advanced    03/12/31 02:38:46

  Modified:    .        Tag: moniwiki-1_1 wikidb.php wikilib.php
  Log:
  author : advanced
  comment : some improved the dbcache
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.9   +25 -27    moniwiki/Attic/wikidb.php
  
  Index: wikidb.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/Attic/wikidb.php,v
  retrieving revision 1.1.2.8
  retrieving revision 1.1.2.9
  diff -u -r1.1.2.8 -r1.1.2.9
  --- wikidb.php	11 Dec 2003 18:00:14 -0000	1.1.2.8
  +++ wikidb.php	30 Dec 2003 17:38:45 -0000	1.1.2.9
  @@ -12,8 +12,8 @@
   //    by Fred C. Yankowski <fcy at acm.org>
   //
   // from Id: wiki.php,v 1.123 2003/11/25 08:40:48
  -// $Id: wikidb.php,v 1.1.2.7 2003/12/11 17:09:03 verotas Exp $
  -$_revision = substr('$Revision: 1.1.2.7 $',1,-1);
  +// $Id: wikidb.php,v 1.1.2.8 2003/12/11 18:00:14 verotas Exp $
  +$_revision = substr('$Revision: 1.1.2.8 $',1,-1);
   $_release = '1.1';
   
   if (!function_exists ('bindtextdomain')) {
  @@ -425,13 +425,10 @@
         foreach ($config as $key=>$val)
           $this->$key=$val;
       }
  -    # DBCache argument
  -    $this->dbarg = array(
  -            'host' => $this->db_host,
  -            'user' => $this->db_user,
  -            'password' => $this->db_password,
  -            'dbname' => $this->db_name
  -    );
  +    # DBCache instance
  +    if($this->use_dbcache==1){
  +      $this->dbcache = new DBCache($config);
  +    } else $this->dbcache = NULL;
   
       if (!$this->purge_passwd)
         $this->purge_passwd=$this->admin_passwd;
  @@ -733,8 +730,8 @@
     }
   
     function savePage($page,$comment="",$options=array()) {
  -    if ($this->use_dbcache)
  -        $dbcache = new DbCache($this->db_type,$this->dbarg);
  +    global $DBInfo;
  +
       $user=new User();
       if ($user->id != 'Anonymous') {
         $udb=new UserDB($this);
  @@ -755,7 +752,7 @@
       $page->write($body);
       fwrite($fp, $body);
       if ($this->use_dbcache)
  -        $dbcache->savePage($page);    
  +        $this->dbcache->savePage($page);    
       flock($fp,LOCK_UN);
       fclose($fp);
       $ret=system("ci -l -x,v/ -q -t-\"".$pagename."\" -m\"".$REMOTE_ADDR.';;'.
  @@ -782,6 +779,9 @@
       $keyname=$this->_getPageKey($page->name);
   
       $delete=@unlink($this->text_dir."/$keyname");
  +    if($this->use_dbcache)
  +        $this->dbcache->deletePage($page->name);
  +    
       if ($options['history']) @unlink($this->text_dir."/RCS/$keyname,v");
       $this->addLogEntry($keyname, $REMOTE_ADDR,$comment,"SAVE");
   
  @@ -812,6 +812,9 @@
       $keyname=$this->_getPageKey($new);
   
       rename($okey,$nkey);
  +    if($this->use_dbcache)
  +      $this->dbcache->renamePage($pagename,$new);
  +    
       if ($options['history']) {
         $oname=$this->_getPageKey($pagename);
         rename($this->text_dir."/RCS/$oname,v",$this->text_dir."/RCS/$keyname,v");
  @@ -928,8 +931,10 @@
     var $filename;
     var $rev;
     var $body;
  -
  +  var $dbcache=null;
     function WikiPage($name,$options="") {
  +    global $DBInfo; // for dbcache
  +    
       if ($options['rev'])
         $this->rev=$options['rev'];
       else
  @@ -939,7 +944,10 @@
       $this->urlname= _rawurlencode($name);
       $this->body= "";
       $this->title=get_title($name);
  -    $this->config=$config;
  +
  +    
  +    if($DBInfo>use_dbcache)
  +      $this->dbcache=$DBInfo->dbcache;
       #$this->title=preg_replace("/((?<=[A-Za-z0-9])[A-Z][a-z0-9])/"," \\1",$name);
     }
   
  @@ -971,15 +979,6 @@
     }
   
     function get_raw_body($options='') {
  -    global $Config;
  -    $dbtype= $Config['db_type'];
  -    $dbarg = array(
  -            'host' => $Config['db_host'],
  -            'user' => $Config['db_user'],
  -            'password' => $Config['db_password'],
  -            'dbname' => $Config['db_name']
  -    );
  -
       if ($this->body && !$options['rev']) {
          return $this->body;
       }
  @@ -998,7 +997,7 @@
          pclose($fp);
          return $out;
       }
  -    if (!$Config['use_dbcache']){
  +    if (!$this->dbcache){
         $fp=@fopen($this->filename,"r");
         if (!$fp) {
            $out="You have no permission to see this page.\n\n";
  @@ -1009,11 +1008,10 @@
         $body=fread($fp,$this->fsize);
         fclose($fp);
       } else { // use_dbcache
  -      $dbcache = new DbCache($dbtype,$dbarg);
  -      $body = $dbcache->getBody($this->name);
  +      $body = $this->dbcache->getBody($this->name);
         if (!$body) { // when page doesn't exist in db
           $body = $this->_get_raw_body();
  -        $dbcache->savePage($this);
  +        $this->dbcache->savePage($this);
         }
       }
       $this->body = $body;
  
  
  
  1.94.2.3  +8 -4      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.94.2.2
  retrieving revision 1.94.2.3
  diff -u -r1.94.2.2 -r1.94.2.3
  --- wikilib.php	11 Dec 2003 16:57:45 -0000	1.94.2.2
  +++ wikilib.php	30 Dec 2003 17:38:45 -0000	1.94.2.3
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.94.2.1 2003/11/28 12:35:03 wkpark Exp $
  +// $Id: wikilib.php,v 1.94.2.2 2003/12/11 16:57:45 verotas Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1327,13 +1327,17 @@
   
   function macro_TitleIndex($formatter="") {
     global $DBInfo;
  -
  +  
     if ($formatter->group) {
       $group_pages = $DBInfo->getLikePages($formatter->group,1);
       foreach ($group_pages as $page)
         $all_pages[]=str_replace($formatter->group,"",$page);
  -  } else
  -    $all_pages = $DBInfo->getPageLists();
  +  } else {
  +    if($DBInfo->dbcache)
  +      $all_pages = $DBInfo->dbcache->getPageLists();
  +    else $all_pages = $DBInfo->getPageLists();
  +  }
  +
     natcasesort($all_pages);
   
     $key=-1;
  
  
  


advanced    03/12/31 02:38:48

  Modified:    lib      Tag: moniwiki-1_1 dblib.php
  Log:
  author : advanced
  comment : some improved the dbcache
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.2   +45 -2     moniwiki/lib/Attic/dblib.php
  
  Index: dblib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/Attic/dblib.php,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  --- dblib.php	30 Nov 2003 15:55:13 -0000	1.1.2.1
  +++ dblib.php	30 Dec 2003 17:38:47 -0000	1.1.2.2
  @@ -129,12 +129,19 @@
   
   	class DBCache {
   		var $db; 
  -		function DBCache($dbtype=0,$dbarg=array()){
  +		function DBCache($config=array()){
  +			$dbarg = array(
  +					'host' => $config['db_host'],
  +					'user' => $config['db_user'],
  +					'password' => $config['db_password'],
  +					'dbname' => $config['db_name']
  +			);
   			// DBtype
   			// 0 MySQL
   			// 1 PostgreSQL
   			// 2 Oracle
  -			switch($dbtype){
  +			
  +			switch($config['dbtype']){
   				case 1 : $this->db = new PostgreSQL($dbarg);break;
   				case 2 : $this->db = new Oci8($dbarg);break;
   				default : $this->db = new MySQL($dbarg);break;
  @@ -157,6 +164,23 @@
   					"VALUES ('".$page->name."',now(),$id)");
   			}
   		}
  +		function deletePage($pagename){
  +			$this->db->query(
  +				"SELECT pageid FROM pageinfo where pagename='$pagename'");
  +			$row = $this->db->torow();
  +
  +			$this->db->query(
  +				"DELETE FROM pages WHERE pageid=".$row[0]);
  +			$this->db->query(
  +				"DELETE FROM pageinfo WHERE pageid=".$row[0]);
  +		}
  +
  +		function renamePage($pagename,$new){
  +			$this->db->query(
  +				"UPDATE SET pagename='$new' FROM pageinfo WHERE ".
  +				"pagename='$pagename'");
  +		}
  +
   		function getBody($pagename=''){
   			$this->db->query(
   				"SELECT s1.content FROM pages s1,pageinfo s2 WHERE ".
  @@ -169,6 +193,25 @@
   				"SELECT pageid FROM pageinfo WHERE pagename='$pagename'");
   			$row = $this->db->torow();
   			return $row[0];
  +		}
  +		function getPageLists(){
  +			$pages=array();
  +			$this->db->query(
  +				"SELECT pagename,utime FROM pageinfo" );
  +			if($mode==1)
  +				$needle_key=$this->pageToKeyname($needle);
  +			else $needle_key=$needle;
  +
  +			while($row = $this->db->torow()){
  +//					$pagename = $this->keyToPagename($row[0]);
  +					$pagename = $row[0];
  +					$pages[] = $pagename;
  +//					$pages[$pagename] = $row[1];
  +			}
  +			return $pages;
  +		}
  +		function close(){
  +			$this->db->close();
   		}
   	}
   	
  
  
  


wkpark      03/12/31 07:40:15

  moniwiki/theme/orange - New directory

wkpark      03/12/31 07:40:36

  moniwiki/theme/orange/css - New directory

wkpark      03/12/31 07:41:50

  Added:       theme/orange footer.php header.php
  Log:
  add new theme 'orange'
  
  Revision  Changes    Path
  1.1                  moniwiki/theme/orange/footer.php
  
  Index: footer.php
  ===================================================================
  </td><td width='200'>
  <?
  print '<div style="font-size:10px">';
  if ($options['id']=='Anonymous')
    print macro_calendar($this,"blog,noweek",'Blog');
  else
    print macro_calendar($this,"blog,noweek",$options['id']);
  print '</div>';
  print "<br />\n";
  print '<font style="font-size:12px;"><b>';
  print macro_RandomQuote($this);
  print '</b></font>';
  print "<br /><br />\n";
  print '<font style="font-size:11px">';
  print macro_RandomPage($this,"4,simple");
  print '</font>';
  
  ?>
  </td>
  </tr></table>
  <div id='wikiFooter'>
  <?
    if ($lastedit)
      print "last modified $lastedit $lasttime<br />";
    print $menu.$banner."<br />".$timer;
  ?>
  </div>
  
  
  
  1.1                  moniwiki/theme/orange/header.php
  
  Index: header.php
  ===================================================================
  <?
  # $title, $logo
  # $menu, $icon, $upper_icon, $rss_icon, $user_link
  # $msg
  include_once("plugin/login.php");
  include_once("plugin/RandomBanner.php");
  include_once("plugin/Calendar.php");
  $login=macro_login($this);
  ?>
  <div id='wikiHeader'>
  <table border='0' width='100%' cellpadding='0' cellspacing='0'><tr>
  <td rowspan='2' width='10%'><img src='<?=$this->url_prefix?>/imgs/moniwiki-logo.gif' alt='MoniWiki' /></td><td><?=$title?>
  </td><td width='10%' rowspan='2'><?=$login?></td></tr>
  <tr><td><?=$goto_form?></td></tr>
  </table>
  </div>
  <div id='wikiMenu'><?=$menu?></div>
  <div id='wikiIcon'><?=$icons?><?=$upper_icon?><?=$rss_icon?><?=$home?></div>
  <?=$msg?>
  <table border='0' width='100%'><tr valign='top'>
  <td width='100%'>
  
  
  


wkpark      03/12/31 07:41:53

  Added:       theme/orange/css default.css
  Log:
  add new theme 'orange'
  
  Revision  Changes    Path
  1.1                  moniwiki/theme/orange/css/default.css
  
  Index: default.css
  ===================================================================
  body {
    font-family:Georgia,Verdana,Lucida,sans-serif;font-size:12px;
    background-color:#FFFFFF;
    color:#000;
    margin: 0;
    padding: 0;
  }
  
  a {color:#444444;text-decoration:underline}
  a:hover {color:#f3764b;text-decoration:underline}
  .wikiTitle {
    font-family:Tahoma,Lucida,sans-serif;
    font-size:28px;
    font-weight:bold;
    color:#ffffff; /* */
    text-decoration: none;
  }
  tt.wiki {font-family:Monotype,Lucida Console,fixed,lucida;font-size:12px;}
  tt.foot {
    font-family:Tahoma,lucida,fixed;
    font-size:11px;
    vertical-align: super;
  }
  
  tt.sister {
    font-family:Tahoma,lucida,fixed;
    font-size:11px;
    vertical-align: super;
    text-decoration: none;
  }
  
  pre.wiki {
    padding-left:6px;
    padding-top:6px; 
    font-family:Lucida TypeWriter,monotype,lucida,fixed;font-size:14px;
    background-color:#000000;
    color:#FFD700; /* gold */
  }
  
  pre.console {
    background-color: #000000;
    color: #E0E0E0;
    padding: .25em ;
    border: 2px inset #808080;
  }
  
  pre.quote {
    padding-left:6px;
    padding-top:6px;
    white-space:pre-wrap;
    white-space: -moz-pre-wrap; 
    font-family:Georgia,monotype,lucida,fixed;font-size:14px;
    background-color: #E9ECEF;
  }
  
  table.wiki {
  /* background-color:#E2ECE5;*/
  /* border-collapse: collapse; */
    border: 0px outset #ddddb0;
  }
  
  td.wiki {
    background-color: #E9ECEF;
  /* border-collapse: collapse; */
    border: 0px inset #E2ECE5;
  }
  
  textarea.wiki { width:100%; }
  
  th.info {
    background-color:#E2ECE2;
  /*  border-collapse: collapse; */
  /*  border: 1px solid silver; */
  }
  
  td.info {
    background-color:#E2ECE2;
  
  }
  
  h1,h2,h3,h4,h5 {
    font-family:Tahoma;
    padding-left:6px;
    color: #f3764b;
    border-bottom:1px solid #f3764b;
  }
  
  div.diff-added {
    font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
    font-size:12px;
    background-color:#E0FFE0;
    color:black;
  }
  
  div.diff-removed {
    font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
    font-size:12px;
    background-color:#E9EAB8;
    color:black;
  }
  
  div.diff-sep {
    font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
    font-size:12px;
    background-color:#000000;
    color:#FFD700; /* gold */
  }
  
  span.diff-added, ins.diff-added {
    color:black;
    background-color: #60FF60;
    text-decoration: none;
  }
  
  span.diff-removed, del.diff-removed {
    color:black;
    background-color: #FF0000;
  }
  
  td.message {
    margin-top: 6pt;
    background-color: #E8E8E8;
    border-style:solid;
    border-width:1pt;
    border-color:#990000;
    color:#440000;
    padding:0px;
    width:100%;
  }
  
  .highlight {
    background-color:#FFFF40;
  }
  
  table.goto {
    background-color: #002B2C;
  }
  
  span.goto, input.goto {
    font-family:Tahoma,Lucida,sans-serif;
    font-size:10px;
  }
  
  table.closure, td.closure{
    background-color: #E9ECEF;
  }
  
  /*  */
  .wikiHr {
    border:0px solid;
    padding: 0px 0px; /* */
    margin-top:0px;
    height:1px;  
  /* background: #000 url(hr1.gif) no-repeat scroll center; */
  }
  
  #wikiTrailer, #wikiOrigin {
    padding-left: 20px;
    padding-bottom: 5px;
  }
  
  #wikiHeader {
    color: #fff;
    padding: 0.2em 0em 0.2em 0.2em;
    background-color:#af9f87; 
  }
  
  #wikiMenu {
    color: #fff;
    padding: 0.2em 0em 0.2em 0.2em;
    background-color:#d6c8b6; 
  }
  
  #wikiHeader a:link {color:#fff;}
  #wikiHeader a:visited {color:#f2f2f2;}
  
  #wikiBody {
    color: black;
    background-color: #fff;
    border: 2px dotted #cecece;
  /*  border-left: 0.8em solid #E2ECE2;
    border-right: 0.8em solid #E2ECE2; */
  /*  border-left: 0.8em dotted; /*solid #6A2525; */
  /*  border-right: 0.8em solid #6A2525; */
  /*  text-transform: lowercase; /* */
    margin: 0px 10px 0px 10px;
    padding: 5px 1em 5px 1em; 
  /*  margin-left: 20px; */
  /*  padding-left: 1em; /* */
  /*  text-indent: 10px; */
  /*  border: 0px outset #E2ECE5; */
  /*  font-size:16px; 
     border-collapse:collapse; */
  }
  
  #wikiBody a {color:#444444;text-decoration:none}
  #wikiBody a:hover {color:#f3764b;text-decoration:underline}
  
  #wikiContent {
    margin-left: 20px; 
  }
  
  #wikiFooter {
    padding: 0.5em 2em;
  /*  background-color:yellow; */
  }
  
  #wikiHint {
    font-family:Georgia,Verdana,Lucida,sans-serif;
    font-size:10px;
    background-color:#E2DAE2;
  }
  
  #wikiSister {
  /*  background-color:lightgreen; /* */
  }
  
  #wikiPreview {
    border: 2px solid #a0a0a0;
    margin: 5px 5px 5px 5px;
    padding: 5px 1em 5px 1em;
  }
  
  #wikiIcon {
   position: absolute;
   top: 80px; right: 10px;
  
   margin-left: 10px;
   text-align: right;
   vertical-align: middle;
  }
  
  div.indent { padding-left:2em; }
  
  div.hint { font-size: 10px; background-color: #369; color:white;}
  a.purple { font-size: 10px; text-decoration:none;}
  
  /* Blog CSS */
  a.purple { font-size: 10px; text-decoration:none;}
  div.blog { width:90%; padding: 0em 1em 0em 1em; }
  div.blog-user { font-size:10px; }
  div.blog-title { font-size:16px; font-weight:bold; }
  div.blog-comments { padding: 1em 1em 1em 2em; border-left: 1px dashed #7B9AC5; background-color:#DFF0FF;}
  
  div.blog-date { font-size:18px; font-weight:bold; padding-bottom:5px;}
  span.blog-user { font-size:10px; }
  
  div.trackback-hint { font-size: 10px; padding: 1em 1em 1em 1em;background-color: #eee;}
  /* Calendar */
  td.day { background:#e5d9c7; text-align: center;}
  td.today { background:#ffffff; text-align: center;}
  
  /* HierarchicalWiki */
  span.group {
    font-family:Tahoma,Lucida,sans-serif;
    font-size:10px;
  }
  
  /* enscript syntax */
  div.wikiPre i,div.wikiPre b{
    font-weight: normal;
    font-style: normal;
  }
  
  
  


wkpark      03/12/31 07:44:43

  Modified:    plugin   sendping.php
  Log:
  fixed message
  
  Revision  Changes    Path
  1.7       +2 -2      moniwiki/plugin/sendping.php
  
  Index: sendping.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/sendping.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- sendping.php	15 Aug 2003 15:00:52 -0000	1.6
  +++ sendping.php	30 Dec 2003 22:44:42 -0000	1.7
  @@ -4,7 +4,7 @@
   // a TrackBack send action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: sendping.php,v 1.5 2003/08/14 15:27:26 wkpark Exp $
  +// $Id: sendping.php,v 1.6 2003/08/15 15:00:52 wkpark Exp $
   
   # trackback ping
   function do_sendping($formatter,$options) {
  @@ -155,7 +155,7 @@
   	}
   
     $formatter->send_header("",$options);
  -  $formatter->send_title(_("Trackback sented"),"",$options);
  +  $formatter->send_title(_("Trackback sent"),"",$options);
     #$formatter->send_page("Return: $result");
     print "Return: $result";
     $formatter->send_footer("",$options);
  
  
  


wkpark      03/12/31 07:45:55

  Modified:    locale/po fr.po ko.po moniwiki.pot
  Log:
  update locale messages
  
  Revision  Changes    Path
  1.7       +82 -89    moniwiki/locale/po/fr.po
  
  Index: fr.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/fr.po,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- fr.po	25 Nov 2003 11:21:32 -0000	1.6
  +++ fr.po	30 Dec 2003 22:45:52 -0000	1.7
  @@ -3,7 +3,7 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: MoniWiki 1.0\n"
  -"POT-Creation-Date: 2003-11-25 10:07+0900\n"
  +"POT-Creation-Date: 2003-12-31 07:57+0900\n"
   "PO-Revision-Date: 2003-08-17 22:51+0900\n"
   "Last-Translator: Serge Stinckwich <Serge.Stinckwich@info.unicaen.fr>\n"
   "Language-Team: fr <fr@li.org>\n"
  @@ -19,7 +19,6 @@
   
   # ../plugin/Attachment.php:24
   #: ../plugin/Attachment.php:36
  -#, fuzzy, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr "Tlcharger le nouvel attachement \"%s\""
   
  @@ -90,21 +89,16 @@
   msgid "Add article to \"%s\""
   msgstr "Ajouter un article  \"%s\""
   
  -#: ../plugin/Board.php:81
  -msgid "User"
  +#: ../plugin/Board.php:82
  +msgid "Name"
   msgstr ""
   
  -#: ../plugin/Board.php:82
  +#: ../plugin/Board.php:83
   msgid "Email"
   msgstr ""
   
  -# ../plugin/rename.php:36
  -#: ../plugin/Board.php:83 ../plugin/rename.php:36
  -msgid "Password"
  -msgstr "Mot de passe"
  -
   # ../wiki.php:2950
  -#: ../plugin/Board.php:84
  +#: ../plugin/Board.php:85
   msgid "Title"
   msgstr "titre"
   
  @@ -191,7 +185,7 @@
   msgstr "TwinPages de %s"
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../plugin/TwinPages.php:18 ../wiki.php:1847 ../wiki.php:3014
  +#: ../plugin/TwinPages.php:18 ../wiki.php:1845 ../wiki.php:3012
   msgid "See TwinPages: "
   msgstr "Voir TwinPages: "
   
  @@ -223,7 +217,7 @@
   msgstr "Merci de vous connecter ou de construire un ID sur ce Wiki ;)"
   
   # ../plugin/Vote.php:109
  -#: ../plugin/Vote.php:109
  +#: ../plugin/Vote.php:112
   msgid "Voted successfully"
   msgstr "Vote russi"
   
  @@ -253,7 +247,7 @@
   msgstr "Mot de passe :"
   
   # ../plugin/login.php:26 ../wikilib.php:1051
  -#: ../plugin/login.php:26 ../wikilib.php:1063
  +#: ../plugin/login.php:26 ../wikilib.php:1067
   msgid "Login"
   msgstr "Se connecter"
   
  @@ -283,7 +277,7 @@
   msgstr "Aucune page de manuel trouv"
   
   # ../plugin/minilogin.php:22 ../wikilib.php:1076
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1088
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1092
   msgid "Login or Join"
   msgstr "Se connecter ou se joindre "
   
  @@ -367,13 +361,18 @@
   msgid "Rename \"%s\" ?"
   msgstr "Renommer \"%s\" ?"
   
  +# ../plugin/rename.php:36
  +#: ../plugin/rename.php:36
  +msgid "Password"
  +msgstr "Mot de passe"
  +
   # ../plugin/rename.php:37
   #: ../plugin/rename.php:37
   msgid "Only WikiMaster can rename this page"
   msgstr "Seulement le WikiMaster peut renommer cette page"
   
   # ../plugin/rename.php:39 ../wikilib.php:588
  -#: ../plugin/rename.php:39 ../wikilib.php:600
  +#: ../plugin/rename.php:39 ../wikilib.php:604
   msgid "with revision history"
   msgstr "avec l'historique de rvision"
   
  @@ -411,7 +410,7 @@
   
   # ../locale/dummy.php:7
   # c-format
  -#: ../plugin/rss_blog.php:85
  +#: ../plugin/rss_blog.php:95
   #, c-format
   msgid "BlogChanges at %s"
   msgstr "ModificationsBlog at %s"
  @@ -536,95 +535,81 @@
   msgid "Rename %s to %s"
   msgstr "Renommer %s en %s"
   
  -# ../wiki.php:1044
  -#: ../wiki.php:1055
  -msgid ""
  -"You have no permission to see this page.\n"
  -"\n"
  -msgstr ""
  -"Vous n'avez pas la permission de voir cette page.\n"
  -"\n"
  -
  -# ../wiki.php:1045
  -#: ../wiki.php:1056
  -msgid "See MoniWiki/AccessControl\n"
  -msgstr "Voir MoniWiki/AccessControl\n"
  -
   # ../wiki.php:1824
  -#: ../wiki.php:1843
  +#: ../wiki.php:1841
   #, c-format
   msgid "See %s"
   msgstr "Voir %s"
   
   # ../wiki.php:1824
  -#: ../wiki.php:1843
  +#: ../wiki.php:1841
   msgid "TwinPages"
   msgstr ""
   
   # ../wiki.php:2110
  -#: ../wiki.php:2137
  +#: ../wiki.php:2135
   msgid "Revision History"
   msgstr "Historique de rvision"
   
   # ../wiki.php:2211 ../wiki.php:2360
  -#: ../wiki.php:2238 ../wiki.php:2386
  +#: ../wiki.php:2236 ../wiki.php:2384
   msgid "No older revisions available"
   msgstr "Aucune rvision plus ancienne disponible"
   
   # ../wiki.php:2338 ../wiki.php:2373 ../wikilib.php:770
  -#: ../wiki.php:2365 ../wiki.php:2404 ../wikilib.php:782
  +#: ../wiki.php:2363 ../wiki.php:2402 ../wikilib.php:786
   msgid "No difference found"
   msgstr "Aucune diffrence trouv"
   
   # ../wiki.php:2341
  -#: ../wiki.php:2367
  +#: ../wiki.php:2365
   msgid "Difference between yours and the current"
   msgstr "Diffrence entre votre version et la courante"
   
   # ../wiki.php:2376
  -#: ../wiki.php:2406
  +#: ../wiki.php:2404
   msgid "Difference between versions"
   msgstr "Diffrence entre les versions"
   
   # ../wiki.php:2378
  -#: ../wiki.php:2408
  +#: ../wiki.php:2406
   #, c-format
   msgid "Difference between r%s and r%s"
   msgstr "Diffrence entre r%s et r%s"
   
   # ../wiki.php:2382
  -#: ../wiki.php:2411
  +#: ../wiki.php:2409
   #, c-format
   msgid "Difference between r%s and the current"
   msgstr "Diffrence entre r%s et la version courante"
   
   # ../locale/dummy.php:6 ../wiki.php:2553
  -#: ../wiki.php:2584 ../locale/dummy.php:6
  +#: ../wiki.php:2582 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "ditionTexte"
   
   # ../wiki.php:2555
  -#: ../wiki.php:2586
  +#: ../wiki.php:2584
   msgid "NotEditable"
   msgstr "Pasditable"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wiki.php:2588 ../locale/dummy.php:6
  +#: ../wiki.php:2586 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "MontrePage"
   
   # ../locale/dummy.php:3 ../locale/dummy.php:5 ../wiki.php:2558
  -#: ../wiki.php:2589 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:2587 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "TrouvePage"
   
   # ../wiki.php:2945 ../wiki.php:2948
  -#: ../wiki.php:3016 ../wiki.php:3019
  +#: ../wiki.php:3014 ../wiki.php:3017
   msgid "Create this page"
   msgstr "Crer cette page"
   
   # ../wiki.php:2950
  -#: ../wiki.php:3021
  +#: ../wiki.php:3019
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
  @@ -632,36 +617,36 @@
   "page.\n"
   
   # ../wiki.php:2950
  -#: ../wiki.php:3021
  +#: ../wiki.php:3019
   msgid "title"
   msgstr "titre"
   
   # ../wiki.php:2956
  -#: ../wiki.php:3027
  +#: ../wiki.php:3025
   msgid " or alternativly, use one of these templates:\n"
   msgstr " ou alternativement, utiliser un de ces modles de page :\n"
   
   # ../wikilib.php:427
  -#: ../wiki.php:3030 ../wikilib.php:433
  +#: ../wiki.php:3028 ../wikilib.php:433
   msgid "To create your own templates, add a page with a 'Template' suffix.\n"
   msgstr ""
   "Pour crer vos propres modles de pages, ajouter une page avec lesuffix "
   "'Template'.\n"
   
   # ../wiki.php:3009
  -#: ../wiki.php:3086
  +#: ../wiki.php:3084
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "Vous n'tes pas autoris  '%s'"
   
   # ../wiki.php:3021
  -#: ../wiki.php:3098
  +#: ../wiki.php:3096
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "Impossible de pouvoir \"%s\" !"
   
   # ../wiki.php:3024
  -#: ../wiki.php:3101
  +#: ../wiki.php:3099
   msgid "Please enter the valid password"
   msgstr "Merci d'entrer un mot de passe valide"
   
  @@ -746,7 +731,7 @@
   msgstr "Prvisualisation"
   
   # ../wikilib.php:483 ../wikilib.php:1079
  -#: ../wikilib.php:495 ../wikilib.php:1091
  +#: ../wikilib.php:495 ../wikilib.php:1095
   msgid "Save"
   msgstr "Sauvegarder"
   
  @@ -778,130 +763,129 @@
   msgstr "Est-ce que c'est une action valide ?"
   
   # ../wikilib.php:540
  -#: ../wikilib.php:552
  +#: ../wikilib.php:554
   #, c-format
   msgid "File '%s' is deleted"
   msgstr "Le fichier '%s' est effac"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:554
  +#: ../wikilib.php:556
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr "Impossible d'effacer '%s'"
   
   # ../wikilib.php:545
  -#: ../wikilib.php:557
  +#: ../wikilib.php:561
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr "Le rpertoire '%s' est effac"
   
   # ../wikilib.php:547
  -#: ../wikilib.php:559
  +#: ../wikilib.php:563
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr "Impossible d'effacer le rpertoire '%s'"
   
   # ../wikilib.php:550
  -#: ../wikilib.php:562
  +#: ../wikilib.php:566
   msgid "Delete selected files"
   msgstr "Effacer les fichiers slectionns"
   
   # ../wikilib.php:557 ../wikilib.php:559
  -#: ../wikilib.php:569 ../wikilib.php:571
  +#: ../wikilib.php:573 ../wikilib.php:575
   msgid "No files are selected !"
   msgstr "Aucun fichier n'est slectionn !"
   
   # ../wikilib.php:575
  -#: ../wikilib.php:587
  +#: ../wikilib.php:591
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr "\"%s\" est effac !"
   
   # ../wikilib.php:581
  -#: ../wikilib.php:593
  +#: ../wikilib.php:597
   msgid "Please delete this file manually."
   msgstr "Merci d'effacer ce fichier manuellement."
   
   # ../wikilib.php:583
  -#: ../wikilib.php:595
  +#: ../wikilib.php:599
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "Effacer \"%s\" ?"
   
   # ../wikilib.php:672 ../wikilib.php:1472
  -#: ../wikilib.php:684 ../wikilib.php:1484
  +#: ../wikilib.php:688 ../wikilib.php:1488
   msgid "Use more specific text"
   msgstr "Utiliser un texte plus spcifique"
   
   # ../wikilib.php:734
  -#: ../wikilib.php:746
  +#: ../wikilib.php:750
   msgid "Goto Editor"
   msgstr "Aller  l'diteur"
   
   # ../wikilib.php:743
  -#: ../wikilib.php:755
  +#: ../wikilib.php:759
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "Quelqu'un a sauvegard la page tandis que vous ditiez %s"
   
   # ../wikilib.php:748 ../wikilib.php:777
  -#: ../wikilib.php:760 ../wikilib.php:789
  +#: ../wikilib.php:764 ../wikilib.php:793
   #, c-format
   msgid "Preview of %s"
   msgstr "Prvisualisation de %s"
   
   # ../wikilib.php:755
  -#: ../wikilib.php:767
  +#: ../wikilib.php:771
   msgid "Conflict error!"
   msgstr "Erreur de conflit !"
   
   # ../wikilib.php:769
  -#: ../wikilib.php:781
  +#: ../wikilib.php:785
   #, c-format
   msgid "Go back or return to %s"
   msgstr "Revenir en arrire ou retourner  %s"
   
   # ../wikilib.php:803
  -#: ../wikilib.php:815
  +#: ../wikilib.php:819
   msgid "mail does not supported by default."
   msgstr "La messagerie n'est pas support par dfaut."
   
   # ../wikilib.php:807
  -#: ../wikilib.php:819
  -#, fuzzy
  +#: ../wikilib.php:823
   msgid "Sent notification mail."
   msgstr "Des notifications par messagerie ont t envoyes."
   
   # ../wikilib.php:809
  -#: ../wikilib.php:821
  +#: ../wikilib.php:825
   msgid "No subscribers found."
   msgstr "Aucun abonn trouv."
   
   # ../wikilib.php:814
  -#: ../wikilib.php:826
  +#: ../wikilib.php:830
   #, c-format
   msgid "%s is not editable"
   msgstr "%s n'est pas ditable"
   
   # ../wikilib.php:816
  -#: ../wikilib.php:828
  +#: ../wikilib.php:832
   #, c-format
   msgid "%s is saved"
   msgstr "%s est sauvegard"
   
   # ../wikilib.php:838
  -#: ../wikilib.php:850
  +#: ../wikilib.php:854
   msgid "Nobody subscribed to this page."
   msgstr "Personne n'est abonn  cette page, aucun mail envoy"
   
   # ../wikilib.php:860
  -#: ../wikilib.php:872
  +#: ../wikilib.php:876
   #, c-format
   msgid "%s page is modified"
   msgstr "la page %s est modifi"
   
   # ../wikilib.php:870
  -#: ../wikilib.php:882
  +#: ../wikilib.php:886
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
  @@ -912,51 +896,48 @@
   "\n"
   
   # ../wikilib.php:883
  -#: ../wikilib.php:895
  -#, fuzzy
  +#: ../wikilib.php:899
   msgid "Send notification mails to all subscribers"
   msgstr "Envoyez un mail de notification  tous les abonns"
   
   # ../wikilib.php:887
  -#: ../wikilib.php:899
  -#, fuzzy
  +#: ../wikilib.php:903
   msgid "Mails are sent successfully"
   msgstr "Mail envoy avec succs"
   
   # ../wikilib.php:888
  -#: ../wikilib.php:900
  -#, fuzzy, c-format
  +#: ../wikilib.php:904
   msgid "mails are sent to '%s'"
   msgstr "un mail a t envoy  '%s'"
   
   # ../wikilib.php:1070
  -#: ../wikilib.php:1082
  +#: ../wikilib.php:1086
   msgid "Make profile"
   msgstr "Faire un profil"
   
   # ../wikilib.php:1071
  -#: ../wikilib.php:1083
  +#: ../wikilib.php:1087
   msgid "password again"
   msgstr "mot de passe de nouveau"
   
   # ../wikilib.php:1082
  -#: ../wikilib.php:1094
  +#: ../wikilib.php:1098
   msgid "New password"
   msgstr "Nouveau mot de passe"
   
   # ../wikilib.php:1088
  -#: ../wikilib.php:1100
  +#: ../wikilib.php:1104
   msgid "logout"
   msgstr "se dconnecter"
   
   # ../wikilib.php:1479
  -#: ../wikilib.php:1491
  +#: ../wikilib.php:1495
   #, c-format
   msgid "Title search for \"%s\""
   msgstr "Recherche de titre pour \"%s\""
   
   # ../wikilib.php:1483
  -#: ../wikilib.php:1495
  +#: ../wikilib.php:1499
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "Expression de recherche \"%s\" invalide"
  @@ -1015,6 +996,18 @@
   #: ../locale/dummy.php:7
   msgid "TrackBack"
   msgstr ""
  +
  +# ../wiki.php:1044
  +#~ msgid ""
  +#~ "You have no permission to see this page.\n"
  +#~ "\n"
  +#~ msgstr ""
  +#~ "Vous n'avez pas la permission de voir cette page.\n"
  +#~ "\n"
  +
  +# ../wiki.php:1045
  +#~ msgid "See MoniWiki/AccessControl\n"
  +#~ msgstr "Voir MoniWiki/AccessControl\n"
   
   # ../wiki.php:2959
   #~ msgid "To create your own templates, add a page with a 'Template' suffix\n"
  
  
  
  1.7       +70 -81    moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- ko.po	25 Nov 2003 11:21:32 -0000	1.6
  +++ ko.po	30 Dec 2003 22:45:52 -0000	1.7
  @@ -5,7 +5,7 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: MoniWiki 1.0\n"
  -"POT-Creation-Date: 2003-11-25 10:07+0900\n"
  +"POT-Creation-Date: 2003-12-31 07:57+0900\n"
   "PO-Revision-Date: 2003-04-29 19:00+0900\n"
   "Last-Translator: Won-kyu Park <wkpark@kldp.org>\n"
   "Language-Team: ko <ko@li.org>\n"
  @@ -78,19 +78,15 @@
   msgid "Add article to \"%s\""
   msgstr ""
   
  -#: ../plugin/Board.php:81
  -msgid "User"
  -msgstr ""
  -
   #: ../plugin/Board.php:82
  -msgid "Email"
  +msgid "Name"
   msgstr ""
   
  -#: ../plugin/Board.php:83 ../plugin/rename.php:36
  -msgid "Password"
  +#: ../plugin/Board.php:83
  +msgid "Email"
   msgstr ""
   
  -#: ../plugin/Board.php:84
  +#: ../plugin/Board.php:85
   msgid "Title"
   msgstr ""
   
  @@ -161,7 +157,7 @@
   msgid "TwinPages of %s"
   msgstr "%s ֵ "
   
  -#: ../plugin/TwinPages.php:18 ../wiki.php:1847 ../wiki.php:3014
  +#: ../plugin/TwinPages.php:18 ../wiki.php:1845 ../wiki.php:3012
   msgid "See TwinPages: "
   msgstr ""
   
  @@ -186,7 +182,7 @@
   msgid "Please Login or make your ID on this Wiki ;)"
   msgstr "αϰų ID 弼 ;)"
   
  -#: ../plugin/Vote.php:109
  +#: ../plugin/Vote.php:112
   msgid "Voted successfully"
   msgstr ""
   
  @@ -210,7 +206,7 @@
   msgid "Password:"
   msgstr ""
   
  -#: ../plugin/login.php:26 ../wikilib.php:1063
  +#: ../plugin/login.php:26 ../wikilib.php:1067
   msgid "Login"
   msgstr ""
   
  @@ -234,7 +230,7 @@
   msgid "No manpage found"
   msgstr "Manpage ϴ"
   
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1088
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1092
   msgid "Login or Join"
   msgstr ""
   
  @@ -302,11 +298,15 @@
   msgid "Rename \"%s\" ?"
   msgstr "\"%s\" ̸ ٲܱ ?"
   
  +#: ../plugin/rename.php:36
  +msgid "Password"
  +msgstr ""
  +
   #: ../plugin/rename.php:37
   msgid "Only WikiMaster can rename this page"
   msgstr ""
   
  -#: ../plugin/rename.php:39 ../wikilib.php:600
  +#: ../plugin/rename.php:39 ../wikilib.php:604
   msgid "with revision history"
   msgstr " 丮 Բ"
   
  @@ -337,7 +337,7 @@
   msgstr "ٲ α"
   
   # c-format
  -#: ../plugin/rss_blog.php:85
  +#: ../plugin/rss_blog.php:95
   #, c-format
   msgid "BlogChanges at %s"
   msgstr ""
  @@ -365,8 +365,7 @@
   msgstr ""
   
   #: ../plugin/sendping.php:158
  -#, fuzzy
  -msgid "Trackback sented"
  +msgid "Trackback sent"
   msgstr "Ʈ"
   
   #: ../plugin/subscribe.php:12
  @@ -441,103 +440,93 @@
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1055
  -msgid ""
  -"You have no permission to see this page.\n"
  -"\n"
  -msgstr ""
  -
  -#: ../wiki.php:1056
  -msgid "See MoniWiki/AccessControl\n"
  -msgstr ""
  -
  -#: ../wiki.php:1843
  +#: ../wiki.php:1841
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:1843
  +#: ../wiki.php:1841
   msgid "TwinPages"
   msgstr "TwinPages"
   
  -#: ../wiki.php:2137
  +#: ../wiki.php:2135
   msgid "Revision History"
   msgstr " 丮"
   
  -#: ../wiki.php:2238 ../wiki.php:2386
  +#: ../wiki.php:2236 ../wiki.php:2384
   msgid "No older revisions available"
   msgstr "  ϴ"
   
  -#: ../wiki.php:2365 ../wiki.php:2404 ../wikilib.php:782
  +#: ../wiki.php:2363 ../wiki.php:2402 ../wikilib.php:786
   msgid "No difference found"
   msgstr "ȭ ϴ"
   
  -#: ../wiki.php:2367
  +#: ../wiki.php:2365
   msgid "Difference between yours and the current"
   msgstr ""
   
  -#: ../wiki.php:2406
  +#: ../wiki.php:2404
   msgid "Difference between versions"
   msgstr ""
   
  -#: ../wiki.php:2408
  +#: ../wiki.php:2406
   #, c-format
   msgid "Difference between r%s and r%s"
   msgstr "r%s r%s "
   
  -#: ../wiki.php:2411
  +#: ../wiki.php:2409
   #, c-format
   msgid "Difference between r%s and the current"
   msgstr "r%s   "
   
  -#: ../wiki.php:2584 ../locale/dummy.php:6
  +#: ../wiki.php:2582 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "ġ"
   
  -#: ../wiki.php:2586
  +#: ../wiki.php:2584
   msgid "NotEditable"
   msgstr "ĥ "
   
  -#: ../wiki.php:2588 ../locale/dummy.php:6
  +#: ../wiki.php:2586 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:2589 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:2587 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "ã"
   
  -#: ../wiki.php:3016 ../wiki.php:3019
  +#: ../wiki.php:3014 ../wiki.php:3017
   msgid "Create this page"
   msgstr " "
   
  -#: ../wiki.php:3021
  +#: ../wiki.php:3019
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
   
  -#: ../wiki.php:3021
  +#: ../wiki.php:3019
   msgid "title"
   msgstr ""
   
  -#: ../wiki.php:3027
  +#: ../wiki.php:3025
   msgid " or alternativly, use one of these templates:\n"
   msgstr " Ȥ Ʒ øƮ  ̿ϼ:\n"
   
  -#: ../wiki.php:3030 ../wikilib.php:433
  +#: ../wiki.php:3028 ../wikilib.php:433
   msgid "To create your own templates, add a page with a 'Template' suffix.\n"
   msgstr "øƮ ÷ Template ̸   弼.\n"
   
  -#: ../wiki.php:3086
  +#: ../wiki.php:3084
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr ""
   
  -#: ../wiki.php:3098
  +#: ../wiki.php:3096
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:3101
  +#: ../wiki.php:3099
   msgid "Please enter the valid password"
   msgstr "Ȯ йȣ ־ּ"
   
  @@ -607,7 +596,7 @@
   msgid "Preview"
   msgstr "̸"
   
  -#: ../wikilib.php:495 ../wikilib.php:1091
  +#: ../wikilib.php:495 ../wikilib.php:1095
   msgid "Save"
   msgstr ""
   
  @@ -633,148 +622,148 @@
   msgid "Is it valid action ?"
   msgstr ""
   
  -#: ../wikilib.php:552
  +#: ../wikilib.php:554
   #, c-format
   msgid "File '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:554
  +#: ../wikilib.php:556
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr ""
   
  -#: ../wikilib.php:557
  +#: ../wikilib.php:561
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:559
  +#: ../wikilib.php:563
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr ""
   
  -#: ../wikilib.php:562
  +#: ../wikilib.php:566
   msgid "Delete selected files"
   msgstr ""
   
  -#: ../wikilib.php:569 ../wikilib.php:571
  +#: ../wikilib.php:573 ../wikilib.php:575
   msgid "No files are selected !"
   msgstr " õ ʾҽϴ !"
   
  -#: ../wikilib.php:587
  +#: ../wikilib.php:591
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr ""
   
  -#: ../wikilib.php:593
  +#: ../wikilib.php:597
   msgid "Please delete this file manually."
   msgstr ""
   
  -#: ../wikilib.php:595
  +#: ../wikilib.php:599
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "\"%s\"()  ?"
   
  -#: ../wikilib.php:684 ../wikilib.php:1484
  +#: ../wikilib.php:688 ../wikilib.php:1488
   msgid "Use more specific text"
   msgstr "  ڼ Էϼ"
   
  -#: ../wikilib.php:746
  +#: ../wikilib.php:750
   msgid "Goto Editor"
   msgstr " "
   
  -#: ../wikilib.php:755
  +#: ../wikilib.php:759
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "%s() ġ  ٸ    ߽ϴ"
   
  -#: ../wikilib.php:760 ../wikilib.php:789
  +#: ../wikilib.php:764 ../wikilib.php:793
   #, c-format
   msgid "Preview of %s"
   msgstr "%s ̸"
   
  -#: ../wikilib.php:767
  +#: ../wikilib.php:771
   msgid "Conflict error!"
   msgstr "浹!"
   
  -#: ../wikilib.php:781
  +#: ../wikilib.php:785
   #, c-format
   msgid "Go back or return to %s"
   msgstr "ڷ Ȥ %s() "
   
  -#: ../wikilib.php:815
  +#: ../wikilib.php:819
   msgid "mail does not supported by default."
   msgstr ""
   
  -#: ../wikilib.php:819
  +#: ../wikilib.php:823
   msgid "Sent notification mail."
   msgstr ""
   
  -#: ../wikilib.php:821
  +#: ../wikilib.php:825
   msgid "No subscribers found."
   msgstr "ڰ ϴ"
   
  -#: ../wikilib.php:826
  +#: ../wikilib.php:830
   #, c-format
   msgid "%s is not editable"
   msgstr "%s()   ϴ"
   
  -#: ../wikilib.php:828
  +#: ../wikilib.php:832
   #, c-format
   msgid "%s is saved"
   msgstr "%s() Ǿϴ"
   
  -#: ../wikilib.php:850
  +#: ../wikilib.php:854
   msgid "Nobody subscribed to this page."
   msgstr ""
   
  -#: ../wikilib.php:872
  +#: ../wikilib.php:876
   #, c-format
   msgid "%s page is modified"
   msgstr ""
   
  -#: ../wikilib.php:882
  +#: ../wikilib.php:886
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:895
  +#: ../wikilib.php:899
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:899
  +#: ../wikilib.php:903
   msgid "Mails are sent successfully"
   msgstr ""
   
  -#: ../wikilib.php:900
  +#: ../wikilib.php:904
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1082
  +#: ../wikilib.php:1086
   msgid "Make profile"
   msgstr ""
   
  -#: ../wikilib.php:1083
  +#: ../wikilib.php:1087
   msgid "password again"
   msgstr ""
   
  -#: ../wikilib.php:1094
  +#: ../wikilib.php:1098
   msgid "New password"
   msgstr " йȣ"
   
  -#: ../wikilib.php:1100
  +#: ../wikilib.php:1104
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:1491
  +#: ../wikilib.php:1495
   #, c-format
   msgid "Title search for \"%s\""
   msgstr ""
   
  -#: ../wikilib.php:1495
  +#: ../wikilib.php:1499
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr ""
  
  
  
  1.7       +69 -79    moniwiki/locale/po/moniwiki.pot
  
  Index: moniwiki.pot
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/moniwiki.pot,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- moniwiki.pot	25 Nov 2003 11:21:32 -0000	1.6
  +++ moniwiki.pot	30 Dec 2003 22:45:52 -0000	1.7
  @@ -6,7 +6,7 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: PACKAGE VERSION\n"
  -"POT-Creation-Date: 2003-11-25 10:07+0900\n"
  +"POT-Creation-Date: 2003-12-31 07:57+0900\n"
   "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
   "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
   "Language-Team: LANGUAGE <LL@li.org>\n"
  @@ -79,19 +79,15 @@
   msgid "Add article to \"%s\""
   msgstr ""
   
  -#: ../plugin/Board.php:81
  -msgid "User"
  -msgstr ""
  -
   #: ../plugin/Board.php:82
  -msgid "Email"
  +msgid "Name"
   msgstr ""
   
  -#: ../plugin/Board.php:83 ../plugin/rename.php:36
  -msgid "Password"
  +#: ../plugin/Board.php:83
  +msgid "Email"
   msgstr ""
   
  -#: ../plugin/Board.php:84
  +#: ../plugin/Board.php:85
   msgid "Title"
   msgstr ""
   
  @@ -162,7 +158,7 @@
   msgid "TwinPages of %s"
   msgstr ""
   
  -#: ../plugin/TwinPages.php:18 ../wiki.php:1847 ../wiki.php:3014
  +#: ../plugin/TwinPages.php:18 ../wiki.php:1845 ../wiki.php:3012
   msgid "See TwinPages: "
   msgstr ""
   
  @@ -187,7 +183,7 @@
   msgid "Please Login or make your ID on this Wiki ;)"
   msgstr ""
   
  -#: ../plugin/Vote.php:109
  +#: ../plugin/Vote.php:112
   msgid "Voted successfully"
   msgstr ""
   
  @@ -211,7 +207,7 @@
   msgid "Password:"
   msgstr ""
   
  -#: ../plugin/login.php:26 ../wikilib.php:1063
  +#: ../plugin/login.php:26 ../wikilib.php:1067
   msgid "Login"
   msgstr ""
   
  @@ -235,7 +231,7 @@
   msgid "No manpage found"
   msgstr ""
   
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1088
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1092
   msgid "Login or Join"
   msgstr ""
   
  @@ -303,11 +299,15 @@
   msgid "Rename \"%s\" ?"
   msgstr ""
   
  +#: ../plugin/rename.php:36
  +msgid "Password"
  +msgstr ""
  +
   #: ../plugin/rename.php:37
   msgid "Only WikiMaster can rename this page"
   msgstr ""
   
  -#: ../plugin/rename.php:39 ../wikilib.php:600
  +#: ../plugin/rename.php:39 ../wikilib.php:604
   msgid "with revision history"
   msgstr ""
   
  @@ -337,7 +337,7 @@
   msgid "Blog Changes"
   msgstr ""
   
  -#: ../plugin/rss_blog.php:85
  +#: ../plugin/rss_blog.php:95
   #, c-format
   msgid "BlogChanges at %s"
   msgstr ""
  @@ -436,103 +436,93 @@
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1055
  -msgid ""
  -"You have no permission to see this page.\n"
  -"\n"
  -msgstr ""
  -
  -#: ../wiki.php:1056
  -msgid "See MoniWiki/AccessControl\n"
  -msgstr ""
  -
  -#: ../wiki.php:1843
  +#: ../wiki.php:1841
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:1843
  +#: ../wiki.php:1841
   msgid "TwinPages"
   msgstr ""
   
  -#: ../wiki.php:2137
  +#: ../wiki.php:2135
   msgid "Revision History"
   msgstr ""
   
  -#: ../wiki.php:2238 ../wiki.php:2386
  +#: ../wiki.php:2236 ../wiki.php:2384
   msgid "No older revisions available"
   msgstr ""
   
  -#: ../wiki.php:2365 ../wiki.php:2404 ../wikilib.php:782
  +#: ../wiki.php:2363 ../wiki.php:2402 ../wikilib.php:786
   msgid "No difference found"
   msgstr ""
   
  -#: ../wiki.php:2367
  +#: ../wiki.php:2365
   msgid "Difference between yours and the current"
   msgstr ""
   
  -#: ../wiki.php:2406
  +#: ../wiki.php:2404
   msgid "Difference between versions"
   msgstr ""
   
  -#: ../wiki.php:2408
  +#: ../wiki.php:2406
   #, c-format
   msgid "Difference between r%s and r%s"
   msgstr ""
   
  -#: ../wiki.php:2411
  +#: ../wiki.php:2409
   #, c-format
   msgid "Difference between r%s and the current"
   msgstr ""
   
  -#: ../wiki.php:2584 ../locale/dummy.php:6
  +#: ../wiki.php:2582 ../locale/dummy.php:6
   msgid "EditText"
   msgstr ""
   
  -#: ../wiki.php:2586
  +#: ../wiki.php:2584
   msgid "NotEditable"
   msgstr ""
   
  -#: ../wiki.php:2588 ../locale/dummy.php:6
  +#: ../wiki.php:2586 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:2589 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:2587 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr ""
   
  -#: ../wiki.php:3016 ../wiki.php:3019
  +#: ../wiki.php:3014 ../wiki.php:3017
   msgid "Create this page"
   msgstr ""
   
  -#: ../wiki.php:3021
  +#: ../wiki.php:3019
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
   
  -#: ../wiki.php:3021
  +#: ../wiki.php:3019
   msgid "title"
   msgstr ""
   
  -#: ../wiki.php:3027
  +#: ../wiki.php:3025
   msgid " or alternativly, use one of these templates:\n"
   msgstr ""
   
  -#: ../wiki.php:3030 ../wikilib.php:433
  +#: ../wiki.php:3028 ../wikilib.php:433
   msgid "To create your own templates, add a page with a 'Template' suffix.\n"
   msgstr ""
   
  -#: ../wiki.php:3086
  +#: ../wiki.php:3084
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr ""
   
  -#: ../wiki.php:3098
  +#: ../wiki.php:3096
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:3101
  +#: ../wiki.php:3099
   msgid "Please enter the valid password"
   msgstr ""
   
  @@ -590,7 +580,7 @@
   msgid "Preview"
   msgstr ""
   
  -#: ../wikilib.php:495 ../wikilib.php:1091
  +#: ../wikilib.php:495 ../wikilib.php:1095
   msgid "Save"
   msgstr ""
   
  @@ -616,148 +606,148 @@
   msgid "Is it valid action ?"
   msgstr ""
   
  -#: ../wikilib.php:552
  +#: ../wikilib.php:554
   #, c-format
   msgid "File '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:554
  +#: ../wikilib.php:556
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr ""
   
  -#: ../wikilib.php:557
  +#: ../wikilib.php:561
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:559
  +#: ../wikilib.php:563
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr ""
   
  -#: ../wikilib.php:562
  +#: ../wikilib.php:566
   msgid "Delete selected files"
   msgstr ""
   
  -#: ../wikilib.php:569 ../wikilib.php:571
  +#: ../wikilib.php:573 ../wikilib.php:575
   msgid "No files are selected !"
   msgstr ""
   
  -#: ../wikilib.php:587
  +#: ../wikilib.php:591
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr ""
   
  -#: ../wikilib.php:593
  +#: ../wikilib.php:597
   msgid "Please delete this file manually."
   msgstr ""
   
  -#: ../wikilib.php:595
  +#: ../wikilib.php:599
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr ""
   
  -#: ../wikilib.php:684 ../wikilib.php:1484
  +#: ../wikilib.php:688 ../wikilib.php:1488
   msgid "Use more specific text"
   msgstr ""
   
  -#: ../wikilib.php:746
  +#: ../wikilib.php:750
   msgid "Goto Editor"
   msgstr ""
   
  -#: ../wikilib.php:755
  +#: ../wikilib.php:759
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr ""
   
  -#: ../wikilib.php:760 ../wikilib.php:789
  +#: ../wikilib.php:764 ../wikilib.php:793
   #, c-format
   msgid "Preview of %s"
   msgstr ""
   
  -#: ../wikilib.php:767
  +#: ../wikilib.php:771
   msgid "Conflict error!"
   msgstr ""
   
  -#: ../wikilib.php:781
  +#: ../wikilib.php:785
   #, c-format
   msgid "Go back or return to %s"
   msgstr ""
   
  -#: ../wikilib.php:815
  +#: ../wikilib.php:819
   msgid "mail does not supported by default."
   msgstr ""
   
  -#: ../wikilib.php:819
  +#: ../wikilib.php:823
   msgid "Sent notification mail."
   msgstr ""
   
  -#: ../wikilib.php:821
  +#: ../wikilib.php:825
   msgid "No subscribers found."
   msgstr ""
   
  -#: ../wikilib.php:826
  +#: ../wikilib.php:830
   #, c-format
   msgid "%s is not editable"
   msgstr ""
   
  -#: ../wikilib.php:828
  +#: ../wikilib.php:832
   #, c-format
   msgid "%s is saved"
   msgstr ""
   
  -#: ../wikilib.php:850
  +#: ../wikilib.php:854
   msgid "Nobody subscribed to this page."
   msgstr ""
   
  -#: ../wikilib.php:872
  +#: ../wikilib.php:876
   #, c-format
   msgid "%s page is modified"
   msgstr ""
   
  -#: ../wikilib.php:882
  +#: ../wikilib.php:886
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:895
  +#: ../wikilib.php:899
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:899
  +#: ../wikilib.php:903
   msgid "Mails are sent successfully"
   msgstr ""
   
  -#: ../wikilib.php:900
  +#: ../wikilib.php:904
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1082
  +#: ../wikilib.php:1086
   msgid "Make profile"
   msgstr ""
   
  -#: ../wikilib.php:1083
  +#: ../wikilib.php:1087
   msgid "password again"
   msgstr ""
   
  -#: ../wikilib.php:1094
  +#: ../wikilib.php:1098
   msgid "New password"
   msgstr ""
   
  -#: ../wikilib.php:1100
  +#: ../wikilib.php:1104
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:1491
  +#: ../wikilib.php:1495
   #, c-format
   msgid "Title search for \"%s\""
   msgstr ""
   
  -#: ../wikilib.php:1495
  +#: ../wikilib.php:1499
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr ""
  
  
  


wkpark      03/12/31 07:59:53

  Modified:    .        monisetup.sh
  Added:       .        monisetup.bat
  Log:
  fixed some messages and add *.bat for Win32
  
  Revision  Changes    Path
  1.4       +5 -4      moniwiki/monisetup.sh
  
  Index: monisetup.sh
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.sh,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- monisetup.sh	7 Nov 2003 06:10:29 -0000	1.3
  +++ monisetup.sh	30 Dec 2003 22:59:52 -0000	1.4
  @@ -1,5 +1,5 @@
   #!/bin/bash
  -# $Id: monisetup.sh,v 1.2 2003/10/03 09:42:00 wkpark Exp $
  +# $Id: monisetup.sh,v 1.3 2003/11/07 06:10:29 wkpark Exp $
   
   echo
   echo "+-------------------------------------+"
  @@ -82,7 +82,7 @@
   if [ $ID -eq 0 ]; then
     RETVAL=1
     while [ ! $RETVAL -eq 0 ]; do
  -    echo -n " Please enter the nobody user id (nobody): "
  +    echo -n " Please enter the Apache user ID (e.g. nobody): "
       read owner
       if [ x$owner = x ]; then
         owner=nobody
  @@ -95,7 +95,7 @@
     RETVAL=1
   
     while [ ! $RETVAL -eq 0 ]; do
  -    echo -n " Please enter the nobody group id (nobody): "
  +    echo -n " Please enter the Apache group ID (e.g. nobody): "
       read group
       if [ x$group = x ]; then
         group=nobody
  @@ -108,7 +108,8 @@
   
   echo
   echo 'Your wiki is cofiguared now.'
  -echo 'Please open monisetup.php to change some basic options for your wiki'
  +echo 'Please open monisetup.php in a browser'
  +echo ' to change some basic options for your wiki'
   echo
   echo
   
  
  
  
  1.1                  moniwiki/monisetup.bat
  
  Index: monisetup.bat
  ===================================================================
  REM $Id: config.bat,v 1.1 2003/08/10 12:14:18 wkpark Exp $
  mkdir data\text
  mkdir data\text\RCS
  mkdir data\cache
  mkdir pds
  
  
  


wkpark      03/12/31 08:18:22

  Modified:    .        wiki.php wikilib.php
  Log:
  release 1.0.6
  
  Revision  Changes    Path
  1.125     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.124
  retrieving revision 1.125
  diff -u -r1.124 -r1.125
  --- wiki.php	19 Dec 2003 13:48:17 -0000	1.124
  +++ wiki.php	30 Dec 2003 23:18:20 -0000	1.125
  @@ -11,10 +11,10 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.123 2003/11/25 08:40:48 wkpark Exp $
  +// $Id: wiki.php,v 1.124 2003/12/19 13:48:17 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.123 $',1,-1);
  -$_release = '1.0.5';
  +$_revision = substr('$Revision: 1.124 $',1,-1);
  +$_release = '1.0.6';
   
   #ob_start("ob_gzhandler");
   
  
  
  
  1.96      +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.95
  retrieving revision 1.96
  diff -u -r1.95 -r1.96
  --- wikilib.php	14 Dec 2003 15:07:30 -0000	1.95
  +++ wikilib.php	30 Dec 2003 23:18:20 -0000	1.96
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.94 2003/10/24 00:33:11 wkpark Exp $
  +// $Id: wikilib.php,v 1.95 2003/12/14 15:07:30 wkpark Exp $
   
   function find_needle($body,$needle,$count=0) {
     if (!$body) return '';
  @@ -41,7 +41,7 @@
     } else
       $title=$page;
   
  -  return preg_replace("/((?<=[a-z0-9]|[A-Z]{2})[A-Z][a-z])/"," \\1",$title);
  +  return preg_replace("/((?<=[a-z0-9]|[B-Z]{2}|A)([A-Z][a-z]|A))/"," \\1",$title);
   }
   
   function getTicket($seed) {
  
  
  


wkpark      03/12/31 08:31:06

  Added:       imgs     _htaccess
  Removed:     imgs     .htaccess
  Log:
  rename .htaccess to avoid overwrite
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/_htaccess
  
  Index: _htaccess
  ===================================================================
  ErrorDocument 404 /wiki/imgs/moni-inter.gif
  
  
  


iolo        03/12/31 11:37:34

  Modified:    plugin   SmileyChooser.php
  Log:
  fix old smileychooser bug
  
  Revision  Changes    Path
  1.3       +1 -1      moniwiki/plugin/SmileyChooser.php
  
  Index: SmileyChooser.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SmileyChooser.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SmileyChooser.php	15 Aug 2003 21:30:36 -0000	1.2
  +++ SmileyChooser.php	31 Dec 2003 02:37:34 -0000	1.3
  @@ -11,7 +11,7 @@
   function macro_SmileyChooser($formatter,$value) {
     global $DBInfo;
   
  -  if (!$DBInfo->use_smiley) return '';
  +  if (!$DBInfo->use_smileys) return '';
   
     $chooser=<<<EOS
   <script language="javascript" type="text/javascript">
  
  
  


wkpark      04/01/01 08:32:11

  Added:       .        wikihttpd.php
  Log:
  standalone wikiserver module
  
  Revision  Changes    Path
  1.1                  moniwiki/wikihttpd.php
  
  Index: wikihttpd.php
  ===================================================================
  <?php
  //
  //  MoniWiki Web Server by Won-kyu Park <wkpark at kldp.org>
  //
  //  * phpserv is a PhpLanguage based webserver
  //    Copyright (C) 2002 Daniel Lorch <daniel at lorch.cc>
  //
  //  This program is free software; you can redistribute it and/or modify
  //  it under the terms of the GNU General Public License as published by
  //  the Free Software Foundation; either version 2 of the License, or
  //  (at your option) any later version.
  //
  //  This program is distributed in the hope that it will be useful,
  //  but WITHOUT ANY WARRANTY; without even the implied warranty of
  //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  //  GNU General Public License for more details.
  //
  //  You should have received a copy of the GNU General Public License
  //  along with this program; if not, write to the Free Software
  //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  //
  // $Id: wikihttpd.php,v 1.5 2003/08/20 20:47:09 wkpark Exp wkpark $
  
  /*
   *  Implementation of the HTT-protocol (also known as Webserver)
   *
   *  This is a quite simple webserver. It can serve static files but
   *  nothing more. I carefully check every request to not serve
   *  files which are outside the document root and I also try to be
   *  as "RFC-ish" as possible. For example I send back the correct
   *  MIME-type (according to the file extension), but there is not
   *  yet a support for multiple, succeding requests in one connection
   *  (Connection: Keep-Alive). Also file-resuming is not yet
   *  implemented.
   *
   */
  
  class simple_server {
    var $runing=false;
    var $document_root;
    var $directory_index='index.html';
    var $servername = "MoniWiki/1.0 Server";
  
    function simple_server($address=0,$port=8080,$root='htdocs') {
      @set_time_limit(0);
      $this->document_root=$root;
  
      if($this->pre_init() === false)
        return false;
  
      if(($this->socket = socket_create(AF_INET, SOCK_STREAM, 0)) < 0)
        return false;      
        
      if(@socket_bind($this->socket, $address, $port) < 0)
        return false;
  
      if(@socket_listen($this->socket, 5)< 0)
        return false;
  
  #    $this->error_handle = @fopen($this->error_file, "a");
  #    if(!$this->error_handle) 
  #      return false;
  
  #    $this->log_handle = @fopen($this->log_file, "a");
  #    if(!$this->log_handle)
  #      return false;
  
      if($this->post_init() === false)
        return false;
  
      register_shutdown_function(array(&$this,'close'));
      return $this->running = true;
    }
  
    /* public: this is the absolutely first function called in the constructor.
               be careful! you still have superuser privileges at this stage  */
    function pre_init() {
      return true;
    }
  
    /* public: this function is called after everything is set up
               (server has bind it's port etc..) */
    function post_init() {
      return true;
    }
  
    function read($size, $mode=PHP_BINARY_READ) {
      return socket_read($this->child, $size, $mode);
    }
    
    /* public: use this function to write to the socket */
    function write($data) {
      return socket_write($this->child, $data, strlen($data));
    }  
  
    function get_request() {
      // handle request
      while(($buf= $this->read(2048)) !== false) { 
        $request_headers.= $buf;
        if(preg_match("'\r\n\r\n$'s", $request_headers))
          break;
      }
  
      $request_headers = split("\r\n", $request_headers);
  
      // parse
      list($request,$data) = $this->parse_request($request_headers);
      return array($request,$data);
    }
  
    function process($request) {
      // now respond 
      $today= gmdate("D, d M Y G:i:s")." GMT";
  
      if(!$this->is_path_allowed($request['PATH_TRANSLATED'])) {
        $header="HTTP/1.0 403 Forbidden\r\n".
          "Date: $today\r\n".
          "Server: ".$this->servername."\r\n".
          "Connection: close\r\n".
          "Content-type: text/html\r\n\r\n";
        $this->write($header);
  
        $html="<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">
  <head>
  <style>
  h1 {font-family:tahoma,verdana,sans-serif;}
  </style>
  </head>
  <body><h1>Forbidden</h1>
  <p>You performed an illegal request $request[REQUEST_URI]</p>
  <address>$this->servername</address></body></html>\n";
        $this->write($html);
      } else {
        // if user requests a directory search for directory index file
        if(is_dir($request['PATH_TRANSLATED'])) {
          if(file_exists($this->strip_trailing_slash($request['PATH_TRANSLATED']) . '/' . $this->directory_index)) {
  	  $request['PATH_TRANSLATED'].= '/'.$this->directory_index;
  	}
        }
  
        if(file_exists($request['PATH_TRANSLATED']) && is_file($request['PATH_TRANSLATED'])) {
          $mime=$this->mime_type($this->file_ext($request['PATH_TRANSLATED']));
          $header="HTTP/1.0 200 OK\r\n".
            "Date: $today\r\n".
            "Server: ".$this->servername."\r\n".
            "Connection: close\r\n".
            "Content-type: ".$mime."\r\n\r\n";
  	  /* We're not yet supporting Keep-Alive connections */ 
          $this->write($header);
  
          $fp= fopen($request['PATH_TRANSLATED'], "r");
  	if ($fp) {
  	  while(!feof($fp) && ($this->write(fread($fp, 2048)) !== false));
            fclose($fp);
  	}
        } else {
          $header="HTTP/1.0 404 Not Found\r\n".
            "Date: $today\r\n".
            "Server: ".$this->servername."\r\n".
            "Connection: close\r\n".
            "Content-type: text/html\r\n\r\n";
          $this->write($header);
  
          $html="<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">
  <html><head><title>404 Not Found</title>
  <style>
  h1 {font-family:tahoma,verdana,sans-serif;}
  </style>
  </head><body>
  <h1>404 Not Found</h1>
  <p>The request URL $request[REQUEST_URI] was not found on this server.</p>
  <hr />
  <address>$this->servername</address>
  </body></html>\n";
          $this->write($html);
        }
      }
      
      #$this->log("[".$remote_addr."] ".$request['REQUEST_METHOD'].
      #                             " ".$request['REQUEST_URI']);    
      #print("[".$remote_addr."] ".$request['REQUEST_METHOD'].
      #                        " ".$request['REQUEST_URI']);
      #print("\n");
    }
  
    function parse_request($request) {
      if(preg_match("'^(GET|POST) ([^ ]+) (HTTP/[^ ]+)$'", $request[0], $matches))
        ;
      else if(preg_match("'^(GET|POST) ([^ ]+)$'", $request[0], $matches)) {
        $matches[]='HTTP/1.0';
        print_r($matches);
      } else
        return false;
      
      list(, $req['REQUEST_METHOD'], $req['REQUEST_URI'], $req['SERVER_PROTOCOL']) = $matches;
      #print $request[0]."\n";
      if(($p = $this->parse_path(&$req['REQUEST_URI'])) !== false) {
        $req['PATH_INFO']       = $p['PATH_INFO'];
        $req['QUERY_STRING']    = $p['QUERY_STRING'];
        $req['PATH_TRANSLATED'] = $this->condense_path($this->document_root . $req['REQUEST_URI']);      
      }
      $remote_ip=getenv('REMOTE_ADDR');
      if (!$remote_ip) $req['REMOTE_ADDR']="127.0.0.1";
      else $req['REMOTE_ADDR']=$remote_ip;
  
      unset($request[0]);
      foreach ($request as $line) {
        if (!$line) continue;
        $key=strtoupper(strtok($line,":"));
        $val=trim(strtok(""));
        $HTTP[$key]=$val;
      }
  
      if ($HTTP['CONTENT-LENGTH']) {
        $content= $this->read($HTTP['CONTENT-LENGTH']);
      }
      if ($req['REQUEST_METHOD']=='POST') {
        if ($HTTP['CONTENT-TYPE']!='application/x-www-form-urlencoded') {
          $GLOBALS['HTTP_RAW_POST_DATA']=$content;
        } else {
          parse_str($content,$data);
        }
      }
  
      $req=array_merge($HTTP,$req);
      return array($req,$data);
    }
  
    function parse_path($path) {
      if(!preg_match("'([^?]*)(?:\?([^#]*))?(?:#.*)? *'", $path, $matches))
        return false;
  
      list(, $p['PATH_INFO'], $p['QUERY_STRING']) = $matches;
  
      if (!file_exists($this->document_root.$path)) {
        $new_uri=$path;
        while(!@is_file($this->document_root.$new_uri) && $new_uri) {
          $new_uri=substr($new_uri, 0, strrpos($new_uri, "/"));
        }
      }
  
      if ($new_uri) {
        // Path_info found
        $p['PATH_INFO']=substr($path, strlen($new_uri));
        $path=$new_uri;
      }
  
      return $p;
    }
  
    function condense_path($path) {
      while (preg_match("'/[^/]+/\.\./'" , $path))
        $path = preg_replace("'/[^/]+/\.\./'", "/", $path);
        
      return $path;
    }
  
    function is_path_allowed($path) {
      return strpos($path, $this->document_root) === 0; 
    }
  
    function strip_trailing_slash($path) {
      if (preg_match("'(.*?)/?$'", $path, $matches))
        return $matches[1];
    }
  
    function file_ext($path) {
      if (!preg_match("'\.([^/.]+)$'", $path, $matches))
        return '';
          
      return $matches[1];
    }
  
    function mime_type($ext) {
      switch($ext) {
        case 'hqx':
          return 'application/mac-binhex40';
  
        case 'cpt':
          return 'application/mac-compactpro';
  	
        case 'doc':
          return 'application/msword';
  	
        case 'bin':
        case 'dms':
        case 'lha':
        case 'lzh':
        case 'exe':
        case 'class':
        case 'so':
        case 'dll':
          return 'application/octet-stream';
  	
        case 'oda':
          return 'application/oda';
  	
        case 'pdf':
          return 'application/pdf';
  	
        case 'ai':
        case 'eps':
        case 'ps':
          return 'application/postscript';
  	
        case 'smi':
        case 'smil':
          return 'application/smil';
  	
        case 'xls':
          return 'application/ms-excel';
  	
        case 'ppt':
          return 'application/vnd.ms-powerpoint';
  	
        case 'wbxml':
          return 'application/vnd.wap.wbxml';
  	
        case 'wmlc':
          return 'application/vnd.wap.wmlc';
  	
        case 'wmlsc':
          return 'application/vnd.wap.wmlscriptc';
  	
        case 'bcpio':
          return 'application/x-bcpio';
  	
        case 'vcd':
          return 'application/x-cdlink';
  	
        case 'pgn':
          return 'application/x-chess-pgn';
  	
        case 'cpio':
          return 'application/x-cpio';
  	
        case 'csh':
          return 'application/x-csh';
  	
        case 'dcr':
        case 'dir':
        case 'dxr':
          return 'application/x-director';
  	
        case 'dvi':
          return 'application/x-dvi';
  	
        case 'spl':
          return 'application/x-futuresplash';
  	
        case 'gtar':
          return 'application/x-gtar';
  	
        case 'hdf':
          return 'application/x-hdf';
  	
        case 'js':
          return 'application/x-javascript';
  	
        case 'skp':
        case 'skd':
        case 'skt':
        case 'skm':
          return 'application/x-koan';
  	
        case 'latex':
          return 'application/x-latex';
  	
        case 'nc':
        case 'cdf':
          return 'application/x-netcdf';
  	
        case 'sh':
          return 'application/x-sh';
  
        case 'shar':
          return 'application/x-shar';
  	
        case 'swf':
          return 'application/x-shockwave-flash';
  	
        case 'sit':
          return 'application/x-stuffit';
  	
        case 'sv4cpio':
          return 'application/x-sv4cpio';
  	
        case 'sv4crc':
          return 'application/x-sv4crc';
  	
        case 'tar':
          return 'application/x-tar';
  	
        case 'tcl':
          return 'application/x-tcl';
  	
        case 'tex':
          return 'application/x-tex';
  
        case 'texinfo':
        case 'texi':
          return 'application/x-texinfo';
  	
        case 't':
        case 'tr':
        case 'troff':
          return 'application/x-troff';
  	
        case 'man':
          return 'application/x-troff-man';
  
        case 'me':
          return 'application/x-troff-me';
  	
        case 'ms':
          return 'application/x-troff-ms';
  	
        case 'ustar':
          return 'application/x-ustar';
  	
        case 'src':
          return 'application/x-wais-source';
  
        case 'zip':
          return 'application/zip';
  
        case 'au':
        case 'snd':
          return 'audio/basic';
  	
        case 'mid':
        case 'midi':
        case 'kar':
          return 'audio/midi';
  	
        case 'mpga':
        case 'mp2':
        case 'mp3':
          return 'audio/mpeg';
  
        case 'aif':
        case 'aiff':
        case 'aifc':
          return 'audio/x-aiff';
  	
        case 'm3u':
          return 'audio/x-mpegurl';
  	
        case 'ram':
        case 'rm':
          return 'audio/x-pn-realaudio';
  	
        case 'rpm':
          return 'audio/x-pn-realaudio-plugin';
  
        case 'ra':
          return 'audio/x-realaudio';
  	
        case 'wav':
          return 'audio/x-wav';
  	
        case 'pdb':
          return 'chemical/x-pdb';
  	
        case 'xyz':
          return 'chemical/x-xyz';
  
        case 'bmp':
          return 'image/bmp';
  	
        case 'gif':
          return 'image/gif';
  	
        case 'ief':
          return 'image/ief';
  	
        case 'jpeg':
        case 'jpg':
        case 'jpe':
          return 'image/jpeg';
  	
        case 'png':
          return 'image/png';
  
        case 'tiff':
        case 'tif':
          return 'image/tiff';
  
        case 'wbmp':
          return 'image/vnd.wap.wbmp';
  
        case 'ras':
          return 'image/x-cmu-raster';
  	
        case 'pnm':
          return 'image/x-portable-anymap';
  	
        case 'pbm':
          return 'image/x-portable-bitmap';
  	
        case 'pgm':
          return 'image/x-portable-graymap';
  	
        case 'ppm':
          return 'image/x-portable-pixmap';
  
        case 'rgb':
          return 'image/x-rgb';
  	
        case 'xbm':
          return 'image/x-xbitmap';
  
        case 'xpm':
          return 'image/xpixmap';
  	
        case 'xwd':
          return 'image/xwindowdump';
  
        case 'igs':
        case 'iges':
          return 'model/iges';
  
        case 'msh':
        case 'mesh':
        case 'silo':
          return 'model/mesh';
  
        case 'wrl':
        case 'vrml':
          return 'model/vrml';
  
        case 'css':
          return 'text/css';
  
        case 'html':
        case 'htm':
          return 'text/html';
  
        case 'asc':
        case 'txt':
          return 'text/plain';
  	
        case 'rtx':
          return 'text/richtext';
  	
        case 'rtf':
          return 'text/rtf';
  	
        case 'sgml':
        case 'sgm':
          return 'text/sgml';
  
        case 'tsv':
          return 'text/tab-seperated-values';
  
        case 'wml':
          return 'text/vnd.wap.wml';
  	
        case 'wmls':
          return 'text/vnd.wap.wmlscript';
  	
        case 'etx':
          return 'text/x-setext';
  	
        case 'xml':
        case 'xsl':
          return 'text/xml';
  	
        case 'mpeg':
        case 'mpg':
        case 'mpe':
          return 'video/mpeg';
  
        case 'qt':
        case 'mov':
          return 'video/quicktime';
  	
        case 'mxu':
          return 'video/vnd.mpegurl';
  	
        case 'avi':
          return 'video/x-msvideo';
  	
        case 'movie':
          return 'video/x-sgi-movie';
  	
        case 'ice':
          return 'x-conference/x-cooltalk';
  
        default:
          return 'text/plain';
      }
    }
  
    /* public: log messages */
    function log($message) {
      fputs($this->log_handle, $message . "\n");  
    }
    
    /* public: log errors */
    function log_error($message) {
      fputs($this->error_handle, $message . "\n");
    }
   
    function loop() {
      do {
        if (($child = socket_accept($this->socket)) < 0) {
          echo "socket_accept() failed: reason: ".socket_strerror($msgsock)."\n";
          break;
        }
        $this->child=$child;
  
        list($request,$data)=$this->get_request();
        $this->process($request);
  
        #socket_shutdown($this->child);
        socket_close($this->child);
      } while(true);
    }
  
    function close() {
      socket_close ($this->socket);
    }
  } // end of simple_server
  
  echo "MoniWiki Web Server !\r\n";
  ob_implicit_flush();
  #$httpd=new simple_server('localhost',8080,"c:\htdocs");
  include("wikiserver.php");
  $DBInfo->query_prefix='/';
  
  if ($DBInfo->httpd_docs)
    $httpd=new simple_server('localhost',8080,$DBInfo->httpd_docs);
  else
    $httpd=new simple_server('localhost',8080,"c:\htdocs");
  
  $wiki_prefix= '/wiki/';
  
  // Initialize Wiki
  //$httpd->loop();
  //
  //exit;
  
  do {
    if (($child = socket_accept($httpd->socket)) < 0) {
      echo "socket_accept() failed: reason: ".socket_strerror($msgsock)."\n";
      break;
    }
    $httpd->child=$child;
   
    $options['timer']=new Timer();
  
    list($_SERVER,$data)=$httpd->get_request();
  
    parse_str($_SERVER['QUERY_STRING'],$temp);
    if ($_SERVER['REQUEST_METHOD']=='GET') {
      $_GET=$temp;
    } else if ($_SERVER['REQUEST_METHOD']=='POST') {
      if ($data) $_POST=$data;
    } else {
      print "Invalid request error!\n";
    }
  
    if (substr($_SERVER['REQUEST_URI'],0,strlen($wiki_prefix)) == $wiki_prefix) {
      # WikiPage
      $today= gmdate("D, d M Y G:i:s")." GMT";
      $mime="text/html";
      $status="HTTP/1.0 200 OK\r\n";
      $header="Date: $today\r\n".
            "Server: ".$httpd->servername."\r\n".
            "Connection: close\r\n".
            "Content-type: ".$mime."\r\n";
  	  /* We're not yet supporting Keep-Alive connections */ 
      $pagename=urldecode(substr($_SERVER['PATH_INFO'],strlen($wiki_prefix)));
      if (!$pagename) $pagename=$DBInfo->frontpage;
  
      ob_start();
      render($pagename,$options);
      $html=ob_get_contents();
      ob_end_clean();
  
      # header hack XXX
      $extra_header='';
      if ($GLOBALS['http_header']) {
        $extra_header=$GLOBALS['http_header'];
        print($GLOBALS['http_header']);
      }
      if ($GLOBALS['http_status'])
        $status="HTTP/1.0 ".$GLOBALS['http_status']."\r\n";
      $GLOBALS['http_header']='';
      $GLOBALS['http_status']='';
      #
      $httpd->write($status.$header.$extra_header."\r\n");
      $httpd->write($html);
  #    print $html;
    } else {
      $httpd->process($_SERVER);
    }
  
    socket_close($httpd->child);
    #socket_shutdown($httpd->child);
  } while(true);
  ?> 
  
  
  


wkpark      04/01/01 21:52:14

  Modified:    .        Tag: moniwiki-1_1 config.php.default
  Log:
  comment out db_cache related options
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.7.2.2   +6 -6      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.7.2.1
  retrieving revision 1.7.2.2
  diff -u -r1.7.2.1 -r1.7.2.2
  --- config.php.default	30 Nov 2003 15:54:26 -0000	1.7.2.1
  +++ config.php.default	1 Jan 2004 12:52:12 -0000	1.7.2.2
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.7 2003/11/25 00:54:11 wkpark Exp $
  +# $Id: config.php.default,v 1.7.2.1 2003/11/30 15:54:26 advanced Exp $
   #
   $sitename='UnnamedWiki';
   $data_dir= './data';
  @@ -38,12 +38,12 @@
   $use_sistersites=1;
   $use_twinpages=1;
   $use_trackback=0;
  -$use_dbcache=0;
  +#$use_dbcache=0;
   # db_type  0 - mysql 1 - postgresql 2 - oracle
  -$db_type=0;
  -$db_user='moniwiki';
  -$db_password='';
  -$db_name='moniwiki';
  +#$db_type=0;
  +#$db_user='moniwiki';
  +#$db_password='';
  +#$db_name='moniwiki';
   #$nonexists='fancy_nonexists';
   #$use_titlecache=0;
   #$security_class="needtologin";
  
  
  


wkpark      04/01/01 22:21:01

  Modified:    .        Tag: moniwiki-1_1 monisetup.php
  Log:
  fix some bug
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.9.2.10  +19 -12    moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.9.2.9
  retrieving revision 1.9.2.10
  diff -u -r1.9.2.9 -r1.9.2.10
  --- monisetup.php	22 Dec 2003 06:54:07 -0000	1.9.2.9
  +++ monisetup.php	1 Jan 2004 13:21:00 -0000	1.9.2.10
  @@ -6,7 +6,7 @@
   class MoniConfig {
     function MoniConfig($configfile="config.php") {
       $this->configfile = $configfile;
  -    $this->_getRawConfig();
  +    $this->_getRawConfig($configfile);
       if (!$this->rawconfig) {
         $this->_getDefaultRawConfig();
       }
  @@ -14,7 +14,6 @@
     }
   
     function _getDefaultRawConfig() {
  -    $this->configfile = "config.php.default";
       $this->_getRawConfig();
       $hostconfig=$this->_getHostConfig();
       $this->rawconfig = array_merge($this->rawconfig, $hostconfig);
  @@ -91,11 +90,11 @@
       return array_diff($new, $org);
     }
   
  -  function _getRawConfig() {
  -    if (!is_readable($this->configfile)) {
  +  function _getRawConfig($configfile='config.php.default') {
  +    if (!is_readable($configfile)) {
         return array();
       }
  -    $lines=file($this->configfile);
  +    $lines=file($configfile);
       foreach ($lines as $line) {
         if ($line[0] != '$') {
           continue;
  @@ -256,7 +255,11 @@
         print "<tr>";
         print "<td>$$key</td>";
         print "<td>".htmlspecialchars($rawconfig[$key])."</td>";
  -      print "<td>$config[$key]</td>";
  +      if ($config[$key]==='')
  +         $ret="<br />";
  +      else
  +         $ret=$config[$key];
  +      print "<td>$ret</td>";
         print "</tr>\n";
       }
     }
  @@ -279,20 +282,24 @@
         $val=htmlspecialchars($val);
         print "<tr>";
         print "<td>$$key</td>";
  -      print "<td><input name='config[$key]' value=\"$val\" size='60'></td>";
  -      print "<td>$config[$key]</td>";
  +      print "<td><input name='config[$key]' value=\"$val\" size='40'></td>";
  +      if ($config[$key]==='')
  +         $ret="<br />";
  +      else
  +         $ret=$config[$key];
  +      print "<td>$ret</td>";
         print "</tr>\n";
       }
     }
   
     if (!$config[admin_passwd]) {
       print "<tr><td><b>\$admin_passwd</b></td>";
  -    print "<td><input type='password' name='newpasswd' size='60'></td></tr>\n";
  +    print "<td colspan='2'><input type='password' name='newpasswd' size='40'></td></tr>\n";
     } else  {
       print "<tr><td><b>Old password</b></td>";
  -    print "<td><input type='password' name='oldpasswd' size='60'></td></tr>\n";
  +    print "<td><input type='password' name='oldpasswd' size='40'></td></tr>\n";
       print "<tr><td><b>New password</b></td>";
  -    print "<td><input type='password' name='newpasswd' size='60'></td></tr>\n";
  +    print "<td><input type='password' name='newpasswd' size='40'></td></tr>\n";
     }
     print "<tr><td colspan=3>";
     print "<input type='submit' name='action' value='preview'/>";
  @@ -319,7 +326,7 @@
       if ($ret) {
         print_notice("Initial configurations are saved successfully.");
       } else {
  -      print_error("Savingg new configurations failed!!");
  +      print_error("Saving new configurations failed!!");
         return;
       }
     }
  
  
  


wkpark      04/01/01 23:01:12

  moniwiki/plugin/cache - New directory

wkpark      04/01/01 23:02:43

  Added:       plugin/cache Tag: moniwiki-1_1_cvs_db mysql.php
  Log:
  dbcache plugin for the MySQL
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +126 -0    moniwiki/plugin/cache/Attic/mysql.php
  
  
  
  


wkpark      04/01/01 23:05:35

  moniwiki/plugin/version - New directory

wkpark      04/01/01 23:07:32

  Added:       plugin/version Tag: moniwiki-1_1_cvs_db CVS.php
  Log:
  a CVS version plugin for the moniwiki imported from the awiki
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +145 -0    moniwiki/plugin/version/Attic/CVS.php
  
  
  
  


wkpark      04/01/01 23:09:07

  Modified:    .        Tag: moniwiki-1_1_cvs_db wiki.php
  Log:
  remove $use_dbcache
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.123.2.4.2.1 +1 -5      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.123.2.4
  retrieving revision 1.123.2.4.2.1
  diff -u -r1.123.2.4 -r1.123.2.4.2.1
  --- wiki.php	11 Dec 2003 18:00:14 -0000	1.123.2.4
  +++ wiki.php	1 Jan 2004 14:08:58 -0000	1.123.2.4.2.1
  @@ -13,7 +13,7 @@
   //
   // a Wiki Frontend
   //
  -// $Id: wiki.php,v 1.123.2.3 2003/12/11 16:57:45 verotas Exp $
  +// $Id: wiki.php,v 1.123.2.4 2003/12/11 18:00:14 verotas Exp $
   
   function get_scriptname() {
     // Return full URL of current page.
  @@ -29,10 +29,6 @@
   
   # Start Main
   $Config = getConfig("config.php", array('init'=>1));
  -
  -if ($Config['use_dbcache']) {
  -  include("lib/dblib.php");
  -}
   
   $DBInfo = new WikiDB($Config);
   register_shutdown_function(array(&$DBInfo,'Close'));
  
  
  


wkpark      04/01/01 23:13:05

  Modified:    .        Tag: moniwiki-1_1_cvs_db wikidb.php
  Log:
  add CVS version plugin and refactor 'dbcache' as a plugin
  the Cache_text class is refactored as a dbcache class. etc.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.9.2.1 +328 -185  moniwiki/Attic/wikidb.php
  
  Index: wikidb.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/Attic/wikidb.php,v
  retrieving revision 1.1.2.9
  retrieving revision 1.1.2.9.2.1
  diff -u -r1.1.2.9 -r1.1.2.9.2.1
  --- wikidb.php	30 Dec 2003 17:38:45 -0000	1.1.2.9
  +++ wikidb.php	1 Jan 2004 14:13:03 -0000	1.1.2.9.2.1
  @@ -90,8 +90,8 @@
   function get_title($page) {
     global $DBInfo;
     if ($DBInfo->use_titlecache) {
  -    $cache=new Cache_text('title');
  -    if ($cache->exists($page)) $title=$cache->fetch($page);
  +    if ($this->cache->is_arena('title') and $this->cache->exists($page,'title'))
  +      $title=$this->cache->fetch($page,'title');
     } else
       $title=$page;
   
  @@ -425,10 +425,6 @@
         foreach ($config as $key=>$val)
           $this->$key=$val;
       }
  -    # DBCache instance
  -    if($this->use_dbcache==1){
  -      $this->dbcache = new DBCache($config);
  -    } else $this->dbcache = NULL;
   
       if (!$this->purge_passwd)
         $this->purge_passwd=$this->admin_passwd;
  @@ -504,11 +500,26 @@
       if (!$this->metadb->metadb)
         $this->metadb=new MetaDB();
   
  -    if ($this->use_counter)
  +    //
  +    if ($this->cache_class) {
  +      include_once("plugin/cache/$this->cache_class.php");
  +      $class="Cache_".$this->cache_class;
  +      $this->cache=new $class ($this);
  +    } else
  +      $this->cache=new Cache_text($this);
  +
  +    if ($this->counter_class)
         $this->counter=new Counter_dba($this);
       if (!$this->counter->counter)
         $this->counter=new Counter();
   
  +    if ($this->version_class) {
  +      include_once("plugin/version/$this->version_class.php");
  +      $class="Version_".$this->version_class;
  +      $this->version=new $class ($this);
  +    } else
  +      $this->version=new Version_RCS($this);
  +
       if ($this->security_class) {
         include_once("plugin/security/$this->security_class.php");
         $class="Security_".$this->security_class;
  @@ -603,28 +614,28 @@
         closedir($handle);
         return $pages;
       } else if ($options['limit']) { # XXX
  -       while ($file = readdir($handle)) {
  -          if (is_dir($this->text_dir."/".$file)) continue;
  -          if (filemtime($this->text_dir."/".$file) > $options['limit'])
  -             $pages[] = $this->keyToPagename($file);
  -       }
  -       closedir($handle);
  -    } else if ($options['count']) {
  -       $count=$options['count'];
  -       while (($file = readdir($handle)) && $count > 0) {
  -          if (is_dir($this->text_dir."/".$file)) continue;
  +      while ($file = readdir($handle)) {
  +        if (is_dir($this->text_dir."/".$file)) continue;
  +        if (filemtime($this->text_dir."/".$file) > $options['limit'])
             $pages[] = $this->keyToPagename($file);
  -          $count--;
  -       }
  -       closedir($handle);
  +      }
  +      closedir($handle);
  +    } else if ($options['count']) {
  +      $count=$options['count'];
  +      while (($file = readdir($handle)) && $count > 0) {
  +        if (is_dir($this->text_dir."/".$file)) continue;
  +        $pages[] = $this->keyToPagename($file);
  +        $count--;
  +      }
  +      closedir($handle);
       } else if ($options['date']) {
  -       while ($file = readdir($handle)) {
  -          if (is_dir($this->text_dir."/".$file)) continue;
  -          $mtime=filemtime($this->text_dir."/".$file);
  -          $pagename= $this->keyToPagename($file);
  -          $pages[$pagename]= $mtime;
  -       }
  -       closedir($handle);
  +      while ($file = readdir($handle)) {
  +        if (is_dir($this->text_dir."/".$file)) continue;
  +        $mtime=filemtime($this->text_dir."/".$file);
  +        $pagename= $this->keyToPagename($file);
  +        $pages[$pagename]= $mtime;
  +      }
  +      closedir($handle);
       }
       return $pages;
     }
  @@ -730,8 +741,6 @@
     }
   
     function savePage($page,$comment="",$options=array()) {
  -    global $DBInfo;
  -
       $user=new User();
       if ($user->id != 'Anonymous') {
         $udb=new UserDB($this);
  @@ -751,12 +760,18 @@
       $body=$this->_replace_variables($page->body,$options);
       $page->write($body);
       fwrite($fp, $body);
  -    if ($this->use_dbcache)
  -        $this->dbcache->savePage($page);    
       flock($fp,LOCK_UN);
       fclose($fp);
  +
  +    if ($this->cache->is_arena('text'))
  +      $this->cache->update($page->name,'text',$body);
  +
  +/*
       $ret=system("ci -l -x,v/ -q -t-\"".$pagename."\" -m\"".$REMOTE_ADDR.';;'.
               $user->id.';;'.$comment."\" ".$key);
  +*/
  +    $log=$REMOTE_ADDR.';;'.$user->id.';;'.$comment;
  +    $ret=$this->version->ci($pagename,$log);
       # check minor edits XXX
       $minor=0;
       if ($this->use_minorcheck or $options['minorcheck']) {
  @@ -779,28 +794,27 @@
       $keyname=$this->_getPageKey($page->name);
   
       $delete=@unlink($this->text_dir."/$keyname");
  -    if($this->use_dbcache)
  -        $this->dbcache->deletePage($page->name);
  -    
  -    if ($options['history']) @unlink($this->text_dir."/RCS/$keyname,v");
  +    if ($options['history'])
  +      //@unlink($this->text_dir."/RCS/$keyname,v");
  +      $this->version->delete($page->name);
       $this->addLogEntry($keyname, $REMOTE_ADDR,$comment,"SAVE");
   
  -    $handle= opendir($this->cache_dir);
  -    while ($file= readdir($handle)) {
  -      if ($file[0] != '.' and is_dir("$this->cache_dir/$file")) {
  -        $cache= new Cache_text($file);
  -        $cache->remove($page->name);
  -
  -        # blog cache
  -        if ($file == 'blogchanges') {
  -          $handle2= opendir("$this->cache_dir/$file");
  -          while ($fcache= readdir($handle2)) {
  -            #print $keyname.';'.$fcache."\n";
  -            if (preg_match("/\d+_2e$keyname$/",$fcache))
  -              unlink("$this->cache_dir/$file/$fcache");
  -          }
  -        } # for blog cache
  -      }
  +    // XXX
  +    $arenas=$this->cache->arenas();
  +    foreach ($arenas as $arena) {
  +      if ($this->cache->is_arena($arena))
  +        $this->cache->remove($page->name,$arena);
  +
  +      # blog cache
  +      if ($arena == 'blogchanges') {
  +        $handle2= opendir("$this->cache_dir/$arena");
  +        while ($fcache= readdir($handle2)) {
  +          #print $keyname.';'.$fcache."\n";
  +          if (preg_match("/\d+_2e$keyname$/",$fcache))
  +            unlink("$this->cache_dir/$arena/$fcache");
  +        }
  +        closedir($handle2);
  +      } # for blog cache
       }
     }
   
  @@ -812,12 +826,10 @@
       $keyname=$this->_getPageKey($new);
   
       rename($okey,$nkey);
  -    if($this->use_dbcache)
  -      $this->dbcache->renamePage($pagename,$new);
  -    
       if ($options['history']) {
  -      $oname=$this->_getPageKey($pagename);
  -      rename($this->text_dir."/RCS/$oname,v",$this->text_dir."/RCS/$keyname,v");
  +      //$oname=$this->_getPageKey($pagename);
  +      //rename($this->text_dir."/RCS/$oname,v",$this->text_dir."/RCS/$keyname,v");
  +      $this->version->rename($pagename,$new);
       }
       $comment=sprintf(_("Rename %s to %s"),$pagename,$new);
       $this->addLogEntry($keyname, $REMOTE_ADDR,$comment,"SAVE");
  @@ -843,23 +855,148 @@
     }
   }
   
  +
  +class Version_RCS {
  +  var $DB;
  +
  +  function Version_RCS($DB) {
  +    $this->DB=$DB;
  +  }
  +
  +  function _filename($pagename) {
  +    # have to be factored out XXX
  +    # Return filename where this word/page should be stored.
  +    return $this->DB->getPageKey($pagename);
  +  }
  +
  +  function co($pagename,$rev,$opt='') {
  +    $filename= $this->_filename($pagename);
  +
  +    $fp=@popen("co -x,v/ -q -p\"".$rev."\" ".$filename,"r");
  +    $out='';
  +    if ($fp) {
  +      while (!feof($fp)) {
  +        $line=fgets($fp,2048);
  +        $out.= $line;
  +      }
  +      pclose($fp);
  +    }
  +    return $out;
  +  }
  +
  +  function ci($pagename,$log) {
  +    $key=$this->_filename($pagename);
  +    $ret=system("ci -l -x,v/ -q -t-\"".$pagename."\" -m\"".$log."\" ".$key);
  +  }
  +
  +  function rlog($pagename,$rev='',$opt='',$oldopt='') {
  +    if ($rev)
  +      $rev = "-r$rev";
  +    $filename=$this->_filename($pagename);
  +
  +    return popen("rlog $opt $oldopt -x,v/ $rev ".$filename,"r");
  +  }
  +
  +  function diff($pagename,$option) {
  +    $filename=$this->_filename($pagename);
  +    return popen("rcsdiff -x,v/ -u $option ".$filename,'r');
  +  }
  +
  +  function purge($pagename,$rev) {
  +  }
  +
  +  function delete($pagename) {
  +    $keyname=$DB->_getPageKey($pagename);
  +    @unlink($DB->text_dir."/RCS/$keyname,v");
  +  }
  +
  +  function rename($pagename,$new) {
  +    $keyname=$DB->_getPageKey($new);
  +    $oname=$DB->_getPageKey($pagename);
  +    rename($DB->text_dir."/RCS/$oname,v",$DB->text_dir."/RCS/$keyname,v");
  +  }
  +
  +  function get_rev($pagename,$mtime='',$last=0) {
  +    $tag='head:';
  +    $ntag='';
  +    if ($last==1) {
  +      $opt='-h';
  +    } else
  +      $ntag='revision';
  +    if ($mtime) {
  +      $date=gmdate('Y/m/d H:i:s',$mtime);
  +      if ($date) {
  +        $opt="-d\<'$date'";
  +        $ntag='revision';
  +      }
  +    }
  +
  +    $fp= $this->rlog($pagename,'',$opt);
  +    if ($fp) {
  +      while (!feof($fp)) {
  +        $line=fgets($fp,1024);
  +        preg_match("/^$tag\s+([\d\.]+)/",$line,$match);
  +        if ($match[1]) {
  +          if ($tag == 'head:' and $ntag) {
  +            $tag=$ntag;
  +            $rev=$match[1];
  +            continue;
  +          } else if ($tag == 'revision' and $rev == $match[1])
  +            continue;
  +          $rev=$match[1];
  +          break;
  +        }
  +      }
  +      pclose($fp);
  +    }
  +    return $rev;
  +  }
  +
  +}
  +
   class Cache_text {
  -  function Cache_text($arena) {
  -    global $DBInfo;
  +  var $DB;
  +
  +  function Cache_text($DB) {
  +    $this->DB=$DB;
  +
  +    $this->arenas=$this->_get_arenas();
  +    $this->cache_dir=$this->DB->cache_dir;
  +  }
  +
  +  function _get_arenas() {
  +    $handle= opendir($this->DB->cache_dir);
  +    while ($arena= readdir($handle)) {
  +      if ($arena[0] != '.' and is_dir("$DB->cache_dir/$arena"))
  +         $arenas[]=$arena;
  +    }
  +    closedir($handle);
  +    return $arenas;
  +  }
  +
  +  function arenas() {
  +    return $this->arenas;
  +  }
  +
  +  function is_arena($arena='') {
  +    if (!$arena or in_array($arena,array('text')))
  +      return false;
  +
       umask(000);
  -    $this->cache_dir=$DBInfo->cache_dir."/$arena";
  -    if (!file_exists($this->cache_dir))
  -      mkdir($this->cache_dir, 0777);
  +
  +    if (!file_exists($this->cache_dir."/$arena"))
  +      mkdir($this->cache_dir."/$arena", 0777);
  +    return true;
     }
   
  -  function getKey($pagename) {
  -    $name=preg_replace("/([^a-z0-9]{1})/ie","'_'.strtolower(dechex(ord('\\1')))",$pagename);
  -    return $this->cache_dir . '/' . $name;
  +  function _getKey($pagename) {
  +    return preg_replace("/([^a-z0-9]{1})/ie","'_'.strtolower(dechex(ord('\\1')))",$pagename);
     }
   
  -  function update($pagename,$val,$mtime="") {
  -    $key=$this->getKey($pagename);
  -    if ($mtime and ($mtime <= $this->mtime($key))) return false;
  +  function update($pagename,$arena='',$val,$mtime="") {
  +    $key=$this->cache_dir."/$arena/".$this->_getKey($pagename);
  +    if ($mtime and ($mtime <= $this->mtime($key,$arena)))
  +      return false;
   
       if (is_array($val))
         $val=join("\n",array_keys($val))."\n";
  @@ -876,8 +1013,8 @@
       fclose($fp);
     }
   
  -  function fetch($pagename,$mtime="") {
  -    $key=$this->getKey($pagename);
  +  function fetch($pagename,$arena,$mtime="") {
  +    $key=$this->cache_dir."/$arena/".$this->_getKey($pagename);
       if ($this->_exists($key)) {
          if (!$mtime) {
             return $this->_fetch($key);
  @@ -888,8 +1025,8 @@
       return false;
     }
   
  -  function exists($pagename) {
  -    $key=$this->getKey($pagename);
  +  function exists($pagename,$arena='') {
  +    $key=$this->cache_dir."/$arena/".$this->_getKey($pagename);
       return $this->_exists($key);
     }
   
  @@ -908,8 +1045,8 @@
       return filemtime($key);
     }
   
  -  function mtime($pagename) {
  -    $key=$this->getKey($pagename);
  +  function mtime($pagename,$arena) {
  +    $key=$this->cache_dir."/$arena/".$this->_getKey($pagename);
       if ($this->_exists($key))
          return $this->_mtime($key);
       return 0;
  @@ -919,8 +1056,8 @@
   #    $key=$this->getKey($pagename);
   #  }
   
  -  function remove($pagename) {
  -    $key=$this->getKey($pagename);
  +  function remove($pagename,$arena) {
  +    $key=$this->cache_dir."/$arena/".$this->getKey($pagename);
       if ($this->_exists($key))
         unlink($key);
     }
  @@ -931,10 +1068,8 @@
     var $filename;
     var $rev;
     var $body;
  -  var $dbcache=null;
  +
     function WikiPage($name,$options="") {
  -    global $DBInfo; // for dbcache
  -    
       if ($options['rev'])
         $this->rev=$options['rev'];
       else
  @@ -944,10 +1079,7 @@
       $this->urlname= _rawurlencode($name);
       $this->body= "";
       $this->title=get_title($name);
  -
  -    
  -    if($DBInfo>use_dbcache)
  -      $this->dbcache=$DBInfo->dbcache;
  +    $this->config=$config;
       #$this->title=preg_replace("/((?<=[A-Za-z0-9])[A-Z][a-z0-9])/"," \\1",$name);
     }
   
  @@ -979,39 +1111,36 @@
     }
   
     function get_raw_body($options='') {
  +    global $DBInfo;
  +
       if ($this->body && !$options['rev']) {
          return $this->body;
       }
   #    if (!$this->exists()) return '';
   
  +    // does retrive a specific version ?
       if ($this->rev || $options['rev']) {
          if ($options['rev']) $rev=$options['rev'];
          else $rev=$this->rev;
  -       $fp=@popen("co -x,v/ -q -p\"".$rev."\" ".$this->filename,"r");
  -       if (!$fp)
  -          return "";
  -       while (!feof($fp)) {
  -          $line=fgets($fp,2048);
  -          $out.= $line;
  -       }
  -       pclose($fp);
  +
  +       $out = $DBInfo->version->co($this->name,$rev);
          return $out;
       }
  -    if (!$this->dbcache){
  -      $fp=@fopen($this->filename,"r");
  -      if (!$fp) {
  -         $out="You have no permission to see this page.\n\n";
  -         $out.="See MoniWiki/AccessControl\n";
  -         return $out;
  +
  +    // does cache support 'pages' ?
  +    if ($DBInfo->cache->is_arena('text')) {
  +      $body = $DBInfo->cache->fetch($this->name,'text');
  +    }
  +
  +    if (!$body) { // when page doesn't exist in db
  +      $body = $this->_get_raw_body();
  +      if (!$body) {
  +        $out="You have no permission to see this page.\n\n";
  +        $out.="See MoniWiki/AccessControl\n";
  +        return $out;
         }
  -      $this->fsize=filesize($this->filename);
  -      $body=fread($fp,$this->fsize);
  -      fclose($fp);
  -    } else { // use_dbcache
  -      $body = $this->dbcache->getBody($this->name);
  -      if (!$body) { // when page doesn't exist in db
  -        $body = $this->_get_raw_body();
  -        $this->dbcache->savePage($this);
  +      if ($DBInfo->cache->is_arena('text')) {
  +        $DBInfo->cache->update($this->name,'text',$body);
         }
       }
       $this->body = $body;
  @@ -1020,14 +1149,12 @@
   
     function _get_raw_body() {
       $fp=@fopen($this->filename,"r");
  -    if (!$fp) {
  -      $out=_("You have no permission to see this page.\n\n");
  -      $out.=_("See MoniWiki/AccessControl\n");
  -      return $out;
  -    }
  -    $size=filesize($this->filename);
  -    $this->body=fread($fp,$size);
  -    fclose($fp);
  +    if ($fp) {
  +      $size=filesize($this->filename);
  +      $this->body=fread($fp,$size);
  +      fclose($fp);
  +    } else
  +      return '';
   
       return $this->body;
     }
  @@ -1042,60 +1169,48 @@
     }
   
     function write($body) {
  -    #if ($body)
       $this->body=$body;
     }
   
  -  function get_rev($mtime="",$last=0) {
  -    if ($last==1) {
  -      $tag='head:';
  -      $opt='-h';
  -    } else $tag='revision';
  -    if ($mtime) {
  -      $date=gmdate('Y/m/d H:i:s',$mtime);
  -      if ($date) {
  -        $opt="-d\<'$date'";
  -        $tag='revision';
  -      }
  -    }
  -    $fp=popen("rlog -x,v/ $opt ".$this->filename,"r");
  -#   if (!$fp)
  -#      print "No older revisions available";
  -# XXX
  -    while (!feof($fp)) {
  -      $line=fgets($fp,1024);
  -      preg_match("/^$tag\s+([\d\.]+)$/",$line,$match);
  -      if ($match[1]) {
  -        $rev=$match[1];
  -        break;
  -      }
  -    }
  -    pclose($fp);
  +  function get_rev($mtime='',$last=0) {
  +    global $DBInfo;
  +
  +    $rev= $DBInfo->version->get_rev($this->name,$mtime,$last);
  +
       if ($rev > 1.0)
         return $rev;
       return '';
     }
   
     function get_info($rev='') {
  +    global $DBInfo;
  +
       $info=array('','','','','');
       if (!$rev)
         $rev=$this->get_rev('',1);
       if (!$rev) return $info;
  -    $fp=popen("rlog -x,v/ -r$rev ".$this->filename,"r");
  +    //$fp=popen("rlog -x,v/ -r$rev ".$this->filename,"r");
  +
  +    $fp= $DBInfo->version->rlog($this->name,$rev,$opt);
  +
       $state=0;
  -    while (!feof($fp)) {
  -      $line=fgets($fp,1024);
  -      if ($state == 0 and preg_match("/^date:\s.*$/",$line)) {
  -        $tmp=preg_replace("/date:\s(.*);\s+author:.*;\s+state:.*;/","\\1",rtrim($line));
  -        $tmp=explode('lines:',$tmp);
  -        $info[0]=$tmp[0];$info[1]=$tmp[1];
  -        $state=1;
  -      } else if ($state) {
  -        list($info[2],$info[3],$info[4])=explode(';;',$line,3);
  -        break;
  +    $info=array();
  +    if ($fp) {
  +      while (!feof($fp)) {
  +        $line=fgets($fp,1024);
  +        print $line;
  +        if ($state == 0 and preg_match("/^date:\s.*$/",$line)) {
  +          $tmp=preg_replace("/date:\s(.*);\s+author:.*;\s+state:.*;/","\\1",rtrim($line));
  +          $tmp=explode('lines:',$tmp);
  +          $info[0]=$tmp[0];$info[1]=$tmp[1];
  +          $state=1;
  +        } else if ($state) {
  +          list($info[2],$info[3],$info[4])=explode(';;',$line,3);
  +          break;
  +        }
         }
  +      pclose($fp);
       }
  -    pclose($fp);
       return $info;
     }
   }
  @@ -1186,7 +1301,7 @@
       #"(\?[A-Z]*[a-z0-9]+)";
       "(\?[A-Za-z0-9]+)";
   
  -    $this->cache= new Cache_text("pagelinks");
  +    $this->cache= new Cache_text($DBInfo);
     }
   
     function header($args) {
  @@ -1228,6 +1343,7 @@
         $this->menu_cat=$DBInfo->menu_cat;
         $this->menu_sep=$DBInfo->menu_sep;
       }
  +    $this->menu_extra=''; // xxx
   
       if (!$this->icons) {
         $this->icons=&$DBInfo->icons;
  @@ -1449,13 +1565,17 @@
   
     function store_pagelinks() {
       unset($this->pagelinks['TwinPages']);
  -    $this->cache->update($this->page->name,$this->pagelinks,$this->page->mtime());
  +    if ($this->cache->is_arena("pagelinks"))
  +      $this->cache->update($this->page->name,"pagelinks",
  +        $this->pagelinks,$this->page->mtime());
     }
   
     function get_pagelinks() {
  -    if ($this->cache->exists($this->page->name)) {
  -      $links=$this->cache->fetch($this->page->name);
  -      if ($links !== false) return $links;
  +    if ($this->cache->is_arena("pagelinks")) {
  +      if ($this->cache->exists($this->page->name,"pagelinks")) {
  +        $links=$this->cache->fetch($this->page->name,"pagelinks");
  +        if ($links !== false) return $links;
  +      }
       }
       if ($this->page->exists()) {
         $body=$this->page->get_raw_body();
  @@ -1883,8 +2003,8 @@
            }
         #} else if ($in_pre == 0 && preg_match("/{{{[^}]*$/",$line)) {
         } else if (!(strpos($line,"{{{")===false) and 
  -                 preg_match("/{{{[^}]*$/",$line)) {
  -         $p=strpos($line,"{{{");
  +                 preg_match("/{{{[^{}]*$/",$line)) {
  +         $p=strrpos($line,"{{{")-2;
            $len=strlen($line);
   
            $processor="";
  @@ -2123,8 +2243,13 @@
         
         switch($state) {
           case 1:
  -           preg_match("/^revision ([0-9\.]*)/",$line,$match);
  +           //print $line."<br>";
  +           preg_match("/^revision ([0-9]\.([0-9\.]+))\s*/",$line,$match);
              $rev=$match[1];
  +           if (preg_match("/\./",$match[2])) {
  +              $state=0;
  +              break;
  +           }
              $state=2;
              break;
           case 2:
  @@ -2148,13 +2273,14 @@
                } else if ($DBInfo->interwiki['Whois']) {
                  $ip="<a href='".$DBInfo->interwiki['Whois']."$ip'>$user</a>";
                }
  -           } else if ($DBInfo->interwiki['Whois'])
  +           } else if ($user and $DBInfo->interwiki['Whois'])
                $ip="<a href='".$DBInfo->interwiki['Whois']."$ip'>$ip</a>";
   
              $comment=stripslashes($dummy[2]);
              $state=4;
              break;
           case 4:
  +           if (!$rev) break;
              $rowspan=1;
              if ($comment) $rowspan=2;
              $out.="<tr>\n";
  @@ -2193,15 +2319,19 @@
     }
   
     function show_info() {
  +    global $DBInfo;
  +
  +    $fp= $DBInfo->version->rlog($this->page->name,'','','-zLT');
  +/*
       $fp=popen("rlog -zLT -x,v/ ".$this->page->filename,"r");
  -#   if (!$fp)
  -#      print "No older revisions available";
  -# XXX
  -    while (!feof($fp)) {
  -      $line=fgets($fp,1024);
  -      $out .= $line;
  +*/
  +    if ($fp) {
  +      while (!feof($fp)) {
  +        $line=fgets($fp,1024);
  +        $out .= $line;
  +      }
  +      pclose($fp);
       }
  -    pclose($fp);
   
       $msg=_("No older revisions available");
       if (!$out)
  @@ -2355,13 +2485,17 @@
         if ($options['nomsg']) return '';
         return "<h2>$msg</h2>";
       }
  -    $fp=popen("rcsdiff -x,v/ -u $option ".$this->page->filename,'r');
  +    //$fp=popen("rcsdiff -x,v/ -u $option ".$this->page->filename,'r');
  +    $fp=$DBInfo->version->diff($this->page->name,$option);
       if (!$fp)
         return '';
  -    if (!feof($fp)) {
  -      # trashing two first line
  -      $line=fgets($fp,1024);
  +    while (!feof($fp)) {
  +      # trashing first two lines
         $line=fgets($fp,1024);
  +      if (preg_match('/^--- /',$line)) {
  +        $line=fgets($fp,1024);
  +        break;
  +      }
       }
       while (!feof($fp)) {
         $line=fgets($fp,1024);
  @@ -2560,6 +2694,8 @@
         foreach ($this->actions as $action)
           $menu.= $this->menu_sep.$this->link_to("?action=$action",_($action));
       }
  +
  +    $menu.= $this->menu_extra;
       return $this->menu_bra.$menu.$this->menu_cat;
     }
   
  @@ -3015,26 +3151,33 @@
       $formatter->send_title("","",$options);
   
       if ($formatter->pi['#title'] and $DB->use_titlecache) {
  -      $tcache=new Cache_text('title');
  -      if (!$tcache->exists($pagename) or $_GET['update_title'])
  -        $tcache->update($pagename,$formatter->pi['#title']);
  +      if ($this->cache->is_arena("title"))
  +        if (!$this->cache->exists($pagename,"title") or $_GET['update_title'])
  +          $this->cache->update($pagename,"title",$formatter->pi['#title']);
       }
       $formatter->write("<div id='wikiContent'>\n");
       $options['timer']->Check("init");
  -#    $cache=new Cache_text('pages');
  -#    if ($cache->exists($pagename)) {
  -#      print $cache->fetch($pagename);
  -#    } else {
  -#      ob_start();
  +
  +    // caching rendering results
  +    if (!$DB->cache->is_arena('html')) {
         $formatter->send_page();
  -      if ($DB->use_referer)
  -        log_referer($_SERVER['HTTP_REFERER'],$pagename);
         flush();
  -#      $out=ob_get_contents();
  -#      ob_end_clean();
  -#      print $out;
  -#      $cache->update($pagename,$out);
  -#    }
  +    } else {
  +      if ($DB->cache->exists($pagename,'html') and !$_GET['refresh']) {
  +        print $DB->cache->fetch($pagename,'html');
  +        $formatter->menu_extra.=$formatter->menu_sep.
  +          $formatter->link_to("?refresh=1",_("Refresh"));
  +      } else {
  +        ob_start();
  +        $formatter->send_page();
  +        $out=ob_get_contents();
  +        ob_end_clean();
  +        print $out;
  +        $DB->cache->update($pagename,'html',$out);
  +      }
  +    }
  +    if ($DB->use_referer)
  +      log_referer($_SERVER['HTTP_REFERER'],$pagename);
       
       $options['timer']->Check("send_page");
       $formatter->write("</div>\n");
  
  
  


wkpark      04/01/01 23:14:29

  Modified:    .        Tag: moniwiki-1_1_cvs_db config.php.default
  Log:
  add a CVS version options.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.7.2.1.2.1 +12 -6     moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.7.2.1
  retrieving revision 1.7.2.1.2.1
  diff -u -r1.7.2.1 -r1.7.2.1.2.1
  --- config.php.default	30 Nov 2003 15:54:26 -0000	1.7.2.1
  +++ config.php.default	1 Jan 2004 14:14:27 -0000	1.7.2.1.2.1
  @@ -38,12 +38,18 @@
   $use_sistersites=1;
   $use_twinpages=1;
   $use_trackback=0;
  -$use_dbcache=0;
  -# db_type  0 - mysql 1 - postgresql 2 - oracle
  -$db_type=0;
  -$db_user='moniwiki';
  -$db_password='';
  -$db_name='moniwiki';
  +
  +# CVS versioning
  +#$version_class='CVS';
  +#$cvs_root='/home/staff/wkpark/CVS';
  +
  +# SQL DB Cache
  +#$cache_class='mysql';
  +#$db_user='mysql';
  +#$db_host='localhost';
  +#$db_pass='';
  +#$db_name='MONIWIKI';
  +
   #$nonexists='fancy_nonexists';
   #$use_titlecache=0;
   #$security_class="needtologin";
  
  
  


wkpark      04/01/01 23:17:00

  Added:       lib      Tag: moniwiki-1_1_cvs_db dbcache.php
  Log:
  split dblib.php into a dbcache.php and several cache plugins.
  (only plugin/cache/mysql.php is splitted now)
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +98 -0     moniwiki/lib/Attic/dbcache.php
  
  
  
  


wkpark      04/01/02 13:25:49

  Modified:    .        monisetup.php
  Log:
  fixed register_globals=off related bug.
  
  Revision  Changes    Path
  1.10      +15 -10    moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- monisetup.php	16 Jul 2003 23:27:13 -0000	1.9
  +++ monisetup.php	2 Jan 2004 04:25:48 -0000	1.10
  @@ -1,7 +1,7 @@
   <?
   // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.8 2003/07/09 22:14:57 wkpark Exp wkpark $
  +// $Id: monisetup.php,v 1.9 2003/07/16 23:27:13 wkpark Exp $
   
   class MoniConfig {
     function MoniConfig($configfile="config.php") {
  @@ -224,7 +224,7 @@
     $num=sizeof($pages);
   
     #
  -  $SystemPages="FrontPage|RecentChanges|TitleIndex|FindPage|".
  +  $SystemPages="FrontPage|RecentChanges|TitleIndex|FindPage|WordIndex".
     "FortuneCookies|Pages$|".
     "SystemPages|TwinPages|WikiName|SystemInfo|UserPreferences|".
     "InterMap|IsbnMap|WikiSandBox|SandBox|UploadFile|UploadedFiles|".
  @@ -332,24 +332,27 @@
   
   $config=$_POST['config'];
   $update=$_POST['update'];
  +$action=$_GET['action'] or $_POST['action'];
  +$newpasswd=$_POST['newpasswd'];
  +$oldpasswd=$_POST['oldpasswd'];
   
   if ($_SERVER['REQUEST_METHOD']=="POST" && $config) {
     $conf=$Config->_getFormConfig($config);
     $rawconfig=$Config->_getFormConfig($config,1);
     $config=$conf;
   
  -  if ($Config->config[admin_passwd]) {
  -    if (crypt($oldpasswd,$Config->config[admin_passwd]) != 
  -      $Config->config[admin_passwd]) {
  +  if ($Config->config['admin_passwd']) {
  +    if (crypt($oldpasswd,$Config->config['admin_passwd']) != 
  +      $Config->config['admin_passwd']) {
           print "<h3><font color='red'>Invalid password error !!!</font></h3>\n";
           print "If you can't remember your admin password, delete password entry in the 'config.php' and restart 'monisetup'<br />\n";
           $invalid=1;
       } else {
  -        $rawconfig[admin_passwd]=$newpasswd;
  +        $rawconfig['admin_passwd']=$newpasswd;
       }
     } else {
       if ($newpasswd)
  -       $rawconfig[admin_passwd]=$newpasswd;
  +       $rawconfig['admin_passwd']=$newpasswd;
     }
   
     if ($update) {
  @@ -413,6 +416,8 @@
   }
   
   if ($_SERVER['REQUEST_METHOD']=="POST") {
  +  $seeds=$_POST['seeds'];
  +  $action=$_POST['action'];
     if ($action=='sow_seed' && $seeds) {
       sow_wikiseed($config,'wikiseed',$seeds);
       print "<h2>WikiSeeds are sowed successfully</h2>";
  @@ -440,7 +445,7 @@
     print "</table>\n";
   
     print "<h3>Change your settings</h3>\n";
  -  if (!$config[admin_passwd])
  +  if (!$config['admin_passwd'])
     print "<h3><font color='red'>WARN: You have to enter your Admin Password</h3>\n";
     else if (file_exists('config.php') && !file_exists($config[data_dir]."/text/RecentChanges")) {
       print "<h3><font color='red'>WARN: You have no WikiSeed on your $config[sitename]</font></h3>\n";
  @@ -456,7 +461,7 @@
       }
     }
   
  -  if (!$config[admin_passwd]) {
  +  if (!$config['admin_passwd']) {
       print "<tr><td><b>\$admin_passwd</b></td>";
       print "<td><input type='password' name='newpasswd' size='30'></td></tr>\n";
     } else  {
  @@ -467,7 +472,7 @@
     }
     print "<tr><td colspan=2>";
     print "<input type='submit' value='preview'> ";
  -  if (!$config[admin_passwd])
  +  if (!$config['admin_passwd'])
     print "<input type='submit' name='update' value='update'></td></tr>\n";
     else
     print "<input type='submit' name='update' value='update'></td></tr>\n";
  
  
  


verotas     04/01/02 19:51:27

  Modified:    .        Tag: moniwiki-1_1 monisetup.php
  Log:
  redo changes between r1.9 and r1.10
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.9.2.11  +10 -9     moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.9.2.10
  retrieving revision 1.9.2.11
  diff -u -r1.9.2.10 -r1.9.2.11
  --- monisetup.php	1 Jan 2004 13:21:00 -0000	1.9.2.10
  +++ monisetup.php	2 Jan 2004 10:51:26 -0000	1.9.2.11
  @@ -157,7 +157,7 @@
     }
   }
   
  -function check_dir($config) { //FIXME: refactor w/ monisetup.sh
  +function check_dir($config) { //XXX: refactor w/ monisetup.sh
     if (!is_writable($config['data_dir'])) {
       if (02000 & fileperms(".")) { # check sgid
         $datadir_perm = 0775;
  @@ -292,7 +292,7 @@
       }
     }
   
  -  if (!$config[admin_passwd]) {
  +  if (!$config['admin_passwd']) {
       print "<tr><td><b>\$admin_passwd</b></td>";
       print "<td colspan='2'><input type='password' name='newpasswd' size='40'></td></tr>\n";
     } else  {
  @@ -344,7 +344,7 @@
     $config=$Config->config;
     $rawconfig=$Config->rawconfig;
   
  -  if (!$config[admin_passwd]) {
  +  if (!$config['admin_passwd']) {
       print_warn("You have to enter your admin_password");
     }
     show_config_edit_form($config, $rawconfig);
  @@ -358,7 +358,7 @@
     $config=$Config->config;
     $rawconfig=$Config->rawconfig;
   
  -  $passwd = $Config->config[admin_passwd];
  +  $passwd = $Config->config['admin_passwd'];
     $oldpasswd = $_POST['oldpasswd'];
     $newpasswd = $_POST['newpasswd'];
     $is_valid_passwd = TRUE;
  @@ -375,10 +375,10 @@
     if ($is_valid_passwd) {
       if ($newpasswd) {
         //print_debug("setting newpasswd = '$newpasswd'");
  -      $rawconfig[admin_passwd] = $newpasswd;
  +      $rawconfig['admin_passwd'] = $newpasswd;
       } else {
         //print_debug("setting oldpasswd = '$oldpasswd'");
  -      $rawconfig[admin_passwd] = $oldpasswd;
  +      $rawconfig['admin_passwd'] = $oldpasswd;
       }
     }
   
  @@ -432,7 +432,7 @@
   
     $num=sizeof($pages);
   
  -  $SystemPages="FrontPage|RecentChanges|TitleIndex|FindPage|".
  +  $SystemPages="FrontPage|RecentChanges|TitleIndex|WordIndex|FindPage|".
     "FortuneCookies|Pages$|".
     "SystemPages|TwinPages|WikiName|SystemInfo|UserPreferences|".
     "InterMap|IsbnMap|WikiSandBox|SandBox|UploadFile|UploadedFiles|".
  @@ -591,8 +591,9 @@
   // main function
   //
   
  -function setup_main($action)
  +function setup_main()
   {
  +  $action = $_GET['action'] or $_POST['action'];
     if (!$action) {
       $action = "show";
     }
  @@ -623,7 +624,7 @@
     return;
   }
   
  -setup_main($action);
  +setup_main();
   
   // vim:ts=8:sts=2:sw=2:et
   ?>
  
  
  


wkpark      04/01/03 11:58:39

  Modified:    .        wiki.php wikilib.php
  Log:
  add [../Page] syntax supported by the MoinMoin 1.1
  fixed '%' related bug in a pagename
  
  Revision  Changes    Path
  1.126     +36 -13    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.125
  retrieving revision 1.126
  diff -u -r1.125 -r1.126
  --- wiki.php	30 Dec 2003 23:18:20 -0000	1.125
  +++ wiki.php	3 Jan 2004 02:58:38 -0000	1.126
  @@ -1522,8 +1522,23 @@
       } else if (!$nogroup and $this->group and !strpos($page,'~')) {
         if ($page[0]=='/') $page=substr($page,1);
         else $page=$this->group.$page;
  -    } else if ($page[0]=='/') # SubPage
  +    } else if ($page[0]=='/') { # SubPage
         $page=$this->page->name.$page;
  +    } else if (preg_match('/^(\.{1,2})\//',$page,$match)) {
  +      if ($match[1] == '..') {
  +        $pos=strrpos($this->page->name,"/");
  +        if ($pos > 0) $upper=substr($this->page->name,0,$pos);
  +        if ($upper) {
  +          $page=substr($page,2);
  +          if ($page == '/') $page=$upper;
  +          else $page=$upper.$page;
  +        }
  +      } else {
  +        $page=substr($page,1);
  +        if ($page == '/') $page='';
  +        $page=$this->page->name.$page;
  +      }
  +    }
   
       $page=urldecode($page); # XXX
       $url=$this->link_url(_rawurlencode($page)); # XXX
  @@ -1578,6 +1593,10 @@
       return "<a class='nonexistent' href='$url'>?</a>$word";
     }
   
  +  function word_nolink($word,$url) {
  +    return "$word";
  +  }
  +
     function word_fancy_nonexists($word,$url) {
       global $DBInfo;
       #if (preg_match("/^[a-zA-Z0-9\/~]/",$word))
  @@ -2850,6 +2869,21 @@
     return array($languages[0][0]);
   }
   
  +function set_locale($lang,$charset='') {
  +  if ($lang == 'auto') {
  +    # get broswer's settings
  +    $langs=get_locales();
  +    $lang= $langs[0];
  +
  +    $charset= strtoupper($charset);
  +    if (function_exists('nl_langinfo'))
  +      $server_charset= nl_langinfo(CODESET);
  +    if ($charset == 'UTF-8' or $charset != $server_charset)
  +      $lang.=".".$charset;
  +  }
  +  return $lang;
  +}
  +
   # get the pagename
   function get_pagename() {
     global $DBInfo;
  @@ -2932,18 +2966,7 @@
   $options['timer']=&$timing;
   $options['timer']->Check("load");
   
  -if ($DBInfo->lang == 'auto') {
  -  # get broswer's settings
  -  $langs=get_locales();
  -  $lang= $langs[0];
  -
  -  $charset= strtoupper($DBInfo->charset);
  -  if (function_exists('nl_langinfo'))
  -    $server_charset= nl_langinfo(CODESET);
  -  if ($charset == 'UTF-8' or $charset != $server_charset)
  -    $lang.=".".$charset;
  -} else
  -  $lang= $DBInfo->lang;
  +$lang= set_locale($DBInfo->lang,$DBInfo->charset);
   
   if (isset($locale)) {
     $lf="locale/".$lang."/LC_MESSAGES/moniwiki.php";
  
  
  
  1.97      +3 -1      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.96
  retrieving revision 1.97
  diff -u -r1.96 -r1.97
  --- wikilib.php	30 Dec 2003 23:18:20 -0000	1.96
  +++ wikilib.php	3 Jan 2004 02:58:38 -0000	1.97
  @@ -440,7 +440,7 @@
     $form.= "<a id='editor' name='editor' />\n";
   
     if ($options['page'])
  -    $previewurl=$formatter->link_url(_urlencode($options['page']),'#preview');
  +    $previewurl=$formatter->link_url(_rawurlencode($options['page']),'#preview');
     else
       $previewurl=$formatter->link_url($formatter->page->urlname,'#preview');
   
  @@ -586,6 +586,8 @@
     
     $page = $DBInfo->getPage($options['page']);
   
  +  print $options['value'];
  +  print $options['page'];
     if (stripslashes($options['value']) == $options['page']) {
       $DBInfo->deletePage($page,$options);
       $title = sprintf(_("\"%s\" is deleted !"), $page->name);
  
  
  


wkpark      04/01/03 12:01:24

  Modified:    plugin/processor vim.php
  Log:
  support caching
  
  Revision  Changes    Path
  1.9       +23 -2     moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- vim.php	10 Nov 2003 13:23:52 -0000	1.8
  +++ vim.php	3 Jan 2004 03:01:23 -0000	1.9
  @@ -6,9 +6,12 @@
   // Usage: {{{#!vim sh|c|sh|.. [number]
   // some codes
   // }}}
  -// $Id: vim.php,v 1.7 2003/11/07 08:52:01 wkpark Exp $
  +// $Id: vim.php,v 1.8 2003/11/10 13:23:52 advanced Exp $
   
   function processor_vim($formatter,$value) {
  +  global $DBInfo;
  +  $cache_dir=$DBInfo->upload_dir."/VimProcessor";
  +
     $syntax=array("php","c","python","jsp","sh","cpp",
             "java","ruby","forth","fortran","perl",
             "haskell","lisp","st","objc","tcl","lua",
  @@ -24,6 +27,21 @@
       list($tag,$type,$extra)=explode(" ",$line,3);
     $src=$value;
   
  +  $uniq=md5($src);
  +  if (!file_exists($cache_dir)) {
  +    umask(000);
  +    mkdir($cache_dir,0777);
  +    umask(022);
  +  }
  +
  +  if (file_exists($cache_dir."/$uniq".".html") && !$formatter->refresh) {
  +    $out = "";
  +    $fp=fopen($cache_dir."/$uniq".".html","r");
  +    while (!feof($fp)) $out .= fread($fp, 1024);
  +    return $out;
  +    #return join('',file($cache_dir."/$uniq".".html"));
  +  }
  +
     # comment out the following two lines to freely use any syntaxes.
     if (!in_array($type,$syntax)) 
       return "<pre class='code'>\n$line\n$src\n</pre>\n";
  @@ -63,7 +81,7 @@
   
     while($s = fgets($fp, 1024)) {
       $out.= $s;
  -  };
  +  }
   
     pclose($fp);
     unlink($tmpf);
  @@ -71,6 +89,9 @@
     $out=preg_replace("/<title>.*title>|<\/?head>|<\/?html>|<meta.*>|<\/?body.*>/","", $out);
     $out=preg_replace("/<pre>/","<pre class='wikiSyntax' style='font-family:fixed;color:#c0c0c0;background-color:black'>", $out);
   #  $out=preg_replace("/<\/pre>/","</span></pre>", $out);
  +  $fp=fopen($cache_dir."/$uniq".".html","w");
  +  fwrite($fp,$out);
  +  fclose($fp);
   
     return $out;
   }
  
  
  


wkpark      04/01/03 23:15:16

  Modified:    data     metaparse.py
  Log:
  added phpwiki support by hey (#300163)
  
  Revision  Changes    Path
  1.4       +3 -1      moniwiki/data/metaparse.py
  
  Index: metaparse.py
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/data/metaparse.py,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- metaparse.py	17 Aug 2003 13:49:24 -0000	1.3
  +++ metaparse.py	3 Jan 2004 14:15:15 -0000	1.4
  @@ -1,5 +1,5 @@
   #!/usr/bin/python
  -# $Id: metaparse.py,v 1.2 2003/08/11 05:18:05 wkpark Exp $
  +# $Id: metaparse.py,v 1.3 2003/08/17 13:49:24 wkpark Exp $
   # python version metaparse.py by wkpark@kldp.org
   
   import string,os,sys,re,urllib
  @@ -61,6 +61,8 @@
            NO_CUT_REGEX, DEFAULT_MATCH_REGEX),
         "wikiX":
           ("AllPages", NO_CUT_REGEX, '\?display=(.*?)"'),
  +      "PhpWiki":
  +        ("AllPages", NO_CUT_REGEX, 'class="wiki">(.*?)<'),
         "tavi":
           ("action=find", "<div id=\"body\">(.*?)</div>", '\?page=([^"]+)"'),
         "PediaIndex":
  
  
  


wkpark      04/01/03 23:26:51

  Modified:    .        monisetup.php
  Log:
  fixed invalid chmod message (#300112)
  
  Revision  Changes    Path
  1.11      +15 -14    moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- monisetup.php	2 Jan 2004 04:25:48 -0000	1.10
  +++ monisetup.php	3 Jan 2004 14:26:50 -0000	1.11
  @@ -117,12 +117,6 @@
   
   function checkConfig($config) {
     umask(011);
  -
  -  # check sgid
  -  $datadir_perm=sprintf("%o",07777 & fileperms("."));
  -
  -  if (02000 & fileperms(".")) $PERM=0775;
  -  else $PERM=0777;
     $dir=getcwd();
   
     if (!file_exists("config.php") && !is_writable(".")) {
  @@ -139,17 +133,24 @@
     }
   
     if (file_exists("config.php")) {
  -    if (!$fatal && !is_writable($config['data_dir'])) {
  -       print "<h3><font color=red>FATAL: $config[data_dir] directory is not writable</font></h3>\n";
  -       print "<h4>Please execute the following command</h4>";
  -       print "<pre class='console'>\n".
  -             "<font color='green'>$</font> chmod $datadir_perm $config[data_dir]\n</pre>\n";
  -       exit;
  +    if (!is_writable($config['data_dir'])) {
  +      if (02000 & fileperms(".")) # check sgid
  +        $datadir_perm = 0775;
  +      else
  +        $datadir_perm = 0777;
  +      $datadir_perm = decoct($datadir_perm);
  +      print "<h3><font color=red>FATAL: $config[data_dir] directory is not writable</font></h3>\n";
  +      print "<h4>Please execute the following command</h4>";
  +      print "<pre class='console'>\n".
  +            "<font color='green'>$</font> chmod $datadir_perm $config[data_dir]\n</pre>\n";
  +      exit;
       }
   
       $data_sub_dir=array("cache","user","text");
  -    if (02000 & fileperms($config['data_dir'])) $DPERM=0775;
  -    else $DPERM=0777;
  +    if (02000 & fileperms($config['data_dir']))
  +      $DPERM=0775;
  +    else
  +      $DPERM=0777;
   
       foreach($data_sub_dir as $dir) {
          if (!file_exists("$config[data_dir]/$dir")) {
  
  
  


wkpark      04/01/06 07:01:19

  Modified:    .        wikilib.php
  Log:
  improved macro_titleindex()
  fixed setCookie() #300174 reported by ai
  fixed macro_randomquote #300168 reported by wafe
  
  Revision  Changes    Path
  1.98      +10 -10    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.97
  retrieving revision 1.98
  diff -u -r1.97 -r1.98
  --- wikilib.php	3 Jan 2004 02:58:38 -0000	1.97
  +++ wikilib.php	5 Jan 2004 22:01:17 -0000	1.98
  @@ -237,7 +237,7 @@
        $this->ticket=$ticket;
        # set the fake cookie
        $_COOKIE['MONI_ID']=$ticket.'.'.$this->id;
  -     return "Set-Cookie: MONI_ID=".$ticket.'.'.$this->id.'; expires='.date('l, d-M-Y',time()+60*60*24*30).'; Path='.get_scriptname();
  +     return "Set-Cookie: MONI_ID=".$ticket.'.'.$this->id.'; expires='.gmdate('l, d-M-Y',time()+60*60*24*30).'; Path='.get_scriptname();
     }
   
     function unsetCookie() {
  @@ -429,7 +429,7 @@
     if (!$formatter->page->exists()) {
       $options['linkto']="?action=edit&amp;template=";
       $form = '<br />'._("Use one of the following templates as an initial release :\n");
  -    $form.= macro_TitleSearch($formatter,".*Template",$options);
  +    $form.= macro_TitleSearch($formatter,$DBInfo->template_regex,$options);
       $form.= _("To create your own templates, add a page with a 'Template' suffix.\n"."<br />\n");
     }
   
  @@ -1000,7 +1000,7 @@
   
     if (!($count=sizeof($quotes))) return '';
   
  -  $quote=$quotes[rand(1,$count)];
  +  $quote=$quotes[rand(0,$count-1)];
   
     $quote=str_replace("<","&lt;",$quote);
     $quote=preg_replace($formatter->baserule,$formatter->baserepl,$quote);
  @@ -1152,13 +1152,14 @@
        return strtoupper($name[0]);
     }
     $utf="";
  -  if (function_exists ("iconv")) {
  +  $use_utf=strtolower($DBInfo->charset)=='utf-8';
  +  if (!$use_utf and function_exists ("iconv")) {
       # XXX php 4.1.x did not support unicode sting.
       $utf=iconv($DBInfo->charset,'UTF-8',$name);
       $name=$utf;
     }
   
  -  if ($utf or $DBInfo->charset=='UTF-8') {
  +  if ($utf or $use_utf) {
       if ((ord($name[0]) & 0xF0) == 0xE0) { # Now only 3-byte UTF-8 supported
          #$uni1=((ord($name[0]) & 0x0f) <<4) | ((ord($name[1]) & 0x7f) >>2);
          $uni1=((ord($name[0]) & 0x0f) <<4) | (($name[1] & 0x7f) >>2);
  @@ -1169,7 +1170,7 @@
          if ($uni>=0xac00 && $uni<=0xd7a3) {
            $ukey=0xac00 + (int)(($uni - 0xac00) / 588) * 588;
            $ukey=toutf8($ukey);
  -         if ($utf)
  +         if ($utf and !$use_utf)
              return iconv('UTF-8',$DBInfo->charset,$ukey);
            return $ukey;
          }
  @@ -1179,11 +1180,10 @@
       if (preg_match('/[a-z0-9]/i',$name[0])) {
         return strtoupper($name[0]);
       }
  -    # php does not have iconv() EUC-KR assumed
  -    # (from NoSmoke moinmoin)
  +    # if php does not support iconv(), EUC-KR assumed
       if (strtolower($DBInfo->charset) == 'euc-kr') {
  -      $korean=array('','','','','','','','',
  -                    '','','ī','Ÿ','','',"\xca");
  +      $korean=array('','','','','','','','','','','','',
  +                    '','¥','','ī','Ÿ','','',"\xca");
         $lastPosition='~';
   
         $letter=substr($name,0,2);
  
  
  


wkpark      04/01/06 07:04:45

  Modified:    plugin   Blog.php
  Log:
  fixed preview bug with the blog action #300170 reported by wafe
  fixed #300171 reported by iolo
  
  Revision  Changes    Path
  1.14      +4 -3      moniwiki/plugin/Blog.php
  
  Index: Blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Blog.php,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- Blog.php	19 Sep 2003 17:34:42 -0000	1.13
  +++ Blog.php	5 Jan 2004 22:04:43 -0000	1.14
  @@ -5,7 +5,7 @@
   //
   // Usage: ?action=Blog
   //
  -// $Id: Blog.php,v 1.12 2003/08/27 14:32:08 wkpark Exp $
  +// $Id: Blog.php,v 1.13 2003/09/19 17:34:42 wkpark Exp $
   // vim:et:ts=2:
   
   function updateBlogList($formatter) {
  @@ -69,12 +69,13 @@
       $savetext=stripslashes($options['savetext']);
       $savetext=str_replace("\r","",$savetext);
       $savetext=str_replace("----\n","-''''''---\n",$savetext);
  -    $savetext=str_replace("<","&lt;",$savetext);
  +    #$savetext=str_replace("<","&lt;",$savetext);
     }
  +  if ($options['title'])
  +    $options['title']=stripslashes($options['title']);
     if (!$options['button_preview'] && $savetext) {
       $savetext=preg_replace("/(?<!\\\\)}}}/","\}}}",$savetext);
   
  -    $options['title']=stripslashes($options['title']);
       $url=$formatter->link_tag($formatter->page->urlname,"",$options['page']);
       $options['msg']=sprintf(_("\"%s\" is updated"),$url);
   
  
  
  


wkpark      04/01/06 07:07:18

  Modified:    plugin   userform.php
  Log:
  fixed #300167 Blog related bug with the calendar macro. reported by mithrandir
  
  Revision  Changes    Path
  1.6       +4 -1      moniwiki/plugin/userform.php
  
  Index: userform.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/userform.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- userform.php	19 Dec 2003 13:50:47 -0000	1.5
  +++ userform.php	5 Jan 2004 22:07:16 -0000	1.6
  @@ -4,7 +4,7 @@
   // a userform action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: userform.php,v 1.4 2003/11/25 10:28:14 wkpark Exp $
  +// $Id: userform.php,v 1.5 2003/12/19 13:50:47 wkpark Exp $
   
   function do_userform($formatter,$options) {
     global $DBInfo;
  @@ -50,6 +50,7 @@
         $user=$userdb->getUser($id);
         if ($user->checkPasswd($options['password'])=== true) {
           $options['msg'] = sprintf(_("Successfully login as '%s'"),$id);
  +        $options['id']=$user->id;
           $formatter->header($user->setCookie());
   
           $userdb->saveUser($user); # XXX
  @@ -93,6 +94,7 @@
   
              if ($udb->isNotUser($user)) {
                $title= _("Successfully added!");
  +             $options['id']=$user->id;
                $ticket=md5(time().$user->id.$options['email']);
                $user->info['eticket']=$ticket.".".$options['email'];
                $formatter->header($user->setCookie());
  @@ -110,6 +112,7 @@
                $user=$udb->getUser($user->id);
                if ($user->checkPasswd($options['password'])=== true) {
                  $options['msg'].= sprintf(_("Successfully login as '%s'"),$id);
  +               $options['id']=$user->id;
                  $formatter->header($user->setCookie());
                  $udb->saveUser($user); # XXX
                } else {
  
  
  


wkpark      04/01/06 11:17:54

  Added:       plugin   BabelFish.php
  Removed:     plugin   Admin.php Board.php PostPage.php
  Log:
  add new macro_BabelFish.php
  delete not fully implemented macros
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/BabelFish.php
  
  Index: BabelFish.php
  ===================================================================
  <?php
  // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a BabelFish plugin for the MoniWiki
  //
  // Usage: [[BabelFish]]
  //
  // $Id: Test.php,v 1.2 2003/08/15 21:30:36 wkpark Exp $
  
  #<script language="JavaScript1.2" src="http://www.altavista.com/r?entr"></script>
  function macro_BabelFish($formatter,$value) {
    $langs=array('ko','ja','en','de','fr','esp','por');
    $supported=array('ko_en','en_ko','en_de','en_fr','ko_jp','jp_ko');
    $msg=_("BabelFish Translation");
  
    if (!$value)
      return <<<EOF
  <script language="JavaScript1.2" src="http://www.altavista.com/r?entr"></script>
  EOF;
  
    list($from,$to)=split('[ ,]',preg_replace("/\s+/",' ',strtolower($value)),2);
    if (!in_array($from,$langs))
      $from='en';
    if (!in_array($to,$langs))
      $from='en';
    if ($from and $to and $from != $to)
      $msg=sprintf(_("Translate %s to %s"),$from,$to);
  
    $lp=$from."_".$to;
    $URL=qualifiedUrl($formatter->link_url(_rawurlencode($formatter->page->name)));
    $TR="http://babelfish.altavista.com/babelfish/urlload?tt=url";
    if (in_array($lp,$supported)) {
      $TR.="&lp=$lp";
    } else {
      $lp=$from.'_en';
      $URL=urlencode($TR."&lp=$lp&url=".$URL);
      $lp='en_'.$to;
      $TR.="&lp=$lp";
    }
    return <<<EOF
  <img src='$formatter->imgs_dir/flag-$from.png' /> <a href="$TR&url=$URL"><img border='0' src='$formatter->imgs_dir/fishloop.gif' title='$msg' alt='BabelFish@altavista' /></a><img src='$formatter->imgs_dir/flag-$to.png' />
  EOF;
  
  }
  
  function do_babelfish($formatter,$options) {
    $formatter->send_header();
    $formatter->send_title();
    $ret= macro_BabelFish($formatter,$options['value']);
    $formatter->send_page($ret);
    $formatter->send_footer("",$options);
    return;
  }
  
  ?>
  
  
  


wkpark      04/01/06 22:13:30

  Modified:    .        wiki.php
  Log:
  fixed backquote syntax
  fixed the syntax of a single braketted wikiname to supress warning
  fixed rendering bug for 'auto_linebreak' option with '----' (#300177)
  fixed #300175 to list correct template pages with the $template_regex
  fixed #300166 to make the moniwiki google friendly
  
  Revision  Changes    Path
  1.127     +8 -5      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.126
  retrieving revision 1.127
  diff -u -r1.126 -r1.127
  --- wiki.php	3 Jan 2004 02:58:38 -0000	1.126
  +++ wiki.php	6 Jan 2004 13:13:29 -0000	1.127
  @@ -14,7 +14,7 @@
   // $Id: wiki.php,v 1.124 2003/12/19 13:48:17 wkpark Exp $
   //
   $_revision = substr('$Revision: 1.124 $',1,-1);
  -$_release = '1.0.6';
  +$_release = '1.0.7';
   
   #ob_start("ob_gzhandler");
   
  @@ -1160,7 +1160,7 @@
       $this->set_theme($options['theme']);
   
       #$this->baserule=array("/<([^\s][^>]*)>/","/`([^`]*)`/",
  -    $this->baserule=array("/<([^\s<>])/","/`([^`']+)'/","/(?<!`)`([^`]*)`/",
  +    $this->baserule=array("/<([^\s<>])/","/`([^`' ]+)'/","/(?<!`)`([^`]*)`/",
                        "/'''([^']*)'''/","/(?<!')'''(.*)'''(?!')/",
                        "/''([^']*)''/","/(?<!')''(.*)''(?!')/",
                        "/\^([^ \^]+)\^(?:\s)/","/,,([^ ,]+),,(?:\s)/",
  @@ -1206,7 +1206,7 @@
       # protect WikiName rule !WikiName
       "(?<![a-z])\!?(?:\/?[A-Z]([A-Z]+[0-9a-z]|[0-9a-z]+[A-Z])[0-9a-zA-Z]*)+\b|".
       # single bracketed name [Hello World]
  -    "(?<!\[)\!?\[([^\[:,<\s][^\[:,>]+)\](?!\])|".
  +    "(?<!\[)\!?\[([^\[:,<\s][^\[:,>]{1,255})\](?!\])|".
       # bracketed with double quotes ["Hello World"]
       "(?<!\[)\!?\[\\\"([^\\\"]+)\\\"\](?!\])|".
     # "(?<!\[)\[\\\"([^\[:,]+)\\\"\](?!\])|".
  @@ -1979,6 +1979,8 @@
         # rules
         #$line=preg_replace("/^-{4,}/","<hr />\n",$line);
   
  +      if ($DBInfo->auto_linebreak and preg_match('/^-{4,}/',$line))
  +        $this->nobr=1; // XXX
         $line=preg_replace($this->baserule,$this->baserepl,$line);
         #if ($in_p and ($in_pre==1 or $in_li)) $line=$this->_check_p().$line;
   
  @@ -3047,7 +3049,7 @@
           print "<hr />\n$button";
           print _(" or alternativly, use one of these templates:\n");
           $options['linkto']="?action=edit&amp;template=";
  -        print macro_TitleSearch($formatter,".*Template",$options);
  +        print macro_TitleSearch($formatter,$DBInfo->template_regex,$options);
           print _("To create your own templates, add a page with a 'Template' suffix.\n");
         }
   
  @@ -3102,6 +3104,7 @@
     }
   
     if ($action) {
  +    $DBInfo->metatags='<meta name="ROBOTS" content="NOINDEX,NOFOLLOW" />';
   
       if (!$DBInfo->security->is_allowed($action,&$options)) {
         $msg=sprintf(_("You are not allowed to '%s'"),$action);
  @@ -3153,5 +3156,5 @@
   
   //$pagename=get_pagename();
   //render($pagename,$options);
  -// vim:et:ts=2:
  +// vim:et:sts=2:
   ?>
  
  
  


wkpark      04/01/07 08:34:36

  Added:       plugin   MailTo.php Trail.php
  Log:
  add new macro 'Trail', 'MailTo'
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/MailTo.php
  
  Index: MailTo.php
  ===================================================================
  <?php
  // Copyright 2004 by Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a MailTo plugin for the MoniWiki
  //
  // Usage: [[MailTo(Hello I DOT HATE hello DOT SPAM org)]]
  //
  // $Id: Test.php,v 1.2 2003/08/15 21:30:36 wkpark Exp $
  
  function macro_MailTo($formatter,$value) {
    $new=preg_replace(
      array("/(?<=\s)DOT(?=\s)/","/(?<=\s)AT(?=\s)/",
            "/(?<=\s)DASH(?=\s)/","/(?<=\s)[A-Z]+(?=\s)/"),
      array(".","@","-",""),
      $value);
  
    $new=preg_replace(array("/\s/","/\s[A-Z]+\s/"),"",$new);
  
    return $formatter->link_repl('mailto:'.$new);
  }
  
  // vim:et:ts=2:
  ?>
  
  
  
  1.1                  moniwiki/plugin/Trail.php
  
  Index: Trail.php
  ===================================================================
  <?php
  // Copyright 2004 by Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a Trail plugin for the MoniWiki
  //
  // Usage: [[Trail(IndexPage)]]
  //
  // $Id: Test.php,v 1.2 2003/08/15 21:30:36 wkpark Exp $
  
  function macro_Trail($formatter,$value) {
    global $DBInfo;
  
    if (!$value or !$DBInfo->hasPage($value))
      return '[[Index('._("No Index page found").')]]';
  
    $pg=$DBInfo->getPage($value);
    $lines=explode("\n",$pg->get_raw_body());
  
    $indices=array();
    $count=0;
    foreach ($lines as $line) {
      if (preg_match("/^\s+(\*|\d+\.)\s+(?<!\!)($formatter->wordrule)/",$line,$match)) {
        $indices[]=$match[2];
        $count++;
      }
    }
    if ($count > 1) {
      $prev='';
      $index=$value;
      $next=$indices[0];
    }
  
    for ($i=0;$i<$count;$i++) {
      if ($indices[$i]==$formatter->page->name) {
        if ($i > 0) $prev=$indices[$i-1];
        if ($i < ($count - 1)) $next=$indices[$i+1];
      }
    }
  
    if ($count > 1) {
      $pnut='&#x2039; ';
      if ($prev) $pnut.=$formatter->link_repl($prev)." | ";
      $pnut.=$formatter->link_repl($index);
      if ($next) $pnut.=" | ".$formatter->link_repl($next);
      $pnut.=' &#x203a;';
    }
    return $pnut;
  }
  
  // vim:noet:sts=2:
  ?>
  
  
  


wkpark      04/01/07 08:38:35

  Modified:    .        wikismiley.php
  Log:
  add flags
  
  Revision  Changes    Path
  1.6       +19 -7     moniwiki/wikismiley.php
  
  Index: wikismiley.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikismiley.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- wikismiley.php	17 Aug 2003 13:47:42 -0000	1.5
  +++ wikismiley.php	6 Jan 2004 23:38:34 -0000	1.6
  @@ -1,9 +1,9 @@
   <?php
  -# $Id: wikismiley.php,v 1.4 2003/08/11 05:17:23 wkpark Exp $
  +# $Id: wikismiley.php,v 1.5 2003/08/17 13:47:42 wkpark Exp $
   $smileys=array(
       "X-("=> array(16, 16, 0, "smile/x-(.gif"),
       ":D"=>  array(16, 16, 0, "smile/8-D.gif"),
  -    "&lt;:("=> array(15, 15, 0, "frown.gif"),
  +    "&lt;:("=> array(16, 16, 0, "smile/(8(.gif"),
       ":o"=>  array(16, 16, 0, "smile/8-O.gif"),
       ":("=>  array(16, 16, 0, "smile/8-(.gif"),
       ":)"=>  array(16, 16, 0, "smile/8).gif"),
  @@ -16,10 +16,10 @@
       ":|"=>  array(16, 16, 0, "smile/8-l.gif"),
       "|-|"=> array(16, 16, 0, "smile/l-l.gif"),
       "|-I"=> array(16, 16, 0, "smile/l-I.gif"),
  -    "/!\\"=>array(16, 16, 0, "alert.gif"),
  +    "/!\\"=>array(15, 15, 0, "alert.gif"),
       "\\?/"=>array(16, 16, 0, "icon-question.png"),
       "&lt;!>"=> array(15, 15, 0, "attention.gif"),
  -    "(!)"=> array(15, 15, 0, "idea.gif"),
  +    "(!)"=> array(16, 16, 0, "idea.png"),
   
   #    ":&"=>  array(16, 16, 0, "smile/8-%26.gif"),
       ":-X"=> array(16, 16, 0, "smile/8-x.gif"),
  @@ -78,14 +78,26 @@
   #    "][%"=>array(12, 16, 0, "smile/beer_l.gif"),
   
       # version 1.0
  -    "(./)"=>array(14, 16, 0, "checkmark.gif"),
  +    "(./)"=>array(16, 16, 0, "checkbox.png"),
       "{OK}"=>array(12, 16, 0, "smile/thumb-up.gif"),
       "{NO}"=>array(12, 16, 0, "smile/thumb-down.gif"),
  -    "{X}"=>array(16, 16, 0, "icon-error.gif"),
  -    "{i}"=>array(16, 16, 0, "icon-info.gif"),
  +    "{X}"=>array(16, 16, 0, "icon-error.png"),
  +    "{i}"=>array(16, 16, 0, "icon-info.png"),
       "{1}"=>array(15, 13, 0, "prio1.gif"),
       "{2}"=>array(15, 13, 0, "prio2.gif"),
       "{3}"=>array(15, 13, 0, "prio3.gif"),
  +    "{da}"=>array(16, 16, 0, "da-16.png"),
  +    "{de}"=>array(16, 16, 0, "de-16.png"),
  +    "{en}"=>array(16, 16, 0, "en-16.png"),
  +    "{es}"=>array(16, 16, 0, "pt-16.png"),
  +    "{it}"=>array(16, 16, 0, "it-16.png"),
  +    "{ja}"=>array(16, 16, 0, "ja-16.png"),
  +    "{ko}"=>array(16, 16, 0, "ko-16.png"),
  +    "{nl}"=>array(16, 16, 0, "nl-16.png"),
  +    "{pt}"=>array(16, 16, 0, "pt-16.png"),
  +    "{sv}"=>array(16, 16, 0, "sv-16.png"),
  +    "{us}"=>array(16, 16, 0, "us-16.png"),
  +    "{zh}"=>array(16, 16, 0, "zh-16.png"),
   );
   
   ?>
  
  
  


wkpark      04/01/07 08:41:41

  Modified:    data     intermap.txt
  Log:
  fixed some interwikis
  
  Revision  Changes    Path
  1.3       +4 -5      moniwiki/data/intermap.txt
  
  Index: intermap.txt
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/data/intermap.txt,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- intermap.txt	11 Aug 2003 05:18:05 -0000	1.2
  +++ intermap.txt	6 Jan 2004 23:41:41 -0000	1.3
  @@ -1,3 +1,4 @@
  +# $Id$
   # see http://usemod.com/intermap.txt 
   ISBN http://www.amazon.com/exec/obidos/ISBN=
   Wiki http://c2.com/cgi/wiki?
  @@ -25,8 +26,8 @@
   
   # Korean Wikis
   NoSmoke http://no-smok.net/nsmk/
  -GnomeKorea http://www.gnome.or.kr/moin.cgi/
  -KLE http://kle.kldp.org/moin.php/
  +GnomeKorea http://www.gnome.or.kr/wiki/
  +KLE http://kle.kldp.org/main.php/
   GentooKorea http://gentoo.or.kr/wiki/moin.cgi/
   DebianKorea http://debianusers.org/DebianWiki/
   Freefeel http://freefeel.org/wiki/
  @@ -37,7 +38,5 @@
   WIM http://linux.mizi.com/wim/
   KTUG http://faq.ktug.or.kr/mywiki/
   MoniWiki http://moniwiki.sf.net/wiki.php/
  -#MoniDev http://chemie.skku.ac.kr/wiki/wiki.php/
  -#MoniWikiDev http://chemie.skku.ac.kr/wiki/wiki.php/
  -
  +KLDPWiki http://wiki.kldp.org/wiki/
   Teoal http://teoal.net/wiki/
  
  
  


wkpark      04/01/07 08:46:30

  Modified:    imgs     icon-info.gif
  Added:       imgs     da-16.png de-16.png en-16.png es-16.png fi-16.png
                        fr-16.png it-16.png ja-16.png ko-16.png nl-16.png
                        pt-16.png sv-16.png us-16.png zh-16.png
  Log:
  add flag icons and update some smileys
  
  Revision  Changes    Path
  1.2       +2 -1      moniwiki/imgs/icon-info.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/da-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/de-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/en-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/es-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/fi-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/fr-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/it-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/ja-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/ko-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/nl-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/pt-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/sv-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/us-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/zh-16.png
  
  	<<Binary file>>
  
  


wkpark      04/01/07 08:46:31

  Modified:    imgs/smile 8-(.gif
  Added:       imgs/smile (8(.gif
  Log:
  add flag icons and update some smileys
  
  Revision  Changes    Path
  1.2       +1 -1      moniwiki/imgs/smile/8-(.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/(8(.gif
  
  	<<Binary file>>
  
  


wkpark      04/01/07 08:53:52

  Modified:    .        wikilib.php
  Log:
  comment out some debug codes
  
  Revision  Changes    Path
  1.99      +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.98
  retrieving revision 1.99
  diff -u -r1.98 -r1.99
  --- wikilib.php	5 Jan 2004 22:01:17 -0000	1.98
  +++ wikilib.php	6 Jan 2004 23:53:52 -0000	1.99
  @@ -586,8 +586,8 @@
     
     $page = $DBInfo->getPage($options['page']);
   
  -  print $options['value'];
  -  print $options['page'];
  +  #print $options['value'];
  +  #print $options['page'];
     if (stripslashes($options['value']) == $options['page']) {
       $DBInfo->deletePage($page,$options);
       $title = sprintf(_("\"%s\" is deleted !"), $page->name);
  
  
  


wkpark      04/01/07 09:12:27

  Modified:    .        wiki.php
  Log:
  the $nonexists option now support 'forcelink'
  
  Revision  Changes    Path
  1.128     +4 -0      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.127
  retrieving revision 1.128
  diff -u -r1.127 -r1.128
  --- wiki.php	6 Jan 2004 13:13:29 -0000	1.127
  +++ wiki.php	7 Jan 2004 00:12:26 -0000	1.128
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.127 2004/01/06 13:13:29 wkpark Exp $
  +// $Id: wiki.php,v 1.128 2004/01/07 00:12:26 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.127 $',1,-1);
  +$_revision = substr('$Revision: 1.128 $',1,-1);
   $_release = '1.0.7';
   
   #ob_start("ob_gzhandler");
  @@ -1595,6 +1595,10 @@
   
     function word_nolink($word,$url) {
       return "$word";
  +  }
  +
  +  function word_forcelink($word,$url) {
  +    return "<a href='$url'>$word</a>";
     }
   
     function word_fancy_nonexists($word,$url) {
  
  
  


wkpark      04/01/07 09:15:48

  Added:       imgs     alert.png checkbox.png icon-error.png icon-info.png
                        idea.png isbn-16.png
  Log:
  add missed icons
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/alert.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/checkbox.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/icon-error.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/icon-info.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/idea.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/isbn-16.png
  
  	<<Binary file>>
  
  


wkpark      04/01/07 09:18:03

  Modified:    .        config.php.default
  Log:
  add a 'forcelink' example
  
  Revision  Changes    Path
  1.8       +3 -1      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- config.php.default	25 Nov 2003 00:54:11 -0000	1.7
  +++ config.php.default	7 Jan 2004 00:18:02 -0000	1.8
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.7 2003/11/25 00:54:11 wkpark Exp $
  +# $Id: config.php.default,v 1.8 2004/01/07 00:18:02 wkpark Exp $
   #
   $sitename='UnnamedWiki';
   $data_dir= './data';
  @@ -39,6 +39,8 @@
   $use_twinpages=1;
   $use_trackback=0;
   #$nonexists='fancy_nonexists';
  +#$nonexists='nolink';
  +#$nonexists='forcelink';
   #$use_titlecache=0;
   #$security_class="needtologin";
   #$security_class="desktop";
  
  
  


wkpark      04/01/07 10:10:35

  Added:       plugin   rcs.php
  Log:
  add new action plugin to get rid of #300091
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/rcs.php
  
  Index: rcs.php
  ===================================================================
  <?php
  // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a rcs action plugin for the MoniWiki
  //
  // $Id: rcs.php,v 1.1 2004/01/07 01:10:34 wkpark Exp $
  
  function do_rcs($formatter,$options) {
    global $DBInfo;
  
    $supported=array('-kkv','-kk');
    
    if (isset($options['param'])) {
      if ($DBInfo->hasPage($formatter->page->name) and in_array($options['param'],$supported)) {
        $key=$DBInfo->getPageKey($formatter->page->name);
        system( "rcs $options[param] $key" );
        $title = sprintf(_("Change options for \"%s\""), $formatter->page->name);
        $formatter->send_header("",$options);
        $formatter->send_title($title,"",$options);
        $formatter->send_footer("",$options);
        return;
      } else {
        $title = sprintf(_("Fail to rcs \"%s\" !"), $formatter->page->name);
      }
    }
    if (!$title)
      $title = sprintf(_("Change options for \"%s\" ?"), $options['page']);
    $formatter->send_header("",$options);
    $formatter->send_title($title,"",$options);
    print "<form method='post'>
  <table border='0'>\n";
    if ($DBInfo->security->is_protected("rcs",$options))
      print "<tr><td align='right'>"._("Password").": </td><td><input type='password' name='passwd' /> ".
      _("Only WikiMaster can execute rcs");
    print "<tr>";
    print "<td><b>rcs</b> <select name='param' />\n";
    print "<option value='-kk'>-kk</option>\n";
    print "<option value='-kkv'>-kkv</option>\n</select>\n</td>\n";
    print "<td><input type='submit' name='button_rcs' value='apply' /></td>";
    print "</td></tr>\n";
  
    print "
  </table>
      <input type=hidden name='action' value='rcs' />
      </form>";
  #  $formatter->send_page();
    $formatter->send_footer("",$options);
  }
  ?>
  
  
  


wkpark      04/01/07 10:19:51

  Modified:    plugin   rcs.php
  Log:
  more fix
  
  Revision  Changes    Path
  1.2       +7 -7      moniwiki/plugin/rcs.php
  
  Index: rcs.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rcs.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- rcs.php	7 Jan 2004 01:10:34 -0000	1.1
  +++ rcs.php	7 Jan 2004 01:19:50 -0000	1.2
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a rcs action plugin for the MoniWiki
   //
  -// $Id: rcs.php,v 1.1 2004/01/07 01:10:34 wkpark Exp $
  +// $Id: rcs.php,v 1.2 2004/01/07 01:19:50 wkpark Exp $
   
   function do_rcs($formatter,$options) {
     global $DBInfo;
  @@ -29,14 +29,14 @@
     $formatter->send_title($title,"",$options);
     print "<form method='post'>
   <table border='0'>\n";
  -  if ($DBInfo->security->is_protected("rcs",$options))
  -    print "<tr><td align='right'>"._("Password").": </td><td><input type='password' name='passwd' /> ".
  -    _("Only WikiMaster can execute rcs");
     print "<tr>";
  -  print "<td><b>rcs</b> <select name='param' />\n";
  +  print "<td valign='top'><b>rcs</b></td><td><select name='param' />\n";
     print "<option value='-kk'>-kk</option>\n";
  -  print "<option value='-kkv'>-kkv</option>\n</select>\n</td>\n";
  -  print "<td><input type='submit' name='button_rcs' value='apply' /></td>";
  +  print "<option value='-kkv'>-kkv</option>\n</select>\n";
  +  if ($DBInfo->security->is_protected("rcs",$options))
  +    print " <input type='password' name='passwd' /> ".
  +    _("Only WikiMaster can execute rcs");
  +  print "</tr><tr><td colspan='2'><input type='submit' name='button_rcs' value='apply' /></td>";
     print "</td></tr>\n";
   
     print "
  
  
  


wkpark      04/01/07 10:45:54

  Modified:    .        wikilib.php
  Log:
  fixed some security bugs
  
  Revision  Changes    Path
  1.100     +6 -6      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.99
  retrieving revision 1.100
  diff -u -r1.99 -r1.100
  --- wikilib.php	6 Jan 2004 23:53:52 -0000	1.99
  +++ wikilib.php	7 Jan 2004 01:45:53 -0000	1.100
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.99 2004/01/06 23:53:52 wkpark Exp $
  +// $Id: wikilib.php,v 1.100 2004/01/07 01:45:53 wkpark Exp $
   
   function find_needle($body,$needle,$count=0) {
     if (!$body) return '';
  @@ -581,21 +581,21 @@
     return;
   }
   
  -function do_DeletePage($formatter,$options) {
  +function do_post_DeletePage($formatter,$options) {
     global $DBInfo;
     
     $page = $DBInfo->getPage($options['page']);
   
  -  #print $options['value'];
  +  #print $options['name'];
     #print $options['page'];
  -  if (stripslashes($options['value']) == $options['page']) {
  +  if (stripslashes($options['name']) == $options['page']) {
       $DBInfo->deletePage($page,$options);
       $title = sprintf(_("\"%s\" is deleted !"), $page->name);
       $formatter->send_header("",$options);
       $formatter->send_title($title,"",$options);
       $formatter->send_footer();
       return;
  -  } else if ($options['value']) {
  +  } else if ($options['name']) {
       $options['msg'] = _("Please delete this file manually.");
     }
     $title = sprintf(_("Delete \"%s\" ?"), $page->name);
  @@ -609,7 +609,7 @@
   Only WikiMaster can delete this page<br />\n";
     print "
       <input type='hidden' name='action' value='DeletePage' />
  -    <input type='hidden' name='value' value='$options[page]' />
  +    <input type='hidden' name='name' value='$options[page]' />
       <input type='submit' value='Delete page' />
       </form>";
   #  $formatter->send_page();
  
  
  


wkpark      04/01/07 10:46:38

  Modified:    plugin   rcs.php
  Log:
  more fixes
  
  Revision  Changes    Path
  1.3       +2 -2      moniwiki/plugin/rcs.php
  
  Index: rcs.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rcs.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- rcs.php	7 Jan 2004 01:19:50 -0000	1.2
  +++ rcs.php	7 Jan 2004 01:46:38 -0000	1.3
  @@ -3,9 +3,9 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a rcs action plugin for the MoniWiki
   //
  -// $Id: rcs.php,v 1.2 2004/01/07 01:19:50 wkpark Exp $
  +// $Id: rcs.php,v 1.3 2004/01/07 01:46:38 wkpark Exp $
   
  -function do_rcs($formatter,$options) {
  +function do_post_rcs($formatter,$options) {
     global $DBInfo;
   
     $supported=array('-kkv','-kk');
  
  
  


wkpark      04/01/07 10:48:49

  Modified:    plugin/security userbased.php wikimaster.php
  Log:
  add the 'rcs' action to the protected action list
  
  Revision  Changes    Path
  1.5       +2 -2      moniwiki/plugin/security/userbased.php
  
  Index: userbased.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/userbased.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- userbased.php	28 Sep 2003 08:23:11 -0000	1.4
  +++ userbased.php	7 Jan 2004 01:48:48 -0000	1.5
  @@ -1,6 +1,6 @@
   <?php
   # a user based security plugin for the MoniWiki
  -# $Id: userbased.php,v 1.4 2003/09/28 08:23:11 wkpark Exp $
  +# $Id: userbased.php,v 1.5 2004/01/07 01:48:48 wkpark Exp $
   
   class Security_userbased extends Security {
     var $DB;
  @@ -69,7 +69,7 @@
   
     function is_protected($action="read",$options) {
       # password protected POST actions
  -    $protected_actions=array("rcspurge","chmod","backup","restore");
  +    $protected_actions=array("rcs","rcspurge","chmod","backup","restore");
       $action=strtolower($action);
   
       if (in_array($action,$protected_actions)) {
  
  
  
  1.4       +2 -2      moniwiki/plugin/security/wikimaster.php
  
  Index: wikimaster.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/wikimaster.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- wikimaster.php	28 Sep 2003 08:23:11 -0000	1.3
  +++ wikimaster.php	7 Jan 2004 01:48:48 -0000	1.4
  @@ -1,6 +1,6 @@
   <?php
   # a user based security plugin for the MoniWiki
  -# $Id: wikimaster.php,v 1.3 2003/09/28 08:23:11 wkpark Exp $
  +# $Id: wikimaster.php,v 1.4 2004/01/07 01:48:48 wkpark Exp $
   
   class Security_wikimaster extends Security {
     var $DB;
  @@ -68,7 +68,7 @@
   
     function is_protected($action="read",$options) {
       # password protected POST actions
  -    $protected_actions=array("chmod","backup","restore");
  +    $protected_actions=array("rcs","chmod","backup","restore");
       $action=strtolower($action);
   
       if (in_array($action,$protected_actions)) {
  
  
  


wkpark      04/01/07 10:50:10

  Modified:    .        wiki.php
  Log:
  add the rcs action to the protected action list
  
  Revision  Changes    Path
  1.129     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.128
  retrieving revision 1.129
  diff -u -r1.128 -r1.129
  --- wiki.php	7 Jan 2004 00:12:26 -0000	1.128
  +++ wiki.php	7 Jan 2004 01:50:09 -0000	1.129
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.128 2004/01/07 00:12:26 wkpark Exp $
  +// $Id: wiki.php,v 1.129 2004/01/07 01:50:09 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.128 $',1,-1);
  +$_revision = substr('$Revision: 1.129 $',1,-1);
   $_release = '1.0.7';
   
   #ob_start("ob_gzhandler");
  @@ -367,7 +367,7 @@
     function is_protected($action="read",$options) {
       # password protected POST actions
       $protected_actions=array(
  -      "deletepage","deletefile","rename","rcspurge","chmod","backup","restore");
  +      "deletepage","deletefile","rename","rcspurge","rcs","chmod","backup","restore");
       $action=strtolower($action);
   
       if (in_array($action,$protected_actions)) {
  
  
  


wkpark      04/01/07 11:19:18

  Modified:    plugin   rcspurge.php
  Log:
  fixed message
  
  Revision  Changes    Path
  1.2       +2 -2      moniwiki/plugin/rcspurge.php
  
  Index: rcspurge.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rcspurge.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- rcspurge.php	15 Aug 2003 21:30:36 -0000	1.1
  +++ rcspurge.php	7 Jan 2004 02:19:16 -0000	1.2
  @@ -4,7 +4,7 @@
   // a rcspurge action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: rcspurge.php,v 1.1 2003/08/15 21:30:36 wkpark Exp $
  +// $Id: rcspurge.php,v 1.2 2004/01/07 02:19:16 wkpark Exp $
   
   function do_rcspurge($formatter,$options) {
     global $DBInfo;
  @@ -21,7 +21,7 @@
       return;
     }
     if (!preg_match("/^[\d:;\.]+$/",$options['range'])) {
  -    $options['title']=_("Invalid rcsclean range");
  +    $options['title']=_("Invalid rcspurge range");
       do_invalid($formatter,$options);
       return;
     }
  
  
  


wkpark      04/01/07 11:20:52

  Modified:    plugin   rename.php
  Log:
  fixed security bug
  
  Revision  Changes    Path
  1.4       +6 -6      moniwiki/plugin/rename.php
  
  Index: rename.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rename.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- rename.php	15 Aug 2003 21:30:36 -0000	1.3
  +++ rename.php	7 Jan 2004 02:20:51 -0000	1.4
  @@ -3,14 +3,14 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a rename action plugin for the MoniWiki
   //
  -// $Id: rename.php,v 1.3 2003/08/15 21:30:36 wkpark Exp $
  +// $Id: rename.php,v 1.4 2004/01/07 02:20:51 wkpark Exp $
   
  -function do_rename($formatter,$options) {
  +function do_post_rename($formatter,$options) {
     global $DBInfo;
     
  -  if (isset($options['value'])) {
  -    if ($DBInfo->hasPage($options['page']) && !$DBInfo->hasPage($options['value'])) {
  -      $DBInfo->renamePage($options['page'],$options['value'],$options);
  +  if (isset($options['name'])) {
  +    if ($DBInfo->hasPage($options['page']) && !$DBInfo->hasPage($options['name'])) {
  +      $DBInfo->renamePage($options['page'],$options['name'],$options);
         $title = sprintf(_("\"%s\" is renamed !"), $options['page']);
         $formatter->send_header("",$options);
         $formatter->send_title($title,"",$options);
  @@ -31,7 +31,7 @@
     print "<form method='post'>
   <table border='0'>
   <tr><td align='right'>Old name: </td><td><b>$options[page]</b></td></tr>
  -<tr><td align='right'>New name: </td><td><input name='value' /></td></tr>\n";
  +<tr><td align='right'>New name: </td><td><input name='name' /></td></tr>\n";
     if ($DBInfo->security->is_protected("rename",$options))
       print "<tr><td align='right'>"._("Password").": </td><td><input type='password' name='passwd' /> ".
       _("Only WikiMaster can rename this page");
  
  
  


wkpark      04/01/07 11:44:03

  Modified:    .        wikilib.php
  Log:
  fixed rcspurge bug
  
  Revision  Changes    Path
  1.101     +9 -7      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.100
  retrieving revision 1.101
  diff -u -r1.100 -r1.101
  --- wikilib.php	7 Jan 2004 01:45:53 -0000	1.100
  +++ wikilib.php	7 Jan 2004 02:44:02 -0000	1.101
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.100 2004/01/07 01:45:53 wkpark Exp $
  +// $Id: wikilib.php,v 1.101 2004/01/07 02:44:02 wkpark Exp $
   
   function find_needle($body,$needle,$count=0) {
     if (!$body) return '';
  @@ -346,12 +346,14 @@
           $rr.=":".$range[$r];
         $dum[]=$rr;$rr='';
       }
  -    $dum=join(';',$dum);
  -    $query="?action=rcspurge&amp;range=$dum";
  -    if ($options['show']) $query.="&amp;show=1";
  -    $options['url']=qualifiedURL($formatter->link_url($options['page'],$query));
  -    do_goto($formatter,$options);
  -    #do_RcsPurge($formatter,$options);
  +    $options['range']=join(';',$dum);
  +    #$query="?action=rcspurge&amp;range=$dum";
  +    #if ($options['show']) $query.="&amp;show=1";
  +    #$options['url']=qualifiedURL($formatter->link_url($options['page'],$query));
  +    #do_goto($formatter,$options);
  +    include_once("plugin/rcspurge.php");
  +
  +    do_RcsPurge($formatter,$options);
       return;
     }
     $formatter->send_header("",$options);
  
  
  


wkpark      04/01/07 11:44:45

  Modified:    locale   Makefile
  Log:
  update messages
  
  Revision  Changes    Path
  1.2       +28 -4     moniwiki/locale/Makefile
  
  Index: Makefile
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/Makefile,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Makefile	10 Aug 2003 13:09:49 -0000	1.1
  +++ Makefile	7 Jan 2004 02:44:45 -0000	1.2
  @@ -1,4 +1,4 @@
  -# $Id: Makefile,v 1.1 2003/08/10 13:09:49 wkpark Exp $
  +# $Id: Makefile,v 1.2 2004/01/07 02:44:45 wkpark Exp $
   #
   # locale/Makefile
   #
  @@ -51,33 +51,48 @@
   po: po/ko.po
   mo: ko/LC_MESSAGES/moniwiki.mo ko/LC_MESSAGES/moniwiki.php
   #
  -${POT_FILE}: ../plugin/Admin.php
   ${POT_FILE}: ../plugin/Anchor.php
   ${POT_FILE}: ../plugin/Attachment.php
  +${POT_FILE}: ../plugin/BabelFish.php
   ${POT_FILE}: ../plugin/Blog.php
   ${POT_FILE}: ../plugin/BlogChanges.php
  -${POT_FILE}: ../plugin/Board.php
   ${POT_FILE}: ../plugin/Calendar.php
   ${POT_FILE}: ../plugin/Draw.php
   ${POT_FILE}: ../plugin/DueDate.php
  +${POT_FILE}: ../plugin/Echo.php
   ${POT_FILE}: ../plugin/EngDic.php
   ${POT_FILE}: ../plugin/FastSearch.php
  +${POT_FILE}: ../plugin/Fortune.php
  +${POT_FILE}: ../plugin/FullSearch.php
   ${POT_FILE}: ../plugin/Gallery.php
   ${POT_FILE}: ../plugin/GetText.php
   ${POT_FILE}: ../plugin/ISBN.php
  +${POT_FILE}: ../plugin/Icon.php
   ${POT_FILE}: ../plugin/Img.php
  +${POT_FILE}: ../plugin/ImportUrl.php
  +${POT_FILE}: ../plugin/Include.php
  +${POT_FILE}: ../plugin/LikePages.php
  +${POT_FILE}: ../plugin/MailTo.php
   ${POT_FILE}: ../plugin/OeKaki.php
  -${POT_FILE}: ../plugin/PostPage.php
  +${POT_FILE}: ../plugin/PageHits.php
   ${POT_FILE}: ../plugin/RandomBanner.php
  +${POT_FILE}: ../plugin/RecentChanges.php
   ${POT_FILE}: ../plugin/SmileyChooser.php
  +${POT_FILE}: ../plugin/SystemInfo.php
   ${POT_FILE}: ../plugin/Test.php
  +${POT_FILE}: ../plugin/Trail.php
   ${POT_FILE}: ../plugin/TwinPages.php
   ${POT_FILE}: ../plugin/UWL.php
  +${POT_FILE}: ../plugin/UploadFile.php
  +${POT_FILE}: ../plugin/UploadedFiles.php
   ${POT_FILE}: ../plugin/VisualTour.php
   ${POT_FILE}: ../plugin/Vote.php
  +${POT_FILE}: ../plugin/WantedPages.php
   ${POT_FILE}: ../plugin/WordIndex.php
   ${POT_FILE}: ../plugin/backup.php
   ${POT_FILE}: ../plugin/blogrss.php
  +${POT_FILE}: ../plugin/bookmark.php
  +${POT_FILE}: ../plugin/chmod.php
   ${POT_FILE}: ../plugin/css.php
   ${POT_FILE}: ../plugin/dot.php
   ${POT_FILE}: ../plugin/download.php
  @@ -88,9 +103,11 @@
   ${POT_FILE}: ../plugin/minilogin.php
   ${POT_FILE}: ../plugin/moniedit.php
   ${POT_FILE}: ../plugin/moztab.php
  +${POT_FILE}: ../plugin/new.php
   ${POT_FILE}: ../plugin/print.php
   ${POT_FILE}: ../plugin/processor/abc.php
   ${POT_FILE}: ../plugin/processor/blog.php
  +${POT_FILE}: ../plugin/processor/chat.php
   ${POT_FILE}: ../plugin/processor/gnuplot.php
   ${POT_FILE}: ../plugin/processor/hello.php
   ${POT_FILE}: ../plugin/processor/jade.php
  @@ -104,6 +121,9 @@
   ${POT_FILE}: ../plugin/processor/xslt.php
   ${POT_FILE}: ../plugin/processor/xsltproc.php
   ${POT_FILE}: ../plugin/quicklinks.php
  +${POT_FILE}: ../plugin/rcs.php
  +${POT_FILE}: ../plugin/rcspurge.php
  +${POT_FILE}: ../plugin/rdf_blog.php
   ${POT_FILE}: ../plugin/rename.php
   ${POT_FILE}: ../plugin/restore.php
   ${POT_FILE}: ../plugin/rss.php
  @@ -112,11 +132,15 @@
   ${POT_FILE}: ../plugin/security/desktop.php
   ${POT_FILE}: ../plugin/security/needtologin.php
   ${POT_FILE}: ../plugin/security/sample.php
  +${POT_FILE}: ../plugin/security/userbased.php
  +${POT_FILE}: ../plugin/security/wikimaster.php
   ${POT_FILE}: ../plugin/sendping.php
   ${POT_FILE}: ../plugin/subscribe.php
   ${POT_FILE}: ../plugin/theme.php
   ${POT_FILE}: ../plugin/trackback.php
   ${POT_FILE}: ../plugin/urlencode.php
  +${POT_FILE}: ../plugin/userform.php
  +${POT_FILE}: ../plugin/whois.php
   ${POT_FILE}: ../wiki.php
   ${POT_FILE}: ../wikilib.php
   ${POT_FILE}: ../lib/difflib.php
  
  
  


wkpark      04/01/07 11:44:48

  Modified:    locale/po fr.po ko.po moniwiki.pot
  Log:
  update messages
  
  Revision  Changes    Path
  1.8       +373 -166  moniwiki/locale/po/fr.po
  
  Index: fr.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/fr.po,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- fr.po	30 Dec 2003 22:45:52 -0000	1.7
  +++ fr.po	7 Jan 2004 02:44:46 -0000	1.8
  @@ -3,7 +3,7 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: MoniWiki 1.0\n"
  -"POT-Creation-Date: 2003-12-31 07:57+0900\n"
  +"POT-Creation-Date: 2004-01-07 11:48+0900\n"
   "PO-Revision-Date: 2003-08-17 22:51+0900\n"
   "Last-Translator: Serge Stinckwich <Serge.Stinckwich@info.unicaen.fr>\n"
   "Language-Team: fr <fr@li.org>\n"
  @@ -19,51 +19,62 @@
   
   # ../plugin/Attachment.php:24
   #: ../plugin/Attachment.php:36
  +#, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
  -msgstr "Tlcharger le nouvel attachement \"%s\""
  +msgstr ""
  +
  +#: ../plugin/BabelFish.php:14
  +msgid "BabelFish Translation"
  +msgstr ""
  +
  +# ../wiki.php:850
  +#: ../plugin/BabelFish.php:27
  +#, c-format
  +msgid "Translate %s to %s"
  +msgstr "Translate %s en %s"
   
   # ../plugin/Blog.php:78
  -#: ../plugin/Blog.php:79
  +#: ../plugin/Blog.php:80
   #, c-format
   msgid "\"%s\" is updated"
   msgstr "\"%s\" est mis  jour"
   
   # ../plugin/Blog.php:83
  -#: ../plugin/Blog.php:84
  +#: ../plugin/Blog.php:85
   msgid "Add Blog"
   msgstr "Ajouter un blog"
   
   # ../plugin/Blog.php:137
  -#: ../plugin/Blog.php:138
  +#: ../plugin/Blog.php:139
   #, c-format
   msgid "Comment added to \"%s\""
   msgstr "Commentaire ajout  \"%s\""
   
   # ../plugin/Blog.php:140
  -#: ../plugin/Blog.php:141
  +#: ../plugin/Blog.php:142
   #, c-format
   msgid "Blog entry added to \"%s\""
   msgstr "Entre de blog ajout  \"%s\""
   
   # ../plugin/Blog.php:176
  -#: ../plugin/Blog.php:177
  +#: ../plugin/Blog.php:178
   #, c-format
   msgid "Add Comment to \"%s\""
   msgstr "Ajouter un commentaire  \"%s\""
   
   # ../plugin/Blog.php:178
  -#: ../plugin/Blog.php:179
  +#: ../plugin/Blog.php:180
   #, c-format
   msgid "Add Blog entry to \"%s\""
   msgstr "Ajouter une entre de blog  \"%s\""
   
   # ../plugin/Blog.php:197
  -#: ../plugin/Blog.php:198
  +#: ../plugin/Blog.php:199
   msgid "Don't add a signature"
   msgstr "Ne pas ajouter de signature"
   
   # ../plugin/Blog.php:210
  -#: ../plugin/Blog.php:211
  +#: ../plugin/Blog.php:212
   msgid "<b>horizontal rule</b> ---- does not applied on the blog mode."
   msgstr "<b>Une rgle horizontale</b> ---- ne s'applique pas au mode blog."
   
  @@ -72,43 +83,13 @@
   msgid "Previous"
   msgstr "Prcdent"
   
  -# ../plugin/Board.php:24
  -#: ../plugin/Board.php:24
  -msgid "No articles found"
  -msgstr "Aucun article trouv"
  -
  -# ../plugin/Board.php:67
  -#: ../plugin/Board.php:67
  -#, c-format
  -msgid "Comment is added to \"%s\""
  -msgstr "Un commentaire est ajout  \"%s\""
  -
  -# ../plugin/Board.php:68 ../plugin/Board.php:78
  -#: ../plugin/Board.php:68 ../plugin/Board.php:79
  -#, c-format
  -msgid "Add article to \"%s\""
  -msgstr "Ajouter un article  \"%s\""
  -
  -#: ../plugin/Board.php:82
  -msgid "Name"
  -msgstr ""
  -
  -#: ../plugin/Board.php:83
  -msgid "Email"
  -msgstr ""
  -
  -# ../wiki.php:2950
  -#: ../plugin/Board.php:85
  -msgid "Title"
  -msgstr "titre"
  -
   # ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
   #: ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
   msgid "Draw new picture"
   msgstr "Faire un nouveau dessin"
   
   # ../plugin/Draw.php:48
  -#: ../plugin/Draw.php:49
  +#: ../plugin/Draw.php:49 ../plugin/UploadFile.php:81
   #, c-format
   msgid "Fail to copy \"%s\" to \"%s\""
   msgstr "Impossible de copier \"%s\" vers \"%s\""
  @@ -151,17 +132,59 @@
   msgstr "%d jour(s) se sont passs depuis %s."
   
   # ../plugin/FastSearch.php:116
  -#: ../plugin/FastSearch.php:116
  +#: ../plugin/FastSearch.php:116 ../plugin/FullSearch.php:17
   #, c-format
   msgid "Full text search for \"%s\""
   msgstr "Recherche en texte intgral pour \"%s\""
   
   # ../plugin/FastSearch.php:125
  -#: ../plugin/FastSearch.php:125
  +#: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:26
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr "Trouv %s s'appariant avec %s sur un total de %s pages"
   
  +# ../wikilib.php:1479
  +#: ../plugin/FullSearch.php:15
  +#, c-format
  +msgid "BackLinks search for \"%s\""
  +msgstr ""
  +
  +# ../wikilib.php:1483
  +#: ../plugin/FullSearch.php:71 ../wikilib.php:1503
  +#, c-format
  +msgid "Invalid search expression \"%s\""
  +msgstr "Expression de recherche \"%s\" invalide"
  +
  +#: ../plugin/LikePages.php:109
  +msgid "These pages share a similar word..."
  +msgstr ""
  +
  +#: ../plugin/LikePages.php:122
  +msgid "These pages share an initial or final title word..."
  +msgstr ""
  +
  +#: ../plugin/LikePages.php:140
  +msgid "If you can't find this page, "
  +msgstr ""
  +
  +# ../plugin/man_get.php:23
  +#: ../plugin/LikePages.php:145
  +msgid "No similar pages found"
  +msgstr ""
  +
  +#: ../plugin/LikePages.php:146
  +msgid "You are strongly recommened to find it in MetaWikis. "
  +msgstr ""
  +
  +#: ../plugin/LikePages.php:149
  +#, c-format
  +msgid "Like \"%s\""
  +msgstr ""
  +
  +#: ../plugin/LikePages.php:151
  +msgid "Search all MetaWikis"
  +msgstr ""
  +
   # ../plugin/OeKaki.php:118
   #: ../plugin/OeKaki.php:118
   msgid "Create new picture"
  @@ -172,11 +195,14 @@
   msgid "Edit Image"
   msgstr "diter l'image"
   
  -# ../plugin/PostPage.php:13
  -#: ../plugin/PostPage.php:13
  -#, c-format
  -msgid "Post \"%s\" to someone"
  -msgstr "Envoyer \"%s\"  quelqu'un"
  +#: ../plugin/RecentChanges.php:146
  +msgid "set bookmark"
  +msgstr ""
  +
  +# ../plugin/man_get.php:23
  +#: ../plugin/Trail.php:14
  +msgid "No Index page found"
  +msgstr ""
   
   # ../plugin/TwinPages.php:13
   #: ../plugin/TwinPages.php:13
  @@ -185,7 +211,7 @@
   msgstr "TwinPages de %s"
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../plugin/TwinPages.php:18 ../wiki.php:1845 ../wiki.php:3012
  +#: ../plugin/TwinPages.php:18 ../wiki.php:1868 ../wiki.php:3041
   msgid "See TwinPages: "
   msgstr "Voir TwinPages: "
   
  @@ -194,6 +220,26 @@
   msgid "No TwinPages found."
   msgstr "Aucune TwinPages trouv"
   
  +# ../wikilib.php:887
  +#: ../plugin/UploadFile.php:92
  +#, c-format
  +msgid "File \"%s\" is uploaded successfully"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:106
  +msgid ": Rename"
  +msgstr ""
  +
  +# ../plugin/rename.php:36
  +#: ../plugin/UploadedFiles.php:106 ../plugin/rename.php:36
  +msgid "Password"
  +msgstr "Mot de passe"
  +
  +# ../wikilib.php:550
  +#: ../plugin/UploadedFiles.php:107 ../wikilib.php:568
  +msgid "Delete selected files"
  +msgstr "Effacer les fichiers slectionns"
  +
   # ../plugin/VisualTour.php:55
   #: ../plugin/VisualTour.php:55
   msgid "Normal"
  @@ -213,6 +259,7 @@
   # ../plugin/security/needtologin.php:35
   #: ../plugin/Vote.php:66 ../plugin/security/needtologin.php:25
   #: ../plugin/security/needtologin.php:35 ../plugin/security/needtologin.php:45
  +#: ../plugin/security/userbased.php:60
   msgid "Please Login or make your ID on this Wiki ;)"
   msgstr "Merci de vous connecter ou de construire un ID sur ce Wiki ;)"
   
  @@ -226,6 +273,22 @@
   msgid "Did you want to Backup your wiki ?"
   msgstr "Voulez vous faire une sauvegarde de votre wiki ?"
   
  +#: ../plugin/chmod.php:18
  +#, c-format
  +msgid "Permission of \"%s\" changed !"
  +msgstr ""
  +
  +# ../wiki.php:3021
  +#: ../plugin/chmod.php:24
  +#, c-format
  +msgid "Fail to chmod \"%s\" !"
  +msgstr "Impossible de pouvoir \"%s\" !"
  +
  +#: ../plugin/chmod.php:35
  +#, c-format
  +msgid "Change permission of \"%s\""
  +msgstr ""
  +
   # ../plugin/css.php:29 ../plugin/css.php:37
   #: ../plugin/css.php:29 ../plugin/css.php:37
   msgid "Back to UserPreferences"
  @@ -247,7 +310,7 @@
   msgstr "Mot de passe :"
   
   # ../plugin/login.php:26 ../wikilib.php:1051
  -#: ../plugin/login.php:26 ../wikilib.php:1067
  +#: ../plugin/login.php:26 ../wikilib.php:1071
   msgid "Login"
   msgstr "Se connecter"
   
  @@ -277,7 +340,7 @@
   msgstr "Aucune page de manuel trouv"
   
   # ../plugin/minilogin.php:22 ../wikilib.php:1076
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1092
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1096
   msgid "Login or Join"
   msgstr "Se connecter ou se joindre "
   
  @@ -287,6 +350,15 @@
   msgid "%s or %s"
   msgstr "%s ou %s"
   
  +# ../plugin/OeKaki.php:118
  +#: ../plugin/new.php:10
  +msgid "Create a new page"
  +msgstr ""
  +
  +#: ../plugin/new.php:15
  +msgid "Enter a page name"
  +msgstr ""
  +
   # ../plugin/processor/blog.php:43 ../plugin/processor/blog.php:45
   #: ../plugin/processor/blog.php:43 ../plugin/processor/blog.php:45
   msgid "Anonymous"
  @@ -343,6 +415,48 @@
   msgid "Do you want to customize your quicklinks ?"
   msgstr "Voulez vous mettre  jour vos liens rapides ?"
   
  +#: ../plugin/rcs.php:17
  +#, c-format
  +msgid "Change options for \"%s\""
  +msgstr ""
  +
  +# ../wiki.php:3021
  +#: ../plugin/rcs.php:23
  +#, c-format
  +msgid "Fail to rcs \"%s\" !"
  +msgstr ""
  +
  +#: ../plugin/rcs.php:27
  +#, c-format
  +msgid "Change options for \"%s\" ?"
  +msgstr ""
  +
  +# ../plugin/rename.php:37
  +#: ../plugin/rcs.php:38
  +msgid "Only WikiMaster can execute rcs"
  +msgstr ""
  +
  +#: ../plugin/rcspurge.php:24
  +msgid "Invalid rcspurge range"
  +msgstr ""
  +
  +#: ../plugin/rcspurge.php:29
  +#, c-format
  +msgid "RCS purge \"%s\""
  +msgstr ""
  +
  +# ../locale/dummy.php:7
  +#: ../plugin/rdf_blog.php:31 ../plugin/rss_blog.php:31
  +msgid "Blog Changes"
  +msgstr "ModificationsBlog"
  +
  +# ../locale/dummy.php:7
  +# c-format
  +#: ../plugin/rdf_blog.php:45 ../plugin/rss_blog.php:95
  +#, c-format
  +msgid "BlogChanges at %s"
  +msgstr "ModificationsBlog at %s"
  +
   # ../plugin/rename.php:14
   #: ../plugin/rename.php:14
   #, c-format
  @@ -361,18 +475,13 @@
   msgid "Rename \"%s\" ?"
   msgstr "Renommer \"%s\" ?"
   
  -# ../plugin/rename.php:36
  -#: ../plugin/rename.php:36
  -msgid "Password"
  -msgstr "Mot de passe"
  -
   # ../plugin/rename.php:37
   #: ../plugin/rename.php:37
   msgid "Only WikiMaster can rename this page"
   msgstr "Seulement le WikiMaster peut renommer cette page"
   
   # ../plugin/rename.php:39 ../wikilib.php:588
  -#: ../plugin/rename.php:39 ../wikilib.php:604
  +#: ../plugin/rename.php:39 ../wikilib.php:608
   msgid "with revision history"
   msgstr "avec l'historique de rvision"
   
  @@ -404,18 +513,6 @@
   msgstr "Restaurer des donnes sauvegardes"
   
   # ../locale/dummy.php:7
  -#: ../plugin/rss_blog.php:31
  -msgid "Blog Changes"
  -msgstr "ModificationsBlog"
  -
  -# ../locale/dummy.php:7
  -# c-format
  -#: ../plugin/rss_blog.php:95
  -#, c-format
  -msgid "BlogChanges at %s"
  -msgstr "ModificationsBlog at %s"
  -
  -# ../locale/dummy.php:7
   #: ../plugin/rss_rc.php:50
   msgid "show changes"
   msgstr ""
  @@ -428,6 +525,22 @@
   msgid "You are not allowed to '%s' on this page"
   msgstr "Vous n'tes pas autoris  pouvoir '%s' cette page"
   
  +# ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
  +# c-format
  +#: ../plugin/security/userbased.php:28 ../plugin/security/userbased.php:36
  +#: ../plugin/security/userbased.php:44 ../plugin/security/userbased.php:59
  +#: ../plugin/security/wikimaster.php:25 ../plugin/security/wikimaster.php:33
  +#: ../plugin/security/wikimaster.php:41
  +#, c-format
  +msgid "You are not allowed to '%s' on this page."
  +msgstr "Vous n'tes pas autoris  pouvoir '%s' cette page"
  +
  +#: ../plugin/security/userbased.php:29 ../plugin/security/userbased.php:37
  +#: ../plugin/security/userbased.php:45 ../plugin/security/wikimaster.php:26
  +#: ../plugin/security/wikimaster.php:34 ../plugin/security/wikimaster.php:42
  +msgid "Please contact to WikiMaster"
  +msgstr ""
  +
   # ../plugin/sendping.php:14 ../plugin/trackback.php:41
   #: ../plugin/sendping.php:14 ../plugin/trackback.php:41
   msgid "Error: Page Not found !"
  @@ -445,7 +558,7 @@
   
   # ../plugin/sendping.php:158
   #: ../plugin/sendping.php:158
  -msgid "Trackback sented"
  +msgid "Trackback sent"
   msgstr "Trackback envoy"
   
   # ../plugin/subscribe.php:12
  @@ -529,6 +642,128 @@
   msgid "No TrackBack entry found for %s"
   msgstr "Aucune entre de TrackBack dtect pour %s"
   
  +#: ../plugin/userform.php:29
  +msgid "Successfully confirmed"
  +msgstr ""
  +
  +# ../wikilib.php:887
  +#: ../plugin/userform.php:30
  +msgid "Your e-mail address is confirmed successfully"
  +msgstr "Mail envoy avec succs"
  +
  +#: ../plugin/userform.php:32
  +msgid "Confirmation missmatched !"
  +msgstr ""
  +
  +# ../plugin/subscribe.php:22
  +#: ../plugin/userform.php:33 ../plugin/userform.php:37
  +msgid "Please try again to register your e-mail address"
  +msgstr "Merci de rentrer d'abord votre adresse de messagerie"
  +
  +# ../plugin/restore.php:27
  +#: ../plugin/userform.php:36
  +msgid "ID does not exists !"
  +msgstr "Erreur : l'archive n'existe pas"
  +
  +#: ../plugin/userform.php:52 ../plugin/userform.php:114
  +#, c-format
  +msgid "Successfully login as '%s'"
  +msgstr ""
  +
  +# ../wiki.php:3024
  +#: ../plugin/userform.php:58 ../plugin/userform.php:119
  +#: ../plugin/userform.php:147
  +msgid "Invalid password !"
  +msgstr "Merci d'entrer un mot de passe valide"
  +
  +#: ../plugin/userform.php:62
  +#, c-format
  +msgid "\"%s\" is not exists on this wiki !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:64
  +msgid "Make new ID on this wiki"
  +msgstr ""
  +
  +# ../wikilib.php:575
  +#: ../plugin/userform.php:70
  +msgid "Cookie deleted !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:81 ../plugin/userform.php:135
  +msgid "too short password!"
  +msgstr ""
  +
  +#: ../plugin/userform.php:82
  +msgid "mismatch password!"
  +msgstr ""
  +
  +#: ../plugin/userform.php:83 ../plugin/userform.php:139
  +msgid "not acceptable character found in the password!"
  +msgstr ""
  +
  +#: ../plugin/userform.php:86
  +msgid "Your password is too simple to use as a password !"
  +msgstr ""
  +
  +# ../plugin/subscribe.php:22
  +#: ../plugin/userform.php:92 ../plugin/userform.php:163
  +msgid "Your email address is not valid"
  +msgstr "Merci de rentrer d'abord votre adresse de messagerie"
  +
  +#: ../plugin/userform.php:96
  +msgid "Successfully added!"
  +msgstr ""
  +
  +#: ../plugin/userform.php:105 ../plugin/userform.php:157
  +msgid "E-mail confirmation"
  +msgstr ""
  +
  +# ../plugin/subscribe.php:22
  +#: ../plugin/userform.php:107 ../plugin/userform.php:159
  +msgid "Please confirm your email address"
  +msgstr ""
  +
  +#: ../plugin/userform.php:109 ../plugin/userform.php:161
  +msgid "E-mail confirmation mail sent"
  +msgstr ""
  +
  +#: ../plugin/userform.php:124
  +msgid "Invalid username !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:137
  +msgid "mismatch password !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:140 ../plugin/userform.php:148
  +msgid "Password is not changed !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:142
  +msgid "Password is changed !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:144
  +msgid "Password is too simple to use as a password !"
  +msgstr ""
  +
  +# ../wikilib.php:887
  +#: ../plugin/userform.php:169
  +msgid "Profiles are saved successfully !"
  +msgstr ""
  +
  +#: ../plugin/whois.php:119
  +#, c-format
  +msgid "Could not connect to %s server"
  +msgstr ""
  +
  +# ../wikilib.php:1479
  +#: ../plugin/whois.php:137
  +#, c-format
  +msgid "Whois search result for %s"
  +msgstr ""
  +
   # ../wiki.php:850
   #: ../wiki.php:861
   #, c-format
  @@ -536,80 +771,80 @@
   msgstr "Renommer %s en %s"
   
   # ../wiki.php:1824
  -#: ../wiki.php:1841
  +#: ../wiki.php:1864
   #, c-format
   msgid "See %s"
   msgstr "Voir %s"
   
   # ../wiki.php:1824
  -#: ../wiki.php:1841
  +#: ../wiki.php:1864
   msgid "TwinPages"
   msgstr ""
   
   # ../wiki.php:2110
  -#: ../wiki.php:2135
  +#: ../wiki.php:2160
   msgid "Revision History"
   msgstr "Historique de rvision"
   
   # ../wiki.php:2211 ../wiki.php:2360
  -#: ../wiki.php:2236 ../wiki.php:2384
  +#: ../wiki.php:2261 ../wiki.php:2409
   msgid "No older revisions available"
   msgstr "Aucune rvision plus ancienne disponible"
   
   # ../wiki.php:2338 ../wiki.php:2373 ../wikilib.php:770
  -#: ../wiki.php:2363 ../wiki.php:2402 ../wikilib.php:786
  +#: ../wiki.php:2388 ../wiki.php:2427 ../wikilib.php:790
   msgid "No difference found"
   msgstr "Aucune diffrence trouv"
   
   # ../wiki.php:2341
  -#: ../wiki.php:2365
  +#: ../wiki.php:2390
   msgid "Difference between yours and the current"
   msgstr "Diffrence entre votre version et la courante"
   
   # ../wiki.php:2376
  -#: ../wiki.php:2404
  +#: ../wiki.php:2429
   msgid "Difference between versions"
   msgstr "Diffrence entre les versions"
   
   # ../wiki.php:2378
  -#: ../wiki.php:2406
  +#: ../wiki.php:2431
   #, c-format
   msgid "Difference between r%s and r%s"
   msgstr "Diffrence entre r%s et r%s"
   
   # ../wiki.php:2382
  -#: ../wiki.php:2409
  +#: ../wiki.php:2434
   #, c-format
   msgid "Difference between r%s and the current"
   msgstr "Diffrence entre r%s et la version courante"
   
   # ../locale/dummy.php:6 ../wiki.php:2553
  -#: ../wiki.php:2582 ../locale/dummy.php:6
  +#: ../wiki.php:2607 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "ditionTexte"
   
   # ../wiki.php:2555
  -#: ../wiki.php:2584
  +#: ../wiki.php:2609
   msgid "NotEditable"
   msgstr "Pasditable"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wiki.php:2586 ../locale/dummy.php:6
  +#: ../wiki.php:2611 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "MontrePage"
   
   # ../locale/dummy.php:3 ../locale/dummy.php:5 ../wiki.php:2558
  -#: ../wiki.php:2587 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:2612 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "TrouvePage"
   
   # ../wiki.php:2945 ../wiki.php:2948
  -#: ../wiki.php:3014 ../wiki.php:3017
  +#: ../wiki.php:3043 ../wiki.php:3046
   msgid "Create this page"
   msgstr "Crer cette page"
   
   # ../wiki.php:2950
  -#: ../wiki.php:3019
  +#: ../wiki.php:3048
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
  @@ -617,41 +852,41 @@
   "page.\n"
   
   # ../wiki.php:2950
  -#: ../wiki.php:3019
  +#: ../wiki.php:3048
   msgid "title"
   msgstr "titre"
   
   # ../wiki.php:2956
  -#: ../wiki.php:3025
  +#: ../wiki.php:3054
   msgid " or alternativly, use one of these templates:\n"
   msgstr " ou alternativement, utiliser un de ces modles de page :\n"
   
   # ../wikilib.php:427
  -#: ../wiki.php:3028 ../wikilib.php:433
  +#: ../wiki.php:3057 ../wikilib.php:435
   msgid "To create your own templates, add a page with a 'Template' suffix.\n"
   msgstr ""
   "Pour crer vos propres modles de pages, ajouter une page avec lesuffix "
   "'Template'.\n"
   
   # ../wiki.php:3009
  -#: ../wiki.php:3084
  +#: ../wiki.php:3114
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "Vous n'tes pas autoris  '%s'"
   
   # ../wiki.php:3021
  -#: ../wiki.php:3096
  +#: ../wiki.php:3126
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "Impossible de pouvoir \"%s\" !"
   
   # ../wiki.php:3024
  -#: ../wiki.php:3099
  +#: ../wiki.php:3129
   msgid "Please enter the valid password"
   msgstr "Merci d'entrer un mot de passe valide"
   
   # ../wikilib.php:368
  -#: ../wikilib.php:373
  +#: ../wikilib.php:375
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -684,208 +919,203 @@
   "Les espaces aprs un tableau ou un titre ne sont pas autoriss.<br />\n"
   
   # ../wikilib.php:425
  -#: ../wikilib.php:431
  +#: ../wikilib.php:433
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   "Utiliser un des modles de pages qui suivent pour une premirecration :\n"
   
   # ../wikilib.php:427
  -#: ../wikilib.php:433
  +#: ../wikilib.php:435
   msgid "<br />\n"
   msgstr ""
   
   # ../wikilib.php:443
  -#: ../wikilib.php:449
  +#: ../wikilib.php:451
   msgid "Skip to preview"
   msgstr "Aller  la prvisualisation"
   
   # ../wikilib.php:445
  -#: ../wikilib.php:451
  +#: ../wikilib.php:453
   msgid "ReduceEditor"
   msgstr "Rduirediteur"
   
   # ../locale/dummy.php:6 ../wikilib.php:448
  -#: ../wikilib.php:454 ../locale/dummy.php:6
  +#: ../wikilib.php:456 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
   # ../wikilib.php:449
  -#: ../wikilib.php:455
  +#: ../wikilib.php:457
   msgid "HelpOnEditing"
   msgstr ""
   
   # ../wikilib.php:462
  -#: ../wikilib.php:472
  +#: ../wikilib.php:474
   #, c-format
   msgid "Describe %s here"
   msgstr "Dcrire %s ici"
   
   # ../wikilib.php:476
  -#: ../wikilib.php:488
  +#: ../wikilib.php:490
   msgid "--Select Category--"
   msgstr "-- Slectionner une catgorie"
   
   # ../wikilib.php:482
  -#: ../wikilib.php:494
  +#: ../wikilib.php:496
   msgid "Preview"
   msgstr "Prvisualisation"
   
   # ../wikilib.php:483 ../wikilib.php:1079
  -#: ../wikilib.php:495 ../wikilib.php:1095
  +#: ../wikilib.php:497 ../wikilib.php:1099
   msgid "Save"
   msgstr "Sauvegarder"
   
   # ../wikilib.php:484
  -#: ../wikilib.php:496
  +#: ../wikilib.php:498
   msgid "Summary of Change"
   msgstr "Sommaire des modifications"
   
   # ../wikilib.php:507
  -#: ../wikilib.php:519
  +#: ../wikilib.php:521
   #, c-format
   msgid "Info. for %s"
   msgstr "Information sur %s"
   
   # ../wikilib.php:517
  -#: ../wikilib.php:529
  +#: ../wikilib.php:531
   msgid "406 Not Acceptable"
   msgstr ""
   
   # ../wikilib.php:519
  -#: ../wikilib.php:531
  +#: ../wikilib.php:533
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s n'est pas une action valide"
   
   # ../wikilib.php:521
  -#: ../wikilib.php:533
  +#: ../wikilib.php:535
   msgid "Is it valid action ?"
   msgstr "Est-ce que c'est une action valide ?"
   
   # ../wikilib.php:540
  -#: ../wikilib.php:554
  +#: ../wikilib.php:556
   #, c-format
   msgid "File '%s' is deleted"
   msgstr "Le fichier '%s' est effac"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:556
  +#: ../wikilib.php:558
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr "Impossible d'effacer '%s'"
   
   # ../wikilib.php:545
  -#: ../wikilib.php:561
  +#: ../wikilib.php:563
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr "Le rpertoire '%s' est effac"
   
   # ../wikilib.php:547
  -#: ../wikilib.php:563
  +#: ../wikilib.php:565
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr "Impossible d'effacer le rpertoire '%s'"
   
  -# ../wikilib.php:550
  -#: ../wikilib.php:566
  -msgid "Delete selected files"
  -msgstr "Effacer les fichiers slectionns"
  -
   # ../wikilib.php:557 ../wikilib.php:559
  -#: ../wikilib.php:573 ../wikilib.php:575
  +#: ../wikilib.php:575 ../wikilib.php:577
   msgid "No files are selected !"
   msgstr "Aucun fichier n'est slectionn !"
   
   # ../wikilib.php:575
  -#: ../wikilib.php:591
  +#: ../wikilib.php:595
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr "\"%s\" est effac !"
   
   # ../wikilib.php:581
  -#: ../wikilib.php:597
  +#: ../wikilib.php:601
   msgid "Please delete this file manually."
   msgstr "Merci d'effacer ce fichier manuellement."
   
   # ../wikilib.php:583
  -#: ../wikilib.php:599
  +#: ../wikilib.php:603
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "Effacer \"%s\" ?"
   
   # ../wikilib.php:672 ../wikilib.php:1472
  -#: ../wikilib.php:688 ../wikilib.php:1488
  +#: ../wikilib.php:692 ../wikilib.php:1492
   msgid "Use more specific text"
   msgstr "Utiliser un texte plus spcifique"
   
   # ../wikilib.php:734
  -#: ../wikilib.php:750
  +#: ../wikilib.php:754
   msgid "Goto Editor"
   msgstr "Aller  l'diteur"
   
   # ../wikilib.php:743
  -#: ../wikilib.php:759
  +#: ../wikilib.php:763
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "Quelqu'un a sauvegard la page tandis que vous ditiez %s"
   
   # ../wikilib.php:748 ../wikilib.php:777
  -#: ../wikilib.php:764 ../wikilib.php:793
  +#: ../wikilib.php:768 ../wikilib.php:797
   #, c-format
   msgid "Preview of %s"
   msgstr "Prvisualisation de %s"
   
   # ../wikilib.php:755
  -#: ../wikilib.php:771
  +#: ../wikilib.php:775
   msgid "Conflict error!"
   msgstr "Erreur de conflit !"
   
   # ../wikilib.php:769
  -#: ../wikilib.php:785
  +#: ../wikilib.php:789
   #, c-format
   msgid "Go back or return to %s"
   msgstr "Revenir en arrire ou retourner  %s"
   
   # ../wikilib.php:803
  -#: ../wikilib.php:819
  +#: ../wikilib.php:823
   msgid "mail does not supported by default."
   msgstr "La messagerie n'est pas support par dfaut."
   
   # ../wikilib.php:807
  -#: ../wikilib.php:823
  +#: ../wikilib.php:827
   msgid "Sent notification mail."
   msgstr "Des notifications par messagerie ont t envoyes."
   
   # ../wikilib.php:809
  -#: ../wikilib.php:825
  +#: ../wikilib.php:829
   msgid "No subscribers found."
   msgstr "Aucun abonn trouv."
   
   # ../wikilib.php:814
  -#: ../wikilib.php:830
  +#: ../wikilib.php:834
   #, c-format
   msgid "%s is not editable"
   msgstr "%s n'est pas ditable"
   
   # ../wikilib.php:816
  -#: ../wikilib.php:832
  +#: ../wikilib.php:836
   #, c-format
   msgid "%s is saved"
   msgstr "%s est sauvegard"
   
   # ../wikilib.php:838
  -#: ../wikilib.php:854
  +#: ../wikilib.php:858
   msgid "Nobody subscribed to this page."
   msgstr "Personne n'est abonn  cette page, aucun mail envoy"
   
   # ../wikilib.php:860
  -#: ../wikilib.php:876
  +#: ../wikilib.php:880
   #, c-format
   msgid "%s page is modified"
   msgstr "la page %s est modifi"
   
   # ../wikilib.php:870
  -#: ../wikilib.php:886
  +#: ../wikilib.php:890
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
  @@ -896,52 +1126,47 @@
   "\n"
   
   # ../wikilib.php:883
  -#: ../wikilib.php:899
  +#: ../wikilib.php:903
   msgid "Send notification mails to all subscribers"
   msgstr "Envoyez un mail de notification  tous les abonns"
   
   # ../wikilib.php:887
  -#: ../wikilib.php:903
  +#: ../wikilib.php:907
   msgid "Mails are sent successfully"
   msgstr "Mail envoy avec succs"
   
   # ../wikilib.php:888
  -#: ../wikilib.php:904
  +#: ../wikilib.php:908
  +#, c-format
   msgid "mails are sent to '%s'"
   msgstr "un mail a t envoy  '%s'"
   
   # ../wikilib.php:1070
  -#: ../wikilib.php:1086
  +#: ../wikilib.php:1090
   msgid "Make profile"
   msgstr "Faire un profil"
   
   # ../wikilib.php:1071
  -#: ../wikilib.php:1087
  +#: ../wikilib.php:1091
   msgid "password again"
   msgstr "mot de passe de nouveau"
   
   # ../wikilib.php:1082
  -#: ../wikilib.php:1098
  +#: ../wikilib.php:1102
   msgid "New password"
   msgstr "Nouveau mot de passe"
   
   # ../wikilib.php:1088
  -#: ../wikilib.php:1104
  +#: ../wikilib.php:1108
   msgid "logout"
   msgstr "se dconnecter"
   
   # ../wikilib.php:1479
  -#: ../wikilib.php:1495
  +#: ../wikilib.php:1499
   #, c-format
   msgid "Title search for \"%s\""
   msgstr "Recherche de titre pour \"%s\""
   
  -# ../wikilib.php:1483
  -#: ../wikilib.php:1499
  -#, c-format
  -msgid "Invalid search expression \"%s\""
  -msgstr "Expression de recherche \"%s\" invalide"
  -
   # ../locale/dummy.php:3
   #: ../locale/dummy.php:3
   msgid "FrontPage"
  @@ -996,21 +1221,3 @@
   #: ../locale/dummy.php:7
   msgid "TrackBack"
   msgstr ""
  -
  -# ../wiki.php:1044
  -#~ msgid ""
  -#~ "You have no permission to see this page.\n"
  -#~ "\n"
  -#~ msgstr ""
  -#~ "Vous n'avez pas la permission de voir cette page.\n"
  -#~ "\n"
  -
  -# ../wiki.php:1045
  -#~ msgid "See MoniWiki/AccessControl\n"
  -#~ msgstr "Voir MoniWiki/AccessControl\n"
  -
  -# ../wiki.php:2959
  -#~ msgid "To create your own templates, add a page with a 'Template' suffix\n"
  -#~ msgstr ""
  -#~ "Pour crer votre propre modle de page, ajouter une page avec le suffix "
  -#~ "'Template'\n"
  
  
  
  1.8       +344 -166  moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- ko.po	30 Dec 2003 22:45:52 -0000	1.7
  +++ ko.po	7 Jan 2004 02:44:46 -0000	1.8
  @@ -5,7 +5,7 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: MoniWiki 1.0\n"
  -"POT-Creation-Date: 2003-12-31 07:57+0900\n"
  +"POT-Creation-Date: 2004-01-07 11:48+0900\n"
   "PO-Revision-Date: 2003-04-29 19:00+0900\n"
   "Last-Translator: Won-kyu Park <wkpark@kldp.org>\n"
   "Language-Team: ko <ko@li.org>\n"
  @@ -23,40 +23,49 @@
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:79
  +#: ../plugin/BabelFish.php:14
  +msgid "BabelFish Translation"
  +msgstr ""
  +
  +#: ../plugin/BabelFish.php:27
  +#, c-format
  +msgid "Translate %s to %s"
  +msgstr "%s %s() ϱ"
  +
  +#: ../plugin/Blog.php:80
   #, c-format
   msgid "\"%s\" is updated"
   msgstr "\"%s\"() ŵǾϴ"
   
  -#: ../plugin/Blog.php:84
  +#: ../plugin/Blog.php:85
   msgid "Add Blog"
   msgstr ""
   
  -#: ../plugin/Blog.php:138
  +#: ../plugin/Blog.php:139
   #, c-format
   msgid "Comment added to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:141
  +#: ../plugin/Blog.php:142
   #, c-format
   msgid "Blog entry added to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:177
  +#: ../plugin/Blog.php:178
   #, c-format
   msgid "Add Comment to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:179
  +#: ../plugin/Blog.php:180
   #, c-format
   msgid "Add Blog entry to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:198
  +#: ../plugin/Blog.php:199
   msgid "Don't add a signature"
   msgstr ""
   
  -#: ../plugin/Blog.php:211
  +#: ../plugin/Blog.php:212
   msgid "<b>horizontal rule</b> ---- does not applied on the blog mode."
   msgstr "<b>μ</b> ---- α   ʽϴ."
   
  @@ -64,37 +73,11 @@
   msgid "Previous"
   msgstr ""
   
  -#: ../plugin/Board.php:24
  -msgid "No articles found"
  -msgstr " ϴ"
  -
  -#: ../plugin/Board.php:67
  -#, c-format
  -msgid "Comment is added to \"%s\""
  -msgstr ""
  -
  -#: ../plugin/Board.php:68 ../plugin/Board.php:79
  -#, c-format
  -msgid "Add article to \"%s\""
  -msgstr ""
  -
  -#: ../plugin/Board.php:82
  -msgid "Name"
  -msgstr ""
  -
  -#: ../plugin/Board.php:83
  -msgid "Email"
  -msgstr ""
  -
  -#: ../plugin/Board.php:85
  -msgid "Title"
  -msgstr ""
  -
   #: ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
   msgid "Draw new picture"
   msgstr ""
   
  -#: ../plugin/Draw.php:49
  +#: ../plugin/Draw.php:49 ../plugin/UploadFile.php:81
   #, c-format
   msgid "Fail to copy \"%s\" to \"%s\""
   msgstr ""
  @@ -129,16 +112,55 @@
   msgid "%d day(s) passed from %s."
   msgstr "%2$sκ %1$d ϴ."
   
  -#: ../plugin/FastSearch.php:116
  +#: ../plugin/FastSearch.php:116 ../plugin/FullSearch.php:17
   #, c-format
   msgid "Full text search for \"%s\""
   msgstr "\"%s\"() ü ãƺ"
   
  -#: ../plugin/FastSearch.php:125
  +#: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:26
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr ""
   
  +#: ../plugin/FullSearch.php:15
  +#, c-format
  +msgid "BackLinks search for \"%s\""
  +msgstr "\"%s\"  ũ ã"
  +
  +#: ../plugin/FullSearch.php:71 ../wikilib.php:1503
  +#, c-format
  +msgid "Invalid search expression \"%s\""
  +msgstr ""
  +
  +#: ../plugin/LikePages.php:109
  +msgid "These pages share a similar word..."
  +msgstr ""
  +
  +#: ../plugin/LikePages.php:122
  +msgid "These pages share an initial or final title word..."
  +msgstr ""
  +
  +#: ../plugin/LikePages.php:140
  +msgid "If you can't find this page, "
  +msgstr ""
  +
  +#: ../plugin/LikePages.php:145
  +msgid "No similar pages found"
  +msgstr "  ϴ"
  +
  +#: ../plugin/LikePages.php:146
  +msgid "You are strongly recommened to find it in MetaWikis. "
  +msgstr ""
  +
  +#: ../plugin/LikePages.php:149
  +#, c-format
  +msgid "Like \"%s\""
  +msgstr ""
  +
  +#: ../plugin/LikePages.php:151
  +msgid "Search all MetaWikis"
  +msgstr ""
  +
   #: ../plugin/OeKaki.php:118
   msgid "Create new picture"
   msgstr " ׸ "
  @@ -147,17 +169,20 @@
   msgid "Edit Image"
   msgstr "׸ ġ"
   
  -#: ../plugin/PostPage.php:13
  -#, c-format
  -msgid "Post \"%s\" to someone"
  -msgstr ""
  +#: ../plugin/RecentChanges.php:146
  +msgid "set bookmark"
  +msgstr "ϸũ"
  +
  +#: ../plugin/Trail.php:14
  +msgid "No Index page found"
  +msgstr "ε  ϴ"
   
   #: ../plugin/TwinPages.php:13
   #, c-format
   msgid "TwinPages of %s"
   msgstr "%s ֵ "
   
  -#: ../plugin/TwinPages.php:18 ../wiki.php:1845 ../wiki.php:3012
  +#: ../plugin/TwinPages.php:18 ../wiki.php:1868 ../wiki.php:3041
   msgid "See TwinPages: "
   msgstr ""
   
  @@ -165,6 +190,23 @@
   msgid "No TwinPages found."
   msgstr "ֵ  ϴ"
   
  +#: ../plugin/UploadFile.php:92
  +#, c-format
  +msgid "File \"%s\" is uploaded successfully"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:106
  +msgid ": Rename"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:106 ../plugin/rename.php:36
  +msgid "Password"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:107 ../wikilib.php:568
  +msgid "Delete selected files"
  +msgstr ""
  +
   #: ../plugin/VisualTour.php:55
   msgid "Normal"
   msgstr ""
  @@ -179,6 +221,7 @@
   
   #: ../plugin/Vote.php:66 ../plugin/security/needtologin.php:25
   #: ../plugin/security/needtologin.php:35 ../plugin/security/needtologin.php:45
  +#: ../plugin/security/userbased.php:60
   msgid "Please Login or make your ID on this Wiki ;)"
   msgstr "αϰų ID 弼 ;)"
   
  @@ -190,6 +233,21 @@
   msgid "Did you want to Backup your wiki ?"
   msgstr ""
   
  +#: ../plugin/chmod.php:18
  +#, c-format
  +msgid "Permission of \"%s\" changed !"
  +msgstr ""
  +
  +#: ../plugin/chmod.php:24
  +#, c-format
  +msgid "Fail to chmod \"%s\" !"
  +msgstr ""
  +
  +#: ../plugin/chmod.php:35
  +#, c-format
  +msgid "Change permission of \"%s\""
  +msgstr ""
  +
   #: ../plugin/css.php:29 ../plugin/css.php:37
   msgid "Back to UserPreferences"
   msgstr "UserPreferences "
  @@ -206,7 +264,7 @@
   msgid "Password:"
   msgstr ""
   
  -#: ../plugin/login.php:26 ../wikilib.php:1067
  +#: ../plugin/login.php:26 ../wikilib.php:1071
   msgid "Login"
   msgstr ""
   
  @@ -230,7 +288,7 @@
   msgid "No manpage found"
   msgstr "Manpage ϴ"
   
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1092
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1096
   msgid "Login or Join"
   msgstr ""
   
  @@ -239,6 +297,14 @@
   msgid "%s or %s"
   msgstr "%s Ȥ %s"
   
  +#: ../plugin/new.php:10
  +msgid "Create a new page"
  +msgstr " "
  +
  +#: ../plugin/new.php:15
  +msgid "Enter a page name"
  +msgstr " ̸ "
  +
   #: ../plugin/processor/blog.php:43 ../plugin/processor/blog.php:45
   msgid "Anonymous"
   msgstr ""
  @@ -283,6 +349,44 @@
   msgid "Do you want to customize your quicklinks ?"
   msgstr ""
   
  +#: ../plugin/rcs.php:17
  +#, c-format
  +msgid "Change options for \"%s\""
  +msgstr ""
  +
  +#: ../plugin/rcs.php:23
  +#, c-format
  +msgid "Fail to rcs \"%s\" !"
  +msgstr ""
  +
  +#: ../plugin/rcs.php:27
  +#, c-format
  +msgid "Change options for \"%s\" ?"
  +msgstr ""
  +
  +#: ../plugin/rcs.php:38
  +msgid "Only WikiMaster can execute rcs"
  +msgstr ""
  +
  +#: ../plugin/rcspurge.php:24
  +msgid "Invalid rcspurge range"
  +msgstr ""
  +
  +#: ../plugin/rcspurge.php:29
  +#, c-format
  +msgid "RCS purge \"%s\""
  +msgstr ""
  +
  +#: ../plugin/rdf_blog.php:31 ../plugin/rss_blog.php:31
  +msgid "Blog Changes"
  +msgstr "ٲ α"
  +
  +# c-format
  +#: ../plugin/rdf_blog.php:45 ../plugin/rss_blog.php:95
  +#, c-format
  +msgid "BlogChanges at %s"
  +msgstr ""
  +
   #: ../plugin/rename.php:14
   #, c-format
   msgid "\"%s\" is renamed !"
  @@ -298,15 +402,11 @@
   msgid "Rename \"%s\" ?"
   msgstr "\"%s\" ̸ ٲܱ ?"
   
  -#: ../plugin/rename.php:36
  -msgid "Password"
  -msgstr ""
  -
   #: ../plugin/rename.php:37
   msgid "Only WikiMaster can rename this page"
   msgstr ""
   
  -#: ../plugin/rename.php:39 ../wikilib.php:604
  +#: ../plugin/rename.php:39 ../wikilib.php:608
   msgid "with revision history"
   msgstr " 丮 Բ"
   
  @@ -332,16 +432,6 @@
   msgid "Restore backuped data"
   msgstr ""
   
  -#: ../plugin/rss_blog.php:31
  -msgid "Blog Changes"
  -msgstr "ٲ α"
  -
  -# c-format
  -#: ../plugin/rss_blog.php:95
  -#, c-format
  -msgid "BlogChanges at %s"
  -msgstr ""
  -
   #: ../plugin/rss_rc.php:50
   msgid "show changes"
   msgstr ""
  @@ -352,6 +442,20 @@
   msgid "You are not allowed to '%s' on this page"
   msgstr "'%s'   ׼Դϴ."
   
  +#: ../plugin/security/userbased.php:28 ../plugin/security/userbased.php:36
  +#: ../plugin/security/userbased.php:44 ../plugin/security/userbased.php:59
  +#: ../plugin/security/wikimaster.php:25 ../plugin/security/wikimaster.php:33
  +#: ../plugin/security/wikimaster.php:41
  +#, c-format
  +msgid "You are not allowed to '%s' on this page."
  +msgstr "'%s'   ׼Դϴ."
  +
  +#: ../plugin/security/userbased.php:29 ../plugin/security/userbased.php:37
  +#: ../plugin/security/userbased.php:45 ../plugin/security/wikimaster.php:26
  +#: ../plugin/security/wikimaster.php:34 ../plugin/security/wikimaster.php:42
  +msgid "Please contact to WikiMaster"
  +msgstr ""
  +
   #: ../plugin/sendping.php:14 ../plugin/trackback.php:41
   msgid "Error: Page Not found !"
   msgstr ""
  @@ -435,102 +539,215 @@
   msgid "No TrackBack entry found for %s"
   msgstr ""
   
  +#: ../plugin/userform.php:29
  +msgid "Successfully confirmed"
  +msgstr ""
  +
  +#: ../plugin/userform.php:30
  +msgid "Your e-mail address is confirmed successfully"
  +msgstr "̸ ּ Ȯ ϷǾϴ"
  +
  +#: ../plugin/userform.php:32
  +msgid "Confirmation missmatched !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:33 ../plugin/userform.php:37
  +msgid "Please try again to register your e-mail address"
  +msgstr "̸ ּ  ٽ ϼ"
  +
  +#: ../plugin/userform.php:36
  +msgid "ID does not exists !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:52 ../plugin/userform.php:114
  +#, c-format
  +msgid "Successfully login as '%s'"
  +msgstr ""
  +
  +#: ../plugin/userform.php:58 ../plugin/userform.php:119
  +#: ../plugin/userform.php:147
  +msgid "Invalid password !"
  +msgstr "߸ йȣ !"
  +
  +#: ../plugin/userform.php:62
  +#, c-format
  +msgid "\"%s\" is not exists on this wiki !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:64
  +msgid "Make new ID on this wiki"
  +msgstr ""
  +
  +#: ../plugin/userform.php:70
  +msgid "Cookie deleted !"
  +msgstr "Ű ϴ !"
  +
  +#: ../plugin/userform.php:81 ../plugin/userform.php:135
  +msgid "too short password!"
  +msgstr "йȣ ªϴ"
  +
  +#: ../plugin/userform.php:82
  +msgid "mismatch password!"
  +msgstr "йȣ  ʽϴ!"
  +
  +#: ../plugin/userform.php:83 ../plugin/userform.php:139
  +msgid "not acceptable character found in the password!"
  +msgstr ""
  +
  +#: ../plugin/userform.php:86
  +msgid "Your password is too simple to use as a password !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:92 ../plugin/userform.php:163
  +msgid "Your email address is not valid"
  +msgstr "̸ ּҰ ߸ Ǿϴ"
  +
  +#: ../plugin/userform.php:96
  +msgid "Successfully added!"
  +msgstr ""
  +
  +#: ../plugin/userform.php:105 ../plugin/userform.php:157
  +msgid "E-mail confirmation"
  +msgstr ""
  +
  +#: ../plugin/userform.php:107 ../plugin/userform.php:159
  +msgid "Please confirm your email address"
  +msgstr "̸ ּҸ Ȯ ּ"
  +
  +#: ../plugin/userform.php:109 ../plugin/userform.php:161
  +msgid "E-mail confirmation mail sent"
  +msgstr ""
  +
  +#: ../plugin/userform.php:124
  +msgid "Invalid username !"
  +msgstr "߸ ̸ !"
  +
  +#: ../plugin/userform.php:137
  +msgid "mismatch password !"
  +msgstr "߸ йȣ !"
  +
  +#: ../plugin/userform.php:140 ../plugin/userform.php:148
  +msgid "Password is not changed !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:142
  +msgid "Password is changed !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:144
  +msgid "Password is too simple to use as a password !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:169
  +msgid "Profiles are saved successfully !"
  +msgstr "   Ǿϴ !"
  +
  +#: ../plugin/whois.php:119
  +#, c-format
  +msgid "Could not connect to %s server"
  +msgstr ""
  +
  +#: ../plugin/whois.php:137
  +#, c-format
  +msgid "Whois search result for %s"
  +msgstr "%s  Whois ġ "
  +
   #: ../wiki.php:861
   #, c-format
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1841
  +#: ../wiki.php:1864
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:1841
  +#: ../wiki.php:1864
   msgid "TwinPages"
   msgstr "TwinPages"
   
  -#: ../wiki.php:2135
  +#: ../wiki.php:2160
   msgid "Revision History"
   msgstr " 丮"
   
  -#: ../wiki.php:2236 ../wiki.php:2384
  +#: ../wiki.php:2261 ../wiki.php:2409
   msgid "No older revisions available"
   msgstr "  ϴ"
   
  -#: ../wiki.php:2363 ../wiki.php:2402 ../wikilib.php:786
  +#: ../wiki.php:2388 ../wiki.php:2427 ../wikilib.php:790
   msgid "No difference found"
   msgstr "ȭ ϴ"
   
  -#: ../wiki.php:2365
  +#: ../wiki.php:2390
   msgid "Difference between yours and the current"
   msgstr ""
   
  -#: ../wiki.php:2404
  +#: ../wiki.php:2429
   msgid "Difference between versions"
   msgstr ""
   
  -#: ../wiki.php:2406
  +#: ../wiki.php:2431
   #, c-format
   msgid "Difference between r%s and r%s"
   msgstr "r%s r%s "
   
  -#: ../wiki.php:2409
  +#: ../wiki.php:2434
   #, c-format
   msgid "Difference between r%s and the current"
   msgstr "r%s   "
   
  -#: ../wiki.php:2582 ../locale/dummy.php:6
  +#: ../wiki.php:2607 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "ġ"
   
  -#: ../wiki.php:2584
  +#: ../wiki.php:2609
   msgid "NotEditable"
   msgstr "ĥ "
   
  -#: ../wiki.php:2586 ../locale/dummy.php:6
  +#: ../wiki.php:2611 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:2587 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:2612 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "ã"
   
  -#: ../wiki.php:3014 ../wiki.php:3017
  +#: ../wiki.php:3043 ../wiki.php:3046
   msgid "Create this page"
   msgstr " "
   
  -#: ../wiki.php:3019
  +#: ../wiki.php:3048
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
   
  -#: ../wiki.php:3019
  +#: ../wiki.php:3048
   msgid "title"
   msgstr ""
   
  -#: ../wiki.php:3025
  +#: ../wiki.php:3054
   msgid " or alternativly, use one of these templates:\n"
   msgstr " Ȥ Ʒ øƮ  ̿ϼ:\n"
   
  -#: ../wiki.php:3028 ../wikilib.php:433
  +#: ../wiki.php:3057 ../wikilib.php:435
   msgid "To create your own templates, add a page with a 'Template' suffix.\n"
   msgstr "øƮ ÷ Template ̸   弼.\n"
   
  -#: ../wiki.php:3084
  +#: ../wiki.php:3114
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr ""
   
  -#: ../wiki.php:3096
  +#: ../wiki.php:3126
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:3099
  +#: ../wiki.php:3129
   msgid "Please enter the valid password"
   msgstr "Ȯ йȣ ־ּ"
   
  -#: ../wikilib.php:373
  +#: ../wikilib.php:375
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -559,213 +776,204 @@
   "<b>̺</b>: ||   |||| ĭ ģ  ||;<br />\n"
   "̺̳     ȵ˴ϴ.<br />\n"
   
  -#: ../wikilib.php:431
  +#: ../wikilib.php:433
   msgid "Use one of the following templates as an initial release :\n"
   msgstr "ó   øƮ Ȱϼ :\n"
   
  -#: ../wikilib.php:433
  +#: ../wikilib.php:435
   msgid "<br />\n"
   msgstr ""
   
  -#: ../wikilib.php:449
  +#: ../wikilib.php:451
   msgid "Skip to preview"
   msgstr "̸"
   
  -#: ../wikilib.php:451
  +#: ../wikilib.php:453
   msgid "ReduceEditor"
   msgstr "â ̱"
   
  -#: ../wikilib.php:454 ../locale/dummy.php:6
  +#: ../wikilib.php:456 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr "Ű"
   
  -#: ../wikilib.php:455
  +#: ../wikilib.php:457
   msgid "HelpOnEditing"
   msgstr "ġ "
   
  -#: ../wikilib.php:472
  +#: ../wikilib.php:474
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:488
  +#: ../wikilib.php:490
   msgid "--Select Category--"
   msgstr ""
   
  -#: ../wikilib.php:494
  +#: ../wikilib.php:496
   msgid "Preview"
   msgstr "̸"
   
  -#: ../wikilib.php:495 ../wikilib.php:1095
  +#: ../wikilib.php:497 ../wikilib.php:1099
   msgid "Save"
   msgstr ""
   
  -#: ../wikilib.php:496
  +#: ../wikilib.php:498
   msgid "Summary of Change"
   msgstr "ٲ "
   
  -#: ../wikilib.php:519
  +#: ../wikilib.php:521
   #, c-format
   msgid "Info. for %s"
   msgstr "%s "
   
  -#: ../wikilib.php:529
  +#: ../wikilib.php:531
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:531
  +#: ../wikilib.php:533
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s() ȿ ׼ ƴմϴ"
   
  -#: ../wikilib.php:533
  +#: ../wikilib.php:535
   msgid "Is it valid action ?"
   msgstr ""
   
  -#: ../wikilib.php:554
  +#: ../wikilib.php:556
   #, c-format
   msgid "File '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:556
  +#: ../wikilib.php:558
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr ""
   
  -#: ../wikilib.php:561
  +#: ../wikilib.php:563
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:563
  +#: ../wikilib.php:565
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr ""
   
  -#: ../wikilib.php:566
  -msgid "Delete selected files"
  -msgstr ""
  -
  -#: ../wikilib.php:573 ../wikilib.php:575
  +#: ../wikilib.php:575 ../wikilib.php:577
   msgid "No files are selected !"
   msgstr " õ ʾҽϴ !"
   
  -#: ../wikilib.php:591
  +#: ../wikilib.php:595
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr ""
   
  -#: ../wikilib.php:597
  +#: ../wikilib.php:601
   msgid "Please delete this file manually."
   msgstr ""
   
  -#: ../wikilib.php:599
  +#: ../wikilib.php:603
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "\"%s\"()  ?"
   
  -#: ../wikilib.php:688 ../wikilib.php:1488
  +#: ../wikilib.php:692 ../wikilib.php:1492
   msgid "Use more specific text"
   msgstr "  ڼ Էϼ"
   
  -#: ../wikilib.php:750
  +#: ../wikilib.php:754
   msgid "Goto Editor"
   msgstr " "
   
  -#: ../wikilib.php:759
  +#: ../wikilib.php:763
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "%s() ġ  ٸ    ߽ϴ"
   
  -#: ../wikilib.php:764 ../wikilib.php:793
  +#: ../wikilib.php:768 ../wikilib.php:797
   #, c-format
   msgid "Preview of %s"
   msgstr "%s ̸"
   
  -#: ../wikilib.php:771
  +#: ../wikilib.php:775
   msgid "Conflict error!"
   msgstr "浹!"
   
  -#: ../wikilib.php:785
  +#: ../wikilib.php:789
   #, c-format
   msgid "Go back or return to %s"
   msgstr "ڷ Ȥ %s() "
   
  -#: ../wikilib.php:819
  +#: ../wikilib.php:823
   msgid "mail does not supported by default."
   msgstr ""
   
  -#: ../wikilib.php:823
  +#: ../wikilib.php:827
   msgid "Sent notification mail."
   msgstr ""
   
  -#: ../wikilib.php:825
  +#: ../wikilib.php:829
   msgid "No subscribers found."
   msgstr "ڰ ϴ"
   
  -#: ../wikilib.php:830
  +#: ../wikilib.php:834
   #, c-format
   msgid "%s is not editable"
   msgstr "%s()   ϴ"
   
  -#: ../wikilib.php:832
  +#: ../wikilib.php:836
   #, c-format
   msgid "%s is saved"
   msgstr "%s() Ǿϴ"
   
  -#: ../wikilib.php:854
  +#: ../wikilib.php:858
   msgid "Nobody subscribed to this page."
   msgstr ""
   
  -#: ../wikilib.php:876
  +#: ../wikilib.php:880
   #, c-format
   msgid "%s page is modified"
   msgstr ""
   
  -#: ../wikilib.php:886
  +#: ../wikilib.php:890
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:899
  +#: ../wikilib.php:903
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:903
  +#: ../wikilib.php:907
   msgid "Mails are sent successfully"
   msgstr ""
   
  -#: ../wikilib.php:904
  +#: ../wikilib.php:908
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1086
  +#: ../wikilib.php:1090
   msgid "Make profile"
   msgstr ""
   
  -#: ../wikilib.php:1087
  +#: ../wikilib.php:1091
   msgid "password again"
   msgstr ""
   
  -#: ../wikilib.php:1098
  +#: ../wikilib.php:1102
   msgid "New password"
   msgstr " йȣ"
   
  -#: ../wikilib.php:1104
  +#: ../wikilib.php:1108
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:1495
  -#, c-format
  -msgid "Title search for \"%s\""
  -msgstr ""
  -
   #: ../wikilib.php:1499
   #, c-format
  -msgid "Invalid search expression \"%s\""
  +msgid "Title search for \"%s\""
   msgstr ""
   
   #: ../locale/dummy.php:3
  @@ -811,33 +1019,3 @@
   #: ../locale/dummy.php:7
   msgid "TrackBack"
   msgstr "Ʈ"
  -
  -#~ msgid "To create your own templates, add a page with a 'Template' suffix\n"
  -#~ msgstr "\n"
  -
  -#~ msgid "BackLinks search for \"%s\""
  -#~ msgstr "\"%s\"  ũ ã"
  -
  -#~ msgid "Create a new page"
  -#~ msgstr " "
  -
  -#~ msgid "Enter a page name"
  -#~ msgstr " ̸ "
  -
  -#~ msgid "Please try again to register your e-mail address"
  -#~ msgstr "̸ ּ  ٽ ϼ"
  -
  -#~ msgid "Invalid password !"
  -#~ msgstr "߸ йȣ !"
  -
  -#~ msgid "too short password!"
  -#~ msgstr "йȣ ªϴ"
  -
  -#~ msgid "Your email address is not valid"
  -#~ msgstr "̸ ּҰ ߸ Ǿϴ"
  -
  -#~ msgid "Please confirm your email address"
  -#~ msgstr "̸ ּҸ Ȯ ּ"
  -
  -#~ msgid "set bookmark"
  -#~ msgstr "ϸũ"
  
  
  
  1.8       +343 -135  moniwiki/locale/po/moniwiki.pot
  
  Index: moniwiki.pot
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/moniwiki.pot,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- moniwiki.pot	30 Dec 2003 22:45:52 -0000	1.7
  +++ moniwiki.pot	7 Jan 2004 02:44:46 -0000	1.8
  @@ -6,7 +6,7 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: PACKAGE VERSION\n"
  -"POT-Creation-Date: 2003-12-31 07:57+0900\n"
  +"POT-Creation-Date: 2004-01-07 11:48+0900\n"
   "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
   "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
   "Language-Team: LANGUAGE <LL@li.org>\n"
  @@ -24,40 +24,49 @@
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:79
  +#: ../plugin/BabelFish.php:14
  +msgid "BabelFish Translation"
  +msgstr ""
  +
  +#: ../plugin/BabelFish.php:27
  +#, c-format
  +msgid "Translate %s to %s"
  +msgstr ""
  +
  +#: ../plugin/Blog.php:80
   #, c-format
   msgid "\"%s\" is updated"
   msgstr ""
   
  -#: ../plugin/Blog.php:84
  +#: ../plugin/Blog.php:85
   msgid "Add Blog"
   msgstr ""
   
  -#: ../plugin/Blog.php:138
  +#: ../plugin/Blog.php:139
   #, c-format
   msgid "Comment added to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:141
  +#: ../plugin/Blog.php:142
   #, c-format
   msgid "Blog entry added to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:177
  +#: ../plugin/Blog.php:178
   #, c-format
   msgid "Add Comment to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:179
  +#: ../plugin/Blog.php:180
   #, c-format
   msgid "Add Blog entry to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:198
  +#: ../plugin/Blog.php:199
   msgid "Don't add a signature"
   msgstr ""
   
  -#: ../plugin/Blog.php:211
  +#: ../plugin/Blog.php:212
   msgid "<b>horizontal rule</b> ---- does not applied on the blog mode."
   msgstr ""
   
  @@ -65,37 +74,11 @@
   msgid "Previous"
   msgstr ""
   
  -#: ../plugin/Board.php:24
  -msgid "No articles found"
  -msgstr ""
  -
  -#: ../plugin/Board.php:67
  -#, c-format
  -msgid "Comment is added to \"%s\""
  -msgstr ""
  -
  -#: ../plugin/Board.php:68 ../plugin/Board.php:79
  -#, c-format
  -msgid "Add article to \"%s\""
  -msgstr ""
  -
  -#: ../plugin/Board.php:82
  -msgid "Name"
  -msgstr ""
  -
  -#: ../plugin/Board.php:83
  -msgid "Email"
  -msgstr ""
  -
  -#: ../plugin/Board.php:85
  -msgid "Title"
  -msgstr ""
  -
   #: ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
   msgid "Draw new picture"
   msgstr ""
   
  -#: ../plugin/Draw.php:49
  +#: ../plugin/Draw.php:49 ../plugin/UploadFile.php:81
   #, c-format
   msgid "Fail to copy \"%s\" to \"%s\""
   msgstr ""
  @@ -130,16 +113,55 @@
   msgid "%d day(s) passed from %s."
   msgstr ""
   
  -#: ../plugin/FastSearch.php:116
  +#: ../plugin/FastSearch.php:116 ../plugin/FullSearch.php:17
   #, c-format
   msgid "Full text search for \"%s\""
   msgstr ""
   
  -#: ../plugin/FastSearch.php:125
  +#: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:26
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr ""
   
  +#: ../plugin/FullSearch.php:15
  +#, c-format
  +msgid "BackLinks search for \"%s\""
  +msgstr ""
  +
  +#: ../plugin/FullSearch.php:71 ../wikilib.php:1503
  +#, c-format
  +msgid "Invalid search expression \"%s\""
  +msgstr ""
  +
  +#: ../plugin/LikePages.php:109
  +msgid "These pages share a similar word..."
  +msgstr ""
  +
  +#: ../plugin/LikePages.php:122
  +msgid "These pages share an initial or final title word..."
  +msgstr ""
  +
  +#: ../plugin/LikePages.php:140
  +msgid "If you can't find this page, "
  +msgstr ""
  +
  +#: ../plugin/LikePages.php:145
  +msgid "No similar pages found"
  +msgstr ""
  +
  +#: ../plugin/LikePages.php:146
  +msgid "You are strongly recommened to find it in MetaWikis. "
  +msgstr ""
  +
  +#: ../plugin/LikePages.php:149
  +#, c-format
  +msgid "Like \"%s\""
  +msgstr ""
  +
  +#: ../plugin/LikePages.php:151
  +msgid "Search all MetaWikis"
  +msgstr ""
  +
   #: ../plugin/OeKaki.php:118
   msgid "Create new picture"
   msgstr ""
  @@ -148,9 +170,12 @@
   msgid "Edit Image"
   msgstr ""
   
  -#: ../plugin/PostPage.php:13
  -#, c-format
  -msgid "Post \"%s\" to someone"
  +#: ../plugin/RecentChanges.php:146
  +msgid "set bookmark"
  +msgstr ""
  +
  +#: ../plugin/Trail.php:14
  +msgid "No Index page found"
   msgstr ""
   
   #: ../plugin/TwinPages.php:13
  @@ -158,7 +183,7 @@
   msgid "TwinPages of %s"
   msgstr ""
   
  -#: ../plugin/TwinPages.php:18 ../wiki.php:1845 ../wiki.php:3012
  +#: ../plugin/TwinPages.php:18 ../wiki.php:1868 ../wiki.php:3041
   msgid "See TwinPages: "
   msgstr ""
   
  @@ -166,6 +191,23 @@
   msgid "No TwinPages found."
   msgstr ""
   
  +#: ../plugin/UploadFile.php:92
  +#, c-format
  +msgid "File \"%s\" is uploaded successfully"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:106
  +msgid ": Rename"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:106 ../plugin/rename.php:36
  +msgid "Password"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:107 ../wikilib.php:568
  +msgid "Delete selected files"
  +msgstr ""
  +
   #: ../plugin/VisualTour.php:55
   msgid "Normal"
   msgstr ""
  @@ -180,6 +222,7 @@
   
   #: ../plugin/Vote.php:66 ../plugin/security/needtologin.php:25
   #: ../plugin/security/needtologin.php:35 ../plugin/security/needtologin.php:45
  +#: ../plugin/security/userbased.php:60
   msgid "Please Login or make your ID on this Wiki ;)"
   msgstr ""
   
  @@ -191,6 +234,21 @@
   msgid "Did you want to Backup your wiki ?"
   msgstr ""
   
  +#: ../plugin/chmod.php:18
  +#, c-format
  +msgid "Permission of \"%s\" changed !"
  +msgstr ""
  +
  +#: ../plugin/chmod.php:24
  +#, c-format
  +msgid "Fail to chmod \"%s\" !"
  +msgstr ""
  +
  +#: ../plugin/chmod.php:35
  +#, c-format
  +msgid "Change permission of \"%s\""
  +msgstr ""
  +
   #: ../plugin/css.php:29 ../plugin/css.php:37
   msgid "Back to UserPreferences"
   msgstr ""
  @@ -207,7 +265,7 @@
   msgid "Password:"
   msgstr ""
   
  -#: ../plugin/login.php:26 ../wikilib.php:1067
  +#: ../plugin/login.php:26 ../wikilib.php:1071
   msgid "Login"
   msgstr ""
   
  @@ -231,7 +289,7 @@
   msgid "No manpage found"
   msgstr ""
   
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1092
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1096
   msgid "Login or Join"
   msgstr ""
   
  @@ -240,6 +298,14 @@
   msgid "%s or %s"
   msgstr ""
   
  +#: ../plugin/new.php:10
  +msgid "Create a new page"
  +msgstr ""
  +
  +#: ../plugin/new.php:15
  +msgid "Enter a page name"
  +msgstr ""
  +
   #: ../plugin/processor/blog.php:43 ../plugin/processor/blog.php:45
   msgid "Anonymous"
   msgstr ""
  @@ -284,6 +350,43 @@
   msgid "Do you want to customize your quicklinks ?"
   msgstr ""
   
  +#: ../plugin/rcs.php:17
  +#, c-format
  +msgid "Change options for \"%s\""
  +msgstr ""
  +
  +#: ../plugin/rcs.php:23
  +#, c-format
  +msgid "Fail to rcs \"%s\" !"
  +msgstr ""
  +
  +#: ../plugin/rcs.php:27
  +#, c-format
  +msgid "Change options for \"%s\" ?"
  +msgstr ""
  +
  +#: ../plugin/rcs.php:38
  +msgid "Only WikiMaster can execute rcs"
  +msgstr ""
  +
  +#: ../plugin/rcspurge.php:24
  +msgid "Invalid rcspurge range"
  +msgstr ""
  +
  +#: ../plugin/rcspurge.php:29
  +#, c-format
  +msgid "RCS purge \"%s\""
  +msgstr ""
  +
  +#: ../plugin/rdf_blog.php:31 ../plugin/rss_blog.php:31
  +msgid "Blog Changes"
  +msgstr ""
  +
  +#: ../plugin/rdf_blog.php:45 ../plugin/rss_blog.php:95
  +#, c-format
  +msgid "BlogChanges at %s"
  +msgstr ""
  +
   #: ../plugin/rename.php:14
   #, c-format
   msgid "\"%s\" is renamed !"
  @@ -299,15 +402,11 @@
   msgid "Rename \"%s\" ?"
   msgstr ""
   
  -#: ../plugin/rename.php:36
  -msgid "Password"
  -msgstr ""
  -
   #: ../plugin/rename.php:37
   msgid "Only WikiMaster can rename this page"
   msgstr ""
   
  -#: ../plugin/rename.php:39 ../wikilib.php:604
  +#: ../plugin/rename.php:39 ../wikilib.php:608
   msgid "with revision history"
   msgstr ""
   
  @@ -333,15 +432,6 @@
   msgid "Restore backuped data"
   msgstr ""
   
  -#: ../plugin/rss_blog.php:31
  -msgid "Blog Changes"
  -msgstr ""
  -
  -#: ../plugin/rss_blog.php:95
  -#, c-format
  -msgid "BlogChanges at %s"
  -msgstr ""
  -
   #: ../plugin/rss_rc.php:50
   msgid "show changes"
   msgstr ""
  @@ -352,6 +442,20 @@
   msgid "You are not allowed to '%s' on this page"
   msgstr ""
   
  +#: ../plugin/security/userbased.php:28 ../plugin/security/userbased.php:36
  +#: ../plugin/security/userbased.php:44 ../plugin/security/userbased.php:59
  +#: ../plugin/security/wikimaster.php:25 ../plugin/security/wikimaster.php:33
  +#: ../plugin/security/wikimaster.php:41
  +#, c-format
  +msgid "You are not allowed to '%s' on this page."
  +msgstr ""
  +
  +#: ../plugin/security/userbased.php:29 ../plugin/security/userbased.php:37
  +#: ../plugin/security/userbased.php:45 ../plugin/security/wikimaster.php:26
  +#: ../plugin/security/wikimaster.php:34 ../plugin/security/wikimaster.php:42
  +msgid "Please contact to WikiMaster"
  +msgstr ""
  +
   #: ../plugin/sendping.php:14 ../plugin/trackback.php:41
   msgid "Error: Page Not found !"
   msgstr ""
  @@ -365,7 +469,7 @@
   msgstr ""
   
   #: ../plugin/sendping.php:158
  -msgid "Trackback sented"
  +msgid "Trackback sent"
   msgstr ""
   
   #: ../plugin/subscribe.php:12
  @@ -431,102 +535,215 @@
   msgid "No TrackBack entry found for %s"
   msgstr ""
   
  +#: ../plugin/userform.php:29
  +msgid "Successfully confirmed"
  +msgstr ""
  +
  +#: ../plugin/userform.php:30
  +msgid "Your e-mail address is confirmed successfully"
  +msgstr ""
  +
  +#: ../plugin/userform.php:32
  +msgid "Confirmation missmatched !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:33 ../plugin/userform.php:37
  +msgid "Please try again to register your e-mail address"
  +msgstr ""
  +
  +#: ../plugin/userform.php:36
  +msgid "ID does not exists !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:52 ../plugin/userform.php:114
  +#, c-format
  +msgid "Successfully login as '%s'"
  +msgstr ""
  +
  +#: ../plugin/userform.php:58 ../plugin/userform.php:119
  +#: ../plugin/userform.php:147
  +msgid "Invalid password !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:62
  +#, c-format
  +msgid "\"%s\" is not exists on this wiki !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:64
  +msgid "Make new ID on this wiki"
  +msgstr ""
  +
  +#: ../plugin/userform.php:70
  +msgid "Cookie deleted !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:81 ../plugin/userform.php:135
  +msgid "too short password!"
  +msgstr ""
  +
  +#: ../plugin/userform.php:82
  +msgid "mismatch password!"
  +msgstr ""
  +
  +#: ../plugin/userform.php:83 ../plugin/userform.php:139
  +msgid "not acceptable character found in the password!"
  +msgstr ""
  +
  +#: ../plugin/userform.php:86
  +msgid "Your password is too simple to use as a password !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:92 ../plugin/userform.php:163
  +msgid "Your email address is not valid"
  +msgstr ""
  +
  +#: ../plugin/userform.php:96
  +msgid "Successfully added!"
  +msgstr ""
  +
  +#: ../plugin/userform.php:105 ../plugin/userform.php:157
  +msgid "E-mail confirmation"
  +msgstr ""
  +
  +#: ../plugin/userform.php:107 ../plugin/userform.php:159
  +msgid "Please confirm your email address"
  +msgstr ""
  +
  +#: ../plugin/userform.php:109 ../plugin/userform.php:161
  +msgid "E-mail confirmation mail sent"
  +msgstr ""
  +
  +#: ../plugin/userform.php:124
  +msgid "Invalid username !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:137
  +msgid "mismatch password !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:140 ../plugin/userform.php:148
  +msgid "Password is not changed !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:142
  +msgid "Password is changed !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:144
  +msgid "Password is too simple to use as a password !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:169
  +msgid "Profiles are saved successfully !"
  +msgstr ""
  +
  +#: ../plugin/whois.php:119
  +#, c-format
  +msgid "Could not connect to %s server"
  +msgstr ""
  +
  +#: ../plugin/whois.php:137
  +#, c-format
  +msgid "Whois search result for %s"
  +msgstr ""
  +
   #: ../wiki.php:861
   #, c-format
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1841
  +#: ../wiki.php:1864
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:1841
  +#: ../wiki.php:1864
   msgid "TwinPages"
   msgstr ""
   
  -#: ../wiki.php:2135
  +#: ../wiki.php:2160
   msgid "Revision History"
   msgstr ""
   
  -#: ../wiki.php:2236 ../wiki.php:2384
  +#: ../wiki.php:2261 ../wiki.php:2409
   msgid "No older revisions available"
   msgstr ""
   
  -#: ../wiki.php:2363 ../wiki.php:2402 ../wikilib.php:786
  +#: ../wiki.php:2388 ../wiki.php:2427 ../wikilib.php:790
   msgid "No difference found"
   msgstr ""
   
  -#: ../wiki.php:2365
  +#: ../wiki.php:2390
   msgid "Difference between yours and the current"
   msgstr ""
   
  -#: ../wiki.php:2404
  +#: ../wiki.php:2429
   msgid "Difference between versions"
   msgstr ""
   
  -#: ../wiki.php:2406
  +#: ../wiki.php:2431
   #, c-format
   msgid "Difference between r%s and r%s"
   msgstr ""
   
  -#: ../wiki.php:2409
  +#: ../wiki.php:2434
   #, c-format
   msgid "Difference between r%s and the current"
   msgstr ""
   
  -#: ../wiki.php:2582 ../locale/dummy.php:6
  +#: ../wiki.php:2607 ../locale/dummy.php:6
   msgid "EditText"
   msgstr ""
   
  -#: ../wiki.php:2584
  +#: ../wiki.php:2609
   msgid "NotEditable"
   msgstr ""
   
  -#: ../wiki.php:2586 ../locale/dummy.php:6
  +#: ../wiki.php:2611 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:2587 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:2612 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr ""
   
  -#: ../wiki.php:3014 ../wiki.php:3017
  +#: ../wiki.php:3043 ../wiki.php:3046
   msgid "Create this page"
   msgstr ""
   
  -#: ../wiki.php:3019
  +#: ../wiki.php:3048
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
   
  -#: ../wiki.php:3019
  +#: ../wiki.php:3048
   msgid "title"
   msgstr ""
   
  -#: ../wiki.php:3025
  +#: ../wiki.php:3054
   msgid " or alternativly, use one of these templates:\n"
   msgstr ""
   
  -#: ../wiki.php:3028 ../wikilib.php:433
  +#: ../wiki.php:3057 ../wikilib.php:435
   msgid "To create your own templates, add a page with a 'Template' suffix.\n"
   msgstr ""
   
  -#: ../wiki.php:3084
  +#: ../wiki.php:3114
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr ""
   
  -#: ../wiki.php:3096
  +#: ../wiki.php:3126
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:3099
  +#: ../wiki.php:3129
   msgid "Please enter the valid password"
   msgstr ""
   
  -#: ../wikilib.php:373
  +#: ../wikilib.php:375
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -543,213 +760,204 @@
   "no trailing white space allowed after tables or titles.<br />\n"
   msgstr ""
   
  -#: ../wikilib.php:431
  +#: ../wikilib.php:433
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   
  -#: ../wikilib.php:433
  +#: ../wikilib.php:435
   msgid "<br />\n"
   msgstr ""
   
  -#: ../wikilib.php:449
  +#: ../wikilib.php:451
   msgid "Skip to preview"
   msgstr ""
   
  -#: ../wikilib.php:451
  +#: ../wikilib.php:453
   msgid "ReduceEditor"
   msgstr ""
   
  -#: ../wikilib.php:454 ../locale/dummy.php:6
  +#: ../wikilib.php:456 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
  -#: ../wikilib.php:455
  +#: ../wikilib.php:457
   msgid "HelpOnEditing"
   msgstr ""
   
  -#: ../wikilib.php:472
  +#: ../wikilib.php:474
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:488
  +#: ../wikilib.php:490
   msgid "--Select Category--"
   msgstr ""
   
  -#: ../wikilib.php:494
  +#: ../wikilib.php:496
   msgid "Preview"
   msgstr ""
   
  -#: ../wikilib.php:495 ../wikilib.php:1095
  +#: ../wikilib.php:497 ../wikilib.php:1099
   msgid "Save"
   msgstr ""
   
  -#: ../wikilib.php:496
  +#: ../wikilib.php:498
   msgid "Summary of Change"
   msgstr ""
   
  -#: ../wikilib.php:519
  +#: ../wikilib.php:521
   #, c-format
   msgid "Info. for %s"
   msgstr ""
   
  -#: ../wikilib.php:529
  +#: ../wikilib.php:531
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:531
  +#: ../wikilib.php:533
   #, c-format
   msgid "%s is not valid action"
   msgstr ""
   
  -#: ../wikilib.php:533
  +#: ../wikilib.php:535
   msgid "Is it valid action ?"
   msgstr ""
   
  -#: ../wikilib.php:554
  +#: ../wikilib.php:556
   #, c-format
   msgid "File '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:556
  +#: ../wikilib.php:558
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr ""
   
  -#: ../wikilib.php:561
  +#: ../wikilib.php:563
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:563
  +#: ../wikilib.php:565
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr ""
   
  -#: ../wikilib.php:566
  -msgid "Delete selected files"
  -msgstr ""
  -
  -#: ../wikilib.php:573 ../wikilib.php:575
  +#: ../wikilib.php:575 ../wikilib.php:577
   msgid "No files are selected !"
   msgstr ""
   
  -#: ../wikilib.php:591
  +#: ../wikilib.php:595
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr ""
   
  -#: ../wikilib.php:597
  +#: ../wikilib.php:601
   msgid "Please delete this file manually."
   msgstr ""
   
  -#: ../wikilib.php:599
  +#: ../wikilib.php:603
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr ""
   
  -#: ../wikilib.php:688 ../wikilib.php:1488
  +#: ../wikilib.php:692 ../wikilib.php:1492
   msgid "Use more specific text"
   msgstr ""
   
  -#: ../wikilib.php:750
  +#: ../wikilib.php:754
   msgid "Goto Editor"
   msgstr ""
   
  -#: ../wikilib.php:759
  +#: ../wikilib.php:763
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr ""
   
  -#: ../wikilib.php:764 ../wikilib.php:793
  +#: ../wikilib.php:768 ../wikilib.php:797
   #, c-format
   msgid "Preview of %s"
   msgstr ""
   
  -#: ../wikilib.php:771
  +#: ../wikilib.php:775
   msgid "Conflict error!"
   msgstr ""
   
  -#: ../wikilib.php:785
  +#: ../wikilib.php:789
   #, c-format
   msgid "Go back or return to %s"
   msgstr ""
   
  -#: ../wikilib.php:819
  +#: ../wikilib.php:823
   msgid "mail does not supported by default."
   msgstr ""
   
  -#: ../wikilib.php:823
  +#: ../wikilib.php:827
   msgid "Sent notification mail."
   msgstr ""
   
  -#: ../wikilib.php:825
  +#: ../wikilib.php:829
   msgid "No subscribers found."
   msgstr ""
   
  -#: ../wikilib.php:830
  +#: ../wikilib.php:834
   #, c-format
   msgid "%s is not editable"
   msgstr ""
   
  -#: ../wikilib.php:832
  +#: ../wikilib.php:836
   #, c-format
   msgid "%s is saved"
   msgstr ""
   
  -#: ../wikilib.php:854
  +#: ../wikilib.php:858
   msgid "Nobody subscribed to this page."
   msgstr ""
   
  -#: ../wikilib.php:876
  +#: ../wikilib.php:880
   #, c-format
   msgid "%s page is modified"
   msgstr ""
   
  -#: ../wikilib.php:886
  +#: ../wikilib.php:890
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:899
  +#: ../wikilib.php:903
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:903
  +#: ../wikilib.php:907
   msgid "Mails are sent successfully"
   msgstr ""
   
  -#: ../wikilib.php:904
  +#: ../wikilib.php:908
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1086
  +#: ../wikilib.php:1090
   msgid "Make profile"
   msgstr ""
   
  -#: ../wikilib.php:1087
  +#: ../wikilib.php:1091
   msgid "password again"
   msgstr ""
   
  -#: ../wikilib.php:1098
  +#: ../wikilib.php:1102
   msgid "New password"
   msgstr ""
   
  -#: ../wikilib.php:1104
  +#: ../wikilib.php:1108
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:1495
  -#, c-format
  -msgid "Title search for \"%s\""
  -msgstr ""
  -
   #: ../wikilib.php:1499
   #, c-format
  -msgid "Invalid search expression \"%s\""
  +msgid "Title search for \"%s\""
   msgstr ""
   
   #: ../locale/dummy.php:3
  
  
  


wkpark      04/01/08 00:11:50

  Modified:    plugin   BabelFish.php
  Log:
  add 'zh' 'pt' 'es' 'it' support and fixed urlencoding
  
  Revision  Changes    Path
  1.2       +5 -5      moniwiki/plugin/BabelFish.php
  
  Index: BabelFish.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BabelFish.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- BabelFish.php	6 Jan 2004 02:17:53 -0000	1.1
  +++ BabelFish.php	7 Jan 2004 15:11:49 -0000	1.2
  @@ -5,11 +5,11 @@
   //
   // Usage: [[BabelFish]]
   //
  -// $Id: BabelFish.php,v 1.1 2004/01/06 02:17:53 wkpark Exp $
  +// $Id: BabelFish.php,v 1.2 2004/01/07 15:11:49 wkpark Exp $
   
   #<script language="JavaScript1.2" src="http://www.altavista.com/r?entr"></script>
   function macro_BabelFish($formatter,$value) {
  -  $langs=array('ko','ja','en','de','fr','esp','por');
  +  $langs=array('ko','ja','en','de','fr','it','es','pt','zh');
     $supported=array('ko_en','en_ko','en_de','en_fr','ko_jp','jp_ko');
     $msg=_("BabelFish Translation");
   
  @@ -22,23 +22,23 @@
     if (!in_array($from,$langs))
       $from='en';
     if (!in_array($to,$langs))
  -    $from='en';
  +    $to='en';
     if ($from and $to and $from != $to)
       $msg=sprintf(_("Translate %s to %s"),$from,$to);
   
     $lp=$from."_".$to;
  -  $URL=qualifiedUrl($formatter->link_url(_rawurlencode($formatter->page->name)));
  +  $URL=qualifiedUrl($formatter->link_url(urlencode($formatter->page->urlname)));
     $TR="http://babelfish.altavista.com/babelfish/urlload?tt=url";
     if (in_array($lp,$supported)) {
       $TR.="&lp=$lp";
     } else {
       $lp=$from.'_en';
  -    $URL=urlencode($TR."&lp=$lp&url=".$URL);
  +    $URL=urlencode($TR."&lp=$lp&url=").$URL;
       $lp='en_'.$to;
       $TR.="&lp=$lp";
     }
     return <<<EOF
  -<img src='$formatter->imgs_dir/flag-$from.png' /> <a href="$TR&url=$URL"><img border='0' src='$formatter->imgs_dir/fishloop.gif' title='$msg' alt='BabelFish@altavista' /></a><img src='$formatter->imgs_dir/flag-$to.png' />
  +<img src='$formatter->imgs_dir/$from-16.png' /> <a href="$TR&url=$URL"><img border='0' src='$formatter->imgs_dir/fishloop.gif' title='$msg' alt='BabelFish@altavista' /></a><img src='$formatter->imgs_dir/$to-16.png' />
   EOF;
   
   }
  
  
  


wkpark      04/01/08 01:09:12

  Modified:    plugin   Trail.php
  Log:
  more fixes
  
  Revision  Changes    Path
  1.2       +20 -0     moniwiki/plugin/Trail.php
  
  Index: Trail.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Trail.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Trail.php	6 Jan 2004 23:34:35 -0000	1.1
  +++ Trail.php	7 Jan 2004 16:09:11 -0000	1.2
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Trail(IndexPage)]]
   //
  -// $Id: Trail.php,v 1.1 2004/01/06 23:34:35 wkpark Exp $
  +// $Id: Trail.php,v 1.2 2004/01/07 16:09:11 wkpark Exp $
   
   function macro_Trail($formatter,$value) {
     global $DBInfo;
  @@ -38,13 +38,33 @@
     }
   
     if ($count > 1) {
  +    $save=$formatter->query_string;
  +    $query='?action=trail&amp;value='.$value;
  +    $formatter->query_string=$query;
       $pnut='&#x2039; ';
       if ($prev) $pnut.=$formatter->link_repl($prev)." | ";
  +    $formatter->query_string=$save;
       $pnut.=$formatter->link_repl($index);
  +    $formatter->query_string=$query;
       if ($next) $pnut.=" | ".$formatter->link_repl($next);
       $pnut.=' &#x203a;';
  +    $formatter->query_string=$save;
     }
     return $pnut;
  +}
  +
  +function do_trail($formatter,$options) {
  +  $pnut=macro_Trail($formatter,$options['value']);
  +  $formatter->send_header('',$options);
  +  $formatter->send_title($title,$formatter->link_url("FindPage"),$options);
  +  print "<div class='wikiTrailer'>\n";
  +  print $pnut;
  +  print "</div>\n";
  +  $formatter->send_page();
  +  print "<div class='wikiTrailer'>\n";
  +  print $pnut;
  +  print "</div>\n";
  +  $formatter->send_footer('',$options);
   }
   
   // vim:noet:sts=2:
  
  
  


wkpark      04/01/08 01:11:09

  Modified:    .        wiki.php
  Log:
  add a 'query_string' variable to the Formatter class to support the WikiTrail
  
  Revision  Changes    Path
  1.130     +4 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.129
  retrieving revision 1.130
  diff -u -r1.129 -r1.130
  --- wiki.php	7 Jan 2004 01:50:09 -0000	1.129
  +++ wiki.php	7 Jan 2004 16:11:07 -0000	1.130
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.129 2004/01/07 01:50:09 wkpark Exp $
  +// $Id: wiki.php,v 1.130 2004/01/07 16:11:07 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.129 $',1,-1);
  +$_revision = substr('$Revision: 1.130 $',1,-1);
   $_release = '1.0.7';
   
   #ob_start("ob_gzhandler");
  @@ -1718,6 +1718,8 @@
     function link_url($pageurl,$query_string="") {
       global $DBInfo;
       $sep=$DBInfo->query_prefix;
  +
  +    if (!$query_string and $this->query_string) $query_string=$this->query_string;
   
       if ($sep == '?') {
         if ($pageurl && $query_string[0]=='?')
  
  
  


wkpark      04/01/08 01:12:36

  Modified:    plugin   BabelFish.php
  Log:
  more fixes to handle CJK urls properly
  
  Revision  Changes    Path
  1.3       +7 -4      moniwiki/plugin/BabelFish.php
  
  Index: BabelFish.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BabelFish.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- BabelFish.php	7 Jan 2004 15:11:49 -0000	1.2
  +++ BabelFish.php	7 Jan 2004 16:12:35 -0000	1.3
  @@ -5,12 +5,12 @@
   //
   // Usage: [[BabelFish]]
   //
  -// $Id: BabelFish.php,v 1.2 2004/01/07 15:11:49 wkpark Exp $
  +// $Id: BabelFish.php,v 1.3 2004/01/07 16:12:35 wkpark Exp $
   
   #<script language="JavaScript1.2" src="http://www.altavista.com/r?entr"></script>
   function macro_BabelFish($formatter,$value) {
     $langs=array('ko','ja','en','de','fr','it','es','pt','zh');
  -  $supported=array('ko_en','en_ko','en_de','en_fr','ko_jp','jp_ko');
  +  $supported=array('ko_en','en_ko','en_de','en_fr');
     $msg=_("BabelFish Translation");
   
     if (!$value)
  @@ -27,13 +27,16 @@
       $msg=sprintf(_("Translate %s to %s"),$from,$to);
   
     $lp=$from."_".$to;
  -  $URL=qualifiedUrl($formatter->link_url(urlencode($formatter->page->urlname)));
  +  $URL=qualifiedUrl($formatter->link_url($formatter->page->urlname));
     $TR="http://babelfish.altavista.com/babelfish/urlload?tt=url";
     if (in_array($lp,$supported)) {
  +    $URL=urlencode($URL);
       $TR.="&lp=$lp";
     } else {
  +    // XXX
  +    // not supported by http://babelfish.altavista.com/
       $lp=$from.'_en';
  -    $URL=urlencode($TR."&lp=$lp&url=").$URL;
  +    $URL=urlencode($TR."&lp=$lp&url=$URL");
       $lp='en_'.$to;
       $TR.="&lp=$lp";
     }
  
  
  


wkpark      04/01/08 02:59:39

  Modified:    .        wiki.php
  Log:
  more complete Namespace feature implemented added.
  
  Revision  Changes    Path
  1.131     +27 -7     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.130
  retrieving revision 1.131
  diff -u -r1.130 -r1.131
  --- wiki.php	7 Jan 2004 16:11:07 -0000	1.130
  +++ wiki.php	7 Jan 2004 17:59:39 -0000	1.131
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.130 2004/01/07 16:11:07 wkpark Exp $
  +// $Id: wiki.php,v 1.131 2004/01/07 17:59:39 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.130 $',1,-1);
  +$_revision = substr('$Revision: 1.131 $',1,-1);
   $_release = '1.0.7';
   
   #ob_start("ob_gzhandler");
  @@ -508,6 +508,7 @@
       $this->icon['updated']="<img src='$imgdir/$iconset-updated.gif' alt='U' align='middle' border='0' />";
       $this->icon['user']="UserPreferences";
       $this->icon['home']="<img src='$imgdir/$iconset-home.gif' alt='M' align='middle' border='0' />";
  +    $this->icon['main']="<img src='$imgdir/$iconset-main.gif' alt='^' align='middle' border='0' />";
       $this->icon_sep=" ";
       $this->icon_bra=" ";
       $this->icon_cat=" ";
  @@ -1518,10 +1519,14 @@
       # User namespace extension
       if ($page[0]=='~' and ($p=strpos($page,'/'))) {
         # change ~User/Page to User~Page
  +      $gpage=$page;
         $page=substr($page,1,$p-1)."~".substr($page,$p+1);
       } else if (!$nogroup and $this->group and !strpos($page,'~')) {
         if ($page[0]=='/') $page=substr($page,1);
  -      else $page=$this->group.$page;
  +      else {
  +        $gpage=$page;
  +        $page=$this->group.$page;
  +      }
       } else if ($page[0]=='/') { # SubPage
         $page=$this->page->name.$page;
       } else if (preg_match('/^(\.{1,2})\//',$page,$match)) {
  @@ -1542,8 +1547,14 @@
   
       $page=urldecode($page); # XXX
       $url=$this->link_url(_rawurlencode($page)); # XXX
  -    if (isset($this->pagelinks[$page])) {
  -      $idx=$this->pagelinks[$page];
  +    if ($gpage)
  +      $gurl=$this->link_url(_rawurlencode($gpage));
  +    if (isset($this->pagelinks[$page]) or isset($this->pagelinks[$gpage])) {
  +      if (!isset($this->pagelinks[$page])) {
  +        $url=$gurl;
  +        $idx=$this->pagelinks[$gpage];
  +      } else
  +        $idx=$this->pagelinks[$page];
         switch($idx) {
           case 0:
             #return "<a class='nonexistent' href='$url'>?</a>$word";
  @@ -1553,6 +1564,9 @@
           case -2:
             return "<a href='$url'>$word</a>".
               "<tt class='sister'><a href='$url'>&#x203a;</a></tt>";
  +        case -3:
  +          return $this->link_tag($page,'',$this->icon['main']).
  +            "<a href='$url'>$word</a>";
           default:
             return "<a href='$url'>$word</a>".
               "<tt class='sister'><a href='#sister$idx'>&#x203a;$idx</a></tt>";
  @@ -1561,6 +1575,11 @@
         $this->pagelinks[$page]=-1;
         return "<a href='$url'>$word</a>";
       } else {
  +      if ($gpage and $DBInfo->hasPage($gpage)) {
  +        $this->pagelinks[$gpage]=-3;
  +        return $this->link_tag($page,'',$this->icon['main']).
  +          "<a href='$gurl'>$word</a>";
  +      }
         if ($this->sister_on) {
           $sisters=$DBInfo->metadb->getSisterSites($page, $DBInfo->use_sistersites);
           if ($sisters === true) {
  @@ -2731,9 +2750,10 @@
         if (strpos($item,' ') === false) {
           if (strpos($attr,'=') === false) $attr="accesskey='$attr'";
           # like 'MoniWiki'=>'accesskey="1"'
  -        $menu[]=$this->link_tag($item,"",_($item),$attr);
  +        $menu[]=$this->word_repl($item,_($item),$attr);
  +#        $menu[]=$this->link_tag($item,"",_($item),$attr);
         } else {
  -        # like a 'MoniWiki http://moniwiki.sf.net'
  +        # like a 'http://moniwiki.sf.net MoniWiki'
           $menu[]=$this->link_repl($item,$attr);
         }
       }
  
  
  


wkpark      04/01/08 06:40:24

  Modified:    plugin   BabelFish.php
  Log:
  more fixes
  
  Revision  Changes    Path
  1.4       +17 -11    moniwiki/plugin/BabelFish.php
  
  Index: BabelFish.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BabelFish.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- BabelFish.php	7 Jan 2004 16:12:35 -0000	1.3
  +++ BabelFish.php	7 Jan 2004 21:40:22 -0000	1.4
  @@ -5,12 +5,14 @@
   //
   // Usage: [[BabelFish]]
   //
  -// $Id: BabelFish.php,v 1.3 2004/01/07 16:12:35 wkpark Exp $
  +// $Id: BabelFish.php,v 1.4 2004/01/07 21:40:22 wkpark Exp $
   
   #<script language="JavaScript1.2" src="http://www.altavista.com/r?entr"></script>
  -function macro_BabelFish($formatter,$value) {
  +function macro_BabelFish($formatter,$value,$ret=array()) {
     $langs=array('ko','ja','en','de','fr','it','es','pt','zh');
  -  $supported=array('ko_en','en_ko','en_de','en_fr');
  +  $supported=array('ko_en','en_ko','en_de','en_fr','en_pt','en_it','en_es',
  +                   'en_ja','en_zh','fr_en','es_en','pt_en','it_en','zh_en',
  +                   'fr_de','de_en','de_fr','ja_en','ru_en');
     $msg=_("BabelFish Translation");
   
     if (!$value)
  @@ -28,29 +30,33 @@
   
     $lp=$from."_".$to;
     $URL=qualifiedUrl($formatter->link_url($formatter->page->urlname));
  -  $TR="http://babelfish.altavista.com/babelfish/urlload?tt=url";
  +  #$TR="http://babelfish.altavista.com/babelfish/urlload?tt=url";
  +  $TR="http://babelfish.altavista.com/babelfish/tr?doit=done";
  +  #$TR="http://babelfish.altavista.com/babelfish/tr?doit=done&urltext=http://chemie.skku.ac.kr/wiki/wiki.php/BabelFishMacro&lp=en_ja
     if (in_array($lp,$supported)) {
       $URL=urlencode($URL);
       $TR.="&lp=$lp";
     } else {
  -    // XXX
  -    // not supported by http://babelfish.altavista.com/
  +    // XXX not supported by http://babelfish.altavista.com/
       $lp=$from.'_en';
       $URL=urlencode($TR."&lp=$lp&url=$URL");
       $lp='en_'.$to;
       $TR.="&lp=$lp";
     }
  +  $goto=$TR.'&url='.$URL;
     return <<<EOF
  -<img src='$formatter->imgs_dir/$from-16.png' /> <a href="$TR&url=$URL"><img border='0' src='$formatter->imgs_dir/fishloop.gif' title='$msg' alt='BabelFish@altavista' /></a><img src='$formatter->imgs_dir/$to-16.png' />
  +<img src='$formatter->imgs_dir/$from-16.png' /> <a href="$goto"><img border='0' src='$formatter->imgs_dir/fishloop.gif' title='$msg' alt='BabelFish@altavista' /></a><img src='$formatter->imgs_dir/$to-16.png' />
   EOF;
   
   }
   
   function do_babelfish($formatter,$options) {
  -  $formatter->send_header();
  -  $formatter->send_title();
  -  $ret= macro_BabelFish($formatter,$options['value']);
  -  $formatter->send_page($ret);
  +  global $DBInfo;
  +
  +  $formatter->send_header('',$options);
  +  $formatter->send_title('','',$options);
  +  print macro_BabelFish($formatter,$options['value']);
  +  $formatter->send_page();
     $formatter->send_footer("",$options);
     return;
   }
  
  
  


wkpark      04/01/08 06:44:14

  Modified:    .        wiki.php
  Log:
  more fixes for the last changes
  
  Revision  Changes    Path
  1.132     +16 -20    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.131
  retrieving revision 1.132
  diff -u -r1.131 -r1.132
  --- wiki.php	7 Jan 2004 17:59:39 -0000	1.131
  +++ wiki.php	7 Jan 2004 21:44:12 -0000	1.132
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.131 2004/01/07 17:59:39 wkpark Exp $
  +// $Id: wiki.php,v 1.132 2004/01/07 21:44:12 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.131 $',1,-1);
  +$_revision = substr('$Revision: 1.132 $',1,-1);
   $_release = '1.0.7';
   
   #ob_start("ob_gzhandler");
  @@ -1417,7 +1417,7 @@
         return "<a $attr href='$url'>$url</a>";
       } else {
         if ($url[0]=="?") $url=substr($url,1);
  -      return $this->word_repl($url);
  +      return $this->word_repl($url,'',$attr);
       }
     }
   
  @@ -1529,7 +1529,7 @@
         }
       } else if ($page[0]=='/') { # SubPage
         $page=$this->page->name.$page;
  -    } else if (preg_match('/^(\.{1,2})\//',$page,$match)) {
  +    } else if ($page[0]=='.' and preg_match('/^(\.{1,2})\//',$page,$match)) {
         if ($match[1] == '..') {
           $pos=strrpos($this->page->name,"/");
           if ($pos > 0) $upper=substr($this->page->name,0,$pos);
  @@ -1545,40 +1545,36 @@
         }
       }
   
  -    $page=urldecode($page); # XXX
       $url=$this->link_url(_rawurlencode($page)); # XXX
  -    if ($gpage)
  -      $gurl=$this->link_url(_rawurlencode($gpage));
  -    if (isset($this->pagelinks[$page]) or isset($this->pagelinks[$gpage])) {
  -      if (!isset($this->pagelinks[$page])) {
  -        $url=$gurl;
  -        $idx=$this->pagelinks[$gpage];
  -      } else
  -        $idx=$this->pagelinks[$page];
  +    $page=urldecode($page); # XXX
  +    if (isset($this->pagelinks[$page])) {
  +      $idx=$this->pagelinks[$page];
         switch($idx) {
           case 0:
             #return "<a class='nonexistent' href='$url'>?</a>$word";
             return call_user_func(array(&$this,"word_$DBInfo->nonexists"),$word,$url);
           case -1:
  -          return "<a href='$url'>$word</a>";
  +          return "<a href='$url' $attr>$word</a>";
           case -2:
  -          return "<a href='$url'>$word</a>".
  +          return "<a href='$url' $attr>$word</a>".
               "<tt class='sister'><a href='$url'>&#x203a;</a></tt>";
           case -3:
  +          $url=$this->link_url(_rawurlencode($gpage));
             return $this->link_tag($page,'',$this->icon['main']).
  -            "<a href='$url'>$word</a>";
  +            "<a href='$url' $attr>$word</a>";
           default:
  -          return "<a href='$url'>$word</a>".
  +          return "<a href='$url' $attr>$word</a>".
               "<tt class='sister'><a href='#sister$idx'>&#x203a;$idx</a></tt>";
         }
       } else if ($DBInfo->hasPage($page)) {
         $this->pagelinks[$page]=-1;
  -      return "<a href='$url'>$word</a>";
  +      return "<a href='$url' $attr>$word</a>";
       } else {
         if ($gpage and $DBInfo->hasPage($gpage)) {
  -        $this->pagelinks[$gpage]=-3;
  +        $this->pagelinks[$page]=-3;
  +        $url=$this->link_url(_rawurlencode($gpage));
           return $this->link_tag($page,'',$this->icon['main']).
  -          "<a href='$gurl'>$word</a>";
  +          "<a href='$url' $attr>$word</a>";
         }
         if ($this->sister_on) {
           $sisters=$DBInfo->metadb->getSisterSites($page, $DBInfo->use_sistersites);
  
  
  


wkpark      04/01/08 10:05:08

  Modified:    .        wiki.php
  Log:
  fixed interwiki syntax for compatibility with the MoinMoin
  
  Revision  Changes    Path
  1.133     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.132
  retrieving revision 1.133
  diff -u -r1.132 -r1.133
  --- wiki.php	7 Jan 2004 21:44:12 -0000	1.132
  +++ wiki.php	8 Jan 2004 01:05:07 -0000	1.133
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.132 2004/01/07 21:44:12 wkpark Exp $
  +// $Id: wiki.php,v 1.133 2004/01/08 01:05:07 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.132 $',1,-1);
  +$_revision = substr('$Revision: 1.133 $',1,-1);
   $_release = '1.0.7';
   
   #ob_start("ob_gzhandler");
  @@ -1200,7 +1200,7 @@
       # strict but slow
       #"\b(".$DBInfo->interwikirule."):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
       #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
  -    "\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+)|".
  +    "\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+[^\(\)<>\s\',\.:\?\!]+)|".
     # "(?<!\!|\[\[)\b(([A-Z]+[a-z0-9]+){2,})\b|".
     # "(?<!\!|\[\[)((?:\/?[A-Z]([a-z0-9]+|[A-Z]*(?=[A-Z][a-z0-9]|\b))){2,})\b|".
       # WikiName rule: WikiName ILoveYou (imported from the rule of NoSmoke)
  
  
  


wkpark      04/01/08 10:07:32

  Added:       css      log.css wood.css
  Log:
  add new styles
  
  Revision  Changes    Path
  1.1                  moniwiki/css/log.css
  
  Index: log.css
  ===================================================================
  /* MoniWiki CSS 2003/11/01 by wkpark */
  body {
    font-family:Georgia,Verdana,Lucida,sans-serif;font-size:12px;
    background-color:#FFFFFF;
    color:#000;
    margin: 0;
    padding: 0;
  }
  
  a {color:#444444;text-decoration:underline}
  a:hover {color:#f3764b;text-decoration:underline}
  tt.wiki {font-family:Monotype,Lucida Console,fixed,lucida;font-size:12px;}
  tt.foot {
    font-family:Tahoma,lucida,fixed;
    font-size:11px;
    vertical-align: super;
  }
  
  tt.sister {
    font-family:Tahoma,lucida,fixed;
    font-size:11px;
    vertical-align: super;
    text-decoration: none;
  }
  
  pre.wiki {
    padding-left:6px;
    padding-top:6px; 
    font-family:Lucida TypeWriter,monotype,lucida,fixed;font-size:14px;
    background-color:#000000;
    color:#FFD700; /* gold */
  }
  
  pre.console {
    background-color: #000000;
    color: #E0E0E0;
    padding: .25em ;
    border: 2px inset #808080;
  }
  
  pre.quote {
    padding-left:6px;
    padding-top:6px;
    white-space:pre-wrap;
    white-space: -moz-pre-wrap; 
    font-family:Georgia,monotype,lucida,fixed;font-size:14px;
    background-color: #FBFAF9;
  }
  
  /* */
  table.closure, td.closure{
    background-color: #FBFAF9;
  }
  
  
  table.wiki {
  /* background-color:#E2ECE5;*/
  /* border-collapse: collapse; */
    border: 0px outset #ddddb0;
  }
  
  td.wiki {
    background-color: #E8E6E0;
  /* border-collapse: collapse; */
    border: 0px inset #E2ECE5;
  }
  
  textarea.wiki { width:100%; }
  
  th.info {
    background-color:#E2ECE2;
  /*  border-collapse: collapse; */
  /*  border: 1px solid silver; */
  }
  
  td.info {
    background-color:#E2ECE2;
  
  }
  
  h1,h2,h3,h4,h5 {
    font-family:Tahoma;
    padding-left:6px;
  /*  color: #f3764b; /* */
    color: #7C7052; /* */
    border-bottom:1px solid #999;
  }
  
  div.diff-added {
    font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
    font-size:12px;
    background-color:#E0FFE0;
    color:black;
  }
  
  div.diff-removed {
    font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
    font-size:12px;
    background-color:#E9EAB8;
    color:black;
  }
  
  div.diff-sep {
    font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
    font-size:12px;
    background-color:#000000;
    color:#FFD700; /* gold */
  }
  
  span.diff-added, ins.diff-added {
    color:black;
    background-color: #60FF60;
    text-decoration: none;
  }
  
  span.diff-removed, del.diff-removed {
    color:black;
    background-color: #FF0000;
  }
  
  td.message {
    margin-top: 6pt;
    background-color: #E8E8E8;
    border-style:solid;
    border-width:1pt;
    border-color:#990000;
    color:#440000;
    padding:0px;
    width:100%;
  }
  
  .highlight {
    background-color:#FFFF40;
  }
  
  table.goto {
    background-color: #002B2C;
  }
  
  span.goto, input.goto {
    font-family:Tahoma,Lucida,sans-serif;
    font-size:10px;
  }
  
  /*  */
  .wikiHr {
    border:0px solid;
    padding: 0px 0px; /* */
    margin-top:0px;
    height:1px;  
  /* background: #000 url(hr1.gif) no-repeat scroll center; */
  }
  
  #wikiTrailer, #wikiOrigin {
    padding-left: 20px;
    padding-bottom: 5px;
  }
  
  #wikiHeader {
    color:#000000;
    border-top:3px solid #A5946B;
  /*  border-left:10px solid #A5946B; /* */
  /*  border-right:10px solid #A5946B; /* */
    border-bottom:1px solid #A5946B; /*dotted  #FFF:*/
    text-align: right;
    color: #fff;
    padding: 0.2em 0.5em 0.2em 0.2em;
  
    background-color:#BCA97A;
  /*  background-color:#af9f87;  */
  }
  
  #wikiHeader a:link {color:black;}
  #wikiHeader a:visited {color:#f2f2f2;}
  
  .wikiTitle {
    font-family:Tahoma,Lucida,sans-serif;
    font-size:28px;
    font-weight:bold;
  /*   color:#ffffff; /* */
    color:#7C7052;
    text-decoration: none;
  }
  
  #wikiMenu {
    color: #fff;
    padding: 0.2em 0em 0.2em 0.2em;
    background-color:#d6c8b6; 
  }
  
  #wikiBody {
    color: black;
    background-color: #fff;
    border: 2px dotted #cecece;
  /*  border-left: 0.8em solid #E2ECE2;
    border-right: 0.8em solid #E2ECE2; */
  /*  border-left: 0.8em dotted; /*solid #6A2525; */
  /*  border-right: 0.8em solid #6A2525; */
  /*  text-transform: lowercase; /* */
    margin: 0px 10px 0px 10px;
    padding: 5px 1em 5px 1em; 
  /*  margin-left: 20px; */
  /*  padding-left: 1em; /* */
  /*  text-indent: 10px; */
  /*  border: 0px outset #E2ECE5; */
  /*  font-size:16px; 
     border-collapse:collapse; */
  }
  
  #wikiBody a {color:#444444;text-decoration:none}
  #wikiBody a:hover {color:#f3764b;text-decoration:underline}
  
  #wikiContent {
    margin-left: 20px; 
  }
  
  #wikiFooter {
    padding: 0.5em 2em;
  /*  background-color:yellow; */
  }
  
  #wikiHint {
    font-family:Georgia,Verdana,Lucida,sans-serif;
    font-size:10px;
    background-color:#E2DAE2;
  }
  
  #wikiSister {
  /*  background-color:lightgreen; /* */
  }
  
  #wikiPreview {
    border: 2px solid #a0a0a0;
    margin: 5px 5px 5px 5px;
    padding: 5px 1em 5px 1em;
  }
  
  #wikiIcon {
   position: absolute;
   top: 80px; right: 10px;
  
   margin-left: 10px;
   text-align: right;
   vertical-align: middle;
  }
  
  div.indent { padding-left:2em; padding-top:0.5em;}
  
  div.hint { font-size: 10px; background-color: #369; color:white;}
  a.purple { font-size: 10px; text-decoration:none;}
  
  /* Blog CSS */
  a.purple { font-size: 10px; text-decoration:none;}
  div.blog { width:90%; padding: 0em 1em 0em 1em; }
  div.blog-user { font-size:10px; }
  div.blog-title { font-size:16px; font-weight:bold; }
  div.blog-comments { padding: 1em 1em 1em 2em; border-left: 1px dotted #E4DECE; background-color:#F5F1E9;}
  
  div.blog-date { font-size:18px; font-weight:bold; padding-bottom:5px;}
  span.blog-user { font-size:10px; }
  
  div.trackback-hint { font-size: 10px; padding: 1em 1em 1em 1em;background-color: #eee;}
  /* Calendar */
  td.day { background:#e5d9c7; text-align: center;}
  td.today { background:#ffffff; text-align: center;}
  
  /* HierarchicalWiki */
  span.group {
    font-family:Tahoma,Lucida,sans-serif;
    font-size:10px;
  }
  
  /* enscript syntax */
  div.wikiPre i,div.wikiPre b{
    font-weight: normal;
    font-style: normal;
  }
  
  
  
  1.1                  moniwiki/css/wood.css
  
  Index: wood.css
  ===================================================================
  /* MoniWiki CSS 2003/11/01 by wkpark */
  body {
    font-family:Georgia,Verdana,Lucida,sans-serif;font-size:12px;
    background-color:#FFFFFF;
    color:#000;
    margin: 0;
    padding: 0;
  }
  
  a {color:#444444;text-decoration:underline}
  a:hover {color:#f3764b;text-decoration:underline}
  .wikiTitle {
    font-family:Tahoma,Lucida,sans-serif;
    font-size:28px;
    font-weight:bold;
    color:#ffffff; /* */
    text-decoration: none;
  }
  tt.wiki {font-family:Monotype,Lucida Console,fixed,lucida;font-size:12px;}
  tt.foot {
    font-family:Tahoma,lucida,fixed;
    font-size:11px;
    vertical-align: super;
  }
  
  tt.sister {
    font-family:Tahoma,lucida,fixed;
    font-size:11px;
    vertical-align: super;
    text-decoration: none;
  }
  
  pre.wiki {
    padding-left:6px;
    padding-top:6px; 
    font-family:Lucida TypeWriter,monotype,lucida,fixed;font-size:14px;
    background-color:#000000;
    color:#FFD700; /* gold */
  }
  
  pre.console {
    background-color: #000000;
    color: #E0E0E0;
    padding: .25em ;
    border: 2px inset #808080;
  }
  
  pre.quote {
    padding-left:6px;
    padding-top:6px;
    white-space:pre-wrap;
    white-space: -moz-pre-wrap; 
    font-family:Georgia,monotype,lucida,fixed;font-size:14px;
    background-color: #E9ECEF;
  }
  
  table.wiki {
  /* background-color:#E2ECE5;*/
  /* border-collapse: collapse; */
    border: 0px outset #ddddb0;
  }
  
  td.wiki {
    background-color: #E9ECEF;
  /* border-collapse: collapse; */
    border: 0px inset #E2ECE5;
  }
  
  textarea.wiki { width:100%; }
  
  th.info {
    background-color:#E2ECE2;
  /*  border-collapse: collapse; */
  /*  border: 1px solid silver; */
  }
  
  td.info {
    background-color:#E2ECE2;
  
  }
  
  h1,h2,h3,h4,h5 {
    font-family:Tahoma;
    padding-left:6px;
    color: #f3764b;
    border-bottom:1px solid #f3764b;
  }
  
  div.diff-added {
    font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
    font-size:12px;
    background-color:#E0FFE0;
    color:black;
  }
  
  div.diff-removed {
    font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
    font-size:12px;
    background-color:#E9EAB8;
    color:black;
  }
  
  div.diff-sep {
    font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
    font-size:12px;
    background-color:#000000;
    color:#FFD700; /* gold */
  }
  
  span.diff-added, ins.diff-added {
    color:black;
    background-color: #60FF60;
    text-decoration: none;
  }
  
  span.diff-removed, del.diff-removed {
    color:black;
    background-color: #FF0000;
  }
  
  td.message {
    margin-top: 6pt;
    background-color: #E8E8E8;
    border-style:solid;
    border-width:1pt;
    border-color:#990000;
    color:#440000;
    padding:0px;
    width:100%;
  }
  
  .highlight {
    background-color:#FFFF40;
  }
  
  table.goto {
    background-color: #002B2C;
  }
  
  span.goto, input.goto {
    font-family:Tahoma,Lucida,sans-serif;
    font-size:10px;
  }
  
  table.closure, td.closure{
    background-color: #E9ECEF;
  }
  
  /*  */
  .wikiHr {
    border:0px solid;
    padding: 0px 0px; /* */
    margin-top:0px;
    height:1px;  
  /* background: #000 url(hr1.gif) no-repeat scroll center; */
  }
  
  #wikiTrailer, #wikiOrigin {
    padding-left: 20px;
    padding-bottom: 5px;
  }
  
  #wikiHeader {
    color: #fff;
    padding: 0.2em 0em 0.2em 0.2em;
    background-color:#af9f87; 
  }
  
  #wikiMenu {
    color: #fff;
    padding: 0.2em 0em 0.2em 0.2em;
    background-color:#d6c8b6; 
  }
  
  #wikiHeader a:link {color:#fff;}
  #wikiHeader a:visited {color:#f2f2f2;}
  
  #wikiBody {
    color: black;
    background-color: #fff;
    border: 2px dotted #cecece;
  /*  border-left: 0.8em solid #E2ECE2;
    border-right: 0.8em solid #E2ECE2; */
  /*  border-left: 0.8em dotted; /*solid #6A2525; */
  /*  border-right: 0.8em solid #6A2525; */
  /*  text-transform: lowercase; /* */
    margin: 0px 10px 0px 10px;
    padding: 5px 1em 5px 1em; 
  /*  margin-left: 20px; */
  /*  padding-left: 1em; /* */
  /*  text-indent: 10px; */
  /*  border: 0px outset #E2ECE5; */
  /*  font-size:16px; 
     border-collapse:collapse; */
  }
  
  #wikiBody a {color:#444444;text-decoration:none}
  #wikiBody a:hover {color:#f3764b;text-decoration:underline}
  
  #wikiContent {
    margin-left: 20px; 
  }
  
  #wikiFooter {
    padding: 0.5em 2em;
  /*  background-color:yellow; */
  }
  
  #wikiHint {
    font-family:Georgia,Verdana,Lucida,sans-serif;
    font-size:10px;
    background-color:#E2DAE2;
  }
  
  #wikiSister {
  /*  background-color:lightgreen; /* */
  }
  
  #wikiPreview {
    border: 2px solid #a0a0a0;
    margin: 5px 5px 5px 5px;
    padding: 5px 1em 5px 1em;
  }
  
  #wikiIcon {
   position: absolute;
   top: 80px; right: 10px;
  
   margin-left: 10px;
   text-align: right;
   vertical-align: middle;
  }
  
  div.indent { padding-left:2em; }
  
  div.hint { font-size: 10px; background-color: #369; color:white;}
  a.purple { font-size: 10px; text-decoration:none;}
  
  /* Blog CSS */
  a.purple { font-size: 10px; text-decoration:none;}
  div.blog { width:90%; padding: 0em 1em 0em 1em; }
  div.blog-user { font-size:10px; }
  div.blog-title { font-size:16px; font-weight:bold; }
  div.blog-comments { padding: 1em 1em 1em 2em; border-left: 1px dashed #7B9AC5; background-color:#DFF0FF;}
  
  div.blog-date { font-size:18px; font-weight:bold; padding-bottom:5px;}
  span.blog-user { font-size:10px; }
  
  div.trackback-hint { font-size: 10px; padding: 1em 1em 1em 1em;background-color: #eee;}
  /* Calendar */
  td.day { background:#e5d9c7; text-align: center;}
  td.today { background:#ffffff; text-align: center;}
  
  /* HierarchicalWiki */
  span.group {
    font-family:Tahoma,Lucida,sans-serif;
    font-size:10px;
  }
  
  /* enscript syntax */
  div.wikiPre i,div.wikiPre b{
    font-weight: normal;
    font-style: normal;
  }
  
  
  


wkpark      04/01/08 14:32:50

  Modified:    plugin   RecentChanges.php
  Log:
  fixed for the MoniWikiNameSpace
  
  Revision  Changes    Path
  1.5       +13 -4     moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- RecentChanges.php	25 Nov 2003 00:57:58 -0000	1.4
  +++ RecentChanges.php	8 Jan 2004 05:32:50 -0000	1.5
  @@ -4,7 +4,7 @@
   // a RecentChanges plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: RecentChanges.php,v 1.4 2003/11/25 00:57:58 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.5 2004/01/08 05:32:50 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     $options['trail']='';
  @@ -131,8 +131,17 @@
       if ($ed_time < $time_cutoff)
         break;
   
  -    if ($formatter->group and !preg_match("/^$formatter->group/",$page_name))
  -      continue;
  +    if ($formatter->group) {
  +      if (!preg_match("/^($formatter->group)(.*)$/",$page_name,$match)) continue;
  +      $title=$match[2];
  +    } else {
  +      $group='';
  +      if ($p=strpos($page_name,'~')) {
  +        $title=substr($page_name,$p+1);
  +        $group=' ('.substr($page_name,0,$p).')';
  +      } else
  +        $title=$page_name;
  +    }
   
       $day = date('Y-m-d', $ed_time);
       if ($use_day and $day != $ratchet_day) {
  @@ -168,7 +177,7 @@
         $icon= $formatter->link_tag($pageurl,"?action=diff",$formatter->icon[diff]);
   
       #$title= preg_replace("/((?<=[a-z0-9])[A-Z][a-z0-9])/"," \\1",$page_name);
  -    $title= get_title($page_name);
  +    $title= get_title($title).$group;
       $title= $formatter->link_tag($pageurl,"",$title,$target);
   
       if (! empty($DBInfo->changed_time_fmt))
  
  
  


wkpark      04/01/08 15:45:10

  Added:       imgs     moni-main.gif ru-16.png
  Removed:     imgs     moniwiki-16.old.gif moniwiki-16.old.png
  Log:
  add & remove images
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/moni-main.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/ru-16.png
  
  	<<Binary file>>
  
  


wkpark      04/01/09 04:17:03

  Modified:    .        config.php.default monisetup.php wiki.php
                        wikilib.php wikismiley.php
  Added:       .        wikidb.php
  Log:
  landing and merging with the cvs-db branch to main line
  
  Revision  Changes    Path
  1.9       +13 -1     moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- config.php.default	7 Jan 2004 00:18:02 -0000	1.8
  +++ config.php.default	8 Jan 2004 19:16:51 -0000	1.9
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.8 2004/01/07 00:18:02 wkpark Exp $
  +# $Id: config.php.default,v 1.9 2004/01/08 19:16:51 wkpark Exp $
   #
   $sitename='UnnamedWiki';
   $data_dir= './data';
  @@ -38,6 +38,18 @@
   $use_sistersites=1;
   $use_twinpages=1;
   $use_trackback=0;
  +
  +# CVS versioning
  +#$version_class='CVS';
  +#$cvs_root='/home/staff/wkpark/CVS';
  +
  +# SQL DB Cache
  +#$cache_class='mysql';
  +#$db_user='mysql';
  +#$db_host='localhost';
  +#$db_pass='';
  +#$db_name='MONIWIKI';
  +
   #$nonexists='fancy_nonexists';
   #$nonexists='nolink';
   #$nonexists='forcelink';
  
  
  
  1.12      +457 -317  moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- monisetup.php	3 Jan 2004 14:26:50 -0000	1.11
  +++ monisetup.php	8 Jan 2004 19:16:51 -0000	1.12
  @@ -1,30 +1,32 @@
  -<?
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org> all rights reserved.
  -// distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.11 2004/01/03 14:26:50 wkpark Exp $
  +<?php
  +// Copyright 2003 Won-Kyu Park <wkpark at kldp.org>. All rights reserved.
  +// Distributable under GPL. See COPYING for more information.
  +// $Id: monisetup.php,v 1.12 2004/01/08 19:16:51 wkpark Exp $
   
   class MoniConfig {
     function MoniConfig($configfile="config.php") {
  -    if (file_exists($configfile)) {
  -      $this->config=$this->_getConfig($configfile);
  -      $this->rawconfig=$this->_rawConfig($configfile);
  -    } else {
  -      $this->config=array();
  -      $this->rawconfig=array();
  +    $this->configfile = $configfile;
  +    $this->_getRawConfig($configfile);
  +    if (!$this->rawconfig) {
  +      $this->_getDefaultRawConfig();
       }
  +    $this->_rawconfig2config();
     }
   
  -  function getDefaultConfig() {
  -    $this->config=$this->_getConfig("config.php.default");
  -
  +  function _getDefaultRawConfig() {
  +    $this->_getRawConfig();
       $hostconfig=$this->_getHostConfig();
  -    $this->rawconfig=array_merge($this->_rawConfig("config.php.default"),$hostconfig);
  -    while (list($key,$val)=each($this->rawconfig)) {
  +    $this->rawconfig = array_merge($this->rawconfig, $hostconfig);
  +  }
  +
  +  function _rawconfig2config()
  +  {
  +    while (list($key, $val) = each($this->rawconfig)) {
         eval("\$$key=$val;");
         eval("\$this->config[\$key]=$val;");
       }
  -
     }
  +
     function _getHostConfig() {
       if (function_exists("dba_open")) {
         $tempnam="/tmp/".time();
  @@ -35,16 +37,18 @@
         else if ($db=@dba_open($tempnam,"n","gdbm"))
           $config['dba_type']="'gdbm'";
   
  -      if ($db) dba_close($db);
  +      if ($db) {
  +        dba_close($db);
  +      }
       }
  -    preg_match("/Apache\/2\.0\./",$_SERVER['SERVER_SOFTWARE'],$match);
   
  +    preg_match("/Apache\/2\.0\./",$_SERVER['SERVER_SOFTWARE'],$match);
       if ($match) {
         $config['query_prefix']='"?"';
         $config['kbd_script']='$url_prefix."/css/kbd2.js"';
       }
   
  -    $url_prefix= preg_replace("/\/([^\/]+)\.php$/","",$_SERVER['SCRIPT_NAME']);
  +    $url_prefix=preg_replace("/\/([^\/]+)\.php$/","",$_SERVER['SCRIPT_NAME']);
       $config['url_prefix']="'".$url_prefix."'";
   
       $config['rcs_user']="'".getenv('LOGNAME')."'";
  @@ -55,147 +59,173 @@
       $this->config=$config;
     }
   
  -  function setRawConfig($config) {
  -    $this->rawconfig=$config;
  +  function setRawConfig($rawconfig) {
  +    $this->rawconfig=$rawconfig;
  +  }
  +
  +  function setFormConfig($formconfig)
  +  {
  +    $config=array();
  +    while (list($key, $val) = each($formconfig)) {
  +      $val=stripslashes($val);
  +      if ($val == "") $val="''";
  +      eval("\$dum=$val;");
  +      eval("\$$key=$val;");
  +      //$config[$key]=$dum;
  +      $rawconfig[$key]=$val;
  +    }
  +    //$this->setConfig($config);
  +    $this->setRawConfig($rawconfig);
     }
   
     function _getConfig($configfile) {
  -    if (!file_exists($configfile))
  +    if (!is_readable($configfile)) {
         return array();
  -
  +    }
       $org=array();
       $org=get_defined_vars();
       include($configfile);
       $new=get_defined_vars();
   
  -    return array_diff($new,$org);
  +    return array_diff($new, $org);
     }
   
  -  function _rawConfig($configfile) {
  +  function _getRawConfig($configfile='config.php.default') {
  +    if (!is_readable($configfile)) {
  +      return array();
  +    }
       $lines=file($configfile);
       foreach ($lines as $line) {
  -      if ($line[0] != '$') continue;
  -
  -      $d=explode("=",substr($line,1),2);
  -
  +      if ($line[0] != '$') {
  +        continue;
  +      }
  +      $d = explode("=", substr($line, 1), 2);
         if ($d[0]) {
  -        $val=preg_replace("/\s*;$/","",trim($d[1]));
  -        $config[$d[0]]=$val;
  +        $val = preg_replace("/\s*;$/", "", trim($d[1]));
  +        $config[$d[0]] = $val;
         }
       }
  -    return $config;
  +    $this->rawconfig = $config;
     }
   
  -  function _getFormConfig($config,$mode=0) {
  -    $conf=array();
  -    while (list($key,$val) = each($config)) {
  -      $val=stripslashes($val);
  -      if (!isset($val)) $val="''";
  -      if (!$mode) {
  -        eval("\$dum=$val;");
  -        eval("\$$key=$val;");
  -        $conf[$key]=$dum;
  -      } else {
  -        $conf[$key]=$val;
  +  function genRawConfig($rawconfig)
  +  {
  +    $lines = array("<?php\n", "# automatically generated by monisetup.php\n");
  +    while (list($key, $val) = each($rawconfig)) {
  +      if (($key == 'admin_passwd') or ($key == 'purge_passwd')) {
  +        $val = "'".crypt($val,md5(time()))."'";
         }
  -      #print("$mode:\$$key=$val;<br/>");
  +      $lines[] = "\$$key=$val;\n";
  +    }
  +    $lines[] = "?>\n";
  +    $rawconf = join("", $lines);
  +    return $rawconf;
  +  }
  +
  +  function putRawConfig($rawconfig)
  +  {
  +    $ret = FALSE;
  +    if ($this->config_writable()) {
  +      $rawconf = $this->genRawConfig($rawconfig);
  +      umask(000);
  +      $fp = fopen($this->configfile, "w");
  +      fwrite($fp, $rawconf);
  +      fclose($fp);
  +      @chmod($this->configfile, 0666);
  +      $ret = TRUE;
       }
  -    return $conf;
  +    return $ret;
     }
   
  -  function _genRawConfig($config) {
  -    $lines=array("<?php\n","# automatically generated by monisetup\n");
  -    while (list($key,$val) = each($config)) {
  -      if ($key=='admin_passwd' or $key=='purge_passwd')
  -         $val="'".crypt($val,md5(time()))."'";
  -      $lines[]="\$$key=$val;\n";
  +  function config_writable()
  +  {
  +    $ret = FALSE;
  +    if (is_writable($this->configfile)) {
  +      $ret = TRUE;
  +    } elseif (!file_exists($this->configfile) and is_writable(".")) {
  +      $ret = TRUE;
       }
  -    $lines[]="?>\n";
  -    return $lines;
  +    return $ret;
  +  }
  +
  +  function showConfig()
  +  { // display $this->config
  +  }
  +
  +  function showRawConfig()
  +  { // display $this->rawconfig
     }
   }
   
  -function checkConfig($config) {
  -  umask(011);
  -  $dir=getcwd();
  +function check_dir($config) { //FIXME: refactor w/ monisetup.sh
  +  if (!is_writable($config['data_dir'])) {
  +    if (02000 & fileperms(".")) { # check sgid
  +      $datadir_perm = 0775;
  +    } else {
  +      $datadir_perm = 0777;
  +    }
  +    $datadir_perm = decoct($datadir_perm);
  +    print "<h3><font color=red>FATAL: $config[data_dir] directory is not writable</font></h3>\n";
  +    print "<h4>Please execute the following command</h4>";
  +    print "<pre class='console'>\n".
  +          "<font color='green'>$</font> chmod $datadir_perm $config[data_dir]\n".
  +          "</pre>\n";
  +    return FALSE;
  +  }
   
  -  if (!file_exists("config.php") && !is_writable(".")) {
  -     print "<h3><font color='red'>Please change the permission of some directories writable on your server to initialize your Wiki.</font></h3>\n";
  -     print "<pre class='console'>\n<font color='green'>$</font> chmod <b>777</b> $dir/data/ $dir\n</pre>\n";
  -     print "If you want a more safe wiki, try to change the permission of directories with <font color='red'>2777(setgid).</font>\n";
  -     print "<pre class='console'>\n<font color='green'>$</font> chmod <b>2777</b> $dir/data/ $dir\n</pre>\n";
  -     print "After execute one of above two commands, just <a href='monisetup.php'>reload this monisetup.php</a> would make a new initial config.php with detected parameters for your wiki.\n<br/>";
  -     print "<h2><a href='monisetup.php'>Reload</a></h2>";
  -     exit;
  -  } else if (file_exists("config.php")) {
  -     print "<h3><font color='green'>WARN: Please execute the following command after you have completed your configuration.</font></h3>\n";
  -     print "<pre class='console'>\n<font color='green'>$</font> sh secure.sh\n</pre>\n";
  +  $data_sub_dir=array("cache","user","text","text/RCS");
  +  if (02000 & fileperms($config['data_dir'])) {
  +    $DPERM=0775;
  +  } else {
  +    $DPERM=0777;
     }
   
  -  if (file_exists("config.php")) {
  -    if (!is_writable($config['data_dir'])) {
  -      if (02000 & fileperms(".")) # check sgid
  -        $datadir_perm = 0775;
  -      else
  -        $datadir_perm = 0777;
  -      $datadir_perm = decoct($datadir_perm);
  -      print "<h3><font color=red>FATAL: $config[data_dir] directory is not writable</font></h3>\n";
  -      print "<h4>Please execute the following command</h4>";
  -      print "<pre class='console'>\n".
  -            "<font color='green'>$</font> chmod $datadir_perm $config[data_dir]\n</pre>\n";
  -      exit;
  -    }
  -
  -    $data_sub_dir=array("cache","user","text");
  -    if (02000 & fileperms($config['data_dir']))
  -      $DPERM=0775;
  -    else
  -      $DPERM=0777;
  -
  -    foreach($data_sub_dir as $dir) {
  -       if (!file_exists("$config[data_dir]/$dir")) {
  -           umask(000);
  -           mkdir("$config[data_dir]/$dir",$DPERM);
  -           if ($dir == 'text')
  -             mkdir($config['data_dir']."/$dir/RCS",$DPERM);
  -       } else if (!is_writable("$config[data_dir]/$dir")) {
  -           print "<h4><font color=red>$dir directory is not writable</font></h4>\n";
  -           print "<pre class='console'>\n".
  -             "<font color='green'>$</font> chmod a+w $config[$file]\n</pre>\n";
  -       }
  -    }
  -
  -    $writables=array("upload_dir","editlog_name");
  -
  -    foreach($writables as $file) {
  -      if (!is_writable($config[$file])) {
  -        if (file_exists($config[$file])) {
  -          print "<h3><font color=red>$config[$file] is not writable</font> :( </h3>\n";
  -          print "<pre class='console'>\n".
  -              "<font color='green'>$</font> chmod a+w $config[$file]\n</pre>\n";
  +  foreach($data_sub_dir as $dir) {
  +    if (!file_exists("$config[data_dir]/$dir")) {
  +      umask(000);
  +      mkdir("$config[data_dir]/$dir",$DPERM);
  +      if ($dir == 'text') {
  +        mkdir($config['data_dir']."/$dir/RCS",$DPERM);
  +      }
  +    } elseif (!is_writable("$config[data_dir]/$dir")) {
  +      print "<h4><font color=red>$dir directory is not writable</font></h4>\n".
  +            "<pre class='console'>\n".
  +            "<font color='green'>$</font> chmod a+w $config[$file]\n".
  +            "</pre>\n";
  +    }
  +  }
  +
  +  $writables=array("upload_dir", "editlog_name");
  +  foreach($writables as $file) {
  +    if (!is_writable($config[$file])) {
  +      if (file_exists($config[$file])) {
  +        print "<h3><font color=red>$config[$file] is not writable</font> :( </h3>\n";
  +        print "<pre class='console'>\n".
  +              "<font color='green'>$</font> chmod a+w $config[$file]\n".
  +              "</pre>\n";
  +      } else {
  +        if (preg_match("/_dir/",$file)) {
  +          umask(000);
  +          mkdir($config[$file],$DPERM);
  +          print "<h3><font color=blue>$config[$file] is created now</font> :)</h3>\n";
           } else {
  -          if (preg_match("/_dir/",$file)) {
  -            umask(000);
  -            mkdir($config[$file],$DPERM);
  -            print "<h3>&nbsp;&nbsp;<font color=blue>$config[$file] is created now</font> :)</h3>\n";
  +          $fp=@fopen($config[$file],"w+");
  +          if ($fp) {
  +            fclose($fp);
  +            chmod($config[$file],0666);
  +            print "<h4><font color='green'>$config[$file] is created now</font> ;) </h4>\n";
             } else {
  -            $fp=@fopen($config[$file],"w+");
  -            if ($fp) {
  -              chmod($config[$file],0666);
  -              fclose($fp);
  -              print "<h4><font color='green'>$config[$file] is created now</font> ;) </h4>\n";
  -            } else {
  -              print "<pre class='console'>\n".
  -              "<font color='green'>$</font> touch $config[$file]\n".
  -              "<font color='green'>$</font> chmod a+w $config[$file]\n</pre>\n";
  -            }
  +            print "<pre class='console'>\n".
  +            "<font color='green'>$</font> touch $config[$file]\n".
  +            "<font color='green'>$</font> chmod a+w $config[$file]\n</pre>\n";
             }
           }
  -        $error=1;
  -      } else
  -        print "<h3><font color=blue>$config[$file] is writable</font> :)</h3>\n";
  +      }
  +    } else {
  +//      print "<h3><font color=blue>$config[$file] is writable</font> :)</h3>\n";
       }
     }
  +  return TRUE;
   }
   
   function keyToPagename($key) {
  @@ -210,7 +240,185 @@
     return preg_replace("/([^a-z0-9]{1})/ie","'_'.strtolower(dechex(ord('\\1')))",$pagename);
   }
   
  -function show_wikiseed($config,$seeddir='wikiseed') {
  +function show_config_table($config, $rawconfig)
  +{
  +  print_title("Current settings for $config[sitename]");
  +  print "<table align=center border=1 cellpadding=2 cellspacing=2>\n";
  +  print "<tr>";
  +  print "<td align='center'>variable</td>";
  +  print "<td align='center'>value</td>";
  +  print "<td align='center'>result</td>";
  +  print "</tr>\n";
  +  while (list($key, $val) = each($config)) {
  +    if ($key != "admin_passwd" && $key != "purge_passwd") {
  +      $val=htmlspecialchars($val);
  +      print "<tr>";
  +      print "<td>$$key</td>";
  +      print "<td>".htmlspecialchars($rawconfig[$key])."</td>";
  +      if ($config[$key]==='')
  +         $ret="<br />";
  +      else
  +         $ret=$config[$key];
  +      print "<td>$ret</td>";
  +      print "</tr>\n";
  +    }
  +  }
  +  print "</table>\n";
  +  print "<br/>\n";
  +}
  +
  +function show_config_edit_form($config, $rawconfig)
  +{
  +  print_title("Change your configurations");
  +  print "<form method='post'>\n";
  +  print "<table align=center border=1 cellpadding=2 cellspacing=2>\n";
  +  print "<tr>";
  +  print "<td align='center'>variable</td>";
  +  print "<td align='center'>value</td>";
  +  print "<td align='center'>result</td>";
  +  print "</tr>\n";
  +  while (list($key, $val) = each($rawconfig)) {
  +    if ($key != "admin_passwd") {
  +      $val=htmlspecialchars($val);
  +      print "<tr>";
  +      print "<td>$$key</td>";
  +      print "<td><input name='config[$key]' value=\"$val\" size='40'></td>";
  +      if ($config[$key]==='')
  +         $ret="<br />";
  +      else
  +         $ret=$config[$key];
  +      print "<td>$ret</td>";
  +      print "</tr>\n";
  +    }
  +  }
  +
  +  if (!$config[admin_passwd]) {
  +    print "<tr><td><b>\$admin_passwd</b></td>";
  +    print "<td colspan='2'><input type='password' name='newpasswd' size='40'></td></tr>\n";
  +  } else  {
  +    print "<tr><td><b>Old password</b></td>";
  +    print "<td><input type='password' name='oldpasswd' size='40'></td></tr>\n";
  +    print "<tr><td><b>New password</b></td>";
  +    print "<td><input type='password' name='newpasswd' size='40'></td></tr>\n";
  +  }
  +  print "<tr><td colspan=3>";
  +  print "<input type='submit' name='action' value='preview'/>";
  +  print "<input type='submit' name='action' value='update' />";
  +  print "</td></tr>\n";
  +  print "</table>\n";
  +  print "</form>\n";
  +}
  +
  +
  +//
  +// do_action()'s
  +//
  +
  +function do_show($Config)
  +{
  +  $config=$Config->config;
  +  $rawconfig=$Config->rawconfig;
  +
  +  if (!file_exists("config.php")) { /* maybe this is the first run */
  +    print_title("Welcome! This is your first installation.");
  +    print_notice("Default settings are loaded...");
  +    $ret = $Config->putRawConfig($rawconfig);
  +    if ($ret) {
  +      print_notice("Initial configurations are saved successfully.");
  +    } else {
  +      print_error("Saving new configurations failed!!");
  +      return;
  +    }
  +  }
  +
  +  if (!file_exists($config[data_dir]."/text/RecentChanges")) {
  +    print_notice("You have no WikiSeed on your $config[sitename]");
  +    print_notice("You could <a href='?action=seed'>sow WikiSeed's now.</a>");
  +  }
  +
  +  show_config_table($config, $rawconfig);
  +}
  +
  +function do_edit($Config)
  +{
  +  $config=$Config->config;
  +  $rawconfig=$Config->rawconfig;
  +
  +  if (!$config[admin_passwd]) {
  +    print_warn("You have to enter your admin_password");
  +  }
  +  show_config_edit_form($config, $rawconfig);
  +
  +  return;
  +}
  +
  +function do_update($Config)
  +{
  +  $Config->setFormConfig($_POST['config']);
  +  $config=$Config->config;
  +  $rawconfig=$Config->rawconfig;
  +
  +  $passwd = $Config->config[admin_passwd];
  +  $oldpasswd = $_POST['oldpasswd'];
  +  $newpasswd = $_POST['newpasswd'];
  +  $is_valid_passwd = TRUE;
  +  if ($passwd) {
  +    if (crypt($oldpasswd, $passwd) == $passwd) {
  +      $is_valid_passwd = TRUE;
  +    } else {
  +      print_error("Invalid password !!");
  +      print_error("If you can't remember the password, delete \$admin_password in 'config.php' and restart.");
  +      $is_valid_passwd = FALSE;
  +    }
  +  }
  +
  +  if ($is_valid_passwd) {
  +    if ($newpasswd) {
  +      //print_debug("setting newpasswd = '$newpasswd'");
  +      $rawconfig[admin_passwd] = $newpasswd;
  +    } else {
  +      //print_debug("setting oldpasswd = '$oldpasswd'");
  +      $rawconfig[admin_passwd] = $oldpasswd;
  +    }
  +  }
  +
  +  $rawconf = $Config->genRawConfig($rawconfig);
  +  if ($is_valid_passwd) {
  +    $ret = $Config->putRawConfig($rawconfig);
  +    if ($ret) {
  +      print_notice("Configurations are saved successfully.");
  +      print_warn("Please execute the following command in the console.");
  +      print_pre("\$ sh secure.sh");
  +      print_title("Updated Configurations for this $config[sitename]");
  +      print "<pre class='console'>\n";
  +      highlight_string($rawconf);
  +      print "</pre>\n";
  +    } else {
  +      print_error("Saving configurations failed !!");
  +    }
  +  }
  +
  +  return;
  +}
  +
  +function do_preview($Config)
  +{
  +  $Config->setFormConfig($_POST['config']);
  +  $config=$Config->config;
  +  $rawconfig=$Config->rawconfig;
  +  show_config_table($config, $rawconfig);
  +  return;
  +}
  +
  +function do_cancel($Config)
  +{
  +  print_title("You have canceled something.");
  +  return;
  +}
  +
  +function do_seed($Config)
  +{
  +  $seeddir='wikiseed';
     $pages= array();
     $handle= opendir($seeddir);
     while ($file = readdir($handle)) {
  @@ -224,8 +432,7 @@
   
     $num=sizeof($pages);
   
  -  #
  -  $SystemPages="FrontPage|RecentChanges|TitleIndex|FindPage|WordIndex".
  +  $SystemPages="FrontPage|RecentChanges|TitleIndex|FindPage|".
     "FortuneCookies|Pages$|".
     "SystemPages|TwinPages|WikiName|SystemInfo|UserPreferences|".
     "InterMap|IsbnMap|WikiSandBox|SandBox|UploadFile|UploadedFiles|".
  @@ -233,7 +440,6 @@
     "BlogChanges|HotDraw|OeKaki";
   
     $WikiTag='DeleteThisPage';
  -  #
     $seed_filters= array(
       "HelpPages"=>array('/^Help.*/',1),
       "Category pages"=>array('/^Category.*/',1),
  @@ -269,221 +475,155 @@
     }
     print "<input type='hidden' name='action' value='sow_seed' />\n";
     print "<br /><input type='submit' value='sow WikiSeeds'></form>\n";
  +
  +  return;
   }
   
  -function sow_wikiseed($config,$seeddir='wikiseed',$seeds) {
  +function do_sow_seed($Config)
  +{
  +  $seeds = $_POST['seeds'];
  +  if (!$seeds) {
  +    print_error("No WikiSeeds are selected.");
  +    return FALSE;
  +  }
  +  $seeddir = 'wikiseed';
  +  $textdir = $Config->config['text_dir'];
     umask(000);
     print "<pre class='console'>\n";
     foreach($seeds as $seed) {
  -    $key=pagenameToKey($seed);
  -    $cmd="cp $seeddir/$key $config[text_dir]";
  -    #system(escapeshellcmd($cmd));
  -    copy("$seeddir/$key", $config['text_dir']."/$key");
  +    $pagekey=pagenameToKey($seed);
  +    $cmd="cp $seeddir/$pagekey $textdir]";
       print $cmd."\n";
  +    #system(escapeshellcmd($cmd));
  +    copy("$seeddir/$pagekey", $textdir."/$pagekey");
     }
     print "</pre>\n";
  -}
   
  -print <<<EOF
  -<html><head><title>Moni Setup</title>
  -<style type="text/css">
  -//<!--
  -body {font-family:Tahoma;}
  -h1,h2,h3,h4,h5 {
  -  font-family:Tahoma;
  -/* background-color:#E07B2A; */
  -  padding-left:6px;
  -  border-bottom:1px solid #999;
  -}
  -table.wiki {
  -/* background-color:#E2ECE5;*/
  -/* border-collapse: collapse; */
  -  border: 0px outset #E2ECE5;
  -}
  -
  -pre.console {
  -  background-color:#000;
  -  padding: 1em 0.5em 0.5em 1em;
  -  color:white;
  -  width:80%;
  -}
  -
  -td.wiki {
  -  background-color:#E2ECE2;
  -/* border-collapse: collapse; */
  -  border: 0px inset #E2ECE5;
  +  print_notice("WikiSeeds are sowed successfully");
  +  return TRUE;
   }
   
  -//-->
  -</style>
  +//
  +// print_*()
  +//
  +
  +function print_header()
  +{
  +  print <<<HEADER
  +<html>
  +<head>
  +<title>MoniWiki Setup</title>
  +<link rel="stylesheet" type="text/css" href="css/default.css"/>
   </head>
   <body>
  -EOF;
  -
  -print "<h2>Moni Wiki setup</h2>\n";
  +<h2>
  +<a href='monisetup.php'>
  +<img src="imgs/moniwiki-logo.gif" alt="MoniWiki" border="0" align="middle" />
  +&nbsp;Setup
  +</a>
  +&nbsp;:&nbsp;
  +<a href='?action=show'>show</a>&nbsp;
  +<a href='?action=edit'>edit</a>&nbsp;
  +<a href='?action=seed'>seed</a>&nbsp;
  +</h2>
  +HEADER;
  +}
  +
  +function print_footer()
  +{
  +  print <<<FOOTER
  +</body>
  +</html>
  +FOOTER;
  +}
  +
  +function print_msg($class, $msg)
  +{
  +}
  +
  +function print_error($msg)
  +{
  +  print "<h3><font color='red'>";
  +  print "ERROR : ";
  +  print $msg;
  +  print "</font></h3>\n";
  +}
  +
  +function print_warn($msg)
  +{
  +  print "<h3><font color='magenta'>";
  +  print "WARNING : ";
  +  print $msg;
  +  print "</font></h3>\n";
  +}
  +
  +function print_title($msg)
  +{
  +  print "<h3><font color='blue'>";
  +  print $msg;
  +  print "</font></h3>\n";
  +}
  +
  +function print_notice($msg)
  +{
  +  print "<h3><font color='green'>";
  +  print "NOTICE : ";
  +  print $msg;
  +  print "</font></h3>\n";
  +}
   
  -if (file_exists("config.php") && !is_writable("config.php")) {
  -  print "<h2><font color='red'>'config.php' is not writable !!</font></h2>\n";
  -  print "Please change 'config.php' permission as 666 first to write settings<br />\n";
  +function print_pre($msg)
  +{
  +  print "<pre class='console'>\n";
  +  print $msg . "\n";
  +  print "</pre>\n";
  +}
   
  -  return;
  +function print_debug($msg)
  +{
  +  print "<h4><font color='grey'>";
  +  print "DEBUG : ";
  +  print $msg;
  +  print "</font></h4>\n";
   }
   
  -$Config=new MoniConfig();
  +//
  +// main function
  +//
   
  -$config=$_POST['config'];
  -$update=$_POST['update'];
  -$action=$_GET['action'] or $_POST['action'];
  -$newpasswd=$_POST['newpasswd'];
  -$oldpasswd=$_POST['oldpasswd'];
  -
  -if ($_SERVER['REQUEST_METHOD']=="POST" && $config) {
  -  $conf=$Config->_getFormConfig($config);
  -  $rawconfig=$Config->_getFormConfig($config,1);
  -  $config=$conf;
  -
  -  if ($Config->config['admin_passwd']) {
  -    if (crypt($oldpasswd,$Config->config['admin_passwd']) != 
  -      $Config->config['admin_passwd']) {
  -        print "<h3><font color='red'>Invalid password error !!!</font></h3>\n";
  -        print "If you can't remember your admin password, delete password entry in the 'config.php' and restart 'monisetup'<br />\n";
  -        $invalid=1;
  -    } else {
  -        $rawconfig['admin_passwd']=$newpasswd;
  -    }
  -  } else {
  -    if ($newpasswd)
  -       $rawconfig['admin_passwd']=$newpasswd;
  +function setup_main($action)
  +{
  +  if (!$action) {
  +    $action = "show";
     }
   
  -  if ($update) {
  -    print "<h3>Updated Configutations for this $config[sitename]</h3>\n";
  -    $lines=$Config->_genRawConfig($rawconfig);
  -    print "<pre class='console'>\n";
  -    $rawconf=join("",$lines);
  -    #
  -    ob_start();
  -    highlight_string($rawconf);
  -    $highlighted= ob_get_contents();
  -    ob_end_clean();
  -    #print str_replace("<","&lt;",$rawconf);
  -    print $highlighted;
  -    print "</pre>\n";
  -
  -    if (!$invalid && (is_writable("config.php") || !file_exists("config.php"))) {
  -      umask(000);
  -      $fp=fopen("config.php","w");
  -      fwrite($fp,$rawconf);
  -      fclose($fp);
  -      @chmod("config.php",0666);
  -      print "<h3><font color='blue'>Configurations are saved successfully</font></h3>\n";
  -      print "<h3><font color='green'>WARN: Please check <a href='monisetup.php'> your saved configurations</a></font></h3>\n";
  -      print "If all is good, change 'config.php' permission as 644.<br />\n";
  -    } else {
  -      if ($invalid) {
  -        print "<h3><font color='red'>You Can't write this settings to 'config.php'</font></h3>\n";
  -      }
  -    }
  -  } else
  -    print "<h3>Read current settings for this $config[sitename]</h3>\n";
  -} else {
  -  # read settings
  -
  -  if (!$Config->config) {
  -    $Config->getDefaultConfig();
  -    $config=$Config->config;
  -
  -    checkConfig($config);
  -    print "<h2>Welcome ! This is your first installation</h2>\n";
  -
  -    $rawconfig=$Config->rawconfig;
  -    print "<h3 color='blue'>Default settings are loaded...</h3>\n";
  -
  -    $lines=$Config->_genRawConfig($rawconfig);
  -    $rawconf=join("",$lines);
  -    umask(000);
  -    $fp=fopen("config.php","w");
  -    fwrite($fp,$rawconf);
  -    fclose($fp);
  -    @chmod("config.php",0666);
  -    print "<h3><font color='blue'>Initial configurations are saved successfully.</font></h3>\n";
  -    print "<h3><font color='red'>Goto <a href='monisetup.php'>MoniSetup</a> again to configure details</font></h3>\n";
  -    exit;
  -  } else {
  -    $config=$Config->config;
  -    checkConfig($config);
  -    $rawconfig=$Config->rawconfig;
  -  }
  -}
  +  print_header();
   
  -if ($_SERVER['REQUEST_METHOD']=="POST") {
  -  $seeds=$_POST['seeds'];
  -  $action=$_POST['action'];
  -  if ($action=='sow_seed' && $seeds) {
  -    sow_wikiseed($config,'wikiseed',$seeds);
  -    print "<h2>WikiSeeds are sowed successfully</h2>";
  -    print "<h2>goto <a href='wiki.php'>$config[sitename]</a></h2>";
  -    exit;
  -  } else if ($action=='sow_seed' && !$seeds) {
  -    print "<h2><font color='red'>No WikiSeeds are selected</font></h2>";
  -    exit;
  +  $Config = new MoniConfig();
  +  if (!$Config->config_writable()) {
  +    print_error("Please execute the following command to change your configuration.");
  +    print_pre("\$ sh monisetup.sh");
     }
  -}
  -
  -if ($_SERVER['REQUEST_METHOD']!="POST") {
  -  if ($action=='seed') {
  -    show_wikiseed($config,'wikiseed');
  -    exit;
  -  }
  -
  -  print "<h3>Read current settings for this $config[sitename]</h3>\n";
  -  print"<table class='wiki' align=center border=1 cellpadding=2 cellspacing=2>";
  -  print "\n";
  -  while (list($key,$val) = each($config)) {
  -    if ($key != "admin_passwd" && $key != "purge_passwd")
  -    print "<tr><td>\$$key</td><td>$val</td></tr>\n";
  +  if (!check_dir($Config->config)) {
  +    print_error("There seems to be some problem. Please excute the following command.");
  +    print_pre("\$ sh monisetup.sh");
     }
  -  print "</table>\n";
   
  -  print "<h3>Change your settings</h3>\n";
  -  if (!$config['admin_passwd'])
  -  print "<h3><font color='red'>WARN: You have to enter your Admin Password</h3>\n";
  -  else if (file_exists('config.php') && !file_exists($config[data_dir]."/text/RecentChanges")) {
  -    print "<h3><font color='red'>WARN: You have no WikiSeed on your $config[sitename]</font></h3>\n";
  -    print "<h2>If you want to put wikiseeds on your wiki <a href='?action=seed'>Click here</a> now</h2>";
  -  }
  -  print "<form method='post' action=''>\n";
  -  print "<table align=center border=1 cellpadding=2 cellspacing=2>\n";
  -  while (list($key,$val) = each($rawconfig)) {
  -    if ($key != "admin_passwd") {
  -      $val=str_replace('"',"&#34;",$val);
  -      print "<tr><td>$$key</td>";
  -      print "<td><input name='config[$key]' value=\"$val\" size='30'></td></tr>\n";
  -    }
  +  //ob_start();
  +  //print_body()
  +  if (function_exists("do_$action")) {
  +    call_user_func("do_$action", $Config);
  +  } else {
  +    print_error("Unknown action '$action'.");
     }
  +  //ob_end_flush();
   
  -  if (!$config['admin_passwd']) {
  -    print "<tr><td><b>\$admin_passwd</b></td>";
  -    print "<td><input type='password' name='newpasswd' size='30'></td></tr>\n";
  -  } else  {
  -    print "<tr><td><b>Old password</b></td>";
  -    print "<td><input type='password' name='oldpasswd' size='30'></td></tr>\n";
  -    print "<tr><td><b>New password</b></td>";
  -    print "<td><input type='password' name='newpasswd' size='30'></td></tr>\n";
  -  }
  -  print "<tr><td colspan=2>";
  -  print "<input type='submit' value='preview'> ";
  -  if (!$config['admin_passwd'])
  -  print "<input type='submit' name='update' value='update'></td></tr>\n";
  -  else
  -  print "<input type='submit' name='update' value='update'></td></tr>\n";
  -  print "</table></form>\n";
  -
  -  if (file_exists('config.php') && !file_exists($config[data_dir]."/text/RecentChanges")) {
  -    print "<h3><font color='red'>WARN: You have no WikiSeed on your $config[sitename]</font></h3>\n";
  -    print "<h2>If you want to put wikiseeds on your wiki <a href='?action=seed'>Click here</a> now</h2>";
  -  }
  +  print_footer();
   
  +  return;
   }
   
  +setup_main($action);
  +
  +// vim:ts=8:sts=2:sw=2:et
   ?>
  
  
  
  1.134     +13 -3149  moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.133
  retrieving revision 1.134
  diff -u -r1.133 -r1.134
  --- wiki.php	8 Jan 2004 01:05:07 -0000	1.133
  +++ wiki.php	8 Jan 2004 19:16:51 -0000	1.134
  @@ -11,24 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.133 2004/01/08 01:05:07 wkpark Exp $
  +// a Wiki Frontend
   //
  -$_revision = substr('$Revision: 1.133 $',1,-1);
  -$_release = '1.0.7';
  -
  -#ob_start("ob_gzhandler");
  -
  -$timing=new Timer();
  -
  -include("wikilib.php");
  -
  -function _preg_escape($val) {
  -  return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  -}
  -
  -function _preg_search_escape($val) {
  -  return preg_replace('/([\/]{1})/','\\\\\1',$val);
  -}
  +// $Id: wiki.php,v 1.134 2004/01/08 19:16:51 wkpark Exp $
   
   function get_scriptname() {
     // Return full URL of current page.
  @@ -38,3145 +23,24 @@
     return $_SERVER["SCRIPT_NAME"];
   }
   
  -function _rawurlencode($url) {
  -  $name=rawurlencode($url);
  -  $urlname=preg_replace(array('/%2F/i','/%7E/i'),array('/','~'),$name);
  -  return $urlname;
  -}
  -
  -function _urlencode($url) {
  -  #$name=urlencode(strtr($url,"+"," "));
  -  #return preg_replace(array('/%2F/i','/%7E/i','/%23/'),array('/','~','#'),$name);
  -  return preg_replace("/([^a-z0-9\/\?\.\+~#&:;=%\-]{1})/ie","'%'.strtoupper(dechex(ord('\\1')))",$url);
  -}
  -
  -function qualifiedUrl($url) {
  -  if (substr($url,0,7)=="http://")
  -    return $url;
  -  return "http://$_SERVER[HTTP_HOST]$url";
  -}
  -
  -function getPlugin($pluginname) {
  -  static $plugins=array();
  -  if ($plugins) return $plugins[strtolower($pluginname)];
  -
  -  $handle= opendir('plugin');
  -  while ($file= readdir($handle)) {
  -    if (is_dir("plugin/$file")) continue;
  -    $name= substr($file,0,-4);
  -    $plugins[strtolower($name)]= $name;
  -  }
  -
  -  return $plugins[strtolower($pluginname)];
  -}
  -
  -function getProcessor($pro_name) {
  -  static $processors=array();
  -  if ($processors) return $processors[strtolower($pro_name)];
  -
  -  $handle= opendir('plugin/processor');
  -  while ($file= readdir($handle)) {
  -    if (is_dir("plugin/processor/$file")) continue;
  -    $name= substr($file,0,-4);
  -    $processors[strtolower($name)]= $name;
  -  }
  -  return $processors[strtolower($pro_name)];
  -}
  -
  -if (!function_exists ('bindtextdomain')) {
  -  $locale = array();
  -
  -  function gettext ($text) {
  -    global $locale;
  -    if (!empty ($locale[$text]))
  -      return $locale[$text];
  -    return $text;
  -  }
  -
  -  function _ ($text) {
  -    return gettext($text);
  -  }
  -}
  -
  -function goto_form($action,$type="",$form="") {
  -  if ($type==1) {
  -    return "
  -<form name='go' id='go' method='get' action='$action'>
  -<span title='TitleSearch'>
  -<input type='radio' name='action' value='titlesearch' />
  -Title</span>
  -<span title='FullSearch'>
  -<input type='radio' name='action' value='fullsearch' />
  -Contents</span>&nbsp;
  -<input type='text' name='value' class='goto' accesskey='s' size='20' />
  -<input type='submit' name='status' value='Go' class='goto' style='width:23px' />
  -</form>
  -";
  -  } else if ($type==2) {
  -    return "
  -<form name='go' id='go' method='get' action='$action'>
  -<select name='action' style='width:60px'>
  -<option value='goto'/>goto
  -<option value='titlesearch'/>TitleSearch
  -<option value='fullsearch'/>FullSearch
  -</select>
  -<input type='text' name='value' class='goto' accesskey='s' size='20' />
  -<input type='submit' name='status' value='Go' />
  -</form>
  -";
  -  } else if ($type==3) {
  -    return "
  -<form name='go' id='go' method='get' action='$action'>
  -<table class='goto'>
  -<tr><td nowrap='nowrap' style='width:220'>
  -<input type='text' name='value' size='28' accesskey='s' style='width:110px' />
  -<input type='submit' name='status' value='Go' class='goto' style='width:23px' />
  -</td></tr>
  -<tr><td>
  -<span title='TitleSearch' class='goto'>
  -<input type='radio' name='action' value='titlesearch' class='goto' />
  -Title(?)</span>
  -<span title='FullSearch' class='goto'>
  -<input type='radio' name='action' value='fullsearch' accesskey='s' class='goto'/>
  -Contents(/)</span>&nbsp;
  -</td></tr>
  -</table>
  -</form>
  -";
  -  } else {
  -    return <<<FORM
  -<form name='go' id='go' method='get' action='$action' onsubmit="return moin_submit();">
  -<input type='text' name='value' size='20' accesskey='s' class='goto' style='width:100' />
  -<input type='hidden' name='action' value='goto' />
  -<input type='submit' name='status' value='Go' class='goto' style='width:23px;' />
  -</form>
  -FORM;
  -  }
  -}
  -
  -function kbd_handler() {
  -  global $DBInfo;
  -
  -  if (!$DBInfo->kbd_script) return '';
  -  $prefix=get_scriptname();
  -  $sep= $DBInfo->query_prefix;
  -  print <<<EOS
  -<script language="JavaScript" type="text/javascript">
  -<!--
  -url_prefix="$prefix";
  -FrontPage="${sep}$DBInfo->frontpage";
  -//-->
  -</script>
  -<script type="text/javascript" src="$DBInfo->kbd_script">
  -</script>
  -EOS;
  -}
  -
  -class Timer {
  -  var $timers=array();
  -  var $total=0.0;
  -  function Timer() {
  -    $mt= explode(" ",microtime());
  -    $this->save=$mt[0]+$mt[1];
  -  }
  -
  -  function Check($name="default") {
  -    $mt= explode(" ",microtime());
  -    $now=$mt[0]+$mt[1];
  -    $diff=$now-$this->save;
  -    $this->save=$now;
  -    if (isset($this->timers[$name]))
  -      $this->timers[$name]+=$diff;
  -    else
  -      $this->timers[$name]=$diff;
  -    $this->total+=$diff;
  -  }
  -
  -  function Write() {
  -    while (list($name,$d) = each($this->timers)) {
  -      $out.=sprintf("%10s :%3.4f sec (%3.2f %%)\n",$name,$d,$d/$this->total*100);
  -    }
  -    return $out;
  -  }
  -
  -  function Total() {
  -    return sprintf("%4.4f sec\n",$this->total);
  -  }
  -
  -  function Clean() {
  -    $this->timers=array();
  -  }
  -}
  -
  -
  -class MetaDB_dba extends MetaDB {
  -  var $metadb;
  -
  -  function MetaDB_dba($file,$type="db3") {
  -    if (function_exists('dba_open'))
  -      $this->metadb=@dba_open($file.".cache","r",$type);
  -  }
  -
  -  function close() {
  -    dba_close($this->metadb);
  -  }
  -
  -  function getSisterSites($pagename,$mode=1) {
  -    if ($pagename and dba_exists($pagename,$this->metadb)) {
  -      if (!$mode) return true;
  -      $sisters=dba_fetch($pagename,$this->metadb);
  -
  -      if (strlen($sisters) > 40) return "[$pagename]";
  -
  -      $ret="wiki:".
  -        str_replace(" ",":$pagename wiki:",$sisters).":$pagename";
  -      $pagename=_preg_search_escape($pagename);
  -      return preg_replace("/((:[^\s]+){2})(\:$pagename)/","\\1",$ret);
  -    }
  -    return "";
  -  }
  -
  -  function getTwinPages($pagename,$mode=1) {
  -    if ($pagename && dba_exists($pagename,$this->metadb)) {
  -      if (!$mode) return true;
  -
  -      $twins=dba_fetch($pagename,$this->metadb);
  -      $bullet=" ";
  -      if (strlen($twins) > 40) $bullet="\n * ";
  -      $ret=$bullet."wiki:".
  -        str_replace(" ",":$pagename$bullet"."wiki:",$twins).
  -        ":$pagename";
  -
  -      $pagename=_preg_search_escape($pagename);
  -      $ret= preg_replace("/((:[^\s]+){2})(\:$pagename)/","\\1",$ret);
  -      return explode("\n",$ret);
  -    }
  -    return false;
  -  }
  -
  -  function getAllPages() {
  -    if ($this->keys) return $this->keys;
  -    for ($key= dba_firstkey($this->metadb);
  -      $key !== false;
  -      $key= dba_nextkey($this->metadb)) {
  -      $keys[] = $key;
  -    }
  -    $this->keys=$keys;
  -    return $keys;
  -  }
  -
  -  function getLikePages($needle,$count=500) {
  -    $keys=array();
  -    if (!$needle) return $keys;
  -    for ($key= dba_firstkey($this->metadb);
  -      $key !== false;
  -      $key= dba_nextkey($this->metadb)) {
  -      if (preg_match("/($needle)/i",$key)) {
  -        $keys[] = $key; $count--;
  -      }
  -      if ($count < 0) break;
  -    }
  -    return $keys;
  -  }
  -}
  -
  -class MetaDB {
  -  function MetaDB() {
  -    return;
  -  }
  -  function getSisterSites($pagename) {
  -    return "";
  -  }
  -  function getTwinPages($pagename) {
  -    return "";
  -  }
  -  function getAllPages() {
  -    return array();
  -  }
  -  function getLikePages() {
  -    return array();
  -  }
  -  function close() {
  -  }
  -}
  -
  -class Counter_dba {
  -  var $counter;
  -  var $DB;
  -  function Counter_dba($DB) {
  -    if (!function_exists('dba_open')) return;
  -    if (!file_exists($DB->data_dir."/counter.db"))
  -      $this->counter=dba_open($DB->data_dir."/counter.db","n",$DB->dba_type);
  -    else
  -      $this->counter=@dba_open($DB->data_dir."/counter.db","w",$DB->dba_type);
  -    $this->DB=&$DB;
  -  }
  -
  -  function incCounter($pagename,$options="") {
  -    if ($this->DB->owners and in_array($options['id'],$this->DB->owners))
  -      return;
  -    $count=dba_fetch($pagename,$this->counter);
  -    if (!$count) $count=0;
  -    $count++;
  -    dba_replace($pagename,$count,$this->counter);
  -  }
  -
  -  function pageCounter($pagename) {
  -    $count=dba_fetch($pagename,$this->counter);
  -    return $count;
  -  }
  -
  -  function close() {
  -    dba_close($this->counter);
  -  }
  -}
  -
  -class Counter {
  -  function Counter($DB="") { }
  -  function incCounter($page,$options="") { }
  -  function pageCounter($page) { return 1; }
  -  function close() { }
  -}
  -
  -class Security {
  -  var $DB;
  -
  -  function Security($DB="") {
  -    $this->DB=$DB;
  -  }
  -
  -# $options[page]: pagename
  -# $options[id]: user id
  -  function readable($options="") {
  -    return 1;
  -  }
  -
  -  function writable($options="") {
  -    if (!$options['page']) return 0; # XXX
  -    return $this->DB->_isWritable($options['page']);
  -  }
  -
  -  function validuser($options="") {
  -    return 1;
  -  }
  -
  -  function is_allowed($action="read",$options) {
  -    return 1;
  -  }
  -
  -  function is_protected($action="read",$options) {
  -    # password protected POST actions
  -    $protected_actions=array(
  -      "deletepage","deletefile","rename","rcspurge","rcs","chmod","backup","restore");
  -    $action=strtolower($action);
  -
  -    if (in_array($action,$protected_actions)) {
  -      return 1;
  -    }
  -    return 0;
  -  }
  -
  -  function is_valid_password($passwd,$options) {
  -    return
  -     $this->DB->admin_passwd==crypt($passwd,$this->DB->admin_passwd);
  -  }
  -}
  -
  -function getConfig($configfile, $options=array()) {
  -  if (!file_exists($configfile)) {
  -    if ($options['init']) {
  -      $script= preg_replace("/\/([^\/]+)\.php$/","/monisetup.php",
  -               $_SERVER['SCRIPT_NAME']);
  -      header("Location: $script");
  -      exit;
  -    }
  -    return array();
  -  } 
  -
  -  foreach ($options as $key=>$val) $$key=$val;
  -  unset($key,$val,$options);
  -  include($configfile);
  -  unset($configfile);
  -
  -  $config=get_defined_vars();
  -#  print_r($config);
  -
  -  if ($menu) $config['menu']=$menu;
  -  if ($icons) $config['icons']=$icons;
  -  if ($icon) $config['icon']=$icon;
  -  if ($actions) $config['actions']=$actions;
  -
  -  return $config;
  -}
  -
  -class WikiDB {
  -  function WikiDB($config=array()) {
  -    # Default Configuations
  -    $this->frontpage='FrontPage';
  -    $this->sitename='UnnamedWiki';
  -    $this->upload_dir= 'pds';
  -    $this->data_dir= './data';
  -    $this->query_prefix='/';
  -    $this->umask= 02;
  -    $this->charset='euc-kr';
  -    $this->lang='auto';
  -    $this->dba_type="db3";
  -    $this->use_counter=0;
  -
  -    $this->text_dir= $this->data_dir.'/text';
  -    $this->cache_dir= $this->data_dir.'/cache';
  -    $this->vartmp_dir= '/var/tmp';
  -    $this->intermap= $this->data_dir.'/intermap.txt';
  -    $this->editlog_name= $this->data_dir.'/editlog';
  -    $this->shared_intermap=$this->data_dir."/text/InterMap";
  -    $this->shared_metadb=$this->data_dir."/metadb";
  -    $this->url_prefix= '/moniwiki';
  -    $this->imgs_dir= $this->url_prefix.'/imgs';
  -    $this->css_dir= 'css';
  -    $this->css_url= $this->url_prefix.'/css/default.css';
  -
  -    $this->kbd_script= $this->url_prefix.'/css/kbd.js';
  -    $this->logo_img= $this->imgs_dir.'/moniwiki-logo.gif';
  -    $this->logo_page= $this->frontpage;
  -    $this->logo_string= '<img src="'.$this->logo_img.'" alt="[logo]" border="0" align="middle" />';
  -    $this->metatags='<meta name="ROBOTS" content="NOINDEX,NOFOLLOW" />';
  -    $this->use_smileys=1;
  -    $this->hr="<hr class='wikiHr' />";
  -    $this->date_fmt= 'Y-m-d';
  -    $this->datetime_fmt= 'Y-m-d H:i:s';
  -    #$this->changed_time_fmt = ' . . . . [h:i a]';
  -    $this->changed_time_fmt= ' [h:i a]'; # used by RecentChanges macro
  -    $this->admin_passwd= 'daEPulu0FLGhk'; # default value moniwiki
  -    $this->purge_passwd= '';
  -    $this->rcs_user='root';
  -    $this->actions= array('DeletePage','LikePages');
  -    $this->show_hosts= TRUE;
  -    $this->iconset='moni';
  -    $this->goto_type='';
  -    $this->goto_form='';
  -    $this->template_regex='[a-z]Template$';
  -    $this->category_regex='^Category[A-Z]';
  -    $this->notify=0;
  -    $this->trail=0;
  -    $this->origin=0;
  -    $this->arrow=" &#x203a; ";
  -    $this->home=Home;
  -    $this->diff_type='fancy_diff';
  -    $this->nonexists='nonexists';
  -    $this->use_sistersites=1;
  -    $this->use_twinpages=1;
  -    $this->pagetype=array();
  -    $this->smiley='wikismiley';
  -
  -    $this->purple_icon='#';
  -#    $this->security_class="needtologin";
  -
  -    # set user-specified configuration
  -    if ($config) {
  -      # read configurations
  -      foreach ($config as $key=>$val)
  -        $this->$key=$val;
  -    }
  -
  -    if (!$this->purge_passwd)
  -      $this->purge_passwd=$this->admin_passwd;
  -
  -#
  -    if (!$this->menu) {
  -      $this->menu= array($this->frontpage=>"accesskey='1'",'FindPage'=>"accesskey='4'",'TitleIndex'=>"accesskey='3'",'RecentChanges'=>"accesskey='2'");
  -      $this->menu_bra="";
  -      $this->menu_cat="|";
  -      $this->menu_sep="|";
  -    }
  -
  -    if (!$this->icon) {
  -    $iconset=$this->iconset;
  -    $imgdir=$this->imgs_dir;
  -    $this->icon['upper']="<img src='$imgdir/$iconset-upper.gif' alt='U' align='middle' border='0' />";
  -    $this->icon['edit']="<img src='$imgdir/$iconset-edit.gif' alt='E' align='middle' border='0' />";
  -    $this->icon['diff']="<img src='$imgdir/$iconset-diff.gif' alt='D' align='middle' border='0' />";
  -    $this->icon['del']="<img src='$imgdir/$iconset-deleted.gif' alt='(del)' align='middle' border='0' />";
  -    $this->icon['info']="<img src='$imgdir/$iconset-info.gif' alt='I' align='middle' border='0' />";
  -    $this->icon['rss']="<img src='$imgdir/$iconset-rss.gif' alt='RSS' align='middle' border='0' />";
  -    $this->icon['show']="<img src='$imgdir/$iconset-show.gif' alt='R' align='middle' border='0' />";
  -    $this->icon['find']="<img src='$imgdir/$iconset-search.gif' alt='S' align='middle' border='0' />";
  -    $this->icon['help']="<img src='$imgdir/$iconset-help.gif' alt='H' align='middle' border='0' />";
  -    $this->icon['www']="<img src='$imgdir/$iconset-www.gif' alt='www' align='middle' border='0' />";
  -    $this->icon['mailto']="<img src='$imgdir/$iconset-email.gif' alt='M' align='middle' border='0' />";
  -    $this->icon['create']="<img src='$imgdir/$iconset-create.gif' alt='N' align='middle' border='0' />";
  -    $this->icon['new']="<img src='$imgdir/$iconset-new.gif' alt='U' align='middle' border='0' />";
  -    $this->icon['updated']="<img src='$imgdir/$iconset-updated.gif' alt='U' align='middle' border='0' />";
  -    $this->icon['user']="UserPreferences";
  -    $this->icon['home']="<img src='$imgdir/$iconset-home.gif' alt='M' align='middle' border='0' />";
  -    $this->icon['main']="<img src='$imgdir/$iconset-main.gif' alt='^' align='middle' border='0' />";
  -    $this->icon_sep=" ";
  -    $this->icon_bra=" ";
  -    $this->icon_cat=" ";
  -    }
  -
  -    if (!$this->icons) {
  -      $this->icons=array(
  -              array("","?action=edit",$this->icon['edit'],"accesskey='e'"),
  -              array("","?action=diff",$this->icon['diff'],"accesskey='c'"),
  -              array("","",$this->icon['show']),
  -              array("FindPage","",$this->icon['find']),
  -              array("","?action=info",$this->icon['info']),
  -              array("","?action=subscribe",$this->icon['mailto']),
  -              array("HelpContents","",$this->icon['help']),
  -           );
  -    }
  -
  -    # load smileys
  -    if ($this->use_smileys){
  -      include_once($this->smiley.".php");
  -      # set smileys rule
  -      $tmp=array_keys($smileys);
  -      $tmp=array_map("_preg_escape",$tmp);
  -      $rule=join($tmp,"|");
  -      $this->smiley_rule=$rule;
  -      $this->smileys=$smileys;
  -    }
  -
  -    # ??? Number of lines output per each flush() call.
  -    // $this->lines_per_flush = 10;
  -
  -    # ??? Is mod_rewrite being used to translate 'WikiWord' to
  -    // $this->rewrite = true;
  -
  -    if ($this->path)
  -      putenv("PATH=".$this->path);
  -    if ($this->rcs_user)
  -      putenv('LOGNAME='.$this->rcs_user);
  -
  -    $this->set_intermap();
  -    if ($this->shared_metadb)
  -      $this->metadb=new MetaDB_dba($this->shared_metadb,$this->dba_type);
  -    if (!$this->metadb->metadb)
  -      $this->metadb=new MetaDB();
  -
  -    if ($this->use_counter)
  -      $this->counter=new Counter_dba($this);
  -    if (!$this->counter->counter)
  -      $this->counter=new Counter();
  -
  -    if ($this->security_class) {
  -      include_once("plugin/security/$this->security_class.php");
  -      $class="Security_".$this->security_class;
  -      $this->security=new $class ($this);
  -    } else
  -      $this->security=new Security($this);
  -  }
  -
  -  function Close() {
  -    $this->metadb->close();
  -    $this->counter->close();
  -  }
  -
  -  function set_intermap() {
  -    # intitialize interwiki map
  -    $map=file($this->intermap);
  -    if ($this->sistermap and file_exists($this->sistermap))
  -      $map=array_merge($map,file($this->sistermap));
  -
  -    # read shared intermap
  -    $shared_map=array();
  -    if (file_exists($this->shared_intermap)) {
  -      $shared_map=file($this->shared_intermap);
  -    }
  -    # merge
  -    $map=array_merge($map,$shared_map);
  -
  -    for ($i=0;$i<sizeof($map);$i++) {
  -      $line=rtrim($map[$i]);
  -      if (!$line || $line[0]=="#" || $line[0]==" ") continue;
  -      if (preg_match("/^[A-Z]+/",$line)) {
  -        $dum=split("[[:space:]]",$line);
  -        $this->interwiki[$dum[0]]=trim($dum[1]);
  -        $this->interwikirule.="$dum[0]|";
  -      }
  -    }
  -    $this->interwikirule.="Self";
  -    $this->interwiki[Self]=get_scriptname().$this->query_prefix;
  -  }
  -
  -  function _getPageKey($pagename) {
  -    # normalize a pagename to uniq key
  -
  -    # moinmoin style internal encoding
  -    #$name=rawurlencode($pagename);
  -    #$name=strtr($name,"%","_");
  -    #$name=preg_replace("/%([a-f0-9]{2})/ie","'_'.strtolower('\\1')",$name);
  -    #$name=preg_replace(".","_2e",$name);
  -
  -    #$name=str_replace("\\","",$pagename);
  -    #$name=stripslashes($pagename);
  -    $name=preg_replace("/([^a-z0-9]{1})/ie","'_'.strtolower(dechex(ord('\\1')))",$pagename);
  -    return $name;
  -  }
  -
  -  function getPageKey($pagename) {
  -    $name=preg_replace("/([^a-z0-9]{1})/ie","'_'.strtolower(dechex(ord('\\1')))",$pagename);
  -    return $this->text_dir . '/' . $name;
  -  }
  -
  -  function pageToKeyname($pagename) {
  -    return preg_replace("/([^a-z0-9]{1})/ie","'_'.strtolower(dechex(ord('\\1')))",$pagename);
  -  }
  -
  -  function hasPage($pagename) {
  -    if (!$pagename) return false;
  -    $name=$this->getPageKey($pagename);
  -    return file_exists($name); 
  -  }
  -
  -  function getPage($pagename,$options="") {
  -    return new WikiPage($pagename,$options);
  -  }
  -
  -  function keyToPagename($key) {
  -  #  return preg_replace("/_([a-f0-9]{2})/e","chr(hexdec('\\1'))",$key);
  -  #  $pagename=preg_replace("/_([a-f0-9]{2})/","%\\1",$key);
  -  #  $pagename=str_replace("_","%",$key);
  -    $pagename=strtr($key,'_','%');
  -    return rawurldecode($pagename);
  -  }
  -
  -  function getPageLists($options='') {
  -    $pages = array();
  -    $handle = opendir($this->text_dir);
  -
  -    if (!$options) {
  -      while ($file = readdir($handle)) {
  -        if (is_dir($this->text_dir."/".$file)) continue;
  -        $pages[] = $this->keyToPagename($file);
  -      }
  -      closedir($handle);
  -      return $pages;
  -    } else if ($options['limit']) { # XXX
  -       while ($file = readdir($handle)) {
  -          if (is_dir($this->text_dir."/".$file)) continue;
  -          if (filemtime($this->text_dir."/".$file) > $options['limit'])
  -             $pages[] = $this->keyToPagename($file);
  -       }
  -       closedir($handle);
  -    } else if ($options['count']) {
  -       $count=$options['count'];
  -       while (($file = readdir($handle)) && $count > 0) {
  -          if (is_dir($this->text_dir."/".$file)) continue;
  -          $pages[] = $this->keyToPagename($file);
  -          $count--;
  -       }
  -       closedir($handle);
  -    } else if ($options['date']) {
  -       while ($file = readdir($handle)) {
  -          if (is_dir($this->text_dir."/".$file)) continue;
  -          $mtime=filemtime($this->text_dir."/".$file);
  -          $pagename= $this->keyToPagename($file);
  -          $pages[$pagename]= $mtime;
  -       }
  -       closedir($handle);
  -    }
  -    return $pages;
  -  }
  -
  -  function getLikePages($needle,$mode=0) {
  -    $pages= array();
  -    $handle= opendir($this->text_dir);
  -    if ($mode==1)
  -      $needle_key= $this->pageToKeyname($needle);
  -    else $needle_key=$needle;
  -
  -    while ($file = readdir($handle)) {
  -      if (is_dir($this->text_dir."/".$file)) continue;
  -      if (preg_match("/($needle_key)/",$file))
  -        $pages[] = $this->keyToPagename($file);
  -    }
  -    closedir($handle);
  -    return $pages;
  -  }
  -
  -  function getCounter() {
  -    return sizeof($this->getPageLists());
  -  }
  -
  -  function addLogEntry($page_name, $remote_name,$comment,$action="SAVE") {
  -    $user=new User();
  -    if ($user->id != 'Anonymous') {
  -      $udb=new UserDB($this);
  -      $udb->checkUser(&$user);
  -    }
  -    $comment=strtr($comment,"\t"," ");
  -    $fp_editlog = fopen($this->editlog_name, 'a+');
  -    $time= time();
  -    $host= gethostbyaddr($remote_name);
  -    $msg="$page_name\t$remote_name\t$time\t$host\t$user->id\t$comment\t$action\n";
  -    fwrite($fp_editlog, $msg);
  -    fclose($fp_editlog);
  -  }
  -
  -  function reverse($arrayX) {
  -    $out= array();
  -    $size= count($arrayX);
  -    for ($i= $size - 1; $i >= 0; $i--)
  -      $out[]= $arrayX[$i];
  -    return $out;
  -  }
  -
  -  function editlog_raw_lines($size=6000,$quick="") {
  -    define(DEFSIZE,6000);
  -    if ($size==0) $size=DEFSIZE;
  -    $filesize= filesize($this->editlog_name);
  -    if ($filesize > $size) {
  -      $fp= fopen($this->editlog_name, 'r');
  -
  -      fseek($fp, -$size, SEEK_END);
  -
  -      $dumm=fgets($fp,1024); # emit dummy
  -      while (!feof($fp)) {
  -        $line=fgets($fp,2048);
  -        $lines[]=$line;
  -      }
  -      fclose($fp);
  -    } else
  -      $lines=file($this->editlog_name);
  -
  -    #$lines=$this->reverse($lines);
  -    $lines=array_reverse($lines);
  -    if (!$lines[0]) # delete last dummy
  -      unset($lines[0]);
  -    if (!$lines) $lines=array();
  -
  -    if ($quick) {
  -      foreach($lines as $line) {
  -        $dum=explode("\t",$line,2);
  -        if ($keys[$dum[0]]) continue;
  -        $keys[$dum[0]]=1;
  -        $out[]=$line;
  -      }
  -      $lines=$out;
  -    }
  -
  -    return $lines;
  -  }
  -
  -  function _replace_variables($body,$options) {
  -    if ($this->template_regex
  -        && preg_match("/$this->template_regex/",$options['page']))
  -      return $body;
  -
  -    $time=gmdate("Y-m-d\TH:i:s");
  -
  -    $id=$options['id'];
  -    if ($id != 'Anonymous')
  -      if (!preg_match('/([A-Z][a-z0-9]+){2,}/',$id)) $id='['.$id.']';
  - 
  -    $body=preg_replace("/@DATE@/","[[Date($time)]]",$body);
  -    $body=preg_replace("/@TIME@/","[[DateTime($time)]]",$body);
  -    $body=preg_replace("/@SIG@/","-- $id [[DateTime($time)]]",$body);
  -    $body=preg_replace("/@PAGE@/",$options['page'],$body);
  -    $body=preg_replace("/@date@/","$time",$body);
  -
  -    return $body;
  -  }
  -
  -  function savePage($page,$comment="",$options=array()) {
  -    $user=new User();
  -    if ($user->id != 'Anonymous') {
  -      $udb=new UserDB($this);
  -      $udb->checkUser(&$user);
  -    }
  -    $REMOTE_ADDR=$_SERVER['REMOTE_ADDR'];
  -    $comment=escapeshellcmd($comment);
  -    $pagename=escapeshellcmd($page->name);
  -
  -    $keyname=$this->_getPageKey($page->name);
  -    $key=$this->text_dir."/$keyname";
  -
  -    $fp=fopen($key,"w");
  -    if (!$fp)
  -       return -1;
  -    flock($fp,LOCK_EX);
  -    $body=$this->_replace_variables($page->body,$options);
  -    $page->write($body);
  -    fwrite($fp, $body);
  -    flock($fp,LOCK_UN);
  -    fclose($fp);
  -    $ret=system("ci -l -x,v/ -q -t-\"".$pagename."\" -m\"".$REMOTE_ADDR.';;'.
  -            $user->id.';;'.$comment."\" ".$key);
  -    # check minor edits XXX
  -    $minor=0;
  -    if ($this->use_minorcheck or $options['minorcheck']) {
  -      $info=$page->get_info();
  -      if ($info[1]) {
  -        eval('$check='.$info[1].';');
  -        if (abs($check) < 3) $minor=1;
  -      }
  -    }
  -    if (!$minor)
  -      $this->addLogEntry($keyname, $REMOTE_ADDR,$comment,"SAVE");
  -    return 0;
  -  }
  -
  -  function deletePage($page,$options='') {
  -    $REMOTE_ADDR=$_SERVER['REMOTE_ADDR'];
  -
  -    $comment=$options['comment'];
  -
  -    $keyname=$this->_getPageKey($page->name);
  -
  -    $delete=@unlink($this->text_dir."/$keyname");
  -    if ($options['history']) @unlink($this->text_dir."/RCS/$keyname,v");
  -    $this->addLogEntry($keyname, $REMOTE_ADDR,$comment,"SAVE");
  -
  -    $handle= opendir($this->cache_dir);
  -    while ($file= readdir($handle)) {
  -      if ($file[0] != '.' and is_dir("$this->cache_dir/$file")) {
  -        $cache= new Cache_text($file);
  -        $cache->remove($page->name);
  -
  -        # blog cache
  -        if ($file == 'blogchanges') {
  -          $handle2= opendir("$this->cache_dir/$file");
  -          while ($fcache= readdir($handle2)) {
  -            #print $keyname.';'.$fcache."\n";
  -            if (preg_match("/\d+_2e$keyname$/",$fcache))
  -              unlink("$this->cache_dir/$file/$fcache");
  -          }
  -        } # for blog cache
  -      }
  -    }
  -  }
  -
  -  function renamePage($pagename,$new,$options='') {
  -    $REMOTE_ADDR=$_SERVER['REMOTE_ADDR'];
  -
  -    $okey=$this->getPageKey($pagename);
  -    $nkey=$this->getPageKey($new);
  -    $keyname=$this->_getPageKey($new);
  -
  -    rename($okey,$nkey);
  -    if ($options['history']) {
  -      $oname=$this->_getPageKey($pagename);
  -      rename($this->text_dir."/RCS/$oname,v",$this->text_dir."/RCS/$keyname,v");
  -    }
  -    $comment=sprintf(_("Rename %s to %s"),$pagename,$new);
  -    $this->addLogEntry($keyname, $REMOTE_ADDR,$comment,"SAVE");
  -  }
  -
  -  function _isWritable($pagename) {
  -    $key=$this->getPageKey($pagename);
  -    # True if page can be changed
  -    return is_writable($key) or !file_exists($key);
  -  }
  -
  -  function getPerms($pagename) {
  -    $key=$this->getPageKey($pagename);
  -    if (file_exists($key))
  -       return fileperms($key);
  -    return 0666;
  -  }
  -
  -  function setPerms($pagename,$perms) {
  -    umask(000);
  -    $key=$this->getPageKey($pagename);
  -    if (file_exists($key)) chmod($key,$perms);
  -  }
  -}
  -
  -class Cache_text {
  -  function Cache_text($arena) {
  -    global $DBInfo;
  -    umask(000);
  -    $this->cache_dir=$DBInfo->cache_dir."/$arena";
  -    if (!file_exists($this->cache_dir))
  -      mkdir($this->cache_dir, 0777);
  -  }
  -
  -  function getKey($pagename) {
  -    $name=preg_replace("/([^a-z0-9]{1})/ie","'_'.strtolower(dechex(ord('\\1')))",$pagename);
  -    return $this->cache_dir . '/' . $name;
  -  }
  -
  -  function update($pagename,$val,$mtime="") {
  -    $key=$this->getKey($pagename);
  -    if ($mtime and ($mtime <= $this->mtime($key))) return false;
  -
  -    if (is_array($val))
  -      $val=join("\n",array_keys($val))."\n";
  -    else
  -      $val=str_replace("\r","",$val);
  -    $this->_save($key,$val);
  -    return true;
  -  }
  -
  -  function _save($key,$val) {
  -    umask(011);
  -    $fp=fopen($key,"w+");
  -    fwrite($fp,$val);
  -    fclose($fp);
  -  }
  -
  -  function fetch($pagename,$mtime="") {
  -    $key=$this->getKey($pagename);
  -    if ($this->_exists($key)) {
  -       if (!$mtime) {
  -          return $this->_fetch($key);
  -       }
  -       else if ($this->_mtime($key) > $mtime)
  -          return $this->_fetch($key);
  -    }
  -    return false;
  -  }
  -
  -  function exists($pagename) {
  -    $key=$this->getKey($pagename);
  -    return $this->_exists($key);
  -  }
  -
  -  function _exists($key) {
  -    return file_exists($key);
  -  }
  -
  -  function _fetch($key) {
  -    $fp=fopen($key,"r");
  -    $content=fread($fp,filesize($key));
  -    fclose($fp);
  -    return $content;
  -  }
  -
  -  function _mtime($key) {
  -    return filemtime($key);
  -  }
  -
  -  function mtime($pagename) {
  -    $key=$this->getKey($pagename);
  -    if ($this->_exists($key))
  -       return $this->_mtime($key);
  -    return 0;
  -  }
  -
  -#  function needsUpdate($pagename) {
  -#    $key=$this->getKey($pagename);
  -#  }
  -
  -  function remove($pagename) {
  -    $key=$this->getKey($pagename);
  -    if ($this->_exists($key))
  -      unlink($key);
  -  }
  -}
  -
  -class WikiPage {
  -  var $fp;
  -  var $filename;
  -  var $rev;
  -  var $body;
  -
  -  function WikiPage($name,$options="") {
  -    if ($options['rev'])
  -      $this->rev=$options['rev'];
  -    else
  -      $this->rev=0; # current rev.
  -    $this->name= $name;
  -    $this->filename= $this->_filename($name);
  -    $this->urlname= _rawurlencode($name);
  -    $this->body= "";
  -    $this->title=get_title($name);
  -    #$this->title=preg_replace("/((?<=[A-Za-z0-9])[A-Z][a-z0-9])/"," \\1",$name);
  -  }
  -
  -  function _filename($pagename) {
  -    # have to be factored out XXX
  -    # Return filename where this word/page should be stored.
  -    global $DBInfo;
  -    return $DBInfo->getPageKey($pagename);
  -  }
  -
  -  function exists() {
  -    # Does a page for the given word already exist?
  -    return file_exists($this->filename);
  -  }
  -
  -#  function writable() {
  -#    # True if page can be changed
  -#    return is_writable($this->filename) or !$this->exists();
  -#  }
  -
  -  function mtime () {
  -    return @filemtime($this->filename);
  -  }
  -
  -  function size() {
  -    if ($this->fsize) return $this->fsize;
  -    $this->fsize=@filesize($this->filename);
  -    return $this->fsize;
  -  }
  -
  -  function get_raw_body($options='') {
  -    if ($this->body && !$options['rev']) {
  -       return $this->body;
  -    }
  -#    if (!$this->exists()) return '';
  -
  -    if ($this->rev || $options['rev']) {
  -       if ($options['rev']) $rev=$options['rev'];
  -       else $rev=$this->rev;
  -       $fp=@popen("co -x,v/ -q -p\"".$rev."\" ".$this->filename,"r");
  -       if (!$fp)
  -          return "";
  -       while (!feof($fp)) {
  -          $line=fgets($fp,2048);
  -          $out.= $line;
  -       }
  -       pclose($fp);
  -       return $out;
  -    }
  -
  -    $fp=@fopen($this->filename,"r");
  -    if (!$fp) {
  -       $out="You have no permission to see this page.\n\n";
  -       $out.="See MoniWiki/AccessControl\n";
  -       return $out;
  -    }
  -    $this->fsize=filesize($this->filename);
  -#    $body="";
  -#    if ($fp) { while($line=fgets($fp, 2048)) $body.=$line; }
  -#    $this->$body=implode("", file($this->filename));
  -#    $this->body=$body;
  -    $body=fread($fp,$this->fsize);
  -    fclose($fp);
  -    $this->body=$body;
  -
  -    return $this->body;
  -  }
  -
  -  function _get_raw_body() {
  -    $fp=@fopen($this->filename,"r");
  -    if ($fp) {
  -      $size=filesize($this->filename);
  -      $this->body=fread($fp,$size);
  -      fclose($fp);
  -    } else
  -      return '';
  -
  -    return $this->body;
  -  }
  -
  -  function set_raw_body($body) {
  -    $this->body=$body;
  -  }
  -
  -  function update() {
  -    if ($this->body)
  -       $this->write($this->body);
  -  }
  -
  -  function write($body) {
  -    #if ($body)
  -    $this->body=$body;
  -  }
  -
  -  function get_rev($mtime="",$last=0) {
  -    if ($last==1) {
  -      $tag='head:';
  -      $opt='-h';
  -    } else $tag='revision';
  -    if ($mtime) {
  -      $date=gmdate('Y/m/d H:i:s',$mtime);
  -      if ($date) {
  -        $opt="-d\<'$date'";
  -        $tag='revision';
  -      }
  -    }
  -    $fp=popen("rlog -x,v/ $opt ".$this->filename,"r");
  -#   if (!$fp)
  -#      print "No older revisions available";
  -# XXX
  -    while (!feof($fp)) {
  -      $line=fgets($fp,1024);
  -      preg_match("/^$tag\s+([\d\.]+)$/",$line,$match);
  -      if ($match[1]) {
  -        $rev=$match[1];
  -        break;
  -      }
  -    }
  -    pclose($fp);
  -    if ($rev > 1.0)
  -      return $rev;
  -    return '';
  -  }
  -
  -  function get_info($rev='') {
  -    $info=array('','','','','');
  -    if (!$rev)
  -      $rev=$this->get_rev('',1);
  -    if (!$rev) return $info;
  -    $fp=popen("rlog -x,v/ -r$rev ".$this->filename,"r");
  -    $state=0;
  -    while (!feof($fp)) {
  -      $line=fgets($fp,1024);
  -      if ($state == 0 and preg_match("/^date:\s.*$/",$line)) {
  -        $tmp=preg_replace("/date:\s(.*);\s+author:.*;\s+state:.*;/","\\1",rtrim($line));
  -        $tmp=explode('lines:',$tmp);
  -        $info[0]=$tmp[0];$info[1]=$tmp[1];
  -        $state=1;
  -      } else if ($state) {
  -        list($info[2],$info[3],$info[4])=explode(';;',$line,3);
  -        break;
  -      }
  -    }
  -    pclose($fp);
  -    return $info;
  -  }
  -}
  -
  -class Formatter {
  -  var $sister_idx=1;
  -  var $group="";
  -
  -  function Formatter($page="",$options="") {
  -    global $DBInfo;
  -
  -    $this->page=$page;
  -    $this->head_num=1;
  -    $this->head_dep=0;
  -    $this->toc=0;
  -    $this->highlight="";
  -    $this->prefix= get_scriptname();
  -    $this->url_prefix= $DBInfo->url_prefix;
  -    $this->imgs_dir= $DBInfo->imgs_dir;
  -    $this->actions= $DBInfo->actions;
  -
  -    if (($p=strpos($page->name,"~")))
  -      $this->group=substr($page->name,0,$p+1);
  -
  -    $this->sister_on=1;
  -    $this->sisters=array();
  -    $this->foots=array();
  -    $this->pagelinks=array();
  -    $this->icons="";
  -
  -    $this->themeurl= $DBInfo->url_prefix;
  -    $this->themedir= dirname(__FILE__);
  -    $this->set_theme($options['theme']);
  -
  -    #$this->baserule=array("/<([^\s][^>]*)>/","/`([^`]*)`/",
  -    $this->baserule=array("/<([^\s<>])/","/`([^`' ]+)'/","/(?<!`)`([^`]*)`/",
  -                     "/'''([^']*)'''/","/(?<!')'''(.*)'''(?!')/",
  -                     "/''([^']*)''/","/(?<!')''(.*)''(?!')/",
  -                     "/\^([^ \^]+)\^(?:\s)/","/,,([^ ,]+),,(?:\s)/",
  -                     "/__([^ _]+)__(?:\s)/","/^-{4,}/");
  -    $this->baserepl=array("&lt;\\1","&#96;\\1'","<tt class='wiki'>\\1</tt>",
  -                     "<b>\\1</b>","<b>\\1</b>",
  -                     "<i>\\1</i>","<i>\\1</i>",
  -                     "<sup>\\1</sup>","<sub>\\1</sub>",
  -                     "<u>\\1</u>","<hr class='wiki' />\n");
  -
  -    # NoSmoke's MultiLineCell hack
  -    $this->extrarule=array("/{{\|/","/\|}}/");
  -    $this->extrarepl=array("</div><table class='closure'><tr class='closure'><td class='closure'><div>","</div></td></tr></table><div>");
  -    
  -    # set smily_rule,_repl
  -    if ($DBInfo->smileys) {
  -      $smiley_rule='/(?<=\s|^)('.$DBInfo->smiley_rule.')(?=\s|$)/e';
  -      $smiley_repl="\$this->smiley_repl('\\1')";
  -
  -      $this->extrarule[]=$smiley_rule;
  -      $this->extrarepl[]=$smiley_repl;
  -    }
  -
  -    #$punct="<\"\'}\]\|;,\.\!";
  -    $punct="<\'}\]\|;\.\)\!"; # , is omitted for the WikiPedia
  -    $url="wiki|http|https|ftp|nntp|news|irc|telnet|mailto|file|attachment";
  -    $urlrule="((?:$url):([^\s$punct]|(\.?[^\s$punct]))+)";
  -    #$urlrule="((?:$url):(\.?[^\s$punct])+)";
  -    #$urlrule="((?:$url):[^\s$punct]+(\.?[^\s$punct]+)+\s?)";
  -    # solw slow slow
  -    #(?P<word>(?:/?[A-Z]([a-z0-9]+|[A-Z]*(?=[A-Z][a-z0-9]|\b))){2,})
  -    $this->wordrule=
  -    # single bracketed rule [http://blah.blah.com Blah Blah]
  -    "(\[($url):[^\s\]]+(\s[^\]]+)?\])|".
  -    # InterWiki
  -    # strict but slow
  -    #"\b(".$DBInfo->interwikirule."):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
  -    #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
  -    "\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+[^\(\)<>\s\',\.:\?\!]+)|".
  -  # "(?<!\!|\[\[)\b(([A-Z]+[a-z0-9]+){2,})\b|".
  -  # "(?<!\!|\[\[)((?:\/?[A-Z]([a-z0-9]+|[A-Z]*(?=[A-Z][a-z0-9]|\b))){2,})\b|".
  -    # WikiName rule: WikiName ILoveYou (imported from the rule of NoSmoke)
  -    # protect WikiName rule !WikiName
  -    "(?<![a-z])\!?(?:\/?[A-Z]([A-Z]+[0-9a-z]|[0-9a-z]+[A-Z])[0-9a-zA-Z]*)+\b|".
  -    # single bracketed name [Hello World]
  -    "(?<!\[)\!?\[([^\[:,<\s][^\[:,>]{1,255})\](?!\])|".
  -    # bracketed with double quotes ["Hello World"]
  -    "(?<!\[)\!?\[\\\"([^\\\"]+)\\\"\](?!\])|".
  -  # "(?<!\[)\[\\\"([^\[:,]+)\\\"\](?!\])|".
  -    "($urlrule)|".
  -    # single linkage rule ?hello ?abacus
  -    #"(\?[A-Z]*[a-z0-9]+)";
  -    "(\?[A-Za-z0-9]+)";
  -
  -    $this->cache= new Cache_text("pagelinks");
  -  }
  -
  -  function header($args) {
  -    header($args);
  -  }
  -
  -  function set_theme($theme="") {
  -    global $DBInfo;
  -    if ($theme) {
  -      $this->themedir.="/theme/$theme";
  -      $this->themeurl.="/theme/$theme";
  -    }
  -    $options['themedir']=$this->themedir;
  -    $options['themeurl']=$this->themeurl;
  -    $options['frontpage']=$DBInfo->frontpage;
  -    if (file_exists($this->themedir."/theme.php")) {
  -      $data=getConfig($this->themedir."/theme.php",$options);
  -      #print_r($data);
  -
  -      if ($data) {
  -        # read configurations
  -        while (list($key,$val) = each($data)) $this->$key=$val;
  -      }
  -    }
  -    if (!$this->icon) {
  -      $this->icon=&$DBInfo->icon;
  -
  -      $this->icon_bra=$DBInfo->icon_bra;
  -      $this->icon_cat=$DBInfo->icon_cat;
  -      $this->icon_sep=$DBInfo->icon_sep;
  -    }
  -
  -    if (!$this->menu) {
  -      $this->menu=&$DBInfo->menu;
  -    }
  -
  -    if (!isset($this->menu_bra)) {
  -      $this->menu_bra=$DBInfo->menu_bra;
  -      $this->menu_cat=$DBInfo->menu_cat;
  -      $this->menu_sep=$DBInfo->menu_sep;
  -    }
  -
  -    if (!$this->icons) {
  -      $this->icons=&$DBInfo->icons;
  -    }
  -    if (!$this->purple_icon) {
  -      $this->purple_icon=$DBInfo->purple_icon;
  -    }
  -  }
  -
  -  function get_redirect() {
  -    $body=$this->page->get_raw_body();
  -    if ($body[0]=='#' and substr($body,0,10)=='#redirect ') {
  -      list($line,$dumm)=explode("\n",$body,2);
  -      list($tag,$val)=explode(" ",$line,2);
  -      if ($val) $this->pi['#redirect']=$val;
  -    }
  -  }
  -
  -  function get_instructions($body="") {
  -    global $DBInfo;
  -    $pikeys=array('#redirect','#action','#title','#keywords');
  -    $pi=array();
  -    if (!$body) {
  -      if (!$this->page->exists()) return '';
  -      if ($this->pi) return $this->pi;
  -      $body=$this->page->get_raw_body();
  -      $update_body=1;
  -    }{
  -
  -      $pos=strpos($this->page->name,'/') ? 1:0;
  -      $key=strtok($this->page->name,'/');
  -      $format=$DBInfo->pagetype[$key];
  -      if ($format) {
  -        $temp=explode("/",$format);
  -        $format=$temp[$pos];
  -      }
  -    }
  -    if (!$format and $body[0] == '<') {
  -      list($line, $dummy)= explode("\n", $body,2);
  -      if (substr($line,0,6) == '<?xml ')
  -        #$format='xslt';
  -        $format='xsltproc';
  -    } else {
  -      if ($body[0]=='#' and substr($body,0,8)=='#format ') {
  -        list($line,$body)=explode("\n",$body,2);
  -        list($tag,$format,$args)=explode(" ",$line,3);
  -        $pi['args']=$args;
  -      } else if ($body[0] == '#' and $body[1] =='!') {
  -        list($line, $body)= explode("\n", $body,2);
  -        list($format,$args)= explode(" ", substr($line,2),2);
  -        $pi['args']=$args;
  -      }
  -      if ($format=='wiki') $format=='';
  -
  -      while ($body and $body[0] == '#') {
  -        # extract first line
  -        list($line, $body)= split("\n", $body,2);
  -        if ($line=='#') break;
  -        else if ($line[1]=='#') { $notused[]=$line; continue;}
  -
  -        #list($key,$val,$args)= explode(" ",$line,2); # XXX
  -        list($key,$val)= explode(" ",$line,2); # XXX
  -        $key=strtolower($key);
  -        if (in_array($key,$pikeys)) { $pi[$key]=$val; }
  -        else $notused[]=$line;
  -      }
  -    }
  -
  -    if ($format) {
  -      if ($format == 'wiki') {
  -        #just ignore
  -      } else if (function_exists("processor_".$format)) {
  -        $pi['#format']=$format;
  -      } else if ($processor=getProcessor($format)) {
  -        include_once("plugin/processor/$processor.php");
  -        $pi['#format']=$format;
  -      } else
  -        $pi['#format']='plain';
  -    }
  -
  -    if ($notused) $body=join("\n",$notused)."\n".$body;
  -    if ($update_body) $this->page->write($body." "); # workaround XXX
  -    #if ($update_body) $this->page->write($body);
  -    return $pi;
  -  }
  -
  -  function highlight_repl($val,$colref=array()) {
  -    static $color=array("style='background-color:#ff6;'",
  -                        "style='background-color:#aff;'",
  -                        "style='background-color:#0f3;'",
  -                        "style='background-color:#f99;'",
  -                        "style='background-color:#f9c;'",
  -                        "style='background-color:#c9f;'");
  -    $val=str_replace("\\\"",'"',$val);
  -    if ($val[0]=="<") return $val;
  -
  -    $key=strtolower($val);
  -
  -    if (isset($colref[$key]))
  -      return "<strong ".($color[$colref[$key] % 5]).">$val</strong>";
  -    return "<strong class='highlight'>$val</strong>";
  -  }
  -
  -  function write($raw) {
  -    print $raw;
  -  }
  -
  -  function link_repl($url,$attr='') {
  -    $url=str_replace('\"','"',$url);
  -    if ($url[0]=="[") {
  -      $url=substr($url,1,-1);
  -      $force=1;
  -    }
  -    if ($url[0]=="{") {
  -      $url=substr($url,3,-3);
  -      return "<tt class='wiki'>$url</tt>"; # No link
  -    } else if ($url[0]=="[") {
  -      $url=substr($url,1,-1);
  -      return $this->macro_repl($url); # No link
  -    } else if ($url[0]=='$') {
  -      #return processor_latex($this,"#!latex\n".$url);
  -      return $this->processor_repl('latex',$url);
  -    }
  -
  -    if ($url[0]=="!") {
  -      $url=substr($url,1);
  -      return $url;
  -    } else
  -    if (strpos($url,":")) {
  -      if ($url[0]=='a') # attachment:
  -        return $this->macro_repl('Attachment',substr($url,11));
  -      if (preg_match("/^mailto:/",$url)) {
  -        $url=str_replace("@","_at_",$url);
  -        $name=substr($url,7);
  -        return $this->icon['mailto']."<a href='$url' $attr>$name</a>";
  -      } else
  -      if (preg_match("/^(w|[A-Z])/",$url)) { # InterWiki or wiki:
  -        if (strpos($url," ")) { # have a space ?
  -          $dum=explode(" ",$url,2);
  -          return $this->interwiki_repl($dum[0],$dum[1]);
  -        }
  -        return $this->interwiki_repl($url);
  -      } else
  -      if ($force or strpos($url," ")) { # have a space ?
  -        list($url,$text)=explode(" ",$url,2);
  -        if (!$text) $text=$url;
  -        else if (preg_match("/^(http|ftp).*\.(png|gif|jpeg|jpg)$/i",$text))
  -          return "<a href='$url' $attr title='$url'><img border='0' alt='$url' src='$text' /></a>";
  -        list($icon,$dummy)=explode(":",$url,2);
  -        return "<img align='middle' alt='[$icon]' src='".$this->imgs_dir."/$icon.png' />". "<a $attr href='$url'>$text</a>";
  -      } else # have no space
  -      if (preg_match("/^(http|https|ftp)/",$url)) {
  -        if (preg_match("/\.(png|gif|jpeg|jpg)$/i",$url))
  -          return "<img alt='$url' src='$url' />";
  -        return "<a $attr href='$url'>$url</a>";
  -      }
  -      return "<a $attr href='$url'>$url</a>";
  -    } else {
  -      if ($url[0]=="?") $url=substr($url,1);
  -      return $this->word_repl($url,'',$attr);
  -    }
  -  }
  -
  -  function interwiki_repl($url,$text="") {
  -    global $DBInfo;
  -
  -    if ($url[0]=="w")
  -      $url=substr($url,5);
  -    $dum=explode(":",$url,2);
  -    $wiki=$dum[0]; $page=$dum[1];
  -#    if (!$page) { # wiki:Wiki/FrontPage
  -#      $dum1=explode("/",$url,2);
  -#      $wiki=$dum1[0]; $page=$dum1[1];
  -#    }
  -
  -    if (!$page) {
  -      # wiki:FrontPage(not supported in the MoinMoin
  -      # or [wiki:FrontPage Home Page]
  -      $page=$dum[0];
  -      if (!$text)
  -        return $this->word_repl($page,'','',1);
  -      return $this->word_repl($page,$text,'',1);
  -    }
  -
  -    $url=$DBInfo->interwiki[$wiki];
  -    # invalid InterWiki name
  -    if (!$url)
  -      return $dum[0].":".$this->word_repl($dum[1],$text);
  -
  -    $urlpage=_urlencode(trim($page));
  -    #$urlpage=trim($page);
  -    if (strpos($url,'$PAGE') === false)
  -      $url.=$urlpage;
  -    else {
  -      # GtkRef http://developer.gnome.org/doc/API/2.0/gtk/$PAGE.html
  -      # GtkRef:GtkTreeView#GtkTreeView
  -      # is rendered as http://...GtkTreeView.html#GtkTreeView
  -      $page_only=strtok($urlpage,'#?');
  -      $query= substr($urlpage,strlen($page_only));
  -      #if ($query and !$text) $text=strtok($page,'#?');
  -      $url=str_replace('$PAGE',$page_only,$url).$query;
  -    }
  -
  -    $img="<a href='$url' target='wiki'><img border='0' src='$this->imgs_dir/".
  -         strtolower($wiki)."-16.png' align='middle' height='16' width='16' ".
  -         "alt='$wiki:' title='$wiki:' /></a>";
  -    #if (!$text) $text=str_replace("%20"," ",$page);
  -    if (!$text) $text=urldecode($page);
  -    else if (preg_match("/^(http|ftp).*\.(png|gif|jpeg|jpg)$/i",$text)) {
  -      $text= "<img border='0' alt='$text' src='$text' />";
  -      $img="";
  -    }
  -
  -    if (preg_match("/\.(png|gif|jpeg|jpg)$/i",$url))
  -      return "<a href='".$url."' title='$wiki:$page'><img border='0' align='middle' alt='$text' src='$url' /></a>";
  -
  -    return $img. "<a href='".$url."' title='$wiki:$page'>$text</a>";
  -  }
  -
  -  function store_pagelinks() {
  -    unset($this->pagelinks['TwinPages']);
  -    $this->cache->update($this->page->name,$this->pagelinks,$this->page->mtime());
  -  }
  -
  -  function get_pagelinks() {
  -    if ($this->cache->exists($this->page->name)) {
  -      $links=$this->cache->fetch($this->page->name);
  -      if ($links !== false) return $links;
  -    }
  -    if ($this->page->exists()) {
  -      $body=$this->page->get_raw_body();
  -      # quickly generate a pseudo pagelinks
  -      preg_replace("/(".$this->wordrule.")/e","\$this->link_repl('\\1')",$body);
  -      $this->store_pagelinks();
  -      if ($this->pagelinks) {
  -        $links=join("\n",array_keys($this->pagelinks))."\n";
  -        $this->pagelinks=array();
  -        return $links;
  -      }
  -    }
  -    return '';
  -  }
  -
  -  function word_repl($word,$text='',$attr='',$nogroup=0) {
  -    global $DBInfo;
  -    $nonexists='word_'.$DBInfo->nonexists;
  -    if ($word[0]=='"') { # ["extended wiki name"]
  -      $page=substr($word,1,-1);
  -      $word=$page;
  -    } else if ($word[0]=='#') { # Anchor syntax in the MoinMoin 1.1
  -      $anchor=strtok($word," ");
  -      return ($word=strtok("")) ? $this->link_to($anchor,$word):
  -                 "<a name='".($temp=substr($anchor,1))."' id='$temp'></a>";
  -    } else
  -      #$page=preg_replace("/\s+/","",$word); # concat words
  -      $page=normalize($word); # concat words
  -    if ($text) $word=$text;
  -
  -    # User namespace extension
  -    if ($page[0]=='~' and ($p=strpos($page,'/'))) {
  -      # change ~User/Page to User~Page
  -      $gpage=$page;
  -      $page=substr($page,1,$p-1)."~".substr($page,$p+1);
  -    } else if (!$nogroup and $this->group and !strpos($page,'~')) {
  -      if ($page[0]=='/') $page=substr($page,1);
  -      else {
  -        $gpage=$page;
  -        $page=$this->group.$page;
  -      }
  -    } else if ($page[0]=='/') { # SubPage
  -      $page=$this->page->name.$page;
  -    } else if ($page[0]=='.' and preg_match('/^(\.{1,2})\//',$page,$match)) {
  -      if ($match[1] == '..') {
  -        $pos=strrpos($this->page->name,"/");
  -        if ($pos > 0) $upper=substr($this->page->name,0,$pos);
  -        if ($upper) {
  -          $page=substr($page,2);
  -          if ($page == '/') $page=$upper;
  -          else $page=$upper.$page;
  -        }
  -      } else {
  -        $page=substr($page,1);
  -        if ($page == '/') $page='';
  -        $page=$this->page->name.$page;
  -      }
  -    }
  -
  -    $url=$this->link_url(_rawurlencode($page)); # XXX
  -    $page=urldecode($page); # XXX
  -    if (isset($this->pagelinks[$page])) {
  -      $idx=$this->pagelinks[$page];
  -      switch($idx) {
  -        case 0:
  -          #return "<a class='nonexistent' href='$url'>?</a>$word";
  -          return call_user_func(array(&$this,"word_$DBInfo->nonexists"),$word,$url);
  -        case -1:
  -          return "<a href='$url' $attr>$word</a>";
  -        case -2:
  -          return "<a href='$url' $attr>$word</a>".
  -            "<tt class='sister'><a href='$url'>&#x203a;</a></tt>";
  -        case -3:
  -          $url=$this->link_url(_rawurlencode($gpage));
  -          return $this->link_tag($page,'',$this->icon['main']).
  -            "<a href='$url' $attr>$word</a>";
  -        default:
  -          return "<a href='$url' $attr>$word</a>".
  -            "<tt class='sister'><a href='#sister$idx'>&#x203a;$idx</a></tt>";
  -      }
  -    } else if ($DBInfo->hasPage($page)) {
  -      $this->pagelinks[$page]=-1;
  -      return "<a href='$url' $attr>$word</a>";
  -    } else {
  -      if ($gpage and $DBInfo->hasPage($gpage)) {
  -        $this->pagelinks[$page]=-3;
  -        $url=$this->link_url(_rawurlencode($gpage));
  -        return $this->link_tag($page,'',$this->icon['main']).
  -          "<a href='$url' $attr>$word</a>";
  -      }
  -      if ($this->sister_on) {
  -        $sisters=$DBInfo->metadb->getSisterSites($page, $DBInfo->use_sistersites);
  -        if ($sisters === true) {
  -          $this->pagelinks[$page]=-2;
  -          return "<a href='$url'>$word</a>".
  -            "<tt class='sister'><a href='$url'>&#x203a;</a></tt>";
  -        }
  -        if ($sisters) {
  -          $this->sisters[]="<tt class='foot'>&#160;&#160;&#160;".
  -            "<a name='sister$this->sister_idx' id='sister$this->sister_idx'></a>".
  -            "<a href='#rsister$this->sister_idx'>$this->sister_idx&#x203a;</a>&#160;</tt> ".
  -            "$sisters <br/>";
  -          $this->pagelinks[$page]=$this->sister_idx++;
  -          $idx=$this->pagelinks[$page];
  -        }
  -        if ($idx > 0) {
  -          return "<a href='$url'>$word</a>".
  -           "<tt class='sister'>".
  -           "<a name='rsister$idx' id='rsister$idx'></a>".
  -           "<a href='#sister$idx'>&#x203a;$idx</a></tt>";
  -        }
  -      }
  -      $this->pagelinks[$page]=0;
  -      #return "<a class='nonexistent' href='$url'>?</a>$word";
  -      return call_user_func(array(&$this,"word_$DBInfo->nonexists"),$word,$url);
  -    }
  -  }
  -
  -  function word_nonexists($word,$url) {
  -    return "<a class='nonexistent' href='$url'>?</a>$word";
  -  }
  -
  -  function word_nolink($word,$url) {
  -    return "$word";
  -  }
  -
  -  function word_forcelink($word,$url) {
  -    return "<a href='$url'>$word</a>";
  -  }
  -
  -  function word_fancy_nonexists($word,$url) {
  -    global $DBInfo;
  -    #if (preg_match("/^[a-zA-Z0-9\/~]/",$word))
  -    if (ord($word[0]) < 125)
  -      return "<a class='nonexistent' href='$url'>$word[0]</a>".substr($word,1);
  -    if (function_exists('mb_encode_numericentity') && function_exists('iconv')){
  -      $utfword=iconv($DBInfo->charset,'utf-8',$word);
  -      $convmap=array(0xac00, 0xd7a3, 0x0000, 0xffff); /* for euc-kr */
  -      $mbword=mb_encode_numericentity($utfword,$convmap,'utf-8');
  -      $tag=strtok($mbword,';').';'; $last=strtok('');
  -      return "<a class='nonexistent' href='$url'>$tag</a>".$last;
  -    } else {
  -      return "<a class='nonexistent' href='$url'>?</a>$word";
  -    }
  -  }
  -
  -  function head_repl($left,$head,$right) {
  -    $dep=strlen($left);
  -    if ($dep != strlen($right)) return "$left $head $right";
  -    $this->nobr=1;
  -
  -    $head=str_replace('\"','"',$head); # revert \\" to \"
  -
  -    if (!$this->depth_top) {
  -      $this->depth_top=$dep; $depth=1;
  -    } else {
  -      $depth=$dep - $this->depth_top + 1;
  -      if ($depth <= 0) $depth=1;
  -    }
  -
  -#    $depth=$dep;
  -#    if ($dep==1) $depth++; # depth 1 is regarded same as depth 2
  -#    $depth--;
  -
  -    $num="".$this->head_num;
  -    $odepth=$this->head_dep;
  -
  -    if ($head[0] == '#') {
  -      # reset TOC numberings
  -      if ($this->toc_prefix) $this->toc_prefix++;
  -      else $this->toc_prefix=1;
  -      $head[0]=' ';
  -      $dum=explode(".",$num);
  -      $i=sizeof($dum);
  -      for ($j=0;$j<$i;$j++) $dum[$j]=1;
  -      $dum[$i-1]=0;
  -      $num=join($dum,".");
  -    }
  -    $open="";
  -    $close="";
  -
  -    if ($odepth && ($depth > $odepth)) {
  -      $num.=".1";
  -    } else if ($odepth) {
  -      $dum=explode(".",$num);
  -      $i=sizeof($dum)-1;
  -      while ($depth < $odepth && $i > 0) {
  -         unset($dum[$i]);
  -         $i--;
  -         $odepth--;
  -      }
  -      $dum[$i]++;
  -      $num=join($dum,".");
  -    }
  -
  -    $this->head_dep=$depth; # save old
  -    $this->head_num=$num;
  -
  -    $prefix=$this->toc_prefix;
  -    if ($this->toc)
  -      $head="<a href='#toc'>$num</a> $head";
  -    $purple=" <a class='purple' href='#s$prefix-$num'>$this->purple_icon</a>";
  -
  -    return "$close$open<h$dep><a id='s$prefix-$num' name='s$prefix-$num'></a> $head$purple</h$dep>";
  -  }
  -
  -  function macro_repl($macro,$value='',$options='') {
  -    if (!$value and (strpos($macro,'(') !== false)) {
  -      preg_match("/^([A-Za-z]+)(\((.*)\))?$/",$macro,$match);
  -      $name=$match[1]; $args=($match[2] and !$match[3]) ? true:$match[3];
  -    } else {
  -      $name=$macro; $args=$value;
  -    }
  -
  -    if (!function_exists ("macro_".$name)) {
  -
  -      if ($plugin=getPlugin($name))
  -        include_once("plugin/$plugin.php");
  -      else
  -        return "[[".$name."]]";
  -    }
  -    $ret=call_user_func("macro_$name",&$this,$args,&$options);
  -    return $ret;
  -  }
  -
  -  function processor_repl($processor,$value,$options="") {
  -    if (!function_exists("processor_".$processor)) {
  -      $pf=getProcessor($processor);
  -      include_once("plugin/processor/$pf.php");
  -      $processor=$pf;
  -    }
  -    return call_user_func("processor_$processor",&$this,$value,$options);
  -  }
  -
  -  function smiley_repl($smiley) {
  -    global $DBInfo;
  -
  -    $img=$DBInfo->smileys[$smiley][3];
  -
  -    $alt=str_replace("<","&lt;",$smiley);
  -
  -    return "<img src='$this->imgs_dir/$img' align='middle' alt='$alt' title='$alt' />";
  -  }
  -
  -  function link_url($pageurl,$query_string="") {
  -    global $DBInfo;
  -    $sep=$DBInfo->query_prefix;
  -
  -    if (!$query_string and $this->query_string) $query_string=$this->query_string;
  -
  -    if ($sep == '?') {
  -      if ($pageurl && $query_string[0]=='?')
  -        # add 'dummy=1' to work around the buggy php
  -        $query_string= '&amp;'.substr($query_string,1).'&amp;dummy=1';
  -        # Did you have a problem with &amp;dummy=1 ?
  -        # then, please replace above line with next line.
  -        #$query_string= '&amp;'.substr($query_string,1);
  -      $query_string= $pageurl.$query_string;
  -    } else
  -      $query_string= $pageurl.$query_string;
  -    return sprintf("%s%s%s", $this->prefix, $sep, $query_string);
  -  }
  -
  -  function link_tag($pageurl,$query_string="", $text="",$attr="") {
  -    # Return a link with given query_string.
  -    if (!$text)
  -      $text= $pageurl; # XXX
  -    if (!$pageurl)
  -      $pageurl=$this->page->urlname;
  -    $url=$this->link_url($pageurl,$query_string);
  -    return sprintf("<a href=\"%s\" %s>%s</a>", $url, $attr, $text);
  -  }
  -
  -  function link_to($query_string="",$text="",$attr="") {
  -    if (!$text)
  -      $text=$this->page->name;
  -    return $this->link_tag($this->page->urlname,$query_string,$text,$attr);
  -  }
  -
  -  function _list($on,$list_type,$numtype="",$closetype="") {
  -    if ($list_type=="dd") {
  -      if ($on)
  -         #$list_type="dl><dd";
  -         $list_type="div class='indent'";
  -      else
  -         #$list_type="dd></dl";
  -         $list_type="div";
  -      $numtype='';
  -    } else if ($list_type=="dl") {
  -      if ($on)
  -         $list_type="dl";
  -      else
  -         $list_type="dd></dl";
  -      $numtype='';
  -    } if (!$on and $closetype and $closetype !='dd')
  -      $list_type=$list_type."></li";
  -
  -    if ($on) {
  -      if ($numtype) {
  -        $start=substr($numtype,1);
  -        if ($start)
  -          return "<$list_type type='$numtype[0]' start='$start'>";
  -        return "<$list_type type='$numtype[0]'>";
  -      }
  -      return "$close$open<$list_type>\n";
  -    } else {
  -      return "</$list_type>\n$close$open";
  -    }
  -  }
  -
  -  function _check_p($in_p) {
  -    if ($in_p) {
  -      $in_p='li';
  -      return "</div>\n<div>"; #close
  -    }
  -    return '';
  -  }
  -
  -  function _table_span($str) {
  -    $tok=strtok($str,'&');
  -    $len=strlen($tok)/2;
  -    $extra=strtok('');
  -    $attr='';
  -    if ($extra) {
  -      $para=substr($extra,3,-1);
  -      # rowspan
  -      if (preg_match("/^\|(\d+)$/",$para,$match))
  -        $attr="rowspan='$match[1]' ";
  -      else if ($para[0]=='#')
  -        $attr="bgcolor='$para' ";
  -    }
  -    if ($len > 1)
  -      $attr.=" align='center' colspan='$len'";
  -    return $attr;
  -  }
  -
  -  function _table($on,$attr="") {
  -    if ($on)
  -      return "<table class='wiki' cellpadding='3' cellspacing='2' $attr>\n";
  -    return "</table>\n";
  -  }
  -
  -  function _div($on,$in_div) {
  -    static $tag=array("</div>\n","<div>\n");
  -    if ($on) $in_div++;
  -    else {
  -      if (!$in_div) return '';
  -      $in_div--;
  -    }
  -
  -    #return "(".$in_div.")".$tag[$on];
  -    return $tag[$on];
  -  }
  -
  -  function _fixpath() {
  -    $this->url_prefix= qualifiedUrl($DBInfo->url_prefix);
  -    $this->prefix= qualifiedUrl($this->prefix);
  -    $this->imgs_dir= qualifiedUrl($this->imgs_dir);
  -  }
  -
  -  function send_page($body="",$options="") {
  -    global $DBInfo;
  -    if ($options['fixpath']) $this->_fixpath();
  -
  -    if ($body) {
  -      $pi=$this->get_instructions(&$body);
  -      if ($pi['#format']) {
  -        if ($pi['args']) $pi_line="#!".$pi['#format']." $pi[args]\n";
  -        print call_user_func("processor_".$pi['#format'],&$this,$pi_line.$body,$options);
  -        return;
  -      }
  -      $lines=explode("\n",$body);
  -    } else {
  -      #$pi=$this->get_instructions(&$body);
  -      $pi=$this->get_instructions();
  -      $body=$this->page->get_raw_body();
  -      $this->pi=$pi;
  -      if ($pi['#format']) {
  -        if ($pi['args']) $pi_line="#!".$pi['#format']." $pi[args]\n";
  -        print call_user_func("processor_".$pi['#format'],&$this,$pi_line.$body,$options);
  -        return;
  -      }
  -
  -      $twins=$DBInfo->metadb->getTwinPages($this->page->name,$DBInfo->use_twinpages);
  -      if ($body) {
  -        $body=rtrim($body); # delete last empty line
  -        $lines=explode("\n",$body);
  -      } else
  -        $lines=array();
  -      if ($twins === true) {
  -        if ($DBInfo->interwiki['TwinPages']) {
  -          if ($lines) $lines[]="----";
  -          $lines[]=sprintf(_("See %s"),"[wiki:TwinPages:".$this->page->name." "._("TwinPages")."]");
  -        }
  -      } else if ($twins) {
  -        if ($lines) $lines[]="----";
  -        $twins[0]=_("See TwinPages: ").$twins[0];
  -        $lines=array_merge($lines,$twins);
  -      }
  -    }
  -
  -    # have no contents
  -    if (!$lines) return;
  -
  -    $text='';
  -    $in_p='';
  -    $in_div=0;
  -    $in_li=0;
  -    $in_pre=0;
  -    $in_table=0;
  -    $li_open=0;
  -    $indent_list[0]=0;
  -    $indent_type[0]="";
  -
  -    $wordrule="({{{([^}]+)}}})|".
  -              "\[\[([A-Za-z0-9]+(\(((?<!\]\]).)*\))?)\]\]|"; # macro
  -    if ($DBInfo->enable_latex) # single line latex syntax
  -      $wordrule.="\\$\s([^\\$]+)\\$(?:\s|$)|".
  -                 "\\$\\$\s([^\\$]+)\\$\\$(?:\s|$)|";
  -    $wordrule.=$this->wordrule;
  -
  -    foreach ($lines as $line) {
  -      # empty line
  -      if (!strlen($line)) {
  -        if ($in_pre) { $this->pre_line.="\n";continue;}
  -        if ($in_li) { $text.="<br />\n"; continue;}
  -        if ($in_table) {
  -          $text.=$this->_table(0)."<br />\n";$in_table=0; continue;
  -        } else {
  -          #if ($in_p) { $text.="</div><br />\n"; $in_p='';}
  -          if ($in_p) { $text.=$this->_div(0,&$in_div)."<br />\n"; $in_p='';}
  -          else if ($in_p=='') { $text.="<br />\n";}
  -          continue;
  -        }
  -      }
  -      if ($line[0]=='#' and $line[1]=='#') {
  -        if ($line[2]=='[') {
  -          $macro=substr($line,4,-2);
  -          $text.= $this->macro_repl($macro);
  -        }
  -        continue; # comments
  -      }
  -
  -      if ($in_p == '') {
  -        #$text.="<div>\n";
  -        
  -        $text.=$this->_div(1,&$in_div);
  -        $in_p= $line;
  -      }
  -
  -      if ($in_pre) {
  -         if (strpos($line,"}}}")===false) {
  -           $this->pre_line.=$line."\n";
  -           continue;
  -         } else {
  -           $p=strrpos($line,"}}}");
  -           if ($p>2 and $line[$p-3]=='\\') {
  -             $this->pre_line.=substr($line,0,$p-3).substr($line,$p-2)."\n";
  -             continue;
  -           }
  -           $len=strlen($line);
  -           $this->pre_line.=substr($line,0,$p-2);
  -           $line=substr($line,$p+1);
  -           $in_pre=-1;
  -         }
  -      #} else if ($in_pre == 0 && preg_match("/{{{[^}]*$/",$line)) {
  -      } else if (!(strpos($line,"{{{")===false) and 
  -                 preg_match("/{{{[^{}]*$/",$line)) {
  -         $p=strrpos($line,"{{{")-2;
  -         $len=strlen($line);
  -
  -         $processor="";
  -         $in_pre=1;
  -
  -         # check processor
  -         if ($line[$p+3] == "#" and $line[$p+4] == "!") {
  -            list($tag,$dummy)=explode(" ",substr($line,$p+5),2);
  -
  -            if (function_exists("processor_".$tag)) {
  -              $processor=$tag;
  -            } else if ($pf=getProcessor($tag)) {
  -              include_once("plugin/processor/$pf.php");
  -              $processor=$pf;
  -            }
  -         } else if ($line[$p+3] == ":") {
  -            # new formatting rule for a quote block (pre block + wikilinks)
  -            $line[$p+3]=" ";
  -            $in_quote=1;
  -         }
  -
  -         $this->pre_line=substr($line,$p+3);
  -         if (trim($this->pre_line))
  -           $this->pre_line.="\n";
  -         $line=substr($line,0,$p);
  -      }
  -#     $line=str_replace("<","&lt;",$line);
  -      #$line=preg_replace("/\\$/","&#36;",$line);
  -      #$line=preg_replace("/<([^\s][^>]*)>/","&lt;\\1>",$line);
  -      #$line=preg_replace("/`([^`]*)`/","<tt class='wiki'>\\1</tt>",$line);
  -
  -      # bold
  -      #$line=preg_replace("/'''([^']*)'''/","<b>\\1</b>",$line);
  -      #$line=preg_replace("/(?<!')'''(.*)'''(?!')/","<b>\\1</b>",$line);
  -
  -      # italic 
  -      #$line=preg_replace("/''([^']*)''/","<i>\\1</i>",$line);
  -      #$line=preg_replace("/(?<!')''(.*)''(?!')/","<i>\\1</i>",$line);
  -
  -      # Superscripts, subscripts
  -      #$line=preg_replace("/\^([^ \^]+)\^/","<sup>\\1</sup>",$line);
  -      #$line=preg_replace("/(?: |^)_([^ _]+)_/","<sub>\\1</sub>",$line);
  -      # rules
  -      #$line=preg_replace("/^-{4,}/","<hr />\n",$line);
  -
  -      if ($DBInfo->auto_linebreak and preg_match('/^-{4,}/',$line))
  -        $this->nobr=1; // XXX
  -      $line=preg_replace($this->baserule,$this->baserepl,$line);
  -      #if ($in_p and ($in_pre==1 or $in_li)) $line=$this->_check_p().$line;
  -
  -      # bullet and indentation
  -      if ($in_pre != -1 && preg_match("/^(\s*)/",$line,$match)) {
  -      #if (preg_match("/^(\s*)/",$line,$match)) {
  -         $open="";
  -         $close="";
  -         $indtype="dd";
  -         $indlen=strlen($match[0]);
  -         if ($indlen > 0) {
  -           $line=substr($line,$indlen);
  -           #if (preg_match("/^(\*\s*)/",$line,$limatch)) {
  -           if ($line[0]=='*') {
  -             $limatch[1]='*';
  -             $line=preg_replace("/^(\*\s?)/","<li>",$line);
  -             if ($indent_list[$in_li] == $indlen && $indent_type[$in_li]!='dd') $line="</li>\n".$line;
  -             $numtype="";
  -             $indtype="ul";
  -           } elseif (preg_match("/^((\d+|[aAiI])\.)(#\d+)?\s/",$line,$limatch)){
  -             $line=preg_replace("/^((\d+|[aAiI])\.(#\d+)?)/","<li>",$line);
  -             if ($indent_list[$in_li] == $indlen) $line="</li>\n".$line;
  -             $numtype=$limatch[2];
  -             if ($limatch[3])
  -               $numtype.=substr($limatch[3],1);
  -             $indtype="ol";
  -           } elseif (preg_match("/^([^:]+)::\s/",$line,$limatch)) {
  -             $line=preg_replace("/^[^:]+::\s/",
  -                     "<dt class='wiki'>".$limatch[1]."</dt><dd>",$line);
  -             if ($indent_list[$in_li] == $indlen) $line="</dd>\n".$line;
  -             $numtype="";
  -             $indtype="dl";
  -           }
  -         }
  -         if ($indent_list[$in_li] < $indlen) {
  -            $in_li++;
  -            $indent_list[$in_li]=$indlen; # add list depth
  -            $indent_type[$in_li]=$indtype; # add list type
  -            $open.=$this->_list(1,$indtype,$numtype);
  -         } else if ($indent_list[$in_li] > $indlen) {
  -            while($in_li >= 0 && $indent_list[$in_li] > $indlen) {
  -               if ($indent_type[$in_li]!='dd' && $li_open == $in_li)
  -                 $close.="</li>\n";
  -               $close.=$this->_list(0,$indent_type[$in_li],"",$indent_type[$in_li-1]);
  -               unset($indent_list[$in_li]);
  -               unset($indent_type[$in_li]);
  -               $in_li--;
  -            }
  -         }
  -         if ($indent_list[$in_li] <= $indlen || $limatch) $li_open=$in_li;
  -         else $li_open=0;
  -      }
  -
  -      #if (!$in_pre && !$in_table && preg_match("/^\|\|.*\|\|$/",$line)) {
  -      if (!$in_pre && $line[0]=='|' && !$in_table && preg_match("/^\|\|.*\|\|$/",$line)) {
  -         $open.=$this->_table(1);
  -         $in_table=1;
  -      #} elseif ($in_table && !preg_match("/^\|\|.*\|\|$/",$line)){
  -      } elseif ($in_table && $line[0]!='|' && !preg_match("/^\|\|.*\|\|$/",$line)){
  -         $close=$this->_table(0).$close;
  -         $in_table=0;
  -      }
  -      if ($in_table) {
  -         $line=preg_replace('/^((?:\|\|)+(&lt;[^>]+>)?)(.*)\|\|$/e',"'<tr class=\"wiki\"><td class=\"wiki\"'.\$this->_table_span('\\1').'>\\3</td></tr>'",$line);
  -         $line=preg_replace('/((\|\|)+(&lt;[^>]+>)?)/e',"'</td><td class=\"wiki\"'.\$this->_table_span('\\1').'>'",$line);
  -         $line=str_replace('\"','"',$line); # revert \\" to \"
  -      }
  -
  -      # InterWiki, WikiName, {{{ }}}, !WikiName, ?single, ["extended wiki name"]
  -      # urls, [single bracket name], [urls text], [[macro]]
  -      $line=preg_replace("/(".$wordrule.")/e","\$this->link_repl('\\1')",$line);
  -
  -      # Headings
  -      $line=preg_replace("/(?<!=)(={1,5})\s+(.*)\s+(={1,5})\s?$/e",
  -                         "\$this->head_repl('\\1','\\2','\\3')",$line);
  -      #$line=preg_replace("/(?<!=)(={1,5})\s+(.*)\s+(={1,5})\s?$/",
  -      #                    $this->head_repl("$1","$2","$3"),$line);
  -
  -      # Smiley
  -      #if ($smiley_rule) $line=preg_replace($smiley_rule,$smiley_repl,$line);
  -      # NoSmoke's MultiLineCell hack
  -      #$line=preg_replace(array("/{{\|/","/\|}}/"),
  -      #      array("</div><table class='closure'><tr class='closure'><td class='closure'><div>","</div></td></tr></table><div>"),$line);
  -
  -      $line=preg_replace($this->extrarule,$this->extrarepl,$line);
  -
  -#      if ($in_p == '') {
  -#        $text.=$this->_div(1,&$in_div);
  -#        $in_p= $line;
  -#      }
  -
  -      $line=$close.$open.$line;
  -      $open="";$close="";
  -
  -      if ($in_pre==-1) {
  -         $in_pre=0;
  -         if ($processor) {
  -           $value=$this->pre_line;
  -           $out= call_user_func("processor_$processor",&$this,$value,$options);
  -           $line=$out.$line;
  -         } else if ($in_quote) {
  -            # htmlfy '<'
  -            $pre=str_replace("<","&lt;",$this->pre_line);
  -            $pre=preg_replace($this->baserule,$this->baserepl,$pre);
  -            $pre=preg_replace("/(".$wordrule.")/e","\$this->link_repl('\\1')",$pre);
  -            $line="<pre class='quote'>\n".$pre."</pre>\n".$line;
  -            $in_quote=0;
  -         } else {
  -            # htmlfy '<'
  -            $pre=str_replace("<","&lt;",$this->pre_line);
  -            $line="<pre class='wiki'>\n".$pre."</pre>\n".$line;
  -         }
  -         $this->nobr=1;
  -      }
  -      if ($DBInfo->auto_linebreak && !$in_table && !$this->nobr)
  -        $text.=$line."<br />\n"; 
  -      else
  -        $text.=$line."\n";
  -      $this->nobr=0;
  -    } # end rendering loop
  -
  -    # highlight text
  -    if ($this->highlight) {
  -      $highlight=_preg_search_escape($this->highlight);
  -
  -      $colref=preg_split("/\|/",$highlight);
  -      $highlight=join("|",$colref);
  -      $colref=array_flip(array_map("strtolower",$colref));
  -
  -      $text=preg_replace('/((<[^>]*>)|('.$highlight.'))/ie',
  -                         "\$this->highlight_repl('\\1',\$colref)",$text);
  -    }
  -
  -    # close all tags
  -    $close="";
  -    # close pre,table
  -    if ($in_pre) $close.="</pre>\n";
  -    if ($in_table) $close.="</table>\n";
  -    # close indent
  -    while($in_li >= 0 && $indent_list[$in_li] > 0) {
  -      if ($indent_type[$in_li]!='dd' && $li_open == $in_li)
  -        $close.="</li>\n";
  -#     $close.=$this->_list(0,$indent_type[$in_li]);
  -      $close.=$this->_list(0,$indent_type[$in_li],"",$indent_type[$in_li-1]);
  -      unset($indent_list[$in_li]);
  -      unset($indent_type[$in_li]);
  -      $in_li--;
  -    }
  -    # close div
  -    #if ($in_p) $close.="</div>\n"; # </para>
  -    if ($in_p) $close.=$this->_div(0,&$in_div); # </para>
  -
  -    $text.=$close;
  -  
  -    print $text;
  -    if ($this->sisters and !$options['nosisters']) {
  -      $sisters=join("\n",$this->sisters);
  -      $sisters=preg_replace("/(".$wordrule.")/e","\$this->link_repl('\\1')",$sisters);
  -      print "<div id='wikiSister'>\n<tt class='foot'>----</tt><br/>\nSister Sites Index<br />\n$sisters</div>\n";
  -    }
  -
  -    if ($options['pagelinks']) $this->store_pagelinks();
  -  }
  -
  -  function _parse_rlog($log) {
  -    global $DBInfo;
  -    $lines=explode("\n",$log);
  -    $state=0;
  -    $flag=0;
  -
  -    $url=$this->link_url($this->page->urlname);
  -
  -    $out="<h2>"._("Revision History")."</h2>\n";
  -    $out.="<table class='info' border='0' cellpadding='3' cellspacing='2'>\n";
  -    $out.="<form method='post' action='$url'>";
  -    $out.="<th class='info'>#</th><th class='info'>Date and Changes</th>".
  -         "<th class='info'>Editor</th>".
  -         "<th><input type='submit' value='diff'></th>".
  -         "<th class='info'>actions</th>".
  -         "<th class='info'>admin.</th>";
  -         #"<th><input type='submit' value='admin'></th>";
  -    $out.= "</tr>\n";
  -
  -    $users=array();
  -   
  -    foreach ($lines as $line) {
  -      if (!$state) {
  -        if (!preg_match("/^---/",$line)) { continue;}
  -        else {$state=1; continue;}
  -      }
  -      
  -      switch($state) {
  -        case 1:
  -           preg_match("/^revision ([0-9\.]*)/",$line,$match);
  -           $rev=$match[1];
  -           $state=2;
  -           break;
  -        case 2:
  -           $inf=preg_replace("/date:\s(.*);\s+author:.*;\s+state:.*;/","\\1",$line);
  -           list($inf,$change)=explode('lines:',$inf,2);
  -           $date=strtok($inf,' '); $inf=$date.' '.strtok('-+');
  -
  -           $change=preg_replace("/\+(\d+)\s\-(\d+)/",
  -             "<span class='diff-added'>+\\1</span><span class='diff-removed'>-\\2</span>",$change);
  -           $state=3;
  -           break;
  -        case 3:
  -           $dummy=explode(';;',$line,3);
  -           $ip=$dummy[0];
  -           $user=$dummy[1];
  -           if ($user and $user!='Anonymous') {
  -             if (in_array($user,$users)) $ip=$users[$user];
  -             else if ($DBInfo->hasPage($user)) {
  -               $ip=$this->link_tag($user);
  -               $users[$user]=$ip;
  -             } else if ($DBInfo->interwiki['Whois']) {
  -               $ip="<a href='".$DBInfo->interwiki['Whois']."$ip'>$user</a>";
  -             }
  -           } else if ($DBInfo->interwiki['Whois'])
  -             $ip="<a href='".$DBInfo->interwiki['Whois']."$ip'>$ip</a>";
  -
  -           $comment=stripslashes($dummy[2]);
  -           $state=4;
  -           break;
  -        case 4:
  -           $rowspan=1;
  -           if ($comment) $rowspan=2;
  -           $out.="<tr>\n";
  -           $out.="<th valign='top' rowspan=$rowspan>r$rev</th><td nowrap='nowrap'>$inf $change</td><td>$ip&nbsp;</td>";
  -           $achecked="";
  -           $bchecked="";
  -           if ($flag==1)
  -              $achecked="checked ";
  -           else if (!$flag)
  -              $bchecked="checked ";
  -           $out.="<td nowrap='nowrap'><input type='radio' name='rev' value='$rev' $achecked/>";
  -           $out.="<input type='radio' name='rev2' value='$rev' $bchecked/>";
  -
  -           $out.="<td nowrap='nowrap'>".$this->link_to("?action=recall&rev=$rev","view").
  -                 " ".$this->link_to("?action=raw&rev=$rev","raw");
  -           if ($flag)
  -              $out.= " ".$this->link_to("?action=diff&rev=$rev","diff");
  -           $out.="</td><th>";
  -           if ($flag)
  -              $out.="<input type='checkbox' name='range[$flag]' value='$rev' />";
  -           $out.="</th></tr>\n";
  -           if ($comment)
  -              $out.="<tr><td class='info' colspan='5'>$comment&nbsp;</td></tr>\n";
  -           $state=1;
  -           $flag++;
  -           break;
  -      }
  -    }
  -    $out.="<tr><td colspan='6' align='right'><input type='checkbox' name='show' checked='checked' />show only ";
  -    if ($DBInfo->security->is_protected("rcspurge",array())) {
  -      $out.="<input type='password' name='passwd'>";
  -    }
  -    $out.="<input type='submit' name='rcspurge' value='purge'></td></tr>";
  -    $out.="<input type='hidden' name='action' value='diff'/></form></table>\n";
  -    return $out; 
  -  }
  -
  -  function show_info() {
  -    $fp=popen("rlog -zLT -x,v/ ".$this->page->filename,"r");
  -#   if (!$fp)
  -#      print "No older revisions available";
  -# XXX
  -    while (!feof($fp)) {
  -      $line=fgets($fp,1024);
  -      $out .= $line;
  -    }
  -    pclose($fp);
  -
  -    $msg=_("No older revisions available");
  -    if (!$out)
  -      print "<h2>$msg</h2>";
  -    else
  -      print $this->_parse_rlog($out);
  -  }
  -
  -  function simple_diff($diff) {
  -    $diff=str_replace("<","&lt;",$diff);
  -    $lines=explode("\n",$diff);
  -    $out="";
  -    unset($lines[0]); unset($lines[1]);
  -
  -    foreach ($lines as $line) {
  -      $marker=$line[0];
  -      $line=substr($line,1);
  -      if ($marker=="@") $line='<div class="diff-sep">@'."$line</div>";
  -      else if ($marker=="-") $line='<div class="diff-removed">'."$line</div>";
  -      else if ($marker=="+") $line='<div class="diff-added">'."$line</div>";
  -      else if ($marker=="\\" && $line==" No newline at end of file") continue;
  -      else $line.="<br />";
  -      $out.=$line."\n";
  -    }
  -    return $out;
  -  }
  -
  -  function fancy_diff($diff) {
  -    global $DBInfo;
  -    include_once("lib/difflib.php");
  -    $diff=str_replace("<","&lt;",$diff);
  -    $lines=explode("\n",$diff);
  -    $out="";
  -    unset($lines[0]); unset($lines[1]);
  -
  -    $omarker=0;
  -    $orig=array();$new=array();
  -    foreach ($lines as $line) {
  -      $marker=$line[0];
  -      $line=substr($line,1);
  -      if ($marker=="@") $line='<div class="diff-sep">@'."$line</div>";
  -      else if ($marker=="-") {
  -        $omarker=1; $orig[]=$line; continue;
  -      }
  -      else if ($marker=="+") {
  -        $omarker=1; $new[]=$line; continue;
  -      }
  -      else if ($omarker) {
  -        $omarker=0;
  -        $buf="";
  -        $result = new WordLevelDiff($orig, $new, $DBInfo->charset);
  -        foreach ($result->orig() as $ll)
  -          $buf.= "<div class=\"diff-removed\">$ll</div>\n";
  -        foreach ($result->final() as $ll)
  -          $buf.= "<div class=\"diff-added\">$ll</div>\n";
  -        $orig=array();$new=array();
  -        $line=$buf.$line."<br />";
  -      }
  -      else if ($marker==" " and !$omarker)
  -        $line.="<br />";
  -      else if ($marker=="\\" && $line==" No newline at end of file") continue;
  -      $out.=$line."\n";
  -    }
  -    return $out;
  -  }
  -
  -  function get_merge($text,$rev="") {
  -    global $DBInfo;
  -
  -    if (!$text) return '';
  -    # save new
  -    $tmpf3=tempnam($DBInfo->vartmp_dir,'MERGE_NEW');
  -    $fp= fopen($tmpf3, 'w');
  -    fwrite($fp, $text);
  -    fclose($fp);
  -
  -    # recall old rev
  -    $opts['rev']=$this->page->get_rev();
  -   
  -    $orig=$this->page->get_raw_body($opts);
  -    $tmpf2=tempnam($DBInfo->vartmp_dir,'MERGE_ORG');
  -    $fp= fopen($tmpf2, 'w');
  -    fwrite($fp, $orig);
  -    fclose($fp);
  -
  -    $fp=popen("merge -p ".$this->page->filename." $tmpf2 $tmpf3",'r');
  -
  -    if (!$fp) {
  -      unlink($tmpf2);
  -      unlink($tmpf3);
  -      return '';
  -    }
  -    while (!feof($fp)) {
  -      $line=fgets($fp,1024);
  -      $out .= $line;
  -    }
  -    pclose($fp);
  -    unlink($tmpf2);
  -    unlink($tmpf3);
  -
  -    $out=preg_replace("/(<{7}|>{7}).*\n/","\\1\n",$out);
  -
  -    return $out;
  -  }
  -
  -  function get_diff($rev1='',$rev2='',$text='',$options='') {
  -    global $DBInfo;
  -    $option='';
  -
  -    if ($text) {
  -      $tmpf=tempnam($DBInfo->vartmp_dir,'DIFF');
  -      $fp= fopen($tmpf, 'w');
  -      fwrite($fp, $text);
  -      fclose($fp);
  -
  -      $fp=popen("diff -u $tmpf ".$this->page->filename,'r');
  -      if (!$fp) {
  -         unlink($tmpf);
  -         return '';
  -      }
  -      while (!feof($fp)) {
  -         $line=fgets($fp,1024);
  -         $out .= $line;
  -      }
  -      pclose($fp);
  -      unlink($tmpf);
  -
  -      if (!$out) {
  -         $msg=_("No difference found");
  -      } else {
  -         $msg= _("Difference between yours and the current");
  -         if (!$options['raw'])
  -           $ret= call_user_func(array(&$this,$DBInfo->diff_type),$out);
  -         else
  -           $ret="<pre>$out</pre>\n";
  -      }
  -      if ($options['nomsg']) return $ret;
  -      return "<h2>$msg</h2>\n$ret";
  -    }
  -
  -    if (!$rev1 and !$rev2) {
  -      $rev1=$this->page->get_rev();
  -    } else if (0 === strcmp($rev1 , (int)$rev1)) {
  -      $rev1=$this->page->get_rev($rev1);
  -    } else if ($rev1==$rev2) $rev2='';
  -    if ($rev1) $option="-r$rev1 ";
  -    if ($rev2) $option.="-r$rev2 ";
  -
  -    if (!$option) {
  -      $msg= _("No older revisions available");
  -      if ($options['nomsg']) return '';
  -      return "<h2>$msg</h2>";
  -    }
  -    $fp=popen("rcsdiff -x,v/ -u $option ".$this->page->filename,'r');
  -    if (!$fp)
  -      return '';
  -    if (!feof($fp)) {
  -      # trashing two first line
  -      $line=fgets($fp,1024);
  -      $line=fgets($fp,1024);
  -    }
  -    while (!feof($fp)) {
  -      $line=fgets($fp,1024);
  -      $out.= $line;
  -    }
  -    pclose($fp);
  -    if (!$out) {
  -      $msg= _("No difference found");
  -    } else {
  -      if ($rev1==$rev2) $ret.= "<h2>"._("Difference between versions")."</h2>";
  -      else if ($rev1 and $rev2) {
  -        $msg= sprintf(_("Difference between r%s and r%s"),$rev1,$rev2);
  -      }
  -      else if ($rev1 or $rev2) {
  -        $msg=sprintf(_("Difference between r%s and the current"),$rev1.$rev2);
  -      }
  -      if (!$options['raw'])
  -        $ret= call_user_func(array(&$this,$DBInfo->diff_type),$out);
  -      else
  -        $ret="<pre>$out</pre>\n";
  -    }
  -    if ($options['nomsg']) return $ret;
  -    return "<h2>$msg</h2>\n$ret";
  -  }
  -
  -  function send_header($header="",$options=array()) {
  -    global $DBInfo;
  -    $plain=0;
  -
  -    if ($this->pi['#redirect'] != '' && $options['pi']) {
  -      $options['value']=$this->pi['#redirect'];
  -      $options['redirect']=1;
  -      $this->pi['#redirect']='';
  -      do_goto($this,$options);
  -      return;
  -    }
  -    if ($header) {
  -      if (is_array($header))
  -        foreach ($header as $head) {
  -          $this->header($head);
  -          if (preg_match("/^content\-type: text\/plain/i",$head))
  -            $plain=1;
  -        }
  -      else {
  -        $this->header($header);
  -        if (preg_match("/^content\-type: text\/plain/i",$header))
  -          $plain=1;
  -      }
  -    }
  -    if (isset($options['trail']))
  -      $this->set_trailer($options['trail'],$this->page->name);
  -    else if ($DBInfo->origin)
  -      $this->set_origin($this->page->name);
  -
  -    if (!$plain) {
  -      if ($this->pi['#keywords'])
  -        $keywords='<meta name="keywords" content="'.$this->pi['#keywords'].'" />';
  -      else if ($DBInfo->use_keywords) {
  -        $keywords=str_replace(" ",", ",$this->page->title);
  -        $keywords="<meta name=\"keywords\" content=\"$keywords\" />";
  -      }
  -
  -      if (empty($options['title'])) $options['title']=$this->page->title;
  -      if (empty($options['css_url'])) $options['css_url']=$DBInfo->css_url;
  -      print <<<EOS
  -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  -<html xmlns="http://www.w3.org/1999/xhtml">
  -  <head>
  -  <meta http-equiv="Content-Type" content="text/html;charset=$DBInfo->charset" /> 
  -  $DBInfo->metatags
  -  $keywords
  -EOS;
  -  print "  <title>$DBInfo->sitename: ".$this->page->title."</title>\n";
  -      if ($options['css_url'])
  -         print '<link rel="stylesheet" type="text/css" href="'.
  -               $options['css_url'].'"/>';
  -# default CSS
  -      else print <<<EOS
  -<style type="text/css">
  -<!--
  -body {font-family:Georgia,Verdana,Lucida,sans-serif; background-color:#FFF9F9;}
  -a:link {color:#993333;}
  -a:visited {color:#CE5C00;}
  -a:hover {background-color:#E2ECE5;color:#000;}
  -.wikiTitle {
  -  font-family:palatino, Georgia,Tahoma,Lucida,sans-serif;
  -  font-size:28px;
  -  font-weight:bold;
  -  color:#639ACE;
  -  text-decoration: none;
  -}
  -tt.wiki {font-family:Lucida Typewriter,fixed,lucida,fixed;font-size:12px;}
  -tt.foot {font-family:Tahoma,lucida,fixed;font-size:12px;}
  -
  -pre.wiki {
  -  padding-left:6px;
  -  padding-top:6px; 
  -  font-family:Lucida TypeWriter,monotype,lucida,fixed;font-size:14px;
  -  background-color:#000000;
  -  color:#FFD700; /* gold */
  -}
  -
  -textarea.wiki { width:100%; }
  -
  -pre.quote {
  -  padding-left:6px;
  -  padding-top:6px;
  -  white-space:pre-wrap;
  -  white-space: -moz-pre-wrap; 
  -  font-family:Georgia,monotype,lucida,fixed;font-size:14px;
  -  background-color:#F7F8E6;
  -}
  -
  -table.wiki { border: 0px outset #E2ECE5; }
  -
  -td.wiki {
  -  background-color:#E2ECE2;
  -  border: 0px inset #E2ECE5;
  -}
  -
  -th.info { background-color:#E2ECE2; }
  -
  -h1,h2,h3,h4,h5 {
  -  font-family:Tahoma;
  -  padding-left:6px;
  -  border-bottom:1px solid #999;
  -}
  -
  -div.diff-added {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  -  font-size:12px;
  -  background-color:#61FF61;
  -  color:black;
  -}
  -
  -div.diff-removed {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  -  font-size:12px;
  -  background-color:#E9EAB8;
  -  color:black;
  -}
  -
  -div.diff-sep {
  -  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  -  font-size:12px;
  -  background-color:#000000;
  -  color:#FFD700; /* gold */
  -}
  -
  -td.message {
  -  margin-top: 6pt;
  -  background-color: #E8E8E8;
  -  border-style:solid;
  -  border-width:1pt;
  -  border-color:#990000;
  -  color:#440000;
  -  padding:0px;
  -  width:100%;
  -}
  -
  -#wikiHint {
  -  font-family:Georgia,Verdana,Lucida,sans-serif;
  -  font-size:10px;
  -  background-color:#E2DAE2;
  -}
  -
  -.highlight {
  -   background-color:#FFFF40;
  -}
  -//-->
  -</style>
  -EOS;
  -
  -      print "\n</head>\n<body>\n";
  -    }
  -  }
  -
  -  function get_actions($args='',$options) {
  -    if ($this->pi['#action'] && !in_array($this->pi['#action'],$this->actions)){
  -      list($act,$txt)=explode(" ",$this->pi['#action'],2);
  -      if (!$txt) $txt=$act;
  -      $menu= $this->link_to("?action=$act",_($txt),"accesskey='x'");
  -      if (strtolower($act) == 'blog')
  -        $this->actions[]='BlogRss';
  -        
  -    } else if ($args['editable']) {
  -      if ($args['editable']==1)
  -        $menu= $this->link_to("?action=edit",_("EditText"),"accesskey='x'");
  -      else
  -        $menu= _("NotEditable");
  -    } else
  -      $menu.= $this->link_to('?action=show',_("ShowPage"));
  -    $menu.=$this->menu_sep.$this->link_tag("FindPage","",_("FindPage"));
  -
  -    if (!$args['noaction']) {
  -      foreach ($this->actions as $action)
  -        $menu.= $this->menu_sep.$this->link_to("?action=$action",_($action));
  -    }
  -    return $this->menu_bra.$menu.$this->menu_cat;
  -  }
  -
  -  function send_footer($args='',$options='') {
  -    global $DBInfo;
  -
  -    print "</div>\n";
  -    print $DBInfo->hr;
  -    if ($args['editable'] and !$DBInfo->security->writable($options))
  -      $args['editable']=-1;
  -    
  -    $menu=$this->get_actions($args,$options);
  -
  -    if ($mtime=$this->page->mtime()) {
  -      $lastedit=date("Y-m-d",$mtime);
  -      $lasttime=date("H:i:s",$mtime);
  -    }
  -
  -    $banner= <<<FOOT
  - <a href="http://validator.w3.org/check/referer"><img
  -  src="$this->imgs_dir/valid-xhtml10.png"
  -  border="0" width="88" height="31"
  -  align="middle"
  -  alt="Valid XHTML 1.0!" /></a>
  -
  - <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
  -  src="$this->imgs_dir/vcss.png" 
  -  border="0" width="88" height="31"
  -  align="middle"
  -  alt="Valid CSS!" /></a>
  -
  - <a href="http://moniwiki.sourceforge.net/"><img
  -  src="$this->imgs_dir/moniwiki-powerd.png" 
  -  border="0" width="88" height="31"
  -  align="middle"
  -  alt="powerd by MoniWiki" /></a>
  -FOOT;
  -
  -    if ($options['timer']) {
  -      $options['timer']->Check();
  -      $timer=$options['timer']->Total();
  -    }
  -
  -    if (file_exists($this->themedir."/footer.php")) {
  -      $themeurl=$this->themeurl;
  -      include($this->themedir."/footer.php");
  -    } else {
  -      print "<div id='wikiFooter'>";
  -      print $menu.$banner;
  -      print "\n</div>\n";
  -    }
  -    print "</body>\n</html>\n";
  -    #include "prof_results.php";
  -  }
  -
  -  function send_title($title="", $link="", $options="") {
  -    // Generate and output the top part of the HTML page.
  -    global $DBInfo;
  -
  -    $name=$this->page->urlname;
  -    $action=$this->link_url($name);
  -
  -    # find upper page
  -    $pos=strrpos($name,"/");
  -    if ($pos > 0) $upper=substr($name,0,$pos);
  -    else if ($this->group) $upper=_urlencode(substr($this->group,0,-1));
  -
  -    if (!$title) {
  -      $title=$options['title'];
  -      if (!$title) $title=$this->pi['#title'];
  -    }
  -    if (!$title) {
  -      if ($this->group) { # for UserNameSpace
  -        $group=$this->group;
  -        $title=substr($this->page->name,strlen($group));
  -        $name=$title;
  -        $group="<span class='group'>".(substr($group,0,-1))." &raquo;<br /></span>";
  -      } else     
  -        $title=$this->page->title;
  -    }
  -    # setup title variables
  -    #$heading=$this->link_to("?action=fullsearch&amp;value="._urlencode($name),$title);
  -    $title="$group<font class='wikiTitle'><b>$title</b></font>";
  -    if ($link)
  -      $title="<a href=\"$link\" class='wikiTitle'>$title</a>";
  -    else if (empty($options['nolink']))
  -      $title=$this->link_to("?action=fullsearch&amp;value="._urlencode($name),$title,"class='wikiTitle'");
  -    $logo=$this->link_tag($DBInfo->logo_page,'',$DBInfo->logo_string);
  -    $goto_form=$DBInfo->goto_form ?
  -      $DBInfo->goto_form : goto_form($action,$DBInfo->goto_type);
  -
  -    if ($options['msg']) {
  -      $msg=<<<MSG
  -<table class="message" width="100%"><tr><td class="message">
  -$options[msg]
  -</td></tr></table>
  -MSG;
  -    }
  -
  -    # navi bar
  -    $menu=array();
  -    if ($options['quicklinks']) {
  -      # get from the user setting
  -      $quicklinks=array_flip(explode("\t",$options['quicklinks']));
  -    } else {
  -      # get from the config.php
  -      $quicklinks=$this->menu;
  -    }
  -    $sister_save=$this->sister_on;
  -    $this->sister_on=0;
  -    foreach ($quicklinks as $item=>$attr) {
  -      if (strpos($item,' ') === false) {
  -        if (strpos($attr,'=') === false) $attr="accesskey='$attr'";
  -        # like 'MoniWiki'=>'accesskey="1"'
  -        $menu[]=$this->word_repl($item,_($item),$attr);
  -#        $menu[]=$this->link_tag($item,"",_($item),$attr);
  -      } else {
  -        # like a 'http://moniwiki.sf.net MoniWiki'
  -        $menu[]=$this->link_repl($item,$attr);
  -      }
  -    }
  -    $this->sister_on=$sister_save;
  -    $menu=$this->menu_bra.join($this->menu_sep,$menu).$this->menu_cat;
  -
  -    # icons
  -    if ($upper)
  -      $upper_icon=$this->link_tag($upper,'',$this->icon['upper'])." ";
  -
  -    if ($this->icons) {
  -      $icon=array();
  -      foreach ($this->icons as $item) {
  -        if ($item[3]) $attr=$item[3];
  -        else $attr='';
  -        $icon[]=$this->link_tag($item[0],$item[1],$item[2],$attr);
  -      }
  -      $icons=$this->icon_bra.join($this->icon_sep,$icon).$this->icon_cat;
  -    }
  -
  -    $rss_icon=$this->link_tag("RecentChanges","?action=rss_rc",$this->icon['rss'])." ";
  -
  -    # UserPreferences
  -    if ($options['id'] != "Anonymous") {
  -      $user_link=$this->link_tag("UserPreferences","",$options['id']);
  -      if ($DBInfo->hasPage($options['id']))
  -      $home=$this->link_tag($options['id'],"",$this->icon['home'])." ";
  -    } else
  -      $user_link=$this->link_tag("UserPreferences","",_($this->icon['user']));
  -
  -    # print the title
  -    kbd_handler();
  -
  -    if (file_exists($this->themedir."/header.php")) {
  -      $themeurl=$this->themeurl;
  -      include($this->themedir."/header.php");
  -    } else { #default header
  -      $header="<table width='100%' border='0' cellpadding='3' cellspacing='0'>";
  -      $header.="<tr>";
  -      if ($DBInfo->logo_string) {
  -         $header.="<td rowspan='2' width='10%' valign='top'>";
  -         $header.=$logo;
  -         $header.="</td>";
  -      }
  -      $header.="<td>$title</td>";
  -      $header.="</tr><tr><td>\n";
  -      $header.=$goto_form;
  -      $header.="</td></tr></table>\n";
  -
  -      # menu
  -      print "<div id='wikiHeader'>\n";
  -      print $header;
  -      print $menu.$user_link." ".$upper_icon.$icons.$home.$rss_icon;
  -      print $msg;
  -      print "</div>\n";
  -    }
  -    print $DBInfo->hr;
  -    if ($options['trail'] or $this->origin) {
  -      //$opt['nosisters']=1;
  -      print "<div id='wikiOrigin'>\n";
  -      print $this->origin;
  -      print "</div>\n";
  -      print "<div id='wikiTrailer'>\n";
  -      print $this->trail;
  -      print "</div>\n";
  -    }
  -    print "<div id='wikiBody'>\n";
  -  }
  -
  -  function set_origin($pagename) {
  -    global $DBInfo;
  -
  -    $orig='';
  -    if ($pagename != $DBInfo->frontpage) {
  -      # save setting
  -      $sister_save=$this->sister_on;
  -      $this->sister_on=0;
  -
  -      $parent=_($DBInfo->home);
  -      $origin=$this->word_repl('"'.$DBInfo->frontpage.'"',$parent,'',1);
  -      $parent='';
  -
  -      $key=strtok($pagename,'/');
  -      while($key !== false) {
  -        if ($parent)
  -          $parent.='/'.$key;
  -        else
  -          $parent.=$key;
  -        $okey=$key;
  -        $key=strtok('/');
  -        if ($key)
  -          $origin.=$DBInfo->arrow.$this->word_repl('"'.$parent.'"',$okey,'',1);
  -        else
  -          $origin.=$DBInfo->arrow.$okey;
  -      }
  -      # reset pagelinks
  -      $this->pagelinks=array();
  -      $this->sister_on=$sister_save;
  -    } else {
  -      $origin=$DBInfo->home;
  -    }
  -    $this->origin=$origin;
  -  }
  -
  -  function set_trailer($trailer="",$pagename,$size=5) {
  -    global $DBInfo;
  -    if (!$trailer) $trail=$DBInfo->frontpage;
  -    else $trail=$trailer;
  -    $trails=array_diff(explode("\t",trim($trail)),array($pagename));
  -
  -    $sister_save=$this->sister_on;
  -    $this->sister_on=0;
  -    $this->trail="";
  -    foreach ($trails as $page) {
  -      $this->trail.=$this->word_repl('"'.$page.'"','','',1).$DBInfo->arrow;
  -    }
  -    $this->trail.= " $pagename";
  -    $this->pagelinks=array(); # reset pagelinks
  -    $this->sister_on=$sister_save;
  -
  -    if (!in_array($pagename,$trails)) $trails[]=$pagename;
  -
  -    $idx=count($trails) - $size;
  -    if ($idx > 0) $trails=array_slice($trails,$idx);
  -    $trail=join("\t",$trails);
  -
  -    setcookie('MONI_TRAIL',$trail,time()+60*60*24*30,get_scriptname());
  -  }
  -} # end-of-Formatter
  -
  -# setup the locale like as the phpwiki style
  -function get_locales($mode=1) {
  -  $languages=array(
  -    'en'=>array('en_US','english',''),
  -    'fr'=>array('fr_FR','france',''),
  -    'ko'=>array('ko_KR','korean',''),
  -  );
  -  $lang= $_SERVER['HTTP_ACCEPT_LANGUAGE'];
  -  $langs=explode(',',preg_replace(array("/;[^;,]+/","/\-[a-z]+/"),'',$lang));
  -  if ($languages[$langs[0]]) return array($languages[$langs[0]][0]);
  -  return array($languages[0][0]);
  -}
  -
  -function set_locale($lang,$charset='') {
  -  if ($lang == 'auto') {
  -    # get broswer's settings
  -    $langs=get_locales();
  -    $lang= $langs[0];
  -
  -    $charset= strtoupper($charset);
  -    if (function_exists('nl_langinfo'))
  -      $server_charset= nl_langinfo(CODESET);
  -    if ($charset == 'UTF-8' or $charset != $server_charset)
  -      $lang.=".".$charset;
  -  }
  -  return $lang;
  -}
  -
  -# get the pagename
  -function get_pagename() {
  -  global $DBInfo;
  -  // $_SERVER["PATH_INFO"] has bad value under CGI mode
  -  // set 'cgi.fix_pathinfo=1' in the php.ini under
  -  // apache 2.0.x + php4.2.x Win32
  -  if (!empty($_SERVER['PATH_INFO'])) {
  -    if ($_SERVER['PATH_INFO'][0] == '/')
  -      $pagename=substr($_SERVER['PATH_INFO'],1);
  -    if (!$pagename) {
  -      $pagename = $DBInfo->frontpage;
  -    }
  -    $pagename=stripslashes($pagename);
  -  } else if (!empty($_SERVER['QUERY_STRING'])) {
  -    if (isset($goto)) $pagename=$goto;
  -    else {
  -      $pagename = $_SERVER['QUERY_STRING'];
  -      $temp = strtok($pagename,"&");
  -
  -      if ($temp and strpos($temp,"="))
  -        $pagename = $DBInfo->frontpage;
  -      else
  -        $result = preg_match('/^([^&=]+)/',$pagename,$matches);
  -      if ($result) {
  -        $pagename = urldecode($matches[1]);
  -        $_SERVER['QUERY_STRING']=substr($_SERVER['QUERY_STRING'],strlen($pagename));
  -      }
  -    }
  -    if (!$pagename) $pagename= $DBInfo->frontpage;
  -  } else {
  -    $pagename = $DBInfo->frontpage;
  -  }
  -
  -  if ($pagename[0]=='~' and ($p=strpos($pagename,"/")))
  -    $pagename=substr($pagename,1,$p-1)."~".substr($pagename,$p+1);
  -  return $pagename;
  -}
  +include("wikilib.php");
  +$timing = new Timer();
  +include("wikidb.php");
   
   # Start Main
  -$Config=getConfig("config.php",array('init'=>1));
  +$Config = getConfig("config.php", array('init'=>1));
   
  -$DBInfo= new WikiDB($Config);
  +$DBInfo = new WikiDB($Config);
   register_shutdown_function(array(&$DBInfo,'Close'));
   
  -$user=new User();
  -$options=array();
  -$options['id']=$user->id;
  -
  -# MoniWiki theme
  -if (!$DBInfo->theme) $theme=$_GET['theme'];
  -else $theme=$DBInfo->theme;
  -if ($theme) $options['theme']=$theme;
  -
  -if ($DBInfo->trail) {
  -  $options['trail']=$user->trail;
  -}
  -if ($options['id'] != 'Anonymous') {
  -  $udb=new UserDB($DBInfo);
  -  $userinfo=$udb->getUser($user->id);
  -
  -  # Does it have valid ticket ?
  -  if ($user->ticket == $userinfo->info['ticket']) {
  -    $user=$userinfo;
  -    $options['css_url']=$user->info['css_url'];
  -    $options['quicklinks']=$user->info['quicklinks'];
  -    if (!$theme) $options['theme']=$user->info['theme'];
  -  } else {
  -    $options['id']='Anonymous';
  -    $options['css_url']=$user->css;
  -    if (!$theme) $options['theme']=$user->theme;
  -  }
  -} else {
  -  $options['css_url']=$user->css;
  -  if (!$theme) $options['theme']=$user->theme;
  -}
  -
  -if ($DBInfo->theme and $DBInfo->theme_css)
  -  $options['css_url']=$DBInfo->url_prefix."/theme/$theme/css/default.css";
  +setup_locale($DBInfo, &$locale);
  +setup_options($DBInfo, &$options);
   
  -$options['timer']=&$timing;
  +$options['timer'] = &$timing;
   $options['timer']->Check("load");
   
  -$lang= set_locale($DBInfo->lang,$DBInfo->charset);
  -
  -if (isset($locale)) {
  -  $lf="locale/".$lang."/LC_MESSAGES/moniwiki.php";
  -  if (!file_exists($lf)) {
  -    $lang=substr($lang,0,2);
  -    $lf="locale/".$lang."/LC_MESSAGES/moniwiki.php";
  -  }
  -  if (file_exists($lf)) include_once($lf);
  -} else if (substr($lang,0,2) != 'en') {
  -  $test=setlocale(LC_ALL, $lang);
  -  bindtextdomain("moniwiki", "locale");
  -  textdomain("moniwiki");
  -}
  -
  -$pagename=get_pagename();
  -//function render($pagename,$options) {
  -if ($pagename) {
  -  global $DBInfo;
  -  global $value,$action;
  -  # get primary variables
  -  if ($_SERVER['REQUEST_METHOD']=="POST") {
  -    if ($GLOBALS['HTTP_RAW_POST_DATA']) {
  -      # RAW posted data. the $value and $action could be accessed under
  -      # "register_globals = On" in the php.ini
  -      $options['value']=$value;
  -    } else {
  -      $value=$_POST['value'];
  -      $action=$_POST['action'];
  -    }
  -    $goto=$_POST['goto'];
  -  } else if ($_SERVER['REQUEST_METHOD']=="GET") {
  -    $action=$_GET['action'];
  -    $value=$_GET['value'];
  -    $goto=$_GET['goto'];
  -    $rev=$_GET['rev'];
  -  }
  -
  -  #print $_SERVER['REQUEST_URI'];
  -  $options['page']=$pagename;
  -
  -  if ($action=="recall" || $action=="raw" && $rev) {
  -    $options['rev']=$rev;
  -    $page = $DBInfo->getPage($pagename,$options);
  -  } else
  -    $page = $DBInfo->getPage($pagename);
  -
  -  $formatter = new Formatter($page,$options);
  -
  -  if (!$action or $action=='show') {
  -    if ($value) { # ?value=Hello
  -      $options['value']=$value;
  -      do_goto($formatter,$options);
  -      return;
  -    } else if ($goto) { # ?goto=Hello
  -      $options['value']=$goto;
  -      do_goto($formatter,$options);
  -      return;
  -    }
  -    if (!$page->exists()) {
  -      $formatter->send_header("Status: 404 Not found",$options);
  -
  -      $twins=$DBInfo->metadb->getTwinPages($page->name,1);
  -      if ($twins) {
  -        $formatter->send_title($page->name,"",$options);
  -        $twins=join("\n",$twins);
  -        $formatter->send_page(_("See TwinPages: ").$twins);
  -        echo "<br />".
  -          $formatter->link_to("?action=edit",$formatter->icon['create']._("Create this page"));
  -      } else {
  -        $formatter->send_title(sprintf("%s Not Found",$page->name),"",$options);
  -        $button= $formatter->link_to("?action=edit",$formatter->icon['create']._("Create this page"));
  -        print $button;
  -        print sprintf(_(" or click %s to fullsearch this page.\n"),$formatter->link_to("?action=fullsearch&amp;value=$options[page]",_("title")));
  -        print $formatter->macro_repl('LikePages',$page->name,&$err);
  -        if ($err['extra'])
  -          print $err['extra'];
  -
  -        print "<hr />\n$button";
  -        print _(" or alternativly, use one of these templates:\n");
  -        $options['linkto']="?action=edit&amp;template=";
  -        print macro_TitleSearch($formatter,$DBInfo->template_regex,$options);
  -        print _("To create your own templates, add a page with a 'Template' suffix.\n");
  -      }
  -
  -      $args['editable']=1;
  -      $formatter->send_footer($args,$options);
  -      return;
  -    }
  -    # display this page
  -
  -    # increase counter
  -    $DBInfo->counter->incCounter($pagename,$options);
  -
  -    if (!$action) $options['pi']=1; # protect a recursivly called #redirect
  -
  -#    if (!$DBInfo->security->is_allowed('read',&$options)) {
  -#      do_invalid($formatter,$options);
  -#      return;
  -#    }
  -
  -    #$formatter->get_redirect();
  -    $formatter->pi=$formatter->get_instructions();
  -    $formatter->send_header("",$options);
  -    $formatter->send_title("","",$options);
  -
  -    if ($formatter->pi['#title'] and $DBInfo->use_titlecache) {
  -      $tcache=new Cache_text('title');
  -      if (!$tcache->exists($pagename) or $_GET['update_title'])
  -        $tcache->update($pagename,$formatter->pi['#title']);
  -    }
  -    $formatter->write("<div id='wikiContent'>\n");
  -    $options['timer']->Check("init");
  -#    $cache=new Cache_text('pages');
  -#    if ($cache->exists($pagename)) {
  -#      print $cache->fetch($pagename);
  -#    } else {
  -#      ob_start();
  -      $formatter->send_page();
  -      if ($DBInfo->use_referer)
  -        log_referer($_SERVER['HTTP_REFERER'],$pagename);
  -      flush();
  -#      $out=ob_get_contents();
  -#      ob_end_clean();
  -#      print $out;
  -#      $cache->update($pagename,$out);
  -#    }
  -    
  -    $options['timer']->Check("send_page");
  -    $formatter->write("</div>\n");
  -    $args['editable']=1;
  -    $formatter->send_footer($args,$options);
  -    return;
  -  }
  -
  -  if ($action) {
  -    $DBInfo->metatags='<meta name="ROBOTS" content="NOINDEX,NOFOLLOW" />';
  -
  -    if (!$DBInfo->security->is_allowed($action,&$options)) {
  -      $msg=sprintf(_("You are not allowed to '%s'"),$action);
  -      $formatter->send_header("Status: 406 Not Acceptable",$options);
  -      $formatter->send_title($msg,"", $options);
  -      if ($options['err'])
  -        $formatter->send_page($options['err']);
  -      $formatter->send_footer($args,$options);
  -      return;
  -    } else if ($_SERVER['REQUEST_METHOD']=="POST" and
  -      $DBInfo->security->is_protected($action,&$options) and
  -      !$DBInfo->security->is_valid_password($_POST['passwd'],$options)) {
  -      # protect some POST actions and check a password
  -
  -      $title = sprintf(_("Fail to \"%s\" !"), $action);
  -      $formatter->send_header("",$options);
  -      $formatter->send_title($title,"",$options);
  -      $formatter->send_page("== "._("Please enter the valid password")." ==");
  -      $formatter->send_footer("",$options);
  -      return;
  -    }
  -
  -    if (!function_exists("do_post_".$action) and
  -      !function_exists("do_".$action)){
  -      if ($plugin=getPlugin($action))
  -        include_once("plugin/$plugin.php");
  -    }
  -
  -    if (function_exists("do_".$action)) {
  -      if ($_SERVER['REQUEST_METHOD']=="POST")
  -        $options=array_merge($_POST,$options);
  -      else
  -        $options=array_merge($_GET,$options);
  -      call_user_func("do_$action",$formatter,$options);
  -      return;
  -    } else if (function_exists("do_post_".$action)) {
  -      if ($_SERVER['REQUEST_METHOD']=="POST")
  -        $options=array_merge($_POST,$options);
  -      else { # do_post_* set some primary variables as $options
  -        $options['value']=$_GET['value'];
  -      }
  -      call_user_func("do_post_$action",$formatter,$options);
  -      return;
  -    }
  -    do_invalid($formatter,$options);
  -    return;
  -  }
  -}
  +$pagename = get_pagename($DBInfo->frontpage);
  +moni_main($DBInfo, $pagename, $options);
   
  -//$pagename=get_pagename();
  -//render($pagename,$options);
  -// vim:et:sts=2:
  +// vim:ts=8:sts=2:sw=2:et
   ?>
  
  
  
  1.102     +98 -51    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.101
  retrieving revision 1.102
  diff -u -r1.101 -r1.102
  --- wikilib.php	7 Jan 2004 02:44:02 -0000	1.101
  +++ wikilib.php	8 Jan 2004 19:16:52 -0000	1.102
  @@ -11,7 +11,96 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.101 2004/01/07 02:44:02 wkpark Exp $
  +// $Id: wikilib.php,v 1.102 2004/01/08 19:16:52 wkpark Exp $
  +
  +function _preg_escape($val) {
  +  return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  +}
  +
  +function _preg_search_escape($val) {
  +  return preg_replace('/([\/]{1})/','\\\\\1',$val);
  +}
  +
  +function _rawurlencode($url) {
  +  $name=rawurlencode($url);
  +  $urlname=preg_replace(array('/%2F/i','/%7E/i'),array('/','~'),$name);
  +  return $urlname;
  +}
  +
  +function _urlencode($url) {
  +  #$name=urlencode(strtr($url,"+"," "));
  +  #return preg_replace(array('/%2F/i','/%7E/i','/%23/'),array('/','~','#'),$name);
  +  return preg_replace("/([^a-z0-9\/\?\.\+~#&:;=%\-]{1})/ie","'%'.strtoupper(dechex(ord('\\1')))",$url);
  +}
  +
  +function qualifiedUrl($url) {
  +  if (substr($url,0,7)=="http://")
  +    return $url;
  +  return "http://$_SERVER[HTTP_HOST]$url";
  +}
  +
  +function getPlugin($pluginname) {
  +  static $plugins=array();
  +  if ($plugins) return $plugins[strtolower($pluginname)];
  +
  +  $handle= opendir('plugin');
  +  while ($file= readdir($handle)) {
  +    if (is_dir("plugin/$file")) continue;
  +    $name= substr($file,0,-4);
  +    $plugins[strtolower($name)]= $name;
  +  }
  +
  +  return $plugins[strtolower($pluginname)];
  +}
  +
  +function getProcessor($pro_name) {
  +  static $processors=array();
  +  if ($processors) return $processors[strtolower($pro_name)];
  +
  +  $handle= opendir('plugin/processor');
  +  while ($file= readdir($handle)) {
  +    if (is_dir("plugin/processor/$file")) continue;
  +    $name= substr($file,0,-4);
  +    $processors[strtolower($name)]= $name;
  +  }
  +  return $processors[strtolower($pro_name)];
  +}
  +
  +class Timer {
  +  var $timers=array();
  +  var $total=0.0;
  +  function Timer() {
  +    $mt= explode(" ",microtime());
  +    $this->save=$mt[0]+$mt[1];
  +  }
  +
  +  function Check($name="default") {
  +    $mt= explode(" ",microtime());
  +    $now=$mt[0]+$mt[1];
  +    $diff=$now-$this->save;
  +    $this->save=$now;
  +    if (isset($this->timers[$name]))
  +      $this->timers[$name]+=$diff;
  +    else
  +      $this->timers[$name]=$diff;
  +    $this->total+=$diff;
  +  }
  +
  +  function Write() {
  +    while (list($name,$d) = each($this->timers)) {
  +      $out.=sprintf("%10s :%3.4f sec (%3.2f %%)\n",$name,$d,$d/$this->total*100);
  +    }
  +    return $out;
  +  }
  +
  +  function Total() {
  +    return sprintf("%4.4f sec\n",$this->total);
  +  }
  +
  +  function Clean() {
  +    $this->timers=array();
  +  }
  +}
   
   function find_needle($body,$needle,$count=0) {
     if (!$body) return '';
  @@ -33,53 +122,6 @@
     return $title;
   }
   
  -function get_title($page) {
  -  global $DBInfo;
  -  if ($DBInfo->use_titlecache) {
  -    $cache=new Cache_text('title');
  -    if ($cache->exists($page)) $title=$cache->fetch($page);
  -  } else
  -    $title=$page;
  -
  -  return preg_replace("/((?<=[a-z0-9]|[B-Z]{2}|A)([A-Z][a-z]|A))/"," \\1",$title);
  -}
  -
  -function getTicket($seed) {
  -  global $DBInfo;
  -  # make a ticket based on the variables in the config.php
  -  $config=getConfig("config.php");
  -  foreach ($config as $seed) {
  -    if (!is_array($seed))
  -      $md5.=md5($seed);
  -  }
  -  if ($DBInfo->strict_usercheck)
  -    # change user's ticket
  -    return md5($md5.$seed.time().$_SERVER['HTTP_HOST']);
  -  return md5($md5.$seed);
  -}
  -
  -function log_referer($referer,$page) {
  -  global $DBInfo;
  -  if (!$referer) return;
  -
  -  $ignore=array("http://".$_SERVER['HTTP_HOST']);
  -
  -  foreach ($ignore as $str)
  -    if (($p=strpos($referer,$str)) !== false) return;
  -
  -  if (!file_exists($DBInfo->cache_dir."/referer")) {
  -    umask(000);
  -    mkdir($DBInfo->cache_dir."/referer",0777);
  -    umask(011);
  -    touch($DBInfo->cache_dir."/referer/referer.log");
  -  }
  -
  -  $fp=fopen($DBInfo->cache_dir."/referer/referer.log",'a');
  -  $date=gmdate("Y-m-d\TH:i:s",time());
  -  fwrite($fp,"$date\t$page\t$referer\n");
  -  fclose($fp);
  -}
  -
   function toutf8($uni) {
     $utf[0]=0xe0 | ($uni >> 12);
     $utf[1]=0x80 | (($uni >> 6) & 0x3f);
  @@ -1293,13 +1335,17 @@
   
   function macro_TitleIndex($formatter="") {
     global $DBInfo;
  -
  +  
     if ($formatter->group) {
       $group_pages = $DBInfo->getLikePages($formatter->group,1);
       foreach ($group_pages as $page)
         $all_pages[]=str_replace($formatter->group,"",$page);
  -  } else
  -    $all_pages = $DBInfo->getPageLists();
  +  } else {
  +    if($DBInfo->dbcache)
  +      $all_pages = $DBInfo->dbcache->getPageLists();
  +    else $all_pages = $DBInfo->getPageLists();
  +  }
  +
     natcasesort($all_pages);
   
     $key=-1;
  @@ -1572,4 +1618,5 @@
     return $highlighted;
   }
   
  +// vim:ts=8:sts=2:sw=2:et
   ?>
  
  
  
  1.7       +2 -1      moniwiki/wikismiley.php
  
  Index: wikismiley.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikismiley.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- wikismiley.php	6 Jan 2004 23:38:34 -0000	1.6
  +++ wikismiley.php	8 Jan 2004 19:16:52 -0000	1.7
  @@ -1,5 +1,5 @@
   <?php
  -# $Id: wikismiley.php,v 1.6 2004/01/06 23:38:34 wkpark Exp $
  +# $Id: wikismiley.php,v 1.7 2004/01/08 19:16:52 wkpark Exp $
   $smileys=array(
       "X-("=> array(16, 16, 0, "smile/x-(.gif"),
       ":D"=>  array(16, 16, 0, "smile/8-D.gif"),
  @@ -100,4 +100,5 @@
       "{zh}"=>array(16, 16, 0, "zh-16.png"),
   );
   
  +// vim:ts=8:sts=2:sw=2:et
   ?>
  
  
  
  1.2       +3284 -0   moniwiki/wikidb.php
  
  
  
  


wkpark      04/01/09 04:17:08

  Modified:    imgs     icon-info.gif jangnan-16.png nosmoke-16.png
  Log:
  landing and merging with the cvs-db branch to main line
  
  Revision  Changes    Path
  1.3       +1 -2      moniwiki/imgs/icon-info.gif
  
  	<<Binary file>>
  
  
  1.3       +1 -1      moniwiki/imgs/jangnan-16.png
  
  	<<Binary file>>
  
  
  1.3       +5 -1      moniwiki/imgs/nosmoke-16.png
  
  	<<Binary file>>
  
  


wkpark      04/01/09 04:17:12

  Modified:    imgs/smile 8-(.gif
  Log:
  landing and merging with the cvs-db branch to main line
  
  Revision  Changes    Path
  1.3       +1 -1      moniwiki/imgs/smile/8-(.gif
  
  	<<Binary file>>
  
  


wkpark      04/01/09 04:17:21

  Added:       lib      dbcache.php dblib.php mysql-schema.sql
  Log:
  landing and merging with the cvs-db branch to main line
  
  Revision  Changes    Path
  1.2       +98 -0     moniwiki/lib/dbcache.php
  
  
  
  
  1.2       +218 -0    moniwiki/lib/dblib.php
  
  
  
  
  1.2       +21 -0     moniwiki/lib/mysql-schema.sql
  
  
  
  


wkpark      04/01/09 04:17:25

  Modified:    locale   Makefile
  Log:
  landing and merging with the cvs-db branch to main line
  
  Revision  Changes    Path
  1.3       +3 -1      moniwiki/locale/Makefile
  
  Index: Makefile
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/Makefile,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Makefile	7 Jan 2004 02:44:45 -0000	1.2
  +++ Makefile	8 Jan 2004 19:17:22 -0000	1.3
  @@ -1,4 +1,4 @@
  -# $Id: Makefile,v 1.2 2004/01/07 02:44:45 wkpark Exp $
  +# $Id: Makefile,v 1.3 2004/01/08 19:17:22 wkpark Exp $
   #
   # locale/Makefile
   #
  @@ -92,6 +92,7 @@
   ${POT_FILE}: ../plugin/backup.php
   ${POT_FILE}: ../plugin/blogrss.php
   ${POT_FILE}: ../plugin/bookmark.php
  +${POT_FILE}: ../plugin/cache/mysql.php
   ${POT_FILE}: ../plugin/chmod.php
   ${POT_FILE}: ../plugin/css.php
   ${POT_FILE}: ../plugin/dot.php
  @@ -140,6 +141,7 @@
   ${POT_FILE}: ../plugin/trackback.php
   ${POT_FILE}: ../plugin/urlencode.php
   ${POT_FILE}: ../plugin/userform.php
  +${POT_FILE}: ../plugin/version/CVS.php
   ${POT_FILE}: ../plugin/whois.php
   ${POT_FILE}: ../wiki.php
   ${POT_FILE}: ../wikilib.php
  
  
  


wkpark      04/01/09 04:17:32

  Modified:    locale/po fr.po ko.po moniwiki.pot
  Log:
  landing and merging with the cvs-db branch to main line
  
  Revision  Changes    Path
  1.9       +83 -177   moniwiki/locale/po/fr.po
  
  Index: fr.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/fr.po,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- fr.po	7 Jan 2004 02:44:46 -0000	1.8
  +++ fr.po	8 Jan 2004 19:17:26 -0000	1.9
  @@ -3,7 +3,7 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: MoniWiki 1.0\n"
  -"POT-Creation-Date: 2004-01-07 11:48+0900\n"
  +"POT-Creation-Date: 2004-01-09 04:19+0900\n"
   "PO-Revision-Date: 2003-08-17 22:51+0900\n"
   "Last-Translator: Serge Stinckwich <Serge.Stinckwich@info.unicaen.fr>\n"
   "Language-Team: fr <fr@li.org>\n"
  @@ -23,12 +23,12 @@
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
   
  -#: ../plugin/BabelFish.php:14
  +#: ../plugin/BabelFish.php:16
   msgid "BabelFish Translation"
   msgstr ""
   
   # ../wiki.php:850
  -#: ../plugin/BabelFish.php:27
  +#: ../plugin/BabelFish.php:29
   #, c-format
   msgid "Translate %s to %s"
   msgstr "Translate %s en %s"
  @@ -150,7 +150,7 @@
   msgstr ""
   
   # ../wikilib.php:1483
  -#: ../plugin/FullSearch.php:71 ../wikilib.php:1503
  +#: ../plugin/FullSearch.php:71 ../wikilib.php:1549
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "Expression de recherche \"%s\" invalide"
  @@ -195,7 +195,7 @@
   msgid "Edit Image"
   msgstr "diter l'image"
   
  -#: ../plugin/RecentChanges.php:146
  +#: ../plugin/RecentChanges.php:155
   msgid "set bookmark"
   msgstr ""
   
  @@ -211,7 +211,7 @@
   msgstr "TwinPages de %s"
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../plugin/TwinPages.php:18 ../wiki.php:1868 ../wiki.php:3041
  +#: ../plugin/TwinPages.php:18
   msgid "See TwinPages: "
   msgstr "Voir TwinPages: "
   
  @@ -236,7 +236,7 @@
   msgstr "Mot de passe"
   
   # ../wikilib.php:550
  -#: ../plugin/UploadedFiles.php:107 ../wikilib.php:568
  +#: ../plugin/UploadedFiles.php:107 ../wikilib.php:610
   msgid "Delete selected files"
   msgstr "Effacer les fichiers slectionns"
   
  @@ -310,7 +310,7 @@
   msgstr "Mot de passe :"
   
   # ../plugin/login.php:26 ../wikilib.php:1051
  -#: ../plugin/login.php:26 ../wikilib.php:1071
  +#: ../plugin/login.php:26 ../wikilib.php:1113
   msgid "Login"
   msgstr "Se connecter"
   
  @@ -340,7 +340,7 @@
   msgstr "Aucune page de manuel trouv"
   
   # ../plugin/minilogin.php:22 ../wikilib.php:1076
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1096
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1138
   msgid "Login or Join"
   msgstr "Se connecter ou se joindre "
   
  @@ -481,7 +481,7 @@
   msgstr "Seulement le WikiMaster peut renommer cette page"
   
   # ../plugin/rename.php:39 ../wikilib.php:588
  -#: ../plugin/rename.php:39 ../wikilib.php:608
  +#: ../plugin/rename.php:39 ../wikilib.php:650
   msgid "with revision history"
   msgstr "avec l'historique de rvision"
   
  @@ -764,129 +764,8 @@
   msgid "Whois search result for %s"
   msgstr ""
   
  -# ../wiki.php:850
  -#: ../wiki.php:861
  -#, c-format
  -msgid "Rename %s to %s"
  -msgstr "Renommer %s en %s"
  -
  -# ../wiki.php:1824
  -#: ../wiki.php:1864
  -#, c-format
  -msgid "See %s"
  -msgstr "Voir %s"
  -
  -# ../wiki.php:1824
  -#: ../wiki.php:1864
  -msgid "TwinPages"
  -msgstr ""
  -
  -# ../wiki.php:2110
  -#: ../wiki.php:2160
  -msgid "Revision History"
  -msgstr "Historique de rvision"
  -
  -# ../wiki.php:2211 ../wiki.php:2360
  -#: ../wiki.php:2261 ../wiki.php:2409
  -msgid "No older revisions available"
  -msgstr "Aucune rvision plus ancienne disponible"
  -
  -# ../wiki.php:2338 ../wiki.php:2373 ../wikilib.php:770
  -#: ../wiki.php:2388 ../wiki.php:2427 ../wikilib.php:790
  -msgid "No difference found"
  -msgstr "Aucune diffrence trouv"
  -
  -# ../wiki.php:2341
  -#: ../wiki.php:2390
  -msgid "Difference between yours and the current"
  -msgstr "Diffrence entre votre version et la courante"
  -
  -# ../wiki.php:2376
  -#: ../wiki.php:2429
  -msgid "Difference between versions"
  -msgstr "Diffrence entre les versions"
  -
  -# ../wiki.php:2378
  -#: ../wiki.php:2431
  -#, c-format
  -msgid "Difference between r%s and r%s"
  -msgstr "Diffrence entre r%s et r%s"
  -
  -# ../wiki.php:2382
  -#: ../wiki.php:2434
  -#, c-format
  -msgid "Difference between r%s and the current"
  -msgstr "Diffrence entre r%s et la version courante"
  -
  -# ../locale/dummy.php:6 ../wiki.php:2553
  -#: ../wiki.php:2607 ../locale/dummy.php:6
  -msgid "EditText"
  -msgstr "ditionTexte"
  -
  -# ../wiki.php:2555
  -#: ../wiki.php:2609
  -msgid "NotEditable"
  -msgstr "Pasditable"
  -
  -# ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wiki.php:2611 ../locale/dummy.php:6
  -msgid "ShowPage"
  -msgstr "MontrePage"
  -
  -# ../locale/dummy.php:3 ../locale/dummy.php:5 ../wiki.php:2558
  -#: ../wiki.php:2612 ../locale/dummy.php:3 ../locale/dummy.php:5
  -msgid "FindPage"
  -msgstr "TrouvePage"
  -
  -# ../wiki.php:2945 ../wiki.php:2948
  -#: ../wiki.php:3043 ../wiki.php:3046
  -msgid "Create this page"
  -msgstr "Crer cette page"
  -
  -# ../wiki.php:2950
  -#: ../wiki.php:3048
  -#, c-format
  -msgid " or click %s to fullsearch this page.\n"
  -msgstr ""
  -" ou cliquer sur %s pour faire une recherche en texte intgral de cette "
  -"page.\n"
  -
  -# ../wiki.php:2950
  -#: ../wiki.php:3048
  -msgid "title"
  -msgstr "titre"
  -
  -# ../wiki.php:2956
  -#: ../wiki.php:3054
  -msgid " or alternativly, use one of these templates:\n"
  -msgstr " ou alternativement, utiliser un de ces modles de page :\n"
  -
  -# ../wikilib.php:427
  -#: ../wiki.php:3057 ../wikilib.php:435
  -msgid "To create your own templates, add a page with a 'Template' suffix.\n"
  -msgstr ""
  -"Pour crer vos propres modles de pages, ajouter une page avec lesuffix "
  -"'Template'.\n"
  -
  -# ../wiki.php:3009
  -#: ../wiki.php:3114
  -#, c-format
  -msgid "You are not allowed to '%s'"
  -msgstr "Vous n'tes pas autoris  '%s'"
  -
  -# ../wiki.php:3021
  -#: ../wiki.php:3126
  -#, c-format
  -msgid "Fail to \"%s\" !"
  -msgstr "Impossible de pouvoir \"%s\" !"
  -
  -# ../wiki.php:3024
  -#: ../wiki.php:3129
  -msgid "Please enter the valid password"
  -msgstr "Merci d'entrer un mot de passe valide"
  -
   # ../wikilib.php:368
  -#: ../wikilib.php:375
  +#: ../wikilib.php:417
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -919,203 +798,215 @@
   "Les espaces aprs un tableau ou un titre ne sont pas autoriss.<br />\n"
   
   # ../wikilib.php:425
  -#: ../wikilib.php:433
  +#: ../wikilib.php:475
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   "Utiliser un des modles de pages qui suivent pour une premirecration :\n"
   
   # ../wikilib.php:427
  -#: ../wikilib.php:435
  +#: ../wikilib.php:477
  +msgid "To create your own templates, add a page with a 'Template' suffix.\n"
  +msgstr ""
  +"Pour crer vos propres modles de pages, ajouter une page avec lesuffix "
  +"'Template'.\n"
  +
  +# ../wikilib.php:427
  +#: ../wikilib.php:477
   msgid "<br />\n"
   msgstr ""
   
   # ../wikilib.php:443
  -#: ../wikilib.php:451
  +#: ../wikilib.php:493
   msgid "Skip to preview"
   msgstr "Aller  la prvisualisation"
   
   # ../wikilib.php:445
  -#: ../wikilib.php:453
  +#: ../wikilib.php:495
   msgid "ReduceEditor"
   msgstr "Rduirediteur"
   
   # ../locale/dummy.php:6 ../wikilib.php:448
  -#: ../wikilib.php:456 ../locale/dummy.php:6
  +#: ../wikilib.php:498 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
   # ../wikilib.php:449
  -#: ../wikilib.php:457
  +#: ../wikilib.php:499
   msgid "HelpOnEditing"
   msgstr ""
   
   # ../wikilib.php:462
  -#: ../wikilib.php:474
  +#: ../wikilib.php:516
   #, c-format
   msgid "Describe %s here"
   msgstr "Dcrire %s ici"
   
   # ../wikilib.php:476
  -#: ../wikilib.php:490
  +#: ../wikilib.php:532
   msgid "--Select Category--"
   msgstr "-- Slectionner une catgorie"
   
   # ../wikilib.php:482
  -#: ../wikilib.php:496
  +#: ../wikilib.php:538
   msgid "Preview"
   msgstr "Prvisualisation"
   
   # ../wikilib.php:483 ../wikilib.php:1079
  -#: ../wikilib.php:497 ../wikilib.php:1099
  +#: ../wikilib.php:539 ../wikilib.php:1141
   msgid "Save"
   msgstr "Sauvegarder"
   
   # ../wikilib.php:484
  -#: ../wikilib.php:498
  +#: ../wikilib.php:540
   msgid "Summary of Change"
   msgstr "Sommaire des modifications"
   
   # ../wikilib.php:507
  -#: ../wikilib.php:521
  +#: ../wikilib.php:563
   #, c-format
   msgid "Info. for %s"
   msgstr "Information sur %s"
   
   # ../wikilib.php:517
  -#: ../wikilib.php:531
  +#: ../wikilib.php:573
   msgid "406 Not Acceptable"
   msgstr ""
   
   # ../wikilib.php:519
  -#: ../wikilib.php:533
  +#: ../wikilib.php:575
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s n'est pas une action valide"
   
   # ../wikilib.php:521
  -#: ../wikilib.php:535
  +#: ../wikilib.php:577
   msgid "Is it valid action ?"
   msgstr "Est-ce que c'est une action valide ?"
   
   # ../wikilib.php:540
  -#: ../wikilib.php:556
  +#: ../wikilib.php:598
   #, c-format
   msgid "File '%s' is deleted"
   msgstr "Le fichier '%s' est effac"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:558
  +#: ../wikilib.php:600
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr "Impossible d'effacer '%s'"
   
   # ../wikilib.php:545
  -#: ../wikilib.php:563
  +#: ../wikilib.php:605
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr "Le rpertoire '%s' est effac"
   
   # ../wikilib.php:547
  -#: ../wikilib.php:565
  +#: ../wikilib.php:607
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr "Impossible d'effacer le rpertoire '%s'"
   
   # ../wikilib.php:557 ../wikilib.php:559
  -#: ../wikilib.php:575 ../wikilib.php:577
  +#: ../wikilib.php:617 ../wikilib.php:619
   msgid "No files are selected !"
   msgstr "Aucun fichier n'est slectionn !"
   
   # ../wikilib.php:575
  -#: ../wikilib.php:595
  +#: ../wikilib.php:637
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr "\"%s\" est effac !"
   
   # ../wikilib.php:581
  -#: ../wikilib.php:601
  +#: ../wikilib.php:643
   msgid "Please delete this file manually."
   msgstr "Merci d'effacer ce fichier manuellement."
   
   # ../wikilib.php:583
  -#: ../wikilib.php:603
  +#: ../wikilib.php:645
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "Effacer \"%s\" ?"
   
   # ../wikilib.php:672 ../wikilib.php:1472
  -#: ../wikilib.php:692 ../wikilib.php:1492
  +#: ../wikilib.php:734 ../wikilib.php:1538
   msgid "Use more specific text"
   msgstr "Utiliser un texte plus spcifique"
   
   # ../wikilib.php:734
  -#: ../wikilib.php:754
  +#: ../wikilib.php:796
   msgid "Goto Editor"
   msgstr "Aller  l'diteur"
   
   # ../wikilib.php:743
  -#: ../wikilib.php:763
  +#: ../wikilib.php:805
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "Quelqu'un a sauvegard la page tandis que vous ditiez %s"
   
   # ../wikilib.php:748 ../wikilib.php:777
  -#: ../wikilib.php:768 ../wikilib.php:797
  +#: ../wikilib.php:810 ../wikilib.php:839
   #, c-format
   msgid "Preview of %s"
   msgstr "Prvisualisation de %s"
   
   # ../wikilib.php:755
  -#: ../wikilib.php:775
  +#: ../wikilib.php:817
   msgid "Conflict error!"
   msgstr "Erreur de conflit !"
   
   # ../wikilib.php:769
  -#: ../wikilib.php:789
  +#: ../wikilib.php:831
   #, c-format
   msgid "Go back or return to %s"
   msgstr "Revenir en arrire ou retourner  %s"
   
  +# ../wiki.php:2338 ../wiki.php:2373 ../wikilib.php:770
  +#: ../wikilib.php:832
  +msgid "No difference found"
  +msgstr "Aucune diffrence trouv"
  +
   # ../wikilib.php:803
  -#: ../wikilib.php:823
  +#: ../wikilib.php:865
   msgid "mail does not supported by default."
   msgstr "La messagerie n'est pas support par dfaut."
   
   # ../wikilib.php:807
  -#: ../wikilib.php:827
  +#: ../wikilib.php:869
   msgid "Sent notification mail."
   msgstr "Des notifications par messagerie ont t envoyes."
   
   # ../wikilib.php:809
  -#: ../wikilib.php:829
  +#: ../wikilib.php:871
   msgid "No subscribers found."
   msgstr "Aucun abonn trouv."
   
   # ../wikilib.php:814
  -#: ../wikilib.php:834
  +#: ../wikilib.php:876
   #, c-format
   msgid "%s is not editable"
   msgstr "%s n'est pas ditable"
   
   # ../wikilib.php:816
  -#: ../wikilib.php:836
  +#: ../wikilib.php:878
   #, c-format
   msgid "%s is saved"
   msgstr "%s est sauvegard"
   
   # ../wikilib.php:838
  -#: ../wikilib.php:858
  +#: ../wikilib.php:900
   msgid "Nobody subscribed to this page."
   msgstr "Personne n'est abonn  cette page, aucun mail envoy"
   
   # ../wikilib.php:860
  -#: ../wikilib.php:880
  +#: ../wikilib.php:922
   #, c-format
   msgid "%s page is modified"
   msgstr "la page %s est modifi"
   
   # ../wikilib.php:870
  -#: ../wikilib.php:890
  +#: ../wikilib.php:932
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
  @@ -1126,43 +1017,43 @@
   "\n"
   
   # ../wikilib.php:883
  -#: ../wikilib.php:903
  +#: ../wikilib.php:945
   msgid "Send notification mails to all subscribers"
   msgstr "Envoyez un mail de notification  tous les abonns"
   
   # ../wikilib.php:887
  -#: ../wikilib.php:907
  +#: ../wikilib.php:949
   msgid "Mails are sent successfully"
   msgstr "Mail envoy avec succs"
   
   # ../wikilib.php:888
  -#: ../wikilib.php:908
  +#: ../wikilib.php:950
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr "un mail a t envoy  '%s'"
   
   # ../wikilib.php:1070
  -#: ../wikilib.php:1090
  +#: ../wikilib.php:1132
   msgid "Make profile"
   msgstr "Faire un profil"
   
   # ../wikilib.php:1071
  -#: ../wikilib.php:1091
  +#: ../wikilib.php:1133
   msgid "password again"
   msgstr "mot de passe de nouveau"
   
   # ../wikilib.php:1082
  -#: ../wikilib.php:1102
  +#: ../wikilib.php:1144
   msgid "New password"
   msgstr "Nouveau mot de passe"
   
   # ../wikilib.php:1088
  -#: ../wikilib.php:1108
  +#: ../wikilib.php:1150
   msgid "logout"
   msgstr "se dconnecter"
   
   # ../wikilib.php:1479
  -#: ../wikilib.php:1499
  +#: ../wikilib.php:1545
   #, c-format
   msgid "Title search for \"%s\""
   msgstr "Recherche de titre pour \"%s\""
  @@ -1177,6 +1068,11 @@
   msgid "RecentChanges"
   msgstr "ChangementsRcents"
   
  +# ../locale/dummy.php:3 ../locale/dummy.php:5 ../wiki.php:2558
  +#: ../locale/dummy.php:3 ../locale/dummy.php:5
  +msgid "FindPage"
  +msgstr "TrouvePage"
  +
   # ../locale/dummy.php:4
   #: ../locale/dummy.php:4
   msgid "TitleIndex"
  @@ -1206,6 +1102,16 @@
   #: ../locale/dummy.php:6
   msgid "UploadedFiles"
   msgstr ""
  +
  +# ../locale/dummy.php:6 ../wiki.php:2553
  +#: ../locale/dummy.php:6
  +msgid "EditText"
  +msgstr "ditionTexte"
  +
  +# ../locale/dummy.php:6 ../wiki.php:2557
  +#: ../locale/dummy.php:6
  +msgid "ShowPage"
  +msgstr "MontrePage"
   
   # ../locale/dummy.php:7
   #: ../locale/dummy.php:7
  
  
  
  1.9       +86 -160   moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- ko.po	7 Jan 2004 02:44:46 -0000	1.8
  +++ ko.po	8 Jan 2004 19:17:26 -0000	1.9
  @@ -5,7 +5,7 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: MoniWiki 1.0\n"
  -"POT-Creation-Date: 2004-01-07 11:48+0900\n"
  +"POT-Creation-Date: 2004-01-09 04:19+0900\n"
   "PO-Revision-Date: 2003-04-29 19:00+0900\n"
   "Last-Translator: Won-kyu Park <wkpark@kldp.org>\n"
   "Language-Team: ko <ko@li.org>\n"
  @@ -16,18 +16,18 @@
   #: ../plugin/Attachment.php:32
   #, c-format
   msgid "Upload new Attachment \"%s\""
  -msgstr ""
  +msgstr "÷ \"%s\"()  ø"
   
   #: ../plugin/Attachment.php:36
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
  -msgstr ""
  +msgstr "÷ \"%s\"() \"%s\"()  ø"
   
  -#: ../plugin/BabelFish.php:14
  +#: ../plugin/BabelFish.php:16
   msgid "BabelFish Translation"
   msgstr ""
   
  -#: ../plugin/BabelFish.php:27
  +#: ../plugin/BabelFish.php:29
   #, c-format
   msgid "Translate %s to %s"
   msgstr "%s %s() ϱ"
  @@ -75,7 +75,7 @@
   
   #: ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
   msgid "Draw new picture"
  -msgstr ""
  +msgstr " ׸ ׸"
   
   #: ../plugin/Draw.php:49 ../plugin/UploadFile.php:81
   #, c-format
  @@ -127,10 +127,10 @@
   msgid "BackLinks search for \"%s\""
   msgstr "\"%s\"  ũ ã"
   
  -#: ../plugin/FullSearch.php:71 ../wikilib.php:1503
  +#: ../plugin/FullSearch.php:71 ../wikilib.php:1549
   #, c-format
   msgid "Invalid search expression \"%s\""
  -msgstr ""
  +msgstr "߸ ˻ǥ \"%s\""
   
   #: ../plugin/LikePages.php:109
   msgid "These pages share a similar word..."
  @@ -159,7 +159,7 @@
   
   #: ../plugin/LikePages.php:151
   msgid "Search all MetaWikis"
  -msgstr ""
  +msgstr "ŸŰ  ãƺ"
   
   #: ../plugin/OeKaki.php:118
   msgid "Create new picture"
  @@ -169,7 +169,7 @@
   msgid "Edit Image"
   msgstr "׸ ġ"
   
  -#: ../plugin/RecentChanges.php:146
  +#: ../plugin/RecentChanges.php:155
   msgid "set bookmark"
   msgstr "ϸũ"
   
  @@ -182,7 +182,7 @@
   msgid "TwinPages of %s"
   msgstr "%s ֵ "
   
  -#: ../plugin/TwinPages.php:18 ../wiki.php:1868 ../wiki.php:3041
  +#: ../plugin/TwinPages.php:18
   msgid "See TwinPages: "
   msgstr ""
   
  @@ -201,11 +201,11 @@
   
   #: ../plugin/UploadedFiles.php:106 ../plugin/rename.php:36
   msgid "Password"
  -msgstr ""
  +msgstr "йȣ"
   
  -#: ../plugin/UploadedFiles.php:107 ../wikilib.php:568
  +#: ../plugin/UploadedFiles.php:107 ../wikilib.php:610
   msgid "Delete selected files"
  -msgstr ""
  +msgstr "  "
   
   #: ../plugin/VisualTour.php:55
   msgid "Normal"
  @@ -227,11 +227,11 @@
   
   #: ../plugin/Vote.php:112
   msgid "Voted successfully"
  -msgstr ""
  +msgstr "ǥ ϷǾϴ"
   
   #: ../plugin/backup.php:46
   msgid "Did you want to Backup your wiki ?"
  -msgstr ""
  +msgstr "Ű Ͻðڽϱ ?"
   
   #: ../plugin/chmod.php:18
   #, c-format
  @@ -264,7 +264,7 @@
   msgid "Password:"
   msgstr ""
   
  -#: ../plugin/login.php:26 ../wikilib.php:1071
  +#: ../plugin/login.php:26 ../wikilib.php:1113
   msgid "Login"
   msgstr ""
   
  @@ -288,7 +288,7 @@
   msgid "No manpage found"
   msgstr "Manpage ϴ"
   
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1096
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1138
   msgid "Login or Join"
   msgstr ""
   
  @@ -406,7 +406,7 @@
   msgid "Only WikiMaster can rename this page"
   msgstr ""
   
  -#: ../plugin/rename.php:39 ../wikilib.php:608
  +#: ../plugin/rename.php:39 ../wikilib.php:650
   msgid "with revision history"
   msgstr " 丮 Բ"
   
  @@ -652,102 +652,7 @@
   msgid "Whois search result for %s"
   msgstr "%s  Whois ġ "
   
  -#: ../wiki.php:861
  -#, c-format
  -msgid "Rename %s to %s"
  -msgstr ""
  -
  -#: ../wiki.php:1864
  -#, c-format
  -msgid "See %s"
  -msgstr ""
  -
  -#: ../wiki.php:1864
  -msgid "TwinPages"
  -msgstr "TwinPages"
  -
  -#: ../wiki.php:2160
  -msgid "Revision History"
  -msgstr " 丮"
  -
  -#: ../wiki.php:2261 ../wiki.php:2409
  -msgid "No older revisions available"
  -msgstr "  ϴ"
  -
  -#: ../wiki.php:2388 ../wiki.php:2427 ../wikilib.php:790
  -msgid "No difference found"
  -msgstr "ȭ ϴ"
  -
  -#: ../wiki.php:2390
  -msgid "Difference between yours and the current"
  -msgstr ""
  -
  -#: ../wiki.php:2429
  -msgid "Difference between versions"
  -msgstr ""
  -
  -#: ../wiki.php:2431
  -#, c-format
  -msgid "Difference between r%s and r%s"
  -msgstr "r%s r%s "
  -
  -#: ../wiki.php:2434
  -#, c-format
  -msgid "Difference between r%s and the current"
  -msgstr "r%s   "
  -
  -#: ../wiki.php:2607 ../locale/dummy.php:6
  -msgid "EditText"
  -msgstr "ġ"
  -
  -#: ../wiki.php:2609
  -msgid "NotEditable"
  -msgstr "ĥ "
  -
  -#: ../wiki.php:2611 ../locale/dummy.php:6
  -msgid "ShowPage"
  -msgstr ""
  -
  -#: ../wiki.php:2612 ../locale/dummy.php:3 ../locale/dummy.php:5
  -msgid "FindPage"
  -msgstr "ã"
  -
  -#: ../wiki.php:3043 ../wiki.php:3046
  -msgid "Create this page"
  -msgstr " "
  -
  -#: ../wiki.php:3048
  -#, c-format
  -msgid " or click %s to fullsearch this page.\n"
  -msgstr ""
  -
  -#: ../wiki.php:3048
  -msgid "title"
  -msgstr ""
  -
  -#: ../wiki.php:3054
  -msgid " or alternativly, use one of these templates:\n"
  -msgstr " Ȥ Ʒ øƮ  ̿ϼ:\n"
  -
  -#: ../wiki.php:3057 ../wikilib.php:435
  -msgid "To create your own templates, add a page with a 'Template' suffix.\n"
  -msgstr "øƮ ÷ Template ̸   弼.\n"
  -
  -#: ../wiki.php:3114
  -#, c-format
  -msgid "You are not allowed to '%s'"
  -msgstr ""
  -
  -#: ../wiki.php:3126
  -#, c-format
  -msgid "Fail to \"%s\" !"
  -msgstr ""
  -
  -#: ../wiki.php:3129
  -msgid "Please enter the valid password"
  -msgstr "Ȯ йȣ ־ּ"
  -
  -#: ../wikilib.php:375
  +#: ../wikilib.php:417
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -776,202 +681,210 @@
   "<b>̺</b>: ||   |||| ĭ ģ  ||;<br />\n"
   "̺̳     ȵ˴ϴ.<br />\n"
   
  -#: ../wikilib.php:433
  +#: ../wikilib.php:475
   msgid "Use one of the following templates as an initial release :\n"
   msgstr "ó   øƮ Ȱϼ :\n"
   
  -#: ../wikilib.php:435
  +#: ../wikilib.php:477
  +msgid "To create your own templates, add a page with a 'Template' suffix.\n"
  +msgstr "øƮ ÷ Template ̸   弼.\n"
  +
  +#: ../wikilib.php:477
   msgid "<br />\n"
   msgstr ""
   
  -#: ../wikilib.php:451
  +#: ../wikilib.php:493
   msgid "Skip to preview"
   msgstr "̸"
   
  -#: ../wikilib.php:453
  +#: ../wikilib.php:495
   msgid "ReduceEditor"
   msgstr "â ̱"
   
  -#: ../wikilib.php:456 ../locale/dummy.php:6
  +#: ../wikilib.php:498 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr "Ű"
   
  -#: ../wikilib.php:457
  +#: ../wikilib.php:499
   msgid "HelpOnEditing"
   msgstr "ġ "
   
  -#: ../wikilib.php:474
  +#: ../wikilib.php:516
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:490
  +#: ../wikilib.php:532
   msgid "--Select Category--"
   msgstr ""
   
  -#: ../wikilib.php:496
  +#: ../wikilib.php:538
   msgid "Preview"
   msgstr "̸"
   
  -#: ../wikilib.php:497 ../wikilib.php:1099
  +#: ../wikilib.php:539 ../wikilib.php:1141
   msgid "Save"
   msgstr ""
   
  -#: ../wikilib.php:498
  +#: ../wikilib.php:540
   msgid "Summary of Change"
   msgstr "ٲ "
   
  -#: ../wikilib.php:521
  +#: ../wikilib.php:563
   #, c-format
   msgid "Info. for %s"
   msgstr "%s "
   
  -#: ../wikilib.php:531
  +#: ../wikilib.php:573
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:533
  +#: ../wikilib.php:575
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s() ȿ ׼ ƴմϴ"
   
  -#: ../wikilib.php:535
  +#: ../wikilib.php:577
   msgid "Is it valid action ?"
   msgstr ""
   
  -#: ../wikilib.php:556
  +#: ../wikilib.php:598
   #, c-format
   msgid "File '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:558
  +#: ../wikilib.php:600
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr ""
   
  -#: ../wikilib.php:563
  +#: ../wikilib.php:605
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:565
  +#: ../wikilib.php:607
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr ""
   
  -#: ../wikilib.php:575 ../wikilib.php:577
  +#: ../wikilib.php:617 ../wikilib.php:619
   msgid "No files are selected !"
   msgstr " õ ʾҽϴ !"
   
  -#: ../wikilib.php:595
  +#: ../wikilib.php:637
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr ""
   
  -#: ../wikilib.php:601
  +#: ../wikilib.php:643
   msgid "Please delete this file manually."
   msgstr ""
   
  -#: ../wikilib.php:603
  +#: ../wikilib.php:645
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "\"%s\"()  ?"
   
  -#: ../wikilib.php:692 ../wikilib.php:1492
  +#: ../wikilib.php:734 ../wikilib.php:1538
   msgid "Use more specific text"
   msgstr "  ڼ Էϼ"
   
  -#: ../wikilib.php:754
  +#: ../wikilib.php:796
   msgid "Goto Editor"
   msgstr " "
   
  -#: ../wikilib.php:763
  +#: ../wikilib.php:805
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "%s() ġ  ٸ    ߽ϴ"
   
  -#: ../wikilib.php:768 ../wikilib.php:797
  +#: ../wikilib.php:810 ../wikilib.php:839
   #, c-format
   msgid "Preview of %s"
   msgstr "%s ̸"
   
  -#: ../wikilib.php:775
  +#: ../wikilib.php:817
   msgid "Conflict error!"
   msgstr "浹!"
   
  -#: ../wikilib.php:789
  +#: ../wikilib.php:831
   #, c-format
   msgid "Go back or return to %s"
   msgstr "ڷ Ȥ %s() "
   
  -#: ../wikilib.php:823
  +#: ../wikilib.php:832
  +msgid "No difference found"
  +msgstr "ȭ ϴ"
  +
  +#: ../wikilib.php:865
   msgid "mail does not supported by default."
   msgstr ""
   
  -#: ../wikilib.php:827
  +#: ../wikilib.php:869
   msgid "Sent notification mail."
   msgstr ""
   
  -#: ../wikilib.php:829
  +#: ../wikilib.php:871
   msgid "No subscribers found."
   msgstr "ڰ ϴ"
   
  -#: ../wikilib.php:834
  +#: ../wikilib.php:876
   #, c-format
   msgid "%s is not editable"
   msgstr "%s()   ϴ"
   
  -#: ../wikilib.php:836
  +#: ../wikilib.php:878
   #, c-format
   msgid "%s is saved"
   msgstr "%s() Ǿϴ"
   
  -#: ../wikilib.php:858
  +#: ../wikilib.php:900
   msgid "Nobody subscribed to this page."
   msgstr ""
   
  -#: ../wikilib.php:880
  +#: ../wikilib.php:922
   #, c-format
   msgid "%s page is modified"
   msgstr ""
   
  -#: ../wikilib.php:890
  +#: ../wikilib.php:932
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:903
  +#: ../wikilib.php:945
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:907
  +#: ../wikilib.php:949
   msgid "Mails are sent successfully"
   msgstr ""
   
  -#: ../wikilib.php:908
  +#: ../wikilib.php:950
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1090
  +#: ../wikilib.php:1132
   msgid "Make profile"
   msgstr ""
   
  -#: ../wikilib.php:1091
  +#: ../wikilib.php:1133
   msgid "password again"
   msgstr ""
   
  -#: ../wikilib.php:1102
  +#: ../wikilib.php:1144
   msgid "New password"
   msgstr " йȣ"
   
  -#: ../wikilib.php:1108
  +#: ../wikilib.php:1150
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:1499
  +#: ../wikilib.php:1545
   #, c-format
   msgid "Title search for \"%s\""
   msgstr ""
  @@ -984,6 +897,10 @@
   msgid "RecentChanges"
   msgstr "ٲ"
   
  +#: ../locale/dummy.php:3 ../locale/dummy.php:5
  +msgid "FindPage"
  +msgstr "ã"
  +
   #: ../locale/dummy.php:4
   msgid "TitleIndex"
   msgstr ""
  @@ -1008,6 +925,14 @@
   msgid "UploadedFiles"
   msgstr "ø "
   
  +#: ../locale/dummy.php:6
  +msgid "EditText"
  +msgstr "ġ"
  +
  +#: ../locale/dummy.php:6
  +msgid "ShowPage"
  +msgstr ""
  +
   #: ../locale/dummy.php:7
   msgid "BlogChanges"
   msgstr "ٲ α"
  @@ -1019,3 +944,4 @@
   #: ../locale/dummy.php:7
   msgid "TrackBack"
   msgstr "Ʈ"
  +
  
  
  
  1.9       +76 -151   moniwiki/locale/po/moniwiki.pot
  
  Index: moniwiki.pot
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/moniwiki.pot,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- moniwiki.pot	7 Jan 2004 02:44:46 -0000	1.8
  +++ moniwiki.pot	8 Jan 2004 19:17:26 -0000	1.9
  @@ -6,7 +6,7 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: PACKAGE VERSION\n"
  -"POT-Creation-Date: 2004-01-07 11:48+0900\n"
  +"POT-Creation-Date: 2004-01-09 04:19+0900\n"
   "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
   "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
   "Language-Team: LANGUAGE <LL@li.org>\n"
  @@ -24,11 +24,11 @@
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
   
  -#: ../plugin/BabelFish.php:14
  +#: ../plugin/BabelFish.php:16
   msgid "BabelFish Translation"
   msgstr ""
   
  -#: ../plugin/BabelFish.php:27
  +#: ../plugin/BabelFish.php:29
   #, c-format
   msgid "Translate %s to %s"
   msgstr ""
  @@ -128,7 +128,7 @@
   msgid "BackLinks search for \"%s\""
   msgstr ""
   
  -#: ../plugin/FullSearch.php:71 ../wikilib.php:1503
  +#: ../plugin/FullSearch.php:71 ../wikilib.php:1549
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr ""
  @@ -170,7 +170,7 @@
   msgid "Edit Image"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:146
  +#: ../plugin/RecentChanges.php:155
   msgid "set bookmark"
   msgstr ""
   
  @@ -183,7 +183,7 @@
   msgid "TwinPages of %s"
   msgstr ""
   
  -#: ../plugin/TwinPages.php:18 ../wiki.php:1868 ../wiki.php:3041
  +#: ../plugin/TwinPages.php:18
   msgid "See TwinPages: "
   msgstr ""
   
  @@ -204,7 +204,7 @@
   msgid "Password"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:107 ../wikilib.php:568
  +#: ../plugin/UploadedFiles.php:107 ../wikilib.php:610
   msgid "Delete selected files"
   msgstr ""
   
  @@ -265,7 +265,7 @@
   msgid "Password:"
   msgstr ""
   
  -#: ../plugin/login.php:26 ../wikilib.php:1071
  +#: ../plugin/login.php:26 ../wikilib.php:1113
   msgid "Login"
   msgstr ""
   
  @@ -289,7 +289,7 @@
   msgid "No manpage found"
   msgstr ""
   
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1096
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1138
   msgid "Login or Join"
   msgstr ""
   
  @@ -406,7 +406,7 @@
   msgid "Only WikiMaster can rename this page"
   msgstr ""
   
  -#: ../plugin/rename.php:39 ../wikilib.php:608
  +#: ../plugin/rename.php:39 ../wikilib.php:650
   msgid "with revision history"
   msgstr ""
   
  @@ -648,102 +648,7 @@
   msgid "Whois search result for %s"
   msgstr ""
   
  -#: ../wiki.php:861
  -#, c-format
  -msgid "Rename %s to %s"
  -msgstr ""
  -
  -#: ../wiki.php:1864
  -#, c-format
  -msgid "See %s"
  -msgstr ""
  -
  -#: ../wiki.php:1864
  -msgid "TwinPages"
  -msgstr ""
  -
  -#: ../wiki.php:2160
  -msgid "Revision History"
  -msgstr ""
  -
  -#: ../wiki.php:2261 ../wiki.php:2409
  -msgid "No older revisions available"
  -msgstr ""
  -
  -#: ../wiki.php:2388 ../wiki.php:2427 ../wikilib.php:790
  -msgid "No difference found"
  -msgstr ""
  -
  -#: ../wiki.php:2390
  -msgid "Difference between yours and the current"
  -msgstr ""
  -
  -#: ../wiki.php:2429
  -msgid "Difference between versions"
  -msgstr ""
  -
  -#: ../wiki.php:2431
  -#, c-format
  -msgid "Difference between r%s and r%s"
  -msgstr ""
  -
  -#: ../wiki.php:2434
  -#, c-format
  -msgid "Difference between r%s and the current"
  -msgstr ""
  -
  -#: ../wiki.php:2607 ../locale/dummy.php:6
  -msgid "EditText"
  -msgstr ""
  -
  -#: ../wiki.php:2609
  -msgid "NotEditable"
  -msgstr ""
  -
  -#: ../wiki.php:2611 ../locale/dummy.php:6
  -msgid "ShowPage"
  -msgstr ""
  -
  -#: ../wiki.php:2612 ../locale/dummy.php:3 ../locale/dummy.php:5
  -msgid "FindPage"
  -msgstr ""
  -
  -#: ../wiki.php:3043 ../wiki.php:3046
  -msgid "Create this page"
  -msgstr ""
  -
  -#: ../wiki.php:3048
  -#, c-format
  -msgid " or click %s to fullsearch this page.\n"
  -msgstr ""
  -
  -#: ../wiki.php:3048
  -msgid "title"
  -msgstr ""
  -
  -#: ../wiki.php:3054
  -msgid " or alternativly, use one of these templates:\n"
  -msgstr ""
  -
  -#: ../wiki.php:3057 ../wikilib.php:435
  -msgid "To create your own templates, add a page with a 'Template' suffix.\n"
  -msgstr ""
  -
  -#: ../wiki.php:3114
  -#, c-format
  -msgid "You are not allowed to '%s'"
  -msgstr ""
  -
  -#: ../wiki.php:3126
  -#, c-format
  -msgid "Fail to \"%s\" !"
  -msgstr ""
  -
  -#: ../wiki.php:3129
  -msgid "Please enter the valid password"
  -msgstr ""
  -
  -#: ../wikilib.php:375
  +#: ../wikilib.php:417
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -760,202 +665,210 @@
   "no trailing white space allowed after tables or titles.<br />\n"
   msgstr ""
   
  -#: ../wikilib.php:433
  +#: ../wikilib.php:475
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   
  -#: ../wikilib.php:435
  +#: ../wikilib.php:477
  +msgid "To create your own templates, add a page with a 'Template' suffix.\n"
  +msgstr ""
  +
  +#: ../wikilib.php:477
   msgid "<br />\n"
   msgstr ""
   
  -#: ../wikilib.php:451
  +#: ../wikilib.php:493
   msgid "Skip to preview"
   msgstr ""
   
  -#: ../wikilib.php:453
  +#: ../wikilib.php:495
   msgid "ReduceEditor"
   msgstr ""
   
  -#: ../wikilib.php:456 ../locale/dummy.php:6
  +#: ../wikilib.php:498 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
  -#: ../wikilib.php:457
  +#: ../wikilib.php:499
   msgid "HelpOnEditing"
   msgstr ""
   
  -#: ../wikilib.php:474
  +#: ../wikilib.php:516
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:490
  +#: ../wikilib.php:532
   msgid "--Select Category--"
   msgstr ""
   
  -#: ../wikilib.php:496
  +#: ../wikilib.php:538
   msgid "Preview"
   msgstr ""
   
  -#: ../wikilib.php:497 ../wikilib.php:1099
  +#: ../wikilib.php:539 ../wikilib.php:1141
   msgid "Save"
   msgstr ""
   
  -#: ../wikilib.php:498
  +#: ../wikilib.php:540
   msgid "Summary of Change"
   msgstr ""
   
  -#: ../wikilib.php:521
  +#: ../wikilib.php:563
   #, c-format
   msgid "Info. for %s"
   msgstr ""
   
  -#: ../wikilib.php:531
  +#: ../wikilib.php:573
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:533
  +#: ../wikilib.php:575
   #, c-format
   msgid "%s is not valid action"
   msgstr ""
   
  -#: ../wikilib.php:535
  +#: ../wikilib.php:577
   msgid "Is it valid action ?"
   msgstr ""
   
  -#: ../wikilib.php:556
  +#: ../wikilib.php:598
   #, c-format
   msgid "File '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:558
  +#: ../wikilib.php:600
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr ""
   
  -#: ../wikilib.php:563
  +#: ../wikilib.php:605
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:565
  +#: ../wikilib.php:607
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr ""
   
  -#: ../wikilib.php:575 ../wikilib.php:577
  +#: ../wikilib.php:617 ../wikilib.php:619
   msgid "No files are selected !"
   msgstr ""
   
  -#: ../wikilib.php:595
  +#: ../wikilib.php:637
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr ""
   
  -#: ../wikilib.php:601
  +#: ../wikilib.php:643
   msgid "Please delete this file manually."
   msgstr ""
   
  -#: ../wikilib.php:603
  +#: ../wikilib.php:645
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr ""
   
  -#: ../wikilib.php:692 ../wikilib.php:1492
  +#: ../wikilib.php:734 ../wikilib.php:1538
   msgid "Use more specific text"
   msgstr ""
   
  -#: ../wikilib.php:754
  +#: ../wikilib.php:796
   msgid "Goto Editor"
   msgstr ""
   
  -#: ../wikilib.php:763
  +#: ../wikilib.php:805
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr ""
   
  -#: ../wikilib.php:768 ../wikilib.php:797
  +#: ../wikilib.php:810 ../wikilib.php:839
   #, c-format
   msgid "Preview of %s"
   msgstr ""
   
  -#: ../wikilib.php:775
  +#: ../wikilib.php:817
   msgid "Conflict error!"
   msgstr ""
   
  -#: ../wikilib.php:789
  +#: ../wikilib.php:831
   #, c-format
   msgid "Go back or return to %s"
   msgstr ""
   
  -#: ../wikilib.php:823
  +#: ../wikilib.php:832
  +msgid "No difference found"
  +msgstr ""
  +
  +#: ../wikilib.php:865
   msgid "mail does not supported by default."
   msgstr ""
   
  -#: ../wikilib.php:827
  +#: ../wikilib.php:869
   msgid "Sent notification mail."
   msgstr ""
   
  -#: ../wikilib.php:829
  +#: ../wikilib.php:871
   msgid "No subscribers found."
   msgstr ""
   
  -#: ../wikilib.php:834
  +#: ../wikilib.php:876
   #, c-format
   msgid "%s is not editable"
   msgstr ""
   
  -#: ../wikilib.php:836
  +#: ../wikilib.php:878
   #, c-format
   msgid "%s is saved"
   msgstr ""
   
  -#: ../wikilib.php:858
  +#: ../wikilib.php:900
   msgid "Nobody subscribed to this page."
   msgstr ""
   
  -#: ../wikilib.php:880
  +#: ../wikilib.php:922
   #, c-format
   msgid "%s page is modified"
   msgstr ""
   
  -#: ../wikilib.php:890
  +#: ../wikilib.php:932
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:903
  +#: ../wikilib.php:945
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:907
  +#: ../wikilib.php:949
   msgid "Mails are sent successfully"
   msgstr ""
   
  -#: ../wikilib.php:908
  +#: ../wikilib.php:950
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1090
  +#: ../wikilib.php:1132
   msgid "Make profile"
   msgstr ""
   
  -#: ../wikilib.php:1091
  +#: ../wikilib.php:1133
   msgid "password again"
   msgstr ""
   
  -#: ../wikilib.php:1102
  +#: ../wikilib.php:1144
   msgid "New password"
   msgstr ""
   
  -#: ../wikilib.php:1108
  +#: ../wikilib.php:1150
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:1499
  +#: ../wikilib.php:1545
   #, c-format
   msgid "Title search for \"%s\""
   msgstr ""
  @@ -968,6 +881,10 @@
   msgid "RecentChanges"
   msgstr ""
   
  +#: ../locale/dummy.php:3 ../locale/dummy.php:5
  +msgid "FindPage"
  +msgstr ""
  +
   #: ../locale/dummy.php:4
   msgid "TitleIndex"
   msgstr ""
  @@ -990,6 +907,14 @@
   
   #: ../locale/dummy.php:6
   msgid "UploadedFiles"
  +msgstr ""
  +
  +#: ../locale/dummy.php:6
  +msgid "EditText"
  +msgstr ""
  +
  +#: ../locale/dummy.php:6
  +msgid "ShowPage"
   msgstr ""
   
   #: ../locale/dummy.php:7
  
  
  


wkpark      04/01/09 04:17:34

  Added:       plugin/cache mysql.php
  Log:
  landing and merging with the cvs-db branch to main line
  
  Revision  Changes    Path
  1.2       +126 -0    moniwiki/plugin/cache/mysql.php
  
  
  
  


wkpark      04/01/09 04:17:37

  Added:       plugin/version CVS.php
  Log:
  landing and merging with the cvs-db branch to main line
  
  Revision  Changes    Path
  1.2       +145 -0    moniwiki/plugin/version/CVS.php
  
  
  
  


verotas     04/01/15 13:16:59

  Modified:    .        monisetup.php
  Log:
  re-redo 1.9.2.11
  
  Revision  Changes    Path
  1.13      +10 -9     moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- monisetup.php	8 Jan 2004 19:16:51 -0000	1.12
  +++ monisetup.php	15 Jan 2004 04:16:59 -0000	1.13
  @@ -1,7 +1,7 @@
   <?php
   // Copyright 2003 Won-Kyu Park <wkpark at kldp.org>. All rights reserved.
   // Distributable under GPL. See COPYING for more information.
  -// $Id: monisetup.php,v 1.12 2004/01/08 19:16:51 wkpark Exp $
  +// $Id: monisetup.php,v 1.13 2004/01/15 04:16:59 verotas Exp $
   
   class MoniConfig {
     function MoniConfig($configfile="config.php") {
  @@ -292,7 +292,7 @@
       }
     }
   
  -  if (!$config[admin_passwd]) {
  +  if (!$config['admin_passwd']) {
       print "<tr><td><b>\$admin_passwd</b></td>";
       print "<td colspan='2'><input type='password' name='newpasswd' size='40'></td></tr>\n";
     } else  {
  @@ -344,7 +344,7 @@
     $config=$Config->config;
     $rawconfig=$Config->rawconfig;
   
  -  if (!$config[admin_passwd]) {
  +  if (!$config['admin_passwd']) {
       print_warn("You have to enter your admin_password");
     }
     show_config_edit_form($config, $rawconfig);
  @@ -358,7 +358,7 @@
     $config=$Config->config;
     $rawconfig=$Config->rawconfig;
   
  -  $passwd = $Config->config[admin_passwd];
  +  $passwd = $Config->config['admin_passwd'];
     $oldpasswd = $_POST['oldpasswd'];
     $newpasswd = $_POST['newpasswd'];
     $is_valid_passwd = TRUE;
  @@ -375,10 +375,10 @@
     if ($is_valid_passwd) {
       if ($newpasswd) {
         //print_debug("setting newpasswd = '$newpasswd'");
  -      $rawconfig[admin_passwd] = $newpasswd;
  +      $rawconfig['admin_passwd'] = $newpasswd;
       } else {
         //print_debug("setting oldpasswd = '$oldpasswd'");
  -      $rawconfig[admin_passwd] = $oldpasswd;
  +      $rawconfig['admin_passwd'] = $oldpasswd;
       }
     }
   
  @@ -432,7 +432,7 @@
   
     $num=sizeof($pages);
   
  -  $SystemPages="FrontPage|RecentChanges|TitleIndex|FindPage|".
  +  $SystemPages="FrontPage|RecentChanges|TitleIndex|WordIndex|FindPage|".
     "FortuneCookies|Pages$|".
     "SystemPages|TwinPages|WikiName|SystemInfo|UserPreferences|".
     "InterMap|IsbnMap|WikiSandBox|SandBox|UploadFile|UploadedFiles|".
  @@ -591,8 +591,9 @@
   // main function
   //
   
  -function setup_main($action)
  +function setup_main()
   {
  +  $action = $_GET['action'] or $_POST['action'];
     if (!$action) {
       $action = "show";
     }
  @@ -623,7 +624,7 @@
     return;
   }
   
  -setup_main($action);
  +setup_main();
   
   // vim:ts=8:sts=2:sw=2:et
   ?>
  
  
  


wkpark      04/02/11 21:21:42

  Modified:    .        wiki.php wikilib.php
  Log:
  fixed do_raw do_recall actions
  
  Revision  Changes    Path
  1.134     +29 -37    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.133
  retrieving revision 1.134
  diff -u -r1.133 -r1.134
  --- wiki.php	11 Feb 2004 08:43:03 -0000	1.133
  +++ wiki.php	11 Feb 2004 12:21:42 -0000	1.134
  @@ -11,10 +11,10 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.133 2004/02/11 08:43:03 wkpark Exp $
  +// $Id: wiki.php,v 1.134 2004/02/11 12:21:42 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.133 $',1,-1);
  -$_release = '1.0.7';
  +$_revision = substr('$Revision: 1.134 $',1,-1);
  +$_release = '1.0.8';
   
   #ob_start("ob_gzhandler");
   
  @@ -146,7 +146,7 @@
     } else {
       return <<<FORM
   <form name='go' id='go' method='get' action='$action' onsubmit="return moin_submit();">
  -<input type='text' name='value' size='20' accesskey='s' class='goto' style='width:100' />
  +<input type='text' name='value' size='20' accesskey='s' class='goto' style='width:100px' />
   <input type='hidden' name='action' value='goto' />
   <input type='submit' name='status' value='Go' class='goto' style='width:23px;' />
   </form>
  @@ -393,7 +393,8 @@
       return array();
     } 
   
  -  foreach ($options as $key=>$val) $$key=$val;
  +  #foreach ($options as $key=>$val) $$key=$val;
  +  extract($options);
     unset($key,$val,$options);
     include($configfile);
     unset($configfile);
  @@ -401,10 +402,10 @@
     $config=get_defined_vars();
   #  print_r($config);
   
  -  if ($menu) $config['menu']=$menu;
  -  if ($icons) $config['icons']=$icons;
  -  if ($icon) $config['icon']=$icon;
  -  if ($actions) $config['actions']=$actions;
  +#  if ($menu) $config['menu']=$menu;
  +#  if ($icons) $config['icons']=$icons;
  +#  if ($icon) $config['icon']=$icon;
  +#  if ($actions) $config['actions']=$actions;
   
     return $config;
   }
  @@ -1013,36 +1014,27 @@
     }
   
     function get_raw_body($options='') {
  -    if ($this->body && !$options['rev']) {
  +    if ($this->body && !$options['rev'])
          return $this->body;
  -    }
  -#    if (!$this->exists()) return '';
   
       if ($this->rev || $options['rev']) {
  -       if ($options['rev']) $rev=$options['rev'];
  -       else $rev=$this->rev;
  -       $fp=@popen("co -x,v/ -q -p\"".$rev."\" ".$this->filename,"r");
  -       if (!$fp)
  -          return "";
  -       while (!feof($fp)) {
  -          $line=fgets($fp,2048);
  -          $out.= $line;
  -       }
  -       pclose($fp);
  -       return $out;
  +      if ($options['rev']) $rev=$options['rev'];
  +      else $rev=$this->rev;
  +      $fp=@popen("co -x,v/ -q -p\"".$rev."\" ".$this->filename,"r");
  +      if (!$fp) return "";
  +      $out='';
  +      while (!feof($fp)) $out.=fgets($fp,2048);
  +      pclose($fp);
  +      return $out;
       }
   
       $fp=@fopen($this->filename,"r");
       if (!$fp) {
  -       $out="You have no permission to see this page.\n\n";
  -       $out.="See MoniWiki/AccessControl\n";
  -       return $out;
  +      $out="You have no permission to see this page.\n\n";
  +      $out.="See MoniWiki/AccessControl\n";
  +      return $out;
       }
       $this->fsize=filesize($this->filename);
  -#    $body="";
  -#    if ($fp) { while($line=fgets($fp, 2048)) $body.=$line; }
  -#    $this->$body=implode("", file($this->filename));
  -#    $this->body=$body;
       $body=fread($fp,$this->fsize);
       fclose($fp);
       $this->body=$body;
  @@ -1846,7 +1838,7 @@
       $this->imgs_dir= qualifiedUrl($this->imgs_dir);
     }
   
  -  function send_page($body="",$options="") {
  +  function send_page($body="",$options=array()) {
       global $DBInfo;
       if ($options['fixpath']) $this->_fixpath();
   
  @@ -1861,7 +1853,7 @@
       } else {
         #$pi=$this->get_instructions(&$body);
         $pi=$this->get_instructions();
  -      $body=$this->page->get_raw_body();
  +      $body=$this->page->get_raw_body($options);
         $this->pi=$pi;
         if ($pi['#format']) {
           if ($pi['args']) $pi_line="#!".$pi['#format']." $pi[args]\n";
  @@ -3031,11 +3023,11 @@
     #print $_SERVER['REQUEST_URI'];
     $options['page']=$pagename;
   
  -  if ($action=="recall" || $action=="raw" && $rev) {
  -    $options['rev']=$rev;
  -    $page = $DBInfo->getPage($pagename,$options);
  -  } else
  -    $page = $DBInfo->getPage($pagename);
  +#  if ($action=="recall" || $action=="raw" && $rev) {
  +#    $options['rev']=$rev;
  +#    $page = $DBInfo->getPage($pagename,$options);
  +#  } else
  +  $page = $DBInfo->getPage($pagename);
   
     $formatter = new Formatter($page,$options);
   
  
  
  
  1.102     +3 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.101
  retrieving revision 1.102
  diff -u -r1.101 -r1.102
  --- wikilib.php	7 Jan 2004 02:44:02 -0000	1.101
  +++ wikilib.php	11 Feb 2004 12:21:42 -0000	1.102
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.101 2004/01/07 02:44:02 wkpark Exp $
  +// $Id: wikilib.php,v 1.102 2004/02/11 12:21:42 wkpark Exp $
   
   function find_needle($body,$needle,$count=0) {
     if (!$body) return '';
  @@ -631,14 +631,14 @@
   
   function do_raw($formatter,$options) {
     $formatter->send_header("Content-Type: text/plain",$options);
  -  print $formatter->page->get_raw_body();
  +  print $formatter->page->get_raw_body($options);
   }
   
   function do_recall($formatter,$options) {
     $formatter->send_header("",$options);
     $formatter->send_title("Rev. ".$options['rev']." ".
                                    $options['page'],"",$options);
  -  $formatter->send_page();
  +  $formatter->send_page("",$options);
     $formatter->send_footer($args,$options);
   }
   
  
  
  


advanced    04/04/06 12:35:44

  Modified:    css      Tag: BRANCH_advanced_INIT print.css
  Log:
  some improve pre.wiki class
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.2.2.1   +2 -2      moniwiki/css/print.css
  
  Index: print.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/print.css,v
  retrieving revision 1.2
  retrieving revision 1.2.2.1
  diff -u -r1.2 -r1.2.2.1
  --- print.css	16 Oct 2003 00:55:11 -0000	1.2
  +++ print.css	6 Apr 2004 03:35:44 -0000	1.2.2.1
  @@ -29,8 +29,8 @@
     padding-left:6px;
     padding-top:6px; 
     font-family:Lucida TypeWriter,monotype,lucida,fixed;font-size:14px;
  -  background-color:#000000;
  -  color:#FFD700; /* gold */
  +  background-color:#DDDDDD;
  +  color:#000000; /* black*/
   }
   
   pre.console {
  
  
  


advanced    04/04/06 12:56:33

  Added:       imgs     Tag: BRANCH_advanced_INIT moni-print.gif
  Log:
  add print icon
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +1 -0      moniwiki/imgs/Attic/moni-print.gif
  
  	<<Binary file>>
  
  


wkpark      04/04/09 03:23:46

  Modified:    plugin/processor blog.php chat.php hello.php jade.php
                        linuxdoc.php man.php python.php syntax.php vim.php
                        xslt.php xsltproc.php
  Added:       plugin/processor pic.php
  Log:
  fix <? to <?php, add a new pic processor by Kim, Jeong Yeon with small fix.
  
  Revision  Changes    Path
  1.12      +2 -2      moniwiki/plugin/processor/blog.php
  
  Index: blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/blog.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- blog.php	17 Aug 2003 13:50:54 -0000	1.11
  +++ blog.php	8 Apr 2004 18:23:44 -0000	1.12
  @@ -1,4 +1,4 @@
  -<?
  +<?php
   // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // Blog plugin for the MoniWiki
  @@ -7,7 +7,7 @@
   // Hello World
   // }}}
   // this processor is used internally by the Blog action
  -// $Id: blog.php,v 1.11 2003/08/17 13:50:54 wkpark Exp $
  +// $Id: blog.php,v 1.12 2004/04/08 18:23:44 wkpark Exp $
   
   function processor_blog($formatter,$value="",$options) {
     static $date_anchor='';
  
  
  
  1.4       +2 -2      moniwiki/plugin/processor/chat.php
  
  Index: chat.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/chat.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- chat.php	13 Jun 2003 13:30:54 -0000	1.3
  +++ chat.php	8 Apr 2004 18:23:44 -0000	1.4
  @@ -1,4 +1,4 @@
  -<?
  +<?php
   // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // sample plugin for the MoniWiki
  @@ -7,7 +7,7 @@
   // Hello World
   // }}}
   // this processor is used internally by the Blog action
  -// $Id: chat.php,v 1.3 2003/06/13 13:30:54 wkpark Exp $
  +// $Id: chat.php,v 1.4 2004/04/08 18:23:44 wkpark Exp $
   
   function processor_chat($formatter,$value="") {
     if ($value[0]=='#' and $value[1]=='!')
  
  
  
  1.3       +2 -2      moniwiki/plugin/processor/hello.php
  
  Index: hello.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/hello.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- hello.php	7 Jun 2003 06:11:24 -0000	1.2
  +++ hello.php	8 Apr 2004 18:23:44 -0000	1.3
  @@ -1,4 +1,4 @@
  -<?
  +<?php
   // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // sample plugin for the MoniWiki
  @@ -6,7 +6,7 @@
   // Usage: {{{#!hello Name
   // Hello World
   // }}}
  -// $Id: hello.php,v 1.2 2003/06/07 06:11:24 wkpark Exp $
  +// $Id: hello.php,v 1.3 2004/04/08 18:23:44 wkpark Exp $
   
   function processor_hello($formatter,$value="") {
     if ($value[0]=='#' and $value[1]=='!')
  
  
  
  1.5       +2 -2      moniwiki/plugin/processor/jade.php
  
  Index: jade.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/jade.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- jade.php	25 Nov 2003 00:53:03 -0000	1.4
  +++ jade.php	8 Apr 2004 18:23:44 -0000	1.5
  @@ -1,4 +1,4 @@
  -<?
  +<?php
   // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a docbook processor plugin for the MoniWiki
  @@ -6,7 +6,7 @@
   // Usage: {{{#!jade
   // docbook code
   // }}}
  -// $Id: jade.php,v 1.4 2003/11/25 00:53:03 wkpark Exp $
  +// $Id: jade.php,v 1.5 2004/04/08 18:23:44 wkpark Exp $
   
   function processor_jade($formatter,$value,$options=array()) {
     global $DBInfo;
  
  
  
  1.4       +2 -2      moniwiki/plugin/processor/linuxdoc.php
  
  Index: linuxdoc.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/linuxdoc.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- linuxdoc.php	10 Aug 2003 08:21:39 -0000	1.3
  +++ linuxdoc.php	8 Apr 2004 18:23:44 -0000	1.4
  @@ -1,4 +1,4 @@
  -<?
  +<?php
   // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a linuxdoc processor plugin for the MoniWiki
  @@ -6,7 +6,7 @@
   // Usage: {{{#!linuxdoc
   // linuxdoc code
   // }}}
  -// $Id: linuxdoc.php,v 1.3 2003/08/10 08:21:39 wkpark Exp $
  +// $Id: linuxdoc.php,v 1.4 2004/04/08 18:23:44 wkpark Exp $
   
   function processor_linuxdoc($formatter,$value) {
     global $DBInfo;
  
  
  
  1.2       +2 -2      moniwiki/plugin/processor/man.php
  
  Index: man.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/man.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- man.php	5 Aug 2003 13:04:06 -0000	1.1
  +++ man.php	8 Apr 2004 18:23:44 -0000	1.2
  @@ -1,9 +1,9 @@
  -<?
  +<?php
   // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a man processor plugin for the MoniWiki
   //
  -// $Id: man.php,v 1.1 2003/08/05 13:04:06 wkpark Exp $
  +// $Id: man.php,v 1.2 2004/04/08 18:23:44 wkpark Exp $
   
   function processor_man($formatter,$value="") {
     if ($value[0]=='#' and $value[1]=='!')
  
  
  
  1.5       +2 -2      moniwiki/plugin/processor/python.php
  
  Index: python.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/python.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- python.php	28 Sep 2003 08:22:59 -0000	1.4
  +++ python.php	8 Apr 2004 18:23:44 -0000	1.5
  @@ -1,4 +1,4 @@
  -<?
  +<?php
   // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a python colorizer plugin for the MoniWiki
  @@ -6,7 +6,7 @@
   // Usage: {{{#!python Name
   // print 'Hello world'
   // }}}
  -// $Id: python.php,v 1.4 2003/09/28 08:22:59 wkpark Exp $
  +// $Id: python.php,v 1.5 2004/04/08 18:23:44 wkpark Exp $
   
   function processor_python($formatter,$value="") {
   
  
  
  
  1.2       +2 -2      moniwiki/plugin/processor/syntax.php
  
  Index: syntax.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/syntax.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- syntax.php	10 Aug 2003 08:21:39 -0000	1.1
  +++ syntax.php	8 Apr 2004 18:23:44 -0000	1.2
  @@ -1,4 +1,4 @@
  -<?
  +<?php
   // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a syntax colorizer plugin using the enscript for the MoniWiki
  @@ -6,7 +6,7 @@
   // Usage: {{{#!syntax sh|c|sh|..
   // some codes
   // }}}
  -// $Id: syntax.php,v 1.1 2003/08/10 08:21:39 wkpark Exp $
  +// $Id: syntax.php,v 1.2 2004/04/08 18:23:44 wkpark Exp $
   
   function processor_syntax($formatter,$value) {
     $enscript='enscript ';
  
  
  
  1.10      +2 -2      moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- vim.php	3 Jan 2004 03:01:23 -0000	1.9
  +++ vim.php	8 Apr 2004 18:23:44 -0000	1.10
  @@ -1,4 +1,4 @@
  -<?
  +<?php
   // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a vim colorizer plugin for the MoniWiki
  @@ -6,7 +6,7 @@
   // Usage: {{{#!vim sh|c|sh|.. [number]
   // some codes
   // }}}
  -// $Id: vim.php,v 1.9 2004/01/03 03:01:23 wkpark Exp $
  +// $Id: vim.php,v 1.10 2004/04/08 18:23:44 wkpark Exp $
   
   function processor_vim($formatter,$value) {
     global $DBInfo;
  
  
  
  1.3       +2 -2      moniwiki/plugin/processor/xslt.php
  
  Index: xslt.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/xslt.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- xslt.php	10 Aug 2003 08:21:39 -0000	1.2
  +++ xslt.php	8 Apr 2004 18:23:44 -0000	1.3
  @@ -1,4 +1,4 @@
  -<?
  +<?php
   // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a xml processor plugin for the MoniWiki
  @@ -6,7 +6,7 @@
   // Usage: {{{#!xslt
   // xml codes
   // }}}
  -// $Id: xslt.php,v 1.2 2003/08/10 08:21:39 wkpark Exp $
  +// $Id: xslt.php,v 1.3 2004/04/08 18:23:44 wkpark Exp $
   
   function processor_xslt($formatter,$value) {
     global $DBInfo;
  
  
  
  1.4       +2 -2      moniwiki/plugin/processor/xsltproc.php
  
  Index: xsltproc.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/xsltproc.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- xsltproc.php	10 Aug 2003 08:21:39 -0000	1.3
  +++ xsltproc.php	8 Apr 2004 18:23:44 -0000	1.4
  @@ -1,4 +1,4 @@
  -<?
  +<?php
   // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a xml processor plugin for the MoniWiki
  @@ -6,7 +6,7 @@
   // Usage: {{{#!xsltproc
   // xml codes
   // }}}
  -// $Id: xsltproc.php,v 1.3 2003/08/10 08:21:39 wkpark Exp $
  +// $Id: xsltproc.php,v 1.4 2004/04/08 18:23:44 wkpark Exp $
   
   function processor_xsltproc($formatter,$value) {
     global $DBInfo;
  
  
  
  1.1                  moniwiki/plugin/processor/pic.php
  
  Index: pic.php
  ===================================================================
  <?php
  // Copyright 2003 by Kim Jeong Yeon <see2002 at new-type.com>
  // All rights reserved. Distributable under GPL see COPYING
  // a PIC plugin for the MoniWiki
  //
  // $Id: pic.php,v 1.1 2004/04/08 18:23:44 wkpark Exp $
  // Usage: {{{#!pic
  // some codes
  // }}}
  
  function processor_pic($formatter,$value="") {
    global $DBInfo;
  
    $GROFF="groff -e -p -ms -Tps ";
    $CONVERT="convert -transparent white -density 120x120 -crop 0x0 ";
  
    $vartmp_dir=$DBInfo->vartmp_dir;
    $cache_dir=$DBInfo->upload_dir."/PIC";
  
    if ($value[0]=='#' and $value[1]=='!')
      list($line,$value)=explode("\n",$value,2);
  
    $pic_script=$value;
  
    # print "<pre>$pic_script</pre>";
  
    $uniq=md5($pic_script);
    $outpath_pic="$vartmp_dir/$uniq.pic";
    $outpath_ps="$vartmp_dir/$uniq.ps";
    $outpath_png="$cache_dir/$uniq.png";
  
  
    if (!file_exists($cache_dir)) {
      umask(000);
      mkdir($cache_dir,0777);
      umask(022);
    }
  
    if ($formatter->refresh || !file_exists("$cache_dir/$uniq.png")) {
      # write to pic script file
      $ifp=fopen("$outpath_pic","w");
      fwrite($ifp,$pic_script);
      fclose($ifp);
  
      # convert processing
      $fp=popen("$GROFF $outpath_pic >$outpath_ps ; $CONVERT $outpath_ps $outpath_png","w");
      pclose($fp);
  
      # delete temporary files
      unlink($outpath_ps);
      unlink($outpath_pic);
    }
    return "<img class='tex' src='$DBInfo->url_prefix/$cache_dir/$uniq.png' alt='pic' />";
  }
  
  ?>
  
  
  


wkpark      04/04/30 18:25:39

  Added:       plugin/processor metapost.php
  Log:
  add a metapost plugin
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/processor/metapost.php
  
  Index: metapost.php
  ===================================================================
  <?php
  // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a metapost processor plugin for the MoniWiki
  //
  // Usage: {{{#!metapost
  // }}}
  // $Id: metapost.php,v 1.1 2004/04/30 09:25:39 wkpark Exp $
  
  function processor_metapost($formatter,$value="") {
    global $DBInfo;
  
    # site spesific variables
    $mpost="mpost";
    $dvips="dvips";
    $convert="convert -transparent white -crop 0x0 -density 120x120";
    $vartmp_dir=$DBInfo->vartmp_dir;
    $cache_dir=$DBInfo->upload_dir."/MetaPost";
    $option='-T -interaction=batchmode ';
  
    if ($value[0]=='#' and $value[1]=='!')
      list($line,$value)=explode("\n",$value,2);
  
    if (!$value) return;
  
    if (preg_match('/beginfig\(/',$value)) {
      $out='<font color=red>Don\'t use beginfig()!</font>';
      $out.="<pre>\n";
      $out.=$value;
      $out.="</pre>\n";
  
      return $out;
    }
  
    if (!file_exists($cache_dir)) {
      umask(000);
      mkdir($cache_dir,0777);
      umask(022);
    }
  
    $mp=$value;
  
    $uniq=md5($mp);
  
    $src="beginfig(1);\n$mp\nendfig;\n";
  
    if ($formatter->refresh || !file_exists("$cache_dir/$uniq.png")) {
       $fp= fopen($vartmp_dir."/$uniq.mp", "w");
       fwrite($fp, $src);
       fclose($fp);
  
       $outpath="$cache_dir/$uniq.png";
  
       # Unix specific FIXME
       $dir=getcwd();
       chdir($vartmp_dir);
       $cmd= "$mpost $option $uniq >/dev/null";
       system($cmd);
       chdir($dir);
  
       $cmd= "$convert $vartmp_dir/$uniq.1 $outpath";
       system($cmd);
  
       @copy("$vartmp_dir/$uniq.1","$cache_dir/$uniq.ps");
       unlink("$vartmp_dir/$uniq.1");
       unlink("$vartmp_dir/$uniq.mp");
       unlink("$vartmp_dir/$uniq.log");
    }
    return "<a href='$DBInfo->url_prefix/$cache_dir/$uniq.ps'><img class='tex' border='0' src='$DBInfo->url_prefix/$cache_dir/$uniq.png' alt='mp'".
           "title=\"$mp\" /></a>";
  }
  
  ?>
  
  
  


wkpark      04/06/02 10:47:05

  Modified:    .        wikihttpd.php
  Log:
  workaround M$IE bug
  
  Revision  Changes    Path
  1.2       +28 -5     moniwiki/wikihttpd.php
  
  Index: wikihttpd.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikihttpd.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- wikihttpd.php	31 Dec 2003 23:32:09 -0000	1.1
  +++ wikihttpd.php	2 Jun 2004 01:47:05 -0000	1.2
  @@ -19,7 +19,7 @@
   //  along with this program; if not, write to the Free Software
   //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
   //
  -// $Id: wikihttpd.php,v 1.1 2003/12/31 23:32:09 wkpark Exp $
  +// $Id: wikihttpd.php,v 1.2 2004/06/02 01:47:05 wkpark Exp $
   
   /*
    *  Implementation of the HTT-protocol (also known as Webserver)
  @@ -97,11 +97,18 @@
       // handle request
       while(($buf= $this->read(2048)) !== false) { 
         $request_headers.= $buf;
  -      if(preg_match("'\r\n\r\n$'s", $request_headers))
  +
  +      #if(preg_match("'\r\n\r\n$'s", $request_headers))
  +      if(strstr($request_headers,"\r\n\r\n"))
           break;
       }
  -
  -    $request_headers = split("\r\n", $request_headers);
  +    # M$IE bug workaround XXX
  +    if (!preg_match("'\r\n\r\n$'s", $request_headers)) {
  +      list($request_headers,$content) = explode("\r\n\r\n", $request_headers);
  +      $this->content=$content;
  +    }
  + 
  +    $request_headers = explode("\r\n", $request_headers);
   
       // parse
       list($request,$data) = $this->parse_request($request_headers);
  @@ -189,8 +196,9 @@
       else if(preg_match("'^(GET|POST) ([^ ]+)$'", $request[0], $matches)) {
         $matches[]='HTTP/1.0';
         print_r($matches);
  -    } else
  +    } else {
         return false;
  +    }
       
       list(, $req['REQUEST_METHOD'], $req['REQUEST_URI'], $req['SERVER_PROTOCOL']) = $matches;
       #print $request[0]."\n";
  @@ -199,6 +207,7 @@
         $req['QUERY_STRING']    = $p['QUERY_STRING'];
         $req['PATH_TRANSLATED'] = $this->condense_path($this->document_root . $req['REQUEST_URI']);      
       }
  +
       $remote_ip=getenv('REMOTE_ADDR');
       if (!$remote_ip) $req['REMOTE_ADDR']="127.0.0.1";
       else $req['REMOTE_ADDR']=$remote_ip;
  @@ -211,9 +220,23 @@
         $HTTP[$key]=$val;
       }
   
  +    #print $HTTP['CONTENT-LENGTH']."\n";
       if ($HTTP['CONTENT-LENGTH']) {
  -      $content= $this->read($HTTP['CONTENT-LENGTH']);
  +      if (strpos($HTTP['USER-AGENT'],'MSIE') > 0) {
  +        if ($this->content) {
  +          $content=$this->content;
  +          $this->content='';
  +        } else {
  +          $content= $this->read($HTTP['CONTENT-LENGTH']);
  +          # M$IE bug workaround XXX
  +          # emit trailing garbage
  +          $dummy= $this->read(1024);
  +        }
  +      } else {
  +        $content= $this->read($HTTP['CONTENT-LENGTH']);
  +      }
       }
  +
       if ($req['REQUEST_METHOD']=='POST') {
         if ($HTTP['CONTENT-TYPE']!='application/x-www-form-urlencoded') {
           $GLOBALS['HTTP_RAW_POST_DATA']=$content;
  
  
  


wkpark      04/08/01 21:57:04

  Modified:    .        wiki.php
  Log:
  add inline_latex option
  add "--del--" syntax
  add {{{#color text}}} syntax
  
  Revision  Changes    Path
  1.135     +59 -32    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.134
  retrieving revision 1.135
  diff -u -r1.134 -r1.135
  --- wiki.php	11 Feb 2004 12:21:42 -0000	1.134
  +++ wiki.php	1 Aug 2004 12:57:03 -0000	1.135
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.134 2004/02/11 12:21:42 wkpark Exp $
  +// $Id: wiki.php,v 1.135 2004/08/01 12:57:03 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.134 $',1,-1);
  +$_revision = substr('$Revision: 1.135 $',1,-1);
   $_release = '1.0.8';
   
   #ob_start("ob_gzhandler");
  @@ -71,6 +71,7 @@
   }
   
   function getProcessor($pro_name) {
  +  global $DBInfo;
     static $processors=array();
     if ($processors) return $processors[strtolower($pro_name)];
   
  @@ -78,8 +79,14 @@
     while ($file= readdir($handle)) {
       if (is_dir("plugin/processor/$file")) continue;
       $name= substr($file,0,-4);
  +    if (($tname=$DBInfo->processors[$name])) {
  +      if (!file_exists("plugin/processor/$tname.php")) $name='plain';
  +      else $name=$DBInfo->processors[$name];
  +    }
       $processors[strtolower($name)]= $name;
     }
  +
  +  #print_r($processors);
     return $processors[strtolower($pro_name)];
   }
   
  @@ -469,6 +476,9 @@
       $this->pagetype=array();
       $this->smiley='wikismiley';
   
  +    $this->inline_latex=0;
  +    $this->processors=array();
  +
       $this->purple_icon='#';
   #    $this->security_class="needtologin";
   
  @@ -580,24 +590,23 @@
         $map=array_merge($map,file($this->sistermap));
   
       # read shared intermap
  -    $shared_map=array();
  -    if (file_exists($this->shared_intermap)) {
  -      $shared_map=file($this->shared_intermap);
  -    }
  -    # merge
  -    $map=array_merge($map,$shared_map);
  +    if (file_exists($this->shared_intermap))
  +      $map=array_merge($map,file($this->shared_intermap));
   
       for ($i=0;$i<sizeof($map);$i++) {
         $line=rtrim($map[$i]);
         if (!$line || $line[0]=="#" || $line[0]==" ") continue;
         if (preg_match("/^[A-Z]+/",$line)) {
  -        $dum=split("[[:space:]]",$line);
  -        $this->interwiki[$dum[0]]=trim($dum[1]);
  -        $this->interwikirule.="$dum[0]|";
  +        $wiki=strtok($line,' ');$url=strtok(' ');
  +        $this->interwiki[$wiki]=trim($url);
  +        $this->interwikirule.="$wiki|";
  +        #$dum=split("[[:space:]]",$line);
  +        #$this->interwiki[$dum[0]]=trim($dum[1]);
  +        #$this->interwikirule.="$dum[0]|";
         }
       }
       $this->interwikirule.="Self";
  -    $this->interwiki[Self]=get_scriptname().$this->query_prefix;
  +    $this->interwiki['Self']=get_scriptname().$this->query_prefix;
     }
   
     function _getPageKey($pagename) {
  @@ -1138,6 +1147,7 @@
       $this->url_prefix= $DBInfo->url_prefix;
       $this->imgs_dir= $DBInfo->imgs_dir;
       $this->actions= $DBInfo->actions;
  +    $this->inline_latex= $DBInfo->inline_latex;
   
       if (($p=strpos($page->name,"~")))
         $this->group=substr($page->name,0,$p+1);
  @@ -1156,12 +1166,14 @@
       $this->baserule=array("/<([^\s<>])/","/`([^`' ]+)'/","/(?<!`)`([^`]*)`/",
                        "/'''([^']*)'''/","/(?<!')'''(.*)'''(?!')/",
                        "/''([^']*)''/","/(?<!')''(.*)''(?!')/",
  -                     "/\^([^ \^]+)\^(?:\s)/","/,,([^ ,]+),,(?:\s)/",
  -                     "/__([^ _]+)__(?:\s)/","/^-{4,}/");
  +                     "/\^([^ \^]+)\^(?=\s|$)/","/,,([^ ,]+),,(?=\s|$)/",
  +                     "/--([^-]+)--(?=\s|$)/",
  +                     "/__([^ _]+)__(?=\s|$)/","/^-{4,}/");
       $this->baserepl=array("&lt;\\1","&#96;\\1'","<tt class='wiki'>\\1</tt>",
                        "<b>\\1</b>","<b>\\1</b>",
                        "<i>\\1</i>","<i>\\1</i>",
                        "<sup>\\1</sup>","<sub>\\1</sub>",
  +                     "<del>\\1</del>",
                        "<u>\\1</u>","<hr class='wiki' />\n");
   
       # NoSmoke's MultiLineCell hack
  @@ -1178,7 +1190,7 @@
       }
   
       #$punct="<\"\'}\]\|;,\.\!";
  -    $punct="<\'}\]\|;\.\)\!"; # , is omitted for the WikiPedia
  +    $punct="<\'}\]\|;\.\!"; # , is omitted for the WikiPedia
       $url="wiki|http|https|ftp|nntp|news|irc|telnet|mailto|file|attachment";
       $urlrule="((?:$url):([^\s$punct]|(\.?[^\s$punct]))+)";
       #$urlrule="((?:$url):(\.?[^\s$punct])+)";
  @@ -1192,9 +1204,10 @@
       # strict but slow
       #"\b(".$DBInfo->interwikirule."):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
       #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
  -    "\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+[^\(\)<>\s\',\.:\?\!]+)|".
  -  # "(?<!\!|\[\[)\b(([A-Z]+[a-z0-9]+){2,})\b|".
  -  # "(?<!\!|\[\[)((?:\/?[A-Z]([a-z0-9]+|[A-Z]*(?=[A-Z][a-z0-9]|\b))){2,})\b|".
  +    #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+[^\(\)<>\s\',\.:\?\!]+)|".
  +    "\b([A-Z][a-zA-Z]+):([^\(\)<>\s\']+[^\(\)<>\s\',\.:\?\!]+)|".
  +    # "(?<!\!|\[\[)\b(([A-Z]+[a-z0-9]+){2,})\b|".
  +    # "(?<!\!|\[\[)((?:\/?[A-Z]([a-z0-9]+|[A-Z]*(?=[A-Z][a-z0-9]|\b))){2,})\b|".
       # WikiName rule: WikiName ILoveYou (imported from the rule of NoSmoke)
       # protect WikiName rule !WikiName
       "(?<![a-z])\!?(?:\/?[A-Z]([A-Z]+[0-9a-z]|[0-9a-z]+[A-Z])[0-9a-zA-Z]*)+\b|".
  @@ -1202,7 +1215,7 @@
       "(?<!\[)\!?\[([^\[:,<\s][^\[:,>]{1,255})\](?!\])|".
       # bracketed with double quotes ["Hello World"]
       "(?<!\[)\!?\[\\\"([^\\\"]+)\\\"\](?!\])|".
  -  # "(?<!\[)\[\\\"([^\[:,]+)\\\"\](?!\])|".
  +    # "(?<!\[)\[\\\"([^\[:,]+)\\\"\](?!\])|".
       "($urlrule)|".
       # single linkage rule ?hello ?abacus
       #"(\?[A-Z]*[a-z0-9]+)";
  @@ -1365,13 +1378,18 @@
       }
       if ($url[0]=="{") {
         $url=substr($url,3,-3);
  +      if ($url[0]=='#' and ($p=strpos($url,' '))) {
  +        $col=strtok($url,' '); $url=strtok(' ');
  +        if (!preg_match('/^#[0-9a-f]{6}$/',$col)) $col=substr($col,1);
  +        return "<font color='$col'>$url</font>";
  +      }
         return "<tt class='wiki'>$url</tt>"; # No link
       } else if ($url[0]=="[") {
         $url=substr($url,1,-1);
         return $this->macro_repl($url); # No link
       } else if ($url[0]=='$') {
         #return processor_latex($this,"#!latex\n".$url);
  -      return $this->processor_repl('latex',$url);
  +      return $this->processor_repl($this->inline_latex,$url);
       }
   
       if ($url[0]=="!") {
  @@ -1383,8 +1401,9 @@
           return $this->macro_repl('Attachment',substr($url,11));
         if (preg_match("/^mailto:/",$url)) {
           $url=str_replace("@","_at_",$url);
  +        $link=str_replace('&','&amp;',$url);
           $name=substr($url,7);
  -        return $this->icon['mailto']."<a href='$url' $attr>$name</a>";
  +        return $this->icon['mailto']."<a href='$link' $attr>$name</a>";
         } else
         if (preg_match("/^(w|[A-Z])/",$url)) { # InterWiki or wiki:
           if (strpos($url," ")) { # have a space ?
  @@ -1395,18 +1414,22 @@
         } else
         if ($force or strpos($url," ")) { # have a space ?
           list($url,$text)=explode(" ",$url,2);
  +        $link=str_replace('&','&amp;',$url);
           if (!$text) $text=$url;
  -        else if (preg_match("/^(http|ftp).*\.(png|gif|jpeg|jpg)$/i",$text))
  -          return "<a href='$url' $attr title='$url'><img border='0' alt='$url' src='$text' /></a>";
  +        else if (preg_match("/^(http|ftp).*\.(png|gif|jpeg|jpg)$/i",$text)) {
  +          $text=str_replace('&','&amp;',$text);
  +          return "<a href='$link' $attr title='$url'><img border='0' alt='$url' src='$text' /></a>";
  +        }
           list($icon,$dummy)=explode(":",$url,2);
  -        return "<img align='middle' alt='[$icon]' src='".$this->imgs_dir."/$icon.png' />". "<a $attr href='$url'>$text</a>";
  -      } else # have no space
  +        return "<img align='middle' alt='[$icon]' src='".$this->imgs_dir."/$icon.png' />". "<a $attr href='$link'>$text</a>";
  +      } # have no space
  +      $link=str_replace('&','&amp;',$url);
         if (preg_match("/^(http|https|ftp)/",$url)) {
           if (preg_match("/\.(png|gif|jpeg|jpg)$/i",$url))
  -          return "<img alt='$url' src='$url' />";
  -        return "<a $attr href='$url'>$url</a>";
  +          return "<img alt='$link' src='$url' />";
  +        return "<a $attr href='$link'>$url</a>";
         }
  -      return "<a $attr href='$url'>$url</a>";
  +      return "<a $attr href='$link'>$url</a>";
       } else {
         if ($url[0]=="?") $url=substr($url,1);
         return $this->word_repl($url,'',$attr);
  @@ -1706,6 +1729,8 @@
     function processor_repl($processor,$value,$options="") {
       if (!function_exists("processor_".$processor)) {
         $pf=getProcessor($processor);
  +      if (!$pf)
  +      return call_user_func('processor_plain',&$this,$value,$options);
         include_once("plugin/processor/$pf.php");
         $processor=$pf;
       }
  @@ -1894,9 +1919,9 @@
   
       $wordrule="({{{([^}]+)}}})|".
                 "\[\[([A-Za-z0-9]+(\(((?<!\]\]).)*\))?)\]\]|"; # macro
  -    if ($DBInfo->enable_latex) # single line latex syntax
  -      $wordrule.="\\$\s([^\\$]+)\\$(?:\s|$)|".
  -                 "\\$\\$\s([^\\$]+)\\$\\$(?:\s|$)|";
  +    if ($DBInfo->inline_latex) # single line latex syntax
  +      $wordrule.="(?<=\s|^)\\$([^\\$]+)\\$(?:\s|$)|".
  +                 "(?<=\s|^)\\$\\$([^\\$]+)\\$\\$(?:\s|$)|";
       $wordrule.=$this->wordrule;
   
       foreach ($lines as $line) {
  @@ -2016,7 +2041,7 @@
              } elseif (preg_match("/^((\d+|[aAiI])\.)(#\d+)?\s/",$line,$limatch)){
                $line=preg_replace("/^((\d+|[aAiI])\.(#\d+)?)/","<li>",$line);
                if ($indent_list[$in_li] == $indlen) $line="</li>\n".$line;
  -             $numtype=$limatch[2];
  +             $numtype=$limatch[2][0];
                if ($limatch[3])
                  $numtype.=substr($limatch[3],1);
                $indtype="ol";
  @@ -2146,6 +2171,8 @@
       #if ($in_p) $close.="</div>\n"; # </para>
       if ($in_p) $close.=$this->_div(0,&$in_div); # </para>
   
  +    # activate <del></del> tag
  +    #$text=preg_replace("/(&lt;)(\/?del>)/i","<\\2",$text);
       $text.=$close;
     
       print $text;
  
  
  


wkpark      04/08/01 21:58:00

  Modified:    .        wikilib.php
  Log:
  fixed do_goto()
  
  Revision  Changes    Path
  1.103     +14 -2     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.102
  retrieving revision 1.103
  diff -u -r1.102 -r1.103
  --- wikilib.php	11 Feb 2004 12:21:42 -0000	1.102
  +++ wikilib.php	1 Aug 2004 12:58:00 -0000	1.103
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.102 2004/02/11 12:21:42 wkpark Exp $
  +// $Id: wikilib.php,v 1.103 2004/08/01 12:58:00 wkpark Exp $
   
   function find_needle($body,$needle,$count=0) {
     if (!$body) return '';
  @@ -687,7 +687,19 @@
         }
       }
       $url=str_replace("&amp;","&",$url);
  -    $formatter->send_header(array("Status: 302","Location: ".$url),$options);
  +    if (!preg_match("/^(http:\/\/|ftp:\/\/)/",$options['url'])) {
  +       print <<<HEADER
  +<html>
  +  <head>
  +    <meta http-equiv="refresh" content="0;URL=$options[url]">
  +  </head>
  +  <body bgcolor="#FFFFFF" text="#000000">
  +  </body>
  +</html>
  +HEADER;
  +     } else {
  +       $formatter->send_header(array("Status: 302","Location: ".$url),$options);
  +     }
     } else {
        $title = _("Use more specific text");
        $formatter->send_header("",$options);
  
  
  


wkpark      04/08/01 22:02:59

  Modified:    plugin   UploadedFiles.php
  Log:
  fix for more readable file size
  
  Revision  Changes    Path
  1.5       +17 -4     moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- UploadedFiles.php	19 Dec 2003 13:54:21 -0000	1.4
  +++ UploadedFiles.php	1 Aug 2004 13:02:57 -0000	1.5
  @@ -4,7 +4,7 @@
   // a UploadedFiles plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: UploadedFiles.php,v 1.4 2003/12/19 13:54:21 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.5 2004/08/01 13:02:57 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     $list=macro_UploadedFiles($formatter,$options['page'],$options);
  @@ -71,7 +71,7 @@
      if ($key)
        $out.="<input type='hidden' name='value' value='$value' />\n";
      $out.="<table border='0' cellpadding='2'>\n";
  -   $out.="<tr><th colspan='2'>File name</th><th>Size(byte)</th><th>Date</th></tr>\n";
  +   $out.="<tr><th colspan='2'>File name</th><th>Size</th><th>Date</th></tr>\n";
      $idx=1;
      foreach ($dirs as $file) {
         $link=$formatter->link_url($file,"?action=uploadedfiles",$file);
  @@ -88,14 +88,27 @@
   
      if (!$prefix) $prefix=$DBInfo->url_prefix."/".$dir."/";
   
  +   $unit=array('Bytes','KB','MB','GB','TB');
  +
      $down_mode=substr($prefix,strlen($prefix)-1) === '=';
      foreach ($upfiles as $file) {
         if ($down_mode)
           $link=str_replace("value=","value=".rawurlencode($file),$prefix);
         else
           $link=$prefix.rawurlencode($file);
  -      $size=filesize($dir."/".$file);
  -      $date=date("Y-m-d",filemtime($dir."/".$file));
  +      $size=filesize($dir.'/'.$file);
  +
  +      $i=0;
  +      for (;$i<4;$i++) {
  +         if ($size <= 1024) {
  +            $size= round($size,2).' '.$unit[$i];
  +            break;
  +         }
  +         $size=$size/1024;
  +      }
  +      $size=round($size,2).' '.$unit[$i];
  +
  +      $date=date('Y-m-d',filemtime($dir.'/'.$file));
         $out.="<tr><td class='wiki'><input type='checkbox' name='files[$idx]' value='$file' /></td><td class='wiki'><a href='$link'>$file</a></td><td align='right' class='wiki'>$size</td><td class='wiki'>$date</td></tr>\n";
         $idx++;
      }
  
  
  


wkpark      04/08/01 22:03:48

  Modified:    plugin   EngDic.php
  Log:
  fix macro_EngDic
  
  Revision  Changes    Path
  1.2       +19 -3     moniwiki/plugin/EngDic.php
  
  Index: EngDic.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/EngDic.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- EngDic.php	10 Aug 2003 08:20:36 -0000	1.1
  +++ EngDic.php	1 Aug 2004 13:03:45 -0000	1.2
  @@ -4,10 +4,17 @@
   //
   // Usage: [[EngDic(hello)]]
   //
  -// $Id: EngDic.php,v 1.1 2003/08/10 08:20:36 wkpark Exp $
  -// vim:et:ts=2:
  +// $Id: EngDic.php,v 1.2 2004/08/01 13:03:45 wkpark Exp $
   
   function macro_EngDic($formatter,$value) {
  +  if (!$value) {
  +     return "
  +     <form method='GET'>
  +<input type='hidden' name='action' value='EngDic' />
  +<input name='value' />
  +<input type='submit' value='Get' />
  +</form>";
  +  }
     $url='http://kr.engdic.yahoo.com/search/engdic?p=';
   
     $fp=fopen($url.$value,"r");
  @@ -22,13 +29,21 @@
     }
     if (!$value) $value='wiki';
     return <<<RET
  -<a href="http://kr.engdic.yahoo.com/sound.html?p=$value&amp;soundid=$soundid"><img
  +<a target='sound' href="http://kr.engdic.yahoo.com/sound.html?p=$value&amp;soundid=$soundid"><img
   src="http://img.yahoo.co.kr/dic/sound.gif" border='0'></a>
   <a href="$url$value">$value</a>
   RET;
   
   }
   
  +function do_EngDic($formatter,$options) {
  +  $formatter->send_header('',$options);
  +  $formatter->send_title('',$options);
  +  print macro_EngDic($formatter,$options['value']);
  +  $args['noaction']=1;
  +  $formatter->send_footer($args,$options);
  +}
  +
   #function do_test($formatter,$options) {
   #  $formatter->send_header();
   #  $formatter->send_title();
  @@ -38,4 +53,5 @@
   #  return;
   #}
   
  +// vim:et:sts=4:sw=4:
   ?>
  
  
  


wkpark      04/08/01 22:16:56

  Modified:    plugin   css.php theme.php
  Log:
  fix to immediatly adapt css/theme
  
  Revision  Changes    Path
  1.5       +3 -2      moniwiki/plugin/css.php
  
  Index: css.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/css.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- css.php	1 Nov 2003 09:29:32 -0000	1.4
  +++ css.php	1 Aug 2004 13:16:56 -0000	1.5
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // css action plugin for the MoniWiki
   //
  -// $Id: css.php,v 1.4 2003/11/01 09:29:32 wkpark Exp $
  +// $Id: css.php,v 1.5 2004/08/01 13:16:56 wkpark Exp $
   
   function do_css($formatter,$options) {
     global $DBInfo;
  @@ -25,7 +25,7 @@
       # set the fake cookie
       #$HTTP_COOKIE_VARS['MONI_CSS']=$options['user_css'];
       $title="CSS Changed";
  -    #$options['css_url']=$options['user_css'];
  +    $options['css_url']=$options['user_css'];
       $msg=_("Back to UserPreferences");
     } else if ($options['save'] && $options[id] != "Anonymous" && isset($options['user_css'])) {
       # save profile
  @@ -88,4 +88,5 @@
     return $out;
   }
   
  +// vim:et:sts=2:
   ?>
  
  
  
  1.5       +13 -13    moniwiki/plugin/theme.php
  
  Index: theme.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/theme.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- theme.php	11 Aug 2003 05:19:20 -0000	1.4
  +++ theme.php	1 Aug 2004 13:16:56 -0000	1.5
  @@ -2,9 +2,8 @@
   // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // Theme plugin for the MoniWiki
  -// vim:et:ts=2:
   //
  -// $Id: theme.php,v 1.4 2003/08/11 05:19:20 wkpark Exp $
  +// $Id: theme.php,v 1.5 2004/08/01 13:16:56 wkpark Exp $
   //
   
   function do_theme($formatter,$options) {
  @@ -12,34 +11,34 @@
   
     if ($options['clear']) {
       if ($options[id]=='Anonymous') {
  -    header("Set-Cookie: MONI_THEME=dummy; expires=Tuesday, 01-Jan-1999 12:00:00 GMT; Path=".get_scriptname());
  +      header("Set-Cookie: MONI_THEME=dummy; expires=Tuesday, 01-Jan-1999 12:00:00 GMT; Path=".get_scriptname());
       } else {
         # save profile
         $udb=new UserDB($DBInfo);
  -      $userinfo=$udb->getUser($options[id]);
  +      $userinfo=$udb->getUser($options['id']);
         $userinfo->info['theme']="";
         $userinfo->info['css_url']="";
         $udb->saveUser($userinfo);
       }
       $msg="== "._("Theme cleared. Goto UserPreferences.")." ==";
     }
  -  else if ($options[theme]) {
  +  else if ($options['theme']) {
       $themedir="theme/$options[theme]";
       if (file_exists($themedir."/header.php")) { # check
  -      $options[css_url]=$DBInfo->url_prefix."/$themedir/css/default.css";
  -      if ($options[save] and $options[id]=='Anonymous') {
  -        setcookie("MONI_THEME",$options[theme],time()+60*60*24*30,
  +      $options['css_url']=$DBInfo->url_prefix."/$themedir/css/default.css";
  +      if ($options['save'] and $options['id']=='Anonymous') {
  +        setcookie("MONI_THEME",$options['theme'],time()+60*60*24*30,
                                  get_scriptname());
  -        setcookie("MONI_CSS",$options[css_url],time()+60*60*24*30,
  +        setcookie("MONI_CSS",$options['css_url'],time()+60*60*24*30,
                                  get_scriptname());
           $title="Theme is changed";
           $msg="Goto ".$formatter->link_repl("UserPreferences");
  -      } else if ($options[save] and $options[id]!='Anonymous') {
  +      } else if ($options['save'] and $options['id']!='Anonymous') {
           # save profile
           $udb=new UserDB($DBInfo);
  -        $userinfo=$udb->getUser($options[id]);
  -        $userinfo->info[theme]=$options[theme];
  -        $userinfo->info[css_url]=$options[css_url];
  +        $userinfo=$udb->getUser($options['id']);
  +        $userinfo->info['theme']=$options['theme'];
  +        $userinfo->info['css_url']=$options['css_url'];
           $udb->saveUser($userinfo);
           $msg="Goto ".$formatter->link_repl("UserPreferences");
         } else {
  @@ -98,4 +97,5 @@
     return $out;
   }
   
  +// vim:et:sts=2:
   ?>
  
  
  


wkpark      04/08/02 11:00:06

  Modified:    tools    thumbnails.sh
  Log:
  fixed #300340 by Sung-Hyuk Do
  
  Revision  Changes    Path
  1.2       +4 -4      moniwiki/tools/thumbnails.sh
  
  Index: thumbnails.sh
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/tools/thumbnails.sh,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- thumbnails.sh	10 Aug 2003 13:57:36 -0000	1.1
  +++ thumbnails.sh	2 Aug 2004 02:00:01 -0000	1.2
  @@ -1,5 +1,5 @@
   #!/bin/bash
  -# $Id: thumbnails.sh,v 1.1 2003/08/10 13:57:36 wkpark Exp $
  +# $Id: thumbnails.sh,v 1.2 2004/08/02 02:00:01 wkpark Exp $
   #
   # sh thumbnails.sh pds/Gallery
   
  @@ -7,15 +7,15 @@
   
   #SIZE=$2
   
  -IMGS=`find $1`
  +IMGS=`find $1 -maxdepth 1`
   
   echo -e "*** Make thumbnails ***"
  -if [ ! -f $1/thumbnails ]; then
  +if [ ! -d $1/thumbnails ]; then
     mkdir $1/thumbnails
   fi
   for X in $IMGS; do
     name=`basename $X`; dir=`dirname $X`;
  -  isimg=`file $X | grep -i 'image'`; [ "x$isimg" == "x" ] && continue;
  +  isimg=`file $X | grep -i 'image'`; [ "x$isimg" = "x" ] && continue;
     if [ ! -f $dir/thumbnails/$name ]; then
       echo -n " *** "
       echo "convert -scale 300x200 $X $dir/thumbnails/$name"
  
  
  


wkpark      04/08/02 11:11:36

  Modified:    plugin   BlogChanges.php
  Log:
  fixed #300221 by Kim, Jeong Yeon
  
  Revision  Changes    Path
  1.13      +14 -3     moniwiki/plugin/BlogChanges.php
  
  Index: BlogChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogChanges.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- BlogChanges.php	11 Oct 2003 20:58:52 -0000	1.12
  +++ BlogChanges.php	2 Aug 2004 02:11:35 -0000	1.13
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogChanges action plugin for the MoniWiki
   //
  -// $Id: BlogChanges.php,v 1.12 2003/10/11 20:58:52 wkpark Exp $
  +// $Id: BlogChanges.php,v 1.13 2004/08/02 02:11:35 wkpark Exp $
   
   class Blog_cache {
     function get_blogs() {
  @@ -25,17 +25,28 @@
       global $DBInfo;
       $rule="/^($date\d*)".'_2e('.join('|',$blogs).')$/';
       $logs=array();
  +
       if (!$date) $limit=10;
       else $limit=30;
  -
       #print $limit;
  +
       $handle = @opendir($DBInfo->cache_dir."/blogchanges");
       if (!$handle) return array();
   
  -    while (($file = readdir($handle)) && $limit > 0) {
  +    while (($file = readdir($handle)) !== false) {
         $fname=$DBInfo->cache_dir."/blogchanges/".$file;
         if (is_dir($fname)) continue;
  +      $filelist[] = $file;
  +    }
  +    closedir($handle);
  +
  +    rsort($filelist);
  +
  +    while ((list($key, $file) = each ($filelist)) && $limit > 0)
  +    {
  +      #echo "<b>$file</b><br>";
         if (preg_match($rule,$file,$match)) {
  +        $fname=$DBInfo->cache_dir."/blogchanges/".$file;
           $datestamp=$match[1];
           $blog=$match[2];
           $pagename=$DBInfo->keyToPagename($blog);
  
  
  


wkpark      04/08/02 11:52:58

  Modified:    plugin   Blog.php
  Log:
  add ##NoRss
  
  Revision  Changes    Path
  1.15      +5 -1      moniwiki/plugin/Blog.php
  
  Index: Blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Blog.php,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- Blog.php	5 Jan 2004 22:04:43 -0000	1.14
  +++ Blog.php	2 Aug 2004 02:52:58 -0000	1.15
  @@ -5,7 +5,7 @@
   //
   // Usage: ?action=Blog
   //
  -// $Id: Blog.php,v 1.14 2004/01/05 22:04:43 wkpark Exp $
  +// $Id: Blog.php,v 1.15 2004/08/02 02:52:58 wkpark Exp $
   // vim:et:ts=2:
   
   function updateBlogList($formatter) {
  @@ -20,6 +20,10 @@
     $log='';
     $logs='';
     foreach ($lines as $line) {
  +    if (preg_match("/^##norss/i",$line)) {
  +      #XXX $changecache->_del($key);
  +      return;
  +    }
       if (preg_match("/^({{{)?#!blog (.*)$/",$line,$match)) {
         list($dummy,$datestamp,$dummy)=explode(' ',$match[2],3);
   
  
  
  


wkpark      04/08/02 11:54:27

  Modified:    .        wiki.php
  Log:
  fixed "--del--" syntax bug
  
  Revision  Changes    Path
  1.136     +13 -6     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.135
  retrieving revision 1.136
  diff -u -r1.135 -r1.136
  --- wiki.php	1 Aug 2004 12:57:03 -0000	1.135
  +++ wiki.php	2 Aug 2004 02:54:27 -0000	1.136
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.135 2004/08/01 12:57:03 wkpark Exp $
  +// $Id: wiki.php,v 1.136 2004/08/02 02:54:27 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.135 $',1,-1);
  +$_revision = substr('$Revision: 1.136 $',1,-1);
   $_release = '1.0.8';
   
   #ob_start("ob_gzhandler");
  @@ -926,6 +926,10 @@
       fclose($fp);
     }
   
  +  function _del($key) {
  +    unlink($key);
  +  }
  +
     function fetch($pagename,$mtime="") {
       $key=$this->getKey($pagename);
       if ($this->_exists($key)) {
  @@ -1167,14 +1171,17 @@
                        "/'''([^']*)'''/","/(?<!')'''(.*)'''(?!')/",
                        "/''([^']*)''/","/(?<!')''(.*)''(?!')/",
                        "/\^([^ \^]+)\^(?=\s|$)/","/,,([^ ,]+),,(?=\s|$)/",
  -                     "/--([^-]+)--(?=\s|$)/",
  -                     "/__([^ _]+)__(?=\s|$)/","/^-{4,}/");
  +                     "/__([^ _]+)__(?=\s|$)/","/^-{4,}/",
  +                     "/--([^- ]+)--(?=\s|$)/",
  +                     );
       $this->baserepl=array("&lt;\\1","&#96;\\1'","<tt class='wiki'>\\1</tt>",
                        "<b>\\1</b>","<b>\\1</b>",
                        "<i>\\1</i>","<i>\\1</i>",
                        "<sup>\\1</sup>","<sub>\\1</sub>",
  +                     "<u>\\1</u>",
  +                     "<hr class='wiki' />\n",
                        "<del>\\1</del>",
  -                     "<u>\\1</u>","<hr class='wiki' />\n");
  +                     );
   
       # NoSmoke's MultiLineCell hack
       $this->extrarule=array("/{{\|/","/\|}}/");
  @@ -1190,7 +1197,7 @@
       }
   
       #$punct="<\"\'}\]\|;,\.\!";
  -    $punct="<\'}\]\|;\.\!"; # , is omitted for the WikiPedia
  +    $punct="<\'}\]\|\.\!"; # , is omitted for the WikiPedia
       $url="wiki|http|https|ftp|nntp|news|irc|telnet|mailto|file|attachment";
       $urlrule="((?:$url):([^\s$punct]|(\.?[^\s$punct]))+)";
       #$urlrule="((?:$url):(\.?[^\s$punct])+)";
  
  
  


wkpark      04/08/02 11:56:19

  Modified:    plugin   Attachment.php
  Log:
  enhanced macro_Attachement to accept width align etc attributes as a query string
  
  Revision  Changes    Path
  1.4       +17 -5     moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Attachment.php	11 Oct 2003 21:29:18 -0000	1.3
  +++ Attachment.php	2 Aug 2004 02:56:18 -0000	1.4
  @@ -6,7 +6,7 @@
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.3 2003/10/11 21:29:18 wkpark Exp $
  +// $Id: Attachment.php,v 1.4 2004/08/02 02:56:18 wkpark Exp $
   
   function macro_Attachment($formatter,$value) {
     global $DBInfo;
  @@ -18,13 +18,25 @@
       $pagename=$formatter->page->name;
       $key=$DBInfo->pageToKeyname($formatter->page->name);
     }
  +
  +  if (($dummy=strpos($value,'?'))) {
  +    parse_str(substr($value,$dummy+1),$attrs);
  +    $value=substr($value,0,$dummy);
  +    foreach ($attrs as $name=>$val)
  +      $attr.="$name=\"$val\" ";
  +
  +    if ($attrs['align']) $attr.='class="img'.ucfirst($attrs['align']).'" ';
  +  }
     $upload_file=$DBInfo->upload_dir."/$key/$value";
   
     if (file_exists($upload_file)) {
  -    $url=$formatter->link_url(_urlencode($pagename),"?action=download&amp;value=$value");
  -    if (preg_match("/\.(png|gif|jpeg|jpg)$/i",$upload_file))
  -      return "<span class=\"attach\"><img src='$url' alt='$value' /></span>";
  -    else
  +    if (preg_match("/\.(png|gif|jpeg|jpg)$/i",$upload_file)) {
  +      if ($key != $pagename)
  +        $url=$formatter->link_url(_urlencode($pagename),"?action=download&amp;value=$value");
  +      else
  +        $url=$DBInfo->url_prefix."/".$upload_file;
  +      return "<span class=\"imgAttach\"><img src='$url' alt='$value' $attr/></span>";
  +    } else
         return "<span class=\"attach\"><img align='middle' src='$DBInfo->imgs_dir/uploads-16.png' />".
           $formatter->link_to("?action=download&amp;value=$value",$value).'</span>';
     }
  
  
  


wkpark      04/08/02 13:39:14

  Modified:    plugin   Attachment.php
  Log:
  fixed #300338
  
  Revision  Changes    Path
  1.5       +2 -2      moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Attachment.php	2 Aug 2004 02:56:18 -0000	1.4
  +++ Attachment.php	2 Aug 2004 04:39:14 -0000	1.5
  @@ -6,7 +6,7 @@
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.4 2004/08/02 02:56:18 wkpark Exp $
  +// $Id: Attachment.php,v 1.5 2004/08/02 04:39:14 wkpark Exp $
   
   function macro_Attachment($formatter,$value) {
     global $DBInfo;
  @@ -38,7 +38,7 @@
         return "<span class=\"imgAttach\"><img src='$url' alt='$value' $attr/></span>";
       } else
         return "<span class=\"attach\"><img align='middle' src='$DBInfo->imgs_dir/uploads-16.png' />".
  -        $formatter->link_to("?action=download&amp;value=$value",$value).'</span>';
  +        $formatter->link_tag(_urlencode($pagename),"?action=download&amp;value=$value",$value).'</span>';
     }
     if ($pagename == $formatter->page->name)
       return '<span class="attach">'.$formatter->link_to("?action=UploadFile&amp;rename=$value",sprintf(_("Upload new Attachment \"%s\""),$value)).'</span>';
  
  
  


wkpark      04/08/02 13:54:38

  Modified:    plugin/processor abc.php
  Log:
  fixed #300339
  
  Revision  Changes    Path
  1.3       +2 -2      moniwiki/plugin/processor/abc.php
  
  Index: abc.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/abc.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- abc.php	15 Jul 2003 07:59:47 -0000	1.2
  +++ abc.php	2 Aug 2004 04:54:36 -0000	1.3
  @@ -3,10 +3,10 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a abc2midi processor plugin for the MoniWiki
   //
  -// Usage: {{{#!abc2midi
  +// Usage: {{{#!abc
   // blah blah
   // }}}
  -// $Id: abc.php,v 1.2 2003/07/15 07:59:47 wkpark Exp $
  +// $Id: abc.php,v 1.3 2004/08/02 04:54:36 wkpark Exp $
   
   function processor_abc($formatter="",$value="") {
     global $DBInfo;
  
  
  


wkpark      04/08/02 20:24:17

  Modified:    plugin   Attachment.php
  Log:
  more fixes
  
  Revision  Changes    Path
  1.6       +10 -2     moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Attachment.php	2 Aug 2004 04:39:14 -0000	1.5
  +++ Attachment.php	2 Aug 2004 11:24:17 -0000	1.6
  @@ -6,11 +6,14 @@
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.5 2004/08/02 04:39:14 wkpark Exp $
  +// $Id: Attachment.php,v 1.6 2004/08/02 11:24:17 wkpark Exp $
   
   function macro_Attachment($formatter,$value) {
     global $DBInfo;
  -  if (($dummy=strtok($value,',:')) and $DBInfo->hasPage($dummy)) {
  +
  +  $attr='';
  +
  +  if (($dummy=strtok($value,':')) and $DBInfo->hasPage($dummy)) {
       $key=$DBInfo->pageToKeyname($dummy);
       $value=strtok('');
       $pagename=$dummy;
  @@ -26,6 +29,11 @@
         $attr.="$name=\"$val\" ";
   
       if ($attrs['align']) $attr.='class="img'.ucfirst($attrs['align']).'" ';
  +  } else if (($dummy=strpos($value,','))) {
  +    $args=explode(',',substr($value,$dummy+1));
  +    $value=substr($value,0,$dummy);
  +    foreach ($args as $arg)
  +      $attr.="$arg ";
     }
     $upload_file=$DBInfo->upload_dir."/$key/$value";
   
  
  
  


wkpark      04/08/02 20:25:00

  Modified:    plugin/processor blog.php vim.php
  Added:       plugin/processor dot.php mimetex.php octave.php
  Log:
  add dot.php, mimetex.php, octave.php
  
  Revision  Changes    Path
  1.13      +2 -2      moniwiki/plugin/processor/blog.php
  
  Index: blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/blog.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- blog.php	8 Apr 2004 18:23:44 -0000	1.12
  +++ blog.php	2 Aug 2004 11:24:55 -0000	1.13
  @@ -7,7 +7,7 @@
   // Hello World
   // }}}
   // this processor is used internally by the Blog action
  -// $Id: blog.php,v 1.12 2004/04/08 18:23:44 wkpark Exp $
  +// $Id: blog.php,v 1.13 2004/08/02 11:24:55 wkpark Exp $
   
   function processor_blog($formatter,$value="",$options) {
     static $date_anchor='';
  @@ -121,5 +121,5 @@
     return $out;
   }
   
  -// vim:et:ts=2:
  +// vim:et:sts=2:
   ?>
  
  
  
  1.11      +2 -2      moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- vim.php	8 Apr 2004 18:23:44 -0000	1.10
  +++ vim.php	2 Aug 2004 11:24:55 -0000	1.11
  @@ -6,7 +6,7 @@
   // Usage: {{{#!vim sh|c|sh|.. [number]
   // some codes
   // }}}
  -// $Id: vim.php,v 1.10 2004/04/08 18:23:44 wkpark Exp $
  +// $Id: vim.php,v 1.11 2004/08/02 11:24:55 wkpark Exp $
   
   function processor_vim($formatter,$value) {
     global $DBInfo;
  @@ -96,5 +96,5 @@
     return $out;
   }
   
  -// vim:et:ts=2:
  +// vim:et:sts=2:
   ?>
  
  
  
  1.1                  moniwiki/plugin/processor/dot.php
  
  Index: dot.php
  ===================================================================
  <?php
  // Copyright 2003-2004 by Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a dot plugin for the MoniWiki
  //
  // $Id: dot.php,v 1.1 2004/08/02 11:24:55 wkpark Exp $
  // vim:et:ts=2:
  
  function processor_dot($formatter,$value) {
    global $DBInfo;
  
    putenv('GDFONTPATH='.getcwd().'/data');
    $dotcmd="dot";
    #$dotcmd="twopi";
    #$dotcmd="neato";
    $webdot_dir=$DBInfo->upload_dir."/Dot";
  
    if (!file_exists($webdot_dir)) {
      umask(000);
      mkdir($webdot_dir,0777);
    }
  
    $dot=$value;
  
    $md5sum=md5($dot);
    if (!file_exists($webdot_dir."/$md5sum.dot")) {
      $fp=fopen($webdot_dir."/$md5sum.dot","w");
      fwrite($fp,$dot);
      fclose($fp);
    }{
      $cmd="$dotcmd -Tpng $webdot_dir/$md5sum.dot -o $webdot_dir/$md5sum.png";
      exec($cmd,$log);
      $cmd="$dotcmd -Timap $webdot_dir/$md5sum.dot -o $webdot_dir/$md5sum.map";
      exec($cmd,$log);
    }
  
    return "<a href='$DBInfo->url_prefix/$webdot_dir/$md5sum.map'><img border='0' src='$DBInfo->url_prefix/$webdot_dir/$md5sum.png' ismap /></a>\n";
  }
  
  ?>
  
  
  
  1.1                  moniwiki/plugin/processor/mimetex.php
  
  Index: mimetex.php
  ===================================================================
  <?php
  // Copyright 2003,2004 by Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a Echo processor plugin for the MoniWiki
  //
  // $Id: mimetex.php,v 1.1 2004/08/02 11:24:55 wkpark Exp $
  
  function processor_mimetex($formatter,$value) {
    global $DBInfo;
    $value=escapeshellarg($value);
    preg_match('/^\'\s*\$+([^\$]*)\$+\s*\'/',$value,$match);
    $tex=$match[1];
    return '<img src=\''.$DBInfo->url_prefix.'/mimetex.cgi?'.$tex.'\' alt=\''.
      str_replace('\'','&#039;',$tex).'\' />';
  }
  // vim:et:sts=2:sw=2:
  ?>
  
  
  
  1.1                  moniwiki/plugin/processor/octave.php
  
  Index: octave.php
  ===================================================================
  <?php
  // Copyright 2003,2004 by Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a octave processor plugin for the MoniWiki
  //
  // Usage: {{{#!octave
  // code..
  // }}}
  // $Id: octave.php,v 1.1 2004/08/02 11:24:55 wkpark Exp $
  
  function processor_octave($formatter="",$value="") {
    global $DBInfo;
  
    if(getenv("OS")=="Windows_NT")
      $octave="woctave"; # Win32
    else
      #$octave="octave -q -H --no-init-file --no-line-editing -f ";
      $octave="octave -q -H -f ";
  
    $vartmp_dir=$DBInfo->vartmp_dir;
    $cache_dir=$DBInfo->upload_dir."/Octave";
  
    if ($value[0]=='#' and $value[1]=='!')
      list($line,$value)=explode("\n",$value,2);
  
    $plt=$value;
  
  # a sample for testing
  #  $plt='
  #set term gif
  #!  ls
  #plot sin(x)
  #';
  
    # normalize plt
    $plt="\n".$plt."\n";
    $plt=preg_replace("/\s*;\s*\n/",";\n",$plt);
    $plt=preg_replace("/\n\s*![^\n]+\n/","\n",$plt); # strip shell commands
    $plt=preg_replace("/[ ]+/"," ",$plt);
    $plt=preg_replace("/\ngset?\s+(t|o|si).*\n/", "\n",$plt);
    
    #print "<pre>$plt</pre>";
  
    $uniq=md5($plt);
  
    $outpath="$cache_dir/$uniq.png";
  
    $src="
  gset size 0.5,0.6
  gset term png
  gset output '$outpath'
  $plt
  ";
  
    if (!file_exists($cache_dir)) {
      umask(000);
      mkdir($cache_dir,0777);
      umask(022);
    }
  
    if ($formatter->refresh || !file_exists("$cache_dir/$uniq.png")) {
  
       $flog=tempnam($vartmp_dir,"OCTAVE");
       #
       # for Win32 woctave.exe
       #
       if(getenv("OS")=="Windows_NT") {
         $finp=tempnam($vartmp_dir,"OCTAVE");
         $ifp=fopen($finp,"w");
         fwrite($ifp,$src);
         fclose($ifp);
  
         $cmd= "$octave < $finp > $flog";
         $fp=system($cmd);
         $log=join(file($flog),"");
         unlink($flog);
         unlink($finp);
       } else {
         #
         # Unix
         #
         $cmd= "$octave 2> $flog";
         $fp=popen($cmd,"w");
         fwrite($fp,$src);
         pclose($fp);
         $log=implode('',file($flog));
         #if ($log) unlink($outpath);
         unlink($flog);
       }
  
       if ($log)
          $log ="<pre style='background-color:black;color:gold'>$log</pre>\n";
    }
    return $log."<img src='$DBInfo->url_prefix/$cache_dir/$uniq.png' alt='octave' />";
  }
  
  // vim:et:sts=2:
  ?>
  
  
  


wkpark      04/08/02 21:02:19

  Modified:    plugin   ISBN.php
  Log:
  support img attributes
  
  Revision  Changes    Path
  1.2       +18 -4     moniwiki/plugin/ISBN.php
  
  Index: ISBN.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/ISBN.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ISBN.php	15 Jul 2003 07:16:45 -0000	1.1
  +++ ISBN.php	2 Aug 2004 12:02:18 -0000	1.2
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a ISBN macro plugin for the MoniWiki
   //
  -// $Id: ISBN.php,v 1.1 2003/07/15 07:16:45 wkpark Exp $
  +// $Id: ISBN.php,v 1.2 2004/08/02 12:02:18 wkpark Exp $
   
   function macro_ISBN($formatter="",$value="") {
     $ISBN_MAP="IsbnMap";
  @@ -13,7 +13,7 @@
   EOS;
   
     $DEFAULT_ISBN="Amazon";
  -  $re_isbn="/([0-9\-]{9,}[xX]?)(?:\s*,\s*)?([A-Za-z]*)?(?:\s*,\s*)?(noimg)?/";
  +  $re_isbn="/([0-9\-]{9,}[xX]?)(?:\s*,\s*)?([A-Z][A-Za-z]*)?(?:\s*,\s*)?(.*)?/";
   
     $test=preg_match($re_isbn,$value,$match);
     if ($test === false)
  @@ -27,6 +27,20 @@
       else $lang=$match[2];
     } else $lang=$DEFAULT_ISBN;
   
  +  $attr='';
  +  if ($match[3]) {
  +    $args=explode(",",$match[3]);
  +    foreach ($args as $arg) {
  +      if ($arg == "noimg") $noimg=1;
  +      else {
  +        $name=strtok($arg,'=');
  +        $val=strtok(' ');
  +        $attr.=$name.'="'.$val.'" ';
  +        if ($name == 'align') $attr.='class="img'.ucfirst($val).'" ';
  +      }
  +    }
  +  }
  +
     $list= $DEFAULT;
     $map= new WikiPage($ISBN_MAP);
     if ($map->exists()) $list.=$map->get_raw_body();
  @@ -69,11 +83,11 @@
           $imglink=str_replace('$ISBN2', $isbn2, $imglink);
     }
   
  -  if ($match[3] && $match[3] == 'noimg')
  +  if ($noimg)
        return $formatter->icon['www']."[<a href='$booklink'>ISBN-$isbn2</a>]";
     else
        return "<a href='$booklink'><img src='$imglink' border='1' title='$lang".
  -       ":ISBN-$isbn' alt='[ISBN-$isbn2]'></a>";
  +       ":ISBN-$isbn' alt='[ISBN-$isbn2]' $attr /></a>";
   }
   
   ?>
  
  
  


wkpark      04/08/02 21:57:43

  Added:       plugin   Play.php
  Log:
  add new Play macro (#300309)
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/Play.php
  
  Index: Play.php
  ===================================================================
  <?php
  // Copyright 2003,2004 by Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a simple Play macro plugin for the MoniWiki
  //
  // Usage: [[Play(http://blah.net/blah.mp3)]]
  //
  // $Id: Play.php,v 1.1 2004/08/02 12:57:43 wkpark Exp $
  
  function macro_Play($formatter,$value) {
    preg_match("/(^[^,]+)(\s*,\s*)?$/",$value,$match);
    if (!$match) return '';
  
    $media=$match[1];
    if ($match[3]) {
      $attr='';
      list($x,$y)=explode(',',$match[3]);
    }
  
    if (preg_match("/(wmv|mpeg4|avi|asf)$/",$media)) {
      $classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95";
      $type='type="application/x-mplayer2"';
      $attr='width="320" height="280"';
      $params="<param name='FileName' value='$media'>\n".
        "<param name='AutoStart' value='False'>\n".
        "<param name='ShowControls' value='True'>";
    } else if (preg_match("/(wav|mp3|ogg)$/",$media)) {
      $classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B";
      $attr='codebase="http://www.apple.com/qtactivex/qtplugin.cab" height="30"';
      $params="<param name='src' value='$media'>\n".
        "<param name='AutoStart' value='True'>";
    }
  
    return <<<OBJECT
  <object classid="$classid" $type $attr>
  $params
  <param name="AutoRewind" value="True">
  <embed $type src="$media" $attr></embed>
  </object>
  OBJECT;
  }
  
  // vim:et:sts=2:
  ?>
  
  
  


wkpark      04/08/02 22:02:18

  Modified:    plugin   Include.php
  Log:
  fixed #300295 by iolo
  
  Revision  Changes    Path
  1.2       +9 -4      moniwiki/plugin/Include.php
  
  Index: Include.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Include.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Include.php	15 Aug 2003 21:30:36 -0000	1.1
  +++ Include.php	2 Aug 2004 13:02:16 -0000	1.2
  @@ -4,7 +4,7 @@
   // a Include macro for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: Include.php,v 1.1 2003/08/15 21:30:36 wkpark Exp $
  +// $Id: Include.php,v 1.2 2004/08/02 13:02:16 wkpark Exp $
   
   function macro_Include($formatter,$value="") {
     global $DBInfo;
  @@ -12,11 +12,16 @@
   
   #  $savelinks=$formatter->pagelinks; # don't update pagelinks with Included files
   
  -  preg_match("/([^'\",]+)(?:\s*,\s*)?(\"[^\"]*\"|'[^']*')?$/",$value,$match);
  +  preg_match("/([^'\",]+)(?:\s*,\s*)?(\"[^\"]*\"|'[^']*')?(?:\s*,\s*)?([0-9]+)?$/",$value,$match);
     if ($match) {
       $value=trim($match[1]);
  -    if ($match[2])
  -      $title="=== ".substr($match[2],1,-1)." ===\n";
  +    if ($match[2]) {
  +      if ($match[3])
  +        $level = $match[3];
  +      else
  +        $level = 3;
  +      $title=str_repeat("=", $level)." ".substr($match[2],1,-1)." ".str_repeat("=", $level)."\n";
  +    }
     }
   
     if ($value and !in_array($value, $included) and $DBInfo->hasPage($value)) {
  
  
  


wkpark      04/08/02 22:58:03

  Modified:    .        wikilib.php
  Log:
  fixed #300270 by hhyoon
  
  Revision  Changes    Path
  1.104     +15 -15    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.103
  retrieving revision 1.104
  diff -u -r1.103 -r1.104
  --- wikilib.php	1 Aug 2004 12:58:00 -0000	1.103
  +++ wikilib.php	2 Aug 2004 13:58:03 -0000	1.104
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.103 2004/08/01 12:58:00 wkpark Exp $
  +// $Id: wikilib.php,v 1.104 2004/08/02 13:58:03 wkpark Exp $
   
   function find_needle($body,$needle,$count=0) {
     if (!$body) return '';
  @@ -891,13 +891,13 @@
     $mailto=join(", ",$subs);
     $subject="[".$DBInfo->sitename."] ".sprintf(_("%s page is modified"),$options[page]);
    
  -  $mailheaders = "Return-Path: $from\r\n";
  -  $mailheaders.= "From: $from\r\n";
  -  $mailheaders.= "X-Mailer: MoniWiki form-mail interface\r\n";
  -
  -  $mailheaders.= "MIME-Version: 1.0\r\n";
  -  $mailheaders.= "Content-Type: text/plain; charset=$DBInfo->charset\r\n";
  -  $mailheaders.= "Content-Transfer-Encoding: 8bit\r\n\r\n";
  +  $mailheaders = "Return-Path: $from\n";
  +  $mailheaders.= "From: $from\n";
  +  $mailheaders.= "X-Mailer: MoniWiki form-mail interface\n";
  +
  +  $mailheaders.= "MIME-Version: 1.0\n";
  +  $mailheaders.= "Content-Type: text/plain; charset=$DBInfo->charset\n";
  +  $mailheaders.= "Content-Transfer-Encoding: 8bit\n\n";
   
     $body=sprintf(_("You have subscribed to this wiki page on \"%s\" for change notification.\n\n"),$DBInfo->sitename);
     $body.="-------- $options[page] ---------\n";
  @@ -934,13 +934,13 @@
     $email=$options['email'];
     $subject=$options['subject'];
   
  -  $mailheaders = "Return-Path: $from\r\n";
  -  $mailheaders.= "From: $from\r\n";
  -  $mailheaders.= "X-Mailer: MoniWiki form-mail interface\r\n";
  -
  -  $mailheaders.= "MIME-Version: 1.0\r\n";
  -  $mailheaders.= "Content-Type: text/plain; charset=$DBInfo->charset\r\n";
  -  $mailheaders.= "Content-Transfer-Encoding: 8bit\r\n\r\n";
  +  $mailheaders = "Return-Path: $from\n";
  +  $mailheaders.= "From: $from\n";
  +  $mailheaders.= "X-Mailer: MoniWiki form-mail interface\n";
  +
  +  $mailheaders.= "MIME-Version: 1.0\n";
  +  $mailheaders.= "Content-Type: text/plain; charset=$DBInfo->charset\n";
  +  $mailheaders.= "Content-Transfer-Encoding: 8bit\n\n";
   
     mail($email,$subject,$body,$mailheaders);
   }
  
  
  


wkpark      04/08/03 20:18:45

  Modified:    .        wiki.php
  Log:
  add $external_target, $url_schemas options
  link rel enhancement
  
  Revision  Changes    Path
  1.137     +36 -13    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.136
  retrieving revision 1.137
  diff -u -r1.136 -r1.137
  --- wiki.php	2 Aug 2004 02:54:27 -0000	1.136
  +++ wiki.php	3 Aug 2004 11:18:45 -0000	1.137
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.136 2004/08/02 02:54:27 wkpark Exp $
  +// $Id: wiki.php,v 1.137 2004/08/03 11:18:45 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.136 $',1,-1);
  +$_revision = substr('$Revision: 1.137 $',1,-1);
   $_release = '1.0.8';
   
   #ob_start("ob_gzhandler");
  @@ -1166,6 +1166,11 @@
       $this->themedir= dirname(__FILE__);
       $this->set_theme($options['theme']);
   
  +    $this->ex_target='';
  +    $this->ex_bra="<span class='externalLink'>(";
  +    $this->ex_ket=")</span>";
  +    if ($DBInfo->external_target) $this->ex_target='target="_blank" ';
  +
       #$this->baserule=array("/<([^\s][^>]*)>/","/`([^`]*)`/",
       $this->baserule=array("/<([^\s<>])/","/`([^`' ]+)'/","/(?<!`)`([^`]*)`/",
                        "/'''([^']*)'''/","/(?<!')'''(.*)'''(?!')/",
  @@ -1197,8 +1202,9 @@
       }
   
       #$punct="<\"\'}\]\|;,\.\!";
  -    $punct="<\'}\]\|\.\!"; # , is omitted for the WikiPedia
  +    $punct="<\'}\]\|;\.\!"; # , is omitted for the WikiPedia
       $url="wiki|http|https|ftp|nntp|news|irc|telnet|mailto|file|attachment";
  +    if ($DBInfo->url_schemas) $url.='|'.$DBInfo->url_schemas;
       $urlrule="((?:$url):([^\s$punct]|(\.?[^\s$punct]))+)";
       #$urlrule="((?:$url):(\.?[^\s$punct])+)";
       #$urlrule="((?:$url):[^\s$punct]+(\.?[^\s$punct]+)+\s?)";
  @@ -1411,7 +1417,8 @@
           $link=str_replace('&','&amp;',$url);
           $name=substr($url,7);
           return $this->icon['mailto']."<a href='$link' $attr>$name</a>";
  -      } else
  +      }
  +
         if (preg_match("/^(w|[A-Z])/",$url)) { # InterWiki or wiki:
           if (strpos($url," ")) { # have a space ?
             $dum=explode(" ",$url,2);
  @@ -1423,20 +1430,22 @@
           list($url,$text)=explode(" ",$url,2);
           $link=str_replace('&','&amp;',$url);
           if (!$text) $text=$url;
  -        else if (preg_match("/^(http|ftp).*\.(png|gif|jpeg|jpg)$/i",$text)) {
  -          $text=str_replace('&','&amp;',$text);
  -          return "<a href='$link' $attr title='$url'><img border='0' alt='$url' src='$text' /></a>";
  +        else {
  +          if (preg_match("/^(http|ftp).*\.(png|gif|jpeg|jpg)$/i",$text)) {
  +            $text=str_replace('&','&amp;',$text);
  +            return "<a href='$link' $attr $this->ex_target title='$url'><img border='0' alt='$url' src='$text' /></a>";
  +          }
  +          $external=$this->ex_bra.$url.$this->ex_ket;
           }
           list($icon,$dummy)=explode(":",$url,2);
  -        return "<img align='middle' alt='[$icon]' src='".$this->imgs_dir."/$icon.png' />". "<a $attr href='$link'>$text</a>";
  +        return "<img align='middle' alt='[$icon]' src='".$this->imgs_dir."/$icon.png' />". "<a class='externalLink' $attr $this->ex_target href='$link'>$text</a>".$external;
         } # have no space
         $link=str_replace('&','&amp;',$url);
         if (preg_match("/^(http|https|ftp)/",$url)) {
           if (preg_match("/\.(png|gif|jpeg|jpg)$/i",$url))
             return "<img alt='$link' src='$url' />";
  -        return "<a $attr href='$link'>$url</a>";
         }
  -      return "<a $attr href='$link'>$url</a>";
  +      return "<a class='externalLink' $attr href='$link' $this->ex_target>$url</a>";
       } else {
         if ($url[0]=="?") $url=substr($url,1);
         return $this->word_repl($url,'',$attr);
  @@ -1569,6 +1578,7 @@
   
       $url=$this->link_url(_rawurlencode($page)); # XXX
       $page=urldecode($page); # XXX
  +    #$page=rawurldecode($page); # C++
       if (isset($this->pagelinks[$page])) {
         $idx=$this->pagelinks[$page];
         switch($idx) {
  @@ -2515,6 +2525,11 @@
         $this->set_origin($this->page->name);
   
       if (!$plain) {
  +      # find upper page
  +      $pos=strrpos($this->page->name,"/");
  +      if ($pos > 0) $upper=substr($this->page->urlname,0,$pos);
  +      else if ($this->group) $upper=_urlencode(substr($this->group,0,-1));
  +
         if ($this->pi['#keywords'])
           $keywords='<meta name="keywords" content="'.$this->pi['#keywords'].'" />';
         else if ($DBInfo->use_keywords) {
  @@ -2532,10 +2547,18 @@
     $DBInfo->metatags
     $keywords
   EOS;
  -  print "  <title>$DBInfo->sitename: ".$this->page->title."</title>\n";
  +      print "  <title>$DBInfo->sitename: ".$this->page->title."</title>\n";
  +      if ($upper)
  +        print '  <link rel="Up" href="'.$this->link_url($upper)."\" />\n";
  +      $raw_url=$this->link_url($this->page->urlname,"?action=raw");
  +      $print_url=$this->link_url($this->page->urlname,"?action=print");
  +      print '  <link rel="Alternate" title="Wiki Markup" href="'.
  +        $raw_url."\" />\n";
  +      print '  <link rel="Alternate" media="print" title="Print View" href="'.
  +        $print_url."\" />\n";
         if ($options['css_url'])
  -         print '<link rel="stylesheet" type="text/css" href="'.
  -               $options['css_url'].'"/>';
  +        print '  <link rel="stylesheet" type="text/css" media="screen" href="'.
  +          $options['css_url'].'" />';
   # default CSS
         else print <<<EOS
   <style type="text/css">
  
  
  


wkpark      04/08/03 20:19:50

  Modified:    plugin   userform.php
  Log:
  fix a message
  
  Revision  Changes    Path
  1.7       +2 -2      moniwiki/plugin/userform.php
  
  Index: userform.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/userform.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- userform.php	5 Jan 2004 22:07:16 -0000	1.6
  +++ userform.php	3 Aug 2004 11:19:50 -0000	1.7
  @@ -4,7 +4,7 @@
   // a userform action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: userform.php,v 1.6 2004/01/05 22:07:16 wkpark Exp $
  +// $Id: userform.php,v 1.7 2004/08/03 11:19:50 wkpark Exp $
   
   function do_userform($formatter,$options) {
     global $DBInfo;
  @@ -59,7 +59,7 @@
         }
       } else {
         if ($options['login_id'])
  -        $title= sprintf(_("\"%s\" is not exists on this wiki !"),$options['login_id']);
  +        $title= sprintf(_("\"%s\" does not exists on this wiki !"),$options['login_id']);
         else
           $title= _("Make new ID on this wiki");
        $form=macro_UserPreferences($formatter,'',$options);
  
  
  


wkpark      04/08/03 20:23:23

  Modified:    plugin   login.php
  Log:
  remove 'font' tags and add CSS id
  
  Revision  Changes    Path
  1.5       +9 -6      moniwiki/plugin/login.php
  
  Index: login.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/login.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- login.php	22 Aug 2003 23:55:38 -0000	1.4
  +++ login.php	3 Aug 2004 11:23:23 -0000	1.5
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Login]]
   //
  -// $Id: login.php,v 1.4 2003/08/22 23:55:38 wkpark Exp $
  +// $Id: login.php,v 1.5 2004/08/03 11:23:23 wkpark Exp $
   
   function macro_login($formatter,$value="",$options="") {
     global $DBInfo;
  @@ -23,28 +23,31 @@
   
     $login=_("Login:");
     $pass=_("Password:");
  -  $button=_("Login");
     $join=_("Join");
   
     if ($user->id == 'Anonymous')
     return <<<LOGIN
  +<div id='wikiLogin'>
   <form method='post' action='$urlpage'>
   <input type="hidden" name="action" value="userform" />
  -<table border='0' cellpadding='0' cellspacing='0'>
  -<tr><td align='right'><font size='-1'>$login</font></td><td><input name='login_id' size='10' /></td></tr>
  -<tr><td align='right'><font size='-1'>$pass</font></td><td><input name='password' type='password' size='10' /></td></tr>
  -<tr><td align='right'><a href='$url'>$join</a></td><td><input type='submit' value='$button' /></td></tr>
  +<table border='0' cellpadding='2' cellspacing='0'>
  +<tr><td align='right'>$login</td><td><input name='login_id' size='10' /></td></tr>
  +<tr><td align='right'>$pass</td><td><input name='password' type='password' size='10' /></td></tr>
  +<tr><td align='right'><a href='$url'>$join</a></td><td><input type='submit' value='OK' /></td></tr>
   </table>
   </form>
  +</div>
   LOGIN;
   
     $button=_("Logout");
     $option=_("UserPreferences");
     return <<<LOGOUT
  +<div id='wikiLogin'>
   <form method='post' action='$url'>
   <input type="hidden" name="action" value="userform" />
   <a href='$url'>$option</a> or <input type='submit' name="logout" value="$button"/>
   </form>
  +</div>
   LOGOUT;
   }
   
  
  
  


wkpark      04/08/03 21:23:03

  Modified:    .        wiki.php
  Log:
  fixed #300345
  
  Revision  Changes    Path
  1.138     +9 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.137
  retrieving revision 1.138
  diff -u -r1.137 -r1.138
  --- wiki.php	3 Aug 2004 11:18:45 -0000	1.137
  +++ wiki.php	3 Aug 2004 12:23:02 -0000	1.138
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.137 2004/08/03 11:18:45 wkpark Exp $
  +// $Id: wiki.php,v 1.138 2004/08/03 12:23:02 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.137 $',1,-1);
  +$_revision = substr('$Revision: 1.138 $',1,-1);
   $_release = '1.0.8';
   
   #ob_start("ob_gzhandler");
  @@ -1545,7 +1545,13 @@
       } else
         #$page=preg_replace("/\s+/","",$word); # concat words
         $page=normalize($word); # concat words
  -    if ($text) $word=$text;
  +    if ($text) {
  +      if (preg_match("/^(http|ftp).*\.(png|gif|jpeg|jpg)$/i",$text)) {
  +        $text=str_replace('&','&amp;',$text);
  +        $word="<img border='0' alt='$word' src='$text' /></a>";
  +      } else
  +        $word=$text;
  +    }
   
       # User namespace extension
       if ($page[0]=='~' and ($p=strpos($page,'/'))) {
  
  
  


wkpark      04/08/06 13:30:13

  Modified:    plugin/processor vim.php
  Log:
  fixed for Windows
  
  Revision  Changes    Path
  1.12      +12 -10    moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- vim.php	2 Aug 2004 11:24:55 -0000	1.11
  +++ vim.php	6 Aug 2004 04:30:09 -0000	1.12
  @@ -6,7 +6,7 @@
   // Usage: {{{#!vim sh|c|sh|.. [number]
   // some codes
   // }}}
  -// $Id: vim.php,v 1.11 2004/08/02 11:24:55 wkpark Exp $
  +// $Id: vim.php,v 1.12 2004/08/06 04:30:09 wkpark Exp $
   
   function processor_vim($formatter,$value) {
     global $DBInfo;
  @@ -52,11 +52,11 @@
     if(getenv("OS")=="Windows_NT") {
       $tohtml='\%VIMRUNTIME\%\\syntax\\2html.vim';
       $vim="gvim"; # Win32
  -    $stdout="CON";
  +    $fout="CON";
     } else {
       $tohtml='\$VIMRUNTIME/syntax/2html.vim';
       $vim="vim";
  -    $stdout="/dev/stdout";
  +    $fout="/dev/stdout";
     }  
   
   # simple sample
  @@ -75,15 +75,17 @@
   
     $cmd= "$vim -T xterm -e -s $tmpf ".
           ' +"syntax on " +"set syntax='.$type.'" '.$option.
  -        ' +"so '.$tohtml.'" +"wq! '.$stdout.'" +q';
  +        ' +"so '.$tohtml.'" +"wq! '.$fout.'" +q';
   
  -  $fp=popen($cmd,"r");
  -
  -  while($s = fgets($fp, 1024)) {
  -    $out.= $s;
  +  if(getenv("OS")=="Windows_NT") {
  +    system($cmd);
  +    $out=join(file($fout),"");
  +    unlink($fout);
  +  } else {
  +    $fp=popen($cmd,"r");
  +    while($s = fgets($fp, 1024)) $out.= $s;
  +    pclose($fp);
     }
  -
  -  pclose($fp);
     unlink($tmpf);
   
     $out=preg_replace("/<title>.*title>|<\/?head>|<\/?html>|<meta.*>|<\/?body.*>/","", $out);
  
  
  


wkpark      04/08/07 03:57:19

  Modified:    plugin/processor vim.php
  Log:
  fix last changes
  
  Revision  Changes    Path
  1.13      +2 -2      moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- vim.php	6 Aug 2004 04:30:09 -0000	1.12
  +++ vim.php	6 Aug 2004 18:57:19 -0000	1.13
  @@ -6,7 +6,7 @@
   // Usage: {{{#!vim sh|c|sh|.. [number]
   // some codes
   // }}}
  -// $Id: vim.php,v 1.12 2004/08/06 04:30:09 wkpark Exp $
  +// $Id: vim.php,v 1.13 2004/08/06 18:57:19 wkpark Exp $
   
   function processor_vim($formatter,$value) {
     global $DBInfo;
  @@ -52,7 +52,7 @@
     if(getenv("OS")=="Windows_NT") {
       $tohtml='\%VIMRUNTIME\%\\syntax\\2html.vim';
       $vim="gvim"; # Win32
  -    $fout="CON";
  +    $fout=tempnam("/tmp","OUT");
     } else {
       $tohtml='\$VIMRUNTIME/syntax/2html.vim';
       $vim="vim";
  
  
  


wkpark      04/08/11 19:35:11

  Modified:    css      black.css blog.css bw.css cream.css darkkhaki.css
                        darkred.css default.css gray.css green.css iolo.css
                        khaki.css log.css matrix.css moinmoin.css nsmk.css
                        olive.css print.css redandblack.css royalblue.css
                        seagreen.css sky.css white.css wood.css
  Log:
  fixed #300299, add #imageLeft,#imageRight
  
  Revision  Changes    Path
  1.4       +23 -9     moniwiki/css/black.css
  
  Index: black.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/black.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- black.css	16 Nov 2003 10:21:13 -0000	1.3
  +++ black.css	11 Aug 2004 10:35:07 -0000	1.4
  @@ -13,15 +13,15 @@
     text-decoration: none;
   }
   
  -tt.wiki {font-family:Lucida Typewriter,fixed,lucida,fixed;font-size:12px;}
  +tt.wiki {font-family:Lucida Typewriter,lucida,monospace;font-size:12px;}
   tt.foot {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
   }
   
   tt.sister {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
     text-decoration: none;
  @@ -30,7 +30,7 @@
   pre.wiki {
     padding-left:6px;
     padding-top:6px; 
  -  font-family:Lucida TypeWriter,monotype,lucida,fixed;font-size:14px;
  +  font-family:Lucida TypeWriter,monotype,lucida,monospace;font-size:14px;
     background-color:#000000;
     color:#FFD700; /* gold */
   }
  @@ -41,7 +41,7 @@
     white-space: -pre-wrap; /* */
     white-space: -moz-pre-wrap; 
     white-space: -o-pre-wrap; 
  -  font-family:Georgia,monotype,lucida,fixed;font-size:14px;
  +  font-family:Georgia,monotype,lucida,monospace;font-size:14px;
     /* background-color:#F7F8E6; */
     background-color: #22516C;
   }
  @@ -68,7 +68,7 @@
   }
   
   h1,h2,h3,h4,h5 {
  -  font-family:Tahoma;
  +  font-family:Tahoma,sans-serif;
   /* background-color:#E07B2A; */
     padding-left:6px;
     border-bottom:1px solid #999;
  @@ -86,21 +86,21 @@
   }
   
   div.diff-added {
  -   font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +   font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
      font-size:12px;
      background-color:#B0FFB0;
      color:black;
   }
   
   div.diff-removed {
  -   font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +   font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
      font-size:12px;
      background-color:#E9EAB8;
      color:black;
   }
   
   div.diff-sep {
  -   font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +   font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
      font-size:12px;
      background-color:#000000;
      color:#FFD700; /* gold */
  @@ -185,4 +185,18 @@
   div.wikiPre i,div.wikiPre b{
     font-weight: normal;
     font-style: normal;
  +}
  +
  +img.imgLeft {
  +  margin-right : 15px;
  +  margin-bottom : 5px;
  +}
  +
  +img.imgRight {
  +  margin-left : 10px;
  +  margin-bottom : 5px;
  +}
  +
  +span.externalLink {
  +  display: none;
   }
  
  
  
  1.4       +23 -9     moniwiki/css/blog.css
  
  Index: blog.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/blog.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- blog.css	16 Nov 2003 10:21:13 -0000	1.3
  +++ blog.css	11 Aug 2004 10:35:07 -0000	1.4
  @@ -17,15 +17,15 @@
   /*  color: #7B7D5A; /* */
     text-decoration: none;
   }
  -tt.wiki {font-family:Monotype,Lucida Console,fixed,lucida;font-size:12px;}
  +tt.wiki {font-family:Monotype,Lucida Console,monospace,lucida;font-size:12px;}
   tt.foot {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
   }
   
   tt.sister {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
     text-decoration: none;
  @@ -34,7 +34,7 @@
   pre.wiki {
     padding-left:6px;
     padding-top:6px; 
  -  font-family:Lucida TypeWriter,monotype,lucida,fixed;font-size:14px;
  +  font-family:Lucida TypeWriter,monotype,lucida,monospace;font-size:14px;
     background-color:#000000;
     color:#FFD700; /* gold */
   }
  @@ -51,7 +51,7 @@
     padding-top:6px;
     white-space:pre-wrap;
     white-space: -moz-pre-wrap; 
  -  font-family:Georgia,monotype,lucida,fixed;font-size:14px;
  +  font-family:Georgia,monotype,lucida,monospace;font-size:14px;
     background-color:#ddddc0;
   }
   
  @@ -81,27 +81,27 @@
   }
   
   h1,h2,h3,h4,h5 {
  -  font-family:Tahoma;
  +  font-family:Tahoma,sans-serif;
     padding-left:6px;
     border-bottom:1px solid #999;
   }
   
   div.diff-added {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E0FFE0;
     color:black;
   }
   
   div.diff-removed {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E9EAB8;
     color:black;
   }
   
   div.diff-sep {
  -  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#000000;
     color:#FFD700; /* gold */
  @@ -262,4 +262,18 @@
   div.wikiPre i,div.wikiPre b{
     font-weight: normal;
     font-style: normal;
  +}
  +
  +img.imgLeft {
  +  margin-right : 15px;
  +  margin-bottom : 5px;
  +}
  +
  +img.imgRight {
  +  margin-left : 10px;
  +  margin-bottom : 5px;
  +}
  +
  +span.externalLink {
  +  display: none;
   }
  
  
  
  1.4       +23 -9     moniwiki/css/bw.css
  
  Index: bw.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/bw.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- bw.css	16 Nov 2003 10:21:13 -0000	1.3
  +++ bw.css	11 Aug 2004 10:35:07 -0000	1.4
  @@ -13,15 +13,15 @@
     text-decoration: none;
   }
   
  -tt.wiki {font-family:Lucida Typewriter,fixed,lucida,fixed;font-size:12px;}
  +tt.wiki {font-family:Lucida Typewriter,lucida,monospace;font-size:12px;}
   tt.foot {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
   }
   
   tt.sister {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
     text-decoration: none;
  @@ -30,7 +30,7 @@
   pre.wiki {
     padding-left:6px;
     padding-top:6px; 
  -  font-family:Lucida TypeWriter,monotype,lucida,fixed;font-size:14px;
  +  font-family:Lucida TypeWriter,monotype,lucida,monospace;font-size:14px;
     background-color:#000000;
     color:#FFD700; /* gold */
   }
  @@ -41,7 +41,7 @@
     white-space: -pre-wrap; /* */
     white-space: -moz-pre-wrap; 
     white-space: -o-pre-wrap; 
  -  font-family:Georgia,monotype,lucida,fixed;font-size:14px;
  +  font-family:Georgia,monotype,lucida,monospace;font-size:14px;
     /* background-color:#F7F8E6; */
     background-color: #22516C;
   }
  @@ -68,7 +68,7 @@
   }
   
   h1,h2,h3,h4,h5 {
  -  font-family:Tahoma;
  +  font-family:Tahoma,sans-serif;
   /* background-color:#E07B2A; */
     padding-left:6px;
     border-bottom:1px solid #999;
  @@ -86,21 +86,21 @@
   }
   
   div.diff-added {
  -   font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +   font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
      font-size:12px;
      background-color:#B0FFB0;
      color:black;
   }
   
   div.diff-removed {
  -   font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +   font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
      font-size:12px;
      background-color:#E9EAB8;
      color:black;
   }
   
   div.diff-sep {
  -   font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +   font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
      font-size:12px;
      background-color:#000000;
      color:#FFD700; /* gold */
  @@ -185,4 +185,18 @@
   div.wikiPre i,div.wikiPre b{
     font-weight: normal;
     font-style: normal;
  +}
  +
  +img.imgLeft {
  +  margin-right : 15px;
  +  margin-bottom : 5px;
  +}
  +
  +img.imgRight {
  +  margin-left : 10px;
  +  margin-bottom : 5px;
  +}
  +
  +span.externalLink {
  +  display: none;
   }
  
  
  
  1.4       +21 -7     moniwiki/css/cream.css
  
  Index: cream.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/cream.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- cream.css	16 Nov 2003 10:21:13 -0000	1.3
  +++ cream.css	11 Aug 2004 10:35:07 -0000	1.4
  @@ -16,13 +16,13 @@
   }
   tt.wiki {font-family:Lucida Typewriter,fixed,lucida,fixed;font-size:12px;}
   tt.foot {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
   }
   
   tt.sister {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
     text-decoration: none;
  @@ -31,7 +31,7 @@
   pre.wiki {
     padding-left:6px;
     padding-top:6px; 
  -  font-family:Lucida TypeWriter,monotype,lucida,fixed;font-size:14px;
  +  font-family:Lucida TypeWriter,monotype,lucida,monospace;font-size:14px;
     background-color:#000000;
     color:#FFD700; /* gold */
   }
  @@ -41,7 +41,7 @@
     padding-top:6px;
     white-space:pre-wrap;
     white-space: -moz-pre-wrap; 
  -  font-family:Georgia,monotype,lucida,fixed;font-size:14px;
  +  font-family:Georgia,monotype,lucida,monospace;font-size:14px;
     background-color:#F7F8E6;
   }
   
  @@ -73,21 +73,21 @@
   }
   
   div.diff-added {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#B0FFB0;
     color:black;
   }
   
   div.diff-removed {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E9EAB8;
     color:black;
   }
   
   div.diff-sep {
  -  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#000000;
     color:#FFD700; /* gold */
  @@ -229,4 +229,18 @@
   div.wikiPre i,div.wikiPre b{
     font-weight: normal;
     font-style: normal;
  +}
  +
  +img.imgLeft {
  +  margin-right : 15px;
  +  margin-bottom : 5px;
  +}
  +
  +img.imgRight {
  +  margin-left : 10px;
  +  margin-bottom : 5px;
  +}
  +
  +span.externalLink {
  +  display: none;
   }
  
  
  
  1.4       +22 -8     moniwiki/css/darkkhaki.css
  
  Index: darkkhaki.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/darkkhaki.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- darkkhaki.css	16 Nov 2003 10:21:13 -0000	1.3
  +++ darkkhaki.css	11 Aug 2004 10:35:07 -0000	1.4
  @@ -17,15 +17,15 @@
   /*  color: #7B7D5A; /* */
     text-decoration: none;
   }
  -tt.wiki {font-family:Monotype,Lucida Console,fixed,lucida;font-size:12px;}
  +tt.wiki {font-family:Monotype,Lucida Console,lucida,monospace;font-size:12px;}
   tt.foot {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
   }
   
   tt.sister {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
     text-decoration: none;
  @@ -34,7 +34,7 @@
   pre.wiki {
     padding-left:6px;
     padding-top:6px; 
  -  font-family:Lucida TypeWriter,monotype,lucida,fixed;font-size:14px;
  +  font-family:Lucida TypeWriter,monotype,lucida,monospace;font-size:14px;
     background-color:#000000;
     color:#FFD700; /* gold */
   }
  @@ -51,7 +51,7 @@
     padding-top:6px;
     white-space:pre-wrap;
     white-space: -moz-pre-wrap; 
  -  font-family:Georgia,monotype,lucida,fixed;font-size:14px;
  +  font-family:Georgia,monotype,lucida,monospace;font-size:14px;
     background-color:#ddddc0;
   }
   
  @@ -88,21 +88,21 @@
   }
   
   div.diff-added {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E0FFE0;
     color:black;
   }
   
   div.diff-removed {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E9EAB8;
     color:black;
   }
   
   div.diff-sep {
  -  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#000000;
     color:#FFD700; /* gold */
  @@ -243,4 +243,18 @@
   div.wikiPre i,div.wikiPre b{
     font-weight: normal;
     font-style: normal;
  +}
  +
  +img.imgLeft {
  +  margin-right : 15px;
  +  margin-bottom : 5px;
  +}
  +
  +img.imgRight {
  +  margin-left : 10px;
  +  margin-bottom : 5px;
  +}
  +
  +span.externalLink {
  +  display: none;
   }
  
  
  
  1.4       +22 -8     moniwiki/css/darkred.css
  
  Index: darkred.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/darkred.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- darkred.css	16 Nov 2003 10:21:13 -0000	1.3
  +++ darkred.css	11 Aug 2004 10:35:07 -0000	1.4
  @@ -18,15 +18,15 @@
   /*  color: #7B7D5A; /* */
     text-decoration: none;
   }
  -tt.wiki {font-family:Monotype,Lucida Console,fixed,lucida;font-size:12px;}
  +tt.wiki {font-family:Monotype,Lucida Console,lucida,monospace;font-size:12px;}
   tt.foot {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
   }
   
   tt.sister {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
     text-decoration: none;
  @@ -35,7 +35,7 @@
   pre.wiki {
     padding-left:6px;
     padding-top:6px; 
  -  font-family:Lucida TypeWriter,monotype,lucida,fixed;font-size:14px;
  +  font-family:Lucida TypeWriter,monotype,lucida,monospace;font-size:14px;
     background-color:#000000;
     color:#FFD700; /* gold */
   }
  @@ -52,7 +52,7 @@
     padding-top:6px;
     white-space:pre-wrap;
     white-space: -moz-pre-wrap; 
  -  font-family:Georgia,monotype,lucida,fixed;font-size:14px;
  +  font-family:Georgia,monotype,lucida,monospace;font-size:14px;
     background-color:#ddddc0;
   }
   
  @@ -89,21 +89,21 @@
   }
   
   span.diff-added, div.diff-added {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E0FFE0;
     color:black;
   }
   
   span.diff-removed, div.diff-removed {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E9EAB8;
     color:black;
   }
   
   div.diff-sep {
  -  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#000000;
     color:#FFD700; /* gold */
  @@ -246,4 +246,18 @@
   div.wikiPre i,div.wikiPre b{
     font-weight: normal;
     font-style: normal;
  +}
  +
  +img.imgLeft {
  +  margin-right : 15px;
  +  margin-bottom : 5px;
  +}
  +
  +img.imgRight {
  +  margin-left : 10px;
  +  margin-bottom : 5px;
  +}
  +
  +span.externalLink {
  +  display: none;
   }
  
  
  
  1.4       +21 -8     moniwiki/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/default.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- default.css	16 Nov 2003 10:21:13 -0000	1.3
  +++ default.css	11 Aug 2004 10:35:07 -0000	1.4
  @@ -20,15 +20,15 @@
   /*  color: #7B7D5A; /* */
     text-decoration: none;
   }
  -tt.wiki {font-family:Monotype,Lucida Console,fixed,lucida;font-size:12px;}
  +tt.wiki {font-family:Monotype,Lucida Console,monospace,lucida;font-size:12px;}
   tt.foot {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
   }
   
   tt.sister {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
     text-decoration: none;
  @@ -37,7 +37,7 @@
   pre.wiki {
     padding-left:6px;
     padding-top:6px; 
  -  font-family:Lucida TypeWriter,monotype,lucida,fixed;font-size:14px;
  +  font-family:Lucida TypeWriter,monotype,lucida,monospace;font-size:14px;
     background-color:#000000;
     color:#FFD700; /* gold */
   }
  @@ -54,7 +54,7 @@
     padding-top:6px;
     white-space:pre-wrap;
     white-space: -moz-pre-wrap; 
  -  font-family:Georgia,monotype,lucida,fixed;font-size:14px;
  +  font-family:Georgia,monotype,lucida,monospace;font-size:14px;
     background-color: #FBF0BD;
   }
   
  @@ -91,21 +91,21 @@
   }
   
   span.diff-added, div.diff-added {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E0FFE0;
     color:black;
   }
   
   span.diff-removed, div.diff-removed {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E9EAB8;
     color:black;
   }
   
   div.diff-sep {
  -  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#000000;
     color:#FFD700; /* gold */
  @@ -246,3 +246,16 @@
     font-style: normal;
   }
   
  +img.imgLeft {
  +  margin-right : 15px;
  +  margin-bottom : 5px;
  +}
  +
  +img.imgRight {
  +  margin-left : 10px;
  +  margin-bottom : 5px;
  +}
  +
  +span.externalLink {
  +  display: none;
  +}
  
  
  
  1.3       +22 -8     moniwiki/css/gray.css
  
  Index: gray.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/gray.css,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- gray.css	16 Nov 2003 10:21:13 -0000	1.2
  +++ gray.css	11 Aug 2004 10:35:07 -0000	1.3
  @@ -17,15 +17,15 @@
   /*  color: #7B7D5A; /* */
     text-decoration: none;
   }
  -tt.wiki {font-family:Monotype,Lucida Console,fixed,lucida;font-size:12px;}
  +tt.wiki {font-family:Monotype,Lucida Console,monospace,lucida;font-size:12px;}
   tt.foot {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
   }
   
   tt.sister {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
     text-decoration: none;
  @@ -34,7 +34,7 @@
   pre.wiki {
     padding-left:6px;
     padding-top:6px; 
  -  font-family:Lucida TypeWriter,monotype,lucida,fixed;font-size:14px;
  +  font-family:Lucida TypeWriter,monotype,lucida,monospace;font-size:14px;
     background-color:#000000;
     color:#FFD700; /* gold */
   }
  @@ -51,7 +51,7 @@
     padding-top:6px;
     white-space:pre-wrap;
     white-space: -moz-pre-wrap; 
  -  font-family:Georgia,monotype,lucida,fixed;font-size:14px;
  +  font-family:Georgia,monotype,lucida,monospace;font-size:14px;
     background-color:#ddddc0;
   }
   
  @@ -88,21 +88,21 @@
   }
   
   div.diff-added {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E0FFE0;
     color:black;
   }
   
   div.diff-removed {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E9EAB8;
     color:black;
   }
   
   div.diff-sep {
  -  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#000000;
     color:#FFD700; /* gold */
  @@ -242,4 +242,18 @@
   div.wikiPre i,div.wikiPre b{
     font-weight: normal;
     font-style: normal;
  +}
  +
  +img.imgLeft {
  +  margin-right : 15px;
  +  margin-bottom : 5px;
  +}
  +
  +img.imgRight {
  +  margin-left : 10px;
  +  margin-bottom : 5px;
  +}
  +
  +span.externalLink {
  +  display: none;
   }
  
  
  
  1.4       +22 -8     moniwiki/css/green.css
  
  Index: green.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/green.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- green.css	16 Nov 2003 10:21:13 -0000	1.3
  +++ green.css	11 Aug 2004 10:35:07 -0000	1.4
  @@ -20,15 +20,15 @@
   /*  color: #7B7D5A; /* */
     text-decoration: none;
   }
  -tt.wiki {font-family:Monotype,Lucida Console,fixed,lucida;font-size:12px;}
  +tt.wiki {font-family:Monotype,Lucida Console,lucida,monospace;font-size:12px;}
   tt.foot {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
   }
   
   tt.sister {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
     text-decoration: none;
  @@ -37,7 +37,7 @@
   pre.wiki {
     padding-left:6px;
     padding-top:6px; 
  -  font-family:Lucida TypeWriter,monotype,lucida,fixed;font-size:14px;
  +  font-family:Lucida TypeWriter,monotype,lucida,monospace;font-size:14px;
     background-color:#000000;
     color:#FFD700; /* gold */
   }
  @@ -54,7 +54,7 @@
     padding-top:6px;
     white-space:pre-wrap;
     white-space: -moz-pre-wrap; 
  -  font-family:Georgia,monotype,lucida,fixed;font-size:14px;
  +  font-family:Georgia,monotype,lucida,monospace;font-size:14px;
     background-color:#F7F8E6;
   }
   
  @@ -91,21 +91,21 @@
   }
   
   div.diff-added {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color: #E0FFE0;
     color:black;
   }
   
   div.diff-removed {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E9EAB8;
     color:black;
   }
   
   div.diff-sep {
  -  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#000000;
     color:#FFD700; /* gold */
  @@ -260,4 +260,18 @@
   div.wikiPre i,div.wikiPre b{
     font-weight: normal;
     font-style: normal;
  +}
  +
  +img.imgLeft {
  +  margin-right : 15px;
  +  margin-bottom : 5px;
  +}
  +
  +img.imgRight {
  +  margin-left : 10px;
  +  margin-bottom : 5px;
  +}
  +
  +span.externalLink {
  +  display: none;
   }
  
  
  
  1.3       +13 -0     moniwiki/css/iolo.css
  
  Index: iolo.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/iolo.css,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- iolo.css	16 Nov 2003 10:21:13 -0000	1.2
  +++ iolo.css	11 Aug 2004 10:35:07 -0000	1.3
  @@ -391,3 +391,16 @@
   	font-size:smaller;
   }
   
  +img.imgLeft {
  +  margin-right : 15px;
  +  margin-bottom : 5px;
  +}
  +
  +img.imgRight {
  +  margin-left : 10px;
  +  margin-bottom : 5px;
  +}
  +
  +span.externalLink {
  +  display: none;
  +}
  
  
  
  1.4       +22 -8     moniwiki/css/khaki.css
  
  Index: khaki.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/khaki.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- khaki.css	16 Nov 2003 10:21:13 -0000	1.3
  +++ khaki.css	11 Aug 2004 10:35:07 -0000	1.4
  @@ -17,15 +17,15 @@
   /*  color: #7B7D5A; /* */
     text-decoration: none;
   }
  -tt.wiki {font-family:Monotype,Lucida Console,fixed,lucida;font-size:12px;}
  +tt.wiki {font-family:Monotype,Lucida Console,lucida,monospace;font-size:12px;}
   tt.foot {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
   }
   
   tt.sister {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
     text-decoration: none;
  @@ -38,7 +38,7 @@
   pre.wiki {
     padding-left:6px;
     padding-top:6px; 
  -  font-family:Lucida TypeWriter,monotype,lucida,fixed;font-size:14px;
  +  font-family:Lucida TypeWriter,monotype,lucida,monospace;font-size:14px;
     background-color:#000000;
     color:#FFD700; /* gold */
   }
  @@ -55,7 +55,7 @@
     padding-top:6px;
     white-space:pre-wrap;
     white-space: -moz-pre-wrap; 
  -  font-family:Georgia,monotype,lucida,fixed;font-size:14px;
  +  font-family:Georgia,monotype,lucida,monospace;font-size:14px;
     background-color:#F7F8E6;
   }
   
  @@ -92,21 +92,21 @@
   }
   
   div.diff-added {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E0FFE0;
     color:black;
   }
   
   div.diff-removed {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E9EAB8;
     color:black;
   }
   
   div.diff-sep {
  -  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#000000;
     color:#FFD700; /* gold */
  @@ -244,4 +244,18 @@
   div.wikiPre i,div.wikiPre b{
     font-weight: normal;
     font-style: normal;
  +}
  +
  +img.imgLeft {
  +  margin-right : 15px;
  +  margin-bottom : 5px;
  +}
  +
  +img.imgRight {
  +  margin-left : 10px;
  +  margin-bottom : 5px;
  +}
  +
  +span.externalLink {
  +  display: none;
   }
  
  
  
  1.2       +22 -8     moniwiki/css/log.css
  
  Index: log.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/log.css,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- log.css	11 Feb 2004 08:48:27 -0000	1.1
  +++ log.css	11 Aug 2004 10:35:07 -0000	1.2
  @@ -9,15 +9,15 @@
   
   a {color:#444444;text-decoration:underline}
   a:hover {color:#f3764b;text-decoration:underline}
  -tt.wiki {font-family:Monotype,Lucida Console,fixed,lucida;font-size:12px;}
  +tt.wiki {font-family:Monotype,Lucida Console,lucida,monospace;font-size:12px;}
   tt.foot {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
   }
   
   tt.sister {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
     text-decoration: none;
  @@ -26,7 +26,7 @@
   pre.wiki {
     padding-left:6px;
     padding-top:6px; 
  -  font-family:Lucida TypeWriter,monotype,lucida,fixed;font-size:14px;
  +  font-family:Lucida TypeWriter,monotype,lucida,monospace;font-size:14px;
     background-color:#000000;
     color:#FFD700; /* gold */
   }
  @@ -43,7 +43,7 @@
     padding-top:6px;
     white-space:pre-wrap;
     white-space: -moz-pre-wrap; 
  -  font-family:Georgia,monotype,lucida,fixed;font-size:14px;
  +  font-family:Georgia,monotype,lucida,monospace;font-size:14px;
     background-color: #FBFAF9;
   }
   
  @@ -87,21 +87,21 @@
   }
   
   div.diff-added {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E0FFE0;
     color:black;
   }
   
   div.diff-removed {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E9EAB8;
     color:black;
   }
   
   div.diff-sep {
  -  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#000000;
     color:#FFD700; /* gold */
  @@ -274,4 +274,18 @@
   div.wikiPre i,div.wikiPre b{
     font-weight: normal;
     font-style: normal;
  +}
  +
  +img.imgLeft {
  +  margin-right : 15px;
  +  margin-bottom : 5px;
  +}
  +
  +img.imgRight {
  +  margin-left : 10px;
  +  margin-bottom : 5px;
  +}
  +
  +span.externalLink {
  +  display: none;
   }
  
  
  
  1.4       +23 -9     moniwiki/css/matrix.css
  
  Index: matrix.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/matrix.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- matrix.css	16 Nov 2003 10:21:13 -0000	1.3
  +++ matrix.css	11 Aug 2004 10:35:07 -0000	1.4
  @@ -11,15 +11,15 @@
     color: #3D9763;
     text-decoration: none;
   }
  -tt.wiki {font-family:Lucida Typewriter,fixed,lucida,fixed;font-size:12px;}
  +tt.wiki {font-family:Lucida Typewriter,lucida,monospace;font-size:12px;}
   tt.foot {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
   }
   
   tt.sister {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
     text-decoration: none;
  @@ -28,7 +28,7 @@
   pre.wiki {
     padding-left:6px;
     padding-top:6px; 
  -  font-family:Lucida TypeWriter,monotype,lucida,fixed;font-size:14px;
  +  font-family:Lucida TypeWriter,monotype,lucida,monospace;font-size:14px;
     background-color: #394143;
     color: #26C745; /* gold */
   }
  @@ -39,13 +39,13 @@
     white-space: -pre-wrap; /* */
     white-space: -moz-pre-wrap; 
     white-space: -o-pre-wrap; 
  -  font-family:Georgia,monotype,lucida,fixed;font-size:14px;
  +  font-family:Georgia,monotype,lucida,monospace;font-size:14px;
     /* background-color:#F7F8E6; */
     background-color: #22516C;
   }
   
   textarea.wiki {
  -  font-family:Georgia,monotype,lucida,fixed;font-size:14px;
  +  font-family:Georgia,monotype,lucida,monospace;font-size:14px;
   }
   
   table.wiki {
  @@ -77,21 +77,21 @@
   }
   
   div.diff-added {
  -   font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +   font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
      font-size:12px;
      background-color:#B0FFB0;
      color:black;
   }
   
   div.diff-removed {
  -   font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +   font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
      font-size:12px;
      background-color:#E9EAB8;
      color:black;
   }
   
   div.diff-sep {
  -   font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +   font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
      font-size:12px;
      background-color:#000000;
      color:#FFD700; /* gold */
  @@ -183,4 +183,18 @@
   div.wikiPre i,div.wikiPre b{
     font-weight: normal;
     font-style: normal;
  +}
  +
  +img.imgLeft {
  +  margin-right : 15px;
  +  margin-bottom : 5px;
  +}
  +
  +img.imgRight {
  +  margin-left : 10px;
  +  margin-bottom : 5px;
  +}
  +
  +span.externalLink {
  +  display: none;
   }
  
  
  
  1.3       +15 -1     moniwiki/css/moinmoin.css
  
  Index: moinmoin.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/moinmoin.css,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- moinmoin.css	16 Nov 2003 10:21:13 -0000	1.2
  +++ moinmoin.css	11 Aug 2004 10:35:07 -0000	1.3
  @@ -2,7 +2,7 @@
   
       Copyright (c) 2001, 2002, 2003 by Jrgen Hermann
   
  -    $Id: moinmoin.css,v 1.2 2003/11/16 10:21:13 wkpark Exp $
  +    $Id: moinmoin.css,v 1.3 2004/08/11 10:35:07 wkpark Exp $
   */
   
   /* user interface styles */
  @@ -162,4 +162,18 @@
   div.wikiPre i,div.wikiPre b{
     font-weight: normal;
     font-style: normal;
  +}
  +
  +img.imgLeft {
  +  margin-right : 15px;
  +  margin-bottom : 5px;
  +}
  +
  +img.imgRight {
  +  margin-left : 10px;
  +  margin-bottom : 5px;
  +}
  +
  +span.externalLink {
  +  display: none;
   }
  
  
  
  1.3       +20 -6     moniwiki/css/nsmk.css
  
  Index: nsmk.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/nsmk.css,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- nsmk.css	16 Nov 2003 10:21:13 -0000	1.2
  +++ nsmk.css	11 Aug 2004 10:35:07 -0000	1.3
  @@ -14,12 +14,12 @@
   }
   
   td.headline {
  -    font-family: Helvetica;
  +    font-family: Helvetica,sans-serif;
       font-size: 20pt;
   }
   
   h1,h2,h3,h4,h5 {
  -    font-family: Tahoma,Helvetica;
  +    font-family: Tahoma,Helvetica,sans-serif;
       background-color: #EECC99;
       padding-left:3pt;
       margin-top:2pt;
  @@ -76,16 +76,16 @@
   tt {
       padding-left:6px;
       padding-top:6px;
  -    font-family:monotype,lucida,fixed;font-size:14px;
  +    font-family:monotype,lucida,monospace;font-size:14px;
   }
   tt.foot {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
   }
   
   tt.sister {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
     text-decoration: none;
  @@ -169,7 +169,7 @@
   
   .preformat {
       white-space: pre-wrap;
  -    font-family: vt100;
  +    font-family: vt100,monospace;
       word-wrap: break-word;
   }
   
  @@ -219,4 +219,18 @@
   div.wikiPre i,div.wikiPre b{
     font-weight: normal;
     font-style: normal;
  +}
  +
  +img.imgLeft {
  +  margin-right : 15px;
  +  margin-bottom : 5px;
  +}
  +
  +img.imgRight {
  +  margin-left : 10px;
  +  margin-bottom : 5px;
  +}
  +
  +span.externalLink {
  +  display: none;
   }
  
  
  
  1.4       +22 -8     moniwiki/css/olive.css
  
  Index: olive.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/olive.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- olive.css	16 Nov 2003 10:21:13 -0000	1.3
  +++ olive.css	11 Aug 2004 10:35:07 -0000	1.4
  @@ -18,15 +18,15 @@
     text-decoration: none;
   }
   
  -tt.wiki {font-family:Monotype,Lucida Console,fixed,lucida;font-size:12px;}
  +tt.wiki {font-family:Monotype,Lucida Console,lucida,monospace;font-size:12px;}
   tt.foot {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
   }
   
   tt.sister {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
     padding-left:2px;
  @@ -35,7 +35,7 @@
   pre.wiki {
     padding-left:6px;
     padding-top:6px; 
  -  font-family:Lucida TypeWriter,monotype,lucida,fixed;font-size:14px;
  +  font-family:Lucida TypeWriter,monotype,lucida,monospace;font-size:14px;
     background-color:#000000;
     color:#FFD700; /* gold */
   /*  color:#FFffff; /* gold */
  @@ -57,7 +57,7 @@
     padding-top:6px;
     white-space:pre-wrap;
     white-space: -moz-pre-wrap; 
  -  font-family:Georgia,monotype,lucida,fixed;font-size:14px;
  +  font-family:Georgia,monotype,lucida,monospace;font-size:14px;
     background-color:#ddddc0;
   }
   
  @@ -93,21 +93,21 @@
   }
   
   div.diff-added {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E0FFE0;
     color:black;
   }
   
   div.diff-removed {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E9EAB8;
     color:black;
   }
   
   div.diff-sep {
  -  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#000000;
     color:#FFD700; /* gold */
  @@ -247,4 +247,18 @@
   div.wikiPre i,div.wikiPre b{
     font-weight: normal;
     font-style: normal;
  +}
  +
  +img.imgLeft {
  +  margin-right : 15px;
  +  margin-bottom : 5px;
  +}
  +
  +img.imgRight {
  +  margin-left : 10px;
  +  margin-bottom : 5px;
  +}
  +
  +span.externalLink {
  +  display: none;
   }
  
  
  
  1.3       +27 -30    moniwiki/css/print.css
  
  Index: print.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/print.css,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- print.css	16 Oct 2003 00:55:11 -0000	1.2
  +++ print.css	11 Aug 2004 10:35:07 -0000	1.3
  @@ -1,8 +1,6 @@
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  -/*  background-color:#EDF5ED; */
  -  margin: 0;
  -  padding: 0;
  +  margin: 10;
   }
   
   .wikiTitle {
  @@ -11,15 +9,15 @@
     font-weight:bold;
     text-decoration: none;
   }
  -tt.wiki {font-family:Monotype,Lucida Console,fixed,lucida;font-size:12px;}
  +tt.wiki {font-family:Monotype,Lucida Console,lucida,monospace;font-size:12px;}
   tt.foot {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
   }
   
   tt.sister {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
     text-decoration: none;
  @@ -28,7 +26,7 @@
   pre.wiki {
     padding-left:6px;
     padding-top:6px; 
  -  font-family:Lucida TypeWriter,monotype,lucida,fixed;font-size:14px;
  +  font-family:Lucida TypeWriter,monotype,lucida,monospace;font-size:14px;
     background-color:#000000;
     color:#FFD700; /* gold */
   }
  @@ -45,7 +43,7 @@
     padding-top:6px;
     white-space:pre-wrap;
     white-space: -moz-pre-wrap; 
  -  font-family:Georgia,monotype,lucida,fixed;font-size:14px;
  +  font-family:Georgia,monotype,lucida,monospace;font-size:14px;
     background-color:#F7F8E6;
   }
   
  @@ -82,21 +80,21 @@
   }
   
   div.diff-added {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color: #E0FFE0;
     color:black;
   }
   
   div.diff-removed {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E9EAB8;
     color:black;
   }
   
   div.diff-sep {
  -  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#000000;
     color:#FFD700; /* gold */
  @@ -147,9 +145,7 @@
     margin-top:0px;
     height:0px;  
   /*  color: transparent; /* */
  -/*
  -   background: #000 url(hr1.gif) no-repeat scroll center;
  -*/
  +/* background: #000 url(hr1.gif) no-repeat scroll center; */
   }
   
   #wikiHeader {
  @@ -159,27 +155,14 @@
   }
   
   #wikiBody {
  -/*   background-color:lightyellow; */
  -/*  border-left: 0.8em solid #E2ECE2;
  -  border-right: 0.8em solid #E2ECE2; */
  -  border-left: 0.8em solid #DDDDBB;
  -  border-right: 0.8em solid #AA7; 
  -/*  padding: 1em 1em 3em 3em; */
  -/*  margin-left: 20px; */
  -  padding-left: 1em; /* */
  -/*  text-indent: 10px; */
  -/*  border: 0px outset #E2ECE5; */
  -/*   font-size:16px; 
  -   border-collapse:collapse; */
   }
   
   #wikiContent {
  -  margin-left: 20px; 
  +  margin-left: 10px; 
   }
   
  -#wikiFooter {
  -  padding: 0.5em 2em;
  -/*  background-color:yellow; */
  +#wikiSideMenu, #wikiFooter {
  +  display:none;
   }
   
   .hint {
  @@ -226,4 +209,18 @@
   div.wikiPre i,div.wikiPre b{
     font-weight: normal;
     font-style: normal;
  +}
  +
  +img.imgLeft {
  +  margin-right : 15px;
  +  margin-bottom : 5px;
  +}
  +
  +img.imgRight {
  +  margin-left : 10px;
  +  margin-bottom : 5px;
  +}
  +
  +span.externalLink {
  +  font-family: monospace;
   }
  
  
  
  1.5       +22 -8     moniwiki/css/redandblack.css
  
  Index: redandblack.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/redandblack.css,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- redandblack.css	16 Nov 2003 10:21:13 -0000	1.4
  +++ redandblack.css	11 Aug 2004 10:35:07 -0000	1.5
  @@ -17,15 +17,15 @@
   /*  color: #7B7D5A; /* */
     text-decoration: none;
   }
  -tt.wiki {font-family:Monotype,Lucida Console,fixed,lucida;font-size:12px;}
  +tt.wiki {font-family:Monotype,Lucida Console,lucida,monospace;font-size:12px;}
   tt.foot {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
   }
   
   tt.sister {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
     text-decoration: none;
  @@ -34,7 +34,7 @@
   pre.wiki {
     padding-left:6px;
     padding-top:6px; 
  -  font-family:Lucida TypeWriter,monotype,lucida,fixed;font-size:14px;
  +  font-family:Lucida TypeWriter,monotype,lucida,monospace;font-size:14px;
     background-color:#000000;
     color:#FFD700; /* gold */
   }
  @@ -51,7 +51,7 @@
     padding-top:6px;
     white-space:pre-wrap;
     white-space: -moz-pre-wrap; 
  -  font-family:Georgia,monotype,lucida,fixed;font-size:14px;
  +  font-family:Georgia,monotype,lucida,monospace;font-size:14px;
     background-color:#ddddc0;
   }
   
  @@ -87,21 +87,21 @@
   }
   
   div.diff-added {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E0FFE0;
     color:black;
   }
   
   div.diff-removed {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E9EAB8;
     color:black;
   }
   
   div.diff-sep {
  -  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#000000;
     color:#FFD700; /* gold */
  @@ -262,4 +262,18 @@
   div.wikiPre i,div.wikiPre b{
     font-weight: normal;
     font-style: normal;
  +}
  +
  +img.imgLeft {
  +  margin-right : 15px;
  +  margin-bottom : 5px;
  +}
  +
  +img.imgRight {
  +  margin-left : 10px;
  +  margin-bottom : 5px;
  +}
  +
  +span.externalLink {
  +  display: none;
   }
  
  
  
  1.4       +22 -8     moniwiki/css/royalblue.css
  
  Index: royalblue.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/royalblue.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- royalblue.css	16 Nov 2003 10:21:13 -0000	1.3
  +++ royalblue.css	11 Aug 2004 10:35:07 -0000	1.4
  @@ -17,15 +17,15 @@
   /*  color: #7B7D5A; /* */
     text-decoration: none;
   }
  -tt.wiki {font-family:Monotype,Lucida Console,fixed,lucida;font-size:12px;}
  +tt.wiki {font-family:Monotype,Lucida Console,lucida,monospace;font-size:12px;}
   tt.foot {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
   }
   
   tt.sister {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
     text-decoration: none;
  @@ -34,7 +34,7 @@
   pre.wiki {
     padding-left:6px;
     padding-top:6px; 
  -  font-family:Lucida TypeWriter,monotype,lucida,fixed;font-size:14px;
  +  font-family:Lucida TypeWriter,monotype,lucida,monospace;font-size:14px;
     background-color:#000000;
     color:#FFD700; /* gold */
   }
  @@ -51,7 +51,7 @@
     padding-top:6px;
     white-space:pre-wrap;
     white-space: -moz-pre-wrap; 
  -  font-family:Georgia,monotype,lucida,fixed;font-size:14px;
  +  font-family:Georgia,monotype,lucida,monospace;font-size:14px;
     background-color:#ddddc0;
   }
   
  @@ -88,21 +88,21 @@
   }
   
   div.diff-added {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E0FFE0;
     color:black;
   }
   
   div.diff-removed {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E9EAB8;
     color:black;
   }
   
   div.diff-sep {
  -  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#000000;
     color:#FFD700; /* gold */
  @@ -243,4 +243,18 @@
   div.wikiPre i,div.wikiPre b{
     font-weight: normal;
     font-style: normal;
  +}
  +
  +img.imgLeft {
  +  margin-right : 15px;
  +  margin-bottom : 5px;
  +}
  +
  +img.imgRight {
  +  margin-left : 10px;
  +  margin-bottom : 5px;
  +}
  +
  +span.externalLink {
  +  display: none;
   }
  
  
  
  1.4       +22 -8     moniwiki/css/seagreen.css
  
  Index: seagreen.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/seagreen.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- seagreen.css	16 Nov 2003 10:21:13 -0000	1.3
  +++ seagreen.css	11 Aug 2004 10:35:07 -0000	1.4
  @@ -20,15 +20,15 @@
     text-decoration: none;
   }
   
  -tt.wiki {font-family:Monotype,Lucida Console,fixed,lucida;font-size:12px;}
  +tt.wiki {font-family:Monotype,Lucida Console,lucida,monospace;font-size:12px;}
   tt.foot {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
   }
   
   tt.sister {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
     text-decoration: none;
  @@ -37,7 +37,7 @@
   pre.wiki {
     padding-left:6px;
     padding-top:6px; 
  -  font-family:Lucida TypeWriter,monotype,lucida,fixed;font-size:14px;
  +  font-family:Lucida TypeWriter,monotype,lucida,monospace;font-size:14px;
     background-color:#000000;
     color:#FFD700; /* gold */
   }
  @@ -54,7 +54,7 @@
     padding-top:6px;
     white-space:pre-wrap;
     white-space: -moz-pre-wrap; 
  -  font-family:Georgia,monotype,lucida,fixed;font-size:14px;
  +  font-family:Georgia,monotype,lucida,monospace;font-size:14px;
     background-color:#F7F8E6;
   }
   
  @@ -91,21 +91,21 @@
   }
   
   div.diff-added {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#B0FFB0;
     color:black;
   }
   
   div.diff-removed {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E9EAB8;
     color:black;
   }
   
   div.diff-sep {
  -  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#000000;
     color:#FFD700; /* gold */
  @@ -251,4 +251,18 @@
   div.wikiPre i,div.wikiPre b{
     font-weight: normal;
     font-style: normal;
  +}
  +
  +img.imgLeft {
  +  margin-right : 15px;
  +  margin-bottom : 5px;
  +}
  +
  +img.imgRight {
  +  margin-left : 10px;
  +  margin-bottom : 5px;
  +}
  +
  +span.externalLink {
  +  display: none;
   }
  
  
  
  1.4       +22 -8     moniwiki/css/sky.css
  
  Index: sky.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/sky.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- sky.css	16 Nov 2003 10:21:13 -0000	1.3
  +++ sky.css	11 Aug 2004 10:35:07 -0000	1.4
  @@ -17,15 +17,15 @@
   /*  color: #7B7D5A; /* */
     text-decoration: none;
   }
  -tt.wiki {font-family:Monotype,Lucida Console,fixed,lucida;font-size:12px;}
  +tt.wiki {font-family:Monotype,Lucida Console,lucida,monospace;font-size:12px;}
   tt.foot {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
   }
   
   tt.sister {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
     text-decoration: none;
  @@ -34,7 +34,7 @@
   pre.wiki {
     padding-left:6px;
     padding-top:6px; 
  -  font-family:Lucida TypeWriter,monotype,lucida,fixed;font-size:14px;
  +  font-family:Lucida TypeWriter,monotype,lucida,monospace;font-size:14px;
     background-color:#000000;
     color:#FFD700; /* gold */
   }
  @@ -51,7 +51,7 @@
     padding-top:6px;
     white-space:pre-wrap;
     white-space: -moz-pre-wrap; 
  -  font-family:Georgia,monotype,lucida,fixed;font-size:14px;
  +  font-family:Georgia,monotype,lucida,monospace;font-size:14px;
     background-color:#F7F8E6;
   }
   
  @@ -88,21 +88,21 @@
   }
   
   div.diff-added {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#61FF61;
     color:black;
   }
   
   div.diff-removed {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E9EAB8;
     color:black;
   }
   
   div.diff-sep {
  -  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#000000;
     color:#FFD700; /* gold */
  @@ -240,4 +240,18 @@
   div.wikiPre i,div.wikiPre b{
     font-weight: normal;
     font-style: normal;
  +}
  +
  +img.imgLeft {
  +  margin-right : 15px;
  +  margin-bottom : 5px;
  +}
  +
  +img.imgRight {
  +  margin-left : 10px;
  +  margin-bottom : 5px;
  +}
  +
  +span.externalLink {
  +  display: none;
   }
  
  
  
  1.4       +22 -8     moniwiki/css/white.css
  
  Index: white.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/white.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- white.css	16 Nov 2003 10:21:13 -0000	1.3
  +++ white.css	11 Aug 2004 10:35:07 -0000	1.4
  @@ -11,15 +11,15 @@
     font-weight:bold;
     text-decoration: none;
   }
  -tt.wiki {font-family:Monotype,Lucida Console,fixed,lucida;font-size:12px;}
  +tt.wiki {font-family:Monotype,Lucida Console,lucida,monospace;font-size:12px;}
   tt.foot {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
   }
   
   tt.sister {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
     text-decoration: none;
  @@ -28,7 +28,7 @@
   pre.wiki {
     padding-left:6px;
     padding-top:6px; 
  -  font-family:Lucida TypeWriter,monotype,lucida,fixed;font-size:14px;
  +  font-family:Lucida TypeWriter,monotype,lucida,monospace;font-size:14px;
     background-color:#000000;
     color:#FFD700; /* gold */
   }
  @@ -45,7 +45,7 @@
     padding-top:6px;
     white-space:pre-wrap;
     white-space: -moz-pre-wrap; 
  -  font-family:Georgia,monotype,lucida,fixed;font-size:14px;
  +  font-family:Georgia,monotype,lucida,monospace;font-size:14px;
     background-color:#F7F8E6;
   }
   
  @@ -82,21 +82,21 @@
   }
   
   div.diff-added {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color: #E0FFE0;
     color:black;
   }
   
   div.diff-removed {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E9EAB8;
     color:black;
   }
   
   div.diff-sep {
  -  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#000000;
     color:#FFD700; /* gold */
  @@ -235,4 +235,18 @@
   div.wikiPre i,div.wikiPre b{
     font-weight: normal;
     font-style: normal;
  +}
  +
  +img.imgLeft {
  +  margin-right : 15px;
  +  margin-bottom : 5px;
  +}
  +
  +img.imgRight {
  +  margin-left : 10px;
  +  margin-bottom : 5px;
  +}
  +
  +span.externalLink {
  +  display: none;
   }
  
  
  
  1.2       +22 -8     moniwiki/css/wood.css
  
  Index: wood.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/wood.css,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- wood.css	11 Feb 2004 08:48:27 -0000	1.1
  +++ wood.css	11 Aug 2004 10:35:07 -0000	1.2
  @@ -16,15 +16,15 @@
     color:#ffffff; /* */
     text-decoration: none;
   }
  -tt.wiki {font-family:Monotype,Lucida Console,fixed,lucida;font-size:12px;}
  +tt.wiki {font-family:Monotype,Lucida Console,lucida,monospace;font-size:12px;}
   tt.foot {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
   }
   
   tt.sister {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
     text-decoration: none;
  @@ -33,7 +33,7 @@
   pre.wiki {
     padding-left:6px;
     padding-top:6px; 
  -  font-family:Lucida TypeWriter,monotype,lucida,fixed;font-size:14px;
  +  font-family:Lucida TypeWriter,monotype,lucida,monospace;font-size:14px;
     background-color:#000000;
     color:#FFD700; /* gold */
   }
  @@ -50,7 +50,7 @@
     padding-top:6px;
     white-space:pre-wrap;
     white-space: -moz-pre-wrap; 
  -  font-family:Georgia,monotype,lucida,fixed;font-size:14px;
  +  font-family:Georgia,monotype,lucida,monospace;font-size:14px;
     background-color: #E9ECEF;
   }
   
  @@ -87,21 +87,21 @@
   }
   
   div.diff-added {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E0FFE0;
     color:black;
   }
   
   div.diff-removed {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E9EAB8;
     color:black;
   }
   
   div.diff-sep {
  -  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#000000;
     color:#FFD700; /* gold */
  @@ -261,4 +261,18 @@
   div.wikiPre i,div.wikiPre b{
     font-weight: normal;
     font-style: normal;
  +}
  +
  +img.imgLeft {
  +  margin-right : 15px;
  +  margin-bottom : 5px;
  +}
  +
  +img.imgRight {
  +  margin-left : 10px;
  +  margin-bottom : 5px;
  +}
  +
  +span.externalLink {
  +  display: none;
   }
  
  
  


wkpark      04/08/11 19:41:39

  Modified:    plugin   RecentChanges.php
  Log:
  fixed macro_RecentChanges to accept 'space' in a date_fmt arg.
  
  Revision  Changes    Path
  1.6       +2 -2      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- RecentChanges.php	11 Feb 2004 08:47:56 -0000	1.5
  +++ RecentChanges.php	11 Aug 2004 10:41:38 -0000	1.6
  @@ -4,7 +4,7 @@
   // a RecentChanges plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: RecentChanges.php,v 1.5 2004/02/11 08:47:56 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.6 2004/08/11 10:41:38 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     $options['trail']='';
  @@ -37,7 +37,7 @@
       $size=(int) $match[1];
       $args=explode(",",$match[2]);
   
  -    if (preg_match("/^[\/\-:aABdDFgGhHiIjmMOrSTY]+$/",$args[0]))
  +    if (preg_match("/^[\s\/\-:aABdDFgGhHiIjmMOrSTY]+$/",$args[0]))
         $date_fmt=$args[0];
   
       if (in_array ("quick", $args)) $quick=1;
  
  
  


wkpark      04/08/11 19:45:56

  Modified:    plugin/processor vim.php
  Log:
  add '$vim_options'
  
  Revision  Changes    Path
  1.14      +3 -1      moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- vim.php	6 Aug 2004 18:57:19 -0000	1.13
  +++ vim.php	11 Aug 2004 10:45:55 -0000	1.14
  @@ -6,7 +6,7 @@
   // Usage: {{{#!vim sh|c|sh|.. [number]
   // some codes
   // }}}
  -// $Id: vim.php,v 1.13 2004/08/06 18:57:19 wkpark Exp $
  +// $Id: vim.php,v 1.14 2004/08/11 10:45:55 wkpark Exp $
   
   function processor_vim($formatter,$value) {
     global $DBInfo;
  @@ -48,6 +48,8 @@
   
     if ($extra == "number") 
       $option='+"set number" ';
  +  if ($DBInfo->vim_options)
  +    $option.=$DBInfo->vim_options;
   
     if(getenv("OS")=="Windows_NT") {
       $tohtml='\%VIMRUNTIME\%\\syntax\\2html.vim';
  
  
  


wkpark      04/08/11 20:28:18

  Modified:    plugin/processor vim.php
  Log:
  add more syntax args (nosyntax,config, etc)
  
  Revision  Changes    Path
  1.15      +12 -10    moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- vim.php	11 Aug 2004 10:45:55 -0000	1.14
  +++ vim.php	11 Aug 2004 11:28:16 -0000	1.15
  @@ -6,9 +6,9 @@
   // Usage: {{{#!vim sh|c|sh|.. [number]
   // some codes
   // }}}
  -// $Id: vim.php,v 1.14 2004/08/11 10:45:55 wkpark Exp $
  +// $Id: vim.php,v 1.15 2004/08/11 11:28:16 wkpark Exp $
   
  -function processor_vim($formatter,$value) {
  +function processor_vim($formatter,$value,$options) {
     global $DBInfo;
     $cache_dir=$DBInfo->upload_dir."/VimProcessor";
   
  @@ -17,8 +17,9 @@
             "haskell","lisp","st","objc","tcl","lua",
             "asm","masm","tasm","make",
             "awk","docbk","diff","html","tex","vim",
  -          "xml","dtd","sql");
  -  $options=array("number");
  +          "xml","dtd","sql","conf","config","nosyntax","apache");
  +
  +  #$opts=array("number");
   
     if ($value[0]=='#' and $value[1]=='!')
       list($line,$value)=explode("\n",$value,2);
  @@ -26,8 +27,14 @@
     if ($line)
       list($tag,$type,$extra)=explode(" ",$line,3);
     $src=$value;
  +  if (!$type) $type='nosyntax';
  +
  +  if ($extra == "number") 
  +    $option='+"set number" ';
  +  if ($DBInfo->vim_options)
  +    $option.=$DBInfo->vim_options.' ';
   
  -  $uniq=md5($src);
  +  $uniq=md5($option.$src);
     if (!file_exists($cache_dir)) {
       umask(000);
       mkdir($cache_dir,0777);
  @@ -45,11 +52,6 @@
     # comment out the following two lines to freely use any syntaxes.
     if (!in_array($type,$syntax)) 
       return "<pre class='code'>\n$line\n$src\n</pre>\n";
  -
  -  if ($extra == "number") 
  -    $option='+"set number" ';
  -  if ($DBInfo->vim_options)
  -    $option.=$DBInfo->vim_options;
   
     if(getenv("OS")=="Windows_NT") {
       $tohtml='\%VIMRUNTIME\%\\syntax\\2html.vim';
  
  
  


wkpark      04/08/11 20:30:56

  Modified:    .        config.php.default
  Log:
  update and add some comments
  
  Revision  Changes    Path
  1.9       +9 -1      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- config.php.default	7 Jan 2004 00:18:02 -0000	1.8
  +++ config.php.default	11 Aug 2004 11:30:56 -0000	1.9
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.8 2004/01/07 00:18:02 wkpark Exp $
  +# $Id: config.php.default,v 1.9 2004/08/11 11:30:56 wkpark Exp $
   #
   $sitename='UnnamedWiki';
   $data_dir= './data';
  @@ -60,6 +60,11 @@
   #<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" />
   #';
   
   #$diffonly=1;
  @@ -72,4 +77,7 @@
   
   #$password_length=6;
   #$use_convert_thumbs=0;
  +
  +#$url_schemas='mms';
  +#$vim_options='+"set encoding=utf-8"';
   ?>
  
  
  


wkpark      04/08/11 20:45:40

  moniwiki/theme/nblog - New directory

wkpark      04/08/11 20:47:00

  moniwiki/theme/nblog/css - New directory

wkpark      04/08/11 20:47:38

  Added:       theme/nblog footer.php header.php
  Log:
  add new 'nblog' theme
  
  Revision  Changes    Path
  1.1                  moniwiki/theme/nblog/footer.php
  
  Index: footer.php
  ===================================================================
  </td><td bgcolor='#eeeeee'>
  <div id='wikiSideMenu'>
  <?
  print '<div style="font-size:10px">';
  if ($options['id']=='Anonymous')
    print macro_calendar($this,"blog,noweek",'Blog');
  else
    print macro_calendar($this,"blog,noweek",$options['id']);
  print '</div>';
  print "<br />\n";
  print '<font style="font-size:12px;"><b>';
  print macro_RandomQuote($this);
  print '</b></font>';
  print "<br /><br />\n";
  print '<font style="font-size:11px">';
  print macro_RandomPage($this,"4,simple");
  print '</font>';
  
  ?>
  </div>
  </td>
  </tr></table>
  <div id='wikiFooter'>
  <?
    if ($lastedit)
      print "last modified $lastedit $lasttime<br />";
    print $menu.$banner."<br />".$timer;
  ?>
  </div>
  
  
  
  1.1                  moniwiki/theme/nblog/header.php
  
  Index: header.php
  ===================================================================
  <?
  # $title, $logo
  # $menu, $icon, $upper_icon, $rss_icon, $user_link
  # $msg
  include_once("plugin/login.php");
  include_once("plugin/RandomBanner.php");
  include_once("plugin/Calendar.php");
  $login=macro_login($this);
  ?>
  <div id='wikiHeader'>
  <table border='0' width='100%' cellpadding='3' cellspacing='0'><tr>
  <td rowspan='2' width='10%'><img src='<?=$this->url_prefix?>/imgs/moniwiki-logo.gif' alt='MoniWiki' /></td><td><?=$title?>
  </td><td width='10%' rowspan='2'><?=$login?></td></tr>
  <tr><td><?=$goto_form?></td></tr>
  </table>
  </div>
  <div id='wikiIcon'><?=$icons?><?=$upper_icon?><?=$rss_icon?><?=$home?></div>
  <div id='wikiMenu'><?=$menu?></div>
  <?=$msg?>
  <table border='0' width='100%' cellpadding='0' cellspacing='0'><tr valign='top'>
  <td width='100%'>
  
  
  


wkpark      04/08/11 20:47:38

  Added:       theme/nblog/css default.css
  Log:
  add new 'nblog' theme
  
  Revision  Changes    Path
  1.1                  moniwiki/theme/nblog/css/default.css
  
  Index: default.css
  ===================================================================
  body {
    font-family:Georgia,Verdana,Lucida,sans-serif;font-size:12px;
    color:#000;
    margin: 0;
    border-left:50px solid #f4f4f4;
    border-right:50px solid #f4f4f4;
  }
  
  a:link { color: #369;}
  a:visited { color: #369;}
  /* a:hover {background-color:#999966;color:white} /* */
  .wikiTitle {
    color:#ffffff; /* */
    font-family:Tahoma,Lucida,sans-serif;
    font-size:24px;
    font-weight:bold;
    text-decoration: none;
  }
  tt.wiki {font-family:Monotype,Lucida Console,lucida,monospace;font-size:12px;}
  tt.foot {
    font-family:Tahoma,lucida,monospace;
    font-size:11px;
    vertical-align: super;
  }
  
  tt.sister {
    font-family:Tahoma,lucida,monospace;
    font-size:11px;
    vertical-align: super;
    text-decoration: none;
  }
  
  pre.wiki {
    padding-left:6px;
    padding-top:6px; 
    font-family:Lucida TypeWriter,monotype,lucida,monospace;font-size:14px;
    background-color:#000000;
    color:#FFD700; /* gold */
  }
  
  pre.console {
    background-color: #000000;
    color: #E0E0E0;
    padding: .25em ;
    border: 2px inset #808080;
  }
  
  pre.quote {
    padding-left:6px;
    padding-top:6px;
    white-space:pre-wrap;
    white-space: -moz-pre-wrap; 
    font-family:Georgia,monotype,lucida,monospace;font-size:14px;
    background-color: #E9ECEF;
  }
  
  table.wiki {
  /* background-color:#E2ECE5;*/
  /* border-collapse: collapse; */
    border: 0px outset #ddddb0;
  }
  
  td.wiki {
    background-color: #E9ECEF;
  /* border-collapse: collapse; */
    border: 0px inset #E2ECE5;
  }
  
  textarea.wiki { width:100%; }
  
  th.info {
    background-color:#E2ECE2;
  /*  border-collapse: collapse; */
  /*  border: 1px solid silver; */
  }
  
  td.info {
    background-color:#E2ECE2;
  
  }
  
  h1,h2,h3,h4,h5 {
    font-family:Tahoma,sans-serif;
    padding-left:6px;
    border-bottom:1px solid #C0c0c0;
    color:#3F5EB1;
  }
  
  h2,h1 {
    padding-top:10px;
  }
  
  div.diff-added {
    font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
    font-size:12px;
    background-color:#E0FFE0;
    color:black;
  }
  
  div.diff-removed {
    font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
    font-size:12px;
    background-color:#E9EAB8;
    color:black;
  }
  
  div.diff-sep {
    font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
    font-size:12px;
    background-color:#000000;
    color:#FFD700; /* gold */
  }
  
  span.diff-added, ins.diff-added {
    color:black;
    background-color: #60FF60;
    text-decoration: none;
  }
  
  span.diff-removed, del.diff-removed {
    color:black;
    background-color: #FF0000;
  }
  
  td.message {
    margin-top: 6pt;
    background-color: #E8E8E8;
    border-style:solid;
    border-width:1pt;
    border-color:#990000;
    color:#440000;
    padding:0px;
    width:100%;
  }
  
  .highlight {
    background-color:#FFFF40;
  }
  
  #wikiGoto {
    font-family:Tahoma,Lucida,sans-serif;
    font-size:11px;
  }
  
  #wikiGoto input[type="text"] {
    font-family:Tahoma,Lucida,sans-serif;
    font-size:11px;
    width:100px;
  }
  
  input[value="Go"] {
    font-family:Tahoma,Lucida,sans-serif;
    font-size:10px;
    width:23px;
  }
  
  input[value="OK"] {
    font-family:Tahoma,Lucida,sans-serif;
    font-size:10px;
    width:25px;
  }
  
  
  table.closure, td.closure{
    background-color: #E9ECEF;
  }
  
  /*  */
  .wikiHr {
    border:0px solid;
    padding: 0px 0px; /* */
    margin-top:0px;
    height:1px;  
  /* background: #000 url(hr1.gif) no-repeat scroll center; */
  }
  
  #wikiTrailer {
    background-color:#8CAED1; 
    padding-left: 20px;
  }
  
  #wikiOrigin {
    background-color:#eeeeee; 
    padding-left: 20px;
  }
  
  #wikiHeader {
  /*  border-left: 0.8em solid #7B9AC5; /* */
    color: #fff;
    padding: 0.2em 0em 0.2em 0.2em;
    background-color:#5087BA; 
  }
  #wikiHeader a:link {color:#fff;}
  #wikiHeader a:visited {color:#f2f2f2;}
  
  #wikiIcon {
    float:right;
    padding: 3px 10px;
    text-align: right;
    vertical-align: middle;
  }
  
  #wikiMenu {
    padding: 4px 0px;
    background-color: #729DC8;
    color: #729DC8;
  }
  
  #wikiMenu ul {
    margin:0;
    padding:0;
    list-style:none;
    }
  
  #wikiMenu li {
    display:inline;
    margin:0;
    padding:0;
  }
  
  #wikiMenu li a:hover {
    background-color: #8BB1D5;
    color: #ffffff;
    text-decoration: none;
  }
  
  #wikiMenu li a:active {
    background-color: #ABC7E1;
    color: #ffffff;
    text-decoration: none;
  }
  
  #wikiMenu a, #wikiMenu a:visited {
    margin: 0;
    padding: 4px 10px;
    border-right: 1px solid #4882B8;
    background-color: #729DC8;
    color: #ffffff;
    text-decoration: none;
  }
  
  #wikiMenu a{
    color:white;
    font-size:11px;
    font-weight:bold;
    font-family: Tahoma,Verdana,sans-serif;
    text-transform: lowercase;
    text-decoration:none;
  }
  
  #wikiSideMenu {
    padding:5px 5px 5px 5px;
    width:140px;
  }
  
  #wikiBody {
    color: black;
    background-color: #fff;
  /*  border: 1px dotted #c0c0c0; /* */
  /*  border-left: 0.8em solid #E2ECE2;
    border-right: 0.8em solid #E2ECE2; */
  /*  border-left: 0.8em dotted; /*solid #6A2525; */
  /*  border-right: 0.8em solid #6A2525; */
  /*  text-transform: lowercase; /* */
    margin: 10px 10px 0px 10px;
    padding: 5px 1em 5px 1em; 
  /*  margin-left: 20px; */
  /*  padding-left: 1em; /* */
  /*  text-indent: 10px; */
  /*  border: 0px outset #E2ECE5; */
  /*  font-size:16px; 
     border-collapse:collapse; */
  }
  
  #wikiBody a:link {
    color: #3F5EB1;
  }
  
  #wikiBody a:visited {
    color: #3F5EB1;
  }
  
  #wikiBody a:hover {
    text-decoration:none;
  }
  
  #wikiContent {
    margin-left: 20px; 
  }
  
  #wikiFooter {
    padding: 0.5em 2em;
  /*  background-color:yellow; */
  }
  
  #wikiHint {
    font-family:Georgia,Verdana,Lucida,sans-serif;
    font-size:10px;
    background-color:#E2DAE2;
  }
  
  #wikiSister {
  /*  background-color:lightgreen; /* */
  }
  
  #wikiPreview {
    border: 2px solid #a0a0a0;
    margin: 5px 5px 5px 5px;
    padding: 5px 1em 5px 1em;
  }
  
  
  div.indent { padding-left:2em; }
  
  div.hint { font-size: 10px; background-color: #369; color:white;}
  a.purple { font-size: 10px; text-decoration:none;}
  
  /* Blog CSS */
  a.purple { font-size: 10px; text-decoration:none;}
  div.blog { width:90%; padding: 0em 1em 0em 1em; }
  div.blog-user { font-size:10px; }
  div.blog-title { font-size:16px; font-weight:bold; }
  div.blog-comments { padding: 1em 1em 1em 2em; border-left: 1px dashed #7B9AC5; background-color:#DFF0FF;}
  
  div.blog-date { font-size:18px; font-weight:bold; padding-bottom:5px;}
  span.blog-user { font-size:10px; }
  
  div.trackback-hint { font-size: 10px; padding: 1em 1em 1em 1em;background-color: #eee;}
  /* Calendar */
  td.day { background: #e0e0e0; text-align: center;}
  td.today { background:#fff; text-align: center;}
  .Calendar a{text-decoration:none;color:black;}
  
  /* HierarchicalWiki */
  span.group {
    font-family:Tahoma,Lucida,sans-serif;
    font-size:10px;
  }
  
  /* login */
  #wikiLogin {
    font-family:Tahoma,sans-serif;
    font-size:7pt;
    font-weight:bold;
  }
  
  #wikiLogin > input {
    font-family:Verdana,sans-serif;
    font-size:8px;
  }
  
  /* enscript syntax */
  div.wikiPre i,div.wikiPre b{
    font-weight: normal;
    font-style: normal;
  }
  
  img.imgLeft {
    margin-right : 15px;
    margin-bottom : 5px;
  }
  
  img.imgRight {
    margin-left : 10px;
    margin-bottom : 5px;
  }
  
  span.externalLink {
    display: none;
  }
  
  
  


wkpark      04/08/11 21:01:57

  Modified:    theme/blog footer.php header.php
  Log:
  fixed #300299, add #imgLeft,#imgRight
  
  Revision  Changes    Path
  1.2       +2 -0      moniwiki/theme/blog/footer.php
  
  Index: footer.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/blog/footer.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- footer.php	10 Aug 2003 13:09:49 -0000	1.1
  +++ footer.php	11 Aug 2004 12:01:55 -0000	1.2
  @@ -1,4 +1,5 @@
   </td><td width='200'>
  +<div id='wikiSideMenu'>
   <?
   print '<div style="font-size:10px">';
   if ($options['id']=='Anonymous')
  @@ -16,6 +17,7 @@
   print '</font>';
   
   ?>
  +</div>
   </td>
   </tr></table>
   <div id='wikiFooter'>
  
  
  
  1.3       +1 -1      moniwiki/theme/blog/header.php
  
  Index: header.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/blog/header.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- header.php	15 Aug 2003 14:32:57 -0000	1.2
  +++ header.php	11 Aug 2004 12:01:55 -0000	1.3
  @@ -14,8 +14,8 @@
   <tr><td><?=$goto_form?></td></tr>
   </table>
   </div>
  -<div id='wikiMenu'><?=$menu?></div>
   <div id='wikiIcon'><?=$icons?><?=$upper_icon?><?=$rss_icon?><?=$home?></div>
  +<div id='wikiMenu'><?=$menu?></div>
   <?=$msg?>
   <table border='0' width='100%'><tr valign='top'>
   <td width='100%'>
  
  
  


wkpark      04/08/11 21:01:59

  Modified:    theme/blog/css default.css
  Log:
  fixed #300299, add #imgLeft,#imgRight
  
  Revision  Changes    Path
  1.3       +37 -13    moniwiki/theme/blog/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/blog/css/default.css,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- default.css	15 Aug 2003 14:33:01 -0000	1.2
  +++ default.css	11 Aug 2004 12:01:58 -0000	1.3
  @@ -17,15 +17,15 @@
   /*  color: #7B7D5A; /* */
     text-decoration: none;
   }
  -tt.wiki {font-family:Monotype,Lucida Console,fixed,lucida;font-size:12px;}
  +tt.wiki {font-family:Monotype,Lucida Console,lucida,monospace;font-size:12px;}
   tt.foot {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
   }
   
   tt.sister {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
     text-decoration: none;
  @@ -34,7 +34,7 @@
   pre.wiki {
     padding-left:6px;
     padding-top:6px; 
  -  font-family:Lucida TypeWriter,monotype,lucida,fixed;font-size:14px;
  +  font-family:Lucida TypeWriter,monotype,lucida,monospace;font-size:14px;
     background-color:#000000;
     color:#FFD700; /* gold */
   }
  @@ -51,7 +51,7 @@
     padding-top:6px;
     white-space:pre-wrap;
     white-space: -moz-pre-wrap; 
  -  font-family:Georgia,monotype,lucida,fixed;font-size:14px;
  +  font-family:Georgia,monotype,lucida,monospace;font-size:14px;
     background-color: #E9ECEF;
   }
   
  @@ -87,21 +87,21 @@
   }
   
   div.diff-added {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E0FFE0;
     color:black;
   }
   
   div.diff-removed {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E9EAB8;
     color:black;
   }
   
   div.diff-sep {
  -  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#000000;
     color:#FFD700; /* gold */
  @@ -226,12 +226,14 @@
   }
   
   #wikiIcon {
  - position: absolute;
  - top: 80px; right: 10px;
  +  float:right;
  +  margin-right: 10px;
  +  text-align: right;
  +  vertical-align: middle;
  +}
   
  - margin-left: 10px;
  - text-align: right;
  - vertical-align: middle;
  +#wikiSideMenu {
  +  width:140px;
   }
   
   div.indent { padding-left:2em; }
  @@ -264,4 +266,26 @@
   div.wikiPre i,div.wikiPre b{
     font-weight: normal;
     font-style: normal;
  +}
  +
  +img.imgLeft {
  +  margin-right : 15px;
  +  margin-bottom : 5px;
  +}
  +
  +img.imgRight {
  +  margin-left : 10px;
  +  margin-bottom : 5px;
  +}
  +
  +span.externalLink {
  +  display: none;
  +}
  +
  +/*a.externalLink[href^='http:'] { */
  +a.externalLink {
  +  padding-right: 9px;
  +  background-image: url("../../../imgs/popup.png");
  +  background-position: right;
  +  background-repeat: no-repeat;
   }
  
  
  


wkpark      04/08/11 21:02:00

  Modified:    theme/ddt/css default.css
  Log:
  fixed #300299, add #imgLeft,#imgRight
  
  Revision  Changes    Path
  1.2       +21 -8     moniwiki/theme/ddt/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/ddt/css/default.css,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- default.css	23 Aug 2003 07:11:24 -0000	1.1
  +++ default.css	11 Aug 2004 12:01:59 -0000	1.2
  @@ -33,15 +33,15 @@
     color:#0a0a66;
     text-decoration: none;
   }
  -tt.wiki {font-family:Monotype,Lucida Console,fixed,lucida;font-size:12px;}
  +tt.wiki {font-family:Monotype,Lucida Console,lucida,monospace;font-size:12px;}
   tt.foot {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
   }
   
   tt.sister {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
     text-decoration: none;
  @@ -50,7 +50,7 @@
   pre.wiki {
     padding-left:6px;
     padding-top:6px; 
  -  font-family:Lucida TypeWriter,monotype,lucida,fixed;font-size:14px;
  +  font-family:Lucida TypeWriter,monotype,lucida,monospace;font-size:14px;
     background-color:#f6f6f6;
     color:#313131;
   }
  @@ -67,7 +67,7 @@
     padding-top:6px;
     white-space:pre-wrap;
     white-space: -moz-pre-wrap; 
  -  font-family:Georgia,monotype,lucida,fixed;font-size:14px;
  +  font-family:Georgia,monotype,lucida,monospace;font-size:14px;
     background-color: #FBF0BD;
   }
   
  @@ -98,21 +98,21 @@
   }
   
   span.diff-added, div.diff-added {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E0FFE0;
     color:black;
   }
   
   span.diff-removed, div.diff-removed {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E9EAB8;
     color:black;
   }
   
   div.diff-sep {
  -  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#000000;
     color:#FFD700; /* gold */
  @@ -259,3 +259,16 @@
     font-style: normal;
   }
   
  +img.imgLeft {
  +  margin-right : 15px;
  +  margin-bottom : 5px;
  +}
  +
  +img.imgRight {
  +  margin-left : 10px;
  +  margin-bottom : 5px;
  +}
  +
  +span.externalLink {
  +  display: none;
  +}
  
  
  


wkpark      04/08/11 21:02:02

  Modified:    theme/kz/css default.css
  Log:
  fixed #300299, add #imgLeft,#imgRight
  
  Revision  Changes    Path
  1.2       +25 -5     moniwiki/theme/kz/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/kz/css/default.css,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- default.css	10 Aug 2003 13:09:49 -0000	1.1
  +++ default.css	11 Aug 2004 12:02:01 -0000	1.2
  @@ -2,7 +2,7 @@
   	margin: 1em;
   	background-color: lightgrey;
   	color: black;
  -	font-family: sans;
  +	font-family: sans-serif;
   }
   head + body {
   	background-image: url(/images/haenim_transparent.png);
  @@ -157,7 +157,7 @@
   }
   
   td.headline {
  -    font-family: Helvetica;
  +    font-family: Helvetica,sans-serif;
       font-size: 20pt;
   }
   
  @@ -186,10 +186,10 @@
   tt {
       padding-left:6px;
       padding-top:6px;
  -    font-family:monotype,fixed;font-size:14px;
  +    font-family:monotype,monospace;font-size:14px;
   }
   tt.foot {
  -  font-family:Tahoma,fixed;
  +  font-family:Tahoma,monospace;
     font-size:11px;
     vertical-align: super;
   }
  @@ -271,7 +271,7 @@
   
   .preformat {
       white-space: pre-wrap;
  -    font-family: vt100;
  +    font-family: vt100,monospace;
       word-wrap: break-word;
   }
   
  @@ -315,4 +315,24 @@
   .rcTable .icon, .rcTable .timestamp {
   	white-space: pre;
   	text-align: right;
  +}
  +
  +/* enscript syntax */
  +div.wikiPre i,div.wikiPre b{
  +  font-weight: normal;
  +  font-style: normal;
  +}
  +
  +img.imgLeft {
  +  margin-right : 15px;
  +  margin-bottom : 5px;
  +}
  +
  +img.imgRight {
  +  margin-left : 10px;
  +  margin-bottom : 5px;
  +}
  +
  +span.externalLink {
  +  display: none;
   }
  
  
  


wkpark      04/08/11 21:02:04

  Modified:    theme/orange header.php
  Log:
  fixed #300299, add #imgLeft,#imgRight
  
  Revision  Changes    Path
  1.2       +1 -1      moniwiki/theme/orange/header.php
  
  Index: header.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/orange/header.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- header.php	30 Dec 2003 22:41:47 -0000	1.1
  +++ header.php	11 Aug 2004 12:02:03 -0000	1.2
  @@ -14,8 +14,8 @@
   <tr><td><?=$goto_form?></td></tr>
   </table>
   </div>
  -<div id='wikiMenu'><?=$menu?></div>
   <div id='wikiIcon'><?=$icons?><?=$upper_icon?><?=$rss_icon?><?=$home?></div>
  +<div id='wikiMenu'><?=$menu?></div>
   <?=$msg?>
   <table border='0' width='100%'><tr valign='top'>
   <td width='100%'>
  
  
  


wkpark      04/08/11 21:02:06

  Modified:    theme/orange/css default.css
  Log:
  fixed #300299, add #imgLeft,#imgRight
  
  Revision  Changes    Path
  1.2       +26 -15    moniwiki/theme/orange/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/orange/css/default.css,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- default.css	30 Dec 2003 22:41:51 -0000	1.1
  +++ default.css	11 Aug 2004 12:02:05 -0000	1.2
  @@ -15,15 +15,15 @@
     color:#ffffff; /* */
     text-decoration: none;
   }
  -tt.wiki {font-family:Monotype,Lucida Console,fixed,lucida;font-size:12px;}
  +tt.wiki {font-family:Monotype,Lucida Console,lucida,monospace;font-size:12px;}
   tt.foot {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
   }
   
   tt.sister {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
     text-decoration: none;
  @@ -32,7 +32,7 @@
   pre.wiki {
     padding-left:6px;
     padding-top:6px; 
  -  font-family:Lucida TypeWriter,monotype,lucida,fixed;font-size:14px;
  +  font-family:Lucida TypeWriter,monotype,lucida,monospace;font-size:14px;
     background-color:#000000;
     color:#FFD700; /* gold */
   }
  @@ -49,7 +49,7 @@
     padding-top:6px;
     white-space:pre-wrap;
     white-space: -moz-pre-wrap; 
  -  font-family:Georgia,monotype,lucida,fixed;font-size:14px;
  +  font-family:Georgia,monotype,lucida,monospace;font-size:14px;
     background-color: #E9ECEF;
   }
   
  @@ -79,28 +79,28 @@
   }
   
   h1,h2,h3,h4,h5 {
  -  font-family:Tahoma;
  +  font-family:Tahoma,sans-serif;
     padding-left:6px;
     color: #f3764b;
     border-bottom:1px solid #f3764b;
   }
   
   div.diff-added {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E0FFE0;
     color:black;
   }
   
   div.diff-removed {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E9EAB8;
     color:black;
   }
   
   div.diff-sep {
  -  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#000000;
     color:#FFD700; /* gold */
  @@ -222,12 +222,9 @@
   }
   
   #wikiIcon {
  - position: absolute;
  - top: 80px; right: 10px;
  -
  - margin-left: 10px;
  - text-align: right;
  - vertical-align: middle;
  +  float: right;
  +  margin-right: 10px;
  +  vertical-align: middle;
   }
   
   div.indent { padding-left:2em; }
  @@ -260,4 +257,18 @@
   div.wikiPre i,div.wikiPre b{
     font-weight: normal;
     font-style: normal;
  +}
  +
  +img.imgLeft {
  +  margin-right : 15px;
  +  margin-bottom : 5px;
  +}
  +
  +img.imgRight {
  +  margin-left : 10px;
  +  margin-bottom : 5px;
  +}
  +
  +span.externalLink {
  +  display: none;
   }
  
  
  


wkpark      04/08/11 21:02:08

  Modified:    theme/samplehome/css default.css
  Log:
  fixed #300299, add #imgLeft,#imgRight
  
  Revision  Changes    Path
  1.3       +23 -9     moniwiki/theme/samplehome/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/samplehome/css/default.css,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- default.css	11 Aug 2003 05:16:15 -0000	1.2
  +++ default.css	11 Aug 2004 12:02:07 -0000	1.3
  @@ -16,15 +16,15 @@
     padding-left: 5px;
     text-decoration: none;
   }
  -tt.wiki {font-family:Monotype,Lucida Console,fixed,lucida;font-size:12px;}
  +tt.wiki {font-family:Monotype,Lucida Console,lucida,monospace;font-size:12px;}
   tt.foot {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
   }
   
   tt.sister {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
     text-decoration: none;
  @@ -33,7 +33,7 @@
   pre.wiki {
     padding-left:6px;
     padding-top:6px; 
  -  font-family:Lucida TypeWriter,monotype,lucida,fixed;font-size:14px;
  +  font-family:Lucida TypeWriter,monotype,lucida,monospace;font-size:14px;
     background-color:#000000;
     color:#FFD700; /* gold */
   }
  @@ -50,7 +50,7 @@
     padding-top:6px;
     white-space:pre-wrap;
     white-space: -moz-pre-wrap; 
  -  font-family:Georgia,monotype,lucida,fixed;font-size:14px;
  +  font-family:Georgia,monotype,lucida,monospace;font-size:14px;
     background-color: #EFF3EB;
   }
   
  @@ -80,27 +80,27 @@
   }
   
   h1,h2,h3,h4,h5 {
  -  font-family:Tahoma;
  +  font-family:Tahoma,sans-serif;
     padding-left:6px;
     border-bottom:1px solid #999;
   }
   
   div.diff-added {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E0FFE0;
     color:black;
   }
   
   div.diff-removed {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E9EAB8;
     color:black;
   }
   
   div.diff-sep {
  -  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#000000;
     color:#FFD700; /* gold */
  @@ -254,4 +254,18 @@
   div.wikiPre i,div.wikiPre b{
     font-weight: normal;
     font-style: normal;
  +}
  +
  +img.imgLeft {
  +  margin-right : 15px;
  +  margin-bottom : 5px;
  +}
  +
  +img.imgRight {
  +  margin-left : 10px;
  +  margin-bottom : 5px;
  +}
  +
  +span.externalLink {
  +  display: none;
   }
  
  
  


wkpark      04/08/11 21:02:09

  Modified:    theme/sampleicon/css default.css
  Log:
  fixed #300299, add #imgLeft,#imgRight
  
  Revision  Changes    Path
  1.2       +23 -9     moniwiki/theme/sampleicon/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/sampleicon/css/default.css,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- default.css	10 Aug 2003 13:09:49 -0000	1.1
  +++ default.css	11 Aug 2004 12:02:08 -0000	1.2
  @@ -17,15 +17,15 @@
   /*  color: #7B7D5A; /* */
     text-decoration: none;
   }
  -tt.wiki {font-family:Monotype,Lucida Console,fixed,lucida;font-size:12px;}
  +tt.wiki {font-family:Monotype,Lucida Console,lucida,monospace;font-size:12px;}
   tt.foot {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
   }
   
   tt.sister {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
     text-decoration: none;
  @@ -34,7 +34,7 @@
   pre.wiki {
     padding-left:6px;
     padding-top:6px; 
  -  font-family:Lucida TypeWriter,monotype,lucida,fixed;font-size:14px;
  +  font-family:Lucida TypeWriter,monotype,lucida,monospace;font-size:14px;
     background-color:#000000;
     color:#FFD700; /* gold */
   }
  @@ -51,7 +51,7 @@
     padding-top:6px;
     white-space:pre-wrap;
     white-space: -moz-pre-wrap; 
  -  font-family:Georgia,monotype,lucida,fixed;font-size:14px;
  +  font-family:Georgia,monotype,lucida,monospace;font-size:14px;
     background-color:#ddddc0;
   }
   
  @@ -81,28 +81,28 @@
   }
   
   h1,h2,h3,h4,h5 {
  -  font-family:Tahoma;
  +  font-family:Tahoma,sans-serif;
   /* background-color:#E07B2A; */
     padding-left:6px;
     border-bottom:1px solid #999;
   }
   
   div.diff-added {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E0FFE0;
     color:black;
   }
   
   div.diff-removed {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E9EAB8;
     color:black;
   }
   
   div.diff-sep {
  -  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#000000;
     color:#FFD700; /* gold */
  @@ -239,4 +239,18 @@
   div.wikiPre i,div.wikiPre b{
     font-weight: normal;
     font-style: normal;
  +}
  +
  +img.imgLeft {
  +  margin-right : 15px;
  +  margin-bottom : 5px;
  +}
  +
  +img.imgRight {
  +  margin-left : 10px;
  +  margin-bottom : 5px;
  +}
  +
  +span.externalLink {
  +  display: none;
   }
  
  
  


wkpark      04/08/11 21:02:11

  Modified:    theme/sampleleft/css default.css
  Log:
  fixed #300299, add #imgLeft,#imgRight
  
  Revision  Changes    Path
  1.3       +23 -9     moniwiki/theme/sampleleft/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/sampleleft/css/default.css,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- default.css	15 Aug 2003 14:06:23 -0000	1.2
  +++ default.css	11 Aug 2004 12:02:10 -0000	1.3
  @@ -16,15 +16,15 @@
   /*  color: #7B7D5A; /* */
     text-decoration: none;
   }
  -tt.wiki {font-family:Monotype,Lucida Console,fixed,lucida;font-size:12px;}
  +tt.wiki {font-family:Monotype,Lucida Console,monospace,lucida;font-size:12px;}
   tt.foot {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
   }
   
   tt.sister {
  -  font-family:Tahoma,lucida,fixed;
  +  font-family:Tahoma,lucida,monospace;
     font-size:11px;
     vertical-align: super;
     text-decoration: none;
  @@ -33,7 +33,7 @@
   pre.wiki {
     padding-left:6px;
     padding-top:6px; 
  -  font-family:Lucida TypeWriter,monotype,lucida,fixed;font-size:14px;
  +  font-family:Lucida TypeWriter,monotype,lucida,monospace;font-size:14px;
     background-color:#000000;
     color:#FFD700; /* gold */
   }
  @@ -50,7 +50,7 @@
     padding-top:6px;
     white-space:pre-wrap;
     white-space: -moz-pre-wrap; 
  -  font-family:Georgia,monotype,lucida,fixed;font-size:14px;
  +  font-family:Georgia,monotype,lucida,monospace;font-size:14px;
     background-color:#ddddc0;
   }
   
  @@ -80,27 +80,27 @@
   }
   
   h1,h2,h3,h4,h5 {
  -  font-family:Tahoma;
  +  font-family:Tahoma,sans-serif;
     padding-left:6px;
     border-bottom:1px solid #999;
   }
   
   div.diff-added {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E0FFE0;
     color:black;
   }
   
   div.diff-removed {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E9EAB8;
     color:black;
   }
   
   div.diff-sep {
  -  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#000000;
     color:#FFD700; /* gold */
  @@ -257,4 +257,18 @@
   div.wikiPre i,div.wikiPre b{
     font-weight: normal;
     font-style: normal;
  +}
  +
  +img.imgLeft {
  +  margin-right : 15px;
  +  margin-bottom : 5px;
  +}
  +
  +img.imgRight {
  +  margin-left : 10px;
  +  margin-bottom : 5px;
  +}
  +
  +span.externalLink {
  +  display: none;
   }
  
  
  


wkpark      04/08/11 21:04:11

  Modified:    .        wiki.php
  Log:
  fixed cache refresh
  
  Revision  Changes    Path
  1.139     +4 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.138
  retrieving revision 1.139
  diff -u -r1.138 -r1.139
  --- wiki.php	3 Aug 2004 12:23:02 -0000	1.138
  +++ wiki.php	11 Aug 2004 12:04:09 -0000	1.139
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.138 2004/08/03 12:23:02 wkpark Exp $
  +// $Id: wiki.php,v 1.139 2004/08/11 12:04:09 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.138 $',1,-1);
  +$_revision = substr('$Revision: 1.139 $',1,-1);
   $_release = '1.0.8';
   
   #ob_start("ob_gzhandler");
  @@ -3081,6 +3081,7 @@
       $value=$_GET['value'];
       $goto=$_GET['goto'];
       $rev=$_GET['rev'];
  +    $refresh=$_GET['refresh'];
     }
   
     #print $_SERVER['REQUEST_URI'];
  @@ -3093,6 +3094,7 @@
     $page = $DBInfo->getPage($pagename);
   
     $formatter = new Formatter($page,$options);
  +  $formatter->refresh=$refresh;
   
     if (!$action or $action=='show') {
       if ($value) { # ?value=Hello
  
  
  


wkpark      04/08/11 21:08:52

  Modified:    plugin/processor vim.php
  Log:
  fix 'fixed' to 'FixedSys,monospace'
  
  Revision  Changes    Path
  1.16      +2 -2      moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- vim.php	11 Aug 2004 11:28:16 -0000	1.15
  +++ vim.php	11 Aug 2004 12:08:51 -0000	1.16
  @@ -6,7 +6,7 @@
   // Usage: {{{#!vim sh|c|sh|.. [number]
   // some codes
   // }}}
  -// $Id: vim.php,v 1.15 2004/08/11 11:28:16 wkpark Exp $
  +// $Id: vim.php,v 1.16 2004/08/11 12:08:51 wkpark Exp $
   
   function processor_vim($formatter,$value,$options) {
     global $DBInfo;
  @@ -93,7 +93,7 @@
     unlink($tmpf);
   
     $out=preg_replace("/<title>.*title>|<\/?head>|<\/?html>|<meta.*>|<\/?body.*>/","", $out);
  -  $out=preg_replace("/<pre>/","<pre class='wikiSyntax' style='font-family:fixed;color:#c0c0c0;background-color:black'>", $out);
  +  $out=preg_replace("/<pre>/","<pre class='wikiSyntax' style='font-family:FixedSys,monospace;color:#c0c0c0;background-color:black'>", $out);
   #  $out=preg_replace("/<\/pre>/","</span></pre>", $out);
     $fp=fopen($cache_dir."/$uniq".".html","w");
     fwrite($fp,$out);
  
  
  


wkpark      04/08/11 21:53:43

  Modified:    .        wiki.php
  Log:
  fixed get_diff()
  
  Revision  Changes    Path
  1.140     +4 -5      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.139
  retrieving revision 1.140
  diff -u -r1.139 -r1.140
  --- wiki.php	11 Aug 2004 12:04:09 -0000	1.139
  +++ wiki.php	11 Aug 2004 12:53:42 -0000	1.140
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.139 2004/08/11 12:04:09 wkpark Exp $
  +// $Id: wiki.php,v 1.140 2004/08/11 12:53:42 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.139 $',1,-1);
  +$_revision = substr('$Revision: 1.140 $',1,-1);
   $_release = '1.0.8';
   
   #ob_start("ob_gzhandler");
  @@ -2473,9 +2473,8 @@
       if (!$fp)
         return '';
       if (!feof($fp)) {
  -      # trashing two first line
  -      $line=fgets($fp,1024);
  -      $line=fgets($fp,1024);
  +      #$line=fgets($fp,1024);
  +      #$line=fgets($fp,1024);
       }
       while (!feof($fp)) {
         $line=fgets($fp,1024);
  
  
  


wkpark      04/08/12 13:39:50

  Modified:    plugin   Gallery.php
  Log:
  "comment" feature is added to Gallery plugin.
  
  Revision  Changes    Path
  1.7       +112 -9    moniwiki/plugin/Gallery.php
  
  Index: Gallery.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Gallery.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- Gallery.php	30 Dec 2003 01:57:17 -0000	1.6
  +++ Gallery.php	12 Aug 2004 04:39:50 -0000	1.7
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Gallery]]
   //
  -// $Id: Gallery.php,v 1.6 2003/12/30 01:57:17 wkpark Exp $
  +// $Id: Gallery.php,v 1.7 2004/08/12 04:39:50 wkpark Exp $
   // vim:et:ts=2:
   
   function get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
  @@ -91,8 +91,36 @@
       }
     }
   
  +  if ($options['value']) {
  +    $file=urldecode($options['value']);
  +  }
  +  if ($file and $upfiles[$file] and $options['comment']) {
  +    // add new comment
  +    if ($options['id']=='Anonymous') $name=$_SERVER['REMOTE_ADDR'];
  +    else $name=$options['id'];
  +    if ($options['name']) $name=$options['name'];
  +    $date=date("@ Y-m-d");
  +
  +    $comment=stripslashes($options['comment']);
  +    $comment=str_replace("\r","",$comment);
  +    $comment=str_replace("\n","\\n",$comment);
  +    $comment=str_replace("\t"," ",$comment);
  +    $comment=str_replace("<","&lt;",$comment);
  +    $comment.=" -- $name $date";
  +    $comments[$file]=$comment."\t".$comments[$file];
  +    $update=1;
  +  } else if ($file and $upfiles[$file]) {
  +    // show comments of the selected item
  +    $mtime=$upfiles[$file];
  +    $comment=$comments[$file];
  +    $upfiles=array();
  +    $comments=array();
  +    $upfiles[$file]=$mtime;
  +    $comments[$file]=$comment;
  +  }
  +
     $mtime=file_exists($dir."/list.txt") ? filemtime($dir."/list.txt"):0;
  -  if (filemtime($dir) > $mtime) {
  +  if ((filemtime($dir) > $mtime) or $update) {
       unset($upfiles);
   
       $handle= opendir($dir);
  @@ -140,9 +168,11 @@
   
     if (!file_exists($dir."/thumbnails")) mkdir($dir."/thumbnails",0777);
   
  +
     while (list($file,$mtime) = each ($upfiles)) {
       $size=filesize($dir."/".$file);
  -    $link=$prefix.rawurlencode($file);
  +    $id=rawurlencode($file);
  +    $link=$prefix.$id;
       $date=date("Y-m-d",$mtime);
       if (preg_match("/\.(jpg|jpeg|gif|png)$/i",$file)) {
         if ($DBInfo->use_covert_thumbs and !file_exists($dir."/thumbnails/".$file)) {
  @@ -157,10 +187,39 @@
       }
       else
         $object=$file;
  +
  +
  +    $unit=array('Bytes','KB','MB','GB','TB');
  +    $i=0;
  +    for (;$i<4;$i++) {
  +      if ($size <= 1024) {
  +        $size= round($size,2).' '.$unit[$i];
  +        break;
  +      }
  +      $size=$size/1024;
  +    }
  +#    $size=round($size,2).' '.$unit[$i];
  +
       $comment='';
  -    if ($comments[$file] != '') $comment="<br/>".$comments[$file];
  +    $comment_btn=_("comment");
  +    if ($comments[$file] != '' and $options['value']) {
  +      $comment=$comments[$file];
  +      $comment=str_replace("\\n","<br/>\n",$comment);
  +      $comment=str_replace("\t","<br/>\n----<br/>\n",$comment);
  +      $comment="<br/>".$comment;
  +    } else if ($comments[$file] != '') {
  +      $comment_btn=_("show comments");
  +      list($comment,$dum)=explode("\t",$comments[$file],2);
  +      $comment=str_replace("\\n","<br/>\n",$comment);
  +      $comment=str_replace("\t","<br/>\n----<br/>\n",$comment);
  +      $comment="<br/>".$comment;
  +    }
       $out.="<td align='center' valign='top' class='wiki'><a href='$link'>$object</a><br />".
  -          "@ $date ($size bytes)$comment</td>\n";
  +          "$date ($size) ";
  +    if (!$options['value'])
  +      $out.='['.$formatter->link_tag($formatter->page->urlname,"?action=gallery&amp;value=$id",$comment_btn)."]<br />\n";
  +    if ($comment) $out.="<div align='left' class='gallery_comments'>$comment</div>";
  +    $out.="</td>\n";
       if ($idx % $col == 0) $out.="</tr>\n<tr>\n";
       $idx++;
       if ($idx > $perpage) break;
  @@ -172,14 +231,58 @@
   }
   
   function do_gallery($formatter,$options='') {
  -  $ret=macro_Gallery($formatter,'',$options);
     $formatter->send_header("",$options);
  -  $formatter->send_title("","",$options);
   
  -  print $ret;
  +  $ret=macro_Gallery($formatter,'',$options);
  +  if (!$options['value']) {
  +    $formatter->send_title("","",$options);
  +    print $ret;
  +  } else if (!$options['comment'] and $options['all']) {
  +    $formatter->send_title("","",$options);
  +    print $ret;
  +    $url=$formatter->link_url($formatter->page->urlname);
  +  $form = "<form method='post' action='$url'>\n";
  +  $form.= <<<FORM
  +<textarea class="wiki" id="content" wrap="virtual" name="comment"
  + rows="$rows" cols="$cols" class="wiki">
  +FORM;
  +
  +  $form.='</textarea><br />';
  +  $form.= <<<FORM2
  +<input type="hidden" name="action" value="gallery" />
  +<input type="hidden" name="value" value="$options[value]" />
  +password: <input type='password' name='passwd' />
  +<input type="submit" value="Save" />&nbsp;
  +<input type="reset" value="Reset" />&nbsp;
  +</form>
  +FORM2;
  +
  +  } else if (!$options['comment']) {
  +    $formatter->send_title("","",$options);
  +    print $ret;
  +    $url=$formatter->link_url($formatter->page->urlname);
  +                                                                                
  +  $form = "<form method='post' action='$url'>\n";
  +  $form.= "<b>Name or Email</b>: <input name='name' size='30' maxlength='30' style='width:200' /><br />\n";
  +  $form.= <<<FORM
  +<textarea class="wiki" id="content" wrap="virtual" name="comment"
  + rows="$rows" cols="$cols" class="wiki"></textarea><br />
  +FORM;
  +  $form.= <<<FORM2
  +<input type="hidden" name="action" value="gallery" />
  +<input type="hidden" name="value" value="$options[value]" />
  +<input type="submit" value="Save" />&nbsp;
  +<input type="reset" value="Reset" />&nbsp;
  +</form>
  +FORM2;
  +    print $form;
  +  } else {
  +    $options['msg']=sprintf(_("Go back or return to %s"),$formatter->link_tag($formatter->page->urlname,"",$options['page']));
  +    $formatter->send_title(sprintf(_("Comment added to \"%s\""),$formatter->page->name),"",$options);
  +
  +  }
   
     $formatter->send_footer("",$options);
  -
   }
   
   ?>
  
  
  


wkpark      04/08/12 14:52:42

  Modified:    plugin   Gallery.php
  Log:
  more fix last changes
  
  Revision  Changes    Path
  1.8       +53 -21    moniwiki/plugin/Gallery.php
  
  Index: Gallery.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Gallery.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Gallery.php	12 Aug 2004 04:39:50 -0000	1.7
  +++ Gallery.php	12 Aug 2004 05:52:42 -0000	1.8
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Gallery]]
   //
  -// $Id: Gallery.php,v 1.7 2004/08/12 04:39:50 wkpark Exp $
  +// $Id: Gallery.php,v 1.8 2004/08/12 05:52:42 wkpark Exp $
   // vim:et:ts=2:
   
   function get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
  @@ -91,10 +91,19 @@
       }
     }
   
  -  if ($options['value']) {
  +  if ($options['value'])
       $file=urldecode($options['value']);
  -  }
  -  if ($file and $upfiles[$file] and $options['comment']) {
  +
  +  if ($file and $upfiles[$file] and $options['comments']) {
  +    // admin: edit all comments
  +    $comment=stripslashes($options['comments']);
  +    $comment=str_replace("<","&lt;",$comment);
  +    $comment=str_replace("\r","",$comment);
  +    $comment=preg_replace("/\n----\n/","\t",$comment);
  +    $comment=str_replace("\n","\\n",$comment);
  +    $comments[$file]=$comment;
  +    $update=1;
  +  } else if ($file and $upfiles[$file] and $options['comment']) {
       // add new comment
       if ($options['id']=='Anonymous') $name=$_SERVER['REMOTE_ADDR'];
       else $name=$options['id'];
  @@ -204,8 +213,10 @@
       $comment_btn=_("comment");
       if ($comments[$file] != '' and $options['value']) {
         $comment=$comments[$file];
  -      $comment=str_replace("\\n","<br/>\n",$comment);
  -      $comment=str_replace("\t","<br/>\n----<br/>\n",$comment);
  +      $comment=str_replace("\\n","\n",$comment);
  +      $comment=str_replace("\t","\n----\n",$comment);
  +      $options['comments']=$comment;
  +      $comment=str_replace("\n","<br/>\n",$comment);
         $comment="<br/>".$comment;
       } else if ($comments[$file] != '') {
         $comment_btn=_("show comments");
  @@ -231,24 +242,42 @@
   }
   
   function do_gallery($formatter,$options='') {
  +  global $DBInfo;
  +  $cols = preg_match('/MSIE/', $HTTP_USER_AGENT) ? $COLS_MSIE : $COLS_OTHER;
  +                                                                                
  +  $rows=$options['rows'] > 5 ? $options['rows']: 4;
  +  $cols=$options['cols'] > 60 ? $options['cols']: $cols;
  +
     $formatter->send_header("",$options);
   
  -  $ret=macro_Gallery($formatter,'',$options);
  +  if ($options['admin'] and $options['comments'] and !$DBInfo->security->is_valid_password($options['passwd'],$options)) {
  +    $title= sprintf('Invalid password !');
  +    $formatter->send_header("",$options);
  +    $formatter->send_title($title);
  +    $formatter->send_footer();
  +    return;
  +  }
  +
  +  $ret=macro_Gallery($formatter,'',&$options);
  +
     if (!$options['value']) {
       $formatter->send_title("","",$options);
       print $ret;
  -  } else if (!$options['comment'] and $options['all']) {
  +  } else
  +  if ($options['comments'] and $options['admin'] and !$options['passwd']) {
  +    // admin form
  +    $rows+=5;
       $formatter->send_title("","",$options);
       print $ret;
       $url=$formatter->link_url($formatter->page->urlname);
  -  $form = "<form method='post' action='$url'>\n";
  -  $form.= <<<FORM
  -<textarea class="wiki" id="content" wrap="virtual" name="comment"
  +    $form = "<form method='post' action='$url'>\n";
  +    $form.= <<<FORM
  +<textarea class="wiki" id="content" wrap="virtual" name="comments"
    rows="$rows" cols="$cols" class="wiki">
   FORM;
  -
  -  $form.='</textarea><br />';
  -  $form.= <<<FORM2
  +    $form.=$options['comments'];
  +    $form.='</textarea><br />';
  +    $form.= <<<FORM2
   <input type="hidden" name="action" value="gallery" />
   <input type="hidden" name="value" value="$options[value]" />
   password: <input type='password' name='passwd' />
  @@ -256,19 +285,25 @@
   <input type="reset" value="Reset" />&nbsp;
   </form>
   FORM2;
  +    print $form;
   
  +  } else if ($options['passwd'] and $options['comments']) {
  +    $options['msg']=sprintf(_("Go back or return to %s"),$formatter->link_tag($formatter->page->urlname,"",$options['page']));
  +    $formatter->send_title(_("Comments are edited "),"",$options);
     } else if (!$options['comment']) {
  +    // add comment form
       $formatter->send_title("","",$options);
       print $ret;
       $url=$formatter->link_url($formatter->page->urlname);
                                                                                   
  -  $form = "<form method='post' action='$url'>\n";
  -  $form.= "<b>Name or Email</b>: <input name='name' size='30' maxlength='30' style='width:200' /><br />\n";
  -  $form.= <<<FORM
  +    $form = "<form method='post' action='$url'>\n";
  +    $form.= "<input name='admin' type='submit' value='Admin' /><br />\n";
  +    $form.= "<b>Name or Email</b>: <input name='name' size='30' maxlength='30' style='width:200' /><br />\n";
  +    $form.= <<<FORM
   <textarea class="wiki" id="content" wrap="virtual" name="comment"
    rows="$rows" cols="$cols" class="wiki"></textarea><br />
   FORM;
  -  $form.= <<<FORM2
  +    $form.= <<<FORM2
   <input type="hidden" name="action" value="gallery" />
   <input type="hidden" name="value" value="$options[value]" />
   <input type="submit" value="Save" />&nbsp;
  @@ -276,9 +311,6 @@
   </form>
   FORM2;
       print $form;
  -  } else {
  -    $options['msg']=sprintf(_("Go back or return to %s"),$formatter->link_tag($formatter->page->urlname,"",$options['page']));
  -    $formatter->send_title(sprintf(_("Comment added to \"%s\""),$formatter->page->name),"",$options);
   
     }
   
  
  
  


wkpark      04/08/12 19:03:44

  Modified:    plugin   sendping.php
  Log:
  mb_encode title
  
  Revision  Changes    Path
  1.8       +3 -1      moniwiki/plugin/sendping.php
  
  Index: sendping.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/sendping.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- sendping.php	30 Dec 2003 22:44:42 -0000	1.7
  +++ sendping.php	12 Aug 2004 10:03:43 -0000	1.8
  @@ -4,7 +4,7 @@
   // a TrackBack send action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: sendping.php,v 1.7 2003/12/30 22:44:42 wkpark Exp $
  +// $Id: sendping.php,v 1.8 2004/08/12 10:03:43 wkpark Exp $
   
   # trackback ping
   function do_sendping($formatter,$options) {
  @@ -107,6 +107,8 @@
       $convmap=array(0xac00, 0xd7a3, 0x0000, 0xffff); /* for euc-kr */
       $new=mb_encode_numericentity($excerpt,$convmap,'utf-8');
       if ($new) $excerpt=$new;
  +    $new=mb_encode_numericentity($title,$convmap,'utf-8');
  +    if ($new) $title=$new;
     }
   
   	$excerpt= urlencode($excerpt);
  
  
  


wkpark      04/08/13 02:04:38

  Modified:    plugin   UploadFile.php
  Log:
  support multiple file upload
  
  Revision  Changes    Path
  1.3       +113 -56   moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- UploadFile.php	19 Oct 2003 23:08:32 -0000	1.2
  +++ UploadFile.php	12 Aug 2004 17:04:37 -0000	1.3
  @@ -4,36 +4,43 @@
   // a UploadFile plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: UploadFile.php,v 1.2 2003/10/19 23:08:32 wkpark Exp $
  +// $Id: UploadFile.php,v 1.3 2004/08/12 17:04:37 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
     # replace space and ':' strtr()
  -  $upfilename=str_replace(" ","_",$_FILES['upfile']['name']);
  -  $upfilename=str_replace(":","_",$upfilename);
  -
  -  preg_match("/(.*)\.([a-z0-9]{1,4})$/i",$upfilename,$fname);
  -
  -  if (!$upfilename) {
  -     #$title="No file selected";
  -     $formatter->send_header("",$options);
  -     $formatter->send_title($title,"",$options);
  -     print macro_UploadFile($formatter,'',$options);
  -     $formatter->send_footer("",$options);
  -     return;
  -  }
  -  # upload file protection
  -  if ($DBInfo->pds_allowed)
  -     $pds_exts=$DBInfo->pds_allowed;
  -  else
  -     $pds_exts="png|jpg|jpeg|gif|mp3|zip|tgz|gz|txt|css|exe|hwp";
  -  if (!preg_match("/(".$pds_exts.")$/i",$fname[2])) {
  -     $title="$fname[2] extension does not allowed to upload";
  -     $formatter->send_header("",$options);
  -     $formatter->send_title($title,"",$options);
  -     $formatter->send_footer("",$options);
  -     return;
  +  $files=array();
  +  if (is_array($_FILES)) {
  +    if (is_array($_FILES['upfile']['name'])) {
  +      $options['multiform']=sizeof($_FILES['upfile']['name']);
  +      $count=$options['multiform'];
  +      $files=&$_FILES;
  +    } else {
  +      $count=1;
  +      $files['upfile']['name'][]=&$_FILES['upfile']['name'];
  +      $files['upfile']['tmp_name'][]=&$_FILES['upfile']['tmp_name'];
  +      $options['rename'][]=$options['rename'];
  +      $options['replace'][]=$options['replace'];
  +    }
  +  } else
  +    $files=array();
  +
  +  $ok=0;
  +  if ($files) {
  +    foreach ($files['upfile']['name'] as $f) {
  +      if ($f) { $ok=1;break;}
  +    }
  +  }
  +
  +  if (!$ok) {
  +    #$title="No file selected";
  +    $formatter->send_header("",$options);
  +    $formatter->send_title($title,"",$options);
  +    print macro_UploadFile($formatter,'',$options);
  +    $formatter->send_footer("",$options);
  +    return;
     }
  +
     $key=$DBInfo->pageToKeyname($formatter->page->name);
     if ($key != 'UploadFile')
       $dir= $DBInfo->upload_dir."/$key";
  @@ -44,9 +51,28 @@
       mkdir($dir,0777);
       umask(02);
     }
  +  $REMOTE_ADDR=$_SERVER['REMOTE_ADDR'];
  +
  +  for ($j=0;$j<$count;$j++) {
  +  $upfilename=str_replace(" ","_",$files['upfile']['name'][$j]);
  +  $upfilename=str_replace(":","_",$upfilename);
  +
  +  preg_match("/(.*)\.([a-z0-9]{1,4})$/i",$upfilename,$fname);
  +
  +  if (!$upfilename) continue;
  +  else if ($upfilename) $uploaded++;
  +
  +  # upload file protection
  +  if ($DBInfo->pds_allowed)
  +     $pds_exts=$DBInfo->pds_allowed;
  +  else
  +     $pds_exts="png|jpg|jpeg|gif|mp3|zip|tgz|gz|txt|css|exe|hwp";
  +  if (!preg_match("/(".$pds_exts.")$/i",$fname[2]))
  +     $msg.=sprintf(_("%s does not allowed to upload"),$upfilename)."<br/>\n";
   
     $file_path= $newfile_path = $dir."/".$upfilename;
  -  if ($options['rename']) {
  +  $filename=$upfilename;
  +  if ($options['rename'][$j]) {
       # XXX
       $temp=explode("/",stripslashes($options['rename']));
       $upfilename= $temp[count($temp)-1];
  @@ -66,62 +92,93 @@
        $newfile_path= $dir."/".$upfilename;
     }
    
  -  $upfile=$_FILES['upfile']['tmp_name'];
  -  //$temp=explode("/",$_FILES['upfile']['tmp_name']);
  -  //$upfile="/tmp/".$temp[count($temp)-1];
  -  // Tip at http://phpschool.com
  +  $upfile=$files['upfile']['tmp_name'][$j];
   
  -  if ($options['replace']) {
  +  if ($options['replace'][$j]) {
  +    // backup
       if ($newfile_path) $test=@copy($file_path, $newfile_path);
  +    // replace
       $test=@copy($upfile, $file_path);
  +    $upfilename=$filename;
     } else {
       $test=@copy($upfile, $newfile_path);
     }
  -  if (!$test) {
  -     $title=sprintf(_("Fail to copy \"%s\" to \"%s\""),$upfilename,$file_path);
  -     $formatter->send_header("",$options);
  -     $formatter->send_title($title,"",$options);
  -     return;
  -  }
  +  if (!$test)
  +    $msg.=sprintf(_("Fail to copy \"%s\" to \"%s\""),$upfilename,$file_path);
  +
     chmod($newfile_path,0644);
   
  -  $REMOTE_ADDR=$_SERVER['REMOTE_ADDR'];
  -  $comment="File '$upfilename' uploaded";
  +  $comment.="File '$upfilename' uploaded";
  +
  +  $title.=sprintf(_("File \"%s\" is uploaded successfully"),$upfilename).'<br />';
  +  if ($key == 'UploadFile')
  +    $msg.= "<ins>Uploads:$upfilename</ins><br />";
  +  else {
  +    $msg.= "<ins>attachment:$upfilename</ins> or<br />";
  +    $msg.= "<ins>attachment:".$formatter->page->name.":$upfilename</ins><br />";
  +  }
  +
  +  } // multiple upload
  +
     $DBInfo->addLogEntry($key, $REMOTE_ADDR,$comment,"UPLOAD");
     
  -  $title=sprintf(_("File \"%s\" is uploaded successfully"),$upfilename);
     $formatter->send_header("",$options);
  -  $formatter->send_title($title,"",$options);
  -  if ($key == 'UploadFile')
  -    print "<ins>Uploads:$upfilename</ins>";
  -  else
  -    print "<ins>attachment:$upfilename</ins> or<br />";
  -    print "<ins>attachment:".$formatter->page->name.":$upfilename</ins>";
  +  if ($uploaded < 2) {
  +    $formatter->send_title($title,"",$options);
  +    print $msg;
  +  } else {
  +    $msg=$title.$msg;
  +    $title=sprintf(_("Files are uploaded successfully"),$upfilename);
  +    $formatter->send_title($title,"",$options);
  +    print $msg;
  +  }
     $formatter->send_footer();
   }
   
   function macro_UploadFile($formatter,$value='',$options='') {
  -  if ($options['rename']) {
  +  if ($options['rename'] and !is_array($options['rename'])) {
       $rename=stripslashes($options['rename']);
       $extra="<input name='rename' value='$rename' />"._(": Rename")."<br />";
     }
   
  +  $multiform="<select name='multiform' />\n";
  +  for ($i=2;$i<=10;$i++)
  +    $multiform.="<option value='$i'>$i</option>\n";
  +  $multiform.="</select><input type='submit' value='Multiple upload form' />\n";
  +
     $url=$formatter->link_url($formatter->page->urlname);
  -  $form= <<<EOF
  +
  +  $count= ($options['multiform'] > 1) ? $options['multiform']:1;
  +
  +  $form="<form enctype='multipart/form-data' method='post' action='$url'>\n";
  +  $form.="<input type='hidden' name='action' value='UploadFile' />\n";
  +  for ($j=0;$j<$count;$j++) {
  +    if ($count > 1) $suffix="[$j]";
  +    $form.= <<<EOF
  +   <input type='file' name='upfile$suffix' size='30' />
  +EOF;
  +    if ($count == 1) $form.="<input type='submit' value='Upload' />";
  +    $form.= <<<EOF
  +<br/>
  +   $extra
  +   <input type='radio' name='replace$suffix' value='1' />Replace original file<br />
  +   <input type='radio' name='replace$suffix' value='0' checked='checked' />Rename if it already exist<br />\n
  +EOF;
  +  }
  +  if ($count > 1) $form.="<input type='submit' value='Upload files' />";
  +  $form.="</form>\n";
  +
  +  $multiform= <<<EOF
   <form enctype="multipart/form-data" method='post' action='$url'>
      <input type='hidden' name='action' value='UploadFile' />
  -   <input type='file' name='upfile' size='30' />
  -   <input type='submit' value='Upload' /><br />
  -   $extra
  -   <input type='radio' name='replace' value='1' />Replace original file<br />
  -   <input type='radio' name='replace' value='0' checked='checked' />Rename if it already exist<br />
  +   $multiform
   </form>
   EOF;
   
  -   if (!in_array('UploadedFiles',$formatter->actions))
  -     $formatter->actions[]='UploadedFiles';
  +  if (!in_array('UploadedFiles',$formatter->actions))
  +    $formatter->actions[]='UploadedFiles';
   
  -   return $form;
  +  return $form.$multiform;
   }
   
   ?>
  
  
  


wkpark      04/08/13 16:01:36

  Modified:    plugin   UploadFile.php
  Log:
  fix last changes
  
  Revision  Changes    Path
  1.4       +33 -17    moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- UploadFile.php	12 Aug 2004 17:04:37 -0000	1.3
  +++ UploadFile.php	13 Aug 2004 07:01:35 -0000	1.4
  @@ -4,23 +4,22 @@
   // a UploadFile plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: UploadFile.php,v 1.3 2004/08/12 17:04:37 wkpark Exp $
  +// $Id: UploadFile.php,v 1.4 2004/08/13 07:01:35 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  -  # replace space and ':' strtr()
  -  $files=array();
     if (is_array($_FILES)) {
  -    if (is_array($_FILES['upfile']['name'])) {
  -      $options['multiform']=sizeof($_FILES['upfile']['name']);
  +    if (($options['multiform'] > 1) or is_array($_FILES['upfile']['name'])) {
  +      $options['multiform']=$options['multiform'] ?
  +         $options['multiform']:sizeof($_FILES['upfile']['name']);
         $count=$options['multiform'];
         $files=&$_FILES;
       } else {
         $count=1;
         $files['upfile']['name'][]=&$_FILES['upfile']['name'];
         $files['upfile']['tmp_name'][]=&$_FILES['upfile']['tmp_name'];
  -      $options['rename'][]=$options['rename'];
  -      $options['replace'][]=$options['replace'];
  +      $options['rename'][0]=$options['rename'];
  +      $options['replace'][0]=$options['replace'];
       }
     } else
       $files=array();
  @@ -52,8 +51,12 @@
       umask(02);
     }
     $REMOTE_ADDR=$_SERVER['REMOTE_ADDR'];
  +  $comment.="File ";
   
     for ($j=0;$j<$count;$j++) {
  +
  +  # replace space and ':' strtr()
  +  $files=array();
     $upfilename=str_replace(" ","_",$files['upfile']['name'][$j]);
     $upfilename=str_replace(":","_",$upfilename);
   
  @@ -74,7 +77,7 @@
     $filename=$upfilename;
     if ($options['rename'][$j]) {
       # XXX
  -    $temp=explode("/",stripslashes($options['rename']));
  +    $temp=explode("/",stripslashes($options['rename'][$j]));
       $upfilename= $temp[count($temp)-1];
   
       preg_match("/(.*)\.([a-z0-9]{1,4})$/i",$upfilename,$tname);
  @@ -108,7 +111,7 @@
   
     chmod($newfile_path,0644);
   
  -  $comment.="File '$upfilename' uploaded";
  +  $comment.="'$upfilename' ";
   
     $title.=sprintf(_("File \"%s\" is uploaded successfully"),$upfilename).'<br />';
     if ($key == 'UploadFile')
  @@ -120,6 +123,7 @@
   
     } // multiple upload
   
  +  $comment.="uploaded";
     $DBInfo->addLogEntry($key, $REMOTE_ADDR,$comment,"UPLOAD");
     
     $formatter->send_header("",$options);
  @@ -136,16 +140,22 @@
   }
   
   function macro_UploadFile($formatter,$value='',$options='') {
  +  $use_multi=1;
  +  $multiform='';
     if ($options['rename'] and !is_array($options['rename'])) {
  -    $rename=stripslashes($options['rename']);
  -    $extra="<input name='rename' value='$rename' />"._(": Rename")."<br />";
  +    // rename option used by "attachment:" and it does not use multiple form.
  +    $rename=$options['rename'];
  +    $options['rename']=array();
  +    $options['rename'][0]=$rename;
  +    $use_multi=0;
  +  }
  +  if ($use_multi) {
  +    $multiform="<select name='multiform' />\n";
  +    for ($i=2;$i<=10;$i++)
  +      $multiform.="<option value='$i'>$i</option>\n";
  +    $multiform.="</select><input type='submit' value='Multi upload form' />\n";
     }
   
  -  $multiform="<select name='multiform' />\n";
  -  for ($i=2;$i<=10;$i++)
  -    $multiform.="<option value='$i'>$i</option>\n";
  -  $multiform.="</select><input type='submit' value='Multiple upload form' />\n";
  -
     $url=$formatter->link_url($formatter->page->urlname);
   
     $count= ($options['multiform'] > 1) ? $options['multiform']:1;
  @@ -154,6 +164,10 @@
     $form.="<input type='hidden' name='action' value='UploadFile' />\n";
     for ($j=0;$j<$count;$j++) {
       if ($count > 1) $suffix="[$j]";
  +    if ($options['rename'][$j]) {
  +      $rename=stripslashes($options['rename'][$j]);
  +      $extra="<input name='rename$suffix' value='$rename' />"._(": Rename")."<br />";
  +    } else $extra='';
       $form.= <<<EOF
      <input type='file' name='upfile$suffix' size='30' />
   EOF;
  @@ -168,12 +182,14 @@
     if ($count > 1) $form.="<input type='submit' value='Upload files' />";
     $form.="</form>\n";
   
  -  $multiform= <<<EOF
  +  if ($use_multi) {
  +    $multiform= <<<EOF
   <form enctype="multipart/form-data" method='post' action='$url'>
      <input type='hidden' name='action' value='UploadFile' />
      $multiform
   </form>
   EOF;
  +  }
   
     if (!in_array('UploadedFiles',$formatter->actions))
       $formatter->actions[]='UploadedFiles';
  
  
  


wkpark      04/08/13 16:02:34

  Modified:    plugin   Gallery.php
  Log:
  fix last changes
  
  Revision  Changes    Path
  1.9       +23 -15    moniwiki/plugin/Gallery.php
  
  Index: Gallery.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Gallery.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Gallery.php	12 Aug 2004 05:52:42 -0000	1.8
  +++ Gallery.php	13 Aug 2004 07:02:30 -0000	1.9
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Gallery]]
   //
  -// $Id: Gallery.php,v 1.8 2004/08/12 05:52:42 wkpark Exp $
  +// $Id: Gallery.php,v 1.9 2004/08/13 07:02:30 wkpark Exp $
   // vim:et:ts=2:
   
   function get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
  @@ -62,6 +62,8 @@
       $formatter->actions[]='UploadedFiles';
     }
   
  +  $default_width=$DBInfo->gallery_img_width ? $DBInfo->gallery_img_width:600;
  +
     if ($value) {
       $key=$DBInfo->pageToKeyname($value);
       if ($key != $value)
  @@ -108,7 +110,7 @@
       if ($options['id']=='Anonymous') $name=$_SERVER['REMOTE_ADDR'];
       else $name=$options['id'];
       if ($options['name']) $name=$options['name'];
  -    $date=date("@ Y-m-d");
  +    $date=date("(Y-m-d H:i:s) ");
   
       $comment=stripslashes($options['comment']);
       $comment=str_replace("\r","",$comment);
  @@ -126,6 +128,7 @@
       $comments=array();
       $upfiles[$file]=$mtime;
       $comments[$file]=$comment;
  +    $selected=1;
     }
   
     $mtime=file_exists($dir."/list.txt") ? filemtime($dir."/list.txt"):0;
  @@ -160,7 +163,7 @@
     if (!$prefix) $prefix=$DBInfo->url_prefix."/".$dir."/";
   
     $col=3;
  -  $width=150;
  +  $width=$selected ? $default_width:150;
     $perpage=$col*4;
   
     $pages= intval(sizeof($upfiles) / $perpage);
  @@ -177,27 +180,26 @@
   
     if (!file_exists($dir."/thumbnails")) mkdir($dir."/thumbnails",0777);
   
  -
     while (list($file,$mtime) = each ($upfiles)) {
       $size=filesize($dir."/".$file);
       $id=rawurlencode($file);
  -    $link=$prefix.$id;
  +    $linksrc=$prefix.$id;
  +    $link=$selected ? $prefix.$id:$formatter->link_url($formatter->page->urlname,"?action=gallery&amp;value=$id");
       $date=date("Y-m-d",$mtime);
       if (preg_match("/\.(jpg|jpeg|gif|png)$/i",$file)) {
         if ($DBInfo->use_covert_thumbs and !file_exists($dir."/thumbnails/".$file)) {
           system("convert -scale ".$width." ".$dir."/".$file." ".$dir."/thumbnails/".$file);
         }
  -      if (file_exists($dir."/thumbnails/".$file)) {
  +      if (!$selected and file_exists($dir."/thumbnails/".$file)) {
           $thumb=$prefix."thumbnails/".rawurlencode($file);
           $object="<img src='$thumb' alt='$file' />";
         } else {
  -        $object="<img src='$link' width='$width' alt='$file' />";
  +        $object="<img src='$linksrc' width='$width' alt='$file' />";
         }
       }
       else
         $object=$file;
   
  -
       $unit=array('Bytes','KB','MB','GB','TB');
       $i=0;
       for (;$i<4;$i++) {
  @@ -210,7 +212,7 @@
   #    $size=round($size,2).' '.$unit[$i];
   
       $comment='';
  -    $comment_btn=_("comment");
  +    $comment_btn=_("add comment");
       if ($comments[$file] != '' and $options['value']) {
         $comment=$comments[$file];
         $comment=str_replace("\\n","\n",$comment);
  @@ -252,7 +254,6 @@
   
     if ($options['admin'] and $options['comments'] and !$DBInfo->security->is_valid_password($options['passwd'],$options)) {
       $title= sprintf('Invalid password !');
  -    $formatter->send_header("",$options);
       $formatter->send_title($title);
       $formatter->send_footer();
       return;
  @@ -260,10 +261,21 @@
   
     $ret=macro_Gallery($formatter,'',&$options);
   
  +  if ($options['passwd'] and $options['comments']) {
  +    $options['msg']=sprintf(_("Go back or return to %s"),$formatter->link_tag($formatter->page->urlname,"",$options['page']));
  +    $options['title']=_("Comments are edited");
  +  } else if ($options['comment']) {
  +    $options['msg']=sprintf(_("Go back or return to %s"),$formatter->link_tag($formatter->page->urlname,"",$options['page']));
  +    $options['title']=_("Comments is added");
  +  }
  +
     if (!$options['value']) {
       $formatter->send_title("","",$options);
       print $ret;
     } else
  +  if ($options['comment'] or ($options['comments'] and $options['passwd'])) {
  +    $formatter->send_title("","",$options);
  +  } else
     if ($options['comments'] and $options['admin'] and !$options['passwd']) {
       // admin form
       $rows+=5;
  @@ -286,10 +298,6 @@
   </form>
   FORM2;
       print $form;
  -
  -  } else if ($options['passwd'] and $options['comments']) {
  -    $options['msg']=sprintf(_("Go back or return to %s"),$formatter->link_tag($formatter->page->urlname,"",$options['page']));
  -    $formatter->send_title(_("Comments are edited "),"",$options);
     } else if (!$options['comment']) {
       // add comment form
       $formatter->send_title("","",$options);
  @@ -311,10 +319,10 @@
   </form>
   FORM2;
       print $form;
  -
     }
   
     $formatter->send_footer("",$options);
  +  return;
   }
   
   ?>
  
  
  


wkpark      04/08/13 17:27:27

  Modified:    plugin/processor blog.php
  Log:
  fixed #300164: pagename based anchor tag
  
  Revision  Changes    Path
  1.14      +9 -3      moniwiki/plugin/processor/blog.php
  
  Index: blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/blog.php,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- blog.php	2 Aug 2004 11:24:55 -0000	1.13
  +++ blog.php	13 Aug 2004 08:27:26 -0000	1.14
  @@ -7,7 +7,7 @@
   // Hello World
   // }}}
   // this processor is used internally by the Blog action
  -// $Id: blog.php,v 1.13 2004/08/02 11:24:55 wkpark Exp $
  +// $Id: blog.php,v 1.14 2004/08/13 08:27:26 wkpark Exp $
   
   function processor_blog($formatter,$value="",$options) {
     static $date_anchor='';
  @@ -51,11 +51,17 @@
         $date[10]=' ';
         $time=strtotime($date." GMT");
         $date= "@ ".date("m-d [h:i a]",$time);
  -      $anchor= date("d",$time);
  +      $pagename=$formatter->page->name;
  +      $p=strrpos($pagename,'/');
  +      if ($p and preg_match('/(\d{4})(-\d{1,2})?(-\d{1,2})?/',substr($pagename,$p),$match)) {
  +        if ($match[3]) $anchor='';
  +        else if ($match[2]) $anchor= date("d",$time);
  +        else if ($match[1]) $anchor= date("md",$time);
  +      } else
  +        $anchor= date("Ymd",$time);
         if ($date_anchor != $anchor) {
           $datetag= "<div class='blog-date'>".date("M d, Y",$time)." <a name='$anchor' id='$anchor'></a><a class='purple' href='#$anchor'>$formatter->purple_icon</a></div>";
           $date_anchor= $anchor;
  -
         }
       }
       $md5sum=md5(substr($line,7));
  
  
  


wkpark      04/08/13 17:45:24

  Modified:    doc      theme.php.sample
  Log:
  add print icon
  
  Revision  Changes    Path
  1.2       +18 -16    moniwiki/doc/theme.php.sample
  
  Index: theme.php.sample
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/doc/theme.php.sample,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- theme.php.sample	10 Aug 2003 12:03:57 -0000	1.1
  +++ theme.php.sample	13 Aug 2004 08:45:24 -0000	1.2
  @@ -1,23 +1,24 @@
   <?php
   $iconset='moni';
   $imgdir=$themeurl."/imgs";
  -$icon[upper]="<img src='$imgdir/$iconset-upper.gif' alt='U' align='middle' border='0' />";
  -$icon[edit]="<img src='$imgdir/$iconset-edit.gif' alt='E' align='middle' border='0' />";
  -$icon[diff]="<img src='$imgdir/$iconset-diff.gif' alt='D' align='middle' border='0' />";
  -$icon[del]="<img src='$imgdir/$iconset-deleted.gif' alt='(del)' align='middle' border='0' />";
  -$icon[info]="<img src='$imgdir/$iconset-info.gif' alt='I' align='middle' border='0' />";
  -$icon[rss]="<img src='$imgdir/$iconset-rss.gif' alt='RSS' align='middle' border='0' />";
  -$icon[show]="<img src='$imgdir/$iconset-show.gif' alt='R' align='middle' border='0' />";
  -$icon[find]="<img src='$imgdir/$iconset-search.gif' alt='S' align='middle' border='0' />";
  -$icon[help]="<img src='$imgdir/$iconset-help.gif' alt='H' align='middle' border='0' />";
  -$icon[www]="<img src='$imgdir/$iconset-www.gif' alt='www' align='middle' border='0' />";
  -$icon[mailto]="<img src='$imgdir/$iconset-email.gif' alt='M' align='middle' border='0' />";
  -$icon[create]="<img src='$imgdir/$iconset-create.gif' alt='N' align='middle' border='0' />";
  +$icon['upper']="<img src='$imgdir/$iconset-upper.gif' alt='U' align='middle' border='0' />";
  +$icon['edit']="<img src='$imgdir/$iconset-edit.gif' alt='E' align='middle' border='0' />";
  +$icon['diff']="<img src='$imgdir/$iconset-diff.gif' alt='D' align='middle' border='0' />";
  +$icon['del']="<img src='$imgdir/$iconset-deleted.gif' alt='(del)' align='middle' border='0' />";
  +$icon['info']="<img src='$imgdir/$iconset-info.gif' alt='I' align='middle' border='0' />";
  +$icon['rss']="<img src='$imgdir/$iconset-rss.gif' alt='RSS' align='middle' border='0' />";
  +$icon['show']="<img src='$imgdir/$iconset-show.gif' alt='R' align='middle' border='0' />";
  +$icon['find']="<img src='$imgdir/$iconset-search.gif' alt='S' align='middle' border='0' />";
  +$icon['help']="<img src='$imgdir/$iconset-help.gif' alt='H' align='middle' border='0' />";
  +$icon['www']="<img src='$imgdir/$iconset-www.gif' alt='www' align='middle' border='0' />";
  +$icon['mailto']="<img src='$imgdir/$iconset-email.gif' alt='M' align='middle' border='0' />";
  +$icon['create']="<img src='$imgdir/$iconset-create.gif' alt='N' align='middle' border='0' />";
   $icon['new']="<img src='$imgdir/$iconset-new.gif' alt='U' align='middle' border='0' />";
  -$icon[updated]="<img src='$imgdir/$iconset-updated.gif' alt='U' align='middle' border='0' />";
  -$icon[user]="UserPreferences";
  -$icon[home]="<img src='$imgdir/$iconset-home.gif' alt='M' align='middle' border='0' />";
  -$icon[xml]="<img src='$imgdir/$iconset-xml.gif' alt='M' align='middle' border='0' />";
  +$icon['updated']="<img src='$imgdir/$iconset-updated.gif' alt='U' align='middle' border='0' />";
  +$icon['user']="UserPreferences";
  +$icon['home']="<img src='$imgdir/$iconset-home.gif' alt='M' align='middle' border='0' />";
  +$icon['xml']="<img src='$imgdir/$iconset-xml.gif' alt='X' align='middle' border='0' />";
  +$icon['print']="<img src='$imgdir/$iconset-print.gif' alt='P' align='middle' border='0' />";
   
   $icon_sep=' ';
   $icon_cat=' ';
  @@ -31,6 +32,7 @@
      array("","?action=subscribe",$icon['mailto']),
      array("HelpContents","",$icon['help']),
      array("","?action=format&amp;mimetype=text/xml",$icon['xml']),
  +   array("","?action=print",$icon['print']),
   );
   
   #$icons=array(
  
  
  


wkpark      04/08/13 18:22:35

  Modified:    doc      theme.php.sample
  Log:
  add attach icon
  
  Revision  Changes    Path
  1.3       +1 -0      moniwiki/doc/theme.php.sample
  
  Index: theme.php.sample
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/doc/theme.php.sample,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- theme.php.sample	13 Aug 2004 08:45:24 -0000	1.2
  +++ theme.php.sample	13 Aug 2004 09:22:35 -0000	1.3
  @@ -19,6 +19,7 @@
   $icon['home']="<img src='$imgdir/$iconset-home.gif' alt='M' align='middle' border='0' />";
   $icon['xml']="<img src='$imgdir/$iconset-xml.gif' alt='X' align='middle' border='0' />";
   $icon['print']="<img src='$imgdir/$iconset-print.gif' alt='P' align='middle' border='0' />";
  +$icon['attach']="<img src='$imgdir/$iconset-attach.gif' alt='@' align='middle' border='0' />";
   
   $icon_sep=' ';
   $icon_cat=' ';
  
  
  


wkpark      04/08/13 19:22:53

  Modified:    plugin   rss_blog.php
  Log:
  fixed GMT time
  
  Revision  Changes    Path
  1.15      +4 -2      moniwiki/plugin/rss_blog.php
  
  Index: rss_blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rss_blog.php,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- rss_blog.php	30 Dec 2003 02:02:46 -0000	1.14
  +++ rss_blog.php	13 Aug 2004 10:22:53 -0000	1.15
  @@ -4,7 +4,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a rss_blog action plugin for the MoniWiki
   //
  -// $Id: rss_blog.php,v 1.14 2003/12/30 02:02:46 wkpark Exp $
  +// $Id: rss_blog.php,v 1.15 2004/08/13 10:22:53 wkpark Exp $
   
   if (!function_exists('macro_BlogChanges'))
     if ($plugin=getPlugin('BlogChanges')) include_once("plugin/$plugin.php");
  @@ -130,7 +130,9 @@
     $url=qualifiedUrl($formatter->link_url(_urlencode($page)));
   
     /* RFC 822 date format for RSS 2.0 */
  -  $pubDate=gmdate("D, j M Y H:i:s T",strtotime($date));
  +  $date[10]=' ';
  +  $zone='+0000';
  +  $pubDate=gmdate("D, j M Y H:i:s T",strtotime(substr($date,0,19).$zone));
   
     /* purple link */
     $tag=md5($user." ".$date." ".$title);
  
  
  


wkpark      04/08/13 19:45:18

  Modified:    plugin   rss_rc.php
  Log:
  fixed #300302: escape '&'
  
  Revision  Changes    Path
  1.8       +3 -2      moniwiki/plugin/rss_rc.php
  
  Index: rss_rc.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rss_rc.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- rss_rc.php	30 Aug 2003 12:00:16 -0000	1.7
  +++ rss_rc.php	13 Aug 2004 10:45:18 -0000	1.8
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // rss_rc action plugin for the MoniWiki
   //
  -// $Id: rss_rc.php,v 1.7 2003/08/30 12:00:16 wkpark Exp $
  +// $Id: rss_rc.php,v 1.8 2004/08/13 10:45:18 wkpark Exp $
   
   function do_rss_rc($formatter,$options) {
     global $DBInfo;
  @@ -79,8 +79,9 @@
   
       $channel.="<rdf:li rdf:resource=\"$url\"></rdf:li>\n";
   
  +    $valid_page_name=str_replace('&','&amp;',$page_name);
       $items.="<item rdf:about=\"$url#$datetag\">\n";
  -    $items.="  <title>$page_name</title>\n";
  +    $items.="  <title>$valid_page_name</title>\n";
       $items.="  <link>$url</link>\n";
       $items.="  <dc:date>$date</dc:date>\n";
       $items.="  <description>$html</description>\n";
  
  
  


wkpark      04/08/13 20:37:44

  Modified:    .        wikilib.php
  Log:
  fixed #300180 (email notification)
  fixed #300337 (macro_TitleIndex sorting bug)
  
  Revision  Changes    Path
  1.105     +19 -10    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.104
  retrieving revision 1.105
  diff -u -r1.104 -r1.105
  --- wikilib.php	2 Aug 2004 13:58:03 -0000	1.104
  +++ wikilib.php	13 Aug 2004 11:37:44 -0000	1.105
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.104 2004/08/02 13:58:03 wkpark Exp $
  +// $Id: wikilib.php,v 1.105 2004/08/13 11:37:44 wkpark Exp $
   
   function find_needle($body,$needle,$count=0) {
     if (!$body) return '';
  @@ -304,10 +304,10 @@
   
     function isSubscribedPage($pagename) {
       if (!$this->info['email'] or !$this->info['subscribed_pages']) return false;
  -    $page_list=explode("\t",$this->info['subscribed_pages']);
  +    $page_list=_preg_search_escape($this->info['subscribed_pages']);
       if (!trim($page_list)) return false;
  -    $page_list=_preg_search_escape($page_list);
  -    $page_rule=join("|",$page_list);
  +    $page_lists=explode("\t",$page_list);
  +    $page_rule='^'.join("$|^",$page_lists).'$';
       if (preg_match('/('.$page_rule.')/',$pagename))
         return true;
       return false;
  @@ -829,7 +829,7 @@
       $comment=stripslashes($options['comment']);
       $formatter->page->write($savetext);
       $ret=$DBInfo->savePage($formatter->page,$comment,$options);
  -    if ($DBInfo->notify) {
  +    if (($ret != -1) and $DBInfo->notify) {
         $options['noaction']=1;
         if (!function_exists('mail')) {
           $options['msg']=sprintf(_("mail does not supported by default."))."<br />";
  @@ -1189,7 +1189,7 @@
            return $ukey;
          }
       }
  -    return '~';
  +    return 'Others';
     } else {
       if (preg_match('/[a-z0-9]/i',$name[0])) {
         return strtoupper($name[0]);
  @@ -1312,7 +1312,8 @@
         $all_pages[]=str_replace($formatter->group,"",$page);
     } else
       $all_pages = $DBInfo->getPageLists();
  -  natcasesort($all_pages);
  +  #natcasesort($all_pages);
  +  sort($all_pages,SORT_STRING);
   
     $key=-1;
     $out="";
  @@ -1339,13 +1340,21 @@
   #    else
         $title=get_title($page);
   
  -    $out.= '<li>' . $formatter->word_repl('"'.$page.'"',$title)."</li>\n";
  +    $out.= '<li>' . $formatter->word_repl('"'.$page.'"',$title);
  +    $keyname=$DBInfo->pageToKeyname(urldecode($page));
  +    if (is_dir($DBInfo->upload_dir."/$keyname"))
  +       $out.=' '.$formatter->link_tag(_urlencode($page),"?action=uploadedfiles",
  +         $formatter->icon['attach']);
  +    $out.="</li>\n";
     }
     $out.= "</ul>\n";
   
     $index="";
  -  foreach ($keys as $key)
  -    $index.= "| <a href='#$key'>$key</a> ";
  +  foreach ($keys as $key) {
  +    $name=$key;
  +    if ($key == 'Others') $name=_("Others");
  +    $index.= "| <a href='#$key'>$name</a> ";
  +  }
     $index[0]=" ";
     
     return "<center><a name='top' />$index</center>\n$out";
  
  
  


wkpark      04/08/13 20:39:01

  Modified:    .        wiki.php
  Log:
  add 'print' 'attach' icons
  
  Revision  Changes    Path
  1.141     +4 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.140
  retrieving revision 1.141
  diff -u -r1.140 -r1.141
  --- wiki.php	11 Aug 2004 12:53:42 -0000	1.140
  +++ wiki.php	13 Aug 2004 11:39:01 -0000	1.141
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.140 2004/08/11 12:53:42 wkpark Exp $
  +// $Id: wiki.php,v 1.141 2004/08/13 11:39:01 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.140 $',1,-1);
  +$_revision = substr('$Revision: 1.141 $',1,-1);
   $_release = '1.0.8';
   
   #ob_start("ob_gzhandler");
  @@ -520,6 +520,8 @@
       $this->icon['user']="UserPreferences";
       $this->icon['home']="<img src='$imgdir/$iconset-home.gif' alt='M' align='middle' border='0' />";
       $this->icon['main']="<img src='$imgdir/$iconset-main.gif' alt='^' align='middle' border='0' />";
  +    $this->icon['print']="<img src='$imgdir/$iconset-print.gif' alt='P' align='middle' border='0' />";
  +    $this->icon['attach']="<img src='$imgdir/$iconset-attach.gif' alt='@' align='middle' border='0' />";
       $this->icon_sep=" ";
       $this->icon_bra=" ";
       $this->icon_cat=" ";
  
  
  


wkpark      04/08/13 20:41:49

  Added:       imgs     brights-16.png https.png moni-attach.gif
                        moni-print.gif popup.png
  Log:
  add some icons
  add interwiki icons from BrightKorea
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/brights-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/https.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni-attach.gif
  
  	<<Binary file>>
  
  
  1.2       +3 -0      moniwiki/imgs/moni-print.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/popup.png
  
  	<<Binary file>>
  
  


wkpark      04/08/13 20:50:05

  Modified:    plugin   Blog.php
  Log:
  fixed #300271: do not make a clone
  
  Revision  Changes    Path
  1.16      +20 -2     moniwiki/plugin/Blog.php
  
  Index: Blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Blog.php,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- Blog.php	2 Aug 2004 02:52:58 -0000	1.15
  +++ Blog.php	13 Aug 2004 11:50:04 -0000	1.16
  @@ -5,7 +5,7 @@
   //
   // Usage: ?action=Blog
   //
  -// $Id: Blog.php,v 1.15 2004/08/02 02:52:58 wkpark Exp $
  +// $Id: Blog.php,v 1.16 2004/08/13 11:50:04 wkpark Exp $
   // vim:et:ts=2:
   
   function updateBlogList($formatter) {
  @@ -75,6 +75,13 @@
       $savetext=str_replace("----\n","-''''''---\n",$savetext);
       #$savetext=str_replace("<","&lt;",$savetext);
     }
  +
  +  # for conflict check
  +  if ($options['datestamp'])
  +     $datestamp= $options['datestamp'];
  +  else
  +     $datestamp= $formatter->page->mtime();
  +
     if ($options['title'])
       $options['title']=stripslashes($options['title']);
     if (!$options['button_preview'] && $savetext) {
  @@ -124,10 +131,19 @@
             $lines[$i]="----\n$savetext -- $id @DATE@\n$endtag";
           $raw_body=join("\n",$lines);
         } else {
  -        $formatter->send_title("Error: No entry found!","",$options);
  +        $formatter->send_title(_("Error: No blog entry found!"),"",$options);
  +        $formatter->send_footer("",$options);
           return;
         }
       } else { # Blog entry
  +      // check timestamp
  +      if ($formatter->page->mtime() > $datestamp) {
  +        $options['msg']='';
  +        $formatter->send_title(_("Error: Don't make a clone!"),"",$options);
  +        $formatter->send_footer("",$options);
  +        return;
  +      }
  +
         $entry="{{{#!blog $id @date@";
         if ($options['title'])
           $entry.=" ".$options['title'];
  @@ -177,6 +193,7 @@
         if (!$title) $title=$options['page'];
         if (!$found) {
           $formatter->send_title("Error: No entry found!","",$options);
  +        $formatter->send_footer("",$options);
           return;
         }
         $formatter->send_title(sprintf(_("Add Comment to \"%s\""),$title),"",$options);
  @@ -203,6 +220,7 @@
         print "<input name='nosig' type='checkbox' />"._("Don't add a signature")."<br />";
       print <<<FORM2
   <input type="hidden" name="action" value="Blog" />
  +<input type="hidden" name="datestamp" value="$datestamp" />
   <input type="submit" value="Save" />&nbsp;
   <input type="reset" value="Reset" />&nbsp;
   <input type="submit" name="button_preview" value="Preview" />
  
  
  


wkpark      04/08/13 20:52:36

  Modified:    plugin   Calendar.php
  Log:
  fixed #300191 + small changes: now support prev/next links
  
  Revision  Changes    Path
  1.6       +54 -8     moniwiki/plugin/Calendar.php
  
  Index: Calendar.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Calendar.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Calendar.php	10 Aug 2003 08:20:36 -0000	1.5
  +++ Calendar.php	13 Aug 2004 11:52:35 -0000	1.6
  @@ -7,27 +7,59 @@
   #-----usage: generate_calendar(2001, 11, $day_func, 2);-------------------------
   #------(last two arguments are optional)----------------------------------------
   #-------------------------------------------------------------------------------
  -# $Id: Calendar.php,v 1.5 2003/08/10 08:20:36 wkpark Exp $
  +# $Id: Calendar.php,v 1.6 2004/08/13 11:52:35 wkpark Exp $
   
   function macro_Calendar($formatter,$value="",$option="") {
   	global $DBInfo;
  +
  +	$date=$_GET['date'];
  +
  +	$year_prev_tag='&laquo;';
  +	$year_next_tag='&raquo;';
  +	$prev_tag='&lsaquo;';
  +	$next_tag='&rsaquo;';
  +
   	static $day_headings= array('Sunday','Monday','Tuesday','Wednesday',
   		'Thursday','Friday','Saturday');
   	$day_heading_length = 3;
   
   	preg_match("/^((\d{4})-(\d{2}))?,?\s*([a-z, ]+)?$/i",$value,$match);
  -	if ($match[1]) {
  +
  +	/* GET argument has priority */
  +	if ($date) {
  +		$year = substr($date, 0, 4);
  +		$month = substr($date, 5);
  +	} else if ($match[1]) {
   		$year= $match[2];
   		$month= $match[3];
  -	} else {
  +	}
  +	/* Validate date. Use system date, if date is not validated */
  +	if ($month <1 || $month > 12) {
   		$year= date('Y');
   		$month= date('m');
   	}
  +
  +	/* Calculate next/prev months and next/prev years */
  +	$next_year = ($year+1).'-'.$month;
  +	$prev_year = ($year-1).'-'.$month;
  +
  +	/* January */
  +	if ($month==1)
  +		$prev_month = ($year-1).'-12';
  +	else
  +		$prev_month = $year.'-'.($month-1);
  +	/* December */
  +	if ($month==12)
  +		$next_month = ($year+1).'-1';
  +	else
  +		$next_month = $year.'-'.($month+1);
  +
   	if ($match[4]) {
  -    $args=explode(",",$match[4]);
  +		$args=explode(",",$match[4]);
   
  -    if (in_array ("blog", $args)) $mode='blog';
  -    if (in_array ("noweek", $args)) $day_heading_length=0;
  +		if (in_array ("blog", $args)) $mode='blog';
  +		if (in_array ("noweek", $args)) $day_heading_length=0;
  +		if (in_array ("yearlink", $args)) $yearlink=1;
   	}
   
   	if ($option)
  @@ -53,7 +85,21 @@
   	#use the <caption> tag or just a normal table heading. Take your pick.
   	#http://diveintomark.org/archives/2002/07/03.html#day_18_giving_your_calendar_a_real_caption
   #	$calendar .= "<tr><th colspan=\"7\" class=\"month\">$date_info[month], $year</th></tr>\n";
  -	$calendar.= "<caption class=\"month\">$date_info[month], $year</caption>\n";
  +##	$calendar.= "<caption class=\"month\">$date_info[month], $year</caption>\n";
  +	$calendar.= "<caption class=\"month\">";
  +
  +        /* Adding previous month and year */
  +	if ($yearlink)
  +	$calendar.= $formatter->link_tag($link,"?date=$prev_year",$year_prev_tag).'&nbsp;&nbsp;';
  +	$calendar.= $formatter->link_tag($link,"?date=$prev_month",$prev_tag).'&nbsp;&nbsp;';
  +
  +	$calendar.="$date_info[month] $year";
  +
  +	/* Adding next month and year */
  +	$calendar.= '&nbsp;&nbsp;'.$formatter->link_tag($link,"?date=$next_month",$next_tag);
  +	if ($yearlink)
  +	$calendar.= '&nbsp;&nbsp;'.$formatter->link_tag($link,"?date=$next_year",$year_next_tag);
  +	$calendar.= "</caption>\n";
   
   	# print the day headings "Mon", "Tue", etc.
   	# if day_heading_length is 4, the full name of the day will be printed
  @@ -87,7 +133,7 @@
   			$weekday = 0;
   		}
   
  -		if ($day==$today) {
  +		if ($day==$today and $month == date('m')) {
   			$exists='today" bgcolor="white';
   			$nonexists='today" bgcolor="white';
   			$classes=$nonexists;
  
  
  


wkpark      04/08/13 22:49:57

  Modified:    .        wikilib.php
  Log:
  fix last changes
  
  Revision  Changes    Path
  1.106     +5 -4      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.105
  retrieving revision 1.106
  diff -u -r1.105 -r1.106
  --- wikilib.php	13 Aug 2004 11:37:44 -0000	1.105
  +++ wikilib.php	13 Aug 2004 13:49:57 -0000	1.106
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.105 2004/08/13 11:37:44 wkpark Exp $
  +// $Id: wikilib.php,v 1.106 2004/08/13 13:49:57 wkpark Exp $
   
   function find_needle($body,$needle,$count=0) {
     if (!$body) return '';
  @@ -1198,7 +1198,7 @@
       if (strtolower($DBInfo->charset) == 'euc-kr') {
         $korean=array('','','','','','','','','','','','',
                       '','¥','','ī','Ÿ','','',"\xca");
  -      $lastPosition='~';
  +      $lastPosition='Others';
   
         $letter=substr($name,0,2);
         foreach ($korean as $position) {
  @@ -1207,7 +1207,7 @@
           $lastPosition=$position;
         }
       }
  -    return '~';
  +    return 'Others';
     }
   }
   
  @@ -1323,7 +1323,8 @@
   #    $cache=new Cache_text('title');
   
     foreach ($all_pages as $page) {
  -    $pkey=get_key(ltrim($page));
  +    $p=ltrim($page);
  +    $pkey=get_key("$p");
   #   $key=strtoupper($page[0]);
       if ($key != $pkey) {
          if ($key !=-1)
  
  
  


wkpark      04/08/13 22:52:13

  Modified:    plugin   WordIndex.php
  Log:
  call get_key() with a string
  
  Revision  Changes    Path
  1.4       +13 -7     moniwiki/plugin/WordIndex.php
  
  Index: WordIndex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/WordIndex.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- WordIndex.php	13 Aug 2003 21:34:05 -0000	1.3
  +++ WordIndex.php	13 Aug 2004 13:52:13 -0000	1.4
  @@ -5,7 +5,7 @@
   //
   // Usage: [[WordIndex]]
   //
  -// $Id: WordIndex.php,v 1.3 2003/08/13 21:34:05 wkpark Exp $
  +// $Id: WordIndex.php,v 1.4 2004/08/13 13:52:13 wkpark Exp $
   // vim:et:ts=2:
   
   function macro_WordIndex($formatter,$value) {
  @@ -26,6 +26,8 @@
       $tmp=preg_replace("/((?<=[A-Za-z0-9])[A-Z][a-z0-9])/"," \\1",ucwords($tmp));
       $words=preg_split("/\s+/",$tmp);
       foreach ($words as $word) {
  +      $word=ltrim($word);
  +      if (!$word) continue;
         if ($dict[$word])
           $dict[$word][]=$page;
         else
  @@ -33,17 +35,18 @@
       }
     }
     #ksort($dict);
  -  uksort($dict, "strnatcasecmp");
  +  ksort($dict,SORT_STRING);
  +  #uksort($dict, "strnatcasecmp");
  +  #uksort($dict, "strcasecmp");
   
     $key=-1;
     $out="";
     $keys=array();
     foreach ($dict as $word=>$pages) {
  -    $pkey=get_key($word);
  +    $pkey=get_key("$word");
   #   $key=strtoupper($page[0]);
       if ($key != $pkey) {
  -      if ($key !=-1)
  -        $out.="</ul>";
  +      if ($key !=-1) $out.="</ul>";
         $key=$pkey;
         $keys[]=$key;
         $out.= "<a name='$key' /><h3><a href='#top'>$key</a></h3>\n";
  @@ -57,8 +60,11 @@
     }
   
     $index="";
  -  foreach ($keys as $key)
  -    $index.= "| <a href='#$key'>$key</a> ";
  +  foreach ($keys as $key) {
  +    $name=$key;
  +    if ($key == 'Others') $name=_("Others");
  +    $index.= "| <a href='#$key'>$name</a> ";
  +  }
     $index[0]=" ";
   
     return "<center><a name='top' />$index</center>\n$out";
  
  
  


wkpark      04/08/14 00:04:05

  Modified:    .        config.php.default
  Log:
  add new options
  
  Revision  Changes    Path
  1.10      +4 -1      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- config.php.default	11 Aug 2004 11:30:56 -0000	1.9
  +++ config.php.default	13 Aug 2004 15:04:04 -0000	1.10
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.9 2004/08/11 11:30:56 wkpark Exp $
  +# $Id: config.php.default,v 1.10 2004/08/13 15:04:04 wkpark Exp $
   #
   $sitename='UnnamedWiki';
   $data_dir= './data';
  @@ -77,6 +77,9 @@
   
   #$password_length=6;
   #$use_convert_thumbs=0;
  +
  +#$processors=array('latex'=>'latex');
  +#$inline_latex='mimetex';
   
   #$url_schemas='mms';
   #$vim_options='+"set encoding=utf-8"';
  
  
  


wkpark      04/08/14 00:07:06

  Modified:    .        monisetup.php
  Log:
  fixed #300210: check config strings with eval()
  
  Revision  Changes    Path
  1.12      +8 -4      moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- monisetup.php	3 Jan 2004 14:26:50 -0000	1.11
  +++ monisetup.php	13 Aug 2004 15:07:03 -0000	1.12
  @@ -1,7 +1,7 @@
   <?
   // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.11 2004/01/03 14:26:50 wkpark Exp $
  +// $Id: monisetup.php,v 1.12 2004/08/13 15:07:03 wkpark Exp $
   
   class MoniConfig {
     function MoniConfig($configfile="config.php") {
  @@ -92,8 +92,8 @@
         $val=stripslashes($val);
         if (!isset($val)) $val="''";
         if (!$mode) {
  -        eval("\$dum=$val;");
  -        eval("\$$key=$val;");
  +        @eval("\$dum=$val;");
  +        @eval("\$$key=$val;");
           $conf[$key]=$dum;
         } else {
           $conf[$key]=$val;
  @@ -108,7 +108,11 @@
       while (list($key,$val) = each($config)) {
         if ($key=='admin_passwd' or $key=='purge_passwd')
            $val="'".crypt($val,md5(time()))."'";
  -      $lines[]="\$$key=$val;\n";
  +      $t=@eval("\$$key=$val;");
  +      if ($t === NULL)
  +        $lines[]="\$$key=$val;\n";
  +      else
  +        print "<font color='red'>ERROR:</font> <tt>\$$key=$val;</tt><br/>";
       }
       $lines[]="?>\n";
       return $lines;
  
  
  


wkpark      04/08/14 00:17:20

  Added:       plugin   home.php
  Log:
  add a do_home action
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/home.php
  
  Index: home.php
  ===================================================================
  <?php
  // Copyright 2004 Yoon, Hyunho <hhyoon@kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a home action plugin for the MoniWiki
  //
  // $Id: home.php,v 1.1 2004/08/13 15:17:20 wkpark Exp $
  
  function do_home($formatter, $options)
  {
      global $DBInfo;
  
      if ($options['id'] and $DBInfo->hasPage($options['id']))
          $options['page'] = $options['id'];
      else
          $options['page'] = 'FrontPage';
  
      $options['value'] = $options['page'];
      do_goto($formatter, $options);
      return;
  }
  ?>
  
  
  


iolo        04/08/14 00:48:47

  Modified:    plugin   RecentChanges.php
  Log:
  remove 'id' attribute in the date anchor(it's invalid w3c html that id starts with number).
  thanks likesylph ;)
  
  Revision  Changes    Path
  1.7       +2 -2      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- RecentChanges.php	11 Aug 2004 10:41:38 -0000	1.6
  +++ RecentChanges.php	13 Aug 2004 15:48:47 -0000	1.7
  @@ -4,7 +4,7 @@
   // a RecentChanges plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: RecentChanges.php,v 1.6 2004/08/11 10:41:38 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.7 2004/08/13 15:48:47 iolo Exp $
   
   function do_RecentChanges($formatter,$options='') {
     $options['trail']='';
  @@ -145,7 +145,7 @@
   
       $day = date('Y-m-d', $ed_time);
       if ($use_day and $day != $ratchet_day) {
  -      $purple="<a id='$day' name='$day'></a><a class='purple' href='#$day'>$purple_icon</a>";
  +      $purple="<a name='$day'></a><a class='purple' href='#$day'>$purple_icon</a>";
         $out.=$cat0;
         $out.=sprintf("%s<font class='rc-date' size='+1'>%s </font>$purple<font class='rc-bookmark' size='-1'>",
               $br, date($date_fmt, $ed_time));
  
  
  


wkpark      04/08/14 01:14:35

  Modified:    plugin   UploadFile.php
  Log:
  fixed last changes
  
  Revision  Changes    Path
  1.5       +3 -4      moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- UploadFile.php	13 Aug 2004 07:01:35 -0000	1.4
  +++ UploadFile.php	13 Aug 2004 16:14:35 -0000	1.5
  @@ -4,10 +4,11 @@
   // a UploadFile plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: UploadFile.php,v 1.4 2004/08/13 07:01:35 wkpark Exp $
  +// $Id: UploadFile.php,v 1.5 2004/08/13 16:14:35 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  +  $files=array();
     if (is_array($_FILES)) {
       if (($options['multiform'] > 1) or is_array($_FILES['upfile']['name'])) {
         $options['multiform']=$options['multiform'] ?
  @@ -21,8 +22,7 @@
         $options['rename'][0]=$options['rename'];
         $options['replace'][0]=$options['replace'];
       }
  -  } else
  -    $files=array();
  +  }
   
     $ok=0;
     if ($files) {
  @@ -56,7 +56,6 @@
     for ($j=0;$j<$count;$j++) {
   
     # replace space and ':' strtr()
  -  $files=array();
     $upfilename=str_replace(" ","_",$files['upfile']['name'][$j]);
     $upfilename=str_replace(":","_",$upfilename);
   
  
  
  


iolo        04/08/14 01:26:56

  Modified:    .        wiki.php
  Log:
  fix cvs invalid in search form.
  
  Revision  Changes    Path
  1.142     +5 -5      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.141
  retrieving revision 1.142
  diff -u -r1.141 -r1.142
  --- wiki.php	13 Aug 2004 11:39:01 -0000	1.141
  +++ wiki.php	13 Aug 2004 16:26:55 -0000	1.142
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.141 2004/08/13 11:39:01 wkpark Exp $
  +// $Id: wiki.php,v 1.142 2004/08/13 16:26:55 iolo Exp $
   //
  -$_revision = substr('$Revision: 1.141 $',1,-1);
  +$_revision = substr('$Revision: 1.142 $',1,-1);
   $_release = '1.0.8';
   
   #ob_start("ob_gzhandler");
  @@ -123,9 +123,9 @@
       return "
   <form name='go' id='go' method='get' action='$action'>
   <select name='action' style='width:60px'>
  -<option value='goto'/>goto
  -<option value='titlesearch'/>TitleSearch
  -<option value='fullsearch'/>FullSearch
  +<option value='goto'>goto</option>
  +<option value='titlesearch'>TitleSearch</option>
  +<option value='fullsearch'>FullSearch</option>
   </select>
   <input type='text' name='value' class='goto' accesskey='s' size='20' />
   <input type='submit' name='status' value='Go' />
  
  
  


wkpark      04/08/14 01:44:18

  Modified:    plugin   UploadFile.php
  Log:
  fix rename bug.
  
  Revision  Changes    Path
  1.6       +3 -3      moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- UploadFile.php	13 Aug 2004 16:14:35 -0000	1.5
  +++ UploadFile.php	13 Aug 2004 16:44:18 -0000	1.6
  @@ -4,7 +4,7 @@
   // a UploadFile plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: UploadFile.php,v 1.5 2004/08/13 16:14:35 wkpark Exp $
  +// $Id: UploadFile.php,v 1.6 2004/08/13 16:44:18 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -19,8 +19,8 @@
         $count=1;
         $files['upfile']['name'][]=&$_FILES['upfile']['name'];
         $files['upfile']['tmp_name'][]=&$_FILES['upfile']['tmp_name'];
  -      $options['rename'][0]=$options['rename'];
  -      $options['replace'][0]=$options['replace'];
  +      $options['rename']=array($options['rename']);
  +      $options['replace']=array($options['replace']);
       }
     }
   
  
  
  


wkpark      04/08/14 09:41:51

  Modified:    .        secure.sh
  Log:
  Fixed message (#300452)
  
  Revision  Changes    Path
  1.5       +2 -2      moniwiki/secure.sh
  
  Index: secure.sh
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/secure.sh,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- secure.sh	26 Nov 2003 17:07:56 -0000	1.4
  +++ secure.sh	14 Aug 2004 00:41:51 -0000	1.5
  @@ -1,5 +1,5 @@
   #!/bin/bash
  -# $Id: secure.sh,v 1.4 2003/11/26 17:07:56 verotas Exp $
  +# $Id: secure.sh,v 1.5 2004/08/14 00:41:51 wkpark Exp $
   echo
   echo "+-------------------------------------+"
   echo "|    MoniWiki configuration script    |"
  @@ -19,7 +19,7 @@
   echo "Your MoniWiki is now secure and cannot be configured."
   echo "If you wish to reconfigure it, execute the following command:"
   echo ""
  -echo "    % sh config.sh"
  +echo "    % sh monisetup.sh"
   echo ""
   echo "and open 'monisetup.php' on a web browser."
   echo ""
  
  
  


wkpark      04/08/14 20:19:25

  Modified:    .        wikilib.php
  Log:
  fix deletepage action
  
  Revision  Changes    Path
  1.107     +4 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.106
  retrieving revision 1.107
  diff -u -r1.106 -r1.107
  --- wikilib.php	13 Aug 2004 13:49:57 -0000	1.106
  +++ wikilib.php	14 Aug 2004 11:19:25 -0000	1.107
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.106 2004/08/13 13:49:57 wkpark Exp $
  +// $Id: wikilib.php,v 1.107 2004/08/14 11:19:25 wkpark Exp $
   
   function find_needle($body,$needle,$count=0) {
     if (!$body) return '';
  @@ -588,8 +588,9 @@
     
     $page = $DBInfo->getPage($options['page']);
   
  -  #print $options['name'];
     #print $options['page'];
  +  if ($options['name']) $options['name']=urldecode($options['name']);
  +  $pagename= $formatter->page->urlname;
     if (stripslashes($options['name']) == $options['page']) {
       $DBInfo->deletePage($page,$options);
       $title = sprintf(_("\"%s\" is deleted !"), $page->name);
  @@ -611,7 +612,7 @@
   Only WikiMaster can delete this page<br />\n";
     print "
       <input type='hidden' name='action' value='DeletePage' />
  -    <input type='hidden' name='name' value='$options[page]' />
  +    <input type='hidden' name='name' value='$pagename' />
       <input type='submit' value='Delete page' />
       </form>";
   #  $formatter->send_page();
  
  
  


wkpark      04/08/14 20:46:10

  Modified:    plugin   Calendar.php
  Log:
  fixed conflict 'date' arg with the BlogChanges macro and simplifed
  
  Revision  Changes    Path
  1.7       +14 -19    moniwiki/plugin/Calendar.php
  
  Index: Calendar.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Calendar.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- Calendar.php	13 Aug 2004 11:52:35 -0000	1.6
  +++ Calendar.php	14 Aug 2004 11:46:08 -0000	1.7
  @@ -7,7 +7,7 @@
   #-----usage: generate_calendar(2001, 11, $day_func, 2);-------------------------
   #------(last two arguments are optional)----------------------------------------
   #-------------------------------------------------------------------------------
  -# $Id: Calendar.php,v 1.6 2004/08/13 11:52:35 wkpark Exp $
  +# $Id: Calendar.php,v 1.7 2004/08/14 11:46:08 wkpark Exp $
   
   function macro_Calendar($formatter,$value="",$option="") {
   	global $DBInfo;
  @@ -23,12 +23,13 @@
   		'Thursday','Friday','Saturday');
   	$day_heading_length = 3;
   
  -	preg_match("/^((\d{4})-(\d{2}))?,?\s*([a-z, ]+)?$/i",$value,$match);
  +	preg_match("/^((\d{4})-?(\d{2}))?,?\s*([a-z, ]+)?$/i",$value,$match);
   
   	/* GET argument has priority */
   	if ($date) {
  -		$year = substr($date, 0, 4);
  -		$month = substr($date, 5);
  +		preg_match("/^((\d{4})-?(\d{1,2}))$/i",$date,$match2);
  +		$year= $match2[2];
  +		$month= $match2[3];
   	} else if ($match[1]) {
   		$year= $match[2];
   		$month= $match[3];
  @@ -38,21 +39,8 @@
   		$year= date('Y');
   		$month= date('m');
   	}
  -
  -	/* Calculate next/prev months and next/prev years */
  -	$next_year = ($year+1).'-'.$month;
  -	$prev_year = ($year-1).'-'.$month;
  -
  -	/* January */
  -	if ($month==1)
  -		$prev_month = ($year-1).'-12';
  -	else
  -		$prev_month = $year.'-'.($month-1);
  -	/* December */
  -	if ($month==12)
  -		$next_month = ($year+1).'-1';
  -	else
  -		$next_month = $year.'-'.($month+1);
  +	$month=intval($month);
  +	$year=intval($year);
   
   	if ($match[4]) {
   		$args=explode(",",$match[4]);
  @@ -60,6 +48,13 @@
   		if (in_array ("blog", $args)) $mode='blog';
   		if (in_array ("noweek", $args)) $day_heading_length=0;
   		if (in_array ("yearlink", $args)) $yearlink=1;
  +	}
  +
  +	$prev_month=date('Ym',mktime(0,0,0,$month - 1,1,$year));
  +	$next_month=date('Ym',mktime(0,0,0,$month + 1,1,$year));
  +	if ($yearlink) {
  +		$prev_year=date('Ym',mktime(0,0,0,$month,1,$year - 1));
  +		$next_year=date('Ym',mktime(0,0,0,$month,1,$year + 1));
   	}
   
   	if ($option)
  
  
  


wkpark      04/08/14 20:48:04

  Modified:    plugin   Blog.php
  Log:
  properly regenerate 'blogchanges' caches
  
  Revision  Changes    Path
  1.17      +21 -5     moniwiki/plugin/Blog.php
  
  Index: Blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Blog.php,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- Blog.php	13 Aug 2004 11:50:04 -0000	1.16
  +++ Blog.php	14 Aug 2004 11:48:04 -0000	1.17
  @@ -5,14 +5,29 @@
   //
   // Usage: ?action=Blog
   //
  -// $Id: Blog.php,v 1.16 2004/08/13 11:50:04 wkpark Exp $
  -// vim:et:ts=2:
  +// $Id: Blog.php,v 1.17 2004/08/14 11:48:04 wkpark Exp $
   
   function updateBlogList($formatter) {
     global $DBInfo;
  -  $body=$formatter->page->get_raw_body();
     $cache=new Cache_text("blog");
     $changecache=new Cache_text("blogchanges");
  +
  +  $rule="/^(\d*)".'_2e'.$DBInfo->pageToKeyname($formatter->page->name).'$/';
  +
  +  $handle = @opendir($DBInfo->cache_dir."/blogchanges");
  +  if ($handle) {
  +    while (($file = readdir($handle)) !== false) {
  +      if (preg_match($rule,$file,$match)) {
  +        $fname=$DBInfo->cache_dir."/blogchanges/".$file;
  +        if (is_dir($fname)) continue;
  +        print $fname;
  +        unlink($fname);
  +      }
  +    }
  +    closedir($handle);
  +  }
  +
  +  $body=$formatter->page->get_raw_body();
     $lines=explode("\n",$body);
   
     $date=0;
  @@ -35,7 +50,7 @@
           if ($date) {
             $log=join("\n",$entries)."\n";
             $logs.=$log;
  -          $changecache->update($date.".".$formatter->page->name,$log);
  +          $changecache->update($date.'.'.$formatter->page->name,$log);
             $entries=array();
           }
           $date=$datestamp;
  @@ -45,7 +60,7 @@
       }
     }
     $log=join("\n",$entries)."\n";
  -  $changecache->update($datestamp.".".$formatter->page->name,$log);
  +  $changecache->update($datestamp.'.'.$formatter->page->name,$log);
   
     $logs.=$log;
     $cache->update($formatter->page->name,$logs);
  @@ -270,4 +285,5 @@
     return $form;
   }
   
  +// vim:et:sts=2:
   ?>
  
  
  


wkpark      04/08/14 21:43:14

  Modified:    .        wiki.php
  Log:
  fixed get_pagelinks()
  'include_path' support added in config.php
  
  Revision  Changes    Path
  1.143     +48 -27    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.142
  retrieving revision 1.143
  diff -u -r1.142 -r1.143
  --- wiki.php	13 Aug 2004 16:26:55 -0000	1.142
  +++ wiki.php	14 Aug 2004 12:43:13 -0000	1.143
  @@ -11,17 +11,18 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.142 2004/08/13 16:26:55 iolo Exp $
  +// $Id: wiki.php,v 1.143 2004/08/14 12:43:13 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.142 $',1,-1);
  +$_revision = substr('$Revision: 1.143 $',1,-1);
   $_release = '1.0.8';
   
   #ob_start("ob_gzhandler");
   
  -$timing=new Timer();
  -
  +$Config=getConfig("config.php",array('init'=>1));
   include("wikilib.php");
   
  +$timing=new Timer();
  +
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
   }
  @@ -59,31 +60,46 @@
   function getPlugin($pluginname) {
     static $plugins=array();
     if ($plugins) return $plugins[strtolower($pluginname)];
  -
  -  $handle= opendir('plugin');
  -  while ($file= readdir($handle)) {
  -    if (is_dir("plugin/$file")) continue;
  -    $name= substr($file,0,-4);
  -    $plugins[strtolower($name)]= $name;
  +  global $DBInfo;
  +  if ($DBInfo->include_path)
  +    $dirs=explode(':',$DBInfo->include_path);
  +  else
  +    $dirs=array('.');
  + 
  +  foreach ($dirs as $dir) {
  +    $handle= @opendir($dir.'/plugin');
  +    if (!$handle) continue;
  +    while ($file= readdir($handle)) {
  +      if (is_dir($dir."/plugin/$file")) continue;
  +      $name= substr($file,0,-4);
  +      $plugins[strtolower($name)]= $name;
  +    }
     }
   
     return $plugins[strtolower($pluginname)];
   }
   
   function getProcessor($pro_name) {
  -  global $DBInfo;
     static $processors=array();
     if ($processors) return $processors[strtolower($pro_name)];
  -
  -  $handle= opendir('plugin/processor');
  -  while ($file= readdir($handle)) {
  -    if (is_dir("plugin/processor/$file")) continue;
  -    $name= substr($file,0,-4);
  -    if (($tname=$DBInfo->processors[$name])) {
  -      if (!file_exists("plugin/processor/$tname.php")) $name='plain';
  -      else $name=$DBInfo->processors[$name];
  +  global $DBInfo;
  +  if ($DBInfo->include_path)
  +    $dirs=explode(':',$DBInfo->include_path);
  +  else
  +    $dirs=array('.');
  +
  +  foreach ($dirs as $dir) {
  +    $handle= @opendir($dir.'/plugin/processor');
  +    if (!$handle) continue;
  +    while ($file= readdir($handle)) {
  +      if (is_dir($dir."/plugin/processor/$file")) continue;
  +      $name= substr($file,0,-4);
  +      if (($tname=$DBInfo->processors[$name])) {
  +        if (!file_exists("plugin/processor/$tname.php")) $name='plain';
  +        else $name=$DBInfo->processors[$name];
  +      }
  +      $processors[strtolower($name)]= $name;
       }
  -    $processors[strtolower($name)]= $name;
     }
   
     #print_r($processors);
  @@ -413,6 +429,7 @@
   #  if ($icons) $config['icons']=$icons;
   #  if ($icon) $config['icon']=$icon;
   #  if ($actions) $config['actions']=$actions;
  +  if ($config['include_path']) ini_set('include_path',$config['include_path']);
   
     return $config;
   }
  @@ -1177,9 +1194,9 @@
       $this->baserule=array("/<([^\s<>])/","/`([^`' ]+)'/","/(?<!`)`([^`]*)`/",
                        "/'''([^']*)'''/","/(?<!')'''(.*)'''(?!')/",
                        "/''([^']*)''/","/(?<!')''(.*)''(?!')/",
  -                     "/\^([^ \^]+)\^(?=\s|$)/","/,,([^ ,]+),,(?=\s|$)/",
  -                     "/__([^ _]+)__(?=\s|$)/","/^-{4,}/",
  -                     "/--([^- ]+)--(?=\s|$)/",
  +                     "/(?<!\^)\^([^ \^]+)\^(?!\^)/","/(?<!,),,([^ ,]+),,(?!,)/",
  +                     "/(?<!_)__([^_]+)__(?!_)/","/^-{4,}/",
  +                     "/(?<!-)--([^-]+)--(?!-)/",
                        );
       $this->baserepl=array("&lt;\\1","&#96;\\1'","<tt class='wiki'>\\1</tt>",
                        "<b>\\1</b>","<b>\\1</b>",
  @@ -1227,7 +1244,7 @@
       # protect WikiName rule !WikiName
       "(?<![a-z])\!?(?:\/?[A-Z]([A-Z]+[0-9a-z]|[0-9a-z]+[A-Z])[0-9a-zA-Z]*)+\b|".
       # single bracketed name [Hello World]
  -    "(?<!\[)\!?\[([^\[:,<\s][^\[:,>]{1,255})\](?!\])|".
  +    "(?<!\[)\!?\[([^\[:,<\s'][^\[:,>]{1,255})\](?!\])|".
       # bracketed with double quotes ["Hello World"]
       "(?<!\[)\!?\[\\\"([^\\\"]+)\\\"\](?!\])|".
       # "(?<!\[)\[\\\"([^\[:,]+)\\\"\](?!\])|".
  @@ -1520,10 +1537,12 @@
         $links=$this->cache->fetch($this->page->name);
         if ($links !== false) return $links;
       }
  +    $pi=$this->get_instructions();
  +    if ($pi['#format']) return '';
       if ($this->page->exists()) {
         $body=$this->page->get_raw_body();
         # quickly generate a pseudo pagelinks
  -      preg_replace("/(".$this->wordrule.")/e","\$this->link_repl('\\1')",$body);
  +      preg_replace("/(?<!\[\[)(".$this->wordrule.")/e","\$this->link_repl('\\1')",$body);
         $this->store_pagelinks();
         if ($this->pagelinks) {
           $links=join("\n",array_keys($this->pagelinks))."\n";
  @@ -2749,6 +2768,7 @@
   
       $name=$this->page->urlname;
       $action=$this->link_url($name);
  +    $saved_pagelinks = $this->pagelinks;
   
       # find upper page
       $pos=strrpos($name,"/");
  @@ -2873,6 +2893,7 @@
         print "</div>\n";
       }
       print "<div id='wikiBody'>\n";
  +    $this->pagelinks=$saved_pagelinks;
     }
   
     function set_origin($pagename) {
  @@ -3003,7 +3024,6 @@
   }
   
   # Start Main
  -$Config=getConfig("config.php",array('init'=>1));
   
   $DBInfo= new WikiDB($Config);
   register_shutdown_function(array(&$DBInfo,'Close'));
  @@ -3161,12 +3181,13 @@
       }
       $formatter->write("<div id='wikiContent'>\n");
       $options['timer']->Check("init");
  +    $options['pagelinks']=1;
   #    $cache=new Cache_text('pages');
   #    if ($cache->exists($pagename)) {
   #      print $cache->fetch($pagename);
   #    } else {
   #      ob_start();
  -      $formatter->send_page();
  +      $formatter->send_page('',$options);
         if ($DBInfo->use_referer)
           log_referer($_SERVER['HTTP_REFERER'],$pagename);
         flush();
  
  
  


wkpark      04/08/14 22:38:57

  Modified:    .        monisetup.php
  Log:
  'include_path' support added
  use get_current_user() to setup $rcs_user
  
  Revision  Changes    Path
  1.13      +25 -4     moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- monisetup.php	13 Aug 2004 15:07:03 -0000	1.12
  +++ monisetup.php	14 Aug 2004 13:38:57 -0000	1.13
  @@ -1,7 +1,7 @@
   <?
   // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.12 2004/08/13 15:07:03 wkpark Exp $
  +// $Id: monisetup.php,v 1.13 2004/08/14 13:38:57 wkpark Exp $
   
   class MoniConfig {
     function MoniConfig($configfile="config.php") {
  @@ -47,7 +47,12 @@
       $url_prefix= preg_replace("/\/([^\/]+)\.php$/","",$_SERVER['SCRIPT_NAME']);
       $config['url_prefix']="'".$url_prefix."'";
   
  -    $config['rcs_user']="'".getenv('LOGNAME')."'";
  +    $user = getenv('LOGNAME');
  +    $user = $user ? $user : get_current_user();
  +    $config['rcs_user']="'".$user."'";
  +
  +    if (!file_exists('wikilib.php'))
  +      $config['include_path']="'.:/usr/local/share/moniwiki:/usr/share/moniwiki'";
       return $config;
     }
   
  @@ -215,8 +220,15 @@
   }
   
   function show_wikiseed($config,$seeddir='wikiseed') {
  +  $path='.:/usr/share/moniwiki:/usr/local/share/moniwiki';
     $pages= array();
  -  $handle= opendir($seeddir);
  +  foreach (explode(':',$path) as $dir) {
  +    $handle= @opendir($dir.'/'.$seeddir);
  +    if ($handle) {
  +      $seeddir=$dir.'/'.$seeddir;
  +      break;
  +    }
  +  }
     while ($file = readdir($handle)) {
       if (is_dir($seeddir."/".$file)) continue;
       $pagename = keyToPagename($file);
  @@ -276,6 +288,14 @@
   }
   
   function sow_wikiseed($config,$seeddir='wikiseed',$seeds) {
  +  $path='.:/usr/share/moniwiki:/usr/local/share/moniwiki';
  +  $pages= array();
  +  foreach (explode(':',$path) as $dir) {
  +    if (is_dir($dir.'/'.$seeddir)) {
  +      $seeddir=$dir.'/'.$seeddir;
  +      break;
  +    }
  +  }
     umask(000);
     print "<pre class='console'>\n";
     foreach($seeds as $seed) {
  @@ -486,8 +506,9 @@
     if (file_exists('config.php') && !file_exists($config[data_dir]."/text/RecentChanges")) {
       print "<h3><font color='red'>WARN: You have no WikiSeed on your $config[sitename]</font></h3>\n";
       print "<h2>If you want to put wikiseeds on your wiki <a href='?action=seed'>Click here</a> now</h2>";
  +  } else {
  +    print "<h2>goto <a href='wiki.php'>$config[sitename]</a></h2>";
     }
  -
   }
   
   ?>
  
  
  


wkpark      04/08/14 23:18:55

  Modified:    plugin   ImportUrl.php
  Log:
  more fixes
  
  Revision  Changes    Path
  1.2       +81 -14    moniwiki/plugin/ImportUrl.php
  
  Index: ImportUrl.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/ImportUrl.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ImportUrl.php	15 Aug 2003 21:30:36 -0000	1.1
  +++ ImportUrl.php	14 Aug 2004 14:18:55 -0000	1.2
  @@ -1,34 +1,101 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2004 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
  -// sample plugin for the MoniWiki
  +// a importurl action plugin for the MoniWiki
   //
  -// Usage: [[Test]]
  +// Usage: ?action=importurl&url=http://foo.bar.com/
   //
  -// $Id: ImportUrl.php,v 1.1 2003/08/15 21:30:36 wkpark Exp $
  -// vim:et:ts=2:
  +// $Id: ImportUrl.php,v 1.2 2004/08/14 14:18:55 wkpark Exp $
   
   function do_ImportUrl($formatter,$options) {
  -
     $value=$options['url'];
     $fp = fopen("$value","r");
  -  if (!$fp)
  +  if (!$fp) {
       do_invalid($formatter,$options);
  +    return;
  +  }
   
     while ($data = fread($fp, 4096)) $html_data.=$data;
     fclose($fp);
   
  -  print $html_data;
  -
  -  $out = strip_tags($html_data, '<a><b><i><u><h1><h2><h3><h4><h5><li><img>');
  +#  fix_url($value,$dummy);
  +#  fix_url('http://hello.com/',$dummy);
  +#  fix_url('http://hello.com',$dummy);
  +
  +  $out= strip_tags($html_data, '<a><b><i><u><h1><h2><h3><h4><h5><li><img>');
  +  $out= preg_replace("/<img\s*[^>]*src=['\"]((http|ftp)[^'\"]+)['\"][^>]*>/",
  +    "\\1",$out);
  +  $out = preg_replace("/<img\s*[^>]*src=['\"]([^'\"]+)['\"][^>]*>/e",
  +    "fix_url('$value','\\1')",$out);
  +  $out= preg_replace("/<b>([^<]+)<\/b>/i","'''\\1'''",$out);
  +  $out= preg_replace("/<i>([^<]+)<\/i>/i","''\\1''",$out);
  +  $out= preg_replace("/<u>([^<]+)<\/u>/i","__\\1__",$out);
  +  $out= preg_replace("/<li>/i"," * \\1",$out);
  +  $out= preg_replace("/<\/li>/i","",$out);
  +  $out= preg_replace("/<h(\d)>([^<]+)<\/h\d>/ie",
  +    "str_repeat('=', \\1).' \\2 '.str_repeat('=', \\1)",$out);
  +  $out= preg_replace("/<a\s*[^>]*href=['\"]([^'\"]+)['\"][^>]*>([^<]+)<\/a>/ie",
  +    "'['.fix_url('$value','\\1').' \\2]'",$out);
  +  $out= preg_replace("/\r/","",$out);
  +  $out= preg_replace("/\n\s+/","\n",$out);
  +  $formatter->send_header("content-type: text/plain",$options);
     print $out;
  +  return;
   
  -  #$formatter->send_header();
  -  #$formatter->send_title();
  +  $options['savetext']=$out;
  +  $options['button_preview']=1;
  +  $formatter->send_header("",$options);
  +  $formatter->send_title(_("Import URL"),"",$options);
     #$ret= macro_Test($formatter,$options[value]);
     #$formatter->send_page($ret);
  -  #$formatter->send_footer("",$options);
  -  #return;
  +  print macro_EditText($formatter,$value,$options);
  +  $formatter->send_footer("",$options);
  +  return;
  +}
  +
  +function prep_url($base_url) {
  +  $proto=strtok($base_url,'/').'//';
  +  $base_url=strtok('');
  +  $base_url=preg_replace('/(\/[^\/]+)$/','',$base_url);
  +  $root_url=strtok($base_url,'/');
  +
  +  $path=array();
  +  $path[]=$proto.$root_url;
  +  
  +  while ($str=strtok('/')) {
  +    $path[]=current($path).'/'.$str;
  +    next($path);
  +  }
  +  return $path;
  +}
  +
  +function fix_url($base_url,$url) {
  +  static $path=array();
  +
  +  if (!$base_url) $path=array(); // reset
  +  else if (!count($path)) $path=prep_url($base_url);
  +
  +  if ($url[0] == '/') {
  +    return $path[0].$url;
  +  } else if (preg_match('@^(\./)+@',$url)) {
  +    // base_url: http://foo.bar.com/hello/world/
  +    // img url: ./imgs/hello.gif
  +    $url = preg_replace('@^(\./)+@','',$url);
  +    return end($path).'/'.$url;
  +  } else if (preg_match('@^(\.\./)+@',$url,$match)) {
  +    // base_url: http://foo.bar.com/hello/world/
  +    // img url: ../../imgs/hello.gif
  +    $url = preg_replace('@^(\.\./)+@','',$url);
  +    $sz=sizeof(explode('/',$match[1]));
  +    if ($sz > sizeof($path)) return $path[0].'/'.$url;
  +    else {
  +      end($path);
  +      for ($j=1; $j<$sz;$j++) prev($path);
  +      return current($path).'/'.$url;
  +    }
  +  }
  +  return end($path).'/'.$url;
   }
   
  +// vim:et:sts=2:
   ?>
  
  
  


wkpark      04/08/14 23:20:10

  Modified:    plugin   WantedPages.php
  Log:
  fix to restore pagelinks
  
  Revision  Changes    Path
  1.2       +5 -2      moniwiki/plugin/WantedPages.php
  
  Index: WantedPages.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/WantedPages.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- WantedPages.php	15 Aug 2003 14:49:13 -0000	1.1
  +++ WantedPages.php	14 Aug 2004 14:20:10 -0000	1.2
  @@ -2,12 +2,14 @@
   // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a WantedPages macro plugin for the MoniWiki
  -// $Id: WantedPages.php,v 1.1 2003/08/15 14:49:13 wkpark Exp $
  +// $Id: WantedPages.php,v 1.2 2004/08/14 14:20:10 wkpark Exp $
   
   function macro_WantedPages($formatter="",$options="") {
     global $DBInfo;
     $pages = $DBInfo->getPageLists();
   
  +  $pagelinks=$formatter->pagelinks; // save
  +
     $cache=new Cache_text("pagelinks");
     foreach ($pages as $page) {
       $p= new WikiPage($page);
  @@ -23,7 +25,6 @@
         }
       }
     }
  -
     asort($wants);
     $out="<ul>\n";
     while (list($name,$owns) = each($wants)) {
  @@ -31,6 +32,8 @@
       $out.="<li>".$formatter->link_repl($name). ": $owns</li>";
     }
     $out.="</ul>\n";
  +  $formatter->pagelinks = $pagelinks; // restore
  +
     return $out;
   }
   
  
  
  


wkpark      04/08/14 23:24:29

  Modified:    plugin/processor blog.php
  Log:
  remove 'id' tag to confirm with the xhtml spec
  
  Revision  Changes    Path
  1.15      +3 -3      moniwiki/plugin/processor/blog.php
  
  Index: blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/blog.php,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- blog.php	13 Aug 2004 08:27:26 -0000	1.14
  +++ blog.php	14 Aug 2004 14:24:29 -0000	1.15
  @@ -7,7 +7,7 @@
   // Hello World
   // }}}
   // this processor is used internally by the Blog action
  -// $Id: blog.php,v 1.14 2004/08/13 08:27:26 wkpark Exp $
  +// $Id: blog.php,v 1.15 2004/08/14 14:24:29 wkpark Exp $
   
   function processor_blog($formatter,$value="",$options) {
     static $date_anchor='';
  @@ -60,7 +60,7 @@
         } else
           $anchor= date("Ymd",$time);
         if ($date_anchor != $anchor) {
  -        $datetag= "<div class='blog-date'>".date("M d, Y",$time)." <a name='$anchor' id='$anchor'></a><a class='purple' href='#$anchor'>$formatter->purple_icon</a></div>";
  +        $datetag= "<div class='blog-date'>".date("M d, Y",$time)." <a name='$anchor'></a><a class='purple' href='#$anchor'>$formatter->purple_icon</a></div>";
           $date_anchor= $anchor;
         }
       }
  @@ -119,7 +119,7 @@
       $purple="<a class='purple' href='#$tag'>$formatter->purple_icon</a>";
       $title=preg_replace("/(".$formatter->wordrule.")/e",
                           "\$formatter->link_repl('\\1')",$title);
  -    $out.="<div class='blog-title'><a name='$tag' id='$tag'></a>$title $purple</div>\n";
  +    $out.="<div class='blog-title'><a name='$tag'></a>$title $purple</div>\n";
     }
     $out.="<div class='blog-user'>Submitted by $user $date</div>\n".
       "<div class='blog-comment'>$msg$comments$action</div>\n".
  
  
  


wkpark      04/08/15 01:01:15

  Modified:    .        wiki.php
  Log:
  add $use_hostname to control gethostbyaddr()
  fix last change ($baserule)
  
  Revision  Changes    Path
  1.144     +7 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.143
  retrieving revision 1.144
  diff -u -r1.143 -r1.144
  --- wiki.php	14 Aug 2004 12:43:13 -0000	1.143
  +++ wiki.php	14 Aug 2004 16:01:13 -0000	1.144
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.143 2004/08/14 12:43:13 wkpark Exp $
  +// $Id: wiki.php,v 1.144 2004/08/14 16:01:13 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.143 $',1,-1);
  +$_revision = substr('$Revision: 1.144 $',1,-1);
   $_release = '1.0.8';
   
   #ob_start("ob_gzhandler");
  @@ -490,6 +490,7 @@
       $this->nonexists='nonexists';
       $this->use_sistersites=1;
       $this->use_twinpages=1;
  +    $this->use_hostname=1;
       $this->pagetype=array();
       $this->smiley='wikismiley';
   
  @@ -737,7 +738,8 @@
       $comment=strtr($comment,"\t"," ");
       $fp_editlog = fopen($this->editlog_name, 'a+');
       $time= time();
  -    $host= gethostbyaddr($remote_name);
  +    if ($this->use_hostname) $host= gethostbyaddr($remote_name);
  +    else $host= $remote_name;
       $msg="$page_name\t$remote_name\t$time\t$host\t$user->id\t$comment\t$action\n";
       fwrite($fp_editlog, $msg);
       fclose($fp_editlog);
  @@ -1194,7 +1196,7 @@
       $this->baserule=array("/<([^\s<>])/","/`([^`' ]+)'/","/(?<!`)`([^`]*)`/",
                        "/'''([^']*)'''/","/(?<!')'''(.*)'''(?!')/",
                        "/''([^']*)''/","/(?<!')''(.*)''(?!')/",
  -                     "/(?<!\^)\^([^ \^]+)\^(?!\^)/","/(?<!,),,([^ ,]+),,(?!,)/",
  +                     "/\^([^ \^]+)\^(?=\s|$)/","/(?<!,),,([^ ,]+),,(?!,)/",
                        "/(?<!_)__([^_]+)__(?!_)/","/^-{4,}/",
                        "/(?<!-)--([^-]+)--(?!-)/",
                        );
  @@ -1421,6 +1423,7 @@
         return $this->macro_repl($url); # No link
       } else if ($url[0]=='$') {
         #return processor_latex($this,"#!latex\n".$url);
  +      $url=preg_replace('/<\/?sup>/','^',$url);
         return $this->processor_repl($this->inline_latex,$url);
       }
   
  
  
  


wkpark      04/08/15 01:38:40

  Modified:    plugin   Blog.php
  Log:
  comment out a debug message
  
  Revision  Changes    Path
  1.18      +2 -2      moniwiki/plugin/Blog.php
  
  Index: Blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Blog.php,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- Blog.php	14 Aug 2004 11:48:04 -0000	1.17
  +++ Blog.php	14 Aug 2004 16:38:39 -0000	1.18
  @@ -5,7 +5,7 @@
   //
   // Usage: ?action=Blog
   //
  -// $Id: Blog.php,v 1.17 2004/08/14 11:48:04 wkpark Exp $
  +// $Id: Blog.php,v 1.18 2004/08/14 16:38:39 wkpark Exp $
   
   function updateBlogList($formatter) {
     global $DBInfo;
  @@ -20,7 +20,7 @@
         if (preg_match($rule,$file,$match)) {
           $fname=$DBInfo->cache_dir."/blogchanges/".$file;
           if (is_dir($fname)) continue;
  -        print $fname;
  +        #print $fname;
           unlink($fname);
         }
       }
  
  
  


wkpark      04/08/15 01:59:50

  Modified:    plugin   BlogChanges.php
  Log:
  fix #300458: support a number of items as first arg
  
  Revision  Changes    Path
  1.14      +24 -15    moniwiki/plugin/BlogChanges.php
  
  Index: BlogChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogChanges.php,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- BlogChanges.php	2 Aug 2004 02:11:35 -0000	1.13
  +++ BlogChanges.php	14 Aug 2004 16:59:50 -0000	1.14
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogChanges action plugin for the MoniWiki
   //
  -// $Id: BlogChanges.php,v 1.13 2004/08/02 02:11:35 wkpark Exp $
  +// $Id: BlogChanges.php,v 1.14 2004/08/14 16:59:50 wkpark Exp $
   
   class Blog_cache {
     function get_blogs() {
  @@ -21,14 +21,18 @@
       return $blogs;
     }
   
  -  function get_simple($blogs,$date) {
  +  function get_simple($blogs,$options) {
       global $DBInfo;
  +
  +    $date=$options['date'];
  +    $limit=$options['limit'];
       $rule="/^($date\d*)".'_2e('.join('|',$blogs).')$/';
       $logs=array();
   
  -    if (!$date) $limit=10;
  -    else $limit=30;
  -    #print $limit;
  +    if (!$limit) {
  +      if ($date) $limit=30;
  +      else $limit=10;
  +    }
   
       $handle = @opendir($DBInfo->cache_dir."/blogchanges");
       if (!$handle) return array();
  @@ -42,8 +46,7 @@
   
       rsort($filelist);
   
  -    while ((list($key, $file) = each ($filelist)) && $limit > 0)
  -    {
  +    while ((list($key, $file) = each ($filelist)) && $limit > 0) {
         #echo "<b>$file</b><br>";
         if (preg_match($rule,$file,$match)) {
           $fname=$DBInfo->cache_dir."/blogchanges/".$file;
  @@ -53,6 +56,7 @@
   
           $items=file($fname);
           foreach ($items as $line) {
  +          if ($limit < 0) break;
             list($author,$datestamp,$dummy)=explode(' ',$line);
             #$datestamp[10]=' ';
             #$timestamp= strtotime($datestamp." GMT");
  @@ -102,10 +106,16 @@
       return array_unique($blogs);
     }
   
  -  function get_summary($blogs,$date) {
  +  function get_summary($blogs,$options) {
       global $DBInfo;
   
       if (!$blogs) return array();
  +    $date=$options['date'];
  +    $limit=$options['limit'];
  +    if (!$limit) {
  +      if ($date) $limit=30;
  +      else $limit=10;
  +    }
   
       if ($date) {
         $check=strlen($date);
  @@ -118,9 +128,6 @@
         #print $date;
       }
   
  -    if ($date) $limit=30;
  -    else $limit=10;
  -
       $entries=array();
       $logs=array();
   
  @@ -132,6 +139,7 @@
         $temp= explode("\n",$raw);
   
         foreach ($temp as $line) {
  +        if ($limit <= 0) break;
           if (!$state) {
             if (preg_match("/^({{{)?#!blog\s([^ ]+\s($date"."[^ ]+)\s.*)$/",$line,$match)) {
               $entry=explode(" ",$pagename." ".$match[2],4);
  @@ -151,7 +159,6 @@
           }
           $summary.=$line."\n";
         }
  -      if ($limit < 0) break;
       }
       return $entries;
     }
  @@ -179,7 +186,9 @@
   function macro_BlogChanges($formatter,$value,$options='') {
     global $DBInfo;
   
  -  $opts=explode(",",$value);
  +  preg_match('/(\d+)?(\s*,?\s*.*)?$/',$value,$match);
  +  $opts=explode(",",$match[2]);
  +  if ($match[1]) $options['limit']=$match[1];
   
     $options['date']=$_GET['date'];
   
  @@ -196,9 +205,9 @@
       $blogs=array($DBInfo->pageToKeyname($formatter->page->name));
   
     if (in_array('summary',$opts))
  -    $logs=Blog_cache::get_summary($blogs,$date);
  +    $logs=Blog_cache::get_summary($blogs,$options);
     else
  -    $logs=Blog_cache::get_simple($blogs,$date);
  +    $logs=Blog_cache::get_simple($blogs,$options);
     usort($logs,'BlogCompare');
   
     if (!$options['date'] or !preg_match('/^\d+$/',$options['date']))
  
  
  


wkpark      04/08/15 02:01:11

  Modified:    plugin   Gallery.php
  Log:
  use getimagesize() to check the size of image
  
  Revision  Changes    Path
  1.10      +7 -2      moniwiki/plugin/Gallery.php
  
  Index: Gallery.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Gallery.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- Gallery.php	13 Aug 2004 07:02:30 -0000	1.9
  +++ Gallery.php	14 Aug 2004 17:01:10 -0000	1.10
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Gallery]]
   //
  -// $Id: Gallery.php,v 1.9 2004/08/13 07:02:30 wkpark Exp $
  +// $Id: Gallery.php,v 1.10 2004/08/14 17:01:10 wkpark Exp $
   // vim:et:ts=2:
   
   function get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
  @@ -194,7 +194,12 @@
           $thumb=$prefix."thumbnails/".rawurlencode($file);
           $object="<img src='$thumb' alt='$file' />";
         } else {
  -        $object="<img src='$linksrc' width='$width' alt='$file' />";
  +        $nwidth=$width;
  +        if (function_exists('getimagesize')) {
  +          list($nwidth, $height, $type, $attr) = getimagesize($dir.'/'.$file);
  +          $nwidth=($nwidth > $width) ? $width:$nwidth;
  +        }
  +        $object="<img src='$linksrc' width='$nwidth' alt='$file' />";
         }
       }
       else
  
  
  


wkpark      04/08/15 02:01:53

  Modified:    plugin/processor latex.php gnuplot.php
  Log:
  show warning messages if it does not works
  
  Revision  Changes    Path
  1.4       +18 -4     moniwiki/plugin/processor/latex.php
  
  Index: latex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/latex.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- latex.php	10 Aug 2003 08:21:39 -0000	1.3
  +++ latex.php	14 Aug 2004 17:01:50 -0000	1.4
  @@ -6,7 +6,7 @@
   // Usage: {{{#!latex
   // $ \alpha $
   // }}}
  -// $Id: latex.php,v 1.3 2003/08/10 08:21:39 wkpark Exp $
  +// $Id: latex.php,v 1.4 2004/08/14 17:01:50 wkpark Exp $
   
   function processor_latex($formatter="",$value="") {
     global $DBInfo;
  @@ -42,6 +42,13 @@
   \end{document}
   ";
   
  +  $RM='rm';
  +  $NULL='/dev/null';
  +  if(getenv("OS")=="Windows_NT") {
  +    $RM='del';
  +    $NULL='NUL';
  +  }
  +  
     if ($formatter->refresh || !file_exists("$cache_dir/$uniq.png")) {
        $fp= fopen($vartmp_dir."/$uniq.tex", "w");
        fwrite($fp, $src);
  @@ -50,16 +57,23 @@
        $outpath="$cache_dir/$uniq.png";
   
        # Unix specific FIXME
  -     $cmd= "cd $vartmp_dir; $latex $option $uniq.tex >/dev/null";
  +     $cwd= getcwd();
  +     chdir($vartmp_dir);
  +     $cmd= "$latex $option $uniq.tex >$NULL";
        system($cmd);
   
  -     $cmd= "cd $vartmp_dir; $dvips -D 600 $uniq.dvi -o $uniq.ps";
  +     if (!file_exists($uniq.".dvi")) {
  +       print "<font color='red'>ERROR:</font> LaTeX does not works properly.";
  +       return;
  +     }
  +     $cmd= "$dvips -D 600 $uniq.dvi -o $uniq.ps";
        system($cmd);
  +     chdir($cwd);
   
        $cmd= "$convert -transparent white -crop 0x0 -density 120x120 $vartmp_dir/$uniq.ps $outpath";
        system($cmd);
   
  -     system("rm $vartmp_dir/$uniq.*");
  +     system("$RM $vartmp_dir/$uniq.*");
     }
     return "<img class='tex' src='$DBInfo->url_prefix/$cache_dir/$uniq.png' alt='tex'".
            "title=\"$tex\" />";
  
  
  
  1.5       +12 -5     moniwiki/plugin/processor/gnuplot.php
  
  Index: gnuplot.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/gnuplot.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- gnuplot.php	18 Jul 2003 13:30:14 -0000	1.4
  +++ gnuplot.php	14 Aug 2004 17:01:50 -0000	1.5
  @@ -6,7 +6,7 @@
   // Usage: {{{#!gnuplot
   // plot sin(x)
   // }}}
  -// $Id: gnuplot.php,v 1.4 2003/07/18 13:30:14 wkpark Exp $
  +// $Id: gnuplot.php,v 1.5 2004/08/14 17:01:50 wkpark Exp $
   
   function processor_gnuplot($formatter="",$value="") {
     global $DBInfo;
  @@ -71,8 +71,12 @@
          $cmd= "$gnuplot $finp > $flog";
          $fp=system($cmd);
          $log=join(file($flog),"");
  -       unlink($flog);
  -       unlink($finp);
  +       if (file_exists($outpath)) {
  +         unlink($flog);
  +         unlink($finp);
  +       } else {
  +         print "<font color='red'>ERROR:</font> Gnuplot does not works correctly";
  +       }
        } else {
          #
          # Unix
  @@ -82,8 +86,11 @@
          fwrite($fp,$src);
          pclose($fp);
          $log=join(file($flog),"");
  -       if ($log) unlink($outpath);
  -       unlink($flog);
  +       if (file_exists($outpath)) {
  +         unlink($flog);
  +       } else {
  +         print "<font color='red'>ERROR:</font> Gnuplot does not works correctly";
  +       }
        }
   
        if ($log)
  
  
  


wkpark      04/08/15 21:22:19

  Modified:    plugin   BlogChanges.php
  Log:
  more fixes to resolve #300458.
  fix do_blogchanges() action
  
  Revision  Changes    Path
  1.15      +70 -56    moniwiki/plugin/BlogChanges.php
  
  Index: BlogChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogChanges.php,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- BlogChanges.php	14 Aug 2004 16:59:50 -0000	1.14
  +++ BlogChanges.php	15 Aug 2004 12:22:19 -0000	1.15
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogChanges action plugin for the MoniWiki
   //
  -// $Id: BlogChanges.php,v 1.14 2004/08/14 16:59:50 wkpark Exp $
  +// $Id: BlogChanges.php,v 1.15 2004/08/15 12:22:19 wkpark Exp $
   
   class Blog_cache {
     function get_blogs() {
  @@ -21,18 +21,34 @@
       return $blogs;
     }
   
  +  function get_daterule() {
  +    $date=date('Y-m');
  +    list($year,$month)=explode('-',$date);
  +    $mon=intval($month);
  +    $y=$year;
  +    $daterule.='(?='.$y.$month;
  +    for ($i=1;$i<3;$i++) {
  +      if (--$mon <= 0) {
  +        $mon=12;
  +        $y--;
  +      }
  +      $daterule.='|'.$y.sprintf("%02d",$mon);
  +    }
  +    $daterule.=')';
  +    #print $daterule;
  +    # (200402|200401|200312)
  +    return $daterule;
  +  }
  +
     function get_simple($blogs,$options) {
       global $DBInfo;
   
  -    $date=$options['date'];
  -    $limit=$options['limit'];
  -    $rule="/^($date\d*)".'_2e('.join('|',$blogs).')$/';
  -    $logs=array();
  +    $daterule=$options['date'];
  +    if (!$daterule)
  +      $daterule=Blog_cache::get_daterule();
   
  -    if (!$limit) {
  -      if ($date) $limit=30;
  -      else $limit=10;
  -    }
  +    $rule="/^($daterule\d*)".'_2e('.join('|',$blogs).')$/';
  +    $logs=array();
   
       $handle = @opendir($DBInfo->cache_dir."/blogchanges");
       if (!$handle) return array();
  @@ -46,7 +62,7 @@
   
       rsort($filelist);
   
  -    while ((list($key, $file) = each ($filelist)) && $limit > 0) {
  +    while ((list($key, $file) = each ($filelist))) {
         #echo "<b>$file</b><br>";
         if (preg_match($rule,$file,$match)) {
           $fname=$DBInfo->cache_dir."/blogchanges/".$file;
  @@ -56,13 +72,11 @@
   
           $items=file($fname);
           foreach ($items as $line) {
  -          if ($limit < 0) break;
             list($author,$datestamp,$dummy)=explode(' ',$line);
             #$datestamp[10]=' ';
             #$timestamp= strtotime($datestamp." GMT");
             #$datestamp= date("Ym",$timestamp);
             $logs[]=explode(' ',$pagename." ".rtrim($line),4);
  -          $limit--;
           }
         }
       }
  @@ -71,31 +85,13 @@
   
     function get_rc_blogs($date) {
       global $DBInfo;
  -    $all=Blog_cache::get_blogs();
  -
       $blogs=array();
       $handle = @opendir($DBInfo->cache_dir."/blogchanges");
       if (!$handle) return array();
  -    if (!$date) {
  -      while ($file = readdir($handle)) {
  -        $fname=$DBInfo->cache_dir."/blogchanges/".$file;
  -        if (is_dir($fname)) continue;
  -        $blogs[]=$file;
  -      }
  -      arsort($blogs);
  -
  -      $selected=array();
  -      foreach ($blogs as $file) {
  -        $name=substr($file,11); # get pagename only
  -        if (!in_array($name,$selected))
  -          $selected[]=$name;
  -      }
   
  -      #print_r($selected);
  -      return array_unique($selected);
  -    }
  -
  -    $rule="/^($date\d*)".'_2e('.join('|',$all).')$/';
  +    if (!$date)
  +      $date=Blog_cache::get_daterule();
  +    $rule="/^($date\d*)".'_2e(.*)$/';
       while ($file = readdir($handle)) {
         $fname=$DBInfo->cache_dir."/blogchanges/".$file;
         if (is_dir($fname)) continue;
  @@ -111,13 +107,9 @@
   
       if (!$blogs) return array();
       $date=$options['date'];
  -    $limit=$options['limit'];
  -    if (!$limit) {
  -      if ($date) $limit=30;
  -      else $limit=10;
  -    }
   
       if ($date) {
  +      // make a date pattern to grep blog entries
         $check=strlen($date);
         if (($check < 4) or !preg_match('/^\d+/',$date)) $date=date('Y\-m');
         else {
  @@ -139,7 +131,6 @@
         $temp= explode("\n",$raw);
   
         foreach ($temp as $line) {
  -        if ($limit <= 0) break;
           if (!$state) {
             if (preg_match("/^({{{)?#!blog\s([^ ]+\s($date"."[^ ]+)\s.*)$/",$line,$match)) {
               $entry=explode(" ",$pagename." ".$match[2],4);
  @@ -153,7 +144,6 @@
             $temp=explode("----\n",$summary,2);
             $entry[]=$temp[0];
             $entries[]=$entry;
  -          $limit--;
             $summary='';
             continue;
           }
  @@ -166,16 +156,19 @@
   
   function BlogCompare($a,$b) {
     # third field is a date
  -  if ($a[2] > $b[2]) return -1;
  -  if ($a[2] < $b[2]) return 1;
  -  return 0;
  +  if ($a[2] == $b[2]) return 0;
  +#    return strcmp($a[3],$b[3]);
  +  return ($a[2] > $b[2]) ? -1:1;
   }
   
   function do_BlogChanges($formatter,$options='') {
     if (!$options['date']) $options['date']=date('Ym');
  -  $changes=macro_BlogChanges($formatter,$options['mode'],$options);
  +  $options['action']=1;
  +  $options['summary']=1;
  +  $options['simple']=1;
  +  $changes=macro_BlogChanges($formatter,'all,'.$options['mode'],$options);
     $formatter->send_header('',$options);
  -  $formatter->send_title('','',$options);
  +  $formatter->send_title(_("BlogChanges"),'',$options);
     print '<div id="wikiContent">';
     print $changes;
     print '</div>';
  @@ -183,18 +176,25 @@
     return;
   }
   
  -function macro_BlogChanges($formatter,$value,$options='') {
  +function macro_BlogChanges($formatter,$value,$options=array()) {
     global $DBInfo;
   
  +  if (empty($options)) $options=array();
  +  if ($_GET['date'])
  +    $options['date']=$date=$_GET['date'];
  +
     preg_match('/(\d+)?(\s*,?\s*.*)?$/',$value,$match);
     $opts=explode(",",$match[2]);
  -  if ($match[1]) $options['limit']=$match[1];
  -
  -  $options['date']=$_GET['date'];
  +  $opts=array_merge($opts,array_keys($options));
  +  if ($match[1]) {
  +    $options['limit']=$limit=$match[1];
  +  } else {
  +    if ($date) $limit=30;
  +    else $limit=10;
  +  }
   
     # check error and set default value
     # default: show BlogChages monthly
  -  $date=$options['date'];
   
     if (in_array('all',$opts)) {
       if (in_array('summary',$opts))
  @@ -210,7 +210,7 @@
       $logs=Blog_cache::get_simple($blogs,$options);
     usort($logs,'BlogCompare');
   
  -  if (!$options['date'] or !preg_match('/^\d+$/',$options['date']))
  +  if (!$options['date'] or !preg_match('/^\d{4}-?\d{2}$/',$options['date']))
       $date=date('Ym');
   
     $year=substr($date,0,4);
  @@ -235,10 +235,12 @@
       $cat="</ul>";
     }
     $template='$out="$bullet<a href=\"$url#$tag\">$title</a> <span class=\"blog-user\">';
  +  if (in_array('summary',$opts))
  +  $template='$out="$bullet<div class=\"blog-title\"><a name=\"$tag\"></a><a href=\"$url#$tag\">$title</a> <a class=\"puple\" href=\"#$tag\">'.addslashes($formatter->purple_icon).'</a></div><span class=\"blog-user\">';
  +  if (!in_array('nouser',$opts))
  +    $template.='by $user ';
     if (!in_array('nodate',$opts))
       $template.='@ $date ';
  -  if (!in_array('nouser',$opts))
  -    $template.='by $user';
   
     if (in_array('summary',$opts)) {
       $template.='</span><div class=\"blog-summary\">$summary</div>$sep\n";';
  @@ -252,6 +254,7 @@
     foreach ($logs as $log) {
       list($page, $user,$date,$title,$summary)= $log;
       $tag=md5($user." ".$date." ".$title);
  +    $datetag='';
   
       $url=qualifiedUrl($formatter->link_url(_urlencode($page)));
       if (!$opts['nouser'] and $user and $DBInfo->hasPage($user))
  @@ -261,8 +264,14 @@
   
       $date[10]=' ';
       $time=strtotime($date." GMT");
  +
       $date= date("m-d [h:i a]",$time);
       if ($summary) {
  +      $anchor= date('Ymd',$time);
  +      if ($date_anchor != $anchor) {
  +        $datetag= "<div class='blog-date'>".date('M d, Y',$time)." <a name='$anchor'></a><a class='purple' href='#$anchor'>$formatter->purple_icon</a></div>";
  +        $date_anchor= $anchor;
  +      }
         $p=new WikiPage($page);
         $f=new Formatter($p);
         $summary=str_replace('\}}}','}}}',$summary);
  @@ -273,13 +282,18 @@
       }
   
       eval($template);
  -    $items.=$out;
  +    $items.=$datetag.$out;
  +    if ($limit-- < 0) break;
     }
     $url=qualifiedUrl($formatter->link_url($DBInfo->frontpage));
   
     # make pnut
  -  $pnut="<div class='blog-action'>".$formatter->link_to("?date=$pre_date",'&laquo; '._("Previous"))."</div>";
  -  #$pnut=$formatter->link_to("?action=blogchanges&amp;mode=$value&amp;date=$pre_date",'&laquo; '._("Previous"));
  +  $action="date=$pre_date";
  +  if ($options['action'])
  +    $action='action=blogchanges&amp;'.$action;
  +  if ($options['mode'])
  +    $action='&amp;mode='.$options['mode'];
  +  $pnut="<div class='blog-action'>".$formatter->link_to('?'.$action,'&laquo; '._("Previous"))."</div>";
     return $bra.$items.$cat.$pnut;
   }
   ?>
  
  
  


wkpark      04/08/15 21:22:48

  Modified:    plugin   Calendar.php
  Log:
  add archive option
  
  Revision  Changes    Path
  1.8       +59 -11    moniwiki/plugin/Calendar.php
  
  Index: Calendar.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Calendar.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Calendar.php	14 Aug 2004 11:46:08 -0000	1.7
  +++ Calendar.php	15 Aug 2004 12:22:47 -0000	1.8
  @@ -7,7 +7,31 @@
   #-----usage: generate_calendar(2001, 11, $day_func, 2);-------------------------
   #------(last two arguments are optional)----------------------------------------
   #-------------------------------------------------------------------------------
  -# $Id: Calendar.php,v 1.7 2004/08/14 11:46:08 wkpark Exp $
  +# $Id: Calendar.php,v 1.8 2004/08/15 12:22:47 wkpark Exp $
  +
  +function calendar_get_dates($formatter,$date='',$page='') {
  +  global $DBInfo;
  +  $handle = @opendir($DBInfo->cache_dir."/blogchanges");
  +  if (!$handle) return array();
  +
  +  if (!$page) $page='.*';
  +  else $page=$DBInfo->pageToKeyname($page);
  +
  +  if (!$date) $date=date('Ym');
  +  $rule="/^$date(\d{2})_2e".$page."$/";
  +  $archives=array();
  +  while ($file = readdir($handle)) {
  +    $fname=$DBInfo->cache_dir.'/blogchanges/'.$file;
  +    if (is_dir($fname)) continue;
  +    if (preg_match($rule,$file,$match)) {
  +      $archives[intval($match[1])]=1;
  +    }
  +  }
  +  closedir($handle);
  +
  +#  return array_unique($archives);
  +  return $archives;
  +}
   
   function macro_Calendar($formatter,$value="",$option="") {
   	global $DBInfo;
  @@ -39,15 +63,32 @@
   		$year= date('Y');
   		$month= date('m');
   	}
  +	$date=$year.$month;
   	$month=intval($month);
   	$year=intval($year);
   
  +	if ($option)
  +		$pagename=$option;
  +	else
  +		$pagename=$formatter->page->name;
  +
  +	$link_prefix=sprintf("%04d-%02d",$year,$month);
  +
  +	$archives=array();
   	if ($match[4]) {
   		$args=explode(",",$match[4]);
   
   		if (in_array ("blog", $args)) $mode='blog';
   		if (in_array ("noweek", $args)) $day_heading_length=0;
   		if (in_array ("yearlink", $args)) $yearlink=1;
  +		if (in_array ("archive", $args)) {
  +			if ($mode) // blog mode
  +				$archives=calendar_get_dates($formatter,$date,$pagename.'/'.$link_prefix);
  +			else {
  +				$archives=calendar_get_dates($formatter,$year.$month);
  +				$mode='archive';
  +			}
  +		}
   	}
   
   	$prev_month=date('Ym',mktime(0,0,0,$month - 1,1,$year));
  @@ -57,11 +98,6 @@
   		$next_year=date('Ym',mktime(0,0,0,$month,1,$year + 1));
   	}
   
  -	if ($option)
  -		$pagename=$option;
  -	else
  -		$pagename=$formatter->page->name;
  -
   	$first_of_month = mktime (0,0,0, $month, 1, $year);
   	#remember that mktime will automatically correct if invalid dates are entered
   	# for instance, mktime(0,0,0,12,32,1997) will be the date for Jan 1, 1998
  @@ -116,17 +152,19 @@
   	if($weekday > 0){$calendar .= "<td colspan=\"$weekday\">&nbsp;</td>";}
   
   	#print the days of the month
  -	$link_prefix=sprintf("%04d-%02d",$year,$month);
  -	if ($mode) {
  +	if ($mode=='blog') {
   		$link=$pagename."/$link_prefix";
   		if (!$DBInfo->hasPage($link))
   			$action="?action=blog";
  +	} else if ($mode) {
  +		$link=$pagename;
   	}
   	while ($day <= $maxdays){
   		if($weekday == 7){ #start a new week
   			$calendar .= "</tr>\n<tr>";
   			$weekday = 0;
   		}
  +		$daytext=$day;
   
   		if ($day==$today and $month == date('m')) {
   			$exists='today" bgcolor="white';
  @@ -142,12 +180,22 @@
   			$link=$pagename."/".$link_prefix."-".sprintf("%02d",$day);
   			if ($DBInfo->hasPage($link))
   				$classes=$exists;
  -		} else if ($action[0] != '?') {
  -			$action=sprintf("#%02d",$day);
  +		} else if ($mode) {
  +			if ($archives[$day]) {
  +				 $daytext='<span class="blogged"><b>'.$day.'</b></span>';
  +			}
  +			if ($mode == 'archive') {
  +				if ($archives[$day]) {
  +					$action='?action=blogchanges&amp;date='.$date;
  +					$classes='day';
  +				} else
  +					$action='?action=blog';
  +			} else if ($action[0] != '?')
  +				$action=sprintf("#%02d",$day);
   		}
   
   		$calendar.= '<td'.($classes ? " class=\"$classes\">" : '>').
  -			($link ? $formatter->link_tag($link,$action,$day) : '').'</td>';
  +			($link ? $formatter->link_tag($link,$action,$daytext) : '').'</td>';
   
   		$day++;
   		$weekday++;
  
  
  


wkpark      04/08/15 21:27:04

  Modified:    plugin   trackback.php
  Log:
  adapt new style
  
  Revision  Changes    Path
  1.7       +28 -9     moniwiki/plugin/trackback.php
  
  Index: trackback.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/trackback.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- trackback.php	15 Aug 2003 15:02:00 -0000	1.6
  +++ trackback.php	15 Aug 2004 12:27:04 -0000	1.7
  @@ -4,7 +4,7 @@
   // a TrackBack receive action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: trackback.php,v 1.6 2003/08/15 15:02:00 wkpark Exp $
  +// $Id: trackback.php,v 1.7 2004/08/15 12:27:04 wkpark Exp $
   
   function send_error($error=0,$error_message='') {
     if ($error) {
  @@ -146,29 +146,48 @@
   }
   
   function macro_trackback($formatter,$value) {
  +  preg_match('/(\d+)?(\s*,?\s*.*)?$/',$value,$match);
  +  $opts=explode(",",$match[2]);
  +  if ($match[1]) $limit=$match[1];
  +  else $limit=10;
  +#  if (in_array('all',$opts))
  +  $lines=TrackBack_text::get_all();
  +
  +  $date_fmt="m-d [h:i a]";
  +  $template_bra='';
  +  $template= '$out.= "<a href=\"$link\">$title</a>&nbsp;&nbsp;<span class=\"blog-user\">by <a href=\"$url\">$site</a> @ $date</span><br />\n";';
  +  $template_ket='';
  +  if (in_array('simple',$opts)) {
  +    $template_bra='<ul>';
  +    $template= '$out.= "<li><span class=\"blog-user\"><a href=\"$link\">$title</a></span><br/><span class=\"blog-user\">by <a href=\"$url\">$site</a> @ $date</span></li>\n";';
  +    $template_bra='</ul>';
  +    $date_fmt="m-d";
  +  }
   
  -  if ($value=='all')
  -    $lines=TrackBack_text::get_all();
  -  else
  -    $lines=TrackBack_text::get_all();
     $logs=array();
     foreach ($lines as $line) $logs[]=explode("\t",$line,8);
     usort($logs,'TrackBackCompare');
   
     foreach ($logs as $log) {
  +    if ($limit <= 0) break;
       list($page, $dum, $entry,$url,$date,$site,$title,$dum2)= $log;
   
       if (!$title) continue;
  +    if ($entry) $entry='&amp;value='.$entry;
  +    $link=$formatter->link_url(_urlencode($page),'?action=trackback'.$entry);
   
       $date[10]=' ';
       $time=strtotime($date." GMT");
  -    $date= date("m-d [h:i a]",$time);
  +    $date= date($date_fmt,$time);
  +    list($wiki,$user)=explode(':',$site);
  +    if ($user) $site=$user;
   
       #$out.=$page."<a href='$url'>$title</a> @ $date from $site<br />\n";
  -    $out.="<a href='$url'>$title</a> @ $date from $site<br />\n";
  -
  +    #$out.="<a href='$url'>$title</a> @ $date from $site<br />\n";
  +    eval($template);
  +    $limit--;
     }
  -  return $out;
  +  return $template_bra.$out.$template_ket;
   }
   
   ?>
  
  
  


wkpark      04/08/15 21:30:45

  Added:       plugin   BlogArchive.php
  Log:
  add a new BlogArchive macro plugin
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/BlogArchive.php
  
  Index: BlogArchive.php
  ===================================================================
  <?php
  // Copyright 2004 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a BlogArchive macro plugin for the MoniWiki
  //
  // $Id: BlogArchive.php,v 1.1 2004/08/15 12:30:45 wkpark Exp $
  
  function macro_BlogArchive($formatter,$value,$options=array()) {
    global $DBInfo;
    $handle = @opendir($DBInfo->cache_dir."/blogchanges");
    if (!$handle) return array();
    if (!$value) $value='BlogChanges';
  
    $year=date('Y');
    $rule="/^(($year|".($year-1).")\d{2})\d{2}_2e/";
    $archives=array();
    while ($file = readdir($handle)) {
      $fname=$DBInfo->cache_dir.'/blogchanges/'.$file;
      if (is_dir($fname)) continue;
      if (preg_match($rule,$file,$match)) {
        $archives[]=$match[1];
      }
    }
    closedir($handle);
    $archives= array_unique($archives);
    rsort($archives);
  
    foreach ($archives as $archive) {
      $year=substr($archive,0,4);
      $date=substr($archive,4);
      $out.='<li>'.
        $formatter->link_tag($value,'?date='.$archive,$year.'-'.$date).'</li>';
    }
    return '<ul>'.$out.'</ul>';
  }
  ?>
  
  
  


wkpark      04/08/15 23:29:33

  Modified:    plugin   BlogChanges.php
  Log:
  add $blog_category option
  support new 'category' option in the blogchanges action
  
  Revision  Changes    Path
  1.16      +60 -12    moniwiki/plugin/BlogChanges.php
  
  Index: BlogChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogChanges.php,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- BlogChanges.php	15 Aug 2004 12:22:19 -0000	1.15
  +++ BlogChanges.php	15 Aug 2004 14:29:30 -0000	1.16
  @@ -1,9 +1,9 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2004 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogChanges action plugin for the MoniWiki
   //
  -// $Id: BlogChanges.php,v 1.15 2004/08/15 12:22:19 wkpark Exp $
  +// $Id: BlogChanges.php,v 1.16 2004/08/15 14:29:30 wkpark Exp $
   
   class Blog_cache {
     function get_blogs() {
  @@ -40,6 +40,29 @@
       return $daterule;
     }
   
  +  function get_categories() {
  +    global $DBInfo;
  +
  +    if (!$DBInfo->hasPage($DBInfo->blog_category)) return array();
  +    $categories=array();
  +
  +    $page=$DBInfo->getPage($DBInfo->blog_category);
  +
  +    $raw=$page->get_raw_body();
  +    $temp= explode("\n",$raw);
  +
  +    foreach ($temp as $line) {
  +      $line=str_replace('/','_2f',$line);
  +      if (preg_match('/^ \* ([^ :]+)(?=\s|$)/',$line,$match)) {
  +        $category=$match[1];
  +        if (!$categories[$category]) $categories[$category]=array();
  +      } else if ($category and preg_match('/^\s\s+\* ([^ :]+)(?=\s|$)/',$line,$match)) {
  +        $categories[$category][]=$match[1];
  +      }
  +    }
  +    return $categories;
  +  }
  +
     function get_simple($blogs,$options) {
       global $DBInfo;
   
  @@ -83,7 +106,7 @@
       return $logs;
     }
   
  -  function get_rc_blogs($date) {
  +  function get_rc_blogs($date,$pages=array()) {
       global $DBInfo;
       $blogs=array();
       $handle = @opendir($DBInfo->cache_dir."/blogchanges");
  @@ -91,7 +114,10 @@
   
       if (!$date)
         $date=Blog_cache::get_daterule();
  -    $rule="/^($date\d*)".'_2e(.*)$/';
  +
  +    if ($pages) $pagerule=implode('|',$pages);
  +    else $pagerule='.*';
  +    $rule="/^($date\d*)_2e($pagerule)$/";
       while ($file = readdir($handle)) {
         $fname=$DBInfo->cache_dir."/blogchanges/".$file;
         if (is_dir($fname)) continue;
  @@ -102,6 +128,7 @@
       return array_unique($blogs);
     }
   
  +
     function get_summary($blogs,$options) {
       global $DBInfo;
   
  @@ -166,9 +193,13 @@
     $options['action']=1;
     $options['summary']=1;
     $options['simple']=1;
  +
     $changes=macro_BlogChanges($formatter,'all,'.$options['mode'],$options);
     $formatter->send_header('',$options);
  -  $formatter->send_title(_("BlogChanges"),'',$options);
  +  if ($options['category'])
  +    $formatter->send_title($options['category'],'',$options);
  +  else
  +    $formatter->send_title(_("BlogChanges"),'',$options);
     print '<div id="wikiContent">';
     print $changes;
     print '</div>';
  @@ -182,12 +213,25 @@
     if (empty($options)) $options=array();
     if ($_GET['date'])
       $options['date']=$date=$_GET['date'];
  +  else
  +    $date=$options['date'];
  +
  +  preg_match('/^(?(?=\')\'([^\']+)\'|\"([^\"]+)\")?,?(\d+)?(\s*,?\s*.*)?$/',
  +    $value,$match);
   
  -  preg_match('/(\d+)?(\s*,?\s*.*)?$/',$value,$match);
  -  $opts=explode(",",$match[2]);
  +  $category_pages=array();
  +  if ($match[2] or $options['category']) {
  +    $options['category']=$options['category'] ? $options['category']:$match[2];
  +    if ($DBInfo->blog_category) {
  +      $categories=Blog_cache::get_categories();
  +      if ($categories[$options['category']])
  +        $category_pages=$categories[$options['category']];
  +    }
  +  }
  +  $opts=explode(',',$match[4]);
     $opts=array_merge($opts,array_keys($options));
  -  if ($match[1]) {
  -    $options['limit']=$limit=$match[1];
  +  if ($match[3]) {
  +    $options['limit']=$limit=$match[3];
     } else {
       if ($date) $limit=30;
       else $limit=10;
  @@ -196,9 +240,10 @@
     # check error and set default value
     # default: show BlogChages monthly
   
  -  if (in_array('all',$opts)) {
  +  #print_r($category_pages);
  +  if (in_array('all',$opts) or $category_pages) {
       if (in_array('summary',$opts))
  -      $blogs=Blog_cache::get_rc_blogs($date);
  +      $blogs=Blog_cache::get_rc_blogs($date,$category_pages);
       else
         $blogs=Blog_cache::get_blogs();
     } else
  @@ -291,9 +336,12 @@
     $action="date=$pre_date";
     if ($options['action'])
       $action='action=blogchanges&amp;'.$action;
  +  if ($options['category'])
  +    $action.='&amp;category='.$options['category'];
     if ($options['mode'])
  -    $action='&amp;mode='.$options['mode'];
  +    $action.='&amp;mode='.$options['mode'];
     $pnut="<div class='blog-action'>".$formatter->link_to('?'.$action,'&laquo; '._("Previous"))."</div>";
     return $bra.$items.$cat.$pnut;
   }
  +// vim:et:sts=2:
   ?>
  
  
  


wkpark      04/08/15 23:30:22

  Added:       plugin   BlogCategories.php
  Log:
  add a new BlogCategories macro
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/BlogCategories.php
  
  Index: BlogCategories.php
  ===================================================================
  <?php
  // Copyright 2003-2004 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a BlogCategory macro plugin for the MoniWiki
  //
  // $Id: BlogCategories.php,v 1.1 2004/08/15 14:30:22 wkpark Exp $
  
  function macro_BlogCategories($formatter,$value='') {
    global $DBInfo;
  
    if (!$DBInfo->hasPage($DBInfo->blog_category)) return '';
    $categories=array();
  
    $page=$DBInfo->getPage($DBInfo->blog_category);
  
    $raw=$page->get_raw_body();
    $temp= explode("\n",$raw);
  
    $link=$formatter->link_url($formatter->page->name,'?action=blogchanges&amp;category=CATEGORY');
    foreach ($temp as $line) {
      $line=str_replace('/','_2f',$line);
      if (preg_match('/^ \* ([^ :]+)(?=\s|$)/',$line,$match)) {
         $lnk=str_replace('CATEGORY',$match[1],$link);
         $out.="<a href='$lnk'>$match[1]/</a><br/>";
      }    
    }
  
    return $out;
  }
  // vim:et:sts=2:
  ?>
  
  
  


wkpark      04/08/16 10:28:24

  Modified:    plugin   rss_blog.php
  Log:
  added category option
  
  Revision  Changes    Path
  1.16      +13 -4     moniwiki/plugin/rss_blog.php
  
  Index: rss_blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rss_blog.php,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- rss_blog.php	13 Aug 2004 10:22:53 -0000	1.15
  +++ rss_blog.php	16 Aug 2004 01:28:24 -0000	1.16
  @@ -4,7 +4,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a rss_blog action plugin for the MoniWiki
   //
  -// $Id: rss_blog.php,v 1.15 2004/08/13 10:22:53 wkpark Exp $
  +// $Id: rss_blog.php,v 1.16 2004/08/16 01:28:24 wkpark Exp $
   
   if (!function_exists('macro_BlogChanges'))
     if ($plugin=getPlugin('BlogChanges')) include_once("plugin/$plugin.php");
  @@ -16,7 +16,16 @@
   #  else $date=$options['date'];
     $date=$options['date'];
   
  -  if ($options['all']) {
  +  $category_pages=array();
  +  if ($options['category'] and $DBInfo->blog_category) {
  +    $categories=Blog_cache::get_categories();
  +    if ($categories[$options['category']])
  +      $category_pages=$categories[$options['category']];
  +    $title=$options['category'];
  +  } else
  +    $title=_("Blog Changes");
  +
  +  if ($options['all'] or $options['category']) {
       # check error and set default value
       $blog_rss=new Cache_text('blogrss');
   
  @@ -26,9 +35,9 @@
   #      return;
   #    }
   
  -    $blogs=Blog_cache::get_rc_blogs($date);
  +    $blogs=Blog_cache::get_rc_blogs($date,$category_pages);
       $logs=Blog_cache::get_summary($blogs,$date);
  -    $rss_name=$DBInfo->sitename.': '._("Blog Changes");
  +    $rss_name=$DBInfo->sitename.': '.$title;
     } else {
       $blogs=array($DBInfo->pageToKeyname($formatter->page->name));
       $logs=Blog_cache::get_summary($blogs,$date);
  
  
  


wkpark      04/08/16 11:31:57

  Added:       plugin   BlogArchives.php
  Log:
  renamed and 'list' option added
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/BlogArchives.php
  
  Index: BlogArchives.php
  ===================================================================
  <?php
  // Copyright 2004 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a BlogArchives macro plugin for the MoniWiki
  //
  // [[BlogArchives]]
  // [[BlogArchives("F Y")]]
  // [[BlogArchives("F Y",list)]]
  //
  // $Id: BlogArchives.php,v 1.1 2004/08/16 02:31:57 wkpark Exp $
  
  function macro_BlogArchives($formatter,$value,$options=array()) {
    global $DBInfo;
  
    $handle = @opendir($DBInfo->cache_dir."/blogchanges");
    if (!$handle) return array();
  
    preg_match("/^(?(?=')'([^']+)'|\"([^\"]+)\")?(\s*,?.*)$/",$value,$match);
    if ($match[1] or $match[2]) {
      $date_fmt=$match[1] ? $match[1]:$match[2];
    } else
      $date_fmt='Y-m';
    $opts=explode(',',$match[3]);
    if (in_array('list',$opts)) {
      $bra='<li>';
      $ket='</li>';
    } else {
      $bra='';
      $ket="<br/>\n";
    }
  
    $year=date('Y');
    // show only recent two years
    $rule="/^(($year|".($year-1).")\d{2})\d{2}_2e/";
    $archives=array();
    while ($file = readdir($handle)) {
      $fname=$DBInfo->cache_dir.'/blogchanges/'.$file;
      if (is_dir($fname)) continue;
      if (preg_match($rule,$file,$match)) {
        $archives[]=$match[1];
      }
    }
    closedir($handle);
    $archives= array_unique($archives);
    rsort($archives);
  
    $out='';
    foreach ($archives as $archive) {
      $year=substr($archive,0,4);
      $month=substr($archive,4);
      $datetext=date($date_fmt,mktime(0,0,0,$month,1,$year));
      $out.=$bra.
        $formatter->link_to('?action=blogchanges&amp;date='.$archive,$datetext).
        $ket;
    }
    if ($bra) return '<ul>'.$out.'</ul>';
    return $out;
  }
  ?>
  
  
  


wkpark      04/08/16 11:35:23

  Modified:    plugin   BlogChanges.php
  Log:
  fix last changes
  add a 'Next' link
  
  Revision  Changes    Path
  1.17      +22 -16    moniwiki/plugin/BlogChanges.php
  
  Index: BlogChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogChanges.php,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- BlogChanges.php	15 Aug 2004 14:29:30 -0000	1.16
  +++ BlogChanges.php	16 Aug 2004 02:35:22 -0000	1.17
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogChanges action plugin for the MoniWiki
   //
  -// $Id: BlogChanges.php,v 1.16 2004/08/15 14:29:30 wkpark Exp $
  +// $Id: BlogChanges.php,v 1.17 2004/08/16 02:35:22 wkpark Exp $
   
   class Blog_cache {
     function get_blogs() {
  @@ -55,7 +55,9 @@
         $line=str_replace('/','_2f',$line);
         if (preg_match('/^ \* ([^ :]+)(?=\s|$)/',$line,$match)) {
           $category=$match[1];
  -        if (!$categories[$category]) $categories[$category]=array();
  +        if (!$categories[$category])
  +          // include category page itself.
  +          $categories[$category]=array($categories[$category]);
         } else if ($category and preg_match('/^\s\s+\* ([^ :]+)(?=\s|$)/',$line,$match)) {
           $categories[$category][]=$match[1];
         }
  @@ -216,12 +218,13 @@
     else
       $date=$options['date'];
   
  -  preg_match('/^(?(?=\')\'([^\']+)\'|\"([^\"]+)\")?,?(\d+)?(\s*,?\s*.*)?$/',
  +  preg_match('/^(?(?=')'([^']+)'|\"([^\"]+)\")?,?(\d+)?(\s*,?\s*.*)?$/',
       $value,$match);
   
     $category_pages=array();
  -  if ($match[2] or $options['category']) {
  -    $options['category']=$options['category'] ? $options['category']:$match[2];
  +  if ($match[2] or $match[1] or $options['category']) {
  +    $match[1]=$match[1] ? $match[1]:$match[2];
  +    $options['category']=$options['category'] ? $options['category']:$match[1];
       if ($DBInfo->blog_category) {
         $categories=Blog_cache::get_categories();
         if ($categories[$options['category']])
  @@ -263,9 +266,12 @@
     $day=substr($date,6,2);
   
     if (strlen($date)==8) {
  -    $pre_date= date('Ymd',mktime(0,0,0,$month,intval($day) - 1,$year));
  +    $prev_date= date('Ymd',mktime(0,0,0,$month,intval($day) - 1,$year));
     } else if (strlen($date)==6) {
  -    $pre_date= date('Ym',mktime(0,0,0,intval($month) - 1,1,$year));
  +    $cdate=date('Ym');
  +    $prev_date= date('Ym',mktime(0,0,0,intval($month) - 1,1,$year));
  +    if ($cdate > $date)
  +      $next_date= date('Ym',mktime(0,0,0,intval($month) + 1,1,$year));
     }
   
     if (in_array('simple',$opts)) {
  @@ -333,15 +339,15 @@
     $url=qualifiedUrl($formatter->link_url($DBInfo->frontpage));
   
     # make pnut
  -  $action="date=$pre_date";
  -  if ($options['action'])
  -    $action='action=blogchanges&amp;'.$action;
  -  if ($options['category'])
  -    $action.='&amp;category='.$options['category'];
  -  if ($options['mode'])
  -    $action.='&amp;mode='.$options['mode'];
  -  $pnut="<div class='blog-action'>".$formatter->link_to('?'.$action,'&laquo; '._("Previous"))."</div>";
  -  return $bra.$items.$cat.$pnut;
  +  $action="date=$prev_date";
  +  if ($options['action']) $action='action=blogchanges';
  +  if ($options['category']) $action.='&amp;category='.$options['category'];
  +  if ($options['mode']) $action.='&amp;mode='.$options['mode'];
  +
  +  $prev=$formatter->link_to('?'.$action.'&amp;date='.$prev_date,'&laquo; '._("Previous"));
  +  if ($next_date)
  +  $next=" | ".$formatter->link_to('?'.$action.'&amp;date='.$next_date,_("Next"). ' &raquo;');
  +  return $bra.$items.$cat."<div class='blog-action'>".$prev.$next."</div>";
   }
   // vim:et:sts=2:
   ?>
  
  
  


wkpark      04/08/16 11:37:08

  Modified:    plugin   BlogCategories.php
  Log:
  rss support added
  'norss' option added
  
  Revision  Changes    Path
  1.2       +9 -4      moniwiki/plugin/BlogCategories.php
  
  Index: BlogCategories.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogCategories.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- BlogCategories.php	15 Aug 2004 14:30:22 -0000	1.1
  +++ BlogCategories.php	16 Aug 2004 02:37:08 -0000	1.2
  @@ -3,14 +3,16 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogCategory macro plugin for the MoniWiki
   //
  -// $Id: BlogCategories.php,v 1.1 2004/08/15 14:30:22 wkpark Exp $
  +// $Id: BlogCategories.php,v 1.2 2004/08/16 02:37:08 wkpark Exp $
   
   function macro_BlogCategories($formatter,$value='') {
     global $DBInfo;
   
     if (!$DBInfo->hasPage($DBInfo->blog_category)) return '';
  -  $categories=array();
  +  $opts=explode(',',$value);
  +  if (in_array('norss',$opts)) $no_rss=1;
   
  +  $categories=array();
     $page=$DBInfo->getPage($DBInfo->blog_category);
   
     $raw=$page->get_raw_body();
  @@ -20,8 +22,11 @@
     foreach ($temp as $line) {
       $line=str_replace('/','_2f',$line);
       if (preg_match('/^ \* ([^ :]+)(?=\s|$)/',$line,$match)) {
  -       $lnk=str_replace('CATEGORY',$match[1],$link);
  -       $out.="<a href='$lnk'>$match[1]/</a><br/>";
  +      $lnk=str_replace('CATEGORY',$match[1],$link);
  +      if (!$no_rss)
  +        $rss='&nbsp;<a href="'.str_replace('blogchanges','blogrss',$lnk).'">'.
  +          '<img src="'.$DBInfo->imgs_dir.'/tiny-xml.gif'.'" border="0" /></a>';
  +      $out.="<a href='$lnk'>$match[1]/</a>$rss<br/>";
       }    
     }
   
  
  
  


wkpark      04/08/16 11:38:00

  Modified:    plugin   Calendar.php
  Log:
  more fixes
  
  Revision  Changes    Path
  1.9       +20 -14    moniwiki/plugin/Calendar.php
  
  Index: Calendar.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Calendar.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Calendar.php	15 Aug 2004 12:22:47 -0000	1.8
  +++ Calendar.php	16 Aug 2004 02:37:59 -0000	1.9
  @@ -7,7 +7,7 @@
   #-----usage: generate_calendar(2001, 11, $day_func, 2);-------------------------
   #------(last two arguments are optional)----------------------------------------
   #-------------------------------------------------------------------------------
  -# $Id: Calendar.php,v 1.8 2004/08/15 12:22:47 wkpark Exp $
  +# $Id: Calendar.php,v 1.9 2004/08/16 02:37:59 wkpark Exp $
   
   function calendar_get_dates($formatter,$date='',$page='') {
     global $DBInfo;
  @@ -19,6 +19,7 @@
   
     if (!$date) $date=date('Ym');
     $rule="/^$date(\d{2})_2e".$page."$/";
  +
     $archives=array();
     while ($file = readdir($handle)) {
       $fname=$DBInfo->cache_dir.'/blogchanges/'.$file;
  @@ -38,25 +39,24 @@
   
   	$date=$_GET['date'];
   
  -	$year_prev_tag='&laquo;';
  -	$year_next_tag='&raquo;';
  -	$prev_tag='&lsaquo;';
  -	$next_tag='&rsaquo;';
  +	$prev_tag='&laquo;';
  +	$next_tag='&raquo;';
   
   	static $day_headings= array('Sunday','Monday','Tuesday','Wednesday',
   		'Thursday','Friday','Saturday');
   	$day_heading_length = 3;
   
  -	preg_match("/^((\d{4})-?(\d{2}))?,?\s*([a-z, ]+)?$/i",$value,$match);
  +	preg_match("/^(?(?=')'([^']+)'|\"([^\"]+)\")?,?((\d{4})-?(\d{2}))?,?\s*([a-z, ]+)?$/i",$value,$match);
   
  +	#print_r($match);
   	/* GET argument has priority */
   	if ($date) {
   		preg_match("/^((\d{4})-?(\d{1,2}))$/i",$date,$match2);
   		$year= $match2[2];
   		$month= $match2[3];
  -	} else if ($match[1]) {
  -		$year= $match[2];
  -		$month= $match[3];
  +	} else if ($match[3]) {
  +		$year= $match[4];
  +		$month= $match[5];
   	}
   	/* Validate date. Use system date, if date is not validated */
   	if ($month <1 || $month > 12) {
  @@ -67,25 +67,26 @@
   	$month=intval($month);
   	$year=intval($year);
   
  -	if ($option)
  -		$pagename=$option;
  +	if ($match[1] or $match[2])
  +		$pagename=$match[1] ? $match[1]:$match[2];
   	else
   		$pagename=$formatter->page->name;
   
   	$link_prefix=sprintf("%04d-%02d",$year,$month);
   
   	$archives=array();
  -	if ($match[4]) {
  -		$args=explode(",",$match[4]);
  +	if ($match[6]) {
  +		$args=explode(",",$match[6]);
   
   		if (in_array ("blog", $args)) $mode='blog';
   		if (in_array ("noweek", $args)) $day_heading_length=0;
  +		if (in_array ("shortweek", $args)) $day_heading_length=1;
   		if (in_array ("yearlink", $args)) $yearlink=1;
   		if (in_array ("archive", $args)) {
   			if ($mode) // blog mode
   				$archives=calendar_get_dates($formatter,$date,$pagename.'/'.$link_prefix);
   			else {
  -				$archives=calendar_get_dates($formatter,$year.$month);
  +				$archives=calendar_get_dates($formatter,$date);
   				$mode='archive';
   			}
   		}
  @@ -96,6 +97,11 @@
   	if ($yearlink) {
   		$prev_year=date('Ym',mktime(0,0,0,$month,1,$year - 1));
   		$next_year=date('Ym',mktime(0,0,0,$month,1,$year + 1));
  +
  +		$year_prev_tag='&laquo;';
  +		$year_next_tag='&raquo;';
  +		$prev_tag='&lsaquo;';
  +		$next_tag='&rsaquo;';
   	}
   
   	$first_of_month = mktime (0,0,0, $month, 1, $year);
  
  
  


wkpark      04/08/16 12:12:25

  Modified:    plugin   BlogChanges.php
  Log:
  oops! fix last changes
  
  Revision  Changes    Path
  1.18      +2 -2      moniwiki/plugin/BlogChanges.php
  
  Index: BlogChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogChanges.php,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- BlogChanges.php	16 Aug 2004 02:35:22 -0000	1.17
  +++ BlogChanges.php	16 Aug 2004 03:12:25 -0000	1.18
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogChanges action plugin for the MoniWiki
   //
  -// $Id: BlogChanges.php,v 1.17 2004/08/16 02:35:22 wkpark Exp $
  +// $Id: BlogChanges.php,v 1.18 2004/08/16 03:12:25 wkpark Exp $
   
   class Blog_cache {
     function get_blogs() {
  @@ -218,7 +218,7 @@
     else
       $date=$options['date'];
   
  -  preg_match('/^(?(?=')'([^']+)'|\"([^\"]+)\")?,?(\d+)?(\s*,?\s*.*)?$/',
  +  preg_match("/^(?(?=')'([^']+)'|\"([^\"]+)\")?,?(\d+)?(\s*,?\s*.*)?$/",
       $value,$match);
   
     $category_pages=array();
  
  
  


wkpark      04/08/16 13:19:21

  Modified:    plugin   BlogChanges.php BlogCategories.php
  Log:
  more fixes
  
  Revision  Changes    Path
  1.19      +6 -4      moniwiki/plugin/BlogChanges.php
  
  Index: BlogChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogChanges.php,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- BlogChanges.php	16 Aug 2004 03:12:25 -0000	1.18
  +++ BlogChanges.php	16 Aug 2004 04:19:19 -0000	1.19
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogChanges action plugin for the MoniWiki
   //
  -// $Id: BlogChanges.php,v 1.18 2004/08/16 03:12:25 wkpark Exp $
  +// $Id: BlogChanges.php,v 1.19 2004/08/16 04:19:19 wkpark Exp $
   
   class Blog_cache {
     function get_blogs() {
  @@ -49,19 +49,21 @@
       $page=$DBInfo->getPage($DBInfo->blog_category);
   
       $raw=$page->get_raw_body();
  +    $raw=preg_replace("/(\{\{\{$)(.*)(\}\}\})/ms",'',$raw);
       $temp= explode("\n",$raw);
   
       foreach ($temp as $line) {
         $line=str_replace('/','_2f',$line);
  -      if (preg_match('/^ \* ([^ :]+)(?=\s|$)/',$line,$match)) {
  +      if (preg_match('/^ \* ([^ ]+)(?=\s|$)/',$line,$match)) {
           $category=$match[1];
           if (!$categories[$category])
             // include category page itself.
  -          $categories[$category]=array($categories[$category]);
  -      } else if ($category and preg_match('/^\s\s+\* ([^ :]+)(?=\s|$)/',$line,$match)) {
  +          $categories[$category]=array($category);
  +      } else if ($category and preg_match('/^\s{2,}\* ([^ ]+)(?=\s|$)/',$line,$match)) {
           $categories[$category][]=$match[1];
         }
       }
  +    #print_r($categories);
       return $categories;
     }
   
  
  
  
  1.3       +3 -2      moniwiki/plugin/BlogCategories.php
  
  Index: BlogCategories.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogCategories.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- BlogCategories.php	16 Aug 2004 02:37:08 -0000	1.2
  +++ BlogCategories.php	16 Aug 2004 04:19:20 -0000	1.3
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogCategory macro plugin for the MoniWiki
   //
  -// $Id: BlogCategories.php,v 1.2 2004/08/16 02:37:08 wkpark Exp $
  +// $Id: BlogCategories.php,v 1.3 2004/08/16 04:19:20 wkpark Exp $
   
   function macro_BlogCategories($formatter,$value='') {
     global $DBInfo;
  @@ -16,12 +16,13 @@
     $page=$DBInfo->getPage($DBInfo->blog_category);
   
     $raw=$page->get_raw_body();
  +  $raw=preg_replace("/(\{\{\{$)(.*)(\}\}\})/ms",'',$raw);
     $temp= explode("\n",$raw);
   
     $link=$formatter->link_url($formatter->page->name,'?action=blogchanges&amp;category=CATEGORY');
     foreach ($temp as $line) {
       $line=str_replace('/','_2f',$line);
  -    if (preg_match('/^ \* ([^ :]+)(?=\s|$)/',$line,$match)) {
  +    if (preg_match('/^ \* ([^ ]+)(?=\s|$)/',$line,$match)) {
         $lnk=str_replace('CATEGORY',$match[1],$link);
         if (!$no_rss)
           $rss='&nbsp;<a href="'.str_replace('blogchanges','blogrss',$lnk).'">'.
  
  
  


wkpark      04/08/16 17:10:06

  Modified:    plugin   Blog.php
  Log:
  make correct blog caches with reverse ordered blog pages
  
  Revision  Changes    Path
  1.19      +5 -3      moniwiki/plugin/Blog.php
  
  Index: Blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Blog.php,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- Blog.php	14 Aug 2004 16:38:39 -0000	1.18
  +++ Blog.php	16 Aug 2004 08:10:05 -0000	1.19
  @@ -5,7 +5,7 @@
   //
   // Usage: ?action=Blog
   //
  -// $Id: Blog.php,v 1.18 2004/08/14 16:38:39 wkpark Exp $
  +// $Id: Blog.php,v 1.19 2004/08/16 08:10:05 wkpark Exp $
   
   function updateBlogList($formatter) {
     global $DBInfo;
  @@ -46,7 +46,7 @@
         $time= strtotime($datestamp." GMT");
         $datestamp= date("Ymd",$time);
         if (!$date) $date=$datestamp;
  -      if ($datestamp < $date) {
  +      if ($datestamp != $date) {
           if ($date) {
             $log=join("\n",$entries)."\n";
             $logs.=$log;
  @@ -80,8 +80,10 @@
     $url=$formatter->link_url($formatter->page->urlname);
     $formatter->send_header("",$options);
   
  -  if ($options['mode']=='update')
  +  if ($formatter->refresh) {
       updateBlogList($formatter);
  +    $options['msg']=sprintf(_("Blog cache of \"%s\" is refreshed"),$formatter->page->name);
  +  }
   
     $savetext="";
     if ($options['savetext']) {
  
  
  


wkpark      04/08/16 17:21:39

  Modified:    plugin   BlogChanges.php
  Log:
  [[BlogChange('SinglePage',summary)]] support added
  (cf. [[BlogChanges('BlogCategory',all,summary)]]
  
  Revision  Changes    Path
  1.20      +24 -11    moniwiki/plugin/BlogChanges.php
  
  Index: BlogChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogChanges.php,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- BlogChanges.php	16 Aug 2004 04:19:19 -0000	1.19
  +++ BlogChanges.php	16 Aug 2004 08:21:39 -0000	1.20
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogChanges action plugin for the MoniWiki
   //
  -// $Id: BlogChanges.php,v 1.19 2004/08/16 04:19:19 wkpark Exp $
  +// $Id: BlogChanges.php,v 1.20 2004/08/16 08:21:39 wkpark Exp $
   
   class Blog_cache {
     function get_blogs() {
  @@ -75,6 +75,7 @@
         $daterule=Blog_cache::get_daterule();
   
       $rule="/^($daterule\d*)".'_2e('.join('|',$blogs).')$/';
  +
       $logs=array();
   
       $handle = @opendir($DBInfo->cache_dir."/blogchanges");
  @@ -197,6 +198,7 @@
     $options['action']=1;
     $options['summary']=1;
     $options['simple']=1;
  +  $options['all']=1;
   
     $changes=macro_BlogChanges($formatter,'all,'.$options['mode'],$options);
     $formatter->send_header('',$options);
  @@ -223,18 +225,28 @@
     preg_match("/^(?(?=')'([^']+)'|\"([^\"]+)\")?,?(\d+)?(\s*,?\s*.*)?$/",
       $value,$match);
   
  +  $opts=explode(',',$match[4]);
  +  $opts=array_merge($opts,array_keys($options));
  +
     $category_pages=array();
  -  if ($match[2] or $match[1] or $options['category']) {
  +  if (in_array('all',$opts) and ($match[2] or $match[1] and $options['category'])) {
  +    // set selected category with 'all' option
       $match[1]=$match[1] ? $match[1]:$match[2];
       $options['category']=$options['category'] ? $options['category']:$match[1];
       if ($DBInfo->blog_category) {
         $categories=Blog_cache::get_categories();
         if ($categories[$options['category']])
           $category_pages=$categories[$options['category']];
  +      else
  +        // category does not found
  +        // regard it as a single blog page
  +        $options['blogpage']=$options['category'];
       }
  +  } else if ($match[2] or $match[1]) {
  +    // set selected single blog page
  +    $options['blogpage']=$match[1] ? $match[1]:$match[2];
     }
  -  $opts=explode(',',$match[4]);
  -  $opts=array_merge($opts,array_keys($options));
  +
     if ($match[3]) {
       $options['limit']=$limit=$match[3];
     } else {
  @@ -251,7 +263,9 @@
         $blogs=Blog_cache::get_rc_blogs($date,$category_pages);
       else
         $blogs=Blog_cache::get_blogs();
  -  } else
  +  } else if ($options['blogpage'])
  +    $blogs=array($DBInfo->pageToKeyname($options['blogpage']));
  +  else
       $blogs=array($DBInfo->pageToKeyname($formatter->page->name));
   
     if (in_array('summary',$opts))
  @@ -341,14 +355,13 @@
     $url=qualifiedUrl($formatter->link_url($DBInfo->frontpage));
   
     # make pnut
  -  $action="date=$prev_date";
  -  if ($options['action']) $action='action=blogchanges';
  -  if ($options['category']) $action.='&amp;category='.$options['category'];
  -  if ($options['mode']) $action.='&amp;mode='.$options['mode'];
  +  if ($options['action']) $action='action=blogchanges&amp;';
  +  if ($options['category']) $action.='category='.$options['category'].'&amp;';
  +  if ($options['mode']) $action.='mode='.$options['mode'].'&amp;';
   
  -  $prev=$formatter->link_to('?'.$action.'&amp;date='.$prev_date,'&laquo; '._("Previous"));
  +  $prev=$formatter->link_to('?'.$action.'date='.$prev_date,'&laquo; '._("Previous"));
     if ($next_date)
  -  $next=" | ".$formatter->link_to('?'.$action.'&amp;date='.$next_date,_("Next"). ' &raquo;');
  +  $next=" | ".$formatter->link_to('?'.$action.'date='.$next_date,_("Next"). ' &raquo;');
     return $bra.$items.$cat."<div class='blog-action'>".$prev.$next."</div>";
   }
   // vim:et:sts=2:
  
  
  


wkpark      04/08/16 17:22:40

  Added:       plugin/processor diff.php
  Log:
  add a builtin diff processor
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/processor/diff.php
  
  Index: diff.php
  ===================================================================
  <?php
  // Copyright 2003-2004 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a diff colorizer plugin for the MoniWiki
  //
  // Usage: {{{#!diff
  // - hello world
  // + Hello world
  // }}}
  // $Id: diff.php,v 1.1 2004/08/16 08:22:40 wkpark Exp $
  
  function processor_diff($formatter,$value="") {
    if ($value[0]=='#' and $value[1]=='!')
      list($line,$value)=explode("\n",$value,2);
    list($dummy, $type)=explode(' ',$line);
    if (in_array($type,array('fancy','simple'))) {
      $type=$type.'_diff';
    } else
      $type='fancy_diff';
    // add first two blank lines
    return call_user_func(array(&$formatter,$type),"\n\n".$value);
  }
  
  ?>
  
  
  


wkpark      04/08/16 17:29:22

  Modified:    .        wiki.php
  Log:
  fixed word_forcelink() reported by puzzlet
  
  Revision  Changes    Path
  1.145     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.144
  retrieving revision 1.145
  diff -u -r1.144 -r1.145
  --- wiki.php	14 Aug 2004 16:01:13 -0000	1.144
  +++ wiki.php	16 Aug 2004 08:29:21 -0000	1.145
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.144 2004/08/14 16:01:13 wkpark Exp $
  +// $Id: wiki.php,v 1.145 2004/08/16 08:29:21 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.144 $',1,-1);
  +$_revision = substr('$Revision: 1.145 $',1,-1);
   $_release = '1.0.8';
   
   #ob_start("ob_gzhandler");
  @@ -151,7 +151,7 @@
       return "
   <form name='go' id='go' method='get' action='$action'>
   <table class='goto'>
  -<tr><td nowrap='nowrap' style='width:220'>
  +<tr><td nowrap='nowrap' style='width:220px'>
   <input type='text' name='value' size='28' accesskey='s' style='width:110px' />
   <input type='submit' name='status' value='Go' class='goto' style='width:23px' />
   </td></tr>
  @@ -1675,7 +1675,7 @@
     }
   
     function word_forcelink($word,$url) {
  -    return "<a href='$url'>$word</a>";
  +    return "<a class='nonexistent' href='$url'>$word</a>";
     }
   
     function word_fancy_nonexists($word,$url) {
  
  
  


wkpark      04/08/16 20:40:57

  Modified:    plugin   Blog.php
  Log:
  add 'refresh_button'
  
  Revision  Changes    Path
  1.20      +7 -2      moniwiki/plugin/Blog.php
  
  Index: Blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Blog.php,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- Blog.php	16 Aug 2004 08:10:05 -0000	1.19
  +++ Blog.php	16 Aug 2004 11:40:57 -0000	1.20
  @@ -5,7 +5,7 @@
   //
   // Usage: ?action=Blog
   //
  -// $Id: Blog.php,v 1.19 2004/08/16 08:10:05 wkpark Exp $
  +// $Id: Blog.php,v 1.20 2004/08/16 11:40:57 wkpark Exp $
   
   function updateBlogList($formatter) {
     global $DBInfo;
  @@ -80,7 +80,7 @@
     $url=$formatter->link_url($formatter->page->urlname);
     $formatter->send_header("",$options);
   
  -  if ($formatter->refresh) {
  +  if ($formatter->refresh or $options['button_refresh']) {
       updateBlogList($formatter);
       $options['msg']=sprintf(_("Blog cache of \"%s\" is refreshed"),$formatter->page->name);
     }
  @@ -223,6 +223,9 @@
         print $formatter->processor_repl('blog',$quote,$options);
         #print $formatter->send_page($quote,$options);
       }
  +    if ($options['id'] != 'Anonymous')
  +      $extra='<div style="text-align:right">'.'
  +        <input type="submit" name="button_refresh" value="Refresh" /></div>';
   
       print "<form method='post' action='$url'>\n";
       if ($options['value'])
  @@ -269,6 +272,7 @@
     $cols=$options['cols'] > 60 ? $options['cols']: $cols;
   
     $url=$formatter->link_url($formatter->page->urlname);
  +  $datestamp= $formatter->page->mtime();
   
     $form = "<form method='post' action='$url'>\n";
     $form.= "<b>Title</b>: <input name='title' size='70' maxlength='70' style='width:200' /><br />\n";
  @@ -278,6 +282,7 @@
   FORM;
     $form.= <<<FORM2
   <input type="hidden" name="action" value="Blog" />
  +<input type="hidden" name="datestamp" value="$datestamp" />
   <input type="submit" value="Save" />&nbsp;
   <input type="reset" value="Reset" />&nbsp;
   <input type="submit" name="button_preview" value="Preview" />
  
  
  


wkpark      04/08/16 20:42:49

  Added:       plugin   Comment.php
  Log:
  add a new Comment plugin
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  <?php
  // Copyright 2004 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a Wiki comment plugin for the MoniWiki
  //
  // Usage: [[Comment]], ?action=comment
  //
  //
  // $Id: Comment.php,v 1.1 2004/08/16 11:42:49 wkpark Exp $
  
  function macro_Comment($formatter,$value,$options=array()) {
    global $HTTP_USER_AGENT;
    if (!$options['page']) $options['page']=$formatter->page->name;
  
    if (!$DBInfo->security->writable($options)) return '';
  
    $COLS_MSIE = 80;
    $COLS_OTHER = 85;
    $cols = preg_match('/MSIE/', $HTTP_USER_AGENT) ? $COLS_MSIE : $COLS_OTHER;
  
    $rows=$options['rows'] > 5 ? $options['rows']: 5;
    $cols=$options['cols'] > 60 ? $options['cols']: $cols;
  
    if ($options['datestamp'])
      $datestamp= $options['datestamp'];
    else
      $datestamp= $formatter->page->mtime();
    $savetext=$options['savetext'];
  
    if (!$options['id']) {
      $user=new User(); # get from COOKIE VARS
      $options['id']=$user->id;
    }
  
    $url=$formatter->link_url($formatter->page->urlname);
  
    $form = "<form method='post' action='$url'>\n";
    $form.= <<<FORM
  <textarea class="wiki" id="content" wrap="virtual" name="savetext"
   rows="$rows" cols="$cols" class="wiki">$savetext</textarea><br />
  FORM;
    if ($options['id'] == 'Anonymous')
      $sig=_("Name").": <input name='name' /><br />";
    else 
      $sig="<input name='nosig' type='checkbox' />"._("Don't add a signature")."<br />";
    $form.= <<<FORM2
  $sig
  <input type="hidden" name="action" value="comment" />
  <input type="hidden" name="datestamp" value="$datestamp" />
  <input type="submit" value="Comment" />&nbsp;
  <input type="submit" name="button_preview" value="Preview" />
  <div style="text-align:right">
  <input type="reset" value="Reset" /></div>
  </form>
  FORM2;
  
    return $form;
  }
  
  function do_comment($formatter,$options=array()) {
    global $DBInfo;
    global $HTTP_USER_AGENT;
  
    if (!$DBInfo->security->writable($options)) {
      do_invalid($formatter,$options);
    }
  
    $COLS_MSIE = 80;
    $COLS_OTHER = 85;
    $cols = preg_match('/MSIE/', $HTTP_USER_AGENT) ? $COLS_MSIE : $COLS_OTHER;
  
    $rows=$options['rows'] > 5 ? $options['rows']: 8;
    $cols=$options['cols'] > 60 ? $options['cols']: $cols;
  
    $url=$formatter->link_url($formatter->page->urlname);
  
    if ($options['savetext']) {
      $savetext=stripslashes($options['savetext']);
      $savetext=str_replace("\r","",$savetext);
      $savetext=rtrim($savetext);
      #$savetext=str_replace("<","&lt;",$savetext);
    }
  
    if ($options['button_preview'] && $options['savetext']) {
      $formatter->send_header("",$options);
      $formatter->send_title(_("Preview comment"),"",$options);
      $formatter->send_page($savetext."\n----");
      print macro_Comment($formatter,'',$options);
      print $formatter->macro_repl('EditHints');
      $formatter->send_footer("",$options);
      return;
    } else if (!$savetext) {
      $formatter->send_header("",$options);
      $formatter->send_title(_("Add comment"),"",$options);
      print macro_Comment($formatter,'',$options);
      print $formatter->macro_repl('EditHints');
      $formatter->send_footer("",$options);
      return;
    }
  
    $datestamp= $options['datestamp'];
    if ($formatter->page->mtime() > $datestamp) {
      $options['msg']='';
      $formatter->send_header('',$options);
      $formatter->send_title(_("Error: Don't make a clone!"),'',$options);
      $formatter->send_footer('',$options);
      return;
    }
  
    $body=$formatter->page->get_raw_body();
  
    if ($options['id']=='Anonymous') $id=$_SERVER['REMOTE_ADDR'];
    else $id=$options['id'];
  
    if ($options['nosig']) $savetext="----\n$savetext\n";
    else $savetext="----\n$savetext -- $id @DATE@\n";
  
    if (preg_match("/\n##Comment\n/i",$body))
      $body= preg_replace("/\n##Comment\n/i","\n##Comment\n$savetext",$body,1);
    else if (preg_match("/\[\[Comment(\([^\)]*\))?\]\]/",$body))
      $body= preg_replace("/(\[\[Comment(\([^\)]*\))?\]\])/",$savetext."\\1",$body,1);
    else
      $body.=$savetext;
    $formatter->page->write($body);
    $DBInfo->savePage($formatter->page,"Comment added",$options);
    $options['msg']=sprintf(_("%s is commented successfully"),$formatter->link_tag($formatter->page->urlname,"?action=show",$options['page']));
    $title=_("Comment added successfully");
  
    $formatter->send_header('',$options);
    $formatter->send_title($title,'',$options);
  
    $opt['pagelinks']=1;
    # re-generates pagelinks
    $formatter->send_page('',$opt);
    $formatter->send_footer('',$options);
  
    return;
  }
  
  ?>
  
  
  


wkpark      04/08/16 20:50:50

  Modified:    plugin   Comment.php
  Log:
  remove reset button and fix last changes
  
  Revision  Changes    Path
  1.2       +2 -3      moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Comment.php	16 Aug 2004 11:42:49 -0000	1.1
  +++ Comment.php	16 Aug 2004 11:50:50 -0000	1.2
  @@ -6,10 +6,11 @@
   // Usage: [[Comment]], ?action=comment
   //
   //
  -// $Id: Comment.php,v 1.1 2004/08/16 11:42:49 wkpark Exp $
  +// $Id: Comment.php,v 1.2 2004/08/16 11:50:50 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $HTTP_USER_AGENT;
  +  global $DBInfo;
     if (!$options['page']) $options['page']=$formatter->page->name;
   
     if (!$DBInfo->security->writable($options)) return '';
  @@ -49,8 +50,6 @@
   <input type="hidden" name="datestamp" value="$datestamp" />
   <input type="submit" value="Comment" />&nbsp;
   <input type="submit" name="button_preview" value="Preview" />
  -<div style="text-align:right">
  -<input type="reset" value="Reset" /></div>
   </form>
   FORM2;
   
  
  
  


wkpark      04/08/16 22:29:01

  Modified:    plugin   FullSearch.php rename.php
  Log:
  'fix backlinks' support added. suggested by BrightsKorea
  
  Revision  Changes    Path
  1.3       +3 -2      moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- FullSearch.php	30 Sep 2003 09:37:30 -0000	1.2
  +++ FullSearch.php	16 Aug 2004 13:29:01 -0000	1.3
  @@ -4,7 +4,7 @@
   // a FullSearch plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: FullSearch.php,v 1.2 2003/09/30 09:37:30 wkpark Exp $
  +// $Id: FullSearch.php,v 1.3 2004/08/16 13:29:01 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
  @@ -113,7 +113,8 @@
     reset($hits);
     $idx=1;
     while (list($page_name, $count) = each($hits)) {
  -    $out.= '<li>'.$formatter->link_tag(_rawurlencode($page_name),
  +    if ($opts['checkbox']) $checkbox="<input type='checkbox' name='pagenames[]' value='$page_name' />";
  +    $out.= '<li>'.$checkbox.$formatter->link_tag(_rawurlencode($page_name),
             "?action=highlight&amp;value="._urlencode($value),
             $page_name,"tabindex='$idx'");
       $out.= ' . . . . ' . $count . (($count == 1) ? ' match' : ' matches');
  
  
  
  1.5       +48 -8     moniwiki/plugin/rename.php
  
  Index: rename.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rename.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- rename.php	7 Jan 2004 02:20:51 -0000	1.4
  +++ rename.php	16 Aug 2004 13:29:01 -0000	1.5
  @@ -3,17 +3,42 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a rename action plugin for the MoniWiki
   //
  -// $Id: rename.php,v 1.4 2004/01/07 02:20:51 wkpark Exp $
  +// $Id: rename.php,v 1.5 2004/08/16 13:29:01 wkpark Exp $
   
   function do_post_rename($formatter,$options) {
     global $DBInfo;
     
  -  if (isset($options['name'])) {
  +  if (isset($options['name']) and trim($options['name'])) {
       if ($DBInfo->hasPage($options['page']) && !$DBInfo->hasPage($options['name'])) {
  -      $DBInfo->renamePage($options['page'],$options['name'],$options);
         $title = sprintf(_("\"%s\" is renamed !"), $options['page']);
         $formatter->send_header("",$options);
         $formatter->send_title($title,"",$options);
  +      if ($options['pagenames'] and is_array($options['pagenames'])) {
  +        $regex=preg_quote($options['page']);
  +        $options['minor']=1;
  +        $new_encodedname=_rawurlencode($options['name']);
  +        foreach ($options['pagenames'] as $page) {
  +          $p = new WikiPage($page);
  +          if (!$p->exists()) continue;
  +          $f= new Formatter($p);
  +          $body= $p->_get_raw_body();
  +          $body= preg_replace("/$regex/m",$options['name'],$body);
  +          $f->page->write($body);
  +          if (!$options['show_only'])
  +            $DBInfo->savePage(&$f->page,'',$options);
  +          $msg.=sprintf(_("'%s' is changed"),
  +            $f->link_tag(_rawurlencode($page),
  +              "?action=highlight&amp;value=".$new_encodedname))."<br />";
  +        }
  +      }
  +      print $msg;
  +      if (!$options['show_only'])
  +        $DBInfo->renamePage($options['page'],$options['name'],$options);
  +      print sprintf(_("'%s' is renamed as '%s' successfully"),
  +        $options['page'],
  +        $formatter->link_tag($new_encodedname,
  +          "?action=highlight&amp;value=".$new_encodedname));
  +
         $formatter->send_footer("",$options);
         return;
       } else {
  @@ -28,23 +53,38 @@
     $formatter->send_header("",$options);
     $formatter->send_title($title,"",$options);
   #<tr><td align='right'><input type='checkbox' name='show' checked='checked' />show only </td><td><input type='password' name='passwd'>
  +
     print "<form method='post'>
   <table border='0'>
   <tr><td align='right'>Old name: </td><td><b>$options[page]</b></td></tr>
   <tr><td align='right'>New name: </td><td><input name='name' /></td></tr>\n";
  +  $rename_button=_("Rename");
  +  if ($options['value']=='check_backlinks') {
  +    print "<tr><td colspan='2'>\n";
  +    print check_backlinks($formatter,$options);   
  +    print "</td></tr>\n";
  +    $rename_button=_("Rename and fix Backlinks");
  +  }
     if ($DBInfo->security->is_protected("rename",$options))
       print "<tr><td align='right'>"._("Password").": </td><td><input type='password' name='passwd' /> ".
  -    _("Only WikiMaster can rename this page");
  -  print "<tr>";
  -  print "<td>"._("with revision history")."<input type='checkbox' name='history' /></td>";
  -  print "<td><input type='submit' name='button_rename' value='rename' /></td>";
  +    _("Only WikiMaster can rename this page")."</td></tr>\n";
  +  print "<tr>\n<td colspan='2'>"._("with revision history")."<input type='checkbox' name='history' />";
  +  print " "._("show only")."<input type='checkbox' name='show_only' checked='checked' /></td></tr>\n";
  +  print "<tr><td></td><td><input type='submit' name='button_rename' value='$rename_button' />";
  +  print " <a href='?action=rename&value=check_backlinks'>"._("Check backlinks").
  +"</a>";
     print "</td></tr>\n";
  -
     print "
   </table>
       <input type=hidden name='action' value='rename' />
       </form>";
   #  $formatter->send_page();
     $formatter->send_footer("",$options);
  +}
  +
  +function check_backlinks($formatter,$options) {
  +  $options['checkbox']=1;
  +
  +  return $formatter->macro_repl('FullSearch',$options['page'],$options);
   }
   ?>
  
  
  


wkpark      04/08/16 23:46:04

  Removed:     plugin   BlogArchive.php
  Log:
  renamed as BlogArchives


wkpark      04/08/17 01:23:55

  Modified:    plugin   Comment.php format.php
  Log:
  append 'return' to the end of all do_invalid() calls
  
  Revision  Changes    Path
  1.3       +3 -1      moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Comment.php	16 Aug 2004 11:50:50 -0000	1.2
  +++ Comment.php	16 Aug 2004 16:23:55 -0000	1.3
  @@ -6,13 +6,14 @@
   // Usage: [[Comment]], ?action=comment
   //
   //
  -// $Id: Comment.php,v 1.2 2004/08/16 11:50:50 wkpark Exp $
  +// $Id: Comment.php,v 1.3 2004/08/16 16:23:55 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $HTTP_USER_AGENT;
     global $DBInfo;
     if (!$options['page']) $options['page']=$formatter->page->name;
   
  +  #if (!$DBInfo->_isWritable($options['page'])) return '';
     if (!$DBInfo->security->writable($options)) return '';
   
     $COLS_MSIE = 80;
  @@ -62,6 +63,7 @@
   
     if (!$DBInfo->security->writable($options)) {
       do_invalid($formatter,$options);
  +    return;
     }
   
     $COLS_MSIE = 80;
  
  
  
  1.3       +9 -5      moniwiki/plugin/format.php
  
  Index: format.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/format.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- format.php	10 Aug 2003 08:20:36 -0000	1.2
  +++ format.php	16 Aug 2004 16:23:55 -0000	1.3
  @@ -4,7 +4,7 @@
   // a format plugin to connect with processors for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: format.php,v 1.2 2003/08/10 08:20:36 wkpark Exp $
  +// $Id: format.php,v 1.3 2004/08/16 16:23:55 wkpark Exp $
   
   function do_format($formatter,$options) {
     $mimes=array('text/plain'=>'html','text/xml'=>'text_xml');
  @@ -15,10 +15,12 @@
     if ($pi['#format']=='xsltproc') {
       $options['title']= _("It is a XML format !");
       do_invalid($formatter,$options);
  +    return;
     }
  -  if (!$formatter->page->exists()) do_invalid($formatter,$options);
  -
  -  // Detect File type
  +  if (!$formatter->page->exists()) {
  +    do_invalid($formatter,$options);
  +    return;
  +  } // Detect File type
     else if (array_key_exists($mimetype,$mimes)) {
       header("Content-type: ".$mimetype);
       print $formatter->processor_repl($mimes[$mimetype],$formatter->page->get_raw_body());
  @@ -28,8 +30,10 @@
   
       if (getProcessor($processor))
         print $formatter->processor_repl($processor,$formatter->page->get_raw_body());
  -    else
  +    else {
         do_invalid($formatter,$options);
  +      return;
  +    }
     }
   
     return;
  
  
  


wkpark      04/08/17 01:42:04

  Modified:    .        wiki.php
  Log:
  add 'comment_macro' support
  fix savePage() and add minor option
  
  Revision  Changes    Path
  1.146     +13 -7     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.145
  retrieving revision 1.146
  diff -u -r1.145 -r1.146
  --- wiki.php	16 Aug 2004 08:29:21 -0000	1.145
  +++ wiki.php	16 Aug 2004 16:42:03 -0000	1.146
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.145 2004/08/16 08:29:21 wkpark Exp $
  +// $Id: wiki.php,v 1.146 2004/08/16 16:42:03 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.145 $',1,-1);
  +$_revision = substr('$Revision: 1.146 $',1,-1);
   $_release = '1.0.8';
   
   #ob_start("ob_gzhandler");
  @@ -843,7 +843,7 @@
           if (abs($check) < 3) $minor=1;
         }
       }
  -    if (!$minor)
  +    if (!$minor or !$options['minor'])
         $this->addLogEntry($keyname, $REMOTE_ADDR,$comment,"SAVE");
       return 0;
     }
  @@ -908,7 +908,7 @@
     }
   
     function setPerms($pagename,$perms) {
  -    umask(000);
  +    umask(0700);
       $key=$this->getPageKey($pagename);
       if (file_exists($key)) chmod($key,$perms);
     }
  @@ -1064,8 +1064,12 @@
   
       $fp=@fopen($this->filename,"r");
       if (!$fp) {
  -      $out="You have no permission to see this page.\n\n";
  -      $out.="See MoniWiki/AccessControl\n";
  +      if (file_exists($this->filename)) {
  +        $out="You have no permission to see this page.\n\n";
  +        $out.="See MoniWiki/AccessControl\n";
  +        return $out;
  +      }
  +      $out=_("File does not exists");
         return $out;
       }
       $this->fsize=filesize($this->filename);
  @@ -1985,7 +1989,7 @@
             continue;
           }
         }
  -      if ($line[0]=='#' and $line[1]=='#') {
  +      if (!$in_pre and $line[0]=='#' and $line[1]=='#') {
           if ($line[2]=='[') {
             $macro=substr($line,4,-2);
             $text.= $this->macro_repl($macro);
  @@ -3199,6 +3203,8 @@
   #      print $out;
   #      $cache->update($pagename,$out);
   #    }
  +    if ($DBInfo->comment_macro)
  +      print $formatter->macro_repl($DBInfo->comment_macro);
       
       $options['timer']->Check("send_page");
       $formatter->write("</div>\n");
  
  
  


wkpark      04/08/17 01:42:54

  Modified:    .        wikilib.php
  Log:
  fix TableOfContents() macro
  
  Revision  Changes    Path
  1.108     +9 -4      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.107
  retrieving revision 1.108
  diff -u -r1.107 -r1.108
  --- wikilib.php	14 Aug 2004 11:19:25 -0000	1.107
  +++ wikilib.php	16 Aug 2004 16:42:54 -0000	1.108
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.107 2004/08/14 11:19:25 wkpark Exp $
  +// $Id: wikilib.php,v 1.108 2004/08/16 16:42:54 wkpark Exp $
   
   function find_needle($body,$needle,$count=0) {
     if (!$body) return '';
  @@ -403,6 +403,7 @@
     global $DBInfo;
     if (!$DBInfo->security->writable($options)) {
       do_invalid($formatter,$options);
  +    return;
     }
     $formatter->send_header("",$options);
     $formatter->send_title("Edit ".$options['page'],"",$options);
  @@ -748,6 +749,7 @@
     global $DBInfo;
     if (!$DBInfo->security->writable($options)) {
       do_invalid($formatter,$options);
  +    return;
     }
   
     $savetext=$options['savetext'];
  @@ -1424,11 +1426,14 @@
    $baseurl='';
    if ($value and $DBInfo->hasPage($value)) {
      $p=$DBInfo->getPage($value);
  -   $lines=explode("\n",$p->get_raw_body());
  +   $body=$p->get_raw_body();
      $baseurl=$formatter->link_url(_urlencode($value));
      $formatter->page=&$p;
  - } else
  -   $lines=explode("\n",$formatter->page->get_raw_body());
  + } else {
  +   $body=$formatter->page->get_raw_body();
  + }
  + $body=preg_replace("/(\{\{\{$)(.*)(\}\}\})/ms",'',$body);
  + $lines=explode("\n",$body);
    foreach ($lines as $line) {
      $line=preg_replace("/\n$/", "", $line); # strip \n
      preg_match("/(?<!=)(={1,5})\s(#?)(.*)\s+(={1,5})\s?$/",$line,$match);
  
  
  


wkpark      04/08/17 13:03:21

  Modified:    plugin   BlogChanges.php
  Log:
  clean up and more fixes
  Category items or Category name itself is regarded as a page pattern(regex)
  
  Revision  Changes    Path
  1.21      +75 -48    moniwiki/plugin/BlogChanges.php
  
  Index: BlogChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogChanges.php,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- BlogChanges.php	16 Aug 2004 08:21:39 -0000	1.20
  +++ BlogChanges.php	17 Aug 2004 04:03:19 -0000	1.21
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogChanges action plugin for the MoniWiki
   //
  -// $Id: BlogChanges.php,v 1.20 2004/08/16 08:21:39 wkpark Exp $
  +// $Id: BlogChanges.php,v 1.21 2004/08/17 04:03:19 wkpark Exp $
   
   class Blog_cache {
     function get_blogs() {
  @@ -53,17 +53,19 @@
       $temp= explode("\n",$raw);
   
       foreach ($temp as $line) {
  -      $line=str_replace('/','_2f',$line);
         if (preg_match('/^ \* ([^ ]+)(?=\s|$)/',$line,$match)) {
           $category=$match[1];
           if (!$categories[$category])
             // include category page itself.
             $categories[$category]=array($category);
  -      } else if ($category and preg_match('/^\s{2,}\* ([^ ]+)(?=\s|$)/',$line,$match)) {
  +      } else if ($category
  +        and preg_match('/^\s{2,}\* ([^ ]+)(?=\s|$)/',$line,$match)) {
  +        // sub category (or blog pages list)
           $categories[$category][]=$match[1];
  +        // all items are regarded as a category
  +        $categories[$match[1]]=array($match[1]);
         }
       }
  -    #print_r($categories);
       return $categories;
     }
   
  @@ -74,7 +76,7 @@
       if (!$daterule)
         $daterule=Blog_cache::get_daterule();
   
  -    $rule="/^($daterule\d*)".'_2e('.join('|',$blogs).')$/';
  +    $rule="/^($daterule\d*)".'_2e('.implode('|',$blogs).')$/';
   
       $logs=array();
   
  @@ -91,7 +93,6 @@
       rsort($filelist);
   
       while ((list($key, $file) = each ($filelist))) {
  -      #echo "<b>$file</b><br>";
         if (preg_match($rule,$file,$match)) {
           $fname=$DBInfo->cache_dir."/blogchanges/".$file;
           $datestamp=$match[1];
  @@ -120,20 +121,23 @@
       if (!$date)
         $date=Blog_cache::get_daterule();
   
  +    $pages=array_map('_preg_search_escape',$pages);
       if ($pages) $pagerule=implode('|',$pages);
       else $pagerule='.*';
       $rule="/^($date\d*)_2e($pagerule)$/";
  +
       while ($file = readdir($handle)) {
         $fname=$DBInfo->cache_dir."/blogchanges/".$file;
         if (is_dir($fname)) continue;
  +
  +      $file=str_replace('_2f','/',$file); // XXX
         if (preg_match($rule,$file,$match))
           $blogs[]=$match[2];
       }
  -
  +    #print_r($blogs);
       return array_unique($blogs);
     }
   
  -
     function get_summary($blogs,$options) {
       global $DBInfo;
   
  @@ -187,29 +191,36 @@
   }
   
   function BlogCompare($a,$b) {
  -  # third field is a date
     if ($a[2] == $b[2]) return 0;
  -#    return strcmp($a[3],$b[3]);
  +  # date:2nd field
  +  # title:3rd field
  +  # return strcmp($a[3],$b[3]);
     return ($a[2] > $b[2]) ? -1:1;
   }
   
   function do_BlogChanges($formatter,$options='') {
  -  if (!$options['date']) $options['date']=date('Ym');
  +#  if (!$options['date']) $options['date']=date('Ym');
     $options['action']=1;
     $options['summary']=1;
     $options['simple']=1;
     $options['all']=1;
  +# $options['mode'] // XXX
   
     $changes=macro_BlogChanges($formatter,'all,'.$options['mode'],$options);
     $formatter->send_header('',$options);
     if ($options['category'])
  -    $formatter->send_title($options['category'],'',$options);
  +    $formatter->send_title(_("Category: ").$options['category'],'',$options);
     else
       $formatter->send_title(_("BlogChanges"),'',$options);
     print '<div id="wikiContent">';
     print $changes;
     print '</div>';
  -  $formatter->send_footer('',$options);
  +  #$args['editable']=-1;
  +  // XXX
  +  $formatter->pi['#action']='BlogCategories';
  +  $args['noaction']=1;
  +
  +  $formatter->send_footer($args,$options);
     return;
   }
   
  @@ -222,52 +233,59 @@
     else
       $date=$options['date'];
   
  -  preg_match("/^(?(?=')'([^']+)'|\"([^\"]+)\")?,?(\d+)?(\s*,?\s*.*)?$/",
  +  // parse args
  +  preg_match("/^(?(?=')'([^']+)'|\"([^\"]+)\")?,?(\s*,?\s*.*)?$/",
       $value,$match);
   
  -  $opts=explode(',',$match[4]);
  +  $opts=explode(',',$match[3]);
     $opts=array_merge($opts,array_keys($options));
  +  #print_r($match);print_r($opts);
   
     $category_pages=array();
  -  if (in_array('all',$opts) and ($match[2] or $match[1] and $options['category'])) {
  -    // set selected category with 'all' option
  -    $match[1]=$match[1] ? $match[1]:$match[2];
  -    $options['category']=$options['category'] ? $options['category']:$match[1];
  +
  +  $match[1]=$match[1] ? $match[1]:$match[2];
  +  $options['category']=$options['category'] ? $options['category']:$match[1];
  +  if ($options['category']) {
       if ($DBInfo->blog_category) {
         $categories=Blog_cache::get_categories();
         if ($categories[$options['category']])
           $category_pages=$categories[$options['category']];
  -      else
  +    }
  +    if (!$category_pages) {
  +      if ($DBInfo->hasPage($options['category'])) {
           // category does not found
           // regard it as a single blog page
  -        $options['blogpage']=$options['category'];
  +        $blog_page=$options['category'];
  +      } else {
  +        // or category pattern like as 'Blog/Misc/.*'
  +        $category_pages=array($options['category']);
  +      }
       }
  -  } else if ($match[2] or $match[1]) {
  -    // set selected single blog page
  -    $options['blogpage']=$match[1] ? $match[1]:$match[2];
     }
   
  -  if ($match[3]) {
  -    $options['limit']=$limit=$match[3];
  -  } else {
  +  foreach ($opts as $opt)
  +    if ($limit= intval($opt)) break;
  +  if (!$limit) {
       if ($date) $limit=30;
       else $limit=10;
     }
   
  -  # check error and set default value
  -  # default: show BlogChages monthly
  -
     #print_r($category_pages);
     if (in_array('all',$opts) or $category_pages) {
       if (in_array('summary',$opts))
         $blogs=Blog_cache::get_rc_blogs($date,$category_pages);
       else
         $blogs=Blog_cache::get_blogs();
  -  } else if ($options['blogpage'])
  -    $blogs=array($DBInfo->pageToKeyname($options['blogpage']));
  +  } else if ($blog_page)
  +    $blogs=array($DBInfo->pageToKeyname($blog_page));
     else
       $blogs=array($DBInfo->pageToKeyname($formatter->page->name));
   
  +#  if (empty($blogs)) {
  +#    // no blog entries found
  +#    return _("No entries found");
  +#  }
  +
     if (in_array('summary',$opts))
       $logs=Blog_cache::get_summary($blogs,$options);
     else
  @@ -283,6 +301,7 @@
   
     if (strlen($date)==8) {
       $prev_date= date('Ymd',mktime(0,0,0,$month,intval($day) - 1,$year));
  +    $next_date= date('Ymd',mktime(0,0,0,$month,intval($day) + 1,$year));
     } else if (strlen($date)==6) {
       $cdate=date('Ym');
       $prev_date= date('Ym',mktime(0,0,0,intval($month) - 1,1,$year));
  @@ -290,7 +309,8 @@
         $next_date= date('Ym',mktime(0,0,0,intval($month) + 1,1,$year));
     }
   
  -  if (in_array('simple',$opts)) {
  +  // set output style
  +  if (in_array('simple',$opts) or in_array('summary',$opts)) {
       $bra="";
       $sep="<br />";
       $bullet="";
  @@ -301,47 +321,52 @@
       $sep="</li>\n";
       $cat="</ul>";
     }
  -  $template='$out="$bullet<a href=\"$url#$tag\">$title</a> <span class=\"blog-user\">';
  +  $template='$out="$bullet<a href=\"$url#$tag\">$title</a> '.
  +    '<span class=\"blog-user\">';
     if (in_array('summary',$opts))
  -  $template='$out="$bullet<div class=\"blog-title\"><a name=\"$tag\"></a><a href=\"$url#$tag\">$title</a> <a class=\"puple\" href=\"#$tag\">'.addslashes($formatter->purple_icon).'</a></div><span class=\"blog-user\">';
  +    $template='$out="$bullet<div class=\"blog-title\"><a name=\"$tag\"></a>'.
  +      '<a href=\"$url#$tag\">$title</a> <a class=\"puple\" href=\"#$tag\">'.
  +      addslashes($formatter->purple_icon).
  +      '</a></div><span class=\"blog-user\">';
     if (!in_array('nouser',$opts))
       $template.='by $user ';
     if (!in_array('nodate',$opts))
       $template.='@ $date ';
   
  -  if (in_array('summary',$opts)) {
  +  if (in_array('summary',$opts))
       $template.='</span><div class=\"blog-summary\">$summary</div>$sep\n";';
  -  }
     else
       $template.='</span>$sep\n";';
       
     $time_current= time();
  -  $items="";
  +  $items='';
   
     foreach ($logs as $log) {
       list($page, $user,$date,$title,$summary)= $log;
  -    $tag=md5($user." ".$date." ".$title);
  +    $tag=md5($user.' '.$date.' '.$title);
       $datetag='';
   
       $url=qualifiedUrl($formatter->link_url(_urlencode($page)));
       if (!$opts['nouser'] and $user and $DBInfo->hasPage($user))
  -      $user=$formatter->link_tag(_rawurlencode($user),"",$user);
  +      $user=$formatter->link_tag(_rawurlencode($user),'',$user);
   
       if (!$title) continue;
   
       $date[10]=' ';
  -    $time=strtotime($date." GMT");
  +    $time=strtotime($date.' GMT');
   
  -    $date= date("m-d [h:i a]",$time);
  +    $date= date('m-d [h:i a]',$time);
       if ($summary) {
         $anchor= date('Ymd',$time);
         if ($date_anchor != $anchor) {
  -        $datetag= "<div class='blog-date'>".date('M d, Y',$time)." <a name='$anchor'></a><a class='purple' href='#$anchor'>$formatter->purple_icon</a></div>";
  +        $datetag= '<div class="blog-date">'.date('M d, Y',$time).
  +          ' <a name="'.$anchor.'"></a><a class="purple" href="#'.$anchor.'">'.
  +          $formatter->purple_icon.'</a></div>';
           $date_anchor= $anchor;
         }
         $p=new WikiPage($page);
         $f=new Formatter($p);
  -      $summary=str_replace('\}}}','}}}',$summary);
  +      $summary=str_replace('\}}}','}}}',$summary); # XXX
         ob_start();
         $f->send_page($summary);
         $summary=ob_get_contents();
  @@ -350,7 +375,7 @@
   
       eval($template);
       $items.=$datetag.$out;
  -    if ($limit-- < 0) break;
  +    if (--$limit <= 0) break;
     }
     $url=qualifiedUrl($formatter->link_url($DBInfo->frontpage));
   
  @@ -359,10 +384,12 @@
     if ($options['category']) $action.='category='.$options['category'].'&amp;';
     if ($options['mode']) $action.='mode='.$options['mode'].'&amp;';
   
  -  $prev=$formatter->link_to('?'.$action.'date='.$prev_date,'&laquo; '._("Previous"));
  +  $prev=$formatter->link_to('?'.$action.'date='.$prev_date,'&laquo; '.
  +    _("Previous"));
     if ($next_date)
  -  $next=" | ".$formatter->link_to('?'.$action.'date='.$next_date,_("Next"). ' &raquo;');
  -  return $bra.$items.$cat."<div class='blog-action'>".$prev.$next."</div>";
  +    $next=" | ".$formatter->link_to('?'.$action.'date='.$next_date,
  +      _("Next").' &raquo;');
  +  return $bra.$items.$cat.'<div class="blog-action">'.$prev.$next.'</div>';
   }
   // vim:et:sts=2:
   ?>
  
  
  


wkpark      04/08/17 13:06:45

  Modified:    plugin   Comment.php
  Log:
  more fixes
  
  Revision  Changes    Path
  1.4       +4 -2      moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Comment.php	16 Aug 2004 16:23:55 -0000	1.3
  +++ Comment.php	17 Aug 2004 04:06:43 -0000	1.4
  @@ -6,7 +6,7 @@
   // Usage: [[Comment]], ?action=comment
   //
   //
  -// $Id: Comment.php,v 1.3 2004/08/16 16:23:55 wkpark Exp $
  +// $Id: Comment.php,v 1.4 2004/08/17 04:06:43 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $HTTP_USER_AGENT;
  @@ -110,7 +110,9 @@
   
     $body=$formatter->page->get_raw_body();
   
  -  if ($options['id']=='Anonymous') $id=$_SERVER['REMOTE_ADDR'];
  +  if ($options['id']=='Anonymous')
  +    $id=$options['name'] ?
  +      stripslashes($options['name']):$_SERVER['REMOTE_ADDR'];
     else $id=$options['id'];
   
     if ($options['nosig']) $savetext="----\n$savetext\n";
  
  
  


wkpark      04/08/17 13:07:12

  Modified:    plugin   BlogCategories.php
  Log:
  add 'all' option
  
  Revision  Changes    Path
  1.4       +19 -6     moniwiki/plugin/BlogCategories.php
  
  Index: BlogCategories.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogCategories.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- BlogCategories.php	16 Aug 2004 04:19:20 -0000	1.3
  +++ BlogCategories.php	17 Aug 2004 04:07:11 -0000	1.4
  @@ -3,14 +3,16 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogCategory macro plugin for the MoniWiki
   //
  -// $Id: BlogCategories.php,v 1.3 2004/08/16 04:19:20 wkpark Exp $
  +// $Id: BlogCategories.php,v 1.4 2004/08/17 04:07:11 wkpark Exp $
   
   function macro_BlogCategories($formatter,$value='') {
     global $DBInfo;
   
  +  $depth='';
     if (!$DBInfo->hasPage($DBInfo->blog_category)) return '';
     $opts=explode(',',$value);
     if (in_array('norss',$opts)) $no_rss=1;
  +  if (in_array('all',$opts)) $depth=',';
   
     $categories=array();
     $page=$DBInfo->getPage($DBInfo->blog_category);
  @@ -21,17 +23,28 @@
   
     $link=$formatter->link_url($formatter->page->name,'?action=blogchanges&amp;category=CATEGORY');
     foreach ($temp as $line) {
  -    $line=str_replace('/','_2f',$line);
  -    if (preg_match('/^ \* ([^ ]+)(?=\s|$)/',$line,$match)) {
  -      $lnk=str_replace('CATEGORY',$match[1],$link);
  +    #$line=str_replace('/','_2f',$line);
  +    if (preg_match('/^(\s{1'.$depth.'})\* ([^ ]+)(?=\s|$)/',$line,$match)) {
  +      $lnk=str_replace('CATEGORY',$match[2],$link);
         if (!$no_rss)
           $rss='&nbsp;<a href="'.str_replace('blogchanges','blogrss',$lnk).'">'.
             '<img src="'.$DBInfo->imgs_dir.'/tiny-xml.gif'.'" border="0" /></a>';
  -      $out.="<a href='$lnk'>$match[1]/</a>$rss<br/>";
  -    }    
  +      $dep=str_replace(' ','&nbsp;&nbsp;',$match[1]);
  +      $out.="$dep<a href='$lnk'>$match[2]/</a>$rss<br/>";
  +    }
     }
   
     return $out;
  +}
  +
  +function do_blogcategories($formatter,$options) {
  +  global $DBInfo;
  +  $formatter->send_header("",$options);
  +  $formatter->send_title("Blog Categories","",$options);
  +  $formatter->send_page('== ['.$DBInfo->blog_category.'] ==');
  +  print macro_BlogCategories($formatter,'all',$options);
  +  $args['noaction']=1;
  +  $formatter->send_footer($args,$options);
   }
   // vim:et:sts=2:
   ?>
  
  
  


wkpark      04/08/17 19:47:06

  Modified:    plugin   BlogChanges.php
  Log:
  simplify get_simple()
  categories/patterns with multibyte characters support added
  
  Revision  Changes    Path
  1.22      +39 -54    moniwiki/plugin/BlogChanges.php
  
  Index: BlogChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogChanges.php,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- BlogChanges.php	17 Aug 2004 04:03:19 -0000	1.21
  +++ BlogChanges.php	17 Aug 2004 10:47:05 -0000	1.22
  @@ -3,10 +3,10 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogChanges action plugin for the MoniWiki
   //
  -// $Id: BlogChanges.php,v 1.21 2004/08/17 04:03:19 wkpark Exp $
  +// $Id: BlogChanges.php,v 1.22 2004/08/17 10:47:05 wkpark Exp $
   
   class Blog_cache {
  -  function get_blogs() {
  +  function get_all_blogs() {
       global $DBInfo;
   
       $blogs=array();
  @@ -53,17 +53,18 @@
       $temp= explode("\n",$raw);
   
       foreach ($temp as $line) {
  -      if (preg_match('/^ \* ([^ ]+)(?=\s|$)/',$line,$match)) {
  -        $category=$match[1];
  +      if (preg_match('/^ \* ([^:]+)(?=\s|:|$)/',$line,$match)) {
  +        $category=rtrim($match[1]);
           if (!$categories[$category])
             // include category page itself.
             $categories[$category]=array($category);
         } else if ($category
  -        and preg_match('/^\s{2,}\* ([^ ]+)(?=\s|$)/',$line,$match)) {
  +        and preg_match('/^\s{2,}\* ([^:]+)(?=\s|:|$)/',$line,$match)) {
           // sub category (or blog pages list)
  -        $categories[$category][]=$match[1];
  +        $subcategory=rtrim($match[1]);
  +        $categories[$category][]=$subcategory;
           // all items are regarded as a category
  -        $categories[$match[1]]=array($match[1]);
  +        $categories[$subcategory]=array($subcategory);
         }
       }
       return $categories;
  @@ -72,41 +73,18 @@
     function get_simple($blogs,$options) {
       global $DBInfo;
   
  -    $daterule=$options['date'];
  -    if (!$daterule)
  -      $daterule=Blog_cache::get_daterule();
  -
  -    $rule="/^($daterule\d*)".'_2e('.implode('|',$blogs).')$/';
  -
       $logs=array();
   
  -    $handle = @opendir($DBInfo->cache_dir."/blogchanges");
  -    if (!$handle) return array();
  -
  -    while (($file = readdir($handle)) !== false) {
  -      $fname=$DBInfo->cache_dir."/blogchanges/".$file;
  -      if (is_dir($fname)) continue;
  -      $filelist[] = $file;
  -    }
  -    closedir($handle);
  -
  -    rsort($filelist);
  -
  -    while ((list($key, $file) = each ($filelist))) {
  -      if (preg_match($rule,$file,$match)) {
  -        $fname=$DBInfo->cache_dir."/blogchanges/".$file;
  -        $datestamp=$match[1];
  -        $blog=$match[2];
  -        $pagename=$DBInfo->keyToPagename($blog);
  -
  -        $items=file($fname);
  -        foreach ($items as $line) {
  -          list($author,$datestamp,$dummy)=explode(' ',$line);
  -          #$datestamp[10]=' ';
  -          #$timestamp= strtotime($datestamp." GMT");
  -          #$datestamp= date("Ym",$timestamp);
  -          $logs[]=explode(' ',$pagename." ".rtrim($line),4);
  -        }
  +    foreach ($blogs as $blog) {
  +      $pagename=$DBInfo->keyToPagename($blog);
  +      $pageurl=_urlencode($pagename);
  +      $file=$DBInfo->pageToKeyname($blog); // XXX
  +      $fname=$DBInfo->cache_dir.'/blog/'.$file;
  +
  +      $items=file($fname);
  +      foreach ($items as $line) {
  +        list($author,$datestamp,$dummy)=explode(' ',$line);
  +        $logs[]=explode(' ',$pageurl.' '.rtrim($line),4);
         }
       }
       return $logs;
  @@ -124,14 +102,14 @@
       $pages=array_map('_preg_search_escape',$pages);
       if ($pages) $pagerule=implode('|',$pages);
       else $pagerule='.*';
  -    $rule="/^($date\d*)_2e($pagerule)$/";
  +    $rule="/^($date\d*)\.($pagerule)$/";
   
       while ($file = readdir($handle)) {
         $fname=$DBInfo->cache_dir."/blogchanges/".$file;
         if (is_dir($fname)) continue;
   
  -      $file=str_replace('_2f','/',$file); // XXX
  -      if (preg_match($rule,$file,$match))
  +      $pagename=$DBInfo->keyToPagename($file);
  +      if (preg_match($rule,$pagename,$match))
           $blogs[]=$match[2];
       }
       #print_r($blogs);
  @@ -161,6 +139,7 @@
   
       foreach ($blogs as $blog) {
         $pagename=$DBInfo->keyToPagename($blog);
  +      $pageurl=_urlencode($pagename);
         $page=$DBInfo->getPage($pagename);
   
         $raw=$page->get_raw_body();
  @@ -169,7 +148,7 @@
         foreach ($temp as $line) {
           if (!$state) {
             if (preg_match("/^({{{)?#!blog\s([^ ]+\s($date"."[^ ]+)\s.*)$/",$line,$match)) {
  -            $entry=explode(" ",$pagename." ".$match[2],4);
  +            $entry=explode(' ',$pageurl.' '.$match[2],4);
               if ($match[1]) $endtag='}}}';
               $state=1;
             }
  @@ -261,7 +240,8 @@
           $category_pages=array($options['category']);
         }
       }
  -  }
  +  } else
  +    $opts['all']=1;
   
     foreach ($opts as $opt)
       if ($limit= intval($opt)) break;
  @@ -272,14 +252,10 @@
   
     #print_r($category_pages);
     if (in_array('all',$opts) or $category_pages) {
  -    if (in_array('summary',$opts))
  -      $blogs=Blog_cache::get_rc_blogs($date,$category_pages);
  -    else
  -      $blogs=Blog_cache::get_blogs();
  +    $blogs=Blog_cache::get_rc_blogs($date,$category_pages);
     } else if ($blog_page)
  -    $blogs=array($DBInfo->pageToKeyname($blog_page));
  -  else
  -    $blogs=array($DBInfo->pageToKeyname($formatter->page->name));
  +    //$blogs=array($DBInfo->pageToKeyname($blog_page));
  +    $blogs=array($blog_page);
   
   #  if (empty($blogs)) {
   #    // no blog entries found
  @@ -347,8 +323,17 @@
       $datetag='';
   
       $url=qualifiedUrl($formatter->link_url(_urlencode($page)));
  -    if (!$opts['nouser'] and $user and $DBInfo->hasPage($user))
  -      $user=$formatter->link_tag(_rawurlencode($user),'',$user);
  +    if (!$opts['nouser']) {
  +      if (preg_match('/^[\d\.]+$/',$user)) {
  +        if ($DBInfo->interwiki['Whois'])
  +          $user='<a href="'.$DBInfo->interwiki['Whois'].$user.'">'.
  +            _("Anonymous").'</a>';
  +        else
  +          $user=_("Anonymous");#"[$user]";
  +      } else if ($DBInfo->hasPage($user)) {
  +        $user=$formatter->link_tag(_rawurlencode($user),'',$user);
  +      }
  +    }
   
       if (!$title) continue;
   
  
  
  


wkpark      04/08/17 19:49:19

  Modified:    plugin   BlogCategories.php
  Log:
  Multibyte category support added
  
  Revision  Changes    Path
  1.5       +7 -4      moniwiki/plugin/BlogCategories.php
  
  Index: BlogCategories.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogCategories.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- BlogCategories.php	17 Aug 2004 04:07:11 -0000	1.4
  +++ BlogCategories.php	17 Aug 2004 10:49:18 -0000	1.5
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogCategory macro plugin for the MoniWiki
   //
  -// $Id: BlogCategories.php,v 1.4 2004/08/17 04:07:11 wkpark Exp $
  +// $Id: BlogCategories.php,v 1.5 2004/08/17 10:49:18 wkpark Exp $
   
   function macro_BlogCategories($formatter,$value='') {
     global $DBInfo;
  @@ -24,13 +24,16 @@
     $link=$formatter->link_url($formatter->page->name,'?action=blogchanges&amp;category=CATEGORY');
     foreach ($temp as $line) {
       #$line=str_replace('/','_2f',$line);
  -    if (preg_match('/^(\s{1'.$depth.'})\* ([^ ]+)(?=\s|$)/',$line,$match)) {
  -      $lnk=str_replace('CATEGORY',$match[2],$link);
  +    if (preg_match('/^(\s{1'.$depth.'})\* ([^:]+)(?=\s|:|$)/',$line,$match)) {
  +      $text=rtrim($match[2]);
  +      $category=str_replace(array('[',']','"','\''),'',$text);
  +      $category=_rawurlencode($category);
  +      $lnk=str_replace('CATEGORY',$category,$link);
         if (!$no_rss)
           $rss='&nbsp;<a href="'.str_replace('blogchanges','blogrss',$lnk).'">'.
             '<img src="'.$DBInfo->imgs_dir.'/tiny-xml.gif'.'" border="0" /></a>';
         $dep=str_replace(' ','&nbsp;&nbsp;',$match[1]);
  -      $out.="$dep<a href='$lnk'>$match[2]/</a>$rss<br/>";
  +      $out.="$dep<a href='$lnk'>$text/</a>$rss<br/>";
       }
     }
   
  
  
  


wkpark      04/08/17 20:13:27

  Modified:    plugin   download.php
  Log:
  check 'do_uploadedfiles' and load if it needed to be used
  
  Revision  Changes    Path
  1.9       +3 -1      moniwiki/plugin/download.php
  
  Index: download.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/download.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- download.php	19 Dec 2003 13:50:47 -0000	1.8
  +++ download.php	17 Aug 2004 11:13:27 -0000	1.9
  @@ -3,12 +3,14 @@
   // All rights reserved. Distributable under GPL see COPYING
   // download action plugin for the MoniWiki
   //
  -// $Id: download.php,v 1.8 2003/12/19 13:50:47 wkpark Exp $
  +// $Id: download.php,v 1.9 2004/08/17 11:13:27 wkpark Exp $
   //
   function do_download($formatter,$options) {
     global $DBInfo;
   
     if (!$options['value']) {
  +    if (!function_exists('do_uploadedfiles'))
  +      include_once dirname(__FILE__).'/UploadedFiles.php';
       do_uploadedfiles($formatter,$options);
       return; 
     }
  
  
  


wkpark      04/08/17 20:28:19

  Modified:    plugin   Comment.php
  Log:
  add the css ID as '#commentForm'
  
  Revision  Changes    Path
  1.5       +2 -2      moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Comment.php	17 Aug 2004 04:06:43 -0000	1.4
  +++ Comment.php	17 Aug 2004 11:28:19 -0000	1.5
  @@ -6,7 +6,7 @@
   // Usage: [[Comment]], ?action=comment
   //
   //
  -// $Id: Comment.php,v 1.4 2004/08/17 04:06:43 wkpark Exp $
  +// $Id: Comment.php,v 1.5 2004/08/17 11:28:19 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $HTTP_USER_AGENT;
  @@ -54,7 +54,7 @@
   </form>
   FORM2;
   
  -  return $form;
  +  return '<div id="commentForm">'.$form.'</div>';
   }
   
   function do_comment($formatter,$options=array()) {
  
  
  


wkpark      04/08/18 01:00:15

  Modified:    plugin   Blog.php
  Log:
  remove pageToKeyname() dependent thing
  
  Revision  Changes    Path
  1.21      +4 -5      moniwiki/plugin/Blog.php
  
  Index: Blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Blog.php,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- Blog.php	16 Aug 2004 11:40:57 -0000	1.20
  +++ Blog.php	17 Aug 2004 16:00:15 -0000	1.21
  @@ -5,14 +5,14 @@
   //
   // Usage: ?action=Blog
   //
  -// $Id: Blog.php,v 1.20 2004/08/16 11:40:57 wkpark Exp $
  +// $Id: Blog.php,v 1.21 2004/08/17 16:00:15 wkpark Exp $
   
   function updateBlogList($formatter) {
     global $DBInfo;
     $cache=new Cache_text("blog");
     $changecache=new Cache_text("blogchanges");
   
  -  $rule="/^(\d*)".'_2e'.$DBInfo->pageToKeyname($formatter->page->name).'$/';
  +  $rule="/^(\d*)".$DBInfo->pageToKeyname('.'.$formatter->page->name).'$/';
   
     $handle = @opendir($DBInfo->cache_dir."/blogchanges");
     if ($handle) {
  @@ -60,7 +60,8 @@
       }
     }
     $log=join("\n",$entries)."\n";
  -  $changecache->update($datestamp.'.'.$formatter->page->name,$log);
  +  if ($datestamp)
  +    $changecache->update($datestamp.'.'.$formatter->page->name,$log);
   
     $logs.=$log;
     $cache->update($formatter->page->name,$logs);
  @@ -242,7 +243,6 @@
   <input type="hidden" name="action" value="Blog" />
   <input type="hidden" name="datestamp" value="$datestamp" />
   <input type="submit" value="Save" />&nbsp;
  -<input type="reset" value="Reset" />&nbsp;
   <input type="submit" name="button_preview" value="Preview" />
   $extra
   </form>
  @@ -284,7 +284,6 @@
   <input type="hidden" name="action" value="Blog" />
   <input type="hidden" name="datestamp" value="$datestamp" />
   <input type="submit" value="Save" />&nbsp;
  -<input type="reset" value="Reset" />&nbsp;
   <input type="submit" name="button_preview" value="Preview" />
   </form>
   FORM2;
  
  
  


wkpark      04/08/18 12:48:05

  Modified:    data     intermap.txt
  Log:
  add BSDKorea, remove WIM
  
  Revision  Changes    Path
  1.4       +3 -3      moniwiki/data/intermap.txt
  
  Index: intermap.txt
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/data/intermap.txt,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- intermap.txt	6 Jan 2004 23:41:41 -0000	1.3
  +++ intermap.txt	18 Aug 2004 03:48:03 -0000	1.4
  @@ -1,4 +1,4 @@
  -# $Id: intermap.txt,v 1.3 2004/01/06 23:41:41 wkpark Exp $
  +# $Id: intermap.txt,v 1.4 2004/08/18 03:48:03 wkpark Exp $
   # see http://usemod.com/intermap.txt 
   ISBN http://www.amazon.com/exec/obidos/ISBN=
   Wiki http://c2.com/cgi/wiki?
  @@ -27,15 +27,15 @@
   # Korean Wikis
   NoSmoke http://no-smok.net/nsmk/
   GnomeKorea http://www.gnome.or.kr/wiki/
  -KLE http://kle.kldp.org/main.php/
  +KLE http://kle.kldp.org/main/
   GentooKorea http://gentoo.or.kr/wiki/moin.cgi/
   DebianKorea http://debianusers.org/DebianWiki/
  +BSDKorea http://wiki.bsdforum.or.kr/wiki.php/
   Freefeel http://freefeel.org/wiki/
   SFReaders http://www.sfreaders.org/moin.cgi/
   Jangnan http://www.jangnan.org/wiki/moin.cgi/
   Xper http://xper.org/wiki/xp/
   PyKug http://www.python.or.kr/pykug/
  -WIM http://linux.mizi.com/wim/
   KTUG http://faq.ktug.or.kr/mywiki/
   MoniWiki http://moniwiki.sf.net/wiki.php/
   KLDPWiki http://wiki.kldp.org/wiki/
  
  
  


wkpark      04/08/18 12:51:11

  Added:       imgs     bsdkorea-16.png
  Removed:     imgs     wim-16.png
  Log:
  Feature request #300459 applied
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/bsdkorea-16.png
  
  	<<Binary file>>
  
  


wkpark      04/08/19 01:31:01

  Modified:    plugin   BlogChanges.php
  Log:
  fixup to set proper $limit value.
  
  Revision  Changes    Path
  1.23      +11 -5     moniwiki/plugin/BlogChanges.php
  
  Index: BlogChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogChanges.php,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- BlogChanges.php	17 Aug 2004 10:47:05 -0000	1.22
  +++ BlogChanges.php	18 Aug 2004 16:31:00 -0000	1.23
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogChanges action plugin for the MoniWiki
   //
  -// $Id: BlogChanges.php,v 1.22 2004/08/17 10:47:05 wkpark Exp $
  +// $Id: BlogChanges.php,v 1.23 2004/08/18 16:31:00 wkpark Exp $
   
   class Blog_cache {
     function get_all_blogs() {
  @@ -99,9 +99,12 @@
       if (!$date)
         $date=Blog_cache::get_daterule();
   
  -    $pages=array_map('_preg_search_escape',$pages);
  -    if ($pages) $pagerule=implode('|',$pages);
  -    else $pagerule='.*';
  +    if (!$pages) {
  +      $pagerule='.*';
  +    } else {
  +      $pages=array_map('_preg_search_escape',$pages);
  +      $pagerule=implode('|',$pages);
  +    }
       $rule="/^($date\d*)\.($pagerule)$/";
   
       while ($file = readdir($handle)) {
  @@ -244,7 +247,9 @@
       $opts['all']=1;
   
     foreach ($opts as $opt)
  -    if ($limit= intval($opt)) break;
  +    if (($temp= intval($opt)) > 1) break;
  +  $limit = ($temp > 1) ? $temp:0;
  + 
     if (!$limit) {
       if ($date) $limit=30;
       else $limit=10;
  @@ -261,6 +266,7 @@
   #    // no blog entries found
   #    return _("No entries found");
   #  }
  +#  print_r($blogs);
   
     if (in_array('summary',$opts))
       $logs=Blog_cache::get_summary($blogs,$options);
  
  
  


wkpark      04/08/19 01:32:07

  Modified:    plugin   chmod.php
  Log:
  fix to call send_header() with $options
  
  Revision  Changes    Path
  1.4       +2 -2      moniwiki/plugin/chmod.php
  
  Index: chmod.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/chmod.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- chmod.php	27 Aug 2003 14:32:08 -0000	1.3
  +++ chmod.php	18 Aug 2004 16:32:07 -0000	1.4
  @@ -4,7 +4,7 @@
   // a chmod action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: chmod.php,v 1.3 2003/08/27 14:32:08 wkpark Exp $
  +// $Id: chmod.php,v 1.4 2004/08/18 16:32:07 wkpark Exp $
   function do_chmod($formatter,$options) {
     global $DBInfo;
     
  @@ -49,7 +49,7 @@
   <input type=hidden name='action' value='chmod' />
   </form>";
   #  $formatter->send_page();
  -  $formatter->send_footer();
  +  $formatter->send_footer('',$options);
   }
   
   ?>
  
  
  


wkpark      04/08/19 01:54:15

  Modified:    plugin   Blog.php
  Log:
  add a name input form
  
  Revision  Changes    Path
  1.22      +7 -3      moniwiki/plugin/Blog.php
  
  Index: Blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Blog.php,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- Blog.php	17 Aug 2004 16:00:15 -0000	1.21
  +++ Blog.php	18 Aug 2004 16:54:13 -0000	1.22
  @@ -5,7 +5,7 @@
   //
   // Usage: ?action=Blog
   //
  -// $Id: Blog.php,v 1.21 2004/08/17 16:00:15 wkpark Exp $
  +// $Id: Blog.php,v 1.22 2004/08/18 16:54:13 wkpark Exp $
   
   function updateBlogList($formatter) {
     global $DBInfo;
  @@ -115,7 +115,9 @@
       $lines=explode("\n",$raw_body);
       $count=count($lines);
   
  -    if ($options['id']=='Anonymous') $id=$_SERVER['REMOTE_ADDR'];
  +    if ($options['id']=='Anonymous')
  +      $id=$options['name'] ?
  +        stripslashes($options['name']):$_SERVER['REMOTE_ADDR'];
       else $id=$options['id'];
   
       if ($options['value']) {
  @@ -229,10 +231,12 @@
           <input type="submit" name="button_refresh" value="Refresh" /></div>';
   
       print "<form method='post' action='$url'>\n";
  +    if ($options['id'] == 'Anonymous')
  +      print '<b>'._("Name")."</b>: <input name='name' size='15' maxlength='15' value='$options[name]' />\n";
       if ($options['value'])
         print "<input type='hidden' name='value' value='$options[value]' />\n";
       else
  -      print "<b>Title</b>: <input name='title' value='$options[title]' size='70' maxlength='70' style='width:200' /><br />\n";
  +      print '<b>'._("Title")."</b>: <input name='title' value='$options[title]' size='70' maxlength='70' style='width:300px' /><br />\n";
       print <<<FORM
   <textarea class="wiki" id="content" wrap="virtual" name="savetext"
    rows="$rows" cols="$cols" class="wiki">$savetext</textarea><br />
  
  
  


wkpark      04/08/19 02:23:01

  Modified:    plugin   BlogChanges.php
  Log:
  check the category argument and show warning
  accept '*Blog' as a valid name
  
  Revision  Changes    Path
  1.24      +11 -1     moniwiki/plugin/BlogChanges.php
  
  Index: BlogChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogChanges.php,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- BlogChanges.php	18 Aug 2004 16:31:00 -0000	1.23
  +++ BlogChanges.php	18 Aug 2004 17:23:01 -0000	1.24
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogChanges action plugin for the MoniWiki
   //
  -// $Id: BlogChanges.php,v 1.23 2004/08/18 16:31:00 wkpark Exp $
  +// $Id: BlogChanges.php,v 1.24 2004/08/18 17:23:01 wkpark Exp $
   
   class Blog_cache {
     function get_all_blogs() {
  @@ -227,7 +227,17 @@
   
     $match[1]=$match[1] ? $match[1]:$match[2];
     $options['category']=$options['category'] ? $options['category']:$match[1];
  +
  +
     if ($options['category']) {
  +    $options['category']=
  +      preg_replace('/(?<!\.|\)|\])\*/','.*',$options['category']);
  +    
  +    $test=@preg_match("/$options[category]/",'');
  +    if ($test === false) {
  +      return '[[BlogChanges('.
  +        sprintf(_("Invalid category expr \"%s\""),$options['category']).')]]';
  +    }
       if ($DBInfo->blog_category) {
         $categories=Blog_cache::get_categories();
         if ($categories[$options['category']])
  
  
  


wkpark      04/08/19 02:46:26

  Modified:    plugin   BlogChanges.php
  Log:
  oops! fix last changes
  
  Revision  Changes    Path
  1.25      +2 -2      moniwiki/plugin/BlogChanges.php
  
  Index: BlogChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogChanges.php,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- BlogChanges.php	18 Aug 2004 17:23:01 -0000	1.24
  +++ BlogChanges.php	18 Aug 2004 17:46:24 -0000	1.25
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogChanges action plugin for the MoniWiki
   //
  -// $Id: BlogChanges.php,v 1.24 2004/08/18 17:23:01 wkpark Exp $
  +// $Id: BlogChanges.php,v 1.25 2004/08/18 17:46:24 wkpark Exp $
   
   class Blog_cache {
     function get_all_blogs() {
  @@ -233,7 +233,7 @@
       $options['category']=
         preg_replace('/(?<!\.|\)|\])\*/','.*',$options['category']);
       
  -    $test=@preg_match("/$options[category]/",'');
  +    $test=@preg_match("/".str_replace('/','\/',$options['category'])."/",'');
       if ($test === false) {
         return '[[BlogChanges('.
           sprintf(_("Invalid category expr \"%s\""),$options['category']).')]]';
  
  
  


wkpark      04/08/19 02:49:28

  Modified:    plugin   Comment.php
  Log:
  fix last changes
  
  Revision  Changes    Path
  1.6       +7 -5      moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Comment.php	17 Aug 2004 11:28:19 -0000	1.5
  +++ Comment.php	18 Aug 2004 17:49:28 -0000	1.6
  @@ -6,7 +6,7 @@
   // Usage: [[Comment]], ?action=comment
   //
   //
  -// $Id: Comment.php,v 1.5 2004/08/17 11:28:19 wkpark Exp $
  +// $Id: Comment.php,v 1.6 2004/08/18 17:49:28 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $HTTP_USER_AGENT;
  @@ -42,15 +42,17 @@
    rows="$rows" cols="$cols" class="wiki">$savetext</textarea><br />
   FORM;
     if ($options['id'] == 'Anonymous')
  -    $sig=_("Name").": <input name='name' /><br />";
  +    $sig=_("Name").": <input name='name' value='$options[name]' />";
     else 
  -    $sig="<input name='nosig' type='checkbox' />"._("Don't add a signature")."<br />";
  +    $sig="<input name='nosig' type='checkbox' />"._("Don't add a signature");
  +  $comment=_("Comment");
  +  $preview=_("Preview");
     $form.= <<<FORM2
   $sig
   <input type="hidden" name="action" value="comment" />
   <input type="hidden" name="datestamp" value="$datestamp" />
  -<input type="submit" value="Comment" />&nbsp;
  -<input type="submit" name="button_preview" value="Preview" />
  +<input type="submit" value="$comment" />&nbsp;
  +<input type="submit" name="button_preview" value="$preview" />
   </form>
   FORM2;
   
  
  
  


wkpark      04/08/19 02:56:59

  Modified:    .        wiki.php
  Log:
  add pmWiki style table feature (alignment)
  add MoinMoin style extended table attribute feature (<width='100%'>...)
  add new syntax [^http://blahblah.com FooBar] according to MoinMoin 1.2.x
  
  Revision  Changes    Path
  1.147     +35 -13    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.146
  retrieving revision 1.147
  diff -u -r1.146 -r1.147
  --- wiki.php	16 Aug 2004 16:42:03 -0000	1.146
  +++ wiki.php	18 Aug 2004 17:56:59 -0000	1.147
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.146 2004/08/16 16:42:03 wkpark Exp $
  +// $Id: wiki.php,v 1.147 2004/08/18 17:56:59 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.146 $',1,-1);
  +$_revision = substr('$Revision: 1.147 $',1,-1);
   $_release = '1.0.8';
   
   #ob_start("ob_gzhandler");
  @@ -540,6 +540,7 @@
       $this->icon['main']="<img src='$imgdir/$iconset-main.gif' alt='^' align='middle' border='0' />";
       $this->icon['print']="<img src='$imgdir/$iconset-print.gif' alt='P' align='middle' border='0' />";
       $this->icon['attach']="<img src='$imgdir/$iconset-attach.gif' alt='@' align='middle' border='0' />";
  +    $this->icon['popup']="<img src='$imgdir/$iconset-popup.gif' alt='[]' align='middle' border='0' />";
       $this->icon_sep=" ";
       $this->icon_bra=" ";
       $this->icon_cat=" ";
  @@ -1237,7 +1238,7 @@
       #(?P<word>(?:/?[A-Z]([a-z0-9]+|[A-Z]*(?=[A-Z][a-z0-9]|\b))){2,})
       $this->wordrule=
       # single bracketed rule [http://blah.blah.com Blah Blah]
  -    "(\[($url):[^\s\]]+(\s[^\]]+)?\])|".
  +    "(\[\^?($url):[^\s\]]+(\s[^\]]+)?\])|".
       # InterWiki
       # strict but slow
       #"\b(".$DBInfo->interwikirule."):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
  @@ -1451,7 +1452,12 @@
             return $this->interwiki_repl($dum[0],$dum[1]);
           }
           return $this->interwiki_repl($url);
  -      } else
  +      }
  +      if ($url[0] == '^') {
  +        $attr.=' target="_blank" ';
  +        $url=substr($url,1);
  +        $externalicon=$this->icon['popup'];
  +      }
         if ($force or strpos($url," ")) { # have a space ?
           list($url,$text)=explode(" ",$url,2);
           $link=str_replace('&','&amp;',$url);
  @@ -1464,7 +1470,7 @@
             $external=$this->ex_bra.$url.$this->ex_ket;
           }
           list($icon,$dummy)=explode(":",$url,2);
  -        return "<img align='middle' alt='[$icon]' src='".$this->imgs_dir."/$icon.png' />". "<a class='externalLink' $attr $this->ex_target href='$link'>$text</a>".$external;
  +        return "<img align='middle' alt='[$icon]' src='".$this->imgs_dir."/$icon.png' />". "<a class='externalLink' $attr $this->ex_target href='$link'>$text</a>".$externalicon;
         } # have no space
         $link=str_replace('&','&amp;',$url);
         if (preg_match("/^(http|https|ftp)/",$url)) {
  @@ -1872,7 +1878,7 @@
       return '';
     }
   
  -  function _table_span($str) {
  +  function _table_span($str,$align='') {
       $tok=strtok($str,'&');
       $len=strlen($tok)/2;
       $extra=strtok('');
  @@ -1885,12 +1891,16 @@
         else if ($para[0]=='#')
           $attr="bgcolor='$para' ";
       }
  +    if ($align) $attr.="align='center' ";
       if ($len > 1)
         $attr.=" align='center' colspan='$len'";
       return $attr;
     }
   
     function _table($on,$attr="") {
  +    if ($attr) {
  +      $attr=substr($attr,4,-1);
  +    }
       if ($on)
         return "<table class='wiki' cellpadding='3' cellspacing='2' $attr>\n";
       return "</table>\n";
  @@ -2124,8 +2134,9 @@
         }
   
         #if (!$in_pre && !$in_table && preg_match("/^\|\|.*\|\|$/",$line)) {
  -      if (!$in_pre && $line[0]=='|' && !$in_table && preg_match("/^\|\|.*\|\|$/",$line)) {
  -         $open.=$this->_table(1);
  +      if (!$in_pre && $line[0]=='|' && !$in_table && preg_match("/^((\|\|)+)(&lt;[^>]+>)?.*\|\|$/",$line,$match)) {
  +         $open.=$this->_table(1,$match[3]);
  +         $line=preg_replace('/^((\|\|)+)(&lt;[^>]+>)?/','\\1',$line);
            $in_table=1;
         #} elseif ($in_table && !preg_match("/^\|\|.*\|\|$/",$line)){
         } elseif ($in_table && $line[0]!='|' && !preg_match("/^\|\|.*\|\|$/",$line)){
  @@ -2133,8 +2144,8 @@
            $in_table=0;
         }
         if ($in_table) {
  -         $line=preg_replace('/^((?:\|\|)+(&lt;[^>]+>)?)(.*)\|\|$/e',"'<tr class=\"wiki\"><td class=\"wiki\"'.\$this->_table_span('\\1').'>\\3</td></tr>'",$line);
  -         $line=preg_replace('/((\|\|)+(&lt;[^>]+>)?)/e',"'</td><td class=\"wiki\"'.\$this->_table_span('\\1').'>'",$line);
  +         $line=preg_replace('/^((?:\|\|)+(&lt;[^>]+>)?)(\s?)(.*)\|\|$/e',"'<tr class=\"wiki\"><td class=\"wiki\"'.\$this->_table_span('\\1','\\3').'>\\4</td></tr>'",$line);
  +         $line=preg_replace('/((\|\|)+(&lt;[^>]+>)?)(\s?)/e',"'</td><td class=\"wiki\"'.\$this->_table_span('\\1','\\4').'>'",$line);
            $line=str_replace('\"','"',$line); # revert \\" to \"
         }
   
  @@ -3203,11 +3214,22 @@
   #      print $out;
   #      $cache->update($pagename,$out);
   #    }
  -    if ($DBInfo->comment_macro)
  -      print $formatter->macro_repl($DBInfo->comment_macro);
  -    
       $options['timer']->Check("send_page");
       $formatter->write("</div>\n");
  +
  +    if ($DBInfo->extra_macros) {
  +      if (!is_array($DBInfo->extra_macros)) {
  +        print '<div id="wikiExtra">'."\n";
  +        print $formatter->macro_repl($DBInfo->extra_macros);
  +        print '</div>'."\n";
  +      } else {
  +        print '<div id="wikiExtra">'."\n";
  +        foreach ($DBInfo->extra_macros as $macro)
  +          print $formatter->macro_repl($macro);
  +        print '</div>'."\n";
  +      }
  +    }
  +    
       $args['editable']=1;
       $formatter->send_footer($args,$options);
       return;
  
  
  


pyrasis     04/08/19 15:47:37

  Modified:    locale/po ko.po
  Log:
  added BlogChanges Macro Message "".
  
  Revision  Changes    Path
  1.9       +258 -139  moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- ko.po	7 Jan 2004 02:44:46 -0000	1.8
  +++ ko.po	19 Aug 2004 06:47:37 -0000	1.9
  @@ -5,7 +5,7 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: MoniWiki 1.0\n"
  -"POT-Creation-Date: 2004-01-07 11:48+0900\n"
  +"POT-Creation-Date: 2004-08-20 00:45+0900\n"
   "PO-Revision-Date: 2003-04-29 19:00+0900\n"
   "Last-Translator: Won-kyu Park <wkpark@kldp.org>\n"
   "Language-Team: ko <ko@li.org>\n"
  @@ -13,71 +13,143 @@
   "Content-Type: text/plain; charset=EUC-KR\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  -#: ../plugin/Attachment.php:32
  +#: ../plugin/Attachment.php:52
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr ""
   
  -#: ../plugin/Attachment.php:36
  +#: ../plugin/Attachment.php:56
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
   
  -#: ../plugin/BabelFish.php:14
  +#: ../plugin/BabelFish.php:16
   msgid "BabelFish Translation"
   msgstr ""
   
  -#: ../plugin/BabelFish.php:27
  +#: ../plugin/BabelFish.php:29
   #, c-format
   msgid "Translate %s to %s"
   msgstr "%s %s() ϱ"
   
  -#: ../plugin/Blog.php:80
  +#: ../plugin/Blog.php:86
  +#, c-format
  +msgid "Blog cache of \"%s\" is refreshed"
  +msgstr ""
  +
  +#: ../plugin/Blog.php:109
   #, c-format
   msgid "\"%s\" is updated"
   msgstr "\"%s\"() ŵǾϴ"
   
  -#: ../plugin/Blog.php:85
  +#: ../plugin/Blog.php:114
   msgid "Add Blog"
   msgstr ""
   
  -#: ../plugin/Blog.php:139
  +#: ../plugin/Blog.php:154
  +msgid "Error: No blog entry found!"
  +msgstr ""
  +
  +#: ../plugin/Blog.php:162 ../plugin/Comment.php:108
  +msgid "Error: Don't make a clone!"
  +msgstr ""
  +
  +#: ../plugin/Blog.php:179
   #, c-format
   msgid "Comment added to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:142
  +#: ../plugin/Blog.php:182
   #, c-format
   msgid "Blog entry added to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:178
  +#: ../plugin/Blog.php:219
   #, c-format
   msgid "Add Comment to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:180
  +#: ../plugin/Blog.php:221
   #, c-format
   msgid "Add Blog entry to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:199
  +#: ../plugin/Blog.php:235 ../plugin/Comment.php:45
  +msgid "Name"
  +msgstr ""
  +
  +#: ../plugin/Blog.php:239
  +#, fuzzy
  +msgid "Title"
  +msgstr ""
  +
  +#: ../plugin/Blog.php:245 ../plugin/Comment.php:47
   msgid "Don't add a signature"
   msgstr ""
   
  -#: ../plugin/Blog.php:212
  +#: ../plugin/Blog.php:258
   msgid "<b>horizontal rule</b> ---- does not applied on the blog mode."
   msgstr "<b>μ</b> ---- α   ʽϴ."
   
  -#: ../plugin/BlogChanges.php:261
  +#: ../plugin/BlogChanges.php:194
  +msgid "Category: "
  +msgstr ""
  +
  +#: ../locale/dummy.php:7 ../plugin/BlogChanges.php:196
  +msgid "BlogChanges"
  +msgstr "ٲ α"
  +
  +#: ../plugin/BlogChanges.php:239
  +#, c-format
  +msgid "Invalid category expr \"%s\""
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:346 ../plugin/BlogChanges.php:348
  +#: ../plugin/processor/blog.php:43 ../plugin/processor/blog.php:45
  +msgid "Anonymous"
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:389
   msgid "Previous"
   msgstr ""
   
  +#: ../plugin/BlogChanges.php:392
  +msgid "Next"
  +msgstr ""
  +
  +#: ../plugin/Comment.php:48
  +#, fuzzy
  +msgid "Comment"
  +msgstr " ޱ"
  +
  +#: ../plugin/Comment.php:49 ../wikilib.php:497
  +msgid "Preview"
  +msgstr "̸"
  +
  +#: ../plugin/Comment.php:89
  +#, fuzzy
  +msgid "Preview comment"
  +msgstr "%s ̸"
  +
  +#: ../plugin/Comment.php:97 ../plugin/processor/blog.php:76
  +msgid "Add comment"
  +msgstr " ޱ"
  +
  +#: ../plugin/Comment.php:131
  +#, fuzzy, c-format
  +msgid "%s is commented successfully"
  +msgstr "̸ ּ Ȯ ϷǾϴ"
  +
  +#: ../plugin/Comment.php:132
  +#, fuzzy
  +msgid "Comment added successfully"
  +msgstr "   Ǿϴ !"
  +
   #: ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
   msgid "Draw new picture"
   msgstr ""
   
  -#: ../plugin/Draw.php:49 ../plugin/UploadFile.php:81
  +#: ../plugin/Draw.php:49 ../plugin/UploadFile.php:109
   #, c-format
   msgid "Fail to copy \"%s\" to \"%s\""
   msgstr ""
  @@ -127,11 +199,38 @@
   msgid "BackLinks search for \"%s\""
   msgstr "\"%s\"  ũ ã"
   
  -#: ../plugin/FullSearch.php:71 ../wikilib.php:1503
  +#: ../plugin/FullSearch.php:71 ../wikilib.php:1531
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr ""
   
  +#: ../plugin/Gallery.php:220
  +#, fuzzy
  +msgid "add comment"
  +msgstr " ޱ"
  +
  +#: ../plugin/Gallery.php:229
  +#, fuzzy
  +msgid "show comments"
  +msgstr " ޱ"
  +
  +#: ../plugin/Gallery.php:270 ../plugin/Gallery.php:273 ../wikilib.php:804
  +#, c-format
  +msgid "Go back or return to %s"
  +msgstr "ڷ Ȥ %s() "
  +
  +#: ../plugin/Gallery.php:271
  +msgid "Comments are edited"
  +msgstr ""
  +
  +#: ../plugin/Gallery.php:274
  +msgid "Comments is added"
  +msgstr ""
  +
  +#: ../plugin/ImportUrl.php:48
  +msgid "Import URL"
  +msgstr ""
  +
   #: ../plugin/LikePages.php:109
   msgid "These pages share a similar word..."
   msgstr ""
  @@ -169,7 +268,7 @@
   msgid "Edit Image"
   msgstr "׸ ġ"
   
  -#: ../plugin/RecentChanges.php:146
  +#: ../plugin/RecentChanges.php:155
   msgid "set bookmark"
   msgstr "ϸũ"
   
  @@ -182,7 +281,7 @@
   msgid "TwinPages of %s"
   msgstr "%s ֵ "
   
  -#: ../plugin/TwinPages.php:18 ../wiki.php:1868 ../wiki.php:3041
  +#: ../plugin/TwinPages.php:18 ../wiki.php:1963 ../wiki.php:3155
   msgid "See TwinPages: "
   msgstr ""
   
  @@ -190,20 +289,30 @@
   msgid "No TwinPages found."
   msgstr "ֵ  ϴ"
   
  -#: ../plugin/UploadFile.php:92
  +#: ../plugin/UploadFile.php:73
  +#, c-format
  +msgid "%s does not allowed to upload"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:115
   #, c-format
   msgid "File \"%s\" is uploaded successfully"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:106
  +#: ../plugin/UploadFile.php:134
  +#, fuzzy
  +msgid "Files are uploaded successfully"
  +msgstr "   Ǿϴ !"
  +
  +#: ../plugin/UploadFile.php:168
   msgid ": Rename"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:106 ../plugin/rename.php:36
  +#: ../plugin/UploadedFiles.php:119 ../plugin/rename.php:69
   msgid "Password"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:107 ../wikilib.php:568
  +#: ../plugin/UploadedFiles.php:120 ../wikilib.php:569
   msgid "Delete selected files"
   msgstr ""
   
  @@ -229,6 +338,10 @@
   msgid "Voted successfully"
   msgstr ""
   
  +#: ../plugin/WordIndex.php:65 ../wikilib.php:1359
  +msgid "Others"
  +msgstr ""
  +
   #: ../plugin/backup.php:46
   msgid "Did you want to Backup your wiki ?"
   msgstr ""
  @@ -264,19 +377,15 @@
   msgid "Password:"
   msgstr ""
   
  -#: ../plugin/login.php:26 ../wikilib.php:1071
  -msgid "Login"
  -msgstr ""
  -
  -#: ../plugin/login.php:27
  +#: ../plugin/login.php:26
   msgid "Join"
   msgstr ""
   
  -#: ../plugin/login.php:41 ../plugin/minilogin.php:29
  +#: ../plugin/login.php:42 ../plugin/minilogin.php:29
   msgid "Logout"
   msgstr ""
   
  -#: ../plugin/login.php:42 ../plugin/minilogin.php:28 ../locale/dummy.php:3
  +#: ../locale/dummy.php:3 ../plugin/login.php:43 ../plugin/minilogin.php:28
   msgid "UserPreferences"
   msgstr "ȯ漳"
   
  @@ -288,7 +397,7 @@
   msgid "No manpage found"
   msgstr "Manpage ϴ"
   
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1096
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1111
   msgid "Login or Join"
   msgstr ""
   
  @@ -305,25 +414,17 @@
   msgid "Enter a page name"
   msgstr " ̸ "
   
  -#: ../plugin/processor/blog.php:43 ../plugin/processor/blog.php:45
  -msgid "Anonymous"
  -msgstr ""
  -
  -#: ../plugin/processor/blog.php:70
  -msgid "Add comment"
  -msgstr " ޱ"
  -
  -#: ../plugin/processor/blog.php:78
  +#: ../plugin/processor/blog.php:84
   #, c-format
   msgid "%d comment"
   msgstr ""
   
  -#: ../plugin/processor/blog.php:78
  +#: ../plugin/processor/blog.php:84
   #, c-format
   msgid "%d comments"
   msgstr ""
   
  -#: ../plugin/processor/blog.php:89
  +#: ../plugin/processor/blog.php:95
   msgid "track back"
   msgstr "Ʈ"
   
  @@ -377,39 +478,66 @@
   msgid "RCS purge \"%s\""
   msgstr ""
   
  -#: ../plugin/rdf_blog.php:31 ../plugin/rss_blog.php:31
  +#: ../plugin/rdf_blog.php:31 ../plugin/rss_blog.php:26
   msgid "Blog Changes"
   msgstr "ٲ α"
   
   # c-format
  -#: ../plugin/rdf_blog.php:45 ../plugin/rss_blog.php:95
  +#: ../plugin/rdf_blog.php:45 ../plugin/rss_blog.php:104
   #, c-format
   msgid "BlogChanges at %s"
   msgstr ""
   
  -#: ../plugin/rename.php:14
  +#: ../plugin/rename.php:13
   #, c-format
   msgid "\"%s\" is renamed !"
   msgstr "%s() ̸ ٲϴ !"
   
  -#: ../plugin/rename.php:20
  +#: ../plugin/rename.php:29
  +#, fuzzy, c-format
  +msgid "'%s' is changed"
  +msgstr "%s() Ǿϴ"
  +
  +#: ../plugin/rename.php:37
  +#, fuzzy, c-format
  +msgid "'%s' is renamed as '%s' successfully"
  +msgstr "   Ǿϴ !"
  +
  +#: ../plugin/rename.php:45
   #, c-format
   msgid "Fail to rename \"%s\" !"
   msgstr ""
   
  -#: ../plugin/rename.php:27
  +#: ../plugin/rename.php:52
   #, c-format
   msgid "Rename \"%s\" ?"
   msgstr "\"%s\" ̸ ٲܱ ?"
   
  -#: ../plugin/rename.php:37
  +#: ../plugin/rename.php:61
  +#, fuzzy
  +msgid "Rename"
  +msgstr "\"%s\" ̸ ٲܱ ?"
  +
  +#: ../plugin/rename.php:66
  +msgid "Rename and fix Backlinks"
  +msgstr ""
  +
  +#: ../plugin/rename.php:70
   msgid "Only WikiMaster can rename this page"
   msgstr ""
   
  -#: ../plugin/rename.php:39 ../wikilib.php:608
  +#: ../plugin/rename.php:71 ../wikilib.php:610
   msgid "with revision history"
   msgstr " 丮 Բ"
   
  +#: ../plugin/rename.php:72
  +msgid "show only"
  +msgstr ""
  +
  +#: ../plugin/rename.php:74
  +msgid "Check backlinks"
  +msgstr ""
  +
   #: ../plugin/restore.php:23
   msgid "Error: Don't try to overwrite it"
   msgstr ""
  @@ -468,7 +596,7 @@
   msgid "Send TrackBack ping"
   msgstr ""
   
  -#: ../plugin/sendping.php:158
  +#: ../plugin/sendping.php:160
   msgid "Trackback sent"
   msgstr "Ʈ"
   
  @@ -481,8 +609,8 @@
   "If you wan't to subscribe this page please contact the WikiMaster to "
   "activate the e-mail notification"
   msgstr ""
  -"  Ͻ÷ WikiMaster ڸ Ȱȭ Ű "
  -"ϼ"
  +"  Ͻ÷ WikiMaster ڸ Ȱȭ Ű "
  +"ϼ"
   
   #: ../plugin/subscribe.php:22
   msgid "Please enter your email address first."
  @@ -493,8 +621,8 @@
   "If you want to subscribe this page, just make your ID and register your "
   "email address in the UserPreferences."
   msgstr ""
  -"  Ͻ÷, ID ϰ ڸ ּҸ UserPreferences "
  -"ϼ"
  +"  Ͻ÷, ID ϰ ڸ ּҸ UserPreferences "
  +"ϼ"
   
   #: ../plugin/subscribe.php:46
   msgid "Subscribe lists updated."
  @@ -505,11 +633,11 @@
   msgid "Do you want to subscribe \"%s\" ?"
   msgstr "\"%s\"() Ͻðڽϱ ?"
   
  -#: ../plugin/theme.php:24
  +#: ../plugin/theme.php:23
   msgid "Theme cleared. Goto UserPreferences."
   msgstr "׸ . UserPreferences "
   
  -#: ../plugin/theme.php:64
  +#: ../plugin/theme.php:63
   msgid "Please select a theme properly."
   msgstr "׸  ּ"
   
  @@ -571,7 +699,7 @@
   
   #: ../plugin/userform.php:62
   #, c-format
  -msgid "\"%s\" is not exists on this wiki !"
  +msgid "\"%s\" does not exists on this wiki !"
   msgstr ""
   
   #: ../plugin/userform.php:64
  @@ -652,98 +780,102 @@
   msgid "Whois search result for %s"
   msgstr "%s  Whois ġ "
   
  -#: ../wiki.php:861
  +#: ../wiki.php:894
   #, c-format
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1864
  +#: ../wiki.php:1073
  +msgid "File does not exists"
  +msgstr ""
  +
  +#: ../wiki.php:1959
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:1864
  +#: ../wiki.php:1959
   msgid "TwinPages"
   msgstr "TwinPages"
   
  -#: ../wiki.php:2160
  +#: ../wiki.php:2258
   msgid "Revision History"
   msgstr " 丮"
   
  -#: ../wiki.php:2261 ../wiki.php:2409
  +#: ../wiki.php:2359 ../wiki.php:2507
   msgid "No older revisions available"
   msgstr "  ϴ"
   
  -#: ../wiki.php:2388 ../wiki.php:2427 ../wikilib.php:790
  +#: ../wiki.php:2486 ../wiki.php:2524 ../wikilib.php:805
   msgid "No difference found"
   msgstr "ȭ ϴ"
   
  -#: ../wiki.php:2390
  +#: ../wiki.php:2488
   msgid "Difference between yours and the current"
   msgstr ""
   
  -#: ../wiki.php:2429
  +#: ../wiki.php:2526
   msgid "Difference between versions"
   msgstr ""
   
  -#: ../wiki.php:2431
  +#: ../wiki.php:2528
   #, c-format
   msgid "Difference between r%s and r%s"
   msgstr "r%s r%s "
   
  -#: ../wiki.php:2434
  +#: ../wiki.php:2531
   #, c-format
   msgid "Difference between r%s and the current"
   msgstr "r%s   "
   
  -#: ../wiki.php:2607 ../locale/dummy.php:6
  +#: ../locale/dummy.php:6 ../wiki.php:2717
   msgid "EditText"
   msgstr "ġ"
   
  -#: ../wiki.php:2609
  +#: ../wiki.php:2719
   msgid "NotEditable"
   msgstr "ĥ "
   
  -#: ../wiki.php:2611 ../locale/dummy.php:6
  +#: ../locale/dummy.php:6 ../wiki.php:2721
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:2612 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../locale/dummy.php:3 ../locale/dummy.php:5 ../wiki.php:2722
   msgid "FindPage"
   msgstr "ã"
   
  -#: ../wiki.php:3043 ../wiki.php:3046
  +#: ../wiki.php:3157 ../wiki.php:3160
   msgid "Create this page"
   msgstr " "
   
  -#: ../wiki.php:3048
  +#: ../wiki.php:3162
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
   
  -#: ../wiki.php:3048
  +#: ../wiki.php:3162
   msgid "title"
   msgstr ""
   
  -#: ../wiki.php:3054
  +#: ../wiki.php:3168
   msgid " or alternativly, use one of these templates:\n"
   msgstr " Ȥ Ʒ øƮ  ̿ϼ:\n"
   
  -#: ../wiki.php:3057 ../wikilib.php:435
  +#: ../wiki.php:3171 ../wikilib.php:436
   msgid "To create your own templates, add a page with a 'Template' suffix.\n"
   msgstr "øƮ ÷ Template ̸   弼.\n"
   
  -#: ../wiki.php:3114
  +#: ../wiki.php:3242
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr ""
   
  -#: ../wiki.php:3126
  +#: ../wiki.php:3254
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:3129
  +#: ../wiki.php:3257
   msgid "Please enter the valid password"
   msgstr "Ȯ йȣ ־ּ"
   
  @@ -763,8 +895,8 @@
   "<b>Tables</b>: || cell text |||| cell text spanning two columns ||;\n"
   "no trailing white space allowed after tables or titles.<br />\n"
   msgstr ""
  -"<b>:</b> ''<i></i>''; '''<b></b>'''; '''''<b><i> </"
  -"i></b>''''';\n"
  +"<b>:</b> ''<i></i>''; '''<b></b>'''; '''''<b><i> "
  +"</i></b>''''';\n"
   "''<i>￩ '''<b> </b>''' </i>''; ---- μ.<br />\n"
   "<b>:</b> =  1 =; ==  2 ==; ===  3 ===;\n"
   "====  4 ====; =====  5 =====.<br />\n"
  @@ -776,202 +908,193 @@
   "<b>̺</b>: ||   |||| ĭ ģ  ||;<br />\n"
   "̺̳     ȵ˴ϴ.<br />\n"
   
  -#: ../wikilib.php:433
  +#: ../wikilib.php:434
   msgid "Use one of the following templates as an initial release :\n"
   msgstr "ó   øƮ Ȱϼ :\n"
   
  -#: ../wikilib.php:435
  -msgid "<br />\n"
  -msgstr ""
  -
  -#: ../wikilib.php:451
  +#: ../wikilib.php:452
   msgid "Skip to preview"
   msgstr "̸"
   
  -#: ../wikilib.php:453
  +#: ../wikilib.php:454
   msgid "ReduceEditor"
   msgstr "â ̱"
   
  -#: ../wikilib.php:456 ../locale/dummy.php:6
  +#: ../locale/dummy.php:6 ../wikilib.php:457
   msgid "InterWiki"
   msgstr "Ű"
   
  -#: ../wikilib.php:457
  +#: ../wikilib.php:458
   msgid "HelpOnEditing"
   msgstr "ġ "
   
  -#: ../wikilib.php:474
  +#: ../wikilib.php:475
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:490
  +#: ../wikilib.php:491
   msgid "--Select Category--"
   msgstr ""
   
  -#: ../wikilib.php:496
  -msgid "Preview"
  -msgstr "̸"
  -
  -#: ../wikilib.php:497 ../wikilib.php:1099
  +#: ../wikilib.php:498 ../wikilib.php:1114
   msgid "Save"
   msgstr ""
   
  -#: ../wikilib.php:498
  +#: ../wikilib.php:499
   msgid "Summary of Change"
   msgstr "ٲ "
   
  -#: ../wikilib.php:521
  +#: ../wikilib.php:522
   #, c-format
   msgid "Info. for %s"
   msgstr "%s "
   
  -#: ../wikilib.php:531
  +#: ../wikilib.php:532
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:533
  +#: ../wikilib.php:534
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s() ȿ ׼ ƴմϴ"
   
  -#: ../wikilib.php:535
  +#: ../wikilib.php:536
   msgid "Is it valid action ?"
   msgstr ""
   
  -#: ../wikilib.php:556
  +#: ../wikilib.php:557
   #, c-format
   msgid "File '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:558
  +#: ../wikilib.php:559
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr ""
   
  -#: ../wikilib.php:563
  +#: ../wikilib.php:564
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:565
  +#: ../wikilib.php:566
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr ""
   
  -#: ../wikilib.php:575 ../wikilib.php:577
  +#: ../wikilib.php:576 ../wikilib.php:578
   msgid "No files are selected !"
   msgstr " õ ʾҽϴ !"
   
  -#: ../wikilib.php:595
  +#: ../wikilib.php:597
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr ""
   
  -#: ../wikilib.php:601
  +#: ../wikilib.php:603
   msgid "Please delete this file manually."
   msgstr ""
   
  -#: ../wikilib.php:603
  +#: ../wikilib.php:605
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "\"%s\"()  ?"
   
  -#: ../wikilib.php:692 ../wikilib.php:1492
  +#: ../wikilib.php:706 ../wikilib.php:1520
   msgid "Use more specific text"
   msgstr "  ڼ Էϼ"
   
  -#: ../wikilib.php:754
  +#: ../wikilib.php:769
   msgid "Goto Editor"
   msgstr " "
   
  -#: ../wikilib.php:763
  +#: ../wikilib.php:778
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "%s() ġ  ٸ    ߽ϴ"
   
  -#: ../wikilib.php:768 ../wikilib.php:797
  +#: ../wikilib.php:783 ../wikilib.php:812
   #, c-format
   msgid "Preview of %s"
   msgstr "%s ̸"
   
  -#: ../wikilib.php:775
  +#: ../wikilib.php:790
   msgid "Conflict error!"
   msgstr "浹!"
   
  -#: ../wikilib.php:789
  -#, c-format
  -msgid "Go back or return to %s"
  -msgstr "ڷ Ȥ %s() "
  -
  -#: ../wikilib.php:823
  +#: ../wikilib.php:838
   msgid "mail does not supported by default."
   msgstr ""
   
  -#: ../wikilib.php:827
  +#: ../wikilib.php:842
   msgid "Sent notification mail."
   msgstr ""
   
  -#: ../wikilib.php:829
  +#: ../wikilib.php:844
   msgid "No subscribers found."
   msgstr "ڰ ϴ"
   
  -#: ../wikilib.php:834
  +#: ../wikilib.php:849
   #, c-format
   msgid "%s is not editable"
   msgstr "%s()   ϴ"
   
  -#: ../wikilib.php:836
  +#: ../wikilib.php:851
   #, c-format
   msgid "%s is saved"
   msgstr "%s() Ǿϴ"
   
  -#: ../wikilib.php:858
  +#: ../wikilib.php:873
   msgid "Nobody subscribed to this page."
   msgstr ""
   
  -#: ../wikilib.php:880
  +#: ../wikilib.php:895
   #, c-format
   msgid "%s page is modified"
   msgstr ""
   
  -#: ../wikilib.php:890
  +#: ../wikilib.php:905
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:903
  +#: ../wikilib.php:918
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:907
  +#: ../wikilib.php:922
   msgid "Mails are sent successfully"
   msgstr ""
   
  -#: ../wikilib.php:908
  +#: ../wikilib.php:923
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1090
  +#: ../wikilib.php:1086
  +msgid "Login"
  +msgstr ""
  +
  +#: ../wikilib.php:1105
   msgid "Make profile"
   msgstr ""
   
  -#: ../wikilib.php:1091
  +#: ../wikilib.php:1106
   msgid "password again"
   msgstr ""
   
  -#: ../wikilib.php:1102
  +#: ../wikilib.php:1117
   msgid "New password"
   msgstr " йȣ"
   
  -#: ../wikilib.php:1108
  +#: ../wikilib.php:1123
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:1499
  +#: ../wikilib.php:1527
   #, c-format
   msgid "Title search for \"%s\""
   msgstr ""
  @@ -1007,10 +1130,6 @@
   #: ../locale/dummy.php:6
   msgid "UploadedFiles"
   msgstr "ø "
  -
  -#: ../locale/dummy.php:7
  -msgid "BlogChanges"
  -msgstr "ٲ α"
   
   #: ../locale/dummy.php:7
   msgid "VisualTour"
  
  
  


pyrasis     0104/08/20 02:13:54

  Modified:    plugin/processor vim.php
  Log:
  Delete tab to space command.
  
  Revision  Changes    Path
  1.18      +2 -2      moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- vim.php	19 Aug 2004 10:03:37 -0000	1.17
  +++ vim.php	19 Aug 2004 17:13:53 -0000	1.18
  @@ -6,7 +6,7 @@
   // Usage: {{{#!vim sh|c|sh|.. [number]
   // some codes
   // }}}
  -// $Id: vim.php,v 1.17 2004/08/19 10:03:37 pyrasis Exp $
  +// $Id: vim.php,v 1.18 2004/08/19 17:13:53 pyrasis Exp $
   
   function processor_vim($formatter,$value,$options) {
     global $DBInfo;
  @@ -78,7 +78,7 @@
     fclose($fp);
   
     $cmd= "$vim -T xterm -e -s $tmpf ".
  -        ' +"syntax on " +"%s/\t/    /g" +"set syntax='.$type.'" '.$option.
  +        ' +"syntax on " +"set syntax='.$type.'" '.$option.
           ' +"so '.$tohtml.'" +"wq! '.$fout.'" +q';
   
     if(getenv("OS")=="Windows_NT") {
  
  
  


wkpark      2004/08/20 03:31:35

  Modified:    .        wiki.php
  Log:
  fix link_repl(): show external link urls if it needed to be used (action=print etc.)
  fix getProcessor(): merge $DBInfo->processors properly
  
  Revision  Changes    Path
  1.148     +25 -17    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.147
  retrieving revision 1.148
  diff -u -r1.147 -r1.148
  --- wiki.php	18 Aug 2004 17:56:59 -0000	1.147
  +++ wiki.php	19 Aug 2004 18:31:34 -0000	1.148
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.147 2004/08/18 17:56:59 wkpark Exp $
  +// $Id: wiki.php,v 1.148 2004/08/19 18:31:34 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.147 $',1,-1);
  +$_revision = substr('$Revision: 1.148 $',1,-1);
   $_release = '1.0.8';
   
   #ob_start("ob_gzhandler");
  @@ -94,15 +94,13 @@
       while ($file= readdir($handle)) {
         if (is_dir($dir."/plugin/processor/$file")) continue;
         $name= substr($file,0,-4);
  -      if (($tname=$DBInfo->processors[$name])) {
  -        if (!file_exists("plugin/processor/$tname.php")) $name='plain';
  -        else $name=$DBInfo->processors[$name];
  -      }
         $processors[strtolower($name)]= $name;
       }
     }
   
  -  #print_r($processors);
  +  if (is_array($DBInfo->processors))
  +    $processors=array_merge($processors,$DBInfo->processors);
  +
     return $processors[strtolower($pro_name)];
   }
   
  @@ -1192,10 +1190,10 @@
       $this->themedir= dirname(__FILE__);
       $this->set_theme($options['theme']);
   
  -    $this->ex_target='';
  -    $this->ex_bra="<span class='externalLink'>(";
  -    $this->ex_ket=")</span>";
  -    if ($DBInfo->external_target) $this->ex_target='target="_blank" ';
  +    $this->external_on=1;
  +    $this->external_target='';
  +    if ($DBInfo->external_target)
  +      $this->external_target='target="'.$DBInfo->external_target.'" ';
   
       #$this->baserule=array("/<([^\s][^>]*)>/","/`([^`]*)`/",
       $this->baserule=array("/<([^\s<>])/","/`([^`' ]+)'/","/(?<!`)`([^`]*)`/",
  @@ -1456,7 +1454,7 @@
         if ($url[0] == '^') {
           $attr.=' target="_blank" ';
           $url=substr($url,1);
  -        $externalicon=$this->icon['popup'];
  +        $external_icon=$this->icon['popup'];
         }
         if ($force or strpos($url," ")) { # have a space ?
           list($url,$text)=explode(" ",$url,2);
  @@ -1465,17 +1463,27 @@
           else {
             if (preg_match("/^(http|ftp).*\.(png|gif|jpeg|jpg)$/i",$text)) {
               $text=str_replace('&','&amp;',$text);
  -            return "<a href='$link' $attr $this->ex_target title='$url'><img border='0' alt='$url' src='$text' /></a>";
  +            return "<a href='$link' $attr $this->external_target title='$url'><img border='0' alt='$url' src='$text' /></a>";
             }
  -          $external=$this->ex_bra.$url.$this->ex_ket;
  +          if ($this->external_on)
  +            $external_link='<span class="externalLink">('.$url.')</span>';
           }
           list($icon,$dummy)=explode(":",$url,2);
  -        return "<img align='middle' alt='[$icon]' src='".$this->imgs_dir."/$icon.png' />". "<a class='externalLink' $attr $this->ex_target href='$link'>$text</a>".$externalicon;
  +        return "<img align='middle' alt='[$icon]' src='".$this->imgs_dir."/$icon.png' />". "<a class='externalLink' $attr $this->ex_target href='$link'>$text</a>".$external_icon.$external_link;
         } # have no space
         $link=str_replace('&','&amp;',$url);
         if (preg_match("/^(http|https|ftp)/",$url)) {
  -        if (preg_match("/\.(png|gif|jpeg|jpg)$/i",$url))
  -          return "<img alt='$link' src='$url' />";
  +        if (preg_match("/(^.*\.(png|gif|jpeg|jpg))(([\?&]([a-z]+=[0-9a-z]+))*)$/i",$url,$match)) {
  +          $url=$match[1];
  +          $attrs=explode('&',substr($match[3],1));
  +          foreach ($attrs as $arg) {
  +            $name=strtok($arg,'=');
  +            $val=strtok(' ');
  +            if ($name and $val) $attr.=$name.'="'.$val.'" ';
  +            if ($name == 'align') $attr.='class="img'.ucfirst($val).'" ';
  +          }
  +          return "<img alt='$link' $attr src='$url' />";
  +        }
         }
         return "<a class='externalLink' $attr href='$link' $this->ex_target>$url</a>";
       } else {
  
  
  


pyrasis     2004/08/20 14:43:24

  Modified:    .        config.php.default
  Log:
  Add dafault option for old version 2html.vim (vim 6.1).
  $vim_options='+"set expandtab" +"retab"';
  tab -> space.
  
  Revision  Changes    Path
  1.11      +2 -1      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- config.php.default	13 Aug 2004 15:04:04 -0000	1.10
  +++ config.php.default	20 Aug 2004 05:43:23 -0000	1.11
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.10 2004/08/13 15:04:04 wkpark Exp $
  +# $Id: config.php.default,v 1.11 2004/08/20 05:43:23 pyrasis Exp $
   #
   $sitename='UnnamedWiki';
   $data_dir= './data';
  @@ -38,6 +38,7 @@
   $use_sistersites=1;
   $use_twinpages=1;
   $use_trackback=0;
  +$vim_options='+"set expandtab" +"retab"';
   #$nonexists='fancy_nonexists';
   #$nonexists='nolink';
   #$nonexists='forcelink';
  
  
  


wkpark      2004/08/20 20:06:36

  Modified:    plugin   Calendar.php
  Log:
  fix archive option behavior: link to '?action=blog' only for 'today'
  fix regex: use the 'back reference' method
  
  Revision  Changes    Path
  1.10      +16 -10    moniwiki/plugin/Calendar.php
  
  Index: Calendar.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Calendar.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- Calendar.php	16 Aug 2004 02:37:59 -0000	1.9
  +++ Calendar.php	20 Aug 2004 11:06:35 -0000	1.10
  @@ -7,7 +7,7 @@
   #-----usage: generate_calendar(2001, 11, $day_func, 2);-------------------------
   #------(last two arguments are optional)----------------------------------------
   #-------------------------------------------------------------------------------
  -# $Id: Calendar.php,v 1.9 2004/08/16 02:37:59 wkpark Exp $
  +# $Id: Calendar.php,v 1.10 2004/08/20 11:06:35 wkpark Exp $
   
   function calendar_get_dates($formatter,$date='',$page='') {
     global $DBInfo;
  @@ -15,10 +15,10 @@
     if (!$handle) return array();
   
     if (!$page) $page='.*';
  -  else $page=$DBInfo->pageToKeyname($page);
  +  else $page=$DBInfo->pageToKeyname('.'.$page);
   
     if (!$date) $date=date('Ym');
  -  $rule="/^$date(\d{2})_2e".$page."$/";
  +  $rule="/^$date(\d{2})".$page."$/";
   
     $archives=array();
     while ($file = readdir($handle)) {
  @@ -46,7 +46,7 @@
   		'Thursday','Friday','Saturday');
   	$day_heading_length = 3;
   
  -	preg_match("/^(?(?=')'([^']+)'|\"([^\"]+)\")?,?((\d{4})-?(\d{2}))?,?\s*([a-z, ]+)?$/i",$value,$match);
  +	preg_match("/^(('|\")([^\\2]+)\\2)?,?((\d{4})-?(\d{2}))?,?\s*([a-z, ]+)?$/i",$value,$match);
   
   	#print_r($match);
   	/* GET argument has priority */
  @@ -67,16 +67,16 @@
   	$month=intval($month);
   	$year=intval($year);
   
  -	if ($match[1] or $match[2])
  -		$pagename=$match[1] ? $match[1]:$match[2];
  +	if ($match[3])
  +		$pagename=$match[3];
   	else
   		$pagename=$formatter->page->name;
   
   	$link_prefix=sprintf("%04d-%02d",$year,$month);
   
   	$archives=array();
  -	if ($match[6]) {
  -		$args=explode(",",$match[6]);
  +	if ($match[7]) {
  +		$args=explode(",",$match[7]);
   
   		if (in_array ("blog", $args)) $mode='blog';
   		if (in_array ("noweek", $args)) $day_heading_length=0;
  @@ -194,14 +194,20 @@
   				if ($archives[$day]) {
   					$action='?action=blogchanges&amp;date='.$date;
   					$classes='day';
  -				} else
  +					$link=$pagename;
  +				} else {
  +					if ($day==$today)
  +						$link=$pagename;
  +					else
  +						$link='';
   					$action='?action=blog';
  +				}
   			} else if ($action[0] != '?')
   				$action=sprintf("#%02d",$day);
   		}
   
   		$calendar.= '<td'.($classes ? " class=\"$classes\">" : '>').
  -			($link ? $formatter->link_tag($link,$action,$daytext) : '').'</td>';
  +			($link ? $formatter->link_tag($link,$action,$daytext) : $daytext).'</td>';
   
   		$day++;
   		$weekday++;
  
  
  


wkpark      2004/08/20 20:08:32

  Modified:    plugin   BlogChanges.php
  Log:
  fix the regex for args parsing to use the backreference method
  
  Revision  Changes    Path
  1.26      +4 -5      moniwiki/plugin/BlogChanges.php
  
  Index: BlogChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogChanges.php,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- BlogChanges.php	18 Aug 2004 17:46:24 -0000	1.25
  +++ BlogChanges.php	20 Aug 2004 11:08:30 -0000	1.26
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogChanges action plugin for the MoniWiki
   //
  -// $Id: BlogChanges.php,v 1.25 2004/08/18 17:46:24 wkpark Exp $
  +// $Id: BlogChanges.php,v 1.26 2004/08/20 11:08:30 wkpark Exp $
   
   class Blog_cache {
     function get_all_blogs() {
  @@ -216,17 +216,16 @@
       $date=$options['date'];
   
     // parse args
  -  preg_match("/^(?(?=')'([^']+)'|\"([^\"]+)\")?,?(\s*,?\s*.*)?$/",
  +  preg_match("/^(('|\")([^\\2]+)\\2)?,?(\s*,?\s*.*)?$/",
       $value,$match);
   
  -  $opts=explode(',',$match[3]);
  +  $opts=explode(',',$match[4]);
     $opts=array_merge($opts,array_keys($options));
     #print_r($match);print_r($opts);
   
     $category_pages=array();
   
  -  $match[1]=$match[1] ? $match[1]:$match[2];
  -  $options['category']=$options['category'] ? $options['category']:$match[1];
  +  $options['category']=$options['category'] ? $options['category']:$match[3];
   
   
     if ($options['category']) {
  
  
  


wkpark      2004/08/20 20:11:13

  Modified:    plugin   print.php
  Log:
  add some ID tags for CSS (printHeader, printFooter etc)
  show external urls with a internal $external_on variable
  
  Revision  Changes    Path
  1.3       +15 -1     moniwiki/plugin/print.php
  
  Index: print.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/print.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- print.php	16 Oct 2003 09:18:15 -0000	1.2
  +++ print.php	20 Aug 2004 11:11:11 -0000	1.3
  @@ -3,15 +3,29 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a print action plugin for the MoniWiki
   //
  -// $Id: print.php,v 1.2 2003/10/16 09:18:15 wkpark Exp $
  +// $Id: print.php,v 1.3 2004/08/20 11:11:11 wkpark Exp $
   // vim:et:ts=2:
   
   function do_print($formatter,$options) {
     global $DBInfo;
     $options['css_url']=$DBInfo->url_prefix."/css/print.css";
     $formatter->send_header("",$options);
  +  print "<div id='printHeader'>";
     print "<h2>$options[page]</h2>";
  +  print "</div>";
  +  print "<div id='wikiContent'>";
  +  $formatter->external_on=1;
     $formatter->send_page();
  +  print "</div></div>";
  +  print "<div id='printFooter'>";
  +  print sprintf(_("Retrieved from %s"),
  +    qualifiedUrl($formatter->link_url($formatter->page->name))).'<br/>';
  +  if ($mtime=$formatter->page->mtime()) {
  +    $lastedit=date("Y-m-d",$mtime);
  +    $lasttime=date("H:i:s",$mtime);
  +    print sprintf(_("last modified %s %s"),$lastedit,$lasttime);
  +  }
  +  print "</div></body></html>";
     return;
   }
   
  
  
  


wkpark      2004/08/20 20:12:26

  Modified:    plugin   FastSearch.php FullSearch.php
  Log:
  fix regex using the back reference method
  
  Revision  Changes    Path
  1.4       +4 -3      moniwiki/plugin/FastSearch.php
  
  Index: FastSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FastSearch.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- FastSearch.php	30 Sep 2003 09:37:30 -0000	1.3
  +++ FastSearch.php	20 Aug 2004 11:12:26 -0000	1.4
  @@ -13,7 +13,7 @@
   //
   // Usage: [[FastSearch(string)]]
   //
  -// $Id: FastSearch.php,v 1.3 2003/09/30 09:37:30 wkpark Exp $
  +// $Id: FastSearch.php,v 1.4 2004/08/20 11:12:26 wkpark Exp $
   
   function macro_FastSearch($formatter,$value="",$opts=array()) {
     global $DBInfo;
  @@ -23,11 +23,12 @@
       $needle = $value = $formatter->page->name;
     } else {
       # for MoinMoin compatibility with [[FullSearch("blah blah")]]
  -    $needle = preg_replace("/^(\'|\")(.*)(\'|\")/","\\2",$value);
  +    $needle = $value = preg_replace("/^('|\")([^\\1]*)\\1/","\\2",$value);
     }
   
  -  $needle=_preg_search_escape($value);
  +  $needle=_preg_search_escape($needle);
     $pattern = '/'.$needle.'/i';
  +  $fneedle=str_replace('"',"&#34;",$needle); # XXX
   
     $form= <<<EOF
   <form method='get' action='$url'>
  
  
  
  1.4       +3 -3      moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- FullSearch.php	16 Aug 2004 13:29:01 -0000	1.3
  +++ FullSearch.php	20 Aug 2004 11:12:26 -0000	1.4
  @@ -2,9 +2,8 @@
   // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
  -// vim:et:ts=2:
   //
  -// $Id: FullSearch.php,v 1.3 2004/08/16 13:29:01 wkpark Exp $
  +// $Id: FullSearch.php,v 1.4 2004/08/20 11:12:26 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
  @@ -38,7 +37,7 @@
       $needle = $value = $formatter->page->name;
     } else {
       # for MoinMoin compatibility with [[FullSearch("blah blah")]]
  -    $needle = preg_replace("/^(\'|\")(.*)(\'|\")/","\\2",$value);
  +    $needle = preg_replace("/^('|\")([^\\1]*)\\1/","\\2",$value);
     }
   
     $url=$formatter->link_url($formatter->page->urlname);
  @@ -129,4 +128,5 @@
     return $out;
   }
   
  +// vim:et:sts=2:
   ?>
  
  
  


wkpark      2004/08/21 02:59:00

  Modified:    applets/TWikiDrawPlugin Makefile
  Log:
  update and fix plugin path
  
  Revision  Changes    Path
  1.2       +1 -1      moniwiki/applets/TWikiDrawPlugin/Makefile
  
  Index: Makefile
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/applets/TWikiDrawPlugin/Makefile,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Makefile	10 Aug 2003 11:53:20 -0000	1.1
  +++ Makefile	20 Aug 2004 17:59:00 -0000	1.2
  @@ -1,7 +1,7 @@
   install:
   	wget -N http://twiki.org/p/pub/Plugins/TWikiDrawPlugin/TWikiDrawPlugin.zip
   	unzip TWikiDrawPlugin.zip -d twiki
  -	cp twiki/pub/Plugins/TWikiDrawPlugin/* .
  +	cp twiki/pub/TWiki/TWikiDrawPlugin/* .
   	rm -r twiki
   	echo "*** TwikiDrawPlugin installed successfully"
   uninstall:
  
  
  


wkpark      2004/08/21 10:33:37

  Modified:    .        wiki.php
  Log:
  TWiki plugin hack added
  
  Revision  Changes    Path
  1.149     +6 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.148
  retrieving revision 1.149
  diff -u -r1.148 -r1.149
  --- wiki.php	19 Aug 2004 18:31:34 -0000	1.148
  +++ wiki.php	21 Aug 2004 01:33:37 -0000	1.149
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.148 2004/08/19 18:31:34 wkpark Exp $
  +// $Id: wiki.php,v 1.149 2004/08/21 01:33:37 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.148 $',1,-1);
  +$_revision = substr('$Revision: 1.149 $',1,-1);
   $_release = '1.0.8';
   
   #ob_start("ob_gzhandler");
  @@ -3114,13 +3114,15 @@
     global $value,$action;
     # get primary variables
     if ($_SERVER['REQUEST_METHOD']=="POST") {
  +    # hack for TWiki plugin
  +    if ($_FILES['filepath']['name']) $action='draw';
       if ($GLOBALS['HTTP_RAW_POST_DATA']) {
         # RAW posted data. the $value and $action could be accessed under
         # "register_globals = On" in the php.ini
         $options['value']=$value;
       } else {
         $value=$_POST['value'];
  -      $action=$_POST['action'];
  +      $action=$_POST['action'] ? $_POST['action']:$action;
       }
       $goto=$_POST['goto'];
     } else if ($_SERVER['REQUEST_METHOD']=="GET") {
  @@ -3130,6 +3132,7 @@
       $rev=$_GET['rev'];
       $refresh=$_GET['refresh'];
     }
  +
   
     #print $_SERVER['REQUEST_URI'];
     $options['page']=$pagename;
  
  
  


wkpark      2004/08/21 10:35:22

  Modified:    applets/OekakiPlugin Makefile
  Log:
  fix version for the new version
  
  Revision  Changes    Path
  1.3       +1 -1      moniwiki/applets/OekakiPlugin/Makefile
  
  Index: Makefile
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/applets/OekakiPlugin/Makefile,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Makefile	24 Oct 2003 00:34:35 -0000	1.2
  +++ Makefile	21 Aug 2004 01:35:21 -0000	1.3
  @@ -1,4 +1,4 @@
  -VER=222_5
  +VER=222_7
   install:
   	if [ ! -f pbbs${VER}.zip ]; then \
   	wget -c http://hp.vector.co.jp/authors/VA016309/paintbbs/file/pbbs${VER}.zip; fi
  
  
  


wkpark      2004/08/21 10:45:54

  Modified:    applets/OekakiPlugin README
  Log:
  fix url
  
  Revision  Changes    Path
  1.2       +1 -1      moniwiki/applets/OekakiPlugin/README
  
  Index: README
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/applets/OekakiPlugin/README,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- README	10 Aug 2003 11:51:57 -0000	1.1
  +++ README	21 Aug 2004 01:45:54 -0000	1.2
  @@ -1,7 +1,7 @@
   Oekaki shi-BBS PaintBBS ver2.11
   ===============================
   HomePage:
  - * http://www.gt.sakura.ne.jp/~ocosama/
  + * http://shichan.jp/
    * http://hp.vector.co.jp/authors/VA016309/paintbbs/pbbs.html
   
   README:
  
  
  


wkpark      2004/08/21 11:04:12

  Added:       applets/TWikiDrawPlugin README
  Log:
  add a README for TWikiPlugin
  
  Revision  Changes    Path
  1.1                  moniwiki/applets/TWikiDrawPlugin/README
  
  Index: README
  ===================================================================
  TWikiDrawPlugin
  ===============
  HomePage:
   * http://twiki.org/cgi-bin/view/Plugins/TWikiDrawPlugin
   * http://twiki.org/cgi-bin/view/Plugins/TWikiDrawPluginDev
  
  
  


wkpark      2004/08/21 13:43:41

  Added:       imgs     moni-external.gif
  Log:
  add moni-external.gif
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/moni-external.gif
  
  	<<Binary file>>
  
  


wkpark      2004/08/21 13:44:41

  Removed:     imgs     popup.png
  Log:
  renamed to moni-external.gif


wkpark      2004/08/21 13:46:51

  Modified:    .        wiki.php
  Log:
  rename 'popup' as 'external'
  
  Revision  Changes    Path
  1.150     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.149
  retrieving revision 1.150
  diff -u -r1.149 -r1.150
  --- wiki.php	21 Aug 2004 01:33:37 -0000	1.149
  +++ wiki.php	21 Aug 2004 04:46:51 -0000	1.150
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.149 2004/08/21 01:33:37 wkpark Exp $
  +// $Id: wiki.php,v 1.150 2004/08/21 04:46:51 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.149 $',1,-1);
  +$_revision = substr('$Revision: 1.150 $',1,-1);
   $_release = '1.0.8';
   
   #ob_start("ob_gzhandler");
  @@ -538,7 +538,7 @@
       $this->icon['main']="<img src='$imgdir/$iconset-main.gif' alt='^' align='middle' border='0' />";
       $this->icon['print']="<img src='$imgdir/$iconset-print.gif' alt='P' align='middle' border='0' />";
       $this->icon['attach']="<img src='$imgdir/$iconset-attach.gif' alt='@' align='middle' border='0' />";
  -    $this->icon['popup']="<img src='$imgdir/$iconset-popup.gif' alt='[]' align='middle' border='0' />";
  +    $this->icon['external']="<img src='$imgdir/$iconset-external.gif' alt='[]' align='middle' border='0' />";
       $this->icon_sep=" ";
       $this->icon_bra=" ";
       $this->icon_cat=" ";
  @@ -1454,7 +1454,7 @@
         if ($url[0] == '^') {
           $attr.=' target="_blank" ';
           $url=substr($url,1);
  -        $external_icon=$this->icon['popup'];
  +        $external_icon=$this->icon['external'];
         }
         if ($force or strpos($url," ")) { # have a space ?
           list($url,$text)=explode(" ",$url,2);
  
  
  


wkpark      2004/08/21 22:20:04

  Modified:    .        wiki.php
  Log:
  external target works with interwikis: [^wiki:Wiki:FrontPage] etc.
  
  Revision  Changes    Path
  1.151     +19 -16    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.150
  retrieving revision 1.151
  diff -u -r1.150 -r1.151
  --- wiki.php	21 Aug 2004 04:46:51 -0000	1.150
  +++ wiki.php	21 Aug 2004 13:20:04 -0000	1.151
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.150 2004/08/21 04:46:51 wkpark Exp $
  +// $Id: wiki.php,v 1.151 2004/08/21 13:20:04 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.150 $',1,-1);
  +$_revision = substr('$Revision: 1.151 $',1,-1);
   $_release = '1.0.8';
   
   #ob_start("ob_gzhandler");
  @@ -1242,7 +1242,7 @@
       #"\b(".$DBInfo->interwikirule."):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
       #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
       #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+[^\(\)<>\s\',\.:\?\!]+)|".
  -    "\b([A-Z][a-zA-Z]+):([^\(\)<>\s\']+[^\(\)<>\s\',\.:\?\!]+)|".
  +    "(\b|\^?)([A-Z][a-zA-Z]+):([^\(\)<>\s\']+[^\(\)<>\s\',\.:\?\!]+)|".
       # "(?<!\!|\[\[)\b(([A-Z]+[a-z0-9]+){2,})\b|".
       # "(?<!\!|\[\[)((?:\/?[A-Z]([a-z0-9]+|[A-Z]*(?=[A-Z][a-z0-9]|\b))){2,})\b|".
       # WikiName rule: WikiName ILoveYou (imported from the rule of NoSmoke)
  @@ -1437,24 +1437,27 @@
       if (strpos($url,":")) {
         if ($url[0]=='a') # attachment:
           return $this->macro_repl('Attachment',substr($url,11));
  +
  +      if ($url[0] == '^') {
  +        $attr.=' target="_blank" ';
  +        $url=substr($url,1);
  +        $external_icon=$this->icon['external'];
  +      }
  +
         if (preg_match("/^mailto:/",$url)) {
           $url=str_replace("@","_at_",$url);
           $link=str_replace('&','&amp;',$url);
           $name=substr($url,7);
  -        return $this->icon['mailto']."<a href='$link' $attr>$name</a>";
  +        return $this->icon['mailto']."<a href='$link' $attr>$name</a>$external_icon";
         }
   
         if (preg_match("/^(w|[A-Z])/",$url)) { # InterWiki or wiki:
           if (strpos($url," ")) { # have a space ?
             $dum=explode(" ",$url,2);
  -          return $this->interwiki_repl($dum[0],$dum[1]);
  +          return $this->interwiki_repl($dum[0],$dum[1],$attr,$external_icon);
           }
  -        return $this->interwiki_repl($url);
  -      }
  -      if ($url[0] == '^') {
  -        $attr.=' target="_blank" ';
  -        $url=substr($url,1);
  -        $external_icon=$this->icon['external'];
  +        
  +        return $this->interwiki_repl($url,'',$attr,$external_icon);
         }
         if ($force or strpos($url," ")) { # have a space ?
           list($url,$text)=explode(" ",$url,2);
  @@ -1492,7 +1495,7 @@
       }
     }
   
  -  function interwiki_repl($url,$text="") {
  +  function interwiki_repl($url,$text='',$attr='',$extra='') {
       global $DBInfo;
   
       if ($url[0]=="w")
  @@ -1509,8 +1512,8 @@
         # or [wiki:FrontPage Home Page]
         $page=$dum[0];
         if (!$text)
  -        return $this->word_repl($page,'','',1);
  -      return $this->word_repl($page,$text,'',1);
  +        return $this->word_repl($page,$page.$extra,$attr,1);
  +      return $this->word_repl($page,$text.$extra,$attr,1);
       }
   
       $url=$DBInfo->interwiki[$wiki];
  @@ -1543,9 +1546,9 @@
       }
   
       if (preg_match("/\.(png|gif|jpeg|jpg)$/i",$url))
  -      return "<a href='".$url."' title='$wiki:$page'><img border='0' align='middle' alt='$text' src='$url' /></a>";
  +      return "<a href='".$url."' $attr title='$wiki:$page'><img border='0' align='middle' alt='$text' src='$url' /></a>$extra";
   
  -    return $img. "<a href='".$url."' title='$wiki:$page'>$text</a>";
  +    return $img. "<a href='".$url."' $attr title='$wiki:$page'>$text</a>$extra";
     }
   
     function store_pagelinks() {
  
  
  


wkpark      2004/08/22 01:16:57

  Modified:    plugin   BlogChanges.php
  Log:
  add noaction option and support 'Add comment', 'trackback' links suggested by pyrasis
  
  Revision  Changes    Path
  1.27      +46 -6     moniwiki/plugin/BlogChanges.php
  
  Index: BlogChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogChanges.php,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- BlogChanges.php	20 Aug 2004 11:08:30 -0000	1.26
  +++ BlogChanges.php	21 Aug 2004 16:16:56 -0000	1.27
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogChanges action plugin for the MoniWiki
   //
  -// $Id: BlogChanges.php,v 1.26 2004/08/20 11:08:30 wkpark Exp $
  +// $Id: BlogChanges.php,v 1.27 2004/08/21 16:16:56 wkpark Exp $
   
   class Blog_cache {
     function get_all_blogs() {
  @@ -140,6 +140,25 @@
       $entries=array();
       $logs=array();
   
  +/*
  +    if ($DBInfo->use_trackback) {
  +      #read trackbacks and set entry counter
  +      $cache= new Cache_text('trackback');
  +      if ($cache->exists($formatter->page->name)) {
  +        $trackback_raw=$cache->fetch($formatter->page->name);
  +
  +        $trackbacks=explode("\n",$trackback_raw);
  +        foreach ($trackbacks as $trackback) {
  +          list($dummy,$entry,$extra)=explode("\t",$trackback);
  +          if ($entry) {
  +            if($formatter->trackback_list[$entry]) $formatter->trackback_list[$entry]++;
  +            else $formatter->trackback_list[$entry]=1;
  +          }
  +        }
  +      }
  +    }
  +*/
  +
       foreach ($blogs as $blog) {
         $pagename=$DBInfo->keyToPagename($blog);
         $pageurl=_urlencode($pagename);
  @@ -154,13 +173,17 @@
               $entry=explode(' ',$pageurl.' '.$match[2],4);
               if ($match[1]) $endtag='}}}';
               $state=1;
  +            $commentcount=0;
             }
             continue;
           }
           if (preg_match("/^$endtag$/",$line)) {
             $state=0;
  -          $temp=explode("----\n",$summary,2);
  -          $entry[]=$temp[0];
  +          list($content,$comments)=explode("----\n",$summary,2);
  +          $entry[]=$content;
  +          if ($comments and !$options['noaction'])
  +            $commentcount=sizeof(explode("----\n",$comments));
  +          $entry[]=$commentcount;
             $entries[]=$entry;
             $summary='';
             continue;
  @@ -222,6 +245,8 @@
     $opts=explode(',',$match[4]);
     $opts=array_merge($opts,array_keys($options));
     #print_r($match);print_r($opts);
  +  if (in_array('noaction',$opts))
  +    $options['noaction']=1;
   
     $category_pages=array();
   
  @@ -325,15 +350,17 @@
       $template.='@ $date ';
   
     if (in_array('summary',$opts))
  -    $template.='</span><div class=\"blog-summary\">$summary</div>$sep\n";';
  +    $template.='</span><div class=\"blog-summary\">$summary$btn</div>$sep\n";';
     else
       $template.='</span>$sep\n";';
       
     $time_current= time();
     $items='';
   
  +  $sendopt['nosisters']=1;
  +
     foreach ($logs as $log) {
  -    list($page, $user,$date,$title,$summary)= $log;
  +    list($page, $user,$date,$title,$summary,$commentcount)= $log;
       $tag=md5($user.' '.$date.' '.$title);
       $datetag='';
   
  @@ -368,9 +395,22 @@
         $f=new Formatter($p);
         $summary=str_replace('\}}}','}}}',$summary); # XXX
         ob_start();
  -      $f->send_page($summary);
  +      $f->send_page($summary,$sendopt);
         $summary=ob_get_contents();
         ob_end_clean();
  +
  +      if (!$options['noaction']) {
  +        if ($commentcount) {
  +          $add_button=($commentcount == 1) ? _("%d comment"):_("%d comments");
  +        } else
  +          $add_button=_("Add comment");
  +        $add_button=sprintf($add_button,$commentcount);
  +        $btn= $formatter->link_tag(_urlencode($page),"?action=blog&amp;value=$tag",$add_button);
  +        if (getPlugin('SendPing'))
  +          $btn.= ' | '.$formatter->link_tag(_urlencode($page),"?action=trackback&amp;value=$tag",_("track back").$counter);
  +        $btn="<div class='blog-action'>&raquo; ".$btn."</div>\n";
  +      } else
  +        $btn='';
       }
   
       eval($template);
  
  
  


pyrasis     2004/08/22 01:20:32

  Modified:    locale/po ko.po
  Log:
  add korean translation of comment.
  
  Revision  Changes    Path
  1.10      +2 -2      moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- ko.po	19 Aug 2004 06:47:37 -0000	1.9
  +++ ko.po	21 Aug 2004 16:20:32 -0000	1.10
  @@ -417,12 +417,12 @@
   #: ../plugin/processor/blog.php:84
   #, c-format
   msgid "%d comment"
  -msgstr ""
  +msgstr " %d"
   
   #: ../plugin/processor/blog.php:84
   #, c-format
   msgid "%d comments"
  -msgstr ""
  +msgstr " %d"
   
   #: ../plugin/processor/blog.php:95
   msgid "track back"
  
  
  


wkpark      2004/08/22 01:51:42

  Modified:    plugin/processor blog.php
  Log:
  render '----' as '<hr>' suggested by iolo
  
  Revision  Changes    Path
  1.16      +4 -5      moniwiki/plugin/processor/blog.php
  
  Index: blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/blog.php,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- blog.php	14 Aug 2004 14:24:29 -0000	1.15
  +++ blog.php	21 Aug 2004 16:51:39 -0000	1.16
  @@ -7,7 +7,7 @@
   // Hello World
   // }}}
   // this processor is used internally by the Blog action
  -// $Id: blog.php,v 1.15 2004/08/14 14:24:29 wkpark Exp $
  +// $Id: blog.php,v 1.16 2004/08/21 16:51:39 wkpark Exp $
   
   function processor_blog($formatter,$value="",$options) {
     static $date_anchor='';
  @@ -38,11 +38,11 @@
       # get parameters
       list($tag, $user, $date, $title)=explode(" ",$line, 4);
   
  -    if (preg_match('/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/',$user)) {
  +    if (preg_match('/^[\d\.]+$/',$user)) {
         if ($DBInfo->interwiki['Whois'])
           $user=_("Anonymous")."[<a href='".$DBInfo->interwiki['Whois']."$user'>$user</a>]";
         else
  -        $user=_("Anonymous");#"[$user]";
  +        $user=_("Anonymous");
       } else if ($DBInfo->hasPage($user)) {
         $user=$formatter->link_tag($user);
       }
  @@ -77,8 +77,7 @@
       if ($comments) {
         $count=sizeof(explode("----\n",$comments));
   
  -      if ($options['noaction'] or $DBInfo->blog_comments)
  -        $comments=preg_replace("/----\n/","[[BR]]-''''''---[[BR]]",$comments);
  +      if ($options['noaction'] or $DBInfo->blog_comments);
         else {
           $comments='';
           $add_button=($count == 1) ? _("%d comment"):_("%d comments");
  
  
  


wkpark      2004/08/22 02:24:34

  Modified:    .        wiki.php
  Log:
  fix rendering style of <hr> by iolo
  
  Revision  Changes    Path
  1.152     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.151
  retrieving revision 1.152
  diff -u -r1.151 -r1.152
  --- wiki.php	21 Aug 2004 13:20:04 -0000	1.151
  +++ wiki.php	21 Aug 2004 17:24:34 -0000	1.152
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.151 2004/08/21 13:20:04 wkpark Exp $
  +// $Id: wiki.php,v 1.152 2004/08/21 17:24:34 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.151 $',1,-1);
  +$_revision = substr('$Revision: 1.152 $',1,-1);
   $_release = '1.0.8';
   
   #ob_start("ob_gzhandler");
  @@ -1204,11 +1204,11 @@
                        "/(?<!-)--([^-]+)--(?!-)/",
                        );
       $this->baserepl=array("&lt;\\1","&#96;\\1'","<tt class='wiki'>\\1</tt>",
  -                     "<b>\\1</b>","<b>\\1</b>",
  +                     "<strong>\\1</strong>","<strong>\\1</strong>",
                        "<i>\\1</i>","<i>\\1</i>",
                        "<sup>\\1</sup>","<sub>\\1</sub>",
                        "<u>\\1</u>",
  -                     "<hr class='wiki' />\n",
  +                     "<div class='seperator'><hr class='wiki' /></div>\n",
                        "<del>\\1</del>",
                        );
   
  
  
  


wkpark      2004/08/22 02:41:05

  Modified:    plugin   Draw.php
  Log:
  cleanup and add some http headers
  
  Revision  Changes    Path
  1.3       +6 -9      moniwiki/plugin/Draw.php
  
  Index: Draw.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Draw.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Draw.php	1 Nov 2003 09:31:23 -0000	1.2
  +++ Draw.php	21 Aug 2004 17:41:05 -0000	1.3
  @@ -5,8 +5,7 @@
   //
   // Usage: [[Draw(hello)]]
   //
  -// $Id: Draw.php,v 1.2 2003/11/01 09:31:23 wkpark Exp $
  -// vim:et:ts=2:
  +// $Id: Draw.php,v 1.3 2004/08/21 17:41:05 wkpark Exp $
   
   function macro_Draw($formatter,$value) {
     global $DBInfo;
  @@ -28,7 +27,7 @@
     return "<a href='$url'><img src='$DBInfo->url_prefix/$hotdraw_dir/$gifname' alt='hotdraw'></a>\n";
   }
   
  -function do_Draw($formatter,$options) {
  +function do_post_Draw($formatter,$options) {
     global $DBInfo;
   
     $hotdraw_dir=str_replace("./",'',$DBInfo->upload_dir.'/Draw');
  @@ -37,27 +36,24 @@
     $name=$options['value'];
   
     if ($_FILES['filepath']) {
  -  #if ($options['filepath']) {
       $upfile=$_FILES['filepath']['tmp_name'];
       $temp=explode("/",$_FILES['filepath']['name']);
       $file_path=$hotdraw_dir."/".$temp[count($temp)-1];
  -    #$upfile=$options['filepath'];
  -    #$file_path=$hotdraw_dir."/Draw_".$name;
   
       $test=@copy($upfile, $file_path);
       if (!$test) {
         $title=sprintf(_("Fail to copy \"%s\" to \"%s\""),$upfilename,$file_path);
  -      $formatter->send_header("",$options);
  +      $formatter->send_header("Status: 406 Not Acceptable",$options);
         $formatter->send_title($title,"",$options);
         return;
       }
       chmod($file_path,0644);
  -    exit;
  +    return;
     }
   
     if (!$name) {
       $title=_("Fatal error !");
  -    $formatter->send_header("",$options);
  +    $formatter->send_header("Status: 406 Not Acceptable",$options);
       $formatter->send_title($title,"",$options);
       print "<h2>"._("No filename given")."</h2>";
       $formatter->send_footer("",$options);
  @@ -107,4 +103,5 @@
     return;
   }
   
  +// vim:et:sts=2:
   ?>
  
  
  


wkpark      2004/08/22 22:15:06

  Modified:    plugin   rss_blog.php
  Log:
  fixed md5sum
  
  Revision  Changes    Path
  1.17      +5 -6      moniwiki/plugin/rss_blog.php
  
  Index: rss_blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rss_blog.php,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- rss_blog.php	16 Aug 2004 01:28:24 -0000	1.16
  +++ rss_blog.php	22 Aug 2004 13:15:06 -0000	1.17
  @@ -4,7 +4,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a rss_blog action plugin for the MoniWiki
   //
  -// $Id: rss_blog.php,v 1.16 2004/08/16 01:28:24 wkpark Exp $
  +// $Id: rss_blog.php,v 1.17 2004/08/22 13:15:06 wkpark Exp $
   
   if (!function_exists('macro_BlogChanges'))
     if ($plugin=getPlugin('BlogChanges')) include_once("plugin/$plugin.php");
  @@ -138,13 +138,12 @@
   
     $url=qualifiedUrl($formatter->link_url(_urlencode($page)));
   
  +  /* purple link */
  +  $tag=md5($user.' '.$date.' '.$title);
  +
     /* RFC 822 date format for RSS 2.0 */
     $date[10]=' ';
  -  $zone='+0000';
  -  $pubDate=gmdate("D, j M Y H:i:s T",strtotime(substr($date,0,19).$zone));
  -
  -  /* purple link */
  -  $tag=md5($user." ".$date." ".$title);
  +  $pubDate=gmdate('D, j M Y H:i:s T',strtotime(substr($date,0,19).' GMT'));
   
     /* description */
     if ($summary) {
  
  
  


wkpark      2004/08/23 00:49:39

  Modified:    plugin   BlogChanges.php
  Log:
  fix some CSSs
  
  Revision  Changes    Path
  1.28      +3 -3      moniwiki/plugin/BlogChanges.php
  
  Index: BlogChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogChanges.php,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- BlogChanges.php	21 Aug 2004 16:16:56 -0000	1.27
  +++ BlogChanges.php	22 Aug 2004 15:49:39 -0000	1.28
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogChanges action plugin for the MoniWiki
   //
  -// $Id: BlogChanges.php,v 1.27 2004/08/21 16:16:56 wkpark Exp $
  +// $Id: BlogChanges.php,v 1.28 2004/08/22 15:49:39 wkpark Exp $
   
   class Blog_cache {
     function get_all_blogs() {
  @@ -340,7 +340,7 @@
     $template='$out="$bullet<a href=\"$url#$tag\">$title</a> '.
       '<span class=\"blog-user\">';
     if (in_array('summary',$opts))
  -    $template='$out="$bullet<div class=\"blog-title\"><a name=\"$tag\"></a>'.
  +    $template='$out="$bullet<div class=\"blog-summary\"><div class=\"blog-title\"><a name=\"$tag\"></a>'.
         '<a href=\"$url#$tag\">$title</a> <a class=\"puple\" href=\"#$tag\">'.
         addslashes($formatter->purple_icon).
         '</a></div><span class=\"blog-user\">';
  @@ -350,7 +350,7 @@
       $template.='@ $date ';
   
     if (in_array('summary',$opts))
  -    $template.='</span><div class=\"blog-summary\">$summary$btn</div>$sep\n";';
  +    $template.='</span><div class=\"blog-content\">$summary</div>$btn</div>\n";';
     else
       $template.='</span>$sep\n";';
       
  
  
  


wkpark      2004/08/23 00:52:36

  Modified:    plugin/processor blog.php
  Log:
  seperate comments and enclose each comment by the 'blog-comment' class
  
  Revision  Changes    Path
  1.17      +7 -6      moniwiki/plugin/processor/blog.php
  
  Index: blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/blog.php,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- blog.php	21 Aug 2004 16:51:39 -0000	1.16
  +++ blog.php	22 Aug 2004 15:52:36 -0000	1.17
  @@ -7,7 +7,7 @@
   // Hello World
   // }}}
   // this processor is used internally by the Blog action
  -// $Id: blog.php,v 1.16 2004/08/21 16:51:39 wkpark Exp $
  +// $Id: blog.php,v 1.17 2004/08/22 15:52:36 wkpark Exp $
   
   function processor_blog($formatter,$value="",$options) {
     static $date_anchor='';
  @@ -77,8 +77,9 @@
       if ($comments) {
         $count=sizeof(explode("----\n",$comments));
   
  -      if ($options['noaction'] or $DBInfo->blog_comments);
  -      else {
  +      if ($options['noaction'] or $DBInfo->blog_comments) {
  +        $comments=preg_replace("/----\n/","[[HTML(</div></div><div class='seperator'><hr /></div><div class='blog-comment'><div>)]]",$comments);
  +      } else {
           $comments='';
           $add_button=($count == 1) ? _("%d comment"):_("%d comments");
           $add_button=sprintf($add_button,$count);
  @@ -95,7 +96,7 @@
       }
   
       if ($action)
  -      $action="<div class='blog-action'>&raquo; ".$action."</div>\n";
  +      $action="<div class='blog-action'><span class='bullet'>&raquo;</span> ".$action."</div>\n";
   
       ob_start();
       $formatter->send_page($src,$options);
  @@ -104,7 +105,7 @@
       if ($comments) {
         ob_start();
         $formatter->send_page($comments,$options);
  -      $comments= "<div class='blog-comments'>".ob_get_contents()."</div>";
  +      $comments= "<div class='blog-comments'><div class='blog-comment'>".ob_get_contents()."</div></div>";
         ob_end_clean();
       } else
         $comments="";
  @@ -121,7 +122,7 @@
       $out.="<div class='blog-title'><a name='$tag'></a>$title $purple</div>\n";
     }
     $out.="<div class='blog-user'>Submitted by $user $date</div>\n".
  -    "<div class='blog-comment'>$msg$comments$action</div>\n".
  +    "<div class='blog-content'>$msg</div>$comments$action\n".
       "</div>\n";
     return $out;
   }
  
  
  


pyrasis     2004/08/23 01:09:49

  Modified:    plugin   rss_blog.php
  Log:
  Delete wrong '
  
  Revision  Changes    Path
  1.18      +2 -2      moniwiki/plugin/rss_blog.php
  
  Index: rss_blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rss_blog.php,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- rss_blog.php	22 Aug 2004 13:15:06 -0000	1.17
  +++ rss_blog.php	22 Aug 2004 16:09:46 -0000	1.18
  @@ -4,7 +4,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a rss_blog action plugin for the MoniWiki
   //
  -// $Id: rss_blog.php,v 1.17 2004/08/22 13:15:06 wkpark Exp $
  +// $Id: rss_blog.php,v 1.18 2004/08/22 16:09:46 pyrasis Exp $
   
   if (!function_exists('macro_BlogChanges'))
     if ($plugin=getPlugin('BlogChanges')) include_once("plugin/$plugin.php");
  @@ -165,7 +165,7 @@
     <pubDate>$pubDate</pubDate>
     <author>$user</author>
     <category domain="$url">$page</category>
  -  <comments><![CDATA[$url?action=blog&value=$tag']]></comments>
  +  <comments><![CDATA[$url?action=blog&value=$tag]]></comments>
   </item>
   
   ITEM;
  
  
  


wkpark      2004/08/23 02:41:12

  Modified:    .        wiki.php
  Log:
  support user defined css classes in '{{{: }}}' block
  usage: {{{:#mystyle
  blah blah
  }}}
  
  Revision  Changes    Path
  1.153     +27 -10    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.152
  retrieving revision 1.153
  diff -u -r1.152 -r1.153
  --- wiki.php	21 Aug 2004 17:24:34 -0000	1.152
  +++ wiki.php	22 Aug 2004 17:41:12 -0000	1.153
  @@ -11,13 +11,15 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.152 2004/08/21 17:24:34 wkpark Exp $
  +// $Id: wiki.php,v 1.153 2004/08/22 17:41:12 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.152 $',1,-1);
  +$_revision = substr('$Revision: 1.153 $',1,-1);
   $_release = '1.0.8';
   
   #ob_start("ob_gzhandler");
   
  +error_reporting(E_ALL & ~E_NOTICE);
  +#error_reporting(E_ALL);
   $Config=getConfig("config.php",array('init'=>1));
   include("wikilib.php");
   
  @@ -427,7 +429,8 @@
   #  if ($icons) $config['icons']=$icons;
   #  if ($icon) $config['icon']=$icon;
   #  if ($actions) $config['actions']=$actions;
  -  if ($config['include_path']) ini_set('include_path',$config['include_path']);
  +  if (isset($config['include_path']))
  +    ini_set('include_path',$config['include_path']);
   
     return $config;
   }
  @@ -450,6 +453,7 @@
       $this->cache_dir= $this->data_dir.'/cache';
       $this->vartmp_dir= '/var/tmp';
       $this->intermap= $this->data_dir.'/intermap.txt';
  +    $this->interwikirule='';
       $this->editlog_name= $this->data_dir.'/editlog';
       $this->shared_intermap=$this->data_dir."/text/InterMap";
       $this->shared_metadb=$this->data_dir."/metadb";
  @@ -483,7 +487,7 @@
       $this->trail=0;
       $this->origin=0;
       $this->arrow=" &#x203a; ";
  -    $this->home=Home;
  +    $this->home='Home';
       $this->diff_type='fancy_diff';
       $this->nonexists='nonexists';
       $this->use_sistersites=1;
  @@ -491,6 +495,7 @@
       $this->use_hostname=1;
       $this->pagetype=array();
       $this->smiley='wikismiley';
  +    $this->theme='';
   
       $this->inline_latex=0;
       $this->processors=array();
  @@ -516,7 +521,7 @@
         $this->menu_sep="|";
       }
   
  -    if (!$this->icon) {
  +    if (empty($this->icon)) {
       $iconset=$this->iconset;
       $imgdir=$this->imgs_dir;
       $this->icon['upper']="<img src='$imgdir/$iconset-upper.gif' alt='U' align='middle' border='0' />";
  @@ -544,7 +549,7 @@
       $this->icon_cat=" ";
       }
   
  -    if (!$this->icons) {
  +    if (empty($this->icons)) {
         $this->icons=array(
                 array("","?action=edit",$this->icon['edit'],"accesskey='e'"),
                 array("","?action=diff",$this->icon['diff'],"accesskey='c'"),
  @@ -589,7 +594,7 @@
       if (!$this->counter->counter)
         $this->counter=new Counter();
   
  -    if ($this->security_class) {
  +    if (isset($this->security_class)) {
         include_once("plugin/security/$this->security_class.php");
         $class="Security_".$this->security_class;
         $this->security=new $class ($this);
  @@ -2048,6 +2053,7 @@
   
            $processor="";
            $in_pre=1;
  +         $np=0;
   
            # check processor
            if ($line[$p+3] == "#" and $line[$p+4] == "!") {
  @@ -2062,10 +2068,17 @@
            } else if ($line[$p+3] == ":") {
               # new formatting rule for a quote block (pre block + wikilinks)
               $line[$p+3]=" ";
  +            $np=1;
  +            if ($line[$p+4]=='#') {
  +              $pre_style=strtok(substr($line,$p+5),' ');
  +              $np++;
  +              if ($pre_style) $np+=strlen($pre_style);
  +            } else
  +              $pre_style='';
               $in_quote=1;
            }
   
  -         $this->pre_line=substr($line,$p+3);
  +         $this->pre_line=substr($line,$p+$np+3);
            if (trim($this->pre_line))
              $this->pre_line.="\n";
            $line=substr($line,0,$p);
  @@ -2197,7 +2210,11 @@
               $pre=str_replace("<","&lt;",$this->pre_line);
               $pre=preg_replace($this->baserule,$this->baserepl,$pre);
               $pre=preg_replace("/(".$wordrule.")/e","\$this->link_repl('\\1')",$pre);
  -            $line="<pre class='quote'>\n".$pre."</pre>\n".$line;
  +            $class='quote';
  +            if ($pre_style) $class=$pre_style;
  +            #if ($pre_style) $class.=' '.$pre_style;
  +            #if ($pre_style) $class=$pre_style.' '.$class;
  +            $line="<pre class=\"$class\">\n".$pre."</pre>\n".$line;
               $in_quote=0;
            } else {
               # htmlfy '<'
  @@ -3062,7 +3079,7 @@
   $options['id']=$user->id;
   
   # MoniWiki theme
  -if (!$DBInfo->theme) $theme=$_GET['theme'];
  +if (empty($DBInfo->theme) and isset($_GET['theme'])) $theme=$_GET['theme'];
   else $theme=$DBInfo->theme;
   if ($theme) $options['theme']=$theme;
   
  
  
  


wkpark      2004/08/23 12:18:20

  Modified:    .        wiki.php
  Log:
  fix last changes: support ids as well as classes in quote blocks
  
  Revision  Changes    Path
  1.154     +18 -7     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.153
  retrieving revision 1.154
  diff -u -r1.153 -r1.154
  --- wiki.php	22 Aug 2004 17:41:12 -0000	1.153
  +++ wiki.php	23 Aug 2004 03:18:19 -0000	1.154
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.153 2004/08/22 17:41:12 wkpark Exp $
  +// $Id: wiki.php,v 1.154 2004/08/23 03:18:19 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.153 $',1,-1);
  +$_revision = substr('$Revision: 1.154 $',1,-1);
   $_release = '1.0.8';
   
   #ob_start("ob_gzhandler");
  @@ -2069,8 +2069,8 @@
               # new formatting rule for a quote block (pre block + wikilinks)
               $line[$p+3]=" ";
               $np=1;
  -            if ($line[$p+4]=='#') {
  -              $pre_style=strtok(substr($line,$p+5),' ');
  +            if ($line[$p+4]=='#' or $line[$p+4]=='.') {
  +              $pre_style=strtok(substr($line,$p+4),' ');
                 $np++;
                 if ($pre_style) $np+=strlen($pre_style);
               } else
  @@ -2210,11 +2210,22 @@
               $pre=str_replace("<","&lt;",$this->pre_line);
               $pre=preg_replace($this->baserule,$this->baserepl,$pre);
               $pre=preg_replace("/(".$wordrule.")/e","\$this->link_repl('\\1')",$pre);
  -            $class='quote';
  -            if ($pre_style) $class=$pre_style;
  +            $attr='class="quote"';
  +            if ($pre_style) {
  +              $tag=$pre_style[0];
  +              $style=substr($pre_style,1);
  +              switch($tag) {
  +              case '#':
  +                $attr="id='$style'";
  +                break;
  +              case '.':
  +                $attr="class='$style'";
  +                break;
  +              }
  +            }
               #if ($pre_style) $class.=' '.$pre_style;
               #if ($pre_style) $class=$pre_style.' '.$class;
  -            $line="<pre class=\"$class\">\n".$pre."</pre>\n".$line;
  +            $line="<pre $attr>\n".$pre."</pre>\n".$line;
               $in_quote=0;
            } else {
               # htmlfy '<'
  
  
  


wkpark      2004/08/23 23:19:41

  Modified:    .        wiki.php
  Log:
  fix typo
  
  Revision  Changes    Path
  1.155     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.154
  retrieving revision 1.155
  diff -u -r1.154 -r1.155
  --- wiki.php	23 Aug 2004 03:18:19 -0000	1.154
  +++ wiki.php	23 Aug 2004 14:19:41 -0000	1.155
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.154 2004/08/23 03:18:19 wkpark Exp $
  +// $Id: wiki.php,v 1.155 2004/08/23 14:19:41 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.154 $',1,-1);
  +$_revision = substr('$Revision: 1.155 $',1,-1);
   $_release = '1.0.8';
   
   #ob_start("ob_gzhandler");
  @@ -1213,7 +1213,7 @@
                        "<i>\\1</i>","<i>\\1</i>",
                        "<sup>\\1</sup>","<sub>\\1</sub>",
                        "<u>\\1</u>",
  -                     "<div class='seperator'><hr class='wiki' /></div>\n",
  +                     "<div class='separator'><hr class='wiki' /></div>\n",
                        "<del>\\1</del>",
                        );
   
  
  
  


wkpark      2004/08/23 23:19:42

  Modified:    plugin/processor blog.php
  Log:
  fix typo
  
  Revision  Changes    Path
  1.18      +2 -2      moniwiki/plugin/processor/blog.php
  
  Index: blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/blog.php,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- blog.php	22 Aug 2004 15:52:36 -0000	1.17
  +++ blog.php	23 Aug 2004 14:19:42 -0000	1.18
  @@ -7,7 +7,7 @@
   // Hello World
   // }}}
   // this processor is used internally by the Blog action
  -// $Id: blog.php,v 1.17 2004/08/22 15:52:36 wkpark Exp $
  +// $Id: blog.php,v 1.18 2004/08/23 14:19:42 wkpark Exp $
   
   function processor_blog($formatter,$value="",$options) {
     static $date_anchor='';
  @@ -78,7 +78,7 @@
         $count=sizeof(explode("----\n",$comments));
   
         if ($options['noaction'] or $DBInfo->blog_comments) {
  -        $comments=preg_replace("/----\n/","[[HTML(</div></div><div class='seperator'><hr /></div><div class='blog-comment'><div>)]]",$comments);
  +        $comments=preg_replace("/----\n/","[[HTML(</div></div><div class='separator'><hr /></div><div class='blog-comment'><div>)]]",$comments);
         } else {
           $comments='';
           $add_button=($count == 1) ? _("%d comment"):_("%d comments");
  
  
  


wkpark      2004/08/24 01:26:01

  Modified:    .        wiki.php
  Log:
  change a CSS class name: group renamed as wikiGroup
  some css cleanup
  
  Revision  Changes    Path
  1.156     +7 -7      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.155
  retrieving revision 1.156
  diff -u -r1.155 -r1.156
  --- wiki.php	23 Aug 2004 14:19:41 -0000	1.155
  +++ wiki.php	23 Aug 2004 16:26:01 -0000	1.156
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.155 2004/08/23 14:19:41 wkpark Exp $
  +// $Id: wiki.php,v 1.156 2004/08/23 16:26:01 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.155 $',1,-1);
  +$_revision = substr('$Revision: 1.156 $',1,-1);
   $_release = '1.0.8';
   
   #ob_start("ob_gzhandler");
  @@ -2715,7 +2715,7 @@
     color:#FFD700; /* gold */
   }
   
  -td.message {
  +div.message {
     margin-top: 6pt;
     background-color: #E8E8E8;
     border-style:solid;
  @@ -2841,13 +2841,13 @@
           $group=$this->group;
           $title=substr($this->page->name,strlen($group));
           $name=$title;
  -        $group="<span class='group'>".(substr($group,0,-1))." &raquo;<br /></span>";
  +        $group="<div class='wikiGroup'>".(substr($group,0,-1))." &raquo;</div>";
         } else     
           $title=$this->page->title;
       }
       # setup title variables
       #$heading=$this->link_to("?action=fullsearch&amp;value="._urlencode($name),$title);
  -    $title="$group<font class='wikiTitle'><b>$title</b></font>";
  +    $title="$group<span class='wikiTitle'><b>$title</b></span>";
       if ($link)
         $title="<a href=\"$link\" class='wikiTitle'>$title</a>";
       else if (empty($options['nolink']))
  @@ -2858,9 +2858,9 @@
   
       if ($options['msg']) {
         $msg=<<<MSG
  -<table class="message" width="100%"><tr><td class="message">
  +<div class="message">
   $options[msg]
  -</td></tr></table>
  +</div>
   MSG;
       }
   
  
  
  


wkpark      2004/08/24 03:07:28

  Modified:    plugin   BlogChanges.php
  Log:
  count and show the number of trackbacks.
  
  Revision  Changes    Path
  1.29      +33 -21    moniwiki/plugin/BlogChanges.php
  
  Index: BlogChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogChanges.php,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- BlogChanges.php	22 Aug 2004 15:49:39 -0000	1.28
  +++ BlogChanges.php	23 Aug 2004 18:07:27 -0000	1.29
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogChanges action plugin for the MoniWiki
   //
  -// $Id: BlogChanges.php,v 1.28 2004/08/22 15:49:39 wkpark Exp $
  +// $Id: BlogChanges.php,v 1.29 2004/08/23 18:07:27 wkpark Exp $
   
   class Blog_cache {
     function get_all_blogs() {
  @@ -140,25 +140,6 @@
       $entries=array();
       $logs=array();
   
  -/*
  -    if ($DBInfo->use_trackback) {
  -      #read trackbacks and set entry counter
  -      $cache= new Cache_text('trackback');
  -      if ($cache->exists($formatter->page->name)) {
  -        $trackback_raw=$cache->fetch($formatter->page->name);
  -
  -        $trackbacks=explode("\n",$trackback_raw);
  -        foreach ($trackbacks as $trackback) {
  -          list($dummy,$entry,$extra)=explode("\t",$trackback);
  -          if ($entry) {
  -            if($formatter->trackback_list[$entry]) $formatter->trackback_list[$entry]++;
  -            else $formatter->trackback_list[$entry]=1;
  -          }
  -        }
  -      }
  -    }
  -*/
  -
       foreach ($blogs as $blog) {
         $pagename=$DBInfo->keyToPagename($blog);
         $pageurl=_urlencode($pagename);
  @@ -308,6 +289,29 @@
       $logs=Blog_cache::get_simple($blogs,$options);
     usort($logs,'BlogCompare');
   
  +  // get the number of trackbacks
  +  $trackback_list=array();
  +  if ($DBInfo->use_trackback) {
  +    #read trackbacks and set entry counter
  +    $cache= new Cache_text('trackback');
  +    foreach ($blogs as $blog) {
  +      if ($cache->exists($blog)) {
  +        $trackback_raw=$cache->fetch($blog);
  +
  +        $trackbacks=explode("\n",$trackback_raw);
  +        foreach ($trackbacks as $trackback) {
  +          list($dummy,$entry,$extra)=explode("\t",$trackback);
  +          if ($entry) {
  +            if($trackback_list[$blog][$entry])
  +              $trackback_list[$blog][$entry]++;
  +            else
  +            $trackback_list[$blog]=array($entry=>1);
  +          }
  +        }
  +      }
  +    }
  +  }
  +
     if (!$options['date'] or !preg_match('/^\d{4}-?\d{2}$/',$options['date']))
       $date=date('Ym');
   
  @@ -406,9 +410,17 @@
             $add_button=_("Add comment");
           $add_button=sprintf($add_button,$commentcount);
           $btn= $formatter->link_tag(_urlencode($page),"?action=blog&amp;value=$tag",$add_button);
  -        if (getPlugin('SendPing'))
  +
  +        if ($DBInfo->use_trackback) {
  +          if (isset($trackback_list[$page][$tag]))
  +            $counter=' ('.$trackback_list[$page][$tag].')';
  +          else
  +            $counter='';
  +
             $btn.= ' | '.$formatter->link_tag(_urlencode($page),"?action=trackback&amp;value=$tag",_("track back").$counter);
  +        }
           $btn="<div class='blog-action'>&raquo; ".$btn."</div>\n";
  +
         } else
           $btn='';
       }
  
  
  


iolo        2004/08/24 04:32:27

  Modified:    plugin   BabelFish.php BlogCategories.php
  Log:
  replace & with &amp; to validate xhtml.
  
  Revision  Changes    Path
  1.5       +6 -6      moniwiki/plugin/BabelFish.php
  
  Index: BabelFish.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BabelFish.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- BabelFish.php	11 Feb 2004 08:47:31 -0000	1.4
  +++ BabelFish.php	23 Aug 2004 19:32:26 -0000	1.5
  @@ -5,7 +5,7 @@
   //
   // Usage: [[BabelFish]]
   //
  -// $Id: BabelFish.php,v 1.4 2004/02/11 08:47:31 wkpark Exp $
  +// $Id: BabelFish.php,v 1.5 2004/08/23 19:32:26 iolo Exp $
   
   #<script language="JavaScript1.2" src="http://www.altavista.com/r?entr"></script>
   function macro_BabelFish($formatter,$value,$ret=array()) {
  @@ -35,17 +35,17 @@
     #$TR="http://babelfish.altavista.com/babelfish/tr?doit=done&urltext=http://chemie.skku.ac.kr/wiki/wiki.php/BabelFishMacro&lp=en_ja
     if (in_array($lp,$supported)) {
       $URL=urlencode($URL);
  -    $TR.="&lp=$lp";
  +    $TR.="&amp;lp=$lp";
     } else {
       // XXX not supported by http://babelfish.altavista.com/
       $lp=$from.'_en';
  -    $URL=urlencode($TR."&lp=$lp&url=$URL");
  +    $URL=urlencode($TR."&amp;lp=$lp&amp;url=$URL");
       $lp='en_'.$to;
  -    $TR.="&lp=$lp";
  +    $TR.="&amp;lp=$lp";
     }
  -  $goto=$TR.'&url='.$URL;
  +  $goto=$TR.'&amp;url='.$URL;
     return <<<EOF
  -<img src='$formatter->imgs_dir/$from-16.png' /> <a href="$goto"><img border='0' src='$formatter->imgs_dir/fishloop.gif' title='$msg' alt='BabelFish@altavista' /></a><img src='$formatter->imgs_dir/$to-16.png' />
  +<img src='$formatter->imgs_dir/$from-16.png' alt='$from' /> <a href="$goto"><img border='0' src='$formatter->imgs_dir/fishloop.gif' title='$msg' alt='BabelFish@altavista' /></a><img src='$formatter->imgs_dir/$to-16.png' alt='$to' />
   EOF;
   
   }
  
  
  
  1.6       +2 -2      moniwiki/plugin/BlogCategories.php
  
  Index: BlogCategories.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogCategories.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- BlogCategories.php	17 Aug 2004 10:49:18 -0000	1.5
  +++ BlogCategories.php	23 Aug 2004 19:32:26 -0000	1.6
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogCategory macro plugin for the MoniWiki
   //
  -// $Id: BlogCategories.php,v 1.5 2004/08/17 10:49:18 wkpark Exp $
  +// $Id: BlogCategories.php,v 1.6 2004/08/23 19:32:26 iolo Exp $
   
   function macro_BlogCategories($formatter,$value='') {
     global $DBInfo;
  @@ -31,7 +31,7 @@
         $lnk=str_replace('CATEGORY',$category,$link);
         if (!$no_rss)
           $rss='&nbsp;<a href="'.str_replace('blogchanges','blogrss',$lnk).'">'.
  -          '<img src="'.$DBInfo->imgs_dir.'/tiny-xml.gif'.'" border="0" /></a>';
  +          '<img src="'.$DBInfo->imgs_dir.'/tiny-xml.gif'.'" border="0" alt="xml" /></a>';
         $dep=str_replace(' ','&nbsp;&nbsp;',$match[1]);
         $out.="$dep<a href='$lnk'>$text/</a>$rss<br/>";
       }
  
  
  


wkpark      2004/08/24 17:19:30

  Modified:    plugin   DueDate.php
  Log:
  fixed #300259
  
  Revision  Changes    Path
  1.3       +5 -4      moniwiki/plugin/DueDate.php
  
  Index: DueDate.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/DueDate.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DueDate.php	10 Aug 2003 08:20:36 -0000	1.2
  +++ DueDate.php	24 Aug 2004 08:19:29 -0000	1.3
  @@ -1,12 +1,11 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// 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: DueDate.php,v 1.2 2003/08/10 08:20:36 wkpark Exp $
  -// vim:et:ts=2:
  +// $Id: DueDate.php,v 1.3 2004/08/24 08:19:29 wkpark Exp $
   
   function macro_DueDate($formatter,$value) {
     $time= localtime(time(),true);
  @@ -14,6 +13,7 @@
     $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;
   
  @@ -33,7 +33,7 @@
     }
   
     $time_val= strtotime($date_val);
  -  $time_diff= (int) (($time_val - time())/86400);
  +  $time_diff= (int) (($time_val - $now_val)/86400);
     
     $date=strftime("%x",$time_val);
   
  @@ -45,6 +45,7 @@
        $msg=sprintf(_("%d day(s) passed from %s."), abs($time_diff), $date);
   
     return $msg;
  +// vim:et:sts=4:
   }
   
   ?>
  
  
  


wkpark      2004/08/24 21:04:09

  Modified:    css      kbd.js
  Log:
  merged with kbd2.js
  support print action
  
  Revision  Changes    Path
  1.4       +161 -151  moniwiki/css/kbd.js
  
  Index: kbd.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/kbd.js,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- kbd.js	10 Aug 2003 12:00:37 -0000	1.3
  +++ kbd.js	24 Aug 2004 12:04:08 -0000	1.4
  @@ -1,12 +1,12 @@
   /*
  -   MoinMoin Hotkey
  +   MoinMoin Hotkeys
   
  -   Copyright(c) 2002 by Byung-Chan Kim
  -   Copyright(c) 2003 by Won-kyu Park <wkpark @ kldp.org>
  +   Copyright(c) 2002 Byung-Chan Kim
  +   Copyright(c) 2003-2004 Won-kyu Park <wkpark at kldp.org>
   
      distributable under GPL
   
  -   $Id: kbd.js,v 1.3 2003/08/10 12:00:37 wkpark Exp $
  +   $Id: kbd.js,v 1.4 2004/08/24 12:04:08 wkpark Exp $
   
      CHANGES
   
  @@ -14,13 +14,14 @@
      * 2003/04/16 : simlified by wkpark
      * 2003/06/01 : added patch by Kkabi
      * 2003/07/14 : fixed element indices
  +   * 2004/08/24 : no PATH_INFO support merged
   */
   
   /*
    <form name="go" id="go" method="get" action='$url' onsubmit="return moin_submit();">
  - <input type="text" name="value" size="20" style="width:100" />
  + <input type="text" name="value" size="20" />
    <input type="hidden" name="action" value="goto" />
  - <input type="submit" name="status" value="Go" class="goto" style="width:23px;" />
  + <input type="submit" name="status" value="Go" class="goto" />
    </form>
   */
   
  @@ -42,70 +43,77 @@
      F3: FindPage
   */
   
  -// uncomment bellow two lines and custumize for your wiki.
  +// uncomment bellow three lines and customize for your wiki.
   
   //url_prefix="/mywiki";
  -//FrontPage="/FrontPage";
  -RecentChanges="/RecentChanges"; 
  -FindPage="/FindPage"; 
  -TitleIndex="/TitleIndex"; 
  -HelpContents="/HelpContents"; 
  +//_qp="/"; // query_prefix
  +//FrontPage= "FrontPage";
  +RecentChanges= "RecentChanges"; 
  +FindPage= "FindPage"; 
  +TitleIndex= "TitleIndex"; 
  +HelpContents= "HelpContents"; 
  +
  +if (_qp == '/') {
  +	_ap='?';
  +} else {
  +	_ap='&';
  +}
   
   _dom=0;
   
   function keydownhandler(e) {
  -        if(document.all) e= window.event; // for IE
  -        if(_dom==3) var EventStatus= e.srcElement.tagName;
  -        else if(_dom==1) var EventStatus= e.target.nodeName; // for Mozilla
  -
  -        var cc = '';
  -        var ch = '';
  -
  -        if(_dom==3) { // for IE
  -                if(e.keyCode>0) {
  -                        ch=String.fromCharCode(e.keyCode);
  -                        cc=e.keyCode;
  -                }
  -        } else { // for Mozilla
  -                cc=e.keyCode;
  -                if(e.charCode>0) {
  -                        ch=String.fromCharCode(e.charCode);
  -                }
  -        }
  +	if(document.all) e= window.event; // for IE
  +	if(_dom==3) var EventStatus= e.srcElement.tagName;
  +	else if(_dom==1) var EventStatus= e.target.nodeName; // for Mozilla
  +
  +	var cc = '';
  +	var ch = '';
  +
  +	if(_dom==3) { // for IE
  +		if(e.keyCode>0) {
  +			ch=String.fromCharCode(e.keyCode);
  +			cc=e.keyCode;
  +		}
  +	} else { // for Mozilla
  +		cc=e.keyCode;
  +		if(e.charCode>0) {
  +			ch=String.fromCharCode(e.charCode);
  +		}
  +	}
   
   //	if (_dom!=3) return;
  -        if(EventStatus == 'INPUT' || EventStatus == 'TEXTAREA' ) {
  -          if (_dom==3 && cc==27 && EventStatus == 'TEXTAREA') return false;
  -          // ESC blocking for all vim lovers
  -                return;
  -        }
  +	if(EventStatus == 'INPUT' || EventStatus == 'TEXTAREA' ) {
  +		if (_dom==3 && cc==27 && EventStatus == 'TEXTAREA') return false;
  +		// ESC blocking for all vim lovers
  +		return;
  +	}
   //	if (cc==8) { // Backspace blocking
  -//              alert(e.keyCode);
  -//                if( _dom==3 && strs.length > 0) {
  -//                        //strs=strs.substr(0,strs.length-1);
  -//                        //document.getElementById("status").innerHTML=strs;
  -//                }
  -//                return false;
  -//        }
  -        return
  +//		alert(e.keyCode);
  +//		if( _dom==3 && strs.length > 0) {
  +//			//strs=strs.substr(0,strs.length-1);
  +//			//document.getElementById("status").innerHTML=strs;
  +//		}
  +//		return false;
  +//	}
  +	return
   }
   
   function keypresshandler(e){
  -        if(document.all) e=window.event; // for IE
  -        if(_dom==3) var EventStatus= e.srcElement.tagName;
  -        else if(_dom==1) var EventStatus= e.target.nodeName; // for Mozilla
  -
  -        var cc = '';
  -        var ch = '';
  -
  -        if(_dom==3) { // for IE
  -                if(e.keyCode>0) {
  -                        ch=String.fromCharCode(e.keyCode);
  -                        cc=e.keyCode;
  -                }
  -        } else { // for Mozilla
  -                cc=e.keyCode;
  -                if(e.charCode>0) {
  +	if(document.all) e=window.event; // for IE
  +	if(_dom==3) var EventStatus= e.srcElement.tagName;
  +	else if(_dom==1) var EventStatus= e.target.nodeName; // for Mozilla
  +
  +	var cc = '';
  +	var ch = '';
  +
  +	if(_dom==3) { // for IE
  +		if(e.keyCode>0) {
  +			ch=String.fromCharCode(e.keyCode);
  +			cc=e.keyCode;
  +		}
  +	} else { // for Mozilla
  +		cc=e.keyCode;
  +		if(e.charCode>0) {
   			ch=String.fromCharCode(e.charCode);
   		}
   	}
  @@ -113,120 +121,122 @@
   		if ((ch == '?' || ch== '/') && EventStatus == 'INPUT') {
   			var my=""+document.go.elements['value'].value;
   			if (ch == '?') {
  -			 if (document.go.elements['status'].value == '?') {
  -                	  document.go.elements['action'].value="goto";
  -                	  document.go.elements['status'].value="Go";
  -			  window.status="GoTo";
  -			 } else {
  -                	  document.go.elements['action'].value="titlesearch";
  -                	  document.go.elements['status'].value="?";
  -			  window.status="TitleSearch";
  -			 }
  +				if (document.go.elements['status'].value == '?') {
  +					document.go.elements['action'].value="goto";
  +					document.go.elements['status'].value="Go";
  +					window.status="GoTo";
  +				} else {
  +					document.go.elements['action'].value="titlesearch";
  +					document.go.elements['status'].value="?";
  +					window.status="TitleSearch";
  +				}
   			} else {
  -			 if (document.go.elements['status'].value == '/') {
  -                	  document.go.elements['action'].value="goto";
  -                	  document.go.elements['status'].value="Go";
  -			  window.status="GoTo";
  -			 } else {
  -                	  document.go.elements['action'].value="fullsearch";
  -                	  document.go.elements['status'].value="/";
  -			  window.status="FullSearch";
  -			 }
  +				if (document.go.elements['status'].value == '/') {
  +			 		document.go.elements['action'].value="goto";
  +			 		document.go.elements['status'].value="Go";
  +			 		window.status="GoTo";
  +				} else {
  +					document.go.elements['action'].value="fullsearch";
  +					document.go.elements['status'].value="/";
  +					window.status="FullSearch";
  +				}
   			}
   			if (my == '/' || my == '?')
   			document.go.elements['value'].value=my.substr(0,my.length-1);
  -                } else if (cc== 27 && EventStatus == 'INPUT') {
  +		} else if (cc== 27 && EventStatus == 'INPUT') {
   			document.go.elements['value'].blur();
   			document.go.elements['value'].value='';
  -               		document.go.elements['action'].value="goto";
  -               		document.go.elements['status'].value="Go";
  +			document.go.elements['action'].value="goto";
  +			document.go.elements['status'].value="Go";
   			window.status="GoTo"+window.defaultStatus;
   		}
   		return;
  -        }
  -        if(e.altKey || e.ctrlKey) return;
  +	}
  +	if(e.altKey || e.ctrlKey) return;
   
  -        if(_dom != 3 && cc == 229 && ch == '') { // Mozilla
  -                window.status="?/ or change IME status";
  -        } else if(_dom !=3 && cc == 112) { // 'F1' Help! (Mozilla only)
  -                self.location = url_prefix + HelpContents;
  -        } else if(_dom !=3 && cc == 114) { // 'F3' Find (Mozilla only)
  -                self.location = url_prefix + FindPage;
  -        } else if(cc == 9 || cc == 27) { // 'TAB','ESC' key
  -                if (cc == 27) {
  -                        document.go.elements['value'].focus();
  -                }
  -        } else if(ch == "/" || ch == "?") {
  -                if (ch == "?") {
  -                // Title search as vi way
  -                document.go.elements['value'].focus();
  -                document.go.elements['action'].value="titlesearch";
  -                document.go.elements['status'].value="?";
  -                } else if ( ch == "/") {
  -                // Contents search
  -                document.go.elements['value'].focus();
  -                document.go.elements['action'].value="fullsearch";
  -                document.go.elements['status'].value="/";
  -                }
  -        } else if(ch == "c") {
  -                self.location = url_prefix + RecentChanges;
  -        } else if(ch == "d" || ch== "i" || ch=="b" || ch=="l" || ch=="h") {
  -                var my=''+self.location;
  -                var idx=my.indexOf("?");
  -                if (idx != -1) {
  -                        my=my.substr(0,idx);
  +	if(_dom != 3 && cc == 229 && ch == '') { // Mozilla
  +		window.status="?/ or change IME status";
  +	} else if(_dom !=3 && cc == 112) { // 'F1' Help! (Mozilla only)
  +		self.location = url_prefix + HelpContents;
  +	} else if(_dom !=3 && cc == 114) { // 'F3' Find (Mozilla only)
  +		self.location = url_prefix + FindPage;
  +	} else if(cc == 9 || cc == 27) { // 'TAB','ESC' key
  +		if (cc == 27) {
  +			document.go.elements['value'].focus();
  +		}
  +	} else if(ch == "/" || ch == "?") {
  +		if (ch == "?") {
  +			// Title search as vi way
  +			document.go.elements['value'].focus();
  +			document.go.elements['action'].value="titlesearch";
  +			document.go.elements['status'].value="?";
  +		} else if ( ch == "/") {
  +			// Contents search
  +			document.go.elements['value'].focus();
  +			document.go.elements['action'].value="fullsearch";
  +			document.go.elements['status'].value="/";
  +		}
  +	} else if(ch == "c") {
  +		self.location = url_prefix + _qp + RecentChanges;
  +	} else if(ch == "d" || ch== "i" || ch=="b" || ch=="l" || ch=="h" || ch=="p") {
  +		var my=''+self.location;
  +		var idx = my.indexOf(_ap);
  +		if (idx != -1) {
  +			my=my.substr(0,idx);
   		}
   		if (ch == "d")
  -                    my +='?action=diff';
  +			my +=_ap + 'action=diff';
   		else if (ch == "i")
  -                    my +='?action=info';
  +			my +=_ap + 'action=info';
   		else if (ch == "b")
  -                    my +='?action=bookmark';
  +			my +=_ap + 'action=bookmark';
   		else if (ch == "h")
  -                    my +='?action=home';
  +			my +=_ap + 'action=home';
   		else if (ch == "l")
  -                    my +='?action=LikePages';
  +			my +=_ap + 'action=LikePages';
  +		else if (ch == "p")
  +			my +=_ap + 'action=print';
   		self.location=my;
   		
  -        } else if(ch == "f") { // frontpage
  -                self.location = url_prefix + FrontPage;
  -        } else if(ch == "s" || ch == 'q') { // findpage
  -                self.location = url_prefix + FindPage
  -        } else if(ch == "t") { // frontpage
  -                self.location = url_prefix + TitleIndex
  -        } else if(ch=="e" || ch=="w" || ch=="r") { // Edit or reflash
  -                var my=''+self.location;
  -                var idx=my.indexOf("?");
  -                if (idx != -1 && my.substr(idx+1,5) == "goto=") {
  -                        my=my.substr(idx+6,my.length-6);
  -                        if ((idx=my.indexOf("&")) != -1)
  -                                my=my.substring(0,idx);
  -                        if (ch == "e" || ch == "w")
  -                                self.location=url_prefix +'/'+my+'?action=edit';
  -                        if (ch == "r") {
  -                                if ((idx=my.indexOf("#")) != -1)
  -                                        my=my.substring(0,idx);
  -                                self.location=url_prefix+ '/'+my+'?action=show';                        }
  -                } else {
  -                        if (ch == "e" || ch == "w")
  -                                self.location = '?action=edit';
  -                        if (ch == "r") {
  -                                if ((idx=my.indexOf("#")) != -1) {
  -                                        my=my.substring(0,idx);
  -                                        self.location = my + '?action=show';
  -                                } else
  -                                        //self.location += '?action=show';
  -                                        self.location = self.location;
  -                        }
  -                }
  -        }
  -        return;
  +	} else if(ch == "f") { // frontpage
  +		self.location = url_prefix + _qp + FrontPage;
  +	} else if(ch == "s" || ch == 'q') { // findpage
  +		self.location = url_prefix + _qp + FindPage
  +	} else if(ch == "t") { // titleindex
  +		self.location = url_prefix + _qp + TitleIndex
  +	} else if(ch=="e" || ch=="w" || ch=="r") { // Edit or refresh
  +		var my=''+self.location;
  +		var idx=my.indexOf(_qp);
  +		if (idx != -1 && my.substr(idx+1,5) == "goto=") {
  +			my=my.substr(idx+6,my.length-6);
  +			if ((idx=my.indexOf("&")) != -1)
  +				my=my.substring(0,idx);
  +			if (ch == "e" || ch == "w")
  +				self.location=url_prefix + _qp + my + _ap + 'action=edit';
  +			if (ch == "r") {
  +				if ((idx=my.indexOf("#")) != -1)
  +					my=my.substring(0,idx);
  +				self.location=url_prefix + _qp + my + _ap + 'action=show';			}
  +		} else {
  +			if (ch == "e" || ch == "w")
  +				self.location += _ap + 'action=edit';
  +			if (ch == "r") {
  +				if ((idx=my.indexOf("#")) != -1) {
  +					my=my.substring(0,idx);
  +					self.location = my + _ap + 'action=show';
  +				} else
  +					//self.location += '?action=show';
  +					self.location = self.location;
  +			}
  +		}
  +	}
  +	return;
   }
   
   function input(){
  -        _dom=document.all ? 3 : (document.getElementById ? 1 : (document.layers ? 2 : 0));
  -        document.onkeypress = keypresshandler;
  -        document.onkeydown = keydownhandler;
  +	_dom=document.all ? 3 : (document.getElementById ? 1 : (document.layers ? 2 : 0));
  +	document.onkeypress = keypresshandler;
  +	document.onkeydown = keydownhandler;
   }
   
   function moin_submit() {
  
  
  


wkpark      2004/08/24 21:04:55

  Removed:     css      kbd2.js
  Log:
  merged with the kbd.js


wkpark      2004/08/24 21:07:43

  Modified:    .        monisetup.php
  Log:
  deleted 'kbd2.js' specific lines
  
  Revision  Changes    Path
  1.14      +2 -4      moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- monisetup.php	14 Aug 2004 13:38:57 -0000	1.13
  +++ monisetup.php	24 Aug 2004 12:07:42 -0000	1.14
  @@ -1,7 +1,7 @@
   <?
   // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.13 2004/08/14 13:38:57 wkpark Exp $
  +// $Id: monisetup.php,v 1.14 2004/08/24 12:07:42 wkpark Exp $
   
   class MoniConfig {
     function MoniConfig($configfile="config.php") {
  @@ -39,10 +39,8 @@
       }
       preg_match("/Apache\/2\.0\./",$_SERVER['SERVER_SOFTWARE'],$match);
   
  -    if ($match) {
  +    if ($match)
         $config['query_prefix']='"?"';
  -      $config['kbd_script']='$url_prefix."/css/kbd2.js"';
  -    }
   
       $url_prefix= preg_replace("/\/([^\/]+)\.php$/","",$_SERVER['SCRIPT_NAME']);
       $config['url_prefix']="'".$url_prefix."'";
  
  
  


wkpark      2004/08/25 01:53:25

  Modified:    plugin   Icon.php
  Log:
  change the directory structure of icons
  
  Revision  Changes    Path
  1.2       +6 -1      moniwiki/plugin/Icon.php
  
  Index: Icon.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Icon.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Icon.php	15 Aug 2003 21:30:36 -0000	1.1
  +++ Icon.php	24 Aug 2004 16:53:25 -0000	1.2
  @@ -4,9 +4,14 @@
   // a Icon macro plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: Icon.php,v 1.1 2003/08/15 21:30:36 wkpark Exp $
  +// $Id: Icon.php,v 1.2 2004/08/24 16:53:25 wkpark Exp $
   function macro_Icon($formatter,$value='',$extra='') {
     global $DBInfo;
  +
  +  $realdir=basename($DBInfo->imgs_dir);
  +  $dir=strtok($value,'-');
  +  $img=strtok('');
  +  if (is_dir($realdir.'/'.$dir)) $value=$dir.'/'.$img;
   
     $out=$DBInfo->imgs_dir."/$value";
     $out="<img src='$out' border='0' alt='icon' align='middle' />";
  
  
  


wkpark      2004/08/25 01:54:43

  Modified:    .        wiki.php
  Log:
  change the directory structure of icons
  
  Revision  Changes    Path
  1.157     +30 -23    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.156
  retrieving revision 1.157
  diff -u -r1.156 -r1.157
  --- wiki.php	23 Aug 2004 16:26:01 -0000	1.156
  +++ wiki.php	24 Aug 2004 16:54:43 -0000	1.157
  @@ -11,14 +11,14 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.156 2004/08/23 16:26:01 wkpark Exp $
  +// $Id: wiki.php,v 1.157 2004/08/24 16:54:43 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.156 $',1,-1);
  +$_revision = substr('$Revision: 1.157 $',1,-1);
   $_release = '1.0.8';
   
   #ob_start("ob_gzhandler");
   
  -error_reporting(E_ALL & ~E_NOTICE);
  +error_reporting(E_ALL ^ E_NOTICE);
   #error_reporting(E_ALL);
   $Config=getConfig("config.php",array('init'=>1));
   include("wikilib.php");
  @@ -187,7 +187,8 @@
   <script language="JavaScript" type="text/javascript">
   <!--
   url_prefix="$prefix";
  -FrontPage="${sep}$DBInfo->frontpage";
  +_qp="$sep";
  +FrontPage= "$DBInfo->frontpage";
   //-->
   </script>
   <script type="text/javascript" src="$DBInfo->kbd_script">
  @@ -524,26 +525,32 @@
       if (empty($this->icon)) {
       $iconset=$this->iconset;
       $imgdir=$this->imgs_dir;
  -    $this->icon['upper']="<img src='$imgdir/$iconset-upper.gif' alt='U' align='middle' border='0' />";
  -    $this->icon['edit']="<img src='$imgdir/$iconset-edit.gif' alt='E' align='middle' border='0' />";
  -    $this->icon['diff']="<img src='$imgdir/$iconset-diff.gif' alt='D' align='middle' border='0' />";
  -    $this->icon['del']="<img src='$imgdir/$iconset-deleted.gif' alt='(del)' align='middle' border='0' />";
  -    $this->icon['info']="<img src='$imgdir/$iconset-info.gif' alt='I' align='middle' border='0' />";
  -    $this->icon['rss']="<img src='$imgdir/$iconset-rss.gif' alt='RSS' align='middle' border='0' />";
  -    $this->icon['show']="<img src='$imgdir/$iconset-show.gif' alt='R' align='middle' border='0' />";
  -    $this->icon['find']="<img src='$imgdir/$iconset-search.gif' alt='S' align='middle' border='0' />";
  -    $this->icon['help']="<img src='$imgdir/$iconset-help.gif' alt='H' align='middle' border='0' />";
  -    $this->icon['www']="<img src='$imgdir/$iconset-www.gif' alt='www' align='middle' border='0' />";
  -    $this->icon['mailto']="<img src='$imgdir/$iconset-email.gif' alt='M' align='middle' border='0' />";
  -    $this->icon['create']="<img src='$imgdir/$iconset-create.gif' alt='N' align='middle' border='0' />";
  -    $this->icon['new']="<img src='$imgdir/$iconset-new.gif' alt='U' align='middle' border='0' />";
  -    $this->icon['updated']="<img src='$imgdir/$iconset-updated.gif' alt='U' align='middle' border='0' />";
  +    $ext='png';
  +    $realdir=basename($imgdir);
  +    if (is_dir($realdir.'/'.$iconset)) $iconset.='/';
  +    else $iconset.='-';
  +    if (!file_exists($realdir.'/'.$iconset.'home.png')) $ext='gif';
  +
  +    $this->icon['upper']="<img src='$imgdir/${iconset}upper.$ext' alt='U' align='middle' border='0' />";
  +    $this->icon['edit']="<img src='$imgdir/${iconset}edit.$ext' alt='E' align='middle' border='0' />";
  +    $this->icon['diff']="<img src='$imgdir/${iconset}diff.$ext' alt='D' align='middle' border='0' />";
  +    $this->icon['del']="<img src='$imgdir/${iconset}deleted.$ext' alt='(del)' align='middle' border='0' />";
  +    $this->icon['info']="<img src='$imgdir/${iconset}info.$ext' alt='I' align='middle' border='0' />";
  +    $this->icon['rss']="<img src='$imgdir/${iconset}rss.$ext' alt='RSS' align='middle' border='0' />";
  +    $this->icon['show']="<img src='$imgdir/${iconset}show.$ext' alt='R' align='middle' border='0' />";
  +    $this->icon['find']="<img src='$imgdir/${iconset}search.$ext' alt='S' align='middle' border='0' />";
  +    $this->icon['help']="<img src='$imgdir/${iconset}help.$ext' alt='H' align='middle' border='0' />";
  +    $this->icon['www']="<img src='$imgdir/${iconset}www.$ext' alt='www' align='middle' border='0' />";
  +    $this->icon['mailto']="<img src='$imgdir/${iconset}email.$ext' alt='M' align='middle' border='0' />";
  +    $this->icon['create']="<img src='$imgdir/${iconset}create.$ext' alt='N' align='middle' border='0' />";
  +    $this->icon['new']="<img src='$imgdir/${iconset}new.$ext' alt='U' align='middle' border='0' />";
  +    $this->icon['updated']="<img src='$imgdir/${iconset}updated.$ext' alt='U' align='middle' border='0' />";
       $this->icon['user']="UserPreferences";
  -    $this->icon['home']="<img src='$imgdir/$iconset-home.gif' alt='M' align='middle' border='0' />";
  -    $this->icon['main']="<img src='$imgdir/$iconset-main.gif' alt='^' align='middle' border='0' />";
  -    $this->icon['print']="<img src='$imgdir/$iconset-print.gif' alt='P' align='middle' border='0' />";
  -    $this->icon['attach']="<img src='$imgdir/$iconset-attach.gif' alt='@' align='middle' border='0' />";
  -    $this->icon['external']="<img src='$imgdir/$iconset-external.gif' alt='[]' align='middle' border='0' />";
  +    $this->icon['home']="<img src='$imgdir/${iconset}home.$ext' alt='M' align='middle' border='0' />";
  +    $this->icon['main']="<img src='$imgdir/${iconset}main.$ext' alt='^' align='middle' border='0' />";
  +    $this->icon['print']="<img src='$imgdir/${iconset}print.$ext' alt='P' align='middle' border='0' />";
  +    $this->icon['attach']="<img src='$imgdir/${iconset}attach.$ext' alt='@' align='middle' border='0' />";
  +    $this->icon['external']="<img src='$imgdir/${iconset}external.$ext' alt='[]' align='middle' border='0' />";
       $this->icon_sep=" ";
       $this->icon_bra=" ";
       $this->icon_cat=" ";
  
  
  


wkpark      2004/08/25 02:13:23

  Modified:    .        wiki.php
  Log:
  don't eat leading spaces with table rendering
  
  Revision  Changes    Path
  1.158     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.157
  retrieving revision 1.158
  diff -u -r1.157 -r1.158
  --- wiki.php	24 Aug 2004 16:54:43 -0000	1.157
  +++ wiki.php	24 Aug 2004 17:13:18 -0000	1.158
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.157 2004/08/24 16:54:43 wkpark Exp $
  +// $Id: wiki.php,v 1.158 2004/08/24 17:13:18 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.157 $',1,-1);
  +$_revision = substr('$Revision: 1.158 $',1,-1);
   $_release = '1.0.8';
   
   #ob_start("ob_gzhandler");
  @@ -2175,8 +2175,8 @@
            $in_table=0;
         }
         if ($in_table) {
  -         $line=preg_replace('/^((?:\|\|)+(&lt;[^>]+>)?)(\s?)(.*)\|\|$/e',"'<tr class=\"wiki\"><td class=\"wiki\"'.\$this->_table_span('\\1','\\3').'>\\4</td></tr>'",$line);
  -         $line=preg_replace('/((\|\|)+(&lt;[^>]+>)?)(\s?)/e',"'</td><td class=\"wiki\"'.\$this->_table_span('\\1','\\4').'>'",$line);
  +         $line=preg_replace('/^((?:\|\|)+(&lt;[^>]+>)?)((\s?)(.*))\|\|$/e',"'<tr class=\"wiki\"><td class=\"wiki\"'.\$this->_table_span('\\1','\\4').'>\\3</td></tr>'",$line);
  +         $line=preg_replace('/((\|\|)+(&lt;[^>]+>)?)(\s?)/e',"'</td><td class=\"wiki\"'.\$this->_table_span('\\1','\\4').'>\\4'",$line);
            $line=str_replace('\"','"',$line); # revert \\" to \"
         }
   
  
  
  


wkpark      2004/08/25 02:18:48

  Modified:    .        wikilib.php
  Log:
  fixed get_title() related with #300474
  
  Revision  Changes    Path
  1.109     +6 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.108
  retrieving revision 1.109
  diff -u -r1.108 -r1.109
  --- wikilib.php	16 Aug 2004 16:42:54 -0000	1.108
  +++ wikilib.php	24 Aug 2004 17:18:47 -0000	1.109
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.108 2004/08/16 16:42:54 wkpark Exp $
  +// $Id: wikilib.php,v 1.109 2004/08/24 17:18:47 wkpark Exp $
   
   function find_needle($body,$needle,$count=0) {
     if (!$body) return '';
  @@ -38,10 +38,12 @@
     if ($DBInfo->use_titlecache) {
       $cache=new Cache_text('title');
       if ($cache->exists($page)) $title=$cache->fetch($page);
  +    else $title=$page;
     } else
       $title=$page;
   
  -  return preg_replace("/((?<=[a-z0-9]|[B-Z]{2}|A)([A-Z][a-z]|A))/"," \\1",$title);
  +  #return preg_replace("/((?<=[a-z0-9]|[B-Z]{2}|A)([A-Z][a-z]|A))/"," \\1",$title);
  +  return preg_replace("/((?<=[a-z0-9]|[B-Z]{2})([A-Z][a-z]))/"," \\1",$title);
   }
   
   function getTicket($seed) {
  @@ -321,6 +323,7 @@
     $formatter->send_title("","",$options);
   
     $expr= stripslashes($options['value']);
  +#  $expr= implode('|',preg_split('/\s+/',$expr));
   
     $formatter->highlight=$expr;
     $formatter->send_page();
  @@ -1375,6 +1378,7 @@
   
   function macro_FootNote($formatter,$value="") {
     if (!$value) {# emit all footnotes
  +    if (!$formatter->foots) return '';
       $foots=join("\n",$formatter->foots);
       $foots=preg_replace("/(".$formatter->wordrule.")/e","\$formatter->link_repl('\\1')",$foots);
       unset($formatter->foots);
  
  
  


wkpark      2004/08/25 02:27:05

  Modified:    .        wiki.php
  Log:
  fixed #300474: show the #title correctly in the <title> tag.
  
  Revision  Changes    Path
  1.159     +7 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.158
  retrieving revision 1.159
  diff -u -r1.158 -r1.159
  --- wiki.php	24 Aug 2004 17:13:18 -0000	1.158
  +++ wiki.php	24 Aug 2004 17:27:05 -0000	1.159
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.158 2004/08/24 17:13:18 wkpark Exp $
  +// $Id: wiki.php,v 1.159 2004/08/24 17:27:05 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.158 $',1,-1);
  +$_revision = substr('$Revision: 1.159 $',1,-1);
   $_release = '1.0.8';
   
   #ob_start("ob_gzhandler");
  @@ -2627,7 +2627,10 @@
           $keywords="<meta name=\"keywords\" content=\"$keywords\" />";
         }
   
  -      if (empty($options['title'])) $options['title']=$this->page->title;
  +      if (empty($options['title'])) {
  +        $options['title']=$this->pi['#title'] ? $this->pi['#title']:
  +          $this->page->title;
  +      }
         if (empty($options['css_url'])) $options['css_url']=$DBInfo->css_url;
         print <<<EOS
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  @@ -2637,7 +2640,7 @@
     $DBInfo->metatags
     $keywords
   EOS;
  -      print "  <title>$DBInfo->sitename: ".$this->page->title."</title>\n";
  +      print "  <title>$DBInfo->sitename: ".$options['title']."</title>\n";
         if ($upper)
           print '  <link rel="Up" href="'.$this->link_url($upper)."\" />\n";
         $raw_url=$this->link_url($this->page->urlname,"?action=raw");
  
  
  


wkpark      2004/08/25 02:34:45

  Modified:    plugin   Vote.php
  Log:
  fixed icon path
  
  Revision  Changes    Path
  1.8       +5 -4      moniwiki/plugin/Vote.php
  
  Index: Vote.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Vote.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Vote.php	27 Nov 2003 06:24:24 -0000	1.7
  +++ Vote.php	24 Aug 2004 17:34:44 -0000	1.8
  @@ -6,12 +6,13 @@
   //
   // Usage: [[Vote(Hello 10, World 20,Wow 1)]]
   //
  -// $Id: Vote.php,v 1.7 2003/11/27 06:24:24 wkpark Exp $
  +// $Id: Vote.php,v 1.8 2004/08/24 17:34:44 wkpark Exp $
   
   function macro_Vote($formatter,$value) {
     global $DBInfo;
   
     $imgdir=$DBInfo->imgs_dir;
  +  $iconset='red';
   
     $md5=md5($value);
     $temps=explode(",",$value);
  @@ -27,8 +28,8 @@
       $total+=$match[2];
     }
   
  -  $bra_bar="<img src='$imgdir/leftbar.gif'>";
  -  $cat_bar="<img src='$imgdir/rightbar.gif'>";
  +  $bra_bar="<img src='$imgdir/vote/$iconset/leftbar.gif'>";
  +  $cat_bar="<img src='$imgdir/vote/$iconset/rightbar.gif'>";
   
     $out='';
     if (!$vote_off)
  @@ -41,7 +42,7 @@
       $bar_width=intval($ratio);
   
       $bar=$bra_bar.
  -         "<img width='$bar_width' height='14' src='$imgdir/mainbar.gif'>".
  +         "<img width='$bar_width' height='14' src='$imgdir/vote/$iconset/mainbar.gif'>".
            $cat_bar;
       $md5=md5($item);
       $out.="<tr><td>$item </td><td nowrap='nowrap'>$bar</td><td>".
  
  
  


wkpark      2004/08/25 02:49:45

  Modified:    imgs     _htaccess http.png https.png
  Added:       imgs     fishloop.gif kdekorea-16.png
  Removed:     imgs     diff-7.gif edit-7.gif find-7.gif frown.gif
                        gentoo-16.png help-7.gif home-7.gif icon-error.gif
                        icon-info.gif info-7.gif leftArrow.gif leftbar.gif
                        mainbar.gif moin-deleted.gif moin-deleted0.gif
                        moin-diff.gif moin-edit.gif moin-email.gif
                        moin-ftp.gif moin-help.gif moin-home.gif
                        moin-info.gif moin-inter.gif moin-new.gif
                        moin-news.gif moin-print.gif moin-rss.gif
                        moin-search.gif moin-show.gif moin-telnet.gif
                        moin-updated.gif moin-upper.gif moin-www.gif
                        moin-xml.gif moni-attach.gif moni-create.gif
                        moni-deleted.gif moni-diff.gif moni-edit.gif
                        moni-email.gif moni-external.gif moni-ftp.gif
                        moni-help.gif moni-home.gif moni-home0.gif
                        moni-info.gif moni-inter.gif moni-main.gif
                        moni-new.gif moni-print.gif moni-rss.gif
                        moni-search.gif moni-show.gif moni-updated.gif
                        moni-upper.gif moni-www.gif moni-xml.gif
                        moni-xml0.gif moniwiki-16.gif moniwiki-powerd.png
                        moniwiki.gif red_b.png rightbar.gif rss.gif rss.png
                        show-7.gif stock_new-16.png topArrow.gif
  Log:
  cleanup and rename img files
  
  Revision  Changes    Path
  1.2       +2 -1      moniwiki/imgs/_htaccess
  
  Index: _htaccess
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/imgs/_htaccess,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- _htaccess	30 Dec 2003 23:31:05 -0000	1.1
  +++ _htaccess	24 Aug 2004 17:49:42 -0000	1.2
  @@ -1 +1,2 @@
  -ErrorDocument 404 /wiki/imgs/moni-inter.gif
  +ErrorDocument 404 /wiki/imgs/moni/inter.gif
  +#ErrorDocument 404 /wiki/imgs/moni/inter.gif
  
  
  
  1.2       +1 -1      moniwiki/imgs/http.png
  
  	<<Binary file>>
  
  
  1.2       +1 -1      moniwiki/imgs/https.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/fishloop.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/kdekorea-16.png
  
  	<<Binary file>>
  
  


wkpark      2004/08/25 02:50:05

  moniwiki/imgs/moni - New directory

wkpark      2004/08/25 02:51:14

  moniwiki/imgs/moni2 - New directory

wkpark      2004/08/25 02:52:18

  moniwiki/imgs/moin - New directory

wkpark      2004/08/25 02:53:03

  Added:       imgs/moin deleted.gif diff.gif edit.gif email.gif ftp.gif
                        help.gif home.gif info.gif inter.gif new.gif
                        news.gif print.gif rss.gif search.gif show.gif
                        telnet.gif updated.gif upper.gif www.gif xml.gif
  Log:
  renamed
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/moin/deleted.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moin/diff.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moin/edit.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moin/email.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moin/ftp.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moin/help.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moin/home.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moin/info.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moin/inter.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moin/new.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moin/news.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moin/print.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moin/rss.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moin/search.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moin/show.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moin/telnet.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moin/updated.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moin/upper.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moin/www.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moin/xml.gif
  
  	<<Binary file>>
  
  


wkpark      2004/08/25 02:53:06

  Added:       imgs/moni attach.png create.png deleted.png diff.png
                        edit.png email.png external.png ftp.png help.png
                        home.png info.png inter.png main.png new.png
                        print.png rss.png search.png show.png updated.png
                        upper.png www.png xml.png
  Log:
  renamed
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/moni/attach.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni/create.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni/deleted.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni/diff.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni/edit.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni/email.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni/external.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni/ftp.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni/help.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni/home.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni/info.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni/inter.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni/main.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni/new.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni/print.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni/rss.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni/search.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni/show.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni/updated.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni/upper.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni/www.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni/xml.png
  
  	<<Binary file>>
  
  


wkpark      2004/08/25 02:53:09

  Added:       imgs/moni2 attach.png create.png deleted.png diff.png
                        edit.png email.png external.png help.png home.png
                        info.png main.png new.png print.png rss.png
                        search.png show.png updated.png upper.png
  Log:
  renamed
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/moni2/attach.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni2/create.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni2/deleted.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni2/diff.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni2/edit.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni2/email.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni2/external.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni2/help.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni2/home.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni2/info.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni2/main.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni2/new.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni2/print.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni2/rss.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni2/search.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni2/show.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni2/updated.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni2/upper.png
  
  	<<Binary file>>
  
  


wkpark      2004/08/25 02:54:00

  Added:       imgs     moniwiki-powered.png
  Log:
  renamed
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/moniwiki-powered.png
  
  	<<Binary file>>
  
  


wkpark      2004/08/25 02:54:46

  Modified:    .        wiki.php
  Log:
  fix typo
  
  Revision  Changes    Path
  1.160     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.159
  retrieving revision 1.160
  diff -u -r1.159 -r1.160
  --- wiki.php	24 Aug 2004 17:27:05 -0000	1.159
  +++ wiki.php	24 Aug 2004 17:54:46 -0000	1.160
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.159 2004/08/24 17:27:05 wkpark Exp $
  +// $Id: wiki.php,v 1.160 2004/08/24 17:54:46 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.159 $',1,-1);
  +$_revision = substr('$Revision: 1.160 $',1,-1);
   $_release = '1.0.8';
   
   #ob_start("ob_gzhandler");
  @@ -2806,10 +2806,10 @@
     alt="Valid CSS!" /></a>
   
    <a href="http://moniwiki.sourceforge.net/"><img
  -  src="$this->imgs_dir/moniwiki-powerd.png" 
  +  src="$this->imgs_dir/moniwiki-powered.png" 
     border="0" width="88" height="31"
     align="middle"
  -  alt="powerd by MoniWiki" /></a>
  +  alt="powered by MoniWiki" /></a>
   FOOT;
   
       if ($options['timer']) {
  
  
  


wkpark      2004/08/25 02:55:44

  moniwiki/imgs/vote/red - New directory

wkpark      2004/08/25 02:56:07

  Added:       imgs/vote/red leftbar.gif mainbar.gif rightbar.gif
  Log:
  renamed
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/vote/red/leftbar.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/vote/red/mainbar.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/vote/red/rightbar.gif
  
  	<<Binary file>>
  
  


wkpark      2004/08/25 03:19:12

  moniwiki/imgs/interwiki - New directory

wkpark      2004/08/25 03:21:09

  Modified:    imgs     _htaccess
  Removed:     imgs     acronym-16.png alert.gif alert.png amazon-16.png
                        andstuff-16.png attention.gif blogdex-16.png
                        book_open-16.png brights-16.png bsdkorea-16.png
                        bugzilla-16.png checkbox.png checkmark.gif
                        da-16.png de-16.png empas-16.png en-16.png
                        es-16.png fi-16.png foaf-16.png foldoc-16.png
                        foxwiki-16.png fr-16.png freefeel-16.png
                        freshmeat-16.png gentookorea-16.png gnome-16.png
                        gnome2-16.png gnomekorea-16.png gnu-16.png
                        google-16.png gtkref-16.png icon-error.png
                        icon-info.png icon-question.png idea.png
                        imdb-16.png isbn-16.png it-16.png ja-16.png
                        jangnan-16.png jargonfile-16.png joiwiki-16.png
                        kde-16.png kdekorea-16.png kldpwiki-16.png
                        kle-16.png ko-16.png ktug-16.png lovolnet-16.png
                        mailing-16.png mathworld-16.png meatball-16.png
                        metalink-16.png mizi-16.png moinmoin-16.png
                        moniwiki-16.png mozilla-16.png nl-16.png
                        nosmoke-16.png nsmk-16.png openwiki-16.png
                        origwiki-16.png php-16.png prio1.gif prio2.gif
                        prio3.gif pt-16.png python-16.png rdfweb-16.png
                        ru-16.png self-16.png sfreaders-16.png
                        sourceforge-16.png sv-16.png taeguk-16.png
                        twiki-16.png twinpages-16.png uploads-16.png
                        us-16.png usemod-16.png user-16.png wiki-16.png
                        wikipedia-16.png xper-16.png yahoo-16.png zh-16.png
                        zwiki-16.png
  Log:
  renamed
  
  Revision  Changes    Path
  1.3       +1 -1      moniwiki/imgs/_htaccess
  
  Index: _htaccess
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/imgs/_htaccess,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- _htaccess	24 Aug 2004 17:49:42 -0000	1.2
  +++ _htaccess	24 Aug 2004 18:21:09 -0000	1.3
  @@ -1,2 +1,2 @@
  -ErrorDocument 404 /wiki/imgs/moni/inter.gif
  +ErrorDocument 404 /wiki/imgs/moni/inter.png
   #ErrorDocument 404 /wiki/imgs/moni/inter.gif
  
  
  


wkpark      2004/08/25 03:21:22

  Added:       imgs/interwiki acronym-16.png amazon-16.png andstuff-16.png
                        blogdex-16.png book_open-16.png brights-16.png
                        bsdkorea-16.png bugzilla-16.png da-16.png de-16.png
                        empas-16.png en-16.png es-16.png fi-16.png
                        foaf-16.png foldoc-16.png foxwiki-16.png fr-16.png
                        freefeel-16.png freshmeat-16.png gentookorea-16.png
                        gnome-16.png gnome2-16.png gnomekorea-16.png
                        gnu-16.png google-16.png gtkref-16.png imdb-16.png
                        isbn-16.png it-16.png ja-16.png jangnan-16.png
                        jargonfile-16.png joiwiki-16.png kde-16.png
                        kdekorea-16.png kldpwiki-16.png kle-16.png
                        ko-16.png ktug-16.png lovolnet-16.png
                        mailing-16.png mathworld-16.png meatball-16.png
                        metalink-16.png mizi-16.png moinmoin-16.png
                        moniwiki-16.png mozilla-16.png nl-16.png
                        nosmoke-16.png nsmk-16.png openwiki-16.png
                        origwiki-16.png php-16.png pt-16.png python-16.png
                        rdfweb-16.png ru-16.png self-16.png
                        sfreaders-16.png sourceforge-16.png sv-16.png
                        taeguk-16.png twiki-16.png twinpages-16.png
                        uploads-16.png us-16.png usemod-16.png user-16.png
                        wiki-16.png wikipedia-16.png xper-16.png
                        yahoo-16.png zh-16.png zwiki-16.png
  Log:
  renamed
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/interwiki/acronym-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/amazon-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/andstuff-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/blogdex-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/book_open-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/brights-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/bsdkorea-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/bugzilla-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/da-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/de-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/empas-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/en-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/es-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/fi-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/foaf-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/foldoc-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/foxwiki-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/fr-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/freefeel-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/freshmeat-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/gentookorea-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/gnome-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/gnome2-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/gnomekorea-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/gnu-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/google-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/gtkref-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/imdb-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/isbn-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/it-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/ja-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/jangnan-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/jargonfile-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/joiwiki-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/kde-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/kdekorea-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/kldpwiki-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/kle-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/ko-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/ktug-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/lovolnet-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/mailing-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/mathworld-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/meatball-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/metalink-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/mizi-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/moinmoin-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/moniwiki-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/mozilla-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/nl-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/nosmoke-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/nsmk-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/openwiki-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/origwiki-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/php-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/pt-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/python-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/rdfweb-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/ru-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/self-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/sfreaders-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/sourceforge-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/sv-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/taeguk-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/twiki-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/twinpages-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/uploads-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/us-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/usemod-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/user-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/wiki-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/wikipedia-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/xper-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/yahoo-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/zh-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/zwiki-16.png
  
  	<<Binary file>>
  
  


wkpark      2004/08/25 03:21:24

  Added:       imgs/smile alert.gif alert.png attention.gif checkbox.png
                        checkmark.gif icon-error.png icon-info.png
                        icon-question.png idea.png prio1.gif prio2.gif
                        prio3.gif
  Log:
  renamed
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/smile/alert.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/alert.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/attention.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/checkbox.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/checkmark.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/icon-error.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/icon-info.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/icon-question.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/idea.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/prio1.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/prio2.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/prio3.gif
  
  	<<Binary file>>
  
  


wkpark      2004/08/25 03:22:32

  Removed:     imgs     blue_b.png idea.gif
  Log:
  rename & remove


wkpark      2004/08/25 03:24:57

  Modified:    .        wiki.php
  Log:
  fix the path of interwiki icons
  
  Revision  Changes    Path
  1.161     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.160
  retrieving revision 1.161
  diff -u -r1.160 -r1.161
  --- wiki.php	24 Aug 2004 17:54:46 -0000	1.160
  +++ wiki.php	24 Aug 2004 18:24:57 -0000	1.161
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.160 2004/08/24 17:54:46 wkpark Exp $
  +// $Id: wiki.php,v 1.161 2004/08/24 18:24:57 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.160 $',1,-1);
  +$_revision = substr('$Revision: 1.161 $',1,-1);
   $_release = '1.0.8';
   
   #ob_start("ob_gzhandler");
  @@ -1548,8 +1548,8 @@
       }
   
       $img="<a href='$url' target='wiki'><img border='0' src='$this->imgs_dir/".
  -         strtolower($wiki)."-16.png' align='middle' height='16' width='16' ".
  -         "alt='$wiki:' title='$wiki:' /></a>";
  +         "interwiki/".strtolower($wiki)."-16.png' align='middle' height='16' ".
  +         "width='16' alt='$wiki:' title='$wiki:' /></a>";
       #if (!$text) $text=str_replace("%20"," ",$page);
       if (!$text) $text=urldecode($page);
       else if (preg_match("/^(http|ftp).*\.(png|gif|jpeg|jpg)$/i",$text)) {
  
  
  


wkpark      2004/08/25 23:30:49

  Modified:    imgs     moniwiki-powered.png
  Log:
  fix type :p
  
  Revision  Changes    Path
  1.2       +11 -12    moniwiki/imgs/moniwiki-powered.png
  
  	<<Binary file>>
  
  


wkpark      2004/08/26 00:08:53

  moniwiki/imgs/plugin - New directory

wkpark      2004/08/26 00:13:41

  Removed:     imgs     fishloop.gif moztab.png
  Log:
  rename


wkpark      2004/08/26 00:13:42

  Added:       imgs/plugin babelfish.gif moztab.png
  Log:
  rename
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/plugin/babelfish.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/moztab.png
  
  	<<Binary file>>
  
  


wkpark      2004/08/26 00:17:41

  Modified:    plugin   BabelFish.php moztab.php
  Log:
  change the path of plugin's images
  
  Revision  Changes    Path
  1.6       +2 -2      moniwiki/plugin/BabelFish.php
  
  Index: BabelFish.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BabelFish.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- BabelFish.php	23 Aug 2004 19:32:26 -0000	1.5
  +++ BabelFish.php	25 Aug 2004 15:17:35 -0000	1.6
  @@ -5,7 +5,7 @@
   //
   // Usage: [[BabelFish]]
   //
  -// $Id: BabelFish.php,v 1.5 2004/08/23 19:32:26 iolo Exp $
  +// $Id: BabelFish.php,v 1.6 2004/08/25 15:17:35 wkpark Exp $
   
   #<script language="JavaScript1.2" src="http://www.altavista.com/r?entr"></script>
   function macro_BabelFish($formatter,$value,$ret=array()) {
  @@ -45,7 +45,7 @@
     }
     $goto=$TR.'&amp;url='.$URL;
     return <<<EOF
  -<img src='$formatter->imgs_dir/$from-16.png' alt='$from' /> <a href="$goto"><img border='0' src='$formatter->imgs_dir/fishloop.gif' title='$msg' alt='BabelFish@altavista' /></a><img src='$formatter->imgs_dir/$to-16.png' alt='$to' />
  +<img src='$formatter->imgs_dir_interwiki$from-16.png' /> <a href="$goto"><img border='0' src='$formatter->imgs_dir/plugin/babelfish.gif' title='$msg' alt='BabelFish@altavista' /></a><img src='$formatter->imgs_dir_interwiki$to-16.png' />
   EOF;
   
   }
  
  
  
  1.3       +3 -3      moniwiki/plugin/moztab.php
  
  Index: moztab.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/moztab.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- moztab.php	15 Aug 2003 21:30:36 -0000	1.2
  +++ moztab.php	25 Aug 2004 15:17:35 -0000	1.3
  @@ -5,8 +5,8 @@
   //
   // Usage: [[moztab]]
   //
  -// $Id: moztab.php,v 1.2 2003/08/15 21:30:36 wkpark Exp $
  -// vim:et:ts=2:
  +// $Id: moztab.php,v 1.3 2004/08/25 15:17:35 wkpark Exp $
  +// vim:et:sts=2:
   
   function macro_MozTab($formatter,$value) {
     global $DBInfo;
  @@ -27,7 +27,7 @@
       }
   //-->
   </script>
  -<a href="javascript:selfside();"><img src="$DBInfo->imgs_dir/moztab.png" border=0 title="add mozilla tab"></a>
  +<a href="javascript:selfside();"><img src="$DBInfo->imgs_dir/plugin/moztab.png" border=0 title="add mozilla tab"></a>
   TAB;
     return $tab;
   }
  
  
  


wkpark      2004/08/26 00:27:47

  Modified:    .        wiki.php
  Log:
  fix image path related problem for lower version compatiblity
  bump up version to 1.0.9
  
  Revision  Changes    Path
  1.162     +25 -11    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.161
  retrieving revision 1.162
  diff -u -r1.161 -r1.162
  --- wiki.php	24 Aug 2004 18:24:57 -0000	1.161
  +++ wiki.php	25 Aug 2004 15:27:46 -0000	1.162
  @@ -11,10 +11,10 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.161 2004/08/24 18:24:57 wkpark Exp $
  +// $Id: wiki.php,v 1.162 2004/08/25 15:27:46 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.161 $',1,-1);
  -$_release = '1.0.8';
  +$_revision = substr('$Revision: 1.162 $',1,-1);
  +$_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
   
  @@ -502,7 +502,6 @@
       $this->processors=array();
   
       $this->purple_icon='#';
  -#    $this->security_class="needtologin";
   
       # set user-specified configuration
       if ($config) {
  @@ -522,14 +521,26 @@
         $this->menu_sep="|";
       }
   
  +    // for lower version compatibility
  +    $this->imgs_dir_url=$this->imgs_dir.'/';
  +    $this->imgs_dir_interwiki=$this->imgs_dir.'/';
  +
  +    $imgs_realdir=basename($this->imgs_dir);
  +    if (file_exists($imgs_realdir.'/interwiki/'.'moniwiki-16.png'))
  +      $this->imgs_dir_interwiki=$this->imgs_dir.'/interwiki/';
  +
       if (empty($this->icon)) {
       $iconset=$this->iconset;
       $imgdir=$this->imgs_dir;
  +
  +    // for lower version compatibility
       $ext='png';
  -    $realdir=basename($imgdir);
  -    if (is_dir($realdir.'/'.$iconset)) $iconset.='/';
  +    if (is_dir($imgs_realdir.'/'.$iconset)) $iconset.='/';
       else $iconset.='-';
  -    if (!file_exists($realdir.'/'.$iconset.'home.png')) $ext='gif';
  +    if (!file_exists($imgs_realdir.'/'.$iconset.'home.png')) $ext='gif';
  +
  +    if (file_exists($imgs_realdir.'/'.$iconset.'http.png'))
  +      $this->imgs_dir_url=$this->imgs_dir.'/'.$iconset;
   
       $this->icon['upper']="<img src='$imgdir/${iconset}upper.$ext' alt='U' align='middle' border='0' />";
       $this->icon['edit']="<img src='$imgdir/${iconset}edit.$ext' alt='E' align='middle' border='0' />";
  @@ -1186,6 +1197,8 @@
       $this->prefix= get_scriptname();
       $this->url_prefix= $DBInfo->url_prefix;
       $this->imgs_dir= $DBInfo->imgs_dir;
  +    $this->imgs_dir_interwiki=$DBInfo->imgs_dir_interwiki;
  +    $this->imgs_dir_url=$DBInfo->imgs_dir_url;
       $this->actions= $DBInfo->actions;
       $this->inline_latex= $DBInfo->inline_latex;
   
  @@ -1483,8 +1496,8 @@
             if ($this->external_on)
               $external_link='<span class="externalLink">('.$url.')</span>';
           }
  -        list($icon,$dummy)=explode(":",$url,2);
  -        return "<img align='middle' alt='[$icon]' src='".$this->imgs_dir."/$icon.png' />". "<a class='externalLink' $attr $this->ex_target href='$link'>$text</a>".$external_icon.$external_link;
  +        $icon=strtok($url,':');
  +        return "<img align='middle' alt='[$icon]' src='".$this->imgs_dir_url."$icon.png' />". "<a class='externalLink' $attr $this->ex_target href='$link'>$text</a>".$external_icon.$external_link;
         } # have no space
         $link=str_replace('&','&amp;',$url);
         if (preg_match("/^(http|https|ftp)/",$url)) {
  @@ -1547,8 +1560,9 @@
         $url=str_replace('$PAGE',$page_only,$url).$query;
       }
   
  -    $img="<a href='$url' target='wiki'><img border='0' src='$this->imgs_dir/".
  -         "interwiki/".strtolower($wiki)."-16.png' align='middle' height='16' ".
  +    $img="<a href='$url' target='wiki'>".
  +         "<img border='0' src='$this->imgs_dir_interwiki".
  +         strtolower($wiki)."-16.png' align='middle' height='16' ".
            "width='16' alt='$wiki:' title='$wiki:' /></a>";
       #if (!$text) $text=str_replace("%20"," ",$page);
       if (!$text) $text=urldecode($page);
  
  
  


wkpark      2004/08/26 00:41:38

  Modified:    plugin   BlogCategories.php
  Log:
  change the path of a icon
  
  Revision  Changes    Path
  1.7       +2 -2      moniwiki/plugin/BlogCategories.php
  
  Index: BlogCategories.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogCategories.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- BlogCategories.php	23 Aug 2004 19:32:26 -0000	1.6
  +++ BlogCategories.php	25 Aug 2004 15:41:38 -0000	1.7
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogCategory macro plugin for the MoniWiki
   //
  -// $Id: BlogCategories.php,v 1.6 2004/08/23 19:32:26 iolo Exp $
  +// $Id: BlogCategories.php,v 1.7 2004/08/25 15:41:38 wkpark Exp $
   
   function macro_BlogCategories($formatter,$value='') {
     global $DBInfo;
  @@ -31,7 +31,7 @@
         $lnk=str_replace('CATEGORY',$category,$link);
         if (!$no_rss)
           $rss='&nbsp;<a href="'.str_replace('blogchanges','blogrss',$lnk).'">'.
  -          '<img src="'.$DBInfo->imgs_dir.'/tiny-xml.gif'.'" border="0" alt="xml" /></a>';
  +          '<img src="'.$DBInfo->imgs_dir.'/plugin/tiny-xml.png'.'" border="0" alt="xml" /></a>';
         $dep=str_replace(' ','&nbsp;&nbsp;',$match[1]);
         $out.="$dep<a href='$lnk'>$text/</a>$rss<br/>";
       }
  
  
  


wkpark      2004/08/26 00:42:20

  Added:       imgs/plugin tiny-xml.png
  Log:
  add a image for the BlogCategories plugin
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/plugin/tiny-xml.png
  
  	<<Binary file>>
  
  


wkpark      2004/08/26 02:04:17

  Modified:    .        wiki.php
  Log:
  fix for global installation: search locale paths
  
  Revision  Changes    Path
  1.163     +15 -10    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.162
  retrieving revision 1.163
  diff -u -r1.162 -r1.163
  --- wiki.php	25 Aug 2004 15:27:46 -0000	1.162
  +++ wiki.php	25 Aug 2004 17:04:15 -0000	1.163
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.162 2004/08/25 15:27:46 wkpark Exp $
  +// $Id: wiki.php,v 1.163 2004/08/25 17:04:15 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.162 $',1,-1);
  +$_revision = substr('$Revision: 1.163 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -3150,16 +3150,21 @@
   $lang= set_locale($DBInfo->lang,$DBInfo->charset);
   
   if (isset($locale)) {
  -  $lf="locale/".$lang."/LC_MESSAGES/moniwiki.php";
  -  if (!file_exists($lf)) {
  -    $lang=substr($lang,0,2);
  -    $lf="locale/".$lang."/LC_MESSAGES/moniwiki.php";
  -  }
  -  if (file_exists($lf)) include_once($lf);
  +  @include_once('locale/'.$lang.'/LC_MESSAGES/moniwiki.php') or
  +    @include_once('locale/'.substr($lang,0,2).'/LC_MESSAGES/moniwiki.php');
   } else if (substr($lang,0,2) != 'en') {
  +  if ($DBInfo->include_path) $dirs=explode(':',$DBInfo->include_path);
  +  else $dirs=array('.');
  +
     $test=setlocale(LC_ALL, $lang);
  -  bindtextdomain("moniwiki", "locale");
  -  textdomain("moniwiki");
  +  foreach ($dirs as $dir) {
  +    $ldir=$dir.'/locale';
  +    if (is_dir($ldir)) {
  +      bindtextdomain('moniwiki', $ldir);
  +      textdomain("moniwiki");
  +      break;
  +    }
  +  }
   }
   
   $pagename=get_pagename();
  
  
  


wkpark      2004/08/26 19:23:54

  Modified:    .        monisetup.php
  Log:
  fix for global installation
  make imgs/.htaccess
  
  Revision  Changes    Path
  1.15      +18 -5     moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- monisetup.php	24 Aug 2004 12:07:42 -0000	1.14
  +++ monisetup.php	26 Aug 2004 10:23:54 -0000	1.15
  @@ -1,7 +1,7 @@
   <?
   // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.14 2004/08/24 12:07:42 wkpark Exp $
  +// $Id: monisetup.php,v 1.15 2004/08/26 10:23:54 wkpark Exp $
   
   class MoniConfig {
     function MoniConfig($configfile="config.php") {
  @@ -131,7 +131,9 @@
        print "<pre class='console'>\n<font color='green'>$</font> chmod <b>777</b> $dir/data/ $dir\n</pre>\n";
        print "If you want a more safe wiki, try to change the permission of directories with <font color='red'>2777(setgid).</font>\n";
        print "<pre class='console'>\n<font color='green'>$</font> chmod <b>2777</b> $dir/data/ $dir\n</pre>\n";
  -     print "After execute one of above two commands, just <a href='monisetup.php'>reload this monisetup.php</a> would make a new initial config.php with detected parameters for your wiki.\n<br/>";
  +     print "or use <tt>monisetup.sh</tt> and select 777 or <font color='red'>2777</font>";
  +     print "<pre class='console'>\n<font color='green'>$</font> sh monisetup.sh</pre>\n";
  +     print "After execute one of above two commands, just <a href='monisetup.php'>reload this <tt>monisetup.php</tt></a> would make a new initial <tt>config.php</tt> with detected parameters for your wiki.\n<br/>";
        print "<h2><a href='monisetup.php'>Reload</a></h2>";
        exit;
     } else if (file_exists("config.php")) {
  @@ -171,6 +173,11 @@
                "<font color='green'>$</font> chmod a+w $config[$file]\n</pre>\n";
          }
       }
  +    if (is_dir('imgs') and !file_exists('imgs/.htaccess')) {
  +      $fp=fopen('imgs_htaccess','w');
  +      fwrite($fp,'ErrorDocument 404 '.$config['url_prefix'].'/imgs/moni/inter.png'."\n");
  +      fclose($fp);
  +    }
   
       $writables=array("upload_dir","editlog_name");
   
  @@ -294,7 +301,7 @@
         break;
       }
     }
  -  umask(000);
  +  umask(0133);
     print "<pre class='console'>\n";
     foreach($seeds as $seed) {
       $key=pagenameToKey($seed);
  @@ -444,7 +451,10 @@
     if ($action=='sow_seed' && $seeds) {
       sow_wikiseed($config,'wikiseed',$seeds);
       print "<h2>WikiSeeds are sowed successfully</h2>";
  -    print "<h2>goto <a href='wiki.php'>$config[sitename]</a></h2>";
  +    if (file_exists('wiki.php'))
  +      print "<h2>goto <a href='wiki.php'>$config[sitename]</a></h2>";
  +    else
  +      print "<h2>goto <a href='".$config[url_prefix]."'>$config[sitename]</a></h2>";
       exit;
     } else if ($action=='sow_seed' && !$seeds) {
       print "<h2><font color='red'>No WikiSeeds are selected</font></h2>";
  @@ -505,7 +515,10 @@
       print "<h3><font color='red'>WARN: You have no WikiSeed on your $config[sitename]</font></h3>\n";
       print "<h2>If you want to put wikiseeds on your wiki <a href='?action=seed'>Click here</a> now</h2>";
     } else {
  -    print "<h2>goto <a href='wiki.php'>$config[sitename]</a></h2>";
  +    if (file_exists('wiki.php'))
  +      print "<h2>goto <a href='wiki.php'>$config[sitename]</a></h2>";
  +    else
  +      print "<h2>goto <a href='".$config[url_prefix]."'>$config[sitename]</a></h2>";
     }
   }
   
  
  
  


wkpark      2004/08/26 19:25:08

  Removed:     imgs     _htaccess
  Log:
  removed


wkpark      2004/08/26 19:26:58

  Modified:    .        secure.sh
  Log:
  fix for imgs/.htaccess
  
  Revision  Changes    Path
  1.6       +3 -0      moniwiki/secure.sh
  
  Index: secure.sh
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/secure.sh,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- secure.sh	14 Aug 2004 00:41:51 -0000	1.5
  +++ secure.sh	26 Aug 2004 10:26:57 -0000	1.6
  @@ -1,5 +1,5 @@
   #!/bin/bash
  -# $Id: secure.sh,v 1.5 2004/08/14 00:41:51 wkpark Exp $
  +# $Id: secure.sh,v 1.6 2004/08/26 10:26:57 wkpark Exp $
   echo
   echo "+-------------------------------------+"
   echo "|    MoniWiki configuration script    |"
  @@ -14,6 +14,9 @@
       chmod 711 . data
       echo "*** chmod 644 config.php"
   fi
  +
  +[ -f imgs_htaccess ] && [ ! -f imgs/.htaccess ] &&
  +    cp imgs_htaccess imgs/.htaccess && rm imgs_htaccess
   
   echo ""
   echo "Your MoniWiki is now secure and cannot be configured."
  
  
  


wkpark      2004/08/26 19:34:54

  Modified:    .        monisetup.sh
  Log:
  fix for re-installation
  
  Revision  Changes    Path
  1.5       +14 -5     moniwiki/monisetup.sh
  
  Index: monisetup.sh
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.sh,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- monisetup.sh	30 Dec 2003 22:59:52 -0000	1.4
  +++ monisetup.sh	26 Aug 2004 10:34:54 -0000	1.5
  @@ -1,5 +1,5 @@
   #!/bin/bash
  -# $Id: monisetup.sh,v 1.4 2003/12/30 22:59:52 wkpark Exp $
  +# $Id: monisetup.sh,v 1.5 2004/08/26 10:34:54 wkpark Exp $
   
   echo
   echo "+-------------------------------------+"
  @@ -14,17 +14,26 @@
     if [ x$PERM = x ]; then
       PERM=777
     fi
  -  echo "*** chmod $PERM . data"
  -  chmod $PERM . data
  -  RETVAL=$?
  +
  +  if [ ! -f config.php ]; then
  +    echo "*** chmod $PERM . data"
  +    chmod $PERM . data
  +    RETVAL=$?
  +  else
  +    RETVAL=0
  +  fi
   done
   
   if [ ! -f config.php ]; then
     echo 'Please open monisetup.php on your browser'
     exit;
   else
  +  echo "*** chmod 777 config.php"
  +  chmod 777 config.php 2>/dev/null
  +  RETVAL=$?
  +  [ ! $RETVAL -eq 0 ] && cp config.php config.php.$$ && mv config.php.$$ config.php
  +  chmod 777 config.php
     ID=`id -u`
  -  PERM=777
     if [ $ID -eq 0 ]; then
       echo "*** You are the root user ***"
       PERM=755
  
  
  


wkpark      2004/08/26 19:37:23

  Modified:    .        wiki.php
  Log:
  update the google style colors
  support for black lists added
  
  Revision  Changes    Path
  1.164     +24 -9     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.163
  retrieving revision 1.164
  diff -u -r1.163 -r1.164
  --- wiki.php	25 Aug 2004 17:04:15 -0000	1.163
  +++ wiki.php	26 Aug 2004 10:37:23 -0000	1.164
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.163 2004/08/25 17:04:15 wkpark Exp $
  +// $Id: wiki.php,v 1.164 2004/08/26 10:37:23 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.163 $',1,-1);
  +$_revision = substr('$Revision: 1.164 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -1412,19 +1412,23 @@
     }
   
     function highlight_repl($val,$colref=array()) {
  -    static $color=array("style='background-color:#ff6;'",
  -                        "style='background-color:#aff;'",
  -                        "style='background-color:#0f3;'",
  -                        "style='background-color:#f99;'",
  -                        "style='background-color:#f9c;'",
  -                        "style='background-color:#c9f;'");
  +    static $color=array("style='background-color:#ffff99;'",
  +                        "style='background-color:#99ffff;'",
  +                        "style='background-color:#99ff99;'",
  +                        "style='background-color:#ff9999;'",
  +                        "style='background-color:#ff99ff;'",
  +                        "style='background-color:#9999ff;'",
  +                        "style='background-color:#999999;'",
  +                        "style='background-color:#886800;'",
  +                        "style='background-color:#004699;'",
  +                        "style='background-color:#990099;'");
       $val=str_replace("\\\"",'"',$val);
       if ($val[0]=="<") return $val;
   
       $key=strtolower($val);
   
       if (isset($colref[$key]))
  -      return "<strong ".($color[$colref[$key] % 5]).">$val</strong>";
  +      return "<strong ".($color[$colref[$key] % 10]).">$val</strong>";
       return "<strong class='highlight'>$val</strong>";
     }
   
  @@ -3205,6 +3209,17 @@
   
     $formatter = new Formatter($page,$options);
     $formatter->refresh=$refresh;
  +
  +  // check black list
  +  if ($DBInfo->blacklist) {
  +    include_once 'lib/checkip.php';
  +    if (check_ip($DBInfo->blacklist, $_SERVER['REMOTE_ADDR'])) {
  +      $options['title']=_("You are in the black list");
  +      $options['msg']=_("Please contact wikimasters");
  +      do_invalid($formatter,$options);
  +      return;
  +    }
  +  }
   
     if (!$action or $action=='show') {
       if ($value) { # ?value=Hello
  
  
  


wkpark      2004/08/26 19:40:00

  Modified:    lib      checkip.php
  Log:
  fix some CIDR related bug
  
  Revision  Changes    Path
  1.2       +15 -12    moniwiki/lib/checkip.php
  
  Index: checkip.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/checkip.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- checkip.php	25 Nov 2003 11:21:32 -0000	1.1
  +++ checkip.php	26 Aug 2004 10:40:00 -0000	1.2
  @@ -1,14 +1,16 @@
   <?php
  -// http://kr.php.net/ip2long/
  -// made by wkpark 2003/11/25
  +// Copyright 2003-2004 Won-Kyu Park <wkpark at kldp.org>
  +// All rights reserved. Distributable under GPL see COPYING
  +//
  +// See also http://kr.php.net/ip2long/
   // 
   
  -function is_valid($network)
  +function is_valid_network($network)
   {
  -    $nums = explode(".", $network);
  +    $nums = explode('.', $network);
       if (sizeof($nums) != 4)
           return false;
  -    if (!preg_match("/^(\d{1,3}\.){3}\d{1,3}$/", $network))
  +    if (!preg_match('/^(\d{1,3}\.){3}\d{1,3}$/', $network))
           return false;
       foreach ($nums as $num)
           if ($num > 255)
  @@ -17,29 +19,30 @@
   }
   
   function check_ip($rules,$ip) {
  -    if (!$rules or !$ip) return true; // do not ckeck
  +    if (!$rules or !$ip) return false; // do not ckeck
       $ip = ip2long($ip);
   
  -    $rules = explode(":",$rules);
  +    $rules = explode(':',$rules);
       foreach ($rules as $rule)
       {
  -        list($network,$netmask)=explode("/",$rule);
  -        if (!is_valid($network)) continue; // ignore error
  +        list($network,$netmask)=explode('/',$rule);
  +        if (!is_valid_network($network)) continue; // ignore error
   
           $network = ip2long($network);
   
           if ($netmask) {
               // echo "$ip ;$netmask; $network\n";
   
  -            if(is_valid($netmask))
  +            if(is_valid_network($netmask))
                   $netmask = ip2long($netmask);
               else if ($netmask >= 0 && $netmask <= 32)
  -                $netmask = (65535 << (32 - $netmask)) & 65535;
  +                $netmask = 0xffffffff << (32 - $netmask);
               else
                   continue; // ignore error
   
               // echo "$ip ;$netmask; $network\n";
  -
  +            // print long2ip($netmask);
  +            // echo sprintf("%u", ip2long($ip));
               if(($ip & $netmask) == ($network & $netmask))
                   return true;
           } else if ($ip == $network) {
  
  
  


wkpark      2004/08/26 19:42:02

  Modified:    .        config.php.default
  Log:
  add a $blacklist example
  
  Revision  Changes    Path
  1.12      +6 -2      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- config.php.default	20 Aug 2004 05:43:23 -0000	1.11
  +++ config.php.default	26 Aug 2004 10:42:01 -0000	1.12
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.11 2004/08/20 05:43:23 pyrasis Exp $
  +# $Id: config.php.default,v 1.12 2004/08/26 10:42:01 wkpark Exp $
   #
   $sitename='UnnamedWiki';
   $data_dir= './data';
  @@ -24,6 +24,7 @@
   $use_smileys= 1;
   #$smiley='wikismiley';
   $use_counter= 0;
  +$use_hostname= 1;
   $iconset= 'moni';
   $enable_latex=0;
   $lang='auto';
  @@ -45,6 +46,9 @@
   #$use_titlecache=0;
   #$security_class="needtologin";
   #$security_class="desktop";
  +#$security_class="wikimaster";
  +#$wikimasters=array('CsKim','SjPark');
  +#$owners=array('moniwiki','Hong');
   
   #$menu=array('MoniWiki'=>1,'FindPage'=>4,'TitleIndex'=>3,'BlogChanges'=>'','RecentChanges'=>2,'http://kldp.org KLDP'=>9);
   #$menu_sep='|';
  @@ -72,7 +76,6 @@
   #$goto_type=1;
   
   #$purple_icon='<img src="/wiki/imgs/egg.png" border="0" />';
  -#$use_titlecache=1;
   #$pagetype=array("KldpDsl"=>"plain","ManPage"=>"/man","DocbookSgml"=>"/jade","LinuxDoc"=>"/linuxdoc");
   #$default_dsssl='to_dir/kldp.dsl';
   
  @@ -84,4 +87,5 @@
   
   #$url_schemas='mms';
   #$vim_options='+"set encoding=utf-8"';
  +#$blacklist='127.0.0.0/24:192.168.1.0/24:192.168.1.67';
   ?>
  
  
  


wkpark      2004/08/26 21:55:33

  Modified:    plugin   FullSearch.php
  Log:
  support google like search options: e.g.) "hello world" -apple
  
  Revision  Changes    Path
  1.5       +48 -8     moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- FullSearch.php	20 Aug 2004 11:12:26 -0000	1.4
  +++ FullSearch.php	26 Aug 2004 12:55:33 -0000	1.5
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
   //
  -// $Id: FullSearch.php,v 1.4 2004/08/20 11:12:26 wkpark Exp $
  +// $Id: FullSearch.php,v 1.5 2004/08/26 12:55:33 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
  @@ -37,7 +37,8 @@
       $needle = $value = $formatter->page->name;
     } else {
       # for MoinMoin compatibility with [[FullSearch("blah blah")]]
  -    $needle = preg_replace("/^('|\")([^\\1]*)\\1/","\\2",$value);
  +    #$needle = preg_replace("/^('|\")([^\\1]*)\\1/","\\2",$value);
  +    $needle = $value;
     }
   
     $url=$formatter->link_url($formatter->page->urlname);
  @@ -62,11 +63,42 @@
     if ($opts['noexpr']) {
       $tmp=preg_split("/\s+/",$needle);
       $needle=$value=join('|',$tmp);
  +    $raw_needle=implode(' ',$tmp);
  +    $needle=_preg_search_escape($needle);
  +  } else {
  +    $needle=_preg_search_escape($needle);
  +    $terms = preg_split('/((?<!\S)[-+]?"[^"]+?"(?!\S)|\S+)/s',$needle,-1,
  +      PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);
  +
  +    $common_words=array('the','that','where','what','who','how','too','are');
  +    $excl = array();
  +    $incl = array();
  +    $common = array();
  +    foreach($terms as $term) {
  +      if (trim($term)=='') continue;
  +      if (preg_match('/^([-+]?)("?)([^\\2]+?)\\2$/',$term,$match)) {
  +        $word=str_replace(array('/','-','\\','.','*'),'',$match[3]);
  +        $len=strlen($word);
  +
  +        if (!$match[1] and $match[2] != '"') {
  +          if ($len <= 2 or in_array($word,$common_words)) {
  +            $common[]=$word;
  +            continue;
  +          }
  +        }
  +
  +        if ($match[1]=='-') $excl[] = $word;
  +        else $incl[] = $word;
  +      }
  +    }
  +    $needle=implode('|',$incl);
  +    $raw_needle=implode(' ',$incl);
  +    $excl_needle=implode('|',$excl);
     }
  -  $needle=_preg_search_escape($needle);
   
     $test=@preg_match("/$needle/","",$match);
  -  if ($test === false) {
  +  $test2=@preg_match("/$excl_needle/","",$match);
  +  if ($test === false or $test2 === false) {
        $opts['msg'] = sprintf(_("Invalid search expression \"%s\""), $needle);
        return $form;
     }
  @@ -74,7 +106,12 @@
     $hits = array();
     $pages = $DBInfo->getPageLists();
     $pattern = '/'.$needle.'/';
  -  if ($opts['case']) $pattern.="i";
  +  if ($excl_needle)
  +    $excl_pattern = '/'.$excl_needle.'/';
  +  if ($opts['case']) {
  +    $pattern.="i";
  +    $excl_pattern.="i";
  +  }
   
     if ($opts['backlinks']) {
        $opts['context']=0; # turn off context-matching
  @@ -100,9 +137,12 @@
          #$count = count(preg_split($pattern, $body))-1;
          $count = preg_match_all($pattern, $body,$matches);
          if ($count) {
  -         $hits[$page_name] = $count;
            # search matching contexts
  -         $contexts[$page_name] = find_needle($body,$needle,$opts['context']);
  +         $context= find_needle($body,$needle,$excl_needle,$opts['context']);
  +         if ($context) {
  +           $contexts[$page_name] = $context;
  +           $hits[$page_name] = $count;
  +         }
          }
        }
     }
  @@ -114,7 +154,7 @@
     while (list($page_name, $count) = each($hits)) {
       if ($opts['checkbox']) $checkbox="<input type='checkbox' name='pagenames[]' value='$page_name' />";
       $out.= '<li>'.$checkbox.$formatter->link_tag(_rawurlencode($page_name),
  -          "?action=highlight&amp;value="._urlencode($value),
  +          "?action=highlight&amp;value="._urlencode($needle),
             $page_name,"tabindex='$idx'");
       $out.= ' . . . . ' . $count . (($count == 1) ? ' match' : ' matches');
       $out.= $contexts[$page_name];
  
  
  


wkpark      2004/08/26 21:56:39

  Modified:    .        wikilib.php
  Log:
  fix find_needle() to support a 'exclude' arg
  
  Revision  Changes    Path
  1.110     +6 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.109
  retrieving revision 1.110
  diff -u -r1.109 -r1.110
  --- wikilib.php	24 Aug 2004 17:18:47 -0000	1.109
  +++ wikilib.php	26 Aug 2004 12:56:37 -0000	1.110
  @@ -11,13 +11,17 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.109 2004/08/24 17:18:47 wkpark Exp $
  +// $Id: wikilib.php,v 1.110 2004/08/26 12:56:37 wkpark Exp $
   
  -function find_needle($body,$needle,$count=0) {
  +function find_needle($body,$needle,$exclude='',$count=0) {
     if (!$body) return '';
     $lines=explode("\n",$body);
     $out="";
     $matches=preg_grep("/($needle)/i",$lines);
  +  if ($exclude) {
  +    $matches=preg_grep("/($exclude)/i",$matches,PREG_GREP_INVERT);
  +    if ($matches) return '';
  +  }
     if (count($matches) > $count) $matches=array_slice($matches,0,$count);
     foreach ($matches as $line) {
       $line=preg_replace("/($needle)/i","<strong>\\1</strong>",str_replace("<","&lt;",$line));
  
  
  


wkpark      2004/08/26 22:07:05

  Modified:    .        wikilib.php
  Log:
  fix last changes
  
  Revision  Changes    Path
  1.111     +4 -5      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.110
  retrieving revision 1.111
  diff -u -r1.110 -r1.111
  --- wikilib.php	26 Aug 2004 12:56:37 -0000	1.110
  +++ wikilib.php	26 Aug 2004 13:07:04 -0000	1.111
  @@ -11,17 +11,16 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.110 2004/08/26 12:56:37 wkpark Exp $
  +// $Id: wikilib.php,v 1.111 2004/08/26 13:07:04 wkpark Exp $
   
   function find_needle($body,$needle,$exclude='',$count=0) {
     if (!$body) return '';
     $lines=explode("\n",$body);
     $out="";
     $matches=preg_grep("/($needle)/i",$lines);
  -  if ($exclude) {
  -    $matches=preg_grep("/($exclude)/i",$matches,PREG_GREP_INVERT);
  -    if ($matches) return '';
  -  }
  +  if ($exclude)
  +    if (preg_grep("/($exclude)/i",$matches)) return '';
  +
     if (count($matches) > $count) $matches=array_slice($matches,0,$count);
     foreach ($matches as $line) {
       $line=preg_replace("/($needle)/i","<strong>\\1</strong>",str_replace("<","&lt;",$line));
  
  
  


wkpark      2004/08/27 02:21:06

  Added:       plugin   .htaccess
  Log:
  added
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/.htaccess
  
  Index: .htaccess
  ===================================================================
  Order allow,deny
  Deny from all
  
  
  


wkpark      2004/08/27 02:24:58

  Removed:     doc      imgs_htaccess
  Log:
  removed


wkpark      2004/08/27 02:52:55

  Modified:    .        secure.sh
  Log:
  minor bug fixed
  
  Revision  Changes    Path
  1.7       +8 -3      moniwiki/secure.sh
  
  Index: secure.sh
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/secure.sh,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- secure.sh	26 Aug 2004 10:26:57 -0000	1.6
  +++ secure.sh	26 Aug 2004 17:52:55 -0000	1.7
  @@ -1,5 +1,5 @@
   #!/bin/bash
  -# $Id: secure.sh,v 1.6 2004/08/26 10:26:57 wkpark Exp $
  +# $Id: secure.sh,v 1.7 2004/08/26 17:52:55 wkpark Exp $
   echo
   echo "+-------------------------------------+"
   echo "|    MoniWiki configuration script    |"
  @@ -15,8 +15,13 @@
       echo "*** chmod 644 config.php"
   fi
   
  -[ -f imgs_htaccess ] && [ ! -f imgs/.htaccess ] &&
  -    cp imgs_htaccess imgs/.htaccess && rm imgs_htaccess
  +IMG_DIR=`cat config.php |grep '$upload_dir='|cut -d\' -f2`
  +[ -n "$IMG_DIR" ] && [ -f imgs_htaccess ] && [ ! -f .$IMG_DIR/.htaccess ] &&
  +    cp imgs_htaccess .$IMG_DIR/.htaccess && rm imgs_htaccess
  +
  +PDS_DIR=`cat config.php |grep '$upload_dir='|cut -d\' -f2`
  +[ -n "$PDS_DIR" ] && [ -f pds_htaccess ] && [ ! -f $PDS_DIR/.htaccess ] &&
  +    cp pds_htaccess $PDS_DIR/.htaccess && rm pds_htaccess
   
   echo ""
   echo "Your MoniWiki is now secure and cannot be configured."
  
  
  


wkpark      2004/08/27 03:18:13

  Added:       .        Makefile moni-install.in
  Log:
  add Makefile, moni-install.in for global installation
  
  Revision  Changes    Path
  1.1                  moniwiki/Makefile
  
  Index: Makefile
  ===================================================================
  DESTDIR=
  prefix=/usr
  install: moni-install
  	mkdir -p $(DESTDIR)$(prefix)/share/moniwiki
  	mkdir -p $(DESTDIR)$(prefix)/share/moniwiki/bin
  	cp -ar data wikiseed imgs css $(DESTDIR)$(prefix)/share/moniwiki
  	cp -ar lib plugin $(DESTDIR)$(prefix)/share/moniwiki
  	cp -ar locale tools $(DESTDIR)$(prefix)/share/moniwiki
  	cp wiki.php wikilib.php $(DESTDIR)$(prefix)/share/moniwiki
  	cp wikismiley.php $(DESTDIR)$(prefix)/share/moniwiki
  	cp config.php.default monisetup.php $(DESTDIR)$(prefix)/share/moniwiki
  	cp monisetup.sh secure.sh $(DESTDIR)$(prefix)/share/moniwiki
  	cp moni-install $(DESTDIR)$(prefix)/share/moniwiki/bin
  
  moni-install: moni-install.in
  	cat moni-install.in | sed 's%@@INSTDIR@@%$(prefix)/share/moniwiki%' >moni-install
  	chmod 755 moni-install
  
  
  
  1.1                  moniwiki/moni-install.in
  
  Index: moni-install.in
  ===================================================================
  #!/bin/sh
  echo
  echo "+------------------------------------+"
  echo "|    MoniWiki installation script    |"
  echo "+------------------------------------+"
  echo
  
  INSTDIR=@@INSTDIR@@
  [ ! -d data ] && cp -a $INSTDIR/data .
  [ ! -d imgs ] && cp -a $INSTDIR/imgs .
  [ ! -d theme ] && cp -a $INSTDIR/theme .
  [ ! -d css ] && cp -a $INSTDIR/css .
  [ ! -d applets ] && cp -a $INSTDIR/applets .
  [ ! -f index.html ] && cp -a $INSTDIR/index.html .
  cp $INSTDIR/{monisetup.*,secure.sh,config.php.default} .
  
  cat <<PHP >index.php
  <?php
  include("$INSTDIR/wiki.php");
  ?>
  PHP
  
  
  


wkpark      2004/08/27 03:35:42

  Modified:    plugin   FullSearch.php
  Log:
  fix last change
  
  Revision  Changes    Path
  1.6       +5 -3      moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- FullSearch.php	26 Aug 2004 12:55:33 -0000	1.5
  +++ FullSearch.php	26 Aug 2004 18:35:42 -0000	1.6
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
   //
  -// $Id: FullSearch.php,v 1.5 2004/08/26 12:55:33 wkpark Exp $
  +// $Id: FullSearch.php,v 1.6 2004/08/26 18:35:42 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
  @@ -35,6 +35,7 @@
     $needle=$value;
     if ($value === true) {
       $needle = $value = $formatter->page->name;
  +    $options['noexpr']=1;
     } else {
       # for MoinMoin compatibility with [[FullSearch("blah blah")]]
       #$needle = preg_replace("/^('|\")([^\\1]*)\\1/","\\2",$value);
  @@ -139,10 +140,11 @@
          if ($count) {
            # search matching contexts
            $context= find_needle($body,$needle,$excl_needle,$opts['context']);
  -         if ($context) {
  +         if ($opts['context'] and $context) {
              $contexts[$page_name] = $context;
              $hits[$page_name] = $count;
  -         }
  +         } else
  +           $hits[$page_name] = $count;
          }
        }
     }
  
  
  


wkpark      2004/08/27 04:41:34

  Modified:    .        monisetup.php secure.sh
  Log:
  more fixes
  
  Revision  Changes    Path
  1.16      +8 -1      moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- monisetup.php	26 Aug 2004 10:23:54 -0000	1.15
  +++ monisetup.php	26 Aug 2004 19:41:34 -0000	1.16
  @@ -1,7 +1,7 @@
   <?
   // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.15 2004/08/26 10:23:54 wkpark Exp $
  +// $Id: monisetup.php,v 1.16 2004/08/26 19:41:34 wkpark Exp $
   
   class MoniConfig {
     function MoniConfig($configfile="config.php") {
  @@ -208,6 +208,13 @@
           $error=1;
         } else
           print "<h3><font color=blue>$config[$file] is writable</font> :)</h3>\n";
  +    }
  +    if (is_dir($config['upload_dir'])
  +      and !file_exists($config['upload_dir'].'/.htaccess')) {
  +      $fp=fopen('pds_htaccess','w');
  +      fwrite($fp,'#Options NoExecCGI'."\n");
  +      fwrite($fp,'AddType text/plain .sh .cgi .pl .py .php .php3 .php4 .phtml .html'."\n");
  +      fclose($fp);
       }
     }
   }
  
  
  
  1.8       +2 -2      moniwiki/secure.sh
  
  Index: secure.sh
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/secure.sh,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- secure.sh	26 Aug 2004 17:52:55 -0000	1.7
  +++ secure.sh	26 Aug 2004 19:41:34 -0000	1.8
  @@ -1,5 +1,5 @@
   #!/bin/bash
  -# $Id: secure.sh,v 1.7 2004/08/26 17:52:55 wkpark Exp $
  +# $Id: secure.sh,v 1.8 2004/08/26 19:41:34 wkpark Exp $
   echo
   echo "+-------------------------------------+"
   echo "|    MoniWiki configuration script    |"
  @@ -15,7 +15,7 @@
       echo "*** chmod 644 config.php"
   fi
   
  -IMG_DIR=`cat config.php |grep '$upload_dir='|cut -d\' -f2`
  +IMG_DIR=`cat config.php |grep '$imgs_dir='|cut -d\' -f2`
   [ -n "$IMG_DIR" ] && [ -f imgs_htaccess ] && [ ! -f .$IMG_DIR/.htaccess ] &&
       cp imgs_htaccess .$IMG_DIR/.htaccess && rm imgs_htaccess
   
  
  
  


wkpark      2004/08/27 05:06:04

  Modified:    plugin   Comment.php
  Log:
  stripslashes() properly
  
  Revision  Changes    Path
  1.7       +2 -1      moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- Comment.php	18 Aug 2004 17:49:28 -0000	1.6
  +++ Comment.php	26 Aug 2004 20:06:02 -0000	1.7
  @@ -6,7 +6,7 @@
   // Usage: [[Comment]], ?action=comment
   //
   //
  -// $Id: Comment.php,v 1.6 2004/08/18 17:49:28 wkpark Exp $
  +// $Id: Comment.php,v 1.7 2004/08/26 20:06:02 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $HTTP_USER_AGENT;
  @@ -88,6 +88,7 @@
       $formatter->send_header("",$options);
       $formatter->send_title(_("Preview comment"),"",$options);
       $formatter->send_page($savetext."\n----");
  +    $options['savetext']=$savetext;
       print macro_Comment($formatter,'',$options);
       print $formatter->macro_repl('EditHints');
       $formatter->send_footer("",$options);
  
  
  


wkpark      2004/08/27 05:08:25

  Modified:    .        monisetup.sh
  Log:
  fix last changes
  
  Revision  Changes    Path
  1.6       +7 -7      moniwiki/monisetup.sh
  
  Index: monisetup.sh
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.sh,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- monisetup.sh	26 Aug 2004 10:34:54 -0000	1.5
  +++ monisetup.sh	26 Aug 2004 20:08:23 -0000	1.6
  @@ -1,5 +1,5 @@
   #!/bin/bash
  -# $Id: monisetup.sh,v 1.5 2004/08/26 10:34:54 wkpark Exp $
  +# $Id: monisetup.sh,v 1.6 2004/08/26 20:08:23 wkpark Exp $
   
   echo
   echo "+-------------------------------------+"
  @@ -31,8 +31,13 @@
     echo "*** chmod 777 config.php"
     chmod 777 config.php 2>/dev/null
     RETVAL=$?
  -  [ ! $RETVAL -eq 0 ] && cp config.php config.php.$$ && mv config.php.$$ config.php
  -  chmod 777 config.php
  +  [ ! $RETVAL -eq 0 ] && cp config.php config.php.$$ && mv config.php.$$ config.php && chmod 777 config.php
  +
  +  DATA_DIR=`cat config.php |grep '$data_dir='|cut -d\' -f2`
  +
  +  echo "*** chmod $PERM . $DATA_DIR"
  +  chmod $PERM . $DATA_DIR
  +
     ID=`id -u`
     if [ $ID -eq 0 ]; then
       echo "*** You are the root user ***"
  @@ -51,11 +56,6 @@
       fi
     fi  
   fi
  -
  -DATA_DIR=`cat config.php |grep '$data_dir='|cut -d\' -f2`
  -
  -echo "*** chmod $PERM $DATA_DIR"
  -chmod $PERM $DATA_DIR
   
   
   if [ ! -d $DATA_DIR/text ]; then
  
  
  


wkpark      2004/08/27 10:50:59

  Modified:    plugin   foaf.php
  Log:
  fix dir of images
  
  Revision  Changes    Path
  1.3       +2 -2      moniwiki/plugin/foaf.php
  
  Index: foaf.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/foaf.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- foaf.php	22 Aug 2003 23:57:17 -0000	1.2
  +++ foaf.php	27 Aug 2004 01:50:58 -0000	1.3
  @@ -3,7 +3,7 @@
   // Public Domain ?
   // and modified for the FOAF.
   // See http://moniwiki.sourceforge.net/wiki.php/FoafOnMoniWiki
  -// $Id: foaf.php,v 1.2 2003/08/22 23:57:17 wkpark Exp $
  +// $Id: foaf.php,v 1.3 2004/08/27 01:50:58 wkpark Exp $
   //
   class FoafParser {
   
  @@ -123,7 +123,7 @@
     xml_parser_free($xml_parser);
   
     ##
  -  $out="<a href='".$DBInfo->interwiki['FOAF']."$value'><img align='middle' border='0' alt='FOAF:' title='FOAF:' src='$DBInfo->imgs_dir/foaf-16.png'>";
  +  $out="<a href='".$DBInfo->interwiki['FOAF']."$value'><img align='middle' border='0' alt='FOAF:' title='FOAF:' src='$DBInfo->imgs_dir_interwiki"."foaf-16.png'>";
   
     if ($options['homepage']) $out.="</a><a href='$info[homepage]'>$info[name]</a>";
     else $out.="$info[name]</a>";
  
  
  


wkpark      2004/08/27 10:52:01

  Modified:    plugin   Attachment.php
  Log:
  fix dir of images
  
  Revision  Changes    Path
  1.7       +2 -2      moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- Attachment.php	2 Aug 2004 11:24:17 -0000	1.6
  +++ Attachment.php	27 Aug 2004 01:52:01 -0000	1.7
  @@ -6,7 +6,7 @@
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.6 2004/08/02 11:24:17 wkpark Exp $
  +// $Id: Attachment.php,v 1.7 2004/08/27 01:52:01 wkpark Exp $
   
   function macro_Attachment($formatter,$value) {
     global $DBInfo;
  @@ -45,7 +45,7 @@
           $url=$DBInfo->url_prefix."/".$upload_file;
         return "<span class=\"imgAttach\"><img src='$url' alt='$value' $attr/></span>";
       } else
  -      return "<span class=\"attach\"><img align='middle' src='$DBInfo->imgs_dir/uploads-16.png' />".
  +      return "<span class=\"attach\"><img align='middle' src='$DBInfo->imgs_dir_interwiki".'uploads-16.png\' />'.
           $formatter->link_tag(_urlencode($pagename),"?action=download&amp;value=$value",$value).'</span>';
     }
     if ($pagename == $formatter->page->name)
  
  
  


wkpark      2004/08/27 10:53:25

  Removed:     plugin   Img.php
  Log:
  remove a useless macro


wkpark      2004/08/27 10:57:04

  Modified:    plugin   FastSearch.php
  Log:
  fix args of the find_needle()
  
  Revision  Changes    Path
  1.5       +3 -3      moniwiki/plugin/FastSearch.php
  
  Index: FastSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FastSearch.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- FastSearch.php	20 Aug 2004 11:12:26 -0000	1.4
  +++ FastSearch.php	27 Aug 2004 01:57:04 -0000	1.5
  @@ -13,7 +13,7 @@
   //
   // Usage: [[FastSearch(string)]]
   //
  -// $Id: FastSearch.php,v 1.4 2004/08/20 11:12:26 wkpark Exp $
  +// $Id: FastSearch.php,v 1.5 2004/08/27 01:57:04 wkpark Exp $
   
   function macro_FastSearch($formatter,$value="",$opts=array()) {
     global $DBInfo;
  @@ -85,7 +85,7 @@
       if ($count) {
         $hits[$page_name] = $count;
         # search matching contexts
  -      $contexts[$page_name] = find_needle($body,$needle,$opts['context']);
  +      $contexts[$page_name] = find_needle($body,$needle,'',$opts['context']);
       }
     }
   
  @@ -96,7 +96,7 @@
     $idx=1;
     while (list($page_name, $count) = each($hits)) {
       $out.= '<li>'.$formatter->link_tag(_rawurlencode($page_name),
  -          "?action=highlight&amp;value="._urlencode($value),
  +          "?action=highlight&amp;value="._urlencode($needle),
             $page_name,"tabindex='$idx'");
       $out.= ' . . . . ' . $count . (($count == 1) ? ' match' : ' matches');
       $out.= $contexts[$page_name];
  
  
  


wkpark      2004/08/27 11:00:46

  Modified:    plugin   Gallery.php
  Log:
  fix security problem.
  add a 'showall' option
  
  Revision  Changes    Path
  1.11      +23 -14    moniwiki/plugin/Gallery.php
  
  Index: Gallery.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Gallery.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- Gallery.php	14 Aug 2004 17:01:10 -0000	1.10
  +++ Gallery.php	27 Aug 2004 02:00:45 -0000	1.11
  @@ -5,8 +5,7 @@
   //
   // Usage: [[Gallery]]
   //
  -// $Id: Gallery.php,v 1.10 2004/08/14 17:01:10 wkpark Exp $
  -// vim:et:ts=2:
  +// $Id: Gallery.php,v 1.11 2004/08/27 02:00:45 wkpark Exp $
   
   function get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -62,9 +61,16 @@
       $formatter->actions[]='UploadedFiles';
     }
   
  +  // parse args
  +  preg_match("/^(('|\")([^\\2]+)\\2)?,?(\s*,?\s*.*)?$/",
  +    $value,$match);
  +  $opts=explode(',',$match[4]);
  +  if (in_array('showall',$opts))
  +    $show_all=1;
  +
     $default_width=$DBInfo->gallery_img_width ? $DBInfo->gallery_img_width:600;
   
  -  if ($value) {
  +  if ($match[3]) {
       $key=$DBInfo->pageToKeyname($value);
       if ($key != $value)
         $prefix=$formatter->link_url($value,"?action=download&amp;value=");
  @@ -221,22 +227,24 @@
       if ($comments[$file] != '' and $options['value']) {
         $comment=$comments[$file];
         $comment=str_replace("\\n","\n",$comment);
  -      $comment=str_replace("\t","\n----\n",$comment);
  -      $options['comments']=$comment;
  +      $options['comments']=str_replace("\t","\n----\n",$comment);
  +      $comment=str_replace("\t","<div class='separator'><hr /></div>",$comment);
         $comment=str_replace("\n","<br/>\n",$comment);
  -      $comment="<br/>".$comment;
  -    } else if ($comments[$file] != '') {
  -      $comment_btn=_("show comments");
  -      list($comment,$dum)=explode("\t",$comments[$file],2);
  +    } else if (!empty($comments[$file])) {
  +      if (empty($show_all)) {
  +        $comment_btn=_("show comments");
  +        list($comment,$dum)=explode("\t",$comments[$file],2);
  +      } else {
  +        $comment_btn=_("add comment");
  +        $comment=str_replace("\t","<div class='separator'><hr /></div>\n",$comments[$file]);
  +      }
         $comment=str_replace("\\n","<br/>\n",$comment);
  -      $comment=str_replace("\t","<br/>\n----<br/>\n",$comment);
  -      $comment="<br/>".$comment;
       }
       $out.="<td align='center' valign='top' class='wiki'><a href='$link'>$object</a><br />".
             "$date ($size) ";
       if (!$options['value'])
         $out.='['.$formatter->link_tag($formatter->page->urlname,"?action=gallery&amp;value=$id",$comment_btn)."]<br />\n";
  -    if ($comment) $out.="<div align='left' class='gallery_comments'>$comment</div>";
  +    if ($comment) $out.="<div align='left' class='gallery-comments'>$comment</div>";
       $out.="</td>\n";
       if ($idx % $col == 0) $out.="</tr>\n<tr>\n";
       $idx++;
  @@ -257,7 +265,7 @@
   
     $formatter->send_header("",$options);
   
  -  if ($options['admin'] and $options['comments'] and !$DBInfo->security->is_valid_password($options['passwd'],$options)) {
  +  if ($options['comments'] and !$DBInfo->security->is_valid_password($options['passwd'],$options)) {
       $title= sprintf('Invalid password !');
       $formatter->send_title($title);
       $formatter->send_footer();
  @@ -266,7 +274,7 @@
   
     $ret=macro_Gallery($formatter,'',&$options);
   
  -  if ($options['passwd'] and $options['comments']) {
  +  if (isset($options['passwd']) and $options['comments']) {
       $options['msg']=sprintf(_("Go back or return to %s"),$formatter->link_tag($formatter->page->urlname,"",$options['page']));
       $options['title']=_("Comments are edited");
     } else if ($options['comment']) {
  @@ -330,4 +338,5 @@
     return;
   }
   
  +// vim:et:sts=2:
   ?>
  
  
  


wkpark      2004/08/28 16:40:01

  Added:       plugin/security mustlogin.php
  Log:
  new security plugin
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/security/mustlogin.php
  
  Index: mustlogin.php
  ===================================================================
  <?php
  # a needtologin security plugin for the MoniWiki
  # $Id: mustlogin.php,v 1.1 2004/08/28 07:39:58 wkpark Exp $
  
  class Security_mustlogin extends Security {
    var $DB;
  
    function Security_mustlogin($DB="") {
      $this->DB=$DB;
    }
  
  # $options[page]: pagename
  # $options[id]: user id
  
    function writable($options="") {
      return $this->DB->_isWritable($options['page']);
    }
  
    function may_edit($action,$options) {
      $public_pages=array('WikiSandBox','WikiSandbox','GuestBook','SandBox');
      if (!$options['page']) return 0; # XXX
      if (in_array($options['page'],$public_pages)) return 1;
      if ($options['id']=='Anonymous') {
        $options['err']=sprintf(_("You are not allowed to '%s' on this page"),$action);
        $options['err'].="\n"._("Please Login or make your ID on this Wiki ;)");
        return 0;
      }
      return 1;
    }
  
    function may_blog($action,$options) {
      if (!$options['page']) return 0; # XXX
      if ($options['id']=='Anonymous') {
        $options['err']=sprintf(_("You are not allowed to '%s' on this page"),$action);
        $options['err'].="\n"._("Please Login or make your ID on this Wiki ;)");
        return 0;
      }
      return 1;
    }
  
    function may_uploadfile($action,$options) {
      if (!$options['page']) return 0;
      if ($options['id']=='Anonymous') {
        $options['err']=sprintf(_("You are not allowed to '%s' on this page"),$action);
        $options['err'].="\n"._("Please Login or make your ID on this Wiki ;)");
        return 0;
      }
      return 1;
    }
  
    function is_allowed($action="read",$options) {
      $allowed_actions=array("userform");
      if (in_array($action,$allowed_actions)) return 1;
      $method='may_'.$action;
      if (method_exists($this, $method)) {
        return $this->$method ($action,&$options);
      }
      if ($options['id']=='Anonymous') {
        $options['err']=sprintf(_("You are not allowed to '%s' on this page."),$action);
        $options['err'].="\n"._("Please Login or make your ID on this Wiki ;)");
        return 0;
      }
      return 1;
    }
  }
  
  ?>
  
  
  


wkpark      2004/08/28 16:46:15

  Modified:    .        wiki.php
  Log:
  fix Namespace related auto linking behavior
  fix SisterSites bug
  
  Revision  Changes    Path
  1.165     +10 -10    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.164
  retrieving revision 1.165
  diff -u -r1.164 -r1.165
  --- wiki.php	26 Aug 2004 10:37:23 -0000	1.164
  +++ wiki.php	28 Aug 2004 07:46:15 -0000	1.165
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.164 2004/08/26 10:37:23 wkpark Exp $
  +// $Id: wiki.php,v 1.165 2004/08/28 07:46:15 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.164 $',1,-1);
  +$_revision = substr('$Revision: 1.165 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -250,7 +250,7 @@
         if (!$mode) return true;
         $sisters=dba_fetch($pagename,$this->metadb);
   
  -      if (strlen($sisters) > 40) return "[$pagename]";
  +      if (strlen($sisters) > 40) return "TwinPages:$pagename";
   
         $ret="wiki:".
           str_replace(" ",":$pagename wiki:",$sisters).":$pagename";
  @@ -1672,8 +1672,8 @@
             return "<a href='$url' $attr>$word</a>".
               "<tt class='sister'><a href='$url'>&#x203a;</a></tt>";
           case -3:
  -          $url=$this->link_url(_rawurlencode($gpage));
  -          return $this->link_tag($page,'',$this->icon['main']).
  +          #$url=$this->link_url(_rawurlencode($gpage));
  +          return $this->link_tag(_rawurlencode($gpage),'',$this->icon['main']).
               "<a href='$url' $attr>$word</a>";
           default:
             return "<a href='$url' $attr>$word</a>".
  @@ -1685,8 +1685,8 @@
       } else {
         if ($gpage and $DBInfo->hasPage($gpage)) {
           $this->pagelinks[$page]=-3;
  -        $url=$this->link_url(_rawurlencode($gpage));
  -        return $this->link_tag($page,'',$this->icon['main']).
  +        #$url=$this->link_url(_rawurlencode($gpage));
  +        return $this->link_tag(_rawurlencode($gpage),'',$this->icon['main']).
             "<a href='$url' $attr>$word</a>";
         }
         if ($this->sister_on) {
  @@ -2271,6 +2271,7 @@
         $highlight=_preg_search_escape($this->highlight);
   
         $colref=preg_split("/\|/",$highlight);
  +      #$colref=preg_split("/\s+/",$highlight);
         $highlight=join("|",$colref);
         $colref=array_flip(array_map("strtolower",$colref));
   
  @@ -2636,8 +2637,7 @@
         # find upper page
         $pos=strrpos($this->page->name,"/");
         if ($pos > 0) $upper=substr($this->page->urlname,0,$pos);
  -      else if ($this->group) $upper=_urlencode(substr($this->group,0,-1));
  -
  +      else if ($this->group) $upper=_urlencode(substr($this->page->name,strlen($this->group)));
         if ($this->pi['#keywords'])
           $keywords='<meta name="keywords" content="'.$this->pi['#keywords'].'" />';
         else if ($DBInfo->use_keywords) {
  @@ -2858,7 +2858,7 @@
       # find upper page
       $pos=strrpos($name,"/");
       if ($pos > 0) $upper=substr($name,0,$pos);
  -    else if ($this->group) $upper=_urlencode(substr($this->group,0,-1));
  +    else if ($this->group) $upper=_urlencode(substr($this->page->name,strlen($this->group)));
   
       if (!$title) {
         $title=$options['title'];
  
  
  


wkpark      2004/08/28 16:46:50

  Modified:    .        wikilib.php
  Log:
  fix do_invalid()
  
  Revision  Changes    Path
  1.112     +11 -5     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.111
  retrieving revision 1.112
  diff -u -r1.111 -r1.112
  --- wikilib.php	26 Aug 2004 13:07:04 -0000	1.111
  +++ wikilib.php	28 Aug 2004 07:46:50 -0000	1.112
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.111 2004/08/26 13:07:04 wkpark Exp $
  +// $Id: wikilib.php,v 1.112 2004/08/28 07:46:50 wkpark Exp $
   
   function find_needle($body,$needle,$exclude='',$count=0) {
     if (!$body) return '';
  @@ -536,10 +536,14 @@
       $formatter->send_title('',"",$options);
     else
       $formatter->send_title(_("406 Not Acceptable"),"",$options);
  -  if ($options['action'])
  -    $formatter->send_page("== ".sprintf(_("%s is not valid action"),$options['action'])." ==\n");
  -  else
  -    $formatter->send_page("== "._("Is it valid action ?")." ==\n");
  +  if ($options['err']) {
  +    $formatter->send_page($options['err']);
  +  } else {
  +    if ($options['action'])
  +      $formatter->send_page("== ".sprintf(_("%s is not valid action"),$options['action'])." ==\n");
  +    else
  +      $formatter->send_page("== "._("Is it valid action ?")." ==\n");
  +  }
     $formatter->send_footer("",$options);
   }
   
  @@ -858,7 +862,9 @@
       $formatter->send_title("","",$options);
       $opt['pagelinks']=1;
       # re-generates pagelinks
  +    print "<div id='wikiContent'>\n";
       $formatter->send_page("",$opt);
  +    print "</div>\n";
     }
     $args['editable']=0;
     $formatter->send_footer($args,$options);
  
  
  


wkpark      2004/08/29 01:18:06

  Added:       plugin   Navigation.php
  Log:
  renamed
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/Navigation.php
  
  Index: Navigation.php
  ===================================================================
  <?php
  // Copyright 2004 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a Navigation plugin for the MoniWiki
  //
  // Usage: [[Navigation(IndexPage)]]
  //
  // $Id: Navigation.php,v 1.1 2004/08/28 16:18:05 wkpark Exp $
  
  function normalize_word($page,$word) {
    if ($word[0]=='/') { # SubPage
      $word=$page.$word;
    } else if ($word[0]=='.' and preg_match('/^(\.{1,2})\//',$word,$match)) {
      if ($match[1] == '..') {
        $pos=strrpos($page,"/");
        if ($pos > 0) $upper=substr($page,0,$pos);
        if ($upper) {
          $word=substr($word,2);
          if ($word == '/') $word=$upper;
          else $word=$upper.$word;
        }
      } else {
        $word=substr($word,1);
        if ($word == '/') $word='';
        $word=$page.$word;
      }
    }
    return $word;
  }
  
  function macro_Navigation($formatter,$value) {
    global $DBInfo;
  
    if (!$value or !$DBInfo->hasPage($value))
      return '[[Index('._("No Index page found").')]]';
  
    $action=1;
  
    $pg=$DBInfo->getPage($value);
    $lines=explode("\n",$pg->get_raw_body());
  
    $indices=array();
    $count=0;
    foreach ($lines as $line) {
      if (preg_match("/^\s+(\*|\d+\.)\s+(?<!\!)($formatter->wordrule)/",$line,$match)) {
        $indices[]=normalize_word($value,$match[2]);
        $count++;
      }
    }
    if ($count > 1) {
      $prev='';
      $index=$value;
      $next=$indices[0];
    }
  
    for ($i=0;$i<$count;$i++) {
      #print $indices[$i];
      #print ':'.$formatter->page->name;
      if ($indices[$i]==$formatter->page->name) {
        if ($i > 0) $prev=$indices[$i-1];
        if ($i < ($count - 1)) {
  	$next=$indices[$i+1];
        } else {
          $next = '';
        }
      }
    }
  
    if ($count > 1) {
      if ($action) {
        $save=$formatter->query_string;
        $query='?action=navigation&amp;value='.$value;
        $formatter->query_string=$query;
      }
      $pnut='&laquo; ';
      if ($prev) $pnut.=$formatter->link_repl($prev);
      if ($action) $formatter->query_string=$save;
      $pnut.=" | ".$formatter->link_repl($index)." | ";
      if ($action) $formatter->query_string=$query;
      if ($next) $pnut.=$formatter->link_repl($next);
      $pnut.=' &raquo;';
      if ($action) $formatter->query_string=$save;
    }
    return $pnut;
  }
  
  function do_navigation($formatter,$options) {
    $pnut=macro_Navigation($formatter,$options['value']);
    $formatter->send_header('',$options);
    $formatter->send_title($title,$formatter->link_url("FindPage"),$options);
    print "<div class='wikiNavigation'>\n";
    print $pnut;
    print "</div>\n";
    $formatter->send_page();
    print "<div class='wikiNavigation'>\n";
    print $pnut;
    print "</div>\n";
    $formatter->send_footer('',$options);
  }
  
  // vim:noet:sts=2:
  ?>
  
  
  


wkpark      2004/08/29 01:19:44

  Removed:     plugin   Trail.php
  Log:
  renamed as Navigation.php


wkpark      2004/08/30 15:25:48

  Modified:    .        wiki.php wikilib.php
  Log:
  add a new function named normalize_word()
   * support TWiki like link: Main.WikiName=>WikiName Ko.WikiName=>Ko~WikiName
   * UserNameSpace fix
  fixed set_orign()
  refactor and extract some functions
  
  Revision  Changes    Path
  1.166     +50 -84    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.165
  retrieving revision 1.166
  diff -u -r1.165 -r1.166
  --- wiki.php	28 Aug 2004 07:46:15 -0000	1.165
  +++ wiki.php	30 Aug 2004 06:25:47 -0000	1.166
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.165 2004/08/28 07:46:15 wkpark Exp $
  +// $Id: wiki.php,v 1.166 2004/08/30 06:25:47 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.165 $',1,-1);
  +$_revision = substr('$Revision: 1.166 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -25,40 +25,6 @@
   
   $timing=new Timer();
   
  -function _preg_escape($val) {
  -  return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  -}
  -
  -function _preg_search_escape($val) {
  -  return preg_replace('/([\/]{1})/','\\\\\1',$val);
  -}
  -
  -function get_scriptname() {
  -  // Return full URL of current page.
  -  // $_SERVER["SCRIPT_NAME"] has bad value under CGI mode
  -  // set 'cgi.fix_pathinfo=1' in the php.ini under
  -  // apache 2.0.x + php4.2.x Win32
  -  return $_SERVER["SCRIPT_NAME"];
  -}
  -
  -function _rawurlencode($url) {
  -  $name=rawurlencode($url);
  -  $urlname=preg_replace(array('/%2F/i','/%7E/i'),array('/','~'),$name);
  -  return $urlname;
  -}
  -
  -function _urlencode($url) {
  -  #$name=urlencode(strtr($url,"+"," "));
  -  #return preg_replace(array('/%2F/i','/%7E/i','/%23/'),array('/','~','#'),$name);
  -  return preg_replace("/([^a-z0-9\/\?\.\+~#&:;=%\-]{1})/ie","'%'.strtoupper(dechex(ord('\\1')))",$url);
  -}
  -
  -function qualifiedUrl($url) {
  -  if (substr($url,0,7)=="http://")
  -    return $url;
  -  return "http://$_SERVER[HTTP_HOST]$url";
  -}
  -
   function getPlugin($pluginname) {
     static $plugins=array();
     if ($plugins) return $plugins[strtolower($pluginname)];
  @@ -496,6 +462,7 @@
       $this->use_hostname=1;
       $this->pagetype=array();
       $this->smiley='wikismiley';
  +    $this->convmap=array(0xac00, 0xd7a3, 0x0000, 0xffff); /* for euc-kr */
       $this->theme='';
   
       $this->inline_latex=0;
  @@ -1614,48 +1581,23 @@
         $page=substr($word,1,-1);
         $word=$page;
       } else if ($word[0]=='#') { # Anchor syntax in the MoinMoin 1.1
  -      $anchor=strtok($word," ");
  -      return ($word=strtok("")) ? $this->link_to($anchor,$word):
  +      $anchor=strtok($word,' ');
  +      return ($word=strtok('')) ? $this->link_to($anchor,$word):
                    "<a name='".($temp=substr($anchor,1))."' id='$temp'></a>";
       } else
         #$page=preg_replace("/\s+/","",$word); # concat words
         $page=normalize($word); # concat words
  +
  +    list($page,$page_text,$gpage)=
  +      normalize_word($word,$this->group,$this->page->name,$nogroup);
       if ($text) {
         if (preg_match("/^(http|ftp).*\.(png|gif|jpeg|jpg)$/i",$text)) {
           $text=str_replace('&','&amp;',$text);
           $word="<img border='0' alt='$word' src='$text' /></a>";
  -      } else
  -        $word=$text;
  -    }
  -
  -    # User namespace extension
  -    if ($page[0]=='~' and ($p=strpos($page,'/'))) {
  -      # change ~User/Page to User~Page
  -      $gpage=$page;
  -      $page=substr($page,1,$p-1)."~".substr($page,$p+1);
  -    } else if (!$nogroup and $this->group and !strpos($page,'~')) {
  -      if ($page[0]=='/') $page=substr($page,1);
  -      else {
  -        $gpage=$page;
  -        $page=$this->group.$page;
  -      }
  -    } else if ($page[0]=='/') { # SubPage
  -      $page=$this->page->name.$page;
  -    } else if ($page[0]=='.' and preg_match('/^(\.{1,2})\//',$page,$match)) {
  -      if ($match[1] == '..') {
  -        $pos=strrpos($this->page->name,"/");
  -        if ($pos > 0) $upper=substr($this->page->name,0,$pos);
  -        if ($upper) {
  -          $page=substr($page,2);
  -          if ($page == '/') $page=$upper;
  -          else $page=$upper.$page;
  -        }
  -      } else {
  -        $page=substr($page,1);
  -        if ($page == '/') $page='';
  -        $page=$this->page->name.$page;
  -      }
  -    }
  +      } else $word=$text;
  +    } else 
  +      $word=$text=$page_text ? $page_text:$word;
  +    #print $text;
   
       $url=$this->link_url(_rawurlencode($page)); # XXX
       $page=urldecode($page); # XXX
  @@ -1734,10 +1676,12 @@
       #if (preg_match("/^[a-zA-Z0-9\/~]/",$word))
       if (ord($word[0]) < 125)
         return "<a class='nonexistent' href='$url'>$word[0]</a>".substr($word,1);
  -    if (function_exists('mb_encode_numericentity') && function_exists('iconv')){
  -      $utfword=iconv($DBInfo->charset,'utf-8',$word);
  -      $convmap=array(0xac00, 0xd7a3, 0x0000, 0xffff); /* for euc-kr */
  -      $mbword=mb_encode_numericentity($utfword,$convmap,'utf-8');
  +    if (function_exists('mb_encode_numericentity')) {
  +      if (function_exists('iconv') and strtolower($DBInfo->charset) != 'utf-8')
  +        $utfword=iconv($DBInfo->charset,'utf-8',$word);
  +      else
  +        $utfword=$word;
  +      $mbword=mb_encode_numericentity($utfword,$DBInfo->convmap,'utf-8');
         $tag=strtok($mbword,';').';'; $last=strtok('');
         return "<a class='nonexistent' href='$url'>$tag</a>".$last;
       } else {
  @@ -2857,8 +2801,13 @@
   
       # find upper page
       $pos=strrpos($name,"/");
  -    if ($pos > 0) $upper=substr($name,0,$pos);
  -    else if ($this->group) $upper=_urlencode(substr($this->page->name,strlen($this->group)));
  +    if ($pos > 0) {
  +      $upper=substr($name,0,$pos);
  +      $upper_icon=$this->link_tag($upper,'',$this->icon['upper'])." ";
  +    } else if ($this->group) {
  +      $upper=_urlencode(substr($this->page->name,strlen($this->group)));
  +      $upper_icon=$this->link_tag($upper,'',$this->icon['main'])." ";
  +    }
   
       if (!$title) {
         $title=$options['title'];
  @@ -2918,8 +2867,8 @@
       $menu=$this->menu_bra.join($this->menu_sep,$menu).$this->menu_cat;
   
       # icons
  -    if ($upper)
  -      $upper_icon=$this->link_tag($upper,'',$this->icon['upper'])." ";
  +    #if ($upper)
  +    #  $upper_icon=$this->link_tag($upper,'',$this->icon['upper'])." ";
   
       if ($this->icons) {
         $icon=array();
  @@ -2991,21 +2940,36 @@
         $this->sister_on=0;
   
         $parent=_($DBInfo->home);
  -      $origin=$this->word_repl('"'.$DBInfo->frontpage.'"',$parent,'',1);
  +      $text='';
  +      if ($this->group) {
  +        $group=strtok($pagename,'~');
  +        $text=strtok('');
  +        $pagename=$group.'.'.$text;
  +        $main=strtok($text,'/');
  +      }
  +      if ($group)
  +        # represent: Main     > MoniWiki    > WikiName
  +        # real link: MoniWiki > Ko~MoniWiki > Ko~MoniWiki/WikiName
  +        $origin=$this->word_repl('"'.$main.'"',_("Main"),'',1);
  +      else
  +        # represent: Home       > WikiName > SubPage
  +        # real link: $frontpage > WikiName > WikiName/SubPage
  +        $origin=$this->word_repl('"'.$DBInfo->frontpage.'"',$parent,'',1);
         $parent='';
   
         $key=strtok($pagename,'/');
         while($key !== false) {
  -        if ($parent)
  -          $parent.='/'.$key;
  -        else
  +        if ($parent) $parent.='/'.$key;
  +        else {
             $parent.=$key;
  +          $key=$text;
  +        }
           $okey=$key;
           $key=strtok('/');
           if ($key)
  -          $origin.=$DBInfo->arrow.$this->word_repl('"'.$parent.'"',$okey,'',1);
  +          $origin.=$DBInfo->arrow.$this->word_repl('"'.$parent.'"','','',1);
           else
  -          $origin.=$DBInfo->arrow.$okey;
  +          $origin.=$DBInfo->arrow.$this->word_repl('"'.$parent.'"',$okey,'',1);
         }
         # reset pagelinks
         $this->pagelinks=array();
  @@ -3295,6 +3259,8 @@
         if ($DBInfo->use_referer)
           log_referer($_SERVER['HTTP_REFERER'],$pagename);
         flush();
  +#      ob_end_flush();
  +#      ob_end_clean();
   #      $out=ob_get_contents();
   #      ob_end_clean();
   #      print $out;
  
  
  
  1.113     +101 -1    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.112
  retrieving revision 1.113
  diff -u -r1.112 -r1.113
  --- wikilib.php	28 Aug 2004 07:46:50 -0000	1.112
  +++ wikilib.php	30 Aug 2004 06:25:47 -0000	1.113
  @@ -11,7 +11,41 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.112 2004/08/28 07:46:50 wkpark Exp $
  +// $Id: wikilib.php,v 1.113 2004/08/30 06:25:47 wkpark Exp $
  +
  +function _preg_escape($val) {
  +  return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  +}
  +
  +function _preg_search_escape($val) {
  +  return preg_replace('/([\/]{1})/','\\\\\1',$val);
  +}
  +
  +function get_scriptname() {
  +  // Return full URL of current page.
  +  // $_SERVER["SCRIPT_NAME"] has bad value under CGI mode
  +  // set 'cgi.fix_pathinfo=1' in the php.ini under
  +  // apache 2.0.x + php4.2.x Win32
  +  return $_SERVER["SCRIPT_NAME"];
  +}
  +
  +function _rawurlencode($url) {
  +  $name=rawurlencode($url);
  +  $urlname=preg_replace(array('/%2F/i','/%7E/i'),array('/','~'),$name);
  +  return $urlname;
  +}
  +
  +function _urlencode($url) {
  +  #$name=urlencode(strtr($url,"+"," "));
  +  #return preg_replace(array('/%2F/i','/%7E/i','/%23/'),array('/','~','#'),$name);
  +  return preg_replace("/([^a-z0-9\/\?\.\+~#&:;=%\-]{1})/ie","'%'.strtoupper(dechex(ord('\\1')))",$url);
  +}
  +
  +function qualifiedUrl($url) {
  +  if (substr($url,0,7)=="http://")
  +    return $url;
  +  return "http://$_SERVER[HTTP_HOST]$url";
  +}
   
   function find_needle($body,$needle,$exclude='',$count=0) {
     if (!$body) return '';
  @@ -34,6 +68,72 @@
       #return preg_replace("/[\?!$%\.\^;&\*()_\+\|\[\] ]/","",ucwords($title));
       return str_replace(" ","",ucwords($title));
     return $title;
  +}
  +
  +function normalize_word($word,$group='',$pagename='',$nogroup=0) {
  +  if ($word[0]=='[') $word=substr($word,1,-1);
  +  if ($word[0]=='"') $word=substr($word,1,-1);
  +  $page=$word;
  +
  +  # User namespace extension
  +  if ($page[0]=='~' and ($p=strpos($page,'/'))) {
  +    # change ~User/Page to User~Page
  +    $main_page=$page;
  +    $page=$text=substr($page,1,$p-1).'~'.substr($page,$p+1);
  +    return array($page,$text,$main_page);
  +  }
  +    
  +  if ($page[0]=='.' and preg_match('/^(\.{1,2})\//',$page,$match)) {
  +    if ($match[1] == '..') {
  +      if (($pos = strrpos($pagename,'/')) > 0) {
  +        $upper=substr($pagename,0,$pos);
  +        $page=substr($page,2);
  +        if ($page == '/') $page=$upper;
  +        else $page=$upper.$page;
  +      } else {
  +        $page=substr($page,3);
  +        if ($page == '') $page=substr($pagename,strlen($group));
  +        else if ($group) $page=$group.$page;
  +      }
  +    } else {
  +      $page=substr($page,1);
  +      if ($page == '/') $page='';
  +      $page=$pagename.$page;
  +    }
  +    return array($page,$text,$main_page);
  +  }
  +
  +  if ($page[0]=='/') { # SubPage
  +    $page=$pagename.$page;
  +  } else if ($tok=strtok($page,'.')) {
  +    if ($tok=='Main') {
  +      # Main.MoniWiki => MoniWiki
  +      $page=$text=strtok('');
  +      return array($page,$text,$main_page);
  +    } else if (strpos($tok,'~') === false) {
  +      # Ko~Hello.World =x=> Ko~Hello~World
  +      # Ko.Hello => Ko~Hello
  +
  +      #$page=preg_replace('/\./','~',$page,1);
  +      $npage=preg_replace('/(?<!\\\\)\./','~',$page,1);
  +      if ($npage == $page) $page=preg_replace('/(\\\.)/','.',$page,1);
  +      else $page=$npage;
  +
  +      $text=$main_page=strtok('');
  +    }
  +  }
  +  if (!$nogroup and $group and !strpos($page,'~')) {
  +    # UserNameSpace pages: e.g.) Ko~MoniWiki etc.
  +    if ($page[0]=='/') {
  +      # /MoniWiki => MoniWiki
  +      $page=$text=substr($page,1);
  +    } else {
  +      $main_page=$text=$page;
  +      $page=$group.$page;
  +    }
  +  }
  +
  +  return array($page,$text,$main_page);
   }
   
   function get_title($page) {
  
  
  


wkpark      2004/08/30 15:27:17

  Modified:    plugin   Navigation.php
  Log:
  extract normalize_word()
  
  Revision  Changes    Path
  1.2       +33 -30    moniwiki/plugin/Navigation.php
  
  Index: Navigation.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Navigation.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Navigation.php	28 Aug 2004 16:18:05 -0000	1.1
  +++ Navigation.php	30 Aug 2004 06:27:17 -0000	1.2
  @@ -5,28 +5,7 @@
   //
   // Usage: [[Navigation(IndexPage)]]
   //
  -// $Id: Navigation.php,v 1.1 2004/08/28 16:18:05 wkpark Exp $
  -
  -function normalize_word($page,$word) {
  -  if ($word[0]=='/') { # SubPage
  -    $word=$page.$word;
  -  } else if ($word[0]=='.' and preg_match('/^(\.{1,2})\//',$word,$match)) {
  -    if ($match[1] == '..') {
  -      $pos=strrpos($page,"/");
  -      if ($pos > 0) $upper=substr($page,0,$pos);
  -      if ($upper) {
  -        $word=substr($word,2);
  -        if ($word == '/') $word=$upper;
  -        else $word=$upper.$word;
  -      }
  -    } else {
  -      $word=substr($word,1);
  -      if ($word == '/') $word='';
  -      $word=$page.$word;
  -    }
  -  }
  -  return $word;
  -}
  +// $Id: Navigation.php,v 1.2 2004/08/30 06:27:17 wkpark Exp $
   
   function macro_Navigation($formatter,$value) {
     global $DBInfo;
  @@ -34,29 +13,53 @@
     if (!$value or !$DBInfo->hasPage($value))
       return '[[Index('._("No Index page found").')]]';
   
  -  $action=1;
  +  preg_match('/([^,]+),?\s*,?(.*)/',$value,$match);
  +  $opts=explode(',',$match[2]);
  +  $value=$match[1];
  +  $use_action=0;
  +  if (in_array('action',$opts)) $use_action=1;
   
     $pg=$DBInfo->getPage($value);
     $lines=explode("\n",$pg->get_raw_body());
   
  +  $group='';
  +  $current=$formatter->page->name;
  +  if ($formatter->group)
  +    $current=preg_replace('/~/','.',$formatter->page->name,1);
  +  if (strpos($value,'~')) {
  +    $group=strtok($value,'~').'~';
  +    $page=strtok('');
  +  }
  +
  +#  print $current;
  +
     $indices=array();
     $count=0;
     foreach ($lines as $line) {
       if (preg_match("/^\s+(\*|\d+\.)\s+(?<!\!)($formatter->wordrule)/",$line,$match)) {
  -      $indices[]=normalize_word($value,$match[2]);
  +      $word=$match[2];
  +      if ($word[0]=='[') $word=substr($word,1,-1);
  +      if ($word[0]=='"') $word=substr($word,1,-1);
  +
  +      list($index,$text,$dummy)= normalize_word($word,$group,$page);
  +      if ($group) $indices[]=preg_replace('/~/','.',$index,1);
  +      else $indices[]=$index;
         $count++;
       }
     }
  +
  +  #print_r($indices);
     if ($count > 1) {
       $prev='';
  -    $index=$value;
  +    if ($group) $index=preg_replace('/~/','.',$value,1);
  +    else $index=$value;
       $next=$indices[0];
     }
   
     for ($i=0;$i<$count;$i++) {
       #print $indices[$i];
       #print ':'.$formatter->page->name;
  -    if ($indices[$i]==$formatter->page->name) {
  +    if ($indices[$i]==$current) {
         if ($i > 0) $prev=$indices[$i-1];
         if ($i < ($count - 1)) {
   	$next=$indices[$i+1];
  @@ -67,19 +70,19 @@
     }
   
     if ($count > 1) {
  -    if ($action) {
  +    if ($use_action) {
         $save=$formatter->query_string;
         $query='?action=navigation&amp;value='.$value;
         $formatter->query_string=$query;
       }
       $pnut='&laquo; ';
       if ($prev) $pnut.=$formatter->link_repl($prev);
  -    if ($action) $formatter->query_string=$save;
  +    if ($use_action) $formatter->query_string=$save;
       $pnut.=" | ".$formatter->link_repl($index)." | ";
  -    if ($action) $formatter->query_string=$query;
  +    if ($use_action) $formatter->query_string=$query;
       if ($next) $pnut.=$formatter->link_repl($next);
       $pnut.=' &raquo;';
  -    if ($action) $formatter->query_string=$save;
  +    if ($use_action) $formatter->query_string=$save;
     }
     return $pnut;
   }
  
  
  


pyrasis     2004/08/31 16:47:58

  Modified:    plugin   rss_blog.php
  Log:
  convert special characters into HTML entities.
  use &amp; for displaying '&'
  patch summited by myunggoni.
  
  Revision  Changes    Path
  1.19      +14 -1     moniwiki/plugin/rss_blog.php
  
  Index: rss_blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rss_blog.php,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- rss_blog.php	22 Aug 2004 16:09:46 -0000	1.18
  +++ rss_blog.php	31 Aug 2004 07:47:58 -0000	1.19
  @@ -4,7 +4,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a rss_blog action plugin for the MoniWiki
   //
  -// $Id: rss_blog.php,v 1.18 2004/08/22 16:09:46 pyrasis Exp $
  +// $Id: rss_blog.php,v 1.19 2004/08/31 07:47:58 pyrasis Exp $
   
   if (!function_exists('macro_BlogChanges'))
     if ($plugin=getPlugin('BlogChanges')) include_once("plugin/$plugin.php");
  @@ -155,6 +155,19 @@
         $description='<description><![CDATA['.ob_get_contents().']]></description>';
         ob_end_clean();
     }
  +
  +  /* convert special characters into HTML entities */
  +  $search = array ("'&'",
  +                   "'\"'",
  +                   "'<'",
  +                   "'>'");
  +
  +  $replace = array ("&amp;",
  +                    "&quot;",  
  +                    "&lt;",
  +                    "&gt;");         
  +
  +  $title = preg_replace($search, $replace, $title);
   
     return <<<ITEM
   <item>
  
  
  


wkpark      2004/09/01 00:49:18

  Modified:    plugin   Navigation.php
  Log:
  more fixes
  
  Revision  Changes    Path
  1.3       +4 -3      moniwiki/plugin/Navigation.php
  
  Index: Navigation.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Navigation.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Navigation.php	30 Aug 2004 06:27:17 -0000	1.2
  +++ Navigation.php	31 Aug 2004 15:49:18 -0000	1.3
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Navigation(IndexPage)]]
   //
  -// $Id: Navigation.php,v 1.2 2004/08/30 06:27:17 wkpark Exp $
  +// $Id: Navigation.php,v 1.3 2004/08/31 15:49:18 wkpark Exp $
   
   function macro_Navigation($formatter,$value) {
     global $DBInfo;
  @@ -22,14 +22,15 @@
     $pg=$DBInfo->getPage($value);
     $lines=explode("\n",$pg->get_raw_body());
   
  -  $group='';
  +  $group='';#$formatter->group;
     $current=$formatter->page->name;
     if ($formatter->group)
       $current=preg_replace('/~/','.',$formatter->page->name,1);
     if (strpos($value,'~')) {
       $group=strtok($value,'~').'~';
       $page=strtok('');
  -  }
  +  } else
  +    $page=$value;
   
   #  print $current;
   
  
  
  


wkpark      2004/09/01 00:52:10

  Modified:    plugin   Icon.php
  Log:
  support icon themes: a recent MoinMoin feature adapted
  
  Revision  Changes    Path
  1.3       +10 -5     moniwiki/plugin/Icon.php
  
  Index: Icon.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Icon.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Icon.php	24 Aug 2004 16:53:25 -0000	1.2
  +++ Icon.php	31 Aug 2004 15:52:10 -0000	1.3
  @@ -4,14 +4,19 @@
   // a Icon macro plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: Icon.php,v 1.2 2004/08/24 16:53:25 wkpark Exp $
  +// $Id: Icon.php,v 1.3 2004/08/31 15:52:10 wkpark Exp $
   function macro_Icon($formatter,$value='',$extra='') {
     global $DBInfo;
   
  -  $realdir=basename($DBInfo->imgs_dir);
  -  $dir=strtok($value,'-');
  -  $img=strtok('');
  -  if (is_dir($realdir.'/'.$dir)) $value=$dir.'/'.$img;
  +  if (strpos($value,'-')) {
  +    $dir=strtok($value,'-');
  +    print $dir;
  +    $realdir=basename($DBInfo->imgs_dir);
  +    $img=strtok('');
  +    if (is_dir($realdir.'/'.$dir)) $value=$dir.'/'.$img;
  +  } else if (! preg_match('/\.(gif|png|jpg|jpeg)$/',$value)) {
  +    $value=$DBInfo->iconset.'/'.$value.'.png';
  +  }
   
     $out=$DBInfo->imgs_dir."/$value";
     $out="<img src='$out' border='0' alt='icon' align='middle' />";
  
  
  


wkpark      2004/09/01 00:55:04

  Modified:    plugin   sendping.php
  Log:
  $convmap is now configurable in the config.php
  
  Revision  Changes    Path
  1.9       +5 -5      moniwiki/plugin/sendping.php
  
  Index: sendping.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/sendping.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- sendping.php	12 Aug 2004 10:03:43 -0000	1.8
  +++ sendping.php	31 Aug 2004 15:55:03 -0000	1.9
  @@ -4,7 +4,7 @@
   // a TrackBack send action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: sendping.php,v 1.8 2004/08/12 10:03:43 wkpark Exp $
  +// $Id: sendping.php,v 1.9 2004/08/31 15:55:03 wkpark Exp $
   
   # trackback ping
   function do_sendping($formatter,$options) {
  @@ -101,13 +101,13 @@
   	$excerpt= stripslashes($options['excerpt']);
   
     if ($options['mbencode'] and function_exists('mb_encode_numericentity')) {
  -    if ($checked and function_exists('iconv'))
  +    if ($checked and function_exists('iconv')
  +        and strtolower($DBInfo->charset) != 'utf-8')
         $excerpt=iconv($DBInfo->charset,'utf-8',$excerpt);
   
  -    $convmap=array(0xac00, 0xd7a3, 0x0000, 0xffff); /* for euc-kr */
  -    $new=mb_encode_numericentity($excerpt,$convmap,'utf-8');
  +    $new=mb_encode_numericentity($excerpt,$DBInfo->convmap,'utf-8');
       if ($new) $excerpt=$new;
  -    $new=mb_encode_numericentity($title,$convmap,'utf-8');
  +    $new=mb_encode_numericentity($title,$DBInfo->convmap,'utf-8');
       if ($new) $title=$new;
     }
   
  
  
  


wkpark      2004/09/01 01:04:05

  Modified:    .        wiki.php
  Log:
  add fancy_hr()
  add ^^super script^^ syntax
  support ../PageName ./PageName syntax properly
   (MoinMoin support only ../ syntax)
  rename word_nolink() as nonexists_nolink() etc.
  refactor _table() _table_span()
  fix $diff_type related option name: "fancy_diff" is renamed as "fancy"
  the default $charset is changed from "euc-kr" to "utf-8"
  
  Revision  Changes    Path
  1.167     +44 -28    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.166
  retrieving revision 1.167
  diff -u -r1.166 -r1.167
  --- wiki.php	30 Aug 2004 06:25:47 -0000	1.166
  +++ wiki.php	31 Aug 2004 16:04:02 -0000	1.167
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.166 2004/08/30 06:25:47 wkpark Exp $
  +// $Id: wiki.php,v 1.167 2004/08/31 16:04:02 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.166 $',1,-1);
  +$_revision = substr('$Revision: 1.167 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -411,7 +411,7 @@
       $this->data_dir= './data';
       $this->query_prefix='/';
       $this->umask= 02;
  -    $this->charset='euc-kr';
  +    $this->charset='utf-8';
       $this->lang='auto';
       $this->dba_type="db3";
       $this->use_counter=0;
  @@ -455,8 +455,9 @@
       $this->origin=0;
       $this->arrow=" &#x203a; ";
       $this->home='Home';
  -    $this->diff_type='fancy_diff';
  -    $this->nonexists='nonexists';
  +    $this->diff_type='fancy';
  +    $this->hr_type='simple';
  +    $this->noexists='simple';
       $this->use_sistersites=1;
       $this->use_twinpages=1;
       $this->use_hostname=1;
  @@ -1191,16 +1192,19 @@
       $this->baserule=array("/<([^\s<>])/","/`([^`' ]+)'/","/(?<!`)`([^`]*)`/",
                        "/'''([^']*)'''/","/(?<!')'''(.*)'''(?!')/",
                        "/''([^']*)''/","/(?<!')''(.*)''(?!')/",
  -                     "/\^([^ \^]+)\^(?=\s|$)/","/(?<!,),,([^ ,]+),,(?!,)/",
  -                     "/(?<!_)__([^_]+)__(?!_)/","/^-{4,}/",
  +                     "/\^([^ \^]+)\^(?=\s|$)/","/\^\^([^\^]+)\^\^(?!^)/",
  +                     "/(?<!,),,([^ ,]+),,(?!,)/",
  +                     "/(?<!_)__([^_]+)__(?!_)/","/^(-{4,})/e",
                        "/(?<!-)--([^-]+)--(?!-)/",
                        );
       $this->baserepl=array("&lt;\\1","&#96;\\1'","<tt class='wiki'>\\1</tt>",
                        "<strong>\\1</strong>","<strong>\\1</strong>",
                        "<i>\\1</i>","<i>\\1</i>",
  -                     "<sup>\\1</sup>","<sub>\\1</sub>",
  +                     "<sup>\\1</sup>","<sup>\\1</sup>",
  +                     "<sub>\\1</sub>",
                        "<u>\\1</u>",
  -                     "<div class='separator'><hr class='wiki' /></div>\n",
  +                     "\$this->$DBInfo->hr_type"."_hr('\\1')",
  +                     #"<div class='separator'><hr class='wiki' /></div>\n",
                        "<del>\\1</del>",
                        );
   
  @@ -1239,7 +1243,7 @@
       # "(?<!\!|\[\[)((?:\/?[A-Z]([a-z0-9]+|[A-Z]*(?=[A-Z][a-z0-9]|\b))){2,})\b|".
       # WikiName rule: WikiName ILoveYou (imported from the rule of NoSmoke)
       # protect WikiName rule !WikiName
  -    "(?<![a-z])\!?(?:\/?[A-Z]([A-Z]+[0-9a-z]|[0-9a-z]+[A-Z])[0-9a-zA-Z]*)+\b|".
  +    "(?<![a-z])\!?(?:((\.{1,2})?\/)?[A-Z]([A-Z]+[0-9a-z]|[0-9a-z]+[A-Z])[0-9a-zA-Z]*)+\b|".
       # single bracketed name [Hello World]
       "(?<!\[)\!?\[([^\[:,<\s'][^\[:,>]{1,255})\](?!\])|".
       # bracketed with double quotes ["Hello World"]
  @@ -1576,7 +1580,7 @@
   
     function word_repl($word,$text='',$attr='',$nogroup=0) {
       global $DBInfo;
  -    $nonexists='word_'.$DBInfo->nonexists;
  +    $nonexists='nonexists_'.$DBInfo->nonexists;
       if ($word[0]=='"') { # ["extended wiki name"]
         $page=substr($word,1,-1);
         $word=$page;
  @@ -1607,7 +1611,7 @@
         switch($idx) {
           case 0:
             #return "<a class='nonexistent' href='$url'>?</a>$word";
  -          return call_user_func(array(&$this,"word_$DBInfo->nonexists"),$word,$url);
  +          return call_user_func(array(&$this,$nonexists),$word,$url);
           case -1:
             return "<a href='$url' $attr>$word</a>";
           case -2:
  @@ -1655,23 +1659,23 @@
         }
         $this->pagelinks[$page]=0;
         #return "<a class='nonexistent' href='$url'>?</a>$word";
  -      return call_user_func(array(&$this,"word_$DBInfo->nonexists"),$word,$url);
  +      return call_user_func(array(&$this,$nonexists),$word,$url);
       }
     }
   
  -  function word_nonexists($word,$url) {
  +  function nonexists_simple($word,$url) {
       return "<a class='nonexistent' href='$url'>?</a>$word";
     }
   
  -  function word_nolink($word,$url) {
  +  function nonexists_nolink($word,$url) {
       return "$word";
     }
   
  -  function word_forcelink($word,$url) {
  +  function nonexists_forcelink($word,$url) {
       return "<a class='nonexistent' href='$url'>$word</a>";
     }
   
  -  function word_fancy_nonexists($word,$url) {
  +  function nonexists_fancy($word,$url) {
       global $DBInfo;
       #if (preg_match("/^[a-zA-Z0-9\/~]/",$word))
       if (ord($word[0]) < 125)
  @@ -1824,6 +1828,16 @@
       return $this->link_tag($this->page->urlname,$query_string,$text,$attr);
     }
   
  +  function fancy_hr($rule) {
  +    $sz=($sz=strlen($rule)-4) < 6 ? ($sz ? $sz+2:0):8;
  +    $size=$sz ? " size='$sz'":'';
  +    return "<div class='separator'><hr$size class='wiki' /></div>";
  +  }
  +
  +  function simple_hr() {
  +    return "<div class='separator'><hr class='wiki' /></div>";
  +  }
  +
     function _list($on,$list_type,$numtype="",$closetype="") {
       if ($list_type=="dd") {
         if ($on)
  @@ -1867,22 +1881,24 @@
       $tok=strtok($str,'&');
       $len=strlen($tok)/2;
       $extra=strtok('');
  -    $attr='';
  +    $attr=array();
       if ($extra) {
         $para=substr($extra,3,-1);
         # rowspan
         if (preg_match("/^\|(\d+)$/",$para,$match))
  -        $attr="rowspan='$match[1]' ";
  +        $attr[]="rowspan='$match[1]'";
         else if ($para[0]=='#')
  -        $attr="bgcolor='$para' ";
  +        $attr[]="bgcolor='$para'";
  +      else
  +        $attr[]=$para;
       }
  -    if ($align) $attr.="align='center' ";
  +    if ($align) $attr[]="align='center'";
       if ($len > 1)
  -      $attr.=" align='center' colspan='$len'";
  -    return $attr;
  +      $attr[]="align='center' colspan='$len'";
  +    return implode(' ',$attr);
     }
   
  -  function _table($on,$attr="") {
  +  function _table($on,$attr='') {
       if ($attr) {
         $attr=substr($attr,4,-1);
       }
  @@ -2137,8 +2153,8 @@
            $in_table=0;
         }
         if ($in_table) {
  -         $line=preg_replace('/^((?:\|\|)+(&lt;[^>]+>)?)((\s?)(.*))\|\|$/e',"'<tr class=\"wiki\"><td class=\"wiki\"'.\$this->_table_span('\\1','\\4').'>\\3</td></tr>'",$line);
  -         $line=preg_replace('/((\|\|)+(&lt;[^>]+>)?)(\s?)/e',"'</td><td class=\"wiki\"'.\$this->_table_span('\\1','\\4').'>\\4'",$line);
  +         $line=preg_replace('/^((?:\|\|)+(&lt;[^>]+>)?)((\s?)(.*))\|\|$/e',"'<tr class=\"wiki\"><td class=\"wiki\" '.\$this->_table_span('\\1','\\4').'>\\3</td></tr>'",$line);
  +         $line=preg_replace('/((\|\|)+(&lt;[^>]+>)?)(\s?)/e',"'</td><td class=\"wiki\" '.\$this->_table_span('\\1','\\4').'>\\4'",$line);
            $line=str_replace('\"','"',$line); # revert \\" to \"
         }
   
  @@ -2496,7 +2512,7 @@
         } else {
            $msg= _("Difference between yours and the current");
            if (!$options['raw'])
  -           $ret= call_user_func(array(&$this,$DBInfo->diff_type),$out);
  +           $ret= call_user_func(array(&$this,$DBInfo->diff_type.'_diff'),$out);
            else
              $ret="<pre>$out</pre>\n";
         }
  @@ -2540,7 +2556,7 @@
           $msg=sprintf(_("Difference between r%s and the current"),$rev1.$rev2);
         }
         if (!$options['raw'])
  -        $ret= call_user_func(array(&$this,$DBInfo->diff_type),$out);
  +        $ret= call_user_func(array(&$this,$DBInfo->diff_type.'_diff'),$out);
         else
           $ret="<pre>$out</pre>\n";
       }
  
  
  


wkpark      2004/09/01 01:07:46

  Modified:    .        wikismiley.php
  Log:
  add or remove some smileys
   * more flags added: conform to recent MoinMoin
   * remove duplicated smileys and uncoment some smileys
  
  Revision  Changes    Path
  1.7       +39 -30    moniwiki/wikismiley.php
  
  Index: wikismiley.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikismiley.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- wikismiley.php	6 Jan 2004 23:38:34 -0000	1.6
  +++ wikismiley.php	31 Aug 2004 16:07:45 -0000	1.7
  @@ -1,5 +1,5 @@
   <?php
  -# $Id: wikismiley.php,v 1.6 2004/01/06 23:38:34 wkpark Exp $
  +# $Id: wikismiley.php,v 1.7 2004/08/31 16:07:45 wkpark Exp $
   $smileys=array(
       "X-("=> array(16, 16, 0, "smile/x-(.gif"),
       ":D"=>  array(16, 16, 0, "smile/8-D.gif"),
  @@ -7,24 +7,30 @@
       ":o"=>  array(16, 16, 0, "smile/8-O.gif"),
       ":("=>  array(16, 16, 0, "smile/8-(.gif"),
       ":)"=>  array(16, 16, 0, "smile/8).gif"),
  +    ":))"=> array(16, 16, 0, "smile/8-)).gif"),
  +    ":-("=> array(16, 16, 0, "smile/8-(.gif"),
       ":-)"=> array(16, 16, 0, "smile/8-).gif"),
  +    ":-))"=>array(16, 16, 0, "smile/8-)).gif"),
  +    ":-(=)"=>array(16, 16, 0, "smile/8-lll.gif"),
       "B)"=>  array(16, 16, 0, "smile/B-).gif"),
  -    ":))"=> array(16, 16, 0, "smile/8-)).gif"),
  +    "B-)"=> array(16, 16, 0, "smile/B-).gif"),
       ";)"=>  array(16, 16, 0, "smile/;-).gif"),
  -    ";|"=>  array(16, 16, 0, "smile/;-l.gif"),
  +    ";-)"=> array(16, 16, 0, "smile/;-).gif"),
  +#    ";|"=>  array(16, 16, 0, "smile/;-l.gif"),
       ":I"=>  array(16, 16, 0, "smile/8-I.gif"),
       ":|"=>  array(16, 16, 0, "smile/8-l.gif"),
  -    "|-|"=> array(16, 16, 0, "smile/l-l.gif"),
  +    "|)"=>  array(16, 16, 0, "smile/l-l.gif"),
  +    "|-)"=> array(16, 16, 0, "smile/l-l.gif"),
       "|-I"=> array(16, 16, 0, "smile/l-I.gif"),
  -    "/!\\"=>array(15, 15, 0, "alert.gif"),
  -    "\\?/"=>array(16, 16, 0, "icon-question.png"),
  -    "&lt;!>"=> array(15, 15, 0, "attention.gif"),
  -    "(!)"=> array(16, 16, 0, "idea.png"),
  +    "/!\\"=>array(15, 15, 0, "smile/alert.gif"),
  +    "\\?/"=>array(16, 16, 0, "smile/icon-question.png"),
  +    "&lt;!>"=> array(15, 15, 0, "smile/attention.gif"),
  +    "(!)"=> array(16, 16, 0, "smile/idea.png"),
   
   #    ":&"=>  array(16, 16, 0, "smile/8-%26.gif"),
       ":-X"=> array(16, 16, 0, "smile/8-x.gif"),
       ":-@"=> array(16, 16, 0, "smile/8-@.gif"),
  -    ":p"=> array(16, 16, 0, "smile/8-p.gif"),
  +    ":p"=>  array(16, 16, 0, "smile/8-p.gif"),
       ":^)"=> array(16, 16, 0, "smile/8^).gif"),
       ":_)"=> array(16, 16, 0, "smile/8_).gif"),
   #    ":v)"=> array(16, 16, 0, "smile/8v).gif"),
  @@ -33,14 +39,13 @@
       ":-$"=> array(16, 16, 0, "smile/8-%24.gif"),
   #    "=)"=> array(16, 16, 0, "smile/=).gif"),
       ":-?"=> array(16, 16, 0, "smile/8-question.gif"),
  -#    ":\\"=> array(16, 16, 0, "smile/8-ll.gif"),
  +    ":\\"=> array(16, 16, 0, "smile/8-ll.gif"),
       ">:>"=> array(16, 16, 0, "smile/v8v.gif"),
       "%-)"=> array(16, 16, 0, "smile/%25-).gif"),
   #    "%)"=> array(16, 16, 0, "smile/%25-).gif"),
   #    "%-6"=> array(16, 16, 0, "smile/%25-6.gif"),
   #    "%-9"=> array(16, 16, 0, "smile/%25-9.gif"),
   #    "=)"=> array(16, 16, 0, "smile/=).gif"),
  -    "B-)"=> array(16, 16, 0, "smile/B-).gif"),
   #    ":'-)"=> array(16, 16, 0, "smile/8%27-).gif"),
   #    ":'-("=>array(16, 16, 0, "smile/8%27-(.gif"),
       ":-S"=>array(16, 16, 0, "smile/8-S.gif"),
  @@ -54,7 +59,6 @@
   #    ":^)"=>array(16, 16, 0, "smile/8^).gif"),
   #    ":v)"=>array(16, 16, 0, "smile/8).gif"),
       "@)"=>array(16, 16, 0, "smile/@-).gif"),
  -    "|)"=>array(16, 16, 0, "smile/l-l.gif"),
   #    ":-|"=>array(16, 16, 0, "smile/8-l.gif"),
       "%-^"=>array(16, 16, 0, "smile/%25-^.gif"),
   #    "(:)-)"=>array(16, 16, 0, "smile/(8)-).gif"),
  @@ -78,26 +82,31 @@
   #    "][%"=>array(12, 16, 0, "smile/beer_l.gif"),
   
       # version 1.0
  -    "(./)"=>array(16, 16, 0, "checkbox.png"),
  +    "(./)"=>array(16, 16, 0, "smile/checkbox.png"),
       "{OK}"=>array(12, 16, 0, "smile/thumb-up.gif"),
       "{NO}"=>array(12, 16, 0, "smile/thumb-down.gif"),
  -    "{X}"=>array(16, 16, 0, "icon-error.png"),
  -    "{i}"=>array(16, 16, 0, "icon-info.png"),
  -    "{1}"=>array(15, 13, 0, "prio1.gif"),
  -    "{2}"=>array(15, 13, 0, "prio2.gif"),
  -    "{3}"=>array(15, 13, 0, "prio3.gif"),
  -    "{da}"=>array(16, 16, 0, "da-16.png"),
  -    "{de}"=>array(16, 16, 0, "de-16.png"),
  -    "{en}"=>array(16, 16, 0, "en-16.png"),
  -    "{es}"=>array(16, 16, 0, "pt-16.png"),
  -    "{it}"=>array(16, 16, 0, "it-16.png"),
  -    "{ja}"=>array(16, 16, 0, "ja-16.png"),
  -    "{ko}"=>array(16, 16, 0, "ko-16.png"),
  -    "{nl}"=>array(16, 16, 0, "nl-16.png"),
  -    "{pt}"=>array(16, 16, 0, "pt-16.png"),
  -    "{sv}"=>array(16, 16, 0, "sv-16.png"),
  -    "{us}"=>array(16, 16, 0, "us-16.png"),
  -    "{zh}"=>array(16, 16, 0, "zh-16.png"),
  +    "{X}"=>array(16, 16, 0, "smile/icon-error.png"),
  +    "{i}"=>array(16, 16, 0, "smile/icon-info.png"),
  +    "{1}"=>array(15, 13, 0, "smile/prio1.gif"),
  +    "{2}"=>array(15, 13, 0, "smile/prio2.gif"),
  +    "{3}"=>array(15, 13, 0, "smile/prio3.gif"),
  +    "{br}"=>array(16, 16, 0, "interwiki/br-16.png"),
  +    "{da}"=>array(16, 16, 0, "interwiki/da-16.png"),
  +    "{de}"=>array(16, 16, 0, "interwiki/de-16.png"),
  +    "{en}"=>array(16, 16, 0, "interwiki/en-16.png"),
  +    "{es}"=>array(16, 16, 0, "interwiki/es-16.png"),
  +    "{fi}"=>array(16, 16, 0, "interwiki/fi-16.png"),
  +    "{fr}"=>array(16, 16, 0, "interwiki/fr-16.png"),
  +    "{gr}"=>array(16, 16, 0, "interwiki/gr-16.png"),
  +    "{il}"=>array(16, 16, 0, "interwiki/il-16.png"),
  +    "{it}"=>array(16, 16, 0, "interwiki/it-16.png"),
  +    "{ja}"=>array(16, 16, 0, "interwiki/ja-16.png"),
  +    "{ko}"=>array(16, 16, 0, "interwiki/ko-16.png"),
  +    "{nl}"=>array(16, 16, 0, "interwiki/nl-16.png"),
  +    "{pt}"=>array(16, 16, 0, "interwiki/pt-16.png"),
  +    "{sv}"=>array(16, 16, 0, "interwiki/sv-16.png"),
  +    "{us}"=>array(16, 16, 0, "interwiki/us-16.png"),
  +    "{zh}"=>array(16, 16, 0, "interwiki/zh-16.png"),
   );
   
   ?>
  
  
  


wkpark      2004/09/01 01:09:09

  Added:       imgs/interwiki br-16.png gr-16.png il-16.png
  Log:
  add more flags and fix es-16.png
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/interwiki/br-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/gr-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/il-16.png
  
  	<<Binary file>>
  
  


wkpark      2004/09/01 01:14:56

  Modified:    imgs/moni2 upper.png main.png
  Log:
  make both distinguishable
  
  Revision  Changes    Path
  1.2       +1 -1      moniwiki/imgs/moni2/upper.png
  
  	<<Binary file>>
  
  
  1.2       +3 -1      moniwiki/imgs/moni2/main.png
  
  	<<Binary file>>
  
  


wkpark      2004/09/01 01:15:50

  Added:       plugin   ShowSmiley.php
  Log:
  add a new ShowSmiley macro plugin.
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/ShowSmiley.php
  
  Index: ShowSmiley.php
  ===================================================================
  <?php
  // Copyright 2004 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a ShowSmiley macro plugin for the MoniWiki
  //
  // Usage: [[ShowSmiley]]
  //
  // $Id: ShowSmiley.php,v 1.1 2004/08/31 16:15:49 wkpark Exp $
  
  function macro_ShowSmiley($formatter,$value) {
    global $DBInfo;
  
    $idx=0;
    $out='<table class="wiki"><tr class="wiki">';
    $col=4;
    for ($i=0;$i<$col;$i++) {
      $out.='<td><b>Markup</b></td><td><b>Image</b></td>';
      if (($i+1) % $col) $out.='<td></td>';
    }
    $out.='</tr><tr class="wiki">';
  
    foreach ($DBInfo->smileys as $key=>$value) {
      $skey=str_replace("\\","\\\\",$key);
      $out.= '<td>'.$key.'</td><td>'.$formatter->smiley_repl($key)."</td>";
      $idx++;
      if (!($idx % $col)) $out.='</tr><tr class="wiki">';
      else $out.='<td></td>';
    }
    if ($idx % $col) {
      for (;$idx % $col;++$idx) {
        $out.='<td></td><td></td>';
        if (($idx+1) % $col) $out.='<td></td>';
      }
      $out.='</tr>';
    }
    $out.="<tr class='wiki'><th colspan='".($col*3-1)."'>Total $idx icons</th>";
    $out.='</tr></table>';
    return $out;
  }
  
  // vim:et:sts=2:
  ?>
  
  
  


wkpark      2004/09/01 01:21:48

  Modified:    .        monisetup.php
  Log:
  detect "AcceptPathInfo"
  
  Revision  Changes    Path
  1.17      +34 -3     moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- monisetup.php	26 Aug 2004 19:41:34 -0000	1.16
  +++ monisetup.php	31 Aug 2004 16:21:48 -0000	1.17
  @@ -1,7 +1,7 @@
   <?
   // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.16 2004/08/26 19:41:34 wkpark Exp $
  +// $Id: monisetup.php,v 1.17 2004/08/31 16:21:48 wkpark Exp $
   
   class MoniConfig {
     function MoniConfig($configfile="config.php") {
  @@ -27,6 +27,7 @@
     }
     function _getHostConfig() {
       if (function_exists("dba_open")) {
  +      print '<h3>Check a dba configuration</h3>';
         $tempnam="/tmp/".time();
         if ($db=@dba_open($tempnam,"n","db3"))
           $config['dba_type']="'db3'";
  @@ -36,11 +37,35 @@
           $config['dba_type']="'gdbm'";
   
         if ($db) dba_close($db);
  +      print '<ul><li><b>'.$config['dba_type'].'</b> is selected.</li></ul>';
       }
       preg_match("/Apache\/2\.0\./",$_SERVER['SERVER_SOFTWARE'],$match);
   
  -    if ($match)
  +    if ($match) {
         $config['query_prefix']='"?"';
  +      while (ini_get('allow_url_fopen')) {
  +        print '<h3>Check a AcceptPathInfo setting for Apache 2.0.xx</h3>';
  +        print '<ul>';
  +        $fp=@fopen('http://'.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'].'/pathinfo?action=pathinfo','r');
  +        $out='';
  +        if ($fp) {
  +          while (!feof($fp)) $out.=fgets($fp,2048);
  +        } else {
  +          print "<li><b><a href='http://moniwiki.sf.net/wiki.php/AcceptPathInfo'>AcceptPathInfo</a> <font color='red'>Off</font></b><li>\n";
  +          print '</ul>';
  +          break;
  +        }
  +        fclose($fp);
  +        if ($out[0] == '*') {
  +          print "<li><b><a href='http://moniwiki.sf.net/wiki.php/AcceptPathInfo'>AcceptPathInfo</a> <font color='red'>Off</font></b></li>\n";
  +        } else {
  +          print "<li><b>AcceptPathInfo <font color='blue'>On</font></b></li>\n";
  +          $config['query_prefix']='"/"';
  +        }
  +        print '</ul>';
  +        break;
  +      }
  +    }
   
       $url_prefix= preg_replace("/\/([^\/]+)\.php$/","",$_SERVER['SCRIPT_NAME']);
       $config['url_prefix']="'".$url_prefix."'";
  @@ -49,8 +74,9 @@
       $user = $user ? $user : get_current_user();
       $config['rcs_user']="'".$user."'";
   
  -    if (!file_exists('wikilib.php'))
  +    if (!file_exists('wikilib.php')) {
         $config['include_path']="'.:/usr/local/share/moniwiki:/usr/share/moniwiki'";
  +    }
       return $config;
     }
   
  @@ -372,6 +398,11 @@
   $action=$_GET['action'] or $_POST['action'];
   $newpasswd=$_POST['newpasswd'];
   $oldpasswd=$_POST['oldpasswd'];
  +
  +if ($_GET['action']=='pathinfo') {
  +  print $_SERVER['PATH_INFO'].'****';
  +  return;
  +}
   
   if ($_SERVER['REQUEST_METHOD']=="POST" && $config) {
     $conf=$Config->_getFormConfig($config);
  
  
  


wkpark      2004/09/01 01:52:52

  Modified:    css      kbd.js
  Log:
  fix last changes
  
  Revision  Changes    Path
  1.5       +5 -4      moniwiki/css/kbd.js
  
  Index: kbd.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/kbd.js,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- kbd.js	24 Aug 2004 12:04:08 -0000	1.4
  +++ kbd.js	31 Aug 2004 16:52:51 -0000	1.5
  @@ -6,7 +6,7 @@
   
      distributable under GPL
   
  -   $Id: kbd.js,v 1.4 2004/08/24 12:04:08 wkpark Exp $
  +   $Id: kbd.js,v 1.5 2004/08/31 16:52:51 wkpark Exp $
   
      CHANGES
   
  @@ -206,7 +206,7 @@
   		self.location = url_prefix + _qp + TitleIndex
   	} else if(ch=="e" || ch=="w" || ch=="r") { // Edit or refresh
   		var my=''+self.location;
  -		var idx=my.indexOf(_qp);
  +		var idx=my.indexOf(_ap);
   		if (idx != -1 && my.substr(idx+1,5) == "goto=") {
   			my=my.substr(idx+6,my.length-6);
   			if ((idx=my.indexOf("&")) != -1)
  @@ -216,10 +216,11 @@
   			if (ch == "r") {
   				if ((idx=my.indexOf("#")) != -1)
   					my=my.substring(0,idx);
  -				self.location=url_prefix + _qp + my + _ap + 'action=show';			}
  +				self.location=url_prefix + _qp + my + _ap + 'action=show';
  +			}
   		} else {
   			if (ch == "e" || ch == "w")
  -				self.location += _ap + 'action=edit';
  +				self.location = _ap + 'action=edit';
   			if (ch == "r") {
   				if ((idx=my.indexOf("#")) != -1) {
   					my=my.substring(0,idx);
  
  
  


wkpark      2004/09/01 06:49:05

  Modified:    locale   utf8rules
  Log:
  fix for with no gettext environment
  
  Revision  Changes    Path
  1.2       +1 -0      moniwiki/locale/utf8rules
  
  Index: utf8rules
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/utf8rules,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- utf8rules	10 Aug 2003 13:09:49 -0000	1.1
  +++ utf8rules	31 Aug 2004 21:49:04 -0000	1.2
  @@ -4,6 +4,7 @@
   iconv -f EUC-KR -t UTF-8 po/ko.po |sed 's/EUC-KR/UTF-8/' >po/ko_KR.UTF-8.po
   mkdir -p ko_KR.UTF-8/LC_MESSAGES/
   make ko_KR.UTF-8/LC_MESSAGES/moniwiki.mo
  +make ko_KR.UTF-8/LC_MESSAGES/moniwiki.php
   rm po/ko_KR.UTF-8.po
   #make ko_KR.UTF-8/LC_MESSAGES/moniwiki.php
   
  
  
  


wkpark      2004/09/02 16:01:18

  Modified:    .        wiki.php
  Log:
  * support a simple purple number method
  * rename $purple_icon as $perma_icon
  * new config options $use_purple,$perma_icon added
  * refactor send_page()
  * fix head_repl() using with a back reference expression
  * extend footnote syntax like as [* http://c2.com] [*ward http://c2.com] etc.
  
  Revision  Changes    Path
  1.168     +72 -43    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.167
  retrieving revision 1.168
  diff -u -r1.167 -r1.168
  --- wiki.php	31 Aug 2004 16:04:02 -0000	1.167
  +++ wiki.php	2 Sep 2004 07:01:13 -0000	1.168
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.167 2004/08/31 16:04:02 wkpark Exp $
  +// $Id: wiki.php,v 1.168 2004/09/02 07:01:13 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.167 $',1,-1);
  +$_revision = substr('$Revision: 1.168 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -469,7 +469,9 @@
       $this->inline_latex=0;
       $this->processors=array();
   
  +    $this->perma_icon='#';
       $this->purple_icon='#';
  +    $this->use_purple=0;
   
       # set user-specified configuration
       if ($config) {
  @@ -792,6 +794,7 @@
         if (!preg_match('/([A-Z][a-z0-9]+){2,}/',$id)) $id='['.$id.']';
    
       $body=preg_replace("/@DATE@/","[[Date($time)]]",$body);
  +    $body=preg_replace("/@USERNAME@/","$id",$body);
       $body=preg_replace("/@TIME@/","[[DateTime($time)]]",$body);
       $body=preg_replace("/@SIG@/","-- $id [[DateTime($time)]]",$body);
       $body=preg_replace("/@PAGE@/",$options['page'],$body);
  @@ -1152,7 +1155,9 @@
   
   class Formatter {
     var $sister_idx=1;
  -  var $group="";
  +  var $group='';
  +  var $use_purple=1;
  +  var $purple_number=0;
   
     function Formatter($page="",$options="") {
       global $DBInfo;
  @@ -1169,6 +1174,7 @@
       $this->imgs_dir_url=$DBInfo->imgs_dir_url;
       $this->actions= $DBInfo->actions;
       $this->inline_latex= $DBInfo->inline_latex;
  +    $this->use_purple=$DBInfo->use_purple;
   
       if (($p=strpos($page->name,"~")))
         $this->group=substr($page->name,0,$p+1);
  @@ -1253,6 +1259,7 @@
       # single linkage rule ?hello ?abacus
       #"(\?[A-Z]*[a-z0-9]+)";
       "(\?[A-Za-z0-9]+)";
  +    $this->footrule="\[\*[^\]]*\s[^\]]+\]";
   
       $this->cache= new Cache_text("pagelinks");
     }
  @@ -1303,6 +1310,9 @@
       if (!$this->purple_icon) {
         $this->purple_icon=$DBInfo->purple_icon;
       }
  +    if (!$this->perma_icon) {
  +      $this->perma_icon=$DBInfo->perma_icon;
  +    }
     }
   
     function get_redirect() {
  @@ -1413,7 +1423,8 @@
         $url=substr($url,1,-1);
         $force=1;
       }
  -    if ($url[0]=="{") {
  +    switch ($url[0]) {
  +    case '{':
         $url=substr($url,3,-3);
         if ($url[0]=='#' and ($p=strpos($url,' '))) {
           $col=strtok($url,' '); $url=strtok(' ');
  @@ -1421,19 +1432,32 @@
           return "<font color='$col'>$url</font>";
         }
         return "<tt class='wiki'>$url</tt>"; # No link
  -    } else if ($url[0]=="[") {
  +      break;
  +    case '[':
         $url=substr($url,1,-1);
         return $this->macro_repl($url); # No link
  -    } else if ($url[0]=='$') {
  +      break;
  +    case '$':
         #return processor_latex($this,"#!latex\n".$url);
         $url=preg_replace('/<\/?sup>/','^',$url);
         return $this->processor_repl($this->inline_latex,$url);
  -    }
  -
  -    if ($url[0]=="!") {
  +      break;
  +    case '#': # Anchor syntax in the MoinMoin 1.1
  +      $anchor=strtok($url,' ');
  +      return ($word=strtok('')) ? $this->link_to($anchor,$word):
  +                 "<a name='".($temp=substr($anchor,1))."' id='$temp'></a>";
  +      break;
  +    case '*':
  +      return $this->macro_repl('FootNote',$url);
  +      break;
  +    case '!':
         $url=substr($url,1);
         return $url;
  -    } else
  +      break;
  +    default:
  +      break;
  +    }
  +
       if (strpos($url,":")) {
         if ($url[0]=='a') # attachment:
           return $this->macro_repl('Attachment',substr($url,11));
  @@ -1584,10 +1608,6 @@
       if ($word[0]=='"') { # ["extended wiki name"]
         $page=substr($word,1,-1);
         $word=$page;
  -    } else if ($word[0]=='#') { # Anchor syntax in the MoinMoin 1.1
  -      $anchor=strtok($word,' ');
  -      return ($word=strtok('')) ? $this->link_to($anchor,$word):
  -                 "<a name='".($temp=substr($anchor,1))."' id='$temp'></a>";
       } else
         #$page=preg_replace("/\s+/","",$word); # concat words
         $page=normalize($word); # concat words
  @@ -1693,9 +1713,8 @@
       }
     }
   
  -  function head_repl($left,$head,$right) {
  -    $dep=strlen($left);
  -    if ($dep != strlen($right)) return "$left $head $right";
  +  function head_repl($depth,$head) {
  +    $dep=strlen($depth);
       $this->nobr=1;
   
       $head=str_replace('\"','"',$head); # revert \\" to \"
  @@ -1748,9 +1767,9 @@
       $prefix=$this->toc_prefix;
       if ($this->toc)
         $head="<a href='#toc'>$num</a> $head";
  -    $purple=" <a class='purple' href='#s$prefix-$num'>$this->purple_icon</a>";
  +    $perma=" <a class='perma' href='#s$prefix-$num'>$this->perma_icon</a>";
   
  -    return "$close$open<h$dep><a id='s$prefix-$num' name='s$prefix-$num'></a> $head$purple</h$dep>";
  +    return "$close$open<h$dep><a id='s$prefix-$num' name='s$prefix-$num'></a> $head$perma</h$dep>";
     }
   
     function macro_repl($macro,$value='',$options='') {
  @@ -1854,7 +1873,7 @@
            $list_type="dd></dl";
         $numtype='';
       } if (!$on and $closetype and $closetype !='dd')
  -      $list_type=$list_type."></li";
  +      $list_type=$list_type.'>'.$this->_purple().'</li';
   
       if ($on) {
         if ($numtype) {
  @@ -1907,16 +1926,29 @@
       return "</table>\n";
     }
   
  +  function _purple() {
  +    if (!$this->use_purple) return '';
  +    $id=sprintf('%03d',$this->purple_number++);
  +    $nid='p'.$id;
  +    return "<span class='purple'><a name='$nid' id='$nid'></a><a href='#$nid'>(".$id.")</a></span>";
  +  }
  +
     function _div($on,$in_div) {
  -    static $tag=array("</div>\n","<div>\n");
  +    $tag=array("</div>\n","<div>\n");
       if ($on) $in_div++;
       else {
         if (!$in_div) return '';
         $in_div--;
       }
  -
  +    if (!$on) $purple=$this->_purple();
       #return "(".$in_div.")".$tag[$on];
  -    return $tag[$on];
  +    return $purple.$tag[$on];
  +  }
  +
  +  function _li($on,$empty='') {
  +    $tag=array("</li>\n",'<li>');
  +    if (!$on and !$empty) $purple=$this->_purple();
  +    return $purple.$tag[$on];
     }
   
     function _fixpath() {
  @@ -1976,6 +2008,7 @@
       $in_pre=0;
       $in_table=0;
       $li_open=0;
  +    $li_empty=0;
       $indent_list[0]=0;
       $indent_type[0]="";
   
  @@ -1984,13 +2017,15 @@
       if ($DBInfo->inline_latex) # single line latex syntax
         $wordrule.="(?<=\s|^)\\$([^\\$]+)\\$(?:\s|$)|".
                    "(?<=\s|^)\\$\\$([^\\$]+)\\$\\$(?:\s|$)|";
  +    #if ($DBInfo->builtin_footnote) # builtin footnote support
  +    $wordrule.=$this->footrule.'|';
       $wordrule.=$this->wordrule;
   
       foreach ($lines as $line) {
         # empty line
         if (!strlen($line)) {
           if ($in_pre) { $this->pre_line.="\n";continue;}
  -        if ($in_li) { $text.="<br />\n"; continue;}
  +        if ($in_li) { $text.=$this->_purple()."<br />\n";$li_empty=1; continue;}
           if ($in_table) {
             $text.=$this->_table(0)."<br />\n";$in_table=0; continue;
           } else {
  @@ -2008,9 +2043,10 @@
           continue; # comments
         }
   
  -      if ($in_p == '') {
  -        #$text.="<div>\n";
  -        
  +      if (preg_match('/^-{4,}/',$line)) {
  +        if ($DBInfo->auto_linebreak) $this->nobr=1; // XXX
  +        if ($in_p) { $text.=$this->_div(0,&$in_div); $in_p='';}
  +      } else if ($in_p == '') {
           $text.=$this->_div(1,&$in_div);
           $in_p= $line;
         }
  @@ -2087,8 +2123,6 @@
         # rules
         #$line=preg_replace("/^-{4,}/","<hr />\n",$line);
   
  -      if ($DBInfo->auto_linebreak and preg_match('/^-{4,}/',$line))
  -        $this->nobr=1; // XXX
         $line=preg_replace($this->baserule,$this->baserepl,$line);
         #if ($in_p and ($in_pre==1 or $in_li)) $line=$this->_check_p().$line;
   
  @@ -2105,12 +2139,12 @@
              if ($line[0]=='*') {
                $limatch[1]='*';
                $line=preg_replace("/^(\*\s?)/","<li>",$line);
  -             if ($indent_list[$in_li] == $indlen && $indent_type[$in_li]!='dd') $line="</li>\n".$line;
  +             if ($indent_list[$in_li] == $indlen && $indent_type[$in_li]!='dd') $line=$this->_li(0).$line;
                $numtype="";
                $indtype="ul";
              } elseif (preg_match("/^((\d+|[aAiI])\.)(#\d+)?\s/",$line,$limatch)){
                $line=preg_replace("/^((\d+|[aAiI])\.(#\d+)?)/","<li>",$line);
  -             if ($indent_list[$in_li] == $indlen) $line="</li>\n".$line;
  +             if ($indent_list[$in_li] == $indlen) $line=$this->_li(0).$line;
                $numtype=$limatch[2][0];
                if ($limatch[3])
                  $numtype.=substr($limatch[3],1);
  @@ -2131,12 +2165,13 @@
            } else if ($indent_list[$in_li] > $indlen) {
               while($in_li >= 0 && $indent_list[$in_li] > $indlen) {
                  if ($indent_type[$in_li]!='dd' && $li_open == $in_li)
  -                 $close.="</li>\n";
  +                 $close.=$this->_li(0,$li_empty);
                  $close.=$this->_list(0,$indent_type[$in_li],"",$indent_type[$in_li-1]);
                  unset($indent_list[$in_li]);
                  unset($indent_type[$in_li]);
                  $in_li--;
               }
  +            $li_empty=0;
            }
            if ($indent_list[$in_li] <= $indlen || $limatch) $li_open=$in_li;
            else $li_open=0;
  @@ -2163,8 +2198,8 @@
         $line=preg_replace("/(".$wordrule.")/e","\$this->link_repl('\\1')",$line);
   
         # Headings
  -      $line=preg_replace("/(?<!=)(={1,5})\s+(.*)\s+(={1,5})\s?$/e",
  -                         "\$this->head_repl('\\1','\\2','\\3')",$line);
  +      $line=preg_replace("/(?<!=)(={1,5})\s+(.*)\s+\\1\s?$/e",
  +                         "\$this->head_repl('\\1','\\2')",$line);
         #$line=preg_replace("/(?<!=)(={1,5})\s+(.*)\s+(={1,5})\s?$/",
         #                    $this->head_repl("$1","$2","$3"),$line);
   
  @@ -2176,11 +2211,6 @@
   
         $line=preg_replace($this->extrarule,$this->extrarepl,$line);
   
  -#      if ($in_p == '') {
  -#        $text.=$this->_div(1,&$in_div);
  -#        $in_p= $line;
  -#      }
  -
         $line=$close.$open.$line;
         $open="";$close="";
   
  @@ -2208,8 +2238,6 @@
                   break;
                 }
               }
  -            #if ($pre_style) $class.=' '.$pre_style;
  -            #if ($pre_style) $class=$pre_style.' '.$class;
               $line="<pre $attr>\n".$pre."</pre>\n".$line;
               $in_quote=0;
            } else {
  @@ -2247,7 +2275,7 @@
       # close indent
       while($in_li >= 0 && $indent_list[$in_li] > 0) {
         if ($indent_type[$in_li]!='dd' && $li_open == $in_li)
  -        $close.="</li>\n";
  +        $close.=$this->_li(0);
   #     $close.=$this->_list(0,$indent_type[$in_li]);
         $close.=$this->_list(0,$indent_type[$in_li],"",$indent_type[$in_li-1]);
         unset($indent_list[$in_li]);
  @@ -2727,7 +2755,7 @@
   </style>
   EOS;
   
  -      print "\n</head>\n<body>\n";
  +      print "\n</head>\n<body $options[attr]>\n";
       }
     }
   
  @@ -3255,6 +3283,7 @@
   
       #$formatter->get_redirect();
       $formatter->pi=$formatter->get_instructions();
  +    $options['attr']='ondblclick="location.href=\'?action=edit\'"';
       $formatter->send_header("",$options);
       $formatter->send_title("","",$options);
   
  
  
  


wkpark      2004/09/02 19:00:01

  Modified:    .        wikilib.php
  Log:
  * UploadFile.php: $upload_changes support added
  * Attachment.php: support selective deletefile action
    support subpage attachment syntax conform to MoinMoin (attachment:Sub/my.png)
    support action args (attachment:my.png?action=deletefile)
    support top level attachemnt syntax to replace Uploads:my.png method
    (attachment:/my.png)
  * wikilib.php (macro_FootNote): support new footnote syntax
   [* http://c2.com] -> [1]
   [*ward http://c2.com] -> [ward]
   [*+ http://c2.com] -> dagger notation []
   [** http://c2.com] -> asterisk notation [*]
  
  Revision  Changes    Path
  1.114     +79 -23    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.113
  retrieving revision 1.114
  diff -u -r1.113 -r1.114
  --- wikilib.php	30 Aug 2004 06:25:47 -0000	1.113
  +++ wikilib.php	2 Sep 2004 10:00:01 -0000	1.114
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.113 2004/08/30 06:25:47 wkpark Exp $
  +// $Id: wikilib.php,v 1.114 2004/09/02 10:00:01 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -650,23 +650,34 @@
   function do_post_DeleteFile($formatter,$options) {
     global $DBInfo;
   
  -  if ($options['value']) {
  -    $key=$DBInfo->pageToKeyname(urldecode($options['value']));
  -    $dir=$DBInfo->upload_dir."/$key";
  +  if ($_SERVER['REQUEST_METHOD']=="POST") {
  +    if ($options['value']) {
  +      $key=$DBInfo->pageToKeyname(urldecode($options['value']));
  +      $dir=$DBInfo->upload_dir."/$key";
  +    } else {
  +      $dir=$DBInfo->upload_dir;
  +    }
     } else {
  -    $dir=$DBInfo->upload_dir;
  +    // GET with 'value=filename' query string
  +    $file=$options['value'];
     }
   
  -  if (isset($options['files'])) {
  +  if (isset($options['files']) or isset($options['file'])) {
  +    if (isset($options['file'])) {
  +      $options['files']=array();
  +      $options['files'][]=$options['file'];
  +    }
  +      
       if ($options['files']) {
         foreach ($options['files'] as $file) {
           $key=$DBInfo->pageToKeyname($file);
   
           if (!is_dir($dir."/".$file) && !is_dir($dir."/".$key)) {
  +          $fdir=$options['value'] ? $options['value'].':':'';
             if (@unlink($dir."/".$file))
  -            $log.=sprintf(_("File '%s' is deleted")."<br />",$file);
  +            $log.=sprintf(_("File '%s' is deleted")."<br />",$fdir.$file);
             else
  -            $log.=sprintf(_("Fail to delete '%s'")."<br />",$file);
  +            $log.=sprintf(_("Fail to delete '%s'")."<br />",$fdir.$file);
           } else {
             if ($key != $file)
               $realfile = $key;
  @@ -680,17 +691,35 @@
         $formatter->send_header("",$options);
         $formatter->send_title($title,"",$options);
         print $log;
  -      $formatter->send_footer();
  +      $formatter->send_footer('',$options);
         return;
       } else
         $title = sprintf(_("No files are selected !"));
  +  } else if ($file) {
  +    list($page,$file)=explode(':',$file);
  +    if (!$file) {
  +      $file=$page;
  +      $page=$formatter->page->name;
  +    }
  +    $link=$formatter->link_url($formatter->page->urlname);
  +    $out="<form method='post' action='$link'>";
  +    $out.="<input type='hidden' name='action' value='DeleteFile' />\n";
  +    if ($page)
  +      $out.="<input type='hidden' name='value' value='$page' />\n";
  +    $out.="<input type='hidden' name='file' value='$file' />\n<h2>";
  +    $out.=sprintf(_("Did you really want to delete '%s' ?"),$file).'</h2>';
  +    if ($DBInfo->security->is_protected("deletefile",$options))
  +      $out.=_("Password").": <input type='password' name='passwd' size='10' />\n";
  +    $out.="<input type='submit' value='"._("Delete")."' /></form>\n";
  +    $title = sprintf(_("Delete selected file"));
  +    $log=$out;
     } else {
       $title = sprintf(_("No files are selected !"));
     }
     $formatter->send_header("",$options);
     $formatter->send_title($title,"",$options);
     print $log;
  -  $formatter->send_footer();
  +  $formatter->send_footer('',$options);
     return;
   }
   
  @@ -707,7 +736,7 @@
       $title = sprintf(_("\"%s\" is deleted !"), $page->name);
       $formatter->send_header("",$options);
       $formatter->send_title($title,"",$options);
  -    $formatter->send_footer();
  +    $formatter->send_footer('',$options);
       return;
     } else if ($options['name']) {
       $options['msg'] = _("Please delete this file manually.");
  @@ -727,7 +756,7 @@
       <input type='submit' value='Delete page' />
       </form>";
   #  $formatter->send_page();
  -  $formatter->send_footer();
  +  $formatter->send_footer('',$options);
   }
   
   function form_permission($mode) {
  @@ -1501,11 +1530,43 @@
   
     $text="[$idx&#093";
     $fnidx="fn".$idx;
  -  if ($value[0] == "*") {
  -#    $dum=explode(" ",$value,2); XXX
  -    $p=strrpos($value,'*')+1;
  -    $text=substr($value,0,$p);
  -    $value=substr($value,$p);
  +  if ($value[0] == '*') {
  +    if ($value[1] == '*') {
  +      # [** http://foobar.com] -> [*]
  +      # [*** http://foobar.com] -> [**]
  +      $p=strrpos($value,'*');
  +      $len=strlen(substr($value,1,$p));
  +      $text=str_repeat('*',$len);
  +      $value=substr($value,$p+1);
  +    } else if ($value[1] == '+') {
  +      $dagger=array('','&#x2020;',
  +                    '&#x2020;&#x2020;',
  +                    '&#x2020;&#x2020;&#x2020;',
  +                    '&#x2021;',
  +                    '&#x2021;&#x2021;',
  +                    '&#x2021;&#x2021;&#x2021;');
  +      $p=strrpos($value,'+');
  +      $len=strlen(substr($value,0,$p));
  +      $text=$dagger[$len];
  +      $value=substr($value,$p+1);
  +    } else if ($value[1] == ' ') {
  +      # [* http://c2.com] -> [1]
  +      $value=substr($value,2);
  +    } else {
  +      # [*ward http://c2.com] -> [ward]
  +      $text=strtok($value,' ');
  +      $value=strtok('');
  +      $fnidx=substr($text,1);
  +      $text[0]='[';
  +      $text=$text.'&#093;'; # make a text as [Alex77]
  +      if ($value) {
  +        $formatter->foot_idx--; # undo ++.
  +        if (0 === strcmp($fnidx , (int)$fnidx)) $fnidx="fn$fnidx";
  +      } else {
  +        if (0 === strcmp($fnidx , (int)$fnidx)) $fnidx="fn$fnidx";
  +        return "<tt class='foot'><a href='#$fnidx'>$text</a></tt>";
  +      }
  +    }
     } else if ($value[0] == "[") {
       $dum=explode("]",$value,2);
       if (trim($dum[1])) {
  @@ -1549,12 +1610,11 @@
    $lines=explode("\n",$body);
    foreach ($lines as $line) {
      $line=preg_replace("/\n$/", "", $line); # strip \n
  -   preg_match("/(?<!=)(={1,5})\s(#?)(.*)\s+(={1,5})\s?$/",$line,$match);
  +   preg_match("/(?<!=)(={1,5})\s(#?)(.*)\s+\\1\s?$/",$line,$match);
   
      if (!$match) continue;
   
      $dep=strlen($match[1]);
  -   if ($dep != strlen($match[4])) continue;
      $head=str_replace("<","&lt;",$match[3]);
      # strip some basic wikitags
      # $formatter->baserepl,$head);
  @@ -1567,10 +1627,6 @@
        $depth=$dep - $depth_top + 1;
        if ($depth <= 0) $depth=1;
      }
  -
  -#   $depth=$dep;
  -#   if ($dep==1) $depth++; # depth 1 is regarded same as depth 2
  -#   $depth--;
   
      $num="".$head_num;
      $odepth=$head_dep;
  
  
  


wkpark      2004/09/02 19:00:08

  Modified:    plugin   Attachment.php UploadFile.php
  Log:
  * UploadFile.php: $upload_changes support added
  * Attachment.php: support selective deletefile action
    support subpage attachment syntax conform to MoinMoin (attachment:Sub/my.png)
    support action args (attachment:my.png?action=deletefile)
    support top level attachemnt syntax to replace Uploads:my.png method
    (attachment:/my.png)
  * wikilib.php (macro_FootNote): support new footnote syntax
   [* http://c2.com] -> [1]
   [*ward http://c2.com] -> [ward]
   [*+ http://c2.com] -> dagger notation []
   [** http://c2.com] -> asterisk notation [*]
  
  Revision  Changes    Path
  1.8       +44 -21    moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Attachment.php	27 Aug 2004 01:52:01 -0000	1.7
  +++ Attachment.php	2 Sep 2004 10:00:01 -0000	1.8
  @@ -2,58 +2,81 @@
   // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a Attachment macro plugin for the MoniWiki
  -// vim:et:ts=2:
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.7 2004/08/27 01:52:01 wkpark Exp $
  +// $Id: Attachment.php,v 1.8 2004/09/02 10:00:01 wkpark Exp $
   
   function macro_Attachment($formatter,$value) {
     global $DBInfo;
   
     $attr='';
  +  $myaction='download';
   
  -  if (($dummy=strtok($value,':')) and $DBInfo->hasPage($dummy)) {
  -    $key=$DBInfo->pageToKeyname($dummy);
  -    $value=strtok('');
  -    $pagename=$dummy;
  -  } else {
  -    $pagename=$formatter->page->name;
  -    $key=$DBInfo->pageToKeyname($formatter->page->name);
  -  }
   
     if (($dummy=strpos($value,'?'))) {
  +    # for attachment: syntax
       parse_str(substr($value,$dummy+1),$attrs);
       $value=substr($value,0,$dummy);
  -    foreach ($attrs as $name=>$val)
  -      $attr.="$name=\"$val\" ";
  +    foreach ($attrs as $name=>$val) {
  +      if ($name=='action')
  +        $myaction=$val;
  +      else
  +        $attr.="$name=\"$val\" ";
  +    }
   
       if ($attrs['align']) $attr.='class="img'.ucfirst($attrs['align']).'" ';
     } else if (($dummy=strpos($value,','))) {
  +    # for Attachment macro
       $args=explode(',',substr($value,$dummy+1));
       $value=substr($value,0,$dummy);
       foreach ($args as $arg)
         $attr.="$arg ";
     }
  -  $upload_file=$DBInfo->upload_dir."/$key/$value";
  +
  +  if (($p=strpos($value,':')) !== false or ($p=strpos($value,'/')) !== false) {
  +    $subpage=substr($value,0,$p);
  +    $file=substr($value,$p+1);
  +    $value=$subpage.':'.$file; # normalize page arg
  +    if ($subpage and $DBInfo->hasPage($subpage)) {
  +      $pagename=$subpage;
  +      $key=$DBInfo->pageToKeyname($subpage);
  +    } else {
  +      $pagename='';
  +      $key='';
  +    }
  +    $dir=$key ? $DBInfo->upload_dir.'/'.$key:$DBInfo->upload_dir;
  +  } else {
  +    $pagename=$formatter->page->name;
  +    $key=$DBInfo->pageToKeyname($formatter->page->name);
  +    $dir=$DBInfo->upload_dir.'/'.$key;
  +    $file=$value;
  +  }
  +  // check file name XXX
  +  if (!$file) return 'attachment:/';
  +
  +  $upload_file=$dir.'/'.$file;
   
     if (file_exists($upload_file)) {
  -    if (preg_match("/\.(png|gif|jpeg|jpg)$/i",$upload_file)) {
  +    if (preg_match("/\.(png|gif|jpeg|jpg)$/i",$upload_file)
  +       and $myaction == 'download') {
         if ($key != $pagename)
           $url=$formatter->link_url(_urlencode($pagename),"?action=download&amp;value=$value");
         else
           $url=$DBInfo->url_prefix."/".$upload_file;
  -      return "<span class=\"imgAttach\"><img src='$url' alt='$value' $attr/></span>";
  -    } else
  +      return "<span class=\"imgAttach\"><img src='$url' alt='$file' $attr/></span>";
  +    } else {
  +
         return "<span class=\"attach\"><img align='middle' src='$DBInfo->imgs_dir_interwiki".'uploads-16.png\' />'.
  -        $formatter->link_tag(_urlencode($pagename),"?action=download&amp;value=$value",$value).'</span>';
  +        $formatter->link_tag(_urlencode($pagename),"?action=$myaction&amp;value=$value",$file).'</span>';
  +    }
     }
     if ($pagename == $formatter->page->name)
  -    return '<span class="attach">'.$formatter->link_to("?action=UploadFile&amp;rename=$value",sprintf(_("Upload new Attachment \"%s\""),$value)).'</span>';
  +    return '<span class="attach">'.$formatter->link_to("?action=UploadFile&amp;rename=$file",sprintf(_("Upload new Attachment \"%s\""),$file)).'</span>';
   
  -  $p=$DBInfo->getPage($pagename);
  -  $f=new Formatter($p);
  -    return '<span class="attach">'.$f->link_to("?action=UploadFile&amp;rename=$value",sprintf(_("Upload new Attachment \"%s\" on the \"%s\""),$value, $pagename)).'</span>';
  +  if (!$pagename) $pagename='UploadFile';
  +  return '<span class="attach">'.$formatter->link_tag($pagename,"?action=UploadFile&amp;rename=$file",sprintf(_("Upload new Attachment \"%s\" on the \"%s\""),$file, $pagename)).'</span>';
   }
   
  +// vim:et:sts=2:
   ?>
  
  
  
  1.7       +18 -6     moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- UploadFile.php	13 Aug 2004 16:44:18 -0000	1.6
  +++ UploadFile.php	2 Sep 2004 10:00:01 -0000	1.7
  @@ -4,7 +4,7 @@
   // a UploadFile plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: UploadFile.php,v 1.6 2004/08/13 16:44:18 wkpark Exp $
  +// $Id: UploadFile.php,v 1.7 2004/09/02 10:00:01 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -113,17 +113,29 @@
     $comment.="'$upfilename' ";
   
     $title.=sprintf(_("File \"%s\" is uploaded successfully"),$upfilename).'<br />';
  -  if ($key == 'UploadFile')
  -    $msg.= "<ins>Uploads:$upfilename</ins><br />";
  -  else {
  +  if ($key == 'UploadFile') {
  +    $msg.= "<ins>Uploads:$upfilename</ins> or<br />";
  +    $msg.= "<ins>attachment:/$upfilename</ins><br />";
  +    $log_entry=" * attachment:/$upfilename?action=deletefile . . . @USERNAME@ @DATE@\n";
  +  } else {
       $msg.= "<ins>attachment:$upfilename</ins> or<br />";
  -    $msg.= "<ins>attachment:".$formatter->page->name.":$upfilename</ins><br />";
  +    $msg.= "<ins>attachment:".$formatter->page->name."/$upfilename</ins><br />";
  +    $log_entry=" * attachment:".$formatter->page->name."/$upfilename?action=deletefile . . . @USERNAME@ @DATE@\n";
     }
   
     } // multiple upload
   
     $comment.="uploaded";
  -  $DBInfo->addLogEntry($key, $REMOTE_ADDR,$comment,"UPLOAD");
  +  if (!empty($DBInfo->upload_changes)) {
  +    $p=$DBInfo->getPage($DBInfo->upload_changes);
  +    $raw_body=$p->_get_raw_body();
  +    if ($raw_body and $raw_body[strlen($raw_body)-1] != "\n")
  +      $raw_body.="\n";
  +    $raw_body.=$log_entry;
  +    $p->write($raw_body);
  +    $DBInfo->savePage(&$p,$comment,$options);
  +  } else
  +    $DBInfo->addLogEntry($key, $REMOTE_ADDR,$comment,"UPLOAD");
     
     $formatter->send_header("",$options);
     if ($uploaded < 2) {
  
  
  


wkpark      2004/09/02 19:03:48

  Modified:    plugin   Comment.php
  Log:
  fix to validate XHTML
  
  Revision  Changes    Path
  1.8       +3 -3      moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Comment.php	26 Aug 2004 20:06:02 -0000	1.7
  +++ Comment.php	2 Sep 2004 10:03:47 -0000	1.8
  @@ -6,7 +6,7 @@
   // Usage: [[Comment]], ?action=comment
   //
   //
  -// $Id: Comment.php,v 1.7 2004/08/26 20:06:02 wkpark Exp $
  +// $Id: Comment.php,v 1.8 2004/09/02 10:03:47 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $HTTP_USER_AGENT;
  @@ -38,8 +38,8 @@
   
     $form = "<form method='post' action='$url'>\n";
     $form.= <<<FORM
  -<textarea class="wiki" id="content" wrap="virtual" name="savetext"
  - rows="$rows" cols="$cols" class="wiki">$savetext</textarea><br />
  +<textarea class="wiki" id="content" name="savetext"
  + rows="$rows" cols="$cols">$savetext</textarea><br />
   FORM;
     if ($options['id'] == 'Anonymous')
       $sig=_("Name").": <input name='name' value='$options[name]' />";
  
  
  


wkpark      2004/09/03 16:30:20

  Modified:    plugin   Gallery.php
  Log:
  fixed PR #300484 and thumbnail related fix
  
  Revision  Changes    Path
  1.12      +16 -17    moniwiki/plugin/Gallery.php
  
  Index: Gallery.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Gallery.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- Gallery.php	27 Aug 2004 02:00:45 -0000	1.11
  +++ Gallery.php	3 Sep 2004 07:30:20 -0000	1.12
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Gallery]]
   //
  -// $Id: Gallery.php,v 1.11 2004/08/27 02:00:45 wkpark Exp $
  +// $Id: Gallery.php,v 1.12 2004/09/03 07:30:20 wkpark Exp $
   
   function get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -70,18 +70,17 @@
   
     $default_width=$DBInfo->gallery_img_width ? $DBInfo->gallery_img_width:600;
   
  -  if ($match[3]) {
  -    $key=$DBInfo->pageToKeyname($value);
  -    if ($key != $value)
  -      $prefix=$formatter->link_url($value,"?action=download&amp;value=");
  -    $dir=$DBInfo->upload_dir."/$key";
  -  } else {
  +  if ($match[3])
  +    # arg has a pagename
  +    $value=$match[3];
  +  else
       $value=$formatter->page->name;
  -    $key=$DBInfo->pageToKeyname($formatter->page->name);
  -    if ($key != $formatter->page->name)
  -       $prefix=$formatter->link_url($formatter->page->name,"?action=download&amp;value=");
  -    $dir=$DBInfo->upload_dir."/$key";
  -  }
  +
  +  $key=$DBInfo->pageToKeyname($value);
  +  if ($key != $value)
  +    $prefix=$formatter->link_url($value,"?action=download&amp;value=");
  +  $dir=$DBInfo->upload_dir."/$key";
  +  if (!$prefix) $prefix=$DBInfo->url_prefix."/".$dir."/";
   
     if (!file_exists($dir)) {
       umask(000);
  @@ -166,8 +165,6 @@
     $out.="<table border='0' cellpadding='2'>\n<tr>\n";
     $idx=1;
   
  -  if (!$prefix) $prefix=$DBInfo->url_prefix."/".$dir."/";
  -
     $col=3;
     $width=$selected ? $default_width:150;
     $perpage=$col*4;
  @@ -189,15 +186,17 @@
     while (list($file,$mtime) = each ($upfiles)) {
       $size=filesize($dir."/".$file);
       $id=rawurlencode($file);
  -    $linksrc=$prefix.$id;
  -    $link=$selected ? $prefix.$id:$formatter->link_url($formatter->page->urlname,"?action=gallery&amp;value=$id");
  +    $linksrc=($key == $value) ? $prefix.$id:
  +      str_replace('value=','value='.$id,$prefix);
  +    $link=$selected ? $linksrc:$formatter->link_url($formatter->page->urlname,"?action=gallery&amp;value=$id");
       $date=date("Y-m-d",$mtime);
       if (preg_match("/\.(jpg|jpeg|gif|png)$/i",$file)) {
         if ($DBInfo->use_covert_thumbs and !file_exists($dir."/thumbnails/".$file)) {
           system("convert -scale ".$width." ".$dir."/".$file." ".$dir."/thumbnails/".$file);
         }
         if (!$selected and file_exists($dir."/thumbnails/".$file)) {
  -        $thumb=$prefix."thumbnails/".rawurlencode($file);
  +        $thumb=($key == $value) ? $prefix.'thumbnails/'.$id:
  +          str_replace('value=','value='.$id,$prefix);
           $object="<img src='$thumb' alt='$file' />";
         } else {
           $nwidth=$width;
  
  
  


wkpark      2004/09/03 16:46:35

  Modified:    plugin   Gallery.php
  Log:
  fix last changes
  
  Revision  Changes    Path
  1.13      +2 -2      moniwiki/plugin/Gallery.php
  
  Index: Gallery.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Gallery.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- Gallery.php	3 Sep 2004 07:30:20 -0000	1.12
  +++ Gallery.php	3 Sep 2004 07:46:32 -0000	1.13
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Gallery]]
   //
  -// $Id: Gallery.php,v 1.12 2004/09/03 07:30:20 wkpark Exp $
  +// $Id: Gallery.php,v 1.13 2004/09/03 07:46:32 wkpark Exp $
   
   function get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -196,7 +196,7 @@
         }
         if (!$selected and file_exists($dir."/thumbnails/".$file)) {
           $thumb=($key == $value) ? $prefix.'thumbnails/'.$id:
  -          str_replace('value=','value='.$id,$prefix);
  +          str_replace('value=','value=thumbnails/'.$id,$prefix);
           $object="<img src='$thumb' alt='$file' />";
         } else {
           $nwidth=$width;
  
  
  


wkpark      2004/09/03 16:47:29

  Modified:    plugin   download.php
  Log:
  support acceptable sub dirs
  
  Revision  Changes    Path
  1.10      +9 -3      moniwiki/plugin/download.php
  
  Index: download.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/download.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- download.php	17 Aug 2004 11:13:27 -0000	1.9
  +++ download.php	3 Sep 2004 07:47:29 -0000	1.10
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // download action plugin for the MoniWiki
   //
  -// $Id: download.php,v 1.9 2004/08/17 11:13:27 wkpark Exp $
  +// $Id: download.php,v 1.10 2004/09/03 07:47:29 wkpark Exp $
   //
   function do_download($formatter,$options) {
     global $DBInfo;
  @@ -27,8 +27,14 @@
       $dir=$DBInfo->upload_dir;
       $handle= opendir($dir);
     }
  -  $file=explode("/",$options['value']);
  -  $file=$file[count($file)-1];
  +  $acceptable_dirs=array('thumbnails');
  +  $file=explode('/',$options['value']);
  +  $subdir='';
  +  if (count($file) > 1)
  +    $subdir=in_array($file[count($file)-2],$acceptable_dirs) ?
  +      $file[count($file)-2].'/':'';
  +
  +  $file=$subdir.$file[count($file)-1];
   
     if (!file_exists("$dir/$file")) 
       return;
  
  
  


wkpark      2004/09/03 21:06:26

  Added:       data     latex.template.sample
  Log:
  add a latex.template file
  
  Revision  Changes    Path
  1.1                  moniwiki/data/latex.template.sample
  
  Index: latex.template.sample
  ===================================================================
  \documentclass[10pt,notitlepage]{article}
  \usepackage{amsmath}
  \usepackage{amssymb}
  \usepackage{amsfonts}
  %%\usepackage[all]{xy}
  %%\usepackage{hangul}
  %%\usepackage{hfont}
  \pagestyle{empty}
  \begin{document}
  @TEX@
  \end{document}
  
  
  


wkpark      2004/09/03 21:11:58

  Modified:    .        wiki.php
  Log:
  fix PR #300482: fix $inline_latex for compatability with older version
  
  Revision  Changes    Path
  1.169     +4 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.168
  retrieving revision 1.169
  diff -u -r1.168 -r1.169
  --- wiki.php	2 Sep 2004 07:01:13 -0000	1.168
  +++ wiki.php	3 Sep 2004 12:11:56 -0000	1.169
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.168 2004/09/02 07:01:13 wkpark Exp $
  +// $Id: wiki.php,v 1.169 2004/09/03 12:11:56 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.168 $',1,-1);
  +$_revision = substr('$Revision: 1.169 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -1173,7 +1173,8 @@
       $this->imgs_dir_interwiki=$DBInfo->imgs_dir_interwiki;
       $this->imgs_dir_url=$DBInfo->imgs_dir_url;
       $this->actions= $DBInfo->actions;
  -    $this->inline_latex= $DBInfo->inline_latex;
  +    $this->inline_latex=
  +      $DBInfo->inline_latex == 1 ? 'latex':$DBInfo->inline_latex;
       $this->use_purple=$DBInfo->use_purple;
   
       if (($p=strpos($page->name,"~")))
  
  
  


wkpark      2004/09/03 21:14:19

  Modified:    plugin/processor latex.php
  Log:
  fix #300482
  add $latex_template, $latex_header options
  
  Revision  Changes    Path
  1.5       +12 -6     moniwiki/plugin/processor/latex.php
  
  Index: latex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/latex.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- latex.php	14 Aug 2004 17:01:50 -0000	1.4
  +++ latex.php	3 Sep 2004 12:14:17 -0000	1.5
  @@ -6,7 +6,7 @@
   // Usage: {{{#!latex
   // $ \alpha $
   // }}}
  -// $Id: latex.php,v 1.4 2004/08/14 17:01:50 wkpark Exp $
  +// $Id: latex.php,v 1.5 2004/09/03 12:14:17 wkpark Exp $
   
   function processor_latex($formatter="",$value="") {
     global $DBInfo;
  @@ -32,15 +32,21 @@
   
     $uniq=md5($tex);
   
  -  $src="\documentclass[10pt,notitlepage]{article}
  -\usepackage{amsmath}
  -\usepackage{amsfonts}
  +  if ($DBInfo->latex_template and file_exists($DBInfo->data_dir.'/'.$DBInfo->latex_template)) {
  +    $src=implode('',file($DBInfo->data_dir.'/'.$DBInfo->latex_template));
  +    $src=str_replace('@TEX@',$tex,$src);
  +  } else {
  +    $src="\\documentclass[10pt,notitlepage]{article}
  +\\usepackage{amsmath}
  +\\usepackage{amssymb}
  +\\usepackage{amsfonts}$DBInfo->latex_header
   %%\usepackage[all]{xy}
  +\\pagestyle{empty}
   \\begin{document}
  -\pagestyle{empty}
   $tex
  -\end{document}
  +\\end{document}
   ";
  +  }
   
     $RM='rm';
     $NULL='/dev/null';
  
  
  


wkpark      2004/09/03 22:13:09

  Modified:    .        wiki.php
  Log:
  add $body_attr option
  
  Revision  Changes    Path
  1.170     +5 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.169
  retrieving revision 1.170
  diff -u -r1.169 -r1.170
  --- wiki.php	3 Sep 2004 12:11:56 -0000	1.169
  +++ wiki.php	3 Sep 2004 13:13:06 -0000	1.170
  @@ -1,5 +1,5 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org> all rights reserved.
  +// Copyright 2003-2004 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING
   //
   // many codes are imported from the MoinMoin
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.169 2004/09/03 12:11:56 wkpark Exp $
  +// $Id: wiki.php,v 1.170 2004/09/03 13:13:06 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.169 $',1,-1);
  +$_revision = substr('$Revision: 1.170 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -3284,7 +3284,8 @@
   
       #$formatter->get_redirect();
       $formatter->pi=$formatter->get_instructions();
  -    $options['attr']='ondblclick="location.href=\'?action=edit\'"';
  +    if ($DBInfo->body_attr)
  +      $options['attr']=$DBInfo->body_attr;
       $formatter->send_header("",$options);
       $formatter->send_title("","",$options);
   
  
  
  


wkpark      2004/09/04 02:41:10

  Modified:    plugin   Icon.php
  Log:
  comment out a debug code
  
  Revision  Changes    Path
  1.4       +4 -4      moniwiki/plugin/Icon.php
  
  Index: Icon.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Icon.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Icon.php	31 Aug 2004 15:52:10 -0000	1.3
  +++ Icon.php	3 Sep 2004 17:41:10 -0000	1.4
  @@ -1,16 +1,15 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2004 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a Icon macro plugin for the MoniWiki
  -// vim:et:ts=2:
   //
  -// $Id: Icon.php,v 1.3 2004/08/31 15:52:10 wkpark Exp $
  +// $Id: Icon.php,v 1.4 2004/09/03 17:41:10 wkpark Exp $
   function macro_Icon($formatter,$value='',$extra='') {
     global $DBInfo;
   
     if (strpos($value,'-')) {
       $dir=strtok($value,'-');
  -    print $dir;
  +    #print $dir;
       $realdir=basename($DBInfo->imgs_dir);
       $img=strtok('');
       if (is_dir($realdir.'/'.$dir)) $value=$dir.'/'.$img;
  @@ -23,4 +22,5 @@
     return $out;
   }
   
  +// vim:et:sts=2:
   ?>
  
  
  


wkpark      2004/09/04 11:35:50

  Modified:    .        wiki.php
  Log:
  rename $noexists as $nonexists
  
  Revision  Changes    Path
  1.171     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.170
  retrieving revision 1.171
  diff -u -r1.170 -r1.171
  --- wiki.php	3 Sep 2004 13:13:06 -0000	1.170
  +++ wiki.php	4 Sep 2004 02:35:50 -0000	1.171
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.170 2004/09/03 13:13:06 wkpark Exp $
  +// $Id: wiki.php,v 1.171 2004/09/04 02:35:50 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.170 $',1,-1);
  +$_revision = substr('$Revision: 1.171 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -457,7 +457,7 @@
       $this->home='Home';
       $this->diff_type='fancy';
       $this->hr_type='simple';
  -    $this->noexists='simple';
  +    $this->nonexists='simple';
       $this->use_sistersites=1;
       $this->use_twinpages=1;
       $this->use_hostname=1;
  
  
  


wkpark      2004/09/04 11:48:51

  Modified:    .        wikilib.php
  Log:
  enclose footnotes with a css class named 'foot' and add a title attribute
  
  Revision  Changes    Path
  1.115     +4 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.114
  retrieving revision 1.115
  diff -u -r1.114 -r1.115
  --- wikilib.php	2 Sep 2004 10:00:01 -0000	1.114
  +++ wikilib.php	4 Sep 2004 02:48:50 -0000	1.115
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.114 2004/09/02 10:00:01 wkpark Exp $
  +// $Id: wikilib.php,v 1.115 2004/09/04 02:48:50 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1521,7 +1521,7 @@
       $foots=preg_replace("/(".$formatter->wordrule.")/e","\$formatter->link_repl('\\1')",$foots);
       unset($formatter->foots);
       if ($foots)
  -      return "<br/><tt class='wiki'>----</tt><br/>\n$foots";
  +      return "<div class='foot'><div class='separator'><tt class='wiki'>----</tt></div>\n$foots</div>";
       return '';
     }
   
  @@ -1587,7 +1587,8 @@
                         "<a id='$fnidx' name='$fnidx'/>".
                         "<a href='#r$fnidx'>$text</a>&#160;</tt> ".
                         "$value<br/>";
  -  return "<tt class='foot'><a id='r$fnidx' name='r$fnidx'/><a href='#$fnidx'>$text</a></tt>";
  +  return "<tt class='foot'><a id='r$fnidx' name='r$fnidx'/>".
  +    "<a href='#$fnidx' title='$value'>$text</a></tt>";
   }
   
   function macro_TableOfContents($formatter="",$value="") {
  
  
  


wkpark      2004/09/04 11:50:38

  Modified:    plugin   rename.php
  Log:
  fix html output of form members
  
  Revision  Changes    Path
  1.6       +3 -3      moniwiki/plugin/rename.php
  
  Index: rename.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rename.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- rename.php	16 Aug 2004 13:29:01 -0000	1.5
  +++ rename.php	4 Sep 2004 02:50:37 -0000	1.6
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a rename action plugin for the MoniWiki
   //
  -// $Id: rename.php,v 1.5 2004/08/16 13:29:01 wkpark Exp $
  +// $Id: rename.php,v 1.6 2004/09/04 02:50:37 wkpark Exp $
   
   function do_post_rename($formatter,$options) {
     global $DBInfo;
  @@ -68,8 +68,8 @@
     if ($DBInfo->security->is_protected("rename",$options))
       print "<tr><td align='right'>"._("Password").": </td><td><input type='password' name='passwd' /> ".
       _("Only WikiMaster can rename this page")."</td></tr>\n";
  -  print "<tr>\n<td colspan='2'>"._("with revision history")."<input type='checkbox' name='history' />";
  -  print " "._("show only")."<input type='checkbox' name='show_only' checked='checked' /></td></tr>\n";
  +  print "<tr><td colspan='2'><input type='checkbox' name='history' />"._("with revision history")."</td></tr>\n";
  +  print "<tr><td colspan='2'><input type='checkbox' name='show_only' checked='checked' />"._("show only")."</td></tr>\n";
     print "<tr><td></td><td><input type='submit' name='button_rename' value='$rename_button' />";
     print " <a href='?action=rename&value=check_backlinks'>"._("Check backlinks").
   "</a>";
  
  
  


wkpark      2004/09/05 00:57:18

  Modified:    plugin   Gallery.php
  Log:
  fixed PR #300487: fix typo
  
  Revision  Changes    Path
  1.14      +2 -2      moniwiki/plugin/Gallery.php
  
  Index: Gallery.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Gallery.php,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- Gallery.php	3 Sep 2004 07:46:32 -0000	1.13
  +++ Gallery.php	4 Sep 2004 15:57:15 -0000	1.14
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Gallery]]
   //
  -// $Id: Gallery.php,v 1.13 2004/09/03 07:46:32 wkpark Exp $
  +// $Id: Gallery.php,v 1.14 2004/09/04 15:57:15 wkpark Exp $
   
   function get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -191,7 +191,7 @@
       $link=$selected ? $linksrc:$formatter->link_url($formatter->page->urlname,"?action=gallery&amp;value=$id");
       $date=date("Y-m-d",$mtime);
       if (preg_match("/\.(jpg|jpeg|gif|png)$/i",$file)) {
  -      if ($DBInfo->use_covert_thumbs and !file_exists($dir."/thumbnails/".$file)) {
  +      if ($DBInfo->use_convert_thumbs and !file_exists($dir."/thumbnails/".$file)) {
           system("convert -scale ".$width." ".$dir."/".$file." ".$dir."/thumbnails/".$file);
         }
         if (!$selected and file_exists($dir."/thumbnails/".$file)) {
  
  
  


wkpark      2004/09/06 23:44:57

  Modified:    .        wiki.php
  Log:
  fix strrpos() related bugs with PHP5.0
  
  Revision  Changes    Path
  1.172     +6 -6      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.171
  retrieving revision 1.172
  diff -u -r1.171 -r1.172
  --- wiki.php	4 Sep 2004 02:35:50 -0000	1.171
  +++ wiki.php	6 Sep 2004 14:44:57 -0000	1.172
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.171 2004/09/04 02:35:50 wkpark Exp $
  +// $Id: wiki.php,v 1.172 2004/09/06 14:44:57 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.171 $',1,-1);
  +$_revision = substr('$Revision: 1.172 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -2057,12 +2057,12 @@
              $this->pre_line.=$line."\n";
              continue;
            } else {
  -           $p=strrpos($line,"}}}");
  +           #$p=strrpos($line,"}}}");
  +           $p= strlen($line) - strpos(strrev($line),'}}}') - 1;
              if ($p>2 and $line[$p-3]=='\\') {
                $this->pre_line.=substr($line,0,$p-3).substr($line,$p-2)."\n";
                continue;
              }
  -           $len=strlen($line);
              $this->pre_line.=substr($line,0,$p-2);
              $line=substr($line,$p+1);
              $in_pre=-1;
  @@ -2070,8 +2070,8 @@
         #} else if ($in_pre == 0 && preg_match("/{{{[^}]*$/",$line)) {
         } else if (!(strpos($line,"{{{")===false) and 
                    preg_match("/{{{[^{}]*$/",$line)) {
  -         $p=strrpos($line,"{{{")-2;
  -         $len=strlen($line);
  +         #$p=strrpos($line,"{{{")-2;
  +         $p= strlen($line) - strpos(strrev($line),'{{{') - 3;
   
            $processor="";
            $in_pre=1;
  
  
  


wkpark      2004/09/06 23:47:48

  Modified:    plugin/processor text_xml.php
  Log:
  fix a strrpos() bug
  
  Revision  Changes    Path
  1.5       +2 -3      moniwiki/plugin/processor/text_xml.php
  
  Index: text_xml.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/text_xml.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- text_xml.php	7 Aug 2003 09:49:39 -0000	1.4
  +++ text_xml.php	6 Sep 2004 14:47:47 -0000	1.5
  @@ -377,12 +377,12 @@
              $xml->pre_line.=$line."\n";
              continue;
            } else {
  -           $p=strrpos($line,"}}}");
  +           #$p=strrpos($line,"}}}");
  +           $p= strlen($line) - strpos(strrev($line),'}}}') - 1;
              if ($p>2 and $line[$p-3]=='\\') {
                $xml->pre_line.=substr($line,0,$p-3).substr($line,$p-2)."\n";
                continue;
              }
  -           $len=strlen($line);
              $xml->pre_line.=substr($line,0,$p-2);
              $line=substr($line,$p+1);
              $in_pre=-1;
  @@ -391,7 +391,6 @@
         } else if (!(strpos($line,"{{{")===false) and 
                    preg_match("/{{{[^}]*$/",$line)) {
            $p=strpos($line,"{{{");
  -         $len=strlen($line);
   
            $processor="";
            $in_pre=1;
  
  
  


wkpark      2004/09/07 09:49:17

  Modified:    .        wiki.php
  Log:
  fixed #300492: fixed media type for printing
  fix default embeded css: rename 'fixed' as 'monospace'
  
  Revision  Changes    Path
  1.173     +14 -11    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.172
  retrieving revision 1.173
  diff -u -r1.172 -r1.173
  --- wiki.php	6 Sep 2004 14:44:57 -0000	1.172
  +++ wiki.php	7 Sep 2004 00:49:16 -0000	1.173
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.172 2004/09/06 14:44:57 wkpark Exp $
  +// $Id: wiki.php,v 1.173 2004/09/07 00:49:16 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.172 $',1,-1);
  +$_revision = substr('$Revision: 1.173 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -2597,6 +2597,9 @@
       global $DBInfo;
       $plain=0;
   
  +    $media='media="screen"';
  +    if ($options['action']=='print') $media='';
  +
       if ($this->pi['#redirect'] != '' && $options['pi']) {
         $options['value']=$this->pi['#redirect'];
         $options['redirect']=1;
  @@ -2657,7 +2660,7 @@
         print '  <link rel="Alternate" media="print" title="Print View" href="'.
           $print_url."\" />\n";
         if ($options['css_url'])
  -        print '  <link rel="stylesheet" type="text/css" media="screen" href="'.
  +        print '  <link rel="stylesheet" type="text/css" '.$media.' href="'.
             $options['css_url'].'" />';
   # default CSS
         else print <<<EOS
  @@ -2674,13 +2677,13 @@
     color:#639ACE;
     text-decoration: none;
   }
  -tt.wiki {font-family:Lucida Typewriter,fixed,lucida,fixed;font-size:12px;}
  -tt.foot {font-family:Tahoma,lucida,fixed;font-size:12px;}
  +tt.wiki {font-family:Lucida Typewriter,fixed,lucida,monospace;font-size:12px;}
  +tt.foot {font-family:Tahoma,lucida,monospace;font-size:12px;}
   
   pre.wiki {
     padding-left:6px;
     padding-top:6px; 
  -  font-family:Lucida TypeWriter,monotype,lucida,fixed;font-size:14px;
  +  font-family:Lucida TypeWriter,monotype,lucida,monospace;font-size:14px;
     background-color:#000000;
     color:#FFD700; /* gold */
   }
  @@ -2692,7 +2695,7 @@
     padding-top:6px;
     white-space:pre-wrap;
     white-space: -moz-pre-wrap; 
  -  font-family:Georgia,monotype,lucida,fixed;font-size:14px;
  +  font-family:Georgia,monotype,lucida,monospace;font-size:14px;
     background-color:#F7F8E6;
   }
   
  @@ -2706,27 +2709,27 @@
   th.info { background-color:#E2ECE2; }
   
   h1,h2,h3,h4,h5 {
  -  font-family:Tahoma;
  +  font-family:Tahoma,sans-serif;
     padding-left:6px;
     border-bottom:1px solid #999;
   }
   
   div.diff-added {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#61FF61;
     color:black;
   }
   
   div.diff-removed {
  -  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#E9EAB8;
     color:black;
   }
   
   div.diff-sep {
  -  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,fixed;
  +  font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
     background-color:#000000;
     color:#FFD700; /* gold */
  
  
  


wkpark      2004/09/07 11:55:27

  Modified:    .        wikilib.php
  Log:
  fix macro_TitleIndex() bug using usort() instead of sort()
  
  Revision  Changes    Path
  1.116     +3 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.115
  retrieving revision 1.116
  diff -u -r1.115 -r1.116
  --- wikilib.php	4 Sep 2004 02:48:50 -0000	1.115
  +++ wikilib.php	7 Sep 2004 02:55:27 -0000	1.116
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.115 2004/09/04 02:48:50 wkpark Exp $
  +// $Id: wikilib.php,v 1.116 2004/09/07 02:55:27 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1457,7 +1457,8 @@
     } else
       $all_pages = $DBInfo->getPageLists();
     #natcasesort($all_pages);
  -  sort($all_pages,SORT_STRING);
  +  #sort($all_pages,SORT_STRING);
  +  usort($all_pages, "strcasecmp");
   
     $key=-1;
     $out="";
  
  
  


wkpark      2004/09/07 13:47:22

  Modified:    css      black.css blog.css bw.css cream.css darkkhaki.css
                        darkred.css default.css gray.css green.css iolo.css
                        khaki.css log.css matrix.css moinmoin.css nsmk.css
                        olive.css print.css redandblack.css royalblue.css
                        seagreen.css sky.css white.css wood.css
  Log:
  update
  
  Revision  Changes    Path
  1.5       +8 -9      moniwiki/css/black.css
  
  Index: black.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/black.css,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- black.css	11 Aug 2004 10:35:07 -0000	1.4
  +++ black.css	7 Sep 2004 04:47:17 -0000	1.5
  @@ -1,3 +1,5 @@
  +@import url("user.css");
  +
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
     background-color:#000000; color: #B2E0FA;
  @@ -49,22 +51,19 @@
   textarea.wiki { width:100%; }
   
   table.wiki {
  -/* background-color:#E2ECE5;*/
  -/* border-collapse: collapse; */
     border: 0px outset #E2ECE5;
   }
   
   td.wiki {
  -  background-color:#16384C; 
  -/*  background-color:#E2ECE2; */
  -/* border-collapse: collapse; */
     border: 0px inset #E2ECE5;
   }
   
  +tr.wiki {
  +  background-color: #3E3E3E;
  +}
  +
   th.info {
     background-color:#E2ECE2;
  -/*  border-collapse: collapse; */
  -/*  border: 1px solid silver; */
   }
   
   h1,h2,h3,h4,h5 {
  @@ -117,7 +116,7 @@
     background-color: #FF0000;
   }
   
  -td.message {
  +div.message {
       margin-top: 6pt;
       background-color: #E8E8E8;
       border-style:solid;
  @@ -176,7 +175,7 @@
   li.blog-list { list-style-type: none;}
   
   /* HierarchicalWiki */
  -span.group {
  +div.wikiGroup {
     font-family:Tahoma,Lucida,sans-serif;
     font-size:10px;
   }
  
  
  
  1.5       +8 -9      moniwiki/css/blog.css
  
  Index: blog.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/blog.css,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- blog.css	11 Aug 2004 10:35:07 -0000	1.4
  +++ blog.css	7 Sep 2004 04:47:17 -0000	1.5
  @@ -1,3 +1,5 @@
  +@import url("user.css");
  +
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
     background-color:#90B7DC;
  @@ -56,28 +58,25 @@
   }
   
   table.wiki {
  -/* background-color:#E2ECE5;*/
  -/* border-collapse: collapse; */
     border: 0px outset #ddddb0;
   }
   
   td.wiki {
  -  background-color:#ddddb0;
  -/* border-collapse: collapse; */
     border: 0px inset #E2ECE5;
   }
   
  +tr.wiki {
  +  background-color: #E9ECEF;
  +}
  +
   textarea.wiki { width:100%; }
   
   th.info {
     background-color:#E2ECE2;
  -/*  border-collapse: collapse; */
  -/*  border: 1px solid silver; */
   }
   
   td.info {
     background-color:#E2ECE2;
  -
   }
   
   h1,h2,h3,h4,h5 {
  @@ -118,7 +117,7 @@
     background-color: #FF0000;
   }
   
  -td.message {
  +div.message {
     margin-top: 6pt;
     background-color: #E8E8E8;
     border-style:solid;
  @@ -253,7 +252,7 @@
   td.today { background:#fff; text-align: center;}
   
   /* HierarchicalWiki */
  -span.group {
  +div.wikiGroup {
     font-family:Tahoma,Lucida,sans-serif;
     font-size:10px;
   }
  
  
  
  1.5       +8 -9      moniwiki/css/bw.css
  
  Index: bw.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/bw.css,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- bw.css	11 Aug 2004 10:35:07 -0000	1.4
  +++ bw.css	7 Sep 2004 04:47:17 -0000	1.5
  @@ -1,3 +1,5 @@
  +@import url("user.css");
  +
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
     background-color:#000000; color: #BBBBBB;
  @@ -49,22 +51,19 @@
   textarea.wiki { width:100%; }
   
   table.wiki {
  -/* background-color:#E2ECE5;*/
  -/* border-collapse: collapse; */
     border: 0px outset #E2ECE5;
   }
   
   td.wiki {
  -  background-color:#16384C; 
  -/*  background-color:#E2ECE2; */
  -/* border-collapse: collapse; */
     border: 0px inset #E2ECE5;
   }
   
  +tr.wiki {
  +  background-color:#303030; 
  +}
  +
   th.info {
     background-color:#E2ECE2;
  -/*  border-collapse: collapse; */
  -/*  border: 1px solid silver; */
   }
   
   h1,h2,h3,h4,h5 {
  @@ -117,7 +116,7 @@
     background-color: #FF0000;
   }
   
  -td.message {
  +div.message {
       margin-top: 6pt;
       background-color: #E8E8E8;
       border-style:solid;
  @@ -176,7 +175,7 @@
   li.blog-list { list-style-type: none;}
   
   /* HierarchicalWiki */
  -span.group {
  +div.wikiGroup {
     font-family:Tahoma,Lucida,sans-serif;
     font-size:10px;
   }
  
  
  
  1.5       +7 -8      moniwiki/css/cream.css
  
  Index: cream.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/cream.css,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- cream.css	11 Aug 2004 10:35:07 -0000	1.4
  +++ cream.css	7 Sep 2004 04:47:17 -0000	1.5
  @@ -1,3 +1,5 @@
  +@import url("user.css");
  +
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
     background-color:#EDF5ED;
  @@ -46,23 +48,20 @@
   }
   
   table.wiki {
  -/* background-color:#E2ECE5;*/
  -/* border-collapse: collapse; */
     border: 0px outset #E2ECE5;
   }
   
   td.wiki {
  -  background-color:#E2ECE2;
  -/* border-collapse: collapse; */
     border: 0px inset #E2ECE5;
   }
  +tr.wiki {
  +  background-color:#E2ECE2;
  +}
   
   textarea.wiki { width:100%; }
   
   th.info {
     background-color:#E2ECE2;
  -/*  border-collapse: collapse; */
  -/*  border: 1px solid silver; */
   }
   
   h1,h2,h3,h4,h5 {
  @@ -104,7 +103,7 @@
     background-color: #FF0000;
   }
   
  -td.message {
  +div.message {
     margin-top: 6pt;
     background-color: #E8E8E8;
     border-style:solid;
  @@ -220,7 +219,7 @@
   li.blog-list { list-style-type: none;}
   
   /* HierarchicalWiki */
  -span.group {
  +div.wikiGroup {
     font-family:Tahoma,Lucida,sans-serif;
     font-size:10px;
   }
  
  
  
  1.5       +16 -10    moniwiki/css/darkkhaki.css
  
  Index: darkkhaki.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/darkkhaki.css,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- darkkhaki.css	11 Aug 2004 10:35:07 -0000	1.4
  +++ darkkhaki.css	7 Sep 2004 04:47:17 -0000	1.5
  @@ -1,3 +1,5 @@
  +@import url("user.css");
  +
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
   /*  background-color:#EDF5ED; */
  @@ -56,33 +58,28 @@
   }
   
   table.wiki {
  -/* background-color:#E2ECE5;*/
  -/* border-collapse: collapse; */
     border: 0px outset #ddddb0;
   }
   
   td.wiki {
  -  background-color:#ddddb0;
  -/* border-collapse: collapse; */
     border: 0px inset #E2ECE5;
   }
  +tr.wiki {
  +  background-color:#ddddb0;
  +}
   
   textarea.wiki { width:100%; }
   
   th.info {
     background-color:#E2ECE2;
  -/*  border-collapse: collapse; */
  -/*  border: 1px solid silver; */
   }
   
   td.info {
     background-color:#E2ECE2;
  -
   }
   
   h1,h2,h3,h4,h5 {
     font-family:Tahoma;
  -/* background-color:#E07B2A; */
     padding-left:6px;
     border-bottom:1px solid #999;
   }
  @@ -119,7 +116,7 @@
     background-color: #FF0000;
   }
   
  -td.message {
  +div.message {
     margin-top: 6pt;
     background-color: #E8E8E8;
     border-style:solid;
  @@ -234,7 +231,7 @@
   li.blog-list { list-style-type: none;}
   
   /* HierarchicalWiki */
  -span.group {
  +div.wikiGroup {
     font-family:Tahoma,Lucida,sans-serif;
     font-size:10px;
   }
  @@ -257,4 +254,13 @@
   
   span.externalLink {
     display: none;
  +}
  +
  +.purple a {
  +    font-family: Verdana, Trebuchet, Arial, Helvetica;
  +    font-style: normal;
  +    font-weight: bold;
  +    font-size: x-small;
  +    text-decoration: none;
  +    color: #C8A8FF;  /* light purple */
   }
  
  
  
  1.5       +8 -9      moniwiki/css/darkred.css
  
  Index: darkred.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/darkred.css,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- darkred.css	11 Aug 2004 10:35:07 -0000	1.4
  +++ darkred.css	7 Sep 2004 04:47:17 -0000	1.5
  @@ -1,3 +1,5 @@
  +@import url("user.css");
  +
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
   /*  background-color:#EDF5ED; */
  @@ -57,28 +59,25 @@
   }
   
   table.wiki {
  -/* background-color:#E2ECE5;*/
  -/* border-collapse: collapse; */
     border: 0px outset #ddddb0;
   }
   
   td.wiki {
  -  background-color:#ddddb0;
  -/* border-collapse: collapse; */
     border: 0px inset #E2ECE5;
   }
   
  +tr.wiki {
  +  background-color:#ddddb0;
  +}
  +
   textarea.wiki { width:100%; }
   
   th.info {
     background-color:#E2ECE2;
  -/*  border-collapse: collapse; */
  -/*  border: 1px solid silver; */
   }
   
   td.info {
     background-color:#E2ECE2;
  -
   }
   
   h1,h2,h3,h4,h5 {
  @@ -120,7 +119,7 @@
     background-color: #FF0000;
   }
   
  -td.message {
  +div.message {
     margin-top: 6pt;
     background-color: #E8E8E8;
     border-style:solid;
  @@ -237,7 +236,7 @@
   li.blog-list { list-style-type: none;}
   
   /* HierarchicalWiki */
  -span.group {
  +div.wikiGroup {
     font-family:Tahoma,Lucida,sans-serif;
     font-size:10px;
   }
  
  
  
  1.5       +8 -8      moniwiki/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/default.css,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- default.css	11 Aug 2004 10:35:07 -0000	1.4
  +++ default.css	7 Sep 2004 04:47:17 -0000	1.5
  @@ -1,3 +1,5 @@
  +@import url("user.css");
  +
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
     background-color:lightyellow;
  @@ -59,23 +61,21 @@
   }
   
   table.wiki {
  -/* background-color:#E2ECE5;*/
  -/* border-collapse: collapse; */
     border: 0px outset #E2ECE5;
   }
   
   td.wiki {
  -  background-color: #F8EBB0;
  -/* border-collapse: collapse; */
     border: 0px inset #E2ECE5;
   }
   
  +tr.wiki {
  +  background-color: #F8EBB0;
  +}
  +
   textarea.wiki { width:100%; }
   
   th.info {
     background-color:#E2ECE2;
  -/*  border-collapse: collapse; */
  -/*  border: 1px solid silver; */
   }
   
   td.info {
  @@ -122,7 +122,7 @@
     background-color: #FF0000;
   }
   
  -td.message {
  +div.message {
     margin-top: 6pt;
     background-color: #E8E8E8;
     border-style:solid;
  @@ -235,7 +235,7 @@
   li.blog-list { list-style-type: none;}
   
   /* HierarchicalWiki */
  -span.group {
  +div.wikiGroup {
     font-family:Tahoma,Lucida,sans-serif;
     font-size:10px;
   }
  
  
  
  1.4       +8 -8      moniwiki/css/gray.css
  
  Index: gray.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/gray.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- gray.css	11 Aug 2004 10:35:07 -0000	1.3
  +++ gray.css	7 Sep 2004 04:47:17 -0000	1.4
  @@ -1,3 +1,5 @@
  +@import url("user.css");
  +
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
     background-color:#888; 
  @@ -56,23 +58,21 @@
   }
   
   table.wiki {
  -/* background-color:#E2ECE5;*/
  -/* border-collapse: collapse; */
     border: 0px outset #ddddb0;
   }
   
   td.wiki {
  -  background-color:#ddddb0;
  -/* border-collapse: collapse; */
     border: 0px inset #E2ECE5;
   }
   
  +tr.wiki {
  +  background-color:#ddddb0;
  +}
  +
   textarea.wiki { width:100%; }
   
   th.info {
     background-color:#E2ECE2;
  -/*  border-collapse: collapse; */
  -/*  border: 1px solid silver; */
   }
   
   td.info {
  @@ -119,7 +119,7 @@
     background-color: #FF0000;
   }
   
  -td.message {
  +div.message {
     margin-top: 6pt;
     background-color: #E8E8E8;
     border-style:solid;
  @@ -233,7 +233,7 @@
   div.blog-comments { padding-left:2em; }
   
   /* HierarchicalWiki */
  -span.group {
  +div.wikiGroup {
     font-family:Tahoma,Lucida,sans-serif;
     font-size:10px;
   }
  
  
  
  1.5       +8 -8      moniwiki/css/green.css
  
  Index: green.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/green.css,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- green.css	11 Aug 2004 10:35:07 -0000	1.4
  +++ green.css	7 Sep 2004 04:47:17 -0000	1.5
  @@ -1,3 +1,5 @@
  +@import url("user.css");
  +
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
     background-color:#ADDA2F;
  @@ -59,23 +61,21 @@
   }
   
   table.wiki {
  -/* background-color:#E2ECE5;*/
  -/* border-collapse: collapse; */
     border: 0px outset #E2ECE5;
   }
   
   td.wiki {
  -  background-color:#E2ECE2;
  -/* border-collapse: collapse; */
     border: 0px inset #E2ECE5;
   }
   
  +tr.wiki {
  +  background-color:#E2ECE2;
  +}
  +
   textarea.wiki { width:100%; }
   
   th.info {
     background-color:#E2ECE2;
  -/*  border-collapse: collapse; */
  -/*  border: 1px solid silver; */
   }
   
   td.info {
  @@ -122,7 +122,7 @@
     background-color: #FF0000;
   }
   
  -td.message {
  +div.message {
     margin-top: 6pt;
     background-color: #E8E8E8;
     border-style:solid;
  @@ -251,7 +251,7 @@
   li.blog-list { list-style-type: none;}
   
   /* HierarchicalWiki */
  -span.group {
  +div.wikiGroup {
     font-family:Tahoma,Lucida,sans-serif;
     font-size:10px;
   }
  
  
  
  1.4       +8 -5      moniwiki/css/iolo.css
  
  Index: iolo.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/iolo.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- iolo.css	11 Aug 2004 10:35:07 -0000	1.3
  +++ iolo.css	7 Sep 2004 04:47:17 -0000	1.4
  @@ -2,6 +2,9 @@
    CSS designed by iolo http://hellocity.net/~iolo/moniwiki/css/iolo.css
    distributable under GPL
   */
  +
  +@import url("user.css");
  +
   body {
   	font-family:"Trebuchet MS","Myungjo Newsletter","UnBatang",sans-serif;
   	font-size:medium;
  @@ -97,6 +100,9 @@
   }
   
   td.wiki {
  +}
  +
  +tr.wiki {
   	background-color: #ddeedd;
   }
   
  @@ -151,10 +157,7 @@
     background-color: #FF0000;
   }
   
  -table.message {
  -}
  -
  -td.message {
  +div.message {
   	padding:6px;
   	color:#000000;
   	background-color:#ffffff;
  @@ -366,7 +369,7 @@
   }
   
   /* HierarchicalWiki */
  -span.group {
  +div.wikiGroup {
   	font-size:smaller;
   }
   
  
  
  
  1.5       +7 -9      moniwiki/css/khaki.css
  
  Index: khaki.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/khaki.css,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- khaki.css	11 Aug 2004 10:35:07 -0000	1.4
  +++ khaki.css	7 Sep 2004 04:47:17 -0000	1.5
  @@ -1,3 +1,5 @@
  +@import url("user.css");
  +
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
   /*  background-color:#EDF5ED; */
  @@ -60,28 +62,24 @@
   }
   
   table.wiki {
  -/* background-color:#E2ECE5;*/
  -/* border-collapse: collapse; */
     border: 0px outset #E2ECE5;
   }
   
   td.wiki {
  -  background-color:#E8D57E;
  -/* border-collapse: collapse; */
     border: 0px inset #E2ECE5;
   }
  +tr.wiki {
  +  background-color:#E8D57E;
  +}
   
   textarea.wiki { width:100%; }
   
   th.info {
     background-color:#E2ECE2;
  -/*  border-collapse: collapse; */
  -/*  border: 1px solid silver; */
   }
   
   td.info {
     background-color:#E2ECE2;
  -
   }
   
   h1,h2,h3,h4,h5 {
  @@ -123,7 +121,7 @@
     background-color: #FF0000;
   }
   
  -td.message {
  +div.message {
     margin-top: 6pt;
     background-color: #E8E8E8;
     border-style:solid;
  @@ -235,7 +233,7 @@
   li.blog-list { list-style-type: none;}
   
   /* HierarchicalWiki */
  -span.group {
  +div.wikiGroup {
     font-family:Tahoma,Lucida,sans-serif;
     font-size:10px;
   }
  
  
  
  1.3       +8 -9      moniwiki/css/log.css
  
  Index: log.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/log.css,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- log.css	11 Aug 2004 10:35:07 -0000	1.2
  +++ log.css	7 Sep 2004 04:47:17 -0000	1.3
  @@ -1,4 +1,6 @@
   /* MoniWiki CSS 2003/11/01 by wkpark */
  +@import url("user.css");
  +
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;font-size:12px;
     background-color:#FFFFFF;
  @@ -54,28 +56,25 @@
   
   
   table.wiki {
  -/* background-color:#E2ECE5;*/
  -/* border-collapse: collapse; */
     border: 0px outset #ddddb0;
   }
   
   td.wiki {
  -  background-color: #E8E6E0;
  -/* border-collapse: collapse; */
     border: 0px inset #E2ECE5;
   }
   
  +tr.wiki {
  +  background-color: #E8E6E0;
  +}
  +
   textarea.wiki { width:100%; }
   
   th.info {
     background-color:#E2ECE2;
  -/*  border-collapse: collapse; */
  -/*  border: 1px solid silver; */
   }
   
   td.info {
     background-color:#E2ECE2;
  -
   }
   
   h1,h2,h3,h4,h5 {
  @@ -118,7 +117,7 @@
     background-color: #FF0000;
   }
   
  -td.message {
  +div.message {
     margin-top: 6pt;
     background-color: #E8E8E8;
     border-style:solid;
  @@ -265,7 +264,7 @@
   td.today { background:#ffffff; text-align: center;}
   
   /* HierarchicalWiki */
  -span.group {
  +div.wikiGroup {
     font-family:Tahoma,Lucida,sans-serif;
     font-size:10px;
   }
  
  
  
  1.5       +8 -9      moniwiki/css/matrix.css
  
  Index: matrix.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/matrix.css,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- matrix.css	11 Aug 2004 10:35:07 -0000	1.4
  +++ matrix.css	7 Sep 2004 04:47:17 -0000	1.5
  @@ -1,3 +1,5 @@
  +@import url("user.css");
  +
   body {font-family:Georgia,Verdana,Lucida,sans-serif;
     background-color:#000000; color: #369746;
   }
  @@ -49,24 +51,21 @@
   }
   
   table.wiki {
  -/* background-color:#E2ECE5;*/
  -/* border-collapse: collapse; */
     border: 0px outset #E2ECE5;
   }
   
   td.wiki {
  -  background-color: #233735; 
  -/*  background-color:#E2ECE2; */
  -/* border-collapse: collapse; */
     border: 0px inset #E2ECE5;
   }
   
  +tr.wiki {
  +  background-color: #233735; 
  +}
  +
   textarea.wiki { width:100%; }
   
   th.info {
     background-color:#E2ECE2;
  -/*  border-collapse: collapse; */
  -/*  border: 1px solid silver; */
   }
   
   h1,h2,h3,h4,h5 {
  @@ -108,7 +107,7 @@
     background-color: #FF0000;
   }
   
  -td.message {
  +div.message {
       margin-top: 6pt;
       background-color: #E8E8E8;
       border-style:solid;
  @@ -174,7 +173,7 @@
   li.blog-list { list-style-type: none;}
   
   /* HierarchicalWiki */
  -span.group {
  +div.wikiGroup {
     font-family:Tahoma,Lucida,sans-serif;
     font-size:10px;
   }
  
  
  
  1.4       +3 -2      moniwiki/css/moinmoin.css
  
  Index: moinmoin.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/moinmoin.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- moinmoin.css	11 Aug 2004 10:35:07 -0000	1.3
  +++ moinmoin.css	7 Sep 2004 04:47:17 -0000	1.4
  @@ -2,11 +2,12 @@
   
       Copyright (c) 2001, 2002, 2003 by Jrgen Hermann
   
  -    $Id: moinmoin.css,v 1.3 2004/08/11 10:35:07 wkpark Exp $
  +    $Id: moinmoin.css,v 1.4 2004/09/07 04:47:17 wkpark Exp $
   */
   
   /* user interface styles */
   @import url("moinui");
  +@import url("user.css");
   
   /* content styles */
   body {
  @@ -153,7 +154,7 @@
   li.blog-list { list-style-type: none;}
   
   /* HierarchicalWiki */
  -span.group {
  +div.wikiGroup {
     font-family:Tahoma,Lucida,sans-serif;
     font-size:10px;
   }
  
  
  
  1.4       +2 -1      moniwiki/css/nsmk.css
  
  Index: nsmk.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/nsmk.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- nsmk.css	11 Aug 2004 10:35:07 -0000	1.3
  +++ nsmk.css	7 Sep 2004 04:47:17 -0000	1.4
  @@ -1,4 +1,5 @@
   /*  NoSmoke Default Styles */
  +@import url("user.css");
   
   body {
       background-color: lightyellow;
  @@ -210,7 +211,7 @@
   li.blog-list { list-style-type: none;}
   
   /* HierarchicalWiki */
  -span.group {
  +div.wikiGroup {
     font-family:Tahoma,Lucida,sans-serif;
     font-size:10px;
   }
  
  
  
  1.5       +8 -8      moniwiki/css/olive.css
  
  Index: olive.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/olive.css,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- olive.css	11 Aug 2004 10:35:07 -0000	1.4
  +++ olive.css	7 Sep 2004 04:47:17 -0000	1.5
  @@ -1,3 +1,5 @@
  +@import url("user.css");
  +
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
     background-color:#669900; 
  @@ -62,23 +64,21 @@
   }
   
   table.wiki {
  -/* background-color:#E2ECE5;*/
  -/* border-collapse: collapse; */
     border: 0px outset #ddddb0;
   }
   
   td.wiki {
  -  background-color: #DCE0BC;
  -/* border-collapse: collapse; */
     border: 0px inset #E2ECE5;
   }
   
  +tr.wiki {
  +  background-color: #DCE0BC;
  +}
  +
   textarea.wiki { width:100%; }
   
   th.info {
     background-color:#E2ECE2;
  -/*  border-collapse: collapse; */
  -/*  border: 1px solid silver; */
   }
   
   td.info {
  @@ -124,7 +124,7 @@
     background-color: #FF0000;
   }
   
  -td.message {
  +div.message {
     margin-top: 6pt;
     background-color: #E8E8E8;
     border-style:solid;
  @@ -238,7 +238,7 @@
   li.blog-list { list-style-type: none;}
   
   /* HierarchicalWiki */
  -span.group {
  +div.wikiGroup {
     font-family:Tahoma,Lucida,sans-serif;
     font-size:10px;
   }
  
  
  
  1.4       +18 -9     moniwiki/css/print.css
  
  Index: print.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/print.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- print.css	11 Aug 2004 10:35:07 -0000	1.3
  +++ print.css	7 Sep 2004 04:47:17 -0000	1.4
  @@ -1,3 +1,5 @@
  +@import url("user.css");
  +
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
     margin: 10;
  @@ -48,28 +50,25 @@
   }
   
   table.wiki {
  -/* background-color:#E2ECE5;*/
  -/* border-collapse: collapse; */
     border: 0px outset #E2ECE5;
   }
   
   td.wiki {
  -  background-color:#E2ECE2;
  -/* border-collapse: collapse; */
     border: 0px inset #E2ECE5;
   }
   
  +tr.wiki {
  +  background-color:#E2ECE2;
  +}
  +
   textarea.wiki { width:100%; }
   
   th.info {
     background-color:#E2ECE2;
  -/*  border-collapse: collapse; */
  -/*  border: 1px solid silver; */
   }
   
   td.info {
     background-color:#E2ECE2;
  -
   }
   
   h1,h2,h3,h4,h5 {
  @@ -192,15 +191,18 @@
     padding-left:2em;
   }
   
  +a.purple { font-size: 10px; display:none;}
  +a.nonexists {display: none;}
   /* Blog CSS */
  -a.purple { font-size: 10px; text-decoration:none;}
  +a.perma { font-size: 10px; display:none;}
  +a.purple { display: none;}
   div.blog { width:90%; padding: 0em 1em 0em 1em; }
   div.blog-user { font-size:10px; }
   div.blog-title { font-size:16px; font-weight:bold; }
   div.blog-comments { padding-left:2em; }
   
   /* HierarchicalWiki */
  -span.group {
  +div.wikiGroup {
     font-family:Tahoma,Lucida,sans-serif;
     font-size:10px;
   }
  @@ -223,4 +225,11 @@
   
   span.externalLink {
     font-family: monospace;
  +}
  +
  +/* print action */
  +#printHeader {}
  +
  +#printFooter {
  +  border-top: 5px solid #c0c0c0;
   }
  
  
  
  1.6       +8 -8      moniwiki/css/redandblack.css
  
  Index: redandblack.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/redandblack.css,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- redandblack.css	11 Aug 2004 10:35:07 -0000	1.5
  +++ redandblack.css	7 Sep 2004 04:47:17 -0000	1.6
  @@ -1,3 +1,5 @@
  +@import url("user.css");
  +
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
     background-color:#9d3036;
  @@ -56,28 +58,26 @@
   }
   
   table.wiki {
  -/* background-color:#E2ECE5;*/
  -/* border-collapse: collapse; */
     border: 0px outset #ddddb0;
   }
   
   td.wiki {
     background-color:#ddddb0;
  -/* border-collapse: collapse; */
     border: 0px inset #E2ECE5;
   }
   
  +tr.wiki {
  +  background-color:#ddddb0;
  +}
  +
   textarea.wiki { width:100%; }
   
   th.info {
     background-color:#E2ECE2;
  -/*  border-collapse: collapse; */
  -/*  border: 1px solid silver; */
   }
   
   td.info {
     background-color:#E2ECE2;
  -
   }
   
   h1,h2,h3,h4,h5 {
  @@ -118,7 +118,7 @@
     background-color: #FF0000;
   }
   
  -td.message {
  +div.message {
     margin-top: 6pt;
     background-color: #E8E8E8;
     border-style:solid;
  @@ -253,7 +253,7 @@
   td.today { background:#fff; text-align: center;}
   
   /* HierarchicalWiki */
  -span.group {
  +div.wikiGroup {
     font-family:Tahoma,Lucida,sans-serif;
     font-size:10px;
   }
  
  
  
  1.5       +8 -9      moniwiki/css/royalblue.css
  
  Index: royalblue.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/royalblue.css,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- royalblue.css	11 Aug 2004 10:35:07 -0000	1.4
  +++ royalblue.css	7 Sep 2004 04:47:17 -0000	1.5
  @@ -1,3 +1,5 @@
  +@import url("user.css");
  +
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
     background-color:#3366CC; 
  @@ -56,28 +58,25 @@
   }
   
   table.wiki {
  -/* background-color:#E2ECE5;*/
  -/* border-collapse: collapse; */
     border: 0px outset #ddddb0;
   }
   
   td.wiki {
  -  background-color:#ddddb0;
  -/* border-collapse: collapse; */
     border: 0px inset #E2ECE5;
   }
   
  +tr.wiki {
  +  background-color:#ddddb0;
  +}
  +
   textarea.wiki { width:100%; }
   
   th.info {
     background-color:#E2ECE2;
  -/*  border-collapse: collapse; */
  -/*  border: 1px solid silver; */
   }
   
   td.info {
     background-color:#E2ECE2;
  -
   }
   
   h1,h2,h3,h4,h5 {
  @@ -119,7 +118,7 @@
     background-color: #FF0000;
   }
   
  -td.message {
  +div.message {
     margin-top: 6pt;
     background-color: #E8E8E8;
     border-style:solid;
  @@ -234,7 +233,7 @@
   li.blog-list { list-style-type: none;}
   
   /* HierarchicalWiki */
  -span.group {
  +div.wikiGroup {
     font-family:Tahoma,Lucida,sans-serif;
     font-size:10px;
   }
  
  
  
  1.5       +8 -9      moniwiki/css/seagreen.css
  
  Index: seagreen.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/seagreen.css,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- seagreen.css	11 Aug 2004 10:35:07 -0000	1.4
  +++ seagreen.css	7 Sep 2004 04:47:17 -0000	1.5
  @@ -1,3 +1,5 @@
  +@import url("user.css");
  +
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
   /*  background-color:#EDF5ED; */
  @@ -59,28 +61,25 @@
   }
   
   table.wiki {
  -/* background-color:#E2ECE5;*/
  -/* border-collapse: collapse; */
     border: 0px outset #E2ECE5;
   }
   
   td.wiki {
  -  background-color:#E2ECE2;
  -/* border-collapse: collapse; */
     border: 0px inset #E2ECE5;
   }
   
  +tr.wiki {
  +  background-color:#E2ECE2;
  +}
  +
   textarea.wiki { width:100%; }
   
   th.info {
     background-color:#E2ECE2;
  -/*  border-collapse: collapse; */
  -/*  border: 1px solid silver; */
   }
   
   td.info {
     background-color:#E2ECE2;
  -
   }
   
   h1,h2,h3,h4,h5 {
  @@ -122,7 +121,7 @@
     background-color: #FF0000;
   }
   
  -td.message {
  +div.message {
     margin-top: 6pt;
     background-color: #E8E8E8;
     border-style:solid;
  @@ -242,7 +241,7 @@
   li.blog-list { list-style-type: none;}
   
   /* HierarchicalWiki */
  -span.group {
  +div.wikiGroup {
     font-family:Tahoma,Lucida,sans-serif;
     font-size:10px;
   }
  
  
  
  1.5       +8 -9      moniwiki/css/sky.css
  
  Index: sky.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/sky.css,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- sky.css	11 Aug 2004 10:35:07 -0000	1.4
  +++ sky.css	7 Sep 2004 04:47:17 -0000	1.5
  @@ -1,3 +1,5 @@
  +@import url("user.css");
  +
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
   /*  background-color:#EDF5ED; */
  @@ -56,28 +58,25 @@
   }
   
   table.wiki {
  -/* background-color:#E2ECE5;*/
  -/* border-collapse: collapse; */
     border: 0px outset #E2ECE5;
   }
   
   td.wiki {
  -  background-color:#E2ECE2;
  -/* border-collapse: collapse; */
     border: 0px inset #E2ECE5;
   }
   
  +tr.wiki {
  +  background-color:#E2ECE2;
  +}
  +
   textarea.wiki { width:100%; }
   
   th.info {
     background-color:#E2ECE2;
  -/*  border-collapse: collapse; */
  -/*  border: 1px solid silver; */
   }
   
   td.info {
     background-color:#E2ECE2;
  -
   }
   
   h1,h2,h3,h4,h5 {
  @@ -108,7 +107,7 @@
     color:#FFD700; /* gold */
   }
   
  -td.message {
  +div.message {
     margin-top: 6pt;
     background-color: #E8E8E8;
     border-style:solid;
  @@ -231,7 +230,7 @@
   li.blog-list { list-style-type: none;}
   
   /* HierarchicalWiki */
  -span.group {
  +div.wikiGroup {
     font-family:Tahoma,Lucida,sans-serif;
     font-size:10px;
   }
  
  
  
  1.5       +8 -9      moniwiki/css/white.css
  
  Index: white.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/white.css,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- white.css	11 Aug 2004 10:35:07 -0000	1.4
  +++ white.css	7 Sep 2004 04:47:17 -0000	1.5
  @@ -1,3 +1,5 @@
  +@import url("user.css");
  +
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
   /*  background-color:#EDF5ED; */
  @@ -50,28 +52,25 @@
   }
   
   table.wiki {
  -/* background-color:#E2ECE5;*/
  -/* border-collapse: collapse; */
     border: 0px outset #E2ECE5;
   }
   
   td.wiki {
  -  background-color:#E2ECE2;
  -/* border-collapse: collapse; */
     border: 0px inset #E2ECE5;
   }
   
  +tr.wiki {
  +  background-color:#E2ECE2;
  +}
  +
   textarea.wiki { width:100%; }
   
   th.info {
     background-color:#E2ECE2;
  -/*  border-collapse: collapse; */
  -/*  border: 1px solid silver; */
   }
   
   td.info {
     background-color:#E2ECE2;
  -
   }
   
   h1,h2,h3,h4,h5 {
  @@ -113,7 +112,7 @@
     background-color: #FF0000;
   }
   
  -td.message {
  +div.message {
     margin-top: 6pt;
     background-color: #E8E8E8;
     border-style:solid;
  @@ -226,7 +225,7 @@
   li.blog-list { list-style-type: none;}
   
   /* HierarchicalWiki */
  -span.group {
  +div.wikiGroup {
     font-family:Tahoma,Lucida,sans-serif;
     font-size:10px;
   }
  
  
  
  1.3       +13 -15    moniwiki/css/wood.css
  
  Index: wood.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/wood.css,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- wood.css	11 Aug 2004 10:35:07 -0000	1.2
  +++ wood.css	7 Sep 2004 04:47:17 -0000	1.3
  @@ -1,4 +1,6 @@
   /* MoniWiki CSS 2003/11/01 by wkpark */
  +@import url("user.css");
  +
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;font-size:12px;
     background-color:#FFFFFF;
  @@ -55,28 +57,25 @@
   }
   
   table.wiki {
  -/* background-color:#E2ECE5;*/
  -/* border-collapse: collapse; */
     border: 0px outset #ddddb0;
   }
   
   td.wiki {
  -  background-color: #E9ECEF;
  -/* border-collapse: collapse; */
     border: 0px inset #E2ECE5;
   }
   
  +tr.wiki {
  +  background-color: #E9ECEF;
  +}
  +
   textarea.wiki { width:100%; }
   
   th.info {
     background-color:#E2ECE2;
  -/*  border-collapse: collapse; */
  -/*  border: 1px solid silver; */
   }
   
   td.info {
     background-color:#E2ECE2;
  -
   }
   
   h1,h2,h3,h4,h5 {
  @@ -118,7 +117,7 @@
     background-color: #FF0000;
   }
   
  -td.message {
  +div.message {
     margin-top: 6pt;
     background-color: #E8E8E8;
     border-style:solid;
  @@ -223,12 +222,11 @@
   }
   
   #wikiIcon {
  - position: absolute;
  - top: 80px; right: 10px;
  -
  - margin-left: 10px;
  - text-align: right;
  - vertical-align: middle;
  +  float:right;
  +  padding: 3px 10px;
  +  text-align: right;
  +  vertical-align: middle;
  +  margin-left: 10px;
   }
   
   div.indent { padding-left:2em; }
  @@ -252,7 +250,7 @@
   td.today { background:#ffffff; text-align: center;}
   
   /* HierarchicalWiki */
  -span.group {
  +div.wikiGroup {
     font-family:Tahoma,Lucida,sans-serif;
     font-size:10px;
   }
  
  
  


wkpark      2004/09/15 00:29:44

  Modified:    plugin/processor jade.php
  Log:
  fix for refresh feature
  
  Revision  Changes    Path
  1.6       +2 -2      moniwiki/plugin/processor/jade.php
  
  Index: jade.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/jade.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- jade.php	8 Apr 2004 18:23:44 -0000	1.5
  +++ jade.php	14 Sep 2004 15:29:44 -0000	1.6
  @@ -6,7 +6,7 @@
   // Usage: {{{#!jade
   // docbook code
   // }}}
  -// $Id: jade.php,v 1.5 2004/04/08 18:23:44 wkpark Exp $
  +// $Id: jade.php,v 1.6 2004/09/14 15:29:44 wkpark Exp $
   
   function processor_jade($formatter,$value,$options=array()) {
     global $DBInfo;
  @@ -22,7 +22,7 @@
     $pagename=$formatter->page->name;
     $cache= new Cache_text("jade");
   
  -  if (!$formatter->preview and $cache->exists($pagename) and $cache->mtime($pagename) > $formatter->page->mtime())
  +  if (!$formatter->refresh and !$formatter->preview and $cache->exists($pagename) and $cache->mtime($pagename) > $formatter->page->mtime())
       return $cache->fetch($pagename);
   
     $method="#html";
  
  
  


iolo        2004/09/16 03:30:25

  Modified:    .        wiki.php
  Log:
  monior fix for valid xhtml
  
  Revision  Changes    Path
  1.174     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.173
  retrieving revision 1.174
  diff -u -r1.173 -r1.174
  --- wiki.php	7 Sep 2004 00:49:16 -0000	1.173
  +++ wiki.php	15 Sep 2004 18:30:25 -0000	1.174
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.173 2004/09/07 00:49:16 wkpark Exp $
  +// $Id: wiki.php,v 1.174 2004/09/15 18:30:25 iolo Exp $
   //
  -$_revision = substr('$Revision: 1.173 $',1,-1);
  +$_revision = substr('$Revision: 1.174 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -1914,7 +1914,7 @@
       }
       if ($align) $attr[]="align='center'";
       if ($len > 1)
  -      $attr[]="align='center' colspan='$len'";
  +      $attr[]="colspan='$len'"; #$attr[]="align='center' colspan='$len'";
       return implode(' ',$attr);
     }
   
  
  
  


iolo        2004/09/16 03:30:25

  Modified:    plugin   BabelFish.php
  Log:
  monior fix for valid xhtml
  
  Revision  Changes    Path
  1.7       +2 -2      moniwiki/plugin/BabelFish.php
  
  Index: BabelFish.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BabelFish.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- BabelFish.php	25 Aug 2004 15:17:35 -0000	1.6
  +++ BabelFish.php	15 Sep 2004 18:30:25 -0000	1.7
  @@ -5,7 +5,7 @@
   //
   // Usage: [[BabelFish]]
   //
  -// $Id: BabelFish.php,v 1.6 2004/08/25 15:17:35 wkpark Exp $
  +// $Id: BabelFish.php,v 1.7 2004/09/15 18:30:25 iolo Exp $
   
   #<script language="JavaScript1.2" src="http://www.altavista.com/r?entr"></script>
   function macro_BabelFish($formatter,$value,$ret=array()) {
  @@ -45,7 +45,7 @@
     }
     $goto=$TR.'&amp;url='.$URL;
     return <<<EOF
  -<img src='$formatter->imgs_dir_interwiki$from-16.png' /> <a href="$goto"><img border='0' src='$formatter->imgs_dir/plugin/babelfish.gif' title='$msg' alt='BabelFish@altavista' /></a><img src='$formatter->imgs_dir_interwiki$to-16.png' />
  +<img src='$formatter->imgs_dir_interwiki$from-16.png' alt="$from"/> <a href="$goto"><img border='0' src='$formatter->imgs_dir/plugin/babelfish.gif' title='$msg' alt='BabelFish@altavista' /></a><img src='$formatter->imgs_dir_interwiki$to-16.png' alt="$to"/>
   EOF;
   
   }
  
  
  


wkpark      2004/09/16 23:40:26

  Modified:    .        wiki.php
  Log:
  fixed #300506
  
  Revision  Changes    Path
  1.175     +6 -5      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.174
  retrieving revision 1.175
  diff -u -r1.174 -r1.175
  --- wiki.php	15 Sep 2004 18:30:25 -0000	1.174
  +++ wiki.php	16 Sep 2004 14:40:25 -0000	1.175
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.174 2004/09/15 18:30:25 iolo Exp $
  +// $Id: wiki.php,v 1.175 2004/09/16 14:40:25 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.174 $',1,-1);
  +$_revision = substr('$Revision: 1.175 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -2044,11 +2044,12 @@
           continue; # comments
         }
   
  +      $p_close='';
         if (preg_match('/^-{4,}/',$line)) {
           if ($DBInfo->auto_linebreak) $this->nobr=1; // XXX
  -        if ($in_p) { $text.=$this->_div(0,&$in_div); $in_p='';}
  +        if ($in_p) { $p_close=$this->_div(0,&$in_div); $in_p='';}
         } else if ($in_p == '') {
  -        $text.=$this->_div(1,&$in_div);
  +        $p_close=$this->_div(1,&$in_div);
           $in_p= $line;
         }
   
  @@ -2212,7 +2213,7 @@
   
         $line=preg_replace($this->extrarule,$this->extrarepl,$line);
   
  -      $line=$close.$open.$line;
  +      $line=$close.$p_close.$open.$line;
         $open="";$close="";
   
         if ($in_pre==-1) {
  
  
  


wkpark      2004/09/22 00:48:44

  Modified:    plugin   RecentChanges.php BlogChanges.php
  Log:
  rename 'purple' as 'perma'
  
  Revision  Changes    Path
  1.8       +8 -6      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- RecentChanges.php	13 Aug 2004 15:48:47 -0000	1.7
  +++ RecentChanges.php	21 Sep 2004 15:48:44 -0000	1.8
  @@ -2,9 +2,8 @@
   // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
  -// vim:et:ts=2:
   //
  -// $Id: RecentChanges.php,v 1.7 2004/08/13 15:48:47 iolo Exp $
  +// $Id: RecentChanges.php,v 1.8 2004/09/21 15:48:44 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     $options['trail']='';
  @@ -30,7 +29,8 @@
   
     if ($options['target']) $target="target='$options[target]'";
   
  -  $date_fmt='D d M Y';
  +  #$date_fmt='D d M Y';
  +  $date_fmt=$DBInfo->date_fmt_rc;
   
     preg_match("/(\d+)?(?:\s*,\s*)?(.*)?$/",$value,$match);
     if ($match) {
  @@ -45,7 +45,7 @@
       if (in_array ("showhost", $args)) $showhost=1;
       if (in_array ("comment", $args)) $comment=1;
       if (in_array ("nobookmark", $args)) $nobookmark=1;
  -    if (!in_array ("nopurple", $args)) $purple_icon=$formatter->purple_icon;
  +    if (!in_array ("noperma", $args)) $perma_icon=$formatter->perma_icon;
       if (in_array ("simple", $args)) {
         $use_day=0;
         $template=
  @@ -145,9 +145,10 @@
   
       $day = date('Y-m-d', $ed_time);
       if ($use_day and $day != $ratchet_day) {
  -      $purple="<a name='$day'></a><a class='purple' href='#$day'>$purple_icon</a>";
  +      $tag=str_replace('-','',$day);
  +      $perma="<a name='$tag'></a><a class='perma' href='#$tag'>$perma_icon</a>";
         $out.=$cat0;
  -      $out.=sprintf("%s<font class='rc-date' size='+1'>%s </font>$purple<font class='rc-bookmark' size='-1'>",
  +      $out.=sprintf("%s<font class='rc-date' size='+1'>%s </font>$perma<font class='rc-bookmark' size='-1'>",
               $br, date($date_fmt, $ed_time));
         if (!$nobookmark)
           $out.='['.$formatter->link_tag($formatter->page->urlname,
  @@ -205,4 +206,5 @@
     }
     return $out.$cat0;
   }
  +// vim:et:sts=2:
   ?>
  
  
  
  1.30      +6 -5      moniwiki/plugin/BlogChanges.php
  
  Index: BlogChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogChanges.php,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- BlogChanges.php	23 Aug 2004 18:07:27 -0000	1.29
  +++ BlogChanges.php	21 Sep 2004 15:48:44 -0000	1.30
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogChanges action plugin for the MoniWiki
   //
  -// $Id: BlogChanges.php,v 1.29 2004/08/23 18:07:27 wkpark Exp $
  +// $Id: BlogChanges.php,v 1.30 2004/09/21 15:48:44 wkpark Exp $
   
   class Blog_cache {
     function get_all_blogs() {
  @@ -346,7 +346,7 @@
     if (in_array('summary',$opts))
       $template='$out="$bullet<div class=\"blog-summary\"><div class=\"blog-title\"><a name=\"$tag\"></a>'.
         '<a href=\"$url#$tag\">$title</a> <a class=\"puple\" href=\"#$tag\">'.
  -      addslashes($formatter->purple_icon).
  +      addslashes($formatter->perma_icon).
         '</a></div><span class=\"blog-user\">';
     if (!in_array('nouser',$opts))
       $template.='by $user ';
  @@ -390,9 +390,10 @@
       if ($summary) {
         $anchor= date('Ymd',$time);
         if ($date_anchor != $anchor) {
  -        $datetag= '<div class="blog-date">'.date('M d, Y',$time).
  -          ' <a name="'.$anchor.'"></a><a class="purple" href="#'.$anchor.'">'.
  -          $formatter->purple_icon.'</a></div>';
  +        $date_anchor_fmt=$DBInfo->date_fmt_blog;
  +        $datetag= '<div class="blog-date">'.date($date_anchor_fmt,$time).
  +          ' <a name="'.$anchor.'"></a><a class="perma" href="#'.$anchor.'">'.
  +          $formatter->perma_icon.'</a></div>';
           $date_anchor= $anchor;
         }
         $p=new WikiPage($page);
  
  
  


wkpark      2004/09/22 00:48:44

  Modified:    plugin/processor blog.php
  Log:
  rename 'purple' as 'perma'
  
  Revision  Changes    Path
  1.19      +5 -4      moniwiki/plugin/processor/blog.php
  
  Index: blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/blog.php,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- blog.php	23 Aug 2004 14:19:42 -0000	1.18
  +++ blog.php	21 Sep 2004 15:48:44 -0000	1.19
  @@ -7,7 +7,7 @@
   // Hello World
   // }}}
   // this processor is used internally by the Blog action
  -// $Id: blog.php,v 1.18 2004/08/23 14:19:42 wkpark Exp $
  +// $Id: blog.php,v 1.19 2004/09/21 15:48:44 wkpark Exp $
   
   function processor_blog($formatter,$value="",$options) {
     static $date_anchor='';
  @@ -60,7 +60,8 @@
         } else
           $anchor= date("Ymd",$time);
         if ($date_anchor != $anchor) {
  -        $datetag= "<div class='blog-date'>".date("M d, Y",$time)." <a name='$anchor'></a><a class='purple' href='#$anchor'>$formatter->purple_icon</a></div>";
  +        $anchor_date_fmt=$DBInfo->date_fmt_blog;
  +        $datetag= "<div class='blog-date'>".date($anchor_date_fmt,$time)." <a name='$anchor'></a><a class='perma' href='#$anchor'>$formatter->perma_icon</a></div>";
           $date_anchor= $anchor;
         }
       }
  @@ -116,10 +117,10 @@
       #$tag=normalize($title);
       $tag=$md5sum;
       if ($tag[0]=='%') $tag="n".$tag;
  -    $purple="<a class='purple' href='#$tag'>$formatter->purple_icon</a>";
  +    $perma="<a class='perma' href='#$tag'>$formatter->perma_icon</a>";
       $title=preg_replace("/(".$formatter->wordrule.")/e",
                           "\$formatter->link_repl('\\1')",$title);
  -    $out.="<div class='blog-title'><a name='$tag'></a>$title $purple</div>\n";
  +    $out.="<div class='blog-title'><a name='$tag'></a>$title $perma</div>\n";
     }
     $out.="<div class='blog-user'>Submitted by $user $date</div>\n".
       "<div class='blog-content'>$msg</div>$comments$action\n".
  
  
  


wkpark      2004/09/22 00:52:45

  Modified:    .        wiki.php config.php.default
  Log:
  add $date_fmt_rc, $date_fmt_blog
  
  Revision  Changes    Path
  1.176     +4 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.175
  retrieving revision 1.176
  diff -u -r1.175 -r1.176
  --- wiki.php	16 Sep 2004 14:40:25 -0000	1.175
  +++ wiki.php	21 Sep 2004 15:52:44 -0000	1.176
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.175 2004/09/16 14:40:25 wkpark Exp $
  +// $Id: wiki.php,v 1.176 2004/09/21 15:52:44 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.175 $',1,-1);
  +$_revision = substr('$Revision: 1.176 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -437,6 +437,8 @@
       $this->use_smileys=1;
       $this->hr="<hr class='wikiHr' />";
       $this->date_fmt= 'Y-m-d';
  +    $this->date_fmt_rc= 'D d M Y';
  +    $this->date_fmt_blog= 'M d, Y';
       $this->datetime_fmt= 'Y-m-d H:i:s';
       #$this->changed_time_fmt = ' . . . . [h:i a]';
       $this->changed_time_fmt= ' [h:i a]'; # used by RecentChanges macro
  
  
  
  1.13      +13 -5     moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- config.php.default	26 Aug 2004 10:42:01 -0000	1.12
  +++ config.php.default	21 Sep 2004 15:52:44 -0000	1.13
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.12 2004/08/26 10:42:01 wkpark Exp $
  +# $Id: config.php.default,v 1.13 2004/09/21 15:52:44 wkpark Exp $
   #
   $sitename='UnnamedWiki';
   $data_dir= './data';
  @@ -28,7 +28,7 @@
   $iconset= 'moni';
   $enable_latex=0;
   $lang='auto';
  -$charset='euc-kr';
  +$charset='utf-8';
   #$charset='utf-8';
   $auto_linebreak= 0;
   $trail= 0;
  @@ -40,7 +40,8 @@
   $use_twinpages=1;
   $use_trackback=0;
   $vim_options='+"set expandtab" +"retab"';
  -#$nonexists='fancy_nonexists';
  +#$vim_options='+"set encoding=UTF-8"';
  +#$nonexists='fancy';
   #$nonexists='nolink';
   #$nonexists='forcelink';
   #$use_titlecache=0;
  @@ -59,6 +60,10 @@
   #$theme_css=1;
   #$blog_comments=1;
   
  +#$date_fmt='Y-m-d';
  +#$date_fmt_rc='Y-m-d';
  +#$date_fmt_blog='Y-m-d';
  +
   #$sistermap=$data_dir.'/sistermap.txt';
   #$metatags='
   #<meta name="ROBOTS" content="NOINDEX,NOFOLLOW" />
  @@ -75,7 +80,9 @@
   #$diffonly=1;
   #$goto_type=1;
   
  -#$purple_icon='<img src="/wiki/imgs/egg.png" border="0" />';
  +#$purple_icon=''; # obsolute
  +#$use_purple='';
  +#$perma_icon='<img src="/wiki/imgs/egg.png" border="0" />';
   #$pagetype=array("KldpDsl"=>"plain","ManPage"=>"/man","DocbookSgml"=>"/jade","LinuxDoc"=>"/linuxdoc");
   #$default_dsssl='to_dir/kldp.dsl';
   
  @@ -84,8 +91,9 @@
   
   #$processors=array('latex'=>'latex');
   #$inline_latex='mimetex';
  +#$inline_latex='latex';
  +#$inline_latex='1';
   
   #$url_schemas='mms';
  -#$vim_options='+"set encoding=utf-8"';
   #$blacklist='127.0.0.0/24:192.168.1.0/24:192.168.1.67';
   ?>
  
  
  


wkpark      2004/09/22 01:13:28

  Modified:    plugin/processor vim.php
  Log:
  fixed #300210: add $vim_nocheck option
  
  Revision  Changes    Path
  1.19      +4 -5      moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- vim.php	19 Aug 2004 17:13:53 -0000	1.18
  +++ vim.php	21 Sep 2004 16:13:28 -0000	1.19
  @@ -6,7 +6,7 @@
   // Usage: {{{#!vim sh|c|sh|.. [number]
   // some codes
   // }}}
  -// $Id: vim.php,v 1.18 2004/08/19 17:13:53 pyrasis Exp $
  +// $Id: vim.php,v 1.19 2004/09/21 16:13:28 wkpark Exp $
   
   function processor_vim($formatter,$value,$options) {
     global $DBInfo;
  @@ -25,9 +25,9 @@
       list($line,$value)=explode("\n",$value,2);
     # get parameters
     if ($line)
  -    list($tag,$type,$extra)=explode(" ",$line,3);
  +    list($tag,$type,$extra)=preg_split('/\s+/',$line,3);
     $src=$value;
  -  if (!$type) $type='nosyntax';
  +  if (!preg_match('/^\w$/',$type)) $type='nosyntax';
   
     if ($extra == "number") 
       $option='+"set number" ';
  @@ -49,8 +49,7 @@
       #return join('',file($cache_dir."/$uniq".".html"));
     }
   
  -  # comment out the following two lines to freely use any syntaxes.
  -  if (!in_array($type,$syntax)) 
  +  if (!empty($DBInfo->vim_nocheck) and !in_array($type,$syntax)) 
       return "<pre class='code'>\n$line\n$src\n</pre>\n";
   
     if(getenv("OS")=="Windows_NT") {
  
  
  


wkpark      2004/09/24 01:50:19

  Added:       plugin   PGBR.php
  Log:
  new PGBR macro added
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/PGBR.php
  
  Index: PGBR.php
  ===================================================================
  <?php
  // Copyright 2004 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a sample Page break macro for the MoniWiki
  //
  // Usage: [[PGBR]]
  //  and add a CSS like following in your print.css:
  // div.pagebreak {page-break-before: always}
  //
  // $Id: PGBR.php,v 1.1 2004/09/23 16:50:19 wkpark Exp $
  
  function macro_PGBR($formatter,$value) {
    return "<div class='pagebreak'><br /></div>\n";
  }
  // vim:et:sts=2:
  ?>
  
  
  


wkpark      2004/09/24 01:51:15

  Modified:    css      print.css
  Log:
  a pagebreak class added
  
  Revision  Changes    Path
  1.5       +3 -0      moniwiki/css/print.css
  
  Index: print.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/print.css,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- print.css	7 Sep 2004 04:47:17 -0000	1.4
  +++ print.css	23 Sep 2004 16:51:10 -0000	1.5
  @@ -233,3 +233,6 @@
   #printFooter {
     border-top: 5px solid #c0c0c0;
   }
  +
  +div.pagebreak {page-break-before: always;}
  +div.pagebreak br { display:none;}
  
  
  


wkpark      2004/10/02 11:40:14

  Modified:    .        wiki.php wikilib.php
  Log:
  fix #300523
  add resize form in the EditForm
  
  Revision  Changes    Path
  1.177     +11 -5     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.176
  retrieving revision 1.177
  diff -u -r1.176 -r1.177
  --- wiki.php	21 Sep 2004 15:52:44 -0000	1.176
  +++ wiki.php	2 Oct 2004 02:40:13 -0000	1.177
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.176 2004/09/21 15:52:44 wkpark Exp $
  +// $Id: wiki.php,v 1.177 2004/10/02 02:40:13 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.176 $',1,-1);
  +$_revision = substr('$Revision: 1.177 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -2636,13 +2636,16 @@
         if ($this->pi['#keywords'])
           $keywords='<meta name="keywords" content="'.$this->pi['#keywords'].'" />';
         else if ($DBInfo->use_keywords) {
  -        $keywords=str_replace(" ",", ",$this->page->title);
  +        $keywords=strip_tags($this->page->title);
  +        $keywords=str_replace(" ",", ",$keywords);
           $keywords="<meta name=\"keywords\" content=\"$keywords\" />";
         }
   
         if (empty($options['title'])) {
           $options['title']=$this->pi['#title'] ? $this->pi['#title']:
             $this->page->title;
  +        $options['title']=
  +          htmlspecialchars($options['title']);
         }
         if (empty($options['css_url'])) $options['css_url']=$DBInfo->css_url;
         print <<<EOS
  @@ -2861,8 +2864,10 @@
       }
   
       if (!$title) {
  -      $title=$options['title'];
  -      if (!$title) $title=$this->pi['#title'];
  +      $title=htmlspecialchars($this->pi['#title']);
  +      if (!$title) $title=$options['title'];
  +    } else {
  +      $title=htmlspecialchars($title);
       }
       if (!$title) {
         if ($this->group) { # for UserNameSpace
  @@ -2872,6 +2877,7 @@
           $group="<div class='wikiGroup'>".(substr($group,0,-1))." &raquo;</div>";
         } else     
           $title=$this->page->title;
  +      $title=htmlspecialchars($title);
       }
       # setup title variables
       #$heading=$this->link_to("?action=fullsearch&amp;value="._urlencode($name),$title);
  
  
  
  1.117     +26 -6     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.116
  retrieving revision 1.117
  diff -u -r1.116 -r1.117
  --- wikilib.php	7 Sep 2004 02:55:27 -0000	1.116
  +++ wikilib.php	2 Oct 2004 02:40:13 -0000	1.117
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.116 2004/09/07 02:55:27 wkpark Exp $
  +// $Id: wikilib.php,v 1.117 2004/10/02 02:40:13 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -525,6 +525,7 @@
     $cols= preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']) ? $COLS_MSIE : $COLS_OTHER;
   
     $rows= $options['rows'] > 5 ? $options['rows']: 16;
  +  $rows= $rows < 60 ? $rows: 16;
     $cols= $options['cols'] > 60 ? $options['cols']: $cols;
   
     $text= $options['savetext'];
  @@ -556,8 +557,10 @@
     $menu= '';
     if ($preview)
       $menu= $formatter->link_to('#preview',_("Skip to preview"));
  -  else
  +  else {
       $menu= $formatter->link_to("?action=edit&amp;rows=".($rows-3),_("ReduceEditor"));
  +    $menu.= ' | '.$formatter->link_to("?action=edit&amp;rows=".($rows+3),_("EnlargeEditor"));
  +  }
   
     if (!$options['nomenu']) {
       $menu.= " | ".$formatter->link_tag('InterWiki',"",_("InterWiki"));
  @@ -604,6 +607,23 @@
     $save_msg=_("Save");
     $summary_msg=_("Summary of Change");
     $form.=<<<EOS
  +<script language='javascript'>
  +//<![CDATA[
  +<!--
  +function resize(obj,val) {
  +  rows= obj.savetext.rows;
  +  rows+=val;
  +  if (rows > 60) rows=16;
  +  else if (rows < 5) rows=16;
  +  obj.savetext.rows=rows;
  +}
  +//-->
  +//]]>
  +</script>
  +<input type='button' value='+' onClick='resize(this.form,3)'>
  +<input type='button' value='-' onClick='resize(this.form,-3)'>
  +EOS;
  +  $form.=<<<EOS
   <textarea class="wiki" id="content" wrap="virtual" name="savetext"
    rows="$rows" cols="$cols" class="wiki">$raw_body</textarea><br />
   $summary_msg: <input name="comment" size="70" maxlength="70" style="width:200" /><br />
  @@ -919,8 +939,8 @@
         $options['conflict']=1; 
         $options['datestamp']=$datestamp; 
         if ($button_merge) {
  -        $title=sprintf(_("Preview of %s"),$formatter->link_tag($formatter->page->urlname,"",$options['page'],"class='title'"));
  -        $formatter->send_title($title,"",$options);
  +        $option['title']=sprintf(_("Preview of %s"),$formatter->link_tag($formatter->page->urlname,"",$options['page'],"class='wikiTitle'"));
  +        $formatter->send_title("","",$options);
           $options['conflict']=0; 
           $merge=$formatter->get_merge($savetext);
           if ($merge) $savetext=$merge;
  @@ -948,8 +968,8 @@
     $formatter->page->set_raw_body($savetext);
   
     if ($button_preview) {
  -    $title=sprintf(_("Preview of %s"),$formatter->link_tag($formatter->page->urlname,"",$options['page'],"class='title'"));
  -    $formatter->send_title($title,"",$options);
  +    $options['title']=sprintf(_("Preview of %s"),$formatter->link_tag($formatter->page->urlname,"",htmlspecialchars($options['page']),"class='wikiTitle'"));
  +    $formatter->send_title("","",$options);
        
       $options['preview']=1; 
       $options['datestamp']=$datestamp; 
  
  
  


wkpark      2004/10/02 11:42:55

  Modified:    plugin   LikePages.php RecentChanges.php
  Log:
  fix #300523: fix Cross-Site Scripting Security
  
  Revision  Changes    Path
  1.3       +7 -4      moniwiki/plugin/LikePages.php
  
  Index: LikePages.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/LikePages.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- LikePages.php	17 Aug 2003 13:50:38 -0000	1.2
  +++ LikePages.php	2 Oct 2004 02:42:53 -0000	1.3
  @@ -4,7 +4,7 @@
   // a LikePages plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: LikePages.php,v 1.2 2003/08/17 13:50:38 wkpark Exp $
  +// $Id: LikePages.php,v 1.3 2004/10/02 02:42:53 wkpark Exp $
   
   function do_LikePages($formatter,$options) {
   
  @@ -110,7 +110,8 @@
       $out.="<ol>\n";
       while (list($pagename,$i) = each($likes)) {
         $pageurl=_rawurlencode($pagename);
  -      $out.= '<li>' . $formatter->link_tag($pageurl,"",urldecode($pagename),"tabindex='$idx'")."</li>\n";
  +      $pagetext=htmlspecialchars(urldecode($pagename));
  +      $out.= '<li>' . $formatter->link_tag($pageurl,"",$pagetext,"tabindex='$idx'")."</li>\n";
         $idx++;
       }
       $out.="</ol>\n";
  @@ -123,7 +124,8 @@
       $out.="<table border='0' width='100%'><tr><td width='50%' valign='top'>\n<ol>\n";
       while (list($pagename,$i) = each($starts)) {
         $pageurl=_rawurlencode($pagename);
  -      $out.= '<li>' . $formatter->link_tag($pageurl,"",urldecode($pagename),"tabindex='$idx'")."</li>\n";
  +      $pagetext=htmlspecialchars(urldecode($pagename));
  +      $out.= '<li>' . $formatter->link_tag($pageurl,"",$pagetext,"tabindex='$idx'")."</li>\n";
         $idx++;
       }
       $out.="</ol></td>\n";
  @@ -133,7 +135,8 @@
       $out.="<td width='50%' valign='top'><ol>\n";
       while (list($pagename,$i) = each($ends)) {
         $pageurl=_rawurlencode($pagename);
  -      $out.= '<li>' . $formatter->link_tag($pageurl,"",urldecode($pagename),"tabindex='$idx'")."</li>\n";
  +      $pagetext=htmlspecialchars(urldecode($pagename));
  +      $out.= '<li>' . $formatter->link_tag($pageurl,"",$pagetext,"tabindex='$idx'")."</li>\n";
         $idx++;
       }
       $out.="</ol>\n</td></tr></table>\n";
  
  
  
  1.9       +2 -1      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- RecentChanges.php	21 Sep 2004 15:48:44 -0000	1.8
  +++ RecentChanges.php	2 Oct 2004 02:42:53 -0000	1.9
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.8 2004/09/21 15:48:44 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.9 2004/10/02 02:42:53 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     $options['trail']='';
  @@ -179,6 +179,7 @@
   
       #$title= preg_replace("/((?<=[a-z0-9])[A-Z][a-z0-9])/"," \\1",$page_name);
       $title= get_title($title).$group;
  +    $title=htmlspecialchars($title);
       $title= $formatter->link_tag($pageurl,"",$title,$target);
   
       if (! empty($DBInfo->changed_time_fmt))
  
  
  


wkpark      2004/10/02 11:44:49

  Modified:    plugin   BlogArchives.php MailTo.php UploadedFiles.php
                        WordIndex.php print.php rss_blog.php
  Log:
  small bugs are fixed
  
  Revision  Changes    Path
  1.2       +2 -2      moniwiki/plugin/BlogArchives.php
  
  Index: BlogArchives.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogArchives.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- BlogArchives.php	16 Aug 2004 02:31:57 -0000	1.1
  +++ BlogArchives.php	2 Oct 2004 02:44:36 -0000	1.2
  @@ -7,7 +7,7 @@
   // [[BlogArchives("F Y")]]
   // [[BlogArchives("F Y",list)]]
   //
  -// $Id: BlogArchives.php,v 1.1 2004/08/16 02:31:57 wkpark Exp $
  +// $Id: BlogArchives.php,v 1.2 2004/10/02 02:44:36 wkpark Exp $
   
   function macro_BlogArchives($formatter,$value,$options=array()) {
     global $DBInfo;
  @@ -31,7 +31,7 @@
   
     $year=date('Y');
     // show only recent two years
  -  $rule="/^(($year|".($year-1).")\d{2})\d{2}_2e/";
  +  $rule="/^(($year|".($year-1).")\d{2})\d{2}/";
     $archives=array();
     while ($file = readdir($handle)) {
       $fname=$DBInfo->cache_dir.'/blogchanges/'.$file;
  
  
  
  1.2       +3 -3      moniwiki/plugin/MailTo.php
  
  Index: MailTo.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/MailTo.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- MailTo.php	6 Jan 2004 23:34:35 -0000	1.1
  +++ MailTo.php	2 Oct 2004 02:44:36 -0000	1.2
  @@ -5,7 +5,7 @@
   //
   // Usage: [[MailTo(Hello I DOT HATE hello DOT SPAM org)]]
   //
  -// $Id: MailTo.php,v 1.1 2004/01/06 23:34:35 wkpark Exp $
  +// $Id: MailTo.php,v 1.2 2004/10/02 02:44:36 wkpark Exp $
   
   function macro_MailTo($formatter,$value) {
     $new=preg_replace(
  @@ -14,10 +14,10 @@
       array(".","@","-",""),
       $value);
   
  -  $new=preg_replace(array("/\s/","/\s[A-Z]+\s/"),"",$new);
  +  $new=preg_replace(array("/\s/","/(?<=\s)[A-Z]+\s/"),"",$new);
   
     return $formatter->link_repl('mailto:'.$new);
   }
   
  -// vim:et:ts=2:
  +// vim:et:sts=2:
   ?>
  
  
  
  1.6       +5 -3      moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- UploadedFiles.php	1 Aug 2004 13:02:57 -0000	1.5
  +++ UploadedFiles.php	2 Oct 2004 02:44:36 -0000	1.6
  @@ -4,7 +4,7 @@
   // a UploadedFiles plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: UploadedFiles.php,v 1.5 2004/08/01 13:02:57 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.6 2004/10/02 02:44:36 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     $list=macro_UploadedFiles($formatter,$options['page'],$options);
  @@ -22,9 +22,11 @@
      global $DBInfo;
   
      $download='download';
  +   $checkbox='checkbox';
      $needle="//";
      if ($options['download']) $download=$options['download'];
      if ($options['needle']) $needle=$options['needle'];
  +   if ($options['checkbox']) $checkbox=$options['checkbox'];
   
      if (!in_array('UploadFile',$formatter->actions))
        $formatter->actions[]='UploadFile';
  @@ -76,7 +78,7 @@
      foreach ($dirs as $file) {
         $link=$formatter->link_url($file,"?action=uploadedfiles",$file);
         $date=date("Y-m-d",filemtime($dir."/".$DBInfo->pageToKeyname($file)));
  -      $out.="<tr><td class='wiki'><input type='checkbox' name='files[$idx]' value='$file' /></td><td class='wiki'><a href='$link'>$file/</a></td><td align='right' class='wiki'>&nbsp;</td><td class='wiki'>$date</td></tr>\n";
  +      $out.="<tr><td class='wiki'><input type='$checkbox' name='files[$idx]' value='$file' /></td><td class='wiki'><a href='$link'>$file/</a></td><td align='right' class='wiki'>&nbsp;</td><td class='wiki'>$date</td></tr>\n";
         $idx++;
      }
   
  @@ -109,7 +111,7 @@
         $size=round($size,2).' '.$unit[$i];
   
         $date=date('Y-m-d',filemtime($dir.'/'.$file));
  -      $out.="<tr><td class='wiki'><input type='checkbox' name='files[$idx]' value='$file' /></td><td class='wiki'><a href='$link'>$file</a></td><td align='right' class='wiki'>$size</td><td class='wiki'>$date</td></tr>\n";
  +      $out.="<tr><td class='wiki'><input type='$checkbox' name='files[$idx]' value='$file' /></td><td class='wiki'><a href='$link'>$file</a></td><td align='right' class='wiki'>$size</td><td class='wiki'>$date</td></tr>\n";
         $idx++;
      }
      $idx--;
  
  
  
  1.5       +3 -3      moniwiki/plugin/WordIndex.php
  
  Index: WordIndex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/WordIndex.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- WordIndex.php	13 Aug 2004 13:52:13 -0000	1.4
  +++ WordIndex.php	2 Oct 2004 02:44:36 -0000	1.5
  @@ -5,7 +5,7 @@
   //
   // Usage: [[WordIndex]]
   //
  -// $Id: WordIndex.php,v 1.4 2004/08/13 13:52:13 wkpark Exp $
  +// $Id: WordIndex.php,v 1.5 2004/10/02 02:44:36 wkpark Exp $
   // vim:et:ts=2:
   
   function macro_WordIndex($formatter,$value) {
  @@ -35,9 +35,9 @@
       }
     }
     #ksort($dict);
  -  ksort($dict,SORT_STRING);
  +  #ksort($dict,SORT_STRING);
     #uksort($dict, "strnatcasecmp");
  -  #uksort($dict, "strcasecmp");
  +  uksort($dict, "strcasecmp");
   
     $key=-1;
     $out="";
  
  
  
  1.4       +2 -2      moniwiki/plugin/print.php
  
  Index: print.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/print.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- print.php	20 Aug 2004 11:11:11 -0000	1.3
  +++ print.php	2 Oct 2004 02:44:36 -0000	1.4
  @@ -3,8 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a print action plugin for the MoniWiki
   //
  -// $Id: print.php,v 1.3 2004/08/20 11:11:11 wkpark Exp $
  -// vim:et:ts=2:
  +// $Id: print.php,v 1.4 2004/10/02 02:44:36 wkpark Exp $
   
   function do_print($formatter,$options) {
     global $DBInfo;
  @@ -29,4 +28,5 @@
     return;
   }
   
  +// vim:et:sts=2:
   ?>
  
  
  
  1.20      +2 -2      moniwiki/plugin/rss_blog.php
  
  Index: rss_blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rss_blog.php,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- rss_blog.php	31 Aug 2004 07:47:58 -0000	1.19
  +++ rss_blog.php	2 Oct 2004 02:44:36 -0000	1.20
  @@ -4,7 +4,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a rss_blog action plugin for the MoniWiki
   //
  -// $Id: rss_blog.php,v 1.19 2004/08/31 07:47:58 pyrasis Exp $
  +// $Id: rss_blog.php,v 1.20 2004/10/02 02:44:36 wkpark Exp $
   
   if (!function_exists('macro_BlogChanges'))
     if ($plugin=getPlugin('BlogChanges')) include_once("plugin/$plugin.php");
  @@ -138,7 +138,7 @@
   
     $url=qualifiedUrl($formatter->link_url(_urlencode($page)));
   
  -  /* purple link */
  +  /* perma link */
     $tag=md5($user.' '.$date.' '.$title);
   
     /* RFC 822 date format for RSS 2.0 */
  
  
  


wkpark      2004/10/02 11:58:29

  Modified:    plugin   Navigation.php
  Log:
  apply http://kldp.net/forum/message.php?msg_id=7446
  
  Revision  Changes    Path
  1.4       +3 -3      moniwiki/plugin/Navigation.php
  
  Index: Navigation.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Navigation.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Navigation.php	31 Aug 2004 15:49:18 -0000	1.3
  +++ Navigation.php	2 Oct 2004 02:58:29 -0000	1.4
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Navigation(IndexPage)]]
   //
  -// $Id: Navigation.php,v 1.3 2004/08/31 15:49:18 wkpark Exp $
  +// $Id: Navigation.php,v 1.4 2004/10/02 02:58:29 wkpark Exp $
   
   function macro_Navigation($formatter,$value) {
     global $DBInfo;
  @@ -77,11 +77,11 @@
         $formatter->query_string=$query;
       }
       $pnut='&laquo; ';
  -    if ($prev) $pnut.=$formatter->link_repl($prev);
  +    if ($prev) $pnut.=$formatter->link_repl($prev," accesskey=\",\" ");
       if ($use_action) $formatter->query_string=$save;
       $pnut.=" | ".$formatter->link_repl($index)." | ";
       if ($use_action) $formatter->query_string=$query;
  -    if ($next) $pnut.=$formatter->link_repl($next);
  +    if ($next) $pnut.=$formatter->link_repl($next," accesskey=\".\" ");
       $pnut.=' &raquo;';
       if ($use_action) $formatter->query_string=$save;
     }
  
  
  


wkpark      2004/10/02 12:02:35

  Modified:    .        wikilib.php
  Log:
  add $use_resizer option for the Edit Form
  
  Revision  Changes    Path
  1.118     +4 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.117
  retrieving revision 1.118
  diff -u -r1.117 -r1.118
  --- wikilib.php	2 Oct 2004 02:40:13 -0000	1.117
  +++ wikilib.php	2 Oct 2004 03:02:33 -0000	1.118
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.117 2004/10/02 02:40:13 wkpark Exp $
  +// $Id: wikilib.php,v 1.118 2004/10/02 03:02:33 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -606,7 +606,8 @@
     $preview_msg=_("Preview");
     $save_msg=_("Save");
     $summary_msg=_("Summary of Change");
  -  $form.=<<<EOS
  +  if ($DBInfo->use_resizer) {
  +    $form.=<<<EOS
   <script language='javascript'>
   //<![CDATA[
   <!--
  @@ -623,6 +624,7 @@
   <input type='button' value='+' onClick='resize(this.form,3)'>
   <input type='button' value='-' onClick='resize(this.form,-3)'>
   EOS;
  +  }
     $form.=<<<EOS
   <textarea class="wiki" id="content" wrap="virtual" name="savetext"
    rows="$rows" cols="$cols" class="wiki">$raw_body</textarea><br />
  
  
  


wkpark      2004/10/02 12:31:26

  Modified:    locale   Makefile
  Log:
  update messages
  
  Revision  Changes    Path
  1.3       +15 -3     moniwiki/locale/Makefile
  
  Index: Makefile
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/Makefile,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Makefile	7 Jan 2004 02:44:45 -0000	1.2
  +++ Makefile	2 Oct 2004 03:31:26 -0000	1.3
  @@ -1,4 +1,4 @@
  -# $Id: Makefile,v 1.2 2004/01/07 02:44:45 wkpark Exp $
  +# $Id: Makefile,v 1.3 2004/10/02 03:31:26 wkpark Exp $
   #
   # locale/Makefile
   #
  @@ -55,8 +55,11 @@
   ${POT_FILE}: ../plugin/Attachment.php
   ${POT_FILE}: ../plugin/BabelFish.php
   ${POT_FILE}: ../plugin/Blog.php
  +${POT_FILE}: ../plugin/BlogArchives.php
  +${POT_FILE}: ../plugin/BlogCategories.php
   ${POT_FILE}: ../plugin/BlogChanges.php
   ${POT_FILE}: ../plugin/Calendar.php
  +${POT_FILE}: ../plugin/Comment.php
   ${POT_FILE}: ../plugin/Draw.php
   ${POT_FILE}: ../plugin/DueDate.php
   ${POT_FILE}: ../plugin/Echo.php
  @@ -68,19 +71,20 @@
   ${POT_FILE}: ../plugin/GetText.php
   ${POT_FILE}: ../plugin/ISBN.php
   ${POT_FILE}: ../plugin/Icon.php
  -${POT_FILE}: ../plugin/Img.php
   ${POT_FILE}: ../plugin/ImportUrl.php
   ${POT_FILE}: ../plugin/Include.php
   ${POT_FILE}: ../plugin/LikePages.php
   ${POT_FILE}: ../plugin/MailTo.php
  +${POT_FILE}: ../plugin/Navigation.php
   ${POT_FILE}: ../plugin/OeKaki.php
   ${POT_FILE}: ../plugin/PageHits.php
  +${POT_FILE}: ../plugin/Play.php
   ${POT_FILE}: ../plugin/RandomBanner.php
   ${POT_FILE}: ../plugin/RecentChanges.php
  +${POT_FILE}: ../plugin/ShowSmiley.php
   ${POT_FILE}: ../plugin/SmileyChooser.php
   ${POT_FILE}: ../plugin/SystemInfo.php
   ${POT_FILE}: ../plugin/Test.php
  -${POT_FILE}: ../plugin/Trail.php
   ${POT_FILE}: ../plugin/TwinPages.php
   ${POT_FILE}: ../plugin/UWL.php
   ${POT_FILE}: ../plugin/UploadFile.php
  @@ -98,6 +102,7 @@
   ${POT_FILE}: ../plugin/download.php
   ${POT_FILE}: ../plugin/foaf.php
   ${POT_FILE}: ../plugin/format.php
  +${POT_FILE}: ../plugin/home.php
   ${POT_FILE}: ../plugin/login.php
   ${POT_FILE}: ../plugin/man_get.php
   ${POT_FILE}: ../plugin/minilogin.php
  @@ -108,12 +113,18 @@
   ${POT_FILE}: ../plugin/processor/abc.php
   ${POT_FILE}: ../plugin/processor/blog.php
   ${POT_FILE}: ../plugin/processor/chat.php
  +${POT_FILE}: ../plugin/processor/diff.php
  +${POT_FILE}: ../plugin/processor/dot.php
   ${POT_FILE}: ../plugin/processor/gnuplot.php
   ${POT_FILE}: ../plugin/processor/hello.php
   ${POT_FILE}: ../plugin/processor/jade.php
   ${POT_FILE}: ../plugin/processor/latex.php
   ${POT_FILE}: ../plugin/processor/linuxdoc.php
   ${POT_FILE}: ../plugin/processor/man.php
  +${POT_FILE}: ../plugin/processor/metapost.php
  +${POT_FILE}: ../plugin/processor/mimetex.php
  +${POT_FILE}: ../plugin/processor/octave.php
  +${POT_FILE}: ../plugin/processor/pic.php
   ${POT_FILE}: ../plugin/processor/python.php
   ${POT_FILE}: ../plugin/processor/syntax.php
   ${POT_FILE}: ../plugin/processor/text_xml.php
  @@ -130,6 +141,7 @@
   ${POT_FILE}: ../plugin/rss_blog.php
   ${POT_FILE}: ../plugin/rss_rc.php
   ${POT_FILE}: ../plugin/security/desktop.php
  +${POT_FILE}: ../plugin/security/mustlogin.php
   ${POT_FILE}: ../plugin/security/needtologin.php
   ${POT_FILE}: ../plugin/security/sample.php
   ${POT_FILE}: ../plugin/security/userbased.php
  
  
  


wkpark      2004/10/02 12:31:27

  Modified:    locale/po fr.po ko.po moniwiki.pot
  Log:
  update messages
  
  Revision  Changes    Path
  1.9       +353 -174  moniwiki/locale/po/fr.po
  
  Index: fr.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/fr.po,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- fr.po	7 Jan 2004 02:44:46 -0000	1.8
  +++ fr.po	2 Oct 2004 03:31:26 -0000	1.9
  @@ -3,7 +3,7 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: MoniWiki 1.0\n"
  -"POT-Creation-Date: 2004-01-07 11:48+0900\n"
  +"POT-Creation-Date: 2004-10-02 12:33+0900\n"
   "PO-Revision-Date: 2003-08-17 22:51+0900\n"
   "Last-Translator: Serge Stinckwich <Serge.Stinckwich@info.unicaen.fr>\n"
   "Language-Team: fr <fr@li.org>\n"
  @@ -12,105 +12,202 @@
   "Content-Transfer-Encoding: 8bit\n"
   
   # ../plugin/Attachment.php:24
  -#: ../plugin/Attachment.php:32
  +#: ../plugin/Attachment.php:75
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr "Tlcharger le nouvel attachement \"%s\""
   
   # ../plugin/Attachment.php:24
  -#: ../plugin/Attachment.php:36
  +#: ../plugin/Attachment.php:78
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
   
  -#: ../plugin/BabelFish.php:14
  +#: ../plugin/BabelFish.php:16
   msgid "BabelFish Translation"
   msgstr ""
   
   # ../wiki.php:850
  -#: ../plugin/BabelFish.php:27
  +#: ../plugin/BabelFish.php:29
   #, c-format
   msgid "Translate %s to %s"
   msgstr "Translate %s en %s"
   
  +#: ../plugin/Blog.php:86
  +#, c-format
  +msgid "Blog cache of \"%s\" is refreshed"
  +msgstr ""
  +
   # ../plugin/Blog.php:78
  -#: ../plugin/Blog.php:80
  +#: ../plugin/Blog.php:109
   #, c-format
   msgid "\"%s\" is updated"
   msgstr "\"%s\" est mis  jour"
   
   # ../plugin/Blog.php:83
  -#: ../plugin/Blog.php:85
  +#: ../plugin/Blog.php:114
   msgid "Add Blog"
   msgstr "Ajouter un blog"
   
  +# ../plugin/sendping.php:55
  +#: ../plugin/Blog.php:154
  +msgid "Error: No blog entry found!"
  +msgstr ""
  +
  +#: ../plugin/Blog.php:162 ../plugin/Comment.php:109
  +msgid "Error: Don't make a clone!"
  +msgstr ""
  +
   # ../plugin/Blog.php:137
  -#: ../plugin/Blog.php:139
  +#: ../plugin/Blog.php:179
   #, c-format
   msgid "Comment added to \"%s\""
   msgstr "Commentaire ajout  \"%s\""
   
   # ../plugin/Blog.php:140
  -#: ../plugin/Blog.php:142
  +#: ../plugin/Blog.php:182
   #, c-format
   msgid "Blog entry added to \"%s\""
   msgstr "Entre de blog ajout  \"%s\""
   
   # ../plugin/Blog.php:176
  -#: ../plugin/Blog.php:178
  +#: ../plugin/Blog.php:219
   #, c-format
   msgid "Add Comment to \"%s\""
   msgstr "Ajouter un commentaire  \"%s\""
   
   # ../plugin/Blog.php:178
  -#: ../plugin/Blog.php:180
  +#: ../plugin/Blog.php:221
   #, c-format
   msgid "Add Blog entry to \"%s\""
   msgstr "Ajouter une entre de blog  \"%s\""
   
  +#: ../plugin/Blog.php:235 ../plugin/Comment.php:45
  +msgid "Name"
  +msgstr ""
  +
  +# ../wiki.php:2950
  +#: ../plugin/Blog.php:239
  +msgid "Title"
  +msgstr "titre"
  +
   # ../plugin/Blog.php:197
  -#: ../plugin/Blog.php:199
  +#: ../plugin/Blog.php:245 ../plugin/Comment.php:47
   msgid "Don't add a signature"
   msgstr "Ne pas ajouter de signature"
   
   # ../plugin/Blog.php:210
  -#: ../plugin/Blog.php:212
  +#: ../plugin/Blog.php:258
   msgid "<b>horizontal rule</b> ---- does not applied on the blog mode."
   msgstr "<b>Une rgle horizontale</b> ---- ne s'applique pas au mode blog."
   
  +#: ../plugin/BlogChanges.php:198
  +msgid "Category: "
  +msgstr ""
  +
  +# ../locale/dummy.php:7
  +#: ../plugin/BlogChanges.php:200 ../locale/dummy.php:7
  +msgid "BlogChanges"
  +msgstr "ModificationsBlog"
  +
  +# ../wikilib.php:1483
  +#: ../plugin/BlogChanges.php:244
  +#, c-format
  +msgid "Invalid category expr \"%s\""
  +msgstr ""
  +
  +# ../plugin/processor/blog.php:43 ../plugin/processor/blog.php:45
  +#: ../plugin/BlogChanges.php:376 ../plugin/BlogChanges.php:378
  +#: ../plugin/processor/blog.php:43 ../plugin/processor/blog.php:45
  +msgid "Anonymous"
  +msgstr "Anonyme"
  +
  +# ../plugin/processor/blog.php:78
  +#: ../plugin/BlogChanges.php:409 ../plugin/processor/blog.php:85
  +#, c-format
  +msgid "%d comment"
  +msgstr "%d commentaire"
  +
  +# ../plugin/processor/blog.php:78
  +#: ../plugin/BlogChanges.php:409 ../plugin/processor/blog.php:85
  +#, c-format
  +msgid "%d comments"
  +msgstr "%d commentaires"
  +
  +# ../plugin/processor/blog.php:70
  +#: ../plugin/BlogChanges.php:411 ../plugin/Comment.php:98
  +#: ../plugin/processor/blog.php:77
  +msgid "Add comment"
  +msgstr "Ajouter un commentaire"
  +
  +# ../plugin/processor/blog.php:89
  +#: ../plugin/BlogChanges.php:421 ../plugin/processor/blog.php:96
  +msgid "track back"
  +msgstr ""
  +
   # ../plugin/BlogChanges.php:226
  -#: ../plugin/BlogChanges.php:261
  +#: ../plugin/BlogChanges.php:441
   msgid "Previous"
   msgstr "Prcdent"
   
  +#: ../plugin/BlogChanges.php:444
  +msgid "Next"
  +msgstr ""
  +
  +# ../plugin/processor/blog.php:78
  +#: ../plugin/Comment.php:48
  +msgid "Comment"
  +msgstr "commentaire"
  +
  +# ../wikilib.php:482
  +#: ../plugin/Comment.php:49 ../wikilib.php:606
  +msgid "Preview"
  +msgstr "Prvisualisation"
  +
  +# ../wikilib.php:748 ../wikilib.php:777
  +#: ../plugin/Comment.php:89
  +msgid "Preview comment"
  +msgstr ""
  +
  +# ../plugin/Vote.php:109
  +#: ../plugin/Comment.php:132
  +#, c-format
  +msgid "%s is commented successfully"
  +msgstr "Vote russi"
  +
  +# ../plugin/Vote.php:109
  +#: ../plugin/Comment.php:133
  +msgid "Comment added successfully"
  +msgstr ""
  +
   # ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
  -#: ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
  +#: ../plugin/Draw.php:25 ../plugin/OeKaki.php:36
   msgid "Draw new picture"
   msgstr "Faire un nouveau dessin"
   
   # ../plugin/Draw.php:48
  -#: ../plugin/Draw.php:49 ../plugin/UploadFile.php:81
  +#: ../plugin/Draw.php:45 ../plugin/UploadFile.php:109
   #, c-format
   msgid "Fail to copy \"%s\" to \"%s\""
   msgstr "Impossible de copier \"%s\" vers \"%s\""
   
   # ../plugin/Draw.php:58
  -#: ../plugin/Draw.php:59
  +#: ../plugin/Draw.php:55
   msgid "Fatal error !"
   msgstr "Erreur fatale !"
   
   # ../plugin/Draw.php:61
  -#: ../plugin/Draw.php:62
  +#: ../plugin/Draw.php:58
   msgid "No filename given"
   msgstr "Aucun nom de fichier donn"
   
   # ../plugin/Draw.php:82
  -#: ../plugin/Draw.php:83
  +#: ../plugin/Draw.php:79
   msgid "Edit drawing"
   msgstr "diter le dessin"
   
   # ../plugin/Draw.php:91
  -#: ../plugin/Draw.php:92
  +#: ../plugin/Draw.php:88
   msgid "Edit new drawing"
   msgstr "diter un nouveau dessin"
   
  @@ -132,59 +229,93 @@
   msgstr "%d jour(s) se sont passs depuis %s."
   
   # ../plugin/FastSearch.php:116
  -#: ../plugin/FastSearch.php:116 ../plugin/FullSearch.php:17
  +#: ../plugin/FastSearch.php:117 ../plugin/FullSearch.php:16
   #, c-format
   msgid "Full text search for \"%s\""
   msgstr "Recherche en texte intgral pour \"%s\""
   
   # ../plugin/FastSearch.php:125
  -#: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:26
  +#: ../plugin/FastSearch.php:126 ../plugin/FullSearch.php:25
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr "Trouv %s s'appariant avec %s sur un total de %s pages"
   
   # ../wikilib.php:1479
  -#: ../plugin/FullSearch.php:15
  +#: ../plugin/FullSearch.php:14
   #, c-format
   msgid "BackLinks search for \"%s\""
   msgstr ""
   
   # ../wikilib.php:1483
  -#: ../plugin/FullSearch.php:71 ../wikilib.php:1503
  +#: ../plugin/FullSearch.php:103 ../wikilib.php:1724
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "Expression de recherche \"%s\" invalide"
   
  +# ../plugin/processor/blog.php:70
  +#: ../plugin/Gallery.php:225 ../plugin/Gallery.php:237
  +msgid "add comment"
  +msgstr ""
  +
  +# ../plugin/processor/blog.php:78
  +#: ../plugin/Gallery.php:234
  +msgid "show comments"
  +msgstr ""
  +
  +# ../wikilib.php:769
  +#: ../plugin/Gallery.php:277 ../plugin/Gallery.php:280 ../wikilib.php:965
  +#, c-format
  +msgid "Go back or return to %s"
  +msgstr "Revenir en arrire ou retourner  %s"
  +
  +#: ../plugin/Gallery.php:278
  +msgid "Comments are edited"
  +msgstr ""
  +
  +# ../plugin/Blog.php:137
  +#: ../plugin/Gallery.php:281
  +msgid "Comments is added"
  +msgstr ""
  +
  +#: ../plugin/ImportUrl.php:48
  +msgid "Import URL"
  +msgstr ""
  +
   #: ../plugin/LikePages.php:109
   msgid "These pages share a similar word..."
   msgstr ""
   
  -#: ../plugin/LikePages.php:122
  +#: ../plugin/LikePages.php:123
   msgid "These pages share an initial or final title word..."
   msgstr ""
   
  -#: ../plugin/LikePages.php:140
  +#: ../plugin/LikePages.php:143
   msgid "If you can't find this page, "
   msgstr ""
   
   # ../plugin/man_get.php:23
  -#: ../plugin/LikePages.php:145
  +#: ../plugin/LikePages.php:148
   msgid "No similar pages found"
   msgstr ""
   
  -#: ../plugin/LikePages.php:146
  +#: ../plugin/LikePages.php:149
   msgid "You are strongly recommened to find it in MetaWikis. "
   msgstr ""
   
  -#: ../plugin/LikePages.php:149
  +#: ../plugin/LikePages.php:152
   #, c-format
   msgid "Like \"%s\""
   msgstr ""
   
  -#: ../plugin/LikePages.php:151
  +#: ../plugin/LikePages.php:154
   msgid "Search all MetaWikis"
   msgstr ""
   
  +# ../plugin/man_get.php:23
  +#: ../plugin/Navigation.php:14
  +msgid "No Index page found"
  +msgstr ""
  +
   # ../plugin/OeKaki.php:118
   #: ../plugin/OeKaki.php:118
   msgid "Create new picture"
  @@ -195,15 +326,10 @@
   msgid "Edit Image"
   msgstr "diter l'image"
   
  -#: ../plugin/RecentChanges.php:146
  +#: ../plugin/RecentChanges.php:156
   msgid "set bookmark"
   msgstr ""
   
  -# ../plugin/man_get.php:23
  -#: ../plugin/Trail.php:14
  -msgid "No Index page found"
  -msgstr ""
  -
   # ../plugin/TwinPages.php:13
   #: ../plugin/TwinPages.php:13
   #, c-format
  @@ -211,7 +337,7 @@
   msgstr "TwinPages de %s"
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../plugin/TwinPages.php:18 ../wiki.php:1868 ../wiki.php:3041
  +#: ../plugin/TwinPages.php:18 ../wiki.php:1999 ../wiki.php:3262
   msgid "See TwinPages: "
   msgstr "Voir TwinPages: "
   
  @@ -220,23 +346,34 @@
   msgid "No TwinPages found."
   msgstr "Aucune TwinPages trouv"
   
  +# ../wiki.php:3009
  +#: ../plugin/UploadFile.php:73
  +#, c-format
  +msgid "%s does not allowed to upload"
  +msgstr ""
  +
   # ../wikilib.php:887
  -#: ../plugin/UploadFile.php:92
  +#: ../plugin/UploadFile.php:115
   #, c-format
   msgid "File \"%s\" is uploaded successfully"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:106
  +# ../wikilib.php:887
  +#: ../plugin/UploadFile.php:146
  +msgid "Files are uploaded successfully"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:180
   msgid ": Rename"
   msgstr ""
   
   # ../plugin/rename.php:36
  -#: ../plugin/UploadedFiles.php:106 ../plugin/rename.php:36
  +#: ../plugin/UploadedFiles.php:121 ../plugin/rename.php:69 ../wikilib.php:734
   msgid "Password"
   msgstr "Mot de passe"
   
   # ../wikilib.php:550
  -#: ../plugin/UploadedFiles.php:107 ../wikilib.php:568
  +#: ../plugin/UploadedFiles.php:122 ../wikilib.php:712
   msgid "Delete selected files"
   msgstr "Effacer les fichiers slectionns"
   
  @@ -257,17 +394,23 @@
   
   # ../plugin/Vote.php:66 ../plugin/security/needtologin.php:25
   # ../plugin/security/needtologin.php:35
  -#: ../plugin/Vote.php:66 ../plugin/security/needtologin.php:25
  +#: ../plugin/Vote.php:67 ../plugin/security/mustlogin.php:25
  +#: ../plugin/security/mustlogin.php:35 ../plugin/security/mustlogin.php:45
  +#: ../plugin/security/mustlogin.php:60 ../plugin/security/needtologin.php:25
   #: ../plugin/security/needtologin.php:35 ../plugin/security/needtologin.php:45
   #: ../plugin/security/userbased.php:60
   msgid "Please Login or make your ID on this Wiki ;)"
   msgstr "Merci de vous connecter ou de construire un ID sur ce Wiki ;)"
   
   # ../plugin/Vote.php:109
  -#: ../plugin/Vote.php:112
  +#: ../plugin/Vote.php:113
   msgid "Voted successfully"
   msgstr "Vote russi"
   
  +#: ../plugin/WordIndex.php:65 ../wikilib.php:1523
  +msgid "Others"
  +msgstr ""
  +
   # ../plugin/backup.php:46
   #: ../plugin/backup.php:46
   msgid "Did you want to Backup your wiki ?"
  @@ -309,23 +452,18 @@
   msgid "Password:"
   msgstr "Mot de passe :"
   
  -# ../plugin/login.php:26 ../wikilib.php:1051
  -#: ../plugin/login.php:26 ../wikilib.php:1071
  -msgid "Login"
  -msgstr "Se connecter"
  -
   # ../plugin/login.php:27
  -#: ../plugin/login.php:27
  +#: ../plugin/login.php:26
   msgid "Join"
   msgstr "Se joindre "
   
   # ../plugin/login.php:41 ../plugin/minilogin.php:29
  -#: ../plugin/login.php:41 ../plugin/minilogin.php:29
  +#: ../plugin/login.php:42 ../plugin/minilogin.php:29
   msgid "Logout"
   msgstr "Se dconnecter"
   
   # ../locale/dummy.php:3 ../plugin/login.php:42 ../plugin/minilogin.php:28
  -#: ../plugin/login.php:42 ../plugin/minilogin.php:28 ../locale/dummy.php:3
  +#: ../plugin/login.php:43 ../plugin/minilogin.php:28 ../locale/dummy.php:3
   msgid "UserPreferences"
   msgstr "PrfrencesUtilisateur"
   
  @@ -340,7 +478,7 @@
   msgstr "Aucune page de manuel trouv"
   
   # ../plugin/minilogin.php:22 ../wikilib.php:1076
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1096
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1274
   msgid "Login or Join"
   msgstr "Se connecter ou se joindre "
   
  @@ -359,31 +497,14 @@
   msgid "Enter a page name"
   msgstr ""
   
  -# ../plugin/processor/blog.php:43 ../plugin/processor/blog.php:45
  -#: ../plugin/processor/blog.php:43 ../plugin/processor/blog.php:45
  -msgid "Anonymous"
  -msgstr "Anonyme"
  -
  -# ../plugin/processor/blog.php:70
  -#: ../plugin/processor/blog.php:70
  -msgid "Add comment"
  -msgstr "Ajouter un commentaire"
  -
  -# ../plugin/processor/blog.php:78
  -#: ../plugin/processor/blog.php:78
  +#: ../plugin/print.php:20
   #, c-format
  -msgid "%d comment"
  -msgstr "%d commentaire"
  +msgid "Retrieved from %s"
  +msgstr ""
   
  -# ../plugin/processor/blog.php:78
  -#: ../plugin/processor/blog.php:78
  +#: ../plugin/print.php:25
   #, c-format
  -msgid "%d comments"
  -msgstr "%d commentaires"
  -
  -# ../plugin/processor/blog.php:89
  -#: ../plugin/processor/blog.php:89
  -msgid "track back"
  +msgid "last modified %s %s"
   msgstr ""
   
   # ../plugin/quicklinks.php:16 ../plugin/subscribe.php:24
  @@ -446,45 +567,74 @@
   msgstr ""
   
   # ../locale/dummy.php:7
  -#: ../plugin/rdf_blog.php:31 ../plugin/rss_blog.php:31
  +#: ../plugin/rdf_blog.php:31 ../plugin/rss_blog.php:26
   msgid "Blog Changes"
   msgstr "ModificationsBlog"
   
   # ../locale/dummy.php:7
   # c-format
  -#: ../plugin/rdf_blog.php:45 ../plugin/rss_blog.php:95
  +#: ../plugin/rdf_blog.php:45 ../plugin/rss_blog.php:104
   #, c-format
   msgid "BlogChanges at %s"
   msgstr "ModificationsBlog at %s"
   
   # ../plugin/rename.php:14
  -#: ../plugin/rename.php:14
  +#: ../plugin/rename.php:13
   #, c-format
   msgid "\"%s\" is renamed !"
   msgstr "\"%s\" est renomm !"
   
  +# ../wikilib.php:816
  +#: ../plugin/rename.php:29
  +#, c-format
  +msgid "'%s' is changed"
  +msgstr ""
  +
  +# ../wikilib.php:887
  +#: ../plugin/rename.php:37
  +#, c-format
  +msgid "'%s' is renamed as '%s' successfully"
  +msgstr ""
  +
   # ../plugin/rename.php:20
  -#: ../plugin/rename.php:20
  +#: ../plugin/rename.php:45
   #, c-format
   msgid "Fail to rename \"%s\" !"
   msgstr "Impossible de renommer \"%s\" !"
   
   # ../plugin/rename.php:27
  -#: ../plugin/rename.php:27
  +#: ../plugin/rename.php:52
   #, c-format
   msgid "Rename \"%s\" ?"
   msgstr "Renommer \"%s\" ?"
   
  +# ../plugin/rename.php:27
  +#: ../plugin/rename.php:61
  +msgid "Rename"
  +msgstr "Renommer"
  +
  +#: ../plugin/rename.php:66
  +msgid "Rename and fix Backlinks"
  +msgstr ""
  +
   # ../plugin/rename.php:37
  -#: ../plugin/rename.php:37
  +#: ../plugin/rename.php:70
   msgid "Only WikiMaster can rename this page"
   msgstr "Seulement le WikiMaster peut renommer cette page"
   
   # ../plugin/rename.php:39 ../wikilib.php:588
  -#: ../plugin/rename.php:39 ../wikilib.php:608
  +#: ../plugin/rename.php:71 ../wikilib.php:771
   msgid "with revision history"
   msgstr "avec l'historique de rvision"
   
  +#: ../plugin/rename.php:72
  +msgid "show only"
  +msgstr ""
  +
  +#: ../plugin/rename.php:74
  +msgid "Check backlinks"
  +msgstr ""
  +
   # ../plugin/restore.php:23
   #: ../plugin/restore.php:23
   msgid "Error: Don't try to overwrite it"
  @@ -519,18 +669,19 @@
   
   # ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
   # c-format
  -#: ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
  -#: ../plugin/security/needtologin.php:44
  +#: ../plugin/security/mustlogin.php:24 ../plugin/security/mustlogin.php:34
  +#: ../plugin/security/mustlogin.php:44 ../plugin/security/needtologin.php:24
  +#: ../plugin/security/needtologin.php:34 ../plugin/security/needtologin.php:44
   #, c-format
   msgid "You are not allowed to '%s' on this page"
   msgstr "Vous n'tes pas autoris  pouvoir '%s' cette page"
   
   # ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
   # c-format
  -#: ../plugin/security/userbased.php:28 ../plugin/security/userbased.php:36
  -#: ../plugin/security/userbased.php:44 ../plugin/security/userbased.php:59
  -#: ../plugin/security/wikimaster.php:25 ../plugin/security/wikimaster.php:33
  -#: ../plugin/security/wikimaster.php:41
  +#: ../plugin/security/mustlogin.php:59 ../plugin/security/userbased.php:28
  +#: ../plugin/security/userbased.php:36 ../plugin/security/userbased.php:44
  +#: ../plugin/security/userbased.php:59 ../plugin/security/wikimaster.php:25
  +#: ../plugin/security/wikimaster.php:33 ../plugin/security/wikimaster.php:41
   #, c-format
   msgid "You are not allowed to '%s' on this page."
   msgstr "Vous n'tes pas autoris  pouvoir '%s' cette page"
  @@ -557,7 +708,7 @@
   msgstr "Envoy un ping de TrackBack"
   
   # ../plugin/sendping.php:158
  -#: ../plugin/sendping.php:158
  +#: ../plugin/sendping.php:160
   msgid "Trackback sent"
   msgstr "Trackback envoy"
   
  @@ -601,12 +752,12 @@
   msgstr "Voulez vous abonner  \"%s\" ?"
   
   # ../plugin/theme.php:24
  -#: ../plugin/theme.php:24
  +#: ../plugin/theme.php:23
   msgid "Theme cleared. Goto UserPreferences."
   msgstr "Thme effac. Allez  UserPreferences."
   
   # ../plugin/theme.php:64
  -#: ../plugin/theme.php:64
  +#: ../plugin/theme.php:63
   msgid "Please select a theme properly."
   msgstr "Merci de slectionner un thme de manire satisfaisante"
   
  @@ -678,7 +829,7 @@
   
   #: ../plugin/userform.php:62
   #, c-format
  -msgid "\"%s\" is not exists on this wiki !"
  +msgid "\"%s\" does not exists on this wiki !"
   msgstr ""
   
   #: ../plugin/userform.php:64
  @@ -765,86 +916,103 @@
   msgstr ""
   
   # ../wiki.php:850
  -#: ../wiki.php:861
  +#: ../wiki.php:888
   #, c-format
   msgid "Rename %s to %s"
   msgstr "Renommer %s en %s"
   
  +# ../plugin/restore.php:27
  +#: ../wiki.php:1067
  +msgid "File does not exists"
  +msgstr ""
  +
   # ../wiki.php:1824
  -#: ../wiki.php:1864
  +#: ../wiki.php:1995
   #, c-format
   msgid "See %s"
   msgstr "Voir %s"
   
   # ../wiki.php:1824
  -#: ../wiki.php:1864
  +#: ../wiki.php:1995
   msgid "TwinPages"
   msgstr ""
   
   # ../wiki.php:2110
  -#: ../wiki.php:2160
  +#: ../wiki.php:2315
   msgid "Revision History"
   msgstr "Historique de rvision"
   
   # ../wiki.php:2211 ../wiki.php:2360
  -#: ../wiki.php:2261 ../wiki.php:2409
  +#: ../wiki.php:2416 ../wiki.php:2564
   msgid "No older revisions available"
   msgstr "Aucune rvision plus ancienne disponible"
   
   # ../wiki.php:2338 ../wiki.php:2373 ../wikilib.php:770
  -#: ../wiki.php:2388 ../wiki.php:2427 ../wikilib.php:790
  +#: ../wiki.php:2543 ../wiki.php:2581 ../wikilib.php:966
   msgid "No difference found"
   msgstr "Aucune diffrence trouv"
   
   # ../wiki.php:2341
  -#: ../wiki.php:2390
  +#: ../wiki.php:2545
   msgid "Difference between yours and the current"
   msgstr "Diffrence entre votre version et la courante"
   
   # ../wiki.php:2376
  -#: ../wiki.php:2429
  +#: ../wiki.php:2583
   msgid "Difference between versions"
   msgstr "Diffrence entre les versions"
   
   # ../wiki.php:2378
  -#: ../wiki.php:2431
  +#: ../wiki.php:2585
   #, c-format
   msgid "Difference between r%s and r%s"
   msgstr "Diffrence entre r%s et r%s"
   
   # ../wiki.php:2382
  -#: ../wiki.php:2434
  +#: ../wiki.php:2588
   #, c-format
   msgid "Difference between r%s and the current"
   msgstr "Diffrence entre r%s et la version courante"
   
   # ../locale/dummy.php:6 ../wiki.php:2553
  -#: ../wiki.php:2607 ../locale/dummy.php:6
  +#: ../wiki.php:2782 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "ditionTexte"
   
   # ../wiki.php:2555
  -#: ../wiki.php:2609
  +#: ../wiki.php:2784
   msgid "NotEditable"
   msgstr "Pasditable"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wiki.php:2611 ../locale/dummy.php:6
  +#: ../wiki.php:2786 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "MontrePage"
   
   # ../locale/dummy.php:3 ../locale/dummy.php:5 ../wiki.php:2558
  -#: ../wiki.php:2612 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:2787 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "TrouvePage"
   
  +#: ../wiki.php:3010
  +msgid "Main"
  +msgstr ""
  +
  +#: ../wiki.php:3238
  +msgid "You are in the black list"
  +msgstr ""
  +
  +#: ../wiki.php:3239
  +msgid "Please contact wikimasters"
  +msgstr ""
  +
   # ../wiki.php:2945 ../wiki.php:2948
  -#: ../wiki.php:3043 ../wiki.php:3046
  +#: ../wiki.php:3264 ../wiki.php:3267
   msgid "Create this page"
   msgstr "Crer cette page"
   
   # ../wiki.php:2950
  -#: ../wiki.php:3048
  +#: ../wiki.php:3269
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
  @@ -852,41 +1020,41 @@
   "page.\n"
   
   # ../wiki.php:2950
  -#: ../wiki.php:3048
  +#: ../wiki.php:3269
   msgid "title"
   msgstr "titre"
   
   # ../wiki.php:2956
  -#: ../wiki.php:3054
  +#: ../wiki.php:3275
   msgid " or alternativly, use one of these templates:\n"
   msgstr " ou alternativement, utiliser un de ces modles de page :\n"
   
   # ../wikilib.php:427
  -#: ../wiki.php:3057 ../wikilib.php:435
  +#: ../wiki.php:3278
   msgid "To create your own templates, add a page with a 'Template' suffix.\n"
   msgstr ""
   "Pour crer vos propres modles de pages, ajouter une page avec lesuffix "
   "'Template'.\n"
   
   # ../wiki.php:3009
  -#: ../wiki.php:3114
  +#: ../wiki.php:3353
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "Vous n'tes pas autoris  '%s'"
   
   # ../wiki.php:3021
  -#: ../wiki.php:3126
  +#: ../wiki.php:3365
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "Impossible de pouvoir \"%s\" !"
   
   # ../wiki.php:3024
  -#: ../wiki.php:3129
  +#: ../wiki.php:3368
   msgid "Please enter the valid password"
   msgstr "Merci d'entrer un mot de passe valide"
   
   # ../wikilib.php:368
  -#: ../wikilib.php:375
  +#: ../wikilib.php:481
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -919,203 +1087,214 @@
   "Les espaces aprs un tableau ou un titre ne sont pas autoriss.<br />\n"
   
   # ../wikilib.php:425
  -#: ../wikilib.php:433
  +#: ../wikilib.php:541
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   "Utiliser un des modles de pages qui suivent pour une premirecration :\n"
   
   # ../wikilib.php:427
  -#: ../wikilib.php:435
  -msgid "<br />\n"
  +#: ../wikilib.php:543
  +msgid "To create your own templates, add a page with a 'Template' suffix."
   msgstr ""
  +"Pour crer vos propres modles de pages, ajouter une page avec lesuffix "
  +"'Template'."
   
   # ../wikilib.php:443
  -#: ../wikilib.php:451
  +#: ../wikilib.php:559
   msgid "Skip to preview"
   msgstr "Aller  la prvisualisation"
   
   # ../wikilib.php:445
  -#: ../wikilib.php:453
  +#: ../wikilib.php:561
   msgid "ReduceEditor"
   msgstr "Rduirediteur"
   
  +#: ../wikilib.php:562
  +msgid "EnlargeEditor"
  +msgstr ""
  +
   # ../locale/dummy.php:6 ../wikilib.php:448
  -#: ../wikilib.php:456 ../locale/dummy.php:6
  +#: ../wikilib.php:566 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
   # ../wikilib.php:449
  -#: ../wikilib.php:457
  +#: ../wikilib.php:567
   msgid "HelpOnEditing"
   msgstr ""
   
   # ../wikilib.php:462
  -#: ../wikilib.php:474
  +#: ../wikilib.php:584
   #, c-format
   msgid "Describe %s here"
   msgstr "Dcrire %s ici"
   
   # ../wikilib.php:476
  -#: ../wikilib.php:490
  +#: ../wikilib.php:600
   msgid "--Select Category--"
   msgstr "-- Slectionner une catgorie"
   
  -# ../wikilib.php:482
  -#: ../wikilib.php:496
  -msgid "Preview"
  -msgstr "Prvisualisation"
  -
   # ../wikilib.php:483 ../wikilib.php:1079
  -#: ../wikilib.php:497 ../wikilib.php:1099
  +#: ../wikilib.php:607 ../wikilib.php:1277
   msgid "Save"
   msgstr "Sauvegarder"
   
   # ../wikilib.php:484
  -#: ../wikilib.php:498
  +#: ../wikilib.php:608
   msgid "Summary of Change"
   msgstr "Sommaire des modifications"
   
   # ../wikilib.php:507
  -#: ../wikilib.php:521
  +#: ../wikilib.php:650
   #, c-format
   msgid "Info. for %s"
   msgstr "Information sur %s"
   
   # ../wikilib.php:517
  -#: ../wikilib.php:531
  +#: ../wikilib.php:660
   msgid "406 Not Acceptable"
   msgstr ""
   
   # ../wikilib.php:519
  -#: ../wikilib.php:533
  +#: ../wikilib.php:665
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s n'est pas une action valide"
   
   # ../wikilib.php:521
  -#: ../wikilib.php:535
  +#: ../wikilib.php:667
   msgid "Is it valid action ?"
   msgstr "Est-ce que c'est une action valide ?"
   
   # ../wikilib.php:540
  -#: ../wikilib.php:556
  +#: ../wikilib.php:700
   #, c-format
   msgid "File '%s' is deleted"
   msgstr "Le fichier '%s' est effac"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:558
  +#: ../wikilib.php:702
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr "Impossible d'effacer '%s'"
   
   # ../wikilib.php:545
  -#: ../wikilib.php:563
  +#: ../wikilib.php:707
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr "Le rpertoire '%s' est effac"
   
   # ../wikilib.php:547
  -#: ../wikilib.php:565
  +#: ../wikilib.php:709
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr "Impossible d'effacer le rpertoire '%s'"
   
   # ../wikilib.php:557 ../wikilib.php:559
  -#: ../wikilib.php:575 ../wikilib.php:577
  +#: ../wikilib.php:719 ../wikilib.php:739
   msgid "No files are selected !"
   msgstr "Aucun fichier n'est slectionn !"
   
  +# ../wikilib.php:542
  +#: ../wikilib.php:732
  +#, c-format
  +msgid "Did you really want to delete '%s' ?"
  +msgstr ""
  +
  +# ../locale/dummy.php:5
  +#: ../wikilib.php:735
  +msgid "Delete"
  +msgstr ""
  +
  +# ../wikilib.php:550
  +#: ../wikilib.php:736
  +msgid "Delete selected file"
  +msgstr ""
  +
   # ../wikilib.php:575
  -#: ../wikilib.php:595
  +#: ../wikilib.php:758
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr "\"%s\" est effac !"
   
   # ../wikilib.php:581
  -#: ../wikilib.php:601
  +#: ../wikilib.php:764
   msgid "Please delete this file manually."
   msgstr "Merci d'effacer ce fichier manuellement."
   
   # ../wikilib.php:583
  -#: ../wikilib.php:603
  +#: ../wikilib.php:766
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "Effacer \"%s\" ?"
   
   # ../wikilib.php:672 ../wikilib.php:1472
  -#: ../wikilib.php:692 ../wikilib.php:1492
  +#: ../wikilib.php:867 ../wikilib.php:1713
   msgid "Use more specific text"
   msgstr "Utiliser un texte plus spcifique"
   
   # ../wikilib.php:734
  -#: ../wikilib.php:754
  +#: ../wikilib.php:930
   msgid "Goto Editor"
   msgstr "Aller  l'diteur"
   
   # ../wikilib.php:743
  -#: ../wikilib.php:763
  +#: ../wikilib.php:939
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "Quelqu'un a sauvegard la page tandis que vous ditiez %s"
   
   # ../wikilib.php:748 ../wikilib.php:777
  -#: ../wikilib.php:768 ../wikilib.php:797
  +#: ../wikilib.php:944 ../wikilib.php:973
   #, c-format
   msgid "Preview of %s"
   msgstr "Prvisualisation de %s"
   
   # ../wikilib.php:755
  -#: ../wikilib.php:775
  +#: ../wikilib.php:951
   msgid "Conflict error!"
   msgstr "Erreur de conflit !"
   
  -# ../wikilib.php:769
  -#: ../wikilib.php:789
  -#, c-format
  -msgid "Go back or return to %s"
  -msgstr "Revenir en arrire ou retourner  %s"
  -
   # ../wikilib.php:803
  -#: ../wikilib.php:823
  +#: ../wikilib.php:999
   msgid "mail does not supported by default."
   msgstr "La messagerie n'est pas support par dfaut."
   
   # ../wikilib.php:807
  -#: ../wikilib.php:827
  +#: ../wikilib.php:1003
   msgid "Sent notification mail."
   msgstr "Des notifications par messagerie ont t envoyes."
   
   # ../wikilib.php:809
  -#: ../wikilib.php:829
  +#: ../wikilib.php:1005
   msgid "No subscribers found."
   msgstr "Aucun abonn trouv."
   
   # ../wikilib.php:814
  -#: ../wikilib.php:834
  +#: ../wikilib.php:1010
   #, c-format
   msgid "%s is not editable"
   msgstr "%s n'est pas ditable"
   
   # ../wikilib.php:816
  -#: ../wikilib.php:836
  +#: ../wikilib.php:1012
   #, c-format
   msgid "%s is saved"
   msgstr "%s est sauvegard"
   
   # ../wikilib.php:838
  -#: ../wikilib.php:858
  +#: ../wikilib.php:1036
   msgid "Nobody subscribed to this page."
   msgstr "Personne n'est abonn  cette page, aucun mail envoy"
   
   # ../wikilib.php:860
  -#: ../wikilib.php:880
  +#: ../wikilib.php:1058
   #, c-format
   msgid "%s page is modified"
   msgstr "la page %s est modifi"
   
   # ../wikilib.php:870
  -#: ../wikilib.php:890
  +#: ../wikilib.php:1068
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
  @@ -1126,43 +1305,48 @@
   "\n"
   
   # ../wikilib.php:883
  -#: ../wikilib.php:903
  +#: ../wikilib.php:1081
   msgid "Send notification mails to all subscribers"
   msgstr "Envoyez un mail de notification  tous les abonns"
   
   # ../wikilib.php:887
  -#: ../wikilib.php:907
  +#: ../wikilib.php:1085
   msgid "Mails are sent successfully"
   msgstr "Mail envoy avec succs"
   
   # ../wikilib.php:888
  -#: ../wikilib.php:908
  +#: ../wikilib.php:1086
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr "un mail a t envoy  '%s'"
   
  +# ../plugin/login.php:26 ../wikilib.php:1051
  +#: ../wikilib.php:1249
  +msgid "Login"
  +msgstr "Se connecter"
  +
   # ../wikilib.php:1070
  -#: ../wikilib.php:1090
  +#: ../wikilib.php:1268
   msgid "Make profile"
   msgstr "Faire un profil"
   
   # ../wikilib.php:1071
  -#: ../wikilib.php:1091
  +#: ../wikilib.php:1269
   msgid "password again"
   msgstr "mot de passe de nouveau"
   
   # ../wikilib.php:1082
  -#: ../wikilib.php:1102
  +#: ../wikilib.php:1280
   msgid "New password"
   msgstr "Nouveau mot de passe"
   
   # ../wikilib.php:1088
  -#: ../wikilib.php:1108
  +#: ../wikilib.php:1286
   msgid "logout"
   msgstr "se dconnecter"
   
   # ../wikilib.php:1479
  -#: ../wikilib.php:1499
  +#: ../wikilib.php:1720
   #, c-format
   msgid "Title search for \"%s\""
   msgstr "Recherche de titre pour \"%s\""
  @@ -1206,11 +1390,6 @@
   #: ../locale/dummy.php:6
   msgid "UploadedFiles"
   msgstr ""
  -
  -# ../locale/dummy.php:7
  -#: ../locale/dummy.php:7
  -msgid "BlogChanges"
  -msgstr "ModificationsBlog"
   
   # ../locale/dummy.php:7
   #: ../locale/dummy.php:7
  
  
  
  1.11      +206 -167  moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- ko.po	21 Aug 2004 16:20:32 -0000	1.10
  +++ ko.po	2 Oct 2004 03:31:26 -0000	1.11
  @@ -5,7 +5,7 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: MoniWiki 1.0\n"
  -"POT-Creation-Date: 2004-08-20 00:45+0900\n"
  +"POT-Creation-Date: 2004-10-02 12:33+0900\n"
   "PO-Revision-Date: 2003-04-29 19:00+0900\n"
   "Last-Translator: Won-kyu Park <wkpark@kldp.org>\n"
   "Language-Team: ko <ko@li.org>\n"
  @@ -13,12 +13,12 @@
   "Content-Type: text/plain; charset=EUC-KR\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  -#: ../plugin/Attachment.php:52
  +#: ../plugin/Attachment.php:75
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr ""
   
  -#: ../plugin/Attachment.php:56
  +#: ../plugin/Attachment.php:78
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
  @@ -50,7 +50,7 @@
   msgid "Error: No blog entry found!"
   msgstr ""
   
  -#: ../plugin/Blog.php:162 ../plugin/Comment.php:108
  +#: ../plugin/Blog.php:162 ../plugin/Comment.php:109
   msgid "Error: Don't make a clone!"
   msgstr ""
   
  @@ -79,7 +79,6 @@
   msgstr ""
   
   #: ../plugin/Blog.php:239
  -#, fuzzy
   msgid "Title"
   msgstr ""
   
  @@ -91,82 +90,94 @@
   msgid "<b>horizontal rule</b> ---- does not applied on the blog mode."
   msgstr "<b>μ</b> ---- α   ʽϴ."
   
  -#: ../plugin/BlogChanges.php:194
  +#: ../plugin/BlogChanges.php:198
   msgid "Category: "
   msgstr ""
   
  -#: ../locale/dummy.php:7 ../plugin/BlogChanges.php:196
  +#: ../plugin/BlogChanges.php:200 ../locale/dummy.php:7
   msgid "BlogChanges"
   msgstr "ٲ α"
   
  -#: ../plugin/BlogChanges.php:239
  +#: ../plugin/BlogChanges.php:244
   #, c-format
   msgid "Invalid category expr \"%s\""
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:346 ../plugin/BlogChanges.php:348
  +#: ../plugin/BlogChanges.php:376 ../plugin/BlogChanges.php:378
   #: ../plugin/processor/blog.php:43 ../plugin/processor/blog.php:45
   msgid "Anonymous"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:389
  +#: ../plugin/BlogChanges.php:409 ../plugin/processor/blog.php:85
  +#, c-format
  +msgid "%d comment"
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:409 ../plugin/processor/blog.php:85
  +#, c-format
  +msgid "%d comments"
  +msgstr " %d"
  +
  +#: ../plugin/BlogChanges.php:411 ../plugin/Comment.php:98
  +#: ../plugin/processor/blog.php:77
  +msgid "Add comment"
  +msgstr " ޱ"
  +
  +#: ../plugin/BlogChanges.php:421 ../plugin/processor/blog.php:96
  +msgid "track back"
  +msgstr "Ʈ"
  +
  +#: ../plugin/BlogChanges.php:441
   msgid "Previous"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:392
  +#: ../plugin/BlogChanges.php:444
   msgid "Next"
  -msgstr ""
  +msgstr ""
   
   #: ../plugin/Comment.php:48
  -#, fuzzy
   msgid "Comment"
   msgstr " ޱ"
   
  -#: ../plugin/Comment.php:49 ../wikilib.php:497
  +#: ../plugin/Comment.php:49 ../wikilib.php:606
   msgid "Preview"
   msgstr "̸"
   
   #: ../plugin/Comment.php:89
  -#, fuzzy
   msgid "Preview comment"
  -msgstr "%s ̸"
  -
  -#: ../plugin/Comment.php:97 ../plugin/processor/blog.php:76
  -msgid "Add comment"
  -msgstr " ޱ"
  +msgstr "̸"
   
  -#: ../plugin/Comment.php:131
  -#, fuzzy, c-format
  +#: ../plugin/Comment.php:132
  +#, c-format
   msgid "%s is commented successfully"
  -msgstr "̸ ּ Ȯ ϷǾϴ"
  +msgstr "%s   ÷Ǿϴ"
   
  -#: ../plugin/Comment.php:132
  -#, fuzzy
  +#: ../plugin/Comment.php:133
   msgid "Comment added successfully"
  -msgstr "   Ǿϴ !"
  +msgstr " ÷Ǿϴ"
   
  -#: ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
  +#: ../plugin/Draw.php:25 ../plugin/OeKaki.php:36
   msgid "Draw new picture"
  -msgstr ""
  +msgstr " ׸ "
   
  -#: ../plugin/Draw.php:49 ../plugin/UploadFile.php:109
  +#: ../plugin/Draw.php:45 ../plugin/UploadFile.php:109
   #, c-format
   msgid "Fail to copy \"%s\" to \"%s\""
   msgstr ""
   
  -#: ../plugin/Draw.php:59
  +#: ../plugin/Draw.php:55
   msgid "Fatal error !"
   msgstr ""
   
  -#: ../plugin/Draw.php:62
  +#: ../plugin/Draw.php:58
   msgid "No filename given"
   msgstr ""
   
  -#: ../plugin/Draw.php:83
  +#: ../plugin/Draw.php:79
   msgid "Edit drawing"
   msgstr "׸ ׸"
   
  -#: ../plugin/Draw.php:92
  +#: ../plugin/Draw.php:88
   msgid "Edit new drawing"
   msgstr " ׸ ׸"
   
  @@ -184,46 +195,44 @@
   msgid "%d day(s) passed from %s."
   msgstr "%2$sκ %1$d ϴ."
   
  -#: ../plugin/FastSearch.php:116 ../plugin/FullSearch.php:17
  +#: ../plugin/FastSearch.php:117 ../plugin/FullSearch.php:16
   #, c-format
   msgid "Full text search for \"%s\""
   msgstr "\"%s\"() ü ãƺ"
   
  -#: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:26
  +#: ../plugin/FastSearch.php:126 ../plugin/FullSearch.php:25
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:15
  +#: ../plugin/FullSearch.php:14
   #, c-format
   msgid "BackLinks search for \"%s\""
   msgstr "\"%s\"  ũ ã"
   
  -#: ../plugin/FullSearch.php:71 ../wikilib.php:1531
  +#: ../plugin/FullSearch.php:103 ../wikilib.php:1724
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr ""
   
  -#: ../plugin/Gallery.php:220
  -#, fuzzy
  +#: ../plugin/Gallery.php:225 ../plugin/Gallery.php:237
   msgid "add comment"
   msgstr " ޱ"
   
  -#: ../plugin/Gallery.php:229
  -#, fuzzy
  +#: ../plugin/Gallery.php:234
   msgid "show comments"
  -msgstr " ޱ"
  +msgstr " "
   
  -#: ../plugin/Gallery.php:270 ../plugin/Gallery.php:273 ../wikilib.php:804
  +#: ../plugin/Gallery.php:277 ../plugin/Gallery.php:280 ../wikilib.php:965
   #, c-format
   msgid "Go back or return to %s"
   msgstr "ڷ Ȥ %s() "
   
  -#: ../plugin/Gallery.php:271
  +#: ../plugin/Gallery.php:278
   msgid "Comments are edited"
   msgstr ""
   
  -#: ../plugin/Gallery.php:274
  +#: ../plugin/Gallery.php:281
   msgid "Comments is added"
   msgstr ""
   
  @@ -235,31 +244,35 @@
   msgid "These pages share a similar word..."
   msgstr ""
   
  -#: ../plugin/LikePages.php:122
  +#: ../plugin/LikePages.php:123
   msgid "These pages share an initial or final title word..."
   msgstr ""
   
  -#: ../plugin/LikePages.php:140
  +#: ../plugin/LikePages.php:143
   msgid "If you can't find this page, "
   msgstr ""
   
  -#: ../plugin/LikePages.php:145
  +#: ../plugin/LikePages.php:148
   msgid "No similar pages found"
   msgstr "  ϴ"
   
  -#: ../plugin/LikePages.php:146
  +#: ../plugin/LikePages.php:149
   msgid "You are strongly recommened to find it in MetaWikis. "
   msgstr ""
   
  -#: ../plugin/LikePages.php:149
  +#: ../plugin/LikePages.php:152
   #, c-format
   msgid "Like \"%s\""
   msgstr ""
   
  -#: ../plugin/LikePages.php:151
  +#: ../plugin/LikePages.php:154
   msgid "Search all MetaWikis"
   msgstr ""
   
  +#: ../plugin/Navigation.php:14
  +msgid "No Index page found"
  +msgstr "ε  ϴ"
  +
   #: ../plugin/OeKaki.php:118
   msgid "Create new picture"
   msgstr " ׸ "
  @@ -268,20 +281,16 @@
   msgid "Edit Image"
   msgstr "׸ ġ"
   
  -#: ../plugin/RecentChanges.php:155
  +#: ../plugin/RecentChanges.php:156
   msgid "set bookmark"
   msgstr "ϸũ"
   
  -#: ../plugin/Trail.php:14
  -msgid "No Index page found"
  -msgstr "ε  ϴ"
  -
   #: ../plugin/TwinPages.php:13
   #, c-format
   msgid "TwinPages of %s"
   msgstr "%s ֵ "
   
  -#: ../plugin/TwinPages.php:18 ../wiki.php:1963 ../wiki.php:3155
  +#: ../plugin/TwinPages.php:18 ../wiki.php:1999 ../wiki.php:3262
   msgid "See TwinPages: "
   msgstr ""
   
  @@ -292,27 +301,26 @@
   #: ../plugin/UploadFile.php:73
   #, c-format
   msgid "%s does not allowed to upload"
  -msgstr ""
  +msgstr "%s() ε尡  ʽϴ"
   
   #: ../plugin/UploadFile.php:115
   #, c-format
   msgid "File \"%s\" is uploaded successfully"
  -msgstr ""
  +msgstr "\"%s\"  ö󰬽ϴ"
   
  -#: ../plugin/UploadFile.php:134
  -#, fuzzy
  +#: ../plugin/UploadFile.php:146
   msgid "Files are uploaded successfully"
  -msgstr "   Ǿϴ !"
  +msgstr "  ö󰬽ϴ"
   
  -#: ../plugin/UploadFile.php:168
  +#: ../plugin/UploadFile.php:180
   msgid ": Rename"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:119 ../plugin/rename.php:69
  +#: ../plugin/UploadedFiles.php:121 ../plugin/rename.php:69 ../wikilib.php:734
   msgid "Password"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:120 ../wikilib.php:569
  +#: ../plugin/UploadedFiles.php:122 ../wikilib.php:712
   msgid "Delete selected files"
   msgstr ""
   
  @@ -328,17 +336,19 @@
   msgid "Deeper"
   msgstr ""
   
  -#: ../plugin/Vote.php:66 ../plugin/security/needtologin.php:25
  +#: ../plugin/Vote.php:67 ../plugin/security/mustlogin.php:25
  +#: ../plugin/security/mustlogin.php:35 ../plugin/security/mustlogin.php:45
  +#: ../plugin/security/mustlogin.php:60 ../plugin/security/needtologin.php:25
   #: ../plugin/security/needtologin.php:35 ../plugin/security/needtologin.php:45
   #: ../plugin/security/userbased.php:60
   msgid "Please Login or make your ID on this Wiki ;)"
   msgstr "αϰų ID 弼 ;)"
   
  -#: ../plugin/Vote.php:112
  +#: ../plugin/Vote.php:113
   msgid "Voted successfully"
   msgstr ""
   
  -#: ../plugin/WordIndex.php:65 ../wikilib.php:1359
  +#: ../plugin/WordIndex.php:65 ../wikilib.php:1523
   msgid "Others"
   msgstr ""
   
  @@ -385,7 +395,7 @@
   msgid "Logout"
   msgstr ""
   
  -#: ../locale/dummy.php:3 ../plugin/login.php:43 ../plugin/minilogin.php:28
  +#: ../plugin/login.php:43 ../plugin/minilogin.php:28 ../locale/dummy.php:3
   msgid "UserPreferences"
   msgstr "ȯ漳"
   
  @@ -397,7 +407,7 @@
   msgid "No manpage found"
   msgstr "Manpage ϴ"
   
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1111
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1274
   msgid "Login or Join"
   msgstr ""
   
  @@ -414,19 +424,15 @@
   msgid "Enter a page name"
   msgstr " ̸ "
   
  -#: ../plugin/processor/blog.php:84
  +#: ../plugin/print.php:20
   #, c-format
  -msgid "%d comment"
  -msgstr " %d"
  +msgid "Retrieved from %s"
  +msgstr ""
   
  -#: ../plugin/processor/blog.php:84
  +#: ../plugin/print.php:25
   #, c-format
  -msgid "%d comments"
  -msgstr " %d"
  -
  -#: ../plugin/processor/blog.php:95
  -msgid "track back"
  -msgstr "Ʈ"
  +msgid "last modified %s %s"
  +msgstr ""
   
   #: ../plugin/quicklinks.php:16 ../plugin/subscribe.php:24
   msgid "Please login or make your ID."
  @@ -494,14 +500,14 @@
   msgstr "%s() ̸ ٲϴ !"
   
   #: ../plugin/rename.php:29
  -#, fuzzy, c-format
  +#, c-format
   msgid "'%s' is changed"
  -msgstr "%s() Ǿϴ"
  +msgstr "'%s'() ٲϴ"
   
   #: ../plugin/rename.php:37
  -#, fuzzy, c-format
  +#, c-format
   msgid "'%s' is renamed as '%s' successfully"
  -msgstr "   Ǿϴ !"
  +msgstr "'%s'() '%s'() ̸ ٲϴ"
   
   #: ../plugin/rename.php:45
   #, c-format
  @@ -514,19 +520,18 @@
   msgstr "\"%s\" ̸ ٲܱ ?"
   
   #: ../plugin/rename.php:61
  -#, fuzzy
   msgid "Rename"
  -msgstr "\"%s\" ̸ ٲܱ ?"
  +msgstr "̸ٲٱ"
   
   #: ../plugin/rename.php:66
   msgid "Rename and fix Backlinks"
  -msgstr ""
  +msgstr "̸ ٲٰ  ũ "
   
   #: ../plugin/rename.php:70
   msgid "Only WikiMaster can rename this page"
   msgstr ""
   
  -#: ../plugin/rename.php:71 ../wikilib.php:610
  +#: ../plugin/rename.php:71 ../wikilib.php:771
   msgid "with revision history"
   msgstr " 丮 Բ"
   
  @@ -564,16 +569,17 @@
   msgid "show changes"
   msgstr ""
   
  -#: ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
  -#: ../plugin/security/needtologin.php:44
  +#: ../plugin/security/mustlogin.php:24 ../plugin/security/mustlogin.php:34
  +#: ../plugin/security/mustlogin.php:44 ../plugin/security/needtologin.php:24
  +#: ../plugin/security/needtologin.php:34 ../plugin/security/needtologin.php:44
   #, c-format
   msgid "You are not allowed to '%s' on this page"
   msgstr "'%s'   ׼Դϴ."
   
  -#: ../plugin/security/userbased.php:28 ../plugin/security/userbased.php:36
  -#: ../plugin/security/userbased.php:44 ../plugin/security/userbased.php:59
  -#: ../plugin/security/wikimaster.php:25 ../plugin/security/wikimaster.php:33
  -#: ../plugin/security/wikimaster.php:41
  +#: ../plugin/security/mustlogin.php:59 ../plugin/security/userbased.php:28
  +#: ../plugin/security/userbased.php:36 ../plugin/security/userbased.php:44
  +#: ../plugin/security/userbased.php:59 ../plugin/security/wikimaster.php:25
  +#: ../plugin/security/wikimaster.php:33 ../plugin/security/wikimaster.php:41
   #, c-format
   msgid "You are not allowed to '%s' on this page."
   msgstr "'%s'   ׼Դϴ."
  @@ -609,8 +615,8 @@
   "If you wan't to subscribe this page please contact the WikiMaster to "
   "activate the e-mail notification"
   msgstr ""
  -"  Ͻ÷ WikiMaster ڸ Ȱȭ Ű "
  -"ϼ"
  +"  Ͻ÷ WikiMaster ڸ Ȱȭ Ű "
  +"ϼ"
   
   #: ../plugin/subscribe.php:22
   msgid "Please enter your email address first."
  @@ -621,8 +627,8 @@
   "If you want to subscribe this page, just make your ID and register your "
   "email address in the UserPreferences."
   msgstr ""
  -"  Ͻ÷, ID ϰ ڸ ּҸ UserPreferences "
  -"ϼ"
  +"  Ͻ÷, ID ϰ ڸ ּҸ UserPreferences "
  +"ϼ"
   
   #: ../plugin/subscribe.php:46
   msgid "Subscribe lists updated."
  @@ -780,106 +786,118 @@
   msgid "Whois search result for %s"
   msgstr "%s  Whois ġ "
   
  -#: ../wiki.php:894
  +#: ../wiki.php:888
   #, c-format
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1073
  +#: ../wiki.php:1067
   msgid "File does not exists"
   msgstr ""
   
  -#: ../wiki.php:1959
  +#: ../wiki.php:1995
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:1959
  +#: ../wiki.php:1995
   msgid "TwinPages"
   msgstr "TwinPages"
   
  -#: ../wiki.php:2258
  +#: ../wiki.php:2315
   msgid "Revision History"
   msgstr " 丮"
   
  -#: ../wiki.php:2359 ../wiki.php:2507
  +#: ../wiki.php:2416 ../wiki.php:2564
   msgid "No older revisions available"
   msgstr "  ϴ"
   
  -#: ../wiki.php:2486 ../wiki.php:2524 ../wikilib.php:805
  +#: ../wiki.php:2543 ../wiki.php:2581 ../wikilib.php:966
   msgid "No difference found"
   msgstr "ȭ ϴ"
   
  -#: ../wiki.php:2488
  +#: ../wiki.php:2545
   msgid "Difference between yours and the current"
   msgstr ""
   
  -#: ../wiki.php:2526
  +#: ../wiki.php:2583
   msgid "Difference between versions"
   msgstr ""
   
  -#: ../wiki.php:2528
  +#: ../wiki.php:2585
   #, c-format
   msgid "Difference between r%s and r%s"
   msgstr "r%s r%s "
   
  -#: ../wiki.php:2531
  +#: ../wiki.php:2588
   #, c-format
   msgid "Difference between r%s and the current"
   msgstr "r%s   "
   
  -#: ../locale/dummy.php:6 ../wiki.php:2717
  +#: ../wiki.php:2782 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "ġ"
   
  -#: ../wiki.php:2719
  +#: ../wiki.php:2784
   msgid "NotEditable"
   msgstr "ĥ "
   
  -#: ../locale/dummy.php:6 ../wiki.php:2721
  +#: ../wiki.php:2786 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../locale/dummy.php:3 ../locale/dummy.php:5 ../wiki.php:2722
  +#: ../wiki.php:2787 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "ã"
   
  -#: ../wiki.php:3157 ../wiki.php:3160
  +#: ../wiki.php:3010
  +msgid "Main"
  +msgstr ""
  +
  +#: ../wiki.php:3238
  +msgid "You are in the black list"
  +msgstr ""
  +
  +#: ../wiki.php:3239
  +msgid "Please contact wikimasters"
  +msgstr ""
  +
  +#: ../wiki.php:3264 ../wiki.php:3267
   msgid "Create this page"
   msgstr " "
   
  -#: ../wiki.php:3162
  +#: ../wiki.php:3269
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
   
  -#: ../wiki.php:3162
  +#: ../wiki.php:3269
   msgid "title"
   msgstr ""
   
  -#: ../wiki.php:3168
  +#: ../wiki.php:3275
   msgid " or alternativly, use one of these templates:\n"
   msgstr " Ȥ Ʒ øƮ  ̿ϼ:\n"
   
  -#: ../wiki.php:3171 ../wikilib.php:436
  +#: ../wiki.php:3278
   msgid "To create your own templates, add a page with a 'Template' suffix.\n"
   msgstr "øƮ ÷ Template ̸   弼.\n"
   
  -#: ../wiki.php:3242
  +#: ../wiki.php:3353
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr ""
   
  -#: ../wiki.php:3254
  +#: ../wiki.php:3365
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:3257
  +#: ../wiki.php:3368
   msgid "Please enter the valid password"
   msgstr "Ȯ йȣ ־ּ"
   
  -#: ../wikilib.php:375
  +#: ../wikilib.php:481
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -895,8 +913,8 @@
   "<b>Tables</b>: || cell text |||| cell text spanning two columns ||;\n"
   "no trailing white space allowed after tables or titles.<br />\n"
   msgstr ""
  -"<b>:</b> ''<i></i>''; '''<b></b>'''; '''''<b><i> "
  -"</i></b>''''';\n"
  +"<b>:</b> ''<i></i>''; '''<b></b>'''; '''''<b><i> </"
  +"i></b>''''';\n"
   "''<i>￩ '''<b> </b>''' </i>''; ---- μ.<br />\n"
   "<b>:</b> =  1 =; ==  2 ==; ===  3 ===;\n"
   "====  4 ====; =====  5 =====.<br />\n"
  @@ -908,193 +926,214 @@
   "<b>̺</b>: ||   |||| ĭ ģ  ||;<br />\n"
   "̺̳     ȵ˴ϴ.<br />\n"
   
  -#: ../wikilib.php:434
  +#: ../wikilib.php:541
   msgid "Use one of the following templates as an initial release :\n"
   msgstr "ó   øƮ Ȱϼ :\n"
   
  -#: ../wikilib.php:452
  +#: ../wikilib.php:543
  +msgid "To create your own templates, add a page with a 'Template' suffix."
  +msgstr "øƮ ÷ Template ̸   弼."
  +
  +#: ../wikilib.php:559
   msgid "Skip to preview"
   msgstr "̸"
   
  -#: ../wikilib.php:454
  +#: ../wikilib.php:561
   msgid "ReduceEditor"
   msgstr "â ̱"
   
  -#: ../locale/dummy.php:6 ../wikilib.php:457
  +#: ../wikilib.php:562
  +msgid "EnlargeEditor"
  +msgstr ""
  +
  +#: ../wikilib.php:566 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr "Ű"
   
  -#: ../wikilib.php:458
  +#: ../wikilib.php:567
   msgid "HelpOnEditing"
   msgstr "ġ "
   
  -#: ../wikilib.php:475
  +#: ../wikilib.php:584
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:491
  +#: ../wikilib.php:600
   msgid "--Select Category--"
   msgstr ""
   
  -#: ../wikilib.php:498 ../wikilib.php:1114
  +#: ../wikilib.php:607 ../wikilib.php:1277
   msgid "Save"
   msgstr ""
   
  -#: ../wikilib.php:499
  +#: ../wikilib.php:608
   msgid "Summary of Change"
   msgstr "ٲ "
   
  -#: ../wikilib.php:522
  +#: ../wikilib.php:650
   #, c-format
   msgid "Info. for %s"
   msgstr "%s "
   
  -#: ../wikilib.php:532
  +#: ../wikilib.php:660
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:534
  +#: ../wikilib.php:665
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s() ȿ ׼ ƴմϴ"
   
  -#: ../wikilib.php:536
  +#: ../wikilib.php:667
   msgid "Is it valid action ?"
   msgstr ""
   
  -#: ../wikilib.php:557
  +#: ../wikilib.php:700
   #, c-format
   msgid "File '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:559
  +#: ../wikilib.php:702
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr ""
   
  -#: ../wikilib.php:564
  +#: ../wikilib.php:707
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:566
  +#: ../wikilib.php:709
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr ""
   
  -#: ../wikilib.php:576 ../wikilib.php:578
  +#: ../wikilib.php:719 ../wikilib.php:739
   msgid "No files are selected !"
   msgstr " õ ʾҽϴ !"
   
  -#: ../wikilib.php:597
  +#: ../wikilib.php:732
  +#, c-format
  +msgid "Did you really want to delete '%s' ?"
  +msgstr ""
  +
  +#: ../wikilib.php:735
  +msgid "Delete"
  +msgstr ""
  +
  +#: ../wikilib.php:736
  +msgid "Delete selected file"
  +msgstr "õ  "
  +
  +#: ../wikilib.php:758
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr ""
   
  -#: ../wikilib.php:603
  +#: ../wikilib.php:764
   msgid "Please delete this file manually."
   msgstr ""
   
  -#: ../wikilib.php:605
  +#: ../wikilib.php:766
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "\"%s\"()  ?"
   
  -#: ../wikilib.php:706 ../wikilib.php:1520
  +#: ../wikilib.php:867 ../wikilib.php:1713
   msgid "Use more specific text"
   msgstr "  ڼ Էϼ"
   
  -#: ../wikilib.php:769
  +#: ../wikilib.php:930
   msgid "Goto Editor"
   msgstr " "
   
  -#: ../wikilib.php:778
  +#: ../wikilib.php:939
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "%s() ġ  ٸ    ߽ϴ"
   
  -#: ../wikilib.php:783 ../wikilib.php:812
  +#: ../wikilib.php:944 ../wikilib.php:973
   #, c-format
   msgid "Preview of %s"
   msgstr "%s ̸"
   
  -#: ../wikilib.php:790
  +#: ../wikilib.php:951
   msgid "Conflict error!"
   msgstr "浹!"
   
  -#: ../wikilib.php:838
  +#: ../wikilib.php:999
   msgid "mail does not supported by default."
   msgstr ""
   
  -#: ../wikilib.php:842
  +#: ../wikilib.php:1003
   msgid "Sent notification mail."
   msgstr ""
   
  -#: ../wikilib.php:844
  +#: ../wikilib.php:1005
   msgid "No subscribers found."
   msgstr "ڰ ϴ"
   
  -#: ../wikilib.php:849
  +#: ../wikilib.php:1010
   #, c-format
   msgid "%s is not editable"
   msgstr "%s()   ϴ"
   
  -#: ../wikilib.php:851
  +#: ../wikilib.php:1012
   #, c-format
   msgid "%s is saved"
   msgstr "%s() Ǿϴ"
   
  -#: ../wikilib.php:873
  +#: ../wikilib.php:1036
   msgid "Nobody subscribed to this page."
   msgstr ""
   
  -#: ../wikilib.php:895
  +#: ../wikilib.php:1058
   #, c-format
   msgid "%s page is modified"
   msgstr ""
   
  -#: ../wikilib.php:905
  +#: ../wikilib.php:1068
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:918
  +#: ../wikilib.php:1081
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:922
  +#: ../wikilib.php:1085
   msgid "Mails are sent successfully"
   msgstr ""
   
  -#: ../wikilib.php:923
  +#: ../wikilib.php:1086
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1086
  +#: ../wikilib.php:1249
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:1105
  +#: ../wikilib.php:1268
   msgid "Make profile"
   msgstr ""
   
  -#: ../wikilib.php:1106
  +#: ../wikilib.php:1269
   msgid "password again"
   msgstr ""
   
  -#: ../wikilib.php:1117
  +#: ../wikilib.php:1280
   msgid "New password"
   msgstr " йȣ"
   
  -#: ../wikilib.php:1123
  +#: ../wikilib.php:1286
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:1527
  +#: ../wikilib.php:1720
   #, c-format
   msgid "Title search for \"%s\""
   msgstr ""
  
  
  
  1.9       +321 -163  moniwiki/locale/po/moniwiki.pot
  
  Index: moniwiki.pot
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/moniwiki.pot,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- moniwiki.pot	7 Jan 2004 02:44:46 -0000	1.8
  +++ moniwiki.pot	2 Oct 2004 03:31:26 -0000	1.9
  @@ -6,7 +6,7 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: PACKAGE VERSION\n"
  -"POT-Creation-Date: 2004-01-07 11:48+0900\n"
  +"POT-Creation-Date: 2004-10-02 12:33+0900\n"
   "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
   "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
   "Language-Team: LANGUAGE <LL@li.org>\n"
  @@ -14,88 +14,171 @@
   "Content-Type: text/plain; charset=CHARSET\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  -#: ../plugin/Attachment.php:32
  +#: ../plugin/Attachment.php:75
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr ""
   
  -#: ../plugin/Attachment.php:36
  +#: ../plugin/Attachment.php:78
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
   
  -#: ../plugin/BabelFish.php:14
  +#: ../plugin/BabelFish.php:16
   msgid "BabelFish Translation"
   msgstr ""
   
  -#: ../plugin/BabelFish.php:27
  +#: ../plugin/BabelFish.php:29
   #, c-format
   msgid "Translate %s to %s"
   msgstr ""
   
  -#: ../plugin/Blog.php:80
  +#: ../plugin/Blog.php:86
  +#, c-format
  +msgid "Blog cache of \"%s\" is refreshed"
  +msgstr ""
  +
  +#: ../plugin/Blog.php:109
   #, c-format
   msgid "\"%s\" is updated"
   msgstr ""
   
  -#: ../plugin/Blog.php:85
  +#: ../plugin/Blog.php:114
   msgid "Add Blog"
   msgstr ""
   
  -#: ../plugin/Blog.php:139
  +#: ../plugin/Blog.php:154
  +msgid "Error: No blog entry found!"
  +msgstr ""
  +
  +#: ../plugin/Blog.php:162 ../plugin/Comment.php:109
  +msgid "Error: Don't make a clone!"
  +msgstr ""
  +
  +#: ../plugin/Blog.php:179
   #, c-format
   msgid "Comment added to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:142
  +#: ../plugin/Blog.php:182
   #, c-format
   msgid "Blog entry added to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:178
  +#: ../plugin/Blog.php:219
   #, c-format
   msgid "Add Comment to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:180
  +#: ../plugin/Blog.php:221
   #, c-format
   msgid "Add Blog entry to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:199
  +#: ../plugin/Blog.php:235 ../plugin/Comment.php:45
  +msgid "Name"
  +msgstr ""
  +
  +#: ../plugin/Blog.php:239
  +msgid "Title"
  +msgstr ""
  +
  +#: ../plugin/Blog.php:245 ../plugin/Comment.php:47
   msgid "Don't add a signature"
   msgstr ""
   
  -#: ../plugin/Blog.php:212
  +#: ../plugin/Blog.php:258
   msgid "<b>horizontal rule</b> ---- does not applied on the blog mode."
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:261
  +#: ../plugin/BlogChanges.php:198
  +msgid "Category: "
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:200 ../locale/dummy.php:7
  +msgid "BlogChanges"
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:244
  +#, c-format
  +msgid "Invalid category expr \"%s\""
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:376 ../plugin/BlogChanges.php:378
  +#: ../plugin/processor/blog.php:43 ../plugin/processor/blog.php:45
  +msgid "Anonymous"
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:409 ../plugin/processor/blog.php:85
  +#, c-format
  +msgid "%d comment"
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:409 ../plugin/processor/blog.php:85
  +#, c-format
  +msgid "%d comments"
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:411 ../plugin/Comment.php:98
  +#: ../plugin/processor/blog.php:77
  +msgid "Add comment"
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:421 ../plugin/processor/blog.php:96
  +msgid "track back"
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:441
   msgid "Previous"
   msgstr ""
   
  -#: ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
  +#: ../plugin/BlogChanges.php:444
  +msgid "Next"
  +msgstr ""
  +
  +#: ../plugin/Comment.php:48
  +msgid "Comment"
  +msgstr ""
  +
  +#: ../plugin/Comment.php:49 ../wikilib.php:606
  +msgid "Preview"
  +msgstr ""
  +
  +#: ../plugin/Comment.php:89
  +msgid "Preview comment"
  +msgstr ""
  +
  +#: ../plugin/Comment.php:132
  +#, c-format
  +msgid "%s is commented successfully"
  +msgstr ""
  +
  +#: ../plugin/Comment.php:133
  +msgid "Comment added successfully"
  +msgstr ""
  +
  +#: ../plugin/Draw.php:25 ../plugin/OeKaki.php:36
   msgid "Draw new picture"
   msgstr ""
   
  -#: ../plugin/Draw.php:49 ../plugin/UploadFile.php:81
  +#: ../plugin/Draw.php:45 ../plugin/UploadFile.php:109
   #, c-format
   msgid "Fail to copy \"%s\" to \"%s\""
   msgstr ""
   
  -#: ../plugin/Draw.php:59
  +#: ../plugin/Draw.php:55
   msgid "Fatal error !"
   msgstr ""
   
  -#: ../plugin/Draw.php:62
  +#: ../plugin/Draw.php:58
   msgid "No filename given"
   msgstr ""
   
  -#: ../plugin/Draw.php:83
  +#: ../plugin/Draw.php:79
   msgid "Edit drawing"
   msgstr ""
   
  -#: ../plugin/Draw.php:92
  +#: ../plugin/Draw.php:88
   msgid "Edit new drawing"
   msgstr ""
   
  @@ -113,55 +196,84 @@
   msgid "%d day(s) passed from %s."
   msgstr ""
   
  -#: ../plugin/FastSearch.php:116 ../plugin/FullSearch.php:17
  +#: ../plugin/FastSearch.php:117 ../plugin/FullSearch.php:16
   #, c-format
   msgid "Full text search for \"%s\""
   msgstr ""
   
  -#: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:26
  +#: ../plugin/FastSearch.php:126 ../plugin/FullSearch.php:25
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:15
  +#: ../plugin/FullSearch.php:14
   #, c-format
   msgid "BackLinks search for \"%s\""
   msgstr ""
   
  -#: ../plugin/FullSearch.php:71 ../wikilib.php:1503
  +#: ../plugin/FullSearch.php:103 ../wikilib.php:1724
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr ""
   
  +#: ../plugin/Gallery.php:225 ../plugin/Gallery.php:237
  +msgid "add comment"
  +msgstr ""
  +
  +#: ../plugin/Gallery.php:234
  +msgid "show comments"
  +msgstr ""
  +
  +#: ../plugin/Gallery.php:277 ../plugin/Gallery.php:280 ../wikilib.php:965
  +#, c-format
  +msgid "Go back or return to %s"
  +msgstr ""
  +
  +#: ../plugin/Gallery.php:278
  +msgid "Comments are edited"
  +msgstr ""
  +
  +#: ../plugin/Gallery.php:281
  +msgid "Comments is added"
  +msgstr ""
  +
  +#: ../plugin/ImportUrl.php:48
  +msgid "Import URL"
  +msgstr ""
  +
   #: ../plugin/LikePages.php:109
   msgid "These pages share a similar word..."
   msgstr ""
   
  -#: ../plugin/LikePages.php:122
  +#: ../plugin/LikePages.php:123
   msgid "These pages share an initial or final title word..."
   msgstr ""
   
  -#: ../plugin/LikePages.php:140
  +#: ../plugin/LikePages.php:143
   msgid "If you can't find this page, "
   msgstr ""
   
  -#: ../plugin/LikePages.php:145
  +#: ../plugin/LikePages.php:148
   msgid "No similar pages found"
   msgstr ""
   
  -#: ../plugin/LikePages.php:146
  +#: ../plugin/LikePages.php:149
   msgid "You are strongly recommened to find it in MetaWikis. "
   msgstr ""
   
  -#: ../plugin/LikePages.php:149
  +#: ../plugin/LikePages.php:152
   #, c-format
   msgid "Like \"%s\""
   msgstr ""
   
  -#: ../plugin/LikePages.php:151
  +#: ../plugin/LikePages.php:154
   msgid "Search all MetaWikis"
   msgstr ""
   
  +#: ../plugin/Navigation.php:14
  +msgid "No Index page found"
  +msgstr ""
  +
   #: ../plugin/OeKaki.php:118
   msgid "Create new picture"
   msgstr ""
  @@ -170,20 +282,16 @@
   msgid "Edit Image"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:146
  +#: ../plugin/RecentChanges.php:156
   msgid "set bookmark"
   msgstr ""
   
  -#: ../plugin/Trail.php:14
  -msgid "No Index page found"
  -msgstr ""
  -
   #: ../plugin/TwinPages.php:13
   #, c-format
   msgid "TwinPages of %s"
   msgstr ""
   
  -#: ../plugin/TwinPages.php:18 ../wiki.php:1868 ../wiki.php:3041
  +#: ../plugin/TwinPages.php:18 ../wiki.php:1999 ../wiki.php:3262
   msgid "See TwinPages: "
   msgstr ""
   
  @@ -191,20 +299,29 @@
   msgid "No TwinPages found."
   msgstr ""
   
  -#: ../plugin/UploadFile.php:92
  +#: ../plugin/UploadFile.php:73
  +#, c-format
  +msgid "%s does not allowed to upload"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:115
   #, c-format
   msgid "File \"%s\" is uploaded successfully"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:106
  +#: ../plugin/UploadFile.php:146
  +msgid "Files are uploaded successfully"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:180
   msgid ": Rename"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:106 ../plugin/rename.php:36
  +#: ../plugin/UploadedFiles.php:121 ../plugin/rename.php:69 ../wikilib.php:734
   msgid "Password"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:107 ../wikilib.php:568
  +#: ../plugin/UploadedFiles.php:122 ../wikilib.php:712
   msgid "Delete selected files"
   msgstr ""
   
  @@ -220,16 +337,22 @@
   msgid "Deeper"
   msgstr ""
   
  -#: ../plugin/Vote.php:66 ../plugin/security/needtologin.php:25
  +#: ../plugin/Vote.php:67 ../plugin/security/mustlogin.php:25
  +#: ../plugin/security/mustlogin.php:35 ../plugin/security/mustlogin.php:45
  +#: ../plugin/security/mustlogin.php:60 ../plugin/security/needtologin.php:25
   #: ../plugin/security/needtologin.php:35 ../plugin/security/needtologin.php:45
   #: ../plugin/security/userbased.php:60
   msgid "Please Login or make your ID on this Wiki ;)"
   msgstr ""
   
  -#: ../plugin/Vote.php:112
  +#: ../plugin/Vote.php:113
   msgid "Voted successfully"
   msgstr ""
   
  +#: ../plugin/WordIndex.php:65 ../wikilib.php:1523
  +msgid "Others"
  +msgstr ""
  +
   #: ../plugin/backup.php:46
   msgid "Did you want to Backup your wiki ?"
   msgstr ""
  @@ -265,19 +388,15 @@
   msgid "Password:"
   msgstr ""
   
  -#: ../plugin/login.php:26 ../wikilib.php:1071
  -msgid "Login"
  -msgstr ""
  -
  -#: ../plugin/login.php:27
  +#: ../plugin/login.php:26
   msgid "Join"
   msgstr ""
   
  -#: ../plugin/login.php:41 ../plugin/minilogin.php:29
  +#: ../plugin/login.php:42 ../plugin/minilogin.php:29
   msgid "Logout"
   msgstr ""
   
  -#: ../plugin/login.php:42 ../plugin/minilogin.php:28 ../locale/dummy.php:3
  +#: ../plugin/login.php:43 ../plugin/minilogin.php:28 ../locale/dummy.php:3
   msgid "UserPreferences"
   msgstr ""
   
  @@ -289,7 +408,7 @@
   msgid "No manpage found"
   msgstr ""
   
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1096
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1274
   msgid "Login or Join"
   msgstr ""
   
  @@ -306,26 +425,14 @@
   msgid "Enter a page name"
   msgstr ""
   
  -#: ../plugin/processor/blog.php:43 ../plugin/processor/blog.php:45
  -msgid "Anonymous"
  -msgstr ""
  -
  -#: ../plugin/processor/blog.php:70
  -msgid "Add comment"
  -msgstr ""
  -
  -#: ../plugin/processor/blog.php:78
  +#: ../plugin/print.php:20
   #, c-format
  -msgid "%d comment"
  +msgid "Retrieved from %s"
   msgstr ""
   
  -#: ../plugin/processor/blog.php:78
  +#: ../plugin/print.php:25
   #, c-format
  -msgid "%d comments"
  -msgstr ""
  -
  -#: ../plugin/processor/blog.php:89
  -msgid "track back"
  +msgid "last modified %s %s"
   msgstr ""
   
   #: ../plugin/quicklinks.php:16 ../plugin/subscribe.php:24
  @@ -378,38 +485,64 @@
   msgid "RCS purge \"%s\""
   msgstr ""
   
  -#: ../plugin/rdf_blog.php:31 ../plugin/rss_blog.php:31
  +#: ../plugin/rdf_blog.php:31 ../plugin/rss_blog.php:26
   msgid "Blog Changes"
   msgstr ""
   
  -#: ../plugin/rdf_blog.php:45 ../plugin/rss_blog.php:95
  +#: ../plugin/rdf_blog.php:45 ../plugin/rss_blog.php:104
   #, c-format
   msgid "BlogChanges at %s"
   msgstr ""
   
  -#: ../plugin/rename.php:14
  +#: ../plugin/rename.php:13
   #, c-format
   msgid "\"%s\" is renamed !"
   msgstr ""
   
  -#: ../plugin/rename.php:20
  +#: ../plugin/rename.php:29
  +#, c-format
  +msgid "'%s' is changed"
  +msgstr ""
  +
  +#: ../plugin/rename.php:37
  +#, c-format
  +msgid "'%s' is renamed as '%s' successfully"
  +msgstr ""
  +
  +#: ../plugin/rename.php:45
   #, c-format
   msgid "Fail to rename \"%s\" !"
   msgstr ""
   
  -#: ../plugin/rename.php:27
  +#: ../plugin/rename.php:52
   #, c-format
   msgid "Rename \"%s\" ?"
   msgstr ""
   
  -#: ../plugin/rename.php:37
  +#: ../plugin/rename.php:61
  +msgid "Rename"
  +msgstr ""
  +
  +#: ../plugin/rename.php:66
  +msgid "Rename and fix Backlinks"
  +msgstr ""
  +
  +#: ../plugin/rename.php:70
   msgid "Only WikiMaster can rename this page"
   msgstr ""
   
  -#: ../plugin/rename.php:39 ../wikilib.php:608
  +#: ../plugin/rename.php:71 ../wikilib.php:771
   msgid "with revision history"
   msgstr ""
   
  +#: ../plugin/rename.php:72
  +msgid "show only"
  +msgstr ""
  +
  +#: ../plugin/rename.php:74
  +msgid "Check backlinks"
  +msgstr ""
  +
   #: ../plugin/restore.php:23
   msgid "Error: Don't try to overwrite it"
   msgstr ""
  @@ -436,16 +569,17 @@
   msgid "show changes"
   msgstr ""
   
  -#: ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
  -#: ../plugin/security/needtologin.php:44
  +#: ../plugin/security/mustlogin.php:24 ../plugin/security/mustlogin.php:34
  +#: ../plugin/security/mustlogin.php:44 ../plugin/security/needtologin.php:24
  +#: ../plugin/security/needtologin.php:34 ../plugin/security/needtologin.php:44
   #, c-format
   msgid "You are not allowed to '%s' on this page"
   msgstr ""
   
  -#: ../plugin/security/userbased.php:28 ../plugin/security/userbased.php:36
  -#: ../plugin/security/userbased.php:44 ../plugin/security/userbased.php:59
  -#: ../plugin/security/wikimaster.php:25 ../plugin/security/wikimaster.php:33
  -#: ../plugin/security/wikimaster.php:41
  +#: ../plugin/security/mustlogin.php:59 ../plugin/security/userbased.php:28
  +#: ../plugin/security/userbased.php:36 ../plugin/security/userbased.php:44
  +#: ../plugin/security/userbased.php:59 ../plugin/security/wikimaster.php:25
  +#: ../plugin/security/wikimaster.php:33 ../plugin/security/wikimaster.php:41
   #, c-format
   msgid "You are not allowed to '%s' on this page."
   msgstr ""
  @@ -468,7 +602,7 @@
   msgid "Send TrackBack ping"
   msgstr ""
   
  -#: ../plugin/sendping.php:158
  +#: ../plugin/sendping.php:160
   msgid "Trackback sent"
   msgstr ""
   
  @@ -501,11 +635,11 @@
   msgid "Do you want to subscribe \"%s\" ?"
   msgstr ""
   
  -#: ../plugin/theme.php:24
  +#: ../plugin/theme.php:23
   msgid "Theme cleared. Goto UserPreferences."
   msgstr ""
   
  -#: ../plugin/theme.php:64
  +#: ../plugin/theme.php:63
   msgid "Please select a theme properly."
   msgstr ""
   
  @@ -567,7 +701,7 @@
   
   #: ../plugin/userform.php:62
   #, c-format
  -msgid "\"%s\" is not exists on this wiki !"
  +msgid "\"%s\" does not exists on this wiki !"
   msgstr ""
   
   #: ../plugin/userform.php:64
  @@ -648,102 +782,118 @@
   msgid "Whois search result for %s"
   msgstr ""
   
  -#: ../wiki.php:861
  +#: ../wiki.php:888
   #, c-format
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1864
  +#: ../wiki.php:1067
  +msgid "File does not exists"
  +msgstr ""
  +
  +#: ../wiki.php:1995
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:1864
  +#: ../wiki.php:1995
   msgid "TwinPages"
   msgstr ""
   
  -#: ../wiki.php:2160
  +#: ../wiki.php:2315
   msgid "Revision History"
   msgstr ""
   
  -#: ../wiki.php:2261 ../wiki.php:2409
  +#: ../wiki.php:2416 ../wiki.php:2564
   msgid "No older revisions available"
   msgstr ""
   
  -#: ../wiki.php:2388 ../wiki.php:2427 ../wikilib.php:790
  +#: ../wiki.php:2543 ../wiki.php:2581 ../wikilib.php:966
   msgid "No difference found"
   msgstr ""
   
  -#: ../wiki.php:2390
  +#: ../wiki.php:2545
   msgid "Difference between yours and the current"
   msgstr ""
   
  -#: ../wiki.php:2429
  +#: ../wiki.php:2583
   msgid "Difference between versions"
   msgstr ""
   
  -#: ../wiki.php:2431
  +#: ../wiki.php:2585
   #, c-format
   msgid "Difference between r%s and r%s"
   msgstr ""
   
  -#: ../wiki.php:2434
  +#: ../wiki.php:2588
   #, c-format
   msgid "Difference between r%s and the current"
   msgstr ""
   
  -#: ../wiki.php:2607 ../locale/dummy.php:6
  +#: ../wiki.php:2782 ../locale/dummy.php:6
   msgid "EditText"
   msgstr ""
   
  -#: ../wiki.php:2609
  +#: ../wiki.php:2784
   msgid "NotEditable"
   msgstr ""
   
  -#: ../wiki.php:2611 ../locale/dummy.php:6
  +#: ../wiki.php:2786 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:2612 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:2787 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr ""
   
  -#: ../wiki.php:3043 ../wiki.php:3046
  +#: ../wiki.php:3010
  +msgid "Main"
  +msgstr ""
  +
  +#: ../wiki.php:3238
  +msgid "You are in the black list"
  +msgstr ""
  +
  +#: ../wiki.php:3239
  +msgid "Please contact wikimasters"
  +msgstr ""
  +
  +#: ../wiki.php:3264 ../wiki.php:3267
   msgid "Create this page"
   msgstr ""
   
  -#: ../wiki.php:3048
  +#: ../wiki.php:3269
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
   
  -#: ../wiki.php:3048
  +#: ../wiki.php:3269
   msgid "title"
   msgstr ""
   
  -#: ../wiki.php:3054
  +#: ../wiki.php:3275
   msgid " or alternativly, use one of these templates:\n"
   msgstr ""
   
  -#: ../wiki.php:3057 ../wikilib.php:435
  +#: ../wiki.php:3278
   msgid "To create your own templates, add a page with a 'Template' suffix.\n"
   msgstr ""
   
  -#: ../wiki.php:3114
  +#: ../wiki.php:3353
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr ""
   
  -#: ../wiki.php:3126
  +#: ../wiki.php:3365
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:3129
  +#: ../wiki.php:3368
   msgid "Please enter the valid password"
   msgstr ""
   
  -#: ../wikilib.php:375
  +#: ../wikilib.php:481
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -760,202 +910,214 @@
   "no trailing white space allowed after tables or titles.<br />\n"
   msgstr ""
   
  -#: ../wikilib.php:433
  +#: ../wikilib.php:541
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   
  -#: ../wikilib.php:435
  -msgid "<br />\n"
  +#: ../wikilib.php:543
  +msgid "To create your own templates, add a page with a 'Template' suffix."
   msgstr ""
   
  -#: ../wikilib.php:451
  +#: ../wikilib.php:559
   msgid "Skip to preview"
   msgstr ""
   
  -#: ../wikilib.php:453
  +#: ../wikilib.php:561
   msgid "ReduceEditor"
   msgstr ""
   
  -#: ../wikilib.php:456 ../locale/dummy.php:6
  +#: ../wikilib.php:562
  +msgid "EnlargeEditor"
  +msgstr ""
  +
  +#: ../wikilib.php:566 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
  -#: ../wikilib.php:457
  +#: ../wikilib.php:567
   msgid "HelpOnEditing"
   msgstr ""
   
  -#: ../wikilib.php:474
  +#: ../wikilib.php:584
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:490
  +#: ../wikilib.php:600
   msgid "--Select Category--"
   msgstr ""
   
  -#: ../wikilib.php:496
  -msgid "Preview"
  -msgstr ""
  -
  -#: ../wikilib.php:497 ../wikilib.php:1099
  +#: ../wikilib.php:607 ../wikilib.php:1277
   msgid "Save"
   msgstr ""
   
  -#: ../wikilib.php:498
  +#: ../wikilib.php:608
   msgid "Summary of Change"
   msgstr ""
   
  -#: ../wikilib.php:521
  +#: ../wikilib.php:650
   #, c-format
   msgid "Info. for %s"
   msgstr ""
   
  -#: ../wikilib.php:531
  +#: ../wikilib.php:660
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:533
  +#: ../wikilib.php:665
   #, c-format
   msgid "%s is not valid action"
   msgstr ""
   
  -#: ../wikilib.php:535
  +#: ../wikilib.php:667
   msgid "Is it valid action ?"
   msgstr ""
   
  -#: ../wikilib.php:556
  +#: ../wikilib.php:700
   #, c-format
   msgid "File '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:558
  +#: ../wikilib.php:702
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr ""
   
  -#: ../wikilib.php:563
  +#: ../wikilib.php:707
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:565
  +#: ../wikilib.php:709
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr ""
   
  -#: ../wikilib.php:575 ../wikilib.php:577
  +#: ../wikilib.php:719 ../wikilib.php:739
   msgid "No files are selected !"
   msgstr ""
   
  -#: ../wikilib.php:595
  +#: ../wikilib.php:732
  +#, c-format
  +msgid "Did you really want to delete '%s' ?"
  +msgstr ""
  +
  +#: ../wikilib.php:735
  +msgid "Delete"
  +msgstr ""
  +
  +#: ../wikilib.php:736
  +msgid "Delete selected file"
  +msgstr ""
  +
  +#: ../wikilib.php:758
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr ""
   
  -#: ../wikilib.php:601
  +#: ../wikilib.php:764
   msgid "Please delete this file manually."
   msgstr ""
   
  -#: ../wikilib.php:603
  +#: ../wikilib.php:766
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr ""
   
  -#: ../wikilib.php:692 ../wikilib.php:1492
  +#: ../wikilib.php:867 ../wikilib.php:1713
   msgid "Use more specific text"
   msgstr ""
   
  -#: ../wikilib.php:754
  +#: ../wikilib.php:930
   msgid "Goto Editor"
   msgstr ""
   
  -#: ../wikilib.php:763
  +#: ../wikilib.php:939
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr ""
   
  -#: ../wikilib.php:768 ../wikilib.php:797
  +#: ../wikilib.php:944 ../wikilib.php:973
   #, c-format
   msgid "Preview of %s"
   msgstr ""
   
  -#: ../wikilib.php:775
  +#: ../wikilib.php:951
   msgid "Conflict error!"
   msgstr ""
   
  -#: ../wikilib.php:789
  -#, c-format
  -msgid "Go back or return to %s"
  -msgstr ""
  -
  -#: ../wikilib.php:823
  +#: ../wikilib.php:999
   msgid "mail does not supported by default."
   msgstr ""
   
  -#: ../wikilib.php:827
  +#: ../wikilib.php:1003
   msgid "Sent notification mail."
   msgstr ""
   
  -#: ../wikilib.php:829
  +#: ../wikilib.php:1005
   msgid "No subscribers found."
   msgstr ""
   
  -#: ../wikilib.php:834
  +#: ../wikilib.php:1010
   #, c-format
   msgid "%s is not editable"
   msgstr ""
   
  -#: ../wikilib.php:836
  +#: ../wikilib.php:1012
   #, c-format
   msgid "%s is saved"
   msgstr ""
   
  -#: ../wikilib.php:858
  +#: ../wikilib.php:1036
   msgid "Nobody subscribed to this page."
   msgstr ""
   
  -#: ../wikilib.php:880
  +#: ../wikilib.php:1058
   #, c-format
   msgid "%s page is modified"
   msgstr ""
   
  -#: ../wikilib.php:890
  +#: ../wikilib.php:1068
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:903
  +#: ../wikilib.php:1081
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:907
  +#: ../wikilib.php:1085
   msgid "Mails are sent successfully"
   msgstr ""
   
  -#: ../wikilib.php:908
  +#: ../wikilib.php:1086
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1090
  +#: ../wikilib.php:1249
  +msgid "Login"
  +msgstr ""
  +
  +#: ../wikilib.php:1268
   msgid "Make profile"
   msgstr ""
   
  -#: ../wikilib.php:1091
  +#: ../wikilib.php:1269
   msgid "password again"
   msgstr ""
   
  -#: ../wikilib.php:1102
  +#: ../wikilib.php:1280
   msgid "New password"
   msgstr ""
   
  -#: ../wikilib.php:1108
  +#: ../wikilib.php:1286
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:1499
  +#: ../wikilib.php:1720
   #, c-format
   msgid "Title search for \"%s\""
   msgstr ""
  @@ -990,10 +1152,6 @@
   
   #: ../locale/dummy.php:6
   msgid "UploadedFiles"
  -msgstr ""
  -
  -#: ../locale/dummy.php:7
  -msgid "BlogChanges"
   msgstr ""
   
   #: ../locale/dummy.php:7
  
  
  


wkpark      2004/10/02 12:43:42

  Modified:    .        monisetup.php
  Log:
  add WordIndex
  
  Revision  Changes    Path
  1.18      +2 -2      moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- monisetup.php	31 Aug 2004 16:21:48 -0000	1.17
  +++ monisetup.php	2 Oct 2004 03:43:41 -0000	1.18
  @@ -1,7 +1,7 @@
   <?
   // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.17 2004/08/31 16:21:48 wkpark Exp $
  +// $Id: monisetup.php,v 1.18 2004/10/02 03:43:41 wkpark Exp $
   
   class MoniConfig {
     function MoniConfig($configfile="config.php") {
  @@ -279,7 +279,7 @@
     $num=sizeof($pages);
   
     #
  -  $SystemPages="FrontPage|RecentChanges|TitleIndex|FindPage|WordIndex".
  +  $SystemPages="FrontPage|RecentChanges|TitleIndex|FindPage|WordIndex|".
     "FortuneCookies|Pages$|".
     "SystemPages|TwinPages|WikiName|SystemInfo|UserPreferences|".
     "InterMap|IsbnMap|WikiSandBox|SandBox|UploadFile|UploadedFiles|".
  
  
  


wkpark      2004/10/03 16:33:59

  Modified:    css      kbd.js
  Log:
  more intelligent behavior with search keys '?' '/'
  fix to change the name of ID tag of a search form
  
  Revision  Changes    Path
  1.6       +46 -36    moniwiki/css/kbd.js
  
  Index: kbd.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/kbd.js,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- kbd.js	31 Aug 2004 16:52:51 -0000	1.5
  +++ kbd.js	3 Oct 2004 07:33:59 -0000	1.6
  @@ -6,7 +6,7 @@
   
      distributable under GPL
   
  -   $Id: kbd.js,v 1.5 2004/08/31 16:52:51 wkpark Exp $
  +   $Id: kbd.js,v 1.6 2004/10/03 07:33:59 wkpark Exp $
   
      CHANGES
   
  @@ -15,6 +15,7 @@
      * 2003/06/01 : added patch by Kkabi
      * 2003/07/14 : fixed element indices
      * 2004/08/24 : no PATH_INFO support merged
  +   * 2004/10/03 : more intelligent behavior with search keys '?' '/'
   */
   
   /*
  @@ -51,7 +52,10 @@
   RecentChanges= "RecentChanges"; 
   FindPage= "FindPage"; 
   TitleIndex= "TitleIndex"; 
  -HelpContents= "HelpContents"; 
  +HelpContents= "HelpContents";
  +
  +// go form ID
  +_go= "go";
   
   if (_qp == '/') {
   	_ap='?';
  @@ -83,7 +87,8 @@
   
   //	if (_dom!=3) return;
   	if(EventStatus == 'INPUT' || EventStatus == 'TEXTAREA' ) {
  -		if (_dom==3 && cc==27 && EventStatus == 'TEXTAREA') return false;
  +		if (_dom==3 && cc==27 && EventStatus == 'TEXTAREA')
  +			return false;
   		// ESC blocking for all vim lovers
   		return;
   	}
  @@ -119,35 +124,35 @@
   	}
   	if(EventStatus == 'INPUT' || EventStatus == 'TEXTAREA' || _dom == 2) {
   		if ((ch == '?' || ch== '/') && EventStatus == 'INPUT') {
  -			var my=""+document.go.elements['value'].value;
  -			if (ch == '?') {
  -				if (document.go.elements['status'].value == '?') {
  -					document.go.elements['action'].value="goto";
  -					document.go.elements['status'].value="Go";
  +			var my=""+document.getElementById(_go).elements['value'].value;
  +			if (ch == '?' && (my == "/" || my =="?" || my=="")) {
  +				if (document.getElementById(_go).elements['status'].value == '?') {
  +					document.getElementById(_go).elements['action'].value="goto";
  +					document.getElementById(_go).elements['status'].value="Go";
   					window.status="GoTo";
   				} else {
  -					document.go.elements['action'].value="titlesearch";
  -					document.go.elements['status'].value="?";
  +					document.getElementById(_go).elements['action'].value="titlesearch";
  +					document.getElementById(_go).elements['status'].value="?";
   					window.status="TitleSearch";
   				}
  -			} else {
  -				if (document.go.elements['status'].value == '/') {
  -			 		document.go.elements['action'].value="goto";
  -			 		document.go.elements['status'].value="Go";
  +			} else if (ch == '/' && (my == "/" || my =="?" || my=="")) {
  +				if (document.getElementById(_go).elements['status'].value == '/') {
  +			 		document.getElementById(_go).elements['action'].value="goto";
  +			 		document.getElementById(_go).elements['status'].value="Go";
   			 		window.status="GoTo";
   				} else {
  -					document.go.elements['action'].value="fullsearch";
  -					document.go.elements['status'].value="/";
  +					document.getElementById(_go).elements['action'].value="fullsearch";
  +					document.getElementById(_go).elements['status'].value="/";
   					window.status="FullSearch";
   				}
   			}
   			if (my == '/' || my == '?')
  -			document.go.elements['value'].value=my.substr(0,my.length-1);
  +			document.getElementById(_go).elements['value'].value=my.substr(0,my.length-1);
   		} else if (cc== 27 && EventStatus == 'INPUT') {
  -			document.go.elements['value'].blur();
  -			document.go.elements['value'].value='';
  -			document.go.elements['action'].value="goto";
  -			document.go.elements['status'].value="Go";
  +			document.getElementById(_go).elements['value'].blur();
  +			document.getElementById(_go).elements['value'].value='';
  +			document.getElementById(_go).elements['action'].value="goto";
  +			document.getElementById(_go).elements['status'].value="Go";
   			window.status="GoTo"+window.defaultStatus;
   		}
   		return;
  @@ -162,19 +167,21 @@
   		self.location = url_prefix + FindPage;
   	} else if(cc == 9 || cc == 27) { // 'TAB','ESC' key
   		if (cc == 27) {
  -			document.go.elements['value'].focus();
  +			document.getElementById(_go).elements['value'].focus();
   		}
   	} else if(ch == "/" || ch == "?") {
  -		if (ch == "?") {
  +		var my=document.getElementById(_go).elements['value'].value + "";
  +		if (ch == "?" && (my == "?" || my =="/" || my=="")) {
   			// Title search as vi way
  -			document.go.elements['value'].focus();
  -			document.go.elements['action'].value="titlesearch";
  -			document.go.elements['status'].value="?";
  -		} else if ( ch == "/") {
  +			document.getElementById(_go).elements['value'].focus();
  +			document.getElementById(_go).elements['action'].value="titlesearch";
  +			document.getElementById(_go).elements['status'].value="?";
  +		} else
  +		if (ch == "/" && (my == "?" || my =="/" || my=="")) {
   			// Contents search
  -			document.go.elements['value'].focus();
  -			document.go.elements['action'].value="fullsearch";
  -			document.go.elements['status'].value="/";
  +			document.getElementById(_go).elements['value'].focus();
  +			document.getElementById(_go).elements['action'].value="fullsearch";
  +			document.getElementById(_go).elements['status'].value="/";
   		}
   	} else if(ch == "c") {
   		self.location = url_prefix + _qp + RecentChanges;
  @@ -212,11 +219,13 @@
   			if ((idx=my.indexOf("&")) != -1)
   				my=my.substring(0,idx);
   			if (ch == "e" || ch == "w")
  -				self.location=url_prefix + _qp + my + _ap + 'action=edit';
  +				self.location= url_prefix + _qp + my + _ap +
  +					'action=edit';
   			if (ch == "r") {
   				if ((idx=my.indexOf("#")) != -1)
   					my=my.substring(0,idx);
  -				self.location=url_prefix + _qp + my + _ap + 'action=show';
  +				self.location=url_prefix + _qp + my + _ap +
  +					'action=show';
   			}
   		} else {
   			if (ch == "e" || ch == "w")
  @@ -224,7 +233,8 @@
   			if (ch == "r") {
   				if ((idx=my.indexOf("#")) != -1) {
   					my=my.substring(0,idx);
  -					self.location = my + _ap + 'action=show';
  +					self.location = my + _ap +
  +						'action=show';
   				} else
   					//self.location += '?action=show';
   					self.location = self.location;
  @@ -241,9 +251,9 @@
   }
   
   function moin_submit() {
  -	if (document.go.elements['action'].value =="goto") {
  -		document.go.elements['value'].name='goto';
  -		document.go.elements['action'].name='';
  +	if (document.getElementById(_go).elements['action'].value =="goto") {
  +		document.getElementById(_go).elements['value'].name='goto';
  +		document.getElementById(_go).elements['action'].name='';
   		return true;
   	}
   }
  
  
  


wkpark      2004/10/04 13:37:26

  Modified:    plugin   rss_blog.php
  Log:
  simplify
  
  Revision  Changes    Path
  1.21      +2 -12     moniwiki/plugin/rss_blog.php
  
  Index: rss_blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rss_blog.php,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- rss_blog.php	2 Oct 2004 02:44:36 -0000	1.20
  +++ rss_blog.php	4 Oct 2004 04:37:26 -0000	1.21
  @@ -4,7 +4,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a rss_blog action plugin for the MoniWiki
   //
  -// $Id: rss_blog.php,v 1.20 2004/10/02 02:44:36 wkpark Exp $
  +// $Id: rss_blog.php,v 1.21 2004/10/04 04:37:26 wkpark Exp $
   
   if (!function_exists('macro_BlogChanges'))
     if ($plugin=getPlugin('BlogChanges')) include_once("plugin/$plugin.php");
  @@ -157,17 +157,7 @@
     }
   
     /* convert special characters into HTML entities */
  -  $search = array ("'&'",
  -                   "'\"'",
  -                   "'<'",
  -                   "'>'");
  -
  -  $replace = array ("&amp;",
  -                    "&quot;",  
  -                    "&lt;",
  -                    "&gt;");         
  -
  -  $title = preg_replace($search, $replace, $title);
  +  $title = htmlspecialchars($title);
   
     return <<<ITEM
   <item>
  
  
  


wkpark      2004/10/04 13:38:37

  Modified:    .        wikilib.php
  Log:
  fix normalize_word()
  
  Revision  Changes    Path
  1.119     +4 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.118
  retrieving revision 1.119
  diff -u -r1.118 -r1.119
  --- wikilib.php	2 Oct 2004 03:02:33 -0000	1.118
  +++ wikilib.php	4 Oct 2004 04:38:37 -0000	1.119
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.118 2004/10/02 03:02:33 wkpark Exp $
  +// $Id: wikilib.php,v 1.119 2004/10/04 04:38:37 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -106,11 +106,12 @@
     if ($page[0]=='/') { # SubPage
       $page=$pagename.$page;
     } else if ($tok=strtok($page,'.')) {
  +#    print $tok;
       if ($tok=='Main') {
         # Main.MoniWiki => MoniWiki
         $page=$text=strtok('');
         return array($page,$text,$main_page);
  -    } else if (strpos($tok,'~') === false) {
  +    } else if (strpos($tok,'~') === false and strpos($tok,'/') === false) {
         # Ko~Hello.World =x=> Ko~Hello~World
         # Ko.Hello => Ko~Hello
   
  @@ -540,7 +541,7 @@
       $options['linkto']="?action=edit&amp;template=";
       $form = '<br />'._("Use one of the following templates as an initial release :\n");
       $form.= macro_TitleSearch($formatter,$DBInfo->template_regex,$options);
  -    $form.= _("To create your own templates, add a page with a 'Template' suffix.\n"."<br />\n");
  +    $form.= _("To create your own templates, add a page with a 'Template' suffix.")."\n<br />\n";
     }
   
     if ($options['conflict'])
  
  
  


wkpark      2004/10/07 14:15:16

  Modified:    lib      difflib.php
  Log:
  fixed #300499: rename 'final' as '_final' for the php5
  
  Revision  Changes    Path
  1.4       +40 -40    moniwiki/lib/difflib.php
  
  Index: difflib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/difflib.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- difflib.php	17 Oct 2003 03:49:29 -0000	1.3
  +++ difflib.php	7 Oct 2004 05:15:13 -0000	1.4
  @@ -8,7 +8,7 @@
   //
   
   // FIXME: possibly remove assert()'s for production version?
  -// $Id: difflib.php,v 1.3 2003/10/17 03:49:29 wkpark Exp $
  +// $Id: difflib.php,v 1.4 2004/10/07 05:15:13 wkpark Exp $
   // original Id: difflib.php,v 1.5 2002/01/21 06:55:47 dairiki Exp
   
   // PHP3 does not have assert()
  @@ -17,7 +17,7 @@
   class _DiffOp {
       var $type;
       var $orig;
  -    var $final;
  +    var $_final;
       
       function reverse() {
           trigger_error("pure virtual", E_USER_ERROR);
  @@ -28,22 +28,22 @@
       }
   
       function nfinal() {
  -        return $this->final ? sizeof($this->final) : 0;
  +        return $this->_final ? sizeof($this->_final) : 0;
       }
   }
   
   class _DiffOp_Copy extends _DiffOp {
       var $type = 'copy';
       
  -    function _DiffOp_Copy ($orig, $final = false) {
  -        if (!is_array($final))
  -            $final = $orig;
  +    function _DiffOp_Copy ($orig, $_final = false) {
  +        if (!is_array($_final))
  +            $_final = $orig;
           $this->orig = $orig;
  -        $this->final = $final;
  +        $this->_final = $_final;
       }
   
       function reverse() {
  -        return new _DiffOp_Copy($this->final, $this->orig);
  +        return new _DiffOp_Copy($this->_final, $this->orig);
       }
   }
   
  @@ -52,7 +52,7 @@
       
       function _DiffOp_Delete ($lines) {
           $this->orig = $lines;
  -        $this->final = false;
  +        $this->_final = false;
       }
   
       function reverse() {
  @@ -64,25 +64,25 @@
       var $type = 'add';
       
       function _DiffOp_Add ($lines) {
  -        $this->final = $lines;
  +        $this->_final = $lines;
           $this->orig = false;
       }
   
       function reverse() {
  -        return new _DiffOp_Delete($this->final);
  +        return new _DiffOp_Delete($this->_final);
       }
   }
   
   class _DiffOp_Change extends _DiffOp {
       var $type = 'change';
       
  -    function _DiffOp_Change ($orig, $final) {
  +    function _DiffOp_Change ($orig, $_final) {
           $this->orig = $orig;
  -        $this->final = $final;
  +        $this->_final = $_final;
       }
   
       function reverse() {
  -        return new _DiffOp_Change($this->final, $this->orig);
  +        return new _DiffOp_Change($this->_final, $this->orig);
       }
   }
           
  @@ -588,8 +588,8 @@
           $lines = array();
           
           foreach ($this->edits as $edit) {
  -            if ($edit->final)
  -                array_splice($lines, sizeof($lines), 0, $edit->final);
  +            if ($edit->_final)
  +                array_splice($lines, sizeof($lines), 0, $edit->_final);
           }
           return $lines;
       }
  @@ -602,13 +602,13 @@
       function _check ($from_lines, $to_lines) {
           if (serialize($from_lines) != serialize($this->orig()))
               trigger_error("Reconstructed original doesn't match", E_USER_ERROR);
  -        if (serialize($to_lines) != serialize($this->final()))
  +        if (serialize($to_lines) != serialize($this->_final()))
               trigger_error("Reconstructed final doesn't match", E_USER_ERROR);
   
           $rev = $this->reverse();
           if (serialize($to_lines) != serialize($rev->orig()))
               trigger_error("Reversed original doesn't match", E_USER_ERROR);
  -        if (serialize($from_lines) != serialize($rev->final()))
  +        if (serialize($from_lines) != serialize($rev->_final()))
               trigger_error("Reversed final doesn't match", E_USER_ERROR);
   
   
  @@ -672,10 +672,10 @@
                   $xi += sizeof($orig);
               }
               
  -            $final = &$this->edits[$i]->final;
  -            if (is_array($final)) {
  -                $final = array_slice($to_lines, $yi, sizeof($final));
  -                $yi += sizeof($final);
  +            $_final = &$this->edits[$i]->_final;
  +            if (is_array($_final)) {
  +                $_final = array_slice($to_lines, $yi, sizeof($_final));
  +                $yi += sizeof($_final);
               }
           }
       }
  @@ -758,8 +758,8 @@
   
               if ($edit->orig)
                   $xi += sizeof($edit->orig);
  -            if ($edit->final)
  -                $yi += sizeof($edit->final);
  +            if ($edit->_final)
  +                $yi += sizeof($edit->_final);
           }
   
           if (is_array($block))
  @@ -776,11 +776,11 @@
               if ($edit->type == 'copy')
                   $this->_context($edit->orig);
               elseif ($edit->type == 'add')
  -                $this->_added($edit->final);
  +                $this->_added($edit->_final);
               elseif ($edit->type == 'delete')
                   $this->_deleted($edit->orig);
               elseif ($edit->type == 'change')
  -                $this->_changed($edit->orig, $edit->final);
  +                $this->_changed($edit->orig, $edit->_final);
               else
                   trigger_error("Unknown edit type", E_USER_ERROR);
           }
  @@ -829,10 +829,10 @@
           $this->_lines($lines, "<");
       }
   
  -    function _changed($orig, $final) {
  +    function _changed($orig, $_final) {
           $this->_deleted($orig);
           echo "---\n";
  -        $this->_added($final);
  +        $this->_added($_final);
       }
   }
   
  @@ -899,17 +899,17 @@
   
   class WordLevelDiff extends MappedDiff
   {
  -    function WordLevelDiff ($orig_lines, $final_lines,$charset="euc-kr") {
  +    function WordLevelDiff ($orig_lines, $_final_lines,$charset="euc-kr") {
           if (strtolower($charset) == 'euc-kr') # two bytes sequence rule
             $this->charset_rule='[\xb0-\xfd][\xa1-\xfe]|';
           else if (strtolower($charset) == 'utf-8') # three bytes sequence
             $this->charset_rule='[\xE1-\xEF][\x80-\xBF][\x80-\xBF]|\xE0[\xA0-\xBF][\x80-\xBF]|';
           
           list ($orig_words, $orig_stripped) = $this->_split($orig_lines);
  -        list ($final_words, $final_stripped) = $this->_split($final_lines);
  +        list ($_final_words, $_final_stripped) = $this->_split($_final_lines);
   
  -        $this->MappedDiff($orig_words, $final_words,
  -                          $orig_stripped, $final_stripped);
  +        $this->MappedDiff($orig_words, $_final_words,
  +                          $orig_stripped, $_final_stripped);
       }
   
       function _split($lines) {
  @@ -936,15 +936,15 @@
       }
   
       function final () {
  -        $final = new _HWLDF_WordAccumulator;
  +        $_final = new _HWLDF_WordAccumulator;
           
           foreach ($this->edits as $edit) {
               if ($edit->type == 'copy')
  -                $final->addWords($edit->final);
  -            elseif ($edit->final)
  -                $final->addWords($edit->final, 'ins');
  +                $_final->addWords($edit->_final);
  +            elseif ($edit->_final)
  +                $_final->addWords($edit->_final, 'ins');
           }
  -        return $final->getLines();
  +        return $_final->getLines();
       }
   }
   
  @@ -981,10 +981,10 @@
       function _deleted($lines) {
           $this->_lines($lines, "-", "diff-removed");
       }
  -    function _changed($orig, $final) {
  -        $diff = new WordLevelDiff($orig, $final);
  +    function _changed($orig, $_final) {
  +        $diff = new WordLevelDiff($orig, $_final);
           $this->_deleted($diff->orig());
  -        $this->_added($diff->final());
  +        $this->_added($diff->_final());
       }
   }
   
  
  
  


pyrasis     2004/10/12 23:38:54

  Modified:    locale/po ko.po
  Log:
  add korean translation of comment.
  
  Revision  Changes    Path
  1.12      +1 -1      moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- ko.po	2 Oct 2004 03:31:26 -0000	1.11
  +++ ko.po	12 Oct 2004 14:38:53 -0000	1.12
  @@ -111,7 +111,7 @@
   #: ../plugin/BlogChanges.php:409 ../plugin/processor/blog.php:85
   #, c-format
   msgid "%d comment"
  -msgstr ""
  +msgstr " %d"
   
   #: ../plugin/BlogChanges.php:409 ../plugin/processor/blog.php:85
   #, c-format
  
  
  


pyrasis     2004/10/12 23:43:41

  Modified:    .        wiki.php
  Log:
  fixed include locale php file bug.
  
  Revision  Changes    Path
  1.178     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.177
  retrieving revision 1.178
  diff -u -r1.177 -r1.178
  --- wiki.php	2 Oct 2004 02:40:13 -0000	1.177
  +++ wiki.php	12 Oct 2004 14:43:38 -0000	1.178
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.177 2004/10/02 02:40:13 wkpark Exp $
  +// $Id: wiki.php,v 1.178 2004/10/12 14:43:38 pyrasis Exp $
   //
  -$_revision = substr('$Revision: 1.177 $',1,-1);
  +$_revision = substr('$Revision: 1.178 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -3175,7 +3175,7 @@
   $lang= set_locale($DBInfo->lang,$DBInfo->charset);
   
   if (isset($locale)) {
  -  @include_once('locale/'.$lang.'/LC_MESSAGES/moniwiki.php') or
  +  if (!@include_once('locale/'.$lang.'/LC_MESSAGES/moniwiki.php'))
       @include_once('locale/'.substr($lang,0,2).'/LC_MESSAGES/moniwiki.php');
   } else if (substr($lang,0,2) != 'en') {
     if ($DBInfo->include_path) $dirs=explode(':',$DBInfo->include_path);
  
  
  


wkpark      2004/10/13 02:19:34

  Modified:    .        wiki.php
  Log:
  add "#noindex" instruction
  
  Revision  Changes    Path
  1.179     +18 -7     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.178
  retrieving revision 1.179
  diff -u -r1.178 -r1.179
  --- wiki.php	12 Oct 2004 14:43:38 -0000	1.178
  +++ wiki.php	12 Oct 2004 17:19:32 -0000	1.179
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.178 2004/10/12 14:43:38 pyrasis Exp $
  +// $Id: wiki.php,v 1.179 2004/10/12 17:19:32 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.178 $',1,-1);
  +$_revision = substr('$Revision: 1.179 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -433,7 +433,7 @@
       $this->logo_img= $this->imgs_dir.'/moniwiki-logo.gif';
       $this->logo_page= $this->frontpage;
       $this->logo_string= '<img src="'.$this->logo_img.'" alt="[logo]" border="0" align="middle" />';
  -    $this->metatags='<meta name="ROBOTS" content="NOINDEX,NOFOLLOW" />';
  +    $this->metatags='<meta name="robots" content="noindex,nofollow" />';
       $this->use_smileys=1;
       $this->hr="<hr class='wikiHr' />";
       $this->date_fmt= 'Y-m-d';
  @@ -1329,7 +1329,7 @@
   
     function get_instructions($body="") {
       global $DBInfo;
  -    $pikeys=array('#redirect','#action','#title','#keywords');
  +    $pikeys=array('#redirect','#action','#title','#keywords','#noindex');
       $pi=array();
       if (!$body) {
         if (!$this->page->exists()) return '';
  @@ -1372,7 +1372,7 @@
           #list($key,$val,$args)= explode(" ",$line,2); # XXX
           list($key,$val)= explode(" ",$line,2); # XXX
           $key=strtolower($key);
  -        if (in_array($key,$pikeys)) { $pi[$key]=$val; }
  +        if (in_array($key,$pikeys)) { $pi[$key]=$val ? $val:1; }
           else $notused[]=$line;
         }
       }
  @@ -2623,6 +2623,17 @@
             $plain=1;
         }
       }
  +
  +    if (isset($this->pi['#noindex'])) {
  +      $metatags='<meta name="robots" content="noindex,nofollow" />';
  +    } else {
  +      if ($options['metatags'])
  +        $metatags=$options['metatags'];
  +      else {
  +        $metatags=$DBInfo->metatags;
  +      }
  +    }
  +
       if (isset($options['trail']))
         $this->set_trailer($options['trail'],$this->page->name);
       else if ($DBInfo->origin)
  @@ -2653,7 +2664,7 @@
   <html xmlns="http://www.w3.org/1999/xhtml">
     <head>
     <meta http-equiv="Content-Type" content="text/html;charset=$DBInfo->charset" /> 
  -  $DBInfo->metatags
  +  $metatags
     $keywords
   EOS;
         print "  <title>$DBInfo->sitename: ".$options['title']."</title>\n";
  @@ -3347,7 +3358,7 @@
     }
   
     if ($action) {
  -    $DBInfo->metatags='<meta name="ROBOTS" content="NOINDEX,NOFOLLOW" />';
  +    $options['metatags']='<meta name="robots" content="noindex,nofollow" />';
   
       if (!$DBInfo->security->is_allowed($action,&$options)) {
         $msg=sprintf(_("You are not allowed to '%s'"),$action);
  
  
  


wkpark      2004/10/13 22:11:39

  Modified:    .        wiki.php wikilib.php
  Log:
  smart search for not found pages
  
  Revision  Changes    Path
  1.180     +13 -2     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.179
  retrieving revision 1.180
  diff -u -r1.179 -r1.180
  --- wiki.php	12 Oct 2004 17:19:32 -0000	1.179
  +++ wiki.php	13 Oct 2004 13:11:36 -0000	1.180
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.179 2004/10/12 17:19:32 wkpark Exp $
  +// $Id: wiki.php,v 1.180 2004/10/13 13:11:36 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.179 $',1,-1);
  +$_revision = substr('$Revision: 1.180 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -3264,6 +3264,17 @@
         return;
       }
       if (!$page->exists()) {
  +      $npage=str_replace(' ','',$page->name);
  +      if ($DBInfo->hasPage($npage)) {
  +        $options['value']=$npage;
  +        do_goto($formatter,$options);
  +        return;
  +      }
  +      $options['value']=$page->name;
  +      $options['check']=1;
  +      if (do_titlesearch($formatter,$options))
  +          return;
  +
         $formatter->send_header("Status: 404 Not found",$options);
   
         $twins=$DBInfo->metadb->getTwinPages($page->name,1);
  
  
  
  1.120     +12 -2     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.119
  retrieving revision 1.120
  diff -u -r1.119 -r1.120
  --- wikilib.php	4 Oct 2004 04:38:37 -0000	1.119
  +++ wikilib.php	13 Oct 2004 13:11:36 -0000	1.120
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.119 2004/10/04 04:38:37 wkpark Exp $
  +// $Id: wikilib.php,v 1.120 2004/10/13 13:11:36 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -891,11 +891,20 @@
     if ($ret['hits']==1) {
       $options['value']=$ret['value'];
       do_goto($formatter,$options);
  -    return;
  +    return true;
     }
  +  if (!$ret['hits'] and $options['check']) return false;
   
     $formatter->send_header("",$options);
     $formatter->send_title($ret['msg'],$formatter->link_url("FindPage"),$options);
  +
  +  if ($options['check']) {
  +    $button= $formatter->link_to("?action=edit",$formatter->icon['create']._
  +("Create this page"));
  +    print $button;
  +    print sprintf(_(" or click %s to fullsearch this page.\n"),$formatter->link_to("?action=fullsearch&amp;value=$options[page]",_("title")));
  +  }
  +
     print $out;
   
     if ($options['value'])
  @@ -905,6 +914,7 @@
   	 $ret['all']);
     $args['noaction']=1;
     $formatter->send_footer($args,$options);
  +  return true;
   }
   
   function do_post_savepage($formatter,$options) {
  
  
  


wkpark      2004/10/13 22:12:52

  Modified:    theme/ddt/css default.css
  Log:
  update
  
  Revision  Changes    Path
  1.3       +2 -2      moniwiki/theme/ddt/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/ddt/css/default.css,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- default.css	11 Aug 2004 12:01:59 -0000	1.2
  +++ default.css	13 Oct 2004 13:12:50 -0000	1.3
  @@ -129,7 +129,7 @@
     background-color: #FF0000;
   }
   
  -td.message {
  +div.message {
     margin-top: 6pt;
     background-color: #E8E8E8;
     border-style:solid;
  @@ -248,7 +248,7 @@
   li.blog-list { list-style-type: none;}
   
   /* HierarchicalWiki */
  -span.group {
  +div.wikiGroup {
     font-family:Tahoma,Lucida,sans-serif;
     font-size:10px;
   }
  
  
  


wkpark      2004/10/13 22:16:49

  Modified:    theme/blog footer.php
  Log:
  fixed calendar args
  
  Revision  Changes    Path
  1.3       +2 -2      moniwiki/theme/blog/footer.php
  
  Index: footer.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/blog/footer.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- footer.php	11 Aug 2004 12:01:55 -0000	1.2
  +++ footer.php	13 Oct 2004 13:16:49 -0000	1.3
  @@ -3,9 +3,9 @@
   <?
   print '<div style="font-size:10px">';
   if ($options['id']=='Anonymous')
  -  print macro_calendar($this,"blog,noweek",'Blog');
  +  print macro_calendar($this,"'Blog',blog,noweek,archive",'Blog');
   else
  -  print macro_calendar($this,"blog,noweek",$options['id']);
  +  print macro_calendar($this,"'$options[id]',blog,noweek",$options['id']);
   print '</div>';
   print "<br />\n";
   print '<font style="font-size:12px;"><b>';
  
  
  


wkpark      2004/10/13 22:17:47

  Modified:    theme/blog header.php
  Log:
  rearrange icons
  
  Revision  Changes    Path
  1.4       +2 -1      moniwiki/theme/blog/header.php
  
  Index: header.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/blog/header.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- header.php	11 Aug 2004 12:01:55 -0000	1.3
  +++ header.php	13 Oct 2004 13:17:47 -0000	1.4
  @@ -5,6 +5,7 @@
   include_once("plugin/login.php");
   include_once("plugin/RandomBanner.php");
   include_once("plugin/Calendar.php");
  +include_once("plugin/trackback.php");
   $login=macro_login($this);
   ?>
   <div id='wikiHeader'>
  @@ -14,7 +15,7 @@
   <tr><td><?=$goto_form?></td></tr>
   </table>
   </div>
  -<div id='wikiIcon'><?=$icons?><?=$upper_icon?><?=$rss_icon?><?=$home?></div>
  +<div id='wikiIcon'><?=$upper_icon?><?=$icons?><?=$rss_icon?><?=$home?></div>
   <div id='wikiMenu'><?=$menu?></div>
   <?=$msg?>
   <table border='0' width='100%'><tr valign='top'>
  
  
  


wkpark      2004/10/13 22:20:06

  Modified:    theme/nblog header.php footer.php
  Log:
  arrange icons, fixed args of calendar macro
  
  Revision  Changes    Path
  1.2       +1 -1      moniwiki/theme/nblog/header.php
  
  Index: header.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/nblog/header.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- header.php	11 Aug 2004 11:47:38 -0000	1.1
  +++ header.php	13 Oct 2004 13:20:05 -0000	1.2
  @@ -14,7 +14,7 @@
   <tr><td><?=$goto_form?></td></tr>
   </table>
   </div>
  -<div id='wikiIcon'><?=$icons?><?=$upper_icon?><?=$rss_icon?><?=$home?></div>
  +<div id='wikiIcon'><?=$upper_icon?><?=$icons?><?=$rss_icon?><?=$home?></div>
   <div id='wikiMenu'><?=$menu?></div>
   <?=$msg?>
   <table border='0' width='100%' cellpadding='0' cellspacing='0'><tr valign='top'>
  
  
  
  1.2       +2 -3      moniwiki/theme/nblog/footer.php
  
  Index: footer.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/nblog/footer.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- footer.php	11 Aug 2004 11:47:38 -0000	1.1
  +++ footer.php	13 Oct 2004 13:20:06 -0000	1.2
  @@ -3,11 +3,10 @@
   <?
   print '<div style="font-size:10px">';
   if ($options['id']=='Anonymous')
  -  print macro_calendar($this,"blog,noweek",'Blog');
  +  print macro_calendar($this,"'Blog',blog,noweek,archive",'Blog');
   else
  -  print macro_calendar($this,"blog,noweek",$options['id']);
  +  print macro_calendar($this,"'$options[id]',blog,noweek,archive",$options['id']);
   print '</div>';
  -print "<br />\n";
   print '<font style="font-size:12px;"><b>';
   print macro_RandomQuote($this);
   print '</b></font>';
  
  
  


wkpark      2004/10/13 22:20:29

  Modified:    theme/blog/css default.css
  Log:
  update css
  
  Revision  Changes    Path
  1.4       +6 -2      moniwiki/theme/blog/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/blog/css/default.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- default.css	11 Aug 2004 12:01:58 -0000	1.3
  +++ default.css	13 Oct 2004 13:20:28 -0000	1.4
  @@ -118,7 +118,7 @@
     background-color: #FF0000;
   }
   
  -td.message {
  +div.message {
     margin-top: 6pt;
     background-color: #E8E8E8;
     border-style:solid;
  @@ -255,9 +255,13 @@
   /* Calendar */
   td.day { background: #639DD3; text-align: center;}
   td.today { background:#fff; text-align: center;}
  +span.blogged {
  +  text-decoration:none;
  +  font-weight:bold; color:#2C5982; text-align: center;
  +}
   
   /* HierarchicalWiki */
  -span.group {
  +div.wikiGroup {
     font-family:Tahoma,Lucida,sans-serif;
     font-size:10px;
   }
  
  
  


wkpark      2004/10/13 22:20:30

  Modified:    theme/kz/css default.css
  Log:
  update css
  
  Revision  Changes    Path
  1.3       +6 -0      moniwiki/theme/kz/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/kz/css/default.css,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- default.css	11 Aug 2004 12:02:01 -0000	1.2
  +++ default.css	13 Oct 2004 13:20:29 -0000	1.3
  @@ -317,6 +317,12 @@
   	text-align: right;
   }
   
  +/* HierarchicalWiki */
  +div.wikiGroup {
  +  font-family:Tahoma,Lucida,sans-serif;
  +  font-size:10px;
  +}
  +
   /* enscript syntax */
   div.wikiPre i,div.wikiPre b{
     font-weight: normal;
  
  
  


wkpark      2004/10/13 22:20:31

  Modified:    theme/nblog/css default.css
  Log:
  update css
  
  Revision  Changes    Path
  1.2       +43 -9     moniwiki/theme/nblog/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/nblog/css/default.css,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- default.css	11 Aug 2004 11:47:38 -0000	1.1
  +++ default.css	13 Oct 2004 13:20:31 -0000	1.2
  @@ -1,3 +1,5 @@
  +@import url("../../../css/user.css");
  +
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;font-size:12px;
     color:#000;
  @@ -122,7 +124,7 @@
     background-color: #FF0000;
   }
   
  -td.message {
  +div.message {
     margin-top: 6pt;
     background-color: #E8E8E8;
     border-style:solid;
  @@ -178,6 +180,11 @@
     background-color:#8CAED1; 
     padding-left: 20px;
   }
  +.wikiNavigation {
  +  background-color:#E0E0E0; 
  +  padding-top: 5px;
  +  padding-bottom: 5px;
  +}
   
   #wikiOrigin {
     background-color:#eeeeee; 
  @@ -262,8 +269,8 @@
   /*  border-left: 0.8em dotted; /*solid #6A2525; */
   /*  border-right: 0.8em solid #6A2525; */
   /*  text-transform: lowercase; /* */
  -  margin: 10px 10px 0px 10px;
  -  padding: 5px 1em 5px 1em; 
  +/*  margin: 10px 10px 0px 10px; */
  +/*  padding: 5px 1em 5px 1em; */
   /*  margin-left: 20px; */
   /*  padding-left: 1em; /* */
   /*  text-indent: 10px; */
  @@ -285,7 +292,11 @@
   }
   
   #wikiContent {
  -  margin-left: 20px; 
  +  padding: 10px 10px 10px 10px; 
  +}
  +
  +#wikiExtra {
  +  padding-top: 1em;
   }
   
   #wikiFooter {
  @@ -318,21 +329,30 @@
   /* Blog CSS */
   a.purple { font-size: 10px; text-decoration:none;}
   div.blog { width:90%; padding: 0em 1em 0em 1em; }
  -div.blog-user { font-size:10px; }
  +span.blog-user { font-size:10px; }
   div.blog-title { font-size:16px; font-weight:bold; }
  -div.blog-comments { padding: 1em 1em 1em 2em; border-left: 1px dashed #7B9AC5; background-color:#DFF0FF;}
  +div.blog-comments { }
  +div.blog-comment { padding:1em 1em 1em 2em; margin-bottom:5px;border-left: 1px dashed #7B9AC5; background-color:#F2F6EC;}
  +div.blog-comments .seperator { display:none;}
  +div.blog-action { text-align:right; font-size:7px; }
   
   div.blog-date { font-size:18px; font-weight:bold; padding-bottom:5px;}
   span.blog-user { font-size:10px; }
   
  +div.blog-summary { margin-bottom:10px;}
  +
   div.trackback-hint { font-size: 10px; padding: 1em 1em 1em 1em;background-color: #eee;}
   /* Calendar */
   td.day { background: #e0e0e0; text-align: center;}
   td.today { background:#fff; text-align: center;}
  +span.blogged {
  +  text-decoration:none;
  +  font-weight:bold; color:#000000; text-align: center;
  +}
   .Calendar a{text-decoration:none;color:black;}
   
   /* HierarchicalWiki */
  -span.group {
  +div.wikiGroup {
     font-family:Tahoma,Lucida,sans-serif;
     font-size:10px;
   }
  @@ -344,9 +364,22 @@
     font-weight:bold;
   }
   
  -#wikiLogin > input {
  +#wikiLogin input {
  +  font-family:Verdana,sans-serif;
  +  //border:1px solid #848284;
  +  font-size:7px;
  +  font-weight:normal;
  +}
  +
  +#commentForm {
  +  padding:5px;
  +  background-color:#eeeeee;
  +}
  +
  +#commentForm input {
  +  //border:1px solid #848284;
  +  font-size:7px;
     font-family:Verdana,sans-serif;
  -  font-size:8px;
   }
   
   /* enscript syntax */
  @@ -368,3 +401,4 @@
   span.externalLink {
     display: none;
   }
  +
  
  
  


wkpark      2004/10/13 22:20:32

  Modified:    theme/orange/css default.css
  Log:
  update css
  
  Revision  Changes    Path
  1.3       +2 -2      moniwiki/theme/orange/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/orange/css/default.css,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- default.css	11 Aug 2004 12:02:05 -0000	1.2
  +++ default.css	13 Oct 2004 13:20:31 -0000	1.3
  @@ -117,7 +117,7 @@
     background-color: #FF0000;
   }
   
  -td.message {
  +div.message {
     margin-top: 6pt;
     background-color: #E8E8E8;
     border-style:solid;
  @@ -248,7 +248,7 @@
   td.today { background:#ffffff; text-align: center;}
   
   /* HierarchicalWiki */
  -span.group {
  +div.wikiGroup {
     font-family:Tahoma,Lucida,sans-serif;
     font-size:10px;
   }
  
  
  


wkpark      2004/10/13 22:20:32

  Modified:    theme/samplehome/css default.css
  Log:
  update css
  
  Revision  Changes    Path
  1.4       +2 -2      moniwiki/theme/samplehome/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/samplehome/css/default.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- default.css	11 Aug 2004 12:02:07 -0000	1.3
  +++ default.css	13 Oct 2004 13:20:32 -0000	1.4
  @@ -117,7 +117,7 @@
     background-color: #FF0000;
   }
   
  -td.message {
  +div.message {
     margin-top: 6pt;
     background-color: #E8E8E8;
     border-style:solid;
  @@ -245,7 +245,7 @@
   td.today { background:#e0e0e0; text-align: center;}
   
   /* HierarchicalWiki */
  -span.group {
  +div.wikiGroup {
     font-family:Tahoma,Lucida,sans-serif;
     font-size:10px;
   }
  
  
  


wkpark      2004/10/13 22:20:33

  Modified:    theme/sampleicon/css default.css
  Log:
  update css
  
  Revision  Changes    Path
  1.3       +7 -1      moniwiki/theme/sampleicon/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/sampleicon/css/default.css,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- default.css	11 Aug 2004 12:02:08 -0000	1.2
  +++ default.css	13 Oct 2004 13:20:33 -0000	1.3
  @@ -119,7 +119,7 @@
     background-color: #FF0000;
   }
   
  -td.message {
  +div.message {
     margin-top: 6pt;
     background-color: #E8E8E8;
     border-style:solid;
  @@ -234,6 +234,12 @@
   div.blog-date { font-size:18px; font-weight:bold; padding-bottom:5px;}
   span.blog-user { font-size:10px; }
   div.blog-action { font-size:10px; }
  +
  +/* HierarchicalWiki */
  +div.wikiGroup {
  +  font-family:Tahoma,Lucida,sans-serif;
  +  font-size:10px;
  +}
   
   /* enscript syntax */
   div.wikiPre i,div.wikiPre b{
  
  
  


wkpark      2004/10/13 22:20:34

  Modified:    theme/sampleleft/css default.css
  Log:
  update css
  
  Revision  Changes    Path
  1.4       +2 -2      moniwiki/theme/sampleleft/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/sampleleft/css/default.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- default.css	11 Aug 2004 12:02:10 -0000	1.3
  +++ default.css	13 Oct 2004 13:20:34 -0000	1.4
  @@ -117,7 +117,7 @@
     background-color: #FF0000;
   }
   
  -td.message {
  +div.message {
     margin-top: 6pt;
     background-color: #E8E8E8;
     border-style:solid;
  @@ -248,7 +248,7 @@
   td.today { background:#A1A2AF; text-align: center;}
   
   /* HierarchicalWiki */
  -span.group {
  +div.wikiGroup {
     font-family:Tahoma,Lucida,sans-serif;
     font-size:10px;
   }
  
  
  


wkpark      2004/10/14 21:25:36

  Added:       plugin/security community.php
  Log:
  add a new security class
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/security/community.php
  
  Index: community.php
  ===================================================================
  <?php
  # a community security plugin for the MoniWiki
  # $Id: community.php,v 1.1 2004/10/14 12:25:35 wkpark Exp $
  
  class Security_community extends Security {
    var $DB;
  
    function Security_community($DB="") {
      $this->DB=$DB;
      $this->public_pages=array_merge($DB->public_pages,array(
        'WikiSandBox','WikiSandbox','GuestBook','SandBox'));
    }
  
  # $options[page]: pagename
  # $options[id]: user id
  
    function writable($options="") {
      return $this->DB->_isWritable($options['page']);
    }
  
    function may_edit($action,$options) {
      if (!$options['page']) return 0; # XXX
      if (in_array($options['page'],$this->public_pages)) return 1;
      if ($options['id']=='Anonymous') {
        $options['err']=sprintf(_("You are not allowed to '%s' on this page"),$action);
        $options['err'].="\n"._("Please Login or make your ID on this Wiki ;)");
        return 0;
      }
      return 1;
    }
  
    function may_blog($action,$options) {
      if (!$options['page']) return 0; # XXX
      if ($options['id']=='Anonymous') {
        $options['err']=sprintf(_("You are not allowed to '%s' on this page"),$action);
        $options['err'].="\n"._("Please Login or make your ID on this Wiki ;)");
        return 0;
      }
      return 1;
    }
  
    function may_uploadfile($action,$options) {
      if (!$options['page']) return 0;
      if ($options['id']=='Anonymous') {
        $options['err']=sprintf(_("You are not allowed to '%s' on this page"),$action);
        $options['err'].="\n"._("Please Login or make your ID on this Wiki ;)");
        return 0;
      }
      return 1;
    }
  
    function is_allowed($action='read',$options) {
      $allowed_actions=array('theme','css','userform','bookmark','goto','dot',
        'trackback','rss_rc','rss','blogrss','urlencode','deletepage','titlesearch','info','download','comment');
      if (in_array(strtolower($action),$allowed_actions)) return 1;
      if ($options['id']=='Anonymous') {
        $options['err']=sprintf(_("You are not allowed to '%s' on this page."),$action);
        $options['err'].="\n"._("Please Login or make your ID on this Wiki ;)");
        return 0;
      }
      $method='may_'.$action;
      if (method_exists($this, $method)) {
        return $this->$method ($action,&$options);
      }
      return 1;
    }
  
    function is_protected($action="read",$options) {
      # password protected POST actions
      $protected_actions=array("rcs","rcspurge","chmod","backup","restore");
      $action=strtolower($action);
  
      if (in_array($action,$protected_actions)) {
        return 1;
      }
      return 0;
    }
  }
  
  ?>
  
  
  


wkpark      2004/10/14 21:26:38

  Modified:    .        wiki.php
  Log:
  add user based blocking feature
  
  Revision  Changes    Path
  1.181     +15 -4     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.180
  retrieving revision 1.181
  diff -u -r1.180 -r1.181
  --- wiki.php	13 Oct 2004 13:11:36 -0000	1.180
  +++ wiki.php	14 Oct 2004 12:26:38 -0000	1.181
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.180 2004/10/13 13:11:36 wkpark Exp $
  +// $Id: wiki.php,v 1.181 2004/10/14 12:26:38 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.180 $',1,-1);
  +$_revision = substr('$Revision: 1.181 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -3243,11 +3243,22 @@
     $formatter->refresh=$refresh;
   
     // check black list
  -  if ($DBInfo->blacklist) {
  +  if (!empty($DBInfo->blacklist)) {
       include_once 'lib/checkip.php';
       if (check_ip($DBInfo->blacklist, $_SERVER['REMOTE_ADDR'])) {
         $options['title']=_("You are in the black list");
  -      $options['msg']=_("Please contact wikimasters");
  +      $options['msg']=_("Please contact WikiMasters");
  +      do_invalid($formatter,$options);
  +      return;
  +    }
  +  }
  +  if (!empty($DBInfo->kiwirian)) {
  +    if (!is_array($DBInfo->kiwirian)) {
  +      $DBInfo->kiwirian=explode(':',$DBInfo->kiwirian);
  +    }
  +    if (in_array($options['id'],$DBInfo->kiwirian)) {
  +      $options['title']=_("You are blocked in this wiki");
  +      $options['msg']=_("Please contact WikiMasters");
         do_invalid($formatter,$options);
         return;
       }
  
  
  


wkpark      2004/10/14 21:28:22

  Modified:    .        wikilib.php
  Log:
  add a 'delete_history' option to minimize a risk of the deletepage action
  
  Revision  Changes    Path
  1.121     +3 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.120
  retrieving revision 1.121
  diff -u -r1.120 -r1.121
  --- wikilib.php	13 Oct 2004 13:11:36 -0000	1.120
  +++ wikilib.php	14 Oct 2004 12:28:22 -0000	1.121
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.120 2004/10/13 13:11:36 wkpark Exp $
  +// $Id: wikilib.php,v 1.121 2004/10/14 12:28:22 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -769,7 +769,8 @@
     $formatter->send_title($title,"",$options);
     print "<form method='post'>
   Comment: <input name='comment' size='80' value='' /><br />\n";
  -  print _("with revision history")." <input type='checkbox' name='history' />\n";
  +  if ($DBInfo->delete_history)
  +    print _("with revision history")." <input type='checkbox' name='history' />\n";
     if ($DBInfo->security->is_protected("DeletePage",$options))
       print "Password: <input type='password' name='passwd' size='20' value='' />
   Only WikiMaster can delete this page<br />\n";
  
  
  


wkpark      2004/10/16 00:35:03

  Modified:    .        wiki.php wikilib.php
  Log:
  fixed Twiki like link
  
  Revision  Changes    Path
  1.182     +7 -7      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.181
  retrieving revision 1.182
  diff -u -r1.181 -r1.182
  --- wiki.php	14 Oct 2004 12:26:38 -0000	1.181
  +++ wiki.php	15 Oct 2004 15:35:01 -0000	1.182
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.181 2004/10/14 12:26:38 wkpark Exp $
  +// $Id: wiki.php,v 1.182 2004/10/15 15:35:01 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.181 $',1,-1);
  +$_revision = substr('$Revision: 1.182 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -1605,7 +1605,7 @@
       return '';
     }
   
  -  function word_repl($word,$text='',$attr='',$nogroup=0) {
  +  function word_repl($word,$text='',$attr='',$nogroup=0,$islink=1) {
       global $DBInfo;
       $nonexists='nonexists_'.$DBInfo->nonexists;
       if ($word[0]=='"') { # ["extended wiki name"]
  @@ -1616,7 +1616,7 @@
         $page=normalize($word); # concat words
   
       list($page,$page_text,$gpage)=
  -      normalize_word($word,$this->group,$this->page->name,$nogroup);
  +      normalize_word($word,$this->group,$this->page->name,$nogroup,$islink);
       if ($text) {
         if (preg_match("/^(http|ftp).*\.(png|gif|jpeg|jpg)$/i",$text)) {
           $text=str_replace('&','&amp;',$text);
  @@ -3035,9 +3035,9 @@
           $okey=$key;
           $key=strtok('/');
           if ($key)
  -          $origin.=$DBInfo->arrow.$this->word_repl('"'.$parent.'"','','',1);
  +          $origin.=$DBInfo->arrow.$this->word_repl('"'.$parent.'"','','',1,0);
           else
  -          $origin.=$DBInfo->arrow.$this->word_repl('"'.$parent.'"',$okey,'',1);
  +          $origin.=$DBInfo->arrow.$this->word_repl('"'.$parent.'"',$okey,'',1,0);
         }
         # reset pagelinks
         $this->pagelinks=array();
  @@ -3058,7 +3058,7 @@
       $this->sister_on=0;
       $this->trail="";
       foreach ($trails as $page) {
  -      $this->trail.=$this->word_repl('"'.$page.'"','','',1).$DBInfo->arrow;
  +      $this->trail.=$this->word_repl('"'.$page.'"','','',1,0).$DBInfo->arrow;
       }
       $this->trail.= " $pagename";
       $this->pagelinks=array(); # reset pagelinks
  
  
  
  1.122     +4 -4      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.121
  retrieving revision 1.122
  diff -u -r1.121 -r1.122
  --- wikilib.php	14 Oct 2004 12:28:22 -0000	1.121
  +++ wikilib.php	15 Oct 2004 15:35:01 -0000	1.122
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.121 2004/10/14 12:28:22 wkpark Exp $
  +// $Id: wikilib.php,v 1.122 2004/10/15 15:35:01 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -70,7 +70,7 @@
     return $title;
   }
   
  -function normalize_word($word,$group='',$pagename='',$nogroup=0) {
  +function normalize_word($word,$group='',$pagename='',$nogroup=0,$islink=1) {
     if ($word[0]=='[') $word=substr($word,1,-1);
     if ($word[0]=='"') $word=substr($word,1,-1);
     $page=$word;
  @@ -105,7 +105,7 @@
   
     if ($page[0]=='/') { # SubPage
       $page=$pagename.$page;
  -  } else if ($tok=strtok($page,'.')) {
  +  } else if ($islink && $tok=strtok($page,'.')) {
   #    print $tok;
       if ($tok=='Main') {
         # Main.MoniWiki => MoniWiki
  @@ -1520,7 +1520,7 @@
   #    else
         $title=get_title($page);
   
  -    $out.= '<li>' . $formatter->word_repl('"'.$page.'"',$title);
  +    $out.= '<li>' . $formatter->word_repl('"'.$page.'"',$title,'',0,0);
       $keyname=$DBInfo->pageToKeyname(urldecode($page));
       if (is_dir($DBInfo->upload_dir."/$keyname"))
          $out.=' '.$formatter->link_tag(_urlencode($page),"?action=uploadedfiles",
  
  
  


wkpark      2004/10/16 01:10:24

  Modified:    .        wiki.php
  Log:
  fix last changes
  
  Revision  Changes    Path
  1.183     +9 -7      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.182
  retrieving revision 1.183
  diff -u -r1.182 -r1.183
  --- wiki.php	15 Oct 2004 15:35:01 -0000	1.182
  +++ wiki.php	15 Oct 2004 16:10:23 -0000	1.183
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.182 2004/10/15 15:35:01 wkpark Exp $
  +// $Id: wiki.php,v 1.183 2004/10/15 16:10:23 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.182 $',1,-1);
  +$_revision = substr('$Revision: 1.183 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -3012,19 +3012,21 @@
         if ($this->group) {
           $group=strtok($pagename,'~');
           $text=strtok('');
  -        $pagename=$group.'.'.$text;
  +        #$pagename=$group.'.'.$text;
  +        #$pagename='[wiki:'.$pagename.' '.$text.']';
           $main=strtok($text,'/');
         }
         if ($group)
           # represent: Main     > MoniWiki    > WikiName
           # real link: MoniWiki > Ko~MoniWiki > Ko~MoniWiki/WikiName
  -        $origin=$this->word_repl('"'.$main.'"',_("Main"),'',1);
  +        $origin=$this->word_repl('"'.$main.'"',_("Main"),'',1,0);
         else
           # represent: Home       > WikiName > SubPage
           # real link: $frontpage > WikiName > WikiName/SubPage
  -        $origin=$this->word_repl('"'.$DBInfo->frontpage.'"',$parent,'',1);
  +        $origin=$this->word_repl('"'.$DBInfo->frontpage.'"',$parent,'',1,0);
         $parent='';
   
  +      $text=strtok($text,'/');
         $key=strtok($pagename,'/');
         while($key !== false) {
           if ($parent) $parent.='/'.$key;
  @@ -3035,9 +3037,9 @@
           $okey=$key;
           $key=strtok('/');
           if ($key)
  -          $origin.=$DBInfo->arrow.$this->word_repl('"'.$parent.'"','','',1,0);
  +          $origin.=$DBInfo->arrow.$this->word_repl('"'.$parent.'"',$okey,'',1);
           else
  -          $origin.=$DBInfo->arrow.$this->word_repl('"'.$parent.'"',$okey,'',1,0);
  +          $origin.=$DBInfo->arrow.$this->word_repl('"'.$parent.'"',$okey,'',1);
         }
         # reset pagelinks
         $this->pagelinks=array();
  
  
  


wkpark      2004/10/16 01:13:02

  Modified:    .        wiki.php
  Log:
  more fixes :p
  
  Revision  Changes    Path
  1.184     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.183
  retrieving revision 1.184
  diff -u -r1.183 -r1.184
  --- wiki.php	15 Oct 2004 16:10:23 -0000	1.183
  +++ wiki.php	15 Oct 2004 16:13:00 -0000	1.184
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.183 2004/10/15 16:10:23 wkpark Exp $
  +// $Id: wiki.php,v 1.184 2004/10/15 16:13:00 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.183 $',1,-1);
  +$_revision = substr('$Revision: 1.184 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -3037,9 +3037,9 @@
           $okey=$key;
           $key=strtok('/');
           if ($key)
  -          $origin.=$DBInfo->arrow.$this->word_repl('"'.$parent.'"',$okey,'',1);
  +          $origin.=$DBInfo->arrow.$this->word_repl('"'.$parent.'"',$okey,'',1,0);
           else
  -          $origin.=$DBInfo->arrow.$this->word_repl('"'.$parent.'"',$okey,'',1);
  +          $origin.=$DBInfo->arrow.$this->word_repl('"'.$parent.'"',$okey,'',1,0);
         }
         # reset pagelinks
         $this->pagelinks=array();
  
  
  


pyrasis     2004/10/17 15:38:20

  Modified:    plugin/processor vim.php
  Log:
  fixed regular expression bug.
  
  Revision  Changes    Path
  1.20      +2 -2      moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- vim.php	21 Sep 2004 16:13:28 -0000	1.19
  +++ vim.php	17 Oct 2004 06:38:18 -0000	1.20
  @@ -6,7 +6,7 @@
   // Usage: {{{#!vim sh|c|sh|.. [number]
   // some codes
   // }}}
  -// $Id: vim.php,v 1.19 2004/09/21 16:13:28 wkpark Exp $
  +// $Id: vim.php,v 1.20 2004/10/17 06:38:18 pyrasis Exp $
   
   function processor_vim($formatter,$value,$options) {
     global $DBInfo;
  @@ -27,7 +27,7 @@
     if ($line)
       list($tag,$type,$extra)=preg_split('/\s+/',$line,3);
     $src=$value;
  -  if (!preg_match('/^\w$/',$type)) $type='nosyntax';
  +  if (!preg_match('/^\w+$/',$type)) $type='nosyntax';
   
     if ($extra == "number") 
       $option='+"set number" ';
  
  
  


pyrasis     2004/10/17 23:33:19

  Modified:    locale/po ko.po
  Log:
  add korean translation of next.
  
  Revision  Changes    Path
  1.13      +1 -1      moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- ko.po	12 Oct 2004 14:38:53 -0000	1.12
  +++ ko.po	17 Oct 2004 14:33:19 -0000	1.13
  @@ -133,7 +133,7 @@
   
   #: ../plugin/BlogChanges.php:444
   msgid "Next"
  -msgstr ""
  +msgstr ""
   
   #: ../plugin/Comment.php:48
   msgid "Comment"
  
  
  


wkpark      2004/10/18 00:40:55

  Modified:    plugin   Navigation.php
  Log:
  do not use Twiki like links
  
  Revision  Changes    Path
  1.5       +22 -7     moniwiki/plugin/Navigation.php
  
  Index: Navigation.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Navigation.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Navigation.php	2 Oct 2004 02:58:29 -0000	1.4
  +++ Navigation.php	17 Oct 2004 15:40:55 -0000	1.5
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Navigation(IndexPage)]]
   //
  -// $Id: Navigation.php,v 1.4 2004/10/02 02:58:29 wkpark Exp $
  +// $Id: Navigation.php,v 1.5 2004/10/17 15:40:55 wkpark Exp $
   
   function macro_Navigation($formatter,$value) {
     global $DBInfo;
  @@ -25,7 +25,7 @@
     $group='';#$formatter->group;
     $current=$formatter->page->name;
     if ($formatter->group)
  -    $current=preg_replace('/~/','.',$formatter->page->name,1);
  +    $current=$formatter->page->name;
     if (strpos($value,'~')) {
       $group=strtok($value,'~').'~';
       $page=strtok('');
  @@ -43,7 +43,8 @@
         if ($word[0]=='"') $word=substr($word,1,-1);
   
         list($index,$text,$dummy)= normalize_word($word,$group,$page);
  -      if ($group) $indices[]=preg_replace('/~/','.',$index,1);
  +      if ($group)
  +	$indices[]=$index;
         else $indices[]=$index;
         $count++;
       }
  @@ -52,7 +53,11 @@
     #print_r($indices);
     if ($count > 1) {
       $prev='';
  -    if ($group) $index=preg_replace('/~/','.',$value,1);
  +    $index_text=$index;
  +    if ($group) {
  +      $index=$value;
  +      $index_text=substr($index,strlen($group));
  +    }
       else $index=$value;
       $next=$indices[0];
     }
  @@ -77,11 +82,21 @@
         $formatter->query_string=$query;
       }
       $pnut='&laquo; ';
  -    if ($prev) $pnut.=$formatter->link_repl($prev," accesskey=\",\" ");
  +    if ($prev) {
  +      $prev_text=$prev;
  +      if (($p=strpos($prev,'~'))!==false)
  +        $prev_text=substr($prev,$p+1);
  +      $pnut.=$formatter->link_repl("[wiki:$prev $prev_text]"," accesskey=\",\" ");
  +    }
       if ($use_action) $formatter->query_string=$save;
  -    $pnut.=" | ".$formatter->link_repl($index)." | ";
  +    $pnut.=" | ".$formatter->link_repl("[wiki:$index $index_text]")." | ";
       if ($use_action) $formatter->query_string=$query;
  -    if ($next) $pnut.=$formatter->link_repl($next," accesskey=\".\" ");
  +    if ($next) {
  +      $next_text=$next;
  +      if (($p=strpos($next,'~'))!==false)
  +        $next_text=substr($next,$p+1);
  +      $pnut.=$formatter->link_repl("[wiki:$next $next_text]"," accesskey=\".\" ");
  +    }
       $pnut.=' &raquo;';
       if ($use_action) $formatter->query_string=$save;
     }
  
  
  


wkpark      2004/10/18 00:42:14

  Modified:    .        wiki.php
  Log:
  add $use_twikilink option
  
  Revision  Changes    Path
  1.185     +3 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.184
  retrieving revision 1.185
  diff -u -r1.184 -r1.185
  --- wiki.php	15 Oct 2004 16:13:00 -0000	1.184
  +++ wiki.php	17 Oct 2004 15:42:14 -0000	1.185
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.184 2004/10/15 16:13:00 wkpark Exp $
  +// $Id: wiki.php,v 1.185 2004/10/17 15:42:14 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.184 $',1,-1);
  +$_revision = substr('$Revision: 1.185 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -1615,6 +1615,7 @@
         #$page=preg_replace("/\s+/","",$word); # concat words
         $page=normalize($word); # concat words
   
  +    if (!$DBInfo->use_twikilink) $islink=0;
       list($page,$page_text,$gpage)=
         normalize_word($word,$this->group,$this->page->name,$nogroup,$islink);
       if ($text) {
  
  
  


wkpark      2004/10/18 00:57:43

  Modified:    .        monisetup.php wiki.php
  Log:
  $timezone option added for Windows
  
  Revision  Changes    Path
  1.19      +5 -2      moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- monisetup.php	2 Oct 2004 03:43:41 -0000	1.18
  +++ monisetup.php	17 Oct 2004 15:57:42 -0000	1.19
  @@ -1,7 +1,7 @@
  -<?
  +<?php
   // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.18 2004/10/02 03:43:41 wkpark Exp $
  +// $Id: monisetup.php,v 1.19 2004/10/17 15:57:42 wkpark Exp $
   
   class MoniConfig {
     function MoniConfig($configfile="config.php") {
  @@ -73,6 +73,9 @@
       $user = getenv('LOGNAME');
       $user = $user ? $user : get_current_user();
       $config['rcs_user']="'".$user."'";
  +
  +    if(getenv("OS")=="Windows_NT")
  +      $config['timezone']="'LT'";
   
       if (!file_exists('wikilib.php')) {
         $config['include_path']="'.:/usr/local/share/moniwiki:/usr/share/moniwiki'";
  
  
  
  1.186     +4 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.185
  retrieving revision 1.186
  diff -u -r1.185 -r1.186
  --- wiki.php	17 Oct 2004 15:42:14 -0000	1.185
  +++ wiki.php	17 Oct 2004 15:57:43 -0000	1.186
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.185 2004/10/17 15:42:14 wkpark Exp $
  +// $Id: wiki.php,v 1.186 2004/10/17 15:57:43 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.185 $',1,-1);
  +$_revision = substr('$Revision: 1.186 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -572,6 +572,8 @@
         putenv("PATH=".$this->path);
       if ($this->rcs_user)
         putenv('LOGNAME='.$this->rcs_user);
  +    if ($this->timezone)
  +      putenv('TZ='.$this->timezone);
   
       $this->set_intermap();
       if ($this->shared_metadb)
  
  
  


wkpark      2004/10/18 01:05:09

  Modified:    .        config.php.default
  Log:
  change some default configs and add new options
  
  Revision  Changes    Path
  1.14      +7 -2      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- config.php.default	21 Sep 2004 15:52:44 -0000	1.13
  +++ config.php.default	17 Oct 2004 16:05:08 -0000	1.14
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.13 2004/09/21 15:52:44 wkpark Exp $
  +# $Id: config.php.default,v 1.14 2004/10/17 16:05:08 wkpark Exp $
   #
   $sitename='UnnamedWiki';
   $data_dir= './data';
  @@ -18,7 +18,7 @@
   $logo_img= $imgs_dir.'/moniwiki-logo.gif';
   $query_prefix= '/';
   
  -$css_url= $url_prefix.'/css/default.css';
  +$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;
  @@ -96,4 +96,9 @@
   
   #$url_schemas='mms';
   #$blacklist='127.0.0.0/24:192.168.1.0/24:192.168.1.67';
  +#$kiwirian=array('Kiwirian','Hello');
  +#$kiwirian='Kiwirian:Hello';
  +#$delete_history=1;
  +#$use_twikilink=1;
  +#$timezone='KST'; // for windows
   ?>
  
  
  


wkpark      2004/10/18 01:12:10

  Modified:    plugin   Attachment.php
  Log:
  support [attachment:filename text] syntax like as MoinMoin
  
  Revision  Changes    Path
  1.9       +8 -3      moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Attachment.php	2 Sep 2004 10:00:01 -0000	1.8
  +++ Attachment.php	17 Oct 2004 16:12:07 -0000	1.9
  @@ -5,14 +5,18 @@
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.8 2004/09/02 10:00:01 wkpark Exp $
  +// $Id: Attachment.php,v 1.9 2004/10/17 16:12:07 wkpark Exp $
   
   function macro_Attachment($formatter,$value) {
     global $DBInfo;
   
     $attr='';
     $myaction='download';
  -
  +  $text='';
  +  if (($p=strpos($value,' ')) !== false) { // XXX for [attachment:my.ext hello]
  +    $text=substr($value,$p);
  +    $value=substr($value,0,$p);
  +  }
   
     if (($dummy=strpos($value,'?'))) {
       # for attachment: syntax
  @@ -56,6 +60,7 @@
     if (!$file) return 'attachment:/';
   
     $upload_file=$dir.'/'.$file;
  +  if (!$text) $text=$file;
   
     if (file_exists($upload_file)) {
       if (preg_match("/\.(png|gif|jpeg|jpg)$/i",$upload_file)
  @@ -68,7 +73,7 @@
       } else {
   
         return "<span class=\"attach\"><img align='middle' src='$DBInfo->imgs_dir_interwiki".'uploads-16.png\' />'.
  -        $formatter->link_tag(_urlencode($pagename),"?action=$myaction&amp;value=$value",$file).'</span>';
  +        $formatter->link_tag(_urlencode($pagename),"?action=$myaction&amp;value=$value",$text).'</span>';
       }
     }
     if ($pagename == $formatter->page->name)
  
  
  


wkpark      2004/10/18 01:16:58

  Added:       css      nlog.css
  Log:
  add new css and change it as a default css
  
  Revision  Changes    Path
  1.1                  moniwiki/css/nlog.css
  
  Index: nlog.css
  ===================================================================
  /* MoniWiki CSS 2003/11/01 by wkpark */
  @import url("user.css");
  
  body {
    font-family:Georgia,Verdana,Lucida,sans-serif;font-size:12px;
    background-color:#FFFFFF;
    color:#000;
    padding: 0;
    margin: auto;
    width: 700px;
  }
  
  a {color:#000080;text-decoration:underline}
  a:hover {color:#808080;text-decoration:none}
  
  tt.wiki {font-family:Monotype,Lucida Console,lucida,monospace;font-size:12px;}
  tt.foot {
    font-family:Tahoma,lucida,monospace;
    font-size:11px;
    vertical-align: super;
  }
  
  tt.sister {
    font-family:Tahoma,lucida,monospace;
    font-size:11px;
    vertical-align: super;
    text-decoration: none;
  }
  
  pre.wiki {
    padding-left:6px;
    padding-top:6px; 
    font-family:Lucida TypeWriter,monotype,lucida,monospace;font-size:14px;
    background-color:#000000;
    color:#FFD700; /* gold */
  }
  
  pre.console {
    background-color: #000000;
    color: #E0E0E0;
    padding: .25em ;
    border: 2px inset #808080;
  }
  
  pre.quote {
    padding-left:6px;
    padding-top:6px;
    white-space:pre-wrap;
    white-space: -moz-pre-wrap; 
    font-family:Georgia,monotype,lucida,monospace;font-size:14px;
    background-color: #E9ECEF;
  }
  
  table.wiki {
  //  border: 1px outset #E2ECE5;
  }
  
  td.wiki {
  //  border: 1px inset #E2ECE5;
  }
  
  tr.wiki {
    background-color: #E9ECEF;
  }
  
  textarea.wiki { width:100%; }
  
  th.info {
    background-color:#E2ECE2;
  /*  border-collapse: collapse; */
  /*  border: 1px solid silver; */
  }
  
  td.info {
    background-color:#E2ECE2;
  }
  
  h1,h2,h3,h4,h5 {
    font-family:Tahoma,monospace;
    padding-left:6px;
    border-bottom: 2px solid #dddddd;
  }
  
  div.diff-added {
    font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
    font-size:12px;
    background-color:#E0FFE0;
    color:black;
  }
  
  div.diff-removed {
    font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
    font-size:12px;
    background-color:#E9EAB8;
    color:black;
  }
  
  div.diff-sep {
    font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
    font-size:12px;
    background-color:#000000;
    color:#FFD700; /* gold */
  }
  
  span.diff-added, ins.diff-added {
    color:black;
    background-color: #60FF60;
    text-decoration: none;
  }
  
  span.diff-removed, del.diff-removed {
    color:black;
    background-color: #FF0000;
  }
  
  div.message {
    margin-top: 6pt;
    background-color: #E8E8E8;
    border-style:solid;
    border-width:1pt;
    border-color:#990000;
    color:#440000;
    padding:0px;
    width:100%;
  }
  
  .highlight {
    background-color:#FFFF40;
  }
  
  table.goto {
    background-color: #002B2C;
  }
  
  span.goto, input.goto {
    font-family:Tahoma,Lucida,sans-serif;
    font-size:10px;
  }
  
  table.closure, td.closure{
    background-color: #E9ECEF;
  }
  
  /*  */
  .wikiHr {
    border:0px solid;
    padding: 0px 0px; /* */
    margin-top:0px;
    height:1px;  
  /* background: #000 url(hr1.gif) no-repeat scroll center; */
  }
  
  #wikiHeader {
    padding: 0.5em 0.2em 0em 1.5em;
  }
  
  #wikiHeader a:link {color:black;}
  #wikiHeader a:visited {color:#505050;}
  
  .wikiTitle {
    font-family:Trebuchet MS,Georgia,Verdana,sans-serif;
    font-size:28px;
    font-weight:bold;
    text-decoration: none;
  }
  
  /* HierarchicalWiki */
  div.wikiGroup {
    font-family:Tahoma,Lucida,sans-serif;
    font-size:10px;
  }
  
  
  #wikiMenu {
    padding: 0.2em 0.2em 0.2em 0.2em;
    border-bottom:2px solid #8d8d8d;
    border-top:2px solid #8d8d8d;
  }
  
  #wikiTrailer, #wikiOrigin {
    padding-left: 20px;
    padding-bottom: 5px;
  }
  
  
  #wikiBody {
    color: black;
    background-color: #fff;
    border: 1px dotted #b0b0b0;
    margin: 0px 10px 0px 10px;
  }
  
  #wikiBody a {color:#000080;text-decoration:underline}
  #wikiBody a:hover {color:#808080;text-decoration:none}
  
  #wikiContent {
    margin: 10px 10px 10px 20px; 
  }
  
  #wikiFooter {
    padding: 0.5em 2em;
  /*  background-color:yellow; */
  }
  
  #wikiHint {
    font-family:Georgia,Verdana,Lucida,sans-serif;
    font-size:10px;
    background-color:#E2DAE2;
  }
  
  #wikiSister {
  /*  background-color:lightgreen; /* */
  }
  
  #wikiPreview {
    border: 2px solid #a0a0a0;
    margin: 5px 5px 5px 5px;
    padding: 5px 1em 5px 1em;
  }
  
  #wikiIcon {
    float:right;
    padding: 3px 10px;
    text-align: right;
    vertical-align: middle;
    margin-left: 10px;
  }
  
  #wikiExtra {
    padding:10px;
  }
  
  div.indent { padding-left:2em; }
  
  div.hint { font-size: 10px; background-color: #369; color:white;}
  a.purple { font-size: 10px; text-decoration:none;}
  
  /* Blog CSS */
  a.purple { font-size: 10px; text-decoration:none;}
  div.blog { width:90%; padding: 0em 1em 0em 1em; }
  div.blog-user { font-size:10px; }
  div.blog-title { font-size:16px; font-weight:bold; }
  div.blog-comments { padding: 1em 1em 1em 2em; border-left: 1px dashed #7B9AC5; background-color:#DFF0FF;}
  
  div.blog-date { font-size:18px; font-weight:bold; padding-bottom:5px;}
  span.blog-user { font-size:10px; }
  
  div.trackback-hint { font-size: 10px; padding: 1em 1em 1em 1em;background-color: #eee;}
  /* Calendar */
  td.day { background:#e5d9c7; text-align: center;}
  td.today { background:#ffffff; text-align: center;}
  
  
  /* enscript syntax */
  div.wikiPre i,div.wikiPre b{
    font-weight: normal;
    font-style: normal;
  }
  
  img.imgLeft {
    margin-right : 15px;
    margin-bottom : 5px;
  }
  
  img.imgRight {
    margin-left : 10px;
    margin-bottom : 5px;
  }
  
  span.externalLink {
    display: none;
  }
  
  .purple a {
      font-family: Verdana, Trebuchet, Arial, Helvetica;
      font-style: normal;
      font-weight: bold;
      font-size: x-small;
      text-decoration: none;
      color: #C8A8FF;  /* light purple */
  }
  
  
  


wkpark      2004/10/18 01:37:14

  Modified:    .        Makefile
  Log:
  add some missing dirs etc.
  
  Revision  Changes    Path
  1.2       +3 -1      moniwiki/Makefile
  
  Index: Makefile
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/Makefile,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Makefile	26 Aug 2004 18:18:13 -0000	1.1
  +++ Makefile	17 Oct 2004 16:37:14 -0000	1.2
  @@ -3,7 +3,9 @@
   install: moni-install
   	mkdir -p $(DESTDIR)$(prefix)/share/moniwiki
   	mkdir -p $(DESTDIR)$(prefix)/share/moniwiki/bin
  -	cp -ar data wikiseed imgs css $(DESTDIR)$(prefix)/share/moniwiki
  +	mkdir -p $(DESTDIR)$(prefix)/share/moniwiki/data
  +	cp data/*.* $(DESTDIR)$(prefix)/share/moniwiki/data
  +	cp -ar wikiseed imgs css $(DESTDIR)$(prefix)/share/moniwiki
   	cp -ar lib plugin $(DESTDIR)$(prefix)/share/moniwiki
   	cp -ar locale tools $(DESTDIR)$(prefix)/share/moniwiki
   	cp wiki.php wikilib.php $(DESTDIR)$(prefix)/share/moniwiki
  
  
  


wkpark      2004/10/18 01:38:03

  Modified:    .        moni-install.in
  Log:
  do not make a index.html
  
  Revision  Changes    Path
  1.2       +0 -1      moniwiki/moni-install.in
  
  Index: moni-install.in
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/moni-install.in,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- moni-install.in	26 Aug 2004 18:18:13 -0000	1.1
  +++ moni-install.in	17 Oct 2004 16:38:02 -0000	1.2
  @@ -11,7 +11,6 @@
   [ ! -d theme ] && cp -a $INSTDIR/theme .
   [ ! -d css ] && cp -a $INSTDIR/css .
   [ ! -d applets ] && cp -a $INSTDIR/applets .
  -[ ! -f index.html ] && cp -a $INSTDIR/index.html .
   cp $INSTDIR/{monisetup.*,secure.sh,config.php.default} .
   
   cat <<PHP >index.php
  
  
  


wkpark      2004/10/18 01:45:27

  Modified:    locale/po fr.po ko.po moniwiki.pot
  Log:
  update
  
  Revision  Changes    Path
  1.10      +92 -88    moniwiki/locale/po/fr.po
  
  Index: fr.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/fr.po,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- fr.po	2 Oct 2004 03:31:26 -0000	1.9
  +++ fr.po	17 Oct 2004 16:45:26 -0000	1.10
  @@ -3,7 +3,7 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: MoniWiki 1.0\n"
  -"POT-Creation-Date: 2004-10-02 12:33+0900\n"
  +"POT-Creation-Date: 2004-10-18 01:48+0900\n"
   "PO-Revision-Date: 2003-08-17 22:51+0900\n"
   "Last-Translator: Serge Stinckwich <Serge.Stinckwich@info.unicaen.fr>\n"
   "Language-Team: fr <fr@li.org>\n"
  @@ -12,13 +12,13 @@
   "Content-Transfer-Encoding: 8bit\n"
   
   # ../plugin/Attachment.php:24
  -#: ../plugin/Attachment.php:75
  +#: ../plugin/Attachment.php:80
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr "Tlcharger le nouvel attachement \"%s\""
   
   # ../plugin/Attachment.php:24
  -#: ../plugin/Attachment.php:78
  +#: ../plugin/Attachment.php:83
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
  @@ -160,7 +160,7 @@
   msgstr "commentaire"
   
   # ../wikilib.php:482
  -#: ../plugin/Comment.php:49 ../wikilib.php:606
  +#: ../plugin/Comment.php:49 ../wikilib.php:607
   msgid "Preview"
   msgstr "Prvisualisation"
   
  @@ -247,7 +247,7 @@
   msgstr ""
   
   # ../wikilib.php:1483
  -#: ../plugin/FullSearch.php:103 ../wikilib.php:1724
  +#: ../plugin/FullSearch.php:103 ../wikilib.php:1736
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "Expression de recherche \"%s\" invalide"
  @@ -263,7 +263,7 @@
   msgstr ""
   
   # ../wikilib.php:769
  -#: ../plugin/Gallery.php:277 ../plugin/Gallery.php:280 ../wikilib.php:965
  +#: ../plugin/Gallery.php:277 ../plugin/Gallery.php:280 ../wikilib.php:977
   #, c-format
   msgid "Go back or return to %s"
   msgstr "Revenir en arrire ou retourner  %s"
  @@ -337,7 +337,7 @@
   msgstr "TwinPages de %s"
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../plugin/TwinPages.php:18 ../wiki.php:1999 ../wiki.php:3262
  +#: ../plugin/TwinPages.php:18 ../wiki.php:2002 ../wiki.php:3300
   msgid "See TwinPages: "
   msgstr "Voir TwinPages: "
   
  @@ -368,12 +368,12 @@
   msgstr ""
   
   # ../plugin/rename.php:36
  -#: ../plugin/UploadedFiles.php:121 ../plugin/rename.php:69 ../wikilib.php:734
  +#: ../plugin/UploadedFiles.php:121 ../plugin/rename.php:69 ../wikilib.php:735
   msgid "Password"
   msgstr "Mot de passe"
   
   # ../wikilib.php:550
  -#: ../plugin/UploadedFiles.php:122 ../wikilib.php:712
  +#: ../plugin/UploadedFiles.php:122 ../wikilib.php:713
   msgid "Delete selected files"
   msgstr "Effacer les fichiers slectionns"
   
  @@ -407,7 +407,7 @@
   msgid "Voted successfully"
   msgstr "Vote russi"
   
  -#: ../plugin/WordIndex.php:65 ../wikilib.php:1523
  +#: ../plugin/WordIndex.php:65 ../wikilib.php:1535
   msgid "Others"
   msgstr ""
   
  @@ -478,7 +478,7 @@
   msgstr "Aucune page de manuel trouv"
   
   # ../plugin/minilogin.php:22 ../wikilib.php:1076
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1274
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1286
   msgid "Login or Join"
   msgstr "Se connecter ou se joindre "
   
  @@ -623,7 +623,7 @@
   msgstr "Seulement le WikiMaster peut renommer cette page"
   
   # ../plugin/rename.php:39 ../wikilib.php:588
  -#: ../plugin/rename.php:71 ../wikilib.php:771
  +#: ../plugin/rename.php:71 ../wikilib.php:773
   msgid "with revision history"
   msgstr "avec l'historique de rvision"
   
  @@ -916,103 +916,107 @@
   msgstr ""
   
   # ../wiki.php:850
  -#: ../wiki.php:888
  +#: ../wiki.php:890
   #, c-format
   msgid "Rename %s to %s"
   msgstr "Renommer %s en %s"
   
   # ../plugin/restore.php:27
  -#: ../wiki.php:1067
  +#: ../wiki.php:1069
   msgid "File does not exists"
   msgstr ""
   
   # ../wiki.php:1824
  -#: ../wiki.php:1995
  +#: ../wiki.php:1998
   #, c-format
   msgid "See %s"
   msgstr "Voir %s"
   
   # ../wiki.php:1824
  -#: ../wiki.php:1995
  +#: ../wiki.php:1998
   msgid "TwinPages"
   msgstr ""
   
   # ../wiki.php:2110
  -#: ../wiki.php:2315
  +#: ../wiki.php:2318
   msgid "Revision History"
   msgstr "Historique de rvision"
   
   # ../wiki.php:2211 ../wiki.php:2360
  -#: ../wiki.php:2416 ../wiki.php:2564
  +#: ../wiki.php:2419 ../wiki.php:2567
   msgid "No older revisions available"
   msgstr "Aucune rvision plus ancienne disponible"
   
   # ../wiki.php:2338 ../wiki.php:2373 ../wikilib.php:770
  -#: ../wiki.php:2543 ../wiki.php:2581 ../wikilib.php:966
  +#: ../wiki.php:2546 ../wiki.php:2584 ../wikilib.php:978
   msgid "No difference found"
   msgstr "Aucune diffrence trouv"
   
   # ../wiki.php:2341
  -#: ../wiki.php:2545
  +#: ../wiki.php:2548
   msgid "Difference between yours and the current"
   msgstr "Diffrence entre votre version et la courante"
   
   # ../wiki.php:2376
  -#: ../wiki.php:2583
  +#: ../wiki.php:2586
   msgid "Difference between versions"
   msgstr "Diffrence entre les versions"
   
   # ../wiki.php:2378
  -#: ../wiki.php:2585
  +#: ../wiki.php:2588
   #, c-format
   msgid "Difference between r%s and r%s"
   msgstr "Diffrence entre r%s et r%s"
   
   # ../wiki.php:2382
  -#: ../wiki.php:2588
  +#: ../wiki.php:2591
   #, c-format
   msgid "Difference between r%s and the current"
   msgstr "Diffrence entre r%s et la version courante"
   
   # ../locale/dummy.php:6 ../wiki.php:2553
  -#: ../wiki.php:2782 ../locale/dummy.php:6
  +#: ../wiki.php:2796 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "ditionTexte"
   
   # ../wiki.php:2555
  -#: ../wiki.php:2784
  +#: ../wiki.php:2798
   msgid "NotEditable"
   msgstr "Pasditable"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wiki.php:2786 ../locale/dummy.php:6
  +#: ../wiki.php:2800 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "MontrePage"
   
   # ../locale/dummy.php:3 ../locale/dummy.php:5 ../wiki.php:2558
  -#: ../wiki.php:2787 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:2801 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "TrouvePage"
   
  -#: ../wiki.php:3010
  +#: ../wiki.php:3025
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:3238
  +#: ../wiki.php:3254
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:3239
  -msgid "Please contact wikimasters"
  +#: ../wiki.php:3255 ../wiki.php:3266
  +msgid "Please contact WikiMasters"
  +msgstr ""
  +
  +#: ../wiki.php:3265
  +msgid "You are blocked in this wiki"
   msgstr ""
   
   # ../wiki.php:2945 ../wiki.php:2948
  -#: ../wiki.php:3264 ../wiki.php:3267
  +#: ../wiki.php:3302 ../wiki.php:3305 ../wikilib.php:904
   msgid "Create this page"
   msgstr "Crer cette page"
   
   # ../wiki.php:2950
  -#: ../wiki.php:3269
  +#: ../wiki.php:3307 ../wikilib.php:906
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
  @@ -1020,41 +1024,41 @@
   "page.\n"
   
   # ../wiki.php:2950
  -#: ../wiki.php:3269
  +#: ../wiki.php:3307 ../wikilib.php:906
   msgid "title"
   msgstr "titre"
   
   # ../wiki.php:2956
  -#: ../wiki.php:3275
  +#: ../wiki.php:3313
   msgid " or alternativly, use one of these templates:\n"
   msgstr " ou alternativement, utiliser un de ces modles de page :\n"
   
   # ../wikilib.php:427
  -#: ../wiki.php:3278
  +#: ../wiki.php:3316
   msgid "To create your own templates, add a page with a 'Template' suffix.\n"
   msgstr ""
   "Pour crer vos propres modles de pages, ajouter une page avec lesuffix "
   "'Template'.\n"
   
   # ../wiki.php:3009
  -#: ../wiki.php:3353
  +#: ../wiki.php:3391
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "Vous n'tes pas autoris  '%s'"
   
   # ../wiki.php:3021
  -#: ../wiki.php:3365
  +#: ../wiki.php:3403
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "Impossible de pouvoir \"%s\" !"
   
   # ../wiki.php:3024
  -#: ../wiki.php:3368
  +#: ../wiki.php:3406
   msgid "Please enter the valid password"
   msgstr "Merci d'entrer un mot de passe valide"
   
   # ../wikilib.php:368
  -#: ../wikilib.php:481
  +#: ../wikilib.php:482
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -1087,214 +1091,214 @@
   "Les espaces aprs un tableau ou un titre ne sont pas autoriss.<br />\n"
   
   # ../wikilib.php:425
  -#: ../wikilib.php:541
  +#: ../wikilib.php:542
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   "Utiliser un des modles de pages qui suivent pour une premirecration :\n"
   
   # ../wikilib.php:427
  -#: ../wikilib.php:543
  +#: ../wikilib.php:544
   msgid "To create your own templates, add a page with a 'Template' suffix."
   msgstr ""
   "Pour crer vos propres modles de pages, ajouter une page avec lesuffix "
   "'Template'."
   
   # ../wikilib.php:443
  -#: ../wikilib.php:559
  +#: ../wikilib.php:560
   msgid "Skip to preview"
   msgstr "Aller  la prvisualisation"
   
   # ../wikilib.php:445
  -#: ../wikilib.php:561
  +#: ../wikilib.php:562
   msgid "ReduceEditor"
   msgstr "Rduirediteur"
   
  -#: ../wikilib.php:562
  +#: ../wikilib.php:563
   msgid "EnlargeEditor"
   msgstr ""
   
   # ../locale/dummy.php:6 ../wikilib.php:448
  -#: ../wikilib.php:566 ../locale/dummy.php:6
  +#: ../wikilib.php:567 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
   # ../wikilib.php:449
  -#: ../wikilib.php:567
  +#: ../wikilib.php:568
   msgid "HelpOnEditing"
   msgstr ""
   
   # ../wikilib.php:462
  -#: ../wikilib.php:584
  +#: ../wikilib.php:585
   #, c-format
   msgid "Describe %s here"
   msgstr "Dcrire %s ici"
   
   # ../wikilib.php:476
  -#: ../wikilib.php:600
  +#: ../wikilib.php:601
   msgid "--Select Category--"
   msgstr "-- Slectionner une catgorie"
   
   # ../wikilib.php:483 ../wikilib.php:1079
  -#: ../wikilib.php:607 ../wikilib.php:1277
  +#: ../wikilib.php:608 ../wikilib.php:1289
   msgid "Save"
   msgstr "Sauvegarder"
   
   # ../wikilib.php:484
  -#: ../wikilib.php:608
  +#: ../wikilib.php:609
   msgid "Summary of Change"
   msgstr "Sommaire des modifications"
   
   # ../wikilib.php:507
  -#: ../wikilib.php:650
  +#: ../wikilib.php:651
   #, c-format
   msgid "Info. for %s"
   msgstr "Information sur %s"
   
   # ../wikilib.php:517
  -#: ../wikilib.php:660
  +#: ../wikilib.php:661
   msgid "406 Not Acceptable"
   msgstr ""
   
   # ../wikilib.php:519
  -#: ../wikilib.php:665
  +#: ../wikilib.php:666
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s n'est pas une action valide"
   
   # ../wikilib.php:521
  -#: ../wikilib.php:667
  +#: ../wikilib.php:668
   msgid "Is it valid action ?"
   msgstr "Est-ce que c'est une action valide ?"
   
   # ../wikilib.php:540
  -#: ../wikilib.php:700
  +#: ../wikilib.php:701
   #, c-format
   msgid "File '%s' is deleted"
   msgstr "Le fichier '%s' est effac"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:702
  +#: ../wikilib.php:703
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr "Impossible d'effacer '%s'"
   
   # ../wikilib.php:545
  -#: ../wikilib.php:707
  +#: ../wikilib.php:708
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr "Le rpertoire '%s' est effac"
   
   # ../wikilib.php:547
  -#: ../wikilib.php:709
  +#: ../wikilib.php:710
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr "Impossible d'effacer le rpertoire '%s'"
   
   # ../wikilib.php:557 ../wikilib.php:559
  -#: ../wikilib.php:719 ../wikilib.php:739
  +#: ../wikilib.php:720 ../wikilib.php:740
   msgid "No files are selected !"
   msgstr "Aucun fichier n'est slectionn !"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:732
  +#: ../wikilib.php:733
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
   # ../locale/dummy.php:5
  -#: ../wikilib.php:735
  +#: ../wikilib.php:736
   msgid "Delete"
   msgstr ""
   
   # ../wikilib.php:550
  -#: ../wikilib.php:736
  +#: ../wikilib.php:737
   msgid "Delete selected file"
   msgstr ""
   
   # ../wikilib.php:575
  -#: ../wikilib.php:758
  +#: ../wikilib.php:759
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr "\"%s\" est effac !"
   
   # ../wikilib.php:581
  -#: ../wikilib.php:764
  +#: ../wikilib.php:765
   msgid "Please delete this file manually."
   msgstr "Merci d'effacer ce fichier manuellement."
   
   # ../wikilib.php:583
  -#: ../wikilib.php:766
  +#: ../wikilib.php:767
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "Effacer \"%s\" ?"
   
   # ../wikilib.php:672 ../wikilib.php:1472
  -#: ../wikilib.php:867 ../wikilib.php:1713
  +#: ../wikilib.php:869 ../wikilib.php:1725
   msgid "Use more specific text"
   msgstr "Utiliser un texte plus spcifique"
   
   # ../wikilib.php:734
  -#: ../wikilib.php:930
  +#: ../wikilib.php:942
   msgid "Goto Editor"
   msgstr "Aller  l'diteur"
   
   # ../wikilib.php:743
  -#: ../wikilib.php:939
  +#: ../wikilib.php:951
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "Quelqu'un a sauvegard la page tandis que vous ditiez %s"
   
   # ../wikilib.php:748 ../wikilib.php:777
  -#: ../wikilib.php:944 ../wikilib.php:973
  +#: ../wikilib.php:956 ../wikilib.php:985
   #, c-format
   msgid "Preview of %s"
   msgstr "Prvisualisation de %s"
   
   # ../wikilib.php:755
  -#: ../wikilib.php:951
  +#: ../wikilib.php:963
   msgid "Conflict error!"
   msgstr "Erreur de conflit !"
   
   # ../wikilib.php:803
  -#: ../wikilib.php:999
  +#: ../wikilib.php:1011
   msgid "mail does not supported by default."
   msgstr "La messagerie n'est pas support par dfaut."
   
   # ../wikilib.php:807
  -#: ../wikilib.php:1003
  +#: ../wikilib.php:1015
   msgid "Sent notification mail."
   msgstr "Des notifications par messagerie ont t envoyes."
   
   # ../wikilib.php:809
  -#: ../wikilib.php:1005
  +#: ../wikilib.php:1017
   msgid "No subscribers found."
   msgstr "Aucun abonn trouv."
   
   # ../wikilib.php:814
  -#: ../wikilib.php:1010
  +#: ../wikilib.php:1022
   #, c-format
   msgid "%s is not editable"
   msgstr "%s n'est pas ditable"
   
   # ../wikilib.php:816
  -#: ../wikilib.php:1012
  +#: ../wikilib.php:1024
   #, c-format
   msgid "%s is saved"
   msgstr "%s est sauvegard"
   
   # ../wikilib.php:838
  -#: ../wikilib.php:1036
  +#: ../wikilib.php:1048
   msgid "Nobody subscribed to this page."
   msgstr "Personne n'est abonn  cette page, aucun mail envoy"
   
   # ../wikilib.php:860
  -#: ../wikilib.php:1058
  +#: ../wikilib.php:1070
   #, c-format
   msgid "%s page is modified"
   msgstr "la page %s est modifi"
   
   # ../wikilib.php:870
  -#: ../wikilib.php:1068
  +#: ../wikilib.php:1080
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
  @@ -1305,48 +1309,48 @@
   "\n"
   
   # ../wikilib.php:883
  -#: ../wikilib.php:1081
  +#: ../wikilib.php:1093
   msgid "Send notification mails to all subscribers"
   msgstr "Envoyez un mail de notification  tous les abonns"
   
   # ../wikilib.php:887
  -#: ../wikilib.php:1085
  +#: ../wikilib.php:1097
   msgid "Mails are sent successfully"
   msgstr "Mail envoy avec succs"
   
   # ../wikilib.php:888
  -#: ../wikilib.php:1086
  +#: ../wikilib.php:1098
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr "un mail a t envoy  '%s'"
   
   # ../plugin/login.php:26 ../wikilib.php:1051
  -#: ../wikilib.php:1249
  +#: ../wikilib.php:1261
   msgid "Login"
   msgstr "Se connecter"
   
   # ../wikilib.php:1070
  -#: ../wikilib.php:1268
  +#: ../wikilib.php:1280
   msgid "Make profile"
   msgstr "Faire un profil"
   
   # ../wikilib.php:1071
  -#: ../wikilib.php:1269
  +#: ../wikilib.php:1281
   msgid "password again"
   msgstr "mot de passe de nouveau"
   
   # ../wikilib.php:1082
  -#: ../wikilib.php:1280
  +#: ../wikilib.php:1292
   msgid "New password"
   msgstr "Nouveau mot de passe"
   
   # ../wikilib.php:1088
  -#: ../wikilib.php:1286
  +#: ../wikilib.php:1298
   msgid "logout"
   msgstr "se dconnecter"
   
   # ../wikilib.php:1479
  -#: ../wikilib.php:1720
  +#: ../wikilib.php:1732
   #, c-format
   msgid "Title search for \"%s\""
   msgstr "Recherche de titre pour \"%s\""
  
  
  
  1.14      +92 -88    moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- ko.po	17 Oct 2004 14:33:19 -0000	1.13
  +++ ko.po	17 Oct 2004 16:45:26 -0000	1.14
  @@ -5,7 +5,7 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: MoniWiki 1.0\n"
  -"POT-Creation-Date: 2004-10-02 12:33+0900\n"
  +"POT-Creation-Date: 2004-10-18 01:48+0900\n"
   "PO-Revision-Date: 2003-04-29 19:00+0900\n"
   "Last-Translator: Won-kyu Park <wkpark@kldp.org>\n"
   "Language-Team: ko <ko@li.org>\n"
  @@ -13,12 +13,12 @@
   "Content-Type: text/plain; charset=EUC-KR\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  -#: ../plugin/Attachment.php:75
  +#: ../plugin/Attachment.php:80
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr ""
   
  -#: ../plugin/Attachment.php:78
  +#: ../plugin/Attachment.php:83
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
  @@ -139,7 +139,7 @@
   msgid "Comment"
   msgstr " ޱ"
   
  -#: ../plugin/Comment.php:49 ../wikilib.php:606
  +#: ../plugin/Comment.php:49 ../wikilib.php:607
   msgid "Preview"
   msgstr "̸"
   
  @@ -210,7 +210,7 @@
   msgid "BackLinks search for \"%s\""
   msgstr "\"%s\"  ũ ã"
   
  -#: ../plugin/FullSearch.php:103 ../wikilib.php:1724
  +#: ../plugin/FullSearch.php:103 ../wikilib.php:1736
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr ""
  @@ -223,7 +223,7 @@
   msgid "show comments"
   msgstr " "
   
  -#: ../plugin/Gallery.php:277 ../plugin/Gallery.php:280 ../wikilib.php:965
  +#: ../plugin/Gallery.php:277 ../plugin/Gallery.php:280 ../wikilib.php:977
   #, c-format
   msgid "Go back or return to %s"
   msgstr "ڷ Ȥ %s() "
  @@ -290,7 +290,7 @@
   msgid "TwinPages of %s"
   msgstr "%s ֵ "
   
  -#: ../plugin/TwinPages.php:18 ../wiki.php:1999 ../wiki.php:3262
  +#: ../plugin/TwinPages.php:18 ../wiki.php:2002 ../wiki.php:3300
   msgid "See TwinPages: "
   msgstr ""
   
  @@ -316,11 +316,11 @@
   msgid ": Rename"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:121 ../plugin/rename.php:69 ../wikilib.php:734
  +#: ../plugin/UploadedFiles.php:121 ../plugin/rename.php:69 ../wikilib.php:735
   msgid "Password"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:122 ../wikilib.php:712
  +#: ../plugin/UploadedFiles.php:122 ../wikilib.php:713
   msgid "Delete selected files"
   msgstr ""
   
  @@ -348,7 +348,7 @@
   msgid "Voted successfully"
   msgstr ""
   
  -#: ../plugin/WordIndex.php:65 ../wikilib.php:1523
  +#: ../plugin/WordIndex.php:65 ../wikilib.php:1535
   msgid "Others"
   msgstr ""
   
  @@ -407,7 +407,7 @@
   msgid "No manpage found"
   msgstr "Manpage ϴ"
   
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1274
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1286
   msgid "Login or Join"
   msgstr ""
   
  @@ -531,7 +531,7 @@
   msgid "Only WikiMaster can rename this page"
   msgstr ""
   
  -#: ../plugin/rename.php:71 ../wikilib.php:771
  +#: ../plugin/rename.php:71 ../wikilib.php:773
   msgid "with revision history"
   msgstr " 丮 Բ"
   
  @@ -786,118 +786,122 @@
   msgid "Whois search result for %s"
   msgstr "%s  Whois ġ "
   
  -#: ../wiki.php:888
  +#: ../wiki.php:890
   #, c-format
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1067
  +#: ../wiki.php:1069
   msgid "File does not exists"
   msgstr ""
   
  -#: ../wiki.php:1995
  +#: ../wiki.php:1998
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:1995
  +#: ../wiki.php:1998
   msgid "TwinPages"
   msgstr "TwinPages"
   
  -#: ../wiki.php:2315
  +#: ../wiki.php:2318
   msgid "Revision History"
   msgstr " 丮"
   
  -#: ../wiki.php:2416 ../wiki.php:2564
  +#: ../wiki.php:2419 ../wiki.php:2567
   msgid "No older revisions available"
   msgstr "  ϴ"
   
  -#: ../wiki.php:2543 ../wiki.php:2581 ../wikilib.php:966
  +#: ../wiki.php:2546 ../wiki.php:2584 ../wikilib.php:978
   msgid "No difference found"
   msgstr "ȭ ϴ"
   
  -#: ../wiki.php:2545
  +#: ../wiki.php:2548
   msgid "Difference between yours and the current"
   msgstr ""
   
  -#: ../wiki.php:2583
  +#: ../wiki.php:2586
   msgid "Difference between versions"
   msgstr ""
   
  -#: ../wiki.php:2585
  +#: ../wiki.php:2588
   #, c-format
   msgid "Difference between r%s and r%s"
   msgstr "r%s r%s "
   
  -#: ../wiki.php:2588
  +#: ../wiki.php:2591
   #, c-format
   msgid "Difference between r%s and the current"
   msgstr "r%s   "
   
  -#: ../wiki.php:2782 ../locale/dummy.php:6
  +#: ../wiki.php:2796 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "ġ"
   
  -#: ../wiki.php:2784
  +#: ../wiki.php:2798
   msgid "NotEditable"
   msgstr "ĥ "
   
  -#: ../wiki.php:2786 ../locale/dummy.php:6
  +#: ../wiki.php:2800 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:2787 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:2801 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "ã"
   
  -#: ../wiki.php:3010
  +#: ../wiki.php:3025
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:3238
  +#: ../wiki.php:3254
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:3239
  -msgid "Please contact wikimasters"
  +#: ../wiki.php:3255 ../wiki.php:3266
  +msgid "Please contact WikiMasters"
  +msgstr ""
  +
  +#: ../wiki.php:3265
  +msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:3264 ../wiki.php:3267
  +#: ../wiki.php:3302 ../wiki.php:3305 ../wikilib.php:904
   msgid "Create this page"
   msgstr " "
   
  -#: ../wiki.php:3269
  +#: ../wiki.php:3307 ../wikilib.php:906
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
   
  -#: ../wiki.php:3269
  +#: ../wiki.php:3307 ../wikilib.php:906
   msgid "title"
   msgstr ""
   
  -#: ../wiki.php:3275
  +#: ../wiki.php:3313
   msgid " or alternativly, use one of these templates:\n"
   msgstr " Ȥ Ʒ øƮ  ̿ϼ:\n"
   
  -#: ../wiki.php:3278
  +#: ../wiki.php:3316
   msgid "To create your own templates, add a page with a 'Template' suffix.\n"
   msgstr "øƮ ÷ Template ̸   弼.\n"
   
  -#: ../wiki.php:3353
  +#: ../wiki.php:3391
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr ""
   
  -#: ../wiki.php:3365
  +#: ../wiki.php:3403
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:3368
  +#: ../wiki.php:3406
   msgid "Please enter the valid password"
   msgstr "Ȯ йȣ ־ּ"
   
  -#: ../wikilib.php:481
  +#: ../wikilib.php:482
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -926,214 +930,214 @@
   "<b>̺</b>: ||   |||| ĭ ģ  ||;<br />\n"
   "̺̳     ȵ˴ϴ.<br />\n"
   
  -#: ../wikilib.php:541
  +#: ../wikilib.php:542
   msgid "Use one of the following templates as an initial release :\n"
   msgstr "ó   øƮ Ȱϼ :\n"
   
  -#: ../wikilib.php:543
  +#: ../wikilib.php:544
   msgid "To create your own templates, add a page with a 'Template' suffix."
   msgstr "øƮ ÷ Template ̸   弼."
   
  -#: ../wikilib.php:559
  +#: ../wikilib.php:560
   msgid "Skip to preview"
   msgstr "̸"
   
  -#: ../wikilib.php:561
  +#: ../wikilib.php:562
   msgid "ReduceEditor"
   msgstr "â ̱"
   
  -#: ../wikilib.php:562
  +#: ../wikilib.php:563
   msgid "EnlargeEditor"
   msgstr ""
   
  -#: ../wikilib.php:566 ../locale/dummy.php:6
  +#: ../wikilib.php:567 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr "Ű"
   
  -#: ../wikilib.php:567
  +#: ../wikilib.php:568
   msgid "HelpOnEditing"
   msgstr "ġ "
   
  -#: ../wikilib.php:584
  +#: ../wikilib.php:585
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:600
  +#: ../wikilib.php:601
   msgid "--Select Category--"
   msgstr ""
   
  -#: ../wikilib.php:607 ../wikilib.php:1277
  +#: ../wikilib.php:608 ../wikilib.php:1289
   msgid "Save"
   msgstr ""
   
  -#: ../wikilib.php:608
  +#: ../wikilib.php:609
   msgid "Summary of Change"
   msgstr "ٲ "
   
  -#: ../wikilib.php:650
  +#: ../wikilib.php:651
   #, c-format
   msgid "Info. for %s"
   msgstr "%s "
   
  -#: ../wikilib.php:660
  +#: ../wikilib.php:661
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:665
  +#: ../wikilib.php:666
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s() ȿ ׼ ƴմϴ"
   
  -#: ../wikilib.php:667
  +#: ../wikilib.php:668
   msgid "Is it valid action ?"
   msgstr ""
   
  -#: ../wikilib.php:700
  +#: ../wikilib.php:701
   #, c-format
   msgid "File '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:702
  +#: ../wikilib.php:703
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr ""
   
  -#: ../wikilib.php:707
  +#: ../wikilib.php:708
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:709
  +#: ../wikilib.php:710
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr ""
   
  -#: ../wikilib.php:719 ../wikilib.php:739
  +#: ../wikilib.php:720 ../wikilib.php:740
   msgid "No files are selected !"
   msgstr " õ ʾҽϴ !"
   
  -#: ../wikilib.php:732
  +#: ../wikilib.php:733
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
  -#: ../wikilib.php:735
  +#: ../wikilib.php:736
   msgid "Delete"
   msgstr ""
   
  -#: ../wikilib.php:736
  +#: ../wikilib.php:737
   msgid "Delete selected file"
   msgstr "õ  "
   
  -#: ../wikilib.php:758
  +#: ../wikilib.php:759
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr ""
   
  -#: ../wikilib.php:764
  +#: ../wikilib.php:765
   msgid "Please delete this file manually."
   msgstr ""
   
  -#: ../wikilib.php:766
  +#: ../wikilib.php:767
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "\"%s\"()  ?"
   
  -#: ../wikilib.php:867 ../wikilib.php:1713
  +#: ../wikilib.php:869 ../wikilib.php:1725
   msgid "Use more specific text"
   msgstr "  ڼ Էϼ"
   
  -#: ../wikilib.php:930
  +#: ../wikilib.php:942
   msgid "Goto Editor"
   msgstr " "
   
  -#: ../wikilib.php:939
  +#: ../wikilib.php:951
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "%s() ġ  ٸ    ߽ϴ"
   
  -#: ../wikilib.php:944 ../wikilib.php:973
  +#: ../wikilib.php:956 ../wikilib.php:985
   #, c-format
   msgid "Preview of %s"
   msgstr "%s ̸"
   
  -#: ../wikilib.php:951
  +#: ../wikilib.php:963
   msgid "Conflict error!"
   msgstr "浹!"
   
  -#: ../wikilib.php:999
  +#: ../wikilib.php:1011
   msgid "mail does not supported by default."
   msgstr ""
   
  -#: ../wikilib.php:1003
  +#: ../wikilib.php:1015
   msgid "Sent notification mail."
   msgstr ""
   
  -#: ../wikilib.php:1005
  +#: ../wikilib.php:1017
   msgid "No subscribers found."
   msgstr "ڰ ϴ"
   
  -#: ../wikilib.php:1010
  +#: ../wikilib.php:1022
   #, c-format
   msgid "%s is not editable"
   msgstr "%s()   ϴ"
   
  -#: ../wikilib.php:1012
  +#: ../wikilib.php:1024
   #, c-format
   msgid "%s is saved"
   msgstr "%s() Ǿϴ"
   
  -#: ../wikilib.php:1036
  +#: ../wikilib.php:1048
   msgid "Nobody subscribed to this page."
   msgstr ""
   
  -#: ../wikilib.php:1058
  +#: ../wikilib.php:1070
   #, c-format
   msgid "%s page is modified"
   msgstr ""
   
  -#: ../wikilib.php:1068
  +#: ../wikilib.php:1080
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:1081
  +#: ../wikilib.php:1093
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:1085
  +#: ../wikilib.php:1097
   msgid "Mails are sent successfully"
   msgstr ""
   
  -#: ../wikilib.php:1086
  +#: ../wikilib.php:1098
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1249
  +#: ../wikilib.php:1261
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:1268
  +#: ../wikilib.php:1280
   msgid "Make profile"
   msgstr ""
   
  -#: ../wikilib.php:1269
  +#: ../wikilib.php:1281
   msgid "password again"
   msgstr ""
   
  -#: ../wikilib.php:1280
  +#: ../wikilib.php:1292
   msgid "New password"
   msgstr " йȣ"
   
  -#: ../wikilib.php:1286
  +#: ../wikilib.php:1298
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:1720
  +#: ../wikilib.php:1732
   #, c-format
   msgid "Title search for \"%s\""
   msgstr ""
  
  
  
  1.10      +92 -88    moniwiki/locale/po/moniwiki.pot
  
  Index: moniwiki.pot
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/moniwiki.pot,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- moniwiki.pot	2 Oct 2004 03:31:26 -0000	1.9
  +++ moniwiki.pot	17 Oct 2004 16:45:26 -0000	1.10
  @@ -6,7 +6,7 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: PACKAGE VERSION\n"
  -"POT-Creation-Date: 2004-10-02 12:33+0900\n"
  +"POT-Creation-Date: 2004-10-18 01:48+0900\n"
   "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
   "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
   "Language-Team: LANGUAGE <LL@li.org>\n"
  @@ -14,12 +14,12 @@
   "Content-Type: text/plain; charset=CHARSET\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  -#: ../plugin/Attachment.php:75
  +#: ../plugin/Attachment.php:80
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr ""
   
  -#: ../plugin/Attachment.php:78
  +#: ../plugin/Attachment.php:83
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
  @@ -140,7 +140,7 @@
   msgid "Comment"
   msgstr ""
   
  -#: ../plugin/Comment.php:49 ../wikilib.php:606
  +#: ../plugin/Comment.php:49 ../wikilib.php:607
   msgid "Preview"
   msgstr ""
   
  @@ -211,7 +211,7 @@
   msgid "BackLinks search for \"%s\""
   msgstr ""
   
  -#: ../plugin/FullSearch.php:103 ../wikilib.php:1724
  +#: ../plugin/FullSearch.php:103 ../wikilib.php:1736
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr ""
  @@ -224,7 +224,7 @@
   msgid "show comments"
   msgstr ""
   
  -#: ../plugin/Gallery.php:277 ../plugin/Gallery.php:280 ../wikilib.php:965
  +#: ../plugin/Gallery.php:277 ../plugin/Gallery.php:280 ../wikilib.php:977
   #, c-format
   msgid "Go back or return to %s"
   msgstr ""
  @@ -291,7 +291,7 @@
   msgid "TwinPages of %s"
   msgstr ""
   
  -#: ../plugin/TwinPages.php:18 ../wiki.php:1999 ../wiki.php:3262
  +#: ../plugin/TwinPages.php:18 ../wiki.php:2002 ../wiki.php:3300
   msgid "See TwinPages: "
   msgstr ""
   
  @@ -317,11 +317,11 @@
   msgid ": Rename"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:121 ../plugin/rename.php:69 ../wikilib.php:734
  +#: ../plugin/UploadedFiles.php:121 ../plugin/rename.php:69 ../wikilib.php:735
   msgid "Password"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:122 ../wikilib.php:712
  +#: ../plugin/UploadedFiles.php:122 ../wikilib.php:713
   msgid "Delete selected files"
   msgstr ""
   
  @@ -349,7 +349,7 @@
   msgid "Voted successfully"
   msgstr ""
   
  -#: ../plugin/WordIndex.php:65 ../wikilib.php:1523
  +#: ../plugin/WordIndex.php:65 ../wikilib.php:1535
   msgid "Others"
   msgstr ""
   
  @@ -408,7 +408,7 @@
   msgid "No manpage found"
   msgstr ""
   
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1274
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1286
   msgid "Login or Join"
   msgstr ""
   
  @@ -531,7 +531,7 @@
   msgid "Only WikiMaster can rename this page"
   msgstr ""
   
  -#: ../plugin/rename.php:71 ../wikilib.php:771
  +#: ../plugin/rename.php:71 ../wikilib.php:773
   msgid "with revision history"
   msgstr ""
   
  @@ -782,118 +782,122 @@
   msgid "Whois search result for %s"
   msgstr ""
   
  -#: ../wiki.php:888
  +#: ../wiki.php:890
   #, c-format
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1067
  +#: ../wiki.php:1069
   msgid "File does not exists"
   msgstr ""
   
  -#: ../wiki.php:1995
  +#: ../wiki.php:1998
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:1995
  +#: ../wiki.php:1998
   msgid "TwinPages"
   msgstr ""
   
  -#: ../wiki.php:2315
  +#: ../wiki.php:2318
   msgid "Revision History"
   msgstr ""
   
  -#: ../wiki.php:2416 ../wiki.php:2564
  +#: ../wiki.php:2419 ../wiki.php:2567
   msgid "No older revisions available"
   msgstr ""
   
  -#: ../wiki.php:2543 ../wiki.php:2581 ../wikilib.php:966
  +#: ../wiki.php:2546 ../wiki.php:2584 ../wikilib.php:978
   msgid "No difference found"
   msgstr ""
   
  -#: ../wiki.php:2545
  +#: ../wiki.php:2548
   msgid "Difference between yours and the current"
   msgstr ""
   
  -#: ../wiki.php:2583
  +#: ../wiki.php:2586
   msgid "Difference between versions"
   msgstr ""
   
  -#: ../wiki.php:2585
  +#: ../wiki.php:2588
   #, c-format
   msgid "Difference between r%s and r%s"
   msgstr ""
   
  -#: ../wiki.php:2588
  +#: ../wiki.php:2591
   #, c-format
   msgid "Difference between r%s and the current"
   msgstr ""
   
  -#: ../wiki.php:2782 ../locale/dummy.php:6
  +#: ../wiki.php:2796 ../locale/dummy.php:6
   msgid "EditText"
   msgstr ""
   
  -#: ../wiki.php:2784
  +#: ../wiki.php:2798
   msgid "NotEditable"
   msgstr ""
   
  -#: ../wiki.php:2786 ../locale/dummy.php:6
  +#: ../wiki.php:2800 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:2787 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:2801 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr ""
   
  -#: ../wiki.php:3010
  +#: ../wiki.php:3025
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:3238
  +#: ../wiki.php:3254
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:3239
  -msgid "Please contact wikimasters"
  +#: ../wiki.php:3255 ../wiki.php:3266
  +msgid "Please contact WikiMasters"
  +msgstr ""
  +
  +#: ../wiki.php:3265
  +msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:3264 ../wiki.php:3267
  +#: ../wiki.php:3302 ../wiki.php:3305 ../wikilib.php:904
   msgid "Create this page"
   msgstr ""
   
  -#: ../wiki.php:3269
  +#: ../wiki.php:3307 ../wikilib.php:906
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
   
  -#: ../wiki.php:3269
  +#: ../wiki.php:3307 ../wikilib.php:906
   msgid "title"
   msgstr ""
   
  -#: ../wiki.php:3275
  +#: ../wiki.php:3313
   msgid " or alternativly, use one of these templates:\n"
   msgstr ""
   
  -#: ../wiki.php:3278
  +#: ../wiki.php:3316
   msgid "To create your own templates, add a page with a 'Template' suffix.\n"
   msgstr ""
   
  -#: ../wiki.php:3353
  +#: ../wiki.php:3391
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr ""
   
  -#: ../wiki.php:3365
  +#: ../wiki.php:3403
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:3368
  +#: ../wiki.php:3406
   msgid "Please enter the valid password"
   msgstr ""
   
  -#: ../wikilib.php:481
  +#: ../wikilib.php:482
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -910,214 +914,214 @@
   "no trailing white space allowed after tables or titles.<br />\n"
   msgstr ""
   
  -#: ../wikilib.php:541
  +#: ../wikilib.php:542
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   
  -#: ../wikilib.php:543
  +#: ../wikilib.php:544
   msgid "To create your own templates, add a page with a 'Template' suffix."
   msgstr ""
   
  -#: ../wikilib.php:559
  +#: ../wikilib.php:560
   msgid "Skip to preview"
   msgstr ""
   
  -#: ../wikilib.php:561
  +#: ../wikilib.php:562
   msgid "ReduceEditor"
   msgstr ""
   
  -#: ../wikilib.php:562
  +#: ../wikilib.php:563
   msgid "EnlargeEditor"
   msgstr ""
   
  -#: ../wikilib.php:566 ../locale/dummy.php:6
  +#: ../wikilib.php:567 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
  -#: ../wikilib.php:567
  +#: ../wikilib.php:568
   msgid "HelpOnEditing"
   msgstr ""
   
  -#: ../wikilib.php:584
  +#: ../wikilib.php:585
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:600
  +#: ../wikilib.php:601
   msgid "--Select Category--"
   msgstr ""
   
  -#: ../wikilib.php:607 ../wikilib.php:1277
  +#: ../wikilib.php:608 ../wikilib.php:1289
   msgid "Save"
   msgstr ""
   
  -#: ../wikilib.php:608
  +#: ../wikilib.php:609
   msgid "Summary of Change"
   msgstr ""
   
  -#: ../wikilib.php:650
  +#: ../wikilib.php:651
   #, c-format
   msgid "Info. for %s"
   msgstr ""
   
  -#: ../wikilib.php:660
  +#: ../wikilib.php:661
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:665
  +#: ../wikilib.php:666
   #, c-format
   msgid "%s is not valid action"
   msgstr ""
   
  -#: ../wikilib.php:667
  +#: ../wikilib.php:668
   msgid "Is it valid action ?"
   msgstr ""
   
  -#: ../wikilib.php:700
  +#: ../wikilib.php:701
   #, c-format
   msgid "File '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:702
  +#: ../wikilib.php:703
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr ""
   
  -#: ../wikilib.php:707
  +#: ../wikilib.php:708
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:709
  +#: ../wikilib.php:710
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr ""
   
  -#: ../wikilib.php:719 ../wikilib.php:739
  +#: ../wikilib.php:720 ../wikilib.php:740
   msgid "No files are selected !"
   msgstr ""
   
  -#: ../wikilib.php:732
  +#: ../wikilib.php:733
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
  -#: ../wikilib.php:735
  +#: ../wikilib.php:736
   msgid "Delete"
   msgstr ""
   
  -#: ../wikilib.php:736
  +#: ../wikilib.php:737
   msgid "Delete selected file"
   msgstr ""
   
  -#: ../wikilib.php:758
  +#: ../wikilib.php:759
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr ""
   
  -#: ../wikilib.php:764
  +#: ../wikilib.php:765
   msgid "Please delete this file manually."
   msgstr ""
   
  -#: ../wikilib.php:766
  +#: ../wikilib.php:767
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr ""
   
  -#: ../wikilib.php:867 ../wikilib.php:1713
  +#: ../wikilib.php:869 ../wikilib.php:1725
   msgid "Use more specific text"
   msgstr ""
   
  -#: ../wikilib.php:930
  +#: ../wikilib.php:942
   msgid "Goto Editor"
   msgstr ""
   
  -#: ../wikilib.php:939
  +#: ../wikilib.php:951
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr ""
   
  -#: ../wikilib.php:944 ../wikilib.php:973
  +#: ../wikilib.php:956 ../wikilib.php:985
   #, c-format
   msgid "Preview of %s"
   msgstr ""
   
  -#: ../wikilib.php:951
  +#: ../wikilib.php:963
   msgid "Conflict error!"
   msgstr ""
   
  -#: ../wikilib.php:999
  +#: ../wikilib.php:1011
   msgid "mail does not supported by default."
   msgstr ""
   
  -#: ../wikilib.php:1003
  +#: ../wikilib.php:1015
   msgid "Sent notification mail."
   msgstr ""
   
  -#: ../wikilib.php:1005
  +#: ../wikilib.php:1017
   msgid "No subscribers found."
   msgstr ""
   
  -#: ../wikilib.php:1010
  +#: ../wikilib.php:1022
   #, c-format
   msgid "%s is not editable"
   msgstr ""
   
  -#: ../wikilib.php:1012
  +#: ../wikilib.php:1024
   #, c-format
   msgid "%s is saved"
   msgstr ""
   
  -#: ../wikilib.php:1036
  +#: ../wikilib.php:1048
   msgid "Nobody subscribed to this page."
   msgstr ""
   
  -#: ../wikilib.php:1058
  +#: ../wikilib.php:1070
   #, c-format
   msgid "%s page is modified"
   msgstr ""
   
  -#: ../wikilib.php:1068
  +#: ../wikilib.php:1080
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:1081
  +#: ../wikilib.php:1093
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:1085
  +#: ../wikilib.php:1097
   msgid "Mails are sent successfully"
   msgstr ""
   
  -#: ../wikilib.php:1086
  +#: ../wikilib.php:1098
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1249
  +#: ../wikilib.php:1261
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:1268
  +#: ../wikilib.php:1280
   msgid "Make profile"
   msgstr ""
   
  -#: ../wikilib.php:1269
  +#: ../wikilib.php:1281
   msgid "password again"
   msgstr ""
   
  -#: ../wikilib.php:1280
  +#: ../wikilib.php:1292
   msgid "New password"
   msgstr ""
   
  -#: ../wikilib.php:1286
  +#: ../wikilib.php:1298
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:1720
  +#: ../wikilib.php:1732
   #, c-format
   msgid "Title search for \"%s\""
   msgstr ""
  
  
  


wkpark      2004/10/18 01:59:01

  Modified:    .        wiki.php
  Log:
  markup <del> more selectivly: --[^\s].*[^\s]--
  
  Revision  Changes    Path
  1.187     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.186
  retrieving revision 1.187
  diff -u -r1.186 -r1.187
  --- wiki.php	17 Oct 2004 15:57:43 -0000	1.186
  +++ wiki.php	17 Oct 2004 16:59:01 -0000	1.187
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.186 2004/10/17 15:57:43 wkpark Exp $
  +// $Id: wiki.php,v 1.187 2004/10/17 16:59:01 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.186 $',1,-1);
  +$_revision = substr('$Revision: 1.187 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -1206,7 +1206,7 @@
                        "/\^([^ \^]+)\^(?=\s|$)/","/\^\^([^\^]+)\^\^(?!^)/",
                        "/(?<!,),,([^ ,]+),,(?!,)/",
                        "/(?<!_)__([^_]+)__(?!_)/","/^(-{4,})/e",
  -                     "/(?<!-)--([^-]+)--(?!-)/",
  +                     "/(?<!-)--[^\s]([^-]+)[^\s]--(?!-)/",
                        );
       $this->baserepl=array("&lt;\\1","&#96;\\1'","<tt class='wiki'>\\1</tt>",
                        "<strong>\\1</strong>","<strong>\\1</strong>",
  
  
  


pyrasis     2004/10/20 00:01:16

  Modified:    plugin   Calendar.php
  Log:
  Add bookmark calendar date's link.
  ex) Blog?action=blogchanges&date=200408#20040820
  
  Revision  Changes    Path
  1.11      +6 -2      moniwiki/plugin/Calendar.php
  
  Index: Calendar.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Calendar.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- Calendar.php	20 Aug 2004 11:06:35 -0000	1.10
  +++ Calendar.php	19 Oct 2004 15:01:15 -0000	1.11
  @@ -7,7 +7,7 @@
   #-----usage: generate_calendar(2001, 11, $day_func, 2);-------------------------
   #------(last two arguments are optional)----------------------------------------
   #-------------------------------------------------------------------------------
  -# $Id: Calendar.php,v 1.10 2004/08/20 11:06:35 wkpark Exp $
  +# $Id: Calendar.php,v 1.11 2004/10/19 15:01:15 pyrasis Exp $
   
   function calendar_get_dates($formatter,$date='',$page='') {
     global $DBInfo;
  @@ -192,7 +192,11 @@
   			}
   			if ($mode == 'archive') {
   				if ($archives[$day]) {
  -					$action='?action=blogchanges&amp;date='.$date;
  +                                        if ($day < 10)
  +                                          $anchor = '#'.$date.'0'.$day;
  +                                        else
  +                                          $anchor = '#'.$date.$day;
  +					$action='?action=blogchanges&amp;date='.$date.$anchor;
   					$classes='day';
   					$link=$pagename;
   				} else {
  
  
  


wkpark      2004/10/20 22:34:54

  Modified:    .        wiki.php
  Log:
  fix for [wiki:WikiName#s-1.1 wiki name] syntax
  
  Revision  Changes    Path
  1.188     +11 -5     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.187
  retrieving revision 1.188
  diff -u -r1.187 -r1.188
  --- wiki.php	17 Oct 2004 16:59:01 -0000	1.187
  +++ wiki.php	20 Oct 2004 13:34:53 -0000	1.188
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.187 2004/10/17 16:59:01 wkpark Exp $
  +// $Id: wiki.php,v 1.188 2004/10/20 13:34:53 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.187 $',1,-1);
  +$_revision = substr('$Revision: 1.188 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -1629,9 +1629,15 @@
         $word=$text=$page_text ? $page_text:$word;
       #print $text;
   
  -    $url=$this->link_url(_rawurlencode($page)); # XXX
  -    $page=urldecode($page); # XXX
  -    #$page=rawurldecode($page); # C++
  +    $url=_urlencode($page);
  +    $url_only=strtok($url,'#?'); # for [WikiName#tag] [wiki:WikiName#tag Tag]
  +    #$query= substr($url,strlen($url_only));
  +    $page=urldecode($url_only);
  +    $url=$this->link_url($url);
  +
  +    //$url=$this->link_url(_rawurlencode($page)); # XXX
  +    //$page=urldecode($page); # XXX
  +    //$page=rawurldecode($page); # C++
       if (isset($this->pagelinks[$page])) {
         $idx=$this->pagelinks[$page];
         switch($idx) {
  
  
  


wkpark      2004/10/20 23:24:32

  Modified:    lib      difflib.php
  Log:
  add the DeltaDiffFormatter and some fix for this formatter.
  
  Revision  Changes    Path
  1.5       +65 -6     moniwiki/lib/difflib.php
  
  Index: difflib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/difflib.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- difflib.php	7 Oct 2004 05:15:13 -0000	1.4
  +++ difflib.php	20 Oct 2004 14:24:31 -0000	1.5
  @@ -8,7 +8,7 @@
   //
   
   // FIXME: possibly remove assert()'s for production version?
  -// $Id: difflib.php,v 1.4 2004/10/07 05:15:13 wkpark Exp $
  +// $Id: difflib.php,v 1.5 2004/10/20 14:24:31 wkpark Exp $
   // original Id: difflib.php,v 1.5 2002/01/21 06:55:47 dairiki Exp
   
   // PHP3 does not have assert()
  @@ -708,6 +708,7 @@
        */
       var $trailing_context_lines = 0;
   
  +    var $trailing_cr = "\n";
       /**
        * Format a diff.
        *
  @@ -807,7 +808,7 @@
       }
       
       function _start_block($header) {
  -        echo $header;
  +        echo $header."\n";
       }
       
       function _end_block() {
  @@ -815,7 +816,7 @@
   
       function _lines($lines, $prefix = ' ') {
           foreach ($lines as $line)
  -            echo "$prefix $line\n";
  +            echo "$prefix$line".$this->trailing_cr;
       }
       
       function _context($lines) {
  @@ -823,10 +824,10 @@
       }
   
       function _added($lines) {
  -        $this->_lines($lines, ">");
  +        $this->_lines($lines, "> ");
       }
       function _deleted($lines) {
  -        $this->_lines($lines, "<");
  +        $this->_lines($lines, "< ");
       }
   
       function _changed($orig, $_final) {
  @@ -960,7 +961,7 @@
       }
   
       function _start_block($header) {
  -        echo $header;
  +        echo $header."\n";
       }
   
       function _end_block() {
  @@ -985,6 +986,64 @@
           $diff = new WordLevelDiff($orig, $_final);
           $this->_deleted($diff->orig());
           $this->_added($diff->_final());
  +    }
  +}
  +
  +/**
  + * "Unified" diff formatter.
  + *
  + * This class formats the diff in classic "unified diff" format.
  + */
  +class UnifiedDiffFormatter extends DiffFormatter
  +{
  +    function UnifiedDiffFormatter($context_lines = 3) {
  +        $this->leading_context_lines = $context_lines;
  +        $this->trailing_context_lines = $context_lines;
  +    }
  +    
  +    function _block_header($xbeg, $xlen, $ybeg, $ylen) {
  +        if ($xlen != 1)
  +            $xbeg .= "," . $xlen;
  +        if ($ylen != 1)
  +            $ybeg .= "," . $ylen;
  +        return "@@ -$xbeg +$ybeg @@";
  +    }
  +
  +    function _added($lines) {
  +        $this->_lines($lines, "+");
  +    }
  +    function _deleted($lines) {
  +        $this->_lines($lines, "-");
  +    }
  +    function _changed($orig, $final) {
  +        $this->_deleted($orig);
  +        $this->_added($final);
  +    }
  +}
  +
  +/**
  + * "Delta" diff formatter for the RcsLite
  + *
  + * This class formats the diff in classic "Delta diff" format.
  + */
  +class DeltaDiffFormatter extends DiffFormatter
  +{
  +    function _block_header($xbeg, $xlen, $ybeg, $ylen) {
  +        $del = 'd'. $xbeg.' '.$xlen;
  +        $add = 'a'. ($xbeg + $xlen - 1).' '.$ylen;
  +
  +        return ($xlen ? ($ylen ? $del. "\n" .$add : $del) : $add);
  +    }
  +
  +    function _added($lines) {
  +        $this->_lines($lines, "");
  +    }
  +    function _deleted($lines) {
  +        #$this->_lines($lines, "");
  +    }
  +    function _changed($orig, $final) {
  +        #$this->_deleted($orig);
  +        $this->_added($final);
       }
   }
   
  
  
  


wkpark      2004/10/20 23:51:49

  Added:       lib      rcslite.php
  Log:
  add a new file: a PHP RCS implimentation imported from the TWiki
  
  Revision  Changes    Path
  1.1                  moniwiki/lib/rcslite.php
  
  Index: rcslite.php
  ===================================================================
  <?php
  # PHP RcsLite module
  # Copyright (c) 2004 Won-kyu Park <wkpark at kldp.org>
  #
  # this module is ported from the RcsLite.pm of the TWiki by wkpark.
  # $Id: rcslite.php,v 1.1 2004/10/20 14:51:49 wkpark Exp $
  
  #
  # Original notice:
  #
  # Module of TWiki Collaboration Platform, http://TWiki.org/
  #
  # Copyright (C) 2002 John Talintyre, john.talintyre@btinternet.com
  #
  # For licensing info read license.txt file in the TWiki root.
  # This program is free software; you can redistribute it and/or
  # modify it under the terms of the GNU General Public License
  # as published by the Free Software Foundation; either version 2
  # of the License, or (at your option) any later version.
  #
  # This program is distributed in the hope that it will be useful,
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  # GNU General Public License for more details, published at 
  # http://www.gnu.org/copyleft/gpl.html
  #
  #
  # Functions used by both Rcs and RcsFile - they both inherit from this Class
  #
  # Simple interface to RCS.  Doesn't support:
  #    branches
  #    locking
  #
  # This modules doesn't know anything about the content of the topic e.g.
  # it doesn't know about the meta data.
  #
  # FIXME:
  #  - need to tidy up dealing with \n for differences
  #  - still have difficulty on line ending at end of sequences, consequence of
  #    doing a line based diff
  #  - most serious is when having multiple line ends on one seq but not other -
  #    this needs fixing
  #  - tidyup us of 1. for revisions
  #  - cleaner dealing with errors/warnings
  
  define(DIFF_DEBUG,0);
  define(DIFFEND_DEBUG,0);
  
  Class RcsLite {
      var $rcs_dir='RCS';
      var $rcs_user='root';
      function RcsLite($rcs_dir='RCS',$rcs_user='root')
      {
          #$class = ref($proto) || $proto;
          #bless( $this, $class );
          #$this->_init();
  
          $this->rcs_dir=$rcs_dir ? $rcs_dir:'RCS';
          $this->rcs_user=$rcs_user ? $rcs_user:'root';
          $this->_head = 0;
      }
    
      # ======================
      function _trace($text)
      {
      #   TWiki::writeDebug( $text );
      }
  
  # Process an RCS file
  
  # File format information:
  #
  #rcstext    ::=  admin {delta}* desc {deltatext}*
  #admin      ::=  head {num};
  #                { branch   {num}; }
  #                access {id}*;
  #                symbols {sym : num}*;
  #                locks {id : num}*;  {strict  ;}
  #                { comment  {string}; }
  #                { expand   {string}; }
  #                { newphrase }*
  #delta      ::=  num
  #                date num;
  #                author id;
  #                state {id};
  #                branches {num}*;
  #                next {num};
  #                { newphrase }*
  #desc       ::=  desc string
  #deltatext  ::=  num
  #                log string
  #                { newphrase }*
  #                text string
  #num        ::=  {digit | .}+
  #digit      ::=  0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
  #id         ::=  {num} idchar {idchar | num }*
  #sym        ::=  {digit}* idchar {idchar | digit }*
  #idchar     ::=  any visible graphic character except special
  #special    ::=  $ | , | . | : | ; | @
  #string     ::=  @{any character, with @ doubled}*@
  #newphrase  ::=  id word* ;
  #word       ::=  id | num | string | :
  #
  # Identifiers are case sensitive. Keywords are in lower case only. The sets of
  # keywords and identifiers can overlap.
  # In most environments RCS uses the ISO 8859/1 encoding: 
  # visible graphic characters are codes 041-176 and 240-377, and white space
  # characters are codes 010-015 and 040. 
  #
  # Dates, which appear after the date keyword, are of the form Y.mm.dd.hh.mm.ss, 
  # where Y is the year, mm the month (01-12), dd the day (01-31), hh 
  # the hour(00-23), mm the minute (00-59), and ss the second (00-60).
  # Y contains just the last two digits of the year for years from 1900 through
  # 1999, and all the digits of years thereafter. 
  # Dates use the Gregorian calendar; times use UTC. 
  #
  # The newphrase productions in the grammar are reserved for future extensions
  # to the format of RCS files.
  # No newphrase will begin with any keyword already in use. 
  
  #
      function _readTo($fp, $char)
      {
          $buf = '';
          $ch=null;
          $space = 0;
          $string = '';
          $state = '';
          while( !feof($fp)) {
             $ch = fread( $fp, 1 );
             if( $ch == '@' ) {
                if( $state == '@' ) {
                   $state = 'e';
                   continue;
                } else if( $state == 'e' ) {
                   $state = '@';
                   $string .= '@';
                   continue;
                } else {
                   $state = '@';
                   continue;
                }
             } else {
                if( $state == 'e' ) {
                   $state = '';
                   if( $char == '@' ) {
                      break;
                   }
                   # End of string
                } else if ( $state == '@' ) {
                   $string .= $ch;
                   continue;
                }
             }
             
             if( preg_match("/\s/",$ch) ) {
                if( strlen( $buf ) == 0 ) {
                    continue;
                } else if( $space ) {
                    continue;
                } else {
                    $space = 1;
                    $ch = ' ';
                }
             } else {
                $space = 0;
             }
             $buf .= $ch;
             if( $ch == $char ) break;
          }
          if ($ch == null) $buf=null;
          return array( $buf, $string );
      }
      
      # Called by routines that must make sure RCS file has been read in
      function _ensureProcessed()
      {
          if( ! $this->_where ) {
              $this->_process();
          }
      }
      
      function _warn($message)
      {
          print "Warning: $message\n";
      }
      
      # Read in the whole RCS file
      function _process($file=null)
      {
          if ($file) {
              $dirname=dirname($file);
              $dirname=$dirname ? $dirname:'.';
              $rcsname=basename($file);
              if (substr($rcsname,-2) != ',v')
                  $rcsname.=',v';
              if (file_exists($dirname.'/'.$rcsname))
                  $this->rcsFile=$dirname.'/'.$rcsname;
              else 
                  $this->rcsFile=$dirname.'/'.$this->rcs_dir.'/'.$rcsname;
          }
          $fh = fopen( $this->rcsFile, 'r');
          if( ! $fh ) {
              $this->_warn( "Couldn't open file $this->rcsFile" );
              $this->_where = 'nofile';
              return;
          }
          $where = 'admin.head';
          $lastWhere = '';
          $going = 1;
          $term = ';';
          $string = '';
          $num = '';
          $headNum = '';
          $date = array();
          $author = array();
          $log = array();
          $text = array();
          $dnum = '';
          while( $going ) {
             list($line, $string) = $this->_readTo( $fh, $term );
             if( is_null($line) ) break;
             #print "\"$where -- $line\"\n";
            
             $lastWhere = $where;
             if( $where == 'admin.head' ) {
                if( preg_match('/^head\s+([0-9]+)\.([0-9]+);$/',$line, $match) ) {
                   if( $match[1] != '1' )
                      die( 'Only support start of version being 1' );
                   $headNum = $match[2];
                   $where = 'admin.access'; # Don't support branch
                } else {
                   break;
                }
             } else if ( $where == 'admin.access' ) {
                if( preg_match('/^access\s*(.*);$/',$line, $match) ) {
                   $where = 'admin.symbols';
                   $this->_access = $match[1];
                } else {
                   break;
                }
             } else if( $where == 'admin.symbols' ) {
                if( preg_match('/^symbols(.*);$/',$line, $match) ) {
                   $where = 'admin.locks';
                   $this->_symbols = $match[1];
                } else {
                   break;
                }
             } else if( $where == 'admin.locks' ) {
                if( preg_match('/^locks.*;$/', $line) ) {
                   $where = 'admin.postLocks';
                } else {
                   break;
                }
             } else if( $where == 'admin.postLocks' ) {
                if( preg_match('/^strict\s*;/', $line) ) {
                   $where = 'admin.postStrict';
                }
             } else if( $where == 'admin.postStrict' &&
                      preg_match('/^comment\s.*$/', $line) ) {
                   $where = 'admin.postComment';
                   $this->_comment = $string;
             } else if( ( $where == 'admin.postStrict' || $where == 'admin.postComment' )  &&
                      preg_match('/^expand\s/', $line) ) {
                   $where = 'admin.postExpand';
                   $this->_expand = $string;         
             } else if( $where == 'admin.postStrict' || $where == 'admin.postComment' || 
                      $where == 'admin.postExpand' || $where == 'delta.date') {
                if( preg_match('/^([0-9]+)\.([0-9]+)\s+date\s+(\d\d(\d\d)?(\.\d\d){5}?);$/', $line,$match) ) {
                   $where = 'delta.author';
                   $num = $match[2];
                   $date[$num] = $match[3];
                }
             } else if( $where == 'delta.author' ) {
                if( preg_match('/^author\s+(.*);$/', $line, $match) ) {
                   $author[$num] = $match[1];
                   if( $num == 1 ) {
                      $where = 'desc';
                      $term = '@';
                   } else {
                      $where = 'delta.date';
                   }
                }
             } else if( $where == 'desc' ) {
                if( preg_match('/desc\s*$/', $line, $match) ) {
                   $this->_description = $string;
                   $where = 'deltatext.log';
                }
             } else if( $where == 'deltatext.log' ) {
                if( preg_match('/\d+\.(\d+)\s+log\s+$/', $line, $match) ) {
                   $dnum = $match[1];
                   $log[$dnum] = $string;
                   $where = 'deltatext.text';
                }
             } else if( $where == 'deltatext.text' ) {
                if( preg_match('/text\s*$/', $line) ) {
                   $where = 'deltatext.log';
                   $text[$dnum] = $string;
                   if( $dnum == 1 ) {
                      $where = 'done';
                      break;
                   }
                }
             }
          }
          
          $this->_head = $headNum;
          $this->_author = $author;
          $this->_date = $date;
          $this->_log = $log;
          $this->_delta = $text;
          $this->_status = $dnum;
          $this->_where = $where;
          
          fclose( $fh );
      }
  
      # for rlog() function
      function check_delta()
      {
          foreach ($this->_delta as $rev=>$delta) {
              if ($rev == $this->_head) continue;
              $lines=explode("\n",$delta);
              $add=0;
              $del=0;
              $sz=sizeof($lines);
              for ($i=0;$i<$sz;$i++) {
                  if (preg_match('/^([ad])+\d+\s(\d+)$/',$lines[$i],$m)) {
                      if ($m[1] == 'd') {
                          $del+=$m[2];
                      } else {
                          $add+=$m[2];
                          $i+=$m[2];
                      }
                  }
              }
              $this->_change[$rev]="$del $add";
              print "+$del -$add\n";
          }
      }
      
      function _formatString($str)
      {
          $str = preg_replace('/@/', '@@', $str);
          return '@$str@';
      }
      
      # Write content of the RCS file
      function _make_rcs()
      {
          # admin
          $headnum='1.'.$this->numRevisions();
          $out = "head\t" . $headnum . ";\n";
          $out.= "access" . $this->access() . ";\n";
          $out.= "symbols" . $this->_symbols . ";\n";
          $out.= "locks\n\t$this->rcs_user:$headnum; strict;\n";
          $out.=sprintf("comment\t%s;\n", $this->_formatString($this->comment()));
          if ( $this->_expand ) {
             $out.=sprintf("expand\t@%s@;\n", $this->_expand );
          }
          
          $out.="\n";
          
          # delta
          for($i=$this->numRevisions(); $i>0; $i--) {
             $out.=
                 sprintf("\n1.%d\ndate\t%s;\tauthor %s;\tstate Exp;\nbranches;\n",
                    $i, $this->_date[$i], $this->author($i) );
             if( $i == 1 ) {
                 $out.= "next\t;\n";
             } else {
                 $out.= sprintf( "next\t1.%d;\n", ($i - 1));
             }
          }
          
          $out.=sprintf("\n\ndesc\n%s\n\n",
              $this->_formatString( $this->description()) );
          
          for($i=$this->numRevisions(); $i>0; $i--) {
             $out.=sprintf("\n1.$i\nlog\n%s\ntext\n%s\n\n",
                  $this->_formatString( $this->log($i)),
                  $this->_formatString( $this->delta($i)) );
          }
          return $out;
      }
      
      # ======================
      function _binaryChange()
      {
          # Nothing to be done but note for re-writing
          if ($this->_binary )
              $this->_expand = "b";
          # FIXME: unless we have to not do diffs for binary files
      }
      
      # ======================
      function numRevisions()
      {
          $this->_ensureProcessed();
          return $this->_head;
      }
      
      # ======================
      function access()
      {
          $this->_ensureProcessed();
          return $this->_access;
      }
      
      # ======================
      function comment()
      {
          $this->_ensureProcessed();
          return $this->_comment;
      }
      
      # ======================
      function date($version)
      {
          $this->_ensureProcessed();
          $date = $this->_date[$version];
          if( $date ) {
      //        $date = TWiki::Store::RcsFile::_rcsDateTimeToEpoch( $date );
          } else {
              $date = "";
          }
          return $date;
      }
      
      # ======================
      function description()
      {
          $this->_ensureProcessed();
          return $this->_description;
      }
      
      # ======================
      function author($version)
      {
          $this->_ensureProcessed();
          return $this->_author[$version];
      }
      
      # ======================
      function log($version)
      {
          $this->_ensureProcessed();
          return $this->_log[$version];
      }
      
      # ======================
      function delta($version)
      {
          $this->_ensureProcessed();
          return $this->_delta[$version];
      }
      
      # ======================
      function addRevision($text,$log, $date=0)
      {
          $this->_ensureProcessed();
          
          #$this->_save( $this->file(), $text );
          #if( $this->{attachment} )
          #   $text = $this->_readFile( $this->{file} )
          $head = $this->numRevisions();
          if( $head ) {
              //$delta = $this->_diffText( $text, $this->delta($head));
              $delta = $this->_diffText( $this->delta($head),$text);
              $this->_delta[$head] = $delta;
          }   
          $head++;
          $this->_delta[$head] = $text;
          $this->_head = $head;
          $this->_log[$head] = $log;
          $this->_author[$head] = $this->rcs_user;
          if( ! $date )
             $date = time();
          $this->_date[$head] = gmdate('Y.m.d.H.i.s',$date);
      
          return $this->_writeMe();
      }
  
      # ======================
      function _writeMe()
      {
          $dataError = '';
          
          # FIXME move permission to config or similar
          @chmod($this->rcsFile,0644 );
          $fp=fopen($this->rcsFile, 'w'); 
          if( ! $fp ) {
             $dataError = 'Problem opening ' . $this->rcsFile . ' for writing';
          } else {
             #binmode( $out );
             fwrite( $fp, $this->_make_rcs() );
             fclose( $fp );
          }
          chmod($this->rcsFile,0444  ); # FIXME
          return $dataError;
      }
      
      # ======================
      # Replace the top revision
      # Return non empty string with error message if there is a problem
      function replaceRevision($text,$comment,$user,$date)
      {
          $this->_ensureProcessed();
          $this->_delLastRevision();
          $this->addRevision( $text, $comment, $user, $date );
      }
      
      # ======================
      # Delete the last revision - do nothing if there is only one revision
      function deleteRevision()
      {
          $this->_ensureProcessed();
          if( $this->numRevisions() <= 1 );
            return '';
          $this->_delLastRevision();
          return $this->_writeMe();
      }
      
      # ======================
      function _delLastRevision()
      {
          $numRevisions = $this->numRevisions();
          if( $numRevisions > 1 ) {
              # Need to recover text for last revision
              $lastText = $this->getRevision( $numRevisions - 1 );
              $numRevisions--;
              $this->_delta[$numRevisions] = $lastText; // XXX
          } else {
              $numRevisions--;
          }
          $this->_head = $numRevisions;
      }
      
      # ======================
      function revisionDiff($rev1, $rev2, $type='diff')
      {
          $this->_ensureProcessed();
          $text1 = $this->getRevision( $rev1 );
          $text2 = $this->getRevision( $rev2 );
          $diff = $this->_diffText( $text2, $text1, $type );
          return $diff;
      }
      
      # ======================
      function getRevision($version)
      {
          $this->_ensureProcessed();
          $head = $this->numRevisions();
          if ($version > $head) return; // XXX
          if( $version == $head ) {
              return $this->delta( $version );
          } else {
              $headText = $this->delta( $head );
              $text = $this->_mySplit( $headText,1 );
              return $this->_patchN( $text, $head-1, $version );
          }
      }
      
      # ======================
      # If revision file is missing, information based on actual file is returned.
      # Date is in epoch based seconds
      function getRevisionInfo($version)
      {
          $this->_ensureProcessed();
          if( ! $version )
              $version = $this->numRevisions();
          if( $this->_where && $this->_where != 'nofile' ) {
              return array( "", $version, $this->date( $version ),
                  $this->author( $version ), $this->comment( $version ) );
          } else {
              return $this->_getRevisionInfoDefault();
          }
      }
      
      
      # ======================
      # Apply delta (patch) to text. Note that RCS stores reverse deltas,
      # the text for revision x is patched to produce text for revision x-1.
      # It is fiddly dealing with differences in number of line breaks after the
      # end of the text.
      function _patch(&$text,$delta)
      {
          # Both params are references to arrays
          $adj = 0;
          $pos = 0;
          $last = '';
          $extra = '';
   
          $ds=sizeof($delta);
          while( $pos <= $ds ) {
              $d = $delta[$pos];
              if( preg_match("/^([ad])(\d+)\s(\d+)\n(\n*)/",$d, $match) ) {
                  $last = $match[1];
                  $extra = $match[4];
                  $offset = $match[2];
                  $length = $match[3];
                  if( $last == 'd' ) {
                      $start = $offset + $adj - 1;
                      $removed = array_splice( $text, $start, $length );
                      #print "REMOVED ";print_r($removed);
                      $adj -= $length;
                      $pos++;
                  } else if( $last == 'a' ) {
                      $toAdd = array_slice($delta, $pos+1,$length);
                      if( $extra ) {
                          if( $toAdd ) {
                              $toAdd[sizeof($toAdd)] .= $extra;
                          } else {
                              $toAdd = array( $extra );
                          }
                      }
                      array_splice( $text, $offset + $adj, 0, $toAdd );
                      #print "ADDED ";print_r($toAdd);
                      $adj += $length;
                      $pos += $length + 1;
                  }
              } else {
                  $this->warn("wrong! - should be \"[ad]<num> <num>\" and was: \""
                      . $d . "\"\n\n" ); #FIXME remove die
                  //die( "wrong! - should be \"[ad]<num> <num>\" and was: \""
                  //  . $d . "\"\n\n" ); #FIXME remove die
                  return;
              }
          }
      }
      
      
      # ======================
      function _patchN(&$text,$version,$target)
      {
          $deltaText= $this->delta( $version );
          $delta = $this->_mySplit( $deltaText );
          $this->_patch( $text, $delta );
          if( $version == $target ) {
              return implode('', $text );
          } else {
              return $this->_patchN( $text, $version-1, $target );
          }
      }
      
      # ======================
      # Split and make sure we have trailing carriage returns
      function _mySplit($text,$addEntries=0,$add_cr=1)
      {
          $ending = '';
          if( preg_match_all("/(\n)$/", $text,$match) )
              $ending = $match[1][0]; // XXX
      
          $list = preg_split( "/\n/", $text );
          for( $i = 0; $i<sizeof($list); $i++ )
              $list[$i] .= "\n";
      
          if( $ending ) {
              if (strlen($ending) == 1) array_pop($list);
  
              if( $addEntries ) {
                  $len = strlen($ending);
                  if( $list ) {
                     $len--;
                  # ??? $list[sizeof($list)] .= "\n";
                  }
                  for($i=0; $i<$len; $i++ ) {
                      array_push($list,"\n");
                  }
              } else {
                  if( $list ) {
                  # ??? $list[sizeof($list)] .= $ending;
                  } else {
                      $list = array( $ending );
                  }
              }
          }
          # TODO: deal with Mac style line ending??
      
          return $list; # FIXME would it be more efficient to return a reference?
      }
      
      
      # ======================
      # Way of dealing with trailing \ns feels clumsy
      function _diffText($new,$old,$type="")
      {
          $lNew = $this->_mySplit( $new );
          $lOld = $this->_mySplit( $old );
          return $this->_diffN( $lNew, $lOld, $type );
      }
  
      # ====================== 
      function _diffN($new,$old,$type="")
      {
          include_once('difflib.php');
          $diff = new Diff($old, $new);
          if ($type == "diff")
             $formatter = new DiffFormatter;
          else if ($type == "udiff")
             $formatter = new UnifiedDiffFormatter;
          else
             $formatter = new DeltaDiffFormatter;
          $formatter->trailing_cr="";
          $diffs = $formatter->format($diff);
          return $diffs;
      }
  
      # ======================
  
      function _lastNoEmptyItem($items)
      {
          $pos = sizeof($items);
          $count = 0;
          $item;
          while( $pos >= 0 ) {
              $item = $items[$pos];
              if( $item ) break;
              $count++;
              $pos--;
          }
          return array( $pos, $count );
      }
      
      # ======================
      # Deal with trailing carriage returns - Algorithm doesn't give output that RCS format is too happy with
      function _diffEnd($new,$old,$type=0)
      {
         if( $type ) return; # FIXME
         
         list( $posNew, $countNew ) = $this->_lastNoEmptyItem( $new );
         list( $posOld, $countOld ) = $this->_lastNoEmptyItem( $old );
      
         if( $countNew == $countOld );
            return "";
         
         if( $DIFFEND_DEBUG ) {
           print( "countOld, countNew, posOld, posNew, lastOld, lastNew, lenOld: " .
                  "$countOld, $countNew, $posOld, $posNew, " . sizeof($old) . ", " . sizeof($new) . 
                  "," . $old . "\n" );
         }
         
         $posNew++;
         $toDel = ( $countNew < 2 ) ? 1 : $countNew;
         $startA = sizeof($new) - ( ( $countNew > 0 ) ? 1 : 0 );
         $toAdd = ( $countOld < 2 ) ? 1 : $countOld;
         $theEnd = "d$posNew $toDel\na$startA $toAdd\n";
         for( $i=$posOld; $i<sizeof($old); $i++ ) {
            $theEnd .= $old[$i] ? $old[$i] : "\n";
         }
         
         for( $i=0; $i<$countNew; $i++ ) {array_pop($new);}
         array_pop($new);
         for( $i=0; $i<$countOld; $i++ ) {array_pop($old);}
         array_pop($old);
         
         if( $DIFFEND_DEBUG )
            print "--$theEnd--\n";
            
         return $theEnd;
      }
      
      # ======================
      # no type means diff for putting in rcs file, diff means normal diff output
      function _diff($new,$old,$type)
      {
          # Work out diffs to change new to old, params are refs to lists
          include_once('difflib.php'); // XXX
          $diff = new Diff($old, $new);
          //$formatter = new UnifiedDiffFormatter;
          $formatter = new DiffFormatter;
          $formatter->trailing_cr="";
          $diffs = $formatter->format($diff);
          // XXX
  
          $adj = 0;
          $patch = array();
          $del = array();
          $ins = array();
          $out = "";
          $start = 0;
          $start1;
          $chunkSign = "";
          $count = 0;
          $numChunks = sizeof($diffs);
          $last = 0;
          $lengthNew = sizeof($new) - 1;
          foreach ( $diffs as $chunk ) {
             $count++;
             if( DIFF_DEBUG ) print "[\n";
             $chunkSign = "";
             $lines = array();
             foreach ( $chunk as $line ) {
                 list( $sign, $pos, $what ) = $line;
                 if( DIFF_DEBUG )
                     print "$sign $pos \"$what\"\n";
                 if( $chunkSign != $sign && $chunkSign != "") {
                     if( $chunkSign == "-" && $type == "diff" ) {
                        # Might be change of lines
                        $chunkLength = sizeof($chunk);
                        $linesSoFar = $lines;
                        if( $chunkLength == 2 * $linesSoFar ) {
                           $chunkSign = "c";
                           $start1 = $pos;
                        }
                     }
                     if( $chunkSign != "c" )
                        $adj += _addChunk( $chunkSign, $out, $lines, $start, $adj, $type, $start1, $last );
                 }
                 if( ! sizeof($lines) ) {
                     $start = $pos;
                 }
                 if( $chunkSign != "c" )
                     $chunkSign = $sign;
                 array_push($lines, array( $what ));
             }
      
             if( $count == $numChunks ) $last = 1;
             if( $last && $chunkSign == "+" ) {
                 $endings = 0;
                 for( $i=sizeof($old); $i>=0; $i-- ) {
                     if( $old[$i] ) {
                         break;
                     } else {
                         $endings++;
                     }
                 }
                 $has = 0;
                 for( $i=sizeof($lines); $i>=0; $i-- ) {
                     if( $lines[$i] ) {
                         break;
                     } else {
                         $has++;
                     }
                 }
                 for( $i=0; $i<$endings-$has; $i++ ) {
                     array_push($lines, array(""));
                 }
             }
             $adj += $this->_addChunk( $chunkSign, $out, $lines, $start, $adj, $type, $start1, $last, $lengthNew );
             if( DIFF_DEBUG )
                 print "]\n";
          }
          # Make sure we have the correct number of carriage returns at the end
          
          if( $DIFFEND_DEBUG )
             print "pre end: \"$out\"\n";
          return $out; # . $theEnd;
      }
      
      
      # ======================
      function _range($start,$end)
      {
         if( $start == $end ) {
            return "$start";
         } else {
            return "$start,$end";
         }
      }
      
      # ======================
      function _addChunk($chunkSign, $out, $lines, $start, $adj, $type, $start1, $last, $newLines )
      {
         $nLines = sizeof($lines);
         if( preg_match('/(\n+)$/',$lines[sizeof($lines)],$m) ) {
            $nLines += ( ( strlen( $m[1] ) == 0 ) ? 0 : strlen( $m[1] ) -1 );
         }
         if( $nLines > 0 ) {
             if( DIFF_DEBUG )
                print "addChunk chunkSign=$chunkSign start=$start adj=$adj type=$type " .
                      "start1=$start1 last=$last newLines=$newLines nLines=$nLines\n";
             if( $out && !preg_match("/\n$/",$out ))
                 $out .= "\n";
             if( $chunkSign == "c" ) {
                $out .= $this->_range( $start+1, $start+$nLines/2 );
                $out .= "c";
                $out .= $this->_range( $start1+1, $start1+$nLines/2 );
                $out .= "\n";
                $out .= '< ' . implode( '< ', array_slice($lines,0,$nLines/2-1) );
                if( !preg_match('/\n$/',$lines[$nLines/2-1]) )
                    $out .= "\n";
                $out .= "---\n";
                $out .= '> ' . implode( '> ', array_slice($lines,$nLines/2,$nLines-1 - $nLines/2));
                $nLines = 0;
             } else if( $chunkSign == "+" ) {
                if( $type == "diff" ) {
                    $out .= $start-$adj . "a";
                    $out .= $this->_range( $start+1, $start+$nLines ) . "\n";
                    $out .= "> " . implode( "> ", $lines );
                } else {
                    $out .= "a";
                    $out .= $start-$adj;
                    $out .= " $nLines\n";
                    $out .= implode( "", $lines );
                }
             } else {
                if( DIFF_DEBUG ) print "Start nLines newLines: $start $nLines $newLines\n";
                if( $type == "diff" ) {
                    $out .= $this->_range( $start+1, $start+$nLines );
                    $out .= "d";
                    $out .= $start + $adj . "\n";
                    $out .= "< " . implode( "< ", $lines );
                } else {
                    $out .= "d";
                    $out .= $start+1;
                    $out .= " $nLines";
                    if( $last ) $out .= "\n";
                }
                $nLines *= -1;
             }
             $lines = array();
         }
         return $nLines;
      }
      
      
      # ======================
      function validTo()
      {
          $this->_ensureProcessed();
          return $this->_status;
      }
  }
  
  $rcs_dir='RCS';$rcs_user='hello';
  $rcs = new RcsLite($rcs_dir,$rcs_user);
  
  $rcs->_process("m.txt");
  #process( "c:/tmp/rcs/RCS/a.txt" );
  #print "head: $rcs->_head\n";
  #print "status: $rcs->_status\n";
  #print $rcs->_where."\n";
  #print_r($rcs->_author);
  #print_r($rcs->_date);
  #print "log: ";print_r($rcs->_log);
  #print "delta: ";print_r($rcs->_delta);
  
  #for ($i=0;$i<100;$i++)
  #$dd=$rcs->getRevision('10');
  #print($dd);
  //$dd=$rcs->revisionDiff('20','21');
  //$dd=$rcs->revisionDiff('22','21');
  #print_r($dd);
  ## co -p1.7
  #$dd=$rcs->getRevision('7');
  #print($dd);print "---------------\n";
  #$dd=$rcs->getRevision('8');
  #print($dd);
  $rcs->check_delta();
  if ($rcs->_head > 6) {
    ## rcsdiff -r1.3 -r1.8
    $dd=$rcs->revisionDiff('3','8','udiff');
    #$dd=$rcs->revisionDiff('73','74');
    print($dd);
  }
  ## ci -l
  ##$rcs->addRevision("Bang\nHello World !\n",'hello');
  
  // vim:et:sts=4
  ?>
  
  
  


wkpark      2004/10/21 17:26:41

  Modified:    .        wiki.php wikilib.php
  Log:
  first try to fix #300350 (Call-time pass-by-reference)
  
  Revision  Changes    Path
  1.189     +25 -24    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.188
  retrieving revision 1.189
  diff -u -r1.188 -r1.189
  --- wiki.php	20 Oct 2004 13:34:53 -0000	1.188
  +++ wiki.php	21 Oct 2004 08:26:39 -0000	1.189
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.188 2004/10/20 13:34:53 wkpark Exp $
  +// $Id: wiki.php,v 1.189 2004/10/21 08:26:39 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.188 $',1,-1);
  +$_revision = substr('$Revision: 1.189 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -729,7 +729,7 @@
       $user=new User();
       if ($user->id != 'Anonymous') {
         $udb=new UserDB($this);
  -      $udb->checkUser(&$user);
  +      $udb->checkUser($user);
       }
       $comment=strtr($comment,"\t"," ");
       $fp_editlog = fopen($this->editlog_name, 'a+');
  @@ -807,11 +807,11 @@
       return $body;
     }
   
  -  function savePage($page,$comment="",$options=array()) {
  +  function savePage(&$page,$comment="",$options=array()) {
       $user=new User();
       if ($user->id != 'Anonymous') {
         $udb=new UserDB($this);
  -      $udb->checkUser(&$user);
  +      $udb->checkUser($user);
       }
       $REMOTE_ADDR=$_SERVER['REMOTE_ADDR'];
       $comment=escapeshellcmd($comment);
  @@ -1329,7 +1329,7 @@
       }
     }
   
  -  function get_instructions($body="") {
  +  function get_instructions(&$body) {
       global $DBInfo;
       $pikeys=array('#redirect','#action','#title','#keywords','#noindex');
       $pi=array();
  @@ -1591,7 +1591,7 @@
         $links=$this->cache->fetch($this->page->name);
         if ($links !== false) return $links;
       }
  -    $pi=$this->get_instructions();
  +    $pi=$this->get_instructions($dum);
       if ($pi['#format']) return '';
       if ($this->page->exists()) {
         $body=$this->page->get_raw_body();
  @@ -1799,7 +1799,7 @@
         else
           return "[[".$name."]]";
       }
  -    $ret=call_user_func("macro_$name",&$this,$args,&$options);
  +    $ret=call_user_func("macro_$name",$this,$args,$options);
       return $ret;
     }
   
  @@ -1807,11 +1807,11 @@
       if (!function_exists("processor_".$processor)) {
         $pf=getProcessor($processor);
         if (!$pf)
  -      return call_user_func('processor_plain',&$this,$value,$options);
  +      return call_user_func('processor_plain',$this,$value,$options);
         include_once("plugin/processor/$pf.php");
         $processor=$pf;
       }
  -    return call_user_func("processor_$processor",&$this,$value,$options);
  +    return call_user_func("processor_$processor",$this,$value,$options);
     }
   
     function smiley_repl($smiley) {
  @@ -1945,7 +1945,7 @@
       return "<span class='purple'><a name='$nid' id='$nid'></a><a href='#$nid'>(".$id.")</a></span>";
     }
   
  -  function _div($on,$in_div) {
  +  function _div($on,&$in_div) {
       $tag=array("</div>\n","<div>\n");
       if ($on) $in_div++;
       else {
  @@ -1974,21 +1974,22 @@
       if ($options['fixpath']) $this->_fixpath();
   
       if ($body) {
  -      $pi=$this->get_instructions(&$body);
  +      $pi=$this->get_instructions($body);
         if ($pi['#format']) {
           if ($pi['args']) $pi_line="#!".$pi['#format']." $pi[args]\n";
  -        print call_user_func("processor_".$pi['#format'],&$this,$pi_line.$body,$options);
  +        print call_user_func("processor_".$pi['#format'],$this,
  +          $pi_line.$this->page->body,$options);
           return;
         }
         $lines=explode("\n",$body);
       } else {
         #$pi=$this->get_instructions(&$body);
  -      $pi=$this->get_instructions();
  +      $pi=$this->get_instructions($dum);
         $body=$this->page->get_raw_body($options);
         $this->pi=$pi;
         if ($pi['#format']) {
           if ($pi['args']) $pi_line="#!".$pi['#format']." $pi[args]\n";
  -        print call_user_func("processor_".$pi['#format'],&$this,$pi_line.$body,$options);
  +        print call_user_func("processor_".$pi['#format'],$this,$pi_line.$body,$options);
           return;
         }
   
  @@ -2042,7 +2043,7 @@
             $text.=$this->_table(0)."<br />\n";$in_table=0; continue;
           } else {
             #if ($in_p) { $text.="</div><br />\n"; $in_p='';}
  -          if ($in_p) { $text.=$this->_div(0,&$in_div)."<br />\n"; $in_p='';}
  +          if ($in_p) { $text.=$this->_div(0,$in_div)."<br />\n"; $in_p='';}
             else if ($in_p=='') { $text.="<br />\n";}
             continue;
           }
  @@ -2058,9 +2059,9 @@
         $p_close='';
         if (preg_match('/^-{4,}/',$line)) {
           if ($DBInfo->auto_linebreak) $this->nobr=1; // XXX
  -        if ($in_p) { $p_close=$this->_div(0,&$in_div); $in_p='';}
  +        if ($in_p) { $p_close=$this->_div(0,$in_div); $in_p='';}
         } else if ($in_p == '') {
  -        $p_close=$this->_div(1,&$in_div);
  +        $p_close=$this->_div(1,$in_div);
           $in_p= $line;
         }
   
  @@ -2231,7 +2232,7 @@
            $in_pre=0;
            if ($processor) {
              $value=$this->pre_line;
  -           $out= call_user_func("processor_$processor",&$this,$value,$options);
  +           $out= call_user_func("processor_$processor",$this,$value,$options);
              $line=$out.$line;
            } else if ($in_quote) {
               # htmlfy '<'
  @@ -2297,7 +2298,7 @@
       }
       # close div
       #if ($in_p) $close.="</div>\n"; # </para>
  -    if ($in_p) $close.=$this->_div(0,&$in_div); # </para>
  +    if ($in_p) $close.=$this->_div(0,$in_div); # </para>
   
       # activate <del></del> tag
       #$text=preg_replace("/(&lt;)(\/?del>)/i","<\\2",$text);
  @@ -3311,7 +3312,7 @@
           $button= $formatter->link_to("?action=edit",$formatter->icon['create']._("Create this page"));
           print $button;
           print sprintf(_(" or click %s to fullsearch this page.\n"),$formatter->link_to("?action=fullsearch&amp;value=$options[page]",_("title")));
  -        print $formatter->macro_repl('LikePages',$page->name,&$err);
  +        print $formatter->macro_repl('LikePages',$page->name,$err);
           if ($err['extra'])
             print $err['extra'];
   
  @@ -3339,7 +3340,7 @@
   #    }
   
       #$formatter->get_redirect();
  -    $formatter->pi=$formatter->get_instructions();
  +    $formatter->pi=$formatter->get_instructions($dum);
       if ($DBInfo->body_attr)
         $options['attr']=$DBInfo->body_attr;
       $formatter->send_header("",$options);
  @@ -3393,7 +3394,7 @@
     if ($action) {
       $options['metatags']='<meta name="robots" content="noindex,nofollow" />';
   
  -    if (!$DBInfo->security->is_allowed($action,&$options)) {
  +    if (!$DBInfo->security->is_allowed($action,$options)) {
         $msg=sprintf(_("You are not allowed to '%s'"),$action);
         $formatter->send_header("Status: 406 Not Acceptable",$options);
         $formatter->send_title($msg,"", $options);
  @@ -3402,7 +3403,7 @@
         $formatter->send_footer($args,$options);
         return;
       } else if ($_SERVER['REQUEST_METHOD']=="POST" and
  -      $DBInfo->security->is_protected($action,&$options) and
  +      $DBInfo->security->is_protected($action,$options) and
         !$DBInfo->security->is_valid_password($_POST['passwd'],$options)) {
         # protect some POST actions and check a password
   
  
  
  
  1.123     +5 -5      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.122
  retrieving revision 1.123
  diff -u -r1.122 -r1.123
  --- wikilib.php	15 Oct 2004 15:35:01 -0000	1.122
  +++ wikilib.php	21 Oct 2004 08:26:40 -0000	1.123
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.122 2004/10/15 15:35:01 wkpark Exp $
  +// $Id: wikilib.php,v 1.123 2004/10/21 08:26:40 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -266,7 +266,7 @@
       return false;
     }
   
  -  function checkUser($user) {
  +  function checkUser(&$user) {
       $tmp=$this->getUser($user->id);
       if ($tmp->info['ticket'] != $user->ticket) {
         $user->id='Anonymous';
  @@ -887,7 +887,7 @@
   
   function do_titlesearch($formatter,$options) {
   
  -  $out= macro_TitleSearch($formatter,$options['value'],&$ret);
  +  $out= macro_TitleSearch($formatter,$options['value'],$ret);
   
     if ($ret['hits']==1) {
       $options['value']=$ret['value'];
  @@ -1245,7 +1245,7 @@
     $user=new User(); # get from COOKIE VARS
     if ($user->id != 'Anonymous') {
       $udb=new UserDB($DBInfo);
  -    $udb->checkUser(&$user);
  +    $udb->checkUser($user);
     }
     $url=$formatter->link_url("UserPreferences");
   
  @@ -1716,7 +1716,7 @@
   
   
   
  -function macro_TitleSearch($formatter="",$needle="",$opts=array()) {
  +function macro_TitleSearch($formatter="",$needle="",&$opts) {
     global $DBInfo;
   
     $url=$formatter->link_url($formatter->page->urlname);
  
  
  


wkpark      2004/10/21 17:27:06

  Modified:    plugin   Blog.php FastSearch.php FullSearch.php Gallery.php
                        LikePages.php OeKaki.php RecentChanges.php
                        UploadFile.php bookmark.php dot.php foaf.php
                        login.php minilogin.php rename.php rss.php
                        userform.php
  Log:
  first try to fix #300350 (Call-time pass-by-reference)
  
  Revision  Changes    Path
  1.23      +2 -2      moniwiki/plugin/Blog.php
  
  Index: Blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Blog.php,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- Blog.php	18 Aug 2004 16:54:13 -0000	1.22
  +++ Blog.php	21 Oct 2004 08:27:01 -0000	1.23
  @@ -5,7 +5,7 @@
   //
   // Usage: ?action=Blog
   //
  -// $Id: Blog.php,v 1.22 2004/08/18 16:54:13 wkpark Exp $
  +// $Id: Blog.php,v 1.23 2004/10/21 08:27:01 wkpark Exp $
   
   function updateBlogList($formatter) {
     global $DBInfo;
  @@ -184,7 +184,7 @@
       }
       
       $formatter->page->write($raw_body);
  -    $DBInfo->savePage(&$formatter->page,$log,$options);
  +    $DBInfo->savePage($formatter->page,$log,$options);
       updateBlogList($formatter);
   
       $formatter->send_page();
  
  
  
  1.6       +3 -3      moniwiki/plugin/FastSearch.php
  
  Index: FastSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FastSearch.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- FastSearch.php	27 Aug 2004 01:57:04 -0000	1.5
  +++ FastSearch.php	21 Oct 2004 08:27:01 -0000	1.6
  @@ -13,9 +13,9 @@
   //
   // Usage: [[FastSearch(string)]]
   //
  -// $Id: FastSearch.php,v 1.5 2004/08/27 01:57:04 wkpark Exp $
  +// $Id: FastSearch.php,v 1.6 2004/10/21 08:27:01 wkpark Exp $
   
  -function macro_FastSearch($formatter,$value="",$opts=array()) {
  +function macro_FastSearch($formatter,$value="",&$opts) {
     global $DBInfo;
     $theDB=$DBInfo->data_dir."/index.db";
   
  @@ -115,7 +115,7 @@
     $ret=$options;
   
     $title= sprintf(_("Full text search for \"%s\""), $options['value']);
  -  $out= macro_FastSearch($formatter,$options['value'],&$ret);
  +  $out= macro_FastSearch($formatter,$options['value'],$ret);
     $options['msg']=$ret['msg'];
     $formatter->send_header("",$options);
     $formatter->send_title($title,$formatter->link_url("FindPage"),$options);
  
  
  
  1.7       +3 -3      moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- FullSearch.php	26 Aug 2004 18:35:42 -0000	1.6
  +++ FullSearch.php	21 Oct 2004 08:27:01 -0000	1.7
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
   //
  -// $Id: FullSearch.php,v 1.6 2004/08/26 18:35:42 wkpark Exp $
  +// $Id: FullSearch.php,v 1.7 2004/10/21 08:27:01 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
  @@ -14,7 +14,7 @@
       $title= sprintf(_("BackLinks search for \"%s\""), $options['value']);
     else
       $title= sprintf(_("Full text search for \"%s\""), $options['value']);
  -  $out= macro_FullSearch($formatter,$options['value'],&$ret);
  +  $out= macro_FullSearch($formatter,$options['value'],$ret);
     $options['msg']=$ret['msg'];
     $formatter->send_header("",$options);
     $formatter->send_title($title,$formatter->link_url("FindPage"),$options);
  @@ -30,7 +30,7 @@
     $formatter->send_footer($args,$options);
   }
   
  -function macro_FullSearch($formatter="",$value="", $opts=array()) {
  +function macro_FullSearch($formatter="",$value="", &$opts) {
     global $DBInfo;
     $needle=$value;
     if ($value === true) {
  
  
  
  1.15      +3 -3      moniwiki/plugin/Gallery.php
  
  Index: Gallery.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Gallery.php,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- Gallery.php	4 Sep 2004 15:57:15 -0000	1.14
  +++ Gallery.php	21 Oct 2004 08:27:01 -0000	1.15
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Gallery]]
   //
  -// $Id: Gallery.php,v 1.14 2004/09/04 15:57:15 wkpark Exp $
  +// $Id: Gallery.php,v 1.15 2004/10/21 08:27:01 wkpark Exp $
   
   function get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -52,7 +52,7 @@
     return $pnut;
   }
   
  -function macro_Gallery($formatter,$value,$options='') {
  +function macro_Gallery($formatter,$value,&$options) {
     global $DBInfo;
   
     # add some actions at the bottom of the page
  @@ -271,7 +271,7 @@
       return;
     }
   
  -  $ret=macro_Gallery($formatter,'',&$options);
  +  $ret=macro_Gallery($formatter,'',$options);
   
     if (isset($options['passwd']) and $options['comments']) {
       $options['msg']=sprintf(_("Go back or return to %s"),$formatter->link_tag($formatter->page->urlname,"",$options['page']));
  
  
  
  1.4       +3 -3      moniwiki/plugin/LikePages.php
  
  Index: LikePages.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/LikePages.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- LikePages.php	2 Oct 2004 02:42:53 -0000	1.3
  +++ LikePages.php	21 Oct 2004 08:27:01 -0000	1.4
  @@ -4,12 +4,12 @@
   // a LikePages plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: LikePages.php,v 1.3 2004/10/02 02:42:53 wkpark Exp $
  +// $Id: LikePages.php,v 1.4 2004/10/21 08:27:01 wkpark Exp $
   
   function do_LikePages($formatter,$options) {
   
     $opts['metawiki']=$options['metawiki'];
  -  $out= macro_LikePages($formatter,$options['page'],&$opts);
  +  $out= macro_LikePages($formatter,$options['page'],$opts);
     
     $title = $opts['msg'];
     $formatter->send_header("",$options);
  @@ -20,7 +20,7 @@
     $formatter->send_footer("",$options);
   }
   
  -function macro_LikePages($formatter="",$args="",$opts=array()) {
  +function macro_LikePages($formatter="",$args="",&$opts) {
     global $DBInfo;
   
     $pname=_preg_escape($args);
  
  
  
  1.5       +2 -2      moniwiki/plugin/OeKaki.php
  
  Index: OeKaki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/OeKaki.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- OeKaki.php	11 Aug 2003 05:19:20 -0000	1.4
  +++ OeKaki.php	21 Oct 2004 08:27:01 -0000	1.5
  @@ -4,7 +4,7 @@
   //
   // Usage: [[OeKaki(hello)]]
   //
  -// $Id: OeKaki.php,v 1.4 2003/08/11 05:19:20 wkpark Exp $
  +// $Id: OeKaki.php,v 1.5 2004/10/21 08:27:01 wkpark Exp $
   // vim:et:ts=2:
   
   function macro_OeKaki($formatter,$value) {
  @@ -84,7 +84,7 @@
   
         $formatter->page->write($body);
         # XXX Oekaki post does not hav any information about user id.
  -      $DBInfo->savePage(&$formatter->page,$log,$options);
  +      $DBInfo->savePage($formatter->page,$log,$options);
       }
   
       if ($backup_imgpath != $imgpath) copy($imgpath,$backup_imgpath);
  
  
  
  1.10      +2 -2      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- RecentChanges.php	2 Oct 2004 02:42:53 -0000	1.9
  +++ RecentChanges.php	21 Oct 2004 08:27:01 -0000	1.10
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.9 2004/10/02 02:42:53 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.10 2004/10/21 08:27:01 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     $options['trail']='';
  @@ -69,7 +69,7 @@
     $user=new User(); # retrive user info
     if ($user->id != 'Anonymous') {
       $udb=new UserDB($DBInfo);
  -    $udb->checkUser(&$user);
  +    $udb->checkUser($user);
     }
   
     if ($user->id == 'Anonymous')
  
  
  
  1.8       +2 -2      moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- UploadFile.php	2 Sep 2004 10:00:01 -0000	1.7
  +++ UploadFile.php	21 Oct 2004 08:27:01 -0000	1.8
  @@ -4,7 +4,7 @@
   // a UploadFile plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: UploadFile.php,v 1.7 2004/09/02 10:00:01 wkpark Exp $
  +// $Id: UploadFile.php,v 1.8 2004/10/21 08:27:01 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -133,7 +133,7 @@
         $raw_body.="\n";
       $raw_body.=$log_entry;
       $p->write($raw_body);
  -    $DBInfo->savePage(&$p,$comment,$options);
  +    $DBInfo->savePage($p,$comment,$options);
     } else
       $DBInfo->addLogEntry($key, $REMOTE_ADDR,$comment,"UPLOAD");
     
  
  
  
  1.2       +2 -2      moniwiki/plugin/bookmark.php
  
  Index: bookmark.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/bookmark.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- bookmark.php	15 Aug 2003 21:30:36 -0000	1.1
  +++ bookmark.php	21 Oct 2004 08:27:01 -0000	1.2
  @@ -4,7 +4,7 @@
   // a bookmark action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: bookmark.php,v 1.1 2003/08/15 21:30:36 wkpark Exp $
  +// $Id: bookmark.php,v 1.2 2004/10/21 08:27:01 wkpark Exp $
   
   function do_bookmark($formatter,$options) {
     global $DBInfo;
  @@ -13,7 +13,7 @@
     $user=new User(); # get cookie
     if ($user->id != 'Anonymous') {
       $udb=new UserDB($DBInfo);
  -    $udb->checkUser(&$user);
  +    $udb->checkUser($user);
     }
   
     if (!$options['time']) {
  
  
  
  1.5       +6 -6      moniwiki/plugin/dot.php
  
  Index: dot.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/dot.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- dot.php	10 Aug 2003 08:20:36 -0000	1.4
  +++ dot.php	21 Oct 2004 08:27:01 -0000	1.5
  @@ -3,13 +3,13 @@
   // All rights reserved. Distributable under GPL see COPYING
   // dot action plugin for the MoniWiki
   //
  -// $Id: dot.php,v 1.4 2003/08/10 08:20:36 wkpark Exp $
  +// $Id: dot.php,v 1.5 2004/10/21 08:27:01 wkpark Exp $
   
   define(DEPTH,3);
   define(LEAFCOUNT,2);
   define(FONTSIZE,8);
   
  -  function getLeafs($pagename,$node,$color,$depth,$count=LEAFCOUNT) {
  +  function getLeafs($pagename,&$node,&$color,$depth,$count=LEAFCOUNT) {
       $p= new WikiPage($pagename);
       $f= new Formatter($p);
       $links=$f->get_pagelinks();
  @@ -33,19 +33,19 @@
       if ($nodelink) $node[$pagename]=array_keys($nodelink);
     }
   
  -  function makeTree($pagename,$node,$color,$depth=DEPTH,$count=LEAFCOUNT) {
  +  function makeTree($pagename,&$node,&$color,$depth=DEPTH,$count=LEAFCOUNT) {
       if ($depth > 0) {
         if (!$color[$pagename]) $color[$pagename]=$depth;
         #print $depth."\n";
         $depth--;
  -      getLeafs($pagename,&$node,&$color,$depth,$count);
  +      getLeafs($pagename,$node,$color,$depth,$count);
         if ($node[$pagename]) {
           # select 25% of links
           $size= (int) (sizeof($node[$pagename]) * 0.25);
           $slice= ($size > $count) ? $size: $count;
           $selected=array_slice($node[$pagename],0,$slice);
           foreach($selected as $leaf)
  -          makeTree($leaf,&$node,&$color,$depth,$count);
  +          makeTree($leaf,$node,$color,$depth,$count);
         }
       }
       return;
  @@ -64,7 +64,7 @@
     else $fontsize=FONTSIZE;
   
     $color=array();
  -  makeTree($options['page'],&$node,&$color,$depth,$count);
  +  makeTree($options['page'],$node,$color,$depth,$count);
     if (!$node) $node=array($options['page']=>array());
     #print_r($color);
     foreach ($color as $key=>$val) $color[$key]=$depth-$val;
  
  
  
  1.4       +4 -4      moniwiki/plugin/foaf.php
  
  Index: foaf.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/foaf.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- foaf.php	27 Aug 2004 01:50:58 -0000	1.3
  +++ foaf.php	21 Oct 2004 08:27:01 -0000	1.4
  @@ -3,7 +3,7 @@
   // Public Domain ?
   // and modified for the FOAF.
   // See http://moniwiki.sourceforge.net/wiki.php/FoafOnMoniWiki
  -// $Id: foaf.php,v 1.3 2004/08/27 01:50:58 wkpark Exp $
  +// $Id: foaf.php,v 1.4 2004/10/21 08:27:01 wkpark Exp $
   //
   class FoafParser {
   
  @@ -14,7 +14,7 @@
      var $name = "";
   
      function FoafParser($info) {
  -     $this->info=&$info;
  +     $this->info=$info;
      }
   
      function startElement($parser, $tagName, $attrs) {
  @@ -97,8 +97,8 @@
       if (in_array ("comment", $args)) $options['comment']=1;
     }
   
  -  $rss_parser = new FoafParser(&$info);
  -  xml_set_object($xml_parser,&$rss_parser);
  +  $rss_parser = new FoafParser($info);
  +  xml_set_object($xml_parser,$rss_parser);
     xml_set_element_handler($xml_parser, "startElement", "endElement");
     xml_set_character_data_handler($xml_parser, "characterData");
   
  
  
  
  1.6       +2 -2      moniwiki/plugin/login.php
  
  Index: login.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/login.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- login.php	3 Aug 2004 11:23:23 -0000	1.5
  +++ login.php	21 Oct 2004 08:27:01 -0000	1.6
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Login]]
   //
  -// $Id: login.php,v 1.5 2004/08/03 11:23:23 wkpark Exp $
  +// $Id: login.php,v 1.6 2004/10/21 08:27:01 wkpark Exp $
   
   function macro_login($formatter,$value="",$options="") {
     global $DBInfo;
  @@ -16,7 +16,7 @@
     $user=new User(); # get from COOKIE VARS
     if ($user->id != 'Anonymous') {
       $udb=new UserDB($DBInfo);
  -    $udb->checkUser(&$user);
  +    $udb->checkUser($user);
     }
   
     if ($user->id == 'Anonymous')
  
  
  
  1.2       +2 -2      moniwiki/plugin/minilogin.php
  
  Index: minilogin.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/minilogin.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- minilogin.php	7 Aug 2003 21:03:43 -0000	1.1
  +++ minilogin.php	21 Oct 2004 08:27:01 -0000	1.2
  @@ -5,7 +5,7 @@
   //
   // Usage: [[MiniLogin]]
   //
  -// $Id: minilogin.php,v 1.1 2003/08/07 21:03:43 wkpark Exp $
  +// $Id: minilogin.php,v 1.2 2004/10/21 08:27:01 wkpark Exp $
   
   function macro_minilogin($formatter,$value="",$options="") {
     global $DBInfo;
  @@ -15,7 +15,7 @@
     $user=new User(); # get from COOKIE VARS
     if ($user->id != 'Anonymous') {
       $udb=new UserDB($DBInfo);
  -    $udb->checkUser(&$user);
  +    $udb->checkUser($user);
     }
   
     if ($user->id == 'Anonymous') {
  
  
  
  1.7       +2 -2      moniwiki/plugin/rename.php
  
  Index: rename.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rename.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- rename.php	4 Sep 2004 02:50:37 -0000	1.6
  +++ rename.php	21 Oct 2004 08:27:01 -0000	1.7
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a rename action plugin for the MoniWiki
   //
  -// $Id: rename.php,v 1.6 2004/09/04 02:50:37 wkpark Exp $
  +// $Id: rename.php,v 1.7 2004/10/21 08:27:01 wkpark Exp $
   
   function do_post_rename($formatter,$options) {
     global $DBInfo;
  @@ -25,7 +25,7 @@
             $body= preg_replace("/$regex/m",$options['name'],$body);
             $f->page->write($body);
             if (!$options['show_only'])
  -            $DBInfo->savePage(&$f->page,'',$options);
  +            $DBInfo->savePage($f->page,'',$options);
             $msg.=sprintf(_("'%s' is changed"),
               $f->link_tag(_rawurlencode($page),
                 "?action=highlight&amp;value=".$new_encodedname))."<br />";
  
  
  
  1.4       +2 -2      moniwiki/plugin/rss.php
  
  Index: rss.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rss.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- rss.php	10 Aug 2003 08:20:36 -0000	1.3
  +++ rss.php	21 Oct 2004 08:27:01 -0000	1.4
  @@ -1,7 +1,7 @@
   <?php
   // from http://www.sitepoint.com/examples/phpxml/sitepointcover-oo.php.txt
   // Public Domain ?
  -// $Id: rss.php,v 1.3 2003/08/10 08:20:36 wkpark Exp $
  +// $Id: rss.php,v 1.4 2004/10/21 08:27:01 wkpark Exp $
   class WikiRSSParser {
   
      var $insideitem = false;
  @@ -92,7 +92,7 @@
     $xml_parser = xml_parser_create();
   
     $rss_parser = new WikiRSSParser();
  -  xml_set_object($xml_parser,&$rss_parser);
  +  xml_set_object($xml_parser,$rss_parser);
     xml_set_element_handler($xml_parser, "startElement", "endElement");
     xml_set_character_data_handler($xml_parser, "characterData");
   
  
  
  
  1.8       +2 -2      moniwiki/plugin/userform.php
  
  Index: userform.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/userform.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- userform.php	3 Aug 2004 11:19:50 -0000	1.7
  +++ userform.php	21 Oct 2004 08:27:01 -0000	1.8
  @@ -4,7 +4,7 @@
   // a userform action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: userform.php,v 1.7 2004/08/03 11:19:50 wkpark Exp $
  +// $Id: userform.php,v 1.8 2004/10/21 08:27:01 wkpark Exp $
   
   function do_userform($formatter,$options) {
     global $DBInfo;
  @@ -12,7 +12,7 @@
     $user=new User(); # get cookie
     if ($user->id != 'Anonymous') { # XXX
       $udb=new UserDB($DBInfo);
  -    $udb->checkUser(&$user);
  +    $udb->checkUser($user);
     }
     $id=$options['login_id'];
   
  
  
  


wkpark      2004/10/21 17:27:09

  Modified:    plugin/security community.php mustlogin.php needtologin.php
                        sample.php userbased.php wikimaster.php
  Log:
  first try to fix #300350 (Call-time pass-by-reference)
  
  Revision  Changes    Path
  1.2       +7 -7      moniwiki/plugin/security/community.php
  
  Index: community.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/community.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- community.php	14 Oct 2004 12:25:35 -0000	1.1
  +++ community.php	21 Oct 2004 08:27:07 -0000	1.2
  @@ -1,6 +1,6 @@
   <?php
   # a community security plugin for the MoniWiki
  -# $Id: community.php,v 1.1 2004/10/14 12:25:35 wkpark Exp $
  +# $Id: community.php,v 1.2 2004/10/21 08:27:07 wkpark Exp $
   
   class Security_community extends Security {
     var $DB;
  @@ -18,7 +18,7 @@
       return $this->DB->_isWritable($options['page']);
     }
   
  -  function may_edit($action,$options) {
  +  function may_edit($action,&$options) {
       if (!$options['page']) return 0; # XXX
       if (in_array($options['page'],$this->public_pages)) return 1;
       if ($options['id']=='Anonymous') {
  @@ -29,7 +29,7 @@
       return 1;
     }
   
  -  function may_blog($action,$options) {
  +  function may_blog($action,&$options) {
       if (!$options['page']) return 0; # XXX
       if ($options['id']=='Anonymous') {
         $options['err']=sprintf(_("You are not allowed to '%s' on this page"),$action);
  @@ -39,7 +39,7 @@
       return 1;
     }
   
  -  function may_uploadfile($action,$options) {
  +  function may_uploadfile($action,&$options) {
       if (!$options['page']) return 0;
       if ($options['id']=='Anonymous') {
         $options['err']=sprintf(_("You are not allowed to '%s' on this page"),$action);
  @@ -49,7 +49,7 @@
       return 1;
     }
   
  -  function is_allowed($action='read',$options) {
  +  function is_allowed($action='read',&$options) {
       $allowed_actions=array('theme','css','userform','bookmark','goto','dot',
         'trackback','rss_rc','rss','blogrss','urlencode','deletepage','titlesearch','info','download','comment');
       if (in_array(strtolower($action),$allowed_actions)) return 1;
  @@ -60,12 +60,12 @@
       }
       $method='may_'.$action;
       if (method_exists($this, $method)) {
  -      return $this->$method ($action,&$options);
  +      return $this->$method ($action,$options);
       }
       return 1;
     }
   
  -  function is_protected($action="read",$options) {
  +  function is_protected($action="read",&$options) {
       # password protected POST actions
       $protected_actions=array("rcs","rcspurge","chmod","backup","restore");
       $action=strtolower($action);
  
  
  
  1.2       +5 -5      moniwiki/plugin/security/mustlogin.php
  
  Index: mustlogin.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/mustlogin.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- mustlogin.php	28 Aug 2004 07:39:58 -0000	1.1
  +++ mustlogin.php	21 Oct 2004 08:27:07 -0000	1.2
  @@ -1,6 +1,6 @@
   <?php
   # a needtologin security plugin for the MoniWiki
  -# $Id: mustlogin.php,v 1.1 2004/08/28 07:39:58 wkpark Exp $
  +# $Id: mustlogin.php,v 1.2 2004/10/21 08:27:07 wkpark Exp $
   
   class Security_mustlogin extends Security {
     var $DB;
  @@ -16,7 +16,7 @@
       return $this->DB->_isWritable($options['page']);
     }
   
  -  function may_edit($action,$options) {
  +  function may_edit($action,&$options) {
       $public_pages=array('WikiSandBox','WikiSandbox','GuestBook','SandBox');
       if (!$options['page']) return 0; # XXX
       if (in_array($options['page'],$public_pages)) return 1;
  @@ -28,7 +28,7 @@
       return 1;
     }
   
  -  function may_blog($action,$options) {
  +  function may_blog($action,&$options) {
       if (!$options['page']) return 0; # XXX
       if ($options['id']=='Anonymous') {
         $options['err']=sprintf(_("You are not allowed to '%s' on this page"),$action);
  @@ -38,7 +38,7 @@
       return 1;
     }
   
  -  function may_uploadfile($action,$options) {
  +  function may_uploadfile($action,&$options) {
       if (!$options['page']) return 0;
       if ($options['id']=='Anonymous') {
         $options['err']=sprintf(_("You are not allowed to '%s' on this page"),$action);
  @@ -48,7 +48,7 @@
       return 1;
     }
   
  -  function is_allowed($action="read",$options) {
  +  function is_allowed($action="read",&$options) {
       $allowed_actions=array("userform");
       if (in_array($action,$allowed_actions)) return 1;
       $method='may_'.$action;
  
  
  
  1.5       +6 -6      moniwiki/plugin/security/needtologin.php
  
  Index: needtologin.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/needtologin.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- needtologin.php	28 Sep 2003 08:23:11 -0000	1.4
  +++ needtologin.php	21 Oct 2004 08:27:07 -0000	1.5
  @@ -1,6 +1,6 @@
   <?php
   # a needtologin security plugin for the MoniWiki
  -# $Id: needtologin.php,v 1.4 2003/09/28 08:23:11 wkpark Exp $
  +# $Id: needtologin.php,v 1.5 2004/10/21 08:27:07 wkpark Exp $
   
   class Security_needtologin extends Security {
     var $DB;
  @@ -16,7 +16,7 @@
       return $this->DB->_isWritable($options['page']);
     }
   
  -  function may_edit($action,$options) {
  +  function may_edit($action,&$options) {
       $public_pages=array('WikiSandBox','WikiSandbox','GuestBook','SandBox');
       if (!$options['page']) return 0; # XXX
       if (in_array($options['page'],$public_pages)) return 1;
  @@ -28,7 +28,7 @@
       return 1;
     }
   
  -  function may_blog($action,$options) {
  +  function may_blog($action,&$options) {
       if (!$options['page']) return 0; # XXX
       if ($options['id']=='Anonymous') {
         $options['err']=sprintf(_("You are not allowed to '%s' on this page"),$action);
  @@ -38,7 +38,7 @@
       return 1;
     }
   
  -  function may_uploadfile($action,$options) {
  +  function may_uploadfile($action,&$options) {
       if (!$options['page']) return 0;
       if ($options['id']=='Anonymous') {
         $options['err']=sprintf(_("You are not allowed to '%s' on this page"),$action);
  @@ -48,10 +48,10 @@
       return 1;
     }
   
  -  function is_allowed($action="read",$options) {
  +  function is_allowed($action="read",&$options) {
       $method='may_'.$action;
       if (method_exists($this, $method)) {
  -      return $this->$method ($action,&$options);
  +      return $this->$method ($action,$options);
       }
       return 1;
     }
  
  
  
  1.3       +2 -2      moniwiki/plugin/security/sample.php
  
  Index: sample.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/sample.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- sample.php	11 Aug 2003 05:19:57 -0000	1.2
  +++ sample.php	21 Oct 2004 08:27:07 -0000	1.3
  @@ -1,6 +1,6 @@
   <?php
   # a sample security plugin for the MoniWiki
  -# $Id: sample.php,v 1.2 2003/08/11 05:19:57 wkpark Exp $
  +# $Id: sample.php,v 1.3 2004/10/21 08:27:07 wkpark Exp $
   
   class Security_sample extends Security {
     var $DB;
  @@ -16,7 +16,7 @@
       return $this->DB->_isWritable($options['page']);
     }
   
  -  function is_allowed($action="read",$options) {
  +  function is_allowed($action="read",&$options) {
       # basic allowed actions
       $allowed_actions=array("edit","savepage","read","diff","info","likepages","uploadfile","uploadedfiles","css","theme","deletepage");
       $action=strtolower($action);
  
  
  
  1.6       +7 -7      moniwiki/plugin/security/userbased.php
  
  Index: userbased.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/userbased.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- userbased.php	7 Jan 2004 01:48:48 -0000	1.5
  +++ userbased.php	21 Oct 2004 08:27:07 -0000	1.6
  @@ -1,6 +1,6 @@
   <?php
   # a user based security plugin for the MoniWiki
  -# $Id: userbased.php,v 1.5 2004/01/07 01:48:48 wkpark Exp $
  +# $Id: userbased.php,v 1.6 2004/10/21 08:27:07 wkpark Exp $
   
   class Security_userbased extends Security {
     var $DB;
  @@ -22,7 +22,7 @@
       return 1;
     }
   
  -  function may_deletepage($action,$options) {
  +  function may_deletepage($action,&$options) {
       if (!$options['page']) return 0;
       if (in_array($options['id'],$this->allowed_users)) return 1;
       $options['err']=sprintf(_("You are not allowed to '%s' on this page."),$action);
  @@ -30,7 +30,7 @@
       return 0;
     }
   
  -  function may_deletefile($action,$options) {
  +  function may_deletefile($action,&$options) {
       if (!$options['page']) return 0;
       if (in_array($options['id'],$this->allowed_users)) return 1;
       $options['err']=sprintf(_("You are not allowed to '%s' on this page."),$action);
  @@ -38,7 +38,7 @@
       return 0;
     }
   
  -  function may_rename($action,$options) {
  +  function may_rename($action,&$options) {
       if (!$options['page']) return 0;
       if (in_array($options['id'],$this->allowed_users)) return 1;
       $options['err']=sprintf(_("You are not allowed to '%s' on this page."),$action);
  @@ -51,7 +51,7 @@
       return 1;
     }
   
  -  function is_allowed($action='read',$options) {
  +  function is_allowed($action='read',&$options) {
       $allowed_actions=array('theme','css','userform','bookmark','goto','dot',
         'trackback','rss_rc','rss','blogrss','urlencode');
       if (in_array(strtolower($action),$allowed_actions)) return 1;
  @@ -62,12 +62,12 @@
       }
       $method='may_'.$action;
       if (method_exists($this, $method)) {
  -      return $this->$method ($action,&$options);
  +      return $this->$method ($action,$options);
       }
       return 1;
     }
   
  -  function is_protected($action="read",$options) {
  +  function is_protected($action="read",&$options) {
       # password protected POST actions
       $protected_actions=array("rcs","rcspurge","chmod","backup","restore");
       $action=strtolower($action);
  
  
  
  1.5       +5 -5      moniwiki/plugin/security/wikimaster.php
  
  Index: wikimaster.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/wikimaster.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- wikimaster.php	7 Jan 2004 01:48:48 -0000	1.4
  +++ wikimaster.php	21 Oct 2004 08:27:07 -0000	1.5
  @@ -1,6 +1,6 @@
   <?php
   # a user based security plugin for the MoniWiki
  -# $Id: wikimaster.php,v 1.4 2004/01/07 01:48:48 wkpark Exp $
  +# $Id: wikimaster.php,v 1.5 2004/10/21 08:27:07 wkpark Exp $
   
   class Security_wikimaster extends Security {
     var $DB;
  @@ -19,7 +19,7 @@
       return 1;
     }
   
  -  function may_deletepage($action,$options) {
  +  function may_deletepage($action,&$options) {
       if (!$options['page']) return 0;
       if (in_array($options['id'],$this->allowed_users)) return 1;
       $options['err']=sprintf(_("You are not allowed to '%s' on this page."),$action);
  @@ -27,7 +27,7 @@
       return 0;
     }
   
  -  function may_deletefile($action,$options) {
  +  function may_deletefile($action,&$options) {
       if (!$options['page']) return 0;
       if (in_array($options['id'],$this->allowed_users)) return 1;
       $options['err']=sprintf(_("You are not allowed to '%s' on this page."),$action);
  @@ -35,7 +35,7 @@
       return 0;
     }
   
  -  function may_rename($action,$options) {
  +  function may_rename($action,&$options) {
       if (!$options['page']) return 0;
       if (in_array($options['id'],$this->allowed_users)) return 1;
       $options['err']=sprintf(_("You are not allowed to '%s' on this page."),$action);
  @@ -54,7 +54,7 @@
       return 0;
     }
   
  -  function is_allowed($action='read',$options) {
  +  function is_allowed($action='read',&$options) {
       $allowed_actions=array('theme','css','userform','bookmark','goto','dot',
         'trackback','rss_rc','rss','blogrss','urlencode');
       if (in_array(strtolower($action),$allowed_actions)) return 1;
  
  
  


pyrasis     2004/10/22 16:18:59

  Modified:    plugin   BlogChanges.php
  Log:
  fixed #300552. puple to purple.
  http://kldp.net/tracker/index.php?func=detail&aid=300552&group_id=210&atid=100210
  
  Revision  Changes    Path
  1.31      +2 -2      moniwiki/plugin/BlogChanges.php
  
  Index: BlogChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogChanges.php,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- BlogChanges.php	21 Sep 2004 15:48:44 -0000	1.30
  +++ BlogChanges.php	22 Oct 2004 07:18:58 -0000	1.31
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogChanges action plugin for the MoniWiki
   //
  -// $Id: BlogChanges.php,v 1.30 2004/09/21 15:48:44 wkpark Exp $
  +// $Id: BlogChanges.php,v 1.31 2004/10/22 07:18:58 pyrasis Exp $
   
   class Blog_cache {
     function get_all_blogs() {
  @@ -345,7 +345,7 @@
       '<span class=\"blog-user\">';
     if (in_array('summary',$opts))
       $template='$out="$bullet<div class=\"blog-summary\"><div class=\"blog-title\"><a name=\"$tag\"></a>'.
  -      '<a href=\"$url#$tag\">$title</a> <a class=\"puple\" href=\"#$tag\">'.
  +      '<a href=\"$url#$tag\">$title</a> <a class=\"purple\" href=\"#$tag\">'.
         addslashes($formatter->perma_icon).
         '</a></div><span class=\"blog-user\">';
     if (!in_array('nouser',$opts))
  
  
  


wkpark      2004/10/22 23:35:12

  Modified:    lib      rcslite.php
  Log:
  more fixes: add rlog() etc.
  
  Revision  Changes    Path
  1.2       +267 -416  moniwiki/lib/rcslite.php
  
  Index: rcslite.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/rcslite.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- rcslite.php	20 Oct 2004 14:51:49 -0000	1.1
  +++ rcslite.php	22 Oct 2004 14:35:12 -0000	1.2
  @@ -3,7 +3,7 @@
   # Copyright (c) 2004 Won-kyu Park <wkpark at kldp.org>
   #
   # this module is ported from the RcsLite.pm of the TWiki by wkpark.
  -# $Id: rcslite.php,v 1.1 2004/10/20 14:51:49 wkpark Exp $
  +# $Id: rcslite.php,v 1.2 2004/10/22 14:35:12 wkpark Exp $
   
   #
   # Original notice:
  @@ -40,7 +40,6 @@
   #    doing a line based diff
   #  - most serious is when having multiple line ends on one seq but not other -
   #    this needs fixing
  -#  - tidyup us of 1. for revisions
   #  - cleaner dealing with errors/warnings
   
   define(DIFF_DEBUG,0);
  @@ -58,6 +57,7 @@
           $this->rcs_dir=$rcs_dir ? $rcs_dir:'RCS';
           $this->rcs_user=$rcs_user ? $rcs_user:'root';
           $this->_head = 0;
  +        $this->_next = array();
       }
     
       # ======================
  @@ -121,52 +121,47 @@
   #
       function _readTo($fp, $char)
       {
  +        $ch = null;
           $buf = '';
  -        $ch=null;
  -        $space = 0;
           $string = '';
           $state = '';
  -        while( !feof($fp)) {
  -           $ch = fread( $fp, 1 );
  -           if( $ch == '@' ) {
  -              if( $state == '@' ) {
  -                 $state = 'e';
  -                 continue;
  -              } else if( $state == 'e' ) {
  -                 $state = '@';
  -                 $string .= '@';
  -                 continue;
  -              } else {
  -                 $state = '@';
  -                 continue;
  -              }
  -           } else {
  -              if( $state == 'e' ) {
  -                 $state = '';
  -                 if( $char == '@' ) {
  -                    break;
  -                 }
  -                 # End of string
  -              } else if ( $state == '@' ) {
  -                 $string .= $ch;
  -                 continue;
  -              }
  -           }
  +        $space = 0;
  +        while( false !== ($ch = fgetc($fp)) ) {
  +            if( $ch == '@' ) {
  +                if( $state == '@' ) {
  +                    $state = 'e';
  +                    continue;
  +                } else if( $state == 'e' ) {
  +                    $state = '@';
  +                    $string .= '@';
  +                    continue;
  +                } else {
  +                    $state = '@';
  +                    continue;
  +                }
  +            } else if ( $state ) {
  +                if ( $state == '@' ) {
  +                    $string .= $ch;
  +                    continue;
  +                } else if( $state == 'e' ) {
  +                    $state = '';
  +                    if( $char == '@' ) break;
  +                    # End of string
  +                }
  +            }
              
  -           if( preg_match("/\s/",$ch) ) {
  -              if( strlen( $buf ) == 0 ) {
  -                  continue;
  -              } else if( $space ) {
  -                  continue;
  -              } else {
  -                  $space = 1;
  -                  $ch = ' ';
  -              }
  -           } else {
  -              $space = 0;
  -           }
  -           $buf .= $ch;
  -           if( $ch == $char ) break;
  +            if ( preg_match('/\s/',$ch) ) {
  +                if( $space or $buf == '' ) {
  +                    continue;
  +                } else {
  +                    $space = 1;
  +                    $ch = ' ';
  +                }
  +            } else {
  +                $space = 0;
  +            }
  +            $buf .= $ch;
  +            if( $ch == $char ) break;
           }
           if ($ch == null) $buf=null;
           return array( $buf, $string );
  @@ -186,9 +181,12 @@
       }
       
       # Read in the whole RCS file
  -    function _process($file=null)
  +    function _process($file='', $force=0)
       {
  +        if( $this->_where && !$force) return;
  +
           if ($file) {
  +            $this->filename=$file;
               $dirname=dirname($file);
               $dirname=$dirname ? $dirname:'.';
               $rcsname=basename($file);
  @@ -198,10 +196,11 @@
                   $this->rcsFile=$dirname.'/'.$rcsname;
               else 
                   $this->rcsFile=$dirname.'/'.$this->rcs_dir.'/'.$rcsname;
  +
           }
  -        $fh = fopen( $this->rcsFile, 'r');
  +        $fh = @fopen( $this->rcsFile, 'r');
           if( ! $fh ) {
  -            $this->_warn( "Couldn't open file $this->rcsFile" );
  +            //$this->_warn( "Couldn't open file $this->rcsFile" );
               $this->_where = 'nofile';
               return;
           }
  @@ -216,97 +215,101 @@
           $author = array();
           $log = array();
           $text = array();
  +        $next = array();
           $dnum = '';
           while( $going ) {
  -           list($line, $string) = $this->_readTo( $fh, $term );
  -           if( is_null($line) ) break;
  -           #print "\"$where -- $line\"\n";
  +            list($line, $string) = $this->_readTo( $fh, $term );
  +            if( is_null($line) ) break;
  +            #print "\"$where -- $line\"\n";
             
  -           $lastWhere = $where;
  -           if( $where == 'admin.head' ) {
  -              if( preg_match('/^head\s+([0-9]+)\.([0-9]+);$/',$line, $match) ) {
  -                 if( $match[1] != '1' )
  -                    die( 'Only support start of version being 1' );
  -                 $headNum = $match[2];
  -                 $where = 'admin.access'; # Don't support branch
  -              } else {
  -                 break;
  -              }
  -           } else if ( $where == 'admin.access' ) {
  -              if( preg_match('/^access\s*(.*);$/',$line, $match) ) {
  -                 $where = 'admin.symbols';
  -                 $this->_access = $match[1];
  -              } else {
  -                 break;
  -              }
  -           } else if( $where == 'admin.symbols' ) {
  -              if( preg_match('/^symbols(.*);$/',$line, $match) ) {
  -                 $where = 'admin.locks';
  -                 $this->_symbols = $match[1];
  -              } else {
  -                 break;
  -              }
  -           } else if( $where == 'admin.locks' ) {
  -              if( preg_match('/^locks.*;$/', $line) ) {
  -                 $where = 'admin.postLocks';
  -              } else {
  -                 break;
  -              }
  -           } else if( $where == 'admin.postLocks' ) {
  -              if( preg_match('/^strict\s*;/', $line) ) {
  -                 $where = 'admin.postStrict';
  -              }
  -           } else if( $where == 'admin.postStrict' &&
  +            $lastWhere = $where;
  +            if( $where == 'admin.head' ) {
  +                if( preg_match('/^head\s+([0-9]+\.[0-9]+);$/',$line, $match) ) {
  +                    $headNum = $match[1];
  +                    $where = 'admin.access'; # Don't support branch
  +                } else {
  +                    break;
  +                }
  +            } else if ( $where == 'admin.access' ) {
  +                if( preg_match('/^access\s*(.*);$/',$line, $match) ) {
  +                    $where = 'admin.symbols';
  +                    $this->_access = $match[1];
  +                } else {
  +                    break;
  +                }
  +            } else if( $where == 'admin.symbols' ) {
  +                if( preg_match('/^symbols(.*);$/',$line, $match) ) {
  +                    $where = 'admin.locks';
  +                    $this->_symbols = $match[1];
  +                } else {
  +                    break;
  +                }
  +            } else if( $where == 'admin.locks' ) {
  +                if( preg_match('/^locks.*;$/', $line) ) {
  +                    $where = 'admin.postLocks';
  +                } else {
  +                    break;
  +                }
  +            } else if( $where == 'admin.postLocks' ) {
  +                if( preg_match('/^strict\s*;/', $line) ) {
  +                    $where = 'admin.postStrict';
  +                }
  +            } else if( $where == 'admin.postStrict' &&
                       preg_match('/^comment\s.*$/', $line) ) {
  -                 $where = 'admin.postComment';
  -                 $this->_comment = $string;
  -           } else if( ( $where == 'admin.postStrict' || $where == 'admin.postComment' )  &&
  +                $where = 'admin.postComment';
  +                $this->_comment = $string;
  +            } else if( ( $where == 'admin.postStrict' || $where == 'admin.postComment' )  &&
                       preg_match('/^expand\s/', $line) ) {
  -                 $where = 'admin.postExpand';
  -                 $this->_expand = $string;         
  -           } else if( $where == 'admin.postStrict' || $where == 'admin.postComment' || 
  -                    $where == 'admin.postExpand' || $where == 'delta.date') {
  -              if( preg_match('/^([0-9]+)\.([0-9]+)\s+date\s+(\d\d(\d\d)?(\.\d\d){5}?);$/', $line,$match) ) {
  -                 $where = 'delta.author';
  -                 $num = $match[2];
  -                 $date[$num] = $match[3];
  -              }
  -           } else if( $where == 'delta.author' ) {
  -              if( preg_match('/^author\s+(.*);$/', $line, $match) ) {
  -                 $author[$num] = $match[1];
  -                 if( $num == 1 ) {
  -                    $where = 'desc';
  -                    $term = '@';
  -                 } else {
  +                $where = 'admin.postExpand';
  +                $this->_expand = $string;         
  +            } else if( $where == 'admin.postStrict' || $where == 'admin.postComment' || 
  +                $where == 'admin.postExpand' || $where == 'delta.date') {
  +                if( preg_match('/^([0-9]+\.[0-9]+)\s+date\s+(\d\d(\d\d)?(\.\d\d){5}?);$/', $line,$match) ) {
  +                    $where = 'delta.author';
  +                    $num = $match[1];
  +                    $date[$num] = $this->rcsDateToTime($match[2]);
  +                }
  +            } else if( $where == 'delta.next' ) {
  +                if( preg_match('/^next ([^;]*);$/',$line,$match) ){
                       $where = 'delta.date';
  -                 }
  -              }
  -           } else if( $where == 'desc' ) {
  -              if( preg_match('/desc\s*$/', $line, $match) ) {
  -                 $this->_description = $string;
  -                 $where = 'deltatext.log';
  -              }
  -           } else if( $where == 'deltatext.log' ) {
  -              if( preg_match('/\d+\.(\d+)\s+log\s+$/', $line, $match) ) {
  -                 $dnum = $match[1];
  -                 $log[$dnum] = $string;
  -                 $where = 'deltatext.text';
  -              }
  -           } else if( $where == 'deltatext.text' ) {
  -              if( preg_match('/text\s*$/', $line) ) {
  -                 $where = 'deltatext.log';
  -                 $text[$dnum] = $string;
  -                 if( $dnum == 1 ) {
  -                    $where = 'done';
  -                    break;
  -                 }
  -              }
  -           }
  +                    $next[$num] = $match[1];
  +                    if ($next[$num] == "") {
  +                        $where = 'desc';
  +                        $term = '@';
  +                    }
  +                }
  +            } else if( $where == 'delta.author' ) {
  +                if( preg_match('/^author\s+(.*);$/', $line, $match) ) {
  +                    $author[$num] = $match[1];
  +                    $where = 'delta.next';
  +                }
  +            } else if( $where == 'desc' ) {
  +                if( preg_match('/desc\s*$/', $line, $match) ) {
  +                    $this->_description = $string;
  +                    $where = 'deltatext.log';
  +                }
  +            } else if( $where == 'deltatext.log' ) {
  +                if( preg_match('/^(\d+\.\d+)\s+log\s+$/', $line, $match) ) {
  +                    $dnum = $match[1];
  +                    $log[$dnum] = $string;
  +                    $where = 'deltatext.text';
  +                }
  +            } else if( $where == 'deltatext.text' ) {
  +                if( preg_match('/text\s*$/', $line) ) {
  +                    $where = 'deltatext.log';
  +                    $text[$dnum] = $string;
  +                    if( $dnum == 1 ) {
  +                        $where = 'done';
  +                        break;
  +                    }
  +                }
  +            }
           }
           
           $this->_head = $headNum;
           $this->_author = $author;
           $this->_date = $date;
  +        $this->_next = $next;
           $this->_log = $log;
           $this->_delta = $text;
           $this->_status = $dnum;
  @@ -318,9 +321,9 @@
       # for rlog() function
       function check_delta()
       {
  -        foreach ($this->_delta as $rev=>$delta) {
  -            if ($rev == $this->_head) continue;
  -            $lines=explode("\n",$delta);
  +        foreach ($this->_next as $rev=>$next) {
  +            if ($next=="") break;
  +            $lines=explode("\n",$this->_delta[$next]);
               $add=0;
               $del=0;
               $sz=sizeof($lines);
  @@ -334,22 +337,23 @@
                       }
                   }
               }
  -            $this->_change[$rev]="$del $add";
  -            print "+$del -$add\n";
  +            # delta has reversed info:
  +            $this->_change[$rev]="+$del -$add";
  +            #print "+$del -$add\n";
           }
       }
       
       function _formatString($str)
       {
           $str = preg_replace('/@/', '@@', $str);
  -        return '@$str@';
  +        return '@'.$str.'@';
       }
       
       # Write content of the RCS file
       function _make_rcs()
       {
           # admin
  -        $headnum='1.'.$this->numRevisions();
  +        $headnum=$this->_head;
           $out = "head\t" . $headnum . ";\n";
           $out.= "access" . $this->access() . ";\n";
           $out.= "symbols" . $this->_symbols . ";\n";
  @@ -362,27 +366,51 @@
           $out.="\n";
           
           # delta
  -        for($i=$this->numRevisions(); $i>0; $i--) {
  +        for($n=$headnum; $n != "";) {
              $out.=
  -               sprintf("\n1.%d\ndate\t%s;\tauthor %s;\tstate Exp;\nbranches;\n",
  -                  $i, $this->_date[$i], $this->author($i) );
  -           if( $i == 1 ) {
  -               $out.= "next\t;\n";
  -           } else {
  -               $out.= sprintf( "next\t1.%d;\n", ($i - 1));
  -           }
  +              sprintf("\n%s\ndate\t%s;\tauthor %s;\tstate Exp;\nbranches;\n",
  +                 $n, gmdate("Y.m.d.H.i.s",$this->_date[$n]), $this->author($n));
  +           $n=$this->_next[$n];
  +           $out.= sprintf( "next\t%s;\n", $n);
           }
           
           $out.=sprintf("\n\ndesc\n%s\n\n",
               $this->_formatString( $this->description()) );
           
  -        for($i=$this->numRevisions(); $i>0; $i--) {
  -           $out.=sprintf("\n1.$i\nlog\n%s\ntext\n%s\n\n",
  -                $this->_formatString( $this->log($i)),
  -                $this->_formatString( $this->delta($i)) );
  +        for($n=$headnum; $n != ""; $n=$this->_next[$n]) {
  +           $out.=sprintf("\n%s\nlog\n%s\ntext\n%s\n\n",
  +                $n,
  +                $this->_formatString( $this->log($n)),
  +                $this->_formatString( $this->delta($n)) );
           }
           return $out;
       }
  +
  +    function rlog($rev="",$option="",$oldopt="")
  +    {
  +        $this->_ensureProcessed();
  +        $this->check_delta();
  +
  +        $revs=array();
  +        if ($rev) {
  +            if ($rev == $this->_head or in_array($rev,$this->_next))
  +                $revs=array($rev=>'1');
  +            else
  +                return '';
  +        } else
  +            $revs=&$this->_next;
  +
  +        foreach ($revs as $rev=>$next) {
  +            $log=$this->_log[$rev];
  +            if (!preg_match("/\n$/",$log)) $log.="\n";
  +            $rlog.= "----------------------------\n";
  +            $rlog.= "revision $rev\n";
  +            $rlog.= "date: ".date("Y/m/d H:i:s",$this->_date[$rev]).";  author: ". $this->_author[$rev].";  state: Exp;  lines: ".$this->_change[$rev]."\n";
  +            $rlog.= $log;
  +        }
  +        $rlog.= str_repeat("=",71)."\n";
  +        return $rlog;
  +    }
       
       # ======================
       function _binaryChange()
  @@ -420,12 +448,24 @@
           $this->_ensureProcessed();
           $date = $this->_date[$version];
           if( $date ) {
  -    //        $date = TWiki::Store::RcsFile::_rcsDateTimeToEpoch( $date );
  +            $date = date("Y/m/d H:i:s", $date );
           } else {
               $date = "";
           }
           return $date;
       }
  +
  +    function rcsDateToEpoch($date)
  +    {
  +        $dum=explode('.',$date);
  +        return date("Y/m/d H:i:s",strtotime("$dum[0]/$dum[1]/$dum[2] $dum[3]:$dum[4]:$dum[5]"));
  +    }
  +
  +    function rcsDateToTime($date)
  +    {
  +        $dum=explode('.',$date);
  +        return strtotime("$dum[0]/$dum[1]/$dum[2] $dum[3]:$dum[4]:$dum[5]");
  +    }
       
       # ======================
       function description()
  @@ -454,9 +494,14 @@
           $this->_ensureProcessed();
           return $this->_delta[$version];
       }
  +
  +    function incRev($rev) {
  +        $dum=explode('.',$rev);
  +        return $dum[0].'.'.sprintf("%s",$dum[1]+1);
  +    }
       
       # ======================
  -    function addRevision($text,$log, $date=0)
  +    function addRevisionText($text,$log, $date=0)
       {
           $this->_ensureProcessed();
           
  @@ -468,20 +513,41 @@
               //$delta = $this->_diffText( $text, $this->delta($head));
               $delta = $this->_diffText( $this->delta($head),$text);
               $this->_delta[$head] = $delta;
  -        }   
  -        $head++;
  -        $this->_delta[$head] = $text;
  -        $this->_head = $head;
  -        $this->_log[$head] = $log;
  -        $this->_author[$head] = $this->rcs_user;
  +            $nhead=$this->incRev($head);
  +        } else {
  +            $nhead='1.1';
  +            $head='';
  +        }
  +
  +        $this->_next[$nhead] = $head;
  +        $this->_delta[$nhead] = $text;
  +        $this->_head = $nhead;
  +        if (!preg_match("/\n$/",$log)) $log.="\n";
  +        $this->_log[$nhead] = $log;
  +        $this->_author[$nhead] = $this->rcs_user;
           if( ! $date )
              $date = time();
  -        $this->_date[$head] = gmdate('Y.m.d.H.i.s',$date);
  -    
  +        $this->_date[$nhead] = $date;
  +
           return $this->_writeMe();
       }
   
       # ======================
  +    function addRevisionPage($log, $date=0)
  +    {
  +        $this->_ensureProcessed();
  +
  +        $fp=fopen($this->filename,'r');
  +        if (!$fp) return;
  +        $text='';
  +        while(!feof($fp))
  +            $text.=fgets($fp,2048);
  +        fclose($fp);
  +
  +        $this->addRevisionText($text, $log, $date);
  +    }
  +
  +    # ======================
       function _writeMe()
       {
           $dataError = '';
  @@ -503,11 +569,11 @@
       # ======================
       # Replace the top revision
       # Return non empty string with error message if there is a problem
  -    function replaceRevision($text,$comment,$user,$date)
  +    function replaceRevision($text, $comment, $date)
       {
           $this->_ensureProcessed();
           $this->_delLastRevision();
  -        $this->addRevision( $text, $comment, $user, $date );
  +        $this->addRevisionText( $text, $comment, $date );
       }
       
       # ======================
  @@ -515,17 +581,17 @@
       function deleteRevision()
       {
           $this->_ensureProcessed();
  -        if( $this->numRevisions() <= 1 );
  +        if( sizeof($this->_author) <= 1 );
             return '';
           $this->_delLastRevision();
           return $this->_writeMe();
       }
       
       # ======================
  -    function _delLastRevision()
  +    function _delLastRevision() // XXX
       {
           $numRevisions = $this->numRevisions();
  -        if( $numRevisions > 1 ) {
  +        if( $numRevisions != 0 ) {
               # Need to recover text for last revision
               $lastText = $this->getRevision( $numRevisions - 1 );
               $numRevisions--;
  @@ -540,6 +606,8 @@
       function revisionDiff($rev1, $rev2, $type='diff')
       {
           $this->_ensureProcessed();
  +
  +        if (!$rev2) $rev2=$this->_head;
           $text1 = $this->getRevision( $rev1 );
           $text2 = $this->getRevision( $rev2 );
           $diff = $this->_diffText( $text2, $text1, $type );
  @@ -551,13 +619,14 @@
       {
           $this->_ensureProcessed();
           $head = $this->numRevisions();
  -        if ($version > $head) return; // XXX
  +        if ( $version != $head && !in_array($version,$this->_next))
  +            return;
           if( $version == $head ) {
               return $this->delta( $version );
           } else {
               $headText = $this->delta( $head );
               $text = $this->_mySplit( $headText,1 );
  -            return $this->_patchN( $text, $head-1, $version );
  +            return $this->_patchN( $text, $this->_next[$head], $version );
           }
       }
       
  @@ -566,6 +635,7 @@
       # Date is in epoch based seconds
       function getRevisionInfo($version)
       {
  +        // XXX ???
           $this->_ensureProcessed();
           if( ! $version )
               $version = $this->numRevisions();
  @@ -590,11 +660,11 @@
           $pos = 0;
           $last = '';
           $extra = '';
  - 
  +
           $ds=sizeof($delta);
           while( $pos <= $ds ) {
               $d = $delta[$pos];
  -            if( preg_match("/^([ad])(\d+)\s(\d+)\n(\n*)/",$d, $match) ) {
  +            if( preg_match("/^([ad])(\d+)\s(\d+)$/",$d, $match) ) {
                   $last = $match[1];
                   $extra = $match[4];
                   $offset = $match[2];
  @@ -602,7 +672,6 @@
                   if( $last == 'd' ) {
                       $start = $offset + $adj - 1;
                       $removed = array_splice( $text, $start, $length );
  -                    #print "REMOVED ";print_r($removed);
                       $adj -= $length;
                       $pos++;
                   } else if( $last == 'a' ) {
  @@ -615,15 +684,12 @@
                           }
                       }
                       array_splice( $text, $offset + $adj, 0, $toAdd );
  -                    #print "ADDED ";print_r($toAdd);
                       $adj += $length;
                       $pos += $length + 1;
                   }
               } else {
  -                $this->warn("wrong! - should be \"[ad]<num> <num>\" and was: \""
  -                    . $d . "\"\n\n" ); #FIXME remove die
  -                //die( "wrong! - should be \"[ad]<num> <num>\" and was: \""
  -                //  . $d . "\"\n\n" ); #FIXME remove die
  +                if (trim($d))
  +                    $this->_warn("wrong delta! :\"" . $d . "\"\n\n" );
                   return;
               }
           }
  @@ -639,7 +705,7 @@
           if( $version == $target ) {
               return implode('', $text );
           } else {
  -            return $this->_patchN( $text, $version-1, $target );
  +            return $this->_patchN( $text, $this->_next[$version], $target );
           }
       }
       
  @@ -650,14 +716,16 @@
           $ending = '';
           if( preg_match_all("/(\n)$/", $text,$match) )
               $ending = $match[1][0]; // XXX
  -    
  +   
           $list = preg_split( "/\n/", $text );
  -        for( $i = 0; $i<sizeof($list); $i++ )
  +        $sz=sizeof($list);
  +        #print $sz.':';
  +        for( $i = 0; $i<$sz; $i++ )
               $list[$i] .= "\n";
       
           if( $ending ) {
               if (strlen($ending) == 1) array_pop($list);
  -
  +/*
               if( $addEntries ) {
                   $len = strlen($ending);
                   if( $list ) {
  @@ -674,6 +742,7 @@
                       $list = array( $ending );
                   }
               }
  +*/
           }
           # TODO: deal with Mac style line ending??
       
  @@ -691,6 +760,7 @@
       }
   
       # ====================== 
  +    # no type means diff for putting in rcs file, diff means normal diff output
       function _diffN($new,$old,$type="")
       {
           include_once('difflib.php');
  @@ -707,215 +777,6 @@
       }
   
       # ======================
  -
  -    function _lastNoEmptyItem($items)
  -    {
  -        $pos = sizeof($items);
  -        $count = 0;
  -        $item;
  -        while( $pos >= 0 ) {
  -            $item = $items[$pos];
  -            if( $item ) break;
  -            $count++;
  -            $pos--;
  -        }
  -        return array( $pos, $count );
  -    }
  -    
  -    # ======================
  -    # Deal with trailing carriage returns - Algorithm doesn't give output that RCS format is too happy with
  -    function _diffEnd($new,$old,$type=0)
  -    {
  -       if( $type ) return; # FIXME
  -       
  -       list( $posNew, $countNew ) = $this->_lastNoEmptyItem( $new );
  -       list( $posOld, $countOld ) = $this->_lastNoEmptyItem( $old );
  -    
  -       if( $countNew == $countOld );
  -          return "";
  -       
  -       if( $DIFFEND_DEBUG ) {
  -         print( "countOld, countNew, posOld, posNew, lastOld, lastNew, lenOld: " .
  -                "$countOld, $countNew, $posOld, $posNew, " . sizeof($old) . ", " . sizeof($new) . 
  -                "," . $old . "\n" );
  -       }
  -       
  -       $posNew++;
  -       $toDel = ( $countNew < 2 ) ? 1 : $countNew;
  -       $startA = sizeof($new) - ( ( $countNew > 0 ) ? 1 : 0 );
  -       $toAdd = ( $countOld < 2 ) ? 1 : $countOld;
  -       $theEnd = "d$posNew $toDel\na$startA $toAdd\n";
  -       for( $i=$posOld; $i<sizeof($old); $i++ ) {
  -          $theEnd .= $old[$i] ? $old[$i] : "\n";
  -       }
  -       
  -       for( $i=0; $i<$countNew; $i++ ) {array_pop($new);}
  -       array_pop($new);
  -       for( $i=0; $i<$countOld; $i++ ) {array_pop($old);}
  -       array_pop($old);
  -       
  -       if( $DIFFEND_DEBUG )
  -          print "--$theEnd--\n";
  -          
  -       return $theEnd;
  -    }
  -    
  -    # ======================
  -    # no type means diff for putting in rcs file, diff means normal diff output
  -    function _diff($new,$old,$type)
  -    {
  -        # Work out diffs to change new to old, params are refs to lists
  -        include_once('difflib.php'); // XXX
  -        $diff = new Diff($old, $new);
  -        //$formatter = new UnifiedDiffFormatter;
  -        $formatter = new DiffFormatter;
  -        $formatter->trailing_cr="";
  -        $diffs = $formatter->format($diff);
  -        // XXX
  -
  -        $adj = 0;
  -        $patch = array();
  -        $del = array();
  -        $ins = array();
  -        $out = "";
  -        $start = 0;
  -        $start1;
  -        $chunkSign = "";
  -        $count = 0;
  -        $numChunks = sizeof($diffs);
  -        $last = 0;
  -        $lengthNew = sizeof($new) - 1;
  -        foreach ( $diffs as $chunk ) {
  -           $count++;
  -           if( DIFF_DEBUG ) print "[\n";
  -           $chunkSign = "";
  -           $lines = array();
  -           foreach ( $chunk as $line ) {
  -               list( $sign, $pos, $what ) = $line;
  -               if( DIFF_DEBUG )
  -                   print "$sign $pos \"$what\"\n";
  -               if( $chunkSign != $sign && $chunkSign != "") {
  -                   if( $chunkSign == "-" && $type == "diff" ) {
  -                      # Might be change of lines
  -                      $chunkLength = sizeof($chunk);
  -                      $linesSoFar = $lines;
  -                      if( $chunkLength == 2 * $linesSoFar ) {
  -                         $chunkSign = "c";
  -                         $start1 = $pos;
  -                      }
  -                   }
  -                   if( $chunkSign != "c" )
  -                      $adj += _addChunk( $chunkSign, $out, $lines, $start, $adj, $type, $start1, $last );
  -               }
  -               if( ! sizeof($lines) ) {
  -                   $start = $pos;
  -               }
  -               if( $chunkSign != "c" )
  -                   $chunkSign = $sign;
  -               array_push($lines, array( $what ));
  -           }
  -    
  -           if( $count == $numChunks ) $last = 1;
  -           if( $last && $chunkSign == "+" ) {
  -               $endings = 0;
  -               for( $i=sizeof($old); $i>=0; $i-- ) {
  -                   if( $old[$i] ) {
  -                       break;
  -                   } else {
  -                       $endings++;
  -                   }
  -               }
  -               $has = 0;
  -               for( $i=sizeof($lines); $i>=0; $i-- ) {
  -                   if( $lines[$i] ) {
  -                       break;
  -                   } else {
  -                       $has++;
  -                   }
  -               }
  -               for( $i=0; $i<$endings-$has; $i++ ) {
  -                   array_push($lines, array(""));
  -               }
  -           }
  -           $adj += $this->_addChunk( $chunkSign, $out, $lines, $start, $adj, $type, $start1, $last, $lengthNew );
  -           if( DIFF_DEBUG )
  -               print "]\n";
  -        }
  -        # Make sure we have the correct number of carriage returns at the end
  -        
  -        if( $DIFFEND_DEBUG )
  -           print "pre end: \"$out\"\n";
  -        return $out; # . $theEnd;
  -    }
  -    
  -    
  -    # ======================
  -    function _range($start,$end)
  -    {
  -       if( $start == $end ) {
  -          return "$start";
  -       } else {
  -          return "$start,$end";
  -       }
  -    }
  -    
  -    # ======================
  -    function _addChunk($chunkSign, $out, $lines, $start, $adj, $type, $start1, $last, $newLines )
  -    {
  -       $nLines = sizeof($lines);
  -       if( preg_match('/(\n+)$/',$lines[sizeof($lines)],$m) ) {
  -          $nLines += ( ( strlen( $m[1] ) == 0 ) ? 0 : strlen( $m[1] ) -1 );
  -       }
  -       if( $nLines > 0 ) {
  -           if( DIFF_DEBUG )
  -              print "addChunk chunkSign=$chunkSign start=$start adj=$adj type=$type " .
  -                    "start1=$start1 last=$last newLines=$newLines nLines=$nLines\n";
  -           if( $out && !preg_match("/\n$/",$out ))
  -               $out .= "\n";
  -           if( $chunkSign == "c" ) {
  -              $out .= $this->_range( $start+1, $start+$nLines/2 );
  -              $out .= "c";
  -              $out .= $this->_range( $start1+1, $start1+$nLines/2 );
  -              $out .= "\n";
  -              $out .= '< ' . implode( '< ', array_slice($lines,0,$nLines/2-1) );
  -              if( !preg_match('/\n$/',$lines[$nLines/2-1]) )
  -                  $out .= "\n";
  -              $out .= "---\n";
  -              $out .= '> ' . implode( '> ', array_slice($lines,$nLines/2,$nLines-1 - $nLines/2));
  -              $nLines = 0;
  -           } else if( $chunkSign == "+" ) {
  -              if( $type == "diff" ) {
  -                  $out .= $start-$adj . "a";
  -                  $out .= $this->_range( $start+1, $start+$nLines ) . "\n";
  -                  $out .= "> " . implode( "> ", $lines );
  -              } else {
  -                  $out .= "a";
  -                  $out .= $start-$adj;
  -                  $out .= " $nLines\n";
  -                  $out .= implode( "", $lines );
  -              }
  -           } else {
  -              if( DIFF_DEBUG ) print "Start nLines newLines: $start $nLines $newLines\n";
  -              if( $type == "diff" ) {
  -                  $out .= $this->_range( $start+1, $start+$nLines );
  -                  $out .= "d";
  -                  $out .= $start + $adj . "\n";
  -                  $out .= "< " . implode( "< ", $lines );
  -              } else {
  -                  $out .= "d";
  -                  $out .= $start+1;
  -                  $out .= " $nLines";
  -                  if( $last ) $out .= "\n";
  -              }
  -              $nLines *= -1;
  -           }
  -           $lines = array();
  -       }
  -       return $nLines;
  -    }
  -    
  -    
  -    # ======================
       function validTo()
       {
           $this->_ensureProcessed();
  @@ -923,39 +784,29 @@
       }
   }
   
  -$rcs_dir='RCS';$rcs_user='hello';
  -$rcs = new RcsLite($rcs_dir,$rcs_user);
  -
  -$rcs->_process("m.txt");
  -#process( "c:/tmp/rcs/RCS/a.txt" );
  -#print "head: $rcs->_head\n";
  -#print "status: $rcs->_status\n";
  -#print $rcs->_where."\n";
  -#print_r($rcs->_author);
  -#print_r($rcs->_date);
  -#print "log: ";print_r($rcs->_log);
  -#print "delta: ";print_r($rcs->_delta);
  -
  -#for ($i=0;$i<100;$i++)
  -#$dd=$rcs->getRevision('10');
  -#print($dd);
  -//$dd=$rcs->revisionDiff('20','21');
  -//$dd=$rcs->revisionDiff('22','21');
  -#print_r($dd);
  -## co -p1.7
  -#$dd=$rcs->getRevision('7');
  -#print($dd);print "---------------\n";
  -#$dd=$rcs->getRevision('8');
  -#print($dd);
  -$rcs->check_delta();
  -if ($rcs->_head > 6) {
  -  ## rcsdiff -r1.3 -r1.8
  -  $dd=$rcs->revisionDiff('3','8','udiff');
  -  #$dd=$rcs->revisionDiff('73','74');
  -  print($dd);
  +function test() {
  +    $rcs_dir='RCS';$rcs_user='hello';
  +    $rcs = new RcsLite($rcs_dir,$rcs_user);
  +
  +    $rcs->_process("m.txt");
  +    #process( "c:/tmp/rcs/RCS/a.txt" );
  +    print "head: $rcs->_head\n";
  +    print_r($rcs->_next);
  +
  +    #for ($i=0;$i<10;$i++) {
  +    #   $dd=$rcs->getRevision('1.'.$i);
  +    #   print($dd);
  +    #}
  +    ## co -p1.7
  +    #$dd=$rcs->getRevision('1.7');
  +    #print($dd);
  +    ## rcsdiff -r1.3 -r1.8
  +    $dd=$rcs->revisionDiff('1.3','1.8','udiff');
  +    print($dd);
  +    ## ci -l
  +    $rcs->addRevisionText("Bang\n\t\tHello World !\n",'hello');
  +    #print $rcs->rlog("1.11");
   }
  -## ci -l
  -##$rcs->addRevision("Bang\nHello World !\n",'hello');
   
   // vim:et:sts=4
   ?>
  
  
  


wkpark      2004/10/22 23:41:19

  Added:       lib      version.RcsLite.php
  Log:
  add new versioning module: a RcsLite module
  
  Revision  Changes    Path
  1.1                  moniwiki/lib/version.RcsLite.php
  
  Index: version.RcsLite.php
  ===================================================================
  <?php
  // Copyright 2004 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a RcsLite versioning plugin for the MoniWiki
  //
  // $Id: version.RcsLite.php,v 1.1 2004/10/22 14:41:19 wkpark Exp $
  
  class Version_RcsLite extends Version_RCS {
    var $DB;
  
    function Version_RcsLite($DB) {
      include_once('rcslite.php');
  
      $this->rcs=new RcsLite($DB->rcs_dir,$DB->rcs_user);
      $this->DB=$DB;
    }
  
    function co($pagename,$rev,$opt='') {
      $filename= $this->_filename($pagename);
  
      $this->rcs->_process($filename);
  
      if ($this->rcs->_author[$rev]) 
        $out=$this->rcs->getRevision($rev);
  
      return $out;
    }
  
    function ci($pagename,$log) {
      $filename=$this->_filename($pagename);
      $this->rcs->_process($filename);
      $this->rcs->addRevisionPage($log);
    }
  
    function rlog($pagename,$rev='',$opt='',$oldopt='') {
      $filename=$this->_filename($pagename);
  
      $this->rcs->_process($filename);
  
      return $this->rcs->rlog($rev,$opt,$oldopt);
    }
  
    function diff($pagename,$rev,$rev2) {
      $filename=$this->_filename($pagename);
      $this->rcs->_process($filename);
  
      #print $rev.":".$rev2;
      $out=$this->rcs->revisionDiff($rev,$rev2,'udiff'); // XXX
  
      return $out;
    }
  
    function purge($pagename,$rev) {
    }
  
    function delete($pagename) {
      $keyname=$DB->_getPageKey($pagename);
      @unlink($DB->text_dir."/RCS/$keyname,v");
    }
  
    function rename($pagename,$new) {
      $keyname=$DB->_getPageKey($new);
      $oname=$DB->_getPageKey($pagename);
      rename($DB->text_dir."/RCS/$oname,v",$DB->text_dir."/RCS/$keyname,v");
    }
  
    function get_rev($pagename,$mtime='',$last=0) {
      $filename=$this->_filename($pagename);
      $this->rcs->_process($filename);
  
      if ($last==1)
        return $this->rcs->_head;
      if ($mtime) {
        #print gmdate('Y/m/d H:i:s',$mtime);
        if ($mtime > $this->rcs->_date[$this->rcs->_head])
           return $this->_head;
        foreach ($this->rcs->_date as $rev=>$date) {
           if ($mtime > $date) {
              return $rev;
           }
        }
        return $this->_head;
      } else {
        return $this->rcs->_next[$this->rcs->_head];
      }
  
      $out = $this->rlog($pagename,'',$opt);
      if ($out) {
        $lines=explode("\n",$out);
        foreach ($lines as $line) {
          preg_match("/^revision\s+([\d\.]+)/",$line,$match);
          if ($rev == $match[1])
              continue;
          else {
            $rev=$match[1];
            break;
  	}
        }
      }
      if ($rev) return $rev;
      return $this->rcs->_head;
    }
  }
  
  ?>
  
  
  


wkpark      2004/10/22 23:44:03

  Added:       plugin   Info.php Diff.php
  Log:
  info, diff plugins factored out from the main routine
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  <?php
  // Copyright 2003-2004 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a Info plugin for the MoniWiki
  //
  // $Id: Info.php,v 1.1 2004/10/22 14:44:03 wkpark Exp $
  
  function _parse_rlog($formatter,$log) {
    global $DBInfo;
    $state=0;
    $flag=0;
  
    $url=$formatter->link_url($formatter->page->urlname);
  
    $out="<h2>"._("Revision History")."</h2>\n";
    $out.="<table class='info' border='0' cellpadding='3' cellspacing='2'>\n";
    $out.="<form method='post' action='$url'>";
    $out.="<th class='info'>#</th><th class='info'>Date and Changes</th>".
         "<th class='info'>Editor</th>".
         "<th><input type='submit' value='diff'></th>".
         "<th class='info'>actions</th>".
         "<th class='info'>admin.</th>";
         #"<th><input type='submit' value='admin'></th>";
    $out.= "</tr>\n";
  
    $users=array();
   
    #foreach ($lines as $line) {
    for($line = strtok($log, "\n"); $line !== false; $line = strtok("\n")) {
      if (!$state) {
        if (!preg_match("/^---/",$line)) { continue;}
        else {$state=1; continue;}
      }
      
      switch($state) {
        case 1:
           preg_match("/^revision ([0-9]\.([0-9\.]+))\s*/",$line,$match);
           $rev=$match[1];
           if (preg_match("/\./",$match[2])) {
              $state=0;
              break;
           }
           $state=2;
           break;
        case 2:
           $inf=preg_replace("/date:\s(.*);\s+author:.*;\s+state:.*;/","\\1",$line);
           list($inf,$change)=explode('lines:',$inf,2);
           $inf=date("Y-m-d H:i:s",strtotime($inf)); // localtime XXX
  
           $change=preg_replace("/\+(\d+)\s\-(\d+)/",
             "<span class='diff-added'>+\\1</span><span class='diff-removed'>-\\2</span>",$change);
           $state=3;
           break;
        case 3:
           $dummy=explode(';;',$line,3);
           $ip=$dummy[0];
           $user=$dummy[1];
           if ($user and $user!='Anonymous') {
             if (in_array($user,$users)) $ip=$users[$user];
             else if ($DBInfo->hasPage($user)) {
               $ip=$formatter->link_tag($user);
               $users[$user]=$ip;
             } else if ($DBInfo->interwiki['Whois']) {
               $ip="<a href='".$DBInfo->interwiki['Whois']."$ip'>$user</a>";
             }
           } else if ($user and $DBInfo->interwiki['Whois'])
             $ip="<a href='".$DBInfo->interwiki['Whois']."$ip'>$ip</a>";
  
           $comment=stripslashes($dummy[2]);
           $state=4;
           break;
        case 4:
           if (!$rev) break;
           $rowspan=1;
           if ($comment) $rowspan=2;
           $out.="<tr>\n";
           $out.="<th valign='top' rowspan=$rowspan>r$rev</th><td nowrap='nowrap'>$inf $change</td><td>$ip&nbsp;</td>";
           $achecked="";
           $bchecked="";
           if ($flag==1)
              $achecked="checked ";
           else if (!$flag)
              $bchecked="checked ";
           $out.="<td nowrap='nowrap'><input type='radio' name='rev' value='$rev' $achecked/>";
           $out.="<input type='radio' name='rev2' value='$rev' $bchecked/>";
  
           $out.="<td nowrap='nowrap'>".$formatter->link_to("?action=recall&rev=$rev","view").
                 " ".$formatter->link_to("?action=raw&rev=$rev","raw");
           if ($flag) {
              $out.= " ".$formatter->link_to("?action=diff&rev=$rev","diff");
              $out.="</td><th>";
              $out.="<input type='checkbox' name='range[$flag]' value='$rev' />";
           } else
              $out.="</td><th>";
           $out.="</th></tr>\n";
           if ($comment)
              $out.="<tr><td class='info' colspan='5'>$comment&nbsp;</td></tr>\n";
           $state=1;
           $flag++;
           break;
       }
    }
    $out.="<tr><td colspan='6' align='right'><input type='checkbox' name='show' checked='checked' />show only ";
    if ($DBInfo->security->is_protected("rcspurge",array())) {
      $out.="<input type='password' name='passwd'>";
    }
    $out.="<input type='submit' name='rcspurge' value='purge'></td></tr>";
    $out.="<input type='hidden' name='action' value='diff'/></form></table>\n";
    return $out; 
  }
  
  
  function do_info($formatter,$options) {
    global $DBInfo;
    $formatter->send_header("",$options);
    $formatter->send_title(sprintf(_("Info. for %s"),$options['page']),"",$options);
  
    if ($DBInfo->version_class) {
      getModule('Version',$DBInfo->version_class);
      $class="Version_".$DBInfo->version_class;
      $version=new $class ($DBInfo);
      $out= $version->rlog($formatter->page->name,'','','-zLT');
  
      if (!$out) {
        $msg=_("No older revisions available");
        print "<h2>$msg</h2>";
      } else {
        print _parse_rlog($formatter,$out);
      }
    } else {
      $msg=_("Version info does not available in this wiki");
      print "<h2>$msg</h2>";
    }
  
    $formatter->send_footer($args,$options);
  }
  
  // vim:et:sts=2:
  ?>
  
  
  
  1.1                  moniwiki/plugin/Diff.php
  
  Index: Diff.php
  ===================================================================
  <?php
  // Copyright 2003-2004 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a diff plugin for the MoniWiki
  //
  // $Id: Diff.php,v 1.1 2004/10/22 14:44:03 wkpark Exp $
  
  function macro_diff($formatter,$value,&$options)
  {
    global $DBInfo;
  
    $option='';
  
    if ($options['text']) {
      $tmpf=tempnam($DBInfo->vartmp_dir,'DIFF');
      $fp= fopen($tmpf, 'w');
      fwrite($fp, $options['text']);
      fclose($fp);
  
      $fp=popen("diff -u $tmpf ".$formatter->page->filename,'r');
      if (!$fp) {
         unlink($tmpf);
         return '';
      }
      while (!feof($fp)) {
         $line=fgets($fp,1024);
         $out .= $line;
      }
      pclose($fp);
      unlink($tmpf);
  
      if (!$out) {
         $msg=_("No difference found");
      } else {
         $msg= _("Difference between yours and the current");
         if (!$options['raw'])
           $ret= call_user_func(array(&$formatter,$DBInfo->diff_type),$out);
         else
           $ret="<pre>$out</pre>\n";
      }
      if ($options['nomsg']) return $ret;
      return "<h2>$msg</h2>\n$ret";
    }
  
    $rev1=$options['rev'];
    $rev2=$options['rev2'];
    if (!$rev1 and !$rev2) {
      $rev1=$formatter->page->get_rev();
    } else if (0 === strcmp($rev1 , (int)$rev1)) {
      $rev1=$formatter->page->get_rev($rev1); // date
    } else if ($rev1==$rev2) $rev2='';
    if ($rev1) $option="-r$rev1 ";
    if ($rev2) $option.="-r$rev2 ";
  
    if (!$rev1 && !$rev2) {
      $msg= _("No older revisions available");
      if ($options['nomsg']) return '';
      return "<h2>$msg</h2>";
    }
    if (!$DBInfo->version_class) {
      $msg= _("Version info does not available in this wiki");
      return "<h2>$msg</h2>";
    }
    
    getModule('Version',$DBInfo->version_class);
    $class='Version_'.$DBInfo->version_class;
    $version=new $class ($DBInfo);
  
    $out=$version->diff($formatter->page->name,$rev1,$rev2);
  
    if (!$out) {
      $msg= _("No difference found");
    } else {
      if ($rev1==$rev2) $ret.= "<h2>"._("Difference between versions")."</h2>";
      else if ($rev1 and $rev2) {
        $msg= sprintf(_("Difference between r%s and r%s"),$rev1,$rev2);
      }
      else if ($rev1 or $rev2) {
        $msg=sprintf(_("Difference between r%s and the current"),$rev1.$rev2);
      }
      if (!$options['raw'])
        $ret= call_user_func(array(&$formatter,$DBInfo->diff_type.'_diff'),$out);
      else
        $ret="<pre>$out</pre>\n";
    }
    if ($options['nomsg']) return $ret;
    return "<h2>$msg</h2>\n$ret";
  }
  
  function do_diff($formatter,$options="") {
    global $DBInfo;
  
    $range=$options['range'];
    $date=$options['date'];
    $rev=$options['rev'];
    $rev2=$options['rev2'];
    if ($options['rcspurge']) {
      if (!$range) $range=array();
      $rr='';
      $dum=array();
      foreach (array_keys($range) as $r) {
        if (!$rr) $rr=$range[$r];
        if ($range[$r+1]) continue;
        else
          $rr.=":".$range[$r];
        $dum[]=$rr;$rr='';
      }
      $options['range']=join(';',$dum);
      include_once("plugin/rcspurge.php");
  
      do_RcsPurge($formatter,$options);
      return;
    }
    $formatter->send_header("",$options);
    $formatter->send_title("Diff for $rev ".$options['page'],"",$options);
    if ($date) {
     $options['rev']=$date;
      print macro_diff($formatter,'',$options);
    }
    else
      print macro_diff($formatter,'',$options);
    if (!$DBInfo->diffonly) {
      print "<br /><hr />\n";
      $formatter->send_page();
    }
    $formatter->send_footer($args,$options);
    return;
  }
  
  // vim:et:sts=2:
  ?>
  
  
  


wkpark      2004/10/22 23:49:04

  Modified:    .        wiki.php wikilib.php
  Log:
  RcsLite support added
  versioning related subroutines (diff,info) are refactored and modulized
  
  Revision  Changes    Path
  1.190     +194 -252  moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.189
  retrieving revision 1.190
  diff -u -r1.189 -r1.190
  --- wiki.php	21 Oct 2004 08:26:39 -0000	1.189
  +++ wiki.php	22 Oct 2004 14:49:03 -0000	1.190
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.189 2004/10/21 08:26:39 wkpark Exp $
  +// $Id: wiki.php,v 1.190 2004/10/22 14:49:03 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.189 $',1,-1);
  +$_revision = substr('$Revision: 1.190 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -47,6 +47,12 @@
     return $plugins[strtolower($pluginname)];
   }
   
  +function getModule($module,$name) {
  +  if (!class_exists($module.'_'.$name)) {
  +    include_once('lib/'.strtolower($module).'.'.$name.'.php');
  +  }
  +}
  +
   function getProcessor($pro_name) {
     static $processors=array();
     if ($processors) return $processors[strtolower($pro_name)];
  @@ -474,6 +480,7 @@
       $this->perma_icon='#';
       $this->purple_icon='#';
       $this->use_purple=0;
  +    $this->version_class='RCS';
   
       # set user-specified configuration
       if ($config) {
  @@ -829,8 +836,14 @@
       fwrite($fp, $body);
       flock($fp,LOCK_UN);
       fclose($fp);
  -    $ret=system("ci -l -x,v/ -q -t-\"".$pagename."\" -m\"".$REMOTE_ADDR.';;'.
  -            $user->id.';;'.$comment."\" ".$key);
  +
  +    $log=$REMOTE_ADDR.';;'.$user->id.';;'.$comment;
  +    if ($this->version_class) {
  +      getModule('Version',$this->version_class);
  +      $class='Version_'.$this->version_class;
  +      $version=new $class ($this);
  +      $ret=$version->ci($pagename,$log);
  +    }
       # check minor edits XXX
       $minor=0;
       if ($this->use_minorcheck or $options['minorcheck']) {
  @@ -853,7 +866,12 @@
       $keyname=$this->_getPageKey($page->name);
   
       $delete=@unlink($this->text_dir."/$keyname");
  -    if ($options['history']) @unlink($this->text_dir."/RCS/$keyname,v");
  +    if ($options['history'] && $this->version_class) {
  +      getModule('Version',$this->version_class);
  +      $class='Version_'.$this->version_class;
  +      $version=new $class ($this);
  +      $version->delete($page->name);
  +    }
       $this->addLogEntry($keyname, $REMOTE_ADDR,$comment,"SAVE");
   
       $handle= opendir($this->cache_dir);
  @@ -876,17 +894,21 @@
     }
   
     function renamePage($pagename,$new,$options='') {
  +    global $DBInfo;
  +
       $REMOTE_ADDR=$_SERVER['REMOTE_ADDR'];
   
       $okey=$this->getPageKey($pagename);
       $nkey=$this->getPageKey($new);
  -    $keyname=$this->_getPageKey($new);
   
       rename($okey,$nkey);
  -    if ($options['history']) {
  -      $oname=$this->_getPageKey($pagename);
  -      rename($this->text_dir."/RCS/$oname,v",$this->text_dir."/RCS/$keyname,v");
  +    if ($options['history'] && $this->version_class) {
  +      getModule('Version',$this->version_class);
  +      $class='Version_'.$this->version_class;
  +      $version=new $class ($this);
  +      $version->rename($pagename,$new);
       }
  +
       $comment=sprintf(_("Rename %s to %s"),$pagename,$new);
       $this->addLogEntry($keyname, $REMOTE_ADDR,$comment,"SAVE");
     }
  @@ -911,6 +933,120 @@
     }
   }
   
  +class Version_RCS {
  +  var $DB;
  +
  +  function Version_RCS($DB) {
  +    $this->DB=$DB;
  +  }
  +
  +  function _filename($pagename) {
  +    # have to be factored out XXX
  +    # Return filename where this word/page should be stored.
  +    return $this->DB->getPageKey($pagename);
  +  }
  +
  +  function co($pagename,$rev,$opt='') {
  +    $filename= $this->_filename($pagename);
  +
  +    $fp=@popen("co -x,v/ -q -p\"".$rev."\" ".$filename,"r");
  +    $out='';
  +    if ($fp) {
  +      while (!feof($fp)) {
  +        $line=fgets($fp,2048);
  +        $out.= $line;
  +      }
  +      pclose($fp);
  +    }
  +    return $out;
  +  }
  +
  +  function ci($pagename,$log) {
  +    $key=$this->_filename($pagename);
  +    $ret=system("ci -l -x,v/ -q -t-\"".$pagename."\" -m\"".$log."\" ".$key);
  +  }
  +
  +  function rlog($pagename,$rev='',$opt='',$oldopt='') {
  +    if ($rev)
  +      $rev = "-r$rev";
  +    $filename=$this->_filename($pagename);
  +
  +    $fp= popen("rlog $opt $oldopt -x,v/ $rev ".$filename,"r");
  +    $out='';
  +    if ($fp) {
  +      while (!feof($fp)) {
  +        $line=fgets($fp,1024);
  +        $out .= $line;
  +      }
  +      pclose($fp);
  +    }
  +    return $out;
  +  }
  +
  +  function diff($pagename,$rev="",$rev2="") {
  +    if ($rev) $option="-r$rev ";
  +    if ($rev2) $option.="-r$rev2 ";
  +
  +    $filename=$this->_filename($pagename);
  +    $fp=popen("rcsdiff -x,v/ -u $option ".$filename,'r');
  +    if (!$fp) return '';
  +    while (!feof($fp)) {
  +      # trashing first two lines
  +      $line=fgets($fp,1024);
  +      if (preg_match('/^--- /',$line)) {
  +        $line=fgets($fp,1024);
  +        break;
  +      }
  +    }
  +    while (!feof($fp)) {
  +      $line=fgets($fp,1024);
  +      $out.= $line;
  +    }
  +    pclose($fp);
  +    return $out;
  +  }
  +
  +  function purge($pagename,$rev) {
  +  }
  +
  +  function delete($pagename) {
  +    $keyname=$DB->_getPageKey($pagename);
  +    @unlink($DB->text_dir."/RCS/$keyname,v");
  +  }
  +
  +  function rename($pagename,$new) {
  +    $keyname=$DB->_getPageKey($new);
  +    $oname=$DB->_getPageKey($pagename);
  +    rename($DB->text_dir."/RCS/$oname,v",$DB->text_dir."/RCS/$keyname,v");
  +  }
  +
  +  function get_rev($pagename,$mtime='',$last=0) {
  +    if ($last==1) {
  +      $tag='head:';
  +      $opt='-h';
  +    } else $tag='revision';
  +    if ($mtime) {
  +      $date=gmdate('Y/m/d H:i:s',$mtime);
  +      if ($date) {
  +        $opt="-d\<'$date'";
  +        $tag='revision';
  +      }
  +    }
  +
  +    $out= $this->rlog($pagename,'',$opt);
  +    if ($out) {
  +      for ($line=strtok($out,"\n"); $line !== false;$line=strtok("\n")) {
  +        preg_match("/^$tag\s+([\d\.]+)$/",$line,$match);
  +        if ($match[1]) {
  +          $rev=$match[1];
  +          break;
  +        }
  +      }
  +    }
  +    return $rev;
  +  }
  +}
  +
   class Cache_text {
     function Cache_text($arena) {
       global $DBInfo;
  @@ -1045,18 +1181,24 @@
     }
   
     function get_raw_body($options='') {
  +    global $DBInfo;
  +
       if ($this->body && !$options['rev'])
          return $this->body;
   
       if ($this->rev || $options['rev']) {
         if ($options['rev']) $rev=$options['rev'];
         else $rev=$this->rev;
  -      $fp=@popen("co -x,v/ -q -p\"".$rev."\" ".$this->filename,"r");
  -      if (!$fp) return "";
  -      $out='';
  -      while (!feof($fp)) $out.=fgets($fp,2048);
  -      pclose($fp);
  -      return $out;
  +
  +      if ($DBInfo->version_class) {
  +        getModule('Version',$DBInfo->version_class);
  +        $class='Version_'.$DBInfo->version_class;
  +        $version=new $class ($DBInfo);
  +        $out = $version->co($this->name,$rev);
  +        return $out;
  +      } else {
  +        return _("Version info does not supported by this wiki");
  +      }
       }
   
       $fp=@fopen($this->filename,"r");
  @@ -1104,55 +1246,51 @@
     }
   
     function get_rev($mtime="",$last=0) {
  -    if ($last==1) {
  -      $tag='head:';
  -      $opt='-h';
  -    } else $tag='revision';
  -    if ($mtime) {
  -      $date=gmdate('Y/m/d H:i:s',$mtime);
  -      if ($date) {
  -        $opt="-d\<'$date'";
  -        $tag='revision';
  -      }
  -    }
  -    $fp=popen("rlog -x,v/ $opt ".$this->filename,"r");
  -#   if (!$fp)
  -#      print "No older revisions available";
  -# XXX
  -    while (!feof($fp)) {
  -      $line=fgets($fp,1024);
  -      preg_match("/^$tag\s+([\d\.]+)$/",$line,$match);
  -      if ($match[1]) {
  -        $rev=$match[1];
  -        break;
  -      }
  +    global $DBInfo;
  +
  +    if ($DBInfo->version_class) {
  +      getModule('Version',$DBInfo->version_class);
  +      $class='Version_'.$DBInfo->version_class;
  +      $version=new $class ($DBInfo);
  +      $rev= $version->get_rev($this->name,$mtime,$last);
  +
  +      if ($rev > 1.0)
  +        return $rev;
       }
  -    pclose($fp);
  -    if ($rev > 1.0)
  -      return $rev;
       return '';
     }
   
     function get_info($rev='') {
  +    global $DBInfo;
  +
       $info=array('','','','','');
       if (!$rev)
         $rev=$this->get_rev('',1);
       if (!$rev) return $info;
  -    $fp=popen("rlog -x,v/ -r$rev ".$this->filename,"r");
  +
  +    if ($DBInfo->version_class) {
  +      getModule('Version',$DBInfo->version_class);
  +      $class='Version_'.$DBInfo->version_class;
  +      $version=new $class ($DBInfo);
  +      $out= $version->rlog($this->name,$rev,$opt);
  +    } else {
  +      return $info;
  +    }
  +
       $state=0;
  -    while (!feof($fp)) {
  -      $line=fgets($fp,1024);
  -      if ($state == 0 and preg_match("/^date:\s.*$/",$line)) {
  -        $tmp=preg_replace("/date:\s(.*);\s+author:.*;\s+state:.*;/","\\1",rtrim($line));
  -        $tmp=explode('lines:',$tmp);
  -        $info[0]=$tmp[0];$info[1]=$tmp[1];
  -        $state=1;
  -      } else if ($state) {
  -        list($info[2],$info[3],$info[4])=explode(';;',$line,3);
  -        break;
  +    if ($out) {
  +      for ($line=strtok($out,"\n"); $line !== false;$line=strtok("\n")) {
  +        if ($state == 0 and preg_match("/^date:\s.*$/",$line)) {
  +          $tmp=preg_replace("/date:\s(.*);\s+author:.*;\s+state:.*;/","\\1",rtrim($line));
  +          $tmp=explode('lines:',$tmp);
  +          $info[0]=$tmp[0];$info[1]=$tmp[1];
  +          $state=1;
  +        } else if ($state) {
  +          list($info[2],$info[3],$info[4])=explode(';;',$line,3);
  +          break;
  +        }
         }
       }
  -    pclose($fp);
       return $info;
     }
   }
  @@ -2314,129 +2452,12 @@
       if ($options['pagelinks']) $this->store_pagelinks();
     }
   
  -  function _parse_rlog($log) {
  -    global $DBInfo;
  -    $lines=explode("\n",$log);
  -    $state=0;
  -    $flag=0;
  -
  -    $url=$this->link_url($this->page->urlname);
  -
  -    $out="<h2>"._("Revision History")."</h2>\n";
  -    $out.="<table class='info' border='0' cellpadding='3' cellspacing='2'>\n";
  -    $out.="<form method='post' action='$url'>";
  -    $out.="<th class='info'>#</th><th class='info'>Date and Changes</th>".
  -         "<th class='info'>Editor</th>".
  -         "<th><input type='submit' value='diff'></th>".
  -         "<th class='info'>actions</th>".
  -         "<th class='info'>admin.</th>";
  -         #"<th><input type='submit' value='admin'></th>";
  -    $out.= "</tr>\n";
  -
  -    $users=array();
  -   
  -    foreach ($lines as $line) {
  -      if (!$state) {
  -        if (!preg_match("/^---/",$line)) { continue;}
  -        else {$state=1; continue;}
  -      }
  -      
  -      switch($state) {
  -        case 1:
  -           preg_match("/^revision ([0-9\.]*)/",$line,$match);
  -           $rev=$match[1];
  -           $state=2;
  -           break;
  -        case 2:
  -           $inf=preg_replace("/date:\s(.*);\s+author:.*;\s+state:.*;/","\\1",$line);
  -           list($inf,$change)=explode('lines:',$inf,2);
  -           $date=strtok($inf,' '); $inf=$date.' '.strtok('-+');
  -
  -           $change=preg_replace("/\+(\d+)\s\-(\d+)/",
  -             "<span class='diff-added'>+\\1</span><span class='diff-removed'>-\\2</span>",$change);
  -           $state=3;
  -           break;
  -        case 3:
  -           $dummy=explode(';;',$line,3);
  -           $ip=$dummy[0];
  -           $user=$dummy[1];
  -           if ($user and $user!='Anonymous') {
  -             if (in_array($user,$users)) $ip=$users[$user];
  -             else if ($DBInfo->hasPage($user)) {
  -               $ip=$this->link_tag($user);
  -               $users[$user]=$ip;
  -             } else if ($DBInfo->interwiki['Whois']) {
  -               $ip="<a href='".$DBInfo->interwiki['Whois']."$ip'>$user</a>";
  -             }
  -           } else if ($DBInfo->interwiki['Whois'])
  -             $ip="<a href='".$DBInfo->interwiki['Whois']."$ip'>$ip</a>";
  -
  -           $comment=stripslashes($dummy[2]);
  -           $state=4;
  -           break;
  -        case 4:
  -           $rowspan=1;
  -           if ($comment) $rowspan=2;
  -           $out.="<tr>\n";
  -           $out.="<th valign='top' rowspan=$rowspan>r$rev</th><td nowrap='nowrap'>$inf $change</td><td>$ip&nbsp;</td>";
  -           $achecked="";
  -           $bchecked="";
  -           if ($flag==1)
  -              $achecked="checked ";
  -           else if (!$flag)
  -              $bchecked="checked ";
  -           $out.="<td nowrap='nowrap'><input type='radio' name='rev' value='$rev' $achecked/>";
  -           $out.="<input type='radio' name='rev2' value='$rev' $bchecked/>";
  -
  -           $out.="<td nowrap='nowrap'>".$this->link_to("?action=recall&rev=$rev","view").
  -                 " ".$this->link_to("?action=raw&rev=$rev","raw");
  -           if ($flag)
  -              $out.= " ".$this->link_to("?action=diff&rev=$rev","diff");
  -           $out.="</td><th>";
  -           if ($flag)
  -              $out.="<input type='checkbox' name='range[$flag]' value='$rev' />";
  -           $out.="</th></tr>\n";
  -           if ($comment)
  -              $out.="<tr><td class='info' colspan='5'>$comment&nbsp;</td></tr>\n";
  -           $state=1;
  -           $flag++;
  -           break;
  -      }
  -    }
  -    $out.="<tr><td colspan='6' align='right'><input type='checkbox' name='show' checked='checked' />show only ";
  -    if ($DBInfo->security->is_protected("rcspurge",array())) {
  -      $out.="<input type='password' name='passwd'>";
  -    }
  -    $out.="<input type='submit' name='rcspurge' value='purge'></td></tr>";
  -    $out.="<input type='hidden' name='action' value='diff'/></form></table>\n";
  -    return $out; 
  -  }
  -
  -  function show_info() {
  -    $fp=popen("rlog -zLT -x,v/ ".$this->page->filename,"r");
  -#   if (!$fp)
  -#      print "No older revisions available";
  -# XXX
  -    while (!feof($fp)) {
  -      $line=fgets($fp,1024);
  -      $out .= $line;
  -    }
  -    pclose($fp);
  -
  -    $msg=_("No older revisions available");
  -    if (!$out)
  -      print "<h2>$msg</h2>";
  -    else
  -      print $this->_parse_rlog($out);
  -  }
  -
     function simple_diff($diff) {
       $diff=str_replace("<","&lt;",$diff);
  -    $lines=explode("\n",$diff);
       $out="";
  -    unset($lines[0]); unset($lines[1]);
  +    //unset($lines[0]); unset($lines[1]); // XXX
   
  -    foreach ($lines as $line) {
  +    for ($line=strtok($diff,"\n"); $line !== false;$line=strtok("\n")) {
         $marker=$line[0];
         $line=substr($line,1);
         if ($marker=="@") $line='<div class="diff-sep">@'."$line</div>";
  @@ -2455,7 +2476,7 @@
       $diff=str_replace("<","&lt;",$diff);
       $lines=explode("\n",$diff);
       $out="";
  -    unset($lines[0]); unset($lines[1]);
  +    #unset($lines[0]); unset($lines[1]);
   
       $omarker=0;
       $orig=array();$new=array();
  @@ -2527,85 +2548,6 @@
       return $out;
     }
   
  -  function get_diff($rev1='',$rev2='',$text='',$options='') {
  -    global $DBInfo;
  -    $option='';
  -
  -    if ($text) {
  -      $tmpf=tempnam($DBInfo->vartmp_dir,'DIFF');
  -      $fp= fopen($tmpf, 'w');
  -      fwrite($fp, $text);
  -      fclose($fp);
  -
  -      $fp=popen("diff -u $tmpf ".$this->page->filename,'r');
  -      if (!$fp) {
  -         unlink($tmpf);
  -         return '';
  -      }
  -      while (!feof($fp)) {
  -         $line=fgets($fp,1024);
  -         $out .= $line;
  -      }
  -      pclose($fp);
  -      unlink($tmpf);
  -
  -      if (!$out) {
  -         $msg=_("No difference found");
  -      } else {
  -         $msg= _("Difference between yours and the current");
  -         if (!$options['raw'])
  -           $ret= call_user_func(array(&$this,$DBInfo->diff_type.'_diff'),$out);
  -         else
  -           $ret="<pre>$out</pre>\n";
  -      }
  -      if ($options['nomsg']) return $ret;
  -      return "<h2>$msg</h2>\n$ret";
  -    }
  -
  -    if (!$rev1 and !$rev2) {
  -      $rev1=$this->page->get_rev();
  -    } else if (0 === strcmp($rev1 , (int)$rev1)) {
  -      $rev1=$this->page->get_rev($rev1);
  -    } else if ($rev1==$rev2) $rev2='';
  -    if ($rev1) $option="-r$rev1 ";
  -    if ($rev2) $option.="-r$rev2 ";
  -
  -    if (!$option) {
  -      $msg= _("No older revisions available");
  -      if ($options['nomsg']) return '';
  -      return "<h2>$msg</h2>";
  -    }
  -    $fp=popen("rcsdiff -x,v/ -u $option ".$this->page->filename,'r');
  -    if (!$fp)
  -      return '';
  -    if (!feof($fp)) {
  -      #$line=fgets($fp,1024);
  -      #$line=fgets($fp,1024);
  -    }
  -    while (!feof($fp)) {
  -      $line=fgets($fp,1024);
  -      $out.= $line;
  -    }
  -    pclose($fp);
  -    if (!$out) {
  -      $msg= _("No difference found");
  -    } else {
  -      if ($rev1==$rev2) $ret.= "<h2>"._("Difference between versions")."</h2>";
  -      else if ($rev1 and $rev2) {
  -        $msg= sprintf(_("Difference between r%s and r%s"),$rev1,$rev2);
  -      }
  -      else if ($rev1 or $rev2) {
  -        $msg=sprintf(_("Difference between r%s and the current"),$rev1.$rev2);
  -      }
  -      if (!$options['raw'])
  -        $ret= call_user_func(array(&$this,$DBInfo->diff_type.'_diff'),$out);
  -      else
  -        $ret="<pre>$out</pre>\n";
  -    }
  -    if ($options['nomsg']) return $ret;
  -    return "<h2>$msg</h2>\n$ret";
  -  }
  -
     function send_header($header="",$options=array()) {
       global $DBInfo;
       $plain=0;
  @@ -3334,7 +3276,7 @@
   
       if (!$action) $options['pi']=1; # protect a recursivly called #redirect
   
  -#    if (!$DBInfo->security->is_allowed('read',&$options)) {
  +#    if (!$DBInfo->security->is_allowed('read',$options)) {
   #      do_invalid($formatter,$options);
   #      return;
   #    }
  
  
  
  1.124     +6 -55     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.123
  retrieving revision 1.124
  diff -u -r1.123 -r1.124
  --- wikilib.php	21 Oct 2004 08:26:40 -0000	1.123
  +++ wikilib.php	22 Oct 2004 14:49:04 -0000	1.124
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.123 2004/10/21 08:26:40 wkpark Exp $
  +// $Id: wikilib.php,v 1.124 2004/10/22 14:49:04 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -435,55 +435,13 @@
     $formatter->send_footer($args,$options);
   }
   
  -function do_diff($formatter,$options="") {
  -  global $DBInfo;
  -
  -  $range=$options['range'];
  -  $date=$options['date'];
  -  $rev=$options['rev'];
  -  $rev2=$options['rev2'];
  -  if ($options['rcspurge']) {
  -    if (!$range) $range=array();
  -    $rr='';
  -    $dum=array();
  -    foreach (array_keys($range) as $r) {
  -      if (!$rr) $rr=$range[$r];
  -      if ($range[$r+1]) continue;
  -      else
  -        $rr.=":".$range[$r];
  -      $dum[]=$rr;$rr='';
  -    }
  -    $options['range']=join(';',$dum);
  -    #$query="?action=rcspurge&amp;range=$dum";
  -    #if ($options['show']) $query.="&amp;show=1";
  -    #$options['url']=qualifiedURL($formatter->link_url($options['page'],$query));
  -    #do_goto($formatter,$options);
  -    include_once("plugin/rcspurge.php");
  -
  -    do_RcsPurge($formatter,$options);
  -    return;
  -  }
  -  $formatter->send_header("",$options);
  -  $formatter->send_title("Diff for $rev ".$options['page'],"",$options);
  -  if ($date)
  -    print $formatter->get_diff($date);
  -  else
  -    print $formatter->get_diff($rev,$rev2);
  -  if (!$DBInfo->diffonly) {
  -    print "<br /><hr />\n";
  -    $formatter->send_page();
  -  }
  -  $formatter->send_footer($args,$options);
  -  return;
  +function macro_EditHints($formatter) {
  +  $hints = "<div class=\"hint\">\n";
  +  $hints.= _("<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold italics</i></b>''''';\n''<i>mixed '''<b>bold</b>''' and italics</i>''; ---- horizontal rule.<br />\n<b>Headings:</b> = Title 1 =; == Title 2 ==; === Title 3 ===;\n==== Title 4 ====; ===== Title 5 =====.<br />\n<b>Lists:</b> space and one of * bullets; 1., a., A., i., I. numbered items;\n1.#n start numbering at n; space alone indents.<br />\n<b>Links:</b> JoinCapitalizedWords; [\"brackets and double quotes\"];\n[bracketed words];\nurl; [url]; [url label].<br />\n<b>Tables</b>: || cell text |||| cell text spanning two columns ||;\nno trailing white space allowed after tables or titles.<br />\n");
  +  $hints.= "</div>\n";
  +  return $hints;
   }
   
  -  function macro_EditHints($formatter) {
  -    $hints = "<div class=\"hint\">\n";
  -    $hints.= _("<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold italics</i></b>''''';\n''<i>mixed '''<b>bold</b>''' and italics</i>''; ---- horizontal rule.<br />\n<b>Headings:</b> = Title 1 =; == Title 2 ==; === Title 3 ===;\n==== Title 4 ====; ===== Title 5 =====.<br />\n<b>Lists:</b> space and one of * bullets; 1., a., A., i., I. numbered items;\n1.#n start numbering at n; space alone indents.<br />\n<b>Links:</b> JoinCapitalizedWords; [\"brackets and double quotes\"];\n[bracketed words];\nurl; [url]; [url label].<br />\n<b>Tables</b>: || cell text |||| cell text spanning two columns ||;\nno trailing white space allowed after tables or titles.<br />\n");
  -    $hints.= "</div>\n";
  -    return $hints;
  -  }
  -
   function macro_EditText($formatter,$value,$options='') {
     global $DBInfo;
     if ($DBInfo->hasPage('EditTextForm')) {
  @@ -645,13 +603,6 @@
     return $form;
   }
   
  -
  -function do_info($formatter,$options) {
  -  $formatter->send_header("",$options);
  -  $formatter->send_title(sprintf(_("Info. for %s"),$options['page']),"",$options);
  -  $formatter->show_info();
  -  $formatter->send_footer($args,$options);
  -}
   
   function do_invalid($formatter,$options) {
     $formatter->send_header("Status: 406 Not Acceptable",$options);
  
  
  


wkpark      2004/10/22 23:51:52

  Modified:    .        config.php.default
  Log:
  $version_class option added
  
  Revision  Changes    Path
  1.15      +2 -1      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- config.php.default	17 Oct 2004 16:05:08 -0000	1.14
  +++ config.php.default	22 Oct 2004 14:51:52 -0000	1.15
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.14 2004/10/17 16:05:08 wkpark Exp $
  +# $Id: config.php.default,v 1.15 2004/10/22 14:51:52 wkpark Exp $
   #
   $sitename='UnnamedWiki';
   $data_dir= './data';
  @@ -101,4 +101,5 @@
   #$delete_history=1;
   #$use_twikilink=1;
   #$timezone='KST'; // for windows
  +#$version_class='RcsLite';
   ?>
  
  
  


wkpark      2004/10/22 23:56:13

  Modified:    plugin   BlogChanges.php
  Log:
  all purple related things are renamed as perma
  
  Revision  Changes    Path
  1.32      +2 -2      moniwiki/plugin/BlogChanges.php
  
  Index: BlogChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogChanges.php,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- BlogChanges.php	22 Oct 2004 07:18:58 -0000	1.31
  +++ BlogChanges.php	22 Oct 2004 14:56:13 -0000	1.32
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogChanges action plugin for the MoniWiki
   //
  -// $Id: BlogChanges.php,v 1.31 2004/10/22 07:18:58 pyrasis Exp $
  +// $Id: BlogChanges.php,v 1.32 2004/10/22 14:56:13 wkpark Exp $
   
   class Blog_cache {
     function get_all_blogs() {
  @@ -345,7 +345,7 @@
       '<span class=\"blog-user\">';
     if (in_array('summary',$opts))
       $template='$out="$bullet<div class=\"blog-summary\"><div class=\"blog-title\"><a name=\"$tag\"></a>'.
  -      '<a href=\"$url#$tag\">$title</a> <a class=\"purple\" href=\"#$tag\">'.
  +      '<a href=\"$url#$tag\">$title</a> <a class=\"perma\" href=\"#$tag\">'.
         addslashes($formatter->perma_icon).
         '</a></div><span class=\"blog-user\">';
     if (!in_array('nouser',$opts))
  
  
  


wkpark      2004/10/23 00:07:25

  Modified:    lib      version.RcsLite.php
  Log:
  more fixes
  
  Revision  Changes    Path
  1.2       +4 -3      moniwiki/lib/version.RcsLite.php
  
  Index: version.RcsLite.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/version.RcsLite.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- version.RcsLite.php	22 Oct 2004 14:41:19 -0000	1.1
  +++ version.RcsLite.php	22 Oct 2004 15:07:23 -0000	1.2
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RcsLite versioning plugin for the MoniWiki
   //
  -// $Id: version.RcsLite.php,v 1.1 2004/10/22 14:41:19 wkpark Exp $
  +// $Id: version.RcsLite.php,v 1.2 2004/10/22 15:07:23 wkpark Exp $
   
   class Version_RcsLite extends Version_RCS {
     var $DB;
  @@ -55,13 +55,14 @@
   
     function delete($pagename) {
       $keyname=$DB->_getPageKey($pagename);
  -    @unlink($DB->text_dir."/RCS/$keyname,v");
  +    @unlink($DB->text_dir.'/'.$this->rcs_dir."/$keyname,v");
     }
   
     function rename($pagename,$new) {
       $keyname=$DB->_getPageKey($new);
       $oname=$DB->_getPageKey($pagename);
  -    rename($DB->text_dir."/RCS/$oname,v",$DB->text_dir."/RCS/$keyname,v");
  +    rename($DB->text_dir.'/'.$this->rcs_dir."/$oname,v",
  +      $DB->text_dir.'/'.$this->rcs_dir."/$keyname,v");
     }
   
     function get_rev($pagename,$mtime='',$last=0) {
  
  
  


wkpark      2004/10/23 00:08:56

  Modified:    .        wiki.php
  Log:
  remove meaningless line
  
  Revision  Changes    Path
  1.191     +2 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.190
  retrieving revision 1.191
  diff -u -r1.190 -r1.191
  --- wiki.php	22 Oct 2004 14:49:03 -0000	1.190
  +++ wiki.php	22 Oct 2004 15:08:53 -0000	1.191
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.190 2004/10/22 14:49:03 wkpark Exp $
  +// $Id: wiki.php,v 1.191 2004/10/22 15:08:53 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.190 $',1,-1);
  +$_revision = substr('$Revision: 1.191 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -894,8 +894,6 @@
     }
   
     function renamePage($pagename,$new,$options='') {
  -    global $DBInfo;
  -
       $REMOTE_ADDR=$_SERVER['REMOTE_ADDR'];
   
       $okey=$this->getPageKey($pagename);
  
  
  


wkpark      2004/10/23 01:44:24

  Added:       lib      diff3.php
  Log:
  add diff3.php from the phpwiki to merge conflicts and to replace 'merge' command
  
  Revision  Changes    Path
  1.1                  moniwiki/lib/diff3.php
  
  Index: diff3.php
  ===================================================================
  <?php
  rcs_id('$Id: diff3.php,v 1.1 2004/10/22 16:44:23 wkpark Exp $');
  // diff3.php
  //
  // A class for computing three way diffs
  //
  // Copyright (C) 2001 Geoffrey T. Dairiki <dairiki@dairiki.org>
  // You may copy this code freely under the conditions of the GPL.
  //
  
  require_once('lib/difflib.php');
  
  class _Diff3_Block {
      var $type = 'diff3';
      
      function _Diff3_Block ($orig = false, $final1 = false, $final2 = false) {
          $this->orig = $orig ? $orig : array();
          $this->final1 = $final1 ? $final1 : array();
          $this->final2 = $final2 ? $final2 : array();
      }
  
      function merged () {
          if (!isset($this->_merged)) {
              if ($this->final1 === $this->final2)
                  $this->_merged = &$this->final1;
              elseif ($this->final1 === $this->orig)
                  $this->_merged = &$this->final2;
              elseif ($this->final2 === $this->orig)
                  $this->_merged = &$this->final1;
              else
                  $this->_merged = false;
          }
          return $this->_merged;
      }
  
      function is_conflict () {
          return $this->merged() === false;
      }
  }
  
      
  class _Diff3_CopyBlock extends _Diff3_Block {
      var $type = 'copy';
      
      function _Diff3_CopyBlock ($lines = false) {
          $this->orig = $lines ? $lines : array();
          $this->final1 = &$this->orig;
          $this->final2 = &$this->orig;
      }
  
      function merged() {
          return $this->orig;
      }
      
      function is_conflict () {
          return false;
      }
  }
  
  class _Diff3_BlockBuilder {
      function _Diff3_BlockBuilder () {
          $this->_init();
      }
  
      function _init() {
          $this->orig = $this->final1 = $this->final2 = array();
      }
      
          
      function _append (&$array, $lines) {
          array_splice($array, sizeof($array), 0, $lines);
      }
      
      function input($lines) {
          if ($lines)
              $this->_append($this->orig, $lines);
      }
  
      function out1($lines) {
          if ($lines)
              $this->_append($this->final1, $lines);
      }
  
      function out2($lines) {
          if ($lines)
              $this->_append($this->final2, $lines);
      }
  
      function is_empty() {
          return !$this->orig && !$this->final1 && !$this->final2;
      }
      
      function finish() {
          if ($this->is_empty())
              return false;
          else {
              $block = new _Diff3_Block($this->orig, $this->final1, $this->final2);
              $this->_init();
              return $block;
          }
      }
  };
  
  
  class Diff3 {
      function Diff3 ($orig, $final1, $final2) {
          $eng = new _DiffEngine;
          $this->ConflictingBlocks = 0;  //Conflict counter
          $this->blocks = $this->__diff3($eng->diff($orig, $final1),
                                         $eng->diff($orig, $final2));
      }
  
      function __diff3($edits1, $edits2) {
          $blocks = array();
          $bb = new _Diff3_BlockBuilder;
  
          $e1 = current($edits1);
          $e2 = current($edits2);
          while ($e1 || $e2) {
  //          echo "====\n";
  //          print_r($e1);
  //          print_r($e2);
  //          echo "====\n";
             
              if ($e1 && $e2 && $e1->type == 'copy' && $e2->type == 'copy') {
                  // We have copy blocks from both diffs.  This is the (only)
                  // time we want to emit a diff3 copy block.
                  // Flush current diff3 diff block, if any
                  if ($block = $bb->finish())
                      $blocks[] = $block;
  
                  $ncopy = min($e1->norig(), $e2->norig());
                  assert($ncopy > 0);
                  $blocks[] = new _Diff3_CopyBlock(array_slice($e1->orig, 0, $ncopy));
  
                  if ($e1->norig() > $ncopy) {
                      array_splice($e1->orig, 0, $ncopy);
                      array_splice($e1->final, 0, $ncopy);
                  }
                  else
                      $e1 = next($edits1);
  
                  if ($e2->norig() > $ncopy) {
                      array_splice($e2->orig, 0, $ncopy);
                      array_splice($e2->final, 0, $ncopy);
                  }
                  else
                      $e2 = next($edits2);
              }
              else {
                  if ($e1 && $e2) {
                      if ($e1->orig && $e2->orig) {
                          $norig = min($e1->norig(), $e2->norig());
                          $orig = array_splice($e1->orig, 0, $norig);
                          array_splice($e2->orig, 0, $norig);
                          $bb->input($orig);
                      }
                      
                      if ($e1->type == 'copy')
                          $bb->out1(array_splice($e1->final, 0, $norig));
                                                       
                      if ($e2->type == 'copy')
                          $bb->out2(array_splice($e2->final, 0, $norig));
                  }
                  if ($e1 && ! $e1->orig) {
                      $bb->out1($e1->final);
                      $e1 = next($edits1);
                  }
                  if ($e2 && ! $e2->orig) {
                      $bb->out2($e2->final);
                      $e2 = next($edits2);
                  }
              }
          }
  
          if ($block = $bb->finish())
              $blocks[] = $block;
  
          return $blocks;
      }
  
  
      function merged_output($label1 = false, $label2 = false) {
          $lines = array();
          foreach ($this->blocks as $block) {
              if ($block->is_conflict()) {
                  // FIXME: this should probably be moved somewhere else...
                  $lines = array_merge($lines,
                                       array("<<<<<<<" . ($label1 ? " $label1" : '')),
                                       $block->final1,
                                       array("======="),
                                       $block->final2,
                                       array(">>>>>>>" . ($label2 ? " $label2" : '')));
  				$this->ConflictingBlocks++;
              }
              else {
                  $lines = array_merge($lines, $block->merged());
              }
          }
          return $lines;
      }
  }
  
  // Local Variables:
  // mode: php
  // tab-width: 8
  // c-basic-offset: 4
  // c-hanging-comment-ender-p: nil
  // indent-tabs-mode: nil
  // End:   
  ?>
  
  


wkpark      2004/10/23 01:47:25

  Modified:    lib      diff3.php
  Log:
  rename final as _final for PHP5
  
  Revision  Changes    Path
  1.2       +9 -8      moniwiki/lib/diff3.php
  
  Index: diff3.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/diff3.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- diff3.php	22 Oct 2004 16:44:23 -0000	1.1
  +++ diff3.php	22 Oct 2004 16:47:24 -0000	1.2
  @@ -1,5 +1,4 @@
   <?php
  -rcs_id('$Id: diff3.php,v 1.1 2004/10/22 16:44:23 wkpark Exp $');
   // diff3.php
   //
   // A class for computing three way diffs
  @@ -7,6 +6,8 @@
   // Copyright (C) 2001 Geoffrey T. Dairiki <dairiki@dairiki.org>
   // You may copy this code freely under the conditions of the GPL.
   //
  +// $Id: diff3.php,v 1.2 2004/10/22 16:47:24 wkpark Exp $
  +// $original Id: diff3.php,v 1.5 2002/08/20 16:51:46 rurban Exp $
   
   require_once('lib/difflib.php');
   
  @@ -135,14 +136,14 @@
   
                   if ($e1->norig() > $ncopy) {
                       array_splice($e1->orig, 0, $ncopy);
  -                    array_splice($e1->final, 0, $ncopy);
  +                    array_splice($e1->_final, 0, $ncopy);
                   }
                   else
                       $e1 = next($edits1);
   
                   if ($e2->norig() > $ncopy) {
                       array_splice($e2->orig, 0, $ncopy);
  -                    array_splice($e2->final, 0, $ncopy);
  +                    array_splice($e2->_final, 0, $ncopy);
                   }
                   else
                       $e2 = next($edits2);
  @@ -157,17 +158,17 @@
                       }
                       
                       if ($e1->type == 'copy')
  -                        $bb->out1(array_splice($e1->final, 0, $norig));
  +                        $bb->out1(array_splice($e1->_final, 0, $norig));
                                                        
                       if ($e2->type == 'copy')
  -                        $bb->out2(array_splice($e2->final, 0, $norig));
  +                        $bb->out2(array_splice($e2->_final, 0, $norig));
                   }
                   if ($e1 && ! $e1->orig) {
  -                    $bb->out1($e1->final);
  +                    $bb->out1($e1->_final);
                       $e1 = next($edits1);
                   }
                   if ($e2 && ! $e2->orig) {
  -                    $bb->out2($e2->final);
  +                    $bb->out2($e2->_final);
                       $e2 = next($edits2);
                   }
               }
  @@ -208,4 +209,4 @@
   // c-hanging-comment-ender-p: nil
   // indent-tabs-mode: nil
   // End:   
  -?>
  \ No newline at end of file
  +?>
  
  
  


wkpark      2004/10/23 01:48:28

  Modified:    .        wiki.php
  Log:
  replace 'merge' commands with the diff3
  
  Revision  Changes    Path
  1.192     +33 -23    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.191
  retrieving revision 1.192
  diff -u -r1.191 -r1.192
  --- wiki.php	22 Oct 2004 15:08:53 -0000	1.191
  +++ wiki.php	22 Oct 2004 16:48:27 -0000	1.192
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.191 2004/10/22 15:08:53 wkpark Exp $
  +// $Id: wiki.php,v 1.192 2004/10/22 16:48:27 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.191 $',1,-1);
  +$_revision = substr('$Revision: 1.192 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -2511,35 +2511,45 @@
       global $DBInfo;
   
       if (!$text) return '';
  -    # save new
  -    $tmpf3=tempnam($DBInfo->vartmp_dir,'MERGE_NEW');
  -    $fp= fopen($tmpf3, 'w');
  -    fwrite($fp, $text);
  -    fclose($fp);
  -
       # recall old rev
       $opts['rev']=$this->page->get_rev();
  -   
       $orig=$this->page->get_raw_body($opts);
  -    $tmpf2=tempnam($DBInfo->vartmp_dir,'MERGE_ORG');
  -    $fp= fopen($tmpf2, 'w');
  -    fwrite($fp, $orig);
  -    fclose($fp);
   
  -    $fp=popen("merge -p ".$this->page->filename." $tmpf2 $tmpf3",'r');
  +    if (0) {
  +      # save new
  +      $tmpf3=tempnam($DBInfo->vartmp_dir,'MERGE_NEW');
  +      $fp= fopen($tmpf3, 'w');
  +      fwrite($fp, $text);
  +      fclose($fp);
   
  -    if (!$fp) {
  +      $tmpf2=tempnam($DBInfo->vartmp_dir,'MERGE_ORG');
  +      $fp= fopen($tmpf2, 'w');
  +      fwrite($fp, $orig);
  +      fclose($fp);
  +
  +      $fp=popen("merge -p ".$this->page->filename." $tmpf2 $tmpf3",'r');
  +
  +      if (!$fp) {
  +        unlink($tmpf2);
  +        unlink($tmpf3);
  +        return '';
  +      }
  +      while (!feof($fp)) {
  +        $line=fgets($fp,1024);
  +        $out .= $line;
  +      }
  +      pclose($fp);
         unlink($tmpf2);
         unlink($tmpf3);
  -      return '';
  -    }
  -    while (!feof($fp)) {
  -      $line=fgets($fp,1024);
  -      $out .= $line;
  +    } else {
  +      include_once('lib/diff3.php');
  +      # current
  +      $current=$this->page->_get_raw_body();
  +
  +      $merge= new Diff3(explode("\n",$orig),
  +        explode("\n",$text),explode("\n",$current));
  +      $out=implode("\n",$merge->merged_output());
       }
  -    pclose($fp);
  -    unlink($tmpf2);
  -    unlink($tmpf3);
   
       $out=preg_replace("/(<{7}|>{7}).*\n/","\\1\n",$out);
   
  
  
  


wkpark      2004/10/23 01:49:25

  Modified:    plugin   Diff.php
  Log:
  replace diff command with difflib.php
  
  Revision  Changes    Path
  1.2       +27 -17    moniwiki/plugin/Diff.php
  
  Index: Diff.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Diff.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Diff.php	22 Oct 2004 14:44:03 -0000	1.1
  +++ Diff.php	22 Oct 2004 16:49:25 -0000	1.2
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a diff plugin for the MoniWiki
   //
  -// $Id: Diff.php,v 1.1 2004/10/22 14:44:03 wkpark Exp $
  +// $Id: Diff.php,v 1.2 2004/10/22 16:49:25 wkpark Exp $
   
   function macro_diff($formatter,$value,&$options)
   {
  @@ -12,29 +12,39 @@
     $option='';
   
     if ($options['text']) {
  -    $tmpf=tempnam($DBInfo->vartmp_dir,'DIFF');
  -    $fp= fopen($tmpf, 'w');
  -    fwrite($fp, $options['text']);
  -    fclose($fp);
  -
  -    $fp=popen("diff -u $tmpf ".$formatter->page->filename,'r');
  -    if (!$fp) {
  -       unlink($tmpf);
  -       return '';
  -    }
  -    while (!feof($fp)) {
  -       $line=fgets($fp,1024);
  -       $out .= $line;
  +    if (0) {
  +      $tmpf=tempnam($DBInfo->vartmp_dir,'DIFF');
  +      $fp= fopen($tmpf, 'w');
  +      fwrite($fp, $options['text']);
  +      fclose($fp);
  +
  +      $fp=popen("diff -u $tmpf ".$formatter->page->filename,'r');
  +      if (!$fp) {
  +        unlink($tmpf);
  +        return '';
  +      }
  +      fgets($fp,1024); fgets($fp,1024);
  +      while (!feof($fp)) {
  +        $line=fgets($fp,1024);
  +        $out .= $line;
  +      }
  +      pclose($fp);
  +      unlink($tmpf);
  +    } else {
  +      $current=$formatter->page->get_raw_body();
  +      include_once('lib/difflib.php');
  +      $mydiff=new Diff(explode("\n",$options['text']),explode("\n",$current));
  +
  +      $fmtdiff = new UnifiedDiffFormatter;
  +      $out = $fmtdiff->format($mydiff);
       }
  -    pclose($fp);
  -    unlink($tmpf);
   
       if (!$out) {
          $msg=_("No difference found");
       } else {
          $msg= _("Difference between yours and the current");
          if (!$options['raw'])
  -         $ret= call_user_func(array(&$formatter,$DBInfo->diff_type),$out);
  +         $ret=call_user_func(array(&$formatter,$DBInfo->diff_type.'_diff'),$out);
          else
            $ret="<pre>$out</pre>\n";
       }
  
  
  


wkpark      2004/10/23 01:51:09

  Modified:    .        wikilib.php
  Log:
  fix more: replace get_diff() with macro_Diff()
  
  Revision  Changes    Path
  1.125     +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.124
  retrieving revision 1.125
  diff -u -r1.124 -r1.125
  --- wikilib.php	22 Oct 2004 14:49:04 -0000	1.124
  +++ wikilib.php	22 Oct 2004 16:51:09 -0000	1.125
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.124 2004/10/22 14:49:04 wkpark Exp $
  +// $Id: wikilib.php,v 1.125 2004/10/22 16:51:09 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -917,7 +917,7 @@
   
         print $menu;
         print "<div id='wikiPreview'>\n";
  -      print $formatter->get_diff("","",$savetext);
  +      print $formatter->macro_repl('Diff','',array('text'=>$savetext));
         print "</div>\n";
         $formatter->send_footer();
         return;
  
  
  


wkpark      2004/10/23 19:09:23

  Added:       plugin   Bar.php
  Log:
  add a new macro: a progress bar
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/Bar.php
  
  Index: Bar.php
  ===================================================================
  <?php
  // Copyright 2004 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a simple progress bar plugin for the MoniWiki
  //
  // Usage: [[Bar(10%)]] [[Bar(0.5)]]
  //
  // $Id: Bar.php,v 1.1 2004/10/23 10:09:21 wkpark Exp $
  
  function macro_Bar($formatter,$value) {
      global $DBInfo;
  
      $imgdir=$DBInfo->imgs_dir;
      $iconset='red';
      $full_width=0;
      $notext=0;
  
      # parse args
      $dum=explode(',',$value);
      $value=array_pop($dum); // last arg is percentage value.
      if (in_array('fullwidth',$dum)) $full_width=1;
      if (in_array('notext',$dum)) $notext=1;
  
      $dum=trim($value);
      # make percent value
      if (substr($dum,-1) == '%') {
          $val=substr($dum,0,-1);
          if ($val > 100.0) $val=100;
      } else {
          if ($dum > 1.0) $val=100;
          else $val=$dum*100.0;
      }
  
      $ival=0;
      if ($val < 100.0) $ival=100.0 - $val;
      $img="<div style='white-space: nowrap'><img src='$imgdir/vote/$iconset/b_leftbar.gif' align='middle' />";
      $img.="<img src='$imgdir/vote/$iconset/b_mainbar.gif' ".
          "height='14' width='$val%' align='middle' />";
      if ($full_width && $ival != 0) {
          $img.="<img src='$imgdir/vote/$iconset/mainbar.gif' ".
              " height='14' width='$ival%' align='middle' />";
          $img.="<img src='$imgdir/vote/$iconset/rightbar.gif' align='middle' />";
      } else {
          $img.="<img src='$imgdir/vote/$iconset/b_rightbar.gif' align='middle' />";
      }
      $state=((int)$val).'%';
      if (!$notext)
          $img.=' '.$state.'</div>';
  
      return $img;
  }
  
  // vim:et:sts=4:sw=4:
  
  ?>
  
  
  


wkpark      2004/10/24 18:21:27

  Modified:    imgs/vote/blue leftbar.gif mainbar.gif rightbar.gif
  Added:       imgs/vote/blue b_leftbar.gif b_mainbar.gif b_rightbar.gif
  Log:
  fix and add some additional icons
  
  Revision  Changes    Path
  1.2       +2 -2      moniwiki/imgs/vote/blue/leftbar.gif
  
  	<<Binary file>>
  
  
  1.2       +2 -1      moniwiki/imgs/vote/blue/mainbar.gif
  
  	<<Binary file>>
  
  
  1.2       +1 -2      moniwiki/imgs/vote/blue/rightbar.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/vote/blue/b_leftbar.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/vote/blue/b_mainbar.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/vote/blue/b_rightbar.gif
  
  	<<Binary file>>
  
  


pyrasis     2004/10/25 02:29:33

  Modified:    locale/po ko.po
  Log:
  Add korean translation of EnlargeEditor.
  
  Revision  Changes    Path
  1.15      +1 -1      moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- ko.po	17 Oct 2004 16:45:26 -0000	1.14
  +++ ko.po	24 Oct 2004 17:29:32 -0000	1.15
  @@ -948,7 +948,7 @@
   
   #: ../wikilib.php:563
   msgid "EnlargeEditor"
  -msgstr ""
  +msgstr "â ̱"
   
   #: ../wikilib.php:567 ../locale/dummy.php:6
   msgid "InterWiki"
  
  
  


wkpark      2004/11/03 02:35:41

  Modified:    .        wiki.php
  Log:
  fixed normalize_word()
  fixed set_locale()
  add $auto_search option
  use call_user_func_array() instead of call_user_func()
  
  Revision  Changes    Path
  1.193     +35 -16    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.192
  retrieving revision 1.193
  diff -u -r1.192 -r1.193
  --- wiki.php	22 Oct 2004 16:48:27 -0000	1.192
  +++ wiki.php	2 Nov 2004 17:35:41 -0000	1.193
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.192 2004/10/22 16:48:27 wkpark Exp $
  +// $Id: wiki.php,v 1.193 2004/11/02 17:35:41 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.192 $',1,-1);
  +$_revision = substr('$Revision: 1.193 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -1755,7 +1755,7 @@
   
       if (!$DBInfo->use_twikilink) $islink=0;
       list($page,$page_text,$gpage)=
  -      normalize_word($word,$this->group,$this->page->name,$nogroup,$islink);
  +      normalize_word($page,$this->group,$this->page->name,$nogroup,$islink);
       if ($text) {
         if (preg_match("/^(http|ftp).*\.(png|gif|jpeg|jpg)$/i",$text)) {
           $text=str_replace('&','&amp;',$text);
  @@ -1935,7 +1935,7 @@
         else
           return "[[".$name."]]";
       }
  -    $ret=call_user_func("macro_$name",$this,$args,$options);
  +    $ret=call_user_func_array("macro_$name",array(&$this,$args,$options));
       return $ret;
     }
   
  @@ -3050,16 +3050,30 @@
   }
   
   function set_locale($lang,$charset='') {
  +  $supported=array(
  +    'en_US'=>array('ISO-8859-1'),
  +    'fr_FR'=>array('ISO-8859-1'),
  +    'ko_KR'=>array('EUC-KR','UHC'),
  +  );
     if ($lang == 'auto') {
       # get broswer's settings
       $langs=get_locales();
       $lang= $langs[0];
   
       $charset= strtoupper($charset);
  +    # XXX
       if (function_exists('nl_langinfo'))
         $server_charset= nl_langinfo(CODESET);
  -    if ($charset == 'UTF-8' or $charset != $server_charset)
  -      $lang.=".".$charset;
  +
  +    if ($charset == 'UTF-8') {
  +      if ($charset != $server_charset) $lang.=".".$charset;
  +    } else {
  +      if ($supported[$lang] && in_array($charset,$supported[$lang])) {
  +        return $lang.'.'.$charset;
  +      } else {
  +        return 'en_US'; // default
  +      }
  +    }
     }
     return $lang;
   }
  @@ -3146,11 +3160,14 @@
   $options['timer']->Check("load");
   
   $lang= set_locale($DBInfo->lang,$DBInfo->charset);
  +$DBInfo->lang=$lang;
   
   if (isset($locale)) {
     if (!@include_once('locale/'.$lang.'/LC_MESSAGES/moniwiki.php'))
       @include_once('locale/'.substr($lang,0,2).'/LC_MESSAGES/moniwiki.php');
  -} else if (substr($lang,0,2) != 'en') {
  +} else if (substr($lang,0,2) == 'en') {
  +  $test=setlocale(LC_ALL, $lang);
  +} else {
     if ($DBInfo->include_path) $dirs=explode(':',$DBInfo->include_path);
     else $dirs=array('.');
   
  @@ -3237,16 +3254,18 @@
         return;
       }
       if (!$page->exists()) {
  -      $npage=str_replace(' ','',$page->name);
  -      if ($DBInfo->hasPage($npage)) {
  -        $options['value']=$npage;
  -        do_goto($formatter,$options);
  -        return;
  -      }
  -      $options['value']=$page->name;
  -      $options['check']=1;
  -      if (do_titlesearch($formatter,$options))
  +      if ($DBInfo->auto_search) {
  +        $npage=str_replace(' ','',$page->name);
  +        if ($DBInfo->hasPage($npage)) {
  +          $options['value']=$npage;
  +          do_goto($formatter,$options);
             return;
  +        }
  +        $options['value']=$page->name;
  +        $options['check']=1;
  +        if (do_titlesearch($formatter,$options))
  +          return;
  +      }
   
         $formatter->send_header("Status: 404 Not found",$options);
   
  
  
  


wkpark      2004/11/03 03:01:31

  Modified:    plugin   Bar.php
  Log:
  more fixes
  
  Revision  Changes    Path
  1.2       +16 -10    moniwiki/plugin/Bar.php
  
  Index: Bar.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Bar.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Bar.php	23 Oct 2004 10:09:21 -0000	1.1
  +++ Bar.php	2 Nov 2004 18:01:31 -0000	1.2
  @@ -5,13 +5,13 @@
   //
   // Usage: [[Bar(10%)]] [[Bar(0.5)]]
   //
  -// $Id: Bar.php,v 1.1 2004/10/23 10:09:21 wkpark Exp $
  +// $Id: Bar.php,v 1.2 2004/11/02 18:01:31 wkpark Exp $
   
   function macro_Bar($formatter,$value) {
       global $DBInfo;
   
       $imgdir=$DBInfo->imgs_dir;
  -    $iconset='red';
  +    $iconset='blue';
       $full_width=0;
       $notext=0;
   
  @@ -27,26 +27,32 @@
           $val=substr($dum,0,-1);
           if ($val > 100.0) $val=100;
       } else {
  +        $p=strpos($dum,'/'); # parse 10/80
  +        if ($p !== false)
  +            $dum=((int)strtok($dum,'/'))/((int)strtok(''));
  +
           if ($dum > 1.0) $val=100;
           else $val=$dum*100.0;
       }
   
       $ival=0;
       if ($val < 100.0) $ival=100.0 - $val;
  -    $img="<div style='white-space: nowrap'><img src='$imgdir/vote/$iconset/b_leftbar.gif' align='middle' />";
  -    $img.="<img src='$imgdir/vote/$iconset/b_mainbar.gif' ".
  +    $img="<span style='white-space: nowrap'>";
  +    $img.="<img src='$imgdir/vote/$iconset/leftbar.gif' align='middle' />";
  +    $img.="<span style='white-space: nowrap'>";
  +    $img.="<img src='$imgdir/vote/$iconset/mainbar.gif' ".
           "height='14' width='$val%' align='middle' />";
       if ($full_width && $ival != 0) {
  -        $img.="<img src='$imgdir/vote/$iconset/mainbar.gif' ".
  -            " height='14' width='$ival%' align='middle' />";
  -        $img.="<img src='$imgdir/vote/$iconset/rightbar.gif' align='middle' />";
  -    } else {
  +        $img.="<img src='$imgdir/vote/$iconset/b_mainbar.gif' ".
  +            " height='14' width='$ival%' align='middle' /></span>";
           $img.="<img src='$imgdir/vote/$iconset/b_rightbar.gif' align='middle' />";
  +    } else {
  +        $img.="</span><img src='$imgdir/vote/$iconset/rightbar.gif' align='middle' />";
       }
       $state=((int)$val).'%';
       if (!$notext)
  -        $img.=' '.$state.'</div>';
  -
  +        $img.=' '.$state;
  +    $img.='</span>';
       return $img;
   }
   
  
  
  


wkpark      2004/11/03 03:01:55

  Modified:    plugin   Navigation.php
  Log:
  fixed invalid index page
  
  Revision  Changes    Path
  1.6       +2 -2      moniwiki/plugin/Navigation.php
  
  Index: Navigation.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Navigation.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Navigation.php	17 Oct 2004 15:40:55 -0000	1.5
  +++ Navigation.php	2 Nov 2004 18:01:55 -0000	1.6
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Navigation(IndexPage)]]
   //
  -// $Id: Navigation.php,v 1.5 2004/10/17 15:40:55 wkpark Exp $
  +// $Id: Navigation.php,v 1.6 2004/11/02 18:01:55 wkpark Exp $
   
   function macro_Navigation($formatter,$value) {
     global $DBInfo;
  @@ -53,7 +53,7 @@
     #print_r($indices);
     if ($count > 1) {
       $prev='';
  -    $index_text=$index;
  +    $index_text=$value;
       if ($group) {
         $index=$value;
         $index_text=substr($index,strlen($group));
  
  
  


wkpark      2004/11/03 03:03:59

  Modified:    plugin/processor jade.php linuxdoc.php
  Log:
  use iconv() to convert legacy encoding:sgml2html does not support UTF-8 encoding
  
  Revision  Changes    Path
  1.7       +3 -4      moniwiki/plugin/processor/jade.php
  
  Index: jade.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/jade.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- jade.php	14 Sep 2004 15:29:44 -0000	1.6
  +++ jade.php	2 Nov 2004 18:03:59 -0000	1.7
  @@ -6,7 +6,7 @@
   // Usage: {{{#!jade
   // docbook code
   // }}}
  -// $Id: jade.php,v 1.6 2004/09/14 15:29:44 wkpark Exp $
  +// $Id: jade.php,v 1.7 2004/11/02 18:03:59 wkpark Exp $
   
   function processor_jade($formatter,$value,$options=array()) {
     global $DBInfo;
  @@ -81,10 +81,9 @@
       return "<pre class='code'>$src\n</pre>\n";
     }
   
  -  if (!$formatter->preview)
  -    $cache->update($pagename,$html);
  +  if (!$formatter->preview) $cache->update($pagename,$html);
     return $html;
   }
   
  -// vim:et:ts=2:
  +// vim:et:sts=2:
   ?>
  
  
  
  1.5       +24 -9     moniwiki/plugin/processor/linuxdoc.php
  
  Index: linuxdoc.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/linuxdoc.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- linuxdoc.php	8 Apr 2004 18:23:44 -0000	1.4
  +++ linuxdoc.php	2 Nov 2004 18:03:59 -0000	1.5
  @@ -6,16 +6,18 @@
   // Usage: {{{#!linuxdoc
   // linuxdoc code
   // }}}
  -// $Id: linuxdoc.php,v 1.4 2004/04/08 18:23:44 wkpark Exp $
  +// $Id: linuxdoc.php,v 1.5 2004/11/02 18:03:59 wkpark Exp $
   
   function processor_linuxdoc($formatter,$value) {
     global $DBInfo;
  -  $langs=array('en','de','nl','fr','es','da','no','se','pt','ca','it','ro');
  +#  $langs=array('en','de','nl','fr','es','da','no','se','pt','ca','it','ro');
  +  $langs=array('en','de','nl','fr','es','da','no','se','pt','ca','it','ro','ko','ja');
  +  $toutf=array('ko'=>'UHC','ja'=>'nippon');
   
     $pagename=$formatter->page->name;
     $cache= new Cache_text("linuxdoc");
   
  -  if (!$formatter->preview and $cache->exists($pagename) and $cache->mtime($pagename) > $formatter->page->mtime())
  +  if (!$formatter->refresh and !$formatter->preview and $cache->exists($pagename) and $cache->mtime($pagename) > $formatter->page->mtime())
       return $cache->fetch($pagename);
   
     $sgml2html= "sgml2html";
  @@ -33,8 +35,16 @@
       list($tag,$args)=explode(" ",$line,2);
     }
   
  +  $converted=0;
     $tmpf=tempnam("/tmp","SGML2HTML");
     $fp= fopen($tmpf.".sgml", "w");
  +  if (strtoupper($DBInfo->charset) == 'UTF-8' and isset($toutf[$lang])) {
  +    if (function_exists('iconv') and ($new=iconv('UTF-8',$toutf[$lang],$value)))
  +    {
  +      $value=$new;
  +      $converted=1;
  +    }
  +  }
     fwrite($fp, $value);
     fclose($fp);
   
  @@ -43,22 +53,27 @@
     exec($cmd,$log);
   
     $log=join("",$log);
  -  $fp=fopen($tmpf.".html",'r');
  -  $html=fread($fp,filesize($tmpf.".html"));
  +  $tmpfh=$tmpf.'.html';
  +  $fp=fopen($tmpfh,'r');
  +  $html=fread($fp,filesize($tmpfh));
     fclose($fp);
   
     unlink($tmpf.".sgml");
  -  unlink($tmpf.".html");
  +  unlink($tmpf); // XXX
  +  unlink($tmpfh);
   
     if (!$html) {
       $src=str_replace("<","&lt;",$value);
       return "<pre class='code'>$src\n</pre>\n";
     }
  +  if ($converted) {
  +    $new=iconv($toutf[$lang],'UTF-8',$html);
  +    if ($new) $html=$new;
  +  }
   
  -  if (!$formatter->preview)
  -    $cache->update($pagename,$html);
  +  if (!$formatter->preview) $cache->update($pagename,$html);
     return $log.$html;
   }
   
  -// vim:et:ts=2:
  +// vim:et:sts=2:
   ?>
  
  
  


wkpark      2004/11/03 03:05:46

  Modified:    .        wikilib.php
  Log:
  use imgs_dir_interwiki
  fixed FootNote(), TableOfContents() to eliminate #300350
  
  Revision  Changes    Path
  1.126     +4 -4      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.125
  retrieving revision 1.126
  diff -u -r1.125 -r1.126
  --- wikilib.php	22 Oct 2004 16:51:09 -0000	1.125
  +++ wikilib.php	2 Nov 2004 18:05:46 -0000	1.126
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.125 2004/10/22 16:51:09 wkpark Exp $
  +// $Id: wikilib.php,v 1.126 2004/11/02 18:05:46 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1281,7 +1281,7 @@
         #$href=$url;
       }
       $icon=strtolower($wiki)."-16.png";
  -    $out.="<tr><td><tt><img src='$DBInfo->imgs_dir/$icon' align='middle' alt='$wiki:'><a href='$url'>$wiki</a></tt></td><td><tt>";
  +    $out.="<tr><td><tt><img src='$DBInfo->imgs_dir_interwiki/$icon' align='middle' alt='$wiki:'><a href='$url'>$wiki</a></tt></td><td><tt>";
       $out.="<a href='$href'>$href</a></tt></td></tr>\n";
     }
     $out.="</table>\n";
  @@ -1500,7 +1500,7 @@
     return "<br />\n";
   }
   
  -function macro_FootNote($formatter,$value="") {
  +function macro_FootNote(&$formatter,$value="") {
     if (!$value) {# emit all footnotes
       if (!$formatter->foots) return '';
       $foots=join("\n",$formatter->foots);
  @@ -1577,7 +1577,7 @@
       "<a href='#$fnidx' title='$value'>$text</a></tt>";
   }
   
  -function macro_TableOfContents($formatter="",$value="") {
  +function macro_TableOfContents(&$formatter,$value="") {
    global $DBInfo;
    $head_num=1;
    $head_dep=0;
  
  
  


wkpark      2004/11/03 03:06:21

  Modified:    lib      rcslite.php
  Log:
  more cleanup
  
  Revision  Changes    Path
  1.3       +62 -181   moniwiki/lib/rcslite.php
  
  Index: rcslite.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/rcslite.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- rcslite.php	22 Oct 2004 14:35:12 -0000	1.2
  +++ rcslite.php	2 Nov 2004 18:06:21 -0000	1.3
  @@ -3,9 +3,8 @@
   # Copyright (c) 2004 Won-kyu Park <wkpark at kldp.org>
   #
   # this module is ported from the RcsLite.pm of the TWiki by wkpark.
  -# $Id: rcslite.php,v 1.2 2004/10/22 14:35:12 wkpark Exp $
  +# $Id: rcslite.php,v 1.3 2004/11/02 18:06:21 wkpark Exp $
   
  -#
   # Original notice:
   #
   # Module of TWiki Collaboration Platform, http://TWiki.org/
  @@ -42,9 +41,6 @@
   #    this needs fixing
   #  - cleaner dealing with errors/warnings
   
  -define(DIFF_DEBUG,0);
  -define(DIFFEND_DEBUG,0);
  -
   Class RcsLite {
       var $rcs_dir='RCS';
       var $rcs_user='root';
  @@ -60,110 +56,68 @@
           $this->_next = array();
       }
     
  -    # ======================
       function _trace($text)
       {
       #   TWiki::writeDebug( $text );
       }
   
  -# Process an RCS file
  -
  -# File format information:
  -#
  -#rcstext    ::=  admin {delta}* desc {deltatext}*
  -#admin      ::=  head {num};
  -#                { branch   {num}; }
  -#                access {id}*;
  -#                symbols {sym : num}*;
  -#                locks {id : num}*;  {strict  ;}
  -#                { comment  {string}; }
  -#                { expand   {string}; }
  -#                { newphrase }*
  -#delta      ::=  num
  -#                date num;
  -#                author id;
  -#                state {id};
  -#                branches {num}*;
  -#                next {num};
  -#                { newphrase }*
  -#desc       ::=  desc string
  -#deltatext  ::=  num
  -#                log string
  -#                { newphrase }*
  -#                text string
  -#num        ::=  {digit | .}+
  -#digit      ::=  0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
  -#id         ::=  {num} idchar {idchar | num }*
  -#sym        ::=  {digit}* idchar {idchar | digit }*
  -#idchar     ::=  any visible graphic character except special
  -#special    ::=  $ | , | . | : | ; | @
  -#string     ::=  @{any character, with @ doubled}*@
  -#newphrase  ::=  id word* ;
  -#word       ::=  id | num | string | :
  -#
  -# Identifiers are case sensitive. Keywords are in lower case only. The sets of
  -# keywords and identifiers can overlap.
  -# In most environments RCS uses the ISO 8859/1 encoding: 
  -# visible graphic characters are codes 041-176 and 240-377, and white space
  -# characters are codes 010-015 and 040. 
  -#
  -# Dates, which appear after the date keyword, are of the form Y.mm.dd.hh.mm.ss, 
  -# where Y is the year, mm the month (01-12), dd the day (01-31), hh 
  -# the hour(00-23), mm the minute (00-59), and ss the second (00-60).
  -# Y contains just the last two digits of the year for years from 1900 through
  -# 1999, and all the digits of years thereafter. 
  -# Dates use the Gregorian calendar; times use UTC. 
  -#
  -# The newphrase productions in the grammar are reserved for future extensions
  -# to the format of RCS files.
  -# No newphrase will begin with any keyword already in use. 
  +    function _readString($fp)
  +    {
  +        $string='';
  +        while(($ch=fgetc($fp)) !== false) {
  +            if ($ch == '@') {
  +                $ch=fgetc($fp);
  +                if ($ch != '@') break;
  +            }
  +            $string.=$ch;
  +        }
  +        return array($string,$ch);
  +    }
   
  -#
       function _readTo($fp, $char)
       {
           $ch = null;
           $buf = '';
           $string = '';
           $state = '';
  -        $space = 0;
  -        while( false !== ($ch = fgetc($fp)) ) {
  -            if( $ch == '@' ) {
  -                if( $state == '@' ) {
  -                    $state = 'e';
  -                    continue;
  -                } else if( $state == 'e' ) {
  -                    $state = '@';
  -                    $string .= '@';
  -                    continue;
  +
  +        while( false !== ($ch = fgetc($fp)) )
  +            if ( !ctype_space($ch) ) break;
  +
  +        do {
  +/*
  +            if ($state) {
  +                if ($ch == '@') {
  +                    $ch=fgetc($fp);
  +                    if ($ch == '@') {
  +                        $string.=$ch;
  +                        continue;
  +                    } else {
  +                        $state='';
  +                        if ($char == '@') break;
  +                    }
                   } else {
  -                    $state = '@';
  -                    continue;
  -                }
  -            } else if ( $state ) {
  -                if ( $state == '@' ) {
  -                    $string .= $ch;
  +                    $string.=$ch;
                       continue;
  -                } else if( $state == 'e' ) {
  -                    $state = '';
  -                    if( $char == '@' ) break;
  -                    # End of string
                   }
  +            } else if( $ch == '@' ) {
  +                $state = 1;
  +                continue;
               }
  -           
  -            if ( preg_match('/\s/',$ch) ) {
  -                if( $space or $buf == '' ) {
  -                    continue;
  -                } else {
  -                    $space = 1;
  -                    $ch = ' ';
  -                }
  -            } else {
  -                $space = 0;
  +//*/
  +//*
  +            if( $ch == '@' ) {
  +                list($str,$ch)=$this->_readString($fp);
  +                $string.=$str;
  +                if ($char == '@') break;
               }
  +//*/
               $buf .= $ch;
               if( $ch == $char ) break;
  -        }
  -        if ($ch == null) $buf=null;
  +        } while ( false !== ($ch = fgetc($fp)) );
  +
  +        $buf = preg_replace('/\s+/',' ',$buf);
  +        if ($buf == '') $buf=null;
           return array( $buf, $string );
       }
       
  @@ -181,7 +135,7 @@
       }
       
       # Read in the whole RCS file
  -    function _process($file='', $force=0)
  +    function _process($file='', $quick=0,$force=0)
       {
           if( $this->_where && !$force) return;
   
  @@ -270,12 +224,15 @@
                       $date[$num] = $this->rcsDateToTime($match[2]);
                   }
               } else if( $where == 'delta.next' ) {
  -                if( preg_match('/^next ([^;]*);$/',$line,$match) ){
  +                if( preg_match('/^next\s+([^;]*);$/',$line,$match) ){
                       $where = 'delta.date';
                       $next[$num] = $match[1];
                       if ($next[$num] == "") {
                           $where = 'desc';
                           $term = '@';
  +                        if ($quick) {
  +                            break;
  +                        }
                       }
                   }
               } else if( $where == 'delta.author' ) {
  @@ -412,7 +369,6 @@
           return $rlog;
       }
       
  -    # ======================
       function _binaryChange()
       {
           # Nothing to be done but note for re-writing
  @@ -421,28 +377,24 @@
           # FIXME: unless we have to not do diffs for binary files
       }
       
  -    # ======================
       function numRevisions()
       {
           $this->_ensureProcessed();
           return $this->_head;
       }
       
  -    # ======================
       function access()
       {
           $this->_ensureProcessed();
           return $this->_access;
       }
       
  -    # ======================
       function comment()
       {
           $this->_ensureProcessed();
           return $this->_comment;
       }
       
  -    # ======================
       function date($version)
       {
           $this->_ensureProcessed();
  @@ -467,28 +419,24 @@
           return strtotime("$dum[0]/$dum[1]/$dum[2] $dum[3]:$dum[4]:$dum[5]");
       }
       
  -    # ======================
       function description()
       {
           $this->_ensureProcessed();
           return $this->_description;
       }
       
  -    # ======================
       function author($version)
       {
           $this->_ensureProcessed();
           return $this->_author[$version];
       }
       
  -    # ======================
       function log($version)
       {
           $this->_ensureProcessed();
           return $this->_log[$version];
       }
       
  -    # ======================
       function delta($version)
       {
           $this->_ensureProcessed();
  @@ -500,7 +448,6 @@
           return $dum[0].'.'.sprintf("%s",$dum[1]+1);
       }
       
  -    # ======================
       function addRevisionText($text,$log, $date=0)
       {
           $this->_ensureProcessed();
  @@ -510,7 +457,6 @@
           #   $text = $this->_readFile( $this->{file} )
           $head = $this->numRevisions();
           if( $head ) {
  -            //$delta = $this->_diffText( $text, $this->delta($head));
               $delta = $this->_diffText( $this->delta($head),$text);
               $this->_delta[$head] = $delta;
               $nhead=$this->incRev($head);
  @@ -532,7 +478,6 @@
           return $this->_writeMe();
       }
   
  -    # ======================
       function addRevisionPage($log, $date=0)
       {
           $this->_ensureProcessed();
  @@ -547,7 +492,6 @@
           $this->addRevisionText($text, $log, $date);
       }
   
  -    # ======================
       function _writeMe()
       {
           $dataError = '';
  @@ -558,7 +502,6 @@
           if( ! $fp ) {
              $dataError = 'Problem opening ' . $this->rcsFile . ' for writing';
           } else {
  -           #binmode( $out );
              fwrite( $fp, $this->_make_rcs() );
              fclose( $fp );
           }
  @@ -566,7 +509,6 @@
           return $dataError;
       }
       
  -    # ======================
       # Replace the top revision
       # Return non empty string with error message if there is a problem
       function replaceRevision($text, $comment, $date)
  @@ -576,7 +518,6 @@
           $this->addRevisionText( $text, $comment, $date );
       }
       
  -    # ======================
       # Delete the last revision - do nothing if there is only one revision
       function deleteRevision()
       {
  @@ -587,7 +528,6 @@
           return $this->_writeMe();
       }
       
  -    # ======================
       function _delLastRevision() // XXX
       {
           $numRevisions = $this->numRevisions();
  @@ -602,7 +542,6 @@
           $this->_head = $numRevisions;
       }
       
  -    # ======================
       function revisionDiff($rev1, $rev2, $type='diff')
       {
           $this->_ensureProcessed();
  @@ -610,27 +549,26 @@
           if (!$rev2) $rev2=$this->_head;
           $text1 = $this->getRevision( $rev1 );
           $text2 = $this->getRevision( $rev2 );
  +
           $diff = $this->_diffText( $text2, $text1, $type );
           return $diff;
       }
       
  -    # ======================
       function getRevision($version)
       {
           $this->_ensureProcessed();
           $head = $this->numRevisions();
           if ( $version != $head && !in_array($version,$this->_next))
  -            return;
  -        if( $version == $head ) {
  +            return; // XXX
  +        if( strcmp($version,$head) == 0 ) {
               return $this->delta( $version );
           } else {
               $headText = $this->delta( $head );
  -            $text = $this->_mySplit( $headText,1 );
  +            $text = $this->_mySplit( $headText );
               return $this->_patchN( $text, $this->_next[$head], $version );
           }
       }
       
  -    # ======================
       # If revision file is missing, information based on actual file is returned.
       # Date is in epoch based seconds
       function getRevisionInfo($version)
  @@ -647,10 +585,8 @@
           }
       }
       
  -    
  -    # ======================
       # Apply delta (patch) to text. Note that RCS stores reverse deltas,
  -    # the text for revision x is patched to produce text for revision x-1.
  +    # the text for revision 1.x is patched to produce text for revision 1.x-1.
       # It is fiddly dealing with differences in number of line breaks after the
       # end of the text.
       function _patch(&$text,$delta)
  @@ -695,62 +631,33 @@
           }
       }
       
  -    
  -    # ======================
       function _patchN(&$text,$version,$target)
       {
           $deltaText= $this->delta( $version );
           $delta = $this->_mySplit( $deltaText );
           $this->_patch( $text, $delta );
  -        if( $version == $target ) {
  +        if( strcmp($version,$target) == 0 ) {
               return implode('', $text );
           } else {
               return $this->_patchN( $text, $this->_next[$version], $target );
           }
       }
       
  -    # ======================
       # Split and make sure we have trailing carriage returns
  -    function _mySplit($text,$addEntries=0,$add_cr=1)
  +    function _mySplit($text)
       {
  -        $ending = '';
  -        if( preg_match_all("/(\n)$/", $text,$match) )
  -            $ending = $match[1][0]; // XXX
  -   
  -        $list = preg_split( "/\n/", $text );
  +        $list = split( "\n", $text );
           $sz=sizeof($list);
  -        #print $sz.':';
  -        for( $i = 0; $i<$sz; $i++ )
  -            $list[$i] .= "\n";
  -    
  -        if( $ending ) {
  -            if (strlen($ending) == 1) array_pop($list);
  -/*
  -            if( $addEntries ) {
  -                $len = strlen($ending);
  -                if( $list ) {
  -                   $len--;
  -                # ??? $list[sizeof($list)] .= "\n";
  -                }
  -                for($i=0; $i<$len; $i++ ) {
  -                    array_push($list,"\n");
  -                }
  -            } else {
  -                if( $list ) {
  -                # ??? $list[sizeof($list)] .= $ending;
  -                } else {
  -                    $list = array( $ending );
  -                }
  -            }
  -*/
  +        if ($list[$sz-1]=="\n") {
  +            array_pop($list);
  +            $sz--;
           }
  +
  +        for( $i = 0; $i<$sz; $i++ ) $list[$i] .= "\n";
           # TODO: deal with Mac style line ending??
  -    
           return $list; # FIXME would it be more efficient to return a reference?
       }
       
  -    
  -    # ======================
       # Way of dealing with trailing \ns feels clumsy
       function _diffText($new,$old,$type="")
       {
  @@ -759,7 +666,6 @@
           return $this->_diffN( $lNew, $lOld, $type );
       }
   
  -    # ====================== 
       # no type means diff for putting in rcs file, diff means normal diff output
       function _diffN($new,$old,$type="")
       {
  @@ -776,7 +682,6 @@
           return $diffs;
       }
   
  -    # ======================
       function validTo()
       {
           $this->_ensureProcessed();
  @@ -784,29 +689,5 @@
       }
   }
   
  -function test() {
  -    $rcs_dir='RCS';$rcs_user='hello';
  -    $rcs = new RcsLite($rcs_dir,$rcs_user);
  -
  -    $rcs->_process("m.txt");
  -    #process( "c:/tmp/rcs/RCS/a.txt" );
  -    print "head: $rcs->_head\n";
  -    print_r($rcs->_next);
  -
  -    #for ($i=0;$i<10;$i++) {
  -    #   $dd=$rcs->getRevision('1.'.$i);
  -    #   print($dd);
  -    #}
  -    ## co -p1.7
  -    #$dd=$rcs->getRevision('1.7');
  -    #print($dd);
  -    ## rcsdiff -r1.3 -r1.8
  -    $dd=$rcs->revisionDiff('1.3','1.8','udiff');
  -    print($dd);
  -    ## ci -l
  -    $rcs->addRevisionText("Bang\n\t\tHello World !\n",'hello');
  -    #print $rcs->rlog("1.11");
  -}
  -
   // vim:et:sts=4
   ?>
  
  
  


wkpark      2004/11/03 03:07:13

  Modified:    lib      difflib.php
  Log:
  remove unused class
  
  Revision  Changes    Path
  1.6       +1 -41     moniwiki/lib/difflib.php
  
  Index: difflib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/difflib.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- difflib.php	20 Oct 2004 14:24:31 -0000	1.5
  +++ difflib.php	2 Nov 2004 18:07:13 -0000	1.6
  @@ -8,7 +8,7 @@
   //
   
   // FIXME: possibly remove assert()'s for production version?
  -// $Id: difflib.php,v 1.5 2004/10/20 14:24:31 wkpark Exp $
  +// $Id: difflib.php,v 1.6 2004/11/02 18:07:13 wkpark Exp $
   // original Id: difflib.php,v 1.5 2002/01/21 06:55:47 dairiki Exp
   
   // PHP3 does not have assert()
  @@ -949,46 +949,6 @@
       }
   }
   
  -class MoniWikiDiffFormatter extends DiffFormatter
  -{
  -    function MoniWikiDiffFormatter($context_lines = 3) {
  -        $this->leading_context_lines = $context_lines;
  -        $this->trailing_context_lines = $context_lines;
  -    }
  -    
  -    function _block_header($xbeg, $xlen, $ybeg, $ylen) {
  -          return "<div class='diff-sep'>@@ -$xbeg +$ybeg @@</div>";
  -    }
  -
  -    function _start_block($header) {
  -        echo $header."\n";
  -    }
  -
  -    function _end_block() {
  -    }
  -
  -    function _lines($lines, $prefix = ' ' , $class = "") {
  -        foreach ($lines as $line) {
  -            if ($class) 
  -            echo "<div class=\"$class\">$line</div>\n";
  -            else
  -            echo "$line<br />\n";
  -        }
  -    }
  -    
  -    function _added($lines) {
  -        $this->_lines($lines, "+", "diff-added");
  -    }
  -    function _deleted($lines) {
  -        $this->_lines($lines, "-", "diff-removed");
  -    }
  -    function _changed($orig, $_final) {
  -        $diff = new WordLevelDiff($orig, $_final);
  -        $this->_deleted($diff->orig());
  -        $this->_added($diff->_final());
  -    }
  -}
  -
   /**
    * "Unified" diff formatter.
    *
  
  
  


wkpark      2004/11/04 22:46:14

  Modified:    .        Tag: B_1_0_9 wiki.php
  Log:
  fix minor bugs founded in the v1.0.9
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.188.2.1 +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.188
  retrieving revision 1.188.2.1
  diff -u -r1.188 -r1.188.2.1
  --- wiki.php	20 Oct 2004 13:34:53 -0000	1.188
  +++ wiki.php	4 Nov 2004 13:46:13 -0000	1.188.2.1
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.188 2004/10/20 13:34:53 wkpark Exp $
  +// $Id: wiki.php,v 1.188.2.1 2004/11/04 13:46:13 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.188 $',1,-1);
  +$_revision = substr('$Revision: 1.188.2.1 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -1194,7 +1194,7 @@
       $this->themedir= dirname(__FILE__);
       $this->set_theme($options['theme']);
   
  -    $this->external_on=1;
  +    $this->external_on=0;
       $this->external_target='';
       if ($DBInfo->external_target)
         $this->external_target='target="'.$DBInfo->external_target.'" ';
  @@ -1619,7 +1619,7 @@
   
       if (!$DBInfo->use_twikilink) $islink=0;
       list($page,$page_text,$gpage)=
  -      normalize_word($word,$this->group,$this->page->name,$nogroup,$islink);
  +      normalize_word($page,$this->group,$this->page->name,$nogroup,$islink);
       if ($text) {
         if (preg_match("/^(http|ftp).*\.(png|gif|jpeg|jpg)$/i",$text)) {
           $text=str_replace('&','&amp;',$text);
  
  
  


wkpark      2004/11/04 22:46:14

  Modified:    plugin   Tag: B_1_0_9 BlogChanges.php Navigation.php
  Log:
  fix minor bugs founded in the v1.0.9
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.30.2.1  +2 -2      moniwiki/plugin/BlogChanges.php
  
  Index: BlogChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogChanges.php,v
  retrieving revision 1.30
  retrieving revision 1.30.2.1
  diff -u -r1.30 -r1.30.2.1
  --- BlogChanges.php	21 Sep 2004 15:48:44 -0000	1.30
  +++ BlogChanges.php	4 Nov 2004 13:46:14 -0000	1.30.2.1
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogChanges action plugin for the MoniWiki
   //
  -// $Id: BlogChanges.php,v 1.30 2004/09/21 15:48:44 wkpark Exp $
  +// $Id: BlogChanges.php,v 1.30.2.1 2004/11/04 13:46:14 wkpark Exp $
   
   class Blog_cache {
     function get_all_blogs() {
  @@ -345,7 +345,7 @@
       '<span class=\"blog-user\">';
     if (in_array('summary',$opts))
       $template='$out="$bullet<div class=\"blog-summary\"><div class=\"blog-title\"><a name=\"$tag\"></a>'.
  -      '<a href=\"$url#$tag\">$title</a> <a class=\"puple\" href=\"#$tag\">'.
  +      '<a href=\"$url#$tag\">$title</a> <a class=\"perma\" href=\"#$tag\">'.
         addslashes($formatter->perma_icon).
         '</a></div><span class=\"blog-user\">';
     if (!in_array('nouser',$opts))
  
  
  
  1.5.2.1   +2 -2      moniwiki/plugin/Navigation.php
  
  Index: Navigation.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Navigation.php,v
  retrieving revision 1.5
  retrieving revision 1.5.2.1
  diff -u -r1.5 -r1.5.2.1
  --- Navigation.php	17 Oct 2004 15:40:55 -0000	1.5
  +++ Navigation.php	4 Nov 2004 13:46:14 -0000	1.5.2.1
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Navigation(IndexPage)]]
   //
  -// $Id: Navigation.php,v 1.5 2004/10/17 15:40:55 wkpark Exp $
  +// $Id: Navigation.php,v 1.5.2.1 2004/11/04 13:46:14 wkpark Exp $
   
   function macro_Navigation($formatter,$value) {
     global $DBInfo;
  @@ -53,7 +53,7 @@
     #print_r($indices);
     if ($count > 1) {
       $prev='';
  -    $index_text=$index;
  +    $index_text=$value;
       if ($group) {
         $index=$value;
         $index_text=substr($index,strlen($group));
  
  
  


wkpark      2004/11/04 23:00:05

  Modified:    .        Tag: B_1_0_9 wiki.php
  Log:
  add $auto_search option
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.188.2.2 +13 -11    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.188.2.1
  retrieving revision 1.188.2.2
  diff -u -r1.188.2.1 -r1.188.2.2
  --- wiki.php	4 Nov 2004 13:46:13 -0000	1.188.2.1
  +++ wiki.php	4 Nov 2004 14:00:05 -0000	1.188.2.2
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.188.2.1 2004/11/04 13:46:13 wkpark Exp $
  +// $Id: wiki.php,v 1.188.2.2 2004/11/04 14:00:05 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.188.2.1 $',1,-1);
  +$_revision = substr('$Revision: 1.188.2.2 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -3286,16 +3286,18 @@
         return;
       }
       if (!$page->exists()) {
  -      $npage=str_replace(' ','',$page->name);
  -      if ($DBInfo->hasPage($npage)) {
  -        $options['value']=$npage;
  -        do_goto($formatter,$options);
  -        return;
  -      }
  -      $options['value']=$page->name;
  -      $options['check']=1;
  -      if (do_titlesearch($formatter,$options))
  +      if ($DBInfo->auto_search) {
  +        $npage=str_replace(' ','',$page->name);
  +        if ($DBInfo->hasPage($npage)) {
  +          $options['value']=$npage;
  +          do_goto($formatter,$options);
             return;
  +        }
  +        $options['value']=$page->name;
  +        $options['check']=1;
  +        if (do_titlesearch($formatter,$options))
  +          return;
  +      }
   
         $formatter->send_header("Status: 404 Not found",$options);
   
  
  
  


wkpark      2004/11/07 14:24:30

  Modified:    .        wikilib.php
  Log:
  temporary fix for TableOfConents()
  
  Revision  Changes    Path
  1.127     +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.126
  retrieving revision 1.127
  diff -u -r1.126 -r1.127
  --- wikilib.php	2 Nov 2004 18:05:46 -0000	1.126
  +++ wikilib.php	7 Nov 2004 05:24:30 -0000	1.127
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.126 2004/11/02 18:05:46 wkpark Exp $
  +// $Id: wikilib.php,v 1.127 2004/11/07 05:24:30 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1593,7 +1593,7 @@
    } else {
      $body=$formatter->page->get_raw_body();
    }
  - $body=preg_replace("/(\{\{\{$)(.*)(\}\}\})/ms",'',$body);
  +# $body=preg_replace("/(\{\{\{$)(.*)(\}\}\})/ms",'',$body);
    $lines=explode("\n",$body);
    foreach ($lines as $line) {
      $line=preg_replace("/\n$/", "", $line); # strip \n
  
  
  


wkpark      2004/11/07 14:28:49

  Modified:    .        wiki.php
  Log:
  fixed '--word--' syntax bug
  support $trail, $orig variables in theme/header.php
  
  Revision  Changes    Path
  1.194     +19 -12    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.193
  retrieving revision 1.194
  diff -u -r1.193 -r1.194
  --- wiki.php	2 Nov 2004 17:35:41 -0000	1.193
  +++ wiki.php	7 Nov 2004 05:28:49 -0000	1.194
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.193 2004/11/02 17:35:41 wkpark Exp $
  +// $Id: wiki.php,v 1.194 2004/11/07 05:28:49 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.193 $',1,-1);
  +$_revision = substr('$Revision: 1.194 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -1342,7 +1342,7 @@
                        "/\^([^ \^]+)\^(?=\s|$)/","/\^\^([^\^]+)\^\^(?!^)/",
                        "/(?<!,),,([^ ,]+),,(?!,)/",
                        "/(?<!_)__([^_]+)__(?!_)/","/^(-{4,})/e",
  -                     "/(?<!-)--[^\s]([^-]+)[^\s]--(?!-)/",
  +                     "/(?<!-)--([^\s][^-]+[^\s])--(?!-)/",
                        );
       $this->baserepl=array("&lt;\\1","&#96;\\1'","<tt class='wiki'>\\1</tt>",
                        "<strong>\\1</strong>","<strong>\\1</strong>",
  @@ -2921,7 +2921,11 @@
       # print the title
       kbd_handler();
   
  +    #
       if (file_exists($this->themedir."/header.php")) {
  +      $trail=&$option['trail'];
  +      $origin=&$this->origin;
  +
         $themeurl=$this->themeurl;
         include($this->themedir."/header.php");
       } else { #default header
  @@ -2944,15 +2948,18 @@
         print $msg;
         print "</div>\n";
       }
  -    print $DBInfo->hr;
  -    if ($options['trail'] or $this->origin) {
  -      //$opt['nosisters']=1;
  -      print "<div id='wikiOrigin'>\n";
  -      print $this->origin;
  -      print "</div>\n";
  -      print "<div id='wikiTrailer'>\n";
  -      print $this->trail;
  -      print "</div>\n";
  +    if (empty($themeurl) or !$_NEWTHEME) {
  +      print $DBInfo->hr;
  +      if ($options['trail']) {
  +        print "<div id='wikiTrailer'>\n";
  +        print $this->trail;
  +        print "</div>\n";
  +      }
  +      if ($this->origin) {
  +        print "<div id='wikiOrigin'>\n";
  +        print $this->origin;
  +        print "</div>\n";
  +      }
       }
       print "<div id='wikiBody'>\n";
       $this->pagelinks=$saved_pagelinks;
  
  
  


wkpark      2004/11/08 21:47:52

  Modified:    plugin   UploadFile.php
  Log:
  fixed security hole in the do_uploadfile() reported by weongyo
  
  Revision  Changes    Path
  1.9       +8 -4      moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- UploadFile.php	21 Oct 2004 08:27:01 -0000	1.8
  +++ UploadFile.php	8 Nov 2004 12:47:52 -0000	1.9
  @@ -2,9 +2,8 @@
   // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
  -// vim:et:ts=2:
   //
  -// $Id: UploadFile.php,v 1.8 2004/10/21 08:27:01 wkpark Exp $
  +// $Id: UploadFile.php,v 1.9 2004/11/08 12:47:52 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -69,8 +68,10 @@
        $pds_exts=$DBInfo->pds_allowed;
     else
        $pds_exts="png|jpg|jpeg|gif|mp3|zip|tgz|gz|txt|css|exe|hwp";
  -  if (!preg_match("/(".$pds_exts.")$/i",$fname[2]))
  +  if (!preg_match("/(".$pds_exts.")$/i",$fname[2])) {
        $msg.=sprintf(_("%s does not allowed to upload"),$upfilename)."<br/>\n";
  +     continue;
  +  }
   
     $file_path= $newfile_path = $dir."/".$upfilename;
     $filename=$upfilename;
  @@ -105,8 +106,10 @@
     } else {
       $test=@copy($upfile, $newfile_path);
     }
  -  if (!$test)
  +  if (!$test) {
       $msg.=sprintf(_("Fail to copy \"%s\" to \"%s\""),$upfilename,$file_path);
  +    continue;
  +  }
   
     chmod($newfile_path,0644);
   
  @@ -208,4 +211,5 @@
     return $form.$multiform;
   }
   
  +// vim:et:sts=2:sw=2:
   ?>
  
  
  


wkpark      2004/11/08 21:54:54

  Modified:    plugin   UploadFile.php
  Log:
  add correct entries for multiple uploaded files
  
  Revision  Changes    Path
  1.10      +4 -3      moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- UploadFile.php	8 Nov 2004 12:47:52 -0000	1.9
  +++ UploadFile.php	8 Nov 2004 12:54:54 -0000	1.10
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.9 2004/11/08 12:47:52 wkpark Exp $
  +// $Id: UploadFile.php,v 1.10 2004/11/08 12:54:54 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -52,6 +52,7 @@
     $REMOTE_ADDR=$_SERVER['REMOTE_ADDR'];
     $comment.="File ";
   
  +  $log_entry='';
     for ($j=0;$j<$count;$j++) {
   
     # replace space and ':' strtr()
  @@ -119,11 +120,11 @@
     if ($key == 'UploadFile') {
       $msg.= "<ins>Uploads:$upfilename</ins> or<br />";
       $msg.= "<ins>attachment:/$upfilename</ins><br />";
  -    $log_entry=" * attachment:/$upfilename?action=deletefile . . . @USERNAME@ @DATE@\n";
  +    $log_entry.=" * attachment:/$upfilename?action=deletefile . . . @USERNAME@ @DATE@\n";
     } else {
       $msg.= "<ins>attachment:$upfilename</ins> or<br />";
       $msg.= "<ins>attachment:".$formatter->page->name."/$upfilename</ins><br />";
  -    $log_entry=" * attachment:".$formatter->page->name."/$upfilename?action=deletefile . . . @USERNAME@ @DATE@\n";
  +    $log_entry.=" * attachment:".$formatter->page->name."/$upfilename?action=deletefile . . . @USERNAME@ @DATE@\n";
     }
   
     } // multiple upload
  
  
  


wkpark      2004/11/08 22:45:34

  Modified:    plugin   Tag: B_1_0_9 UploadFile.php
  Log:
  fixed security hole #300575
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.7.2.1   +11 -6     moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.7
  retrieving revision 1.7.2.1
  diff -u -r1.7 -r1.7.2.1
  --- UploadFile.php	2 Sep 2004 10:00:01 -0000	1.7
  +++ UploadFile.php	8 Nov 2004 13:45:34 -0000	1.7.2.1
  @@ -2,9 +2,8 @@
   // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
  -// vim:et:ts=2:
   //
  -// $Id: UploadFile.php,v 1.7 2004/09/02 10:00:01 wkpark Exp $
  +// $Id: UploadFile.php,v 1.7.2.1 2004/11/08 13:45:34 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -53,6 +52,7 @@
     $REMOTE_ADDR=$_SERVER['REMOTE_ADDR'];
     $comment.="File ";
   
  +  $log_entry='';
     for ($j=0;$j<$count;$j++) {
   
     # replace space and ':' strtr()
  @@ -69,8 +69,10 @@
        $pds_exts=$DBInfo->pds_allowed;
     else
        $pds_exts="png|jpg|jpeg|gif|mp3|zip|tgz|gz|txt|css|exe|hwp";
  -  if (!preg_match("/(".$pds_exts.")$/i",$fname[2]))
  +  if (!preg_match("/(".$pds_exts.")$/i",$fname[2])) {
        $msg.=sprintf(_("%s does not allowed to upload"),$upfilename)."<br/>\n";
  +     continue;
  +  }
   
     $file_path= $newfile_path = $dir."/".$upfilename;
     $filename=$upfilename;
  @@ -105,8 +107,10 @@
     } else {
       $test=@copy($upfile, $newfile_path);
     }
  -  if (!$test)
  +  if (!$test) {
       $msg.=sprintf(_("Fail to copy \"%s\" to \"%s\""),$upfilename,$file_path);
  +    continue;
  +  }
   
     chmod($newfile_path,0644);
   
  @@ -116,11 +120,11 @@
     if ($key == 'UploadFile') {
       $msg.= "<ins>Uploads:$upfilename</ins> or<br />";
       $msg.= "<ins>attachment:/$upfilename</ins><br />";
  -    $log_entry=" * attachment:/$upfilename?action=deletefile . . . @USERNAME@ @DATE@\n";
  +    $log_entry.=" * attachment:/$upfilename?action=deletefile . . . @USERNAME@ @DATE@\n";
     } else {
       $msg.= "<ins>attachment:$upfilename</ins> or<br />";
       $msg.= "<ins>attachment:".$formatter->page->name."/$upfilename</ins><br />";
  -    $log_entry=" * attachment:".$formatter->page->name."/$upfilename?action=deletefile . . . @USERNAME@ @DATE@\n";
  +    $log_entry.=" * attachment:".$formatter->page->name."/$upfilename?action=deletefile . . . @USERNAME@ @DATE@\n";
     }
   
     } // multiple upload
  @@ -208,4 +212,5 @@
     return $form.$multiform;
   }
   
  +// vim:et:sts=2:sw=2:
   ?>
  
  
  


wkpark      2004/11/09 15:53:57

  Modified:    .        monisetup.php
  Log:
  encoding $sitename to follow the $charset of the page
  
  Revision  Changes    Path
  1.20      +20 -1     moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- monisetup.php	17 Oct 2004 15:57:42 -0000	1.19
  +++ monisetup.php	9 Nov 2004 06:53:57 -0000	1.20
  @@ -1,7 +1,7 @@
   <?php
   // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.19 2004/10/17 15:57:42 wkpark Exp $
  +// $Id: monisetup.php,v 1.20 2004/11/09 06:53:57 wkpark Exp $
   
   class MoniConfig {
     function MoniConfig($configfile="config.php") {
  @@ -427,6 +427,25 @@
     }
   
     if ($update) {
  +    if ($rawconfig['charset'] && $rawconfig['sitename']) {
  +      if (function_exists('iconv')) {
  +        $ncharset=strtoupper($rawconfig['charset']);
  +
  +        # check and translate to the supported charset names
  +        $charset_map=array('X-WINDOWS-949'=>'UHC');
  +
  +        $dummy=explode(';',$_SERVER['HTTP_ACCEPT_CHARSET'],2);
  +        $charsets=array_map('strtoupper',explode(',',$dummy[0]));
  +        #print_r($charsets);
  +        $charset=$charsets[0];
  +        if ($charset_map[$charset]) $charset=$charset_map[$charset];
  +
  +        # convert sitename to proper encoding
  +        if (isset($ncharset) and $charset != $ncharset)
  +          $out=iconv($charset,$ncharset,$rawconfig['sitename']);
  +        if ($out) $rawconfig['sitename']=$out;
  +      }
  +    }
       print "<h3>Updated Configutations for this $config[sitename]</h3>\n";
       $lines=$Config->_genRawConfig($rawconfig);
       print "<pre class='console'>\n";
  
  
  


wkpark      2004/11/09 15:54:53

  Modified:    .        wiki.php
  Log:
  fix rename() method in the RCS class
  
  Revision  Changes    Path
  1.195     +8 -7      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.194
  retrieving revision 1.195
  diff -u -r1.194 -r1.195
  --- wiki.php	7 Nov 2004 05:28:49 -0000	1.194
  +++ wiki.php	9 Nov 2004 06:54:53 -0000	1.195
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.194 2004/11/07 05:28:49 wkpark Exp $
  +// $Id: wiki.php,v 1.195 2004/11/09 06:54:53 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.194 $',1,-1);
  +$_revision = substr('$Revision: 1.195 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -1008,14 +1008,15 @@
     }
   
     function delete($pagename) {
  -    $keyname=$DB->_getPageKey($pagename);
  -    @unlink($DB->text_dir."/RCS/$keyname,v");
  +    $keyname=$this->DB->_getPageKey($pagename);
  +    @unlink($this->DB->text_dir."/RCS/$keyname,v");
     }
   
     function rename($pagename,$new) {
  -    $keyname=$DB->_getPageKey($new);
  -    $oname=$DB->_getPageKey($pagename);
  -    rename($DB->text_dir."/RCS/$oname,v",$DB->text_dir."/RCS/$keyname,v");
  +    $keyname=$this->DB->_getPageKey($new);
  +    $oname=$this->DB->_getPageKey($pagename);
  +    rename($this->DB->text_dir."/RCS/$oname,v",
  +      $this->DB->text_dir."/RCS/$keyname,v");
     }
   
     function get_rev($pagename,$mtime='',$last=0) {
  
  
  


wkpark      2004/11/09 21:02:21

  Modified:    plugin/processor latex.php
  Log:
  add chdir()
  
  Revision  Changes    Path
  1.6       +2 -1      moniwiki/plugin/processor/latex.php
  
  Index: latex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/latex.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- latex.php	3 Sep 2004 12:14:17 -0000	1.5
  +++ latex.php	9 Nov 2004 12:02:21 -0000	1.6
  @@ -6,7 +6,7 @@
   // Usage: {{{#!latex
   // $ \alpha $
   // }}}
  -// $Id: latex.php,v 1.5 2004/09/03 12:14:17 wkpark Exp $
  +// $Id: latex.php,v 1.6 2004/11/09 12:02:21 wkpark Exp $
   
   function processor_latex($formatter="",$value="") {
     global $DBInfo;
  @@ -70,6 +70,7 @@
   
        if (!file_exists($uniq.".dvi")) {
          print "<font color='red'>ERROR:</font> LaTeX does not works properly.";
  +       chdir($cwd);
          return;
        }
        $cmd= "$dvips -D 600 $uniq.dvi -o $uniq.ps";
  
  
  


wkpark      2004/11/10 19:41:11

  Modified:    plugin   format.php
  Log:
  call get_instruction() properly
  
  Revision  Changes    Path
  1.4       +4 -4      moniwiki/plugin/format.php
  
  Index: format.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/format.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- format.php	16 Aug 2004 16:23:55 -0000	1.3
  +++ format.php	10 Nov 2004 10:41:11 -0000	1.4
  @@ -1,17 +1,16 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a format plugin to connect with processors for the MoniWiki
  -// vim:et:ts=2:
   //
  -// $Id: format.php,v 1.3 2004/08/16 16:23:55 wkpark Exp $
  +// $Id: format.php,v 1.4 2004/11/10 10:41:11 wkpark Exp $
   
   function do_format($formatter,$options) {
     $mimes=array('text/plain'=>'html','text/xml'=>'text_xml');
     $mimetype=$options['mimetype'];
     if (!$mimetype) $mimetype='text/plain';
   
  -  $pi=$formatter->get_instructions();
  +  $pi=$formatter->get_instructions($dummy);
     if ($pi['#format']=='xsltproc') {
       $options['title']= _("It is a XML format !");
       do_invalid($formatter,$options);
  @@ -38,5 +37,6 @@
   
     return;
   }
  +// vim:et:sts=2:sw=2:
   
   ?>
  
  
  


wkpark      2004/11/13 20:32:13

  Modified:    plugin   ImportUrl.php
  Log:
  more fixes to import rendered wiki pages
  
  Revision  Changes    Path
  1.3       +30 -12    moniwiki/plugin/ImportUrl.php
  
  Index: ImportUrl.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/ImportUrl.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ImportUrl.php	14 Aug 2004 14:18:55 -0000	1.2
  +++ ImportUrl.php	13 Nov 2004 11:32:13 -0000	1.3
  @@ -5,7 +5,7 @@
   //
   // Usage: ?action=importurl&url=http://foo.bar.com/
   //
  -// $Id: ImportUrl.php,v 1.2 2004/08/14 14:18:55 wkpark Exp $
  +// $Id: ImportUrl.php,v 1.3 2004/11/13 11:32:13 wkpark Exp $
   
   function do_ImportUrl($formatter,$options) {
     $value=$options['url'];
  @@ -22,20 +22,28 @@
   #  fix_url('http://hello.com/',$dummy);
   #  fix_url('http://hello.com',$dummy);
   
  -  $out= strip_tags($html_data, '<a><b><i><u><h1><h2><h3><h4><h5><li><img>');
  -  $out= preg_replace("/<img\s*[^>]*src=['\"]((http|ftp)[^'\"]+)['\"][^>]*>/",
  +  $out= strip_tags($html_data,'<pre><a><b><i><u><h1><h2><h3><h4><h5><li><img>');
  +  $out= preg_replace("/<img\s*[^>]*src=['\"]((http|ftp)[^'\"]+)['\"][^>]*>/i",
       "\\1",$out);
  -  $out = preg_replace("/<img\s*[^>]*src=['\"]([^'\"]+)['\"][^>]*>/e",
  +  $out = preg_replace("/<img\s*[^>]*src=['\"]([^'\"]+)['\"][^>]*>/ie",
       "fix_url('$value','\\1')",$out);
     $out= preg_replace("/<b>([^<]+)<\/b>/i","'''\\1'''",$out);
     $out= preg_replace("/<i>([^<]+)<\/i>/i","''\\1''",$out);
     $out= preg_replace("/<u>([^<]+)<\/u>/i","__\\1__",$out);
     $out= preg_replace("/<li>/i"," * \\1",$out);
     $out= preg_replace("/<\/li>/i","",$out);
  -  $out= preg_replace("/<h(\d)>([^<]+)<\/h\d>/ie",
  -    "str_repeat('=', \\1).' \\2 '.str_repeat('=', \\1)",$out);
  +  $out= preg_replace("/&quot;/",'"',$out);
  +  $out= preg_replace("/<pre\s*[^>]*>/i","{{{\n",$out);
  +  $out= preg_replace("/<\/pre>/i","}}}\n",$out);
  +
  +  $out= preg_replace("/<a\s*id=[^>]+>[^<]*<\/a>/i","",$out);
  +  $out= preg_replace("/<a\s*[^>]*href=['\"]#[^>]+>[^<]*<\/a>/i","",$out);
  +  $out= preg_replace("/<a\s*[^>]*href=['\"][^>]+>\?<\/a>/i","",$out);
  +
     $out= preg_replace("/<a\s*[^>]*href=['\"]([^'\"]+)['\"][^>]*>([^<]+)<\/a>/ie",
  -    "'['.fix_url('$value','\\1').' \\2]'",$out);
  +    "'['.fix_url('$value','\\1').'\\2]'",$out);
  +  $out= preg_replace("/<h(\d)[^>]*>(?:\d+\.?\d*)*([^<]+)<\/h\d>/ie",
  +    "str_repeat('=', \\1).' \\2 '.str_repeat('=', \\1)",$out);
     $out= preg_replace("/\r/","",$out);
     $out= preg_replace("/\n\s+/","\n",$out);
     $formatter->send_header("content-type: text/plain",$options);
  @@ -75,26 +83,36 @@
     if (!$base_url) $path=array(); // reset
     else if (!count($path)) $path=prep_url($base_url);
   
  +  if (substr($url,0,7)=='mailto:') return $url;
  +
  +  $p=strpos($url,'://');
  +  if ($p !== false) {
  +    $type=substr($url,0,$p);
  +    if ($type == 'http' or $type == 'ftp') return $url.' ';
  +  }
  +
     if ($url[0] == '/') {
  -    return $path[0].$url;
  +    if (substr($url,1,5)=='imgs/') return '';
  +    else if (substr($url,1,8)=='wiki.php') return '';
  +    return $path[0].$url.' ';
     } else if (preg_match('@^(\./)+@',$url)) {
       // base_url: http://foo.bar.com/hello/world/
       // img url: ./imgs/hello.gif
       $url = preg_replace('@^(\./)+@','',$url);
  -    return end($path).'/'.$url;
  +    return end($path).'/'.$url.' ';
     } else if (preg_match('@^(\.\./)+@',$url,$match)) {
       // base_url: http://foo.bar.com/hello/world/
       // img url: ../../imgs/hello.gif
       $url = preg_replace('@^(\.\./)+@','',$url);
       $sz=sizeof(explode('/',$match[1]));
  -    if ($sz > sizeof($path)) return $path[0].'/'.$url;
  +    if ($sz > sizeof($path)) return $path[0].'/'.$url.' ';
       else {
         end($path);
         for ($j=1; $j<$sz;$j++) prev($path);
  -      return current($path).'/'.$url;
  +      return current($path).'/'.$url.' ';
       }
     }
  -  return end($path).'/'.$url;
  +  return end($path).'/'.$url.' ';
   }
   
   // vim:et:sts=2:
  
  
  


wkpark      2004/11/15 17:04:13

  Modified:    .        Tag: B_1_0_9 wiki.php
  Log:
  fixed --deleted-- syntax
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.188.2.3 +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.188.2.2
  retrieving revision 1.188.2.3
  diff -u -r1.188.2.2 -r1.188.2.3
  --- wiki.php	4 Nov 2004 14:00:05 -0000	1.188.2.2
  +++ wiki.php	15 Nov 2004 08:04:12 -0000	1.188.2.3
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.188.2.2 2004/11/04 14:00:05 wkpark Exp $
  +// $Id: wiki.php,v 1.188.2.3 2004/11/15 08:04:12 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.188.2.2 $',1,-1);
  +$_revision = substr('$Revision: 1.188.2.3 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -1206,7 +1206,7 @@
                        "/\^([^ \^]+)\^(?=\s|$)/","/\^\^([^\^]+)\^\^(?!^)/",
                        "/(?<!,),,([^ ,]+),,(?!,)/",
                        "/(?<!_)__([^_]+)__(?!_)/","/^(-{4,})/e",
  -                     "/(?<!-)--[^\s]([^-]+)[^\s]--(?!-)/",
  +                     "/(?<!-)--([^\s][^-]+[^\s])--(?!-)/",
                        );
       $this->baserepl=array("&lt;\\1","&#96;\\1'","<tt class='wiki'>\\1</tt>",
                        "<strong>\\1</strong>","<strong>\\1</strong>",
  
  
  


wkpark      2004/11/15 17:13:26

  Modified:    plugin/processor Tag: B_1_0_9 latex.php
  Log:
  fix cwd problem
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.5.2.1   +2 -1      moniwiki/plugin/processor/latex.php
  
  Index: latex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/latex.php,v
  retrieving revision 1.5
  retrieving revision 1.5.2.1
  diff -u -r1.5 -r1.5.2.1
  --- latex.php	3 Sep 2004 12:14:17 -0000	1.5
  +++ latex.php	15 Nov 2004 08:13:26 -0000	1.5.2.1
  @@ -6,7 +6,7 @@
   // Usage: {{{#!latex
   // $ \alpha $
   // }}}
  -// $Id: latex.php,v 1.5 2004/09/03 12:14:17 wkpark Exp $
  +// $Id: latex.php,v 1.5.2.1 2004/11/15 08:13:26 wkpark Exp $
   
   function processor_latex($formatter="",$value="") {
     global $DBInfo;
  @@ -70,6 +70,7 @@
   
        if (!file_exists($uniq.".dvi")) {
          print "<font color='red'>ERROR:</font> LaTeX does not works properly.";
  +       chdir($cwd);
          return;
        }
        $cmd= "$dvips -D 600 $uniq.dvi -o $uniq.ps";
  
  
  


wkpark      2004/11/15 17:26:14

  Modified:    plugin   Tag: B_1_0_9 rename.php
  Log:
  fixed rename bug
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.6.2.1   +2 -2      moniwiki/plugin/rename.php
  
  Index: rename.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rename.php,v
  retrieving revision 1.6
  retrieving revision 1.6.2.1
  diff -u -r1.6 -r1.6.2.1
  --- rename.php	4 Sep 2004 02:50:37 -0000	1.6
  +++ rename.php	15 Nov 2004 08:26:14 -0000	1.6.2.1
  @@ -3,12 +3,13 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a rename action plugin for the MoniWiki
   //
  -// $Id: rename.php,v 1.6 2004/09/04 02:50:37 wkpark Exp $
  +// $Id: rename.php,v 1.6.2.1 2004/11/15 08:26:14 wkpark Exp $
   
   function do_post_rename($formatter,$options) {
     global $DBInfo;
     
     if (isset($options['name']) and trim($options['name'])) {
  +    $new_encodedname=_rawurlencode($options['name']);
       if ($DBInfo->hasPage($options['page']) && !$DBInfo->hasPage($options['name'])) {
         $title = sprintf(_("\"%s\" is renamed !"), $options['page']);
         $formatter->send_header("",$options);
  @@ -16,7 +17,6 @@
         if ($options['pagenames'] and is_array($options['pagenames'])) {
           $regex=preg_quote($options['page']);
           $options['minor']=1;
  -        $new_encodedname=_rawurlencode($options['name']);
           foreach ($options['pagenames'] as $page) {
             $p = new WikiPage($page);
             if (!$p->exists()) continue;
  
  
  


wkpark      2004/11/16 22:03:39

  Modified:    .        Tag: B_1_0_9 wikilib.php
  Log:
  fixed TableOfContents() macro
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.122.2.1 +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.122
  retrieving revision 1.122.2.1
  diff -u -r1.122 -r1.122.2.1
  --- wikilib.php	15 Oct 2004 15:35:01 -0000	1.122
  +++ wikilib.php	16 Nov 2004 13:03:39 -0000	1.122.2.1
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.122 2004/10/15 15:35:01 wkpark Exp $
  +// $Id: wikilib.php,v 1.122.2.1 2004/11/16 13:03:39 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1642,7 +1642,7 @@
    } else {
      $body=$formatter->page->get_raw_body();
    }
  - $body=preg_replace("/(\{\{\{$)(.*)(\}\}\})/ms",'',$body);
  + #$body=preg_replace("/(\{\{\{$)(.*)(\}\}\})/ms",'',$body);
    $lines=explode("\n",$body);
    foreach ($lines as $line) {
      $line=preg_replace("/\n$/", "", $line); # strip \n
  
  
  


wkpark      2004/11/16 22:31:50

  Modified:    .        wiki.php
  Log:
  fixed #300588: rename 'final' as '_final'
  fixed rename action bug
  fixed filesize() bug for the PHP 4.3.x
  
  Revision  Changes    Path
  1.196     +14 -8     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.195
  retrieving revision 1.196
  diff -u -r1.195 -r1.196
  --- wiki.php	9 Nov 2004 06:54:53 -0000	1.195
  +++ wiki.php	16 Nov 2004 13:31:49 -0000	1.196
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.195 2004/11/09 06:54:53 wkpark Exp $
  +// $Id: wiki.php,v 1.196 2004/11/16 13:31:49 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.195 $',1,-1);
  +$_revision = substr('$Revision: 1.196 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -822,7 +822,6 @@
       }
       $REMOTE_ADDR=$_SERVER['REMOTE_ADDR'];
       $comment=escapeshellcmd($comment);
  -    $pagename=escapeshellcmd($page->name);
   
       $keyname=$this->_getPageKey($page->name);
       $key=$this->text_dir."/$keyname";
  @@ -842,7 +841,7 @@
         getModule('Version',$this->version_class);
         $class='Version_'.$this->version_class;
         $version=new $class ($this);
  -      $ret=$version->ci($pagename,$log);
  +      $ret=$version->ci($page->name,$log);
       }
       # check minor edits XXX
       $minor=0;
  @@ -898,6 +897,7 @@
   
       $okey=$this->getPageKey($pagename);
       $nkey=$this->getPageKey($new);
  +    $keyname=$this->_getPageKey($new);
   
       rename($okey,$nkey);
       if ($options['history'] && $this->version_class) {
  @@ -961,6 +961,7 @@
   
     function ci($pagename,$log) {
       $key=$this->_filename($pagename);
  +    $pagename=escapeshellcmd($pagename);
       $ret=system("ci -l -x,v/ -q -t-\"".$pagename."\" -m\"".$log."\" ".$key);
     }
   
  @@ -1106,7 +1107,9 @@
   
     function _fetch($key) {
       $fp=fopen($key,"r");
  -    $content=fread($fp,filesize($key));
  +    $content='';
  +    if (($size=filesize($key)) >0)
  +      $content=fread($fp,$size);
       fclose($fp);
       return $content;
     }
  @@ -1211,7 +1214,8 @@
         return $out;
       }
       $this->fsize=filesize($this->filename);
  -    $body=fread($fp,$this->fsize);
  +    if ($this->fsize > 0)
  +      $body=fread($fp,$this->fsize);
       fclose($fp);
       $this->body=$body;
   
  @@ -1222,7 +1226,8 @@
       $fp=@fopen($this->filename,"r");
       if ($fp) {
         $size=filesize($this->filename);
  -      $this->body=fread($fp,$size);
  +      if ($size >0)
  +        $this->body=fread($fp,$size);
         fclose($fp);
       } else
         return '';
  @@ -2495,7 +2500,7 @@
           $result = new WordLevelDiff($orig, $new, $DBInfo->charset);
           foreach ($result->orig() as $ll)
             $buf.= "<div class=\"diff-removed\">$ll</div>\n";
  -        foreach ($result->final() as $ll)
  +        foreach ($result->_final() as $ll)
             $buf.= "<div class=\"diff-added\">$ll</div>\n";
           $orig=array();$new=array();
           $line=$buf.$line."<br />";
  @@ -2571,6 +2576,7 @@
         do_goto($this,$options);
         return;
       }
  +    #$this->header("Expires: Tue, 01 Jan 2002 00:00:00 GMT");
       if ($header) {
         if (is_array($header))
           foreach ($header as $head) {
  
  
  


wkpark      2004/11/16 22:31:50

  Modified:    lib      difflib.php
  Log:
  fixed #300588: rename 'final' as '_final'
  fixed rename action bug
  fixed filesize() bug for the PHP 4.3.x
  
  Revision  Changes    Path
  1.7       +7 -7      moniwiki/lib/difflib.php
  
  Index: difflib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/difflib.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- difflib.php	2 Nov 2004 18:07:13 -0000	1.6
  +++ difflib.php	16 Nov 2004 13:31:50 -0000	1.7
  @@ -8,7 +8,7 @@
   //
   
   // FIXME: possibly remove assert()'s for production version?
  -// $Id: difflib.php,v 1.6 2004/11/02 18:07:13 wkpark Exp $
  +// $Id: difflib.php,v 1.7 2004/11/16 13:31:50 wkpark Exp $
   // original Id: difflib.php,v 1.5 2002/01/21 06:55:47 dairiki Exp
   
   // PHP3 does not have assert()
  @@ -584,7 +584,7 @@
        *
        * @return array The sequence of strings.
        */
  -    function final() {
  +    function _final() {
           $lines = array();
           
           foreach ($this->edits as $edit) {
  @@ -936,7 +936,7 @@
           return $orig->getLines();
       }
   
  -    function final () {
  +    function _final () {
           $_final = new _HWLDF_WordAccumulator;
           
           foreach ($this->edits as $edit) {
  @@ -975,9 +975,9 @@
       function _deleted($lines) {
           $this->_lines($lines, "-");
       }
  -    function _changed($orig, $final) {
  +    function _changed($orig, $_final) {
           $this->_deleted($orig);
  -        $this->_added($final);
  +        $this->_added($_final);
       }
   }
   
  @@ -1001,9 +1001,9 @@
       function _deleted($lines) {
           #$this->_lines($lines, "");
       }
  -    function _changed($orig, $final) {
  +    function _changed($orig, $_final) {
           #$this->_deleted($orig);
  -        $this->_added($final);
  +        $this->_added($_final);
       }
   }
   
  
  
  


wkpark      2004/11/16 22:32:44

  Modified:    plugin   rename.php
  Log:
  fixed rename bug
  
  Revision  Changes    Path
  1.8       +2 -2      moniwiki/plugin/rename.php
  
  Index: rename.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rename.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- rename.php	21 Oct 2004 08:27:01 -0000	1.7
  +++ rename.php	16 Nov 2004 13:32:44 -0000	1.8
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a rename action plugin for the MoniWiki
   //
  -// $Id: rename.php,v 1.7 2004/10/21 08:27:01 wkpark Exp $
  +// $Id: rename.php,v 1.8 2004/11/16 13:32:44 wkpark Exp $
   
   function do_post_rename($formatter,$options) {
     global $DBInfo;
  @@ -13,10 +13,10 @@
         $title = sprintf(_("\"%s\" is renamed !"), $options['page']);
         $formatter->send_header("",$options);
         $formatter->send_title($title,"",$options);
  +      $new_encodedname=_rawurlencode($options['name']);
         if ($options['pagenames'] and is_array($options['pagenames'])) {
           $regex=preg_quote($options['page']);
           $options['minor']=1;
  -        $new_encodedname=_rawurlencode($options['name']);
           foreach ($options['pagenames'] as $page) {
             $p = new WikiPage($page);
             if (!$p->exists()) continue;
  
  
  


wkpark      2004/11/16 22:33:30

  Modified:    plugin   RecentChanges.php
  Log:
  fixed typo: cellspading -> cellspacing
  
  Revision  Changes    Path
  1.11      +2 -2      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- RecentChanges.php	21 Oct 2004 08:27:01 -0000	1.10
  +++ RecentChanges.php	16 Nov 2004 13:33:30 -0000	1.11
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.10 2004/10/21 08:27:01 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.11 2004/11/16 13:33:30 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     $options['trail']='';
  @@ -57,7 +57,7 @@
     '$out.= "<li>$title $date</li>\n";';
       }
       if (in_array ("table", $args)) {
  -      $bra="<table border='0' cellpadding='0' cellspading='0' width='100%'>";
  +      $bra="<table border='0' cellpadding='0' cellspacing='0' width='100%'>";
         $template=
     '$out.= "<tr><td nowrap=\'nowrap\' width=\'2%\'>$icon</td><td width=\'40%\'>$title</td><td width=\'15%\'>$date</td><td>$user $count $extra</td></tr>\n";';
         $cat="</table>";
  
  
  


wkpark      2004/11/16 22:36:54

  Modified:    .        Tag: B_1_0_9 wiki.php
  Log:
  rename final as '_final' for PHP 5.0.x
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.188.2.4 +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.188.2.3
  retrieving revision 1.188.2.4
  diff -u -r1.188.2.3 -r1.188.2.4
  --- wiki.php	15 Nov 2004 08:04:12 -0000	1.188.2.3
  +++ wiki.php	16 Nov 2004 13:36:54 -0000	1.188.2.4
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.188.2.3 2004/11/15 08:04:12 wkpark Exp $
  +// $Id: wiki.php,v 1.188.2.4 2004/11/16 13:36:54 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.188.2.3 $',1,-1);
  +$_revision = substr('$Revision: 1.188.2.4 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -2474,7 +2474,7 @@
           $result = new WordLevelDiff($orig, $new, $DBInfo->charset);
           foreach ($result->orig() as $ll)
             $buf.= "<div class=\"diff-removed\">$ll</div>\n";
  -        foreach ($result->final() as $ll)
  +        foreach ($result->_final() as $ll)
             $buf.= "<div class=\"diff-added\">$ll</div>\n";
           $orig=array();$new=array();
           $line=$buf.$line."<br />";
  
  
  


wkpark      2004/11/16 22:36:54

  Modified:    lib      Tag: B_1_0_9 difflib.php
  Log:
  rename final as '_final' for PHP 5.0.x
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.5.2.1   +7 -7      moniwiki/lib/difflib.php
  
  Index: difflib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/difflib.php,v
  retrieving revision 1.5
  retrieving revision 1.5.2.1
  diff -u -r1.5 -r1.5.2.1
  --- difflib.php	20 Oct 2004 14:24:31 -0000	1.5
  +++ difflib.php	16 Nov 2004 13:36:54 -0000	1.5.2.1
  @@ -8,7 +8,7 @@
   //
   
   // FIXME: possibly remove assert()'s for production version?
  -// $Id: difflib.php,v 1.5 2004/10/20 14:24:31 wkpark Exp $
  +// $Id: difflib.php,v 1.5.2.1 2004/11/16 13:36:54 wkpark Exp $
   // original Id: difflib.php,v 1.5 2002/01/21 06:55:47 dairiki Exp
   
   // PHP3 does not have assert()
  @@ -584,7 +584,7 @@
        *
        * @return array The sequence of strings.
        */
  -    function final() {
  +    function _final() {
           $lines = array();
           
           foreach ($this->edits as $edit) {
  @@ -936,7 +936,7 @@
           return $orig->getLines();
       }
   
  -    function final () {
  +    function _final () {
           $_final = new _HWLDF_WordAccumulator;
           
           foreach ($this->edits as $edit) {
  @@ -1015,9 +1015,9 @@
       function _deleted($lines) {
           $this->_lines($lines, "-");
       }
  -    function _changed($orig, $final) {
  +    function _changed($orig, $_final) {
           $this->_deleted($orig);
  -        $this->_added($final);
  +        $this->_added($_final);
       }
   }
   
  @@ -1041,9 +1041,9 @@
       function _deleted($lines) {
           #$this->_lines($lines, "");
       }
  -    function _changed($orig, $final) {
  +    function _changed($orig, $_final) {
           #$this->_deleted($orig);
  -        $this->_added($final);
  +        $this->_added($_final);
       }
   }
   
  
  
  


wkpark      2004/11/16 22:38:07

  Modified:    plugin   Tag: B_1_0_9 RecentChanges.php
  Log:
  fixed typo: cellspading -> cellspacing
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.9.2.1   +2 -2      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.9
  retrieving revision 1.9.2.1
  diff -u -r1.9 -r1.9.2.1
  --- RecentChanges.php	2 Oct 2004 02:42:53 -0000	1.9
  +++ RecentChanges.php	16 Nov 2004 13:38:07 -0000	1.9.2.1
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.9 2004/10/02 02:42:53 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.9.2.1 2004/11/16 13:38:07 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     $options['trail']='';
  @@ -57,7 +57,7 @@
     '$out.= "<li>$title $date</li>\n";';
       }
       if (in_array ("table", $args)) {
  -      $bra="<table border='0' cellpadding='0' cellspading='0' width='100%'>";
  +      $bra="<table border='0' cellpadding='0' cellspacing='0' width='100%'>";
         $template=
     '$out.= "<tr><td nowrap=\'nowrap\' width=\'2%\'>$icon</td><td width=\'40%\'>$title</td><td width=\'15%\'>$date</td><td>$user $count $extra</td></tr>\n";';
         $cat="</table>";
  
  
  


wkpark      2004/11/22 23:13:11

  Modified:    .        Tag: B_1_0_9 wikilib.php
  Log:
  fix 'imgs_dir_interwiki'
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.122.2.2 +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.122.2.1
  retrieving revision 1.122.2.2
  diff -u -r1.122.2.1 -r1.122.2.2
  --- wikilib.php	16 Nov 2004 13:03:39 -0000	1.122.2.1
  +++ wikilib.php	22 Nov 2004 14:13:11 -0000	1.122.2.2
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.122.2.1 2004/11/16 13:03:39 wkpark Exp $
  +// $Id: wikilib.php,v 1.122.2.2 2004/11/22 14:13:11 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1330,7 +1330,7 @@
         #$href=$url;
       }
       $icon=strtolower($wiki)."-16.png";
  -    $out.="<tr><td><tt><img src='$DBInfo->imgs_dir/$icon' align='middle' alt='$wiki:'><a href='$url'>$wiki</a></tt></td><td><tt>";
  +    $out.="<tr><td><tt><img src='$DBInfo->imgs_dir_interwiki/$icon' align='middle' alt='$wiki:'><a href='$url'>$wiki</a></tt></td><td><tt>";
       $out.="<a href='$href'>$href</a></tt></td></tr>\n";
     }
     $out.="</table>\n";
  
  
  


wkpark      2004/11/22 23:17:29

  Modified:    plugin   Draw.php
  Log:
  support image map etc.
  
  Revision  Changes    Path
  1.4       +66 -13    moniwiki/plugin/Draw.php
  
  Index: Draw.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Draw.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Draw.php	21 Aug 2004 17:41:05 -0000	1.3
  +++ Draw.php	22 Nov 2004 14:17:29 -0000	1.4
  @@ -5,32 +5,52 @@
   //
   // Usage: [[Draw(hello)]]
   //
  -// $Id: Draw.php,v 1.3 2004/08/21 17:41:05 wkpark Exp $
  +// $Id: Draw.php,v 1.4 2004/11/22 14:17:29 wkpark Exp $
   
   function macro_Draw($formatter,$value) {
     global $DBInfo;
  -  $hotdraw_dir=str_replace("./",'',$DBInfo->upload_dir.'/Draw');
  +  $keyname=$DBInfo->_getPageKey($formatter->page->name);
  +  $_dir=str_replace("./",'',$DBInfo->upload_dir.'/'.$keyname);
     $name=_rawurlencode($value);
   
  +  $enable_edit=1;
  +
     umask(000);
  -  if (!file_exists($hotdraw_dir))
  -    mkdir($hotdraw_dir, 0777);
  +  if (!file_exists($_dir))
  +    mkdir($_dir, 0777);
   
     $gifname='Draw_'.$name.".gif";
  +  $mapname='Draw_'.$name.".map";
     $now=time();
   
     $url=$formatter->link_url($formatter->page->name,"?action=draw&amp;value=$name&amp;now=$now");
   
  -  if (!file_exists($hotdraw_dir."/$gifname"))
  +  if (!file_exists($_dir."/$gifname"))
       return "<a href='$url'>"._("Draw new picture")."</a>";
  +  $editable='';
  +  if ($enable_edit)
  +    $editable="<a href='$url'>Edit</a>";
  +
  +  $maptag='';
  +  $map='';
  +  if (file_exists($_dir."/$mapname")) {
  +    $maptag=" usemap='#$name'";
  +    $map=file($_dir."/$mapname");
  +    $map=implode("",$map);
  +    $map=preg_replace('/HREF="%TWIKIDRAW%"/','nohref',$map);
  +    $map=preg_replace("/%MAPNAME%/",$name,$map);
  +  }
   
  -  return "<a href='$url'><img src='$DBInfo->url_prefix/$hotdraw_dir/$gifname' alt='hotdraw'></a>\n";
  +  return "$map<img src='$DBInfo->url_prefix/$_dir/$gifname' border='0' alt='hotdraw' $maptag /></a>\n".$editable;
   }
   
   function do_post_Draw($formatter,$options) {
     global $DBInfo;
   
  -  $hotdraw_dir=str_replace("./",'',$DBInfo->upload_dir.'/Draw');
  +  $enable_replace=1;
  +
  +  $keyname=$DBInfo->_getPageKey($options['page']);
  +  $_dir=str_replace("./",'',$DBInfo->upload_dir.'/'.$keyname);
     $pagename=$options['page'];
   
     $name=$options['value'];
  @@ -38,16 +58,49 @@
     if ($_FILES['filepath']) {
       $upfile=$_FILES['filepath']['tmp_name'];
       $temp=explode("/",$_FILES['filepath']['name']);
  -    $file_path=$hotdraw_dir."/".$temp[count($temp)-1];
  -
  -    $test=@copy($upfile, $file_path);
  +    $upfilename= $temp[count($temp)-1];
  +    preg_match("/(.*)\.([a-z0-9]{1,4})$/i",$upfilename,$fname);
  +    # do not change the extention of the file.
  +    $file_path= $newfile_path = $_dir."/".$upfilename;
  +
  +    # is file already exists ?
  +    $dummy=0;
  +    while (file_exists($newfile_path)) {
  +      $dummy=$dummy+1;
  +      $ufname=$fname[1]."_".$dummy; // rename file
  +      $upfilename=$ufname.".$fname[2]";
  +      $newfile_path= $_dir."/".$upfilename;
  +    }
  +    if ($enable_replace) {
  +      if ($file_path != $newfile_path)
  +        $test=@copy($file_path, $newfile_path);
  +      $test=@copy($upfile, $file_path);
  +    } else
  +      $test=@copy($upfile, $newfile_path);
       if (!$test) {
         $title=sprintf(_("Fail to copy \"%s\" to \"%s\""),$upfilename,$file_path);
         $formatter->send_header("Status: 406 Not Acceptable",$options);
         $formatter->send_title($title,"",$options);
         return;
       }
  -    chmod($file_path,0644);
  +    if ($fname[2] == 'map') {
  +      # fix map file.
  +      $map=file($newfile_path);
  +      $map=implode('',$map);
  +      # remove useless areas
  +      $map=preg_replace('/HREF="%TWIKIDRAW%"/','nohref',$map);
  +      $fp=fopen($newfile_path,'w');
  +      if ($fp) {
  +        fwrite($fp,$map);
  +        fclose($fp);
  +      }
  +    }
  +    chmod($newfile_path,0644);
  +    if ($fname[2] == 'draw') {
  +      $comment=sprintf("Drawing '%s' uploaded",$upfilename);
  +      $REMOTE_ADDR=$_SERVER['REMOTE_ADDR'];
  +      $DBInfo->addLogEntry($keyname, $REMOTE_ADDR,$comment,"ATTDRW");
  +    }
       return;
     }
   
  @@ -63,13 +116,13 @@
   
     $gifname='Draw_'._rawurlencode($name);
   
  -  $imgpath="$hotdraw_dir/$gifname";
  +  $imgpath="$_dir/$gifname";
   
     $dummy=0;
     while (file_exists($imgpath)) {
        $dummy=$dummy+1;
        $ufname=$gifname."_".$dummy; // rename file
  -     $imgpath= "$hotdraw_dir/$ufname";
  +     $imgpath= "$_dir/$ufname";
     }
   
     $draw_url="$DBInfo->url_prefix/$imgpath.draw";
  
  
  


wkpark      2004/11/22 23:17:45

  Modified:    plugin   UploadFile.php
  Log:
  minor fix
  
  Revision  Changes    Path
  1.11      +3 -2      moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- UploadFile.php	8 Nov 2004 12:54:54 -0000	1.10
  +++ UploadFile.php	22 Nov 2004 14:17:45 -0000	1.11
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.10 2004/11/08 12:54:54 wkpark Exp $
  +// $Id: UploadFile.php,v 1.11 2004/11/22 14:17:45 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -100,7 +100,8 @@
   
     if ($options['replace'][$j]) {
       // backup
  -    if ($newfile_path) $test=@copy($file_path, $newfile_path);
  +    if ($newfile_path != $file_path)
  +      $test=@copy($file_path, $newfile_path);
       // replace
       $test=@copy($upfile, $file_path);
       $upfilename=$filename;
  
  
  


wkpark      2004/11/22 23:22:01

  Modified:    plugin   ImportUrl.php
  Log:
  quick hack for 'pre-block'
  
  Revision  Changes    Path
  1.4       +18 -9     moniwiki/plugin/ImportUrl.php
  
  Index: ImportUrl.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/ImportUrl.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ImportUrl.php	13 Nov 2004 11:32:13 -0000	1.3
  +++ ImportUrl.php	22 Nov 2004 14:22:00 -0000	1.4
  @@ -5,7 +5,7 @@
   //
   // Usage: ?action=importurl&url=http://foo.bar.com/
   //
  -// $Id: ImportUrl.php,v 1.3 2004/11/13 11:32:13 wkpark Exp $
  +// $Id: ImportUrl.php,v 1.4 2004/11/22 14:22:00 wkpark Exp $
   
   function do_ImportUrl($formatter,$options) {
     $value=$options['url'];
  @@ -23,6 +23,8 @@
   #  fix_url('http://hello.com',$dummy);
   
     $out= strip_tags($html_data,'<pre><a><b><i><u><h1><h2><h3><h4><h5><li><img>');
  +  $out= preg_replace("/\n[ ]+/","\n",$out);
  +  $out= preg_replace("/\r/","",$out);
     $out= preg_replace("/<img\s*[^>]*src=['\"]((http|ftp)[^'\"]+)['\"][^>]*>/i",
       "\\1",$out);
     $out = preg_replace("/<img\s*[^>]*src=['\"]([^'\"]+)['\"][^>]*>/ie",
  @@ -30,22 +32,29 @@
     $out= preg_replace("/<b>([^<]+)<\/b>/i","'''\\1'''",$out);
     $out= preg_replace("/<i>([^<]+)<\/i>/i","''\\1''",$out);
     $out= preg_replace("/<u>([^<]+)<\/u>/i","__\\1__",$out);
  -  $out= preg_replace("/<li>/i"," * \\1",$out);
  -  $out= preg_replace("/<\/li>/i","",$out);
  -  $out= preg_replace("/&quot;/",'"',$out);
  -  $out= preg_replace("/<pre\s*[^>]*>/i","{{{\n",$out);
  +  $out= preg_replace("/<li>/i"," * ",$out);
  +  $out= preg_replace("/<\/li>\n*/i","",$out);
  +  #
  +  $out= str_replace(array("&quot;",'&lt;','&gt;','&amp;'),
  +                     array('"','<','>','&'),$out);
  +  # for rendered wiki page
  +  $out= preg_replace("/<pre\s*class=.wiki.>/i","{{{",$out);
  +  $out= preg_replace("/<pre\s*[^>]*>/i","{{{#!vim config",$out);
     $out= preg_replace("/<\/pre>/i","}}}\n",$out);
  -
  +  # remove id tag and perma links
     $out= preg_replace("/<a\s*id=[^>]+>[^<]*<\/a>/i","",$out);
     $out= preg_replace("/<a\s*[^>]*href=['\"]#[^>]+>[^<]*<\/a>/i","",$out);
  +  # remove ?WikiName links
     $out= preg_replace("/<a\s*[^>]*href=['\"][^>]+>\?<\/a>/i","",$out);
  -
  +  # url
     $out= preg_replace("/<a\s*[^>]*href=['\"]([^'\"]+)['\"][^>]*>([^<]+)<\/a>/ie",
       "'['.fix_url('$value','\\1').'\\2]'",$out);
  +  # heading
     $out= preg_replace("/<h(\d)[^>]*>(?:\d+\.?\d*)*([^<]+)<\/h\d>/ie",
       "str_repeat('=', \\1).' \\2 '.str_repeat('=', \\1)",$out);
  -  $out= preg_replace("/\r/","",$out);
  -  $out= preg_replace("/\n\s+/","\n",$out);
  +  # paragraph
  +  $out= preg_replace("/\n{3,}/","\n\n",$out);
  +
     $formatter->send_header("content-type: text/plain",$options);
     print $out;
     return;
  
  
  


wkpark      2004/11/22 23:32:43

  Added:       plugin   EditToolbar.php
  Log:
  add new macro: add the MediaWiki style EditToolBar
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/EditToolbar.php
  
  Index: EditToolbar.php
  ===================================================================
  <?php
  // Copyright 2004 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a EditToolbar plugin for the MoniWiki
  //
  // Usage: [[EditToolbar]]
  //
  // This feature is imported from the MediaWiki
  //
  // $Id: EditToolbar.php,v 1.1 2004/11/22 14:32:43 wkpark Exp $
  
  function macro_EditToolbar($formatter,$value) {
     global $DBInfo;
  
     $iconset='mediawiki';
     $imgdir=$DBInfo->imgs_dir.'/plugin/EditToolbar/'.$iconset;
     $script=<<<EOS
  <script type="text/javascript" src="$DBInfo->url_prefix/css/wikibits.js"></script>
  <script language="JavaScript" type='text/javascript'>
  /*<![CDATA[*/
  document.writeln("<div id='toolbar'>");
  addButton('$imgdir/button_bold.png','Bold text','\'\'\'','\'\'\'','Bold text');
  addButton('$imgdir/button_italic.png','Italic text','\'\'','\'\'','Italic text');
  addButton('$imgdir/button_link.png','Internal link','[',']','Link title');
  addButton('$imgdir/button_extlink.png','External link (remember http:// prefix)','[',']','http://www.example.com link title');
  addButton('$imgdir/button_headline.png','Level 2 headline','\\n== ',' ==\\n','Headline text');
  addButton('$imgdir/button_image.png','Embedded image','attachment:','','Example.jpg');
  addButton('$imgdir/button_media.png','Media file link','[[Media(',')]]','Example.mp3');
  addButton('$imgdir/button_math.png','Mathematical formula (LaTeX)','\$\$ ',' \$\$ ','Insert formula here');
  addButton('$imgdir/button_nowiki.png','Ignore wiki formatting','{{{','}}}','Insert non-formatted text here');
  
  addButton('$imgdir/button_sig.png','Your signature with timestamp','@SIG@','','');
  addButton('$imgdir/button_hr.png','Horizontal line (use sparingly)','\\n----\\n','','');
  addInfobox('Click a button to get an example text','Please enter the text you want to be formatted.\\\\n It will be shown in the infobox for copy and pasting.\\\\nExample:\\\\n\$1\\\\nwill become:\\\\n\$2');
  document.writeln("</div>");
  /*]]>*/
  </script>
  EOS;
  
      return $script;
  }
  
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2004/11/22 23:33:47

  Added:       css      wikibits.js
  Log:
  add a MediaWiki style EditToolBar
  
  Revision  Changes    Path
  1.1                  moniwiki/css/wikibits.js
  
  Index: wikibits.js
  ===================================================================
  // from the MediaWiki
  // simplified for the MoniWiki by wkpark
  //
  // $Id: wikibits.js,v 1.1 2004/11/22 14:33:47 wkpark Exp $
  //
  // Wikipedia JavaScript support functions
  // if this is true, the toolbar will no longer overwrite the infobox when you move the mouse over individual items
  var noOverwrite=false;
  var alertText;
  var clientPC = navigator.userAgent.toLowerCase(); // Get client info
  var is_gecko = ((clientPC.indexOf('gecko')!=-1) && (clientPC.indexOf('spoofer')==-1)
                  && (clientPC.indexOf('khtml') == -1) && (clientPC.indexOf('netscape/7.0')==-1));
  var is_safari = ((clientPC.indexOf('AppleWebKit')!=-1) && (clientPC.indexOf('spoofer')==-1));
  var is_khtml = (navigator.vendor == 'KDE' || ( document.childNodes && !document.all && !navigator.taintEnabled ));
  if (clientPC.indexOf('opera')!=-1) {
      var is_opera = true;
      var is_opera_preseven = (window.opera && !document.childNodes);
      var is_opera_seven = (window.opera && document.childNodes);
  }
  
  // add any onload functions in this hook (please don't hard-code any events in the xhtml source)
  function onloadhook () {
      // don't run anything below this for non-dom browsers
      if(!(document.getElementById && document.getElementsByTagName)) return;
      akeytt();
  }
  if (window.addEventListener) window.addEventListener("load",onloadhook,false);
  else if (window.attachEvent) window.attachEvent("onload",onloadhook);
  
  
  
  // document.write special stylesheet links
  if(typeof stylepath != 'undefined' && typeof skin != 'undefined') {
      if (is_opera_preseven) {
          document.write('<link rel="stylesheet" type="text/css" href="'+stylepath+'/'+skin+'/Opera6Fixes.css">');
      } else if (is_opera_seven) {
          document.write('<link rel="stylesheet" type="text/css" href="'+stylepath+'/'+skin+'/Opera7Fixes.css">');
      } else if (is_khtml) {
          document.write('<link rel="stylesheet" type="text/css" href="'+stylepath+'/'+skin+'/KHTMLFixes.css">');
      }
  }
  // Un-trap us from framesets
  if( window.top != window ) window.top.location = window.location;
  
  // this function generates the actual toolbar buttons with localized text
  // we use it to avoid creating the toolbar where javascript is not enabled
  function addButton(imageFile, speedTip, tagOpen, tagClose, sampleText) {
  
  	speedTip=escapeQuotes(speedTip);
  	tagOpen=escapeQuotes(tagOpen);
  	tagClose=escapeQuotes(tagClose);
  	sampleText=escapeQuotes(sampleText);
  	var mouseOver="";
  
  	// we can't change the selection, so we show example texts
  	// when moving the mouse instead, until the first button is clicked
  	if(!document.selection && !is_gecko) {
  		// filter backslashes so it can be shown in the infobox
  		var re=new RegExp("\\\\n","g");
  		tagOpen=tagOpen.replace(re,"");
  		tagClose=tagClose.replace(re,"");
  		mouseOver = "onMouseover=\"if(!noOverwrite){document.infoform.infobox.value='"+tagOpen+sampleText+tagClose+"'};\"";
  	}
  
  	document.write("<a href=\"javascript:insertTags");
  	document.write("('"+tagOpen+"','"+tagClose+"','"+sampleText+"');\">");
  
          document.write("<img width=\"23\" height=\"22\" src=\""+imageFile+"\" border=\"0\" alt=\""+speedTip+"\" title=\""+speedTip+"\""+mouseOver+">");
  	document.write("</a>");
  	return;
  }
  
  function addInfobox(infoText,text_alert) {
  	alertText=text_alert;
  	var clientPC = navigator.userAgent.toLowerCase(); // Get client info
  
  	var re=new RegExp("\\\\n","g");
  	alertText=alertText.replace(re,"\n");
  
  	// if no support for changing selection, add a small copy & paste field
  	// document.selection is an IE-only property. The full toolbar works in IE and
  	// Gecko-based browsers.
  	if(!document.selection && !is_gecko) {
   		infoText=escapeQuotesHTML(infoText);
  	 	document.write("<form name='infoform' id='infoform'>"+
  			"<input size=80 id='infobox' name='infobox' value=\""+
  			infoText+"\" READONLY></form>");
   	}
  
  }
  
  function escapeQuotes(text) {
  	var re=new RegExp("'","g");
  	text=text.replace(re,"\\'");
  	re=new RegExp('"',"g");
  	text=text.replace(re,'&quot;');
  	re=new RegExp("\\n","g");
  	text=text.replace(re,"\\n");
  	return text;
  }
  
  function escapeQuotesHTML(text) {
  	var re=new RegExp('"',"g");
  	text=text.replace(re,"&quot;");
  	return text;
  }
  
  // apply tagOpen/tagClose to selection in textarea,
  // use sampleText instead of selection if there is none
  // copied and adapted from phpBB
  function insertTags(tagOpen, tagClose, sampleText) {
  
  	var txtarea = document.editform.savetext;
  	// IE
  	if(document.selection  && !is_gecko) {
  		var theSelection = document.selection.createRange().text;
  		if(!theSelection) { theSelection=sampleText;}
  		txtarea.focus();
  		if(theSelection.charAt(theSelection.length - 1) == " "){// exclude ending space char, if any
  			theSelection = theSelection.substring(0, theSelection.length - 1);
  			document.selection.createRange().text = tagOpen + theSelection + tagClose + " ";
  		} else {
  			document.selection.createRange().text = tagOpen + theSelection + tagClose;
  		}
  
  	// Mozilla
  	} else if(txtarea.selectionStart || txtarea.selectionStart == '0') {
   		var startPos = txtarea.selectionStart;
  		var endPos = txtarea.selectionEnd;
  		var scrollTop=txtarea.scrollTop;
  		var myText = (txtarea.value).substring(startPos, endPos);
  		if(!myText) { myText=sampleText;}
  		if(myText.charAt(myText.length - 1) == " "){ // exclude ending space char, if any
  			subst = tagOpen + myText.substring(0, (myText.length - 1)) + tagClose + " ";
  		} else {
  			subst = tagOpen + myText + tagClose;
  		}
  		txtarea.value = txtarea.value.substring(0, startPos) + subst +
  		  txtarea.value.substring(endPos, txtarea.value.length);
  		txtarea.focus();
  
  		var cPos=startPos+(tagOpen.length+myText.length+tagClose.length);
  		txtarea.selectionStart=cPos;
  		txtarea.selectionEnd=cPos;
  		txtarea.scrollTop=scrollTop;
  
  	// All others
  	} else {
  		var copy_alertText=alertText;
  		var re1=new RegExp("\\$1","g");
  		var re2=new RegExp("\\$2","g");
  		copy_alertText=copy_alertText.replace(re1,sampleText);
  		copy_alertText=copy_alertText.replace(re2,tagOpen+sampleText+tagClose);
  		var text;
  		if (sampleText) {
  			text=prompt(copy_alertText);
  		} else {
  			text="";
  		}
  		if(!text) { text=sampleText;}
  		text=tagOpen+text+tagClose;
  		document.infoform.infobox.value=text;
  		// in Safari this causes scrolling
  		if(!is_safari) {
  			txtarea.focus();
  		}
  		noOverwrite=true;
  	}
  	// reposition cursor if possible
  	if (txtarea.createTextRange) txtarea.caretPos = document.selection.createRange().duplicate();
  }
  
  function akeytt() {
      if(typeof ta == "undefined" || !ta) return;
      pref = 'alt-';
      if(is_safari || navigator.userAgent.toLowerCase().indexOf( 'mac' ) + 1 ) pref = 'control-';
      if(is_opera) pref = 'shift-esc-';
      for(id in ta) {
          n = document.getElementById(id);
          if(n){
              a = n.childNodes[0];
              if(a){
                  if(ta[id][0].length > 0) {
                      a.accessKey = ta[id][0];
                      ak = ' ['+pref+ta[id][0]+']';
                  } else {
                      ak = '';
                  }
                  a.title = ta[id][1]+ak;
              } else {
                  if(ta[id][0].length > 0) {
                      n.accessKey = ta[id][0];
                      ak = ' ['+pref+ta[id][0]+']';
                  } else {
                      ak = '';
                  }
                  n.title = ta[id][1]+ak;
              }
          }
      }
  }
  
  
  


wkpark      2004/11/22 23:34:05

  moniwiki/imgs/plugin/EditToolbar - New directory

wkpark      2004/11/22 23:34:25

  moniwiki/imgs/plugin/EditToolbar/mediawiki - New directory

wkpark      2004/11/24 21:45:51

  Modified:    plugin   ImportUrl.php
  Log:
  detect table, hr
  
  Revision  Changes    Path
  1.5       +8 -2      moniwiki/plugin/ImportUrl.php
  
  Index: ImportUrl.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/ImportUrl.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ImportUrl.php	22 Nov 2004 14:22:00 -0000	1.4
  +++ ImportUrl.php	24 Nov 2004 12:45:51 -0000	1.5
  @@ -5,7 +5,7 @@
   //
   // Usage: ?action=importurl&url=http://foo.bar.com/
   //
  -// $Id: ImportUrl.php,v 1.4 2004/11/22 14:22:00 wkpark Exp $
  +// $Id: ImportUrl.php,v 1.5 2004/11/24 12:45:51 wkpark Exp $
   
   function do_ImportUrl($formatter,$options) {
     $value=$options['url'];
  @@ -22,7 +22,8 @@
   #  fix_url('http://hello.com/',$dummy);
   #  fix_url('http://hello.com',$dummy);
   
  -  $out= strip_tags($html_data,'<pre><a><b><i><u><h1><h2><h3><h4><h5><li><img>');
  +  $out= strip_tags($html_data,'<pre><hr><td><tr><a><b><i><u><h1><h2><h3><h4><h5><li><img>');
  +  # remove leading spaces
     $out= preg_replace("/\n[ ]+/","\n",$out);
     $out= preg_replace("/\r/","",$out);
     $out= preg_replace("/<img\s*[^>]*src=['\"]((http|ftp)[^'\"]+)['\"][^>]*>/i",
  @@ -34,6 +35,11 @@
     $out= preg_replace("/<u>([^<]+)<\/u>/i","__\\1__",$out);
     $out= preg_replace("/<li>/i"," * ",$out);
     $out= preg_replace("/<\/li>\n*/i","",$out);
  +  $out= preg_replace("/<td\s*[^>]*>/i","||",$out);
  +  $out= preg_replace("/<\/td>\n*/i","",$out);
  +  $out= preg_replace("/<tr\s*[^>]*>/i","",$out);
  +  $out= preg_replace("/<\/tr>\n*/i","||\n",$out);
  +  $out= preg_replace("/<hr\s*[^>]*>/i","----\n",$out);
     #
     $out= str_replace(array("&quot;",'&lt;','&gt;','&amp;'),
                        array('"','<','>','&'),$out);
  
  
  


wkpark      2004/11/24 22:19:19

  Modified:    plugin   ImportUrl.php
  Log:
  converve leading spaces in the pre blocks
  
  Revision  Changes    Path
  1.6       +70 -39    moniwiki/plugin/ImportUrl.php
  
  Index: ImportUrl.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/ImportUrl.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ImportUrl.php	24 Nov 2004 12:45:51 -0000	1.5
  +++ ImportUrl.php	24 Nov 2004 13:19:19 -0000	1.6
  @@ -5,7 +5,7 @@
   //
   // Usage: ?action=importurl&url=http://foo.bar.com/
   //
  -// $Id: ImportUrl.php,v 1.5 2004/11/24 12:45:51 wkpark Exp $
  +// $Id: ImportUrl.php,v 1.6 2004/11/24 13:19:19 wkpark Exp $
   
   function do_ImportUrl($formatter,$options) {
     $value=$options['url'];
  @@ -23,46 +23,77 @@
   #  fix_url('http://hello.com',$dummy);
   
     $out= strip_tags($html_data,'<pre><hr><td><tr><a><b><i><u><h1><h2><h3><h4><h5><li><img>');
  -  # remove leading spaces
  -  $out= preg_replace("/\n[ ]+/","\n",$out);
  -  $out= preg_replace("/\r/","",$out);
  -  $out= preg_replace("/<img\s*[^>]*src=['\"]((http|ftp)[^'\"]+)['\"][^>]*>/i",
  -    "\\1",$out);
  -  $out = preg_replace("/<img\s*[^>]*src=['\"]([^'\"]+)['\"][^>]*>/ie",
  -    "fix_url('$value','\\1')",$out);
  -  $out= preg_replace("/<b>([^<]+)<\/b>/i","'''\\1'''",$out);
  -  $out= preg_replace("/<i>([^<]+)<\/i>/i","''\\1''",$out);
  -  $out= preg_replace("/<u>([^<]+)<\/u>/i","__\\1__",$out);
  -  $out= preg_replace("/<li>/i"," * ",$out);
  -  $out= preg_replace("/<\/li>\n*/i","",$out);
  -  $out= preg_replace("/<td\s*[^>]*>/i","||",$out);
  -  $out= preg_replace("/<\/td>\n*/i","",$out);
  -  $out= preg_replace("/<tr\s*[^>]*>/i","",$out);
  -  $out= preg_replace("/<\/tr>\n*/i","||\n",$out);
  -  $out= preg_replace("/<hr\s*[^>]*>/i","----\n",$out);
  -  #
  -  $out= str_replace(array("&quot;",'&lt;','&gt;','&amp;'),
  -                     array('"','<','>','&'),$out);
  -  # for rendered wiki page
  -  $out= preg_replace("/<pre\s*class=.wiki.>/i","{{{",$out);
  -  $out= preg_replace("/<pre\s*[^>]*>/i","{{{#!vim config",$out);
  -  $out= preg_replace("/<\/pre>/i","}}}\n",$out);
  -  # remove id tag and perma links
  -  $out= preg_replace("/<a\s*id=[^>]+>[^<]*<\/a>/i","",$out);
  -  $out= preg_replace("/<a\s*[^>]*href=['\"]#[^>]+>[^<]*<\/a>/i","",$out);
  -  # remove ?WikiName links
  -  $out= preg_replace("/<a\s*[^>]*href=['\"][^>]+>\?<\/a>/i","",$out);
  -  # url
  -  $out= preg_replace("/<a\s*[^>]*href=['\"]([^'\"]+)['\"][^>]*>([^<]+)<\/a>/ie",
  -    "'['.fix_url('$value','\\1').'\\2]'",$out);
  -  # heading
  -  $out= preg_replace("/<h(\d)[^>]*>(?:\d+\.?\d*)*([^<]+)<\/h\d>/ie",
  -    "str_repeat('=', \\1).' \\2 '.str_repeat('=', \\1)",$out);
  -  # paragraph
  -  $out= preg_replace("/\n{3,}/","\n\n",$out);
  +
  +  $splits=preg_split('/(<pre\s*[^>]*>|<\/pre>)/', $out,
  +    -1, PREG_SPLIT_DELIM_CAPTURE);
  +
  +  $wiki='';
  +  foreach ($splits as $split) {
  +    if (preg_match('/^<pre\s/i',$split)) {
  +      $state='p';
  +      if (preg_match("/<pre\s*class=.wikiSyntax.[^>]*>/i",$split))
  +        $pre='{{{#!vim';
  +      else if (preg_match("/<pre\s*class=.wiki.>/i",$split))
  +        $pre='{{{';
  +      else
  +        $pre='{{{#!';
  +      continue;
  +    } else if (preg_match('/^<\/pre>/i',$split)) {
  +      $state='';
  +      $pre.="}}}\n";
  +      $pre= str_replace(array("&quot;",'&lt;','&gt;','&amp;'),
  +                        array('"','<','>','&'),$pre);
  +      $wiki.=$pre;
  +      $pre='';
  +      continue;
  +    }
  +    if ($pre) {
  +      $pre.=$split;
  +      continue;
  +    }
  +    # remove leading spaces
  +    $out= preg_replace("/\n[ ]+/","\n",$split);
  +    $out= preg_replace("/\r/","",$out);
  +    $out= preg_replace("/<img\s*[^>]*src=['\"]((http|ftp)[^'\"]+)['\"][^>]*>/i",
  +      "\\1",$out);
  +    $out = preg_replace("/<img\s*[^>]*src=['\"]([^'\"]+)['\"][^>]*>/ie",
  +      "fix_url('$value','\\1')",$out);
  +    $out= preg_replace("/<b>([^<]+)<\/b>/i","'''\\1'''",$out);
  +    $out= preg_replace("/<i>([^<]+)<\/i>/i","''\\1''",$out);
  +    $out= preg_replace("/<u>([^<]+)<\/u>/i","__\\1__",$out);
  +    $out= preg_replace("/<li>/i"," * ",$out);
  +    $out= preg_replace("/<\/li>\n*/i","",$out);
  +    $out= preg_replace("/<td\s*[^>]*>/i","||",$out);
  +    $out= preg_replace("/<\/td>\n*/i","",$out);
  +    $out= preg_replace("/<tr\s*[^>]*>/i","",$out);
  +    $out= preg_replace("/<\/tr>\n*/i","||\n",$out);
  +    $out= preg_replace("/<hr\s*[^>]*>/i","----\n",$out);
  +    #
  +    $out= str_replace(array("&quot;",'&lt;','&gt;','&amp;'),
  +                      array('"','<','>','&'),$out);
  +    # for rendered wiki page
  +    #$out= preg_replace("/<pre\s*class=.wiki.>/i","{{{",$out);
  +    #$out= preg_replace("/<pre\s*[^>]*>/i","{{{#!vim config",$out);
  +    #$out= preg_replace("/<\/pre>/i","}}}\n",$out);
  +    # remove id tag and perma links
  +    $out= preg_replace("/<a\s*id=[^>]+>[^<]*<\/a>/i","",$out);
  +    $out= preg_replace("/<a\s*[^>]*href=['\"]#[^>]+>[^<]*<\/a>/i","",$out);
  +    # remove ?WikiName links
  +    $out= preg_replace("/<a\s*[^>]*href=['\"][^>]+>\?<\/a>/i","",$out);
  +    # url
  +    $out= preg_replace("/<a\s*[^>]*href=['\"]([^'\"]+)['\"][^>]*>([^<]+)<\/a>/ie",
  +      "'['.fix_url('$value','\\1').'\\2]'",$out);
  +    # heading
  +    $out= preg_replace("/<h(\d)[^>]*>(?:\d+\.?\d*)*([^<]+)<\/h\d>/ie",
  +      "str_repeat('=', \\1).' \\2 '.str_repeat('=', \\1)",$out);
  +    # paragraph
  +    $out= preg_replace("/\n{3,}/","\n\n",$out);
  +
  +    $wiki.=$out;
  +  }
   
     $formatter->send_header("content-type: text/plain",$options);
  -  print $out;
  +  print $wiki;
     return;
   
     $options['savetext']=$out;
  
  
  


wkpark      2004/11/24 22:55:16

  Modified:    plugin   ImportUrl.php
  Log:
  reorder replace rules
  
  Revision  Changes    Path
  1.7       +4 -4      moniwiki/plugin/ImportUrl.php
  
  Index: ImportUrl.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/ImportUrl.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- ImportUrl.php	24 Nov 2004 13:19:19 -0000	1.6
  +++ ImportUrl.php	24 Nov 2004 13:55:16 -0000	1.7
  @@ -5,7 +5,7 @@
   //
   // Usage: ?action=importurl&url=http://foo.bar.com/
   //
  -// $Id: ImportUrl.php,v 1.6 2004/11/24 13:19:19 wkpark Exp $
  +// $Id: ImportUrl.php,v 1.7 2004/11/24 13:55:16 wkpark Exp $
   
   function do_ImportUrl($formatter,$options) {
     $value=$options['url'];
  @@ -58,9 +58,6 @@
         "\\1",$out);
       $out = preg_replace("/<img\s*[^>]*src=['\"]([^'\"]+)['\"][^>]*>/ie",
         "fix_url('$value','\\1')",$out);
  -    $out= preg_replace("/<b>([^<]+)<\/b>/i","'''\\1'''",$out);
  -    $out= preg_replace("/<i>([^<]+)<\/i>/i","''\\1''",$out);
  -    $out= preg_replace("/<u>([^<]+)<\/u>/i","__\\1__",$out);
       $out= preg_replace("/<li>/i"," * ",$out);
       $out= preg_replace("/<\/li>\n*/i","",$out);
       $out= preg_replace("/<td\s*[^>]*>/i","||",$out);
  @@ -88,6 +85,9 @@
         "str_repeat('=', \\1).' \\2 '.str_repeat('=', \\1)",$out);
       # paragraph
       $out= preg_replace("/\n{3,}/","\n\n",$out);
  +    $out= preg_replace("/<b>([^<]+)<\/b>/i","'''\\1'''",$out);
  +    $out= preg_replace("/<i>([^<]+)<\/i>/i","''\\1''",$out);
  +    $out= preg_replace("/<u>([^<]+)<\/u>/i","__\\1__",$out);
   
       $wiki.=$out;
     }
  
  
  


wkpark      2004/11/25 00:30:30

  Modified:    plugin/processor latex.php gnuplot.php
  Log:
  fix typo of some messages
  
  Revision  Changes    Path
  1.7       +2 -2      moniwiki/plugin/processor/latex.php
  
  Index: latex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/latex.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- latex.php	9 Nov 2004 12:02:21 -0000	1.6
  +++ latex.php	24 Nov 2004 15:30:30 -0000	1.7
  @@ -6,7 +6,7 @@
   // Usage: {{{#!latex
   // $ \alpha $
   // }}}
  -// $Id: latex.php,v 1.6 2004/11/09 12:02:21 wkpark Exp $
  +// $Id: latex.php,v 1.7 2004/11/24 15:30:30 wkpark Exp $
   
   function processor_latex($formatter="",$value="") {
     global $DBInfo;
  @@ -69,7 +69,7 @@
        system($cmd);
   
        if (!file_exists($uniq.".dvi")) {
  -       print "<font color='red'>ERROR:</font> LaTeX does not works properly.";
  +       print "<font color='red'>ERROR:</font> LaTeX does not work properly.";
          chdir($cwd);
          return;
        }
  
  
  
  1.6       +3 -3      moniwiki/plugin/processor/gnuplot.php
  
  Index: gnuplot.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/gnuplot.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- gnuplot.php	14 Aug 2004 17:01:50 -0000	1.5
  +++ gnuplot.php	24 Nov 2004 15:30:30 -0000	1.6
  @@ -6,7 +6,7 @@
   // Usage: {{{#!gnuplot
   // plot sin(x)
   // }}}
  -// $Id: gnuplot.php,v 1.5 2004/08/14 17:01:50 wkpark Exp $
  +// $Id: gnuplot.php,v 1.6 2004/11/24 15:30:30 wkpark Exp $
   
   function processor_gnuplot($formatter="",$value="") {
     global $DBInfo;
  @@ -75,7 +75,7 @@
            unlink($flog);
            unlink($finp);
          } else {
  -         print "<font color='red'>ERROR:</font> Gnuplot does not works correctly";
  +         print "<font color='red'>ERROR:</font> Gnuplot does not work correctly";
          }
        } else {
          #
  @@ -89,7 +89,7 @@
          if (file_exists($outpath)) {
            unlink($flog);
          } else {
  -         print "<font color='red'>ERROR:</font> Gnuplot does not works correctly";
  +         print "<font color='red'>ERROR:</font> Gnuplot does not work correctly";
          }
        }
   
  
  
  


wkpark      2004/11/25 00:30:31

  Modified:    plugin   subscribe.php Diff.php Info.php UploadFile.php
                        BlogChanges.php
  Log:
  fix typo of some messages
  
  Revision  Changes    Path
  1.2       +2 -2      moniwiki/plugin/subscribe.php
  
  Index: subscribe.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/subscribe.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- subscribe.php	25 Jul 2003 17:14:53 -0000	1.1
  +++ subscribe.php	24 Nov 2004 15:30:30 -0000	1.2
  @@ -3,13 +3,13 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a subscribe action plugin for the MoniWiki
   //
  -// $Id: subscribe.php,v 1.1 2003/07/25 17:14:53 wkpark Exp $
  +// $Id: subscribe.php,v 1.2 2004/11/24 15:30:30 wkpark Exp $
   
   function do_subscribe($formatter,$options) {
     global $DBInfo;
   
     if (!$DBInfo->notify) {
  -    $options['title']=_("EmailNotification does not activated");
  +    $options['title']=_("EmailNotification is not activated");
       $options['msg']=_("If you wan't to subscribe this page please contact the WikiMaster to activate the e-mail notification");
       do_invalid($formatter,$options);
     }
  
  
  
  1.3       +2 -2      moniwiki/plugin/Diff.php
  
  Index: Diff.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Diff.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Diff.php	22 Oct 2004 16:49:25 -0000	1.2
  +++ Diff.php	24 Nov 2004 15:30:30 -0000	1.3
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a diff plugin for the MoniWiki
   //
  -// $Id: Diff.php,v 1.2 2004/10/22 16:49:25 wkpark Exp $
  +// $Id: Diff.php,v 1.3 2004/11/24 15:30:30 wkpark Exp $
   
   function macro_diff($formatter,$value,&$options)
   {
  @@ -68,7 +68,7 @@
       return "<h2>$msg</h2>";
     }
     if (!$DBInfo->version_class) {
  -    $msg= _("Version info does not available in this wiki");
  +    $msg= _("Version info is not available in this wiki");
       return "<h2>$msg</h2>";
     }
     
  
  
  
  1.2       +2 -2      moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Info.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Info.php	22 Oct 2004 14:44:03 -0000	1.1
  +++ Info.php	24 Nov 2004 15:30:30 -0000	1.2
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Info plugin for the MoniWiki
   //
  -// $Id: Info.php,v 1.1 2004/10/22 14:44:03 wkpark Exp $
  +// $Id: Info.php,v 1.2 2004/11/24 15:30:30 wkpark Exp $
   
   function _parse_rlog($formatter,$log) {
     global $DBInfo;
  @@ -128,7 +128,7 @@
         print _parse_rlog($formatter,$out);
       }
     } else {
  -    $msg=_("Version info does not available in this wiki");
  +    $msg=_("Version info is not available in this wiki");
       print "<h2>$msg</h2>";
     }
   
  
  
  
  1.12      +2 -2      moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- UploadFile.php	22 Nov 2004 14:17:45 -0000	1.11
  +++ UploadFile.php	24 Nov 2004 15:30:30 -0000	1.12
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.11 2004/11/22 14:17:45 wkpark Exp $
  +// $Id: UploadFile.php,v 1.12 2004/11/24 15:30:30 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -70,7 +70,7 @@
     else
        $pds_exts="png|jpg|jpeg|gif|mp3|zip|tgz|gz|txt|css|exe|hwp";
     if (!preg_match("/(".$pds_exts.")$/i",$fname[2])) {
  -     $msg.=sprintf(_("%s does not allowed to upload"),$upfilename)."<br/>\n";
  +     $msg.=sprintf(_("%s is not allowed to upload"),$upfilename)."<br/>\n";
        continue;
     }
   
  
  
  
  1.33      +2 -2      moniwiki/plugin/BlogChanges.php
  
  Index: BlogChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogChanges.php,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- BlogChanges.php	22 Oct 2004 14:56:13 -0000	1.32
  +++ BlogChanges.php	24 Nov 2004 15:30:30 -0000	1.33
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogChanges action plugin for the MoniWiki
   //
  -// $Id: BlogChanges.php,v 1.32 2004/10/22 14:56:13 wkpark Exp $
  +// $Id: BlogChanges.php,v 1.33 2004/11/24 15:30:30 wkpark Exp $
   
   class Blog_cache {
     function get_all_blogs() {
  @@ -250,7 +250,7 @@
       }
       if (!$category_pages) {
         if ($DBInfo->hasPage($options['category'])) {
  -        // category does not found
  +        // category is not found
           // regard it as a single blog page
           $blog_page=$options['category'];
         } else {
  
  
  


wkpark      2004/11/25 00:31:27

  Modified:    plugin   Blog.php
  Log:
  fix typo of some messages
  
  Revision  Changes    Path
  1.24      +2 -2      moniwiki/plugin/Blog.php
  
  Index: Blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Blog.php,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- Blog.php	21 Oct 2004 08:27:01 -0000	1.23
  +++ Blog.php	24 Nov 2004 15:31:27 -0000	1.24
  @@ -5,7 +5,7 @@
   //
   // Usage: ?action=Blog
   //
  -// $Id: Blog.php,v 1.23 2004/10/21 08:27:01 wkpark Exp $
  +// $Id: Blog.php,v 1.24 2004/11/24 15:31:27 wkpark Exp $
   
   function updateBlogList($formatter) {
     global $DBInfo;
  @@ -255,7 +255,7 @@
     if (!$savetext) {
       #print $formatter->macro_repl('SmileyChooser');
       print macro_EditHints($formatter);
  -    print "<div class='hint'>"._("<b>horizontal rule</b> ---- does not applied on the blog mode.")."</div>\n";
  +    print "<div class='hint'>"._("<b>horizontal rule</b> ---- is not applied on the blog mode.")."</div>\n";
     }
     if ($options['button_preview'] && $options['savetext']) {
       if ($options['title'])
  
  
  


wkpark      2004/11/25 16:42:29

  Modified:    data     metaparse.py
  Log:
  fix for the WikiPedia
  
  Revision  Changes    Path
  1.5       +6 -2      moniwiki/data/metaparse.py
  
  Index: metaparse.py
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/data/metaparse.py,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- metaparse.py	3 Jan 2004 14:15:15 -0000	1.4
  +++ metaparse.py	25 Nov 2004 07:42:29 -0000	1.5
  @@ -1,5 +1,5 @@
   #!/usr/bin/python
  -# $Id: metaparse.py,v 1.4 2004/01/03 14:15:15 wkpark Exp $
  +# $Id: metaparse.py,v 1.5 2004/11/25 07:42:29 wkpark Exp $
   # python version metaparse.py by wkpark@kldp.org
   
   import string,os,sys,re,urllib
  @@ -68,7 +68,7 @@
         "PediaIndex":
           ("Special:Allpages",
            '^<table>(.*)</table>',
  -         '(http://.*/w/wiki.phtml\?title=Special:Allpages&amp;from.*?)"')
  +         '(/w/wiki.phtml\?title=Special:Allpages&amp;from.*?)"')
       };
   
       def __init__(self):
  @@ -77,6 +77,8 @@
   	return
   
       def _fetch(self,wikiname,type,urls):
  +        urllib.URLopener.version =
  +            "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
           catcmd = 'cat %s'
           num=0
           for url in urls:
  @@ -149,6 +151,8 @@
           fp.close()
           urls=[]
           for url in all:
  +          if not re.match(r'^http://',url):
  +            url='http://en.wikipedia.org' + url
             urls.append(string.replace(url,'&amp;','&'))
           self._fetch(wikiname,type,urls)
   
  
  
  


wkpark      2004/11/26 00:04:51

  Added:       plugin/processor freemind.php
  Log:
  a FreeMind processor added
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/processor/freemind.php
  
  Index: freemind.php
  ===================================================================
  <?php
  // Copyright 2004 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a FreeMind plugin for the MoniWiki
  //
  // $Id: freemind.php,v 1.1 2004/11/25 15:04:51 wkpark Exp $
  
  function _interwiki_repl($formatter,$url) {
      global $DBInfo;
  
      if ($url[0]=="w")
        $url=substr($url,5);
      $dum=explode(":",$url,2);
      $wiki=$dum[0]; $page=$dum[1];
      if (!$page) {
        $page=$dum[0];
        return array($formatter->link_url($page));
      }
  
      $url=$DBInfo->interwiki[$wiki];
      # invalid InterWiki name
      if (!$url)
        return array();
  
      $urlpage=_urlencode(trim($page));
      #$urlpage=trim($page);
      if (strpos($url,'$PAGE') === false)
        $url.=$urlpage;
      else {
        # GtkRef http://developer.gnome.org/doc/API/2.0/gtk/$PAGE.html
        # GtkRef:GtkTreeView#GtkTreeView
        # is rendered as http://...GtkTreeView.html#GtkTreeView
        $page_only=strtok($urlpage,'#?');
        $query= substr($urlpage,strlen($page_only));
        #if ($query and !$text) $text=strtok($page,'#?');
        $url=str_replace('$PAGE',$page_only,$url).$query;
      }
  
      $img=$formatter->imgs_dir_interwiki.strtolower($wiki).'-16.png';
      if (preg_match("/\.(png|gif|jpeg|jpg)$/i",$url))
        $img=$url;
  
      return array($url,$img);
  }
  
  function _link_repl($formatter,$url) {
      if (preg_match("/\.(png|gif|jpeg|jpg)$/i",$url))
        $img=$url;
      return array($url,$img);
  }
  
  function processor_freemind($formatter,$value) {
      global $DBInfo;
  
      if ($value[0]=='#' and $value[1]=='!')
          list($line,$value)=explode("\n",$value,2);
      if ($line) {
      }
  
      $_dir=$DBInfo->upload_dir.'/FreeMind';
      if (!file_exists($_dir)) {
          umask(000); mkdir($_dir,0777);
      }
  
      $_FONT=array('Verdana','sans-serif');
      $_SIZE=array(12,20,16,14,12);
      $_COLOR=array('#ffcc33','#336699','#336600');
  
      $map=md5($value).'.mm';
      if (!file_exists($_dir.'/'.$map)) {
          $depth=$odepth=0;
          $dep=$odep=0;
          $out='<map version="0.7.1">'."\n";
          $lines= explode("\n",$value);
      
          foreach ($lines as $line) {
              preg_match('/^(\s+)\*\s?(.*)$/',$line,$m);
              if (!$m) continue;
              $dep=strlen($m[1]);
              if ($dep == $odep)
                  $out.="</node>\n";
              else if ($dep > $odep)
                  $depth++;
              else {
                  while ($odep>=$dep) {
                      $out.="</node>\n";
                      $odep--;
                  }
                  $odep++;
              }
      
              if ($_FONT[$dep]) $FONT=$_FONT[$dep];
              else $FONT=$_FONT[0];
              if ($_SIZE[$dep]) $SIZE=$_SIZE[$dep];
              else $SIZE=$_SIZE[0];
              if ($_COLOR[$dep]) $COLOR=$_COLOR[$dep];
              else $COLOR=$_COLOR[0];
      
              $text=$m[2];
              $link='';
              $extra='';
              $img='';
              if (preg_match('/^(http|mailto|wiki):/',$text,$match)) {
                  list($link,$text)=explode(' ',$text,2);
                  if ($match[1]=='wiki') {
                      list($link,$img)=_interwiki_repl($formatter,$link);
                      $link='LINK="'.addslashes($link).'" ';
                      if ($img) $extra='<html><img src="'.$img.'"/></html>';
                  } else {
                      list($link,$img)=_link_repl($formatter,$link);
                      $link='LINK="'.addslashes($link).'" ';
                      if ($img) $extra='<html><img src="'.$img.'"/></html>';
                  }
              }
              $text=addslashes($text);
      
              $out.='<node '.$link.'COLOR="'.$COLOR.'" TEXT="'.$text.'">'."\n";
              $out.="<font NAME=\"$FONT\" SIZE=\"$SIZE\"/>\n";
              $out.=$extra;
        
              $odep=$dep;
          }
          for (;$odep!=0;$odep--) {
              $out.="</node>\n";
          }
      
          $out.='</map>'."\n";
          $fp=fopen($_dir.'/'.$map,'w');
          fwrite($fp,$out);
          fclose($fp);
      }
  
      $pubpath = $formatter->url_prefix.'/applets/FreeMind';
      $puburl = qualifiedUrl($formatter->url_prefix.'/'.$_dir);
      return <<<APP
  <applet code="freemind.main.FreeMindApplet.class" codebase='$pubpath'
            archive="freemindbrowser.jar" width="100%" height="100%">
    <param name="type" value="application/x-java-applet">
    <param name="scriptable" value="true">
    <param name="modes" value="freemind.modes.browsemode.BrowseMode">
    <param name="browsemode_initial_map"
           value="$puburl/$map">
    <!--          ^ Put the path to your map here  -->
    <param name="initial_mode" value="Browse">
  </applet>
  APP;
  }
  
  // vim:et:sts=4:sw=4:
  ?>
  
  
  


wkpark      2004/11/26 00:05:02

  moniwiki/applets/FreeMind - New directory

wkpark      2004/11/26 00:06:03

  Added:       applets/FreeMind Makefile
  Log:
  add the FreeMind applet
  
  Revision  Changes    Path
  1.1                  moniwiki/applets/FreeMind/Makefile
  
  Index: Makefile
  ===================================================================
  VER=0_7_1
  all:
  	wget http://voxel.dl.sourceforge.net/sourceforge/freemind/freemind-browser-$(VER).zip
  	unzip freemind-browser-$(VER).zip
  
  
  


wkpark      2004/11/27 18:00:43

  Modified:    .        wikilib.php
  Log:
  add $edit_rows option like as MoinMoin
  
  Revision  Changes    Path
  1.128     +5 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.127
  retrieving revision 1.128
  diff -u -r1.127 -r1.128
  --- wikilib.php	7 Nov 2004 05:24:30 -0000	1.127
  +++ wikilib.php	27 Nov 2004 09:00:43 -0000	1.128
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.127 2004/11/07 05:24:30 wkpark Exp $
  +// $Id: wikilib.php,v 1.128 2004/11/27 09:00:43 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -481,10 +481,12 @@
   
     $COLS_MSIE= 80;
     $COLS_OTHER= 85;
  +
  +  $edit_rows=$DBInfo->edit_rows ? $DBInfo->edit_rows: 16;
     $cols= preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']) ? $COLS_MSIE : $COLS_OTHER;
   
  -  $rows= $options['rows'] > 5 ? $options['rows']: 16;
  -  $rows= $rows < 60 ? $rows: 16;
  +  $rows= $options['rows'] > 5 ? $options['rows']: $edit_rows;
  +  $rows= $rows < 60 ? $rows: $edit_rows;
     $cols= $options['cols'] > 60 ? $options['cols']: $cols;
   
     $text= $options['savetext'];
  
  
  


wkpark      2004/12/01 17:20:23

  Modified:    plugin   Attachment.php
  Log:
  fixed PR #300589: use _urlencode()
  
  Revision  Changes    Path
  1.10      +3 -3      moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- Attachment.php	17 Oct 2004 16:12:07 -0000	1.9
  +++ Attachment.php	1 Dec 2004 08:20:23 -0000	1.10
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.9 2004/10/17 16:12:07 wkpark Exp $
  +// $Id: Attachment.php,v 1.10 2004/12/01 08:20:23 wkpark Exp $
   
   function macro_Attachment($formatter,$value) {
     global $DBInfo;
  @@ -41,7 +41,7 @@
     if (($p=strpos($value,':')) !== false or ($p=strpos($value,'/')) !== false) {
       $subpage=substr($value,0,$p);
       $file=substr($value,$p+1);
  -    $value=$subpage.':'.$file; # normalize page arg
  +    $value=$subpage.'/'.$file; # normalize page arg
       if ($subpage and $DBInfo->hasPage($subpage)) {
         $pagename=$subpage;
         $key=$DBInfo->pageToKeyname($subpage);
  @@ -68,7 +68,7 @@
         if ($key != $pagename)
           $url=$formatter->link_url(_urlencode($pagename),"?action=download&amp;value=$value");
         else
  -        $url=$DBInfo->url_prefix."/".$upload_file;
  +        $url=$DBInfo->url_prefix."/"._urlencode($upload_file);
         return "<span class=\"imgAttach\"><img src='$url' alt='$file' $attr/></span>";
       } else {
   
  
  
  


wkpark      2004/12/01 17:22:11

  Modified:    plugin/processor vim.php
  Log:
  support dynamic line numbering using a javascript: imported MoinMoin feature
  
  Revision  Changes    Path
  1.21      +31 -10    moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- vim.php	17 Oct 2004 06:38:18 -0000	1.20
  +++ vim.php	1 Dec 2004 08:22:11 -0000	1.21
  @@ -6,10 +6,11 @@
   // Usage: {{{#!vim sh|c|sh|.. [number]
   // some codes
   // }}}
  -// $Id: vim.php,v 1.20 2004/10/17 06:38:18 pyrasis Exp $
  +// $Id: vim.php,v 1.21 2004/12/01 08:22:11 wkpark Exp $
   
   function processor_vim($formatter,$value,$options) {
     global $DBInfo;
  +  static $jsloaded=0;
     $cache_dir=$DBInfo->upload_dir."/VimProcessor";
   
     $syntax=array("php","c","python","jsp","sh","cpp",
  @@ -31,26 +32,45 @@
   
     if ($extra == "number") 
       $option='+"set number" ';
  +
     if ($DBInfo->vim_options)
       $option.=$DBInfo->vim_options.' ';
   
     $uniq=md5($option.$src);
  +  $script='';
  +  if ($DBInfo->use_linenumber) {
  +    if (!$jsloaded) 
  +      $script='<script type="text/javascript" src="/wiki/css/linenumber.js"></script>';
  +    $script.="<script type=\"text/javascript\">
  +document.write('<a href=\"#\" onClick=\"return togglenumber(\'PRE-$uniq\', 1, 1);\" \
  +                class=\"codenumbers\">Toggle line numbers<\/a>');
  +</script>";
  +  }
  +
  +  $stag="<pre class='wikiSyntax' id='PRE-$uniq' style='font-family:FixedSys,monospace;color:#c0c0c0;background-color:black'>\n";
  +  $etag="</pre>\n";
  +
     if (!file_exists($cache_dir)) {
       umask(000);
       mkdir($cache_dir,0777);
       umask(022);
     }
   
  -  if (file_exists($cache_dir."/$uniq".".html") && !$formatter->refresh) {
  +  if (file_exists($cache_dir."/$uniq".".html") && !$formatter->refresh && !$formatter->preview) {
       $out = "";
       $fp=fopen($cache_dir."/$uniq".".html","r");
       while (!feof($fp)) $out .= fread($fp, 1024);
  -    return $out;
  +    return $script.$stag.$out.$etag;
       #return join('',file($cache_dir."/$uniq".".html"));
     }
   
  -  if (!empty($DBInfo->vim_nocheck) and !in_array($type,$syntax)) 
  -    return "<pre class='code'>\n$line\n$src\n</pre>\n";
  +  if (!empty($DBInfo->vim_nocheck) and !in_array($type,$syntax)) {
  +    $lines=explode("\n",$line."\n".$src);
  +    if ($lines[sizeof($lines)-1]=="") array_pop($lines);
  +    $src="<span class=\"line\">".
  +      implode("</span>\n<span class=\"line\">",$lines)."</span>";
  +    return $script."<pre class='wiki' id='PRE-$uniq'>\n$src</pre>\n";
  +  }
   
     if(getenv("OS")=="Windows_NT") {
       $tohtml='\%VIMRUNTIME\%\\syntax\\2html.vim';
  @@ -91,14 +111,15 @@
     }
     unlink($tmpf);
   
  -  $out=preg_replace("/<title>.*title>|<\/?head>|<\/?html>|<meta.*>|<\/?body.*>/","", $out);
  -  $out=preg_replace("/<pre>/","<pre class='wikiSyntax' style='font-family:FixedSys,monospace;color:#c0c0c0;background-color:black'>", $out);
  -#  $out=preg_replace("/<\/pre>/","</span></pre>", $out);
  +  #$out=preg_replace("/<title.*title>|<\/?head>|<\/?html>|<meta.*>|<\/?body.*>/","", $out);
  +  $out=preg_replace("/(^(\s|\S)*<pre>\n|\n<\/pre>(\s|\S)*$)/","",$out);
  +  $lines=explode("\n",$out);
  +  $out="<span class=\"line\">".
  +    implode("</span>\n<span class=\"line\">",$lines)."</span>\n";
     $fp=fopen($cache_dir."/$uniq".".html","w");
     fwrite($fp,$out);
     fclose($fp);
  -
  -  return $out;
  +  return $script.$stag.$out.$etag;
   }
   
   // vim:et:sts=2:
  
  
  


wkpark      2004/12/01 17:23:37

  Added:       plugin   freemind.php
  Log:
  add a simple freemind macro/action plugin
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/freemind.php
  
  Index: freemind.php
  ===================================================================
  <?php
  // Copyright 2004 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a freemind macro/action plugin for the MoniWiki
  //
  // $Id: freemind.php,v 1.1 2004/12/01 08:23:37 wkpark Exp $
  
  function macro_FreeMind($formatter,$value) {
      global $DBInfo;
  
      $_dir=$DBInfo->upload_dir.'/FreeMind';
      $pubpath = $formatter->url_prefix.'/applets/FreeMind';
      $puburl = qualifiedUrl($formatter->url_prefix.'/'.$_dir);
      return <<<APP
    <applet code="freemind.main.FreeMindApplet.class" codebase="$pubpath"
            archive="freemindbrowser.jar" width="100%" height="100%">
    <param name="type" value="application/x-java-applet;version=1.4">
    <param name="scriptable" value="false">
  
    <param name="modes" value="freemind.modes.browsemode.BrowseMode">
    <param name="browsemode_initial_map"
           value="$puburl/$value.mm">
    <!--          ^ Put the path to your map here  -->
    <param name="initial_mode" value="Browse">
    </applet>
  APP;
  
  }
  
  function do_freemind($formatter,$options) {
    #$formatter->send_header('',$options);
    print <<<HEAD
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
  <!-- This launcher works fine with Explorer (with Javascript or without) as
       well as with Mozilla on Windows -->
  <head>
    <title>Free Mind for MoniWiki</title>
  <style>
    body {margin:0px;}
  </style>
  </head>
  <body>
  HEAD;
    print macro_FreeMind($formatter,$options['value']);
    print "</body></html>";
    return;
  }
  
  // vim:et:sts=4:sw=4:et:
  ?>
  
  
  


wkpark      2004/12/01 17:24:23

  Modified:    plugin/processor freemind.php
  Log:
  update the freemind Processor
  
  Revision  Changes    Path
  1.2       +43 -17    moniwiki/plugin/processor/freemind.php
  
  Index: freemind.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/freemind.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- freemind.php	25 Nov 2004 15:04:51 -0000	1.1
  +++ freemind.php	1 Dec 2004 08:24:23 -0000	1.2
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a FreeMind plugin for the MoniWiki
   //
  -// $Id: freemind.php,v 1.1 2004/11/25 15:04:51 wkpark Exp $
  +// $Id: freemind.php,v 1.2 2004/12/01 08:24:23 wkpark Exp $
   
   function _interwiki_repl($formatter,$url) {
       global $DBInfo;
  @@ -44,8 +44,9 @@
   }
   
   function _link_repl($formatter,$url) {
  -    if (preg_match("/\.(png|gif|jpeg|jpg)$/i",$url))
  -      $img=$url;
  +    if (preg_match("/\.(png|gif|jpeg|jpg)$/i",$url)) {
  +      $img=$url; $url='';
  +    }
       return array($url,$img);
   }
   
  @@ -62,20 +63,35 @@
           umask(000); mkdir($_dir,0777);
       }
   
  -    $_FONT=array('Verdana','sans-serif');
  +    $_FONT=array('Default','sans-serif');
       $_SIZE=array(12,20,16,14,12);
  -    $_COLOR=array('#ffcc33','#336699','#336600');
  +    $_COLOR=array('#003366','#336699','#336600');
   
  -    $map=md5($value).'.mm';
  -    if (!file_exists($_dir.'/'.$map)) {
  +    $md5sum=md5($value);
  +    $map=$md5sum.'.mm';
  +    if ($formatter->refresh || $formatter->preview || !file_exists($_dir.'/'.$map)) {
  +        include_once('lib/compat.php');
           $depth=$odepth=0;
           $dep=$odep=0;
           $out='<map version="0.7.1">'."\n";
           $lines= explode("\n",$value);
       
           foreach ($lines as $line) {
  -            preg_match('/^(\s+)\*\s?(.*)$/',$line,$m);
  +            preg_match('/^(\s+)(\+|\*)(<|>|@)?\s?(.*)$/',$line,$m);
               if (!$m) continue;
  +            $text=$m[4];
  +            $align='';
  +            $folded='';
  +            $cloud='';
  +            $style='';
  +            if ($m[2] =='+') $folded='FOLDED="true" ';
  +            if ($m[3]) {
  +                if ($m[3] == '@') $cloud="<cloud COLOR=\"#66ccff\"/>\n";
  +                else {
  +                    $align= ($m[3] == '<') ? 'POSITION="left" ':'POSITION="right" ';
  +                }
  +            }
  +
               $dep=strlen($m[1]);
               if ($dep == $odep)
                   $out.="</node>\n";
  @@ -96,7 +112,6 @@
               if ($_COLOR[$dep]) $COLOR=$_COLOR[$dep];
               else $COLOR=$_COLOR[0];
       
  -            $text=$m[2];
               $link='';
               $extra='';
               $img='';
  @@ -105,26 +120,35 @@
                   if ($match[1]=='wiki') {
                       list($link,$img)=_interwiki_repl($formatter,$link);
                       $link='LINK="'.addslashes($link).'" ';
  -                    if ($img) $extra='<html><img src="'.$img.'"/></html>';
  +                    if ($img) $extra='<html><img src="'.$img.'">';
                   } else {
                       list($link,$img)=_link_repl($formatter,$link);
  -                    $link='LINK="'.addslashes($link).'" ';
  -                    if ($img) $extra='<html><img src="'.$img.'"/></html>';
  +                    $link=$link ? 'LINK="'.addslashes($link).'" ':'';
  +                    if ($img) $extra='<html><img src="'.$img.'">';
                   }
  +                if ($extra) $extra=htmlspecialchars($extra);
               }
  -            $text=addslashes($text);
  +            $text=addslashes(htmlspecialchars($text));
       
  -            $out.='<node '.$link.'COLOR="'.$COLOR.'" TEXT="'.$text.'">'."\n";
  +            $out.='<node '.$link.$folded.$align.'COLOR="'.$COLOR.'" TEXT="'.$extra.$text.'">'."\n";
               $out.="<font NAME=\"$FONT\" SIZE=\"$SIZE\"/>\n";
  -            $out.=$extra;
  +            $out.="<edge COLOR=\"#3366cc\" WIDTH=\"2\" STYLE=\"sharp_bezier\"/>\n";
  +            $out.=$cloud;
         
               $odep=$dep;
           }
           for (;$odep!=0;$odep--) {
               $out.="</node>\n";
           }
  -    
  +
           $out.='</map>'."\n";
  +
  +        if (strtoupper(($DBInfo->charset)) != 'UTF-8' and function_exists('iconv')) {
  +            $utf8=iconv($DBInfo->charset,'UTF-8',$out);
  +            if ($utf8) $out=&$utf8;
  +        }
  +        $out=utf8_mb_encode($out);
  +
           $fp=fopen($_dir.'/'.$map,'w');
           fwrite($fp,$out);
           fclose($fp);
  @@ -132,9 +156,10 @@
   
       $pubpath = $formatter->url_prefix.'/applets/FreeMind';
       $puburl = qualifiedUrl($formatter->url_prefix.'/'.$_dir);
  +    $button = $formatter->link_to("?action=freemind&value=$md5sum","FreeMind");
       return <<<APP
   <applet code="freemind.main.FreeMindApplet.class" codebase='$pubpath'
  -          archive="freemindbrowser.jar" width="100%" height="100%">
  +          archive="freemindbrowser.jar" width="100%" height="300px">
     <param name="type" value="application/x-java-applet">
     <param name="scriptable" value="true">
     <param name="modes" value="freemind.modes.browsemode.BrowseMode">
  @@ -143,6 +168,7 @@
     <!--          ^ Put the path to your map here  -->
     <param name="initial_mode" value="Browse">
   </applet>
  +$button
   APP;
   }
   
  
  
  


wkpark      2004/12/01 17:26:10

  Modified:    .        wiki.php
  Log:
  fix getModule() slightly
  
  Revision  Changes    Path
  1.197     +11 -16    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.196
  retrieving revision 1.197
  diff -u -r1.196 -r1.197
  --- wiki.php	16 Nov 2004 13:31:49 -0000	1.196
  +++ wiki.php	1 Dec 2004 08:26:10 -0000	1.197
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.196 2004/11/16 13:31:49 wkpark Exp $
  +// $Id: wiki.php,v 1.197 2004/12/01 08:26:10 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.196 $',1,-1);
  +$_revision = substr('$Revision: 1.197 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -48,9 +48,10 @@
   }
   
   function getModule($module,$name) {
  -  if (!class_exists($module.'_'.$name)) {
  +  $mod=$module.'_'.$name;
  +  if (!class_exists($mod))
       include_once('lib/'.strtolower($module).'.'.$name.'.php');
  -  }
  +  return $mod;
   }
   
   function getProcessor($pro_name) {
  @@ -838,8 +839,7 @@
   
       $log=$REMOTE_ADDR.';;'.$user->id.';;'.$comment;
       if ($this->version_class) {
  -      getModule('Version',$this->version_class);
  -      $class='Version_'.$this->version_class;
  +      $class=getModule('Version',$this->version_class);
         $version=new $class ($this);
         $ret=$version->ci($page->name,$log);
       }
  @@ -866,8 +866,7 @@
   
       $delete=@unlink($this->text_dir."/$keyname");
       if ($options['history'] && $this->version_class) {
  -      getModule('Version',$this->version_class);
  -      $class='Version_'.$this->version_class;
  +      $class=getModule('Version',$this->version_class);
         $version=new $class ($this);
         $version->delete($page->name);
       }
  @@ -901,8 +900,7 @@
   
       rename($okey,$nkey);
       if ($options['history'] && $this->version_class) {
  -      getModule('Version',$this->version_class);
  -      $class='Version_'.$this->version_class;
  +      $class=getModule('Version',$this->version_class);
         $version=new $class ($this);
         $version->rename($pagename,$new);
       }
  @@ -1193,8 +1191,7 @@
         else $rev=$this->rev;
   
         if ($DBInfo->version_class) {
  -        getModule('Version',$DBInfo->version_class);
  -        $class='Version_'.$DBInfo->version_class;
  +        $class=getModule('Version',$DBInfo->version_class);
           $version=new $class ($DBInfo);
           $out = $version->co($this->name,$rev);
           return $out;
  @@ -1253,8 +1250,7 @@
       global $DBInfo;
   
       if ($DBInfo->version_class) {
  -      getModule('Version',$DBInfo->version_class);
  -      $class='Version_'.$DBInfo->version_class;
  +      $class=getModule('Version',$DBInfo->version_class);
         $version=new $class ($DBInfo);
         $rev= $version->get_rev($this->name,$mtime,$last);
   
  @@ -1273,8 +1269,7 @@
       if (!$rev) return $info;
   
       if ($DBInfo->version_class) {
  -      getModule('Version',$DBInfo->version_class);
  -      $class='Version_'.$DBInfo->version_class;
  +      $class=getModule('Version',$DBInfo->version_class);
         $version=new $class ($DBInfo);
         $out= $version->rlog($this->name,$rev,$opt);
       } else {
  
  
  


wkpark      2004/12/01 17:27:33

  Modified:    .        monisetup.php
  Log:
  add 'db4' for $dba_type
  
  Revision  Changes    Path
  1.21      +4 -2      moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- monisetup.php	9 Nov 2004 06:53:57 -0000	1.20
  +++ monisetup.php	1 Dec 2004 08:27:33 -0000	1.21
  @@ -1,7 +1,7 @@
   <?php
   // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.20 2004/11/09 06:53:57 wkpark Exp $
  +// $Id: monisetup.php,v 1.21 2004/12/01 08:27:33 wkpark Exp $
   
   class MoniConfig {
     function MoniConfig($configfile="config.php") {
  @@ -29,7 +29,9 @@
       if (function_exists("dba_open")) {
         print '<h3>Check a dba configuration</h3>';
         $tempnam="/tmp/".time();
  -      if ($db=@dba_open($tempnam,"n","db3"))
  +      if ($db=@dba_open($tempnam,"n","db4"))
  +        $config['dba_type']="'db4'";
  +      else if ($db=@dba_open($tempnam,"n","db3"))
           $config['dba_type']="'db3'";
         else if ($db=@dba_open($tempnam,"n","db2"))
           $config['dba_type']="'db2'";
  
  
  


wkpark      2004/12/01 17:29:07

  Added:       css      numbering.js
  Log:
  added numbering feature imported from MoinMoin 1.3beta
  
  Revision  Changes    Path
  1.1                  moniwiki/css/numbering.js
  
  Index: numbering.js
  ===================================================================
  //
  // from the MoinMoin: http://moinmoin.wikiwikiweb.de
  //
  
  function isnumbered(obj) {
    return obj.childNodes.length && obj.firstChild.childNodes.length && obj.firstChild.firstChild.className == 'lineNumber';
  }
  function nformat(num,chrs,add) {
    var nlen = Math.max(0,chrs-(''+num).length), res = '';
    while (nlen>0) { res += ' '; nlen-- }
    return res+num+add;
  }
  function addnumber(did, nstart, nstep) {
    var c = document.getElementById(did), l = c.firstChild, n = 1;
    if (!isnumbered(c))
      if (typeof nstart == 'undefined') nstart = 1;
      if (typeof nstep  == 'undefined') nstep = 1;
      n = nstart;
      while (l != null) {
        if (l.tagName == 'SPAN') {
          var s = document.createElement('SPAN');
          s.className = 'lineNumber'
          s.appendChild(document.createTextNode(nformat(n,4,' ')));
          n += nstep;
          if (l.childNodes.length)
            l.insertBefore(s, l.firstChild)
          else
            l.appendChild(s)
        }
        l = l.nextSibling;
      }
    return false;
  }
  function remnumber(did) {
    var c = document.getElementById(did), l = c.firstChild;
    if (isnumbered(c))
      while (l != null) {
        if (l.tagName == 'SPAN' && l.firstChild.className == 'lineNumber') l.removeChild(l.firstChild);
        l = l.nextSibling;
      }
    return false;
  }
  function togglenumber(did, nstart, nstep) {
    var c = document.getElementById(did);
    if (isnumbered(c)) {
      remnumber(did);
    } else {
      addnumber(did,nstart,nstep);
    }
    return false;
  }
  
  
  


wkpark      2004/12/01 17:39:23

  Modified:    plugin/processor vim.php
  Log:
  fix option name: $use_linenumber -> $use_numbering
  
  Revision  Changes    Path
  1.22      +5 -4      moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- vim.php	1 Dec 2004 08:22:11 -0000	1.21
  +++ vim.php	1 Dec 2004 08:39:23 -0000	1.22
  @@ -6,7 +6,7 @@
   // Usage: {{{#!vim sh|c|sh|.. [number]
   // some codes
   // }}}
  -// $Id: vim.php,v 1.21 2004/12/01 08:22:11 wkpark Exp $
  +// $Id: vim.php,v 1.22 2004/12/01 08:39:23 wkpark Exp $
   
   function processor_vim($formatter,$value,$options) {
     global $DBInfo;
  @@ -38,12 +38,13 @@
   
     $uniq=md5($option.$src);
     $script='';
  -  if ($DBInfo->use_linenumber) {
  +  if ($DBInfo->use_numbering) {
  +    $button=_("Toggle line numbers");
       if (!$jsloaded) 
  -      $script='<script type="text/javascript" src="/wiki/css/linenumber.js"></script>';
  +      $script='<script type="text/javascript" src="/wiki/css/numbering.js"></script>';
       $script.="<script type=\"text/javascript\">
   document.write('<a href=\"#\" onClick=\"return togglenumber(\'PRE-$uniq\', 1, 1);\" \
  -                class=\"codenumbers\">Toggle line numbers<\/a>');
  +                class=\"codenumbers\">$button<\/a>');
   </script>";
     }
   
  
  
  


wkpark      2004/12/05 00:40:45

  Modified:    plugin   ImportUrl.php
  Log:
  fix fix_url():
   * email link
   * remove empty links
  
  Revision  Changes    Path
  1.8       +20 -7     moniwiki/plugin/ImportUrl.php
  
  Index: ImportUrl.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/ImportUrl.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- ImportUrl.php	24 Nov 2004 13:55:16 -0000	1.7
  +++ ImportUrl.php	4 Dec 2004 15:40:45 -0000	1.8
  @@ -5,7 +5,7 @@
   //
   // Usage: ?action=importurl&url=http://foo.bar.com/
   //
  -// $Id: ImportUrl.php,v 1.7 2004/11/24 13:55:16 wkpark Exp $
  +// $Id: ImportUrl.php,v 1.8 2004/12/04 15:40:45 wkpark Exp $
   
   function do_ImportUrl($formatter,$options) {
     $value=$options['url'];
  @@ -41,8 +41,8 @@
       } else if (preg_match('/^<\/pre>/i',$split)) {
         $state='';
         $pre.="}}}\n";
  -      $pre= str_replace(array("&quot;",'&lt;','&gt;','&amp;'),
  -                        array('"','<','>','&'),$pre);
  +      $pre= str_replace(array("&quot;",'&lt;','&gt;','&amp;','<b>','</b>'),
  +                        array('"','<','>','&','',''),$pre);
         $wiki.=$pre;
         $pre='';
         continue;
  @@ -75,11 +75,14 @@
       # remove id tag and perma links
       $out= preg_replace("/<a\s*id=[^>]+>[^<]*<\/a>/i","",$out);
       $out= preg_replace("/<a\s*[^>]*href=['\"]#[^>]+>[^<]*<\/a>/i","",$out);
  +    $out= preg_replace("/<a\s*[^>]*href=['\"]#[^>]+>[^<]*<\/a>/i","",$out);
       # remove ?WikiName links
       $out= preg_replace("/<a\s*[^>]*href=['\"][^>]+>\?<\/a>/i","",$out);
  +    # remove hrefs with a blank link
  +    $out= preg_replace("/<a\s*[^>]*href=['\"][^>]+><\/a>/i","",$out);
       # url
       $out= preg_replace("/<a\s*[^>]*href=['\"]([^'\"]+)['\"][^>]*>([^<]+)<\/a>/ie",
  -      "'['.fix_url('$value','\\1').'\\2]'",$out);
  +      "'['.fix_url('$value','\\1','\\2').'\\2]'",$out);
       # heading
       $out= preg_replace("/<h(\d)[^>]*>(?:\d+\.?\d*)*([^<]+)<\/h\d>/ie",
         "str_repeat('=', \\1).' \\2 '.str_repeat('=', \\1)",$out);
  @@ -123,13 +126,17 @@
     return $path;
   }
   
  -function fix_url($base_url,$url) {
  +function fix_url($base_url,$url,$text='') {
     static $path=array();
   
  +  if ($url== $text) return '';
     if (!$base_url) $path=array(); // reset
     else if (!count($path)) $path=prep_url($base_url);
   
  -  if (substr($url,0,7)=='mailto:') return $url;
  +  if (substr($url,0,7)=='mailto:') {
  +    if (substr($url,7) == $text) return '';
  +    return $url.' ';
  +  }
   
     $p=strpos($url,'://');
     if ($p !== false) {
  @@ -139,7 +146,13 @@
   
     if ($url[0] == '/') {
       if (substr($url,1,5)=='imgs/') return '';
  -    else if (substr($url,1,8)=='wiki.php') return '';
  +    else if (substr($url,1,8)=='wiki.php') {
  +      preg_match('/value=(.*)\.(gif|png|jpeg|jpg)$/',$url,$m);
  +      if ($m[2])
  +        return 'attachment:'.$m[1].'.'.$m[2];
  +
  +      return '';
  +    }
       return $path[0].$url.' ';
     } else if (preg_match('@^(\./)+@',$url)) {
       // base_url: http://foo.bar.com/hello/world/
  
  
  


wkpark      2004/12/05 03:27:46

  Modified:    plugin/processor xsltproc.php
  Log:
  fix minor bugs and check 'refresh'
  
  Revision  Changes    Path
  1.5       +4 -4      moniwiki/plugin/processor/xsltproc.php
  
  Index: xsltproc.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/xsltproc.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- xsltproc.php	8 Apr 2004 18:23:44 -0000	1.4
  +++ xsltproc.php	4 Dec 2004 18:27:46 -0000	1.5
  @@ -6,7 +6,7 @@
   // Usage: {{{#!xsltproc
   // xml codes
   // }}}
  -// $Id: xsltproc.php,v 1.4 2004/04/08 18:23:44 wkpark Exp $
  +// $Id: xsltproc.php,v 1.5 2004/12/04 18:27:46 wkpark Exp $
   
   function processor_xsltproc($formatter,$value) {
     global $DBInfo;
  @@ -21,7 +21,7 @@
   
     $cache= new Cache_text("docbook");
   
  -  if (!$formatter->preview and $cache->exists($pagename) and $cache->mtime($pagename) > $formatter->page->mtime())
  +  if (!$formatter->preview and !$formatter->refresh and $cache->exists($pagename) and $cache->mtime($pagename) > $formatter->page->mtime())
       return $cache->fetch($pagename);
   
     list($line,$body)=explode("\n",$value,2);
  @@ -60,7 +60,7 @@
       return "<pre class='code'>$src\n</pre>\n";
     }
   
  -  if (function_exists ("iconv")) {
  +  if (function_exists ("iconv") and strtoupper($DBInfo->charset) != 'UTF-8') {
       $new=iconv('UTF-8',$DBInfo->charset,$html);
       if ($new) $html=$new;
     }
  @@ -71,5 +71,5 @@
     return $html;
   }
   
  -// vim:et:ts=2:
  +// vim:et:sts=2:sw=2
   ?>
  
  
  


advanced    2004/12/05 05:29:35

  Modified:    .        wiki.php
  Log:
  Fixed bug #300620 (addLogEntry() bug).
  
  Revision  Changes    Path
  1.198     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.197
  retrieving revision 1.198
  diff -u -r1.197 -r1.198
  --- wiki.php	1 Dec 2004 08:26:10 -0000	1.197
  +++ wiki.php	4 Dec 2004 20:29:35 -0000	1.198
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.197 2004/12/01 08:26:10 wkpark Exp $
  +// $Id: wiki.php,v 1.198 2004/12/04 20:29:35 advanced Exp $
   //
  -$_revision = substr('$Revision: 1.197 $',1,-1);
  +$_revision = substr('$Revision: 1.198 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -744,7 +744,7 @@
       $time= time();
       if ($this->use_hostname) $host= gethostbyaddr($remote_name);
       else $host= $remote_name;
  -    $msg="$page_name\t$remote_name\t$time\t$host\t$user->id\t$comment\t$action\n";
  +    $msg="$page_name\t$remote_name\t$time\t$host\t$user->id\t\ $comment\ \t$action\n";
       fwrite($fp_editlog, $msg);
       fclose($fp_editlog);
     }
  
  
  


wkpark      2004/12/09 07:40:06

  Modified:    plugin   UploadFile.php
  Log:
  fix mod_mime vulnerability in the UploadFile macro
  
  Revision  Changes    Path
  1.13      +36 -5     moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- UploadFile.php	24 Nov 2004 15:30:30 -0000	1.12
  +++ UploadFile.php	8 Dec 2004 22:40:06 -0000	1.13
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.12 2004/11/24 15:30:30 wkpark Exp $
  +// $Id: UploadFile.php,v 1.13 2004/12/08 22:40:06 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -53,13 +53,17 @@
     $comment.="File ";
   
     $log_entry='';
  +
  +  $protected_exts=$DBInfo->pds_protected ? $DBInfo->pds_protected :"pl|cgi|php";
  +  $protected=explode('|',$protected_exts);
  +
     for ($j=0;$j<$count;$j++) {
   
     # replace space and ':' strtr()
     $upfilename=str_replace(" ","_",$files['upfile']['name'][$j]);
     $upfilename=str_replace(":","_",$upfilename);
   
  -  preg_match("/(.*)\.([a-z0-9]{1,4})$/i",$upfilename,$fname);
  +  preg_match("/^(.*)\.([a-z0-9]{1,4})$/i",$upfilename,$fname);
   
     if (!$upfilename) continue;
     else if ($upfilename) $uploaded++;
  @@ -72,6 +76,20 @@
     if (!preg_match("/(".$pds_exts.")$/i",$fname[2])) {
        $msg.=sprintf(_("%s is not allowed to upload"),$upfilename)."<br/>\n";
        continue;
  +  } else {
  +    # check extra extentions for the mod_mime
  +    $exts=explode('.',$fname[1]);
  +    $ok=0;
  +    for ($i=1;$i<sizeof($exts);$i++) {
  +      if (in_array($exts[$i],$protected)) {
  +        $exts[$i].='s';
  +        $ok=1;
  +      }
  +    }
  +    if ($ok) {
  +      $fname[1]=implode('.',$exts);
  +      $upfilename=$fname[1].'.'.$fname[2];
  +    }
     }
   
     $file_path= $newfile_path = $dir."/".$upfilename;
  @@ -81,7 +99,20 @@
       $temp=explode("/",stripslashes($options['rename'][$j]));
       $upfilename= $temp[count($temp)-1];
   
  -    preg_match("/(.*)\.([a-z0-9]{1,4})$/i",$upfilename,$tname);
  +    preg_match("/^(.*)\.([a-z0-9]{1,4})$/i",$upfilename,$tname);
  +    $exts=explode('.',$tname[1]);
  +    $ok=0;
  +    for ($i=1;$i<sizeof($exts);$i++) {
  +      if (in_array($exts[$i],$protected)) {
  +        $exts[$i].='s';
  +        $ok=1;
  +      }
  +    }
  +    if ($ok) {
  +      $tname[1]=implode('.',$exts);
  +      $upfilename=$tname[1].'.'.$fname[2];
  +    }
  +    
       # do not change the extention of the file.
       $fname[1]=$tname[1];
       $newfile_path = $dir."/".$tname[1].".$fname[2]";
  @@ -117,7 +148,7 @@
   
     $comment.="'$upfilename' ";
   
  -  $title.=sprintf(_("File \"%s\" is uploaded successfully"),$upfilename).'<br />';
  +  $title.=sprintf(_("File \"%s\" is uploaded successfully"),$upfilename);
     if ($key == 'UploadFile') {
       $msg.= "<ins>Uploads:$upfilename</ins> or<br />";
       $msg.= "<ins>attachment:/$upfilename</ins><br />";
  @@ -147,7 +178,7 @@
       $formatter->send_title($title,"",$options);
       print $msg;
     } else {
  -    $msg=$title.$msg;
  +    $msg=$title.'<br />'.$msg;
       $title=sprintf(_("Files are uploaded successfully"),$upfilename);
       $formatter->send_title($title,"",$options);
       print $msg;
  
  
  


wkpark      2004/12/09 07:43:54

  Modified:    .        Tag: B_1_0_9 wikilib.php
  Log:
  fix TableOfContests() macro
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.122.2.3 +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.122.2.2
  retrieving revision 1.122.2.3
  diff -u -r1.122.2.2 -r1.122.2.3
  --- wikilib.php	22 Nov 2004 14:13:11 -0000	1.122.2.2
  +++ wikilib.php	8 Dec 2004 22:43:54 -0000	1.122.2.3
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.122.2.2 2004/11/22 14:13:11 wkpark Exp $
  +// $Id: wikilib.php,v 1.122.2.3 2004/12/08 22:43:54 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1642,7 +1642,7 @@
    } else {
      $body=$formatter->page->get_raw_body();
    }
  - #$body=preg_replace("/(\{\{\{$)(.*)(\}\}\})/ms",'',$body);
  + $body=preg_replace("/\{\{\{.+?\}\}\}/s",'',$body);
    $lines=explode("\n",$body);
    foreach ($lines as $line) {
      $line=preg_replace("/\n$/", "", $line); # strip \n
  
  
  


wkpark      2004/12/09 07:45:28

  Modified:    plugin/processor Tag: B_1_0_9 vim.php
  Log:
  check $formatter->preview
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.20.2.1  +2 -2      moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.20
  retrieving revision 1.20.2.1
  diff -u -r1.20 -r1.20.2.1
  --- vim.php	17 Oct 2004 06:38:18 -0000	1.20
  +++ vim.php	8 Dec 2004 22:45:28 -0000	1.20.2.1
  @@ -6,7 +6,7 @@
   // Usage: {{{#!vim sh|c|sh|.. [number]
   // some codes
   // }}}
  -// $Id: vim.php,v 1.20 2004/10/17 06:38:18 pyrasis Exp $
  +// $Id: vim.php,v 1.20.2.1 2004/12/08 22:45:28 wkpark Exp $
   
   function processor_vim($formatter,$value,$options) {
     global $DBInfo;
  @@ -41,7 +41,7 @@
       umask(022);
     }
   
  -  if (file_exists($cache_dir."/$uniq".".html") && !$formatter->refresh) {
  +  if (file_exists($cache_dir."/$uniq".".html") && !$formatter->preview && !$formatter->refresh) {
       $out = "";
       $fp=fopen($cache_dir."/$uniq".".html","r");
       while (!feof($fp)) $out .= fread($fp, 1024);
  
  
  


wkpark      2004/12/09 08:00:23

  Modified:    plugin   Tag: B_1_0_9 UploadFile.php Attachment.php
                        BabelFish.php
  Log:
  merge from the main line to this branch
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.7.2.2   +39 -7     moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.7.2.1
  retrieving revision 1.7.2.2
  diff -u -r1.7.2.1 -r1.7.2.2
  --- UploadFile.php	8 Nov 2004 13:45:34 -0000	1.7.2.1
  +++ UploadFile.php	8 Dec 2004 23:00:23 -0000	1.7.2.2
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.7.2.1 2004/11/08 13:45:34 wkpark Exp $
  +// $Id: UploadFile.php,v 1.7.2.2 2004/12/08 23:00:23 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -53,13 +53,17 @@
     $comment.="File ";
   
     $log_entry='';
  +
  +  $protected_exts=$DBInfo->pds_protected ? $DBInfo->pds_protected :"pl|cgi|php";
  +  $protected=explode('|',$protected_exts);
  +
     for ($j=0;$j<$count;$j++) {
   
     # replace space and ':' strtr()
     $upfilename=str_replace(" ","_",$files['upfile']['name'][$j]);
     $upfilename=str_replace(":","_",$upfilename);
   
  -  preg_match("/(.*)\.([a-z0-9]{1,4})$/i",$upfilename,$fname);
  +  preg_match("/^(.*)\.([a-z0-9]{1,4})$/i",$upfilename,$fname);
   
     if (!$upfilename) continue;
     else if ($upfilename) $uploaded++;
  @@ -70,8 +74,22 @@
     else
        $pds_exts="png|jpg|jpeg|gif|mp3|zip|tgz|gz|txt|css|exe|hwp";
     if (!preg_match("/(".$pds_exts.")$/i",$fname[2])) {
  -     $msg.=sprintf(_("%s does not allowed to upload"),$upfilename)."<br/>\n";
  +     $msg.=sprintf(_("%s is not allowed to upload"),$upfilename)."<br/>\n";
        continue;
  +  } else {
  +    # check extra extentions for the mod_mime
  +    $exts=explode('.',$fname[1]);
  +    $ok=0;
  +    for ($i=1;$i<sizeof($exts);$i++) {
  +      if (in_array($exts[$i],$protected)) {
  +        $exts[$i].='s';
  +        $ok=1;
  +      }
  +    }
  +    if ($ok) {
  +      $fname[1]=implode('.',$exts);
  +      $upfilename=$fname[1].'.'.$fname[2];
  +    }
     }
   
     $file_path= $newfile_path = $dir."/".$upfilename;
  @@ -81,7 +99,20 @@
       $temp=explode("/",stripslashes($options['rename'][$j]));
       $upfilename= $temp[count($temp)-1];
   
  -    preg_match("/(.*)\.([a-z0-9]{1,4})$/i",$upfilename,$tname);
  +    preg_match("/^(.*)\.([a-z0-9]{1,4})$/i",$upfilename,$tname);
  +    $exts=explode('.',$tname[1]);
  +    $ok=0;
  +    for ($i=1;$i<sizeof($exts);$i++) {
  +      if (in_array($exts[$i],$protected)) {
  +        $exts[$i].='s';
  +        $ok=1;
  +      }
  +    }
  +    if ($ok) {
  +      $tname[1]=implode('.',$exts);
  +      $upfilename=$tname[1].'.'.$fname[2];
  +    }
  +    
       # do not change the extention of the file.
       $fname[1]=$tname[1];
       $newfile_path = $dir."/".$tname[1].".$fname[2]";
  @@ -100,7 +131,8 @@
   
     if ($options['replace'][$j]) {
       // backup
  -    if ($newfile_path) $test=@copy($file_path, $newfile_path);
  +    if ($newfile_path != $file_path)
  +      $test=@copy($file_path, $newfile_path);
       // replace
       $test=@copy($upfile, $file_path);
       $upfilename=$filename;
  @@ -116,7 +148,7 @@
   
     $comment.="'$upfilename' ";
   
  -  $title.=sprintf(_("File \"%s\" is uploaded successfully"),$upfilename).'<br />';
  +  $title.=sprintf(_("File \"%s\" is uploaded successfully"),$upfilename);
     if ($key == 'UploadFile') {
       $msg.= "<ins>Uploads:$upfilename</ins> or<br />";
       $msg.= "<ins>attachment:/$upfilename</ins><br />";
  @@ -146,7 +178,7 @@
       $formatter->send_title($title,"",$options);
       print $msg;
     } else {
  -    $msg=$title.$msg;
  +    $msg=$title.'<br />'.$msg;
       $title=sprintf(_("Files are uploaded successfully"),$upfilename);
       $formatter->send_title($title,"",$options);
       print $msg;
  
  
  
  1.9.2.1   +3 -3      moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.9
  retrieving revision 1.9.2.1
  diff -u -r1.9 -r1.9.2.1
  --- Attachment.php	17 Oct 2004 16:12:07 -0000	1.9
  +++ Attachment.php	8 Dec 2004 23:00:23 -0000	1.9.2.1
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.9 2004/10/17 16:12:07 wkpark Exp $
  +// $Id: Attachment.php,v 1.9.2.1 2004/12/08 23:00:23 wkpark Exp $
   
   function macro_Attachment($formatter,$value) {
     global $DBInfo;
  @@ -41,7 +41,7 @@
     if (($p=strpos($value,':')) !== false or ($p=strpos($value,'/')) !== false) {
       $subpage=substr($value,0,$p);
       $file=substr($value,$p+1);
  -    $value=$subpage.':'.$file; # normalize page arg
  +    $value=$subpage.'/'.$file; # normalize page arg
       if ($subpage and $DBInfo->hasPage($subpage)) {
         $pagename=$subpage;
         $key=$DBInfo->pageToKeyname($subpage);
  @@ -68,7 +68,7 @@
         if ($key != $pagename)
           $url=$formatter->link_url(_urlencode($pagename),"?action=download&amp;value=$value");
         else
  -        $url=$DBInfo->url_prefix."/".$upload_file;
  +        $url=$DBInfo->url_prefix."/"._urlencode($upload_file);
         return "<span class=\"imgAttach\"><img src='$url' alt='$file' $attr/></span>";
       } else {
   
  
  
  
  1.6.2.1   +2 -2      moniwiki/plugin/BabelFish.php
  
  Index: BabelFish.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BabelFish.php,v
  retrieving revision 1.6
  retrieving revision 1.6.2.1
  diff -u -r1.6 -r1.6.2.1
  --- BabelFish.php	25 Aug 2004 15:17:35 -0000	1.6
  +++ BabelFish.php	8 Dec 2004 23:00:23 -0000	1.6.2.1
  @@ -5,7 +5,7 @@
   //
   // Usage: [[BabelFish]]
   //
  -// $Id: BabelFish.php,v 1.6 2004/08/25 15:17:35 wkpark Exp $
  +// $Id: BabelFish.php,v 1.6.2.1 2004/12/08 23:00:23 wkpark Exp $
   
   #<script language="JavaScript1.2" src="http://www.altavista.com/r?entr"></script>
   function macro_BabelFish($formatter,$value,$ret=array()) {
  @@ -45,7 +45,7 @@
     }
     $goto=$TR.'&amp;url='.$URL;
     return <<<EOF
  -<img src='$formatter->imgs_dir_interwiki$from-16.png' /> <a href="$goto"><img border='0' src='$formatter->imgs_dir/plugin/babelfish.gif' title='$msg' alt='BabelFish@altavista' /></a><img src='$formatter->imgs_dir_interwiki$to-16.png' />
  +<img src='$formatter->imgs_dir_interwiki$from-16.png' alt="$from"/> <a href="$goto"><img border='0' src='$formatter->imgs_dir/plugin/babelfish.gif' title='$msg' alt='BabelFish@altavista' /></a><img src='$formatter->imgs_dir_interwiki$to-16.png' alt="$to"/>
   EOF;
   
   }
  
  
  


wkpark      2004/12/09 08:02:40

  Modified:    plugin   Tag: B_1_0_9 rename.php
  Log:
  merge from main line to this branch
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.6.2.2   +2 -2      moniwiki/plugin/rename.php
  
  Index: rename.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rename.php,v
  retrieving revision 1.6.2.1
  retrieving revision 1.6.2.2
  diff -u -r1.6.2.1 -r1.6.2.2
  --- rename.php	15 Nov 2004 08:26:14 -0000	1.6.2.1
  +++ rename.php	8 Dec 2004 23:02:40 -0000	1.6.2.2
  @@ -3,17 +3,17 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a rename action plugin for the MoniWiki
   //
  -// $Id: rename.php,v 1.6.2.1 2004/11/15 08:26:14 wkpark Exp $
  +// $Id: rename.php,v 1.6.2.2 2004/12/08 23:02:40 wkpark Exp $
   
   function do_post_rename($formatter,$options) {
     global $DBInfo;
     
     if (isset($options['name']) and trim($options['name'])) {
  -    $new_encodedname=_rawurlencode($options['name']);
       if ($DBInfo->hasPage($options['page']) && !$DBInfo->hasPage($options['name'])) {
         $title = sprintf(_("\"%s\" is renamed !"), $options['page']);
         $formatter->send_header("",$options);
         $formatter->send_title($title,"",$options);
  +      $new_encodedname=_rawurlencode($options['name']);
         if ($options['pagenames'] and is_array($options['pagenames'])) {
           $regex=preg_quote($options['page']);
           $options['minor']=1;
  
  
  


wkpark      2004/12/09 19:11:20

  Modified:    plugin   UploadFile.php
  Log:
  fix last changes
  
  Revision  Changes    Path
  1.14      +3 -3      moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- UploadFile.php	8 Dec 2004 22:40:06 -0000	1.13
  +++ UploadFile.php	9 Dec 2004 10:11:20 -0000	1.14
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.13 2004/12/08 22:40:06 wkpark Exp $
  +// $Id: UploadFile.php,v 1.14 2004/12/09 10:11:20 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -81,7 +81,7 @@
       $exts=explode('.',$fname[1]);
       $ok=0;
       for ($i=1;$i<sizeof($exts);$i++) {
  -      if (in_array($exts[$i],$protected)) {
  +      if (in_array(strtolower($exts[$i]),$protected)) {
           $exts[$i].='s';
           $ok=1;
         }
  @@ -103,7 +103,7 @@
       $exts=explode('.',$tname[1]);
       $ok=0;
       for ($i=1;$i<sizeof($exts);$i++) {
  -      if (in_array($exts[$i],$protected)) {
  +      if (in_array(strtolower($exts[$i]),$protected)) {
           $exts[$i].='s';
           $ok=1;
         }
  
  
  


wkpark      2004/12/09 19:12:16

  Modified:    plugin   Tag: B_1_0_9 UploadFile.php
  Log:
  fix lastchanges
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.7.2.3   +3 -3      moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.7.2.2
  retrieving revision 1.7.2.3
  diff -u -r1.7.2.2 -r1.7.2.3
  --- UploadFile.php	8 Dec 2004 23:00:23 -0000	1.7.2.2
  +++ UploadFile.php	9 Dec 2004 10:12:16 -0000	1.7.2.3
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.7.2.2 2004/12/08 23:00:23 wkpark Exp $
  +// $Id: UploadFile.php,v 1.7.2.3 2004/12/09 10:12:16 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -81,7 +81,7 @@
       $exts=explode('.',$fname[1]);
       $ok=0;
       for ($i=1;$i<sizeof($exts);$i++) {
  -      if (in_array($exts[$i],$protected)) {
  +      if (in_array(strtolower($exts[$i]),$protected)) {
           $exts[$i].='s';
           $ok=1;
         }
  @@ -103,7 +103,7 @@
       $exts=explode('.',$tname[1]);
       $ok=0;
       for ($i=1;$i<sizeof($exts);$i++) {
  -      if (in_array($exts[$i],$protected)) {
  +      if (in_array(strtolower($exts[$i]),$protected)) {
           $exts[$i].='s';
           $ok=1;
         }
  
  
  


wkpark      2004/12/10 22:18:16

  Modified:    plugin   UploadFile.php
  Log:
  fix for php5 error: make the options['rename'] as a array
  
  Revision  Changes    Path
  1.15      +2 -1      moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- UploadFile.php	9 Dec 2004 10:11:20 -0000	1.14
  +++ UploadFile.php	10 Dec 2004 13:18:16 -0000	1.15
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.14 2004/12/09 10:11:20 wkpark Exp $
  +// $Id: UploadFile.php,v 1.15 2004/12/10 13:18:16 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -14,6 +14,7 @@
            $options['multiform']:sizeof($_FILES['upfile']['name']);
         $count=$options['multiform'];
         $files=&$_FILES;
  +      if (!isset($options['rename'])) $options['rename']=array();
       } else {
         $count=1;
         $files['upfile']['name'][]=&$_FILES['upfile']['name'];
  
  
  


wkpark      2004/12/10 22:27:58

  Modified:    plugin   rss.php
  Log:
  override $charset for the PHP5
  
  Revision  Changes    Path
  1.5       +4 -2      moniwiki/plugin/rss.php
  
  Index: rss.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rss.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- rss.php	21 Oct 2004 08:27:01 -0000	1.4
  +++ rss.php	10 Dec 2004 13:27:58 -0000	1.5
  @@ -1,7 +1,7 @@
   <?php
   // from http://www.sitepoint.com/examples/phpxml/sitepointcover-oo.php.txt
   // Public Domain ?
  -// $Id: rss.php,v 1.4 2004/10/21 08:27:01 wkpark Exp $
  +// $Id: rss.php,v 1.5 2004/12/10 13:27:58 wkpark Exp $
   class WikiRSSParser {
   
      var $insideitem = false;
  @@ -115,6 +115,8 @@
     preg_match("/\sencoding=?(\"|')([^'\"]+)/",$line,$match);
     if ($match) $charset=strtoupper($match[2]);
     else $charset='UTF-8';
  +  # override $charset for php5
  +  if ((int)phpversion() >= 5) $charset='UTF-8';
   
     ob_start();
     $ret= xml_parse($xml_parser, $xml_data);
  @@ -128,7 +130,7 @@
     xml_parser_free($xml_parser);
   
     #  if (strtolower(str_replace("-","",$options['oe'])) == 'euckr')
  -  if (function_exists('iconv') and strtoupper($DBInfo->charset) != $charset)
  +  if (function_exists('iconv') and strtoupper($DBInfo->charset) != $charset) {
       $new=iconv($charset,$DBInfo->charset,$out);
     if ($new) return $new;
   
  
  
  


wkpark      2004/12/10 22:32:44

  Modified:    plugin   rss.php
  Log:
  oops! fix last changes
  
  Revision  Changes    Path
  1.6       +3 -3      moniwiki/plugin/rss.php
  
  Index: rss.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rss.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- rss.php	10 Dec 2004 13:27:58 -0000	1.5
  +++ rss.php	10 Dec 2004 13:32:44 -0000	1.6
  @@ -1,7 +1,7 @@
   <?php
   // from http://www.sitepoint.com/examples/phpxml/sitepointcover-oo.php.txt
   // Public Domain ?
  -// $Id: rss.php,v 1.5 2004/12/10 13:27:58 wkpark Exp $
  +// $Id: rss.php,v 1.6 2004/12/10 13:32:44 wkpark Exp $
   class WikiRSSParser {
   
      var $insideitem = false;
  @@ -101,7 +101,7 @@
     $cache= new Cache_text("rss");
     # reflash rss each 7200 second (60*60*2)
     if (!$cache->exists($key) or (time() > $cache->mtime($key) + 7200 )) {
  -    $fp = fopen("$value","r");
  +    $fp = @fopen("$value","r");
       if (!$fp)
         return ("[[RSS(ERR: not a valid URL! $value)]]");
   
  @@ -130,7 +130,7 @@
     xml_parser_free($xml_parser);
   
     #  if (strtolower(str_replace("-","",$options['oe'])) == 'euckr')
  -  if (function_exists('iconv') and strtoupper($DBInfo->charset) != $charset) {
  +  if (function_exists('iconv') and strtoupper($DBInfo->charset) != $charset)
       $new=iconv($charset,$DBInfo->charset,$out);
     if ($new) return $new;
   
  
  
  


wkpark      2004/12/11 00:33:19

  Modified:    plugin   UploadFile.php
  Log:
  fix some messages
  
  Revision  Changes    Path
  1.16      +3 -2      moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- UploadFile.php	10 Dec 2004 13:18:16 -0000	1.15
  +++ UploadFile.php	10 Dec 2004 15:33:19 -0000	1.16
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.15 2004/12/10 13:18:16 wkpark Exp $
  +// $Id: UploadFile.php,v 1.16 2004/12/10 15:33:19 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -149,7 +149,8 @@
   
     $comment.="'$upfilename' ";
   
  -  $title.=sprintf(_("File \"%s\" is uploaded successfully"),$upfilename);
  +  $title.=($title ? '<br />':'').
  +    sprintf(_("File \"%s\" is uploaded successfully"),$upfilename);
     if ($key == 'UploadFile') {
       $msg.= "<ins>Uploads:$upfilename</ins> or<br />";
       $msg.= "<ins>attachment:/$upfilename</ins><br />";
  
  
  


wkpark      2004/12/11 00:59:22

  Modified:    plugin   Attachment.php UploadedFiles.php
  Log:
  add $force_download, $download_action options
  
  Revision  Changes    Path
  1.11      +10 -8     moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- Attachment.php	1 Dec 2004 08:20:23 -0000	1.10
  +++ Attachment.php	10 Dec 2004 15:59:22 -0000	1.11
  @@ -5,13 +5,16 @@
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.10 2004/12/01 08:20:23 wkpark Exp $
  +// $Id: Attachment.php,v 1.11 2004/12/10 15:59:22 wkpark Exp $
   
   function macro_Attachment($formatter,$value) {
     global $DBInfo;
   
     $attr='';
  -  $myaction='download';
  +  if ($DBInfo->force_download) $force_download=1;
  +  if ($DBInfo->download_action) $mydownload=$DBInfo->download_action;
  +  else $mydownload='download';
  +
     $text='';
     if (($p=strpos($value,' ')) !== false) { // XXX for [attachment:my.ext hello]
       $text=substr($value,$p);
  @@ -24,7 +27,7 @@
       $value=substr($value,0,$dummy);
       foreach ($attrs as $name=>$val) {
         if ($name=='action')
  -        $myaction=$val;
  +        $mydownload=$val;
         else
           $attr.="$name=\"$val\" ";
       }
  @@ -63,17 +66,16 @@
     if (!$text) $text=$file;
   
     if (file_exists($upload_file)) {
  -    if (preg_match("/\.(png|gif|jpeg|jpg)$/i",$upload_file)
  -       and $myaction == 'download') {
  -      if ($key != $pagename)
  -        $url=$formatter->link_url(_urlencode($pagename),"?action=download&amp;value=$value");
  +    if (preg_match("/\.(png|gif|jpeg|jpg)$/i",$upload_file)) {
  +      if ($key != $pagename || $force_download)
  +        $url=$formatter->link_url(_urlencode($pagename),"?action=$mydownload&amp;value=$value");
         else
           $url=$DBInfo->url_prefix."/"._urlencode($upload_file);
         return "<span class=\"imgAttach\"><img src='$url' alt='$file' $attr/></span>";
       } else {
   
         return "<span class=\"attach\"><img align='middle' src='$DBInfo->imgs_dir_interwiki".'uploads-16.png\' />'.
  -        $formatter->link_tag(_urlencode($pagename),"?action=$myaction&amp;value=$value",$text).'</span>';
  +        $formatter->link_tag(_urlencode($pagename),"?action=$mydownload&amp;value=$value",$text).'</span>';
       }
     }
     if ($pagename == $formatter->page->name)
  
  
  
  1.7       +10 -7     moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- UploadedFiles.php	2 Oct 2004 02:44:36 -0000	1.6
  +++ UploadedFiles.php	10 Dec 2004 15:59:22 -0000	1.7
  @@ -4,7 +4,7 @@
   // a UploadedFiles plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: UploadedFiles.php,v 1.6 2004/10/02 02:44:36 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.7 2004/12/10 15:59:22 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     $list=macro_UploadedFiles($formatter,$options['page'],$options);
  @@ -21,10 +21,12 @@
   function macro_UploadedFiles($formatter,$value="",$options="") {
      global $DBInfo;
   
  -   $download='download';
  +   if ($DBInfo->download_action) $mydownload=$DBInfo->download_action;
  +   else $mydownload='download';
      $checkbox='checkbox';
      $needle="//";
  -   if ($options['download']) $download=$options['download'];
  +   if ($options['download'] || $DBInfo->force_download)
  +     $force_download=1;
      if ($options['needle']) $needle=$options['needle'];
      if ($options['checkbox']) $checkbox=$options['checkbox'];
   
  @@ -33,14 +35,14 @@
   
      if ($value and $value!='UploadFile') {
         $key=$DBInfo->pageToKeyname($value);
  -      if ($options['download'] or $key != $value)
  -        $prefix=$formatter->link_url(_rawurlencode($value),"?action=$download&amp;value=");
  +      if ($force_download or $key != $value)
  +        $prefix=$formatter->link_url(_rawurlencode($value),"?action=$mydownload&amp;value=");
         $dir=$DBInfo->upload_dir."/$key";
      } else {
         $value=$formatter->page->urlname;
         $key=$DBInfo->pageToKeyname($formatter->page->name);
  -      if ($options['download'] or $key != $formatter->page->name)
  -        $prefix=$formatter->link_url($formatter->page->urlname,"?action=$download&amp;value=");
  +      if ($force_download or $key != $formatter->page->name)
  +        $prefix=$formatter->link_url($formatter->page->urlname,"?action=$mydownload&amp;value=");
         $dir=$DBInfo->upload_dir."/$key";
      }
      if ($value!='UploadFile' and file_exists($dir))
  @@ -48,6 +50,7 @@
      else {
         $key='';
         $value='UploadFile';
  +      $prefix.= ($prefix ? '/':'');
         $dir=$DBInfo->upload_dir;
         $handle= opendir($dir);
      }
  
  
  


wkpark      2004/12/11 01:03:10

  Modified:    plugin/processor vim.php
  Log:
  minor fixes
  
  Revision  Changes    Path
  1.23      +6 -6      moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- vim.php	1 Dec 2004 08:39:23 -0000	1.22
  +++ vim.php	10 Dec 2004 16:03:10 -0000	1.23
  @@ -6,7 +6,7 @@
   // Usage: {{{#!vim sh|c|sh|.. [number]
   // some codes
   // }}}
  -// $Id: vim.php,v 1.22 2004/12/01 08:39:23 wkpark Exp $
  +// $Id: vim.php,v 1.23 2004/12/10 16:03:10 wkpark Exp $
   
   function processor_vim($formatter,$value,$options) {
     global $DBInfo;
  @@ -41,7 +41,7 @@
     if ($DBInfo->use_numbering) {
       $button=_("Toggle line numbers");
       if (!$jsloaded) 
  -      $script='<script type="text/javascript" src="/wiki/css/numbering.js"></script>';
  +      $script='<script type="text/javascript" src="'.$DBInfo->url_prefix.'/css/numbering.js"></script>';
       $script.="<script type=\"text/javascript\">
   document.write('<a href=\"#\" onClick=\"return togglenumber(\'PRE-$uniq\', 1, 1);\" \
                   class=\"codenumbers\">$button<\/a>');
  @@ -61,7 +61,7 @@
       $out = "";
       $fp=fopen($cache_dir."/$uniq".".html","r");
       while (!feof($fp)) $out .= fread($fp, 1024);
  -    return $script.$stag.$out.$etag;
  +    return '<div>'.$script.$out.'</div>';
       #return join('',file($cache_dir."/$uniq".".html"));
     }
   
  @@ -70,7 +70,7 @@
       if ($lines[sizeof($lines)-1]=="") array_pop($lines);
       $src="<span class=\"line\">".
         implode("</span>\n<span class=\"line\">",$lines)."</span>";
  -    return $script."<pre class='wiki' id='PRE-$uniq'>\n$src</pre>\n";
  +    return '<div>'.$script."<pre class='wiki' id='PRE-$uniq'>\n$src</pre></div>\n";
     }
   
     if(getenv("OS")=="Windows_NT") {
  @@ -118,9 +118,9 @@
     $out="<span class=\"line\">".
       implode("</span>\n<span class=\"line\">",$lines)."</span>\n";
     $fp=fopen($cache_dir."/$uniq".".html","w");
  -  fwrite($fp,$out);
  +  fwrite($fp,$stag.$out.$etag);
     fclose($fp);
  -  return $script.$stag.$out.$etag;
  +  return '<div>'.$script.$stag.$out.$etag.'</div>';
   }
   
   // vim:et:sts=2:
  
  
  


wkpark      2004/12/11 01:08:22

  Modified:    plugin/processor freemind.php
  Log:
  use compat.php for PHP compatibility
  
  Revision  Changes    Path
  1.3       +7 -3      moniwiki/plugin/processor/freemind.php
  
  Index: freemind.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/freemind.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- freemind.php	1 Dec 2004 08:24:23 -0000	1.2
  +++ freemind.php	10 Dec 2004 16:08:22 -0000	1.3
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a FreeMind plugin for the MoniWiki
   //
  -// $Id: freemind.php,v 1.2 2004/12/01 08:24:23 wkpark Exp $
  +// $Id: freemind.php,v 1.3 2004/12/10 16:08:22 wkpark Exp $
   
   function _interwiki_repl($formatter,$url) {
       global $DBInfo;
  @@ -70,7 +70,6 @@
       $md5sum=md5($value);
       $map=$md5sum.'.mm';
       if ($formatter->refresh || $formatter->preview || !file_exists($_dir.'/'.$map)) {
  -        include_once('lib/compat.php');
           $depth=$odepth=0;
           $dep=$odep=0;
           $out='<map version="0.7.1">'."\n";
  @@ -147,7 +146,12 @@
               $utf8=iconv($DBInfo->charset,'UTF-8',$out);
               if ($utf8) $out=&$utf8;
           }
  -        $out=utf8_mb_encode($out);
  +        if (function_exists('mb_encode_numericentity')) {
  +            $out=mb_encode_numericentity($out,$DBInfo->convmap,'utf-8');
  +        } else {
  +            include_once('lib/compat.php');
  +            $out=utf8_mb_encode($out);
  +        }
   
           $fp=fopen($_dir.'/'.$map,'w');
           fwrite($fp,$out);
  
  
  


wkpark      2004/12/11 01:11:04

  Modified:    plugin   sendping.php
  Log:
  use compat.php for php compatibility
  
  Revision  Changes    Path
  1.10      +16 -9     moniwiki/plugin/sendping.php
  
  Index: sendping.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/sendping.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- sendping.php	31 Aug 2004 15:55:03 -0000	1.9
  +++ sendping.php	10 Dec 2004 16:11:04 -0000	1.10
  @@ -1,10 +1,9 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2994 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a TrackBack send action plugin for the MoniWiki
  -// vim:et:ts=2:
   //
  -// $Id: sendping.php,v 1.9 2004/08/31 15:55:03 wkpark Exp $
  +// $Id: sendping.php,v 1.10 2004/12/10 16:11:04 wkpark Exp $
   
   # trackback ping
   function do_sendping($formatter,$options) {
  @@ -100,15 +99,22 @@
   
   	$excerpt= stripslashes($options['excerpt']);
   
  -  if ($options['mbencode'] and function_exists('mb_encode_numericentity')) {
  +  if ($options['mbencode']) {
       if ($checked and function_exists('iconv')
           and strtolower($DBInfo->charset) != 'utf-8')
         $excerpt=iconv($DBInfo->charset,'utf-8',$excerpt);
  -
  -    $new=mb_encode_numericentity($excerpt,$DBInfo->convmap,'utf-8');
  -    if ($new) $excerpt=$new;
  -    $new=mb_encode_numericentity($title,$DBInfo->convmap,'utf-8');
  -    if ($new) $title=$new;
  +    if (function_exists('mb_encode_numericentity')) {
  +      $new=mb_encode_numericentity($excerpt,$DBInfo->convmap,'utf-8');
  +      if ($new) $excerpt=$new;
  +      $new=mb_encode_numericentity($title,$DBInfo->convmap,'utf-8');
  +      if ($new) $title=$new;
  +    } else {
  +      include('lib/compat.php');
  +      $new=utf8_mb_encode($excerpt);
  +      if ($new) $excerpt=$new;
  +      $new=utf8_mb_encode($title);
  +      if ($new) $title=$new;
  +    }
     }
   
   	$excerpt= urlencode($excerpt);
  @@ -164,4 +170,5 @@
     return;
   }
   
  +// vim:et:ts=2:sw=2
   ?>
  
  
  


wkpark      2004/12/11 01:11:52

  Modified:    plugin   sendping.php
  Log:
  retab!
  
  Revision  Changes    Path
  1.11      +38 -38    moniwiki/plugin/sendping.php
  
  Index: sendping.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/sendping.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- sendping.php	10 Dec 2004 16:11:04 -0000	1.10
  +++ sendping.php	10 Dec 2004 16:11:52 -0000	1.11
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a TrackBack send action plugin for the MoniWiki
   //
  -// $Id: sendping.php,v 1.10 2004/12/10 16:11:04 wkpark Exp $
  +// $Id: sendping.php,v 1.11 2004/12/10 16:11:52 wkpark Exp $
   
   # trackback ping
   function do_sendping($formatter,$options) {
  @@ -94,10 +94,10 @@
     # send Trackback ping
   
     $trackback_url=$options['trackback_url'];
  -	$title= urlencode(stripslashes($options['title']));
  -	$blog_name= urlencode($DBInfo->sitename.":$options[id]");
  +  $title= urlencode(stripslashes($options['title']));
  +  $blog_name= urlencode($DBInfo->sitename.":$options[id]");
   
  -	$excerpt= stripslashes($options['excerpt']);
  +  $excerpt= stripslashes($options['excerpt']);
   
     if ($options['mbencode']) {
       if ($checked and function_exists('iconv')
  @@ -117,50 +117,50 @@
       }
     }
   
  -	$excerpt= urlencode($excerpt);
  +  $excerpt= urlencode($excerpt);
   
     $url= $formatter->link_url($options['page'],"#$options[value]");
     $url= urlencode(qualifiedUrl($url));
   
  -	$query_string= "title=$title&url=$url&blog_name=$blog_name&excerpt=$excerpt";
  +  $query_string= "title=$title&url=$url&blog_name=$blog_name&excerpt=$excerpt";
   
  -	if (strstr($trackback_url, '?')) {
  -		$trackback_url.= "&".$query_string;;
  -		$fp= @fopen($trackback_url, 'r');
  -		$result= @fread($fp, 4096);
  -		@fclose($fp);
  +  if (strstr($trackback_url, '?')) {
  +    $trackback_url.= "&".$query_string;;
  +    $fp= @fopen($trackback_url, 'r');
  +    $result= @fread($fp, 4096);
  +    @fclose($fp);
   /* debug code
  -		$debug_file = 'trackback.log';
  -		$fp = fopen($debug_file, 'a');
  -		fwrite($fp, "\n*****\nTrackback URL query:\n\n$trackback_url\n\nResponse:\n\n");
  -		fwrite($fp, $result);
  -		fwrite($fp, "\n\n");
  -		fclose($fp);
  +    $debug_file = 'trackback.log';
  +    $fp = fopen($debug_file, 'a');
  +    fwrite($fp, "\n*****\nTrackback URL query:\n\n$trackback_url\n\nResponse:\n\n");
  +    fwrite($fp, $result);
  +    fwrite($fp, "\n\n");
  +    fclose($fp);
   */
  -	} else {
  -		$trackback_url = parse_url($trackback_url);
  +  } else {
  +    $trackback_url = parse_url($trackback_url);
   
  -		$http_request  = 'POST '.$trackback_url['path']." HTTP/1.0\r\n";
  -		$http_request .= 'Host: '.$trackback_url['host']."\r\n";
  -		$http_request .= 'Content-Type: application/x-www-form-urlencoded'."\r\n";
  -		$http_request .= 'Content-Length: '.strlen($query_string)."\r\n";
  -		$http_request .= "\r\n";
  -		$http_request .= $query_string;
  +    $http_request  = 'POST '.$trackback_url['path']." HTTP/1.0\r\n";
  +    $http_request .= 'Host: '.$trackback_url['host']."\r\n";
  +    $http_request .= 'Content-Type: application/x-www-form-urlencoded'."\r\n";
  +    $http_request .= 'Content-Length: '.strlen($query_string)."\r\n";
  +    $http_request .= "\r\n";
  +    $http_request .= $query_string;
   
  -		$fs = @fsockopen($trackback_url['host'], 80);
  -		@fputs($fs, $http_request);
  +    $fs = @fsockopen($trackback_url['host'], 80);
  +    @fputs($fs, $http_request);
   /* debug code
  -		$debug_file = 'trackback.log';
  -		$fp = fopen($debug_file, 'a');
  -		fwrite($fp, "\n*****\nRequest:\n\n$http_request\n\nResponse:\n\n");
  -		while(!@feof($fs)) {
  -			fwrite($fp, @fgets($fs, 4096));
  -		}
  -		fwrite($fp, "\n\n");
  -		fclose($fp);
  +    $debug_file = 'trackback.log';
  +    $fp = fopen($debug_file, 'a');
  +    fwrite($fp, "\n*****\nRequest:\n\n$http_request\n\nResponse:\n\n");
  +    while(!@feof($fs)) {
  +      fwrite($fp, @fgets($fs, 4096));
  +    }
  +    fwrite($fp, "\n\n");
  +    fclose($fp);
   */
  -		@fclose($fs);
  -	}
  +    @fclose($fs);
  +  }
   
     $formatter->send_header("",$options);
     $formatter->send_title(_("Trackback sent"),"",$options);
  @@ -170,5 +170,5 @@
     return;
   }
   
  -// vim:et:ts=2:sw=2
  +// vim:et:sts=2:sw=2
   ?>
  
  
  


wkpark      2004/12/21 06:08:34

  Modified:    plugin   UploadFile.php
  Log:
  slightly modified for multiple exts
  
  Revision  Changes    Path
  1.17      +8 -6      moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- UploadFile.php	10 Dec 2004 15:33:19 -0000	1.16
  +++ UploadFile.php	20 Dec 2004 21:08:33 -0000	1.17
  @@ -1,9 +1,9 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2004 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.16 2004/12/10 15:33:19 wkpark Exp $
  +// $Id: UploadFile.php,v 1.17 2004/12/20 21:08:33 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -81,10 +81,11 @@
       # check extra extentions for the mod_mime
       $exts=explode('.',$fname[1]);
       $ok=0;
  -    for ($i=1;$i<sizeof($exts);$i++) {
  +    for ($i=sizeof($exts);$i>0;$i--) {
         if (in_array(strtolower($exts[$i]),$protected)) {
  -        $exts[$i].='s';
  +        $exts[$i].='.txt';
           $ok=1;
  +        break;
         }
       }
       if ($ok) {
  @@ -103,10 +104,11 @@
       preg_match("/^(.*)\.([a-z0-9]{1,4})$/i",$upfilename,$tname);
       $exts=explode('.',$tname[1]);
       $ok=0;
  -    for ($i=1;$i<sizeof($exts);$i++) {
  +    for ($i=sizeof($exts);$i>0;$i--) {
         if (in_array(strtolower($exts[$i]),$protected)) {
  -        $exts[$i].='s';
  +        $exts[$i].='.txt';
           $ok=1;
  +        break;
         }
       }
       if ($ok) {
  
  
  


wkpark      2004/12/29 07:38:57

  Modified:    applets/TWikiDrawPlugin Makefile
  Log:
  use a developper release
  
  Revision  Changes    Path
  1.3       +2 -1      moniwiki/applets/TWikiDrawPlugin/Makefile
  
  Index: Makefile
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/applets/TWikiDrawPlugin/Makefile,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Makefile	20 Aug 2004 17:59:00 -0000	1.2
  +++ Makefile	28 Dec 2004 22:38:57 -0000	1.3
  @@ -1,5 +1,6 @@
   install:
  -	wget -N http://twiki.org/p/pub/Plugins/TWikiDrawPlugin/TWikiDrawPlugin.zip
  +	#wget -N http://twiki.org/p/pub/Plugins/TWikiDrawPlugin/TWikiDrawPlugin.zip
  +	wget -N http://twiki.org/p/pub/Plugins/TWikiDrawPluginDev/TWikiDrawPlugin.zip
   	unzip TWikiDrawPlugin.zip -d twiki
   	cp twiki/pub/TWiki/TWikiDrawPlugin/* .
   	rm -r twiki
  
  
  


wkpark      2004/12/29 07:41:23

  Modified:    .        wikilib.php
  Log:
  fix TableOfContents macro (do not include headings in the pre blocks)
  
  Revision  Changes    Path
  1.129     +9 -5      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.128
  retrieving revision 1.129
  diff -u -r1.128 -r1.129
  --- wikilib.php	27 Nov 2004 09:00:43 -0000	1.128
  +++ wikilib.php	28 Dec 2004 22:41:23 -0000	1.129
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.128 2004/11/27 09:00:43 wkpark Exp $
  +// $Id: wikilib.php,v 1.129 2004/12/28 22:41:23 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -476,6 +476,10 @@
     $formatter->send_footer($args,$options);
   }
   
  +function _get_section($formatter,$text) {
  +
  +}
  +
   function macro_Edit($formatter,$value,$options='') {
     global $DBInfo;
   
  @@ -531,12 +535,12 @@
     $form.=$menu;
     $form.= sprintf('<form name="editform" method="post" action="%s">', $previewurl);
     if ($text) {
  -    $raw_body = str_replace('\r\n', '\n', $text);
  +    $raw_body = str_replace("\r\n", "\n", $text);
     } else if ($formatter->page->exists()) {
  -    $raw_body = str_replace('\r\n', '\n', $formatter->page->_get_raw_body());
  +    $raw_body = str_replace("\r\n", "\n", $formatter->page->_get_raw_body());
     } else if ($options['template']) {
       $p= new WikiPage($options['template']);
  -    $raw_body = str_replace('\r\n', '\n', $p->get_raw_body());
  +    $raw_body = str_replace("\r\n", "\n", $p->get_raw_body());
     } else {
       if (strpos($options['page'],' ') > 0) {
         $raw_body="#title $options[page]\n";
  @@ -1595,7 +1599,7 @@
    } else {
      $body=$formatter->page->get_raw_body();
    }
  -# $body=preg_replace("/(\{\{\{$)(.*)(\}\}\})/ms",'',$body);
  + $body=preg_replace("/\{\{\{.+?\}\}\}/s",'',$body);
    $lines=explode("\n",$body);
    foreach ($lines as $line) {
      $line=preg_replace("/\n$/", "", $line); # strip \n
  
  
  


wkpark      2004/12/30 16:25:51

  Modified:    .        wiki.php
  Log:
  fixup #300648: XSS vulnerability reported by gryu
  
  Revision  Changes    Path
  1.199     +12 -5     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.198
  retrieving revision 1.199
  diff -u -r1.198 -r1.199
  --- wiki.php	4 Dec 2004 20:29:35 -0000	1.198
  +++ wiki.php	30 Dec 2004 07:25:51 -0000	1.199
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.198 2004/12/04 20:29:35 advanced Exp $
  +// $Id: wiki.php,v 1.199 2004/12/30 07:25:51 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.198 $',1,-1);
  +$_revision = substr('$Revision: 1.199 $',1,-1);
   $_release = '1.0.9';
   
   #ob_start("ob_gzhandler");
  @@ -1765,6 +1765,7 @@
       } else 
         $word=$text=$page_text ? $page_text:$word;
       #print $text;
  +    $word=htmlspecialchars($word);
   
       $url=_urlencode($page);
       $url_only=strtok($url,'#?'); # for [WikiName#tag] [wiki:WikiName#tag Tag]
  @@ -1847,8 +1848,14 @@
     function nonexists_fancy($word,$url) {
       global $DBInfo;
       #if (preg_match("/^[a-zA-Z0-9\/~]/",$word))
  -    if (ord($word[0]) < 125)
  -      return "<a class='nonexistent' href='$url'>$word[0]</a>".substr($word,1);
  +    if (ord($word[0]) < 125) {
  +      $link=$word[0];
  +      if ($word[0]=='&') {
  +        $link=strtok($word,';').';';$last=strtok('');
  +      } else
  +        $last=substr($word,1);
  +      return "<a class='nonexistent' href='$url'>$link</a>".$last;
  +    }
       if (function_exists('mb_encode_numericentity')) {
         if (function_exists('iconv') and strtolower($DBInfo->charset) != 'utf-8')
           $utfword=iconv($DBInfo->charset,'utf-8',$word);
  @@ -3031,7 +3038,7 @@
       foreach ($trails as $page) {
         $this->trail.=$this->word_repl('"'.$page.'"','','',1,0).$DBInfo->arrow;
       }
  -    $this->trail.= " $pagename";
  +    $this->trail.= ' '.htmlspecialchars($pagename);
       $this->pagelinks=array(); # reset pagelinks
       $this->sister_on=$sister_save;
   
  
  
  


wkpark      2005/01/04 17:22:58

  Modified:    plugin/security mustlogin.php needtologin.php
  Log:
  minor fixes
  
  Revision  Changes    Path
  1.3       +2 -2      moniwiki/plugin/security/mustlogin.php
  
  Index: mustlogin.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/mustlogin.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- mustlogin.php	21 Oct 2004 08:27:07 -0000	1.2
  +++ mustlogin.php	4 Jan 2005 08:22:58 -0000	1.3
  @@ -1,6 +1,6 @@
   <?php
  -# a needtologin security plugin for the MoniWiki
  -# $Id: mustlogin.php,v 1.2 2004/10/21 08:27:07 wkpark Exp $
  +# a mustlogin security plugin for the MoniWiki
  +# $Id: mustlogin.php,v 1.3 2005/01/04 08:22:58 wkpark Exp $
   
   class Security_mustlogin extends Security {
     var $DB;
  
  
  
  1.6       +5 -1      moniwiki/plugin/security/needtologin.php
  
  Index: needtologin.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/needtologin.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- needtologin.php	21 Oct 2004 08:27:07 -0000	1.5
  +++ needtologin.php	4 Jan 2005 08:22:58 -0000	1.6
  @@ -1,6 +1,6 @@
   <?php
   # a needtologin security plugin for the MoniWiki
  -# $Id: needtologin.php,v 1.5 2004/10/21 08:27:07 wkpark Exp $
  +# $Id: needtologin.php,v 1.6 2005/01/04 08:22:58 wkpark Exp $
   
   class Security_needtologin extends Security {
     var $DB;
  @@ -53,6 +53,10 @@
       if (method_exists($this, $method)) {
         return $this->$method ($action,$options);
       }
  +    if ($options['id']!='Anonymous')
  +      return 1;
  +
  +    // XXX
       return 1;
     }
   }
  
  
  


wkpark      2005/01/04 17:25:25

  Modified:    plugin   download.php
  Log:
  enclose with quatation marks
  
  Revision  Changes    Path
  1.11      +4 -4      moniwiki/plugin/download.php
  
  Index: download.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/download.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- download.php	3 Sep 2004 07:47:29 -0000	1.10
  +++ download.php	4 Jan 2005 08:25:25 -0000	1.11
  @@ -1,9 +1,9 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2004 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // download action plugin for the MoniWiki
   //
  -// $Id: download.php,v 1.10 2004/09/03 07:47:29 wkpark Exp $
  +// $Id: download.php,v 1.11 2005/01/04 08:25:25 wkpark Exp $
   //
   function do_download($formatter,$options) {
     global $DBInfo;
  @@ -58,8 +58,8 @@
     if (!$mimetype) $mimetype="application/x-unknown";
   
     header("Content-Type: $mimetype\r\n");
  -  header("Content-Disposition: inline; filename=$file" );
  -  #header("Content-Disposition: attachment; filename=$file" );
  +  header("Content-Disposition: inline; filename=\"$file\"" );
  +  #header("Content-Disposition: attachment; filename=\"$file\"" );
     header("Content-Description: MoniWiki PHP Downloader" );
     Header("Pragma: no-cache");
     Header("Expires: 0");
  
  
  


wkpark      2005/01/04 17:25:51

  Modified:    plugin   VisualTour.php
  Log:
  add send_header()
  
  Revision  Changes    Path
  1.4       +2 -1      moniwiki/plugin/VisualTour.php
  
  Index: VisualTour.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/VisualTour.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- VisualTour.php	10 Aug 2003 08:20:36 -0000	1.3
  +++ VisualTour.php	4 Jan 2005 08:25:51 -0000	1.4
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a VisualTour plugin for the MoniWiki
   //
  -// $Id: VisualTour.php,v 1.3 2003/08/10 08:20:36 wkpark Exp $
  +// $Id: VisualTour.php,v 1.4 2005/01/04 08:25:51 wkpark Exp $
   // vim:et:ts=2:
   
   function do_VisualTour($formatter,$options) {
  @@ -50,6 +50,7 @@
     }
   
     $selfurl=$formatter->link_to();
  +  $formatter->send_header();
     print "<h2 style='font-family:Tahoma,Sans-serif;'>VisualTour on $selfurl</h2>";
   
     print $formatter->link_to("?action=visualtour",_("Normal"));
  
  
  


wkpark      2005/01/04 17:26:35

  Modified:    plugin   Calendar.php
  Log:
  minor fix
  
  Revision  Changes    Path
  1.12      +3 -2      moniwiki/plugin/Calendar.php
  
  Index: Calendar.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Calendar.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- Calendar.php	19 Oct 2004 15:01:15 -0000	1.11
  +++ Calendar.php	4 Jan 2005 08:26:35 -0000	1.12
  @@ -7,7 +7,7 @@
   #-----usage: generate_calendar(2001, 11, $day_func, 2);-------------------------
   #------(last two arguments are optional)----------------------------------------
   #-------------------------------------------------------------------------------
  -# $Id: Calendar.php,v 1.11 2004/10/19 15:01:15 pyrasis Exp $
  +# $Id: Calendar.php,v 1.12 2005/01/04 08:26:35 wkpark Exp $
   
   function calendar_get_dates($formatter,$date='',$page='') {
     global $DBInfo;
  @@ -130,7 +130,8 @@
   	$calendar.= $formatter->link_tag($link,"?date=$prev_year",$year_prev_tag).'&nbsp;&nbsp;';
   	$calendar.= $formatter->link_tag($link,"?date=$prev_month",$prev_tag).'&nbsp;&nbsp;';
   
  -	$calendar.="$date_info[month] $year";
  +	#$calendar.=substr($date_info[month],0,3).' '.$year;
  +	$calendar.=$date_info[month].' '.$year;
   
   	/* Adding next month and year */
   	$calendar.= '&nbsp;&nbsp;'.$formatter->link_tag($link,"?date=$next_month",$next_tag);
  
  
  


wkpark      2005/01/04 17:28:34

  Modified:    plugin/processor gnuplot.php
  Log:
  support processor options '#size 100x100'
  
  Revision  Changes    Path
  1.7       +31 -3     moniwiki/plugin/processor/gnuplot.php
  
  Index: gnuplot.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/gnuplot.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- gnuplot.php	24 Nov 2004 15:30:30 -0000	1.6
  +++ gnuplot.php	4 Jan 2005 08:28:34 -0000	1.7
  @@ -6,7 +6,7 @@
   // Usage: {{{#!gnuplot
   // plot sin(x)
   // }}}
  -// $Id: gnuplot.php,v 1.6 2004/11/24 15:30:30 wkpark Exp $
  +// $Id: gnuplot.php,v 1.7 2005/01/04 08:28:34 wkpark Exp $
   
   function processor_gnuplot($formatter="",$value="") {
     global $DBInfo;
  @@ -22,7 +22,35 @@
     if ($value[0]=='#' and $value[1]=='!')
       list($line,$value)=explode("\n",$value,2);
   
  -  $plt=$value;
  +  $default_size="set size 0.5,0.6";
  +
  +  $body=$plt=$value;
  +  while ($body and $body[0] == '#') {
  +    # extract first line
  +    list($line, $body) = explode("\n",$body, 2);
  +
  +    # skip comments (lines with two hash marks)
  +    if ($line[1] == '#') continue;
  +
  +    # parse the PI
  +    list($verb, $arg) = explode(' ',$line,2);
  +    $verb = strtolower($verb);
  +    $arg = rtrim($arg);
  +
  +    if (in_array($verb,array('#size'))) {
  +      $args= explode('x',$arg,2);
  +      $xsize=intval($args[0]);$ysize=intval($args[1]);
  +    }
  +  }
  +  if ($xsize != '') {
  +    if ($xsize > 640 or $xsize < 100) $xscale=0.5;
  +    if ($xscale and ($ysize > 480 or $ysize < 100)) $yscale=0.6;
  +    $xscale=$xsize/640.0;
  +    
  +    if (empty($yscale)) $yscale=$xscale/0.5*0.6;
  +
  +    $size='set size '.$xscale.','.$yscale;
  +  } else $size=$default_size;
   
   # a sample for testing
   #  $plt='
  @@ -39,12 +67,12 @@
     
     #print "<pre>$plt</pre>";
     
  +  $plt="\n".$size."\n".$plt;
     $uniq=md5($plt);
   
     $outpath="$cache_dir/$uniq.png";
   
     $src="
  -set size 0.5,0.6
   set term png
   set out '$outpath'
   $plt
  
  
  


wkpark      2005/01/04 17:44:02

  Modified:    .        wikilib.php
  Log:
  fixed PR #300669: set '-f' option to fix sendmail problem
  
  Revision  Changes    Path
  1.130     +3 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.129
  retrieving revision 1.130
  diff -u -r1.129 -r1.130
  --- wikilib.php	28 Dec 2004 22:41:23 -0000	1.129
  +++ wikilib.php	4 Jan 2005 08:44:02 -0000	1.130
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.129 2004/12/28 22:41:23 wkpark Exp $
  +// $Id: wikilib.php,v 1.130 2005/01/04 08:44:02 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1043,7 +1043,7 @@
       $body.=$diff;
     }
   
  -  mail($mailto,$subject,$body,$mailheaders);
  +  mail($mailto,$subject,$body,$mailheaders,'-f"'.$from.'"');
   
     if ($options['noaction']) return 1;
   
  @@ -1077,7 +1077,7 @@
     $mailheaders.= "Content-Type: text/plain; charset=$DBInfo->charset\n";
     $mailheaders.= "Content-Transfer-Encoding: 8bit\n\n";
   
  -  mail($email,$subject,$body,$mailheaders);
  +  mail($email,$subject,$body,$mailheaders,'-f"'.$from.'"');
   }
   
   
  
  
  


wkpark      2005/01/04 17:54:58

  Modified:    .        wikilib.php
  Log:
  fixed PR #300580: do not strip basic wikitags in the TableOfContents
  
  Revision  Changes    Path
  1.131     +4 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.130
  retrieving revision 1.131
  diff -u -r1.130 -r1.131
  --- wikilib.php	4 Jan 2005 08:44:02 -0000	1.130
  +++ wikilib.php	4 Jan 2005 08:54:58 -0000	1.131
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.130 2005/01/04 08:44:02 wkpark Exp $
  +// $Id: wikilib.php,v 1.131 2005/01/04 08:54:58 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1611,7 +1611,9 @@
      $head=str_replace("<","&lt;",$match[3]);
      # strip some basic wikitags
      # $formatter->baserepl,$head);
  -   $head=preg_replace($formatter->baserule,"\\1",$head);
  +   #$head=preg_replace($formatter->baserule,"\\1",$head);
  +   # do not strip basic wikitags
  +   $head=preg_replace($formatter->baserule,$formatter->baserepl,$head);
      $head=preg_replace("/\[\[.*\]\]/","",$head);
      $head=preg_replace("/(".$formatter->wordrule.")/e","\$formatter->link_repl('\\1')",$head);
   
  
  
  


wkpark      2005/01/04 18:06:03

  Modified:    locale/po fr.po ko.po moniwiki.pot
  Log:
  update messages
  
  Revision  Changes    Path
  1.11      +147 -148  moniwiki/locale/po/fr.po
  
  Index: fr.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/fr.po,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- fr.po	17 Oct 2004 16:45:26 -0000	1.10
  +++ fr.po	4 Jan 2005 09:06:03 -0000	1.11
  @@ -2,8 +2,8 @@
   # 
   msgid ""
   msgstr ""
  -"Project-Id-Version: MoniWiki 1.0\n"
  -"POT-Creation-Date: 2004-10-18 01:48+0900\n"
  +"Project-Id-Version: MoniWiki 1.1\n"
  +"POT-Creation-Date: 2005-01-04 18:08+0900\n"
   "PO-Revision-Date: 2003-08-17 22:51+0900\n"
   "Last-Translator: Serge Stinckwich <Serge.Stinckwich@info.unicaen.fr>\n"
   "Language-Team: fr <fr@li.org>\n"
  @@ -12,13 +12,13 @@
   "Content-Transfer-Encoding: 8bit\n"
   
   # ../plugin/Attachment.php:24
  -#: ../plugin/Attachment.php:80
  +#: ../plugin/Attachment.php:82
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr "Tlcharger le nouvel attachement \"%s\""
   
   # ../plugin/Attachment.php:24
  -#: ../plugin/Attachment.php:83
  +#: ../plugin/Attachment.php:85
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
  @@ -98,7 +98,7 @@
   
   # ../plugin/Blog.php:210
   #: ../plugin/Blog.php:258
  -msgid "<b>horizontal rule</b> ---- does not applied on the blog mode."
  +msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
   msgstr "<b>Une rgle horizontale</b> ---- ne s'applique pas au mode blog."
   
   #: ../plugin/BlogChanges.php:198
  @@ -160,7 +160,7 @@
   msgstr "commentaire"
   
   # ../wikilib.php:482
  -#: ../plugin/Comment.php:49 ../wikilib.php:607
  +#: ../plugin/Comment.php:49 ../wikilib.php:571
   msgid "Preview"
   msgstr "Prvisualisation"
   
  @@ -181,33 +181,33 @@
   msgstr ""
   
   # ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
  -#: ../plugin/Draw.php:25 ../plugin/OeKaki.php:36
  +#: ../plugin/Draw.php:29 ../plugin/OeKaki.php:36
   msgid "Draw new picture"
   msgstr "Faire un nouveau dessin"
   
   # ../plugin/Draw.php:48
  -#: ../plugin/Draw.php:45 ../plugin/UploadFile.php:109
  +#: ../plugin/Draw.php:81 ../plugin/UploadFile.php:146
   #, c-format
   msgid "Fail to copy \"%s\" to \"%s\""
   msgstr "Impossible de copier \"%s\" vers \"%s\""
   
   # ../plugin/Draw.php:58
  -#: ../plugin/Draw.php:55
  +#: ../plugin/Draw.php:108
   msgid "Fatal error !"
   msgstr "Erreur fatale !"
   
   # ../plugin/Draw.php:61
  -#: ../plugin/Draw.php:58
  +#: ../plugin/Draw.php:111
   msgid "No filename given"
   msgstr "Aucun nom de fichier donn"
   
   # ../plugin/Draw.php:82
  -#: ../plugin/Draw.php:79
  +#: ../plugin/Draw.php:132
   msgid "Edit drawing"
   msgstr "diter le dessin"
   
   # ../plugin/Draw.php:91
  -#: ../plugin/Draw.php:88
  +#: ../plugin/Draw.php:141
   msgid "Edit new drawing"
   msgstr "diter un nouveau dessin"
   
  @@ -247,7 +247,7 @@
   msgstr ""
   
   # ../wikilib.php:1483
  -#: ../plugin/FullSearch.php:103 ../wikilib.php:1736
  +#: ../plugin/FullSearch.php:103 ../wikilib.php:1695
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "Expression de recherche \"%s\" invalide"
  @@ -263,7 +263,7 @@
   msgstr ""
   
   # ../wikilib.php:769
  -#: ../plugin/Gallery.php:277 ../plugin/Gallery.php:280 ../wikilib.php:977
  +#: ../plugin/Gallery.php:277 ../plugin/Gallery.php:280 ../wikilib.php:934
   #, c-format
   msgid "Go back or return to %s"
   msgstr "Revenir en arrire ou retourner  %s"
  @@ -277,7 +277,7 @@
   msgid "Comments is added"
   msgstr ""
   
  -#: ../plugin/ImportUrl.php:48
  +#: ../plugin/ImportUrl.php:105
   msgid "Import URL"
   msgstr ""
   
  @@ -337,7 +337,7 @@
   msgstr "TwinPages de %s"
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../plugin/TwinPages.php:18 ../wiki.php:2002 ../wiki.php:3300
  +#: ../plugin/TwinPages.php:18 ../wiki.php:2153 ../wiki.php:3292
   msgid "See TwinPages: "
   msgstr "Voir TwinPages: "
   
  @@ -346,49 +346,49 @@
   msgid "No TwinPages found."
   msgstr "Aucune TwinPages trouv"
   
  -# ../wiki.php:3009
  -#: ../plugin/UploadFile.php:73
  +# ../wikilib.php:519
  +#: ../plugin/UploadFile.php:78
   #, c-format
  -msgid "%s does not allowed to upload"
  -msgstr ""
  +msgid "%s is not allowed to upload"
  +msgstr "%s n'est pas une action valide"
   
   # ../wikilib.php:887
  -#: ../plugin/UploadFile.php:115
  +#: ../plugin/UploadFile.php:155
   #, c-format
   msgid "File \"%s\" is uploaded successfully"
   msgstr ""
   
   # ../wikilib.php:887
  -#: ../plugin/UploadFile.php:146
  +#: ../plugin/UploadFile.php:186
   msgid "Files are uploaded successfully"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:180
  +#: ../plugin/UploadFile.php:220
   msgid ": Rename"
   msgstr ""
   
   # ../plugin/rename.php:36
  -#: ../plugin/UploadedFiles.php:121 ../plugin/rename.php:69 ../wikilib.php:735
  +#: ../plugin/UploadedFiles.php:124 ../plugin/rename.php:69 ../wikilib.php:692
   msgid "Password"
   msgstr "Mot de passe"
   
   # ../wikilib.php:550
  -#: ../plugin/UploadedFiles.php:122 ../wikilib.php:713
  +#: ../plugin/UploadedFiles.php:125 ../wikilib.php:670
   msgid "Delete selected files"
   msgstr "Effacer les fichiers slectionns"
   
   # ../plugin/VisualTour.php:55
  -#: ../plugin/VisualTour.php:55
  +#: ../plugin/VisualTour.php:56
   msgid "Normal"
   msgstr ""
   
   # ../plugin/VisualTour.php:57
  -#: ../plugin/VisualTour.php:57
  +#: ../plugin/VisualTour.php:58
   msgid "Wider"
   msgstr "Plus large"
   
   # ../plugin/VisualTour.php:59
  -#: ../plugin/VisualTour.php:59
  +#: ../plugin/VisualTour.php:60
   msgid "Deeper"
   msgstr "Plus profond"
   
  @@ -407,7 +407,7 @@
   msgid "Voted successfully"
   msgstr "Vote russi"
   
  -#: ../plugin/WordIndex.php:65 ../wikilib.php:1535
  +#: ../plugin/WordIndex.php:65 ../wikilib.php:1492
   msgid "Others"
   msgstr ""
   
  @@ -438,7 +438,7 @@
   msgstr "Retour  UserPreferences"
   
   # ../plugin/format.php:16
  -#: ../plugin/format.php:16
  +#: ../plugin/format.php:15
   msgid "It is a XML format !"
   msgstr "C'est un format XML !"
   
  @@ -478,7 +478,7 @@
   msgstr "Aucune page de manuel trouv"
   
   # ../plugin/minilogin.php:22 ../wikilib.php:1076
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1286
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1243
   msgid "Login or Join"
   msgstr "Se connecter ou se joindre "
   
  @@ -507,6 +507,10 @@
   msgid "last modified %s %s"
   msgstr ""
   
  +#: ../plugin/processor/vim.php:42
  +msgid "Toggle line numbers"
  +msgstr ""
  +
   # ../plugin/quicklinks.php:16 ../plugin/subscribe.php:24
   #: ../plugin/quicklinks.php:16 ../plugin/subscribe.php:24
   msgid "Please login or make your ID."
  @@ -623,7 +627,7 @@
   msgstr "Seulement le WikiMaster peut renommer cette page"
   
   # ../plugin/rename.php:39 ../wikilib.php:588
  -#: ../plugin/rename.php:71 ../wikilib.php:773
  +#: ../plugin/rename.php:71 ../wikilib.php:730
   msgid "with revision history"
   msgstr "avec l'historique de rvision"
   
  @@ -693,28 +697,28 @@
   msgstr ""
   
   # ../plugin/sendping.php:14 ../plugin/trackback.php:41
  -#: ../plugin/sendping.php:14 ../plugin/trackback.php:41
  +#: ../plugin/sendping.php:13 ../plugin/trackback.php:41
   msgid "Error: Page Not found !"
   msgstr "Erreur : page non trouv !"
   
   # ../plugin/sendping.php:55
  -#: ../plugin/sendping.php:55
  +#: ../plugin/sendping.php:54
   msgid "Error: No entry found!"
   msgstr "Erreur : entre non trouv !"
   
   # ../plugin/sendping.php:73
  -#: ../plugin/sendping.php:73
  +#: ../plugin/sendping.php:72
   msgid "Send TrackBack ping"
   msgstr "Envoy un ping de TrackBack"
   
   # ../plugin/sendping.php:158
  -#: ../plugin/sendping.php:160
  +#: ../plugin/sendping.php:166
   msgid "Trackback sent"
   msgstr "Trackback envoy"
   
   # ../plugin/subscribe.php:12
   #: ../plugin/subscribe.php:12
  -msgid "EmailNotification does not activated"
  +msgid "EmailNotification is not activated"
   msgstr "EmailNotification n'est pas activ"
   
   # ../plugin/subscribe.php:13
  @@ -916,107 +920,75 @@
   msgstr ""
   
   # ../wiki.php:850
  -#: ../wiki.php:890
  +#: ../wiki.php:908
   #, c-format
   msgid "Rename %s to %s"
   msgstr "Renommer %s en %s"
   
  +# ../wikilib.php:803
  +#: ../wiki.php:1199
  +msgid "Version info does not supported by this wiki"
  +msgstr "La messagerie n'est pas support par dfaut."
  +
   # ../plugin/restore.php:27
  -#: ../wiki.php:1069
  +#: ../wiki.php:1210
   msgid "File does not exists"
   msgstr ""
   
   # ../wiki.php:1824
  -#: ../wiki.php:1998
  +#: ../wiki.php:2149
   #, c-format
   msgid "See %s"
   msgstr "Voir %s"
   
   # ../wiki.php:1824
  -#: ../wiki.php:1998
  +#: ../wiki.php:2149
   msgid "TwinPages"
   msgstr ""
   
  -# ../wiki.php:2110
  -#: ../wiki.php:2318
  -msgid "Revision History"
  -msgstr "Historique de rvision"
  -
  -# ../wiki.php:2211 ../wiki.php:2360
  -#: ../wiki.php:2419 ../wiki.php:2567
  -msgid "No older revisions available"
  -msgstr "Aucune rvision plus ancienne disponible"
  -
  -# ../wiki.php:2338 ../wiki.php:2373 ../wikilib.php:770
  -#: ../wiki.php:2546 ../wiki.php:2584 ../wikilib.php:978
  -msgid "No difference found"
  -msgstr "Aucune diffrence trouv"
  -
  -# ../wiki.php:2341
  -#: ../wiki.php:2548
  -msgid "Difference between yours and the current"
  -msgstr "Diffrence entre votre version et la courante"
  -
  -# ../wiki.php:2376
  -#: ../wiki.php:2586
  -msgid "Difference between versions"
  -msgstr "Diffrence entre les versions"
  -
  -# ../wiki.php:2378
  -#: ../wiki.php:2588
  -#, c-format
  -msgid "Difference between r%s and r%s"
  -msgstr "Diffrence entre r%s et r%s"
  -
  -# ../wiki.php:2382
  -#: ../wiki.php:2591
  -#, c-format
  -msgid "Difference between r%s and the current"
  -msgstr "Diffrence entre r%s et la version courante"
  -
   # ../locale/dummy.php:6 ../wiki.php:2553
  -#: ../wiki.php:2796 ../locale/dummy.php:6
  +#: ../wiki.php:2762 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "ditionTexte"
   
   # ../wiki.php:2555
  -#: ../wiki.php:2798
  +#: ../wiki.php:2764
   msgid "NotEditable"
   msgstr "Pasditable"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wiki.php:2800 ../locale/dummy.php:6
  +#: ../wiki.php:2766 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "MontrePage"
   
   # ../locale/dummy.php:3 ../locale/dummy.php:5 ../wiki.php:2558
  -#: ../wiki.php:2801 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:2767 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "TrouvePage"
   
  -#: ../wiki.php:3025
  +#: ../wiki.php:2998
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:3254
  +#: ../wiki.php:3244
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:3255 ../wiki.php:3266
  +#: ../wiki.php:3245 ../wiki.php:3256
   msgid "Please contact WikiMasters"
   msgstr ""
   
  -#: ../wiki.php:3265
  +#: ../wiki.php:3255
   msgid "You are blocked in this wiki"
   msgstr ""
   
   # ../wiki.php:2945 ../wiki.php:2948
  -#: ../wiki.php:3302 ../wiki.php:3305 ../wikilib.php:904
  +#: ../wiki.php:3294 ../wiki.php:3297 ../wikilib.php:861
   msgid "Create this page"
   msgstr "Crer cette page"
   
   # ../wiki.php:2950
  -#: ../wiki.php:3307 ../wikilib.php:906
  +#: ../wiki.php:3299 ../wikilib.php:863
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
  @@ -1024,41 +996,41 @@
   "page.\n"
   
   # ../wiki.php:2950
  -#: ../wiki.php:3307 ../wikilib.php:906
  +#: ../wiki.php:3299 ../wikilib.php:863
   msgid "title"
   msgstr "titre"
   
   # ../wiki.php:2956
  -#: ../wiki.php:3313
  +#: ../wiki.php:3305
   msgid " or alternativly, use one of these templates:\n"
   msgstr " ou alternativement, utiliser un de ces modles de page :\n"
   
   # ../wikilib.php:427
  -#: ../wiki.php:3316
  +#: ../wiki.php:3308
   msgid "To create your own templates, add a page with a 'Template' suffix.\n"
   msgstr ""
   "Pour crer vos propres modles de pages, ajouter une page avec lesuffix "
   "'Template'.\n"
   
   # ../wiki.php:3009
  -#: ../wiki.php:3391
  +#: ../wiki.php:3383
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "Vous n'tes pas autoris  '%s'"
   
   # ../wiki.php:3021
  -#: ../wiki.php:3403
  +#: ../wiki.php:3395
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "Impossible de pouvoir \"%s\" !"
   
   # ../wiki.php:3024
  -#: ../wiki.php:3406
  +#: ../wiki.php:3398
   msgid "Please enter the valid password"
   msgstr "Merci d'entrer un mot de passe valide"
   
   # ../wikilib.php:368
  -#: ../wikilib.php:482
  +#: ../wikilib.php:440
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -1091,214 +1063,213 @@
   "Les espaces aprs un tableau ou un titre ne sont pas autoriss.<br />\n"
   
   # ../wikilib.php:425
  -#: ../wikilib.php:542
  +#: ../wikilib.php:506
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   "Utiliser un des modles de pages qui suivent pour une premirecration :\n"
   
   # ../wikilib.php:427
  -#: ../wikilib.php:544
  +#: ../wikilib.php:508
   msgid "To create your own templates, add a page with a 'Template' suffix."
   msgstr ""
   "Pour crer vos propres modles de pages, ajouter une page avec lesuffix "
   "'Template'."
   
   # ../wikilib.php:443
  -#: ../wikilib.php:560
  +#: ../wikilib.php:524
   msgid "Skip to preview"
   msgstr "Aller  la prvisualisation"
   
   # ../wikilib.php:445
  -#: ../wikilib.php:562
  +#: ../wikilib.php:526
   msgid "ReduceEditor"
   msgstr "Rduirediteur"
   
  -#: ../wikilib.php:563
  +#: ../wikilib.php:527
   msgid "EnlargeEditor"
   msgstr ""
   
   # ../locale/dummy.php:6 ../wikilib.php:448
  -#: ../wikilib.php:567 ../locale/dummy.php:6
  +#: ../wikilib.php:531 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
   # ../wikilib.php:449
  -#: ../wikilib.php:568
  +#: ../wikilib.php:532
   msgid "HelpOnEditing"
   msgstr ""
   
   # ../wikilib.php:462
  -#: ../wikilib.php:585
  +#: ../wikilib.php:549
   #, c-format
   msgid "Describe %s here"
   msgstr "Dcrire %s ici"
   
   # ../wikilib.php:476
  -#: ../wikilib.php:601
  +#: ../wikilib.php:565
   msgid "--Select Category--"
   msgstr "-- Slectionner une catgorie"
   
   # ../wikilib.php:483 ../wikilib.php:1079
  -#: ../wikilib.php:608 ../wikilib.php:1289
  +#: ../wikilib.php:572 ../wikilib.php:1246
   msgid "Save"
   msgstr "Sauvegarder"
   
   # ../wikilib.php:484
  -#: ../wikilib.php:609
  +#: ../wikilib.php:573
   msgid "Summary of Change"
   msgstr "Sommaire des modifications"
   
  -# ../wikilib.php:507
  -#: ../wikilib.php:651
  -#, c-format
  -msgid "Info. for %s"
  -msgstr "Information sur %s"
  -
   # ../wikilib.php:517
  -#: ../wikilib.php:661
  +#: ../wikilib.php:618
   msgid "406 Not Acceptable"
   msgstr ""
   
   # ../wikilib.php:519
  -#: ../wikilib.php:666
  +#: ../wikilib.php:623
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s n'est pas une action valide"
   
   # ../wikilib.php:521
  -#: ../wikilib.php:668
  +#: ../wikilib.php:625
   msgid "Is it valid action ?"
   msgstr "Est-ce que c'est une action valide ?"
   
   # ../wikilib.php:540
  -#: ../wikilib.php:701
  +#: ../wikilib.php:658
   #, c-format
   msgid "File '%s' is deleted"
   msgstr "Le fichier '%s' est effac"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:703
  +#: ../wikilib.php:660
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr "Impossible d'effacer '%s'"
   
   # ../wikilib.php:545
  -#: ../wikilib.php:708
  +#: ../wikilib.php:665
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr "Le rpertoire '%s' est effac"
   
   # ../wikilib.php:547
  -#: ../wikilib.php:710
  +#: ../wikilib.php:667
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr "Impossible d'effacer le rpertoire '%s'"
   
   # ../wikilib.php:557 ../wikilib.php:559
  -#: ../wikilib.php:720 ../wikilib.php:740
  +#: ../wikilib.php:677 ../wikilib.php:697
   msgid "No files are selected !"
   msgstr "Aucun fichier n'est slectionn !"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:733
  +#: ../wikilib.php:690
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
   # ../locale/dummy.php:5
  -#: ../wikilib.php:736
  +#: ../wikilib.php:693
   msgid "Delete"
   msgstr ""
   
   # ../wikilib.php:550
  -#: ../wikilib.php:737
  +#: ../wikilib.php:694
   msgid "Delete selected file"
   msgstr ""
   
   # ../wikilib.php:575
  -#: ../wikilib.php:759
  +#: ../wikilib.php:716
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr "\"%s\" est effac !"
   
   # ../wikilib.php:581
  -#: ../wikilib.php:765
  +#: ../wikilib.php:722
   msgid "Please delete this file manually."
   msgstr "Merci d'effacer ce fichier manuellement."
   
   # ../wikilib.php:583
  -#: ../wikilib.php:767
  +#: ../wikilib.php:724
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "Effacer \"%s\" ?"
   
   # ../wikilib.php:672 ../wikilib.php:1472
  -#: ../wikilib.php:869 ../wikilib.php:1725
  +#: ../wikilib.php:826 ../wikilib.php:1684
   msgid "Use more specific text"
   msgstr "Utiliser un texte plus spcifique"
   
   # ../wikilib.php:734
  -#: ../wikilib.php:942
  +#: ../wikilib.php:899
   msgid "Goto Editor"
   msgstr "Aller  l'diteur"
   
   # ../wikilib.php:743
  -#: ../wikilib.php:951
  +#: ../wikilib.php:908
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "Quelqu'un a sauvegard la page tandis que vous ditiez %s"
   
   # ../wikilib.php:748 ../wikilib.php:777
  -#: ../wikilib.php:956 ../wikilib.php:985
  +#: ../wikilib.php:913 ../wikilib.php:942
   #, c-format
   msgid "Preview of %s"
   msgstr "Prvisualisation de %s"
   
   # ../wikilib.php:755
  -#: ../wikilib.php:963
  +#: ../wikilib.php:920
   msgid "Conflict error!"
   msgstr "Erreur de conflit !"
   
  +# ../wiki.php:2338 ../wiki.php:2373 ../wikilib.php:770
  +#: ../wikilib.php:935
  +msgid "No difference found"
  +msgstr "Aucune diffrence trouv"
  +
   # ../wikilib.php:803
  -#: ../wikilib.php:1011
  +#: ../wikilib.php:968
   msgid "mail does not supported by default."
   msgstr "La messagerie n'est pas support par dfaut."
   
   # ../wikilib.php:807
  -#: ../wikilib.php:1015
  +#: ../wikilib.php:972
   msgid "Sent notification mail."
   msgstr "Des notifications par messagerie ont t envoyes."
   
   # ../wikilib.php:809
  -#: ../wikilib.php:1017
  +#: ../wikilib.php:974
   msgid "No subscribers found."
   msgstr "Aucun abonn trouv."
   
   # ../wikilib.php:814
  -#: ../wikilib.php:1022
  +#: ../wikilib.php:979
   #, c-format
   msgid "%s is not editable"
   msgstr "%s n'est pas ditable"
   
   # ../wikilib.php:816
  -#: ../wikilib.php:1024
  +#: ../wikilib.php:981
   #, c-format
   msgid "%s is saved"
   msgstr "%s est sauvegard"
   
   # ../wikilib.php:838
  -#: ../wikilib.php:1048
  +#: ../wikilib.php:1005
   msgid "Nobody subscribed to this page."
   msgstr "Personne n'est abonn  cette page, aucun mail envoy"
   
   # ../wikilib.php:860
  -#: ../wikilib.php:1070
  +#: ../wikilib.php:1027
   #, c-format
   msgid "%s page is modified"
   msgstr "la page %s est modifi"
   
   # ../wikilib.php:870
  -#: ../wikilib.php:1080
  +#: ../wikilib.php:1037
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
  @@ -1309,48 +1280,48 @@
   "\n"
   
   # ../wikilib.php:883
  -#: ../wikilib.php:1093
  +#: ../wikilib.php:1050
   msgid "Send notification mails to all subscribers"
   msgstr "Envoyez un mail de notification  tous les abonns"
   
   # ../wikilib.php:887
  -#: ../wikilib.php:1097
  +#: ../wikilib.php:1054
   msgid "Mails are sent successfully"
   msgstr "Mail envoy avec succs"
   
   # ../wikilib.php:888
  -#: ../wikilib.php:1098
  +#: ../wikilib.php:1055
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr "un mail a t envoy  '%s'"
   
   # ../plugin/login.php:26 ../wikilib.php:1051
  -#: ../wikilib.php:1261
  +#: ../wikilib.php:1218
   msgid "Login"
   msgstr "Se connecter"
   
   # ../wikilib.php:1070
  -#: ../wikilib.php:1280
  +#: ../wikilib.php:1237
   msgid "Make profile"
   msgstr "Faire un profil"
   
   # ../wikilib.php:1071
  -#: ../wikilib.php:1281
  +#: ../wikilib.php:1238
   msgid "password again"
   msgstr "mot de passe de nouveau"
   
   # ../wikilib.php:1082
  -#: ../wikilib.php:1292
  +#: ../wikilib.php:1249
   msgid "New password"
   msgstr "Nouveau mot de passe"
   
   # ../wikilib.php:1088
  -#: ../wikilib.php:1298
  +#: ../wikilib.php:1255
   msgid "logout"
   msgstr "se dconnecter"
   
   # ../wikilib.php:1479
  -#: ../wikilib.php:1732
  +#: ../wikilib.php:1691
   #, c-format
   msgid "Title search for \"%s\""
   msgstr "Recherche de titre pour \"%s\""
  @@ -1404,3 +1375,31 @@
   #: ../locale/dummy.php:7
   msgid "TrackBack"
   msgstr ""
  +
  +# ../wiki.php:2110
  +#~ msgid "Revision History"
  +#~ msgstr "Historique de rvision"
  +
  +# ../wiki.php:2211 ../wiki.php:2360
  +#~ msgid "No older revisions available"
  +#~ msgstr "Aucune rvision plus ancienne disponible"
  +
  +# ../wiki.php:2341
  +#~ msgid "Difference between yours and the current"
  +#~ msgstr "Diffrence entre votre version et la courante"
  +
  +# ../wiki.php:2376
  +#~ msgid "Difference between versions"
  +#~ msgstr "Diffrence entre les versions"
  +
  +# ../wiki.php:2378
  +#~ msgid "Difference between r%s and r%s"
  +#~ msgstr "Diffrence entre r%s et r%s"
  +
  +# ../wiki.php:2382
  +#~ msgid "Difference between r%s and the current"
  +#~ msgstr "Diffrence entre r%s et la version courante"
  +
  +# ../wikilib.php:507
  +#~ msgid "Info. for %s"
  +#~ msgstr "Information sur %s"
  
  
  
  1.16      +137 -145  moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- ko.po	24 Oct 2004 17:29:32 -0000	1.15
  +++ ko.po	4 Jan 2005 09:06:03 -0000	1.16
  @@ -1,11 +1,11 @@
   # MoniWiki message file
  -# Copyright (C) 2003 Free Software Foundation, Inc.
  -# Won-kyu Park <wkpark@kldp.org>, 2003.
  +# Copyright (C) 2003-2004 Free Software Foundation, Inc.
  +# Won-kyu Park <wkpark@kldp.org>, 2003-2004.
   #
   msgid ""
   msgstr ""
  -"Project-Id-Version: MoniWiki 1.0\n"
  -"POT-Creation-Date: 2004-10-18 01:48+0900\n"
  +"Project-Id-Version: MoniWiki 1.1\n"
  +"POT-Creation-Date: 2005-01-04 18:08+0900\n"
   "PO-Revision-Date: 2003-04-29 19:00+0900\n"
   "Last-Translator: Won-kyu Park <wkpark@kldp.org>\n"
   "Language-Team: ko <ko@li.org>\n"
  @@ -13,12 +13,12 @@
   "Content-Type: text/plain; charset=EUC-KR\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  -#: ../plugin/Attachment.php:80
  +#: ../plugin/Attachment.php:82
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr ""
   
  -#: ../plugin/Attachment.php:83
  +#: ../plugin/Attachment.php:85
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
  @@ -87,7 +87,7 @@
   msgstr ""
   
   #: ../plugin/Blog.php:258
  -msgid "<b>horizontal rule</b> ---- does not applied on the blog mode."
  +msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
   msgstr "<b>μ</b> ---- α   ʽϴ."
   
   #: ../plugin/BlogChanges.php:198
  @@ -139,7 +139,7 @@
   msgid "Comment"
   msgstr " ޱ"
   
  -#: ../plugin/Comment.php:49 ../wikilib.php:607
  +#: ../plugin/Comment.php:49 ../wikilib.php:571
   msgid "Preview"
   msgstr "̸"
   
  @@ -156,28 +156,28 @@
   msgid "Comment added successfully"
   msgstr " ÷Ǿϴ"
   
  -#: ../plugin/Draw.php:25 ../plugin/OeKaki.php:36
  +#: ../plugin/Draw.php:29 ../plugin/OeKaki.php:36
   msgid "Draw new picture"
   msgstr " ׸ "
   
  -#: ../plugin/Draw.php:45 ../plugin/UploadFile.php:109
  +#: ../plugin/Draw.php:81 ../plugin/UploadFile.php:146
   #, c-format
   msgid "Fail to copy \"%s\" to \"%s\""
   msgstr ""
   
  -#: ../plugin/Draw.php:55
  +#: ../plugin/Draw.php:108
   msgid "Fatal error !"
   msgstr ""
   
  -#: ../plugin/Draw.php:58
  +#: ../plugin/Draw.php:111
   msgid "No filename given"
   msgstr ""
   
  -#: ../plugin/Draw.php:79
  +#: ../plugin/Draw.php:132
   msgid "Edit drawing"
   msgstr "׸ ׸"
   
  -#: ../plugin/Draw.php:88
  +#: ../plugin/Draw.php:141
   msgid "Edit new drawing"
   msgstr " ׸ ׸"
   
  @@ -210,7 +210,7 @@
   msgid "BackLinks search for \"%s\""
   msgstr "\"%s\"  ũ ã"
   
  -#: ../plugin/FullSearch.php:103 ../wikilib.php:1736
  +#: ../plugin/FullSearch.php:103 ../wikilib.php:1695
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr ""
  @@ -223,7 +223,7 @@
   msgid "show comments"
   msgstr " "
   
  -#: ../plugin/Gallery.php:277 ../plugin/Gallery.php:280 ../wikilib.php:977
  +#: ../plugin/Gallery.php:277 ../plugin/Gallery.php:280 ../wikilib.php:934
   #, c-format
   msgid "Go back or return to %s"
   msgstr "ڷ Ȥ %s() "
  @@ -236,7 +236,7 @@
   msgid "Comments is added"
   msgstr ""
   
  -#: ../plugin/ImportUrl.php:48
  +#: ../plugin/ImportUrl.php:105
   msgid "Import URL"
   msgstr ""
   
  @@ -290,7 +290,7 @@
   msgid "TwinPages of %s"
   msgstr "%s ֵ "
   
  -#: ../plugin/TwinPages.php:18 ../wiki.php:2002 ../wiki.php:3300
  +#: ../plugin/TwinPages.php:18 ../wiki.php:2153 ../wiki.php:3292
   msgid "See TwinPages: "
   msgstr ""
   
  @@ -298,41 +298,41 @@
   msgid "No TwinPages found."
   msgstr "ֵ  ϴ"
   
  -#: ../plugin/UploadFile.php:73
  +#: ../plugin/UploadFile.php:78
   #, c-format
  -msgid "%s does not allowed to upload"
  +msgid "%s is not allowed to upload"
   msgstr "%s() ε尡  ʽϴ"
   
  -#: ../plugin/UploadFile.php:115
  +#: ../plugin/UploadFile.php:155
   #, c-format
   msgid "File \"%s\" is uploaded successfully"
   msgstr "\"%s\"  ö󰬽ϴ"
   
  -#: ../plugin/UploadFile.php:146
  +#: ../plugin/UploadFile.php:186
   msgid "Files are uploaded successfully"
   msgstr "  ö󰬽ϴ"
   
  -#: ../plugin/UploadFile.php:180
  +#: ../plugin/UploadFile.php:220
   msgid ": Rename"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:121 ../plugin/rename.php:69 ../wikilib.php:735
  +#: ../plugin/UploadedFiles.php:124 ../plugin/rename.php:69 ../wikilib.php:692
   msgid "Password"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:122 ../wikilib.php:713
  +#: ../plugin/UploadedFiles.php:125 ../wikilib.php:670
   msgid "Delete selected files"
   msgstr ""
   
  -#: ../plugin/VisualTour.php:55
  +#: ../plugin/VisualTour.php:56
   msgid "Normal"
   msgstr ""
   
  -#: ../plugin/VisualTour.php:57
  +#: ../plugin/VisualTour.php:58
   msgid "Wider"
   msgstr "а"
   
  -#: ../plugin/VisualTour.php:59
  +#: ../plugin/VisualTour.php:60
   msgid "Deeper"
   msgstr ""
   
  @@ -348,7 +348,7 @@
   msgid "Voted successfully"
   msgstr ""
   
  -#: ../plugin/WordIndex.php:65 ../wikilib.php:1535
  +#: ../plugin/WordIndex.php:65 ../wikilib.php:1492
   msgid "Others"
   msgstr ""
   
  @@ -375,7 +375,7 @@
   msgid "Back to UserPreferences"
   msgstr "UserPreferences "
   
  -#: ../plugin/format.php:16
  +#: ../plugin/format.php:15
   msgid "It is a XML format !"
   msgstr ""
   
  @@ -407,7 +407,7 @@
   msgid "No manpage found"
   msgstr "Manpage ϴ"
   
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1286
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1243
   msgid "Login or Join"
   msgstr ""
   
  @@ -434,6 +434,10 @@
   msgid "last modified %s %s"
   msgstr ""
   
  +#: ../plugin/processor/vim.php:42
  +msgid "Toggle line numbers"
  +msgstr ""
  +
   #: ../plugin/quicklinks.php:16 ../plugin/subscribe.php:24
   msgid "Please login or make your ID."
   msgstr "αϰų ID 弼"
  @@ -531,7 +535,7 @@
   msgid "Only WikiMaster can rename this page"
   msgstr ""
   
  -#: ../plugin/rename.php:71 ../wikilib.php:773
  +#: ../plugin/rename.php:71 ../wikilib.php:730
   msgid "with revision history"
   msgstr " 丮 Բ"
   
  @@ -590,25 +594,25 @@
   msgid "Please contact to WikiMaster"
   msgstr ""
   
  -#: ../plugin/sendping.php:14 ../plugin/trackback.php:41
  +#: ../plugin/sendping.php:13 ../plugin/trackback.php:41
   msgid "Error: Page Not found !"
   msgstr ""
   
  -#: ../plugin/sendping.php:55
  +#: ../plugin/sendping.php:54
   msgid "Error: No entry found!"
   msgstr ""
   
  -#: ../plugin/sendping.php:73
  +#: ../plugin/sendping.php:72
   msgid "Send TrackBack ping"
   msgstr ""
   
  -#: ../plugin/sendping.php:160
  +#: ../plugin/sendping.php:166
   msgid "Trackback sent"
   msgstr "Ʈ"
   
   #: ../plugin/subscribe.php:12
  -msgid "EmailNotification does not activated"
  -msgstr ""
  +msgid "EmailNotification is not activated"
  +msgstr "EmailNotification Ȱȭ ʾҽϴ !"
   
   #: ../plugin/subscribe.php:13
   msgid ""
  @@ -786,122 +790,96 @@
   msgid "Whois search result for %s"
   msgstr "%s  Whois ġ "
   
  -#: ../wiki.php:890
  +#: ../wiki.php:908
   #, c-format
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1069
  +#: ../wiki.php:1199
  +msgid "Version info does not supported by this wiki"
  +msgstr ""
  +
  +#: ../wiki.php:1210
   msgid "File does not exists"
   msgstr ""
   
  -#: ../wiki.php:1998
  +#: ../wiki.php:2149
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:1998
  +#: ../wiki.php:2149
   msgid "TwinPages"
   msgstr "TwinPages"
   
  -#: ../wiki.php:2318
  -msgid "Revision History"
  -msgstr " 丮"
  -
  -#: ../wiki.php:2419 ../wiki.php:2567
  -msgid "No older revisions available"
  -msgstr "  ϴ"
  -
  -#: ../wiki.php:2546 ../wiki.php:2584 ../wikilib.php:978
  -msgid "No difference found"
  -msgstr "ȭ ϴ"
  -
  -#: ../wiki.php:2548
  -msgid "Difference between yours and the current"
  -msgstr ""
  -
  -#: ../wiki.php:2586
  -msgid "Difference between versions"
  -msgstr ""
  -
  -#: ../wiki.php:2588
  -#, c-format
  -msgid "Difference between r%s and r%s"
  -msgstr "r%s r%s "
  -
  -#: ../wiki.php:2591
  -#, c-format
  -msgid "Difference between r%s and the current"
  -msgstr "r%s   "
  -
  -#: ../wiki.php:2796 ../locale/dummy.php:6
  +#: ../wiki.php:2762 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "ġ"
   
  -#: ../wiki.php:2798
  +#: ../wiki.php:2764
   msgid "NotEditable"
   msgstr "ĥ "
   
  -#: ../wiki.php:2800 ../locale/dummy.php:6
  +#: ../wiki.php:2766 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:2801 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:2767 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "ã"
   
  -#: ../wiki.php:3025
  +#: ../wiki.php:2998
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:3254
  +#: ../wiki.php:3244
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:3255 ../wiki.php:3266
  +#: ../wiki.php:3245 ../wiki.php:3256
   msgid "Please contact WikiMasters"
   msgstr ""
   
  -#: ../wiki.php:3265
  +#: ../wiki.php:3255
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:3302 ../wiki.php:3305 ../wikilib.php:904
  +#: ../wiki.php:3294 ../wiki.php:3297 ../wikilib.php:861
   msgid "Create this page"
   msgstr " "
   
  -#: ../wiki.php:3307 ../wikilib.php:906
  +#: ../wiki.php:3299 ../wikilib.php:863
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
   
  -#: ../wiki.php:3307 ../wikilib.php:906
  +#: ../wiki.php:3299 ../wikilib.php:863
   msgid "title"
   msgstr ""
   
  -#: ../wiki.php:3313
  +#: ../wiki.php:3305
   msgid " or alternativly, use one of these templates:\n"
   msgstr " Ȥ Ʒ øƮ  ̿ϼ:\n"
   
  -#: ../wiki.php:3316
  +#: ../wiki.php:3308
   msgid "To create your own templates, add a page with a 'Template' suffix.\n"
   msgstr "øƮ ÷ Template ̸   弼.\n"
   
  -#: ../wiki.php:3391
  +#: ../wiki.php:3383
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr ""
   
  -#: ../wiki.php:3403
  +#: ../wiki.php:3395
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:3406
  +#: ../wiki.php:3398
   msgid "Please enter the valid password"
   msgstr "Ȯ йȣ ־ּ"
   
  -#: ../wikilib.php:482
  +#: ../wikilib.php:440
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -923,221 +901,220 @@
   "<b>:</b> =  1 =; ==  2 ==; ===  3 ===;\n"
   "====  4 ====; =====  5 =====.<br />\n"
   "<b>:</b>  * Ѿ Ѱ; 1., a., A., i., I. ȣ޸ ;\n"
  -"1.#n  n ȣ ޱ; 鸸  鿩.<br />\n"
  +"1.#n  n ȣ ű; 鸸  鿩.<br />\n"
   "<b>:</b> JoinCapitalizedWords; [\"߰ȣ ūǥ Ἥ\"];\n"
   "[߰ȣ ȣļ ];\n"
   "url; [url]; [url ǥõ ̸].<br />\n"
   "<b>̺</b>: ||   |||| ĭ ģ  ||;<br />\n"
   "̺̳     ȵ˴ϴ.<br />\n"
   
  -#: ../wikilib.php:542
  +#: ../wikilib.php:506
   msgid "Use one of the following templates as an initial release :\n"
   msgstr "ó   øƮ Ȱϼ :\n"
   
  -#: ../wikilib.php:544
  +#: ../wikilib.php:508
   msgid "To create your own templates, add a page with a 'Template' suffix."
   msgstr "øƮ ÷ Template ̸   弼."
   
  -#: ../wikilib.php:560
  +#: ../wikilib.php:524
   msgid "Skip to preview"
   msgstr "̸"
   
  -#: ../wikilib.php:562
  +#: ../wikilib.php:526
   msgid "ReduceEditor"
   msgstr "â ̱"
   
  -#: ../wikilib.php:563
  +#: ../wikilib.php:527
   msgid "EnlargeEditor"
   msgstr "â ̱"
   
  -#: ../wikilib.php:567 ../locale/dummy.php:6
  +#: ../wikilib.php:531 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr "Ű"
   
  -#: ../wikilib.php:568
  +#: ../wikilib.php:532
   msgid "HelpOnEditing"
   msgstr "ġ "
   
  -#: ../wikilib.php:585
  +#: ../wikilib.php:549
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:601
  +#: ../wikilib.php:565
   msgid "--Select Category--"
  -msgstr ""
  +msgstr "--īװ --"
   
  -#: ../wikilib.php:608 ../wikilib.php:1289
  +#: ../wikilib.php:572 ../wikilib.php:1246
   msgid "Save"
   msgstr ""
   
  -#: ../wikilib.php:609
  +#: ../wikilib.php:573
   msgid "Summary of Change"
   msgstr "ٲ "
   
  -#: ../wikilib.php:651
  -#, c-format
  -msgid "Info. for %s"
  -msgstr "%s "
  -
  -#: ../wikilib.php:661
  +#: ../wikilib.php:618
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:666
  +#: ../wikilib.php:623
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s() ȿ ׼ ƴմϴ"
   
  -#: ../wikilib.php:668
  +#: ../wikilib.php:625
   msgid "Is it valid action ?"
   msgstr ""
   
  -#: ../wikilib.php:701
  +#: ../wikilib.php:658
   #, c-format
   msgid "File '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:703
  +#: ../wikilib.php:660
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr ""
   
  -#: ../wikilib.php:708
  +#: ../wikilib.php:665
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:710
  +#: ../wikilib.php:667
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr ""
   
  -#: ../wikilib.php:720 ../wikilib.php:740
  +#: ../wikilib.php:677 ../wikilib.php:697
   msgid "No files are selected !"
   msgstr " õ ʾҽϴ !"
   
  -#: ../wikilib.php:733
  +#: ../wikilib.php:690
   #, c-format
   msgid "Did you really want to delete '%s' ?"
  -msgstr ""
  +msgstr " '%s'() ðڽϱ ?"
   
  -#: ../wikilib.php:736
  +#: ../wikilib.php:693
   msgid "Delete"
   msgstr ""
   
  -#: ../wikilib.php:737
  +#: ../wikilib.php:694
   msgid "Delete selected file"
   msgstr "õ  "
   
  -#: ../wikilib.php:759
  +#: ../wikilib.php:716
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr ""
   
  -#: ../wikilib.php:765
  +#: ../wikilib.php:722
   msgid "Please delete this file manually."
   msgstr ""
   
  -#: ../wikilib.php:767
  +#: ../wikilib.php:724
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "\"%s\"()  ?"
   
  -#: ../wikilib.php:869 ../wikilib.php:1725
  +#: ../wikilib.php:826 ../wikilib.php:1684
   msgid "Use more specific text"
   msgstr "  ڼ Էϼ"
   
  -#: ../wikilib.php:942
  +#: ../wikilib.php:899
   msgid "Goto Editor"
   msgstr " "
   
  -#: ../wikilib.php:951
  +#: ../wikilib.php:908
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "%s() ġ  ٸ    ߽ϴ"
   
  -#: ../wikilib.php:956 ../wikilib.php:985
  +#: ../wikilib.php:913 ../wikilib.php:942
   #, c-format
   msgid "Preview of %s"
   msgstr "%s ̸"
   
  -#: ../wikilib.php:963
  +#: ../wikilib.php:920
   msgid "Conflict error!"
   msgstr "浹!"
   
  -#: ../wikilib.php:1011
  +#: ../wikilib.php:935
  +msgid "No difference found"
  +msgstr "ȭ ϴ"
  +
  +#: ../wikilib.php:968
   msgid "mail does not supported by default."
   msgstr ""
   
  -#: ../wikilib.php:1015
  +#: ../wikilib.php:972
   msgid "Sent notification mail."
   msgstr ""
   
  -#: ../wikilib.php:1017
  +#: ../wikilib.php:974
   msgid "No subscribers found."
   msgstr "ڰ ϴ"
   
  -#: ../wikilib.php:1022
  +#: ../wikilib.php:979
   #, c-format
   msgid "%s is not editable"
   msgstr "%s()   ϴ"
   
  -#: ../wikilib.php:1024
  +#: ../wikilib.php:981
   #, c-format
   msgid "%s is saved"
   msgstr "%s() Ǿϴ"
   
  -#: ../wikilib.php:1048
  +#: ../wikilib.php:1005
   msgid "Nobody subscribed to this page."
  -msgstr ""
  +msgstr "ƹ   ʰֽϴ."
   
  -#: ../wikilib.php:1070
  +#: ../wikilib.php:1027
   #, c-format
   msgid "%s page is modified"
   msgstr ""
   
  -#: ../wikilib.php:1080
  +#: ../wikilib.php:1037
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:1093
  +#: ../wikilib.php:1050
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:1097
  +#: ../wikilib.php:1054
   msgid "Mails are sent successfully"
   msgstr ""
   
  -#: ../wikilib.php:1098
  +#: ../wikilib.php:1055
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1261
  +#: ../wikilib.php:1218
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:1280
  +#: ../wikilib.php:1237
   msgid "Make profile"
   msgstr ""
   
  -#: ../wikilib.php:1281
  +#: ../wikilib.php:1238
   msgid "password again"
   msgstr ""
   
  -#: ../wikilib.php:1292
  +#: ../wikilib.php:1249
   msgid "New password"
   msgstr " йȣ"
   
  -#: ../wikilib.php:1298
  +#: ../wikilib.php:1255
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:1732
  +#: ../wikilib.php:1691
   #, c-format
   msgid "Title search for \"%s\""
   msgstr ""
  @@ -1181,3 +1158,18 @@
   #: ../locale/dummy.php:7
   msgid "TrackBack"
   msgstr "Ʈ"
  +
  +#~ msgid "Revision History"
  +#~ msgstr " 丮"
  +
  +#~ msgid "No older revisions available"
  +#~ msgstr "  ϴ"
  +
  +#~ msgid "Difference between r%s and r%s"
  +#~ msgstr "r%s r%s "
  +
  +#~ msgid "Difference between r%s and the current"
  +#~ msgstr "r%s   "
  +
  +#~ msgid "Info. for %s"
  +#~ msgstr "%s "
  
  
  
  1.11      +114 -137  moniwiki/locale/po/moniwiki.pot
  
  Index: moniwiki.pot
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/moniwiki.pot,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- moniwiki.pot	17 Oct 2004 16:45:26 -0000	1.10
  +++ moniwiki.pot	4 Jan 2005 09:06:03 -0000	1.11
  @@ -6,7 +6,7 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: PACKAGE VERSION\n"
  -"POT-Creation-Date: 2004-10-18 01:48+0900\n"
  +"POT-Creation-Date: 2005-01-04 18:08+0900\n"
   "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
   "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
   "Language-Team: LANGUAGE <LL@li.org>\n"
  @@ -14,12 +14,12 @@
   "Content-Type: text/plain; charset=CHARSET\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  -#: ../plugin/Attachment.php:80
  +#: ../plugin/Attachment.php:82
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr ""
   
  -#: ../plugin/Attachment.php:83
  +#: ../plugin/Attachment.php:85
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
  @@ -88,7 +88,7 @@
   msgstr ""
   
   #: ../plugin/Blog.php:258
  -msgid "<b>horizontal rule</b> ---- does not applied on the blog mode."
  +msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
   msgstr ""
   
   #: ../plugin/BlogChanges.php:198
  @@ -140,7 +140,7 @@
   msgid "Comment"
   msgstr ""
   
  -#: ../plugin/Comment.php:49 ../wikilib.php:607
  +#: ../plugin/Comment.php:49 ../wikilib.php:571
   msgid "Preview"
   msgstr ""
   
  @@ -157,28 +157,28 @@
   msgid "Comment added successfully"
   msgstr ""
   
  -#: ../plugin/Draw.php:25 ../plugin/OeKaki.php:36
  +#: ../plugin/Draw.php:29 ../plugin/OeKaki.php:36
   msgid "Draw new picture"
   msgstr ""
   
  -#: ../plugin/Draw.php:45 ../plugin/UploadFile.php:109
  +#: ../plugin/Draw.php:81 ../plugin/UploadFile.php:146
   #, c-format
   msgid "Fail to copy \"%s\" to \"%s\""
   msgstr ""
   
  -#: ../plugin/Draw.php:55
  +#: ../plugin/Draw.php:108
   msgid "Fatal error !"
   msgstr ""
   
  -#: ../plugin/Draw.php:58
  +#: ../plugin/Draw.php:111
   msgid "No filename given"
   msgstr ""
   
  -#: ../plugin/Draw.php:79
  +#: ../plugin/Draw.php:132
   msgid "Edit drawing"
   msgstr ""
   
  -#: ../plugin/Draw.php:88
  +#: ../plugin/Draw.php:141
   msgid "Edit new drawing"
   msgstr ""
   
  @@ -211,7 +211,7 @@
   msgid "BackLinks search for \"%s\""
   msgstr ""
   
  -#: ../plugin/FullSearch.php:103 ../wikilib.php:1736
  +#: ../plugin/FullSearch.php:103 ../wikilib.php:1695
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr ""
  @@ -224,7 +224,7 @@
   msgid "show comments"
   msgstr ""
   
  -#: ../plugin/Gallery.php:277 ../plugin/Gallery.php:280 ../wikilib.php:977
  +#: ../plugin/Gallery.php:277 ../plugin/Gallery.php:280 ../wikilib.php:934
   #, c-format
   msgid "Go back or return to %s"
   msgstr ""
  @@ -237,7 +237,7 @@
   msgid "Comments is added"
   msgstr ""
   
  -#: ../plugin/ImportUrl.php:48
  +#: ../plugin/ImportUrl.php:105
   msgid "Import URL"
   msgstr ""
   
  @@ -291,7 +291,7 @@
   msgid "TwinPages of %s"
   msgstr ""
   
  -#: ../plugin/TwinPages.php:18 ../wiki.php:2002 ../wiki.php:3300
  +#: ../plugin/TwinPages.php:18 ../wiki.php:2153 ../wiki.php:3292
   msgid "See TwinPages: "
   msgstr ""
   
  @@ -299,41 +299,41 @@
   msgid "No TwinPages found."
   msgstr ""
   
  -#: ../plugin/UploadFile.php:73
  +#: ../plugin/UploadFile.php:78
   #, c-format
  -msgid "%s does not allowed to upload"
  +msgid "%s is not allowed to upload"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:115
  +#: ../plugin/UploadFile.php:155
   #, c-format
   msgid "File \"%s\" is uploaded successfully"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:146
  +#: ../plugin/UploadFile.php:186
   msgid "Files are uploaded successfully"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:180
  +#: ../plugin/UploadFile.php:220
   msgid ": Rename"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:121 ../plugin/rename.php:69 ../wikilib.php:735
  +#: ../plugin/UploadedFiles.php:124 ../plugin/rename.php:69 ../wikilib.php:692
   msgid "Password"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:122 ../wikilib.php:713
  +#: ../plugin/UploadedFiles.php:125 ../wikilib.php:670
   msgid "Delete selected files"
   msgstr ""
   
  -#: ../plugin/VisualTour.php:55
  +#: ../plugin/VisualTour.php:56
   msgid "Normal"
   msgstr ""
   
  -#: ../plugin/VisualTour.php:57
  +#: ../plugin/VisualTour.php:58
   msgid "Wider"
   msgstr ""
   
  -#: ../plugin/VisualTour.php:59
  +#: ../plugin/VisualTour.php:60
   msgid "Deeper"
   msgstr ""
   
  @@ -349,7 +349,7 @@
   msgid "Voted successfully"
   msgstr ""
   
  -#: ../plugin/WordIndex.php:65 ../wikilib.php:1535
  +#: ../plugin/WordIndex.php:65 ../wikilib.php:1492
   msgid "Others"
   msgstr ""
   
  @@ -376,7 +376,7 @@
   msgid "Back to UserPreferences"
   msgstr ""
   
  -#: ../plugin/format.php:16
  +#: ../plugin/format.php:15
   msgid "It is a XML format !"
   msgstr ""
   
  @@ -408,7 +408,7 @@
   msgid "No manpage found"
   msgstr ""
   
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1286
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1243
   msgid "Login or Join"
   msgstr ""
   
  @@ -435,6 +435,10 @@
   msgid "last modified %s %s"
   msgstr ""
   
  +#: ../plugin/processor/vim.php:42
  +msgid "Toggle line numbers"
  +msgstr ""
  +
   #: ../plugin/quicklinks.php:16 ../plugin/subscribe.php:24
   msgid "Please login or make your ID."
   msgstr ""
  @@ -531,7 +535,7 @@
   msgid "Only WikiMaster can rename this page"
   msgstr ""
   
  -#: ../plugin/rename.php:71 ../wikilib.php:773
  +#: ../plugin/rename.php:71 ../wikilib.php:730
   msgid "with revision history"
   msgstr ""
   
  @@ -590,24 +594,24 @@
   msgid "Please contact to WikiMaster"
   msgstr ""
   
  -#: ../plugin/sendping.php:14 ../plugin/trackback.php:41
  +#: ../plugin/sendping.php:13 ../plugin/trackback.php:41
   msgid "Error: Page Not found !"
   msgstr ""
   
  -#: ../plugin/sendping.php:55
  +#: ../plugin/sendping.php:54
   msgid "Error: No entry found!"
   msgstr ""
   
  -#: ../plugin/sendping.php:73
  +#: ../plugin/sendping.php:72
   msgid "Send TrackBack ping"
   msgstr ""
   
  -#: ../plugin/sendping.php:160
  +#: ../plugin/sendping.php:166
   msgid "Trackback sent"
   msgstr ""
   
   #: ../plugin/subscribe.php:12
  -msgid "EmailNotification does not activated"
  +msgid "EmailNotification is not activated"
   msgstr ""
   
   #: ../plugin/subscribe.php:13
  @@ -782,122 +786,96 @@
   msgid "Whois search result for %s"
   msgstr ""
   
  -#: ../wiki.php:890
  +#: ../wiki.php:908
   #, c-format
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1069
  +#: ../wiki.php:1199
  +msgid "Version info does not supported by this wiki"
  +msgstr ""
  +
  +#: ../wiki.php:1210
   msgid "File does not exists"
   msgstr ""
   
  -#: ../wiki.php:1998
  +#: ../wiki.php:2149
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:1998
  +#: ../wiki.php:2149
   msgid "TwinPages"
   msgstr ""
   
  -#: ../wiki.php:2318
  -msgid "Revision History"
  -msgstr ""
  -
  -#: ../wiki.php:2419 ../wiki.php:2567
  -msgid "No older revisions available"
  -msgstr ""
  -
  -#: ../wiki.php:2546 ../wiki.php:2584 ../wikilib.php:978
  -msgid "No difference found"
  -msgstr ""
  -
  -#: ../wiki.php:2548
  -msgid "Difference between yours and the current"
  -msgstr ""
  -
  -#: ../wiki.php:2586
  -msgid "Difference between versions"
  -msgstr ""
  -
  -#: ../wiki.php:2588
  -#, c-format
  -msgid "Difference between r%s and r%s"
  -msgstr ""
  -
  -#: ../wiki.php:2591
  -#, c-format
  -msgid "Difference between r%s and the current"
  -msgstr ""
  -
  -#: ../wiki.php:2796 ../locale/dummy.php:6
  +#: ../wiki.php:2762 ../locale/dummy.php:6
   msgid "EditText"
   msgstr ""
   
  -#: ../wiki.php:2798
  +#: ../wiki.php:2764
   msgid "NotEditable"
   msgstr ""
   
  -#: ../wiki.php:2800 ../locale/dummy.php:6
  +#: ../wiki.php:2766 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:2801 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:2767 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr ""
   
  -#: ../wiki.php:3025
  +#: ../wiki.php:2998
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:3254
  +#: ../wiki.php:3244
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:3255 ../wiki.php:3266
  +#: ../wiki.php:3245 ../wiki.php:3256
   msgid "Please contact WikiMasters"
   msgstr ""
   
  -#: ../wiki.php:3265
  +#: ../wiki.php:3255
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:3302 ../wiki.php:3305 ../wikilib.php:904
  +#: ../wiki.php:3294 ../wiki.php:3297 ../wikilib.php:861
   msgid "Create this page"
   msgstr ""
   
  -#: ../wiki.php:3307 ../wikilib.php:906
  +#: ../wiki.php:3299 ../wikilib.php:863
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
   
  -#: ../wiki.php:3307 ../wikilib.php:906
  +#: ../wiki.php:3299 ../wikilib.php:863
   msgid "title"
   msgstr ""
   
  -#: ../wiki.php:3313
  +#: ../wiki.php:3305
   msgid " or alternativly, use one of these templates:\n"
   msgstr ""
   
  -#: ../wiki.php:3316
  +#: ../wiki.php:3308
   msgid "To create your own templates, add a page with a 'Template' suffix.\n"
   msgstr ""
   
  -#: ../wiki.php:3391
  +#: ../wiki.php:3383
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr ""
   
  -#: ../wiki.php:3403
  +#: ../wiki.php:3395
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:3406
  +#: ../wiki.php:3398
   msgid "Please enter the valid password"
   msgstr ""
   
  -#: ../wikilib.php:482
  +#: ../wikilib.php:440
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -914,214 +892,213 @@
   "no trailing white space allowed after tables or titles.<br />\n"
   msgstr ""
   
  -#: ../wikilib.php:542
  +#: ../wikilib.php:506
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   
  -#: ../wikilib.php:544
  +#: ../wikilib.php:508
   msgid "To create your own templates, add a page with a 'Template' suffix."
   msgstr ""
   
  -#: ../wikilib.php:560
  +#: ../wikilib.php:524
   msgid "Skip to preview"
   msgstr ""
   
  -#: ../wikilib.php:562
  +#: ../wikilib.php:526
   msgid "ReduceEditor"
   msgstr ""
   
  -#: ../wikilib.php:563
  +#: ../wikilib.php:527
   msgid "EnlargeEditor"
   msgstr ""
   
  -#: ../wikilib.php:567 ../locale/dummy.php:6
  +#: ../wikilib.php:531 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
  -#: ../wikilib.php:568
  +#: ../wikilib.php:532
   msgid "HelpOnEditing"
   msgstr ""
   
  -#: ../wikilib.php:585
  +#: ../wikilib.php:549
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:601
  +#: ../wikilib.php:565
   msgid "--Select Category--"
   msgstr ""
   
  -#: ../wikilib.php:608 ../wikilib.php:1289
  +#: ../wikilib.php:572 ../wikilib.php:1246
   msgid "Save"
   msgstr ""
   
  -#: ../wikilib.php:609
  +#: ../wikilib.php:573
   msgid "Summary of Change"
   msgstr ""
   
  -#: ../wikilib.php:651
  -#, c-format
  -msgid "Info. for %s"
  -msgstr ""
  -
  -#: ../wikilib.php:661
  +#: ../wikilib.php:618
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:666
  +#: ../wikilib.php:623
   #, c-format
   msgid "%s is not valid action"
   msgstr ""
   
  -#: ../wikilib.php:668
  +#: ../wikilib.php:625
   msgid "Is it valid action ?"
   msgstr ""
   
  -#: ../wikilib.php:701
  +#: ../wikilib.php:658
   #, c-format
   msgid "File '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:703
  +#: ../wikilib.php:660
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr ""
   
  -#: ../wikilib.php:708
  +#: ../wikilib.php:665
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:710
  +#: ../wikilib.php:667
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr ""
   
  -#: ../wikilib.php:720 ../wikilib.php:740
  +#: ../wikilib.php:677 ../wikilib.php:697
   msgid "No files are selected !"
   msgstr ""
   
  -#: ../wikilib.php:733
  +#: ../wikilib.php:690
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
  -#: ../wikilib.php:736
  +#: ../wikilib.php:693
   msgid "Delete"
   msgstr ""
   
  -#: ../wikilib.php:737
  +#: ../wikilib.php:694
   msgid "Delete selected file"
   msgstr ""
   
  -#: ../wikilib.php:759
  +#: ../wikilib.php:716
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr ""
   
  -#: ../wikilib.php:765
  +#: ../wikilib.php:722
   msgid "Please delete this file manually."
   msgstr ""
   
  -#: ../wikilib.php:767
  +#: ../wikilib.php:724
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr ""
   
  -#: ../wikilib.php:869 ../wikilib.php:1725
  +#: ../wikilib.php:826 ../wikilib.php:1684
   msgid "Use more specific text"
   msgstr ""
   
  -#: ../wikilib.php:942
  +#: ../wikilib.php:899
   msgid "Goto Editor"
   msgstr ""
   
  -#: ../wikilib.php:951
  +#: ../wikilib.php:908
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr ""
   
  -#: ../wikilib.php:956 ../wikilib.php:985
  +#: ../wikilib.php:913 ../wikilib.php:942
   #, c-format
   msgid "Preview of %s"
   msgstr ""
   
  -#: ../wikilib.php:963
  +#: ../wikilib.php:920
   msgid "Conflict error!"
   msgstr ""
   
  -#: ../wikilib.php:1011
  +#: ../wikilib.php:935
  +msgid "No difference found"
  +msgstr ""
  +
  +#: ../wikilib.php:968
   msgid "mail does not supported by default."
   msgstr ""
   
  -#: ../wikilib.php:1015
  +#: ../wikilib.php:972
   msgid "Sent notification mail."
   msgstr ""
   
  -#: ../wikilib.php:1017
  +#: ../wikilib.php:974
   msgid "No subscribers found."
   msgstr ""
   
  -#: ../wikilib.php:1022
  +#: ../wikilib.php:979
   #, c-format
   msgid "%s is not editable"
   msgstr ""
   
  -#: ../wikilib.php:1024
  +#: ../wikilib.php:981
   #, c-format
   msgid "%s is saved"
   msgstr ""
   
  -#: ../wikilib.php:1048
  +#: ../wikilib.php:1005
   msgid "Nobody subscribed to this page."
   msgstr ""
   
  -#: ../wikilib.php:1070
  +#: ../wikilib.php:1027
   #, c-format
   msgid "%s page is modified"
   msgstr ""
   
  -#: ../wikilib.php:1080
  +#: ../wikilib.php:1037
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:1093
  +#: ../wikilib.php:1050
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:1097
  +#: ../wikilib.php:1054
   msgid "Mails are sent successfully"
   msgstr ""
   
  -#: ../wikilib.php:1098
  +#: ../wikilib.php:1055
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1261
  +#: ../wikilib.php:1218
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:1280
  +#: ../wikilib.php:1237
   msgid "Make profile"
   msgstr ""
   
  -#: ../wikilib.php:1281
  +#: ../wikilib.php:1238
   msgid "password again"
   msgstr ""
   
  -#: ../wikilib.php:1292
  +#: ../wikilib.php:1249
   msgid "New password"
   msgstr ""
   
  -#: ../wikilib.php:1298
  +#: ../wikilib.php:1255
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:1732
  +#: ../wikilib.php:1691
   #, c-format
   msgid "Title search for \"%s\""
   msgstr ""
  
  
  


wkpark      2005/01/04 18:27:11

  Modified:    lib      version.RcsLite.php
  Log:
  minor fix
  
  Revision  Changes    Path
  1.3       +8 -9      moniwiki/lib/version.RcsLite.php
  
  Index: version.RcsLite.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/version.RcsLite.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- version.RcsLite.php	22 Oct 2004 15:07:23 -0000	1.2
  +++ version.RcsLite.php	4 Jan 2005 09:27:11 -0000	1.3
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RcsLite versioning plugin for the MoniWiki
   //
  -// $Id: version.RcsLite.php,v 1.2 2004/10/22 15:07:23 wkpark Exp $
  +// $Id: version.RcsLite.php,v 1.3 2005/01/04 09:27:11 wkpark Exp $
   
   class Version_RcsLite extends Version_RCS {
     var $DB;
  @@ -40,11 +40,10 @@
       return $this->rcs->rlog($rev,$opt,$oldopt);
     }
   
  -  function diff($pagename,$rev,$rev2) {
  +  function diff($pagename,$rev='',$rev2='') {
       $filename=$this->_filename($pagename);
       $this->rcs->_process($filename);
   
  -    #print $rev.":".$rev2;
       $out=$this->rcs->revisionDiff($rev,$rev2,'udiff'); // XXX
   
       return $out;
  @@ -54,15 +53,15 @@
     }
   
     function delete($pagename) {
  -    $keyname=$DB->_getPageKey($pagename);
  -    @unlink($DB->text_dir.'/'.$this->rcs_dir."/$keyname,v");
  +    $keyname=$this->DB->_getPageKey($pagename);
  +    @unlink($this->DB->text_dir.'/'.$this->rcs_dir."/$keyname,v");
     }
   
     function rename($pagename,$new) {
  -    $keyname=$DB->_getPageKey($new);
  -    $oname=$DB->_getPageKey($pagename);
  -    rename($DB->text_dir.'/'.$this->rcs_dir."/$oname,v",
  -      $DB->text_dir.'/'.$this->rcs_dir."/$keyname,v");
  +    $keyname=$this->DB->_getPageKey($new);
  +    $oname=$this->DB->_getPageKey($pagename);
  +    rename($this->DB->text_dir.'/'.$this->rcs_dir."/$oname,v",
  +      $this->DB->text_dir.'/'.$this->rcs_dir."/$keyname,v");
     }
   
     function get_rev($pagename,$mtime='',$last=0) {
  
  
  


wkpark      2005/01/04 18:37:44

  Modified:    css      black.css blog.css bw.css cream.css darkkhaki.css
                        darkred.css default.css gray.css green.css iolo.css
                        kbd.js khaki.css log.css matrix.css moinmoin.css
                        nlog.css nsmk.css olive.css redandblack.css
                        royalblue.css seagreen.css sky.css white.css
                        wood.css
  Log:
  update css
  
  Revision  Changes    Path
  1.6       +4 -0      moniwiki/css/black.css
  
  Index: black.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/black.css,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- black.css	7 Sep 2004 04:47:17 -0000	1.5
  +++ black.css	4 Jan 2005 09:37:44 -0000	1.6
  @@ -199,3 +199,7 @@
   span.externalLink {
     display: none;
   }
  +
  +span.lineNumber {
  +  color:#ffff00;
  +}
  
  
  
  1.6       +4 -0      moniwiki/css/blog.css
  
  Index: blog.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/blog.css,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- blog.css	7 Sep 2004 04:47:17 -0000	1.5
  +++ blog.css	4 Jan 2005 09:37:44 -0000	1.6
  @@ -276,3 +276,7 @@
   span.externalLink {
     display: none;
   }
  +
  +span.lineNumber {
  +  color:#ffff00;
  +}
  
  
  
  1.6       +4 -0      moniwiki/css/bw.css
  
  Index: bw.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/bw.css,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- bw.css	7 Sep 2004 04:47:17 -0000	1.5
  +++ bw.css	4 Jan 2005 09:37:44 -0000	1.6
  @@ -199,3 +199,7 @@
   span.externalLink {
     display: none;
   }
  +
  +span.lineNumber {
  +  color:#ffff00;
  +}
  
  
  
  1.6       +4 -0      moniwiki/css/cream.css
  
  Index: cream.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/cream.css,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- cream.css	7 Sep 2004 04:47:17 -0000	1.5
  +++ cream.css	4 Jan 2005 09:37:44 -0000	1.6
  @@ -243,3 +243,7 @@
   span.externalLink {
     display: none;
   }
  +
  +span.lineNumber {
  +  color:#ffff00;
  +}
  
  
  
  1.6       +4 -0      moniwiki/css/darkkhaki.css
  
  Index: darkkhaki.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/darkkhaki.css,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- darkkhaki.css	7 Sep 2004 04:47:17 -0000	1.5
  +++ darkkhaki.css	4 Jan 2005 09:37:44 -0000	1.6
  @@ -264,3 +264,7 @@
       text-decoration: none;
       color: #C8A8FF;  /* light purple */
   }
  +
  +span.lineNumber {
  +  color:#ffff00;
  +}
  
  
  
  1.6       +4 -0      moniwiki/css/darkred.css
  
  Index: darkred.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/darkred.css,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- darkred.css	7 Sep 2004 04:47:17 -0000	1.5
  +++ darkred.css	4 Jan 2005 09:37:44 -0000	1.6
  @@ -260,3 +260,7 @@
   span.externalLink {
     display: none;
   }
  +
  +span.lineNumber {
  +  color:#ffff00;
  +}
  
  
  
  1.6       +4 -0      moniwiki/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/default.css,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- default.css	7 Sep 2004 04:47:17 -0000	1.5
  +++ default.css	4 Jan 2005 09:37:44 -0000	1.6
  @@ -259,3 +259,7 @@
   span.externalLink {
     display: none;
   }
  +
  +span.lineNumber {
  +  color:#ffff00;
  +}
  
  
  
  1.5       +4 -0      moniwiki/css/gray.css
  
  Index: gray.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/gray.css,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- gray.css	7 Sep 2004 04:47:17 -0000	1.4
  +++ gray.css	4 Jan 2005 09:37:44 -0000	1.5
  @@ -257,3 +257,7 @@
   span.externalLink {
     display: none;
   }
  +
  +span.lineNumber {
  +  color:#ffff00;
  +}
  
  
  
  1.6       +4 -0      moniwiki/css/green.css
  
  Index: green.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/green.css,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- green.css	7 Sep 2004 04:47:17 -0000	1.5
  +++ green.css	4 Jan 2005 09:37:44 -0000	1.6
  @@ -275,3 +275,7 @@
   span.externalLink {
     display: none;
   }
  +
  +span.lineNumber {
  +  color:#ffff00;
  +}
  
  
  
  1.5       +4 -0      moniwiki/css/iolo.css
  
  Index: iolo.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/iolo.css,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- iolo.css	7 Sep 2004 04:47:17 -0000	1.4
  +++ iolo.css	4 Jan 2005 09:37:44 -0000	1.5
  @@ -407,3 +407,7 @@
   span.externalLink {
     display: none;
   }
  +
  +span.lineNumber {
  +  color:#ffff00;
  +}
  
  
  
  1.7       +12 -14    moniwiki/css/kbd.js
  
  Index: kbd.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/kbd.js,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- kbd.js	3 Oct 2004 07:33:59 -0000	1.6
  +++ kbd.js	4 Jan 2005 09:37:44 -0000	1.7
  @@ -6,7 +6,7 @@
   
      distributable under GPL
   
  -   $Id: kbd.js,v 1.6 2004/10/03 07:33:59 wkpark Exp $
  +   $Id: kbd.js,v 1.7 2005/01/04 09:37:44 wkpark Exp $
   
      CHANGES
   
  @@ -162,9 +162,9 @@
   	if(_dom != 3 && cc == 229 && ch == '') { // Mozilla
   		window.status="?/ or change IME status";
   	} else if(_dom !=3 && cc == 112) { // 'F1' Help! (Mozilla only)
  -		self.location = url_prefix + HelpContents;
  +		self.location = url_prefix + _qp + HelpContents;
   	} else if(_dom !=3 && cc == 114) { // 'F3' Find (Mozilla only)
  -		self.location = url_prefix + FindPage;
  +		self.location = url_prefix + _qp + FindPage;
   	} else if(cc == 9 || cc == 27) { // 'TAB','ESC' key
   		if (cc == 27) {
   			document.getElementById(_go).elements['value'].focus();
  @@ -219,7 +219,7 @@
   			if ((idx=my.indexOf("&")) != -1)
   				my=my.substring(0,idx);
   			if (ch == "e" || ch == "w")
  -				self.location= url_prefix + _qp + my + _ap +
  +				self.location=url_prefix + _qp + my + _ap +
   					'action=edit';
   			if (ch == "r") {
   				if ((idx=my.indexOf("#")) != -1)
  @@ -228,17 +228,15 @@
   					'action=show';
   			}
   		} else {
  -			if (ch == "e" || ch == "w")
  -				self.location = _ap + 'action=edit';
  -			if (ch == "r") {
  -				if ((idx=my.indexOf("#")) != -1) {
  -					my=my.substring(0,idx);
  -					self.location = my + _ap +
  -						'action=show';
  -				} else
  -					//self.location += '?action=show';
  -					self.location = self.location;
  +			if (idx != -1) {
  +				my=my.substr(0,idx);
  +			} else if ((idx=my.indexOf("#")) != -1) {
  +				my=my.substring(0,idx);
   			}
  +			if (ch == "e" || ch == "w")
  +				self.location = my + _ap + 'action=edit';
  +			if (ch == "r")
  +				self.location = my + _ap + 'action=show';
   		}
   	}
   	return;
  
  
  
  1.6       +4 -0      moniwiki/css/khaki.css
  
  Index: khaki.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/khaki.css,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- khaki.css	7 Sep 2004 04:47:17 -0000	1.5
  +++ khaki.css	4 Jan 2005 09:37:44 -0000	1.6
  @@ -257,3 +257,7 @@
   span.externalLink {
     display: none;
   }
  +
  +span.lineNumber {
  +  color:#ffff00;
  +}
  
  
  
  1.4       +4 -0      moniwiki/css/log.css
  
  Index: log.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/log.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- log.css	7 Sep 2004 04:47:17 -0000	1.3
  +++ log.css	4 Jan 2005 09:37:44 -0000	1.4
  @@ -288,3 +288,7 @@
   span.externalLink {
     display: none;
   }
  +
  +span.lineNumber {
  +  color:#ffff00;
  +}
  
  
  
  1.6       +4 -0      moniwiki/css/matrix.css
  
  Index: matrix.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/matrix.css,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- matrix.css	7 Sep 2004 04:47:17 -0000	1.5
  +++ matrix.css	4 Jan 2005 09:37:44 -0000	1.6
  @@ -197,3 +197,7 @@
   span.externalLink {
     display: none;
   }
  +
  +span.lineNumber {
  +  color:#ffff00;
  +}
  
  
  
  1.5       +5 -1      moniwiki/css/moinmoin.css
  
  Index: moinmoin.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/moinmoin.css,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- moinmoin.css	7 Sep 2004 04:47:17 -0000	1.4
  +++ moinmoin.css	4 Jan 2005 09:37:44 -0000	1.5
  @@ -2,7 +2,7 @@
   
       Copyright (c) 2001, 2002, 2003 by Jrgen Hermann
   
  -    $Id: moinmoin.css,v 1.4 2004/09/07 04:47:17 wkpark Exp $
  +    $Id: moinmoin.css,v 1.5 2005/01/04 09:37:44 wkpark Exp $
   */
   
   /* user interface styles */
  @@ -178,3 +178,7 @@
   span.externalLink {
     display: none;
   }
  +
  +span.lineNumber {
  +  color:#ffff00;
  +}
  
  
  
  1.2       +4 -0      moniwiki/css/nlog.css
  
  Index: nlog.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/nlog.css,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- nlog.css	17 Oct 2004 16:16:58 -0000	1.1
  +++ nlog.css	4 Jan 2005 09:37:44 -0000	1.2
  @@ -279,3 +279,7 @@
       text-decoration: none;
       color: #C8A8FF;  /* light purple */
   }
  +
  +span.lineNumber {
  +  color:#ffff00;
  +}
  
  
  
  1.5       +4 -0      moniwiki/css/nsmk.css
  
  Index: nsmk.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/nsmk.css,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- nsmk.css	7 Sep 2004 04:47:17 -0000	1.4
  +++ nsmk.css	4 Jan 2005 09:37:44 -0000	1.5
  @@ -235,3 +235,7 @@
   span.externalLink {
     display: none;
   }
  +
  +span.lineNumber {
  +  color:#ffff00;
  +}
  
  
  
  1.6       +4 -0      moniwiki/css/olive.css
  
  Index: olive.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/olive.css,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- olive.css	7 Sep 2004 04:47:17 -0000	1.5
  +++ olive.css	4 Jan 2005 09:37:44 -0000	1.6
  @@ -262,3 +262,7 @@
   span.externalLink {
     display: none;
   }
  +
  +span.lineNumber {
  +  color:#ffff00;
  +}
  
  
  
  1.7       +4 -0      moniwiki/css/redandblack.css
  
  Index: redandblack.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/redandblack.css,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- redandblack.css	7 Sep 2004 04:47:17 -0000	1.6
  +++ redandblack.css	4 Jan 2005 09:37:44 -0000	1.7
  @@ -277,3 +277,7 @@
   span.externalLink {
     display: none;
   }
  +
  +span.lineNumber {
  +  color:#ffff00;
  +}
  
  
  
  1.6       +4 -0      moniwiki/css/royalblue.css
  
  Index: royalblue.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/royalblue.css,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- royalblue.css	7 Sep 2004 04:47:17 -0000	1.5
  +++ royalblue.css	4 Jan 2005 09:37:44 -0000	1.6
  @@ -257,3 +257,7 @@
   span.externalLink {
     display: none;
   }
  +
  +span.lineNumber {
  +  color:#ffff00;
  +}
  
  
  
  1.6       +4 -0      moniwiki/css/seagreen.css
  
  Index: seagreen.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/seagreen.css,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- seagreen.css	7 Sep 2004 04:47:17 -0000	1.5
  +++ seagreen.css	4 Jan 2005 09:37:44 -0000	1.6
  @@ -265,3 +265,7 @@
   span.externalLink {
     display: none;
   }
  +
  +span.lineNumber {
  +  color:#ffff00;
  +}
  
  
  
  1.6       +4 -0      moniwiki/css/sky.css
  
  Index: sky.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/sky.css,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- sky.css	7 Sep 2004 04:47:17 -0000	1.5
  +++ sky.css	4 Jan 2005 09:37:44 -0000	1.6
  @@ -254,3 +254,7 @@
   span.externalLink {
     display: none;
   }
  +
  +span.lineNumber {
  +  color:#ffff00;
  +}
  
  
  
  1.6       +4 -0      moniwiki/css/white.css
  
  Index: white.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/white.css,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- white.css	7 Sep 2004 04:47:17 -0000	1.5
  +++ white.css	4 Jan 2005 09:37:44 -0000	1.6
  @@ -249,3 +249,7 @@
   span.externalLink {
     display: none;
   }
  +
  +span.lineNumber {
  +  color:#ffff00;
  +}
  
  
  
  1.4       +4 -0      moniwiki/css/wood.css
  
  Index: wood.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/wood.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- wood.css	7 Sep 2004 04:47:17 -0000	1.3
  +++ wood.css	4 Jan 2005 09:37:44 -0000	1.4
  @@ -274,3 +274,7 @@
   span.externalLink {
     display: none;
   }
  +
  +span.lineNumber {
  +  color:#ffff00;
  +}
  
  
  


wkpark      2005/01/04 18:38:43

  Modified:    theme/blog/css default.css
  Log:
  update the css of themes
  
  Revision  Changes    Path
  1.5       +7 -1      moniwiki/theme/blog/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/blog/css/default.css,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- default.css	13 Oct 2004 13:20:28 -0000	1.4
  +++ default.css	4 Jan 2005 09:38:43 -0000	1.5
  @@ -286,10 +286,16 @@
     display: none;
   }
   
  -/*a.externalLink[href^='http:'] { */
  +/*a.externalLink[href^='http:'] {
   a.externalLink {
     padding-right: 9px;
     background-image: url("../../../imgs/popup.png");
     background-position: right;
     background-repeat: no-repeat;
   }
  +
  +*/
  +
  +span.lineNumber {
  +  color:#ffff00;
  +}
  
  
  


wkpark      2005/01/04 18:38:43

  Modified:    theme/ddt/css default.css
  Log:
  update the css of themes
  
  Revision  Changes    Path
  1.4       +4 -0      moniwiki/theme/ddt/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/ddt/css/default.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- default.css	13 Oct 2004 13:12:50 -0000	1.3
  +++ default.css	4 Jan 2005 09:38:43 -0000	1.4
  @@ -272,3 +272,7 @@
   span.externalLink {
     display: none;
   }
  +
  +span.lineNumber {
  +  color:#ffff00;
  +}
  
  
  


wkpark      2005/01/04 18:38:43

  Modified:    theme/kz/css default.css
  Log:
  update the css of themes
  
  Revision  Changes    Path
  1.4       +4 -0      moniwiki/theme/kz/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/kz/css/default.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- default.css	13 Oct 2004 13:20:29 -0000	1.3
  +++ default.css	4 Jan 2005 09:38:43 -0000	1.4
  @@ -342,3 +342,7 @@
   span.externalLink {
     display: none;
   }
  +
  +span.lineNumber {
  +  color:#ffff00;
  +}
  
  
  


wkpark      2005/01/04 18:38:43

  Modified:    theme/nblog/css default.css
  Log:
  update the css of themes
  
  Revision  Changes    Path
  1.3       +4 -1      moniwiki/theme/nblog/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/nblog/css/default.css,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- default.css	13 Oct 2004 13:20:31 -0000	1.2
  +++ default.css	4 Jan 2005 09:38:43 -0000	1.3
  @@ -333,7 +333,7 @@
   div.blog-title { font-size:16px; font-weight:bold; }
   div.blog-comments { }
   div.blog-comment { padding:1em 1em 1em 2em; margin-bottom:5px;border-left: 1px dashed #7B9AC5; background-color:#F2F6EC;}
  -div.blog-comments .seperator { display:none;}
  +div.blog-comments .separator { display:none;}
   div.blog-action { text-align:right; font-size:7px; }
   
   div.blog-date { font-size:18px; font-weight:bold; padding-bottom:5px;}
  @@ -402,3 +402,6 @@
     display: none;
   }
   
  +span.lineNumber {
  +  color:#ffff00;
  +}
  
  
  


wkpark      2005/01/04 18:38:43

  Modified:    theme/orange/css default.css
  Log:
  update the css of themes
  
  Revision  Changes    Path
  1.4       +4 -0      moniwiki/theme/orange/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/orange/css/default.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- default.css	13 Oct 2004 13:20:31 -0000	1.3
  +++ default.css	4 Jan 2005 09:38:43 -0000	1.4
  @@ -272,3 +272,7 @@
   span.externalLink {
     display: none;
   }
  +
  +span.lineNumber {
  +  color:#ffff00;
  +}
  
  
  


wkpark      2005/01/04 18:38:43

  Modified:    theme/samplehome/css default.css
  Log:
  update the css of themes
  
  Revision  Changes    Path
  1.5       +4 -0      moniwiki/theme/samplehome/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/samplehome/css/default.css,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- default.css	13 Oct 2004 13:20:32 -0000	1.4
  +++ default.css	4 Jan 2005 09:38:43 -0000	1.5
  @@ -269,3 +269,7 @@
   span.externalLink {
     display: none;
   }
  +
  +span.lineNumber {
  +  color:#ffff00;
  +}
  
  
  


wkpark      2005/01/04 18:38:44

  Modified:    theme/sampleicon/css default.css
  Log:
  update the css of themes
  
  Revision  Changes    Path
  1.4       +4 -0      moniwiki/theme/sampleicon/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/sampleicon/css/default.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- default.css	13 Oct 2004 13:20:33 -0000	1.3
  +++ default.css	4 Jan 2005 09:38:44 -0000	1.4
  @@ -260,3 +260,7 @@
   span.externalLink {
     display: none;
   }
  +
  +span.lineNumber {
  +  color:#ffff00;
  +}
  
  
  


wkpark      2005/01/04 18:38:44

  Modified:    theme/sampleleft/css default.css
  Log:
  update the css of themes
  
  Revision  Changes    Path
  1.5       +4 -0      moniwiki/theme/sampleleft/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/sampleleft/css/default.css,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- default.css	13 Oct 2004 13:20:34 -0000	1.4
  +++ default.css	4 Jan 2005 09:38:44 -0000	1.5
  @@ -272,3 +272,7 @@
   span.externalLink {
     display: none;
   }
  +
  +span.lineNumber {
  +  color:#ffff00;
  +}
  
  
  


wkpark      2005/01/04 18:41:21

  Modified:    .        wikilib.php
  Log:
  update with new versioning method
  
  Revision  Changes    Path
  1.132     +6 -11     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.131
  retrieving revision 1.132
  diff -u -r1.131 -r1.132
  --- wikilib.php	4 Jan 2005 08:54:58 -0000	1.131
  +++ wikilib.php	4 Jan 2005 09:41:21 -0000	1.132
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.131 2005/01/04 08:54:58 wkpark Exp $
  +// $Id: wikilib.php,v 1.132 2005/01/04 09:41:21 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1011,16 +1011,11 @@
     }
   
     $diff="";
  -  $option="-r".$formatter->page->get_rev();
  -  $fp=popen("rcsdiff -x,v/ -u $option ".$formatter->page->filename,"r");
  -  if (!$fp)
  -    $diff="";
  -  else {
  -    while (!feof($fp)) {
  -      $line=fgets($fp,1024);
  -      $diff.= $line;
  -    }
  -    pclose($fp);
  +  if ($DBInfo->version_class) {
  +    $class=getModule('Version',$DBInfo->version_class);
  +    $version=new $class ($DBInfo);
  +    $rev=$formatter->page->get_rev();
  +    $diff=$version->diff($formatter->page->name,$rev);
     }
   
     $mailto=join(", ",$subs);
  
  
  


wkpark      2005/01/04 18:42:28

  Modified:    .        wiki.php
  Log:
  bump up to version 1.1
  
  Revision  Changes    Path
  1.200     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.199
  retrieving revision 1.200
  diff -u -r1.199 -r1.200
  --- wiki.php	30 Dec 2004 07:25:51 -0000	1.199
  +++ wiki.php	4 Jan 2005 09:42:28 -0000	1.200
  @@ -11,10 +11,10 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.199 2004/12/30 07:25:51 wkpark Exp $
  +// $Id: wiki.php,v 1.200 2005/01/04 09:42:28 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.199 $',1,-1);
  -$_release = '1.0.9';
  +$_revision = substr('$Revision: 1.200 $',1,-1);
  +$_release = '1.1';
   
   #ob_start("ob_gzhandler");
   
  
  
  


wkpark      2005/01/05 18:29:41

  Modified:    .        wiki.php
  Log:
  add punct ')' like as the MoinMoin.
  set $external_on=0; by default.
  
  Revision  Changes    Path
  1.201     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.200
  retrieving revision 1.201
  diff -u -r1.200 -r1.201
  --- wiki.php	4 Jan 2005 09:42:28 -0000	1.200
  +++ wiki.php	5 Jan 2005 09:29:41 -0000	1.201
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.200 2005/01/04 09:42:28 wkpark Exp $
  +// $Id: wiki.php,v 1.201 2005/01/05 09:29:41 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.200 $',1,-1);
  +$_revision = substr('$Revision: 1.201 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -1331,7 +1331,7 @@
       $this->themedir= dirname(__FILE__);
       $this->set_theme($options['theme']);
   
  -    $this->external_on=1;
  +    $this->external_on=0;
       $this->external_target='';
       if ($DBInfo->external_target)
         $this->external_target='target="'.$DBInfo->external_target.'" ';
  @@ -1370,7 +1370,7 @@
       }
   
       #$punct="<\"\'}\]\|;,\.\!";
  -    $punct="<\'}\]\|;\.\!"; # , is omitted for the WikiPedia
  +    $punct="<\'}\]\)\|;\.\!"; # , is omitted for the WikiPedia
       $url="wiki|http|https|ftp|nntp|news|irc|telnet|mailto|file|attachment";
       if ($DBInfo->url_schemas) $url.='|'.$DBInfo->url_schemas;
       $urlrule="((?:$url):([^\s$punct]|(\.?[^\s$punct]))+)";
  
  
  


wkpark      2005/01/05 18:50:29

  Modified:    plugin   Attachment.php
  Log:
  fix minor bug
  
  Revision  Changes    Path
  1.12      +2 -2      moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- Attachment.php	10 Dec 2004 15:59:22 -0000	1.11
  +++ Attachment.php	5 Jan 2005 09:50:29 -0000	1.12
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.11 2004/12/10 15:59:22 wkpark Exp $
  +// $Id: Attachment.php,v 1.12 2005/01/05 09:50:29 wkpark Exp $
   
   function macro_Attachment($formatter,$value) {
     global $DBInfo;
  @@ -17,7 +17,7 @@
   
     $text='';
     if (($p=strpos($value,' ')) !== false) { // XXX for [attachment:my.ext hello]
  -    $text=substr($value,$p);
  +    $text=substr($value,$p+1);
       $value=substr($value,0,$p);
     }
   
  
  
  


wkpark      2005/01/11 08:16:57

  Modified:    data     metaparse.py
  Log:
  fixed PR #300680: fixed OriginalWiki and MediaWiki problems reported by kyagrd
  
  Revision  Changes    Path
  1.6       +5 -7      moniwiki/data/metaparse.py
  
  Index: metaparse.py
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/data/metaparse.py,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- metaparse.py	25 Nov 2004 07:42:29 -0000	1.5
  +++ metaparse.py	10 Jan 2005 23:16:56 -0000	1.6
  @@ -1,5 +1,5 @@
   #!/usr/bin/python
  -# $Id: metaparse.py,v 1.5 2004/11/25 07:42:29 wkpark Exp $
  +# $Id: metaparse.py,v 1.6 2005/01/10 23:16:56 wkpark Exp $
   # python version metaparse.py by wkpark@kldp.org
   
   import string,os,sys,re,urllib
  @@ -57,8 +57,10 @@
           ('letters/$C',
            NO_CUT_REGEX,'\.\./(.*?).html'),
         "Wiki":
  -        ("http://sunir.org/apps/meta.pl?list=WikiWiki",
  -         NO_CUT_REGEX, DEFAULT_MATCH_REGEX),
  +        #("http://sunir.org/apps/meta.pl?list=WikiWiki",
  +        # NO_CUT_REGEX, DEFAULT_MATCH_REGEX),
  +        ("search=$",
  +         USEMOD_CUT_REGEX,USEMOD_MATCH_REGEX),
         "wikiX":
           ("AllPages", NO_CUT_REGEX, '\?display=(.*?)"'),
         "PhpWiki":
  @@ -68,7 +70,7 @@
         "PediaIndex":
           ("Special:Allpages",
            '^<table>(.*)</table>',
  -         '(/w/wiki.phtml\?title=Special:Allpages&amp;from.*?)"')
  +         '(http://.*/w/wiki.phtml\?title=Special:Allpages&amp;from.*?)"')
       };
   
       def __init__(self):
  @@ -77,8 +79,6 @@
   	return
   
       def _fetch(self,wikiname,type,urls):
  -        urllib.URLopener.version =
  -            "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
           catcmd = 'cat %s'
           num=0
           for url in urls:
  @@ -151,8 +151,6 @@
           fp.close()
           urls=[]
           for url in all:
  -          if not re.match(r'^http://',url):
  -            url='http://en.wikipedia.org' + url
             urls.append(string.replace(url,'&amp;','&'))
           self._fetch(wikiname,type,urls)
   
  
  
  


wkpark      2005/01/14 15:53:36

  Modified:    .        config.php.default
  Log:
  update
  
  Revision  Changes    Path
  1.16      +6 -2      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- config.php.default	22 Oct 2004 14:51:52 -0000	1.15
  +++ config.php.default	14 Jan 2005 06:53:36 -0000	1.16
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.15 2004/10/22 14:51:52 wkpark Exp $
  +# $Id: config.php.default,v 1.16 2005/01/14 06:53:36 wkpark Exp $
   #
   $sitename='UnnamedWiki';
   $data_dir= './data';
  @@ -25,8 +25,9 @@
   #$smiley='wikismiley';
   $use_counter= 0;
   $use_hostname= 1;
  +$edit_rows=16;
   $iconset= 'moni';
  -$enable_latex=0;
  +$inline_latex=0;
   $lang='auto';
   $charset='utf-8';
   #$charset='utf-8';
  @@ -40,6 +41,7 @@
   $use_twinpages=1;
   $use_trackback=0;
   $vim_options='+"set expandtab" +"retab"';
  +#$vim_nocheck=1;
   #$vim_options='+"set encoding=UTF-8"';
   #$nonexists='fancy';
   #$nonexists='nolink';
  @@ -102,4 +104,6 @@
   #$use_twikilink=1;
   #$timezone='KST'; // for windows
   #$version_class='RcsLite';
  +#$use_numbering=1;
  +#$use_resizer=1;
   ?>
  
  
  


wkpark      2005/01/14 17:12:20

  Modified:    .        wikilib.php
  Log:
  first try to fix the problem with "magic_quotes_gpc = Off":
   - replace stripslashes() with _stripslashes()
  
  Revision  Changes    Path
  1.133     +7 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.132
  retrieving revision 1.133
  diff -u -r1.132 -r1.133
  --- wikilib.php	4 Jan 2005 09:41:21 -0000	1.132
  +++ wikilib.php	14 Jan 2005 08:12:20 -0000	1.133
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.132 2005/01/04 09:41:21 wkpark Exp $
  +// $Id: wikilib.php,v 1.133 2005/01/14 08:12:20 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -41,6 +41,10 @@
     return preg_replace("/([^a-z0-9\/\?\.\+~#&:;=%\-]{1})/ie","'%'.strtoupper(dechex(ord('\\1')))",$url);
   }
   
  +function _stripslashes($str) {
  +  return get_magic_quotes_gpc() ? stripslashes($str):$str;
  +}
  +
   function qualifiedUrl($url) {
     if (substr($url,0,7)=="http://")
       return $url;
  @@ -890,7 +894,7 @@
     $formatter->send_header("",$options);
   
     $savetext=str_replace("\r", "", $savetext);
  -  $savetext=stripslashes($savetext);
  +  $savetext=_stripslashes($savetext);
     if ($savetext and $savetext[strlen($savetext)-1] != "\n")
       $savetext.="\n";
   
  @@ -959,7 +963,7 @@
       if ($options['category'])
         $savetext.="----\n$options[category]\n";
   
  -    $comment=stripslashes($options['comment']);
  +    $comment=_stripslashes($options['comment']);
       $formatter->page->write($savetext);
       $ret=$DBInfo->savePage($formatter->page,$comment,$options);
       if (($ret != -1) and $DBInfo->notify) {
  
  
  


wkpark      2005/01/14 17:22:04

  Modified:    .        wiki.php wikilib.php
  Log:
  replace stripslashes() with _stripslashes()
  
  Revision  Changes    Path
  1.202     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.201
  retrieving revision 1.202
  diff -u -r1.201 -r1.202
  --- wiki.php	5 Jan 2005 09:29:41 -0000	1.201
  +++ wiki.php	14 Jan 2005 08:22:03 -0000	1.202
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.201 2005/01/05 09:29:41 wkpark Exp $
  +// $Id: wiki.php,v 1.202 2005/01/14 08:22:03 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.201 $',1,-1);
  +$_revision = substr('$Revision: 1.202 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -3106,7 +3106,7 @@
       if (!$pagename) {
         $pagename = $DBInfo->frontpage;
       }
  -    $pagename=stripslashes($pagename);
  +    $pagename=_stripslashes($pagename);
     } else if (!empty($_SERVER['QUERY_STRING'])) {
       if (isset($goto)) $pagename=$goto;
       else {
  
  
  
  1.134     +5 -5      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.133
  retrieving revision 1.134
  diff -u -r1.133 -r1.134
  --- wikilib.php	14 Jan 2005 08:12:20 -0000	1.133
  +++ wikilib.php	14 Jan 2005 08:22:03 -0000	1.134
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.133 2005/01/14 08:12:20 wkpark Exp $
  +// $Id: wikilib.php,v 1.134 2005/01/14 08:22:03 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -319,7 +319,7 @@
        $this->css=$_COOKIE['MONI_CSS'];
        $this->theme=$_COOKIE['MONI_THEME'];
        $this->bookmark=$_COOKIE['MONI_BOOKMARK'];
  -     $this->trail=stripslashes($_COOKIE['MONI_TRAIL']);
  +     $this->trail=_stripslashes($_COOKIE['MONI_TRAIL']);
     }
   
     function setID($id) {
  @@ -430,7 +430,7 @@
     $formatter->send_header("",$options);
     $formatter->send_title("","",$options);
   
  -  $expr= stripslashes($options['value']);
  +  $expr= _stripslashes($options['value']);
   #  $expr= implode('|',preg_split('/\s+/',$expr));
   
     $formatter->highlight=$expr;
  @@ -715,7 +715,7 @@
     #print $options['page'];
     if ($options['name']) $options['name']=urldecode($options['name']);
     $pagename= $formatter->page->urlname;
  -  if (stripslashes($options['name']) == $options['page']) {
  +  if (_stripslashes($options['name']) == $options['page']) {
       $DBInfo->deletePage($page,$options);
       $title = sprintf(_("\"%s\" is deleted !"), $page->name);
       $formatter->send_header("",$options);
  @@ -787,7 +787,7 @@
       }
     }
     if ($options['value']) {
  -     $url=stripslashes($options['value']);
  +     $url=_stripslashes($options['value']);
        $url=_rawurlencode($url);
        if ($options['redirect'])
          $url=$formatter->link_url($url,"?action=show");
  
  
  


wkpark      2005/01/14 17:25:54

  Modified:    plugin   FullSearch.php Gallery.php UploadFile.php Blog.php
                        Comment.php
  Log:
  replace stripslashes() with _stripslashes()
  
  Revision  Changes    Path
  1.8       +3 -3      moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- FullSearch.php	21 Oct 2004 08:27:01 -0000	1.7
  +++ FullSearch.php	14 Jan 2005 08:25:54 -0000	1.8
  @@ -1,15 +1,15 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
   //
  -// $Id: FullSearch.php,v 1.7 2004/10/21 08:27:01 wkpark Exp $
  +// $Id: FullSearch.php,v 1.8 2005/01/14 08:25:54 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
     $ret=$options;
   
  -  $options['value']=stripslashes($options['value']);
  +  $options['value']=_stripslashes($options['value']);
     if ($options['backlinks'])
       $title= sprintf(_("BackLinks search for \"%s\""), $options['value']);
     else
  
  
  
  1.16      +4 -4      moniwiki/plugin/Gallery.php
  
  Index: Gallery.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Gallery.php,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- Gallery.php	21 Oct 2004 08:27:01 -0000	1.15
  +++ Gallery.php	14 Jan 2005 08:25:54 -0000	1.16
  @@ -1,11 +1,11 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // Gallery plugin for the MoniWiki
   //
   // Usage: [[Gallery]]
   //
  -// $Id: Gallery.php,v 1.15 2004/10/21 08:27:01 wkpark Exp $
  +// $Id: Gallery.php,v 1.16 2005/01/14 08:25:54 wkpark Exp $
   
   function get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -103,7 +103,7 @@
   
     if ($file and $upfiles[$file] and $options['comments']) {
       // admin: edit all comments
  -    $comment=stripslashes($options['comments']);
  +    $comment=_stripslashes($options['comments']);
       $comment=str_replace("<","&lt;",$comment);
       $comment=str_replace("\r","",$comment);
       $comment=preg_replace("/\n----\n/","\t",$comment);
  @@ -117,7 +117,7 @@
       if ($options['name']) $name=$options['name'];
       $date=date("(Y-m-d H:i:s) ");
   
  -    $comment=stripslashes($options['comment']);
  +    $comment=_stripslashes($options['comment']);
       $comment=str_replace("\r","",$comment);
       $comment=str_replace("\n","\\n",$comment);
       $comment=str_replace("\t"," ",$comment);
  
  
  
  1.18      +4 -4      moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- UploadFile.php	20 Dec 2004 21:08:33 -0000	1.17
  +++ UploadFile.php	14 Jan 2005 08:25:54 -0000	1.18
  @@ -1,9 +1,9 @@
   <?php
  -// Copyright 2003-2004 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.17 2004/12/20 21:08:33 wkpark Exp $
  +// $Id: UploadFile.php,v 1.18 2005/01/14 08:25:54 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -98,7 +98,7 @@
     $filename=$upfilename;
     if ($options['rename'][$j]) {
       # XXX
  -    $temp=explode("/",stripslashes($options['rename'][$j]));
  +    $temp=explode("/",_stripslashes($options['rename'][$j]));
       $upfilename= $temp[count($temp)-1];
   
       preg_match("/^(.*)\.([a-z0-9]{1,4})$/i",$upfilename,$tname);
  @@ -216,7 +216,7 @@
     for ($j=0;$j<$count;$j++) {
       if ($count > 1) $suffix="[$j]";
       if ($options['rename'][$j]) {
  -      $rename=stripslashes($options['rename'][$j]);
  +      $rename=_stripslashes($options['rename'][$j]);
         $extra="<input name='rename$suffix' value='$rename' />"._(": Rename")."<br />";
       } else $extra='';
       $form.= <<<EOF
  
  
  
  1.25      +5 -5      moniwiki/plugin/Blog.php
  
  Index: Blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Blog.php,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- Blog.php	24 Nov 2004 15:31:27 -0000	1.24
  +++ Blog.php	14 Jan 2005 08:25:54 -0000	1.25
  @@ -1,11 +1,11 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // Blog action plugin for the MoniWiki
   //
   // Usage: ?action=Blog
   //
  -// $Id: Blog.php,v 1.24 2004/11/24 15:31:27 wkpark Exp $
  +// $Id: Blog.php,v 1.25 2005/01/14 08:25:54 wkpark Exp $
   
   function updateBlogList($formatter) {
     global $DBInfo;
  @@ -88,7 +88,7 @@
   
     $savetext="";
     if ($options['savetext']) {
  -    $savetext=stripslashes($options['savetext']);
  +    $savetext=_stripslashes($options['savetext']);
       $savetext=str_replace("\r","",$savetext);
       $savetext=str_replace("----\n","-''''''---\n",$savetext);
       #$savetext=str_replace("<","&lt;",$savetext);
  @@ -101,7 +101,7 @@
        $datestamp= $formatter->page->mtime();
   
     if ($options['title'])
  -    $options['title']=stripslashes($options['title']);
  +    $options['title']=_stripslashes($options['title']);
     if (!$options['button_preview'] && $savetext) {
       $savetext=preg_replace("/(?<!\\\\)}}}/","\}}}",$savetext);
   
  @@ -117,7 +117,7 @@
   
       if ($options['id']=='Anonymous')
         $id=$options['name'] ?
  -        stripslashes($options['name']):$_SERVER['REMOTE_ADDR'];
  +        _stripslashes($options['name']):$_SERVER['REMOTE_ADDR'];
       else $id=$options['id'];
   
       if ($options['value']) {
  
  
  
  1.9       +5 -4      moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Comment.php	2 Sep 2004 10:03:47 -0000	1.8
  +++ Comment.php	14 Jan 2005 08:25:54 -0000	1.9
  @@ -1,12 +1,12 @@
   <?php
  -// Copyright 2004 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2004-2005 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a Wiki comment plugin for the MoniWiki
   //
   // Usage: [[Comment]], ?action=comment
   //
   //
  -// $Id: Comment.php,v 1.8 2004/09/02 10:03:47 wkpark Exp $
  +// $Id: Comment.php,v 1.9 2005/01/14 08:25:54 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $HTTP_USER_AGENT;
  @@ -78,7 +78,7 @@
     $url=$formatter->link_url($formatter->page->urlname);
   
     if ($options['savetext']) {
  -    $savetext=stripslashes($options['savetext']);
  +    $savetext=_stripslashes($options['savetext']);
       $savetext=str_replace("\r","",$savetext);
       $savetext=rtrim($savetext);
       #$savetext=str_replace("<","&lt;",$savetext);
  @@ -115,7 +115,7 @@
   
     if ($options['id']=='Anonymous')
       $id=$options['name'] ?
  -      stripslashes($options['name']):$_SERVER['REMOTE_ADDR'];
  +      _stripslashes($options['name']):$_SERVER['REMOTE_ADDR'];
     else $id=$options['id'];
   
     if ($options['nosig']) $savetext="----\n$savetext\n";
  @@ -143,4 +143,5 @@
     return;
   }
   
  +// vim:et:sts=2:sw=2
   ?>
  
  
  


wkpark      2005/01/14 17:26:26

  Modified:    plugin   sendping.php trackback.php
  Log:
  replace stripslashes() with _stripslashes()
  
  Revision  Changes    Path
  1.12      +4 -4      moniwiki/plugin/sendping.php
  
  Index: sendping.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/sendping.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- sendping.php	10 Dec 2004 16:11:52 -0000	1.11
  +++ sendping.php	14 Jan 2005 08:26:26 -0000	1.12
  @@ -1,9 +1,9 @@
   <?php
  -// Copyright 2003-2994 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a TrackBack send action plugin for the MoniWiki
   //
  -// $Id: sendping.php,v 1.11 2004/12/10 16:11:52 wkpark Exp $
  +// $Id: sendping.php,v 1.12 2005/01/14 08:26:26 wkpark Exp $
   
   # trackback ping
   function do_sendping($formatter,$options) {
  @@ -94,10 +94,10 @@
     # send Trackback ping
   
     $trackback_url=$options['trackback_url'];
  -  $title= urlencode(stripslashes($options['title']));
  +  $title= urlencode(_stripslashes($options['title']));
     $blog_name= urlencode($DBInfo->sitename.":$options[id]");
   
  -  $excerpt= stripslashes($options['excerpt']);
  +  $excerpt= _stripslashes($options['excerpt']);
   
     if ($options['mbencode']) {
       if ($checked and function_exists('iconv')
  
  
  
  1.8       +6 -6      moniwiki/plugin/trackback.php
  
  Index: trackback.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/trackback.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- trackback.php	15 Aug 2004 12:27:04 -0000	1.7
  +++ trackback.php	14 Jan 2005 08:26:26 -0000	1.8
  @@ -2,9 +2,8 @@
   // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a TrackBack receive action plugin for the MoniWiki
  -// vim:et:ts=2:
   //
  -// $Id: trackback.php,v 1.7 2004/08/15 12:27:04 wkpark Exp $
  +// $Id: trackback.php,v 1.8 2005/01/14 08:26:26 wkpark Exp $
   
   function send_error($error=0,$error_message='') {
     if ($error) {
  @@ -89,10 +88,10 @@
     # receivie Trackback ping
   
     # strip \n
  -	$title= strtr(stripslashes($options['title']),"\t\n"," \r");
  -	$excerpt= strtr(stripslashes($options['excerpt']),"\t\n"," \r");
  -	$blog_name= strtr(stripslashes($options['blog_name']),"\t\n"," \r");
  -	$url= strtr(stripslashes($options['url']),"\t\n"," \r");
  +	$title= strtr(_stripslashes($options['title']),"\t\n"," \r");
  +	$excerpt= strtr(_stripslashes($options['excerpt']),"\t\n"," \r");
  +	$blog_name= strtr(_stripslashes($options['blog_name']),"\t\n"," \r");
  +	$url= strtr(_stripslashes($options['url']),"\t\n"," \r");
   
     $timestamp=time();
     $date= gmdate("Y-m-d\TH:i:s",$timestamp);
  @@ -190,4 +189,5 @@
     return $template_bra.$out.$template_ket;
   }
   
  +// vim:et:sts=2:
   ?>
  
  
  


wkpark      2005/03/06 14:53:09

  Modified:    applets/OekakiPlugin Makefile
  Log:
  update to the new version
  
  Revision  Changes    Path
  1.4       +1 -1      moniwiki/applets/OekakiPlugin/Makefile
  
  Index: Makefile
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/applets/OekakiPlugin/Makefile,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Makefile	21 Aug 2004 01:35:21 -0000	1.3
  +++ Makefile	6 Mar 2005 05:53:09 -0000	1.4
  @@ -1,4 +1,4 @@
  -VER=222_7
  +VER=222_8
   install:
   	if [ ! -f pbbs${VER}.zip ]; then \
   	wget -c http://hp.vector.co.jp/authors/VA016309/paintbbs/file/pbbs${VER}.zip; fi
  
  
  


iolo        2005/03/11 18:01:36

  Modified:    plugin   BlogArchives.php
  Log:
  minor fix. return empty string if there's no blogchanges
  
  Revision  Changes    Path
  1.3       +2 -2      moniwiki/plugin/BlogArchives.php
  
  Index: BlogArchives.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogArchives.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- BlogArchives.php	2 Oct 2004 02:44:36 -0000	1.2
  +++ BlogArchives.php	11 Mar 2005 09:01:36 -0000	1.3
  @@ -7,13 +7,13 @@
   // [[BlogArchives("F Y")]]
   // [[BlogArchives("F Y",list)]]
   //
  -// $Id: BlogArchives.php,v 1.2 2004/10/02 02:44:36 wkpark Exp $
  +// $Id: BlogArchives.php,v 1.3 2005/03/11 09:01:36 iolo Exp $
   
   function macro_BlogArchives($formatter,$value,$options=array()) {
     global $DBInfo;
   
     $handle = @opendir($DBInfo->cache_dir."/blogchanges");
  -  if (!$handle) return array();
  +  if (!$handle) return '';//array();
   
     preg_match("/^(?(?=')'([^']+)'|\"([^\"]+)\")?(\s*,?.*)$/",$value,$match);
     if ($match[1] or $match[2]) {
  
  
  


wkpark      2005/03/15 14:32:21

  Modified:    plugin   Play.php
  Log:
  PlayPlugin is working now
  
  Revision  Changes    Path
  1.2       +13 -5     moniwiki/plugin/Play.php
  
  Index: Play.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Play.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Play.php	2 Aug 2004 12:57:43 -0000	1.1
  +++ Play.php	15 Mar 2005 05:32:21 -0000	1.2
  @@ -5,29 +5,37 @@
   //
   // Usage: [[Play(http://blah.net/blah.mp3)]]
   //
  -// $Id: Play.php,v 1.1 2004/08/02 12:57:43 wkpark Exp $
  +// $Id: Play.php,v 1.2 2005/03/15 05:32:21 wkpark Exp $
   
   function macro_Play($formatter,$value) {
  +  global $DBInfo;
  +
     preg_match("/(^[^,]+)(\s*,\s*)?$/",$value,$match);
  -  if (!$match) return '';
  +  if (!$match) return '[[Play()]]';
   
     $media=$match[1];
     if ($match[3]) {
       $attr='';
       list($x,$y)=explode(',',$match[3]);
     }
  +  $fname=$formatter->macro_repl('Attachment',$value,1);
  +  if (!file_exists($fname)) {
  +    return $formatter->macro_repl('Attachment',$value);
  +  }
  +
  +  $url=qualifiedUrl($DBInfo->url_prefix."/"._urlencode($fname));
   
     if (preg_match("/(wmv|mpeg4|avi|asf)$/",$media)) {
       $classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95";
       $type='type="application/x-mplayer2"';
       $attr='width="320" height="280"';
  -    $params="<param name='FileName' value='$media'>\n".
  +    $params="<param name='FileName' value='$url'>\n".
         "<param name='AutoStart' value='False'>\n".
         "<param name='ShowControls' value='True'>";
     } else if (preg_match("/(wav|mp3|ogg)$/",$media)) {
       $classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B";
       $attr='codebase="http://www.apple.com/qtactivex/qtplugin.cab" height="30"';
  -    $params="<param name='src' value='$media'>\n".
  +    $params="<param name='src' value='$url'>\n".
         "<param name='AutoStart' value='True'>";
     }
   
  @@ -35,7 +43,7 @@
   <object classid="$classid" $type $attr>
   $params
   <param name="AutoRewind" value="True">
  -<embed $type src="$media" $attr></embed>
  +<embed $type src="$url" $attr></embed>
   </object>
   OBJECT;
   }
  
  
  


wkpark      2005/03/15 14:33:47

  Modified:    plugin   Attachment.php
  Added:       plugin   Media.php
  Log:
  add a new Media plugin as alias with Play plugin and integrate with
  the attachment macro
  
  Revision  Changes    Path
  1.13      +5 -2      moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- Attachment.php	5 Jan 2005 09:50:29 -0000	1.12
  +++ Attachment.php	15 Mar 2005 05:33:47 -0000	1.13
  @@ -5,9 +5,9 @@
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.12 2005/01/05 09:50:29 wkpark Exp $
  +// $Id: Attachment.php,v 1.13 2005/03/15 05:33:47 wkpark Exp $
   
  -function macro_Attachment($formatter,$value) {
  +function macro_Attachment($formatter,$value,$option='') {
     global $DBInfo;
   
     $attr='';
  @@ -63,6 +63,9 @@
     if (!$file) return 'attachment:/';
   
     $upload_file=$dir.'/'.$file;
  +  if ($option == 1) {
  +    return $upload_file;
  +  }
     if (!$text) $text=$file;
   
     if (file_exists($upload_file)) {
  
  
  
  1.1                  moniwiki/plugin/Media.php
  
  Index: Media.php
  ===================================================================
  <?php
  // Copyright 2004 by Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a sample plugin for the MoniWiki
  //
  // Usage: [[Media(my.mp3)]]
  //
  // $Id: Media.php,v 1.1 2005/03/15 05:33:47 wkpark Exp $
  
  function macro_Media($formatter,$value) {
    return $formatter->macro_repl('Play',$value);
  }
  
  // vim:et:sts=2:
  ?>
  
  
  


wkpark      2005/03/15 14:35:24

  Modified:    .        wikilib.php
  Log:
  fix the User class
  
  Revision  Changes    Path
  1.135     +10 -7     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.134
  retrieving revision 1.135
  diff -u -r1.134 -r1.135
  --- wikilib.php	14 Jan 2005 08:22:03 -0000	1.134
  +++ wikilib.php	15 Mar 2005 05:35:24 -0000	1.135
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.134 2005/01/14 08:22:03 wkpark Exp $
  +// $Id: wikilib.php,v 1.135 2005/03/15 05:35:24 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -210,7 +210,7 @@
       $handle = opendir($this->user_dir);
       while ($file = readdir($handle)) {
         if (is_dir($this->user_dir."/".$file)) continue;
  -      if (preg_match('/^wu-([^\.]+)$/', $file,$match))
  +      if (preg_match('/^wu\-([^\.]+)$/', $file,$match))
           #$users[$match[1]] = 1;
           $users[] = $match[1];
       }
  @@ -281,9 +281,9 @@
     }
   
     function getUser($id) {
  -    if ($this->_exists($id))
  +    if ($this->_exists($id)) {
          $data=file("$this->user_dir/wu-$id");
  -    else {
  +    } else {
          $user=new User('Anonymous');
          return $user;
       }
  @@ -303,7 +303,9 @@
     }
   
     function delUser($id) {
  -
  +    if ($this->_exists($id)) {
  +       unlink("$this->user_dir/wu-$id");
  +    }
     }
   }
   
  @@ -1676,6 +1678,7 @@
   
   function macro_TitleSearch($formatter="",$needle="",&$opts) {
     global $DBInfo;
  +  $type='o';
   
     $url=$formatter->link_url($formatter->page->urlname);
   
  @@ -1708,7 +1711,7 @@
   
     sort($hits);
   
  -  $out="<ul>\n";
  +  $out="<${type}l>\n";
     $idx=1;
     foreach ($hits as $pagename) {
       if ($opts['linkto'])
  @@ -1718,7 +1721,7 @@
       $idx++;
     }
   
  -  $out.="</ul>\n";
  +  $out.="</${type}l>\n";
     $opts['hits']= count($hits);
     if ($opts['hits']==1)
       $opts['value']=array_pop($hits);
  
  
  


wkpark      2005/03/18 20:03:44

  Added:       plugin/security htaccesslogin.php
  Log:
  new security plugin added by Hans-Juergen Tappe <tappe at hek.uni-karlsruhe.de>
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/security/htaccesslogin.php
  
  Index: htaccesslogin.php
  ===================================================================
  <?php
  # a htaccesslogin security plugin for the MoniWiki
  # by Hans-Juergen Tappe <tappe@hek.uni-karlsruhe.de>
  #
  # $Id: htaccesslogin.php,v 1.1 2005/03/18 11:03:44 wkpark Exp $
  #
  
  class Security_htaccesslogin extends Security {
    var $DB;
  
    function Security_htaccesslogin($DB="") {
      $this->DB=$DB;
  
      # BEGIN LOGIN
      $id=getenv('REMOTE_USER');
      if ($id != "") {
        $userdb=new UserDB($DB);
        $user=new User(); # get from COOKIE VARS
  
        if ($userdb->_exists($id)) {
          # login
          $user=$userdb->getUser($id);
          $options['id']=$user->id;
          $options['login_id']=$user->id;
          $dummy=$user->setCookie();
  	$dummy=$userdb->saveUser($user);
        } else {
          # create account
          $user->id=$id;
          $options['id']=$user->id;
          #$ticket=md5(time().$user->id.$options['email']);
          #$user->info['eticket']='';
          $dummy=$user->setCookie();
          $dummy=$userdb->addUser($user);
        }
      }
      # END LOGIN
    }
  
    function writable($options="") {
      return $this->DB->_isWritable($options['page']);
    }
  
    function is_allowed($action="read",$options) {
      if (getenv('REMOTE_USER') == "" || $user->id == "Anonymous") {
        $options['err'].=sprintf(_("You are not allowed to '%s' on this page."),$action);
        $options['err'].="\n"._("Please contact the system administrator for htaccess based logins.");
        return 0;
      }
      return 1;
    }
  }
  
  ?>
  
  
  


wkpark      2005/03/18 20:04:49

  Modified:    plugin   Play.php
  Log:
  fix autoplay feature
  
  Revision  Changes    Path
  1.3       +11 -2     moniwiki/plugin/Play.php
  
  Index: Play.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Play.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Play.php	15 Mar 2005 05:32:21 -0000	1.2
  +++ Play.php	18 Mar 2005 11:04:49 -0000	1.3
  @@ -5,10 +5,11 @@
   //
   // Usage: [[Play(http://blah.net/blah.mp3)]]
   //
  -// $Id: Play.php,v 1.2 2005/03/15 05:32:21 wkpark Exp $
  +// $Id: Play.php,v 1.3 2005/03/18 11:04:49 wkpark Exp $
   
   function macro_Play($formatter,$value) {
     global $DBInfo;
  +  static $autoplay=1;
   
     preg_match("/(^[^,]+)(\s*,\s*)?$/",$value,$match);
     if (!$match) return '[[Play()]]';
  @@ -25,19 +26,27 @@
   
     $url=qualifiedUrl($DBInfo->url_prefix."/"._urlencode($fname));
   
  +  if ($autoplay==1) {
  +    $play="true";
  +  } else {
  +    $play="false";
  +  }
  +
     if (preg_match("/(wmv|mpeg4|avi|asf)$/",$media)) {
       $classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95";
       $type='type="application/x-mplayer2"';
  -    $attr='width="320" height="280"';
  +    $attr='width="320" height="280" autoplay="'.$play.'"';
       $params="<param name='FileName' value='$url'>\n".
         "<param name='AutoStart' value='False'>\n".
         "<param name='ShowControls' value='True'>";
     } else if (preg_match("/(wav|mp3|ogg)$/",$media)) {
       $classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B";
       $attr='codebase="http://www.apple.com/qtactivex/qtplugin.cab" height="30"';
  +    $attr.=' autoplay="'.$play.'"';
       $params="<param name='src' value='$url'>\n".
  -      "<param name='AutoStart' value='True'>";
  +      "<param name='AutoStart' value='$play'>";
     }
  +  $autoplay=0;
   
     return <<<OBJECT
   <object classid="$classid" $type $attr>
  
  
  


wkpark      2005/03/18 20:06:41

  Modified:    plugin/processor gnuplot.php
  Log:
  add a resize feature
  
  Revision  Changes    Path
  1.8       +7 -1      moniwiki/plugin/processor/gnuplot.php
  
  Index: gnuplot.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/gnuplot.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- gnuplot.php	4 Jan 2005 08:28:34 -0000	1.7
  +++ gnuplot.php	18 Mar 2005 11:06:41 -0000	1.8
  @@ -6,7 +6,7 @@
   // Usage: {{{#!gnuplot
   // plot sin(x)
   // }}}
  -// $Id: gnuplot.php,v 1.7 2005/01/04 08:28:34 wkpark Exp $
  +// $Id: gnuplot.php,v 1.8 2005/03/18 11:06:41 wkpark Exp $
   
   function processor_gnuplot($formatter="",$value="") {
     global $DBInfo;
  @@ -21,6 +21,12 @@
   
     if ($value[0]=='#' and $value[1]=='!')
       list($line,$value)=explode("\n",$value,2);
  +  list($dum,$szarg)=explode(' ',$line);
  +  if ($szarg) {
  +    $args= explode('x',$szarg,2);
  +    $xsize=intval($args[0]);$ysize=intval($args[1]);
  +    $value='#'.$line."\n".$value;
  +  }
   
     $default_size="set size 0.5,0.6";
   
  
  
  


wkpark      2005/03/18 20:25:54

  Added:       plugin   Clip.php
  Log:
  new Applet macro added: cut & paste plugin to quickly upload images
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/Clip.php
  
  Index: Clip.php
  ===================================================================
  <?php
  // Copyright 2005 by Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // Draw plugin with the JHotDraw for the MoniWiki
  //
  // Usage: [[Clip(hello)]]
  //
  // $Id: Clip.php,v 1.1 2005/03/18 11:25:54 wkpark Exp $
  
  function macro_Clip($formatter,$value) {
    global $DBInfo;
    $keyname=$DBInfo->_getPageKey($formatter->page->name);
    $_dir=str_replace("./",'',$DBInfo->upload_dir.'/'.$keyname);
    $name=_rawurlencode($value);
  
    $enable_edit=1;
  
    umask(000);
    if (!file_exists($_dir))
      mkdir($_dir, 0777);
  
    $pngname=$name.'.png';
    $now=time();
  
    $url=$formatter->link_url($formatter->page->name,"?action=clip&amp;value=$name&amp;now=$now");
  
    if (!file_exists($_dir."/$pngname"))
      return "<a href='$url'>"._("Paste a new picture")."</a>";
    $edit='';
    if ($enable_edit) {
      $edit="<a href='$url'>";
      $end_tag='</a>';
    }
  
    return "$edit<img src='$DBInfo->url_prefix/$_dir/$pngname' border='0' alt='image' />$end_tag\n";
  }
  
  function do_Clip($formatter,$options) {
    global $DBInfo;
  
    $enable_replace=1;
  
    $keyname=$DBInfo->_getPageKey($options['page']);
    $_dir=str_replace("./",'',$DBInfo->upload_dir.'/'.$keyname);
    $pagename=_urlencode($options['page']);
  
    $name=$options['value'];
  
    if (!$name) {
      $title=_("Fatal error !");
      $formatter->send_header("Status: 406 Not Acceptable",$options);
      $formatter->send_title($title,"",$options);
      print "<h2>"._("No filename given")."</h2>";
      $formatter->send_footer("",$options);
      
      return;
    }
  
    $pngname=_rawurlencode($name);
  
    //$imgpath="$_dir/$pngname";
    $imgpath="$pngname";
  
    if (file_exists($_dir.'/'.$imgpath.'.png')) {
      $url=qualifiedUrl($DBInfo->url_prefix.'/'.$_dir.'/'.$imgpath.'.png');
      $imgparam="<param name='image' value='$url' />";
    }
  
    $png_url="$imgpath.png";
  
    $formatter->send_header("",$options);
    $formatter->send_title(_("Clipboard"),"",$options);
    $prefix=$formatter->prefix;
    $now=time();
  
    $url_exit= $formatter->link_url($pagename,"?ts=$now");
    $url_save= $formatter->link_url($pagename,"?action=draw");
    $url_help= $formatter->link_url("ClipMacro");
  
    $pubpath=$DBInfo->url_prefix."/applets/ClipPlugin";
    print "<h2>"._("Cut & Paste a Clipboard Image")."</h2>\n";
    print <<<APPLET
  <applet code="clip"
   archive="clip.jar" codebase="$pubpath"
   width='200' height='200' align="center">
          <param name="pngpath"  value="$png_url" />
          <param name="savepath" value="$url_save" />
          <param name="viewpath" value="$url_exit" />
          <param name="compress" value="5" />
  $imgparam
  <b>NOTE:</b> You need a Java enabled browser to edit the drawing example.
  </applet><br />
  APPLET;
  
    $formatter->send_footer("",$options);
    return;
  }
  
  // vim:et:sts=2:
  ?>
  
  
  


wkpark      2005/03/26 20:20:48

  Modified:    .        wiki.php wikilib.php
  Log:
  fixed bug: {{{#color text}}} syntax
  add $use_minoredit option only for wiki the wiki owners
  (config like as $use_minoredit=1; and $owners=array('foobar','yaho');)
  
  Revision  Changes    Path
  1.203     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.202
  retrieving revision 1.203
  diff -u -r1.202 -r1.203
  --- wiki.php	14 Jan 2005 08:22:03 -0000	1.202
  +++ wiki.php	26 Mar 2005 11:20:48 -0000	1.203
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.202 2005/01/14 08:22:03 wkpark Exp $
  +// $Id: wiki.php,v 1.203 2005/03/26 11:20:48 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.202 $',1,-1);
  +$_revision = substr('$Revision: 1.203 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -852,7 +852,7 @@
           if (abs($check) < 3) $minor=1;
         }
       }
  -    if (!$minor or !$options['minor'])
  +    if (!$options['minor'] and !$minor)
         $this->addLogEntry($keyname, $REMOTE_ADDR,$comment,"SAVE");
       return 0;
     }
  @@ -1569,7 +1569,7 @@
       case '{':
         $url=substr($url,3,-3);
         if ($url[0]=='#' and ($p=strpos($url,' '))) {
  -        $col=strtok($url,' '); $url=strtok(' ');
  +        $col=strtok($url,' '); $url=strtok('');
           if (!preg_match('/^#[0-9a-f]{6}$/',$col)) $col=substr($col,1);
           return "<font color='$col'>$url</font>";
         }
  
  
  
  1.136     +20 -3     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.135
  retrieving revision 1.136
  diff -u -r1.135 -r1.136
  --- wikilib.php	15 Mar 2005 05:35:24 -0000	1.135
  +++ wikilib.php	26 Mar 2005 11:20:48 -0000	1.136
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.135 2005/03/15 05:35:24 wkpark Exp $
  +// $Id: wikilib.php,v 1.136 2005/03/26 11:20:48 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -574,6 +574,13 @@
       $select_category.="</select>\n";
     }
   
  +  if ($DBInfo->use_minoredit) {
  +    $user=new User(); # get from COOKIE VARS
  +    if ($DBInfo->owners and in_array($user->id,$DBInfo->owners)) {
  +      $extra_check=' '._('Minor edit')."<input type='checkbox' name='minor' />";
  +    }
  +  }
  +
     $preview_msg=_("Preview");
     $save_msg=_("Save");
     $summary_msg=_("Summary of Change");
  @@ -599,7 +606,7 @@
     $form.=<<<EOS
   <textarea class="wiki" id="content" wrap="virtual" name="savetext"
    rows="$rows" cols="$cols" class="wiki">$raw_body</textarea><br />
  -$summary_msg: <input name="comment" size="70" maxlength="70" style="width:200" /><br />
  +$summary_msg: <input name="comment" size="70" maxlength="70" style="width:200" />$extra_check<br />
   <input type="hidden" name="action" value="savepage" />
   <input type="hidden" name="datestamp" value="$datestamp" />
   $select_category
  @@ -965,10 +972,20 @@
       if ($options['category'])
         $savetext.="----\n$options[category]\n";
   
  +    $options['minor'] = $DBInfo->use_minoredit ? $options['minor']:0;
  +    if ($options['minor']) {
  +      $user=new User(); # get from COOKIE VARS
  +      if ($DBInfo->owners and in_array($user->id,$DBInfo->owners)) {
  +        $options['minor']=1;
  +      } else {
  +        $options['minor']=0;
  +      }
  +    }
  +
       $comment=_stripslashes($options['comment']);
       $formatter->page->write($savetext);
       $ret=$DBInfo->savePage($formatter->page,$comment,$options);
  -    if (($ret != -1) and $DBInfo->notify) {
  +    if (($ret != -1) and $DBInfo->notify and ($options['minor'] != 1)) {
         $options['noaction']=1;
         if (!function_exists('mail')) {
           $options['msg']=sprintf(_("mail does not supported by default."))."<br />";
  
  
  


wkpark      2005/03/26 20:34:47

  Modified:    plugin   Play.php
  Log:
  fix last changes: check urls or not, and use the Attachment macro selectively
  
  Revision  Changes    Path
  1.4       +9 -6      moniwiki/plugin/Play.php
  
  Index: Play.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Play.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Play.php	18 Mar 2005 11:04:49 -0000	1.3
  +++ Play.php	26 Mar 2005 11:34:47 -0000	1.4
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Play(http://blah.net/blah.mp3)]]
   //
  -// $Id: Play.php,v 1.3 2005/03/18 11:04:49 wkpark Exp $
  +// $Id: Play.php,v 1.4 2005/03/26 11:34:47 wkpark Exp $
   
   function macro_Play($formatter,$value) {
     global $DBInfo;
  @@ -19,13 +19,16 @@
       $attr='';
       list($x,$y)=explode(',',$match[3]);
     }
  -  $fname=$formatter->macro_repl('Attachment',$value,1);
  -  if (!file_exists($fname)) {
  -    return $formatter->macro_repl('Attachment',$value);
  +  if (!preg_match("/^(http|ftp|mms|rtsp):\/\//",$media)) {
  +    $fname=$formatter->macro_repl('Attachment',$media,1);
  +    if (!file_exists($fname)) {
  +      return $formatter->macro_repl('Attachment',$value);
  +    }
  +    $url=qualifiedUrl($DBInfo->url_prefix."/"._urlencode($fname));
  +  } else {
  +    $url=$media;
     }
   
  -  $url=qualifiedUrl($DBInfo->url_prefix."/"._urlencode($fname));
  -
     if ($autoplay==1) {
       $play="true";
     } else {
  
  
  


wkpark      2005/03/26 20:42:03

  Modified:    .        wiki.php
  Log:
  BUG fixed: PR #300727 by Chloe Lewis - fixed underline formatting rule
  
  Revision  Changes    Path
  1.204     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.203
  retrieving revision 1.204
  diff -u -r1.203 -r1.204
  --- wiki.php	26 Mar 2005 11:20:48 -0000	1.203
  +++ wiki.php	26 Mar 2005 11:42:03 -0000	1.204
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.203 2005/03/26 11:20:48 wkpark Exp $
  +// $Id: wiki.php,v 1.204 2005/03/26 11:42:03 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.203 $',1,-1);
  +$_revision = substr('$Revision: 1.204 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -1342,7 +1342,7 @@
                        "/''([^']*)''/","/(?<!')''(.*)''(?!')/",
                        "/\^([^ \^]+)\^(?=\s|$)/","/\^\^([^\^]+)\^\^(?!^)/",
                        "/(?<!,),,([^ ,]+),,(?!,)/",
  -                     "/(?<!_)__([^_]+)__(?!_)/","/^(-{4,})/e",
  +                     "/(?<!_)__((?:(?<!_)_(?!_)|[^_])+)__(?!_)/","/^(-{4,})/e",
                        "/(?<!-)--([^\s][^-]+[^\s])--(?!-)/",
                        );
       $this->baserepl=array("&lt;\\1","&#96;\\1'","<tt class='wiki'>\\1</tt>",
  
  
  


wkpark      2005/03/26 20:51:58

  Modified:    plugin   Gallery.php
  Log:
  Bug fixed: PR #300733 - use _rawurlencode() fixed by wafe
  
  Revision  Changes    Path
  1.17      +2 -2      moniwiki/plugin/Gallery.php
  
  Index: Gallery.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Gallery.php,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- Gallery.php	14 Jan 2005 08:25:54 -0000	1.16
  +++ Gallery.php	26 Mar 2005 11:51:58 -0000	1.17
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Gallery]]
   //
  -// $Id: Gallery.php,v 1.16 2005/01/14 08:25:54 wkpark Exp $
  +// $Id: Gallery.php,v 1.17 2005/03/26 11:51:58 wkpark Exp $
   
   function get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -78,7 +78,7 @@
   
     $key=$DBInfo->pageToKeyname($value);
     if ($key != $value)
  -    $prefix=$formatter->link_url($value,"?action=download&amp;value=");
  +    $prefix=$formatter->link_url(_rawurlencode($value),"?action=download&amp;value=");
     $dir=$DBInfo->upload_dir."/$key";
     if (!$prefix) $prefix=$DBInfo->url_prefix."/".$dir."/";
   
  
  
  


wkpark      2005/03/26 21:28:38

  Modified:    plugin   Navigation.php
  Log:
  fixed PR #300720: reported by hhyoon
  
  Revision  Changes    Path
  1.7       +14 -11    moniwiki/plugin/Navigation.php
  
  Index: Navigation.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Navigation.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- Navigation.php	2 Nov 2004 18:01:55 -0000	1.6
  +++ Navigation.php	26 Mar 2005 12:28:38 -0000	1.7
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Navigation(IndexPage)]]
   //
  -// $Id: Navigation.php,v 1.6 2004/11/02 18:01:55 wkpark Exp $
  +// $Id: Navigation.php,v 1.7 2005/03/26 12:28:38 wkpark Exp $
   
   function macro_Navigation($formatter,$value) {
     global $DBInfo;
  @@ -43,9 +43,9 @@
         if ($word[0]=='"') $word=substr($word,1,-1);
   
         list($index,$text,$dummy)= normalize_word($word,$group,$page);
  -      if ($group)
  -	$indices[]=$index;
  +      if ($group) $indices[]=$index;
         else $indices[]=$index;
  +      $texts[]=$text;
         $count++;
       }
     }
  @@ -59,21 +59,22 @@
         $index_text=substr($index,strlen($group));
       }
       else $index=$value;
  -    $next=$indices[0];
  +    $next=0;
     }
   
     for ($i=0;$i<$count;$i++) {
       #print $indices[$i];
       #print ':'.$formatter->page->name;
       if ($indices[$i]==$current) {
  -      if ($i > 0) $prev=$indices[$i-1];
  +      if ($i > 0) $prev=$i-1;
         if ($i < ($count - 1)) {
  -	$next=$indices[$i+1];
  +	$next=$i+1;
         } else {
  -        $next = '';
  +        $next = 0;
         }
       }
     }
  +  #print $prev.':'.$next;
   
     if ($count > 1) {
       if ($use_action) {
  @@ -82,8 +83,9 @@
         $formatter->query_string=$query;
       }
       $pnut='&laquo; ';
  -    if ($prev) {
  -      $prev_text=$prev;
  +    if ($prev >= 0) {
  +      $prev_text=$texts[$prev];
  +      $prev=$indices[$prev];
         if (($p=strpos($prev,'~'))!==false)
           $prev_text=substr($prev,$p+1);
         $pnut.=$formatter->link_repl("[wiki:$prev $prev_text]"," accesskey=\",\" ");
  @@ -91,8 +93,9 @@
       if ($use_action) $formatter->query_string=$save;
       $pnut.=" | ".$formatter->link_repl("[wiki:$index $index_text]")." | ";
       if ($use_action) $formatter->query_string=$query;
  -    if ($next) {
  -      $next_text=$next;
  +    if ($next >=0) {
  +      $next_text=$texts[$next];
  +      $next=$indices[$next];
         if (($p=strpos($next,'~'))!==false)
           $next_text=substr($next,$p+1);
         $pnut.=$formatter->link_repl("[wiki:$next $next_text]"," accesskey=\".\" ");
  
  
  


wkpark      2005/03/26 21:29:19

  Modified:    .        wikilib.php
  Log:
  fixed PR #300719 by hhyoon
  
  Revision  Changes    Path
  1.137     +11 -1     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.136
  retrieving revision 1.137
  diff -u -r1.136 -r1.137
  --- wikilib.php	26 Mar 2005 11:20:48 -0000	1.136
  +++ wikilib.php	26 Mar 2005 12:29:19 -0000	1.137
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.136 2005/03/26 11:20:48 wkpark Exp $
  +// $Id: wikilib.php,v 1.137 2005/03/26 12:29:19 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -138,6 +138,16 @@
       }
     }
   
  +  if (preg_match("/^wiki:/", $page)) { # wiki:
  +    $text=$page=substr($page,6);
  + 
  +    if (strpos($page,' ')) { # have a space ?
  +      list($page,$text)= explode(' ',$page,2);
  +    }
  + 
  +    if ($page[0]=='/') $page= $pagename.$page;
  +  }
  +
     return array($page,$text,$main_page);
   }
   
  
  
  


wkpark      2005/03/26 21:30:29

  Modified:    .        wiki.php
  Log:
  fixed PR #300718: fixed external_target feature reported by hhyoon
  
  Revision  Changes    Path
  1.205     +5 -5      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.204
  retrieving revision 1.205
  diff -u -r1.204 -r1.205
  --- wiki.php	26 Mar 2005 11:42:03 -0000	1.204
  +++ wiki.php	26 Mar 2005 12:30:29 -0000	1.205
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.204 2005/03/26 11:42:03 wkpark Exp $
  +// $Id: wiki.php,v 1.205 2005/03/26 12:30:29 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.204 $',1,-1);
  +$_revision = substr('$Revision: 1.205 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -1334,7 +1334,7 @@
       $this->external_on=0;
       $this->external_target='';
       if ($DBInfo->external_target)
  -      $this->external_target='target="'.$DBInfo->external_target.'" ';
  +      $this->external_target='target="'.$DBInfo->external_target.'"';
   
       #$this->baserule=array("/<([^\s][^>]*)>/","/`([^`]*)`/",
       $this->baserule=array("/<([^\s<>])/","/`([^`' ]+)'/","/(?<!`)`([^`]*)`/",
  @@ -1638,7 +1638,7 @@
               $external_link='<span class="externalLink">('.$url.')</span>';
           }
           $icon=strtok($url,':');
  -        return "<img align='middle' alt='[$icon]' src='".$this->imgs_dir_url."$icon.png' />". "<a class='externalLink' $attr $this->ex_target href='$link'>$text</a>".$external_icon.$external_link;
  +        return "<img align='middle' alt='[$icon]' src='".$this->imgs_dir_url."$icon.png' />". "<a class='externalLink' $attr $this->external_target href='$link'>$text</a>".$external_icon.$external_link;
         } # have no space
         $link=str_replace('&','&amp;',$url);
         if (preg_match("/^(http|https|ftp)/",$url)) {
  @@ -1654,7 +1654,7 @@
             return "<img alt='$link' $attr src='$url' />";
           }
         }
  -      return "<a class='externalLink' $attr href='$link' $this->ex_target>$url</a>";
  +      return "<a class='externalLink' $attr href='$link' $this->external_target>$url</a>";
       } else {
         if ($url[0]=="?") $url=substr($url,1);
         return $this->word_repl($url,'',$attr);
  
  
  


wkpark      2005/03/26 21:52:21

  Modified:    .        wiki.php
  Log:
  fixed PR #300717: suggested by hhyoon - add PIs(#twinpages,#notwins) to on/off twinpages
  
  Revision  Changes    Path
  1.206     +9 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.205
  retrieving revision 1.206
  diff -u -r1.205 -r1.206
  --- wiki.php	26 Mar 2005 12:30:29 -0000	1.205
  +++ wiki.php	26 Mar 2005 12:52:21 -0000	1.206
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.205 2005/03/26 12:30:29 wkpark Exp $
  +// $Id: wiki.php,v 1.206 2005/03/26 12:52:21 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.205 $',1,-1);
  +$_revision = substr('$Revision: 1.206 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -1468,7 +1468,8 @@
   
     function get_instructions(&$body) {
       global $DBInfo;
  -    $pikeys=array('#redirect','#action','#title','#keywords','#noindex');
  +    $pikeys=array('#redirect','#action','#title','#keywords','#noindex',
  +      '#twinpages','#notwins');
       $pi=array();
       if (!$body) {
         if (!$this->page->exists()) return '';
  @@ -1514,6 +1515,8 @@
           if (in_array($key,$pikeys)) { $pi[$key]=$val ? $val:1; }
           else $notused[]=$line;
         }
  +      #
  +      if ($pi['#notwins']) $pi['#twinpages']=0;
       }
   
       if ($format) {
  @@ -2137,7 +2140,9 @@
           return;
         }
   
  -      $twins=$DBInfo->metadb->getTwinPages($this->page->name,$DBInfo->use_twinpages);
  +      $twin_mode=$DBInfo->use_twinpages;
  +      if (isset($pi['#twinpages'])) $twin_mode=$pi['#twinpages'];
  +      $twins=$DBInfo->metadb->getTwinPages($this->page->name,$twin_mode);
         if ($body) {
           $body=rtrim($body); # delete last empty line
           $lines=explode("\n",$body);
  
  
  


wkpark      2005/03/27 00:48:04

  Modified:    plugin/processor gnuplot.php
  Log:
  fix security bug
  
  Revision  Changes    Path
  1.9       +3 -1      moniwiki/plugin/processor/gnuplot.php
  
  Index: gnuplot.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/gnuplot.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- gnuplot.php	18 Mar 2005 11:06:41 -0000	1.8
  +++ gnuplot.php	26 Mar 2005 15:48:04 -0000	1.9
  @@ -6,7 +6,7 @@
   // Usage: {{{#!gnuplot
   // plot sin(x)
   // }}}
  -// $Id: gnuplot.php,v 1.8 2005/03/18 11:06:41 wkpark Exp $
  +// $Id: gnuplot.php,v 1.9 2005/03/26 15:48:04 wkpark Exp $
   
   function processor_gnuplot($formatter="",$value="") {
     global $DBInfo;
  @@ -70,6 +70,8 @@
     $plt=preg_replace("/\n\s*![^\n]+\n/","\n",$plt); # strip shell commands
     $plt=preg_replace("/[ ]+/"," ",$plt);
     $plt=preg_replace("/\nset?\s+(t|o|si).*\n/", "\n",$plt);
  +  #
  +  $plt=preg_replace("/\n\s*(s?plot)\s+('|\")<(\s*)/", "\n\\1 \\2\\3",$plt);
     
     #print "<pre>$plt</pre>";
     
  
  
  


wkpark      2005/03/27 00:56:46

  Modified:    plugin   subscribe.php
  Log:
  fixed message
  
  Revision  Changes    Path
  1.3       +2 -2      moniwiki/plugin/subscribe.php
  
  Index: subscribe.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/subscribe.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- subscribe.php	24 Nov 2004 15:30:30 -0000	1.2
  +++ subscribe.php	26 Mar 2005 15:56:46 -0000	1.3
  @@ -3,14 +3,14 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a subscribe action plugin for the MoniWiki
   //
  -// $Id: subscribe.php,v 1.2 2004/11/24 15:30:30 wkpark Exp $
  +// $Id: subscribe.php,v 1.3 2005/03/26 15:56:46 wkpark Exp $
   
   function do_subscribe($formatter,$options) {
     global $DBInfo;
   
     if (!$DBInfo->notify) {
       $options['title']=_("EmailNotification is not activated");
  -    $options['msg']=_("If you wan't to subscribe this page please contact the WikiMaster to activate the e-mail notification");
  +    $options['msg']=_("If you want to subscribe this page please contact the WikiMaster to activate the e-mail notification");
       do_invalid($formatter,$options);
     }
   
  
  
  


wkpark      2005/03/28 00:34:40

  moniwiki/local - New directory

wkpark      2005/03/28 06:56:17

  Added:       local    ASCIIMathML.js
  Log:
  add ASCIIMathML.js for the asciimathml processor
  
  Revision  Changes    Path
  1.1                  moniwiki/local/ASCIIMathML.js
  
  Index: ASCIIMathML.js
  ===================================================================
  /*
  ASCIIMathML.js
  ==============
  This file contains JavaScript functions to convert ASCII math notation
  to Presentation MathML. The conversion is done while the XHTML page 
  loads, and should work with Firefox/Mozilla/Netscape 7+ and Internet 
  Explorer 6+MathPlayer (http://www.dessci.com/en/products/mathplayer/).
  This is a convenient and inexpensive solution for authoring MathML.
  
  Version 1.4.4 Jan 6, 2005, (c) Peter Jipsen http://www.chapman.edu/~jipsen
  Latest version at http://www.chapman.edu/~jipsen/mathml/ASCIIMathML.js
  If you use it on a webpage, please send the URL to jipsen@chapman.edu
  
  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2 of the License, or (at
  your option) any later version.
  
  This program is distributed in the hope that it will be useful, 
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  General Public License (at http://www.gnu.org/copyleft/gpl.html) 
  for more details.
  */
  
  var checkForMathML = true; // check if browser can display MathML
  var notifyIfNoMathML = true; // put note at top of page if no MathML capability
  var mathcolor = "";   // change it to "" (to inherit) or any other color
  var mathfontfamily = "serif"; // change to "" (to inherit) or another family
  var displaystyle = true;   // puts limits above and below large operators
  var separatetokens = false;// if true, nonletters must separate letter tokens
  
  var AMdelimiter1 = "`", AMescape1 = "\\\\`"; // can use other characters
  var AMdelimiter2 = "$", AMescape2 = "\\\\\\$", AMdelimiter2regexp = "\\$";
  var doubleblankmathdelimiter = false; // if true,  x+1  is equal to `x+1`
                                        // for IE this works only in <!--   -->
  var isIE = document.createElementNS==null;
  
  if (document.getElementById==null) 
    alert("This webpage requires a recent browser such as\
  \nMozilla/Netscape 7+ or Internet Explorer 6+MathPlayer")
  
  // all further global variables start with "AM"
  
  function AMcreateElementXHTML(t) {
    if (isIE) return document.createElement(t);
    else return document.createElementNS("http://www.w3.org/1999/xhtml",t);
  }
  
  function AMisMathMLavailable() {
    var nd = AMcreateElementXHTML("center");
    nd.appendChild(document.createTextNode("To view the "));
    var an = AMcreateElementXHTML("a");
    an.appendChild(document.createTextNode("ASCIIMathML"));
    an.setAttribute("href","http://www.chapman.edu/~jipsen/asciimath.html");
    nd.appendChild(an);
    nd.appendChild(document.createTextNode(" notation use Internet Explorer 6+"));  
    an = AMcreateElementXHTML("a");
    an.appendChild(document.createTextNode("MathPlayer"));
    an.setAttribute("href","http://www.dessci.com/en/products/mathplayer/download.htm");
    nd.appendChild(an);
    nd.appendChild(document.createTextNode(" or Netscape/Mozilla/Firefox"));
    if (navigator.appName.slice(0,8)=="Netscape") 
      if (navigator.appVersion.slice(0,1)>="5") return null;
      else return nd;
    else if (navigator.appName.slice(0,9)=="Microsoft")
      try {
          var ActiveX = new ActiveXObject("MathPlayer.Factory.1");
          return null;
      } catch (e) {
          return nd;
      }
    else return nd;
  }
  
  // character lists for Mozilla/Netscape fonts
  var AMcal = [0xEF35,0x212C,0xEF36,0xEF37,0x2130,0x2131,0xEF38,0x210B,0x2110,0xEF39,0xEF3A,0x2112,0x2133,0xEF3B,0xEF3C,0xEF3D,0xEF3E,0x211B,0xEF3F,0xEF40,0xEF41,0xEF42,0xEF43,0xEF44,0xEF45,0xEF46];
  var AMfrk = [0xEF5D,0xEF5E,0x212D,0xEF5F,0xEF60,0xEF61,0xEF62,0x210C,0x2111,0xEF63,0xEF64,0xEF65,0xEF66,0xEF67,0xEF68,0xEF69,0xEF6A,0x211C,0xEF6B,0xEF6C,0xEF6D,0xEF6E,0xEF6F,0xEF70,0xEF71,0x2128];
  var AMbbb = [0xEF8C,0xEF8D,0x2102,0xEF8E,0xEF8F,0xEF90,0xEF91,0x210D,0xEF92,0xEF93,0xEF94,0xEF95,0xEF96,0x2115,0xEF97,0x2119,0x211A,0x211D,0xEF98,0xEF99,0xEF9A,0xEF9B,0xEF9C,0xEF9D,0xEF9E,0x2124];
  
  var CONST = 0, UNARY = 1, BINARY = 2, INFIX = 3, LEFTBRACKET = 4, 
      RIGHTBRACKET = 5, SPACE = 6, UNDEROVER = 7, DEFINITION = 8; // token types
  
  var AMsqrt = {input:"sqrt", tag:"msqrt", output:"sqrt", tex:null, ttype:UNARY},
    AMroot  = {input:"root", tag:"mroot", output:"root", tex:null, ttype:BINARY},
    AMfrac  = {input:"frac", tag:"mfrac", output:"/",    tex:null, ttype:BINARY},
    AMdiv   = {input:"/",    tag:"mfrac", output:"/",    tex:null, ttype:INFIX},
    AMover  = {input:"stackrel", tag:"mover", output:"stackrel", tex:null, ttype:BINARY},
    AMsub   = {input:"_",    tag:"msub",  output:"_",    tex:null, ttype:INFIX},
    AMsup   = {input:"^",    tag:"msup",  output:"^",    tex:null, ttype:INFIX},
    AMtext  = {input:"text", tag:"mtext", output:"text", tex:null, ttype:UNARY},
    AMmbox  = {input:"mbox", tag:"mtext", output:"mbox", tex:null, ttype:UNARY},
    AMquote = {input:"\"",   tag:"mtext", output:"mbox", tex:null, ttype:UNARY};
  
  var AMsymbols = [
  //some greek symbols
  {input:"alpha",  tag:"mi", output:"\u03B1", tex:null, ttype:CONST},
  {input:"beta",   tag:"mi", output:"\u03B2", tex:null, ttype:CONST},
  {input:"chi",    tag:"mi", output:"\u03C7", tex:null, ttype:CONST},
  {input:"delta",  tag:"mi", output:"\u03B4", tex:null, ttype:CONST},
  {input:"Delta",  tag:"mo", output:"\u0394", tex:null, ttype:CONST},
  {input:"epsi",   tag:"mi", output:"\u03B5", tex:"epsilon", ttype:CONST},
  {input:"varepsilon", tag:"mi", output:"\u025B", tex:null, ttype:CONST},
  {input:"eta",    tag:"mi", output:"\u03B7", tex:null, ttype:CONST},
  {input:"gamma",  tag:"mi", output:"\u03B3", tex:null, ttype:CONST},
  {input:"Gamma",  tag:"mo", output:"\u0393", tex:null, ttype:CONST},
  {input:"iota",   tag:"mi", output:"\u03B9", tex:null, ttype:CONST},
  {input:"kappa",  tag:"mi", output:"\u03BA", tex:null, ttype:CONST},
  {input:"lambda", tag:"mi", output:"\u03BB", tex:null, ttype:CONST},
  {input:"Lambda", tag:"mo", output:"\u039B", tex:null, ttype:CONST},
  {input:"mu",     tag:"mi", output:"\u03BC", tex:null, ttype:CONST},
  {input:"nu",     tag:"mi", output:"\u03BD", tex:null, ttype:CONST},
  {input:"omega",  tag:"mi", output:"\u03C9", tex:null, ttype:CONST},
  {input:"Omega",  tag:"mo", output:"\u03A9", tex:null, ttype:CONST},
  {input:"phi",    tag:"mi", output:"\u03C6", tex:null, ttype:CONST},
  {input:"varphi", tag:"mi", output:"\u03D5", tex:null, ttype:CONST},
  {input:"Phi",    tag:"mo", output:"\u03A6", tex:null, ttype:CONST},
  {input:"pi",     tag:"mi", output:"\u03C0", tex:null, ttype:CONST},
  {input:"Pi",     tag:"mo", output:"\u03A0", tex:null, ttype:CONST},
  {input:"psi",    tag:"mi", output:"\u03C8", tex:null, ttype:CONST},
  {input:"rho",    tag:"mi", output:"\u03C1", tex:null, ttype:CONST},
  {input:"sigma",  tag:"mi", output:"\u03C3", tex:null, ttype:CONST},
  {input:"Sigma",  tag:"mo", output:"\u03A3", tex:null, ttype:CONST},
  {input:"tau",    tag:"mi", output:"\u03C4", tex:null, ttype:CONST},
  {input:"theta",  tag:"mi", output:"\u03B8", tex:null, ttype:CONST},
  {input:"vartheta", tag:"mi", output:"\u03D1", tex:null, ttype:CONST},
  {input:"Theta",  tag:"mo", output:"\u0398", tex:null, ttype:CONST},
  {input:"upsilon", tag:"mi", output:"\u03C5", tex:null, ttype:CONST},
  {input:"xi",     tag:"mi", output:"\u03BE", tex:null, ttype:CONST},
  {input:"Xi",     tag:"mo", output:"\u039E", tex:null, ttype:CONST},
  {input:"zeta",   tag:"mi", output:"\u03B6", tex:null, ttype:CONST},
  
  //binary operation symbols
  {input:"*",  tag:"mo", output:"\u22C5", tex:"cdot", ttype:CONST},
  {input:"**", tag:"mo", output:"\u22C6", tex:"star", ttype:CONST},
  {input:"//", tag:"mo", output:"/",      tex:null, ttype:CONST},
  {input:"\\\\", tag:"mo", output:"\\",   tex:"backslash", ttype:CONST},
  {input:"setminus", tag:"mo", output:"\\",   tex:null, ttype:CONST},
  {input:"xx", tag:"mo", output:"\u00D7", tex:"times", ttype:CONST},
  {input:"-:", tag:"mo", output:"\u00F7", tex:"divide", ttype:CONST},
  {input:"@",  tag:"mo", output:"\u2218", tex:"circ", ttype:CONST},
  {input:"o+", tag:"mo", output:"\u2295", tex:"oplus", ttype:CONST},
  {input:"ox", tag:"mo", output:"\u2297", tex:"otimes", ttype:CONST},
  {input:"o.", tag:"mo", output:"\u2299", tex:"odot", ttype:CONST},
  {input:"sum", tag:"mo", output:"\u2211", tex:null, ttype:UNDEROVER},
  {input:"prod", tag:"mo", output:"\u220F", tex:null, ttype:UNDEROVER},
  {input:"^^",  tag:"mo", output:"\u2227", tex:"wedge", ttype:CONST},
  {input:"^^^", tag:"mo", output:"\u22C0", tex:"bigwedge", ttype:UNDEROVER},
  {input:"vv",  tag:"mo", output:"\u2228", tex:"vee", ttype:CONST},
  {input:"vvv", tag:"mo", output:"\u22C1", tex:"bigvee", ttype:UNDEROVER},
  {input:"nn",  tag:"mo", output:"\u2229", tex:"cap", ttype:CONST},
  {input:"nnn", tag:"mo", output:"\u22C2", tex:"bigcap", ttype:UNDEROVER},
  {input:"uu",  tag:"mo", output:"\u222A", tex:"cup", ttype:CONST},
  {input:"uuu", tag:"mo", output:"\u22C3", tex:"bigcup", ttype:UNDEROVER},
  
  //binary relation symbols
  {input:"!=",  tag:"mo", output:"\u2260", tex:"ne", ttype:CONST},
  {input:":=",  tag:"mo", output:":=",     tex:null, ttype:CONST},
  {input:"lt",  tag:"mo", output:"<",      tex:null, ttype:CONST},
  {input:"<=",  tag:"mo", output:"\u2264", tex:"le", ttype:CONST},
  {input:"lt=", tag:"mo", output:"\u2264", tex:"leq", ttype:CONST},
  {input:">=",  tag:"mo", output:"\u2265", tex:"ge", ttype:CONST},
  {input:"geq", tag:"mo", output:"\u2265", tex:null, ttype:CONST},
  {input:"-<",  tag:"mo", output:"\u227A", tex:"prec", ttype:CONST},
  {input:"-lt", tag:"mo", output:"\u227A", tex:null, ttype:CONST},
  {input:">-",  tag:"mo", output:"\u227B", tex:"succ", ttype:CONST},
  {input:"in",  tag:"mo", output:"\u2208", tex:null, ttype:CONST},
  {input:"!in", tag:"mo", output:"\u2209", tex:"notin", ttype:CONST},
  {input:"sub", tag:"mo", output:"\u2282", tex:"subset", ttype:CONST},
  {input:"sup", tag:"mo", output:"\u2283", tex:"supset", ttype:CONST},
  {input:"sube", tag:"mo", output:"\u2286", tex:"subseteq", ttype:CONST},
  {input:"supe", tag:"mo", output:"\u2287", tex:"supseteq", ttype:CONST},
  {input:"-=",  tag:"mo", output:"\u2261", tex:"equiv", ttype:CONST},
  {input:"~=",  tag:"mo", output:"\u2245", tex:"cong", ttype:CONST},
  {input:"~~",  tag:"mo", output:"\u2248", tex:"approx", ttype:CONST},
  {input:"prop", tag:"mo", output:"\u221D", tex:"propto", ttype:CONST},
  
  //logical symbols
  {input:"and", tag:"mtext", output:"and", tex:null, ttype:SPACE},
  {input:"or",  tag:"mtext", output:"or",  tex:null, ttype:SPACE},
  {input:"not", tag:"mo", output:"\u00AC", tex:"neg", ttype:CONST},
  {input:"=>",  tag:"mo", output:"\u21D2", tex:"implies", ttype:CONST},
  {input:"if",  tag:"mo", output:"if",     tex:null, ttype:SPACE},
  {input:"<=>", tag:"mo", output:"\u21D4", tex:"iff", ttype:CONST},
  {input:"AA",  tag:"mo", output:"\u2200", tex:"forall", ttype:CONST},
  {input:"EE",  tag:"mo", output:"\u2203", tex:"exists", ttype:CONST},
  {input:"_|_", tag:"mo", output:"\u22A5", tex:"bot", ttype:CONST},
  {input:"TT",  tag:"mo", output:"\u22A4", tex:"top", ttype:CONST},
  {input:"|-",  tag:"mo", output:"\u22A2", tex:"vdash", ttype:CONST},
  {input:"|=",  tag:"mo", output:"\u22A8", tex:"models", ttype:CONST},
  
  //grouping brackets
  {input:"(", tag:"mo", output:"(", tex:null, ttype:LEFTBRACKET},
  {input:")", tag:"mo", output:")", tex:null, ttype:RIGHTBRACKET},
  {input:"[", tag:"mo", output:"[", tex:null, ttype:LEFTBRACKET},
  {input:"]", tag:"mo", output:"]", tex:null, ttype:RIGHTBRACKET},
  {input:"{", tag:"mo", output:"{", tex:null, ttype:LEFTBRACKET},
  {input:"}", tag:"mo", output:"}", tex:null, ttype:RIGHTBRACKET},
  {input:"(:", tag:"mo", output:"\u2329", tex:"langle", ttype:LEFTBRACKET},
  {input:":)", tag:"mo", output:"\u232A", tex:"rangle", ttype:RIGHTBRACKET},
  {input:"<<", tag:"mo", output:"\u2329", tex:null, ttype:LEFTBRACKET},
  {input:">>", tag:"mo", output:"\u232A", tex:null, ttype:RIGHTBRACKET},
  {input:"{:", tag:"mo", output:"{:", tex:null, ttype:LEFTBRACKET, invisible:true},
  {input:":}", tag:"mo", output:":}", tex:null, ttype:RIGHTBRACKET, invisible:true},
  
  //miscellaneous symbols
  {input:"int",  tag:"mo", output:"\u222B", tex:null, ttype:CONST},
  {input:"dx",   tag:"mi", output:"{:d x:}", tex:null, ttype:DEFINITION},
  {input:"dy",   tag:"mi", output:"{:d y:}", tex:null, ttype:DEFINITION},
  {input:"dz",   tag:"mi", output:"{:d z:}", tex:null, ttype:DEFINITION},
  {input:"dt",   tag:"mi", output:"{:d t:}", tex:null, ttype:DEFINITION},
  {input:"oint", tag:"mo", output:"\u222E", tex:null, ttype:CONST},
  {input:"del",  tag:"mo", output:"\u2202", tex:"partial", ttype:CONST},
  {input:"grad", tag:"mo", output:"\u2207", tex:"nabla", ttype:CONST},
  {input:"+-",   tag:"mo", output:"\u00B1", tex:"pm", ttype:CONST},
  {input:"O/",   tag:"mo", output:"\u2205", tex:"emptyset", ttype:CONST},
  {input:"oo",   tag:"mo", output:"\u221E", tex:"infty", ttype:CONST},
  {input:"aleph", tag:"mo", output:"\u2135", tex:null, ttype:CONST},
  {input:"...",  tag:"mo", output:"...",    tex:"ldots", ttype:CONST},
  {input:"\\ ",  tag:"mo", output:"\u00A0", tex:null, ttype:CONST},
  {input:"quad", tag:"mo", output:"\u00A0\u00A0", tex:null, ttype:CONST},
  {input:"qquad", tag:"mo", output:"\u00A0\u00A0\u00A0\u00A0", tex:null, ttype:CONST},
  {input:"cdots", tag:"mo", output:"\u22EF", tex:null, ttype:CONST},
  {input:"vdots", tag:"mo", output:"\u22EE", tex:null, ttype:CONST},
  {input:"ddots", tag:"mo", output:"\u22F1", tex:null, ttype:CONST},
  {input:"diamond", tag:"mo", output:"\u22C4", tex:null, ttype:CONST},
  {input:"square", tag:"mo", output:"\u25A1", tex:null, ttype:CONST},
  {input:"|_", tag:"mo", output:"\u230A",  tex:"lfloor", ttype:CONST},
  {input:"_|", tag:"mo", output:"\u230B",  tex:"rfloor", ttype:CONST},
  {input:"|~", tag:"mo", output:"\u2308",  tex:"lceiling", ttype:CONST},
  {input:"~|", tag:"mo", output:"\u2309",  tex:"rceiling", ttype:CONST},
  {input:"CC",  tag:"mo", output:"\u2102", tex:null, ttype:CONST},
  {input:"NN",  tag:"mo", output:"\u2115", tex:null, ttype:CONST},
  {input:"QQ",  tag:"mo", output:"\u211A", tex:null, ttype:CONST},
  {input:"RR",  tag:"mo", output:"\u211D", tex:null, ttype:CONST},
  {input:"ZZ",  tag:"mo", output:"\u2124", tex:null, ttype:CONST},
  
  //standard functions
  {input:"lim",  tag:"mo", output:"lim", tex:null, ttype:UNDEROVER},
  {input:"Lim",  tag:"mo", output:"Lim", tex:null, ttype:UNDEROVER},
  {input:"sin",  tag:"mo", output:"sin", tex:null, ttype:CONST},
  {input:"cos",  tag:"mo", output:"cos", tex:null, ttype:CONST},
  {input:"tan",  tag:"mo", output:"tan", tex:null, ttype:CONST},
  {input:"sinh", tag:"mo", output:"sinh", tex:null, ttype:CONST},
  {input:"cosh", tag:"mo", output:"cosh", tex:null, ttype:CONST},
  {input:"tanh", tag:"mo", output:"tanh", tex:null, ttype:CONST},
  {input:"cot",  tag:"mo", output:"cot", tex:null, ttype:CONST},
  {input:"sec",  tag:"mo", output:"sec", tex:null, ttype:CONST},
  {input:"csc",  tag:"mo", output:"csc", tex:null, ttype:CONST},
  {input:"log",  tag:"mo", output:"log", tex:null, ttype:CONST},
  {input:"ln",   tag:"mo", output:"ln",  tex:null, ttype:CONST},
  {input:"det",  tag:"mo", output:"det", tex:null, ttype:CONST},
  {input:"dim",  tag:"mo", output:"dim", tex:null, ttype:CONST},
  {input:"mod",  tag:"mo", output:"mod", tex:null, ttype:CONST},
  {input:"gcd",  tag:"mo", output:"gcd", tex:null, ttype:CONST},
  {input:"lcm",  tag:"mo", output:"lcm", tex:null, ttype:CONST},
  {input:"lub",  tag:"mo", output:"lub", tex:null, ttype:CONST},
  {input:"glb",  tag:"mo", output:"glb", tex:null, ttype:CONST},
  {input:"min",  tag:"mo", output:"min", tex:null, ttype:UNDEROVER},
  {input:"max",  tag:"mo", output:"max", tex:null, ttype:UNDEROVER},
  
  //arrows
  {input:"uarr", tag:"mo", output:"\u2191", tex:"uparrow", ttype:CONST},
  {input:"darr", tag:"mo", output:"\u2193", tex:"downarrow", ttype:CONST},
  {input:"rarr", tag:"mo", output:"\u2192", tex:"rightarrow", ttype:CONST},
  {input:"->",   tag:"mo", output:"\u2192", tex:"to", ttype:CONST},
  {input:"|->",  tag:"mo", output:"\u21A6", tex:"mapsto", ttype:CONST},
  {input:"larr", tag:"mo", output:"\u2190", tex:"leftarrow", ttype:CONST},
  {input:"harr", tag:"mo", output:"\u2194", tex:"leftrightarrow", ttype:CONST},
  {input:"rArr", tag:"mo", output:"\u21D2", tex:"Rightarrow", ttype:CONST},
  {input:"lArr", tag:"mo", output:"\u21D0", tex:"Leftarrow", ttype:CONST},
  {input:"hArr", tag:"mo", output:"\u21D4", tex:"Leftrightarrow", ttype:CONST},
  
  //commands with argument
  AMsqrt, AMroot, AMfrac, AMdiv, AMover, AMsub, AMsup,
  {input:"hat", tag:"mover", output:"\u005E", tex:null, ttype:UNARY, acc:true},
  {input:"bar", tag:"mover", output:"\u00AF", tex:"overline", ttype:UNARY, acc:true},
  {input:"vec", tag:"mover", output:"\u2192", tex:null, ttype:UNARY, acc:true},
  {input:"dot", tag:"mover", output:".",      tex:null, ttype:UNARY, acc:true},
  {input:"ddot", tag:"mover", output:"..",    tex:null, ttype:UNARY, acc:true},
  {input:"ul", tag:"munder", output:"\u0332", tex:"underline", ttype:UNARY, acc:true},
  AMtext, AMmbox, AMquote,
  {input:"bb", tag:"mstyle", atname:"fontweight", atval:"bold", output:"bb", tex:null, ttype:UNARY},
  {input:"mathbf", tag:"mstyle", atname:"fontweight", atval:"bold", output:"mathbf", tex:null, ttype:UNARY},
  {input:"sf", tag:"mstyle", atname:"fontfamily", atval:"sans-serif", output:"sf", tex:null, ttype:UNARY},
  {input:"mathsf", tag:"mstyle", atname:"fontfamily", atval:"sans-serif", output:"mathsf", tex:null, ttype:UNARY},
  {input:"bbb", tag:"mstyle", atname:"mathvariant", atval:"double-struck", output:"bbb", tex:null, ttype:UNARY, codes:AMbbb},
  {input:"mathbb", tag:"mstyle", atname:"mathvariant", atval:"double-struck", output:"mathbb", tex:null, ttype:UNARY, codes:AMbbb},
  {input:"cc",  tag:"mstyle", atname:"mathvariant", atval:"script", output:"cc", tex:null, ttype:UNARY, codes:AMcal},
  {input:"mathcal", tag:"mstyle", atname:"mathvariant", atval:"script", output:"mathcal", tex:null, ttype:UNARY, codes:AMcal},
  {input:"tt",  tag:"mstyle", atname:"fontfamily", atval:"monospace", output:"tt", tex:null, ttype:UNARY},
  {input:"mathtt", tag:"mstyle", atname:"fontfamily", atval:"monospace", output:"mathtt", tex:null, ttype:UNARY},
  {input:"fr",  tag:"mstyle", atname:"mathvariant", atval:"fraktur", output:"fr", tex:null, ttype:UNARY, codes:AMfrk},
  {input:"mathfrak",  tag:"mstyle", atname:"mathvariant", atval:"fraktur", output:"mathfrak", tex:null, ttype:UNARY, codes:AMfrk}
  ];
  
  function compareNames(s1,s2) {
    if (s1.input > s2.input) return 1
    else return -1;
  }
  
  var AMnames = []; //list of input symbols
  
  function AMinitSymbols() {
    var texsymbols = [], i;
    for (i=0; i<AMsymbols.length; i++)
      if (AMsymbols[i].tex) 
        texsymbols[texsymbols.length] = {input:AMsymbols[i].tex, 
          tag:AMsymbols[i].tag, output:AMsymbols[i].output, ttype:AMsymbols[i].ttype};
    AMsymbols = AMsymbols.concat(texsymbols);
    AMsymbols.sort(compareNames);
    for (i=0; i<AMsymbols.length; i++) AMnames[i] = AMsymbols[i].input;
  }
  
  var AMmathml = "http://www.w3.org/1998/Math/MathML";
  
  function AMcreateElementMathML(t) {
    if (isIE) return document.createElement("mml:"+t);
    else return document.createElementNS(AMmathml,t);
  }
  
  function AMcreateMmlNode(name,frag) {
    var node = AMcreateElementMathML(name);
    node.appendChild(frag);
    return node;
  }
  
  function AMremoveCharsAndBlanks(str,n) {
  //remove n characters and any following blanks
    var st;
    if (str.charAt(n)=="\\" && str.charAt(n+1)!="\\" && str.charAt(n+1)!=" ") 
      st = str.slice(n+1);
    else st = str.slice(n);
    for (var i=0; i<st.length && st.charCodeAt(i)<=32; i=i+1);
    return st.slice(i);
  }
  
  function AMposition(arr, str, n) { 
  // return position >=n where str appears or would be inserted
  // assumes arr is sorted
    if (n==0) {
      var h,m;
      n = -1;
      h = arr.length;
      while (n+1<h) {
        m = (n+h) >> 1;
        if (arr[m]<str) n = m; else h = m;
      }
      return h;
    } else
      for (var i=n; i<arr.length && arr[i]<str; i++);
    return i; // i=arr.length || arr[i]>=str
  }
  
  var AMseparated = true;
  
  function AMgetSymbol(str) {
  //return maximal initial substring of str that appears in names
  //return null if there is none
    var k = 0; //new pos
    var j = 0; //old pos
    var mk; //match pos
    var st;
    var tagst;
    var match = "";
    var more = true;
    for (var i=1; i<=str.length && more; i++) {
      st = str.slice(0,i); //initial substring of length i
      j = k;
      k = AMposition(AMnames, st, j);
      if (k<AMnames.length && str.slice(0,AMnames[k].length)==AMnames[k]){
        match = AMnames[k];
        mk = k;
        i = match.length;
      }
      more = k<AMnames.length && str.slice(0,AMnames[k].length)>=AMnames[k];
    }
    if (match!="")
      if (separatetokens) {
        i = match.length;
        if ("a">str.charAt(0) || str.charAt(0)>"z" || 
          "a">str.charAt(i-1) || str.charAt(i-1)>"z") {
          AMseparated = true;
          return AMsymbols[mk];
        }
        st = str.charAt(i);
        AMseparated = AMseparated && ("a">st || st>"z");
        if (AMseparated) return AMsymbols[mk];
      } else return AMsymbols[mk]; 
  // if str[0] is a digit or - return maxsubstring of digits.digits
    k = 1;
    st = str.slice(0,1);
    var pos = true;
    var integ = true;
    if (st == "-") {
      pos = false;
      st = str.slice(k,k+1);
      k++;
    }
    while ("0"<=st && st<="9" && k<=str.length) {
      st = str.slice(k,k+1);
      k++;
    }
    if (st == ".") {
      integ = false;
      st = str.slice(k,k+1);
      k++;
      while ("0"<=st && st<="9" && k<=str.length) {
        st = str.slice(k,k+1);
        k++;
      }
    }
    if ((pos && integ && k>1) || ((pos || integ) && k>2) || k>3) {
      st = str.slice(0,k-1);
      tagst = "mn";
      AMseparated = true;
    } else {
      k = 2;
      st = str.slice(0,1); //take 1 character
      AMseparated = ("A">st || st>"Z") && ("a">st || st>"z");
      tagst = (AMseparated?"mo":"mi");
      AMseparated = AMseparated || str.charAt(1)<"a" || str.charAt(1)>"z";
    }
    return {input:str.slice(0,k-1), tag:tagst, output:st, ttype:CONST};
  }
  
  function AMremoveBrackets(node) {
    var st;
    if (node.nodeName=="mrow") {
      st = node.firstChild.firstChild.nodeValue;
      if (st=="(" || st=="[" || st=="{") node.removeChild(node.firstChild);
    }
    if (node.nodeName=="mrow") {
      st = node.lastChild.firstChild.nodeValue;
      if (st==")" || st=="]" || st=="}") node.removeChild(node.lastChild);
    }
  }
  
  /*Parsing ASCII math expressions with the following grammar
  V ::= [A-Za-z] | greek letters | numbers | other constant symbols
  U ::= sqrt | text | bb | other unary symbols for font commands
  B ::= frac | root | stackrel         binary symbols
  L ::= ( | [ | { | (: | {:            left brackets
  R ::= ) | ] | } | :) | :}            right brackets
  S ::= V | LER | US | BSS             simple expression
  E ::= SE | S/S | S_S | S^S | S_S^S   expression
  Each terminal symbol is translated into a corresponding mathml node.*/
  
  var AMnestingDepth;
  
  function AMparseSexpr(str) { //parses str and returns [node,tailstr]
    var symbol, node, result, i, st, newFrag = document.createDocumentFragment();
    str = AMremoveCharsAndBlanks(str,0);
    symbol = AMgetSymbol(str);             //either a token or a bracket or empty
    if (symbol == null || symbol.ttype == RIGHTBRACKET && AMnestingDepth > 0)
      return [null,str];
    if (symbol.ttype == DEFINITION) {
      str = symbol.output+AMremoveCharsAndBlanks(str,symbol.input.length); 
      symbol = AMgetSymbol(str);
    }
    switch (symbol.ttype) {
    case UNDEROVER:
    case CONST:
      str = AMremoveCharsAndBlanks(str,symbol.input.length); 
      if (symbol.tag=="mn" && symbol.output.charAt(0)=="-") {
        node = AMcreateMmlNode("mo",document.createTextNode("-"));
        node = AMcreateMmlNode("mrow",node);
        node.appendChild(AMcreateMmlNode(symbol.tag,        //its a constant
                               document.createTextNode(symbol.output.slice(1))));
        return [node,str];
      } else
      return [AMcreateMmlNode(symbol.tag,        //its a constant
                               document.createTextNode(symbol.output)),str];
    case LEFTBRACKET:   //read (expr+)
      AMnestingDepth++;
      str = AMremoveCharsAndBlanks(str,symbol.input.length); 
      result = AMparseExpr(str);
      if (typeof symbol.invisible == "boolean" && symbol.invisible) 
        node = AMcreateMmlNode("mrow",result[0]);
      else {
        node = AMcreateMmlNode("mo",document.createTextNode(symbol.output));
        node = AMcreateMmlNode("mrow",node);
        node.appendChild(result[0]);
      }
      return [node,result[1]];
    case UNARY:
      if (symbol == AMtext || symbol == AMmbox || symbol == AMquote) {
        if (symbol!=AMquote) str = AMremoveCharsAndBlanks(str,symbol.input.length);
        if (str.charAt(0)=="{") i=str.indexOf("}");
        else if (str.charAt(0)=="(") i=str.indexOf(")");
        else if (str.charAt(0)=="[") i=str.indexOf("]");
        else if (symbol==AMquote) i=str.slice(1).indexOf("\"")+1;
        else i = 0;
        if (i==-1) i = str.length;
        st = str.slice(1,i);
        if (st.charAt(0) == " ") {
          node = AMcreateElementMathML("mspace");
          node.setAttribute("width","1ex");
          newFrag.appendChild(node);
        }
        newFrag.appendChild(
          AMcreateMmlNode(symbol.tag,document.createTextNode(st)));
        if (st.charAt(st.length-1) == " ") {
          node = AMcreateElementMathML("mspace");
          node.setAttribute("width","1ex");
          newFrag.appendChild(node);
        }
        str = AMremoveCharsAndBlanks(str,i+1);
        return [AMcreateMmlNode("mrow",newFrag),str];
      } else {
        str = AMremoveCharsAndBlanks(str,symbol.input.length); 
        result = AMparseSexpr(str);
        if (result[0]==null) return [AMcreateMmlNode("mo",
                               document.createTextNode(symbol.input)),str];
        AMremoveBrackets(result[0]);
        if (symbol == AMsqrt) {           // sqrt
          return [AMcreateMmlNode(symbol.tag,result[0]),result[1]];
        } else if (typeof symbol.acc == "boolean" && symbol.acc) {   // accent
          node = AMcreateMmlNode(symbol.tag,result[0]);
          node.appendChild(AMcreateMmlNode("mo",document.createTextNode(symbol.output)));
          return [node,result[1]];
        } else {                        // font change command
          if (!isIE && typeof symbol.codes != "undefined") {
            for (i=0; i<result[0].childNodes.length; i++)
              if (result[0].childNodes[i].nodeName=="mi" || result[0].nodeName=="mi") {
                st = (result[0].nodeName=="mi"?result[0].firstChild.nodeValue:
                                result[0].childNodes[i].firstChild.nodeValue);
                var newst = [];
                for (var j=0; j<st.length; j++)
                  if (st.charCodeAt(j)>64 && st.charCodeAt(j)<91) newst = newst +
                    String.fromCharCode(symbol.codes[st.charCodeAt(j)-65]);
                  else newst = newst + st.charAt(j);
                if (result[0].nodeName=="mi")
                  result[0]=AMcreateElementMathML("mo").
                            appendChild(document.createTextNode(newst));
                else result[0].replaceChild(AMcreateElementMathML("mo").
            appendChild(document.createTextNode(newst)),result[0].childNodes[i]);
              }
          }
          node = AMcreateMmlNode(symbol.tag,result[0]);
          node.setAttribute(symbol.atname,symbol.atval);
          return [node,result[1]];
        }
      }
    case BINARY:
      str = AMremoveCharsAndBlanks(str,symbol.input.length); 
      result = AMparseSexpr(str);
      if (result[0]==null) return [AMcreateMmlNode("mo",
                             document.createTextNode(symbol.input)),str];
      AMremoveBrackets(result[0]);
      var result2 = AMparseSexpr(result[1]);
      if (result2[0]==null) return [AMcreateMmlNode("mo",
                             document.createTextNode(symbol.input)),str];
      AMremoveBrackets(result2[0]);
      if (symbol==AMroot || symbol==AMover) newFrag.appendChild(result2[0]);
      newFrag.appendChild(result[0]);
      if (symbol==AMfrac) newFrag.appendChild(result2[0]);
      return [AMcreateMmlNode(symbol.tag,newFrag),result2[1]];
    case INFIX:
      str = AMremoveCharsAndBlanks(str,symbol.input.length); 
      return [AMcreateMmlNode("mo",document.createTextNode(symbol.output)),str];
    case SPACE:
      str = AMremoveCharsAndBlanks(str,symbol.input.length); 
      node = AMcreateElementMathML("mspace");
      node.setAttribute("width","1ex");
      newFrag.appendChild(node);
      newFrag.appendChild(
        AMcreateMmlNode(symbol.tag,document.createTextNode(symbol.output)));
      node = AMcreateElementMathML("mspace");
      node.setAttribute("width","1ex");
      newFrag.appendChild(node);
      return [AMcreateMmlNode("mrow",newFrag),str];
    default:
      str = AMremoveCharsAndBlanks(str,symbol.input.length); 
      return [AMcreateMmlNode(symbol.tag,        //its a constant
                               document.createTextNode(symbol.output)),str];
    }
  }
  
  function AMparseExpr(str) {
    var symbol, sym1, sym2, node, result, i, underover, nodeList = [],
    newFrag = document.createDocumentFragment();
    do {
      str = AMremoveCharsAndBlanks(str,0);
      sym1 = AMgetSymbol(str);
      result = AMparseSexpr(str);
      node = result[0];
      str = result[1];
      symbol = AMgetSymbol(str);
      if (symbol.ttype == INFIX) {
        str = AMremoveCharsAndBlanks(str,symbol.input.length);
        result = AMparseSexpr(str);
        if (result[0] == null)
          result[0] = AMcreateMmlNode("mo",document.createTextNode("\u25A1"));
        else AMremoveBrackets(result[0]);
        str = result[1];
        if (symbol == AMdiv) AMremoveBrackets(node);
        if (symbol == AMsub) {
          sym2 = AMgetSymbol(str);
          underover = (sym1.ttype == UNDEROVER);
          if (sym2 == AMsup) {
            str = AMremoveCharsAndBlanks(str,sym2.input.length);
            var res2 = AMparseSexpr(str);
            AMremoveBrackets(res2[0]);
            str = res2[1];
            node = AMcreateMmlNode((underover?"munderover":"msubsup"),node);
            node.appendChild(result[0]);
            node.appendChild(res2[0]);
            node = AMcreateMmlNode("mrow",node); // so sum does not stretch
          } else {
            node = AMcreateMmlNode((underover?"munder":"msub"),node);
            node.appendChild(result[0]);
          }
        } else {
          node = AMcreateMmlNode(symbol.tag,node);
          node.appendChild(result[0]);
        }
        newFrag.appendChild(node);
      } 
      else if (node!=undefined) newFrag.appendChild(node);
    } while ((symbol.ttype != RIGHTBRACKET || AMnestingDepth == 0) && 
             symbol!=null && symbol.output!="");
    if (symbol.ttype == RIGHTBRACKET) {
      if (AMnestingDepth > 0) AMnestingDepth--;
      var len = newFrag.childNodes.length;
      if (len>0 && newFrag.childNodes[len-1].nodeName == "mrow" && len>1 &&
        newFrag.childNodes[len-2].nodeName == "mo" &&
        newFrag.childNodes[len-2].firstChild.nodeValue == ",") { //matrix
        var right = newFrag.childNodes[len-1].lastChild.firstChild.nodeValue;
        if (right==")" || right=="]") {
          var left = newFrag.childNodes[len-1].firstChild.firstChild.nodeValue;
          if (left=="(" && right==")" && symbol.output != "}" || 
              left=="[" && right=="]") {
          var pos = []; // positions of commas
          var matrix = true;
          var m = newFrag.childNodes.length;
          for (i=0; matrix && i<m; i=i+2) {
            pos[i] = [];
            node = newFrag.childNodes[i];
            if (matrix) matrix = node.nodeName=="mrow" && 
              (i==m-1 || node.nextSibling.nodeName=="mo" && 
              node.nextSibling.firstChild.nodeValue==",")&&
              node.firstChild.firstChild.nodeValue==left &&
              node.lastChild.firstChild.nodeValue==right;
            if (matrix) 
              for (var j=0; j<node.childNodes.length; j++)
                if (node.childNodes[j].firstChild.nodeValue==",")
                  pos[i][pos[i].length]=j;
            if (matrix && i>1) matrix = pos[i].length == pos[i-2].length;
          }
          if (matrix) {
            var row, frag, n, k, table = document.createDocumentFragment();
            for (i=0; i<m; i=i+2) {
              row = document.createDocumentFragment();
              frag = document.createDocumentFragment();
              node = newFrag.firstChild; // <mrow>(-,-,...,-,-)</mrow>
              n = node.childNodes.length;
              k = 0;
              node.removeChild(node.firstChild); //remove (
              for (j=1; j<n-1; j++) {
                if (typeof pos[i][k] != "undefined" && j==pos[i][k]){
                  node.removeChild(node.firstChild); //remove ,
                  row.appendChild(AMcreateMmlNode("mtd",frag));
                  k++;
                } else frag.appendChild(node.firstChild);
              }
              row.appendChild(AMcreateMmlNode("mtd",frag));
              if (newFrag.childNodes.length>2) {
                newFrag.removeChild(newFrag.firstChild); //remove <mrow>)</mrow>
                newFrag.removeChild(newFrag.firstChild); //remove <mo>,</mo>
              }
              table.appendChild(AMcreateMmlNode("mtr",row));
            }
            node = AMcreateMmlNode("mtable",table);
            if (typeof symbol.invisible == "boolean" && symbol.invisible) node.setAttribute("columnalign","left");
            newFrag.replaceChild(node,newFrag.firstChild);
          }
         }
        }
      }
      str = AMremoveCharsAndBlanks(str,symbol.input.length);
      if (typeof symbol.invisible != "boolean" || !symbol.invisible) {
        node = AMcreateMmlNode("mo",document.createTextNode(symbol.output));
        newFrag.appendChild(node);
      }
    }
    return [newFrag,str];
  }
  
  function AMparseMath(str) {
    var result, node = AMcreateElementMathML("mstyle");
    if (mathcolor != "") node.setAttribute("mathcolor",mathcolor);
    if (displaystyle) node.setAttribute("displaystyle","true");
    if (mathfontfamily != "") node.setAttribute("fontfamily",mathfontfamily);
    AMnestingDepth = 0;
    node.appendChild(AMparseExpr(str.replace(/^\s+/g,""))[0]);
    node = AMcreateMmlNode("math",node);
    if (mathfontfamily != "") {
      var fnode = AMcreateElementXHTML("font");
      fnode.setAttribute("face",mathfontfamily);
      fnode.appendChild(node);
      return fnode;
    }
    return node;
  }
  
  function AMstrarr2docFrag(arr, linebreaks) {
    var newFrag=document.createDocumentFragment();
    var expr = false;
    for (var i=0; i<arr.length; i++) {
      if (expr) newFrag.appendChild(AMparseMath(arr[i]));
      else {
        var arri = (linebreaks ? arr[i].split("\n\n") : [arr[i]]);
        newFrag.appendChild(AMcreateElementXHTML("span").
        appendChild(document.createTextNode(arri[0].
        replace(/AMescape2/g,AMdelimiter2).replace(/AMescape1/g,AMdelimiter1))));
        for (var j=1; j<arri.length; j++) {
          newFrag.appendChild(AMcreateElementXHTML("p"));
          newFrag.appendChild(AMcreateElementXHTML("span").
          appendChild(document.createTextNode(arri[j].
            replace(/AMescape2/g,AMdelimiter2).
            replace(/AMescape1/g,AMdelimiter1))));
        }
      }
      expr = !expr;
    }
    return newFrag;
  }
  
  function AMprocessNode(n, linebreaks) {
    var mtch, str, arr;
    if (n.childNodes.length == 0 && (n.nodeType!=8 || linebreaks) &&
      n.parentNode.nodeName!="textarea" && n.parentNode.nodeName!="TEXTAREA" &&
      n.parentNode.nodeName!="pre" && n.parentNode.nodeName!="PRE") {
      str = n.nodeValue;
      if (!(str == null)) {
        str = str.replace(/\r\n\r\n/g,"\n\n");
        if (doubleblankmathdelimiter) {
          str = str.replace(/\x20\x20\./g," "+AMdelimiter1+".");
          str = str.replace(/\x20\x20,/g," "+AMdelimiter1+",");
          str = str.replace(/\x20\x20/g," "+AMdelimiter1+" ");
        }
        str = str.replace(/\x20+/g," ");
        str = str.replace(/\s*\r\n/g," ");
        mtch = false;
        str = str.replace(new RegExp(AMescape2, "g"),
                function(st){mtch=true;return "AMescape2"});
        str = str.replace(new RegExp(AMescape1, "g"),
                function(st){mtch=true;return "AMescape1"});
        str = str.replace(new RegExp(AMdelimiter2regexp, "g"),AMdelimiter1);
        arr = str.split(AMdelimiter1);
        if (arr.length>1 || mtch) {
          if (checkForMathML) {
            checkForMathML = false;
            var nd = AMisMathMLavailable();
            AMnoMathML = nd != null
            if (AMnoMathML && notifyIfNoMathML) 
              AMbody.insertBefore(nd,AMbody.childNodes[0]);
          }
          if (!AMnoMathML)
            n.parentNode.replaceChild(AMstrarr2docFrag(arr,n.nodeType==8),n);
        }
      }
    } else if (n.nodeName!="math") 
      for (var i=0; i<n.childNodes.length; i++)
        AMprocessNode(n.childNodes[i], linebreaks);
  }
  
  var AMbody;
  var AMnoMathML = false;
  
  function translate() {
    AMinitSymbols();
    AMbody = document.getElementsByTagName("body")[0];
    AMprocessNode(AMbody, false);
    if (isIE) { //needed to match size and font of formula to surrounding text
      var frag = document.getElementsByTagName('math');
      for (var i=0;i<frag.length;i++) frag[i].update()
    }
  }
  
  function translateById(objId) {
    AMbody = document.getElementById(objId);
    AMprocessNode(AMbody, false);
    if (isIE) { //needed to match size and font of formula to surrounding text
      var frag = document.getElementsByTagName('math');
      for (var i=0;i<frag.length;i++) frag[i].update()
    }
  }
    AMinitSymbols();
  
  
  


wkpark      2005/03/28 06:56:49

  Added:       local    fixmathml.js
  Log:
  add fixmathml.js for the itex processor
  
  Revision  Changes    Path
  1.1                  moniwiki/local/fixmathml.js
  
  Index: fixmathml.js
  ===================================================================
  /*
  March 19, 2004 MathHTML (c) Peter Jipsen http://www.chapman.edu/~jipsen
  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2 of the License, or (at
  your option) any later version.
  This program is distributed in the hope that it will be useful, but
  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  (at http://www.gnu.org/copyleft/gpl.html) for more details.
  
  import some codes from ASCIIMathML.js by wkpark at kldp.org
  2005/03/27
  */
  
  var isIE = document.createElementNS==null;
  
  if (document.getElementById==null) 
    alert("This webpage requires a recent browser such as\
  \nMozilla/Netscape 7+ or Internet Explorer 6+MathPlayer")
  
  // all further global variables start with "AM"
  
  function MLcreateElementXHTML(t) {
    if (isIE) return document.createElement(t);
    else return document.createElementNS("http://www.w3.org/1999/xhtml",t);
  }
  
  function AMisMathMLavailable() {
    var nd = MLcreateElementXHTML("center");
    nd.appendChild(document.createTextNode("To view the "));
    var an = MLcreateElementXHTML("a");
    an.appendChild(document.createTextNode("ASCIIMathML"));
    an.setAttribute("href","http://www.chapman.edu/~jipsen/asciimath.html");
    nd.appendChild(an);
    nd.appendChild(document.createTextNode(" notation use Internet Explorer 6+"));  
    an = MLcreateElementXHTML("a");
    an.appendChild(document.createTextNode("MathPlayer"));
    an.setAttribute("href","http://www.dessci.com/en/products/mathplayer/download.htm");
    nd.appendChild(an);
    nd.appendChild(document.createTextNode(" or Netscape/Mozilla/Firefox"));
    if (navigator.appName.slice(0,8)=="Netscape") 
      if (navigator.appVersion.slice(0,1)>="5") return null;
      else return nd;
    else if (navigator.appName.slice(0,9)=="Microsoft")
      try {
          var ActiveX = new ActiveXObject("MathPlayer.Factory.1");
          return null;
      } catch (e) {
          return nd;
      }
    else return nd;
  }
  
  var MLmathml = "http://www.w3.org/1998/Math/MathML";
  
  function MLcreateElementMathML(t) {
    if (isIE) return document.createElement("mml:"+t);
    else return document.createElementNS(MLmathml,t);
  }
  
  function MLcreateMmlNode(name,frag) {
    var node = MLcreateElementMathML(name);
    node.appendChild(frag);
    return node;
  }
  
  function MLfixNode(n,linebreaks) {
    var mtch, str, arr;
    if (n.nodeName=="MATH") {
      n.parentNode.replaceChild(convertMath(n),n);
    } else {
      for (var i=0; i<n.childNodes.length; i++)
        MLfixNode(n.childNodes[i], linebreaks);
    }
  }
  
  function convertMath(node) {// for Gecko
    if (node.nodeType==1) {
      var newnode =
        document.createElementNS("http://www.w3.org/1998/Math/MathML",
          node.nodeName.toLowerCase());
      for(var i=0; i < node.attributes.length; i++)
        newnode.setAttribute(node.attributes[i].nodeName,
          node.attributes[i].nodeValue);
      for (var i=0; i<node.childNodes.length; i++) {
        var st = node.childNodes[i].nodeValue;
        if (st==null || st.slice(0,1)!=" " && st.slice(0,1)!="\n")
          newnode.appendChild(convertMath(node.childNodes[i]));
      }
      return newnode;
    }
    else return node;
  }
  
  function fixMmlById(objId) {
    MLbody = document.getElementById(objId);
    MLfixNode(MLbody, false);
    if (isIE) { //needed to match size and font of formula to surrounding text
      var frag = document.getElementsById(objId);
      for (var i=0;i<frag.length;i++) frag[i].update()
    }
  }
  
  
  


wkpark      2005/03/28 06:58:35

  Added:       plugin/processor asciimathml.php
  Log:
  add the asciimathml processor by Anonymous doner
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/processor/asciimathml.php
  
  Index: asciimathml.php
  ===================================================================
  <?php
  // Copyright 2005 by Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a asciimathml processor plugin by AnonymousDoner
  //
  // please see http://kldp.net/forum/message.php?msg_id=9419
  //
  // download the following javascript in the local/ dir to enable this processor:
  //  http://www1.chapman.edu/~jipsen/mathml/ASCIIMathML.js
  //  and add small code:
  //-----x8-----
  // function translateById(objId) {
  //   AMbody = document.getElementById(objId);
  //   AMprocessNode(AMbody, false);
  //   if (isIE) { //needed to match size and font of formula to surrounding text
  //     var frag = document.getElementsByTagName('math');
  //     for (var i=0;i<frag.length;i++) frag[i].update()
  //   }
  // }
  //   AMinitSymbols();
  //-----x8-----
  // to changes this processor as a default inline latex formatter:
  // 1. set $inline_latex='asciimathml';
  // 2. replace the latex processor: $processors=array('latex'=>'asciimathml');
  //
  // $Id: asciimathml.php,v 1.1 2005/03/27 21:58:35 wkpark Exp $
  
  function processor_asciimathml($formatter,$value="") {
    global $DBInfo;
  
    $flag = 0;
    $id=&$GLOBALS['_transient']['asciimathml'];
    if ( !$id ) { $flag = 1; $id = 1; }
    if ($value[0]=='#' and $value[1]=='!')
    list($line,$value)=explode("\n",$value,2);
  
    if ($line)
    list($tag,$args)=explode(' ',$line,2);
  
    if ( $flag ) {
      $out .= "<script type=\"text/javascript\" src=\"" .
      $DBInfo->url_prefix ."/local/ASCIIMathML.js\"></script>";
    }
  
    $out .= "<div id=\"asciimathml" . $id . "\">$value</div>" .
      "<script type=\"text/javascript\">translateById('asciimathml" . $id.
      "');</script>";
    $id++;
    return $out;
  }
  
  
  


wkpark      2005/03/28 06:59:09

  Added:       plugin/processor itex.php
  Log:
  add the itex processor
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/processor/itex.php
  
  Index: itex.php
  ===================================================================
  <?php
  // Copyright 2005 by Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a latex processor plugin for the MoniWiki
  //
  // Usage: {{{#!itex
  // $ \alpha $
  // }}}
  //
  // you can also replace inline latex processor with following config:
  //  $inline_latex='itex';
  // and replace the latex processor:
  //  $processors=array('latex'=>'itex',...);
  //
  // $Id: itex.php,v 1.1 2005/03/27 21:59:09 wkpark Exp $
  
  function processor_itex($formatter="",$value="",$options='') {
      global $DBInfo;
  
      $use_javascript=1;
      if ($use_javascript) {
          $flag = 0;
          $id=&$GLOBALS['_transient']['mathml'];
          if ( !$id) { $flag = 1; $id = 1; }
          if ( $flag ) {
              $script= "<script type=\"text/javascript\" src=\"" .
              $DBInfo->url_prefix ."/local/fixmathml.js\"></script>";
          }
      }
  
      # site spesific variables
      $itex="itex2MML";
      $vartmp_dir=$DBInfo->vartmp_dir;
      $cache_dir=$DBInfo->upload_dir."/itex";
  
      $type='block';
      if ($options['type']) $type=$options['type'];
    
      if ($value[0]=='#' and $value[1]=='!')
          list($line,$value)=explode("\n",$value,2);
    
      if (!$value) return;
    
      if (!file_exists($cache_dir)) {
          umask(000);
          mkdir($cache_dir,0777);
      }
    
      $src=preg_replace('/\$\$/','$',$value);
      $uniq=md5($src);
    
      $RM='rm';
      $NULL='/dev/null';
      if(getenv('OS')=='Windows_NT') {
          $RM='del';
          $NULL='NUL';
      }
      
      if ($formatter->preview || $formatter->refresh || !file_exists("$cache_dir/$uniq.xml")) {
          $srcpath="$vartmp_dir/$uniq.itex";
          $outpath="$cache_dir/$uniq.xml";
  
          $fp=fopen($srcpath,'w');
          fwrite($fp,$src);
          fclose($fp);
    
          $cmd= "$itex < $srcpath";
    
          $out='';
          $fp=popen($cmd,'r');
          while($s = fgets($fp, 1024)) $out.= $s;
          pclose($fp);
          unlink($srcpath);
  
          $out=preg_replace('/^<math /',"<math display='$type' ",$out);
          $fp=fopen($cache_dir."/$uniq".'.xml','w');
          fwrite($fp,$out);
          fclose($fp);
      }
      $out = '';
      $fp=fopen($cache_dir."/$uniq".'.xml','r');
      if (!$fp) return $src;
      while (!feof($fp)) $out .= fread($fp, 1024);
      @fclose($fp);
      $out = preg_replace("/Sum/","sum",$out); # itex bug ?
      $out = "<div class='itex' id=\"mathml" . $id. "\">$out" .'</div>';
      if ($use_javascript)
          $out.= "<script type=\"text/javascript\">fixMmlById('mathml" .$id.
                 "');</script>";
      $id++;
      return $script.$out;
  }
  
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2005/03/28 07:06:17

  Modified:    .        wikilib.php
  Log:
  xhtml fix
  
  Revision  Changes    Path
  1.138     +5 -5      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.137
  retrieving revision 1.138
  diff -u -r1.137 -r1.138
  --- wikilib.php	26 Mar 2005 12:29:19 -0000	1.137
  +++ wikilib.php	27 Mar 2005 22:06:17 -0000	1.138
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.137 2005/03/26 12:29:19 wkpark Exp $
  +// $Id: wikilib.php,v 1.138 2005/03/27 22:06:17 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -609,12 +609,12 @@
   //-->
   //]]>
   </script>
  -<input type='button' value='+' onClick='resize(this.form,3)'>
  -<input type='button' value='-' onClick='resize(this.form,-3)'>
  +<input type='button' value='+' onClick='resize(this.form,3)' />
  +<input type='button' value='-' onClick='resize(this.form,-3)' />
   EOS;
     }
     $form.=<<<EOS
  -<textarea class="wiki" id="content" wrap="virtual" name="savetext"
  +<textarea id="content" wrap="virtual" name="savetext"
    rows="$rows" cols="$cols" class="wiki">$raw_body</textarea><br />
   $summary_msg: <input name="comment" size="70" maxlength="70" style="width:200" />$extra_check<br />
   <input type="hidden" name="action" value="savepage" />
  @@ -1315,7 +1315,7 @@
         #$href=$url;
       }
       $icon=strtolower($wiki)."-16.png";
  -    $out.="<tr><td><tt><img src='$DBInfo->imgs_dir_interwiki/$icon' align='middle' alt='$wiki:'><a href='$url'>$wiki</a></tt></td><td><tt>";
  +    $out.="<tr><td><tt><img src='$DBInfo->imgs_dir_interwiki/$icon' align='middle' alt='$wiki:' /><a href='$url'>$wiki</a></tt></td><td><tt>";
       $out.="<a href='$href'>$href</a></tt></td></tr>\n";
     }
     $out.="</table>\n";
  
  
  


wkpark      2005/03/28 07:07:28

  Modified:    .        wiki.php
  Log:
  add $doctype option
  fix for $inline_latex
  
  Revision  Changes    Path
  1.207     +9 -6      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.206
  retrieving revision 1.207
  diff -u -r1.206 -r1.207
  --- wiki.php	26 Mar 2005 12:52:21 -0000	1.206
  +++ wiki.php	27 Mar 2005 22:07:28 -0000	1.207
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.206 2005/03/26 12:52:21 wkpark Exp $
  +// $Id: wiki.php,v 1.207 2005/03/27 22:07:28 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.206 $',1,-1);
  +$_revision = substr('$Revision: 1.207 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -1585,7 +1585,8 @@
       case '$':
         #return processor_latex($this,"#!latex\n".$url);
         $url=preg_replace('/<\/?sup>/','^',$url);
  -      return $this->processor_repl($this->inline_latex,$url);
  +      $opt=array('type'=>'inline');
  +      return $this->processor_repl($this->inline_latex,$url,$opt);
         break;
       case '#': # Anchor syntax in the MoinMoin 1.1
         $anchor=strtok($url,' ');
  @@ -2597,6 +2598,7 @@
             $plain=1;
         }
       }
  +    #$this->header('Content-type: application/xhtml+xml');
   
       if (isset($this->pi['#noindex'])) {
         $metatags='<meta name="robots" content="noindex,nofollow" />';
  @@ -2633,14 +2635,15 @@
             htmlspecialchars($options['title']);
         }
         if (empty($options['css_url'])) $options['css_url']=$DBInfo->css_url;
  -      print <<<EOS
  +      if ($DBInfo->doctype) print $DBInfo->doctype;
  +      else
  +        print <<<EOS
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   <html xmlns="http://www.w3.org/1999/xhtml">
     <head>
     <meta http-equiv="Content-Type" content="text/html;charset=$DBInfo->charset" /> 
  -  $metatags
  -  $keywords
   EOS;
  +      print $metatags."\n".$keywords;
         print "  <title>$DBInfo->sitename: ".$options['title']."</title>\n";
         if ($upper)
           print '  <link rel="Up" href="'.$this->link_url($upper)."\" />\n";
  
  
  


wkpark      2005/03/28 07:09:00

  Modified:    plugin/processor latex.php
  Log:
  use $formatter->preview
  
  Revision  Changes    Path
  1.8       +3 -3      moniwiki/plugin/processor/latex.php
  
  Index: latex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/latex.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- latex.php	24 Nov 2004 15:30:30 -0000	1.7
  +++ latex.php	27 Mar 2005 22:08:59 -0000	1.8
  @@ -6,7 +6,7 @@
   // Usage: {{{#!latex
   // $ \alpha $
   // }}}
  -// $Id: latex.php,v 1.7 2004/11/24 15:30:30 wkpark Exp $
  +// $Id: latex.php,v 1.8 2005/03/27 22:08:59 wkpark Exp $
   
   function processor_latex($formatter="",$value="") {
     global $DBInfo;
  @@ -55,7 +55,7 @@
       $NULL='NUL';
     }
     
  -  if ($formatter->refresh || !file_exists("$cache_dir/$uniq.png")) {
  +  if ($formatter->preview || $formatter->refresh || !file_exists("$cache_dir/$uniq.png")) {
        $fp= fopen($vartmp_dir."/$uniq.tex", "w");
        fwrite($fp, $src);
        fclose($fp);
  @@ -82,7 +82,7 @@
   
        system("$RM $vartmp_dir/$uniq.*");
     }
  -  return "<img class='tex' src='$DBInfo->url_prefix/$cache_dir/$uniq.png' alt='tex'".
  +  return "<img class='tex' src='$DBInfo->url_prefix/$cache_dir/$uniq.png' alt='tex' ".
            "title=\"$tex\" />";
   }
   
  
  
  


wkpark      2005/03/28 14:56:43

  Removed:     css      numbering.js wikibits.js
  Log:
  move some javascripts to the local/ dir


wkpark      2005/03/28 14:56:43

  Added:       local    numbering.js wikibits.js
  Log:
  move some javascripts to the local/ dir
  
  Revision  Changes    Path
  1.1                  moniwiki/local/numbering.js
  
  Index: numbering.js
  ===================================================================
  //
  // from the MoinMoin: http://moinmoin.wikiwikiweb.de
  //
  
  function isnumbered(obj) {
    return obj.childNodes.length && obj.firstChild.childNodes.length && obj.firstChild.firstChild.className == 'lineNumber';
  }
  function nformat(num,chrs,add) {
    var nlen = Math.max(0,chrs-(''+num).length), res = '';
    while (nlen>0) { res += ' '; nlen-- }
    return res+num+add;
  }
  function addnumber(did, nstart, nstep) {
    var c = document.getElementById(did), l = c.firstChild, n = 1;
    if (!isnumbered(c))
      if (typeof nstart == 'undefined') nstart = 1;
      if (typeof nstep  == 'undefined') nstep = 1;
      n = nstart;
      while (l != null) {
        if (l.tagName == 'SPAN') {
          var s = document.createElement('SPAN');
          s.className = 'lineNumber'
          s.appendChild(document.createTextNode(nformat(n,4,' ')));
          n += nstep;
          if (l.childNodes.length)
            l.insertBefore(s, l.firstChild)
          else
            l.appendChild(s)
        }
        l = l.nextSibling;
      }
    return false;
  }
  function remnumber(did) {
    var c = document.getElementById(did), l = c.firstChild;
    if (isnumbered(c))
      while (l != null) {
        if (l.tagName == 'SPAN' && l.firstChild.className == 'lineNumber') l.removeChild(l.firstChild);
        l = l.nextSibling;
      }
    return false;
  }
  function togglenumber(did, nstart, nstep) {
    var c = document.getElementById(did);
    if (isnumbered(c)) {
      remnumber(did);
    } else {
      addnumber(did,nstart,nstep);
    }
    return false;
  }
  
  
  
  1.1                  moniwiki/local/wikibits.js
  
  Index: wikibits.js
  ===================================================================
  // from the MediaWiki
  // simplified for the MoniWiki by wkpark
  //
  // $Id: wikibits.js,v 1.1 2005/03/28 05:56:43 wkpark Exp $
  //
  // Wikipedia JavaScript support functions
  // if this is true, the toolbar will no longer overwrite the infobox when you move the mouse over individual items
  var noOverwrite=false;
  var alertText;
  var clientPC = navigator.userAgent.toLowerCase(); // Get client info
  var is_gecko = ((clientPC.indexOf('gecko')!=-1) && (clientPC.indexOf('spoofer')==-1)
                  && (clientPC.indexOf('khtml') == -1) && (clientPC.indexOf('netscape/7.0')==-1));
  var is_safari = ((clientPC.indexOf('AppleWebKit')!=-1) && (clientPC.indexOf('spoofer')==-1));
  var is_khtml = (navigator.vendor == 'KDE' || ( document.childNodes && !document.all && !navigator.taintEnabled ));
  if (clientPC.indexOf('opera')!=-1) {
      var is_opera = true;
      var is_opera_preseven = (window.opera && !document.childNodes);
      var is_opera_seven = (window.opera && document.childNodes);
  }
  
  // add any onload functions in this hook (please don't hard-code any events in the xhtml source)
  function onloadhook () {
      // don't run anything below this for non-dom browsers
      if(!(document.getElementById && document.getElementsByTagName)) return;
      akeytt();
  }
  if (window.addEventListener) window.addEventListener("load",onloadhook,false);
  else if (window.attachEvent) window.attachEvent("onload",onloadhook);
  
  
  
  // document.write special stylesheet links
  if(typeof stylepath != 'undefined' && typeof skin != 'undefined') {
      if (is_opera_preseven) {
          document.write('<link rel="stylesheet" type="text/css" href="'+stylepath+'/'+skin+'/Opera6Fixes.css">');
      } else if (is_opera_seven) {
          document.write('<link rel="stylesheet" type="text/css" href="'+stylepath+'/'+skin+'/Opera7Fixes.css">');
      } else if (is_khtml) {
          document.write('<link rel="stylesheet" type="text/css" href="'+stylepath+'/'+skin+'/KHTMLFixes.css">');
      }
  }
  // Un-trap us from framesets
  if( window.top != window ) window.top.location = window.location;
  
  // this function generates the actual toolbar buttons with localized text
  // we use it to avoid creating the toolbar where javascript is not enabled
  function addButton(imageFile, speedTip, tagOpen, tagClose, sampleText) {
  
  	speedTip=escapeQuotes(speedTip);
  	tagOpen=escapeQuotes(tagOpen);
  	tagClose=escapeQuotes(tagClose);
  	sampleText=escapeQuotes(sampleText);
  	var mouseOver="";
  
  	// we can't change the selection, so we show example texts
  	// when moving the mouse instead, until the first button is clicked
  	if(!document.selection && !is_gecko) {
  		// filter backslashes so it can be shown in the infobox
  		var re=new RegExp("\\\\n","g");
  		tagOpen=tagOpen.replace(re,"");
  		tagClose=tagClose.replace(re,"");
  		mouseOver = "onMouseover=\"if(!noOverwrite){document.infoform.infobox.value='"+tagOpen+sampleText+tagClose+"'};\"";
  	}
  
  	document.write("<a href=\"javascript:insertTags");
  	document.write("('"+tagOpen+"','"+tagClose+"','"+sampleText+"');\">");
  
          document.write("<img width=\"23\" height=\"22\" src=\""+imageFile+"\" border=\"0\" alt=\""+speedTip+"\" title=\""+speedTip+"\""+mouseOver+">");
  	document.write("</a>");
  	return;
  }
  
  function addInfobox(infoText,text_alert) {
  	alertText=text_alert;
  	var clientPC = navigator.userAgent.toLowerCase(); // Get client info
  
  	var re=new RegExp("\\\\n","g");
  	alertText=alertText.replace(re,"\n");
  
  	// if no support for changing selection, add a small copy & paste field
  	// document.selection is an IE-only property. The full toolbar works in IE and
  	// Gecko-based browsers.
  	if(!document.selection && !is_gecko) {
   		infoText=escapeQuotesHTML(infoText);
  	 	document.write("<form name='infoform' id='infoform'>"+
  			"<input size=80 id='infobox' name='infobox' value=\""+
  			infoText+"\" READONLY></form>");
   	}
  
  }
  
  function escapeQuotes(text) {
  	var re=new RegExp("'","g");
  	text=text.replace(re,"\\'");
  	re=new RegExp('"',"g");
  	text=text.replace(re,'&quot;');
  	re=new RegExp("\\n","g");
  	text=text.replace(re,"\\n");
  	return text;
  }
  
  function escapeQuotesHTML(text) {
  	var re=new RegExp('"',"g");
  	text=text.replace(re,"&quot;");
  	return text;
  }
  
  // apply tagOpen/tagClose to selection in textarea,
  // use sampleText instead of selection if there is none
  // copied and adapted from phpBB
  function insertTags(tagOpen, tagClose, sampleText) {
  
  	var txtarea = document.editform.savetext;
  	// IE
  	if(document.selection  && !is_gecko) {
  		var theSelection = document.selection.createRange().text;
  		if(!theSelection) { theSelection=sampleText;}
  		txtarea.focus();
  		if(theSelection.charAt(theSelection.length - 1) == " "){// exclude ending space char, if any
  			theSelection = theSelection.substring(0, theSelection.length - 1);
  			document.selection.createRange().text = tagOpen + theSelection + tagClose + " ";
  		} else {
  			document.selection.createRange().text = tagOpen + theSelection + tagClose;
  		}
  
  	// Mozilla
  	} else if(txtarea.selectionStart || txtarea.selectionStart == '0') {
   		var startPos = txtarea.selectionStart;
  		var endPos = txtarea.selectionEnd;
  		var scrollTop=txtarea.scrollTop;
  		var myText = (txtarea.value).substring(startPos, endPos);
  		if(!myText) { myText=sampleText;}
  		if(myText.charAt(myText.length - 1) == " "){ // exclude ending space char, if any
  			subst = tagOpen + myText.substring(0, (myText.length - 1)) + tagClose + " ";
  		} else {
  			subst = tagOpen + myText + tagClose;
  		}
  		txtarea.value = txtarea.value.substring(0, startPos) + subst +
  		  txtarea.value.substring(endPos, txtarea.value.length);
  		txtarea.focus();
  
  		var cPos=startPos+(tagOpen.length+myText.length+tagClose.length);
  		txtarea.selectionStart=cPos;
  		txtarea.selectionEnd=cPos;
  		txtarea.scrollTop=scrollTop;
  
  	// All others
  	} else {
  		var copy_alertText=alertText;
  		var re1=new RegExp("\\$1","g");
  		var re2=new RegExp("\\$2","g");
  		copy_alertText=copy_alertText.replace(re1,sampleText);
  		copy_alertText=copy_alertText.replace(re2,tagOpen+sampleText+tagClose);
  		var text;
  		if (sampleText) {
  			text=prompt(copy_alertText);
  		} else {
  			text="";
  		}
  		if(!text) { text=sampleText;}
  		text=tagOpen+text+tagClose;
  		document.infoform.infobox.value=text;
  		// in Safari this causes scrolling
  		if(!is_safari) {
  			txtarea.focus();
  		}
  		noOverwrite=true;
  	}
  	// reposition cursor if possible
  	if (txtarea.createTextRange) txtarea.caretPos = document.selection.createRange().duplicate();
  }
  
  function akeytt() {
      if(typeof ta == "undefined" || !ta) return;
      pref = 'alt-';
      if(is_safari || navigator.userAgent.toLowerCase().indexOf( 'mac' ) + 1 ) pref = 'control-';
      if(is_opera) pref = 'shift-esc-';
      for(id in ta) {
          n = document.getElementById(id);
          if(n){
              a = n.childNodes[0];
              if(a){
                  if(ta[id][0].length > 0) {
                      a.accessKey = ta[id][0];
                      ak = ' ['+pref+ta[id][0]+']';
                  } else {
                      ak = '';
                  }
                  a.title = ta[id][1]+ak;
              } else {
                  if(ta[id][0].length > 0) {
                      n.accessKey = ta[id][0];
                      ak = ' ['+pref+ta[id][0]+']';
                  } else {
                      ak = '';
                  }
                  n.title = ta[id][1]+ak;
              }
          }
      }
  }
  
  
  


wkpark      2005/03/28 14:56:43

  Modified:    plugin/processor vim.php
  Log:
  move some javascripts to the local/ dir
  
  Revision  Changes    Path
  1.24      +5 -4      moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- vim.php	10 Dec 2004 16:03:10 -0000	1.23
  +++ vim.php	28 Mar 2005 05:56:43 -0000	1.24
  @@ -6,7 +6,7 @@
   // Usage: {{{#!vim sh|c|sh|.. [number]
   // some codes
   // }}}
  -// $Id: vim.php,v 1.23 2004/12/10 16:03:10 wkpark Exp $
  +// $Id: vim.php,v 1.24 2005/03/28 05:56:43 wkpark Exp $
   
   function processor_vim($formatter,$value,$options) {
     global $DBInfo;
  @@ -41,10 +41,10 @@
     if ($DBInfo->use_numbering) {
       $button=_("Toggle line numbers");
       if (!$jsloaded) 
  -      $script='<script type="text/javascript" src="'.$DBInfo->url_prefix.'/css/numbering.js"></script>';
  +      $script='<script type="text/javascript" src="'.$DBInfo->url_prefix.'/local/numbering.js"></script>';
       $script.="<script type=\"text/javascript\">
  -document.write('<a href=\"#\" onClick=\"return togglenumber(\'PRE-$uniq\', 1, 1);\" \
  -                class=\"codenumbers\">$button<\/a>');
  +document.write('<a href=\"#\" onClick=\"return togglenumber(\'PRE-$uniq\', 1, 1);\" \\
  +class=\"codenumbers\">$button</a>');
   </script>";
     }
   
  @@ -61,6 +61,7 @@
       $out = "";
       $fp=fopen($cache_dir."/$uniq".".html","r");
       while (!feof($fp)) $out .= fread($fp, 1024);
  +    @fclose($fp);
       return '<div>'.$script.$out.'</div>';
       #return join('',file($cache_dir."/$uniq".".html"));
     }
  
  
  


wkpark      2005/03/28 14:56:44

  Modified:    plugin   EditToolbar.php
  Log:
  move some javascripts to the local/ dir
  
  Revision  Changes    Path
  1.2       +2 -2      moniwiki/plugin/EditToolbar.php
  
  Index: EditToolbar.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/EditToolbar.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- EditToolbar.php	22 Nov 2004 14:32:43 -0000	1.1
  +++ EditToolbar.php	28 Mar 2005 05:56:43 -0000	1.2
  @@ -7,7 +7,7 @@
   //
   // This feature is imported from the MediaWiki
   //
  -// $Id: EditToolbar.php,v 1.1 2004/11/22 14:32:43 wkpark Exp $
  +// $Id: EditToolbar.php,v 1.2 2005/03/28 05:56:43 wkpark Exp $
   
   function macro_EditToolbar($formatter,$value) {
      global $DBInfo;
  @@ -15,7 +15,7 @@
      $iconset='mediawiki';
      $imgdir=$DBInfo->imgs_dir.'/plugin/EditToolbar/'.$iconset;
      $script=<<<EOS
  -<script type="text/javascript" src="$DBInfo->url_prefix/css/wikibits.js"></script>
  +<script type="text/javascript" src="$DBInfo->url_prefix/local/wikibits.js"></script>
   <script language="JavaScript" type='text/javascript'>
   /*<![CDATA[*/
   document.writeln("<div id='toolbar'>");
  
  
  


wkpark      2005/03/28 17:39:26

  Modified:    plugin/processor itex.php
  Log:
  add a object tag for the MathPlayer.
  add a table to fix itex bug(?) with the Mozilla
  
  Revision  Changes    Path
  1.2       +9 -2      moniwiki/plugin/processor/itex.php
  
  Index: itex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/itex.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- itex.php	27 Mar 2005 21:59:09 -0000	1.1
  +++ itex.php	28 Mar 2005 08:39:26 -0000	1.2
  @@ -12,11 +12,13 @@
   // and replace the latex processor:
   //  $processors=array('latex'=>'itex',...);
   //
  -// $Id: itex.php,v 1.1 2005/03/27 21:59:09 wkpark Exp $
  +// $Id: itex.php,v 1.2 2005/03/28 08:39:26 wkpark Exp $
   
   function processor_itex($formatter="",$value="",$options='') {
       global $DBInfo;
   
  +    $fix_itex=array('Sum'=>'sum','rightarrow'=>'rarr');
  +
       $use_javascript=1;
       if ($use_javascript) {
           $flag = 0;
  @@ -25,6 +27,11 @@
           if ( $flag ) {
               $script= "<script type=\"text/javascript\" src=\"" .
               $DBInfo->url_prefix ."/local/fixmathml.js\"></script>";
  +            if (preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']))
  +                $script.='<object id="mathplayer"'.
  +                    ' classid="clsid:32F66A20-7614-11D4-BD11-00104BD3F987">'.
  +                    '</object>'.
  +                    '<?import namespace="mml" implementation="#mathplayer"?>';
           }
       }
   
  @@ -82,7 +89,7 @@
       if (!$fp) return $src;
       while (!feof($fp)) $out .= fread($fp, 1024);
       @fclose($fp);
  -    $out = preg_replace("/Sum/","sum",$out); # itex bug ?
  +    $out = strtr($out,$fix_itex); # itex bug ?
       $out = "<div class='itex' id=\"mathml" . $id. "\">$out" .'</div>';
       if ($use_javascript)
           $out.= "<script type=\"text/javascript\">fixMmlById('mathml" .$id.
  
  
  


wkpark      2005/03/28 17:40:41

  Modified:    local    fixmathml.js
  Log:
  fix for IE
  
  Revision  Changes    Path
  1.2       +45 -79    moniwiki/local/fixmathml.js
  
  Index: fixmathml.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/fixmathml.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- fixmathml.js	27 Mar 2005 21:56:49 -0000	1.1
  +++ fixmathml.js	28 Mar 2005 08:40:41 -0000	1.2
  @@ -1,91 +1,31 @@
   /*
  -March 19, 2004 MathHTML (c) Peter Jipsen http://www.chapman.edu/~jipsen
  +March 19, 2004 MathHTML (c) Peter Jipsen
  +http://www.chapman.edu/~jipsen
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2 of the License, or (at
   your option) any later version.
  -This program is distributed in the hope that it will be useful, but
  -WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  -or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  +This program is distributed in the hope that it will be useful, but 
  +WITHOUT ANY WARRANTY; without even the implied warranty of
  +MERCHANTABILITY
  +or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
  +License
   (at http://www.gnu.org/copyleft/gpl.html) for more details.
   
  -import some codes from ASCIIMathML.js by wkpark at kldp.org
  -2005/03/27
  +2005/03/28 fix for the itex processor for the MoniWiki by wkpark
   */
   
  -var isIE = document.createElementNS==null;
  -
  -if (document.getElementById==null) 
  -  alert("This webpage requires a recent browser such as\
  -\nMozilla/Netscape 7+ or Internet Explorer 6+MathPlayer")
  -
  -// all further global variables start with "AM"
  -
  -function MLcreateElementXHTML(t) {
  -  if (isIE) return document.createElement(t);
  -  else return document.createElementNS("http://www.w3.org/1999/xhtml",t);
  -}
  -
  -function AMisMathMLavailable() {
  -  var nd = MLcreateElementXHTML("center");
  -  nd.appendChild(document.createTextNode("To view the "));
  -  var an = MLcreateElementXHTML("a");
  -  an.appendChild(document.createTextNode("ASCIIMathML"));
  -  an.setAttribute("href","http://www.chapman.edu/~jipsen/asciimath.html");
  -  nd.appendChild(an);
  -  nd.appendChild(document.createTextNode(" notation use Internet Explorer 6+"));  
  -  an = MLcreateElementXHTML("a");
  -  an.appendChild(document.createTextNode("MathPlayer"));
  -  an.setAttribute("href","http://www.dessci.com/en/products/mathplayer/download.htm");
  -  nd.appendChild(an);
  -  nd.appendChild(document.createTextNode(" or Netscape/Mozilla/Firefox"));
  -  if (navigator.appName.slice(0,8)=="Netscape") 
  -    if (navigator.appVersion.slice(0,1)>="5") return null;
  -    else return nd;
  -  else if (navigator.appName.slice(0,9)=="Microsoft")
  -    try {
  -        var ActiveX = new ActiveXObject("MathPlayer.Factory.1");
  -        return null;
  -    } catch (e) {
  -        return nd;
  -    }
  -  else return nd;
  -}
  -
  -var MLmathml = "http://www.w3.org/1998/Math/MathML";
  -
  -function MLcreateElementMathML(t) {
  -  if (isIE) return document.createElement("mml:"+t);
  -  else return document.createElementNS(MLmathml,t);
  -}
  -
  -function MLcreateMmlNode(name,frag) {
  -  var node = MLcreateElementMathML(name);
  -  node.appendChild(frag);
  -  return node;
  -}
  -
  -function MLfixNode(n,linebreaks) {
  -  var mtch, str, arr;
  -  if (n.nodeName=="MATH") {
  -    n.parentNode.replaceChild(convertMath(n),n);
  -  } else {
  -    for (var i=0; i<n.childNodes.length; i++)
  -      MLfixNode(n.childNodes[i], linebreaks);
  -  }
  -}
  -
  -function convertMath(node) {// for Gecko
  +var mml = "http://www.w3.org/1998/Math/MathML";
  +function convertMath(node) { // Gecko
     if (node.nodeType==1) {
  -    var newnode =
  -      document.createElementNS("http://www.w3.org/1998/Math/MathML",
  -        node.nodeName.toLowerCase());
  +    var newnode = 
  +      document.createElementNS(mml,node.nodeName.toLowerCase());
       for(var i=0; i < node.attributes.length; i++)
         newnode.setAttribute(node.attributes[i].nodeName,
           node.attributes[i].nodeValue);
       for (var i=0; i<node.childNodes.length; i++) {
         var st = node.childNodes[i].nodeValue;
  -      if (st==null || st.slice(0,1)!=" " && st.slice(0,1)!="\n")
  +      if (st==null || st.slice(0,1)!=" " && st.slice(0,1)!="\n") 
           newnode.appendChild(convertMath(node.childNodes[i]));
       }
       return newnode;
  @@ -93,11 +33,37 @@
     else return node;
   }
   
  -function fixMmlById(objId) {
  -  MLbody = document.getElementById(objId);
  -  MLfixNode(MLbody, false);
  -  if (isIE) { //needed to match size and font of formula to surrounding text
  -    var frag = document.getElementsById(objId);
  -    for (var i=0;i<frag.length;i++) frag[i].update()
  +function fixMmlById(obj) {
  +  var mmlnode = document.getElementById(obj);
  +  var st,str,node,newnode;
  +  if (document.createElementNS!=null)
  +    mmlnode.parentNode.replaceChild(convertMath(mmlnode),mmlnode);
  +  else { // IE
  +    for (var i=0; i<mmlnode.childNodes.length; i++) {
  +      str = "";
  +      node = mmlnode.childNodes[i];
  +      while (node.nodeName!="/MATH") {
  +        st = node.nodeName.toLowerCase();
  +        if (st=="#text") str += node.nodeValue;
  +        else {
  +          str += (st.slice(0,1)=="/" ? "</mml:"+st.slice(1) : "<mml:"+st);
  +          if (st.slice(0,1)!="/") 
  +             for(var j=0; j < node.attributes.length; j++)
  +               if (node.attributes[j].nodeValue!="italic" &&
  +                 node.attributes[j].nodeValue!="" &&
  +                 node.attributes[j].nodeValue!="inherit" &&
  +                 node.attributes[j].nodeValue!=undefined)
  +                 str += " "+node.attributes[j].nodeName+"="+
  +                     "\""+node.attributes[j].nodeValue+"\"";
  +          str += ">";
  +        }
  +        node = node.nextSibling;
  +        node.parentNode.removeChild(node.previousSibling);
  +      }
  +      str += "</mml:math>";
  +      newnode = document.createElement("span");
  +      node.parentNode.replaceChild(newnode,node);
  +      newnode.innerHTML = str;
  +    }
     }
   }
  
  
  


wkpark      2005/03/28 17:49:00

  Modified:    plugin/processor asciimathml.php
  Log:
  add the object tag for the MathPlayer
  
  Revision  Changes    Path
  1.2       +6 -1      moniwiki/plugin/processor/asciimathml.php
  
  Index: asciimathml.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/asciimathml.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- asciimathml.php	27 Mar 2005 21:58:35 -0000	1.1
  +++ asciimathml.php	28 Mar 2005 08:49:00 -0000	1.2
  @@ -23,7 +23,7 @@
   // 1. set $inline_latex='asciimathml';
   // 2. replace the latex processor: $processors=array('latex'=>'asciimathml');
   //
  -// $Id: asciimathml.php,v 1.1 2005/03/27 21:58:35 wkpark Exp $
  +// $Id: asciimathml.php,v 1.2 2005/03/28 08:49:00 wkpark Exp $
   
   function processor_asciimathml($formatter,$value="") {
     global $DBInfo;
  @@ -40,6 +40,11 @@
     if ( $flag ) {
       $out .= "<script type=\"text/javascript\" src=\"" .
       $DBInfo->url_prefix ."/local/ASCIIMathML.js\"></script>";
  +    if (preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']))
  +      $out.='<object id="mathplayer"'.
  +        ' classid="clsid:32F66A20-7614-11D4-BD11-00104BD3F987">'.
  +        '</object>'.
  +        '<?import namespace="mml" implementation="#mathplayer"?>';
     }
   
     $out .= "<div id=\"asciimathml" . $id . "\">$value</div>" .
  
  
  


wkpark      2005/03/30 14:29:31

  Modified:    .        wiki.php
  Log:
  fix last changes
  
  Revision  Changes    Path
  1.208     +11 -6     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.207
  retrieving revision 1.208
  diff -u -r1.207 -r1.208
  --- wiki.php	27 Mar 2005 22:07:28 -0000	1.207
  +++ wiki.php	30 Mar 2005 05:29:31 -0000	1.208
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.207 2005/03/27 22:07:28 wkpark Exp $
  +// $Id: wiki.php,v 1.208 2005/03/30 05:29:31 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.207 $',1,-1);
  +$_revision = substr('$Revision: 1.208 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -1585,7 +1585,7 @@
       case '$':
         #return processor_latex($this,"#!latex\n".$url);
         $url=preg_replace('/<\/?sup>/','^',$url);
  -      $opt=array('type'=>'inline');
  +      if ($url[1] != '$') $opt=array('type'=>'inline');
         return $this->processor_repl($this->inline_latex,$url,$opt);
         break;
       case '#': # Anchor syntax in the MoinMoin 1.1
  @@ -2598,7 +2598,10 @@
             $plain=1;
         }
       }
  -    #$this->header('Content-type: application/xhtml+xml');
  +    $content_type=
  +      $DBInfo->content_type ? $DBInfo->content_type: "text/html";
  +    if (!$plain)
  +      $this->header('Content-type: '.$content_type);
   
       if (isset($this->pi['#noindex'])) {
         $metatags='<meta name="robots" content="noindex,nofollow" />';
  @@ -2640,9 +2643,11 @@
           print <<<EOS
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   <html xmlns="http://www.w3.org/1999/xhtml">
  -  <head>
  -  <meta http-equiv="Content-Type" content="text/html;charset=$DBInfo->charset" /> 
   EOS;
  +      print "<head>\n";
  +
  +      print '<meta http-equiv="Content-Type" content="'.$content_type.
  +        ';charset='.$DBInfo->charset.'" />';
         print $metatags."\n".$keywords;
         print "  <title>$DBInfo->sitename: ".$options['title']."</title>\n";
         if ($upper)
  
  
  


wkpark      2005/04/03 15:24:24

  Modified:    plugin   Comment.php
  Log:
  use @SIG@
  
  Revision  Changes    Path
  1.10      +3 -2      moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- Comment.php	14 Jan 2005 08:25:54 -0000	1.9
  +++ Comment.php	3 Apr 2005 06:24:24 -0000	1.10
  @@ -6,7 +6,7 @@
   // Usage: [[Comment]], ?action=comment
   //
   //
  -// $Id: Comment.php,v 1.9 2005/01/14 08:25:54 wkpark Exp $
  +// $Id: Comment.php,v 1.10 2005/04/03 06:24:24 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $HTTP_USER_AGENT;
  @@ -28,6 +28,7 @@
     else
       $datestamp= $formatter->page->mtime();
     $savetext=$options['savetext'];
  +  $savetext= str_replace(array("&","<"),array("&amp;","&lt;"),$savetext);
   
     if (!$options['id']) {
       $user=new User(); # get from COOKIE VARS
  @@ -119,7 +120,7 @@
     else $id=$options['id'];
   
     if ($options['nosig']) $savetext="----\n$savetext\n";
  -  else $savetext="----\n$savetext -- $id @DATE@\n";
  +  else $savetext="----\n$savetext @SIG@\n";
   
     if (preg_match("/\n##Comment\n/i",$body))
       $body= preg_replace("/\n##Comment\n/i","\n##Comment\n$savetext",$body,1);
  
  
  


wkpark      2005/04/03 15:27:07

  Modified:    plugin   UploadFile.php
  Log:
  change the case of ext. of the uploaded filename is supported
  
  Revision  Changes    Path
  1.19      +11 -2     moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- UploadFile.php	14 Jan 2005 08:25:54 -0000	1.18
  +++ UploadFile.php	3 Apr 2005 06:27:07 -0000	1.19
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.18 2005/01/14 08:25:54 wkpark Exp $
  +// $Id: UploadFile.php,v 1.19 2005/04/03 06:27:07 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -116,9 +116,17 @@
         $upfilename=$tname[1].'.'.$fname[2];
       }
       
  -    # do not change the extention of the file.
  +    # check the extention of the new file name.
       $fname[1]=$tname[1];
       $newfile_path = $dir."/".$tname[1].".$fname[2]";
  +    if ($tname[2] != $fname[2]) {
  +      if (strtolower($tname[2])==strtolower($fname[2])) {
  +        # change the case of the file ext. is allowed
  +        $newfile_path = $dir."/".$tname[1].".$tname[2]";
  +      } else {
  +        $msg.=sprintf(_("It is not allowed to change file ext. \"%s\" to \"%s\"."),$fname[2],$tname[2]).'<br />';
  +      }
  +    }
     }
   
     # is file already exists ?
  @@ -144,6 +152,7 @@
     }
     if (!$test) {
       $msg.=sprintf(_("Fail to copy \"%s\" to \"%s\""),$upfilename,$file_path);
  +    $msg.='<br />'._("Please check your php.ini setting");
       continue;
     }
   
  
  
  


wkpark      2005/04/03 16:07:00

  Modified:    plugin   ISBN.php
  Log:
  fix PR #300818: reported by hhyoon - fix for the Aladdin & add 'img=xx' option
  
  Revision  Changes    Path
  1.3       +19 -11    moniwiki/plugin/ISBN.php
  
  Index: ISBN.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/ISBN.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ISBN.php	2 Aug 2004 12:02:18 -0000	1.2
  +++ ISBN.php	3 Apr 2005 07:07:00 -0000	1.3
  @@ -3,40 +3,44 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a ISBN macro plugin for the MoniWiki
   //
  -// $Id: ISBN.php,v 1.2 2004/08/02 12:02:18 wkpark Exp $
  +// $Id: ISBN.php,v 1.3 2005/04/03 07:07:00 wkpark Exp $
   
   function macro_ISBN($formatter="",$value="") {
     $ISBN_MAP="IsbnMap";
     $DEFAULT=<<<EOS
   Amazon http://www.amazon.com/exec/obidos/ISBN= http://images.amazon.com/images/P/\$ISBN.01.MZZZZZZZ.gif
  -Aladdin http://www.aladdin.co.kr/catalog/book.asp?ISBN= http://www.aladdin.co.kr/Cover/\$ISBN_1.gif\n
  +Aladdin http://www.aladdin.co.kr/catalog/book.asp?ISBN= http://image.aladdin.co.kr/cover/cover/\$ISBN_1.\$EXT?jpg\n
   EOS;
   
     $DEFAULT_ISBN="Amazon";
  -  $re_isbn="/([0-9\-]{9,}[xX]?)(?:\s*,\s*)?([A-Z][A-Za-z]*)?(?:\s*,\s*)?(.*)?/";
  +  $re_isbn="/([0-9\-]{9,}[xX]?)(?:,)?(([A-Z][A-Za-z]*)?(?:,)?(.*))?/x";
   
     $test=preg_match($re_isbn,$value,$match);
     if ($test === false)
        return "<p><strong class=\"error\">Invalid ISBN \"%value\"</strong></p>";
   
     $isbn2=$match[1];
  -  $isbn=str_replace("-","",$isbn2);
  +  $isbn=str_replace('-','',$isbn2);
   
  -  if ($match[2]) {
  -    if (strtolower($match[2][0])=="k") $lang="Aladdin";
  -    else $lang=$match[2];
  +  #print_r($match);
  +  if ($match[3]) {
  +    if (strtolower($match[2][0])=='k') $lang='Aladdin';
  +    else $lang=$match[3];
     } else $lang=$DEFAULT_ISBN;
   
     $attr='';
  -  if ($match[3]) {
  -    $args=explode(",",$match[3]);
  +  $ext='';
  +  if ($match[2]) {
  +    $args=explode(',',$match[2]);
       foreach ($args as $arg) {
  -      if ($arg == "noimg") $noimg=1;
  +      if ($arg == 'noimg') $noimg=1;
  +      else if (strtolower($arg)=='k') $lang='Aladdin';
         else {
           $name=strtok($arg,'=');
           $val=strtok(' ');
           $attr.=$name.'="'.$val.'" ';
           if ($name == 'align') $attr.='class="img'.ucfirst($val).'" ';
  +        if ($name == 'img') $ext=$val;
         }
       }
     }
  @@ -81,13 +85,17 @@
           $imglink=str_replace('$ISBN', $isbn, $imglink);
        else
           $imglink=str_replace('$ISBN2', $isbn2, $imglink);
  +     if ($ext)
  +        $imglink=str_replace('$EXT', $ext, $imglink);
  +     else
  +        $imglink=str_replace('$EXT?', '', $imglink);
     }
   
     if ($noimg)
        return $formatter->icon['www']."[<a href='$booklink'>ISBN-$isbn2</a>]";
     else
        return "<a href='$booklink'><img src='$imglink' border='1' title='$lang".
  -       ":ISBN-$isbn' alt='[ISBN-$isbn2]' $attr /></a>";
  +       ":ISBN-$isbn' alt='[ISBN-$isbn2]' class='isbn' $attr /></a>";
   }
   
   ?>
  
  
  


wkpark      2005/04/03 18:04:56

  Modified:    .        wiki.php
  Log:
  fix $auto_search feature: cleanup
  fix smiley_rule to use smileies in the table
  fix send_page() to render '&amp;' in the pre-block
  
  Revision  Changes    Path
  1.209     +13 -19    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.208
  retrieving revision 1.209
  diff -u -r1.208 -r1.209
  --- wiki.php	30 Mar 2005 05:29:31 -0000	1.208
  +++ wiki.php	3 Apr 2005 09:04:56 -0000	1.209
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.208 2005/03/30 05:29:31 wkpark Exp $
  +// $Id: wiki.php,v 1.209 2005/04/03 09:04:56 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.208 $',1,-1);
  +$_revision = substr('$Revision: 1.209 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -1362,7 +1362,7 @@
       
       # set smily_rule,_repl
       if ($DBInfo->smileys) {
  -      $smiley_rule='/(?<=\s|^)('.$DBInfo->smiley_rule.')(?=\s|$)/e';
  +      $smiley_rule='/(?<=\s|^|>)('.$DBInfo->smiley_rule.')(?=\s|$)/e';
         $smiley_repl="\$this->smiley_repl('\\1')";
   
         $this->extrarule[]=$smiley_rule;
  @@ -2178,8 +2178,8 @@
       $wordrule="({{{([^}]+)}}})|".
                 "\[\[([A-Za-z0-9]+(\(((?<!\]\]).)*\))?)\]\]|"; # macro
       if ($DBInfo->inline_latex) # single line latex syntax
  -      $wordrule.="(?<=\s|^)\\$([^\\$]+)\\$(?:\s|$)|".
  -                 "(?<=\s|^)\\$\\$([^\\$]+)\\$\\$(?:\s|$)|";
  +      $wordrule.="(?<=\s|^|>)\\$([^\\$]+)\\$(?:\s|$)|".
  +                 "(?<=\s|^|>)\\$\\$([^\\$]+)\\$\\$(?:\s|$)|";
       #if ($DBInfo->builtin_footnote) # builtin footnote support
       $wordrule.=$this->footrule.'|';
       $wordrule.=$this->wordrule;
  @@ -2405,8 +2405,10 @@
               $line="<pre $attr>\n".$pre."</pre>\n".$line;
               $in_quote=0;
            } else {
  -            # htmlfy '<'
  -            $pre=str_replace("<","&lt;",$this->pre_line);
  +            # htmlfy '<', '&'
  +            $pre=str_replace(array('<','&'),
  +                             array('&lt;','&amp;'),
  +                            $this->pre_line);
               $line="<pre class='wiki'>\n".$pre."</pre>\n".$line;
            }
            $this->nobr=1;
  @@ -3272,7 +3274,7 @@
       }
     }
   
  -  if (!$action or $action=='show') {
  +  while (!$action or $action=='show') {
       if ($value) { # ?value=Hello
         $options['value']=$value;
         do_goto($formatter,$options);
  @@ -3283,17 +3285,9 @@
         return;
       }
       if (!$page->exists()) {
  -      if ($DBInfo->auto_search) {
  -        $npage=str_replace(' ','',$page->name);
  -        if ($DBInfo->hasPage($npage)) {
  -          $options['value']=$npage;
  -          do_goto($formatter,$options);
  -          return;
  -        }
  -        $options['value']=$page->name;
  -        $options['check']=1;
  -        if (do_titlesearch($formatter,$options))
  -          return;
  +      if ($DBInfo->auto_search && $action!='show' && $p=getPlugin($DBInfo->auto_search)) {
  +        $action=$DBInfo->auto_search;
  +        break;
         }
   
         $formatter->send_header("Status: 404 Not found",$options);
  
  
  


wkpark      2005/04/03 18:07:31

  Added:       plugin   fixmoin.php autogoto.php
  Log:
  add new 'auto_search' action plugins
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/fixmoin.php
  
  Index: fixmoin.php
  ===================================================================
  <?php
  // Copyright 2005 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // FixMoin plugin
  //
  // Usage: set $auto_search='FixMoin'; in the config.php
  //
  // $Id: fixmoin.php,v 1.1 2005/04/03 09:07:30 wkpark Exp $
  
  function do_FixMoin($formatter,$options) {
      global $DBInfo;
  
      $pagename=rawurldecode(strtr($formatter->page->name,'_','%'));
      $npage=str_replace(' ','',$pagename);
      if (!$DBInfo->hasPage($npage)) {
          if (strtolower($DBInfo->charset)=='utf-8') {
              # is it EUC-KR ?
              $new=iconv('EUC-KR',$DBInfo->charset,$npage);
              if ($new) $npage=$new;
          }
      }
      $options['redirect']=1;
      $options['value']=$npage;
      do_goto($formatter,$options);
      return true;
  }
  
  // vim:et:sts=4:
  ?>
  
  
  
  1.1                  moniwiki/plugin/autogoto.php
  
  Index: autogoto.php
  ===================================================================
  <?php
  // Copyright 2005 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // AutoGoto plugin
  //
  // Usage: set $auto_search='AutoGoto'; in the config.php
  //
  // $Id: autogoto.php,v 1.1 2005/04/03 09:07:30 wkpark Exp $
  
  function do_AutoGoto($formatter,$options) {
      global $DBInfo;
  
      $npage=str_replace(' ','',$formatter->page->name);
      if ($DBInfo->hasPage($npage)) {
          $options['value']=$npage;
          do_goto($formatter,$options);
          return true;
      }
      $options['value']=$formatter->page->name;
      $options['check']=1;
      if (do_titlesearch($formatter,$options))
          return true;
      $options['value']=$formatter->page->name;
      # do not call AutoGoto recursively
      $options['redirect']=1;
      do_goto($formatter,$options);
      return true;
  }
  
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2005/04/03 18:15:02

  Added:       plugin   notitle.php
  Log:
  add a new plugin for the FreeFeel wiki :)
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/notitle.php
  
  Index: notitle.php
  ===================================================================
  <?php
  // Copyright 2005 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a notitle action plugin
  //
  // $Id: notitle.php,v 1.1 2005/04/03 09:15:02 wkpark Exp $
  
  function do_notitle($formatter,$options) {
      global $DBInfo;
  
      $formatter->sister_on=0;
      #$options['css_url']=$DBInfo->url_prefix."/css/print.css";
      $formatter->send_header("",$options);
      #print "<div id='printHeader'>";
      #print "<h2>$options[page]</h2>";
      #print "</div>";
      kbd_handler();
      print "<div id='wikiContent'>";
      $formatter->external_on=1;
      $formatter->send_page();
      print "</div></div>";
      print "</body></html>";
      return;
  }
  
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2005/04/03 20:23:39

  Modified:    plugin   Attachment.php
  Log:
  add [attachment:hello.png attachment:small.png] syntax
  
  Revision  Changes    Path
  1.14      +24 -6     moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- Attachment.php	15 Mar 2005 05:33:47 -0000	1.13
  +++ Attachment.php	3 Apr 2005 11:23:39 -0000	1.14
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.13 2005/03/15 05:33:47 wkpark Exp $
  +// $Id: Attachment.php,v 1.14 2005/04/03 11:23:39 wkpark Exp $
   
   function macro_Attachment($formatter,$value,$option='') {
     global $DBInfo;
  @@ -16,9 +16,25 @@
     else $mydownload='download';
   
     $text='';
  -  if (($p=strpos($value,' ')) !== false) { // XXX for [attachment:my.ext hello]
  -    $text=substr($value,$p+1);
  +  if (($p=strpos($value,' ')) !== false) {
  +    // [attachment:my.ext hello]
  +    // [attachment:my.ext attachment:my.png]
  +    // [attachment:my.ext http://url/../my.png]
  +    $text=$ntext=substr($value,$p+1);
       $value=substr($value,0,$p);
  +    if (substr($text,0,11)=='attachment:') {
  +      $fname=substr($text,11);
  +      $ntext=macro_Attachment($formatter,$fname,1);
  +    }
  +    if (preg_match("/\.(png|gif|jpeg|jpg)$/i",$ntext)) {
  +      $img_link='<img src="'.$ntext.'" alt="'.$text.'" border="0" />';
  +      if (!file_exists($ntext)) {
  +        $mydownload='UploadFile&amp;rename='.$fname;
  +        $text=sprintf(_("Upload new Attachment \"%s\""),$fname);
  +        $text=str_replace('"','\'',$text);
  +      }
  +      $ntext=qualifiedUrl($DBInfo->url_prefix.'/'.$ntext);
  +    }
     }
   
     if (($dummy=strpos($value,'?'))) {
  @@ -69,16 +85,18 @@
     if (!$text) $text=$file;
   
     if (file_exists($upload_file)) {
  -    if (preg_match("/\.(png|gif|jpeg|jpg)$/i",$upload_file)) {
  +    if (!$img_link && preg_match("/\.(png|gif|jpeg|jpg)$/i",$upload_file)) {
         if ($key != $pagename || $force_download)
           $url=$formatter->link_url(_urlencode($pagename),"?action=$mydownload&amp;value=$value");
         else
           $url=$DBInfo->url_prefix."/"._urlencode($upload_file);
         return "<span class=\"imgAttach\"><img src='$url' alt='$file' $attr/></span>";
       } else {
  +      $link=$formatter->link_url(_urlencode($pagename),"?action=$mydownload&amp;value=$value",$text);
  +      if ($img_link)
  +        return "<span class=\"attach\"><a href='$link'>$img_link</a></span>";
   
  -      return "<span class=\"attach\"><img align='middle' src='$DBInfo->imgs_dir_interwiki".'uploads-16.png\' />'.
  -        $formatter->link_tag(_urlencode($pagename),"?action=$mydownload&amp;value=$value",$text).'</span>';
  +      return "<span class=\"attach\"><img align='middle' src='$DBInfo->imgs_dir_interwiki".'uploads-16.png\' /><a href="'.$link.'">'.$text.'</a></span>';
       }
     }
     if ($pagename == $formatter->page->name)
  
  
  


wkpark      2005/04/03 20:40:50

  Modified:    .        wiki.php
  Log:
  fix last changes
  
  Revision  Changes    Path
  1.210     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.209
  retrieving revision 1.210
  diff -u -r1.209 -r1.210
  --- wiki.php	3 Apr 2005 09:04:56 -0000	1.209
  +++ wiki.php	3 Apr 2005 11:40:50 -0000	1.210
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.209 2005/04/03 09:04:56 wkpark Exp $
  +// $Id: wiki.php,v 1.210 2005/04/03 11:40:50 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.209 $',1,-1);
  +$_revision = substr('$Revision: 1.210 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -2406,8 +2406,8 @@
               $in_quote=0;
            } else {
               # htmlfy '<', '&'
  -            $pre=str_replace(array('<','&'),
  -                             array('&lt;','&amp;'),
  +            $pre=str_replace(array('&','<'),
  +                             array("&amp;","&lt;"),
                               $this->pre_line);
               $line="<pre class='wiki'>\n".$pre."</pre>\n".$line;
            }
  
  
  


wkpark      2005/04/03 23:29:43

  Modified:    .        wiki.php
  Log:
  fix to remove 'register_global=on' for the oekaki action.
  
  Revision  Changes    Path
  1.211     +4 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.210
  retrieving revision 1.211
  diff -u -r1.210 -r1.211
  --- wiki.php	3 Apr 2005 11:40:50 -0000	1.210
  +++ wiki.php	3 Apr 2005 14:29:43 -0000	1.211
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.210 2005/04/03 11:40:50 wkpark Exp $
  +// $Id: wiki.php,v 1.211 2005/04/03 14:29:43 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.210 $',1,-1);
  +$_revision = substr('$Revision: 1.211 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -3217,7 +3217,6 @@
   //function render($pagename,$options) {
   if ($pagename) {
     global $DBInfo;
  -  global $value,$action;
     # get primary variables
     if ($_SERVER['REQUEST_METHOD']=="POST") {
       # hack for TWiki plugin
  @@ -3225,6 +3224,8 @@
       if ($GLOBALS['HTTP_RAW_POST_DATA']) {
         # RAW posted data. the $value and $action could be accessed under
         # "register_globals = On" in the php.ini
  +      # hack for Oekaki: PageName----action----filename
  +      list($pagename,$action,$value)=explode('----',$pagename,3);
         $options['value']=$value;
       } else {
         $value=$_POST['value'];
  
  
  


wkpark      2005/04/03 23:29:43

  Modified:    plugin   OeKaki.php
  Log:
  fix to remove 'register_global=on' for the oekaki action.
  
  Revision  Changes    Path
  1.6       +4 -4      moniwiki/plugin/OeKaki.php
  
  Index: OeKaki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/OeKaki.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- OeKaki.php	21 Oct 2004 08:27:01 -0000	1.5
  +++ OeKaki.php	3 Apr 2005 14:29:43 -0000	1.6
  @@ -4,7 +4,7 @@
   //
   // Usage: [[OeKaki(hello)]]
   //
  -// $Id: OeKaki.php,v 1.5 2004/10/21 08:27:01 wkpark Exp $
  +// $Id: OeKaki.php,v 1.6 2005/04/03 14:29:43 wkpark Exp $
   // vim:et:ts=2:
   
   function macro_OeKaki($formatter,$value) {
  @@ -74,7 +74,7 @@
       if ($formatter->page->exists())
         $body=$formatter->page->get_raw_body();
       else $body='';
  -    if (!preg_match("/\n\[\[OeKaki($name)\]\]\n/i",$body)) {
  +    if (!preg_match("/\n?\[\[OeKaki\($name\)\]\]\n?/i",$body)) {
         if (preg_match("/\n##Draw\n/i",$body))
          $body=preg_replace("/\n##Draw\n/","\n##Draw\n[[OeKaki($name)]]\n",$body);
         else
  @@ -118,8 +118,8 @@
     $formatter->send_title(_("Create new picture"),"",$options);
     $prefix=$formatter->prefix;
     $now=time();
  -  $url_exit= $formatter->link_url($options[page],"?ts=$now");
  -  $url_save= $formatter->link_url($options[page],"?action=OeKaki&value=$name&ts=$now");
  +  $url_exit= $formatter->link_url($options['page'],"?ts=$now");
  +  $url_save= $formatter->link_url($options['page'],"----OeKaki----$name");
   
     $pubpath=$DBInfo->url_prefix."/applets/OekakiPlugin";
     print "<h2>"._("Edit Image")."</h2>\n";
  
  
  


wkpark      2005/04/03 23:59:33

  Modified:    .        wiki.php
  Log:
  fix PR #300620: revert changes and fix the rss_rc.php
  
  Revision  Changes    Path
  1.212     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.211
  retrieving revision 1.212
  diff -u -r1.211 -r1.212
  --- wiki.php	3 Apr 2005 14:29:43 -0000	1.211
  +++ wiki.php	3 Apr 2005 14:59:33 -0000	1.212
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.211 2005/04/03 14:29:43 wkpark Exp $
  +// $Id: wiki.php,v 1.212 2005/04/03 14:59:33 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.211 $',1,-1);
  +$_revision = substr('$Revision: 1.212 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -744,7 +744,7 @@
       $time= time();
       if ($this->use_hostname) $host= gethostbyaddr($remote_name);
       else $host= $remote_name;
  -    $msg="$page_name\t$remote_name\t$time\t$host\t$user->id\t\ $comment\ \t$action\n";
  +    $msg="$page_name\t$remote_name\t$time\t$host\t$user->id\t$comment\t$action\n";
       fwrite($fp_editlog, $msg);
       fclose($fp_editlog);
     }
  
  
  


wkpark      2005/04/03 23:59:33

  Modified:    plugin   rss_rc.php
  Log:
  fix PR #300620: revert changes and fix the rss_rc.php
  
  Revision  Changes    Path
  1.9       +2 -2      moniwiki/plugin/rss_rc.php
  
  Index: rss_rc.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rss_rc.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- rss_rc.php	13 Aug 2004 10:45:18 -0000	1.8
  +++ rss_rc.php	3 Apr 2005 14:59:33 -0000	1.9
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // rss_rc action plugin for the MoniWiki
   //
  -// $Id: rss_rc.php,v 1.8 2004/08/13 10:45:18 wkpark Exp $
  +// $Id: rss_rc.php,v 1.9 2005/04/03 14:59:33 wkpark Exp $
   
   function do_rss_rc($formatter,$options) {
     global $DBInfo;
  @@ -70,7 +70,7 @@
           $html="<![CDATA[".$html.$extra."]]>";
           #$html=strtr($html.$extra,array('&'=>'&amp;','<'=>'&lt;'));
         } else {
  -        if ($log) $html=$log;
  +        $html=$log;
         }
       }
       $zone = "+00:00";
  
  
  


wkpark      2005/04/04 01:11:56

  Modified:    plugin   rss_rc.php
  Log:
  update for new revision interface
  fix PR #300725 for the ThunderBird (remove $datetag)
  
  Revision  Changes    Path
  1.10      +8 -8      moniwiki/plugin/rss_rc.php
  
  Index: rss_rc.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rss_rc.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- rss_rc.php	3 Apr 2005 14:59:33 -0000	1.9
  +++ rss_rc.php	3 Apr 2005 16:11:56 -0000	1.10
  @@ -3,12 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // rss_rc action plugin for the MoniWiki
   //
  -// $Id: rss_rc.php,v 1.9 2005/04/03 14:59:33 wkpark Exp $
  +// $Id: rss_rc.php,v 1.10 2005/04/03 16:11:56 wkpark Exp $
   
   function do_rss_rc($formatter,$options) {
     global $DBInfo;
   
  -  $lines= $DBInfo->editlog_raw_lines(2000,1);
  +  $lines= $DBInfo->editlog_raw_lines(4000,1);
       
     $time_current= time();
     $secs_per_day= 60*60*24;
  @@ -58,7 +58,7 @@
           $f=new Formatter($p);
           $options['raw']=1;
           $options['nomsg']=1;
  -        $html=$f->get_diff('','','',$options);
  +        $html=$f->macro_repl('Diff','',$options);
           if (!$html) {
             ob_start();
             $f->send_page('',array('fixpath'=>1));
  @@ -75,16 +75,16 @@
       }
       $zone = "+00:00";
       $date = gmdate("Y-m-d\TH:i:s",$ed_time).$zone;
  -    $datetag = gmdate("YmdHis",$ed_time);
  +    #$datetag = gmdate("YmdHis",$ed_time);
   
       $channel.="<rdf:li rdf:resource=\"$url\"></rdf:li>\n";
   
       $valid_page_name=str_replace('&','&amp;',$page_name);
  -    $items.="<item rdf:about=\"$url#$datetag\">\n";
  +    $items.="<item rdf:about=\"$url\">\n";
       $items.="  <title>$valid_page_name</title>\n";
       $items.="  <link>$url</link>\n";
  -    $items.="  <dc:date>$date</dc:date>\n";
       $items.="  <description>$html</description>\n";
  +    $items.="  <dc:date>$date</dc:date>\n";
       $items.="<dc:creator>$user</dc:creator>\n";
       $items.="<dc:contributor>$user</dc:contributor>\n";
   #    $items.="     <dc:contributor>\n     <rdf:Description>\n"
  @@ -131,11 +131,11 @@
   	xmlns:wiki="http://purl.org/rss/1.0/modules/wiki/"
   	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   	xmlns:xlink="http://www.w3.org/1999/xlink"
  -	xmlns:dc="http://purl.org/dc/elements/1.1/">\n
  +	xmlns:dc="http://purl.org/dc/elements/1.1/">
   <!--
       Add "diffs=1" to add change diffs to the description of each items.
       Add "oe=utf-8" to convert the charset of this rss to UTF-8.
  --->
  +-->\n
   HEAD;
     header("Content-Type: text/xml");
     if ($new) print $head.$new;
  
  
  


wkpark      2005/04/05 19:25:15

  Modified:    data     intermap.txt
  Log:
  fix PR #300457: update and fix
  
  Revision  Changes    Path
  1.5       +5 -5      moniwiki/data/intermap.txt
  
  Index: intermap.txt
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/data/intermap.txt,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- intermap.txt	18 Aug 2004 03:48:03 -0000	1.4
  +++ intermap.txt	5 Apr 2005 10:25:15 -0000	1.5
  @@ -1,4 +1,4 @@
  -# $Id: intermap.txt,v 1.4 2004/08/18 03:48:03 wkpark Exp $
  +# $Id: intermap.txt,v 1.5 2005/04/05 10:25:15 wkpark Exp $
   # see http://usemod.com/intermap.txt 
   ISBN http://www.amazon.com/exec/obidos/ISBN=
   Wiki http://c2.com/cgi/wiki?
  @@ -19,8 +19,8 @@
   Bzla http://bugzilla.gnome.org/show_bug.cgi?id=
   BugZilla http://bugzilla.gnome.org/show_bug.cgi?id=
   Foldoc http://www.foldoc.org/foldoc/foldoc.cgi?
  -JargonFile http://sunir.org/apps/meta.pl?wiki=JargonFile&redirect=
  -Acronym http://www.acronymfinder.com/af-query.asp?String=exact&Acronym=
  +JargonFile http://sunir.org/apps/meta.pl?wiki=JargonFile&amp;redirect=
  +Acronym http://www.acronymfinder.com/af-query.asp?String=exact&amp;Acronym=
   Advogato http://www.advogato.org/
   SourceForge http://www.sourceforge.net/
   
  @@ -31,12 +31,12 @@
   GentooKorea http://gentoo.or.kr/wiki/moin.cgi/
   DebianKorea http://debianusers.org/DebianWiki/
   BSDKorea http://wiki.bsdforum.or.kr/wiki.php/
  +KDEKorea http://wiki.kde.or.kr/wiki/
   Freefeel http://freefeel.org/wiki/
   SFReaders http://www.sfreaders.org/moin.cgi/
  -Jangnan http://www.jangnan.org/wiki/moin.cgi/
  +Jangnan http://jangnan.st/wiki/
   Xper http://xper.org/wiki/xp/
   PyKug http://www.python.or.kr/pykug/
   KTUG http://faq.ktug.or.kr/mywiki/
   MoniWiki http://moniwiki.sf.net/wiki.php/
   KLDPWiki http://wiki.kldp.org/wiki/
  -Teoal http://teoal.net/wiki/
  
  
  


wkpark      2005/04/05 19:26:08

  Modified:    data     sistermap.txt.sample
  Log:
  update
  
  Revision  Changes    Path
  1.3       +1 -1      moniwiki/data/sistermap.txt.sample
  
  Index: sistermap.txt.sample
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/data/sistermap.txt.sample,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- sistermap.txt.sample	11 Aug 2003 05:18:05 -0000	1.2
  +++ sistermap.txt.sample	5 Apr 2005 10:26:08 -0000	1.3
  @@ -1,5 +1,5 @@
   #Wiki http://c2.com/cgi/wiki? Wiki
  -GnomeKorea http://gnome.or.kr/moin.cgi/
  +GnomeKorea http://gnome.or.kr/wiki/
   #LovolNet http://lovol.net/
   #KTUG http://faq.ktug.or.kr/mywiki/
   KLE http://chem.skku.ac.kr/~kle/moin/
  
  
  


wkpark      2005/04/05 22:50:25

  Modified:    .        wiki.php
  Log:
  fix renamePage() to rename the attachment dir of the renamed page
  
  Revision  Changes    Path
  1.213     +6 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.212
  retrieving revision 1.213
  diff -u -r1.212 -r1.213
  --- wiki.php	3 Apr 2005 14:59:33 -0000	1.212
  +++ wiki.php	5 Apr 2005 13:50:25 -0000	1.213
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.212 2005/04/03 14:59:33 wkpark Exp $
  +// $Id: wiki.php,v 1.213 2005/04/05 13:50:25 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.212 $',1,-1);
  +$_revision = substr('$Revision: 1.213 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -899,6 +899,10 @@
       $keyname=$this->_getPageKey($new);
   
       rename($okey,$nkey);
  +    $newdir=$this->upload_dir.'/'.$keyname;
  +    if (!file_exists($newdir))
  +      rename($this->upload_dir.'/'.$this->_getPageKey($pagename),$newdir);
  +
       if ($options['history'] && $this->version_class) {
         $class=getModule('Version',$this->version_class);
         $version=new $class ($this);
  
  
  


wkpark      2005/04/08 13:25:36

  Modified:    .        wiki.php wikilib.php
  Log:
  first try to fix PR #300610 : add Section Editing feature like as the MediaWiki
  fix PR #300346 [wiki:Self:Page attachment:foo.png] syntax support added
  
  Revision  Changes    Path
  1.214     +25 -7     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.213
  retrieving revision 1.214
  diff -u -r1.213 -r1.214
  --- wiki.php	5 Apr 2005 13:50:25 -0000	1.213
  +++ wiki.php	8 Apr 2005 04:25:36 -0000	1.214
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.213 2005/04/05 13:50:25 wkpark Exp $
  +// $Id: wiki.php,v 1.214 2005/04/08 04:25:36 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.213 $',1,-1);
  +$_revision = substr('$Revision: 1.214 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -1310,6 +1310,7 @@
       $this->page=$page;
       $this->head_num=1;
       $this->head_dep=0;
  +    $this->sect_num=0;
       $this->toc=0;
       $this->highlight="";
       $this->prefix= get_scriptname();
  @@ -1321,6 +1322,7 @@
       $this->inline_latex=
         $DBInfo->inline_latex == 1 ? 'latex':$DBInfo->inline_latex;
       $this->use_purple=$DBInfo->use_purple;
  +    $this->section_edit=$DBInfo->use_sectionedit;
   
       if (($p=strpos($page->name,"~")))
         $this->group=substr($page->name,0,$p+1);
  @@ -1390,7 +1392,7 @@
       #"\b(".$DBInfo->interwikirule."):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
       #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
       #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+[^\(\)<>\s\',\.:\?\!]+)|".
  -    "(\b|\^?)([A-Z][a-zA-Z]+):([^\(\)<>\s\']+[^\(\)<>\s\',\.:\?\!]+)|".
  +    "(\b|\^?)([A-Z][a-zA-Z]+):([^\(\)<>\s\']+[^\(\)<>\s\'\",\.:\?\!]+)|".
       # "(?<!\!|\[\[)\b(([A-Z]+[a-z0-9]+){2,})\b|".
       # "(?<!\!|\[\[)((?:\/?[A-Z]([a-z0-9]+|[A-Z]*(?=[A-Z][a-z0-9]|\b))){2,})\b|".
       # WikiName rule: WikiName ILoveYou (imported from the rule of NoSmoke)
  @@ -1715,9 +1717,19 @@
            "width='16' alt='$wiki:' title='$wiki:' /></a>";
       #if (!$text) $text=str_replace("%20"," ",$page);
       if (!$text) $text=urldecode($page);
  -    else if (preg_match("/^(http|ftp).*\.(png|gif|jpeg|jpg)$/i",$text)) {
  -      $text= "<img border='0' alt='$text' src='$text' />";
  -      $img="";
  +    else if (preg_match("/^(http|ftp|attachment):.*\.(png|gif|jpeg|jpg)$/i",$text)) {
  +      if (substr($text,0,11)=='attachment:') {
  +        $fname=substr($text,11);
  +        $ntext=$this->macro_repl('Attachment',$fname,1);
  +        if (!file_exists($ntext))
  +          $text=$this->macro_repl('Attachment',$fname);
  +        else {
  +          $text=qualifiedUrl($DBInfo->url_prefix.'/'.$ntext);
  +          $text= "<img border='0' alt='$text' src='$text' />";
  +        }
  +      } else
  +        $text= "<img border='0' alt='$text' src='$text' />";
  +      $img='';
       }
   
       if (preg_match("/\.(png|gif|jpeg|jpg)$/i",$url))
  @@ -1932,8 +1944,14 @@
       if ($this->toc)
         $head="<a href='#toc'>$num</a> $head";
       $perma=" <a class='perma' href='#s$prefix-$num'>$this->perma_icon</a>";
  +    if ($this->section_edit && !$this->preview) {
  +      $this->sect_num++;
  +      $url=$this->link_url($this->page->urlname,
  +        '?action=edit&amp;section='.$this->sect_num);
  +      $edit="<div class='sectionEdit' style='float:right;'>[<a href='$url'>edit</a>]</div>\n";
  +    }
   
  -    return "$close$open<h$dep><a id='s$prefix-$num' name='s$prefix-$num'></a> $head$perma</h$dep>";
  +    return "$close$open$edit<h$dep><a id='s$prefix-$num' name='s$prefix-$num'></a> $head$perma</h$dep>";
     }
   
     function macro_repl($macro,$value='',$options='') {
  
  
  
  1.139     +55 -5     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.138
  retrieving revision 1.139
  diff -u -r1.138 -r1.139
  --- wikilib.php	27 Mar 2005 22:06:17 -0000	1.138
  +++ wikilib.php	8 Apr 2005 04:25:36 -0000	1.139
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.138 2005/03/27 22:06:17 wkpark Exp $
  +// $Id: wikilib.php,v 1.139 2005/04/08 04:25:36 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -487,13 +487,41 @@
       return;
     }
     $formatter->send_header("",$options);
  -  $formatter->send_title("Edit ".$options['page'],"",$options);
  +  if ($options['section'])
  +    $sec=' (Section)';
  +  $formatter->send_title(sprintf(_("Edit %s"),$options['page']).$sec,"",$options);
     print macro_EditText($formatter,$value,$options);
     $formatter->send_footer($args,$options);
   }
   
  -function _get_section($formatter,$text) {
  -
  +function _get_sections($body) {
  +  $chunks=preg_split("/(\{\{\{.+?\}\}\})/s",$body,-1, PREG_SPLIT_DELIM_CAPTURE);
  +  $sects=array();
  +  $sects[]='';
  +  for ($jj=0,$ii=0,$ss=count($chunks); $ii<$ss; $ii++) {
  +    if (($ii%2)) {
  +      $sec=array_pop($sects);
  +      $sects[]=$sec.$chunks[$ii];
  +      continue;
  +    }
  +    $parts=array();
  +    $parts=preg_split("/^(\s*={1,5}\s#?.*\s+={1,5}\s?)$/m",$chunks[$ii],
  +      -1, PREG_SPLIT_DELIM_CAPTURE);
  +    for ($j=0,$i=0,$s=count($parts); $i<$s; $i++) {
  +      if (!($i%2)) {
  +        $sec=array_pop($sects);
  +        $sects[]=$sec.$parts[$i];
  +        continue;
  +      }
  +      if (preg_match("/^\s*(={1,5})\s#?.*\s+\\1\s?/",$parts[$i])) {
  +        $sects[]=$parts[$i];
  +      } else {
  +        $sec=array_pop($sects);
  +        $sects[]=$sec.$parts[$i];
  +      }
  +    }
  +  }
  +  return $sects;
   }
   
   function macro_Edit($formatter,$value,$options='') {
  @@ -526,6 +554,9 @@
   
     if ($options['conflict'])
       $extra='<input type="submit" name="button_merge" value="Merge" />';
  +  if ($options['section'])
  +    $hidden='<input type="hidden" name="section" value="'.$options['section'].
  +            '" />';
   
     # make a edit form
     $form.= "<a id='editor' name='editor' />\n";
  @@ -554,6 +585,12 @@
       $raw_body = str_replace("\r\n", "\n", $text);
     } else if ($formatter->page->exists()) {
       $raw_body = str_replace("\r\n", "\n", $formatter->page->_get_raw_body());
  +    if (isset($options['section'])) {
  +      $sections= _get_sections($raw_body);
  +      if ($sections[$options['section']])
  +        $raw_body = $sections[$options['section']];
  +      #else ignore
  +    }
     } else if ($options['template']) {
       $p= new WikiPage($options['template']);
       $raw_body = str_replace("\r\n", "\n", $p->get_raw_body());
  @@ -619,7 +656,7 @@
   $summary_msg: <input name="comment" size="70" maxlength="70" style="width:200" />$extra_check<br />
   <input type="hidden" name="action" value="savepage" />
   <input type="hidden" name="datestamp" value="$datestamp" />
  -$select_category
  +$hidden$select_category
   <input type="submit" value="$save_msg" />&nbsp;
   <!-- <input type="reset" value="Reset" />&nbsp; -->
   <input type="submit" name="button_preview" value="$preview_msg" />
  @@ -914,6 +951,17 @@
   
     $savetext=str_replace("\r", "", $savetext);
     $savetext=_stripslashes($savetext);
  +  $section_savetext='';
  +  if (isset($options['section'])) {
  +    if ($formatter->page->exists()) {
  +      $sections= _get_sections($formatter->page->get_raw_body());
  +      if ($sections[$options['section']])
  +        $sections[$options['section']]=$savetext;
  +      $section_savetext=$savetext;
  +      $savetext=implode('',$sections);
  +    }
  +  }
  +
     if ($savetext and $savetext[strlen($savetext)-1] != "\n")
       $savetext.="\n";
   
  @@ -967,7 +1015,9 @@
        
       $options['preview']=1; 
       $options['datestamp']=$datestamp; 
  +    $savetext=$section_savetext ? $section_savetext:$savetext;
       $options['savetext']=$savetext;
  +
       print macro_EditText($formatter,$value,$options); # XXX
       print $DBInfo->hr;
       print $menu;
  
  
  


wkpark      2005/04/08 13:26:17

  Modified:    plugin   Attachment.php
  Log:
  minor fix
  
  Revision  Changes    Path
  1.15      +2 -4      moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- Attachment.php	3 Apr 2005 11:23:39 -0000	1.14
  +++ Attachment.php	8 Apr 2005 04:26:17 -0000	1.15
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.14 2005/04/03 11:23:39 wkpark Exp $
  +// $Id: Attachment.php,v 1.15 2005/04/08 04:26:17 wkpark Exp $
   
   function macro_Attachment($formatter,$value,$option='') {
     global $DBInfo;
  @@ -79,9 +79,7 @@
     if (!$file) return 'attachment:/';
   
     $upload_file=$dir.'/'.$file;
  -  if ($option == 1) {
  -    return $upload_file;
  -  }
  +  if ($option == 1) return $upload_file;
     if (!$text) $text=$file;
   
     if (file_exists($upload_file)) {
  
  
  


wkpark      2005/04/08 13:33:12

  Modified:    .        wiki.php
  Log:
  minor fix to the last change of the renamePage() method
  
  Revision  Changes    Path
  1.215     +5 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.214
  retrieving revision 1.215
  diff -u -r1.214 -r1.215
  --- wiki.php	8 Apr 2005 04:25:36 -0000	1.214
  +++ wiki.php	8 Apr 2005 04:33:12 -0000	1.215
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.214 2005/04/08 04:25:36 wkpark Exp $
  +// $Id: wiki.php,v 1.215 2005/04/08 04:33:12 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.214 $',1,-1);
  +$_revision = substr('$Revision: 1.215 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -900,8 +900,9 @@
   
       rename($okey,$nkey);
       $newdir=$this->upload_dir.'/'.$keyname;
  -    if (!file_exists($newdir))
  -      rename($this->upload_dir.'/'.$this->_getPageKey($pagename),$newdir);
  +    $olddir=$this->upload_dir.'/'.$this->_getPageKey($pagename);
  +    if (!file_exists($newdir) and file_exists($olddir))
  +      rename($olddir,$newdir);
   
       if ($options['history'] && $this->version_class) {
         $class=getModule('Version',$this->version_class);
  
  
  


wkpark      2005/04/08 19:42:51

  Modified:    plugin   Clip.php
  Log:
  disable $enable_edit
  
  Revision  Changes    Path
  1.2       +2 -2      moniwiki/plugin/Clip.php
  
  Index: Clip.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Clip.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Clip.php	18 Mar 2005 11:25:54 -0000	1.1
  +++ Clip.php	8 Apr 2005 10:42:51 -0000	1.2
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Clip(hello)]]
   //
  -// $Id: Clip.php,v 1.1 2005/03/18 11:25:54 wkpark Exp $
  +// $Id: Clip.php,v 1.2 2005/04/08 10:42:51 wkpark Exp $
   
   function macro_Clip($formatter,$value) {
     global $DBInfo;
  @@ -13,7 +13,7 @@
     $_dir=str_replace("./",'',$DBInfo->upload_dir.'/'.$keyname);
     $name=_rawurlencode($value);
   
  -  $enable_edit=1;
  +  $enable_edit=0;
   
     umask(000);
     if (!file_exists($_dir))
  
  
  


wkpark      2005/04/08 19:43:23

  Modified:    plugin/processor latex.php vim.php
  Log:
  minor fixes
  
  Revision  Changes    Path
  1.9       +2 -2      moniwiki/plugin/processor/latex.php
  
  Index: latex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/latex.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- latex.php	27 Mar 2005 22:08:59 -0000	1.8
  +++ latex.php	8 Apr 2005 10:43:23 -0000	1.9
  @@ -6,7 +6,7 @@
   // Usage: {{{#!latex
   // $ \alpha $
   // }}}
  -// $Id: latex.php,v 1.8 2005/03/27 22:08:59 wkpark Exp $
  +// $Id: latex.php,v 1.9 2005/04/08 10:43:23 wkpark Exp $
   
   function processor_latex($formatter="",$value="") {
     global $DBInfo;
  @@ -82,7 +82,7 @@
   
        system("$RM $vartmp_dir/$uniq.*");
     }
  -  return "<img class='tex' src='$DBInfo->url_prefix/$cache_dir/$uniq.png' alt='tex' ".
  +  return "<img class='tex' src='$DBInfo->url_prefix/$cache_dir/$uniq.png' alt='$tex' ".
            "title=\"$tex\" />";
   }
   
  
  
  
  1.25      +2 -3      moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- vim.php	28 Mar 2005 05:56:43 -0000	1.24
  +++ vim.php	8 Apr 2005 10:43:23 -0000	1.25
  @@ -6,7 +6,7 @@
   // Usage: {{{#!vim sh|c|sh|.. [number]
   // some codes
   // }}}
  -// $Id: vim.php,v 1.24 2005/03/28 05:56:43 wkpark Exp $
  +// $Id: vim.php,v 1.25 2005/04/08 10:43:23 wkpark Exp $
   
   function processor_vim($formatter,$value,$options) {
     global $DBInfo;
  @@ -43,8 +43,7 @@
       if (!$jsloaded) 
         $script='<script type="text/javascript" src="'.$DBInfo->url_prefix.'/local/numbering.js"></script>';
       $script.="<script type=\"text/javascript\">
  -document.write('<a href=\"#\" onClick=\"return togglenumber(\'PRE-$uniq\', 1, 1);\" \\
  -class=\"codenumbers\">$button</a>');
  +document.write('<a href=\"#\" onClick=\"return togglenumber(\'PRE-$uniq\', 1, 1);\" class=\"codenumbers\">$button</a>');
   </script>";
     }
   
  
  
  


wkpark      2005/04/08 20:05:22

  Modified:    plugin/processor itex.php
  Log:
  fix output for the traditional XHTML
  
  Revision  Changes    Path
  1.3       +36 -7     moniwiki/plugin/processor/itex.php
  
  Index: itex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/itex.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- itex.php	28 Mar 2005 08:39:26 -0000	1.2
  +++ itex.php	8 Apr 2005 11:05:22 -0000	1.3
  @@ -9,17 +9,41 @@
   //
   // you can also replace inline latex processor with following config:
   //  $inline_latex='itex';
  +//
   // and replace the latex processor:
   //  $processors=array('latex'=>'itex',...);
   //
  -// $Id: itex.php,v 1.2 2005/03/28 08:39:26 wkpark Exp $
  +// $Id: itex.php,v 1.3 2005/04/08 11:05:22 wkpark Exp $
  +
  +/*
  +  itex2MML.l patch to enable $$\alpha$$ syntax
  +*/
  +
  +// fix MathML under HTML
  +// http://www.orcca.on.ca/MathML/texmml/mathml.dtd
   
   function processor_itex($formatter="",$value="",$options='') {
       global $DBInfo;
  +    $patched=1;
  +    $use_javascript=1;
  +    $fix_mathml=1;
   
  -    $fix_itex=array('Sum'=>'sum','rightarrow'=>'rarr');
  +    if ($fix_mathml) {
  +        # fix output for the traditional XHTML XXX
  +        $fix_itex=array(
  +        '&Sum;'=>'&sum;',
  +        '&rightarrow;'=>'&rarr;',
  +        '&partial;'=>'&part;',
  +        '&PartialD;'=>'&part;',
  +        '&Integral;'=>'&int;',
  +        '&Hat;'=>'&#770;',
  +        '&geq;'=>'&#8805;',
  +        '&epsi;'=>'&#8714;',
  +        '&hbar;'=>'&#x210F;',
  +        '&RightVector;'=>'&#x021C0;',
  +        );
  +    }
   
  -    $use_javascript=1;
       if ($use_javascript) {
           $flag = 0;
           $id=&$GLOBALS['_transient']['mathml'];
  @@ -52,8 +76,9 @@
           umask(000);
           mkdir($cache_dir,0777);
       }
  -  
  -    $src=preg_replace('/\$\$/','$',$value);
  +    if ($patched) $src=$value; # with the patched itex2MML
  +    else  
  +        $src=preg_replace(array('/^\$\$/','/\$\$/'),array('\[','\]'),$value); # XXX
       $uniq=md5($src);
     
       $RM='rm';
  @@ -79,7 +104,7 @@
           pclose($fp);
           unlink($srcpath);
   
  -        $out=preg_replace('/^<math /',"<math display='$type' ",$out);
  +        #$out=preg_replace('/^<math /',"<math display='$type' ",$out);
           $fp=fopen($cache_dir."/$uniq".'.xml','w');
           fwrite($fp,$out);
           fclose($fp);
  @@ -89,7 +114,11 @@
       if (!$fp) return $src;
       while (!feof($fp)) $out .= fread($fp, 1024);
       @fclose($fp);
  -    $out = strtr($out,$fix_itex); # itex bug ?
  +    #$out=preg_replace('/^<math [^>]+>/',"<math><mstyle fontsize='140%' displaystyle='true'>",$out);
  +    #$out=preg_replace('/<\/math>/',"</mstyle></math>",$out);
  +
  +    if ($fix_mathml)
  +        $out = strtr($out,$fix_itex); # fix output for the traditional XHTML
       $out = "<div class='itex' id=\"mathml" . $id. "\">$out" .'</div>';
       if ($use_javascript)
           $out.= "<script type=\"text/javascript\">fixMmlById('mathml" .$id.
  
  
  


wkpark      2005/04/09 00:27:30

  Modified:    .        config.php.default
  Log:
  add new config options and set default values
  
  Revision  Changes    Path
  1.17      +6 -1      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- config.php.default	14 Jan 2005 06:53:36 -0000	1.16
  +++ config.php.default	8 Apr 2005 15:27:30 -0000	1.17
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.16 2005/01/14 06:53:36 wkpark Exp $
  +# $Id: config.php.default,v 1.17 2005/04/08 15:27:30 wkpark Exp $
   #
   $sitename='UnnamedWiki';
   $data_dir= './data';
  @@ -32,6 +32,7 @@
   $charset='utf-8';
   #$charset='utf-8';
   $auto_linebreak= 0;
  +$auto_search='AutoGoto';
   $trail= 0;
   #$origin=1;
   #$arrow=' <img src="/wiki/imgs/moni-arrow.gif"/> ';
  @@ -41,6 +42,7 @@
   $use_twinpages=1;
   $use_trackback=0;
   $vim_options='+"set expandtab" +"retab"';
  +$pds_allowed="png|jpg|jpeg|gif|mp3|zip|tgz|gz|txt|css|exe|hwp|pdf";
   #$vim_nocheck=1;
   #$vim_options='+"set encoding=UTF-8"';
   #$nonexists='fancy';
  @@ -106,4 +108,7 @@
   #$version_class='RcsLite';
   #$use_numbering=1;
   #$use_resizer=1;
  +#$use_minoredit=1; // only for wiki owners
  +#$auto_search='FixMoin';
  +$use_sectionedit=0;
   ?>
  
  
  


wkpark      2005/04/09 00:37:02

  moniwiki/applets/ClipPlugin - New directory

wkpark      2005/04/09 00:38:29

  Added:       applets/ClipPlugin Makefile
  Log:
  add the 'Clip' macro plugin
  
  Revision  Changes    Path
  1.1                  moniwiki/applets/ClipPlugin/Makefile
  
  Index: Makefile
  ===================================================================
  all:
  	wget -N http://chemie.skku.ac.kr/wiki/applets/ClipPlugin/clip.jar
  
  
  


wkpark      2005/04/09 15:40:08

  Modified:    .        wikilib.php
  Log:
  fix macro_TitleIndex(): use link_tag()
  
  Revision  Changes    Path
  1.140     +9 -7      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.139
  retrieving revision 1.140
  diff -u -r1.139 -r1.140
  --- wikilib.php	8 Apr 2005 04:25:36 -0000	1.139
  +++ wikilib.php	9 Apr 2005 06:40:08 -0000	1.140
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.139 2005/04/08 04:25:36 wkpark Exp $
  +// $Id: wikilib.php,v 1.140 2005/04/09 06:40:08 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1516,18 +1516,18 @@
     return $out;
   }
   
  -function macro_TitleIndex($formatter="") {
  +function macro_TitleIndex($formatter) {
     global $DBInfo;
   
     if ($formatter->group) {
       $group_pages = $DBInfo->getLikePages($formatter->group,1);
       foreach ($group_pages as $page)
  -      $all_pages[]=str_replace($formatter->group,"",$page);
  +      $all_pages[]=str_replace($formatter->group,'',$page);
     } else
       $all_pages = $DBInfo->getPageLists();
     #natcasesort($all_pages);
     #sort($all_pages,SORT_STRING);
  -  usort($all_pages, "strcasecmp");
  +  usort($all_pages, 'strcasecmp');
   
     $key=-1;
     $out="";
  @@ -1555,16 +1555,18 @@
   #    else
         $title=get_title($page);
   
  -    $out.= '<li>' . $formatter->word_repl('"'.$page.'"',$title,'',0,0);
  +    #$out.= '<li>' . $formatter->word_repl('"'.$page.'"',$title,'',0,0);
  +    $urlname=_urlencode($page);
  +    $out.= '<li>' . $formatter->link_tag($urlname,'',$title);
       $keyname=$DBInfo->pageToKeyname(urldecode($page));
       if (is_dir($DBInfo->upload_dir."/$keyname"))
  -       $out.=' '.$formatter->link_tag(_urlencode($page),"?action=uploadedfiles",
  +       $out.=' '.$formatter->link_tag($urlname,"?action=uploadedfiles",
            $formatter->icon['attach']);
       $out.="</li>\n";
     }
     $out.= "</ul>\n";
   
  -  $index="";
  +  $index='';
     foreach ($keys as $key) {
       $name=$key;
       if ($key == 'Others') $name=_("Others");
  
  
  


wkpark      2005/04/09 19:56:51

  Modified:    plugin   Gallery.php
  Log:
  fix PR #300611: add col,row options to the GalleryMacro - [[Gallery(col=2)]]
  
  Revision  Changes    Path
  1.18      +19 -7     moniwiki/plugin/Gallery.php
  
  Index: Gallery.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Gallery.php,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- Gallery.php	26 Mar 2005 11:51:58 -0000	1.17
  +++ Gallery.php	9 Apr 2005 10:56:51 -0000	1.18
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Gallery]]
   //
  -// $Id: Gallery.php,v 1.17 2005/03/26 11:51:58 wkpark Exp $
  +// $Id: Gallery.php,v 1.18 2005/04/09 10:56:51 wkpark Exp $
   
   function get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -60,13 +60,29 @@
       $formatter->actions[]='UploadFile';
       $formatter->actions[]='UploadedFiles';
     }
  +  $default_column=3;
  +  $default_row=4;
  +  $col=$row=0;
   
     // parse args
     preg_match("/^(('|\")([^\\2]+)\\2)?,?(\s*,?\s*.*)?$/",
       $value,$match);
     $opts=explode(',',$match[4]);
  -  if (in_array('showall',$opts))
  -    $show_all=1;
  +  foreach ($opts as $opt) {
  +    if ($opt == 'showall') $show_all=1;
  +    else if (($p=strpos($opt,'='))!==false) {
  +      $k=substr($opt,0,$p);
  +      $v=substr($opt,$p+1);
  +      if ($k=='col') $col=$v;
  +      else if ($k=='row') $row=$v;
  +    }
  +  }
  +
  +  $col=($col<=0 or $col>7) ? $default_column:$col;
  +  $row=($row<=0 or $row>7) ? $default_row:$row;
  +  $width=$selected ? $default_width:150;
  +  $perpage=$col*$row;
  +
   
     $default_width=$DBInfo->gallery_img_width ? $DBInfo->gallery_img_width:600;
   
  @@ -165,10 +181,6 @@
     $out.="<table border='0' cellpadding='2'>\n<tr>\n";
     $idx=1;
   
  -  $col=3;
  -  $width=$selected ? $default_width:150;
  -  $perpage=$col*4;
  -
     $pages= intval(sizeof($upfiles) / $perpage);
     if (sizeof($upfiles) % $perpage)
       $pages++;
  
  
  


wkpark      2005/04/12 22:27:55

  moniwiki/plugin/filter - New directory

wkpark      2005/04/12 22:31:07

  Added:       plugin   filter.php Cite.php
  Log:
  the filter plugin feature added: a sample Cite macro/filter plugin added
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/filter.php
  
  Index: filter.php
  ===================================================================
  <?php
  // Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a sample plugin for the MoniWiki
  //
  // Usage: [[Test]]
  //
  // $Id: filter.php,v 1.1 2005/04/12 13:31:07 wkpark Exp $
  
  function macro_Filter($formatter,$value) {
      return "HelloWorld !\n";
  }
  
  function do_filter($formatter,$options) {
      if (!$options['filter']) {
          do_invalid($formatter,$options);
          return;
      }
      $body=$formatter->page->get_raw_body($options);
      $filters=preg_split("/(\||,)/",$options['filter']);
      foreach ($filters as $ft)
          $body=$formatter->filter_repl(trim($ft),$body,$options);
  
      if ($options['raw']) {
          $formatter->send_header('Content-Type: text/plain');
          print $body;
          return;
      }
      $formatter->send_header('',$options);
      $formatter->send_title('','',$options);
      
      print '<pre>'.$body.'</pre>';
      $formatter->send_footer("",$options);
      return;
  }
  
  // vim:et:sts=4:
  ?>
  
  
  
  1.1                  moniwiki/plugin/Cite.php
  
  Index: Cite.php
  ===================================================================
  <?php
  // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a CITE macro plugin for the MoniWiki
  //
  // $Id: Cite.php,v 1.1 2005/04/12 13:31:07 wkpark Exp $
  
  function macro_Cite($formatter="",$value="") {
    $CITE_MAP="CiteMap";
    $DEFAULT=<<<EOS
  JCP http://jcp.aip.org/jcp/top.jsp?vol=\$VOL&amp;pg=\$PAGE
  JPC http://pubs.acs.org/journals/query/subscriberResults.jsp?Research=true&amp;yearrange1=ASAP&amp;yearrange3=current&amp;cit_qjrn=jpchax&styear=YYYY&endyear=YYYY&vol=\$VOL&spn=\$PAGE
  ChemRev http://pubs.acs.org/journals/query/subscriberResults.jsp?Research=true&amp;yearrange1=ASAP&amp;yearrange3=current&amp;cit_qjrn=chreay&styear=YYYY&endyear=YYYY&vol=\$VOL&spn=\$PAGE
  EOS;
  
    $DEFAULT_CITE="JCP";
    $re_cite="/([A-Z][A-Za-z]*)?\s*([0-9\-]+\s*,\s*[0-9]+)/x";
  
    $test=preg_match($re_cite,$value,$match);
    if ($test === false)
       return "<p><strong class=\"error\">Invalid CITE \"%value\"</strong></p>";
  
    list($vol,$page)=explode(',',preg_replace('/ /','',$match[2]));
  
    if ($match[1]) {
      if (strtolower($match[1][0])=="k") $lang="JKCS";
      else $lang=$match[1];
    } else $lang=$DEFAULT_CITE;
  
    $attr='';
    if ($match[3]) {
      $args=explode(",",$match[3]);
      foreach ($args as $arg) {
        if ($arg == "noimg") $noimg=1;
        else {
          $name=strtok($arg,'=');
          $val=strtok(' ');
          $attr.=$name.'="'.$val.'" ';
          if ($name == 'align') $attr.='class="img'.ucfirst($val).'" ';
        }
      }
    }
  
    $list= $DEFAULT;
    $map= new WikiPage($CITE_MAP);
    if ($map->exists()) $list.=$map->get_raw_body();
  
    $lists=explode("\n",$list);
    $CITE_list=array();
    foreach ($lists as $line) {
       if (!$line or !preg_match("/^[A-Z]/",$line[0])) continue;
       $dum=explode(" ",rtrim($line));
       if (sizeof($dum) == 2)
          $dum[]=$CITE_list[$DEFAULT_CITE][1];
       else if (sizeof($dum) !=3) continue;
  
       $CITE_list[$dum[0]]=array($dum[1],$dum[2]);
    }
  
    if ($CITE_list[$lang]) {
       $citelink=$CITE_list[$lang][0];
       $imglink=$CITE_list[$lang][1];
    } else {
       $citelink=$CITE_list[$DEFAULT_CITE][0];
       $imglink=$CITE_list[$DEFAULT_CITE][1];
    }
  
    $citelink=str_replace('$VOL',$vol,$citelink);
    $citelink=str_replace('$PAGE',$page,$citelink);
  
    return $formatter->icon['www'].'<a href='."'$citelink'>".
       $lang.' <strong>'.$vol.'</strong>, '.$page.'</a>';
  }
  
  ?>
  
  
  


wkpark      2005/04/12 22:31:07

  Added:       plugin/filter sample.php cite.php
  Log:
  the filter plugin feature added: a sample Cite macro/filter plugin added
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/filter/sample.php
  
  Index: sample.php
  ===================================================================
  <?php
  // Copyright 2005 by Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a sample filter plugin for the MoniWiki
  //
  // $Id: sample.php,v 1.1 2005/04/12 13:31:07 wkpark Exp $
  
  function filter_sample($formatter,$value,$options) {
    return preg_replace($value);
  }
  // vim:et:sts=4:
  ?>
  
  
  
  1.1                  moniwiki/plugin/filter/cite.php
  
  Index: cite.php
  ===================================================================
  <?php
  // Copyright 2005 by Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a cite filter plugin for the MoniWiki
  //
  // $Id: cite.php,v 1.1 2005/04/12 13:31:07 wkpark Exp $
  
  function filter_cite($formatter,$value,$options) {
    $cite_rule=array(
      '/J\.\s*Chem\.\s*Phys\.,?\s*([0-9]+)\s*,\s*([0-9]+)(?>\s)/',
      '/J\.\s*Phys\.\s*Chem\.,?\s*([0-9]+)\s*,\s*([0-9]+)(?>\s)/',
      '/Chem\.\s*Rev\.\s,?\s*([0-9]+)\s*,\s*([0-9]+)(?>\s)/',
      '/J\.\s*Am\.\s*Chem\.\s*Soc\.\s,?\s*([0-9]+)\s*,\s*([0-9]+)(?>\s)/',
      );
    $cite_repl=array(
      '[[Cite(JCP \\1,\\2)]]', 
      '[[Cite(JPC \\1,\\2)]]', 
      '[[Cite(ChemRev \\1,\\2)]]', 
      '[[Cite(JACS \\1,\\2)]]', 
      );
    $value=strtr($value,"\t",' ');
    return preg_replace($cite_rule,$cite_repl,$value);
  }
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2005/04/12 22:58:38

  Modified:    plugin   subscribe.php
  Added:       plugin   scrap.php
  Log:
  fix the subscribe action plugin
  a scrap plugin added: please see PR #300832
  
  Revision  Changes    Path
  1.4       +2 -1      moniwiki/plugin/subscribe.php
  
  Index: subscribe.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/subscribe.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- subscribe.php	26 Mar 2005 15:56:46 -0000	1.3
  +++ subscribe.php	12 Apr 2005 13:58:38 -0000	1.4
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a subscribe action plugin for the MoniWiki
   //
  -// $Id: subscribe.php,v 1.3 2005/03/26 15:56:46 wkpark Exp $
  +// $Id: subscribe.php,v 1.4 2005/04/12 13:58:38 wkpark Exp $
   
   function do_subscribe($formatter,$options) {
     global $DBInfo;
  @@ -12,6 +12,7 @@
       $options['title']=_("EmailNotification is not activated");
       $options['msg']=_("If you want to subscribe this page please contact the WikiMaster to activate the e-mail notification");
       do_invalid($formatter,$options);
  +    return;
     }
   
     if ($options['id'] != 'Anonymous') {
  
  
  
  1.1                  moniwiki/plugin/scrap.php
  
  Index: scrap.php
  ===================================================================
  <?php
  // Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a scrap action plugin for the MoniWiki
  //
  // $Id: scrap.php,v 1.1 2005/04/12 13:58:38 wkpark Exp $
  
  function macro_Scrap($formatter,$value,$options) {
    global $DBInfo;
  
    $user=new User(); # get cookie
    if ($user->id != 'Anonymous') {
      $udb=new UserDB($DBInfo);
      $udb->checkUser($user);
    }
    if ($user->id == 'Anonymous') {
      return '[[Scrap]]';
    }
    $userinfo=$udb->getUser($user->id);
    $pages=explode("\t",$userinfo->info['scrapped_pages']);
    if (!in_array($options['page'],$pages)) $pages[]=$options['page'];
    $out='';
    foreach ($pages as $p) {
      if ($DBInfo->hasPage($p))
        $out.='<li>'.($formatter->link_tag(_urlencode($p),'',$p)).'</li>';
      else if ($p)
        $out.=substr($formatter->macro_repl('PageList',$p),4,-6);
    }
    return '<ul>'.$out.'</ul>';
  }
  
  
  function do_scrap($formatter,$options) {
    global $DBInfo;
  
    if ($options['id'] == 'Anonymous') {
      $title = _("Please login or make your ID.");
      $formatter->send_header("",$options);
      $formatter->send_title($title,"",$options);
      $formatter->send_page("== "._("Goto UserPreferences")." ==\n");
      $formatter->send_footer();
  
      return;
    }
  
    $udb=new UserDB($DBInfo);
    $userinfo=$udb->getUser($options['id']);
    if (isset($options['scrapped_pages'])) {
      $pages=preg_replace("/\n\s*/","\n",$options['scrapped_pages']);
      $pages=preg_replace("/\s*\n/","\n",$pages);
      $pages=explode("\n",$pages);
      $pages=array_unique ($pages);
      $page_list=join("\t",$pages);
      $userinfo->info['scrapped_pages']=$page_list;
      $udb->saveUser($userinfo);
  
      $title = _("Scrap lists updated.");
      $formatter->send_header("",$options);
      $formatter->send_title($title,"",$options);
      $formatter->send_page("Goto [$options[page]]\n");
      $formatter->send_footer();
      return;
    }
  
    $pages=explode("\t",$userinfo->info['scrapped_pages']);
    if (!in_array($options['page'],$pages)) $pages[]=$options['page'];
    $page_lists=join("\n",$pages);
  
    $title = sprintf(_("Do you want to scrap \"%s\" ?"), $options['page']);
    $formatter->send_header("",$options);
    $formatter->send_title($title,"",$options);
    print "<form method='post'>
  <table border='0'><tr>
  <th>Scrap pages:</th><td><textarea name='scrapped_pages' cols='30' rows='5' value='' />$page_lists</textarea></td></tr>
  <tr><td></td><td>
      <input type='hidden' name='action' value='scrap' />
      <input type='submit' value='Scrap' />
  </td></tr>
  </table>
      </form>";
    $formatter->send_footer("",$options);
  }
  
  // vim:et:sts=4
  ?>
  
  
  


wkpark      2005/04/12 22:59:08

  Modified:    plugin   Test.php
  Log:
  minor update
  
  Revision  Changes    Path
  1.3       +10 -11    moniwiki/plugin/Test.php
  
  Index: Test.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Test.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Test.php	15 Aug 2003 21:30:36 -0000	1.2
  +++ Test.php	12 Apr 2005 13:59:08 -0000	1.3
  @@ -1,25 +1,24 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a sample plugin for the MoniWiki
   //
   // Usage: [[Test]]
   //
  -// $Id: Test.php,v 1.2 2003/08/15 21:30:36 wkpark Exp $
  -// vim:et:ts=2:
  +// $Id: Test.php,v 1.3 2005/04/12 13:59:08 wkpark Exp $
   
   function macro_Test($formatter,$value) {
  -  return "HelloWorld !\n";
  -
  +    return "HelloWorld !\n";
   }
   
   function do_test($formatter,$options) {
  -  $formatter->send_header();
  -  $formatter->send_title();
  -  $ret= macro_Test($formatter,$options[value]);
  -  $formatter->send_page($ret);
  -  $formatter->send_footer("",$options);
  -  return;
  +    $formatter->send_header();
  +    $formatter->send_title();
  +    $ret= macro_Test($formatter,$options[value]);
  +    $formatter->send_page($ret);
  +    $formatter->send_footer("",$options);
  +    return;
   }
   
  +// vim:et:sts=4:
   ?>
  
  
  


wkpark      2005/04/12 23:20:53

  Modified:    plugin   UploadFile.php
  Added:       plugin   UploadForm.php
  Log:
  a gmail style UploadForm macro added: use [[UploadForm]] or [[UploadFile(js)]]
  
  Revision  Changes    Path
  1.20      +4 -1      moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- UploadFile.php	3 Apr 2005 06:27:07 -0000	1.19
  +++ UploadFile.php	12 Apr 2005 14:20:53 -0000	1.20
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.19 2005/04/03 06:27:07 wkpark Exp $
  +// $Id: UploadFile.php,v 1.20 2005/04/12 14:20:53 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -200,6 +200,9 @@
   }
   
   function macro_UploadFile($formatter,$value='',$options='') {
  +  if ($value=='js') {
  +    return $formatter->macro_repl('UploadForm');
  +  }
     $use_multi=1;
     $multiform='';
     if ($options['rename'] and !is_array($options['rename'])) {
  
  
  
  1.1                  moniwiki/plugin/UploadForm.php
  
  Index: UploadForm.php
  ===================================================================
  <?php
  // Copyright 2005 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a UploadForm plugin for the MoniWiki
  //
  // Usage: [[UploadForm]]
  //
  // $Id: UploadForm.php,v 1.1 2005/04/12 14:20:53 wkpark Exp $
  
  function macro_UploadForm($formatter,$value) {
      global $DBInfo;
      static $id=1;
  
      if ($id==1)
         $script=<<<EOF
  <script type="text/javascript">
  <!--
  function addRow(id) {
      var fform = document.getElementById(id);
      var lastRow = fform.rows.length;
      var row = fform.insertRow(lastRow);
  
      var cell = row.insertCell(0);
      var span = document.createElement('span');
      var rmbtn = document.createElement('input');
      var newInput = document.createElement('input');
      newInput.setAttribute('type', 'file');
      newInput.setAttribute('name', 'upfile[]');
      newInput.setAttribute('size', '50');
  
      rmbtn.setAttribute('type','button');
      rmbtn.setAttribute('value','remove');
      rmbtn.setAttribute('onclick',"delRow(this)");
      rmbtn.onclick=Function("delRow(this)"); // for IE
  
      span.appendChild(newInput);
      span.appendChild(rmbtn);
      cell.appendChild(span);
  }
  
  function delRow(obj) {
      obj.parentNode.parentNode.parentNode.removeChild(obj.parentNode.parentNode);
  }
  
  //-->
  </script>
  EOF;
      $url=$formatter->link_url($formatter->page->urlname);
      $form=<<<EOS
    <form target='_blank' method="post" action="$url" enctype="multipart/form-data">
    <input type='hidden' name='action' value='UploadFile' />
  EOS;
      $icon=$DBInfo->icon['attach'];
      $multiform=<<<EOF
    <table border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td valign='top' rowspan='2'>
          <span onclick="addRow('upload$id')"  title="add files" alt="add files">$icon</span>
        </td>
        <td>
          <table cellspacing="0" cellpadding="0" border="0">
            <tbody id="upload$id" border="0">
              <tr border="0">
                <td></td>
              </tr>
            </tbody>
          </table>
        </td>
      </tr>
      <tr>
        <td>
    <input type='button' onclick="addRow('upload$id')" value="add a file" />
    <input type="submit" name="upload" value="Upload files" />
    <input type="reset" name="reset" value="Reset" />
        </td>
      </tr>
    </table>
    </form>
  EOF;
  
      if (!in_array('UploadedFiles',$formatter->actions))
          $formatter->actions[]='UploadedFiles';
      $id++;
      return $script.$form.$multiform;
  }
  
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2005/04/12 23:39:15

  Modified:    plugin   LikePages.php
  Log:
  fix '$similar_re' bug
  
  Revision  Changes    Path
  1.5       +6 -6      moniwiki/plugin/LikePages.php
  
  Index: LikePages.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/LikePages.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- LikePages.php	21 Oct 2004 08:27:01 -0000	1.4
  +++ LikePages.php	12 Apr 2005 14:39:15 -0000	1.5
  @@ -4,7 +4,7 @@
   // a LikePages plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: LikePages.php,v 1.4 2004/10/21 08:27:01 wkpark Exp $
  +// $Id: LikePages.php,v 1.5 2005/04/12 14:39:15 wkpark Exp $
   
   function do_LikePages($formatter,$options) {
   
  @@ -37,7 +37,7 @@
   
     $count=preg_match("/(".$s_re.")/",$pname,$match);
     if ($count) {
  -    $start=$match[1];
  +    $start=trim($match[1]);
       $s_len=strlen($start);
     }
     $count=preg_match("/(".$e_re.")/",$pname,$match);
  @@ -49,7 +49,7 @@
     if (!$start && !$end) {
       preg_match("/^(.{2,4})/",$args,$match);
       $s_len=strlen($match[1]);
  -    $start=_preg_escape($match[1]);
  +    $start=trim(_preg_escape($match[1]));
     }
   
     if (!$end) {
  @@ -72,7 +72,6 @@
       else $needle="$start|$end";
       $pages = $DBInfo->metadb->getLikePages($needle);
     }
  -  
     if ($start) {
       foreach ($pages as $page) {
         preg_match("/^$start/",$page,$matches);
  @@ -90,8 +89,9 @@
     }
   
     if ($start || $end) {
  -    if (!$end) $similar_re=$start;
  -    else $similar_re="$start|$end";
  +    if ($start and $end) $similar_re="$start|$end";
  +    else if ($start) $similar_re=$start;
  +    else $similar_re=$end;
   
       foreach ($pages as $page) {
         preg_match("/($similar_re)/i",$page,$matches);
  
  
  


wkpark      2005/04/13 01:40:58

  Modified:    data     wiki_indexer.pl
  Log:
  utf-8 support added by ai
  some minor fixes: "utf8" is default charset now.
  
  Revision  Changes    Path
  1.3       +50 -30    moniwiki/data/wiki_indexer.pl
  
  Index: wiki_indexer.pl
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/data/wiki_indexer.pl,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- wiki_indexer.pl	11 Aug 2003 05:18:05 -0000	1.2
  +++ wiki_indexer.pl	12 Apr 2005 16:40:58 -0000	1.3
  @@ -2,9 +2,21 @@
   # from http://www.heddley.com/edd/php/search.html
   # slightly modified to adopt to the MoniWiki 2003/07/19 by wkpark
   # Public Domain
  -# $Id: wiki_indexer.pl,v 1.2 2003/08/11 05:18:05 wkpark Exp $
  +# $Id: wiki_indexer.pl,v 1.3 2005/04/12 16:40:58 wkpark Exp $
  +
  +require 5.8.0;
  +
  +#$charset="euc-kr";
  +$charset="utf8";
  +###########################################################################
  +if ($charset eq "utf8") {
  +  use encoding "utf8";
  +  #$delim=' \t\n,:"\'~`!@#\$%\^&\*\(\)\-_\+=\[\]:;<>,\.\?\/';
  +  $delim='\p{IsPunct}\p{IsSpace}';
  +} else {
  +  $delim='\t\n\s[:blank:][:punct:][:space:]';
  +}
   
  -require 5;
   use DB_File;    # Access DB databases
   use Fcntl;      # Needed for above...
   use File::Find; # Directory searching
  @@ -28,22 +40,28 @@
   sub IndexFile {
       if(!-f) { return; }
   
  -    if(/,v$/) { return; }
  +    #if(/,v$/) { return; }
  +    if(substr($_,-2) eq ',v') { return; }
       { # for WikiPages
  -	print "$File::Find::name\n";
  -	open(TXT_FILE,$_) || die "Can't open $_: $!";
  -	my($text) = <TXT_FILE>; # Read entire file
  -	# Index all the words under the current key
  -	my($wordsIndexed) = &IndexWords($text,$currentKey);
  -	# Map key to this filename
  -	$indexdb{"!?" . pack("n",$currentKey)} = $_;
  -	$currentKey++; if ($currentKey % 256 ==0) { $currentKey++; }
  -
  -	$fileCount++;
  -	if($fileCount > 500) {
  -	    &FlushWordCache();
  -	    $fileCount=0;
  -	}
  +        print "$File::Find::name\n";
  +        if ($charset eq "utf8") {
  +            open(TXT_FILE,"<:utf8",$_) || die "Can't open $_: $!";
  +        } else {
  +            open(TXT_FILE,$_) || die "Can't open $_: $!";
  +        }
  +        my($text) = <TXT_FILE>; # Read entire file
  +        $text=~ s/([a-z0-9]+)([A-Z])/\\1 \\2/g;
  +        # Index all the words under the current key
  +        my($wordsIndexed) = &IndexWords($text,$currentKey);
  +        # Map key to this filename
  +        $indexdb{"!?" . pack("n",$currentKey)} = $_;
  +        $currentKey++; if ($currentKey % 256 ==0) { $currentKey++; }
  +
  +        $fileCount++;
  +        if($fileCount > 500) {
  +            &FlushWordCache();
  +            $fileCount=0;
  +        }
       }
   }
   
  @@ -53,17 +71,18 @@
       my($words, $fileKey) = @_;
       my(%worduniq); # for unique-ifying word list
       # Split text into Array of words
  -    my(@words) = split(/[^a-zA-Z0-9\xa0-\xff\+\/\_]+/, lc $words);
  +    my(@words) = split(/[$delim]+/, lc $words);
       @words = grep { $worduniq{$_}++ == 0 } # Remove duplicates
  -	     grep { s/^[^a-zA-Z0-9\xa0-\xff]+//; $_ } # Strip leading punct
  +             grep { s/^[$delim]+//; $_ } # Strip leading punct
                grep { length > 1 } # Must be longer than one character
  -             grep { /[a-zA-Z0-9\xa0-\xff]/ } # must have an alphanumeric
  +             grep { /[^$delim]/ } # must have an alphanumeric
                @words;
   
       # For each word, add key to word database
       foreach (sort @words) {
  -	my($a) = $wordcache{$_};
  -	$a .= pack "n",$fileKey;
  +        #print $_."\n";
  +        my($a) = $wordcache{$_};
  +        $a .= pack "n",$fileKey;
           $wordcache{$_} = $a;
       }
   
  @@ -78,15 +97,15 @@
       my($word,$entry);
       # Do merge in sorted order to improve cache response of on-disk DB
       foreach $word (sort keys %wordcache) {
  -	$entry = $wordcache{$word};
  -	if(defined $indexdb{$word}) {
  -	    my($codedList);
  -	    $codedList = $indexdb{$word};
  -	    $entry = &MergeLists($codedList,$entry);
  -	}
  +        $entry = $wordcache{$word};
  +        if(defined $indexdb{$word}) {
  +            my($codedList);
  +            $codedList = $indexdb{$word};
  +            $entry = &MergeLists($codedList,$entry);
  +        }
   
  -	# Store merged list into database
  -	$indexdb{$word} = $entry;
  +        # Store merged list into database
  +        $indexdb{$word} = $entry;
       }
       %wordcache = (); # Empty the holding queue
   }
  @@ -107,3 +126,4 @@
   }
   
   ###########################################################################
  +# vim:et:sts=4
  
  
  


wkpark      2005/04/13 01:42:34

  Modified:    .        wikilib.php
  Log:
  fix the User class to support scrap info
  
  Revision  Changes    Path
  1.141     +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.140
  retrieving revision 1.141
  diff -u -r1.140 -r1.141
  --- wikilib.php	9 Apr 2005 06:40:08 -0000	1.140
  +++ wikilib.php	12 Apr 2005 16:42:34 -0000	1.141
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.140 2005/04/09 06:40:08 wkpark Exp $
  +// $Id: wikilib.php,v 1.141 2005/04/12 16:42:34 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -255,7 +255,7 @@
     function saveUser($user) {
       $config=array("css_url","datatime_fmt","email","bookmark","language",
                     "name","password","wikiname_add_spaces","subscribed_pages",
  -                  "quicklinks","theme","ticket","eticket");
  +                  "scrapped_pages","quicklinks","theme","ticket","eticket");
   
       $date=date('Y/m/d', time());
       $data="# Data saved $date\n";
  
  
  


wkpark      2005/04/13 01:44:00

  Modified:    .        wiki.php
  Log:
  PR #300827: filter processor feature added.
  
  Revision  Changes    Path
  1.216     +56 -6     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.215
  retrieving revision 1.216
  diff -u -r1.215 -r1.216
  --- wiki.php	8 Apr 2005 04:33:12 -0000	1.215
  +++ wiki.php	12 Apr 2005 16:44:00 -0000	1.216
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.215 2005/04/08 04:33:12 wkpark Exp $
  +// $Id: wiki.php,v 1.216 2005/04/12 16:44:00 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.215 $',1,-1);
  +$_revision = substr('$Revision: 1.216 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -79,6 +79,31 @@
     return $processors[strtolower($pro_name)];
   }
   
  +function getFilter($filtername) {
  +  static $filters=array();
  +  if ($filters) return $filters[strtolower($filtername)];
  +  global $DBInfo;
  +  if ($DBInfo->include_path)
  +    $dirs=explode(':',$DBInfo->include_path);
  +  else
  +    $dirs=array('.');
  +
  +  foreach ($dirs as $dir) {
  +    $handle= @opendir($dir.'/plugin/filter');
  +    if (!$handle) continue;
  +    while ($file= readdir($handle)) {
  +      if (is_dir($dir."/plugin/filter/$file")) continue;
  +      $name= substr($file,0,-4);
  +      $filters[strtolower($name)]= $name;
  +    }
  +  }
  +
  +  if (is_array($DBInfo->filters))
  +    $filters=array_merge($filters,$DBInfo->filters);
  +
  +  return $filters[strtolower($filtername)];
  +}
  +
   if (!function_exists ('bindtextdomain')) {
     $locale = array();
   
  @@ -1476,7 +1501,7 @@
     function get_instructions(&$body) {
       global $DBInfo;
       $pikeys=array('#redirect','#action','#title','#keywords','#noindex',
  -      '#twinpages','#notwins');
  +      '#filter','#twinpages','#notwins');
       $pi=array();
       if (!$body) {
         if (!$this->page->exists()) return '';
  @@ -1524,6 +1549,7 @@
         }
         #
         if ($pi['#notwins']) $pi['#twinpages']=0;
  +      if ($pi['#nofilter']) unset($pi['#filter']);
       }
   
       if ($format) {
  @@ -1769,6 +1795,7 @@
       global $DBInfo;
       $nonexists='nonexists_'.$DBInfo->nonexists;
       if ($word[0]=='"') { # ["extended wiki name"]
  +      $extended=1;
         $page=substr($word,1,-1);
         $word=$page;
       } else
  @@ -1791,12 +1818,11 @@
       $url=_urlencode($page);
       $url_only=strtok($url,'#?'); # for [WikiName#tag] [wiki:WikiName#tag Tag]
       #$query= substr($url,strlen($url_only));
  -    $page=urldecode($url_only);
  +    if ($extended) $page=rawurldecode($url_only); # C++
  +    else $page=urldecode($url_only);
       $url=$this->link_url($url);
   
       //$url=$this->link_url(_rawurlencode($page)); # XXX
  -    //$page=urldecode($page); # XXX
  -    //$page=rawurldecode($page); # C++
       if (isset($this->pagelinks[$page])) {
         $idx=$this->pagelinks[$page];
         switch($idx) {
  @@ -1985,6 +2011,16 @@
       return call_user_func("processor_$processor",$this,$value,$options);
     }
   
  +  function filter_repl($filter,$value,$options='') {
  +    if (!function_exists('filter_'.$filter)) {
  +      $ff=getFilter($filter);
  +      if (!$ff) return $value;
  +      include_once("plugin/filter/$ff.php");
  +      #$filter=$ff;
  +    }
  +    return call_user_func("filter_$filter",$this,$value,$options);
  +  }
  +
     function smiley_repl($smiley) {
       global $DBInfo;
   
  @@ -2146,6 +2182,12 @@
   
       if ($body) {
         $pi=$this->get_instructions($body);
  +      if ($pi['#filter']) {
  +        $fts=preg_split('/(\||,)/',$pi['#filter']);
  +        foreach ($fts as $ft) {
  +          $body=$this->filter_repl($ft,$body,$options);
  +        }
  +      }
         if ($pi['#format']) {
           if ($pi['args']) $pi_line="#!".$pi['#format']." $pi[args]\n";
           print call_user_func("processor_".$pi['#format'],$this,
  @@ -2157,6 +2199,14 @@
         #$pi=$this->get_instructions(&$body);
         $pi=$this->get_instructions($dum);
         $body=$this->page->get_raw_body($options);
  +
  +      if ($pi['#filter']) {
  +        $fts=preg_split('/(\||,)/',$pi['#filter']);
  +        foreach ($fts as $ft) {
  +          $body=$this->filter_repl($ft,$body,$options);
  +        }
  +      }
  +
         $this->pi=$pi;
         if ($pi['#format']) {
           if ($pi['args']) $pi_line="#!".$pi['#format']." $pi[args]\n";
  
  
  


wkpark      2005/04/13 15:04:47

  Modified:    .        wiki.php
  Log:
  fixed PR #300839: indentation bugs are fixed in the send_page()
  
  Revision  Changes    Path
  1.217     +10 -4     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.216
  retrieving revision 1.217
  diff -u -r1.216 -r1.217
  --- wiki.php	12 Apr 2005 16:44:00 -0000	1.216
  +++ wiki.php	13 Apr 2005 06:04:47 -0000	1.217
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.216 2005/04/12 16:44:00 wkpark Exp $
  +// $Id: wiki.php,v 1.217 2005/04/13 06:04:47 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.216 $',1,-1);
  +$_revision = substr('$Revision: 1.217 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -2261,7 +2261,12 @@
         # empty line
         if (!strlen($line)) {
           if ($in_pre) { $this->pre_line.="\n";continue;}
  -        if ($in_li) { $text.=$this->_purple()."<br />\n";$li_empty=1; continue;}
  +        if ($in_li) {
  +          $text.=$this->_purple()."<br />\n";
  +          if ($li_empty==0) $text.="<br />\n";
  +          $li_empty=1;
  +          continue;
  +        }
           if ($in_table) {
             $text.=$this->_table(0)."<br />\n";$in_table=0; continue;
           } else {
  @@ -2408,8 +2413,9 @@
                  unset($indent_type[$in_li]);
                  $in_li--;
               }
  -            $li_empty=0;
  +            #$li_empty=0;
            }
  +         $li_empty=0;
            if ($indent_list[$in_li] <= $indlen || $limatch) $li_open=$in_li;
            else $li_open=0;
         }
  
  
  


wkpark      2005/04/13 15:29:36

  Modified:    plugin/processor blog.php
  Log:
  fixed #300834: hide ip address. patched by hhyoon
  
  Revision  Changes    Path
  1.20      +3 -2      moniwiki/plugin/processor/blog.php
  
  Index: blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/blog.php,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- blog.php	21 Sep 2004 15:48:44 -0000	1.19
  +++ blog.php	13 Apr 2005 06:29:36 -0000	1.20
  @@ -7,7 +7,7 @@
   // Hello World
   // }}}
   // this processor is used internally by the Blog action
  -// $Id: blog.php,v 1.19 2004/09/21 15:48:44 wkpark Exp $
  +// $Id: blog.php,v 1.20 2005/04/13 06:29:36 wkpark Exp $
   
   function processor_blog($formatter,$value="",$options) {
     static $date_anchor='';
  @@ -40,7 +40,8 @@
   
       if (preg_match('/^[\d\.]+$/',$user)) {
         if ($DBInfo->interwiki['Whois'])
  -        $user=_("Anonymous")."[<a href='".$DBInfo->interwiki['Whois']."$user'>$user</a>]";
  +        #$user=_("Anonymous")."[<a href='".$DBInfo->interwiki['Whois']."$user'>$user</a>]";
  +        $user="<a href='".$DBInfo->interwiki['Whois']."$user'>"._("Anonymous")."</a>";
         else
           $user=_("Anonymous");
       } else if ($DBInfo->hasPage($user)) {
  
  
  


wkpark      2005/04/13 15:45:16

  Modified:    plugin   Blog.php
  Log:
  fixed PR #300835: use @SIG@ reported by hhyoon
  sync the form of the Blog macro with the blog action form
  
  Revision  Changes    Path
  1.26      +15 -3     moniwiki/plugin/Blog.php
  
  Index: Blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Blog.php,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- Blog.php	14 Jan 2005 08:25:54 -0000	1.25
  +++ Blog.php	13 Apr 2005 06:45:16 -0000	1.26
  @@ -5,7 +5,7 @@
   //
   // Usage: ?action=Blog
   //
  -// $Id: Blog.php,v 1.25 2005/01/14 08:25:54 wkpark Exp $
  +// $Id: Blog.php,v 1.26 2005/04/13 06:45:16 wkpark Exp $
   
   function updateBlogList($formatter) {
     global $DBInfo;
  @@ -91,6 +91,7 @@
       $savetext=_stripslashes($options['savetext']);
       $savetext=str_replace("\r","",$savetext);
       $savetext=str_replace("----\n","-''''''---\n",$savetext);
  +    $savetext=rtrim($savetext);
       #$savetext=str_replace("<","&lt;",$savetext);
     }
   
  @@ -148,7 +149,7 @@
           if ($options['nosig'])
             $lines[$i]="----\n$savetext\n$endtag";
           else
  -          $lines[$i]="----\n$savetext -- $id @DATE@\n$endtag";
  +          $lines[$i]="----\n$savetext @SIG@\n$endtag";
           $raw_body=join("\n",$lines);
         } else {
           $formatter->send_title(_("Error: No blog entry found!"),"",$options);
  @@ -278,8 +279,18 @@
     $url=$formatter->link_url($formatter->page->urlname);
     $datestamp= $formatter->page->mtime();
   
  +  if (!$options['id']) {
  +    $user=new User(); # get from COOKIE VARS
  +    $options['id']=$user->id;
  +  }
  +  if ($options['id'] != 'Anonymous')
  +    $extra='<div style="text-align:right">'.'
  +      <input type="submit" name="button_refresh" value="Refresh" /></div>';
  +
     $form = "<form method='post' action='$url'>\n";
  -  $form.= "<b>Title</b>: <input name='title' size='70' maxlength='70' style='width:200' /><br />\n";
  +  if ($options['id'] == 'Anonymous')
  +    $form.='<b>'._("Name")."</b>: <input name='name' size='15' maxlength='15' value='$options[name]' />\n";
  +  $form.= '<b>'._("Title")."</b>: <input name='title' size='70' maxlength='70' style='width:200' /><br />\n";
     $form.= <<<FORM
   <textarea class="wiki" id="content" wrap="virtual" name="savetext"
    rows="$rows" cols="$cols" class="wiki"></textarea><br />
  @@ -289,6 +300,7 @@
   <input type="hidden" name="datestamp" value="$datestamp" />
   <input type="submit" value="Save" />&nbsp;
   <input type="submit" name="button_preview" value="Preview" />
  +$extra
   </form>
   FORM2;
   
  
  
  


wkpark      2005/04/14 11:01:20

  Modified:    plugin   RecentChanges.php
  Log:
  minor changes
  
  Revision  Changes    Path
  1.12      +7 -5      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- RecentChanges.php	16 Nov 2004 13:33:30 -0000	1.11
  +++ RecentChanges.php	14 Apr 2005 02:01:20 -0000	1.12
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.11 2004/11/16 13:33:30 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.12 2005/04/14 02:01:20 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     $options['trail']='';
  @@ -90,7 +90,7 @@
     $time_cutoff= $time_current - ($days_to_show * $secs_per_day);
   
     foreach ($lines as $line) {
  -    $parts= explode("\t", $line,3);
  +    $parts= explode("\t", $line,6);
       $page_key= $parts[0];
       $ed_time= $parts[2];
   
  @@ -103,12 +103,14 @@
       if ($editcount[$page_key]) {
         if ($logs[$page_key]) {
           $editcount[$page_key]++;
  +        #$editors[$page_key].=':'.$parts[4];
           continue;
         }
         continue;
       }
       $editcount[$page_key]= 1;
       $logs[$page_key]= 1;
  +    #$editors[$page_key]= $parts[4];
     }
     unset($logs);
   
  @@ -164,9 +166,9 @@
       $pageurl=_rawurlencode($page_name);
   
       if (!$DBInfo->hasPage($page_name))
  -      $icon= $formatter->link_tag($pageurl,"?action=diff",$formatter->icon[del]);
  +      $icon= $formatter->link_tag($pageurl,"?action=diff",$formatter->icon['del']);
       else if ($ed_time > $bookmark) {
  -      $icon= $formatter->link_tag($pageurl,"?action=diff&amp;date=$bookmark",$formatter->icon[updated]);
  +      $icon= $formatter->link_tag($pageurl,"?action=diff&amp;date=$bookmark",$formatter->icon['updated']);
         if ($checknew) {
           $p= new WikiPage($page_name);
           $v= $p->get_rev($bookmark);
  @@ -175,7 +177,7 @@
               $formatter->link_tag($pageurl,"?action=info",$formatter->icon['new']);
         }
       } else
  -      $icon= $formatter->link_tag($pageurl,"?action=diff",$formatter->icon[diff]);
  +      $icon= $formatter->link_tag($pageurl,"?action=diff",$formatter->icon['diff']);
   
       #$title= preg_replace("/((?<=[a-z0-9])[A-Z][a-z0-9])/"," \\1",$page_name);
       $title= get_title($title).$group;
  
  
  


wkpark      2005/04/14 11:02:19

  Modified:    plugin   Comment.php
  Log:
  add 'editform' name tag
  
  Revision  Changes    Path
  1.11      +2 -2      moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- Comment.php	3 Apr 2005 06:24:24 -0000	1.10
  +++ Comment.php	14 Apr 2005 02:02:19 -0000	1.11
  @@ -6,7 +6,7 @@
   // Usage: [[Comment]], ?action=comment
   //
   //
  -// $Id: Comment.php,v 1.10 2005/04/03 06:24:24 wkpark Exp $
  +// $Id: Comment.php,v 1.11 2005/04/14 02:02:19 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $HTTP_USER_AGENT;
  @@ -37,7 +37,7 @@
   
     $url=$formatter->link_url($formatter->page->urlname);
   
  -  $form = "<form method='post' action='$url'>\n";
  +  $form = "<form name='editform' method='post' action='$url'>\n";
     $form.= <<<FORM
   <textarea class="wiki" id="content" name="savetext"
    rows="$rows" cols="$cols">$savetext</textarea><br />
  
  
  


wkpark      2005/04/14 11:03:07

  Modified:    plugin   SmileyChooser.php
  Log:
  import js from the wikibits.js
  
  Revision  Changes    Path
  1.4       +36 -7     moniwiki/plugin/SmileyChooser.php
  
  Index: SmileyChooser.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SmileyChooser.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- SmileyChooser.php	31 Dec 2003 02:37:34 -0000	1.3
  +++ SmileyChooser.php	14 Apr 2005 02:03:07 -0000	1.4
  @@ -2,25 +2,53 @@
   // Copyright 2003 by iolo
   // All rights reserved. Distributable under GPL see COPYING
   // a SmileyChooser macro plugin for the MoniWiki
  -// vim:et:ts=2:
   //
   // Usage: [[SmileyChooser]]
   //
  -// $Id: SmileyChooser.php,v 1.3 2003/12/31 02:37:34 iolo Exp $
  +// $Id: SmileyChooser.php,v 1.4 2005/04/14 02:03:07 wkpark Exp $
   
   function macro_SmileyChooser($formatter,$value) {
     global $DBInfo;
   
     if (!$DBInfo->use_smileys) return '';
  +  $form=$value ? $value:'editform';
   
     $chooser=<<<EOS
   <script language="javascript" type="text/javascript">
   <!--
  -function append_smiley(smiley)
  +// from wikibits.js
  +function appendText(myText)
   {
  -  var textarea = document.editform.savetext;
  -  textarea.value += smiley + " "; 
  -  textarea.focus();
  +  var txtarea = document.$form.savetext;
  +  if(document.selection && document.all) {
  +    var theSelection = document.selection.createRange().text;
  +    txtarea.focus();
  +    if(theSelection.charAt(theSelection.length - 1) == " "){
  +      // exclude ending space char, if any
  +      theSelection = theSelection.substring(0, theSelection.length - 1);
  +      document.selection.createRange().text = theSelection + myText + " ";
  +    } else {
  +      document.selection.createRange().text = theSelection + myText + " ";
  +    }
  +  }
  +  // Mozilla
  +  else if(txtarea.selectionStart || txtarea.selectionStart == '0') {
  +    var startPos = txtarea.selectionStart;
  +    var endPos = txtarea.selectionEnd;
  +    var scrollTop=txtarea.scrollTop;
  +    txtarea.value = txtarea.value.substring(0, startPos) + myText + " " +
  +      txtarea.value.substring(endPos, txtarea.value.length);
  +    txtarea.focus();
  +
  +    var cPos=startPos+(myText.length+1);
  +
  +    txtarea.selectionStart=cPos;
  +    txtarea.selectionEnd=cPos;
  +    txtarea.scrollTop=scrollTop;
  +  } else { // All others
  +    txtarea.value += myText + " "; 
  +    txtarea.focus();
  +  }
   }
   //-->
   </script>
  @@ -31,7 +59,7 @@
     while (list($key,$value) = each($DBInfo->smileys)) {
       if ($last_img != $value[3]) {
         $skey=str_replace("\\","\\\\",$key);
  -      $chooser.= "<a href='#' onclick='append_smiley(\"$skey\");return false;'>".$formatter->smiley_repl($key)."</a>";
  +      $chooser.= "<span onclick='appendText(\"$skey\")'>".$formatter->smiley_repl($key)."</span>";
         $last_img = $value[3];
         $idx++;
       }
  @@ -40,4 +68,5 @@
     return $chooser;
   }
   
  +// vim:et:sts=2:
   ?>
  
  
  


wkpark      2005/04/14 11:03:40

  Modified:    plugin   UploadForm.php
  Log:
  xhtml fix
  
  Revision  Changes    Path
  1.2       +4 -4      moniwiki/plugin/UploadForm.php
  
  Index: UploadForm.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadForm.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- UploadForm.php	12 Apr 2005 14:20:53 -0000	1.1
  +++ UploadForm.php	14 Apr 2005 02:03:40 -0000	1.2
  @@ -5,7 +5,7 @@
   //
   // Usage: [[UploadForm]]
   //
  -// $Id: UploadForm.php,v 1.1 2005/04/12 14:20:53 wkpark Exp $
  +// $Id: UploadForm.php,v 1.2 2005/04/14 02:03:40 wkpark Exp $
   
   function macro_UploadForm($formatter,$value) {
       global $DBInfo;
  @@ -55,12 +55,12 @@
     <table border="0" cellspacing="0" cellpadding="0">
       <tr>
         <td valign='top' rowspan='2'>
  -        <span onclick="addRow('upload$id')"  title="add files" alt="add files">$icon</span>
  +        <span onclick="addRow('upload$id')" title="add files">$icon</span>
         </td>
         <td>
           <table cellspacing="0" cellpadding="0" border="0">
  -          <tbody id="upload$id" border="0">
  -            <tr border="0">
  +          <tbody id="upload$id">
  +            <tr>
                 <td></td>
               </tr>
             </tbody>
  
  
  


wkpark      2005/04/14 11:06:42

  Modified:    plugin   ISBN.php
  Log:
  fix regex
  
  Revision  Changes    Path
  1.4       +2 -2      moniwiki/plugin/ISBN.php
  
  Index: ISBN.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/ISBN.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ISBN.php	3 Apr 2005 07:07:00 -0000	1.3
  +++ ISBN.php	14 Apr 2005 02:06:42 -0000	1.4
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a ISBN macro plugin for the MoniWiki
   //
  -// $Id: ISBN.php,v 1.3 2005/04/03 07:07:00 wkpark Exp $
  +// $Id: ISBN.php,v 1.4 2005/04/14 02:06:42 wkpark Exp $
   
   function macro_ISBN($formatter="",$value="") {
     $ISBN_MAP="IsbnMap";
  @@ -13,7 +13,7 @@
   EOS;
   
     $DEFAULT_ISBN="Amazon";
  -  $re_isbn="/([0-9\-]{9,}[xX]?)(?:,)?(([A-Z][A-Za-z]*)?(?:,)?(.*))?/x";
  +  $re_isbn="/([0-9\-]+[xX]?)(?:,)?(([A-Z][A-Za-z]*)?(?:,)?(.*))?/x";
   
     $test=preg_match($re_isbn,$value,$match);
     if ($test === false)
  
  
  


wkpark      2005/04/14 11:26:52

  Modified:    .        wiki.php
  Log:
  fixed PR #300836: reported by hhyoon
  fixed rendering bug with the table syntax
  right aligning is supported now (as PmWiki)
  more cleanup
  
  Revision  Changes    Path
  1.218     +46 -33    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.217
  retrieving revision 1.218
  diff -u -r1.217 -r1.218
  --- wiki.php	13 Apr 2005 06:04:47 -0000	1.217
  +++ wiki.php	14 Apr 2005 02:26:52 -0000	1.218
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.217 2005/04/13 06:04:47 wkpark Exp $
  +// $Id: wiki.php,v 1.218 2005/04/14 02:26:52 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.217 $',1,-1);
  +$_revision = substr('$Revision: 1.218 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -2115,34 +2115,31 @@
       return '';
     }
   
  -  function _table_span($str,$align='') {
  -    $tok=strtok($str,'&');
  -    $len=strlen($tok)/2;
  -    $extra=strtok('');
  -    $attr=array();
  -    if ($extra) {
  -      $para=substr($extra,3,-1);
  -      # rowspan
  -      if (preg_match("/^\|(\d+)$/",$para,$match))
  -        $attr[]="rowspan='$match[1]'";
  -      else if ($para[0]=='#')
  -        $attr[]="bgcolor='$para'";
  -      else
  -        $attr[]=$para;
  -    }
  -    if ($align) $attr[]="align='center'";
  -    if ($len > 1)
  -      $attr[]="colspan='$len'"; #$attr[]="align='center' colspan='$len'";
  +  function _td_span($str,$align='') {
  +    $len=strlen($str)/2;
  +    if ($len==1) return '';
  +    $attr[]="colspan='$len'"; #$attr[]="align='center' colspan='$len'";
       return implode(' ',$attr);
     }
   
  +  function _td_attr($val) {
  +    if (!$val) return '';
  +    $para=substr($val,4,-1);
  +    # rowspan
  +    if (preg_match("/^\|(\d+)$/",$para,$match))
  +      $attr[]="rowspan='$match[1]'";
  +    else if ($para[0]=='#')
  +      $attr[]="bgcolor='$para'";
  +    else
  +      $attr[]=$para;
  +    return implode(' ',$attr).' ';
  +  }
  +
     function _table($on,$attr='') {
  -    if ($attr) {
  -      $attr=substr($attr,4,-1);
  -    }
  -    if ($on)
  -      return "<table class='wiki' cellpadding='3' cellspacing='2' $attr>\n";
  -    return "</table>\n";
  +    if (!$on) return "</table>\n";
  +    $attr=substr($attr,4,-1);
  +    if ($attr[0]=='#') $attr="bgcolor='$attr'";
  +    return "<table class='wiki' cellpadding='3' cellspacing='2' $attr>\n";
     }
   
     function _purple() {
  @@ -2421,19 +2418,35 @@
         }
   
         #if (!$in_pre && !$in_table && preg_match("/^\|\|.*\|\|$/",$line)) {
  -      if (!$in_pre && $line[0]=='|' && !$in_table && preg_match("/^((\|\|)+)(&lt;[^>]+>)?.*\|\|$/",$line,$match)) {
  -         $open.=$this->_table(1,$match[3]);
  -         $line=preg_replace('/^((\|\|)+)(&lt;[^>]+>)?/','\\1',$line);
  -         $in_table=1;
  +      if (!$in_pre && $line[0]=='|' && !$in_table && preg_match("/^((\|\|)+)(&lt;[^>\|]+>)?(.*)\|\|$/",$line,$match)) {
  +        $open.=$this->_table(1,$match[3]);
  +        if ($match[3]) $line=$match[1].$match[4].'||';
  +        $in_table=1;
         #} elseif ($in_table && !preg_match("/^\|\|.*\|\|$/",$line)){
         } elseif ($in_table && $line[0]!='|' && !preg_match("/^\|\|.*\|\|$/",$line)){
            $close=$this->_table(0).$close;
            $in_table=0;
         }
         if ($in_table) {
  -         $line=preg_replace('/^((?:\|\|)+(&lt;[^>]+>)?)((\s?)(.*))\|\|$/e',"'<tr class=\"wiki\"><td class=\"wiki\" '.\$this->_table_span('\\1','\\4').'>\\3</td></tr>'",$line);
  -         $line=preg_replace('/((\|\|)+(&lt;[^>]+>)?)(\s?)/e',"'</td><td class=\"wiki\" '.\$this->_table_span('\\1','\\4').'>\\4'",$line);
  -         $line=str_replace('\"','"',$line); # revert \\" to \"
  +        $line=substr($line,0,-2);
  +        $cells=preg_split('/((?:\|\|)+)/',$line,-1,
  +          PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE);
  +        $row='';
  +        for ($i=0,$s=sizeof($cells);$i<$s-1;$i+=2) {
  +          $align='';
  +          preg_match('/^((&lt;[^>]+>)?)(\s?)([\S\s]*\S)(\s*)?$/',
  +            $cells[$i+1],$m);
  +          #print_r($m);
  +          $cell=$m[3].$m[4].$m[5];
  +          if ($m[3] and $m[5]) $align='align="center"';
  +          else if (!$m[3]) $align='';
  +          else if (!$m[5]) $align='align="right"';
  +          $attr=$this->_td_attr($m[1]);
  +          $attr.=$this->_td_span($cells[$i]);
  +          $row.="<td class=\"wiki\" $attr$align>".$cell.'</td>';
  +        }
  +        $line='<tr class="wiki">'.$row.'</tr>';
  +        $line=str_replace('\"','"',$line); # revert \\" to \"
         }
   
         # InterWiki, WikiName, {{{ }}}, !WikiName, ?single, ["extended wiki name"]
  
  
  


wkpark      2005/04/14 11:37:54

  Modified:    .        wikilib.php
  Log:
  fix & add several attributes for xhtml compliance
  
  Revision  Changes    Path
  1.142     +5 -5      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.141
  retrieving revision 1.142
  diff -u -r1.141 -r1.142
  --- wikilib.php	12 Apr 2005 16:42:34 -0000	1.141
  +++ wikilib.php	14 Apr 2005 02:37:54 -0000	1.142
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.141 2005/04/12 16:42:34 wkpark Exp $
  +// $Id: wikilib.php,v 1.142 2005/04/14 02:37:54 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -633,7 +633,7 @@
     $summary_msg=_("Summary of Change");
     if ($DBInfo->use_resizer) {
       $form.=<<<EOS
  -<script language='javascript'>
  +<script type="text/javascript" language='javascript'>
   //<![CDATA[
   <!--
   function resize(obj,val) {
  @@ -646,8 +646,8 @@
   //-->
   //]]>
   </script>
  -<input type='button' value='+' onClick='resize(this.form,3)' />
  -<input type='button' value='-' onClick='resize(this.form,-3)' />
  +<input type='button' value='+' onclick='resize(this.form,3)' />
  +<input type='button' value='-' onclick='resize(this.form,-3)' />
   EOS;
     }
     $form.=<<<EOS
  @@ -665,7 +665,7 @@
   EOS;
     if (!$options['nohints'])
       $form.= macro_EditHints($formatter);
  -  $form.= "<a id='preview' name='preview' />";
  +  $form.= "<a id='preview' name='preview'></a>";
     return $form;
   }
   
  
  
  


wkpark      2005/04/14 18:54:18

  Modified:    .        monisetup.php
  Log:
  fixed PR #300844: fix to read multi line variables.
  
  Revision  Changes    Path
  1.22      +54 -16    moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- monisetup.php	1 Dec 2004 08:27:33 -0000	1.21
  +++ monisetup.php	14 Apr 2005 09:54:18 -0000	1.22
  @@ -1,7 +1,11 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org> all rights reserved.
  +// Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.21 2004/12/01 08:27:33 wkpark Exp $
  +// $Id: monisetup.php,v 1.22 2005/04/14 09:54:18 wkpark Exp $
  +
  +function _stripslashes($str) {
  +  return get_magic_quotes_gpc() ? stripslashes($str):$str;
  +}
   
   class MoniConfig {
     function MoniConfig($configfile="config.php") {
  @@ -107,15 +111,26 @@
   
     function _rawConfig($configfile) {
       $lines=file($configfile);
  +    $key='';
       foreach ($lines as $line) {
  -      if ($line[0] != '$') continue;
  -
  -      $d=explode("=",substr($line,1),2);
  +      if (!$key and $line[0] != '$') continue;
  +      if ($key) {
  +        $val.=$line;
  +        if (!preg_match('/\s*;$/',$line)) continue;
  +      } else {
  +        list($key,$val)=explode('=',substr($line,1),2);
  +        if (!preg_match('/\s*;$/',$val)) {
  +          if (substr($val,0,3)== '<<<') $tag=substr($val,3);
  +          continue;
  +        }
  +      }
   
  -      if ($d[0]) {
  -        $val=preg_replace("/\s*;$/","",trim($d[1]));
  -        $config[$d[0]]=$val;
  +      if ($key) {
  +        $val=preg_replace('/\s*;$/','',rtrim($val));
  +        $config[$key]=$val;
         }
  +      $key='';
  +      $tag='';
       }
       return $config;
     }
  @@ -123,7 +138,8 @@
     function _getFormConfig($config,$mode=0) {
       $conf=array();
       while (list($key,$val) = each($config)) {
  -      $val=stripslashes($val);
  +      $val=_stripslashes($val);
  +      $val=str_replace(array("\r\n","\r"),array("\n","\n"),$val);
         if (!isset($val)) $val="''";
         if (!$mode) {
           @eval("\$dum=$val;");
  @@ -142,7 +158,14 @@
       while (list($key,$val) = each($config)) {
         if ($key=='admin_passwd' or $key=='purge_passwd')
            $val="'".crypt($val,md5(time()))."'";
  -      $t=@eval("\$$key=$val;");
  +      if (preg_match("/^<<<([A-Za-z0-9]+)\s[^(\\1)]*\s\\1$/",$val,$m)) {
  +         $save_val=$val;
  +         $val=str_replace("$m[1]",'',substr($val,3));
  +         $val=preg_quote($val,'"');
  +         $t=@eval("\$$key=\"$val\";");
  +         $val=$save_val;
  +      } else
  +         $t=@eval("\$$key=$val;");
         if ($t === NULL)
           $lines[]="\$$key=$val;\n";
         else
  @@ -381,6 +404,13 @@
     border: 0px inset #E2ECE5;
   }
   
  +td.option {
  +  font-family:sans-serif;
  +  background-color:#000000;
  +  font-weight:bold;
  +  color: white;
  +}
  +
   //-->
   </style>
   </head>
  @@ -391,7 +421,7 @@
   
   if (file_exists("config.php") && !is_writable("config.php")) {
     print "<h2><font color='red'>'config.php' is not writable !!</font></h2>\n";
  -  print "Please change 'config.php' permission as 666 first to write settings<br />\n";
  +  print "Please execute 'monisetup.sh' first to change your settings.<br />\n";
   
     return;
   }
  @@ -535,7 +565,9 @@
     print "\n";
     while (list($key,$val) = each($config)) {
       if ($key != "admin_passwd" && $key != "purge_passwd")
  -    print "<tr><td>\$$key</td><td>$val</td></tr>\n";
  +    if (!preg_match('/<img /',$val))
  +      $val=str_replace('<','&lt;',$val);
  +    print "<tr><td class='option'>\$$key</td><td>$val</td></tr>\n";
     }
     print "</table>\n";
   
  @@ -547,12 +579,18 @@
       print "<h2>If you want to put wikiseeds on your wiki <a href='?action=seed'>Click here</a> now</h2>";
     }
     print "<form method='post' action=''>\n";
  -  print "<table align=center border=1 cellpadding=2 cellspacing=2>\n";
  +  print "<table align='center' border='0' cellpadding='2' cellspacing='2'>\n";
     while (list($key,$val) = each($rawconfig)) {
       if ($key != "admin_passwd") {
  -      $val=str_replace('"',"&#34;",$val);
  -      print "<tr><td>$$key</td>";
  -      print "<td><input name='config[$key]' value=\"$val\" size='30'></td></tr>\n";
  +      print "<tr><td class='option'>$$key</td>";
  +      if (strpos($val,"\n")) $type="textarea";
  +      else $type="input";
  +      if ($type=='input') {
  +        $val=str_replace('"',"&#34;",$val);
  +        print "<td><$type type='text' name='config[$key]' value=\"$val\" size='s40'></td></tr>\n";
  +      } else {
  +        print "<td><$type name='config[$key]' rows='4' cols='40'>".$val."</$type></td></tr>\n";
  +      }
       }
     }
   
  
  
  


wkpark      2005/04/14 18:55:59

  Modified:    .        monisetup.sh
  Log:
  change default permission 777 to 2777
  
  Revision  Changes    Path
  1.7       +3 -3      moniwiki/monisetup.sh
  
  Index: monisetup.sh
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.sh,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- monisetup.sh	26 Aug 2004 20:08:23 -0000	1.6
  +++ monisetup.sh	14 Apr 2005 09:55:59 -0000	1.7
  @@ -1,5 +1,5 @@
   #!/bin/bash
  -# $Id: monisetup.sh,v 1.6 2004/08/26 20:08:23 wkpark Exp $
  +# $Id: monisetup.sh,v 1.7 2005/04/14 09:55:59 wkpark Exp $
   
   echo
   echo "+-------------------------------------+"
  @@ -9,10 +9,10 @@
   
   RETVAL=1
   while [ ! $RETVAL -eq 0 ]; do
  -  echo -n " Please enter the permission 777 or 2777(default 777): "
  +  echo -n " Please enter the permission 777 or 2777(default 2777): "
     read PERM
     if [ x$PERM = x ]; then
  -    PERM=777
  +    PERM=2777
     fi
   
     if [ ! -f config.php ]; then
  
  
  


wkpark      2005/04/16 16:29:24

  Modified:    .        wikilib.php
  Log:
  fixed PR #300848,#300847 by hhyoon
  
  Revision  Changes    Path
  1.143     +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.142
  retrieving revision 1.143
  diff -u -r1.142 -r1.143
  --- wikilib.php	14 Apr 2005 02:37:54 -0000	1.142
  +++ wikilib.php	16 Apr 2005 07:29:24 -0000	1.143
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.142 2005/04/14 02:37:54 wkpark Exp $
  +// $Id: wikilib.php,v 1.143 2005/04/16 07:29:24 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -139,7 +139,7 @@
     }
   
     if (preg_match("/^wiki:/", $page)) { # wiki:
  -    $text=$page=substr($page,6);
  +    $text=$page=substr($page,5);
    
       if (strpos($page,' ')) { # have a space ?
         list($page,$text)= explode(' ',$page,2);
  
  
  


wkpark      2005/04/16 16:29:24

  Modified:    plugin   Navigation.php
  Log:
  fixed PR #300848,#300847 by hhyoon
  
  Revision  Changes    Path
  1.8       +2 -1      moniwiki/plugin/Navigation.php
  
  Index: Navigation.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Navigation.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Navigation.php	26 Mar 2005 12:28:38 -0000	1.7
  +++ Navigation.php	16 Apr 2005 07:29:24 -0000	1.8
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Navigation(IndexPage)]]
   //
  -// $Id: Navigation.php,v 1.7 2005/03/26 12:28:38 wkpark Exp $
  +// $Id: Navigation.php,v 1.8 2005/04/16 07:29:24 wkpark Exp $
   
   function macro_Navigation($formatter,$value) {
     global $DBInfo;
  @@ -67,6 +67,7 @@
       #print ':'.$formatter->page->name;
       if ($indices[$i]==$current) {
         if ($i > 0) $prev=$i-1;
  +      else $prev=$count - 1;
         if ($i < ($count - 1)) {
   	$next=$i+1;
         } else {
  
  
  


wkpark      2005/04/16 16:31:05

  Modified:    plugin   WantedPages.php
  Log:
  fixed PR #300842 by hhyoon
  
  Revision  Changes    Path
  1.3       +3 -1      moniwiki/plugin/WantedPages.php
  
  Index: WantedPages.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/WantedPages.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- WantedPages.php	14 Aug 2004 14:20:10 -0000	1.2
  +++ WantedPages.php	16 Apr 2005 07:31:05 -0000	1.3
  @@ -2,7 +2,7 @@
   // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a WantedPages macro plugin for the MoniWiki
  -// $Id: WantedPages.php,v 1.2 2004/08/14 14:20:10 wkpark Exp $
  +// $Id: WantedPages.php,v 1.3 2005/04/16 07:31:05 wkpark Exp $
   
   function macro_WantedPages($formatter="",$options="") {
     global $DBInfo;
  @@ -25,6 +25,8 @@
         }
       }
     }
  +  if (!count($wants)) return '';
  +
     asort($wants);
     $out="<ul>\n";
     while (list($name,$owns) = each($wants)) {
  
  
  


wkpark      2005/04/16 17:14:43

  Modified:    .        wiki.php
  Log:
  fixed 'li_empty' with $auto_linebreak reported by freefeel
  
  Revision  Changes    Path
  1.219     +6 -5      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.218
  retrieving revision 1.219
  diff -u -r1.218 -r1.219
  --- wiki.php	14 Apr 2005 02:26:52 -0000	1.218
  +++ wiki.php	16 Apr 2005 08:14:43 -0000	1.219
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.218 2005/04/14 02:26:52 wkpark Exp $
  +// $Id: wiki.php,v 1.219 2005/04/16 08:14:43 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.218 $',1,-1);
  +$_revision = substr('$Revision: 1.219 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -1349,6 +1349,7 @@
         $DBInfo->inline_latex == 1 ? 'latex':$DBInfo->inline_latex;
       $this->use_purple=$DBInfo->use_purple;
       $this->section_edit=$DBInfo->use_sectionedit;
  +    $this->auto_linebreak=$DBInfo->auto_linebreak;
   
       if (($p=strpos($page->name,"~")))
         $this->group=substr($page->name,0,$p+1);
  @@ -2260,7 +2261,7 @@
           if ($in_pre) { $this->pre_line.="\n";continue;}
           if ($in_li) {
             $text.=$this->_purple()."<br />\n";
  -          if ($li_empty==0) $text.="<br />\n";
  +          if ($li_empty==0 && !$this->auto_linebreak ) $text.="<br />\n";
             $li_empty=1;
             continue;
           }
  @@ -2283,7 +2284,7 @@
   
         $p_close='';
         if (preg_match('/^-{4,}/',$line)) {
  -        if ($DBInfo->auto_linebreak) $this->nobr=1; // XXX
  +        if ($this->auto_linebreak) $this->nobr=1; // XXX
           if ($in_p) { $p_close=$this->_div(0,$in_div); $in_p='';}
         } else if ($in_p == '') {
           $p_close=$this->_div(1,$in_div);
  @@ -2505,7 +2506,7 @@
            }
            $this->nobr=1;
         }
  -      if ($DBInfo->auto_linebreak && !$in_table && !$this->nobr)
  +      if ($this->auto_linebreak && !$in_table && !$this->nobr)
           $text.=$line."<br />\n"; 
         else
           $text.=$line."\n";
  
  
  


wkpark      2005/04/16 17:58:34

  Modified:    .        wiki.php
  Log:
  fixed PR #300849: use array_merge() to set the theme icons. reported by hhyoon
  
  Revision  Changes    Path
  1.220     +5 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.219
  retrieving revision 1.220
  diff -u -r1.219 -r1.220
  --- wiki.php	16 Apr 2005 08:14:43 -0000	1.219
  +++ wiki.php	16 Apr 2005 08:58:34 -0000	1.220
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.219 2005/04/16 08:14:43 wkpark Exp $
  +// $Id: wiki.php,v 1.220 2005/04/16 08:58:34 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.219 $',1,-1);
  +$_revision = substr('$Revision: 1.220 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -1461,9 +1461,10 @@
           while (list($key,$val) = each($data)) $this->$key=$val;
         }
       }
  -    if (!$this->icon) {
  -      $this->icon=&$DBInfo->icon;
  +    if ($this->icon)
  +      $this->icon=array_merge($DBInfo->icon,$this->icon);
   
  +    if (!isset($this->icon_bra)) {
         $this->icon_bra=$DBInfo->icon_bra;
         $this->icon_cat=$DBInfo->icon_cat;
         $this->icon_sep=$DBInfo->icon_sep;
  
  
  


wkpark      2005/04/18 23:07:00

  Modified:    .        wiki.php
  Log:
  fix last changes
  
  Revision  Changes    Path
  1.221     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.220
  retrieving revision 1.221
  diff -u -r1.220 -r1.221
  --- wiki.php	16 Apr 2005 08:58:34 -0000	1.220
  +++ wiki.php	18 Apr 2005 14:07:00 -0000	1.221
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.220 2005/04/16 08:58:34 wkpark Exp $
  +// $Id: wiki.php,v 1.221 2005/04/18 14:07:00 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.220 $',1,-1);
  +$_revision = substr('$Revision: 1.221 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -1461,8 +1461,8 @@
           while (list($key,$val) = each($data)) $this->$key=$val;
         }
       }
  -    if ($this->icon)
  -      $this->icon=array_merge($DBInfo->icon,$this->icon);
  +    #if ($this->icon)
  +    $this->icon=array_merge($DBInfo->icon,$this->icon);
   
       if (!isset($this->icon_bra)) {
         $this->icon_bra=$DBInfo->icon_bra;
  
  
  


wkpark      2005/04/18 23:16:10

  Modified:    .        wikilib.php
  Log:
  minor fix do_goto()
  
  Revision  Changes    Path
  1.144     +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.143
  retrieving revision 1.144
  diff -u -r1.143 -r1.144
  --- wikilib.php	16 Apr 2005 07:29:24 -0000	1.143
  +++ wikilib.php	18 Apr 2005 14:16:10 -0000	1.144
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.143 2005/04/16 07:29:24 wkpark Exp $
  +// $Id: wikilib.php,v 1.144 2005/04/18 14:16:10 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -843,7 +843,7 @@
       }
     }
     if ($options['value']) {
  -     $url=_stripslashes($options['value']);
  +     $url=_stripslashes(rtrim($options['value']));
        $url=_rawurlencode($url);
        if ($options['redirect'])
          $url=$formatter->link_url($url,"?action=show");
  
  
  


wkpark      2005/04/19 02:32:37

  Modified:    .        wiki.php
  Log:
  fix rendering bugs on the table
  
  Revision  Changes    Path
  1.222     +6 -7      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.221
  retrieving revision 1.222
  diff -u -r1.221 -r1.222
  --- wiki.php	18 Apr 2005 14:07:00 -0000	1.221
  +++ wiki.php	18 Apr 2005 17:32:37 -0000	1.222
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.221 2005/04/18 14:07:00 wkpark Exp $
  +// $Id: wiki.php,v 1.222 2005/04/18 17:32:37 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.221 $',1,-1);
  +$_revision = substr('$Revision: 1.222 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -2432,13 +2432,12 @@
         if ($in_table) {
           $line=substr($line,0,-2);
           $cells=preg_split('/((?:\|\|)+)/',$line,-1,
  -          PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE);
  +          PREG_SPLIT_DELIM_CAPTURE);
           $row='';
  -        for ($i=0,$s=sizeof($cells);$i<$s-1;$i+=2) {
  -          $align='';
  -          preg_match('/^((&lt;[^>]+>)?)(\s?)([\S\s]*\S)(\s*)?$/',
  +        for ($i=1,$s=sizeof($cells);$i<$s;$i+=2) {
  +          $align='';$attr='';
  +          preg_match('/^((&lt;[^>]+>)?)(\s?)(.*)(?<!\s)(\s*)?$/',
               $cells[$i+1],$m);
  -          #print_r($m);
             $cell=$m[3].$m[4].$m[5];
             if ($m[3] and $m[5]) $align='align="center"';
             else if (!$m[3]) $align='';
  
  
  


iolo        2005/04/19 22:01:40

  Added:       imgs/plugin/EditToolbar/mediawiki button_bold.png
                        button_extlink.png button_headline.png
                        button_hr.png button_image.png button_italic.png
                        button_link.png button_math.png button_media.png
                        button_nowiki.png button_sig.png
  Log:
  add missing images fro EditToolbar plugin ;)
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/plugin/EditToolbar/mediawiki/button_bold.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/EditToolbar/mediawiki/button_extlink.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/EditToolbar/mediawiki/button_headline.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/EditToolbar/mediawiki/button_hr.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/EditToolbar/mediawiki/button_image.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/EditToolbar/mediawiki/button_italic.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/EditToolbar/mediawiki/button_link.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/EditToolbar/mediawiki/button_math.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/EditToolbar/mediawiki/button_media.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/EditToolbar/mediawiki/button_nowiki.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/EditToolbar/mediawiki/button_sig.png
  
  	<<Binary file>>
  
  


wkpark      2005/04/20 22:43:30

  Modified:    .        wiki.php
  Log:
  fixed PR #300852 by hhyoon: rendering fix with the auto_linebreak option
  
  Revision  Changes    Path
  1.223     +7 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.222
  retrieving revision 1.223
  diff -u -r1.222 -r1.223
  --- wiki.php	18 Apr 2005 17:32:37 -0000	1.222
  +++ wiki.php	20 Apr 2005 13:43:30 -0000	1.223
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.222 2005/04/18 17:32:37 wkpark Exp $
  +// $Id: wiki.php,v 1.223 2005/04/20 13:43:30 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.222 $',1,-1);
  +$_revision = substr('$Revision: 1.223 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -2344,6 +2344,7 @@
            if (trim($this->pre_line))
              $this->pre_line.="\n";
            $line=substr($line,0,$p);
  +         if (!$line and $this->auto_linebreak) $this->nobr=1;
         }
   #     $line=str_replace("<","&lt;",$line);
         #$line=preg_replace("/\\$/","&#36;",$line);
  @@ -2466,7 +2467,11 @@
         #$line=preg_replace(array("/{{\|/","/\|}}/"),
         #      array("</div><table class='closure'><tr class='closure'><td class='closure'><div>","</div></td></tr></table><div>"),$line);
   
  +      if ($this->auto_linebreak and in_array(trim($line),array('{{|','|}}')))
  +        $this->nobr=1;
         $line=preg_replace($this->extrarule,$this->extrarepl,$line);
  +      #if ($this->auto_linebreak and preg_match('/<div>$/',$line))
  +      #  $this->nobr=1;
   
         $line=$close.$p_close.$open.$line;
         $open="";$close="";
  
  
  


wkpark      2005/04/23 21:53:18

  Modified:    .        monisetup.php
  Log:
  fixed PR #300843
  
  Revision  Changes    Path
  1.23      +6 -1      moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- monisetup.php	14 Apr 2005 09:54:18 -0000	1.22
  +++ monisetup.php	23 Apr 2005 12:53:18 -0000	1.23
  @@ -1,7 +1,7 @@
   <?php
   // Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.22 2005/04/14 09:54:18 wkpark Exp $
  +// $Id: monisetup.php,v 1.23 2005/04/23 12:53:18 wkpark Exp $
   
   function _stripslashes($str) {
     return get_magic_quotes_gpc() ? stripslashes($str):$str;
  @@ -172,6 +172,11 @@
           print "<font color='red'>ERROR:</font> <tt>\$$key=$val;</tt><br/>";
       }
       $lines[]="?>\n";
  +    if ($config['dba_type']) {
  +      if (!file_exists('data/counter.db'))
  +        $db=dba_open('data/counter.db','n',substr($config['dba_type'],1,-1));
  +      if ($db) dba_close($db);
  +    }
       return $lines;
     }
   }
  
  
  


wkpark      2005/04/26 12:07:34

  Modified:    plugin   Navigation.php
  Log:
  fix last changes
  
  Revision  Changes    Path
  1.9       +4 -6      moniwiki/plugin/Navigation.php
  
  Index: Navigation.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Navigation.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Navigation.php	16 Apr 2005 07:29:24 -0000	1.8
  +++ Navigation.php	26 Apr 2005 03:07:34 -0000	1.9
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Navigation(IndexPage)]]
   //
  -// $Id: Navigation.php,v 1.8 2005/04/16 07:29:24 wkpark Exp $
  +// $Id: Navigation.php,v 1.9 2005/04/26 03:07:34 wkpark Exp $
   
   function macro_Navigation($formatter,$value) {
     global $DBInfo;
  @@ -45,7 +45,7 @@
         list($index,$text,$dummy)= normalize_word($word,$group,$page);
         if ($group) $indices[]=$index;
         else $indices[]=$index;
  -      $texts[]=$text;
  +      $texts[]=$text ? $text:$word;
         $count++;
       }
     }
  @@ -53,13 +53,13 @@
     #print_r($indices);
     if ($count > 1) {
       $prev='';
  +    $next=($current == $page) ? 0:-1;
       $index_text=$value;
       if ($group) {
         $index=$value;
         $index_text=substr($index,strlen($group));
       }
       else $index=$value;
  -    $next=0;
     }
   
     for ($i=0;$i<$count;$i++) {
  @@ -67,11 +67,8 @@
       #print ':'.$formatter->page->name;
       if ($indices[$i]==$current) {
         if ($i > 0) $prev=$i-1;
  -      else $prev=$count - 1;
         if ($i < ($count - 1)) {
   	$next=$i+1;
  -      } else {
  -        $next = 0;
         }
       }
     }
  @@ -89,6 +86,7 @@
         $prev=$indices[$prev];
         if (($p=strpos($prev,'~'))!==false)
           $prev_text=substr($prev,$p+1);
  +      if ($prev_text)
         $pnut.=$formatter->link_repl("[wiki:$prev $prev_text]"," accesskey=\",\" ");
       }
       if ($use_action) $formatter->query_string=$save;
  
  
  


wkpark      2005/04/29 21:16:33

  Modified:    plugin   Navigation.php
  Log:
  fixed Navigation action plugin
  
  Revision  Changes    Path
  1.10      +11 -9     moniwiki/plugin/Navigation.php
  
  Index: Navigation.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Navigation.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- Navigation.php	26 Apr 2005 03:07:34 -0000	1.9
  +++ Navigation.php	29 Apr 2005 12:16:33 -0000	1.10
  @@ -5,17 +5,19 @@
   //
   // Usage: [[Navigation(IndexPage)]]
   //
  -// $Id: Navigation.php,v 1.9 2005/04/26 03:07:34 wkpark Exp $
  +// $Id: Navigation.php,v 1.10 2005/04/29 12:16:33 wkpark Exp $
   
   function macro_Navigation($formatter,$value) {
     global $DBInfo;
   
  +  preg_match('/([^,]+),?\s*(.*)/',$value,$match);
  +  if ($match) {
  +    $opts=explode(',',$match[2]);
  +    $value=$match[1];
  +  }
     if (!$value or !$DBInfo->hasPage($value))
  -    return '[[Index('._("No Index page found").')]]';
  +    return '[[Navigation('._("No Index page found").')]]';
   
  -  preg_match('/([^,]+),?\s*,?(.*)/',$value,$match);
  -  $opts=explode(',',$match[2]);
  -  $value=$match[1];
     $use_action=0;
     if (in_array('action',$opts)) $use_action=1;
   
  @@ -106,18 +108,18 @@
   }
   
   function do_navigation($formatter,$options) {
  -  $pnut=macro_Navigation($formatter,$options['value']);
  +  $pnut=macro_Navigation($formatter,$options['value'].',action');
     $formatter->send_header('',$options);
     $formatter->send_title($title,$formatter->link_url("FindPage"),$options);
     print "<div class='wikiNavigation'>\n";
     print $pnut;
  -  print "</div>\n";
  +  print "<hr /></div>\n";
     $formatter->send_page();
  -  print "<div class='wikiNavigation'>\n";
  +  print "<div class='wikiNavigation'>\n<hr />";
     print $pnut;
     print "</div>\n";
     $formatter->send_footer('',$options);
   }
   
  -// vim:noet:sts=2:
  +// vim:et:sts=2:
   ?>
  
  
  


wkpark      2005/04/29 21:18:04

  Modified:    .        wikilib.php
  Log:
  add a comment for the fastcgi
  
  Revision  Changes    Path
  1.145     +3 -1      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.144
  retrieving revision 1.145
  diff -u -r1.144 -r1.145
  --- wikilib.php	18 Apr 2005 14:16:10 -0000	1.144
  +++ wikilib.php	29 Apr 2005 12:18:04 -0000	1.145
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.144 2005/04/18 14:16:10 wkpark Exp $
  +// $Id: wikilib.php,v 1.145 2005/04/29 12:18:04 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -849,6 +849,8 @@
          $url=$formatter->link_url($url,"?action=show");
        else
          $url=$formatter->link_url($url,"");
  +     # FastCGI/PHP does not accept multiple header infos. XXX
  +     #$formatter->send_header("Location: ".$url,$options);
        $formatter->send_header(array("Status: 302","Location: ".$url),$options);
     } else if ($options['url']) {
       $url=$options['url'];
  
  
  


iolo        2005/04/30 06:47:28

  Modified:    plugin   FullSearch.php
  Added:       plugin   SearchPlugin.php
  Log:
  add firefox/mozilla search plugin for moniwiki.
  
  Revision  Changes    Path
  1.9       +5 -1      moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- FullSearch.php	14 Jan 2005 08:25:54 -0000	1.8
  +++ FullSearch.php	29 Apr 2005 21:47:28 -0000	1.9
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
   //
  -// $Id: FullSearch.php,v 1.8 2005/01/14 08:25:54 wkpark Exp $
  +// $Id: FullSearch.php,v 1.9 2005/04/29 21:47:28 iolo Exp $
   
   function do_fullsearch($formatter,$options) {
   
  @@ -150,20 +150,24 @@
     }
     arsort($hits);
   
  +  $out.= "<!-- RESULT LIST START -->"; // for search plugin
     $out.= "<ul>";
     reset($hits);
     $idx=1;
     while (list($page_name, $count) = each($hits)) {
       if ($opts['checkbox']) $checkbox="<input type='checkbox' name='pagenames[]' value='$page_name' />";
  +    $out.= "<!-- RESULT ITEM START -->"; // for search plugin
       $out.= '<li>'.$checkbox.$formatter->link_tag(_rawurlencode($page_name),
             "?action=highlight&amp;value="._urlencode($needle),
             $page_name,"tabindex='$idx'");
       $out.= ' . . . . ' . $count . (($count == 1) ? ' match' : ' matches');
       $out.= $contexts[$page_name];
       $out.= "</li>\n";
  +    $out.= "<!-- RESULT ITEM END -->"; // for search plugin
       $idx++;
     }
     $out.= "</ul>\n";
  +  $out.= "<!-- RESULT LIST END -->"; // for search plugin
   
     $opts['hits']= count($hits);
     $opts['all']= count($pages);
  
  
  
  1.1                  moniwiki/plugin/SearchPlugin.php
  
  Index: SearchPlugin.php
  ===================================================================
  <?php
  // Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  //
  // Firefox/Mozilla Search Plugin for MoniWiki by iolo@hellocity.net
  //
  // Usage: [[SearchPlugin(<name>)]]
  //
  // <name> is a string identifier. if not specified, sitename will be used.
  //
  // It generates/uses following links:
  // - http://.../wiki.php/?action=SearchPlugin&name=<name>.src for descriptor
  // - http://.../wiki.php/?action=SearchPlugin&name=<name>.png for icon
  //
  // FIXME:
  // filename parts of update and icon url must be identical!
  // and mozilla doesn't use the filename specified by disposition header,
  // but use query string like IE! :@
  // so, i'd append dummy parameter ends with '.src' and '.png' to deceive mozilla :(
  //
  // $Id: SearchPlugin.php,v 1.1 2005/04/29 21:47:28 iolo Exp $
  
  function macro_SearchPlugin($formatter,$value,$options='') {
    global $DBInfo;
  
    if ($value) {
      $name = $value;
    } else {
      $name = $DBInfo->sitename;
    }
    $update_url = qualifiedUrl($formatter->link_url("?action=SearchPlugin&name="));
    //$update_url = "http://hellocity.net/~iolo/moniwiki/";
  
    return <<<EOS
  <div id="addSearchPlugin">
  <script type="text/javascript">
  <!--
  function addSearchPlugin(update_url, name)
  {
    if ((typeof window.sidebar == "object") && (typeof window.sidebar.addSearchEngine == "function")) {
      window.sidebar.addSearchEngine(
        update_url + name + ".src",
        update_url + name + ".png",
        "MoniWiki - " + name,
        "General");// FIXME: what's the valid category?
    }
    else {
      alert("Firefox, Mozilla or Compatible Browser is needed to install a search plugin");
    }
  }
  //-->
  </script>
  <a href="javascript:addSearchPlugin('$update_url', '$name')">Add Search Plugin </a>
  </div>
  EOS;
  }
  
  function do_SearchPlugin($formatter,$options) {
    global $DBInfo;
  
    if ($options['name']) {
      $name = $options['name'];
    } else {
      $name = $DBInfo->sitename;
    }
    if (strpos($name, ".png") != false) {
      header("Content-Type: image/png\r\n");
      header("Content-Disposition: inline; filename=\"$name\"" );
      #header("Content-Disposition: attachment; filename=\"$filename\"" );
      header("Content-Description: MoniWiki Search Plugin Descriptor" );
      Header("Pragma: no-cache");
      Header("Expires: 0");
      $fp = readfile("imgs/interwiki/moniwiki-16.png");
      return;
    } if (strpos($name, ".src") == false) {
      // error! invalid options
      // name=xxx.[src|png]
      print "invalid option!";
      return;
    }
  
    $update_url = qualifiedUrl($formatter->link_url("?action=SearchPlugin&name="));
    //$update_url = "http://hellocity.net/~iolo/moniwiki/";
  
    // remove file extension part(should be ".src") from url
    // it's just a dummy to deceive stupid mozilla :@
    $name = substr($name, 0, strlen($name) - 4);
  
    // FIXME: what's the valid way to get http://.../wiki.php ?
    // alternative: $_SERVER["PHP_SELF"]
    $base_url=qualifiedUrl($formatter->link_url(""));
    // FIXME: what's the valid search page name for all moniwiki sites?
    $form_url=qualifiedUrl($formatter->link_url("FindPage"));
  
    #header("Content-Type: application/x-wais-source\r\n");
    header("Content-Type: text/plain\r\n");
    header("Content-Disposition: inline; filename=\"$name.src\"" );
    #header("Content-Disposition: attachment; filename=\"$file\"" );
    header("Content-Description: MoniWiki Search Plugin Descriptor" );
    Header("Pragma: no-cache");
    Header("Expires: 0");
  
    print <<<EOS
  # Firefox/Mozilla Search Plugin for MoniWiki by iolo@hellocity.net
  <search
    version="7.1"
    name="MoniWiki - $name"
    description="MoniWiki Search Plugin for $name"
    method="GET"
    action="$base_url"
    searchForm="$form_url"
    queryEncoding="utf-8"
    queryCharset="utf-8"
    routeType="internet"
  >
  
  <input name="sourceid" value="mozilla-search">
  #<inputnext name="start" factor="10">
  #<inputprev name="start" factor="10">
  
  <input name="value" user>
  
  # TODO: support various search actions and parameters
  #<input name="action" value="titlesearch">
  <input name="action" value="fullsearch">
  <input name="context" value="20">
  <input name="backlinks" value="0">
  <input name="case" value="0">
  #<input name="ie" value="utf-8">
  #<input name="oe" value="utf-8">
  
  <interpret
    browserResultType="result"
    charset = "UTF-8"
    resultListStart="<!-- RESULT LIST START -->"
    resultListEnd="<!-- RESULT LIST END -->"
    resultItemStart="<!-- RESULT ITEM START -->"
    resultItemEnd="<!-- RESULT ITEM END -->"
  >
  </search>
  
  <browser
    update="$update_url$name.src"
    updateIcon="$update_url$name.png"
    updateCheckDays=1
  >
  EOS;
  }
  ?>
  
  
  


iolo        2005/04/30 07:05:17

  Added:       plugin/processor geshi.php
  Log:
  add geshi syntax highlight processor.
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/processor/geshi.php
  
  Index: geshi.php
  ===================================================================
  <?php
  // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a geshi colorizer plugin for the MoniWiki
  //
  // Usage: {{{#!geshi ada|apache|asm|c|css... [number|fancy]
  // some codes
  // }}}
  // 
  // to use this processor:
  // download GeSHi-x.x.x.tar.gz from http://qbnz.com/highlighter/
  // and extract it under .../moniwiki/lib directory and rename into 'geshi'
  // it looks like after intsall:
  // .../moniwiki/
  //   |
  //   |-- lib/geshi/
  //   |  |-- geshi.php (mandatory)
  //   |  |-- geshi/... (syntax files here.. not used syntics may be removed)
  //   |  |-- contrib/ .. (examples and so on.. could be removed)
  //   |  |-- docs/ .. (documents.. could be removed)
  //   |
  //   |-- plugin/processor/geshi.php (this file)
  //   |
  //
  // this version was tested with geshi 1.0.6.
  //
  // $Id: geshi.php,v 1.1 2005/04/29 22:05:17 iolo Exp $
  
  include_once(dirname(__FILE__)."/../../lib/geshi/geshi.php");
  
  function processor_geshi($formatter,$value,$options) {
    global $DBInfo;
    $cache_dir=$DBInfo->upload_dir."/GeshiProcessor";
  
    $syntax=array(
      'actionscript', 'ada', 'apache', 'asm', 'asp', 'bash', 'c', 'c_mac',
      'caddcl', 'cadlisp', 'cpp', 'csharp', 'css-gen', 'css', 'delphi',
      'html4strict', 'java', 'javascript', 'lisp', 'lua', 'nsis', 'objc',
      'oobas', 'oracle8', 'pascal', 'perl', 'php-brief', 'php', 'python',
      'qbasic', 'smarty', 'sql', 'vb', 'vbnet', 'visualfoxpro', 'xml'
    );
  
    if ($value[0]=='#' and $value[1]=='!')
      list($line,$value)=explode("\n",$value,2);
    # get parameters
    if ($line)
      list($tag,$type,$extra)=explode(" ",$line,3);
    $src=$value;
    if (!$type) $type='nosyntax';
  
    $uniq=md5($option.$src); if (!file_exists($cache_dir)) {
      umask(000);
      mkdir($cache_dir,0777);
      umask(022);
    }
  
    if (file_exists($cache_dir."/$uniq".".html") && !$formatter->refresh) {
      $out = "";
      $fp=fopen($cache_dir."/$uniq".".html","r");
      while (!feof($fp)) $out .= fread($fp, 1024);
      return $out;
      #return join('',file($cache_dir."/$uniq".".html"));
    }
  
    # comment out the following two lines to freely use any syntaxes.
    if (!in_array($type,$syntax)) 
      return "<pre class='code'>\n$line\n".htmlspecialchars($src)."\n</pre>\n";
  
    $geshi = new GeSHi($src, $type, dirname(__FILE__)."/../../lib/geshi/geshi");
    if ($extra == "number") {
      $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS);
    } if ($extra == "fancy") {
      $geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS);
    } else {
      $geshi->enable_line_numbers(GESHI_NO_LINE_NUMBERS);
    }
    $geshi->set_header_type(GESHI_HEADER_DIV);
    #$geshi->set_header_type(GESHI_HEADER_PRE);
    #$out = '<style type="text/css"><!--'.$geshi->get_stylesheet().'--></style>';
    #$geshi->enable_classes();
    $out = $out.$geshi->parse_code();
  
    $fp=fopen($cache_dir."/$uniq".".html","w");
    fwrite($fp,$out);
    fclose($fp);
  
    return $out;
  }
  
  // vim:et:sts=2:
  ?>
  
  
  


wkpark      2005/05/04 16:37:26

  Modified:    plugin   Gallery.php
  Log:
  add 'sort' option and fix the gallery action to work with 'col/row' args.
  
  Revision  Changes    Path
  1.19      +11 -4     moniwiki/plugin/Gallery.php
  
  Index: Gallery.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Gallery.php,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- Gallery.php	9 Apr 2005 10:56:51 -0000	1.18
  +++ Gallery.php	4 May 2005 07:37:26 -0000	1.19
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Gallery]]
   //
  -// $Id: Gallery.php,v 1.18 2005/04/09 10:56:51 wkpark Exp $
  +// $Id: Gallery.php,v 1.19 2005/05/04 07:37:26 wkpark Exp $
   
   function get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -62,7 +62,9 @@
     }
     $default_column=3;
     $default_row=4;
  -  $col=$row=0;
  +  $col=$options['col'] > 0 ? (int)$options['col']:0;
  +  $row=$options['row'] > 0 ? (int)$options['row']:0;
  +  $sort=$options['sort'] ? 1:0;
   
     // parse args
     preg_match("/^(('|\")([^\\2]+)\\2)?,?(\s*,?\s*.*)?$/",
  @@ -75,6 +77,8 @@
         $v=substr($opt,$p+1);
         if ($k=='col') $col=$v;
         else if ($k=='row') $row=$v;
  +    } else {
  +      if ($opt=='sort') $sort=1;
       }
     }
   
  @@ -176,7 +180,8 @@
     }
   
     if (!$upfiles) return "<h3>No files uploaded</h3>";
  -  asort($upfiles);
  +  if ($sort) arsort($upfiles);
  +  else asort($upfiles);
   
     $out.="<table border='0' cellpadding='2'>\n<tr>\n";
     $idx=1;
  @@ -191,7 +196,9 @@
     }
   
     if ($pages > 1)
  -    $pnut=get_pagelist($formatter,$pages,"?action=gallery&p=",$options['p'],$perpage);
  +    $pnut=get_pagelist($formatter,$pages,
  +      '?action=gallery&amp;col='.$col.'&amp;row='.$row.
  +      '&amp;p=',$options['p'],$perpage);
   
     if (!file_exists($dir."/thumbnails")) mkdir($dir."/thumbnails",0777);
   
  
  
  


wkpark      2005/05/04 16:49:32

  Modified:    plugin   SearchPlugin.php
  Log:
  more fixes and add low level options like as
  [[SearchPlugin(http://foobar.org/upload/,foobar)]]
  
  Revision  Changes    Path
  1.2       +39 -25    moniwiki/plugin/SearchPlugin.php
  
  Index: SearchPlugin.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SearchPlugin.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SearchPlugin.php	29 Apr 2005 21:47:28 -0000	1.1
  +++ SearchPlugin.php	4 May 2005 07:49:32 -0000	1.2
  @@ -1,8 +1,9 @@
   <?php
  -// Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2005 Jang,Dong-Su <jdongsu at hellocity.net>
  +//                     Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   //
  -// Firefox/Mozilla Search Plugin for MoniWiki by iolo@hellocity.net
  +// Firefox/Mozilla Search Plugin for MoniWiki by iolo
   //
   // Usage: [[SearchPlugin(<name>)]]
   //
  @@ -16,20 +17,28 @@
   // filename parts of update and icon url must be identical!
   // and mozilla doesn't use the filename specified by disposition header,
   // but use query string like IE! :@
  -// so, i'd append dummy parameter ends with '.src' and '.png' to deceive mozilla :(
  +// so, i'd append dummy extensions with '.src' and '.png' to deceive mozilla :(
   //
  -// $Id: SearchPlugin.php,v 1.1 2005/04/29 21:47:28 iolo Exp $
  +// $Id: SearchPlugin.php,v 1.2 2005/05/04 07:49:32 wkpark Exp $
   
   function macro_SearchPlugin($formatter,$value,$options='') {
     global $DBInfo;
   
  +  $cat='General';
  +
  +  if (preg_match('/^http:\/\//',$value)) {
  +    list($update_url,$value)=explode(',',$value,2);
  +    if (substr($update_url,-1)!='/') $update_url.='/';
  +  } else {
  +    $update_url=
  +    qualifiedUrl($formatter->link_url('FindPage','?action=SearchPlugin&amp;name='));
  +    //$update_url = "http://hellocity.net/~iolo/moniwiki/";
  +  }
     if ($value) {
       $name = $value;
     } else {
       $name = $DBInfo->sitename;
     }
  -  $update_url = qualifiedUrl($formatter->link_url("?action=SearchPlugin&name="));
  -  //$update_url = "http://hellocity.net/~iolo/moniwiki/";
   
     return <<<EOS
   <div id="addSearchPlugin">
  @@ -37,14 +46,15 @@
   <!--
   function addSearchPlugin(update_url, name)
   {
  -  if ((typeof window.sidebar == "object") && (typeof window.sidebar.addSearchEngine == "function")) {
  +  if ((typeof window.sidebar == "object") &&
  +      (typeof window.sidebar.addSearchEngine == "function")) {
  +    cat=prompt("In what category should this engine be installed?","$cat")
       window.sidebar.addSearchEngine(
         update_url + name + ".src",
         update_url + name + ".png",
  -      "MoniWiki - " + name,
  -      "General");// FIXME: what's the valid category?
  -  }
  -  else {
  +      name,
  +      cat);
  +  } else {
       alert("Firefox, Mozilla or Compatible Browser is needed to install a search plugin");
     }
   }
  @@ -66,11 +76,11 @@
     if (strpos($name, ".png") != false) {
       header("Content-Type: image/png\r\n");
       header("Content-Disposition: inline; filename=\"$name\"" );
  -    #header("Content-Disposition: attachment; filename=\"$filename\"" );
  +    #header("Content-Disposition: attachment; filename=\"$name\"" );
       header("Content-Description: MoniWiki Search Plugin Descriptor" );
       Header("Pragma: no-cache");
       Header("Expires: 0");
  -    $fp = readfile("imgs/interwiki/moniwiki-16.png");
  +    $fp = readfile("imgs/interwiki/moniwiki-16.png"); // XXX
       return;
     } if (strpos($name, ".src") == false) {
       // error! invalid options
  @@ -79,38 +89,41 @@
       return;
     }
   
  -  $update_url = qualifiedUrl($formatter->link_url("?action=SearchPlugin&name="));
  +  $update_url =
  +    qualifiedUrl($formatter->link_url('FindPage',"?action=SearchPlugin&amp;name="));
     //$update_url = "http://hellocity.net/~iolo/moniwiki/";
   
  -  // remove file extension part(should be ".src") from url
  -  // it's just a dummy to deceive stupid mozilla :@
  -  $name = substr($name, 0, strlen($name) - 4);
  -
     // FIXME: what's the valid way to get http://.../wiki.php ?
     // alternative: $_SERVER["PHP_SELF"]
  -  $base_url=qualifiedUrl($formatter->link_url(""));
  +  $base_url=qualifiedUrl($formatter->link_url("FindPage"));
     // FIXME: what's the valid search page name for all moniwiki sites?
     $form_url=qualifiedUrl($formatter->link_url("FindPage"));
   
     #header("Content-Type: application/x-wais-source\r\n");
     header("Content-Type: text/plain\r\n");
  -  header("Content-Disposition: inline; filename=\"$name.src\"" );
  -  #header("Content-Disposition: attachment; filename=\"$file\"" );
  +  header("Content-Disposition: inline; filename=\"$name\"" );
  +  #header("Content-Disposition: attachment; filename=\"$name\"" );
     header("Content-Description: MoniWiki Search Plugin Descriptor" );
     Header("Pragma: no-cache");
     Header("Expires: 0");
   
  +  // remove file extension part(should be ".src") from url
  +  // it's just a dummy to deceive stupid mozilla :@
  +  $name = substr($name, 0, -4);
  +
  +  $charset=$DBInfo->charset;
  +
     print <<<EOS
   # Firefox/Mozilla Search Plugin for MoniWiki by iolo@hellocity.net
   <search
     version="7.1"
  -  name="MoniWiki - $name"
  +  name="$name"
     description="MoniWiki Search Plugin for $name"
     method="GET"
     action="$base_url"
     searchForm="$form_url"
  -  queryEncoding="utf-8"
  -  queryCharset="utf-8"
  +  queryEncoding="$charset"
  +  queryCharset="$charset"
     routeType="internet"
   >
   
  @@ -131,7 +144,7 @@
   
   <interpret
     browserResultType="result"
  -  charset = "UTF-8"
  +  charset = "$charset"
     resultListStart="<!-- RESULT LIST START -->"
     resultListEnd="<!-- RESULT LIST END -->"
     resultItemStart="<!-- RESULT ITEM START -->"
  @@ -144,6 +157,7 @@
     updateIcon="$update_url$name.png"
     updateCheckDays=1
   >
  +
   EOS;
   }
   ?>
  
  
  


iolo        2005/05/05 16:31:28

  Modified:    plugin   SearchPlugin.php
  Log:
  add 'type', 'text' options for macro
  add 'type' parameter for action
  
  Revision  Changes    Path
  1.3       +43 -25    moniwiki/plugin/SearchPlugin.php
  
  Index: SearchPlugin.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SearchPlugin.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SearchPlugin.php	4 May 2005 07:49:32 -0000	1.2
  +++ SearchPlugin.php	5 May 2005 07:31:28 -0000	1.3
  @@ -1,17 +1,26 @@
   <?php
  -// Copyright 2003-2005 Jang,Dong-Su <jdongsu at hellocity.net>
  +// Copyright 2003-2005 Dongsu Jang <iolo at hellocity.net>
   //                     Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   //
  -// Firefox/Mozilla Search Plugin for MoniWiki by iolo
  +// Firefox/Mozilla Search Plugin for MoniWiki
   //
  -// Usage: [[SearchPlugin(<name>)]]
  -//
  -// <name> is a string identifier. if not specified, sitename will be used.
  -//
  -// It generates/uses following links:
  -// - http://.../wiki.php/?action=SearchPlugin&name=<name>.src for descriptor
  -// - http://.../wiki.php/?action=SearchPlugin&name=<name>.png for icon
  +// Usage: [[SearchPlugin(<prefix>,<name>,<text>)]]
  +// <prefix>
  +//   url(location) of both descriptor(.src) and icon(.png)(no default!)
  +//   or search type(action) to use dynamic descritor(.src)
  +// <type> - search type. "fullsearch", "titlesearch", "fastsearch" or somthing.(default=fullsearch)
  +// <name> - identifier. if not specified, sitename will be used.(default=sitename)
  +// <text> - contents text of <a> tag this plugin generates.(default=Add Search Plugin)
  +//
  +// This plugin generates/uses following links:
  +// For static mode
  +// - <url>/name.src
  +// - <url>/name.png
  +// For dynamic mode
  +// - http://.../wiki.php/?action=SearchPlugin&name=<name>.src
  +// - http://.../wiki.php/?action=SearchPlugin&name=<name>.png
  +// Also, generate/uses #SearchPlugin css style class.
   //
   // FIXME:
   // filename parts of update and icon url must be identical!
  @@ -19,29 +28,35 @@
   // but use query string like IE! :@
   // so, i'd append dummy extensions with '.src' and '.png' to deceive mozilla :(
   //
  -// $Id: SearchPlugin.php,v 1.2 2005/05/04 07:49:32 wkpark Exp $
  +// $Id: SearchPlugin.php,v 1.3 2005/05/05 07:31:28 iolo Exp $
   
   function macro_SearchPlugin($formatter,$value,$options='') {
     global $DBInfo;
   
     $cat='General';
   
  -  if (preg_match('/^http:\/\//',$value)) {
  -    list($update_url,$value)=explode(',',$value,2);
  -    if (substr($update_url,-1)!='/') $update_url.='/';
  -  } else {
  -    $update_url=
  -    qualifiedUrl($formatter->link_url('FindPage','?action=SearchPlugin&amp;name='));
  -    //$update_url = "http://hellocity.net/~iolo/moniwiki/";
  +  // parse value and provide defaults
  +  list($prefix,$name,$text)=explode(',',$value,3);
  +  if (!$name) {
  +    $name = $DBInfo->sitename;
     }
  -  if ($value) {
  -    $name = $value;
  +  if (!$text) {
  +    $text = "Add Search Plugin";
  +  }
  +  if (preg_match('/^http:\/\//',$prefix)) {
  +    if (substr($prefix,-1)!='/') $prefix.='/';
  +    $update_url = $prefix;
     } else {
  -    $name = $DBInfo->sitename;
  +    if (!$prefix) {
  +      $prefix="fullsearch";//by default, fullsearch 
  +    }
  +    $update_url=
  +      qualifiedUrl(
  +        $formatter->link_url('FindPage','?action=SearchPlugin&amp;type='.$prefix.'&amp;name='));
     }
   
     return <<<EOS
  -<div id="addSearchPlugin">
  +<div class="SearchPlugin">
   <script type="text/javascript">
   <!--
   function addSearchPlugin(update_url, name)
  @@ -60,7 +75,7 @@
   }
   //-->
   </script>
  -<a href="javascript:addSearchPlugin('$update_url', '$name')">Add Search Plugin </a>
  +<a href="javascript:addSearchPlugin('$update_url', '$name')">$text</a>
   </div>
   EOS;
   }
  @@ -73,6 +88,11 @@
     } else {
       $name = $DBInfo->sitename;
     }
  +  if ($options['type']) { // fullsearch,titlesearch,fastsearch
  +    $type = $options['type'];
  +  } else {
  +    $type = "fullsearch"; // by default fullsearch
  +  }
     if (strpos($name, ".png") != false) {
       header("Content-Type: image/png\r\n");
       header("Content-Disposition: inline; filename=\"$name\"" );
  @@ -91,7 +111,6 @@
   
     $update_url =
       qualifiedUrl($formatter->link_url('FindPage',"?action=SearchPlugin&amp;name="));
  -  //$update_url = "http://hellocity.net/~iolo/moniwiki/";
   
     // FIXME: what's the valid way to get http://.../wiki.php ?
     // alternative: $_SERVER["PHP_SELF"]
  @@ -134,8 +153,7 @@
   <input name="value" user>
   
   # TODO: support various search actions and parameters
  -#<input name="action" value="titlesearch">
  -<input name="action" value="fullsearch">
  +<input name="action" value="$type">
   <input name="context" value="20">
   <input name="backlinks" value="0">
   <input name="case" value="0">
  
  
  


iolo        2005/05/07 16:40:38

  Modified:    plugin   SmileyChooser.php
  Log:
  add &shy; entity to break long line on IE.
  
  Revision  Changes    Path
  1.5       +2 -2      moniwiki/plugin/SmileyChooser.php
  
  Index: SmileyChooser.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SmileyChooser.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SmileyChooser.php	14 Apr 2005 02:03:07 -0000	1.4
  +++ SmileyChooser.php	7 May 2005 07:40:37 -0000	1.5
  @@ -5,7 +5,7 @@
   //
   // Usage: [[SmileyChooser]]
   //
  -// $Id: SmileyChooser.php,v 1.4 2005/04/14 02:03:07 wkpark Exp $
  +// $Id: SmileyChooser.php,v 1.5 2005/05/07 07:40:37 iolo Exp $
   
   function macro_SmileyChooser($formatter,$value) {
     global $DBInfo;
  @@ -59,7 +59,7 @@
     while (list($key,$value) = each($DBInfo->smileys)) {
       if ($last_img != $value[3]) {
         $skey=str_replace("\\","\\\\",$key);
  -      $chooser.= "<span onclick='appendText(\"$skey\")'>".$formatter->smiley_repl($key)."</span>";
  +      $chooser.= "<span onclick='appendText(\"$skey\")'>".$formatter->smiley_repl($key)."</span>&shy;";
         $last_img = $value[3];
         $idx++;
       }
  
  
  


iolo        2005/05/11 20:46:25

  Modified:    css      print.css
  Log:
  hide "section edit" link on print
  
  Revision  Changes    Path
  1.6       +2 -0      moniwiki/css/print.css
  
  Index: print.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/print.css,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- print.css	23 Sep 2004 16:51:10 -0000	1.5
  +++ print.css	11 May 2005 11:46:25 -0000	1.6
  @@ -236,3 +236,5 @@
   
   div.pagebreak {page-break-before: always;}
   div.pagebreak br { display:none;}
  +
  +div.sectionEdit { display:none; }
  
  
  


wkpark      2005/08/05 17:45:19

  Modified:    .        config.php.default
  Log:
  comment out the $auto_search option
  
  Revision  Changes    Path
  1.18      +2 -2      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- config.php.default	8 Apr 2005 15:27:30 -0000	1.17
  +++ config.php.default	5 Aug 2005 08:45:19 -0000	1.18
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.17 2005/04/08 15:27:30 wkpark Exp $
  +# $Id: config.php.default,v 1.18 2005/08/05 08:45:19 wkpark Exp $
   #
   $sitename='UnnamedWiki';
   $data_dir= './data';
  @@ -32,7 +32,7 @@
   $charset='utf-8';
   #$charset='utf-8';
   $auto_linebreak= 0;
  -$auto_search='AutoGoto';
  +#$auto_search='AutoGoto';
   $trail= 0;
   #$origin=1;
   #$arrow=' <img src="/wiki/imgs/moni-arrow.gif"/> ';
  
  
  


wkpark      2005/08/08 14:59:56

  Modified:    plugin   Cite.php
  Log:
  add more CiteMap entries
  
  Revision  Changes    Path
  1.2       +21 -12    moniwiki/plugin/Cite.php
  
  Index: Cite.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Cite.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Cite.php	12 Apr 2005 13:31:07 -0000	1.1
  +++ Cite.php	8 Aug 2005 05:59:55 -0000	1.2
  @@ -3,14 +3,20 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a CITE macro plugin for the MoniWiki
   //
  -// $Id: Cite.php,v 1.1 2005/04/12 13:31:07 wkpark Exp $
  +// $Id: Cite.php,v 1.2 2005/08/08 05:59:55 wkpark Exp $
   
   function macro_Cite($formatter="",$value="") {
     $CITE_MAP="CiteMap";
     $DEFAULT=<<<EOS
  -JCP http://jcp.aip.org/jcp/top.jsp?vol=\$VOL&amp;pg=\$PAGE
  -JPC http://pubs.acs.org/journals/query/subscriberResults.jsp?Research=true&amp;yearrange1=ASAP&amp;yearrange3=current&amp;cit_qjrn=jpchax&styear=YYYY&endyear=YYYY&vol=\$VOL&spn=\$PAGE
  -ChemRev http://pubs.acs.org/journals/query/subscriberResults.jsp?Research=true&amp;yearrange1=ASAP&amp;yearrange3=current&amp;cit_qjrn=chreay&styear=YYYY&endyear=YYYY&vol=\$VOL&spn=\$PAGE
  +JCP,J.Chem.Phys. http://jcp.aip.org/jcp/top.jsp?vol=\$VOL&amp;pg=\$PAGE
  +JACS,J.Am.Chem.Soc. http://pubs.acs.org/journals/query/subscriberResults.jsp?Research=true&amp;yearrange1=ASAP&amp;yearrange3=current&amp;cit_qjrn=jacsat&styear=YYYY&endyear=YYYY&vol=\$VOL&spn=\$PAGE
  +JPC,J.Phys.Chem. http://pubs.acs.org/journals/query/subscriberResults.jsp?Research=true&amp;yearrange1=ASAP&amp;yearrange3=current&amp;cit_qjrn=jpchax&styear=YYYY&endyear=YYYY&vol=\$VOL&spn=\$PAGE
  +JPCA,J.Phys.Chem.A http://pubs.acs.org/journals/query/subscriberResults.jsp?Research=true&amp;yearrange1=ASAP&amp;yearrange3=current&amp;cit_qjrn=jpcafh&styear=YYYY&endyear=YYYY&vol=\$VOL&spn=\$PAGE
  +ChemRev,Chem.Rev. http://pubs.acs.org/journals/query/subscriberResults.jsp?Research=true&amp;yearrange1=ASAP&amp;yearrange3=current&amp;cit_qjrn=chreay&styear=YYYY&endyear=YYYY&vol=\$VOL&spn=\$PAGE
  +RMP,Rev.Mod.Phys. http://link.aps.org/volpage?journal=RMP&volume=\$VOL&id=\$PAGE
  +PR,Phys.Rev. http://link.aps.org/volpage?journal=PR&volume=\$VOL&id=\$PAGE
  +PRL,Phys.Rev.Lett. http://link.aps.org/volpage?journal=PRL&volume=\$VOL&id=\$PAGE
  +
   EOS;
   
     $DEFAULT_CITE="JCP";
  @@ -23,9 +29,9 @@
     list($vol,$page)=explode(',',preg_replace('/ /','',$match[2]));
   
     if ($match[1]) {
  -    if (strtolower($match[1][0])=="k") $lang="JKCS";
  -    else $lang=$match[1];
  -  } else $lang=$DEFAULT_CITE;
  +    if (strtolower($match[1][0])=="k") $cite="JKCS";
  +    else $cite=$match[1];
  +  } else $cite=$DEFAULT_CITE;
   
     $attr='';
     if ($match[3]) {
  @@ -54,12 +60,15 @@
           $dum[]=$CITE_list[$DEFAULT_CITE][1];
        else if (sizeof($dum) !=3) continue;
   
  -     $CITE_list[$dum[0]]=array($dum[1],$dum[2]);
  +     list($dum[0],$name)=explode(',',$dum[0]);
  +     $CITE_list[$dum[0]]=array($dum[1],$dum[2],$name);
     }
   
  -  if ($CITE_list[$lang]) {
  -     $citelink=$CITE_list[$lang][0];
  -     $imglink=$CITE_list[$lang][1];
  +  if ($CITE_list[$cite]) {
  +     $citelink=$CITE_list[$cite][0];
  +     $imglink=$CITE_list[$cite][1];
  +     $citename=$CITE_list[$cite][2];
  +     if ($citename) $cite=str_replace('.','. ',$citename);
     } else {
        $citelink=$CITE_list[$DEFAULT_CITE][0];
        $imglink=$CITE_list[$DEFAULT_CITE][1];
  @@ -69,7 +78,7 @@
     $citelink=str_replace('$PAGE',$page,$citelink);
   
     return $formatter->icon['www'].'<a href='."'$citelink'>".
  -     $lang.' <strong>'.$vol.'</strong>, '.$page.'</a>';
  +     $cite.' <strong>'.$vol.'</strong>, '.$page.'</a> ';
   }
   
   ?>
  
  
  


wkpark      2005/08/08 14:59:56

  Modified:    plugin/filter cite.php
  Log:
  add more CiteMap entries
  
  Revision  Changes    Path
  1.2       +11 -1     moniwiki/plugin/filter/cite.php
  
  Index: cite.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/filter/cite.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- cite.php	12 Apr 2005 13:31:07 -0000	1.1
  +++ cite.php	8 Aug 2005 05:59:56 -0000	1.2
  @@ -3,20 +3,30 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a cite filter plugin for the MoniWiki
   //
  -// $Id: cite.php,v 1.1 2005/04/12 13:31:07 wkpark Exp $
  +// $Id: cite.php,v 1.2 2005/08/08 05:59:56 wkpark Exp $
   
   function filter_cite($formatter,$value,$options) {
     $cite_rule=array(
       '/J\.\s*Chem\.\s*Phys\.,?\s*([0-9]+)\s*,\s*([0-9]+)(?>\s)/',
       '/J\.\s*Phys\.\s*Chem\.,?\s*([0-9]+)\s*,\s*([0-9]+)(?>\s)/',
  +    '/J\.\s*Phys\.\s*Chem\.\s*A,?\s*([0-9]+)\s*,\s*([0-9]+)(?>\s)/',
       '/Chem\.\s*Rev\.\s,?\s*([0-9]+)\s*,\s*([0-9]+)(?>\s)/',
       '/J\.\s*Am\.\s*Chem\.\s*Soc\.\s,?\s*([0-9]+)\s*,\s*([0-9]+)(?>\s)/',
  +    '/Rev\.\s*Mod\.\s*Phys\.\s,?\s*([0-9]+)\s*,\s*([0-9]+)(?>\s)/',
  +    '/Phys\.\s*Rev\.\s*Lett\.\s,?\s*([0-9]+)\s*,\s*([0-9]+)(?>\s)/',
  +    '/Phys\.\s*Rev\.\s,?\s*([0-9]+)\s*,\s*([0-9]+)(?>\s)/',
  +    '/Phys\.\s*Rev\.\s([A-E]{1}),?\s*([0-9]+)\s*,\s*([0-9]+)(?>\s)/',
       );
     $cite_repl=array(
       '[[Cite(JCP \\1,\\2)]]', 
       '[[Cite(JPC \\1,\\2)]]', 
  +    '[[Cite(JPCA \\1,\\2)]]', 
       '[[Cite(ChemRev \\1,\\2)]]', 
       '[[Cite(JACS \\1,\\2)]]', 
  +    '[[Cite(RMP \\1,\\2)]]', 
  +    '[[Cite(PRL \\1,\\2)]]', 
  +    '[[Cite(PR \\1,\\2)]]', 
  +    '[[Cite(PR\\1 \\2,\\3)]]', 
       );
     $value=strtr($value,"\t",' ');
     return preg_replace($cite_rule,$cite_repl,$value);
  
  
  


wkpark      2005/08/08 15:01:02

  Modified:    plugin   Gallery.php
  Log:
  add a class tag 'imgGallery'
  
  Revision  Changes    Path
  1.20      +3 -3      moniwiki/plugin/Gallery.php
  
  Index: Gallery.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Gallery.php,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- Gallery.php	4 May 2005 07:37:26 -0000	1.19
  +++ Gallery.php	8 Aug 2005 06:01:02 -0000	1.20
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Gallery]]
   //
  -// $Id: Gallery.php,v 1.19 2005/05/04 07:37:26 wkpark Exp $
  +// $Id: Gallery.php,v 1.20 2005/08/08 06:01:02 wkpark Exp $
   
   function get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -216,14 +216,14 @@
         if (!$selected and file_exists($dir."/thumbnails/".$file)) {
           $thumb=($key == $value) ? $prefix.'thumbnails/'.$id:
             str_replace('value=','value=thumbnails/'.$id,$prefix);
  -        $object="<img src='$thumb' alt='$file' />";
  +        $object="<img class='imgGallery' src='$thumb' alt='$file' />";
         } else {
           $nwidth=$width;
           if (function_exists('getimagesize')) {
             list($nwidth, $height, $type, $attr) = getimagesize($dir.'/'.$file);
             $nwidth=($nwidth > $width) ? $width:$nwidth;
           }
  -        $object="<img src='$linksrc' width='$nwidth' alt='$file' />";
  +        $object="<img class='imgGallery' src='$linksrc' width='$nwidth' alt='$file' />";
         }
       }
       else
  
  
  


wkpark      2005/08/08 15:13:50

  Modified:    plugin   Comment.php
  Log:
  fix PR #300899
  
  Revision  Changes    Path
  1.12      +5 -2      moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- Comment.php	14 Apr 2005 02:02:19 -0000	1.11
  +++ Comment.php	8 Aug 2005 06:13:50 -0000	1.12
  @@ -6,7 +6,7 @@
   // Usage: [[Comment]], ?action=comment
   //
   //
  -// $Id: Comment.php,v 1.11 2005/04/14 02:02:19 wkpark Exp $
  +// $Id: Comment.php,v 1.12 2005/08/08 06:13:50 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $HTTP_USER_AGENT;
  @@ -120,7 +120,10 @@
     else $id=$options['id'];
   
     if ($options['nosig']) $savetext="----\n$savetext\n";
  -  else $savetext="----\n$savetext @SIG@\n";
  +  else if($options['id']=='Anonymous')
  +    $savetext="----\n$savetext -- $id @DATE@\n";
  +  else
  +    $savetext="----\n$savetext @SIG@\n";
   
     if (preg_match("/\n##Comment\n/i",$body))
       $body= preg_replace("/\n##Comment\n/i","\n##Comment\n$savetext",$body,1);
  
  
  


wkpark      2005/08/08 15:35:33

  Modified:    plugin   Attachment.php
  Log:
  fixed PR #300877 reported by wafe
  
  Revision  Changes    Path
  1.16      +2 -2      moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- Attachment.php	8 Apr 2005 04:26:17 -0000	1.15
  +++ Attachment.php	8 Aug 2005 06:35:33 -0000	1.16
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.15 2005/04/08 04:26:17 wkpark Exp $
  +// $Id: Attachment.php,v 1.16 2005/08/08 06:35:33 wkpark Exp $
   
   function macro_Attachment($formatter,$value,$option='') {
     global $DBInfo;
  @@ -27,13 +27,13 @@
         $ntext=macro_Attachment($formatter,$fname,1);
       }
       if (preg_match("/\.(png|gif|jpeg|jpg)$/i",$ntext)) {
  -      $img_link='<img src="'.$ntext.'" alt="'.$text.'" border="0" />';
         if (!file_exists($ntext)) {
           $mydownload='UploadFile&amp;rename='.$fname;
           $text=sprintf(_("Upload new Attachment \"%s\""),$fname);
           $text=str_replace('"','\'',$text);
         }
         $ntext=qualifiedUrl($DBInfo->url_prefix.'/'.$ntext);
  +      $img_link='<img src="'.$ntext.'" alt="'.$text.'" border="0" />';
       }
     }
   
  
  
  


wkpark      2005/08/08 15:44:42

  Modified:    plugin   Bar.php
  Log:
  more fixes
  
  Revision  Changes    Path
  1.3       +16 -6     moniwiki/plugin/Bar.php
  
  Index: Bar.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Bar.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Bar.php	2 Nov 2004 18:01:31 -0000	1.2
  +++ Bar.php	8 Aug 2005 06:44:42 -0000	1.3
  @@ -5,14 +5,15 @@
   //
   // Usage: [[Bar(10%)]] [[Bar(0.5)]]
   //
  -// $Id: Bar.php,v 1.2 2004/11/02 18:01:31 wkpark Exp $
  +// $Id: Bar.php,v 1.3 2005/08/08 06:44:42 wkpark Exp $
   
   function macro_Bar($formatter,$value) {
       global $DBInfo;
  +    static $width;
   
       $imgdir=$DBInfo->imgs_dir;
       $iconset='blue';
  -    $full_width=0;
  +    $full_width=1;
       $notext=0;
   
       # parse args
  @@ -37,14 +38,23 @@
   
       $ival=0;
       if ($val < 100.0) $ival=100.0 - $val;
  -    $img="<span style='white-space: nowrap'>";
  +    $width=300;
  +    if ($width) {
  +        $fval=(int)($val*$width/100.0).'px';
  +        $ival=(int)($ival*$width/100.0).'px';
  +    } else {
  +        $val.='%';
  +        $ival.='%';
  +    }
  +    $img="<div style='white-space: nowrap;'>";
  +    $img.="<div style='white-space: nowrap;left-padding:30px;'>";
       $img.="<img src='$imgdir/vote/$iconset/leftbar.gif' align='middle' />";
       $img.="<span style='white-space: nowrap'>";
       $img.="<img src='$imgdir/vote/$iconset/mainbar.gif' ".
  -        "height='14' width='$val%' align='middle' />";
  +        "height='14' width='$fval' align='middle' />";
       if ($full_width && $ival != 0) {
           $img.="<img src='$imgdir/vote/$iconset/b_mainbar.gif' ".
  -            " height='14' width='$ival%' align='middle' /></span>";
  +            " height='14' width='$ival' align='middle' /></span>";
           $img.="<img src='$imgdir/vote/$iconset/b_rightbar.gif' align='middle' />";
       } else {
           $img.="</span><img src='$imgdir/vote/$iconset/rightbar.gif' align='middle' />";
  @@ -52,7 +62,7 @@
       $state=((int)$val).'%';
       if (!$notext)
           $img.=' '.$state;
  -    $img.='</span>';
  +    $img.='</div></div>';
       return $img;
   }
   
  
  
  


wkpark      2005/08/08 16:31:54

  Added:       lib      compat.php version.CVS.php
  Log:
  add missing files
  
  Revision  Changes    Path
  1.1                  moniwiki/lib/compat.php
  
  Index: compat.php
  ===================================================================
  <?php
  // Copyright 2004 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  //
  // $Id: compat.php,v 1.1 2005/08/08 07:31:54 wkpark Exp $
  //
  function utf8_mb_encode($str) {
      # mb_encode_numericentity() like function
      # to make UTF-8 encoded str to numeric entities 
      $len=strlen($str);
  
      $out='';
      for ($i=0;$i<$len;$i++) {
          if ((ord($str[$i]) & 0xF0) == 0xE0) { # Now only 3-byte UTF-8 supported
              $uni1=((ord($str[$i]) & 0x0f) <<4) | (($str[$i+1] & 0x7f) >>2);
              $uni2=((ord($str[$i+1]) & 0x7f) <<6) | (ord($str[$i+2]) & 0x7f);
              $uni='&#x'.(dechex(($uni1<<8)+$uni2)).';';
              $out.=$uni;
              $i+=2;
          } else
              $out.=$str[$i];
      }
  
      return $out;
  }
  
  // vim:sts=4:et:sw=4
  ?>
  
  
  
  1.1                  moniwiki/lib/version.CVS.php
  
  Index: version.CVS.php
  ===================================================================
  <?php
  // Copyright 2004-2005 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a CVS versioning plugin for the MoniWiki
  //
  // $Id: version.CVS.php,v 1.1 2005/08/08 07:31:54 wkpark Exp $
  // WARNING: experimental
  //
  
  class Version_CVS extends Version_RCS {
    var $DB;
  
    function Version_CVS($DB) {
      $this->DB=$DB;
  
      $this->cwd=getcwd();
  
      $this->cvs_root=$DB->cvs_root;
      $this->cvs_user=$DB->cvs_user;
      $this->modname=$DB->sitename; // XXX
      if ($this->cvs_root) {
        putenv("CVSROOT=".$this->cvs_root);
  
        if ($this->cvs_root[0] == '/' and is_dir($this->cvs_root)) {
          if (is_dir($this->cvs_root.'/'.$this->modname)) {
            // Is site could be Korean or other local charset ?
            // Is modname could contain any space chars ?
          } else {
            // import
            // How can I make a revision info as 1.1 ?
            $log = $this->_import($this->modname);
            $this->_checkout($this->modname);
          }
        }
      }
    }
  
    function _import($modname) {
      chdir($this->DB->text_dir);
      $fp=popen("cvs import -m \"".$this->DB->sitename."\" ".
        $this->modname." VENDOR INIT","r");
  
      $out='';
      if ($fp) {
        while (!feof($fp)) {
          $line=fgets($fp,2048);
          $out.= $line;
        }
        pclose($fp);
      }
      chdir($this->cwd);
      return $out;
    }
  
    function _checkout($modname) {
      @mkdir($this->DB->text_dir."/CVS",0777);
  
      chdir($this->DB->vartmp_dir);
      system("cvs checkout $modname > /dev/null",$ret);
      chdir($this->cwd);
      // Entries  Repository  Root
      foreach (array('Entries','Repository','Root') as $file)
        copy($this->DB->vartmp_dir."/".$modname."/CVS/$file",
          $this->DB->text_dir."/CVS/$file");
      return $ret ? false : true;
    }
  
    function _filename($pagename) {
      # Return filename where this word/page should be stored.
      return $this->DB->_getPageKey($pagename);
    }
  
    function co($pagename,$rev,$opt='') {
      $filename= $this->_filename($pagename);
  
      chdir($this->DB->text_dir);
      $fp=@popen("cvs co -p -r$rev ".$this->modname."/".$filename,"r");
      chdir($this->cwd);
      $out='';
      if ($fp) {
        while (!feof($fp)) {
          $line=fgets($fp,2048);
          $out.= $line;
        }
        pclose($fp);
      }
      return $out;
    }
  
    function ci($pagename,$log) {
      $key=$this->_filename($pagename);
      chdir($this->DB->text_dir);
      //$ret=system("cvs commit -q -t-\"".$pagename."\" -m\"".$log."\" ".$key);
      if (!file_exists($this->cvs_root."/".$this->modname."/".$key.",v"))
         $ret=system("cvs add -m\"".$log."\" ".$key." >/dev/null");
      $ret=system("cvs commit -m\"".$log."\" ".$key." >/dev/null");
      chdir($this->cwd);
    }
  
    function _add($pagename,$log) {
      $key=$this->_filename($pagename);
      chdir($this->DB->text_dir);
      $ret=system("cvs add -m\"".$log."\" ".$key);
      #$ret=system("cvs add -q -t-\"".$pagename."\" -m\"".$log."\" ".$key);
      chdir($this->cwd);
    }
  
    function rlog($pagename,$rev='',$opt='',$oldopt='') {
      // oldopts are incompatible options only supported by the rlog in the rcs
      if ($rev)
        $rev = "-r$rev";
      $filename=$this->_filename($pagename);
  
      chdir($this->DB->text_dir);
      $fp= popen("cvs log $opt $rev ".$filename,"r");
      chdir($this->cwd);
      $out='';
      if ($fp) {
        while (!feof($fp)) {
          $line=fgets($fp,1024);
          $out .= $line;
        }
        pclose($fp);
      }
      return $out;
    }
  
    function diff($pagename,$option) {
      $filename=$this->_filename($pagename);
      chdir($this->DB->text_dir);
      $fp= popen("cvs diff -u $option ".$filename,'r');
      chdir($this->cwd);
  
      if (!$fp) return '';
      while (!feof($fp)) {
        # trashing first two lines XXX
        $line=fgets($fp,1024);
        if (preg_match('/^--- /',$line)) {
          $line=fgets($fp,1024);
          break;
        }
      }
      while (!feof($fp)) {
        $line=fgets($fp,1024);
        $out.= $line;
      }
      pclose($fp);
      return $out;
    }
  
    function purge($pagename,$rev) {
    }
  
    function delete($pagename) {
      $filename=$this->_filename($pagename);
      chdir($this->DB->text_dir);
      system("cvs rm ".$filename);
      chdir($this->cwd);
    }
  
    function rename($pagename,$new) {
      $keyname=$this->DB->_getPageKey($new);
      $oname=$this->DB->_getPageKey($pagename);
      rename($this->cvs_root."/".$this->modname."/"."$oname,v",
             $this->cvs_root."/".$this->modname."/"."$oname,v");
    }
  }
  
  // vim:et:ts=8:sts=2:sw=2
  ?>
  
  
  


wkpark      2005/08/08 16:32:19

  Modified:    lib      checkip.php
  Log:
  add a Id tag
  
  Revision  Changes    Path
  1.3       +1 -0      moniwiki/lib/checkip.php
  
  Index: checkip.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/checkip.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- checkip.php	26 Aug 2004 10:40:00 -0000	1.2
  +++ checkip.php	8 Aug 2005 07:32:19 -0000	1.3
  @@ -3,6 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   //
   // See also http://kr.php.net/ip2long/
  +// $Id: checkip.php,v 1.3 2005/08/08 07:32:19 wkpark Exp $
   // 
   
   function is_valid_network($network)
  
  
  


wkpark      2005/08/08 16:33:25

  Added:       imgs/moni2 www.png xml.png
  Log:
  commit
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/moni2/www.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni2/xml.png
  
  	<<Binary file>>
  
  


wkpark      2005/08/08 16:42:03

  Modified:    locale   Makefile
  Log:
  update
  
  Revision  Changes    Path
  1.4       +34 -1     moniwiki/locale/Makefile
  
  Index: Makefile
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/Makefile,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Makefile	2 Oct 2004 03:31:26 -0000	1.3
  +++ Makefile	8 Aug 2005 07:42:03 -0000	1.4
  @@ -1,4 +1,4 @@
  -# $Id: Makefile,v 1.3 2004/10/02 03:31:26 wkpark Exp $
  +# $Id: Makefile,v 1.4 2005/08/08 07:42:03 wkpark Exp $
   #
   # locale/Makefile
   #
  @@ -51,18 +51,25 @@
   po: po/ko.po
   mo: ko/LC_MESSAGES/moniwiki.mo ko/LC_MESSAGES/moniwiki.php
   #
  +${POT_FILE}: ../plugin/ABBR.php
   ${POT_FILE}: ../plugin/Anchor.php
   ${POT_FILE}: ../plugin/Attachment.php
   ${POT_FILE}: ../plugin/BabelFish.php
  +${POT_FILE}: ../plugin/Bar.php
   ${POT_FILE}: ../plugin/Blog.php
   ${POT_FILE}: ../plugin/BlogArchives.php
   ${POT_FILE}: ../plugin/BlogCategories.php
   ${POT_FILE}: ../plugin/BlogChanges.php
   ${POT_FILE}: ../plugin/Calendar.php
  +${POT_FILE}: ../plugin/Cite.php
  +${POT_FILE}: ../plugin/Clip.php
   ${POT_FILE}: ../plugin/Comment.php
  +${POT_FILE}: ../plugin/Diff.php
  +${POT_FILE}: ../plugin/DisMol.php
   ${POT_FILE}: ../plugin/Draw.php
   ${POT_FILE}: ../plugin/DueDate.php
   ${POT_FILE}: ../plugin/Echo.php
  +${POT_FILE}: ../plugin/EditToolbar.php
   ${POT_FILE}: ../plugin/EngDic.php
   ${POT_FILE}: ../plugin/FastSearch.php
   ${POT_FILE}: ../plugin/Fortune.php
  @@ -71,16 +78,23 @@
   ${POT_FILE}: ../plugin/GetText.php
   ${POT_FILE}: ../plugin/ISBN.php
   ${POT_FILE}: ../plugin/Icon.php
  +${POT_FILE}: ../plugin/ImportTable.php
   ${POT_FILE}: ../plugin/ImportUrl.php
   ${POT_FILE}: ../plugin/Include.php
  +${POT_FILE}: ../plugin/Info.php
  +${POT_FILE}: ../plugin/JME.php
   ${POT_FILE}: ../plugin/LikePages.php
   ${POT_FILE}: ../plugin/MailTo.php
  +${POT_FILE}: ../plugin/Media.php
   ${POT_FILE}: ../plugin/Navigation.php
  +${POT_FILE}: ../plugin/Note.php
   ${POT_FILE}: ../plugin/OeKaki.php
  +${POT_FILE}: ../plugin/PGBR.php
   ${POT_FILE}: ../plugin/PageHits.php
   ${POT_FILE}: ../plugin/Play.php
   ${POT_FILE}: ../plugin/RandomBanner.php
   ${POT_FILE}: ../plugin/RecentChanges.php
  +${POT_FILE}: ../plugin/SearchPlugin.php
   ${POT_FILE}: ../plugin/ShowSmiley.php
   ${POT_FILE}: ../plugin/SmileyChooser.php
   ${POT_FILE}: ../plugin/SystemInfo.php
  @@ -88,11 +102,13 @@
   ${POT_FILE}: ../plugin/TwinPages.php
   ${POT_FILE}: ../plugin/UWL.php
   ${POT_FILE}: ../plugin/UploadFile.php
  +${POT_FILE}: ../plugin/UploadForm.php
   ${POT_FILE}: ../plugin/UploadedFiles.php
   ${POT_FILE}: ../plugin/VisualTour.php
   ${POT_FILE}: ../plugin/Vote.php
   ${POT_FILE}: ../plugin/WantedPages.php
   ${POT_FILE}: ../plugin/WordIndex.php
  +${POT_FILE}: ../plugin/autogoto.php
   ${POT_FILE}: ../plugin/backup.php
   ${POT_FILE}: ../plugin/blogrss.php
   ${POT_FILE}: ../plugin/bookmark.php
  @@ -100,8 +116,13 @@
   ${POT_FILE}: ../plugin/css.php
   ${POT_FILE}: ../plugin/dot.php
   ${POT_FILE}: ../plugin/download.php
  +${POT_FILE}: ../plugin/filter.php
  +${POT_FILE}: ../plugin/filter/cite.php
  +${POT_FILE}: ../plugin/filter/sample.php
  +${POT_FILE}: ../plugin/fixmoin.php
   ${POT_FILE}: ../plugin/foaf.php
   ${POT_FILE}: ../plugin/format.php
  +${POT_FILE}: ../plugin/freemind.php
   ${POT_FILE}: ../plugin/home.php
   ${POT_FILE}: ../plugin/login.php
   ${POT_FILE}: ../plugin/man_get.php
  @@ -109,22 +130,31 @@
   ${POT_FILE}: ../plugin/moniedit.php
   ${POT_FILE}: ../plugin/moztab.php
   ${POT_FILE}: ../plugin/new.php
  +${POT_FILE}: ../plugin/notitle.php
   ${POT_FILE}: ../plugin/print.php
   ${POT_FILE}: ../plugin/processor/abc.php
  +${POT_FILE}: ../plugin/processor/asciimathml.php
   ${POT_FILE}: ../plugin/processor/blog.php
   ${POT_FILE}: ../plugin/processor/chat.php
   ${POT_FILE}: ../plugin/processor/diff.php
  +${POT_FILE}: ../plugin/processor/dismol.php
   ${POT_FILE}: ../plugin/processor/dot.php
  +${POT_FILE}: ../plugin/processor/freemind.php
  +${POT_FILE}: ../plugin/processor/geshi.php
   ${POT_FILE}: ../plugin/processor/gnuplot.php
   ${POT_FILE}: ../plugin/processor/hello.php
  +${POT_FILE}: ../plugin/processor/itex.php
   ${POT_FILE}: ../plugin/processor/jade.php
  +${POT_FILE}: ../plugin/processor/jmol.php
   ${POT_FILE}: ../plugin/processor/latex.php
   ${POT_FILE}: ../plugin/processor/linuxdoc.php
  +${POT_FILE}: ../plugin/processor/live3d.php
   ${POT_FILE}: ../plugin/processor/man.php
   ${POT_FILE}: ../plugin/processor/metapost.php
   ${POT_FILE}: ../plugin/processor/mimetex.php
   ${POT_FILE}: ../plugin/processor/octave.php
   ${POT_FILE}: ../plugin/processor/pic.php
  +${POT_FILE}: ../plugin/processor/pre.php
   ${POT_FILE}: ../plugin/processor/python.php
   ${POT_FILE}: ../plugin/processor/syntax.php
   ${POT_FILE}: ../plugin/processor/text_xml.php
  @@ -140,7 +170,10 @@
   ${POT_FILE}: ../plugin/rss.php
   ${POT_FILE}: ../plugin/rss_blog.php
   ${POT_FILE}: ../plugin/rss_rc.php
  +${POT_FILE}: ../plugin/scrap.php
  +${POT_FILE}: ../plugin/security/community.php
   ${POT_FILE}: ../plugin/security/desktop.php
  +${POT_FILE}: ../plugin/security/htaccesslogin.php
   ${POT_FILE}: ../plugin/security/mustlogin.php
   ${POT_FILE}: ../plugin/security/needtologin.php
   ${POT_FILE}: ../plugin/security/sample.php
  
  
  


wkpark      2005/08/08 16:42:03

  Modified:    locale/po fr.po ko.po moniwiki.pot
  Log:
  update
  
  Revision  Changes    Path
  1.12      +266 -175  moniwiki/locale/po/fr.po
  
  Index: fr.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/fr.po,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- fr.po	4 Jan 2005 09:06:03 -0000	1.11
  +++ fr.po	8 Aug 2005 07:42:03 -0000	1.12
  @@ -3,7 +3,7 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1\n"
  -"POT-Creation-Date: 2005-01-04 18:08+0900\n"
  +"POT-Creation-Date: 2005-08-08 16:39+0900\n"
   "PO-Revision-Date: 2003-08-17 22:51+0900\n"
   "Last-Translator: Serge Stinckwich <Serge.Stinckwich@info.unicaen.fr>\n"
   "Language-Team: fr <fr@li.org>\n"
  @@ -12,13 +12,13 @@
   "Content-Transfer-Encoding: 8bit\n"
   
   # ../plugin/Attachment.php:24
  -#: ../plugin/Attachment.php:82
  +#: ../plugin/Attachment.php:32 ../plugin/Attachment.php:101
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr "Tlcharger le nouvel attachement \"%s\""
   
   # ../plugin/Attachment.php:24
  -#: ../plugin/Attachment.php:85
  +#: ../plugin/Attachment.php:104
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
  @@ -39,65 +39,65 @@
   msgstr ""
   
   # ../plugin/Blog.php:78
  -#: ../plugin/Blog.php:109
  +#: ../plugin/Blog.php:110
   #, c-format
   msgid "\"%s\" is updated"
   msgstr "\"%s\" est mis  jour"
   
   # ../plugin/Blog.php:83
  -#: ../plugin/Blog.php:114
  +#: ../plugin/Blog.php:115
   msgid "Add Blog"
   msgstr "Ajouter un blog"
   
   # ../plugin/sendping.php:55
  -#: ../plugin/Blog.php:154
  +#: ../plugin/Blog.php:155
   msgid "Error: No blog entry found!"
   msgstr ""
   
  -#: ../plugin/Blog.php:162 ../plugin/Comment.php:109
  +#: ../plugin/Blog.php:163 ../plugin/Comment.php:110
   msgid "Error: Don't make a clone!"
   msgstr ""
   
   # ../plugin/Blog.php:137
  -#: ../plugin/Blog.php:179
  +#: ../plugin/Blog.php:180
   #, c-format
   msgid "Comment added to \"%s\""
   msgstr "Commentaire ajout  \"%s\""
   
   # ../plugin/Blog.php:140
  -#: ../plugin/Blog.php:182
  +#: ../plugin/Blog.php:183
   #, c-format
   msgid "Blog entry added to \"%s\""
   msgstr "Entre de blog ajout  \"%s\""
   
   # ../plugin/Blog.php:176
  -#: ../plugin/Blog.php:219
  +#: ../plugin/Blog.php:220
   #, c-format
   msgid "Add Comment to \"%s\""
   msgstr "Ajouter un commentaire  \"%s\""
   
   # ../plugin/Blog.php:178
  -#: ../plugin/Blog.php:221
  +#: ../plugin/Blog.php:222
   #, c-format
   msgid "Add Blog entry to \"%s\""
   msgstr "Ajouter une entre de blog  \"%s\""
   
  -#: ../plugin/Blog.php:235 ../plugin/Comment.php:45
  +#: ../plugin/Blog.php:236 ../plugin/Blog.php:292 ../plugin/Comment.php:46
   msgid "Name"
   msgstr ""
   
   # ../wiki.php:2950
  -#: ../plugin/Blog.php:239
  +#: ../plugin/Blog.php:240 ../plugin/Blog.php:293
   msgid "Title"
   msgstr "titre"
   
   # ../plugin/Blog.php:197
  -#: ../plugin/Blog.php:245 ../plugin/Comment.php:47
  +#: ../plugin/Blog.php:246 ../plugin/Comment.php:48
   msgid "Don't add a signature"
   msgstr "Ne pas ajouter de signature"
   
   # ../plugin/Blog.php:210
  -#: ../plugin/Blog.php:258
  +#: ../plugin/Blog.php:259
   msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
   msgstr "<b>Une rgle horizontale</b> ---- ne s'applique pas au mode blog."
   
  @@ -118,30 +118,30 @@
   
   # ../plugin/processor/blog.php:43 ../plugin/processor/blog.php:45
   #: ../plugin/BlogChanges.php:376 ../plugin/BlogChanges.php:378
  -#: ../plugin/processor/blog.php:43 ../plugin/processor/blog.php:45
  +#: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
   msgid "Anonymous"
   msgstr "Anonyme"
   
   # ../plugin/processor/blog.php:78
  -#: ../plugin/BlogChanges.php:409 ../plugin/processor/blog.php:85
  +#: ../plugin/BlogChanges.php:409 ../plugin/processor/blog.php:86
   #, c-format
   msgid "%d comment"
   msgstr "%d commentaire"
   
   # ../plugin/processor/blog.php:78
  -#: ../plugin/BlogChanges.php:409 ../plugin/processor/blog.php:85
  +#: ../plugin/BlogChanges.php:409 ../plugin/processor/blog.php:86
   #, c-format
   msgid "%d comments"
   msgstr "%d commentaires"
   
   # ../plugin/processor/blog.php:70
  -#: ../plugin/BlogChanges.php:411 ../plugin/Comment.php:98
  -#: ../plugin/processor/blog.php:77
  +#: ../plugin/BlogChanges.php:411 ../plugin/Comment.php:99
  +#: ../plugin/ImportTable.php:76 ../plugin/processor/blog.php:78
   msgid "Add comment"
   msgstr "Ajouter un commentaire"
   
   # ../plugin/processor/blog.php:89
  -#: ../plugin/BlogChanges.php:421 ../plugin/processor/blog.php:96
  +#: ../plugin/BlogChanges.php:421 ../plugin/processor/blog.php:97
   msgid "track back"
   msgstr ""
   
  @@ -154,53 +154,103 @@
   msgid "Next"
   msgstr ""
   
  +# ../plugin/OeKaki.php:118
  +#: ../plugin/Clip.php:28
  +msgid "Paste a new picture"
  +msgstr ""
  +
  +# ../plugin/Draw.php:58
  +#: ../plugin/Clip.php:50 ../plugin/Draw.php:108
  +msgid "Fatal error !"
  +msgstr "Erreur fatale !"
  +
  +# ../plugin/Draw.php:61
  +#: ../plugin/Clip.php:53 ../plugin/Draw.php:111
  +msgid "No filename given"
  +msgstr "Aucun nom de fichier donn"
  +
  +#: ../plugin/Clip.php:72
  +msgid "Clipboard"
  +msgstr ""
  +
  +#: ../plugin/Clip.php:81
  +msgid "Cut & Paste a Clipboard Image"
  +msgstr ""
  +
   # ../plugin/processor/blog.php:78
  -#: ../plugin/Comment.php:48
  +#: ../plugin/Comment.php:49
   msgid "Comment"
   msgstr "commentaire"
   
   # ../wikilib.php:482
  -#: ../plugin/Comment.php:49 ../wikilib.php:571
  +#: ../plugin/Comment.php:50 ../plugin/ImportTable.php:67 ../wikilib.php:631
   msgid "Preview"
   msgstr "Prvisualisation"
   
   # ../wikilib.php:748 ../wikilib.php:777
  -#: ../plugin/Comment.php:89
  +#: ../plugin/Comment.php:90
   msgid "Preview comment"
   msgstr ""
   
   # ../plugin/Vote.php:109
  -#: ../plugin/Comment.php:132
  +#: ../plugin/Comment.php:136
   #, c-format
   msgid "%s is commented successfully"
   msgstr "Vote russi"
   
   # ../plugin/Vote.php:109
  -#: ../plugin/Comment.php:133
  +#: ../plugin/Comment.php:137
   msgid "Comment added successfully"
   msgstr ""
   
  +# ../wiki.php:2338 ../wiki.php:2373 ../wikilib.php:770
  +#: ../plugin/Diff.php:43 ../plugin/Diff.php:82 ../wikilib.php:1008
  +msgid "No difference found"
  +msgstr "Aucune diffrence trouv"
  +
  +# ../wiki.php:2341
  +#: ../plugin/Diff.php:45
  +msgid "Difference between yours and the current"
  +msgstr "Diffrence entre votre version et la courante"
  +
  +# ../wiki.php:2211 ../wiki.php:2360
  +#: ../plugin/Diff.php:66 ../plugin/Info.php:125
  +msgid "No older revisions available"
  +msgstr "Aucune rvision plus ancienne disponible"
  +
  +# ../wikilib.php:803
  +#: ../plugin/Diff.php:71 ../plugin/Info.php:131
  +msgid "Version info is not available in this wiki"
  +msgstr ""
  +
  +# ../wiki.php:2376
  +#: ../plugin/Diff.php:84
  +msgid "Difference between versions"
  +msgstr "Diffrence entre les versions"
  +
  +# ../wiki.php:2378
  +#: ../plugin/Diff.php:86
  +#, c-format
  +msgid "Difference between r%s and r%s"
  +msgstr "Diffrence entre r%s et r%s"
  +
  +# ../wiki.php:2382
  +#: ../plugin/Diff.php:89
  +#, c-format
  +msgid "Difference between r%s and the current"
  +msgstr "Diffrence entre r%s et la version courante"
  +
   # ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
   #: ../plugin/Draw.php:29 ../plugin/OeKaki.php:36
   msgid "Draw new picture"
   msgstr "Faire un nouveau dessin"
   
   # ../plugin/Draw.php:48
  -#: ../plugin/Draw.php:81 ../plugin/UploadFile.php:146
  +#: ../plugin/Draw.php:81 ../plugin/UploadFile.php:154
   #, c-format
   msgid "Fail to copy \"%s\" to \"%s\""
   msgstr "Impossible de copier \"%s\" vers \"%s\""
   
  -# ../plugin/Draw.php:58
  -#: ../plugin/Draw.php:108
  -msgid "Fatal error !"
  -msgstr "Erreur fatale !"
  -
  -# ../plugin/Draw.php:61
  -#: ../plugin/Draw.php:111
  -msgid "No filename given"
  -msgstr "Aucun nom de fichier donn"
  -
   # ../plugin/Draw.php:82
   #: ../plugin/Draw.php:132
   msgid "Edit drawing"
  @@ -247,40 +297,78 @@
   msgstr ""
   
   # ../wikilib.php:1483
  -#: ../plugin/FullSearch.php:103 ../wikilib.php:1695
  +#: ../plugin/FullSearch.php:103 ../wikilib.php:1778
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "Expression de recherche \"%s\" invalide"
   
   # ../plugin/processor/blog.php:70
  -#: ../plugin/Gallery.php:225 ../plugin/Gallery.php:237
  +#: ../plugin/Gallery.php:244 ../plugin/Gallery.php:256
   msgid "add comment"
   msgstr ""
   
   # ../plugin/processor/blog.php:78
  -#: ../plugin/Gallery.php:234
  +#: ../plugin/Gallery.php:253
   msgid "show comments"
   msgstr ""
   
   # ../wikilib.php:769
  -#: ../plugin/Gallery.php:277 ../plugin/Gallery.php:280 ../wikilib.php:934
  +#: ../plugin/Gallery.php:296 ../plugin/Gallery.php:299 ../wikilib.php:1007
   #, c-format
   msgid "Go back or return to %s"
   msgstr "Revenir en arrire ou retourner  %s"
   
  -#: ../plugin/Gallery.php:278
  +#: ../plugin/Gallery.php:297
   msgid "Comments are edited"
   msgstr ""
   
   # ../plugin/Blog.php:137
  -#: ../plugin/Gallery.php:281
  +#: ../plugin/Gallery.php:300
   msgid "Comments is added"
   msgstr ""
   
  +#: ../plugin/ImportTable.php:32
  +msgid "Convert"
  +msgstr ""
  +
   #: ../plugin/ImportUrl.php:105
   msgid "Import URL"
   msgstr ""
   
  +# ../wiki.php:2110
  +#: ../plugin/Info.php:15
  +msgid "Revision History"
  +msgstr "Historique de rvision"
  +
  +# ../wikilib.php:507
  +#: ../plugin/Info.php:116
  +#, c-format
  +msgid "Info. for %s"
  +msgstr "Information sur %s"
  +
  +#: ../plugin/JME.php:55
  +#, c-format
  +msgid "Draw a new molecule '%s'"
  +msgstr ""
  +
  +# ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
  +#: ../plugin/JME.php:57
  +msgid "Draw a new molecule"
  +msgstr ""
  +
  +# ../plugin/Vote.php:109
  +#: ../plugin/JME.php:95
  +msgid "Molecule successfully added"
  +msgstr ""
  +
  +#: ../plugin/JME.php:101
  +msgid "Edit Molecule"
  +msgstr ""
  +
  +#: ../plugin/JME.php:131
  +msgid "Edit new molecule"
  +msgstr ""
  +
   #: ../plugin/LikePages.php:109
   msgid "These pages share a similar word..."
   msgstr ""
  @@ -312,7 +400,7 @@
   msgstr ""
   
   # ../plugin/man_get.php:23
  -#: ../plugin/Navigation.php:14
  +#: ../plugin/Navigation.php:19
   msgid "No Index page found"
   msgstr ""
   
  @@ -326,7 +414,7 @@
   msgid "Edit Image"
   msgstr "diter l'image"
   
  -#: ../plugin/RecentChanges.php:156
  +#: ../plugin/RecentChanges.php:158
   msgid "set bookmark"
   msgstr ""
   
  @@ -337,7 +425,7 @@
   msgstr "TwinPages de %s"
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../plugin/TwinPages.php:18 ../wiki.php:2153 ../wiki.php:3292
  +#: ../plugin/TwinPages.php:18 ../wiki.php:2233 ../wiki.php:3400
   msgid "See TwinPages: "
   msgstr "Voir TwinPages: "
   
  @@ -352,28 +440,37 @@
   msgid "%s is not allowed to upload"
   msgstr "%s n'est pas une action valide"
   
  -# ../wikilib.php:887
  +#: ../plugin/UploadFile.php:127
  +#, c-format
  +msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
  +msgstr ""
  +
   #: ../plugin/UploadFile.php:155
  +msgid "Please check your php.ini setting"
  +msgstr ""
  +
  +# ../wikilib.php:887
  +#: ../plugin/UploadFile.php:164
   #, c-format
   msgid "File \"%s\" is uploaded successfully"
   msgstr ""
   
   # ../wikilib.php:887
  -#: ../plugin/UploadFile.php:186
  +#: ../plugin/UploadFile.php:195
   msgid "Files are uploaded successfully"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:220
  +#: ../plugin/UploadFile.php:232
   msgid ": Rename"
   msgstr ""
   
   # ../plugin/rename.php:36
  -#: ../plugin/UploadedFiles.php:124 ../plugin/rename.php:69 ../wikilib.php:692
  +#: ../plugin/UploadedFiles.php:124 ../plugin/rename.php:69 ../wikilib.php:752
   msgid "Password"
   msgstr "Mot de passe"
   
   # ../wikilib.php:550
  -#: ../plugin/UploadedFiles.php:125 ../wikilib.php:670
  +#: ../plugin/UploadedFiles.php:125 ../wikilib.php:730
   msgid "Delete selected files"
   msgstr "Effacer les fichiers slectionns"
   
  @@ -394,7 +491,9 @@
   
   # ../plugin/Vote.php:66 ../plugin/security/needtologin.php:25
   # ../plugin/security/needtologin.php:35
  -#: ../plugin/Vote.php:67 ../plugin/security/mustlogin.php:25
  +#: ../plugin/Vote.php:67 ../plugin/security/community.php:26
  +#: ../plugin/security/community.php:36 ../plugin/security/community.php:46
  +#: ../plugin/security/community.php:58 ../plugin/security/mustlogin.php:25
   #: ../plugin/security/mustlogin.php:35 ../plugin/security/mustlogin.php:45
   #: ../plugin/security/mustlogin.php:60 ../plugin/security/needtologin.php:25
   #: ../plugin/security/needtologin.php:35 ../plugin/security/needtologin.php:45
  @@ -407,7 +506,7 @@
   msgid "Voted successfully"
   msgstr "Vote russi"
   
  -#: ../plugin/WordIndex.php:65 ../wikilib.php:1492
  +#: ../plugin/WordIndex.php:65 ../wikilib.php:1574
   msgid "Others"
   msgstr ""
   
  @@ -478,7 +577,7 @@
   msgstr "Aucune page de manuel trouv"
   
   # ../plugin/minilogin.php:22 ../wikilib.php:1076
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1243
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1323
   msgid "Login or Join"
   msgstr "Se connecter ou se joindre "
   
  @@ -512,12 +611,14 @@
   msgstr ""
   
   # ../plugin/quicklinks.php:16 ../plugin/subscribe.php:24
  -#: ../plugin/quicklinks.php:16 ../plugin/subscribe.php:24
  +#: ../plugin/quicklinks.php:16 ../plugin/scrap.php:37
  +#: ../plugin/subscribe.php:25
   msgid "Please login or make your ID."
   msgstr "Merci de vous connectez ou de construire un ID"
   
   # ../plugin/quicklinks.php:22 ../plugin/subscribe.php:30
  -#: ../plugin/quicklinks.php:22 ../plugin/subscribe.php:30
  +#: ../plugin/quicklinks.php:22 ../plugin/scrap.php:40
  +#: ../plugin/subscribe.php:31
   msgid "Goto UserPreferences"
   msgstr "Aller  UserPreferences"
   
  @@ -627,7 +728,7 @@
   msgstr "Seulement le WikiMaster peut renommer cette page"
   
   # ../plugin/rename.php:39 ../wikilib.php:588
  -#: ../plugin/rename.php:71 ../wikilib.php:730
  +#: ../plugin/rename.php:71 ../wikilib.php:790
   msgid "with revision history"
   msgstr "avec l'historique de rvision"
   
  @@ -671,17 +772,31 @@
   msgid "show changes"
   msgstr ""
   
  +# ../plugin/subscribe.php:46
  +#: ../plugin/scrap.php:57
  +msgid "Scrap lists updated."
  +msgstr ""
  +
  +# ../plugin/subscribe.php:58
  +#: ../plugin/scrap.php:69
  +#, c-format
  +msgid "Do you want to scrap \"%s\" ?"
  +msgstr ""
  +
   # ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
   # c-format
  -#: ../plugin/security/mustlogin.php:24 ../plugin/security/mustlogin.php:34
  -#: ../plugin/security/mustlogin.php:44 ../plugin/security/needtologin.php:24
  -#: ../plugin/security/needtologin.php:34 ../plugin/security/needtologin.php:44
  +#: ../plugin/security/community.php:25 ../plugin/security/community.php:35
  +#: ../plugin/security/community.php:45 ../plugin/security/mustlogin.php:24
  +#: ../plugin/security/mustlogin.php:34 ../plugin/security/mustlogin.php:44
  +#: ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
  +#: ../plugin/security/needtologin.php:44
   #, c-format
   msgid "You are not allowed to '%s' on this page"
   msgstr "Vous n'tes pas autoris  pouvoir '%s' cette page"
   
   # ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
   # c-format
  +#: ../plugin/security/community.php:57 ../plugin/security/htaccesslogin.php:46
   #: ../plugin/security/mustlogin.php:59 ../plugin/security/userbased.php:28
   #: ../plugin/security/userbased.php:36 ../plugin/security/userbased.php:44
   #: ../plugin/security/userbased.php:59 ../plugin/security/wikimaster.php:25
  @@ -690,6 +805,10 @@
   msgid "You are not allowed to '%s' on this page."
   msgstr "Vous n'tes pas autoris  pouvoir '%s' cette page"
   
  +#: ../plugin/security/htaccesslogin.php:47
  +msgid "Please contact the system administrator for htaccess based logins."
  +msgstr ""
  +
   #: ../plugin/security/userbased.php:29 ../plugin/security/userbased.php:37
   #: ../plugin/security/userbased.php:45 ../plugin/security/wikimaster.php:26
   #: ../plugin/security/wikimaster.php:34 ../plugin/security/wikimaster.php:42
  @@ -697,7 +816,7 @@
   msgstr ""
   
   # ../plugin/sendping.php:14 ../plugin/trackback.php:41
  -#: ../plugin/sendping.php:13 ../plugin/trackback.php:41
  +#: ../plugin/sendping.php:13 ../plugin/trackback.php:40
   msgid "Error: Page Not found !"
   msgstr "Erreur : page non trouv !"
   
  @@ -724,19 +843,19 @@
   # ../plugin/subscribe.php:13
   #: ../plugin/subscribe.php:13
   msgid ""
  -"If you wan't to subscribe this page please contact the WikiMaster to "
  -"activate the e-mail notification"
  +"If you want to subscribe this page please contact the WikiMaster to activate "
  +"the e-mail notification"
   msgstr ""
   "Si vous voulez vous abonner  cette page, merci de contacter le "
   "WikiMasterpour activer la notification par email"
   
   # ../plugin/subscribe.php:22
  -#: ../plugin/subscribe.php:22
  +#: ../plugin/subscribe.php:23
   msgid "Please enter your email address first."
   msgstr "Merci de rentrer d'abord votre adresse de messagerie"
   
   # ../plugin/subscribe.php:31
  -#: ../plugin/subscribe.php:31
  +#: ../plugin/subscribe.php:32
   msgid ""
   "If you want to subscribe this page, just make your ID and register your "
   "email address in the UserPreferences."
  @@ -745,12 +864,12 @@
   "votre adresse de messagerie dans UserPreferences."
   
   # ../plugin/subscribe.php:46
  -#: ../plugin/subscribe.php:46
  +#: ../plugin/subscribe.php:47
   msgid "Subscribe lists updated."
   msgstr "Listes d'abonnement mises  jour"
   
   # ../plugin/subscribe.php:58
  -#: ../plugin/subscribe.php:58
  +#: ../plugin/subscribe.php:59
   #, c-format
   msgid "Do you want to subscribe \"%s\" ?"
   msgstr "Voulez vous abonner  \"%s\" ?"
  @@ -766,33 +885,33 @@
   msgstr "Merci de slectionner un thme de manire satisfaisante"
   
   # ../plugin/trackback.php:54
  -#: ../plugin/trackback.php:54
  +#: ../plugin/trackback.php:53
   msgid "TrackBack is not activated !"
   msgstr "Le TrackBack n'est pas activ !"
   
   # ../plugin/trackback.php:55
  -#: ../plugin/trackback.php:55
  +#: ../plugin/trackback.php:54
   msgid "send ping"
   msgstr "envoyer un ping"
   
   # ../plugin/trackback.php:58
  -#: ../plugin/trackback.php:58
  +#: ../plugin/trackback.php:57
   #, c-format
   msgid "TrackBack list of %s"
   msgstr "List de TrackBack de %s"
   
   # ../plugin/trackback.php:62 ../plugin/trackback.php:79
  -#: ../plugin/trackback.php:62 ../plugin/trackback.php:79
  +#: ../plugin/trackback.php:61 ../plugin/trackback.php:78
   msgid "TrackBack URL for this page:"
   msgstr "URL de TrackBack pour cette page :"
   
   # ../plugin/trackback.php:63 ../plugin/trackback.php:80
  -#: ../plugin/trackback.php:63 ../plugin/trackback.php:80
  +#: ../plugin/trackback.php:62 ../plugin/trackback.php:79
   msgid "Send TrackBack Ping to another Blog:"
   msgstr "Envoyer un ping de TrackBack  un autre blog :"
   
   # ../plugin/trackback.php:78
  -#: ../plugin/trackback.php:78
  +#: ../plugin/trackback.php:77
   #, c-format
   msgid "No TrackBack entry found for %s"
   msgstr "Aucune entre de TrackBack dtect pour %s"
  @@ -920,75 +1039,75 @@
   msgstr ""
   
   # ../wiki.php:850
  -#: ../wiki.php:908
  +#: ../wiki.php:940
   #, c-format
   msgid "Rename %s to %s"
   msgstr "Renommer %s en %s"
   
   # ../wikilib.php:803
  -#: ../wiki.php:1199
  +#: ../wiki.php:1231
   msgid "Version info does not supported by this wiki"
   msgstr "La messagerie n'est pas support par dfaut."
   
   # ../plugin/restore.php:27
  -#: ../wiki.php:1210
  +#: ../wiki.php:1242
   msgid "File does not exists"
   msgstr ""
   
   # ../wiki.php:1824
  -#: ../wiki.php:2149
  +#: ../wiki.php:2229
   #, c-format
   msgid "See %s"
   msgstr "Voir %s"
   
   # ../wiki.php:1824
  -#: ../wiki.php:2149
  +#: ../wiki.php:2229
   msgid "TwinPages"
   msgstr ""
   
   # ../locale/dummy.php:6 ../wiki.php:2553
  -#: ../wiki.php:2762 ../locale/dummy.php:6
  +#: ../wiki.php:2877 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "ditionTexte"
   
   # ../wiki.php:2555
  -#: ../wiki.php:2764
  +#: ../wiki.php:2879
   msgid "NotEditable"
   msgstr "Pasditable"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wiki.php:2766 ../locale/dummy.php:6
  +#: ../wiki.php:2881 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "MontrePage"
   
   # ../locale/dummy.php:3 ../locale/dummy.php:5 ../wiki.php:2558
  -#: ../wiki.php:2767 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:2882 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "TrouvePage"
   
  -#: ../wiki.php:2998
  +#: ../wiki.php:3113
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:3244
  +#: ../wiki.php:3360
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:3245 ../wiki.php:3256
  +#: ../wiki.php:3361 ../wiki.php:3372
   msgid "Please contact WikiMasters"
   msgstr ""
   
  -#: ../wiki.php:3255
  +#: ../wiki.php:3371
   msgid "You are blocked in this wiki"
   msgstr ""
   
   # ../wiki.php:2945 ../wiki.php:2948
  -#: ../wiki.php:3294 ../wiki.php:3297 ../wikilib.php:861
  +#: ../wiki.php:3402 ../wiki.php:3405 ../wikilib.php:923
   msgid "Create this page"
   msgstr "Crer cette page"
   
   # ../wiki.php:2950
  -#: ../wiki.php:3299 ../wikilib.php:863
  +#: ../wiki.php:3407 ../wikilib.php:925
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
  @@ -996,41 +1115,41 @@
   "page.\n"
   
   # ../wiki.php:2950
  -#: ../wiki.php:3299 ../wikilib.php:863
  +#: ../wiki.php:3407 ../wikilib.php:925
   msgid "title"
   msgstr "titre"
   
   # ../wiki.php:2956
  -#: ../wiki.php:3305
  +#: ../wiki.php:3413
   msgid " or alternativly, use one of these templates:\n"
   msgstr " ou alternativement, utiliser un de ces modles de page :\n"
   
   # ../wikilib.php:427
  -#: ../wiki.php:3308
  +#: ../wiki.php:3416
   msgid "To create your own templates, add a page with a 'Template' suffix.\n"
   msgstr ""
   "Pour crer vos propres modles de pages, ajouter une page avec lesuffix "
   "'Template'.\n"
   
   # ../wiki.php:3009
  -#: ../wiki.php:3383
  +#: ../wiki.php:3491
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "Vous n'tes pas autoris  '%s'"
   
   # ../wiki.php:3021
  -#: ../wiki.php:3395
  +#: ../wiki.php:3503
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "Impossible de pouvoir \"%s\" !"
   
   # ../wiki.php:3024
  -#: ../wiki.php:3398
  +#: ../wiki.php:3506
   msgid "Please enter the valid password"
   msgstr "Merci d'entrer un mot de passe valide"
   
   # ../wikilib.php:368
  -#: ../wikilib.php:440
  +#: ../wikilib.php:456
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -1062,214 +1181,214 @@
   "deux colonnes ||;\n"
   "Les espaces aprs un tableau ou un titre ne sont pas autoriss.<br />\n"
   
  +#: ../wikilib.php:492
  +#, c-format
  +msgid "Edit %s"
  +msgstr ""
  +
   # ../wikilib.php:425
  -#: ../wikilib.php:506
  +#: ../wikilib.php:550
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   "Utiliser un des modles de pages qui suivent pour une premirecration :\n"
   
   # ../wikilib.php:427
  -#: ../wikilib.php:508
  +#: ../wikilib.php:552
   msgid "To create your own templates, add a page with a 'Template' suffix."
   msgstr ""
   "Pour crer vos propres modles de pages, ajouter une page avec lesuffix "
   "'Template'."
   
   # ../wikilib.php:443
  -#: ../wikilib.php:524
  +#: ../wikilib.php:571
   msgid "Skip to preview"
   msgstr "Aller  la prvisualisation"
   
   # ../wikilib.php:445
  -#: ../wikilib.php:526
  +#: ../wikilib.php:573
   msgid "ReduceEditor"
   msgstr "Rduirediteur"
   
  -#: ../wikilib.php:527
  +#: ../wikilib.php:574
   msgid "EnlargeEditor"
   msgstr ""
   
   # ../locale/dummy.php:6 ../wikilib.php:448
  -#: ../wikilib.php:531 ../locale/dummy.php:6
  +#: ../wikilib.php:578 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
   # ../wikilib.php:449
  -#: ../wikilib.php:532
  +#: ../wikilib.php:579
   msgid "HelpOnEditing"
   msgstr ""
   
   # ../wikilib.php:462
  -#: ../wikilib.php:549
  +#: ../wikilib.php:602
   #, c-format
   msgid "Describe %s here"
   msgstr "Dcrire %s ici"
   
   # ../wikilib.php:476
  -#: ../wikilib.php:565
  +#: ../wikilib.php:618
   msgid "--Select Category--"
   msgstr "-- Slectionner une catgorie"
   
   # ../wikilib.php:483 ../wikilib.php:1079
  -#: ../wikilib.php:572 ../wikilib.php:1246
  +#: ../wikilib.php:632 ../wikilib.php:1326
   msgid "Save"
   msgstr "Sauvegarder"
   
   # ../wikilib.php:484
  -#: ../wikilib.php:573
  +#: ../wikilib.php:633
   msgid "Summary of Change"
   msgstr "Sommaire des modifications"
   
   # ../wikilib.php:517
  -#: ../wikilib.php:618
  +#: ../wikilib.php:678
   msgid "406 Not Acceptable"
   msgstr ""
   
   # ../wikilib.php:519
  -#: ../wikilib.php:623
  +#: ../wikilib.php:683
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s n'est pas une action valide"
   
   # ../wikilib.php:521
  -#: ../wikilib.php:625
  +#: ../wikilib.php:685
   msgid "Is it valid action ?"
   msgstr "Est-ce que c'est une action valide ?"
   
   # ../wikilib.php:540
  -#: ../wikilib.php:658
  +#: ../wikilib.php:718
   #, c-format
   msgid "File '%s' is deleted"
   msgstr "Le fichier '%s' est effac"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:660
  +#: ../wikilib.php:720
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr "Impossible d'effacer '%s'"
   
   # ../wikilib.php:545
  -#: ../wikilib.php:665
  +#: ../wikilib.php:725
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr "Le rpertoire '%s' est effac"
   
   # ../wikilib.php:547
  -#: ../wikilib.php:667
  +#: ../wikilib.php:727
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr "Impossible d'effacer le rpertoire '%s'"
   
   # ../wikilib.php:557 ../wikilib.php:559
  -#: ../wikilib.php:677 ../wikilib.php:697
  +#: ../wikilib.php:737 ../wikilib.php:757
   msgid "No files are selected !"
   msgstr "Aucun fichier n'est slectionn !"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:690
  +#: ../wikilib.php:750
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
   # ../locale/dummy.php:5
  -#: ../wikilib.php:693
  +#: ../wikilib.php:753
   msgid "Delete"
   msgstr ""
   
   # ../wikilib.php:550
  -#: ../wikilib.php:694
  +#: ../wikilib.php:754
   msgid "Delete selected file"
   msgstr ""
   
   # ../wikilib.php:575
  -#: ../wikilib.php:716
  +#: ../wikilib.php:776
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr "\"%s\" est effac !"
   
   # ../wikilib.php:581
  -#: ../wikilib.php:722
  +#: ../wikilib.php:782
   msgid "Please delete this file manually."
   msgstr "Merci d'effacer ce fichier manuellement."
   
   # ../wikilib.php:583
  -#: ../wikilib.php:724
  +#: ../wikilib.php:784
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "Effacer \"%s\" ?"
   
   # ../wikilib.php:672 ../wikilib.php:1472
  -#: ../wikilib.php:826 ../wikilib.php:1684
  +#: ../wikilib.php:888 ../wikilib.php:1767
   msgid "Use more specific text"
   msgstr "Utiliser un texte plus spcifique"
   
   # ../wikilib.php:734
  -#: ../wikilib.php:899
  +#: ../wikilib.php:972
   msgid "Goto Editor"
   msgstr "Aller  l'diteur"
   
   # ../wikilib.php:743
  -#: ../wikilib.php:908
  +#: ../wikilib.php:981
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "Quelqu'un a sauvegard la page tandis que vous ditiez %s"
   
   # ../wikilib.php:748 ../wikilib.php:777
  -#: ../wikilib.php:913 ../wikilib.php:942
  +#: ../wikilib.php:986 ../wikilib.php:1015
   #, c-format
   msgid "Preview of %s"
   msgstr "Prvisualisation de %s"
   
   # ../wikilib.php:755
  -#: ../wikilib.php:920
  +#: ../wikilib.php:993
   msgid "Conflict error!"
   msgstr "Erreur de conflit !"
   
  -# ../wiki.php:2338 ../wiki.php:2373 ../wikilib.php:770
  -#: ../wikilib.php:935
  -msgid "No difference found"
  -msgstr "Aucune diffrence trouv"
  -
   # ../wikilib.php:803
  -#: ../wikilib.php:968
  +#: ../wikilib.php:1053
   msgid "mail does not supported by default."
   msgstr "La messagerie n'est pas support par dfaut."
   
   # ../wikilib.php:807
  -#: ../wikilib.php:972
  +#: ../wikilib.php:1057
   msgid "Sent notification mail."
   msgstr "Des notifications par messagerie ont t envoyes."
   
   # ../wikilib.php:809
  -#: ../wikilib.php:974
  +#: ../wikilib.php:1059
   msgid "No subscribers found."
   msgstr "Aucun abonn trouv."
   
   # ../wikilib.php:814
  -#: ../wikilib.php:979
  +#: ../wikilib.php:1064
   #, c-format
   msgid "%s is not editable"
   msgstr "%s n'est pas ditable"
   
   # ../wikilib.php:816
  -#: ../wikilib.php:981
  +#: ../wikilib.php:1066
   #, c-format
   msgid "%s is saved"
   msgstr "%s est sauvegard"
   
   # ../wikilib.php:838
  -#: ../wikilib.php:1005
  +#: ../wikilib.php:1090
   msgid "Nobody subscribed to this page."
   msgstr "Personne n'est abonn  cette page, aucun mail envoy"
   
   # ../wikilib.php:860
  -#: ../wikilib.php:1027
  +#: ../wikilib.php:1107
   #, c-format
   msgid "%s page is modified"
   msgstr "la page %s est modifi"
   
   # ../wikilib.php:870
  -#: ../wikilib.php:1037
  +#: ../wikilib.php:1117
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
  @@ -1280,48 +1399,48 @@
   "\n"
   
   # ../wikilib.php:883
  -#: ../wikilib.php:1050
  +#: ../wikilib.php:1130
   msgid "Send notification mails to all subscribers"
   msgstr "Envoyez un mail de notification  tous les abonns"
   
   # ../wikilib.php:887
  -#: ../wikilib.php:1054
  +#: ../wikilib.php:1134
   msgid "Mails are sent successfully"
   msgstr "Mail envoy avec succs"
   
   # ../wikilib.php:888
  -#: ../wikilib.php:1055
  +#: ../wikilib.php:1135
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr "un mail a t envoy  '%s'"
   
   # ../plugin/login.php:26 ../wikilib.php:1051
  -#: ../wikilib.php:1218
  +#: ../wikilib.php:1298
   msgid "Login"
   msgstr "Se connecter"
   
   # ../wikilib.php:1070
  -#: ../wikilib.php:1237
  +#: ../wikilib.php:1317
   msgid "Make profile"
   msgstr "Faire un profil"
   
   # ../wikilib.php:1071
  -#: ../wikilib.php:1238
  +#: ../wikilib.php:1318
   msgid "password again"
   msgstr "mot de passe de nouveau"
   
   # ../wikilib.php:1082
  -#: ../wikilib.php:1249
  +#: ../wikilib.php:1329
   msgid "New password"
   msgstr "Nouveau mot de passe"
   
   # ../wikilib.php:1088
  -#: ../wikilib.php:1255
  +#: ../wikilib.php:1335
   msgid "logout"
   msgstr "se dconnecter"
   
   # ../wikilib.php:1479
  -#: ../wikilib.php:1691
  +#: ../wikilib.php:1774
   #, c-format
   msgid "Title search for \"%s\""
   msgstr "Recherche de titre pour \"%s\""
  @@ -1375,31 +1494,3 @@
   #: ../locale/dummy.php:7
   msgid "TrackBack"
   msgstr ""
  -
  -# ../wiki.php:2110
  -#~ msgid "Revision History"
  -#~ msgstr "Historique de rvision"
  -
  -# ../wiki.php:2211 ../wiki.php:2360
  -#~ msgid "No older revisions available"
  -#~ msgstr "Aucune rvision plus ancienne disponible"
  -
  -# ../wiki.php:2341
  -#~ msgid "Difference between yours and the current"
  -#~ msgstr "Diffrence entre votre version et la courante"
  -
  -# ../wiki.php:2376
  -#~ msgid "Difference between versions"
  -#~ msgstr "Diffrence entre les versions"
  -
  -# ../wiki.php:2378
  -#~ msgid "Difference between r%s and r%s"
  -#~ msgstr "Diffrence entre r%s et r%s"
  -
  -# ../wiki.php:2382
  -#~ msgid "Difference between r%s and the current"
  -#~ msgstr "Diffrence entre r%s et la version courante"
  -
  -# ../wikilib.php:507
  -#~ msgid "Info. for %s"
  -#~ msgstr "Information sur %s"
  
  
  
  1.17      +250 -159  moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- ko.po	4 Jan 2005 09:06:03 -0000	1.16
  +++ ko.po	8 Aug 2005 07:42:03 -0000	1.17
  @@ -1,11 +1,11 @@
   # MoniWiki message file
  -# Copyright (C) 2003-2004 Free Software Foundation, Inc.
  +# Copyright (C) 2003-2005 Free Software Foundation, Inc.
   # Won-kyu Park <wkpark@kldp.org>, 2003-2004.
   #
   msgid ""
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1\n"
  -"POT-Creation-Date: 2005-01-04 18:08+0900\n"
  +"POT-Creation-Date: 2005-08-08 16:39+0900\n"
   "PO-Revision-Date: 2003-04-29 19:00+0900\n"
   "Last-Translator: Won-kyu Park <wkpark@kldp.org>\n"
   "Language-Team: ko <ko@li.org>\n"
  @@ -13,12 +13,12 @@
   "Content-Type: text/plain; charset=EUC-KR\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  -#: ../plugin/Attachment.php:82
  +#: ../plugin/Attachment.php:32 ../plugin/Attachment.php:101
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr ""
   
  -#: ../plugin/Attachment.php:85
  +#: ../plugin/Attachment.php:104
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
  @@ -37,56 +37,56 @@
   msgid "Blog cache of \"%s\" is refreshed"
   msgstr ""
   
  -#: ../plugin/Blog.php:109
  +#: ../plugin/Blog.php:110
   #, c-format
   msgid "\"%s\" is updated"
   msgstr "\"%s\"() ŵǾϴ"
   
  -#: ../plugin/Blog.php:114
  +#: ../plugin/Blog.php:115
   msgid "Add Blog"
   msgstr ""
   
  -#: ../plugin/Blog.php:154
  +#: ../plugin/Blog.php:155
   msgid "Error: No blog entry found!"
   msgstr ""
   
  -#: ../plugin/Blog.php:162 ../plugin/Comment.php:109
  +#: ../plugin/Blog.php:163 ../plugin/Comment.php:110
   msgid "Error: Don't make a clone!"
   msgstr ""
   
  -#: ../plugin/Blog.php:179
  +#: ../plugin/Blog.php:180
   #, c-format
   msgid "Comment added to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:182
  +#: ../plugin/Blog.php:183
   #, c-format
   msgid "Blog entry added to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:219
  +#: ../plugin/Blog.php:220
   #, c-format
   msgid "Add Comment to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:221
  +#: ../plugin/Blog.php:222
   #, c-format
   msgid "Add Blog entry to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:235 ../plugin/Comment.php:45
  +#: ../plugin/Blog.php:236 ../plugin/Blog.php:292 ../plugin/Comment.php:46
   msgid "Name"
   msgstr ""
   
  -#: ../plugin/Blog.php:239
  +#: ../plugin/Blog.php:240 ../plugin/Blog.php:293
   msgid "Title"
   msgstr ""
   
  -#: ../plugin/Blog.php:245 ../plugin/Comment.php:47
  +#: ../plugin/Blog.php:246 ../plugin/Comment.php:48
   msgid "Don't add a signature"
   msgstr ""
   
  -#: ../plugin/Blog.php:258
  +#: ../plugin/Blog.php:259
   msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
   msgstr "<b>μ</b> ---- α   ʽϴ."
   
  @@ -104,26 +104,26 @@
   msgstr ""
   
   #: ../plugin/BlogChanges.php:376 ../plugin/BlogChanges.php:378
  -#: ../plugin/processor/blog.php:43 ../plugin/processor/blog.php:45
  +#: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
   msgid "Anonymous"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:409 ../plugin/processor/blog.php:85
  +#: ../plugin/BlogChanges.php:409 ../plugin/processor/blog.php:86
   #, c-format
   msgid "%d comment"
   msgstr " %d"
   
  -#: ../plugin/BlogChanges.php:409 ../plugin/processor/blog.php:85
  +#: ../plugin/BlogChanges.php:409 ../plugin/processor/blog.php:86
   #, c-format
   msgid "%d comments"
   msgstr " %d"
   
  -#: ../plugin/BlogChanges.php:411 ../plugin/Comment.php:98
  -#: ../plugin/processor/blog.php:77
  +#: ../plugin/BlogChanges.php:411 ../plugin/Comment.php:99
  +#: ../plugin/ImportTable.php:76 ../plugin/processor/blog.php:78
   msgid "Add comment"
   msgstr " ޱ"
   
  -#: ../plugin/BlogChanges.php:421 ../plugin/processor/blog.php:96
  +#: ../plugin/BlogChanges.php:421 ../plugin/processor/blog.php:97
   msgid "track back"
   msgstr "Ʈ"
   
  @@ -135,44 +135,86 @@
   msgid "Next"
   msgstr ""
   
  -#: ../plugin/Comment.php:48
  +#: ../plugin/Clip.php:28
  +msgid "Paste a new picture"
  +msgstr " ׸ ̱"
  +
  +#: ../plugin/Clip.php:50 ../plugin/Draw.php:108
  +msgid "Fatal error !"
  +msgstr ""
  +
  +#: ../plugin/Clip.php:53 ../plugin/Draw.php:111
  +msgid "No filename given"
  +msgstr ""
  +
  +#: ../plugin/Clip.php:72
  +msgid "Clipboard"
  +msgstr ""
  +
  +#: ../plugin/Clip.php:81
  +msgid "Cut & Paste a Clipboard Image"
  +msgstr ""
  +
  +#: ../plugin/Comment.php:49
   msgid "Comment"
   msgstr " ޱ"
   
  -#: ../plugin/Comment.php:49 ../wikilib.php:571
  +#: ../plugin/Comment.php:50 ../plugin/ImportTable.php:67 ../wikilib.php:631
   msgid "Preview"
   msgstr "̸"
   
  -#: ../plugin/Comment.php:89
  +#: ../plugin/Comment.php:90
   msgid "Preview comment"
   msgstr "̸"
   
  -#: ../plugin/Comment.php:132
  +#: ../plugin/Comment.php:136
   #, c-format
   msgid "%s is commented successfully"
   msgstr "%s   ÷Ǿϴ"
   
  -#: ../plugin/Comment.php:133
  +#: ../plugin/Comment.php:137
   msgid "Comment added successfully"
   msgstr " ÷Ǿϴ"
   
  +#: ../plugin/Diff.php:43 ../plugin/Diff.php:82 ../wikilib.php:1008
  +msgid "No difference found"
  +msgstr "ȭ ϴ"
  +
  +#: ../plugin/Diff.php:45
  +msgid "Difference between yours and the current"
  +msgstr "  "
  +
  +#: ../plugin/Diff.php:66 ../plugin/Info.php:125
  +msgid "No older revisions available"
  +msgstr "  ϴ"
  +
  +#: ../plugin/Diff.php:71 ../plugin/Info.php:131
  +msgid "Version info is not available in this wiki"
  +msgstr ""
  +
  +#: ../plugin/Diff.php:84
  +msgid "Difference between versions"
  +msgstr " "
  +
  +#: ../plugin/Diff.php:86
  +#, c-format
  +msgid "Difference between r%s and r%s"
  +msgstr "r%s r%s "
  +
  +#: ../plugin/Diff.php:89
  +#, c-format
  +msgid "Difference between r%s and the current"
  +msgstr "r%s   "
  +
   #: ../plugin/Draw.php:29 ../plugin/OeKaki.php:36
   msgid "Draw new picture"
   msgstr " ׸ "
   
  -#: ../plugin/Draw.php:81 ../plugin/UploadFile.php:146
  +#: ../plugin/Draw.php:81 ../plugin/UploadFile.php:154
   #, c-format
   msgid "Fail to copy \"%s\" to \"%s\""
   msgstr ""
   
  -#: ../plugin/Draw.php:108
  -msgid "Fatal error !"
  -msgstr ""
  -
  -#: ../plugin/Draw.php:111
  -msgid "No filename given"
  -msgstr ""
  -
   #: ../plugin/Draw.php:132
   msgid "Edit drawing"
   msgstr "׸ ׸"
  @@ -210,36 +252,70 @@
   msgid "BackLinks search for \"%s\""
   msgstr "\"%s\"  ũ ã"
   
  -#: ../plugin/FullSearch.php:103 ../wikilib.php:1695
  +#: ../plugin/FullSearch.php:103 ../wikilib.php:1778
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr ""
   
  -#: ../plugin/Gallery.php:225 ../plugin/Gallery.php:237
  +#: ../plugin/Gallery.php:244 ../plugin/Gallery.php:256
   msgid "add comment"
   msgstr " ޱ"
   
  -#: ../plugin/Gallery.php:234
  +#: ../plugin/Gallery.php:253
   msgid "show comments"
   msgstr " "
   
  -#: ../plugin/Gallery.php:277 ../plugin/Gallery.php:280 ../wikilib.php:934
  +#: ../plugin/Gallery.php:296 ../plugin/Gallery.php:299 ../wikilib.php:1007
   #, c-format
   msgid "Go back or return to %s"
   msgstr "ڷ Ȥ %s() "
   
  -#: ../plugin/Gallery.php:278
  +#: ../plugin/Gallery.php:297
   msgid "Comments are edited"
   msgstr ""
   
  -#: ../plugin/Gallery.php:281
  +#: ../plugin/Gallery.php:300
   msgid "Comments is added"
   msgstr ""
   
  +#: ../plugin/ImportTable.php:32
  +msgid "Convert"
  +msgstr ""
  +
   #: ../plugin/ImportUrl.php:105
   msgid "Import URL"
   msgstr ""
   
  +#: ../plugin/Info.php:15
  +msgid "Revision History"
  +msgstr " 丮"
  +
  +#: ../plugin/Info.php:116
  +#, c-format
  +msgid "Info. for %s"
  +msgstr "%s "
  +
  +#: ../plugin/JME.php:55
  +#, c-format
  +msgid "Draw a new molecule '%s'"
  +msgstr ""
  +
  +#: ../plugin/JME.php:57
  +msgid "Draw a new molecule"
  +msgstr ""
  +
  +#: ../plugin/JME.php:95
  +msgid "Molecule successfully added"
  +msgstr ""
  +
  +#: ../plugin/JME.php:101
  +msgid "Edit Molecule"
  +msgstr ""
  +
  +#: ../plugin/JME.php:131
  +msgid "Edit new molecule"
  +msgstr ""
  +
   #: ../plugin/LikePages.php:109
   msgid "These pages share a similar word..."
   msgstr ""
  @@ -269,7 +345,7 @@
   msgid "Search all MetaWikis"
   msgstr ""
   
  -#: ../plugin/Navigation.php:14
  +#: ../plugin/Navigation.php:19
   msgid "No Index page found"
   msgstr "ε  ϴ"
   
  @@ -281,7 +357,7 @@
   msgid "Edit Image"
   msgstr "׸ ġ"
   
  -#: ../plugin/RecentChanges.php:156
  +#: ../plugin/RecentChanges.php:158
   msgid "set bookmark"
   msgstr "ϸũ"
   
  @@ -290,7 +366,7 @@
   msgid "TwinPages of %s"
   msgstr "%s ֵ "
   
  -#: ../plugin/TwinPages.php:18 ../wiki.php:2153 ../wiki.php:3292
  +#: ../plugin/TwinPages.php:18 ../wiki.php:2233 ../wiki.php:3400
   msgid "See TwinPages: "
   msgstr ""
   
  @@ -303,24 +379,33 @@
   msgid "%s is not allowed to upload"
   msgstr "%s() ε尡  ʽϴ"
   
  +#: ../plugin/UploadFile.php:127
  +#, c-format
  +msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
  +msgstr ""
  +
   #: ../plugin/UploadFile.php:155
  +msgid "Please check your php.ini setting"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:164
   #, c-format
   msgid "File \"%s\" is uploaded successfully"
   msgstr "\"%s\"  ö󰬽ϴ"
   
  -#: ../plugin/UploadFile.php:186
  +#: ../plugin/UploadFile.php:195
   msgid "Files are uploaded successfully"
   msgstr "  ö󰬽ϴ"
   
  -#: ../plugin/UploadFile.php:220
  +#: ../plugin/UploadFile.php:232
   msgid ": Rename"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:124 ../plugin/rename.php:69 ../wikilib.php:692
  +#: ../plugin/UploadedFiles.php:124 ../plugin/rename.php:69 ../wikilib.php:752
   msgid "Password"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:125 ../wikilib.php:670
  +#: ../plugin/UploadedFiles.php:125 ../wikilib.php:730
   msgid "Delete selected files"
   msgstr ""
   
  @@ -336,7 +421,9 @@
   msgid "Deeper"
   msgstr ""
   
  -#: ../plugin/Vote.php:67 ../plugin/security/mustlogin.php:25
  +#: ../plugin/Vote.php:67 ../plugin/security/community.php:26
  +#: ../plugin/security/community.php:36 ../plugin/security/community.php:46
  +#: ../plugin/security/community.php:58 ../plugin/security/mustlogin.php:25
   #: ../plugin/security/mustlogin.php:35 ../plugin/security/mustlogin.php:45
   #: ../plugin/security/mustlogin.php:60 ../plugin/security/needtologin.php:25
   #: ../plugin/security/needtologin.php:35 ../plugin/security/needtologin.php:45
  @@ -348,7 +435,7 @@
   msgid "Voted successfully"
   msgstr ""
   
  -#: ../plugin/WordIndex.php:65 ../wikilib.php:1492
  +#: ../plugin/WordIndex.php:65 ../wikilib.php:1574
   msgid "Others"
   msgstr ""
   
  @@ -407,7 +494,7 @@
   msgid "No manpage found"
   msgstr "Manpage ϴ"
   
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1243
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1323
   msgid "Login or Join"
   msgstr ""
   
  @@ -438,11 +525,13 @@
   msgid "Toggle line numbers"
   msgstr ""
   
  -#: ../plugin/quicklinks.php:16 ../plugin/subscribe.php:24
  +#: ../plugin/quicklinks.php:16 ../plugin/scrap.php:37
  +#: ../plugin/subscribe.php:25
   msgid "Please login or make your ID."
   msgstr "αϰų ID 弼"
   
  -#: ../plugin/quicklinks.php:22 ../plugin/subscribe.php:30
  +#: ../plugin/quicklinks.php:22 ../plugin/scrap.php:40
  +#: ../plugin/subscribe.php:31
   msgid "Goto UserPreferences"
   msgstr "UserPreferences "
   
  @@ -535,7 +624,7 @@
   msgid "Only WikiMaster can rename this page"
   msgstr ""
   
  -#: ../plugin/rename.php:71 ../wikilib.php:730
  +#: ../plugin/rename.php:71 ../wikilib.php:790
   msgid "with revision history"
   msgstr " 丮 Բ"
   
  @@ -573,13 +662,25 @@
   msgid "show changes"
   msgstr ""
   
  -#: ../plugin/security/mustlogin.php:24 ../plugin/security/mustlogin.php:34
  -#: ../plugin/security/mustlogin.php:44 ../plugin/security/needtologin.php:24
  -#: ../plugin/security/needtologin.php:34 ../plugin/security/needtologin.php:44
  +#: ../plugin/scrap.php:57
  +msgid "Scrap lists updated."
  +msgstr "ũ  ŵǾϴ"
  +
  +#: ../plugin/scrap.php:69
  +#, c-format
  +msgid "Do you want to scrap \"%s\" ?"
  +msgstr "\"%s\"() ũϽðڽϱ ?"
  +
  +#: ../plugin/security/community.php:25 ../plugin/security/community.php:35
  +#: ../plugin/security/community.php:45 ../plugin/security/mustlogin.php:24
  +#: ../plugin/security/mustlogin.php:34 ../plugin/security/mustlogin.php:44
  +#: ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
  +#: ../plugin/security/needtologin.php:44
   #, c-format
   msgid "You are not allowed to '%s' on this page"
   msgstr "'%s'   ׼Դϴ."
   
  +#: ../plugin/security/community.php:57 ../plugin/security/htaccesslogin.php:46
   #: ../plugin/security/mustlogin.php:59 ../plugin/security/userbased.php:28
   #: ../plugin/security/userbased.php:36 ../plugin/security/userbased.php:44
   #: ../plugin/security/userbased.php:59 ../plugin/security/wikimaster.php:25
  @@ -588,13 +689,17 @@
   msgid "You are not allowed to '%s' on this page."
   msgstr "'%s'   ׼Դϴ."
   
  +#: ../plugin/security/htaccesslogin.php:47
  +msgid "Please contact the system administrator for htaccess based logins."
  +msgstr ""
  +
   #: ../plugin/security/userbased.php:29 ../plugin/security/userbased.php:37
   #: ../plugin/security/userbased.php:45 ../plugin/security/wikimaster.php:26
   #: ../plugin/security/wikimaster.php:34 ../plugin/security/wikimaster.php:42
   msgid "Please contact to WikiMaster"
   msgstr ""
   
  -#: ../plugin/sendping.php:13 ../plugin/trackback.php:41
  +#: ../plugin/sendping.php:13 ../plugin/trackback.php:40
   msgid "Error: Page Not found !"
   msgstr ""
   
  @@ -616,17 +721,17 @@
   
   #: ../plugin/subscribe.php:13
   msgid ""
  -"If you wan't to subscribe this page please contact the WikiMaster to "
  -"activate the e-mail notification"
  +"If you want to subscribe this page please contact the WikiMaster to activate "
  +"the e-mail notification"
   msgstr ""
   "  Ͻ÷ WikiMaster ڸ Ȱȭ Ű "
   "ϼ"
   
  -#: ../plugin/subscribe.php:22
  +#: ../plugin/subscribe.php:23
   msgid "Please enter your email address first."
   msgstr "̸ ּҸ  "
   
  -#: ../plugin/subscribe.php:31
  +#: ../plugin/subscribe.php:32
   msgid ""
   "If you want to subscribe this page, just make your ID and register your "
   "email address in the UserPreferences."
  @@ -634,11 +739,11 @@
   "  Ͻ÷, ID ϰ ڸ ּҸ UserPreferences "
   "ϼ"
   
  -#: ../plugin/subscribe.php:46
  +#: ../plugin/subscribe.php:47
   msgid "Subscribe lists updated."
   msgstr "  ŵǾϴ"
   
  -#: ../plugin/subscribe.php:58
  +#: ../plugin/subscribe.php:59
   #, c-format
   msgid "Do you want to subscribe \"%s\" ?"
   msgstr "\"%s\"() Ͻðڽϱ ?"
  @@ -651,28 +756,28 @@
   msgid "Please select a theme properly."
   msgstr "׸  ּ"
   
  -#: ../plugin/trackback.php:54
  +#: ../plugin/trackback.php:53
   msgid "TrackBack is not activated !"
   msgstr "TrackBack Ȱȭ ʾҽϴ !"
   
  -#: ../plugin/trackback.php:55
  +#: ../plugin/trackback.php:54
   msgid "send ping"
   msgstr ""
   
  -#: ../plugin/trackback.php:58
  +#: ../plugin/trackback.php:57
   #, c-format
   msgid "TrackBack list of %s"
   msgstr ""
   
  -#: ../plugin/trackback.php:62 ../plugin/trackback.php:79
  +#: ../plugin/trackback.php:61 ../plugin/trackback.php:78
   msgid "TrackBack URL for this page:"
   msgstr ""
   
  -#: ../plugin/trackback.php:63 ../plugin/trackback.php:80
  +#: ../plugin/trackback.php:62 ../plugin/trackback.php:79
   msgid "Send TrackBack Ping to another Blog:"
   msgstr ""
   
  -#: ../plugin/trackback.php:78
  +#: ../plugin/trackback.php:77
   #, c-format
   msgid "No TrackBack entry found for %s"
   msgstr ""
  @@ -790,96 +895,96 @@
   msgid "Whois search result for %s"
   msgstr "%s  Whois ġ "
   
  -#: ../wiki.php:908
  +#: ../wiki.php:940
   #, c-format
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1199
  +#: ../wiki.php:1231
   msgid "Version info does not supported by this wiki"
   msgstr ""
   
  -#: ../wiki.php:1210
  +#: ../wiki.php:1242
   msgid "File does not exists"
   msgstr ""
   
  -#: ../wiki.php:2149
  +#: ../wiki.php:2229
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:2149
  +#: ../wiki.php:2229
   msgid "TwinPages"
   msgstr "TwinPages"
   
  -#: ../wiki.php:2762 ../locale/dummy.php:6
  +#: ../wiki.php:2877 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "ġ"
   
  -#: ../wiki.php:2764
  +#: ../wiki.php:2879
   msgid "NotEditable"
   msgstr "ĥ "
   
  -#: ../wiki.php:2766 ../locale/dummy.php:6
  +#: ../wiki.php:2881 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:2767 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:2882 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "ã"
   
  -#: ../wiki.php:2998
  +#: ../wiki.php:3113
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:3244
  +#: ../wiki.php:3360
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:3245 ../wiki.php:3256
  +#: ../wiki.php:3361 ../wiki.php:3372
   msgid "Please contact WikiMasters"
   msgstr ""
   
  -#: ../wiki.php:3255
  +#: ../wiki.php:3371
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:3294 ../wiki.php:3297 ../wikilib.php:861
  +#: ../wiki.php:3402 ../wiki.php:3405 ../wikilib.php:923
   msgid "Create this page"
   msgstr " "
   
  -#: ../wiki.php:3299 ../wikilib.php:863
  +#: ../wiki.php:3407 ../wikilib.php:925
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
   
  -#: ../wiki.php:3299 ../wikilib.php:863
  +#: ../wiki.php:3407 ../wikilib.php:925
   msgid "title"
   msgstr ""
   
  -#: ../wiki.php:3305
  +#: ../wiki.php:3413
   msgid " or alternativly, use one of these templates:\n"
   msgstr " Ȥ Ʒ øƮ  ̿ϼ:\n"
   
  -#: ../wiki.php:3308
  +#: ../wiki.php:3416
   msgid "To create your own templates, add a page with a 'Template' suffix.\n"
   msgstr "øƮ ÷ Template ̸   弼.\n"
   
  -#: ../wiki.php:3383
  +#: ../wiki.php:3491
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr ""
   
  -#: ../wiki.php:3395
  +#: ../wiki.php:3503
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:3398
  +#: ../wiki.php:3506
   msgid "Please enter the valid password"
   msgstr "Ȯ йȣ ־ּ"
   
  -#: ../wikilib.php:440
  +#: ../wikilib.php:456
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -908,213 +1013,214 @@
   "<b>̺</b>: ||   |||| ĭ ģ  ||;<br />\n"
   "̺̳     ȵ˴ϴ.<br />\n"
   
  -#: ../wikilib.php:506
  +#: ../wikilib.php:492
  +#, c-format
  +msgid "Edit %s"
  +msgstr ""
  +
  +#: ../wikilib.php:550
   msgid "Use one of the following templates as an initial release :\n"
   msgstr "ó   øƮ Ȱϼ :\n"
   
  -#: ../wikilib.php:508
  +#: ../wikilib.php:552
   msgid "To create your own templates, add a page with a 'Template' suffix."
   msgstr "øƮ ÷ Template ̸   弼."
   
  -#: ../wikilib.php:524
  +#: ../wikilib.php:571
   msgid "Skip to preview"
   msgstr "̸"
   
  -#: ../wikilib.php:526
  +#: ../wikilib.php:573
   msgid "ReduceEditor"
   msgstr "â ̱"
   
  -#: ../wikilib.php:527
  +#: ../wikilib.php:574
   msgid "EnlargeEditor"
   msgstr "â ̱"
   
  -#: ../wikilib.php:531 ../locale/dummy.php:6
  +#: ../wikilib.php:578 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr "Ű"
   
  -#: ../wikilib.php:532
  +#: ../wikilib.php:579
   msgid "HelpOnEditing"
   msgstr "ġ "
   
  -#: ../wikilib.php:549
  +#: ../wikilib.php:602
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:565
  +#: ../wikilib.php:618
   msgid "--Select Category--"
   msgstr "--īװ --"
   
  -#: ../wikilib.php:572 ../wikilib.php:1246
  +#: ../wikilib.php:632 ../wikilib.php:1326
   msgid "Save"
   msgstr ""
   
  -#: ../wikilib.php:573
  +#: ../wikilib.php:633
   msgid "Summary of Change"
   msgstr "ٲ "
   
  -#: ../wikilib.php:618
  +#: ../wikilib.php:678
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:623
  +#: ../wikilib.php:683
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s() ȿ ׼ ƴմϴ"
   
  -#: ../wikilib.php:625
  +#: ../wikilib.php:685
   msgid "Is it valid action ?"
   msgstr ""
   
  -#: ../wikilib.php:658
  +#: ../wikilib.php:718
   #, c-format
   msgid "File '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:660
  +#: ../wikilib.php:720
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr ""
   
  -#: ../wikilib.php:665
  +#: ../wikilib.php:725
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:667
  +#: ../wikilib.php:727
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr ""
   
  -#: ../wikilib.php:677 ../wikilib.php:697
  +#: ../wikilib.php:737 ../wikilib.php:757
   msgid "No files are selected !"
   msgstr " õ ʾҽϴ !"
   
  -#: ../wikilib.php:690
  +#: ../wikilib.php:750
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr " '%s'() ðڽϱ ?"
   
  -#: ../wikilib.php:693
  +#: ../wikilib.php:753
   msgid "Delete"
   msgstr ""
   
  -#: ../wikilib.php:694
  +#: ../wikilib.php:754
   msgid "Delete selected file"
   msgstr "õ  "
   
  -#: ../wikilib.php:716
  +#: ../wikilib.php:776
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr ""
   
  -#: ../wikilib.php:722
  +#: ../wikilib.php:782
   msgid "Please delete this file manually."
   msgstr ""
   
  -#: ../wikilib.php:724
  +#: ../wikilib.php:784
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "\"%s\"()  ?"
   
  -#: ../wikilib.php:826 ../wikilib.php:1684
  +#: ../wikilib.php:888 ../wikilib.php:1767
   msgid "Use more specific text"
   msgstr "  ڼ Էϼ"
   
  -#: ../wikilib.php:899
  +#: ../wikilib.php:972
   msgid "Goto Editor"
   msgstr " "
   
  -#: ../wikilib.php:908
  +#: ../wikilib.php:981
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "%s() ġ  ٸ    ߽ϴ"
   
  -#: ../wikilib.php:913 ../wikilib.php:942
  +#: ../wikilib.php:986 ../wikilib.php:1015
   #, c-format
   msgid "Preview of %s"
   msgstr "%s ̸"
   
  -#: ../wikilib.php:920
  +#: ../wikilib.php:993
   msgid "Conflict error!"
   msgstr "浹!"
   
  -#: ../wikilib.php:935
  -msgid "No difference found"
  -msgstr "ȭ ϴ"
  -
  -#: ../wikilib.php:968
  +#: ../wikilib.php:1053
   msgid "mail does not supported by default."
   msgstr ""
   
  -#: ../wikilib.php:972
  +#: ../wikilib.php:1057
   msgid "Sent notification mail."
   msgstr ""
   
  -#: ../wikilib.php:974
  +#: ../wikilib.php:1059
   msgid "No subscribers found."
   msgstr "ڰ ϴ"
   
  -#: ../wikilib.php:979
  +#: ../wikilib.php:1064
   #, c-format
   msgid "%s is not editable"
   msgstr "%s()   ϴ"
   
  -#: ../wikilib.php:981
  +#: ../wikilib.php:1066
   #, c-format
   msgid "%s is saved"
   msgstr "%s() Ǿϴ"
   
  -#: ../wikilib.php:1005
  +#: ../wikilib.php:1090
   msgid "Nobody subscribed to this page."
   msgstr "ƹ   ʰֽϴ."
   
  -#: ../wikilib.php:1027
  +#: ../wikilib.php:1107
   #, c-format
   msgid "%s page is modified"
   msgstr ""
   
  -#: ../wikilib.php:1037
  +#: ../wikilib.php:1117
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:1050
  +#: ../wikilib.php:1130
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:1054
  +#: ../wikilib.php:1134
   msgid "Mails are sent successfully"
   msgstr ""
   
  -#: ../wikilib.php:1055
  +#: ../wikilib.php:1135
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1218
  +#: ../wikilib.php:1298
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:1237
  +#: ../wikilib.php:1317
   msgid "Make profile"
   msgstr ""
   
  -#: ../wikilib.php:1238
  +#: ../wikilib.php:1318
   msgid "password again"
   msgstr ""
   
  -#: ../wikilib.php:1249
  +#: ../wikilib.php:1329
   msgid "New password"
   msgstr " йȣ"
   
  -#: ../wikilib.php:1255
  +#: ../wikilib.php:1335
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:1691
  +#: ../wikilib.php:1774
   #, c-format
   msgid "Title search for \"%s\""
   msgstr ""
  @@ -1158,18 +1264,3 @@
   #: ../locale/dummy.php:7
   msgid "TrackBack"
   msgstr "Ʈ"
  -
  -#~ msgid "Revision History"
  -#~ msgstr " 丮"
  -
  -#~ msgid "No older revisions available"
  -#~ msgstr "  ϴ"
  -
  -#~ msgid "Difference between r%s and r%s"
  -#~ msgstr "r%s r%s "
  -
  -#~ msgid "Difference between r%s and the current"
  -#~ msgstr "r%s   "
  -
  -#~ msgid "Info. for %s"
  -#~ msgstr "%s "
  
  
  
  1.12      +248 -142  moniwiki/locale/po/moniwiki.pot
  
  Index: moniwiki.pot
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/moniwiki.pot,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- moniwiki.pot	4 Jan 2005 09:06:03 -0000	1.11
  +++ moniwiki.pot	8 Aug 2005 07:42:03 -0000	1.12
  @@ -6,7 +6,7 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: PACKAGE VERSION\n"
  -"POT-Creation-Date: 2005-01-04 18:08+0900\n"
  +"POT-Creation-Date: 2005-08-08 16:39+0900\n"
   "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
   "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
   "Language-Team: LANGUAGE <LL@li.org>\n"
  @@ -14,12 +14,12 @@
   "Content-Type: text/plain; charset=CHARSET\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  -#: ../plugin/Attachment.php:82
  +#: ../plugin/Attachment.php:32 ../plugin/Attachment.php:101
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr ""
   
  -#: ../plugin/Attachment.php:85
  +#: ../plugin/Attachment.php:104
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
  @@ -38,56 +38,56 @@
   msgid "Blog cache of \"%s\" is refreshed"
   msgstr ""
   
  -#: ../plugin/Blog.php:109
  +#: ../plugin/Blog.php:110
   #, c-format
   msgid "\"%s\" is updated"
   msgstr ""
   
  -#: ../plugin/Blog.php:114
  +#: ../plugin/Blog.php:115
   msgid "Add Blog"
   msgstr ""
   
  -#: ../plugin/Blog.php:154
  +#: ../plugin/Blog.php:155
   msgid "Error: No blog entry found!"
   msgstr ""
   
  -#: ../plugin/Blog.php:162 ../plugin/Comment.php:109
  +#: ../plugin/Blog.php:163 ../plugin/Comment.php:110
   msgid "Error: Don't make a clone!"
   msgstr ""
   
  -#: ../plugin/Blog.php:179
  +#: ../plugin/Blog.php:180
   #, c-format
   msgid "Comment added to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:182
  +#: ../plugin/Blog.php:183
   #, c-format
   msgid "Blog entry added to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:219
  +#: ../plugin/Blog.php:220
   #, c-format
   msgid "Add Comment to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:221
  +#: ../plugin/Blog.php:222
   #, c-format
   msgid "Add Blog entry to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:235 ../plugin/Comment.php:45
  +#: ../plugin/Blog.php:236 ../plugin/Blog.php:292 ../plugin/Comment.php:46
   msgid "Name"
   msgstr ""
   
  -#: ../plugin/Blog.php:239
  +#: ../plugin/Blog.php:240 ../plugin/Blog.php:293
   msgid "Title"
   msgstr ""
   
  -#: ../plugin/Blog.php:245 ../plugin/Comment.php:47
  +#: ../plugin/Blog.php:246 ../plugin/Comment.php:48
   msgid "Don't add a signature"
   msgstr ""
   
  -#: ../plugin/Blog.php:258
  +#: ../plugin/Blog.php:259
   msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
   msgstr ""
   
  @@ -105,26 +105,26 @@
   msgstr ""
   
   #: ../plugin/BlogChanges.php:376 ../plugin/BlogChanges.php:378
  -#: ../plugin/processor/blog.php:43 ../plugin/processor/blog.php:45
  +#: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
   msgid "Anonymous"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:409 ../plugin/processor/blog.php:85
  +#: ../plugin/BlogChanges.php:409 ../plugin/processor/blog.php:86
   #, c-format
   msgid "%d comment"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:409 ../plugin/processor/blog.php:85
  +#: ../plugin/BlogChanges.php:409 ../plugin/processor/blog.php:86
   #, c-format
   msgid "%d comments"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:411 ../plugin/Comment.php:98
  -#: ../plugin/processor/blog.php:77
  +#: ../plugin/BlogChanges.php:411 ../plugin/Comment.php:99
  +#: ../plugin/ImportTable.php:76 ../plugin/processor/blog.php:78
   msgid "Add comment"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:421 ../plugin/processor/blog.php:96
  +#: ../plugin/BlogChanges.php:421 ../plugin/processor/blog.php:97
   msgid "track back"
   msgstr ""
   
  @@ -136,42 +136,84 @@
   msgid "Next"
   msgstr ""
   
  -#: ../plugin/Comment.php:48
  +#: ../plugin/Clip.php:28
  +msgid "Paste a new picture"
  +msgstr ""
  +
  +#: ../plugin/Clip.php:50 ../plugin/Draw.php:108
  +msgid "Fatal error !"
  +msgstr ""
  +
  +#: ../plugin/Clip.php:53 ../plugin/Draw.php:111
  +msgid "No filename given"
  +msgstr ""
  +
  +#: ../plugin/Clip.php:72
  +msgid "Clipboard"
  +msgstr ""
  +
  +#: ../plugin/Clip.php:81
  +msgid "Cut & Paste a Clipboard Image"
  +msgstr ""
  +
  +#: ../plugin/Comment.php:49
   msgid "Comment"
   msgstr ""
   
  -#: ../plugin/Comment.php:49 ../wikilib.php:571
  +#: ../plugin/Comment.php:50 ../plugin/ImportTable.php:67 ../wikilib.php:631
   msgid "Preview"
   msgstr ""
   
  -#: ../plugin/Comment.php:89
  +#: ../plugin/Comment.php:90
   msgid "Preview comment"
   msgstr ""
   
  -#: ../plugin/Comment.php:132
  +#: ../plugin/Comment.php:136
   #, c-format
   msgid "%s is commented successfully"
   msgstr ""
   
  -#: ../plugin/Comment.php:133
  +#: ../plugin/Comment.php:137
   msgid "Comment added successfully"
   msgstr ""
   
  -#: ../plugin/Draw.php:29 ../plugin/OeKaki.php:36
  -msgid "Draw new picture"
  +#: ../plugin/Diff.php:43 ../plugin/Diff.php:82 ../wikilib.php:1008
  +msgid "No difference found"
  +msgstr ""
  +
  +#: ../plugin/Diff.php:45
  +msgid "Difference between yours and the current"
  +msgstr ""
  +
  +#: ../plugin/Diff.php:66 ../plugin/Info.php:125
  +msgid "No older revisions available"
  +msgstr ""
  +
  +#: ../plugin/Diff.php:71 ../plugin/Info.php:131
  +msgid "Version info is not available in this wiki"
   msgstr ""
   
  -#: ../plugin/Draw.php:81 ../plugin/UploadFile.php:146
  +#: ../plugin/Diff.php:84
  +msgid "Difference between versions"
  +msgstr ""
  +
  +#: ../plugin/Diff.php:86
   #, c-format
  -msgid "Fail to copy \"%s\" to \"%s\""
  +msgid "Difference between r%s and r%s"
   msgstr ""
   
  -#: ../plugin/Draw.php:108
  -msgid "Fatal error !"
  +#: ../plugin/Diff.php:89
  +#, c-format
  +msgid "Difference between r%s and the current"
   msgstr ""
   
  -#: ../plugin/Draw.php:111
  -msgid "No filename given"
  +#: ../plugin/Draw.php:29 ../plugin/OeKaki.php:36
  +msgid "Draw new picture"
  +msgstr ""
  +
  +#: ../plugin/Draw.php:81 ../plugin/UploadFile.php:154
  +#, c-format
  +msgid "Fail to copy \"%s\" to \"%s\""
   msgstr ""
   
   #: ../plugin/Draw.php:132
  @@ -211,36 +253,70 @@
   msgid "BackLinks search for \"%s\""
   msgstr ""
   
  -#: ../plugin/FullSearch.php:103 ../wikilib.php:1695
  +#: ../plugin/FullSearch.php:103 ../wikilib.php:1778
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr ""
   
  -#: ../plugin/Gallery.php:225 ../plugin/Gallery.php:237
  +#: ../plugin/Gallery.php:244 ../plugin/Gallery.php:256
   msgid "add comment"
   msgstr ""
   
  -#: ../plugin/Gallery.php:234
  +#: ../plugin/Gallery.php:253
   msgid "show comments"
   msgstr ""
   
  -#: ../plugin/Gallery.php:277 ../plugin/Gallery.php:280 ../wikilib.php:934
  +#: ../plugin/Gallery.php:296 ../plugin/Gallery.php:299 ../wikilib.php:1007
   #, c-format
   msgid "Go back or return to %s"
   msgstr ""
   
  -#: ../plugin/Gallery.php:278
  +#: ../plugin/Gallery.php:297
   msgid "Comments are edited"
   msgstr ""
   
  -#: ../plugin/Gallery.php:281
  +#: ../plugin/Gallery.php:300
   msgid "Comments is added"
   msgstr ""
   
  +#: ../plugin/ImportTable.php:32
  +msgid "Convert"
  +msgstr ""
  +
   #: ../plugin/ImportUrl.php:105
   msgid "Import URL"
   msgstr ""
   
  +#: ../plugin/Info.php:15
  +msgid "Revision History"
  +msgstr ""
  +
  +#: ../plugin/Info.php:116
  +#, c-format
  +msgid "Info. for %s"
  +msgstr ""
  +
  +#: ../plugin/JME.php:55
  +#, c-format
  +msgid "Draw a new molecule '%s'"
  +msgstr ""
  +
  +#: ../plugin/JME.php:57
  +msgid "Draw a new molecule"
  +msgstr ""
  +
  +#: ../plugin/JME.php:95
  +msgid "Molecule successfully added"
  +msgstr ""
  +
  +#: ../plugin/JME.php:101
  +msgid "Edit Molecule"
  +msgstr ""
  +
  +#: ../plugin/JME.php:131
  +msgid "Edit new molecule"
  +msgstr ""
  +
   #: ../plugin/LikePages.php:109
   msgid "These pages share a similar word..."
   msgstr ""
  @@ -270,7 +346,7 @@
   msgid "Search all MetaWikis"
   msgstr ""
   
  -#: ../plugin/Navigation.php:14
  +#: ../plugin/Navigation.php:19
   msgid "No Index page found"
   msgstr ""
   
  @@ -282,7 +358,7 @@
   msgid "Edit Image"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:156
  +#: ../plugin/RecentChanges.php:158
   msgid "set bookmark"
   msgstr ""
   
  @@ -291,7 +367,7 @@
   msgid "TwinPages of %s"
   msgstr ""
   
  -#: ../plugin/TwinPages.php:18 ../wiki.php:2153 ../wiki.php:3292
  +#: ../plugin/TwinPages.php:18 ../wiki.php:2233 ../wiki.php:3400
   msgid "See TwinPages: "
   msgstr ""
   
  @@ -304,24 +380,33 @@
   msgid "%s is not allowed to upload"
   msgstr ""
   
  +#: ../plugin/UploadFile.php:127
  +#, c-format
  +msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
  +msgstr ""
  +
   #: ../plugin/UploadFile.php:155
  +msgid "Please check your php.ini setting"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:164
   #, c-format
   msgid "File \"%s\" is uploaded successfully"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:186
  +#: ../plugin/UploadFile.php:195
   msgid "Files are uploaded successfully"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:220
  +#: ../plugin/UploadFile.php:232
   msgid ": Rename"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:124 ../plugin/rename.php:69 ../wikilib.php:692
  +#: ../plugin/UploadedFiles.php:124 ../plugin/rename.php:69 ../wikilib.php:752
   msgid "Password"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:125 ../wikilib.php:670
  +#: ../plugin/UploadedFiles.php:125 ../wikilib.php:730
   msgid "Delete selected files"
   msgstr ""
   
  @@ -337,7 +422,9 @@
   msgid "Deeper"
   msgstr ""
   
  -#: ../plugin/Vote.php:67 ../plugin/security/mustlogin.php:25
  +#: ../plugin/Vote.php:67 ../plugin/security/community.php:26
  +#: ../plugin/security/community.php:36 ../plugin/security/community.php:46
  +#: ../plugin/security/community.php:58 ../plugin/security/mustlogin.php:25
   #: ../plugin/security/mustlogin.php:35 ../plugin/security/mustlogin.php:45
   #: ../plugin/security/mustlogin.php:60 ../plugin/security/needtologin.php:25
   #: ../plugin/security/needtologin.php:35 ../plugin/security/needtologin.php:45
  @@ -349,7 +436,7 @@
   msgid "Voted successfully"
   msgstr ""
   
  -#: ../plugin/WordIndex.php:65 ../wikilib.php:1492
  +#: ../plugin/WordIndex.php:65 ../wikilib.php:1574
   msgid "Others"
   msgstr ""
   
  @@ -408,7 +495,7 @@
   msgid "No manpage found"
   msgstr ""
   
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1243
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1323
   msgid "Login or Join"
   msgstr ""
   
  @@ -439,11 +526,13 @@
   msgid "Toggle line numbers"
   msgstr ""
   
  -#: ../plugin/quicklinks.php:16 ../plugin/subscribe.php:24
  +#: ../plugin/quicklinks.php:16 ../plugin/scrap.php:37
  +#: ../plugin/subscribe.php:25
   msgid "Please login or make your ID."
   msgstr ""
   
  -#: ../plugin/quicklinks.php:22 ../plugin/subscribe.php:30
  +#: ../plugin/quicklinks.php:22 ../plugin/scrap.php:40
  +#: ../plugin/subscribe.php:31
   msgid "Goto UserPreferences"
   msgstr ""
   
  @@ -535,7 +624,7 @@
   msgid "Only WikiMaster can rename this page"
   msgstr ""
   
  -#: ../plugin/rename.php:71 ../wikilib.php:730
  +#: ../plugin/rename.php:71 ../wikilib.php:790
   msgid "with revision history"
   msgstr ""
   
  @@ -573,13 +662,25 @@
   msgid "show changes"
   msgstr ""
   
  -#: ../plugin/security/mustlogin.php:24 ../plugin/security/mustlogin.php:34
  -#: ../plugin/security/mustlogin.php:44 ../plugin/security/needtologin.php:24
  -#: ../plugin/security/needtologin.php:34 ../plugin/security/needtologin.php:44
  +#: ../plugin/scrap.php:57
  +msgid "Scrap lists updated."
  +msgstr ""
  +
  +#: ../plugin/scrap.php:69
  +#, c-format
  +msgid "Do you want to scrap \"%s\" ?"
  +msgstr ""
  +
  +#: ../plugin/security/community.php:25 ../plugin/security/community.php:35
  +#: ../plugin/security/community.php:45 ../plugin/security/mustlogin.php:24
  +#: ../plugin/security/mustlogin.php:34 ../plugin/security/mustlogin.php:44
  +#: ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
  +#: ../plugin/security/needtologin.php:44
   #, c-format
   msgid "You are not allowed to '%s' on this page"
   msgstr ""
   
  +#: ../plugin/security/community.php:57 ../plugin/security/htaccesslogin.php:46
   #: ../plugin/security/mustlogin.php:59 ../plugin/security/userbased.php:28
   #: ../plugin/security/userbased.php:36 ../plugin/security/userbased.php:44
   #: ../plugin/security/userbased.php:59 ../plugin/security/wikimaster.php:25
  @@ -588,13 +689,17 @@
   msgid "You are not allowed to '%s' on this page."
   msgstr ""
   
  +#: ../plugin/security/htaccesslogin.php:47
  +msgid "Please contact the system administrator for htaccess based logins."
  +msgstr ""
  +
   #: ../plugin/security/userbased.php:29 ../plugin/security/userbased.php:37
   #: ../plugin/security/userbased.php:45 ../plugin/security/wikimaster.php:26
   #: ../plugin/security/wikimaster.php:34 ../plugin/security/wikimaster.php:42
   msgid "Please contact to WikiMaster"
   msgstr ""
   
  -#: ../plugin/sendping.php:13 ../plugin/trackback.php:41
  +#: ../plugin/sendping.php:13 ../plugin/trackback.php:40
   msgid "Error: Page Not found !"
   msgstr ""
   
  @@ -616,25 +721,25 @@
   
   #: ../plugin/subscribe.php:13
   msgid ""
  -"If you wan't to subscribe this page please contact the WikiMaster to "
  -"activate the e-mail notification"
  +"If you want to subscribe this page please contact the WikiMaster to activate "
  +"the e-mail notification"
   msgstr ""
   
  -#: ../plugin/subscribe.php:22
  +#: ../plugin/subscribe.php:23
   msgid "Please enter your email address first."
   msgstr ""
   
  -#: ../plugin/subscribe.php:31
  +#: ../plugin/subscribe.php:32
   msgid ""
   "If you want to subscribe this page, just make your ID and register your "
   "email address in the UserPreferences."
   msgstr ""
   
  -#: ../plugin/subscribe.php:46
  +#: ../plugin/subscribe.php:47
   msgid "Subscribe lists updated."
   msgstr ""
   
  -#: ../plugin/subscribe.php:58
  +#: ../plugin/subscribe.php:59
   #, c-format
   msgid "Do you want to subscribe \"%s\" ?"
   msgstr ""
  @@ -647,28 +752,28 @@
   msgid "Please select a theme properly."
   msgstr ""
   
  -#: ../plugin/trackback.php:54
  +#: ../plugin/trackback.php:53
   msgid "TrackBack is not activated !"
   msgstr ""
   
  -#: ../plugin/trackback.php:55
  +#: ../plugin/trackback.php:54
   msgid "send ping"
   msgstr ""
   
  -#: ../plugin/trackback.php:58
  +#: ../plugin/trackback.php:57
   #, c-format
   msgid "TrackBack list of %s"
   msgstr ""
   
  -#: ../plugin/trackback.php:62 ../plugin/trackback.php:79
  +#: ../plugin/trackback.php:61 ../plugin/trackback.php:78
   msgid "TrackBack URL for this page:"
   msgstr ""
   
  -#: ../plugin/trackback.php:63 ../plugin/trackback.php:80
  +#: ../plugin/trackback.php:62 ../plugin/trackback.php:79
   msgid "Send TrackBack Ping to another Blog:"
   msgstr ""
   
  -#: ../plugin/trackback.php:78
  +#: ../plugin/trackback.php:77
   #, c-format
   msgid "No TrackBack entry found for %s"
   msgstr ""
  @@ -786,96 +891,96 @@
   msgid "Whois search result for %s"
   msgstr ""
   
  -#: ../wiki.php:908
  +#: ../wiki.php:940
   #, c-format
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1199
  +#: ../wiki.php:1231
   msgid "Version info does not supported by this wiki"
   msgstr ""
   
  -#: ../wiki.php:1210
  +#: ../wiki.php:1242
   msgid "File does not exists"
   msgstr ""
   
  -#: ../wiki.php:2149
  +#: ../wiki.php:2229
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:2149
  +#: ../wiki.php:2229
   msgid "TwinPages"
   msgstr ""
   
  -#: ../wiki.php:2762 ../locale/dummy.php:6
  +#: ../wiki.php:2877 ../locale/dummy.php:6
   msgid "EditText"
   msgstr ""
   
  -#: ../wiki.php:2764
  +#: ../wiki.php:2879
   msgid "NotEditable"
   msgstr ""
   
  -#: ../wiki.php:2766 ../locale/dummy.php:6
  +#: ../wiki.php:2881 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:2767 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:2882 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr ""
   
  -#: ../wiki.php:2998
  +#: ../wiki.php:3113
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:3244
  +#: ../wiki.php:3360
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:3245 ../wiki.php:3256
  +#: ../wiki.php:3361 ../wiki.php:3372
   msgid "Please contact WikiMasters"
   msgstr ""
   
  -#: ../wiki.php:3255
  +#: ../wiki.php:3371
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:3294 ../wiki.php:3297 ../wikilib.php:861
  +#: ../wiki.php:3402 ../wiki.php:3405 ../wikilib.php:923
   msgid "Create this page"
   msgstr ""
   
  -#: ../wiki.php:3299 ../wikilib.php:863
  +#: ../wiki.php:3407 ../wikilib.php:925
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
   
  -#: ../wiki.php:3299 ../wikilib.php:863
  +#: ../wiki.php:3407 ../wikilib.php:925
   msgid "title"
   msgstr ""
   
  -#: ../wiki.php:3305
  +#: ../wiki.php:3413
   msgid " or alternativly, use one of these templates:\n"
   msgstr ""
   
  -#: ../wiki.php:3308
  +#: ../wiki.php:3416
   msgid "To create your own templates, add a page with a 'Template' suffix.\n"
   msgstr ""
   
  -#: ../wiki.php:3383
  +#: ../wiki.php:3491
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr ""
   
  -#: ../wiki.php:3395
  +#: ../wiki.php:3503
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:3398
  +#: ../wiki.php:3506
   msgid "Please enter the valid password"
   msgstr ""
   
  -#: ../wikilib.php:440
  +#: ../wikilib.php:456
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -892,213 +997,214 @@
   "no trailing white space allowed after tables or titles.<br />\n"
   msgstr ""
   
  -#: ../wikilib.php:506
  +#: ../wikilib.php:492
  +#, c-format
  +msgid "Edit %s"
  +msgstr ""
  +
  +#: ../wikilib.php:550
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   
  -#: ../wikilib.php:508
  +#: ../wikilib.php:552
   msgid "To create your own templates, add a page with a 'Template' suffix."
   msgstr ""
   
  -#: ../wikilib.php:524
  +#: ../wikilib.php:571
   msgid "Skip to preview"
   msgstr ""
   
  -#: ../wikilib.php:526
  +#: ../wikilib.php:573
   msgid "ReduceEditor"
   msgstr ""
   
  -#: ../wikilib.php:527
  +#: ../wikilib.php:574
   msgid "EnlargeEditor"
   msgstr ""
   
  -#: ../wikilib.php:531 ../locale/dummy.php:6
  +#: ../wikilib.php:578 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
  -#: ../wikilib.php:532
  +#: ../wikilib.php:579
   msgid "HelpOnEditing"
   msgstr ""
   
  -#: ../wikilib.php:549
  +#: ../wikilib.php:602
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:565
  +#: ../wikilib.php:618
   msgid "--Select Category--"
   msgstr ""
   
  -#: ../wikilib.php:572 ../wikilib.php:1246
  +#: ../wikilib.php:632 ../wikilib.php:1326
   msgid "Save"
   msgstr ""
   
  -#: ../wikilib.php:573
  +#: ../wikilib.php:633
   msgid "Summary of Change"
   msgstr ""
   
  -#: ../wikilib.php:618
  +#: ../wikilib.php:678
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:623
  +#: ../wikilib.php:683
   #, c-format
   msgid "%s is not valid action"
   msgstr ""
   
  -#: ../wikilib.php:625
  +#: ../wikilib.php:685
   msgid "Is it valid action ?"
   msgstr ""
   
  -#: ../wikilib.php:658
  +#: ../wikilib.php:718
   #, c-format
   msgid "File '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:660
  +#: ../wikilib.php:720
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr ""
   
  -#: ../wikilib.php:665
  +#: ../wikilib.php:725
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:667
  +#: ../wikilib.php:727
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr ""
   
  -#: ../wikilib.php:677 ../wikilib.php:697
  +#: ../wikilib.php:737 ../wikilib.php:757
   msgid "No files are selected !"
   msgstr ""
   
  -#: ../wikilib.php:690
  +#: ../wikilib.php:750
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
  -#: ../wikilib.php:693
  +#: ../wikilib.php:753
   msgid "Delete"
   msgstr ""
   
  -#: ../wikilib.php:694
  +#: ../wikilib.php:754
   msgid "Delete selected file"
   msgstr ""
   
  -#: ../wikilib.php:716
  +#: ../wikilib.php:776
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr ""
   
  -#: ../wikilib.php:722
  +#: ../wikilib.php:782
   msgid "Please delete this file manually."
   msgstr ""
   
  -#: ../wikilib.php:724
  +#: ../wikilib.php:784
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr ""
   
  -#: ../wikilib.php:826 ../wikilib.php:1684
  +#: ../wikilib.php:888 ../wikilib.php:1767
   msgid "Use more specific text"
   msgstr ""
   
  -#: ../wikilib.php:899
  +#: ../wikilib.php:972
   msgid "Goto Editor"
   msgstr ""
   
  -#: ../wikilib.php:908
  +#: ../wikilib.php:981
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr ""
   
  -#: ../wikilib.php:913 ../wikilib.php:942
  +#: ../wikilib.php:986 ../wikilib.php:1015
   #, c-format
   msgid "Preview of %s"
   msgstr ""
   
  -#: ../wikilib.php:920
  +#: ../wikilib.php:993
   msgid "Conflict error!"
   msgstr ""
   
  -#: ../wikilib.php:935
  -msgid "No difference found"
  -msgstr ""
  -
  -#: ../wikilib.php:968
  +#: ../wikilib.php:1053
   msgid "mail does not supported by default."
   msgstr ""
   
  -#: ../wikilib.php:972
  +#: ../wikilib.php:1057
   msgid "Sent notification mail."
   msgstr ""
   
  -#: ../wikilib.php:974
  +#: ../wikilib.php:1059
   msgid "No subscribers found."
   msgstr ""
   
  -#: ../wikilib.php:979
  +#: ../wikilib.php:1064
   #, c-format
   msgid "%s is not editable"
   msgstr ""
   
  -#: ../wikilib.php:981
  +#: ../wikilib.php:1066
   #, c-format
   msgid "%s is saved"
   msgstr ""
   
  -#: ../wikilib.php:1005
  +#: ../wikilib.php:1090
   msgid "Nobody subscribed to this page."
   msgstr ""
   
  -#: ../wikilib.php:1027
  +#: ../wikilib.php:1107
   #, c-format
   msgid "%s page is modified"
   msgstr ""
   
  -#: ../wikilib.php:1037
  +#: ../wikilib.php:1117
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:1050
  +#: ../wikilib.php:1130
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:1054
  +#: ../wikilib.php:1134
   msgid "Mails are sent successfully"
   msgstr ""
   
  -#: ../wikilib.php:1055
  +#: ../wikilib.php:1135
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1218
  +#: ../wikilib.php:1298
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:1237
  +#: ../wikilib.php:1317
   msgid "Make profile"
   msgstr ""
   
  -#: ../wikilib.php:1238
  +#: ../wikilib.php:1318
   msgid "password again"
   msgstr ""
   
  -#: ../wikilib.php:1249
  +#: ../wikilib.php:1329
   msgid "New password"
   msgstr ""
   
  -#: ../wikilib.php:1255
  +#: ../wikilib.php:1335
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:1691
  +#: ../wikilib.php:1774
   #, c-format
   msgid "Title search for \"%s\""
   msgstr ""
  
  
  


wkpark      2005/08/08 18:32:49

  Modified:    plugin   Attachment.php
  Log:
  experimental support [attachment:"hello world.png"] syntax to allow spaces
  in the filename. (fixed PR #300973 suggested by buff)
  
  Revision  Changes    Path
  1.17      +17 -7     moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- Attachment.php	8 Aug 2005 06:35:33 -0000	1.16
  +++ Attachment.php	8 Aug 2005 09:32:49 -0000	1.17
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.16 2005/08/08 06:35:33 wkpark Exp $
  +// $Id: Attachment.php,v 1.17 2005/08/08 09:32:49 wkpark Exp $
   
   function macro_Attachment($formatter,$value,$option='') {
     global $DBInfo;
  @@ -16,18 +16,26 @@
     else $mydownload='download';
   
     $text='';
  +
     if (($p=strpos($value,' ')) !== false) {
       // [attachment:my.ext hello]
       // [attachment:my.ext attachment:my.png]
       // [attachment:my.ext http://url/../my.png]
  -    $text=$ntext=substr($value,$p+1);
  -    $value=substr($value,0,$p);
  +    if ($value[0]=='"' and ($p2=strpos(substr($value,1),'"')) !== false) {
  +      $text=$ntext=substr($value,$p2+3);
  +      $dummy=substr($value,1,$p2);
  +      $value=$dummy;
  +    } else {
  +      $text=$ntext=substr($value,$p+1);
  +      $value=substr($value,0,$p);
  +    }
       if (substr($text,0,11)=='attachment:') {
         $fname=substr($text,11);
         $ntext=macro_Attachment($formatter,$fname,1);
       }
       if (preg_match("/\.(png|gif|jpeg|jpg)$/i",$ntext)) {
         if (!file_exists($ntext)) {
  +        $fname=preg_replace('/^"([^"]*)"$/',"\\1",$fname);
           $mydownload='UploadFile&amp;rename='.$fname;
           $text=sprintf(_("Upload new Attachment \"%s\""),$fname);
           $text=str_replace('"','\'',$text);
  @@ -35,6 +43,8 @@
         $ntext=qualifiedUrl($DBInfo->url_prefix.'/'.$ntext);
         $img_link='<img src="'.$ntext.'" alt="'.$text.'" border="0" />';
       }
  +  } else {
  +    $value=str_replace('%20',' ',$value);
     }
   
     if (($dummy=strpos($value,'?'))) {
  @@ -85,12 +95,12 @@
     if (file_exists($upload_file)) {
       if (!$img_link && preg_match("/\.(png|gif|jpeg|jpg)$/i",$upload_file)) {
         if ($key != $pagename || $force_download)
  -        $url=$formatter->link_url(_urlencode($pagename),"?action=$mydownload&amp;value=$value");
  +        $url=$formatter->link_url(_urlencode($pagename),"?action=$mydownload&amp;value=".urlencode($value));
         else
           $url=$DBInfo->url_prefix."/"._urlencode($upload_file);
         return "<span class=\"imgAttach\"><img src='$url' alt='$file' $attr/></span>";
       } else {
  -      $link=$formatter->link_url(_urlencode($pagename),"?action=$mydownload&amp;value=$value",$text);
  +      $link=$formatter->link_url(_urlencode($pagename),"?action=$mydownload&amp;value=".urlencode($value),$text);
         if ($img_link)
           return "<span class=\"attach\"><a href='$link'>$img_link</a></span>";
   
  @@ -98,10 +108,10 @@
       }
     }
     if ($pagename == $formatter->page->name)
  -    return '<span class="attach">'.$formatter->link_to("?action=UploadFile&amp;rename=$file",sprintf(_("Upload new Attachment \"%s\""),$file)).'</span>';
  +    return '<span class="attach">'.$formatter->link_to("?action=UploadFile&amp;rename=".urlencode($file),sprintf(_("Upload new Attachment \"%s\""),$file)).'</span>';
   
     if (!$pagename) $pagename='UploadFile';
  -  return '<span class="attach">'.$formatter->link_tag($pagename,"?action=UploadFile&amp;rename=$file",sprintf(_("Upload new Attachment \"%s\" on the \"%s\""),$file, $pagename)).'</span>';
  +  return '<span class="attach">'.$formatter->link_tag($pagename,"?action=UploadFile&amp;rename=".urlencode($file),sprintf(_("Upload new Attachment \"%s\" on the \"%s\""),$file, $pagename)).'</span>';
   }
   
   // vim:et:sts=2:
  
  
  


wkpark      2005/08/08 22:07:25

  Modified:    .        wikilib.php
  Log:
  antispam feature added. use $spam_filter='antispam' to enable it.
  
  Revision  Changes    Path
  1.146     +13 -1     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.145
  retrieving revision 1.146
  diff -u -r1.145 -r1.146
  --- wikilib.php	29 Apr 2005 12:18:04 -0000	1.145
  +++ wikilib.php	8 Aug 2005 13:07:25 -0000	1.146
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.145 2005/04/29 12:18:04 wkpark Exp $
  +// $Id: wikilib.php,v 1.146 2005/08/08 13:07:25 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1009,6 +1009,18 @@
       $formatter->send_footer();
       return;
     }
  +
  +  if (!$button_preview and $DBInfo->spam_filter) {
  +    $text=$savetext;
  +    $fts=preg_split('/(\||,)/',$DBInfo->spam_filter);
  +    foreach ($fts as $ft) {
  +      $text=$formatter->filter_repl($ft,$text,$options);
  +    }
  +    if ($text != $savetext) {
  +      $button_preview=1;
  +      $options['msg'] = _("Sorry, can not save page because of some messages are not allowed in this wiki.");
  +    }
  +  }
     $formatter->page->set_raw_body($savetext);
   
     if ($button_preview) {
  
  
  


wkpark      2005/08/08 22:07:25

  Added:       plugin/filter antispam.php
  Log:
  antispam feature added. use $spam_filter='antispam' to enable it.
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/filter/antispam.php
  
  Index: antispam.php
  ===================================================================
  <?php
  // Copyright 2005 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a Antispam filter plugin for the MoniWiki
  //
  // $Id: antispam.php,v 1.1 2005/08/08 13:07:25 wkpark Exp $
  
  function filter_antispam($formatter,$value,$options) {
      $blacklist_pages=array('BadContent','LocalBadContent');
      $whitelist_pages=array('GoodContent','LocalGoodContent');
      if (! in_array($formatter->page->name,$blacklist_pages) and
          ! in_array($formatter->page->name,$whitelist_pages)) {
  
          foreach ($blacklist_pages as $list) {
              $p=new WikiPage($list);
              if ($p->exists()) $badcontent.=$p->get_raw_body();
          }
          $badcontents=explode("\n",$badcontent);
          $pattern[0]='';
          $i=0;
          foreach ($badcontents as $line) {
              if ($line[0]=='#') continue;
              $line=preg_replace('/[ ]*#.*$/','',$line);
              $test=@preg_match("/$line/i","");
              if ($test === false) $line=preg_quote($line,'/');
              if ($line) $pattern[$i].=$line.'|';
              if (strlen($pattern[$i])>4000) {
                  $i++;
                  $pattern[$i]='';
              }
          }
          for ($k=0;$k<=$i;$k++)
              $pattern[$k]='/'.substr($pattern[$k],0,-1).'/i';
  
          #foreach ($whitelist_pages as $list) {
          #    $p=new WikiPage($list);
          #    if ($p->exists()) $goodcontent.=$p->get_raw_body();
          #}
          #$goodcontents=explode("\n",$goodcontent);
  
          return preg_replace($pattern,"",$value);
      }
      return $value;
  }
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2005/08/08 22:16:43

  Modified:    locale   Makefile
  Log:
  update some messages
  
  Revision  Changes    Path
  1.5       +2 -1      moniwiki/locale/Makefile
  
  Index: Makefile
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/Makefile,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Makefile	8 Aug 2005 07:42:03 -0000	1.4
  +++ Makefile	8 Aug 2005 13:16:42 -0000	1.5
  @@ -1,4 +1,4 @@
  -# $Id: Makefile,v 1.4 2005/08/08 07:42:03 wkpark Exp $
  +# $Id: Makefile,v 1.5 2005/08/08 13:16:42 wkpark Exp $
   #
   # locale/Makefile
   #
  @@ -117,6 +117,7 @@
   ${POT_FILE}: ../plugin/dot.php
   ${POT_FILE}: ../plugin/download.php
   ${POT_FILE}: ../plugin/filter.php
  +${POT_FILE}: ../plugin/filter/antispam.php
   ${POT_FILE}: ../plugin/filter/cite.php
   ${POT_FILE}: ../plugin/filter/sample.php
   ${POT_FILE}: ../plugin/fixmoin.php
  
  
  


wkpark      2005/08/08 22:16:43

  Modified:    locale/po fr.po ko.po moniwiki.pot
  Log:
  update some messages
  
  Revision  Changes    Path
  1.13      +31 -26    moniwiki/locale/po/fr.po
  
  Index: fr.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/fr.po,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- fr.po	8 Aug 2005 07:42:03 -0000	1.12
  +++ fr.po	8 Aug 2005 13:16:43 -0000	1.13
  @@ -3,7 +3,7 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1\n"
  -"POT-Creation-Date: 2005-08-08 16:39+0900\n"
  +"POT-Creation-Date: 2005-08-08 22:13+0900\n"
   "PO-Revision-Date: 2003-08-17 22:51+0900\n"
   "Last-Translator: Serge Stinckwich <Serge.Stinckwich@info.unicaen.fr>\n"
   "Language-Team: fr <fr@li.org>\n"
  @@ -12,13 +12,13 @@
   "Content-Transfer-Encoding: 8bit\n"
   
   # ../plugin/Attachment.php:24
  -#: ../plugin/Attachment.php:32 ../plugin/Attachment.php:101
  +#: ../plugin/Attachment.php:40 ../plugin/Attachment.php:111
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr "Tlcharger le nouvel attachement \"%s\""
   
   # ../plugin/Attachment.php:24
  -#: ../plugin/Attachment.php:104
  +#: ../plugin/Attachment.php:114
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
  @@ -297,7 +297,7 @@
   msgstr ""
   
   # ../wikilib.php:1483
  -#: ../plugin/FullSearch.php:103 ../wikilib.php:1778
  +#: ../plugin/FullSearch.php:103 ../wikilib.php:1790
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "Expression de recherche \"%s\" invalide"
  @@ -506,7 +506,7 @@
   msgid "Voted successfully"
   msgstr "Vote russi"
   
  -#: ../plugin/WordIndex.php:65 ../wikilib.php:1574
  +#: ../plugin/WordIndex.php:65 ../wikilib.php:1586
   msgid "Others"
   msgstr ""
   
  @@ -577,7 +577,7 @@
   msgstr "Aucune page de manuel trouv"
   
   # ../plugin/minilogin.php:22 ../wikilib.php:1076
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1323
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1335
   msgid "Login or Join"
   msgstr "Se connecter ou se joindre "
   
  @@ -1235,7 +1235,7 @@
   msgstr "-- Slectionner une catgorie"
   
   # ../wikilib.php:483 ../wikilib.php:1079
  -#: ../wikilib.php:632 ../wikilib.php:1326
  +#: ../wikilib.php:632 ../wikilib.php:1338
   msgid "Save"
   msgstr "Sauvegarder"
   
  @@ -1323,7 +1323,7 @@
   msgstr "Effacer \"%s\" ?"
   
   # ../wikilib.php:672 ../wikilib.php:1472
  -#: ../wikilib.php:888 ../wikilib.php:1767
  +#: ../wikilib.php:888 ../wikilib.php:1779
   msgid "Use more specific text"
   msgstr "Utiliser un texte plus spcifique"
   
  @@ -1339,7 +1339,7 @@
   msgstr "Quelqu'un a sauvegard la page tandis que vous ditiez %s"
   
   # ../wikilib.php:748 ../wikilib.php:777
  -#: ../wikilib.php:986 ../wikilib.php:1015
  +#: ../wikilib.php:986 ../wikilib.php:1027
   #, c-format
   msgid "Preview of %s"
   msgstr "Prvisualisation de %s"
  @@ -1349,46 +1349,51 @@
   msgid "Conflict error!"
   msgstr "Erreur de conflit !"
   
  +#: ../wikilib.php:1021
  +msgid ""
  +"Sorry, can not save page because some messages are blocked in this wiki."
  +msgstr ""
  +
   # ../wikilib.php:803
  -#: ../wikilib.php:1053
  +#: ../wikilib.php:1065
   msgid "mail does not supported by default."
   msgstr "La messagerie n'est pas support par dfaut."
   
   # ../wikilib.php:807
  -#: ../wikilib.php:1057
  +#: ../wikilib.php:1069
   msgid "Sent notification mail."
   msgstr "Des notifications par messagerie ont t envoyes."
   
   # ../wikilib.php:809
  -#: ../wikilib.php:1059
  +#: ../wikilib.php:1071
   msgid "No subscribers found."
   msgstr "Aucun abonn trouv."
   
   # ../wikilib.php:814
  -#: ../wikilib.php:1064
  +#: ../wikilib.php:1076
   #, c-format
   msgid "%s is not editable"
   msgstr "%s n'est pas ditable"
   
   # ../wikilib.php:816
  -#: ../wikilib.php:1066
  +#: ../wikilib.php:1078
   #, c-format
   msgid "%s is saved"
   msgstr "%s est sauvegard"
   
   # ../wikilib.php:838
  -#: ../wikilib.php:1090
  +#: ../wikilib.php:1102
   msgid "Nobody subscribed to this page."
   msgstr "Personne n'est abonn  cette page, aucun mail envoy"
   
   # ../wikilib.php:860
  -#: ../wikilib.php:1107
  +#: ../wikilib.php:1119
   #, c-format
   msgid "%s page is modified"
   msgstr "la page %s est modifi"
   
   # ../wikilib.php:870
  -#: ../wikilib.php:1117
  +#: ../wikilib.php:1129
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
  @@ -1399,48 +1404,48 @@
   "\n"
   
   # ../wikilib.php:883
  -#: ../wikilib.php:1130
  +#: ../wikilib.php:1142
   msgid "Send notification mails to all subscribers"
   msgstr "Envoyez un mail de notification  tous les abonns"
   
   # ../wikilib.php:887
  -#: ../wikilib.php:1134
  +#: ../wikilib.php:1146
   msgid "Mails are sent successfully"
   msgstr "Mail envoy avec succs"
   
   # ../wikilib.php:888
  -#: ../wikilib.php:1135
  +#: ../wikilib.php:1147
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr "un mail a t envoy  '%s'"
   
   # ../plugin/login.php:26 ../wikilib.php:1051
  -#: ../wikilib.php:1298
  +#: ../wikilib.php:1310
   msgid "Login"
   msgstr "Se connecter"
   
   # ../wikilib.php:1070
  -#: ../wikilib.php:1317
  +#: ../wikilib.php:1329
   msgid "Make profile"
   msgstr "Faire un profil"
   
   # ../wikilib.php:1071
  -#: ../wikilib.php:1318
  +#: ../wikilib.php:1330
   msgid "password again"
   msgstr "mot de passe de nouveau"
   
   # ../wikilib.php:1082
  -#: ../wikilib.php:1329
  +#: ../wikilib.php:1341
   msgid "New password"
   msgstr "Nouveau mot de passe"
   
   # ../wikilib.php:1088
  -#: ../wikilib.php:1335
  +#: ../wikilib.php:1347
   msgid "logout"
   msgstr "se dconnecter"
   
   # ../wikilib.php:1479
  -#: ../wikilib.php:1774
  +#: ../wikilib.php:1786
   #, c-format
   msgid "Title search for \"%s\""
   msgstr "Recherche de titre pour \"%s\""
  
  
  
  1.18      +31 -26    moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- ko.po	8 Aug 2005 07:42:03 -0000	1.17
  +++ ko.po	8 Aug 2005 13:16:43 -0000	1.18
  @@ -5,7 +5,7 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1\n"
  -"POT-Creation-Date: 2005-08-08 16:39+0900\n"
  +"POT-Creation-Date: 2005-08-08 22:13+0900\n"
   "PO-Revision-Date: 2003-04-29 19:00+0900\n"
   "Last-Translator: Won-kyu Park <wkpark@kldp.org>\n"
   "Language-Team: ko <ko@li.org>\n"
  @@ -13,12 +13,12 @@
   "Content-Type: text/plain; charset=EUC-KR\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  -#: ../plugin/Attachment.php:32 ../plugin/Attachment.php:101
  +#: ../plugin/Attachment.php:40 ../plugin/Attachment.php:111
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr ""
   
  -#: ../plugin/Attachment.php:104
  +#: ../plugin/Attachment.php:114
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
  @@ -252,7 +252,7 @@
   msgid "BackLinks search for \"%s\""
   msgstr "\"%s\"  ũ ã"
   
  -#: ../plugin/FullSearch.php:103 ../wikilib.php:1778
  +#: ../plugin/FullSearch.php:103 ../wikilib.php:1790
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr ""
  @@ -435,7 +435,7 @@
   msgid "Voted successfully"
   msgstr ""
   
  -#: ../plugin/WordIndex.php:65 ../wikilib.php:1574
  +#: ../plugin/WordIndex.php:65 ../wikilib.php:1586
   msgid "Others"
   msgstr ""
   
  @@ -494,7 +494,7 @@
   msgid "No manpage found"
   msgstr "Manpage ϴ"
   
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1323
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1335
   msgid "Login or Join"
   msgstr ""
   
  @@ -1055,7 +1055,7 @@
   msgid "--Select Category--"
   msgstr "--īװ --"
   
  -#: ../wikilib.php:632 ../wikilib.php:1326
  +#: ../wikilib.php:632 ../wikilib.php:1338
   msgid "Save"
   msgstr ""
   
  @@ -1127,7 +1127,7 @@
   msgid "Delete \"%s\" ?"
   msgstr "\"%s\"()  ?"
   
  -#: ../wikilib.php:888 ../wikilib.php:1767
  +#: ../wikilib.php:888 ../wikilib.php:1779
   msgid "Use more specific text"
   msgstr "  ڼ Էϼ"
   
  @@ -1140,7 +1140,7 @@
   msgid "Someone else saved the page while you edited %s"
   msgstr "%s() ġ  ٸ    ߽ϴ"
   
  -#: ../wikilib.php:986 ../wikilib.php:1015
  +#: ../wikilib.php:986 ../wikilib.php:1027
   #, c-format
   msgid "Preview of %s"
   msgstr "%s ̸"
  @@ -1149,78 +1149,83 @@
   msgid "Conflict error!"
   msgstr "浹!"
   
  -#: ../wikilib.php:1053
  +#: ../wikilib.php:1021
  +msgid ""
  +"Sorry, can not save page because some messages are blocked in this wiki."
  +msgstr "˼մϴ. Ư ޽ Ǿ    ϴ."
  +
  +#: ../wikilib.php:1065
   msgid "mail does not supported by default."
   msgstr ""
   
  -#: ../wikilib.php:1057
  +#: ../wikilib.php:1069
   msgid "Sent notification mail."
   msgstr ""
   
  -#: ../wikilib.php:1059
  +#: ../wikilib.php:1071
   msgid "No subscribers found."
   msgstr "ڰ ϴ"
   
  -#: ../wikilib.php:1064
  +#: ../wikilib.php:1076
   #, c-format
   msgid "%s is not editable"
   msgstr "%s()   ϴ"
   
  -#: ../wikilib.php:1066
  +#: ../wikilib.php:1078
   #, c-format
   msgid "%s is saved"
   msgstr "%s() Ǿϴ"
   
  -#: ../wikilib.php:1090
  +#: ../wikilib.php:1102
   msgid "Nobody subscribed to this page."
   msgstr "ƹ   ʰֽϴ."
   
  -#: ../wikilib.php:1107
  +#: ../wikilib.php:1119
   #, c-format
   msgid "%s page is modified"
   msgstr ""
   
  -#: ../wikilib.php:1117
  +#: ../wikilib.php:1129
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:1130
  +#: ../wikilib.php:1142
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:1134
  +#: ../wikilib.php:1146
   msgid "Mails are sent successfully"
   msgstr ""
   
  -#: ../wikilib.php:1135
  +#: ../wikilib.php:1147
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1298
  +#: ../wikilib.php:1310
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:1317
  +#: ../wikilib.php:1329
   msgid "Make profile"
   msgstr ""
   
  -#: ../wikilib.php:1318
  +#: ../wikilib.php:1330
   msgid "password again"
   msgstr ""
   
  -#: ../wikilib.php:1329
  +#: ../wikilib.php:1341
   msgid "New password"
   msgstr " йȣ"
   
  -#: ../wikilib.php:1335
  +#: ../wikilib.php:1347
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:1774
  +#: ../wikilib.php:1786
   #, c-format
   msgid "Title search for \"%s\""
   msgstr ""
  
  
  
  1.13      +31 -26    moniwiki/locale/po/moniwiki.pot
  
  Index: moniwiki.pot
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/moniwiki.pot,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- moniwiki.pot	8 Aug 2005 07:42:03 -0000	1.12
  +++ moniwiki.pot	8 Aug 2005 13:16:43 -0000	1.13
  @@ -6,7 +6,7 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: PACKAGE VERSION\n"
  -"POT-Creation-Date: 2005-08-08 16:39+0900\n"
  +"POT-Creation-Date: 2005-08-08 22:13+0900\n"
   "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
   "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
   "Language-Team: LANGUAGE <LL@li.org>\n"
  @@ -14,12 +14,12 @@
   "Content-Type: text/plain; charset=CHARSET\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  -#: ../plugin/Attachment.php:32 ../plugin/Attachment.php:101
  +#: ../plugin/Attachment.php:40 ../plugin/Attachment.php:111
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr ""
   
  -#: ../plugin/Attachment.php:104
  +#: ../plugin/Attachment.php:114
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
  @@ -253,7 +253,7 @@
   msgid "BackLinks search for \"%s\""
   msgstr ""
   
  -#: ../plugin/FullSearch.php:103 ../wikilib.php:1778
  +#: ../plugin/FullSearch.php:103 ../wikilib.php:1790
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr ""
  @@ -436,7 +436,7 @@
   msgid "Voted successfully"
   msgstr ""
   
  -#: ../plugin/WordIndex.php:65 ../wikilib.php:1574
  +#: ../plugin/WordIndex.php:65 ../wikilib.php:1586
   msgid "Others"
   msgstr ""
   
  @@ -495,7 +495,7 @@
   msgid "No manpage found"
   msgstr ""
   
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1323
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1335
   msgid "Login or Join"
   msgstr ""
   
  @@ -1039,7 +1039,7 @@
   msgid "--Select Category--"
   msgstr ""
   
  -#: ../wikilib.php:632 ../wikilib.php:1326
  +#: ../wikilib.php:632 ../wikilib.php:1338
   msgid "Save"
   msgstr ""
   
  @@ -1111,7 +1111,7 @@
   msgid "Delete \"%s\" ?"
   msgstr ""
   
  -#: ../wikilib.php:888 ../wikilib.php:1767
  +#: ../wikilib.php:888 ../wikilib.php:1779
   msgid "Use more specific text"
   msgstr ""
   
  @@ -1124,7 +1124,7 @@
   msgid "Someone else saved the page while you edited %s"
   msgstr ""
   
  -#: ../wikilib.php:986 ../wikilib.php:1015
  +#: ../wikilib.php:986 ../wikilib.php:1027
   #, c-format
   msgid "Preview of %s"
   msgstr ""
  @@ -1133,78 +1133,83 @@
   msgid "Conflict error!"
   msgstr ""
   
  -#: ../wikilib.php:1053
  +#: ../wikilib.php:1021
  +msgid ""
  +"Sorry, can not save page because some messages are blocked in this wiki."
  +msgstr ""
  +
  +#: ../wikilib.php:1065
   msgid "mail does not supported by default."
   msgstr ""
   
  -#: ../wikilib.php:1057
  +#: ../wikilib.php:1069
   msgid "Sent notification mail."
   msgstr ""
   
  -#: ../wikilib.php:1059
  +#: ../wikilib.php:1071
   msgid "No subscribers found."
   msgstr ""
   
  -#: ../wikilib.php:1064
  +#: ../wikilib.php:1076
   #, c-format
   msgid "%s is not editable"
   msgstr ""
   
  -#: ../wikilib.php:1066
  +#: ../wikilib.php:1078
   #, c-format
   msgid "%s is saved"
   msgstr ""
   
  -#: ../wikilib.php:1090
  +#: ../wikilib.php:1102
   msgid "Nobody subscribed to this page."
   msgstr ""
   
  -#: ../wikilib.php:1107
  +#: ../wikilib.php:1119
   #, c-format
   msgid "%s page is modified"
   msgstr ""
   
  -#: ../wikilib.php:1117
  +#: ../wikilib.php:1129
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:1130
  +#: ../wikilib.php:1142
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:1134
  +#: ../wikilib.php:1146
   msgid "Mails are sent successfully"
   msgstr ""
   
  -#: ../wikilib.php:1135
  +#: ../wikilib.php:1147
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1298
  +#: ../wikilib.php:1310
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:1317
  +#: ../wikilib.php:1329
   msgid "Make profile"
   msgstr ""
   
  -#: ../wikilib.php:1318
  +#: ../wikilib.php:1330
   msgid "password again"
   msgstr ""
   
  -#: ../wikilib.php:1329
  +#: ../wikilib.php:1341
   msgid "New password"
   msgstr ""
   
  -#: ../wikilib.php:1335
  +#: ../wikilib.php:1347
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:1774
  +#: ../wikilib.php:1786
   #, c-format
   msgid "Title search for \"%s\""
   msgstr ""
  
  
  


wkpark      2005/08/08 22:17:43

  Modified:    local    fixmathml.js
  Log:
  update
  
  Revision  Changes    Path
  1.3       +3 -1      moniwiki/local/fixmathml.js
  
  Index: fixmathml.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/fixmathml.js,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- fixmathml.js	28 Mar 2005 08:40:41 -0000	1.2
  +++ fixmathml.js	8 Aug 2005 13:17:43 -0000	1.3
  @@ -12,7 +12,9 @@
   License
   (at http://www.gnu.org/copyleft/gpl.html) for more details.
   
  -2005/03/28 fix for the itex processor for the MoniWiki by wkpark
  +from http://www1.chapman.edu/~jipsen/mathml/mathhtmltest.phtml
  +
  +2005/03/28 fix for the itex processor by wkpark
   */
   
   var mml = "http://www.w3.org/1998/Math/MathML";
  
  
  


wkpark      2005/08/08 22:20:53

  Modified:    .        config.php.default
  Log:
  add 'spam_filter' option
  
  Revision  Changes    Path
  1.19      +5 -4      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- config.php.default	5 Aug 2005 08:45:19 -0000	1.18
  +++ config.php.default	8 Aug 2005 13:20:53 -0000	1.19
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.18 2005/08/05 08:45:19 wkpark Exp $
  +# $Id: config.php.default,v 1.19 2005/08/08 13:20:53 wkpark Exp $
   #
   $sitename='UnnamedWiki';
   $data_dir= './data';
  @@ -30,9 +30,8 @@
   $inline_latex=0;
   $lang='auto';
   $charset='utf-8';
  -#$charset='utf-8';
  +#$charset='euc-kr';
   $auto_linebreak= 0;
  -#$auto_search='AutoGoto';
   $trail= 0;
   #$origin=1;
   #$arrow=' <img src="/wiki/imgs/moni-arrow.gif"/> ';
  @@ -106,9 +105,11 @@
   #$use_twikilink=1;
   #$timezone='KST'; // for windows
   #$version_class='RcsLite';
  -#$use_numbering=1;
  +#$use_numbering=1; // for the vim processor
   #$use_resizer=1;
   #$use_minoredit=1; // only for wiki owners
   #$auto_search='FixMoin';
  +#$auto_search='AutoGoto';
   $use_sectionedit=0;
  +$spam_filter='antispam';
   ?>
  
  
  


wkpark      2005/08/09 13:19:47

  Modified:    plugin/processor geshi.php
  Log:
  fix author
  
  Revision  Changes    Path
  1.2       +2 -2      moniwiki/plugin/processor/geshi.php
  
  Index: geshi.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/geshi.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- geshi.php	29 Apr 2005 22:05:17 -0000	1.1
  +++ geshi.php	9 Aug 2005 04:19:46 -0000	1.2
  @@ -1,5 +1,5 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2005 Dongsu Jang <iolo at hellocity.net>
   // All rights reserved. Distributable under GPL see COPYING
   // a geshi colorizer plugin for the MoniWiki
   //
  @@ -24,7 +24,7 @@
   //
   // this version was tested with geshi 1.0.6.
   //
  -// $Id: geshi.php,v 1.1 2005/04/29 22:05:17 iolo Exp $
  +// $Id: geshi.php,v 1.2 2005/08/09 04:19:46 wkpark Exp $
   
   include_once(dirname(__FILE__)."/../../lib/geshi/geshi.php");
   
  
  
  


wkpark      2005/08/12 21:11:47

  Modified:    .        wikilib.php
  Log:
  add 'use_toctoggle' feature in the TableOfContents()
  
  Revision  Changes    Path
  1.147     +37 -4     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.146
  retrieving revision 1.147
  diff -u -r1.146 -r1.147
  --- wikilib.php	8 Aug 2005 13:07:25 -0000	1.146
  +++ wikilib.php	12 Aug 2005 12:11:47 -0000	1.147
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.146 2005/08/08 13:07:25 wkpark Exp $
  +// $Id: wikilib.php,v 1.147 2005/08/12 12:11:47 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1018,7 +1018,7 @@
       }
       if ($text != $savetext) {
         $button_preview=1;
  -      $options['msg'] = _("Sorry, can not save page because of some messages are not allowed in this wiki.");
  +      $options['msg'] = _("Sorry, can not save page because some messages are blocked in this wiki.");
       }
     }
     $formatter->page->set_raw_body($savetext);
  @@ -1681,7 +1681,40 @@
    global $DBInfo;
    $head_num=1;
    $head_dep=0;
  - $TOC="\n<div class='toc'><a name='toc' id='toc' /><dl><dd><dl>\n";
  + $TOC='';
  + $title='';
  +
  + if ($value) {
  +  $args=explode(",",$value);
  +  foreach ($args as $arg) {
  +   $name=strtok($arg,'=');
  +   if ($name=='title') {
  +    $title=strtok('');
  +   } else if ($arg) {
  +    $value=$arg;
  +   }
  +  }
  + }
  +
  + if ($DBInfo->use_toctoggle)
  +  $TOC.=<<<EOS
  +<script type="text/javascript" src="$DBInfo->url_prefix/local/toctoggle.js">
  +</script>
  +EOS;
  + if ($DBInfo->use_toctoggle)
  +  $TOC_close=<<<EOS
  +<script type="text/javascript">
  +//<![CDATA[
  + if (window.showTocToggle) { showTocToggle('<img src="$DBInfo->imgs_dir/arrdown.png" width="16px" border="0" alt="[+]" />','<img src="$DBInfo->imgs_dir/arrup.png" width="16px" border="0" alt="[-]" />'); } 
  +//]]>
  +</script>
  +EOS;
  + $TOC.="\n<div id='toc'>";
  + if ($title == '') $title=_("Contents");
  + $TOC.="<div id='toctitle'>
  +<h2 style='display:inline'>$title</h2>
  +</div>";
  + $TOC.="<a name='toc' ></a><dl><dd><dl>\n";
   
    $formatter->toc=1;
    $baseurl='';
  @@ -1762,7 +1795,7 @@
        $close="";
        $depth=$head_dep;
        while ($depth>1) { $depth--;$close.="</dl></dd>\n"; };
  -     return $TOC.$close."</dl></dd></dl>\n</div>\n";
  +     return $TOC.$close."</dl></dd></dl>\n</div>\n".$TOC_close;
     }
     else return "";
   }
  
  
  


wkpark      2005/08/12 21:12:54

  Modified:    .        wiki.php
  Log:
  init the icon[] in formatter class
  
  Revision  Changes    Path
  1.224     +5 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.223
  retrieving revision 1.224
  diff -u -r1.223 -r1.224
  --- wiki.php	20 Apr 2005 13:43:30 -0000	1.223
  +++ wiki.php	12 Aug 2005 12:12:54 -0000	1.224
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.223 2005/04/20 13:43:30 wkpark Exp $
  +// $Id: wiki.php,v 1.224 2005/08/12 12:12:54 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.223 $',1,-1);
  +$_revision = substr('$Revision: 1.224 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -845,6 +845,8 @@
       if ($user->id != 'Anonymous') {
         $udb=new UserDB($this);
         $udb->checkUser($user);
  +    } else {
  +      if (strlen($comment)>80) $comment='';
       }
       $REMOTE_ADDR=$_SERVER['REMOTE_ADDR'];
       $comment=escapeshellcmd($comment);
  @@ -1452,6 +1454,7 @@
       $options['themedir']=$this->themedir;
       $options['themeurl']=$this->themeurl;
       $options['frontpage']=$DBInfo->frontpage;
  +    $this->icon=array();
       if (file_exists($this->themedir."/theme.php")) {
         $data=getConfig($this->themedir."/theme.php",$options);
         #print_r($data);
  @@ -1461,7 +1464,6 @@
           while (list($key,$val) = each($data)) $this->$key=$val;
         }
       }
  -    #if ($this->icon)
       $this->icon=array_merge($DBInfo->icon,$this->icon);
   
       if (!isset($this->icon_bra)) {
  
  
  


wkpark      2005/08/12 21:15:13

  Added:       local    toctoggle.js
  Log:
  import the MediaWiki TOC toggling feature
  
  Revision  Changes    Path
  1.1                  moniwiki/local/toctoggle.js
  
  Index: toctoggle.js
  ===================================================================
  // imported from the WikiMedia and modified for the MoniWiki
  //
  
  function showTocToggle(showBtn,hideBtn) {
    if (document.createTextNode) {
      // Uses DOM calls to avoid document.write + XHTML issues
  
      var linkHolder = document.getElementById('toctitle')
      if (!linkHolder) return;
  
      var outerSpan = document.createElement('span');
      outerSpan.className = 'toctoggle';
  
      var toggleLink = document.createElement('a');
      toggleLink.id = 'togglelink';
      toggleLink.className = 'internal';
      toggleLink.href = 'javascript:toggleToc()';
  
      var showToc = document.createElement('span');
      showToc.id = 'showtoc';
      showToc.style.display = 'none';
      showToc.innerHTML = showBtn;
  
      var hideToc = document.createElement('span');
      hideToc.id = 'hidetoc';
      hideToc.innerHTML = hideBtn;
  
      toggleLink.appendChild(hideToc);
      toggleLink.appendChild(showToc);
  
      outerSpan.appendChild(toggleLink);
  
      linkHolder.appendChild(document.createTextNode(' '));
      linkHolder.appendChild(outerSpan);
    }
  }
  
  function toggleToc() {
      var toc = document.getElementById('toc').getElementsByTagName('dl')[0];
      var showtoc=document.getElementById('showtoc');
      var hidetoc=document.getElementById('hidetoc');
      var toggleLink = document.getElementById('togglelink')
    
      if(toc && toggleLink && toc.style.display == 'none') {
         toc.style.display='block';
         showtoc.style.display='none';
         hidetoc.style.display='';
      } else {
         toc.style.display='none';
         showtoc.style.display='';
         hidetoc.style.display='none';
      }
  }
  
  
  


wkpark      2005/08/12 21:20:21

  Modified:    .        wikilib.php
  Log:
  more fixes
  
  Revision  Changes    Path
  1.148     +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.147
  retrieving revision 1.148
  diff -u -r1.147 -r1.148
  --- wikilib.php	12 Aug 2005 12:11:47 -0000	1.147
  +++ wikilib.php	12 Aug 2005 12:20:20 -0000	1.148
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.147 2005/08/12 12:11:47 wkpark Exp $
  +// $Id: wikilib.php,v 1.148 2005/08/12 12:20:20 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1705,7 +1705,7 @@
     $TOC_close=<<<EOS
   <script type="text/javascript">
   //<![CDATA[
  - if (window.showTocToggle) { showTocToggle('<img src="$DBInfo->imgs_dir/arrdown.png" width="16px" border="0" alt="[+]" />','<img src="$DBInfo->imgs_dir/arrup.png" width="16px" border="0" alt="[-]" />'); } 
  + if (window.showTocToggle) { showTocToggle('<img src="$DBInfo->imgs_dir/plugin/arrdown.png" width="10px" border="0" alt="[+]" title="[+]" />','<img src="$DBInfo->imgs_dir/plugin/arrup.png" width="10px" border="0" alt="[-]" title="[-]" />'); } 
   //]]>
   </script>
   EOS;
  
  
  


wkpark      2005/08/12 21:36:31

  Modified:    .        wiki.php
  Log:
  fix "--deleted--" syntax and add "~~deleted~~" syntax like as the trac.
  "\\" syntax added as a comment.
  
  Revision  Changes    Path
  1.225     +7 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.224
  retrieving revision 1.225
  diff -u -r1.224 -r1.225
  --- wiki.php	12 Aug 2005 12:12:54 -0000	1.224
  +++ wiki.php	12 Aug 2005 12:36:31 -0000	1.225
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.224 2005/08/12 12:12:54 wkpark Exp $
  +// $Id: wiki.php,v 1.225 2005/08/12 12:36:31 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.224 $',1,-1);
  +$_revision = substr('$Revision: 1.225 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -1378,7 +1378,9 @@
                        "/\^([^ \^]+)\^(?=\s|$)/","/\^\^([^\^]+)\^\^(?!^)/",
                        "/(?<!,),,([^ ,]+),,(?!,)/",
                        "/(?<!_)__((?:(?<!_)_(?!_)|[^_])+)__(?!_)/","/^(-{4,})/e",
  -                     "/(?<!-)--([^\s][^-]+[^\s])--(?!-)/",
  +                     "/(?<!-)--([^-]+[^\s])--(?!-)/",
  +                     "/(?<!~)~~([^~]+[^\s])~~(?!~)/",
  +                     #"/(\\\\\\\\)$/", # tex, pmWiki
                        );
       $this->baserepl=array("&lt;\\1","&#96;\\1'","<tt class='wiki'>\\1</tt>",
                        "<strong>\\1</strong>","<strong>\\1</strong>",
  @@ -1389,6 +1391,8 @@
                        "\$this->$DBInfo->hr_type"."_hr('\\1')",
                        #"<div class='separator'><hr class='wiki' /></div>\n",
                        "<del>\\1</del>",
  +                     "<del>\\1</del>",
  +                     #"<br />",
                        );
   
       # NoSmoke's MultiLineCell hack
  
  
  


wkpark      2005/08/12 22:06:13

  Modified:    .        config.php.default
  Log:
  add a new option $use_toctoggle, and a missing option $hr_type
  
  Revision  Changes    Path
  1.20      +3 -1      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- config.php.default	8 Aug 2005 13:20:53 -0000	1.19
  +++ config.php.default	12 Aug 2005 13:06:13 -0000	1.20
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.19 2005/08/08 13:20:53 wkpark Exp $
  +# $Id: config.php.default,v 1.20 2005/08/12 13:06:13 wkpark Exp $
   #
   $sitename='UnnamedWiki';
   $data_dir= './data';
  @@ -110,6 +110,8 @@
   #$use_minoredit=1; // only for wiki owners
   #$auto_search='FixMoin';
   #$auto_search='AutoGoto';
  +#$hr_type='fancy';
   $use_sectionedit=0;
   $spam_filter='antispam';
  +$use_toctoggle=0;
   ?>
  
  
  


wkpark      2005/08/12 22:07:47

  Added:       imgs/plugin arrdown.png arrup.png
  Log:
  two icons are added for toc toggling
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/plugin/arrdown.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/arrup.png
  
  	<<Binary file>>
  
  


wkpark      2005/08/13 14:25:55

  Modified:    .        monisetup.php
  Log:
  load config.php.default properly for win32
  
  Revision  Changes    Path
  1.24      +3 -2      moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- monisetup.php	23 Apr 2005 12:53:18 -0000	1.23
  +++ monisetup.php	13 Aug 2005 05:25:55 -0000	1.24
  @@ -1,7 +1,7 @@
   <?php
   // Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.23 2005/04/23 12:53:18 wkpark Exp $
  +// $Id: monisetup.php,v 1.24 2005/08/13 05:25:55 wkpark Exp $
   
   function _stripslashes($str) {
     return get_magic_quotes_gpc() ? stripslashes($str):$str;
  @@ -113,6 +113,7 @@
       $lines=file($configfile);
       $key='';
       foreach ($lines as $line) {
  +      $line=rtrim($line); // for Win32
         if (!$key and $line[0] != '$') continue;
         if ($key) {
           $val.=$line;
  @@ -526,7 +527,7 @@
       print "<h3 color='blue'>Default settings are loaded...</h3>\n";
   
       $lines=$Config->_genRawConfig($rawconfig);
  -    $rawconf=join("",$lines);
  +    $rawconf=implode("",$lines);
       umask(000);
       $fp=fopen("config.php","w");
       fwrite($fp,$rawconf);
  
  
  


wkpark      2005/08/13 15:20:10

  Modified:    plugin/processor vim.php
  Log:
  fix for win32. it works on win32 now
  
  Revision  Changes    Path
  1.26      +8 -3      moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- vim.php	8 Apr 2005 10:43:23 -0000	1.25
  +++ vim.php	13 Aug 2005 06:20:10 -0000	1.26
  @@ -1,12 +1,16 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a vim colorizer plugin for the MoniWiki
   //
   // Usage: {{{#!vim sh|c|sh|.. [number]
   // some codes
   // }}}
  -// $Id: vim.php,v 1.25 2005/04/08 10:43:23 wkpark Exp $
  +//
  +// Win32 note:
  +//  add $path="%PATH%;/Program Files/Vim/VimXX"; in the config.php
  +//
  +// $Id: vim.php,v 1.26 2005/08/13 06:20:10 wkpark Exp $
   
   function processor_vim($formatter,$value,$options) {
     global $DBInfo;
  @@ -74,7 +78,7 @@
     }
   
     if(getenv("OS")=="Windows_NT") {
  -    $tohtml='\%VIMRUNTIME\%\\syntax\\2html.vim';
  +    $tohtml='$VIMRUNTIME/syntax/2html.vim';
       $vim="gvim"; # Win32
       $fout=tempnam("/tmp","OUT");
     } else {
  @@ -113,6 +117,7 @@
     unlink($tmpf);
   
     #$out=preg_replace("/<title.*title>|<\/?head>|<\/?html>|<meta.*>|<\/?body.*>/","", $out);
  +  $out=preg_replace("/\r?\n/","\n",$out); # for Win32
     $out=preg_replace("/(^(\s|\S)*<pre>\n|\n<\/pre>(\s|\S)*$)/","",$out);
     $lines=explode("\n",$out);
     $out="<span class=\"line\">".
  
  
  


wkpark      2005/08/13 15:51:21

  Modified:    plugin/processor gnuplot.php vim.php
  Log:
  fix for win32
  
  Revision  Changes    Path
  1.10      +3 -3      moniwiki/plugin/processor/gnuplot.php
  
  Index: gnuplot.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/gnuplot.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- gnuplot.php	26 Mar 2005 15:48:04 -0000	1.9
  +++ gnuplot.php	13 Aug 2005 06:51:21 -0000	1.10
  @@ -1,12 +1,12 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a gnuplot processor plugin for the MoniWiki
   //
   // Usage: {{{#!gnuplot
   // plot sin(x)
   // }}}
  -// $Id: gnuplot.php,v 1.9 2005/03/26 15:48:04 wkpark Exp $
  +// $Id: gnuplot.php,v 1.10 2005/08/13 06:51:21 wkpark Exp $
   
   function processor_gnuplot($formatter="",$value="") {
     global $DBInfo;
  @@ -64,8 +64,8 @@
   #!  ls
   #plot sin(x)
   #';
  -
     # normalize plt
  +  $plt=str_replace("\r\n","\n",$plt); 
     $plt="\n".$plt."\n";
     $plt=preg_replace("/\n\s*![^\n]+\n/","\n",$plt); # strip shell commands
     $plt=preg_replace("/[ ]+/"," ",$plt);
  
  
  
  1.27      +3 -3      moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- vim.php	13 Aug 2005 06:20:10 -0000	1.26
  +++ vim.php	13 Aug 2005 06:51:21 -0000	1.27
  @@ -8,9 +8,9 @@
   // }}}
   //
   // Win32 note:
  -//  add $path="%PATH%;/Program Files/Vim/VimXX"; in the config.php
  +//  add $path="/bin;/Program Files/Vim/VimXX"; in the config.php
   //
  -// $Id: vim.php,v 1.26 2005/08/13 06:20:10 wkpark Exp $
  +// $Id: vim.php,v 1.27 2005/08/13 06:51:21 wkpark Exp $
   
   function processor_vim($formatter,$value,$options) {
     global $DBInfo;
  @@ -117,7 +117,7 @@
     unlink($tmpf);
   
     #$out=preg_replace("/<title.*title>|<\/?head>|<\/?html>|<meta.*>|<\/?body.*>/","", $out);
  -  $out=preg_replace("/\r?\n/","\n",$out); # for Win32
  +  $out=str_replace("\r\n","\n",$out); # for Win32
     $out=preg_replace("/(^(\s|\S)*<pre>\n|\n<\/pre>(\s|\S)*$)/","",$out);
     $lines=explode("\n",$out);
     $out="<span class=\"line\">".
  
  
  


wkpark      2005/08/13 22:05:31

  Modified:    .        monisetup.php
  Log:
  set $version_class='RcsLite' as default for Win32
  
  Revision  Changes    Path
  1.25      +4 -2      moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- monisetup.php	13 Aug 2005 05:25:55 -0000	1.24
  +++ monisetup.php	13 Aug 2005 13:05:31 -0000	1.25
  @@ -1,7 +1,7 @@
   <?php
   // Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.24 2005/08/13 05:25:55 wkpark Exp $
  +// $Id: monisetup.php,v 1.25 2005/08/13 13:05:31 wkpark Exp $
   
   function _stripslashes($str) {
     return get_magic_quotes_gpc() ? stripslashes($str):$str;
  @@ -80,8 +80,10 @@
       $user = $user ? $user : get_current_user();
       $config['rcs_user']="'".$user."'";
   
  -    if(getenv("OS")=="Windows_NT")
  +    if(getenv("OS")=="Windows_NT") {
         $config['timezone']="'LT'";
  +      $config['version_class']="'RcsLite'";
  +    }
   
       if (!file_exists('wikilib.php')) {
         $config['include_path']="'.:/usr/local/share/moniwiki:/usr/share/moniwiki'";
  
  
  


wkpark      2005/08/13 22:07:04

  Modified:    .        wikilib.php
  Log:
  timezone support
  
  Revision  Changes    Path
  1.149     +26 -2     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.148
  retrieving revision 1.149
  diff -u -r1.148 -r1.149
  --- wikilib.php	12 Aug 2005 12:20:20 -0000	1.148
  +++ wikilib.php	13 Aug 2005 13:07:04 -0000	1.149
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.148 2005/08/12 12:20:20 wkpark Exp $
  +// $Id: wikilib.php,v 1.149 2005/08/13 13:07:04 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -255,7 +255,8 @@
     function saveUser($user) {
       $config=array("css_url","datatime_fmt","email","bookmark","language",
                     "name","password","wikiname_add_spaces","subscribed_pages",
  -                  "scrapped_pages","quicklinks","theme","ticket","eticket");
  +                  "scrapped_pages","quicklinks","theme","ticket","eticket",
  +	  	  "timezone");
   
       $date=date('Y/m/d', time());
       $data="# Data saved $date\n";
  @@ -332,6 +333,7 @@
        $this->theme=$_COOKIE['MONI_THEME'];
        $this->bookmark=$_COOKIE['MONI_BOOKMARK'];
        $this->trail=_stripslashes($_COOKIE['MONI_TRAIL']);
  +     $this->timezone=_stripslashes($_COOKIE['MONI_TZ']);
     }
   
     function setID($id) {
  @@ -1338,10 +1340,26 @@
       $button=_("Save");
       $css=$user->info['css_url'];
       $email=$user->info['email'];
  +    $timezone=$user->info['timezone'];
       $again="<b>"._("New password")."</b>&nbsp;<input type='password' size='15' maxlength='12' name='passwordagain' value='' /></td></tr>";
   
  +    for ($i=-47;$i<=47;$i++) {
  +      $val=1800*$i;
  +      $tz=date("Y/m/d H:i",time()+$val+date('I'));
  +      $hour=sprintf("%02d",abs((int)($val / 3600)));
  +      $z=$hour . (($val % 3600) ? ":30":":00");
  +      if ($val < 0) $z="-".$z;
  +      if ($i== 0) $selected=" selected='selected'";
  +      else $selected="";
  +      
  +      $opts.="<option value='$z'$selected>$tz [$z]</option>\n";
  +    }
  +
       $extra=<<<EXTRA
     <tr><td><b>Mail</b>&nbsp;</td><td><input type="text" size="40" name="email" value="$email" /></td></tr>
  +  <tr><td><b>TimeZone</b>&nbsp;</td><td><select name="timezone">
  +  $opts
  +  </select></td></tr>
     <tr><td><b>CSS URL </b>&nbsp;</td><td><input type="text" size="40" name="user_css" value="$css" /><br />("None" for disabling CSS)</td></tr>
   EXTRA;
       $logout="<input type='submit' name='logout' value='"._("logout")."' /> &nbsp;";
  @@ -1363,6 +1381,12 @@
     </td></tr>
   </table>
   </form>
  +<script src="$DBInfo->url_prefix/local/tz.js"></script>
  +<script type="text/javascript">
  +//<![CDATA[
  +setTimezone();
  +//]]>
  +</script>
   EOF;
   }
   
  
  
  


wkpark      2005/08/13 22:07:35

  Modified:    plugin   userform.php
  Log:
  timezone support
  
  Revision  Changes    Path
  1.9       +3 -1      moniwiki/plugin/userform.php
  
  Index: userform.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/userform.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- userform.php	21 Oct 2004 08:27:01 -0000	1.8
  +++ userform.php	13 Aug 2005 13:07:35 -0000	1.9
  @@ -4,7 +4,7 @@
   // a userform action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: userform.php,v 1.8 2004/10/21 08:27:01 wkpark Exp $
  +// $Id: userform.php,v 1.9 2005/08/13 13:07:35 wkpark Exp $
   
   function do_userform($formatter,$options) {
     global $DBInfo;
  @@ -150,6 +150,8 @@
       }
       if (isset($options['user_css']))
         $userinfo->info['css_url']=$options['user_css'];
  +    if (isset($options['timezone']))
  +      $userinfo->info['timezone']=$options['timezone'];
       if ($options['email'] and ($options['email'] != $userinfo->info['email'])) {
         if (preg_match('/^[a-z][a-z0-9_\-\.]+@[a-z][a-z0-9_\-]+(\.[a-z0-9_]+)+$/i',$options['email'])) {
           $ticket=md5(time().$userinfo->info['id'].$options['email']);
  
  
  


wkpark      2005/08/13 22:08:42

  Added:       local    tz.js
  Log:
  timezone support
  
  Revision  Changes    Path
  1.1                  moniwiki/local/tz.js
  
  Index: tz.js
  ===================================================================
  // in [-]HH:MM format...
  // won't yet work with non-even tzs
  function fetchTimezone() {
    // FIXME: work around Safari bug
    var localclock = new Date();
    // returns negative offset from GMT in minutes
    var tzRaw = localclock.getTimezoneOffset();
    var tzHour = Math.floor( Math.abs(tzRaw) / 60);
    var tzMin = Math.abs(tzRaw) % 60;
    var tzString = ((tzRaw >= 0) ? "-" : "") + ((tzHour < 10) ? "0" : "")
      + tzHour + ":" + ((tzMin < 10) ? "0" : "") + tzMin;
    return tzString;
  }
  
  function setTimezone() {
    var tz=fetchTimezone();
    if (document.createTextNode) {
      // Uses DOM calls to avoid document.write + XHTML issues
      var form=document.getElementsByTagName('form');
      for (i=0;i<form.length;i++) {
         var opt=form[i].getElementsByTagName('option');
         if (opt.length > 0) {
            for (j=0;j<opt.length;j++) {
               if (opt[j].value == tz) {
                 opt[j].selected='selected';
               } else {
                 opt[j].selected='';
               }
            }
         }
      }
    }
  }
  
  
  


wkpark      2005/08/14 01:55:24

  Modified:    .        monisetup.php wiki.php wikilib.php
  Log:
  more fixes for timezone support
  
  Revision  Changes    Path
  1.26      +4 -2      moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- monisetup.php	13 Aug 2005 13:05:31 -0000	1.25
  +++ monisetup.php	13 Aug 2005 16:55:24 -0000	1.26
  @@ -1,7 +1,7 @@
   <?php
   // Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.25 2005/08/13 13:05:31 wkpark Exp $
  +// $Id: monisetup.php,v 1.26 2005/08/13 16:55:24 wkpark Exp $
   
   function _stripslashes($str) {
     return get_magic_quotes_gpc() ? stripslashes($str):$str;
  @@ -81,7 +81,9 @@
       $config['rcs_user']="'".$user."'";
   
       if(getenv("OS")=="Windows_NT") {
  -      $config['timezone']="'LT'";
  +      $config['timezone']="'-09-09'";
  +      // http://kldp.net/forum/message.php?msg_id=7675
  +      // http://bugs.php.net/bug.php?id=22418
         $config['version_class']="'RcsLite'";
       }
   
  
  
  
  1.226     +10 -4     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.225
  retrieving revision 1.226
  diff -u -r1.225 -r1.226
  --- wiki.php	12 Aug 2005 12:36:31 -0000	1.225
  +++ wiki.php	13 Aug 2005 16:55:24 -0000	1.226
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.225 2005/08/12 12:36:31 wkpark Exp $
  +// $Id: wiki.php,v 1.226 2005/08/13 16:55:24 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.225 $',1,-1);
  +$_revision = substr('$Revision: 1.226 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -2903,8 +2903,13 @@
       $menu=$this->get_actions($args,$options);
   
       if ($mtime=$this->page->mtime()) {
  -      $lastedit=date("Y-m-d",$mtime);
  -      $lasttime=date("H:i:s",$mtime);
  +      if ($options['tz_offset'] != '') {
  +        $lastedit=gmdate("Y-m-d",$mtime+$options['tz_offset']);
  +        $lasttime=gmdate("H:i:s",$mtime+$options['tz_offset']);
  +      } else {
  +        $lastedit=date("Y-m-d",$mtime);
  +        $lasttime=date("H:i:s",$mtime);
  +      }
       }
   
       $banner= <<<FOOT
  @@ -3277,6 +3282,7 @@
       $user=$userinfo;
       $options['css_url']=$user->info['css_url'];
       $options['quicklinks']=$user->info['quicklinks'];
  +    $options['tz_offset']=$user->info['tz_offset'];
       if (!$theme) $options['theme']=$user->info['theme'];
     } else {
       $options['id']='Anonymous';
  
  
  
  1.150     +21 -14    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.149
  retrieving revision 1.150
  diff -u -r1.149 -r1.150
  --- wikilib.php	13 Aug 2005 13:07:04 -0000	1.149
  +++ wikilib.php	13 Aug 2005 16:55:24 -0000	1.150
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.149 2005/08/13 13:07:04 wkpark Exp $
  +// $Id: wikilib.php,v 1.150 2005/08/13 16:55:24 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -256,7 +256,7 @@
       $config=array("css_url","datatime_fmt","email","bookmark","language",
                     "name","password","wikiname_add_spaces","subscribed_pages",
                     "scrapped_pages","quicklinks","theme","ticket","eticket",
  -	  	  "timezone");
  +	  	  "tz_offset");
   
       $date=date('Y/m/d', time());
       $data="# Data saved $date\n";
  @@ -333,7 +333,7 @@
        $this->theme=$_COOKIE['MONI_THEME'];
        $this->bookmark=$_COOKIE['MONI_BOOKMARK'];
        $this->trail=_stripslashes($_COOKIE['MONI_TRAIL']);
  -     $this->timezone=_stripslashes($_COOKIE['MONI_TZ']);
  +     $this->tz_offset=_stripslashes($_COOKIE['MONI_TZ']);
     }
   
     function setID($id) {
  @@ -1340,7 +1340,7 @@
       $button=_("Save");
       $css=$user->info['css_url'];
       $email=$user->info['email'];
  -    $timezone=$user->info['timezone'];
  +    $tz_offset=$user->info['tz_offset'];
       $again="<b>"._("New password")."</b>&nbsp;<input type='password' size='15' maxlength='12' name='passwordagain' value='' /></td></tr>";
   
       for ($i=-47;$i<=47;$i++) {
  @@ -1349,24 +1349,36 @@
         $hour=sprintf("%02d",abs((int)($val / 3600)));
         $z=$hour . (($val % 3600) ? ":30":":00");
         if ($val < 0) $z="-".$z;
  -      if ($i== 0) $selected=" selected='selected'";
  -      else $selected="";
  +      if ($tz_offset != '' and $val== $tz_offset)
  +        $selected=" selected='selected'";
  +      else
  +        $selected="";
         
         $opts.="<option value='$z'$selected>$tz [$z]</option>\n";
       }
   
  +    $jscript="<script src='$DBInfo->url_prefix/local/tz.js'></script>";
       $extra=<<<EXTRA
     <tr><td><b>Mail</b>&nbsp;</td><td><input type="text" size="40" name="email" value="$email" /></td></tr>
  -  <tr><td><b>TimeZone</b>&nbsp;</td><td><select name="timezone">
  +  <tr><td><b>Time Zone</b>&nbsp;</td><td><select name="timezone">
     $opts
  -  </select></td></tr>
  +  </select> <input type='button' value='Local timezone' onclick='javascript:setTimezone()' /></td></tr>
     <tr><td><b>CSS URL </b>&nbsp;</td><td><input type="text" size="40" name="user_css" value="$css" /><br />("None" for disabling CSS)</td></tr>
   EXTRA;
       $logout="<input type='submit' name='logout' value='"._("logout")."' /> &nbsp;";
     }
  +  if ($tz_offset=="")
  +    $script=<<<EOF
  +<script type="text/javascript">
  +//<![CDATA[
  +setTimezone();
  +//]]>
  +</script>
  +EOF;
   
     return <<<EOF
   $login
  +$jscript
   <form method="post" action="$url">
   <input type="hidden" name="action" value="userform" />
   <table border="0">
  @@ -1381,12 +1393,7 @@
     </td></tr>
   </table>
   </form>
  -<script src="$DBInfo->url_prefix/local/tz.js"></script>
  -<script type="text/javascript">
  -//<![CDATA[
  -setTimezone();
  -//]]>
  -</script>
  +$script
   EOF;
   }
   
  
  
  


wkpark      2005/08/14 01:57:46

  Modified:    plugin   Info.php RecentChanges.php userform.php
  Log:
  more fixes for timezone support
  
  Revision  Changes    Path
  1.3       +12 -2     moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Info.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Info.php	24 Nov 2004 15:30:30 -0000	1.2
  +++ Info.php	13 Aug 2005 16:57:46 -0000	1.3
  @@ -3,10 +3,17 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Info plugin for the MoniWiki
   //
  -// $Id: Info.php,v 1.2 2004/11/24 15:30:30 wkpark Exp $
  +// $Id: Info.php,v 1.3 2005/08/13 16:57:46 wkpark Exp $
   
   function _parse_rlog($formatter,$log) {
     global $DBInfo;
  +
  +  $user=new User(); # get cookie
  +  if ($user->id != 'Anonymous') { # XXX
  +    $udb=new UserDB($DBInfo);
  +    $udb->checkUser($user);
  +    $tz_offset=$user->info['tz_offset'];
  +  }
     $state=0;
     $flag=0;
   
  @@ -45,7 +52,10 @@
         case 2:
            $inf=preg_replace("/date:\s(.*);\s+author:.*;\s+state:.*;/","\\1",$line);
            list($inf,$change)=explode('lines:',$inf,2);
  -         $inf=date("Y-m-d H:i:s",strtotime($inf)); // localtime XXX
  +         if ($tz_offset !='')
  +           $inf=gmdate("Y-m-d H:i:s",strtotime($inf)+$tz_offset);
  +         else
  +           $inf=date("Y-m-d H:i:s",strtotime($inf)); // localtime
   
            $change=preg_replace("/\+(\d+)\s\-(\d+)/",
              "<span class='diff-added'>+\\1</span><span class='diff-removed'>-\\2</span>",$change);
  
  
  
  1.13      +29 -11    moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- RecentChanges.php	14 Apr 2005 02:01:20 -0000	1.12
  +++ RecentChanges.php	13 Aug 2005 16:57:46 -0000	1.13
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.12 2005/04/14 02:01:20 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.13 2005/08/13 16:57:46 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     $options['trail']='';
  @@ -70,13 +70,16 @@
     if ($user->id != 'Anonymous') {
       $udb=new UserDB($DBInfo);
       $udb->checkUser($user);
  -  }
  -
  -  if ($user->id == 'Anonymous')
  -    $bookmark= $user->bookmark;
  -  else {
       $bookmark= $user->info['bookmark'];
  +    $tz_offset= $user->info['tz_offset'];
  +  } else {
  +    $bookmark= $user->bookmark;
     }
  +  if ($tz_offset == '') {
  +    $tz_offset=date("Z");
  +    $tz_offset;
  +  }
  +
     if (!$bookmark) $bookmark=time();
   
     if ($quick)
  @@ -94,7 +97,10 @@
       $page_key= $parts[0];
       $ed_time= $parts[2];
   
  -    $day = date('Ymd', $ed_time);
  +    if ($tz_offset !='')
  +      $day = gmdate('Ymd', $ed_time+$tz_offset);
  +    else
  +      $day = date('Ymd', $ed_time);
       if ($day != $ratchet_day) {
         $ratchet_day = $day;
         unset($logs);
  @@ -145,13 +151,21 @@
           $title=$page_name;
       }
   
  -    $day = date('Y-m-d', $ed_time);
  +    if ($tz_offset !='')
  +      $day = gmdate('Y-m-d', $ed_time+$tz_offset);
  +    else
  +      $day = date('Y-m-d', $ed_time);
       if ($use_day and $day != $ratchet_day) {
         $tag=str_replace('-','',$day);
         $perma="<a name='$tag'></a><a class='perma' href='#$tag'>$perma_icon</a>";
         $out.=$cat0;
  +      if ($tz_offset != '')
  +        $rcdate=gmdate($date_fmt,$ed_time+$tz_offset);
  +      else
  +        $rcdate=date($date_fmt,$ed_time);
  +
         $out.=sprintf("%s<font class='rc-date' size='+1'>%s </font>$perma<font class='rc-bookmark' size='-1'>",
  -            $br, date($date_fmt, $ed_time));
  +            $br, $rcdate);
         if (!$nobookmark)
           $out.='['.$formatter->link_tag($formatter->page->urlname,
                                    "?action=bookmark&amp;time=$ed_time",
  @@ -184,8 +198,12 @@
       $title=htmlspecialchars($title);
       $title= $formatter->link_tag($pageurl,"",$title,$target);
   
  -    if (! empty($DBInfo->changed_time_fmt))
  -      $date= date($DBInfo->changed_time_fmt, $ed_time);
  +    if (! empty($DBInfo->changed_time_fmt)) {
  +      if ($tz_offset != '')
  +        $date= gmdate($DBInfo->changed_time_fmt, $ed_time+$tz_offset);
  +      else
  +        $date= date($DBInfo->changed_time_fmt, $ed_time);
  +    }
   
       if ($DBInfo->show_hosts) {
         if ($showhost && $user == 'Anonymous')
  
  
  
  1.10      +8 -3      moniwiki/plugin/userform.php
  
  Index: userform.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/userform.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- userform.php	13 Aug 2005 13:07:35 -0000	1.9
  +++ userform.php	13 Aug 2005 16:57:46 -0000	1.10
  @@ -4,7 +4,7 @@
   // a userform action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: userform.php,v 1.9 2005/08/13 13:07:35 wkpark Exp $
  +// $Id: userform.php,v 1.10 2005/08/13 16:57:46 wkpark Exp $
   
   function do_userform($formatter,$options) {
     global $DBInfo;
  @@ -150,8 +150,13 @@
       }
       if (isset($options['user_css']))
         $userinfo->info['css_url']=$options['user_css'];
  -    if (isset($options['timezone']))
  -      $userinfo->info['timezone']=$options['timezone'];
  +    if (isset($options['timezone'])) {
  +      list($hour,$min)=explode(':',$options['timezone']);
  +      $min=$min*60;
  +      $min=($hour < 0) ? -1*$min:$min;
  +      $tz_offset=$hour*3600 + $min;
  +      $userinfo->info['tz_offset']=$tz_offset;
  +    }
       if ($options['email'] and ($options['email'] != $userinfo->info['email'])) {
         if (preg_match('/^[a-z][a-z0-9_\-\.]+@[a-z][a-z0-9_\-]+(\.[a-z0-9_]+)+$/i',$options['email'])) {
           $ticket=md5(time().$userinfo->info['id'].$options['email']);
  
  
  


wkpark      2005/08/14 18:41:01

  Modified:    .        wikilib.php
  Log:
  fix edittext macro to recursivly callable
  
  Revision  Changes    Path
  1.151     +2 -1      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.150
  retrieving revision 1.151
  diff -u -r1.150 -r1.151
  --- wikilib.php	13 Aug 2005 16:55:24 -0000	1.150
  +++ wikilib.php	14 Aug 2005 09:41:01 -0000	1.151
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.150 2005/08/13 16:55:24 wkpark Exp $
  +// $Id: wikilib.php,v 1.151 2005/08/14 09:41:01 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -467,6 +467,7 @@
       $form=$p->get_raw_body();
       $f=new Formatter($p);
   
  +    $form=preg_replace('/\[\[EditText\]\]/i','#editform',$form);
       ob_start();
       $f->send_page(rtrim($form),$options);
       $form= ob_get_contents();
  
  
  


wkpark      2005/08/14 18:59:12

  Modified:    plugin   rename.php
  Log:
  fixed PR #300625 reported by puzzlet
  
  Revision  Changes    Path
  1.9       +8 -2      moniwiki/plugin/rename.php
  
  Index: rename.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rename.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- rename.php	16 Nov 2004 13:32:44 -0000	1.8
  +++ rename.php	14 Aug 2005 09:59:12 -0000	1.9
  @@ -3,11 +3,17 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a rename action plugin for the MoniWiki
   //
  -// $Id: rename.php,v 1.8 2004/11/16 13:32:44 wkpark Exp $
  +// $Id: rename.php,v 1.9 2005/08/14 09:59:12 wkpark Exp $
   
   function do_post_rename($formatter,$options) {
     global $DBInfo;
  -  
  +
  +  $new=$options['name'];
  +  if ($new[0] == '~' and ($p=strpos($new,'/'))!==false) {
  +    // Namespace renaming
  +    $dummy=substr($new,1,$p-1);$dummy2=substr($new,$p+1);
  +    $options['name']=$dummy.'~'.$dummy2;
  +  } 
     if (isset($options['name']) and trim($options['name'])) {
       if ($DBInfo->hasPage($options['page']) && !$DBInfo->hasPage($options['name'])) {
         $title = sprintf(_("\"%s\" is renamed !"), $options['page']);
  
  
  


wkpark      2005/08/14 20:25:21

  Modified:    .        config.php.default wikilib.php
  Log:
  more fixes to support TOC macro options
  - simple: link to whole headline in the table of contents
  - toggle: enable toc toggling individually
  - title: set the title of TOC
  [[TableOfContents(simple,title=Table of Contents,toggle,PageName)]]
  or
  add $toc_options='simple,toggle'; option to enable "simple" and "toggle"
  
  Revision  Changes    Path
  1.21      +2 -1      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- config.php.default	12 Aug 2005 13:06:13 -0000	1.20
  +++ config.php.default	14 Aug 2005 11:25:20 -0000	1.21
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.20 2005/08/12 13:06:13 wkpark Exp $
  +# $Id: config.php.default,v 1.21 2005/08/14 11:25:20 wkpark Exp $
   #
   $sitename='UnnamedWiki';
   $data_dir= './data';
  @@ -114,4 +114,5 @@
   $use_sectionedit=0;
   $spam_filter='antispam';
   $use_toctoggle=0;
  +#$toc_options='title=Contents,toggle,simple';
   ?>
  
  
  
  1.152     +34 -18    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.151
  retrieving revision 1.152
  diff -u -r1.151 -r1.152
  --- wikilib.php	14 Aug 2005 09:41:01 -0000	1.151
  +++ wikilib.php	14 Aug 2005 11:25:20 -0000	1.152
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.151 2005/08/14 09:41:01 wkpark Exp $
  +// $Id: wikilib.php,v 1.152 2005/08/14 11:25:20 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1714,26 +1714,36 @@
    $head_num=1;
    $head_dep=0;
    $TOC='';
  - $title='';
  -
  - if ($value) {
  -  $args=explode(",",$value);
  -  foreach ($args as $arg) {
  -   $name=strtok($arg,'=');
  -   if ($name=='title') {
  -    $title=strtok('');
  + $a0='</a>';$a1='';
  + if ($DBInfo->toc_options)
  +   $value=$DBInfo->toc_options.','.$value;
  + $toctoggle=$DBInfo->use_toctoggle;
  +
  + while($value) {
  +   list($arg,$value)=explode(',',$value,2);
  +   $key=strtok($arg,'=');
  +   if ($key=='title') {
  +     $title=strtok('');
  +   } else if ($key=='simple') {
  +     $simple=strtok('');
  +     if ($simple=='') $simple=1;
  +     if ($simple) {
  +       $a0='';$a1='</a>';
  +     }
  +   } else if ($key=='toggle') {
  +     $toctoggle=strtok('');
  +     if ($toctoggle=='') $toctoggle=1;
      } else if ($arg) {
  -    $value=$arg;
  +     $value=$value ? $arg.','.$value:$arg;
  +     break;
      }
  -  }
    }
   
  - if ($DBInfo->use_toctoggle)
  + if ($toctoggle) {
     $TOC.=<<<EOS
   <script type="text/javascript" src="$DBInfo->url_prefix/local/toctoggle.js">
   </script>
   EOS;
  - if ($DBInfo->use_toctoggle)
     $TOC_close=<<<EOS
   <script type="text/javascript">
   //<![CDATA[
  @@ -1741,11 +1751,14 @@
   //]]>
   </script>
   EOS;
  + }
    $TOC.="\n<div id='toc'>";
  - if ($title == '') $title=_("Contents");
  - $TOC.="<div id='toctitle'>
  + if (!isset($title)) $title=_("Contents");
  + if ($title) {
  +  $TOC.="<div id='toctitle'>
   <h2 style='display:inline'>$title</h2>
   </div>";
  + }
    $TOC.="<a name='toc' ></a><dl><dd><dl>\n";
   
    $formatter->toc=1;
  @@ -1774,7 +1787,10 @@
      # do not strip basic wikitags
      $head=preg_replace($formatter->baserule,$formatter->baserepl,$head);
      $head=preg_replace("/\[\[.*\]\]/","",$head);
  -   $head=preg_replace("/(".$formatter->wordrule.")/e","\$formatter->link_repl('\\1')",$head);
  +   $head=preg_replace("/(".$formatter->wordrule.")/e",
  +     "\$formatter->link_repl('\\1')",$head);
  +   if ($simple)
  +     $head=strip_tags($head,'<b><i><img><sub><sup><del><tt><u><strong>');
   
      if (!$depth_top) { $depth_top=$dep; $depth=1; }
      else {
  @@ -1817,9 +1833,9 @@
      $head_num=$num;
   
      if ($baseurl)
  -     $TOC.=$close.$open."<dt><a href='$baseurl#s$prefix-$num'>$num</a> $head</dt>\n";
  +     $TOC.=$close.$open."<dt><a href='$baseurl#s$prefix-$num'>$num$a0 $head$a1</dt>\n";
      else
  -     $TOC.=$close.$open."<dt><a id='toc$prefix-$num' name='toc$prefix-$num' /><a href='#s$prefix-$num'>$num</a> $head</dt>\n";
  +     $TOC.=$close.$open."<dt><a id='toc$prefix-$num' name='toc$prefix-$num' /><a href='#s$prefix-$num'>$num$a0 $head$a1</dt>\n";
   
     }
   
  
  
  


wkpark      2005/08/15 12:04:26

  Added:       plugin   Tour.php
  Log:
  Tour action/macro added (text version of the VisualTour)
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/Tour.php
  
  Index: Tour.php
  ===================================================================
  <?php
  // Copyright 2005 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a Tour plugin for the MoniWiki
  //
  // Usage: [[Tour]]
  //
  // $Id: Tour.php,v 1.1 2005/08/15 03:04:26 wkpark Exp $
  
  if (!function_exists('do_dot'))
      if ($plugin=getPlugin('dot')) include_once("plugin/$plugin.php");
  
  function do_tour($formatter,$options) {
      #header("Content-Type: text/plain");
      $formatter->send_header('',$options);
      $formatter->send_title(sprintf(_("Tour from %s"),$options['page']),'',
          $options);
  
      print macro_Tour($formatter,$options['page'],$options);
      //$args['editable']=1;
      $formatter->send_footer($args,$options);
  }
  
  function macro_Tour($formatter,$value,$options=array()) {
      global $DBInfo;
  
  define(TOUR_LEAFCOUNT,4);
  define(TOUR_DEPTH,4);
      $ul='ul';
  
      if (!$value) $value=$formatter->page->name;
  
      if ($options['w'] and $options['w'] < 10) $count=$options['w'];
      else $count=TOUR_LEAFCOUNT;
      if ($options['d'] and $options['d'] < 6) $depth=$options['d'];
      else $depth=TOUR_DEPTH;
  
      $color=array();
      makeTree($value,$node,$color,$depth,$count);
      if (!$node) $node=array($value=>array());
  
      $allnode=array_keys($node);
      asort($allnode);
  
      $id=0;
      while (list($leafname,$leaf) = @each ($node)) {
          if (!$leafs[$leafname]) {
              $urlname=_rawurlencode($leafname);
              $leafs[$leafname]=1;
              $url[$leafname]=$urlname;
          }
          $selected=array_intersect($node[$leafname],$allnode);
          asort($selected);
          foreach ($selected as $leaf) {
              if (!$leafs[$leaf]) {
                  $urlname=_rawurlencode($leaf);
                  $url[$leaf]=$urlname;
                  $id=$leafs[$leaf]=$leafs[$leafname]+1;
                  #$id=$color[$leaf];print $id;
                  if (!$out[$id]) $out[$id]="<$ul>\n";
                  $out[$id].= ' <li>'.$formatter->link_tag($url[$leaf],
                      "?action=tour",$leaf)."</li>\n";
              }
          }
      }
      unset($out[0]);
      $wide= $formatter->link_tag($url[$value],
          "?action=tour&amp;w=".($count+1)."&amp;d=$depth",_("links"));
      $deep= $formatter->link_tag($url[$value],
          "?action=tour&amp;w=$count&amp;d=".($depth+1),_("wider"));
      $link='<h3>'.sprintf(_("More %s or more %s"),$wide,$deep).'</h3>';
  
      foreach ($allnode as $node) {
          $pages.='<li>'.$formatter->link_tag($url[$node],"",$node)."</li>\n";
      }
      $title='<h3>'.sprintf(_("Total %d related pages"),sizeof($allnode)).'</h3>';
  
      $ret=implode($out,"\n</$ul></td><td valign='top'>\n");
      $ret='<table border="0"><tr><td valign="top">'.$ret.
          "</$ul></td></tr></table>\n";
      $ret='<table border="0"><tr><td valign="top">'.$link.$ret.'</td><td>'.
          "\n$title<ol>".$pages."</ol></td>\n".
          '</tr></table>';
      if (strtoupper($DBInfo->charset) != 'UTF-8') {
          $new=iconv($DBInfo->charset,'UTF-8',$ret);
          if ($new) return $new;
      }
      return $ret;
  }
  
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2005/08/15 20:31:22

  Modified:    lib      rcslite.php version.RcsLite.php
  Log:
  more fixes to support timezone
  fixed rename bug
  
  Revision  Changes    Path
  1.4       +6 -5      moniwiki/lib/rcslite.php
  
  Index: rcslite.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/rcslite.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- rcslite.php	2 Nov 2004 18:06:21 -0000	1.3
  +++ rcslite.php	15 Aug 2005 11:31:22 -0000	1.4
  @@ -3,7 +3,7 @@
   # Copyright (c) 2004 Won-kyu Park <wkpark at kldp.org>
   #
   # this module is ported from the RcsLite.pm of the TWiki by wkpark.
  -# $Id: rcslite.php,v 1.3 2004/11/02 18:06:21 wkpark Exp $
  +# $Id: rcslite.php,v 1.4 2005/08/15 11:31:22 wkpark Exp $
   
   # Original notice:
   #
  @@ -362,7 +362,7 @@
               if (!preg_match("/\n$/",$log)) $log.="\n";
               $rlog.= "----------------------------\n";
               $rlog.= "revision $rev\n";
  -            $rlog.= "date: ".date("Y/m/d H:i:s",$this->_date[$rev]).";  author: ". $this->_author[$rev].";  state: Exp;  lines: ".$this->_change[$rev]."\n";
  +            $rlog.= "date: ".gmdate("Y/m/d H:i:s",$this->_date[$rev]).";  author: ". $this->_author[$rev].";  state: Exp;  lines: ".$this->_change[$rev]."\n";
               $rlog.= $log;
           }
           $rlog.= str_repeat("=",71)."\n";
  @@ -400,7 +400,7 @@
           $this->_ensureProcessed();
           $date = $this->_date[$version];
           if( $date ) {
  -            $date = date("Y/m/d H:i:s", $date );
  +            $date = gmdate("Y/m/d H:i:s", $date );
           } else {
               $date = "";
           }
  @@ -410,13 +410,14 @@
       function rcsDateToEpoch($date)
       {
           $dum=explode('.',$date);
  -        return date("Y/m/d H:i:s",strtotime("$dum[0]/$dum[1]/$dum[2] $dum[3]:$dum[4]:$dum[5]"));
  +        return gmdate("Y/m/d H:i:s",
  +            gmmktime($dum[3],$dum[4],$dum[5],$dum[1],$dum[2],$dum[0]));
       }
   
       function rcsDateToTime($date)
       {
           $dum=explode('.',$date);
  -        return strtotime("$dum[0]/$dum[1]/$dum[2] $dum[3]:$dum[4]:$dum[5]");
  +        return gmmktime($dum[3],$dum[4],$dum[5],$dum[1],$dum[2],$dum[0]);
       }
       
       function description()
  
  
  
  1.4       +6 -3      moniwiki/lib/version.RcsLite.php
  
  Index: version.RcsLite.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/version.RcsLite.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- version.RcsLite.php	4 Jan 2005 09:27:11 -0000	1.3
  +++ version.RcsLite.php	15 Aug 2005 11:31:22 -0000	1.4
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RcsLite versioning plugin for the MoniWiki
   //
  -// $Id: version.RcsLite.php,v 1.3 2005/01/04 09:27:11 wkpark Exp $
  +// $Id: version.RcsLite.php,v 1.4 2005/08/15 11:31:22 wkpark Exp $
   
   class Version_RcsLite extends Version_RCS {
     var $DB;
  @@ -12,6 +12,7 @@
       include_once('rcslite.php');
   
       $this->rcs=new RcsLite($DB->rcs_dir,$DB->rcs_user);
  +    $this->rcs_dir=$this->rcs->rcs_dir;
       $this->DB=$DB;
     }
   
  @@ -60,8 +61,10 @@
     function rename($pagename,$new) {
       $keyname=$this->DB->_getPageKey($new);
       $oname=$this->DB->_getPageKey($pagename);
  -    rename($this->DB->text_dir.'/'.$this->rcs_dir."/$oname,v",
  -      $this->DB->text_dir.'/'.$this->rcs_dir."/$keyname,v");
  +    if (file_exists($this->DB->text_dir.'/'.$this->rcs_dir."/$oname,v") and
  +      !file_exists($this->DB->text_dir.'/'.$this->rcs_dir."/$keyname,v"))
  +      rename($this->DB->text_dir.'/'.$this->rcs_dir."/$oname,v",
  +      	$this->DB->text_dir.'/'.$this->rcs_dir."/$keyname,v");
     }
   
     function get_rev($pagename,$mtime='',$last=0) {
  
  
  


wkpark      2005/08/15 20:35:01

  Modified:    plugin   Info.php
  Log:
  more fixes for timezone support
  
  Revision  Changes    Path
  1.4       +2 -2      moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Info.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Info.php	13 Aug 2005 16:57:46 -0000	1.3
  +++ Info.php	15 Aug 2005 11:35:01 -0000	1.4
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Info plugin for the MoniWiki
   //
  -// $Id: Info.php,v 1.3 2005/08/13 16:57:46 wkpark Exp $
  +// $Id: Info.php,v 1.4 2005/08/15 11:35:01 wkpark Exp $
   
   function _parse_rlog($formatter,$log) {
     global $DBInfo;
  @@ -53,7 +53,7 @@
            $inf=preg_replace("/date:\s(.*);\s+author:.*;\s+state:.*;/","\\1",$line);
            list($inf,$change)=explode('lines:',$inf,2);
            if ($tz_offset !='')
  -           $inf=gmdate("Y-m-d H:i:s",strtotime($inf)+$tz_offset);
  +           $inf=gmdate("Y-m-d H:i:s",strtotime($inf.' GMT')+$tz_offset);
            else
              $inf=date("Y-m-d H:i:s",strtotime($inf)); // localtime
   
  
  
  


wkpark      2005/08/15 21:50:19

  Modified:    .        wiki.php wikilib.php
  Log:
  more fixes for timezone support
  
  Revision  Changes    Path
  1.227     +4 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.226
  retrieving revision 1.227
  diff -u -r1.226 -r1.227
  --- wiki.php	13 Aug 2005 16:55:24 -0000	1.226
  +++ wiki.php	15 Aug 2005 12:50:18 -0000	1.227
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.226 2005/08/13 16:55:24 wkpark Exp $
  +// $Id: wiki.php,v 1.227 2005/08/15 12:50:18 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.226 $',1,-1);
  +$_revision = substr('$Revision: 1.227 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -3287,10 +3287,12 @@
     } else {
       $options['id']='Anonymous';
       $options['css_url']=$user->css;
  +    $options['tz_offset']=$user->tz_offset;
       if (!$theme) $options['theme']=$user->theme;
     }
   } else {
     $options['css_url']=$user->css;
  +  $options['tz_offset']=$user->tz_offset;
     if (!$theme) $options['theme']=$user->theme;
   }
   
  
  
  
  1.153     +40 -13    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.152
  retrieving revision 1.153
  diff -u -r1.152 -r1.153
  --- wikilib.php	14 Aug 2005 11:25:20 -0000	1.152
  +++ wikilib.php	15 Aug 2005 12:50:19 -0000	1.153
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.152 2005/08/14 11:25:20 wkpark Exp $
  +// $Id: wikilib.php,v 1.153 2005/08/15 12:50:19 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -258,7 +258,7 @@
                     "scrapped_pages","quicklinks","theme","ticket","eticket",
   	  	  "tz_offset");
   
  -    $date=date('Y/m/d', time());
  +    $date=gmdate('Y/m/d', time());
       $data="# Data saved $date\n";
   
       if ($user->ticket)
  @@ -334,6 +334,7 @@
        $this->bookmark=$_COOKIE['MONI_BOOKMARK'];
        $this->trail=_stripslashes($_COOKIE['MONI_TRAIL']);
        $this->tz_offset=_stripslashes($_COOKIE['MONI_TZ']);
  +     if ($this->tz_offset =='') $this->tz_offset=date('Z');
     }
   
     function setID($id) {
  @@ -361,7 +362,7 @@
        $this->ticket=$ticket;
        # set the fake cookie
        $_COOKIE['MONI_ID']=$ticket.'.'.$this->id;
  -     return "Set-Cookie: MONI_ID=".$ticket.'.'.$this->id.'; expires='.gmdate('l, d-M-Y',time()+60*60*24*30).'; Path='.get_scriptname();
  +     return "Set-Cookie: MONI_ID=".$ticket.'.'.$this->id.'; expires='.gmdate('l, d-M-Y H:i:s GMT',time()+60*60*24*30).'; Path='.get_scriptname();
     }
   
     function unsetCookie() {
  @@ -1263,32 +1264,49 @@
   function macro_Date($formatter,$value) {
     global $DBInfo;
   
  +  $user=new User(); # get from COOKIE VARS
  +  if ($user->id != 'Anonymous') {
  +    $udb=new UserDB($DBInfo);
  +    $udb->checkUser($user);
  +    $tz_offset=$user->info['tz_offset'];
  +  } else {
  +    $tz_offset=date('Z');
  +  }
  +
     $fmt=&$DBInfo->date_fmt;
     if (!$value) {
  -    return date($fmt);
  +    return gmdate($fmt,time()+$tz_offset);
     }
     if ($value[10]== 'T') {
       $value[10]=' ';
  -    $time=strtotime($value." GMT");
  -    return date($fmt,$time);
  +    $time=strtotime($value.' GMT');
  +    return gmdate($fmt,$time+$tz_offset);
     }
  -  return date($fmt);
  +  return gmdate($fmt,time()+$tz_offset);
   }
   
   function macro_DateTime($formatter,$value) {
     global $DBInfo;
   
     $fmt=&$DBInfo->datetime_fmt;
  +  $user=new User(); # get from COOKIE VARS
  +  if ($user->id != 'Anonymous') {
  +    $udb=new UserDB($DBInfo);
  +    $udb->checkUser($user);
  +    $tz_offset=$user->info['tz_offset'];
  +  } else {
  +    $tz_offset=date('Z');
  +  }
   
     if (!$value) {
  -    return date($fmt);
  +    return gmdate($fmt,time()+$tz_offset);
     }
     if ($value[10]== 'T') {
       $value[10]=' ';
  -    $time=strtotime($value." GMT");
  -    return date($fmt,$time);
  +    $time=strtotime($value.' GMT');
  +    return gmdate($fmt,$time+$tz_offset);
     }
  -  return date("Y/m/d\TH:i:s");
  +  return gmdate("Y/m/d\TH:i:s",time()+$tz_offset);
   }
   
   function macro_UserPreferences($formatter,$value,$options='') {
  @@ -1344,9 +1362,10 @@
       $tz_offset=$user->info['tz_offset'];
       $again="<b>"._("New password")."</b>&nbsp;<input type='password' size='15' maxlength='12' name='passwordagain' value='' /></td></tr>";
   
  +    $tz_off=date('Z');
       for ($i=-47;$i<=47;$i++) {
         $val=1800*$i;
  -      $tz=date("Y/m/d H:i",time()+$val+date('I'));
  +      $tz=gmdate("Y/m/d H:i",time()+$val);
         $hour=sprintf("%02d",abs((int)($val / 3600)));
         $z=$hour . (($val % 3600) ? ":30":":00");
         if ($val < 0) $z="-".$z;
  @@ -1521,6 +1540,14 @@
     }
   
     if ($options['date']) {
  +    $user=new User(); # get from COOKIE VARS
  +    if ($user->id != 'Anonymous') {
  +      $udb=new UserDB($DBInfo);
  +      $udb->checkUser($user);
  +      $tz_offset=$user->info['tz_offset'];
  +    } else {
  +      $tz_offset=date('Z');
  +    }
       $all_pages = $DBInfo->getPageLists($options);
     } else {
       if ($options['metawiki'])
  @@ -1544,7 +1571,7 @@
       } else $hits=$all_pages;
       arsort($hits);
       while (list($pagename,$mtime) = @each ($hits)) {
  -      $out.= '<li>'.$formatter->link_tag(_rawurlencode($pagename),"",$pagename).". . . . [".date("Y-m-d",$mtime)."]</li>\n";
  +      $out.= '<li>'.$formatter->link_tag(_rawurlencode($pagename),"",$pagename).". . . . [".gmdate("Y-m-d",$mtime+$tz_offset)."]</li>\n";
       }
       $out="<ol>\n".$out."</ol>\n";
     } else {
  
  
  


wkpark      2005/08/15 23:54:18

  Modified:    plugin   Tour.php
  Log:
  more fixes
  
  Revision  Changes    Path
  1.2       +16 -10    moniwiki/plugin/Tour.php
  
  Index: Tour.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Tour.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Tour.php	15 Aug 2005 03:04:26 -0000	1.1
  +++ Tour.php	15 Aug 2005 14:54:18 -0000	1.2
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Tour]]
   //
  -// $Id: Tour.php,v 1.1 2005/08/15 03:04:26 wkpark Exp $
  +// $Id: Tour.php,v 1.2 2005/08/15 14:54:18 wkpark Exp $
   
   if (!function_exists('do_dot'))
       if ($plugin=getPlugin('dot')) include_once("plugin/$plugin.php");
  @@ -32,7 +32,7 @@
   
       if ($options['w'] and $options['w'] < 10) $count=$options['w'];
       else $count=TOUR_LEAFCOUNT;
  -    if ($options['d'] and $options['d'] < 6) $depth=$options['d'];
  +    if ($options['d'] and $options['d'] < 7) $depth=$options['d'];
       else $depth=TOUR_DEPTH;
   
       $color=array();
  @@ -43,6 +43,7 @@
       asort($allnode);
   
       $id=0;
  +    $outs=array();
       while (list($leafname,$leaf) = @each ($node)) {
           if (!$leafs[$leafname]) {
               $urlname=_rawurlencode($leafname);
  @@ -56,10 +57,8 @@
                   $urlname=_rawurlencode($leaf);
                   $url[$leaf]=$urlname;
                   $id=$leafs[$leaf]=$leafs[$leafname]+1;
  -                #$id=$color[$leaf];print $id;
  -                if (!$out[$id]) $out[$id]="<$ul>\n";
  -                $out[$id].= ' <li>'.$formatter->link_tag($url[$leaf],
  -                    "?action=tour",$leaf)."</li>\n";
  +                if (!$outs[$id]) $outs[$id]=array();
  +                $outs[$id][]= $leaf;
               }
           }
       }
  @@ -75,16 +74,23 @@
       }
       $title='<h3>'.sprintf(_("Total %d related pages"),sizeof($allnode)).'</h3>';
   
  +    $out=array();
  +    foreach ($outs as $ls) {
  +        asort($ls);
  +        $temp='';
  +        foreach ($ls as $leaf) {
  +            $temp.= ' <li>'.$formatter->link_tag($url[$leaf],
  +                "?action=tour",$leaf)."</li>\n";
  +        }
  +        $out[]="<$ul>".$temp;
  +    }
       $ret=implode($out,"\n</$ul></td><td valign='top'>\n");
       $ret='<table border="0"><tr><td valign="top">'.$ret.
           "</$ul></td></tr></table>\n";
       $ret='<table border="0"><tr><td valign="top">'.$link.$ret.'</td><td>'.
           "\n$title<ol>".$pages."</ol></td>\n".
           '</tr></table>';
  -    if (strtoupper($DBInfo->charset) != 'UTF-8') {
  -        $new=iconv($DBInfo->charset,'UTF-8',$ret);
  -        if ($new) return $new;
  -    }
  +
       return $ret;
   }
   
  
  
  


wkpark      2005/08/16 23:25:32

  Modified:    .        wiki.php
  Log:
  fixed rendering bug of the indented table with a blank line: reported by Won Lee
  
  Revision  Changes    Path
  1.228     +5 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.227
  retrieving revision 1.228
  diff -u -r1.227 -r1.228
  --- wiki.php	15 Aug 2005 12:50:18 -0000	1.227
  +++ wiki.php	16 Aug 2005 14:25:32 -0000	1.228
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.227 2005/08/15 12:50:18 wkpark Exp $
  +// $Id: wiki.php,v 1.228 2005/08/16 14:25:32 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.227 $',1,-1);
  +$_revision = substr('$Revision: 1.228 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -2267,6 +2267,9 @@
         if (!strlen($line)) {
           if ($in_pre) { $this->pre_line.="\n";continue;}
           if ($in_li) {
  +          if ($in_table) {
  +            $text.=$this->_table(0);$in_table=0;$li_empty=1;
  +          }
             $text.=$this->_purple()."<br />\n";
             if ($li_empty==0 && !$this->auto_linebreak ) $text.="<br />\n";
             $li_empty=1;
  
  
  


wkpark      2005/08/16 23:29:30

  Modified:    .        monisetup.php
  Log:
  'BadContent' added to the wikiseed
  
  Revision  Changes    Path
  1.27      +2 -2      moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- monisetup.php	13 Aug 2005 16:55:24 -0000	1.26
  +++ monisetup.php	16 Aug 2005 14:29:29 -0000	1.27
  @@ -1,7 +1,7 @@
   <?php
   // Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.26 2005/08/13 16:55:24 wkpark Exp $
  +// $Id: monisetup.php,v 1.27 2005/08/16 14:29:29 wkpark Exp $
   
   function _stripslashes($str) {
     return get_magic_quotes_gpc() ? stripslashes($str):$str;
  @@ -322,7 +322,7 @@
     "SystemPages|TwinPages|WikiName|SystemInfo|UserPreferences|".
     "InterMap|IsbnMap|WikiSandBox|SandBox|UploadFile|UploadedFiles|".
     "InterWiki|SandBox|".
  -  "BlogChanges|HotDraw|OeKaki";
  +  "BadContent|BlogChanges|HotDraw|OeKaki";
   
     $WikiTag='DeleteThisPage';
     #
  
  
  


wkpark      2005/08/16 23:30:35

  Modified:    plugin   Tour.php
  Log:
  add the div class "wikiTour"
  
  Revision  Changes    Path
  1.3       +3 -3      moniwiki/plugin/Tour.php
  
  Index: Tour.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Tour.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Tour.php	15 Aug 2005 14:54:18 -0000	1.2
  +++ Tour.php	16 Aug 2005 14:30:35 -0000	1.3
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Tour]]
   //
  -// $Id: Tour.php,v 1.2 2005/08/15 14:54:18 wkpark Exp $
  +// $Id: Tour.php,v 1.3 2005/08/16 14:30:35 wkpark Exp $
   
   if (!function_exists('do_dot'))
       if ($plugin=getPlugin('dot')) include_once("plugin/$plugin.php");
  @@ -25,7 +25,7 @@
       global $DBInfo;
   
   define(TOUR_LEAFCOUNT,4);
  -define(TOUR_DEPTH,4);
  +define(TOUR_DEPTH,3);
       $ul='ul';
   
       if (!$value) $value=$formatter->page->name;
  @@ -91,7 +91,7 @@
           "\n$title<ol>".$pages."</ol></td>\n".
           '</tr></table>';
   
  -    return $ret;
  +    return '<div class="wikiTour">'.$ret."</div>\n";
   }
   
   // vim:et:sts=4:
  
  
  


wkpark      2005/08/17 09:58:44

  Modified:    plugin   FullSearch.php
  Added:       plugin   Keywords.php
  Log:
  enhanced keywords support
  
  Revision  Changes    Path
  1.10      +19 -2     moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- FullSearch.php	29 Apr 2005 21:47:28 -0000	1.9
  +++ FullSearch.php	17 Aug 2005 00:58:43 -0000	1.10
  @@ -3,15 +3,17 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
   //
  -// $Id: FullSearch.php,v 1.9 2005/04/29 21:47:28 iolo Exp $
  +// $Id: FullSearch.php,v 1.10 2005/08/17 00:58:43 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
  -  $ret=$options;
  +  $ret=&$options;
   
     $options['value']=_stripslashes($options['value']);
     if ($options['backlinks'])
       $title= sprintf(_("BackLinks search for \"%s\""), $options['value']);
  +  else if ($options['keywords'])
  +    $title= sprintf(_("KeyWords search for \"%s\""), $options['value']);
     else
       $title= sprintf(_("Full text search for \"%s\""), $options['value']);
     $out= macro_FullSearch($formatter,$options['value'],$ret);
  @@ -130,6 +132,21 @@
            $hits[$page_name] = $count;
          }
        }
  +  } else if ($opts['keywords']) {
  +     $opts['context']=0; # turn off context-matching
  +     $cache=new Cache_text("keywords");
  +     foreach ($pages as $page_name) {
  +       $links==-1;
  +       $links=$cache->fetch($page_name);
  +       if ($links==-1) {
  +          $links=array();
  +          continue;
  +       }
  +       $count= preg_match_all($pattern, $links, $matches);
  +       if ($count) {
  +         $hits[$page_name] = $count;
  +       }
  +     }
     } else {
        while (list($_, $page_name) = each($pages)) {
          $p = new WikiPage($page_name);
  
  
  
  1.1                  moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  <?php
  // Copyright 2005 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a 'Keywords' plugin for the MoniWiki
  //
  // $Id: Keywords.php,v 1.1 2005/08/17 00:58:44 wkpark Exp $
  
  function macro_Keywords($formatter,$value,$options='') {
      global $DBInfo;
  
      $common= <<<EOF
  i am an a b c d e f g h i j k l m n o p q r s t u v w x y z
  if on in by it at up down over into for from to of he his she her back
  is are be or nor also and each all
  too any with here
  so such since because but however ever
  it its the this that what where how when
  you your will shall may might we us our
  get got
  EOF;
      if (!$value) $value=$formatter->page->name;
      $page=$DBInfo->getPage($value);
      if (!$page->exists()) return '';
      $raw=$page->get_raw_body();
  
      $raw=preg_replace("/([;\"',`\\\\\/\.:@\$%\^&\*\(\)\{\}\[\]\-_\+=\|])/",' ',
          $raw.' '.$value);
      $raw=preg_replace("/((?<=[a-z0-9]|[B-Z]{2})([A-Z][a-z]))/"," \\1",$raw);
      $raw=strtolower($raw);
      $words=preg_split("/[ ]+|\n/",$raw);
      $counts=array_count_values($words);
      $words=array_diff(array_keys($counts),preg_split("/[ ]|\n/",$common));
  
      if ($options['all']) {
          $cache=new Cache_text('keywords');
          if ($cache->exists($value)) {
              $keytext=$cache->fetch($value);
              $keys=explode("\n",rtrim($keytext));
          } else
              $keys=array();
          foreach ($keys as $key) {
              $counts[$key]=50; // give weight to all selected keywords
              $words[]=$key;
          }
      }
  
      if (function_exists('array_intersect_key')) {
          $words=array_intersect_key($counts,$words);
      } else {
          $ret = array();
          foreach($words as $key) {
              if(array_key_exists($key, $counts))
                  $ret[$key] = $counts[$key];
          }
          $words=&$ret;
      }
  
      arsort($words);
      unset($words['']);
  
      $link=$formatter->link_url(_rawurlencode($value),'');
      $out="<form method='post' action='$link'><ul>\n";
      $out.="<input type='hidden' name='action' value='keywords' />";
      foreach ($words as $key=>$val) {
          if ($val > 1) {
              $checked='';
              if ($val >= 50) {$checked='checked="checked"'; $ok=1;}
              $out.=" <li><input type='checkbox' $checked name='key[]' ".
                  "value='$key' />".
                  $formatter->link_tag(_rawurlencode($key),
                      '?action=fullsearch&amp;keywords=1&amp;value='.$key,$key).
                      ' ('.$val.')</li>';
          }
      }
      if ($options['add']) {
          $msg=_("manually add keywords");
          $inp="<li><input type='text' name='keywords' size='20' />: $msg</li>";
      }
      if ($ok)
          $btn=_("Update keywords");
      else
          $btn=_("Add keywords");
      return $out."$inp</ul><input type='submit' value='$btn'/></form>\n";
  }
  
  function do_keywords($formatter,$options) {
      global $DBInfo;
  
      define(LOCAL_KEYWORDS,'LocalKeywords');
  
      $page=$formatter->page->name;
  
      $formatter->send_header('',$options);
  
      if (is_array($options['key']) or $options['keywords']) {
          if ($options['keywords']) {
              if (!is_array($options['key'])) $options['key']=array();
              $options['key']=array_merge($options['key'],
                  preg_split("/,[ ]*/",$options['keywords']));
          }
          $cache=new Cache_text('keywords');
          $keys=$options['key'];
          $keys=array_flip($keys);
          unset($keys['']);
          $cache->update($page,$keys);
  
          $raw="#format plain"; 
          $p=$DBInfo->getPage(LOCAL_KEYWORDS);
          if (!$p->exists()) $dict=array();
          else {
              $raw=$p->get_raw_body();
              $lines=explode("\n",$raw);
              $body='';
              foreach ($lines as $line) {
                  if ($line[0]=='#') continue;
                  $body.=$line.' ';
              }
              $dict=preg_split("/[ ]+|\n/",$body);
          }
          $nkeys=array_diff(array_values($options['key']),$dict);
          if (!empty($nkeys)) {
              $raw.="\n".implode(' ',$nkeys);
              $p->write($raw);
              $DBInfo->savePage($p,"Keywords are added",$options);
          }
  
          $formatter->send_title(sprintf(_("Keywords for %s are updated"),
              $options['page']),'', $options);
          $ret='';
          foreach ($keys as $key=>$val) {
              $ret.=$key.',';
          }
          $ret=substr($ret,0,strlen($ret)-1);
          print "<tt>#keywords $ret</tt>\n";
          if ($DBInfo->use_keywords or $options['update']) {
              $body=$formatter->page->get_raw_body();
              $pi=$formatter->get_instructions($dum);
              if ($pi['#keywords']) {
                  $nbody= preg_replace('/#keywords\s+'.$pi['#keywords'].'/',
                      '#keywords '.$ret,$body,1);
                  if ($nbody!=$body) $ok=1;
              } else {
                  $nbody='#keywords '.$ret."\n".$body;
                  $ok=2;
              }
              if ($ok) {
                  if ($ok==1) $comment="Keywords are updated";
                  else $comment="Keywords are added";
                  $formatter->page->write($nbody);
                  $DBInfo->savePage($formatter->page,$comment,$options);
                  print "<h2>"._("Keywords are updated")."</h2>";
              } else {
                  print "<h2>"._("There are no changes found")."</h2>";
              }
          } else {
              $link=$formatter->link_url(_rawurlencode($page),'');
              $btn=_("Update with these Keywords"); 
              $form="<form method='post' action='$link'>";
              $form.='<input type="hidden" name="action" value="keywords" />';
              $form.='<input type="hidden" name="update" value="1" />';
              $form.='<input type="hidden" name="keywords" value="'.$ret.'" />';
              $form.="<input type='submit' value='$btn' />\n";
              $form.="</form>";
              print $form;
          }
          $formatter->send_footer($args,$options);
          return;
      }
      
      $formatter->send_title(sprintf(_("Select keywords for %s"),
          $options['page']),'', $options);
  
      $options['all']=1;
      $options['add']=1;
  
      print macro_KeyWords($formatter,$options['page'],$options);
      //$args['editable']=1;
      $formatter->send_footer($args,$options);
  }
  // vim:et:sts=4:st=4
  ?>
  
  
  


wkpark      2005/08/17 09:59:39

  Modified:    .        wiki.php
  Log:
  enhanced keywords support
  
  Revision  Changes    Path
  1.229     +9 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.228
  retrieving revision 1.229
  diff -u -r1.228 -r1.229
  --- wiki.php	16 Aug 2005 14:25:32 -0000	1.228
  +++ wiki.php	17 Aug 2005 00:59:38 -0000	1.229
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.228 2005/08/16 14:25:32 wkpark Exp $
  +// $Id: wiki.php,v 1.229 2005/08/17 00:59:38 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.228 $',1,-1);
  +$_revision = substr('$Revision: 1.229 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -3459,6 +3459,13 @@
         if (!$tcache->exists($pagename) or $_GET['update_title'])
           $tcache->update($pagename,$formatter->pi['#title']);
       }
  +    if ($formatter->pi['#keywords'] and $DBInfo->use_keywords) {
  +      $tcache=new Cache_text('keywords');
  +      if (!$tcache->exists($pagename) or $_GET['update_keywords']) {
  +        $keys=explode(',',$formatter->pi['#keywords']);
  +        $tcache->update($pagename,array_flip($keys));
  +      }
  +    }
       $formatter->write("<div id='wikiContent'>\n");
       $options['timer']->Check("init");
       $options['pagelinks']=1;
  
  
  


wkpark      2005/08/19 15:29:17

  Modified:    .        wikilib.php
  Log:
  support a ticket verifying to prevent automated registration PR #301004
  
  Revision  Changes    Path
  1.154     +31 -11    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.153
  retrieving revision 1.154
  diff -u -r1.153 -r1.154
  --- wikilib.php	15 Aug 2005 12:50:19 -0000	1.153
  +++ wikilib.php	19 Aug 2005 06:29:17 -0000	1.154
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.153 2005/08/15 12:50:19 wkpark Exp $
  +// $Id: wikilib.php,v 1.154 2005/08/19 06:29:17 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -164,18 +164,29 @@
     return preg_replace("/((?<=[a-z0-9]|[B-Z]{2})([A-Z][a-z]))/"," \\1",$title);
   }
   
  -function getTicket($seed) {
  +function getTicket($seed,$extra='',$size=0,$flag=0) {
     global $DBInfo;
     # make a ticket based on the variables in the config.php
  -  $config=getConfig("config.php");
  -  foreach ($config as $seed) {
  -    if (!is_array($seed))
  -      $md5.=md5($seed);
  +  $configs=getConfig("config.php");
  +  foreach ($configs as $config) {
  +    if (is_array($config)) $siteticket.=md5(base64_encode(serialize($config)));
  +    else $siteticket.=md5($config);
  +  }
  +  if ($size>3) {
  +    $ticket= md5($siteticket.$seed.$extra);
  +    $n=0;$passwd='';
  +    for ($i=0,$n=0;$n<$size;$i++) {
  +      $j=ord($ticket[$i])-48;
  +      if (0<=$j and $j<=9) {
  +        $passwd.="$j"; $n++;
  +      }
  +    }
  +    return $passwd;
     }
  -  if ($DBInfo->strict_usercheck)
  +  if ($flag)
       # change user's ticket
  -    return md5($md5.$seed.time().$_SERVER['HTTP_HOST']);
  -  return md5($md5.$seed);
  +    return md5($siteticket.$seed.$extra.time());
  +  return md5($siteticket.$seed.$extra);
   }
   
   function log_referer($referer,$page) {
  @@ -358,7 +369,7 @@
   
     function setCookie() {
        if ($this->id == "Anonymous") return false;
  -     $ticket=getTicket($this->id);
  +     $ticket=getTicket($this->id,$_SERVER['REMOTE_ADDR']);
        $this->ticket=$ticket;
        # set the fake cookie
        $_COOKIE['MONI_ID']=$ticket.'.'.$this->id;
  @@ -1349,9 +1360,18 @@
         $passwd=$options['password'];
         $button=_("Make profile");
         $again="<b>"._("password again")."</b>&nbsp;<input type='password' size='15' maxlength='12' name='passwordagain' value='' /></td></tr>";
  +      $mailbtn=_("Mail");
         $extra=<<<EXTRA
  -  <tr><td><b>Mail</b>&nbsp;</td><td><input type="text" size="40" name="email" value="$email" /></td></tr>
  +  <tr><td><b>$mailbtn</b>&nbsp;</td><td><input type="text" size="40" name="email" value="$email" /></td></tr>
   EXTRA;
  +      if ($DBInfo->use_ticket) {
  +        $seed=md5(base64_encode(time()));
  +        $ticketimg=$formatter->link_url($formatter->page->name,'?action=ticket&amp;__seed='.$seed);
  +        $extra.=<<<EXTRA
  +  <tr><td><img src="$ticketimg" />&nbsp;</td><td><input type="text" size="10" name="check" />
  +<input type="hidden" name="__seed" value="$seed" /></td></tr>
  +EXTRA;
  +      }
       } else {
         $button=_("Login or Join");
       }
  
  
  


wkpark      2005/08/19 15:29:18

  Added:       plugin   ticket.php
  Log:
  support a ticket verifying to prevent automated registration PR #301004
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/ticket.php
  
  Index: ticket.php
  ===================================================================
  <?php
  // Copyright 2005 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a ticket plugin for the MoniWiki
  // $Id: ticket.php,v 1.1 2005/08/19 06:29:18 wkpark Exp $
  
  function _effect_blur($image,$color,$dx=1,$dy=0) {
  // please see http://www.hudzilla.org/phpbook/read.php/11_2_23
      $imagex = imagesx($image);
      $imagey = imagesy($image);
  
      for ($x = 0; $x < $imagex; ++$x) {
          for ($y = 0; $y < $imagey; ++$y) {
              $distx = rand(-$dx, $dx);
              $disty = rand(-$dy, $dy);
              $disty = 0;
  
              if ($x + $distx >= $imagex) continue;
              if ($x + $distx < 0) continue;
              if ($y + $disty >= $imagey) continue;
              if ($y + $disty < 0) continue;
  
              $oldcol = imagecolorat($image, $x, $y);
              $newcol = imagecolorat($image, $x + $distx, $y + $disty);
              if ($oldcol == $newcol) continue;
  
              if(function_exists('imageistruecolor') && imageistruecolor($image)){
                  $r1 = ($oldcol >> 16);
                  $g1 = ($oldcol >> 8) & 0xFF;
                  $b1 = $oldcol & 0xFF;
                  $r2 = ($newcol >> 16);
                  $g2 = ($newcol >> 8) & 0xFF;
                  $b2 = $newcol & 0xFF;
              } else {
                  $i = imagecolorsforindex($image, $oldcol);
                  $r1 = $i['red'];
                  $g1 = $i['green'];
                  $b1 = $i['blue'];
                  $i = imagecolorsforindex($image, $newcol);
                  $r2 = $i['red'];
                  $g2 = $i['green'];
                  $b2 = $i['blue'];
              }
              $red = (int)(($r1 + $r2)*0.5);
              $green = (int)(($g1 + $g2)*0.5);
              $blue = (int)(($b1 + $b2)*0.5);
              $new = imagecolorallocate($image, $red, $green, $blue);
              $new = imagecolorclosest($image, $red, $green, $blue);
              
              imagesetpixel($image, $x, $y, $new);
              imagesetpixel($image, $x + $distx, $y + $disty, $new);
          }
      }
  }
  
  function _effect_grid($im,$color,$pen=4) {
      $w = imagesx($im);
      $h = imagesy($im);
      for ($y=0;$y<$h;$y+=rand(3,6))
          ImageLine ($im, 0,$y,$w,$y,$color[$pen]);
      ImageLine ($im, 0,$h-1,$w,$h-1,$color[$pen]);
      for ($x=0;$x<$w;$x+=rand(4,8))
          ImageLine ($im, $x,0,$x,$h,$color[$pen]);
      ImageLine ($im, $w-1,0,$w-1,$h,$color[$pen]);
  }
  
  function do_ticket($formatter,$options) {
      global $DBInfo;
  
      if ($options['__seed']) {
          // check seed
          // check referer
          $passwd=getTicket($options['__seed'],$_SERVER['REMOTE_ADDR'],4);
      } else {
          $options['title']=_("Invalid use of ticket");
          do_invalid($formatter,$options);
          return;
      }
  
      if ($DBInfo->gdfontpath)
          putenv('GDFONTPATH='.$DBInfo->gdfontpath);
      if (function_exists('ImageTtfText')) {
          if ($DBInfo->ticket_font) {
              $FONT=$DBInfo->ticket_font;
              //$FONT="/home/foobar/data/PenguinAttack.ttf";
              if ($FONT{0}=='/' and !file_exists($FONT)) {
                  $use_ttf=0;
              } else {
                  $FONT=$DBInfo->ticket_font;
                  $use_ttf=1;
              }
          }
      }
          
      if ($use_ttf) {
          $pointsize=16;
          $angle=0;
          //$size = Imagettfbbox($pointsize, 0, $FONT, $passwd);
          // XXX segfault :(
          $size=array(0,0,0,20,65);
          //$size=array(0,0,0,20,50);
          $w=$size[4]+20; # margin=20 ?
          $h=$size[3]- $size[5]+10; # margin= 10 ?
      } else {
          $FONT=5; // giant
          if ($DBInfo->ticket_gdfont)
              $FONT=$DBInfo->ticket_gdfont;
          $w=imagefontwidth($FONT)*strlen($passwd)+10;
          $h=imagefontheight($FONT)+10;
      }
  
      Header("Content-type: image/png");
      $im= ImageCreate(($size[4]+20), ($size[5]+10));
      $im= ImageCreate($w,$h);
      $color=array();
      $color[]= ImageColorAllocate($im, 240, 240, 240); // background
      $color[]= ImageColorAllocate($im, 0, 0, 0); // black
      $color[]= ImageColorAllocate($im, 255, 255, 255); // white
      $pen=rand(3,19);
      for ($i=0;$i<18;$i++)
          $color[]= ImageColorAllocate($im,rand(100,200),rand(100,200),rand(100,200));
      if ($use_ttf) {
          ImageTtfText($im,$pointsize, $angle, 6, 25, $color[$pen], $FONT,
              $passwd);
          ImageTtfText($im,$pointsize, $angle, 7, 24, $color[$pen], $FONT,
              $passwd);
      } else {
          ImageString($im,$FONT, 5, 3, $passwd, $color[$pen]);
          ImageString($im,$FONT, 4, 4, $passwd, $color[$pen]);
      }
  
      _effect_blur($im,$color,1,1);
      //_effect_grid($im,$color,$pen);
  
  
      ImagePng($im);
      ImageDestroy($im);
  }
  
  // vim:et:sts=4:sw=4:
  ?>
  
  
  


wkpark      2005/08/19 15:31:07

  Modified:    plugin   userform.php
  Log:
  support a ticket verifying to prevent automated registration PR #301004
  set $use_ticket=1; in the config
  set $gdfontpath,$ticket_font='myttf' or $ticket_gdfont to use proper ticket font
  
  Revision  Changes    Path
  1.11      +17 -3     moniwiki/plugin/userform.php
  
  Index: userform.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/userform.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- userform.php	13 Aug 2005 16:57:46 -0000	1.10
  +++ userform.php	19 Aug 2005 06:31:07 -0000	1.11
  @@ -4,7 +4,7 @@
   // a userform action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: userform.php,v 1.10 2005/08/13 16:57:46 wkpark Exp $
  +// $Id: userform.php,v 1.11 2005/08/19 06:31:07 wkpark Exp $
   
   function do_userform($formatter,$options) {
     global $DBInfo;
  @@ -71,10 +71,24 @@
     } else if ($user->id=="Anonymous" and $options['login_id'] and $options['password'] and $options['passwordagain']) {
       # create profile
   
  +    $title='';
  +    if ($DBInfo->use_ticket) {
  +      if ($options['__seed'] and $options['check']) {
  +        $mycheck=getTicket($options['__seed'],$_SERVER['REMOTE_ADDR'],4);
  +        if ($mycheck==$options['check'])
  +          $ok_ticket=1;
  +        else
  +          $title= _("Invalid ticket !");
  +      } else {
  +        $title= _("You need a ticket !");
  +      }
  +    } else {
  +      $ok_ticket=1;
  +    }
       $id=$user->getID($options['login_id']);
       $user->setID($id);
   
  -    if ($user->id != "Anonymous") {
  +    if ($ok_ticket and $user->id != "Anonymous") {
          $ret=$user->setPasswd($options['password'],$options['passwordagain']);
          if ($DBInfo->password_length and (strlen($options['password']) < $DBInfo->password_length)) $ret=0;
          if ($ret <= 0) {
  @@ -120,7 +134,7 @@
                }
              }
          }
  -    } else
  +    } else if ($title=='')
          $title= _("Invalid username !");
     } else if ($user->id != "Anonymous") {
       # save profile
  
  
  


wkpark      2005/08/19 15:32:29

  Modified:    .        config.php.default
  Log:
  add additional options to support ticket verifing
  
  Revision  Changes    Path
  1.22      +5 -1      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- config.php.default	14 Aug 2005 11:25:20 -0000	1.21
  +++ config.php.default	19 Aug 2005 06:32:28 -0000	1.22
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.21 2005/08/14 11:25:20 wkpark Exp $
  +# $Id: config.php.default,v 1.22 2005/08/19 06:32:28 wkpark Exp $
   #
   $sitename='UnnamedWiki';
   $data_dir= './data';
  @@ -115,4 +115,8 @@
   $spam_filter='antispam';
   $use_toctoggle=0;
   #$toc_options='title=Contents,toggle,simple';
  +#$use_ticket=1;
  +#$ticket_gdfont=5;
  +#$ticket_font='TTFONT';
  +#$gdfontpath='./data';
   ?>
  
  
  


wkpark      2005/08/22 02:36:24

  Modified:    plugin   Keywords.php
  Log:
  more fixes for keywords support
  
  Revision  Changes    Path
  1.2       +22 -7     moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Keywords.php	17 Aug 2005 00:58:44 -0000	1.1
  +++ Keywords.php	21 Aug 2005 17:36:22 -0000	1.2
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a 'Keywords' plugin for the MoniWiki
   //
  -// $Id: Keywords.php,v 1.1 2005/08/17 00:58:44 wkpark Exp $
  +// $Id: Keywords.php,v 1.2 2005/08/21 17:36:22 wkpark Exp $
   
   function macro_Keywords($formatter,$value,$options='') {
       global $DBInfo;
  @@ -94,9 +94,22 @@
   
       if (is_array($options['key']) or $options['keywords']) {
           if ($options['keywords']) {
  +            // following keyword list are acceptable separated with spaces.
  +            // Chemistry "Physical Chemistry" "Bio Chemistry" ...
  +            $ws=preg_split('/((?<!\S)(["\'])[^\2]+?\2(?!\S)|\S+)/',
  +                $options['keywords'],-1,
  +                PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);
  +            $ws=array_flip(array_unique($ws));
  +            unset($ws['"']); // delete delims
  +            unset($ws["'"]);
  +            unset($ws[' ']);
  +            $ws=array_flip($ws);
  +            
  +            $ws= array_map(create_function('$a',
  +                'return preg_replace("/^([\"\'])(.*)\\\\1$/","\\\\2",$a);'),
  +                $ws); // delete ",'
               if (!is_array($options['key'])) $options['key']=array();
  -            $options['key']=array_merge($options['key'],
  -                preg_split("/,[ ]*/",$options['keywords']));
  +            $options['key']=array_merge($options['key'],$ws);
           }
           $cache=new Cache_text('keywords');
           $keys=$options['key'];
  @@ -109,19 +122,21 @@
           if (!$p->exists()) $dict=array();
           else {
               $raw=$p->get_raw_body();
  +            $raw=rtrim($raw);
               $lines=explode("\n",$raw);
               $body='';
               foreach ($lines as $line) {
                   if ($line[0]=='#') continue;
  -                $body.=$line.' ';
  +                $body.=$line."\n";
               }
  -            $dict=preg_split("/[ ]+|\n/",$body);
  +            $body=rtrim($body);
  +            $dict=explode("\n",$body);
           }
           $nkeys=array_diff(array_values($options['key']),$dict);
           if (!empty($nkeys)) {
  -            $raw.="\n".implode(' ',$nkeys);
  +            $raw.="\n".implode("\n",$nkeys);
               $p->write($raw);
  -            $DBInfo->savePage($p,"Keywords are added",$options);
  +            $DBInfo->savePage($p,"New keywords are added",$options);
           }
   
           $formatter->send_title(sprintf(_("Keywords for %s are updated"),
  
  
  


wkpark      2005/08/23 21:28:31

  Added:       plugin   pageview.php
  Log:
  add a pageview action plugin
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/pageview.php
  
  Index: pageview.php
  ===================================================================
  <?php
  // Copyright 2005 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a pageview plugin for the MoniWiki
  //
  // Usage: [[Test]]
  //
  // $Id: pageview.php,v 1.1 2005/08/23 12:28:31 wkpark Exp $
  
  function do_pageview($formatter,$options) {
      global $DBInfo;
      $sections=_get_sections($formatter->page->get_raw_body(),2);
  
      if ($options['p']) $sect=$options['p'];
      else $sect=1;
  
      // get head title section
      list($secthead,$dumm)=explode("\n",$sections[0]);
      preg_match('/^\s*=\s*([^=].*[^=])\s*=\s?$/',$secthead,$match);
      $secthead=rtrim($sections[0]);
      if ($match[1]) $title=$match[1];
      $sz=sizeof($sections);
  
      // get prev,next subtitle
      if ($sz > ($sect+1)) {
          list($n_title,$dumm)=explode("\n",$sections[$sect+1]);
          preg_match('/^\s*==\s*(.*)\s*==\s?$/',$n_title,$match);
          if ($match[1])
              $n_title=$match[1];
          else
              $n_title='';
      } else {
          list($o_title,$dumm)=explode("\n",$sections[1]);
          preg_match('/^\s*==\s*(.*)\s*==\s?$/',$o_title,$match);
          if ($match[1])
              $o_title=$match[1];
          else
              $o_title='';
      }
      if ($sect-1 >= 1) {
          list($p_title,$dumm)=explode("\n",$sections[$sect-1]);
          preg_match('/^\s*==\s*(.*)\s*==\s?$/',$p_title,$match);
          if ($match[1])
              $p_title=$match[1];
          else
              $p_title='';
      }
  
      $formatter->send_header("",$options);
      $formatter->send_title($title,"",$options);
      $save=$formatter->preview;
      $formatter->preview=1;
      // show the head title
      if ($secthead) $formatter->send_page($secthead);
      // section number ?
      //$formatter->head_num='1.'.$sect;
      //$formatter->head_num=$sect; // XXX
      //$formatter->head_dep=0;
      //$formatter->toc=1;
      // show selected section
      $formatter->send_page($sections[$sect]);
      $formatter->preview=$save;
  
      // make link tags
      if ($o_title!='') {
          $olink= $formatter->link_tag($formatter->page->urlname,'?action=pageview&amp;p=1',$o_title);
          $first= _("First:").' '.$olink;
      }
      if ($n_title!='') {
          $nlink= $formatter->link_tag($formatter->page->urlname,'?action=pageview&amp;p='.($sect+1),$n_title);
          $next= _("Next:").' '.$nlink;
          $nlink= "<div class='pageNext'>".$nlink." &raquo;</div>\n";
      }
      if ($p_title!='') {
          $plink= $formatter->link_tag($formatter->page->urlname,'?action=pageview&amp;p='.($sect-1),$p_title);
          $plink= "<div class='pagePrev'>&laquo; ".$plink."</div>\n";
      }
      print "$first$next\n<div class='pageNav'>".$plink.$nlink."</div>\n";
  
      // render extra_macros
      if ($DBInfo->extra_macros) {
          if (!is_array($DBInfo->extra_macros)) {
              print '<div id="wikiExtra">'."\n";
              print $formatter->macro_repl($DBInfo->extra_macros);
              print '</div>'."\n";
          } else {
              print '<div id="wikiExtra">'."\n";
              foreach ($DBInfo->extra_macros as $macro)
                  print $formatter->macro_repl($macro);
              print '</div>'."\n";
          }
      }
  
      $formatter->send_footer("",$options);
      return;
  }
  
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2005/08/25 14:27:51

  Modified:    plugin   fixmoin.php
  Log:
  use preg_replace() instead of strtr()
  
  Revision  Changes    Path
  1.2       +2 -2      moniwiki/plugin/fixmoin.php
  
  Index: fixmoin.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/fixmoin.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- fixmoin.php	3 Apr 2005 09:07:30 -0000	1.1
  +++ fixmoin.php	25 Aug 2005 05:27:51 -0000	1.2
  @@ -5,12 +5,12 @@
   //
   // Usage: set $auto_search='FixMoin'; in the config.php
   //
  -// $Id: fixmoin.php,v 1.1 2005/04/03 09:07:30 wkpark Exp $
  +// $Id: fixmoin.php,v 1.2 2005/08/25 05:27:51 wkpark Exp $
   
   function do_FixMoin($formatter,$options) {
       global $DBInfo;
   
  -    $pagename=rawurldecode(strtr($formatter->page->name,'_','%'));
  +    $pagename=rawurldecode(preg_replace('/_([0-9a-f]{2})/i','%\\1',$formatter->page->name));
       $npage=str_replace(' ','',$pagename);
       if (!$DBInfo->hasPage($npage)) {
           if (strtolower($DBInfo->charset)=='utf-8') {
  
  
  


wkpark      2005/08/25 18:32:47

  Modified:    plugin   Calendar.php
  Log:
  fixed date parsing bug
  
  Revision  Changes    Path
  1.13      +4 -4      moniwiki/plugin/Calendar.php
  
  Index: Calendar.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Calendar.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- Calendar.php	4 Jan 2005 08:26:35 -0000	1.12
  +++ Calendar.php	25 Aug 2005 09:32:46 -0000	1.13
  @@ -7,7 +7,7 @@
   #-----usage: generate_calendar(2001, 11, $day_func, 2);-------------------------
   #------(last two arguments are optional)----------------------------------------
   #-------------------------------------------------------------------------------
  -# $Id: Calendar.php,v 1.12 2005/01/04 08:26:35 wkpark Exp $
  +# $Id: Calendar.php,v 1.13 2005/08/25 09:32:46 wkpark Exp $
   
   function calendar_get_dates($formatter,$date='',$page='') {
     global $DBInfo;
  @@ -54,9 +54,9 @@
   		preg_match("/^((\d{4})-?(\d{1,2}))$/i",$date,$match2);
   		$year= $match2[2];
   		$month= $match2[3];
  -	} else if ($match[3]) {
  -		$year= $match[4];
  -		$month= $match[5];
  +	} else if ($match[4]) {
  +		$year= $match[5];
  +		$month= $match[6];
   	}
   	/* Validate date. Use system date, if date is not validated */
   	if ($month <1 || $month > 12) {
  
  
  


wkpark      2005/08/25 22:11:17

  Modified:    .        wikihttpd.php
  Log:
  fix for moniwiki 1.1
  
  Revision  Changes    Path
  1.3       +9 -3      moniwiki/wikihttpd.php
  
  Index: wikihttpd.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikihttpd.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- wikihttpd.php	2 Jun 2004 01:47:05 -0000	1.2
  +++ wikihttpd.php	25 Aug 2005 13:11:17 -0000	1.3
  @@ -19,7 +19,7 @@
   //  along with this program; if not, write to the Free Software
   //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
   //
  -// $Id: wikihttpd.php,v 1.2 2004/06/02 01:47:05 wkpark Exp $
  +// $Id: wikihttpd.php,v 1.3 2005/08/25 13:11:17 wkpark Exp $
   
   /*
    *  Implementation of the HTT-protocol (also known as Webserver)
  @@ -39,7 +39,8 @@
     var $runing=false;
     var $document_root;
     var $directory_index='index.html';
  -  var $servername = "MoniWiki/1.0 Server";
  +  var $servername = "MoniWiki/1.1 Server";
  +  var $wiki_prefix = "/wiki/";
   
     function simple_server($address=0,$port=8080,$root='htdocs') {
       @set_time_limit(0);
  @@ -208,6 +209,11 @@
         $req['PATH_TRANSLATED'] = $this->condense_path($this->document_root . $req['REQUEST_URI']);      
       }
   
  +    if (substr($req['REQUEST_URI'],0,strlen($this->wiki_prefix)) ==
  +      $this->wiki_prefix) {
  +      $req['SCRIPT_NAME']= substr($this->wiki_prefix,0,-1);
  +    }
  +
       $remote_ip=getenv('REMOTE_ADDR');
       if (!$remote_ip) $req['REMOTE_ADDR']="127.0.0.1";
       else $req['REMOTE_ADDR']=$remote_ip;
  @@ -657,7 +663,7 @@
   else
     $httpd=new simple_server('localhost',8080,"c:\htdocs");
   
  -$wiki_prefix= '/wiki/';
  +$wiki_prefix= $httpd->wiki_prefix;
   
   // Initialize Wiki
   //$httpd->loop();
  
  
  


wkpark      2005/08/25 22:54:42

  Modified:    plugin   UploadFile.php
  Log:
  rename bug fix for php5
  
  Revision  Changes    Path
  1.21      +10 -7     moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- UploadFile.php	12 Apr 2005 14:20:53 -0000	1.20
  +++ UploadFile.php	25 Aug 2005 13:54:42 -0000	1.21
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.20 2005/04/12 14:20:53 wkpark Exp $
  +// $Id: UploadFile.php,v 1.21 2005/08/25 13:54:42 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -205,13 +205,16 @@
     }
     $use_multi=1;
     $multiform='';
  -  if ($options['rename'] and !is_array($options['rename'])) {
  -    // rename option used by "attachment:" and it does not use multiple form.
  -    $rename=$options['rename'];
  +  if ($options['rename']) {
  +    if (!is_array($options['rename'])) {
  +      // rename option used by "attachment:" and it does not use multiple form.
  +      $rename=$options['rename'];
  +      $options['rename']=array();
  +      $options['rename'][0]=$rename;
  +      $use_multi=0;
  +    }
  +  } else
       $options['rename']=array();
  -    $options['rename'][0]=$rename;
  -    $use_multi=0;
  -  }
     if ($use_multi) {
       $multiform="<select name='multiform' />\n";
       for ($i=2;$i<=10;$i++)
  
  
  


wkpark      2005/08/25 23:04:34

  Modified:    plugin   FastSearch.php
  Log:
  check index.db
  
  Revision  Changes    Path
  1.7       +4 -1      moniwiki/plugin/FastSearch.php
  
  Index: FastSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FastSearch.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- FastSearch.php	21 Oct 2004 08:27:01 -0000	1.6
  +++ FastSearch.php	25 Aug 2005 14:04:34 -0000	1.7
  @@ -13,11 +13,14 @@
   //
   // Usage: [[FastSearch(string)]]
   //
  -// $Id: FastSearch.php,v 1.6 2004/10/21 08:27:01 wkpark Exp $
  +// $Id: FastSearch.php,v 1.7 2005/08/25 14:04:34 wkpark Exp $
   
   function macro_FastSearch($formatter,$value="",&$opts) {
     global $DBInfo;
     $theDB=$DBInfo->data_dir."/index.db";
  +  if (!file_exists($theDB)) {
  +    return '[[FastSearch('._("Index DB is not found.").')]]';
  +  }
   
     if ($value === true) {
       $needle = $value = $formatter->page->name;
  
  
  


wkpark      2005/08/26 18:55:38

  Modified:    .        wikilib.php
  Log:
  some fix to support pageview,SlideShow
  
  Revision  Changes    Path
  1.155     +6 -4      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.154
  retrieving revision 1.155
  diff -u -r1.154 -r1.155
  --- wikilib.php	19 Aug 2005 06:29:17 -0000	1.154
  +++ wikilib.php	26 Aug 2005 09:55:38 -0000	1.155
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.154 2005/08/19 06:29:17 wkpark Exp $
  +// $Id: wikilib.php,v 1.155 2005/08/26 09:55:38 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -509,7 +509,7 @@
     $formatter->send_footer($args,$options);
   }
   
  -function _get_sections($body) {
  +function _get_sections($body,$lim=5) {
     $chunks=preg_split("/(\{\{\{.+?\}\}\})/s",$body,-1, PREG_SPLIT_DELIM_CAPTURE);
     $sects=array();
     $sects[]='';
  @@ -520,7 +520,7 @@
         continue;
       }
       $parts=array();
  -    $parts=preg_split("/^(\s*={1,5}\s#?.*\s+={1,5}\s?)$/m",$chunks[$ii],
  +    $parts=preg_split("/^([^\n]\s*={1,$lim}\s#?.*\s+={1,$lim}\s?)$/m",$chunks[$ii],
         -1, PREG_SPLIT_DELIM_CAPTURE);
       for ($j=0,$i=0,$s=count($parts); $i<$s; $i++) {
         if (!($i%2)) {
  @@ -528,7 +528,7 @@
           $sects[]=$sec.$parts[$i];
           continue;
         }
  -      if (preg_match("/^\s*(={1,5})\s#?.*\s+\\1\s?/",$parts[$i])) {
  +      if (preg_match("/^\s*(={1,$lim})\s#?.*\s+\\1\s?/",$parts[$i])) {
           $sects[]=$parts[$i];
         } else {
           $sec=array_pop($sects);
  @@ -661,8 +661,10 @@
   //-->
   //]]>
   </script>
  +<div id='wikiResize'>
   <input type='button' value='+' onclick='resize(this.form,3)' />
   <input type='button' value='-' onclick='resize(this.form,-3)' />
  +</div>
   EOS;
     }
     $form.=<<<EOS
  
  
  


wkpark      2005/08/26 18:56:21

  Modified:    .        wiki.php
  Log:
  InterWikiIcons(intericon) feature added
  
  Revision  Changes    Path
  1.230     +32 -8     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.229
  retrieving revision 1.230
  diff -u -r1.229 -r1.230
  --- wiki.php	17 Aug 2005 00:59:38 -0000	1.229
  +++ wiki.php	26 Aug 2005 09:56:20 -0000	1.230
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.229 2005/08/17 00:59:38 wkpark Exp $
  +// $Id: wiki.php,v 1.230 2005/08/26 09:56:20 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.229 $',1,-1);
  +$_revision = substr('$Revision: 1.230 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -656,6 +656,22 @@
       }
       $this->interwikirule.="Self";
       $this->interwiki['Self']=get_scriptname().$this->query_prefix;
  +
  +    # read shared intericons
  +    $map=array();
  +    if (file_exists($this->shared_intericon))
  +      $map=array_merge($map,file($this->shared_intericon));
  +
  +    for ($i=0;$i<sizeof($map);$i++) {
  +      $line=rtrim($map[$i]);
  +      if (!$line || $line[0]=="#" || $line[0]==" ") continue;
  +      if (preg_match("/^[A-Z]+/",$line)) {
  +        $wiki=strtok($line,' ');$icon=strtok(' ');
  +        $sx=strtok('x');$sy=strtok('');
  +        $sx=$sx ? $sx:16; $sy=$sy ? $sy:16;
  +        $this->intericon[$wiki]=array($sx,$sy,trim($icon));
  +      }
  +    }
     }
   
     function _getPageKey($pagename) {
  @@ -1375,7 +1391,7 @@
       $this->baserule=array("/<([^\s<>])/","/`([^`' ]+)'/","/(?<!`)`([^`]*)`/",
                        "/'''([^']*)'''/","/(?<!')'''(.*)'''(?!')/",
                        "/''([^']*)''/","/(?<!')''(.*)''(?!')/",
  -                     "/\^([^ \^]+)\^(?=\s|$)/","/\^\^([^\^]+)\^\^(?!^)/",
  +                     "/\^([^ \^]+)\^(?=\s|$)/","/\^\^([^ \^][^\^]+[^ \^])\^\^(?!^)/",
                        "/(?<!,),,([^ ,]+),,(?!,)/",
                        "/(?<!_)__((?:(?<!_)_(?!_)|[^_])+)__(?!_)/","/^(-{4,})/e",
                        "/(?<!-)--([^-]+[^\s])--(?!-)/",
  @@ -1425,7 +1441,7 @@
       #"\b(".$DBInfo->interwikirule."):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
       #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
       #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+[^\(\)<>\s\',\.:\?\!]+)|".
  -    "(\b|\^?)([A-Z][a-zA-Z]+):([^\(\)<>\s\']+[^\(\)<>\s\'\",\.:\?\!]+)|".
  +    "(\b|\^?)([A-Z][a-zA-Z]+):([^\(\)<>\s\']*[^\(\)<>\s\'\",\.:\?\!]*)|".
       # "(?<!\!|\[\[)\b(([A-Z]+[a-z0-9]+){2,})\b|".
       # "(?<!\!|\[\[)((?:\/?[A-Z]([a-z0-9]+|[A-Z]*(?=[A-Z][a-z0-9]|\b))){2,})\b|".
       # WikiName rule: WikiName ILoveYou (imported from the rule of NoSmoke)
  @@ -1718,7 +1734,7 @@
   #      $wiki=$dum1[0]; $page=$dum1[1];
   #    }
   
  -    if (!$page) {
  +    if (sizeof($dum) == 1) {
         # wiki:FrontPage(not supported in the MoinMoin
         # or [wiki:FrontPage Home Page]
         $page=$dum[0];
  @@ -1732,6 +1748,7 @@
       if (!$url)
         return $dum[0].":".$this->word_repl($dum[1],$text);
   
  +    if ($page=='/') $page='';
       $urlpage=_urlencode(trim($page));
       #$urlpage=trim($page);
       if (strpos($url,'$PAGE') === false)
  @@ -1746,10 +1763,17 @@
         $url=str_replace('$PAGE',$page_only,$url).$query;
       }
   
  +    $icon=$this->imgs_dir_interwiki.strtolower($wiki).'-16.png';
  +    $sx=16;$sy=16;
  +    if ($DBInfo->intericon[$wiki]) {
  +      $icon=$DBInfo->intericon[$wiki][2];
  +      $sx=$DBInfo->intericon[$wiki][0];
  +      $sy=$DBInfo->intericon[$wiki][1];
  +    }
  +
       $img="<a href='$url' target='wiki'>".
  -         "<img border='0' src='$this->imgs_dir_interwiki".
  -         strtolower($wiki)."-16.png' align='middle' height='16' ".
  -         "width='16' alt='$wiki:' title='$wiki:' /></a>";
  +         "<img border='0' src='$icon' align='middle' height='$sy' ".
  +         "width='$sx' alt='$wiki:' title='$wiki:' /></a>";
       #if (!$text) $text=str_replace("%20"," ",$page);
       if (!$text) $text=urldecode($page);
       else if (preg_match("/^(http|ftp|attachment):.*\.(png|gif|jpeg|jpg)$/i",$text)) {
  
  
  


wkpark      2005/08/26 18:58:20

  Added:       plugin   SlideShow.php
  Log:
  SlideShow action added
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/SlideShow.php
  
  Index: SlideShow.php
  ===================================================================
  <?php
  // Copyright 2005 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a SlideShow plugin for the MoniWiki
  //
  // Usage: [[SlideShow(pagename)]]
  //
  // $Id: SlideShow.php,v 1.1 2005/08/26 09:58:20 wkpark Exp $
  
  function macro_SlideShow($formatter,$value='',$options=array()) {
      global $DBInfo;
  
      if ($value) {
          if (!$DBInfo->hasPage($value))
              return '[[SlideShow('._("No page found").')]]';
          $pg=$DBInfo->getPage($value);
          $sections=_get_sections($pg->get_raw_body(),2);
          $urlname=_urlencode($value);
      } else {
          $sections=_get_sections($formatter->page->get_raw_body(),2);
          $urlname=$formatter->page->urlname;
      }
  
      if ($options['p']) $sect=$options['p'];
      else $sect=1;
  
      $act=$options['action'] ? $options['action']:'SlideShow';
  
      $iconset='bluecurve';
      $icon_dir=$DBInfo->imgs_dir.'/plugin/SlideShow/'.$iconset.'/';
  
      // get head title section
      list($secthead,$dumm)=explode("\n",$sections[0]);
      preg_match('/^\s*=\s*([^=].*[^=])\s*=\s?$/',$secthead,$match);
      $secthead=rtrim($sections[0]);
      if ($match[1]) $title=$match[1];
      $sz=sizeof($sections);
  
      // get prev,next subtitle
      if ($sz > ($sect+1)) {
          list($n_title,$dumm)=explode("\n",$sections[$sect+1]);
          preg_match('/^\s*==\s*(.*)\s*==\s?$/',$n_title,$match);
          if ($match[1])
              $n_title=$match[1];
          else
              $n_title='';
  
          list($e_title,$dumm)=explode("\n",$sections[$sz-1]);
          preg_match('/^\s*==\s*(.*)\s*==\s?$/',$e_title,$match);
          if ($match[1])
              $e_title=$match[1];
          else
              $e_title='';
      }
      if (!$options['action'] or $sect > 1){
          list($s_title,$dumm)=explode("\n",$sections[1]);
          preg_match('/^\s*==\s*(.*)\s*==\s?$/',$s_title,$match);
          if ($match[1])
              $s_title=$match[1];
          else
              $s_title='';
      }
      if ($sect-1 >= 1) {
          list($p_title,$dumm)=explode("\n",$sections[$sect-1]);
          preg_match('/^\s*==\s*(.*)\s*==\s?$/',$p_title,$match);
          if ($match[1])
              $p_title=$match[1];
          else
              $p_title='';
      }
      // make link icons
      if ($s_title!='' or !$options['action']) {
          $slink= $formatter->link_url($urlname,'?action='.$act.
              '&amp;p=1');
          $icon=$options['action'] ? 'start':'next';
          $start= '<a href="'.$slink.'" title="'._("Start:").' '.$s_title.'">'.
              '<img src="'.$icon_dir.$icon.'.png'.'" border="0" alt="<|" /></a>';
      }
      if ($e_title!='' and $options['action']) {
          $elink= $formatter->link_url($urlname,'?action='.$act.
              '&amp;p='.($sz-1));
          $end= '<a href="'.$elink.'" title="'._("End:").' '.$e_title.'">'.
              '<img src="'.$icon_dir.'end.png'.'" border="0" alt="|>" /></a>';
      }
      if ($n_title!='' and $options['action']) {
          $nlink= $formatter->link_url($urlname,'?action='.$act.
              '&amp;p='.($sect+1));
          $next= '<a href="'.$nlink.'" title="'._("Next:").' '.$n_title.'">'.
              '<img src="'.$icon_dir.'next.png'.'" border="0" alt=">" /></a>';
      }
      if ($p_title!='') {
          $plink= $formatter->link_url($urlname,'?action='.$act.
              '&amp;p='.($sect-1));
          $prev= '<a href="'.$plink.'" title="'._("Prev:").' '.$p_title.'">'.
              '<img src="'.$icon_dir.'prev.png'.'" border="0" alt="<" /></a>';
      }
      if ($options['action']) {
          $return= $formatter->link_tag($urlname,'?action=show',_("Return"));
          return array($sections,"$start$prev$next$end$return\n");
      }
      return "$start$prev$next$end\n";
  
  }
  
  function do_slideshow($formatter,$options=array()) {
      global $DBInfo;
  
      $options['css_url']=$DBInfo->url_prefix."/css/slide.css";
      $formatter->send_header("",$options);
      print "<div id='wikiContent'>";
  
      list($sections,$btn)=macro_SlideShow($formatter,$formatter->page->name,
          $options);
      print '<div class="slideNav">'.$btn.'</div>';
  
      if ($options['p']) $sect=$options['p'];
      else $sect=1;
  
  
      $save=$formatter->preview;
      $formatter->preview=1;
      // show the head title
      if ($secthead) $formatter->send_page($secthead);
      // section number ?
      //$formatter->head_num='1.'.$sect;
      //$formatter->head_num=$sect; // XXX
      //$formatter->head_dep=0;
      //$formatter->toc=1;
      // show selected section
      $formatter->send_page($sections[$sect]);
      $formatter->preview=$save;
      print "</div></div>";
  
      print '<div class="slideNav">'.$btn.'</div>';
  
      // render extra macros
      $macros=array('FootNote');
      if ($macros) {
          if (!is_array($macros)) {
              print '<div id="wikiExtra">'."\n";
              print $formatter->macro_repl($macros);
              print '</div>'."\n";
          } else {
              print '<div id="wikiExtra">'."\n";
              foreach ($macros as $macro)
                  print $formatter->macro_repl($macro);
              print '</div>'."\n";
          }
      }
  
      print "\n</body>\n</html>\n";
      return;
  }
  
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2005/08/26 18:58:52

  Modified:    plugin   SystemInfo.php
  Log:
  gettextfy
  
  Revision  Changes    Path
  1.3       +9 -5      moniwiki/plugin/SystemInfo.php
  
  Index: SystemInfo.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SystemInfo.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SystemInfo.php	15 Aug 2003 21:30:36 -0000	1.2
  +++ SystemInfo.php	26 Aug 2005 09:58:52 -0000	1.3
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a SystemInfo macro plugin for the MoniWiki
   //
  -// $Id: SystemInfo.php,v 1.2 2003/08/15 21:30:36 wkpark Exp $
  +// $Id: SystemInfo.php,v 1.3 2005/08/26 09:58:52 wkpark Exp $
   
   function macro_SystemInfo($formatter='',$value='') {
     global $_revision,$_release;
  @@ -13,13 +13,17 @@
     list($aversion,$dummy)=explode(" ",$_SERVER['SERVER_SOFTWARE'],2);
   
     $pages=macro_PageCount($formatter);
  +  $npage=_("Number of Pages");
  +  $ver_serv=_("HTTP Server Version");
  +  $ver_moni=_("MoniWiki Version");
  +  $ver_php=_("PHP Version");
   
     return <<<EOF
   <table border='0' cellpadding='5'>
  -<tr><th width='200'>PHP Version</th> <td>$version ($uname)</td></tr>
  -<tr><th>MoniWiki Version</th> <td>Release $_release [$_revision]</td></tr>
  -<tr><th>Apache Version</th> <td>$aversion</td></tr>
  -<tr><th>Number of Pages</th> <td>$pages</td></tr>
  +<tr><th width='200'>$ver_php</th> <td>$version ($uname)</td></tr>
  +<tr><th>$ver_moni</th> <td>Release $_release [$_revision]</td></tr>
  +<tr><th>$ver_serv</th> <td>$aversion</td></tr>
  +<tr><th>$npage</th> <td>$pages</td></tr>
   </table>
   EOF;
   }
  
  
  


wkpark      2005/08/26 19:00:52

  Modified:    plugin/security community.php
  Log:
  allow notile action
  
  Revision  Changes    Path
  1.3       +2 -2      moniwiki/plugin/security/community.php
  
  Index: community.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/community.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- community.php	21 Oct 2004 08:27:07 -0000	1.2
  +++ community.php	26 Aug 2005 10:00:52 -0000	1.3
  @@ -1,6 +1,6 @@
   <?php
   # a community security plugin for the MoniWiki
  -# $Id: community.php,v 1.2 2004/10/21 08:27:07 wkpark Exp $
  +# $Id: community.php,v 1.3 2005/08/26 10:00:52 wkpark Exp $
   
   class Security_community extends Security {
     var $DB;
  @@ -51,7 +51,7 @@
   
     function is_allowed($action='read',&$options) {
       $allowed_actions=array('theme','css','userform','bookmark','goto','dot',
  -      'trackback','rss_rc','rss','blogrss','urlencode','deletepage','titlesearch','info','download','comment');
  +      'trackback','rss_rc','rss','blogrss','urlencode','deletepage','titlesearch','info','download','comment','notitle');
       if (in_array(strtolower($action),$allowed_actions)) return 1;
       if ($options['id']=='Anonymous') {
         $options['err']=sprintf(_("You are not allowed to '%s' on this page."),$action);
  
  
  


wkpark      2005/08/26 19:06:56

  Added:       css      slide.css
  Log:
  sample css for SlideShow
  
  Revision  Changes    Path
  1.1                  moniwiki/css/slide.css
  
  Index: slide.css
  ===================================================================
  @import url("user.css");
  
  body {
    font-family:Bitstream Vera Sans,Georgia,Verdana,Lucida,sans-serif;
    font-size:20px;
    margin: 10;
  }
  
  .wikiTitle {
    font-family:Tahoma,Lucida,sans-serif;
    font-size:28px;
    font-weight:bold;
    text-decoration: none;
  }
  tt.wiki {font-family:Monotype,Lucida Console,lucida,monospace;font-size:12px;}
  tt.foot {
    font-family:Tahoma,lucida,monospace;
    font-size:11px;
    vertical-align: super;
  }
  
  tt.sister {
    font-family:Tahoma,lucida,monospace;
    font-size:11px;
    vertical-align: super;
    text-decoration: none;
  }
  
  pre.wiki {
    padding-left:6px;
    padding-top:6px; 
    font-family:Lucida TypeWriter,monotype,lucida,monospace;font-size:14px;
    background-color:#000000;
    color:#FFD700; /* gold */
  }
  
  pre.console {
    background-color: #000000;
    color: #E0E0E0;
    padding: .25em ;
    border: 2px inset #808080;
  }
  
  pre.quote {
    padding-left:6px;
    padding-top:6px;
    white-space:pre-wrap;
    white-space: -moz-pre-wrap; 
    font-family:Georgia,monotype,lucida,monospace;font-size:14px;
    background-color:#F7F8E6;
  }
  
  table.wiki {
    border: 0px outset #E2ECE5;
  }
  
  td.wiki {
    border: 0px inset #E2ECE5;
  }
  
  tr.wiki {
    background-color:#E2ECE2;
  }
  
  textarea.wiki { width:100%; }
  
  th.info {
    background-color:#E2ECE2;
  }
  
  td.info {
    background-color:#E2ECE2;
  }
  
  h1,h2,h3,h4,h5 {
    font-family:Tahoma;
  /* background-color:#E07B2A; */
    padding-left:6px;
    border-bottom:1px solid #999;
  }
  
  div.diff-added {
    font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
    font-size:12px;
    background-color: #E0FFE0;
    color:black;
  }
  
  div.diff-removed {
    font-family:Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
    font-size:12px;
    background-color:#E9EAB8;
    color:black;
  }
  
  div.diff-sep {
    font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
    font-size:12px;
    background-color:#000000;
    color:#FFD700; /* gold */
  }
  
  span.diff-added, ins.diff-added {
    color:black;
    background-color: #60FF60;
    text-decoration: none;
  }
  
  span.diff-removed, del.diff-removed {
    color:black;
    background-color: #FF0000;
  }
  
  td.message {
    margin-top: 6pt;
    background-color: #E8E8E8;
    border-style:solid;
    border-width:1pt;
    border-color:#990000;
    color:#440000;
    padding:0px;
    width:100%;
  }
  
  .highlight {
    background-color:#FFFF40;
  }
  
  table.goto {
  }
  
  span.goto, input.goto {
    font-family:Tahoma,Lucida,sans-serif;
    font-size:10px;
  }
  
  table.closure, td.closure{
    background-color:#E2ECE2;;
  }
  
  /*  */
  .wikiHr {
  /*  border:1px solid;  */
    padding: 0px 0px; /* */
    margin-top:0px;
    height:0px;  
  /*  color: transparent; /* */
  /* background: #000 url(hr1.gif) no-repeat scroll center; */
  }
  
  #wikiHeader {
  /*  border-left: 0.8em solid #7B9AC5; /* */
    padding: 0.2em 0.2em 0.2em 0.2em;
  /*  background-color:lightblue; */
  }
  
  #wikiBody {
  }
  
  #wikiContent {
    margin-left: 10px; 
  }
  
  #wikiSideMenu, #wikiFooter {
    display:none;
  }
  
  .hint {
    font-family:Georgia,Verdana,Lucida,sans-serif;
    font-size:12px;
    background-color:#E2DAE2;
  }
  
  #wikiSister {
  /*  background-color:lightgreen; /* */
  }
  
  #wikiPreview {
    border: 2px solid #a0a0a0;
    margin: 5px 5px 5px 5px;
    padding: 5px 1em 5px 1em;
  }
  
  /*
  #wikiMenu {
    background-color:yellow;
  }
  */
  
  div.indent {
    background-color: lightyellow;
    padding-left:2em;
  }
  
  a.purple { font-size: 10px; display:none;}
  a.nonexists {display: none;}
  /* Blog CSS */
  a.perma { font-size: 10px; display:none;}
  a.purple { display: none;}
  div.blog { width:90%; padding: 0em 1em 0em 1em; }
  div.blog-user { font-size:10px; }
  div.blog-title { font-size:16px; font-weight:bold; }
  div.blog-comments { padding-left:2em; }
  
  /* HierarchicalWiki */
  div.wikiGroup {
    font-family:Tahoma,Lucida,sans-serif;
    font-size:10px;
  }
  
  /* enscript syntax */
  div.wikiPre i,div.wikiPre b{
    font-weight: normal;
    font-style: normal;
  }
  
  img.imgLeft {
    margin-right : 15px;
    margin-bottom : 5px;
  }
  
  img.imgRight {
    margin-left : 10px;
    margin-bottom : 5px;
  }
  
  span.externalLink {
    font-family: monospace;
  }
  
  /* print action */
  #printHeader {}
  
  #printFooter {
    border-top: 5px solid #c0c0c0;
  }
  
  div.pagebreak {page-break-before: always;}
  div.pagebreak br { display:none;}
  
  div.sectionEdit { display:none; }
  
  div.slideNav {
     text-align:center;
  }
  
  
  


wkpark      2005/08/26 19:07:09

  moniwiki/imgs/plugin/SlideShow - New directory

wkpark      2005/08/26 19:07:18

  moniwiki/imgs/plugin/SlideShow/bluecurve - New directory

wkpark      2005/08/26 19:07:53

  Added:       imgs/plugin/SlideShow/bluecurve end.png next.png prev.png
                        print.png start.png
  Log:
  icons for the SlideShow plugin
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/plugin/SlideShow/bluecurve/end.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/SlideShow/bluecurve/next.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/SlideShow/bluecurve/prev.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/SlideShow/bluecurve/print.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/SlideShow/bluecurve/start.png
  
  	<<Binary file>>
  
  


wkpark      2005/08/26 20:22:08

  Modified:    .        wikilib.php
  Log:
  support intericons
  
  Revision  Changes    Path
  1.156     +9 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.155
  retrieving revision 1.156
  diff -u -r1.155 -r1.156
  --- wikilib.php	26 Aug 2005 09:55:38 -0000	1.155
  +++ wikilib.php	26 Aug 2005 11:22:07 -0000	1.156
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.155 2005/08/26 09:55:38 wkpark Exp $
  +// $Id: wikilib.php,v 1.156 2005/08/26 11:22:07 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1451,8 +1451,14 @@
         $url=str_replace('$PAGE','index',$href);
         #$href=$url;
       }
  -    $icon=strtolower($wiki)."-16.png";
  -    $out.="<tr><td><tt><img src='$DBInfo->imgs_dir_interwiki/$icon' align='middle' alt='$wiki:' /><a href='$url'>$wiki</a></tt></td><td><tt>";
  +    $icon=$DBInfo->imgs_dir_interwiki.strtolower($wiki).'-16.png';
  +    $sx=16;$sy=16;
  +    if ($DBInfo->intericon[$wiki]) {
  +      $icon=$DBInfo->intericon[$wiki][2];
  +      $sx=$DBInfo->intericon[$wiki][0];
  +      $sy=$DBInfo->intericon[$wiki][1];
  +    }
  +    $out.="<tr><td><tt><img src='$icon' width='$sx' height='$sy' align='middle' alt='$wiki:' /><a href='$url'>$wiki</a></tt></td><td><tt>";
       $out.="<a href='$href'>$href</a></tt></td></tr>\n";
     }
     $out.="</table>\n";
  
  
  


wkpark      2005/08/27 19:56:50

  Modified:    .        wikilib.php
  Log:
  enhanced TitleIndex macro for big wikis
  
  Revision  Changes    Path
  1.157     +31 -16    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.156
  retrieving revision 1.157
  diff -u -r1.156 -r1.157
  --- wikilib.php	26 Aug 2005 11:22:07 -0000	1.156
  +++ wikilib.php	27 Aug 2005 10:56:50 -0000	1.157
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.156 2005/08/26 11:22:07 wkpark Exp $
  +// $Id: wikilib.php,v 1.157 2005/08/27 10:56:50 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -36,9 +36,7 @@
   }
   
   function _urlencode($url) {
  -  #$name=urlencode(strtr($url,"+"," "));
  -  #return preg_replace(array('/%2F/i','/%7E/i','/%23/'),array('/','~','#'),$name);
  -  return preg_replace("/([^a-z0-9\/\?\.\+~#&:;=%\-]{1})/ie","'%'.strtoupper(dechex(ord('\\1')))",$url);
  +  return preg_replace("/([^a-z0-9\/\?\.\+~#&:;=%\-_]{1})/ie","'%'.strtoupper(dechex(ord('\\1')))",$url);
   }
   
   function _stripslashes($str) {
  @@ -914,11 +912,18 @@
   function do_titleindex($formatter,$options) {
     global $DBInfo;
   
  -  $pages = $DBInfo->getPageLists();
  +  if ($options['sec'] =='') {
  +    $pages = $DBInfo->getPageLists();
   
  -  sort($pages);
  -  header("Content-Type: text/plain");
  -  print join("\n",$pages);
  +    sort($pages);
  +    header("Content-Type: text/plain");
  +    print join("\n",$pages);
  +    return;
  +  }
  +  $formatter->send_header("",$options);
  +  $formatter->send_title("","",$options);
  +  print macro_TitleIndex($formatter,$options['sec']);
  +  $formatter->send_footer($args,$options);
   }
   
   function do_titlesearch($formatter,$options) {
  @@ -1617,7 +1622,7 @@
     return $out;
   }
   
  -function macro_TitleIndex($formatter) {
  +function macro_TitleIndex($formatter,$value) {
     global $DBInfo;
   
     if ($formatter->group) {
  @@ -1634,22 +1639,25 @@
     $out="";
     $keys=array();
   
  +  if ($value=='' or $value=='all') $sel='.?';
  +  else $sel=$value;
  +  if (@preg_match('/'.$sel.'/i','')===false) $sel='.?';
  +
   #  if ($DBInfo->use_titlecache)
   #    $cache=new Cache_text('title');
  -
     foreach ($all_pages as $page) {
       $p=ltrim($page);
       $pkey=get_key("$p");
  -#   $key=strtoupper($page[0]);
       if ($key != $pkey) {
  -       if ($key !=-1)
  -          $out.="</ul>";
  +       if ($ok==1 and $sel!='.?') break;
          $key=$pkey;
  -       $keys[]=$key;
  +       $keys[]=$pkey;
  +       if (!preg_match('/'.$sel.'/i',$pkey)) continue;
  +       if ($out !='') $out.="</ul>";
          $out.= "<a name='$key' /><h3><a href='#top'>$key</a></h3>\n";
          $out.= "<ul>";
       }
  -
  +    if (!preg_match('/'.$sel.'/i',$pkey)) continue;
       #
   #    if ($DBInfo->use_titlecache and $cache->exists($page))
   #      $title=$cache->fetch($page);
  @@ -1668,10 +1676,17 @@
     $out.= "</ul>\n";
   
     $index='';
  +  if ($sel != '.?') {
  +    $tlink=$formatter->link_url($formatter->page->name,'?action=titleindex&amp;sec=');
  +    $keys[]='all';
  +  }
     foreach ($keys as $key) {
       $name=$key;
  +    $tag='#'.$key;
  +    $link=$tlink ? preg_replace('/sec=/','sec='._urlencode($key),$tlink):'';
       if ($key == 'Others') $name=_("Others");
  -    $index.= "| <a href='#$key'>$name</a> ";
  +    else if ($key == 'all') $name=_("Show all");
  +    $index.= "| <a href='$link$tag'>$name</a> ";
     }
     $index[0]=" ";
     
  
  
  


wkpark      2005/08/27 23:17:42

  Modified:    .        wiki.php
  Log:
  fixed fancy_nonexists() to use compat.php
  fixed interwiki_repl() for non exists interwikis
  
  Revision  Changes    Path
  1.231     +20 -13    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.230
  retrieving revision 1.231
  diff -u -r1.230 -r1.231
  --- wiki.php	26 Aug 2005 09:56:20 -0000	1.230
  +++ wiki.php	27 Aug 2005 14:17:42 -0000	1.231
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.230 2005/08/26 09:56:20 wkpark Exp $
  +// $Id: wiki.php,v 1.231 2005/08/27 14:17:42 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.230 $',1,-1);
  +$_revision = substr('$Revision: 1.231 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -1745,8 +1745,10 @@
   
       $url=$DBInfo->interwiki[$wiki];
       # invalid InterWiki name
  -    if (!$url)
  -      return $dum[0].":".$this->word_repl($dum[1],$text);
  +    if (!$url) {
  +      $dum0=preg_replace("/(".$this->wordrule.")/e","\$this->link_repl('\\1')",$dum[0]);
  +      return $dum0.":".$this->word_repl($dum[1],$text);
  +    }
   
       if ($page=='/') $page='';
       $urlpage=_urlencode(trim($page));
  @@ -1935,17 +1937,22 @@
           $last=substr($word,1);
         return "<a class='nonexistent' href='$url'>$link</a>".$last;
       }
  -    if (function_exists('mb_encode_numericentity')) {
  -      if (function_exists('iconv') and strtolower($DBInfo->charset) != 'utf-8')
  -        $utfword=iconv($DBInfo->charset,'utf-8',$word);
  -      else
  -        $utfword=$word;
  -      $mbword=mb_encode_numericentity($utfword,$DBInfo->convmap,'utf-8');
  +    if (strtolower($DBInfo->charset) == 'utf-8')
  +      $utfword=$word;
  +    if (function_exists('iconv'))
  +      $utfword=iconv($DBInfo->charset,'utf-8',$word);
  +    if ($utfword) {
  +      if (function_exists('mb_encode_numericentity')) {
  +        $mbword=mb_encode_numericentity($utfword,$DBInfo->convmap,'utf-8');
  +      } else {
  +        include_once('lib/compat.php');
  +        $mbword=utf8_mb_encode($utfword);
  +      }
         $tag=strtok($mbword,';').';'; $last=strtok('');
  -      return "<a class='nonexistent' href='$url'>$tag</a>".$last;
  -    } else {
  -      return "<a class='nonexistent' href='$url'>?</a>$word";
  +      if ($tag)
  +        return "<a class='nonexistent' href='$url'>$tag</a>".$last;
       }
  +    return "<a class='nonexistent' href='$url'>?</a>$word";
     }
   
     function head_repl($depth,$head) {
  
  
  


wkpark      2005/08/27 23:19:08

  Modified:    .        wiki.php
  Log:
  more fixes
  
  Revision  Changes    Path
  1.232     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.231
  retrieving revision 1.232
  diff -u -r1.231 -r1.232
  --- wiki.php	27 Aug 2005 14:17:42 -0000	1.231
  +++ wiki.php	27 Aug 2005 14:19:08 -0000	1.232
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.231 2005/08/27 14:17:42 wkpark Exp $
  +// $Id: wiki.php,v 1.232 2005/08/27 14:19:08 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.231 $',1,-1);
  +$_revision = substr('$Revision: 1.232 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -1939,7 +1939,7 @@
       }
       if (strtolower($DBInfo->charset) == 'utf-8')
         $utfword=$word;
  -    if (function_exists('iconv'))
  +    else if (function_exists('iconv'))
         $utfword=iconv($DBInfo->charset,'utf-8',$word);
       if ($utfword) {
         if (function_exists('mb_encode_numericentity')) {
  
  
  


wkpark      2005/08/29 15:19:19

  Modified:    .        wikilib.php
  Log:
  fix TableOfContents() macro to support the depth option.
  
  Revision  Changes    Path
  1.158     +5 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.157
  retrieving revision 1.158
  diff -u -r1.157 -r1.158
  --- wikilib.php	27 Aug 2005 10:56:50 -0000	1.157
  +++ wikilib.php	29 Aug 2005 06:19:19 -0000	1.158
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.157 2005/08/27 10:56:50 wkpark Exp $
  +// $Id: wikilib.php,v 1.158 2005/08/29 06:19:19 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1649,7 +1649,6 @@
       $p=ltrim($page);
       $pkey=get_key("$p");
       if ($key != $pkey) {
  -       if ($ok==1 and $sel!='.?') break;
          $key=$pkey;
          $keys[]=$pkey;
          if (!preg_match('/'.$sel.'/i',$pkey)) continue;
  @@ -1788,6 +1787,7 @@
    if ($DBInfo->toc_options)
      $value=$DBInfo->toc_options.','.$value;
    $toctoggle=$DBInfo->use_toctoggle;
  + $secdep=5;
   
    while($value) {
      list($arg,$value)=explode(',',$value,2);
  @@ -1803,6 +1803,8 @@
      } else if ($key=='toggle') {
        $toctoggle=strtok('');
        if ($toctoggle=='') $toctoggle=1;
  +   } else if ($arg == (int) $arg and $arg > 0) {
  +     $secdep=$arg;
      } else if ($arg) {
        $value=$value ? $arg.','.$value:$arg;
        break;
  @@ -1845,7 +1847,7 @@
    $lines=explode("\n",$body);
    foreach ($lines as $line) {
      $line=preg_replace("/\n$/", "", $line); # strip \n
  -   preg_match("/(?<!=)(={1,5})\s(#?)(.*)\s+\\1\s?$/",$line,$match);
  +   preg_match("/(?<!=)(={1,$secdep})\s(#?)(.*)\s+\\1\s?$/",$line,$match);
   
      if (!$match) continue;
   
  
  
  


wkpark      2005/08/29 22:21:56

  Modified:    .        wiki.php wikilib.php
  Log:
  fixed merge(diff3) order.
  gettextify more messages.
  
  Revision  Changes    Path
  1.233     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.232
  retrieving revision 1.233
  diff -u -r1.232 -r1.233
  --- wiki.php	27 Aug 2005 14:19:08 -0000	1.232
  +++ wiki.php	29 Aug 2005 13:21:55 -0000	1.233
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.232 2005/08/27 14:19:08 wkpark Exp $
  +// $Id: wiki.php,v 1.233 2005/08/29 13:21:55 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.232 $',1,-1);
  +$_revision = substr('$Revision: 1.233 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -2701,7 +2701,7 @@
         $current=$this->page->_get_raw_body();
   
         $merge= new Diff3(explode("\n",$orig),
  -        explode("\n",$text),explode("\n",$current));
  +        explode("\n",$current),explode("\n",$text));
         $out=implode("\n",$merge->merged_output());
       }
   
  
  
  
  1.159     +11 -5     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.158
  retrieving revision 1.159
  diff -u -r1.158 -r1.159
  --- wikilib.php	29 Aug 2005 06:19:19 -0000	1.158
  +++ wikilib.php	29 Aug 2005 13:21:55 -0000	1.159
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.158 2005/08/29 06:19:19 wkpark Exp $
  +// $Id: wikilib.php,v 1.159 2005/08/29 13:21:55 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -565,8 +565,9 @@
       $form.= _("To create your own templates, add a page with a 'Template' suffix.")."\n<br />\n";
     }
   
  +  $merge_btn=_("Merge");
     if ($options['conflict'])
  -    $extra='<input type="submit" name="button_merge" value="Merge" />';
  +    $extra='<input type="submit" name="button_merge" value="'.$merge_btn.'" />';
     if ($options['section'])
       $hidden='<input type="hidden" name="section" value="'.$options['section'].
               '" />';
  @@ -1005,10 +1006,15 @@
         $options['conflict']=1; 
         $options['datestamp']=$datestamp; 
         if ($button_merge) {
  -        $option['title']=sprintf(_("Preview of %s"),$formatter->link_tag($formatter->page->urlname,"",$options['page'],"class='wikiTitle'"));
  -        $formatter->send_title("","",$options);
  +        $options['msg']=sprintf(_("%s is merged with latest contents."),$formatter->link_tag($formatter->page->urlname,"",$options['page']));
  +        $options['title']=sprintf(_("Preview of %s"),$options['page']);
           $options['conflict']=0; 
           $merge=$formatter->get_merge($savetext);
  +        if (preg_grep('/^<<<<<<<$/',explode("\n",$merge)))
  +          $options['msg']=sprintf(_("Merging is not successful for %s. Please resolve conflicts manually."),$formatter->link_tag($formatter->page->urlname,"",$options['page']));
  +        $formatter->send_title("","",$options);
  +
  +        $merge=preg_replace('/^=======$/m',">>>>>>>",$merge);
           if ($merge) $savetext=$merge;
           unset($options['datestamp']); 
         } else
  @@ -1046,7 +1052,7 @@
     $formatter->page->set_raw_body($savetext);
   
     if ($button_preview) {
  -    $options['title']=sprintf(_("Preview of %s"),$formatter->link_tag($formatter->page->urlname,"",htmlspecialchars($options['page']),"class='wikiTitle'"));
  +    $options['title']=sprintf(_("Preview of %s"),$options['page']);
       $formatter->send_title("","",$options);
        
       $options['preview']=1; 
  
  
  


wkpark      2005/08/29 22:31:45

  Modified:    plugin   Diff.php
  Log:
  fix diff order
  
  Revision  Changes    Path
  1.4       +3 -3      moniwiki/plugin/Diff.php
  
  Index: Diff.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Diff.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Diff.php	24 Nov 2004 15:30:30 -0000	1.3
  +++ Diff.php	29 Aug 2005 13:31:45 -0000	1.4
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a diff plugin for the MoniWiki
   //
  -// $Id: Diff.php,v 1.3 2004/11/24 15:30:30 wkpark Exp $
  +// $Id: Diff.php,v 1.4 2005/08/29 13:31:45 wkpark Exp $
   
   function macro_diff($formatter,$value,&$options)
   {
  @@ -18,7 +18,7 @@
         fwrite($fp, $options['text']);
         fclose($fp);
   
  -      $fp=popen("diff -u $tmpf ".$formatter->page->filename,'r');
  +      $fp=popen('diff -u '.$formatter->page->filename.' '.$tmpf,'r');
         if (!$fp) {
           unlink($tmpf);
           return '';
  @@ -33,7 +33,7 @@
       } else {
         $current=$formatter->page->get_raw_body();
         include_once('lib/difflib.php');
  -      $mydiff=new Diff(explode("\n",$options['text']),explode("\n",$current));
  +      $mydiff=new Diff(explode("\n",$current),explode("\n",$options['text']));
   
         $fmtdiff = new UnifiedDiffFormatter;
         $out = $fmtdiff->format($mydiff);
  
  
  


wkpark      2005/08/29 22:33:32

  Modified:    plugin   Info.php
  Log:
  remove rlog option '-zLT'
  
  Revision  Changes    Path
  1.5       +2 -2      moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Info.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Info.php	15 Aug 2005 11:35:01 -0000	1.4
  +++ Info.php	29 Aug 2005 13:33:32 -0000	1.5
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Info plugin for the MoniWiki
   //
  -// $Id: Info.php,v 1.4 2005/08/15 11:35:01 wkpark Exp $
  +// $Id: Info.php,v 1.5 2005/08/29 13:33:32 wkpark Exp $
   
   function _parse_rlog($formatter,$log) {
     global $DBInfo;
  @@ -129,7 +129,7 @@
       getModule('Version',$DBInfo->version_class);
       $class="Version_".$DBInfo->version_class;
       $version=new $class ($DBInfo);
  -    $out= $version->rlog($formatter->page->name,'','','-zLT');
  +    $out= $version->rlog($formatter->page->name,'','','-z');
   
       if (!$out) {
         $msg=_("No older revisions available");
  
  
  


wkpark      2005/08/31 01:25:30

  Modified:    plugin   rename.php
  Log:
  fixed rename bug, add translation messages
  
  Revision  Changes    Path
  1.10      +7 -5      moniwiki/plugin/rename.php
  
  Index: rename.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rename.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- rename.php	14 Aug 2005 09:59:12 -0000	1.9
  +++ rename.php	30 Aug 2005 16:25:30 -0000	1.10
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a rename action plugin for the MoniWiki
   //
  -// $Id: rename.php,v 1.9 2005/08/14 09:59:12 wkpark Exp $
  +// $Id: rename.php,v 1.10 2005/08/30 16:25:30 wkpark Exp $
   
   function do_post_rename($formatter,$options) {
     global $DBInfo;
  @@ -40,9 +40,9 @@
         print $msg;
         if (!$options['show_only'])
           $DBInfo->renamePage($options['page'],$options['name'],$options);
  -      print sprintf(_("'%s' is renamed as '%s' successfully"),
  +      print sprintf(_("'%s' is renamed as '%s' successfully."),
           $options['page'],
  -        $formatter->link_tag($new_encodedname,
  +        $formatter->link_tag($options['name'],
             "?action=highlight&amp;value=".$new_encodedname));
   
         $formatter->send_footer("",$options);
  @@ -60,10 +60,12 @@
     $formatter->send_title($title,"",$options);
   #<tr><td align='right'><input type='checkbox' name='show' checked='checked' />show only </td><td><input type='password' name='passwd'>
   
  +  $obtn=_("Old name:");
  +  $nbtn=_("New name:");
     print "<form method='post'>
   <table border='0'>
  -<tr><td align='right'>Old name: </td><td><b>$options[page]</b></td></tr>
  -<tr><td align='right'>New name: </td><td><input name='name' /></td></tr>\n";
  +<tr><td align='right'>$obtn </td><td><b>$options[page]</b></td></tr>
  +<tr><td align='right'>$nbtn </td><td><input name='name' /></td></tr>\n";
     $rename_button=_("Rename");
     if ($options['value']=='check_backlinks') {
       print "<tr><td colspan='2'>\n";
  
  
  


wkpark      2005/08/31 01:26:10

  Modified:    plugin   Keywords.php
  Log:
  more fixes
  
  Revision  Changes    Path
  1.3       +4 -3      moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Keywords.php	21 Aug 2005 17:36:22 -0000	1.2
  +++ Keywords.php	30 Aug 2005 16:26:09 -0000	1.3
  @@ -3,13 +3,14 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a 'Keywords' plugin for the MoniWiki
   //
  -// $Id: Keywords.php,v 1.2 2005/08/21 17:36:22 wkpark Exp $
  +// $Id: Keywords.php,v 1.3 2005/08/30 16:26:09 wkpark Exp $
   
   function macro_Keywords($formatter,$value,$options='') {
       global $DBInfo;
   
       $common= <<<EOF
   i am an a b c d e f g h i j k l m n o p q r s t u v w x y z
  +0 1 2 3 4 5 6 7 8 9
   if on in by it at up down over into for from to of he his she her back
   is are be or nor also and each all
   too any with here
  @@ -23,8 +24,8 @@
       if (!$page->exists()) return '';
       $raw=$page->get_raw_body();
   
  -    $raw=preg_replace("/([;\"',`\\\\\/\.:@\$%\^&\*\(\)\{\}\[\]\-_\+=\|])/",' ',
  -        $raw.' '.$value);
  +    $raw=preg_replace("/([;\"',`\\\\\/\.:@#\!\?\$%\^&\*\(\)\{\}\[\]\-_\+=\|])/",
  +        ' ', $raw.' '.$value);
       $raw=preg_replace("/((?<=[a-z0-9]|[B-Z]{2})([A-Z][a-z]))/"," \\1",$raw);
       $raw=strtolower($raw);
       $words=preg_split("/[ ]+|\n/",$raw);
  
  
  


wkpark      2005/08/31 17:14:54

  Modified:    css      kbd.js
  Log:
  simplify and some enhancements: added alt-z (for mozillaFirefox)
  
  Revision  Changes    Path
  1.8       +53 -34    moniwiki/css/kbd.js
  
  Index: kbd.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/kbd.js,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- kbd.js	4 Jan 2005 09:37:44 -0000	1.7
  +++ kbd.js	31 Aug 2005 08:14:54 -0000	1.8
  @@ -6,7 +6,7 @@
   
      distributable under GPL
   
  -   $Id: kbd.js,v 1.7 2005/01/04 09:37:44 wkpark Exp $
  +   $Id: kbd.js,v 1.8 2005/08/31 08:14:54 wkpark Exp $
   
      CHANGES
   
  @@ -57,11 +57,8 @@
   // go form ID
   _go= "go";
   
  -if (_qp == '/') {
  -	_ap='?';
  -} else {
  -	_ap='&';
  -}
  +if (_qp == '/') { _ap='?'; }
  +else { _ap='&'; }
   
   _dom=0;
   
  @@ -122,42 +119,55 @@
   			ch=String.fromCharCode(e.charCode);
   		}
   	}
  +	var go=document.getElementById(_go);
  +	if(e.altKey || e.ctrlKey) {
  +		if(ch == "z" && e.altKey) {
  +			if (EventStatus != 'INPUT') {
  +				go.elements['value'].focus();
  +				return false;
  +			} else {
  +				var bot=document.getElementById('bottom');
  +				if (bot) bot.focus();
  +				return false;
  +			}
  +		}
  +		return;
  +	}
   	if(EventStatus == 'INPUT' || EventStatus == 'TEXTAREA' || _dom == 2) {
   		if ((ch == '?' || ch== '/') && EventStatus == 'INPUT') {
  -			var my=""+document.getElementById(_go).elements['value'].value;
  +			var my=""+go.elements['value'].value;
   			if (ch == '?' && (my == "/" || my =="?" || my=="")) {
  -				if (document.getElementById(_go).elements['status'].value == '?') {
  -					document.getElementById(_go).elements['action'].value="goto";
  -					document.getElementById(_go).elements['status'].value="Go";
  +				if (go.elements['status'].value == '?') {
  +					go.elements['action'].value="goto";
  +					go.elements['status'].value="Go";
   					window.status="GoTo";
   				} else {
  -					document.getElementById(_go).elements['action'].value="titlesearch";
  -					document.getElementById(_go).elements['status'].value="?";
  +					go.elements['action'].value="titlesearch";
  +					go.elements['status'].value="?";
   					window.status="TitleSearch";
   				}
   			} else if (ch == '/' && (my == "/" || my =="?" || my=="")) {
  -				if (document.getElementById(_go).elements['status'].value == '/') {
  -			 		document.getElementById(_go).elements['action'].value="goto";
  -			 		document.getElementById(_go).elements['status'].value="Go";
  +				if (go.elements['status'].value == '/') {
  +			 		go.elements['action'].value="goto";
  +			 		go.elements['status'].value="Go";
   			 		window.status="GoTo";
   				} else {
  -					document.getElementById(_go).elements['action'].value="fullsearch";
  -					document.getElementById(_go).elements['status'].value="/";
  +					go.elements['action'].value="fullsearch";
  +					go.elements['status'].value="/";
   					window.status="FullSearch";
   				}
   			}
   			if (my == '/' || my == '?')
  -			document.getElementById(_go).elements['value'].value=my.substr(0,my.length-1);
  +			go.elements['value'].value=my.substr(0,my.length-1);
   		} else if (cc== 27 && EventStatus == 'INPUT') {
  -			document.getElementById(_go).elements['value'].blur();
  -			document.getElementById(_go).elements['value'].value='';
  -			document.getElementById(_go).elements['action'].value="goto";
  -			document.getElementById(_go).elements['status'].value="Go";
  +			go.elements['value'].blur();
  +			go.elements['value'].value='';
  +			go.elements['action'].value="goto";
  +			go.elements['status'].value="Go";
   			window.status="GoTo"+window.defaultStatus;
   		}
   		return;
   	}
  -	if(e.altKey || e.ctrlKey) return;
   
   	if(_dom != 3 && cc == 229 && ch == '') { // Mozilla
   		window.status="?/ or change IME status";
  @@ -167,21 +177,26 @@
   		self.location = url_prefix + _qp + FindPage;
   	} else if(cc == 9 || cc == 27) { // 'TAB','ESC' key
   		if (cc == 27) {
  -			document.getElementById(_go).elements['value'].focus();
  +			go.elements['value'].focus();
   		}
  +	} else if(ch == "`") {
  +		var bot=document.getElementById('bottom');
  +		if (bot) bot.focus();
  +	} else if(ch == "z") {
  +		go.elements['value'].focus();
   	} else if(ch == "/" || ch == "?") {
  -		var my=document.getElementById(_go).elements['value'].value + "";
  +		var my=go.elements['value'].value + "";
   		if (ch == "?" && (my == "?" || my =="/" || my=="")) {
   			// Title search as vi way
  -			document.getElementById(_go).elements['value'].focus();
  -			document.getElementById(_go).elements['action'].value="titlesearch";
  -			document.getElementById(_go).elements['status'].value="?";
  +			go.elements['value'].focus();
  +			go.elements['action'].value="titlesearch";
  +			go.elements['status'].value="?";
   		} else
   		if (ch == "/" && (my == "?" || my =="/" || my=="")) {
   			// Contents search
  -			document.getElementById(_go).elements['value'].focus();
  -			document.getElementById(_go).elements['action'].value="fullsearch";
  -			document.getElementById(_go).elements['status'].value="/";
  +			go.elements['value'].focus();
  +			go.elements['action'].value="fullsearch";
  +			go.elements['status'].value="/";
   		}
   	} else if(ch == "c") {
   		self.location = url_prefix + _qp + RecentChanges;
  @@ -246,12 +261,16 @@
   	_dom=document.all ? 3 : (document.getElementById ? 1 : (document.layers ? 2 : 0));
   	document.onkeypress = keypresshandler;
   	document.onkeydown = keydownhandler;
  +	var go=document.getElementById(_go);
   }
   
   function moin_submit() {
  -	if (document.getElementById(_go).elements['action'].value =="goto") {
  -		document.getElementById(_go).elements['value'].name='goto';
  -		document.getElementById(_go).elements['action'].name='';
  +	var go=document.getElementById(_go);
  +	if (go.elements['value'].value.replace(/\s+/,'') =="")
  +		return false;
  +	if (go.elements['action'].value =="goto") {
  +		go.elements['value'].name='goto';
  +		go.elements['action'].name='';
   		return true;
   	}
   }
  
  
  


wkpark      2005/08/31 19:04:41

  Modified:    lib      rcslite.php version.RcsLite.php
  Log:
  fixed RcsLite bug: get latest revision with a invalid rev. number.
  
  Revision  Changes    Path
  1.5       +3 -3      moniwiki/lib/rcslite.php
  
  Index: rcslite.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/rcslite.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- rcslite.php	15 Aug 2005 11:31:22 -0000	1.4
  +++ rcslite.php	31 Aug 2005 10:04:40 -0000	1.5
  @@ -3,7 +3,7 @@
   # Copyright (c) 2004 Won-kyu Park <wkpark at kldp.org>
   #
   # this module is ported from the RcsLite.pm of the TWiki by wkpark.
  -# $Id: rcslite.php,v 1.4 2005/08/15 11:31:22 wkpark Exp $
  +# $Id: rcslite.php,v 1.5 2005/08/31 10:04:40 wkpark Exp $
   
   # Original notice:
   #
  @@ -559,8 +559,8 @@
       {
           $this->_ensureProcessed();
           $head = $this->numRevisions();
  -        if ( $version != $head && !in_array($version,$this->_next))
  -            return; // XXX
  +        if ( $version != $head && !array_key_exists($version,$this->_next))
  +            return $this->delta( $head );
           if( strcmp($version,$head) == 0 ) {
               return $this->delta( $version );
           } else {
  
  
  
  1.5       +3 -3      moniwiki/lib/version.RcsLite.php
  
  Index: version.RcsLite.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/version.RcsLite.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- version.RcsLite.php	15 Aug 2005 11:31:22 -0000	1.4
  +++ version.RcsLite.php	31 Aug 2005 10:04:40 -0000	1.5
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RcsLite versioning plugin for the MoniWiki
   //
  -// $Id: version.RcsLite.php,v 1.4 2005/08/15 11:31:22 wkpark Exp $
  +// $Id: version.RcsLite.php,v 1.5 2005/08/31 10:04:40 wkpark Exp $
   
   class Version_RcsLite extends Version_RCS {
     var $DB;
  @@ -21,8 +21,8 @@
   
       $this->rcs->_process($filename);
   
  -    if ($this->rcs->_author[$rev]) 
  -      $out=$this->rcs->getRevision($rev);
  +    #if ($this->rcs->_author[$rev])
  +    $out=$this->rcs->getRevision($rev);
   
       return $out;
     }
  
  
  


wkpark      2005/08/31 20:29:43

  Modified:    .        wiki.php
  Log:
  postfilter support added
  
  Revision  Changes    Path
  1.234     +58 -14    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.233
  retrieving revision 1.234
  diff -u -r1.233 -r1.234
  --- wiki.php	29 Aug 2005 13:21:55 -0000	1.233
  +++ wiki.php	31 Aug 2005 11:29:43 -0000	1.234
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.233 2005/08/29 13:21:55 wkpark Exp $
  +// $Id: wiki.php,v 1.234 2005/08/31 11:29:43 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.233 $',1,-1);
  +$_revision = substr('$Revision: 1.234 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -625,6 +625,16 @@
         $this->security=new $class ($this);
       } else
         $this->security=new Security($this);
  +    if ($this->filters) {
  +      if (!is_array($this->filters)) {
  +        $this->filters=preg_split('/(\||,)/',$this->filters);
  +      }
  +    }
  +    if ($this->postfilters) {
  +      if (!is_array($this->postfilters)) {
  +        $this->postfilters=preg_split('/(\||,)/',$this->postfilters);
  +      }
  +    }
     }
   
     function Close() {
  @@ -904,15 +914,23 @@
       $REMOTE_ADDR=$_SERVER['REMOTE_ADDR'];
   
       $comment=$options['comment'];
  +    $user=new User();
  +    if ($user->id != 'Anonymous') {
  +      $udb=new UserDB($this);
  +      $udb->checkUser($user);
  +    }
   
       $keyname=$this->_getPageKey($page->name);
   
  -    $delete=@unlink($this->text_dir."/$keyname");
  -    if ($options['history'] && $this->version_class) {
  +    if ($this->version_class) {
         $class=getModule('Version',$this->version_class);
         $version=new $class ($this);
  -      $version->delete($page->name);
  +      $log=$REMOTE_ADDR.';;'.$user->id.';;'.$comment;
  +      $ret=$version->ci($page->name,$log);
  +      if ($options['history'])
  +        $version->delete($page->name);
       }
  +    $delete=@unlink($this->text_dir."/$keyname");
       $this->addLogEntry($keyname, $REMOTE_ADDR,$comment,"SAVE");
   
       $handle= opendir($this->cache_dir);
  @@ -1244,7 +1262,7 @@
           $out = $version->co($this->name,$rev);
           return $out;
         } else {
  -        return _("Version info does not supported by this wiki");
  +        return _("Version info does not supported in this wiki");
         }
       }
   
  @@ -1525,7 +1543,7 @@
     function get_instructions(&$body) {
       global $DBInfo;
       $pikeys=array('#redirect','#action','#title','#keywords','#noindex',
  -      '#filter','#twinpages','#notwins');
  +      '#filter','#postfilter','#twinpages','#notwins');
       $pi=array();
       if (!$body) {
         if (!$this->page->exists()) return '';
  @@ -2060,6 +2078,18 @@
       return call_user_func("filter_$filter",$this,$value,$options);
     }
   
  +  function postfilter_repl($filter,$value,$options='') {
  +    if (!function_exists('postfilter_'.$filter) and !function_exists('filter_'.$filter)) {
  +      $ff=getFilter($filter);
  +      if (!$ff) return $value;
  +      include_once("plugin/filter/$ff.php");
  +      #$filter=$ff;
  +    }
  +    if (!function_exists ("postfilter_".$filter)) return $value;
  +
  +    return call_user_func("postfilter_$filter",$this,$value,$options);
  +  }
  +
     function smiley_repl($smiley) {
       global $DBInfo;
   
  @@ -2218,8 +2248,10 @@
   
       if ($body) {
         $pi=$this->get_instructions($body);
  -      if ($pi['#filter']) {
  -        $fts=preg_split('/(\||,)/',$pi['#filter']);
  +      $fts=array();
  +      if ($pi['#filter']) $fts=preg_split('/(\||,)/',$pi['#filter']);
  +      if ($DBInfo->filters) $fts=array_merge($fts,$DBInfo->filters);
  +      if ($fts) {  
           foreach ($fts as $ft) {
             $body=$this->filter_repl($ft,$body,$options);
           }
  @@ -2232,12 +2264,17 @@
         }
         $lines=explode("\n",$body);
       } else {
  -      #$pi=$this->get_instructions(&$body);
  -      $pi=$this->get_instructions($dum);
  -      $body=$this->page->get_raw_body($options);
  +      if ($options['rev']) {
  +        $body=$this->page->get_raw_body($options);
  +        $pi=$this->get_instructions($body);
  +      } else {
  +        $pi=$this->get_instructions($dum);
  +      }
   
  -      if ($pi['#filter']) {
  -        $fts=preg_split('/(\||,)/',$pi['#filter']);
  +      $fts=array();
  +      if ($pi['#filter']) $fts=preg_split('/(\||,)/',$pi['#filter']);
  +      if ($DBInfo->filters) $fts=array_merge($fts,$DBInfo->filters);
  +      if ($fts) {  
           foreach ($fts as $ft) {
             $body=$this->filter_repl($ft,$body,$options);
           }
  @@ -2570,6 +2607,13 @@
         $text=preg_replace('/((<[^>]*>)|('.$highlight.'))/ie',
                            "\$this->highlight_repl('\\1',\$colref)",$text);
       }
  +    $fts=array();
  +    if ($pi['#postfilter']) $fts=preg_split('/(\||,)/',$pi['#postfilter']);
  +    if ($DBInfo->postfilters) $fts=array_merge($fts,$DBInfo->postfilters);
  +    if ($fts) {
  +      foreach ($fts as $ft)
  +        $text=$this->postfilter_repl($ft,$text,$options);
  +    }
   
       # close all tags
       $close="";
  
  
  


wkpark      2005/08/31 20:31:12

  Modified:    .        wikilib.php
  Log:
  enhanced merging step. some tabindices added
  
  Revision  Changes    Path
  1.160     +48 -18    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.159
  retrieving revision 1.160
  diff -u -r1.159 -r1.160
  --- wikilib.php	29 Aug 2005 13:21:55 -0000	1.159
  +++ wikilib.php	31 Aug 2005 11:31:12 -0000	1.160
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.159 2005/08/29 13:21:55 wkpark Exp $
  +// $Id: wikilib.php,v 1.160 2005/08/31 11:31:12 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -566,8 +566,16 @@
     }
   
     $merge_btn=_("Merge");
  -  if ($options['conflict'])
  +  $merge_btn2=_("Merge manually");
  +  $merge_btn3=_("Ignore conflicts");
  +  if ($options['conflict']) {
       $extra='<input type="submit" name="button_merge" value="'.$merge_btn.'" />';
  +    if ($options['conflict']==2) {
  +      $extra.=' <input type="submit" name="manual_merge" value="'.$merge_btn2.'" />';
  +      if ($DBInfo->use_forcemerge)
  +        $extra.=' <input type="submit" name="force_merge" value="'.$merge_btn3.'" />';
  +    }
  +  }
     if ($options['section'])
       $hidden='<input type="hidden" name="section" value="'.$options['section'].
               '" />';
  @@ -629,7 +637,7 @@
     $categories=array();
     $categories= $DBInfo->getLikePages($DBInfo->category_regex);
     if ($categories) {
  -    $select_category="<select name='category'>\n<option value=''>"._("--Select Category--")."</option>\n";
  +    $select_category="<select name='category' tabindex='4'>\n<option value=''>"._("--Select Category--")."</option>\n";
       foreach ($categories as $category)
         $select_category.="<option value='$category'>$category</option>\n";
       $select_category.="</select>\n";
  @@ -638,7 +646,7 @@
     if ($DBInfo->use_minoredit) {
       $user=new User(); # get from COOKIE VARS
       if ($DBInfo->owners and in_array($user->id,$DBInfo->owners)) {
  -      $extra_check=' '._('Minor edit')."<input type='checkbox' name='minor' />";
  +      $extra_check=' '._('Minor edit')."<input type='checkbox' tabindex='3' name='minor' />";
       }
     }
   
  @@ -667,15 +675,15 @@
   EOS;
     }
     $form.=<<<EOS
  -<textarea id="content" wrap="virtual" name="savetext"
  +<textarea id="content" wrap="virtual" name="savetext" tabindex="1"
    rows="$rows" cols="$cols" class="wiki">$raw_body</textarea><br />
  -$summary_msg: <input name="comment" size="70" maxlength="70" style="width:200" />$extra_check<br />
  +$summary_msg: <input name="comment" size="70" maxlength="70" style="width:200" tabindex="2" />$extra_check<br />
   <input type="hidden" name="action" value="savepage" />
   <input type="hidden" name="datestamp" value="$datestamp" />
   $hidden$select_category
  -<input type="submit" value="$save_msg" />&nbsp;
  +<input type="submit" tabindex="5" value="$save_msg" />&nbsp;
   <!-- <input type="reset" value="Reset" />&nbsp; -->
  -<input type="submit" name="button_preview" value="$preview_msg" />
  +<input type="submit" tabindex="6" name="button_preview" value="$preview_msg" />
   $extra
   </form>
   EOS;
  @@ -970,7 +978,9 @@
     $savetext=$options['savetext'];
     $datestamp=$options['datestamp'];
     $button_preview=$options['button_preview'];
  -  $button_merge=$options['button_merge'];
  +  $button_merge=$options['button_merge']? 1:0;
  +  $button_merge=$options['manual_merge']? 2:$button_merge;
  +  $button_merge=$options['force_merge']? 3:$button_merge;
   
     $formatter->send_header("",$options);
   
  @@ -1004,19 +1014,36 @@
         $options['msg']=sprintf(_("Someone else saved the page while you edited %s"),$formatter->link_tag($formatter->page->urlname,"",$options['page']));
         $options['preview']=1; 
         $options['conflict']=1; 
  -      $options['datestamp']=$datestamp; 
         if ($button_merge) {
           $options['msg']=sprintf(_("%s is merged with latest contents."),$formatter->link_tag($formatter->page->urlname,"",$options['page']));
  -        $options['title']=sprintf(_("Preview of %s"),$options['page']);
  -        $options['conflict']=0; 
  +        $options['title']=sprintf(_("%s is merged successfully"),$options['page']);
           $merge=$formatter->get_merge($savetext);
  -        if (preg_grep('/^<<<<<<<$/',explode("\n",$merge)))
  -          $options['msg']=sprintf(_("Merging is not successful for %s. Please resolve conflicts manually."),$formatter->link_tag($formatter->page->urlname,"",$options['page']));
  +        if (preg_grep('/^<<<<<<<$/',explode("\n",$merge))) {
  +          $options['conflict']=2; 
  +          $options['title']=sprintf(_("Merge conflicts are detected for %s !"),$options['page']);
  +          $options['msg']=sprintf(_("Merge cancelled on %s."),$formatter->link_tag($formatter->page->urlname,"",$options['page']));
  +          $merge=preg_replace('/^>>>>>>>$/m',">>>>>>> "._("NEW"),$merge);
  +          $merge=preg_replace('/^<<<<<<<$/m',"<<<<<<< "._("OLD"),$merge);
  +      	  if ($button_merge>1) {
  +            unset($options['datestamp']);
  +            $options['conflict']=0;
  +            if ($button_merge==2) {
  +              $options['title']=sprintf(_("Get merge conflicts for %s"),$options['page']);
  +              $options['msg']=sprintf(_("Please resolve conflicts manually."));
  +              if ($merge) $savetext=$merge;
  +            } else {
  +              $options['title']=sprintf(_("Force merging for %s !"),$options['page']);
  +              $options['msg']=sprintf(_("Please be careful, you could damage useful information."));
  +            }
  +          }
  +	} else {
  +          $options['conflict']=0; 
  +      	  #$options['datestamp']=$datestamp;
  +          #unset($options['datestamp']); 
  +          if ($merge) $savetext=$merge;
  +        }
           $formatter->send_title("","",$options);
   
  -        $merge=preg_replace('/^=======$/m',">>>>>>>",$merge);
  -        if ($merge) $savetext=$merge;
  -        unset($options['datestamp']); 
         } else
           $formatter->send_title(_("Conflict error!"),"",$options);
         $options['savetext']=$savetext;
  @@ -1024,7 +1051,10 @@
   
         print $menu;
         print "<div id='wikiPreview'>\n";
  -      print $formatter->macro_repl('Diff','',array('text'=>$savetext));
  +      if ($options['conflict'] and $merge)
  +        print $formatter->macro_repl('Diff','',array('text'=>$merge));
  +      else
  +        print $formatter->macro_repl('Diff','',array('text'=>$savetext));
         print "</div>\n";
         $formatter->send_footer();
         return;
  
  
  


wkpark      2005/08/31 20:34:28

  Added:       plugin/filter abbr.php
  Log:
  a sample postfilter 'abbr' added.
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/filter/abbr.php
  
  Index: abbr.php
  ===================================================================
  <?php
  // Copyright 2005 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a abbr postfilter plugin for the MoniWiki
  //
  // $Id: abbr.php,v 1.1 2005/08/31 11:34:28 wkpark Exp $
  
  function postfilter_abbr($formatter,$value,$options) {
      global $DBInfo;
      $abbrs=array();
      if (!$DBInfo->local_abbr or !$DBInfo->hasPage($DBInfo->local_abbr))
          return $value;
  
      $p=$DBInfo->getPage($DBInfo->local_abbr);
      $raw=$p->get_raw_body();
      $lines=explode("\n",$raw);
      foreach ($lines as $line) {
          $line=trim($line);
          if ($line[0]=='#' or $line=='') continue;
          $word=strtok($line,' ');
          $abbrs[$word]=strtok('');
      }
      $dict=new SimpleDict($abbrs);
      $rule=implode('|',array_keys($abbrs));
      $chunks=preg_split('/(<[^>]*>)/',$value,-1, PREG_SPLIT_DELIM_CAPTURE);
      for ($i=0,$sz=count($chunks); $i<$sz; $i++) {
          if ($chunks[$i][0]=='<') continue;
          $dumm=preg_replace('/\b('.$rule.')\b/e','\$dict->get("\\1")',$chunks[$i]);
          #$dumm=preg_replace('/\b([A-Z][a-zA-Z]+)\b/e', '_abbr_repl(\$abbrs,"\\1")',$chunks[$i]);
          $chunks[$i]=$dumm;
      }
      //return preg_replace('/((<[^>]*>)|\b('.$rule.')\b)/e', "\$dict->get('\\1')",$value);
  
      return implode('',$chunks);
  }
  
  class SimpleDict {
      var $dicts=array();
      function SimpleDict($dicts) {
          $this->dicts=$dicts;
      }
      function get($word) {
          #if ($word[0]=='<') return $word;
          if (isset($this->dicts[$word]))
              return '<abbr title="'.$this->dicts[$word].'">'.$word.'</abbr>';
          return $word;
      }
  }
  
  #function _abbr_repl($abbrs,$word) {
  #    if ($abbrs[$word] != '')
  #        return '<abbr title="'.$abbrs[$word].'">'.$word.'</abbr>';
  #    return $word;
  #}
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2005/08/31 20:42:56

  Modified:    plugin   rcs.php
  Log:
  check $version_class
  
  Revision  Changes    Path
  1.4       +10 -2     moniwiki/plugin/rcs.php
  
  Index: rcs.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rcs.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- rcs.php	7 Jan 2004 01:46:38 -0000	1.3
  +++ rcs.php	31 Aug 2005 11:42:56 -0000	1.4
  @@ -1,14 +1,22 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a rcs action plugin for the MoniWiki
   //
  -// $Id: rcs.php,v 1.3 2004/01/07 01:46:38 wkpark Exp $
  +// $Id: rcs.php,v 1.4 2005/08/31 11:42:56 wkpark Exp $
   
   function do_post_rcs($formatter,$options) {
     global $DBInfo;
   
     $supported=array('-kkv','-kk');
  +  if ($DBInfo->version_class!='RCS') {
  +    $title = sprintf(_("%s does not support rcs options."), $DBInfo->version_class);
  +    $formatter->send_header("",$options);
  +    $formatter->send_title($title,"",$options);
  +    $formatter->send_footer("",$options);
  +
  +    return;
  +  }
     
     if (isset($options['param'])) {
       if ($DBInfo->hasPage($formatter->page->name) and in_array($options['param'],$supported)) {
  
  
  


wkpark      2005/08/31 20:45:44

  Modified:    .        wiki.php
  Log:
  Oops!! fix send_page() correctly.
  
  Revision  Changes    Path
  1.235     +3 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.234
  retrieving revision 1.235
  diff -u -r1.234 -r1.235
  --- wiki.php	31 Aug 2005 11:29:43 -0000	1.234
  +++ wiki.php	31 Aug 2005 11:45:44 -0000	1.235
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.234 2005/08/31 11:29:43 wkpark Exp $
  +// $Id: wiki.php,v 1.235 2005/08/31 11:45:44 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.234 $',1,-1);
  +$_revision = substr('$Revision: 1.235 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -2269,6 +2269,7 @@
           $pi=$this->get_instructions($body);
         } else {
           $pi=$this->get_instructions($dum);
  +        $body=$this->page->get_raw_body($options);
         }
   
         $fts=array();
  
  
  


wkpark      2005/08/31 23:31:35

  Modified:    .        wiki.php wikilib.php
  Log:
  support quote,double quote in the wikiname and more correct fix against XSS Vulnerability.
  
  Revision  Changes    Path
  1.236     +8 -7      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.235
  retrieving revision 1.236
  diff -u -r1.235 -r1.236
  --- wiki.php	31 Aug 2005 11:45:44 -0000	1.235
  +++ wiki.php	31 Aug 2005 14:31:35 -0000	1.236
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.235 2005/08/31 11:45:44 wkpark Exp $
  +// $Id: wiki.php,v 1.236 2005/08/31 14:31:35 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.235 $',1,-1);
  +$_revision = substr('$Revision: 1.236 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -693,19 +693,20 @@
       #$name=preg_replace("/%([a-f0-9]{2})/ie","'_'.strtolower('\\1')",$name);
       #$name=preg_replace(".","_2e",$name);
   
  -    #$name=str_replace("\\","",$pagename);
  -    #$name=stripslashes($pagename);
  -    $name=preg_replace("/([^a-z0-9]{1})/ie","'_'.strtolower(dechex(ord('\\1')))",$pagename);
  +    $name=preg_replace("/([^a-z0-9]{1})/ie","'_'.strtolower(dechex(ord(substr('\\1',-1))))",$pagename);
  +    #$name=preg_replace("/([^a-z0-9]{1})/ie","'_'.strtolower(dechex(ord('\\1')))",$pagename);
       return $name;
     }
   
     function getPageKey($pagename) {
  -    $name=preg_replace("/([^a-z0-9]{1})/ie","'_'.strtolower(dechex(ord('\\1')))",$pagename);
  +    #$name=preg_replace("/([^a-z0-9]{1})/ie","'_'.strtolower(dechex(ord('\\1')))",$pagename);
  +    $name=preg_replace("/([^a-z0-9]{1})/ie","'_'.strtolower(dechex(ord(substr('\\1',-1))))",$pagename);
       return $this->text_dir . '/' . $name;
     }
   
     function pageToKeyname($pagename) {
  -    return preg_replace("/([^a-z0-9]{1})/ie","'_'.strtolower(dechex(ord('\\1')))",$pagename);
  +    return preg_replace("/([^a-z0-9]{1})/ie","'_'.strtolower(dechex(ord(substr('\\1',-1))))",$pagename);
  +    #return preg_replace("/([^a-z0-9]{1})/ie","'_'.strtolower(dechex(ord('\\1')))",$pagename);
     }
   
     function hasPage($pagename) {
  
  
  
  1.161     +16 -16    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.160
  retrieving revision 1.161
  diff -u -r1.160 -r1.161
  --- wikilib.php	31 Aug 2005 11:31:12 -0000	1.160
  +++ wikilib.php	31 Aug 2005 14:31:35 -0000	1.161
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.160 2005/08/31 11:31:12 wkpark Exp $
  +// $Id: wikilib.php,v 1.161 2005/08/31 14:31:35 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -36,7 +36,7 @@
   }
   
   function _urlencode($url) {
  -  return preg_replace("/([^a-z0-9\/\?\.\+~#&:;=%\-_]{1})/ie","'%'.strtoupper(dechex(ord('\\1')))",$url);
  +  return preg_replace("/([^a-z0-9\/\?\.\+~#&:;=%\-_]{1})/ie","'%'.strtoupper(dechex(ord(substr('\\1',-1))))",$url);
   }
   
   function _stripslashes($str) {
  @@ -792,10 +792,9 @@
     
     $page = $DBInfo->getPage($options['page']);
   
  -  #print $options['page'];
     if ($options['name']) $options['name']=urldecode($options['name']);
     $pagename= $formatter->page->urlname;
  -  if (_stripslashes($options['name']) == $options['page']) {
  +  if ($options['name'] == $options['page']) {
       $DBInfo->deletePage($page,$options);
       $title = sprintf(_("\"%s\" is deleted !"), $page->name);
       $formatter->send_header("",$options);
  @@ -803,6 +802,7 @@
       $formatter->send_footer('',$options);
       return;
     } else if ($options['name']) {
  +    #print $options['name'];
       $options['msg'] = _("Please delete this file manually.");
     }
     $title = sprintf(_("Delete \"%s\" ?"), $page->name);
  @@ -1011,28 +1011,28 @@
       $orig=md5($body);
       # check datestamp
       if ($formatter->page->mtime() > $datestamp) {
  -      $options['msg']=sprintf(_("Someone else saved the page while you edited %s"),$formatter->link_tag($formatter->page->urlname,"",$options['page']));
  +      $options['msg']=sprintf(_("Someone else saved the page while you edited %s"),$formatter->link_tag($formatter->page->urlname,"",htmlspecialchars($options['page'])));
         $options['preview']=1; 
         $options['conflict']=1; 
         if ($button_merge) {
  -        $options['msg']=sprintf(_("%s is merged with latest contents."),$formatter->link_tag($formatter->page->urlname,"",$options['page']));
  -        $options['title']=sprintf(_("%s is merged successfully"),$options['page']);
  +        $options['msg']=sprintf(_("%s is merged with latest contents."),$formatter->link_tag($formatter->page->urlname,"",htmlspecialchars($options['page'])));
  +        $options['title']=sprintf(_("%s is merged successfully"),htmlspecialchars($options['page']));
           $merge=$formatter->get_merge($savetext);
           if (preg_grep('/^<<<<<<<$/',explode("\n",$merge))) {
             $options['conflict']=2; 
  -          $options['title']=sprintf(_("Merge conflicts are detected for %s !"),$options['page']);
  -          $options['msg']=sprintf(_("Merge cancelled on %s."),$formatter->link_tag($formatter->page->urlname,"",$options['page']));
  +          $options['title']=sprintf(_("Merge conflicts are detected for %s !"),htmlspecialchars($options['page']));
  +          $options['msg']=sprintf(_("Merge cancelled on %s."),$formatter->link_tag($formatter->page->urlname,"",htmlspecialchars($options['page'])));
             $merge=preg_replace('/^>>>>>>>$/m',">>>>>>> "._("NEW"),$merge);
             $merge=preg_replace('/^<<<<<<<$/m',"<<<<<<< "._("OLD"),$merge);
         	  if ($button_merge>1) {
               unset($options['datestamp']);
               $options['conflict']=0;
               if ($button_merge==2) {
  -              $options['title']=sprintf(_("Get merge conflicts for %s"),$options['page']);
  +              $options['title']=sprintf(_("Get merge conflicts for %s"),htmlspecialchars($options['page']));
                 $options['msg']=sprintf(_("Please resolve conflicts manually."));
                 if ($merge) $savetext=$merge;
               } else {
  -              $options['title']=sprintf(_("Force merging for %s !"),$options['page']);
  +              $options['title']=sprintf(_("Force merging for %s !"),htmlspecialchars($options['page']));
                 $options['msg']=sprintf(_("Please be careful, you could damage useful information."));
               }
             }
  @@ -1062,7 +1062,7 @@
     }
   
     if (!$button_preview && $orig == $new) {
  -    $options['msg']=sprintf(_("Go back or return to %s"),$formatter->link_tag($formatter->page->urlname,"",$options['page']));
  +    $options['msg']=sprintf(_("Go back or return to %s"),$formatter->link_tag($formatter->page->urlname,"",htmlspecialchars($options['page'])));
       $formatter->send_title(_("No difference found"),"",$options);
       $formatter->send_footer();
       return;
  @@ -1082,7 +1082,7 @@
     $formatter->page->set_raw_body($savetext);
   
     if ($button_preview) {
  -    $options['title']=sprintf(_("Preview of %s"),$options['page']);
  +    $options['title']=sprintf(_("Preview of %s"),htmlspecialchars($options['page']));
       $formatter->send_title("","",$options);
        
       $options['preview']=1; 
  @@ -1131,9 +1131,9 @@
       }
         
       if ($ret == -1)
  -      $options['msg'].=sprintf(_("%s is not editable"),$formatter->link_tag($formatter->page->urlname,"",$options['page']));
  +      $options['msg'].=sprintf(_("%s is not editable"),$formatter->link_tag($formatter->page->urlname,"",htmlspecialchars($options['page'])));
       else
  -      $options['msg'].=sprintf(_("%s is saved"),$formatter->link_tag($formatter->page->urlname,"?action=show",$options['page']));
  +      $options['msg'].=sprintf(_("%s is saved"),$formatter->link_tag($formatter->page->urlname,"?action=show",htmlspecialchars($options['page'])));
       $formatter->send_title("","",$options);
       $opt['pagelinks']=1;
       # re-generates pagelinks
  @@ -1701,7 +1701,7 @@
   
       #$out.= '<li>' . $formatter->word_repl('"'.$page.'"',$title,'',0,0);
       $urlname=_urlencode($page);
  -    $out.= '<li>' . $formatter->link_tag($urlname,'',$title);
  +    $out.= '<li>' . $formatter->link_tag($urlname,'',htmlspecialchars($title));
       $keyname=$DBInfo->pageToKeyname(urldecode($page));
       if (is_dir($DBInfo->upload_dir."/$keyname"))
          $out.=' '.$formatter->link_tag($urlname,"?action=uploadedfiles",
  
  
  


wkpark      2005/09/01 08:06:37

  Modified:    plugin   RecentChanges.php
  Log:
  fix the perma location and add a span tag
  
  Revision  Changes    Path
  1.14      +6 -6      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- RecentChanges.php	13 Aug 2005 16:57:46 -0000	1.13
  +++ RecentChanges.php	31 Aug 2005 23:06:37 -0000	1.14
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.13 2005/08/13 16:57:46 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.14 2005/08/31 23:06:37 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     $options['trail']='';
  @@ -164,15 +164,15 @@
         else
           $rcdate=date($date_fmt,$ed_time);
   
  -      $out.=sprintf("%s<font class='rc-date' size='+1'>%s </font>$perma<font class='rc-bookmark' size='-1'>",
  +      $out.=sprintf("%s<span class='rc-date'><font class='rc-date' size='+1'>%s ",
               $br, $rcdate);
         if (!$nobookmark)
  -        $out.='['.$formatter->link_tag($formatter->page->urlname,
  -                                 "?action=bookmark&amp;time=$ed_time",
  -                                 _("set bookmark"))."]</font><br />\n";
  +        $out.="<font class='rc-bookmark' size='-1'>[".
  +          $formatter->link_tag($formatter->page->urlname,"?action=bookmark&amp;time=$ed_time",
  +          _("set bookmark"))."]</font>\n";
         $ratchet_day = $day;
         $br="<br />";
  -      $out.=$bra;
  +      $out.=$perma.'</font></span><br />'.$bra;
         $cat0=$cat;
       } else
         $day=$formatter->link_to("?action=bookmark&amp;time=$ed_time",$day);
  
  
  


wkpark      2005/09/01 08:51:48

  Modified:    .        wiki.php
  Log:
  fix to accept accept 'attachment:Page:icon.png' syntax in the InterIconMap
  
  Revision  Changes    Path
  1.237     +32 -13    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.236
  retrieving revision 1.237
  diff -u -r1.236 -r1.237
  --- wiki.php	31 Aug 2005 14:31:35 -0000	1.236
  +++ wiki.php	31 Aug 2005 23:51:48 -0000	1.237
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.236 2005/08/31 14:31:35 wkpark Exp $
  +// $Id: wiki.php,v 1.237 2005/08/31 23:51:48 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.236 $',1,-1);
  +$_revision = substr('$Revision: 1.237 $',1,-1);
   $_release = '1.1';
   
   #ob_start("ob_gzhandler");
  @@ -507,6 +507,7 @@
       $this->purple_icon='#';
       $this->use_purple=0;
       $this->version_class='RCS';
  +    $this->title_rule='((?<=[a-z0-9]|[B-Z]{2})([A-Z][a-z]))';
   
       # set user-specified configuration
       if ($config) {
  @@ -657,11 +658,15 @@
         if (!$line || $line[0]=="#" || $line[0]==" ") continue;
         if (preg_match("/^[A-Z]+/",$line)) {
           $wiki=strtok($line,' ');$url=strtok(' ');
  +        $dumm=trim(strtok(''));
  +        if (preg_match('/^(http|ftp):/',$dumm,$match)) {
  +          $icon=strtok($dumm,' ');
  +          $sx=strtok('x');$sy=strtok('');
  +          $sx=$sx ? (int)$sx:16; $sy=$sy ? (int)$sy:16;
  +          $this->intericon[$wiki]=array($sx,$sy,trim($icon));
  +        }
           $this->interwiki[$wiki]=trim($url);
           $this->interwikirule.="$wiki|";
  -        #$dum=split("[[:space:]]",$line);
  -        #$this->interwiki[$dum[0]]=trim($dum[1]);
  -        #$this->interwikirule.="$dum[0]|";
         }
       }
       $this->interwikirule.="Self";
  @@ -677,8 +682,9 @@
         if (!$line || $line[0]=="#" || $line[0]==" ") continue;
         if (preg_match("/^[A-Z]+/",$line)) {
           $wiki=strtok($line,' ');$icon=strtok(' ');
  +        if (!preg_match('/^(http|ftp|attachment):/',$icon,$match)) continue;
           $sx=strtok('x');$sy=strtok('');
  -        $sx=$sx ? $sx:16; $sy=$sy ? $sy:16;
  +        $sx=$sx ? (int)$sx:16; $sy=$sy ? (int)$sy:16;
           $this->intericon[$wiki]=array($sx,$sy,trim($icon));
         }
       }
  @@ -1128,6 +1134,7 @@
   
     function update($pagename,$val,$mtime="") {
       $key=$this->getKey($pagename);
  +    if (!is_writable($key)) return false;
       if ($mtime and ($mtime <= $this->mtime($key))) return false;
   
       if (is_array($val))
  @@ -1406,6 +1413,17 @@
       if ($DBInfo->external_target)
         $this->external_target='target="'.$DBInfo->external_target.'"';
   
  +    # set intericons
  +    if ($DBInfo->intericon) {
  +      foreach ($DBInfo->intericon as $wiki=>$val) {
  +        $icon=&$DBInfo->intericon[$wiki][2];
  +        if ($icon[0] == 'a') {
  +          $url=$this->macro_repl('Attachment',substr($icon,11),1);
  +          $DBInfo->intericon[$wiki][2]=qualifiedUrl($DBInfo->url_prefix.'/'.$url);
  +        }
  +      }
  +    }
  +
       #$this->baserule=array("/<([^\s][^>]*)>/","/`([^`]*)`/",
       $this->baserule=array("/<([^\s<>])/","/`([^`' ]+)'/","/(?<!`)`([^`]*)`/",
                        "/'''([^']*)'''/","/(?<!')'''(.*)'''(?!')/",
  @@ -1766,7 +1784,7 @@
       # invalid InterWiki name
       if (!$url) {
         $dum0=preg_replace("/(".$this->wordrule.")/e","\$this->link_repl('\\1')",$dum[0]);
  -      return $dum0.":".$this->word_repl($dum[1],$text);
  +      return $dum0.':'.($dum[1]?$this->word_repl($dum[1],$text):'');
       }
   
       if ($page=='/') $page='';
  @@ -1863,10 +1881,11 @@
           $text=str_replace('&','&amp;',$text);
           $word="<img border='0' alt='$word' src='$text' /></a>";
         } else $word=$text;
  -    } else 
  +    } else {
         $word=$text=$page_text ? $page_text:$word;
  -    #print $text;
  -    $word=htmlspecialchars($word);
  +      #print $text;
  +      $word=htmlspecialchars($word);
  +    }
   
       $url=_urlencode($page);
       $url_only=strtok($url,'#?'); # for [WikiName#tag] [wiki:WikiName#tag Tag]
  @@ -2132,7 +2151,7 @@
   
     function link_to($query_string="",$text="",$attr="") {
       if (!$text)
  -      $text=$this->page->name;
  +      $text=htmlspecialchars($this->page->name);
       return $this->link_tag($this->page->urlname,$query_string,$text,$attr);
     }
   
  @@ -2304,7 +2323,7 @@
           }
         } else if ($twins) {
           if ($lines) $lines[]="----";
  -        $twins[0]=_("See TwinPages: ").$twins[0];
  +        $twins[0]=_("See [TwinPages]: ").$twins[0];
           $lines=array_merge($lines,$twins);
         }
       }
  @@ -3489,7 +3508,7 @@
         if ($twins) {
           $formatter->send_title($page->name,"",$options);
           $twins=join("\n",$twins);
  -        $formatter->send_page(_("See TwinPages: ").$twins);
  +        $formatter->send_page(_("See [TwinPages]: ").$twins);
           echo "<br />".
             $formatter->link_to("?action=edit",$formatter->icon['create']._("Create this page"));
         } else {
  
  
  


wkpark      2005/09/01 08:53:46

  Modified:    .        wikilib.php
  Log:
  add $title_rule option to customize the method of speratation of title
  
  Revision  Changes    Path
  1.162     +5 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.161
  retrieving revision 1.162
  diff -u -r1.161 -r1.162
  --- wikilib.php	31 Aug 2005 14:31:35 -0000	1.161
  +++ wikilib.php	31 Aug 2005 23:53:46 -0000	1.162
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.161 2005/08/31 14:31:35 wkpark Exp $
  +// $Id: wikilib.php,v 1.162 2005/08/31 23:53:46 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -159,12 +159,14 @@
       $title=$page;
   
     #return preg_replace("/((?<=[a-z0-9]|[B-Z]{2}|A)([A-Z][a-z]|A))/"," \\1",$title);
  +  if ($DBInfo->title_rule)
  +    return preg_replace('/'.$DBInfo->title_rule.'/'," \\1",$title);
     return preg_replace("/((?<=[a-z0-9]|[B-Z]{2})([A-Z][a-z]))/"," \\1",$title);
   }
   
   function getTicket($seed,$extra='',$size=0,$flag=0) {
     global $DBInfo;
  -  # make a ticket based on the variables in the config.php
  +  # make the site specific ticket based on the variables in the config.php
     $configs=getConfig("config.php");
     foreach ($configs as $config) {
       if (is_array($config)) $siteticket.=md5(base64_encode(serialize($config)));
  @@ -2045,7 +2047,7 @@
   #  $highlighted=preg_replace("/<\/?code>/","",$highlighted);
   #  $highlighted="<pre style='color:white;background-color:black;'>".
   #               $highlighted."\n</pre>";
  -  return $highlighted;
  +  return '<div class="wikiSyntax">'.$highlighted.'</div>';
   }
   
   ?>
  
  
  


wkpark      2005/09/01 08:55:20

  Modified:    plugin   TwinPages.php
  Log:
  fix "TwinPage:" to "[TwinPage]:"
  
  Revision  Changes    Path
  1.2       +2 -2      moniwiki/plugin/TwinPages.php
  
  Index: TwinPages.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/TwinPages.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- TwinPages.php	10 Aug 2003 08:20:36 -0000	1.1
  +++ TwinPages.php	31 Aug 2005 23:55:20 -0000	1.2
  @@ -4,7 +4,7 @@
   // a TwinPages action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: TwinPages.php,v 1.1 2003/08/10 08:20:36 wkpark Exp $
  +// $Id: TwinPages.php,v 1.2 2005/08/31 23:55:20 wkpark Exp $
   
   function do_twinpages($formatter,$options) {
     global $DBInfo;
  @@ -15,7 +15,7 @@
     $twins=$DBInfo->metadb->getTwinPages($options['value'],1);
     if ($twins) {
       $twins=join("\n",$twins);
  -    $formatter->send_page(_("See TwinPages: ").$twins);
  +    $formatter->send_page(_("See [TwinPages]: ").$twins);
     } else 
       $formatter->send_page(_("No TwinPages found."));
     $formatter->send_footer("",$options);
  
  
  


wkpark      2005/09/01 12:45:23

  Modified:    plugin   fixmoin.php
  Log:
  fixed fixmoin action with nonexist valid name
  
  Revision  Changes    Path
  1.3       +7 -1      moniwiki/plugin/fixmoin.php
  
  Index: fixmoin.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/fixmoin.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- fixmoin.php	25 Aug 2005 05:27:51 -0000	1.2
  +++ fixmoin.php	1 Sep 2005 03:45:23 -0000	1.3
  @@ -5,7 +5,7 @@
   //
   // Usage: set $auto_search='FixMoin'; in the config.php
   //
  -// $Id: fixmoin.php,v 1.2 2005/08/25 05:27:51 wkpark Exp $
  +// $Id: fixmoin.php,v 1.3 2005/09/01 03:45:23 wkpark Exp $
   
   function do_FixMoin($formatter,$options) {
       global $DBInfo;
  @@ -19,6 +19,12 @@
               if ($new) $npage=$new;
           }
       }
  +    if (!$npage or !$DBInfo->hasPage($npage)) {
  +        $options['redirect']=1;
  +        $options['value']=$formatter->page->name;
  +        do_goto($formatter,$options);
  +        return true;
  +    }
       $options['redirect']=1;
       $options['value']=$npage;
       do_goto($formatter,$options);
  
  
  


wkpark      2005/09/01 14:06:25

  Modified:    .        wiki.php wikilib.php
  Log:
  merge set_intermap() to the InterWiki() macro
  
  Revision  Changes    Path
  1.238     +7 -63     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.237
  retrieving revision 1.238
  diff -u -r1.237 -r1.238
  --- wiki.php	31 Aug 2005 23:51:48 -0000	1.237
  +++ wiki.php	1 Sep 2005 05:06:24 -0000	1.238
  @@ -1,5 +1,5 @@
   <?php
  -// Copyright 2003-2004 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
  +// Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING
   //
   // many codes are imported from the MoinMoin
  @@ -11,10 +11,10 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.237 2005/08/31 23:51:48 wkpark Exp $
  +// $Id: wiki.php,v 1.238 2005/09/01 05:06:24 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.237 $',1,-1);
  -$_release = '1.1';
  +$_revision = substr('$Revision: 1.238 $',1,-1);
  +$_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
   
  @@ -609,7 +609,8 @@
       if ($this->timezone)
         putenv('TZ='.$this->timezone);
   
  -    $this->set_intermap();
  +    $this->interwiki=null;
  +
       if ($this->shared_metadb)
         $this->metadb=new MetaDB_dba($this->shared_metadb,$this->dba_type);
       if (!$this->metadb->metadb)
  @@ -643,53 +644,6 @@
       $this->counter->close();
     }
   
  -  function set_intermap() {
  -    # intitialize interwiki map
  -    $map=file($this->intermap);
  -    if ($this->sistermap and file_exists($this->sistermap))
  -      $map=array_merge($map,file($this->sistermap));
  -
  -    # read shared intermap
  -    if (file_exists($this->shared_intermap))
  -      $map=array_merge($map,file($this->shared_intermap));
  -
  -    for ($i=0;$i<sizeof($map);$i++) {
  -      $line=rtrim($map[$i]);
  -      if (!$line || $line[0]=="#" || $line[0]==" ") continue;
  -      if (preg_match("/^[A-Z]+/",$line)) {
  -        $wiki=strtok($line,' ');$url=strtok(' ');
  -        $dumm=trim(strtok(''));
  -        if (preg_match('/^(http|ftp):/',$dumm,$match)) {
  -          $icon=strtok($dumm,' ');
  -          $sx=strtok('x');$sy=strtok('');
  -          $sx=$sx ? (int)$sx:16; $sy=$sy ? (int)$sy:16;
  -          $this->intericon[$wiki]=array($sx,$sy,trim($icon));
  -        }
  -        $this->interwiki[$wiki]=trim($url);
  -        $this->interwikirule.="$wiki|";
  -      }
  -    }
  -    $this->interwikirule.="Self";
  -    $this->interwiki['Self']=get_scriptname().$this->query_prefix;
  -
  -    # read shared intericons
  -    $map=array();
  -    if (file_exists($this->shared_intericon))
  -      $map=array_merge($map,file($this->shared_intericon));
  -
  -    for ($i=0;$i<sizeof($map);$i++) {
  -      $line=rtrim($map[$i]);
  -      if (!$line || $line[0]=="#" || $line[0]==" ") continue;
  -      if (preg_match("/^[A-Z]+/",$line)) {
  -        $wiki=strtok($line,' ');$icon=strtok(' ');
  -        if (!preg_match('/^(http|ftp|attachment):/',$icon,$match)) continue;
  -        $sx=strtok('x');$sy=strtok('');
  -        $sx=$sx ? (int)$sx:16; $sy=$sy ? (int)$sy:16;
  -        $this->intericon[$wiki]=array($sx,$sy,trim($icon));
  -      }
  -    }
  -  }
  -
     function _getPageKey($pagename) {
       # normalize a pagename to uniq key
   
  @@ -1413,17 +1367,6 @@
       if ($DBInfo->external_target)
         $this->external_target='target="'.$DBInfo->external_target.'"';
   
  -    # set intericons
  -    if ($DBInfo->intericon) {
  -      foreach ($DBInfo->intericon as $wiki=>$val) {
  -        $icon=&$DBInfo->intericon[$wiki][2];
  -        if ($icon[0] == 'a') {
  -          $url=$this->macro_repl('Attachment',substr($icon,11),1);
  -          $DBInfo->intericon[$wiki][2]=qualifiedUrl($DBInfo->url_prefix.'/'.$url);
  -        }
  -      }
  -    }
  -
       #$this->baserule=array("/<([^\s][^>]*)>/","/`([^`]*)`/",
       $this->baserule=array("/<([^\s<>])/","/`([^`' ]+)'/","/(?<!`)`([^`]*)`/",
                        "/'''([^']*)'''/","/(?<!')'''(.*)'''(?!')/",
  @@ -3462,6 +3405,7 @@
     $page = $DBInfo->getPage($pagename);
   
     $formatter = new Formatter($page,$options);
  +  $formatter->macro_repl('InterWiki','',array('init'=>1));
     $formatter->refresh=$refresh;
   
     // check black list
  
  
  
  1.163     +66 -5     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.162
  retrieving revision 1.163
  diff -u -r1.162 -r1.163
  --- wikilib.php	31 Aug 2005 23:53:46 -0000	1.162
  +++ wikilib.php	1 Sep 2005 05:06:24 -0000	1.163
  @@ -1,5 +1,5 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org> all rights reserved.
  +// Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING
   //
   // many codes are imported from the MoinMoin
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.162 2005/08/31 23:53:46 wkpark Exp $
  +// $Id: wikilib.php,v 1.163 2005/09/01 05:06:24 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1482,9 +1482,69 @@
   EOF;
   }
   
  -function macro_InterWiki($formatter="") {
  +function macro_InterWiki($formatter,$value,$options=array()) {
     global $DBInfo;
   
  +  if (!isset($DBInfo->interwiki) or $options['init']) {
  +    $interwiki=array();
  +    # intitialize interwiki map
  +    $map=file($DBInfo->intermap);
  +    if ($DBInfo->sistermap and file_exists($DBInfo->sistermap))
  +      $map=array_merge($map,file($DBInfo->sistermap));
  +
  +    # read shared intermap
  +    if (file_exists($DBInfo->shared_intermap))
  +      $map=array_merge($map,file($DBInfo->shared_intermap));
  +
  +    for ($i=0;$i<sizeof($map);$i++) {
  +      $line=rtrim($map[$i]);
  +      if (!$line || $line[0]=="#" || $line[0]==" ") continue;
  +      if (preg_match("/^[A-Z]+/",$line)) {
  +        $wiki=strtok($line,' ');$url=strtok(' ');
  +        $dumm=trim(strtok(''));
  +        if (preg_match('/^(http|ftp|attachment):/',$dumm,$match)) {
  +          $icon=strtok($dumm,' ');
  +          if ($icon[0]=='a') {
  +            $url=$formatter->macro_repl('Attachment',substr($icon,11),1);
  +            $icon=qualifiedUrl($DBInfo->url_prefix.'/'.$url);
  +          }
  +          $sx=strtok('x');$sy=strtok('');
  +          $sx=$sx ? (int)$sx:16; $sy=$sy ? (int)$sy:16;
  +          $intericon[$wiki]=array($sx,$sy,trim($icon));
  +        }
  +        $interwiki[$wiki]=trim($url);
  +        $interwikirule.="$wiki|";
  +      }
  +    }
  +    $interwikirule.="Self";
  +    $interwiki['Self']=get_scriptname().$DBInfo->query_prefix;
  +
  +    # read shared intericons
  +    $map=array();
  +    if (file_exists($DBInfo->shared_intericon))
  +      $map=array_merge($map,file($DBInfo->shared_intericon));
  +
  +    for ($i=0;$i<sizeof($map);$i++) {
  +      $line=rtrim($map[$i]);
  +      if (!$line || $line[0]=="#" || $line[0]==" ") continue;
  +      if (preg_match("/^[A-Z]+/",$line)) {
  +        $wiki=strtok($line,' ');$icon=trim(strtok(' '));
  +        if (!preg_match('/^(http|ftp|attachment):/',$icon,$match)) continue;
  +        if ($icon[0]=='a') {
  +          $url=$formatter->macro_repl('Attachment',substr($icon,11),1);
  +          $icon=qualifiedUrl($DBInfo->url_prefix.'/'.$url);
  +        }
  +        $sx=strtok('x');$sy=strtok('');
  +        $sx=$sx ? (int)$sx:16; $sy=$sy ? (int)$sy:16;
  +        $intericon[$wiki]=array($sx,$sy,trim($icon));
  +      }
  +    }
  +    $DBInfo->interwiki=$interwiki;
  +    $DBInfo->interwikirule=$interwikirule;
  +    $DBInfo->intericon=$intericon;
  +  }
  +  if ($options['init']) return;
  +
     $out="<table border='0' cellspacing='2' cellpadding='0'>";
     foreach (array_keys($DBInfo->interwiki) as $wiki) {
       $href=$DBInfo->interwiki[$wiki];
  @@ -1501,8 +1561,9 @@
         $sx=$DBInfo->intericon[$wiki][0];
         $sy=$DBInfo->intericon[$wiki][1];
       }
  -    $out.="<tr><td><tt><img src='$icon' width='$sx' height='$sy' align='middle' alt='$wiki:' /><a href='$url'>$wiki</a></tt></td><td><tt>";
  -    $out.="<a href='$href'>$href</a></tt></td></tr>\n";
  +    $out.="<tr><td><tt><img src='$icon' width='$sx' height='$sy' ".
  +      "align='middle' alt='$wiki:' /><a href='$url'>$wiki</a></tt></td>";
  +    $out.="<td><tt><a href='$href'>$href</a></tt></td></tr>\n";
     }
     $out.="</table>\n";
     return $out;
  
  
  


wkpark      2005/09/01 15:35:37

  Modified:    plugin   Info.php
  Log:
  fix call by reference problem
  
  Revision  Changes    Path
  1.6       +2 -2      moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Info.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Info.php	29 Aug 2005 13:33:32 -0000	1.5
  +++ Info.php	1 Sep 2005 06:35:37 -0000	1.6
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Info plugin for the MoniWiki
   //
  -// $Id: Info.php,v 1.5 2005/08/29 13:33:32 wkpark Exp $
  +// $Id: Info.php,v 1.6 2005/09/01 06:35:37 wkpark Exp $
   
   function _parse_rlog($formatter,$log) {
     global $DBInfo;
  @@ -111,7 +111,7 @@
        }
     }
     $out.="<tr><td colspan='6' align='right'><input type='checkbox' name='show' checked='checked' />show only ";
  -  if ($DBInfo->security->is_protected("rcspurge",array())) {
  +  if ($DBInfo->security->is_protected("rcspurge",$options)) {
       $out.="<input type='password' name='passwd'>";
     }
     $out.="<input type='submit' name='rcspurge' value='purge'></td></tr>";
  
  
  


wkpark      2005/09/01 16:27:53

  Modified:    plugin   Comment.php
  Log:
  adopt the spam_filter
  
  Revision  Changes    Path
  1.13      +23 -2     moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- Comment.php	8 Aug 2005 06:13:50 -0000	1.12
  +++ Comment.php	1 Sep 2005 07:27:52 -0000	1.13
  @@ -6,7 +6,7 @@
   // Usage: [[Comment]], ?action=comment
   //
   //
  -// $Id: Comment.php,v 1.12 2005/08/08 06:13:50 wkpark Exp $
  +// $Id: Comment.php,v 1.13 2005/09/01 07:27:52 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $HTTP_USER_AGENT;
  @@ -65,6 +65,13 @@
     global $HTTP_USER_AGENT;
   
     if (!$DBInfo->security->writable($options)) {
  +    $formatter->preview=1;
  +    $options['title']=_("Page is not writable");
  +    do_invalid($formatter,$options);
  +    return;
  +  } else if (!$DBInfo->hasPage($options['page'])) {
  +    $options['err']=_("You are not allowed to add a comment.");
  +    $options['title']=_("Page does not exists");
       do_invalid($formatter,$options);
       return;
     }
  @@ -78,6 +85,8 @@
   
     $url=$formatter->link_url($formatter->page->urlname);
   
  +  $button_preview=$options['button_preview'];
  +
     if ($options['savetext']) {
       $savetext=_stripslashes($options['savetext']);
       $savetext=str_replace("\r","",$savetext);
  @@ -85,7 +94,18 @@
       #$savetext=str_replace("<","&lt;",$savetext);
     }
   
  -  if ($options['button_preview'] && $options['savetext']) {
  +  if ($savetext and !$button_preview and $DBInfo->spam_filter) {
  +    $text=$savetext;
  +    $fts=preg_split('/(\||,)/',$DBInfo->spam_filter);
  +    foreach ($fts as $ft) {
  +      $text=$formatter->filter_repl($ft,$text,$options);
  +    }
  +    if ($text != $savetext) {
  +      $button_preview=1;
  +      $options['msg'] = _("Sorry, can not save page because some messages are blocked in this wiki.");
  +    }
  +  }
  +  if ($button_preview && $options['savetext']) {
       $formatter->send_header("",$options);
       $formatter->send_title(_("Preview comment"),"",$options);
       $formatter->send_page($savetext."\n----");
  @@ -131,6 +151,7 @@
       $body= preg_replace("/(\[\[Comment(\([^\)]*\))?\]\])/",$savetext."\\1",$body,1);
     else
       $body.=$savetext;
  +
     $formatter->page->write($body);
     $DBInfo->savePage($formatter->page,"Comment added",$options);
     $options['msg']=sprintf(_("%s is commented successfully"),$formatter->link_tag($formatter->page->urlname,"?action=show",$options['page']));
  
  
  


wkpark      2005/09/02 09:38:12

  Modified:    plugin   Keywords.php
  Log:
  more enhancement: adopt CloudView like del.icio.us/technoriti/flickr
  add alpha,freq/limit/url options
  
  Revision  Changes    Path
  1.4       +168 -42   moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Keywords.php	30 Aug 2005 16:26:09 -0000	1.3
  +++ Keywords.php	2 Sep 2005 00:38:11 -0000	1.4
  @@ -3,48 +3,96 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a 'Keywords' plugin for the MoniWiki
   //
  -// $Id: Keywords.php,v 1.3 2005/08/30 16:26:09 wkpark Exp $
  +// $Id: Keywords.php,v 1.4 2005/09/02 00:38:11 wkpark Exp $
   
   function macro_Keywords($formatter,$value,$options='') {
       global $DBInfo;
  +define(MAX_FONT_SZ,24);
  +define(MIN_FONT_SZ,10);
  +
  +    $limit=$options['limit'] ? $options['limit']:40;
  +    $opts=explode(',',$value);
  +    foreach ($opts as $opt) {
  +        $opt=trim($opt);
  +        if ($opt == 'delicious' or $opt == 'del.icio.us')
  +            $tag_link='http://del.icio.us/tag/$TAG';
  +        else if ($opt == 'technorati')
  +            $tag_link='http://www.technorati.com/tag/$TAG';
  +        else if ($opt == 'flickr')
  +            $tag_link='http://www.flickr.com/photos/tags/$TAG';
  +        else if (($p=strpos($opt,'='))!==false) {
  +            $k=substr($opt,0,$p);
  +            $v=substr($opt,$p+1);
  +            if ($k=='limit') $limit=$v;
  +            else if ($k=='sort' and in_array($v,array('freq','alpha')))
  +                $sort=$v;
  +            else if ($k=='type' and in_array($v,array('full','title')))
  +                $search_type=$v;
  +            else if ($k=='url') {
  +                $tag_link=$v;
  +                if (preg_match('/\$TAG/',$tag_link)===false) $tag_link.='$TAG';
  +            }
  +            // else ignore
  +        } else {
  +            $page=$opt;
  +        }
  +    }
   
       $common= <<<EOF
   i am an a b c d e f g h i j k l m n o p q r s t u v w x y z
   0 1 2 3 4 5 6 7 8 9
  -if on in by it at up down over into for from to of he his she her back
  -is are be or nor also and each all
  -too any with here
  -so such since because but however ever
  -it its the this that what where how when
  +if on in by it at up as down over into for from to of he his him she her back
  +is are be being been or no not nor and all through under until
  +these there the top
  +with here only has had both did faw few little most almost much off on out
  +also each were was too any very more within then
  +across before behind beneath beyond after again against around among
  +so such since because but yet however ever during
  +it its the this that what where how when who whoever which their them
   you your will shall may might we us our
  -get got
  +get got would could have
  +can't won't didn't don't
  +aiff arj arts asp au avi bin biz css cgi com doc edu exe firm gif gz gzip
  +htm html info jpeg jpg js jsp mp3 mpeg mpg mov
  +net nom org pdf php pl qt ra ram rec shop sit tar tgz tiff txt wav web zip
  +one two three four five six seven eight nine ten eleven twelve
   EOF;
  -    if (!$value) $value=$formatter->page->name;
  -    $page=$DBInfo->getPage($value);
  +    if (!$pagename) $pagename=$formatter->page->name;
  +    $page=$DBInfo->getPage($pagename);
       if (!$page->exists()) return '';
       $raw=$page->get_raw_body();
   
       $raw=preg_replace("/([;\"',`\\\\\/\.:@#\!\?\$%\^&\*\(\)\{\}\[\]\-_\+=\|])/",
  -        ' ', $raw.' '.$value);
  +        ' ', strip_tags($raw.' '.$pagename)); // pagename also
       $raw=preg_replace("/((?<=[a-z0-9]|[B-Z]{2})([A-Z][a-z]))/"," \\1",$raw);
       $raw=strtolower($raw);
  -    $words=preg_split("/[ ]+|\n/",$raw);
  -    $counts=array_count_values($words);
  -    $words=array_diff(array_keys($counts),preg_split("/[ ]|\n/",$common));
  -
  -    if ($options['all']) {
  -        $cache=new Cache_text('keywords');
  -        if ($cache->exists($value)) {
  -            $keytext=$cache->fetch($value);
  -            $keys=explode("\n",rtrim($keytext));
  -        } else
  -            $keys=array();
  -        foreach ($keys as $key) {
  -            $counts[$key]=50; // give weight to all selected keywords
  -            $words[]=$key;
  +    $raw=preg_replace("/&[^;\s]+;/",' ',$raw);
  +    //$raw=preg_replace("/\b([0-9a-zA-Z'\"])\\1+\s*/",' ',$raw);
  +    $words=preg_split("/\s+|\n/",$raw);
  +    // remove common words
  +    $words=array_diff($words,preg_split("/\s+|\n/",$common));
  +
  +    $preword='';
  +    $bigwords=array();
  +    foreach ($words as $word) {
  +        if (strlen($word) > 2 and strlen($preword) > 2) {
  +            if ($word == $preword) continue;
  +            $key= $preword.' '.$word;
  +            $rkey= $word.' '.$preword;
  +            if ($bigwords[$key]) $bigwords[$key]++;
  +            else if ($bigwords[$rkey]) $bigwords[$rkey]++;
  +            else $bigwords[$key]++;
           }
  +        $preword= $word;
       }
   
  +    $words=array_count_values($words);
  +    unset($words['']);
  +    $ncount=array_sum($words); // total count
  +
  +/*   
  +    $words=array_diff(array_keys($counts),preg_split("/\s+|\n/",$common));
  +
       if (function_exists('array_intersect_key')) {
           $words=array_intersect_key($counts,$words);
       } else {
  @@ -55,33 +103,105 @@
           }
           $words=&$ret;
       }
  +*/
  +    if ($bigwords) {
  +        // 
  +        $bigwords=array_filter($bigwords,create_function('$a','return ($a != 1);'));
  +        $words=array_merge($words,$bigwords);
  +    }
   
       arsort($words);
  -    unset($words['']);
   
  -    $link=$formatter->link_url(_rawurlencode($value),'');
  -    $out="<form method='post' action='$link'><ul>\n";
  -    $out.="<input type='hidden' name='action' value='keywords' />";
  +    $max=current($words); // get max hit number
  +
  +    $nwords=array();
  +    if ($options['all']) {
  +        $cache=new Cache_text('keywords');
  +        if ($cache->exists($pagename)) {
  +            $keytext=$cache->fetch($pagename);
  +            $keys=explode("\n",rtrim($keytext));
  +        } else
  +            $keys=array();
  +        foreach ($keys as $key) {
  +            $nwords[$key]=$max;
  +            // give weight to all selected keywords
  +        }
  +    }
  +
  +    if ($nwords)
  +        $words=array_merge($words,$nwords);
  +    if ($limit and ($sz=sizeof($words))>$limit) {
  +        arsort($words);
  +        $words=array_slice($words,0,$limit);
  +    }
  +    // make criteria list
  +    $fact=array();
  +    $weight=$max; // $ncount
  +    #print 'max='.$max.' ratio='.$weight/$ncount.':';
  +    $test=array(0.8, 0.6, 0.4, 0.5, 0.5, 0.5); // six level
  +    for ($i=0;$i<6 and $weight>0;$i++) {
  +        $weight=(int)($weight*$test[$i]);
  +        if ($weight>0) $fact[]=$weight;
  +        #print $weight.'--';
  +    }
  +    $max=current($fact);
  +    $min=max(1,end($fact));
  +    // make font-size style
  +    $fz=sizeof($fact);
  +    $sty=array();
  +    $fsh=(MAX_FONT_SZ-MIN_FONT_SZ)/($fz-1);
  +    $fs=MAX_FONT_SZ; // max font-size:24px;
  +    for ($i=0;$i<$fz;$i++) {
  +        $ifs=(int)($fs+0.5);
  +        $sty[]= "style='font-size:${ifs}px'";
  +        #print '/'.$ifs;
  +        $fs-=$fsh;
  +        $fs=max($fs,9); // min font-size:9px
  +    }
  +    if ($sort!='freq') ksort($words);
  +
  +    $link=$formatter->link_url(_rawurlencode($pagename),'');
  +    if (!isset($tag_link)) {
  +        if ($search_type=='full') $search='fullsearch';
  +        else if ($search_type=='title') $search='titlesearch';
  +        else $search='fullsearch&amp;keywords=1';
  +        $tag_link=$formatter->link_url(_rawurlencode($pagename),
  +            '?action='.$search.'&amp;value=$TAG');
  +    }
  +    $out='';
  +    if ($options['add']) {
  +        $out="<form method='post' action='$link'>\n";
  +        $out.="<input type='hidden' name='action' value='keywords' />\n";
  +    }
  +    $out.='<ul>';
       foreach ($words as $key=>$val) {
  -        if ($val > 1) {
  +        $style=$sty[$fz-1];
  +        for ($i=0;$i<$fz;$i++) {
  +            if ($val>$fact[$i]) {
  +                $style=$sty[$i];
  +                break;
  +            }
  +        }
  +        if ($val > $min) {
               $checked='';
  -            if ($val >= 50) {$checked='checked="checked"'; $ok=1;}
  -            $out.=" <li><input type='checkbox' $checked name='key[]' ".
  -                "value='$key' />".
  -                $formatter->link_tag(_rawurlencode($key),
  -                    '?action=fullsearch&amp;keywords=1&amp;value='.$key,$key).
  -                    ' ('.$val.')</li>';
  +            if ($val >= $max) {$checked='checked="checked"'; $ok=1;}
  +            if ($options['add'])
  +                $checkbox="<input type='checkbox' $checked name='key[]' ".
  +                    "value='$key' />";
  +            $out.=" <li>$checkbox"."<a href='".str_replace('$TAG',$key,$tag_link).
  +                "' $style title=\"$val "._("hits").'">'.$key."</a></li>\n";
           }
       }
       if ($options['add']) {
  -        $msg=_("manually add keywords");
  -        $inp="<li><input type='text' name='keywords' size='20' />: $msg</li>";
  +        $msg=_("add keywords");
  +        $inp="<li><input type='text' name='keywords' size='12' />: $msg</li>";
  +        if ($ok)
  +            $btn=_("Update keywords");
  +        else
  +            $btn=_("Add keywords");
  +        $form_close="<input type='submit' value='$btn'/></form>\n";
       }
  -    if ($ok)
  -        $btn=_("Update keywords");
  -    else
  -        $btn=_("Add keywords");
  -    return $out."$inp</ul><input type='submit' value='$btn'/></form>\n";
  +    return "<div class='cloudView'>".$out."$inp</ul></div>$form_close";
   }
   
   function do_keywords($formatter,$options) {
  @@ -90,6 +210,12 @@
       define(LOCAL_KEYWORDS,'LocalKeywords');
   
       $page=$formatter->page->name;
  +    if (!$DBInfo->hasPage($page)) {
  +        $options['err']=_("You are not able to add keywords.");
  +        $options['title']=_("Page does not exists");
  +        do_invalid($formatter,$options);
  +        return;
  +    }
   
       $formatter->send_header('',$options);
   
  
  
  


wkpark      2005/09/02 09:39:50

  Modified:    .        wiki.php wikilib.php
  Log:
  parse intericons correctly.
  fix update method of the Cache_text class
  
  Revision  Changes    Path
  1.239     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.238
  retrieving revision 1.239
  diff -u -r1.238 -r1.239
  --- wiki.php	1 Sep 2005 05:06:24 -0000	1.238
  +++ wiki.php	2 Sep 2005 00:39:50 -0000	1.239
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.238 2005/09/01 05:06:24 wkpark Exp $
  +// $Id: wiki.php,v 1.239 2005/09/02 00:39:50 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.238 $',1,-1);
  +$_revision = substr('$Revision: 1.239 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -1088,7 +1088,7 @@
   
     function update($pagename,$val,$mtime="") {
       $key=$this->getKey($pagename);
  -    if (!is_writable($key)) return false;
  +    if (file_exists($key) and !is_writable($key)) return false;
       if ($mtime and ($mtime <= $this->mtime($key))) return false;
   
       if (is_array($val))
  
  
  
  1.164     +8 -5      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.163
  retrieving revision 1.164
  diff -u -r1.163 -r1.164
  --- wikilib.php	1 Sep 2005 05:06:24 -0000	1.163
  +++ wikilib.php	2 Sep 2005 00:39:50 -0000	1.164
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.163 2005/09/01 05:06:24 wkpark Exp $
  +// $Id: wikilib.php,v 1.164 2005/09/02 00:39:50 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -498,6 +498,7 @@
   function do_edit($formatter,$options) {
     global $DBInfo;
     if (!$DBInfo->security->writable($options)) {
  +    $formatter->preview=0;
       do_invalid($formatter,$options);
       return;
     }
  @@ -1508,8 +1509,9 @@
               $url=$formatter->macro_repl('Attachment',substr($icon,11),1);
               $icon=qualifiedUrl($DBInfo->url_prefix.'/'.$url);
             }
  -          $sx=strtok('x');$sy=strtok('');
  -          $sx=$sx ? (int)$sx:16; $sy=$sy ? (int)$sy:16;
  +          preg_match('/^(\d+)(x(\d+))?\b/',strtok(''),$sz);
  +          $sx=$sz[1];$sy=$sz[3];
  +          $sx=$sx ? $sx:16; $sy=$sy ? $sy:16;
             $intericon[$wiki]=array($sx,$sy,trim($icon));
           }
           $interwiki[$wiki]=trim($url);
  @@ -1534,8 +1536,9 @@
             $url=$formatter->macro_repl('Attachment',substr($icon,11),1);
             $icon=qualifiedUrl($DBInfo->url_prefix.'/'.$url);
           }
  -        $sx=strtok('x');$sy=strtok('');
  -        $sx=$sx ? (int)$sx:16; $sy=$sy ? (int)$sy:16;
  +        preg_match('/^(\d+)(x(\d+))?\b/',strtok(''),$sz);
  +        $sx=$sz[1];$sy=$sz[3];
  +        $sx=$sx ? $sx:16; $sy=$sy ? $sy:16;
           $intericon[$wiki]=array($sx,$sy,trim($icon));
         }
       }
  
  
  


wkpark      2005/09/02 16:25:36

  Modified:    .        wiki.php
  Log:
  add '#nocomment' PI
  
  Revision  Changes    Path
  1.240     +6 -5      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.239
  retrieving revision 1.240
  diff -u -r1.239 -r1.240
  --- wiki.php	2 Sep 2005 00:39:50 -0000	1.239
  +++ wiki.php	2 Sep 2005 07:25:36 -0000	1.240
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.239 2005/09/02 00:39:50 wkpark Exp $
  +// $Id: wiki.php,v 1.240 2005/09/02 07:25:36 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.239 $',1,-1);
  +$_revision = substr('$Revision: 1.240 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -1505,7 +1505,7 @@
     function get_instructions(&$body) {
       global $DBInfo;
       $pikeys=array('#redirect','#action','#title','#keywords','#noindex',
  -      '#filter','#postfilter','#twinpages','#notwins');
  +      '#filter','#postfilter','#twinpages','#notwins','#nocomment');
       $pi=array();
       if (!$body) {
         if (!$this->page->exists()) return '';
  @@ -3529,14 +3529,15 @@
       $formatter->write("</div>\n");
   
       if ($DBInfo->extra_macros) {
  +      if ($formatter->pi['#nocomment']) $options['nocomment']=1;
         if (!is_array($DBInfo->extra_macros)) {
           print '<div id="wikiExtra">'."\n";
  -        print $formatter->macro_repl($DBInfo->extra_macros);
  +        print $formatter->macro_repl($DBInfo->extra_macros,'',$options);
           print '</div>'."\n";
         } else {
           print '<div id="wikiExtra">'."\n";
           foreach ($DBInfo->extra_macros as $macro)
  -          print $formatter->macro_repl($macro);
  +          print $formatter->macro_repl($macro,'',$options);
           print '</div>'."\n";
         }
       }
  
  
  


wkpark      2005/09/02 16:25:37

  Modified:    plugin   Comment.php
  Log:
  add '#nocomment' PI
  
  Revision  Changes    Path
  1.14      +2 -1      moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- Comment.php	1 Sep 2005 07:27:52 -0000	1.13
  +++ Comment.php	2 Sep 2005 07:25:37 -0000	1.14
  @@ -6,13 +6,14 @@
   // Usage: [[Comment]], ?action=comment
   //
   //
  -// $Id: Comment.php,v 1.13 2005/09/01 07:27:52 wkpark Exp $
  +// $Id: Comment.php,v 1.14 2005/09/02 07:25:37 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $HTTP_USER_AGENT;
     global $DBInfo;
     if (!$options['page']) $options['page']=$formatter->page->name;
   
  +  if ($options['nocomment']) return '';
     #if (!$DBInfo->_isWritable($options['page'])) return '';
     if (!$DBInfo->security->writable($options)) return '';
   
  
  
  


wkpark      2005/09/03 15:17:03

  Modified:    imgs/interwiki mathworld-16.png moinmoin-16.png
                        sfreaders-16.png wikipedia-16.png
  Removed:     imgs/interwiki blogdex-16.png book_open-16.png
                        metalink-16.png mizi-16.png origwiki-16.png
                        taeguk-16.png
  Log:
  remove unused icons and update with favicons
  
  Revision  Changes    Path
  1.2       +1 -1      moniwiki/imgs/interwiki/mathworld-16.png
  
  	<<Binary file>>
  
  
  1.2       +2 -3      moniwiki/imgs/interwiki/moinmoin-16.png
  
  	<<Binary file>>
  
  
  1.2       +1 -1      moniwiki/imgs/interwiki/sfreaders-16.png
  
  	<<Binary file>>
  
  
  1.2       +1 -1      moniwiki/imgs/interwiki/wikipedia-16.png
  
  	<<Binary file>>
  
  


wkpark      2005/09/05 13:59:34

  Modified:    .        wiki.php
  Log:
  enhanced editlog parsing
  
  Revision  Changes    Path
  1.241     +32 -22    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.240
  retrieving revision 1.241
  diff -u -r1.240 -r1.241
  --- wiki.php	2 Sep 2005 07:25:36 -0000	1.240
  +++ wiki.php	5 Sep 2005 04:59:33 -0000	1.241
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.240 2005/09/02 07:25:36 wkpark Exp $
  +// $Id: wiki.php,v 1.241 2005/09/05 04:59:33 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.240 $',1,-1);
  +$_revision = substr('$Revision: 1.241 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -770,28 +770,37 @@
     }
   
     function editlog_raw_lines($size=6000,$quick="") {
  -    define(DEFSIZE,6000);
  -    if ($size==0) $size=DEFSIZE;
  -    $filesize= filesize($this->editlog_name);
  -    if ($filesize > $size) {
  -      $fp= fopen($this->editlog_name, 'r');
  +    $lines=array();
   
  -      fseek($fp, -$size, SEEK_END);
  -
  -      $dumm=fgets($fp,1024); # emit dummy
  -      while (!feof($fp)) {
  -        $line=fgets($fp,2048);
  -        $lines[]=$line;
  +    $check=time();
  +    $date_from=$check-30*24*60*60; # one week
  +    $date_to=$check;#-100*24*60*60;
  +
  +    $fp= fopen($this->editlog_name, 'r');
  +    if(is_resource($fp)){
  +      $a=-1;
  +      $last='';
  +      fseek($fp,0,SEEK_END);
  +      while($date_from < $check and !feof($fp)){
  +        $a-=1024;
  +        fseek($fp,$a,SEEK_END);
  +        $l=fread($fp,1024);
  +        while(($p=strrpos($l,"\n"))!==false) {
  +          $line=substr($l,$p+1).$last;
  +          $dumm=explode("\t",$line,4);
  +          $check=$dumm[2];
  +          if ($date_from>$check) break;
  +          if ($date_to>$check) $lines[]=$line;
  +          $last='';
  +          $l=substr($l,0,$p);
  +        }
  +        $last=$l.$last;
         }
  +      #print $a;
  +      #print sizeof($lines);
  +      #print_r($lines);
         fclose($fp);
  -    } else
  -      $lines=file($this->editlog_name);
  -
  -    #$lines=$this->reverse($lines);
  -    $lines=array_reverse($lines);
  -    if (!$lines[0]) # delete last dummy
  -      unset($lines[0]);
  -    if (!$lines) $lines=array();
  +    }
   
       if ($quick) {
         foreach($lines as $line) {
  @@ -1505,7 +1514,8 @@
     function get_instructions(&$body) {
       global $DBInfo;
       $pikeys=array('#redirect','#action','#title','#keywords','#noindex',
  -      '#filter','#postfilter','#twinpages','#notwins','#nocomment');
  +      '#filter','#postfilter','#twinpages','#notwins','#nocomment',
  +      '#language',);
       $pi=array();
       if (!$body) {
         if (!$this->page->exists()) return '';
  
  
  


wkpark      2005/09/06 01:52:41

  Modified:    .        wiki.php
  Log:
  enhanced RecentChanges and rss_rc plugin.
  added $use_daysago to make a list of daysago links
  
  Revision  Changes    Path
  1.242     +22 -8     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.241
  retrieving revision 1.242
  diff -u -r1.241 -r1.242
  --- wiki.php	5 Sep 2005 04:59:33 -0000	1.241
  +++ wiki.php	5 Sep 2005 16:52:41 -0000	1.242
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.241 2005/09/05 04:59:33 wkpark Exp $
  +// $Id: wiki.php,v 1.242 2005/09/05 16:52:41 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.241 $',1,-1);
  +$_revision = substr('$Revision: 1.242 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -769,12 +769,22 @@
       return $out;
     }
   
  -  function editlog_raw_lines($size=6000,$quick="") {
  +  function editlog_raw_lines($days,$opts=array()) {
       $lines=array();
   
  -    $check=time();
  -    $date_from=$check-30*24*60*60; # one week
  -    $date_to=$check;#-100*24*60*60;
  +    $time_current= time();
  +    $secs_per_day= 24*60*60;
  +
  +    if ($opts['ago']) {
  +      $date_from= $time_current - ($opts['ago'] * $secs_per_day);
  +      $date_to= $date_from + ($days * $secs_per_day);
  +    } else {
  +      $date_from= $time_current - ($days * $secs_per_day);
  +      $date_to= $time_current;
  +    }
  +    $check=$date_to;
  +
  +    $itemnum=$opts['items'] ? $opts['items']:200;
   
       $fp= fopen($this->editlog_name, 'r');
       if(is_resource($fp)){
  @@ -790,7 +800,11 @@
             $dumm=explode("\t",$line,4);
             $check=$dumm[2];
             if ($date_from>$check) break;
  -          if ($date_to>$check) $lines[]=$line;
  +          if ($date_to>$check) {
  +            $lines[]=$line;
  +            $pages[$dumm[0]]=1;
  +            if (sizeof($pages) >= $itemnum) { $check=0; break; }
  +          }
             $last='';
             $l=substr($l,0,$p);
           }
  @@ -802,7 +816,7 @@
         fclose($fp);
       }
   
  -    if ($quick) {
  +    if ($opts['quick']) {
         foreach($lines as $line) {
           $dum=explode("\t",$line,2);
           if ($keys[$dum[0]]) continue;
  
  
  


wkpark      2005/09/06 01:52:42

  Modified:    plugin   RecentChanges.php rss_rc.php
  Log:
  enhanced RecentChanges and rss_rc plugin.
  added $use_daysago to make a list of daysago links
  
  Revision  Changes    Path
  1.15      +94 -64    moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- RecentChanges.php	31 Aug 2005 23:06:37 -0000	1.14
  +++ RecentChanges.php	5 Sep 2005 16:52:42 -0000	1.15
  @@ -1,9 +1,9 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.14 2005/08/31 23:06:37 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.15 2005/09/05 16:52:42 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     $options['trail']='';
  @@ -17,8 +17,11 @@
   
   function macro_RecentChanges($formatter,$value='',$options='') {
     global $DBInfo;
  -  define(MAXSIZE,10000);
  -  define(DEFSIZE,6000);
  +
  +define('RC_MAX_DAYS',30);
  +define('RC_MAX_ITEMS',200);
  +define('RC_DEFAULT_DAYS',7);
  +
     $checknew=1;
   
     $template_bra="";
  @@ -29,42 +32,61 @@
   
     if ($options['target']) $target="target='$options[target]'";
   
  -  #$date_fmt='D d M Y';
  +  // $date_fmt='D d M Y';
     $date_fmt=$DBInfo->date_fmt_rc;
  +  $days=$DBInfo->rc_days ? $DBInfo->rc_days:RC_DEFAULT_DAYS;
  +  $perma_icon=$formatter->perma_icon;
  +
  +  $args=explode(',',$value);
   
  -  preg_match("/(\d+)?(?:\s*,\s*)?(.*)?$/",$value,$match);
  -  if ($match) {
  -    $size=(int) $match[1];
  -    $args=explode(",",$match[2]);
  -
  -    if (preg_match("/^[\s\/\-:aABdDFgGhHiIjmMOrSTY]+$/",$args[0]))
  -      $date_fmt=$args[0];
  -
  -    if (in_array ("quick", $args)) $quick=1;
  -    if (in_array ("nonew", $args)) $checknew=0;
  -    if (in_array ("showhost", $args)) $showhost=1;
  -    if (in_array ("comment", $args)) $comment=1;
  -    if (in_array ("nobookmark", $args)) $nobookmark=1;
  -    if (!in_array ("noperma", $args)) $perma_icon=$formatter->perma_icon;
  -    if (in_array ("simple", $args)) {
  -      $use_day=0;
  -      $template=
  +  // first arg assumed to be a date fmt arg
  +  if (preg_match("/^[\s\/\-:aABdDFgGhHiIjmMOrSTY]+$/",$args[0]))
  +    $date_fmt=$args[0];
  +
  +  foreach ($args as $arg) {
  +    $arg=trim($arg);
  +    if (($p=strpos($arg,'='))!==false) {
  +      $k=substr($arg,0,$p);
  +      $v=substr($arg,$p+1);
  +      if ($k=='item') $opts['items']=min((int)$v,RC_MAX_ITEMS);
  +      else if ($k=='days') $days=min(abs($v),RC_MAX_DAYS);
  +      else if ($k=='ago') $opts['ago']=abs($v);
  +    } else {
  +      if ($arg =="quick") $opts['quick']=1;
  +      else if ($arg=="nonew") $checknew=0;
  +      else if ($arg=="showhost") $showhost=1;
  +      else if ($arg=="comment") $comment=1;
  +      else if ($arg=="nobookmark") $nobookmark=1;
  +      else if ($arg=="noperma") $perma_icon='';
  +      else if ($arg=="button") $button=1;
  +      else if ($arg=="simple") {
  +        $use_day=0;
  +        $template=
     '$out.= "$icon&nbsp;&nbsp;$title @ $day $date by $user $count $extra<br />\n";';
  -    }
  -    if (in_array ("moztab", $args)) {
  -      $use_day=1;
  -      $template=
  -  '$out.= "<li>$title $date</li>\n";';
  -    }
  -    if (in_array ("table", $args)) {
  -      $bra="<table border='0' cellpadding='0' cellspacing='0' width='100%'>";
  -      $template=
  +      } else if ($arg=="moztab") {
  +        $use_day=1;
  +        $template= '$out.= "<li>$title $date</li>\n";';
  +      } else if ($arg=="table") {
  +        $bra="<table border='0' cellpadding='0' cellspacing='0' width='100%'>";
  +        $template=
     '$out.= "<tr><td nowrap=\'nowrap\' width=\'2%\'>$icon</td><td width=\'40%\'>$title</td><td width=\'15%\'>$date</td><td>$user $count $extra</td></tr>\n";';
  -      $cat="</table>";
  -      $cat0="";
  +        $cat="</table>";
  +        $cat0="";
  +      }
       }
     }
  -  if ($size > MAXSIZE) $size=DEFSIZE;
  +  // override days
  +  $days=$_GET['days'] ? min(abs($_GET['days']),RC_MAX_DAYS):$days;
  +
  +  // override ago
  +  if ($_GET['ago'])
  +    $opts['ago']=$_GET['ago'] ? abs($_GET['ago']):$opts['ago'];
  +  if ($opts['ago']==0) $opts['ago']=$days;
  +
  +  // daysago
  +  $daysago='&amp;days='.$days;
  +  $daysago=$opts['ago'] ? $daysago.'&amp;ago='.$opts['ago']:$daysago;
  +      
   
     $user=new User(); # retrive user info
     if ($user->id != 'Anonymous') {
  @@ -82,25 +104,43 @@
   
     if (!$bookmark) $bookmark=time();
   
  -  if ($quick)
  -    $lines= $DBInfo->editlog_raw_lines($size,1);
  -  else
  -    $lines= $DBInfo->editlog_raw_lines($size);
  -    
     $time_current= time();
     $secs_per_day= 60*60*24;
  -  $days_to_show= 30;
  -  $time_cutoff= $time_current - ($days_to_show * $secs_per_day);
  +  //$time_cutoff= $time_current - ($days * $secs_per_day);
  +  $lines= $DBInfo->editlog_raw_lines($days,$opts);
  +
  +  // make a daysago button
  +  if ($DBInfo->use_daysago or $_GET['days'] or $opts['ago']) {
  +    $msg[0]=_("Show changes for ");
  +    $agolist=array(-$days,$days,2*$days,3*$days);
  +    $btn=array();
  +
  +    $arg='days='.$days.'&amp;ago';
  +    $msg[1]=_("days ago");
  +
  +    foreach ($agolist as $d) {
  +      $d+=$opts['ago'];
  +      if ($d<=0) continue;
  +      $link=
  +        $formatter->link_tag($formatter->page_urlname,"?$arg=".$d,$d);
  +      $btn[]=$link;
  +    }
  +    #if (sizeof($lines)==0) $btn=array_slice($btn,0,1);
  +
  +    $btn[]=$formatter->link_tag($formatter->page_urlname,"?$arg=...",'...',
  +      'onClick="return daysago(this)"');
  +    $script="<script type='text/javascript' src='$DBInfo->url_prefix/local/rc.js' ></script>";
  +    $btnlist=$msg[0].' <ul><li>'.implode("</li>\n<li>",$btn).
  +      '</li></ul> '.$msg[1];
  +    $btnlist=$script."<div class='rc-button'>\n".$btnlist."</div>\n";
  +  }
   
     foreach ($lines as $line) {
       $parts= explode("\t", $line,6);
       $page_key= $parts[0];
       $ed_time= $parts[2];
   
  -    if ($tz_offset !='')
  -      $day = gmdate('Ymd', $ed_time+$tz_offset);
  -    else
  -      $day = date('Ymd', $ed_time);
  +    $day = gmdate('Ymd', $ed_time+$tz_offset);
       if ($day != $ratchet_day) {
         $ratchet_day = $day;
         unset($logs);
  @@ -136,8 +176,8 @@
       $log= stripslashes($parts[5]);
       $act= rtrim($parts[6]);
   
  -    if ($ed_time < $time_cutoff)
  -      break;
  +//    if ($ed_time < $time_cutoff)
  +//      break;
   
       if ($formatter->group) {
         if (!preg_match("/^($formatter->group)(.*)$/",$page_name,$match)) continue;
  @@ -151,31 +191,25 @@
           $title=$page_name;
       }
   
  -    if ($tz_offset !='')
  -      $day = gmdate('Y-m-d', $ed_time+$tz_offset);
  -    else
  -      $day = date('Y-m-d', $ed_time);
  +    $day = gmdate('Y-m-d', $ed_time+$tz_offset);
       if ($use_day and $day != $ratchet_day) {
         $tag=str_replace('-','',$day);
         $perma="<a name='$tag'></a><a class='perma' href='#$tag'>$perma_icon</a>";
         $out.=$cat0;
  -      if ($tz_offset != '')
  -        $rcdate=gmdate($date_fmt,$ed_time+$tz_offset);
  -      else
  -        $rcdate=date($date_fmt,$ed_time);
  +      $rcdate=gmdate($date_fmt,$ed_time+$tz_offset);
   
         $out.=sprintf("%s<span class='rc-date'><font class='rc-date' size='+1'>%s ",
               $br, $rcdate);
         if (!$nobookmark)
           $out.="<font class='rc-bookmark' size='-1'>[".
  -          $formatter->link_tag($formatter->page->urlname,"?action=bookmark&amp;time=$ed_time",
  +          $formatter->link_tag($formatter->page->urlname,"?action=bookmark&amp;time=$ed_time".$daysago,
             _("set bookmark"))."]</font>\n";
         $ratchet_day = $day;
         $br="<br />";
         $out.=$perma.'</font></span><br />'.$bra;
         $cat0=$cat;
       } else
  -      $day=$formatter->link_to("?action=bookmark&amp;time=$ed_time",$day);
  +      $day=$formatter->link_to("?action=bookmark&amp;time=$ed_time".$daysago,$day);
   
       $pageurl=_rawurlencode($page_name);
   
  @@ -198,12 +232,8 @@
       $title=htmlspecialchars($title);
       $title= $formatter->link_tag($pageurl,"",$title,$target);
   
  -    if (! empty($DBInfo->changed_time_fmt)) {
  -      if ($tz_offset != '')
  -        $date= gmdate($DBInfo->changed_time_fmt, $ed_time+$tz_offset);
  -      else
  -        $date= date($DBInfo->changed_time_fmt, $ed_time);
  -    }
  +    if (! empty($DBInfo->changed_time_fmt))
  +      $date= gmdate($DBInfo->changed_time_fmt, $ed_time+$tz_offset);
   
       if ($DBInfo->show_hosts) {
         if ($showhost && $user == 'Anonymous')
  @@ -225,7 +255,7 @@
   
       $logs[$page_key]= 1;
     }
  -  return $out.$cat0;
  +  return $btnlist.$out.$cat0;
   }
   // vim:et:sts=2:
   ?>
  
  
  
  1.11      +12 -8     moniwiki/plugin/rss_rc.php
  
  Index: rss_rc.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rss_rc.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- rss_rc.php	3 Apr 2005 16:11:56 -0000	1.10
  +++ rss_rc.php	5 Sep 2005 16:52:42 -0000	1.11
  @@ -1,19 +1,23 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // rss_rc action plugin for the MoniWiki
   //
  -// $Id: rss_rc.php,v 1.10 2005/04/03 16:11:56 wkpark Exp $
  +// $Id: rss_rc.php,v 1.11 2005/09/05 16:52:42 wkpark Exp $
   
   function do_rss_rc($formatter,$options) {
     global $DBInfo;
  +define('RSS_DEFAULT_DAYS',7);
   
  -  $lines= $DBInfo->editlog_raw_lines(4000,1);
  +  $days=$DBInfo->rc_days ? $DBInfo->rc_days:RSS_DEFAULT_DAYS;
  +  $options['quick']=1;
  +  if ($options['c']) $options['items']=$options['c'];
  +  $lines= $DBInfo->editlog_raw_lines($days,$options);
       
     $time_current= time();
  -  $secs_per_day= 60*60*24;
  -  $days_to_show= 30;
  -  $time_cutoff= $time_current - ($days_to_show * $secs_per_day);
  +#  $secs_per_day= 60*60*24;
  +#  $days_to_show= 30;
  +#  $time_cutoff= $time_current - ($days_to_show * $secs_per_day);
   
     $URL=qualifiedURL($formatter->prefix);
     $img_url=qualifiedURL($DBInfo->logo_img);
  @@ -41,8 +45,8 @@
       $log= stripslashes($parts[5]);
       $act= rtrim($parts[6]);
   
  -    if ($ed_time < $time_cutoff)
  -      break;
  +#    if ($ed_time < $time_cutoff)
  +#      break;
   
       $url=qualifiedUrl($formatter->link_url(_rawurlencode($page_name)));
       $diff_url=qualifiedUrl($formatter->link_url(_rawurlencode($page_name),'?action=diff'));
  
  
  


wkpark      2005/09/06 01:55:14

  Modified:    plugin   Keywords.php
  Log:
  check the language PI or $default_language and use the localized CommonWords.
  
  Revision  Changes    Path
  1.5       +25 -7     moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Keywords.php	2 Sep 2005 00:38:11 -0000	1.4
  +++ Keywords.php	5 Sep 2005 16:55:14 -0000	1.5
  @@ -3,12 +3,15 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a 'Keywords' plugin for the MoniWiki
   //
  -// $Id: Keywords.php,v 1.4 2005/09/02 00:38:11 wkpark Exp $
  +// $Id: Keywords.php,v 1.5 2005/09/05 16:55:14 wkpark Exp $
  +
  +define(LOCAL_KEYWORDS,'LocalKeywords');
   
   function macro_Keywords($formatter,$value,$options='') {
       global $DBInfo;
   define(MAX_FONT_SZ,24);
   define(MIN_FONT_SZ,10);
  +    $supported_lang=array('en','ko');
   
       $limit=$options['limit'] ? $options['limit']:40;
       $opts=explode(',',$value);
  @@ -39,7 +42,7 @@
       }
   
       $common= <<<EOF
  -i am an a b c d e f g h i j k l m n o p q r s t u v w x y z
  +am an a b c d e f g h i j k l m n o p q r s t u v w x y z
   0 1 2 3 4 5 6 7 8 9
   if on in by it at up as down over into for from to of he his him she her back
   is are be being been or no not nor and all through under until
  @@ -54,22 +57,39 @@
   can't won't didn't don't
   aiff arj arts asp au avi bin biz css cgi com doc edu exe firm gif gz gzip
   htm html info jpeg jpg js jsp mp3 mpeg mpg mov
  -net nom org pdf php pl qt ra ram rec shop sit tar tgz tiff txt wav web zip
  +nom pdf php pl qt ra ram rec shop sit tar tgz tiff txt wav web zip
   one two three four five six seven eight nine ten eleven twelve
  +ftp http https www web net org or kr co us de
   EOF;
       if (!$pagename) $pagename=$formatter->page->name;
       $page=$DBInfo->getPage($pagename);
       if (!$page->exists()) return '';
  -    $raw=$page->get_raw_body();
  +    $raw=$page->get_raw_body();$raw=rtrim($raw);
   
  +    // strip macros, entities
  +    $raw=preg_replace("/&[^;\s]+;|\[\[[^\[]+\]\]/",' ',$raw);
       $raw=preg_replace("/([;\"',`\\\\\/\.:@#\!\?\$%\^&\*\(\)\{\}\[\]\-_\+=\|])/",
           ' ', strip_tags($raw.' '.$pagename)); // pagename also
       $raw=preg_replace("/((?<=[a-z0-9]|[B-Z]{2})([A-Z][a-z]))/"," \\1",$raw);
       $raw=strtolower($raw);
  -    $raw=preg_replace("/&[^;\s]+;/",' ',$raw);
  +    $raw=preg_replace("/\b/",' ',$raw);
       //$raw=preg_replace("/\b([0-9a-zA-Z'\"])\\1+\s*/",' ',$raw);
       $words=preg_split("/\s+|\n/",$raw);
       // remove common words
  +    $lang=$formatter->pi['#language'] ? $formatter->pi['#language']:
  +        $DBInfo->default_language;
  +    if ($lang and in_array($lang,$supported_lang)) {
  +        $common_word_page=LOCAL_KEYWORDS.'/CommonWords'.ucfirst($lang);
  +        if ($DBInfo->hasPage($common_word_page)) {
  +            $p=$DBInfo->getPage($common_word_page);
  +            $lines=explode("\n",($p->get_raw_body()));
  +            foreach ($lines as $line) {
  +                if ($line[0]=='#') continue;
  +                $common.=$line."\n";
  +            }
  +            $common=rtrim($common);
  +        }
  +    }
       $words=array_diff($words,preg_split("/\s+|\n/",$common));
   
       $preword='';
  @@ -207,8 +227,6 @@
   function do_keywords($formatter,$options) {
       global $DBInfo;
   
  -    define(LOCAL_KEYWORDS,'LocalKeywords');
  -
       $page=$formatter->page->name;
       if (!$DBInfo->hasPage($page)) {
           $options['err']=_("You are not able to add keywords.");
  
  
  


wkpark      2005/09/06 01:56:05

  Added:       local    rc.js
  Log:
  use dynamic input form.
  
  Revision  Changes    Path
  1.1                  moniwiki/local/rc.js
  
  Index: rc.js
  ===================================================================
  // dynamic input form
  function daysago(obj) {
    var ele=obj.parentNode;
    if (ele.childNodes[0].innerHTML=='...') {
      //ele.innerHTML="<input type='text' name='daysago'"+
      //  " size='5' onChange='daysago(this)' />";
      //ele.focus(); // not work
      var node = document.createElement("input");
      node.setAttribute("type","text");
      node.setAttribute("size","5");
      node.setAttribute("onChange","daysago(this)");
      ele.parentNode.replaceChild(node,ele);
      node.focus();
    } else {
      var my=''+self.location;
      if (my.match(/ago=/,my))
        my=my.replace(/ago=\d+/,'ago='+obj.value);
      else
        my+='?ago='+obj.value;
      self.location=my;
    }
    return false;
  }
  
  
  


wkpark      2005/09/06 01:58:51

  Modified:    plugin/processor vim.php
  Log:
  add mysql syntax
  
  Revision  Changes    Path
  1.28      +2 -2      moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- vim.php	13 Aug 2005 06:51:21 -0000	1.27
  +++ vim.php	5 Sep 2005 16:58:50 -0000	1.28
  @@ -10,7 +10,7 @@
   // Win32 note:
   //  add $path="/bin;/Program Files/Vim/VimXX"; in the config.php
   //
  -// $Id: vim.php,v 1.27 2005/08/13 06:51:21 wkpark Exp $
  +// $Id: vim.php,v 1.28 2005/09/05 16:58:50 wkpark Exp $
   
   function processor_vim($formatter,$value,$options) {
     global $DBInfo;
  @@ -20,7 +20,7 @@
     $syntax=array("php","c","python","jsp","sh","cpp",
             "java","ruby","forth","fortran","perl",
             "haskell","lisp","st","objc","tcl","lua",
  -          "asm","masm","tasm","make",
  +          "asm","masm","tasm","make","mysql",
             "awk","docbk","diff","html","tex","vim",
             "xml","dtd","sql","conf","config","nosyntax","apache");
   
  
  
  


wkpark      2005/09/06 02:11:46

  Modified:    plugin/processor hello.php
  Log:
  minor fix
  
  Revision  Changes    Path
  1.4       +12 -12    moniwiki/plugin/processor/hello.php
  
  Index: hello.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/hello.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- hello.php	8 Apr 2004 18:23:44 -0000	1.3
  +++ hello.php	5 Sep 2005 17:11:46 -0000	1.4
  @@ -1,26 +1,26 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // sample plugin for the MoniWiki
   //
   // Usage: {{{#!hello Name
   // Hello World
   // }}}
  -// $Id: hello.php,v 1.3 2004/04/08 18:23:44 wkpark Exp $
  +// $Id: hello.php,v 1.4 2005/09/05 17:11:46 wkpark Exp $
   
  -function processor_hello($formatter,$value="") {
  -  if ($value[0]=='#' and $value[1]=='!')
  -    list($line,$value)=explode("\n",$value,2);
  +function processor_hello($formatter,$value="",$options=array()) {
  +    if ($value[0]=='#' and $value[1]=='!')
  +        list($line,$value)=explode("\n",$value,2);
   
  -  if ($line)
  -    list($tag,$args)=explode(' ',$line,2);
  +    if ($line)
  +        list($tag,$args)=explode(' ',$line,2);
   
  -  $lines=explode("\n",$value);
  -  foreach ($lines as $line)
  -    $out.="[<b>$args</b>]:$line<br />\n";
  +    $lines=explode("\n",$value);
  +    foreach ($lines as $line)
  +        $out.="[<b>$args</b>]:$line<br />\n";
   
  -  return $out;
  +    return $out;
   }
   
  -// vim:et:ts=2:
  +// vim:et:ts=4:
   ?>
  
  
  


wkpark      2005/09/06 02:26:48

  Added:       plugin/processor randomquote.php
  Log:
  add a new processor to use RandomQuote macro as a processor
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/processor/randomquote.php
  
  Index: randomquote.php
  ===================================================================
  <?php
  // Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // sample plugin for the MoniWiki
  //
  // Usage: {{{#!hello Name
  // Hello World
  // }}}
  // $Id: randomquote.php,v 1.1 2005/09/05 17:26:48 wkpark Exp $
  
  function processor_randomquote($formatter,$value="",$options=array()) {
      if ($value[0]=='#' and $value[1]=='!')
          list($line,$value)=explode("\n",$value,2);
  
      if ($line)
          list($tag,$args)=explode(' ',$line,2);
  
      return $formatter->macro_repl('RandomQuote','',array('body'=>$value));
  }
  
  // vim:et:ts=4:
  ?>
  
  
  


wkpark      2005/09/06 02:29:05

  Modified:    .        wikilib.php
  Log:
  enhanced randomquote macro: support reg exp as a arg e.g. @^\s\*(.*)$@
  
  Revision  Changes    Path
  1.165     +23 -8     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.164
  retrieving revision 1.165
  diff -u -r1.164 -r1.165
  --- wikilib.php	2 Sep 2005 00:39:50 -0000	1.164
  +++ wikilib.php	5 Sep 2005 17:29:05 -0000	1.165
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.164 2005/09/02 00:39:50 wkpark Exp $
  +// $Id: wikilib.php,v 1.165 2005/09/05 17:29:05 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1280,23 +1280,38 @@
     return join("",$selects);
   }
   
  -function macro_RandomQuote($formatter,$value="") {
  +function macro_RandomQuote($formatter,$value="",$options=array()) {
     global $DBInfo;
     define(QUOTE_PAGE,'FortuneCookies');
   
  -  if ($value and $DBInfo->hasPage($value))
  -    $fortune=$value;
  +  $re='/^\s*\* (.*)$/';
  +  $args=explode(',',$value);
  +  foreach ($args as $arg) {
  +    $arg=trim($arg);
  +    if (in_array($arg[0],array('@','/','%')) and $arg[0]==substr($arg,-1)) {
  +      if (!@preg_match($arg,'')) continue;
  +      $re=$arg;
  +    } else
  +      $pagename=$arg;
  +  }
  +
  +  if ($pagename and $DBInfo->hasPage($pagename))
  +    $fortune=$pagename;
     else
       $fortune=QUOTE_PAGE;
   
  -  $page=$DBInfo->getPage($fortune);
  -  if (!$page->exists()) return '';
  -  $raw=$page->get_raw_body();
  +  if ($options['body'])
  +    $raw=$options['body'];
  +  else {
  +    $page=$DBInfo->getPage($fortune);
  +    if (!$page->exists()) return '';
  +    $raw=$page->get_raw_body();
  +  }
    
     $lines=explode("\n",$raw);
   
     foreach($lines as $line) {
  -    if (preg_match("/^\s\* (.*)$/",$line,$match))
  +    if (preg_match($re.'i',$line,$match))
         $quotes[]=$match[1];
     }
   
  
  
  


wkpark      2005/09/06 02:30:26

  Modified:    plugin/processor randomquote.php
  Log:
  more fix
  
  Revision  Changes    Path
  1.2       +2 -2      moniwiki/plugin/processor/randomquote.php
  
  Index: randomquote.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/randomquote.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- randomquote.php	5 Sep 2005 17:26:48 -0000	1.1
  +++ randomquote.php	5 Sep 2005 17:30:26 -0000	1.2
  @@ -6,7 +6,7 @@
   // Usage: {{{#!hello Name
   // Hello World
   // }}}
  -// $Id: randomquote.php,v 1.1 2005/09/05 17:26:48 wkpark Exp $
  +// $Id: randomquote.php,v 1.2 2005/09/05 17:30:26 wkpark Exp $
   
   function processor_randomquote($formatter,$value="",$options=array()) {
       if ($value[0]=='#' and $value[1]=='!')
  @@ -15,7 +15,7 @@
       if ($line)
           list($tag,$args)=explode(' ',$line,2);
   
  -    return $formatter->macro_repl('RandomQuote','',array('body'=>$value));
  +    return $formatter->macro_repl('RandomQuote',$args,array('body'=>$value));
   }
   
   // vim:et:ts=4:
  
  
  


wkpark      2005/09/06 02:45:49

  Modified:    .        wikilib.php
  Log:
  more fix
  
  Revision  Changes    Path
  1.166     +7 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.165
  retrieving revision 1.166
  diff -u -r1.165 -r1.166
  --- wikilib.php	5 Sep 2005 17:29:05 -0000	1.165
  +++ wikilib.php	5 Sep 2005 17:45:45 -0000	1.166
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.165 2005/09/05 17:29:05 wkpark Exp $
  +// $Id: wikilib.php,v 1.166 2005/09/05 17:45:45 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1286,10 +1286,14 @@
   
     $re='/^\s*\* (.*)$/';
     $args=explode(',',$value);
  +
     foreach ($args as $arg) {
       $arg=trim($arg);
       if (in_array($arg[0],array('@','/','%')) and $arg[0]==substr($arg,-1)) {
  -      if (!@preg_match($arg,'')) continue;
  +      if (@preg_match($arg,'',$m)===false) {
  +        $log=_("Invalid regular expression !");
  +        continue;
  +      }
         $re=$arg;
       } else
         $pagename=$arg;
  @@ -1329,7 +1333,7 @@
   #  $out= ob_get_contents();
   #  ob_end_clean();
   #  return $out;
  -  return $quote;
  +  return $log.$quote;
   }
   
   
  
  
  


wkpark      2005/09/06 09:53:47

  Modified:    .        wiki.php
  Log:
  fix the MetaDB class to support AliasPageName and cleanup
  
  Revision  Changes    Path
  1.243     +112 -32   moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.242
  retrieving revision 1.243
  diff -u -r1.242 -r1.243
  --- wiki.php	5 Sep 2005 16:52:41 -0000	1.242
  +++ wiki.php	6 Sep 2005 00:53:47 -0000	1.243
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.242 2005/09/05 16:52:41 wkpark Exp $
  +// $Id: wiki.php,v 1.243 2005/09/06 00:53:47 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.242 $',1,-1);
  +$_revision = substr('$Revision: 1.243 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -233,6 +233,7 @@
   
   class MetaDB_dba extends MetaDB {
     var $metadb;
  +  var $aux=array();
   
     function MetaDB_dba($file,$type="db3") {
       if (function_exists('dba_open'))
  @@ -243,36 +244,57 @@
       dba_close($this->metadb);
     }
   
  -  function getSisterSites($pagename,$mode=1) {
  -    if ($pagename and dba_exists($pagename,$this->metadb)) {
  -      if (!$mode) return true;
  -      $sisters=dba_fetch($pagename,$this->metadb);
  +  function attachDB($db) {
  +    $this->aux=$db;
  +  }
   
  -      if (strlen($sisters) > 40) return "TwinPages:$pagename";
  +  function getSisterSites($pagename,$mode=1) {
  +    if (!$this->aux->hasPage($pagename) and !dba_exists($pagename,$this->metadb)) {
  +      if ($mode) return '';
  +      return false;
  +    }
  +    if (!$mode) return true;
  +    $sisters=dba_fetch($pagename,$this->metadb);
  +    $addons=$this->aux->getSisterSites($pagename,$mode);
  +
  +    if ($twins)
  +      $ret='wiki:'.str_replace(' ',":$pagename wiki:",$sisters).":$pagename";
  +    $pagename=_preg_search_escape($pagename);
  +    if ($addons) $ret=rtrim($addons.' '.$ret);
   
  -      $ret="wiki:".
  -        str_replace(" ",":$pagename wiki:",$sisters).":$pagename";
  -      $pagename=_preg_search_escape($pagename);
  -      return preg_replace("/((:[^\s]+){2})(\:$pagename)/","\\1",$ret);
  -    }
  -    return "";
  +    if ($mode==1 and strlen($ret) > 80) return "TwinPages:$pagename";
  +    return preg_replace("/((:[^\s]+){2})(\:$pagename)/","\\1",$ret);
     }
   
     function getTwinPages($pagename,$mode=1) {
  -    if ($pagename && dba_exists($pagename,$this->metadb)) {
  -      if (!$mode) return true;
  -
  -      $twins=dba_fetch($pagename,$this->metadb);
  -      $bullet=" ";
  -      if (strlen($twins) > 40) $bullet="\n * ";
  -      $ret=$bullet."wiki:".
  -        str_replace(" ",":$pagename$bullet"."wiki:",$twins).
  -        ":$pagename";
  +    if (!$this->aux->hasPage($pagename) and !dba_exists($pagename,$this->metadb)) {
  +      if ($mode) return array();
  +      return false;
  +    }
  +    if (!$mode) return true;
  +
  +    $twins=dba_fetch($pagename,$this->metadb);
  +    $addons=$this->aux->getTwinPages($pagename,$mode);
  +    $ret=array();
  +    if ($twins) {
  +      $ret="wiki:".str_replace(" ",":$pagename wiki:",$twins). ":$pagename";
   
         $pagename=_preg_search_escape($pagename);
         $ret= preg_replace("/((:[^\s]+){2})(\:$pagename)/","\\1",$ret);
  -      return explode("\n",$ret);
  +      $ret= explode(' ',$ret);
  +    }
  +
  +    if ($addons) $ret=array_merge($addons,$ret);
  +    if (sizeof($ret) > 8) {
  +      if ($mode==1) return array("TwinPages:$pagename");
  +      $ret=array_map(create_function('$a','return " * $a";'),$ret);
       }
  +
  +    return $ret;
  +  }
  +
  +  function hasPage($pagename) {
  +    if (dba_exists($pagename,$this->metadb)) return true;
       return false;
     }
   
  @@ -309,8 +331,9 @@
     function getSisterSites($pagename) {
       return "";
     }
  -  function getTwinPages($pagename) {
  -    return "";
  +  function getTwinPages($pagename,$mode=1) {
  +    if ($mode) return array();
  +    return false;
     }
     function getAllPages() {
       return array();
  @@ -322,6 +345,54 @@
     }
   }
   
  +class MetaDB_text extends MetaDB {
  +  var $db=array();
  +  function MetaDB_text($file) {
  +    $lines=file($file);
  +    foreach ($lines as $line) {
  +      if ($line[0]=='#') continue;
  +      list($key,$list)=explode(',',rtrim($line),2);
  +      $this->db[$key]=$list;
  +    }
  +  }
  +
  +  function hasPage($pagename) {
  +    if ($this->db[$pagename]) return true;
  +    return false;
  +  }
  +
  +  function getTwinPages($pagename,$mode=1) {
  +    if (!$this->db[$pagename]) {
  +      if ($mode) return array();
  +      return false;
  +    }
  +    if (!$mode) return true;
  +    $twins=$this->db[$pagename];
  +
  +    $ret='[wiki:'.str_replace(',',"] [wiki:",$twins).']';
  +
  +    $pagename=_preg_search_escape($pagename);
  +    $ret= preg_replace("/((:[^\s]+){2})(\:$pagename)/","\\1",$ret);
  +    return explode(' ',$ret);
  +  }
  +  function getSisterSites($pagename,$mode=1) {
  +    if (!$this->db[$pagename]) {
  +      if ($mode) return '';
  +      return false;
  +    }
  +    if (!$mode) return true;
  +
  +    $twins=$this->db[$pagename];
  +    $ret='[wiki:'.str_replace(',',"] [wiki:",$twins).']';
  +
  +    return $ret;
  +  }
  +
  +  function getAllPages() {
  +    return array_keys($this->db);
  +  }
  +}
  +
   class Counter_dba {
     var $counter;
     var $DB;
  @@ -611,10 +682,18 @@
   
       $this->interwiki=null;
   
  +    if ($this->use_alias)
  +      $this->alias=new MetaDB_text($this->aliaspage);
       if ($this->shared_metadb)
         $this->metadb=new MetaDB_dba($this->shared_metadb,$this->dba_type);
  -    if (!$this->metadb->metadb)
  -      $this->metadb=new MetaDB();
  +    if (!$this->metadb->metadb) {
  +      if ($this->alias)
  +        $this->metadb=$this->alias;
  +      else
  +        $this->metadb=new MetaDB();
  +    } else {
  +      $this->metadb->attachDB($this->alias);
  +    }
   
       if ($this->use_counter)
         $this->counter=new Counter_dba($this);
  @@ -672,7 +751,7 @@
     function hasPage($pagename) {
       if (!$pagename) return false;
       $name=$this->getPageKey($pagename);
  -    return file_exists($name); 
  +    return @file_exists($name); 
     }
   
     function getPage($pagename,$options="") {
  @@ -962,7 +1041,7 @@
     function _isWritable($pagename) {
       $key=$this->getPageKey($pagename);
       # True if page can be changed
  -    return is_writable($key) or !file_exists($key);
  +    return @is_writable($key) or !@file_exists($key);
     }
   
     function getPerms($pagename) {
  @@ -1213,7 +1292,7 @@
   
     function exists() {
       # Does a page for the given word already exist?
  -    return file_exists($this->filename);
  +    return @file_exists($this->filename);
     }
   
   #  function writable() {
  @@ -2290,7 +2369,8 @@
           }
         } else if ($twins) {
           if ($lines) $lines[]="----";
  -        $twins[0]=_("See [TwinPages]: ").$twins[0];
  +        if (sizeof($twins)>8) $twins[0]="\n".$twins[0];
  +        $twins[0]=_("See [TwinPages]:").$twins[0];
           $lines=array_merge($lines,$twins);
         }
       }
  @@ -3472,7 +3552,7 @@
   
         $formatter->send_header("Status: 404 Not found",$options);
   
  -      $twins=$DBInfo->metadb->getTwinPages($page->name,1);
  +      $twins=$DBInfo->metadb->getTwinPages($page->name,2);
         if ($twins) {
           $formatter->send_title($page->name,"",$options);
           $twins=join("\n",$twins);
  
  
  


wkpark      2005/09/06 09:53:48

  Modified:    plugin   TwinPages.php
  Log:
  fix the MetaDB class to support AliasPageName and cleanup
  
  Revision  Changes    Path
  1.3       +3 -2      moniwiki/plugin/TwinPages.php
  
  Index: TwinPages.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/TwinPages.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TwinPages.php	31 Aug 2005 23:55:20 -0000	1.2
  +++ TwinPages.php	6 Sep 2005 00:53:48 -0000	1.3
  @@ -4,7 +4,7 @@
   // a TwinPages action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: TwinPages.php,v 1.2 2005/08/31 23:55:20 wkpark Exp $
  +// $Id: TwinPages.php,v 1.3 2005/09/06 00:53:48 wkpark Exp $
   
   function do_twinpages($formatter,$options) {
     global $DBInfo;
  @@ -12,8 +12,9 @@
     $formatter->send_header("",$options);
     $formatter->send_title(sprintf(_("TwinPages of %s"),$options['value']),"",$options);
   
  -  $twins=$DBInfo->metadb->getTwinPages($options['value'],1);
  +  $twins=$DBInfo->metadb->getTwinPages($options['value'],2);
     if ($twins) {
  +    if (sizeof($twins) > 7) $twins[0]="\n".$twins[0];
       $twins=join("\n",$twins);
       $formatter->send_page(_("See [TwinPages]: ").$twins);
     } else 
  
  
  


wkpark      2005/09/07 15:20:39

  Modified:    .        wikilib.php
  Log:
  fixed get_section() bug.
  fixed crlf problem with Mac
  
  Revision  Changes    Path
  1.167     +7 -7      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.166
  retrieving revision 1.167
  diff -u -r1.166 -r1.167
  --- wikilib.php	5 Sep 2005 17:45:45 -0000	1.166
  +++ wikilib.php	7 Sep 2005 06:20:38 -0000	1.167
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.166 2005/09/05 17:45:45 wkpark Exp $
  +// $Id: wikilib.php,v 1.167 2005/09/07 06:20:38 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -521,7 +521,7 @@
         continue;
       }
       $parts=array();
  -    $parts=preg_split("/^([^\n]\s*={1,$lim}\s#?.*\s+={1,$lim}\s?)$/m",$chunks[$ii],
  +    $parts=preg_split("/^((?!\n)\s*={1,$lim}\s#?.*\s+={1,$lim}\s?)$/m",$chunks[$ii],
         -1, PREG_SPLIT_DELIM_CAPTURE);
       for ($j=0,$i=0,$s=count($parts); $i<$s; $i++) {
         if (!($i%2)) {
  @@ -607,9 +607,9 @@
     $form.=$menu;
     $form.= sprintf('<form name="editform" method="post" action="%s">', $previewurl);
     if ($text) {
  -    $raw_body = str_replace("\r\n", "\n", $text);
  +    $raw_body = preg_replace("/\r\n|\r/", "\n", $text);
     } else if ($formatter->page->exists()) {
  -    $raw_body = str_replace("\r\n", "\n", $formatter->page->_get_raw_body());
  +    $raw_body = preg_replace("/\r\n|\r/", "\n", $formatter->page->_get_raw_body());
       if (isset($options['section'])) {
         $sections= _get_sections($raw_body);
         if ($sections[$options['section']])
  @@ -618,7 +618,7 @@
       }
     } else if ($options['template']) {
       $p= new WikiPage($options['template']);
  -    $raw_body = str_replace("\r\n", "\n", $p->get_raw_body());
  +    $raw_body = preg_replace("/\r\n|\r/", "\n", $p->get_raw_body());
     } else {
       if (strpos($options['page'],' ') > 0) {
         $raw_body="#title $options[page]\n";
  @@ -987,7 +987,7 @@
   
     $formatter->send_header("",$options);
   
  -  $savetext=str_replace("\r", "", $savetext);
  +  $savetext=preg_replace("/\r\n|\r/", "\n", $savetext);
     $savetext=_stripslashes($savetext);
     $section_savetext='';
     if (isset($options['section'])) {
  @@ -1010,7 +1010,7 @@
     if ($formatter->page->exists()) {
       # check difference
       $body=$formatter->page->get_raw_body();
  -    $body=str_replace("\r", "", $body);
  +    $body=preg_replace("/\r\n|\r/", "\n", $body);
       $orig=md5($body);
       # check datestamp
       if ($formatter->page->mtime() > $datestamp) {
  
  
  


wkpark      2005/09/07 19:24:29

  Modified:    .        wiki.php wikilib.php
  Log:
  ajax_action support added
  fixed section editing.
  
  Revision  Changes    Path
  1.244     +30 -2     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.243
  retrieving revision 1.244
  diff -u -r1.243 -r1.244
  --- wiki.php	6 Sep 2005 00:53:47 -0000	1.243
  +++ wiki.php	7 Sep 2005 10:24:28 -0000	1.244
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.243 2005/09/06 00:53:47 wkpark Exp $
  +// $Id: wiki.php,v 1.244 2005/09/07 10:24:28 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.243 $',1,-1);
  +$_revision = substr('$Revision: 1.244 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -2156,6 +2156,18 @@
       return call_user_func("postfilter_$filter",$this,$value,$options);
     }
   
  +  function ajax_repl($action,$options='') {
  +    if (!function_exists('ajax_'.$action) and !function_exists('do_'.$action)) {
  +      $ff=getPlugin($action);
  +      if (!$ff) return $value;
  +      include_once("plugin/$ff.php");
  +    }
  +    if (!function_exists ("ajax_".$action))
  +      return ajax_invalid($this,array('title'=>_("Invalid ajax action.")));
  +
  +    return call_user_func("ajax_$action",$this,$options);
  +  }
  +
     function smiley_repl($smiley) {
       global $DBInfo;
   
  @@ -3492,6 +3504,10 @@
       $goto=$_POST['goto'];
     } else if ($_SERVER['REQUEST_METHOD']=="GET") {
       $action=$_GET['action'];
  +    if (($p=strpos($action,'/'))!==false) {
  +      $action_mode=substr($action,$p+1);
  +      $action=substr($action,0,$p);
  +    }
       $value=$_GET['value'];
       $goto=$_GET['goto'];
       $rev=$_GET['rev'];
  @@ -3675,6 +3691,18 @@
         return;
       }
   
  +    if (in_array($action_mode,array('ajax','macro'))) {
  +      if ($_SERVER['REQUEST_METHOD']=="POST")
  +        $options=array_merge($_POST,$options);
  +      else
  +        $options=array_merge($_GET,$options);
  +      if ($action_mode=='ajax')
  +        $formatter->ajax_repl($action,$options);
  +      else
  +        print $formatter->macro_repl($action,$options['value'],$options);
  +      return;
  +    }
  +
       if (!function_exists("do_post_".$action) and
         !function_exists("do_".$action)){
         if ($plugin=getPlugin($action))
  
  
  
  1.168     +10 -2     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.167
  retrieving revision 1.168
  diff -u -r1.167 -r1.168
  --- wikilib.php	7 Sep 2005 06:20:38 -0000	1.167
  +++ wikilib.php	7 Sep 2005 10:24:28 -0000	1.168
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.167 2005/09/07 06:20:38 wkpark Exp $
  +// $Id: wikilib.php,v 1.168 2005/09/07 10:24:28 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -714,6 +714,12 @@
     $formatter->send_footer("",$options);
   }
   
  +function ajax_invalid($formatter,$options) {
  +  $formatter->send_header("Status: 406 Not Acceptable",$options);
  +  print "false";
  +  return;
  +}
  +
   function do_post_DeleteFile($formatter,$options) {
     global $DBInfo;
   
  @@ -993,8 +999,10 @@
     if (isset($options['section'])) {
       if ($formatter->page->exists()) {
         $sections= _get_sections($formatter->page->get_raw_body());
  -      if ($sections[$options['section']])
  +      if ($sections[$options['section']]) {
  +        if (substr($savetext,-1)!="\n") $savetext.="\n";
           $sections[$options['section']]=$savetext;
  +      }
         $section_savetext=$savetext;
         $savetext=implode('',$sections);
       }
  
  
  


wkpark      2005/09/07 19:29:46

  Added:       plugin   chat.php
  Log:
  support ajax action: a sample chat action added
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/chat.php
  
  Index: chat.php
  ===================================================================
  <?php
  // Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a sample plugin for the MoniWiki
  //
  // Usage: [[Chat]]
  //
  // $Id: chat.php,v 1.1 2005/09/07 10:29:46 wkpark Exp $
  // http://cvs.drupal.org/viewcvs/drupal/contributions/modules/chat/
  
  function macro_Chat($formatter,$value) {
      global $DBInfo;
      $url=$formatter->link_url($formatter->page->name,
          '?action=chat/ajax');
      ob_start();
      $formatter->ajax_repl('chat',array('value'=>'','room'=>$value));
      //ob_end_flush();
      $msg=ob_get_contents();
      ob_end_clean();
      return <<<EOF
  <script type='text/javascript' src='$DBInfo->url_prefix/local/ajax.js'></script>
  <script type='text/javascript' src='$DBInfo->url_prefix/local/chat.js'></script>
  <div id="chat0">$msg</div>
  <input type='text' size='40' class='wikiChat' onChange='sendMsg(this,"$url","chat0")' />
  EOF;
  }
  
  function do_chat($formatter,$options) {
      $formatter->send_header();
      $formatter->send_title();
      print macro_Chat($formatter,$options[value]);
      $formatter->send_footer("",$options);
      return;
  }
  
  function ajax_chat($formatter,$options) {
      global $DBInfo;
      $user=new User(); # get cookie
      if ($user->id != 'Anonymous') {
          $udb=new UserDB($DBInfo);
          $udb->checkUser($user);
      }
      $date=gmdate("[Y m:i]",time());
      $value=_stripslashes($options['value']);
  
      $itemnum=20; // XXX
  
      if (!file_exists($DBInfo->upload_dir.'/Chat')) {
          umask(000);
          mkdir($DBInfo->upload_dir.'/Chat',0777);
          umask(022);
      }
          
      if ($options['room']) {
          $md5=md5($options['room']);
          $log=$DBInfo->upload_dir.'/Chat/'.$md5.'.log';
      } else {
          $log=$DBInfo->upload_dir.'/Chat/default.log';
      }
      $lines=array();
      $fp=fopen($log,'a+');
      if (is_resource($fp)) {
          fseek($fp,0,SEEK_END);
          if ($value) {
              fwrite($fp,time()."\t".$user->id."\t".rtrim($value)."\n");
          }
          fseek($fp,0,SEEK_END);
          $fz=filesize($log);
          $a=-1;
          $end=0;
          $last='';
          $check=time();
          $date_from=$check-24*60*60; // one day
          while($date_from < $check and !feof($fp)){
              $a-=1024;
              if (-$a > $fz) { $a=-$fz;}
              fseek($fp,$a,SEEK_END);
              $l=fread($fp,1024);
              while(($p=strrpos($l,"\n"))!==false) {
                  $line=substr($l,$p+1).$last;
                  $dumm=explode("\t",$line,2);
                  $check=$dumm[0] ? $dumm:$check;
                  if ($date_from>$check) break;
                  $lines[]=$line;
                  if (sizeof($lines) >= $itemnum) { $check=0; break; }
                  $last='';
                  $l=substr($l,0,$p);
              }
              $last=$l.$last;
          }
          fclose($fp);
      }
  
      $out='';
      if (!$lines[0]) unset($lines[0]); // hack
      $lines=array_reverse($lines);
      foreach ($lines as $line) {
          $dumm=explode("\t",$line,3);
          $line=gmdate("[Y H:i]",$dumm[0]+$options['tz_offset']).
              $dumm[1].': '.$dumm[2];
          $out.=preg_replace("/(".$formatter->wordrule.")/e",
              "\$formatter->link_repl('\\1')",$line).'<br />';
      }
      print $out;
  }
  
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2005/09/07 19:29:46

  Added:       local    chat.js ajax.js
  Log:
  support ajax action: a sample chat action added
  
  Revision  Changes    Path
  1.1                  moniwiki/local/chat.js
  
  Index: chat.js
  ===================================================================
  function sendMsg(obj,url,id) {
     if (obj.value=='') return false;
     nurl=url.replace(/\/ajax/,'\/ajax&value='+obj.value);
     obj.value='';
     var msg=HTTPGet(nurl);
     var chat=document.getElementById(id);
     //var node=document.createElement('li');
     //node.innerHTML=msg;
     //chat.appendChild(node);
     chat.innerHTML=msg;
     return true;
  }
  
  
  
  1.1                  moniwiki/local/ajax.js
  
  Index: ajax.js
  ===================================================================
  /**
   * Only enable Javascript functionality if all required features are supported.
   */
  	
  function isJsEnabled() {
    if (document.jsEnabled == undefined) {
      // Note: ! casts to boolean implicitly.
      document.jsEnabled = !(
       !document.getElementsByTagName ||
       !document.createElement        ||
       !document.createTextNode       ||
       !document.getElementById);
    }
    return document.jsEnabled;
  }
  
  // Global Killswitch
  if (isJsEnabled()) {
  
  
  }
  
  /**
   * Make IE's XMLHTTP object accessible through XMLHttpRequest()
   */
  if (typeof XMLHttpRequest == 'undefined') {
   XMLHttpRequest = function () {
     var msxmls = ['MSXML3', 'MSXML2', 'Microsoft']
     for (var i=0; i < msxmls.length; i++) {
       try {
         return new ActiveXObject(msxmls[i]+'.XMLHTTP')
       }
       catch (e) { }
     }
     throw new Error("No XML component installed!")
   }
  }
  
  /**
   * Creates an HTTP GET request and sends the response to the callback function
   */
  function HTTPGet(uri, callbackFunction, callbackParameter) {
    var xmlHttp = new XMLHttpRequest();
    var bAsync = true;
    if (!callbackFunction)
      bAsync = false;    
    xmlHttp.open('GET', uri, bAsync);
    xmlHttp.send(null);  
  
    if (bAsync) {
      if (callbackFunction) {
        xmlHttp.onreadystatechange = function() {
          if (xmlHttp.readyState == 4)
            callbackFunction(xmlHttp.responseText, xmlHttp, callbackParameter)
        }
      }
      return true;
    }
    else {
      return xmlHttp.responseText;
    }
  }
  
  /**
   * Creates an HTTP POST request and sends the response to the callback function
   */
  function HTTPPost(uri, object, callback_function, callback_parameter) {
    var xmlhttp = new XMLHttpRequest();
    var bAsync = true;
    if (!callback_function)
      bAsync = false;
    xmlhttp.open('POST', uri, bAsync);
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    var form_contents = '';
    for (var i in object)
      form_contents += (form_contents ? '&' : '') + i + '=' + escape(object[i]);
    xmlhttp.send(form_contents);
  
    if (bAsync) {
      if (callback_function)
        xmlhttp.onreadystatechange = function() {
          if (xmlhttp.readyState == 4)
            callback_function(xmlhttp.responseText, xmlhttp, callback_parameter)
        }
      return true;
    } else
      return xmlhttp.responseText;
  }
  
  /**
   * Adds a function to the window onload event
   */
  function addLoadEvent(func) {
    var oldOnload = window.onload;
    if (typeof window.onload != 'function') {
      window.onload = func;
    }
    else {
      window.onload = function() {
        oldOnload();
        func();
      }
    }
  }
  
  /**
   * Retrieves the absolute position of an element on the screen
   */
  function absolutePosition(el) {
    var sLeft = 0, sTop = 0;
    var isDiv = /^div$/i.test(el.tagName);
    if (isDiv && el.scrollLeft) {
      sLeft = el.scrollLeft;
    }
    if (isDiv && el.scrollTop) {
      sTop = el.scrollTop;
    }
    var r = { x: el.offsetLeft - sLeft, y: el.offsetTop - sTop };
    if (el.offsetParent) {
      var tmp = absolutePosition(el.offsetParent);
      r.x += tmp.x;
      r.y += tmp.y;
    }
    return r;
  };
  
  /**
   * Returns true if an element has a specified class name
   */
  function hasClass(node, className) {
    if (node.className == className) {
      return true;
    }
    var reg = new RegExp('(^| )'+ className +'($| )')
    if (reg.test(node.className)) {
      return true;
    }
    return false;
  }
  
  /**
   * Adds a class name to an element
   */
  function addClass(node, className) {
    if (hasClass(node, className)) {
      return false;
    }
    node.className += ' '+ className;
    return true;
  }
  
  /**
   * Removes a class name from an element
   */
  function removeClass(node, className) {
    if (!hasClass(node, className)) {
      return false;
    }
    node.className = eregReplace('(^| )'+ className +'($| )', '', node.className);
    return true;
  }
  
  /**
   * Toggles a class name on or off for an element
   */
  function toggleClass(node, className) {
    if (!removeClass(node, className) && !addClass(node, className)) {
      return false;
    }
    return true;
  }
  
  /**
   * Emulate PHP's ereg_replace function in javascript
   */
  function eregReplace(search, replace, subject) {
    return subject.replace(new RegExp(search,'g'), replace);
  }
  
  /**
   * Removes an element from the page
   */
  function removeNode(node) {
    if (typeof node == 'string') {
      node = document.getElementById(node);
    }
    if (node && node.parentNode) {
      return node.parentNode.removeChild(node);
    }
    else {
      return false;
    }
  }
  
  
  


wkpark      2005/09/07 20:06:52

  Modified:    plugin   RecentChanges.php
  Log:
  add $use_rc_timeago option
  
  Revision  Changes    Path
  1.16      +9 -2      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- RecentChanges.php	5 Sep 2005 16:52:42 -0000	1.15
  +++ RecentChanges.php	7 Sep 2005 11:06:52 -0000	1.16
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.15 2005/09/05 16:52:42 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.16 2005/09/07 11:06:52 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     $options['trail']='';
  @@ -232,8 +232,15 @@
       $title=htmlspecialchars($title);
       $title= $formatter->link_tag($pageurl,"",$title,$target);
   
  -    if (! empty($DBInfo->changed_time_fmt))
  +    if (! empty($DBInfo->changed_time_fmt)) {
         $date= gmdate($DBInfo->changed_time_fmt, $ed_time+$tz_offset);
  +      if ($DBInfo->use_rc_timeago) {
  +        $time_diff=(int)($time_current - $ed_time)/60;
  +        if ($time_diff < 1440) {
  +          $date=sprintf(_("[%sh %sm ago]"),(int)($time_diff/60),$time_diff%60);
  +        }
  +      }
  +    }
   
       if ($DBInfo->show_hosts) {
         if ($showhost && $user == 'Anonymous')
  
  
  


wkpark      2005/09/07 21:29:07

  Modified:    .        wikismiley.php
  Log:
  add {*},{o} like as MoinMoin. add (V)
  
  Revision  Changes    Path
  1.8       +4 -1      moniwiki/wikismiley.php
  
  Index: wikismiley.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikismiley.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- wikismiley.php	31 Aug 2004 16:07:45 -0000	1.7
  +++ wikismiley.php	7 Sep 2005 12:29:07 -0000	1.8
  @@ -1,5 +1,5 @@
   <?php
  -# $Id: wikismiley.php,v 1.7 2004/08/31 16:07:45 wkpark Exp $
  +# $Id: wikismiley.php,v 1.8 2005/09/07 12:29:07 wkpark Exp $
   $smileys=array(
       "X-("=> array(16, 16, 0, "smile/x-(.gif"),
       ":D"=>  array(16, 16, 0, "smile/8-D.gif"),
  @@ -83,9 +83,12 @@
   
       # version 1.0
       "(./)"=>array(16, 16, 0, "smile/checkbox.png"),
  +    "(V)"=>array(16, 16, 0, "smile/checkmark.png"),
       "{OK}"=>array(12, 16, 0, "smile/thumb-up.gif"),
       "{NO}"=>array(12, 16, 0, "smile/thumb-down.gif"),
       "{X}"=>array(16, 16, 0, "smile/icon-error.png"),
  +    "{*}"=>array(15, 15, 0, "smile/star_on.png"),
  +    "{o}"=>array(15, 15, 0, "smile/star_off.png"),
       "{i}"=>array(16, 16, 0, "smile/icon-info.png"),
       "{1}"=>array(15, 13, 0, "smile/prio1.gif"),
       "{2}"=>array(15, 13, 0, "smile/prio2.gif"),
  
  
  


wkpark      2005/09/07 21:29:57

  Added:       imgs/smile checkmark.png star_off.png star_on.png
  Log:
  added
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/smile/checkmark.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/star_off.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/star_on.png
  
  	<<Binary file>>
  
  


wkpark      2005/09/08 11:43:39

  Modified:    plugin   RecentChanges.php
  Log:
  remove global config options and replace it with macro options as
  'daysago' 'timesago'
  
  Revision  Changes    Path
  1.17      +5 -3      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- RecentChanges.php	7 Sep 2005 11:06:52 -0000	1.16
  +++ RecentChanges.php	8 Sep 2005 02:43:39 -0000	1.17
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.16 2005/09/07 11:06:52 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.17 2005/09/08 02:43:39 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     $options['trail']='';
  @@ -59,6 +59,8 @@
         else if ($arg=="nobookmark") $nobookmark=1;
         else if ($arg=="noperma") $perma_icon='';
         else if ($arg=="button") $button=1;
  +      else if ($arg=="timesago") $timesago=1;
  +      else if ($arg=="daysago") $use_daysago=1;
         else if ($arg=="simple") {
           $use_day=0;
           $template=
  @@ -110,7 +112,7 @@
     $lines= $DBInfo->editlog_raw_lines($days,$opts);
   
     // make a daysago button
  -  if ($DBInfo->use_daysago or $_GET['days'] or $opts['ago']) {
  +  if ($use_daysago or $_GET['days']) {
       $msg[0]=_("Show changes for ");
       $agolist=array(-$days,$days,2*$days,3*$days);
       $btn=array();
  @@ -234,7 +236,7 @@
   
       if (! empty($DBInfo->changed_time_fmt)) {
         $date= gmdate($DBInfo->changed_time_fmt, $ed_time+$tz_offset);
  -      if ($DBInfo->use_rc_timeago) {
  +      if ($timesago) {
           $time_diff=(int)($time_current - $ed_time)/60;
           if ($time_diff < 1440) {
             $date=sprintf(_("[%sh %sm ago]"),(int)($time_diff/60),$time_diff%60);
  
  
  


wkpark      2005/09/08 11:44:07

  Modified:    plugin   Keywords.php
  Log:
  more fixes
  
  Revision  Changes    Path
  1.6       +72 -7     moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Keywords.php	5 Sep 2005 16:55:14 -0000	1.5
  +++ Keywords.php	8 Sep 2005 02:44:07 -0000	1.6
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a 'Keywords' plugin for the MoniWiki
   //
  -// $Id: Keywords.php,v 1.5 2005/09/05 16:55:14 wkpark Exp $
  +// $Id: Keywords.php,v 1.6 2005/09/08 02:44:07 wkpark Exp $
   
   define(LOCAL_KEYWORDS,'LocalKeywords');
   
  @@ -75,7 +75,15 @@
       $raw=preg_replace("/\b/",' ',$raw);
       //$raw=preg_replace("/\b([0-9a-zA-Z'\"])\\1+\s*/",' ',$raw);
       $words=preg_split("/\s+|\n/",$raw);
  +
       // remove common words
  +    $common_word_page0=LOCAL_KEYWORDS.'/CommonWords';
  +    $lines0=array();
  +    if ($DBInfo->hasPage($common_word_page0)) {
  +        $p=$DBInfo->getPage($common_word_page0);
  +        $lines0=explode("\n",($p->get_raw_body()));
  +    }
  +
       $lang=$formatter->pi['#language'] ? $formatter->pi['#language']:
           $DBInfo->default_language;
       if ($lang and in_array($lang,$supported_lang)) {
  @@ -83,6 +91,7 @@
           if ($DBInfo->hasPage($common_word_page)) {
               $p=$DBInfo->getPage($common_word_page);
               $lines=explode("\n",($p->get_raw_body()));
  +            $lines=array_merge($lines,$lines0);
               foreach ($lines as $line) {
                   if ($line[0]=='#') continue;
                   $common.=$line."\n";
  @@ -219,13 +228,17 @@
               $btn=_("Update keywords");
           else
               $btn=_("Add keywords");
  -        $form_close="<input type='submit' value='$btn'/></form>\n";
  +        $btn1=_("Add as common words"); 
  +        $form_close="<input type='submit' value='$btn'/>\n";
  +        $form_close.="<input type='submit' name='common' value='$btn1' />\n";
  +        $form_close.="</form>\n";
       }
       return "<div class='cloudView'>".$out."$inp</ul></div>$form_close";
   }
   
   function do_keywords($formatter,$options) {
       global $DBInfo;
  +    $supported_lang=array('en','ko');
   
       $page=$formatter->page->name;
       if (!$DBInfo->hasPage($page)) {
  @@ -241,21 +254,63 @@
           if ($options['keywords']) {
               // following keyword list are acceptable separated with spaces.
               // Chemistry "Physical Chemistry" "Bio Chemistry" ...
  +            $keywords=_stripslashes($options['keywords']);
               $ws=preg_split('/((?<!\S)(["\'])[^\2]+?\2(?!\S)|\S+)/',
  -                $options['keywords'],-1,
  +                $keywords,-1,
                   PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);
               $ws=array_flip(array_unique($ws));
               unset($ws['"']); // delete delims
               unset($ws["'"]);
               unset($ws[' ']);
               $ws=array_flip($ws);
  -            
  +
               $ws= array_map(create_function('$a',
                   'return preg_replace("/^([\"\'])(.*)\\\\1$/","\\\\2",$a);'),
                   $ws); // delete ",'
               if (!is_array($options['key'])) $options['key']=array();
               $options['key']=array_merge($options['key'],$ws);
           }
  +
  +        if ($options['common']) {
  +            $raw="#format plain"; 
  +            $lang=$formatter->pi['#language'] ? $formatter->pi['#language']:'';
  +            if (in_array($lang,$supported_lang))
  +                $common_word_page=LOCAL_KEYWORDS.'/CommonWords'.ucfirst($lang);
  +            else
  +                $common_word_page=LOCAL_KEYWORDS.'/CommonWords';
  +
  +            if ($DBInfo->hasPage($common_word_page)) {
  +                $p=$DBInfo->getPage($common_word_page);
  +                if (!$p->exists()) $dict=array();
  +                else {
  +                    $raw=$p->get_raw_body();
  +                    $raw=rtrim($raw);
  +                    $lines=explode("\n",$raw);
  +                    $body='';
  +                    foreach ($lines as $line) {
  +                        if ($line[0]=='#' or $line=='') continue;
  +                        $body.=$line."\n";
  +                    }
  +                    $body=rtrim($body);
  +                    $dict=explode("\n",$body);
  +                }
  +                $commons=array_diff(array_values($options['key']),$dict);
  +            } else {
  +                $p=$DBInfo->getPage($common_word_page);
  +                $commons=$options['key'];
  +            }
  +            if (!empty($commons)) {
  +                sort($commons);
  +                $raw.="\n".implode("\n",$commons);
  +                $p->write($raw);
  +                $DBInfo->savePage($p,"Common words are added",$options);
  +            }
  +            $formatter->send_title(sprintf(_("Common words are updated"),
  +                $options['page']),'', $options);
  +            $formatter->send_footer($args,$options);
  +            return;
  +        }
  +
           $cache=new Cache_text('keywords');
           $keys=$options['key'];
           $keys=array_flip($keys);
  @@ -271,7 +326,7 @@
               $lines=explode("\n",$raw);
               $body='';
               foreach ($lines as $line) {
  -                if ($line[0]=='#') continue;
  +                if ($line[0]=='#' or $line=='') continue;
                   $body.=$line."\n";
               }
               $body=rtrim($body);
  @@ -279,6 +334,7 @@
           }
           $nkeys=array_diff(array_values($options['key']),$dict);
           if (!empty($nkeys)) {
  +            sort($nkeys);
               $raw.="\n".implode("\n",$nkeys);
               $p->write($raw);
               $DBInfo->savePage($p,"New keywords are added",$options);
  @@ -296,7 +352,8 @@
               $body=$formatter->page->get_raw_body();
               $pi=$formatter->get_instructions($dum);
               if ($pi['#keywords']) {
  -                $nbody= preg_replace('/#keywords\s+'.$pi['#keywords'].'/',
  +                $tag=preg_quote($pi['#keywords']);
  +                $nbody= preg_replace('/^#keywords\s+'.$tag.'/',
                       '#keywords '.$ret,$body,1);
                   if ($nbody!=$body) $ok=1;
               } else {
  @@ -314,11 +371,19 @@
               }
           } else {
               $link=$formatter->link_url(_rawurlencode($page),'');
  +            $keys=explode(',',$ret);
  +            $ret='';
  +            foreach ($keys as $key) {
  +                if ($key and strpos($key,' ')!==false) {
  +                    $key='"'.$key.'"';
  +                }
  +                $ret.=$key.' ';
  +            }
               $btn=_("Update with these Keywords"); 
               $form="<form method='post' action='$link'>";
               $form.='<input type="hidden" name="action" value="keywords" />';
               $form.='<input type="hidden" name="update" value="1" />';
  -            $form.='<input type="hidden" name="keywords" value="'.$ret.'" />';
  +            $form.='<input type="hidden" name="keywords" value=\''.$ret.'\' />';
               $form.="<input type='submit' value='$btn' />\n";
               $form.="</form>";
               print $form;
  
  
  


wkpark      2005/09/08 11:45:50

  Modified:    plugin   chat.php
  Log:
  more fixes
  
  Revision  Changes    Path
  1.2       +57 -27    moniwiki/plugin/chat.php
  
  Index: chat.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/chat.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- chat.php	7 Sep 2005 10:29:46 -0000	1.1
  +++ chat.php	8 Sep 2005 02:45:49 -0000	1.2
  @@ -5,23 +5,45 @@
   //
   // Usage: [[Chat]]
   //
  -// $Id: chat.php,v 1.1 2005/09/07 10:29:46 wkpark Exp $
  +// $Id: chat.php,v 1.2 2005/09/08 02:45:49 wkpark Exp $
   // http://cvs.drupal.org/viewcvs/drupal/contributions/modules/chat/
   
  -function macro_Chat($formatter,$value) {
  +function macro_Chat($formatter,$value,$options=array()) {
       global $DBInfo;
  +    $chat_script=&$GLOBALS['chat_script'];
  +    $ajax_script=&$GLOBALS['ajax_script'];
  +
  +    $args=explode(',',$value);
  +    $itemnum=20; // default
  +
  +    foreach ($args as $arg) {
  +        if (is_int($arg)) {
  +            $itemnum=$arg;
  +        } else {
  +            $tag=str_replace(' ','',ucfirst($arg));
  +        }
  +    }
  +
       $url=$formatter->link_url($formatter->page->name,
           '?action=chat/ajax');
       ob_start();
  -    $formatter->ajax_repl('chat',array('value'=>'','room'=>$value));
  +    $formatter->ajax_repl('chat',
  +        array('value'=>'','room'=>'chat'.$tag,'item'=>$itemnum,
  +        'tz_offset'=>$formatter->tz_offset));
       //ob_end_flush();
       $msg=ob_get_contents();
       ob_end_clean();
  -    return <<<EOF
  +    if (!$chat_script)
  +        $script=<<<EOF
   <script type='text/javascript' src='$DBInfo->url_prefix/local/ajax.js'></script>
   <script type='text/javascript' src='$DBInfo->url_prefix/local/chat.js'></script>
  -<div id="chat0">$msg</div>
  -<input type='text' size='40' class='wikiChat' onChange='sendMsg(this,"$url","chat0")' />
  +EOF;
  +    $ajax_script=1;
  +    $chat_script=1;
  +    return <<<EOF
  +$script
  +<div id="chat$tag">$msg</div>
  +<input type='text' size='40' class='wikiChat' onChange='sendMsg(this,"$url","chat$tag",$itemnum)' />
   EOF;
   }
   
  @@ -40,10 +62,10 @@
           $udb=new UserDB($DBInfo);
           $udb->checkUser($user);
       }
  -    $date=gmdate("[Y m:i]",time());
       $value=_stripslashes($options['value']);
  -
  -    $itemnum=20; // XXX
  +    $itemnum=_stripslashes($options['item']);
  +    if ($itemnum > 50 or $itemnum <= 0) $itemnum=20;
  +    $room=escapeshellcmd(_stripslashes($options['room']));
   
       if (!file_exists($DBInfo->upload_dir.'/Chat')) {
           umask(000);
  @@ -51,57 +73,65 @@
           umask(022);
       }
           
  -    if ($options['room']) {
  -        $md5=md5($options['room']);
  -        $log=$DBInfo->upload_dir.'/Chat/'.$md5.'.log';
  -    } else {
  +    if ($room== 'chat') {
           $log=$DBInfo->upload_dir.'/Chat/default.log';
  +    } else {
  +        $room=substr($room,4);
  +        $log=$DBInfo->upload_dir.'/Chat/'.$room.'.log';
       }
       $lines=array();
       $fp=fopen($log,'a+');
  -    if (is_resource($fp)) {
  +    while (is_resource($fp) and ($fz=filesize($log))>0) {
           fseek($fp,0,SEEK_END);
           if ($value) {
               fwrite($fp,time()."\t".$user->id."\t".rtrim($value)."\n");
           }
           fseek($fp,0,SEEK_END);
  -        $fz=filesize($log);
  +        if ($fz < 512) {
  +            fseek($fp,0);
  +            $ll=rtrim(fread($fp,512));
  +            $lines=explode("\n",$ll);
  +            break;   
  +        }
           $a=-1;
           $end=0;
           $last='';
           $check=time();
           $date_from=$check-24*60*60; // one day
           while($date_from < $check and !feof($fp)){
  -            $a-=1024;
  -            if (-$a > $fz) { $a=-$fz;}
  +            $a-=512;
  +            // if (-$a > $fz) { $a=-$fz; print 'wwwww';}
               fseek($fp,$a,SEEK_END);
  -            $l=fread($fp,1024);
  +            $l=fread($fp,512);
               while(($p=strrpos($l,"\n"))!==false) {
                   $line=substr($l,$p+1).$last;
  +                $l=substr($l,0,$p);
                   $dumm=explode("\t",$line,2);
  -                $check=$dumm[0] ? $dumm:$check;
  +                $check=$dumm[0];
                   if ($date_from>$check) break;
                   $lines[]=$line;
                   if (sizeof($lines) >= $itemnum) { $check=0; break; }
                   $last='';
  -                $l=substr($l,0,$p);
               }
               $last=$l.$last;
           }
           fclose($fp);
  +        $lines=array_reverse($lines);
  +        break;   
       }
   
       $out='';
  -    if (!$lines[0]) unset($lines[0]); // hack
  -    $lines=array_reverse($lines);
  +    $smiley_rule='/(?<=\s|^|>)('.$DBInfo->smiley_rule.')(?=\s|$)/e';
  +    $smiley_repl="\$formatter->smiley_repl('\\1')";
       foreach ($lines as $line) {
           $dumm=explode("\t",$line,3);
  -        $line=gmdate("[Y H:i]",$dumm[0]+$options['tz_offset']).
  -            $dumm[1].': '.$dumm[2];
  -        $out.=preg_replace("/(".$formatter->wordrule.")/e",
  -            "\$formatter->link_repl('\\1')",$line).'<br />';
  +        $line=gmdate("H:i:s",$dumm[0]+$options['tz_offset']).
  +            '&lt;['.$dumm[1].']> '.$dumm[2];
  +        $line=preg_replace($smiley_rule,$smiley_repl,$line);
  +        $out.='<li>'.preg_replace("/(".$formatter->wordrule.")/e",
  +            "\$formatter->link_repl('\\1')",$line).'</li>';
       }
  -    print $out;
  +    print '<ul>'.$out.'</ul>';
   }
   
   // vim:et:sts=4:
  
  
  


wkpark      2005/09/08 12:32:42

  Modified:    .        wiki.php
  Log:
  more cleanup editlog parsing.
  fixed AliasPage stuff and add a missing method 'hasPage()' to the MetaDB class
  
  Revision  Changes    Path
  1.245     +24 -9     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.244
  retrieving revision 1.245
  diff -u -r1.244 -r1.245
  --- wiki.php	7 Sep 2005 10:24:28 -0000	1.244
  +++ wiki.php	8 Sep 2005 03:32:42 -0000	1.245
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.244 2005/09/07 10:24:28 wkpark Exp $
  +// $Id: wiki.php,v 1.245 2005/09/08 03:32:42 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.244 $',1,-1);
  +$_revision = substr('$Revision: 1.245 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -335,6 +335,10 @@
       if ($mode) return array();
       return false;
     }
  +
  +  function hasPage($pgname) {
  +    return false;
  +  }
     function getAllPages() {
       return array();
     }
  @@ -684,13 +688,14 @@
   
       if ($this->use_alias)
         $this->alias=new MetaDB_text($this->aliaspage);
  +    else
  +      $this->alias=new MetaDB();
  +
       if ($this->shared_metadb)
         $this->metadb=new MetaDB_dba($this->shared_metadb,$this->dba_type);
       if (!$this->metadb->metadb) {
  -      if ($this->alias)
  -        $this->metadb=$this->alias;
  -      else
  -        $this->metadb=new MetaDB();
  +      if ($this->alias) $this->metadb=$this->alias;
  +      else $this->metadb=new MetaDB();
       } else {
         $this->metadb->attachDB($this->alias);
       }
  @@ -866,16 +871,25 @@
       $itemnum=$opts['items'] ? $opts['items']:200;
   
       $fp= fopen($this->editlog_name, 'r');
  -    if(is_resource($fp)){
  -      $a=-1;
  +    while (is_resource($fp) and ($fz=filesize($this->editlog_name))>0){
  +      fseek($fp,0,SEEK_END);
  +      if ($fz < 1024) {
  +        fseek($fp,0);
  +        $ll=rtrim(fread($fp,1024));
  +        $lines=explode("\n",$ll);
  +        break;   
  +      }
  +      $a=-1; // hack, don't read last \n char.
         $last='';
         fseek($fp,0,SEEK_END);
         while($date_from < $check and !feof($fp)){
           $a-=1024;
  +        if (-$a > $fz) { $a=-$fz;}
           fseek($fp,$a,SEEK_END);
           $l=fread($fp,1024);
           while(($p=strrpos($l,"\n"))!==false) {
             $line=substr($l,$p+1).$last;
  +          $l=substr($l,0,$p);
             $dumm=explode("\t",$line,4);
             $check=$dumm[2];
             if ($date_from>$check) break;
  @@ -885,7 +899,6 @@
               if (sizeof($pages) >= $itemnum) { $check=0; break; }
             }
             $last='';
  -          $l=substr($l,0,$p);
           }
           $last=$l.$last;
         }
  @@ -893,6 +906,7 @@
         #print sizeof($lines);
         #print_r($lines);
         fclose($fp);
  +      break;   
       }
   
       if ($opts['quick']) {
  @@ -3527,6 +3541,7 @@
     $formatter = new Formatter($page,$options);
     $formatter->macro_repl('InterWiki','',array('init'=>1));
     $formatter->refresh=$refresh;
  +  $formatter->tz_offset=$options['tz_offset'];
   
     // check black list
     if (!empty($DBInfo->blacklist)) {
  
  
  


wkpark      2005/09/08 21:28:30

  Modified:    plugin   chat.php
  Log:
  more fixes and support IE
  
  Revision  Changes    Path
  1.3       +14 -4     moniwiki/plugin/chat.php
  
  Index: chat.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/chat.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- chat.php	8 Sep 2005 02:45:49 -0000	1.2
  +++ chat.php	8 Sep 2005 12:28:29 -0000	1.3
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Chat]]
   //
  -// $Id: chat.php,v 1.2 2005/09/08 02:45:49 wkpark Exp $
  +// $Id: chat.php,v 1.3 2005/09/08 12:28:29 wkpark Exp $
   // http://cvs.drupal.org/viewcvs/drupal/contributions/modules/chat/
   
   function macro_Chat($formatter,$value,$options=array()) {
  @@ -43,7 +43,9 @@
       return <<<EOF
   $script
   <div id="chat$tag">$msg</div>
  -<input type='text' size='40' class='wikiChat' onChange='sendMsg(this,"$url","chat$tag",$itemnum)' />
  +<form onSubmit='return false'>
  +<input type='text' size='40' class='wikiChat' onkeypress='sendMsg(event,this,"$url","chat$tag",$itemnum);' />
  +</form>
   EOF;
   }
   
  @@ -62,7 +64,9 @@
           $udb=new UserDB($DBInfo);
           $udb->checkUser($user);
       }
  +    // %uD55C%uD558
       $value=_stripslashes($options['value']);
  +    $value=preg_replace('/%u([a-f0-9]{4})/i','&#x\\1;',$value);
       $itemnum=_stripslashes($options['item']);
       if ($itemnum > 50 or $itemnum <= 0) $itemnum=20;
       $room=escapeshellcmd(_stripslashes($options['room']));
  @@ -81,11 +85,12 @@
       }
       $lines=array();
       $fp=fopen($log,'a+');
  -    while (is_resource($fp) and ($fz=filesize($log))>0) {
  +    while (is_resource($fp)) {
           fseek($fp,0,SEEK_END);
           if ($value) {
               fwrite($fp,time()."\t".$user->id."\t".rtrim($value)."\n");
           }
  +        if (($fz=filesize($log))==0) break;
           fseek($fp,0,SEEK_END);
           if ($fz < 512) {
               fseek($fp,0);
  @@ -120,6 +125,11 @@
           break;   
       }
   
  +    #ob_start();
  +    #print_r($_GET);
  +    #$debug=ob_get_contents();
  +    #ob_end_clean();
  +
       $out='';
       $smiley_rule='/(?<=\s|^|>)('.$DBInfo->smiley_rule.')(?=\s|$)/e';
       $smiley_repl="\$formatter->smiley_repl('\\1')";
  @@ -131,7 +141,7 @@
           $out.='<li>'.preg_replace("/(".$formatter->wordrule.")/e",
               "\$formatter->link_repl('\\1')",$line).'</li>';
       }
  -    print '<ul>'.$out.'</ul>';
  +    print '<ul>'.$debug.$out.'</ul>';
   }
   
   // vim:et:sts=4:
  
  
  


wkpark      2005/09/08 21:29:01

  Modified:    plugin   Keywords.php
  Log:
  more fixes
  
  Revision  Changes    Path
  1.7       +15 -4     moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- Keywords.php	8 Sep 2005 02:44:07 -0000	1.6
  +++ Keywords.php	8 Sep 2005 12:29:01 -0000	1.7
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a 'Keywords' plugin for the MoniWiki
   //
  -// $Id: Keywords.php,v 1.6 2005/09/08 02:44:07 wkpark Exp $
  +// $Id: Keywords.php,v 1.7 2005/09/08 12:29:01 wkpark Exp $
   
   define(LOCAL_KEYWORDS,'LocalKeywords');
   
  @@ -11,7 +11,7 @@
       global $DBInfo;
   define(MAX_FONT_SZ,24);
   define(MIN_FONT_SZ,10);
  -    $supported_lang=array('en','ko');
  +    $supported_lang=array('ko');
   
       $limit=$options['limit'] ? $options['limit']:40;
       $opts=explode(',',$value);
  @@ -229,16 +229,26 @@
           else
               $btn=_("Add keywords");
           $btn1=_("Add as common words"); 
  +        $btn2=_("Unselect all"); 
           $form_close="<input type='submit' value='$btn'/>\n";
           $form_close.="<input type='submit' name='common' value='$btn1' />\n";
  -        $form_close.="</form>\n";
  +        $form_close.="<input type='button' value='$btn2' onClick='UncheckAll(this)' />\n";
  +        $form_close.="<select name='lang'><option>----</option>\n";
  +        foreach ($supported_lang as $l) {
  +            $form_close.="<option value='$l'>$l</option>\n";
  +        }
  +        $form_close.="</select>\n</form>\n";
  +        $form_close.=<<<EOF
  +<script type='text/javascript' src='$DBInfo->url_prefix/local/checkbox.js'>
  +</script>
  +EOF;
       }
       return "<div class='cloudView'>".$out."$inp</ul></div>$form_close";
   }
   
   function do_keywords($formatter,$options) {
       global $DBInfo;
  -    $supported_lang=array('en','ko');
  +    $supported_lang=array('ko');
   
       $page=$formatter->page->name;
       if (!$DBInfo->hasPage($page)) {
  @@ -274,6 +284,7 @@
           if ($options['common']) {
               $raw="#format plain"; 
               $lang=$formatter->pi['#language'] ? $formatter->pi['#language']:'';
  +            $lang=$options['lang'] ? $options['lang']:$lang;
               if (in_array($lang,$supported_lang))
                   $common_word_page=LOCAL_KEYWORDS.'/CommonWords'.ucfirst($lang);
               else
  
  
  


wkpark      2005/09/08 21:36:48

  Added:       local    checkbox.js
  Log:
  add a javascript to handle checkboxes
  
  Revision  Changes    Path
  1.1                  moniwiki/local/checkbox.js
  
  Index: checkbox.js
  ===================================================================
  function UncheckAll(obj,idx) {
     var form;
     var elem;
     if (typeof obj == 'string') {
       form=document.getElementById(obj);
       elem=form.elements;
     } else if (obj==undefined) {
       form=document.getElementsByTagName('form')[idx];
       elem=form.elements;
     } else {
       elem=obj.parentNode.getElementsByTagName('input');
     }
     for (i=0;i<elem.length;i++) {
        if (elem[i].type=='checkbox' && elem[i].checked==1) {
          elem[i].checked=0;
        }
     }
  }
  
  function CheckAll(obj,idx) {
     var form;
     var elem;
     if (typeof obj == 'string') {
       form=document.getElementById(obj);
       elem=form.elements;
     } else if (obj==undefined) {
       form=document.getElementsByTagName('form')[idx];
       elem=form.elements;
     } else {
       elem=obj.getElementsByTagName('input');
     }
     for (i=0;i<elem.length;i++) {
        if (elem[i].type=='checkbox' && elem[i].checked==0) {
          elem[i].checked=1;
        }
     }
  }
  
  function ToggleAll(obj,idx) {
     var form;
     var elem;
     if (typeof obj == 'string') {
       form=document.getElementById(obj);
       elem=form.elements;
     } else if (obj==undefined) {
       form=document.getElementsByTagName('form')[idx];
       elem=form.elements;
     } else {
       form=obj;
       elem=obj.getElementsByTagName('input');
     }
     for (i=0;i<elem.length;i++) {
        if (elem[i].type=='checkbox') {
          if (elem[i].checked==0) elem[i].checked=1;
          else elem[i].checked=0;
        }
     }
  }
  
  
  
  


wkpark      2005/09/08 22:16:32

  Modified:    plugin   chat.php
  Log:
  more fixes: use setInterval() to refresh messages
  
  Revision  Changes    Path
  1.4       +10 -1     moniwiki/plugin/chat.php
  
  Index: chat.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/chat.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- chat.php	8 Sep 2005 12:28:29 -0000	1.3
  +++ chat.php	8 Sep 2005 13:16:32 -0000	1.4
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Chat]]
   //
  -// $Id: chat.php,v 1.3 2005/09/08 12:28:29 wkpark Exp $
  +// $Id: chat.php,v 1.4 2005/09/08 13:16:32 wkpark Exp $
   // http://cvs.drupal.org/viewcvs/drupal/contributions/modules/chat/
   
   function macro_Chat($formatter,$value,$options=array()) {
  @@ -46,6 +46,11 @@
   <form onSubmit='return false'>
   <input type='text' size='40' class='wikiChat' onkeypress='sendMsg(event,this,"$url","chat$tag",$itemnum);' />
   </form>
  +<script language='javascript'>
  +<!--
  +setInterval('sendMsg("poll",null,"$url","chat$tag",$itemnum)',10000);
  +//-->
  +</script>
   EOF;
   }
   
  @@ -141,6 +146,10 @@
           $out.='<li>'.preg_replace("/(".$formatter->wordrule.")/e",
               "\$formatter->link_repl('\\1')",$line).'</li>';
       }
  +    if ($options['option_method']=='ajax') {
  +        $formatter->header('Expires','0');
  +        $formatter->header('Pragma','no-cache');
  +    }
       print '<ul>'.$debug.$out.'</ul>';
   }
   
  
  
  


wkpark      2005/09/08 22:21:28

  Modified:    local    chat.js
  Log:
  use onkeypress instead of onchange.
  
  Revision  Changes    Path
  1.2       +28 -5     moniwiki/local/chat.js
  
  Index: chat.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/chat.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- chat.js	7 Sep 2005 10:29:46 -0000	1.1
  +++ chat.js	8 Sep 2005 13:21:28 -0000	1.2
  @@ -1,12 +1,35 @@
  -function sendMsg(obj,url,id) {
  -   if (obj.value=='') return false;
  -   nurl=url.replace(/\/ajax/,'\/ajax&value='+obj.value);
  -   obj.value='';
  +function sendMsg(ev,obj,url,id,num) {
  +   var value='';
  +   var cc='';
  +   var ch='';
  +   var e;
  +   if (ev!='poll') {
  +     e = ev ? ev : window.event;
  +     if(ev) { // for Mozilla
  +       cc=e.keyCode;
  +       if(e.charCode>0) {
  +         ch=String.fromCharCode(e.charCode);
  +       }
  +     } else { // for IE
  +       if(e.keyCode>0) {
  +         ch=String.fromCharCode(e.keyCode);
  +         cc=e.keyCode;
  +       }
  +     }
  +     if (cc!=13) return;
  +   }
  +
  +   if (obj!=null) value=escape(obj.value);
  +   nurl=url.replace(/\/ajax/,
  +      '\/ajax&value='+value+'&room='+id+'&item='+num);
  +   if (obj!=null) obj.value='';
      var msg=HTTPGet(nurl);
      var chat=document.getElementById(id);
      //var node=document.createElement('li');
      //node.innerHTML=msg;
      //chat.appendChild(node);
      chat.innerHTML=msg;
  -   return true;
  +
  +   return;
   }
  +
  
  
  


wkpark      2005/09/08 22:46:15

  Modified:    .        wiki.php
  Log:
  fix sistersites() method reported by hey
  
  Revision  Changes    Path
  1.246     +7 -5      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.245
  retrieving revision 1.246
  diff -u -r1.245 -r1.246
  --- wiki.php	8 Sep 2005 03:32:42 -0000	1.245
  +++ wiki.php	8 Sep 2005 13:46:14 -0000	1.246
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.245 2005/09/08 03:32:42 wkpark Exp $
  +// $Id: wiki.php,v 1.246 2005/09/08 13:46:14 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.245 $',1,-1);
  +$_revision = substr('$Revision: 1.246 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -257,7 +257,7 @@
       $sisters=dba_fetch($pagename,$this->metadb);
       $addons=$this->aux->getSisterSites($pagename,$mode);
   
  -    if ($twins)
  +    if ($sisters)
         $ret='wiki:'.str_replace(' ',":$pagename wiki:",$sisters).":$pagename";
       $pagename=_preg_search_escape($pagename);
       if ($addons) $ret=rtrim($addons.' '.$ret);
  @@ -328,9 +328,11 @@
     function MetaDB() {
       return;
     }
  -  function getSisterSites($pagename) {
  -    return "";
  +  function getSisterSites($pagename,$mode=1) {
  +    if ($mode) return '';
  +    return false;
     }
  +
     function getTwinPages($pagename,$mode=1) {
       if ($mode) return array();
       return false;
  
  
  


wkpark      2005/09/10 18:21:05

  Modified:    .        wiki.php
  Log:
  use (?U) in some regexp
  fix smiley rule to properly render in headings
  
  Revision  Changes    Path
  1.247     +8 -6      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.246
  retrieving revision 1.247
  diff -u -r1.246 -r1.247
  --- wiki.php	8 Sep 2005 13:46:14 -0000	1.246
  +++ wiki.php	10 Sep 2005 09:21:04 -0000	1.247
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.246 2005/09/08 13:46:14 wkpark Exp $
  +// $Id: wiki.php,v 1.247 2005/09/10 09:21:04 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.246 $',1,-1);
  +$_revision = substr('$Revision: 1.247 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -1492,8 +1492,10 @@
                        "/\^([^ \^]+)\^(?=\s|$)/","/\^\^([^ \^][^\^]+[^ \^])\^\^(?!^)/",
                        "/(?<!,),,([^ ,]+),,(?!,)/",
                        "/(?<!_)__((?:(?<!_)_(?!_)|[^_])+)__(?!_)/","/^(-{4,})/e",
  -                     "/(?<!-)--([^-]+[^\s])--(?!-)/",
  -                     "/(?<!~)~~([^~]+[^\s])~~(?!~)/",
  +                     "/(?<!-)--(?U)([^\s].+[^\s])--(?!-)/",
  +                     "/(?<!~)~~(?U)([^\s].+[^\s])~~(?!~)/",
  +                     #"/(?<!-)--([^-]+[^\s])--(?!-)/",
  +                     #"/(?<!~)~~([^~]+[^\s])~~(?!~)/",
                        #"/(\\\\\\\\)$/", # tex, pmWiki
                        );
       $this->baserepl=array("&lt;\\1","&#96;\\1'","<tt class='wiki'>\\1</tt>",
  @@ -1515,7 +1517,7 @@
       
       # set smily_rule,_repl
       if ($DBInfo->smileys) {
  -      $smiley_rule='/(?<=\s|^|>)('.$DBInfo->smiley_rule.')(?=\s|$)/e';
  +      $smiley_rule='/(?<=\s|^|>)('.$DBInfo->smiley_rule.')(?=\s|<|$)/e';
         $smiley_repl="\$this->smiley_repl('\\1')";
   
         $this->extrarule[]=$smiley_rule;
  @@ -2417,7 +2419,7 @@
       $indent_list[0]=0;
       $indent_type[0]="";
   
  -    $wordrule="({{{([^}]+)}}})|".
  +    $wordrule="({{{(?U)(.+)}}})|".
                 "\[\[([A-Za-z0-9]+(\(((?<!\]\]).)*\))?)\]\]|"; # macro
       if ($DBInfo->inline_latex) # single line latex syntax
         $wordrule.="(?<=\s|^|>)\\$([^\\$]+)\\$(?:\s|$)|".
  
  
  


wkpark      2005/09/10 18:48:43

  Modified:    .        wiki.php
  Log:
  revert last thing related with rendering of headings/smiley rule
  
  Revision  Changes    Path
  1.248     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.247
  retrieving revision 1.248
  diff -u -r1.247 -r1.248
  --- wiki.php	10 Sep 2005 09:21:04 -0000	1.247
  +++ wiki.php	10 Sep 2005 09:48:43 -0000	1.248
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.247 2005/09/10 09:21:04 wkpark Exp $
  +// $Id: wiki.php,v 1.248 2005/09/10 09:48:43 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.247 $',1,-1);
  +$_revision = substr('$Revision: 1.248 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -1517,7 +1517,7 @@
       
       # set smily_rule,_repl
       if ($DBInfo->smileys) {
  -      $smiley_rule='/(?<=\s|^|>)('.$DBInfo->smiley_rule.')(?=\s|<|$)/e';
  +      $smiley_rule='/(?<=\s|^|>)('.$DBInfo->smiley_rule.')(?=\s|$)/e';
         $smiley_repl="\$this->smiley_repl('\\1')";
   
         $this->extrarule[]=$smiley_rule;
  @@ -2193,7 +2193,7 @@
   
       $alt=str_replace("<","&lt;",$smiley);
   
  -    return "<img src='$this->imgs_dir/$img' align='middle' alt='$alt' title='$alt' />";
  +    return "<img src='$this->imgs_dir/$img' border='0' align='middle' alt='$alt' title='$alt' />";
     }
   
     function link_url($pageurl,$query_string="") {
  
  
  


wkpark      2005/09/11 16:27:48

  Added:       plugin   MoniCalendar.php
  Log:
  new Event calendar macro added
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/MoniCalendar.php
  
  Index: MoniCalendar.php
  ===================================================================
  <?php
  // Copyright 2005 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a sample plugin for the MoniWiki
  //
  // Usage: [[Test]]
  //
  // $Id: MoniCalendar.php,v 1.1 2005/09/11 07:27:48 wkpark Exp $
  
  function _parseDays($formatter,$page,$options=array()) {
      $color_table=
          array('{*}'=>'red','/!\\'=>'blue','(!)'=>'green',
              '<!>'=>'yellow',':('=>'purple');
      $month=$options['month'] ? $options['month']:
          gmdate('m',time()+$formatter->tz_offset);
  
      $week_table=array('sun'=>0,'mon'=>1,'tue'=>2,'wed'=>3,'thu'=>4,'fri'=>5,
          'sat'=>6);
  
      $lines=explode("\n",$page);
      foreach ($lines as $line) {
          if ($line=='' or $line[0]!=' ') continue;
          if (preg_match('/^\s+\*\s((\d{2}|\d{4})[-\/,])?(\d{1,2})[-\/,](\d{1,2})\s(.*)$/',$line,$match)) {
              if ($match[3] >= 1 and $match[3] <=12 and $match[4]<=31) {
                  $mon=sprintf("%02d",$match[3]);
                  $day=sprintf("%d",$match[4]);
                  $info[$mon][$day][]=preg_replace('/</','&lt;',$match[5]).' ';
              }
              if (preg_match('/(\{\*\}|\(\!\)|\/\!\\\\|<!>|:\()/',$match[5],$m)) {
                  if ($color_table[$m[1]]) {
                      $infocolor[$mon][$day][]=$color_table[$m[1]];
                  }
              }
          } else if (preg_match('/^\s+\*\s'.
              '(\d{1,2})[-\/,](\d{1,2})\-(\d{1,2})[-\/,](\d{1,2})\s(.*)$/',
              $line,$match)) {
              if ($match[1] >= 1 and $match[1] <=12 and $match[2]<=31 and
                  $match[3] >= 1 and $match[3] <=12 and $match[4]<=31) {
                  if ($match[1]>$match[3]) continue;
                  if ($match[2]>=$match[4]) continue;
                  if (preg_match('/(\{\*\}|\(\!\)|\/\!\\\\|<!>|:\(|#[a-f0-9]{3}|#[a-f0-9]{6})\s/i',$match[5],$m)) {
                      if ($m[1][0]=='#') {
                          $color='colorbar" style="background-color:'.$m[1];
                          $text=substr($match[5],strlen($m[1]));
                      } else {
                          $color=$color_table[$m[1]];
                          $text=$match[5];
                      }
  
                      $mon0=sprintf("%02d",$match[1]);
                      $mon1=sprintf("%02d",$match[3]);
                      $text=preg_replace('/</','&lt;',$text);
                      $coloring[$mon0][$match[2]][]=
                          $color."\">$text</li>";
                      // XX month for
                      for ($i=$match[2]+1;$i<$match[4];$i++) {
                          $coloring[$mon0][$i][]=$color.'"></li>';
                      }
                      // $extra_class
                      $coloring[$mon0][$i][]=
                          $color."\" $extra_class>{END} </li>";
                  }
              }
          } else if (preg_match('/^\s+\*\s'.
              '(sun|mon|tue|wed|thu|fri|sat)\s(.*)$/i',$line,$match)) {
  
              $week=$week_table[strtolower($match[1])];
              $info['week'][$week][]=
                  preg_replace('/</','&lt;',$match[2]).' ';
          }
      }
      return array($info,$infocolor,$coloring);
  }
  
  function macro_MoniCalendar($formatter,$value) {
      global $DBInfo;
      $color_table=
          array('{*}'=>'red','/!\\'=>'blue','(!)'=>'green',
              '<!>'=>'yellow',':('=>'purple');
      static $day_headings= array('Sunday','Monday','Tuesday','Wednesday',
          'Thursday','Friday','Saturday');
  
      $date=$_GET['date'];
      $tz_offset=&$formatter->tz_offset;
  
      $prev_tag='&laquo;';
      $next_tag='&raquo;';
      $now=time();
  
      preg_match("/^(('|\")([^\\2]+)\\2)?,?((\d{4})-?(\d{2}))?,?\s*(.+)?$/i",$value,$match);
  
      #print_r($match);
      // GET argument has priority
      if ($date) {
          preg_match("/^((\d{4})-?(\d{2})-?(\d{2})?)$/i",$date,$match2);
          $year= $match2[2];
          $month= $match2[3];
          $day= $match2[4];
      } else if ($match[4]) {
          $year= $match[5];
          $month= $match[6];
      }
      /* Validate date. Use system date, if date is not validated */
      if ($month <1 || $month > 12) {
          $year= gmdate('Y',$tz_offset+$now);
          $month= gmdate('m',$tz_offset+$now);
      }
      $date=$year.$month;
      $month=intval($month);
      $year=intval($year);
  
      if ($match[3])
          $pagename=$match[3];
      else
          $pagename=$formatter->page->name;
      if ($match[7]) {
          $args=explode(',',$match[7]);
  
          if (in_array ("blog", $args)) $mode='blog';
          if (in_array ("noweek", $args)) $day_heading_length=0;
          if (in_array ("shortweek", $args)) $day_heading_length=1;
          if (in_array ("yearlink", $args)) $yearlink=1;
          if (in_array ("onlyweek", $args)) $oneweek=1;
          if (in_array ("oneweek", $args)) $oneweek=1;
          if (in_array ("column", $args)) {$oneweek=1;$column=1;}
          $pages=array_diff($args,array('blog','noweek','shortweek','yearlink','onlyweek','oneweek','column'));
          $pglist=array();
          if ($pages) {
              foreach ($pages as $pg) {
                  if ($DBInfo->hasPage($pg)) $pglist[]=$pg;
              }
          }
      }
      $pglist[]=$pagename;
      $body='';
      foreach ($pglist as $pg) {
          if ($DBInfo->hasPage($pg)) {
              $p=$DBInfo->getPage($pg);
              $body.=$p->_get_raw_body()."\n";
          }
      }
  
      $prev_month=gmdate('Ym',mktime(0,0,0,$month - 1,1,$year)+$tz_offset);
      $next_month=gmdate('Ym',mktime(0,0,0,$month + 1,1,$year)+$tz_offset);
      if ($yearlink) {
          $prev_year=gmdate('Ym',mktime(0,0,0,$month,1,$year - 1)+$tz_offset);
          $next_year=gmdate('Ym',mktime(0,0,0,$month,1,$year + 1)+$tz_offset);
  
          $year_prev_tag='&laquo;';
          $year_next_tag='&raquo;';
          $prev_tag='&lsaquo;';
          $next_tag='&rsaquo;';
      }
  
      list($today,$weektoday)= explode(';',gmdate('d;w',$now+$tz_offset));
      $day = $day ? $day:$today;
      $day = $oneweek ? $day:1;
  
      if ($oneweek) {
          $prev_week=gmdate('Ymd',mktime(0,0,0,$month,$day-7,$year)+$tz_offset);
          $next_week=gmdate('Ymd',mktime(0,0,0,$month,$day+7,$year)+$tz_offset);
      }
  
      $start_day = mktime (0,0,0, $month, $day, $year);
      // get info about the first day of the month or first day of the week
      $date_info= explode(';',gmdate('Y;m;w;F',$start_day+$tz_offset));
      $weekday= $oneweek ? 0:$date_info[2];
      if ($oneweek) {
          $day=$day-$date_info[2]; // adjust to start day of the week
          if ($day < 0) {
              $day=gmdate('d',mktime(0,0,0,$month,$day,$year)+$tz_offset);
          }
          $maxcheckday=gmdate('t', $start_day + $tz_offset);
      }
      // number of days in the month
      $maxdays= $oneweek ? $day+6:gmdate('t', $start_day + $tz_offset);
      // weekday (zero based) of the first day of the month
  
      $month= $date_info[1];
      $year= $date_info[0];
  
      list($dayinfo,$infocolor,$coloring)=
          _parseDays($formatter,$body);
      $cal.= "<caption class=\"month\">";
  
      // Adding previous month and year
      if ($yearlink)
          $cal.= $formatter->link_tag($link,"?date=$prev_year",$year_prev_tag).
              '&nbsp;&nbsp;';
      $cal.= $formatter->link_tag($link,"?date=$prev_month",$prev_tag).
          '&nbsp;&nbsp;';
      if ($oneweek)
          $cal.= $formatter->link_tag($link,"?date=$prev_week",$prev_tag).
              '&nbsp;&nbsp;';
  
      #$calendar.=substr($date_info[month],0,3).' '.$year;
      $cal.=$date_info[3].' '.$year;
  
      // Adding next month and year
      $cal.= '&nbsp;&nbsp;';
      if ($oneweek)
      $cal.= $formatter->link_tag($link,"?date=$next_week",$next_tag).
          '&nbsp;&nbsp;';
      $cal.=$formatter->link_tag($link,"?date=$next_month",$next_tag);
      if ($yearlink)
          $cal.= '&nbsp;&nbsp;'.
              $formatter->link_tag($link,"?date=$next_year",$year_next_tag);
      $cal.= "</caption>\n";
  
      if (!$column) {
          $cal.="<tr class='weekhead'>\n";
          foreach ($day_headings as $d) {
              $cal.="<th>".substr($d,0,3)."</th>\n";
          }
          $cal.="</tr>\n";
      }
      $cal.="<tr class='week'>\n";
      $wd=$weekday;
  
      #take care of the first "empty" days of the month
      while ($wd > 0){
          $wd--;
          $cal .= "<td class='day'>&nbsp;</td>\n";
          if($column) $cal.="</tr>\n</tr>";
      }
   
      $save=$formatter->sister_on;
      $formatter->sister_on=0;
      while ($day <= $maxdays){
          if($column or $weekday == 7){ #start a new week
              $cal .= "</tr><tr class='week'>";
              if ($weekday==7) $weekday = 0;
          }
          $daytext=($day > $maxcheckday) ? $day-$maxcheckday:$day;
          if ($column)
              $daytext.='</h6><br /><h6 class="week">'.substr($day_headings[$weekday],0,3);
          if ($day==$today and $month == date('m')) {
              $exists='today';
              $nonexists='today';
              $classes=$nonexists;
          } else {
              $exists='wiki';
              $nonexists='day';
              $classes=$nonexists;
          }
          if ($coloring[$month][$day]) {
              #$colorings=array_reverse($coloring[$month][$day]);
              $colorings=&$coloring[$month][$day];
              #$classes=implode(' ',$coloring[$month][$day]).' '.$classes;
              $colorbar='<ul class="colorbar"><li class="'.implode('<li class="',$colorings).'</ul>';
          } else {
              $colorbar='';
          }
          $todo='';
          $info=$dayinfo[$month][$day];
          if ($dayinfo['week'][$weekday])
              $info = array_merge($info,$dayinfo['week'][$weekday]);
          if (is_array($info)) {
              if (sizeof($infocolor[$month][$day])>1) {
                  for ($i=0,$sz=sizeof($info);$i<$sz;$i++) {
                      if (preg_match('/(\{\*\}|\(\!\)|\/\!\\\\|<!>|:\()/',
                          $info[$i],$m)) {
                          if ($color_table[$m[1]]) {
                              $info[$i]=
                                  "<span class='".$color_table[$m[1]]." text'>".
                                  $info[$i].'</span>';
                          }
                      }
                  }
              } else {
                  $classes=$infocolor[$month][$day][0].' '.$classes;
              }
                  
              $todo='<ul><li>'.implode("</li>\n<li>",$info);
              $todo.="</li>\n</ul>\n";
              $todo=preg_replace($formatter->baserule,$formatter->baserepl,$todo);
              $todo=preg_replace('/&lt;([^>]+)>/','<\\1>',$todo);
              $todo=preg_replace("/(".$formatter->wordrule.")/e",
              "\$formatter->link_repl('\\1')",$todo);
          }
          $dayclasses=$column ? "dayhead":$classes;
  
          $cal.= '<td'.($dayclasses ? " class=\"$dayclasses\">" : '>').'<h6>'.
              ($link ? $formatter->link_tag($link,$action,$daytext):
                   $daytext)."</h6>";
          if ($column) {
              $classes.=' fullday';
              $cal.="</td><td ".($classes ? " class=\"$classes\">":'>');
          }
          $cal.="$todo$colorbar</td>";
  
          $day++;
          $weekday++;
      }
      $formatter->sister_on=$save;
  
      while ($weekday < 7){
          $cal .= "<td class='day'>&nbsp;</td>";
          if ($column) $cal.="</tr>\n<tr>\n";
          $weekday++;
      }
      $cal.='</tr>';
  
      return "<div class='MC'><table cellspacing='0'>".$cal."</table></div>\n";
  }
  
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2005/09/11 16:29:50

  Modified:    css      nlog.css
  Added:       css      _moinui
  Removed:     css      moinui
  Log:
  update nlog.css as a sample css for the MoniCalendar
  rename moinui
  
  Revision  Changes    Path
  1.3       +307 -9    moniwiki/css/nlog.css
  
  Index: nlog.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/nlog.css,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- nlog.css	4 Jan 2005 09:37:44 -0000	1.2
  +++ nlog.css	11 Sep 2005 07:29:50 -0000	1.3
  @@ -1,5 +1,5 @@
   /* MoniWiki CSS 2003/11/01 by wkpark */
  -@import url("user.css");
  +@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;font-size:12px;
  @@ -10,8 +10,8 @@
     width: 700px;
   }
   
  -a {color:#000080;text-decoration:underline}
  -a:hover {color:#808080;text-decoration:none}
  +a {color:#000090;text-decoration:underline;}
  +a:hover {text-decoration:none;}
   
   tt.wiki {font-family:Monotype,Lucida Console,lucida,monospace;font-size:12px;}
   tt.foot {
  @@ -29,10 +29,11 @@
   
   pre.wiki {
     padding-left:6px;
  -  padding-top:6px; 
  -  font-family:Lucida TypeWriter,monotype,lucida,monospace;font-size:14px;
  +  padding-top:6px;
  +  font-family:Bitstream Vera Sans Mono, Lucida TypeWriter,monotype, Courier New, GulimChe, monospace !important;
     background-color:#000000;
     color:#FFD700; /* gold */
  +  /* color:#FFFFFF; /* white */
   }
   
   pre.console {
  @@ -52,11 +53,11 @@
   }
   
   table.wiki {
  -//  border: 1px outset #E2ECE5;
  +/*  border: 1px outset #E2ECE5; */
   }
   
   td.wiki {
  -//  border: 1px inset #E2ECE5;
  +/* border: 1px inset #E2ECE5; */
   }
   
   tr.wiki {
  @@ -191,7 +192,7 @@
   }
   
   #wikiBody a {color:#000080;text-decoration:underline}
  -#wikiBody a:hover {color:#808080;text-decoration:none}
  +#wikiBody a:hover {text-decoration:none}
   
   #wikiContent {
     margin: 10px 10px 10px 20px; 
  @@ -272,7 +273,7 @@
   }
   
   .purple a {
  -    font-family: Verdana, Trebuchet, Arial, Helvetica;
  +    font-family: Verdana, Arial, Helvetica;
       font-style: normal;
       font-weight: bold;
       font-size: x-small;
  @@ -283,3 +284,300 @@
   span.lineNumber {
     color:#ffff00;
   }
  +
  +.wikiSyntax, .wikiSyntax code{  
  +  font-family:"Bitstream Vera Sans Mono", Courier New, GulimChe, monospace !important;
  +  padding:0.5em;
  +}
  +
  +.pageNav { margin-bottom:5px;font-size : 75%; }
  +.pageNext { float: right; }
  +.pagePrev { float: left; }
  +
  +#wikiResize { float: right; }
  +
  +#blogCategory ul {
  +  list-style:none;
  +  padding-left: 20px;
  +}
  +
  +#blogCategory span.dir {
  +  display:none;
  +}
  +
  +#wikiContent .perma:link, #wikiContent .perma:visited {
  +  color:#d7d7d7;text-decoration:none;
  +}
  +.perma:link, .perma:visited {
  +  visibility: hidden;
  +}
  +
  +h1:hover .perma, h2:hover .perma, h3:hover .perma,
  +h4:hover .perma, h5:hover .perma, h6:hover .perma {
  +  visibility: visible;
  +}
  +
  +span:hover .perma {
  +  visibility: visible;
  +}
  +
  +.rc-bookmark {
  + font-size:10px;
  +}
  +
  +.rc-button ul {
  +  list-style: none;
  +  display: inline;
  +  padding: 0px;
  +}
  +
  +.rc-button li {
  +  display: inline;
  +}
  +
  +.cloudView li{
  +  font-family:Trebuchet MS,Georgia,Verdana,sans-serif;
  +  list-style:none;
  +  white-space: nowrap;
  +  display:inline;
  +  padding-left:5px;
  +}
  +
  +#wikiBody .cloudView a:link, #wikiBody .cloudView a:visited {
  +  text-decoration:none;
  +  color:#000000;
  +}
  +
  +#wikiBody .cloudView a:hover {
  +  text-decoration:underline;
  +  color:#0000ff;
  +}
  +
  +.cloudView ul {
  +  margin:0;
  +}
  +
  +.MC table {
  +  width:99%;
  +  margin:0;
  +  padding:0;
  +  border-left: 1px solid #A4ACBC;
  +  border-top: 1px solid #A4ACBC;
  +}
  +
  +.MC td {
  +  border-right: 1px solid #A4ACBC;
  +  border-bottom: 1px solid #A4ACBC;
  +}
  +
  +.MC td.day, .MC td.today {
  +  width:13%;
  +  height:40px;
  +  text-align: left;
  +  vertical-align: top;
  +}
  +
  +.MC td.day:hover {
  +  background-color: #EAEFE5;
  +}
  +
  +.MC td.day {
  +  background-color: #F4F3eE;
  +}
  +
  +.MC td.dayhead {
  +  width:50px;
  +  background-color: #FFFFFF;
  +  text-align:center;
  +}
  +
  +.MC td.dayhead h6{
  +  font-size:20px;
  +  display:inline;
  +  font-family: Georgia, Arial, Helvetica, sans-serif;
  +}
  +
  +.MC td.dayhead h6.week{
  +  font-size:16px;
  +  color:#727b84;
  +  font-family: Georgia, Arial, Helvetica, sans-serif;
  +}
  +
  +.MC .month {
  +  font-size:18px;
  +  font-weight: bold;
  +}
  +
  +.MC td.fullday {
  +  width:90%;
  +}
  +
  +.MC td.fullday li {
  +  display:inline;
  +}
  +
  +.MC td.today {
  +  background-color: #E7FEDA;
  +}
  +
  +.MC td.today:hover {
  +  background-color: #F7FFEA;
  +}
  +
  +.MC .day h6, .MC .today h6 {
  +  font-family: Truchet MS, Arial, Helvetica, sans-serif;
  +  font-size: 12px;
  +  background-color: #d9e2e1;
  +  text-align: center;
  +  vertical-align: middle;
  +  padding-top:0px;
  +  margin-top:-1px;
  +  margin-bottom: 1px;
  +  margin-left: -1px;
  +  width:30px;
  +  /* border: #A4Acbc solid; /* */
  +  border-width: 0px 1px 1px 0px;
  +  padding-top: 2px;
  +}
  +
  +.MC tr.weekhead {
  +  background-color: #A2ADBC;
  +  color: white;
  +}
  +
  +.MC ul {
  +  list-style:none;
  +  margin:0px;
  +  padding:0px;
  +}
  +
  +.MC li {
  +}
  +
  +.MC td.red {
  +  background-color: #ffc1c1;
  +}
  +.MC td.red:hover {
  +  background-color: #ffd1d1;
  +}
  +
  +.MC td.blue {
  +  background-color: #d1d2fe;
  +}
  +
  +.MC td.blue:hover {
  +  background-color: #e1e2fe;
  +}
  +
  +.MC td.yellow {
  +  background-color: #FAEE83;
  +}
  +
  +.MC td.yellow:hover {
  +  background-color: #FAFE93;
  +}
  +
  +.MC td.green {
  +  background-color: #AFffAF;
  +}
  +
  +.MC td.green:hover {
  +  background-color: #BAFFBA;
  +}
  +
  +.MC .fullday li {
  +  display:inline;
  +}
  +
  +.MC .fullday ul {
  +  display:inline;
  +  float:left;
  +}
  +
  +.MC .fullday ul.colorbar{
  +  height:100%;
  +  min-width:16px;
  +  float:right;
  +}
  +
  +.MC .day li.colorbar{
  +  min-height:16px;
  +}
  +
  +.MC .fullday ul.colorbar li{
  +  float:left;
  +  height:100%;
  +  /* min-width:16px; /* */
  +  width:16px; /* */
  +}
  +
  +.MC .fullday ul.colorbar li:hover {
  +  height:100%;
  +  min-width:16px;
  +  width:10%;
  +  text-align:left;
  +}
  +
  +.MC li.red {
  +  display:block;
  +  margin-top:1px;
  +  background-color: #ffa4a4;
  +  min-height:16px;
  +  min-width:16px;
  +}
  +
  +.MC .colorbar li:hover {
  +  min-height:16px;
  +  overflow:visible;
  +  height:10%;
  +  text-align:left;
  +}
  +
  +.MC li.blue {
  +  display:block;
  +  margin-top:1px;
  +  background-color: #b9b9ff;
  +  height:16px;
  +  overflow:auto;
  +}
  +
  +.MC li.green {
  +  display:block;
  +  margin-top:1px;
  +  background-color: #79ff79;
  +  height:16px;
  +  overflow:auto;
  +}
  +
  +.MC li.yellow {
  +  display:block;
  +  margin-top:1px;
  +  background-color: #ffff7d;
  +  height:16px;
  +  overflow:auto;
  +}
  +
  +.MC li.purple {
  +  display:block;
  +  margin-top:1px;
  +  background-color: #DFA3E4;
  +  height:16px;
  +  overflow:auto;
  +}
  +
  +.wikiChat ul {
  +  list-style:none;
  +  padding:2px;
  +  margin:0px;
  +}
  +
  +.wikiChat span.user {
  +  font-family:Trebuchet MS,sans-serif;
  +  padding-left:2px;
  +  padding-right:2px;
  +}
  +
  +.wikiChat span.date {
  +  font-family:Trebuchet MS,sans-serif;
  +  padding-right:2px;
  +}
  
  
  
  1.1                  moniwiki/css/_moinui
  
  Index: _moinui
  ===================================================================
  /*  MoinMoin User Interface Styles
  
      Copyright (c) 2001, 2002, 2003 by Jrgen Hermann
  
      $Id: _moinui,v 1.1 2005/09/11 07:29:50 wkpark Exp $
  */
  
  /* special stuff */
  body.editor {
      background-color: #F8F8E8;
  }
  
  
  /* eye catchers */
  div.message {
      margin-top: 6pt;
      background-color: #E8FFE8;
      border-style:solid;
      border-width:1pt;
      border-color:#999999;
      color:#440000;
      padding:5px;
      width:99%;
  }
  strong.highlight {
      background-color: #FFBBBB;
  /* as usual, NetScape fucks up with innocent CSS
      border-color: #FFAAAA;
      border-style: solid;
      border-width: 1pt;
  */
  }
  
  
  /* page frame */
  td.headline {
      font-family: sans-serif;
      font-size: 150%;
      font-weight: bold;
  }
  table.navibar {
      background-color: #C8C8C8;
      border-spacing: 3px;
  }
  td.navibar {
      background-color: #E8E8E8;
      vertical-align: middle;
      padding: 0px;
  }
  a.navibar {
      text-decoration: none;
  }
  font.navibar {
      font-family: sans-serif;
      font-size: 80%;
  }
  
  table.footer {
      font-family: sans-serif;
      background-color: #E8E8E8;
      border: 1px #C8C8C8 solid;
      border-spacing: 3px;
  }
  
  
  /* diffs */
  .diff {
      width:99%;
  }
  .diff-title {
      background-color: #C0C0C0;
      border-style: none;
      border-width: thin;
  }
  .diff-added {
      background-color: #E0FFE0;
      border-style: none;
      border-width: thin;
      vertical-align: top;
  }
  .diff-removed {
      background-color: #FFFFE0;
      border-style: none;
      border-width: thin;
      vertical-align: top;
  }
  ins.diff-added {
      background-color: #80FF80;
      text-decoration: none;
  }
  del.diff-removed {
      background-color: #FFFF80;
      text-decoration: none;
  }
  
  
  
  


wkpark      2005/09/11 16:30:54

  Modified:    plugin   css.php
  Log:
  do not list css if it's name start with '_' or '.'
  
  Revision  Changes    Path
  1.6       +2 -2      moniwiki/plugin/css.php
  
  Index: css.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/css.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- css.php	1 Aug 2004 13:16:56 -0000	1.5
  +++ css.php	11 Sep 2005 07:30:53 -0000	1.6
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // css action plugin for the MoniWiki
   //
  -// $Id: css.php,v 1.5 2004/08/01 13:16:56 wkpark Exp $
  +// $Id: css.php,v 1.6 2005/09/11 07:30:53 wkpark Exp $
   
   function do_css($formatter,$options) {
     global $DBInfo;
  @@ -70,7 +70,7 @@
     $handle = opendir($DBInfo->css_dir);
     $css=array();
     while ($file = readdir($handle)) {
  -     if (preg_match("/\.css$/i", $file,$match))
  +     if (preg_match("/^[^_\.].*\.css$/i", $file,$match))
           $css[]= $file;
     }
   
  
  
  


wkpark      2005/09/11 16:37:24

  Modified:    plugin/filter antispam.php
  Log:
  enclose blocked words with some html codes
  
  Revision  Changes    Path
  1.2       +3 -3      moniwiki/plugin/filter/antispam.php
  
  Index: antispam.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/filter/antispam.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- antispam.php	8 Aug 2005 13:07:25 -0000	1.1
  +++ antispam.php	11 Sep 2005 07:37:24 -0000	1.2
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Antispam filter plugin for the MoniWiki
   //
  -// $Id: antispam.php,v 1.1 2005/08/08 13:07:25 wkpark Exp $
  +// $Id: antispam.php,v 1.2 2005/09/11 07:37:24 wkpark Exp $
   
   function filter_antispam($formatter,$value,$options) {
       $blacklist_pages=array('BadContent','LocalBadContent');
  @@ -30,7 +30,7 @@
               }
           }
           for ($k=0;$k<=$i;$k++)
  -            $pattern[$k]='/'.substr($pattern[$k],0,-1).'/i';
  +            $pattern[$k]='/('.substr($pattern[$k],0,-1).')/i';
   
           #foreach ($whitelist_pages as $list) {
           #    $p=new WikiPage($list);
  @@ -38,7 +38,7 @@
           #}
           #$goodcontents=explode("\n",$goodcontent);
   
  -        return preg_replace($pattern,"",$value);
  +        return preg_replace($pattern,"[[HTML(<span class='blocked'>)]]\\1[[HTML(</span>)]]",$value);
       }
       return $value;
   }
  
  
  


wkpark      2005/09/11 16:38:42

  Modified:    plugin/filter antispam.php
  Log:
  more fix
  
  Revision  Changes    Path
  1.3       +2 -2      moniwiki/plugin/filter/antispam.php
  
  Index: antispam.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/filter/antispam.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- antispam.php	11 Sep 2005 07:37:24 -0000	1.2
  +++ antispam.php	11 Sep 2005 07:38:42 -0000	1.3
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Antispam filter plugin for the MoniWiki
   //
  -// $Id: antispam.php,v 1.2 2005/09/11 07:37:24 wkpark Exp $
  +// $Id: antispam.php,v 1.3 2005/09/11 07:38:42 wkpark Exp $
   
   function filter_antispam($formatter,$value,$options) {
       $blacklist_pages=array('BadContent','LocalBadContent');
  @@ -38,7 +38,7 @@
           #}
           #$goodcontents=explode("\n",$goodcontent);
   
  -        return preg_replace($pattern,"[[HTML(<span class='blocked'>)]]\\1[[HTML(</span>)]]",$value);
  +        return preg_replace($pattern,"''''''[[HTML(<span class='blocked'>)]]\\1[[HTML(</span>)]]''''''",$value);
       }
       return $value;
   }
  
  
  


wkpark      2005/09/11 21:59:00

  Modified:    css      nlog.css
  Log:
  more fixes: colorbar now sorted
  
  Revision  Changes    Path
  1.4       +176 -53   moniwiki/css/nlog.css
  
  Index: nlog.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/nlog.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- nlog.css	11 Sep 2005 07:29:50 -0000	1.3
  +++ nlog.css	11 Sep 2005 12:59:00 -0000	1.4
  @@ -359,20 +359,23 @@
   
   .MC table {
     width:99%;
  +  border-spacing: 0;
  +  empty-cells: show;
     margin:0;
     padding:0;
  -  border-left: 1px solid #A4ACBC;
  -  border-top: 1px solid #A4ACBC;
  +  border-left: 1px solid #d3d3d3;
  +  border-top: 1px solid #d3d3d3;
   }
   
   .MC td {
  -  border-right: 1px solid #A4ACBC;
  -  border-bottom: 1px solid #A4ACBC;
  +  border-right: 1px solid #d3d3d3;
  +  border-bottom: 1px solid #d3d3d3;
  +  margin: 0px;
   }
   
   .MC td.day, .MC td.today {
  -  width:13%;
  -  height:40px;
  +  width:14%;
  +  min-height:40px;
     text-align: left;
     vertical-align: top;
   }
  @@ -385,6 +388,13 @@
     background-color: #F4F3eE;
   }
   
  +.MC td.fullday {
  +  margin:0px;
  +  border-right: 1px solid #A4ACBC;
  +  border-bottom: 1px solid #A4ACBC;
  +  width:90%;
  +}
  +
   .MC td.dayhead {
     width:50px;
     background-color: #FFFFFF;
  @@ -408,12 +418,9 @@
     font-weight: bold;
   }
   
  -.MC td.fullday {
  -  width:90%;
  -}
  -
   .MC td.fullday li {
     display:inline;
  +  margin:0px;
   }
   
   .MC td.today {
  @@ -425,33 +432,57 @@
   }
   
   .MC .day h6, .MC .today h6 {
  -  font-family: Truchet MS, Arial, Helvetica, sans-serif;
  +  font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
     font-size: 12px;
  -  background-color: #d9e2e1;
  -  text-align: center;
  +  /* background-color: #d9e2e1; /* */
  +  text-align: left;
     vertical-align: middle;
     padding-top:0px;
  -  margin-top:-1px;
     margin-bottom: 1px;
  -  margin-left: -1px;
  -  width:30px;
  +  margin-top: 0px;
     /* border: #A4Acbc solid; /* */
  -  border-width: 0px 1px 1px 0px;
  +  /* border-width: 0px 1px 1px 0px; */
     padding-top: 2px;
  +  color:#888;
   }
   
   .MC tr.weekhead {
     background-color: #A2ADBC;
     color: white;
  +  padding:0;
  +  margin:0;
  +}
  +
  +.MC tr.week {
  +  padding:0;
  +  margin:0;
   }
   
   .MC ul {
     list-style:none;
     margin:0px;
     padding:0px;
  +  margin-right:0px;
  +  margin-left:-1px;
  +}
  +
  +.MC td {
  +  margin:0px;
  +  padding:0px;
  +  padding:0;
  +  margin:0;
   }
   
   .MC li {
  +  margin:0px;
  +  padding:0px;
  +  margin-bottom:2px !important;
  +  padding-left:3px;
  +}
  +
  +.MC .colorbar li {
  +  border-top:1px solid black;
  +  border-bottom:1px solid black;
   }
   
   .MC td.red {
  @@ -485,83 +516,170 @@
     background-color: #BAFFBA;
   }
   
  -.MC .fullday li {
  +.MC .fullday ul li {
     display:inline;
  +  margin-bottom:1px !important;
  +  margin-top:0px !important;
  +  padding-bottom:1px !important;
  +  margin-right:2px;
  +  height:100%;
   }
   
  -.MC .fullday ul {
  -  display:inline;
  +.MC td.fullday ul {
     float:left;
  +  margin:0px;
  +  padding:0px;
  +  height:100%;
   }
   
   .MC .fullday ul.colorbar{
     height:100%;
     min-width:16px;
     float:right;
  +  margin:0px;
  +  padding:0px;
  +  margin-bottom:0px !important;
   }
   
  -.MC .day li.colorbar{
  -  min-height:16px;
  +.MC .day li.colorbar {
  +  min-height:14px;
  +  border-top:1px solid black;
  +  border-bottom:1px solid black;
  +  white-space:nowrap;
   }
   
   .MC .fullday ul.colorbar li{
  -  float:left;
  +  float:right;
     height:100%;
     /* min-width:16px; /* */
     width:16px; /* */
  +  border-left:1px solid black;
  +  border-right:1px solid black;
  +  border-top:0;
  +  border-bottom:0;
  +  margin-right:2px;
  +}
  +
  +.MC .fullday ul.colorbar li.blank {
  +  width:18px; /* */
   }
   
   .MC .fullday ul.colorbar li:hover {
  -  height:100%;
  +  height:100% !important;
     min-width:16px;
  -  width:10%;
  +  width:auto !important;
     text-align:left;
   }
   
  -.MC li.red {
  +
  +.MC .colorbar li.red:hover {
  +/*  height:auto !important; /* */
  +  text-align:left;
  +}
  +
  +.MC .colorbar li.start {
  +  color:white;
  +  font-size:9px;
  +  font-family:Trebuchet MS,Sans-serif;
  +  margin-left: 6px;
  +  margin-right:-1px;
  +  -moz-border-radius-topleft: 14px;
  +  -moz-border-radius-bottomleft: 14px;
  +  border-top:1px solid black;
  +  border-left:1px solid black;
  +  border-bottom:1px solid black;
  +}
  +
  +.MC .colorbar li.end {
  +  margin-right: 6px;
  +  -moz-border-radius-topright: 10px;
  +  -moz-border-radius-bottomright: 10px;
  +  border-top:1px solid black;
  +  border-right:1px solid black;
  +  border-bottom:1px solid black;
  +}
  +
  +.MC .fullday .colorbar li.start {
  +  margin-top: 10px;
  +  margin-left:0px;
  +  margin-right:2px;
  +  margin-bottom:-1px;
  +  -moz-border-radius-topleft: 10px;
  +  -moz-border-radius-topright: 10px;
  +  -moz-border-radius-bottomleft: 0px;
  +  -moz-border-radius-bottomright: 0px;
  +}
  +
  +.MC .fullday .colorbar li.end {
  +  margin-bottom: 6px;
  +  margin-right:2px;
  +  -moz-border-radius-bottomleft: 10px;
  +  -moz-border-radius-bottomright: 10px;
  +  -moz-border-radius-topright: 0px;
  +  -moz-border-radius-topleft: 0px;
  +}
  +
  +.MC li.blue { /* color-2 */
     display:block;
  -  margin-top:1px;
  -  background-color: #ffa4a4;
  -  min-height:16px;
  -  min-width:16px;
  +  margin:0px;
  +  background-color: #58F !important;
  +  border-color: #36D !important;
  +  height:14px;
   }
   
  -.MC .colorbar li:hover {
  -  min-height:16px;
  -  overflow:visible;
  -  height:10%;
  -  text-align:left;
  +
  +.MC li.yellow { /* color-3 */
  +  display:block;
  +  margin:0px;
  +  height:14px;
  +  background-color: #FFA533 !important;
  +  border-color: #DD8311 !important;
   }
   
  -.MC li.blue {
  +.MC li.purple { /* color-4 */
     display:block;
  -  margin-top:1px;
  -  background-color: #b9b9ff;
  -  height:16px;
  -  overflow:auto;
  +  margin:0px;
  +  background-color: #8866AA !important;
  +  border-color: #664488 !important;
  +  height:14px;
   }
   
  -.MC li.green {
  +.MC li.red { /* color-1 */
     display:block;
  -  margin-top:1px;
  -  background-color: #79ff79;
  -  height:16px;
  -  overflow:auto;
  +  margin:0px;
  +  background-color: #F55 !important;
  +  height:14px;
  +  border-color: #D33 !important;
   }
   
  -.MC li.yellow {
  +.MC li.blank { /* color-0 */
     display:block;
  -  margin-top:1px;
  -  background-color: #ffff7d;
  +  margin:0px;
     height:16px;
  -  overflow:auto;
  +  border:0px !important;
   }
  -
  -.MC li.purple {
  +.MC li.blank:hover { /* color-0 */
     display:block;
  -  margin-top:1px;
  -  background-color: #DFA3E4;
  +  margin:0px;
     height:16px;
  +  border:0px !important;
  +}
  +
  +.MC li.green { /* color-5 */
  +  display:block;
  +  margin:0px;
  +  background-color: #79ff79;
  +  border-color:  #383 !important;
  +  background-color: #5A5 !important;
  +  height:14px;
  +}
  +
  +.MC li.gray { /* color-6 */
  +  display:block;
  +  margin:0px;
  +  border-color: #777 !important;
  +  background-color: #999;
  +  height:14px;
     overflow:auto;
   }
   
  @@ -581,3 +699,8 @@
     font-family:Trebuchet MS,sans-serif;
     padding-right:2px;
   }
  +
  +.blocked {
  +  background-color:#ff0000;
  +  color:#fff;
  +}
  
  
  


wkpark      2005/09/11 21:59:01

  Modified:    plugin   MoniCalendar.php
  Log:
  more fixes: colorbar now sorted
  
  Revision  Changes    Path
  1.2       +38 -12    moniwiki/plugin/MoniCalendar.php
  
  Index: MoniCalendar.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/MoniCalendar.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- MoniCalendar.php	11 Sep 2005 07:27:48 -0000	1.1
  +++ MoniCalendar.php	11 Sep 2005 12:59:01 -0000	1.2
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Test]]
   //
  -// $Id: MoniCalendar.php,v 1.1 2005/09/11 07:27:48 wkpark Exp $
  +// $Id: MoniCalendar.php,v 1.2 2005/09/11 12:59:01 wkpark Exp $
   
   function _parseDays($formatter,$page,$options=array()) {
       $color_table=
  @@ -17,6 +17,8 @@
       $week_table=array('sun'=>0,'mon'=>1,'tue'=>2,'wed'=>3,'thu'=>4,'fri'=>5,
           'sat'=>6);
   
  +    $colorbar_id=1;
  +
       $lines=explode("\n",$page);
       foreach ($lines as $line) {
           if ($line=='' or $line[0]!=' ') continue;
  @@ -31,6 +33,7 @@
                       $infocolor[$mon][$day][]=$color_table[$m[1]];
                   }
               }
  +        // if it is range
           } else if (preg_match('/^\s+\*\s'.
               '(\d{1,2})[-\/,](\d{1,2})\-(\d{1,2})[-\/,](\d{1,2})\s(.*)$/',
               $line,$match)) {
  @@ -40,25 +43,28 @@
                   if ($match[2]>=$match[4]) continue;
                   if (preg_match('/(\{\*\}|\(\!\)|\/\!\\\\|<!>|:\(|#[a-f0-9]{3}|#[a-f0-9]{6})\s/i',$match[5],$m)) {
                       if ($m[1][0]=='#') {
  -                        $color='colorbar" style="background-color:'.$m[1];
  +                        $color='colorbar';
  +                        $custcolor=' style="background-color:'.$m[1].'"';
                           $text=substr($match[5],strlen($m[1]));
                       } else {
  -                        $color=$color_table[$m[1]];
  +                        $color='colorbar '.$color_table[$m[1]];
  +                        $custcolor='';
                           $text=$match[5];
                       }
  -
                       $mon0=sprintf("%02d",$match[1]);
                       $mon1=sprintf("%02d",$match[3]);
  +                    $start_tag=$match[1].' '.$match[2];
  +                    $start_tag=$start_tag.'-'.md5($start_tag.$text);
                       $text=preg_replace('/</','&lt;',$text);
  -                    $coloring[$mon0][$match[2]][]=
  -                        $color."\">$text</li>";
  +                    $coloring[$mon0][$match[2]][$start_tag]=
  +                        $color." start\"$custcolor>$text</li>";
                       // XX month for
                       for ($i=$match[2]+1;$i<$match[4];$i++) {
  -                        $coloring[$mon0][$i][]=$color.'"></li>';
  +                        $coloring[$mon0][$i][$start_tag]=$color."\"$custcolor></li>";
                       }
                       // $extra_class
  -                    $coloring[$mon0][$i][]=
  -                        $color."\" $extra_class>{END} </li>";
  +                    $coloring[$mon0][$i][$start_tag]=
  +                        $color." end\"$custcolor></li>";
                   }
               }
           } else if (preg_match('/^\s+\*\s'.
  @@ -226,11 +232,28 @@
    
       $save=$formatter->sister_on;
       $formatter->sister_on=0;
  +    $colorkeys=array();
       while ($day <= $maxdays){
           if($column or $weekday == 7){ #start a new week
               $cal .= "</tr><tr class='week'>";
  -            if ($weekday==7) $weekday = 0;
  +            if ($weekday==7) {
  +                $weekday = 0;
  +                $colorkeys=array();
  +            }
           }
  +        for ($j=0;$j<7-$weekday;$j++) {
  +            if (is_array($coloring[$month][$day+$j])) {
  +                $keys=array_keys($coloring[$month][$day+$j]);
  +                $colorkeys=array_merge($colorkeys,$keys);
  +            }
  +        }
  +        $colorkeys=array_unique($colorkeys);
  +        sort($colorkeys);
  +        $colkeys=array_flip($colorkeys);
  +        #print_r($colkeys);
  +        foreach ($colkeys as $k=>$v)
  +            $colkeys[$k]=' colorbar blank">';
  +
           $daytext=($day > $maxcheckday) ? $day-$maxcheckday:$day;
           if ($column)
               $daytext.='</h6><br /><h6 class="week">'.substr($day_headings[$weekday],0,3);
  @@ -244,8 +267,11 @@
               $classes=$nonexists;
           }
           if ($coloring[$month][$day]) {
  +            #print_r($coloring[$month][$day]);
  +            $colorings=array_merge($colkeys,$coloring[$month][$day]);
  +            #print_r($colorings);
               #$colorings=array_reverse($coloring[$month][$day]);
  -            $colorings=&$coloring[$month][$day];
  +            #$colorings=&$coloring[$month][$day];
               #$classes=implode(' ',$coloring[$month][$day]).' '.$classes;
               $colorbar='<ul class="colorbar"><li class="'.implode('<li class="',$colorings).'</ul>';
           } else {
  @@ -287,7 +313,7 @@
               $classes.=' fullday';
               $cal.="</td><td ".($classes ? " class=\"$classes\">":'>');
           }
  -        $cal.="$todo$colorbar</td>";
  +        $cal.="$colorbar$todo</td>";
   
           $day++;
           $weekday++;
  
  
  


wkpark      2005/09/11 22:33:41

  Modified:    .        wiki.php
  Log:
  fixed nonexists_fancy() and supprt [wiki:Page attachment:foo.png] syntax
  
  Revision  Changes    Path
  1.249     +19 -5     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.248
  retrieving revision 1.249
  diff -u -r1.248 -r1.249
  --- wiki.php	10 Sep 2005 09:48:43 -0000	1.248
  +++ wiki.php	11 Sep 2005 13:33:41 -0000	1.249
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.248 2005/09/10 09:48:43 wkpark Exp $
  +// $Id: wiki.php,v 1.249 2005/09/11 13:33:41 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.248 $',1,-1);
  +$_revision = substr('$Revision: 1.249 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -842,6 +842,7 @@
       $time= time();
       if ($this->use_hostname) $host= gethostbyaddr($remote_name);
       else $host= $remote_name;
  +    $page_name=trim($page_name);
       $msg="$page_name\t$remote_name\t$time\t$host\t$user->id\t$comment\t$action\n";
       fwrite($fp_editlog, $msg);
       fclose($fp_editlog);
  @@ -1941,9 +1942,20 @@
       list($page,$page_text,$gpage)=
         normalize_word($page,$this->group,$this->page->name,$nogroup,$islink);
       if ($text) {
  -      if (preg_match("/^(http|ftp).*\.(png|gif|jpeg|jpg)$/i",$text)) {
  -        $text=str_replace('&','&amp;',$text);
  -        $word="<img border='0' alt='$word' src='$text' /></a>";
  +      if (preg_match("/^(http|ftp|attachment).*\.(png|gif|jpeg|jpg)$/i",$text)) {
  +        if (substr($text,0,11)=='attachment:') {
  +          $fname=substr($text,11);
  +          $ntext=$this->macro_repl('Attachment',$fname,1);
  +          if (!file_exists($ntext)) {
  +            $word=$this->macro_repl('Attachment',$fname);
  +          } else {
  +            $text=qualifiedUrl($DBInfo->url_prefix.'/'.$ntext);
  +            $word= "<img border='0' alt='$text' src='$text' /></a>";
  +          }
  +        } else {
  +          $text=str_replace('&','&amp;',$text);
  +          $word="<img border='0' alt='$word' src='$text' /></a>";
  +        }
         } else $word=$text;
       } else {
         $word=$text=$page_text ? $page_text:$word;
  @@ -2030,6 +2042,8 @@
   
     function nonexists_fancy($word,$url) {
       global $DBInfo;
  +    if ($word[0]=='<' and preg_match('/^<[^>]+>/',$word))
  +      return "<a class='nonexistent' href='$url'>$word</a>";
       #if (preg_match("/^[a-zA-Z0-9\/~]/",$word))
       if (ord($word[0]) < 125) {
         $link=$word[0];
  
  
  


wkpark      2005/09/12 16:22:04

  Modified:    plugin   MoniCalendar.php
  Log:
  add some colors
  
  Revision  Changes    Path
  1.3       +22 -11    moniwiki/plugin/MoniCalendar.php
  
  Index: MoniCalendar.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/MoniCalendar.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- MoniCalendar.php	11 Sep 2005 12:59:01 -0000	1.2
  +++ MoniCalendar.php	12 Sep 2005 07:22:04 -0000	1.3
  @@ -5,12 +5,15 @@
   //
   // Usage: [[Test]]
   //
  -// $Id: MoniCalendar.php,v 1.2 2005/09/11 12:59:01 wkpark Exp $
  +// $Id: MoniCalendar.php,v 1.3 2005/09/12 07:22:04 wkpark Exp $
   
   function _parseDays($formatter,$page,$options=array()) {
       $color_table=
           array('{*}'=>'red','/!\\'=>'blue','(!)'=>'green',
  -            '<!>'=>'yellow',':('=>'purple');
  +            '<!>'=>'yellow',':('=>'purple','(V)'=>'gray',
  +            'red'=>'red','blue'=>'blue','green'=>'green','purple'=>'purple',
  +            'yellow'=>'yellow','gray'=>'gray');
  +    $color_rule=implode('|',array_map('preg_quote',array_keys($color_table)));
       $month=$options['month'] ? $options['month']:
           gmdate('m',time()+$formatter->tz_offset);
   
  @@ -28,7 +31,8 @@
                   $day=sprintf("%d",$match[4]);
                   $info[$mon][$day][]=preg_replace('/</','&lt;',$match[5]).' ';
               }
  -            if (preg_match('/(\{\*\}|\(\!\)|\/\!\\\\|<!>|:\()/',$match[5],$m)) {
  +            #if (preg_match('/(\{\*\}|\(\!\)|\/\!\\\\|<!>|:\()/',$match[5],$m)) {
  +            if (preg_match('@('.$color_rule.')@',$match[5],$m)) {
                   if ($color_table[$m[1]]) {
                       $infocolor[$mon][$day][]=$color_table[$m[1]];
                   }
  @@ -41,7 +45,8 @@
                   $match[3] >= 1 and $match[3] <=12 and $match[4]<=31) {
                   if ($match[1]>$match[3]) continue;
                   if ($match[2]>=$match[4]) continue;
  -                if (preg_match('/(\{\*\}|\(\!\)|\/\!\\\\|<!>|:\(|#[a-f0-9]{3}|#[a-f0-9]{6})\s/i',$match[5],$m)) {
  +                #if (preg_match('/(\{\*\}|\(\!\)|\/\!\\\\|<!>|:\(|#[a-f0-9]{3}|#[a-f0-9]{6})\s/i',$match[5],$m)) {
  +                if (preg_match('@('.$color_rule.'|#[a-f0-9]{3}|#[a-f0-9]{6})\s@i',$match[5],$m)) {
                       if ($m[1][0]=='#') {
                           $color='colorbar';
                           $custcolor=' style="background-color:'.$m[1].'"';
  @@ -51,21 +56,27 @@
                           $custcolor='';
                           $text=$match[5];
                       }
  +                } else {
  +                    $color='colorbar gray';
  +                    $text=$match[5];
  +                    $custcolor='';
  +                }
                       $mon0=sprintf("%02d",$match[1]);
                       $mon1=sprintf("%02d",$match[3]);
  +                    if ($mon0<$month or $mon1>$month) continue;
                       $start_tag=$match[1].' '.$match[2];
  -                    $start_tag=$start_tag.'-'.md5($start_tag.$text);
  +                    $start_tag=$start_tag.' '.md5($start_tag.$text);
                       $text=preg_replace('/</','&lt;',$text);
  -                    $coloring[$mon0][$match[2]][$start_tag]=
  -                        $color." start\"$custcolor>$text</li>";
  +                    $coloring[$month][$match[2]][$start_tag]=
  +                        $color." start\"$custcolor><div class='text'>$text</div></li>";
                       // XX month for
                       for ($i=$match[2]+1;$i<$match[4];$i++) {
  -                        $coloring[$mon0][$i][$start_tag]=$color."\"$custcolor></li>";
  +                        $coloring[$month][$i][$start_tag]=$color."\"$custcolor></li>";
                       }
                       // $extra_class
  -                    $coloring[$mon0][$i][$start_tag]=
  +                    $coloring[$month][$i][$start_tag]=
                           $color." end\"$custcolor></li>";
  -                }
  +                #}
               }
           } else if (preg_match('/^\s+\*\s'.
               '(sun|mon|tue|wed|thu|fri|sat)\s(.*)$/i',$line,$match)) {
  @@ -248,7 +259,7 @@
               }
           }
           $colorkeys=array_unique($colorkeys);
  -        sort($colorkeys);
  +        natsort($colorkeys);
           $colkeys=array_flip($colorkeys);
           #print_r($colkeys);
           foreach ($colkeys as $k=>$v)
  
  
  


wkpark      2005/09/12 16:23:57

  Modified:    .        wikilib.php
  Log:
  fixed TOC macro: append a space to render smiley properly
  
  Revision  Changes    Path
  1.169     +3 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.168
  retrieving revision 1.169
  diff -u -r1.168 -r1.169
  --- wikilib.php	7 Sep 2005 10:24:28 -0000	1.168
  +++ wikilib.php	12 Sep 2005 07:23:56 -0000	1.169
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.168 2005/09/07 10:24:28 wkpark Exp $
  +// $Id: wikilib.php,v 1.169 2005/09/12 07:23:56 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2034,9 +2034,9 @@
      $head_num=$num;
   
      if ($baseurl)
  -     $TOC.=$close.$open."<dt><a href='$baseurl#s$prefix-$num'>$num$a0 $head$a1</dt>\n";
  +     $TOC.=$close.$open."<dt><a href='$baseurl#s$prefix-$num'>$num$a0 $head $a1</dt>\n";
      else
  -     $TOC.=$close.$open."<dt><a id='toc$prefix-$num' name='toc$prefix-$num' /><a href='#s$prefix-$num'>$num$a0 $head$a1</dt>\n";
  +     $TOC.=$close.$open."<dt><a id='toc$prefix-$num' name='toc$prefix-$num' /><a href='#s$prefix-$num'>$num$a0 $head $a1</dt>\n";
   
     }
   
  
  
  


wkpark      2005/09/12 16:24:48

  Modified:    css      nlog.css
  Log:
  more fix
  
  Revision  Changes    Path
  1.5       +95 -28    moniwiki/css/nlog.css
  
  Index: nlog.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/nlog.css,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- nlog.css	11 Sep 2005 12:59:00 -0000	1.4
  +++ nlog.css	12 Sep 2005 07:24:47 -0000	1.5
  @@ -385,7 +385,7 @@
   }
   
   .MC td.day {
  -  background-color: #F4F3eE;
  +  background-color: #FFFFFF;
   }
   
   .MC td.fullday {
  @@ -488,6 +488,7 @@
   .MC td.red {
     background-color: #ffc1c1;
   }
  +
   .MC td.red:hover {
     background-color: #ffd1d1;
   }
  @@ -535,7 +536,6 @@
   .MC .fullday ul.colorbar{
     height:100%;
     min-width:16px;
  -  float:right;
     margin:0px;
     padding:0px;
     margin-bottom:0px !important;
  @@ -552,29 +552,56 @@
     float:right;
     height:100%;
     /* min-width:16px; /* */
  -  width:16px; /* */
  +  width:14px; /* */
     border-left:1px solid black;
     border-right:1px solid black;
     border-top:0;
     border-bottom:0;
     margin-right:2px;
  +  white-space:normal !important;
   }
   
   .MC .fullday ul.colorbar li.blank {
  -  width:18px; /* */
  +  width:16px; /* */
   }
   
  -.MC .fullday ul.colorbar li:hover {
  +.MC .fullday ul.colorbar li.blank:hover {
  +  width:16px; /* */
  +  margin-right:2px;
  +}
  +
  +.MC .fullday ul.colorbar li .text:hover {
  +  height:100% !important;
  +  min-width:100px;
  +  overflow:visible;
  +}
  +
  +.MC .fullday ul.colorbar li .text {
  +  min-width:14px;
  +  width:10%;
  +}
  +
  +.MC .fullday li .start {
     height:100% !important;
  -  min-width:16px;
  -  width:auto !important;
  -  text-align:left;
   }
   
  +.MC .colorbar .text:hover {
  +  height:auto !important; /* */
  +  overflow:visible;
  +}
   
  -.MC .colorbar li.red:hover {
  -/*  height:auto !important; /* */
  -  text-align:left;
  +.MC .colorbar li.start .text{
  +  height:14px;
  +}
  +
  +.MC .colorbar li.start .text:hover {
  +  height:10%;
  +  margin-left:-2px;
  +  padding-left:2px;
  +  margin-right:2px;
  +  -moz-border-radius-topleft: 10px;
  +  -moz-border-radius-bottomleft: 10px;
  +  -moz-border-radius-bottomright: 10px;
   }
   
   .MC .colorbar li.start {
  @@ -583,8 +610,8 @@
     font-family:Trebuchet MS,Sans-serif;
     margin-left: 6px;
     margin-right:-1px;
  -  -moz-border-radius-topleft: 14px;
  -  -moz-border-radius-bottomleft: 14px;
  +  -moz-border-radius-topleft: 11px;
  +  -moz-border-radius-bottomleft: 11px;
     border-top:1px solid black;
     border-left:1px solid black;
     border-bottom:1px solid black;
  @@ -592,14 +619,14 @@
   
   .MC .colorbar li.end {
     margin-right: 6px;
  -  -moz-border-radius-topright: 10px;
  -  -moz-border-radius-bottomright: 10px;
  +  -moz-border-radius-topright: 11px;
  +  -moz-border-radius-bottomright: 11px;
     border-top:1px solid black;
     border-right:1px solid black;
     border-bottom:1px solid black;
   }
   
  -.MC .fullday .colorbar li.start {
  +.MC .fullday .colorbar .start {
     margin-top: 10px;
     margin-left:0px;
     margin-right:2px;
  @@ -610,7 +637,7 @@
     -moz-border-radius-bottomright: 0px;
   }
   
  -.MC .fullday .colorbar li.end {
  +.MC .fullday .colorbar .end {
     margin-bottom: 6px;
     margin-right:2px;
     -moz-border-radius-bottomleft: 10px;
  @@ -619,7 +646,7 @@
     -moz-border-radius-topleft: 0px;
   }
   
  -.MC li.blue { /* color-2 */
  +.MC .colorbar .blue { /* color-2 */
     display:block;
     margin:0px;
     background-color: #58F !important;
  @@ -627,8 +654,17 @@
     height:14px;
   }
   
  +.MC .fullday .colorbar .text {
  +  -moz-border-radius-topright: 14px;
  +  -moz-border-radius-bottomright: 14px;
  +  -moz-border-radius-topleft: 14px;
  +}
   
  -.MC li.yellow { /* color-3 */
  +.MC .fullday .colorbar .blue .text {
  +  background-color: #58F !important;
  +}
  +
  +.MC .colorbar .yellow { /* color-3 */
     display:block;
     margin:0px;
     height:14px;
  @@ -636,7 +672,17 @@
     border-color: #DD8311 !important;
   }
   
  -.MC li.purple { /* color-4 */
  +.MC .fullday .colorbar .yellow .text {
  +  background-color: #FFA533;
  +  overflow:hidden; /* XXX Bug ? */
  +}
  +
  +.MC .colorbar .yellow .text {
  +  background-color: #FFA533;
  +  overflow:hidden; /* XXX Bug ? */
  +}
  +
  +.MC .colorbar .purple { /* color-4 */
     display:block;
     margin:0px;
     background-color: #8866AA !important;
  @@ -644,7 +690,15 @@
     height:14px;
   }
   
  -.MC li.red { /* color-1 */
  +.MC .fullday .colorbar .purple .text {
  +  background-color: #8866AA !important;
  +}
  +
  +.MC .colorbar .purple .text {
  +  background-color: #8866AA !important;
  +}
  +
  +.MC .colorbar .red { /* color-1 */
     display:block;
     margin:0px;
     background-color: #F55 !important;
  @@ -652,35 +706,48 @@
     border-color: #D33 !important;
   }
   
  -.MC li.blank { /* color-0 */
  +.MC .fullday .colorbar .red .text {
  +  background-color: #F55 !important;
  +}
  +
  +.MC .colorbar .blank { /* color-0 */
     display:block;
     margin:0px;
     height:16px;
     border:0px !important;
   }
  -.MC li.blank:hover { /* color-0 */
  +.MC .colorbar .blank:hover { /* color-0 */
     display:block;
     margin:0px;
     height:16px;
     border:0px !important;
   }
   
  -.MC li.green { /* color-5 */
  +.MC .colorbar .green { /* color-5 */
     display:block;
     margin:0px;
  -  background-color: #79ff79;
     border-color:  #383 !important;
     background-color: #5A5 !important;
     height:14px;
   }
  +.MC .fullday .colorbar .green .text {
  +  background-color: #5A5 !important;
  +}
   
  -.MC li.gray { /* color-6 */
  +.MC .colorbar .gray { /* color-6 */
     display:block;
     margin:0px;
     border-color: #777 !important;
  -  background-color: #999;
  +  background-color: #999 !important;
     height:14px;
  -  overflow:auto;
  +}
  +
  +.MC .colorbar .gray .text {
  +  background-color: #999 !important;
  +}
  +
  +.MC .fullday .colorbar .gray .text {
  +  background-color: #999 !important;
   }
   
   .wikiChat ul {
  
  
  


wkpark      2005/09/13 16:18:09

  Modified:    .        wikilib.php
  Log:
  fixed RandomQuoteMacro for nosmoke
  
  Revision  Changes    Path
  1.170     +21 -14    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.169
  retrieving revision 1.170
  diff -u -r1.169 -r1.170
  --- wikilib.php	12 Sep 2005 07:23:56 -0000	1.169
  +++ wikilib.php	13 Sep 2005 07:18:08 -0000	1.170
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.169 2005/09/12 07:23:56 wkpark Exp $
  +// $Id: wikilib.php,v 1.170 2005/09/13 07:18:08 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1291,14 +1291,19 @@
   function macro_RandomQuote($formatter,$value="",$options=array()) {
     global $DBInfo;
     define(QUOTE_PAGE,'FortuneCookies');
  +  $formatter->randomquote=1;
  +  if ($formatter->randomquote) $formatter->randomquote++;
  +  else $formatter->randomquote=1;
  +  if ($formatter->randomquote > 2) return '';
   
     $re='/^\s*\* (.*)$/';
     $args=explode(',',$value);
   
     foreach ($args as $arg) {
       $arg=trim($arg);
  -    if (in_array($arg[0],array('@','/','%')) and $arg[0]==substr($arg,-1)) {
  -      if (@preg_match($arg,'',$m)===false) {
  +    if (in_array($arg[0],array('@','/','%')) and
  +      preg_match('/^'.$arg[0].'.*'.$arg[0].'(s|U|x)*$/',$arg)) {
  +      if (preg_match($arg,'',$m)===false) {
           $log=_("Invalid regular expression !");
           continue;
         }
  @@ -1320,28 +1325,30 @@
       $raw=$page->get_raw_body();
     }
    
  -  $lines=explode("\n",$raw);
  -
  -  foreach($lines as $line) {
  -    if (preg_match($re.'i',$line,$match))
  -      $quotes[]=$match[1];
  -  }
  +  preg_match_all($re.'m',$raw,$match);
  +  $quotes=&$match[1];
   
     if (!($count=sizeof($quotes))) return '';
   
     $quote=$quotes[rand(0,$count-1)];
   
  -  $quote=str_replace("<","&lt;",$quote);
  -  $quote=preg_replace($formatter->baserule,$formatter->baserepl,$quote);
  -  $quote=preg_replace("/(".$formatter->wordrule.")/e","\$formatter->link_repl('\\1')",
  -         $quote);
  +  $save=$formatter->preview;
  +  ob_start();
  +  $formatter->send_page($quote);
  +  $formatter->preview=$save;
  +  $out= ob_get_contents();
  +  ob_end_clean();
  +#  $quote=str_replace("<","&lt;",$quote);
  +#  $quote=preg_replace($formatter->baserule,$formatter->baserepl,$quote);
  +#  $out=preg_replace("/(".$formatter->wordrule.")/e","\$formatter->link_repl('\\1')",
  +#         $quote);
   #  ob_start();
   #  $options['nosisters']=1;
   #  $formatter->send_page($quote,$options);
   #  $out= ob_get_contents();
   #  ob_end_clean();
   #  return $out;
  -  return $log.$quote;
  +  return $log.$out;
   }
   
   
  
  
  


wkpark      2005/09/13 16:49:46

  Modified:    .        wikilib.php
  Log:
  more fixes
  
  Revision  Changes    Path
  1.171     +2 -6      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.170
  retrieving revision 1.171
  diff -u -r1.170 -r1.171
  --- wikilib.php	13 Sep 2005 07:18:08 -0000	1.170
  +++ wikilib.php	13 Sep 2005 07:49:45 -0000	1.171
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.170 2005/09/13 07:18:08 wkpark Exp $
  +// $Id: wikilib.php,v 1.171 2005/09/13 07:49:45 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1291,10 +1291,6 @@
   function macro_RandomQuote($formatter,$value="",$options=array()) {
     global $DBInfo;
     define(QUOTE_PAGE,'FortuneCookies');
  -  $formatter->randomquote=1;
  -  if ($formatter->randomquote) $formatter->randomquote++;
  -  else $formatter->randomquote=1;
  -  if ($formatter->randomquote > 2) return '';
   
     $re='/^\s*\* (.*)$/';
     $args=explode(',',$value);
  @@ -1302,7 +1298,7 @@
     foreach ($args as $arg) {
       $arg=trim($arg);
       if (in_array($arg[0],array('@','/','%')) and
  -      preg_match('/^'.$arg[0].'.*'.$arg[0].'(s|U|x)*$/',$arg)) {
  +      preg_match('/^'.$arg[0].'.*'.$arg[0].'[sxU]*$/',$arg)) {
         if (preg_match($arg,'',$m)===false) {
           $log=_("Invalid regular expression !");
           continue;
  
  
  


wkpark      2005/09/13 17:34:40

  Modified:    .        wikilib.php
  Log:
  protect resursive call of the RandomQuoteMacro
  
  Revision  Changes    Path
  1.172     +2 -1      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.171
  retrieving revision 1.172
  diff -u -r1.171 -r1.172
  --- wikilib.php	13 Sep 2005 07:49:45 -0000	1.171
  +++ wikilib.php	13 Sep 2005 08:34:40 -0000	1.172
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.171 2005/09/13 07:49:45 wkpark Exp $
  +// $Id: wikilib.php,v 1.172 2005/09/13 08:34:40 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1291,6 +1291,7 @@
   function macro_RandomQuote($formatter,$value="",$options=array()) {
     global $DBInfo;
     define(QUOTE_PAGE,'FortuneCookies');
  +  if ($formatter->preview==1) return '';
   
     $re='/^\s*\* (.*)$/';
     $args=explode(',',$value);
  
  
  


wkpark      2005/09/13 17:48:22

  Modified:    plugin   RecentChanges.php
  Log:
  fix 'daysago' bug with bookmark action
  
  Revision  Changes    Path
  1.18      +3 -4      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- RecentChanges.php	8 Sep 2005 02:43:39 -0000	1.17
  +++ RecentChanges.php	13 Sep 2005 08:48:21 -0000	1.18
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.17 2005/09/08 02:43:39 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.18 2005/09/13 08:48:21 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     $options['trail']='';
  @@ -83,7 +83,6 @@
     // override ago
     if ($_GET['ago'])
       $opts['ago']=$_GET['ago'] ? abs($_GET['ago']):$opts['ago'];
  -  if ($opts['ago']==0) $opts['ago']=$days;
   
     // daysago
     $daysago='&amp;days='.$days;
  @@ -112,7 +111,7 @@
     $lines= $DBInfo->editlog_raw_lines($days,$opts);
   
     // make a daysago button
  -  if ($use_daysago or $_GET['days']) {
  +  if ($use_daysago or $_GET['ago']) {
       $msg[0]=_("Show changes for ");
       $agolist=array(-$days,$days,2*$days,3*$days);
       $btn=array();
  @@ -216,7 +215,7 @@
       $pageurl=_rawurlencode($page_name);
   
       if (!$DBInfo->hasPage($page_name))
  -      $icon= $formatter->link_tag($pageurl,"?action=diff",$formatter->icon['del']);
  +      $icon= $formatter->link_tag($pageurl,"?action=info",$formatter->icon['del']);
       else if ($ed_time > $bookmark) {
         $icon= $formatter->link_tag($pageurl,"?action=diff&amp;date=$bookmark",$formatter->icon['updated']);
         if ($checknew) {
  
  
  


wkpark      2005/09/13 17:51:10

  Modified:    plugin/processor blog.php
  Log:
  use gmdate() and fix sectionedit bug
  
  Revision  Changes    Path
  1.21      +8 -5      moniwiki/plugin/processor/blog.php
  
  Index: blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/blog.php,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- blog.php	13 Apr 2005 06:29:36 -0000	1.20
  +++ blog.php	13 Sep 2005 08:51:10 -0000	1.21
  @@ -7,7 +7,7 @@
   // Hello World
   // }}}
   // this processor is used internally by the Blog action
  -// $Id: blog.php,v 1.20 2005/04/13 06:29:36 wkpark Exp $
  +// $Id: blog.php,v 1.21 2005/09/13 08:51:10 wkpark Exp $
   
   function processor_blog($formatter,$value="",$options) {
     static $date_anchor='';
  @@ -51,15 +51,15 @@
       if ($date && $date[10] == 'T') {
         $date[10]=' ';
         $time=strtotime($date." GMT");
  -      $date= "@ ".date("m-d [h:i a]",$time);
  +      $date= "@ ".gmdate("m-d [h:i a]",$time+$formatter->tz_offset);
         $pagename=$formatter->page->name;
         $p=strrpos($pagename,'/');
         if ($p and preg_match('/(\d{4})(-\d{1,2})?(-\d{1,2})?/',substr($pagename,$p),$match)) {
           if ($match[3]) $anchor='';
  -        else if ($match[2]) $anchor= date("d",$time);
  -        else if ($match[1]) $anchor= date("md",$time);
  +        else if ($match[2]) $anchor= gmdate("d",$time);
  +        else if ($match[1]) $anchor= gmdate("md",$time);
         } else
  -        $anchor= date("Ymd",$time);
  +        $anchor= gmdate("Ymd",$time);
         if ($date_anchor != $anchor) {
           $anchor_date_fmt=$DBInfo->date_fmt_blog;
           $datetag= "<div class='blog-date'>".date($anchor_date_fmt,$time)." <a name='$anchor'></a><a class='perma' href='#$anchor'>$formatter->perma_icon</a></div>";
  @@ -100,6 +100,8 @@
       if ($action)
         $action="<div class='blog-action'><span class='bullet'>&raquo;</span> ".$action."</div>\n";
   
  +    $save=$formatter->preview;
  +    $formatter->preview=1;
       ob_start();
       $formatter->send_page($src,$options);
       $msg= ob_get_contents();
  @@ -111,6 +113,7 @@
         ob_end_clean();
       } else
         $comments="";
  +    $formatter->preview=$save;
     }
   
     $out="$datetag<div class='blog'>";
  
  
  


wkpark      2005/09/13 18:10:52

  Modified:    plugin   rss_rc.php
  Log:
  fixed "&" bug;
  
  Revision  Changes    Path
  1.12      +2 -2      moniwiki/plugin/rss_rc.php
  
  Index: rss_rc.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rss_rc.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- rss_rc.php	5 Sep 2005 16:52:42 -0000	1.11
  +++ rss_rc.php	13 Sep 2005 09:10:52 -0000	1.12
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // rss_rc action plugin for the MoniWiki
   //
  -// $Id: rss_rc.php,v 1.11 2005/09/05 16:52:42 wkpark Exp $
  +// $Id: rss_rc.php,v 1.12 2005/09/13 09:10:52 wkpark Exp $
   
   function do_rss_rc($formatter,$options) {
     global $DBInfo;
  @@ -74,7 +74,7 @@
           $html="<![CDATA[".$html.$extra."]]>";
           #$html=strtr($html.$extra,array('&'=>'&amp;','<'=>'&lt;'));
         } else {
  -        $html=$log;
  +    	$html=str_replace('&','&amp;',$log);
         }
       }
       $zone = "+00:00";
  
  
  


wkpark      2005/09/13 18:11:43

  Modified:    plugin   chat.php
  Log:
  more fixes
  
  Revision  Changes    Path
  1.5       +9 -3      moniwiki/plugin/chat.php
  
  Index: chat.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/chat.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- chat.php	8 Sep 2005 13:16:32 -0000	1.4
  +++ chat.php	13 Sep 2005 09:11:43 -0000	1.5
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Chat]]
   //
  -// $Id: chat.php,v 1.4 2005/09/08 13:16:32 wkpark Exp $
  +// $Id: chat.php,v 1.5 2005/09/13 09:11:43 wkpark Exp $
   // http://cvs.drupal.org/viewcvs/drupal/contributions/modules/chat/
   
   function macro_Chat($formatter,$value,$options=array()) {
  @@ -42,10 +42,12 @@
       $chat_script=1;
       return <<<EOF
   $script
  +<div class="wikiChat">
   <div id="chat$tag">$msg</div>
   <form onSubmit='return false'>
   <input type='text' size='40' class='wikiChat' onkeypress='sendMsg(event,this,"$url","chat$tag",$itemnum);' />
   </form>
  +</div>
   <script language='javascript'>
   <!--
   setInterval('sendMsg("poll",null,"$url","chat$tag",$itemnum)',10000);
  @@ -138,14 +140,18 @@
       $out='';
       $smiley_rule='/(?<=\s|^|>)('.$DBInfo->smiley_rule.')(?=\s|$)/e';
       $smiley_repl="\$formatter->smiley_repl('\\1')";
  +    $save=$formatter->sister_on;
  +    $formatter->sister_on=0;
       foreach ($lines as $line) {
           $dumm=explode("\t",$line,3);
  -        $line=gmdate("H:i:s",$dumm[0]+$options['tz_offset']).
  -            '&lt;['.$dumm[1].']> '.$dumm[2];
  +        $line='<span class="date">'.
  +            gmdate("H:i:s",$dumm[0]+$options['tz_offset']).'</span>'.
  +            '<span class="user">&lt;['.$dumm[1].']></span>'.$dumm[2];
           $line=preg_replace($smiley_rule,$smiley_repl,$line);
           $out.='<li>'.preg_replace("/(".$formatter->wordrule.")/e",
               "\$formatter->link_repl('\\1')",$line).'</li>';
       }
  +    $formatter->sister_on=$save;
       if ($options['option_method']=='ajax') {
           $formatter->header('Expires','0');
           $formatter->header('Pragma','no-cache');
  
  
  


wkpark      2005/09/13 18:15:19

  Modified:    plugin   BlogChanges.php
  Log:
  use gmdate()
  
  Revision  Changes    Path
  1.34      +8 -6      moniwiki/plugin/BlogChanges.php
  
  Index: BlogChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogChanges.php,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- BlogChanges.php	24 Nov 2004 15:30:30 -0000	1.33
  +++ BlogChanges.php	13 Sep 2005 09:15:19 -0000	1.34
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogChanges action plugin for the MoniWiki
   //
  -// $Id: BlogChanges.php,v 1.33 2004/11/24 15:30:30 wkpark Exp $
  +// $Id: BlogChanges.php,v 1.34 2005/09/13 09:15:19 wkpark Exp $
   
   class Blog_cache {
     function get_all_blogs() {
  @@ -213,6 +213,8 @@
   function macro_BlogChanges($formatter,$value,$options=array()) {
     global $DBInfo;
   
  +  $tz_off=&$formatter->tz_offset;
  +
     if (empty($options)) $options=array();
     if ($_GET['date'])
       $options['date']=$date=$_GET['date'];
  @@ -320,13 +322,13 @@
     $day=substr($date,6,2);
   
     if (strlen($date)==8) {
  -    $prev_date= date('Ymd',mktime(0,0,0,$month,intval($day) - 1,$year));
  -    $next_date= date('Ymd',mktime(0,0,0,$month,intval($day) + 1,$year));
  +    $prev_date= gmdate('Ymd',mktime(0,0,0,$month,intval($day) - 1,$year)+$tz_off);
  +    $next_date= gmdate('Ymd',mktime(0,0,0,$month,intval($day) + 1,$year)+$tz_off);
     } else if (strlen($date)==6) {
       $cdate=date('Ym');
  -    $prev_date= date('Ym',mktime(0,0,0,intval($month) - 1,1,$year));
  +    $prev_date= date('Ym',mktime(0,0,0,intval($month) - 1,1,$year)+$tz_off);
       if ($cdate > $date)
  -      $next_date= date('Ym',mktime(0,0,0,intval($month) + 1,1,$year));
  +      $next_date= gmdate('Ym',mktime(0,0,0,intval($month) + 1,1,$year)+$tz_off);
     }
   
     // set output style
  @@ -386,7 +388,7 @@
       $date[10]=' ';
       $time=strtotime($date.' GMT');
   
  -    $date= date('m-d [h:i a]',$time);
  +    $date= gmdate('m-d [h:i a]',$time+$tz_off);
       if ($summary) {
         $anchor= date('Ymd',$time);
         if ($date_anchor != $anchor) {
  
  
  


wkpark      2005/09/13 18:16:49

  Modified:    plugin   MoniCalendar.php
  Log:
  support colorbar options
  
  Revision  Changes    Path
  1.4       +5 -2      moniwiki/plugin/MoniCalendar.php
  
  Index: MoniCalendar.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/MoniCalendar.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- MoniCalendar.php	12 Sep 2005 07:22:04 -0000	1.3
  +++ MoniCalendar.php	13 Sep 2005 09:16:49 -0000	1.4
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Test]]
   //
  -// $Id: MoniCalendar.php,v 1.3 2005/09/12 07:22:04 wkpark Exp $
  +// $Id: MoniCalendar.php,v 1.4 2005/09/13 09:16:49 wkpark Exp $
   
   function _parseDays($formatter,$page,$options=array()) {
       $color_table=
  @@ -52,9 +52,12 @@
                           $custcolor=' style="background-color:'.$m[1].'"';
                           $text=substr($match[5],strlen($m[1]));
                       } else {
  +                        if (preg_match('/^(red|blue|gray|purple|yellow|green)/',$m[1])) {
  +                            $text=substr($match[5],strlen($m[1]));
  +                        } else
  +                            $text=$match[5];
                           $color='colorbar '.$color_table[$m[1]];
                           $custcolor='';
  -                        $text=$match[5];
                       }
                   } else {
                       $color='colorbar gray';
  
  
  


wkpark      2005/09/13 18:19:45

  Modified:    plugin   BlogCategories.php
  Log:
  use list and add a css class
  
  Revision  Changes    Path
  1.8       +14 -3     moniwiki/plugin/BlogCategories.php
  
  Index: BlogCategories.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogCategories.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- BlogCategories.php	25 Aug 2004 15:41:38 -0000	1.7
  +++ BlogCategories.php	13 Sep 2005 09:19:45 -0000	1.8
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogCategory macro plugin for the MoniWiki
   //
  -// $Id: BlogCategories.php,v 1.7 2004/08/25 15:41:38 wkpark Exp $
  +// $Id: BlogCategories.php,v 1.8 2005/09/13 09:19:45 wkpark Exp $
   
   function macro_BlogCategories($formatter,$value='') {
     global $DBInfo;
  @@ -22,6 +22,9 @@
     $temp= explode("\n",$raw);
   
     $link=$formatter->link_url($formatter->page->name,'?action=blogchanges&amp;category=CATEGORY');
  +  $odep=-1;
  +  $dep=0;
  +  $out='';
     foreach ($temp as $line) {
       #$line=str_replace('/','_2f',$line);
       if (preg_match('/^(\s{1'.$depth.'})\* ([^:]+)(?=\s|:|$)/',$line,$match)) {
  @@ -32,11 +35,19 @@
         if (!$no_rss)
           $rss='&nbsp;<a href="'.str_replace('blogchanges','blogrss',$lnk).'">'.
             '<img src="'.$DBInfo->imgs_dir.'/plugin/tiny-xml.png'.'" border="0" alt="xml" /></a>';
  -      $dep=str_replace(' ','&nbsp;&nbsp;',$match[1]);
  -      $out.="$dep<a href='$lnk'>$text/</a>$rss<br/>";
  +      $dep=strlen($match[1]);
  +      if ($dep > $odep) $out.="<ul>\n";
  +      else if ($dep < $odep) $out.="</li>\n</ul>\n</li>\n";
  +      else if ($odep != -1) $out.="</li>\n";
  +      if ($dep >=2 ) $class=' class="sub"';
  +      else $class='';
  +      $odep=$dep;
  +      $out.="\t<li$class><a href='$lnk'>$text<span class='dir'>/</span></a>$rss";
       }
     }
  +  for ($i=$odep;$i>=1;$i--) $out.="</li>\n</ul>\n";
   
  +  #return '<div id="blogCategory">'.$out.'</div>';
     return $out;
   }
   
  
  
  


wkpark      2005/09/13 19:16:51

  Modified:    .        wiki.php wikilib.php
  Log:
  support user defined class/id with ##.myClass ###myId syntax
  
  Revision  Changes    Path
  1.250     +20 -11    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.249
  retrieving revision 1.250
  diff -u -r1.249 -r1.250
  --- wiki.php	11 Sep 2005 13:33:41 -0000	1.249
  +++ wiki.php	13 Sep 2005 10:16:51 -0000	1.250
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.249 2005/09/11 13:33:41 wkpark Exp $
  +// $Id: wiki.php,v 1.250 2005/09/13 10:16:51 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.249 $',1,-1);
  +$_revision = substr('$Revision: 1.250 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -2328,16 +2328,18 @@
       return "<span class='purple'><a name='$nid' id='$nid'></a><a href='#$nid'>(".$id.")</a></span>";
     }
   
  -  function _div($on,&$in_div) {
  +  function _div($on,&$in_div,&$enclose) {
       $tag=array("</div>\n","<div>\n");
  -    if ($on) $in_div++;
  +    if ($on) { $in_div++; $open=$enclose;}
       else {
         if (!$in_div) return '';
  +      $close=$enclose;
         $in_div--;
       }
  +    $enclose='';
       if (!$on) $purple=$this->_purple();
       #return "(".$in_div.")".$tag[$on];
  -    return $purple.$tag[$on];
  +    return $purple.$open.$tag[$on].$close;
     }
   
     function _li($on,$empty='') {
  @@ -2430,6 +2432,7 @@
       $in_table=0;
       $li_open=0;
       $li_empty=0;
  +    $div_enclose='';
       $indent_list[0]=0;
       $indent_type[0]="";
   
  @@ -2459,7 +2462,7 @@
             $text.=$this->_table(0)."<br />\n";$in_table=0; continue;
           } else {
             #if ($in_p) { $text.="</div><br />\n"; $in_p='';}
  -          if ($in_p) { $text.=$this->_div(0,$in_div)."<br />\n"; $in_p='';}
  +          if ($in_p) { $text.=$this->_div(0,$in_div,$div_enclose)."<br />\n"; $in_p='';}
             else if ($in_p=='') { $text.="<br />\n";}
             continue;
           }
  @@ -2468,6 +2471,12 @@
           if ($line[2]=='[') {
             $macro=substr($line,4,-2);
             $text.= $this->macro_repl($macro);
  +        } else if ($line[2]=='#') {
  +          $div_enclose='<div id="'.substr($line,3).'">';
  +        } else if ($line[2]=='.') {
  +          $div_enclose='<div class="'.substr($line,3).'">';
  +        } else {
  +          $div_enclose='</div>';
           }
           continue; # comments
         }
  @@ -2475,9 +2484,9 @@
         $p_close='';
         if (preg_match('/^-{4,}/',$line)) {
           if ($this->auto_linebreak) $this->nobr=1; // XXX
  -        if ($in_p) { $p_close=$this->_div(0,$in_div); $in_p='';}
  +        if ($in_p) { $p_close=$this->_div(0,$in_div,$div_enclose); $in_p='';}
         } else if ($in_p == '') {
  -        $p_close=$this->_div(1,$in_div);
  +        $p_close=$this->_div(1,$in_div,$div_enclose);
           $in_p= $line;
         }
   
  @@ -2744,7 +2753,7 @@
       }
       # close div
       #if ($in_p) $close.="</div>\n"; # </para>
  -    if ($in_p) $close.=$this->_div(0,$in_div); # </para>
  +    if ($in_p) $close.=$this->_div(0,$in_div,$div_enclose); # </para>
   
       # activate <del></del> tag
       #$text=preg_replace("/(&lt;)(\/?del>)/i","<\\2",$text);
  @@ -2885,12 +2894,12 @@
         if (is_array($header))
           foreach ($header as $head) {
             $this->header($head);
  -          if (preg_match("/^content\-type: text\/plain/i",$head))
  +          if (preg_match("/^content\-type: text\//i",$head))
               $plain=1;
           }
         else {
           $this->header($header);
  -        if (preg_match("/^content\-type: text\/plain/i",$header))
  +        if (preg_match("/^content\-type: text\//i",$header))
             $plain=1;
         }
       }
  
  
  
  1.173     +6 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.172
  retrieving revision 1.173
  diff -u -r1.172 -r1.173
  --- wikilib.php	13 Sep 2005 08:34:40 -0000	1.172
  +++ wikilib.php	13 Sep 2005 10:16:51 -0000	1.173
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.172 2005/09/13 08:34:40 wkpark Exp $
  +// $Id: wikilib.php,v 1.173 2005/09/13 10:16:51 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -845,7 +845,11 @@
   }
   
   function do_raw($formatter,$options) {
  -  $formatter->send_header("Content-Type: text/plain",$options);
  +  $supported=array('text/plain','text/css','text/javascript');
  +  if ($options['mime'] and in_array($options['mime'],$supported)) {
  +    $formatter->send_header("Content-Type: $options[mime]",$options);
  +  } else
  +    $formatter->send_header("Content-Type: text/plain",$options);
     print $formatter->page->get_raw_body($options);
   }
   
  
  
  


wkpark      2005/09/13 20:22:08

  Modified:    .        wiki.php
  Log:
  more fixes
  
  Revision  Changes    Path
  1.251     +8 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.250
  retrieving revision 1.251
  diff -u -r1.250 -r1.251
  --- wiki.php	13 Sep 2005 10:16:51 -0000	1.250
  +++ wiki.php	13 Sep 2005 11:22:08 -0000	1.251
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.250 2005/09/13 10:16:51 wkpark Exp $
  +// $Id: wiki.php,v 1.251 2005/09/13 11:22:08 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.250 $',1,-1);
  +$_revision = substr('$Revision: 1.251 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -2433,6 +2433,7 @@
       $li_open=0;
       $li_empty=0;
       $div_enclose='';
  +    $my_div=0;
       $indent_list[0]=0;
       $indent_type[0]="";
   
  @@ -2473,10 +2474,13 @@
             $text.= $this->macro_repl($macro);
           } else if ($line[2]=='#') {
             $div_enclose='<div id="'.substr($line,3).'">';
  +          $my_div++;
           } else if ($line[2]=='.') {
             $div_enclose='<div class="'.substr($line,3).'">';
  +          $my_div++;
           } else {
             $div_enclose='</div>';
  +          $my_div--;
           }
           continue; # comments
         }
  @@ -2754,6 +2758,8 @@
       # close div
       #if ($in_p) $close.="</div>\n"; # </para>
       if ($in_p) $close.=$this->_div(0,$in_div,$div_enclose); # </para>
  +    #if ($div_enclose) $close.=$this->_div(0,$in_div,$div_enclose);
  +    while ($my_div>0) { $close.="</div>\n"; $my_div--;}
   
       # activate <del></del> tag
       #$text=preg_replace("/(&lt;)(\/?del>)/i","<\\2",$text);
  
  
  


wkpark      2005/09/14 09:06:52

  Modified:    plugin   SlideShow.php
  Log:
  more fixes
  
  Revision  Changes    Path
  1.2       +58 -28    moniwiki/plugin/SlideShow.php
  
  Index: SlideShow.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SlideShow.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SlideShow.php	26 Aug 2005 09:58:20 -0000	1.1
  +++ SlideShow.php	14 Sep 2005 00:06:52 -0000	1.2
  @@ -5,19 +5,32 @@
   //
   // Usage: [[SlideShow(pagename)]]
   //
  -// $Id: SlideShow.php,v 1.1 2005/08/26 09:58:20 wkpark Exp $
  +// $Id: SlideShow.php,v 1.2 2005/09/14 00:06:52 wkpark Exp $
   
   function macro_SlideShow($formatter,$value='',$options=array()) {
       global $DBInfo;
   
  -    if ($value) {
  -        if (!$DBInfo->hasPage($value))
  +    $depth=2; // default depth
  +    if ($options['d']) $depth=intval($options['d']);
  +    $args=explode(',',$value);
  +    $sz=sizeof($args);
  +    for($i=0,$sz=sizeof($args);$i<$sz;$i++) {
  +        if (($p=strpos($args[$i],'='))!==false) {
  +            $k=substr($args[$i],0,$p);
  +            $v=substr($args[$i],$p+1);
  +            if ($k=='depth' or $k=='dep') $depth=intval($v);
  +        } else {
  +            $pgname=$args[$i];
  +        }
  +    }
  +    if ($pgname) {
  +        if (!$DBInfo->hasPage($pgname))
               return '[[SlideShow('._("No page found").')]]';
  -        $pg=$DBInfo->getPage($value);
  -        $sections=_get_sections($pg->get_raw_body(),2);
  -        $urlname=_urlencode($value);
  +        $pg=$DBInfo->getPage($pgname);
  +        $sections=_get_sections($pg->get_raw_body(),$depth);
  +        $urlname=_urlencode($pgname);
       } else {
  -        $sections=_get_sections($formatter->page->get_raw_body(),2);
  +        $sections=_get_sections($formatter->page->get_raw_body(),$depth);
           $urlname=$formatter->page->urlname;
       }
   
  @@ -30,23 +43,28 @@
       $icon_dir=$DBInfo->imgs_dir.'/plugin/SlideShow/'.$iconset.'/';
   
       // get head title section
  -    list($secthead,$dumm)=explode("\n",$sections[0]);
  -    preg_match('/^\s*=\s*([^=].*[^=])\s*=\s?$/',$secthead,$match);
  -    $secthead=rtrim($sections[0]);
  -    if ($match[1]) $title=$match[1];
  +    if ($depth==2) {
  +        list($secthead,$dumm)=explode("\n",$sections[0]);
  +        preg_match('/^\s*=\s*([^=].*[^=])\s*=\s?$/',$secthead,$match);
  +        $secthead=rtrim($sections[0]);
  +        if ($match[1]) $title=$match[1];
  +    } else {
  +        $dep='&amp;d='.$depth;
  +    }
       $sz=sizeof($sections);
  +    if (trim($sections[$sz])=='') $sz--;
   
       // get prev,next subtitle
  -    if ($sz > ($sect+1)) {
  +    if ($sz > ($sect)) {
           list($n_title,$dumm)=explode("\n",$sections[$sect+1]);
  -        preg_match('/^\s*==\s*(.*)\s*==\s?$/',$n_title,$match);
  +        preg_match("/^\s*={".$depth.'}\s*(.*)\s*={'.$depth.'}\s?$/',$n_title,$match);
           if ($match[1])
               $n_title=$match[1];
           else
               $n_title='';
   
  -        list($e_title,$dumm)=explode("\n",$sections[$sz-1]);
  -        preg_match('/^\s*==\s*(.*)\s*==\s?$/',$e_title,$match);
  +        list($e_title,$dumm)=explode("\n",$sections[$sz]);
  +        preg_match("/^[ ]*={".$depth."}\s+(.*)\s+={".$depth."}\s?/",$e_title,$match);
           if ($match[1])
               $e_title=$match[1];
           else
  @@ -54,15 +72,15 @@
       }
       if (!$options['action'] or $sect > 1){
           list($s_title,$dumm)=explode("\n",$sections[1]);
  -        preg_match('/^\s*==\s*(.*)\s*==\s?$/',$s_title,$match);
  +        preg_match("/^\s*={".$depth."}\s*(.*)\s*={".$depth."}\s?$/",$s_title,$match);
           if ($match[1])
               $s_title=$match[1];
           else
               $s_title='';
       }
  -    if ($sect-1 >= 1) {
  +    if ($sect >= 1) {
           list($p_title,$dumm)=explode("\n",$sections[$sect-1]);
  -        preg_match('/^\s*==\s*(.*)\s*==\s?$/',$p_title,$match);
  +        preg_match('/^\s*={'.$depth.'}\s*(.*)\s*={'.$depth.'}\s?$/',$p_title,$match);
           if ($match[1])
               $p_title=$match[1];
           else
  @@ -71,35 +89,47 @@
       // make link icons
       if ($s_title!='' or !$options['action']) {
           $slink= $formatter->link_url($urlname,'?action='.$act.
  -            '&amp;p=1');
  +            $dep.'&amp;p=1');
           $icon=$options['action'] ? 'start':'next';
           $start= '<a href="'.$slink.'" title="'._("Start:").' '.$s_title.'">'.
               '<img src="'.$icon_dir.$icon.'.png'.'" border="0" alt="<|" /></a>';
  +    } else {
  +        $start= 
  +            '<img src="'.$icon_dir.'start_off.png'.'" border="0" alt="<|" /></a>';
       }
       if ($e_title!='' and $options['action']) {
           $elink= $formatter->link_url($urlname,'?action='.$act.
  -            '&amp;p='.($sz-1));
  +            $dep.'&amp;p='.$sz);
           $end= '<a href="'.$elink.'" title="'._("End:").' '.$e_title.'">'.
               '<img src="'.$icon_dir.'end.png'.'" border="0" alt="|>" /></a>';
  +    } else {
  +        $end= 
  +            '<img src="'.$icon_dir.'end_off.png'.'" border="0" alt="|>" /></a>';
       }
       if ($n_title!='' and $options['action']) {
           $nlink= $formatter->link_url($urlname,'?action='.$act.
  -            '&amp;p='.($sect+1));
  +            $dep.'&amp;p='.($sect+1));
           $next= '<a href="'.$nlink.'" title="'._("Next:").' '.$n_title.'">'.
               '<img src="'.$icon_dir.'next.png'.'" border="0" alt=">" /></a>';
  +    } else {
  +        $next= 
  +            '<img src="'.$icon_dir.'next_off.png'.'" border="0" alt=">" /></a>';
       }
       if ($p_title!='') {
           $plink= $formatter->link_url($urlname,'?action='.$act.
  -            '&amp;p='.($sect-1));
  +            $dep.'&amp;p='.($sect-1));
           $prev= '<a href="'.$plink.'" title="'._("Prev:").' '.$p_title.'">'.
               '<img src="'.$icon_dir.'prev.png'.'" border="0" alt="<" /></a>';
  +    } else {
  +        $prev= 
  +            '<img src="'.$icon_dir.'prev_off.png'.'" border="0" alt="<" /></a>';
       }
  -    if ($options['action']) {
  -        $return= $formatter->link_tag($urlname,'?action=show',_("Return"));
  -        return array($sections,"$start$prev$next$end$return\n");
  -    }
  -    return "$start$prev$next$end\n";
  -
  +    $rlink= $formatter->link_url($urlname,'?action=show');
  +    $return= '<a href="'.$rlink.'" title="'._("Return").' '.$pgname.'">'.
  +        '<img src="'.$icon_dir.'up.png'.'" border="0" alt="^" /></a>';
  +    if ($options['action'])
  +        return array($sections,"$return$start$prev$next$end\n");
  +    return "$return$start$prev$next$end\n";
   }
   
   function do_slideshow($formatter,$options=array()) {
  
  
  


wkpark      2005/09/14 09:07:29

  Modified:    .        wikilib.php
  Log:
  fix get_section() for the SlideShow plugin
  
  Revision  Changes    Path
  1.174     +5 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.173
  retrieving revision 1.174
  diff -u -r1.173 -r1.174
  --- wikilib.php	13 Sep 2005 10:16:51 -0000	1.173
  +++ wikilib.php	14 Sep 2005 00:07:29 -0000	1.174
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.173 2005/09/13 10:16:51 wkpark Exp $
  +// $Id: wikilib.php,v 1.174 2005/09/14 00:07:29 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -514,6 +514,8 @@
     $chunks=preg_split("/(\{\{\{.+?\}\}\})/s",$body,-1, PREG_SPLIT_DELIM_CAPTURE);
     $sects=array();
     $sects[]='';
  +  if ($lim > 1 and $lim < 6) $lim=','.$lim;
  +  else $lim='';
     for ($jj=0,$ii=0,$ss=count($chunks); $ii<$ss; $ii++) {
       if (($ii%2)) {
         $sec=array_pop($sects);
  @@ -521,7 +523,7 @@
         continue;
       }
       $parts=array();
  -    $parts=preg_split("/^((?!\n)\s*={1,$lim}\s#?.*\s+={1,$lim}\s?)$/m",$chunks[$ii],
  +    $parts=preg_split("/^((?!\n)[ ]*={1$lim}\s#?.*\s+={1$lim}\s?)$/m",$chunks[$ii],
         -1, PREG_SPLIT_DELIM_CAPTURE);
       for ($j=0,$i=0,$s=count($parts); $i<$s; $i++) {
         if (!($i%2)) {
  @@ -529,7 +531,7 @@
           $sects[]=$sec.$parts[$i];
           continue;
         }
  -      if (preg_match("/^\s*(={1,$lim})\s#?.*\s+\\1\s?/",$parts[$i])) {
  +      if (preg_match("/^\s*(={1$lim})\s#?.*\s+\\1\s?/",$parts[$i])) {
           $sects[]=$parts[$i];
         } else {
           $sec=array_pop($sects);
  
  
  


wkpark      2005/09/14 09:11:26

  Modified:    plugin   Info.php
  Log:
  add checkbox.js to easily manage the history of pages
  
  Revision  Changes    Path
  1.7       +6 -3      moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Info.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- Info.php	1 Sep 2005 06:35:37 -0000	1.6
  +++ Info.php	14 Sep 2005 00:11:26 -0000	1.7
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Info plugin for the MoniWiki
   //
  -// $Id: Info.php,v 1.6 2005/09/01 06:35:37 wkpark Exp $
  +// $Id: Info.php,v 1.7 2005/09/14 00:11:26 wkpark Exp $
   
   function _parse_rlog($formatter,$log) {
     global $DBInfo;
  @@ -21,7 +21,7 @@
   
     $out="<h2>"._("Revision History")."</h2>\n";
     $out.="<table class='info' border='0' cellpadding='3' cellspacing='2'>\n";
  -  $out.="<form method='post' action='$url'>";
  +  $out.="<form id='infoform' method='post' action='$url'>";
     $out.="<th class='info'>#</th><th class='info'>Date and Changes</th>".
          "<th class='info'>Editor</th>".
          "<th><input type='submit' value='diff'></th>".
  @@ -100,8 +100,10 @@
               $out.= " ".$formatter->link_to("?action=diff&rev=$rev","diff");
               $out.="</td><th>";
               $out.="<input type='checkbox' name='range[$flag]' value='$rev' />";
  -         } else
  +         } else {
               $out.="</td><th>";
  +            $out.="<input type='image' src='$DBInfo->imgs_dir/smile/checkmark.png' onClick=\"ToggleAll('infoform');return false;\"/>";
  +         }
            $out.="</th></tr>\n";
            if ($comment)
               $out.="<tr><td class='info' colspan='5'>$comment&nbsp;</td></tr>\n";
  @@ -116,6 +118,7 @@
     }
     $out.="<input type='submit' name='rcspurge' value='purge'></td></tr>";
     $out.="<input type='hidden' name='action' value='diff'/></form></table>\n";
  +  $out.="<script type='text/javascript' src='$DBInfo->url_prefix/local/checkbox.js'></script>\n";
     return $out; 
   }
   
  
  
  


wkpark      2005/09/14 09:12:38

  Modified:    imgs/plugin/SlideShow/bluecurve end.png next.png prev.png
                        start.png
  Added:       imgs/plugin/SlideShow/bluecurve end_off.png next_off.png
                        prev_off.png start_off.png up.png
  Log:
  add and update the icons for the SlideShow plugin
  
  Revision  Changes    Path
  1.2       +4 -4      moniwiki/imgs/plugin/SlideShow/bluecurve/end.png
  
  	<<Binary file>>
  
  
  1.2       +6 -3      moniwiki/imgs/plugin/SlideShow/bluecurve/next.png
  
  	<<Binary file>>
  
  
  1.2       +5 -2      moniwiki/imgs/plugin/SlideShow/bluecurve/prev.png
  
  	<<Binary file>>
  
  
  1.2       +4 -3      moniwiki/imgs/plugin/SlideShow/bluecurve/start.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/SlideShow/bluecurve/end_off.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/SlideShow/bluecurve/next_off.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/SlideShow/bluecurve/prev_off.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/SlideShow/bluecurve/start_off.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/SlideShow/bluecurve/up.png
  
  	<<Binary file>>
  
  


wkpark      2005/09/14 10:57:32

  Modified:    plugin   SlideShow.php
  Log:
  more fix for enhanced ui
  
  Revision  Changes    Path
  1.3       +19 -6     moniwiki/plugin/SlideShow.php
  
  Index: SlideShow.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SlideShow.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SlideShow.php	14 Sep 2005 00:06:52 -0000	1.2
  +++ SlideShow.php	14 Sep 2005 01:57:32 -0000	1.3
  @@ -5,7 +5,7 @@
   //
   // Usage: [[SlideShow(pagename)]]
   //
  -// $Id: SlideShow.php,v 1.2 2005/09/14 00:06:52 wkpark Exp $
  +// $Id: SlideShow.php,v 1.3 2005/09/14 01:57:32 wkpark Exp $
   
   function macro_SlideShow($formatter,$value='',$options=array()) {
       global $DBInfo;
  @@ -34,8 +34,11 @@
           $urlname=$formatter->page->urlname;
       }
   
  -    if ($options['p']) $sect=$options['p'];
  -    else $sect=1;
  +    if ($options['p']) {
  +        list($sect,$dum)=explode('/',$options['p']);
  +        $sect=abs(intval($sect));
  +        $sect= $sect ? $sect:1;
  +    } else $sect=1;
   
       $act=$options['action'] ? $options['action']:'SlideShow';
   
  @@ -54,6 +57,8 @@
       $sz=sizeof($sections);
       if (trim($sections[$sz])=='') $sz--;
   
  +    if ($sect > $sz) $sect=$sz;
  +
       // get prev,next subtitle
       if ($sz > ($sect)) {
           list($n_title,$dumm)=explode("\n",$sections[$sect+1]);
  @@ -127,9 +132,17 @@
       $rlink= $formatter->link_url($urlname,'?action=show');
       $return= '<a href="'.$rlink.'" title="'._("Return").' '.$pgname.'">'.
           '<img src="'.$icon_dir.'up.png'.'" border="0" alt="^" /></a>';
  -    if ($options['action'])
  -        return array($sections,"$return$start$prev$next$end\n");
  -    return "$return$start$prev$next$end\n";
  +    if ($options['action']) {
  +        $form0='<form method="post" action="'.$rlink.'">';
  +        $form0.='<input type="hidden" name="d" value="'.$depth.'" />';
  +        $form0.='<input type="hidden" name="action" value="slideshow" />';
  +        $form='<span class="slideShow" style="vertical-align:bottom;">'.
  +            '<input style="text-align:center" type="text" name="p" value="'.
  +            $sect.'/'.$sz.'" /></span>';
  +        $form1="</form>\n";
  +        return array($sections,"$form0$return$start$prev$form$next$end$form1\n");
  +    }
  +    return "$return$start\n";
   }
   
   function do_slideshow($formatter,$options=array()) {
  
  
  


wkpark      2005/09/15 02:29:08

  Modified:    .        wikilib.php
  Log:
  fixed random quote macro
  
  Revision  Changes    Path
  1.175     +26 -16    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.174
  retrieving revision 1.175
  diff -u -r1.174 -r1.175
  --- wikilib.php	14 Sep 2005 00:07:29 -0000	1.174
  +++ wikilib.php	14 Sep 2005 17:29:08 -0000	1.175
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.174 2005/09/14 00:07:29 wkpark Exp $
  +// $Id: wikilib.php,v 1.175 2005/09/14 17:29:08 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1297,7 +1297,7 @@
   function macro_RandomQuote($formatter,$value="",$options=array()) {
     global $DBInfo;
     define(QUOTE_PAGE,'FortuneCookies');
  -  if ($formatter->preview==1) return '';
  +  #if ($formatter->preview==1) return '';
   
     $re='/^\s*\* (.*)$/';
     $args=explode(',',$value);
  @@ -1320,31 +1320,41 @@
     else
       $fortune=QUOTE_PAGE;
   
  -  if ($options['body'])
  +  if ($options['body']) {
       $raw=$options['body'];
  -  else {
  +  } else {
       $page=$DBInfo->getPage($fortune);
       if (!$page->exists()) return '';
       $raw=$page->get_raw_body();
     }
  - 
  +
     preg_match_all($re.'m',$raw,$match);
     $quotes=&$match[1];
   
  -  if (!($count=sizeof($quotes))) return '';
  +  if (!($count=sizeof($quotes))) return '[[RandomQuote('._("No match!").')]]';
  +  #if ($formatter->preview==1) return '';
  +  else if ($count>3 and preg_match('/\[\[RandomQuote/',$quotes)) {
  +    return '[[RandomQuote('._("Infinite loop possible!").')]]';
  +  }
   
     $quote=$quotes[rand(0,$count-1)];
   
  -  $save=$formatter->preview;
  -  ob_start();
  -  $formatter->send_page($quote);
  -  $formatter->preview=$save;
  -  $out= ob_get_contents();
  -  ob_end_clean();
  -#  $quote=str_replace("<","&lt;",$quote);
  -#  $quote=preg_replace($formatter->baserule,$formatter->baserepl,$quote);
  -#  $out=preg_replace("/(".$formatter->wordrule.")/e","\$formatter->link_repl('\\1')",
  -#         $quote);
  +  $dumb=explode("\n",$quote);
  +  if (sizeof($dumb)>1) {
  +    $save=$formatter->preview;
  +    $formatter->preview=1;
  +    $options['nosisters']=1;
  +    ob_start();
  +    $formatter->send_page($quote,$options);
  +    $formatter->preview=$save;
  +    $out= ob_get_contents();
  +    ob_end_clean();
  +  } else {
  +    $quote=str_replace("<","&lt;",$quote);
  +    $quote=preg_replace($formatter->baserule,$formatter->baserepl,$quote);
  +    $out=preg_replace("/(".$formatter->wordrule.")/e",
  +      "\$formatter->link_repl('\\1')", $quote);
  +  }
   #  ob_start();
   #  $options['nosisters']=1;
   #  $formatter->send_page($quote,$options);
  
  
  


wkpark      2005/09/15 03:19:30

  Modified:    .        wikilib.php
  Log:
  realtime update wow!! more fix ^^;;
  
  Revision  Changes    Path
  1.176     +2 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.175
  retrieving revision 1.176
  diff -u -r1.175 -r1.176
  --- wikilib.php	14 Sep 2005 17:29:08 -0000	1.175
  +++ wikilib.php	14 Sep 2005 18:19:30 -0000	1.176
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.175 2005/09/14 17:29:08 wkpark Exp $
  +// $Id: wikilib.php,v 1.176 2005/09/14 18:19:30 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1333,9 +1333,8 @@
   
     if (!($count=sizeof($quotes))) return '[[RandomQuote('._("No match!").')]]';
     #if ($formatter->preview==1) return '';
  -  else if ($count>3 and preg_match('/\[\[RandomQuote/',$quotes)) {
  +  if ($count<3 and preg_grep('/\[\[RandomQuote/',$quotes))
       return '[[RandomQuote('._("Infinite loop possible!").')]]';
  -  }
   
     $quote=$quotes[rand(0,$count-1)];
   
  
  
  


wkpark      2005/09/20 19:02:17

  Modified:    .        wiki.php
  Log:
  support to replace with user defined macro
  more css friendly option added ($use_oldstyle=0);
  wiki markup cleanup (more strictly working now)
  MultiLineCell bug with one lineor
  font sizing syntax added {{{+2 text}}}
  more MoinMoin compatible table and {{{ }}} syntax
  
  Revision  Changes    Path
  1.252     +119 -78   moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.251
  retrieving revision 1.252
  diff -u -r1.251 -r1.252
  --- wiki.php	13 Sep 2005 11:22:08 -0000	1.251
  +++ wiki.php	20 Sep 2005 10:02:16 -0000	1.252
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.251 2005/09/13 11:22:08 wkpark Exp $
  +// $Id: wiki.php,v 1.252 2005/09/20 10:02:16 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.251 $',1,-1);
  +$_revision = substr('$Revision: 1.252 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -43,6 +43,8 @@
         $plugins[strtolower($name)]= $name;
       }
     }
  +  if (is_array($DBInfo->myplugins))
  +    $plugins=array_merge($plugins,$DBInfo->myplugins);
   
     return $plugins[strtolower($pluginname)];
   }
  @@ -73,8 +75,8 @@
       }
     }
   
  -  if (is_array($DBInfo->processors))
  -    $processors=array_merge($processors,$DBInfo->processors);
  +  if (is_array($DBInfo->myprocessors))
  +    $processors=array_merge($processors,$DBInfo->myprocessors);
   
     return $processors[strtolower($pro_name)];
   }
  @@ -557,6 +559,7 @@
       $this->actions= array('DeletePage','LikePages');
       $this->show_hosts= TRUE;
       $this->iconset='moni';
  +    $this->use_oldstyle='1';
       $this->goto_type='';
       $this->goto_form='';
       $this->template_regex='[a-z]Template$';
  @@ -1467,6 +1470,7 @@
       $this->use_purple=$DBInfo->use_purple;
       $this->section_edit=$DBInfo->use_sectionedit;
       $this->auto_linebreak=$DBInfo->auto_linebreak;
  +    $this->nonexists=$DBInfo->nonexists;
   
       if (($p=strpos($page->name,"~")))
         $this->group=substr($page->name,0,$p+1);
  @@ -1486,43 +1490,45 @@
       if ($DBInfo->external_target)
         $this->external_target='target="'.$DBInfo->external_target.'"';
   
  -    #$this->baserule=array("/<([^\s][^>]*)>/","/`([^`]*)`/",
  -    $this->baserule=array("/<([^\s<>])/","/`([^`' ]+)'/","/(?<!`)`([^`]*)`/",
  +    $this->baserule=array("/<([^\s<>])/",
                        "/'''([^']*)'''/","/(?<!')'''(.*)'''(?!')/",
                        "/''([^']*)''/","/(?<!')''(.*)''(?!')/",
  -                     "/\^([^ \^]+)\^(?=\s|$)/","/\^\^([^ \^][^\^]+[^ \^])\^\^(?!^)/",
  -                     "/(?<!,),,([^ ,]+),,(?!,)/",
  -                     "/(?<!_)__((?:(?<!_)_(?!_)|[^_])+)__(?!_)/","/^(-{4,})/e",
  -                     "/(?<!-)--(?U)([^\s].+[^\s])--(?!-)/",
  -                     "/(?<!~)~~(?U)([^\s].+[^\s])~~(?!~)/",
  -                     #"/(?<!-)--([^-]+[^\s])--(?!-)/",
  -                     #"/(?<!~)~~([^~]+[^\s])~~(?!~)/",
  -                     #"/(\\\\\\\\)$/", # tex, pmWiki
  +                     "/`(?<!\s)(?!`)([^`']+)(?<!\s)'/",
  +                     "/`(?<!\s)(?U)(.*)(?<!\s)`/",
  +                     "/^(-{4,})/e",
  +                     "/,,([^,]{1,40}),,/",
  +                     "/\^([^ \^]+)\^(?=\s|$)/",
  +                     "/\^\^(?<!\s)(?!\^)(?U)(.+)(?<!\s)\^\^/",
  +                     "/__(?<!\s)(?!_)(?U)(.+)(?<!\s)__/",
  +                     "/--(?<!\s)(?!-)(?U)(.+)(?<!\s)--/",
  +                     "/~~(?<!\s)(?!~)(?U)(.+)(?<!\s)~~/",
  +                     #"/(\\\\\\\\)/", # tex, pmWiki
                        );
  -    $this->baserepl=array("&lt;\\1","&#96;\\1'","<tt class='wiki'>\\1</tt>",
  +    $this->baserepl=array("&lt;\\1",
                        "<strong>\\1</strong>","<strong>\\1</strong>",
                        "<i>\\1</i>","<i>\\1</i>",
  -                     "<sup>\\1</sup>","<sup>\\1</sup>",
  +                     "&#96;\\1'","<tt class='wiki'>\\1</tt>",
  +                     "\$this->$DBInfo->hr_type"."_hr('\\1')",
                        "<sub>\\1</sub>",
  +                     "<sup>\\1</sup>",
  +                     "<sup>\\1</sup>",
                        "<u>\\1</u>",
  -                     "\$this->$DBInfo->hr_type"."_hr('\\1')",
  -                     #"<div class='separator'><hr class='wiki' /></div>\n",
                        "<del>\\1</del>",
                        "<del>\\1</del>",
  -                     #"<br />",
  +                     #"<br />\n",
                        );
   
       # NoSmoke's MultiLineCell hack
  -    $this->extrarule=array("/{{\|/","/\|}}/");
  -    $this->extrarepl=array("</div><table class='closure'><tr class='closure'><td class='closure'><div>","</div></td></tr></table><div>");
  +    $this->extrarule=array("/{{\|(.*)\|}}/","/{{\|/","/\|}}/");
  +    $this->extrarepl=array("<table class='closure'><tr class='closure'><td class='closure'>\\1</td></tr></table>","</div><table class='closure'><tr class='closure'><td class='closure'><div>","</div></td></tr></table><div>");
       
       # set smily_rule,_repl
       if ($DBInfo->smileys) {
         $smiley_rule='/(?<=\s|^|>)('.$DBInfo->smiley_rule.')(?=\s|$)/e';
         $smiley_repl="\$this->smiley_repl('\\1')";
   
  -      $this->extrarule[]=$smiley_rule;
  -      $this->extrarepl[]=$smiley_repl;
  +      $this->baserule[]=$smiley_rule;
  +      $this->baserepl[]=$smiley_repl;
       }
   
       #$punct="<\"\'}\]\|;,\.\!";
  @@ -1542,12 +1548,13 @@
       #"\b(".$DBInfo->interwikirule."):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
       #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
       #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+[^\(\)<>\s\',\.:\?\!]+)|".
  -    "(\b|\^?)([A-Z][a-zA-Z]+):([^\(\)<>\s\']*[^\(\)<>\s\'\",\.:\?\!]*)|".
  +    "(\b|\^?)([A-Z][a-zA-Z]+):([^\(\)<>\s\']*[^\(\)<>\s\'\",\.:\?\!]*(\s(?![\x33-\x7e]))?)|".
       # "(?<!\!|\[\[)\b(([A-Z]+[a-z0-9]+){2,})\b|".
       # "(?<!\!|\[\[)((?:\/?[A-Z]([a-z0-9]+|[A-Z]*(?=[A-Z][a-z0-9]|\b))){2,})\b|".
       # WikiName rule: WikiName ILoveYou (imported from the rule of NoSmoke)
       # protect WikiName rule !WikiName
  -    "(?<![a-z])\!?(?:((\.{1,2})?\/)?[A-Z]([A-Z]+[0-9a-z]|[0-9a-z]+[A-Z])[0-9a-zA-Z]*)+\b|".
  +    #"(?:\!)?((?:\.{1,2}?\/)?[A-Z]([A-Z]+[0-9a-z]|[0-9a-z]+[A-Z])[0-9a-zA-Z]*)+\b|".
  +    "(?<![a-zA-Z])\!?(?:((\.{1,2})?\/)?[A-Z]([A-Z]+[0-9a-z]|[0-9a-z]+[A-Z])[0-9a-zA-Z]*)+\b|".
       # single bracketed name [Hello World]
       "(?<!\[)\!?\[([^\[:,<\s'][^\[:,>]{1,255})\](?!\])|".
       # bracketed with double quotes ["Hello World"]
  @@ -1734,6 +1741,9 @@
           $col=strtok($url,' '); $url=strtok('');
           if (!preg_match('/^#[0-9a-f]{6}$/',$col)) $col=substr($col,1);
           return "<font color='$col'>$url</font>";
  +      } else if (preg_match('/^((?:\+|\-)([1-6]?))(?=\s)(.*)$/',$url,$m)) {
  +        if ($m[2]=='') $m[1].='1';
  +        return "<font size='$m[1]'>$m[3]</font>";
         }
         return "<tt class='wiki'>$url</tt>"; # No link
         break;
  @@ -1929,7 +1939,7 @@
   
     function word_repl($word,$text='',$attr='',$nogroup=0,$islink=1) {
       global $DBInfo;
  -    $nonexists='nonexists_'.$DBInfo->nonexists;
  +    $nonexists='nonexists_'.$this->nonexists;
       if ($word[0]=='"') { # ["extended wiki name"]
         $extended=1;
         $page=substr($word,1,-1);
  @@ -1961,6 +1971,7 @@
         $word=$text=$page_text ? $page_text:$word;
         #print $text;
         $word=htmlspecialchars($word);
  +      $word=str_replace('&amp;#','&#',$word); # hack
       }
   
       $url=_urlencode($page);
  @@ -2036,6 +2047,10 @@
       return "$word";
     }
   
  +  function nonexists_always($word,$url) {
  +    return "<a href='$url'>$word</a>";
  +  }
  +
     function nonexists_forcelink($word,$url) {
       return "<a class='nonexistent' href='$url'>$word</a>";
     }
  @@ -2144,14 +2159,12 @@
         $name=$macro; $args=$value;
       }
   
  -    if (!function_exists ("macro_".$name)) {
  -
  -      if ($plugin=getPlugin($name))
  -        include_once("plugin/$plugin.php");
  -      else
  -        return "[[".$name."]]";
  +    $plugin=($np=getPlugin($name))?$np:$name;
  +    if (!function_exists ("macro_".$plugin)) {
  +      if (!$np) return "[[".$name."]]";
  +      include_once("plugin/$plugin.php");
       }
  -    $ret=call_user_func_array("macro_$name",array(&$this,$args,$options));
  +    $ret=call_user_func_array("macro_$plugin",array(&$this,$args,$options));
       return $ret;
     }
   
  @@ -2314,11 +2327,18 @@
       return implode(' ',$attr).' ';
     }
   
  -  function _table($on,$attr='') {
  +  function _table($on,&$attr) {
       if (!$on) return "</table>\n";
  -    $attr=substr($attr,4,-1);
  -    if ($attr[0]=='#') $attr="bgcolor='$attr'";
  -    return "<table class='wiki' cellpadding='3' cellspacing='2' $attr>\n";
  +    $tattr=substr($attr,4,-1);
  +    if ($tattr[0]=='#') {
  +      $tattr="bgcolor='$tattr'";
  +    } else if (substr($tattr,0,5)=='table') {
  +      $tattr=substr($tattr,5);
  +      $attr='';
  +    } else {
  +      $tattr='';
  +    }
  +    return "<table class='wiki' cellpadding='3' cellspacing='2' $tattr>\n";
     }
   
     function _purple() {
  @@ -2452,7 +2472,7 @@
           if ($in_pre) { $this->pre_line.="\n";continue;}
           if ($in_li) {
             if ($in_table) {
  -            $text.=$this->_table(0);$in_table=0;$li_empty=1;
  +            $text.=$this->_table(0,$dumm);$in_table=0;$li_empty=1;
             }
             $text.=$this->_purple()."<br />\n";
             if ($li_empty==0 && !$this->auto_linebreak ) $text.="<br />\n";
  @@ -2460,7 +2480,7 @@
             continue;
           }
           if ($in_table) {
  -          $text.=$this->_table(0)."<br />\n";$in_table=0; continue;
  +          $text.=$this->_table(0,$dumm)."<br />\n";$in_table=0; continue;
           } else {
             #if ($in_p) { $text.="</div><br />\n"; $in_p='';}
             if ($in_p) { $text.=$this->_div(0,$in_div,$div_enclose)."<br />\n"; $in_p='';}
  @@ -2548,26 +2568,21 @@
            $line=substr($line,0,$p);
            if (!$line and $this->auto_linebreak) $this->nobr=1;
         }
  -#     $line=str_replace("<","&lt;",$line);
  -      #$line=preg_replace("/\\$/","&#36;",$line);
  -      #$line=preg_replace("/<([^\s][^>]*)>/","&lt;\\1>",$line);
  -      #$line=preg_replace("/`([^`]*)`/","<tt class='wiki'>\\1</tt>",$line);
  -
  -      # bold
  -      #$line=preg_replace("/'''([^']*)'''/","<b>\\1</b>",$line);
  -      #$line=preg_replace("/(?<!')'''(.*)'''(?!')/","<b>\\1</b>",$line);
  -
  -      # italic 
  -      #$line=preg_replace("/''([^']*)''/","<i>\\1</i>",$line);
  -      #$line=preg_replace("/(?<!')''(.*)''(?!')/","<i>\\1</i>",$line);
  -
  -      # Superscripts, subscripts
  -      #$line=preg_replace("/\^([^ \^]+)\^/","<sup>\\1</sup>",$line);
  -      #$line=preg_replace("/(?: |^)_([^ _]+)_/","<sub>\\1</sub>",$line);
  -      # rules
  -      #$line=preg_replace("/^-{4,}/","<hr />\n",$line);
   
  -      $line=preg_replace($this->baserule,$this->baserepl,$line);
  +      // split into chunks
  +      $chunk=preg_split('/({{{.+}}})/U',$line,-1,PREG_SPLIT_DELIM_CAPTURE);
  +      $nc='';
  +      $k=1;
  +      foreach ($chunk as $c) {
  +        if ($k%2) {
  +          $nc.=preg_replace($this->baserule,$this->baserepl,$c);
  +        } else if (in_array($c[3],array('#','-','+'))) { # {{{#color text}}}
  +          $nc.=preg_replace($this->baserule,$this->baserepl,$c);
  +        } else $nc.=$c;
  +        $k++;
  +      }
  +      $line=$nc;
  +      #$line=preg_replace($this->baserule,$this->baserepl,$line);
         #if ($in_p and ($in_pre==1 or $in_li)) $line=$this->_check_p().$line;
   
         # bullet and indentation
  @@ -2625,11 +2640,11 @@
         #if (!$in_pre && !$in_table && preg_match("/^\|\|.*\|\|$/",$line)) {
         if (!$in_pre && $line[0]=='|' && !$in_table && preg_match("/^((\|\|)+)(&lt;[^>\|]+>)?(.*)\|\|$/",$line,$match)) {
           $open.=$this->_table(1,$match[3]);
  -        if ($match[3]) $line=$match[1].$match[4].'||';
  +        if (!$match[3]) $line=$match[1].$match[4].'||';
           $in_table=1;
         #} elseif ($in_table && !preg_match("/^\|\|.*\|\|$/",$line)){
         } elseif ($in_table && $line[0]!='|' && !preg_match("/^\|\|.*\|\|$/",$line)){
  -         $close=$this->_table(0).$close;
  +         $close=$this->_table(0,$dumm).$close;
            $in_table=0;
         }
         if ($in_table) {
  @@ -3074,27 +3089,28 @@
     }
   
     function get_actions($args='',$options) {
  +    $menu=array();
       if ($this->pi['#action'] && !in_array($this->pi['#action'],$this->actions)){
         list($act,$txt)=explode(" ",$this->pi['#action'],2);
         if (!$txt) $txt=$act;
  -      $menu= $this->link_to("?action=$act",_($txt),"accesskey='x'");
  +      $menu[]= $this->link_to("?action=$act",_($txt),"accesskey='x'");
         if (strtolower($act) == 'blog')
           $this->actions[]='BlogRss';
           
       } else if ($args['editable']) {
         if ($args['editable']==1)
  -        $menu= $this->link_to("?action=edit",_("EditText"),"accesskey='x'");
  +        $menu[]= $this->link_to("?action=edit",_("EditText"),"accesskey='x'");
         else
  -        $menu= _("NotEditable");
  +        $menu[]= _("NotEditable");
       } else
  -      $menu.= $this->link_to('?action=show',_("ShowPage"));
  -    $menu.=$this->menu_sep.$this->link_tag("FindPage","",_("FindPage"));
  +      $menu[]= $this->link_to('?action=show',_("ShowPage"));
  +    $menu[]=$this->link_tag("FindPage","",_("FindPage"));
   
       if (!$args['noaction']) {
         foreach ($this->actions as $action)
  -        $menu.= $this->menu_sep.$this->link_to("?action=$action",_($action));
  +        $menu[]= $this->link_to("?action=$action",_($action));
       }
  -    return $this->menu_bra.$menu.$this->menu_cat;
  +    return $menu;
     }
   
     function send_footer($args='',$options='') {
  @@ -3105,7 +3121,14 @@
       if ($args['editable'] and !$DBInfo->security->writable($options))
         $args['editable']=-1;
       
  -    $menu=$this->get_actions($args,$options);
  +    $menus=$this->get_actions($args,$options);
  +    if ($DBInfo->use_oldstyle==1) {
  +      $menu=$this->menu_bra.implode($this->menu_sep,$menus).$this->menu_cat;
  +    } else {
  +      $menu="<div id='wikiAction'>";
  +      $menu.='<ul><li>'.implode("</li>\n<li>\n",$menus)."</li></ul>";
  +      $menu.="</div>";
  +    }
   
       if ($mtime=$this->page->mtime()) {
         if ($options['tz_offset'] != '') {
  @@ -3147,7 +3170,9 @@
         include($this->themedir."/footer.php");
       } else {
         print "<div id='wikiFooter'>";
  -      print $menu.$banner;
  +      print $menu;
  +      if ($DBInfo->use_oldstyle) print $banner;
  +      else print "<div id='wikiBanner'>$banner</div>\n";
         print "\n</div>\n";
       }
       print "</body>\n</html>\n";
  @@ -3230,7 +3255,11 @@
         }
       }
       $this->sister_on=$sister_save;
  -    $menu=$this->menu_bra.join($this->menu_sep,$menu).$this->menu_cat;
  +    if ($DBInfo->use_oldstyle) {
  +      $menu=$this->menu_bra.join($this->menu_sep,$menu).$this->menu_cat;
  +    } else {
  +      $menu='<div id="wikiMenu"><ul><li>'.implode("</li>\n<li>",$menu)."</li></ul></div>\n";
  +    }
   
       # icons
       #if ($upper)
  @@ -3282,7 +3311,13 @@
         # menu
         print "<div id='wikiHeader'>\n";
         print $header;
  -      print $menu.$user_link." ".$upper_icon.$icons.$home.$rss_icon;
  +      if ($DBInfo->use_oldstyle)
  +        print $menu." ".$user_link." ".$upper_icon.$icons.$home.$rss_icon;
  +      else {
  +        print "<div id='wikiLogin'>".$user_link."</div>";
  +        print "<div id='wikiIcon'>".$upper_icon.$icons.$home.$rss_icon.'</div>';
  +        print $menu;
  +      }
         print $msg;
         print "</div>\n";
       }
  @@ -3645,6 +3680,11 @@
       }
       # display this page
   
  +    if ($DBInfo->use_redirect_msg and $action=='show' and $_GET['redirect']){
  +      $options['msg']=
  +        sprintf(_("Redirected from page \"%s\""),
  +          $formatter->link_tag($_GET['redirect'],'?action=show'));
  +    }
       # increase counter
       $DBInfo->counter->incCounter($pagename,$options);
   
  @@ -3744,6 +3784,7 @@
           $options=array_merge($_POST,$options);
         else
           $options=array_merge($_GET,$options);
  +      $options['action_mode']=$action_mode;
         if ($action_mode=='ajax')
           $formatter->ajax_repl($action,$options);
         else
  @@ -3751,26 +3792,26 @@
         return;
       }
   
  -    if (!function_exists("do_post_".$action) and
  -      !function_exists("do_".$action)){
  -      if ($plugin=getPlugin($action))
  +    $plugin=($pn=getPlugin($action)) ? $pn:$action;
  +    if (!function_exists("do_post_".$plugin) and
  +      !function_exists("do_".$plugin)){
           include_once("plugin/$plugin.php");
       }
   
  -    if (function_exists("do_".$action)) {
  +    if (function_exists("do_".$plugin)) {
         if ($_SERVER['REQUEST_METHOD']=="POST")
           $options=array_merge($_POST,$options);
         else
           $options=array_merge($_GET,$options);
  -      call_user_func("do_$action",$formatter,$options);
  +      call_user_func("do_$plugin",$formatter,$options);
         return;
  -    } else if (function_exists("do_post_".$action)) {
  +    } else if (function_exists("do_post_".$plugin)) {
         if ($_SERVER['REQUEST_METHOD']=="POST")
           $options=array_merge($_POST,$options);
         else { # do_post_* set some primary variables as $options
           $options['value']=$_GET['value'];
         }
  -      call_user_func("do_post_$action",$formatter,$options);
  +      call_user_func("do_post_$plugin",$formatter,$options);
         return;
       }
       do_invalid($formatter,$options);
  
  
  


wkpark      2005/09/20 19:02:51

  Modified:    .        wikilib.php
  Log:
  redirect msg option added suggested by puzzlet
  
  Revision  Changes    Path
  1.177     +3 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.176
  retrieving revision 1.177
  diff -u -r1.176 -r1.177
  --- wikilib.php	14 Sep 2005 18:19:30 -0000	1.176
  +++ wikilib.php	20 Sep 2005 10:02:51 -0000	1.177
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.176 2005/09/14 18:19:30 wkpark Exp $
  +// $Id: wikilib.php,v 1.177 2005/09/20 10:02:51 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -885,7 +885,8 @@
        $url=_stripslashes(rtrim($options['value']));
        $url=_rawurlencode($url);
        if ($options['redirect'])
  -       $url=$formatter->link_url($url,"?action=show");
  +       $url=$formatter->link_url($url,"?action=show&redirect=".
  +          $formatter->page->name);
        else
          $url=$formatter->link_url($url,"");
        # FastCGI/PHP does not accept multiple header infos. XXX
  
  
  


wkpark      2005/09/20 19:04:34

  Modified:    plugin   ISBN.php
  Log:
  dynamically retrieve the image name for aladdin etc.
  
  Revision  Changes    Path
  1.5       +113 -29   moniwiki/plugin/ISBN.php
  
  Index: ISBN.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/ISBN.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ISBN.php	14 Apr 2005 02:06:42 -0000	1.4
  +++ ISBN.php	20 Sep 2005 10:04:34 -0000	1.5
  @@ -3,21 +3,79 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a ISBN macro plugin for the MoniWiki
   //
  -// $Id: ISBN.php,v 1.4 2005/04/14 02:06:42 wkpark Exp $
  +// $Id: ISBN.php,v 1.5 2005/09/20 10:04:34 wkpark Exp $
   
   function macro_ISBN($formatter="",$value="") {
  +  global $DBInfo;
  +
     $ISBN_MAP="IsbnMap";
     $DEFAULT=<<<EOS
   Amazon http://www.amazon.com/exec/obidos/ISBN= http://images.amazon.com/images/P/\$ISBN.01.MZZZZZZZ.gif
  -Aladdin http://www.aladdin.co.kr/catalog/book.asp?ISBN= http://image.aladdin.co.kr/cover/cover/\$ISBN_1.\$EXT?jpg\n
  +Aladdin http://www.aladdin.co.kr/catalog/book.asp?ISBN= http://image.aladdin.co.kr/cover/cover/\$ISBN_1.gif @/cover/(\$ISBN_1\..{3,4})\s@\\\$ISBN_1\.gif
  +Gang http://kangcom.com/common/qsearch/search.asp?s_flag=T&s_text= http://kangcom.com/l_pic/\$ISBN.jpg @bookinfo\.asp\?sku=(\d+)"@\n
   EOS;
   
     $DEFAULT_ISBN="Amazon";
  -  $re_isbn="/([0-9\-]+[xX]?)(?:,)?(([A-Z][A-Za-z]*)?(?:,)?(.*))?/x";
  +  $re_isbn="/([0-9\-]+[xX]?)(?:,\s*)?(([A-Z][A-Za-z]*)?(?:,)?(.*))?/x";
  +
  +  if ($value!='') {
  +     $test=preg_match($re_isbn,$value,$match);
  +     if ($test === false)
  +        return "<p><strong class=\"error\">Invalid ISBN \"%value\"</strong></p>";
  +  }
  +
  +  $list= $DEFAULT;
  +  $map= new WikiPage($ISBN_MAP);
  +  if ($map->exists()) $list.=$map->get_raw_body();
  +
  +  $lists=explode("\n",$list);
  +  $ISBN_list=array();
  +  foreach ($lists as $line) {
  +     if (!$line or !preg_match("/^[A-Z]/",$line[0])) continue;
  +     $dum=explode(" ",rtrim($line));
  +     $re='';
  +     $sz=sizeof($dum);
  +     if (!preg_match('/^(http|ftp)/',$dum[1])) continue;
  +     if ($sz == 2) {
  +        $dum[]=$ISBN_list[$DEFAULT_ISBN][1];
  +     } else if ($sz!=3) {
  +        if ($sz == 4) {
  +          if (($p=strpos(substr($dum[3],1),$dum[3][0]))!==false) {
  +             $retest=substr($dum[3],0,$p+2);
  +          } else {
  +             $retest=$dum[3];
  +          }
  +          if (preg_match($retest,'')!==false) $re=$dum[3];
  +        }
  +        else continue;
  +     }
   
  -  $test=preg_match($re_isbn,$value,$match);
  -  if ($test === false)
  -     return "<p><strong class=\"error\">Invalid ISBN \"%value\"</strong></p>";
  +     $ISBN_list[$dum[0]]=array($dum[1],$dum[2],$re);
  +  }
  +
  +  if ($value=='') {
  +    $out="<ul>";
  +    foreach ($ISBN_list as $interwiki=>$v) {
  +      $href=$ISBN_list[$interwiki][0];
  +      if (strpos($href,'$ISBN') === false)
  +        $url=$href.'0738206679';
  +      else {
  +        $url=str_replace('$ISBN','0738206679',$href);
  +      }
  +      $icon=$DBInfo->imgs_dir_interwiki.strtolower($interwiki).'-16.png';
  +      $sx=16;$sy=16;
  +      if ($DBInfo->intericon[$interwiki]) {
  +        $icon=$DBInfo->intericon[$interwiki][2];
  +        $sx=$DBInfo->intericon[$interwiki][0];
  +        $sy=$DBInfo->intericon[$interwiki][1];
  +      }
  +      $out.="<li><img src='$icon' width='$sx' height='$sy' ".
  +        "align='middle' alt='$interwiki:' /><a href='$url'>$interwiki</a>: ".
  +        "<tt class='link'>$href</tt></li>";
  +    }
  +    $out.="</ul>\n";
  +    return $out;
  +  }
   
     $isbn2=$match[1];
     $isbn=str_replace('-','',$isbn2);
  @@ -33,6 +91,7 @@
     if ($match[2]) {
       $args=explode(',',$match[2]);
       foreach ($args as $arg) {
  +      $arg=trim($arg);
         if ($arg == 'noimg') $noimg=1;
         else if (strtolower($arg)=='k') $lang='Aladdin';
         else {
  @@ -45,25 +104,10 @@
       }
     }
   
  -  $list= $DEFAULT;
  -  $map= new WikiPage($ISBN_MAP);
  -  if ($map->exists()) $list.=$map->get_raw_body();
  -
  -  $lists=explode("\n",$list);
  -  $ISBN_list=array();
  -  foreach ($lists as $line) {
  -     if (!$line or !preg_match("/^[A-Z]/",$line[0])) continue;
  -     $dum=explode(" ",rtrim($line));
  -     if (sizeof($dum) == 2)
  -        $dum[]=$ISBN_list[$DEFAULT_ISBN][1];
  -     else if (sizeof($dum) !=3) continue;
  -
  -     $ISBN_list[$dum[0]]=array($dum[1],$dum[2]);
  -  }
  -
     if ($ISBN_list[$lang]) {
        $booklink=$ISBN_list[$lang][0];
        $imglink=$ISBN_list[$lang][1];
  +     $imgre=$ISBN_list[$lang][2];
     } else {
        $booklink=$ISBN_list[$DEFAULT_ISBN][0];
        $imglink=$ISBN_list[$DEFAULT_ISBN][1];
  @@ -78,7 +122,42 @@
           $booklink=str_replace('$ISBN2',$isbn2,$booklink);
     }
   
  -  if (strpos($imglink, '$ISBN') === false)
  +  if ($imgre and get_cfg_var('allow_url_fopen')) {
  +     if (($p=strpos(substr($imgre,1),$imgre[0]))!==false) {
  +        $imgrepl=substr($imgre,$p+2);
  +        $imgre=substr($imgre,0,$p+2);
  +        if ($imgrepl=='@') $imgrepl='';
  +        $imgre=str_replace('$ISBN',$isbn,$imgre);
  +     }
  +     $md5sum=md5($booklink);
  +     // check cache
  +     $bcache=new Cache_text('isbn');
  +     if ($bcache->exists($md5sum)) {
  +        $imgname=trim($bcache->fetch($md5sum));
  +        if ($imgrepl)
  +           $imglink=preg_replace('@'.$imgrepl.'@',$imgname, $imglink);
  +        else
  +           $imglink=str_replace('$ISBN', $imgname, $imglink);
  +     } else {
  +        // fetch the bookinfo page and grep the imagname of the book.
  +        $fd=fopen($booklink,'r');
  +        if (is_resource($fd)) {
  +           while(!feof($fd)) {
  +              $line=fgets($fd,1024);
  +              preg_match($imgre,$line,$match);
  +              if ($match[1]) {
  +                 $bcache->update($md5sum,$match[1]);
  +                 if ($imgrepl)
  +                    $imglink=preg_replace('@'.$imgrepl.'@',$match[1], $imglink);
  +                 else
  +                    $imglink=str_replace('$ISBN', $match[1], $imglink);
  +                 break;
  +              }
  +           }
  +           fclose($fd);
  +        }
  +     }
  +  } else if (strpos($imglink, '$ISBN') === false)
           $imglink.=$isbn;
     else {
        if (strpos($imglink, '$ISBN2') === false)
  @@ -86,14 +165,19 @@
        else
           $imglink=str_replace('$ISBN2', $isbn2, $imglink);
        if ($ext)
  -        $imglink=str_replace('$EXT', $ext, $imglink);
  -     else
  -        $imglink=str_replace('$EXT?', '', $imglink);
  +        $imglink=preg_replace('/\.(gif|jpeg|jpg|png|bmp)$/i', $ext, $imglink);
     }
   
  -  if ($noimg)
  -     return $formatter->icon['www']."[<a href='$booklink'>ISBN-$isbn2</a>]";
  -  else
  +  if ($noimg) {
  +    $icon=$DBInfo->imgs_dir_interwiki.strtolower($lang).'-16.png';
  +    $sx=16;$sy=16;
  +    if ($DBInfo->intericon[$lang]) {
  +      $icon=$DBInfo->intericon[$lang][2];
  +      $sx=$DBInfo->intericon[$lang][0];
  +      $sy=$DBInfo->intericon[$lang][1];
  +    }
  +    return "<img src='$icon' alt='$lang:' align='middle' width='$sx' height='$sy' title='$lang' />"."[<a href='$booklink'>ISBN-$isbn2</a>]";
  +  } else
        return "<a href='$booklink'><img src='$imglink' border='1' title='$lang".
          ":ISBN-$isbn' alt='[ISBN-$isbn2]' class='isbn' $attr /></a>";
   }
  
  
  


wkpark      2005/09/20 19:05:44

  Modified:    plugin   Tour.php
  Log:
  make more css friendly
  
  Revision  Changes    Path
  1.4       +9 -10     moniwiki/plugin/Tour.php
  
  Index: Tour.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Tour.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Tour.php	16 Aug 2005 14:30:35 -0000	1.3
  +++ Tour.php	20 Sep 2005 10:05:44 -0000	1.4
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Tour]]
   //
  -// $Id: Tour.php,v 1.3 2005/08/16 14:30:35 wkpark Exp $
  +// $Id: Tour.php,v 1.4 2005/09/20 10:05:44 wkpark Exp $
   
   if (!function_exists('do_dot'))
       if ($plugin=getPlugin('dot')) include_once("plugin/$plugin.php");
  @@ -26,7 +26,6 @@
   
   define(TOUR_LEAFCOUNT,4);
   define(TOUR_DEPTH,3);
  -    $ul='ul';
   
       if (!$value) $value=$formatter->page->name;
   
  @@ -66,7 +65,7 @@
       $wide= $formatter->link_tag($url[$value],
           "?action=tour&amp;w=".($count+1)."&amp;d=$depth",_("links"));
       $deep= $formatter->link_tag($url[$value],
  -        "?action=tour&amp;w=$count&amp;d=".($depth+1),_("wider"));
  +        "?action=tour&amp;w=$count&amp;d=".($depth+1),_("deeper"));
       $link='<h3>'.sprintf(_("More %s or more %s"),$wide,$deep).'</h3>';
   
       foreach ($allnode as $node) {
  @@ -75,6 +74,7 @@
       $title='<h3>'.sprintf(_("Total %d related pages"),sizeof($allnode)).'</h3>';
   
       $out=array();
  +    $dep=1;
       foreach ($outs as $ls) {
           asort($ls);
           $temp='';
  @@ -82,14 +82,13 @@
               $temp.= ' <li>'.$formatter->link_tag($url[$leaf],
                   "?action=tour",$leaf)."</li>\n";
           }
  -        $out[]="<$ul>".$temp;
  +        $out[]="<ul class='depth-$dep'>".$temp.'</ul>';
  +        $dep++;
       }
  -    $ret=implode($out,"\n</$ul></td><td valign='top'>\n");
  -    $ret='<table border="0"><tr><td valign="top">'.$ret.
  -        "</$ul></td></tr></table>\n";
  -    $ret='<table border="0"><tr><td valign="top">'.$link.$ret.'</td><td>'.
  -        "\n$title<ol>".$pages."</ol></td>\n".
  -        '</tr></table>';
  +    $ret=implode("\n",$out);
  +    $ret='<div class="tourLeft">'.$link.$ret.'</div>'.
  +        "<div class=\"tourRight\">$title<ol>$pages</ol></div>\n".
  +        "<div class=\"tourFoot\"></div>\n";
   
       return '<div class="wikiTour">'.$ret."</div>\n";
   }
  
  
  


wkpark      2005/09/20 19:07:09

  Modified:    plugin   Fortune.php
  Log:
  directly access fortune cookies
  
  Revision  Changes    Path
  1.2       +62 -6     moniwiki/plugin/Fortune.php
  
  Index: Fortune.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Fortune.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Fortune.php	22 Aug 2003 22:55:24 -0000	1.1
  +++ Fortune.php	20 Sep 2005 10:07:09 -0000	1.2
  @@ -1,17 +1,73 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2005 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a Fortune plugin for the MoniWiki
   //
   // Usage: [[Fortune(science)]]
   //
  -// $Id: Fortune.php,v 1.1 2003/08/22 22:55:24 wkpark Exp $
  +// $Id: Fortune.php,v 1.2 2005/09/20 10:07:09 wkpark Exp $
   // vim:et:ts=2:
   
  -function macro_Fortune($formatter,$value) {
  -  $ret= exec(escapeshellcmd("/usr/games/fortune $value"),$log);
  -  $out= str_replace("_",'',join("\n",$log));
  -  return $out;
  +function macro_FortuneSystem($formatter,$value) {
  +    $ret= exec(escapeshellcmd("/usr/bin/fortune $value"),$log);
  +    $out= str_replace("_",'',join("\n",$log));
  +    return $out;
   }
   
  +define('DEFAULT_FORTUNE','art');
  +
  +function macro_Fortune($formatter,$value,$options) {
  +    $cat=$value;
  +    $dir='/usr/share/games/fortune';
  +    if ($DBInfo->fortune_dir) $dir=$DBInfo->fortune_dir;
  +    if ($cat=='') $cat=DEFAULT_FORTUNE;
  +
  +    $files=array();
  +    if ($cat == '*' and ($hd=opendir($dir))) {
  +        while ($f = readdir($hd)) {
  +            if (is_dir($dir."/$f")) continue;
  +            $files[]=$f;
  +        }
  +        closedir($hd);
  +        $files=preg_grep('/.dat$/',$files,PREG_GREP_INVERT);
  +        sort($files);
  +        $icat=rand(0,sizeof($files)-1);
  +        if (!file_exists($dir.'/'.$files[$icat].'.dat'))
  +            return 'Not found '.$files[$icat].'.dat';
  +        $cat=$files[$icat];
  +    } else if (!file_exists($dir.'/'.$cat.'.dat'))
  +        return 'Not found '.$cat.'.dat';
  +
  +    if (!file_exists($dir.'/'.$cat)) return 'Not found '.$cat;
  +
  +    // get number of quotes
  +    $fd= fopen($dir.'/'.$cat.'.dat', "rb");
  +    fseek($fd,4); // skip version
  +    $sz=unpack('N1N',fread($fd,4));
  +    $irand=rand(0,$sz['N']-1);
  +
  +    // real index of quotes
  +    fseek($fd, 24 + 4 * $irand);
  +    $a=unpack('N1N',fread($fd,4));
  +    $iseek=$a['N'];
  +    fclose($fd);
  +
  +    $fd=fopen($dir.'/'.$cat,'r');
  +    fseek($fd, $iseek);
  +    $out= '';
  +    while (!feof($fd)) {
  +        $line=fgets($fd, 1024);
  +        if ($line[0]=='%') break;
  +        $out.=$line;
  +    }
  +    fclose($fd);
  +
  +    if ($options['action_mode']=='macro') {
  +        $formatter->header('Content-Type: text/plain');
  +        return $out;
  +    }
  +    return '<div class="wikiFortune">'.$out.'</div>';
  +}
  +    
  +// vim:et:sts=4:
   ?>
  
  
  


wkpark      2005/09/20 19:10:56

  Modified:    plugin   chat.php
  Log:
  sound and nic support added
  more sophisticated method to retrieve last modified msgs
  IE bug workarround suggested by drssay
  
  Revision  Changes    Path
  1.6       +54 -17    moniwiki/plugin/chat.php
  
  Index: chat.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/chat.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- chat.php	13 Sep 2005 09:11:43 -0000	1.5
  +++ chat.php	20 Sep 2005 10:10:56 -0000	1.6
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Chat]]
   //
  -// $Id: chat.php,v 1.5 2005/09/13 09:11:43 wkpark Exp $
  +// $Id: chat.php,v 1.6 2005/09/20 10:10:56 wkpark Exp $
   // http://cvs.drupal.org/viewcvs/drupal/contributions/modules/chat/
   
   function macro_Chat($formatter,$value,$options=array()) {
  @@ -19,7 +19,7 @@
       foreach ($args as $arg) {
           if (is_int($arg)) {
               $itemnum=$arg;
  -        } else {
  +        } else if (preg_match('/[a-z\s]+/i',$arg)){
               $tag=str_replace(' ','',ucfirst($arg));
           }
       }
  @@ -33,6 +33,7 @@
       //ob_end_flush();
       $msg=ob_get_contents();
       ob_end_clean();
  +    if ($msg=='false') $msg=_("No messages");
       if (!$chat_script)
           $script=<<<EOF
   <script type='text/javascript' src='$DBInfo->url_prefix/local/ajax.js'></script>
  @@ -42,17 +43,20 @@
       $chat_script=1;
       return <<<EOF
   $script
  +<span id="effect"></span>
   <div class="wikiChat">
  -<div id="chat$tag">$msg</div>
  -<form onSubmit='return false'>
  -<input type='text' size='40' class='wikiChat' onkeypress='sendMsg(event,this,"$url","chat$tag",$itemnum);' />
  -</form>
  -</div>
   <script language='javascript'>
   <!--
   setInterval('sendMsg("poll",null,"$url","chat$tag",$itemnum)',10000);
  +setSound('pass','$DBInfo->url_prefix/local/pass.au');
   //-->
   </script>
  +<div id="chat$tag">$msg</div>
  +<form onSubmit='return false'>
  +<input type='text' size='10' class='chatUser' /> <input type='text' size='40' class='chatMsg' onkeypress='sendMsg(event,this,"$url","chat$tag",$itemnum);' />
  +<input type='button' id='{$tag}soundon' class='soundOff' onclick="Sound('pass');OnOff(this)" />
  +</form>
  +</div>
   EOF;
   }
   
  @@ -67,13 +71,23 @@
   function ajax_chat($formatter,$options) {
       global $DBInfo;
       $user=new User(); # get cookie
  +    $id=$user->id;
  +    $nic='';
  +    $udb=new UserDB($DBInfo);
       if ($user->id != 'Anonymous') {
  -        $udb=new UserDB($DBInfo);
           $udb->checkUser($user);
       }
  +    if ($options['nic']) {
  +        if (!$udb->_exists($options['nic'])) {
  +            $nic=' '.$options['nic'];
  +        } else if ($user->id=='Anonymous') {
  +            $nic=' '.$options['nic'].'_'.substr(md5($_SERVER['REMOTE_ADDR']),0,4);
  +        }
  +    }
       // %uD55C%uD558
       $value=_stripslashes($options['value']);
       $value=preg_replace('/%u([a-f0-9]{4})/i','&#x\\1;',$value);
  +    $nic=preg_replace('/%u([a-f0-9]{4})/i','&#x\\1;',$nic);
       $itemnum=_stripslashes($options['item']);
       if ($itemnum > 50 or $itemnum <= 0) $itemnum=20;
       $room=escapeshellcmd(_stripslashes($options['room']));
  @@ -90,20 +104,32 @@
           $room=substr($room,4);
           $log=$DBInfo->upload_dir.'/Chat/'.$room.'.log';
       }
  +    if (!$value) {
  +        if (!file_exists($log)) {
  +            print 'false';
  +            return;
  +        }
  +        $mtime=filemtime($log);
  +        if ($mtime <= $options['laststamp']) {
  +            print 'false';
  +            return;
  +        }
  +    }
  +    
       $lines=array();
       $fp=fopen($log,'a+');
       while (is_resource($fp)) {
           fseek($fp,0,SEEK_END);
  -        if ($value) {
  -            fwrite($fp,time()."\t".$user->id."\t".rtrim($value)."\n");
  -        }
  +        if ($value)
  +            fwrite($fp,time()."\t".$user->id.$nic."\t".rtrim($value)."\n");
  +
           if (($fz=filesize($log))==0) break;
           fseek($fp,0,SEEK_END);
           if ($fz < 512) {
               fseek($fp,0);
               $ll=rtrim(fread($fp,512));
               $lines=explode("\n",$ll);
  -            break;   
  +            break;
           }
           $a=-1;
           $end=0;
  @@ -142,21 +168,32 @@
       $smiley_repl="\$formatter->smiley_repl('\\1')";
       $save=$formatter->sister_on;
       $formatter->sister_on=0;
  +    $save2=$formatter->nonexists;
  +    $formatter->nonexists='always';
       foreach ($lines as $line) {
  -        $dumm=explode("\t",$line,3);
  +        list($time,$user,$msg)=explode("\t",$line,3);
  +        if (($p=strpos($user,' '))===false) {
  +            if ($user!='Anonymous') $user='['.$user.']';
  +        } else {
  +            $user='[wiki:'.$user.']';
  +        }
           $line='<span class="date">'.
  -            gmdate("H:i:s",$dumm[0]+$options['tz_offset']).'</span>'.
  -            '<span class="user">&lt;['.$dumm[1].']></span>'.$dumm[2];
  +            gmdate("H:i:s",$time+$options['tz_offset']).'</span>'.
  +            '<span class="user">&lt;'.$user.'></span>'.$msg;
           $line=preg_replace($smiley_rule,$smiley_repl,$line);
           $out.='<li>'.preg_replace("/(".$formatter->wordrule.")/e",
  -            "\$formatter->link_repl('\\1')",$line).'</li>';
  +           "\$formatter->link_repl('\\1')",$line).'</li>';
  +        #$out.='<li>'.$line.'</li>';
       }
       $formatter->sister_on=$save;
  +    $formatter->nonexists=$save2;
       if ($options['option_method']=='ajax') {
           $formatter->header('Expires','0');
  +        $formatter->header('Cache-Control','no-cache');
           $formatter->header('Pragma','no-cache');
       }
  -    print '<ul>'.$debug.$out.'</ul>';
  +    $stamp='<span id="laststamp" style="display:none">'.time().'</span>';
  +    print '<ul>'.$debug.$out.'</ul>'.$stamp;
   }
   
   // vim:et:sts=4:
  
  
  


wkpark      2005/09/20 19:11:23

  Modified:    local    chat.js
  Log:
  sound, nic support added etc.
  
  Revision  Changes    Path
  1.3       +53 -9     moniwiki/local/chat.js
  
  Index: chat.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/chat.js,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- chat.js	8 Sep 2005 13:21:28 -0000	1.2
  +++ chat.js	20 Sep 2005 10:11:23 -0000	1.3
  @@ -19,17 +19,61 @@
        if (cc!=13) return;
      }
   
  -   if (obj!=null) value=escape(obj.value);
  +   var d=new Date();
  +   var last=document.getElementById('laststamp');
  +   var nic='';
  +   if (last) last='&laststamp='+last.innerHTML;
  +   else last='';
  +
  +   if (obj!=null) {
  +      value=escape(obj.value);
  +      obj.value=''; // clear
  +      nic=obj.parentNode.getElementsByTagName('input')[0];
  +      if (nic) nic='&nic='+escape(nic.value);
  +      else nic='';
  +   }
  +
  +   var soundon_id=id.replace(/^chat/,'')+'soundon';
  +   var soundon=document.getElementById(soundon_id).className;
  +
      nurl=url.replace(/\/ajax/,
  -      '\/ajax&value='+value+'&room='+id+'&item='+num);
  -   if (obj!=null) obj.value='';
  -   var msg=HTTPGet(nurl);
  -   var chat=document.getElementById(id);
  -   //var node=document.createElement('li');
  -   //node.innerHTML=msg;
  -   //chat.appendChild(node);
  -   chat.innerHTML=msg;
  +     '\/ajax&value='+value+'&room='+id+nic+'&item='+num+
  +     '&stamp='+d.getTime()+last);
   
  +   var msg=HTTPGet(nurl);
  +   if (msg != 'false') {
  +      var chat=document.getElementById(id);
  +      //var node=document.createElement('li');
  +      //node.innerHTML=msg;
  +      //chat.appendChild(node);
  +      chat.innerHTML=msg;
  +      if (soundon == 'soundOn') Sound('pass');
  +   }
      return;
   }
   
  +function Sound(sndobj) {
  +  var sound=document.getElementById(sndobj);
  +  if (sound) { try { sound.Play(); } catch (e) { sound.DoPlay(); } }
  +}
  +
  +function setSound(id,surl) {
  +    var sound=document.getElementById('effect');
  +    var node=document.createElement('embed');
  +    node.setAttribute('src',surl);
  +    node.setAttribute('id',id);
  +    node.setAttribute('autostart','false');
  +    node.setAttribute('style','visibility:hidden');
  +    node.setAttribute('loop','false');
  +    node.setAttribute('height','1px');
  +    node.setAttribute('width','1px');
  +    sound.insertBefore(node,sound.firstChild);
  +}
  +
  +function OnOff(obj) {
  +    if (obj.className=='soundOff') {
  +        obj.className='soundOn';
  +    } else {
  +        obj.className='soundOff';
  +    }
  +}
  
  
  


wkpark      2005/09/20 19:12:08

  Added:       local    pass.au
  Log:
  a chat sound file
  
  Revision  Changes    Path
  1.1                  moniwiki/local/pass.au
  
  	<<Binary file>>
  
  


wkpark      2005/09/20 19:12:32

  Modified:    local    ajax.js
  Log:
  add comment
  
  Revision  Changes    Path
  1.2       +6 -1      moniwiki/local/ajax.js
  
  Index: ajax.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/ajax.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ajax.js	7 Sep 2005 10:29:46 -0000	1.1
  +++ ajax.js	20 Sep 2005 10:12:32 -0000	1.2
  @@ -1,7 +1,9 @@
  +// from drupal
  +
   /**
    * Only enable Javascript functionality if all required features are supported.
    */
  -	
  +
   function isJsEnabled() {
     if (document.jsEnabled == undefined) {
       // Note: ! casts to boolean implicitly.
  @@ -42,6 +44,7 @@
   function HTTPGet(uri, callbackFunction, callbackParameter) {
     var xmlHttp = new XMLHttpRequest();
     var bAsync = true;
  +
     if (!callbackFunction)
       bAsync = false;    
     xmlHttp.open('GET', uri, bAsync);
  @@ -191,3 +194,5 @@
       return false;
     }
   }
  +
  +// vim:et:sts=2:
  
  
  


wkpark      2005/09/20 19:12:53

  moniwiki/imgs/plugin/Chat - New directory

wkpark      2005/09/20 19:13:23

  Added:       imgs/plugin/Chat sound_off.png sound_on.png
  Log:
  sound on/off icons
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/plugin/Chat/sound_off.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/Chat/sound_on.png
  
  	<<Binary file>>
  
  


wkpark      2005/09/20 19:14:47

  Added:       imgs/interwiki aladdin-16.png
  Log:
  add aladdin icon
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/interwiki/aladdin-16.png
  
  	<<Binary file>>
  
  


wkpark      2005/09/20 19:15:43

  Added:       imgs/interwiki delicious-16.png flickr-16.png
                        technorati-16.png
  Log:
  new icons
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/interwiki/delicious-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/flickr-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/technorati-16.png
  
  	<<Binary file>>
  
  


wkpark      2005/09/20 19:16:39

  Modified:    plugin   FastSearch.php
  Log:
  cleanup
  
  Revision  Changes    Path
  1.8       +7 -15     moniwiki/plugin/FastSearch.php
  
  Index: FastSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FastSearch.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- FastSearch.php	25 Aug 2005 14:04:34 -0000	1.7
  +++ FastSearch.php	20 Sep 2005 10:16:38 -0000	1.8
  @@ -13,7 +13,7 @@
   //
   // Usage: [[FastSearch(string)]]
   //
  -// $Id: FastSearch.php,v 1.7 2005/08/25 14:04:34 wkpark Exp $
  +// $Id: FastSearch.php,v 1.8 2005/09/20 10:16:38 wkpark Exp $
   
   function macro_FastSearch($formatter,$value="",&$opts) {
     global $DBInfo;
  @@ -55,26 +55,18 @@
     }
   
     $words=split(' ', strtolower($value));
  -  $res=array();
  -  for(reset($words); $word=current($words); next($words)) {
  -    $t=strlen($keys=dba_fetch($word,$dbindex));
  -
  -#   print "'$word' (" . $t/2 . ") ";
  -    for($i=0; $i<$t;
  -    // unpack a big-endian short
  -    $res[ord(substr($keys, $i, 1))*256+ord(substr($keys, $i+1, 1))]++, $i+=2);
  -  }
  +  $keys='';
  +  foreach ($words as $word) $keys.=dba_fetch($word,$dbindex);
  +
  +  $res=unpack("n*",$keys);
     arsort($res);
   
     $pages=array();
  -  for(reset($res); $k=key($res); next($res)) {
  -    $key= dba_fetch("!?" . chr($k/256) . chr($k % 256),$dbindex);
  +  foreach ($res as $k) {
  +    $key= dba_fetch("!?".pack('n',$k),$dbindex);
       $pages[]=$key;
     }
     dba_close($dbindex);
  -#  print_r($pages);
  -
  -#  if ($opts['case']) $pattern.="i";
   
     $hits=array();
   
  
  
  


wkpark      2005/09/20 19:17:34

  Modified:    plugin   Comment.php
  Log:
  multiple comment support
  
  Revision  Changes    Path
  1.15      +12 -5     moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- Comment.php	2 Sep 2005 07:25:37 -0000	1.14
  +++ Comment.php	20 Sep 2005 10:17:34 -0000	1.15
  @@ -6,7 +6,7 @@
   // Usage: [[Comment]], ?action=comment
   //
   //
  -// $Id: Comment.php,v 1.14 2005/09/02 07:25:37 wkpark Exp $
  +// $Id: Comment.php,v 1.15 2005/09/20 10:17:34 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $HTTP_USER_AGENT;
  @@ -38,6 +38,9 @@
   
     $url=$formatter->link_url($formatter->page->urlname);
   
  +
  +  if ($value)
  +    $hidden='<input type="hidden" name="comment_id" value="'.$value.'" />';
     $form = "<form name='editform' method='post' action='$url'>\n";
     $form.= <<<FORM
   <textarea class="wiki" id="content" name="savetext"
  @@ -50,6 +53,7 @@
     $comment=_("Comment");
     $preview=_("Preview");
     $form.= <<<FORM2
  +$hidden
   $sig
   <input type="hidden" name="action" value="comment" />
   <input type="hidden" name="datestamp" value="$datestamp" />
  @@ -146,11 +150,14 @@
     else
       $savetext="----\n$savetext @SIG@\n";
   
  -  if (preg_match("/\n##Comment\n/i",$body))
  +  if ($options['comment_id'] and preg_match("/^\[\[Comment\(".$options['comment_id']."\)\]\]/m",$body)) {
  +    $str="[[Comment($options[comment_id])]]";
  +    $body= str_replace($str,$savetext.$str."\n",$body,1);
  +  } else if (preg_match("/\n##Comment\n/i",$body)) {
       $body= preg_replace("/\n##Comment\n/i","\n##Comment\n$savetext",$body,1);
  -  else if (preg_match("/\[\[Comment(\([^\)]*\))?\]\]/",$body))
  -    $body= preg_replace("/(\[\[Comment(\([^\)]*\))?\]\])/",$savetext."\\1",$body,1);
  -  else
  +  } else if ($XX) {
  +    $body.=$savetext;
  +  } else
       $body.=$savetext;
   
     $formatter->page->write($body);
  
  
  


wkpark      2005/09/20 19:18:22

  Modified:    plugin   SlideShow.php
  Log:
  cleanup, fixed section bug
  
  Revision  Changes    Path
  1.4       +14 -5     moniwiki/plugin/SlideShow.php
  
  Index: SlideShow.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SlideShow.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- SlideShow.php	14 Sep 2005 01:57:32 -0000	1.3
  +++ SlideShow.php	20 Sep 2005 10:18:22 -0000	1.4
  @@ -5,7 +5,7 @@
   //
   // Usage: [[SlideShow(pagename)]]
   //
  -// $Id: SlideShow.php,v 1.3 2005/09/14 01:57:32 wkpark Exp $
  +// $Id: SlideShow.php,v 1.4 2005/09/20 10:18:22 wkpark Exp $
   
   function macro_SlideShow($formatter,$value='',$options=array()) {
       global $DBInfo;
  @@ -54,8 +54,11 @@
       } else {
           $dep='&amp;d='.$depth;
       }
  -    $sz=sizeof($sections);
  -    if (trim($sections[$sz])=='') $sz--;
  +    $sz=sizeof($sections); // $sections[0]
  +    $sz--;
  +    //if (trim($sections[$sz-1])=='') $sz--;
  +    //print $sections[0];
  +    //print_r($sections);
   
       if ($sect > $sz) $sect=$sz;
   
  @@ -112,6 +115,7 @@
               '<img src="'.$icon_dir.'end_off.png'.'" border="0" alt="|>" /></a>';
       }
       if ($n_title!='' and $options['action']) {
  +        $np=$sect+1;
           $nlink= $formatter->link_url($urlname,'?action='.$act.
               $dep.'&amp;p='.($sect+1));
           $next= '<a href="'.$nlink.'" title="'._("Next:").' '.$n_title.'">'.
  @@ -121,6 +125,7 @@
               '<img src="'.$icon_dir.'next_off.png'.'" border="0" alt=">" /></a>';
       }
       if ($p_title!='') {
  +        $pp=$sect-1;
           $plink= $formatter->link_url($urlname,'?action='.$act.
               $dep.'&amp;p='.($sect-1));
           $prev= '<a href="'.$plink.'" title="'._("Prev:").' '.$p_title.'">'.
  @@ -133,12 +138,13 @@
       $return= '<a href="'.$rlink.'" title="'._("Return").' '.$pgname.'">'.
           '<img src="'.$icon_dir.'up.png'.'" border="0" alt="^" /></a>';
       if ($options['action']) {
  -        $form0='<form method="post" action="'.$rlink.'">';
  +        $form0='<form method="post" onsubmit="return false" action="'.$rlink.'">';
           $form0.='<input type="hidden" name="d" value="'.$depth.'" />';
           $form0.='<input type="hidden" name="action" value="slideshow" />';
           $form='<span class="slideShow" style="vertical-align:bottom;">'.
               '<input style="text-align:center" type="text" name="p" value="'.
  -            $sect.'/'.$sz.'" /></span>';
  +            $sect.'/'.$sz.'" onkeypress="slideshowhandler(event,this,'.
  +            "'$rlink','$pp','$np')".'" /></span>';
           $form1="</form>\n";
           return array($sections,"$form0$return$start$prev$form$next$end$form1\n");
       }
  @@ -148,12 +154,15 @@
   function do_slideshow($formatter,$options=array()) {
       global $DBInfo;
   
  +    $js="<script type='text/javascript' "."
  +        src='$DBInfo->url_prefix/local/slideshow.js' ></script>";
       $options['css_url']=$DBInfo->url_prefix."/css/slide.css";
       $formatter->send_header("",$options);
       print "<div id='wikiContent'>";
   
       list($sections,$btn)=macro_SlideShow($formatter,$formatter->page->name,
           $options);
  +    print $js;
       print '<div class="slideNav">'.$btn.'</div>';
   
       if ($options['p']) $sect=$options['p'];
  
  
  


wkpark      2005/09/20 20:38:45

  Added:       local    slideshow.js
  Log:
  add slideshow.js
  
  Revision  Changes    Path
  1.1                  moniwiki/local/slideshow.js
  
  Index: slideshow.js
  ===================================================================
  function slideshowhandler(ev,obj,url,prev,next) {
    e = ev ? ev : window.event;
    if(window.event) { // for IE
      if(e.keyCode>0) {
        cc=e.keyCode;
        ch=String.fromCharCode(e.keyCode);
      } else {
        cc=null;
        ch=null;
      }
      //alert('IE:'+cc+',"'+ch+'"');
    } else { // for Mozilla
      cc=e.keyCode;
      if(e.charCode>0) {
        ch=String.fromCharCode(e.charCode);
      } else {
        ch='';
      }
    }
    //if (cc!=13) return;
    //alert(prev+',',next);
    if (ch == ' ' || (cc==13 && ch=='')) {
      var my=''+self.location;
      if (next != '') {
        if (my.search(/&p=\d+/) != -1) {
          my=my.replace(/&p=\d+/, '&p='+next);
        } else {
          my=my.replace(/action=slideshow/i, 'action=SlideShow&p='+next);
        }
        self.location=my;
      }
    } else {
  
    }
    return true;
  }
  
  
  
  
  


wkpark      2005/09/20 21:01:14

  Modified:    plugin   chat.php
  Log:
  add chatWindow class
  
  Revision  Changes    Path
  1.7       +3 -1      moniwiki/plugin/chat.php
  
  Index: chat.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/chat.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- chat.php	20 Sep 2005 10:10:56 -0000	1.6
  +++ chat.php	20 Sep 2005 12:01:14 -0000	1.7
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Chat]]
   //
  -// $Id: chat.php,v 1.6 2005/09/20 10:10:56 wkpark Exp $
  +// $Id: chat.php,v 1.7 2005/09/20 12:01:14 wkpark Exp $
   // http://cvs.drupal.org/viewcvs/drupal/contributions/modules/chat/
   
   function macro_Chat($formatter,$value,$options=array()) {
  @@ -53,8 +53,10 @@
   </script>
   <div id="chat$tag">$msg</div>
   <form onSubmit='return false'>
  +<div class="chatWindow">
   <input type='text' size='10' class='chatUser' /> <input type='text' size='40' class='chatMsg' onkeypress='sendMsg(event,this,"$url","chat$tag",$itemnum);' />
   <input type='button' id='{$tag}soundon' class='soundOff' onclick="Sound('pass');OnOff(this)" />
  +</div>
   </form>
   </div>
   EOF;
  
  
  


wkpark      2005/09/20 21:43:11

  Modified:    plugin   Comment.php
  Log:
  more fixes
  
  Revision  Changes    Path
  1.16      +2 -2      moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- Comment.php	20 Sep 2005 10:17:34 -0000	1.15
  +++ Comment.php	20 Sep 2005 12:43:11 -0000	1.16
  @@ -6,7 +6,7 @@
   // Usage: [[Comment]], ?action=comment
   //
   //
  -// $Id: Comment.php,v 1.15 2005/09/20 10:17:34 wkpark Exp $
  +// $Id: Comment.php,v 1.16 2005/09/20 12:43:11 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $HTTP_USER_AGENT;
  @@ -152,7 +152,7 @@
   
     if ($options['comment_id'] and preg_match("/^\[\[Comment\(".$options['comment_id']."\)\]\]/m",$body)) {
       $str="[[Comment($options[comment_id])]]";
  -    $body= str_replace($str,$savetext.$str."\n",$body,1);
  +    $body= str_replace($str,$savetext.$str,$body,1);
     } else if (preg_match("/\n##Comment\n/i",$body)) {
       $body= preg_replace("/\n##Comment\n/i","\n##Comment\n$savetext",$body,1);
     } else if ($XX) {
  
  
  


wkpark      2005/09/20 21:54:23

  Modified:    plugin   Tour.php
  Log:
  rename tmp variable
  
  Revision  Changes    Path
  1.5       +2 -2      moniwiki/plugin/Tour.php
  
  Index: Tour.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Tour.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Tour.php	20 Sep 2005 10:05:44 -0000	1.4
  +++ Tour.php	20 Sep 2005 12:54:23 -0000	1.5
  @@ -5,10 +5,10 @@
   //
   // Usage: [[Tour]]
   //
  -// $Id: Tour.php,v 1.4 2005/09/20 10:05:44 wkpark Exp $
  +// $Id: Tour.php,v 1.5 2005/09/20 12:54:23 wkpark Exp $
   
   if (!function_exists('do_dot'))
  -    if ($plugin=getPlugin('dot')) include_once("plugin/$plugin.php");
  +    if ($pn=getPlugin('dot')) include_once("plugin/$pn.php");
   
   function do_tour($formatter,$options) {
       #header("Content-Type: text/plain");
  
  
  


wkpark      2005/09/20 21:57:53

  Modified:    css      black.css blog.css bw.css cream.css darkkhaki.css
                        darkred.css default.css gray.css green.css iolo.css
                        kbd.js khaki.css log.css matrix.css moinmoin.css
                        nlog.css nsmk.css olive.css print.css
                        redandblack.css royalblue.css seagreen.css sky.css
                        slide.css white.css wood.css
  Added:       css      _extra.css
  Log:
  use _extra.css, _calendar.css by default
  
  Revision  Changes    Path
  1.7       +3 -1      moniwiki/css/black.css
  
  Index: black.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/black.css,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- black.css	4 Jan 2005 09:37:44 -0000	1.6
  +++ black.css	20 Sep 2005 12:57:51 -0000	1.7
  @@ -1,4 +1,6 @@
  -@import url("user.css");
  +@import url("_user.css");
  +@import url("_extra.css");
  +@import url("_calendar.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.7       +56 -4     moniwiki/css/blog.css
  
  Index: blog.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/blog.css,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- blog.css	4 Jan 2005 09:37:44 -0000	1.6
  +++ blog.css	20 Sep 2005 12:57:51 -0000	1.7
  @@ -1,4 +1,6 @@
  -@import url("user.css");
  +@import url("_user.css");
  +@import url("_extra.css");
  +@import url("_calendar.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  @@ -155,6 +157,7 @@
   }
   
   #wikiTrailer,#wikiOrigin {
  +  clear:both;
     padding-left: 20px;
     padding-bottom: 5px;
   }
  @@ -224,11 +227,60 @@
     padding: 5px 1em 5px 1em;
   }
   
  -/*
   #wikiMenu {
  -  background-color:yellow;
  +  float:left;
  +  padding: 0.2em 0.2em 0.2em 0.2em;
  +}
  +
  +#wikiMenu ul {
  +  list-style:none;
  +  padding:0;
  +  margin:0;
  +  white-space:nowrap;
  +}
  +
  +#wikiMenu li {
  +  display:inline;
  +  padding-left:5px;
  +  padding-right:5px;
  +  border-right:1px solid #000000;
  +}
  +
  +#wikiAction ul {
  +  list-style:none;
  +  padding:0;
  +  margin:0;
  +  white-space:nowrap;
  +}
  +
  +#wikiAction li {
  +  display:inline;
  +  padding-left:5px;
  +  padding-right:5px;
  +  border-right:1px solid #000000;
  +  float:left;
  +}
  +
  +#wikiIcon {
  +  float:right;
  +  padding: 3px 10px;
  +  text-align: right;
  +  vertical-align: middle;
  +  margin-right: 20px;
  +}
  +
  +#wikiLogin {
  +  position:absolute;
  +  right:35px;
  +  top:11px;
  +  height:36px;
  +}
  +
  +#wikiBanner {
  +  position:absolute;
  +  right:35px;
  +  bottom:-25x;
   }
  -*/
   
   div.indent { padding-left:2em; }
   
  
  
  
  1.7       +3 -1      moniwiki/css/bw.css
  
  Index: bw.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/bw.css,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- bw.css	4 Jan 2005 09:37:44 -0000	1.6
  +++ bw.css	20 Sep 2005 12:57:51 -0000	1.7
  @@ -1,4 +1,6 @@
  -@import url("user.css");
  +@import url("_user.css");
  +@import url("_extra.css");
  +@import url("_calendar.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.7       +3 -1      moniwiki/css/cream.css
  
  Index: cream.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/cream.css,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- cream.css	4 Jan 2005 09:37:44 -0000	1.6
  +++ cream.css	20 Sep 2005 12:57:51 -0000	1.7
  @@ -1,4 +1,6 @@
  -@import url("user.css");
  +@import url("_user.css");
  +@import url("_extra.css");
  +@import url("_calendar.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.7       +3 -1      moniwiki/css/darkkhaki.css
  
  Index: darkkhaki.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/darkkhaki.css,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- darkkhaki.css	4 Jan 2005 09:37:44 -0000	1.6
  +++ darkkhaki.css	20 Sep 2005 12:57:51 -0000	1.7
  @@ -1,4 +1,6 @@
  -@import url("user.css");
  +@import url("_user.css");
  +@import url("_extra.css");
  +@import url("_calendar.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.7       +3 -1      moniwiki/css/darkred.css
  
  Index: darkred.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/darkred.css,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- darkred.css	4 Jan 2005 09:37:44 -0000	1.6
  +++ darkred.css	20 Sep 2005 12:57:51 -0000	1.7
  @@ -1,4 +1,6 @@
  -@import url("user.css");
  +@import url("_user.css");
  +@import url("_extra.css");
  +@import url("_calendar.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.7       +3 -1      moniwiki/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/default.css,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- default.css	4 Jan 2005 09:37:44 -0000	1.6
  +++ default.css	20 Sep 2005 12:57:51 -0000	1.7
  @@ -1,4 +1,6 @@
  -@import url("user.css");
  +@import url("_user.css");
  +@import url("_extra.css");
  +@import url("_calendar.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.6       +3 -1      moniwiki/css/gray.css
  
  Index: gray.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/gray.css,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- gray.css	4 Jan 2005 09:37:44 -0000	1.5
  +++ gray.css	20 Sep 2005 12:57:51 -0000	1.6
  @@ -1,4 +1,6 @@
  -@import url("user.css");
  +@import url("_user.css");
  +@import url("_extra.css");
  +@import url("_calendar.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.7       +3 -1      moniwiki/css/green.css
  
  Index: green.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/green.css,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- green.css	4 Jan 2005 09:37:44 -0000	1.6
  +++ green.css	20 Sep 2005 12:57:51 -0000	1.7
  @@ -1,4 +1,6 @@
  -@import url("user.css");
  +@import url("_user.css");
  +@import url("_extra.css");
  +@import url("_calendar.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.6       +3 -1      moniwiki/css/iolo.css
  
  Index: iolo.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/iolo.css,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- iolo.css	4 Jan 2005 09:37:44 -0000	1.5
  +++ iolo.css	20 Sep 2005 12:57:51 -0000	1.6
  @@ -3,7 +3,9 @@
    distributable under GPL
   */
   
  -@import url("user.css");
  +@import url("_user.css");
  +@import url("_extra.css");
  +@import url("_calendar.css");
   
   body {
   	font-family:"Trebuchet MS","Myungjo Newsletter","UnBatang",sans-serif;
  
  
  
  1.9       +11 -8     moniwiki/css/kbd.js
  
  Index: kbd.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/kbd.js,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- kbd.js	31 Aug 2005 08:14:54 -0000	1.8
  +++ kbd.js	20 Sep 2005 12:57:51 -0000	1.9
  @@ -6,7 +6,7 @@
   
      distributable under GPL
   
  -   $Id: kbd.js,v 1.8 2005/08/31 08:14:54 wkpark Exp $
  +   $Id: kbd.js,v 1.9 2005/09/20 12:57:51 wkpark Exp $
   
      CHANGES
   
  @@ -62,8 +62,8 @@
   
   _dom=0;
   
  -function keydownhandler(e) {
  -	if(document.all) e= window.event; // for IE
  +function keydownhandler(ev) {
  +	e=ev ? ev:window.event; // for IE
   	if(_dom==3) var EventStatus= e.srcElement.tagName;
   	else if(_dom==1) var EventStatus= e.target.nodeName; // for Mozilla
   
  @@ -100,15 +100,15 @@
   	return
   }
   
  -function keypresshandler(e){
  -	if(document.all) e=window.event; // for IE
  +function keypresshandler(ev){
  +	e=ev ? ev:window.event; // for IE
   	if(_dom==3) var EventStatus= e.srcElement.tagName;
   	else if(_dom==1) var EventStatus= e.target.nodeName; // for Mozilla
   
   	var cc = '';
   	var ch = '';
   
  -	if(_dom==3) { // for IE
  +	if(window.event) { // for IE
   		if(e.keyCode>0) {
   			ch=String.fromCharCode(e.keyCode);
   			cc=e.keyCode;
  @@ -200,7 +200,7 @@
   		}
   	} else if(ch == "c") {
   		self.location = url_prefix + _qp + RecentChanges;
  -	} else if(ch == "d" || ch== "i" || ch=="b" || ch=="l" || ch=="h" || ch=="p") {
  +	} else if(ch == "d" || ch== "i" || ch=="b" || ch=="l" || ch=="h" || ch=="p" || ch=="a" || ch=="k") {
   		var my=''+self.location;
   		var idx = my.indexOf(_ap);
   		if (idx != -1) {
  @@ -218,6 +218,10 @@
   			my +=_ap + 'action=LikePages';
   		else if (ch == "p")
   			my +=_ap + 'action=print';
  +		else if (ch == "a")
  +			my +=_ap + 'action=randompage';
  +		else if (ch == "k")
  +			my +=_ap + 'action=keywords';
   		self.location=my;
   		
   	} else if(ch == "f") { // frontpage
  @@ -261,7 +265,6 @@
   	_dom=document.all ? 3 : (document.getElementById ? 1 : (document.layers ? 2 : 0));
   	document.onkeypress = keypresshandler;
   	document.onkeydown = keydownhandler;
  -	var go=document.getElementById(_go);
   }
   
   function moin_submit() {
  
  
  
  1.7       +3 -1      moniwiki/css/khaki.css
  
  Index: khaki.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/khaki.css,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- khaki.css	4 Jan 2005 09:37:44 -0000	1.6
  +++ khaki.css	20 Sep 2005 12:57:51 -0000	1.7
  @@ -1,4 +1,6 @@
  -@import url("user.css");
  +@import url("_user.css");
  +@import url("_extra.css");
  +@import url("_calendar.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.5       +3 -1      moniwiki/css/log.css
  
  Index: log.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/log.css,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- log.css	4 Jan 2005 09:37:44 -0000	1.4
  +++ log.css	20 Sep 2005 12:57:51 -0000	1.5
  @@ -1,5 +1,7 @@
   /* MoniWiki CSS 2003/11/01 by wkpark */
  -@import url("user.css");
  +@import url("_user.css");
  +@import url("_extra.css");
  +@import url("_calendar.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;font-size:12px;
  
  
  
  1.7       +3 -1      moniwiki/css/matrix.css
  
  Index: matrix.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/matrix.css,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- matrix.css	4 Jan 2005 09:37:44 -0000	1.6
  +++ matrix.css	20 Sep 2005 12:57:51 -0000	1.7
  @@ -1,4 +1,6 @@
  -@import url("user.css");
  +@import url("_user.css");
  +@import url("_extra.css");
  +@import url("_calendar.css");
   
   body {font-family:Georgia,Verdana,Lucida,sans-serif;
     background-color:#000000; color: #369746;
  
  
  
  1.6       +5 -3      moniwiki/css/moinmoin.css
  
  Index: moinmoin.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/moinmoin.css,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- moinmoin.css	4 Jan 2005 09:37:44 -0000	1.5
  +++ moinmoin.css	20 Sep 2005 12:57:51 -0000	1.6
  @@ -2,12 +2,14 @@
   
       Copyright (c) 2001, 2002, 2003 by Jrgen Hermann
   
  -    $Id: moinmoin.css,v 1.5 2005/01/04 09:37:44 wkpark Exp $
  +    $Id: moinmoin.css,v 1.6 2005/09/20 12:57:51 wkpark Exp $
   */
   
   /* user interface styles */
  -@import url("moinui");
  -@import url("user.css");
  +@import url("_moinui");
  +@import url("_user.css");
  +@import url("_extra.css");
  +@import url("_calendar.css");
   
   /* content styles */
   body {
  
  
  
  1.6       +51 -438   moniwiki/css/nlog.css
  
  Index: nlog.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/nlog.css,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- nlog.css	12 Sep 2005 07:24:47 -0000	1.5
  +++ nlog.css	20 Sep 2005 12:57:51 -0000	1.6
  @@ -1,5 +1,7 @@
   /* MoniWiki CSS 2003/11/01 by wkpark */
   @import url("_user.css");
  +@import url("_extra.css");
  +@import url("_calendar.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;font-size:12px;
  @@ -174,17 +176,53 @@
   
   #wikiMenu {
     padding: 0.2em 0.2em 0.2em 0.2em;
  -  border-bottom:2px solid #8d8d8d;
  -  border-top:2px solid #8d8d8d;
  +  background-color:#e0e0e0;
  +}
  +
  +#wikiMenu ul {
  +  list-style:none;
  +  padding:0;
  +  margin:0;
  +  white-space:nowrap;
  +}
  +
  +#wikiMenu li {
  +  display:inline;
  +  padding-left:5px;
  +  padding-right:5px;
  +  border-right:1px solid #000000;
  +}
  +
  +#wikiAction ul {
  +  list-style:none;
  +  padding:0;
  +  margin:0;
  +  white-space:nowrap;
  +}
  +
  +#wikiAction li {
  +  display:inline;
  +  padding-left:5px;
  +  padding-right:5px;
  +  border-right:1px solid #000000;
  +  float:left;
  +}
  +
  +#wikiBanner {
  +  position:absolute;
  +  right:35px;
  +  bottom:-25x;
   }
   
   #wikiTrailer, #wikiOrigin {
  +  clear:both;
     padding-left: 20px;
     padding-bottom: 5px;
   }
   
   
   #wikiBody {
  +  clear:both;
     color: black;
     background-color: #fff;
     border: 1px dotted #b0b0b0;
  @@ -227,10 +265,21 @@
     margin-left: 10px;
   }
   
  +#wikiLogin {
  +  position:absolute;
  +  right:35px;
  +  top:11px;
  +  height:36px;
  +}
  +
   #wikiExtra {
     padding:10px;
   }
   
  +#wikiContent div {
  +  /* border:1px dashed #ff0000; /* */
  +}
  +
   div.indent { padding-left:2em; }
   
   div.hint { font-size: 10px; background-color: #369; color:white;}
  @@ -335,439 +384,3 @@
     display: inline;
   }
   
  -.cloudView li{
  -  font-family:Trebuchet MS,Georgia,Verdana,sans-serif;
  -  list-style:none;
  -  white-space: nowrap;
  -  display:inline;
  -  padding-left:5px;
  -}
  -
  -#wikiBody .cloudView a:link, #wikiBody .cloudView a:visited {
  -  text-decoration:none;
  -  color:#000000;
  -}
  -
  -#wikiBody .cloudView a:hover {
  -  text-decoration:underline;
  -  color:#0000ff;
  -}
  -
  -.cloudView ul {
  -  margin:0;
  -}
  -
  -.MC table {
  -  width:99%;
  -  border-spacing: 0;
  -  empty-cells: show;
  -  margin:0;
  -  padding:0;
  -  border-left: 1px solid #d3d3d3;
  -  border-top: 1px solid #d3d3d3;
  -}
  -
  -.MC td {
  -  border-right: 1px solid #d3d3d3;
  -  border-bottom: 1px solid #d3d3d3;
  -  margin: 0px;
  -}
  -
  -.MC td.day, .MC td.today {
  -  width:14%;
  -  min-height:40px;
  -  text-align: left;
  -  vertical-align: top;
  -}
  -
  -.MC td.day:hover {
  -  background-color: #EAEFE5;
  -}
  -
  -.MC td.day {
  -  background-color: #FFFFFF;
  -}
  -
  -.MC td.fullday {
  -  margin:0px;
  -  border-right: 1px solid #A4ACBC;
  -  border-bottom: 1px solid #A4ACBC;
  -  width:90%;
  -}
  -
  -.MC td.dayhead {
  -  width:50px;
  -  background-color: #FFFFFF;
  -  text-align:center;
  -}
  -
  -.MC td.dayhead h6{
  -  font-size:20px;
  -  display:inline;
  -  font-family: Georgia, Arial, Helvetica, sans-serif;
  -}
  -
  -.MC td.dayhead h6.week{
  -  font-size:16px;
  -  color:#727b84;
  -  font-family: Georgia, Arial, Helvetica, sans-serif;
  -}
  -
  -.MC .month {
  -  font-size:18px;
  -  font-weight: bold;
  -}
  -
  -.MC td.fullday li {
  -  display:inline;
  -  margin:0px;
  -}
  -
  -.MC td.today {
  -  background-color: #E7FEDA;
  -}
  -
  -.MC td.today:hover {
  -  background-color: #F7FFEA;
  -}
  -
  -.MC .day h6, .MC .today h6 {
  -  font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
  -  font-size: 12px;
  -  /* background-color: #d9e2e1; /* */
  -  text-align: left;
  -  vertical-align: middle;
  -  padding-top:0px;
  -  margin-bottom: 1px;
  -  margin-top: 0px;
  -  /* border: #A4Acbc solid; /* */
  -  /* border-width: 0px 1px 1px 0px; */
  -  padding-top: 2px;
  -  color:#888;
  -}
  -
  -.MC tr.weekhead {
  -  background-color: #A2ADBC;
  -  color: white;
  -  padding:0;
  -  margin:0;
  -}
  -
  -.MC tr.week {
  -  padding:0;
  -  margin:0;
  -}
  -
  -.MC ul {
  -  list-style:none;
  -  margin:0px;
  -  padding:0px;
  -  margin-right:0px;
  -  margin-left:-1px;
  -}
  -
  -.MC td {
  -  margin:0px;
  -  padding:0px;
  -  padding:0;
  -  margin:0;
  -}
  -
  -.MC li {
  -  margin:0px;
  -  padding:0px;
  -  margin-bottom:2px !important;
  -  padding-left:3px;
  -}
  -
  -.MC .colorbar li {
  -  border-top:1px solid black;
  -  border-bottom:1px solid black;
  -}
  -
  -.MC td.red {
  -  background-color: #ffc1c1;
  -}
  -
  -.MC td.red:hover {
  -  background-color: #ffd1d1;
  -}
  -
  -.MC td.blue {
  -  background-color: #d1d2fe;
  -}
  -
  -.MC td.blue:hover {
  -  background-color: #e1e2fe;
  -}
  -
  -.MC td.yellow {
  -  background-color: #FAEE83;
  -}
  -
  -.MC td.yellow:hover {
  -  background-color: #FAFE93;
  -}
  -
  -.MC td.green {
  -  background-color: #AFffAF;
  -}
  -
  -.MC td.green:hover {
  -  background-color: #BAFFBA;
  -}
  -
  -.MC .fullday ul li {
  -  display:inline;
  -  margin-bottom:1px !important;
  -  margin-top:0px !important;
  -  padding-bottom:1px !important;
  -  margin-right:2px;
  -  height:100%;
  -}
  -
  -.MC td.fullday ul {
  -  float:left;
  -  margin:0px;
  -  padding:0px;
  -  height:100%;
  -}
  -
  -.MC .fullday ul.colorbar{
  -  height:100%;
  -  min-width:16px;
  -  margin:0px;
  -  padding:0px;
  -  margin-bottom:0px !important;
  -}
  -
  -.MC .day li.colorbar {
  -  min-height:14px;
  -  border-top:1px solid black;
  -  border-bottom:1px solid black;
  -  white-space:nowrap;
  -}
  -
  -.MC .fullday ul.colorbar li{
  -  float:right;
  -  height:100%;
  -  /* min-width:16px; /* */
  -  width:14px; /* */
  -  border-left:1px solid black;
  -  border-right:1px solid black;
  -  border-top:0;
  -  border-bottom:0;
  -  margin-right:2px;
  -  white-space:normal !important;
  -}
  -
  -.MC .fullday ul.colorbar li.blank {
  -  width:16px; /* */
  -}
  -
  -.MC .fullday ul.colorbar li.blank:hover {
  -  width:16px; /* */
  -  margin-right:2px;
  -}
  -
  -.MC .fullday ul.colorbar li .text:hover {
  -  height:100% !important;
  -  min-width:100px;
  -  overflow:visible;
  -}
  -
  -.MC .fullday ul.colorbar li .text {
  -  min-width:14px;
  -  width:10%;
  -}
  -
  -.MC .fullday li .start {
  -  height:100% !important;
  -}
  -
  -.MC .colorbar .text:hover {
  -  height:auto !important; /* */
  -  overflow:visible;
  -}
  -
  -.MC .colorbar li.start .text{
  -  height:14px;
  -}
  -
  -.MC .colorbar li.start .text:hover {
  -  height:10%;
  -  margin-left:-2px;
  -  padding-left:2px;
  -  margin-right:2px;
  -  -moz-border-radius-topleft: 10px;
  -  -moz-border-radius-bottomleft: 10px;
  -  -moz-border-radius-bottomright: 10px;
  -}
  -
  -.MC .colorbar li.start {
  -  color:white;
  -  font-size:9px;
  -  font-family:Trebuchet MS,Sans-serif;
  -  margin-left: 6px;
  -  margin-right:-1px;
  -  -moz-border-radius-topleft: 11px;
  -  -moz-border-radius-bottomleft: 11px;
  -  border-top:1px solid black;
  -  border-left:1px solid black;
  -  border-bottom:1px solid black;
  -}
  -
  -.MC .colorbar li.end {
  -  margin-right: 6px;
  -  -moz-border-radius-topright: 11px;
  -  -moz-border-radius-bottomright: 11px;
  -  border-top:1px solid black;
  -  border-right:1px solid black;
  -  border-bottom:1px solid black;
  -}
  -
  -.MC .fullday .colorbar .start {
  -  margin-top: 10px;
  -  margin-left:0px;
  -  margin-right:2px;
  -  margin-bottom:-1px;
  -  -moz-border-radius-topleft: 10px;
  -  -moz-border-radius-topright: 10px;
  -  -moz-border-radius-bottomleft: 0px;
  -  -moz-border-radius-bottomright: 0px;
  -}
  -
  -.MC .fullday .colorbar .end {
  -  margin-bottom: 6px;
  -  margin-right:2px;
  -  -moz-border-radius-bottomleft: 10px;
  -  -moz-border-radius-bottomright: 10px;
  -  -moz-border-radius-topright: 0px;
  -  -moz-border-radius-topleft: 0px;
  -}
  -
  -.MC .colorbar .blue { /* color-2 */
  -  display:block;
  -  margin:0px;
  -  background-color: #58F !important;
  -  border-color: #36D !important;
  -  height:14px;
  -}
  -
  -.MC .fullday .colorbar .text {
  -  -moz-border-radius-topright: 14px;
  -  -moz-border-radius-bottomright: 14px;
  -  -moz-border-radius-topleft: 14px;
  -}
  -
  -.MC .fullday .colorbar .blue .text {
  -  background-color: #58F !important;
  -}
  -
  -.MC .colorbar .yellow { /* color-3 */
  -  display:block;
  -  margin:0px;
  -  height:14px;
  -  background-color: #FFA533 !important;
  -  border-color: #DD8311 !important;
  -}
  -
  -.MC .fullday .colorbar .yellow .text {
  -  background-color: #FFA533;
  -  overflow:hidden; /* XXX Bug ? */
  -}
  -
  -.MC .colorbar .yellow .text {
  -  background-color: #FFA533;
  -  overflow:hidden; /* XXX Bug ? */
  -}
  -
  -.MC .colorbar .purple { /* color-4 */
  -  display:block;
  -  margin:0px;
  -  background-color: #8866AA !important;
  -  border-color: #664488 !important;
  -  height:14px;
  -}
  -
  -.MC .fullday .colorbar .purple .text {
  -  background-color: #8866AA !important;
  -}
  -
  -.MC .colorbar .purple .text {
  -  background-color: #8866AA !important;
  -}
  -
  -.MC .colorbar .red { /* color-1 */
  -  display:block;
  -  margin:0px;
  -  background-color: #F55 !important;
  -  height:14px;
  -  border-color: #D33 !important;
  -}
  -
  -.MC .fullday .colorbar .red .text {
  -  background-color: #F55 !important;
  -}
  -
  -.MC .colorbar .blank { /* color-0 */
  -  display:block;
  -  margin:0px;
  -  height:16px;
  -  border:0px !important;
  -}
  -.MC .colorbar .blank:hover { /* color-0 */
  -  display:block;
  -  margin:0px;
  -  height:16px;
  -  border:0px !important;
  -}
  -
  -.MC .colorbar .green { /* color-5 */
  -  display:block;
  -  margin:0px;
  -  border-color:  #383 !important;
  -  background-color: #5A5 !important;
  -  height:14px;
  -}
  -.MC .fullday .colorbar .green .text {
  -  background-color: #5A5 !important;
  -}
  -
  -.MC .colorbar .gray { /* color-6 */
  -  display:block;
  -  margin:0px;
  -  border-color: #777 !important;
  -  background-color: #999 !important;
  -  height:14px;
  -}
  -
  -.MC .colorbar .gray .text {
  -  background-color: #999 !important;
  -}
  -
  -.MC .fullday .colorbar .gray .text {
  -  background-color: #999 !important;
  -}
  -
  -.wikiChat ul {
  -  list-style:none;
  -  padding:2px;
  -  margin:0px;
  -}
  -
  -.wikiChat span.user {
  -  font-family:Trebuchet MS,sans-serif;
  -  padding-left:2px;
  -  padding-right:2px;
  -}
  -
  -.wikiChat span.date {
  -  font-family:Trebuchet MS,sans-serif;
  -  padding-right:2px;
  -}
  -
  -.blocked {
  -  background-color:#ff0000;
  -  color:#fff;
  -}
  
  
  
  1.6       +244 -88   moniwiki/css/nsmk.css
  
  Index: nsmk.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/nsmk.css,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- nsmk.css	4 Jan 2005 09:37:44 -0000	1.5
  +++ nsmk.css	20 Sep 2005 12:57:51 -0000	1.6
  @@ -1,83 +1,78 @@
   /*  NoSmoke Default Styles */
  -@import url("user.css");
  +@import url("_user.css");
  +@import url("_extra.css");
  +@import url("_calendar.css");
   
   body {
  -    background-color: lightyellow;
  -    color: #000000;
  -    font-family: Georgia,Times New,Sans-Serif;
  -}
  -
  -.wikiTitle {
  -    font-family:Tahoma,Lucida,sans-serif;
  -    font-size:28px;
  -    font-weight:bold;
  -    text-decoration: none;
  +  background-color: lightyellow;
  +  color: #000000;
  +  font-family: Times New Roman,Sans-Serif;
   }
   
   td.headline {
  -    font-family: Helvetica,sans-serif;
  -    font-size: 20pt;
  +  font-family: Helvetica,sans-serif;
  +  font-size: 20pt;
   }
   
   h1,h2,h3,h4,h5 {
  -    font-family: Tahoma,Helvetica,sans-serif;
  -    background-color: #EECC99;
  -    padding-left:3pt;
  -    margin-top:2pt;
  -    margin-bottom:8pt;
  -    border-style:none;
  -    border-width:thin;
  -    width:100%;
  +  font-family: Helvetica,sans-serif;
  +  background-color: #EECC99;
  +  padding-left:3pt;
  +  margin-top:2pt;
  +  margin-bottom:8pt;
  +  border-style:none;
  +  border-width:thin;
   }
   h1 {
  -    font-size: 18pt;
  -    background-color: #DCA452;
  +  font-size: 18pt;
  +  background-color: #DCA452;
   }
   h2 {
  -    font-size: 16pt;
  -    padding-left:6pt;
  -    background-color: #F6AF6D;
  +  font-size: 16pt;
  +  padding-left:6pt;
  +  background-color: #F6AF6D;
   }
   h3 {
  -    font-size: 13pt;
  -    padding-left:10pt;
  -    background-color: #FFD6B7;
  +  font-size: 13pt;
  +  padding-left:10pt;
  +  background-color: #FFD6B7;
   }
   h4 {
  -    font-size: 11pt;
  -    padding-left:14pt;
  -    background-color: #EEDBD6;
  +  font-size: 11pt;
  +  padding-left:14pt;
  +  background-color: #EEDBD6;
   }
   h5 {
  -    font-size: 9pt;
  -    padding-left:18pt;
  -    background-color: #EEEBF6;
  +  font-size: 9pt;
  +  padding-left:18pt;
  +  background-color: #EEEBF6;
   }
   a:link {
  -    color: #993306;
  +  color: #993306;
   }
   a:visited {
  -    color: #BB7733;
  +  color: #BB7733;
   }
   a.nonexistent {
  -    font-weight: bold;
  -    background-color: #F8F8F8;
  -    color: #FF2222;
  +  font-weight: bold;
  +  background-color: #F8F8F8;
  +  color: #FF2222;
   }
   a.nonexistent:visited {
  -    background-color: #F8F8F8;
  -    color: #FF2222;
  +  background-color: #F8F8F8;
  +  color: #FF2222;
   }
   a.external {
  -    color: #AA6600;
  +  color: #AA6600;
   }
   dl,ul,ol {
  -    margin-top: 1pt;
  +  margin-top: 1pt;
   }
   tt {
  -    padding-left:6px;
  -    padding-top:6px;
  -    font-family:monotype,lucida,monospace;font-size:14px;
  +  padding-left:6px;
  +  padding-top:6px;
  +  font-family:Courier New,monotype,lucida,monospace;
  +  font-size:14px;
   }
   tt.foot {
     font-family:Tahoma,lucida,monospace;
  @@ -92,65 +87,72 @@
     text-decoration: none;
   }
   
  -pre.code {
  -    margin-top: 8pt;
  -    margin-bottom: 8pt;
  -    background-color: #E0E0E0;
  -    border-style:none;
  -    border-width:thin;
  -    width:100%;
  +pre.wiki, pre.code {
  +  font-family:Courier New,monotype,lucida,monospace;
  +  margin-top: 8pt;
  +  margin-bottom: 8pt;
  +  padding:5px;
  +  background-color: #E0E0E0;
  +  border-style:none;
  +  border-width:thin;
  +  width:100%;
   }
   span.diffold,div.diffold {
  -    /*white-space: pre-wrap;*/
  -    background-color: #FFFF80;
  -    border-style:none;
  -    border-width:thin;
  -    width:100%;
  +  /*white-space: pre-wrap;*/
  +  background-color: #FFFF80;
  +  border-style:none;
  +  border-width:thin;
  +  width:100%;
   }
   span.diffnew,div.diffnew {
  -    /*white-space: pre-wrap;*/
  -    background-color: #80FF80;
  -    border-style:none;
  -    border-width:thin;
  -    width:100%;
  -    /*word-wrap: break-word;*/
  +  /*white-space: pre-wrap;*/
  +  background-color: #80FF80;
  +  border-style:none;
  +  border-width:thin;
  +  width:100%;
  +  /*word-wrap: break-word;*/
   }
   strong.highlight {
  -    background-color: #FFBBBB;
  +  background-color: #FFBBBB;
   }
   
   table.wiki {
  -    background-color: #E0F4FF;
  -    border-color:silver;
  +  background-color: #E0F4FF;
  +  border:1px outset silver;
  +  border-spacing:0px;
  +}
  +
  +td.wiki {
  +  border:1px inset silver;
   }
   
   textarea.wiki { width:100%; }
   
   table.closure, tr.closure, td.closure {
  -    background-color: #EEF2CB;
  -    text-align:left;
  -    padding: 5px;
  -    margin: 0px 10px;
  +  background-color: #EEF2CB;
  +  text-align:left;
  +  padding: 5px;
  +  margin: 0px 10px;
   }
   span.closure {
  -    background-color: #FFFF99;
  +  background-color: #FFFF99;
   }
   
   .insert_diff {
  -    /*white-space: pre;*/
  -    background-color: #9999FF;
  -    text-decoration: underline;
  +  /*white-space: pre;*/
  +  background-color: #9999FF;
  +  text-decoration: underline;
   }
   
   .delete_diff {
  -    /*white-space: pre;*/
  -    background-color: red;
  -    text-decoration: line-through;
  +  /*white-space: pre;*/
  +  background-color: red;
  +  text-decoration: line-through;
   }
   
   .replace_diff {
  -    /*white-space: pre;*/
  -    background-color: silver;
  +  /*white-space: pre;*/
  +  background-color: silver;
   }
   
   span.diff-added, ins.diff-added {
  @@ -165,24 +167,136 @@
   }
   
   table.recentchanges {
  -    font-size: small;
  +  font-size: small;
   }
   
   .preformat {
  -    white-space: pre-wrap;
  -    font-family: vt100,monospace;
  -    word-wrap: break-word;
  +  white-space: pre-wrap;
  +  font-family: vt100,monospace;
  +  word-wrap: break-word;
   }
   
   /* MoniWiki */
  +.wikiSyntax, .wikiSyntax code{
  +  font-family:Bitstream Vera Sans Mono, Courier New, GulimChe, monospace !important;
  +  padding:0.5em;
  +}
  +
  +#wikiMenu {
  +  padding: 0.2em 0.2em 0.2em 0.2em;
  +  font-family:Trebuchet MS,sans-serif;
  +/*  background-color:#c8c8c8; /* */
  +  background-color:lavender;
  +}
  +
  +#wikiMenu ul {
  +  list-style:none;
  +  padding:0;
  +  margin:0;
  +  white-space:nowrap;
  +}
  +
  +#wikiMenu li {
  +  display:inline;
  +  padding-left:5px;
  +  padding-right:5px;
  +  background-color:#ebebeb;
  +  background-color:whitesmoke;
  +}
  +
  +#wikiMenu a {
  +  text-decoration:none;
  +  font-size:small;
  +}
  +
  +#wikiAction ul {
  +  list-style:none;
  +  padding:0;
  +  margin:0;
  +  white-space:nowrap;
  +}
  +
  +#wikiAction li {
  +  display:inline;
  +  padding-left:5px;
  +  padding-right:5px;
  +  border-right:1px solid #e0e0e0;
  +  float:left;
  +}
  +
  +#wikiAction a {
  +  font-family:Trebuchet MS,Georgia,Verdana,sans-serif;
  +  font-size:small;
  +}
  +
  +#wikiBanner {
  +  margin-left:10px;
  +}
  +
  +#wikiIcon {
  +  float:right;
  +  padding: 3px 10px;
  +  text-align: right;
  +  vertical-align: middle;
  +  margin-left: 10px;
  +}
  +
  +#wikiLogin {
  +  position:absolute;
  +  right:35px;
  +  top:11px;
  +  height:36px;
  +}
  +
  +div.diff-added {
  +  background-color:#E0FFE0;
  +  color:black;
  +}
  +
  +div.diff-removed {
  +  background-color:#E9EAB8;
  +  color:black;
  +}
  +
  +div.diff-sep {
  +  color:#ff0000;
  +}
  +
  +table.info {
  +  border:1px outset silver;
  +  border-spacing:0px;
  +}
  +
  +table.info td, table.info th {
  +  border:1px inset silver;
  +}
  +
  +.wikiTitle {
  +  font-family:Trebuchet MS,Helvetica,sans-serif;
  +  font-size:28px;
  +  font-weight:bold;
  +}
  +
  +div.message {
  +  clear:both;
  +  margin-top: 3pt;
  +  background-color: #E8E8E8;
  +  border:1px solid #990000;
  +  color:#440000;
  +  padding: 0.4em 0.2em 0.2em 0.2em;
  +  width:100%;
  +}
   
   #wikiTrailer,#wikiOrigin {
  -  padding-left: 20px;
  +  clear:both;
  +  padding-left: 0.4em;
     padding-bottom: 5px;
  +  padding-top: 5px;
  +  font-family:Trebuchet MS,sans-serif;
   }
   
   #wikiBody {
  -  padding-left: 2em; /* */
  +  clear:both;
   }
   
   #wikiPreview {
  @@ -191,12 +305,16 @@
     padding: 5px 1em 5px 1em;
   }
   
  +#wikiExtra {
  +  padding:2em;
  +}
  +
   .hint {
     
   }
   
   div.indent {
  -  padding-left:2em;
  +  padding-left:3em;
   }
   
   /* Blog CSS */
  @@ -239,3 +357,41 @@
   span.lineNumber {
     color:#ffff00;
   }
  +
  +.rc-date {
  +  font-weight:bold;
  +}
  +
  +#wikiContent .perma:link, #wikiContent .perma:visited {
  +  color:wheat;text-decoration:none;
  +}
  +.perma:link, .perma:visited {
  +  visibility: hidden;
  +}
  +
  +h1:hover .perma, h2:hover .perma, h3:hover .perma,
  +h4:hover .perma, h5:hover .perma, h6:hover .perma {
  +  visibility: visible;
  +}
  +
  +span:hover .perma {
  +  visibility: visible;
  +}
  +
  +.rc-bookmark {
  + font-size:10px;
  + font-weight:normal;
  +}
  +
  +.rc-button ul {
  +  list-style: none;
  +  display: inline;
  +  padding: 0px;
  +}
  +
  +.rc-button li {
  +  display: inline;
  +}
  +
  +div.sectionEdit { margin-right:5px; margin-top:3px; }
  +div.sectionEdit:hover { background-color:wheat;}
  
  
  
  1.7       +3 -1      moniwiki/css/olive.css
  
  Index: olive.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/olive.css,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- olive.css	4 Jan 2005 09:37:44 -0000	1.6
  +++ olive.css	20 Sep 2005 12:57:51 -0000	1.7
  @@ -1,4 +1,6 @@
  -@import url("user.css");
  +@import url("_user.css");
  +@import url("_extra.css");
  +@import url("_calendar.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.7       +8 -11     moniwiki/css/print.css
  
  Index: print.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/print.css,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- print.css	11 May 2005 11:46:25 -0000	1.6
  +++ print.css	20 Sep 2005 12:57:51 -0000	1.7
  @@ -1,8 +1,9 @@
  -@import url("user.css");
  +@import url("_user.css");
  +@import url("_extra.css");
  +@import url("_calendar.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  -  margin: 10;
   }
   
   .wikiTitle {
  @@ -26,16 +27,13 @@
   }
   
   pre.wiki {
  -  padding-left:6px;
  -  padding-top:6px; 
  -  font-family:Lucida TypeWriter,monotype,lucida,monospace;font-size:14px;
  -  background-color:#000000;
  -  color:#FFD700; /* gold */
  +  padding:1em; 
  +  font-family:Courier New, Lucida TypeWriter,monotype,lucida,monospace;font-size:14px;
  +  background-color:#e0e0e0;
   }
   
   pre.console {
  -  background-color: #000000;
  -  color: #E0E0E0;
  +  background-color: #e0e0e0;
     padding: .25em ;
     border: 2px inset #808080;
   }
  @@ -95,8 +93,7 @@
   div.diff-sep {
     font-family:georgia,Verdana,Lucida Sans TypeWriter,Lucida Console,monospace;
     font-size:12px;
  -  background-color:#000000;
  -  color:#FFD700; /* gold */
  +  background-color:#e0e0e0;
   }
   
   span.diff-added, ins.diff-added {
  
  
  
  1.8       +3 -1      moniwiki/css/redandblack.css
  
  Index: redandblack.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/redandblack.css,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- redandblack.css	4 Jan 2005 09:37:44 -0000	1.7
  +++ redandblack.css	20 Sep 2005 12:57:51 -0000	1.8
  @@ -1,4 +1,6 @@
  -@import url("user.css");
  +@import url("_user.css");
  +@import url("_extra.css");
  +@import url("_calendar.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.7       +3 -1      moniwiki/css/royalblue.css
  
  Index: royalblue.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/royalblue.css,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- royalblue.css	4 Jan 2005 09:37:44 -0000	1.6
  +++ royalblue.css	20 Sep 2005 12:57:51 -0000	1.7
  @@ -1,4 +1,6 @@
  -@import url("user.css");
  +@import url("_user.css");
  +@import url("_extra.css");
  +@import url("_calendar.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.7       +3 -1      moniwiki/css/seagreen.css
  
  Index: seagreen.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/seagreen.css,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- seagreen.css	4 Jan 2005 09:37:44 -0000	1.6
  +++ seagreen.css	20 Sep 2005 12:57:51 -0000	1.7
  @@ -1,4 +1,6 @@
  -@import url("user.css");
  +@import url("_user.css");
  +@import url("_extra.css");
  +@import url("_calendar.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.7       +3 -1      moniwiki/css/sky.css
  
  Index: sky.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/sky.css,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- sky.css	4 Jan 2005 09:37:44 -0000	1.6
  +++ sky.css	20 Sep 2005 12:57:51 -0000	1.7
  @@ -1,4 +1,6 @@
  -@import url("user.css");
  +@import url("_user.css");
  +@import url("_extra.css");
  +@import url("_calendar.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.2       +8 -8      moniwiki/css/slide.css
  
  Index: slide.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/slide.css,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- slide.css	26 Aug 2005 10:06:56 -0000	1.1
  +++ slide.css	20 Sep 2005 12:57:51 -0000	1.2
  @@ -1,4 +1,6 @@
  -@import url("user.css");
  +@import url("_user.css");
  +@import url("_extra.css");
  +@import url("_calendar.css");
   
   body {
     font-family:Bitstream Vera Sans,Georgia,Verdana,Lucida,sans-serif;
  @@ -12,16 +14,14 @@
     font-weight:bold;
     text-decoration: none;
   }
  -tt.wiki {font-family:Monotype,Lucida Console,lucida,monospace;font-size:12px;}
  +tt.wiki {font-family:Monotype,Lucida Console,lucida,monospace;}
   tt.foot {
     font-family:Tahoma,lucida,monospace;
  -  font-size:11px;
     vertical-align: super;
   }
   
   tt.sister {
     font-family:Tahoma,lucida,monospace;
  -  font-size:11px;
     vertical-align: super;
     text-decoration: none;
   }
  @@ -29,9 +29,9 @@
   pre.wiki {
     padding-left:6px;
     padding-top:6px; 
  -  font-family:Lucida TypeWriter,monotype,lucida,monospace;font-size:14px;
  -  background-color:#000000;
  -  color:#FFD700; /* gold */
  +  font-family:Lucida TypeWriter,monotype,lucida,monospace;
  +  background-color:#e0e0e0;
  +  color:#000000; /* gold */
   }
   
   pre.console {
  @@ -46,7 +46,7 @@
     padding-top:6px;
     white-space:pre-wrap;
     white-space: -moz-pre-wrap; 
  -  font-family:Georgia,monotype,lucida,monospace;font-size:14px;
  +  font-family:Georgia,monotype,lucida,monospace;
     background-color:#F7F8E6;
   }
   
  
  
  
  1.7       +3 -1      moniwiki/css/white.css
  
  Index: white.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/white.css,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- white.css	4 Jan 2005 09:37:44 -0000	1.6
  +++ white.css	20 Sep 2005 12:57:51 -0000	1.7
  @@ -1,4 +1,6 @@
  -@import url("user.css");
  +@import url("_user.css");
  +@import url("_extra.css");
  +@import url("_calendar.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.5       +52 -1     moniwiki/css/wood.css
  
  Index: wood.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/wood.css,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- wood.css	4 Jan 2005 09:37:44 -0000	1.4
  +++ wood.css	20 Sep 2005 12:57:51 -0000	1.5
  @@ -1,5 +1,7 @@
   /* MoniWiki CSS 2003/11/01 by wkpark */
  -@import url("user.css");
  +@import url("_user.css");
  +@import url("_extra.css");
  +@import url("_calendar.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;font-size:12px;
  @@ -155,8 +157,17 @@
   }
   
   #wikiTrailer, #wikiOrigin {
  +  clear: both;
     padding-left: 20px;
     padding-bottom: 5px;
  +  display:none;
  +}
  +
  +#wikiLogin {
  +  position:absolute;
  +  right:35px;
  +  top:11px;
  +  height:36px;
   }
   
   #wikiHeader {
  @@ -171,10 +182,50 @@
     background-color:#d6c8b6; 
   }
   
  +#wikiMenu {
  +  padding: 0.2em 0.2em 0.2em 0.2em;
  +}
  +
  +#wikiMenu ul {
  +  list-style:none;
  +  padding:0;
  +  margin:0;
  +  white-space:nowrap;
  +}
  +
  +#wikiMenu li {
  +  display:inline;
  +  padding-left:5px;
  +  padding-right:5px;
  +  border-right:1px solid #000000;
  +}
  +
  +#wikiAction ul {
  +  list-style:none;
  +  padding:0;
  +  margin:0;
  +  white-space:nowrap;
  +}
  +
  +#wikiAction li {
  +  display:inline;
  +  padding-left:5px;
  +  padding-right:5px;
  +  border-right:1px solid #000000;
  +  float:left;
  +}
  +
  +#wikiBanner {
  +  position:absolute;
  +  right:35px;
  +  bottom:-25x;
  +}
  +
   #wikiHeader a:link {color:#fff;}
   #wikiHeader a:visited {color:#f2f2f2;}
   
   #wikiBody {
  +  clear: both;
     color: black;
     background-color: #fff;
     border: 2px dotted #cecece;
  
  
  
  1.1                  moniwiki/css/_extra.css
  
  Index: _extra.css
  ===================================================================
  .wikiSyntax, .wikiSyntax code{
    font-family:Bitstream Vera Sans Mono, Courier New, GulimChe, monospace;
    padding:0.5em;
  }
  .cloudView li{
    font-family:Trebuchet MS,Georgia,Verdana,sans-serif;
    list-style:none;
    white-space: nowrap;
    display:inline;
    padding-left:5px;
  }
  
  #wikiBody .cloudView a:link, #wikiBody .cloudView a:visited {
    text-decoration:none;
    color:#000000;
  }
  
  #wikiBody .cloudView a:hover {
    text-decoration:underline;
    color:#0000ff;
  }
  
  .cloudView ul {
    margin:0;
  }
  
  .wikiChat ul {
    list-style:none;
    padding:2px;
    margin:0px;
  }
  
  .wikiChat span.user {
    font-family:Trebuchet MS,sans-serif;
    padding-left:2px;
    padding-right:2px;
  }
  
  .wikiChat span.date {
    font-family:Trebuchet MS,sans-serif;
    padding-right:2px;
  }
  
  .blocked {
    background-color:#ff0000;
    color:#fff;
  }
  
  div.tourLeft {
    width:60%;
    float:left;
  }
  
  div.tourRight {
    width:40%;
    float:right;
  }
  
  div.tourFoot {
    clear:both;
  }
  
  div.tourLeft > ul li {
    display:inline;
    margin:0;
    padding:0;
  }
  
  .depth-1 {
    background-color:#fafafa;
    padding:1em;
  }
  ul.depth-2 {
    background-color:#f0f0f0;
    padding:1em;
  }
  ul.depth-3 {
    background-color:#eaeaea;
    padding:1em;
  }
  ul.depth-4 {
    background-color:#e0e0e0;
    padding:1em;
  }
  ul.depth-5 {
    background-color:#b0b0b0;
    padding:1em;
  }
  
  .wikiFortune {
    font-family: Bitstream Vera Sans Mono,Courier New,monospace;
    white-space:pre;
  }
  
  .soundOff {
    background:url(../imgs/plugin/Chat/sound_off.png) no-repeat;
    width:16px;
    border:0;
  }
  
  .soundOn {
    background:url(../imgs/plugin/Chat/sound_on.png) no-repeat;
    width:16px;
    border:0;
  }
  
  
  


wkpark      2005/09/20 21:58:29

  Added:       css      _calendar.css
  Log:
  for MoniCalendar
  
  Revision  Changes    Path
  1.1                  moniwiki/css/_calendar.css
  
  Index: _calendar.css
  ===================================================================
  /* for MoniCalendar */
  
  .MC table {
    width:99%;
    border-spacing: 0;
    empty-cells: show;
    margin:0;
    padding:0;
    border-left: 1px solid #d3d3d3;
    border-top: 1px solid #d3d3d3;
  }
  
  .MC td {
    border-right: 1px solid #d3d3d3;
    border-bottom: 1px solid #d3d3d3;
    margin: 0px;
  }
  
  .MC td.day, .MC td.today {
    width:14%;
    min-height:40px;
    text-align: left;
    vertical-align: top;
  }
  
  .MC td.day:hover {
    background-color: #EAEFE5;
  }
  
  .MC td.day {
    background-color: #FFFFFF;
  }
  
  .MC td.fullday {
    margin:0px;
    border-right: 1px solid #A4ACBC;
    border-bottom: 1px solid #A4ACBC;
    width:90%;
  }
  
  .MC td.dayhead {
    width:50px;
    background-color: #FFFFFF;
    text-align:center;
  }
  
  .MC td.dayhead h6{
    font-size:20px;
    display:inline;
    font-family: Georgia, Arial, Helvetica, sans-serif;
  }
  
  .MC td.dayhead h6.week{
    font-size:16px;
    color:#727b84;
    font-family: Georgia, Arial, Helvetica, sans-serif;
  }
  
  .MC .month {
    font-size:18px;
    font-weight: bold;
  }
  
  .MC td.fullday li {
    display:inline;
    margin:0px;
  }
  
  .MC td.today {
    background-color: #E7FEDA;
  }
  
  .MC td.today:hover {
    background-color: #F7FFEA;
  }
  
  .MC .day h6, .MC .today h6 {
    font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
    font-size: 12px;
    /* background-color: #d9e2e1; /* */
    text-align: left;
    vertical-align: middle;
    padding-top:0px;
    margin-bottom: 1px;
    margin-top: 0px;
    /* border: #A4Acbc solid; /* */
    /* border-width: 0px 1px 1px 0px; */
    padding-top: 2px;
    color:#888;
  }
  
  .MC tr.weekhead {
    background-color: #A2ADBC;
    color: white;
    padding:0;
    margin:0;
  }
  
  .MC tr.week {
    padding:0;
    margin:0;
  }
  
  .MC ul {
    list-style:none;
    margin:0px;
    padding:0px;
    margin-right:0px;
    margin-left:-1px;
  }
  
  .MC td {
    margin:0px;
    padding:0px;
    padding:0;
    margin:0;
  }
  
  .MC li {
    margin:0px;
    padding:0px;
    margin-bottom:2px !important;
    padding-left:3px;
  }
  
  .MC .colorbar li {
    border-top:1px solid black;
    border-bottom:1px solid black;
  }
  
  .MC td.red {
    background-color: #ffc1c1;
  }
  
  .MC td.red:hover {
    background-color: #ffd1d1;
  }
  
  .MC td.blue {
    background-color: #d1d2fe;
  }
  
  .MC td.blue:hover {
    background-color: #e1e2fe;
  }
  
  .MC td.yellow {
    background-color: #FAEE83;
  }
  
  .MC td.yellow:hover {
    background-color: #FAFE93;
  }
  
  .MC td.green {
    background-color: #AFffAF;
  }
  
  .MC td.green:hover {
    background-color: #BAFFBA;
  }
  
  .MC .fullday ul li {
    display:inline;
    margin-bottom:1px !important;
    margin-top:0px !important;
    padding-bottom:1px !important;
    margin-right:2px;
    height:100%;
  }
  
  .MC td.fullday ul {
    float:left;
    margin:0px;
    padding:0px;
    height:100%;
  }
  
  .MC .fullday ul.colorbar{
    height:100%;
    min-width:16px;
    margin:0px;
    padding:0px;
    margin-bottom:0px !important;
  }
  
  .MC .day li.colorbar {
    min-height:14px;
    border-top:1px solid black;
    border-bottom:1px solid black;
    white-space:nowrap;
  }
  
  .MC .fullday ul.colorbar li{
    float:right;
    height:100%;
    /* min-width:16px; /* */
    width:14px; /* */
    border-left:1px solid black;
    border-right:1px solid black;
    border-top:0;
    border-bottom:0;
    margin-right:2px;
    white-space:normal !important;
  }
  
  .MC .fullday ul.colorbar li.blank {
    width:16px; /* */
  }
  
  .MC .fullday ul.colorbar li.blank:hover {
    width:16px; /* */
    margin-right:2px;
  }
  
  .MC .fullday ul.colorbar li .text:hover {
    height:100% !important;
    min-width:100px;
    overflow:visible;
  }
  
  .MC .fullday ul.colorbar li .text {
    min-width:14px;
    width:10%;
  }
  
  .MC .fullday li .start {
    height:100% !important;
  }
  
  .MC .colorbar .text:hover {
    height:auto !important; /* */
    overflow:visible;
  }
  
  .MC .colorbar li.start .text{
    height:14px;
  }
  
  .MC .colorbar li.start .text:hover {
    height:10%;
    margin-left:-2px;
    padding-left:2px;
    margin-right:2px;
    -moz-border-radius-topleft: 10px;
    -moz-border-radius-bottomleft: 10px;
    -moz-border-radius-bottomright: 10px;
  }
  
  .MC .colorbar li.start {
    color:white;
    font-size:9px;
    font-family:Trebuchet MS,Sans-serif;
    margin-left: 6px;
    margin-right:-1px;
    -moz-border-radius-topleft: 11px;
    -moz-border-radius-bottomleft: 11px;
    border-top:1px solid black;
    border-left:1px solid black;
    border-bottom:1px solid black;
  }
  
  .MC .colorbar li.end {
    margin-right: 6px;
    -moz-border-radius-topright: 11px;
    -moz-border-radius-bottomright: 11px;
    border-top:1px solid black;
    border-right:1px solid black;
    border-bottom:1px solid black;
  }
  
  .MC .fullday .colorbar .start {
    margin-top: 10px;
    margin-left:0px;
    margin-right:2px;
    margin-bottom:-1px;
    -moz-border-radius-topleft: 10px;
    -moz-border-radius-topright: 10px;
    -moz-border-radius-bottomleft: 0px;
    -moz-border-radius-bottomright: 0px;
  }
  
  .MC .fullday .colorbar .end {
    margin-bottom: 6px;
    margin-right:2px;
    -moz-border-radius-bottomleft: 10px;
    -moz-border-radius-bottomright: 10px;
    -moz-border-radius-topright: 0px;
    -moz-border-radius-topleft: 0px;
  }
  
  .MC .colorbar .blue { /* color-2 */
    display:block;
    margin:0px;
    background-color: #58F !important;
    border-color: #36D !important;
    height:14px;
  }
  
  .MC .fullday .colorbar .text {
    -moz-border-radius-topright: 14px;
    -moz-border-radius-bottomright: 14px;
    -moz-border-radius-topleft: 14px;
  }
  
  .MC .fullday .colorbar .blue .text {
    background-color: #58F !important;
  }
  
  .MC .colorbar .yellow { /* color-3 */
    display:block;
    margin:0px;
    height:14px;
    background-color: #FFA533 !important;
    border-color: #DD8311 !important;
  }
  
  .MC .fullday .colorbar .yellow .text {
    background-color: #FFA533;
    overflow:hidden; /* XXX Bug ? */
  }
  
  .MC .colorbar .yellow .text {
    background-color: #FFA533;
    overflow:hidden; /* XXX Bug ? */
  }
  
  .MC .colorbar .purple { /* color-4 */
    display:block;
    margin:0px;
    background-color: #8866AA !important;
    border-color: #664488 !important;
    height:14px;
  }
  
  .MC .fullday .colorbar .purple .text {
    background-color: #8866AA !important;
  }
  
  .MC .colorbar .purple .text {
    background-color: #8866AA !important;
  }
  
  .MC .colorbar .red { /* color-1 */
    display:block;
    margin:0px;
    background-color: #F55 !important;
    height:14px;
    border-color: #D33 !important;
  }
  
  .MC .fullday .colorbar .red .text {
    background-color: #F55 !important;
  }
  
  .MC .colorbar .blank { /* color-0 */
    display:block;
    margin:0px;
    height:16px;
    border:0px !important;
  }
  
  .MC .colorbar .blank:hover { /* color-0 */
    display:block;
    margin:0px;
    height:16px;
    border:0px !important;
  }
  
  .MC .colorbar .green { /* color-5 */
    display:block;
    margin:0px;
    border-color:  #383 !important;
    background-color: #5A5 !important;
    height:14px;
  }
  .MC .fullday .colorbar .green .text {
    background-color: #5A5 !important;
  }
  
  .MC .colorbar .gray { /* color-6 */
    display:block;
    margin:0px;
    border-color: #777 !important;
    background-color: #999 !important;
    height:14px;
  }
  
  .MC .colorbar .gray .text {
    background-color: #999 !important;
  }
  
  .MC .fullday .colorbar .gray .text {
    background-color: #999 !important;
  }
  
  
  
  


wkpark      2005/09/21 16:40:37

  Modified:    .        wiki.php
  Log:
  fix ambiguity of rename actions
  
  Revision  Changes    Path
  1.253     +6 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.252
  retrieving revision 1.253
  diff -u -r1.252 -r1.253
  --- wiki.php	20 Sep 2005 10:02:16 -0000	1.252
  +++ wiki.php	21 Sep 2005 07:40:36 -0000	1.253
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.252 2005/09/20 10:02:16 wkpark Exp $
  +// $Id: wiki.php,v 1.253 2005/09/21 07:40:36 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.252 $',1,-1);
  +$_revision = substr('$Revision: 1.253 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -1040,6 +1040,7 @@
   
       $okey=$this->getPageKey($pagename);
       $nkey=$this->getPageKey($new);
  +    $okeyname=$this->_getPageKey($pagename);
       $keyname=$this->_getPageKey($new);
   
       rename($okey,$nkey);
  @@ -1055,6 +1056,7 @@
       }
   
       $comment=sprintf(_("Rename %s to %s"),$pagename,$new);
  +    $this->addLogEntry($okeyname, $REMOTE_ADDR,'',"SAVE");
       $this->addLogEntry($keyname, $REMOTE_ADDR,$comment,"SAVE");
     }
   
  @@ -3794,8 +3796,8 @@
   
       $plugin=($pn=getPlugin($action)) ? $pn:$action;
       if (!function_exists("do_post_".$plugin) and
  -      !function_exists("do_".$plugin)){
  -        include_once("plugin/$plugin.php");
  +      !function_exists("do_".$plugin) and $pn){
  +        include_once("plugin/$pn.php");
       }
   
       if (function_exists("do_".$plugin)) {
  
  
  


wkpark      2005/09/21 16:42:37

  Modified:    .        wikilib.php
  Log:
  fixed do_goto(): use trim() instead of rtrim()
  
  Revision  Changes    Path
  1.178     +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.177
  retrieving revision 1.178
  diff -u -r1.177 -r1.178
  --- wikilib.php	20 Sep 2005 10:02:51 -0000	1.177
  +++ wikilib.php	21 Sep 2005 07:42:37 -0000	1.178
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.177 2005/09/20 10:02:51 wkpark Exp $
  +// $Id: wikilib.php,v 1.178 2005/09/21 07:42:37 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -882,7 +882,7 @@
       }
     }
     if ($options['value']) {
  -     $url=_stripslashes(rtrim($options['value']));
  +     $url=_stripslashes(trim($options['value']));
        $url=_rawurlencode($url);
        if ($options['redirect'])
          $url=$formatter->link_url($url,"?action=show&redirect=".
  
  
  


wkpark      2005/09/21 16:59:32

  Modified:    plugin   Comment.php
  Log:
  more fixes
  
  Revision  Changes    Path
  1.17      +3 -3      moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- Comment.php	20 Sep 2005 12:43:11 -0000	1.16
  +++ Comment.php	21 Sep 2005 07:59:32 -0000	1.17
  @@ -6,7 +6,7 @@
   // Usage: [[Comment]], ?action=comment
   //
   //
  -// $Id: Comment.php,v 1.16 2005/09/20 12:43:11 wkpark Exp $
  +// $Id: Comment.php,v 1.17 2005/09/21 07:59:32 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $HTTP_USER_AGENT;
  @@ -155,8 +155,8 @@
       $body= str_replace($str,$savetext.$str,$body,1);
     } else if (preg_match("/\n##Comment\n/i",$body)) {
       $body= preg_replace("/\n##Comment\n/i","\n##Comment\n$savetext",$body,1);
  -  } else if ($XX) {
  -    $body.=$savetext;
  +  } else if (preg_match("/^\[\[Comment(\([^\)]*\))?\]\]/m",$body)) {
  +    $body= preg_replace("/^(\[\[Comment(\([^\)]*\))?\]\])/m",$savetext."\\1",$body,1);
     } else
       $body.=$savetext;
   
  
  
  


wkpark      2005/09/22 01:33:24

  Added:       lib      search.DBA.php
  Log:
  DBA search indexer engine added
  
  Revision  Changes    Path
  1.1                  moniwiki/lib/search.DBA.php
  
  Index: search.DBA.php
  ===================================================================
  <?php
  // Copyright 2005 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a searchdb plugin for the MoniWiki
  //
  // initial version from http://www.heddley.com/edd/php/search.html
  // heavily modified to adopt to the MoniWiki 2003/07/19 by wkpark
  // $Id: search.DBA.php,v 1.1 2005/09/21 16:33:24 wkpark Exp $
  
  class IndexDB_dba {
      var $db=null;
      var $type="N";
  
      function IndexDB_dba($arena,$mode='r',$type) {
          global $DBInfo;
          $this->index_dir=$DBInfo->cache_dir."/index";
          if (!file_exists($this->index_dir))
              mkdir($this->index_dir, 0777);
          $db=$this->index_dir.'/'.$arena.'.db';
          if (($this->db=@dba_open($db, $mode,$type)) === false) {
              if (($this->db=@dba_open($db, 'n',$type)) === false)
                  return false;
              // startkey==256
              dba_insert('!!',256,$this->db);
              dba_sync($this->db);
          }
          return true;
      }
  
      function getPageID($pagename) {
          print $pagename;
          if (!$this->exists($pagename))
              return $this->_getNewID($pagename);
  
          $pkey=dba_fetch('!?'.$pagename,$this->db);
          $pkey=unpack($this->type.'1'.$this->type,$pkey);
          return $pkey[$this->type];
      }
  
      function fetchValues($pagename) {
          $pkey=$this->getPageID($pagename);
          return $this->_fetchValues($pkey);
      }
  
      function _fetchValues($key) {
          if (is_int($key))
              $key=pack($this->type,$key);
  
          $pkey=dba_fetch('!?'.$key,$this->db);
          return unpack($this->type.'*',$pkey);
      }
  
      function _fetch($key) {
          if (is_int($key))
              $key=pack($this->type,$key);
  
          return dba_fetch('!?'.$key,$this->db);
      }
  
      function exists($key) {
          return dba_exists('!?'.$key,$this->db);
      }
  
      function _current() {
          return dba_fetch("!!",$this->db); // currentKey
      }
  
      function _getNewID($pagename) {
          $pkey=$nkey=$this->_current();
          $type=$this->type;
          dba_insert('!?'.$pagename,pack($type,$pkey),$this->db);
          dba_insert('!?'.pack($type,$pkey),$pagename,$this->db);
          $nkey++; if ($nkey % 256 ==0) { $nkey++; }
          dba_replace("!!",$nkey,$this->db);
          return $pkey;
      }
  
      function addWords($pagename,$words) {
          if (!is_array($words)) return;
          $type=$this->type;
          $key=$this->getPageID($pagename);
          foreach ($words as $word) {
              if (dba_exists('!?'.$word,$this->db)) {
                  $a=dba_fetch('!?'.$word,$this->db);
              } else {
                  dba_insert('!?'.$word,'',$this->db);
                  $a='';
              }
              $a.=pack($type,$key);
              $un=array_unique(unpack($type.'*',$a));
              arsort($un);
              $na='';
              foreach ($un as $u) $na.=pack($type,$u);
              dba_replace('!?'.$word,$na,$this->db);
          }
          return;
      }
  
      function delWords($pagename,$words,$mode='') {
          if (!is_array($words)) return;
          $type=$this->type;
          $key=$this->getPageID($pagename);
          foreach ($words as $word) {
              if (dba_exists('!?'.$word,$this->db)) {
                  $a=dba_fetch('!?'.$word,$this->db);
              } else {
                  continue;
              }
              $un=array_unique(unpack($type.'*',$a));
              $ta=array_flip($un);
              unset($ta[$key]);
              $un=array_flip($ta);
              arsort($un);
              foreach ($un as $u) $na.=pack($type,$u);
              dba_replace('!?'.$word,$na,$this->db);
          }
          return;
      }
  
      function close() {
          return dba_close($this->db);
      }
  }
  
  // vim:et:sts=4
  ?>
  
  
  


wkpark      2005/09/22 02:28:03

  Modified:    plugin   FastSearch.php
  Log:
  refactoring to use search.DBA class the new dynamic indexer
  
  Revision  Changes    Path
  1.9       +15 -13    moniwiki/plugin/FastSearch.php
  
  Index: FastSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FastSearch.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- FastSearch.php	20 Sep 2005 10:16:38 -0000	1.8
  +++ FastSearch.php	21 Sep 2005 17:28:03 -0000	1.9
  @@ -13,14 +13,12 @@
   //
   // Usage: [[FastSearch(string)]]
   //
  -// $Id: FastSearch.php,v 1.8 2005/09/20 10:16:38 wkpark Exp $
  +// $Id: FastSearch.php,v 1.9 2005/09/21 17:28:03 wkpark Exp $
  +
  +include_once('lib/search.DBA.php');
   
   function macro_FastSearch($formatter,$value="",&$opts) {
     global $DBInfo;
  -  $theDB=$DBInfo->data_dir."/index.db";
  -  if (!file_exists($theDB)) {
  -    return '[[FastSearch('._("Index DB is not found.").')]]';
  -  }
   
     if ($value === true) {
       $needle = $value = $formatter->page->name;
  @@ -47,26 +45,30 @@
        return $form;
     }
   
  -  if (($dbindex=@dba_open("$theDB", "r",$DBInfo->dba_type)) === false) {
  +  $DB=new IndexDB_dba('fullsearch',"r",$DBInfo->dba_type);
  +  if ($DB->db==null) {
       $opts['msg']="Couldn't open search database, sorry.";
       $opts['hits']= 0;
       $opts['all']= 0;
  -    return;
  +    return '';
     }
   
     $words=split(' ', strtolower($value));
     $keys='';
  -  foreach ($words as $word) $keys.=dba_fetch($word,$dbindex);
  +  $idx=array();
  +  foreach ($words as $word) {
  +    $idx=array_merge($idx,$DB->_fetchValues($word));
  +  }
   
  -  $res=unpack("n*",$keys);
  -  arsort($res);
  +  arsort($idx);
   
     $pages=array();
  -  foreach ($res as $k) {
  -    $key= dba_fetch("!?".pack('n',$k),$dbindex);
  +  foreach ($idx as $id) {
  +    $key= $DB->_fetch($id);
       $pages[]=$key;
  +    #print $key.'<br />';
     }
  -  dba_close($dbindex);
  +  $DB->close();
   
     $hits=array();
   
  
  
  


wkpark      2005/09/22 02:29:23

  Modified:    lib      search.DBA.php
  Log:
  support compatiblity with perl indexer
  
  Revision  Changes    Path
  1.2       +16 -16    moniwiki/lib/search.DBA.php
  
  Index: search.DBA.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/search.DBA.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- search.DBA.php	21 Sep 2005 16:33:24 -0000	1.1
  +++ search.DBA.php	21 Sep 2005 17:29:22 -0000	1.2
  @@ -5,11 +5,11 @@
   //
   // initial version from http://www.heddley.com/edd/php/search.html
   // heavily modified to adopt to the MoniWiki 2003/07/19 by wkpark
  -// $Id: search.DBA.php,v 1.1 2005/09/21 16:33:24 wkpark Exp $
  +// $Id: search.DBA.php,v 1.2 2005/09/21 17:29:22 wkpark Exp $
   
   class IndexDB_dba {
       var $db=null;
  -    var $type="N";
  +    var $type="n";
   
       function IndexDB_dba($arena,$mode='r',$type) {
           global $DBInfo;
  @@ -28,12 +28,12 @@
       }
   
       function getPageID($pagename) {
  -        print $pagename;
  -        if (!$this->exists($pagename))
  +        if (!$this->exists('!?'.$pagename))
               return $this->_getNewID($pagename);
   
           $pkey=dba_fetch('!?'.$pagename,$this->db);
           $pkey=unpack($this->type.'1'.$this->type,$pkey);
  +        print_r($pkey);
           return $pkey[$this->type];
       }
   
  @@ -44,21 +44,21 @@
   
       function _fetchValues($key) {
           if (is_int($key))
  -            $key=pack($this->type,$key);
  +            $key='!?'.pack($this->type,$key);
   
  -        $pkey=dba_fetch('!?'.$key,$this->db);
  +        $pkey=dba_fetch($key,$this->db);
           return unpack($this->type.'*',$pkey);
       }
   
       function _fetch($key) {
           if (is_int($key))
  -            $key=pack($this->type,$key);
  +            $key='!?'.pack($this->type,$key);
   
  -        return dba_fetch('!?'.$key,$this->db);
  +        return dba_fetch($key,$this->db);
       }
   
       function exists($key) {
  -        return dba_exists('!?'.$key,$this->db);
  +        return dba_exists($key,$this->db);
       }
   
       function _current() {
  @@ -80,10 +80,10 @@
           $type=$this->type;
           $key=$this->getPageID($pagename);
           foreach ($words as $word) {
  -            if (dba_exists('!?'.$word,$this->db)) {
  -                $a=dba_fetch('!?'.$word,$this->db);
  +            if (dba_exists($word,$this->db)) {
  +                $a=dba_fetch($word,$this->db);
               } else {
  -                dba_insert('!?'.$word,'',$this->db);
  +                dba_insert($word,'',$this->db);
                   $a='';
               }
               $a.=pack($type,$key);
  @@ -91,7 +91,7 @@
               arsort($un);
               $na='';
               foreach ($un as $u) $na.=pack($type,$u);
  -            dba_replace('!?'.$word,$na,$this->db);
  +            dba_replace($word,$na,$this->db);
           }
           return;
       }
  @@ -101,8 +101,8 @@
           $type=$this->type;
           $key=$this->getPageID($pagename);
           foreach ($words as $word) {
  -            if (dba_exists('!?'.$word,$this->db)) {
  -                $a=dba_fetch('!?'.$word,$this->db);
  +            if (dba_exists($word,$this->db)) {
  +                $a=dba_fetch($word,$this->db);
               } else {
                   continue;
               }
  @@ -112,7 +112,7 @@
               $un=array_flip($ta);
               arsort($un);
               foreach ($un as $u) $na.=pack($type,$u);
  -            dba_replace('!?'.$word,$na,$this->db);
  +            dba_replace($word,$na,$this->db);
           }
           return;
       }
  
  
  


wkpark      2005/09/22 02:30:13

  Modified:    data     wiki_indexer.pl
  Log:
  compatible with dynamic indexer
  
  Revision  Changes    Path
  1.4       +23 -7     moniwiki/data/wiki_indexer.pl
  
  Index: wiki_indexer.pl
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/data/wiki_indexer.pl,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- wiki_indexer.pl	12 Apr 2005 16:40:58 -0000	1.3
  +++ wiki_indexer.pl	21 Sep 2005 17:30:12 -0000	1.4
  @@ -2,12 +2,24 @@
   # from http://www.heddley.com/edd/php/search.html
   # slightly modified to adopt to the MoniWiki 2003/07/19 by wkpark
   # Public Domain
  -# $Id: wiki_indexer.pl,v 1.3 2005/04/12 16:40:58 wkpark Exp $
  +# $Id: wiki_indexer.pl,v 1.4 2005/09/21 17:30:12 wkpark Exp $
  +#
  +# Usage:
  +# $ cd data
  +# $ ls
  +# ... text/ cache/
  +# $ perl wiki_indexer.pl
  +# ....
  +# $ mkdir cache/index or rm cache/index/fullsearch.db
  +# $ chmod a+rw fullsearch.db
  +# $ mv fullsearch.db cache/index
  +#
   
   require 5.8.0;
   
   #$charset="euc-kr";
   $charset="utf8";
  +$type='n';
   ###########################################################################
   if ($charset eq "utf8") {
     use encoding "utf8";
  @@ -28,11 +40,14 @@
   ############################################################################
   
   # Delete old index.db and attach %indexdb to database
  -unlink("index.db");
  -tie(%indexdb,'DB_File',"index.db",
  +unlink("fullsearch.db");
  +tie(%indexdb,'DB_File',"fullsearch.db",
       O_RDWR | O_CREAT, 0644, $DB_File::DB_BTREE);
   find(\&IndexFile,"text");
   &FlushWordCache();
  +
  +$indexdb{"!!"}=$currentKey; # save currentKey
  +
   untie(%indexdb); # release database
   
   ###########################################################################
  @@ -54,7 +69,8 @@
           # Index all the words under the current key
           my($wordsIndexed) = &IndexWords($text,$currentKey);
           # Map key to this filename
  -        $indexdb{"!?" . pack("n",$currentKey)} = $_;
  +        $indexdb{"!?" . pack($type,$currentKey)} = $_;
  +        $indexdb{"!?" . $_} = pack($type,$currentKey);
           $currentKey++; if ($currentKey % 256 ==0) { $currentKey++; }
   
           $fileCount++;
  @@ -82,7 +98,7 @@
       foreach (sort @words) {
           #print $_."\n";
           my($a) = $wordcache{$_};
  -        $a .= pack "n",$fileKey;
  +        $a .= pack $type,$fileKey;
           $wordcache{$_} = $a;
       }
   
  @@ -117,12 +133,12 @@
       # Simply append all the lists
       foreach (@_) { $list .= $_; }
       # Now, remove any duplicate entries
  -    my(@unpackedList) = unpack("n*",$list); # Unpack into integers
  +    my(@unpackedList) = unpack($type."*",$list); # Unpack into integers
       my(%uniq); # sort and unique-ify
       @unpackedList = grep { $uniq{$_}++ == 0 }
                       sort { $a <=> $b }
                       @unpackedList;
  -    return pack("n*",@unpackedList); # repack
  +    return pack($type."*",@unpackedList); # repack
   }
   
   ###########################################################################
  
  
  


wkpark      2005/09/24 02:13:00

  Added:       local    csshover.htc
  Log:
  pseudo css hover hack for IE
  
  Revision  Changes    Path
  1.1                  moniwiki/local/csshover.htc
  
  Index: csshover.htc
  ===================================================================
  <attach event="ondocumentready" handler="parseStylesheets" />
  <script language="JScript">
  /**
   *	Pseudos - V1.30.050121 - hover & active
   *	---------------------------------------------
   *	Peterned - http://www.xs4all.nl/~peterned/
   *	(c) 2005 - Peter Nederlof
   *
   *	Credits  - Arnoud Berendsen 
   *	         - Martin Reurings
   *           - Robert Hanson
   *
   *	howto: body { behavior:url("csshover.htc"); }
   *	---------------------------------------------
   */
  
  var currentSheet, doc = window.document, activators = {
  	onhover:{on:'onmouseover', off:'onmouseout'},
  	onactive:{on:'onmousedown', off:'onmouseup'}
  }
  
  function parseStylesheets() {
  	var sheets = doc.styleSheets, l = sheets.length;
  	for(var i=0; i<l; i++) 
  		parseStylesheet(sheets[i]);
  }
  	function parseStylesheet(sheet) {
  		if(sheet.imports) {
  			try {
  				var imports = sheet.imports, l = imports.length;
  				for(var i=0; i<l; i++) parseStylesheet(sheet.imports[i]);
  			} catch(securityException){}
  		}
  
  		try {
  			var rules = (currentSheet = sheet).rules, l = rules.length;
  			for(var j=0; j<l; j++) parseCSSRule(rules[j]);
  		} catch(securityException){}
  	}
  
  	function parseCSSRule(rule) {
  		var select = rule.selectorText, style = rule.style.cssText;
  		if(!(/(^|\s)(([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active)/i).test(select) || !style) return;
  		
  		var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1');
  		var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo);
  		var className = (/\.([a-z0-9_-]*on(hover|active))/i).exec(newSelect)[1];
  		var affected = select.replace(/:hover.*$/, '');
  		var elements = getElementsBySelect(affected);
  
  		currentSheet.addRule(newSelect, style);
  		for(var i=0; i<elements.length; i++)
  			new HoverElement(elements[i], className, activators[pseudo]);
  	}
  
  function HoverElement(node, className, events) {
  	if(!node.hovers) node.hovers = {};
  	if(node.hovers[className]) return;
  	node.hovers[className] = true;
  	node.attachEvent(events.on,
  		function() { node.className += ' ' + className; });
  	node.attachEvent(events.off,
  		function() { node.className = 
  			node.className.replace(new RegExp('\\s+'+className, 'g'),''); });
  }
  
  function getElementsBySelect(rule) {
  	var parts, nodes = [doc];
  	parts = rule.split(' ');
  	for(var i=0; i<parts.length; i++) {
  		nodes = getSelectedNodes(parts[i], nodes);
  	}	return nodes;
  }
  	function getSelectedNodes(select, elements) {
  		var result, node, nodes = [];
  		var classname = (/\.([a-z0-9_-]+)/i).exec(select);
  		var identify = (/\#([a-z0-9_-]+)/i).exec(select);
  		var tagName = select.replace(/(\.|\#|\:)[a-z0-9_-]+/i, '');
  		for(var i=0; i<elements.length; i++) {
  			result = tagName? elements[i].all.tags(tagName):elements[i].all; 
  			for(var j=0; j<result.length; j++) {
  				node = result[j];
  				if((identify && node.id != identify[1]) || (classname && !(new RegExp('\\b' +
  					classname[1] + '\\b').exec(node.className)))) continue;
  				nodes[nodes.length] = node;
  			}
  		}	return nodes;
  	}
  </script>
  
  
  


wkpark      2005/09/24 02:15:14

  Modified:    css      _extra.css black.css blog.css bw.css cream.css
                        darkkhaki.css darkred.css default.css gray.css
                        green.css iolo.css khaki.css log.css matrix.css
                        moinmoin.css nlog.css nsmk.css olive.css print.css
                        redandblack.css royalblue.css seagreen.css sky.css
                        slide.css white.css wood.css
  Added:       css      _base.css
  Log:
  fix for more css friendly. refactoring and extract _base.css etc.
  
  Revision  Changes    Path
  1.2       +13 -0     moniwiki/css/_extra.css
  
  Index: _extra.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_extra.css,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- _extra.css	20 Sep 2005 12:57:51 -0000	1.1
  +++ _extra.css	23 Sep 2005 17:15:11 -0000	1.2
  @@ -2,6 +2,18 @@
     font-family:Bitstream Vera Sans Mono, Courier New, GulimChe, monospace;
     padding:0.5em;
   }
  +
  +div.sectionEdit {
  +  margin-right:5px; margin-top:3px;
  +  visibility:hidden;
  +}
  +#wikiContent div:hover .sectionEdit {
  +  visibility:visible;
  +}
  +div.sectionEdit:hover {
  +  visibility:visible;
  +}
  +
   .cloudView li{
     font-family:Trebuchet MS,Georgia,Verdana,sans-serif;
     list-style:none;
  @@ -103,3 +115,4 @@
     width:16px;
     border:0;
   }
  +
  
  
  
  1.8       +2 -1      moniwiki/css/black.css
  
  Index: black.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/black.css,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- black.css	20 Sep 2005 12:57:51 -0000	1.7
  +++ black.css	23 Sep 2005 17:15:11 -0000	1.8
  @@ -1,6 +1,7 @@
  -@import url("_user.css");
  +@import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  +@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.8       +2 -2      moniwiki/css/blog.css
  
  Index: blog.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/blog.css,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- blog.css	20 Sep 2005 12:57:51 -0000	1.7
  +++ blog.css	23 Sep 2005 17:15:11 -0000	1.8
  @@ -1,6 +1,7 @@
  -@import url("_user.css");
  +@import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  +@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  @@ -243,7 +244,6 @@
     display:inline;
     padding-left:5px;
     padding-right:5px;
  -  border-right:1px solid #000000;
   }
   
   #wikiAction ul {
  
  
  
  1.8       +2 -1      moniwiki/css/bw.css
  
  Index: bw.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/bw.css,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- bw.css	20 Sep 2005 12:57:51 -0000	1.7
  +++ bw.css	23 Sep 2005 17:15:11 -0000	1.8
  @@ -1,6 +1,7 @@
  -@import url("_user.css");
  +@import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  +@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.8       +2 -1      moniwiki/css/cream.css
  
  Index: cream.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/cream.css,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- cream.css	20 Sep 2005 12:57:51 -0000	1.7
  +++ cream.css	23 Sep 2005 17:15:11 -0000	1.8
  @@ -1,6 +1,7 @@
  -@import url("_user.css");
  +@import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  +@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.8       +20 -3     moniwiki/css/darkkhaki.css
  
  Index: darkkhaki.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/darkkhaki.css,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- darkkhaki.css	20 Sep 2005 12:57:51 -0000	1.7
  +++ darkkhaki.css	23 Sep 2005 17:15:11 -0000	1.8
  @@ -1,6 +1,7 @@
  -@import url("_user.css");
  +@import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  +@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  @@ -164,7 +165,7 @@
   
   #wikiHeader{
   /*  border-left: 0.8em solid #7B9AC5; /* */
  -  padding: 0.2em 0.2em 0.2em 0.2em;
  +  padding: 0.2em 0.2em 0 0.2em;
     background-color:#666633; */
   }
   
  @@ -173,7 +174,6 @@
   }
   
   #wikiHeader a:link{color:#FFFFCC; }
  -#wikiHeader a:visited {color:#FFFFCC; }
   
   #wikiBody {
   /*   background-color:lightyellow; */
  @@ -211,6 +211,23 @@
     padding: 5px 1em 5px 1em;
   }
   
  +#wikiMenu ul{
  +  padding-left:2px;
  +  height:1.3em;
  +}
  +
  +#wikiMenu li {
  +  background-color:#cccc99;
  +}
  +
  +#wikiMenu a {
  +  color:black !important;
  +}
  +
  +#wikiMenu a:hover {
  +  background-color:white;
  +  color:black;
  +}
   /*
   #wikiMenu {
     background-color:yellow;
  
  
  
  1.8       +2 -1      moniwiki/css/darkred.css
  
  Index: darkred.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/darkred.css,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- darkred.css	20 Sep 2005 12:57:51 -0000	1.7
  +++ darkred.css	23 Sep 2005 17:15:11 -0000	1.8
  @@ -1,6 +1,7 @@
  -@import url("_user.css");
  +@import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  +@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.8       +2 -1      moniwiki/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/default.css,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- default.css	20 Sep 2005 12:57:51 -0000	1.7
  +++ default.css	23 Sep 2005 17:15:11 -0000	1.8
  @@ -1,6 +1,7 @@
  -@import url("_user.css");
  +@import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  +@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.7       +2 -1      moniwiki/css/gray.css
  
  Index: gray.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/gray.css,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- gray.css	20 Sep 2005 12:57:51 -0000	1.6
  +++ gray.css	23 Sep 2005 17:15:11 -0000	1.7
  @@ -1,6 +1,7 @@
  -@import url("_user.css");
  +@import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  +@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.8       +2 -1      moniwiki/css/green.css
  
  Index: green.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/green.css,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- green.css	20 Sep 2005 12:57:51 -0000	1.7
  +++ green.css	23 Sep 2005 17:15:11 -0000	1.8
  @@ -1,6 +1,7 @@
  -@import url("_user.css");
  +@import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  +@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.7       +2 -1      moniwiki/css/iolo.css
  
  Index: iolo.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/iolo.css,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- iolo.css	20 Sep 2005 12:57:51 -0000	1.6
  +++ iolo.css	23 Sep 2005 17:15:11 -0000	1.7
  @@ -3,9 +3,10 @@
    distributable under GPL
   */
   
  -@import url("_user.css");
  +@import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  +@import url("_user.css");
   
   body {
   	font-family:"Trebuchet MS","Myungjo Newsletter","UnBatang",sans-serif;
  
  
  
  1.8       +2 -1      moniwiki/css/khaki.css
  
  Index: khaki.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/khaki.css,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- khaki.css	20 Sep 2005 12:57:51 -0000	1.7
  +++ khaki.css	23 Sep 2005 17:15:11 -0000	1.8
  @@ -1,6 +1,7 @@
  -@import url("_user.css");
  +@import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  +@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.6       +2 -1      moniwiki/css/log.css
  
  Index: log.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/log.css,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- log.css	20 Sep 2005 12:57:51 -0000	1.5
  +++ log.css	23 Sep 2005 17:15:11 -0000	1.6
  @@ -1,7 +1,8 @@
   /* MoniWiki CSS 2003/11/01 by wkpark */
  -@import url("_user.css");
  +@import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  +@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;font-size:12px;
  
  
  
  1.8       +2 -1      moniwiki/css/matrix.css
  
  Index: matrix.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/matrix.css,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- matrix.css	20 Sep 2005 12:57:51 -0000	1.7
  +++ matrix.css	23 Sep 2005 17:15:11 -0000	1.8
  @@ -1,6 +1,7 @@
  -@import url("_user.css");
  +@import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  +@import url("_user.css");
   
   body {font-family:Georgia,Verdana,Lucida,sans-serif;
     background-color:#000000; color: #369746;
  
  
  
  1.7       +3 -2      moniwiki/css/moinmoin.css
  
  Index: moinmoin.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/moinmoin.css,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- moinmoin.css	20 Sep 2005 12:57:51 -0000	1.6
  +++ moinmoin.css	23 Sep 2005 17:15:11 -0000	1.7
  @@ -2,14 +2,15 @@
   
       Copyright (c) 2001, 2002, 2003 by Jrgen Hermann
   
  -    $Id: moinmoin.css,v 1.6 2005/09/20 12:57:51 wkpark Exp $
  +    $Id: moinmoin.css,v 1.7 2005/09/23 17:15:11 wkpark Exp $
   */
   
   /* user interface styles */
  +@import url("_base.css");
   @import url("_moinui");
  -@import url("_user.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  +@import url("_user.css");
   
   /* content styles */
   body {
  
  
  
  1.7       +3 -38     moniwiki/css/nlog.css
  
  Index: nlog.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/nlog.css,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- nlog.css	20 Sep 2005 12:57:51 -0000	1.6
  +++ nlog.css	23 Sep 2005 17:15:11 -0000	1.7
  @@ -1,7 +1,8 @@
   /* MoniWiki CSS 2003/11/01 by wkpark */
  -@import url("_user.css");
  +@import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  +@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;font-size:12px;
  @@ -154,7 +155,7 @@
   }
   
   #wikiHeader {
  -  padding: 0.5em 0.2em 0em 1.5em;
  +  padding: 0.5em 10px 0em 10px;
   }
   
   #wikiHeader a:link {color:black;}
  @@ -175,45 +176,9 @@
   
   
   #wikiMenu {
  -  padding: 0.2em 0.2em 0.2em 0.2em;
     background-color:#e0e0e0;
   }
   
  -#wikiMenu ul {
  -  list-style:none;
  -  padding:0;
  -  margin:0;
  -  white-space:nowrap;
  -}
  -
  -#wikiMenu li {
  -  display:inline;
  -  padding-left:5px;
  -  padding-right:5px;
  -  border-right:1px solid #000000;
  -}
  -
  -#wikiAction ul {
  -  list-style:none;
  -  padding:0;
  -  margin:0;
  -  white-space:nowrap;
  -}
  -
  -#wikiAction li {
  -  display:inline;
  -  padding-left:5px;
  -  padding-right:5px;
  -  border-right:1px solid #000000;
  -  float:left;
  -}
  -
  -#wikiBanner {
  -  position:absolute;
  -  right:35px;
  -  bottom:-25x;
  -}
  -
   #wikiTrailer, #wikiOrigin {
     clear:both;
     padding-left: 20px;
  
  
  
  1.7       +11 -40    moniwiki/css/nsmk.css
  
  Index: nsmk.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/nsmk.css,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- nsmk.css	20 Sep 2005 12:57:51 -0000	1.6
  +++ nsmk.css	23 Sep 2005 17:15:11 -0000	1.7
  @@ -1,7 +1,8 @@
   /*  NoSmoke Default Styles */
  -@import url("_user.css");
  +@import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  +@import url("_user.css");
   
   body {
     background-color: lightyellow;
  @@ -183,27 +184,11 @@
   }
   
   #wikiMenu {
  -  padding: 0.2em 0.2em 0.2em 0.2em;
     font-family:Trebuchet MS,sans-serif;
   /*  background-color:#c8c8c8; /* */
     background-color:lavender;
   }
   
  -#wikiMenu ul {
  -  list-style:none;
  -  padding:0;
  -  margin:0;
  -  white-space:nowrap;
  -}
  -
  -#wikiMenu li {
  -  display:inline;
  -  padding-left:5px;
  -  padding-right:5px;
  -  background-color:#ebebeb;
  -  background-color:whitesmoke;
  -}
  -
   #wikiMenu a {
     text-decoration:none;
     font-size:small;
  @@ -305,10 +290,6 @@
     padding: 5px 1em 5px 1em;
   }
   
  -#wikiExtra {
  -  padding:2em;
  -}
  -
   .hint {
     
   }
  @@ -365,23 +346,6 @@
   #wikiContent .perma:link, #wikiContent .perma:visited {
     color:wheat;text-decoration:none;
   }
  -.perma:link, .perma:visited {
  -  visibility: hidden;
  -}
  -
  -h1:hover .perma, h2:hover .perma, h3:hover .perma,
  -h4:hover .perma, h5:hover .perma, h6:hover .perma {
  -  visibility: visible;
  -}
  -
  -span:hover .perma {
  -  visibility: visible;
  -}
  -
  -.rc-bookmark {
  - font-size:10px;
  - font-weight:normal;
  -}
   
   .rc-button ul {
     list-style: none;
  @@ -393,5 +357,12 @@
     display: inline;
   }
   
  -div.sectionEdit { margin-right:5px; margin-top:3px; }
  -div.sectionEdit:hover { background-color:wheat;}
  +div.sectionEdit {
  +  margin-right:5px; margin-top:3px;
  +  visibility:hidden;
  +}
  +
  +div.sectionEdit:hover {
  +  background-color:wheat;
  +  visibility:visible;
  +}
  
  
  
  1.8       +2 -1      moniwiki/css/olive.css
  
  Index: olive.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/olive.css,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- olive.css	20 Sep 2005 12:57:51 -0000	1.7
  +++ olive.css	23 Sep 2005 17:15:11 -0000	1.8
  @@ -1,6 +1,7 @@
  -@import url("_user.css");
  +@import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  +@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.8       +4 -0      moniwiki/css/print.css
  
  Index: print.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/print.css,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- print.css	20 Sep 2005 12:57:51 -0000	1.7
  +++ print.css	23 Sep 2005 17:15:11 -0000	1.8
  @@ -231,6 +231,10 @@
     border-top: 5px solid #c0c0c0;
   }
   
  +.commentForm {
  +  display:none;
  +}
  +
   div.pagebreak {page-break-before: always;}
   div.pagebreak br { display:none;}
   
  
  
  
  1.9       +2 -1      moniwiki/css/redandblack.css
  
  Index: redandblack.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/redandblack.css,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- redandblack.css	20 Sep 2005 12:57:51 -0000	1.8
  +++ redandblack.css	23 Sep 2005 17:15:11 -0000	1.9
  @@ -1,6 +1,7 @@
  -@import url("_user.css");
  +@import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  +@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.8       +2 -1      moniwiki/css/royalblue.css
  
  Index: royalblue.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/royalblue.css,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- royalblue.css	20 Sep 2005 12:57:51 -0000	1.7
  +++ royalblue.css	23 Sep 2005 17:15:11 -0000	1.8
  @@ -1,6 +1,7 @@
  -@import url("_user.css");
  +@import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  +@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.8       +13 -2     moniwiki/css/seagreen.css
  
  Index: seagreen.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/seagreen.css,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- seagreen.css	20 Sep 2005 12:57:51 -0000	1.7
  +++ seagreen.css	23 Sep 2005 17:15:11 -0000	1.8
  @@ -1,6 +1,7 @@
  -@import url("_user.css");
  +@import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  +@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  @@ -163,9 +164,9 @@
   }
   
   #wikiTrailer,#wikiOrigin {
  +  clear:both;
     padding-left: 20px;
     padding-bottom: 5px;
  -  background-color:#3E633B;
     color:white;
   }
   
  @@ -227,6 +228,16 @@
   }
   */
   
  +
  +#wikiMenu a {
  +  color:black !important;
  +}
  +
  +#wikiMenu a:hover {
  +  background-color:white;
  +  color:black;
  +}
  +
   div.indent {
     padding-left:2em;
   }
  
  
  
  1.8       +2 -1      moniwiki/css/sky.css
  
  Index: sky.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/sky.css,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- sky.css	20 Sep 2005 12:57:51 -0000	1.7
  +++ sky.css	23 Sep 2005 17:15:11 -0000	1.8
  @@ -1,6 +1,7 @@
  -@import url("_user.css");
  +@import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  +@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.3       +2 -1      moniwiki/css/slide.css
  
  Index: slide.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/slide.css,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- slide.css	20 Sep 2005 12:57:51 -0000	1.2
  +++ slide.css	23 Sep 2005 17:15:11 -0000	1.3
  @@ -1,6 +1,7 @@
  -@import url("_user.css");
  +@import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  +@import url("_user.css");
   
   body {
     font-family:Bitstream Vera Sans,Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.8       +2 -1      moniwiki/css/white.css
  
  Index: white.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/white.css,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- white.css	20 Sep 2005 12:57:51 -0000	1.7
  +++ white.css	23 Sep 2005 17:15:11 -0000	1.8
  @@ -1,6 +1,7 @@
  -@import url("_user.css");
  +@import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  +@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.6       +11 -40    moniwiki/css/wood.css
  
  Index: wood.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/wood.css,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- wood.css	20 Sep 2005 12:57:51 -0000	1.5
  +++ wood.css	23 Sep 2005 17:15:11 -0000	1.6
  @@ -1,7 +1,8 @@
   /* MoniWiki CSS 2003/11/01 by wkpark */
  -@import url("_user.css");
  +@import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  +@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;font-size:12px;
  @@ -156,6 +157,15 @@
   /* background: #000 url(hr1.gif) no-repeat scroll center; */
   }
   
  +#wikiMenu a {
  +  color:black !important;
  +}
  +
  +#wikiMenu a:hover {
  +  background-color:white;
  +  color:black;
  +}
  +
   #wikiTrailer, #wikiOrigin {
     clear: both;
     padding-left: 20px;
  @@ -176,45 +186,6 @@
     background-color:#af9f87; 
   }
   
  -#wikiMenu {
  -  color: #fff;
  -  padding: 0.2em 0em 0.2em 0.2em;
  -  background-color:#d6c8b6; 
  -}
  -
  -#wikiMenu {
  -  padding: 0.2em 0.2em 0.2em 0.2em;
  -}
  -
  -#wikiMenu ul {
  -  list-style:none;
  -  padding:0;
  -  margin:0;
  -  white-space:nowrap;
  -}
  -
  -#wikiMenu li {
  -  display:inline;
  -  padding-left:5px;
  -  padding-right:5px;
  -  border-right:1px solid #000000;
  -}
  -
  -#wikiAction ul {
  -  list-style:none;
  -  padding:0;
  -  margin:0;
  -  white-space:nowrap;
  -}
  -
  -#wikiAction li {
  -  display:inline;
  -  padding-left:5px;
  -  padding-right:5px;
  -  border-right:1px solid #000000;
  -  float:left;
  -}
  -
   #wikiBanner {
     position:absolute;
     right:35px;
  
  
  
  1.1                  moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  /* MoniWiki base CSS 2005/09/22 by wkpark */
  
  body {
    /* IE hover hack */
    behavior:url("../local/csshover.htc");
  }
  
  #wikiMenu {
    padding: 0;
  }
  
  #wikiMenu ul {
    list-style:none;
    padding:0;
    margin:0;
    margin-left:0;
    padding-bottom:3px !important; /* for FF */
    padding-bottom:2px;
    height:1.7em;
  }
  
  #wikiMenu li {
    list-style: none;
    padding:2px 10px;
    margin:2px 1px;
    background-color:whitesmoke;
  /* the next 4 lines are magic for IE */
    display: block;
    float: left;
    position: relative;
    vertical-align:top;
  }
  
  #wikiMenu li:hover {
    background-color:white;
    color:black;
  }
  
  #wikiMenu a {
    text-decoration:none;
    font-size:small;
  }
  
  #wikiAction ul {
    list-style:none;
    padding:0;
    margin:0;
    white-space:nowrap;
  }
  
  #wikiAction li {
    display:inline;
    padding-left:5px;
    padding-right:5px;
    border-right:1px solid #e0e0e0;
    float:left;
  }
  
  #wikiAction a {
    font-size:small;
  }
  
  #wikiLogin {
    position:absolute;
    right:35px;
    top:11px;
    height:36px;
  }
  
  tt.wiki {font-family:monospace;}
  tt.foot {
    font-family:sans-serif;
    vertical-align: super;
  }
  
  tt.sister {
    font-family:sans-serif;
    vertical-align: super;
    text-decoration: none;
  }
  
  pre.wiki {
    font-family:Courier New,monospace;
  }
  
  pre {
    font-family:Courier New,monospace;
  }
  
  pre.console {
    padding: .25em ;
    border: 2px inset #808080;
  }
  
  pre.quote {
    white-space:pre-wrap;
    white-space: -moz-pre-wrap; 
    font-family:monospace;
  }
  
  table.wiki {
  /*  border: 1px outset #E2ECE5; */
  }
  
  td.wiki {
  /* border: 1px inset #E2ECE5; */
  }
  
  tr.wiki {
    background-color: #E9ECEF;
  }
  
  textarea.wiki { width:100%; }
  
  th.info {
    background-color:#E2ECE2;
  /*  border-collapse: collapse; */
  /*  border: 1px solid silver; */
  }
  
  td.info {
    background-color:#E2ECE2;
  }
  
  h1,h2,h3,h4,h5 {
    font-family:sans-serif;
  }
  
  div.diff-added {
    font-family:Lucida Sans TypeWriter,Lucida Console,monospace;
    background-color:#E0FFE0;
    color:black;
  }
  
  div.diff-removed {
    font-family:Lucida Sans TypeWriter,Lucida Console,monospace;
    background-color:#E9EAB8;
    color:black;
  }
  
  div.diff-sep {
    background-color:#000000;
    color:#FFD700; /* gold */
  }
  
  span.diff-added, ins.diff-added {
    color:black;
    background-color: #60FF60;
    text-decoration: none;
  }
  
  span.diff-removed, del.diff-removed {
    color:black;
    background-color: #FF0000;
  }
  
  div.message {
    margin-top: 6pt;
    background-color: #E8E8E8;
    border-style:solid;
    border-width:1pt;
    border-color:#990000;
    color:#440000;
    padding:0px;
    width:100%;
  }
  
  .highlight {
    background-color:#FFFF40;
  }
  
  table.goto {
    background-color: #002B2C;
  }
  
  span.goto, input.goto {
    font-family:sans-serif;
    font-size:10px;
  }
  
  table.closure, td.closure{
    background-color: #E9ECEF;
  }
  
  /*  */
  .wikiHr {
    border:0px solid;
    padding: 0px 0px; /* */
    margin-top:0px;
    height:1px;  
  /* background: #000 url(hr1.gif) no-repeat scroll center; */
  }
  
  #wikiHeader {
    margin-bottom:5px;
  }
  #wikiHeader a:link {color:black;}
  #wikiHeader a:visited {color:#505050;}
  
  .wikiTitle {
    font-family:Trebuchet MS,Georgia,Verdana,sans-serif;
    font-size:28px;
    font-weight:bold;
    text-decoration: none;
  }
  
  /* HierarchicalWiki */
  div.wikiGroup {
    font-family:Tahoma,Lucida,sans-serif;
    font-size:10px;
  }
  
  #wikiTrailer, #wikiOrigin {
    clear:both;
    padding-left: 20px;
    padding-bottom: 5px;
  }
  
  
  #wikiContent {
    margin: 10px 10px 10px 20px; 
  }
  
  #wikiFooter {
    padding: 0.5em 2em;
  /*  background-color:yellow; */
  }
  
  #wikiHint {
    font-family:Georgia,Verdana,Lucida,sans-serif;
    font-size:10px;
  }
  
  #wikiSister {
  /*  background-color:lightgreen; /* */
  }
  
  #wikiPreview {
    border: 2px solid #a0a0a0;
    margin: 5px 5px 5px 5px;
    padding: 5px 1em 5px 1em;
  }
  
  #wikiIcon {
    visibility:hidden;
    float:right;
    padding: 3px 10px;
    text-align: right;
    vertical-align: middle;
    margin-left: 10px;
  }
  
  #wikiHeader:hover #wikiIcon {
    visibility:visible;
  }
  
  #wikiExtra {
    padding:1em 2em 1em 2em;
  }
  
  div.indent { padding-left:2em; }
  
  div.hint { font-size: 10px; background-color: #369; color:white;}
  a.purple { font-size: 10px; text-decoration:none;}
  
  /* Blog CSS */
  a.purple { font-size: 10px; text-decoration:none;}
  div.blog { width:90%; padding: 0em 1em 0em 1em; }
  div.blog-user { font-size:10px; }
  div.blog-title { font-size:16px; font-weight:bold; }
  div.blog-comments { padding: 1em 1em 1em 2em; border-left: 1px dashed #7B9AC5; background-color:#DFF0FF;}
  
  div.blog-date { font-size:18px; font-weight:bold; padding-bottom:5px;}
  span.blog-user { font-size:10px; }
  
  div.trackback-hint { font-size: 10px; padding: 1em 1em 1em 1em;background-color: #eee;}
  /* Calendar */
  td.day { background:#e5d9c7; text-align: center;}
  td.today { background:#ffffff; text-align: center;}
  
  
  /* enscript syntax */
  div.wikiPre i,div.wikiPre b{
    font-weight: normal;
    font-style: normal;
  }
  
  img.imgLeft {
    margin-right : 15px;
    margin-bottom : 5px;
  }
  
  img.imgRight {
    margin-left : 10px;
    margin-bottom : 5px;
  }
  
  span.externalLink {
    display: none;
  }
  
  .purple a {
      font-family: Verdana, Trebuchet, Arial, Helvetica;
      font-style: normal;
      font-weight: bold;
      font-size: x-small;
      text-decoration: none;
      color: #C8A8FF;  /* light purple */
  }
  
  span.lineNumber {
    color:#ffff00;
  }
  
  .wikiSyntax, .wikiSyntax code{  
    font-family:"Bitstream Vera Sans Mono", Courier New, GulimChe, monospace !important;
    padding:0.5em;
  }
  
  
  .pageNav { margin-bottom:5px;font-size : 75%; }
  .pageNext { float: right; }
  .pagePrev { float: left; }
  
  #wikiResize { float: right; }
  
  #blogCategory ul {
    list-style:none;
    padding-left: 20px;
  }
  
  #blogCategory span.dir {
    display:none;
  }
  
  a.perma:link, a.perma:visited {
    visibility: hidden;
  }
  
  * html .perma:link, a.perma:visited { /* IE hack */
    visibility: visible;
  }
  
  h1:hover a.perma, h2:hover a.perma, h3:hover a.perma {
  
    visibility: visible;
  
  }
  h4:hover a.perma, h5:hover a.perma, h6:hover a.perma {
    visibility: visible;
  }
  
  .rc-date {
   font-size:1.2em;
  }
  .rc-bookmark {
   font-size:11px;
   font-weight:normal;
  }
  
  
  


wkpark      2005/09/24 02:20:20

  Modified:    .        wiki.php
  Log:
  fix for userdifined css class.
  more strick rendering for section handling
  add new line continutation syntax for table etc. "&"
  rename "use_oldstyle" to "css_friendly"
  
  Revision  Changes    Path
  1.254     +62 -32    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.253
  retrieving revision 1.254
  diff -u -r1.253 -r1.254
  --- wiki.php	21 Sep 2005 07:40:36 -0000	1.253
  +++ wiki.php	23 Sep 2005 17:20:20 -0000	1.254
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.253 2005/09/21 07:40:36 wkpark Exp $
  +// $Id: wiki.php,v 1.254 2005/09/23 17:20:20 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.253 $',1,-1);
  +$_revision = substr('$Revision: 1.254 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -559,7 +559,7 @@
       $this->actions= array('DeletePage','LikePages');
       $this->show_hosts= TRUE;
       $this->iconset='moni';
  -    $this->use_oldstyle='1';
  +    $this->css_friendly='0';
       $this->goto_type='';
       $this->goto_form='';
       $this->template_regex='[a-z]Template$';
  @@ -1510,7 +1510,7 @@
                        "<strong>\\1</strong>","<strong>\\1</strong>",
                        "<i>\\1</i>","<i>\\1</i>",
                        "&#96;\\1'","<tt class='wiki'>\\1</tt>",
  -                     "\$this->$DBInfo->hr_type"."_hr('\\1')",
  +                     "\$formatter->$DBInfo->hr_type"."_hr('\\1')",
                        "<sub>\\1</sub>",
                        "<sup>\\1</sup>",
                        "<sup>\\1</sup>",
  @@ -1527,7 +1527,7 @@
       # set smily_rule,_repl
       if ($DBInfo->smileys) {
         $smiley_rule='/(?<=\s|^|>)('.$DBInfo->smiley_rule.')(?=\s|$)/e';
  -      $smiley_repl="\$this->smiley_repl('\\1')";
  +      $smiley_repl="\$formatter->smiley_repl('\\1')";
   
         $this->baserule[]=$smiley_rule;
         $this->baserepl[]=$smiley_repl;
  @@ -2143,12 +2143,6 @@
       if ($this->toc)
         $head="<a href='#toc'>$num</a> $head";
       $perma=" <a class='perma' href='#s$prefix-$num'>$this->perma_icon</a>";
  -    if ($this->section_edit && !$this->preview) {
  -      $this->sect_num++;
  -      $url=$this->link_url($this->page->urlname,
  -        '?action=edit&amp;section='.$this->sect_num);
  -      $edit="<div class='sectionEdit' style='float:right;'>[<a href='$url'>edit</a>]</div>\n";
  -    }
   
       return "$close$open$edit<h$dep><a id='s$prefix-$num' name='s$prefix-$num'></a> $head$perma</h$dep>";
     }
  @@ -2458,6 +2452,7 @@
       $my_div=0;
       $indent_list[0]=0;
       $indent_type[0]="";
  +    $oline='';
   
       $wordrule="({{{(?U)(.+)}}})|".
                 "\[\[([A-Za-z0-9]+(\(((?<!\]\]).)*\))?)\]\]|"; # macro
  @@ -2468,6 +2463,8 @@
       $wordrule.=$this->footrule.'|';
       $wordrule.=$this->wordrule;
   
  +    $formatter=&$this;
  +
       foreach ($lines as $line) {
         # empty line
         if (!strlen($line)) {
  @@ -2500,19 +2497,27 @@
           } else if ($line[2]=='.') {
             $div_enclose='<div class="'.substr($line,3).'">';
             $my_div++;
  -        } else {
  +        } else if ($my_div>0) {
             $div_enclose='</div>';
             $my_div--;
           }
           continue; # comments
         }
  +      $ll=strlen($line);
  +      if ($line[$ll-1]=='&') {
  +        $oline.=substr($line,0,-1)."\n";
  +        continue;
  +      } else {
  +        $line=$oline.$line;
  +        $oline='';
  +      }
   
  -      $p_close='';
  +      $p_closeopen='';
         if (preg_match('/^-{4,}/',$line)) {
           if ($this->auto_linebreak) $this->nobr=1; // XXX
  -        if ($in_p) { $p_close=$this->_div(0,$in_div,$div_enclose); $in_p='';}
  -      } else if ($in_p == '') {
  -        $p_close=$this->_div(1,$in_div,$div_enclose);
  +        if ($in_p) { $p_closeopen=$this->_div(0,$in_div,$div_enclose); $in_p='';}
  +      } else if ($in_p == '' and $line!=='') {
  +        $p_closeopen=$this->_div(1,$in_div,$div_enclose);
           $in_p= $line;
         }
   
  @@ -2640,12 +2645,12 @@
         }
   
         #if (!$in_pre && !$in_table && preg_match("/^\|\|.*\|\|$/",$line)) {
  -      if (!$in_pre && $line[0]=='|' && !$in_table && preg_match("/^((\|\|)+)(&lt;[^>\|]+>)?(.*)\|\|$/",$line,$match)) {
  +      if (!$in_pre && $line[0]=='|' && !$in_table && preg_match("/^((\|\|)+)(&lt;[^>\|]+>)?(.*)\|\|$/s",$line,$match)) {
           $open.=$this->_table(1,$match[3]);
           if (!$match[3]) $line=$match[1].$match[4].'||';
           $in_table=1;
         #} elseif ($in_table && !preg_match("/^\|\|.*\|\|$/",$line)){
  -      } elseif ($in_table && $line[0]!='|' && !preg_match("/^\|\|.*\|\|$/",$line)){
  +      } elseif ($in_table && $line[0]!='|' && !preg_match("/^\|\|.*\|\|$/s",$line)){
            $close=$this->_table(0,$dumm).$close;
            $in_table=0;
         }
  @@ -2656,9 +2661,10 @@
           $row='';
           for ($i=1,$s=sizeof($cells);$i<$s;$i+=2) {
             $align='';$attr='';
  -          preg_match('/^((&lt;[^>]+>)?)(\s?)(.*)(?<!\s)(\s*)?$/',
  +          preg_match('/^((&lt;[^>]+>)?)(\s?)(.*)(?<!\s)(\s*)?$/s',
               $cells[$i+1],$m);
             $cell=$m[3].$m[4].$m[5];
  +          $cell=str_replace("\n","<br />\n",$cell);
             if ($m[3] and $m[5]) $align='align="center"';
             else if (!$m[3]) $align='';
             else if (!$m[5]) $align='align="right"';
  @@ -2675,8 +2681,27 @@
         $line=preg_replace("/(".$wordrule.")/e","\$this->link_repl('\\1')",$line);
   
         # Headings
  -      $line=preg_replace("/(?<!=)(={1,5})\s+(.*)\s+\\1\s?$/e",
  -                         "\$this->head_repl('\\1','\\2')",$line);
  +      if (preg_match("/(?<!=)(={1,5})\s+(.*)\s+\\1\s?$/",$line,$m)) {
  +        $this->sect_num++;
  +        if ($p_closeopen) { // ignore last open
  +          $p_closeopen='';
  +          $this->_div(0,$in_div,$div_enclose);
  +        }
  +
  +        while($in_div > 0)
  +          $p_closeopen.=$this->_div(0,$in_div,$div_enclose);
  +        $p_closeopen.=$this->_div(1,$in_div,$div_enclose);
  +        $in_p='';
  +        if ($this->section_edit && !$this->preview) {
  +          $url=$this->link_url($this->page->urlname,
  +            '?action=edit&amp;section='.$this->sect_num);
  +          $edit="<div class='sectionEdit' style='float:right;'>[<a href='$url'>edit</a>]</div>\n";
  +          $anchor_id='sect-'.$this->sect_num;
  +          $anchor="<a id='$anchor_id' name='$anchor_id'></a>";
  +        }
  +        $line=$anchor.$edit.$this->head_repl($m[1],$m[2]);
  +        $edit='';$anchor='';
  +      }
         #$line=preg_replace("/(?<!=)(={1,5})\s+(.*)\s+(={1,5})\s?$/",
         #                    $this->head_repl("$1","$2","$3"),$line);
   
  @@ -2692,7 +2717,7 @@
         #if ($this->auto_linebreak and preg_match('/<div>$/',$line))
         #  $this->nobr=1;
   
  -      $line=$close.$p_close.$open.$line;
  +      $line=$close.$p_closeopen.$open.$line;
         $open="";$close="";
   
         if ($in_pre==-1) {
  @@ -3124,7 +3149,7 @@
         $args['editable']=-1;
       
       $menus=$this->get_actions($args,$options);
  -    if ($DBInfo->use_oldstyle==1) {
  +    if (!$DBInfo->css_friendly) {
         $menu=$this->menu_bra.implode($this->menu_sep,$menus).$this->menu_cat;
       } else {
         $menu="<div id='wikiAction'>";
  @@ -3173,7 +3198,7 @@
       } else {
         print "<div id='wikiFooter'>";
         print $menu;
  -      if ($DBInfo->use_oldstyle) print $banner;
  +      if (!$DBInfo->css_friendly) print $banner;
         else print "<div id='wikiBanner'>$banner</div>\n";
         print "\n</div>\n";
       }
  @@ -3191,11 +3216,14 @@
   
       # find upper page
       $pos=strrpos($name,"/");
  +    $myname=$name;
       if ($pos > 0) {
         $upper=substr($name,0,$pos);
         $upper_icon=$this->link_tag($upper,'',$this->icon['upper'])." ";
       } else if ($this->group) {
  -      $upper=_urlencode(substr($this->page->name,strlen($this->group)));
  +      $group=$this->group;
  +      $myname=substr($this->page->name,strlen($group));
  +      $upper=_urlencode($myname);
         $upper_icon=$this->link_tag($upper,'',$this->icon['main'])." ";
       }
   
  @@ -3206,10 +3234,8 @@
         $title=htmlspecialchars($title);
       }
       if (!$title) {
  -      if ($this->group) { # for UserNameSpace
  -        $group=$this->group;
  -        $title=substr($this->page->name,strlen($group));
  -        $name=$title;
  +      if ($group) { # for UserNameSpace
  +        $title=$myname;
           $group="<div class='wikiGroup'>".(substr($group,0,-1))." &raquo;</div>";
         } else     
           $title=$this->page->title;
  @@ -3221,7 +3247,7 @@
       if ($link)
         $title="<a href=\"$link\" class='wikiTitle'>$title</a>";
       else if (empty($options['nolink']))
  -      $title=$this->link_to("?action=fullsearch&amp;value="._urlencode($name),$title,"class='wikiTitle'");
  +      $title=$this->link_to("?action=fullsearch&amp;value="._urlencode($myname),$title,"class='wikiTitle'");
       $logo=$this->link_tag($DBInfo->logo_page,'',$DBInfo->logo_string);
       $goto_form=$DBInfo->goto_form ?
         $DBInfo->goto_form : goto_form($action,$DBInfo->goto_type);
  @@ -3257,9 +3283,13 @@
         }
       }
       $this->sister_on=$sister_save;
  -    if ($DBInfo->use_oldstyle) {
  +    if (!$DBInfo->css_friendly) {
         $menu=$this->menu_bra.join($this->menu_sep,$menu).$this->menu_cat;
       } else {
  +      #for ($i=0,$szm=sizeof($menu);$i<$szm;$i++) {
  +      #  #if $menu[$i]==
  +      #  $menu[$i]="<li >".$menu[$i]."</li>\n";
  +      #}
         $menu='<div id="wikiMenu"><ul><li>'.implode("</li>\n<li>",$menu)."</li></ul></div>\n";
       }
   
  @@ -3313,7 +3343,7 @@
         # menu
         print "<div id='wikiHeader'>\n";
         print $header;
  -      if ($DBInfo->use_oldstyle)
  +      if (!$DBInfo->css_friendly)
           print $menu." ".$user_link." ".$upper_icon.$icons.$home.$rss_icon;
         else {
           print "<div id='wikiLogin'>".$user_link."</div>";
  
  
  


wkpark      2005/09/24 02:26:56

  Modified:    plugin   MoniCalendar.php
  Log:
  fix for recent fixes
  
  Revision  Changes    Path
  1.5       +3 -3      moniwiki/plugin/MoniCalendar.php
  
  Index: MoniCalendar.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/MoniCalendar.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- MoniCalendar.php	13 Sep 2005 09:16:49 -0000	1.4
  +++ MoniCalendar.php	23 Sep 2005 17:26:56 -0000	1.5
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Test]]
   //
  -// $Id: MoniCalendar.php,v 1.4 2005/09/13 09:16:49 wkpark Exp $
  +// $Id: MoniCalendar.php,v 1.5 2005/09/23 17:26:56 wkpark Exp $
   
   function _parseDays($formatter,$page,$options=array()) {
       $color_table=
  @@ -315,8 +315,6 @@
               $todo.="</li>\n</ul>\n";
               $todo=preg_replace($formatter->baserule,$formatter->baserepl,$todo);
               $todo=preg_replace('/&lt;([^>]+)>/','<\\1>',$todo);
  -            $todo=preg_replace("/(".$formatter->wordrule.")/e",
  -            "\$formatter->link_repl('\\1')",$todo);
           }
           $dayclasses=$column ? "dayhead":$classes;
   
  @@ -333,6 +331,8 @@
           $weekday++;
       }
       $formatter->sister_on=$save;
  +    $cal=preg_replace("/(".$formatter->wordrule.")/e",
  +        "\$formatter->link_repl('\\1')",$cal);
   
       while ($weekday < 7){
           $cal .= "<td class='day'>&nbsp;</td>";
  
  
  


wkpark      2005/09/24 02:27:25

  Modified:    plugin   UploadForm.php
  Log:
  fix a message
  
  Revision  Changes    Path
  1.3       +2 -2      moniwiki/plugin/UploadForm.php
  
  Index: UploadForm.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadForm.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- UploadForm.php	14 Apr 2005 02:03:40 -0000	1.2
  +++ UploadForm.php	23 Sep 2005 17:27:24 -0000	1.3
  @@ -5,7 +5,7 @@
   //
   // Usage: [[UploadForm]]
   //
  -// $Id: UploadForm.php,v 1.2 2005/04/14 02:03:40 wkpark Exp $
  +// $Id: UploadForm.php,v 1.3 2005/09/23 17:27:24 wkpark Exp $
   
   function macro_UploadForm($formatter,$value) {
       global $DBInfo;
  @@ -29,7 +29,7 @@
       newInput.setAttribute('size', '50');
   
       rmbtn.setAttribute('type','button');
  -    rmbtn.setAttribute('value','remove');
  +    rmbtn.setAttribute('value','x');
       rmbtn.setAttribute('onclick',"delRow(this)");
       rmbtn.onclick=Function("delRow(this)"); // for IE
   
  
  
  


wkpark      2005/09/24 02:27:45

  Modified:    plugin   Comment.php
  Log:
  change id to class
  
  Revision  Changes    Path
  1.18      +2 -2      moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- Comment.php	21 Sep 2005 07:59:32 -0000	1.17
  +++ Comment.php	23 Sep 2005 17:27:45 -0000	1.18
  @@ -6,7 +6,7 @@
   // Usage: [[Comment]], ?action=comment
   //
   //
  -// $Id: Comment.php,v 1.17 2005/09/21 07:59:32 wkpark Exp $
  +// $Id: Comment.php,v 1.18 2005/09/23 17:27:45 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $HTTP_USER_AGENT;
  @@ -62,7 +62,7 @@
   </form>
   FORM2;
   
  -  return '<div id="commentForm">'.$form.'</div>';
  +  return '<div class="commentForm">'.$form.'</div>';
   }
   
   function do_comment($formatter,$options=array()) {
  
  
  


wkpark      2005/10/03 22:52:32

  Modified:    plugin   Info.php
  Log:
  add macro_info()
  
  Revision  Changes    Path
  1.8       +24 -10    moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Info.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Info.php	14 Sep 2005 00:11:26 -0000	1.7
  +++ Info.php	3 Oct 2005 13:52:32 -0000	1.8
  @@ -3,9 +3,9 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Info plugin for the MoniWiki
   //
  -// $Id: Info.php,v 1.7 2005/09/14 00:11:26 wkpark Exp $
  +// $Id: Info.php,v 1.8 2005/10/03 13:52:32 wkpark Exp $
   
  -function _parse_rlog($formatter,$log) {
  +function _parse_rlog($formatter,$log,$options=array()) {
     global $DBInfo;
   
     $user=new User(); # get cookie
  @@ -33,11 +33,18 @@
     $users=array();
    
     #foreach ($lines as $line) {
  +  $count=0;
  +  $showcount=($options['count']>5) ? $options['count']: 10;
     for($line = strtok($log, "\n"); $line !== false; $line = strtok("\n")) {
       if (!$state) {
         if (!preg_match("/^---/",$line)) { continue;}
         else {$state=1; continue;}
       }
  +    if ($state==1 and $ok==1) {
  +      $lnk=$formatter->link_to("?action=info&all=1",_("Show all revisions"));
  +      $out.='<tr><td colspan="3"></td><th colspan="3">'.$lnk.'</th></tr>';
  +      break;
  +    }
       
       switch($state) {
         case 1:
  @@ -109,6 +116,8 @@
               $out.="<tr><td class='info' colspan='5'>$comment&nbsp;</td></tr>\n";
            $state=1;
            $flag++;
  +         $count++;
  +         if ($options['all']!=1 and $count >=$showcount) $ok=1;
            break;
        }
     }
  @@ -122,12 +131,8 @@
     return $out; 
   }
   
  -
  -function do_info($formatter,$options) {
  +function macro_info($formatter,$value,$options=array()) {
     global $DBInfo;
  -  $formatter->send_header("",$options);
  -  $formatter->send_title(sprintf(_("Info. for %s"),$options['page']),"",$options);
  -
     if ($DBInfo->version_class) {
       getModule('Version',$DBInfo->version_class);
       $class="Version_".$DBInfo->version_class;
  @@ -136,15 +141,24 @@
   
       if (!$out) {
         $msg=_("No older revisions available");
  -      print "<h2>$msg</h2>";
  +      $info= "<h2>$msg</h2>";
       } else {
  -      print _parse_rlog($formatter,$out);
  +      $info= _parse_rlog($formatter,$out,$options);
       }
     } else {
       $msg=_("Version info is not available in this wiki");
  -    print "<h2>$msg</h2>";
  +    $info= "<h2>$msg</h2>";
     }
  +  return $info;
  +}
  +
  +
  +function do_info($formatter,$options) {
  +  global $DBInfo;
  +  $formatter->send_header("",$options);
  +  $formatter->send_title(sprintf(_("Info. for %s"),$options['page']),"",$options);
   
  +  print macro_info($formatter,'',$options);
     $formatter->send_footer($args,$options);
   }
   
  
  
  


wkpark      2005/10/03 22:53:31

  Added:       local    md5.js
  Log:
  add new md5.js for advanced login system
  
  Revision  Changes    Path
  1.1                  moniwiki/local/md5.js
  
  Index: md5.js
  ===================================================================
  /*
   * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
   * Digest Algorithm, as defined in RFC 1321.
   * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
   * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
   * Distributed under the BSD License
   * See http://pajhome.org.uk/crypt/md5 for more info.
   */
  
  /*
   * Configurable variables. You may need to tweak these to be compatible with
   * the server-side, but the defaults work in most cases.
   */
  var hexcase = 0;  /* hex output format. 0 - lowercase; 1 - uppercase        */
  var b64pad  = ""; /* base-64 pad character. "=" for strict RFC compliance   */
  var chrsz   = 8;  /* bits per input character. 8 - ASCII; 16 - Unicode      */
  
  /*
   * These are the functions you'll usually want to call
   * They take string arguments and return either hex or base-64 encoded strings
   */
  function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}
  function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));}
  function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * chrsz));}
  function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); }
  function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); }
  function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); }
  
  /*
   * Perform a simple self-test to see if the VM is working
   */
  function md5_vm_test()
  {
    return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";
  }
  
  /*
   * Calculate the MD5 of an array of little-endian words, and a bit length
   */
  function core_md5(x, len)
  {
    /* append padding */
    x[len >> 5] |= 0x80 << ((len) % 32);
    x[(((len + 64) >>> 9) << 4) + 14] = len;
  
    var a =  1732584193;
    var b = -271733879;
    var c = -1732584194;
    var d =  271733878;
  
    for(var i = 0; i < x.length; i += 16)
    {
      var olda = a;
      var oldb = b;
      var oldc = c;
      var oldd = d;
  
      a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
      d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
      c = md5_ff(c, d, a, b, x[i+ 2], 17,  606105819);
      b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
      a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
      d = md5_ff(d, a, b, c, x[i+ 5], 12,  1200080426);
      c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
      b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
      a = md5_ff(a, b, c, d, x[i+ 8], 7 ,  1770035416);
      d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
      c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
      b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
      a = md5_ff(a, b, c, d, x[i+12], 7 ,  1804603682);
      d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
      c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
      b = md5_ff(b, c, d, a, x[i+15], 22,  1236535329);
  
      a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
      d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
      c = md5_gg(c, d, a, b, x[i+11], 14,  643717713);
      b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
      a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
      d = md5_gg(d, a, b, c, x[i+10], 9 ,  38016083);
      c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
      b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
      a = md5_gg(a, b, c, d, x[i+ 9], 5 ,  568446438);
      d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
      c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
      b = md5_gg(b, c, d, a, x[i+ 8], 20,  1163531501);
      a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
      d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
      c = md5_gg(c, d, a, b, x[i+ 7], 14,  1735328473);
      b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
  
      a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
      d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
      c = md5_hh(c, d, a, b, x[i+11], 16,  1839030562);
      b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
      a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
      d = md5_hh(d, a, b, c, x[i+ 4], 11,  1272893353);
      c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
      b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
      a = md5_hh(a, b, c, d, x[i+13], 4 ,  681279174);
      d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
      c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
      b = md5_hh(b, c, d, a, x[i+ 6], 23,  76029189);
      a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
      d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
      c = md5_hh(c, d, a, b, x[i+15], 16,  530742520);
      b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
  
      a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
      d = md5_ii(d, a, b, c, x[i+ 7], 10,  1126891415);
      c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
      b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
      a = md5_ii(a, b, c, d, x[i+12], 6 ,  1700485571);
      d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
      c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
      b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
      a = md5_ii(a, b, c, d, x[i+ 8], 6 ,  1873313359);
      d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
      c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
      b = md5_ii(b, c, d, a, x[i+13], 21,  1309151649);
      a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
      d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
      c = md5_ii(c, d, a, b, x[i+ 2], 15,  718787259);
      b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
  
      a = safe_add(a, olda);
      b = safe_add(b, oldb);
      c = safe_add(c, oldc);
      d = safe_add(d, oldd);
    }
    return Array(a, b, c, d);
  
  }
  
  /*
   * These functions implement the four basic operations the algorithm uses.
   */
  function md5_cmn(q, a, b, x, s, t)
  {
    return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
  }
  function md5_ff(a, b, c, d, x, s, t)
  {
    return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
  }
  function md5_gg(a, b, c, d, x, s, t)
  {
    return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
  }
  function md5_hh(a, b, c, d, x, s, t)
  {
    return md5_cmn(b ^ c ^ d, a, b, x, s, t);
  }
  function md5_ii(a, b, c, d, x, s, t)
  {
    return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
  }
  
  /*
   * Calculate the HMAC-MD5, of a key and some data
   */
  function core_hmac_md5(key, data)
  {
    var bkey = str2binl(key);
    if(bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz);
  
    var ipad = Array(16), opad = Array(16);
    for(var i = 0; i < 16; i++)
    {
      ipad[i] = bkey[i] ^ 0x36363636;
      opad[i] = bkey[i] ^ 0x5C5C5C5C;
    }
  
    var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);
    return core_md5(opad.concat(hash), 512 + 128);
  }
  
  /*
   * Add integers, wrapping at 2^32. This uses 16-bit operations internally
   * to work around bugs in some JS interpreters.
   */
  function safe_add(x, y)
  {
    var lsw = (x & 0xFFFF) + (y & 0xFFFF);
    var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
    return (msw << 16) | (lsw & 0xFFFF);
  }
  
  /*
   * Bitwise rotate a 32-bit number to the left.
   */
  function bit_rol(num, cnt)
  {
    return (num << cnt) | (num >>> (32 - cnt));
  }
  
  /*
   * Convert a string to an array of little-endian words
   * If chrsz is ASCII, characters >255 have their hi-byte silently ignored.
   */
  function str2binl(str)
  {
    var bin = Array();
    var mask = (1 << chrsz) - 1;
    for(var i = 0; i < str.length * chrsz; i += chrsz)
      bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32);
    return bin;
  }
  
  /*
   * Convert an array of little-endian words to a string
   */
  function binl2str(bin)
  {
    var str = "";
    var mask = (1 << chrsz) - 1;
    for(var i = 0; i < bin.length * 32; i += chrsz)
      str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask);
    return str;
  }
  
  /*
   * Convert an array of little-endian words to a hex string.
   */
  function binl2hex(binarray)
  {
    var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
    var str = "";
    for(var i = 0; i < binarray.length * 4; i++)
    {
      str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
             hex_tab.charAt((binarray[i>>2] >> ((i%4)*8  )) & 0xF);
    }
    return str;
  }
  
  /*
   * Convert an array of little-endian words to a base-64 string
   */
  function binl2b64(binarray)
  {
    var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
    var str = "";
    for(var i = 0; i < binarray.length * 4; i += 3)
    {
      var triplet = (((binarray[i   >> 2] >> 8 * ( i   %4)) & 0xFF) << 16)
                  | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 )
                  |  ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF);
      for(var j = 0; j < 4; j++)
      {
        if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;
        else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
      }
    }
    return str;
  }
  
  
  


iolo        2005/10/09 14:52:52

  Modified:    plugin   rss_blog.php rdf_blog.php
  Log:
  quick and dirty fix.
  i don't know what changes make this bug.
  to wkpark: plz fix this correctly.
  
  Revision  Changes    Path
  1.22      +2 -3      moniwiki/plugin/rss_blog.php
  
  Index: rss_blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rss_blog.php,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- rss_blog.php	4 Oct 2004 04:37:26 -0000	1.21
  +++ rss_blog.php	9 Oct 2005 05:52:52 -0000	1.22
  @@ -4,10 +4,9 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a rss_blog action plugin for the MoniWiki
   //
  -// $Id: rss_blog.php,v 1.21 2004/10/04 04:37:26 wkpark Exp $
  +// $Id: rss_blog.php,v 1.22 2005/10/09 05:52:52 iolo Exp $
   
  -if (!function_exists('macro_BlogChanges'))
  -  if ($plugin=getPlugin('BlogChanges')) include_once("plugin/$plugin.php");
  +include_once("plugin/BlogChanges.php");
   
   function do_rss_blog($formatter,$options) {
     global $DBInfo;
  
  
  
  1.2       +2 -3      moniwiki/plugin/rdf_blog.php
  
  Index: rdf_blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rdf_blog.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- rdf_blog.php	24 Oct 2003 00:41:56 -0000	1.1
  +++ rdf_blog.php	9 Oct 2005 05:52:52 -0000	1.2
  @@ -4,10 +4,9 @@
   // a rdf_blog action plugin for the MoniWiki
   //
   // from Id: rss_blog.php,v 1.11 2003/10/17 03:51:26 wkpark Exp
  -// $Id: rdf_blog.php,v 1.1 2003/10/24 00:41:56 wkpark Exp $
  +// $Id: rdf_blog.php,v 1.2 2005/10/09 05:52:52 iolo Exp $
   
  -if (!function_exists('macro_BlogChanges'))
  -  if ($plugin=getPlugin('BlogChanges')) include_once("plugin/$plugin.php");
  +include_once("plugin/BlogChanges.php");
   
   function do_rdf_blog($formatter,$options) {
     global $DBInfo;
  
  
  


wkpark      2005/10/10 18:51:28

  Modified:    data     metaparse.py
  Log:
  support TWikis
  
  Revision  Changes    Path
  1.7       +3 -1      moniwiki/data/metaparse.py
  
  Index: metaparse.py
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/data/metaparse.py,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- metaparse.py	10 Jan 2005 23:16:56 -0000	1.6
  +++ metaparse.py	10 Oct 2005 09:51:27 -0000	1.7
  @@ -1,5 +1,5 @@
   #!/usr/bin/python
  -# $Id: metaparse.py,v 1.6 2005/01/10 23:16:56 wkpark Exp $
  +# $Id: metaparse.py,v 1.7 2005/10/10 09:51:27 wkpark Exp $
   # python version metaparse.py by wkpark@kldp.org
   
   import string,os,sys,re,urllib
  @@ -67,6 +67,8 @@
           ("AllPages", NO_CUT_REGEX, 'class="wiki">(.*?)<'),
         "tavi":
           ("action=find", "<div id=\"body\">(.*?)</div>", '\?page=([^"]+)"'),
  +      "TWiki":
  +        ("?topic=WebIndex",NO_CUT_REGEX,TWIKI_MATCH_REGEX),
         "PediaIndex":
           ("Special:Allpages",
            '^<table>(.*)</table>',
  
  
  


wkpark      2005/10/13 22:00:19

  Modified:    .        wikilib.php
  Log:
  add safelogin feature & experimenta ajax_edit()
  fixed a EditTextForm bug reported by kz
  
  Revision  Changes    Path
  1.179     +111 -21   moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.178
  retrieving revision 1.179
  diff -u -r1.178 -r1.179
  --- wikilib.php	21 Sep 2005 07:42:37 -0000	1.178
  +++ wikilib.php	13 Oct 2005 13:00:19 -0000	1.179
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.178 2005/09/21 07:42:37 wkpark Exp $
  +// $Id: wikilib.php,v 1.179 2005/10/13 13:00:19 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -164,6 +164,35 @@
     return preg_replace("/((?<=[a-z0-9]|[B-Z]{2})([A-Z][a-z]))/"," \\1",$title);
   }
   
  +// from php.net
  +//
  +// It seems that the best solution would be to use HMAC-MD5.
  +// An implementation of HMAC-SHA1 was posted by mark on 30-Jan-2004 02:28
  +// as a user comment to sha1() function
  +// (-> http://php.net/manual/function.sha1.php#39492).
  +// Here's how it would look like
  +// (some other optimizations/modifications are included as well):
  +// Calculate HMAC according to RFC2104
  +// http://www.ietf.org/rfc/rfc2104.txt
  +//
  +function hmac($key, $data, $hash = 'md5', $blocksize = 64) {
  +  if (strlen($key)>$blocksize) {
  +   $key = pack('H*', $hash($key));
  +  }
  +  $key  = str_pad($key, $blocksize, chr(0));
  +  $ipad = str_repeat(chr(0x36), $blocksize);
  +  $opad = str_repeat(chr(0x5c), $blocksize);
  +  return $hash(($key^$opad) . pack('H*', $hash(($key^$ipad) . $data)));
  +}
  +
  +// Remember to initialize MT (using mt_srand() ) if required
  +function pw_encode($password) {
  +  $seed = substr('00' . dechex(mt_rand()), -3) .
  +   substr('00' . dechex(mt_rand()), -3) .
  +   substr('0' . dechex(mt_rand()), -2);
  +  return hmac($seed, $password, 'md5', 64) . $seed;
  +}
  +
   function getTicket($seed,$extra='',$size=0,$flag=0) {
     global $DBInfo;
     # make the site specific ticket based on the variables in the config.php
  @@ -382,11 +411,15 @@
        return "Set-Cookie: MONI_ID=".$this->id."; expires=Tuesday, 01-Jan-1999 12:00:00 GMT; Path=".get_scriptname();
     }
   
  -  function setPasswd($passwd,$passwd2="") {
  +  function setPasswd($passwd,$passwd2="",$rawmode=0) {
        if (!$passwd2) $passwd2=$passwd;
        $ret=$this->validPasswd($passwd,$passwd2);
  -     if ($ret > 0)
  -        $this->info['password']=crypt($passwd);
  +     if ($ret > 0) {
  +        if ($rawmode)
  +           $this->info['password']=$passwd;
  +        else
  +           $this->info['password']=crypt($passwd);
  +     }
   #     else
   #        $this->info[password]="";
        return $ret;
  @@ -474,14 +507,14 @@
   
   function macro_EditText($formatter,$value,$options='') {
     global $DBInfo;
  -  if ($DBInfo->hasPage('EditTextForm')) {
  +  if (!$options['simple'] and $DBInfo->hasPage('EditTextForm')) {
       $p=$DBInfo->getPage('EditTextForm');
       $form=$p->get_raw_body();
       $f=new Formatter($p);
   
       $form=preg_replace('/\[\[EditText\]\]/i','#editform',$form);
       ob_start();
  -    $f->send_page(rtrim($form),$options);
  +    $formatter->send_page(rtrim($form),$options);
       $form= ob_get_contents();
       ob_end_clean();
   
  @@ -510,6 +543,25 @@
     $formatter->send_footer($args,$options);
   }
   
  +function ajax_edit($formatter,$options) {
  +  global $DBInfo;
  +  if (!$DBInfo->security->writable($options)) {
  +    $formatter->preview=0;
  +    ajax_invalid($formatter,$options);
  +    return;
  +  }
  +  if ($options['section'])
  +    $sec=' (Section)';
  +  $options['simple']=1;
  +  $options['nohints']=1;
  +  $options['nomenu']=1;
  +  $options['nocategories']=1;
  +  $options['noresizer']=1;
  +  $options['rows']=12;
  +  $formatter->header('Content-type:text/html;charset='.$DBInfo->charset);
  +  print macro_EditText($formatter,$value,$options);
  +}
  +
   function _get_sections($body,$lim=5) {
     $chunks=preg_split("/(\{\{\{.+?\}\}\})/s",$body,-1, PREG_SPLIT_DELIM_CAPTURE);
     $sects=array();
  @@ -586,7 +638,8 @@
               '" />';
   
     # make a edit form
  -  $form.= "<a id='editor' name='editor' />\n";
  +  if (!$options['simple'])
  +    $form.= "<a id='editor' name='editor' />\n";
   
     if ($options['page'])
       $previewurl=$formatter->link_url(_rawurlencode($options['page']),'#preview');
  @@ -596,7 +649,7 @@
     $menu= '';
     if ($preview)
       $menu= $formatter->link_to('#preview',_("Skip to preview"));
  -  else {
  +  else if (!$options['noresizer']) {
       $menu= $formatter->link_to("?action=edit&amp;rows=".($rows-3),_("ReduceEditor"));
       $menu.= ' | '.$formatter->link_to("?action=edit&amp;rows=".($rows+3),_("EnlargeEditor"));
     }
  @@ -607,7 +660,11 @@
     }
   
     $form.=$menu;
  -  $form.= sprintf('<form name="editform" method="post" action="%s">', $previewurl);
  +  if ($options['action_mode']=='ajax' and $DBInfo->use_ajax) {
  +    $ajax=" onsubmit='savePage(this);return false'";
  +  }
  +  $form.= sprintf('<form name="editform" method="post" action="%s"'.$ajax.'>',
  +    $previewurl);
     if ($text) {
       $raw_body = preg_replace("/\r\n|\r/", "\n", $text);
     } else if ($formatter->page->exists()) {
  @@ -639,6 +696,7 @@
     $raw_body = str_replace(array("&","<"),array("&amp;","&lt;"),$raw_body);
   
     # get categories
  +  if (!$options['nocategories']) {
     $categories=array();
     $categories= $DBInfo->getLikePages($DBInfo->category_regex);
     if ($categories) {
  @@ -654,8 +712,12 @@
         $extra_check=' '._('Minor edit')."<input type='checkbox' tabindex='3' name='minor' />";
       }
     }
  +  }
   
  -  $preview_msg=_("Preview");
  +  if (!$options['simple']) {
  +    $preview_btn='<input type="submit" tabindex="6" name="button_preview" '.
  +      'value="'._("Preview").'" />';
  +  }
     $save_msg=_("Save");
     $summary_msg=_("Summary of Change");
     if ($DBInfo->use_resizer) {
  @@ -688,13 +750,14 @@
   $hidden$select_category
   <input type="submit" tabindex="5" value="$save_msg" />&nbsp;
   <!-- <input type="reset" value="Reset" />&nbsp; -->
  -<input type="submit" tabindex="6" name="button_preview" value="$preview_msg" />
  +$preview_btn
   $extra
   </form>
   EOS;
     if (!$options['nohints'])
       $form.= macro_EditHints($formatter);
  -  $form.= "<a id='preview' name='preview'></a>";
  +  if (!$options['simple'])
  +    $form.= "<a id='preview' name='preview'></a>";
     return $form;
   }
   
  @@ -1421,8 +1484,22 @@
       $udb=new UserDB($DBInfo);
       $udb->checkUser($user);
     }
  -  $url=$formatter->link_url("UserPreferences");
   
  +  $jscript='';
  +  if ($DBInfo->use_safelogin) {
  +    $onsubmit=' onsubmit="javascript:password.value=hex_hmac_md5(challenge.value, hex_md5(password.value))"';
  +    $jscript.="<script src='$DBInfo->url_prefix/local/md5.js'></script>";
  +    $time_seed=time();
  +    $chall=md5(base64_encode(getTicket($time_seed,$_SERVER['REMOTE_ADDR'],10)));
  +    $passwd_hidden="<input type='hidden' name='_seed' value='$time_seed' />";
  +    $passwd_hidden.="<input type='hidden' name='challenge' value='$chall' />\n";
  +    $pw_length=32;
  +  } else {
  +    $pw_length=20;
  +  }
  +
  +  $passwd_btn=_("Password");
  +  $url=$formatter->link_url("UserPreferences");
     # setup form
     if ($user->id == 'Anonymous') {
       if ($options['login_id'])
  @@ -1435,13 +1512,14 @@
     $button=_("Login");
     if ($user->id == 'Anonymous' and !isset($options['login_id']) and $value!="simple")
       $login=<<<FORM
  -<form method="post" action="$url">
  +<form method="post" action="$url"$onsubmit>
   <input type="hidden" name="action" value="userform" />
   <table border="0">
     <tr><td><b>ID</b>&nbsp;</td><td>$idform</td></tr>
     <tr>
  -     <td><b>Password</b>&nbsp;</td><td><input type="password" size="15" maxlength="12" name="password" value="" />
  +     <td><b>$passwd_btn</b>&nbsp;</td><td><input type="password" size="15" maxlength="$pw_len" name="password" value="" />
     <tr><td></td><td>
  +    $passwd_hidden
       <input type="submit" name="login" value="$button" /> &nbsp;
     </td></tr>
   </table>
  @@ -1452,7 +1530,9 @@
       if (isset($options['login_id']) or $_GET['join'] or $value!="simple") {
         $passwd=$options['password'];
         $button=_("Make profile");
  -      $again="<b>"._("password again")."</b>&nbsp;<input type='password' size='15' maxlength='12' name='passwordagain' value='' /></td></tr>";
  +      if (!$DBInfo->use_safelogin) {
  +        $again="<b>"._("password again")."</b>&nbsp;<input type='password' size='15' maxlength='$pw_len' name='passwordagain' value='' /></td></tr>";
  +      }
         $mailbtn=_("Mail");
         $extra=<<<EXTRA
     <tr><td><b>$mailbtn</b>&nbsp;</td><td><input type="text" size="40" name="email" value="$email" /></td></tr>
  @@ -1473,7 +1553,7 @@
       $css=$user->info['css_url'];
       $email=$user->info['email'];
       $tz_offset=$user->info['tz_offset'];
  -    $again="<b>"._("New password")."</b>&nbsp;<input type='password' size='15' maxlength='12' name='passwordagain' value='' /></td></tr>";
  +    $again="<b>"._("New password")."</b>&nbsp;<input type='password' size='15' maxlength='$pw_len' name='passwordagain' value='' /></td></tr>";
   
       $tz_off=date('Z');
       for ($i=-47;$i<=47;$i++) {
  @@ -1490,7 +1570,7 @@
         $opts.="<option value='$z'$selected>$tz [$z]</option>\n";
       }
   
  -    $jscript="<script src='$DBInfo->url_prefix/local/tz.js'></script>";
  +    $jscript.="<script src='$DBInfo->url_prefix/local/tz.js'></script>";
       $extra=<<<EXTRA
     <tr><td><b>Mail</b>&nbsp;</td><td><input type="text" size="40" name="email" value="$email" /></td></tr>
     <tr><td><b>Time Zone</b>&nbsp;</td><td><select name="timezone">
  @@ -1509,15 +1589,25 @@
   </script>
   EOF;
   
  +  if (!$DBInfo->use_safelogin or $button==_("Save")) {
  +    $passwd_inp=<<<PASS
  +  <tr>
  +     <td><b>$passwd_btn</b>&nbsp;</td><td><input type="password" size="15" maxlength="$pw_len" name="password" value="$passwd" />
  +PASS;
  +
  +  } else {
  +    $onsubmit='';
  +    $passwd_hidden='';
  +  }
     return <<<EOF
   $login
   $jscript
  -<form method="post" action="$url">
  +<form method="post" action="$url"$onsubmit>
   <input type="hidden" name="action" value="userform" />
   <table border="0">
     <tr><td><b>ID</b>&nbsp;</td><td>$idform</td></tr>
  -  <tr>
  -     <td><b>Password</b>&nbsp;</td><td><input type="password" size="15" maxlength="12" name="password" value="$passwd" />
  +    $passwd_inp
  +    $passwd_hidden
       $again
       $extra
     <tr><td></td><td>
  
  
  


wkpark      2005/10/13 22:03:17

  Modified:    .        wiki.php
  Log:
  add experimental ajax_edit() freature
  refactoring diff action
  fixed table rendering bug
  
  Revision  Changes    Path
  1.255     +17 -63    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.254
  retrieving revision 1.255
  diff -u -r1.254 -r1.255
  --- wiki.php	23 Sep 2005 17:20:20 -0000	1.254
  +++ wiki.php	13 Oct 2005 13:03:16 -0000	1.255
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.254 2005/09/23 17:20:20 wkpark Exp $
  +// $Id: wiki.php,v 1.255 2005/10/13 13:03:16 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.254 $',1,-1);
  +$_revision = substr('$Revision: 1.255 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -1731,6 +1731,7 @@
     }
   
     function link_repl($url,$attr='') {
  +    #if ($url[0]=='<') { print $url;return $url;}
       $url=str_replace('\"','"',$url);
       if ($url[0]=="[") {
         $url=substr($url,1,-1);
  @@ -2317,7 +2318,7 @@
       if (preg_match("/^\|(\d+)$/",$para,$match))
         $attr[]="rowspan='$match[1]'";
       else if ($para[0]=='#')
  -      $attr[]="bgcolor='$para'";
  +      $attr[]="bgcolor='".strtolower($para)."'";
       else
         $attr[]=$para;
       return implode(' ',$attr).' ';
  @@ -2332,6 +2333,7 @@
         $tattr=substr($tattr,5);
         $attr='';
       } else {
  +      if ($tattr=='') $attr='';
         $tattr='';
       }
       return "<table class='wiki' cellpadding='3' cellspacing='2' $tattr>\n";
  @@ -2591,6 +2593,7 @@
         $line=$nc;
         #$line=preg_replace($this->baserule,$this->baserepl,$line);
         #if ($in_p and ($in_pre==1 or $in_li)) $line=$this->_check_p().$line;
  +      $line=preg_replace('/(&lt;)(\/)?(ins|del)/','<\\2\\3',$nc);
   
         # bullet and indentation
         if ($in_pre != -1 && preg_match("/^(\s*)/",$line,$match)) {
  @@ -2645,7 +2648,7 @@
         }
   
         #if (!$in_pre && !$in_table && preg_match("/^\|\|.*\|\|$/",$line)) {
  -      if (!$in_pre && $line[0]=='|' && !$in_table && preg_match("/^((\|\|)+)(&lt;[^>\|]+>)?(.*)\|\|$/s",$line,$match)) {
  +      if (!$in_pre && $line[0]=='|' && !$in_table && preg_match("/^((\|\|)+)(&lt;[^>\|]*>)?(.*)\|\|$/s",$line,$match)) {
           $open.=$this->_table(1,$match[3]);
           if (!$match[3]) $line=$match[1].$match[4].'||';
           $in_table=1;
  @@ -2693,9 +2696,14 @@
           $p_closeopen.=$this->_div(1,$in_div,$div_enclose);
           $in_p='';
           if ($this->section_edit && !$this->preview) {
  +          $act='edit';
  +          if ($DBInfo->use_ajax) {
  +            $onclick=' Onclick="javascript:sectionEdit(null,this,'.
  +              $this->sect_num.');return false;"';
  +          }
             $url=$this->link_url($this->page->urlname,
  -            '?action=edit&amp;section='.$this->sect_num);
  -          $edit="<div class='sectionEdit' style='float:right;'>[<a href='$url'>edit</a>]</div>\n";
  +            '?action='.$act.'&amp;section='.$this->sect_num);
  +          $edit="<div class='sectionEdit' style='float:right;'>[<a href='$url'$onclick>edit</a>]</div>\n";
             $anchor_id='sect-'.$this->sect_num;
             $anchor="<a id='$anchor_id' name='$anchor_id'></a>";
           }
  @@ -2817,63 +2825,6 @@
       if ($options['pagelinks']) $this->store_pagelinks();
     }
   
  -  function simple_diff($diff) {
  -    $diff=str_replace("<","&lt;",$diff);
  -    $out="";
  -    //unset($lines[0]); unset($lines[1]); // XXX
  -
  -    for ($line=strtok($diff,"\n"); $line !== false;$line=strtok("\n")) {
  -      $marker=$line[0];
  -      $line=substr($line,1);
  -      if ($marker=="@") $line='<div class="diff-sep">@'."$line</div>";
  -      else if ($marker=="-") $line='<div class="diff-removed">'."$line</div>";
  -      else if ($marker=="+") $line='<div class="diff-added">'."$line</div>";
  -      else if ($marker=="\\" && $line==" No newline at end of file") continue;
  -      else $line.="<br />";
  -      $out.=$line."\n";
  -    }
  -    return $out;
  -  }
  -
  -  function fancy_diff($diff) {
  -    global $DBInfo;
  -    include_once("lib/difflib.php");
  -    $diff=str_replace("<","&lt;",$diff);
  -    $lines=explode("\n",$diff);
  -    $out="";
  -    #unset($lines[0]); unset($lines[1]);
  -
  -    $omarker=0;
  -    $orig=array();$new=array();
  -    foreach ($lines as $line) {
  -      $marker=$line[0];
  -      $line=substr($line,1);
  -      if ($marker=="@") $line='<div class="diff-sep">@'."$line</div>";
  -      else if ($marker=="-") {
  -        $omarker=1; $orig[]=$line; continue;
  -      }
  -      else if ($marker=="+") {
  -        $omarker=1; $new[]=$line; continue;
  -      }
  -      else if ($omarker) {
  -        $omarker=0;
  -        $buf="";
  -        $result = new WordLevelDiff($orig, $new, $DBInfo->charset);
  -        foreach ($result->orig() as $ll)
  -          $buf.= "<div class=\"diff-removed\">$ll</div>\n";
  -        foreach ($result->_final() as $ll)
  -          $buf.= "<div class=\"diff-added\">$ll</div>\n";
  -        $orig=array();$new=array();
  -        $line=$buf.$line."<br />";
  -      }
  -      else if ($marker==" " and !$omarker)
  -        $line.="<br />";
  -      else if ($marker=="\\" && $line==" No newline at end of file") continue;
  -      $out.=$line."\n";
  -    }
  -    return $out;
  -  }
  -
     function get_merge($text,$rev="") {
       global $DBInfo;
   
  @@ -3595,6 +3546,9 @@
         break;
       }
     }
  +  if ($DBInfo->set_lang) putenv("LANG=".$lang);
  +  if (function_exists('bind_textdomain_codeset'))
  +    bind_textdomain_codeset ('moniwiki', $DBInfo->charset);
   }
   
   $pagename=get_pagename();
  
  
  


wkpark      2005/10/13 22:05:23

  Modified:    plugin   Diff.php
  Log:
  add experimental smart_diff() and refactoring
  
  Revision  Changes    Path
  1.5       +135 -10   moniwiki/plugin/Diff.php
  
  Index: Diff.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Diff.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Diff.php	29 Aug 2005 13:31:45 -0000	1.4
  +++ Diff.php	13 Oct 2005 13:05:23 -0000	1.5
  @@ -3,7 +3,110 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a diff plugin for the MoniWiki
   //
  -// $Id: Diff.php,v 1.4 2005/08/29 13:31:45 wkpark Exp $
  +// $Id: Diff.php,v 1.5 2005/10/13 13:05:23 wkpark Exp $
  +
  +function simple_diff($diff) {
  +  $diff=str_replace("<","&lt;",$diff);
  +  $out="";
  +  //unset($lines[0]); unset($lines[1]); // XXX
  +
  +  for ($line=strtok($diff,"\n"); $line !== false;$line=strtok("\n")) {
  +    $marker=$line[0];
  +    $line=substr($line,1);
  +    if ($marker=="@") $line='<div class="diff-sep">@'."$line</div>";
  +    else if ($marker=="-") $line='<div class="diff-removed">'."$line</div>";
  +    else if ($marker=="+") $line='<div class="diff-added">'."$line</div>";
  +    else if ($marker=="\\" && $line==" No newline at end of file") continue;
  +    else $line.="<br />";
  +    $out.=$line."\n";
  +  }
  +  return $out;
  +}
  +
  +function fancy_diff($diff,$options=array()) {
  +  global $DBInfo;
  +  include_once("lib/difflib.php");
  +  $diff=str_replace("<","&lt;",$diff);
  +  $lines=explode("\n",$diff);
  +  $out="";
  +  #unset($lines[0]); unset($lines[1]);
  +
  +  $omarker=0;
  +  $orig=array();$new=array();
  +  foreach ($lines as $line) {
  +    $marker=$line[0];
  +    $line=substr($line,1);
  +    if ($marker=="@") $line='<div class="diff-sep">@'."$line</div>";
  +    else if ($marker=="-") {
  +      $omarker=1; $orig[]=$line; continue;
  +    }
  +    else if ($marker=="+") {
  +      $omarker=1; $new[]=$line; continue;
  +    }
  +    else if ($omarker) {
  +      $omarker=0;
  +      $buf="";
  +      $result = new WordLevelDiff($orig, $new, $DBInfo->charset);
  +      if ($options['oldstyle']) {
  +        foreach ($result->orig() as $ll)
  +          $buf.= "<div class=\"diff-removed\">$ll</div>\n";
  +        foreach ($result->_final() as $ll)
  +          $buf.= "<div class=\"diff-added\">$ll</div>\n";
  +      } else {
  +        foreach ($result->all() as $ll)
  +          $buf.= "<div class=\"diff\">$ll</div>\n";
  +      }
  +      $orig=array();$new=array();
  +      $line=$buf.$line."<br />";
  +    }
  +    else if ($marker==" " and !$omarker)
  +      $line.="<br />";
  +    else if ($marker=="\\" && $line==" No newline at end of file") continue;
  +    $out.=$line."\n";
  +  }
  +  return $out;
  +}
  +
  +function smart_diff($diff) {
  +  global $DBInfo;
  +  include_once("lib/difflib.php");
  +  $diff=str_replace("<","&lt;",$diff);
  +  $lines=explode("\n",$diff);
  +  #unset($lines[0]); unset($lines[1]);
  +  $newlines=array();
  +
  +  $omarker=0;
  +  $orig=array();$new=array();
  +  foreach ($lines as $line) {
  +    $marker=$line[0];
  +    $line=substr($line,1);
  +    if ($marker=="@" and preg_match('/^@\s\-\d+,\d+\s\+(\d+),\d+\s@@/',$line,$mat))
  +      $lp=$mat[1];
  +    else if ($marker=="-") {
  +      $omarker=1; $orig[]=$line; continue;
  +    }
  +    else if ($marker=="+") {
  +      $omarker=1; $new[]=$line; continue;
  +    }
  +    else if ($omarker) {
  +      $count=sizeof($new);
  +      $omarker=0;
  +      $buf='';
  +      $result = new WordLevelDiff($orig, $new, $DBInfo->charset);
  +      foreach ($result->all() as $ll)
  +        $buf.= $ll."\n";
  +      $orig=array();$new=array();
  +      $newlines[$lp-1]=$buf;
  +      for ($i=$count-1;$i>0;$i--) $newlines[$lp+$i-1]=null;
  +    }
  +    else if ($marker==" " and !$omarker) {
  +      $lp++;
  +    }
  +    else if ($marker=="\\" && $line==" No newline at end of file") continue;
  +  }
  +  return $newlines;
  +}
  +
   
   function macro_diff($formatter,$value,&$options)
   {
  @@ -11,6 +114,11 @@
   
     $option='';
   
  +  if ($options['type'] and function_exists($options['type'].'_diff'))
  +    $type=$options['type'].'_diff';
  +  else
  +    $type=$DBInfo->diff_type.'_diff';
  +
     if ($options['text']) {
       if (0) {
         $tmpf=tempnam($DBInfo->vartmp_dir,'DIFF');
  @@ -40,13 +148,13 @@
       }
   
       if (!$out) {
  -       $msg=_("No difference found");
  +      $msg=_("No difference found");
       } else {
  -       $msg= _("Difference between yours and the current");
  -       if (!$options['raw'])
  -         $ret=call_user_func(array(&$formatter,$DBInfo->diff_type.'_diff'),$out);
  -       else
  -         $ret="<pre>$out</pre>\n";
  +      $msg= _("Difference between yours and the current");
  +      if (!$options['raw'])
  +        $ret=call_user_func($type,$out);
  +      else
  +        $ret="<pre>$out</pre>\n";
       }
       if ($options['nomsg']) return $ret;
       return "<h2>$msg</h2>\n$ret";
  @@ -88,8 +196,24 @@
       else if ($rev1 or $rev2) {
         $msg=sprintf(_("Difference between r%s and the current"),$rev1.$rev2);
       }
  -    if (!$options['raw'])
  -      $ret= call_user_func(array(&$formatter,$DBInfo->diff_type.'_diff'),$out);
  +    if (!$options['raw']) {
  +      #print "<pre>$out</pre>";
  +      $ret= call_user_func($type,$out);
  +      if (is_array($ret)) {
  +        $rev=$rev2 ? $rev2:$rev1;
  +        $current=$formatter->page->get_raw_body(array('rev'=>$rev));
  +        $lines=explode("\n",$current);
  +        #print_r($lines);
  +        #print_r($ret);
  +        foreach ($lines as $k => $v)
  +          if (isset($ret[$k])) $lines[$k] = $ret[$k];
  +        #print_r($lines);
  +        $diffed=implode("\n",$lines);
  +        $options['nomsg']=1;
  +        return $formatter->send_page($diffed);
  +        #return "<pre>$diffed</pre>";
  +      }
  +    }
       else
         $ret="<pre>$out</pre>\n";
     }
  @@ -121,10 +245,11 @@
       do_RcsPurge($formatter,$options);
       return;
     }
  +  if ($DBInfo->smart_diff) $options['type']='smart';
     $formatter->send_header("",$options);
     $formatter->send_title("Diff for $rev ".$options['page'],"",$options);
     if ($date) {
  -   $options['rev']=$date;
  +    $options['rev']=$date;
       print macro_diff($formatter,'',$options);
     }
     else
  
  
  


wkpark      2005/10/13 22:05:23

  Modified:    plugin/processor diff.php
  Log:
  add experimental smart_diff() and refactoring
  
  Revision  Changes    Path
  1.2       +6 -6      moniwiki/plugin/processor/diff.php
  
  Index: diff.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/diff.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- diff.php	16 Aug 2004 08:22:40 -0000	1.1
  +++ diff.php	13 Oct 2005 13:05:23 -0000	1.2
  @@ -7,18 +7,18 @@
   // - hello world
   // + Hello world
   // }}}
  -// $Id: diff.php,v 1.1 2004/08/16 08:22:40 wkpark Exp $
  +// $Id: diff.php,v 1.2 2005/10/13 13:05:23 wkpark Exp $
   
   function processor_diff($formatter,$value="") {
     if ($value[0]=='#' and $value[1]=='!')
       list($line,$value)=explode("\n",$value,2);
     list($dummy, $type)=explode(' ',$line);
  -  if (in_array($type,array('fancy','simple'))) {
  -    $type=$type.'_diff';
  -  } else
  -    $type='fancy_diff';
  +  if (in_array($type,array('fancy','simple')))
  +    $options['type']=$type;
     // add first two blank lines
  -  return call_user_func(array(&$formatter,$type),"\n\n".$value);
  +  $options['nomsg']=1;
  +  $options['text']="\n\n".$value;
  +  return $formatter->macro_repl('Diff','',$options);
   }
   
   ?>
  
  
  


wkpark      2005/10/13 22:06:31

  Modified:    plugin   new.php
  Log:
  enhanded new action
  
  Revision  Changes    Path
  1.2       +23 -11    moniwiki/plugin/new.php
  
  Index: new.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/new.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- new.php	15 Aug 2003 21:30:36 -0000	1.1
  +++ new.php	13 Oct 2005 13:06:31 -0000	1.2
  @@ -4,24 +4,36 @@
   // a new action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: new.php,v 1.1 2003/08/15 21:30:36 wkpark Exp $
  +// $Id: new.php,v 1.2 2005/10/13 13:06:31 wkpark Exp $
   
   function do_new($formatter,$options) {
  -  $title=_("Create a new page");
  -  $formatter->send_header("",$options);
  -  $formatter->send_title($title,"",$options);
  -  $url=$formatter->link_url($formatter->page->urlname);
  +  if (!$options['value']) {
  +    $title=_("Create a new page");
  +    $formatter->send_header("",$options);
  +    $formatter->send_title($title,"",$options);
  +    $url=$formatter->link_url($formatter->page->urlname);
   
  -  $msg=_("Enter a page name");
  -  print <<<FORM
  +    $msg=_("Enter a page name");
  +    $fixname=_("Normalize this page name");
  +    $btn=_("Create a new page");
  +    print <<<FORM
   <form method='get' action='$url'>
  -    $msg: <input type='hidden' name='action' value='goto' />
  +    $msg: <input type='hidden' name='action' value='new' />
       <input name='value' size='30' />
  -    <input type='submit' value='Create' />
  +    <input type='checkbox' name='fixname' checked='checked' />$fixname<br />
  +    <input type='submit' value='$btn' />
       </form>
   FORM;
  -
  -  $formatter->send_footer();
  +    $formatter->send_footer();
  +  } else {
  +    $pgname=$options['value'];
  +    if ($options['fixname']) $pgname=normalize($pgname);
  +    $options['page']=$pgname;
  +    $page=new WikiPage($pgname);
  +    $f=new Formatter($page,$options);
  +    do_edit($f,$options);
  +    return true;
  +  }
   }
   
   ?>
  
  
  


wkpark      2005/10/13 22:07:26

  Modified:    plugin   MoniCalendar.php
  Log:
  workaround some new bugs
  
  Revision  Changes    Path
  1.6       +3 -3      moniwiki/plugin/MoniCalendar.php
  
  Index: MoniCalendar.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/MoniCalendar.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- MoniCalendar.php	23 Sep 2005 17:26:56 -0000	1.5
  +++ MoniCalendar.php	13 Oct 2005 13:07:26 -0000	1.6
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Test]]
   //
  -// $Id: MoniCalendar.php,v 1.5 2005/09/23 17:26:56 wkpark Exp $
  +// $Id: MoniCalendar.php,v 1.6 2005/10/13 13:07:26 wkpark Exp $
   
   function _parseDays($formatter,$page,$options=array()) {
       $color_table=
  @@ -331,8 +331,8 @@
           $weekday++;
       }
       $formatter->sister_on=$save;
  -    $cal=preg_replace("/(".$formatter->wordrule.")/e",
  -        "\$formatter->link_repl('\\1')",$cal);
  +    #$cal=preg_replace("/(<[^>]+>|".$formatter->wordrule.")/e",
  +    #    "\$formatter->link_repl('\\1')",$cal);
   
       while ($weekday < 7){
           $cal .= "<td class='day'>&nbsp;</td>";
  
  
  


iolo        2005/10/17 00:39:11

  Modified:    .        wiki.php
  Log:
  fix invalid signature for anonymous post/comment.
  
  Revision  Changes    Path
  1.256     +7 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.255
  retrieving revision 1.256
  diff -u -r1.255 -r1.256
  --- wiki.php	13 Oct 2005 13:03:16 -0000	1.255
  +++ wiki.php	16 Oct 2005 15:39:11 -0000	1.256
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.255 2005/10/13 13:03:16 wkpark Exp $
  +// $Id: wiki.php,v 1.256 2005/10/16 15:39:11 iolo Exp $
   //
  -$_revision = substr('$Revision: 1.255 $',1,-1);
  +$_revision = substr('$Revision: 1.256 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -936,8 +936,12 @@
       $time=gmdate("Y-m-d\TH:i:s");
   
       $id=$options['id'];
  -    if ($id != 'Anonymous')
  +    if ($id != 'Anonymous') {
         if (!preg_match('/([A-Z][a-z0-9]+){2,}/',$id)) $id='['.$id.']';
  +    } else  {
  +      $id=$options['name'] ?
  +        _stripslashes($options['name']):$_SERVER['REMOTE_ADDR'];
  +    }
    
       $body=preg_replace("/@DATE@/","[[Date($time)]]",$body);
       $body=preg_replace("/@USERNAME@/","$id",$body);
  
  
  


iolo        2005/10/17 00:39:11

  Modified:    plugin   Blog.php
  Log:
  fix invalid signature for anonymous post/comment.
  
  Revision  Changes    Path
  1.27      +1 -6      moniwiki/plugin/Blog.php
  
  Index: Blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Blog.php,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- Blog.php	13 Apr 2005 06:45:16 -0000	1.26
  +++ Blog.php	16 Oct 2005 15:39:11 -0000	1.27
  @@ -5,7 +5,7 @@
   //
   // Usage: ?action=Blog
   //
  -// $Id: Blog.php,v 1.26 2005/04/13 06:45:16 wkpark Exp $
  +// $Id: Blog.php,v 1.27 2005/10/16 15:39:11 iolo Exp $
   
   function updateBlogList($formatter) {
     global $DBInfo;
  @@ -116,11 +116,6 @@
       $lines=explode("\n",$raw_body);
       $count=count($lines);
   
  -    if ($options['id']=='Anonymous')
  -      $id=$options['name'] ?
  -        _stripslashes($options['name']):$_SERVER['REMOTE_ADDR'];
  -    else $id=$options['id'];
  -
       if ($options['value']) {
         # add comment
         for ($i=0;$i<$count;$i++) {
  
  
  


wkpark      2005/10/18 01:09:04

  Modified:    lib      difflib.php
  Log:
  add 'all()' method
  
  Revision  Changes    Path
  1.8       +27 -7     moniwiki/lib/difflib.php
  
  Index: difflib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/difflib.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- difflib.php	16 Nov 2004 13:31:50 -0000	1.7
  +++ difflib.php	17 Oct 2005 16:09:04 -0000	1.8
  @@ -8,7 +8,7 @@
   //
   
   // FIXME: possibly remove assert()'s for production version?
  -// $Id: difflib.php,v 1.7 2004/11/16 13:31:50 wkpark Exp $
  +// $Id: difflib.php,v 1.8 2005/10/17 16:09:04 wkpark Exp $
   // original Id: difflib.php,v 1.5 2002/01/21 06:55:47 dairiki Exp
   
   // PHP3 does not have assert()
  @@ -852,14 +852,18 @@
           $this->_line = '';
           $this->_group = '';
           $this->_tag = '';
  +        $this->_tag_del_open="<del class='diff-removed'>";
  +        $this->_tag_del_close="</del>";
  +        $this->_tag_ins_open="<ins class='diff-added'>";
  +        $this->_tag_ins_close="</ins>";
       }
   
       function _flushGroup ($new_tag) {
           if ($this->_group !== '') {
   	  if ($this->_tag == 'del') 
  -            $this->_line .= "<del class='diff-removed'>$this->_group</del>";
  +            $this->_line .= $this->_tag_del_open.$this->_group.$this->_tag_del_close;
   	  else if ($this->_tag == 'ins')
  -	    $this->_line .= "<ins class='diff-added'>$this->_group</ins>";
  +            $this->_line .= $this->_tag_ins_open.$this->_group.$this->_tag_ins_close;
   	  else
   	    $this->_line .= $this->_group;
   	}
  @@ -900,17 +904,17 @@
   
   class WordLevelDiff extends MappedDiff
   {
  -    function WordLevelDiff ($orig_lines, $_final_lines,$charset="euc-kr") {
  +    function WordLevelDiff ($orig_lines, $final_lines,$charset="euc-kr") {
           if (strtolower($charset) == 'euc-kr') # two bytes sequence rule
             $this->charset_rule='[\xb0-\xfd][\xa1-\xfe]|';
           else if (strtolower($charset) == 'utf-8') # three bytes sequence
             $this->charset_rule='[\xE1-\xEF][\x80-\xBF][\x80-\xBF]|\xE0[\xA0-\xBF][\x80-\xBF]|';
           
           list ($orig_words, $orig_stripped) = $this->_split($orig_lines);
  -        list ($_final_words, $_final_stripped) = $this->_split($_final_lines);
  +        list ($final_words, $final_stripped) = $this->_split($final_lines);
   
  -        $this->MappedDiff($orig_words, $_final_words,
  -                          $orig_stripped, $_final_stripped);
  +        $this->MappedDiff($orig_words, $final_words,
  +                          $orig_stripped, $final_stripped);
       }
   
       function _split($lines) {
  @@ -947,6 +951,22 @@
           }
           return $_final->getLines();
       }
  +    function all () {
  +        $text = new _HWLDF_WordAccumulator;
  +
  +        foreach ($this->edits as $edit) {
  +            if ($edit->type == 'copy')
  +                $text->addWords($edit->orig);
  +            else {
  +                #print "$edit->type:";
  +                if ($edit->orig)
  +                    $text->addWords($edit->orig, 'del');
  +            	if ($edit->_final)
  +                    $text->addWords($edit->_final, 'ins');
  +            }
  +        }
  +        return $text->getLines();
  +    }
   }
   
   /**
  
  
  


iolo        2005/10/20 22:09:52

  Modified:    .        wiki.php
  Log:
  revert and fix again :'( sorry...
  
  Revision  Changes    Path
  1.257     +4 -7      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.256
  retrieving revision 1.257
  diff -u -r1.256 -r1.257
  --- wiki.php	16 Oct 2005 15:39:11 -0000	1.256
  +++ wiki.php	20 Oct 2005 13:09:52 -0000	1.257
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.256 2005/10/16 15:39:11 iolo Exp $
  +// $Id: wiki.php,v 1.257 2005/10/20 13:09:52 iolo Exp $
   //
  -$_revision = substr('$Revision: 1.256 $',1,-1);
  +$_revision = substr('$Revision: 1.257 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -935,13 +935,10 @@
   
       $time=gmdate("Y-m-d\TH:i:s");
   
  -    $id=$options['id'];
  -    if ($id != 'Anonymous') {
  -      if (!preg_match('/([A-Z][a-z0-9]+){2,}/',$id)) $id='['.$id.']';
  -    } else  {
  +    if ($options['id'] == 'Anonymous') {
         $id=$options['name'] ?
           _stripslashes($options['name']):$_SERVER['REMOTE_ADDR'];
  -    }
  +    } else $id=$options['id'];
    
       $body=preg_replace("/@DATE@/","[[Date($time)]]",$body);
       $body=preg_replace("/@USERNAME@/","$id",$body);
  
  
  


iolo        2005/10/20 22:09:54

  Modified:    plugin   Blog.php
  Log:
  revert and fix again :'( sorry...
  
  Revision  Changes    Path
  1.28      +6 -1      moniwiki/plugin/Blog.php
  
  Index: Blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Blog.php,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- Blog.php	16 Oct 2005 15:39:11 -0000	1.27
  +++ Blog.php	20 Oct 2005 13:09:54 -0000	1.28
  @@ -5,7 +5,7 @@
   //
   // Usage: ?action=Blog
   //
  -// $Id: Blog.php,v 1.27 2005/10/16 15:39:11 iolo Exp $
  +// $Id: Blog.php,v 1.28 2005/10/20 13:09:54 iolo Exp $
   
   function updateBlogList($formatter) {
     global $DBInfo;
  @@ -116,6 +116,11 @@
       $lines=explode("\n",$raw_body);
       $count=count($lines);
   
  +    if ($options['id'] == 'Anonymous') {
  +      $id=$options['name'] ?
  +        _stripslashes($options['name']):$_SERVER['REMOTE_ADDR'];
  +    } else $id=$options['id'];
  +
       if ($options['value']) {
         # add comment
         for ($i=0;$i<$count;$i++) {
  
  
  


wkpark      2005/12/10 11:44:44

  Modified:    .        wiki.php wikilib.php
  Log:
  add ajax_savepage() action
  
  Revision  Changes    Path
  1.258     +10 -7     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.257
  retrieving revision 1.258
  diff -u -r1.257 -r1.258
  --- wiki.php	20 Oct 2005 13:09:52 -0000	1.257
  +++ wiki.php	10 Dec 2005 02:44:44 -0000	1.258
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.257 2005/10/20 13:09:52 iolo Exp $
  +// $Id: wiki.php,v 1.258 2005/12/10 02:44:44 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.257 $',1,-1);
  +$_revision = substr('$Revision: 1.258 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -938,7 +938,10 @@
       if ($options['id'] == 'Anonymous') {
         $id=$options['name'] ?
           _stripslashes($options['name']):$_SERVER['REMOTE_ADDR'];
  -    } else $id=$options['id'];
  +    } else {
  +      $id=$options['id'];
  +      if (!preg_match('/([A-Z][a-z0-9]+){2,}/',$id)) $id='['.$id.']';
  +    }
    
       $body=preg_replace("/@DATE@/","[[Date($time)]]",$body);
       $body=preg_replace("/@USERNAME@/","$id",$body);
  @@ -3573,15 +3576,15 @@
       $goto=$_POST['goto'];
     } else if ($_SERVER['REQUEST_METHOD']=="GET") {
       $action=$_GET['action'];
  -    if (($p=strpos($action,'/'))!==false) {
  -      $action_mode=substr($action,$p+1);
  -      $action=substr($action,0,$p);
  -    }
       $value=$_GET['value'];
       $goto=$_GET['goto'];
       $rev=$_GET['rev'];
       $refresh=$_GET['refresh'];
     }
  +  if (($p=strpos($action,'/'))!==false) {
  +    $action_mode=substr($action,$p+1);
  +    $action=substr($action,0,$p);
  +  }
   
   
     #print $_SERVER['REQUEST_URI'];
  
  
  
  1.180     +98 -2     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.179
  retrieving revision 1.180
  diff -u -r1.179 -r1.180
  --- wikilib.php	13 Oct 2005 13:00:19 -0000	1.179
  +++ wikilib.php	10 Dec 2005 02:44:44 -0000	1.180
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.179 2005/10/13 13:00:19 wkpark Exp $
  +// $Id: wikilib.php,v 1.180 2005/12/10 02:44:44 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -781,7 +781,7 @@
   
   function ajax_invalid($formatter,$options) {
     $formatter->send_header("Status: 406 Not Acceptable",$options);
  -  print "false";
  +  print "false\n";
     return;
   }
   
  @@ -1047,6 +1047,102 @@
     return true;
   }
   
  +function ajax_savepage($formatter,$options) {
  +  global $DBInfo;
  +  if ($_SERVER['REQUEST_METHOD']!="POST" or
  +    !$DBInfo->security->writable($options)) {
  +    ajax_invalid($formatter,$options);
  +    return;
  +  }
  +  $savetext=$options['savetext'];
  +  $datestamp=$options['datestamp'];
  +
  +  $savetext=preg_replace("/\r\n|\r/", "\n", $savetext);
  +  $savetext=_stripslashes($savetext);
  +  $section_savetext='';
  +  if (isset($options['section'])) {
  +    if ($formatter->page->exists()) {
  +      $sections= _get_sections($formatter->page->get_raw_body());
  +      if ($sections[$options['section']]) {
  +        if (substr($savetext,-1)!="\n") $savetext.="\n";
  +        $sections[$options['section']]=$savetext;
  +      }
  +      $section_savetext=$savetext;
  +      $savetext=implode('',$sections);
  +    }
  +  }
  +
  +  if ($savetext and $savetext[strlen($savetext)-1] != "\n")
  +    $savetext.="\n";
  +
  +  $new=md5($savetext);
  +
  +  if ($formatter->page->exists()) {
  +    # check difference
  +    $body=$formatter->page->get_raw_body();
  +    $body=preg_replace("/\r\n|\r/", "\n", $body);
  +    $orig=md5($body);
  +    # check datestamp
  +    if ($formatter->page->mtime() > $datestamp) {
  +      $options['msg']=sprintf(_("Someone else saved the page while you edited %s"),$formatter->link_tag($formatter->page->urlname,"",htmlspecialchars($options['page'])));
  +      print "false\n";
  +      print $options['msg'];
  +      return;
  +    }
  +  } else {
  +    $options['msg']=_("Section edit is not valid for non-exists page.");
  +    print "false\n";
  +    print $options['msg'];
  +    return;
  +  }
  +  if ($orig == $new) {
  +    $options['msg']=sprintf(_("Go back or return to %s"),$formatter->link_tag($formatter->page->urlname,"",htmlspecialchars($options['page'])));
  +    print "false\n";
  +    print $options['msg'];
  +    return;
  +  }
  +
  +  if ($DBInfo->spam_filter) {
  +    $text=$savetext;
  +    $fts=preg_split('/(\||,)/',$DBInfo->spam_filter);
  +    foreach ($fts as $ft) {
  +      $text=$formatter->filter_repl($ft,$text,$options);
  +    }
  +    if ($text != $savetext) {
  +      $options['msg'] = _("Sorry, can not save page because some messages are blocked in this wiki.");
  +      print "false\n";
  +      print $options['msg'];
  +      return;
  +    }
  +  }
  +
  +  $comment=_stripslashes($options['comment']);
  +  $formatter->page->write($savetext);
  +  $ret=$DBInfo->savePage($formatter->page,$comment,$options);
  +
  +  if (($ret != -1) and $DBInfo->notify and ($options['minor'] != 1)) {
  +    $options['noaction']=1;
  +    if (!function_exists('mail')) {
  +      $options['msg']=sprintf(_("mail does not supported by default."))."<br />";
  +    } else {
  +      $ret2=wiki_notify($formatter,$options);
  +      if ($ret2)
  +        $options['msg']=sprintf(_("Sent notification mail."))."<br />";
  +      else
  +        $options['msg']=sprintf(_("No subscribers found."))."<br />";
  +    }
  +  }
  +      
  +  if ($ret == -1)
  +    $options['msg'].=sprintf(_("%s is not editable"),$formatter->link_tag($formatter->page->urlname,"",htmlspecialchars($options['page'])));
  +  else
  +    $options['msg'].=sprintf(_("%s is saved"),$formatter->link_tag($formatter->page->urlname,"?action=show",htmlspecialchars($options['page'])));
  +
  +  print "true\n";
  +  print $options['msg'];
  +  return;
  +}
  +
   function do_post_savepage($formatter,$options) {
     global $DBInfo;
     if (!$DBInfo->security->writable($options)) {
  
  
  


wkpark      2005/12/10 11:46:28

  Modified:    plugin   Cite.php sendping.php Clip.php FullSearch.php
  Log:
  small fixes
  
  Revision  Changes    Path
  1.3       +3 -2      moniwiki/plugin/Cite.php
  
  Index: Cite.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Cite.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Cite.php	8 Aug 2005 05:59:55 -0000	1.2
  +++ Cite.php	10 Dec 2005 02:46:28 -0000	1.3
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a CITE macro plugin for the MoniWiki
   //
  -// $Id: Cite.php,v 1.2 2005/08/08 05:59:55 wkpark Exp $
  +// $Id: Cite.php,v 1.3 2005/12/10 02:46:28 wkpark Exp $
   
   function macro_Cite($formatter="",$value="") {
     $CITE_MAP="CiteMap";
  @@ -15,7 +15,8 @@
   ChemRev,Chem.Rev. http://pubs.acs.org/journals/query/subscriberResults.jsp?Research=true&amp;yearrange1=ASAP&amp;yearrange3=current&amp;cit_qjrn=chreay&styear=YYYY&endyear=YYYY&vol=\$VOL&spn=\$PAGE
   RMP,Rev.Mod.Phys. http://link.aps.org/volpage?journal=RMP&volume=\$VOL&id=\$PAGE
   PR,Phys.Rev. http://link.aps.org/volpage?journal=PR&volume=\$VOL&id=\$PAGE
  -PRL,Phys.Rev.Lett. http://link.aps.org/volpage?journal=PRL&volume=\$VOL&id=\$PAGE
  +PRL,Phys.Rev.Lett. http://link.aps.org/doi/10.1103/PhysRevLett.\$VOL.\$PAGE
  +CPL,Chem.Phys.Lett. http://www.sciencedirect.com/science/journal/00092614
   
   EOS;
   
  
  
  
  1.13      +2 -2      moniwiki/plugin/sendping.php
  
  Index: sendping.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/sendping.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- sendping.php	14 Jan 2005 08:26:26 -0000	1.12
  +++ sendping.php	10 Dec 2005 02:46:28 -0000	1.13
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a TrackBack send action plugin for the MoniWiki
   //
  -// $Id: sendping.php,v 1.12 2005/01/14 08:26:26 wkpark Exp $
  +// $Id: sendping.php,v 1.13 2005/12/10 02:46:28 wkpark Exp $
   
   # trackback ping
   function do_sendping($formatter,$options) {
  @@ -109,7 +109,7 @@
         $new=mb_encode_numericentity($title,$DBInfo->convmap,'utf-8');
         if ($new) $title=$new;
       } else {
  -      include('lib/compat.php');
  +      include_once('lib/compat.php');
         $new=utf8_mb_encode($excerpt);
         if ($new) $excerpt=$new;
         $new=utf8_mb_encode($title);
  
  
  
  1.3       +2 -2      moniwiki/plugin/Clip.php
  
  Index: Clip.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Clip.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Clip.php	8 Apr 2005 10:42:51 -0000	1.2
  +++ Clip.php	10 Dec 2005 02:46:28 -0000	1.3
  @@ -1,11 +1,11 @@
   <?php
   // Copyright 2005 by Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
  -// Draw plugin with the JHotDraw for the MoniWiki
  +// Draw plugin with the Clip applet for the MoniWiki
   //
   // Usage: [[Clip(hello)]]
   //
  -// $Id: Clip.php,v 1.2 2005/04/08 10:42:51 wkpark Exp $
  +// $Id: Clip.php,v 1.3 2005/12/10 02:46:28 wkpark Exp $
   
   function macro_Clip($formatter,$value) {
     global $DBInfo;
  
  
  
  1.11      +2 -2      moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- FullSearch.php	17 Aug 2005 00:58:43 -0000	1.10
  +++ FullSearch.php	10 Dec 2005 02:46:28 -0000	1.11
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
   //
  -// $Id: FullSearch.php,v 1.10 2005/08/17 00:58:43 wkpark Exp $
  +// $Id: FullSearch.php,v 1.11 2005/12/10 02:46:28 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
  @@ -32,7 +32,7 @@
     $formatter->send_footer($args,$options);
   }
   
  -function macro_FullSearch($formatter="",$value="", &$opts) {
  +function macro_FullSearch($formatter,$value="", &$opts) {
     global $DBInfo;
     $needle=$value;
     if ($value === true) {
  
  
  


wkpark      2005/12/10 11:46:29

  Modified:    plugin/filter cite.php
  Log:
  small fixes
  
  Revision  Changes    Path
  1.3       +3 -1      moniwiki/plugin/filter/cite.php
  
  Index: cite.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/filter/cite.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- cite.php	8 Aug 2005 05:59:56 -0000	1.2
  +++ cite.php	10 Dec 2005 02:46:29 -0000	1.3
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a cite filter plugin for the MoniWiki
   //
  -// $Id: cite.php,v 1.2 2005/08/08 05:59:56 wkpark Exp $
  +// $Id: cite.php,v 1.3 2005/12/10 02:46:29 wkpark Exp $
   
   function filter_cite($formatter,$value,$options) {
     $cite_rule=array(
  @@ -11,6 +11,7 @@
       '/J\.\s*Phys\.\s*Chem\.,?\s*([0-9]+)\s*,\s*([0-9]+)(?>\s)/',
       '/J\.\s*Phys\.\s*Chem\.\s*A,?\s*([0-9]+)\s*,\s*([0-9]+)(?>\s)/',
       '/Chem\.\s*Rev\.\s,?\s*([0-9]+)\s*,\s*([0-9]+)(?>\s)/',
  +    '/Chem\.\s*Phys\.\s*Lett\.,?\s*([0-9]+)\s*,\s*([0-9]+)(?>\s)/',
       '/J\.\s*Am\.\s*Chem\.\s*Soc\.\s,?\s*([0-9]+)\s*,\s*([0-9]+)(?>\s)/',
       '/Rev\.\s*Mod\.\s*Phys\.\s,?\s*([0-9]+)\s*,\s*([0-9]+)(?>\s)/',
       '/Phys\.\s*Rev\.\s*Lett\.\s,?\s*([0-9]+)\s*,\s*([0-9]+)(?>\s)/',
  @@ -22,6 +23,7 @@
       '[[Cite(JPC \\1,\\2)]]', 
       '[[Cite(JPCA \\1,\\2)]]', 
       '[[Cite(ChemRev \\1,\\2)]]', 
  +    '[[Cite(CPL \\1,\\2)]]', 
       '[[Cite(JACS \\1,\\2)]]', 
       '[[Cite(RMP \\1,\\2)]]', 
       '[[Cite(PRL \\1,\\2)]]', 
  
  
  


wkpark      2005/12/10 21:10:24

  Modified:    .        wikilib.php
  Log:
  the safelogin feature now working!
  
  Revision  Changes    Path
  1.181     +18 -6     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.180
  retrieving revision 1.181
  diff -u -r1.180 -r1.181
  --- wikilib.php	10 Dec 2005 02:44:44 -0000	1.180
  +++ wikilib.php	10 Dec 2005 12:10:24 -0000	1.181
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.180 2005/12/10 02:44:44 wkpark Exp $
  +// $Id: wikilib.php,v 1.181 2005/12/10 12:10:24 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -433,11 +433,16 @@
        return true;
     }
   
  -  function checkPasswd($passwd) {
  +  function checkPasswd($passwd,$chall=0) {
        if (strlen($passwd) < 3)
           return false;
  -     if (crypt($passwd,$this->info['password']) == $this->info['password'])
  +     if ($chall) {
  +        if (hmac($chall,$this->info['password']) == $passwd)
           return true;
  +     } else {
  +        if (crypt($passwd,$this->info['password']) == $this->info['password'])
  +        return true;
  +     }
        return false;
     }
   
  @@ -447,6 +452,7 @@
          return 0;
       if ($passwd2!="" and $passwd!=$passwd2)
          return -1;
  +
       $LOWER='abcdefghijklmnopqrstuvwxyz';
       $UPPER='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
       $DIGIT='0123456789';
  @@ -465,6 +471,10 @@
             $ok|=2;
          if (strpos($DIGIT,$passwd[$i]))
             $ok|=4;
  +
  +       if ($ok==7 and strlen($passwd)>10) return $ok+1;
  +       // sufficiently safe password
  +
          if (strpos($SPECIAL,$passwd[$i]))
             $ok|=8;
       }
  @@ -1583,12 +1593,13 @@
   
     $jscript='';
     if ($DBInfo->use_safelogin) {
  -    $onsubmit=' onsubmit="javascript:password.value=hex_hmac_md5(challenge.value, hex_md5(password.value))"';
  +    $onsubmit=' onsubmit="javascript:_chall.value=challenge.value;password.value=hex_hmac_md5(challenge.value, hex_md5(password.value))"';
       $jscript.="<script src='$DBInfo->url_prefix/local/md5.js'></script>";
       $time_seed=time();
       $chall=md5(base64_encode(getTicket($time_seed,$_SERVER['REMOTE_ADDR'],10)));
       $passwd_hidden="<input type='hidden' name='_seed' value='$time_seed' />";
  -    $passwd_hidden.="<input type='hidden' name='challenge' value='$chall' />\n";
  +    $passwd_hidden.="<input type='hidden' name='challenge' value='$chall' />";
  +    $passwd_hidden.="<input type='hidden' name='_chall' />\n";
       $pw_length=32;
     } else {
       $pw_length=20;
  @@ -1613,13 +1624,14 @@
   <table border="0">
     <tr><td><b>ID</b>&nbsp;</td><td>$idform</td></tr>
     <tr>
  -     <td><b>$passwd_btn</b>&nbsp;</td><td><input type="password" size="15" maxlength="$pw_len" name="password" value="" />
  +     <td><b>$passwd_btn</b>&nbsp;</td><td><input type="password" size="15" maxlength="$pw_len" name="password" value="" /></td>
     <tr><td></td><td>
       $passwd_hidden
       <input type="submit" name="login" value="$button" /> &nbsp;
     </td></tr>
   </table>
   </form>
  +<hr />
   FORM;
   
     if ($user->id == 'Anonymous') {
  
  
  


wkpark      2005/12/10 21:10:24

  Modified:    plugin   userform.php
  Log:
  the safelogin feature now working!
  
  Revision  Changes    Path
  1.12      +58 -8     moniwiki/plugin/userform.php
  
  Index: userform.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/userform.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- userform.php	19 Aug 2005 06:31:07 -0000	1.11
  +++ userform.php	10 Dec 2005 12:10:24 -0000	1.12
  @@ -4,7 +4,7 @@
   // a userform action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: userform.php,v 1.11 2005/08/19 06:31:07 wkpark Exp $
  +// $Id: userform.php,v 1.12 2005/12/10 12:10:24 wkpark Exp $
   
   function do_userform($formatter,$options) {
     global $DBInfo;
  @@ -48,7 +48,24 @@
       $userdb=new UserDB($DBInfo);
       if ($userdb->_exists($id)) {
         $user=$userdb->getUser($id);
  -      if ($user->checkPasswd($options['password'])=== true) {
  +      $login_ok=0;
  +      if ($DBInfo->use_safelogin) {
  +        if (isset($options['challenge']) and
  +           $options['_chall']==$options['challenge']) {
  +          #print '<pre>';
  +          #print $options['password'].'<br />';
  +          #print hmac($options['challenge'],$user->info['password']);
  +          #print '</pre>';
  +          if (hmac($options['challenge'],$user->info['password'])
  +            == $options['password'])
  +            $login_ok=1;
  +        } else { # with no javascript browsers
  +          $md5pw=md5($options['password']);
  +          if (hmac($md5pw,$user->info['password']) == $md5pw)
  +            $login_ok=1;
  +        }
  +      }
  +      if ($login_ok or $user->checkPasswd($options['password'])=== true) {
           $options['msg'] = sprintf(_("Successfully login as '%s'"),$id);
           $options['id']=$user->id;
           $formatter->header($user->setCookie());
  @@ -68,7 +85,9 @@
       # logout
       $formatter->header($user->unsetCookie());
       $title= _("Cookie deleted !");
  -  } else if ($user->id=="Anonymous" and $options['login_id'] and $options['password'] and $options['passwordagain']) {
  +  } else if ($user->id=="Anonymous" and $options['login_id'] and
  +    (($options['password'] and $options['passwordagain']) or
  +     ($DBInfo->use_safelogin and $options['email'])) ) {
       # create profile
   
       $title='';
  @@ -89,14 +108,21 @@
       $user->setID($id);
   
       if ($ok_ticket and $user->id != "Anonymous") {
  -       $ret=$user->setPasswd($options['password'],$options['passwordagain']);
  +       if ($DBInfo->use_safelogin) {
  +          $mypass=base64_encode(getTicket(time(),$_SERVER['REMOTE_ADDR'],10));
  +          $mypass=substr($mypass,0,8);
  +          $options['password']=$mypass;
  +          $ret=$user->setPasswd(md5($mypass),md5($mypass),1);
  +       } else {
  +          $ret=$user->setPasswd($options['password'],$options['passwordagain']);
  +       }
          if ($DBInfo->password_length and (strlen($options['password']) < $DBInfo->password_length)) $ret=0;
          if ($ret <= 0) {
              if ($ret==0) $title= _("too short password!");
              else if ($ret==-1) $title= _("mismatch password!");
              else if ($ret==-2) $title= _("not acceptable character found in the password!");
          } else {
  -           if ($ret < 8)
  +           if ($ret < 8 and !$DBInfo->use_safelogin)
                 $options['msg']=_("Your password is too simple to use as a password !");
              $udb=new UserDB($DBInfo);
              if ($options['email']) {
  @@ -111,7 +137,12 @@
                $options['id']=$user->id;
                $ticket=md5(time().$user->id.$options['email']);
                $user->info['eticket']=$ticket.".".$options['email'];
  -             $formatter->header($user->setCookie());
  +             if ($DBInfo->use_safelogin) {
  +               $options['msg'] =
  +                 sprintf(_("Successfully added as '%s'"),$user->id);
  +               $options['msg'].= '<br />'._("Please check your mailbox");
  +             } else
  +               $formatter->header($user->setCookie());
                $ret=$udb->addUser($user);
   
                # XXX
  @@ -119,6 +150,10 @@
                  $options['subject']="[$DBInfo->sitename] "._("E-mail confirmation");
                  $body=qualifiedUrl($formatter->link_url('',"?action=userform&login_id=$user->id&ticket=$ticket.$options[email]"));
                  $body=_("Please confirm your email address")."\n".$body;
  +               if ($DBInfo->use_safelogin) {
  +                 $body.="\n".sprintf(_("Your initial password is %s"),$mypass)."\n\n";
  +                 $body.=_("Please change your password later")."\n";
  +               }
                  wiki_sendmail($body,$options);
                  $options['msg'].='<br/>'._("E-mail confirmation mail sent");
                }
  @@ -142,8 +177,23 @@
       $userinfo=$udb->getUser($user->id);
   
       if ($options['password'] and $options['passwordagain']) {
  -      if ($userinfo->checkPasswd($options['password'])=== true) {
  -        $ret=$userinfo->setPasswd($options['passwordagain']);
  +      $chall=0;
  +      if ($DBInfo->use_safelogin) {
  +        if (isset($options['_chall'])) {
  +          $chall= $options['challenge'];
  +        } else {
  +          $chall= rand(100000);
  +          $options['password']=hmac($chall,$options['password']);
  +        }
  +      }
  +      //echo 'chall=',$chall,' ',$options['password'];
  +      if ($userinfo->checkPasswd($options['password'],$chall)
  +         === true) {
  +        if ($DBInfo->use_safelogin) {
  +          $mypass=md5($options['passwordagain']); // XXX
  +          $ret=$userinfo->setPasswd($mypass,$mypass,1);
  +        } else
  +          $ret=$userinfo->setPasswd($options['passwordagain']);
   
           if ($ret <= 0) {
             if ($ret==0) $title= _("too short password!");
  
  
  


wkpark      2005/12/10 21:11:42

  Modified:    local    ajax.js
  Log:
  fix HTTPPost()
  
  Revision  Changes    Path
  1.3       +9 -4      moniwiki/local/ajax.js
  
  Index: ajax.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/ajax.js,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ajax.js	20 Sep 2005 10:12:32 -0000	1.2
  +++ ajax.js	10 Dec 2005 12:11:42 -0000	1.3
  @@ -73,11 +73,16 @@
     if (!callback_function)
       bAsync = false;
     xmlhttp.open('POST', uri, bAsync);
  +
     xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  -  var form_contents = '';
  -  for (var i in object)
  -    form_contents += (form_contents ? '&' : '') + i + '=' + escape(object[i]);
  -  xmlhttp.send(form_contents);
  +  var toSend = '';
  +  if (typeof object == 'object') {
  +    for (var i in object)
  +      toSend += (toSend ? '&' : '') + i + '=' + escape(object[i]);
  +  } else {
  +    toSend=object;
  +  }
  +  xmlhttp.send(toSend);
   
     if (bAsync) {
       if (callback_function)
  
  
  


wkpark      2005/12/10 21:14:49

  Added:       local    se.js
  Log:
  for section editing
  
  Revision  Changes    Path
  1.1                  moniwiki/local/se.js
  
  Index: se.js
  ===================================================================
  //
  // dynamic section editing for MoniWiki
  //
  // $Id: se.js,v 1.1 2005/12/10 12:14:49 wkpark Exp $
  //
  function sectionEdit(ev,obj,sect) {
    if (sect) {
      var sec=document.getElementById('sect-'+sect);
      var ed=document.getElementById('editSect-'+sect);
      if (ed) { // toogle
        sec.parentNode.removeChild(sec.parentNode.lastChild);
        return;
      }
      var href=obj.href.replace(/=edit/,'=edit/ajax');
      var form=HTTPGet(href);
      if (form.substring(0,5) != 'false') {
        //var node=document.createElement('li');
        //node.innerHTML=msg;
        //chat.appendChild(node);
        var f=document.createElement('div');
        f.setAttribute('id','editSect-'+sect);
        f.innerHTML=form;
        sec.parentNode.appendChild(f);
      }
    }
  }
  
  function savePage(obj) {
    obj.elements['action'].value+='/ajax';
    //alert(self.location);
    var sec=document.getElementById('sect-'+obj.section.value);
    var toSend = '';
    for (var i=0;i<obj.elements.length;i++) {
      if (obj.elements[i].name != '')  {
        toSend += (toSend ? '&' : '') + obj.elements[i].name + '='
                                    + escape(obj.elements[i].value);
        //alert(obj.elements[i].name+'='+obj.elements[i].value);
      }
    }
    var form=HTTPPost(self.location,toSend);
    if (form.substring(0,4) == 'true') {
      var ed=document.getElementById('editSect-'+obj.section.value);
      if (ed) { // toogle
        sec.parentNode.removeChild(sec.parentNode.lastChild);
        return false;
      }
    } else {
      var f=document.createElement('div');
      f.setAttribute('id','editSect-'+obj.section.value);
      // show error XXX
      f.innerHTML=form;
      sec.parentNode.appendChild(f);
    }
    return false;
  }
  
  
  
  


wkpark      2005/12/10 23:14:59

  Modified:    plugin/processor abc.php dot.php gnuplot.php itex.php
                        jade.php latex.php linuxdoc.php man.php
                        metapost.php octave.php pic.php syntax.php vim.php
                        xsltproc.php
  Log:
  use $vartmp_dir and use popen instead of system or exec
  
  Revision  Changes    Path
  1.4       +5 -4      moniwiki/plugin/processor/abc.php
  
  Index: abc.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/abc.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- abc.php	2 Aug 2004 04:54:36 -0000	1.3
  +++ abc.php	10 Dec 2005 14:14:59 -0000	1.4
  @@ -6,13 +6,13 @@
   // Usage: {{{#!abc
   // blah blah
   // }}}
  -// $Id: abc.php,v 1.3 2004/08/02 04:54:36 wkpark Exp $
  +// $Id: abc.php,v 1.4 2005/12/10 14:14:59 wkpark Exp $
   
   function processor_abc($formatter="",$value="") {
     global $DBInfo;
     $abc2midi="abc2midi"; # Unix
   
  -  $vartmp_dir=$DBInfo->vartmp_dir;
  +  $vartmp_dir=&$DBInfo->vartmp_dir;
     $cache_dir=$DBInfo->upload_dir."/Abc2Midi";
   
     #
  @@ -42,7 +42,7 @@
     #if (1 || $formatter->refresh || !file_exists("$cache_dir/$uniq.midi")) {
     if ($formatter->refresh || !file_exists("$cache_dir/$uniq.midi")) {
   
  -    $tmpf=tempnam("/tmp","FOO");
  +    $tmpf=tempnam($vartmp_dir,"FOO");
       $fp= fopen($tmpf, "w");
       fwrite($fp, $abc);
       fclose($fp);
  @@ -66,7 +66,8 @@
   # Unix
   #
        $cmd= "$abc2midi $tmpf -o $cache_dir/$uniq.midi 2> $flog";
  -     $fp=system($cmd);
  +     $fp=popen($cmd,'w');
  +     pclose($fp);
   
        $log=join(file($flog),"");
        unlink($flog);
  
  
  
  1.2       +5 -3      moniwiki/plugin/processor/dot.php
  
  Index: dot.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/dot.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- dot.php	2 Aug 2004 11:24:55 -0000	1.1
  +++ dot.php	10 Dec 2005 14:14:59 -0000	1.2
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a dot plugin for the MoniWiki
   //
  -// $Id: dot.php,v 1.1 2004/08/02 11:24:55 wkpark Exp $
  +// $Id: dot.php,v 1.2 2005/12/10 14:14:59 wkpark Exp $
   // vim:et:ts=2:
   
   function processor_dot($formatter,$value) {
  @@ -29,9 +29,11 @@
       fclose($fp);
     }{
       $cmd="$dotcmd -Tpng $webdot_dir/$md5sum.dot -o $webdot_dir/$md5sum.png";
  -    exec($cmd,$log);
  +    $fp=popen($cmd,'w');
  +    fclose($fp);
       $cmd="$dotcmd -Timap $webdot_dir/$md5sum.dot -o $webdot_dir/$md5sum.map";
  -    exec($cmd,$log);
  +    popen($cmd,'w');
  +    fclose($fp);
     }
   
     return "<a href='$DBInfo->url_prefix/$webdot_dir/$md5sum.map'><img border='0' src='$DBInfo->url_prefix/$webdot_dir/$md5sum.png' ismap /></a>\n";
  
  
  
  1.11      +2 -2      moniwiki/plugin/processor/gnuplot.php
  
  Index: gnuplot.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/gnuplot.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- gnuplot.php	13 Aug 2005 06:51:21 -0000	1.10
  +++ gnuplot.php	10 Dec 2005 14:14:59 -0000	1.11
  @@ -6,7 +6,7 @@
   // Usage: {{{#!gnuplot
   // plot sin(x)
   // }}}
  -// $Id: gnuplot.php,v 1.10 2005/08/13 06:51:21 wkpark Exp $
  +// $Id: gnuplot.php,v 1.11 2005/12/10 14:14:59 wkpark Exp $
   
   function processor_gnuplot($formatter="",$value="") {
     global $DBInfo;
  @@ -16,7 +16,7 @@
     else
       $gnuplot="gnuplot";
   
  -  $vartmp_dir=$DBInfo->vartmp_dir;
  +  $vartmp_dir=&$DBInfo->vartmp_dir;
     $cache_dir=$DBInfo->upload_dir."/GnuPlot";
   
     if ($value[0]=='#' and $value[1]=='!')
  
  
  
  1.4       +2 -2      moniwiki/plugin/processor/itex.php
  
  Index: itex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/itex.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- itex.php	8 Apr 2005 11:05:22 -0000	1.3
  +++ itex.php	10 Dec 2005 14:14:59 -0000	1.4
  @@ -13,7 +13,7 @@
   // and replace the latex processor:
   //  $processors=array('latex'=>'itex',...);
   //
  -// $Id: itex.php,v 1.3 2005/04/08 11:05:22 wkpark Exp $
  +// $Id: itex.php,v 1.4 2005/12/10 14:14:59 wkpark Exp $
   
   /*
     itex2MML.l patch to enable $$\alpha$$ syntax
  @@ -61,7 +61,7 @@
   
       # site spesific variables
       $itex="itex2MML";
  -    $vartmp_dir=$DBInfo->vartmp_dir;
  +    $vartmp_dir=&$DBInfo->vartmp_dir;
       $cache_dir=$DBInfo->upload_dir."/itex";
   
       $type='block';
  
  
  
  1.8       +3 -2      moniwiki/plugin/processor/jade.php
  
  Index: jade.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/jade.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- jade.php	2 Nov 2004 18:03:59 -0000	1.7
  +++ jade.php	10 Dec 2005 14:14:59 -0000	1.8
  @@ -6,7 +6,7 @@
   // Usage: {{{#!jade
   // docbook code
   // }}}
  -// $Id: jade.php,v 1.7 2004/11/02 18:03:59 wkpark Exp $
  +// $Id: jade.php,v 1.8 2005/12/10 14:14:59 wkpark Exp $
   
   function processor_jade($formatter,$value,$options=array()) {
     global $DBInfo;
  @@ -20,6 +20,7 @@
   #  ' ' + tmpfile + '.sgml')
   
     $pagename=$formatter->page->name;
  +  $vartmp_dir=&$DBInfo->vartmp_dir;
     $cache= new Cache_text("jade");
   
     if (!$formatter->refresh and !$formatter->preview and $cache->exists($pagename) and $cache->mtime($pagename) > $formatter->page->mtime())
  @@ -61,7 +62,7 @@
     if (!$dsssl_flag and $DBInfo->default_dsssl)
       $args.=" -d $DBInfo->default_dsssl";
   
  -  $tmpf=tempnam("/tmp","JADE");
  +  $tmpf=tempnam($vartmp_dir,"JADE");
     $fp= fopen($tmpf, "w");
     fwrite($fp, $src);
     fclose($fp);
  
  
  
  1.10      +12 -7     moniwiki/plugin/processor/latex.php
  
  Index: latex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/latex.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- latex.php	8 Apr 2005 10:43:23 -0000	1.9
  +++ latex.php	10 Dec 2005 14:14:59 -0000	1.10
  @@ -6,7 +6,7 @@
   // Usage: {{{#!latex
   // $ \alpha $
   // }}}
  -// $Id: latex.php,v 1.9 2005/04/08 10:43:23 wkpark Exp $
  +// $Id: latex.php,v 1.10 2005/12/10 14:14:59 wkpark Exp $
   
   function processor_latex($formatter="",$value="") {
     global $DBInfo;
  @@ -14,7 +14,7 @@
     $latex="latex";
     $dvips="dvips";
     $convert="convert";
  -  $vartmp_dir=$DBInfo->vartmp_dir;
  +  $vartmp_dir=&$DBInfo->vartmp_dir;
     $cache_dir=$DBInfo->upload_dir."/LaTeX";
     $option='-interaction=batchmode ';
   
  @@ -66,7 +66,8 @@
        $cwd= getcwd();
        chdir($vartmp_dir);
        $cmd= "$latex $option $uniq.tex >$NULL";
  -     system($cmd);
  +     $fp=popen($cmd,'w');
  +     pclose($fp);
   
        if (!file_exists($uniq.".dvi")) {
          print "<font color='red'>ERROR:</font> LaTeX does not work properly.";
  @@ -74,13 +75,17 @@
          return;
        }
        $cmd= "$dvips -D 600 $uniq.dvi -o $uniq.ps";
  -     system($cmd);
  +     $fp=popen($cmd,'w');
  +     pclose($fp);
        chdir($cwd);
   
        $cmd= "$convert -transparent white -crop 0x0 -density 120x120 $vartmp_dir/$uniq.ps $outpath";
  -     system($cmd);
  -
  -     system("$RM $vartmp_dir/$uniq.*");
  +     $fp=popen($cmd,'w');
  +     pclose($fp);
  +     unlink($vartmp_dir."/$uniq.log");
  +     unlink($vartmp_dir."/$uniq.aux");
  +     @unlink($vartmp_dir."/$uniq.bib");
  +     @unlink($vartmp_dir."/$uniq.ps");
     }
     return "<img class='tex' src='$DBInfo->url_prefix/$cache_dir/$uniq.png' alt='$tex' ".
            "title=\"$tex\" />";
  
  
  
  1.6       +11 -6     moniwiki/plugin/processor/linuxdoc.php
  
  Index: linuxdoc.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/linuxdoc.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- linuxdoc.php	2 Nov 2004 18:03:59 -0000	1.5
  +++ linuxdoc.php	10 Dec 2005 14:14:59 -0000	1.6
  @@ -6,7 +6,7 @@
   // Usage: {{{#!linuxdoc
   // linuxdoc code
   // }}}
  -// $Id: linuxdoc.php,v 1.5 2004/11/02 18:03:59 wkpark Exp $
  +// $Id: linuxdoc.php,v 1.6 2005/12/10 14:14:59 wkpark Exp $
   
   function processor_linuxdoc($formatter,$value) {
     global $DBInfo;
  @@ -15,6 +15,7 @@
     $toutf=array('ko'=>'UHC','ja'=>'nippon');
   
     $pagename=$formatter->page->name;
  +  $vartmp_dir=&$DBInfo->vartmp_dir;
     $cache= new Cache_text("linuxdoc");
   
     if (!$formatter->refresh and !$formatter->preview and $cache->exists($pagename) and $cache->mtime($pagename) > $formatter->page->mtime())
  @@ -36,7 +37,7 @@
     }
   
     $converted=0;
  -  $tmpf=tempnam("/tmp","SGML2HTML");
  +  $tmpf=tempnam($vartmp_dir,"SGML2HTML");
     $fp= fopen($tmpf.".sgml", "w");
     if (strtoupper($DBInfo->charset) == 'UTF-8' and isset($toutf[$lang])) {
       if (function_exists('iconv') and ($new=iconv('UTF-8',$toutf[$lang],$value)))
  @@ -48,11 +49,15 @@
     fwrite($fp, $value);
     fclose($fp);
   
  -  $cmd="cd /tmp;$sgml2html $args $tmpf".".sgml";
  +  $cmd="$sgml2html $args $tmpf".".sgml";
  +  $cwd=getcwd();
  +  chdir($vartmp_dir);
  +  $log='';
  +  $fp=popen($cmd,'r');
  +  while($s = fgets($fp, 1024)) $log.= $s;
  +  pclose($fp);
  +  chdir($cwd);
   
  -  exec($cmd,$log);
  -
  -  $log=join("",$log);
     $tmpfh=$tmpf.'.html';
     $fp=fopen($tmpfh,'r');
     $html=fread($fp,filesize($tmpfh));
  
  
  
  1.3       +10 -4     moniwiki/plugin/processor/man.php
  
  Index: man.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/man.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- man.php	8 Apr 2004 18:23:44 -0000	1.2
  +++ man.php	10 Dec 2005 14:14:59 -0000	1.3
  @@ -3,23 +3,29 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a man processor plugin for the MoniWiki
   //
  -// $Id: man.php,v 1.2 2004/04/08 18:23:44 wkpark Exp $
  +// $Id: man.php,v 1.3 2005/12/10 14:14:59 wkpark Exp $
   
   function processor_man($formatter,$value="") {
  +  global $DBInfo;
  +
     if ($value[0]=='#' and $value[1]=='!')
       list($line,$value)=explode("\n",$value,2);
   
     if ($line)
       list($tag,$args)=explode(' ',$line,2);
  +  $vartmp_dir=&$DBInfo->vartmp_dir;
   
  -  $tmpf=tempnam("/tmp","MAN");
  +  $tmpf=tempnam($vartmp_dir,"MAN");
     $fp= fopen($tmpf, "w");
     fwrite($fp, $value);
     fclose($fp);
   
     $man2html= "man2html $tmpf";
  -  exec($man2html,$out);
  -  $html=join('',$out);
  +  $html='';
  +  while($s = fgets($fp, 1024)) $html.= $s;
  +  $fp=popen($man2html,'r');
  +
  +  pclose($fp);
     unlink($tmpf);
   
     $html=str_replace('Content-type: text/html','',$html);
  
  
  
  1.2       +6 -4      moniwiki/plugin/processor/metapost.php
  
  Index: metapost.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/metapost.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- metapost.php	30 Apr 2004 09:25:39 -0000	1.1
  +++ metapost.php	10 Dec 2005 14:14:59 -0000	1.2
  @@ -5,7 +5,7 @@
   //
   // Usage: {{{#!metapost
   // }}}
  -// $Id: metapost.php,v 1.1 2004/04/30 09:25:39 wkpark Exp $
  +// $Id: metapost.php,v 1.2 2005/12/10 14:14:59 wkpark Exp $
   
   function processor_metapost($formatter,$value="") {
     global $DBInfo;
  @@ -14,7 +14,7 @@
     $mpost="mpost";
     $dvips="dvips";
     $convert="convert -transparent white -crop 0x0 -density 120x120";
  -  $vartmp_dir=$DBInfo->vartmp_dir;
  +  $vartmp_dir=&$DBInfo->vartmp_dir;
     $cache_dir=$DBInfo->upload_dir."/MetaPost";
     $option='-T -interaction=batchmode ';
   
  @@ -55,11 +55,13 @@
        $dir=getcwd();
        chdir($vartmp_dir);
        $cmd= "$mpost $option $uniq >/dev/null";
  -     system($cmd);
  +     $fp=popen($cmd,'w');
  +     pclose($fp);
        chdir($dir);
   
        $cmd= "$convert $vartmp_dir/$uniq.1 $outpath";
  -     system($cmd);
  +     $fp=popen($cmd,'w');
  +     pclose($fp);
   
        @copy("$vartmp_dir/$uniq.1","$cache_dir/$uniq.ps");
        unlink("$vartmp_dir/$uniq.1");
  
  
  
  1.2       +2 -2      moniwiki/plugin/processor/octave.php
  
  Index: octave.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/octave.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- octave.php	2 Aug 2004 11:24:55 -0000	1.1
  +++ octave.php	10 Dec 2005 14:14:59 -0000	1.2
  @@ -6,7 +6,7 @@
   // Usage: {{{#!octave
   // code..
   // }}}
  -// $Id: octave.php,v 1.1 2004/08/02 11:24:55 wkpark Exp $
  +// $Id: octave.php,v 1.2 2005/12/10 14:14:59 wkpark Exp $
   
   function processor_octave($formatter="",$value="") {
     global $DBInfo;
  @@ -17,7 +17,7 @@
       #$octave="octave -q -H --no-init-file --no-line-editing -f ";
       $octave="octave -q -H -f ";
   
  -  $vartmp_dir=$DBInfo->vartmp_dir;
  +  $vartmp_dir=&$DBInfo->vartmp_dir;
     $cache_dir=$DBInfo->upload_dir."/Octave";
   
     if ($value[0]=='#' and $value[1]=='!')
  
  
  
  1.2       +2 -2      moniwiki/plugin/processor/pic.php
  
  Index: pic.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/pic.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- pic.php	8 Apr 2004 18:23:44 -0000	1.1
  +++ pic.php	10 Dec 2005 14:14:59 -0000	1.2
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a PIC plugin for the MoniWiki
   //
  -// $Id: pic.php,v 1.1 2004/04/08 18:23:44 wkpark Exp $
  +// $Id: pic.php,v 1.2 2005/12/10 14:14:59 wkpark Exp $
   // Usage: {{{#!pic
   // some codes
   // }}}
  @@ -14,7 +14,7 @@
     $GROFF="groff -e -p -ms -Tps ";
     $CONVERT="convert -transparent white -density 120x120 -crop 0x0 ";
   
  -  $vartmp_dir=$DBInfo->vartmp_dir;
  +  $vartmp_dir=&$DBInfo->vartmp_dir;
     $cache_dir=$DBInfo->upload_dir."/PIC";
   
     if ($value[0]=='#' and $value[1]=='!')
  
  
  
  1.3       +10 -5     moniwiki/plugin/processor/syntax.php
  
  Index: syntax.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/syntax.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- syntax.php	8 Apr 2004 18:23:44 -0000	1.2
  +++ syntax.php	10 Dec 2005 14:14:59 -0000	1.3
  @@ -6,9 +6,11 @@
   // Usage: {{{#!syntax sh|c|sh|..
   // some codes
   // }}}
  -// $Id: syntax.php,v 1.2 2004/04/08 18:23:44 wkpark Exp $
  +// $Id: syntax.php,v 1.3 2005/12/10 14:14:59 wkpark Exp $
   
   function processor_syntax($formatter,$value) {
  +  global $DBInfo;
  +
     $enscript='enscript ';
   ##enscript --help-pretty-print |grep "^Name" |cut -d" " -f 2
     $syntax=array(
  @@ -19,6 +21,8 @@
   
     $options=array("number");
   
  +  $vartmp_dir=&$DBInfo->vartmp_dir;
  +
     if ($value[0]=='#' and $value[1]=='!')
       list($line,$value)=explode("\n",$value,2);
     # get parameters
  @@ -38,7 +42,7 @@
       $html= ob_get_contents();
       ob_end_clean();
     } else {
  -    $tmpf=tempnam("/tmp","FOO");
  +    $tmpf=tempnam($vartmp_dir,"FOO");
       $fp= fopen($tmpf, "w");
       fwrite($fp, $src);
       fclose($fp);
  @@ -47,10 +51,11 @@
   
       #$cmd="ENSCRIPT_LIBRARY=/home/httpd/wiki/lib $enscript -q -o - -E$type -W html --color=ifh --word-wrap ".$tmpf;
       $cmd="$enscript -q -o - $option -E$type -W html --color=ifh --word-wrap ".$tmpf;
  -    $buffer = array();
  -    exec($cmd, $buffer);
  +    $fp=popen($cmd, 'r');
  +    $html='';
  +    while($s = fgets($fp, 1024)) $html.= $s;
  +    pclose($fp);
   
  -    $html= join("\n", $buffer);
       $html= eregi_replace('^.*<pre>', '<div class="wikiPre"><pre class="wiki">', $html);
       $html= eregi_replace('<\/PRE>.*$', '</pre></div>', $html);
       unlink($tmpf);
  
  
  
  1.29      +4 -3      moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- vim.php	5 Sep 2005 16:58:50 -0000	1.28
  +++ vim.php	10 Dec 2005 14:14:59 -0000	1.29
  @@ -10,12 +10,13 @@
   // Win32 note:
   //  add $path="/bin;/Program Files/Vim/VimXX"; in the config.php
   //
  -// $Id: vim.php,v 1.28 2005/09/05 16:58:50 wkpark Exp $
  +// $Id: vim.php,v 1.29 2005/12/10 14:14:59 wkpark Exp $
   
   function processor_vim($formatter,$value,$options) {
     global $DBInfo;
     static $jsloaded=0;
     $cache_dir=$DBInfo->upload_dir."/VimProcessor";
  +  $vartmp_dir=&$DBInfo->vartmp_dir;
   
     $syntax=array("php","c","python","jsp","sh","cpp",
             "java","ruby","forth","fortran","perl",
  @@ -80,7 +81,7 @@
     if(getenv("OS")=="Windows_NT") {
       $tohtml='$VIMRUNTIME/syntax/2html.vim';
       $vim="gvim"; # Win32
  -    $fout=tempnam("/tmp","OUT");
  +    $fout=tempnam($vartmp_dir,"OUT");
     } else {
       $tohtml='\$VIMRUNTIME/syntax/2html.vim';
       $vim="vim";
  @@ -96,7 +97,7 @@
   #}
   #';
   
  -  $tmpf=tempnam("/tmp","FOO");
  +  $tmpf=tempnam($vartmp_dir,"FOO");
     $fp= fopen($tmpf, "w");
     fwrite($fp, $src);
     fclose($fp);
  
  
  
  1.6       +3 -2      moniwiki/plugin/processor/xsltproc.php
  
  Index: xsltproc.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/xsltproc.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- xsltproc.php	4 Dec 2004 18:27:46 -0000	1.5
  +++ xsltproc.php	10 Dec 2005 14:14:59 -0000	1.6
  @@ -6,7 +6,7 @@
   // Usage: {{{#!xsltproc
   // xml codes
   // }}}
  -// $Id: xsltproc.php,v 1.5 2004/12/04 18:27:46 wkpark Exp $
  +// $Id: xsltproc.php,v 1.6 2005/12/10 14:14:59 wkpark Exp $
   
   function processor_xsltproc($formatter,$value) {
     global $DBInfo;
  @@ -18,6 +18,7 @@
     }
   
     $pagename=$formatter->page->name;
  +  $vartmp_dir=&$DBInfo->vartmp_dir;
   
     $cache= new Cache_text("docbook");
   
  @@ -39,7 +40,7 @@
     }
     $src=$buff.$line."\n".$body;
   
  -  $tmpf=tempnam("/tmp","XSLT");
  +  $tmpf=tempnam($vartmp_dir,"XSLT");
     $fp= fopen($tmpf, "w");
     fwrite($fp, $src);
     fclose($fp);
  
  
  


wkpark      2005/12/10 23:20:58

  Modified:    plugin/processor abc.php latex.php metapost.php octave.php
                        pic.php
  Log:
  more fixes
  
  Revision  Changes    Path
  1.5       +5 -5      moniwiki/plugin/processor/abc.php
  
  Index: abc.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/abc.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- abc.php	10 Dec 2005 14:14:59 -0000	1.4
  +++ abc.php	10 Dec 2005 14:20:57 -0000	1.5
  @@ -6,7 +6,7 @@
   // Usage: {{{#!abc
   // blah blah
   // }}}
  -// $Id: abc.php,v 1.4 2005/12/10 14:14:59 wkpark Exp $
  +// $Id: abc.php,v 1.5 2005/12/10 14:20:57 wkpark Exp $
   
   function processor_abc($formatter="",$value="") {
     global $DBInfo;
  @@ -65,12 +65,12 @@
   #
   # Unix
   #
  -     $cmd= "$abc2midi $tmpf -o $cache_dir/$uniq.midi 2> $flog";
  -     $fp=popen($cmd,'w');
  +     $cmd= "$abc2midi $tmpf -o $cache_dir/$uniq.midi";
  +     $fp=popen($cmd,'r');
  +     $log='';
  +     while($s = fgets($fp, 1024)) $log.= $s;
        pclose($fp);
   
  -     $log=join(file($flog),"");
  -     unlink($flog);
        unlink($tmpf);
     
        if ($log)
  
  
  
  1.11      +4 -4      moniwiki/plugin/processor/latex.php
  
  Index: latex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/latex.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- latex.php	10 Dec 2005 14:14:59 -0000	1.10
  +++ latex.php	10 Dec 2005 14:20:57 -0000	1.11
  @@ -6,7 +6,7 @@
   // Usage: {{{#!latex
   // $ \alpha $
   // }}}
  -// $Id: latex.php,v 1.10 2005/12/10 14:14:59 wkpark Exp $
  +// $Id: latex.php,v 1.11 2005/12/10 14:20:57 wkpark Exp $
   
   function processor_latex($formatter="",$value="") {
     global $DBInfo;
  @@ -66,7 +66,7 @@
        $cwd= getcwd();
        chdir($vartmp_dir);
        $cmd= "$latex $option $uniq.tex >$NULL";
  -     $fp=popen($cmd,'w');
  +     $fp=popen($cmd,'r');
        pclose($fp);
   
        if (!file_exists($uniq.".dvi")) {
  @@ -75,12 +75,12 @@
          return;
        }
        $cmd= "$dvips -D 600 $uniq.dvi -o $uniq.ps";
  -     $fp=popen($cmd,'w');
  +     $fp=popen($cmd,'r');
        pclose($fp);
        chdir($cwd);
   
        $cmd= "$convert -transparent white -crop 0x0 -density 120x120 $vartmp_dir/$uniq.ps $outpath";
  -     $fp=popen($cmd,'w');
  +     $fp=popen($cmd,'r');
        pclose($fp);
        unlink($vartmp_dir."/$uniq.log");
        unlink($vartmp_dir."/$uniq.aux");
  
  
  
  1.3       +3 -3      moniwiki/plugin/processor/metapost.php
  
  Index: metapost.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/metapost.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- metapost.php	10 Dec 2005 14:14:59 -0000	1.2
  +++ metapost.php	10 Dec 2005 14:20:58 -0000	1.3
  @@ -5,7 +5,7 @@
   //
   // Usage: {{{#!metapost
   // }}}
  -// $Id: metapost.php,v 1.2 2005/12/10 14:14:59 wkpark Exp $
  +// $Id: metapost.php,v 1.3 2005/12/10 14:20:58 wkpark Exp $
   
   function processor_metapost($formatter,$value="") {
     global $DBInfo;
  @@ -55,12 +55,12 @@
        $dir=getcwd();
        chdir($vartmp_dir);
        $cmd= "$mpost $option $uniq >/dev/null";
  -     $fp=popen($cmd,'w');
  +     $fp=popen($cmd,'r');
        pclose($fp);
        chdir($dir);
   
        $cmd= "$convert $vartmp_dir/$uniq.1 $outpath";
  -     $fp=popen($cmd,'w');
  +     $fp=popen($cmd,'r');
        pclose($fp);
   
        @copy("$vartmp_dir/$uniq.1","$cache_dir/$uniq.ps");
  
  
  
  1.3       +2 -2      moniwiki/plugin/processor/octave.php
  
  Index: octave.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/octave.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- octave.php	10 Dec 2005 14:14:59 -0000	1.2
  +++ octave.php	10 Dec 2005 14:20:58 -0000	1.3
  @@ -6,7 +6,7 @@
   // Usage: {{{#!octave
   // code..
   // }}}
  -// $Id: octave.php,v 1.2 2005/12/10 14:14:59 wkpark Exp $
  +// $Id: octave.php,v 1.3 2005/12/10 14:20:58 wkpark Exp $
   
   function processor_octave($formatter="",$value="") {
     global $DBInfo;
  @@ -80,7 +80,7 @@
          # Unix
          #
          $cmd= "$octave 2> $flog";
  -       $fp=popen($cmd,"w");
  +       $fp=popen($cmd,"r");
          fwrite($fp,$src);
          pclose($fp);
          $log=implode('',file($flog));
  
  
  
  1.3       +2 -2      moniwiki/plugin/processor/pic.php
  
  Index: pic.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/pic.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- pic.php	10 Dec 2005 14:14:59 -0000	1.2
  +++ pic.php	10 Dec 2005 14:20:58 -0000	1.3
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a PIC plugin for the MoniWiki
   //
  -// $Id: pic.php,v 1.2 2005/12/10 14:14:59 wkpark Exp $
  +// $Id: pic.php,v 1.3 2005/12/10 14:20:58 wkpark Exp $
   // Usage: {{{#!pic
   // some codes
   // }}}
  @@ -43,7 +43,7 @@
       fclose($ifp);
   
       # convert processing
  -    $fp=popen("$GROFF $outpath_pic >$outpath_ps ; $CONVERT $outpath_ps $outpath_png","w");
  +    $fp=popen("$GROFF $outpath_pic >$outpath_ps ; $CONVERT $outpath_ps $outpath_png","r");
       pclose($fp);
   
       # delete temporary files
  
  
  


wkpark      2005/12/10 23:24:50

  Modified:    plugin   rcs.php rcspurge.php
  Log:
  replace system() with popen()
  
  Revision  Changes    Path
  1.5       +3 -2      moniwiki/plugin/rcs.php
  
  Index: rcs.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rcs.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- rcs.php	31 Aug 2005 11:42:56 -0000	1.4
  +++ rcs.php	10 Dec 2005 14:24:50 -0000	1.5
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a rcs action plugin for the MoniWiki
   //
  -// $Id: rcs.php,v 1.4 2005/08/31 11:42:56 wkpark Exp $
  +// $Id: rcs.php,v 1.5 2005/12/10 14:24:50 wkpark Exp $
   
   function do_post_rcs($formatter,$options) {
     global $DBInfo;
  @@ -21,7 +21,8 @@
     if (isset($options['param'])) {
       if ($DBInfo->hasPage($formatter->page->name) and in_array($options['param'],$supported)) {
         $key=$DBInfo->getPageKey($formatter->page->name);
  -      system( "rcs $options[param] $key" );
  +      $fp=popen( "rcs $options[param] $key",'r');
  +      pclose($fp);
         $title = sprintf(_("Change options for \"%s\""), $formatter->page->name);
         $formatter->send_header("",$options);
         $formatter->send_title($title,"",$options);
  
  
  
  1.3       +3 -2      moniwiki/plugin/rcspurge.php
  
  Index: rcspurge.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rcspurge.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- rcspurge.php	7 Jan 2004 02:19:16 -0000	1.2
  +++ rcspurge.php	10 Dec 2005 14:24:50 -0000	1.3
  @@ -4,7 +4,7 @@
   // a rcspurge action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: rcspurge.php,v 1.2 2004/01/07 02:19:16 wkpark Exp $
  +// $Id: rcspurge.php,v 1.3 2005/12/10 14:24:50 wkpark Exp $
   
   function do_rcspurge($formatter,$options) {
     global $DBInfo;
  @@ -39,7 +39,8 @@
          else {
            #print "<b>Not enabled now</b> <tt>rcs -o$range  data_dir/".$options[page]."</tt><br />";
            print "<tt>rcs -o$range ".$options['page']."</tt><br />";
  -         system("rcs -o$range ".$formatter->page->filename);
  +         $fp=popen("rcs -o$range ".$formatter->page->filename,'r');
  +         pclose($fp);
          }
       }
     } else {
  
  
  


wkpark      2006/01/02 08:27:58

  Modified:    .        wiki.php config.php.default
  Log:
  add a double bracketted link rule similar with the MediaWiki: [[FrontPage]]
  
  Revision  Changes    Path
  1.259     +20 -9     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.258
  retrieving revision 1.259
  diff -u -r1.258 -r1.259
  --- wiki.php	10 Dec 2005 02:44:44 -0000	1.258
  +++ wiki.php	1 Jan 2006 23:27:58 -0000	1.259
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.258 2005/12/10 02:44:44 wkpark Exp $
  +// $Id: wiki.php,v 1.259 2006/01/01 23:27:58 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.258 $',1,-1);
  +$_revision = substr('$Revision: 1.259 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -573,6 +573,7 @@
       $this->hr_type='simple';
       $this->nonexists='simple';
       $this->use_sistersites=1;
  +    $this->use_singlebracket=1;
       $this->use_twinpages=1;
       $this->use_hostname=1;
       $this->pagetype=array();
  @@ -1558,11 +1559,11 @@
       # "(?<!\!|\[\[)\b(([A-Z]+[a-z0-9]+){2,})\b|".
       # "(?<!\!|\[\[)((?:\/?[A-Z]([a-z0-9]+|[A-Z]*(?=[A-Z][a-z0-9]|\b))){2,})\b|".
       # WikiName rule: WikiName ILoveYou (imported from the rule of NoSmoke)
  -    # protect WikiName rule !WikiName
  +    # and protect WikiName rule !WikiName
       #"(?:\!)?((?:\.{1,2}?\/)?[A-Z]([A-Z]+[0-9a-z]|[0-9a-z]+[A-Z])[0-9a-zA-Z]*)+\b|".
       "(?<![a-zA-Z])\!?(?:((\.{1,2})?\/)?[A-Z]([A-Z]+[0-9a-z]|[0-9a-z]+[A-Z])[0-9a-zA-Z]*)+\b|".
  -    # single bracketed name [Hello World]
  -    "(?<!\[)\!?\[([^\[:,<\s'][^\[:,>]{1,255})\](?!\])|".
  +    # double bracketed rule similar with MediaWiki [[Hello World]]
  +    "(?<!\[)\!?\[\[([^\[:,<\s'][^\[:,>]{1,255})\]\](?!\])|".
       # bracketed with double quotes ["Hello World"]
       "(?<!\[)\!?\[\\\"([^\\\"]+)\\\"\](?!\])|".
       # "(?<!\[)\[\\\"([^\[:,]+)\\\"\](?!\])|".
  @@ -1570,6 +1571,12 @@
       # single linkage rule ?hello ?abacus
       #"(\?[A-Z]*[a-z0-9]+)";
       "(\?[A-Za-z0-9]+)";
  +
  +    if ($DBInfo->use_singlebracket) {
  +      # single bracketed name [Hello World]
  +      $this->wordrule.= "|(?<!\[)\!?\[([^\[:,<\s'][^\[:,>]{1,255})\](?!\])";
  +    }
  +
       $this->footrule="\[\*[^\]]*\s[^\]]+\]";
   
       $this->cache= new Cache_text("pagelinks");
  @@ -2153,8 +2160,9 @@
     }
   
     function macro_repl($macro,$value='',$options='') {
  -    if (!$value and (strpos($macro,'(') !== false)) {
  -      preg_match("/^([A-Za-z]+)(\((.*)\))?$/",$macro,$match);
  +    preg_match("/^([A-Za-z]+)(\((.*)\))?$/",$macro,$match);
  +    if (!$match) return $this->word_repl($macro);
  +    if (!$value and $match[1] and $match[2]) { #strpos($macro,'(') !== false)) {
         $name=$match[1]; $args=($match[2] and !$match[3]) ? true:$match[3];
       } else {
         $name=$macro; $args=$value;
  @@ -2162,7 +2170,8 @@
   
       $plugin=($np=getPlugin($name))?$np:$name;
       if (!function_exists ("macro_".$plugin)) {
  -      if (!$np) return "[[".$name."]]";
  +      #if (!$np) return "[[".$name."]]";
  +      if (!$np) return $this->word_repl($name);
         include_once("plugin/$plugin.php");
       }
       $ret=call_user_func_array("macro_$plugin",array(&$this,$args,$options));
  @@ -2543,9 +2552,11 @@
              $in_pre=-1;
            }
         #} else if ($in_pre == 0 && preg_match("/{{{[^}]*$/",$line)) {
  +      #} else if (preg_match("/(\{{2,3})[^{}]*$/",$line,$m)) {
         } else if (!(strpos($line,"{{{")===false) and 
                    preg_match("/{{{[^{}]*$/",$line)) {
            #$p=strrpos($line,"{{{")-2;
  +         #$p= strlen($line) - strpos(strrev($line),$m[1]) - strlen($m[1]);
            $p= strlen($line) - strpos(strrev($line),'{{{') - 3;
   
            $processor="";
  @@ -2702,7 +2713,7 @@
           if ($this->section_edit && !$this->preview) {
             $act='edit';
             if ($DBInfo->use_ajax) {
  -            $onclick=' Onclick="javascript:sectionEdit(null,this,'.
  +            $onclick=' onclick="javascript:sectionEdit(null,this,'.
                 $this->sect_num.');return false;"';
             }
             $url=$this->link_url($this->page->urlname,
  
  
  
  1.23      +14 -2     moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- config.php.default	19 Aug 2005 06:32:28 -0000	1.22
  +++ config.php.default	1 Jan 2006 23:27:58 -0000	1.23
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.22 2005/08/19 06:32:28 wkpark Exp $
  +# $Id: config.php.default,v 1.23 2006/01/01 23:27:58 wkpark Exp $
   #
   $sitename='UnnamedWiki';
   $data_dir= './data';
  @@ -38,6 +38,7 @@
   $notify= 0;
   $use_referer= 0;
   $use_sistersites=1;
  +#$use_singlebracket=1;
   $use_twinpages=1;
   $use_trackback=0;
   $vim_options='+"set expandtab" +"retab"';
  @@ -92,9 +93,11 @@
   #$password_length=6;
   #$use_convert_thumbs=0;
   
  -#$processors=array('latex'=>'latex');
  +#$myprocessors=array('latex'=>'latex');
  +#$myplugins=array('FullSearch'=>'FastSearch');
   #$inline_latex='mimetex';
   #$inline_latex='latex';
  +#$inline_latex='itex';
   #$inline_latex='1';
   
   #$url_schemas='mms';
  @@ -119,4 +122,13 @@
   #$ticket_gdfont=5;
   #$ticket_font='TTFONT';
   #$gdfontpath='./data';
  +$local_abbr='LocalDictionary';
  +$postfilters='abbr';
  +$use_forcemerge=1;
  +$default_language='ko';
  +$use_alias=0;
  +#$aliaspage=$data_dir.'/text/AliasPageNames';
  +$css_friendly=0;
  +$use_redirect_msg=1;
  +#$use_safelogin=0;
   ?>
  
  
  


wkpark      2006/01/02 08:53:08

  Modified:    .        config.php.default wiki.php
  Log:
  support $url_mappings feature like as MoinMoin. Please see config.php.default
  
  Revision  Changes    Path
  1.24      +2 -1      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- config.php.default	1 Jan 2006 23:27:58 -0000	1.23
  +++ config.php.default	1 Jan 2006 23:53:08 -0000	1.24
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.23 2006/01/01 23:27:58 wkpark Exp $
  +# $Id: config.php.default,v 1.24 2006/01/01 23:53:08 wkpark Exp $
   #
   $sitename='UnnamedWiki';
   $data_dir= './data';
  @@ -131,4 +131,5 @@
   $css_friendly=0;
   $use_redirect_msg=1;
   #$use_safelogin=0;
  +#$url_mappings=array('http://faq.ktug.or.kr/mywiki'=>'http://faq.ktug.or.kr/faq');
   ?>
  
  
  
  1.260     +12 -2     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.259
  retrieving revision 1.260
  diff -u -r1.259 -r1.260
  --- wiki.php	1 Jan 2006 23:27:58 -0000	1.259
  +++ wiki.php	1 Jan 2006 23:53:08 -0000	1.260
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.259 2006/01/01 23:27:58 wkpark Exp $
  +// $Id: wiki.php,v 1.260 2006/01/01 23:53:08 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.259 $',1,-1);
  +$_revision = substr('$Revision: 1.260 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -1478,6 +1478,7 @@
       $this->section_edit=$DBInfo->use_sectionedit;
       $this->auto_linebreak=$DBInfo->auto_linebreak;
       $this->nonexists=$DBInfo->nonexists;
  +    $this->url_mappings=$DBInfo->url_mappings;
   
       if (($p=strpos($page->name,"~")))
         $this->group=substr($page->name,0,$p+1);
  @@ -1797,6 +1798,15 @@
           $external_icon=$this->icon['external'];
         }
   
  +      if ($this->url_mappings) {
  +        foreach ($this->url_mappings as $pre=>$rpre) {
  +          if (preg_match('/'.preg_quote($pre,'/').'/',$url)) {
  +            $url=$rpre.substr($url,strlen($pre));
  +            break;
  +          }
  +        }
  +      }
  +
         if (preg_match("/^mailto:/",$url)) {
           $url=str_replace("@","_at_",$url);
           $link=str_replace('&','&amp;',$url);
  
  
  


wkpark      2006/01/02 21:21:33

  Removed:     imgs/smile 8'-).gif 8-E.gif 8-F.gif 8-I.gif 8-Q.gif 8-[.gif
                        8-star.gif 88-).gif =8-).gif =88O.gif =8O.gif
                        vampire-L.gif
  Log:
  remove some useless smileys


wkpark      2006/01/03 02:53:56

  Modified:    .        wikilib.php
  Log:
  support "new password request" feature
  
  Revision  Changes    Path
  1.182     +20 -5     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.181
  retrieving revision 1.182
  diff -u -r1.181 -r1.182
  --- wikilib.php	10 Dec 2005 12:10:24 -0000	1.181
  +++ wikilib.php	2 Jan 2006 17:53:56 -0000	1.182
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.181 2005/12/10 12:10:24 wkpark Exp $
  +// $Id: wikilib.php,v 1.182 2006/01/02 17:53:56 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -296,7 +296,7 @@
       $config=array("css_url","datatime_fmt","email","bookmark","language",
                     "name","password","wikiname_add_spaces","subscribed_pages",
                     "scrapped_pages","quicklinks","theme","ticket","eticket",
  -	  	  "tz_offset");
  +	  	  "tz_offset","npassword","nticket");
   
       $date=gmdate('Y/m/d', time());
       $data="# Data saved $date\n";
  @@ -305,7 +305,8 @@
         $user->info['ticket']=$user->ticket;
   
       foreach ($config as $key) {
  -      $data.="$key=".$user->info[$key]."\n";
  +      if ($user->info[$key] != '')
  +        $data.="$key=".$user->info[$key]."\n";
       }
   
       #print $data;
  @@ -509,7 +510,7 @@
   }
   
   function macro_EditHints($formatter) {
  -  $hints = "<div class=\"hint\">\n";
  +  $hints = "<div class=\"wikiHints\">\n";
     $hints.= _("<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold italics</i></b>''''';\n''<i>mixed '''<b>bold</b>''' and italics</i>''; ---- horizontal rule.<br />\n<b>Headings:</b> = Title 1 =; == Title 2 ==; === Title 3 ===;\n==== Title 4 ====; ===== Title 5 =====.<br />\n<b>Lists:</b> space and one of * bullets; 1., a., A., i., I. numbered items;\n1.#n start numbering at n; space alone indents.<br />\n<b>Links:</b> JoinCapitalizedWords; [\"brackets and double quotes\"];\n[bracketed words];\nurl; [url]; [url label].<br />\n<b>Tables</b>: || cell text |||| cell text spanning two columns ||;\nno trailing white space allowed after tables or titles.<br />\n");
     $hints.= "</div>\n";
     return $hints;
  @@ -790,7 +791,8 @@
   }
   
   function ajax_invalid($formatter,$options) {
  -  $formatter->send_header("Status: 406 Not Acceptable",$options);
  +  $formatter->send_header(array("Content-Type: text/plain",
  +			"Status: 406 Not Acceptable"),$options);
     print "false\n";
     return;
   }
  @@ -1398,6 +1400,10 @@
   function wiki_sendmail($body,$options) {
     global $DBInfo;
   
  +  if (!$DBInfo->use_sendmail) {
  +    return array('msg'=>_("This wiki does not support sendmail"));
  +  }
  +
     if ($options['id'])
       $from=$options['id'];
     else
  @@ -1415,6 +1421,7 @@
     $mailheaders.= "Content-Transfer-Encoding: 8bit\n\n";
   
     mail($email,$subject,$body,$mailheaders,'-f"'.$from.'"');
  +  return 0;
   }
   
   
  @@ -1707,6 +1714,13 @@
       $onsubmit='';
       $passwd_hidden='';
     }
  +  if ($button==_("Make profile")) {
  +    if ($DBInfo->use_sendmail) {
  +      $button2=_("E-mail new password");
  +      $emailpasswd=
  +        "<input type=\"submit\" name=\"login\" value=\"$button2\" />\n";
  +    }
  +  }
     return <<<EOF
   $login
   $jscript
  @@ -1720,6 +1734,7 @@
       $extra
     <tr><td></td><td>
       <input type="submit" name="login" value="$button" /> &nbsp;
  +    $emailpasswd
       $logout
     </td></tr>
   </table>
  
  
  


wkpark      2006/01/03 02:53:56

  Modified:    plugin   userform.php
  Log:
  support "new password request" feature
  
  Revision  Changes    Path
  1.13      +94 -1     moniwiki/plugin/userform.php
  
  Index: userform.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/userform.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- userform.php	10 Dec 2005 12:10:24 -0000	1.12
  +++ userform.php	2 Jan 2006 17:53:56 -0000	1.13
  @@ -4,7 +4,7 @@
   // a userform action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: userform.php,v 1.12 2005/12/10 12:10:24 wkpark Exp $
  +// $Id: userform.php,v 1.13 2006/01/02 17:53:56 wkpark Exp $
   
   function do_userform($formatter,$options) {
     global $DBInfo;
  @@ -28,6 +28,13 @@
            $userdb->saveUser($user);
            $title=_("Successfully confirmed");
            $options['msg']=_("Your e-mail address is confirmed successfully");
  +       } else if ($user->info['nticket']==$options['ticket']) {
  +         $title=_("Successfully confirmed");
  +         $user->info['nticket']='';
  +         $user->info['password']=$user->info['npassword'];
  +         $user->info['npassword']='';
  +         $userdb->saveUser($user);
  +         $options['msg']=_("Your new password is confirmed successfully");
          } else {
            $title=_("Confirmation missmatched !");
            $options['msg']=_("Please try again to register your e-mail address");
  @@ -85,6 +92,92 @@
       # logout
       $formatter->header($user->unsetCookie());
       $title= _("Cookie deleted !");
  +  } else if ($DBInfo->use_sendmail and
  +    $options['login'] == _("E-mail new password") and
  +    $user->id=="Anonymous" and $options['email'] and $options['login_id']) {
  +    # email new password
  +
  +    $title='';
  +    if ($DBInfo->use_ticket) {
  +      if ($options['__seed'] and $options['check']) {
  +        $mycheck=getTicket($options['__seed'],$_SERVER['REMOTE_ADDR'],4);
  +        if ($mycheck==$options['check'])
  +          $ok_ticket=1;
  +        else
  +          $title= _("Invalid ticket !");
  +      } else {
  +        $title= _("You need a ticket !");
  +      }
  +    } else {
  +      $ok_ticket=1;
  +    }
  +    $userdb=new UserDB($DBInfo);
  +    if ($userdb->_exists($id)) {
  +      $user=$userdb->getUser($id);
  +    }
  +    if ($ok_ticket and $user->id != "Anonymous") {
  +      if ($options['email'] == $user->info['email']
  +        and $user->info['eticket']=='') {
  +
  +        #make new password
  +        $mypass=base64_encode(getTicket(time(),$_SERVER['REMOTE_ADDR'],10));
  +        $mypass=substr($mypass,0,8);
  +        $options['password']=$mypass;
  +        $old_passwd=$user->info['password'];
  +        if ($DBInfo->use_safelogin) {
  +          $ret=$user->setPasswd(md5($mypass),md5($mypass),1);
  +        } else {
  +          $ret=$user->setPasswd($mypass,$mypass);
  +        }
  +        $new_passwd=$user->info['password'];
  +        $user->info['password']=$old_passwd;
  +        $user->info['npassword']=$new_passwd;
  +
  +        #make ticket
  +        $ticket=md5(time().$user->id.$options['email']);
  +        $user->info['nticket']=$ticket.".".$options['email'];
  +        $userdb->saveUser($user); # XXX
  +
  +        $opts['subject']="[$DBInfo->sitename] "._("New password confirmation");
  +        $opts['email']=$options['email'];
  +        $opts['id']='nobody';
  +        $body=qualifiedUrl($formatter->link_url('',"?action=userform&login_id=$user->id&ticket=$ticket.$options[email]"));
  +
  +        $body=_("Please confirm your new password")."\n".$body."\n";
  +
  +        $body.=sprintf(_("Your new password is %s"),$mypass)."\n\n";
  +        $body.=_("Please change your password later")."\n";
  +
  +        $ret=wiki_sendmail($body,$opts);
  +        if (is_array($ret)) {
  +          $title=_("Fail to e-mail notification !");
  +          $options['msg']=$ret['msg'];
  +        } else {
  +          $title=_("New password is sent to your e-mail !");
  +          $options['msg']=_("Please check your e-mail");
  +        }
  +      } else {
  +        if ($options['email'] != $user->info['email']) {
  +          $title=_("Fail to e-mail notification !");
  +          $options['msg']=_("E-mail mismatch !");
  +        } else {
  +          $title=_("Invalid request");
  +          $options['msg']=_("Please confirm your e-mail address first !");
  +        }
  +      }
  +    } else {
  +      if (!$ok_ticket) {
  +        $title=_("Invalid ticket !");
  +      } else {
  +        $title=_("ID and e-mail mismatch !");
  +      }
  +      $options['msg']=_("Please try again or make a new profile");
  +    }
  +    $formatter->send_header("",$options);
  +    $formatter->send_title($title,"",$options);
  +
  +    $formatter->send_footer("",$options);
  +    return;
     } else if ($user->id=="Anonymous" and $options['login_id'] and
       (($options['password'] and $options['passwordagain']) or
        ($DBInfo->use_safelogin and $options['email'])) ) {
  
  
  


wkpark      2006/01/03 02:56:50

  Modified:    local    csshover.htc
  Log:
  import new version
  
  Revision  Changes    Path
  1.2       +46 -20    moniwiki/local/csshover.htc
  
  Index: csshover.htc
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/csshover.htc,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- csshover.htc	23 Sep 2005 17:13:00 -0000	1.1
  +++ csshover.htc	2 Jan 2006 17:56:50 -0000	1.2
  @@ -1,25 +1,38 @@
   <attach event="ondocumentready" handler="parseStylesheets" />
  -<script language="JScript">
  +<script>
   /**
  - *	Pseudos - V1.30.050121 - hover & active
  - *	---------------------------------------------
  - *	Peterned - http://www.xs4all.nl/~peterned/
  + *	Whatever:hover - V1.41.050927 - hover & active
  + *	------------------------------------------------------------
    *	(c) 2005 - Peter Nederlof
  + *	Peterned - http://www.xs4all.nl/~peterned/
  + *	License  - http://creativecommons.org/licenses/LGPL/2.1/
  + *
  + *	Whatever:hover is free software; you can redistribute it and/or
  + *	modify it under the terms of the GNU Lesser General Public
  + *	License as published by the Free Software Foundation; either
  + *	version 2.1 of the License, or (at your option) any later version.
    *
  - *	Credits  - Arnoud Berendsen 
  - *	         - Martin Reurings
  - *           - Robert Hanson
  + *	Whatever:hover is distributed in the hope that it will be useful,
  + *	but WITHOUT ANY WARRANTY; without even the implied warranty of
  + *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  + *	Lesser General Public License for more details.
  + *
  + *	Credits and thanks to:
  + *	Arnoud Berendsen, Martin Reurings, Robert Hanson
    *
    *	howto: body { behavior:url("csshover.htc"); }
  - *	---------------------------------------------
  + *	------------------------------------------------------------
    */
   
  -var currentSheet, doc = window.document, activators = {
  +var csshoverReg = /(^|\s)(([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active)/i,
  +currentSheet, doc = window.document, hoverEvents = [], activators = {
   	onhover:{on:'onmouseover', off:'onmouseout'},
   	onactive:{on:'onmousedown', off:'onmouseup'}
   }
   
   function parseStylesheets() {
  +	if(!/MSIE (5|6)/.test(navigator.userAgent)) return;
  +	window.attachEvent('onunload', unhookHoverEvents);
   	var sheets = doc.styleSheets, l = sheets.length;
   	for(var i=0; i<l; i++) 
   		parseStylesheet(sheets[i]);
  @@ -40,13 +53,14 @@
   
   	function parseCSSRule(rule) {
   		var select = rule.selectorText, style = rule.style.cssText;
  -		if(!(/(^|\s)(([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active)/i).test(select) || !style) return;
  +		if(!csshoverReg.test(select) || !style) return;
   		
   		var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1');
   		var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo);
   		var className = (/\.([a-z0-9_-]*on(hover|active))/i).exec(newSelect)[1];
  -		var affected = select.replace(/:hover.*$/, '');
  +		var affected = select.replace(/:(hover|active).*$/, '');
   		var elements = getElementsBySelect(affected);
  +		if(elements.length == 0) return;
   
   		currentSheet.addRule(newSelect, style);
   		for(var i=0; i<elements.length; i++)
  @@ -57,12 +71,22 @@
   	if(!node.hovers) node.hovers = {};
   	if(node.hovers[className]) return;
   	node.hovers[className] = true;
  -	node.attachEvent(events.on,
  -		function() { node.className += ' ' + className; });
  -	node.attachEvent(events.off,
  -		function() { node.className = 
  -			node.className.replace(new RegExp('\\s+'+className, 'g'),''); });
  +	hookHoverEvent(node, events.on, function() { node.className += ' ' + className; });
  +	hookHoverEvent(node, events.off, function() { node.className = node.className.replace(new RegExp('\\s+'+className, 'g'),''); });
   }
  +	function hookHoverEvent(node, type, handler) {
  +		node.attachEvent(type, handler);
  +		hoverEvents[hoverEvents.length] = { 
  +			node:node, type:type, handler:handler 
  +		};
  +	}
  +
  +	function unhookHoverEvents() {
  +		for(var e,i=0; i<hoverEvents.length; i++) {
  +			e = hoverEvents[i]; 
  +			e.node.detachEvent(e.type, e.handler);
  +		}
  +	}
   
   function getElementsBySelect(rule) {
   	var parts, nodes = [doc];
  @@ -73,17 +97,19 @@
   }
   	function getSelectedNodes(select, elements) {
   		var result, node, nodes = [];
  -		var classname = (/\.([a-z0-9_-]+)/i).exec(select);
   		var identify = (/\#([a-z0-9_-]+)/i).exec(select);
  +		if(identify) return [doc.getElementById(identify[1])];
  +		
  +		var classname = (/\.([a-z0-9_-]+)/i).exec(select);
   		var tagName = select.replace(/(\.|\#|\:)[a-z0-9_-]+/i, '');
  +		var classReg = classname? new RegExp('\\b' + classname[1] + '\\b'):false;
   		for(var i=0; i<elements.length; i++) {
   			result = tagName? elements[i].all.tags(tagName):elements[i].all; 
   			for(var j=0; j<result.length; j++) {
   				node = result[j];
  -				if((identify && node.id != identify[1]) || (classname && !(new RegExp('\\b' +
  -					classname[1] + '\\b').exec(node.className)))) continue;
  +				if(classReg && !classReg.test(node.className)) continue;
   				nodes[nodes.length] = node;
   			}
   		}	return nodes;
   	}
  -</script>
  +</script>
  \ No newline at end of file
  
  
  


wkpark      2006/01/03 19:42:09

  Modified:    .        upgrade.sh
  Log:
  fixed #301037
  
  Revision  Changes    Path
  1.2       +9 -4      moniwiki/upgrade.sh
  
  Index: upgrade.sh
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/upgrade.sh,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- upgrade.sh	20 Aug 2004 09:20:05 -0000	1.1
  +++ upgrade.sh	3 Jan 2006 10:42:09 -0000	1.2
  @@ -1,5 +1,5 @@
   #!/bin/sh
  -# $Id: upgrade.sh,v 1.1 2004/08/20 09:20:05 wkpark Exp $
  +# $Id: upgrade.sh,v 1.2 2006/01/03 10:42:09 wkpark Exp $
   
   if [ -z "$1" ]; then
   	cat <<HELP
  @@ -19,15 +19,20 @@
   echo "+-------------------------------+"
   echo "|    MoniWiki upgrade script    |"
   echo "+-------------------------------+"
  +echo "| Warning: only PHP script will |"
  +echo "|   be updated and backuped.    |"
  +echo "|     Please update other files |"
  +echo "|   manually.                   |"
  +echo "+-------------------------------+"
   echo
   $WARNING
  -echo -n " Press enter to continue "
  +echo -n " Press enter to continue or Control-C to exit "
   $NORMAL
   read
   
   CHECKSUM=
   PACKAGE=moniwiki
  -FILELIST="wiki.php wikilib.php wikismiley.php plugin/*.php plugin/processor/*.php"
  +FILELIST="wiki.php wikilib.php wikismiley.php plugin/*.php plugin/processor/*.php plugin/filter/*.php"
   for arg; do
   
           case $# in
  @@ -72,7 +77,7 @@
   
   UPGRADE=`diff checksum-current checksum-new |grep '^<'|cut -d' ' -f4`
   
  -if [ -z $UPGRADE ]; then
  +if [ -z "$UPGRADE" ]; then
   	echo "You have already installed the latest version"
   	exit
   fi
  
  
  


wkpark      2006/01/03 19:46:10

  Modified:    .        wikilib.php
  Log:
  fixed #301027 by Seong-hyun Cho
  
  Revision  Changes    Path
  1.183     +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.182
  retrieving revision 1.183
  diff -u -r1.182 -r1.183
  --- wikilib.php	2 Jan 2006 17:53:56 -0000	1.182
  +++ wikilib.php	3 Jan 2006 10:46:10 -0000	1.183
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.182 2006/01/02 17:53:56 wkpark Exp $
  +// $Id: wikilib.php,v 1.183 2006/01/03 10:46:10 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -981,7 +981,7 @@
           $new=iconv($from,$to,$url);
           if ($new) $url=_urlencode($new);
         } else {
  -        $buf=exec(escapeshellcmd("echo ".$options[page])." | ".escapeshellcmd("iconv -f $DBInfo->charset -t $to"));
  +        $buf=exec(escapeshellcmd("echo ".$url." | ".escapeshellcmd("iconv -f $DBInfo->charset -t $to"));
           $url=_urlencode($buf);
         }
       }
  
  
  


wkpark      2006/01/03 19:59:14

  Modified:    .        wikilib.php
  Log:
  fix last change
  
  Revision  Changes    Path
  1.184     +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.183
  retrieving revision 1.184
  diff -u -r1.183 -r1.184
  --- wikilib.php	3 Jan 2006 10:46:10 -0000	1.183
  +++ wikilib.php	3 Jan 2006 10:59:14 -0000	1.184
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.183 2006/01/03 10:46:10 wkpark Exp $
  +// $Id: wikilib.php,v 1.184 2006/01/03 10:59:14 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -981,7 +981,7 @@
           $new=iconv($from,$to,$url);
           if ($new) $url=_urlencode($new);
         } else {
  -        $buf=exec(escapeshellcmd("echo ".$url." | ".escapeshellcmd("iconv -f $DBInfo->charset -t $to"));
  +        $buf=exec(escapeshellcmd("echo ".$url." | ".escapeshellcmd("iconv -f $DBInfo->charset -t $to")));
           $url=_urlencode($buf);
         }
       }
  
  
  


wkpark      2006/01/03 22:24:19

  Modified:    .        wiki.php
  Log:
  new syntax added: support quote style like as " >>blah blah"
  
  Revision  Changes    Path
  1.261     +28 -12    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.260
  retrieving revision 1.261
  diff -u -r1.260 -r1.261
  --- wiki.php	1 Jan 2006 23:53:08 -0000	1.260
  +++ wiki.php	3 Jan 2006 13:24:19 -0000	1.261
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.260 2006/01/01 23:53:08 wkpark Exp $
  +// $Id: wiki.php,v 1.261 2006/01/03 13:24:19 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.260 $',1,-1);
  +$_revision = substr('$Revision: 1.261 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -1760,7 +1760,7 @@
           if ($m[2]=='') $m[1].='1';
           return "<font size='$m[1]'>$m[3]</font>";
         }
  -      return "<tt class='wiki'>$url</tt>"; # No link
  +      return "<tt class='wiki'>".str_replace("<","&lt;",$url)."</tt>"; # No link
         break;
       case '[':
         $url=substr($url,1,-1);
  @@ -2181,7 +2181,7 @@
       $plugin=($np=getPlugin($name))?$np:$name;
       if (!function_exists ("macro_".$plugin)) {
         #if (!$np) return "[[".$name."]]";
  -      if (!$np) return $this->word_repl($name);
  +      if (!$np) return $this->link_repl($name);
         include_once("plugin/$plugin.php");
       }
       $ret=call_user_func_array("macro_$plugin",array(&$this,$args,$options));
  @@ -2288,11 +2288,12 @@
       return "<div class='separator'><hr class='wiki' /></div>";
     }
   
  -  function _list($on,$list_type,$numtype="",$closetype="") {
  +  function _list($on,$list_type,$numtype="",$closetype="",
  +    $divtype=' class="indent"') {
       if ($list_type=="dd") {
         if ($on)
            #$list_type="dl><dd";
  -         $list_type="div class='indent'";
  +         $list_type="div$divtype";
         else
            #$list_type="dd></dl";
            $list_type="div";
  @@ -2369,8 +2370,8 @@
       return "<span class='purple'><a name='$nid' id='$nid'></a><a href='#$nid'>(".$id.")</a></span>";
     }
   
  -  function _div($on,&$in_div,&$enclose) {
  -    $tag=array("</div>\n","<div>\n");
  +  function _div($on,&$in_div,&$enclose,$attr='') {
  +    $tag=array("</div>\n","<div$attr>\n");
       if ($on) { $in_div++; $open=$enclose;}
       else {
         if (!$in_div) return '';
  @@ -2621,7 +2622,7 @@
         $line=preg_replace('/(&lt;)(\/)?(ins|del)/','<\\2\\3',$nc);
   
         # bullet and indentation
  -      if ($in_pre != -1 && preg_match("/^(\s*)/",$line,$match)) {
  +      if ($in_pre != -1 && preg_match("/^(\s*>*)/",$line,$match)) {
         #if (preg_match("/^(\s*)/",$line,$match)) {
            $open="";
            $close="";
  @@ -2629,7 +2630,20 @@
            $indlen=strlen($match[0]);
            if ($indlen > 0) {
              $line=substr($line,$indlen);
  -           #if (preg_match("/^(\*\s*)/",$line,$limatch)) {
  +           # check div type.
  +           if ($match[0][$indlen-1]=='>') {
  +             # get user defined style
  +             if (($line[0]=='.' or $line[0]=='#') and ($p=strpos($line,' '))) {
  +               if ($line[0]=='.') $dt='class';
  +               else $dt='id';
  +               $divtype=" $dt=\"".substr($line,1,$p-1).'"';
  +               $line=substr($line,$p+1);
  +             } else
  +               $divtype=' class="indent quote"';
  +           } else {
  +             $divtype=' class="indent"';
  +           }
  +
              if ($line[0]=='*') {
                $limatch[1]='*';
                $line=preg_replace("/^(\*\s?)/","<li>",$line);
  @@ -2655,12 +2669,13 @@
               $in_li++;
               $indent_list[$in_li]=$indlen; # add list depth
               $indent_type[$in_li]=$indtype; # add list type
  -            $open.=$this->_list(1,$indtype,$numtype);
  +            $open.=$this->_list(1,$indtype,$numtype,'',$divtype);
            } else if ($indent_list[$in_li] > $indlen) {
               while($in_li >= 0 && $indent_list[$in_li] > $indlen) {
                  if ($indent_type[$in_li]!='dd' && $li_open == $in_li)
                    $close.=$this->_li(0,$li_empty);
  -               $close.=$this->_list(0,$indent_type[$in_li],"",$indent_type[$in_li-1]);
  +               $close.=$this->_list(0,$indent_type[$in_li],"",
  +                 $indent_type[$in_li-1]);
                  unset($indent_list[$in_li]);
                  unset($indent_type[$in_li]);
                  $in_li--;
  @@ -2793,6 +2808,7 @@
         else
           $text.=$line."\n";
         $this->nobr=0;
  +
       } # end rendering loop
   
       # highlight text
  
  
  


wkpark      2006/01/03 22:25:54

  Modified:    css      _base.css nlog.css nsmk.css
  Log:
  update
  
  Revision  Changes    Path
  1.2       +14 -17    moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- _base.css	23 Sep 2005 17:15:11 -0000	1.1
  +++ _base.css	3 Jan 2006 13:25:54 -0000	1.2
  @@ -1,8 +1,8 @@
   /* MoniWiki base CSS 2005/09/22 by wkpark */
   
   body {
  -  /* IE hover hack */
  -  behavior:url("../local/csshover.htc");
  +/* IE hover hack */
  +/* behavior:url("../local/csshover.htc"); */
   }
   
   #wikiMenu {
  @@ -23,7 +23,7 @@
     list-style: none;
     padding:2px 10px;
     margin:2px 1px;
  -  background-color:whitesmoke;
  +/* background-color:whitesmoke; */
   /* the next 4 lines are magic for IE */
     display: block;
     float: left;
  @@ -60,13 +60,6 @@
     font-size:small;
   }
   
  -#wikiLogin {
  -  position:absolute;
  -  right:35px;
  -  top:11px;
  -  height:36px;
  -}
  -
   tt.wiki {font-family:monospace;}
   tt.foot {
     font-family:sans-serif;
  @@ -162,7 +155,6 @@
     border-color:#990000;
     color:#440000;
     padding:0px;
  -  width:100%;
   }
   
   .highlight {
  @@ -216,7 +208,6 @@
     padding-bottom: 5px;
   }
   
  -
   #wikiContent {
     margin: 10px 10px 10px 20px; 
   }
  @@ -250,6 +241,10 @@
     margin-left: 10px;
   }
   
  +* html #wikiIcon {
  +  visibility:visible; /* for IE */
  +}
  +
   #wikiHeader:hover #wikiIcon {
     visibility:visible;
   }
  @@ -258,7 +253,11 @@
     padding:1em 2em 1em 2em;
   }
   
  -div.indent { padding-left:2em; }
  +div.indent {
  +  padding-top: 3px;
  +  margin-top: 3px;
  +  padding-left: 10px;
  +}
   
   div.hint { font-size: 10px; background-color: #369; color:white;}
   a.purple { font-size: 10px; text-decoration:none;}
  @@ -317,7 +316,6 @@
     padding:0.5em;
   }
   
  -
   .pageNav { margin-bottom:5px;font-size : 75%; }
   .pageNext { float: right; }
   .pagePrev { float: left; }
  @@ -337,15 +335,14 @@
     visibility: hidden;
   }
   
  -* html .perma:link, a.perma:visited { /* IE hack */
  +* html a.perma:visited { /* IE hack */
     visibility: visible;
   }
   
   h1:hover a.perma, h2:hover a.perma, h3:hover a.perma {
  -
     visibility: visible;
  -
   }
  +
   h4:hover a.perma, h5:hover a.perma, h6:hover a.perma {
     visibility: visible;
   }
  
  
  
  1.8       +4 -0      moniwiki/css/nlog.css
  
  Index: nlog.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/nlog.css,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- nlog.css	23 Sep 2005 17:15:11 -0000	1.7
  +++ nlog.css	3 Jan 2006 13:25:54 -0000	1.8
  @@ -179,6 +179,10 @@
     background-color:#e0e0e0;
   }
   
  +#wikiMenu li {
  +  background-color:whitesmoke; 
  +}
  +
   #wikiTrailer, #wikiOrigin {
     clear:both;
     padding-left: 20px;
  
  
  
  1.8       +1 -2      moniwiki/css/nsmk.css
  
  Index: nsmk.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/nsmk.css,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- nsmk.css	23 Sep 2005 17:15:11 -0000	1.7
  +++ nsmk.css	3 Jan 2006 13:25:54 -0000	1.8
  @@ -268,8 +268,7 @@
     background-color: #E8E8E8;
     border:1px solid #990000;
     color:#440000;
  -  padding: 0.4em 0.2em 0.2em 0.2em;
  -  width:100%;
  +  padding: 0.4em 0.4em 0.2em 0.4em;
   }
   
   #wikiTrailer,#wikiOrigin {
  
  
  


wkpark      2006/01/03 22:27:57

  Modified:    plugin   Blog.php Fortune.php Gallery.php SlideShow.php
                        pageview.php
  Log:
  update small fixes
  
  Revision  Changes    Path
  1.29      +2 -2      moniwiki/plugin/Blog.php
  
  Index: Blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Blog.php,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- Blog.php	20 Oct 2005 13:09:54 -0000	1.28
  +++ Blog.php	3 Jan 2006 13:27:57 -0000	1.29
  @@ -5,7 +5,7 @@
   //
   // Usage: ?action=Blog
   //
  -// $Id: Blog.php,v 1.28 2005/10/20 13:09:54 iolo Exp $
  +// $Id: Blog.php,v 1.29 2006/01/03 13:27:57 wkpark Exp $
   
   function updateBlogList($formatter) {
     global $DBInfo;
  @@ -256,7 +256,7 @@
     if (!$savetext) {
       #print $formatter->macro_repl('SmileyChooser');
       print macro_EditHints($formatter);
  -    print "<div class='hint'>"._("<b>horizontal rule</b> ---- is not applied on the blog mode.")."</div>\n";
  +    print "<div class='wikiHints'>"._("<b>horizontal rule</b> ---- is not applied on the blog mode.")."</div>\n";
     }
     if ($options['button_preview'] && $options['savetext']) {
       if ($options['title'])
  
  
  
  1.3       +1 -2      moniwiki/plugin/Fortune.php
  
  Index: Fortune.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Fortune.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Fortune.php	20 Sep 2005 10:07:09 -0000	1.2
  +++ Fortune.php	3 Jan 2006 13:27:57 -0000	1.3
  @@ -5,8 +5,7 @@
   //
   // Usage: [[Fortune(science)]]
   //
  -// $Id: Fortune.php,v 1.2 2005/09/20 10:07:09 wkpark Exp $
  -// vim:et:ts=2:
  +// $Id: Fortune.php,v 1.3 2006/01/03 13:27:57 wkpark Exp $
   
   function macro_FortuneSystem($formatter,$value) {
       $ret= exec(escapeshellcmd("/usr/bin/fortune $value"),$log);
  
  
  
  1.21      +15 -2     moniwiki/plugin/Gallery.php
  
  Index: Gallery.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Gallery.php,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- Gallery.php	8 Aug 2005 06:01:02 -0000	1.20
  +++ Gallery.php	3 Jan 2006 13:27:57 -0000	1.21
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Gallery]]
   //
  -// $Id: Gallery.php,v 1.20 2005/08/08 06:01:02 wkpark Exp $
  +// $Id: Gallery.php,v 1.21 2006/01/03 13:27:57 wkpark Exp $
   
   function get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -211,7 +211,20 @@
       $date=date("Y-m-d",$mtime);
       if (preg_match("/\.(jpg|jpeg|gif|png)$/i",$file)) {
         if ($DBInfo->use_convert_thumbs and !file_exists($dir."/thumbnails/".$file)) {
  -        system("convert -scale ".$width." ".$dir."/".$file." ".$dir."/thumbnails/".$file);
  +        if (function_exists('imagecopyresized')) {
  +          $fname=$dif.'/'.$file;
  +          list($w, $h) = getimagesize($fname);
  +          if ($w > $width) {
  +            $nh=$w/$width*$h;
  +            $thumb= imagecreatetruecolor($width,$nh);
  +            // XXX only jpeg for testing now.
  +            $source= imagecreatefromjpeg($fname);
  +            imagecopyresized($thumb, $source, 0,0,0,0, $width, $nh, $w, $h);
  +            imagejpeg ($thumb, $dir.'/thumbnails/'.$file);
  +          }
  +        } else {
  +          system("convert -scale ".$width." ".$dir."/".$file." ".$dir."/thumbnails/".$file);
  +        }
         }
         if (!$selected and file_exists($dir."/thumbnails/".$file)) {
           $thumb=($key == $value) ? $prefix.'thumbnails/'.$id:
  
  
  
  1.5       +3 -3      moniwiki/plugin/SlideShow.php
  
  Index: SlideShow.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SlideShow.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SlideShow.php	20 Sep 2005 10:18:22 -0000	1.4
  +++ SlideShow.php	3 Jan 2006 13:27:57 -0000	1.5
  @@ -5,7 +5,7 @@
   //
   // Usage: [[SlideShow(pagename)]]
   //
  -// $Id: SlideShow.php,v 1.4 2005/09/20 10:18:22 wkpark Exp $
  +// $Id: SlideShow.php,v 1.5 2006/01/03 13:27:57 wkpark Exp $
   
   function macro_SlideShow($formatter,$value='',$options=array()) {
       global $DBInfo;
  @@ -100,10 +100,10 @@
               $dep.'&amp;p=1');
           $icon=$options['action'] ? 'start':'next';
           $start= '<a href="'.$slink.'" title="'._("Start:").' '.$s_title.'">'.
  -            '<img src="'.$icon_dir.$icon.'.png'.'" border="0" alt="<|" /></a>';
  +            '<img src="'.$icon_dir.$icon.'.png'.'" border="0" alt="&lt;|" /></a>';
       } else {
           $start= 
  -            '<img src="'.$icon_dir.'start_off.png'.'" border="0" alt="<|" /></a>';
  +            '<img src="'.$icon_dir.'start_off.png'.'" border="0" alt="&lt;|" /></a>';
       }
       if ($e_title!='' and $options['action']) {
           $elink= $formatter->link_url($urlname,'?action='.$act.
  
  
  
  1.2       +9 -4      moniwiki/plugin/pageview.php
  
  Index: pageview.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/pageview.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- pageview.php	23 Aug 2005 12:28:31 -0000	1.1
  +++ pageview.php	3 Jan 2006 13:27:57 -0000	1.2
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Test]]
   //
  -// $Id: pageview.php,v 1.1 2005/08/23 12:28:31 wkpark Exp $
  +// $Id: pageview.php,v 1.2 2006/01/03 13:27:57 wkpark Exp $
   
   function do_pageview($formatter,$options) {
       global $DBInfo;
  @@ -14,6 +14,8 @@
       if ($options['p']) $sect=$options['p'];
       else $sect=1;
   
  +    $act=$options['action'];
  +
       // get head title section
       list($secthead,$dumm)=explode("\n",$sections[0]);
       preg_match('/^\s*=\s*([^=].*[^=])\s*=\s?$/',$secthead,$match);
  @@ -63,16 +65,19 @@
   
       // make link tags
       if ($o_title!='') {
  -        $olink= $formatter->link_tag($formatter->page->urlname,'?action=pageview&amp;p=1',$o_title);
  +        $olink= $formatter->link_tag($formatter->page->urlname,'?action='.$act.
  +            '&amp;p=1',$o_title);
           $first= _("First:").' '.$olink;
       }
       if ($n_title!='') {
  -        $nlink= $formatter->link_tag($formatter->page->urlname,'?action=pageview&amp;p='.($sect+1),$n_title);
  +        $nlink= $formatter->link_tag($formatter->page->urlname,'?action='.$act.
  +            '&amp;p='.($sect+1),$n_title);
           $next= _("Next:").' '.$nlink;
           $nlink= "<div class='pageNext'>".$nlink." &raquo;</div>\n";
       }
       if ($p_title!='') {
  -        $plink= $formatter->link_tag($formatter->page->urlname,'?action=pageview&amp;p='.($sect-1),$p_title);
  +        $plink= $formatter->link_tag($formatter->page->urlname,'?action='.$act.
  +            '&amp;p='.($sect-1),$p_title);
           $plink= "<div class='pagePrev'>&laquo; ".$plink."</div>\n";
       }
       print "$first$next\n<div class='pageNav'>".$plink.$nlink."</div>\n";
  
  
  


wkpark      2006/01/05 01:18:36

  moniwiki/imgs/plugin/EditToolbar/moniwiki - New directory

wkpark      2006/01/05 01:19:26

  Added:       imgs/plugin/EditToolbar/moniwiki button_bold.png
                        button_extlink.png button_headline.png
                        button_hr.png button_image.png button_italic.png
                        button_link.png button_math.png button_media.png
                        button_nowiki.png button_sig.png
  Log:
  add new default iconset for the toolbar
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/plugin/EditToolbar/moniwiki/button_bold.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/EditToolbar/moniwiki/button_extlink.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/EditToolbar/moniwiki/button_headline.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/EditToolbar/moniwiki/button_hr.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/EditToolbar/moniwiki/button_image.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/EditToolbar/moniwiki/button_italic.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/EditToolbar/moniwiki/button_link.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/EditToolbar/moniwiki/button_math.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/EditToolbar/moniwiki/button_media.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/EditToolbar/moniwiki/button_nowiki.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/EditToolbar/moniwiki/button_sig.png
  
  	<<Binary file>>
  
  


wkpark      2006/01/05 01:20:31

  Modified:    imgs/moni2 new.png rss.png updated.png
  Added:       imgs/moni2 inter.png
  Log:
  change some icons
  
  Revision  Changes    Path
  1.2       +3 -2      moniwiki/imgs/moni2/new.png
  
  	<<Binary file>>
  
  
  1.2       +5 -1      moniwiki/imgs/moni2/rss.png
  
  	<<Binary file>>
  
  
  1.2       +3 -2      moniwiki/imgs/moni2/updated.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni2/inter.png
  
  	<<Binary file>>
  
  


wkpark      2006/01/05 01:51:37

  Modified:    plugin/security needtologin.php
  Log:
  help() method added
  
  Revision  Changes    Path
  1.7       +8 -1      moniwiki/plugin/security/needtologin.php
  
  Index: needtologin.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/needtologin.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- needtologin.php	4 Jan 2005 08:22:58 -0000	1.6
  +++ needtologin.php	4 Jan 2006 16:51:37 -0000	1.7
  @@ -1,6 +1,6 @@
   <?php
   # a needtologin security plugin for the MoniWiki
  -# $Id: needtologin.php,v 1.6 2005/01/04 08:22:58 wkpark Exp $
  +# $Id: needtologin.php,v 1.7 2006/01/04 16:51:37 wkpark Exp $
   
   class Security_needtologin extends Security {
     var $DB;
  @@ -9,6 +9,10 @@
       $this->DB=$DB;
     }
   
  +  function help($formatter) {
  +    return $formatter->macro_repl('UserPreferences');
  +  }
  +
   # $options[page]: pagename
   # $options[id]: user id
   
  @@ -23,6 +27,7 @@
       if ($options['id']=='Anonymous') {
         $options['err']=sprintf(_("You are not allowed to '%s' on this page"),$action);
         $options['err'].="\n"._("Please Login or make your ID on this Wiki ;)");
  +      $options['help']='help';
         return 0;
       }
       return 1;
  @@ -33,6 +38,7 @@
       if ($options['id']=='Anonymous') {
         $options['err']=sprintf(_("You are not allowed to '%s' on this page"),$action);
         $options['err'].="\n"._("Please Login or make your ID on this Wiki ;)");
  +      $options['help']='help';
         return 0;
       }
       return 1;
  @@ -43,6 +49,7 @@
       if ($options['id']=='Anonymous') {
         $options['err']=sprintf(_("You are not allowed to '%s' on this page"),$action);
         $options['err'].="\n"._("Please Login or make your ID on this Wiki ;)");
  +      $options['help']='help';
         return 0;
       }
       return 1;
  
  
  


wkpark      2006/01/05 01:52:04

  Modified:    plugin   SmileyChooser.php
  Log:
  fix for single quote
  
  Revision  Changes    Path
  1.6       +4 -2      moniwiki/plugin/SmileyChooser.php
  
  Index: SmileyChooser.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SmileyChooser.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SmileyChooser.php	7 May 2005 07:40:37 -0000	1.5
  +++ SmileyChooser.php	4 Jan 2006 16:52:04 -0000	1.6
  @@ -5,7 +5,7 @@
   //
   // Usage: [[SmileyChooser]]
   //
  -// $Id: SmileyChooser.php,v 1.5 2005/05/07 07:40:37 iolo Exp $
  +// $Id: SmileyChooser.php,v 1.6 2006/01/04 16:52:04 wkpark Exp $
   
   function macro_SmileyChooser($formatter,$value) {
     global $DBInfo;
  @@ -16,6 +16,7 @@
     $chooser=<<<EOS
   <script language="javascript" type="text/javascript">
   <!--
  +/*<![CDATA[*/
   // from wikibits.js
   function appendText(myText)
   {
  @@ -50,6 +51,7 @@
       txtarea.focus();
     }
   }
  +/*]]*/
   //-->
   </script>
   EOS;
  @@ -58,7 +60,7 @@
     $idx=0;
     while (list($key,$value) = each($DBInfo->smileys)) {
       if ($last_img != $value[3]) {
  -      $skey=str_replace("\\","\\\\",$key);
  +      $skey=str_replace(array("\\","'"),array("\\\\","&#39;"),$key);
         $chooser.= "<span onclick='appendText(\"$skey\")'>".$formatter->smiley_repl($key)."</span>&shy;";
         $last_img = $value[3];
         $idx++;
  
  
  


wkpark      2006/01/05 01:55:06

  Modified:    .        wikilib.php
  Log:
  fix edit() related macro
   * check text based web browser to disable javascripts
  fix do_deletefile() and macro_Attachment()
  
  Revision  Changes    Path
  1.185     +25 -15    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.184
  retrieving revision 1.185
  diff -u -r1.184 -r1.185
  --- wikilib.php	3 Jan 2006 10:59:14 -0000	1.184
  +++ wikilib.php	4 Jan 2006 16:55:06 -0000	1.185
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.184 2006/01/03 10:59:14 wkpark Exp $
  +// $Id: wikilib.php,v 1.185 2006/01/04 16:55:06 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -379,7 +379,7 @@
     }
   
     function setID($id) {
  -     if ($this->checkID($id)) {
  +     if ($id and $this->checkID($id)) {
           $this->id=$id;
           return true;
        }
  @@ -614,6 +614,8 @@
     $edit_rows=$DBInfo->edit_rows ? $DBInfo->edit_rows: 16;
     $cols= preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']) ? $COLS_MSIE : $COLS_OTHER;
   
  +  $use_js= preg_match('/Lynx|w3m|links/', $_SERVER['HTTP_USER_AGENT']) ? 0:1;
  +
     $rows= $options['rows'] > 5 ? $options['rows']: $edit_rows;
     $rows= $rows < 60 ? $rows: $edit_rows;
     $cols= $options['cols'] > 60 ? $options['cols']: $cols;
  @@ -657,24 +659,27 @@
     else
       $previewurl=$formatter->link_url($formatter->page->urlname,'#preview');
   
  -  $menu= '';
  -  if ($preview)
  +  $menu= ''; $sep= '';
  +  if ($preview) {
       $menu= $formatter->link_to('#preview',_("Skip to preview"));
  -  else if (!$options['noresizer']) {
  +    $sep= ' | ';
  +  } else if (!$DBInfo->use_resizer and (!$options['noresizer'] or !$use_js)) {
  +    $sep= ' | ';
       $menu= $formatter->link_to("?action=edit&amp;rows=".($rows-3),_("ReduceEditor"));
  -    $menu.= ' | '.$formatter->link_to("?action=edit&amp;rows=".($rows+3),_("EnlargeEditor"));
  +    $menu.= $sep.$formatter->link_to("?action=edit&amp;rows=".($rows+3),_("EnlargeEditor"));
     }
   
     if (!$options['nomenu']) {
  -    $menu.= " | ".$formatter->link_tag('InterWiki',"",_("InterWiki"));
  -    $menu.= " | ".$formatter->link_tag('HelpOnEditing',"",_("HelpOnEditing"));
  +    $menu.= $sep.$formatter->link_tag('InterWiki',"",_("InterWiki"));
  +    $sep= ' | ';
  +    $menu.= $sep.$formatter->link_tag('HelpOnEditing',"",_("HelpOnEditing"));
     }
   
     $form.=$menu;
     if ($options['action_mode']=='ajax' and $DBInfo->use_ajax) {
       $ajax=" onsubmit='savePage(this);return false'";
     }
  -  $form.= sprintf('<form name="editform" method="post" action="%s"'.$ajax.'>',
  +  $formh= sprintf('<form name="editform" method="post" action="%s"'.$ajax.'>',
       $previewurl);
     if ($text) {
       $raw_body = preg_replace("/\r\n|\r/", "\n", $text);
  @@ -707,7 +712,7 @@
     $raw_body = str_replace(array("&","<"),array("&amp;","&lt;"),$raw_body);
   
     # get categories
  -  if (!$options['nocategories']) {
  +  if ($DBInfo->use_category and !$options['nocategories']) {
     $categories=array();
     $categories= $DBInfo->getLikePages($DBInfo->category_regex);
     if ($categories) {
  @@ -732,7 +737,7 @@
     $save_msg=_("Save");
     $summary_msg=_("Summary of Change");
     if ($DBInfo->use_resizer) {
  -    $form.=<<<EOS
  +    $resizer=<<<EOS
   <script type="text/javascript" language='javascript'>
   //<![CDATA[
   <!--
  @@ -747,8 +752,8 @@
   //]]>
   </script>
   <div id='wikiResize'>
  -<input type='button' value='+' onclick='resize(this.form,3)' />
  -<input type='button' value='-' onclick='resize(this.form,-3)' />
  +<input type='button' class='inc' value='+' onclick='resize(this.form,3)' />
  +<input type='button' class='dec' value='-' onclick='resize(this.form,-3)' />
   </div>
   EOS;
     }
  @@ -769,7 +774,7 @@
       $form.= macro_EditHints($formatter);
     if (!$options['simple'])
       $form.= "<a id='preview' name='preview'></a>";
  -  return $form;
  +  return $formh.$resizer.$form;
   }
   
   
  @@ -787,6 +792,7 @@
       else
         $formatter->send_page("== "._("Is it valid action ?")." ==\n");
     }
  +
     $formatter->send_footer("",$options);
   }
   
  @@ -809,7 +815,11 @@
       }
     } else {
       // GET with 'value=filename' query string
  -    $file=$options['value'];
  +    if ($p=strpos($options['value'],'/')) {
  +      $key=substr($options['value'],0,$p-1);
  +      $file=substr($options['value'],$p+1);
  +    } else
  +      $file=$options['value'];
     }
   
     if (isset($options['files']) or isset($options['file'])) {
  
  
  


wkpark      2006/01/05 01:55:06

  Modified:    plugin   Attachment.php
  Log:
  fix edit() related macro
   * check text based web browser to disable javascripts
  fix do_deletefile() and macro_Attachment()
  
  Revision  Changes    Path
  1.18      +15 -5     moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- Attachment.php	8 Aug 2005 09:32:49 -0000	1.17
  +++ Attachment.php	4 Jan 2006 16:55:06 -0000	1.18
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.17 2005/08/08 09:32:49 wkpark Exp $
  +// $Id: Attachment.php,v 1.18 2006/01/04 16:55:06 wkpark Exp $
   
   function macro_Attachment($formatter,$value,$option='') {
     global $DBInfo;
  @@ -14,6 +14,7 @@
     if ($DBInfo->force_download) $force_download=1;
     if ($DBInfo->download_action) $mydownload=$DBInfo->download_action;
     else $mydownload='download';
  +  $extra_action='';
   
     $text='';
   
  @@ -52,9 +53,10 @@
       parse_str(substr($value,$dummy+1),$attrs);
       $value=substr($value,0,$dummy);
       foreach ($attrs as $name=>$val) {
  -      if ($name=='action')
  -        $mydownload=$val;
  -      else
  +      if ($name=='action') {
  +        if ($val == 'deletefile') $extra_action=$val;
  +        else $mydownload=$val;
  +      } else
           $attr.="$name=\"$val\" ";
       }
   
  @@ -98,8 +100,16 @@
           $url=$formatter->link_url(_urlencode($pagename),"?action=$mydownload&amp;value=".urlencode($value));
         else
           $url=$DBInfo->url_prefix."/"._urlencode($upload_file);
  -      return "<span class=\"imgAttach\"><img src='$url' alt='$file' $attr/></span>";
  +      $img="<img src='$url' alt='$file' $attr/>";
  +
  +      if ($extra_action) {
  +        $url=$formatter->link_url(_urlencode($pagename),"?action=$extra_action&amp;value=".urlencode($value));
  +        $img="<a href='$url'>$img</a>";
  +      }
  +      
  +      return "<span class=\"imgAttach\">$img</span>";
       } else {
  +      $mydownload= $extra_action ? $extra_action:$mydownload;
         $link=$formatter->link_url(_urlencode($pagename),"?action=$mydownload&amp;value=".urlencode($value),$text);
         if ($img_link)
           return "<span class=\"attach\"><a href='$link'>$img_link</a></span>";
  
  
  


wkpark      2006/01/05 01:57:30

  Modified:    .        wiki.php
  Log:
  add "$use_category" option
  more fix for quote syntax to make it google friendly.
  add 'help()' method to security class.
  fix send_header(): make it more css friendly.
  
  Revision  Changes    Path
  1.262     +23 -6     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.261
  retrieving revision 1.262
  diff -u -r1.261 -r1.262
  --- wiki.php	3 Jan 2006 13:24:19 -0000	1.261
  +++ wiki.php	4 Jan 2006 16:57:30 -0000	1.262
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.261 2006/01/03 13:24:19 wkpark Exp $
  +// $Id: wiki.php,v 1.262 2006/01/04 16:57:30 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.261 $',1,-1);
  +$_revision = substr('$Revision: 1.262 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -572,6 +572,7 @@
       $this->diff_type='fancy';
       $this->hr_type='simple';
       $this->nonexists='simple';
  +    $this->use_category=1;
       $this->use_sistersites=1;
       $this->use_singlebracket=1;
       $this->use_twinpages=1;
  @@ -2622,7 +2623,9 @@
         $line=preg_replace('/(&lt;)(\/)?(ins|del)/','<\\2\\3',$nc);
   
         # bullet and indentation
  -      if ($in_pre != -1 && preg_match("/^(\s*>*)/",$line,$match)) {
  +      # and quote begin with ">"
  +      if ($in_pre != -1 &&
  +        preg_match("/^(((>\s)*>)|(\s*>*))/",$line,$match)) {
         #if (preg_match("/^(\s*)/",$line,$match)) {
            $open="";
            $close="";
  @@ -2650,7 +2653,7 @@
                if ($indent_list[$in_li] == $indlen && $indent_type[$in_li]!='dd') $line=$this->_li(0).$line;
                $numtype="";
                $indtype="ul";
  -           } elseif (preg_match("/^((\d+|[aAiI])\.)(#\d+)?\s/",$line,$limatch)){
  +           } elseif (preg_match("/^(([1-9]\d*|[aAiI])\.)(#\d+)?\s/",$line,$limatch)){
                $line=preg_replace("/^((\d+|[aAiI])\.(#\d+)?)/","<li>",$line);
                if ($indent_list[$in_li] == $indlen) $line=$this->_li(0).$line;
                $numtype=$limatch[2][0];
  @@ -2808,6 +2811,8 @@
         else
           $text.=$line."\n";
         $this->nobr=0;
  +      # empty line for quoted div
  +      if (trim($line) =="") $text.="<br />\n";
   
       } # end rendering loop
   
  @@ -3214,6 +3219,7 @@
         $upper_icon=$this->link_tag($upper,'',$this->icon['upper'])." ";
       } else if ($this->group) {
         $group=$this->group;
  +      $groupt=substr($group,0,-1).' &raquo;';
         $myname=substr($this->page->name,strlen($group));
         $upper=_urlencode($myname);
         $upper_icon=$this->link_tag($upper,'',$this->icon['main'])." ";
  @@ -3228,14 +3234,16 @@
       if (!$title) {
         if ($group) { # for UserNameSpace
           $title=$myname;
  -        $group="<div class='wikiGroup'>".(substr($group,0,-1))." &raquo;</div>";
  +        $groupt=
  +          "<span class='wikiGroup'>$groupt</span>";
         } else     
           $title=$this->page->title;
         $title=htmlspecialchars($title);
       }
       # setup title variables
       #$heading=$this->link_to("?action=fullsearch&amp;value="._urlencode($name),$title);
  -    $title="$group<span class='wikiTitle'><b>$title</b></span>";
  +    $title="$groupt<span class='wikiTitle'>$title</span>";
  +    #$title="<span class='wikiTitle'><b>$title</b></span>";
       if ($link)
         $title="<a href=\"$link\" class='wikiTitle'>$title</a>";
       else if (empty($options['nolink']))
  @@ -3791,6 +3799,15 @@
         $formatter->send_title($msg,"", $options);
         if ($options['err'])
           $formatter->send_page($options['err']);
  +
  +      if ($options['help'] and
  +          method_exists($DBInfo->security,$options['help'])) {
  +        print "<div id='wikiHelper'>";
  +        $helper=$DBInfo->security->$options['help'];
  +        print call_user_method($options['help'],$DBInfo->security,$formatter);
  +        print "</div>\n";
  +      }
  +
         $formatter->send_footer($args,$options);
         return;
       } else if ($_SERVER['REQUEST_METHOD']=="POST" and
  
  
  


wkpark      2006/01/05 02:39:08

  Modified:    .        wiki.php
  Log:
  add $use_camelcase option.
  add new processing instructions "#nocamelcase" and "#camelcase" to control
  camelcases linking.
  
  Revision  Changes    Path
  1.263     +27 -10    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.262
  retrieving revision 1.263
  diff -u -r1.262 -r1.263
  --- wiki.php	4 Jan 2006 16:57:30 -0000	1.262
  +++ wiki.php	4 Jan 2006 17:39:08 -0000	1.263
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.262 2006/01/04 16:57:30 wkpark Exp $
  +// $Id: wiki.php,v 1.263 2006/01/04 17:39:08 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.262 $',1,-1);
  +$_revision = substr('$Revision: 1.263 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -573,6 +573,7 @@
       $this->hr_type='simple';
       $this->nonexists='simple';
       $this->use_category=1;
  +    $this->use_camelcase=1;
       $this->use_sistersites=1;
       $this->use_singlebracket=1;
       $this->use_twinpages=1;
  @@ -1539,6 +1540,16 @@
         $this->baserule[]=$smiley_rule;
         $this->baserepl[]=$smiley_repl;
       }
  +    $this->footrule="\[\*[^\]]*\s[^\]]+\]";
  +
  +    $this->cache= new Cache_text("pagelinks");
  +  }
  +
  +  function set_wordrule($pis=array()) {
  +    global $DBInfo;
  +
  +    $camelcase= isset($pis['#camelcase']) ? $pis['#camelcase']:
  +      $DBInfo->use_camelcase;
   
       #$punct="<\"\'}\]\|;,\.\!";
       $punct="<\'}\]\)\|;\.\!"; # , is omitted for the WikiPedia
  @@ -1557,13 +1568,18 @@
       #"\b(".$DBInfo->interwikirule."):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
       #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
       #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+[^\(\)<>\s\',\.:\?\!]+)|".
  -    "(\b|\^?)([A-Z][a-zA-Z]+):([^\(\)<>\s\']*[^\(\)<>\s\'\",\.:\?\!]*(\s(?![\x33-\x7e]))?)|".
  +    "(\b|\^?)([A-Z][a-zA-Z]+):([^\(\)<>\s\']*[^\(\)<>\s\'\",\.:\?\!]*(\s(?![\x33-\x7e]))?)";
  +
  +    if ($camelcase)
  +      $this->wordrule.='|'.
  +      "(?<![a-zA-Z])\!?(?:((\.{1,2})?\/)?[A-Z]([A-Z]+[0-9a-z]|[0-9a-z]+[A-Z])[0-9a-zA-Z]*)+\b";
       # "(?<!\!|\[\[)\b(([A-Z]+[a-z0-9]+){2,})\b|".
       # "(?<!\!|\[\[)((?:\/?[A-Z]([a-z0-9]+|[A-Z]*(?=[A-Z][a-z0-9]|\b))){2,})\b|".
       # WikiName rule: WikiName ILoveYou (imported from the rule of NoSmoke)
       # and protect WikiName rule !WikiName
       #"(?:\!)?((?:\.{1,2}?\/)?[A-Z]([A-Z]+[0-9a-z]|[0-9a-z]+[A-Z])[0-9a-zA-Z]*)+\b|".
  -    "(?<![a-zA-Z])\!?(?:((\.{1,2})?\/)?[A-Z]([A-Z]+[0-9a-z]|[0-9a-z]+[A-Z])[0-9a-zA-Z]*)+\b|".
  +
  +    $this->wordrule.='|'.
       # double bracketed rule similar with MediaWiki [[Hello World]]
       "(?<!\[)\!?\[\[([^\[:,<\s'][^\[:,>]{1,255})\]\](?!\])|".
       # bracketed with double quotes ["Hello World"]
  @@ -1578,10 +1594,7 @@
         # single bracketed name [Hello World]
         $this->wordrule.= "|(?<!\[)\!?\[([^\[:,<\s'][^\[:,>]{1,255})\](?!\])";
       }
  -
  -    $this->footrule="\[\*[^\]]*\s[^\]]+\]";
  -
  -    $this->cache= new Cache_text("pagelinks");
  +    return $this->wordrule;
     }
   
     function header($args) {
  @@ -1649,7 +1662,7 @@
       global $DBInfo;
       $pikeys=array('#redirect','#action','#title','#keywords','#noindex',
         '#filter','#postfilter','#twinpages','#notwins','#nocomment',
  -      '#language',);
  +      '#language','#camelcase','#nocamelcase');
       $pi=array();
       if (!$body) {
         if (!$this->page->exists()) return '';
  @@ -1697,6 +1710,7 @@
         }
         #
         if ($pi['#notwins']) $pi['#twinpages']=0;
  +      if ($pi['#nocamelcase']) $pi['#camelcase']=0;
         if ($pi['#nofilter']) unset($pi['#filter']);
       }
   
  @@ -2403,6 +2417,7 @@
   
       if ($body) {
         $pi=$this->get_instructions($body);
  +      $this->set_wordrule($pi);
         $fts=array();
         if ($pi['#filter']) $fts=preg_split('/(\||,)/',$pi['#filter']);
         if ($DBInfo->filters) $fts=array_merge($fts,$DBInfo->filters);
  @@ -2426,6 +2441,7 @@
           $pi=$this->get_instructions($dum);
           $body=$this->page->get_raw_body($options);
         }
  +      $this->set_wordrule($pi);
   
         $fts=array();
         if ($pi['#filter']) $fts=preg_split('/(\||,)/',$pi['#filter']);
  @@ -2812,7 +2828,8 @@
           $text.=$line."\n";
         $this->nobr=0;
         # empty line for quoted div
  -      if (trim($line) =="") $text.="<br />\n";
  +      if (!$this->auto_linebreak and !$in_pre and trim($line) =='')
  +        $text.="<br />\n";
   
       } # end rendering loop
   
  
  
  


wkpark      2006/01/06 02:13:23

  Modified:    .        wiki.php
  Log:
   * more fix for quote block syntax
   * more fix for url_mappings
   * fixed filter_repl()
   * close <div> correctly in send_page()
  
  Revision  Changes    Path
  1.264     +26 -5     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.263
  retrieving revision 1.264
  diff -u -r1.263 -r1.264
  --- wiki.php	4 Jan 2006 17:39:08 -0000	1.263
  +++ wiki.php	5 Jan 2006 17:13:23 -0000	1.264
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.263 2006/01/04 17:39:08 wkpark Exp $
  +// $Id: wiki.php,v 1.264 2006/01/05 17:13:23 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.263 $',1,-1);
  +$_revision = substr('$Revision: 1.264 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -729,6 +729,22 @@
           $this->postfilters=preg_split('/(\||,)/',$this->postfilters);
         }
       }
  +
  +    # check and prepare $url_mappings
  +    if ($this->url_mappings) {
  +      if (!is_array($this->url_mappings)) {
  +        $maps=explode("\n",$this->url_mappings);
  +        $tmap=array();
  +        foreach ($maps as $map) {
  +          if (strpos($map,' ')) {
  +            $key=strtok($map,' ');
  +            $val=strtok('');
  +            $tmap["$key"]=$val;
  +          }
  +        }
  +        $this->url_mappings=$tmap;
  +      }
  +    }
     }
   
     function Close() {
  @@ -2221,6 +2237,8 @@
         include_once("plugin/filter/$ff.php");
         #$filter=$ff;
       }
  +    if (!function_exists ("filter_".$filter)) return $value;
  +
       return call_user_func("filter_$filter",$this,$value,$options);
     }
   
  @@ -2641,8 +2659,9 @@
         # bullet and indentation
         # and quote begin with ">"
         if ($in_pre != -1 &&
  -        preg_match("/^(((>\s)*>)|(\s*>*))/",$line,$match)) {
  +        preg_match("/^(((>\s)*>(?!>))|(\s*>*))/",$line,$match)) {
         #if (preg_match("/^(\s*)/",$line,$match)) {
  +         #print "{".$match[1].'}';
            $open="";
            $close="";
            $indtype="dd";
  @@ -2873,6 +2892,8 @@
       if ($in_p) $close.=$this->_div(0,$in_div,$div_enclose); # </para>
       #if ($div_enclose) $close.=$this->_div(0,$in_div,$div_enclose);
       while ($my_div>0) { $close.="</div>\n"; $my_div--;}
  +    while($in_div > 0)
  +      $close.=$this->_div(0,$in_div,$div_enclose);
   
       # activate <del></del> tag
       #$text=preg_replace("/(&lt;)(\/?del>)/i","<\\2",$text);
  @@ -3157,7 +3178,7 @@
     function send_footer($args='',$options='') {
       global $DBInfo;
   
  -    print "</div>\n";
  +    print "<!-- wikiBody --></div>\n";
       print $DBInfo->hr;
       if ($args['editable'] and !$DBInfo->security->writable($options))
         $args['editable']=-1;
  @@ -3786,7 +3807,7 @@
   #      $cache->update($pagename,$out);
   #    }
       $options['timer']->Check("send_page");
  -    $formatter->write("</div>\n");
  +    $formatter->write("<!-- wikiContent --></div>\n");
   
       if ($DBInfo->extra_macros) {
         if ($formatter->pi['#nocomment']) $options['nocomment']=1;
  
  
  


wkpark      2006/01/06 02:15:50

  Modified:    .        wikilib.php
  Log:
   * fixed cookie related bug: set correct expires.
   * fixed mail related functions: set "Reply-To:" and use "-f" option correctly
   * fixed FootNote() macro
  
  Revision  Changes    Path
  1.186     +46 -16    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.185
  retrieving revision 1.186
  diff -u -r1.185 -r1.186
  --- wikilib.php	4 Jan 2006 16:55:06 -0000	1.185
  +++ wikilib.php	5 Jan 2006 17:15:50 -0000	1.186
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.185 2006/01/04 16:55:06 wkpark Exp $
  +// $Id: wikilib.php,v 1.186 2006/01/05 17:15:50 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -403,7 +403,7 @@
        $this->ticket=$ticket;
        # set the fake cookie
        $_COOKIE['MONI_ID']=$ticket.'.'.$this->id;
  -     return "Set-Cookie: MONI_ID=".$ticket.'.'.$this->id.'; expires='.gmdate('l, d-M-Y H:i:s GMT',time()+60*60*24*30).'; Path='.get_scriptname();
  +     return "Set-Cookie: MONI_ID=".$ticket.'.'.$this->id.'; expires='.gmdate('l, d-M-Y H:i:s',time()+60*60*24*30).' GMT; Path='.get_scriptname();
     }
   
     function unsetCookie() {
  @@ -1373,10 +1373,25 @@
     }
   
     $mailto=join(", ",$subs);
  -  $subject="[".$DBInfo->sitename."] ".sprintf(_("%s page is modified"),$options[page]);
  +  $subject="[".$DBInfo->sitename."] ".sprintf(_("%s page is modified"),
  +    $options['page']);
  +
  +  $subject= '=?'.$DBInfo->charset.'?B?'.rtrim(base64_encode($subject)).'?=';
  +
  +  $rmail= "noreply@{$_SERVER['SERVER_NAME']}";
  +  if(preg_match("/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/i",
  +    $_SERVER['SERVER_NAME']))
  +    $rmail= 'noreply@['.$_SERVER['SERVER_NAME'].']';
  +
  +  if ($options['id']) {
  +    $return=$options['id'].' <'.$rmail.'>';
  +  } else {
  +    $return=$DBInfo->sitename.' <'.$rmail.'>';
  +  }
    
  -  $mailheaders = "Return-Path: $from\n";
  -  $mailheaders.= "From: $from\n";
  +  $mailheaders = "Return-Path: $return\n";
  +  $mailheaders.= "From: $from <$rmail>\n";
  +  $mailheaders.= "Reply-To: $return\n";
     $mailheaders.= "X-Mailer: MoniWiki form-mail interface\n";
   
     $mailheaders.= "MIME-Version: 1.0\n";
  @@ -1392,7 +1407,7 @@
       $body.=$diff;
     }
   
  -  mail($mailto,$subject,$body,$mailheaders,'-f"'.$from.'"');
  +  $ret=mail($mailto,$subject,$body,$mailheaders,'-fnoreply');
   
     if ($options['noaction']) return 1;
   
  @@ -1400,8 +1415,12 @@
     $formatter->send_header("",$options);
     $formatter->send_title($title,"",$options);
     $msg= str_replace("@"," at ",$mailto);
  -  print "<h2>".sprintf(_("Mails are sent successfully"))."</h2>";
  -  printf(sprintf(_("mails are sent to '%s'"),$msg));
  +  if ($ret) {
  +    print "<h2>".sprintf(_("Mails are sent successfully"))."</h2>";
  +    printf(sprintf(_("mails are sent to '%s'"),$msg));
  +  } else {
  +    print "<h2>".sprintf(_("Fail to send mail"))."</h2>";
  +  }
     $formatter->send_footer("",$options);
     return;
   }
  @@ -1414,23 +1433,33 @@
       return array('msg'=>_("This wiki does not support sendmail"));
     }
   
  -  if ($options['id'])
  -    $from=$options['id'];
  -  else
  -    $from=$DBInfo->sitename;
  +  $rmail= "noreply@{$_SERVER['SERVER_NAME']}";
  +  if(preg_match("/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/i",
  +    $_SERVER['SERVER_NAME']))
  +    $rmail= 'noreply@['.$_SERVER['SERVER_NAME'].']';
  +
  +  if ($options['id']) {
  +    $return=$options['id'].' <'.$rmail.'>';
  +  } else {
  +    $return=$DBInfo->sitename.' <'.$rmail.'>';
  +  }
  +
  +  $from = $options['from'] ? $options['from']:$return;
   
     $email=$options['email'];
     $subject=$options['subject'];
  +  $subject= '=?'.$DBInfo->charset.'?B?'.rtrim(base64_encode($subject)).'?=';
   
  -  $mailheaders = "Return-Path: $from\n";
  +  $mailheaders = "Return-Path: $return\n";
     $mailheaders.= "From: $from\n";
  +  $mailheaders.= "Reply-To: $return\n";
     $mailheaders.= "X-Mailer: MoniWiki form-mail interface\n";
   
     $mailheaders.= "MIME-Version: 1.0\n";
     $mailheaders.= "Content-Type: text/plain; charset=$DBInfo->charset\n";
     $mailheaders.= "Content-Transfer-Encoding: 8bit\n\n";
   
  -  mail($email,$subject,$body,$mailheaders,'-f"'.$from.'"');
  +  mail($email,$subject,$body,$mailheaders,'-fnoreply');
     return 0;
   }
   
  @@ -2087,7 +2116,7 @@
     $formatter->foot_idx++;
     $idx=$formatter->foot_idx;
   
  -  $text="[$idx&#093";
  +  $text="[$idx&#093;";
     $fnidx="fn".$idx;
     if ($value[0] == '*') {
       if ($value[1] == '*') {
  @@ -2146,8 +2175,9 @@
                         "<a id='$fnidx' name='$fnidx'/>".
                         "<a href='#r$fnidx'>$text</a>&#160;</tt> ".
                         "$value<br/>";
  +  $tval=str_replace("'","&#39;",$value);
     return "<tt class='foot'><a id='r$fnidx' name='r$fnidx'/>".
  -    "<a href='#$fnidx' title='$value'>$text</a></tt>";
  +    "<a href='#$fnidx' title='$tval'>$text</a></tt>";
   }
   
   function macro_TableOfContents(&$formatter,$value="") {
  
  
  


wkpark      2006/01/06 02:33:43

  Modified:    plugin   EditToolbar.php LikePages.php RecentChanges.php
                        SearchPlugin.php SmileyChooser.php UploadForm.php
                        chat.php moztab.php
  Log:
  fixed CDATA related things
  
  Revision  Changes    Path
  1.3       +2 -1      moniwiki/plugin/EditToolbar.php
  
  Index: EditToolbar.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/EditToolbar.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- EditToolbar.php	28 Mar 2005 05:56:43 -0000	1.2
  +++ EditToolbar.php	5 Jan 2006 17:33:43 -0000	1.3
  @@ -7,12 +7,13 @@
   //
   // This feature is imported from the MediaWiki
   //
  -// $Id: EditToolbar.php,v 1.2 2005/03/28 05:56:43 wkpark Exp $
  +// $Id: EditToolbar.php,v 1.3 2006/01/05 17:33:43 wkpark Exp $
   
   function macro_EditToolbar($formatter,$value) {
      global $DBInfo;
   
      $iconset='mediawiki';
  +   $iconset='moniwiki';
      $imgdir=$DBInfo->imgs_dir.'/plugin/EditToolbar/'.$iconset;
      $script=<<<EOS
   <script type="text/javascript" src="$DBInfo->url_prefix/local/wikibits.js"></script>
  
  
  
  1.6       +7 -4      moniwiki/plugin/LikePages.php
  
  Index: LikePages.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/LikePages.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- LikePages.php	12 Apr 2005 14:39:15 -0000	1.5
  +++ LikePages.php	5 Jan 2006 17:33:43 -0000	1.6
  @@ -4,7 +4,7 @@
   // a LikePages plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: LikePages.php,v 1.5 2005/04/12 14:39:15 wkpark Exp $
  +// $Id: LikePages.php,v 1.6 2006/01/05 17:33:43 wkpark Exp $
   
   function do_LikePages($formatter,$options) {
   
  @@ -146,13 +146,16 @@
   
     if (!$hits) {
       $out.="<h3>"._("No similar pages found")."</h3>";
  -    $opts['extra']=_("You are strongly recommened to find it in MetaWikis. ");
  +    if (!$metawiki)
  +      $opts['extra']=_("You are strongly recommened to find it in MetaWikis. ");
     }
   
     $opts['msg'] = sprintf(_("Like \"%s\""),$args);
   
  -  $tag=$formatter->link_to("?action=LikePages&amp;metawiki=1",_("Search all MetaWikis"));
  -  $opts['extra'].="$tag (Slow Slow)<br />";
  +  if (!$metawiki) {
  +    $tag=$formatter->link_to("?action=LikePages&amp;metawiki=1",_("Search all MetaWikis"));
  +    $opts['extra'].="$tag ("._("Slow Slow").")<br />";
  +  }
   
     return $out;
   }
  
  
  
  1.19      +4 -1      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- RecentChanges.php	13 Sep 2005 08:48:21 -0000	1.18
  +++ RecentChanges.php	5 Jan 2006 17:33:43 -0000	1.19
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.18 2005/09/13 08:48:21 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.19 2006/01/05 17:33:43 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     $options['trail']='';
  @@ -93,6 +93,8 @@
     if ($user->id != 'Anonymous') {
       $udb=new UserDB($DBInfo);
       $udb->checkUser($user);
  +  }
  +  if ($user->id != 'Anonymous') {
       $bookmark= $user->info['bookmark'];
       $tz_offset= $user->info['tz_offset'];
     } else {
  @@ -214,6 +216,7 @@
   
       $pageurl=_rawurlencode($page_name);
   
  +    #print $ed_time."/".$bookmark."//";
       if (!$DBInfo->hasPage($page_name))
         $icon= $formatter->link_tag($pageurl,"?action=info",$formatter->icon['del']);
       else if ($ed_time > $bookmark) {
  
  
  
  1.4       +3 -3      moniwiki/plugin/SearchPlugin.php
  
  Index: SearchPlugin.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SearchPlugin.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- SearchPlugin.php	5 May 2005 07:31:28 -0000	1.3
  +++ SearchPlugin.php	5 Jan 2006 17:33:43 -0000	1.4
  @@ -28,7 +28,7 @@
   // but use query string like IE! :@
   // so, i'd append dummy extensions with '.src' and '.png' to deceive mozilla :(
   //
  -// $Id: SearchPlugin.php,v 1.3 2005/05/05 07:31:28 iolo Exp $
  +// $Id: SearchPlugin.php,v 1.4 2006/01/05 17:33:43 wkpark Exp $
   
   function macro_SearchPlugin($formatter,$value,$options='') {
     global $DBInfo;
  @@ -58,7 +58,7 @@
     return <<<EOS
   <div class="SearchPlugin">
   <script type="text/javascript">
  -<!--
  +/*<![CDATA[*/
   function addSearchPlugin(update_url, name)
   {
     if ((typeof window.sidebar == "object") &&
  @@ -73,7 +73,7 @@
       alert("Firefox, Mozilla or Compatible Browser is needed to install a search plugin");
     }
   }
  -//-->
  +/*]]>*/
   </script>
   <a href="javascript:addSearchPlugin('$update_url', '$name')">$text</a>
   </div>
  
  
  
  1.7       +2 -4      moniwiki/plugin/SmileyChooser.php
  
  Index: SmileyChooser.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SmileyChooser.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SmileyChooser.php	4 Jan 2006 16:52:04 -0000	1.6
  +++ SmileyChooser.php	5 Jan 2006 17:33:43 -0000	1.7
  @@ -5,7 +5,7 @@
   //
   // Usage: [[SmileyChooser]]
   //
  -// $Id: SmileyChooser.php,v 1.6 2006/01/04 16:52:04 wkpark Exp $
  +// $Id: SmileyChooser.php,v 1.7 2006/01/05 17:33:43 wkpark Exp $
   
   function macro_SmileyChooser($formatter,$value) {
     global $DBInfo;
  @@ -15,7 +15,6 @@
   
     $chooser=<<<EOS
   <script language="javascript" type="text/javascript">
  -<!--
   /*<![CDATA[*/
   // from wikibits.js
   function appendText(myText)
  @@ -51,8 +50,7 @@
       txtarea.focus();
     }
   }
  -/*]]*/
  -//-->
  +/*]]>*/
   </script>
   EOS;
     $chooser.= "<div id=\"smileyChooser\">\n";
  
  
  
  1.4       +3 -3      moniwiki/plugin/UploadForm.php
  
  Index: UploadForm.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadForm.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- UploadForm.php	23 Sep 2005 17:27:24 -0000	1.3
  +++ UploadForm.php	5 Jan 2006 17:33:43 -0000	1.4
  @@ -5,7 +5,7 @@
   //
   // Usage: [[UploadForm]]
   //
  -// $Id: UploadForm.php,v 1.3 2005/09/23 17:27:24 wkpark Exp $
  +// $Id: UploadForm.php,v 1.4 2006/01/05 17:33:43 wkpark Exp $
   
   function macro_UploadForm($formatter,$value) {
       global $DBInfo;
  @@ -14,7 +14,7 @@
       if ($id==1)
          $script=<<<EOF
   <script type="text/javascript">
  -<!--
  +/*<!CDATA[*/
   function addRow(id) {
       var fform = document.getElementById(id);
       var lastRow = fform.rows.length;
  @@ -42,7 +42,7 @@
       obj.parentNode.parentNode.parentNode.removeChild(obj.parentNode.parentNode);
   }
   
  -//-->
  +/*]]>*/
   </script>
   EOF;
       $url=$formatter->link_url($formatter->page->urlname);
  
  
  
  1.8       +3 -3      moniwiki/plugin/chat.php
  
  Index: chat.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/chat.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- chat.php	20 Sep 2005 12:01:14 -0000	1.7
  +++ chat.php	5 Jan 2006 17:33:43 -0000	1.8
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Chat]]
   //
  -// $Id: chat.php,v 1.7 2005/09/20 12:01:14 wkpark Exp $
  +// $Id: chat.php,v 1.8 2006/01/05 17:33:43 wkpark Exp $
   // http://cvs.drupal.org/viewcvs/drupal/contributions/modules/chat/
   
   function macro_Chat($formatter,$value,$options=array()) {
  @@ -46,10 +46,10 @@
   <span id="effect"></span>
   <div class="wikiChat">
   <script language='javascript'>
  -<!--
  +/*<![CDATA[*/
   setInterval('sendMsg("poll",null,"$url","chat$tag",$itemnum)',10000);
   setSound('pass','$DBInfo->url_prefix/local/pass.au');
  -//-->
  +/*]]>*/
   </script>
   <div id="chat$tag">$msg</div>
   <form onSubmit='return false'>
  
  
  
  1.4       +3 -3      moniwiki/plugin/moztab.php
  
  Index: moztab.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/moztab.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- moztab.php	25 Aug 2004 15:17:35 -0000	1.3
  +++ moztab.php	5 Jan 2006 17:33:43 -0000	1.4
  @@ -5,7 +5,7 @@
   //
   // Usage: [[moztab]]
   //
  -// $Id: moztab.php,v 1.3 2004/08/25 15:17:35 wkpark Exp $
  +// $Id: moztab.php,v 1.4 2006/01/05 17:33:43 wkpark Exp $
   // vim:et:sts=2:
   
   function macro_MozTab($formatter,$value) {
  @@ -14,7 +14,7 @@
   
     $tab=<<<TAB
   <script language="JavaScript">
  -<!--
  +/*<![CDATA[*/
    function selfside() {
       if ((typeof window.sidebar == "object") && (typeof window.sidebar.addPanel == "function")) {
             window.sidebar.addPanel ("$DBInfo->sitename", "$url","");
  @@ -25,7 +25,7 @@
                document.location.href = "http://www.mozilla.org/";
          }
       }
  -//-->
  +/*]]>*/
   </script>
   <a href="javascript:selfside();"><img src="$DBInfo->imgs_dir/plugin/moztab.png" border=0 title="add mozilla tab"></a>
   TAB;
  
  
  


wkpark      2006/01/06 02:33:43

  Modified:    plugin/processor vim.php
  Log:
  fixed CDATA related things
  
  Revision  Changes    Path
  1.30      +4 -2      moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- vim.php	10 Dec 2005 14:14:59 -0000	1.29
  +++ vim.php	5 Jan 2006 17:33:43 -0000	1.30
  @@ -10,7 +10,7 @@
   // Win32 note:
   //  add $path="/bin;/Program Files/Vim/VimXX"; in the config.php
   //
  -// $Id: vim.php,v 1.29 2005/12/10 14:14:59 wkpark Exp $
  +// $Id: vim.php,v 1.30 2006/01/05 17:33:43 wkpark Exp $
   
   function processor_vim($formatter,$value,$options) {
     global $DBInfo;
  @@ -48,7 +48,9 @@
       if (!$jsloaded) 
         $script='<script type="text/javascript" src="'.$DBInfo->url_prefix.'/local/numbering.js"></script>';
       $script.="<script type=\"text/javascript\">
  -document.write('<a href=\"#\" onClick=\"return togglenumber(\'PRE-$uniq\', 1, 1);\" class=\"codenumbers\">$button</a>');
  +/*<![CDATA[*/
  +document.write('<a href=\"#\" onclick=\"return togglenumber(\'PRE-$uniq\', 1, 1);\" class=\"codenumbers\">$button</a>');
  +/*]]>*/
   </script>";
     }
   
  
  
  


wkpark      2006/01/06 02:33:43

  Modified:    plugin/security community.php
  Log:
  fixed CDATA related things
  
  Revision  Changes    Path
  1.4       +5 -2      moniwiki/plugin/security/community.php
  
  Index: community.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/community.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- community.php	26 Aug 2005 10:00:52 -0000	1.3
  +++ community.php	5 Jan 2006 17:33:43 -0000	1.4
  @@ -1,6 +1,6 @@
   <?php
   # a community security plugin for the MoniWiki
  -# $Id: community.php,v 1.3 2005/08/26 10:00:52 wkpark Exp $
  +# $Id: community.php,v 1.4 2006/01/05 17:33:43 wkpark Exp $
   
   class Security_community extends Security {
     var $DB;
  @@ -51,7 +51,10 @@
   
     function is_allowed($action='read',&$options) {
       $allowed_actions=array('theme','css','userform','bookmark','goto','dot',
  -      'trackback','rss_rc','rss','blogrss','urlencode','deletepage','titlesearch','info','download','comment','notitle');
  +      'trackback','rss_rc','rss','blogrss','urlencode','deletepage',
  +      'titlesearch','info','download','comment','notitle','fixmoin');
  +    $notallowed_actions=array('raw','recall','diff','info','rcs','deletepage',
  +      'fullsearch');
       if (in_array(strtolower($action),$allowed_actions)) return 1;
       if ($options['id']=='Anonymous') {
         $options['err']=sprintf(_("You are not allowed to '%s' on this page."),$action);
  
  
  


wkpark      2006/01/06 02:34:18

  Modified:    .        wiki.php wikilib.php
  Log:
  fixed CDATA related things
  
  Revision  Changes    Path
  1.265     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.264
  retrieving revision 1.265
  diff -u -r1.264 -r1.265
  --- wiki.php	5 Jan 2006 17:13:23 -0000	1.264
  +++ wiki.php	5 Jan 2006 17:34:18 -0000	1.265
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.264 2006/01/05 17:13:23 wkpark Exp $
  +// $Id: wiki.php,v 1.265 2006/01/05 17:34:18 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.264 $',1,-1);
  +$_revision = substr('$Revision: 1.265 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -185,11 +185,11 @@
     $sep= $DBInfo->query_prefix;
     print <<<EOS
   <script language="JavaScript" type="text/javascript">
  -<!--
  +/*<![CDATA[*/
   url_prefix="$prefix";
   _qp="$sep";
   FrontPage= "$DBInfo->frontpage";
  -//-->
  +/*]]>*/
   </script>
   <script type="text/javascript" src="$DBInfo->kbd_script">
   </script>
  
  
  
  1.187     +7 -9      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.186
  retrieving revision 1.187
  diff -u -r1.186 -r1.187
  --- wikilib.php	5 Jan 2006 17:15:50 -0000	1.186
  +++ wikilib.php	5 Jan 2006 17:34:18 -0000	1.187
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.186 2006/01/05 17:15:50 wkpark Exp $
  +// $Id: wikilib.php,v 1.187 2006/01/05 17:34:18 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -739,8 +739,7 @@
     if ($DBInfo->use_resizer) {
       $resizer=<<<EOS
   <script type="text/javascript" language='javascript'>
  -//<![CDATA[
  -<!--
  +/*<![CDATA[*/
   function resize(obj,val) {
     rows= obj.savetext.rows;
     rows+=val;
  @@ -748,8 +747,7 @@
     else if (rows < 5) rows=16;
     obj.savetext.rows=rows;
   }
  -//-->
  -//]]>
  +/*]]>*/
   </script>
   <div id='wikiResize'>
   <input type='button' class='inc' value='+' onclick='resize(this.form,3)' />
  @@ -1737,9 +1735,9 @@
     if ($tz_offset=="")
       $script=<<<EOF
   <script type="text/javascript">
  -//<![CDATA[
  +/*<![CDATA[*/
   setTimezone();
  -//]]>
  +/*]]>*/
   </script>
   EOF;
   
  @@ -2220,9 +2218,9 @@
   EOS;
     $TOC_close=<<<EOS
   <script type="text/javascript">
  -//<![CDATA[
  +/*<![CDATA[*/
    if (window.showTocToggle) { showTocToggle('<img src="$DBInfo->imgs_dir/plugin/arrdown.png" width="10px" border="0" alt="[+]" title="[+]" />','<img src="$DBInfo->imgs_dir/plugin/arrup.png" width="10px" border="0" alt="[-]" title="[-]" />'); } 
  -//]]>
  +/*]]>*/
   </script>
   EOS;
    }
  
  
  


wkpark      2006/01/06 02:41:43

  Removed:     .        index.html
  Log:
  remove


wkpark      2006/01/07 01:29:26

  Modified:    tools    moin2rcs.pl
  Log:
  fixed for backups without log entries.
  
  Revision  Changes    Path
  1.4       +16 -9     moniwiki/tools/moin2rcs.pl
  
  Index: moin2rcs.pl
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/tools/moin2rcs.pl,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- moin2rcs.pl	22 Oct 2003 17:28:15 -0000	1.3
  +++ moin2rcs.pl	6 Jan 2006 16:29:26 -0000	1.4
  @@ -1,13 +1,18 @@
   #!/usr/bin/perl
   # convert moinmoin backup datas to rcs files used by the MoniWiki
  -# $Id: moin2rcs.pl,v 1.3 2003/10/22 17:28:15 wkpark Exp $
  +# $Id: moin2rcs.pl,v 1.4 2006/01/06 16:29:26 wkpark Exp $
   use POSIX qw(strftime);
   
  +$admin_id='Admin';
  +#$admin_id='YourWikiId';
  +$mylog='127.0.0.1;;'.$admin_id.';;';
  +
   open(LOG,'editlog') or die "could not open editlog: $!";
   @log=<LOG>;
   close LOG;
   
  -# GLE     203.252.48.205  1041999970      chem6.skku.ac.kr        Anonymous               SAVE
  +#
  +# PageName     203.xxx.xx.xxx  1041999970      hello.org        Anonymous               SAVE
   foreach $line (@log) {
     ($page, $ip, $time, $host, $id, $comment,$action)=split(/\t/,$line);
     chomp($comment);
  @@ -49,16 +54,18 @@
         $time = (stat($backup))[9];
       }
        
  +    $pagename=$name;
  +    $pagename=~ s/_([a-f0-9]{2})/chr(hex($1))/eg;
  +    $pagename =~ s/\"/\\\"/g;
  +    print "cp $backup backup/$name\n";
  +    $date = strftime ("%Y%m%d%H%M", gmtime($time));
  +    print "touch -t $date backup/$name\n";
       if ($logs{$time}) {
         #print $logs{$1}."\n";
  -      $pagename=$name;
  -      $pagename=~ s/_([a-f0-9]{2})/chr(hex($1))/eg;
  -      $pagename =~ s/\"/\\\"/g;
  -      print "cp $backup backup/$name\n";
  -      $date = strftime ("%Y%m%d%H%M", gmtime($time));
  -      print "touch -t $date backup/$name\n";
         print "ci -q -d -l -t-\"$pagename\" -m\"".$logs{$time}."\" backup/$name\n";
  -      print "rm backup/$name\n";
  +    } else {
  +      print "ci -q -d -l -t-\"$pagename\" -m\"".$mylog."\" backup/$name\n";
       }
  +    print "rm backup/$name\n";
     }
   }
  
  
  


wkpark      2006/01/07 14:56:55

  Modified:    .        wikilib.php
  Log:
  $use_textbrowsers option added to use text based web browsers correctly
  
  Revision  Changes    Path
  1.188     +14 -4     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.187
  retrieving revision 1.188
  diff -u -r1.187 -r1.188
  --- wikilib.php	5 Jan 2006 17:34:18 -0000	1.187
  +++ wikilib.php	7 Jan 2006 05:56:55 -0000	1.188
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.187 2006/01/05 17:34:18 wkpark Exp $
  +// $Id: wikilib.php,v 1.188 2006/01/07 05:56:55 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -614,7 +614,7 @@
     $edit_rows=$DBInfo->edit_rows ? $DBInfo->edit_rows: 16;
     $cols= preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']) ? $COLS_MSIE : $COLS_OTHER;
   
  -  $use_js= preg_match('/Lynx|w3m|links/', $_SERVER['HTTP_USER_AGENT']) ? 0:1;
  +  $use_js= preg_match('/Lynx|w3m|links/',$_SERVER['HTTP_USER_AGENT']) ? 0:1;
   
     $rows= $options['rows'] > 5 ? $options['rows']: $edit_rows;
     $rows= $rows < 60 ? $rows: $edit_rows;
  @@ -736,7 +736,7 @@
     }
     $save_msg=_("Save");
     $summary_msg=_("Summary of Change");
  -  if ($DBInfo->use_resizer) {
  +  if ($use_js and $DBInfo->use_resizer) {
       $resizer=<<<EOS
   <script type="text/javascript" language='javascript'>
   /*<![CDATA[*/
  @@ -1629,6 +1629,16 @@
   function macro_UserPreferences($formatter,$value,$options='') {
     global $DBInfo;
   
  +  $use_any=0;
  +  if ($DBInfo->use_textbrowsers) {
  +    if (is_string($DBInfo->use_textbrowsers))
  +      $use_any= preg_match('/'.$DBInfo->use_textbrowsers.'/',
  +        $_SERVER['HTTP_USER_AGENT']) ? 1:0;
  +    else
  +      $use_any= preg_match('/Lynx|w3m|links/',
  +        $_SERVER['HTTP_USER_AGENT']) ? 1:0;
  +  }
  +
     $user=new User(); # get from COOKIE VARS
     if ($user->id != 'Anonymous') {
       $udb=new UserDB($DBInfo);
  @@ -1689,7 +1699,7 @@
         $extra=<<<EXTRA
     <tr><td><b>$mailbtn</b>&nbsp;</td><td><input type="text" size="40" name="email" value="$email" /></td></tr>
   EXTRA;
  -      if ($DBInfo->use_ticket) {
  +      if (!$use_any and $DBInfo->use_ticket) {
           $seed=md5(base64_encode(time()));
           $ticketimg=$formatter->link_url($formatter->page->name,'?action=ticket&amp;__seed='.$seed);
           $extra.=<<<EXTRA
  
  
  


wkpark      2006/01/07 14:57:50

  Modified:    plugin   userform.php
  Log:
  $use_textbrowsers option
  
  Revision  Changes    Path
  1.14      +15 -4     moniwiki/plugin/userform.php
  
  Index: userform.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/userform.php,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- userform.php	2 Jan 2006 17:53:56 -0000	1.13
  +++ userform.php	7 Jan 2006 05:57:50 -0000	1.14
  @@ -4,7 +4,7 @@
   // a userform action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: userform.php,v 1.13 2006/01/02 17:53:56 wkpark Exp $
  +// $Id: userform.php,v 1.14 2006/01/07 05:57:50 wkpark Exp $
   
   function do_userform($formatter,$options) {
     global $DBInfo;
  @@ -16,6 +16,16 @@
     }
     $id=$options['login_id'];
   
  +  $use_any=0;
  +  if ($DBInfo->use_textbrowsers) {
  +    if (is_string($DBInfo->use_textbrowsers))
  +      $use_any= preg_match('/'.$DBInfo->use_textbrowsers.'/',
  +        $_SERVER['HTTP_USER_AGENT']) ? 0:1;
  +    else
  +      $use_any= preg_match('/Lynx|w3m|links/',
  +        $_SERVER['HTTP_USER_AGENT']) ? 0:1;
  +  }
  +
     # e-mail conformation
     if ($options['ticket'] and $id and $id!='Anonymous') {
       $userdb=new UserDB($DBInfo);
  @@ -68,7 +78,8 @@
               $login_ok=1;
           } else { # with no javascript browsers
             $md5pw=md5($options['password']);
  -          if (hmac($md5pw,$user->info['password']) == $md5pw)
  +          //if (hmac($md5pw,$user->info['password']) == $md5pw)
  +          if ($md5pw == $user->info['password'])
               $login_ok=1;
           }
         }
  @@ -98,7 +109,7 @@
       # email new password
   
       $title='';
  -    if ($DBInfo->use_ticket) {
  +    if (!$use_any and $DBInfo->use_ticket) {
         if ($options['__seed'] and $options['check']) {
           $mycheck=getTicket($options['__seed'],$_SERVER['REMOTE_ADDR'],4);
           if ($mycheck==$options['check'])
  @@ -184,7 +195,7 @@
       # create profile
   
       $title='';
  -    if ($DBInfo->use_ticket) {
  +    if (!$use_any and $DBInfo->use_ticket) {
         if ($options['__seed'] and $options['check']) {
           $mycheck=getTicket($options['__seed'],$_SERVER['REMOTE_ADDR'],4);
           if ($mycheck==$options['check'])
  
  
  


wkpark      2006/01/07 14:58:48

  Modified:    plugin   ticket.php
  Log:
  $use_ticket=1,2,3 to select a method of image processing
  
  Revision  Changes    Path
  1.2       +12 -4     moniwiki/plugin/ticket.php
  
  Index: ticket.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/ticket.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ticket.php	19 Aug 2005 06:29:18 -0000	1.1
  +++ ticket.php	7 Jan 2006 05:58:48 -0000	1.2
  @@ -2,7 +2,7 @@
   // Copyright 2005 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a ticket plugin for the MoniWiki
  -// $Id: ticket.php,v 1.1 2005/08/19 06:29:18 wkpark Exp $
  +// $Id: ticket.php,v 1.2 2006/01/07 05:58:48 wkpark Exp $
   
   function _effect_blur($image,$color,$dx=1,$dy=0) {
   // please see http://www.hudzilla.org/phpbook/read.php/11_2_23
  @@ -129,9 +129,17 @@
           ImageString($im,$FONT, 4, 4, $passwd, $color[$pen]);
       }
   
  -    _effect_blur($im,$color,1,1);
  -    //_effect_grid($im,$color,$pen);
  -
  +    switch ($DBInfo->use_ticket) {
  +        case 1:
  +            _effect_blur($im,$color,1,1);
  +            break;
  +        case 3:
  +            _effect_blur($im,$color,1,1);
  +        case 2:
  +        default:
  +            _effect_grid($im,$color,$pen);
  +            break;
  +    }
   
       ImagePng($im);
       ImageDestroy($im);
  
  
  


wkpark      2006/01/07 19:39:00

  Modified:    plugin   Gallery.php UploadForm.php UploadedFiles.php
                        UploadFile.php SmileyChooser.php
  Log:
  enhanced UploadedFiles macro: you can now more easily insert wiki tags, "attachment:" and Media macro.
  use UploadedFiles macro automatically in the preview mode.
  fix some javascript codes.
  
  Revision  Changes    Path
  1.22      +2 -2      moniwiki/plugin/Gallery.php
  
  Index: Gallery.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Gallery.php,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- Gallery.php	3 Jan 2006 13:27:57 -0000	1.21
  +++ Gallery.php	7 Jan 2006 10:38:59 -0000	1.22
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Gallery]]
   //
  -// $Id: Gallery.php,v 1.21 2006/01/03 13:27:57 wkpark Exp $
  +// $Id: Gallery.php,v 1.22 2006/01/07 10:38:59 wkpark Exp $
   
   function get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -200,7 +200,7 @@
         '?action=gallery&amp;col='.$col.'&amp;row='.$row.
         '&amp;p=',$options['p'],$perpage);
   
  -  if (!file_exists($dir."/thumbnails")) mkdir($dir."/thumbnails",0777);
  +  if (!file_exists($dir."/thumbnails")) @mkdir($dir."/thumbnails",0777);
   
     while (list($file,$mtime) = each ($upfiles)) {
       $size=filesize($dir."/".$file);
  
  
  
  1.5       +4 -1      moniwiki/plugin/UploadForm.php
  
  Index: UploadForm.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadForm.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- UploadForm.php	5 Jan 2006 17:33:43 -0000	1.4
  +++ UploadForm.php	7 Jan 2006 10:38:59 -0000	1.5
  @@ -5,7 +5,7 @@
   //
   // Usage: [[UploadForm]]
   //
  -// $Id: UploadForm.php,v 1.4 2006/01/05 17:33:43 wkpark Exp $
  +// $Id: UploadForm.php,v 1.5 2006/01/07 10:38:59 wkpark Exp $
   
   function macro_UploadForm($formatter,$value) {
       global $DBInfo;
  @@ -81,6 +81,9 @@
       if (!in_array('UploadedFiles',$formatter->actions))
           $formatter->actions[]='UploadedFiles';
       $id++;
  +    if ($formatter->preview and !in_array('UploadFile',$formatter->actions)) {
  +        $form=$formatter->macro_repl('UploadedFiles(tag=1)').$form;
  +    }
       return $script.$form.$multiform;
   }
   
  
  
  
  1.8       +136 -4    moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- UploadedFiles.php	10 Dec 2004 15:59:22 -0000	1.7
  +++ UploadedFiles.php	7 Jan 2006 10:38:59 -0000	1.8
  @@ -2,9 +2,9 @@
   // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadedFiles plugin for the MoniWiki
  -// vim:et:ts=2:
  +// vim:et:sts=4:
   //
  -// $Id: UploadedFiles.php,v 1.7 2004/12/10 15:59:22 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.8 2006/01/07 10:38:59 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     $list=macro_UploadedFiles($formatter,$options['page'],$options);
  @@ -21,6 +21,109 @@
   function macro_UploadedFiles($formatter,$value="",$options="") {
      global $DBInfo;
   
  +   $use_preview=$DBInfo->use_preview_uploads ? $DBInfo->use_preview_uploads:0;
  +   $preview_width=64;
  +
  +   $use_preview=0;
  +   $js_tag=0;
  +   $js_script='';
  +   $uploader='';
  +
  +   $iconset='gnome';
  +   $icon_dir=$DBInfo->imgs_dir.'/plugin/UploadedFiles/'.$iconset;
  +
  +   $args=explode(',',$value);
  +   $value='';
  +
  +   if ($formatter->preview) {
  +     $js_tag=1;$use_preview=1;
  +     $uploader='UploadForm';
  +   } else if ($options['preview']) {
  +     $use_preview=1;
  +   }
  +   foreach ($args as $arg) {
  +      $arg=trim($arg);
  +      if (($p=strpos($arg,'='))!==false) {
  +         $k=substr($arg,0,$p);
  +         $v=substr($arg,$p+1);
  +         if ($k=='preview') { $use_preview=$v; }
  +         else if ($k == 'tag') {
  +           $js_tag=1; $use_preview=1;
  +         }
  +      } else {
  +         $value=$arg;
  +      }
  +   }
  +   if ($js_tag) {
  +      $form='editform';
  +      $js_script=<<<EOS
  +      <script language="javascript" type="text/javascript">
  +/*<![CDATA[*/
  +// based on wikibits.js in the MediaWiki
  +// small fix to use opener in the dokuwiki.
  +
  +function insertTags(tagOpen,tagClose,myText,replaced)
  +{
  +  if (document.$form)
  +    var txtarea = document.$form.savetext;
  +  else {
  +    // some alternate form? take the first one we can find
  +    var areas = document.getElementsByTagName('textarea');
  +    if (areas.length > 0) {
  +        var txtarea = areas[0];
  +    } else if (opener.document.$form.savetext) {
  +        var txtarea = opener.document.$form.savetext;
  +    }
  +  }
  +
  +  if(document.selection && document.all) {
  +    var theSelection = document.selection.createRange().text;
  +    txtarea.focus();
  +    if(theSelection.charAt(theSelection.length - 1) == " "){
  +      // exclude ending space char, if any
  +      theSelection = theSelection.substring(0, theSelection.length - 1);
  +      document.selection.createRange().text = theSelection + tagOpen + myText + tagClose + " ";
  +    } else {
  +      document.selection.createRange().text = theSelection + tagOpen + myText + tagClose + " ";
  +    }
  +  }
  +  // Mozilla
  +  else if(txtarea.selectionStart || txtarea.selectionStart == '0') {
  +		//var replaced = false;
  +		var startPos = txtarea.selectionStart;
  +		var endPos = txtarea.selectionEnd;
  +		if (!replaced && endPos-startPos)
  +			replaced = true;
  +		var scrollTop = txtarea.scrollTop;
  +
  +		if (myText.charAt(myText.length - 1) == " ") { // exclude ending space char, if any
  +			subst = tagOpen + myText.substring(0, (myText.length - 1)) + tagClose + " ";
  +		} else {
  +			subst = tagOpen + myText + tagClose;
  +		}
  +		txtarea.value = txtarea.value.substring(0, startPos) + subst +
  +			txtarea.value.substring(endPos, txtarea.value.length);
  +		txtarea.focus();
  +		//set new selection
  +		if (replaced) {
  +			var cPos = startPos+(tagOpen.length+myText.length+tagClose.length);
  +			txtarea.selectionStart = cPos;
  +			txtarea.selectionEnd = cPos;
  +		} else {
  +			txtarea.selectionStart = startPos+tagOpen.length;   
  +			txtarea.selectionEnd = startPos+tagOpen.length+myText.length;
  +		}	
  +		txtarea.scrollTop = scrollTop;
  +  } else { // All others
  +    txtarea.value += tagOpen + myText + tagClose + " ";
  +    txtarea.focus();
  +  }
  +}
  +/*]]>*/
  +</script>
  +EOS;
  +   }
  +
      if ($DBInfo->download_action) $mydownload=$DBInfo->download_action;
      else $mydownload='download';
      $checkbox='checkbox';
  @@ -114,7 +217,32 @@
         $size=round($size,2).' '.$unit[$i];
   
         $date=date('Y-m-d',filemtime($dir.'/'.$file));
  -      $out.="<tr><td class='wiki'><input type='$checkbox' name='files[$idx]' value='$file' /></td><td class='wiki'><a href='$link'>$file</a></td><td align='right' class='wiki'>$size</td><td class='wiki'>$date</td></tr>\n";
  +      $fname=$file;
  +      $attr='';
  +      if ($use_preview or $js_tag) {
  +        $tag_open='attachment:'; $tag_close='';
  +        $alt="$tag_open$file$tag_close";
  +        preg_match("/\.(.{1,4})$/",$fname,$m);
  +        $ext=strtolower($m[1]);
  +        if ($ext and stristr('gif,png,jpeg,jpg',$ext)) {
  +          $fname="<img src='$link' width='$preview_width' $alt />";
  +        } else {
  +          if (preg_match('/^(wmv|avi|mpeg|mpg|swf|wav|mp3|ogg|midi|mid|mov)$/',$ext)) {
  +            $tag_open='[[Media('; $tag_close=')]]';
  +            $alt="$tag_open$file$tag_close";
  +          } else if (!preg_match('/^(bmp|c|h|java|py|bak|diff|doc|css|php|xml|html|mod|'.
  +              'rpm|deb|pdf|ppt|xls|tgz|gz|bz2|zip)$/',$ext)) {
  +            $ext='unknown';
  +          }
  +          $fname="<img src='$icon_dir/$ext.png' $alt />";
  +        }
  +        if ($js_tag) {
  +          //if (strpos($file,' '))
  +          $tag="insertTags('$tag_open','$tag_close','$file',true)";
  +          $link="javascript:$tag";
  +        }
  +      }
  +      $out.="<tr><td class='wiki'><input type='$checkbox' name='files[$idx]' value='$file' /></td><td class='wiki'><a href=\"$link\"$attr>$fname</a></td><td align='right' class='wiki'>$size</td><td class='wiki'>$date</td></tr>\n";
         $idx++;
      }
      $idx--;
  @@ -126,7 +254,11 @@
   
      if (!$value and !in_array('UploadFile',$formatter->actions))
        $formatter->actions[]='UploadFile';
  -   return $out;
  +
  +   if ($uploader and !in_array('UploadedFiles',$formatter->actions)) {
  +     $out.=$formatter->macro_repl($uploader);
  +   }
  +   return $js_script.$out;
   }
   
   ?>
  
  
  
  1.22      +4 -2      moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- UploadFile.php	25 Aug 2005 13:54:42 -0000	1.21
  +++ UploadFile.php	7 Jan 2006 10:38:59 -0000	1.22
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.21 2005/08/25 13:54:42 wkpark Exp $
  +// $Id: UploadFile.php,v 1.22 2006/01/07 10:38:59 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -259,7 +259,9 @@
   
     if (!in_array('UploadedFiles',$formatter->actions))
       $formatter->actions[]='UploadedFiles';
  -
  +  if ($formatter->preview and !in_array('UploadFile',$formatter->actions)) {
  +    $form=$formatter->macro_repl('UploadedFiles(tag=1)').$form;
  +  }
     return $form.$multiform;
   }
   
  
  
  
  1.8       +8 -2      moniwiki/plugin/SmileyChooser.php
  
  Index: SmileyChooser.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SmileyChooser.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SmileyChooser.php	5 Jan 2006 17:33:43 -0000	1.7
  +++ SmileyChooser.php	7 Jan 2006 10:38:59 -0000	1.8
  @@ -5,7 +5,7 @@
   //
   // Usage: [[SmileyChooser]]
   //
  -// $Id: SmileyChooser.php,v 1.7 2006/01/05 17:33:43 wkpark Exp $
  +// $Id: SmileyChooser.php,v 1.8 2006/01/07 10:38:59 wkpark Exp $
   
   function macro_SmileyChooser($formatter,$value) {
     global $DBInfo;
  @@ -19,7 +19,13 @@
   // from wikibits.js
   function appendText(myText)
   {
  -  var txtarea = document.$form.savetext;
  +  if (document.$form)
  +    var txtarea = document.$form.savetext;
  +  else {
  +    // some alternate form? take the first one we can find
  +    var areas = document.getElementsByTagName('textarea');
  +    var txtarea = areas[0];
  +  }
     if(document.selection && document.all) {
       var theSelection = document.selection.createRange().text;
       txtarea.focus();
  
  
  


wkpark      2006/01/07 19:44:37

  Modified:    .        wiki.php
  Log:
  remove unused function and set $theme under some $action
  
  Revision  Changes    Path
  1.266     +8 -12     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.265
  retrieving revision 1.266
  diff -u -r1.265 -r1.266
  --- wiki.php	5 Jan 2006 17:34:18 -0000	1.265
  +++ wiki.php	7 Jan 2006 10:44:37 -0000	1.266
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.265 2006/01/05 17:34:18 wkpark Exp $
  +// $Id: wiki.php,v 1.266 2006/01/07 10:44:37 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.265 $',1,-1);
  +$_revision = substr('$Revision: 1.266 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -870,14 +870,6 @@
       fclose($fp_editlog);
     }
   
  -  function reverse($arrayX) {
  -    $out= array();
  -    $size= count($arrayX);
  -    for ($i= $size - 1; $i >= 0; $i--)
  -      $out[]= $arrayX[$i];
  -    return $out;
  -  }
  -
     function editlog_raw_lines($days,$opts=array()) {
       $lines=array();
   
  @@ -888,7 +880,11 @@
         $date_from= $time_current - ($opts['ago'] * $secs_per_day);
         $date_to= $date_from + ($days * $secs_per_day);
       } else {
  -      $date_from= $time_current - ($days * $secs_per_day);
  +      if ($opts['items']) {
  +        $date_from= $time_current - (365 * $secs_per_day);
  +      } else {
  +        $date_from= $time_current - ($days * $secs_per_day);
  +      }
         $date_to= $time_current;
       }
       $check=$date_to;
  @@ -3576,7 +3572,7 @@
   $options['id']=$user->id;
   
   # MoniWiki theme
  -if (empty($DBInfo->theme) and isset($_GET['theme'])) $theme=$_GET['theme'];
  +if ((empty($DBInfo->theme) or isset($_GET['action'])) and isset($_GET['theme'])) $theme=$_GET['theme'];
   else $theme=$DBInfo->theme;
   if ($theme) $options['theme']=$theme;
   
  
  
  


wkpark      2006/01/07 19:45:35

  Modified:    local    wikibits.js
  Log:
  update
  
  Revision  Changes    Path
  1.2       +29 -13    moniwiki/local/wikibits.js
  
  Index: wikibits.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/wikibits.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- wikibits.js	28 Mar 2005 05:56:43 -0000	1.1
  +++ wikibits.js	7 Jan 2006 10:45:35 -0000	1.2
  @@ -1,7 +1,7 @@
   // from the MediaWiki
   // simplified for the MoniWiki by wkpark
   //
  -// $Id: wikibits.js,v 1.1 2005/03/28 05:56:43 wkpark Exp $
  +// $Id: wikibits.js,v 1.2 2006/01/07 10:45:35 wkpark Exp $
   //
   // Wikipedia JavaScript support functions
   // if this is true, the toolbar will no longer overwrite the infobox when you move the mouse over individual items
  @@ -109,8 +109,14 @@
   // use sampleText instead of selection if there is none
   // copied and adapted from phpBB
   function insertTags(tagOpen, tagClose, sampleText) {
  +	if (document.editform)
  +		var txtarea = document.editform.savetext;
  +	else {
  +		// some alternate form? take the first one we can find
  +		var areas = document.getElementsByTagName('textarea');
  +		var txtarea = areas[0];
  +	}
   
  -	var txtarea = document.editform.savetext;
   	// IE
   	if(document.selection  && !is_gecko) {
   		var theSelection = document.selection.createRange().text;
  @@ -125,24 +131,33 @@
   
   	// Mozilla
   	} else if(txtarea.selectionStart || txtarea.selectionStart == '0') {
  - 		var startPos = txtarea.selectionStart;
  +		var replaced = false;
  +		var startPos = txtarea.selectionStart;
   		var endPos = txtarea.selectionEnd;
  -		var scrollTop=txtarea.scrollTop;
  +		if (endPos-startPos)
  +			replaced = true;
  +		var scrollTop = txtarea.scrollTop;
   		var myText = (txtarea.value).substring(startPos, endPos);
  -		if(!myText) { myText=sampleText;}
  -		if(myText.charAt(myText.length - 1) == " "){ // exclude ending space char, if any
  +		if (!myText)
  +			myText=sampleText;
  +		if (myText.charAt(myText.length - 1) == " ") { // exclude ending space char, if any
   			subst = tagOpen + myText.substring(0, (myText.length - 1)) + tagClose + " ";
   		} else {
   			subst = tagOpen + myText + tagClose;
   		}
   		txtarea.value = txtarea.value.substring(0, startPos) + subst +
  -		  txtarea.value.substring(endPos, txtarea.value.length);
  +			txtarea.value.substring(endPos, txtarea.value.length);
   		txtarea.focus();
  -
  -		var cPos=startPos+(tagOpen.length+myText.length+tagClose.length);
  -		txtarea.selectionStart=cPos;
  -		txtarea.selectionEnd=cPos;
  -		txtarea.scrollTop=scrollTop;
  +		//set new selection
  +		if (replaced) {
  +			var cPos = startPos+(tagOpen.length+myText.length+tagClose.length);
  +			txtarea.selectionStart = cPos;
  +			txtarea.selectionEnd = cPos;
  +		} else {
  +			txtarea.selectionStart = startPos+tagOpen.length;   
  +			txtarea.selectionEnd = startPos+tagOpen.length+myText.length;
  +		}	
  +		txtarea.scrollTop = scrollTop;
   
   	// All others
   	} else {
  @@ -167,7 +182,8 @@
   		noOverwrite=true;
   	}
   	// reposition cursor if possible
  -	if (txtarea.createTextRange) txtarea.caretPos = document.selection.createRange().duplicate();
  +	if (txtarea.createTextRange)
  +		txtarea.caretPos = document.selection.createRange().duplicate();
   }
   
   function akeytt() {
  
  
  


wkpark      2006/01/07 19:45:49

  moniwiki/imgs/plugin/UploadedFiles - New directory

wkpark      2006/01/07 19:45:58

  moniwiki/imgs/plugin/UploadedFiles/gnome - New directory

wkpark      2006/01/07 19:46:58

  Added:       imgs/plugin/UploadedFiles/gnome avi.png bak.png bmp.png
                        bz2.png c.png css.png deb.png diff.png doc.png
                        folder.png gif.png gz.png h.png html.png java.png
                        jpg.png midi.png mod.png mov.png mp3.png mpg.png
                        ogg.png pdf.png php.png png.png ppt.png py.png
                        rpm.png swf.png tar.gz.png tgz.png unknown.png
                        wav.png wmv.png xls.png xml.png zip.png
  Log:
  icons for UploadedFiles macro.
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/avi.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/bak.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/bmp.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/bz2.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/c.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/css.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/deb.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/diff.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/doc.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/folder.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/gif.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/gz.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/h.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/html.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/java.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/jpg.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/midi.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/mod.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/mov.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/mp3.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/mpg.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/ogg.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/pdf.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/php.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/png.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/ppt.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/py.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/rpm.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/swf.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/tar.gz.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/tgz.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/unknown.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/wav.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/wmv.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/xls.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/xml.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/zip.png
  
  	<<Binary file>>
  
  


wkpark      2006/01/08 21:52:57

  Modified:    plugin   Info.php RecentChanges.php
  Log:
  add $mask_hostname option to mask hostnames or ips
  
  Revision  Changes    Path
  1.9       +4 -2      moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Info.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Info.php	3 Oct 2005 13:52:32 -0000	1.8
  +++ Info.php	8 Jan 2006 12:52:57 -0000	1.9
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Info plugin for the MoniWiki
   //
  -// $Id: Info.php,v 1.8 2005/10/03 13:52:32 wkpark Exp $
  +// $Id: Info.php,v 1.9 2006/01/08 12:52:57 wkpark Exp $
   
   function _parse_rlog($formatter,$log,$options=array()) {
     global $DBInfo;
  @@ -77,9 +77,11 @@
              else if ($DBInfo->hasPage($user)) {
                $ip=$formatter->link_tag($user);
                $users[$user]=$ip;
  -           } else if ($DBInfo->interwiki['Whois']) {
  +           } else if (!$DBInfo->mask_hostname and $DBInfo->interwiki['Whois']) {
                $ip="<a href='".$DBInfo->interwiki['Whois']."$ip'>$user</a>";
              }
  +         } else if ($DBInfo->mask_hostname) {
  +           $ip=_mask_hostname($ip);
            } else if ($user and $DBInfo->interwiki['Whois'])
              $ip="<a href='".$DBInfo->interwiki['Whois']."$ip'>$ip</a>";
   
  
  
  
  1.20      +2 -2      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- RecentChanges.php	5 Jan 2006 17:33:43 -0000	1.19
  +++ RecentChanges.php	8 Jan 2006 12:52:57 -0000	1.20
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.19 2006/01/05 17:33:43 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.20 2006/01/08 12:52:57 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     $options['trail']='';
  @@ -173,7 +173,7 @@
       if ($logs[$page_key]) continue;
   
       $page_name= $DBInfo->keyToPagename($parts[0]);
  -    $addr= $parts[1];
  +    $addr= $DBInfo->mask_hostname ? _mask_hostname($parts[1]):$parts[1];
       $ed_time= $parts[2];
       $user= $parts[4];
       $log= stripslashes($parts[5]);
  
  
  


wkpark      2006/01/08 21:53:20

  Added:       plugin   UrlMapping.php
  Log:
  add a UrlMapping macro
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/UrlMapping.php
  
  Index: UrlMapping.php
  ===================================================================
  <?php
  // Copyright 2006 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a UrlMapping plugin for the MoniWiki
  //
  // Usage: [[UrlMapping]]
  //
  // $Id: UrlMapping.php,v 1.1 2006/01/08 12:53:20 wkpark Exp $
  
  function macro_UrlMapping($formatter,$value,$options=array()) {
      global $DBInfo;
  
      #$options['load']=1;
  
      if (!isset($DBInfo->url_mapping_rule) or $options['init']) { #or $options['load']) {
          $mappings=array();
  
          if (file_exists($DBInfo->shared_url_mappings)) {
              $map=file($DBInfo->shared_url_mappings);
  
              for ($i=0,$sz=sizeof($map);$i<$sz;$i++) {
                  $line=rtrim($map[$i]);
                  if (!$line || $line[0]=='#' || $line[0]==' ') continue;
                  if (preg_match("/^(http|ftp|mailto):/",$line)) {
                      $url=strtok($line,' ');$val=strtok('');
                      $mappings[$url]=trim($val);
                      $mapping_rule.=preg_quote($url,'/').'|';
                  }
              }
              $mapping_rule=substr($mapping_rule,0,-1);
              $DBInfo->url_mappings=array_merge($DBInfo->url_mappings,$mappings);
              $DBInfo->url_mapping_rule.=$DBInfo->url_mapping_rule ?
                  '|'.$mapping_rule:$mapping_rule;
          }
      }
  
      if ($options['init'] or !$DBInfo->url_mappings) return '';
  
      $out=array();
      foreach ($DBInfo->url_mappings as $k=>$v) {
          if (preg_match('/^(http|ftp|mailto)/',$v))
              $v='<a href="'.$v.'">'.$v.'</a>';
          $out[]='<tr><td>'.$k.'</td><td>'.$v.'</td></tr>';
      }
  
      return "<table class='urlMapping'>\n".implode("\n",$out)."</table>\n";
  }
  
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2006/01/08 21:57:09

  Modified:    .        wiki.php wikilib.php
  Log:
  add mask_hostname() function
  fix url_mapping method: use preg_replace
  fix CamelCase related method: alway use bangmeta syntax with/without CamelCase
  
  Revision  Changes    Path
  1.267     +32 -8     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.266
  retrieving revision 1.267
  diff -u -r1.266 -r1.267
  --- wiki.php	7 Jan 2006 10:44:37 -0000	1.266
  +++ wiki.php	8 Jan 2006 12:57:08 -0000	1.267
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.266 2006/01/07 10:44:37 wkpark Exp $
  +// $Id: wiki.php,v 1.267 2006/01/08 12:57:08 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.266 $',1,-1);
  +$_revision = substr('$Revision: 1.267 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -735,14 +735,17 @@
         if (!is_array($this->url_mappings)) {
           $maps=explode("\n",$this->url_mappings);
           $tmap=array();
  +        $rule='';
           foreach ($maps as $map) {
             if (strpos($map,' ')) {
               $key=strtok($map,' ');
               $val=strtok('');
               $tmap["$key"]=$val;
  +            $rule.=preg_quote($key,'/').'|';
             }
           }
           $this->url_mappings=$tmap;
  +        $this->url_mapping_rule=substr($rule,0,-1);
         }
       }
     }
  @@ -1470,6 +1473,7 @@
     var $group='';
     var $use_purple=1;
     var $purple_number=0;
  +  var $java_scripts=array();
   
     function Formatter($page="",$options="") {
       global $DBInfo;
  @@ -1493,6 +1497,7 @@
       $this->auto_linebreak=$DBInfo->auto_linebreak;
       $this->nonexists=$DBInfo->nonexists;
       $this->url_mappings=$DBInfo->url_mappings;
  +    $this->url_mapping_rule=$DBInfo->url_mapping_rule;
   
       if (($p=strpos($page->name,"~")))
         $this->group=substr($page->name,0,$p+1);
  @@ -1585,6 +1590,10 @@
       if ($camelcase)
         $this->wordrule.='|'.
         "(?<![a-zA-Z])\!?(?:((\.{1,2})?\/)?[A-Z]([A-Z]+[0-9a-z]|[0-9a-z]+[A-Z])[0-9a-zA-Z]*)+\b";
  +    else
  +      # only bangmeta syntax activated
  +      $this->wordrule.='|'.
  +      "(?<![a-zA-Z])\!(?:((\.{1,2})?\/)?[A-Z]([A-Z]+[0-9a-z]|[0-9a-z]+[A-Z])[0-9a-zA-Z]*)+\b";
       # "(?<!\!|\[\[)\b(([A-Z]+[a-z0-9]+){2,})\b|".
       # "(?<!\!|\[\[)((?:\/?[A-Z]([a-z0-9]+|[A-Z]*(?=[A-Z][a-z0-9]|\b))){2,})\b|".
       # WikiName rule: WikiName ILoveYou (imported from the rule of NoSmoke)
  @@ -1787,6 +1796,7 @@
           if ($m[2]=='') $m[1].='1';
           return "<font size='$m[1]'>$m[3]</font>";
         }
  +      if ($url[0]==' ' and stristr('#+-',$url[1])) $url=substr($url,1);
         return "<tt class='wiki'>".str_replace("<","&lt;",$url)."</tt>"; # No link
         break;
       case '[':
  @@ -1826,12 +1836,8 @@
         }
   
         if ($this->url_mappings) {
  -        foreach ($this->url_mappings as $pre=>$rpre) {
  -          if (preg_match('/'.preg_quote($pre,'/').'/',$url)) {
  -            $url=$rpre.substr($url,strlen($pre));
  -            break;
  -          }
  -        }
  +        $url=
  +          preg_replace('/('.$this->url_mapping_rule.')/ie',"\$this->url_mappings['\\1']",$url);
         }
   
         if (preg_match("/^mailto:/",$url)) {
  @@ -1849,6 +1855,7 @@
           
           return $this->interwiki_repl($url,'',$attr,$external_icon);
         }
  +
         if ($force or strpos($url," ")) { # have a space ?
           list($url,$text)=explode(" ",$url,2);
           $link=str_replace('&','&amp;',$url);
  @@ -2905,6 +2912,23 @@
       if ($options['pagelinks']) $this->store_pagelinks();
     }
   
  +  function register_javascripts($js) {
  +    if (is_array($js)) {
  +      array_merge($this->java_scripts,$js);
  +    } else if (!in_array($js,$this->java_scripts)) {
  +      $this->java_scripts[]=$js;
  +    }
  +  }
  +
  +  function get_javascripts() {
  +    $out='';
  +    foreach ($this->java_scripts as $js) {
  +      $out.='<script type="text/javascript" src="'.$url_prefix.'/lib/'.$js.'>'.
  +        "</script>\n";
  +    }
  +    return $out;
  +  }
  +
     function get_merge($text,$rev="") {
       global $DBInfo;
   
  
  
  
  1.189     +14 -2     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.188
  retrieving revision 1.189
  diff -u -r1.188 -r1.189
  --- wikilib.php	7 Jan 2006 05:56:55 -0000	1.188
  +++ wikilib.php	8 Jan 2006 12:57:08 -0000	1.189
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.188 2006/01/07 05:56:55 wkpark Exp $
  +// $Id: wikilib.php,v 1.189 2006/01/08 12:57:08 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -164,6 +164,18 @@
     return preg_replace("/((?<=[a-z0-9]|[B-Z]{2})([A-Z][a-z]))/"," \\1",$title);
   }
   
  +function _mask_hostname($addr,$mask='&loz;') {
  +  $tmp=explode('.',$addr);
  +  switch($sz=sizeof($tmp)) {
  +  case 4:
  +    $tmp[$sz-1]=str_repeat($mask,strlen($tmp[$sz-1]));
  +    break;
  +  default:
  +    $tmp[0]=str_repeat($mask,strlen($tmp[0]));
  +  }
  +  return implode('.',$tmp);
  +}
  +
   // from php.net
   //
   // It seems that the best solution would be to use HMAC-MD5.
  @@ -1804,7 +1816,7 @@
       if (file_exists($DBInfo->shared_intermap))
         $map=array_merge($map,file($DBInfo->shared_intermap));
   
  -    for ($i=0;$i<sizeof($map);$i++) {
  +    for ($i=0,$sz=sizeof($map);$i<$sz;$i++) {
         $line=rtrim($map[$i]);
         if (!$line || $line[0]=="#" || $line[0]==" ") continue;
         if (preg_match("/^[A-Z]+/",$line)) {
  
  
  


wkpark      2006/01/08 21:57:53

  Modified:    doc      mywiki pds_htaccess
  Log:
  update
  
  Revision  Changes    Path
  1.2       +10 -5     moniwiki/doc/mywiki
  
  Index: mywiki
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/doc/mywiki,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- mywiki	8 Jul 2003 21:23:07 -0000	1.1
  +++ mywiki	8 Jan 2006 12:57:53 -0000	1.2
  @@ -13,26 +13,31 @@
   do the following workaround.
   
   Make a simple php script with no .php extension.
  -------------- mywiki ----------
  +------------- mywiki ------------
   <?php
   // chdir("/path/to/moniwiki");
   include("wiki.php"); 
   ?>
  -------------- 8X --------------
  +-------------- 8X ---------------
   
   Then, add the following lines to the .htaccess file in the same directory 
   as the 'mywiki' file (create the .htaccess file if doesn't exist):
   
  ------------ .htaccess ---------
  +-- .htaccess for Apache 1.3.xx --
   <Files mywiki>
   SetHandler application/x-httpd-php
   </Files>
  ------------ 8X ----------------
  +
  +-- .htaccess for Apache 2.0.xx --
  +<Files mywiki>
  +ForceType application/x-httpd-php
  +</Files>
  +------------- 8X ----------------
   
   This tells the apache webserver to treat the 'mywiki' file as a PHP script
   even though it doesn't have a .php extension.
   
  -$Id: mywiki,v 1.1 2003/07/08 21:23:07 wkpark Exp $
  +$Id: mywiki,v 1.2 2006/01/08 12:57:53 wkpark Exp $
   */
   
   // chdir("/path/to/moniwiki");
  
  
  
  1.2       +1 -1      moniwiki/doc/pds_htaccess
  
  Index: pds_htaccess
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/doc/pds_htaccess,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- pds_htaccess	10 Aug 2003 12:04:09 -0000	1.1
  +++ pds_htaccess	8 Jan 2006 12:57:53 -0000	1.2
  @@ -1,3 +1,3 @@
   # Place this file in your 'pds' directory.
   
  -AddType text/plain .cgi .pl .py .php4 .php3 .phtml .php .html
  +AddType text/plain .sh .cgi .pl .py .php .php3 .php4 .phtml .html
  
  
  


wkpark      2006/01/09 23:17:34

  Modified:    .        wiki.php
  Log:
  use caching to speed: pagelist and search results.
  
  Revision  Changes    Path
  1.268     +14 -3     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.267
  retrieving revision 1.268
  diff -u -r1.267 -r1.268
  --- wiki.php	8 Jan 2006 12:57:08 -0000	1.267
  +++ wiki.php	9 Jan 2006 14:17:34 -0000	1.268
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.267 2006/01/08 12:57:08 wkpark Exp $
  +// $Id: wiki.php,v 1.268 2006/01/09 14:17:34 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.267 $',1,-1);
  +$_revision = substr('$Revision: 1.268 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -798,8 +798,16 @@
       return rawurldecode($pagename);
     }
   
  -  function getPageLists($options='') {
  +  function getPageLists($options=array()) {
       $pages = array();
  +
  +    $pcid=md5(serialize(sort($options)));
  +    $pc=new Cache_text('pagelist');
  +    if (filemtime($this->text_dir) < $pc->mtime($pcid) and $pc->exists($pcid)) {
  +      $list=unserialize($pc->fetch($pcid));
  +      if (is_array($list)) return $list;
  +    }
  +
       $handle = opendir($this->text_dir);
   
       if (!$options) {
  @@ -808,6 +816,8 @@
           $pages[] = $this->keyToPagename($file);
         }
         closedir($handle);
  +      $pc->update($pcid,serialize($pages));
  +
         return $pages;
       } else if ($options['limit']) { # XXX
          while ($file = readdir($handle)) {
  @@ -833,6 +843,7 @@
          }
          closedir($handle);
       }
  +    $pc->update($pcid,serialize($pages));
       return $pages;
     }
   
  
  
  


wkpark      2006/01/09 23:17:34

  Modified:    plugin   FullSearch.php
  Log:
  use caching to speed: pagelist and search results.
  
  Revision  Changes    Path
  1.12      +44 -17    moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- FullSearch.php	10 Dec 2005 02:46:28 -0000	1.11
  +++ FullSearch.php	9 Jan 2006 14:17:34 -0000	1.12
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
   //
  -// $Id: FullSearch.php,v 1.11 2005/12/10 02:46:28 wkpark Exp $
  +// $Id: FullSearch.php,v 1.12 2006/01/09 14:17:34 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
  @@ -23,11 +23,18 @@
   
     print $out;
   
  -  if ($options['value'])
  +  if ($options['value']) {
       printf(_("Found %s matching %s out of %s total pages")."<br />",
            $ret['hits'],
           ($ret['hits'] == 1) ? 'page' : 'pages',
            $ret['all']);
  +    if (!$options['context']) {
  +      $tag=$formatter->link_to("?action=fullsearch&amp;value=$options[value]&amp;context=20",_("Context search."));
  +      printf(_(" or %s").'<br />',$tag);
  +    }
  +    $tag=$formatter->link_to("?action=fullsearch&amp;value=$options[value]&amp;refresh=1",_("Refresh"));
  +    printf(_(" (%s search results)"),$tag);
  +  }
     $args['noaction']=1;
     $formatter->send_footer($args,$options);
   }
  @@ -59,7 +66,7 @@
   EOF;
   
     if (!$needle) { # or blah blah
  -     $opts['msg'] = 'No search text';
  +     $opts['msg'] = _('No search text');
        return $form;
     }
     # XXX
  @@ -107,7 +114,16 @@
     }
   
     $hits = array();
  -  $pages = $DBInfo->getPageLists();
  +  # retrieve cache
  +  $sid=md5($formatter->page->name.'.FullSearch('.$value.')');
  +  $fc=new Cache_text('fullsearch');
  +  if (!$formatter->refresh and $fc->exists($sid)) {
  +    $data=unserialize($fc->fetch($sid));
  +    if (is_array($data)) {
  +      $hits=$data;
  +    }
  +  }
  +
     $pattern = '/'.$needle.'/';
     if ($excl_needle)
       $excl_pattern = '/'.$excl_needle.'/';
  @@ -116,7 +132,11 @@
       $excl_pattern.="i";
     }
   
  -  if ($opts['backlinks']) {
  +  if ($hits) {
  +     $pages = $DBInfo->getPageLists();
  +    //continue;
  +  } else if ($opts['backlinks']) {
  +     $pages = $DBInfo->getPageLists();
        $opts['context']=0; # turn off context-matching
        $cache=new Cache_text("pagelinks");
        foreach ($pages as $page_name) {
  @@ -133,6 +153,7 @@
          }
        }
     } else if ($opts['keywords']) {
  +     $pages = $DBInfo->getPageLists();
        $opts['context']=0; # turn off context-matching
        $cache=new Cache_text("keywords");
        foreach ($pages as $page_name) {
  @@ -148,6 +169,7 @@
          }
        }
     } else {
  +     $pages = $DBInfo->getPageLists();
        while (list($_, $page_name) = each($pages)) {
          $p = new WikiPage($page_name);
          if (!$p->exists()) continue;
  @@ -155,33 +177,38 @@
          #$count = count(preg_split($pattern, $body))-1;
          $count = preg_match_all($pattern, $body,$matches);
          if ($count) {
  -         # search matching contexts
  -         $context= find_needle($body,$needle,$excl_needle,$opts['context']);
  -         if ($opts['context'] and $context) {
  -           $contexts[$page_name] = $context;
  -           $hits[$page_name] = $count;
  -         } else
  -           $hits[$page_name] = $count;
  +         $hits[$page_name] = $count;
          }
        }
     }
     arsort($hits);
   
  +  $fc->update($sid,serialize($hits));
  +
     $out.= "<!-- RESULT LIST START -->"; // for search plugin
     $out.= "<ul>";
     reset($hits);
  +
     $idx=1;
     while (list($page_name, $count) = each($hits)) {
       if ($opts['checkbox']) $checkbox="<input type='checkbox' name='pagenames[]' value='$page_name' />";
  -    $out.= "<!-- RESULT ITEM START -->"; // for search plugin
  +    $out.= '<!-- RESULT ITEM START -->'; // for search plugin
       $out.= '<li>'.$checkbox.$formatter->link_tag(_rawurlencode($page_name),
  -          "?action=highlight&amp;value="._urlencode($needle),
  -          $page_name,"tabindex='$idx'");
  +          '?action=highlight&amp;value='._urlencode($needle),
  +          $page_name,'tabindex="'.$idx.'"');
       $out.= ' . . . . ' . $count . (($count == 1) ? ' match' : ' matches');
  -    $out.= $contexts[$page_name];
  +    if ($opts['context']) {
  +      # search matching contexts
  +      $p = new WikiPage($page_name);
  +      if ($p->exists()) {
  +        $body= $p->_get_raw_body();
  +        $out.= find_needle($body,$needle,$excl_needle,$opts['context']);
  +      }
  +    }
       $out.= "</li>\n";
  -    $out.= "<!-- RESULT ITEM END -->"; // for search plugin
  +    $out.= '<!-- RESULT ITEM END -->'; // for search plugin
       $idx++;
  +    #if ($idx > 50) break;
     }
     $out.= "</ul>\n";
     $out.= "<!-- RESULT LIST END -->"; // for search plugin
  
  
  


wkpark      2006/01/09 23:21:46

  Modified:    plugin/processor linuxdoc.php
  Log:
  fix chdir() order
  
  Revision  Changes    Path
  1.7       +2 -2      moniwiki/plugin/processor/linuxdoc.php
  
  Index: linuxdoc.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/linuxdoc.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- linuxdoc.php	10 Dec 2005 14:14:59 -0000	1.6
  +++ linuxdoc.php	9 Jan 2006 14:21:46 -0000	1.7
  @@ -6,7 +6,7 @@
   // Usage: {{{#!linuxdoc
   // linuxdoc code
   // }}}
  -// $Id: linuxdoc.php,v 1.6 2005/12/10 14:14:59 wkpark Exp $
  +// $Id: linuxdoc.php,v 1.7 2006/01/09 14:21:46 wkpark Exp $
   
   function processor_linuxdoc($formatter,$value) {
     global $DBInfo;
  @@ -56,7 +56,6 @@
     $fp=popen($cmd,'r');
     while($s = fgets($fp, 1024)) $log.= $s;
     pclose($fp);
  -  chdir($cwd);
   
     $tmpfh=$tmpf.'.html';
     $fp=fopen($tmpfh,'r');
  @@ -66,6 +65,7 @@
     unlink($tmpf.".sgml");
     unlink($tmpf); // XXX
     unlink($tmpfh);
  +  chdir($cwd);
   
     if (!$html) {
       $src=str_replace("<","&lt;",$value);
  
  
  


wkpark      2006/01/09 23:48:04

  Modified:    theme/blog footer.php header.php
  Log:
  replace short open tags to "<?php"
  
  Revision  Changes    Path
  1.4       +2 -2      moniwiki/theme/blog/footer.php
  
  Index: footer.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/blog/footer.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- footer.php	13 Oct 2004 13:16:49 -0000	1.3
  +++ footer.php	9 Jan 2006 14:48:04 -0000	1.4
  @@ -1,6 +1,6 @@
   </td><td width='200'>
   <div id='wikiSideMenu'>
  -<?
  +<?php
   print '<div style="font-size:10px">';
   if ($options['id']=='Anonymous')
     print macro_calendar($this,"'Blog',blog,noweek,archive",'Blog');
  @@ -21,7 +21,7 @@
   </td>
   </tr></table>
   <div id='wikiFooter'>
  -<?
  +<?php
     if ($lastedit)
       print "last modified $lastedit $lasttime<br />";
     print $menu.$banner."<br />".$timer;
  
  
  
  1.5       +7 -7      moniwiki/theme/blog/header.php
  
  Index: header.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/blog/header.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- header.php	13 Oct 2004 13:17:47 -0000	1.4
  +++ header.php	9 Jan 2006 14:48:04 -0000	1.5
  @@ -1,4 +1,4 @@
  -<?
  +<?php
   # $title, $logo
   # $menu, $icon, $upper_icon, $rss_icon, $user_link
   # $msg
  @@ -10,13 +10,13 @@
   ?>
   <div id='wikiHeader'>
   <table border='0' width='100%' cellpadding='0' cellspacing='0'><tr>
  -<td rowspan='2' width='10%'><img src='<?=$this->url_prefix?>/imgs/moniwiki-logo.gif' alt='MoniWiki' /></td><td><?=$title?>
  -</td><td width='10%' rowspan='2'><?=$login?></td></tr>
  -<tr><td><?=$goto_form?></td></tr>
  +<td rowspan='2' width='10%'><img src='<?php echo $this->url_prefix?>/imgs/moniwiki-logo.gif' alt='MoniWiki' /></td><td><?php echo $title?>
  +</td><td width='10%' rowspan='2'><?php echo $login?></td></tr>
  +<tr><td><?php echo $goto_form?></td></tr>
   </table>
   </div>
  -<div id='wikiIcon'><?=$upper_icon?><?=$icons?><?=$rss_icon?><?=$home?></div>
  -<div id='wikiMenu'><?=$menu?></div>
  -<?=$msg?>
  +<div id='wikiIcon'><?php echo $upper_icon?><?php echo $icons?><?php echo $rss_icon?><?php echo $home?></div>
  +<div id='wikiMenu'><?php echo $menu?></div>
  +<?php echo $msg?>
   <table border='0' width='100%'><tr valign='top'>
   <td width='100%'>
  
  
  


wkpark      2006/01/09 23:48:04

  Modified:    theme/ddt footer.php header.php
  Log:
  replace short open tags to "<?php"
  
  Revision  Changes    Path
  1.2       +2 -2      moniwiki/theme/ddt/footer.php
  
  Index: footer.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/ddt/footer.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- footer.php	23 Aug 2003 07:10:51 -0000	1.1
  +++ footer.php	9 Jan 2006 14:48:04 -0000	1.2
  @@ -1,10 +1,10 @@
   <div class='wikiFooter'>
  -<?
  +<?php
   if ($lastedit)
       print "last modified $lastedit $lasttime<br />";
   
   ?>
   <div class="wikiFooterMenu">
  -<?=$menu;?>
  +<?php echo $menu;?>
   </div>
   </div>
  
  
  
  1.2       +4 -4      moniwiki/theme/ddt/header.php
  
  Index: header.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/ddt/header.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- header.php	23 Aug 2003 07:10:51 -0000	1.1
  +++ header.php	9 Jan 2006 14:48:04 -0000	1.2
  @@ -1,4 +1,4 @@
  -<?
  +<?php
   # $title, $logo
   # $menu, $icon, $upper_icon, $rss_icon, $user_link
   # $themeurl
  @@ -8,7 +8,7 @@
       <table border='0' width='100%' cellpadding='0' cellspacing='0'>
         <tr>
   	<td>
  -	  <?=$menu?><a href="../">Home</a>|<?=$rss_icon?>
  +	  <?php echo $menu?><a href="../">Home</a>|<?php echo $rss_icon?>
   	</td>
         </tr>
         <tr>
  @@ -20,9 +20,9 @@
       <table border='0' width='100%'>
         <tr>
   	<td>
  -	  <?=$title?>
  +	  <?php echo $title?>
   	</td>
         </tr>
       </table>
   </div>
  -<?=$msg?>
  +<?php echo $msg?>
  
  
  


wkpark      2006/01/09 23:48:04

  Modified:    theme/kz footer.php header.php
  Log:
  replace short open tags to "<?php"
  
  Revision  Changes    Path
  1.2       +4 -4      moniwiki/theme/kz/footer.php
  
  Index: footer.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/kz/footer.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- footer.php	10 Aug 2003 13:09:49 -0000	1.1
  +++ footer.php	9 Jan 2006 14:48:04 -0000	1.2
  @@ -6,9 +6,9 @@
   	text-align: right;
   ">
   <div align="left">
  -<?=$DBInfo->counter->pageCounter($this->page->name)?>
  +<?php echo $DBInfo->counter->pageCounter($this->page->name)?>
   </div>
  -<?
  +<?php
   # Processing Instruction #action ǰ ,
   # $this->actions ԵǾִ Ȯغ,
   #  װ ƮѴ.
  @@ -19,8 +19,8 @@
   # txt ſ   ִ մϴ.
   ?>
   Best viewed with 
  -<?=$this->link_tag("Mozilla","","Mozilla","")?>
  +<?php echo $this->link_tag("Mozilla","","Mozilla","")?>
    latest.
   Powered by 
  -<?=$this->link_tag("MoniWiki","","MoniWiki","title='MoniWiki'")?>.
  +<?php echo $this->link_tag("MoniWiki","","MoniWiki","title='MoniWiki'")?>.
   </div>
  
  
  
  1.2       +8 -8      moniwiki/theme/kz/header.php
  
  Index: header.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/kz/header.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- header.php	10 Aug 2003 13:09:49 -0000	1.1
  +++ header.php	9 Jan 2006 14:48:04 -0000	1.2
  @@ -1,22 +1,22 @@
   <div id="wikiMenu">
  -<div id="gotoForm"><?=$goto_form?></div>
  -<? echo
  +<div id="gotoForm"><?php echo $goto_form?></div>
  +<?php echo
   $this->link_tag($this->frontpage,"",$this->sitename,"\n").
   $this->link_tag("TitleIndex","",$this->icon['list']._("TitleIndex"),"\n").
   $this->link_tag("FindPage","",$this->icon['find']._("FindPage"),"\n").
   $this->link_tag("RecentChanges","",$this->icon['diff']._("RecentChanges"),"\n");
   ?>
   <div align="right" style="border-top: 1px solid cornflowerblue">
  -<?=$this->link_tag("PageHits","","Total ".macro_PageCount()." pages");?>
  +<?php echo $this->link_tag("PageHits","","Total ".macro_PageCount()." pages");?>
   </div>
   <div id="currentPage">
   <h4>Current Page</h4>
  -<?=$title?>
  -<div id="wikiIcons"><?=$icons?></div>
  +<?php echo $title?>
  +<div id="wikiIcons"><?php echo $icons?></div>
   </div>
   <div id="wikiMap">
   <h4>Central Pages</h4>
  -<? echo
  +<?php echo
   $this->link_tag("%B9%E6%B8%ED%B7%CF","",_("GuestBook"),"").
   $this->link_tag("UploadedFiles","",_("UploadedFiles"),"");
   /*
  @@ -30,9 +30,9 @@
   */
   ?>
   </div>
  -<div id="loginForm"><?
  +<div id="loginForm"><?php
   include ("plugin/login.php");
   echo macro_login($this);
   ?></div>
   </div>
  -<? if ($msg) echo "<div id='wikiMsg'>".$msg."</div>"; ?>
  +<?php if ($msg) echo "<div id='wikiMsg'>".$msg."</div>"; ?>
  
  
  


wkpark      2006/01/09 23:48:04

  Modified:    theme/nblog footer.php header.php
  Log:
  replace short open tags to "<?php"
  
  Revision  Changes    Path
  1.3       +2 -2      moniwiki/theme/nblog/footer.php
  
  Index: footer.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/nblog/footer.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- footer.php	13 Oct 2004 13:20:06 -0000	1.2
  +++ footer.php	9 Jan 2006 14:48:04 -0000	1.3
  @@ -1,6 +1,6 @@
   </td><td bgcolor='#eeeeee'>
   <div id='wikiSideMenu'>
  -<?
  +<?php
   print '<div style="font-size:10px">';
   if ($options['id']=='Anonymous')
     print macro_calendar($this,"'Blog',blog,noweek,archive",'Blog');
  @@ -20,7 +20,7 @@
   </td>
   </tr></table>
   <div id='wikiFooter'>
  -<?
  +<?php
     if ($lastedit)
       print "last modified $lastedit $lasttime<br />";
     print $menu.$banner."<br />".$timer;
  
  
  
  1.3       +7 -7      moniwiki/theme/nblog/header.php
  
  Index: header.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/nblog/header.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- header.php	13 Oct 2004 13:20:05 -0000	1.2
  +++ header.php	9 Jan 2006 14:48:04 -0000	1.3
  @@ -1,4 +1,4 @@
  -<?
  +<?php
   # $title, $logo
   # $menu, $icon, $upper_icon, $rss_icon, $user_link
   # $msg
  @@ -9,13 +9,13 @@
   ?>
   <div id='wikiHeader'>
   <table border='0' width='100%' cellpadding='3' cellspacing='0'><tr>
  -<td rowspan='2' width='10%'><img src='<?=$this->url_prefix?>/imgs/moniwiki-logo.gif' alt='MoniWiki' /></td><td><?=$title?>
  -</td><td width='10%' rowspan='2'><?=$login?></td></tr>
  -<tr><td><?=$goto_form?></td></tr>
  +<td rowspan='2' width='10%'><img src='<?php echo $this->url_prefix?>/imgs/moniwiki-logo.gif' alt='MoniWiki' /></td><td><?php echo $title?>
  +</td><td width='10%' rowspan='2'><?php echo $login?></td></tr>
  +<tr><td><?php echo $goto_form?></td></tr>
   </table>
   </div>
  -<div id='wikiIcon'><?=$upper_icon?><?=$icons?><?=$rss_icon?><?=$home?></div>
  -<div id='wikiMenu'><?=$menu?></div>
  -<?=$msg?>
  +<div id='wikiIcon'><?php echo $upper_icon?><?php echo $icons?><?php echo $rss_icon?><?php echo $home?></div>
  +<div id='wikiMenu'><?php echo $menu?></div>
  +<?php echo $msg?>
   <table border='0' width='100%' cellpadding='0' cellspacing='0'><tr valign='top'>
   <td width='100%'>
  
  
  


wkpark      2006/01/09 23:48:04

  Modified:    theme/orange footer.php header.php
  Log:
  replace short open tags to "<?php"
  
  Revision  Changes    Path
  1.2       +2 -2      moniwiki/theme/orange/footer.php
  
  Index: footer.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/orange/footer.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- footer.php	30 Dec 2003 22:41:47 -0000	1.1
  +++ footer.php	9 Jan 2006 14:48:04 -0000	1.2
  @@ -1,5 +1,5 @@
   </td><td width='200'>
  -<?
  +<?php
   print '<div style="font-size:10px">';
   if ($options['id']=='Anonymous')
     print macro_calendar($this,"blog,noweek",'Blog');
  @@ -19,7 +19,7 @@
   </td>
   </tr></table>
   <div id='wikiFooter'>
  -<?
  +<?php
     if ($lastedit)
       print "last modified $lastedit $lasttime<br />";
     print $menu.$banner."<br />".$timer;
  
  
  
  1.3       +7 -7      moniwiki/theme/orange/header.php
  
  Index: header.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/orange/header.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- header.php	11 Aug 2004 12:02:03 -0000	1.2
  +++ header.php	9 Jan 2006 14:48:04 -0000	1.3
  @@ -1,4 +1,4 @@
  -<?
  +<?php
   # $title, $logo
   # $menu, $icon, $upper_icon, $rss_icon, $user_link
   # $msg
  @@ -9,13 +9,13 @@
   ?>
   <div id='wikiHeader'>
   <table border='0' width='100%' cellpadding='0' cellspacing='0'><tr>
  -<td rowspan='2' width='10%'><img src='<?=$this->url_prefix?>/imgs/moniwiki-logo.gif' alt='MoniWiki' /></td><td><?=$title?>
  -</td><td width='10%' rowspan='2'><?=$login?></td></tr>
  -<tr><td><?=$goto_form?></td></tr>
  +<td rowspan='2' width='10%'><img src='<?php echo $this->url_prefix?>/imgs/moniwiki-logo.gif' alt='MoniWiki' /></td><td><?php echo $title?>
  +</td><td width='10%' rowspan='2'><?php echo $login?></td></tr>
  +<tr><td><?php echo $goto_form?></td></tr>
   </table>
   </div>
  -<div id='wikiIcon'><?=$icons?><?=$upper_icon?><?=$rss_icon?><?=$home?></div>
  -<div id='wikiMenu'><?=$menu?></div>
  -<?=$msg?>
  +<div id='wikiIcon'><?php echo $icons?><?php echo $upper_icon?><?php echo $rss_icon?><?php echo $home?></div>
  +<div id='wikiMenu'><?php echo $menu?></div>
  +<?php echo $msg?>
   <table border='0' width='100%'><tr valign='top'>
   <td width='100%'>
  
  
  


wkpark      2006/01/09 23:48:04

  Modified:    theme/samplehome footer.php header.php
  Log:
  replace short open tags to "<?php"
  
  Revision  Changes    Path
  1.3       +2 -2      moniwiki/theme/samplehome/footer.php
  
  Index: footer.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/samplehome/footer.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- footer.php	11 Aug 2003 05:16:07 -0000	1.2
  +++ footer.php	9 Jan 2006 14:48:04 -0000	1.3
  @@ -1,5 +1,5 @@
   </td><td width='200'>
  -<?
  +<?php
   print '<div style="font-size:10px">';
   if ($options['id']=='Anonymous')
     print macro_calendar($this,"blog,noweek",'Blog');
  @@ -18,7 +18,7 @@
   </td>
   </tr></table>
   <div id='wikiFooter'>
  -<?
  +<?php
     if ($lastedit)
       print "last modified $lastedit $lasttime<br />";
     if ($options['id']!='Anonymous') print '<font size="-1">'.$menu.'</font>';
  
  
  
  1.3       +8 -8      moniwiki/theme/samplehome/header.php
  
  Index: header.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/samplehome/header.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- header.php	11 Aug 2003 05:16:07 -0000	1.2
  +++ header.php	9 Jan 2006 14:48:04 -0000	1.3
  @@ -1,4 +1,4 @@
  -<?
  +<?php
   # $title, $logo
   # $menu, $icon, $upper_icon, $rss_icon, $user_link
   # $msg
  @@ -12,19 +12,19 @@
    width: 100%;
    height: 60px;
    background-color: #e3ffc3;
  -// border-bottom: 1px solid #666666;
  - background: url("<?=$themeurl?>/imgs/bg.png") no-repeat;
  +/* border-bottom: 1px solid #666666; */
  + background: url("<?php echo $themeurl?>/imgs/bg.png") no-repeat;
   }
   -->
   </style>
   <div id='wikiHeader'>
   <table border='0' width='100%' cellpadding='0' cellspacing='0'><tr>
  -<td width='64'><img src='<?=$themeurl?>/imgs/logo.png'></td>
  -<td valign='bottom'><font size='-1'><?=$menu?></font></td></tr>
  -<tr><td colspan='2' align='right'><?=$goto_form?>&nbsp;&nbsp;</td></tr>
  +<td width='64'><img src='<?php echo $themeurl?>/imgs/logo.png'></td>
  +<td valign='bottom'><font size='-1'><?php echo $menu?></font></td></tr>
  +<tr><td colspan='2' align='right'><?php echo $goto_form?>&nbsp;&nbsp;</td></tr>
   </table>
   </div>
  -<div><?=$title?></div>
  -<?=$msg?>
  +<div><?php echo $title?></div>
  +<?php echo $msg?>
   <table border='0' width='100%'><tr valign='top'>
   <td width='100%'>
  
  
  


wkpark      2006/01/09 23:48:04

  Modified:    theme/sampleicon footer.php header.php
  Log:
  replace short open tags to "<?php"
  
  Revision  Changes    Path
  1.2       +1 -1      moniwiki/theme/sampleicon/footer.php
  
  Index: footer.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/sampleicon/footer.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- footer.php	10 Aug 2003 13:09:49 -0000	1.1
  +++ footer.php	9 Jan 2006 14:48:04 -0000	1.2
  @@ -1,5 +1,5 @@
   <div id='wikiFooter'>
  -<?
  +<?php
     if ($lastedit)
       print "last modified $lastedit $lasttime<br />";
     print $menu.$banner."<br />".$timer;
  
  
  
  1.2       +6 -6      moniwiki/theme/sampleicon/header.php
  
  Index: header.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/sampleicon/header.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- header.php	10 Aug 2003 13:09:49 -0000	1.1
  +++ header.php	9 Jan 2006 14:48:04 -0000	1.2
  @@ -1,4 +1,4 @@
  -<?
  +<?php
   # $title, $logo
   # $menu, $icon, $upper_icon, $rss_icon, $user_link
   # $themeurl
  @@ -9,13 +9,13 @@
   ?>
   <div id='wikiHeader'>
   <table border='0' width='100%' cellpadding='0' cellspacing='0'><tr>
  -<td rowspan='2' width='10%'><img alt='MoniWiki' src='<?=$this->url_prefix?>/imgs/moniwiki-logo.gif' /></td><td><?=$title?>
  -</td><td width='10%' rowspan='2'><?=$login?></td></tr>
  -<tr><td><?=$goto_form?></td></tr>
  +<td rowspan='2' width='10%'><img alt='MoniWiki' src='<?php echo $this->url_prefix?>/imgs/moniwiki-logo.gif' /></td><td><?php echo $title?>
  +</td><td width='10%' rowspan='2'><?php echo $login?></td></tr>
  +<tr><td><?php echo $goto_form?></td></tr>
   <tr><td><font size='-2'>&nbsp;</font></td></tr>
   </table>
   <table border='0' width='100%'><tr>
  -<td>&nbsp;&nbsp;&nbsp;&nbsp;<?=$menu?></td><td align='right'><?=$icons?><?=$upper_icon?><?=$rss_icon?><?=$home?>&nbsp;&nbsp;&nbsp;&nbsp;</td></tr>
  +<td>&nbsp;&nbsp;&nbsp;&nbsp;<?php echo $menu?></td><td align='right'><?php echo $icons?><?php echo $upper_icon?><?php echo $rss_icon?><?php echo $home?>&nbsp;&nbsp;&nbsp;&nbsp;</td></tr>
   </table>
   </div>
  -<?=$msg?>
  +<?php echo $msg?>
  
  
  


wkpark      2006/01/09 23:48:05

  Modified:    theme/sampleleft footer.php header.php
  Log:
  replace short open tags to "<?php"
  
  Revision  Changes    Path
  1.3       +1 -1      moniwiki/theme/sampleleft/footer.php
  
  Index: footer.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/sampleleft/footer.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- footer.php	15 Aug 2003 14:06:19 -0000	1.2
  +++ footer.php	9 Jan 2006 14:48:04 -0000	1.3
  @@ -1,7 +1,7 @@
   </td>
   </tr></table>
   <div id='wikiFooter'>
  -<?
  +<?php
     if ($lastedit)
       print "last modified $lastedit $lasttime<br />";
   ?>
  
  
  
  1.3       +8 -8      moniwiki/theme/sampleleft/header.php
  
  Index: header.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/sampleleft/header.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- header.php	15 Aug 2003 14:06:19 -0000	1.2
  +++ header.php	9 Jan 2006 14:48:04 -0000	1.3
  @@ -1,4 +1,4 @@
  -<?
  +<?php
   # $title, $logo
   # $menu, $icon, $upper_icon, $rss_icon, $user_link
   # $msg
  @@ -8,22 +8,22 @@
   <style type="text/css">
   <!--
   body {
  -  background-image:url("<?=$themeurl?>/imgs/bg.gif");
  +  background-image:url("<?php echo $themeurl?>/imgs/bg.gif");
   }
   -->
   </style>
   <div id='wikiHeader'>
  -<img alt='ChemWiki' src='<?=$this->url_prefix?>/imgs/wikiwiki.gif' />
  -<?=$title?>
  +<img alt='ChemWiki' src='<?php echo $this->url_prefix?>/imgs/wikiwiki.gif' />
  +<?php echo $title?>
   </div>
  -<div style='background-color:#a8a8a8;text-align:right;font-size:8px;'><?=$icons?><?=$rss_icon?></div>
  -<?=$msg?>
  +<div style='background-color:#a8a8a8;text-align:right;font-size:8px;'><?php echo $icons?><?php echo $rss_icon?></div>
  +<?php echo $msg?>
   <table border='0' cellpadding='0' cellspacing='0' width='100%'><tr valign='top'>
   <td id='wikiMenu' width='200'>
   <table border='0' width='100%' cellpadding='0' cellspacing='0'><tr>
  -<tr><td align='right'><?=$goto_form?></td></tr>
  +<tr><td align='right'><?php echo $goto_form?></td></tr>
   </table>
  -<?
  +<?php
   print '<div style="padding-left:10px;font-size:12px">';
   print "$menu<br />";
   print "</div>";
  
  
  


wkpark      2006/01/09 23:48:41

  Modified:    plugin   FullSearch.php
  Log:
  XSS fix
  
  Revision  Changes    Path
  1.13      +4 -3      moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- FullSearch.php	9 Jan 2006 14:17:34 -0000	1.12
  +++ FullSearch.php	9 Jan 2006 14:48:41 -0000	1.13
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
   //
  -// $Id: FullSearch.php,v 1.12 2006/01/09 14:17:34 wkpark Exp $
  +// $Id: FullSearch.php,v 1.13 2006/01/09 14:48:41 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
  @@ -24,15 +24,16 @@
     print $out;
   
     if ($options['value']) {
  +    $val=htmlspecialchars($options['value']);
       printf(_("Found %s matching %s out of %s total pages")."<br />",
            $ret['hits'],
           ($ret['hits'] == 1) ? 'page' : 'pages',
            $ret['all']);
       if (!$options['context']) {
  -      $tag=$formatter->link_to("?action=fullsearch&amp;value=$options[value]&amp;context=20",_("Context search."));
  +      $tag=$formatter->link_to("?action=fullsearch&amp;value=$val&amp;context=20",_("Context search."));
         printf(_(" or %s").'<br />',$tag);
       }
  -    $tag=$formatter->link_to("?action=fullsearch&amp;value=$options[value]&amp;refresh=1",_("Refresh"));
  +    $tag=$formatter->link_to("?action=fullsearch&amp;value=$val&amp;refresh=1",_("Refresh"));
       printf(_(" (%s search results)"),$tag);
     }
     $args['noaction']=1;
  
  
  


wkpark      2006/01/10 01:10:26

  Modified:    plugin   UploadedFiles.php
  Log:
  more fixes for wiki tagging.
  
  Revision  Changes    Path
  1.9       +29 -3     moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- UploadedFiles.php	7 Jan 2006 10:38:59 -0000	1.8
  +++ UploadedFiles.php	9 Jan 2006 16:10:26 -0000	1.9
  @@ -4,7 +4,7 @@
   // a UploadedFiles plugin for the MoniWiki
   // vim:et:sts=4:
   //
  -// $Id: UploadedFiles.php,v 1.8 2006/01/07 10:38:59 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.9 2006/01/09 16:10:26 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     $list=macro_UploadedFiles($formatter,$options['page'],$options);
  @@ -41,6 +41,10 @@
      } else if ($options['preview']) {
        $use_preview=1;
      }
  +
  +   if ($options['tag']) {
  +     $js_tag=1;$use_preview=1;
  +   }
      foreach ($args as $arg) {
         $arg=trim($arg);
         if (($p=strpos($arg,'='))!==false) {
  @@ -148,6 +152,13 @@
           $prefix=$formatter->link_url($formatter->page->urlname,"?action=$mydownload&amp;value=");
         $dir=$DBInfo->upload_dir."/$key";
      }
  +
  +   if ($formatter->preview and $formatter->page->name == $value) { 
  +     $opener='';
  +   } else {
  +     $opener=$value.':';
  +   }
  +
      if ($value!='UploadFile' and file_exists($dir))
         $handle= opendir($dir);
      else {
  @@ -156,6 +167,7 @@
         $prefix.= ($prefix ? '/':'');
         $dir=$DBInfo->upload_dir;
         $handle= opendir($dir);
  +      $opener='/';
      }
   
      $upfiles=array();
  @@ -181,15 +193,27 @@
      $out.="<table border='0' cellpadding='2'>\n";
      $out.="<tr><th colspan='2'>File name</th><th>Size</th><th>Date</th></tr>\n";
      $idx=1;
  +
  +   if ($js_tag) {
  +     $attr=' target="_blank"';
  +     $extra='&amp;tag=1';
  +   } else {
  +     $attr='';
  +     $extra='';
  +   }
      foreach ($dirs as $file) {
  -      $link=$formatter->link_url($file,"?action=uploadedfiles",$file);
  +      $link=$formatter->link_url($file,"?action=uploadedfiles$extra",$file,$attr);
         $date=date("Y-m-d",filemtime($dir."/".$DBInfo->pageToKeyname($file)));
         $out.="<tr><td class='wiki'><input type='$checkbox' name='files[$idx]' value='$file' /></td><td class='wiki'><a href='$link'>$file/</a></td><td align='right' class='wiki'>&nbsp;</td><td class='wiki'>$date</td></tr>\n";
         $idx++;
      }
   
      if (!$options['nodir'] and !$dirs) {
  -      $link=$formatter->link_tag('UploadFile',"?action=uploadedfiles&amp;value=top","..");
  +      if ($js_tag) {
  +        $attr=' target="_blank"';
  +        $extra='&amp;tag=1';
  +      }
  +      $link=$formatter->link_tag('UploadFile',"?action=uploadedfiles&amp;value=top$extra","..",$attr);
         $date=date("Y-m-d",filemtime($dir."/.."));
         $out.="<tr><td class='wiki'>&nbsp;</td><td class='wiki'>$link</td><td align='right' class='wiki'>&nbsp;</td><td class='wiki'>$date</td></tr>\n";
      }
  @@ -221,6 +245,8 @@
         $attr='';
         if ($use_preview or $js_tag) {
           $tag_open='attachment:'; $tag_close='';
  +        if ($opener != $value)
  +            $tag_open.=$opener;
           $alt="$tag_open$file$tag_close";
           preg_match("/\.(.{1,4})$/",$fname,$m);
           $ext=strtolower($m[1]);
  
  
  


wkpark      2006/01/10 01:10:56

  Modified:    plugin   BlogChanges.php
  Log:
  use $mask_hostname
  
  Revision  Changes    Path
  1.35      +2 -2      moniwiki/plugin/BlogChanges.php
  
  Index: BlogChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogChanges.php,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- BlogChanges.php	13 Sep 2005 09:15:19 -0000	1.34
  +++ BlogChanges.php	9 Jan 2006 16:10:56 -0000	1.35
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogChanges action plugin for the MoniWiki
   //
  -// $Id: BlogChanges.php,v 1.34 2005/09/13 09:15:19 wkpark Exp $
  +// $Id: BlogChanges.php,v 1.35 2006/01/09 16:10:56 wkpark Exp $
   
   class Blog_cache {
     function get_all_blogs() {
  @@ -373,7 +373,7 @@
       $url=qualifiedUrl($formatter->link_url(_urlencode($page)));
       if (!$opts['nouser']) {
         if (preg_match('/^[\d\.]+$/',$user)) {
  -        if ($DBInfo->interwiki['Whois'])
  +        if (!$DBInfo->mask_hostname and $DBInfo->interwiki['Whois'])
             $user='<a href="'.$DBInfo->interwiki['Whois'].$user.'">'.
               _("Anonymous").'</a>';
           else
  
  
  


wkpark      2006/01/10 17:23:23

  Modified:    .        wiki.php wikilib.php
  Log:
  fixed getLikePages() in the WikiDB class etc.
  
  Revision  Changes    Path
  1.269     +9 -13     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.268
  retrieving revision 1.269
  diff -u -r1.268 -r1.269
  --- wiki.php	9 Jan 2006 14:17:34 -0000	1.268
  +++ wiki.php	10 Jan 2006 08:23:23 -0000	1.269
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.268 2006/01/09 14:17:34 wkpark Exp $
  +// $Id: wiki.php,v 1.269 2006/01/10 08:23:23 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.268 $',1,-1);
  +$_revision = substr('$Revision: 1.269 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -847,19 +847,15 @@
       return $pages;
     }
   
  -  function getLikePages($needle,$mode=0) {
  +  function getLikePages($needle) {
       $pages= array();
  -    $handle= opendir($this->text_dir);
  -    if ($mode==1)
  -      $needle_key= $this->pageToKeyname($needle);
  -    else $needle_key=$needle;
  -
  -    while ($file = readdir($handle)) {
  -      if (is_dir($this->text_dir."/".$file)) continue;
  -      if (preg_match("/($needle_key)/",$file))
  -        $pages[] = $this->keyToPagename($file);
  +
  +    $all= $this->getPageLists();
  +
  +    foreach ($all as $page) {
  +      if (preg_match("/($needle)/",$page))
  +        $pages[] = $page;
       }
  -    closedir($handle);
       return $pages;
     }
   
  
  
  
  1.190     +11 -11    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.189
  retrieving revision 1.190
  diff -u -r1.189 -r1.190
  --- wikilib.php	8 Jan 2006 12:57:08 -0000	1.189
  +++ wikilib.php	10 Jan 2006 08:23:23 -0000	1.190
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.189 2006/01/08 12:57:08 wkpark Exp $
  +// $Id: wikilib.php,v 1.190 2006/01/10 08:23:23 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -725,22 +725,22 @@
   
     # get categories
     if ($DBInfo->use_category and !$options['nocategories']) {
  -  $categories=array();
  -  $categories= $DBInfo->getLikePages($DBInfo->category_regex);
  -  if ($categories) {
  -    $select_category="<select name='category' tabindex='4'>\n<option value=''>"._("--Select Category--")."</option>\n";
  -    foreach ($categories as $category)
  -      $select_category.="<option value='$category'>$category</option>\n";
  -    $select_category.="</select>\n";
  +    $categories=array();
  +    $categories= $DBInfo->getLikePages($DBInfo->category_regex);
  +    if ($categories) {
  +      $select_category="<select name='category' tabindex='4'>\n<option value=''>"._("--Select Category--")."</option>\n";
  +      foreach ($categories as $category)
  +        $select_category.="<option value='$category'>$category</option>\n";
  +      $select_category.="</select>\n";
  +    }
     }
   
     if ($DBInfo->use_minoredit) {
       $user=new User(); # get from COOKIE VARS
       if ($DBInfo->owners and in_array($user->id,$DBInfo->owners)) {
  -      $extra_check=' '._('Minor edit')."<input type='checkbox' tabindex='3' name='minor' />";
  +      $extra_check=' '._("Minor edit")."<input type='checkbox' tabindex='3' name='minor' />";
       }
     }
  -  }
   
     if (!$options['simple']) {
       $preview_btn='<input type="submit" tabindex="6" name="button_preview" '.
  @@ -2047,7 +2047,7 @@
     global $DBInfo;
   
     if ($formatter->group) {
  -    $group_pages = $DBInfo->getLikePages($formatter->group,1);
  +    $group_pages = $DBInfo->getLikePages($formatter->group);
       foreach ($group_pages as $page)
         $all_pages[]=str_replace($formatter->group,'',$page);
     } else
  
  
  


wkpark      2006/01/10 17:24:57

  Modified:    plugin   dot.php Tour.php
  Log:
  use Cache_text class and make dot procedures as a class.
  
  Revision  Changes    Path
  1.6       +18 -11    moniwiki/plugin/dot.php
  
  Index: dot.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/dot.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- dot.php	21 Oct 2004 08:27:01 -0000	1.5
  +++ dot.php	10 Jan 2006 08:24:57 -0000	1.6
  @@ -3,28 +3,32 @@
   // All rights reserved. Distributable under GPL see COPYING
   // dot action plugin for the MoniWiki
   //
  -// $Id: dot.php,v 1.5 2004/10/21 08:27:01 wkpark Exp $
  +// $Id: dot.php,v 1.6 2006/01/10 08:24:57 wkpark Exp $
   
   define(DEPTH,3);
   define(LEAFCOUNT,2);
   define(FONTSIZE,8);
   
  +class LinkTree {
  +  var $cache=null;
  +  function LinkTree($arena='pagelinks') {
  +    if ($arena != 'pagelinks' and $arena != 'keywords')
  +      $arena = 'pagelinks';
  +    $this->cache=new Cache_text($arena);
  +  }
  +
     function getLeafs($pagename,&$node,&$color,$depth,$count=LEAFCOUNT) {
  -    $p= new WikiPage($pagename);
  -    $f= new Formatter($p);
  -    $links=$f->get_pagelinks();
  +    $links=$this->cache->fetch($pagename);
       $links=explode("\n",$links);
       foreach ($links as $page) {
         if (!$color[$page]) $color[$page]=$depth;
         if ($page) {
           if (!$node[$page]) {
  -          $p= new WikiPage($page);
  -          $f= new Formatter($p);
  -          $leafs=$f->get_pagelinks();
  +          $leafs=$this->cache->fetch($page);
             if ($leafs) {
               $leafs=explode("\n",$leafs);
               # XXX 
  -            $nodelink[$page]=$p->size();
  +            $nodelink[$page]=sizeof($leafs);
             }
           } else $nodelink[$page]=1;
         }
  @@ -38,18 +42,19 @@
         if (!$color[$pagename]) $color[$pagename]=$depth;
         #print $depth."\n";
         $depth--;
  -      getLeafs($pagename,$node,$color,$depth,$count);
  +      $this->getLeafs($pagename,$node,$color,$depth,$count);
         if ($node[$pagename]) {
           # select 25% of links
           $size= (int) (sizeof($node[$pagename]) * 0.25);
           $slice= ($size > $count) ? $size: $count;
           $selected=array_slice($node[$pagename],0,$slice);
           foreach($selected as $leaf)
  -          makeTree($leaf,$node,$color,$depth,$count);
  +          $this->makeTree($leaf,$node,$color,$depth,$count);
         }
       }
       return;
     }
  +}
   
   function do_dot($formatter,$options) {
     global $DBInfo;
  @@ -64,7 +69,8 @@
     else $fontsize=FONTSIZE;
   
     $color=array();
  -  makeTree($options['page'],$node,$color,$depth,$count);
  +  $tree=new LinkTree($options['arena']);
  +  $thee->makeTree($options['page'],$node,$color,$depth,$count);
     if (!$node) $node=array($options['page']=>array());
     #print_r($color);
     foreach ($color as $key=>$val) $color[$key]=$depth-$val;
  @@ -119,4 +125,5 @@
     return;
   }
   
  +// vim:et:sts=2
   ?>
  
  
  
  1.6       +6 -3      moniwiki/plugin/Tour.php
  
  Index: Tour.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Tour.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Tour.php	20 Sep 2005 12:54:23 -0000	1.5
  +++ Tour.php	10 Jan 2006 08:24:57 -0000	1.6
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Tour]]
   //
  -// $Id: Tour.php,v 1.5 2005/09/20 12:54:23 wkpark Exp $
  +// $Id: Tour.php,v 1.6 2006/01/10 08:24:57 wkpark Exp $
   
   if (!function_exists('do_dot'))
       if ($pn=getPlugin('dot')) include_once("plugin/$pn.php");
  @@ -35,7 +35,9 @@
       else $depth=TOUR_DEPTH;
   
       $color=array();
  -    makeTree($value,$node,$color,$depth,$count);
  +
  +    $tree=new LinkTree($options['arena']);
  +    $tree->makeTree($value,$node,$color,$depth,$count);
       if (!$node) $node=array($value=>array());
   
       $allnode=array_keys($node);
  @@ -69,7 +71,8 @@
       $link='<h3>'.sprintf(_("More %s or more %s"),$wide,$deep).'</h3>';
   
       foreach ($allnode as $node) {
  -        $pages.='<li>'.$formatter->link_tag($url[$node],"",$node)."</li>\n";
  +        $pages.='<li>'.$formatter->link_tag($url[$node],"",
  +            htmlspecialchars($node))."</li>\n";
       }
       $title='<h3>'.sprintf(_("Total %d related pages"),sizeof($allnode)).'</h3>';
   
  
  
  


wkpark      2006/01/10 17:26:56

  Modified:    plugin/processor blog.php
  Log:
  check $mask_hostname
  
  Revision  Changes    Path
  1.22      +2 -2      moniwiki/plugin/processor/blog.php
  
  Index: blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/blog.php,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- blog.php	13 Sep 2005 08:51:10 -0000	1.21
  +++ blog.php	10 Jan 2006 08:26:56 -0000	1.22
  @@ -7,7 +7,7 @@
   // Hello World
   // }}}
   // this processor is used internally by the Blog action
  -// $Id: blog.php,v 1.21 2005/09/13 08:51:10 wkpark Exp $
  +// $Id: blog.php,v 1.22 2006/01/10 08:26:56 wkpark Exp $
   
   function processor_blog($formatter,$value="",$options) {
     static $date_anchor='';
  @@ -39,7 +39,7 @@
       list($tag, $user, $date, $title)=explode(" ",$line, 4);
   
       if (preg_match('/^[\d\.]+$/',$user)) {
  -      if ($DBInfo->interwiki['Whois'])
  +      if (!$DBInfo->mask_hostname and $DBInfo->interwiki['Whois'])
           #$user=_("Anonymous")."[<a href='".$DBInfo->interwiki['Whois']."$user'>$user</a>]";
           $user="<a href='".$DBInfo->interwiki['Whois']."$user'>"._("Anonymous")."</a>";
         else
  
  
  


wkpark      2006/01/10 19:35:28

  Modified:    plugin   FullSearch.php LikePages.php
  Log:
  gettextize some msgs.
  
  Revision  Changes    Path
  1.14      +3 -3      moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- FullSearch.php	9 Jan 2006 14:48:41 -0000	1.13
  +++ FullSearch.php	10 Jan 2006 10:35:28 -0000	1.14
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
   //
  -// $Id: FullSearch.php,v 1.13 2006/01/09 14:48:41 wkpark Exp $
  +// $Id: FullSearch.php,v 1.14 2006/01/10 10:35:28 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
  @@ -27,7 +27,7 @@
       $val=htmlspecialchars($options['value']);
       printf(_("Found %s matching %s out of %s total pages")."<br />",
            $ret['hits'],
  -        ($ret['hits'] == 1) ? 'page' : 'pages',
  +        ($ret['hits'] == 1) ? _("page") : _("pages"),
            $ret['all']);
       if (!$options['context']) {
         $tag=$formatter->link_to("?action=fullsearch&amp;value=$val&amp;context=20",_("Context search."));
  @@ -67,7 +67,7 @@
   EOF;
   
     if (!$needle) { # or blah blah
  -     $opts['msg'] = _('No search text');
  +     $opts['msg'] = _("No search text");
        return $form;
     }
     # XXX
  
  
  
  1.7       +2 -2      moniwiki/plugin/LikePages.php
  
  Index: LikePages.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/LikePages.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- LikePages.php	5 Jan 2006 17:33:43 -0000	1.6
  +++ LikePages.php	10 Jan 2006 10:35:28 -0000	1.7
  @@ -4,7 +4,7 @@
   // a LikePages plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: LikePages.php,v 1.6 2006/01/05 17:33:43 wkpark Exp $
  +// $Id: LikePages.php,v 1.7 2006/01/10 10:35:28 wkpark Exp $
   
   function do_LikePages($formatter,$options) {
   
  @@ -28,7 +28,7 @@
     $metawiki=$opts['metawiki'];
   
     if (strlen($pname) < 3) {
  -    $opts['msg'] = _('Use more specific text');
  +    $opts['msg'] = _("Use more specific text");
       return '';
     }
   
  
  
  


wkpark      2006/01/10 20:39:39

  Modified:    locale   Makefile
  Log:
  update
  
  Revision  Changes    Path
  1.6       +18 -1     moniwiki/locale/Makefile
  
  Index: Makefile
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/Makefile,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Makefile	8 Aug 2005 13:16:42 -0000	1.5
  +++ Makefile	10 Jan 2006 11:39:39 -0000	1.6
  @@ -1,4 +1,4 @@
  -# $Id: Makefile,v 1.5 2005/08/08 13:16:42 wkpark Exp $
  +# $Id: Makefile,v 1.6 2006/01/10 11:39:39 wkpark Exp $
   #
   # locale/Makefile
   #
  @@ -55,6 +55,7 @@
   ${POT_FILE}: ../plugin/Anchor.php
   ${POT_FILE}: ../plugin/Attachment.php
   ${POT_FILE}: ../plugin/BabelFish.php
  +${POT_FILE}: ../plugin/Baduk.php
   ${POT_FILE}: ../plugin/Bar.php
   ${POT_FILE}: ../plugin/Blog.php
   ${POT_FILE}: ../plugin/BlogArchives.php
  @@ -83,9 +84,13 @@
   ${POT_FILE}: ../plugin/Include.php
   ${POT_FILE}: ../plugin/Info.php
   ${POT_FILE}: ../plugin/JME.php
  +${POT_FILE}: ../plugin/KeywordView.php
  +${POT_FILE}: ../plugin/Keywords.php
   ${POT_FILE}: ../plugin/LikePages.php
  +${POT_FILE}: ../plugin/LineHeight.php
   ${POT_FILE}: ../plugin/MailTo.php
   ${POT_FILE}: ../plugin/Media.php
  +${POT_FILE}: ../plugin/MoniCalendar.php
   ${POT_FILE}: ../plugin/Navigation.php
   ${POT_FILE}: ../plugin/Note.php
   ${POT_FILE}: ../plugin/OeKaki.php
  @@ -96,29 +101,36 @@
   ${POT_FILE}: ../plugin/RecentChanges.php
   ${POT_FILE}: ../plugin/SearchPlugin.php
   ${POT_FILE}: ../plugin/ShowSmiley.php
  +${POT_FILE}: ../plugin/SlideShow.php
   ${POT_FILE}: ../plugin/SmileyChooser.php
   ${POT_FILE}: ../plugin/SystemInfo.php
   ${POT_FILE}: ../plugin/Test.php
  +${POT_FILE}: ../plugin/Tour.php
   ${POT_FILE}: ../plugin/TwinPages.php
   ${POT_FILE}: ../plugin/UWL.php
   ${POT_FILE}: ../plugin/UploadFile.php
   ${POT_FILE}: ../plugin/UploadForm.php
   ${POT_FILE}: ../plugin/UploadedFiles.php
  +${POT_FILE}: ../plugin/UrlMapping.php
   ${POT_FILE}: ../plugin/VisualTour.php
   ${POT_FILE}: ../plugin/Vote.php
   ${POT_FILE}: ../plugin/WantedPages.php
   ${POT_FILE}: ../plugin/WordIndex.php
   ${POT_FILE}: ../plugin/autogoto.php
   ${POT_FILE}: ../plugin/backup.php
  +${POT_FILE}: ../plugin/blog2.php
   ${POT_FILE}: ../plugin/blogrss.php
   ${POT_FILE}: ../plugin/bookmark.php
  +${POT_FILE}: ../plugin/chat.php
   ${POT_FILE}: ../plugin/chmod.php
   ${POT_FILE}: ../plugin/css.php
   ${POT_FILE}: ../plugin/dot.php
   ${POT_FILE}: ../plugin/download.php
   ${POT_FILE}: ../plugin/filter.php
  +${POT_FILE}: ../plugin/filter/abbr.php
   ${POT_FILE}: ../plugin/filter/antispam.php
   ${POT_FILE}: ../plugin/filter/cite.php
  +${POT_FILE}: ../plugin/filter/indexer.php
   ${POT_FILE}: ../plugin/filter/sample.php
   ${POT_FILE}: ../plugin/fixmoin.php
   ${POT_FILE}: ../plugin/foaf.php
  @@ -132,9 +144,11 @@
   ${POT_FILE}: ../plugin/moztab.php
   ${POT_FILE}: ../plugin/new.php
   ${POT_FILE}: ../plugin/notitle.php
  +${POT_FILE}: ../plugin/pageview.php
   ${POT_FILE}: ../plugin/print.php
   ${POT_FILE}: ../plugin/processor/abc.php
   ${POT_FILE}: ../plugin/processor/asciimathml.php
  +${POT_FILE}: ../plugin/processor/baduk.php
   ${POT_FILE}: ../plugin/processor/blog.php
   ${POT_FILE}: ../plugin/processor/chat.php
   ${POT_FILE}: ../plugin/processor/diff.php
  @@ -157,6 +171,7 @@
   ${POT_FILE}: ../plugin/processor/pic.php
   ${POT_FILE}: ../plugin/processor/pre.php
   ${POT_FILE}: ../plugin/processor/python.php
  +${POT_FILE}: ../plugin/processor/randomquote.php
   ${POT_FILE}: ../plugin/processor/syntax.php
   ${POT_FILE}: ../plugin/processor/text_xml.php
   ${POT_FILE}: ../plugin/processor/vim.php
  @@ -172,6 +187,7 @@
   ${POT_FILE}: ../plugin/rss_blog.php
   ${POT_FILE}: ../plugin/rss_rc.php
   ${POT_FILE}: ../plugin/scrap.php
  +${POT_FILE}: ../plugin/searchdb.php
   ${POT_FILE}: ../plugin/security/community.php
   ${POT_FILE}: ../plugin/security/desktop.php
   ${POT_FILE}: ../plugin/security/htaccesslogin.php
  @@ -183,6 +199,7 @@
   ${POT_FILE}: ../plugin/sendping.php
   ${POT_FILE}: ../plugin/subscribe.php
   ${POT_FILE}: ../plugin/theme.php
  +${POT_FILE}: ../plugin/ticket.php
   ${POT_FILE}: ../plugin/trackback.php
   ${POT_FILE}: ../plugin/urlencode.php
   ${POT_FILE}: ../plugin/userform.php
  
  
  


wkpark      2006/01/10 20:39:39

  Modified:    locale/po fr.po ko.po moniwiki.pot
  Log:
  update
  
  Revision  Changes    Path
  1.14      +653 -204  moniwiki/locale/po/fr.po
  
  Index: fr.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/fr.po,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- fr.po	8 Aug 2005 13:16:43 -0000	1.13
  +++ fr.po	10 Jan 2006 11:39:39 -0000	1.14
  @@ -3,7 +3,7 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1\n"
  -"POT-Creation-Date: 2005-08-08 22:13+0900\n"
  +"POT-Creation-Date: 2006-01-10 19:47+0900\n"
   "PO-Revision-Date: 2003-08-17 22:51+0900\n"
   "Last-Translator: Serge Stinckwich <Serge.Stinckwich@info.unicaen.fr>\n"
   "Language-Team: fr <fr@li.org>\n"
  @@ -12,13 +12,13 @@
   "Content-Transfer-Encoding: 8bit\n"
   
   # ../plugin/Attachment.php:24
  -#: ../plugin/Attachment.php:40 ../plugin/Attachment.php:111
  +#: ../plugin/Attachment.php:41 ../plugin/Attachment.php:121
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr "Tlcharger le nouvel attachement \"%s\""
   
   # ../plugin/Attachment.php:24
  -#: ../plugin/Attachment.php:114
  +#: ../plugin/Attachment.php:124
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
  @@ -33,71 +33,73 @@
   msgid "Translate %s to %s"
   msgstr "Translate %s en %s"
   
  -#: ../plugin/Blog.php:86
  +#: ../plugin/Blog.php:86 ../plugin/blog2.php:87
   #, c-format
   msgid "Blog cache of \"%s\" is refreshed"
   msgstr ""
   
   # ../plugin/Blog.php:78
  -#: ../plugin/Blog.php:110
  +#: ../plugin/Blog.php:110 ../plugin/blog2.php:111
   #, c-format
   msgid "\"%s\" is updated"
   msgstr "\"%s\" est mis  jour"
   
   # ../plugin/Blog.php:83
  -#: ../plugin/Blog.php:115
  +#: ../plugin/Blog.php:115 ../plugin/blog2.php:116
   msgid "Add Blog"
   msgstr "Ajouter un blog"
   
   # ../plugin/sendping.php:55
  -#: ../plugin/Blog.php:155
  +#: ../plugin/Blog.php:155 ../plugin/blog2.php:156
   msgid "Error: No blog entry found!"
   msgstr ""
   
  -#: ../plugin/Blog.php:163 ../plugin/Comment.php:110
  +#: ../plugin/Blog.php:163 ../plugin/Comment.php:135 ../plugin/blog2.php:164
   msgid "Error: Don't make a clone!"
   msgstr ""
   
   # ../plugin/Blog.php:137
  -#: ../plugin/Blog.php:180
  +#: ../plugin/Blog.php:180 ../plugin/blog2.php:181
   #, c-format
   msgid "Comment added to \"%s\""
   msgstr "Commentaire ajout  \"%s\""
   
   # ../plugin/Blog.php:140
  -#: ../plugin/Blog.php:183
  +#: ../plugin/Blog.php:183 ../plugin/blog2.php:184
   #, c-format
   msgid "Blog entry added to \"%s\""
   msgstr "Entre de blog ajout  \"%s\""
   
   # ../plugin/Blog.php:176
  -#: ../plugin/Blog.php:220
  +#: ../plugin/Blog.php:220 ../plugin/blog2.php:221
   #, c-format
   msgid "Add Comment to \"%s\""
   msgstr "Ajouter un commentaire  \"%s\""
   
   # ../plugin/Blog.php:178
  -#: ../plugin/Blog.php:222
  +#: ../plugin/Blog.php:222 ../plugin/blog2.php:223
   #, c-format
   msgid "Add Blog entry to \"%s\""
   msgstr "Ajouter une entre de blog  \"%s\""
   
  -#: ../plugin/Blog.php:236 ../plugin/Blog.php:292 ../plugin/Comment.php:46
  +#: ../plugin/Blog.php:236 ../plugin/Blog.php:292 ../plugin/Comment.php:50
  +#: ../plugin/blog2.php:237 ../plugin/blog2.php:293
   msgid "Name"
   msgstr ""
   
   # ../wiki.php:2950
  -#: ../plugin/Blog.php:240 ../plugin/Blog.php:293
  +#: ../plugin/Blog.php:240 ../plugin/Blog.php:293 ../plugin/blog2.php:241
  +#: ../plugin/blog2.php:294
   msgid "Title"
   msgstr "titre"
   
   # ../plugin/Blog.php:197
  -#: ../plugin/Blog.php:246 ../plugin/Comment.php:48
  +#: ../plugin/Blog.php:246 ../plugin/Comment.php:52 ../plugin/blog2.php:247
   msgid "Don't add a signature"
   msgstr "Ne pas ajouter de signature"
   
   # ../plugin/Blog.php:210
  -#: ../plugin/Blog.php:259
  +#: ../plugin/Blog.php:259 ../plugin/blog2.php:260
   msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
   msgstr "<b>Une rgle horizontale</b> ---- ne s'applique pas au mode blog."
   
  @@ -111,46 +113,46 @@
   msgstr "ModificationsBlog"
   
   # ../wikilib.php:1483
  -#: ../plugin/BlogChanges.php:244
  +#: ../plugin/BlogChanges.php:246
   #, c-format
   msgid "Invalid category expr \"%s\""
   msgstr ""
   
   # ../plugin/processor/blog.php:43 ../plugin/processor/blog.php:45
  -#: ../plugin/BlogChanges.php:376 ../plugin/BlogChanges.php:378
  +#: ../plugin/BlogChanges.php:378 ../plugin/BlogChanges.php:380
   #: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
   msgid "Anonymous"
   msgstr "Anonyme"
   
   # ../plugin/processor/blog.php:78
  -#: ../plugin/BlogChanges.php:409 ../plugin/processor/blog.php:86
  +#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
   #, c-format
   msgid "%d comment"
   msgstr "%d commentaire"
   
   # ../plugin/processor/blog.php:78
  -#: ../plugin/BlogChanges.php:409 ../plugin/processor/blog.php:86
  +#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
   #, c-format
   msgid "%d comments"
   msgstr "%d commentaires"
   
   # ../plugin/processor/blog.php:70
  -#: ../plugin/BlogChanges.php:411 ../plugin/Comment.php:99
  +#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:124
   #: ../plugin/ImportTable.php:76 ../plugin/processor/blog.php:78
   msgid "Add comment"
   msgstr "Ajouter un commentaire"
   
   # ../plugin/processor/blog.php:89
  -#: ../plugin/BlogChanges.php:421 ../plugin/processor/blog.php:97
  +#: ../plugin/BlogChanges.php:423 ../plugin/processor/blog.php:97
   msgid "track back"
   msgstr ""
   
   # ../plugin/BlogChanges.php:226
  -#: ../plugin/BlogChanges.php:441
  +#: ../plugin/BlogChanges.php:443
   msgid "Previous"
   msgstr "Prcdent"
   
  -#: ../plugin/BlogChanges.php:444
  +#: ../plugin/BlogChanges.php:446
   msgid "Next"
   msgstr ""
   
  @@ -178,64 +180,84 @@
   msgstr ""
   
   # ../plugin/processor/blog.php:78
  -#: ../plugin/Comment.php:49
  +#: ../plugin/Comment.php:53
   msgid "Comment"
   msgstr "commentaire"
   
   # ../wikilib.php:482
  -#: ../plugin/Comment.php:50 ../plugin/ImportTable.php:67 ../wikilib.php:631
  +#: ../plugin/Comment.php:54 ../plugin/ImportTable.php:67 ../wikilib.php:747
   msgid "Preview"
   msgstr "Prvisualisation"
   
  +# ../wikilib.php:814
  +#: ../plugin/Comment.php:74
  +msgid "Page is not writable"
  +msgstr ""
  +
  +# ../wiki.php:3009
  +#: ../plugin/Comment.php:78
  +msgid "You are not allowed to add a comment."
  +msgstr ""
  +
  +# ../plugin/restore.php:27
  +#: ../plugin/Comment.php:79 ../plugin/Keywords.php:256
  +msgid "Page does not exists"
  +msgstr ""
  +
  +#: ../plugin/Comment.php:110 ../wikilib.php:1144 ../wikilib.php:1288
  +msgid ""
  +"Sorry, can not save page because some messages are blocked in this wiki."
  +msgstr ""
  +
   # ../wikilib.php:748 ../wikilib.php:777
  -#: ../plugin/Comment.php:90
  +#: ../plugin/Comment.php:115
   msgid "Preview comment"
   msgstr ""
   
   # ../plugin/Vote.php:109
  -#: ../plugin/Comment.php:136
  +#: ../plugin/Comment.php:165
   #, c-format
   msgid "%s is commented successfully"
   msgstr "Vote russi"
   
   # ../plugin/Vote.php:109
  -#: ../plugin/Comment.php:137
  +#: ../plugin/Comment.php:166
   msgid "Comment added successfully"
   msgstr ""
   
   # ../wiki.php:2338 ../wiki.php:2373 ../wikilib.php:770
  -#: ../plugin/Diff.php:43 ../plugin/Diff.php:82 ../wikilib.php:1008
  +#: ../plugin/Diff.php:151 ../plugin/Diff.php:190 ../wikilib.php:1275
   msgid "No difference found"
   msgstr "Aucune diffrence trouv"
   
   # ../wiki.php:2341
  -#: ../plugin/Diff.php:45
  +#: ../plugin/Diff.php:153
   msgid "Difference between yours and the current"
   msgstr "Diffrence entre votre version et la courante"
   
   # ../wiki.php:2211 ../wiki.php:2360
  -#: ../plugin/Diff.php:66 ../plugin/Info.php:125
  +#: ../plugin/Diff.php:174 ../plugin/Info.php:145
   msgid "No older revisions available"
   msgstr "Aucune rvision plus ancienne disponible"
   
   # ../wikilib.php:803
  -#: ../plugin/Diff.php:71 ../plugin/Info.php:131
  +#: ../plugin/Diff.php:179 ../plugin/Info.php:151
   msgid "Version info is not available in this wiki"
   msgstr ""
   
   # ../wiki.php:2376
  -#: ../plugin/Diff.php:84
  +#: ../plugin/Diff.php:192
   msgid "Difference between versions"
   msgstr "Diffrence entre les versions"
   
   # ../wiki.php:2378
  -#: ../plugin/Diff.php:86
  +#: ../plugin/Diff.php:194
   #, c-format
   msgid "Difference between r%s and r%s"
   msgstr "Diffrence entre r%s et r%s"
   
   # ../wiki.php:2382
  -#: ../plugin/Diff.php:89
  +#: ../plugin/Diff.php:197
   #, c-format
   msgid "Difference between r%s and the current"
   msgstr "Diffrence entre r%s et la version courante"
  @@ -279,13 +301,13 @@
   msgstr "%d jour(s) se sont passs depuis %s."
   
   # ../plugin/FastSearch.php:116
  -#: ../plugin/FastSearch.php:117 ../plugin/FullSearch.php:16
  +#: ../plugin/FastSearch.php:114 ../plugin/FullSearch.php:18
   #, c-format
   msgid "Full text search for \"%s\""
   msgstr "Recherche en texte intgral pour \"%s\""
   
   # ../plugin/FastSearch.php:125
  -#: ../plugin/FastSearch.php:126 ../plugin/FullSearch.php:25
  +#: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:28
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr "Trouv %s s'appariant avec %s sur un total de %s pages"
  @@ -296,34 +318,72 @@
   msgid "BackLinks search for \"%s\""
   msgstr ""
   
  +# ../wikilib.php:1479
  +#: ../plugin/FullSearch.php:16
  +#, c-format
  +msgid "KeyWords search for \"%s\""
  +msgstr ""
  +
  +#: ../plugin/FullSearch.php:30
  +msgid "page"
  +msgstr ""
  +
  +#: ../plugin/FullSearch.php:30
  +msgid "pages"
  +msgstr ""
  +
  +#: ../plugin/FullSearch.php:33
  +msgid "Context search."
  +msgstr ""
  +
  +# ../plugin/minilogin.php:30
  +#: ../plugin/FullSearch.php:34
  +#, c-format
  +msgid " or %s"
  +msgstr " ou %s"
  +
  +#: ../plugin/FullSearch.php:36
  +msgid "Refresh"
  +msgstr ""
  +
  +#: ../plugin/FullSearch.php:37
  +#, c-format
  +msgid " (%s search results)"
  +msgstr ""
  +
  +#: ../plugin/FullSearch.php:70
  +msgid "No search text"
  +msgstr ""
  +
   # ../wikilib.php:1483
  -#: ../plugin/FullSearch.php:103 ../wikilib.php:1790
  +#: ../plugin/FullSearch.php:113 ../wikilib.php:2369
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "Expression de recherche \"%s\" invalide"
   
   # ../plugin/processor/blog.php:70
  -#: ../plugin/Gallery.php:244 ../plugin/Gallery.php:256
  +#: ../plugin/Gallery.php:257 ../plugin/Gallery.php:269
   msgid "add comment"
   msgstr ""
   
   # ../plugin/processor/blog.php:78
  -#: ../plugin/Gallery.php:253
  +#: ../plugin/Gallery.php:266
   msgid "show comments"
   msgstr ""
   
   # ../wikilib.php:769
  -#: ../plugin/Gallery.php:296 ../plugin/Gallery.php:299 ../wikilib.php:1007
  +#: ../plugin/Gallery.php:309 ../plugin/Gallery.php:312 ../wikilib.php:1131
  +#: ../wikilib.php:1274
   #, c-format
   msgid "Go back or return to %s"
   msgstr "Revenir en arrire ou retourner  %s"
   
  -#: ../plugin/Gallery.php:297
  +#: ../plugin/Gallery.php:310
   msgid "Comments are edited"
   msgstr ""
   
   # ../plugin/Blog.php:137
  -#: ../plugin/Gallery.php:300
  +#: ../plugin/Gallery.php:313
   msgid "Comments is added"
   msgstr ""
   
  @@ -336,12 +396,16 @@
   msgstr ""
   
   # ../wiki.php:2110
  -#: ../plugin/Info.php:15
  +#: ../plugin/Info.php:22
   msgid "Revision History"
   msgstr "Historique de rvision"
   
  +#: ../plugin/Info.php:44
  +msgid "Show all revisions"
  +msgstr ""
  +
   # ../wikilib.php:507
  -#: ../plugin/Info.php:116
  +#: ../plugin/Info.php:161
   #, c-format
   msgid "Info. for %s"
   msgstr "Information sur %s"
  @@ -369,6 +433,92 @@
   msgid "Edit new molecule"
   msgstr ""
   
  +#: ../plugin/KeywordView.php:16 ../plugin/Tour.php:16
  +#, c-format
  +msgid "Tour from %s"
  +msgstr ""
  +
  +#: ../plugin/KeywordView.php:66 ../plugin/Tour.php:68
  +msgid "links"
  +msgstr ""
  +
  +# ../plugin/VisualTour.php:59
  +#: ../plugin/KeywordView.php:68 ../plugin/Tour.php:70
  +msgid "deeper"
  +msgstr ""
  +
  +# ../plugin/minilogin.php:30
  +#: ../plugin/KeywordView.php:69 ../plugin/Tour.php:71
  +#, c-format
  +msgid "More %s or more %s"
  +msgstr ""
  +
  +#: ../plugin/KeywordView.php:74 ../plugin/Tour.php:77
  +#, c-format
  +msgid "Total %d related pages"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:221
  +msgid "hits"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:225
  +msgid "add keywords"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:228
  +msgid "Update keywords"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:230
  +msgid "Add keywords"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:231
  +msgid "Add as common words"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:232
  +msgid "Unselect all"
  +msgstr ""
  +
  +# ../wiki.php:3009
  +#: ../plugin/Keywords.php:255
  +msgid "You are not able to add keywords."
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:319
  +msgid "Common words are updated"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:354
  +#, c-format
  +msgid "Keywords for %s are updated"
  +msgstr ""
  +
  +# ../plugin/quicklinks.php:38
  +#: ../plugin/Keywords.php:379
  +msgid "Keywords are updated"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:381
  +msgid "There are no changes found"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:393
  +msgid "Update with these Keywords"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:406
  +#, c-format
  +msgid "Select keywords for %s"
  +msgstr ""
  +
  +# ../wikilib.php:672 ../wikilib.php:1472
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1023 ../wikilib.php:2358
  +msgid "Use more specific text"
  +msgstr "Utiliser un texte plus spcifique"
  +
   #: ../plugin/LikePages.php:109
   msgid "These pages share a similar word..."
   msgstr ""
  @@ -386,19 +536,23 @@
   msgid "No similar pages found"
   msgstr ""
   
  -#: ../plugin/LikePages.php:149
  +#: ../plugin/LikePages.php:150
   msgid "You are strongly recommened to find it in MetaWikis. "
   msgstr ""
   
  -#: ../plugin/LikePages.php:152
  +#: ../plugin/LikePages.php:153
   #, c-format
   msgid "Like \"%s\""
   msgstr ""
   
  -#: ../plugin/LikePages.php:154
  +#: ../plugin/LikePages.php:156
   msgid "Search all MetaWikis"
   msgstr ""
   
  +#: ../plugin/LikePages.php:157
  +msgid "Slow Slow"
  +msgstr ""
  +
   # ../plugin/man_get.php:23
   #: ../plugin/Navigation.php:19
   msgid "No Index page found"
  @@ -414,10 +568,66 @@
   msgid "Edit Image"
   msgstr "diter l'image"
   
  -#: ../plugin/RecentChanges.php:158
  +#: ../plugin/RecentChanges.php:117
  +msgid "Show changes for "
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:122
  +msgid "days ago"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:209
   msgid "set bookmark"
   msgstr ""
   
  +#: ../plugin/RecentChanges.php:244
  +#, c-format
  +msgid "[%sh %sm ago]"
  +msgstr ""
  +
  +# ../plugin/man_get.php:23
  +#: ../plugin/SlideShow.php:28
  +msgid "No page found"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:102
  +msgid "Start:"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:111
  +msgid "End:"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:121 ../plugin/pageview.php:75
  +msgid "Next:"
  +msgstr ""
  +
  +# ../wikilib.php:482
  +#: ../plugin/SlideShow.php:131
  +msgid "Prev:"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:138
  +msgid "Return"
  +msgstr ""
  +
  +# ../wikilib.php:484
  +#: ../plugin/SystemInfo.php:16
  +msgid "Number of Pages"
  +msgstr ""
  +
  +#: ../plugin/SystemInfo.php:17
  +msgid "HTTP Server Version"
  +msgstr ""
  +
  +#: ../plugin/SystemInfo.php:18
  +msgid "MoniWiki Version"
  +msgstr ""
  +
  +#: ../plugin/SystemInfo.php:19
  +msgid "PHP Version"
  +msgstr ""
  +
   # ../plugin/TwinPages.php:13
   #: ../plugin/TwinPages.php:13
   #, c-format
  @@ -425,12 +635,12 @@
   msgstr "TwinPages de %s"
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../plugin/TwinPages.php:18 ../wiki.php:2233 ../wiki.php:3400
  -msgid "See TwinPages: "
  -msgstr "Voir TwinPages: "
  +#: ../plugin/TwinPages.php:19 ../wiki.php:3760
  +msgid "See [TwinPages]: "
  +msgstr "Voir [TwinPages]: "
   
   # ../plugin/TwinPages.php:20
  -#: ../plugin/TwinPages.php:20
  +#: ../plugin/TwinPages.php:21
   msgid "No TwinPages found."
   msgstr "Aucune TwinPages trouv"
   
  @@ -460,17 +670,18 @@
   msgid "Files are uploaded successfully"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:232
  +#: ../plugin/UploadFile.php:235
   msgid ": Rename"
   msgstr ""
   
   # ../plugin/rename.php:36
  -#: ../plugin/UploadedFiles.php:124 ../plugin/rename.php:69 ../wikilib.php:752
  +#: ../plugin/UploadedFiles.php:278 ../plugin/rename.php:77 ../wikilib.php:882
  +#: ../wikilib.php:1674
   msgid "Password"
   msgstr "Mot de passe"
   
   # ../wikilib.php:550
  -#: ../plugin/UploadedFiles.php:125 ../wikilib.php:730
  +#: ../plugin/UploadedFiles.php:279 ../wikilib.php:860
   msgid "Delete selected files"
   msgstr "Effacer les fichiers slectionns"
   
  @@ -493,10 +704,10 @@
   # ../plugin/security/needtologin.php:35
   #: ../plugin/Vote.php:67 ../plugin/security/community.php:26
   #: ../plugin/security/community.php:36 ../plugin/security/community.php:46
  -#: ../plugin/security/community.php:58 ../plugin/security/mustlogin.php:25
  +#: ../plugin/security/community.php:61 ../plugin/security/mustlogin.php:25
   #: ../plugin/security/mustlogin.php:35 ../plugin/security/mustlogin.php:45
  -#: ../plugin/security/mustlogin.php:60 ../plugin/security/needtologin.php:25
  -#: ../plugin/security/needtologin.php:35 ../plugin/security/needtologin.php:45
  +#: ../plugin/security/mustlogin.php:60 ../plugin/security/needtologin.php:29
  +#: ../plugin/security/needtologin.php:40 ../plugin/security/needtologin.php:51
   #: ../plugin/security/userbased.php:60
   msgid "Please Login or make your ID on this Wiki ;)"
   msgstr "Merci de vous connecter ou de construire un ID sur ce Wiki ;)"
  @@ -506,7 +717,7 @@
   msgid "Voted successfully"
   msgstr "Vote russi"
   
  -#: ../plugin/WordIndex.php:65 ../wikilib.php:1586
  +#: ../plugin/WordIndex.php:65 ../wikilib.php:2111
   msgid "Others"
   msgstr ""
   
  @@ -515,6 +726,10 @@
   msgid "Did you want to Backup your wiki ?"
   msgstr "Voulez vous faire une sauvegarde de votre wiki ?"
   
  +#: ../plugin/chat.php:36
  +msgid "No messages"
  +msgstr ""
  +
   #: ../plugin/chmod.php:18
   #, c-format
   msgid "Permission of \"%s\" changed !"
  @@ -577,7 +792,7 @@
   msgstr "Aucune page de manuel trouv"
   
   # ../plugin/minilogin.php:22 ../wikilib.php:1076
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1335
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1724
   msgid "Login or Join"
   msgstr "Se connecter ou se joindre "
   
  @@ -588,14 +803,23 @@
   msgstr "%s ou %s"
   
   # ../plugin/OeKaki.php:118
  -#: ../plugin/new.php:10
  +#: ../plugin/new.php:11 ../plugin/new.php:18
   msgid "Create a new page"
   msgstr ""
   
  -#: ../plugin/new.php:15
  +#: ../plugin/new.php:16
   msgid "Enter a page name"
   msgstr ""
   
  +# ../wiki.php:2945 ../wiki.php:2948
  +#: ../plugin/new.php:17
  +msgid "Normalize this page name"
  +msgstr ""
  +
  +#: ../plugin/pageview.php:70
  +msgid "First:"
  +msgstr ""
  +
   #: ../plugin/print.php:20
   #, c-format
   msgid "Retrieved from %s"
  @@ -606,7 +830,7 @@
   msgid "last modified %s %s"
   msgstr ""
   
  -#: ../plugin/processor/vim.php:42
  +#: ../plugin/processor/vim.php:47
   msgid "Toggle line numbers"
   msgstr ""
   
  @@ -641,24 +865,30 @@
   msgid "Do you want to customize your quicklinks ?"
   msgstr "Voulez vous mettre  jour vos liens rapides ?"
   
  -#: ../plugin/rcs.php:17
  +# ../wikilib.php:803
  +#: ../plugin/rcs.php:13
  +#, c-format
  +msgid "%s does not support rcs options."
  +msgstr ""
  +
  +#: ../plugin/rcs.php:26
   #, c-format
   msgid "Change options for \"%s\""
   msgstr ""
   
   # ../wiki.php:3021
  -#: ../plugin/rcs.php:23
  +#: ../plugin/rcs.php:32
   #, c-format
   msgid "Fail to rcs \"%s\" !"
   msgstr ""
   
  -#: ../plugin/rcs.php:27
  +#: ../plugin/rcs.php:36
   #, c-format
   msgid "Change options for \"%s\" ?"
   msgstr ""
   
   # ../plugin/rename.php:37
  -#: ../plugin/rcs.php:38
  +#: ../plugin/rcs.php:47
   msgid "Only WikiMaster can execute rcs"
   msgstr ""
   
  @@ -684,59 +914,68 @@
   msgstr "ModificationsBlog at %s"
   
   # ../plugin/rename.php:14
  -#: ../plugin/rename.php:13
  +#: ../plugin/rename.php:19
   #, c-format
   msgid "\"%s\" is renamed !"
   msgstr "\"%s\" est renomm !"
   
   # ../wikilib.php:816
  -#: ../plugin/rename.php:29
  +#: ../plugin/rename.php:35
   #, c-format
   msgid "'%s' is changed"
   msgstr ""
   
  -# ../wikilib.php:887
  -#: ../plugin/rename.php:37
  +# ../plugin/Vote.php:109
  +#: ../plugin/rename.php:43
   #, c-format
  -msgid "'%s' is renamed as '%s' successfully"
  +msgid "'%s' is renamed as '%s' successfully."
   msgstr ""
   
   # ../plugin/rename.php:20
  -#: ../plugin/rename.php:45
  +#: ../plugin/rename.php:51
   #, c-format
   msgid "Fail to rename \"%s\" !"
   msgstr "Impossible de renommer \"%s\" !"
   
   # ../plugin/rename.php:27
  -#: ../plugin/rename.php:52
  +#: ../plugin/rename.php:58
   #, c-format
   msgid "Rename \"%s\" ?"
   msgstr "Renommer \"%s\" ?"
   
  +#: ../plugin/rename.php:63
  +msgid "Old name:"
  +msgstr ""
  +
   # ../plugin/rename.php:27
  -#: ../plugin/rename.php:61
  +#: ../plugin/rename.php:64
  +msgid "New name:"
  +msgstr ""
  +
  +# ../plugin/rename.php:27
  +#: ../plugin/rename.php:69
   msgid "Rename"
   msgstr "Renommer"
   
  -#: ../plugin/rename.php:66
  +#: ../plugin/rename.php:74
   msgid "Rename and fix Backlinks"
   msgstr ""
   
   # ../plugin/rename.php:37
  -#: ../plugin/rename.php:70
  +#: ../plugin/rename.php:78
   msgid "Only WikiMaster can rename this page"
   msgstr "Seulement le WikiMaster peut renommer cette page"
   
   # ../plugin/rename.php:39 ../wikilib.php:588
  -#: ../plugin/rename.php:71 ../wikilib.php:790
  +#: ../plugin/rename.php:79 ../wikilib.php:920
   msgid "with revision history"
   msgstr "avec l'historique de rvision"
   
  -#: ../plugin/rename.php:72
  +#: ../plugin/rename.php:80
   msgid "show only"
   msgstr ""
   
  -#: ../plugin/rename.php:74
  +#: ../plugin/rename.php:82
   msgid "Check backlinks"
   msgstr ""
   
  @@ -768,7 +1007,7 @@
   msgstr "Restaurer des donnes sauvegardes"
   
   # ../locale/dummy.php:7
  -#: ../plugin/rss_rc.php:50
  +#: ../plugin/rss_rc.php:54
   msgid "show changes"
   msgstr ""
   
  @@ -788,15 +1027,15 @@
   #: ../plugin/security/community.php:25 ../plugin/security/community.php:35
   #: ../plugin/security/community.php:45 ../plugin/security/mustlogin.php:24
   #: ../plugin/security/mustlogin.php:34 ../plugin/security/mustlogin.php:44
  -#: ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
  -#: ../plugin/security/needtologin.php:44
  +#: ../plugin/security/needtologin.php:28 ../plugin/security/needtologin.php:39
  +#: ../plugin/security/needtologin.php:50
   #, c-format
   msgid "You are not allowed to '%s' on this page"
   msgstr "Vous n'tes pas autoris  pouvoir '%s' cette page"
   
   # ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
   # c-format
  -#: ../plugin/security/community.php:57 ../plugin/security/htaccesslogin.php:46
  +#: ../plugin/security/community.php:60 ../plugin/security/htaccesslogin.php:46
   #: ../plugin/security/mustlogin.php:59 ../plugin/security/userbased.php:28
   #: ../plugin/security/userbased.php:36 ../plugin/security/userbased.php:44
   #: ../plugin/security/userbased.php:59 ../plugin/security/wikimaster.php:25
  @@ -884,6 +1123,10 @@
   msgid "Please select a theme properly."
   msgstr "Merci de slectionner un thme de manire satisfaisante"
   
  +#: ../plugin/ticket.php:75
  +msgid "Invalid use of ticket"
  +msgstr ""
  +
   # ../plugin/trackback.php:54
   #: ../plugin/trackback.php:53
   msgid "TrackBack is not activated !"
  @@ -916,114 +1159,202 @@
   msgid "No TrackBack entry found for %s"
   msgstr "Aucune entre de TrackBack dtect pour %s"
   
  -#: ../plugin/userform.php:29
  +#: ../plugin/userform.php:39 ../plugin/userform.php:42
   msgid "Successfully confirmed"
   msgstr ""
   
   # ../wikilib.php:887
  -#: ../plugin/userform.php:30
  +#: ../plugin/userform.php:40
   msgid "Your e-mail address is confirmed successfully"
   msgstr "Mail envoy avec succs"
   
  -#: ../plugin/userform.php:32
  +# ../wikilib.php:887
  +#: ../plugin/userform.php:47
  +msgid "Your new password is confirmed successfully"
  +msgstr ""
  +
  +#: ../plugin/userform.php:49
   msgid "Confirmation missmatched !"
   msgstr ""
   
   # ../plugin/subscribe.php:22
  -#: ../plugin/userform.php:33 ../plugin/userform.php:37
  +#: ../plugin/userform.php:50 ../plugin/userform.php:54
   msgid "Please try again to register your e-mail address"
   msgstr "Merci de rentrer d'abord votre adresse de messagerie"
   
   # ../plugin/restore.php:27
  -#: ../plugin/userform.php:36
  +#: ../plugin/userform.php:53
   msgid "ID does not exists !"
   msgstr "Erreur : l'archive n'existe pas"
   
  -#: ../plugin/userform.php:52 ../plugin/userform.php:114
  +#: ../plugin/userform.php:87 ../plugin/userform.php:267
   #, c-format
   msgid "Successfully login as '%s'"
   msgstr ""
   
   # ../wiki.php:3024
  -#: ../plugin/userform.php:58 ../plugin/userform.php:119
  -#: ../plugin/userform.php:147
  +#: ../plugin/userform.php:93 ../plugin/userform.php:272
  +#: ../plugin/userform.php:315
   msgid "Invalid password !"
   msgstr "Merci d'entrer un mot de passe valide"
   
  -#: ../plugin/userform.php:62
  +#: ../plugin/userform.php:97
   #, c-format
   msgid "\"%s\" does not exists on this wiki !"
   msgstr ""
   
  -#: ../plugin/userform.php:64
  +#: ../plugin/userform.php:99
   msgid "Make new ID on this wiki"
   msgstr ""
   
   # ../wikilib.php:575
  -#: ../plugin/userform.php:70
  +#: ../plugin/userform.php:105
   msgid "Cookie deleted !"
   msgstr ""
   
  -#: ../plugin/userform.php:81 ../plugin/userform.php:135
  +# ../wikilib.php:1082
  +#: ../plugin/userform.php:107 ../wikilib.php:1781
  +msgid "E-mail new password"
  +msgstr ""
  +
  +#: ../plugin/userform.php:118 ../plugin/userform.php:181
  +#: ../plugin/userform.php:204
  +msgid "Invalid ticket !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:120 ../plugin/userform.php:206
  +msgid "You need a ticket !"
  +msgstr ""
  +
  +# ../wikilib.php:1082
  +#: ../plugin/userform.php:152
  +msgid "New password confirmation"
  +msgstr ""
  +
  +# ../wiki.php:3024
  +#: ../plugin/userform.php:157
  +msgid "Please confirm your new password"
  +msgstr ""
  +
  +# ../wikilib.php:1082
  +#: ../plugin/userform.php:159
  +#, c-format
  +msgid "Your new password is %s"
  +msgstr ""
  +
  +#: ../plugin/userform.php:160 ../plugin/userform.php:259
  +msgid "Please change your password later"
  +msgstr ""
  +
  +#: ../plugin/userform.php:164 ../plugin/userform.php:172
  +msgid "Fail to e-mail notification !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:167
  +msgid "New password is sent to your e-mail !"
  +msgstr ""
  +
  +# ../plugin/subscribe.php:22
  +#: ../plugin/userform.php:168
  +msgid "Please check your e-mail"
  +msgstr ""
  +
  +#: ../plugin/userform.php:173
  +msgid "E-mail mismatch !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:175
  +msgid "Invalid request"
  +msgstr ""
  +
  +# ../plugin/subscribe.php:22
  +#: ../plugin/userform.php:176
  +msgid "Please confirm your e-mail address first !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:183
  +msgid "ID and e-mail mismatch !"
  +msgstr ""
  +
  +# ../plugin/subscribe.php:22
  +#: ../plugin/userform.php:185
  +msgid "Please try again or make a new profile"
  +msgstr ""
  +
  +#: ../plugin/userform.php:225 ../plugin/userform.php:303
   msgid "too short password!"
   msgstr ""
   
  -#: ../plugin/userform.php:82
  +#: ../plugin/userform.php:226
   msgid "mismatch password!"
   msgstr ""
   
  -#: ../plugin/userform.php:83 ../plugin/userform.php:139
  +#: ../plugin/userform.php:227 ../plugin/userform.php:307
   msgid "not acceptable character found in the password!"
   msgstr ""
   
  -#: ../plugin/userform.php:86
  +#: ../plugin/userform.php:230
   msgid "Your password is too simple to use as a password !"
   msgstr ""
   
   # ../plugin/subscribe.php:22
  -#: ../plugin/userform.php:92 ../plugin/userform.php:163
  +#: ../plugin/userform.php:236 ../plugin/userform.php:338
   msgid "Your email address is not valid"
   msgstr "Merci de rentrer d'abord votre adresse de messagerie"
   
  -#: ../plugin/userform.php:96
  +#: ../plugin/userform.php:240
   msgid "Successfully added!"
   msgstr ""
   
  -#: ../plugin/userform.php:105 ../plugin/userform.php:157
  +#: ../plugin/userform.php:246
  +#, c-format
  +msgid "Successfully added as '%s'"
  +msgstr ""
  +
  +#: ../plugin/userform.php:247
  +msgid "Please check your mailbox"
  +msgstr ""
  +
  +#: ../plugin/userform.php:254 ../plugin/userform.php:332
   msgid "E-mail confirmation"
   msgstr ""
   
   # ../plugin/subscribe.php:22
  -#: ../plugin/userform.php:107 ../plugin/userform.php:159
  +#: ../plugin/userform.php:256 ../plugin/userform.php:334
   msgid "Please confirm your email address"
   msgstr ""
   
  -#: ../plugin/userform.php:109 ../plugin/userform.php:161
  +#: ../plugin/userform.php:258
  +#, c-format
  +msgid "Your initial password is %s"
  +msgstr ""
  +
  +#: ../plugin/userform.php:262 ../plugin/userform.php:336
   msgid "E-mail confirmation mail sent"
   msgstr ""
   
  -#: ../plugin/userform.php:124
  +#: ../plugin/userform.php:277
   msgid "Invalid username !"
   msgstr ""
   
  -#: ../plugin/userform.php:137
  +#: ../plugin/userform.php:305
   msgid "mismatch password !"
   msgstr ""
   
  -#: ../plugin/userform.php:140 ../plugin/userform.php:148
  +#: ../plugin/userform.php:308 ../plugin/userform.php:316
   msgid "Password is not changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:142
  +#: ../plugin/userform.php:310
   msgid "Password is changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:144
  +#: ../plugin/userform.php:312
   msgid "Password is too simple to use as a password !"
   msgstr ""
   
   # ../wikilib.php:887
  -#: ../plugin/userform.php:169
  +#: ../plugin/userform.php:344
   msgid "Profiles are saved successfully !"
   msgstr ""
   
  @@ -1039,75 +1370,85 @@
   msgstr ""
   
   # ../wiki.php:850
  -#: ../wiki.php:940
  +#: ../wiki.php:1087
   #, c-format
   msgid "Rename %s to %s"
   msgstr "Renommer %s en %s"
   
   # ../wikilib.php:803
  -#: ../wiki.php:1231
  -msgid "Version info does not supported by this wiki"
  -msgstr "La messagerie n'est pas support par dfaut."
  +#: ../wiki.php:1380
  +msgid "Version info does not supported in this wiki"
  +msgstr ""
   
   # ../plugin/restore.php:27
  -#: ../wiki.php:1242
  +#: ../wiki.php:1391
   msgid "File does not exists"
   msgstr ""
   
  +# ../wikilib.php:521
  +#: ../wiki.php:2274
  +msgid "Invalid ajax action."
  +msgstr ""
  +
   # ../wiki.php:1824
  -#: ../wiki.php:2229
  +#: ../wiki.php:2503
   #, c-format
   msgid "See %s"
   msgstr "Voir %s"
   
   # ../wiki.php:1824
  -#: ../wiki.php:2229
  +#: ../wiki.php:2503
   msgid "TwinPages"
   msgstr ""
   
  +# ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  +#: ../wiki.php:2508
  +msgid "See [TwinPages]:"
  +msgstr "Voir [TwinPages]: "
  +
   # ../locale/dummy.php:6 ../wiki.php:2553
  -#: ../wiki.php:2877 ../locale/dummy.php:6
  +#: ../wiki.php:3193 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "ditionTexte"
   
   # ../wiki.php:2555
  -#: ../wiki.php:2879
  +#: ../wiki.php:3195
   msgid "NotEditable"
   msgstr "Pasditable"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wiki.php:2881 ../locale/dummy.php:6
  +#: ../wiki.php:3197 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "MontrePage"
   
   # ../locale/dummy.php:3 ../locale/dummy.php:5 ../wiki.php:2558
  -#: ../wiki.php:2882 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:3198 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "TrouvePage"
   
  -#: ../wiki.php:3113
  +#: ../wiki.php:3461
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:3360
  +#: ../wiki.php:3720
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:3361 ../wiki.php:3372
  +#: ../wiki.php:3721 ../wiki.php:3732
   msgid "Please contact WikiMasters"
   msgstr ""
   
  -#: ../wiki.php:3371
  +#: ../wiki.php:3731
   msgid "You are blocked in this wiki"
   msgstr ""
   
   # ../wiki.php:2945 ../wiki.php:2948
  -#: ../wiki.php:3402 ../wiki.php:3405 ../wikilib.php:923
  +#: ../wiki.php:3762 ../wiki.php:3765 ../wikilib.php:1065
   msgid "Create this page"
   msgstr "Crer cette page"
   
   # ../wiki.php:2950
  -#: ../wiki.php:3407 ../wikilib.php:925
  +#: ../wiki.php:3767 ../wikilib.php:1067
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
  @@ -1115,41 +1456,46 @@
   "page.\n"
   
   # ../wiki.php:2950
  -#: ../wiki.php:3407 ../wikilib.php:925
  +#: ../wiki.php:3767 ../wikilib.php:1067
   msgid "title"
   msgstr "titre"
   
   # ../wiki.php:2956
  -#: ../wiki.php:3413
  +#: ../wiki.php:3773
   msgid " or alternativly, use one of these templates:\n"
   msgstr " ou alternativement, utiliser un de ces modles de page :\n"
   
   # ../wikilib.php:427
  -#: ../wiki.php:3416
  +#: ../wiki.php:3776
   msgid "To create your own templates, add a page with a 'Template' suffix.\n"
   msgstr ""
   "Pour crer vos propres modles de pages, ajouter une page avec lesuffix "
   "'Template'.\n"
   
  +#: ../wiki.php:3787
  +#, c-format
  +msgid "Redirected from page \"%s\""
  +msgstr ""
  +
   # ../wiki.php:3009
  -#: ../wiki.php:3491
  +#: ../wiki.php:3864
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "Vous n'tes pas autoris  '%s'"
   
   # ../wiki.php:3021
  -#: ../wiki.php:3503
  +#: ../wiki.php:3885
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "Impossible de pouvoir \"%s\" !"
   
   # ../wiki.php:3024
  -#: ../wiki.php:3506
  +#: ../wiki.php:3888
   msgid "Please enter the valid password"
   msgstr "Merci d'entrer un mot de passe valide"
   
   # ../wikilib.php:368
  -#: ../wikilib.php:456
  +#: ../wikilib.php:526
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -1181,219 +1527,277 @@
   "deux colonnes ||;\n"
   "Les espaces aprs un tableau ou un titre ne sont pas autoriss.<br />\n"
   
  -#: ../wikilib.php:492
  +#: ../wikilib.php:564
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
   # ../wikilib.php:425
  -#: ../wikilib.php:550
  +#: ../wikilib.php:645
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   "Utiliser un des modles de pages qui suivent pour une premirecration :\n"
   
   # ../wikilib.php:427
  -#: ../wikilib.php:552
  +#: ../wikilib.php:647
   msgid "To create your own templates, add a page with a 'Template' suffix."
   msgstr ""
   "Pour crer vos propres modles de pages, ajouter une page avec lesuffix "
   "'Template'."
   
  +#: ../wikilib.php:650
  +msgid "Merge"
  +msgstr ""
  +
  +#: ../wikilib.php:651
  +msgid "Merge manually"
  +msgstr ""
  +
  +#: ../wikilib.php:652
  +msgid "Ignore conflicts"
  +msgstr ""
  +
   # ../wikilib.php:443
  -#: ../wikilib.php:571
  +#: ../wikilib.php:676
   msgid "Skip to preview"
   msgstr "Aller  la prvisualisation"
   
   # ../wikilib.php:445
  -#: ../wikilib.php:573
  +#: ../wikilib.php:680
   msgid "ReduceEditor"
   msgstr "Rduirediteur"
   
  -#: ../wikilib.php:574
  +#: ../wikilib.php:681
   msgid "EnlargeEditor"
   msgstr ""
   
   # ../locale/dummy.php:6 ../wikilib.php:448
  -#: ../wikilib.php:578 ../locale/dummy.php:6
  +#: ../wikilib.php:685 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
   # ../wikilib.php:449
  -#: ../wikilib.php:579
  +#: ../wikilib.php:687
   msgid "HelpOnEditing"
   msgstr ""
   
   # ../wikilib.php:462
  -#: ../wikilib.php:602
  +#: ../wikilib.php:714
   #, c-format
   msgid "Describe %s here"
   msgstr "Dcrire %s ici"
   
   # ../wikilib.php:476
  -#: ../wikilib.php:618
  +#: ../wikilib.php:731
   msgid "--Select Category--"
   msgstr "-- Slectionner une catgorie"
   
  +#: ../wikilib.php:741
  +msgid "Minor edit"
  +msgstr ""
  +
   # ../wikilib.php:483 ../wikilib.php:1079
  -#: ../wikilib.php:632 ../wikilib.php:1338
  +#: ../wikilib.php:749 ../wikilib.php:1727 ../wikilib.php:1769
   msgid "Save"
   msgstr "Sauvegarder"
   
   # ../wikilib.php:484
  -#: ../wikilib.php:633
  +#: ../wikilib.php:750
   msgid "Summary of Change"
   msgstr "Sommaire des modifications"
   
   # ../wikilib.php:517
  -#: ../wikilib.php:678
  +#: ../wikilib.php:796
   msgid "406 Not Acceptable"
   msgstr ""
   
   # ../wikilib.php:519
  -#: ../wikilib.php:683
  +#: ../wikilib.php:801
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s n'est pas une action valide"
   
   # ../wikilib.php:521
  -#: ../wikilib.php:685
  +#: ../wikilib.php:803
   msgid "Is it valid action ?"
   msgstr "Est-ce que c'est une action valide ?"
   
   # ../wikilib.php:540
  -#: ../wikilib.php:718
  +#: ../wikilib.php:848
   #, c-format
   msgid "File '%s' is deleted"
   msgstr "Le fichier '%s' est effac"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:720
  +#: ../wikilib.php:850
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr "Impossible d'effacer '%s'"
   
   # ../wikilib.php:545
  -#: ../wikilib.php:725
  +#: ../wikilib.php:855
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr "Le rpertoire '%s' est effac"
   
   # ../wikilib.php:547
  -#: ../wikilib.php:727
  +#: ../wikilib.php:857
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr "Impossible d'effacer le rpertoire '%s'"
   
   # ../wikilib.php:557 ../wikilib.php:559
  -#: ../wikilib.php:737 ../wikilib.php:757
  +#: ../wikilib.php:867 ../wikilib.php:887
   msgid "No files are selected !"
   msgstr "Aucun fichier n'est slectionn !"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:750
  +#: ../wikilib.php:880
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
   # ../locale/dummy.php:5
  -#: ../wikilib.php:753
  +#: ../wikilib.php:883
   msgid "Delete"
   msgstr ""
   
   # ../wikilib.php:550
  -#: ../wikilib.php:754
  +#: ../wikilib.php:884
   msgid "Delete selected file"
   msgstr ""
   
   # ../wikilib.php:575
  -#: ../wikilib.php:776
  +#: ../wikilib.php:905
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr "\"%s\" est effac !"
   
   # ../wikilib.php:581
  -#: ../wikilib.php:782
  +#: ../wikilib.php:912
   msgid "Please delete this file manually."
   msgstr "Merci d'effacer ce fichier manuellement."
   
   # ../wikilib.php:583
  -#: ../wikilib.php:784
  +#: ../wikilib.php:914
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "Effacer \"%s\" ?"
   
  -# ../wikilib.php:672 ../wikilib.php:1472
  -#: ../wikilib.php:888 ../wikilib.php:1779
  -msgid "Use more specific text"
  -msgstr "Utiliser un texte plus spcifique"
  -
  -# ../wikilib.php:734
  -#: ../wikilib.php:972
  -msgid "Goto Editor"
  -msgstr "Aller  l'diteur"
  -
   # ../wikilib.php:743
  -#: ../wikilib.php:981
  +#: ../wikilib.php:1119 ../wikilib.php:1223
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "Quelqu'un a sauvegard la page tandis que vous ditiez %s"
   
  -# ../wikilib.php:748 ../wikilib.php:777
  -#: ../wikilib.php:986 ../wikilib.php:1027
  -#, c-format
  -msgid "Preview of %s"
  -msgstr "Prvisualisation de %s"
  -
  -# ../wikilib.php:755
  -#: ../wikilib.php:993
  -msgid "Conflict error!"
  -msgstr "Erreur de conflit !"
  -
  -#: ../wikilib.php:1021
  -msgid ""
  -"Sorry, can not save page because some messages are blocked in this wiki."
  +#: ../wikilib.php:1125
  +msgid "Section edit is not valid for non-exists page."
   msgstr ""
   
   # ../wikilib.php:803
  -#: ../wikilib.php:1065
  +#: ../wikilib.php:1158 ../wikilib.php:1332
   msgid "mail does not supported by default."
   msgstr "La messagerie n'est pas support par dfaut."
   
   # ../wikilib.php:807
  -#: ../wikilib.php:1069
  +#: ../wikilib.php:1162 ../wikilib.php:1336
   msgid "Sent notification mail."
   msgstr "Des notifications par messagerie ont t envoyes."
   
   # ../wikilib.php:809
  -#: ../wikilib.php:1071
  +#: ../wikilib.php:1164 ../wikilib.php:1338
   msgid "No subscribers found."
   msgstr "Aucun abonn trouv."
   
   # ../wikilib.php:814
  -#: ../wikilib.php:1076
  +#: ../wikilib.php:1169 ../wikilib.php:1343
   #, c-format
   msgid "%s is not editable"
   msgstr "%s n'est pas ditable"
   
   # ../wikilib.php:816
  -#: ../wikilib.php:1078
  +#: ../wikilib.php:1171 ../wikilib.php:1345
   #, c-format
   msgid "%s is saved"
   msgstr "%s est sauvegard"
   
  +# ../wikilib.php:734
  +#: ../wikilib.php:1214
  +msgid "Goto Editor"
  +msgstr "Aller  l'diteur"
  +
  +#: ../wikilib.php:1227
  +#, c-format
  +msgid "%s is merged with latest contents."
  +msgstr ""
  +
  +# ../plugin/Vote.php:109
  +#: ../wikilib.php:1228
  +#, c-format
  +msgid "%s is merged successfully"
  +msgstr ""
  +
  +#: ../wikilib.php:1232
  +#, c-format
  +msgid "Merge conflicts are detected for %s !"
  +msgstr ""
  +
  +#: ../wikilib.php:1233
  +#, c-format
  +msgid "Merge cancelled on %s."
  +msgstr ""
  +
  +#: ../wikilib.php:1234
  +msgid "NEW"
  +msgstr ""
  +
  +#: ../wikilib.php:1235
  +msgid "OLD"
  +msgstr ""
  +
  +#: ../wikilib.php:1240
  +#, c-format
  +msgid "Get merge conflicts for %s"
  +msgstr ""
  +
  +# ../wikilib.php:581
  +#: ../wikilib.php:1241
  +msgid "Please resolve conflicts manually."
  +msgstr ""
  +
  +#: ../wikilib.php:1244
  +#, c-format
  +msgid "Force merging for %s !"
  +msgstr ""
  +
  +#: ../wikilib.php:1245
  +msgid "Please be careful, you could damage useful information."
  +msgstr ""
  +
  +# ../wikilib.php:755
  +#: ../wikilib.php:1257
  +msgid "Conflict error!"
  +msgstr "Erreur de conflit !"
  +
  +# ../wikilib.php:748 ../wikilib.php:777
  +#: ../wikilib.php:1294
  +#, c-format
  +msgid "Preview of %s"
  +msgstr "Prvisualisation de %s"
  +
   # ../wikilib.php:838
  -#: ../wikilib.php:1102
  +#: ../wikilib.php:1369
   msgid "Nobody subscribed to this page."
   msgstr "Personne n'est abonn  cette page, aucun mail envoy"
   
   # ../wikilib.php:860
  -#: ../wikilib.php:1119
  +#: ../wikilib.php:1386
   #, c-format
   msgid "%s page is modified"
   msgstr "la page %s est modifi"
   
   # ../wikilib.php:870
  -#: ../wikilib.php:1129
  +#: ../wikilib.php:1411
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
  @@ -1404,48 +1808,93 @@
   "\n"
   
   # ../wikilib.php:883
  -#: ../wikilib.php:1142
  +#: ../wikilib.php:1424
   msgid "Send notification mails to all subscribers"
   msgstr "Envoyez un mail de notification  tous les abonns"
   
   # ../wikilib.php:887
  -#: ../wikilib.php:1146
  +#: ../wikilib.php:1429
   msgid "Mails are sent successfully"
   msgstr "Mail envoy avec succs"
   
   # ../wikilib.php:888
  -#: ../wikilib.php:1147
  +#: ../wikilib.php:1430
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr "un mail a t envoy  '%s'"
   
  +# ../wiki.php:3021
  +#: ../wikilib.php:1432
  +msgid "Fail to send mail"
  +msgstr ""
  +
  +# ../wikilib.php:803
  +#: ../wikilib.php:1443
  +msgid "This wiki does not support sendmail"
  +msgstr ""
  +
  +# ../wikilib.php:1483
  +#: ../wikilib.php:1536
  +msgid "Invalid regular expression !"
  +msgstr ""
  +
  +#: ../wikilib.php:1560
  +msgid "No match!"
  +msgstr ""
  +
  +#: ../wikilib.php:1563
  +msgid "Infinite loop possible!"
  +msgstr ""
  +
   # ../plugin/login.php:26 ../wikilib.php:1051
  -#: ../wikilib.php:1310
  +#: ../wikilib.php:1685
   msgid "Login"
   msgstr "Se connecter"
   
  +#: ../wikilib.php:1686 ../wikilib.php:1786
  +msgid "ID"
  +msgstr ""
  +
   # ../wikilib.php:1070
  -#: ../wikilib.php:1329
  +#: ../wikilib.php:1707 ../wikilib.php:1779
   msgid "Make profile"
   msgstr "Faire un profil"
   
   # ../wikilib.php:1071
  -#: ../wikilib.php:1330
  +#: ../wikilib.php:1709
   msgid "password again"
   msgstr "mot de passe de nouveau"
   
  +#: ../wikilib.php:1711 ../wikilib.php:1749
  +msgid "Mail"
  +msgstr ""
  +
   # ../wikilib.php:1082
  -#: ../wikilib.php:1341
  +#: ../wikilib.php:1731
   msgid "New password"
   msgstr "Nouveau mot de passe"
   
  +#: ../wikilib.php:1750
  +msgid "Time Zone"
  +msgstr ""
  +
   # ../wikilib.php:1088
  -#: ../wikilib.php:1347
  +#: ../wikilib.php:1758
   msgid "logout"
   msgstr "se dconnecter"
   
  +# ../locale/dummy.php:6 ../wiki.php:2557
  +#: ../wikilib.php:2112
  +msgid "Show all"
  +msgstr ""
  +
  +# ../locale/dummy.php:4
  +#: ../wikilib.php:2254
  +msgid "Contents"
  +msgstr ""
  +
   # ../wikilib.php:1479
  -#: ../wikilib.php:1786
  +#: ../wikilib.php:2365
   #, c-format
   msgid "Title search for \"%s\""
   msgstr "Recherche de titre pour \"%s\""
  
  
  
  1.19      +629 -212  moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- ko.po	8 Aug 2005 13:16:43 -0000	1.18
  +++ ko.po	10 Jan 2006 11:39:39 -0000	1.19
  @@ -1,11 +1,11 @@
   # MoniWiki message file
  -# Copyright (C) 2003-2005 Free Software Foundation, Inc.
  -# Won-kyu Park <wkpark@kldp.org>, 2003-2004.
  +# Copyright (C) 2003-2006 Free Software Foundation, Inc.
  +# Won-kyu Park <wkpark@kldp.org>, 2003-2006.
   #
   msgid ""
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1\n"
  -"POT-Creation-Date: 2005-08-08 22:13+0900\n"
  +"POT-Creation-Date: 2006-01-10 19:47+0900\n"
   "PO-Revision-Date: 2003-04-29 19:00+0900\n"
   "Last-Translator: Won-kyu Park <wkpark@kldp.org>\n"
   "Language-Team: ko <ko@li.org>\n"
  @@ -13,12 +13,12 @@
   "Content-Type: text/plain; charset=EUC-KR\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  -#: ../plugin/Attachment.php:40 ../plugin/Attachment.php:111
  +#: ../plugin/Attachment.php:41 ../plugin/Attachment.php:121
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr ""
   
  -#: ../plugin/Attachment.php:114
  +#: ../plugin/Attachment.php:124
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
  @@ -32,61 +32,63 @@
   msgid "Translate %s to %s"
   msgstr "%s %s() ϱ"
   
  -#: ../plugin/Blog.php:86
  +#: ../plugin/Blog.php:86 ../plugin/blog2.php:87
   #, c-format
   msgid "Blog cache of \"%s\" is refreshed"
   msgstr ""
   
  -#: ../plugin/Blog.php:110
  +#: ../plugin/Blog.php:110 ../plugin/blog2.php:111
   #, c-format
   msgid "\"%s\" is updated"
  -msgstr "\"%s\"() ŵǾϴ"
  +msgstr "\"%s\"() ŵǾϴ"
   
  -#: ../plugin/Blog.php:115
  +#: ../plugin/Blog.php:115 ../plugin/blog2.php:116
   msgid "Add Blog"
   msgstr ""
   
  -#: ../plugin/Blog.php:155
  +#: ../plugin/Blog.php:155 ../plugin/blog2.php:156
   msgid "Error: No blog entry found!"
   msgstr ""
   
  -#: ../plugin/Blog.php:163 ../plugin/Comment.php:110
  +#: ../plugin/Blog.php:163 ../plugin/Comment.php:135 ../plugin/blog2.php:164
   msgid "Error: Don't make a clone!"
   msgstr ""
   
  -#: ../plugin/Blog.php:180
  +#: ../plugin/Blog.php:180 ../plugin/blog2.php:181
   #, c-format
   msgid "Comment added to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:183
  +#: ../plugin/Blog.php:183 ../plugin/blog2.php:184
   #, c-format
   msgid "Blog entry added to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:220
  +#: ../plugin/Blog.php:220 ../plugin/blog2.php:221
   #, c-format
   msgid "Add Comment to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:222
  +#: ../plugin/Blog.php:222 ../plugin/blog2.php:223
   #, c-format
   msgid "Add Blog entry to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:236 ../plugin/Blog.php:292 ../plugin/Comment.php:46
  +#: ../plugin/Blog.php:236 ../plugin/Blog.php:292 ../plugin/Comment.php:50
  +#: ../plugin/blog2.php:237 ../plugin/blog2.php:293
   msgid "Name"
   msgstr ""
   
  -#: ../plugin/Blog.php:240 ../plugin/Blog.php:293
  +#: ../plugin/Blog.php:240 ../plugin/Blog.php:293 ../plugin/blog2.php:241
  +#: ../plugin/blog2.php:294
   msgid "Title"
   msgstr ""
   
  -#: ../plugin/Blog.php:246 ../plugin/Comment.php:48
  +#: ../plugin/Blog.php:246 ../plugin/Comment.php:52 ../plugin/blog2.php:247
   msgid "Don't add a signature"
   msgstr ""
   
  -#: ../plugin/Blog.php:259
  +#: ../plugin/Blog.php:259 ../plugin/blog2.php:260
   msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
   msgstr "<b>μ</b> ---- α   ʽϴ."
   
  @@ -98,40 +100,40 @@
   msgid "BlogChanges"
   msgstr "ٲ α"
   
  -#: ../plugin/BlogChanges.php:244
  +#: ../plugin/BlogChanges.php:246
   #, c-format
   msgid "Invalid category expr \"%s\""
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:376 ../plugin/BlogChanges.php:378
  +#: ../plugin/BlogChanges.php:378 ../plugin/BlogChanges.php:380
   #: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
   msgid "Anonymous"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:409 ../plugin/processor/blog.php:86
  +#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
   #, c-format
   msgid "%d comment"
   msgstr " %d"
   
  -#: ../plugin/BlogChanges.php:409 ../plugin/processor/blog.php:86
  +#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
   #, c-format
   msgid "%d comments"
   msgstr " %d"
   
  -#: ../plugin/BlogChanges.php:411 ../plugin/Comment.php:99
  +#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:124
   #: ../plugin/ImportTable.php:76 ../plugin/processor/blog.php:78
   msgid "Add comment"
   msgstr " ޱ"
   
  -#: ../plugin/BlogChanges.php:421 ../plugin/processor/blog.php:97
  +#: ../plugin/BlogChanges.php:423 ../plugin/processor/blog.php:97
   msgid "track back"
   msgstr "Ʈ"
   
  -#: ../plugin/BlogChanges.php:441
  +#: ../plugin/BlogChanges.php:443
   msgid "Previous"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:444
  +#: ../plugin/BlogChanges.php:446
   msgid "Next"
   msgstr ""
   
  @@ -155,53 +157,70 @@
   msgid "Cut & Paste a Clipboard Image"
   msgstr ""
   
  -#: ../plugin/Comment.php:49
  +#: ../plugin/Comment.php:53
   msgid "Comment"
   msgstr " ޱ"
   
  -#: ../plugin/Comment.php:50 ../plugin/ImportTable.php:67 ../wikilib.php:631
  +#: ../plugin/Comment.php:54 ../plugin/ImportTable.php:67 ../wikilib.php:747
   msgid "Preview"
   msgstr "̸"
   
  -#: ../plugin/Comment.php:90
  +#: ../plugin/Comment.php:74
  +msgid "Page is not writable"
  +msgstr "  ϴ"
  +
  +#: ../plugin/Comment.php:78
  +msgid "You are not allowed to add a comment."
  +msgstr "Comment  ʽϴ."
  +
  +#: ../plugin/Comment.php:79 ../plugin/Keywords.php:256
  +msgid "Page does not exists"
  +msgstr " ϴ"
  +
  +#: ../plugin/Comment.php:110 ../wikilib.php:1144 ../wikilib.php:1288
  +msgid ""
  +"Sorry, can not save page because some messages are blocked in this wiki."
  +msgstr "˼մϴ. Ư ޽ Ǿ    ϴ."
  +
  +#: ../plugin/Comment.php:115
   msgid "Preview comment"
   msgstr "̸"
   
  -#: ../plugin/Comment.php:136
  +#: ../plugin/Comment.php:165
   #, c-format
   msgid "%s is commented successfully"
   msgstr "%s   ÷Ǿϴ"
   
  -#: ../plugin/Comment.php:137
  +#: ../plugin/Comment.php:166
   msgid "Comment added successfully"
   msgstr " ÷Ǿϴ"
   
  -#: ../plugin/Diff.php:43 ../plugin/Diff.php:82 ../wikilib.php:1008
  +#: ../plugin/Diff.php:151 ../plugin/Diff.php:190 ../wikilib.php:1275
   msgid "No difference found"
   msgstr "ȭ ϴ"
   
  -#: ../plugin/Diff.php:45
  +#: ../plugin/Diff.php:153
   msgid "Difference between yours and the current"
   msgstr "  "
   
  -#: ../plugin/Diff.php:66 ../plugin/Info.php:125
  +#: ../plugin/Diff.php:174 ../plugin/Info.php:145
   msgid "No older revisions available"
   msgstr "  ϴ"
   
  -#: ../plugin/Diff.php:71 ../plugin/Info.php:131
  +#: ../plugin/Diff.php:179 ../plugin/Info.php:151
   msgid "Version info is not available in this wiki"
   msgstr ""
   
  -#: ../plugin/Diff.php:84
  +#: ../plugin/Diff.php:192
   msgid "Difference between versions"
   msgstr " "
   
  -#: ../plugin/Diff.php:86
  +#: ../plugin/Diff.php:194
   #, c-format
   msgid "Difference between r%s and r%s"
   msgstr "r%s r%s "
   
  -#: ../plugin/Diff.php:89
  +#: ../plugin/Diff.php:197
   #, c-format
   msgid "Difference between r%s and the current"
   msgstr "r%s   "
  @@ -237,44 +256,80 @@
   msgid "%d day(s) passed from %s."
   msgstr "%2$sκ %1$d ϴ."
   
  -#: ../plugin/FastSearch.php:117 ../plugin/FullSearch.php:16
  +#: ../plugin/FastSearch.php:114 ../plugin/FullSearch.php:18
   #, c-format
   msgid "Full text search for \"%s\""
   msgstr "\"%s\"() ü ãƺ"
   
  -#: ../plugin/FastSearch.php:126 ../plugin/FullSearch.php:25
  +#: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:28
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
  -msgstr ""
  +msgstr "%3$s ߿ %1$s ߰ߵǾϴ"
   
   #: ../plugin/FullSearch.php:14
   #, c-format
   msgid "BackLinks search for \"%s\""
   msgstr "\"%s\"  ũ ã"
   
  -#: ../plugin/FullSearch.php:103 ../wikilib.php:1790
  +#: ../plugin/FullSearch.php:16
   #, c-format
  -msgid "Invalid search expression \"%s\""
  +msgid "KeyWords search for \"%s\""
  +msgstr "\"%s\"  Ű ġ"
  +
  +#: ../plugin/FullSearch.php:30
  +msgid "page"
  +msgstr ""
  +
  +#: ../plugin/FullSearch.php:30
  +msgid "pages"
  +msgstr ""
  +
  +#: ../plugin/FullSearch.php:33
  +msgid "Context search."
  +msgstr ""
  +
  +#: ../plugin/FullSearch.php:34
  +#, c-format
  +msgid " or %s"
  +msgstr " Ȥ %s"
  +
  +#: ../plugin/FullSearch.php:36
  +msgid "Refresh"
  +msgstr ""
  +
  +#: ../plugin/FullSearch.php:37
  +#, c-format
  +msgid " (%s search results)"
  +msgstr " (ġ  %s)"
  +
  +#: ../plugin/FullSearch.php:70
  +msgid "No search text"
   msgstr ""
   
  -#: ../plugin/Gallery.php:244 ../plugin/Gallery.php:256
  +#: ../plugin/FullSearch.php:113 ../wikilib.php:2369
  +#, c-format
  +msgid "Invalid search expression \"%s\""
  +msgstr "߸ ã ǥ \"%s\""
  +
  +#: ../plugin/Gallery.php:257 ../plugin/Gallery.php:269
   msgid "add comment"
   msgstr " ޱ"
   
  -#: ../plugin/Gallery.php:253
  +#: ../plugin/Gallery.php:266
   msgid "show comments"
   msgstr " "
   
  -#: ../plugin/Gallery.php:296 ../plugin/Gallery.php:299 ../wikilib.php:1007
  +#: ../plugin/Gallery.php:309 ../plugin/Gallery.php:312 ../wikilib.php:1131
  +#: ../wikilib.php:1274
   #, c-format
   msgid "Go back or return to %s"
   msgstr "ڷ Ȥ %s() "
   
  -#: ../plugin/Gallery.php:297
  +#: ../plugin/Gallery.php:310
   msgid "Comments are edited"
   msgstr ""
   
  -#: ../plugin/Gallery.php:300
  +#: ../plugin/Gallery.php:313
   msgid "Comments is added"
   msgstr ""
   
  @@ -286,11 +341,15 @@
   msgid "Import URL"
   msgstr ""
   
  -#: ../plugin/Info.php:15
  +#: ../plugin/Info.php:22
   msgid "Revision History"
   msgstr " 丮"
   
  -#: ../plugin/Info.php:116
  +#: ../plugin/Info.php:44
  +msgid "Show all revisions"
  +msgstr ""
  +
  +#: ../plugin/Info.php:161
   #, c-format
   msgid "Info. for %s"
   msgstr "%s "
  @@ -316,6 +375,87 @@
   msgid "Edit new molecule"
   msgstr ""
   
  +#: ../plugin/KeywordView.php:16 ../plugin/Tour.php:16
  +#, c-format
  +msgid "Tour from %s"
  +msgstr ""
  +
  +#: ../plugin/KeywordView.php:66 ../plugin/Tour.php:68
  +msgid "links"
  +msgstr ""
  +
  +#: ../plugin/KeywordView.php:68 ../plugin/Tour.php:70
  +msgid "deeper"
  +msgstr ""
  +
  +#: ../plugin/KeywordView.php:69 ../plugin/Tour.php:71
  +#, c-format
  +msgid "More %s or more %s"
  +msgstr "  %s Ȥ %s"
  +
  +#: ../plugin/KeywordView.php:74 ../plugin/Tour.php:77
  +#, c-format
  +msgid "Total %d related pages"
  +msgstr "%d   "
  +
  +#: ../plugin/Keywords.php:221
  +msgid "hits"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:225
  +msgid "add keywords"
  +msgstr "Ű ϱ"
  +
  +#: ../plugin/Keywords.php:228
  +msgid "Update keywords"
  +msgstr "Ű "
  +
  +#: ../plugin/Keywords.php:230
  +msgid "Add keywords"
  +msgstr "Ű ϱ"
  +
  +#: ../plugin/Keywords.php:231
  +msgid "Add as common words"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:232
  +msgid "Unselect all"
  +msgstr "  "
  +
  +#: ../plugin/Keywords.php:255
  +msgid "You are not able to add keywords."
  +msgstr "Ű带 ߰  ϴ."
  +
  +#: ../plugin/Keywords.php:319
  +msgid "Common words are updated"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:354
  +#, c-format
  +msgid "Keywords for %s are updated"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:379
  +msgid "Keywords are updated"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:381
  +msgid "There are no changes found"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:393
  +msgid "Update with these Keywords"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:406
  +#, c-format
  +msgid "Select keywords for %s"
  +msgstr ""
  +
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1023 ../wikilib.php:2358
  +msgid "Use more specific text"
  +msgstr "  ڼ Էϼ"
  +
   #: ../plugin/LikePages.php:109
   msgid "These pages share a similar word..."
   msgstr ""
  @@ -332,19 +472,23 @@
   msgid "No similar pages found"
   msgstr "  ϴ"
   
  -#: ../plugin/LikePages.php:149
  +#: ../plugin/LikePages.php:150
   msgid "You are strongly recommened to find it in MetaWikis. "
   msgstr ""
   
  -#: ../plugin/LikePages.php:152
  +#: ../plugin/LikePages.php:153
   #, c-format
   msgid "Like \"%s\""
   msgstr ""
   
  -#: ../plugin/LikePages.php:154
  +#: ../plugin/LikePages.php:156
   msgid "Search all MetaWikis"
   msgstr ""
   
  +#: ../plugin/LikePages.php:157
  +msgid "Slow Slow"
  +msgstr ""
  +
   #: ../plugin/Navigation.php:19
   msgid "No Index page found"
   msgstr "ε  ϴ"
  @@ -357,20 +501,73 @@
   msgid "Edit Image"
   msgstr "׸ ġ"
   
  -#: ../plugin/RecentChanges.php:158
  +#: ../plugin/RecentChanges.php:117
  +msgid "Show changes for "
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:122
  +msgid "days ago"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:209
   msgid "set bookmark"
   msgstr "ϸũ"
   
  +#: ../plugin/RecentChanges.php:244
  +#, c-format
  +msgid "[%sh %sm ago]"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:28
  +msgid "No page found"
  +msgstr " ϴ"
  +
  +#: ../plugin/SlideShow.php:102
  +msgid "Start:"
  +msgstr ":"
  +
  +#: ../plugin/SlideShow.php:111
  +msgid "End:"
  +msgstr ":"
  +
  +#: ../plugin/SlideShow.php:121 ../plugin/pageview.php:75
  +msgid "Next:"
  +msgstr ":"
  +
  +#: ../plugin/SlideShow.php:131
  +msgid "Prev:"
  +msgstr ":"
  +
  +#: ../plugin/SlideShow.php:138
  +msgid "Return"
  +msgstr "ư"
  +
  +#: ../plugin/SystemInfo.php:16
  +msgid "Number of Pages"
  +msgstr " "
  +
  +#: ../plugin/SystemInfo.php:17
  +msgid "HTTP Server Version"
  +msgstr ""
  +
  +#: ../plugin/SystemInfo.php:18
  +msgid "MoniWiki Version"
  +msgstr ""
  +
  +#: ../plugin/SystemInfo.php:19
  +msgid "PHP Version"
  +msgstr ""
  +
   #: ../plugin/TwinPages.php:13
   #, c-format
   msgid "TwinPages of %s"
   msgstr "%s ֵ "
   
  -#: ../plugin/TwinPages.php:18 ../wiki.php:2233 ../wiki.php:3400
  -msgid "See TwinPages: "
  +#: ../plugin/TwinPages.php:19 ../wiki.php:3760
  +msgid "See [TwinPages]: "
   msgstr ""
   
  -#: ../plugin/TwinPages.php:20
  +#: ../plugin/TwinPages.php:21
   msgid "No TwinPages found."
   msgstr "ֵ  ϴ"
   
  @@ -397,17 +594,18 @@
   msgid "Files are uploaded successfully"
   msgstr "  ö󰬽ϴ"
   
  -#: ../plugin/UploadFile.php:232
  +#: ../plugin/UploadFile.php:235
   msgid ": Rename"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:124 ../plugin/rename.php:69 ../wikilib.php:752
  +#: ../plugin/UploadedFiles.php:278 ../plugin/rename.php:77 ../wikilib.php:882
  +#: ../wikilib.php:1674
   msgid "Password"
  -msgstr ""
  +msgstr "йȣ"
   
  -#: ../plugin/UploadedFiles.php:125 ../wikilib.php:730
  +#: ../plugin/UploadedFiles.php:279 ../wikilib.php:860
   msgid "Delete selected files"
  -msgstr ""
  +msgstr "õ  "
   
   #: ../plugin/VisualTour.php:56
   msgid "Normal"
  @@ -423,10 +621,10 @@
   
   #: ../plugin/Vote.php:67 ../plugin/security/community.php:26
   #: ../plugin/security/community.php:36 ../plugin/security/community.php:46
  -#: ../plugin/security/community.php:58 ../plugin/security/mustlogin.php:25
  +#: ../plugin/security/community.php:61 ../plugin/security/mustlogin.php:25
   #: ../plugin/security/mustlogin.php:35 ../plugin/security/mustlogin.php:45
  -#: ../plugin/security/mustlogin.php:60 ../plugin/security/needtologin.php:25
  -#: ../plugin/security/needtologin.php:35 ../plugin/security/needtologin.php:45
  +#: ../plugin/security/mustlogin.php:60 ../plugin/security/needtologin.php:29
  +#: ../plugin/security/needtologin.php:40 ../plugin/security/needtologin.php:51
   #: ../plugin/security/userbased.php:60
   msgid "Please Login or make your ID on this Wiki ;)"
   msgstr "αϰų ID 弼 ;)"
  @@ -435,7 +633,7 @@
   msgid "Voted successfully"
   msgstr ""
   
  -#: ../plugin/WordIndex.php:65 ../wikilib.php:1586
  +#: ../plugin/WordIndex.php:65 ../wikilib.php:2111
   msgid "Others"
   msgstr ""
   
  @@ -443,6 +641,10 @@
   msgid "Did you want to Backup your wiki ?"
   msgstr ""
   
  +#: ../plugin/chat.php:36
  +msgid "No messages"
  +msgstr ""
  +
   #: ../plugin/chmod.php:18
   #, c-format
   msgid "Permission of \"%s\" changed !"
  @@ -494,7 +696,7 @@
   msgid "No manpage found"
   msgstr "Manpage ϴ"
   
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1335
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1724
   msgid "Login or Join"
   msgstr ""
   
  @@ -503,14 +705,22 @@
   msgid "%s or %s"
   msgstr "%s Ȥ %s"
   
  -#: ../plugin/new.php:10
  +#: ../plugin/new.php:11 ../plugin/new.php:18
   msgid "Create a new page"
   msgstr " "
   
  -#: ../plugin/new.php:15
  +#: ../plugin/new.php:16
   msgid "Enter a page name"
   msgstr " ̸ "
   
  +#: ../plugin/new.php:17
  +msgid "Normalize this page name"
  +msgstr "̸ ȭϱ"
  +
  +#: ../plugin/pageview.php:70
  +msgid "First:"
  +msgstr ""
  +
   #: ../plugin/print.php:20
   #, c-format
   msgid "Retrieved from %s"
  @@ -521,7 +731,7 @@
   msgid "last modified %s %s"
   msgstr ""
   
  -#: ../plugin/processor/vim.php:42
  +#: ../plugin/processor/vim.php:47
   msgid "Toggle line numbers"
   msgstr ""
   
  @@ -549,22 +759,27 @@
   msgid "Do you want to customize your quicklinks ?"
   msgstr ""
   
  -#: ../plugin/rcs.php:17
  +#: ../plugin/rcs.php:13
  +#, c-format
  +msgid "%s does not support rcs options."
  +msgstr ""
  +
  +#: ../plugin/rcs.php:26
   #, c-format
   msgid "Change options for \"%s\""
   msgstr ""
   
  -#: ../plugin/rcs.php:23
  +#: ../plugin/rcs.php:32
   #, c-format
   msgid "Fail to rcs \"%s\" !"
   msgstr ""
   
  -#: ../plugin/rcs.php:27
  +#: ../plugin/rcs.php:36
   #, c-format
   msgid "Change options for \"%s\" ?"
   msgstr ""
   
  -#: ../plugin/rcs.php:38
  +#: ../plugin/rcs.php:47
   msgid "Only WikiMaster can execute rcs"
   msgstr ""
   
  @@ -587,52 +802,60 @@
   msgid "BlogChanges at %s"
   msgstr ""
   
  -#: ../plugin/rename.php:13
  +#: ../plugin/rename.php:19
   #, c-format
   msgid "\"%s\" is renamed !"
   msgstr "%s() ̸ ٲϴ !"
   
  -#: ../plugin/rename.php:29
  +#: ../plugin/rename.php:35
   #, c-format
   msgid "'%s' is changed"
   msgstr "'%s'() ٲϴ"
   
  -#: ../plugin/rename.php:37
  +#: ../plugin/rename.php:43
   #, c-format
  -msgid "'%s' is renamed as '%s' successfully"
  -msgstr "'%s'() '%s'() ̸ ٲϴ"
  +msgid "'%s' is renamed as '%s' successfully."
  +msgstr "'%s'() '%s'() ̸ ٲϴ"
   
  -#: ../plugin/rename.php:45
  +#: ../plugin/rename.php:51
   #, c-format
   msgid "Fail to rename \"%s\" !"
   msgstr ""
   
  -#: ../plugin/rename.php:52
  +#: ../plugin/rename.php:58
   #, c-format
   msgid "Rename \"%s\" ?"
   msgstr "\"%s\" ̸ ٲܱ ?"
   
  -#: ../plugin/rename.php:61
  +#: ../plugin/rename.php:63
  +msgid "Old name:"
  +msgstr "̸:"
  +
  +#: ../plugin/rename.php:64
  +msgid "New name:"
  +msgstr "̸:"
  +
  +#: ../plugin/rename.php:69
   msgid "Rename"
   msgstr "̸ٲٱ"
   
  -#: ../plugin/rename.php:66
  +#: ../plugin/rename.php:74
   msgid "Rename and fix Backlinks"
   msgstr "̸ ٲٰ  ũ "
   
  -#: ../plugin/rename.php:70
  +#: ../plugin/rename.php:78
   msgid "Only WikiMaster can rename this page"
   msgstr ""
   
  -#: ../plugin/rename.php:71 ../wikilib.php:790
  +#: ../plugin/rename.php:79 ../wikilib.php:920
   msgid "with revision history"
   msgstr " 丮 Բ"
   
  -#: ../plugin/rename.php:72
  +#: ../plugin/rename.php:80
   msgid "show only"
   msgstr ""
   
  -#: ../plugin/rename.php:74
  +#: ../plugin/rename.php:82
   msgid "Check backlinks"
   msgstr ""
   
  @@ -658,7 +881,7 @@
   msgid "Restore backuped data"
   msgstr ""
   
  -#: ../plugin/rss_rc.php:50
  +#: ../plugin/rss_rc.php:54
   msgid "show changes"
   msgstr ""
   
  @@ -674,13 +897,13 @@
   #: ../plugin/security/community.php:25 ../plugin/security/community.php:35
   #: ../plugin/security/community.php:45 ../plugin/security/mustlogin.php:24
   #: ../plugin/security/mustlogin.php:34 ../plugin/security/mustlogin.php:44
  -#: ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
  -#: ../plugin/security/needtologin.php:44
  +#: ../plugin/security/needtologin.php:28 ../plugin/security/needtologin.php:39
  +#: ../plugin/security/needtologin.php:50
   #, c-format
   msgid "You are not allowed to '%s' on this page"
   msgstr "'%s'   ׼Դϴ."
   
  -#: ../plugin/security/community.php:57 ../plugin/security/htaccesslogin.php:46
  +#: ../plugin/security/community.php:60 ../plugin/security/htaccesslogin.php:46
   #: ../plugin/security/mustlogin.php:59 ../plugin/security/userbased.php:28
   #: ../plugin/security/userbased.php:36 ../plugin/security/userbased.php:44
   #: ../plugin/security/userbased.php:59 ../plugin/security/wikimaster.php:25
  @@ -756,6 +979,10 @@
   msgid "Please select a theme properly."
   msgstr "׸  ּ"
   
  +#: ../plugin/ticket.php:75
  +msgid "Invalid use of ticket"
  +msgstr ""
  +
   #: ../plugin/trackback.php:53
   msgid "TrackBack is not activated !"
   msgstr "TrackBack Ȱȭ ʾҽϴ !"
  @@ -782,106 +1009,186 @@
   msgid "No TrackBack entry found for %s"
   msgstr ""
   
  -#: ../plugin/userform.php:29
  +#: ../plugin/userform.php:39 ../plugin/userform.php:42
   msgid "Successfully confirmed"
   msgstr ""
   
  -#: ../plugin/userform.php:30
  +#: ../plugin/userform.php:40
   msgid "Your e-mail address is confirmed successfully"
   msgstr "̸ ּ Ȯ ϷǾϴ"
   
  -#: ../plugin/userform.php:32
  +#: ../plugin/userform.php:47
  +msgid "Your new password is confirmed successfully"
  +msgstr " йȣ Ȯ ϷǾϴ"
  +
  +#: ../plugin/userform.php:49
   msgid "Confirmation missmatched !"
  -msgstr ""
  +msgstr "Ȯ  ʽϴ !"
   
  -#: ../plugin/userform.php:33 ../plugin/userform.php:37
  +#: ../plugin/userform.php:50 ../plugin/userform.php:54
   msgid "Please try again to register your e-mail address"
   msgstr "̸ ּ  ٽ ϼ"
   
  -#: ../plugin/userform.php:36
  +#: ../plugin/userform.php:53
   msgid "ID does not exists !"
  -msgstr ""
  +msgstr "̵  ʽϴ !"
   
  -#: ../plugin/userform.php:52 ../plugin/userform.php:114
  +#: ../plugin/userform.php:87 ../plugin/userform.php:267
   #, c-format
   msgid "Successfully login as '%s'"
  -msgstr ""
  +msgstr " '%s'() αεǾϴ"
   
  -#: ../plugin/userform.php:58 ../plugin/userform.php:119
  -#: ../plugin/userform.php:147
  +#: ../plugin/userform.php:93 ../plugin/userform.php:272
  +#: ../plugin/userform.php:315
   msgid "Invalid password !"
   msgstr "߸ йȣ !"
   
  -#: ../plugin/userform.php:62
  +#: ../plugin/userform.php:97
   #, c-format
   msgid "\"%s\" does not exists on this wiki !"
   msgstr ""
   
  -#: ../plugin/userform.php:64
  +#: ../plugin/userform.php:99
   msgid "Make new ID on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:70
  +#: ../plugin/userform.php:105
   msgid "Cookie deleted !"
   msgstr "Ű ϴ !"
   
  -#: ../plugin/userform.php:81 ../plugin/userform.php:135
  +#: ../plugin/userform.php:107 ../wikilib.php:1781
  +msgid "E-mail new password"
  +msgstr " йȣ ޱ"
  +
  +#: ../plugin/userform.php:118 ../plugin/userform.php:181
  +#: ../plugin/userform.php:204
  +msgid "Invalid ticket !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:120 ../plugin/userform.php:206
  +msgid "You need a ticket !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:152
  +msgid "New password confirmation"
  +msgstr " йȣ Ȯ"
  +
  +#: ../plugin/userform.php:157
  +msgid "Please confirm your new password"
  +msgstr " йȣ Ȯ ּ"
  +
  +#: ../plugin/userform.php:159
  +#, c-format
  +msgid "Your new password is %s"
  +msgstr " йȣ %s"
  +
  +#: ../plugin/userform.php:160 ../plugin/userform.php:259
  +msgid "Please change your password later"
  +msgstr "йȣ ٲּ"
  +
  +#: ../plugin/userform.php:164 ../plugin/userform.php:172
  +msgid "Fail to e-mail notification !"
  +msgstr "̸ ˸  !"
  +
  +#: ../plugin/userform.php:167
  +msgid "New password is sent to your e-mail !"
  +msgstr " йȣ ̸Ϸ ۵Ǿϴ !"
  +
  +#: ../plugin/userform.php:168
  +msgid "Please check your e-mail"
  +msgstr "̸ Ȯ ּ"
  +
  +#: ../plugin/userform.php:173
  +msgid "E-mail mismatch !"
  +msgstr "̸  ʽϴ !"
  +
  +#: ../plugin/userform.php:175
  +msgid "Invalid request"
  +msgstr "߸ û !"
  +
  +#: ../plugin/userform.php:176
  +msgid "Please confirm your e-mail address first !"
  +msgstr "̸ ּҸ  Ȯ ּ !"
  +
  +#: ../plugin/userform.php:183
  +msgid "ID and e-mail mismatch !"
  +msgstr "̵ ̸ ּҰ  ʽϴ !"
  +
  +#: ../plugin/userform.php:185
  +msgid "Please try again or make a new profile"
  +msgstr "̸ ּ  ٽ ϼ"
  +
  +#: ../plugin/userform.php:225 ../plugin/userform.php:303
   msgid "too short password!"
   msgstr "йȣ ªϴ"
   
  -#: ../plugin/userform.php:82
  +#: ../plugin/userform.php:226
   msgid "mismatch password!"
   msgstr "йȣ  ʽϴ!"
   
  -#: ../plugin/userform.php:83 ../plugin/userform.php:139
  +#: ../plugin/userform.php:227 ../plugin/userform.php:307
   msgid "not acceptable character found in the password!"
   msgstr ""
   
  -#: ../plugin/userform.php:86
  +#: ../plugin/userform.php:230
   msgid "Your password is too simple to use as a password !"
   msgstr ""
   
  -#: ../plugin/userform.php:92 ../plugin/userform.php:163
  +#: ../plugin/userform.php:236 ../plugin/userform.php:338
   msgid "Your email address is not valid"
   msgstr "̸ ּҰ ߸ Ǿϴ"
   
  -#: ../plugin/userform.php:96
  +#: ../plugin/userform.php:240
   msgid "Successfully added!"
   msgstr ""
   
  -#: ../plugin/userform.php:105 ../plugin/userform.php:157
  -msgid "E-mail confirmation"
  +#: ../plugin/userform.php:246
  +#, c-format
  +msgid "Successfully added as '%s'"
   msgstr ""
   
  -#: ../plugin/userform.php:107 ../plugin/userform.php:159
  +#: ../plugin/userform.php:247
  +msgid "Please check your mailbox"
  +msgstr "̸ Ȯ ּ"
  +
  +#: ../plugin/userform.php:254 ../plugin/userform.php:332
  +msgid "E-mail confirmation"
  +msgstr "̸ Ȯ"
  +
  +#: ../plugin/userform.php:256 ../plugin/userform.php:334
   msgid "Please confirm your email address"
   msgstr "̸ ּҸ Ȯ ּ"
   
  -#: ../plugin/userform.php:109 ../plugin/userform.php:161
  +#: ../plugin/userform.php:258
  +#, c-format
  +msgid "Your initial password is %s"
  +msgstr ""
  +
  +#: ../plugin/userform.php:262 ../plugin/userform.php:336
   msgid "E-mail confirmation mail sent"
   msgstr ""
   
  -#: ../plugin/userform.php:124
  +#: ../plugin/userform.php:277
   msgid "Invalid username !"
   msgstr "߸ ̸ !"
   
  -#: ../plugin/userform.php:137
  +#: ../plugin/userform.php:305
   msgid "mismatch password !"
   msgstr "߸ йȣ !"
   
  -#: ../plugin/userform.php:140 ../plugin/userform.php:148
  +#: ../plugin/userform.php:308 ../plugin/userform.php:316
   msgid "Password is not changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:142
  +#: ../plugin/userform.php:310
   msgid "Password is changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:144
  +#: ../plugin/userform.php:312
   msgid "Password is too simple to use as a password !"
   msgstr ""
   
  -#: ../plugin/userform.php:169
  +#: ../plugin/userform.php:344
   msgid "Profiles are saved successfully !"
   msgstr "   Ǿϴ !"
   
  @@ -895,96 +1202,109 @@
   msgid "Whois search result for %s"
   msgstr "%s  Whois ġ "
   
  -#: ../wiki.php:940
  +#: ../wiki.php:1087
   #, c-format
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1231
  -msgid "Version info does not supported by this wiki"
  +#: ../wiki.php:1380
  +msgid "Version info does not supported in this wiki"
   msgstr ""
   
  -#: ../wiki.php:1242
  +#: ../wiki.php:1391
   msgid "File does not exists"
   msgstr ""
   
  -#: ../wiki.php:2229
  +#: ../wiki.php:2274
  +msgid "Invalid ajax action."
  +msgstr "߸ ajax ׼."
  +
  +#: ../wiki.php:2503
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:2229
  +#: ../wiki.php:2503
   msgid "TwinPages"
   msgstr "TwinPages"
   
  -#: ../wiki.php:2877 ../locale/dummy.php:6
  +#: ../wiki.php:2508
  +msgid "See [TwinPages]:"
  +msgstr ""
  +
  +#: ../wiki.php:3193 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "ġ"
   
  -#: ../wiki.php:2879
  +#: ../wiki.php:3195
   msgid "NotEditable"
   msgstr "ĥ "
   
  -#: ../wiki.php:2881 ../locale/dummy.php:6
  +#: ../wiki.php:3197 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:2882 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:3198 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "ã"
   
  -#: ../wiki.php:3113
  +#: ../wiki.php:3461
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:3360
  +#: ../wiki.php:3720
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:3361 ../wiki.php:3372
  +#: ../wiki.php:3721 ../wiki.php:3732
   msgid "Please contact WikiMasters"
   msgstr ""
   
  -#: ../wiki.php:3371
  +#: ../wiki.php:3731
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:3402 ../wiki.php:3405 ../wikilib.php:923
  +#: ../wiki.php:3762 ../wiki.php:3765 ../wikilib.php:1065
   msgid "Create this page"
   msgstr " "
   
  -#: ../wiki.php:3407 ../wikilib.php:925
  +#: ../wiki.php:3767 ../wikilib.php:1067
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
   
  -#: ../wiki.php:3407 ../wikilib.php:925
  +#: ../wiki.php:3767 ../wikilib.php:1067
   msgid "title"
   msgstr ""
   
  -#: ../wiki.php:3413
  +#: ../wiki.php:3773
   msgid " or alternativly, use one of these templates:\n"
   msgstr " Ȥ Ʒ øƮ  ̿ϼ:\n"
   
  -#: ../wiki.php:3416
  +#: ../wiki.php:3776
   msgid "To create your own templates, add a page with a 'Template' suffix.\n"
   msgstr "øƮ ÷ Template ̸   弼.\n"
   
  -#: ../wiki.php:3491
  +#: ../wiki.php:3787
  +#, c-format
  +msgid "Redirected from page \"%s\""
  +msgstr ""
  +
  +#: ../wiki.php:3864
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr ""
   
  -#: ../wiki.php:3503
  +#: ../wiki.php:3885
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:3506
  +#: ../wiki.php:3888
   msgid "Please enter the valid password"
   msgstr "Ȯ йȣ ־ּ"
   
  -#: ../wikilib.php:456
  +#: ../wikilib.php:526
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -1013,219 +1333,316 @@
   "<b>̺</b>: ||   |||| ĭ ģ  ||;<br />\n"
   "̺̳     ȵ˴ϴ.<br />\n"
   
  -#: ../wikilib.php:492
  +#: ../wikilib.php:564
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
  -#: ../wikilib.php:550
  +#: ../wikilib.php:645
   msgid "Use one of the following templates as an initial release :\n"
   msgstr "ó   øƮ Ȱϼ :\n"
   
  -#: ../wikilib.php:552
  +#: ../wikilib.php:647
   msgid "To create your own templates, add a page with a 'Template' suffix."
   msgstr "øƮ ÷ Template ̸   弼."
   
  -#: ../wikilib.php:571
  +#: ../wikilib.php:650
  +msgid "Merge"
  +msgstr ""
  +
  +#: ../wikilib.php:651
  +msgid "Merge manually"
  +msgstr ""
  +
  +#: ../wikilib.php:652
  +msgid "Ignore conflicts"
  +msgstr ""
  +
  +#: ../wikilib.php:676
   msgid "Skip to preview"
   msgstr "̸"
   
  -#: ../wikilib.php:573
  +#: ../wikilib.php:680
   msgid "ReduceEditor"
   msgstr "â ̱"
   
  -#: ../wikilib.php:574
  +#: ../wikilib.php:681
   msgid "EnlargeEditor"
   msgstr "â ̱"
   
  -#: ../wikilib.php:578 ../locale/dummy.php:6
  +#: ../wikilib.php:685 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr "Ű"
   
  -#: ../wikilib.php:579
  +#: ../wikilib.php:687
   msgid "HelpOnEditing"
   msgstr "ġ "
   
  -#: ../wikilib.php:602
  +#: ../wikilib.php:714
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:618
  +#: ../wikilib.php:731
   msgid "--Select Category--"
   msgstr "--īװ --"
   
  -#: ../wikilib.php:632 ../wikilib.php:1338
  +#: ../wikilib.php:741
  +msgid "Minor edit"
  +msgstr ""
  +
  +#: ../wikilib.php:749 ../wikilib.php:1727 ../wikilib.php:1769
   msgid "Save"
   msgstr ""
   
  -#: ../wikilib.php:633
  +#: ../wikilib.php:750
   msgid "Summary of Change"
   msgstr "ٲ "
   
  -#: ../wikilib.php:678
  +#: ../wikilib.php:796
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:683
  +#: ../wikilib.php:801
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s() ȿ ׼ ƴմϴ"
   
  -#: ../wikilib.php:685
  +#: ../wikilib.php:803
   msgid "Is it valid action ?"
   msgstr ""
   
  -#: ../wikilib.php:718
  +#: ../wikilib.php:848
   #, c-format
   msgid "File '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:720
  +#: ../wikilib.php:850
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr ""
   
  -#: ../wikilib.php:725
  +#: ../wikilib.php:855
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:727
  +#: ../wikilib.php:857
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr ""
   
  -#: ../wikilib.php:737 ../wikilib.php:757
  +#: ../wikilib.php:867 ../wikilib.php:887
   msgid "No files are selected !"
   msgstr " õ ʾҽϴ !"
   
  -#: ../wikilib.php:750
  +#: ../wikilib.php:880
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr " '%s'() ðڽϱ ?"
   
  -#: ../wikilib.php:753
  +#: ../wikilib.php:883
   msgid "Delete"
   msgstr ""
   
  -#: ../wikilib.php:754
  +#: ../wikilib.php:884
   msgid "Delete selected file"
   msgstr "õ  "
   
  -#: ../wikilib.php:776
  +#: ../wikilib.php:905
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr ""
   
  -#: ../wikilib.php:782
  +#: ../wikilib.php:912
   msgid "Please delete this file manually."
   msgstr ""
   
  -#: ../wikilib.php:784
  +#: ../wikilib.php:914
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "\"%s\"()  ?"
   
  -#: ../wikilib.php:888 ../wikilib.php:1779
  -msgid "Use more specific text"
  -msgstr "  ڼ Էϼ"
  -
  -#: ../wikilib.php:972
  -msgid "Goto Editor"
  -msgstr " "
  -
  -#: ../wikilib.php:981
  +#: ../wikilib.php:1119 ../wikilib.php:1223
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "%s() ġ  ٸ    ߽ϴ"
   
  -#: ../wikilib.php:986 ../wikilib.php:1027
  -#, c-format
  -msgid "Preview of %s"
  -msgstr "%s ̸"
  -
  -#: ../wikilib.php:993
  -msgid "Conflict error!"
  -msgstr "浹!"
  -
  -#: ../wikilib.php:1021
  -msgid ""
  -"Sorry, can not save page because some messages are blocked in this wiki."
  -msgstr "˼մϴ. Ư ޽ Ǿ    ϴ."
  +#: ../wikilib.php:1125
  +msgid "Section edit is not valid for non-exists page."
  +msgstr ""
   
  -#: ../wikilib.php:1065
  +#: ../wikilib.php:1158 ../wikilib.php:1332
   msgid "mail does not supported by default."
   msgstr ""
   
  -#: ../wikilib.php:1069
  +#: ../wikilib.php:1162 ../wikilib.php:1336
   msgid "Sent notification mail."
   msgstr ""
   
  -#: ../wikilib.php:1071
  +#: ../wikilib.php:1164 ../wikilib.php:1338
   msgid "No subscribers found."
   msgstr "ڰ ϴ"
   
  -#: ../wikilib.php:1076
  +#: ../wikilib.php:1169 ../wikilib.php:1343
   #, c-format
   msgid "%s is not editable"
   msgstr "%s()   ϴ"
   
  -#: ../wikilib.php:1078
  +#: ../wikilib.php:1171 ../wikilib.php:1345
   #, c-format
   msgid "%s is saved"
   msgstr "%s() Ǿϴ"
   
  -#: ../wikilib.php:1102
  +#: ../wikilib.php:1214
  +msgid "Goto Editor"
  +msgstr " "
  +
  +#: ../wikilib.php:1227
  +#, c-format
  +msgid "%s is merged with latest contents."
  +msgstr ""
  +
  +#: ../wikilib.php:1228
  +#, c-format
  +msgid "%s is merged successfully"
  +msgstr "%s()  յǾϴ"
  +
  +#: ../wikilib.php:1232
  +#, c-format
  +msgid "Merge conflicts are detected for %s !"
  +msgstr "%s Ͽ  浹 ߰ߵǾϴ !"
  +
  +#: ../wikilib.php:1233
  +#, c-format
  +msgid "Merge cancelled on %s."
  +msgstr "%   ҵǾϴ."
  +
  +#: ../wikilib.php:1234
  +msgid "NEW"
  +msgstr ""
  +
  +#: ../wikilib.php:1235
  +msgid "OLD"
  +msgstr ""
  +
  +#: ../wikilib.php:1240
  +#, c-format
  +msgid "Get merge conflicts for %s"
  +msgstr ""
  +
  +#: ../wikilib.php:1241
  +msgid "Please resolve conflicts manually."
  +msgstr "浹  ذϽñ ٶϴ."
  +
  +#: ../wikilib.php:1244
  +#, c-format
  +msgid "Force merging for %s !"
  +msgstr "%s    Ǿϴ !"
  +
  +#: ../wikilib.php:1245
  +msgid "Please be careful, you could damage useful information."
  +msgstr ""
  +
  +#: ../wikilib.php:1257
  +msgid "Conflict error!"
  +msgstr "浹!"
  +
  +#: ../wikilib.php:1294
  +#, c-format
  +msgid "Preview of %s"
  +msgstr "%s ̸"
  +
  +#: ../wikilib.php:1369
   msgid "Nobody subscribed to this page."
   msgstr "ƹ   ʰֽϴ."
   
  -#: ../wikilib.php:1119
  +#: ../wikilib.php:1386
   #, c-format
   msgid "%s page is modified"
   msgstr ""
   
  -#: ../wikilib.php:1129
  +#: ../wikilib.php:1411
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:1142
  +#: ../wikilib.php:1424
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:1146
  +#: ../wikilib.php:1429
   msgid "Mails are sent successfully"
   msgstr ""
   
  -#: ../wikilib.php:1147
  +#: ../wikilib.php:1430
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1310
  +#: ../wikilib.php:1432
  +msgid "Fail to send mail"
  +msgstr ""
  +
  +#: ../wikilib.php:1443
  +msgid "This wiki does not support sendmail"
  +msgstr ""
  +
  +#: ../wikilib.php:1536
  +msgid "Invalid regular expression !"
  +msgstr "߸ Խ !"
  +
  +#: ../wikilib.php:1560
  +msgid "No match!"
  +msgstr ""
  +
  +#: ../wikilib.php:1563
  +msgid "Infinite loop possible!"
  +msgstr ""
  +
  +#: ../wikilib.php:1685
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:1329
  +#: ../wikilib.php:1686 ../wikilib.php:1786
  +msgid "ID"
  +msgstr "̵"
  +
  +#: ../wikilib.php:1707 ../wikilib.php:1779
   msgid "Make profile"
  -msgstr ""
  +msgstr " "
   
  -#: ../wikilib.php:1330
  +#: ../wikilib.php:1709
   msgid "password again"
  -msgstr ""
  +msgstr "йȣ Է"
   
  -#: ../wikilib.php:1341
  +#: ../wikilib.php:1711 ../wikilib.php:1749
  +msgid "Mail"
  +msgstr ""
  +
  +#: ../wikilib.php:1731
   msgid "New password"
   msgstr " йȣ"
   
  -#: ../wikilib.php:1347
  +#: ../wikilib.php:1750
  +msgid "Time Zone"
  +msgstr "ð"
  +
  +#: ../wikilib.php:1758
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:1786
  +#: ../wikilib.php:2112
  +msgid "Show all"
  +msgstr " "
  +
  +#: ../wikilib.php:2254
  +msgid "Contents"
  +msgstr ""
  +
  +#: ../wikilib.php:2365
   #, c-format
   msgid "Title search for \"%s\""
   msgstr ""
  
  
  
  1.14      +610 -193  moniwiki/locale/po/moniwiki.pot
  
  Index: moniwiki.pot
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/moniwiki.pot,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- moniwiki.pot	8 Aug 2005 13:16:43 -0000	1.13
  +++ moniwiki.pot	10 Jan 2006 11:39:39 -0000	1.14
  @@ -6,7 +6,7 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: PACKAGE VERSION\n"
  -"POT-Creation-Date: 2005-08-08 22:13+0900\n"
  +"POT-Creation-Date: 2006-01-10 19:47+0900\n"
   "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
   "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
   "Language-Team: LANGUAGE <LL@li.org>\n"
  @@ -14,12 +14,12 @@
   "Content-Type: text/plain; charset=CHARSET\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  -#: ../plugin/Attachment.php:40 ../plugin/Attachment.php:111
  +#: ../plugin/Attachment.php:41 ../plugin/Attachment.php:121
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr ""
   
  -#: ../plugin/Attachment.php:114
  +#: ../plugin/Attachment.php:124
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
  @@ -33,61 +33,63 @@
   msgid "Translate %s to %s"
   msgstr ""
   
  -#: ../plugin/Blog.php:86
  +#: ../plugin/Blog.php:86 ../plugin/blog2.php:87
   #, c-format
   msgid "Blog cache of \"%s\" is refreshed"
   msgstr ""
   
  -#: ../plugin/Blog.php:110
  +#: ../plugin/Blog.php:110 ../plugin/blog2.php:111
   #, c-format
   msgid "\"%s\" is updated"
   msgstr ""
   
  -#: ../plugin/Blog.php:115
  +#: ../plugin/Blog.php:115 ../plugin/blog2.php:116
   msgid "Add Blog"
   msgstr ""
   
  -#: ../plugin/Blog.php:155
  +#: ../plugin/Blog.php:155 ../plugin/blog2.php:156
   msgid "Error: No blog entry found!"
   msgstr ""
   
  -#: ../plugin/Blog.php:163 ../plugin/Comment.php:110
  +#: ../plugin/Blog.php:163 ../plugin/Comment.php:135 ../plugin/blog2.php:164
   msgid "Error: Don't make a clone!"
   msgstr ""
   
  -#: ../plugin/Blog.php:180
  +#: ../plugin/Blog.php:180 ../plugin/blog2.php:181
   #, c-format
   msgid "Comment added to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:183
  +#: ../plugin/Blog.php:183 ../plugin/blog2.php:184
   #, c-format
   msgid "Blog entry added to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:220
  +#: ../plugin/Blog.php:220 ../plugin/blog2.php:221
   #, c-format
   msgid "Add Comment to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:222
  +#: ../plugin/Blog.php:222 ../plugin/blog2.php:223
   #, c-format
   msgid "Add Blog entry to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:236 ../plugin/Blog.php:292 ../plugin/Comment.php:46
  +#: ../plugin/Blog.php:236 ../plugin/Blog.php:292 ../plugin/Comment.php:50
  +#: ../plugin/blog2.php:237 ../plugin/blog2.php:293
   msgid "Name"
   msgstr ""
   
  -#: ../plugin/Blog.php:240 ../plugin/Blog.php:293
  +#: ../plugin/Blog.php:240 ../plugin/Blog.php:293 ../plugin/blog2.php:241
  +#: ../plugin/blog2.php:294
   msgid "Title"
   msgstr ""
   
  -#: ../plugin/Blog.php:246 ../plugin/Comment.php:48
  +#: ../plugin/Blog.php:246 ../plugin/Comment.php:52 ../plugin/blog2.php:247
   msgid "Don't add a signature"
   msgstr ""
   
  -#: ../plugin/Blog.php:259
  +#: ../plugin/Blog.php:259 ../plugin/blog2.php:260
   msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
   msgstr ""
   
  @@ -99,40 +101,40 @@
   msgid "BlogChanges"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:244
  +#: ../plugin/BlogChanges.php:246
   #, c-format
   msgid "Invalid category expr \"%s\""
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:376 ../plugin/BlogChanges.php:378
  +#: ../plugin/BlogChanges.php:378 ../plugin/BlogChanges.php:380
   #: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
   msgid "Anonymous"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:409 ../plugin/processor/blog.php:86
  +#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
   #, c-format
   msgid "%d comment"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:409 ../plugin/processor/blog.php:86
  +#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
   #, c-format
   msgid "%d comments"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:411 ../plugin/Comment.php:99
  +#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:124
   #: ../plugin/ImportTable.php:76 ../plugin/processor/blog.php:78
   msgid "Add comment"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:421 ../plugin/processor/blog.php:97
  +#: ../plugin/BlogChanges.php:423 ../plugin/processor/blog.php:97
   msgid "track back"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:441
  +#: ../plugin/BlogChanges.php:443
   msgid "Previous"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:444
  +#: ../plugin/BlogChanges.php:446
   msgid "Next"
   msgstr ""
   
  @@ -156,53 +158,70 @@
   msgid "Cut & Paste a Clipboard Image"
   msgstr ""
   
  -#: ../plugin/Comment.php:49
  +#: ../plugin/Comment.php:53
   msgid "Comment"
   msgstr ""
   
  -#: ../plugin/Comment.php:50 ../plugin/ImportTable.php:67 ../wikilib.php:631
  +#: ../plugin/Comment.php:54 ../plugin/ImportTable.php:67 ../wikilib.php:747
   msgid "Preview"
   msgstr ""
   
  -#: ../plugin/Comment.php:90
  +#: ../plugin/Comment.php:74
  +msgid "Page is not writable"
  +msgstr ""
  +
  +#: ../plugin/Comment.php:78
  +msgid "You are not allowed to add a comment."
  +msgstr ""
  +
  +#: ../plugin/Comment.php:79 ../plugin/Keywords.php:256
  +msgid "Page does not exists"
  +msgstr ""
  +
  +#: ../plugin/Comment.php:110 ../wikilib.php:1144 ../wikilib.php:1288
  +msgid ""
  +"Sorry, can not save page because some messages are blocked in this wiki."
  +msgstr ""
  +
  +#: ../plugin/Comment.php:115
   msgid "Preview comment"
   msgstr ""
   
  -#: ../plugin/Comment.php:136
  +#: ../plugin/Comment.php:165
   #, c-format
   msgid "%s is commented successfully"
   msgstr ""
   
  -#: ../plugin/Comment.php:137
  +#: ../plugin/Comment.php:166
   msgid "Comment added successfully"
   msgstr ""
   
  -#: ../plugin/Diff.php:43 ../plugin/Diff.php:82 ../wikilib.php:1008
  +#: ../plugin/Diff.php:151 ../plugin/Diff.php:190 ../wikilib.php:1275
   msgid "No difference found"
   msgstr ""
   
  -#: ../plugin/Diff.php:45
  +#: ../plugin/Diff.php:153
   msgid "Difference between yours and the current"
   msgstr ""
   
  -#: ../plugin/Diff.php:66 ../plugin/Info.php:125
  +#: ../plugin/Diff.php:174 ../plugin/Info.php:145
   msgid "No older revisions available"
   msgstr ""
   
  -#: ../plugin/Diff.php:71 ../plugin/Info.php:131
  +#: ../plugin/Diff.php:179 ../plugin/Info.php:151
   msgid "Version info is not available in this wiki"
   msgstr ""
   
  -#: ../plugin/Diff.php:84
  +#: ../plugin/Diff.php:192
   msgid "Difference between versions"
   msgstr ""
   
  -#: ../plugin/Diff.php:86
  +#: ../plugin/Diff.php:194
   #, c-format
   msgid "Difference between r%s and r%s"
   msgstr ""
   
  -#: ../plugin/Diff.php:89
  +#: ../plugin/Diff.php:197
   #, c-format
   msgid "Difference between r%s and the current"
   msgstr ""
  @@ -238,12 +257,12 @@
   msgid "%d day(s) passed from %s."
   msgstr ""
   
  -#: ../plugin/FastSearch.php:117 ../plugin/FullSearch.php:16
  +#: ../plugin/FastSearch.php:114 ../plugin/FullSearch.php:18
   #, c-format
   msgid "Full text search for \"%s\""
   msgstr ""
   
  -#: ../plugin/FastSearch.php:126 ../plugin/FullSearch.php:25
  +#: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:28
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr ""
  @@ -253,29 +272,65 @@
   msgid "BackLinks search for \"%s\""
   msgstr ""
   
  -#: ../plugin/FullSearch.php:103 ../wikilib.php:1790
  +#: ../plugin/FullSearch.php:16
  +#, c-format
  +msgid "KeyWords search for \"%s\""
  +msgstr ""
  +
  +#: ../plugin/FullSearch.php:30
  +msgid "page"
  +msgstr ""
  +
  +#: ../plugin/FullSearch.php:30
  +msgid "pages"
  +msgstr ""
  +
  +#: ../plugin/FullSearch.php:33
  +msgid "Context search."
  +msgstr ""
  +
  +#: ../plugin/FullSearch.php:34
  +#, c-format
  +msgid " or %s"
  +msgstr ""
  +
  +#: ../plugin/FullSearch.php:36
  +msgid "Refresh"
  +msgstr ""
  +
  +#: ../plugin/FullSearch.php:37
  +#, c-format
  +msgid " (%s search results)"
  +msgstr ""
  +
  +#: ../plugin/FullSearch.php:70
  +msgid "No search text"
  +msgstr ""
  +
  +#: ../plugin/FullSearch.php:113 ../wikilib.php:2369
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr ""
   
  -#: ../plugin/Gallery.php:244 ../plugin/Gallery.php:256
  +#: ../plugin/Gallery.php:257 ../plugin/Gallery.php:269
   msgid "add comment"
   msgstr ""
   
  -#: ../plugin/Gallery.php:253
  +#: ../plugin/Gallery.php:266
   msgid "show comments"
   msgstr ""
   
  -#: ../plugin/Gallery.php:296 ../plugin/Gallery.php:299 ../wikilib.php:1007
  +#: ../plugin/Gallery.php:309 ../plugin/Gallery.php:312 ../wikilib.php:1131
  +#: ../wikilib.php:1274
   #, c-format
   msgid "Go back or return to %s"
   msgstr ""
   
  -#: ../plugin/Gallery.php:297
  +#: ../plugin/Gallery.php:310
   msgid "Comments are edited"
   msgstr ""
   
  -#: ../plugin/Gallery.php:300
  +#: ../plugin/Gallery.php:313
   msgid "Comments is added"
   msgstr ""
   
  @@ -287,11 +342,15 @@
   msgid "Import URL"
   msgstr ""
   
  -#: ../plugin/Info.php:15
  +#: ../plugin/Info.php:22
   msgid "Revision History"
   msgstr ""
   
  -#: ../plugin/Info.php:116
  +#: ../plugin/Info.php:44
  +msgid "Show all revisions"
  +msgstr ""
  +
  +#: ../plugin/Info.php:161
   #, c-format
   msgid "Info. for %s"
   msgstr ""
  @@ -317,6 +376,87 @@
   msgid "Edit new molecule"
   msgstr ""
   
  +#: ../plugin/KeywordView.php:16 ../plugin/Tour.php:16
  +#, c-format
  +msgid "Tour from %s"
  +msgstr ""
  +
  +#: ../plugin/KeywordView.php:66 ../plugin/Tour.php:68
  +msgid "links"
  +msgstr ""
  +
  +#: ../plugin/KeywordView.php:68 ../plugin/Tour.php:70
  +msgid "deeper"
  +msgstr ""
  +
  +#: ../plugin/KeywordView.php:69 ../plugin/Tour.php:71
  +#, c-format
  +msgid "More %s or more %s"
  +msgstr ""
  +
  +#: ../plugin/KeywordView.php:74 ../plugin/Tour.php:77
  +#, c-format
  +msgid "Total %d related pages"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:221
  +msgid "hits"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:225
  +msgid "add keywords"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:228
  +msgid "Update keywords"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:230
  +msgid "Add keywords"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:231
  +msgid "Add as common words"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:232
  +msgid "Unselect all"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:255
  +msgid "You are not able to add keywords."
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:319
  +msgid "Common words are updated"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:354
  +#, c-format
  +msgid "Keywords for %s are updated"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:379
  +msgid "Keywords are updated"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:381
  +msgid "There are no changes found"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:393
  +msgid "Update with these Keywords"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:406
  +#, c-format
  +msgid "Select keywords for %s"
  +msgstr ""
  +
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1023 ../wikilib.php:2358
  +msgid "Use more specific text"
  +msgstr ""
  +
   #: ../plugin/LikePages.php:109
   msgid "These pages share a similar word..."
   msgstr ""
  @@ -333,19 +473,23 @@
   msgid "No similar pages found"
   msgstr ""
   
  -#: ../plugin/LikePages.php:149
  +#: ../plugin/LikePages.php:150
   msgid "You are strongly recommened to find it in MetaWikis. "
   msgstr ""
   
  -#: ../plugin/LikePages.php:152
  +#: ../plugin/LikePages.php:153
   #, c-format
   msgid "Like \"%s\""
   msgstr ""
   
  -#: ../plugin/LikePages.php:154
  +#: ../plugin/LikePages.php:156
   msgid "Search all MetaWikis"
   msgstr ""
   
  +#: ../plugin/LikePages.php:157
  +msgid "Slow Slow"
  +msgstr ""
  +
   #: ../plugin/Navigation.php:19
   msgid "No Index page found"
   msgstr ""
  @@ -358,20 +502,73 @@
   msgid "Edit Image"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:158
  +#: ../plugin/RecentChanges.php:117
  +msgid "Show changes for "
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:122
  +msgid "days ago"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:209
   msgid "set bookmark"
   msgstr ""
   
  +#: ../plugin/RecentChanges.php:244
  +#, c-format
  +msgid "[%sh %sm ago]"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:28
  +msgid "No page found"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:102
  +msgid "Start:"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:111
  +msgid "End:"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:121 ../plugin/pageview.php:75
  +msgid "Next:"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:131
  +msgid "Prev:"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:138
  +msgid "Return"
  +msgstr ""
  +
  +#: ../plugin/SystemInfo.php:16
  +msgid "Number of Pages"
  +msgstr ""
  +
  +#: ../plugin/SystemInfo.php:17
  +msgid "HTTP Server Version"
  +msgstr ""
  +
  +#: ../plugin/SystemInfo.php:18
  +msgid "MoniWiki Version"
  +msgstr ""
  +
  +#: ../plugin/SystemInfo.php:19
  +msgid "PHP Version"
  +msgstr ""
  +
   #: ../plugin/TwinPages.php:13
   #, c-format
   msgid "TwinPages of %s"
   msgstr ""
   
  -#: ../plugin/TwinPages.php:18 ../wiki.php:2233 ../wiki.php:3400
  -msgid "See TwinPages: "
  +#: ../plugin/TwinPages.php:19 ../wiki.php:3760
  +msgid "See [TwinPages]: "
   msgstr ""
   
  -#: ../plugin/TwinPages.php:20
  +#: ../plugin/TwinPages.php:21
   msgid "No TwinPages found."
   msgstr ""
   
  @@ -398,15 +595,16 @@
   msgid "Files are uploaded successfully"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:232
  +#: ../plugin/UploadFile.php:235
   msgid ": Rename"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:124 ../plugin/rename.php:69 ../wikilib.php:752
  +#: ../plugin/UploadedFiles.php:278 ../plugin/rename.php:77 ../wikilib.php:882
  +#: ../wikilib.php:1674
   msgid "Password"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:125 ../wikilib.php:730
  +#: ../plugin/UploadedFiles.php:279 ../wikilib.php:860
   msgid "Delete selected files"
   msgstr ""
   
  @@ -424,10 +622,10 @@
   
   #: ../plugin/Vote.php:67 ../plugin/security/community.php:26
   #: ../plugin/security/community.php:36 ../plugin/security/community.php:46
  -#: ../plugin/security/community.php:58 ../plugin/security/mustlogin.php:25
  +#: ../plugin/security/community.php:61 ../plugin/security/mustlogin.php:25
   #: ../plugin/security/mustlogin.php:35 ../plugin/security/mustlogin.php:45
  -#: ../plugin/security/mustlogin.php:60 ../plugin/security/needtologin.php:25
  -#: ../plugin/security/needtologin.php:35 ../plugin/security/needtologin.php:45
  +#: ../plugin/security/mustlogin.php:60 ../plugin/security/needtologin.php:29
  +#: ../plugin/security/needtologin.php:40 ../plugin/security/needtologin.php:51
   #: ../plugin/security/userbased.php:60
   msgid "Please Login or make your ID on this Wiki ;)"
   msgstr ""
  @@ -436,7 +634,7 @@
   msgid "Voted successfully"
   msgstr ""
   
  -#: ../plugin/WordIndex.php:65 ../wikilib.php:1586
  +#: ../plugin/WordIndex.php:65 ../wikilib.php:2111
   msgid "Others"
   msgstr ""
   
  @@ -444,6 +642,10 @@
   msgid "Did you want to Backup your wiki ?"
   msgstr ""
   
  +#: ../plugin/chat.php:36
  +msgid "No messages"
  +msgstr ""
  +
   #: ../plugin/chmod.php:18
   #, c-format
   msgid "Permission of \"%s\" changed !"
  @@ -495,7 +697,7 @@
   msgid "No manpage found"
   msgstr ""
   
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1335
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1724
   msgid "Login or Join"
   msgstr ""
   
  @@ -504,14 +706,22 @@
   msgid "%s or %s"
   msgstr ""
   
  -#: ../plugin/new.php:10
  +#: ../plugin/new.php:11 ../plugin/new.php:18
   msgid "Create a new page"
   msgstr ""
   
  -#: ../plugin/new.php:15
  +#: ../plugin/new.php:16
   msgid "Enter a page name"
   msgstr ""
   
  +#: ../plugin/new.php:17
  +msgid "Normalize this page name"
  +msgstr ""
  +
  +#: ../plugin/pageview.php:70
  +msgid "First:"
  +msgstr ""
  +
   #: ../plugin/print.php:20
   #, c-format
   msgid "Retrieved from %s"
  @@ -522,7 +732,7 @@
   msgid "last modified %s %s"
   msgstr ""
   
  -#: ../plugin/processor/vim.php:42
  +#: ../plugin/processor/vim.php:47
   msgid "Toggle line numbers"
   msgstr ""
   
  @@ -550,22 +760,27 @@
   msgid "Do you want to customize your quicklinks ?"
   msgstr ""
   
  -#: ../plugin/rcs.php:17
  +#: ../plugin/rcs.php:13
  +#, c-format
  +msgid "%s does not support rcs options."
  +msgstr ""
  +
  +#: ../plugin/rcs.php:26
   #, c-format
   msgid "Change options for \"%s\""
   msgstr ""
   
  -#: ../plugin/rcs.php:23
  +#: ../plugin/rcs.php:32
   #, c-format
   msgid "Fail to rcs \"%s\" !"
   msgstr ""
   
  -#: ../plugin/rcs.php:27
  +#: ../plugin/rcs.php:36
   #, c-format
   msgid "Change options for \"%s\" ?"
   msgstr ""
   
  -#: ../plugin/rcs.php:38
  +#: ../plugin/rcs.php:47
   msgid "Only WikiMaster can execute rcs"
   msgstr ""
   
  @@ -587,52 +802,60 @@
   msgid "BlogChanges at %s"
   msgstr ""
   
  -#: ../plugin/rename.php:13
  +#: ../plugin/rename.php:19
   #, c-format
   msgid "\"%s\" is renamed !"
   msgstr ""
   
  -#: ../plugin/rename.php:29
  +#: ../plugin/rename.php:35
   #, c-format
   msgid "'%s' is changed"
   msgstr ""
   
  -#: ../plugin/rename.php:37
  +#: ../plugin/rename.php:43
   #, c-format
  -msgid "'%s' is renamed as '%s' successfully"
  +msgid "'%s' is renamed as '%s' successfully."
   msgstr ""
   
  -#: ../plugin/rename.php:45
  +#: ../plugin/rename.php:51
   #, c-format
   msgid "Fail to rename \"%s\" !"
   msgstr ""
   
  -#: ../plugin/rename.php:52
  +#: ../plugin/rename.php:58
   #, c-format
   msgid "Rename \"%s\" ?"
   msgstr ""
   
  -#: ../plugin/rename.php:61
  +#: ../plugin/rename.php:63
  +msgid "Old name:"
  +msgstr ""
  +
  +#: ../plugin/rename.php:64
  +msgid "New name:"
  +msgstr ""
  +
  +#: ../plugin/rename.php:69
   msgid "Rename"
   msgstr ""
   
  -#: ../plugin/rename.php:66
  +#: ../plugin/rename.php:74
   msgid "Rename and fix Backlinks"
   msgstr ""
   
  -#: ../plugin/rename.php:70
  +#: ../plugin/rename.php:78
   msgid "Only WikiMaster can rename this page"
   msgstr ""
   
  -#: ../plugin/rename.php:71 ../wikilib.php:790
  +#: ../plugin/rename.php:79 ../wikilib.php:920
   msgid "with revision history"
   msgstr ""
   
  -#: ../plugin/rename.php:72
  +#: ../plugin/rename.php:80
   msgid "show only"
   msgstr ""
   
  -#: ../plugin/rename.php:74
  +#: ../plugin/rename.php:82
   msgid "Check backlinks"
   msgstr ""
   
  @@ -658,7 +881,7 @@
   msgid "Restore backuped data"
   msgstr ""
   
  -#: ../plugin/rss_rc.php:50
  +#: ../plugin/rss_rc.php:54
   msgid "show changes"
   msgstr ""
   
  @@ -674,13 +897,13 @@
   #: ../plugin/security/community.php:25 ../plugin/security/community.php:35
   #: ../plugin/security/community.php:45 ../plugin/security/mustlogin.php:24
   #: ../plugin/security/mustlogin.php:34 ../plugin/security/mustlogin.php:44
  -#: ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
  -#: ../plugin/security/needtologin.php:44
  +#: ../plugin/security/needtologin.php:28 ../plugin/security/needtologin.php:39
  +#: ../plugin/security/needtologin.php:50
   #, c-format
   msgid "You are not allowed to '%s' on this page"
   msgstr ""
   
  -#: ../plugin/security/community.php:57 ../plugin/security/htaccesslogin.php:46
  +#: ../plugin/security/community.php:60 ../plugin/security/htaccesslogin.php:46
   #: ../plugin/security/mustlogin.php:59 ../plugin/security/userbased.php:28
   #: ../plugin/security/userbased.php:36 ../plugin/security/userbased.php:44
   #: ../plugin/security/userbased.php:59 ../plugin/security/wikimaster.php:25
  @@ -752,6 +975,10 @@
   msgid "Please select a theme properly."
   msgstr ""
   
  +#: ../plugin/ticket.php:75
  +msgid "Invalid use of ticket"
  +msgstr ""
  +
   #: ../plugin/trackback.php:53
   msgid "TrackBack is not activated !"
   msgstr ""
  @@ -778,106 +1005,186 @@
   msgid "No TrackBack entry found for %s"
   msgstr ""
   
  -#: ../plugin/userform.php:29
  +#: ../plugin/userform.php:39 ../plugin/userform.php:42
   msgid "Successfully confirmed"
   msgstr ""
   
  -#: ../plugin/userform.php:30
  +#: ../plugin/userform.php:40
   msgid "Your e-mail address is confirmed successfully"
   msgstr ""
   
  -#: ../plugin/userform.php:32
  +#: ../plugin/userform.php:47
  +msgid "Your new password is confirmed successfully"
  +msgstr ""
  +
  +#: ../plugin/userform.php:49
   msgid "Confirmation missmatched !"
   msgstr ""
   
  -#: ../plugin/userform.php:33 ../plugin/userform.php:37
  +#: ../plugin/userform.php:50 ../plugin/userform.php:54
   msgid "Please try again to register your e-mail address"
   msgstr ""
   
  -#: ../plugin/userform.php:36
  +#: ../plugin/userform.php:53
   msgid "ID does not exists !"
   msgstr ""
   
  -#: ../plugin/userform.php:52 ../plugin/userform.php:114
  +#: ../plugin/userform.php:87 ../plugin/userform.php:267
   #, c-format
   msgid "Successfully login as '%s'"
   msgstr ""
   
  -#: ../plugin/userform.php:58 ../plugin/userform.php:119
  -#: ../plugin/userform.php:147
  +#: ../plugin/userform.php:93 ../plugin/userform.php:272
  +#: ../plugin/userform.php:315
   msgid "Invalid password !"
   msgstr ""
   
  -#: ../plugin/userform.php:62
  +#: ../plugin/userform.php:97
   #, c-format
   msgid "\"%s\" does not exists on this wiki !"
   msgstr ""
   
  -#: ../plugin/userform.php:64
  +#: ../plugin/userform.php:99
   msgid "Make new ID on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:70
  +#: ../plugin/userform.php:105
   msgid "Cookie deleted !"
   msgstr ""
   
  -#: ../plugin/userform.php:81 ../plugin/userform.php:135
  +#: ../plugin/userform.php:107 ../wikilib.php:1781
  +msgid "E-mail new password"
  +msgstr ""
  +
  +#: ../plugin/userform.php:118 ../plugin/userform.php:181
  +#: ../plugin/userform.php:204
  +msgid "Invalid ticket !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:120 ../plugin/userform.php:206
  +msgid "You need a ticket !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:152
  +msgid "New password confirmation"
  +msgstr ""
  +
  +#: ../plugin/userform.php:157
  +msgid "Please confirm your new password"
  +msgstr ""
  +
  +#: ../plugin/userform.php:159
  +#, c-format
  +msgid "Your new password is %s"
  +msgstr ""
  +
  +#: ../plugin/userform.php:160 ../plugin/userform.php:259
  +msgid "Please change your password later"
  +msgstr ""
  +
  +#: ../plugin/userform.php:164 ../plugin/userform.php:172
  +msgid "Fail to e-mail notification !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:167
  +msgid "New password is sent to your e-mail !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:168
  +msgid "Please check your e-mail"
  +msgstr ""
  +
  +#: ../plugin/userform.php:173
  +msgid "E-mail mismatch !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:175
  +msgid "Invalid request"
  +msgstr ""
  +
  +#: ../plugin/userform.php:176
  +msgid "Please confirm your e-mail address first !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:183
  +msgid "ID and e-mail mismatch !"
  +msgstr ""
  +
  +#: ../plugin/userform.php:185
  +msgid "Please try again or make a new profile"
  +msgstr ""
  +
  +#: ../plugin/userform.php:225 ../plugin/userform.php:303
   msgid "too short password!"
   msgstr ""
   
  -#: ../plugin/userform.php:82
  +#: ../plugin/userform.php:226
   msgid "mismatch password!"
   msgstr ""
   
  -#: ../plugin/userform.php:83 ../plugin/userform.php:139
  +#: ../plugin/userform.php:227 ../plugin/userform.php:307
   msgid "not acceptable character found in the password!"
   msgstr ""
   
  -#: ../plugin/userform.php:86
  +#: ../plugin/userform.php:230
   msgid "Your password is too simple to use as a password !"
   msgstr ""
   
  -#: ../plugin/userform.php:92 ../plugin/userform.php:163
  +#: ../plugin/userform.php:236 ../plugin/userform.php:338
   msgid "Your email address is not valid"
   msgstr ""
   
  -#: ../plugin/userform.php:96
  +#: ../plugin/userform.php:240
   msgid "Successfully added!"
   msgstr ""
   
  -#: ../plugin/userform.php:105 ../plugin/userform.php:157
  +#: ../plugin/userform.php:246
  +#, c-format
  +msgid "Successfully added as '%s'"
  +msgstr ""
  +
  +#: ../plugin/userform.php:247
  +msgid "Please check your mailbox"
  +msgstr ""
  +
  +#: ../plugin/userform.php:254 ../plugin/userform.php:332
   msgid "E-mail confirmation"
   msgstr ""
   
  -#: ../plugin/userform.php:107 ../plugin/userform.php:159
  +#: ../plugin/userform.php:256 ../plugin/userform.php:334
   msgid "Please confirm your email address"
   msgstr ""
   
  -#: ../plugin/userform.php:109 ../plugin/userform.php:161
  +#: ../plugin/userform.php:258
  +#, c-format
  +msgid "Your initial password is %s"
  +msgstr ""
  +
  +#: ../plugin/userform.php:262 ../plugin/userform.php:336
   msgid "E-mail confirmation mail sent"
   msgstr ""
   
  -#: ../plugin/userform.php:124
  +#: ../plugin/userform.php:277
   msgid "Invalid username !"
   msgstr ""
   
  -#: ../plugin/userform.php:137
  +#: ../plugin/userform.php:305
   msgid "mismatch password !"
   msgstr ""
   
  -#: ../plugin/userform.php:140 ../plugin/userform.php:148
  +#: ../plugin/userform.php:308 ../plugin/userform.php:316
   msgid "Password is not changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:142
  +#: ../plugin/userform.php:310
   msgid "Password is changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:144
  +#: ../plugin/userform.php:312
   msgid "Password is too simple to use as a password !"
   msgstr ""
   
  -#: ../plugin/userform.php:169
  +#: ../plugin/userform.php:344
   msgid "Profiles are saved successfully !"
   msgstr ""
   
  @@ -891,96 +1198,109 @@
   msgid "Whois search result for %s"
   msgstr ""
   
  -#: ../wiki.php:940
  +#: ../wiki.php:1087
   #, c-format
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1231
  -msgid "Version info does not supported by this wiki"
  +#: ../wiki.php:1380
  +msgid "Version info does not supported in this wiki"
   msgstr ""
   
  -#: ../wiki.php:1242
  +#: ../wiki.php:1391
   msgid "File does not exists"
   msgstr ""
   
  -#: ../wiki.php:2229
  +#: ../wiki.php:2274
  +msgid "Invalid ajax action."
  +msgstr ""
  +
  +#: ../wiki.php:2503
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:2229
  +#: ../wiki.php:2503
   msgid "TwinPages"
   msgstr ""
   
  -#: ../wiki.php:2877 ../locale/dummy.php:6
  +#: ../wiki.php:2508
  +msgid "See [TwinPages]:"
  +msgstr ""
  +
  +#: ../wiki.php:3193 ../locale/dummy.php:6
   msgid "EditText"
   msgstr ""
   
  -#: ../wiki.php:2879
  +#: ../wiki.php:3195
   msgid "NotEditable"
   msgstr ""
   
  -#: ../wiki.php:2881 ../locale/dummy.php:6
  +#: ../wiki.php:3197 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:2882 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:3198 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr ""
   
  -#: ../wiki.php:3113
  +#: ../wiki.php:3461
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:3360
  +#: ../wiki.php:3720
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:3361 ../wiki.php:3372
  +#: ../wiki.php:3721 ../wiki.php:3732
   msgid "Please contact WikiMasters"
   msgstr ""
   
  -#: ../wiki.php:3371
  +#: ../wiki.php:3731
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:3402 ../wiki.php:3405 ../wikilib.php:923
  +#: ../wiki.php:3762 ../wiki.php:3765 ../wikilib.php:1065
   msgid "Create this page"
   msgstr ""
   
  -#: ../wiki.php:3407 ../wikilib.php:925
  +#: ../wiki.php:3767 ../wikilib.php:1067
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
   
  -#: ../wiki.php:3407 ../wikilib.php:925
  +#: ../wiki.php:3767 ../wikilib.php:1067
   msgid "title"
   msgstr ""
   
  -#: ../wiki.php:3413
  +#: ../wiki.php:3773
   msgid " or alternativly, use one of these templates:\n"
   msgstr ""
   
  -#: ../wiki.php:3416
  +#: ../wiki.php:3776
   msgid "To create your own templates, add a page with a 'Template' suffix.\n"
   msgstr ""
   
  -#: ../wiki.php:3491
  +#: ../wiki.php:3787
  +#, c-format
  +msgid "Redirected from page \"%s\""
  +msgstr ""
  +
  +#: ../wiki.php:3864
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr ""
   
  -#: ../wiki.php:3503
  +#: ../wiki.php:3885
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:3506
  +#: ../wiki.php:3888
   msgid "Please enter the valid password"
   msgstr ""
   
  -#: ../wikilib.php:456
  +#: ../wikilib.php:526
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -997,219 +1317,316 @@
   "no trailing white space allowed after tables or titles.<br />\n"
   msgstr ""
   
  -#: ../wikilib.php:492
  +#: ../wikilib.php:564
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
  -#: ../wikilib.php:550
  +#: ../wikilib.php:645
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   
  -#: ../wikilib.php:552
  +#: ../wikilib.php:647
   msgid "To create your own templates, add a page with a 'Template' suffix."
   msgstr ""
   
  -#: ../wikilib.php:571
  +#: ../wikilib.php:650
  +msgid "Merge"
  +msgstr ""
  +
  +#: ../wikilib.php:651
  +msgid "Merge manually"
  +msgstr ""
  +
  +#: ../wikilib.php:652
  +msgid "Ignore conflicts"
  +msgstr ""
  +
  +#: ../wikilib.php:676
   msgid "Skip to preview"
   msgstr ""
   
  -#: ../wikilib.php:573
  +#: ../wikilib.php:680
   msgid "ReduceEditor"
   msgstr ""
   
  -#: ../wikilib.php:574
  +#: ../wikilib.php:681
   msgid "EnlargeEditor"
   msgstr ""
   
  -#: ../wikilib.php:578 ../locale/dummy.php:6
  +#: ../wikilib.php:685 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
  -#: ../wikilib.php:579
  +#: ../wikilib.php:687
   msgid "HelpOnEditing"
   msgstr ""
   
  -#: ../wikilib.php:602
  +#: ../wikilib.php:714
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:618
  +#: ../wikilib.php:731
   msgid "--Select Category--"
   msgstr ""
   
  -#: ../wikilib.php:632 ../wikilib.php:1338
  +#: ../wikilib.php:741
  +msgid "Minor edit"
  +msgstr ""
  +
  +#: ../wikilib.php:749 ../wikilib.php:1727 ../wikilib.php:1769
   msgid "Save"
   msgstr ""
   
  -#: ../wikilib.php:633
  +#: ../wikilib.php:750
   msgid "Summary of Change"
   msgstr ""
   
  -#: ../wikilib.php:678
  +#: ../wikilib.php:796
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:683
  +#: ../wikilib.php:801
   #, c-format
   msgid "%s is not valid action"
   msgstr ""
   
  -#: ../wikilib.php:685
  +#: ../wikilib.php:803
   msgid "Is it valid action ?"
   msgstr ""
   
  -#: ../wikilib.php:718
  +#: ../wikilib.php:848
   #, c-format
   msgid "File '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:720
  +#: ../wikilib.php:850
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr ""
   
  -#: ../wikilib.php:725
  +#: ../wikilib.php:855
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:727
  +#: ../wikilib.php:857
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr ""
   
  -#: ../wikilib.php:737 ../wikilib.php:757
  +#: ../wikilib.php:867 ../wikilib.php:887
   msgid "No files are selected !"
   msgstr ""
   
  -#: ../wikilib.php:750
  +#: ../wikilib.php:880
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
  -#: ../wikilib.php:753
  +#: ../wikilib.php:883
   msgid "Delete"
   msgstr ""
   
  -#: ../wikilib.php:754
  +#: ../wikilib.php:884
   msgid "Delete selected file"
   msgstr ""
   
  -#: ../wikilib.php:776
  +#: ../wikilib.php:905
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr ""
   
  -#: ../wikilib.php:782
  +#: ../wikilib.php:912
   msgid "Please delete this file manually."
   msgstr ""
   
  -#: ../wikilib.php:784
  +#: ../wikilib.php:914
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr ""
   
  -#: ../wikilib.php:888 ../wikilib.php:1779
  -msgid "Use more specific text"
  +#: ../wikilib.php:1119 ../wikilib.php:1223
  +#, c-format
  +msgid "Someone else saved the page while you edited %s"
   msgstr ""
   
  -#: ../wikilib.php:972
  +#: ../wikilib.php:1125
  +msgid "Section edit is not valid for non-exists page."
  +msgstr ""
  +
  +#: ../wikilib.php:1158 ../wikilib.php:1332
  +msgid "mail does not supported by default."
  +msgstr ""
  +
  +#: ../wikilib.php:1162 ../wikilib.php:1336
  +msgid "Sent notification mail."
  +msgstr ""
  +
  +#: ../wikilib.php:1164 ../wikilib.php:1338
  +msgid "No subscribers found."
  +msgstr ""
  +
  +#: ../wikilib.php:1169 ../wikilib.php:1343
  +#, c-format
  +msgid "%s is not editable"
  +msgstr ""
  +
  +#: ../wikilib.php:1171 ../wikilib.php:1345
  +#, c-format
  +msgid "%s is saved"
  +msgstr ""
  +
  +#: ../wikilib.php:1214
   msgid "Goto Editor"
   msgstr ""
   
  -#: ../wikilib.php:981
  +#: ../wikilib.php:1227
   #, c-format
  -msgid "Someone else saved the page while you edited %s"
  +msgid "%s is merged with latest contents."
   msgstr ""
   
  -#: ../wikilib.php:986 ../wikilib.php:1027
  +#: ../wikilib.php:1228
   #, c-format
  -msgid "Preview of %s"
  +msgid "%s is merged successfully"
   msgstr ""
   
  -#: ../wikilib.php:993
  -msgid "Conflict error!"
  +#: ../wikilib.php:1232
  +#, c-format
  +msgid "Merge conflicts are detected for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1021
  -msgid ""
  -"Sorry, can not save page because some messages are blocked in this wiki."
  +#: ../wikilib.php:1233
  +#, c-format
  +msgid "Merge cancelled on %s."
   msgstr ""
   
  -#: ../wikilib.php:1065
  -msgid "mail does not supported by default."
  +#: ../wikilib.php:1234
  +msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1069
  -msgid "Sent notification mail."
  +#: ../wikilib.php:1235
  +msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1071
  -msgid "No subscribers found."
  +#: ../wikilib.php:1240
  +#, c-format
  +msgid "Get merge conflicts for %s"
   msgstr ""
   
  -#: ../wikilib.php:1076
  +#: ../wikilib.php:1241
  +msgid "Please resolve conflicts manually."
  +msgstr ""
  +
  +#: ../wikilib.php:1244
   #, c-format
  -msgid "%s is not editable"
  +msgid "Force merging for %s !"
  +msgstr ""
  +
  +#: ../wikilib.php:1245
  +msgid "Please be careful, you could damage useful information."
  +msgstr ""
  +
  +#: ../wikilib.php:1257
  +msgid "Conflict error!"
   msgstr ""
   
  -#: ../wikilib.php:1078
  +#: ../wikilib.php:1294
   #, c-format
  -msgid "%s is saved"
  +msgid "Preview of %s"
   msgstr ""
   
  -#: ../wikilib.php:1102
  +#: ../wikilib.php:1369
   msgid "Nobody subscribed to this page."
   msgstr ""
   
  -#: ../wikilib.php:1119
  +#: ../wikilib.php:1386
   #, c-format
   msgid "%s page is modified"
   msgstr ""
   
  -#: ../wikilib.php:1129
  +#: ../wikilib.php:1411
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:1142
  +#: ../wikilib.php:1424
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:1146
  +#: ../wikilib.php:1429
   msgid "Mails are sent successfully"
   msgstr ""
   
  -#: ../wikilib.php:1147
  +#: ../wikilib.php:1430
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1310
  +#: ../wikilib.php:1432
  +msgid "Fail to send mail"
  +msgstr ""
  +
  +#: ../wikilib.php:1443
  +msgid "This wiki does not support sendmail"
  +msgstr ""
  +
  +#: ../wikilib.php:1536
  +msgid "Invalid regular expression !"
  +msgstr ""
  +
  +#: ../wikilib.php:1560
  +msgid "No match!"
  +msgstr ""
  +
  +#: ../wikilib.php:1563
  +msgid "Infinite loop possible!"
  +msgstr ""
  +
  +#: ../wikilib.php:1685
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:1329
  +#: ../wikilib.php:1686 ../wikilib.php:1786
  +msgid "ID"
  +msgstr ""
  +
  +#: ../wikilib.php:1707 ../wikilib.php:1779
   msgid "Make profile"
   msgstr ""
   
  -#: ../wikilib.php:1330
  +#: ../wikilib.php:1709
   msgid "password again"
   msgstr ""
   
  -#: ../wikilib.php:1341
  +#: ../wikilib.php:1711 ../wikilib.php:1749
  +msgid "Mail"
  +msgstr ""
  +
  +#: ../wikilib.php:1731
   msgid "New password"
   msgstr ""
   
  -#: ../wikilib.php:1347
  +#: ../wikilib.php:1750
  +msgid "Time Zone"
  +msgstr ""
  +
  +#: ../wikilib.php:1758
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:1786
  +#: ../wikilib.php:2112
  +msgid "Show all"
  +msgstr ""
  +
  +#: ../wikilib.php:2254
  +msgid "Contents"
  +msgstr ""
  +
  +#: ../wikilib.php:2365
   #, c-format
   msgid "Title search for \"%s\""
   msgstr ""
  
  
  


wkpark      2006/01/10 20:42:03

  Modified:    .        wiki.php
  Log:
  fixed 'fixpath'
  
  Revision  Changes    Path
  1.270     +4 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.269
  retrieving revision 1.270
  diff -u -r1.269 -r1.270
  --- wiki.php	10 Jan 2006 08:23:23 -0000	1.269
  +++ wiki.php	10 Jan 2006 11:42:03 -0000	1.270
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.269 2006/01/10 08:23:23 wkpark Exp $
  +// $Id: wiki.php,v 1.270 2006/01/10 11:42:03 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.269 $',1,-1);
  +$_revision = substr('$Revision: 1.270 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -2437,6 +2437,8 @@
       $this->url_prefix= qualifiedUrl($DBInfo->url_prefix);
       $this->prefix= qualifiedUrl($this->prefix);
       $this->imgs_dir= qualifiedUrl($this->imgs_dir);
  +    $this->imgs_dir_interwiki=qualifiedUrl($this->imgs_dir_interwiki);
  +    $this->imgs_dir_url=qualifiedUrl($this->imgs_dir_url);
     }
   
     function send_page($body="",$options=array()) {
  
  
  


wkpark      2006/01/10 20:42:18

  Modified:    .        wikilib.php
  Log:
  gettextize
  
  Revision  Changes    Path
  1.191     +9 -5      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.190
  retrieving revision 1.191
  diff -u -r1.190 -r1.191
  --- wikilib.php	10 Jan 2006 08:23:23 -0000	1.190
  +++ wikilib.php	10 Jan 2006 11:42:18 -0000	1.191
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.190 2006/01/10 08:23:23 wkpark Exp $
  +// $Id: wikilib.php,v 1.191 2006/01/10 11:42:18 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1683,12 +1683,13 @@
       $idform=$user->id;
     }
     $button=_("Login");
  +  $id_btn=_("ID");
     if ($user->id == 'Anonymous' and !isset($options['login_id']) and $value!="simple")
       $login=<<<FORM
   <form method="post" action="$url"$onsubmit>
   <input type="hidden" name="action" value="userform" />
   <table border="0">
  -  <tr><td><b>ID</b>&nbsp;</td><td>$idform</td></tr>
  +  <tr><td><b>$id_btn</b>&nbsp;</td><td>$idform</td></tr>
     <tr>
        <td><b>$passwd_btn</b>&nbsp;</td><td><input type="password" size="15" maxlength="$pw_len" name="password" value="" /></td>
     <tr><td></td><td>
  @@ -1745,9 +1746,11 @@
       }
   
       $jscript.="<script src='$DBInfo->url_prefix/local/tz.js'></script>";
  +    $email_btn=_("Mail");
  +    $tz_btn=_("Time Zone");
       $extra=<<<EXTRA
  -  <tr><td><b>Mail</b>&nbsp;</td><td><input type="text" size="40" name="email" value="$email" /></td></tr>
  -  <tr><td><b>Time Zone</b>&nbsp;</td><td><select name="timezone">
  +  <tr><td><b>$email_btn</b>&nbsp;</td><td><input type="text" size="40" name="email" value="$email" /></td></tr>
  +  <tr><td><b>$tz_btn</b>&nbsp;</td><td><select name="timezone">
     $opts
     </select> <input type='button' value='Local timezone' onclick='javascript:setTimezone()' /></td></tr>
     <tr><td><b>CSS URL </b>&nbsp;</td><td><input type="text" size="40" name="user_css" value="$css" /><br />("None" for disabling CSS)</td></tr>
  @@ -1780,13 +1783,14 @@
           "<input type=\"submit\" name=\"login\" value=\"$button2\" />\n";
       }
     }
  +  $id_btn=_("ID");
     return <<<EOF
   $login
   $jscript
   <form method="post" action="$url"$onsubmit>
   <input type="hidden" name="action" value="userform" />
   <table border="0">
  -  <tr><td><b>ID</b>&nbsp;</td><td>$idform</td></tr>
  +  <tr><td><b>$id_btn</b>&nbsp;</td><td>$idform</td></tr>
       $passwd_inp
       $passwd_hidden
       $again
  
  
  


wkpark      2006/01/10 20:50:40

  Added:       local    lineheight.js
  Log:
  add a new javascript for LineHeight macro
  
  Revision  Changes    Path
  1.1                  moniwiki/local/lineheight.js
  
  Index: lineheight.js
  ===================================================================
  /*
      based on http://www.onlinetools.org/tools/easydynfont.php
  */
  
  // and size to avoid errors
  var _defaultHeight="100%"
  var _cookie_lineheight='_MONI_LINEHEIGHT_';
  var _nosave=false;
  
  function drawform() {
      if (!document.layers){
          document.write("<div id=\"lineheightForm\">");
          document.write("[<a href=\"javascript:addHeight(10)\">+</a>|");
          document.write("<a href=\"javascript:addHeight(-10)\">-</a>]");
          document.write("</div>");
      }
  }
  /*
      function init()
      loads the cookiedata and changes the document accordingly, if there is no
      cookie, sets the standard settings and stores it
  */
  function initLineHeight(){
      if (!document.layers){
          val=getCookie(_cookie_lineheight);
          if (val!=null){
              document.getElementsByTagName("body").item(0).style.lineHeight=val;
          } else {
              document.getElementsByTagName("body").item(0).style.lineHeight=_defaultHeight;
              storeHeight()
          }
      }
      // Special setting, if you want to use the "don't save" chekbox
      //_nosave=document.dynform.nosave.checked
  }
  /*
      function addHeight(add)
      increases the lineheigth of the document by "add", negative values make the
      lineheight smaller.
  */
  function addHeight(add){
      if (!document.layers){
          doc = document.getElementsByTagName("body").item(0)
          val=parseInt(doc.style.lineHeight)+add;
          doc.style.lineHeight=val+"%";
          if (_nosave==false) storeHeight()
      }
  }
  /*
      function SetHeight(add)
      sets the lineheight of the document.
  */
  function setHeight(add){
      if (!document.layers){
          document.getElementsByTagName("body").item(0).style.lineHeight=add+"%";
          if (_nosave==false) storeHeight()
      }
  }
  
  /*
      function storeHeight()
      saves the current settings of the document in a cookie
  */
  function storeHeight(){
      var exp = new Date();
      exp.setTime(exp.getTime() + 24*60*60*90*1000);
      val=document.getElementsByTagName("body").item(0).style.lineHeight;
      setCookie(_cookie_lineheight,val,exp);
  }
  
  function setCookie(name, value, expires, path, domain, secure) {
      var curCookie = name + "=" + escape(value) +
      ((expires) ? "; expires=" + expires.toGMTString() : "") +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      ((secure) ? "; secure" : "")
      document.cookie = curCookie
  }
  
  function getCookie(name) {
      var prefix = name + "="
      var cookieStartIndex = document.cookie.indexOf(prefix)
      if (cookieStartIndex == -1)
      return null
      var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex +
      prefix.length)
      if (cookieEndIndex == -1)
      cookieEndIndex = document.cookie.length
      return unescape(document.cookie.substring(cookieStartIndex +
      prefix.length,
      cookieEndIndex))
  }
  
  initLineHeight();
  drawform();
  // vim:et:sts=4:
  
  
  


wkpark      2006/01/10 20:54:56

  Added:       plugin   LineHeight.php
  Log:
  set the line-height of the doc.
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/LineHeight.php
  
  Index: LineHeight.php
  ===================================================================
  <?php
  // Copyright 2006 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a sample plugin for the MoniWiki
  //
  // Usage: [[LineHeight]]
  //   or set $extra_macros=array('LineHeight'); in the config.php
  //
  // $Id: LineHeight.php,v 1.1 2006/01/10 11:54:55 wkpark Exp $
  
  function macro_LineHeight($formatter,$value) {
      global $DBInfo;
  
      if ($value != 'nocss')
          print <<<CSS
  <style type="text/css">
  <!--
  #lineheightForm {
    display: block;
    text-align:right;
    position: fixed;
    filter:alpha(opacity=25);-moz-opacity:.25;opacity:.25;
    top: 0px;
    left: 1px;
    right: 1px;
    height: 1em;
    z-index: 1;
    overflow: hidden;
    background-color: #e0e0e0;
  
    padding: 2px;
    padding-right:20px;
  }
  //-->
  </style>
  CSS;
      return "<script type='text/javascript' src='".$DBInfo->url_prefix.'/local/lineheight.js'."'></script>\n";
  }
  
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2006/01/10 21:25:45

  Modified:    imgs/smile alert.png idea.png
  Added:       imgs/smile $-).png %-).png %-^.png (8(.png (8)-).png --.png
                        -L-.png 8'-(.png 8).png 8-$.png 8-(.png 8-).png
                        8-9.png 8-@.png 8-D.png 8-S.png 8-SS.png 8-T.png
                        8-b.png 8-l.png 8-ll.png 8-o.png 8-p.png
                        8-question.png 8-v.png 8-x.png 8^).png 8_).png
                        8star).png 8v.png ;-).png =).png @(.png @-).png
                        B).png B-).png BD.png ^^.png attention.png end.png
                        l-l.png thumb-down.png thumb-up.png v8(.png v8D.png
                        v8v.png x-(.png
  Log:
  update smiley
  
  Revision  Changes    Path
  1.2       +3 -3      moniwiki/imgs/smile/alert.png
  
  	<<Binary file>>
  
  
  1.2       +1 -1      moniwiki/imgs/smile/idea.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/$-).png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/%-).png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/%-^.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/(8(.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/(8)-).png
  
  	<<Binary file>>
  
  
                       
  
  	<<Binary file>>
  
  
                       
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/8'-(.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/8).png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/8-$.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/8-(.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/8-).png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/8-9.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/8-@.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/8-D.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/8-S.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/8-SS.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/8-T.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/8-b.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/8-l.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/8-ll.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/8-o.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/8-p.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/8-question.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/8-v.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/8-x.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/8^).png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/8_).png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/8star).png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/8v.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/;-).png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/=).png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/@(.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/@-).png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/B).png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/B-).png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/BD.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/^^.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/attention.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/end.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/l-l.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/thumb-down.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/thumb-up.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/v8(.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/v8D.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/v8v.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/smile/x-(.png
  
  	<<Binary file>>
  
  


wkpark      2006/01/10 21:27:59

  Modified:    .        wikismiley.php
  Log:
  update with new png smileys
  
  Revision  Changes    Path
  1.9       +49 -45    moniwiki/wikismiley.php
  
  Index: wikismiley.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikismiley.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- wikismiley.php	7 Sep 2005 12:29:07 -0000	1.8
  +++ wikismiley.php	10 Jan 2006 12:27:59 -0000	1.9
  @@ -1,56 +1,58 @@
   <?php
  -# $Id: wikismiley.php,v 1.8 2005/09/07 12:29:07 wkpark Exp $
  +# $Id: wikismiley.php,v 1.9 2006/01/10 12:27:59 wkpark Exp $
   $smileys=array(
  -    "X-("=> array(16, 16, 0, "smile/x-(.gif"),
  -    ":D"=>  array(16, 16, 0, "smile/8-D.gif"),
  -    "&lt;:("=> array(16, 16, 0, "smile/(8(.gif"),
  -    ":o"=>  array(16, 16, 0, "smile/8-O.gif"),
  -    ":("=>  array(16, 16, 0, "smile/8-(.gif"),
  -    ":)"=>  array(16, 16, 0, "smile/8).gif"),
  -    ":))"=> array(16, 16, 0, "smile/8-)).gif"),
  -    ":-("=> array(16, 16, 0, "smile/8-(.gif"),
  -    ":-)"=> array(16, 16, 0, "smile/8-).gif"),
  -    ":-))"=>array(16, 16, 0, "smile/8-)).gif"),
  -    ":-(=)"=>array(16, 16, 0, "smile/8-lll.gif"),
  -    "B)"=>  array(16, 16, 0, "smile/B-).gif"),
  -    "B-)"=> array(16, 16, 0, "smile/B-).gif"),
  -    ";)"=>  array(16, 16, 0, "smile/;-).gif"),
  -    ";-)"=> array(16, 16, 0, "smile/;-).gif"),
  +    ":)"=>  array(16, 16, 0, "smile/8).png"),
  +    ":-)"=> array(16, 16, 0, "smile/8-).png"),
  +    ":))"=> array(16, 16, 0, "smile/8-o.png"),
  +    ":-))"=>array(16, 16, 0, "smile/8-o.png"),
  +    ":D"=>  array(16, 16, 0, "smile/8-D.png"),
  +    ":o"=>  array(16, 16, 0, "smile/8-o.png"),
  +    "&lt;:("=> array(16, 16, 0, "smile/(8(.png"),
  +    ":("=>  array(16, 16, 0, "smile/8-(.png"),
  +    ":-("=> array(16, 16, 0, "smile/8-(.png"),
  +    "X-("=> array(16, 16, 0, "smile/x-(.png"),
  +#    ":-(=)"=>array(16, 16, 0, "smile/8-lll.gif"),
  +    "B)"=>  array(16, 16, 0, "smile/B).png"),
  +    "B-)"=> array(16, 16, 0, "smile/B).png"),
  +    ";)"=>  array(16, 16, 0, "smile/;-).png"),
  +    ";-)"=> array(16, 16, 0, "smile/;-).png"),
   #    ";|"=>  array(16, 16, 0, "smile/;-l.gif"),
  -    ":I"=>  array(16, 16, 0, "smile/8-I.gif"),
  -    ":|"=>  array(16, 16, 0, "smile/8-l.gif"),
  -    "|)"=>  array(16, 16, 0, "smile/l-l.gif"),
  -    "|-)"=> array(16, 16, 0, "smile/l-l.gif"),
  -    "|-I"=> array(16, 16, 0, "smile/l-I.gif"),
  -    "/!\\"=>array(15, 15, 0, "smile/alert.gif"),
  +#    ":I"=>  array(16, 16, 0, "smile/8-I.gif"),
  +    ":|"=>  array(16, 16, 0, "smile/8-l.png"),
  +    "|)"=>  array(16, 16, 0, "smile/l-l.png"),
  +    "|-)"=> array(16, 16, 0, "smile/l-l.png"),
  +#    "|-I"=> array(16, 16, 0, "smile/l-I.gif"),
  +    "/!\\"=>array(15, 15, 0, "smile/alert.png"),
       "\\?/"=>array(16, 16, 0, "smile/icon-question.png"),
  -    "&lt;!>"=> array(15, 15, 0, "smile/attention.gif"),
  +    "&lt;!>"=> array(15, 15, 0, "smile/attention.png"),
       "(!)"=> array(16, 16, 0, "smile/idea.png"),
   
   #    ":&"=>  array(16, 16, 0, "smile/8-%26.gif"),
  -    ":-X"=> array(16, 16, 0, "smile/8-x.gif"),
  -    ":-@"=> array(16, 16, 0, "smile/8-@.gif"),
  -    ":p"=>  array(16, 16, 0, "smile/8-p.gif"),
  -    ":^)"=> array(16, 16, 0, "smile/8^).gif"),
  -    ":_)"=> array(16, 16, 0, "smile/8_).gif"),
  +    ":-X"=> array(16, 16, 0, "smile/8-x.png"),
  +    ":-@"=> array(16, 16, 0, "smile/8-@.png"),
  +    ":p"=>  array(16, 16, 0, "smile/8-p.png"),
  +    ":b"=>  array(16, 16, 0, "smile/8-b.png"),
  +    ":9"=>  array(16, 16, 0, "smile/8-9.png"),
  +    ":^)"=> array(16, 16, 0, "smile/8^).png"),
  +    ":_)"=> array(16, 16, 0, "smile/8_).png"),
   #    ":v)"=> array(16, 16, 0, "smile/8v).gif"),
  -    ":*)"=> array(16, 16, 0, "smile/8star).gif"),
  -    "$-)"=> array(16, 16, 0, "smile/%24-).gif"),
  -    ":-$"=> array(16, 16, 0, "smile/8-%24.gif"),
  +    ":*)"=> array(16, 16, 0, "smile/8star).png"),
  +    "$-)"=> array(16, 16, 0, "smile/%24-).png"),
  +    ":-$"=> array(16, 16, 0, "smile/8-%24.png"),
   #    "=)"=> array(16, 16, 0, "smile/=).gif"),
  -    ":-?"=> array(16, 16, 0, "smile/8-question.gif"),
  -    ":\\"=> array(16, 16, 0, "smile/8-ll.gif"),
  -    ">:>"=> array(16, 16, 0, "smile/v8v.gif"),
  -    "%-)"=> array(16, 16, 0, "smile/%25-).gif"),
  +    ":-?"=> array(16, 16, 0, "smile/8-question.png"),
  +    ":\\"=> array(16, 16, 0, "smile/8-ll.png"),
  +    ">:>"=> array(16, 16, 0, "smile/v8v.png"),
  +    "%-)"=> array(16, 16, 0, "smile/%25-).png"),
   #    "%)"=> array(16, 16, 0, "smile/%25-).gif"),
   #    "%-6"=> array(16, 16, 0, "smile/%25-6.gif"),
   #    "%-9"=> array(16, 16, 0, "smile/%25-9.gif"),
   #    "=)"=> array(16, 16, 0, "smile/=).gif"),
   #    ":'-)"=> array(16, 16, 0, "smile/8%27-).gif"),
   #    ":'-("=>array(16, 16, 0, "smile/8%27-(.gif"),
  -    ":-S"=>array(16, 16, 0, "smile/8-S.gif"),
  +    ":-S"=>array(16, 16, 0, "smile/8-S.png"),
   #    ":-Q"=>array(16, 16, 0, "smile/8-Q.gif"),
  -    ":->"=>array(16, 16, 0, "smile/8-v.gif"),
  +    ":->"=>array(16, 16, 0, "smile/8-v.png"),
   #    ":-]"=>array(16, 16, 0, "smile/8-].gif"),
   #    "[:-)"=>array(16, 16, 0, "smile/[8-).gif"),
   #    ":-["=>array(16, 16, 0, "smile/8-[.gif"),
  @@ -58,14 +60,15 @@
   #    "[:]"=>array(16, 16, 0, "smile/[8].gif"),
   #    ":^)"=>array(16, 16, 0, "smile/8^).gif"),
   #    ":v)"=>array(16, 16, 0, "smile/8).gif"),
  -    "@)"=>array(16, 16, 0, "smile/@-).gif"),
  +    "@)"=>array(16, 16, 0, "smile/@-).png"),
   #    ":-|"=>array(16, 16, 0, "smile/8-l.gif"),
  -    "%-^"=>array(16, 16, 0, "smile/%25-^.gif"),
  -#    "(:)-)"=>array(16, 16, 0, "smile/(8)-).gif"),
  +    "%-^"=>array(16, 16, 0, "smile/%25-^.png"),
  +    "-L-"=> array(16, 16, 0, "smile/-L-.png"),
  +    "(:)-)"=>array(16, 16, 0, "smile/(8)-).png"),
   #    ",-)"=>array(16, 16, 0, "smile/,-).gif"),
  -    "-_-"=>array(16, 16, 0, "smile/--.gif"),
  +    "-_-"=>array(16, 16, 0, "smile/--.png"),
       ";;"=>array(7, 16, 0, "smile/;;.gif"),
  -    "^^"=>array(16, 16, 0, "smile/^^.gif"),
  +    "^^"=>array(16, 16, 0, "smile/^^.png"),
   #    "^8l"=>array(16, 16, 0, "smile/^8l.gif"),
   #    "~8)"=>array(16, 16, 0, "smile/~8).gif"),
   #    "=:-)"=>array(16, 16, 0, "smile/=8-).gif"),
  @@ -73,7 +76,7 @@
   #    "=8-O"=>array(16, 16, 0, "smile/=88O.gif"),
   #    ":v"=>array(16, 16, 0, "smile/8v.gif"),
   #    ":-{}"=>array(16, 16, 0, "smile/8-{}.gif"),
  -    ":-9"=>array(16, 16, 0, "smile/8-9.gif"),
  +    ":-9"=>array(16, 16, 0, "smile/8-9.png"),
   #    ":-||"=>array(16, 16, 0, "smile/8-lll.gif"),
   #    ":-*"=>array(16, 16, 0, "smile/8-star.gif"),
   #    ":-T"=>array(16, 16, 0, "smile/8-T.gif"),
  @@ -84,8 +87,9 @@
       # version 1.0
       "(./)"=>array(16, 16, 0, "smile/checkbox.png"),
       "(V)"=>array(16, 16, 0, "smile/checkmark.png"),
  -    "{OK}"=>array(12, 16, 0, "smile/thumb-up.gif"),
  -    "{NO}"=>array(12, 16, 0, "smile/thumb-down.gif"),
  +    "{OK}"=>array(12, 16, 0, "smile/thumb-up.png"),
  +    "{NO}"=>array(12, 16, 0, "smile/thumb-down.png"),
  +    "{END}"=>array(15, 15, 0, "smile/end.png"),
       "{X}"=>array(16, 16, 0, "smile/icon-error.png"),
       "{*}"=>array(15, 15, 0, "smile/star_on.png"),
       "{o}"=>array(15, 15, 0, "smile/star_off.png"),
  
  
  


wkpark      2006/01/10 21:29:38

  Modified:    css      _base.css
  Log:
  update
  
  Revision  Changes    Path
  1.3       +33 -5     moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- _base.css	3 Jan 2006 13:25:54 -0000	1.2
  +++ _base.css	10 Jan 2006 12:29:38 -0000	1.3
  @@ -194,10 +194,15 @@
     font-size:28px;
     font-weight:bold;
     text-decoration: none;
  +  display:block;
  +}
  +
  +.clear {
  +  clear:both;
   }
   
   /* HierarchicalWiki */
  -div.wikiGroup {
  +.wikiGroup {
     font-family:Tahoma,Lucida,sans-serif;
     font-size:10px;
   }
  @@ -208,8 +213,8 @@
     padding-bottom: 5px;
   }
   
  -#wikiContent {
  -  margin: 10px 10px 10px 20px; 
  +#wikiBody {
  +  margin: 10px 10px 10px 15px; 
   }
   
   #wikiFooter {
  @@ -267,7 +272,7 @@
   div.blog { width:90%; padding: 0em 1em 0em 1em; }
   div.blog-user { font-size:10px; }
   div.blog-title { font-size:16px; font-weight:bold; }
  -div.blog-comments { padding: 1em 1em 1em 2em; border-left: 1px dashed #7B9AC5; background-color:#DFF0FF;}
  +div.blog-comments { padding: 1em 1em 1em 2em;}
   
   div.blog-date { font-size:18px; font-weight:bold; padding-bottom:5px;}
   span.blog-user { font-size:10px; }
  @@ -320,7 +325,30 @@
   .pageNext { float: right; }
   .pagePrev { float: left; }
   
  -#wikiResize { float: right; }
  +#wikiHelper {
  +  padding: 15px;
  +  border: 2px solid red;
  +  text-align: left;
  +  margin: 5px auto;
  +  width:430px;
  +}
  +
  +#wikiResize {
  +  float: right;
  +  padding-right:10px;
  +}
  +
  +#smileyChooser {
  +  padding: 5px;
  +  margin-top:3px;
  +  margin-bottom:3px;
  +  background-color: #d0d0d0;
  +}
  +
  +#smileyChooser img {
  +  padding: 2px;
  +  border: none;
  +}
   
   #blogCategory ul {
     list-style:none;
  
  
  


wkpark      2006/01/12 01:04:58

  Modified:    plugin   dot.php Tour.php Keywords.php FullSearch.php
                        FastSearch.php
  Log:
  more fixes for Keyword tagging system
  
  Revision  Changes    Path
  1.7       +10 -9     moniwiki/plugin/dot.php
  
  Index: dot.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/dot.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- dot.php	10 Jan 2006 08:24:57 -0000	1.6
  +++ dot.php	11 Jan 2006 16:04:58 -0000	1.7
  @@ -1,9 +1,9 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2006 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // dot action plugin for the MoniWiki
   //
  -// $Id: dot.php,v 1.6 2006/01/10 08:24:57 wkpark Exp $
  +// $Id: dot.php,v 1.7 2006/01/11 16:04:58 wkpark Exp $
   
   define(DEPTH,3);
   define(LEAFCOUNT,2);
  @@ -12,24 +12,25 @@
   class LinkTree {
     var $cache=null;
     function LinkTree($arena='pagelinks') {
  -    if ($arena != 'pagelinks' and $arena != 'keywords')
  +    if (!in_array($arena,array('pagelinks','backlinks','keywords','keylinks')))
         $arena = 'pagelinks';
       $this->cache=new Cache_text($arena);
     }
   
     function getLeafs($pagename,&$node,&$color,$depth,$count=LEAFCOUNT) {
  -    $links=$this->cache->fetch($pagename);
  -    $links=explode("\n",$links);
  +    $links=unserialize($this->cache->fetch($pagename));
  +    if (!is_array($links)) $links=array();
       foreach ($links as $page) {
         if (!$color[$page]) $color[$page]=$depth;
         if ($page) {
           if (!$node[$page]) {
             $leafs=$this->cache->fetch($page);
             if ($leafs) {
  -            $leafs=explode("\n",$leafs);
  +            $leafs=unserialize($leafs);
               # XXX 
               $nodelink[$page]=sizeof($leafs);
  -          }
  +          } else
  +          $nodelink[$page]=1;
           } else $nodelink[$page]=1;
         }
       }
  @@ -45,8 +46,8 @@
         $this->getLeafs($pagename,$node,$color,$depth,$count);
         if ($node[$pagename]) {
           # select 25% of links
  -        $size= (int) (sizeof($node[$pagename]) * 0.25);
  -        $slice= ($size > $count) ? $size: $count;
  +        $slice= max((int) (sizeof($node[$pagename]) * 0.25),$count);
  +        #$slice= ($size > $count) ? $size: $count;
           $selected=array_slice($node[$pagename],0,$slice);
           foreach($selected as $leaf)
             $this->makeTree($leaf,$node,$color,$depth,$count);
  
  
  
  1.7       +56 -7     moniwiki/plugin/Tour.php
  
  Index: Tour.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Tour.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- Tour.php	10 Jan 2006 08:24:57 -0000	1.6
  +++ Tour.php	11 Jan 2006 16:04:58 -0000	1.7
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Tour]]
   //
  -// $Id: Tour.php,v 1.6 2006/01/10 08:24:57 wkpark Exp $
  +// $Id: Tour.php,v 1.7 2006/01/11 16:04:58 wkpark Exp $
   
   if (!function_exists('do_dot'))
       if ($pn=getPlugin('dot')) include_once("plugin/$pn.php");
  @@ -27,7 +27,49 @@
   define(TOUR_LEAFCOUNT,4);
   define(TOUR_DEPTH,3);
   
  +    $args=explode(',',$value);
  +
  +    $value='';
  +    $arena='';
  +    foreach ($args as $arg) {
  +        $arg=trim($arg);
  +        if (($p=strpos($arg,'='))!==false) {
  +            $k=strtok($arg,'=');
  +            $v=strtok('');
  +            if ($k=='arena') $arena=$v;
  +        } else {
  +            $value=$arg;
  +        }
  +    }
  +    $query='';
  +    if ($options['arena'] or $arena) {
  +        $options['arena']=$arena ? $arena:$options['arena'];
  +        $query='&amp;arena='.$options['arena'];
  +        $arena=$options['arena'];
  +    }
  +
  +    $head='';
       if (!$value) $value=$formatter->page->name;
  +    else if ($value != $formatter->page->name)
  +
  +    if ($arena == 'backlinks') {
  +        $head2=_("BackLinks");
  +        $link=$formatter->link_tag(htmlspecialchars($value));
  +    } else if ($arena == 'keylinks' or $arena == 'keywords') {
  +        $query2='?action=fullsearch&amp;keywords=1';
  +        $head2=_("Keywords");
  +        if ($DBInfo->hasPage($value)) {
  +        } else {
  +            $link=$formatter->link_to('?action=fullsearch&amp;value='.$value,htmlspecialchars($value));
  +        }
  +    }
  +
  +    if ($head2)
  +        $head=sprintf(_(" from %s"),$link);
  +    
  +    if ($head)
  +        $head=sprintf(_("%s Tour %s"),$head2,$head);
  +    $head='<h2>'.$head.'</h2>';
   
       if ($options['w'] and $options['w'] < 10) $count=$options['w'];
       else $count=TOUR_LEAFCOUNT;
  @@ -37,7 +79,9 @@
       $color=array();
   
       $tree=new LinkTree($options['arena']);
  +
       $tree->makeTree($value,$node,$color,$depth,$count);
  +
       if (!$node) $node=array($value=>array());
   
       $allnode=array_keys($node);
  @@ -65,16 +109,21 @@
       }
       unset($out[0]);
       $wide= $formatter->link_tag($url[$value],
  -        "?action=tour&amp;w=".($count+1)."&amp;d=$depth",_("links"));
  +        "?action=tour$query&amp;w=".($count+1)."&amp;d=$depth",_("links"));
       $deep= $formatter->link_tag($url[$value],
  -        "?action=tour&amp;w=$count&amp;d=".($depth+1),_("deeper"));
  +        "?action=tour$query&amp;w=$count&amp;d=".($depth+1),_("deeper"));
       $link='<h3>'.sprintf(_("More %s or more %s"),$wide,$deep).'</h3>';
   
       foreach ($allnode as $node) {
  -        $pages.='<li>'.$formatter->link_tag($url[$node],"",
  +        $pages.='<li>'.$formatter->link_tag($url[$node],$query2,
               htmlspecialchars($node))."</li>\n";
       }
  -    $title='<h3>'.sprintf(_("Total %d related pages"),sizeof($allnode)).'</h3>';
  +    if ($arena == 'keywords' or $arena == 'keylinks')
  +        $title=
  +        '<h3>'.sprintf(_("Total %d related keywords"),sizeof($allnode)).'</h3>';
  +    else
  +        $title=
  +        '<h3>'.sprintf(_("Total %d related pages"),sizeof($allnode)).'</h3>';
   
       $out=array();
       $dep=1;
  @@ -83,13 +132,13 @@
           $temp='';
           foreach ($ls as $leaf) {
               $temp.= ' <li>'.$formatter->link_tag($url[$leaf],
  -                "?action=tour",$leaf)."</li>\n";
  +                "?action=tour$query",$leaf)."</li>\n";
           }
           $out[]="<ul class='depth-$dep'>".$temp.'</ul>';
           $dep++;
       }
       $ret=implode("\n",$out);
  -    $ret='<div class="tourLeft">'.$link.$ret.'</div>'.
  +    $ret=$head.'<div class="tourLeft">'.$link.$ret.'</div>'.
           "<div class=\"tourRight\">$title<ol>$pages</ol></div>\n".
           "<div class=\"tourFoot\"></div>\n";
   
  
  
  
  1.8       +70 -13    moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Keywords.php	8 Sep 2005 12:29:01 -0000	1.7
  +++ Keywords.php	11 Jan 2006 16:04:58 -0000	1.8
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a 'Keywords' plugin for the MoniWiki
   //
  -// $Id: Keywords.php,v 1.7 2005/09/08 12:29:01 wkpark Exp $
  +// $Id: Keywords.php,v 1.8 2006/01/11 16:04:58 wkpark Exp $
   
   define(LOCAL_KEYWORDS,'LocalKeywords');
   
  @@ -68,7 +68,7 @@
   
       // strip macros, entities
       $raw=preg_replace("/&[^;\s]+;|\[\[[^\[]+\]\]/",' ',$raw);
  -    $raw=preg_replace("/([;\"',`\\\\\/\.:@#\!\?\$%\^&\*\(\)\{\}\[\]\-_\+=\|])/",
  +    $raw=preg_replace("/([;\"',`\\\\\/\.:@#\!\?\$%\^&\*\(\)\{\}\[\]\-_\+=\|<>])/",
           ' ', strip_tags($raw.' '.$pagename)); // pagename also
       $raw=preg_replace("/((?<=[a-z0-9]|[B-Z]{2})([A-Z][a-z]))/"," \\1",$raw);
       $raw=strtolower($raw);
  @@ -147,8 +147,8 @@
       if ($options['all']) {
           $cache=new Cache_text('keywords');
           if ($cache->exists($pagename)) {
  -            $keytext=$cache->fetch($pagename);
  -            $keys=explode("\n",rtrim($keytext));
  +            $keys=$cache->fetch($pagename);
  +            $keys=unserialize($keys);
           } else
               $keys=array();
           foreach ($keys as $key) {
  @@ -176,7 +176,7 @@
       $max=current($fact);
       $min=max(1,end($fact));
       // make font-size style
  -    $fz=sizeof($fact);
  +    $fz=max(sizeof($fact),2);
       $sty=array();
       $fsh=(MAX_FONT_SZ-MIN_FONT_SZ)/($fz-1);
       $fs=MAX_FONT_SZ; // max font-size:24px;
  @@ -193,7 +193,7 @@
       if (!isset($tag_link)) {
           if ($search_type=='full') $search='fullsearch';
           else if ($search_type=='title') $search='titlesearch';
  -        else $search='fullsearch&amp;keywords=1';
  +        else $search='fullsearch&amp;keyword=1';
           $tag_link=$formatter->link_url(_rawurlencode($pagename),
               '?action='.$search.'&amp;value=$TAG');
       }
  @@ -257,6 +257,52 @@
           do_invalid($formatter,$options);
           return;
       }
  +    if ($options['refresh']) {
  +        $lk=$DBInfo->getPage(LOCAL_KEYWORDS);
  +        if (!$lk->exists()) {
  +            return 'not found';
  +        }
  +        $raw=$lk->get_raw_body();
  +
  +        # update keylinks of LocalKeywords
  +        $kc=new Cache_text('keylinks');
  +        $lines=explode("\n",$raw);
  +        $formatter->send_header("Content-type: text/plain");
  +        foreach ($lines as $l) {
  +            $l=trim($l);
  +            if ($l[0] == '#' or !$l) continue;
  +            $ws=preg_split('/((?<!\S)(["\'])[^\2]+?\2(?!\S)|\S+)/',
  +                $l,-1,
  +                PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);
  +            $ws=array_flip(array_unique($ws));
  +            unset($ws['"']); // delete delims
  +            unset($ws["'"]);
  +            unset($ws[' ']);
  +            $ws=array_flip($ws);
  +            $ws= array_map(create_function('$a',
  +                'return preg_replace("/^([\"\'])(.*)\\\\1$/","\\\\2",$a);'),
  +                $ws); // delete ",'
  +            $ws=array_unique($ws);
  +            foreach ($ws as $k) {
  +                $rels=array_diff($ws,array($k));
  +                $krels=unserialize($kc->fetch($k));
  +                if (is_array($krels)) {
  +                    if (($nrels=array_diff($rels,$krels))) {
  +                        $rs=array_unique(array_merge($nrels,$krels));
  +                        $kc->update($k,serialize($rs));
  +                        print "***** updated $k\n";
  +                    }
  +                } else {
  +                    if (is_array($rels)) {
  +                        $kc->update($k,serialize($rels));
  +                        print "***** save $k\n";
  +                    }
  +                }
  +            }
  +        }
  +        print "OK";
  +        return;
  +    }
   
       $formatter->send_header('',$options);
   
  @@ -326,13 +372,23 @@
           $keys=$options['key'];
           $keys=array_flip($keys);
           unset($keys['']);
  -        $cache->update($page,$keys);
  +        $cache->update($page,serialize($keys));
  +
  +        # update 'keylinks' caches
  +        $kc=new Cache_text('keylinks');
  +        foreach ($options['key'] as $k) {
  +            $kv=unserialize($kc->fetch($k));
  +            if (!in_array($page,$kv)) {
  +                $kv[]=$page;
  +                $kc->update($k,serialize($kv));
  +            }
  +        }
   
           $raw="#format plain"; 
  -        $p=$DBInfo->getPage(LOCAL_KEYWORDS);
  -        if (!$p->exists()) $dict=array();
  +        $lk=$DBInfo->getPage(LOCAL_KEYWORDS);
  +        if (!$lk->exists()) $dict=array();
           else {
  -            $raw=$p->get_raw_body();
  +            $raw=$lk->get_raw_body();
               $raw=rtrim($raw);
               $lines=explode("\n",$raw);
               $body='';
  @@ -344,11 +400,12 @@
               $dict=explode("\n",$body);
           }
           $nkeys=array_diff(array_values($options['key']),$dict);
  +        $modi=0;
           if (!empty($nkeys)) {
               sort($nkeys);
  -            $raw.="\n".implode("\n",$nkeys);
  -            $p->write($raw);
  -            $DBInfo->savePage($p,"New keywords are added",$options);
  +            $raw.="\n".implode("\n",$nkeys)."\n";
  +            $lk->write($raw);
  +            $DBInfo->savePage($lk,"New keywords are added",$options);
           }
   
           $formatter->send_title(sprintf(_("Keywords for %s are updated"),
  
  
  
  1.15      +46 -32    moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- FullSearch.php	10 Jan 2006 10:35:28 -0000	1.14
  +++ FullSearch.php	11 Jan 2006 16:04:58 -0000	1.15
  @@ -3,13 +3,14 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
   //
  -// $Id: FullSearch.php,v 1.14 2006/01/10 10:35:28 wkpark Exp $
  +// $Id: FullSearch.php,v 1.15 2006/01/11 16:04:58 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
     $ret=&$options;
   
     $options['value']=_stripslashes($options['value']);
  +  if (!$options['value']) $options['value']=$formatter->page->name;
     if ($options['backlinks'])
       $title= sprintf(_("BackLinks search for \"%s\""), $options['value']);
     else if ($options['keywords'])
  @@ -23,17 +24,23 @@
   
     print $out;
   
  +  $qext='';
  +  if ($options['backlinks'])
  +    $qext='&amp;backlinks=1';
  +  else if ($options['keywords'])
  +    $qext='&amp;keywords=1';
  +
     if ($options['value']) {
       $val=htmlspecialchars($options['value']);
       printf(_("Found %s matching %s out of %s total pages")."<br />",
            $ret['hits'],
           ($ret['hits'] == 1) ? _("page") : _("pages"),
            $ret['all']);
  -    if (!$options['context']) {
  -      $tag=$formatter->link_to("?action=fullsearch&amp;value=$val&amp;context=20",_("Context search."));
  -      printf(_(" or %s").'<br />',$tag);
  +    if ($ret['context']==0) {
  +      $tag=$formatter->link_to("?action=fullsearch&amp;value=$val&amp;context=20",_("Show Context."));
  +      print $tag.'<br />';
       }
  -    $tag=$formatter->link_to("?action=fullsearch&amp;value=$val&amp;refresh=1",_("Refresh"));
  +    $tag=$formatter->link_to("?action=fullsearch$qext&amp;value=$val&amp;refresh=1",_("Refresh"));
       printf(_(" (%s search results)"),$tag);
     }
     $args['noaction']=1;
  @@ -115,14 +122,25 @@
     }
   
     $hits = array();
  +
  +  # set arena and sid
  +  if ($opts['backlinks']) $arena='backlinks';
  +  #else if ($opts['keywords']) $arena='keylinks';
  +  else $arena='fullsearch';
  +
  +  if ($arena == 'fullsearch') $sid=md5($value);
  +  else $sid=$value;
  +
     # retrieve cache
  -  $sid=md5($formatter->page->name.'.FullSearch('.$value.')');
  -  $fc=new Cache_text('fullsearch');
  +  $fc=new Cache_text($arena);
     if (!$formatter->refresh and $fc->exists($sid)) {
       $data=unserialize($fc->fetch($sid));
       if (is_array($data)) {
         $hits=$data;
       }
  +    if ($arena != 'fullsearch') {
  +      $hits=array_count_values($hits);
  +    }
     }
   
     $pattern = '/'.$needle.'/';
  @@ -138,35 +156,27 @@
       //continue;
     } else if ($opts['backlinks']) {
        $pages = $DBInfo->getPageLists();
  -     $opts['context']=0; # turn off context-matching
  +     $opts['context']=-1; # turn off context-matching
        $cache=new Cache_text("pagelinks");
        foreach ($pages as $page_name) {
  -       $links==-1;
  -       $links=$cache->fetch($page_name);
  -       if ($links==-1) {
  -          $p= new WikiPage($page_name);
  -          $f= new Formatter($p);
  -          $links=$f->get_pagelinks();
  -       }
  -       $count= preg_match_all($pattern, $links, $matches);
  -       if ($count) {
  -         $hits[$page_name] = $count;
  +       $links=unserialize($cache->fetch($page_name));
  +       if (is_array($links)) {
  +         if (stristr(implode(' ',$links),$needle))
  +           $hits[$page_name] = -1;
  +           // ignore count if < 0
          }
        }
     } else if ($opts['keywords']) {
        $pages = $DBInfo->getPageLists();
  -     $opts['context']=0; # turn off context-matching
  +     $opts['context']=-1; # turn off context-matching
        $cache=new Cache_text("keywords");
        foreach ($pages as $page_name) {
  -       $links==-1;
  -       $links=$cache->fetch($page_name);
  -       if ($links==-1) {
  -          $links=array();
  -          continue;
  -       }
  -       $count= preg_match_all($pattern, $links, $matches);
  -       if ($count) {
  -         $hits[$page_name] = $count;
  +       $links=unserialize($cache->fetch($page_name));
  +       #print_r($links);
  +       if (is_array($links)) {
  +         if (stristr(implode(' ',$links),$needle))
  +           $hits[$page_name] = -1;
  +           // ignore count if < 0
          }
        }
     } else {
  @@ -182,9 +192,12 @@
          }
        }
     }
  -  arsort($hits);
  +  krsort($hits);
   
  -  $fc->update($sid,serialize($hits));
  +  if ($arena == 'fullsearch')
  +    $fc->update($sid,serialize($hits));
  +  else
  +    $fc->update($sid,serialize(array_keys($hits)));
   
     $out.= "<!-- RESULT LIST START -->"; // for search plugin
     $out.= "<ul>";
  @@ -197,8 +210,9 @@
       $out.= '<li>'.$checkbox.$formatter->link_tag(_rawurlencode($page_name),
             '?action=highlight&amp;value='._urlencode($needle),
             $page_name,'tabindex="'.$idx.'"');
  -    $out.= ' . . . . ' . $count . (($count == 1) ? ' match' : ' matches');
  -    if ($opts['context']) {
  +    if ($count > 0)
  +      $out.= ' . . . . ' . $count . (($count == 1) ? ' match' : ' matches');
  +    if ($opts['context']>0) {
         # search matching contexts
         $p = new WikiPage($page_name);
         if ($p->exists()) {
  
  
  
  1.10      +4 -4      moniwiki/plugin/FastSearch.php
  
  Index: FastSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FastSearch.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- FastSearch.php	21 Sep 2005 17:28:03 -0000	1.9
  +++ FastSearch.php	11 Jan 2006 16:04:58 -0000	1.10
  @@ -13,7 +13,7 @@
   //
   // Usage: [[FastSearch(string)]]
   //
  -// $Id: FastSearch.php,v 1.9 2005/09/21 17:28:03 wkpark Exp $
  +// $Id: FastSearch.php,v 1.10 2006/01/11 16:04:58 wkpark Exp $
   
   include_once('lib/search.DBA.php');
   
  @@ -41,13 +41,13 @@
   EOF;
   
     if (!$needle) { # or blah blah
  -     $opts['msg'] = 'No search text';
  +     $opts['msg'] = _("No search text");
        return $form;
     }
   
     $DB=new IndexDB_dba('fullsearch',"r",$DBInfo->dba_type);
     if ($DB->db==null) {
  -    $opts['msg']="Couldn't open search database, sorry.";
  +    $opts['msg']=_("Couldn't open search database, sorry.");
       $opts['hits']= 0;
       $opts['all']= 0;
       return '';
  @@ -122,7 +122,7 @@
     if ($options['value'])
       printf(_("Found %s matching %s out of %s total pages")."<br />",
            $ret['hits'],
  -        ($ret['hits'] == 1) ? 'page' : 'pages',
  +        ($ret['hits'] == 1) ? _("page") : _("pages"),
            $ret['all']);
     $args['noaction']=1;
     $formatter->send_footer($args,$options);
  
  
  


wkpark      2006/01/12 01:09:25

  Modified:    .        wiki.php
  Log:
  backlinks enhancement
  add $use_backlinks option to search backlinks by default.
  use serialize() to caches for pagelinks,keylinks,keywords etc.
  
  Revision  Changes    Path
  1.271     +52 -22    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.270
  retrieving revision 1.271
  diff -u -r1.270 -r1.271
  --- wiki.php	10 Jan 2006 11:42:03 -0000	1.270
  +++ wiki.php	11 Jan 2006 16:09:25 -0000	1.271
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.270 2006/01/10 11:42:03 wkpark Exp $
  +// $Id: wiki.php,v 1.271 2006/01/11 16:09:25 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.270 $',1,-1);
  +$_revision = substr('$Revision: 1.271 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -1240,6 +1240,7 @@
     }
   
     function update($pagename,$val,$mtime="") {
  +    if (!$pagename) return false;
       $key=$this->getKey($pagename);
       if (file_exists($key) and !is_writable($key)) return false;
       if ($mtime and ($mtime <= $this->mtime($key))) return false;
  @@ -1255,8 +1256,12 @@
     function _save($key,$val) {
       umask(011);
       $fp=fopen($key,"w+");
  -    fwrite($fp,$val);
  -    fclose($fp);
  +    if ($fp) {
  +      flock($fp,LOCK_EX);
  +      fwrite($fp,$val);
  +      flock($fp,LOCK_UN);
  +      fclose($fp);
  +    }
     }
   
     function _del($key) {
  @@ -1567,6 +1572,7 @@
       $this->footrule="\[\*[^\]]*\s[^\]]+\]";
   
       $this->cache= new Cache_text("pagelinks");
  +    $this->bcache= new Cache_text("backlinks");
     }
   
     function set_wordrule($pis=array()) {
  @@ -1924,7 +1930,7 @@
       # invalid InterWiki name
       if (!$url) {
         $dum0=preg_replace("/(".$this->wordrule.")/e","\$this->link_repl('\\1')",$dum[0]);
  -      return $dum0.':'.($dum[1]?$this->word_repl($dum[1],$text):'');
  +      return $dum0.':'.($dum[1]?$this->link_repl($dum[1],$text):'');
       }
   
       if ($page=='/') $page='';
  @@ -1978,28 +1984,51 @@
   
     function store_pagelinks() {
       unset($this->pagelinks['TwinPages']);
  -    $this->cache->update($this->page->name,$this->pagelinks,$this->page->mtime());
  +    $new=array_keys($this->pagelinks);
  +    $cur=unserialize($this->cache->fetch($this->page->name));
  +    if (!is_array($cur)) $cur=array();
  +
  +    $ad=array_diff($new,$cur);
  +    $de=array_diff($cur,$new);
  +    // merge new links
  +    foreach ($ad as $a) {
  +      if (!$a) continue;
  +      $bl=unserialize($this->bcache->fetch($a));
  +      if (!is_array($bl)) $bl=array();
  +      array_merge($bl,array($this->page->name));
  +      $bl=array_unique($bl);
  +      $this->bcache->update($a,serialize($bl));
  +    }
  +    // remove back links
  +    foreach ($de as $d) {
  +      if (!$d) continue;
  +      $bl=unserialize($this->bcache->fetch($d));
  +      if (!is_array($bl)) $bl=array();
  +      $bl=array_diff($bl,array($this->page->name));
  +      $this->bcache->update($d,serialize($bl));
  +    }
  +    // XXX
  +    $this->cache->update($this->page->name,serialize($links),
  +      $this->page->mtime());
     }
   
     function get_pagelinks() {
  +    if (!$this->wordrule) $this->set_wordrule();
       if ($this->cache->exists($this->page->name)) {
         $links=$this->cache->fetch($this->page->name);
  -      if ($links !== false) return $links;
  +      if ($links !== false) return unserialize($links);
       }
  -    $pi=$this->get_instructions($dum);
  -    if ($pi['#format']) return '';
  -    if ($this->page->exists()) {
  -      $body=$this->page->get_raw_body();
  -      # quickly generate a pseudo pagelinks
  -      preg_replace("/(?<!\[\[)(".$this->wordrule.")/e","\$this->link_repl('\\1')",$body);
  -      $this->store_pagelinks();
  -      if ($this->pagelinks) {
  -        $links=join("\n",array_keys($this->pagelinks))."\n";
  -        $this->pagelinks=array();
  -        return $links;
  -      }
  +    // no pagelinks found. XXX
  +    return array();
  +  }
  +
  +  function get_backlinks() {
  +    if ($this->bcache->exists($this->page->name)) {
  +      $links=$this->bcache->fetch($this->page->name);
  +      if ($links !== false) return unserialize($links);
       }
  -    return '';
  +    // no backlinks found. XXX
  +    return array();
     }
   
     function word_repl($word,$text='',$attr='',$nogroup=0,$islink=1) {
  @@ -3309,12 +3338,13 @@
       }
       # setup title variables
       #$heading=$this->link_to("?action=fullsearch&amp;value="._urlencode($name),$title);
  +    if ($DBInfo->use_backlinks) $qext='&amp;backlinks=1';
       $title="$groupt<span class='wikiTitle'>$title</span>";
       #$title="<span class='wikiTitle'><b>$title</b></span>";
       if ($link)
         $title="<a href=\"$link\" class='wikiTitle'>$title</a>";
       else if (empty($options['nolink']))
  -      $title=$this->link_to("?action=fullsearch&amp;value="._urlencode($myname),$title,"class='wikiTitle'");
  +      $title=$this->link_to("?action=fullsearch$qext&amp;value="._urlencode($myname),$title,"class='wikiTitle'");
       $logo=$this->link_tag($DBInfo->logo_page,'',$DBInfo->logo_string);
       $goto_form=$DBInfo->goto_form ?
         $DBInfo->goto_form : goto_form($action,$DBInfo->goto_type);
  @@ -3813,7 +3843,7 @@
         $tcache=new Cache_text('keywords');
         if (!$tcache->exists($pagename) or $_GET['update_keywords']) {
           $keys=explode(',',$formatter->pi['#keywords']);
  -        $tcache->update($pagename,array_flip($keys));
  +        $tcache->update($pagename,serialize($keys));
         }
       }
       $formatter->write("<div id='wikiContent'>\n");
  
  
  


wkpark      2006/01/12 13:00:16

  Modified:    .        wiki.php
  Log:
  more fixes
  
  Revision  Changes    Path
  1.272     +6 -5      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.271
  retrieving revision 1.272
  diff -u -r1.271 -r1.272
  --- wiki.php	11 Jan 2006 16:09:25 -0000	1.271
  +++ wiki.php	12 Jan 2006 04:00:16 -0000	1.272
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.271 2006/01/11 16:09:25 wkpark Exp $
  +// $Id: wiki.php,v 1.272 2006/01/12 04:00:16 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.271 $',1,-1);
  +$_revision = substr('$Revision: 1.272 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -2008,8 +2008,8 @@
         $this->bcache->update($d,serialize($bl));
       }
       // XXX
  -    $this->cache->update($this->page->name,serialize($links),
  -      $this->page->mtime());
  +    $this->cache->update($this->page->name,serialize($new));
  +#      $this->page->mtime());
     }
   
     function get_pagelinks() {
  @@ -2251,8 +2251,9 @@
       $plugin=($np=getPlugin($name))?$np:$name;
       if (!function_exists ("macro_".$plugin)) {
         #if (!$np) return "[[".$name."]]";
  -      if (!$np) return $this->link_repl($name);
  +      if (!$np) return $this->link_repl($name); // XXX
         include_once("plugin/$plugin.php");
  +      if (!function_exists ("macro_".$plugin)) return '[['.$macro.']]';
       }
       $ret=call_user_func_array("macro_$plugin",array(&$this,$args,$options));
       return $ret;
  
  
  


wkpark      2006/01/12 13:00:16

  Modified:    plugin   Keywords.php
  Log:
  more fixes
  
  Revision  Changes    Path
  1.9       +25 -20    moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Keywords.php	11 Jan 2006 16:04:58 -0000	1.8
  +++ Keywords.php	12 Jan 2006 04:00:16 -0000	1.9
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a 'Keywords' plugin for the MoniWiki
   //
  -// $Id: Keywords.php,v 1.8 2006/01/11 16:04:58 wkpark Exp $
  +// $Id: Keywords.php,v 1.9 2006/01/12 04:00:16 wkpark Exp $
   
   define(LOCAL_KEYWORDS,'LocalKeywords');
   
  @@ -233,7 +233,7 @@
           $form_close="<input type='submit' value='$btn'/>\n";
           $form_close.="<input type='submit' name='common' value='$btn1' />\n";
           $form_close.="<input type='button' value='$btn2' onClick='UncheckAll(this)' />\n";
  -        $form_close.="<select name='lang'><option>----</option>\n";
  +        $form_close.="<select name='lang'><option>---</option>\n";
           foreach ($supported_lang as $l) {
               $form_close.="<option value='$l'>$l</option>\n";
           }
  @@ -257,10 +257,12 @@
           do_invalid($formatter,$options);
           return;
       }
  -    if ($options['refresh']) {
  +    if ($options['update'] or $options['refresh']) {
           $lk=$DBInfo->getPage(LOCAL_KEYWORDS);
  +        $formatter->send_header("Content-type: text/plain");
           if (!$lk->exists()) {
  -            return 'not found';
  +            print sprintf(_("%s is not found."),LOCAL_KEYWORDS);
  +            return;
           }
           $raw=$lk->get_raw_body();
   
  @@ -293,7 +295,7 @@
                           print "***** updated $k\n";
                       }
                   } else {
  -                    if (is_array($rels)) {
  +                    if (sizeof($rels) > 1 and is_array($rels)) {
                           $kc->update($k,serialize($rels));
                           print "***** save $k\n";
                       }
  @@ -375,14 +377,15 @@
           $cache->update($page,serialize($keys));
   
           # update 'keylinks' caches
  -        $kc=new Cache_text('keylinks');
  -        foreach ($options['key'] as $k) {
  -            $kv=unserialize($kc->fetch($k));
  -            if (!in_array($page,$kv)) {
  -                $kv[]=$page;
  -                $kc->update($k,serialize($kv));
  -            }
  -        }
  +        #$kc=new Cache_text('keylinks');
  +        #foreach ($options['key'] as $k) {
  +        #    // XXX
  +        #    $kv=unserialize($kc->fetch($k));
  +        #    if (!in_array($page,$kv)) {
  +        #        $kv[]=$page;
  +        #        $kc->update($k,serialize($kv));
  +        #    }
  +        #}
   
           $raw="#format plain"; 
           $lk=$DBInfo->getPage(LOCAL_KEYWORDS);
  @@ -397,15 +400,15 @@
                   $body.=$line."\n";
               }
               $body=rtrim($body);
  -            $dict=explode("\n",$body);
           }
  -        $nkeys=array_diff(array_values($options['key']),$dict);
  -        $modi=0;
  -        if (!empty($nkeys)) {
  -            sort($nkeys);
  -            $raw.="\n".implode("\n",$nkeys)."\n";
  +        if ($options['key']) {
  +            // XXX
  +            $ks= array_map(create_function('$a',
  +                'return (strpos($a," ") !== false) ? "\"$a\"":$a;'),
  +                $options['key']);
  +            $raw.="\n".implode(' ',$ks)."\n";
               $lk->write($raw);
  -            $DBInfo->savePage($lk,"New keywords are added",$options);
  +            $DBInfo->savePage($lk,"Keywords are added",$options);
           }
   
           $formatter->send_title(sprintf(_("Keywords for %s are updated"),
  @@ -417,6 +420,7 @@
           $ret=substr($ret,0,strlen($ret)-1);
           print "<tt>#keywords $ret</tt>\n";
           if ($DBInfo->use_keywords or $options['update']) {
  +            # auto update the page with selected keywords.
               $body=$formatter->page->get_raw_body();
               $pi=$formatter->get_instructions($dum);
               if ($pi['#keywords']) {
  @@ -438,6 +442,7 @@
                   print "<h2>"._("There are no changes found")."</h2>";
               }
           } else {
  +            # user confirmation
               $link=$formatter->link_url(_rawurlencode($page),'');
               $keys=explode(',',$ret);
               $ret='';
  
  
  


wkpark      2006/01/12 23:33:06

  Modified:    .        wikilib.php
  Log:
  add a new util function _load_php_vars() to load user defined config set.
  
  Revision  Changes    Path
  1.192     +19 -2     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.191
  retrieving revision 1.192
  diff -u -r1.191 -r1.192
  --- wikilib.php	10 Jan 2006 11:42:18 -0000	1.191
  +++ wikilib.php	12 Jan 2006 14:33:06 -0000	1.192
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.191 2006/01/10 11:42:18 wkpark Exp $
  +// $Id: wikilib.php,v 1.192 2006/01/12 14:33:06 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -176,6 +176,22 @@
     return implode('.',$tmp);
   }
   
  +function _load_php_vars($filepath, $vars=array())
  +{
  +#   foreach ($vars as $key=>$val) $$key=$val;
  +#   unset($key,$val,$vars);
  +    extract($vars);
  +    unset($vars);
  +
  +    ob_start();
  +    include $filepath;
  +    unset($filepath);
  +    $vars=get_defined_vars();
  +    ob_end_clean();
  +
  +    return $vars;
  +}
  +
   // from php.net
   //
   // It seems that the best solution would be to use HMAC-MD5.
  @@ -1299,11 +1315,12 @@
       $savetext=$section_savetext ? $section_savetext:$savetext;
       $options['savetext']=$savetext;
   
  +    $formatter->preview=1;
       print macro_EditText($formatter,$value,$options); # XXX
       print $DBInfo->hr;
       print $menu;
       print "<div id='wikiPreview'>\n";
  -    $formatter->preview=1;
  +    #$formatter->preview=1;
       $formatter->send_page($savetext);
       $formatter->preview=0;
       print $DBInfo->hr;
  
  
  


wkpark      2006/01/13 12:07:24

  Modified:    .        wiki.php wikilib.php
  Log:
  fixed getpagelist() function
  add $replyto option for mail related functions
  XSS fix: use htmlspecialchars() in PageList() macro
  
  Revision  Changes    Path
  1.273     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.272
  retrieving revision 1.273
  diff -u -r1.272 -r1.273
  --- wiki.php	12 Jan 2006 04:00:16 -0000	1.272
  +++ wiki.php	13 Jan 2006 03:07:24 -0000	1.273
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.272 2006/01/12 04:00:16 wkpark Exp $
  +// $Id: wiki.php,v 1.273 2006/01/13 03:07:24 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.272 $',1,-1);
  +$_revision = substr('$Revision: 1.273 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -801,7 +801,7 @@
     function getPageLists($options=array()) {
       $pages = array();
   
  -    $pcid=md5(serialize(sort($options)));
  +    $pcid=md5(serialize($options));
       $pc=new Cache_text('pagelist');
       if (filemtime($this->text_dir) < $pc->mtime($pcid) and $pc->exists($pcid)) {
         $list=unserialize($pc->fetch($pcid));
  
  
  
  1.193     +26 -12    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.192
  retrieving revision 1.193
  diff -u -r1.192 -r1.193
  --- wikilib.php	12 Jan 2006 14:33:06 -0000	1.192
  +++ wikilib.php	13 Jan 2006 03:07:24 -0000	1.193
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.192 2006/01/12 14:33:06 wkpark Exp $
  +// $Id: wikilib.php,v 1.193 2006/01/13 03:07:24 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -680,7 +680,7 @@
   
     # make a edit form
     if (!$options['simple'])
  -    $form.= "<a id='editor' name='editor' />\n";
  +    $form.= "<a id='editor' name='editor'></a>\n";
   
     if ($options['page'])
       $previewurl=$formatter->link_url(_rawurlencode($options['page']),'#preview');
  @@ -1397,6 +1397,8 @@
       $version=new $class ($DBInfo);
       $rev=$formatter->page->get_rev();
       $diff=$version->diff($formatter->page->name,$rev);
  +  } else {
  +    $options['nodiff'];
     }
   
     $mailto=join(", ",$subs);
  @@ -1405,10 +1407,14 @@
   
     $subject= '=?'.$DBInfo->charset.'?B?'.rtrim(base64_encode($subject)).'?=';
   
  -  $rmail= "noreply@{$_SERVER['SERVER_NAME']}";
  -  if(preg_match("/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/i",
  -    $_SERVER['SERVER_NAME']))
  -    $rmail= 'noreply@['.$_SERVER['SERVER_NAME'].']';
  +  if ($DBInfo->replyto) {
  +    $rmail= $DBInfo->replyto;
  +  } else {
  +    $rmail= "noreply@{$_SERVER['SERVER_NAME']}";
  +    if(preg_match("/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/i",
  +      $_SERVER['SERVER_NAME']))
  +      $rmail= 'noreply@['.$_SERVER['SERVER_NAME'].']';
  +  }
   
     if ($options['id']) {
       $return=$options['id'].' <'.$rmail.'>';
  @@ -1460,10 +1466,15 @@
       return array('msg'=>_("This wiki does not support sendmail"));
     }
   
  -  $rmail= "noreply@{$_SERVER['SERVER_NAME']}";
  -  if(preg_match("/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/i",
  -    $_SERVER['SERVER_NAME']))
  -    $rmail= 'noreply@['.$_SERVER['SERVER_NAME'].']';
  +  if ($DBInfo->replyto) {
  +    $rmail= $DBInfo->replyto;
  +  } else {
  +    // make replyto address
  +    $rmail= "noreply@{$_SERVER['SERVER_NAME']}";
  +    if(preg_match("/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/i",
  +      $_SERVER['SERVER_NAME']))
  +      $rmail= 'noreply@['.$_SERVER['SERVER_NAME'].']';
  +  }
   
     if ($options['id']) {
       $return=$options['id'].' <'.$rmail.'>';
  @@ -2046,7 +2057,9 @@
       } else $hits=$all_pages;
       arsort($hits);
       while (list($pagename,$mtime) = @each ($hits)) {
  -      $out.= '<li>'.$formatter->link_tag(_rawurlencode($pagename),"",$pagename).". . . . [".gmdate("Y-m-d",$mtime+$tz_offset)."]</li>\n";
  +      $out.= '<li>'.$formatter->link_tag(_rawurlencode($pagename),"",
  +	htmlspecialchars($pagename)).
  +	". . . . [".gmdate("Y-m-d",$mtime+$tz_offset)."]</li>\n";
       }
       $out="<ol>\n".$out."</ol>\n";
     } else {
  @@ -2056,7 +2069,8 @@
       }
       sort($hits);
       foreach ($hits as $pagename) {
  -      $out.= '<li>' . $formatter->link_tag(_rawurlencode($pagename),"",$pagename)."</li>\n";
  +      $out.= '<li>' . $formatter->link_tag(_rawurlencode($pagename),"",
  +	htmlspecialchars($pagename))."</li>\n";
       }
       $out="<ul>\n".$out."</ul>\n";
     }
  
  
  


wkpark      2006/01/14 00:17:47

  Modified:    plugin/processor mimetex.php
  Log:
  support command line mode by JoungKyun Kim. thankyou :)
  
  Revision  Changes    Path
  1.2       +54 -8     moniwiki/plugin/processor/mimetex.php
  
  Index: mimetex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/mimetex.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- mimetex.php	2 Aug 2004 11:24:55 -0000	1.1
  +++ mimetex.php	13 Jan 2006 15:17:47 -0000	1.2
  @@ -1,17 +1,63 @@
   <?php
  -// Copyright 2003,2004 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2006 Won-Kyu Park <wkpark at kldp.org>
  +//                     JoungKyun Kim <http://www.oops.org>
   // All rights reserved. Distributable under GPL see COPYING
  -// a Echo processor plugin for the MoniWiki
  +// a mimetex processor plugin for the MoniWiki
   //
  -// $Id: mimetex.php,v 1.1 2004/08/02 11:24:55 wkpark Exp $
  +// Support command line mode by JoungKyun Kim 2006/01/13
  +//
  +// $Id: mimetex.php,v 1.2 2006/01/13 15:17:47 wkpark Exp $
   
   function processor_mimetex($formatter,$value) {
     global $DBInfo;
  -  $value=escapeshellarg($value);
  -  preg_match('/^\'\s*\$+([^\$]*)\$+\s*\'/',$value,$match);
  -  $tex=$match[1];
  -  return '<img src=\''.$DBInfo->url_prefix.'/mimetex.cgi?'.$tex.'\' alt=\''.
  -    str_replace('\'','&#039;',$tex).'\' />';
  +
  +  $value = escapeshellarg ($value);
  +  preg_match ('/\s*\$+([^\$]*)\$+\s*/', $value, $match);
  +  $tex = $match[1];
  +
  +  $mimetex= $DBInfo->mimetex_path ? $DBInfo->mimetex_path:
  +    $DBInfo->url_prefix.'/mimetex.cgi';
  +
  +  $debug = 0;
  +  # debuggin'
  +  if ( $debug ) {
  +    echo "<pre>\n" .
  +         "######################\n" .
  +         "$formatter\n" .
  +         "$value\n" .
  +         "{$match[0]}\n" .
  +         "{$match[1]}\n" .
  +         "######################\n" .
  +         "</pre>\n";
  +  }
  +
  +  $alt = str_replace ('\'','&#039;',$tex);
  +  if ( ! strncmp ('shell:', $mimetex, 6) ) {
  +    if ( ! $tex ) return;
  +
  +    $vartmp_dir=&$DBInfo->vartmp_dir;
  +    $cache_dir=$DBInfo->upload_dir."/MimeTeX";
  +    $mimetex = str_replace ('shell:', '', $mimetex);
  +
  +    $uniq = md5($tex);
  +
  +    if ( ! file_exists ($cache_dir) ) {
  +      umask (000);
  +      mkdir ($cache_dir, 0777);
  +    }
  +
  +    if ( $formatter->preview || $formatter->refresh || ! file_exists ("$cache_dir/$uniq.png")) {
  +      $cmd = "$mimetex -e $cache_dir/$uniq.gif \"$tex\"";
  +      $fp = @popen ($cmd, 'r');
  +      if ( ! is_resource ($fp) ) return $tex;
  +      pclose ($fp);
  +    }
  +
  +    return "<img class='tex' src='$DBInfo->url_prefix/$cache_dir/$uniq.png' alt='$alt' ".
  +           "title=\"$alt\" />";
  +  } else {
  +    return '<img src=\''.$mimetex.'?'.$tex.'\' alt=\''. $alt .'\' title=\''.$alt.'\' />';
  +  }
   }
   // vim:et:sts=2:sw=2:
   ?>
  
  
  


wkpark      2006/01/14 00:32:33

  Modified:    plugin/processor chat.php
  Log:
  fix indentation.
  
  Revision  Changes    Path
  1.5       +32 -33    moniwiki/plugin/processor/chat.php
  
  Index: chat.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/chat.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- chat.php	8 Apr 2004 18:23:44 -0000	1.4
  +++ chat.php	13 Jan 2006 15:32:33 -0000	1.5
  @@ -1,52 +1,51 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2006 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
  -// sample plugin for the MoniWiki
  +// a sample plugin for the MoniWiki
   //
   // Usage: {{{#!chat ID @date@ title
   // Hello World
   // }}}
  -// this processor is used internally by the Blog action
  -// $Id: chat.php,v 1.4 2004/04/08 18:23:44 wkpark Exp $
  +// $Id: chat.php,v 1.5 2006/01/13 15:32:33 wkpark Exp $
   
   function processor_chat($formatter,$value="") {
  -  if ($value[0]=='#' and $value[1]=='!')
  -    list($line,$value)=explode("\n",$value,2);
  -  if ($line) {
  -    # get parameters
  -    list($tag, $user, $date, $title)=explode(" ",$line, 4);
  +    if ($value[0]=='#' and $value[1]=='!')
  +        list($line,$value)=explode("\n",$value,2);
  +    if ($line) {
  +        # get parameters
  +        list($tag, $user, $date, $title)=explode(" ",$line, 4);
   
       if (preg_match('/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/',$user))
  -      $user="Anonymous[$user]";
  +        $user="Anonymous[$user]";
   
       if ($date && $date[10] == 'T') {
  -      $date[10]=' ';
  -      $time=strtotime($date." GMT");
  -      $date= "@ ".date("Y-m-d [h:i a]",$time);
  +        $date[10]=' ';
  +            $time=strtotime($date." GMT");
  +            $date= "@ ".date("Y-m-d [h:i a]",$time);
  +        }
       }
  -  }
   
  -  $src= $value;
  +    $src= $value;
   
  -  if ($src) {
  -    $options[nosisters]=1;
  -    ob_start();
  -    $formatter->send_page($src,$options);
  -    $msg= ob_get_contents();
  -    ob_end_clean();
  -  }
  -
  -  $out="<table align='center' width='90%' border='0' class='wiki' cellpadding='4' cellspacing='0'>";
  -  if ($title) {
  -    $title=preg_replace("/(".$formatter->wordrule.")/e",
  +    if ($src) {
  +        $options['nosisters']=1;
  +        ob_start();
  +        $formatter->send_page($src,$options);
  +        $msg= ob_get_contents();
  +        ob_end_clean();
  +    }
  +
  +    $out="<table align='center' width='90%' border='0' class='wiki' cellpadding='4' cellspacing='0'>";
  +    if ($title) {
  +        $title=preg_replace("/(".$formatter->wordrule.")/e",
                           "\$formatter->link_repl('\\1')",$title);
  -    $out.="<tr><td><b>$title</b></td></tr>\n";
  -  }
  -  $out.="<tr><td><font size='-1'>Submitted by $user $date</font></td></tr>\n".
  -    "<tr><td class='wiki'>$msg</td></tr>\n".
  -    "</table>\n";
  -  return $out;
  +        $out.="<tr><td><b>$title</b></td></tr>\n";
  +    }
  +    $out.="<tr><td><font size='-1'>Submitted by $user $date</font></td></tr>\n".
  +        "<tr><td class='wiki'>$msg</td></tr>\n".
  +        "</table>\n";
  +    return $out;
   }
   
  -// vim:et:ts=2:
  +// vim:et:sts=4:
   ?>
  
  
  


wkpark      2006/01/14 01:04:52

  Modified:    plugin/processor mimetex.php
  Log:
  fix image extension from png to gif
  
  Revision  Changes    Path
  1.3       +6 -4      moniwiki/plugin/processor/mimetex.php
  
  Index: mimetex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/mimetex.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- mimetex.php	13 Jan 2006 15:17:47 -0000	1.2
  +++ mimetex.php	13 Jan 2006 16:04:52 -0000	1.3
  @@ -6,7 +6,7 @@
   //
   // Support command line mode by JoungKyun Kim 2006/01/13
   //
  -// $Id: mimetex.php,v 1.2 2006/01/13 15:17:47 wkpark Exp $
  +// $Id: mimetex.php,v 1.3 2006/01/13 16:04:52 wkpark Exp $
   
   function processor_mimetex($formatter,$value) {
     global $DBInfo;
  @@ -18,6 +18,8 @@
     $mimetex= $DBInfo->mimetex_path ? $DBInfo->mimetex_path:
       $DBInfo->url_prefix.'/mimetex.cgi';
   
  +  $ext='gif';
  +
     $debug = 0;
     # debuggin'
     if ( $debug ) {
  @@ -46,14 +48,14 @@
         mkdir ($cache_dir, 0777);
       }
   
  -    if ( $formatter->preview || $formatter->refresh || ! file_exists ("$cache_dir/$uniq.png")) {
  -      $cmd = "$mimetex -e $cache_dir/$uniq.gif \"$tex\"";
  +    if ( $formatter->preview || $formatter->refresh || ! file_exists ("$cache_dir/$uniq.$ext")) {
  +      $cmd = "$mimetex -e $cache_dir/$uniq.$ext \"$tex\"";
         $fp = @popen ($cmd, 'r');
         if ( ! is_resource ($fp) ) return $tex;
         pclose ($fp);
       }
   
  -    return "<img class='tex' src='$DBInfo->url_prefix/$cache_dir/$uniq.png' alt='$alt' ".
  +    return "<img class='tex' src='$DBInfo->url_prefix/$cache_dir/$uniq.$ext' alt='$alt' ".
              "title=\"$alt\" />";
     } else {
       return '<img src=\''.$mimetex.'?'.$tex.'\' alt=\''. $alt .'\' title=\''.$alt.'\' />';
  
  
  


wkpark      2006/01/14 01:27:08

  Modified:    .        config.php.default
  Log:
  add some comments and examples for mimetex
  
  Revision  Changes    Path
  1.25      +15 -2     moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- config.php.default	1 Jan 2006 23:53:08 -0000	1.24
  +++ config.php.default	13 Jan 2006 16:27:08 -0000	1.25
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.24 2006/01/01 23:53:08 wkpark Exp $
  +# $Id: config.php.default,v 1.25 2006/01/13 16:27:08 wkpark Exp $
   #
   $sitename='UnnamedWiki';
   $data_dir= './data';
  @@ -28,6 +28,7 @@
   $edit_rows=16;
   $iconset= 'moni';
   $inline_latex=0;
  +#$inline_latex='mimetex';
   $lang='auto';
   $charset='utf-8';
   #$charset='euc-kr';
  @@ -93,9 +94,12 @@
   #$password_length=6;
   #$use_convert_thumbs=0;
   
  -#$myprocessors=array('latex'=>'latex');
  +#$myprocessors=array('latex'=>'mimetex');
   #$myplugins=array('FullSearch'=>'FastSearch');
   #$inline_latex='mimetex';
  +#$mimetex_path='/cgi-bin/mimetex.cgi'; # cgi mode
  +#$mimetex_path='shell:mimetex'; # command line mode
  +#$mimetex_path='shell:/usr/bin/mimetex';
   #$inline_latex='latex';
   #$inline_latex='itex';
   #$inline_latex='1';
  @@ -132,4 +136,13 @@
   $use_redirect_msg=1;
   #$use_safelogin=0;
   #$url_mappings=array('http://faq.ktug.or.kr/mywiki'=>'http://faq.ktug.or.kr/faq');
  +
  +#$use_category=0;
  +#$use_textbrowsers=1;
  +$use_preview_uploads=1;
  +#$use_camelcase=0;
  +#$mask_hostname=1;
  +#$shared_url_mappings=$data_dir.'/text/UrlMap';
  +#$category_regex=urldecode('%EB%B6%84%EB%A5%98$');
  +#$use_backlinks=1
   ?>
  
  
  


wkpark      2006/01/14 12:25:24

  Modified:    plugin/security sample.php
  Log:
  fixed indentation
  
  Revision  Changes    Path
  1.4       +18 -17    moniwiki/plugin/security/sample.php
  
  Index: sample.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/sample.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- sample.php	21 Oct 2004 08:27:07 -0000	1.3
  +++ sample.php	14 Jan 2006 03:25:24 -0000	1.4
  @@ -1,29 +1,30 @@
   <?php
   # a sample security plugin for the MoniWiki
  -# $Id: sample.php,v 1.3 2004/10/21 08:27:07 wkpark Exp $
  +# $Id: sample.php,v 1.4 2006/01/14 03:25:24 wkpark Exp $
   
   class Security_sample extends Security {
  -  var $DB;
  +    var $DB;
   
  -  function Security_sample($DB="") {
  -    $this->DB=$DB;
  -  }
  +    function Security_sample($DB="") {
  +        $this->DB=$DB;
  +    }
   
   # $options[page]: pagename
   # $options[id]: user id
   
  -  function writable($options="") {
  -    return $this->DB->_isWritable($options['page']);
  -  }
  -
  -  function is_allowed($action="read",&$options) {
  -    # basic allowed actions
  -    $allowed_actions=array("edit","savepage","read","diff","info","likepages","uploadfile","uploadedfiles","css","theme","deletepage");
  -    $action=strtolower($action);
  -    if (in_array($action,$allowed_actions))
  -      return 1;
  -    return 0;
  -  }
  +    function writable($options="") {
  +        return $this->DB->_isWritable($options['page']);
  +    }
  +
  +    function is_allowed($action="read",&$options) {
  +        # basic allowed actions
  +        $allowed_actions=array("edit","savepage","read","diff","info","likepages","uploadfile","uploadedfiles","css","theme","deletepage");
  +        $action=strtolower($action);
  +        if (in_array($action,$allowed_actions))
  +            return 1;
  +        return 0;
  +    }
   }
   
  +// vim:et:sts=4:
   ?>
  
  
  


wkpark      2006/01/14 12:26:03

  Added:       plugin/security authbasic.php
  Log:
  add a sample basic auth module
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/security/authbasic.php
  
  Index: authbasic.php
  ===================================================================
  <?php
  # a auth basic security plugin for the MoniWiki
  # $Id: authbasic.php,v 1.1 2006/01/14 03:26:02 wkpark Exp $
  
  class Security_authbasic extends Security {
      var $DB;
  
      function Security_authbasic($DB="") {
          $this->DB=$DB;
      }
  
      function writable($options="") {
          return $this->DB->_isWritable($options['page']);
      }
  
      function is_allowed($action="read",&$options) {
          # basic allowed actions
          $this->custom=0;
          $allowed_actions=array("savepage","read","raw","info",
              "likepages","uploadedfiles",
              "css","theme","userform","fixmoin");
          $action=strtolower($action);
          if (!$action) return 1;
          if (in_array($action,$allowed_actions)) return 1;
  
          if ($this->checkAuth($action,$options)==1) return 1;
          $options['custom']='basicAuth';
          $this->custom=1;
  
          return 0;
      }
  
      function checkAuth($action,&$options) {
          if ($action=='login' or $action=='logout') {
              $options['custom']='basicAuth';
              unset($_SERVER['PHP_AUTH_USER']);
              unset($_SERVER['PHP_AUTH_PW']);
              return 0;
          }
          if (isset($_SERVER['PHP_AUTH_USER']) and $_SERVER['PHP_AUTH_PW']) {
              $id=$_SERVER['PHP_AUTH_USER'];
              $userdb=new UserDB($this->DB);
              $user=new User(); # get from COOKIE VARS
              if ($user->id == $id) return 1;
  
              if ($userdb->_exists($id)) {
                  $user=$userdb->getUser($id);
                  # check password
                  if ($user->checkPasswd($_SERVER['PHP_AUTH_PW'])=== true) {
                      $dummy=$user->setCookie();
  	            $dummy=$userdb->saveUser($user);
                      return 1;
                  }
              }
          }
          unset($_SERVER['PHP_AUTH_USER']);
          unset($_SERVER['PHP_AUTH_PW']);
          return 0;
      }
  
      function basicAuth($formatter,$options) {
          global $DBInfo;
  
          $realm=$DBInfo->realm ? $DBInfo->realm:$DBInfo->sitename;
          header('WWW-Authenticate: Basic realm="'.$realm.'"',false);
          header("Status: 401 Unauthorized");
          header("HTTP-Status: 401 Unauthorized");
          $options['title']=sprintf(_("You have no permission to '%s'."),$options['action']);
          $formatter->send_header('',$options);
          $formatter->send_title('','',$options);
          $formatter->send_page(_("You must enter a valid login ID and password to access this resource.\n"));
          $formatter->send_footer('',$options);
          flush();
          return;
      }
  }
  
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2006/01/14 23:27:00

  Modified:    plugin   WantedPages.php
  Log:
  fix to follow new get_pagelinks() method.
  
  Revision  Changes    Path
  1.4       +7 -4      moniwiki/plugin/WantedPages.php
  
  Index: WantedPages.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/WantedPages.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- WantedPages.php	16 Apr 2005 07:31:05 -0000	1.3
  +++ WantedPages.php	14 Jan 2006 14:27:00 -0000	1.4
  @@ -1,22 +1,24 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2006 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a WantedPages macro plugin for the MoniWiki
  -// $Id: WantedPages.php,v 1.3 2005/04/16 07:31:05 wkpark Exp $
  +//
  +// $Id: WantedPages.php,v 1.4 2006/01/14 14:27:00 wkpark Exp $
   
  -function macro_WantedPages($formatter="",$options="") {
  +function macro_WantedPages($formatter,$value='') {
     global $DBInfo;
     $pages = $DBInfo->getPageLists();
   
     $pagelinks=$formatter->pagelinks; // save
   
     $cache=new Cache_text("pagelinks");
  +
     foreach ($pages as $page) {
       $p= new WikiPage($page);
       $f= new Formatter($p);
       $links=$f->get_pagelinks();
       if ($links) {
  -      $lns=explode("\n",$links);
  +      $lns=&$links;
         foreach($lns as $link) {
           if (!$link or $DBInfo->hasPage($link)) continue;
           if ($link and !$wants[$link])
  @@ -39,4 +41,5 @@
     return $out;
   }
   
  +// vim:et:sts=2:
   ?>
  
  
  


wkpark      2006/01/14 23:28:37

  Modified:    plugin   UploadForm.php
  Log:
  small fixes
  
  Revision  Changes    Path
  1.6       +4 -2      moniwiki/plugin/UploadForm.php
  
  Index: UploadForm.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadForm.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- UploadForm.php	7 Jan 2006 10:38:59 -0000	1.5
  +++ UploadForm.php	14 Jan 2006 14:28:37 -0000	1.6
  @@ -5,7 +5,7 @@
   //
   // Usage: [[UploadForm]]
   //
  -// $Id: UploadForm.php,v 1.5 2006/01/07 10:38:59 wkpark Exp $
  +// $Id: UploadForm.php,v 1.6 2006/01/14 14:28:37 wkpark Exp $
   
   function macro_UploadForm($formatter,$value) {
       global $DBInfo;
  @@ -14,7 +14,7 @@
       if ($id==1)
          $script=<<<EOF
   <script type="text/javascript">
  -/*<!CDATA[*/
  +/*<![CDATA[*/
   function addRow(id) {
       var fform = document.getElementById(id);
       var lastRow = fform.rows.length;
  @@ -82,6 +82,8 @@
           $formatter->actions[]='UploadedFiles';
       $id++;
       if ($formatter->preview and !in_array('UploadFile',$formatter->actions)) {
  +        $keyname=$DBInfo->pageToKeyname($formatter->page->name);
  +        if (is_dir($DBInfo->upload_dir.'/'.$keyname))
           $form=$formatter->macro_repl('UploadedFiles(tag=1)').$form;
       }
       return $script.$form.$multiform;
  
  
  


wkpark      2006/01/14 23:30:19

  Modified:    plugin   Keywords.php
  Log:
  checknew,all options are added.
  
  Revision  Changes    Path
  1.10      +58 -22    moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- Keywords.php	12 Jan 2006 04:00:16 -0000	1.9
  +++ Keywords.php	14 Jan 2006 14:30:19 -0000	1.10
  @@ -1,9 +1,9 @@
   <?php
  -// Copyright 2005 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2005-2006 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a 'Keywords' plugin for the MoniWiki
   //
  -// $Id: Keywords.php,v 1.9 2006/01/12 04:00:16 wkpark Exp $
  +// $Id: Keywords.php,v 1.10 2006/01/14 14:30:19 wkpark Exp $
   
   define(LOCAL_KEYWORDS,'LocalKeywords');
   
  @@ -23,6 +23,7 @@
               $tag_link='http://www.technorati.com/tag/$TAG';
           else if ($opt == 'flickr')
               $tag_link='http://www.flickr.com/photos/tags/$TAG';
  +        else if ($opt=='all') $options['all']=1;
           else if (($p=strpos($opt,'='))!==false) {
               $k=substr($opt,0,$p);
               $v=substr($opt,$p+1);
  @@ -30,17 +31,55 @@
               else if ($k=='sort' and in_array($v,array('freq','alpha')))
                   $sort=$v;
               else if ($k=='type' and in_array($v,array('full','title')))
  -                $search_type=$v;
  +                $search=$v.'search';
               else if ($k=='url') {
                   $tag_link=$v;
                   if (preg_match('/\$TAG/',$tag_link)===false) $tag_link.='$TAG';
               }
               // else ignore
           } else {
  -            $page=$opt;
  +            $pagename=$opt;
           }
       }
   
  +    if (!$pagename) $pagename=$formatter->page->name;
  +
  +    if ($options['all']) $pages=$DBInfo->getPageLists();
  +    else $pages=array($pagename);
  +
  +    # get cached keywords
  +    $cache=new Cache_text('keywords');
  +
  +    $mykeys=array();
  +    foreach ($pages as $pn) {
  +        if ($cache->exists($pn)) {
  +            $keys=$cache->fetch($pn);
  +            $keys=unserialize($keys);
  +        } else {
  +            $keys=array();
  +        }
  +        if ($keys) $mykeys=array_merge($mykeys,$keys);
  +    }
  +    if ($options['all']) {
  +        $words=array_count_values($mykeys);
  +        unset($words['']);
  +        $ncount=array_sum($words); // total count
  +        arsort($words);
  +        $max=current($words); // get max hit number
  +
  +        #print_r($words);
  +    } else {
  +        $max=3; // default weight
  +        $words=array();
  +        foreach ($mykeys as $key) {
  +            $words[$key]=$max;
  +            // give weight to all selected keywords
  +        }
  +    }
  +
  +    # automatically generate list of keywords
  +    if (!$options['all'] and (!$words or $options['checknew'])):
  +
       $common= <<<EOF
   am an a b c d e f g h i j k l m n o p q r s t u v w x y z
   0 1 2 3 4 5 6 7 8 9
  @@ -61,7 +100,6 @@
   one two three four five six seven eight nine ten eleven twelve
   ftp http https www web net org or kr co us de
   EOF;
  -    if (!$pagename) $pagename=$formatter->page->name;
       $page=$DBInfo->getPage($pagename);
       if (!$page->exists()) return '';
       $raw=$page->get_raw_body();$raw=rtrim($raw);
  @@ -144,21 +182,18 @@
       $max=current($words); // get max hit number
   
       $nwords=array();
  -    if ($options['all']) {
  -        $cache=new Cache_text('keywords');
  -        if ($cache->exists($pagename)) {
  -            $keys=$cache->fetch($pagename);
  -            $keys=unserialize($keys);
  -        } else
  -            $keys=array();
  -        foreach ($keys as $key) {
  +    if ($options['merge']) {
  +        foreach ($mykeys as $key) {
               $nwords[$key]=$max;
               // give weight to all selected keywords
           }
       }
   
  -    if ($nwords)
  -        $words=array_merge($words,$nwords);
  +    if ($nwords) $words=array_merge($words,$nwords);
  +
  +    endif;
  +    //
  +
       if ($limit and ($sz=sizeof($words))>$limit) {
           arsort($words);
           $words=array_slice($words,0,$limit);
  @@ -174,7 +209,7 @@
           #print $weight.'--';
       }
       $max=current($fact);
  -    $min=max(1,end($fact));
  +    $min=$limit ? max(1,end($fact)):0;
       // make font-size style
       $fz=max(sizeof($fact),2);
       $sty=array();
  @@ -191,9 +226,7 @@
   
       $link=$formatter->link_url(_rawurlencode($pagename),'');
       if (!isset($tag_link)) {
  -        if ($search_type=='full') $search='fullsearch';
  -        else if ($search_type=='title') $search='titlesearch';
  -        else $search='fullsearch&amp;keyword=1';
  +        if (!$search) $search='fullsearch&amp;keywords=1';
           $tag_link=$formatter->link_url(_rawurlencode($pagename),
               '?action='.$search.'&amp;value=$TAG');
       }
  @@ -230,7 +263,9 @@
               $btn=_("Add keywords");
           $btn1=_("Add as common words"); 
           $btn2=_("Unselect all"); 
  +        $btnc=_("Check new Keywords"); 
           $form_close="<input type='submit' value='$btn'/>\n";
  +        $form_close.="<input type='submit' name='checknew' value='$btnc' />\n";
           $form_close.="<input type='submit' name='common' value='$btn1' />\n";
           $form_close.="<input type='button' value='$btn2' onClick='UncheckAll(this)' />\n";
           $form_close.="<select name='lang'><option>---</option>\n";
  @@ -308,7 +343,8 @@
   
       $formatter->send_header('',$options);
   
  -    if (is_array($options['key']) or $options['keywords']) {
  +    if (!$options['checknew'] and
  +        (is_array($options['key']) or $options['keywords'])) {
           if ($options['keywords']) {
               // following keyword list are acceptable separated with spaces.
               // Chemistry "Physical Chemistry" "Bio Chemistry" ...
  @@ -374,7 +410,7 @@
           $keys=$options['key'];
           $keys=array_flip($keys);
           unset($keys['']);
  -        $cache->update($page,serialize($keys));
  +        $cache->update($page,serialize(array_keys($keys)));
   
           # update 'keylinks' caches
           #$kc=new Cache_text('keylinks');
  @@ -468,7 +504,7 @@
       $formatter->send_title(sprintf(_("Select keywords for %s"),
           $options['page']),'', $options);
   
  -    $options['all']=1;
  +    $options['merge']=1;
       $options['add']=1;
   
       print macro_KeyWords($formatter,$options['page'],$options);
  
  
  


wkpark      2006/01/14 23:30:43

  Modified:    plugin   Gallery.php
  Log:
  fix last changes
  
  Revision  Changes    Path
  1.23      +3 -3      moniwiki/plugin/Gallery.php
  
  Index: Gallery.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Gallery.php,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- Gallery.php	7 Jan 2006 10:38:59 -0000	1.22
  +++ Gallery.php	14 Jan 2006 14:30:43 -0000	1.23
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Gallery]]
   //
  -// $Id: Gallery.php,v 1.22 2006/01/07 10:38:59 wkpark Exp $
  +// $Id: Gallery.php,v 1.23 2006/01/14 14:30:43 wkpark Exp $
   
   function get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -212,10 +212,10 @@
       if (preg_match("/\.(jpg|jpeg|gif|png)$/i",$file)) {
         if ($DBInfo->use_convert_thumbs and !file_exists($dir."/thumbnails/".$file)) {
           if (function_exists('imagecopyresized')) {
  -          $fname=$dif.'/'.$file;
  +          $fname=$dir.'/'.$file;
             list($w, $h) = getimagesize($fname);
             if ($w > $width) {
  -            $nh=$w/$width*$h;
  +            $nh=$width*$h/$w;
               $thumb= imagecreatetruecolor($width,$nh);
               // XXX only jpeg for testing now.
               $source= imagecreatefromjpeg($fname);
  
  
  


wkpark      2006/01/14 23:31:17

  Modified:    plugin   FullSearch.php
  Log:
  uncomment keywords related option
  
  Revision  Changes    Path
  1.16      +2 -2      moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- FullSearch.php	11 Jan 2006 16:04:58 -0000	1.15
  +++ FullSearch.php	14 Jan 2006 14:31:17 -0000	1.16
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
   //
  -// $Id: FullSearch.php,v 1.15 2006/01/11 16:04:58 wkpark Exp $
  +// $Id: FullSearch.php,v 1.16 2006/01/14 14:31:17 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
  @@ -125,7 +125,7 @@
   
     # set arena and sid
     if ($opts['backlinks']) $arena='backlinks';
  -  #else if ($opts['keywords']) $arena='keylinks';
  +  else if ($opts['keywords']) $arena='keywords';
     else $arena='fullsearch';
   
     if ($arena == 'fullsearch') $sid=md5($value);
  
  
  


wkpark      2006/01/14 23:46:58

  Modified:    imgs/interwiki delicious-16.png kldpwiki-16.png ktug-16.png
                        moniwiki-16.png wiki-16.png
  Log:
  update interwiki icons
  
  Revision  Changes    Path
  1.2       +1 -1      moniwiki/imgs/interwiki/delicious-16.png
  
  	<<Binary file>>
  
  
  1.2       +2 -5      moniwiki/imgs/interwiki/kldpwiki-16.png
  
  	<<Binary file>>
  
  
  1.2       +2 -4      moniwiki/imgs/interwiki/ktug-16.png
  
  	<<Binary file>>
  
  
  1.2       +4 -3      moniwiki/imgs/interwiki/moniwiki-16.png
  
  	<<Binary file>>
  
  
  1.2       +3 -5      moniwiki/imgs/interwiki/wiki-16.png
  
  	<<Binary file>>
  
  


wkpark      2006/01/15 00:29:54

  Modified:    .        wiki.php wikilib.php
  Log:
  support '#nosinglebracket' '#singlebracket' PI to on/off single bracketted links
  table caption support added
  remove "align='middle'" attr and add a class.
  
  Revision  Changes    Path
  1.274     +35 -16    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.273
  retrieving revision 1.274
  diff -u -r1.273 -r1.274
  --- wiki.php	13 Jan 2006 03:07:24 -0000	1.273
  +++ wiki.php	14 Jan 2006 15:29:54 -0000	1.274
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.273 2006/01/13 03:07:24 wkpark Exp $
  +// $Id: wiki.php,v 1.274 2006/01/14 15:29:54 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.273 $',1,-1);
  +$_revision = substr('$Revision: 1.274 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -1580,6 +1580,8 @@
   
       $camelcase= isset($pis['#camelcase']) ? $pis['#camelcase']:
         $DBInfo->use_camelcase;
  +    $sbracket= isset($pis['#singlebracket']) ? $pis['#singlebracket']:
  +      $DBInfo->use_singlebracket;
   
       #$punct="<\"\'}\]\|;,\.\!";
       $punct="<\'}\]\)\|;\.\!"; # , is omitted for the WikiPedia
  @@ -1624,10 +1626,12 @@
       #"(\?[A-Z]*[a-z0-9]+)";
       "(\?[A-Za-z0-9]+)";
   
  -    if ($DBInfo->use_singlebracket) {
  +    if ($sbracket)
         # single bracketed name [Hello World]
         $this->wordrule.= "|(?<!\[)\!?\[([^\[:,<\s'][^\[:,>]{1,255})\](?!\])";
  -    }
  +    else
  +      # only anchor [#hello], footnote [* note] allowed 
  +      $this->wordrule.= "|(?<!\[)\!?\[([#\*\+][^\[:,>]{1,255})\](?!\])";
       return $this->wordrule;
     }
   
  @@ -1696,7 +1700,8 @@
       global $DBInfo;
       $pikeys=array('#redirect','#action','#title','#keywords','#noindex',
         '#filter','#postfilter','#twinpages','#notwins','#nocomment',
  -      '#language','#camelcase','#nocamelcase');
  +      '#language','#camelcase','#nocamelcase',
  +      '#singlebracket','#nosinglebracket');
       $pi=array();
       if (!$body) {
         if (!$this->page->exists()) return '';
  @@ -1739,13 +1744,14 @@
           #list($key,$val,$args)= explode(" ",$line,2); # XXX
           list($key,$val)= explode(" ",$line,2); # XXX
           $key=strtolower($key);
  -        if (in_array($key,$pikeys)) { $pi[$key]=$val ? $val:1; }
  +        if (in_array($key,$pikeys)) { $pi[$key]=($val == '') ? 1:$val; }
           else $notused[]=$line;
         }
         #
         if ($pi['#notwins']) $pi['#twinpages']=0;
         if ($pi['#nocamelcase']) $pi['#camelcase']=0;
         if ($pi['#nofilter']) unset($pi['#filter']);
  +      if ($pi['#nosinglebracket']) $pi['#singlebracket']=0;
       }
   
       if ($format) {
  @@ -1882,7 +1888,7 @@
               $external_link='<span class="externalLink">('.$url.')</span>';
           }
           $icon=strtok($url,':');
  -        return "<img align='middle' alt='[$icon]' src='".$this->imgs_dir_url."$icon.png' />". "<a class='externalLink' $attr $this->external_target href='$link'>$text</a>".$external_icon.$external_link;
  +        return "<img class='url' alt='[$icon]' src='".$this->imgs_dir_url."$icon.png' />". "<a class='externalLink' $attr $this->external_target href='$link'>$text</a>".$external_icon.$external_link;
         } # have no space
         $link=str_replace('&','&amp;',$url);
         if (preg_match("/^(http|https|ftp)/",$url)) {
  @@ -1957,7 +1963,7 @@
       }
   
       $img="<a href='$url' target='wiki'>".
  -         "<img border='0' src='$icon' align='middle' height='$sy' ".
  +         "<img border='0' src='$icon' class='interwiki' height='$sy' ".
            "width='$sx' alt='$wiki:' title='$wiki:' /></a>";
       #if (!$text) $text=str_replace("%20"," ",$page);
       if (!$text) $text=urldecode($page);
  @@ -2313,7 +2319,7 @@
   
       $alt=str_replace("<","&lt;",$smiley);
   
  -    return "<img src='$this->imgs_dir/$img' border='0' align='middle' alt='$alt' title='$alt' />";
  +    return "<img src='$this->imgs_dir/$img' border='0' class='smiley' alt='$alt' title='$alt' />";
     }
   
     function link_url($pageurl,$query_string="") {
  @@ -2768,9 +2774,10 @@
         }
   
         #if (!$in_pre && !$in_table && preg_match("/^\|\|.*\|\|$/",$line)) {
  -      if (!$in_pre && $line[0]=='|' && !$in_table && preg_match("/^((\|\|)+)(&lt;[^>\|]*>)?(.*)\|\|$/s",$line,$match)) {
  -        $open.=$this->_table(1,$match[3]);
  -        if (!$match[3]) $line=$match[1].$match[4].'||';
  +      if (!$in_pre && $line[0]=='|' && !$in_table && preg_match("/^(\|([^\|]+)?\|((\|\|)*))(&lt;[^>\|]*>)?(.*)(\|\|)$/s",$line,$match)) {
  +        $open.=$this->_table(1,$match[5]);
  +        if ($match[2]) $open.='<caption>'.$match[2].'</caption>';
  +        if (!$match[5]) $line='||'.$match[3].$match[6].'||';
           $in_table=1;
         #} elseif ($in_table && !preg_match("/^\|\|.*\|\|$/",$line)){
         } elseif ($in_table && $line[0]!='|' && !preg_match("/^\|\|.*\|\|$/s",$line)){
  @@ -3828,11 +3835,13 @@
   #      return;
   #    }
   
  -    #$formatter->get_redirect();
  +
       $formatter->pi=$formatter->get_instructions($dum);
       if ($DBInfo->body_attr)
         $options['attr']=$DBInfo->body_attr;
  +
       $formatter->send_header("",$options);
  +
       $formatter->send_title("","",$options);
   
       if ($formatter->pi['#title'] and $DBInfo->use_titlecache) {
  @@ -3842,7 +3851,9 @@
       }
       if ($formatter->pi['#keywords'] and $DBInfo->use_keywords) {
         $tcache=new Cache_text('keywords');
  -      if (!$tcache->exists($pagename) or $_GET['update_keywords']) {
  +      if (!$tcache->exists($pagename) or
  +        $tcache->mtime($pagename) < $formatter->page->mtime() or
  +        $_GET['update_keywords']) {
           $keys=explode(',',$formatter->pi['#keywords']);
           $tcache->update($pagename,serialize($keys));
         }
  @@ -3890,8 +3901,17 @@
   
     if ($action) {
       $options['metatags']='<meta name="robots" content="noindex,nofollow" />';
  +    $options['custom']='';
  +    $options['help']='';
   
       if (!$DBInfo->security->is_allowed($action,$options)) {
  +      if ($options['custom']!='' and
  +          method_exists($DBInfo->security,$options['custom'])) {
  +        $options['action']=$action;
  +        if ($action)
  +        call_user_func(array(&$DBInfo->security,$options['custom']),$formatter,$options);
  +        return;
  +      }
         $msg=sprintf(_("You are not allowed to '%s'"),$action);
         $formatter->send_header("Status: 406 Not Acceptable",$options);
         $formatter->send_title($msg,"", $options);
  @@ -3901,8 +3921,7 @@
         if ($options['help'] and
             method_exists($DBInfo->security,$options['help'])) {
           print "<div id='wikiHelper'>";
  -        $helper=$DBInfo->security->$options['help'];
  -        print call_user_method($options['help'],$DBInfo->security,$formatter);
  +        print call_user_method($options['help'],$DBInfo->security,$formatter,$options);
           print "</div>\n";
         }
   
  
  
  
  1.194     +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.193
  retrieving revision 1.194
  diff -u -r1.193 -r1.194
  --- wikilib.php	13 Jan 2006 03:07:24 -0000	1.193
  +++ wikilib.php	14 Jan 2006 15:29:54 -0000	1.194
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.193 2006/01/13 03:07:24 wkpark Exp $
  +// $Id: wikilib.php,v 1.194 2006/01/14 15:29:54 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1916,7 +1916,7 @@
         $sy=$DBInfo->intericon[$wiki][1];
       }
       $out.="<tr><td><tt><img src='$icon' width='$sx' height='$sy' ".
  -      "align='middle' alt='$wiki:' /><a href='$url'>$wiki</a></tt></td>";
  +      "class='interwiki' alt='$wiki:' /><a href='$url'>$wiki</a></tt></td>";
       $out.="<td><tt><a href='$href'>$href</a></tt></td></tr>\n";
     }
     $out.="</table>\n";
  
  
  


wkpark      2006/01/16 00:30:02

  Modified:    .        wiki.php wikilib.php
  Log:
  add a css class name to the goto form.
  fix for theme to control the $css_friendly option.
  XSS fix.
  
  Revision  Changes    Path
  1.275     +9 -8      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.274
  retrieving revision 1.275
  diff -u -r1.274 -r1.275
  --- wiki.php	14 Jan 2006 15:29:54 -0000	1.274
  +++ wiki.php	15 Jan 2006 15:30:02 -0000	1.275
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.274 2006/01/14 15:29:54 wkpark Exp $
  +// $Id: wiki.php,v 1.275 2006/01/15 15:30:02 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.274 $',1,-1);
  +$_revision = substr('$Revision: 1.275 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -132,7 +132,7 @@
   <input type='radio' name='action' value='fullsearch' />
   Contents</span>&nbsp;
   <input type='text' name='value' class='goto' accesskey='s' size='20' />
  -<input type='submit' name='status' value='Go' class='goto' style='width:23px' />
  +<input type='submit' name='status' value='Go' style='width:23px' />
   </form>
   ";
     } else if ($type==2) {
  @@ -171,7 +171,7 @@
   <form name='go' id='go' method='get' action='$action' onsubmit="return moin_submit();">
   <input type='text' name='value' size='20' accesskey='s' class='goto' style='width:100px' />
   <input type='hidden' name='action' value='goto' />
  -<input type='submit' name='status' value='Go' class='goto' style='width:23px;' />
  +<input type='submit' name='status' value='Go' style='width:23px;' />
   </form>
   FORM;
     }
  @@ -1510,6 +1510,7 @@
       $this->nonexists=$DBInfo->nonexists;
       $this->url_mappings=$DBInfo->url_mappings;
       $this->url_mapping_rule=$DBInfo->url_mapping_rule;
  +    $this->css_friendly=$DBInfo->css_friendly;
   
       if (($p=strpos($page->name,"~")))
         $this->group=substr($page->name,0,$p+1);
  @@ -3250,7 +3251,7 @@
         $args['editable']=-1;
       
       $menus=$this->get_actions($args,$options);
  -    if (!$DBInfo->css_friendly) {
  +    if (!$this->css_friendly) {
         $menu=$this->menu_bra.implode($this->menu_sep,$menus).$this->menu_cat;
       } else {
         $menu="<div id='wikiAction'>";
  @@ -3299,7 +3300,7 @@
       } else {
         print "<div id='wikiFooter'>";
         print $menu;
  -      if (!$DBInfo->css_friendly) print $banner;
  +      if (!$this->css_friendly) print $banner;
         else print "<div id='wikiBanner'>$banner</div>\n";
         print "\n</div>\n";
       }
  @@ -3388,7 +3389,7 @@
         }
       }
       $this->sister_on=$sister_save;
  -    if (!$DBInfo->css_friendly) {
  +    if (!$this->css_friendly) {
         $menu=$this->menu_bra.join($this->menu_sep,$menu).$this->menu_cat;
       } else {
         #for ($i=0,$szm=sizeof($menu);$i<$szm;$i++) {
  @@ -3448,7 +3449,7 @@
         # menu
         print "<div id='wikiHeader'>\n";
         print $header;
  -      if (!$DBInfo->css_friendly)
  +      if (!$this->css_friendly)
           print $menu." ".$user_link." ".$upper_icon.$icons.$home.$rss_icon;
         else {
           print "<div id='wikiLogin'>".$user_link."</div>";
  
  
  
  1.195     +3 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.194
  retrieving revision 1.195
  diff -u -r1.194 -r1.195
  --- wikilib.php	14 Jan 2006 15:29:54 -0000	1.194
  +++ wikilib.php	15 Jan 2006 15:30:02 -0000	1.195
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.194 2006/01/14 15:29:54 wkpark Exp $
  +// $Id: wikilib.php,v 1.195 2006/01/15 15:30:02 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -553,7 +553,7 @@
   
       $form=preg_replace('/\[\[EditText\]\]/i','#editform',$form);
       ob_start();
  -    $formatter->send_page(rtrim($form),$options);
  +    $f->send_page(rtrim($form),$options);
       $form= ob_get_contents();
       ob_end_clean();
   
  @@ -1534,7 +1534,7 @@
   
     foreach ($selected as $idx) {
       $item=$pages[$idx];
  -    $selects[]=$formatter->link_tag(_rawurlencode($item),"",$item);
  +    $selects[]=$formatter->link_tag(_rawurlencode($item),"",htmlspecialchars($item));
     }
   
     if ($count > 1) {
  
  
  


wkpark      2006/01/16 00:36:00

  Modified:    plugin/processor latex.php
  Log:
  add -trim option (from http://kldp.net/forum/message.php?msg_id=12013)
  
  Revision  Changes    Path
  1.12      +2 -2      moniwiki/plugin/processor/latex.php
  
  Index: latex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/latex.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- latex.php	10 Dec 2005 14:20:57 -0000	1.11
  +++ latex.php	15 Jan 2006 15:36:00 -0000	1.12
  @@ -6,7 +6,7 @@
   // Usage: {{{#!latex
   // $ \alpha $
   // }}}
  -// $Id: latex.php,v 1.11 2005/12/10 14:20:57 wkpark Exp $
  +// $Id: latex.php,v 1.12 2006/01/15 15:36:00 wkpark Exp $
   
   function processor_latex($formatter="",$value="") {
     global $DBInfo;
  @@ -79,7 +79,7 @@
        pclose($fp);
        chdir($cwd);
   
  -     $cmd= "$convert -transparent white -crop 0x0 -density 120x120 $vartmp_dir/$uniq.ps $outpath";
  +     $cmd= "$convert -transparent white -trim -crop 0x0 -density 120x120 $vartmp_dir/$uniq.ps $outpath";
        $fp=popen($cmd,'r');
        pclose($fp);
        unlink($vartmp_dir."/$uniq.log");
  
  
  


wkpark      2006/01/16 00:43:47

  Modified:    plugin   WordIndex.php UploadedFiles.php
  Log:
  urlencode() fix.
  check query_prefix properly.
  
  Revision  Changes    Path
  1.6       +6 -4      moniwiki/plugin/WordIndex.php
  
  Index: WordIndex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/WordIndex.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- WordIndex.php	2 Oct 2004 02:44:36 -0000	1.5
  +++ WordIndex.php	15 Jan 2006 15:43:47 -0000	1.6
  @@ -5,7 +5,7 @@
   //
   // Usage: [[WordIndex]]
   //
  -// $Id: WordIndex.php,v 1.5 2004/10/02 02:44:36 wkpark Exp $
  +// $Id: WordIndex.php,v 1.6 2006/01/15 15:43:47 wkpark Exp $
   // vim:et:ts=2:
   
   function macro_WordIndex($formatter,$value) {
  @@ -22,7 +22,7 @@
         $title=$cache->fetch($page);
       else
         $title=$page;
  -    $tmp=preg_replace("/[\?!$%\.\^;&\*()_\+\|\[\] \-~\/]/"," ",$title);
  +    $tmp=preg_replace("/[\?!$%\.\^;&\*()_\+\|\[\]<>\"' \-~\/]/"," ",$title);
       $tmp=preg_replace("/((?<=[A-Za-z0-9])[A-Z][a-z0-9])/"," \\1",ucwords($tmp));
       $words=preg_split("/\s+/",$tmp);
       foreach ($words as $word) {
  @@ -49,7 +49,8 @@
         if ($key !=-1) $out.="</ul>";
         $key=$pkey;
         $keys[]=$key;
  -      $out.= "<a name='$key' /><h3><a href='#top'>$key</a></h3>\n";
  +      $ukey=urlencode($key);
  +      $out.= "<a name='$ukey' /><h3><a href='#top'>$key</a></h3>\n";
       }
   
       $out.= "<h4>$word</h4>\n";
  @@ -63,7 +64,8 @@
     foreach ($keys as $key) {
       $name=$key;
       if ($key == 'Others') $name=_("Others");
  -    $index.= "| <a href='#$key'>$name</a> ";
  +    $ukey=urlencode($key);
  +    $index.= "| <a href='#$ukey'>$name</a> ";
     }
     $index[0]=" ";
   
  
  
  
  1.10      +2 -2      moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- UploadedFiles.php	9 Jan 2006 16:10:26 -0000	1.9
  +++ UploadedFiles.php	15 Jan 2006 15:43:47 -0000	1.10
  @@ -4,7 +4,7 @@
   // a UploadedFiles plugin for the MoniWiki
   // vim:et:sts=4:
   //
  -// $Id: UploadedFiles.php,v 1.9 2006/01/09 16:10:26 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.10 2006/01/15 15:43:47 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     $list=macro_UploadedFiles($formatter,$options['page'],$options);
  @@ -222,7 +222,7 @@
   
      $unit=array('Bytes','KB','MB','GB','TB');
   
  -   $down_mode=substr($prefix,strlen($prefix)-1) === '=';
  +   $down_mode=substr($prefix,strlen($prefix)-1) != '=';
      foreach ($upfiles as $file) {
         if ($down_mode)
           $link=str_replace("value=","value=".rawurlencode($file),$prefix);
  
  
  


wkpark      2006/01/16 00:44:21

  Modified:    plugin   Comment.php
  Log:
  add a css class and etc.
  
  Revision  Changes    Path
  1.19      +4 -4      moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- Comment.php	23 Sep 2005 17:27:45 -0000	1.18
  +++ Comment.php	15 Jan 2006 15:44:21 -0000	1.19
  @@ -6,7 +6,7 @@
   // Usage: [[Comment]], ?action=comment
   //
   //
  -// $Id: Comment.php,v 1.18 2005/09/23 17:27:45 wkpark Exp $
  +// $Id: Comment.php,v 1.19 2006/01/15 15:44:21 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $HTTP_USER_AGENT;
  @@ -47,7 +47,7 @@
    rows="$rows" cols="$cols">$savetext</textarea><br />
   FORM;
     if ($options['id'] == 'Anonymous')
  -    $sig=_("Name").": <input name='name' value='$options[name]' />";
  +    $sig=_("Username").": <input name='name' value='$options[name]' />";
     else 
       $sig="<input name='nosig' type='checkbox' />"._("Don't add a signature");
     $comment=_("Comment");
  @@ -57,7 +57,7 @@
   $sig
   <input type="hidden" name="action" value="comment" />
   <input type="hidden" name="datestamp" value="$datestamp" />
  -<input type="submit" value="$comment" />&nbsp;
  +<input type="submit" value="$comment" />
   <input type="submit" name="button_preview" value="$preview" />
   </form>
   FORM2;
  @@ -152,7 +152,7 @@
   
     if ($options['comment_id'] and preg_match("/^\[\[Comment\(".$options['comment_id']."\)\]\]/m",$body)) {
       $str="[[Comment($options[comment_id])]]";
  -    $body= str_replace($str,$savetext.$str,$body,1);
  +    $body= preg_replace('/'.preg_quote($str).'/',$savetext.$str,$body,1);
     } else if (preg_match("/\n##Comment\n/i",$body)) {
       $body= preg_replace("/\n##Comment\n/i","\n##Comment\n$savetext",$body,1);
     } else if (preg_match("/^\[\[Comment(\([^\)]*\))?\]\]/m",$body)) {
  
  
  


wkpark      2006/01/17 01:59:21

  Modified:    .        wikilib.php
  Log:
  more fix to workaround pagetype detection
  
  Revision  Changes    Path
  1.196     +5 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.195
  retrieving revision 1.196
  diff -u -r1.195 -r1.196
  --- wikilib.php	15 Jan 2006 15:30:02 -0000	1.195
  +++ wikilib.php	16 Jan 2006 16:59:21 -0000	1.196
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.195 2006/01/15 15:30:02 wkpark Exp $
  +// $Id: wikilib.php,v 1.196 2006/01/16 16:59:21 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -553,7 +553,10 @@
   
       $form=preg_replace('/\[\[EditText\]\]/i','#editform',$form);
       ob_start();
  -    $f->send_page(rtrim($form),$options);
  +    $opi=$formatter->pi; // save pi
  +    $formatter->pi=array('#format'=>'wiki'); // XXX override pi
  +    $formatter->send_page(rtrim($form),$options);
  +    $formatter->pi=$opi; // restore pi
       $form= ob_get_contents();
       ob_end_clean();
   
  
  
  


wkpark      2006/01/17 02:31:49

  Modified:    lib      difflib.php
  Log:
  support smartdiff now :) see also http://bbs.kldp.org/viewtopic.php?t=67388
  
  Revision  Changes    Path
  1.9       +23 -13    moniwiki/lib/difflib.php
  
  Index: difflib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/difflib.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- difflib.php	17 Oct 2005 16:09:04 -0000	1.8
  +++ difflib.php	16 Jan 2006 17:31:49 -0000	1.9
  @@ -1,16 +1,18 @@
   <?php
  -// difflib.php
  +// modified difflib.php for MoniWiki
  +// support php5.x and small fix to enable utf-8/euc-kr charset.
  +//
  +// original message
   //
   // A PHP diff engine for phpwiki. (Taken from phpwiki-1.3.3)
   //
   // Copyright (C) 2000, 2001 Geoffrey T. Dairiki <dairiki@dairiki.org>
   // You may copy this code freely under the conditions of the GPL.
   //
  -
   // FIXME: possibly remove assert()'s for production version?
  -// $Id: difflib.php,v 1.8 2005/10/17 16:09:04 wkpark Exp $
  +//
  +// $Id: difflib.php,v 1.9 2006/01/16 17:31:49 wkpark Exp $
   // original Id: difflib.php,v 1.5 2002/01/21 06:55:47 dairiki Exp
  -
   // PHP3 does not have assert()
   define('USE_ASSERTS', function_exists('assert'));
   
  @@ -844,18 +846,20 @@
    */
   
   #define('NBSP', "\xA0");         // iso-8859-x non-breaking space.
  -define('NBSP', "&nbsp;");         // iso-8859-x non-breaking space.
  +define('NBSP', "");         // iso-8859-x non-breaking space.
   
   class _HWLDF_WordAccumulator {
  -    function _HWLDF_WordAccumulator () {
  +    function _HWLDF_WordAccumulator ($tags=
  +        array("<del class='diff-removed'>\n","</del>",
  +            "<ins class='diff-added'>\n","</ins>")) {
           $this->_lines = array();
           $this->_line = '';
           $this->_group = '';
           $this->_tag = '';
  -        $this->_tag_del_open="<del class='diff-removed'>";
  -        $this->_tag_del_close="</del>";
  -        $this->_tag_ins_open="<ins class='diff-added'>";
  -        $this->_tag_ins_close="</ins>";
  +        $this->_tag_del_open=$tags[0];
  +        $this->_tag_del_close=$tags[1];
  +        $this->_tag_ins_open=$tags[2];
  +        $this->_tag_ins_close=$tags[3];
       }
   
       function _flushGroup ($new_tag) {
  @@ -904,7 +908,8 @@
   
   class WordLevelDiff extends MappedDiff
   {
  -    function WordLevelDiff ($orig_lines, $final_lines,$charset="euc-kr") {
  +    function WordLevelDiff ($orig_lines, $final_lines,
  +            $charset="euc-kr",$tags=array()) {
           if (strtolower($charset) == 'euc-kr') # two bytes sequence rule
             $this->charset_rule='[\xb0-\xfd][\xa1-\xfe]|';
           else if (strtolower($charset) == 'utf-8') # three bytes sequence
  @@ -915,6 +920,7 @@
   
           $this->MappedDiff($orig_words, $final_words,
                             $orig_stripped, $final_stripped);
  +        $this->tags=$tags;
       }
   
       function _split($lines) {
  @@ -951,8 +957,11 @@
           }
           return $_final->getLines();
       }
  -    function all () {
  -        $text = new _HWLDF_WordAccumulator;
  +    function all ($tags=array()) {
  +        if (empty($tags))
  +            $text = new _HWLDF_WordAccumulator();
  +        else
  +            $text = new _HWLDF_WordAccumulator($tags);
   
           foreach ($this->edits as $edit) {
               if ($edit->type == 'copy')
  @@ -1027,4 +1036,5 @@
       }
   }
   
  +// vim:et:sts=4:
   ?>
  
  
  


wkpark      2006/01/17 02:31:49

  Modified:    plugin   Diff.php
  Log:
  support smartdiff now :) see also http://bbs.kldp.org/viewtopic.php?t=67388
  
  Revision  Changes    Path
  1.6       +62 -48    moniwiki/plugin/Diff.php
  
  Index: Diff.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Diff.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Diff.php	13 Oct 2005 13:05:23 -0000	1.5
  +++ Diff.php	16 Jan 2006 17:31:49 -0000	1.6
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a diff plugin for the MoniWiki
   //
  -// $Id: Diff.php,v 1.5 2005/10/13 13:05:23 wkpark Exp $
  +// $Id: Diff.php,v 1.6 2006/01/16 17:31:49 wkpark Exp $
   
   function simple_diff($diff) {
     $diff=str_replace("<","&lt;",$diff);
  @@ -35,7 +35,7 @@
     $orig=array();$new=array();
     foreach ($lines as $line) {
       $marker=$line[0];
  -    $line=substr($line,1);
  +    if (in_array($marker,array('-','+','@'))) $line=substr($line,1);
       if ($marker=="@") $line='<div class="diff-sep">@'."$line</div>";
       else if ($marker=="-") {
         $omarker=1; $orig[]=$line; continue;
  @@ -62,6 +62,7 @@
       else if ($marker==" " and !$omarker)
         $line.="<br />";
       else if ($marker=="\\" && $line==" No newline at end of file") continue;
  +    else $line.="<br />";
       $out.=$line."\n";
     }
     return $out;
  @@ -73,6 +74,9 @@
     $diff=str_replace("<","&lt;",$diff);
     $lines=explode("\n",$diff);
     #unset($lines[0]); unset($lines[1]);
  +
  +  $tags=array("(%%","%%)","(@@","@@)");
  + 
     $newlines=array();
   
     $omarker=0;
  @@ -89,21 +93,29 @@
         $omarker=1; $new[]=$line; continue;
       }
       else if ($omarker) {
  -      $count=sizeof($new);
  +      $count=max(sizeof($new),sizeof($orig));
         $omarker=0;
         $buf='';
         $result = new WordLevelDiff($orig, $new, $DBInfo->charset);
  -      foreach ($result->all() as $ll)
  +
  +      # rearrange output.
  +      foreach ($result->all($tags) as $ll)
           $buf.= $ll."\n";
         $orig=array();$new=array();
  +
         $newlines[$lp-1]=$buf;
         for ($i=$count-1;$i>0;$i--) $newlines[$lp+$i-1]=null;
  +      if ($marker==" ") $lp+=$count+1;
       }
       else if ($marker==" " and !$omarker) {
         $lp++;
       }
       else if ($marker=="\\" && $line==" No newline at end of file") continue;
     }
  +
  +  #print "<pre style='color:white;background-color:black'>";
  +  #print_r($newlines);
  +  #print "</pre>";
     return $newlines;
   }
   
  @@ -120,44 +132,13 @@
       $type=$DBInfo->diff_type.'_diff';
   
     if ($options['text']) {
  -    if (0) {
  -      $tmpf=tempnam($DBInfo->vartmp_dir,'DIFF');
  -      $fp= fopen($tmpf, 'w');
  -      fwrite($fp, $options['text']);
  -      fclose($fp);
  -
  -      $fp=popen('diff -u '.$formatter->page->filename.' '.$tmpf,'r');
  -      if (!$fp) {
  -        unlink($tmpf);
  -        return '';
  -      }
  -      fgets($fp,1024); fgets($fp,1024);
  -      while (!feof($fp)) {
  -        $line=fgets($fp,1024);
  -        $out .= $line;
  -      }
  -      pclose($fp);
  -      unlink($tmpf);
  -    } else {
  -      $current=$formatter->page->get_raw_body();
  -      include_once('lib/difflib.php');
  -      $mydiff=new Diff(explode("\n",$current),explode("\n",$options['text']));
  -
  -      $fmtdiff = new UnifiedDiffFormatter;
  -      $out = $fmtdiff->format($mydiff);
  -    }
  -
  -    if (!$out) {
  -      $msg=_("No difference found");
  -    } else {
  -      $msg= _("Difference between yours and the current");
  -      if (!$options['raw'])
  -        $ret=call_user_func($type,$out);
  -      else
  -        $ret="<pre>$out</pre>\n";
  -    }
  -    if ($options['nomsg']) return $ret;
  -    return "<h2>$msg</h2>\n$ret";
  +    $out= $options['text'];
  +    if (!$options['raw'])
  +      $ret=call_user_func($type,$out);
  +    else
  +      $ret="<pre>$out</pre>\n";
  +
  +    return $ret;
     }
   
     $rev1=$options['rev'];
  @@ -199,18 +180,47 @@
       if (!$options['raw']) {
         #print "<pre>$out</pre>";
         $ret= call_user_func($type,$out);
  -      if (is_array($ret)) {
  +      if (is_array($ret)) { // for smart_diff
           $rev=$rev2 ? $rev2:$rev1;
           $current=$formatter->page->get_raw_body(array('rev'=>$rev));
           $lines=explode("\n",$current);
  +        #print "<pre>";
           #print_r($lines);
           #print_r($ret);
  -        foreach ($lines as $k => $v)
  -          if (isset($ret[$k])) $lines[$k] = $ret[$k];
  +        $nret=$ret;
  +        foreach ($ret as $k => $v) {
  +          if ($v=="") continue;
  +          $tmp=explode("\n",$v);
  +          array_pop($tmp);
  +          for ($kk=0;$kk<sizeof($tmp);$kk++)
  +          $nret[$k+$kk] = $tmp[$kk];
  +        }
  +        #print_r($nret);
  +        #print "</pre>";
  +        foreach ($nret as $k => $v) {
  +          $lines[$k] = $v;
  +        }
  +        ksort($lines);
           #print_r($lines);
           $diffed=implode("\n",$lines);
  +        $diffed=preg_replace("/\@@\)\n\(@@/m","\n",$diffed);
  +        $diffed=preg_replace("/\%%\)\n\(%%/m","\n",$diffed);
  +        $diffed=preg_replace(array("/\(@@(.*)@@\)/","/\(%%(.*)%%\)/"),
  +          array("<ins class='diff-added'>\\1</ins>",
  +                "<del class='diff-removed'>\\1</del>"),
  +          $diffed);
  +
  +        $diffed=preg_replace(array(
  +            "/\n\(@@/m","/@@\)\n/m","/\(@@/","/@@\)/",
  +            "/\n\(%%/m","/%%\)\n/m","/\(%%/","/%%\)/"),
  +          array(
  +            "\n<div class='diff-added'>","\n</div>",
  +            "<ins class='diff-added'>","\n</ins>",
  +            "\n<div class='diff-removed'>","\n</div>",
  +            "<del class='diff-removed'>","</del>")
  +            ,$diffed);
           $options['nomsg']=1;
  -        return $formatter->send_page($diffed);
  +        return $formatter->send_page($diffed,$options);
           #return "<pre>$diffed</pre>";
         }
       }
  @@ -245,9 +255,13 @@
       do_RcsPurge($formatter,$options);
       return;
     }
  -  if ($DBInfo->smart_diff) $options['type']='smart';
  +  if ($DBInfo->use_smartdiff) $options['type']='smart';
     $formatter->send_header("",$options);
  -  $formatter->send_title("Diff for $rev ".$options['page'],"",$options);
  +  if ($rev)
  +    $title=$options['page']. sprintf(_(" (with diff for %s)"),$rev);
  +  else
  +    $title=$options['page']. _(" (with diff)");
  +  $formatter->send_title($title,"",$options);
     if ($date) {
       $options['rev']=$date;
       print macro_diff($formatter,'',$options);
  
  
  


wkpark      2006/01/17 14:44:15

  Modified:    plugin   Diff.php
  Log:
  more fixes and cleanup
  
  Revision  Changes    Path
  1.7       +60 -29    moniwiki/plugin/Diff.php
  
  Index: Diff.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Diff.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- Diff.php	16 Jan 2006 17:31:49 -0000	1.6
  +++ Diff.php	17 Jan 2006 05:44:15 -0000	1.7
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a diff plugin for the MoniWiki
   //
  -// $Id: Diff.php,v 1.6 2006/01/16 17:31:49 wkpark Exp $
  +// $Id: Diff.php,v 1.7 2006/01/17 05:44:15 wkpark Exp $
   
   function simple_diff($diff) {
     $diff=str_replace("<","&lt;",$diff);
  @@ -74,26 +74,30 @@
     $diff=str_replace("<","&lt;",$diff);
     $lines=explode("\n",$diff);
     #unset($lines[0]); unset($lines[1]);
  +  #print "<pre>";
  +  #print_r( $lines);
  +  #print "</pre>";
   
  -  $tags=array("(%%","%%)","(@@","@@)");
  +  $tags=array('(%%','%%)','(@@','@@)');
    
  -  $newlines=array();
  +  $news=array(); $dels=array();
   
     $omarker=0;
     $orig=array();$new=array();
     foreach ($lines as $line) {
       $marker=$line[0];
       $line=substr($line,1);
  -    if ($marker=="@" and preg_match('/^@\s\-\d+,\d+\s\+(\d+),\d+\s@@/',$line,$mat))
  +    if ($marker=='@' and preg_match('/^@\s\-\d+,\d+\s\+(\d+),\d+\s@@/',$line,$mat))
         $lp=$mat[1];
  -    else if ($marker=="-") {
  +    else if ($marker=='-') {
         $omarker=1; $orig[]=$line; continue;
       }
  -    else if ($marker=="+") {
  -      $omarker=1; $new[]=$line; continue;
  +    else if ($marker=='+') {
  +      $omarker=2; $new[]=$line; continue;
       }
       else if ($omarker) {
  -      $count=max(sizeof($new),sizeof($orig));
  +      $count=sizeof($new);
  +
         $omarker=0;
         $buf='';
         $result = new WordLevelDiff($orig, $new, $DBInfo->charset);
  @@ -101,22 +105,29 @@
         # rearrange output.
         foreach ($result->all($tags) as $ll)
           $buf.= $ll."\n";
  +
  +      $buf=substr($buf,0,-1); // drop last added "\n"
         $orig=array();$new=array();
   
  -      $newlines[$lp-1]=$buf;
  -      for ($i=$count-1;$i>0;$i--) $newlines[$lp+$i-1]=null;
  -      if ($marker==" ") $lp+=$count+1;
  +      if ($count != 0) {
  +        $news[$lp-1]=$buf;
  +        for ($i=0;$i<$count-1;$i++) $news[$lp+$i]=null;
  +        #for ($i=$count-1;$i>0;$i--) $news[$lp+$i-1]=null;
  +      } else {
  +        $dels[$lp-1]=$buf;
  +      }
  +      if ($marker==' ') $lp+=$count+1;
       }
  -    else if ($marker==" " and !$omarker) {
  +    else if ($marker==' ' and !$omarker) {
         $lp++;
       }
  -    else if ($marker=="\\" && $line==" No newline at end of file") continue;
  +    else if ($marker=="\\" && $line==' No newline at end of file') continue;
     }
   
     #print "<pre style='color:white;background-color:black'>";
  -  #print_r($newlines);
  +  #print_r($news);
     #print "</pre>";
  -  return $newlines;
  +  return array($news,$dels);
   }
   
   
  @@ -141,13 +152,14 @@
       return $ret;
     }
   
  -  $rev1=$options['rev'];
  -  $rev2=$options['rev2'];
  +  $rev1=$options['rev']; // old
  +  $rev2=$options['rev2']; // new
     if (!$rev1 and !$rev2) {
       $rev1=$formatter->page->get_rev();
     } else if (0 === strcmp($rev1 , (int)$rev1)) {
       $rev1=$formatter->page->get_rev($rev1); // date
     } else if ($rev1==$rev2) $rev2='';
  +
     if ($rev1) $option="-r$rev1 ";
     if ($rev2) $option.="-r$rev2 ";
   
  @@ -181,33 +193,44 @@
         #print "<pre>$out</pre>";
         $ret= call_user_func($type,$out);
         if (is_array($ret)) { // for smart_diff
  -        $rev=$rev2 ? $rev2:$rev1;
  +        #print "<pre>";
  +        #print_r($ret);
  +        $dels=$ret[1]; $ret=$ret[0];
  +        $rev=($rev2 and $rev2) ? $rev2:''; // get newest rev.
           $current=$formatter->page->get_raw_body(array('rev'=>$rev));
           $lines=explode("\n",$current);
  -        #print "<pre>";
           #print_r($lines);
           #print_r($ret);
           $nret=$ret;
           foreach ($ret as $k => $v) {
             if ($v=="") continue;
             $tmp=explode("\n",$v);
  -          array_pop($tmp);
  +          $tt=array_pop($tmp);
  +          if ($tt != '') $tmp[]=$tt;
             for ($kk=0;$kk<sizeof($tmp);$kk++)
             $nret[$k+$kk] = $tmp[$kk];
           }
           #print_r($nret);
  -        #print "</pre>";
           foreach ($nret as $k => $v) {
             $lines[$k] = $v;
           }
  -        ksort($lines);
  +        #ksort($lines);
  +
  +        # insert deleted lines
  +        if ($dels) {
  +          #print_r($dels);
  +          foreach ($dels as $k => $v) {
  +            $lines[$k]=$v."\n".$lines[$k];
  +          }
  +        }
           #print_r($lines);
  +        #print "</pre>";
           $diffed=implode("\n",$lines);
           $diffed=preg_replace("/\@@\)\n\(@@/m","\n",$diffed);
           $diffed=preg_replace("/\%%\)\n\(%%/m","\n",$diffed);
           $diffed=preg_replace(array("/\(@@(.*)@@\)/","/\(%%(.*)%%\)/"),
  -          array("<ins class='diff-added'>\\1</ins>",
  -                "<del class='diff-removed'>\\1</del>"),
  +          array("<ins class='diff-added'>\\1</ins> ",
  +                "<del class='diff-removed'>\\1</del> "),
             $diffed);
   
           $diffed=preg_replace(array(
  @@ -219,7 +242,8 @@
               "\n<div class='diff-removed'>","\n</div>",
               "<del class='diff-removed'>","</del>")
               ,$diffed);
  -        $options['nomsg']=1;
  +        $options['nomsg']=0;
  +        $options['msg']=$msg;
           return $formatter->send_page($diffed,$options);
           #return "<pre>$diffed</pre>";
         }
  @@ -257,10 +281,17 @@
     }
     if ($DBInfo->use_smartdiff) $options['type']='smart';
     $formatter->send_header("",$options);
  -  if ($rev)
  -    $title=$options['page']. sprintf(_(" (with diff for %s)"),$rev);
  -  else
  -    $title=$options['page']. _(" (with diff)");
  +
  +  $title='';
  +  if ($DBInfo->use_smartdiff) {
  +    if ($rev and $rev2)
  +      $msg= sprintf(_("Difference between r%s and r%s"),$rev,$rev2);
  +    else if ($rev)
  +      $msg= sprintf(_("Difference between r%s and the current"),$rev);
  +    else
  +      $msg=_("latest changes");
  +    $options['msg']=$msg;
  +  }
     $formatter->send_title($title,"",$options);
     if ($date) {
       $options['rev']=$date;
  
  
  


wkpark      2006/01/19 00:57:12

  Modified:    plugin   Diff.php
  Log:
  fix for lists and headings
  
  Revision  Changes    Path
  1.8       +17 -2     moniwiki/plugin/Diff.php
  
  Index: Diff.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Diff.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Diff.php	17 Jan 2006 05:44:15 -0000	1.7
  +++ Diff.php	18 Jan 2006 15:57:12 -0000	1.8
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a diff plugin for the MoniWiki
   //
  -// $Id: Diff.php,v 1.7 2006/01/17 05:44:15 wkpark Exp $
  +// $Id: Diff.php,v 1.8 2006/01/18 15:57:12 wkpark Exp $
   
   function simple_diff($diff) {
     $diff=str_replace("<","&lt;",$diff);
  @@ -124,9 +124,12 @@
       else if ($marker=="\\" && $line==' No newline at end of file') continue;
     }
   
  -  #print "<pre style='color:white;background-color:black'>";
  +  #print "<pre style='color:black;background-color:#93FF93'>";
     #print_r($news);
     #print "</pre>";
  +  #print "<pre style='color:black;background-color:#FF9797'>";
  +  #print_r($dels);
  +  #print "</pre>";
     return array($news,$dels);
   }
   
  @@ -226,6 +229,17 @@
           #print_r($lines);
           #print "</pre>";
           $diffed=implode("\n",$lines);
  +        # change for headings
  +        $diffed=preg_replace("/^\(([@%]{2})(={1,5})\s(.*)\s\\2\\1\)$/m",
  +          "\\2 (\\1\\3\\1) \\2",$diffed);
  +        # change for lists
  +        $diffed=preg_replace("/\(([@%]{2})(\s+)(\*|\d+\.\s)(.*)\\1\)/m",
  +          "\\2\\3(\\1\\4\\1)",$diffed);
  +        # change for hrs
  +        #$diffed=preg_replace("/\(([@%]{2})(-{4,})\\1\)/m",
  +        #  "(\\1\\2\n\\1)",$diffed);
  +        # XXX FIXME
  +        # merge multiline diffs
           $diffed=preg_replace("/\@@\)\n\(@@/m","\n",$diffed);
           $diffed=preg_replace("/\%%\)\n\(%%/m","\n",$diffed);
           $diffed=preg_replace(array("/\(@@(.*)@@\)/","/\(%%(.*)%%\)/"),
  @@ -242,6 +256,7 @@
               "\n<div class='diff-removed'>","\n</div>",
               "<del class='diff-removed'>","</del>")
               ,$diffed);
  +
           $options['nomsg']=0;
           $options['msg']=$msg;
           return $formatter->send_page($diffed,$options);
  
  
  


wkpark      2006/01/19 00:58:35

  Modified:    plugin   UploadedFiles.php
  Log:
  fix last modification
  
  Revision  Changes    Path
  1.11      +2 -2      moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- UploadedFiles.php	15 Jan 2006 15:43:47 -0000	1.10
  +++ UploadedFiles.php	18 Jan 2006 15:58:35 -0000	1.11
  @@ -4,7 +4,7 @@
   // a UploadedFiles plugin for the MoniWiki
   // vim:et:sts=4:
   //
  -// $Id: UploadedFiles.php,v 1.10 2006/01/15 15:43:47 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.11 2006/01/18 15:58:35 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     $list=macro_UploadedFiles($formatter,$options['page'],$options);
  @@ -222,7 +222,7 @@
   
      $unit=array('Bytes','KB','MB','GB','TB');
   
  -   $down_mode=substr($prefix,strlen($prefix)-1) != '=';
  +   $down_mode=(strpos($prefix,';value=') !== false);
      foreach ($upfiles as $file) {
         if ($down_mode)
           $link=str_replace("value=","value=".rawurlencode($file),$prefix);
  
  
  


wkpark      2006/01/19 00:59:06

  Modified:    plugin   FullSearch.php dot.php rss_rc.php
  Log:
  small fixes
  
  Revision  Changes    Path
  1.17      +2 -2      moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- FullSearch.php	14 Jan 2006 14:31:17 -0000	1.16
  +++ FullSearch.php	18 Jan 2006 15:59:06 -0000	1.17
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
   //
  -// $Id: FullSearch.php,v 1.16 2006/01/14 14:31:17 wkpark Exp $
  +// $Id: FullSearch.php,v 1.17 2006/01/18 15:59:06 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
  @@ -196,7 +196,7 @@
   
     if ($arena == 'fullsearch')
       $fc->update($sid,serialize($hits));
  -  else
  +  else if ($DBInfo->hasPage($sid))
       $fc->update($sid,serialize(array_keys($hits)));
   
     $out.= "<!-- RESULT LIST START -->"; // for search plugin
  
  
  
  1.8       +2 -1      moniwiki/plugin/dot.php
  
  Index: dot.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/dot.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- dot.php	11 Jan 2006 16:04:58 -0000	1.7
  +++ dot.php	18 Jan 2006 15:59:06 -0000	1.8
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // dot action plugin for the MoniWiki
   //
  -// $Id: dot.php,v 1.7 2006/01/11 16:04:58 wkpark Exp $
  +// $Id: dot.php,v 1.8 2006/01/18 15:59:06 wkpark Exp $
   
   define(DEPTH,3);
   define(LEAFCOUNT,2);
  @@ -19,6 +19,7 @@
   
     function getLeafs($pagename,&$node,&$color,$depth,$count=LEAFCOUNT) {
       $links=unserialize($this->cache->fetch($pagename));
  +    #print_r($links);
       if (!is_array($links)) $links=array();
       foreach ($links as $page) {
         if (!$color[$page]) $color[$page]=$depth;
  
  
  
  1.13      +2 -1      moniwiki/plugin/rss_rc.php
  
  Index: rss_rc.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rss_rc.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- rss_rc.php	13 Sep 2005 09:10:52 -0000	1.12
  +++ rss_rc.php	18 Jan 2006 15:59:06 -0000	1.13
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // rss_rc action plugin for the MoniWiki
   //
  -// $Id: rss_rc.php,v 1.12 2005/09/13 09:10:52 wkpark Exp $
  +// $Id: rss_rc.php,v 1.13 2006/01/18 15:59:06 wkpark Exp $
   
   function do_rss_rc($formatter,$options) {
     global $DBInfo;
  @@ -131,6 +131,7 @@
   
     $head=<<<HEAD
   <?xml version="1.0" encoding="$charset"?>
  +<!--<?xml-stylesheet href="$DBInfo->url_prefix/css/_feed.css" type="text/css"?>-->
   <rdf:RDF xmlns="http://purl.org/rss/1.0/"
   	xmlns:wiki="http://purl.org/rss/1.0/modules/wiki/"
   	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  
  
  


wkpark      2006/01/19 00:59:06

  Modified:    plugin/processor diff.php vim.php
  Log:
  small fixes
  
  Revision  Changes    Path
  1.3       +3 -3      moniwiki/plugin/processor/diff.php
  
  Index: diff.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/diff.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- diff.php	13 Oct 2005 13:05:23 -0000	1.2
  +++ diff.php	18 Jan 2006 15:59:06 -0000	1.3
  @@ -7,7 +7,7 @@
   // - hello world
   // + Hello world
   // }}}
  -// $Id: diff.php,v 1.2 2005/10/13 13:05:23 wkpark Exp $
  +// $Id: diff.php,v 1.3 2006/01/18 15:59:06 wkpark Exp $
   
   function processor_diff($formatter,$value="") {
     if ($value[0]=='#' and $value[1]=='!')
  @@ -16,8 +16,8 @@
     if (in_array($type,array('fancy','simple')))
       $options['type']=$type;
     // add first two blank lines
  -  $options['nomsg']=1;
  -  $options['text']="\n\n".$value;
  +  //$options['text']="\n\n".$value;
  +  $options['text']=$value;
     return $formatter->macro_repl('Diff','',$options);
   }
   
  
  
  
  1.31      +4 -2      moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- vim.php	5 Jan 2006 17:33:43 -0000	1.30
  +++ vim.php	18 Jan 2006 15:59:06 -0000	1.31
  @@ -10,10 +10,12 @@
   // Win32 note:
   //  add $path="/bin;/Program Files/Vim/VimXX"; in the config.php
   //
  -// $Id: vim.php,v 1.30 2006/01/05 17:33:43 wkpark Exp $
  +// $Id: vim.php,v 1.31 2006/01/18 15:59:06 wkpark Exp $
   
   function processor_vim($formatter,$value,$options) {
     global $DBInfo;
  +
  +  $vim_default='-T xterm';
     static $jsloaded=0;
     $cache_dir=$DBInfo->upload_dir."/VimProcessor";
     $vartmp_dir=&$DBInfo->vartmp_dir;
  @@ -104,7 +106,7 @@
     fwrite($fp, $src);
     fclose($fp);
   
  -  $cmd= "$vim -T xterm -e -s $tmpf ".
  +  $cmd= "$vim $vim_default -e -s $tmpf ".
           ' +"syntax on " +"set syntax='.$type.'" '.$option.
           ' +"so '.$tohtml.'" +"wq! '.$fout.'" +q';
   
  
  
  


wkpark      2006/01/19 01:03:33

  Modified:    .        wiki.php wikilib.php
  Log:
  more fixes for the smart diff
  fix for sister sites and more css friendly.
  fixed title with the do_diff() action.
  fixed "Skip to preview" button
  
  Revision  Changes    Path
  1.276     +44 -14    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.275
  retrieving revision 1.276
  diff -u -r1.275 -r1.276
  --- wiki.php	15 Jan 2006 15:30:02 -0000	1.275
  +++ wiki.php	18 Jan 2006 16:03:33 -0000	1.276
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.275 2006/01/15 15:30:02 wkpark Exp $
  +// $Id: wiki.php,v 1.276 2006/01/18 16:03:33 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.275 $',1,-1);
  +$_revision = substr('$Revision: 1.276 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -647,7 +647,7 @@
       $this->icon['updated']="<img src='$imgdir/${iconset}updated.$ext' alt='U' align='middle' border='0' />";
       $this->icon['user']="UserPreferences";
       $this->icon['home']="<img src='$imgdir/${iconset}home.$ext' alt='M' align='middle' border='0' />";
  -    $this->icon['main']="<img src='$imgdir/${iconset}main.$ext' alt='^' align='middle' border='0' />";
  +    $this->icon['main']="<img src='$imgdir/${iconset}main.$ext' class='icon' alt='^' align='middle' border='0' />";
       $this->icon['print']="<img src='$imgdir/${iconset}print.$ext' alt='P' align='middle' border='0' />";
       $this->icon['attach']="<img src='$imgdir/${iconset}attach.$ext' alt='@' align='middle' border='0' />";
       $this->icon['external']="<img src='$imgdir/${iconset}external.$ext' alt='[]' align='middle' border='0' />";
  @@ -1286,7 +1286,7 @@
     }
   
     function _exists($key) {
  -    return file_exists($key);
  +    return @file_exists($key);
     }
   
     function _fetch($key) {
  @@ -1385,7 +1385,6 @@
           return _("Version info does not supported in this wiki");
         }
       }
  -
       $fp=@fopen($this->filename,"r");
       if (!$fp) {
         if (file_exists($this->filename)) {
  @@ -1511,6 +1510,7 @@
       $this->url_mappings=$DBInfo->url_mappings;
       $this->url_mapping_rule=$DBInfo->url_mapping_rule;
       $this->css_friendly=$DBInfo->css_friendly;
  +    $this->use_smartdiff=$DBInfo->use_smartdiff;
   
       if (($p=strpos($page->name,"~")))
         $this->group=substr($page->name,0,$p+1);
  @@ -1535,7 +1535,7 @@
                        "/''([^']*)''/","/(?<!')''(.*)''(?!')/",
                        "/`(?<!\s)(?!`)([^`']+)(?<!\s)'/",
                        "/`(?<!\s)(?U)(.*)(?<!\s)`/",
  -                     "/^(-{4,})/e",
  +                     "/(-{4,})$/e",
                        "/,,([^,]{1,40}),,/",
                        "/\^([^ \^]+)\^(?=\s|$)/",
                        "/\^\^(?<!\s)(?!\^)(?U)(.+)(?<!\s)\^\^/",
  @@ -1709,8 +1709,9 @@
         if ($this->pi) return $this->pi;
         $body=$this->page->get_raw_body();
         $update_body=1;
  -    }{
  +    }
   
  +    if (!$this->pi['#format']) { # XXX
         $pos=strpos($this->page->name,'/') ? 1:0;
         $key=strtok($this->page->name,'/');
         $format=$DBInfo->pagetype[$key];
  @@ -1990,6 +1991,7 @@
     }
   
     function store_pagelinks() {
  +    global $DBInfo;
       unset($this->pagelinks['TwinPages']);
       $new=array_keys($this->pagelinks);
       $cur=unserialize($this->cache->fetch($this->page->name));
  @@ -1997,9 +1999,9 @@
   
       $ad=array_diff($new,$cur);
       $de=array_diff($cur,$new);
  -    // merge new links
  +    // merge new backlinks
       foreach ($ad as $a) {
  -      if (!$a) continue;
  +      if (!$a or !$DBInfo->hasPage($a)) continue;
         $bl=unserialize($this->bcache->fetch($a));
         if (!is_array($bl)) $bl=array();
         array_merge($bl,array($this->page->name));
  @@ -2008,7 +2010,7 @@
       }
       // remove back links
       foreach ($de as $d) {
  -      if (!$d) continue;
  +      if (!$d or !$DBInfo->hasPage($d)) continue;
         $bl=unserialize($this->bcache->fetch($d));
         if (!is_array($bl)) $bl=array();
         $bl=array_diff($bl,array($this->page->name));
  @@ -2597,6 +2599,7 @@
             continue;
           }
         }
  +
         if (!$in_pre and $line[0]=='#' and $line[1]=='#') {
           if ($line[2]=='[') {
             $macro=substr($line,4,-2);
  @@ -2623,7 +2626,7 @@
         }
   
         $p_closeopen='';
  -      if (preg_match('/^-{4,}/',$line)) {
  +      if (preg_match('/-{4,}$/',$line)) {
           if ($this->auto_linebreak) $this->nobr=1; // XXX
           if ($in_p) { $p_closeopen=$this->_div(0,$in_div,$div_enclose); $in_p='';}
         } else if ($in_p == '' and $line!=='') {
  @@ -2703,7 +2706,6 @@
         $line=$nc;
         #$line=preg_replace($this->baserule,$this->baserepl,$line);
         #if ($in_p and ($in_pre==1 or $in_li)) $line=$this->_check_p().$line;
  -      $line=preg_replace('/(&lt;)(\/)?(ins|del)/','<\\2\\3',$nc);
   
         # bullet and indentation
         # and quote begin with ">"
  @@ -2807,10 +2809,18 @@
           $line=str_replace('\"','"',$line); # revert \\" to \"
         }
   
  +      # FIXME for smart diff XXX (one line ins/del)
  +      if ($this->use_smartdiff)
  +        $line=preg_replace('/&lt;(\/)?(ins|del)/','<\\1\\2',$line);
  +
         # InterWiki, WikiName, {{{ }}}, !WikiName, ?single, ["extended wiki name"]
         # urls, [single bracket name], [urls text], [[macro]]
         $line=preg_replace("/(".$wordrule.")/e","\$this->link_repl('\\1')",$line);
   
  +      # FIXME for smart diff XXX (one line ins/del)
  +      if ($this->use_smartdiff)
  +        $line=preg_replace('/&lt;(\/)?(ins|del)/','<\\1\\2',$line);
  +
         # Headings
         if (preg_match("/(?<!=)(={1,5})\s+(.*)\s+\\1\s?$/",$line,$m)) {
           $this->sect_num++;
  @@ -2858,13 +2868,23 @@
   
         if ($in_pre==-1) {
            $in_pre=0;
  -         if ($processor) {
  +
  +         # for smart diff
  +         $show_raw=0;
  +         if ($this->use_smartdiff and
  +           preg_match('/<(ins|del) class=\'diff-(added|removed)\'>/',
  +           $this->pre_line)) $show_raw=1;
  +
  +         if ($processor and !$show_raw) {
              $value=$this->pre_line;
              $out= call_user_func("processor_$processor",$this,$value,$options);
              $line=$out.$line;
            } else if ($in_quote) {
               # htmlfy '<'
               $pre=str_replace("<","&lt;",$this->pre_line);
  +            # for smart diff
  +            if ($this->use_smartdiff)
  +              $pre=preg_replace("/&lt;(\/?)(ins|del)/","<\\1\\2",$pre);
               $pre=preg_replace($this->baserule,$this->baserepl,$pre);
               $pre=preg_replace("/(".$wordrule.")/e","\$this->link_repl('\\1')",$pre);
               $attr='class="quote"';
  @@ -2887,6 +2907,8 @@
               $pre=str_replace(array('&','<'),
                                array("&amp;","&lt;"),
                               $this->pre_line);
  +            $pre=preg_replace("/&lt;(\/?)(ins|del)/","<\\1\\2",$pre);
  +            # FIXME Check open/close tags in $pre
               $line="<pre class='wiki'>\n".$pre."</pre>\n".$line;
            }
            $this->nobr=1;
  @@ -2901,6 +2923,10 @@
           $text.="<br />\n";
   
       } # end rendering loop
  +    # for smart_diff (div)
  +    if ($this->use_smartdiff)
  +      $text= preg_replace('/&lt;(\/)?(div( class=.diff-(added|removed).)?)>/',
  +        '<\\2>',$text);
   
       # highlight text
       if ($this->highlight) {
  @@ -2951,9 +2977,13 @@
     
       print $text;
       if ($this->sisters and !$options['nosisters']) {
  +      $sister_save=$this->sister_on;
  +      $this->sister_on=0;
         $sisters=join("\n",$this->sisters);
         $sisters=preg_replace("/(".$wordrule.")/e","\$this->link_repl('\\1')",$sisters);
  -      print "<div id='wikiSister'>\n<tt class='foot'>----</tt><br/>\nSister Sites Index<br />\n$sisters</div>\n";
  +      $msg=_("Sister Sites Index");
  +      print "<div id='wikiSister'>\n<div class='separator'><tt class='foot'>----</tt></div>\n$msg<br />\n$sisters</div>\n";
  +      $this->sister_on=$sister_save;
       }
   
       if ($options['pagelinks']) $this->store_pagelinks();
  
  
  
  1.197     +6 -7      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.196
  retrieving revision 1.197
  diff -u -r1.196 -r1.197
  --- wikilib.php	16 Jan 2006 16:59:21 -0000	1.196
  +++ wikilib.php	18 Jan 2006 16:03:33 -0000	1.197
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.196 2006/01/16 16:59:21 wkpark Exp $
  +// $Id: wikilib.php,v 1.197 2006/01/18 16:03:33 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -691,10 +691,7 @@
       $previewurl=$formatter->link_url($formatter->page->urlname,'#preview');
   
     $menu= ''; $sep= '';
  -  if ($preview) {
  -    $menu= $formatter->link_to('#preview',_("Skip to preview"));
  -    $sep= ' | ';
  -  } else if (!$DBInfo->use_resizer and (!$options['noresizer'] or !$use_js)) {
  +  if (!$DBInfo->use_resizer and (!$options['noresizer'] or !$use_js)) {
       $sep= ' | ';
       $menu= $formatter->link_to("?action=edit&amp;rows=".($rows-3),_("ReduceEditor"));
       $menu.= $sep.$formatter->link_to("?action=edit&amp;rows=".($rows+3),_("EnlargeEditor"));
  @@ -764,6 +761,8 @@
     if (!$options['simple']) {
       $preview_btn='<input type="submit" tabindex="6" name="button_preview" '.
         'value="'._("Preview").'" />';
  +    if ($preview)
  +      $preview_btn.= ' '.$formatter->link_to('#preview',_("Skip to preview"));
     }
     $save_msg=_("Save");
     $summary_msg=_("Summary of Change");
  @@ -971,8 +970,8 @@
   
   function do_recall($formatter,$options) {
     $formatter->send_header("",$options);
  -  $formatter->send_title("Rev. ".$options['rev']." ".
  -                                 $options['page'],"",$options);
  +  $formatter->send_title(sprintf(_("%s (rev. %s)"),$options['page'],
  +                                 $options['rev']),"",$options);
     $formatter->send_page("",$options);
     $formatter->send_footer($args,$options);
   }
  
  
  


wkpark      2006/01/19 01:04:26

  Modified:    lib      difflib.php
  Log:
  add $wiki_markups to split chuncks.
  
  Revision  Changes    Path
  1.10      +7 -2      moniwiki/lib/difflib.php
  
  Index: difflib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/difflib.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- difflib.php	16 Jan 2006 17:31:49 -0000	1.9
  +++ difflib.php	18 Jan 2006 16:04:26 -0000	1.10
  @@ -11,7 +11,7 @@
   //
   // FIXME: possibly remove assert()'s for production version?
   //
  -// $Id: difflib.php,v 1.9 2006/01/16 17:31:49 wkpark Exp $
  +// $Id: difflib.php,v 1.10 2006/01/18 16:04:26 wkpark Exp $
   // original Id: difflib.php,v 1.5 2002/01/21 06:55:47 dairiki Exp
   // PHP3 does not have assert()
   define('USE_ASSERTS', function_exists('assert'));
  @@ -926,11 +926,16 @@
       function _split($lines) {
           // FIXME: fix POSIX char class.
           //if (!preg_match_all('/ ( [^\S\n]+ | [[:alnum:]]+ | . ) (?: (?!< \n) [^\S\n])? /xs',
  -        if (!preg_match_all('/ ( [^\S\n]+ | [[:alnum:]]+ |'.$this->charset_rule .'. ) (?: (?!< \n) [^\S\n])? /xs',
  +        $wiki_markups='\[\[[A-Za-z0-9]+\([^\)]*\)\]\] | \-{4,} |';
  +        if (!preg_match_all('/ ( [^\S\n]+ | [[:alnum:]]+ | '.$wiki_markups.
  +            $this->charset_rule .'. ) (?: (?!< \n) [^\S\n])? /xs',
                               implode("\n", $lines),
                               $m)) {
               return array(array(''), array(''));
           }
  +        #print "<pre>";
  +        #print_r( $m );
  +        #print "</pre>";
           return array($m[0], $m[1]);
       }
   
  
  
  


wkpark      2006/01/19 01:04:49

  moniwiki/lib/Gettext - New directory

wkpark      2006/01/19 01:07:28

  Added:       lib/Gettext MO.php PO.php TGettext.php
  Log:
  import Gettext lib from the symfony (or File_Gettext PEAR module)
  
  Revision  Changes    Path
  1.1                  moniwiki/lib/Gettext/MO.php
  
  Index: MO.php
  ===================================================================
  <?php
  /**
   * TGettext_MO class file.
   *
   * This program is free software; you can redistribute it and/or modify
   * it under the terms of the BSD License.
   *
   * Copyright(c) 2004 by Qiang Xue. All rights reserved.
   *
   * To contact the author write to {@link mailto:qiang.xue@gmail.com Qiang Xue}
   * The latest version of PRADO can be obtained from:
   * {@link http://prado.sourceforge.net/}
   *
   * @author Wei Zhuo <weizhuo[at]gmail[dot]com>
   * @version $Revision: 1.1 $  $Date: 2006/01/18 16:07:28 $
   * @package System.I18N.core
   */
  
   
  // +----------------------------------------------------------------------+
  // | PEAR :: File :: Gettext :: MO                                        |
  // +----------------------------------------------------------------------+
  // | This source file is subject to version 3.0 of the PHP license,       |
  // | that is available at http://www.php.net/license/3_0.txt              |
  // | If you did not receive a copy of the PHP license and are unable      |
  // | to obtain it through the world-wide-web, please send a note to       |
  // | license@php.net so we can mail you a copy immediately.               |
  // +----------------------------------------------------------------------+
  // | Copyright (c) 2004 Michael Wallner <mike@iworks.at>                  |
  // +----------------------------------------------------------------------+
  //
  // $Id: MO.php,v 1.1 2006/01/18 16:07:28 wkpark Exp $
  
  /**
   * File::Gettext::MO
   * 
   * @author      Michael Wallner <mike@php.net>
   * @license     PHP License
   */
  
  require_once dirname(__FILE__).'/TGettext.php';
  
  /** 
   * File_Gettext_MO
   * 
   * GNU MO file reader and writer.
   *
   * @author      Michael Wallner <mike@php.net>
   * @version     $Revision: 1.1 $
   * @access      public
   * @package System.I18N.core 
   */
  class TGettext_MO extends TGettext
  {
      /**
       * file handle
       * 
       * @access  private
       * @var     resource
       */
      protected $_handle = null;
      
      /**
       * big endianess
       * 
       * Whether to write with big endian byte order.
       * 
       * @access  public
       * @var     bool
       */
      protected $writeBigEndian = false;
      
      /**
       * Constructor
       *
       * @access  public
       * @return  object      File_Gettext_MO
       * @param   string      $file   path to GNU MO file
       */
      function TGettext_MO($file = '')
      {
          $this->file = $file;
      }
  
      /**
       * _read
       *
       * @access  private
       * @return  mixed
       * @param   int     $bytes
       */
      function _read($bytes = 1)
      {
          if (0 < $bytes = abs($bytes)) {
              return fread($this->_handle, $bytes);
          }
          return null;
      }
      
      /**
       * _readInt
       *
       * @access  private
       * @return  int
       * @param   bool    $bigendian
       */
      function _readInt($bigendian = false)
      {
  		//unpack returns a reference????
  		$unpacked = unpack($bigendian ? 'N' : 'V', $this->_read(4));
          return array_shift($unpacked);
      }
      
      /**
       * _writeInt
       *
       * @access  private
       * @return  int
       * @param   int     $int
       */
      function _writeInt($int)
      {
          return $this->_write(pack($this->writeBigEndian ? 'N' : 'V', (int) $int));
      }
      
      /**
       * _write
       *
       * @access  private
       * @return  int
       * @param   string  $data
       */
      function _write($data)
      {
          return fwrite($this->_handle, $data);
      }
      
      /**
       * _writeStr
       *
       * @access  private
       * @return  int
       * @param   string  $string
       */
      function _writeStr($string)
      {
          return $this->_write($string . "\0");
      }
      
      /**
       * _readStr
       *
       * @access  private
       * @return  string
       * @param   array   $params     associative array with offset and length 
       *                              of the string
       */
      function _readStr($params)
      {
          fseek($this->_handle, $params['offset']);
          return $this->_read($params['length']);
      }
      
      /**
       * Load MO file
       *
       * @access   public
       * @return   mixed   Returns true on success or PEAR_Error on failure.
       * @param    string  $file
       */
      function load($file = null)
      {
          if (!isset($file)) {
              $file = $this->file;
          }
          
          // open MO file
          if (!is_resource($this->_handle = @fopen($file, 'rb'))) {
              return false;
          }
          // lock MO file shared
          if (!@flock($this->_handle, LOCK_SH)) {
              @fclose($this->_handle);
              return false;
          }
          
          // read (part of) magic number from MO file header and define endianess
  
  		//unpack returns a reference????
  		$unpacked = unpack('c', $this->_read(4));
          switch ($magic = array_shift($unpacked))
          {
              case -34:
                  $be = false;
              break;
              
              case -107:
                  $be = true;
              break;
              
              default:
                  return false;
          }
  
          // check file format revision - we currently only support 0
          if (0 !== ($_rev = $this->_readInt($be))) {
              return false;
          }
         
          // count of strings in this file
          $count = $this->_readInt($be);
          
          // offset of hashing table of the msgids
          $offset_original = $this->_readInt($be);
          // offset of hashing table of the msgstrs
          $offset_translat = $this->_readInt($be);
          
          // move to msgid hash table
          fseek($this->_handle, $offset_original);
          // read lengths and offsets of msgids
          $original = array();
          for ($i = 0; $i < $count; $i++) {
              $original[$i] = array(
                  'length' => $this->_readInt($be),
                  'offset' => $this->_readInt($be)
              );
          }
          
          // move to msgstr hash table
          fseek($this->_handle, $offset_translat);
          // read lengths and offsets of msgstrs
          $translat = array();
          for ($i = 0; $i < $count; $i++) {
              $translat[$i] = array(
                  'length' => $this->_readInt($be),
                  'offset' => $this->_readInt($be)
              );
          }
          
          // read all
          for ($i = 0; $i < $count; $i++) {
              $this->strings[$this->_readStr($original[$i])] = 
                  $this->_readStr($translat[$i]);
          }
          
          // done
          @flock($this->_handle, LOCK_UN);
          @fclose($this->_handle);
          $this->_handle = null;
          
          // check for meta info
          if (isset($this->strings[''])) {
              $this->meta = parent::meta2array($this->strings['']);
              unset($this->strings['']);
          }
          
          return true;
      }
      
      /**
       * Save MO file
       *
       * @access  public
       * @return  mixed   Returns true on success or PEAR_Error on failure.
       * @param   string  $file
       */
      function save($file = null)
      {
          if (!isset($file)) {
              $file = $this->file;
          }
          
          // open MO file
          if (!is_resource($this->_handle = @fopen($file, 'wb'))) {
              return false;
          }
          // lock MO file exclusively
          if (!@flock($this->_handle, LOCK_EX)) {
              @fclose($this->_handle);
              return false;
          }
          
          // write magic number
          if ($this->writeBigEndian) {
              $this->_write(pack('c*', 0x95, 0x04, 0x12, 0xde));
          } else {
              $this->_write(pack('c*', 0xde, 0x12, 0x04, 0x95));
          }
          
          // write file format revision
          $this->_writeInt(0);
          
          $count = count($this->strings) + ($meta = (count($this->meta) ? 1 : 0));
          // write count of strings
          $this->_writeInt($count);
          
          $offset = 28;
          // write offset of orig. strings hash table
          $this->_writeInt($offset);
          
          $offset += ($count * 8);
          // write offset transl. strings hash table
          $this->_writeInt($offset);
          
          // write size of hash table (we currently ommit the hash table)
          $this->_writeInt(0);
          
          $offset += ($count * 8);
          // write offset of hash table
          $this->_writeInt($offset);
          
          // unshift meta info
          if ($meta) {
              $meta = '';
              foreach ($this->meta as $key => $val) {
                  $meta .= $key . ': ' . $val . "\n";
              }
              $strings = array('' => $meta) + $this->strings;
          } else {
              $strings = $this->strings;
          }
          
          // write offsets for original strings
          foreach (array_keys($strings) as $o) {
              $len = strlen($o);
              $this->_writeInt($len);
              $this->_writeInt($offset);
              $offset += $len + 1;
          }
          
          // write offsets for translated strings
          foreach ($strings as $t) {
              $len = strlen($t);
              $this->_writeInt($len);
              $this->_writeInt($offset);
              $offset += $len + 1;
          }
  
          // write original strings
          foreach (array_keys($strings) as $o) {
              $this->_writeStr($o);
          }
  
          // write translated strings
          foreach ($strings as $t) {
              $this->_writeStr($t);
          }
          
          // done
          @flock($this->_handle, LOCK_UN);
          @fclose($this->_handle);
          return true;
      }
  }
  ?>
  
  
  
  1.1                  moniwiki/lib/Gettext/PO.php
  
  Index: PO.php
  ===================================================================
  <?php
  /**
   * TGettext_PO class file.
   *
   * This program is free software; you can redistribute it and/or modify
   * it under the terms of the BSD License.
   *
   * Copyright(c) 2004 by Qiang Xue. All rights reserved.
   *
   * To contact the author write to {@link mailto:qiang.xue@gmail.com Qiang Xue}
   * The latest version of PRADO can be obtained from:
   * {@link http://prado.sourceforge.net/}
   *
   * @author Wei Zhuo <weizhuo[at]gmail[dot]com>
   * @version $Revision: 1.1 $  $Date: 2006/01/18 16:07:28 $
   * @package System.I18N.core
   */
  
  // +----------------------------------------------------------------------+
  // | PEAR :: File :: Gettext :: PO                                        |
  // +----------------------------------------------------------------------+
  // | This source file is subject to version 3.0 of the PHP license,       |
  // | that is available at http://www.php.net/license/3_0.txt              |
  // | If you did not receive a copy of the PHP license and are unable      |
  // | to obtain it through the world-wide-web, please send a note to       |
  // | license@php.net so we can mail you a copy immediately.               |
  // +----------------------------------------------------------------------+
  // | Copyright (c) 2004 Michael Wallner <mike@iworks.at>                  |
  // +----------------------------------------------------------------------+
  //
  // $Id: PO.php,v 1.1 2006/01/18 16:07:28 wkpark Exp $
  
  /**
   * File::Gettext::PO
   * 
   * @author      Michael Wallner <mike@php.net>
   * @license     PHP License
   */
   
  require_once dirname(__FILE__).'/TGettext.php';
  
  /** 
   * File_Gettext_PO
   *
   * GNU PO file reader and writer.
   * 
   * @author      Michael Wallner <mike@php.net>
   * @version     $Revision: 1.1 $
   * @access      public
   * @package System.I18N.core 
   */
  class TGettext_PO extends TGettext
  {
      /**
       * Constructor
       *
       * @access  public
       * @return  object      File_Gettext_PO
       * @param   string      path to GNU PO file
       */
      function TGettext_PO($file = '')
      {
          $this->file = $file;
      }
  
      /**
       * Load PO file
       *
       * @access  public
       * @return  mixed   Returns true on success or PEAR_Error on failure.
       * @param   string  $file
       */
      function load($file = null)
      {
          if (!isset($file)) {
              $file = $this->file;
          }
          
          // load file
          if (!$contents = @file($file)) {
              return false;
          }
          $contents = implode('', $contents);
          
          // match all msgid/msgstr entries
          $matched = preg_match_all(
              '/(msgid\s+("([^"]|\\\\")*?"\s*)+)\s+' .
              '(msgstr\s+("([^"]|\\\\")*?"\s*)+)/',
              $contents, $matches
          );
          unset($contents);
          
          if (!$matched) {
              return false;
          }
          
          // get all msgids and msgtrs
          for ($i = 0; $i < $matched; $i++) {
              $msgid = preg_replace(
                  '/\s*msgid\s*"(.*)"\s*/s', '\\1', $matches[1][$i]);
              $msgstr= preg_replace(
                  '/\s*msgstr\s*"(.*)"\s*/s', '\\1', $matches[4][$i]);
              $this->strings[parent::prepare($msgid)] = parent::prepare($msgstr);
          }
          
          // check for meta info
          if (isset($this->strings[''])) {
              $this->meta = parent::meta2array($this->strings['']);
              unset($this->strings['']);
          }
          
          return true;
      }
      
      /**
       * Save PO file
       *
       * @access  public
       * @return  mixed   Returns true on success or PEAR_Error on failure.
       * @param   string  $file
       */
      function save($file = null)
      {
          if (!isset($file)) {
              $file = $this->file;
          }
  
          // open PO file
          if (!is_resource($fh = @fopen($file, 'w'))) {
              return false;
          }
  
          // lock PO file exclusively
          if (!flock($fh, LOCK_EX)) {
              fclose($fh);
              return false;
          }
          // write meta info
          if (count($this->meta)) {
              $meta = 'msgid ""' . "\nmsgstr " . '""' . "\n";
              foreach ($this->meta as $k => $v) {
                  $meta .= '"' . $k . ': ' . $v . '\n"' . "\n";
              }
              fwrite($fh, $meta . "\n");
          }
          // write strings
          foreach ($this->strings as $o => $t) {
              fwrite($fh,
                  'msgid "'  . parent::prepare($o, true) . '"' . "\n" .
                  'msgstr "' . parent::prepare($t, true) . '"' . "\n\n"
              );
          }
          
          //done
          @flock($fh, LOCK_UN);
          @fclose($fh);
          return true;
      }
  }
  ?>
  
  
  
  1.1                  moniwiki/lib/Gettext/TGettext.php
  
  Index: TGettext.php
  ===================================================================
  <?php
  /**
   * TGettext class file.
   *
   * This program is free software; you can redistribute it and/or modify
   * it under the terms of the BSD License.
   *
   * Copyright(c) 2004 by Qiang Xue. All rights reserved.
   *
   * To contact the author write to {@link mailto:qiang.xue@gmail.com Qiang Xue}
   * The latest version of PRADO can be obtained from:
   * {@link http://prado.sourceforge.net/}
   *
   * @author Wei Zhuo <weizhuo[at]gmail[dot]com>
   * @version $Revision: 1.1 $  $Date: 2006/01/18 16:07:28 $
   * @package System.I18N.core
   */
  
  // +----------------------------------------------------------------------+
  // | PEAR :: File :: Gettext                                              |
  // +----------------------------------------------------------------------+
  // | This source file is subject to version 3.0 of the PHP license,       |
  // | that is available at http://www.php.net/license/3_0.txt              |
  // | If you did not receive a copy of the PHP license and are unable      |
  // | to obtain it through the world-wide-web, please send a note to       |
  // | license@php.net so we can mail you a copy immediately.               |
  // +----------------------------------------------------------------------+
  // | Copyright (c) 2004 Michael Wallner <mike@iworks.at>                  |
  // +----------------------------------------------------------------------+
  //
  // $Id: TGettext.php,v 1.1 2006/01/18 16:07:28 wkpark Exp $
  
  /**
   * File::Gettext
   * 
   * @author      Michael Wallner <mike@php.net>
   * @license     PHP License
   */
  
  /**
   * Use PHPs builtin error messages
   */
  //ini_set('track_errors', true);
  
  /** 
   * File_Gettext
   * 
   * GNU gettext file reader and writer.
   * 
   * #################################################################
   * # All protected members of this class are public in its childs. #
   * #################################################################
   *
   * @author      Michael Wallner <mike@php.net>
   * @version     $Revision: 1.1 $
   * @access      public
   * @package System.I18N.core 
   */
  class TGettext
  {
      /**
       * strings
       * 
       * associative array with all [msgid => msgstr] entries
       * 
       * @access  protected
       * @var     array
      */
      protected $strings = array();
  
      /**
       * meta
       * 
       * associative array containing meta 
       * information like project name or content type
       * 
       * @access  protected
       * @var     array
       */
      protected $meta = array();
      
      /**
       * file path
       * 
       * @access  protected
       * @var     string
       */
      protected $file = '';
      
      /**
       * Factory
       *
       * @static
       * @access  public
       * @return  object  Returns File_Gettext_PO or File_Gettext_MO on success 
       *                  or PEAR_Error on failure.
       * @param   string  $format MO or PO
       * @param   string  $file   path to GNU gettext file
       */
      function factory($format, $file = '')
      {
          $format = strToUpper($format);
          $filename = dirname(__FILE__).'/'.$format.'.php';
          if(is_file($filename) == false)
          	throw new Exception ("Class file $file not found");
          	
          include_once $filename;
          $class = 'TGettext_' . $format;
  
          return new $class($file);
      }
  
      /**
       * poFile2moFile
       *
       * That's a simple fake of the 'msgfmt' console command.  It reads the
       * contents of a GNU PO file and saves them to a GNU MO file.
       * 
       * @static
       * @access  public
       * @return  mixed   Returns true on success or PEAR_Error on failure.
       * @param   string  $pofile path to GNU PO file
       * @param   string  $mofile path to GNU MO file
       */
      function poFile2moFile($pofile, $mofile)
      {
          if (!is_file($pofile)) {
              throw new Exception("File $pofile doesn't exist.");
          }
          
          include_once dirname(__FILE__).'/PO.php';
          
          $PO = new TGettext_PO($pofile);
          if (true !== ($e = $PO->load())) {
              return $e;
          }
          
          $MO = $PO->toMO();
          if (true !== ($e = $MO->save($mofile))) {
              return $e;
          }
          unset($PO, $MO);
          
          return true;
      }
      
      /**
       * prepare
       *
       * @static
       * @access  protected
       * @return  string
       * @param   string  $string
       * @param   bool    $reverse
       */
      function prepare($string, $reverse = false)
      {
          if ($reverse) {
              $smap = array('"', "\n", "\t", "\r");
              $rmap = array('\"', '\\n"' . "\n" . '"', '\\t', '\\r');
              return (string) str_replace($smap, $rmap, $string);
          } else {
          	$string = preg_replace('/"\s+"/', '', $string);
              $smap = array('\\n', '\\r', '\\t', '\"');
              $rmap = array("\n", "\r", "\t", '"');
              return (string) str_replace($smap, $rmap, $string);
          }
      }
      
      /**
       * meta2array
       *
       * @static
       * @access  public
       * @return  array
       * @param   string  $meta
       */
      function meta2array($meta)
      {
          $array = array();
          foreach (explode("\n", $meta) as $info) {
              if ($info = trim($info)) {
                  list($key, $value) = explode(':', $info, 2);
                  $array[trim($key)] = trim($value);
              }
          }
          return $array;
      }
  
      /**
       * toArray
       * 
       * Returns meta info and strings as an array of a structure like that:
       * <code>
       *   array(
       *       'meta' => array(
       *           'Content-Type'      => 'text/plain; charset=iso-8859-1',
       *           'Last-Translator'   => 'Michael Wallner <mike@iworks.at>',
       *           'PO-Revision-Date'  => '2004-07-21 17:03+0200',
       *           'Language-Team'     => 'German <mail@example.com>',
       *       ),
       *       'strings' => array(
       *           'All rights reserved'   => 'Alle Rechte vorbehalten',
       *           'Welcome'               => 'Willkommen',
       *           // ...
       *       )
       *   )
       * </code>
       * 
       * @see     fromArray()
       * @access  protected
       * @return  array
       */
      function toArray()
      {
      	return array('meta' => $this->meta, 'strings' => $this->strings);
      }
      
      /**
       * fromArray
       * 
       * Assigns meta info and strings from an array of a structure like that:
       * <code>
       *   array(
       *       'meta' => array(
       *           'Content-Type'      => 'text/plain; charset=iso-8859-1',
       *           'Last-Translator'   => 'Michael Wallner <mike@iworks.at>',
       *           'PO-Revision-Date'  => date('Y-m-d H:iO'),
       *           'Language-Team'     => 'German <mail@example.com>',
       *       ),
       *       'strings' => array(
       *           'All rights reserved'   => 'Alle Rechte vorbehalten',
       *           'Welcome'               => 'Willkommen',
       *           // ...
       *       )
       *   )
       * </code>
       * 
       * @see     toArray()
       * @access  protected
       * @return  bool
       * @param   array       $array
       */
      function fromArray($array)
      {
      	if (!array_key_exists('strings', $array)) {
      	    if (count($array) != 2) {
                  return false;
      	    } else {
      	        list($this->meta, $this->strings) = $array;
              }
      	} else {
              $this->meta = @$array['meta'];
              $this->strings = @$array['strings'];
          }
          return true;
      }
      
      /**
       * toMO
       *
       * @access  protected
       * @return  object  File_Gettext_MO
       */
      function toMO()
      {
          include_once dirname(__FILE__).'/MO.php';
          $MO = new TGettext_MO;
          $MO->fromArray($this->toArray());
          return $MO;
      }
      
      /**
       * toPO
       *
       * @access  protected
       * @return  object      File_Gettext_PO
       */
      function toPO()
      {
          include_once dirname(__FILE__).'/PO.php';
          $PO = new TGettext_PO;
          $PO->fromArray($this->toArray());
          return $PO;
      }
  }
  ?>
  
  
  


wkpark      2006/01/19 01:10:55

  Modified:    lib/Gettext MO.php PO.php TGettext.php
  Log:
  fix to work with php4.x
  fix for '\"' chars in msgstr.
  import some fixes from the File_Gettext PEAR class
  
  Revision  Changes    Path
  1.2       +4 -3      moniwiki/lib/Gettext/MO.php
  
  Index: MO.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/Gettext/MO.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- MO.php	18 Jan 2006 16:07:28 -0000	1.1
  +++ MO.php	18 Jan 2006 16:10:55 -0000	1.2
  @@ -12,7 +12,7 @@
    * {@link http://prado.sourceforge.net/}
    *
    * @author Wei Zhuo <weizhuo[at]gmail[dot]com>
  - * @version $Revision: 1.1 $  $Date: 2006/01/18 16:07:28 $
  + * @version $Revision: 1.2 $  $Date: 2006/01/18 16:10:55 $
    * @package System.I18N.core
    */
   
  @@ -29,7 +29,8 @@
   // | Copyright (c) 2004 Michael Wallner <mike@iworks.at>                  |
   // +----------------------------------------------------------------------+
   //
  -// $Id: MO.php,v 1.1 2006/01/18 16:07:28 wkpark Exp $
  +// $Id: MO.php,v 1.2 2006/01/18 16:10:55 wkpark Exp $
  +// orig Id: MO.php,v 1.3 2005/08/27 03:21:12 weizhuo Exp
   
   /**
    * File::Gettext::MO
  @@ -46,7 +47,7 @@
    * GNU MO file reader and writer.
    *
    * @author      Michael Wallner <mike@php.net>
  - * @version     $Revision: 1.1 $
  + * @version     $Revision: 1.2 $
    * @access      public
    * @package System.I18N.core 
    */
  @@ -58,7 +59,7 @@
        * @access  private
        * @var     resource
        */
  -    protected $_handle = null;
  +    var $_handle = null;
       
       /**
        * big endianess
  @@ -68,7 +69,7 @@
        * @access  public
        * @var     bool
        */
  -    protected $writeBigEndian = false;
  +    var $writeBigEndian = false;
       
       /**
        * Constructor
  
  
  
  1.2       +14 -8     moniwiki/lib/Gettext/PO.php
  
  Index: PO.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/Gettext/PO.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- PO.php	18 Jan 2006 16:07:28 -0000	1.1
  +++ PO.php	18 Jan 2006 16:10:55 -0000	1.2
  @@ -12,7 +12,7 @@
    * {@link http://prado.sourceforge.net/}
    *
    * @author Wei Zhuo <weizhuo[at]gmail[dot]com>
  - * @version $Revision: 1.1 $  $Date: 2006/01/18 16:07:28 $
  + * @version $Revision: 1.2 $  $Date: 2006/01/18 16:10:55 $
    * @package System.I18N.core
    */
   
  @@ -28,7 +28,8 @@
   // | Copyright (c) 2004 Michael Wallner <mike@iworks.at>                  |
   // +----------------------------------------------------------------------+
   //
  -// $Id: PO.php,v 1.1 2006/01/18 16:07:28 wkpark Exp $
  +// $Id: PO.php,v 1.2 2006/01/18 16:10:55 wkpark Exp $
  +// orig Id: PO.php,v 1.2 2005/01/05 03:15:14 weizhuo Exp
   
   /**
    * File::Gettext::PO
  @@ -45,7 +46,7 @@
    * GNU PO file reader and writer.
    * 
    * @author      Michael Wallner <mike@php.net>
  - * @version     $Revision: 1.1 $
  + * @version     $Revision: 1.2 $
    * @access      public
    * @package System.I18N.core 
    */
  @@ -70,36 +71,41 @@
        * @return  mixed   Returns true on success or PEAR_Error on failure.
        * @param   string  $file
        */
  -    function load($file = null)
  +    function load($file = null,$isfile=1)
       {
           if (!isset($file)) {
               $file = $this->file;
           }
           
           // load file
  -        if (!$contents = @file($file)) {
  -            return false;
  +	if ($isfile) {
  +            if (!$contents = @file($file)) {
  +                return false;
  +            }
  +            $contents = implode('', $contents);
  +        } else {
  +            $contents = &$file; // just read po contents
           }
  -        $contents = implode('', $contents);
           
           // match all msgid/msgstr entries
           $matched = preg_match_all(
               '/(msgid\s+("([^"]|\\\\")*?"\s*)+)\s+' .
  -            '(msgstr\s+("([^"]|\\\\")*?"\s*)+)/',
  +            '(msgstr\s+("([^"]|\\\\")*?"\s*)+)\s*(?=$|#)/',
               $contents, $matches
           );
           unset($contents);
           
           if (!$matched) {
  +            print "fail to match msgid/msgstr\n";
               return false;
           }
           
           // get all msgids and msgtrs
           for ($i = 0; $i < $matched; $i++) {
               $msgid = preg_replace(
  -                '/\s*msgid\s*"(.*)"\s*/s', '\\1', $matches[1][$i]);
  +                '/\s*msgid\s*"(.*)"\s*$/s', '\\1', $matches[1][$i]);
               $msgstr= preg_replace(
  -                '/\s*msgstr\s*"(.*)"\s*/s', '\\1', $matches[4][$i]);
  +                '/\s*msgstr\s*"(.*)"\s*$/s', '\\1', $matches[4][$i]);
               $this->strings[parent::prepare($msgid)] = parent::prepare($msgstr);
           }
           
  
  
  
  1.2       +13 -12    moniwiki/lib/Gettext/TGettext.php
  
  Index: TGettext.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/Gettext/TGettext.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- TGettext.php	18 Jan 2006 16:07:28 -0000	1.1
  +++ TGettext.php	18 Jan 2006 16:10:55 -0000	1.2
  @@ -12,7 +12,7 @@
    * {@link http://prado.sourceforge.net/}
    *
    * @author Wei Zhuo <weizhuo[at]gmail[dot]com>
  - * @version $Revision: 1.1 $  $Date: 2006/01/18 16:07:28 $
  + * @version $Revision: 1.2 $  $Date: 2006/01/18 16:10:55 $
    * @package System.I18N.core
    */
   
  @@ -28,7 +28,8 @@
   // | Copyright (c) 2004 Michael Wallner <mike@iworks.at>                  |
   // +----------------------------------------------------------------------+
   //
  -// $Id: TGettext.php,v 1.1 2006/01/18 16:07:28 wkpark Exp $
  +// $Id: TGettext.php,v 1.2 2006/01/18 16:10:55 wkpark Exp $
  +// orig Id: TGettext.php,v 1.4 2005/01/09 23:36:23 qiangxue Exp
   
   /**
    * File::Gettext
  @@ -52,7 +53,7 @@
    * #################################################################
    *
    * @author      Michael Wallner <mike@php.net>
  - * @version     $Revision: 1.1 $
  + * @version     $Revision: 1.2 $
    * @access      public
    * @package System.I18N.core 
    */
  @@ -66,7 +67,7 @@
        * @access  protected
        * @var     array
       */
  -    protected $strings = array();
  +    var $strings = array();
   
       /**
        * meta
  @@ -77,7 +78,7 @@
        * @access  protected
        * @var     array
        */
  -    protected $meta = array();
  +    var $meta = array();
       
       /**
        * file path
  @@ -85,7 +86,7 @@
        * @access  protected
        * @var     string
        */
  -    protected $file = '';
  +    var $file = '';
       
       /**
        * Factory
  @@ -101,8 +102,8 @@
       {
           $format = strToUpper($format);
           $filename = dirname(__FILE__).'/'.$format.'.php';
  -        if(is_file($filename) == false)
  -        	throw new Exception ("Class file $file not found");
  +        if(is_file($filename) == false) return false;
  +#        	throw new Exception ("Class file $file not found");
           	
           include_once $filename;
           $class = 'TGettext_' . $format;
  @@ -125,7 +126,8 @@
       function poFile2moFile($pofile, $mofile)
       {
           if (!is_file($pofile)) {
  -            throw new Exception("File $pofile doesn't exist.");
  +            return false;
  +            #throw new Exception("File $pofile doesn't exist.");
           }
           
           include_once dirname(__FILE__).'/PO.php';
  @@ -157,13 +159,12 @@
       {
           if ($reverse) {
               $smap = array('"', "\n", "\t", "\r");
  -            $rmap = array('\"', '\\n"' . "\n" . '"', '\\t', '\\r');
  +            $rmap = array('\\"', '\\n"' . "\n" . '"', '\\t', '\\r');
               return (string) str_replace($smap, $rmap, $string);
           } else {
  -        	$string = preg_replace('/"\s+"/', '', $string);
  -            $smap = array('\\n', '\\r', '\\t', '\"');
  -            $rmap = array("\n", "\r", "\t", '"');
  -            return (string) str_replace($smap, $rmap, $string);
  +            $smap = array('/"\s+"/', '/\\\\n/', '/\\\\r/', '/\\\\t/', '/\\\\"/');
  +            $rmap = array('', "\n", "\r", "\t", '"');
  +            return (string) preg_replace($smap, $rmap, $string);
           }
       }
       
  
  
  


wkpark      2006/01/19 01:12:27

  Added:       plugin   msgfmt.php
  Log:
  add a new po processor and a msgfmt action for dynamic translation.
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/msgfmt.php
  
  Index: msgfmt.php
  ===================================================================
  <?php
  // Copyright 2006 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a msgfmt plugin for the MoniWiki
  //
  // $Id: msgfmt.php,v 1.1 2006/01/18 16:12:27 wkpark Exp $
  
  function _pocheck($po,$showpo=0) {
      global $DBInfo;
      include_once 'lib/Gettext/PO.php';
  
      $myPO = new TGettext_PO;
      if (true !== ($e = $myPO->load($po,0))) {
          print "Fail to load po file.\n";
          return $e;
      }
  
      $myMO = $myPO->toMO();
  
      $vartmp_dir=$DBInfo->vartmp_dir;
      $tmp=tempnam($vartmp_dir,"GETTEXT");
      #$tmp=$vartmp_dir."/GETTEXT.mo";
  
      if (true !== ($e = $myMO->save($tmp))) {
          print "Fail to compile mo file.\n";
          return $e;
      }
      unset($myPO, $myMO);
      chmod($tmp,0644);
      unlink($tmp);
  
      print "OK\n";
      if ($showpo) print $po;
      return true;
  }
  
  function do_msgfmt($formatter,$options) {
      global $DBInfo;
  
      $po='';
      $domain='PoHello';
      if ($options['msgid'] and $options['msgstr']) {
          # just check a single msgstr
          header("Content-type: text/plain");
          $date=date('Y-m-d h:i+0900');
          $charset=strtoupper($DBInfo->charset);
          if (_stripslashes($options['msgid']) != '""')
              $po=<<<POHEAD
  msgid ""
  msgstr ""
  "Project-Id-Version: $domain 1.1\\n"
  "POT-Creation-Date: $date\\n"
  "PO-Revision-Date: $date\\n"
  "Last-Translator: MoniWiki <nobody@localhost>\\n"
  "Language-Team: moniwiki <ko@localhost>\\n"
  "MIME-Version: 1.0\\n"
  "Content-Type: text/plain; charset=$charset\\n"
  "Content-Transfer-Encoding: 8bit\\n"\n\n
  
  #: src/test.c\n
  POHEAD;
          $po.= 'msgid '._stripslashes($options['msgid'])."\n";
          #$msg=preg_replace('/""(?!")/',"\"\n\"",
          #    _stripslashes($options['msgstr']));
          $msg=_stripslashes($options['msgstr']);
          $po.= 'msgstr '.$msg."\n";
          $po.= "\n\n";
          _pocheck($po,1);
          return;
      }
  
      $msgkeys=array_keys($options);
      $msgids=preg_grep('/^msgid-/',$msgkeys);
      $msgstrs=preg_grep('/^msgstr-/',$msgkeys);
  
      if (sizeof($msgids) != sizeof($msgstrs)) {
          print "Invalid request.";
          return;
      }
  
      $rawpo= $formatter->page->_get_raw_body();
      $lines= explode("\n",$rawpo);
  
      $po='';
      $msgid=array(); $msgstr=array();
      foreach ($lines as $l) {
          if ($l[0]!='m' and !preg_match('/^\s*"/',$l)) {
              if ($msgstr) {
                  $mid=implode("\n",$msgid);
                  $id=md5($mid);
                  $po.='msgid '.preg_replace('/(\r\n|\r)/',"\n",
                      _stripslashes($options['msgid-'.$id]))."\n";
  
                  $msg=preg_replace('/(\r\n|\r)/',"\n",
                      _stripslashes($options['msgstr-'.$id]));
                  # fix msgstr
                  #$msg=preg_replace('/(?!<\\\\)"/','\\"',$msg);
                  $po.='msgstr '.$msg."\n";
  
                  # init
                  $msgid=array();$msgstr=array();
              }
              $po.=$l."\n"; continue;
          } else if (preg_match('/^(msgid|msgstr)\s+(".*")\s*$/',$l,$m)) {
              if ($m[1]=='msgid') {
                  $msgid[]=$m[2];
                  continue;        
              }
              $msgstr[]=$m[2];
          } else if (preg_match('/\s*(".*")\s*$/',$l,$m)) {
              if ($msgstr) continue;
              if ($msgid) $msgid[]=$m[1];
              continue;
          } else {
              $po.=$l."\n";
          }
      }
  
      header("Content-type: text/plain");
  
      $e=_pocheck($po);
      #if ($e != true) return;
      #print $po;
  
      include_once('lib/difflib.php');
      $rawpo=array_map(create_function('$a', 'return $a."\n";'),
              explode("\n",$rawpo));
      $po=array_map(create_function('$a', 'return $a."\n";'),
              explode("\n",$po));
      $diff = new Diff($rawpo, $po);
  
      $f = new UnifiedDiffFormatter;
      $f->trailing_cr="";
      $diffs = $f->format($diff);
      print $diffs;
  
      return;
  }
  
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2006/01/19 01:12:27

  Added:       plugin/processor po.php
  Log:
  add a new po processor and a msgfmt action for dynamic translation.
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/processor/po.php
  
  Index: po.php
  ===================================================================
  <?php
  // Copyright 2006 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a po processor for the MoniWiki
  //
  // $Id: po.php,v 1.1 2006/01/18 16:12:27 wkpark Exp $
  
  function processor_po($formatter,$value='') {
      if ($value[0]=='#' and $value[1]=='!')
          list($line,$value)=explode("\n",$value,2);
      if ($line) {
      }
  
      $lines= explode("\n",$value);
      unset($value);
  
      $out='';
      $msgstr=array();
      $msgid=array();
  
      $js=<<<JS
  <script language="javascript">
  /*<![CDATA[*/
  function checkmsg(obj) {
      var tok=obj.name.split("-");
      var id=tok[1];
  
      var msgid=document.getElementsByName('msgid' + '-' + id)[0];
      var msgstr=document.getElementsByName('msgstr' + '-' + id)[0];
      //alert(msgid.value + "\\n" + msgstr.value);
  
      var url=self.location;
      url = url + '?action=msgfmt&msgid=' +
          msgid.value + '&msgstr=' + msgstr.value;
  
      var msg=HTTPGet(url);
      alert ('*** AJAX msgfmt checker ***\\n' + msg);
  }
  /*]]>*/
  </script>
  JS;
  
      foreach ($lines as $l) {
          if ($l[0]!='m' and !preg_match('/^\s*"/',$l)) {
              if ($msgstr) {
                  $mid=implode("\n",$msgid);
                  $msg=implode("\n",$msgstr);
                  $msg=str_replace('"',"&#34;",$msg);
                  $vmid=str_replace('"',"&#34;",$mid);
                  $id=md5($mid);
                  $test= strpos($msg,"\n");
                  $row=max(sizeof($msgstr),sizeof($msgid));
                  $out.="<input type='hidden' name='msgid-$id' value=\"$vmid\"/>";
                  $btn=
                  "<input type='button' onclick='javascript:checkmsg(this)' name='check-$id' value='check' />";
                  if ($row > 1) {
                      $out.="msgid $mid\n";
                      $out.="msgstr\n<textarea cols='80' rows='$row' name='msgstr-$id'>"
                          .$msg."</textarea>$btn\n\n";
                  } else {
                      $sz=min(50,strlen($mid));
                      $out.="msgid $mid\n";
                      $out.="msgstr <input name='msgstr-$id' size='$sz' value=\"$msg\" /> $btn\n";
                  }
                  # reset
                  $msgid=array(); $msgstr=array();
              }
              if ($l[0] == '#') {
                  if ($l[1]==':')
                      $out.="<span class='posrc'>$l</span>\n";
                  else if ($l[1]==',')
                      $out.="<span class='potype'>$l</span>\n";
                  else if ($l[1]=='~')
                      $out.="<span class='poold'>$l</span>\n";
                  else if ($l[1]==' ')
                      $out.="<span class='pocomment'>$l</span>\n";
                  else $out.=$l."\n";
              } else {
                  $out.=$l."\n";
              }
          } else if (preg_match('/^(msgid|msgstr)\s+(\".*\")$/',$l,$m)) {
              if ($m[1]=='msgid') {
                  $msgid[]=$m[2];
              } else {
                  $msgstr[]=$m[2];
              }
          } else if (preg_match("/\".*\"$/",$l)) {
              if ($msgstr) $msgstr[]=$l;
              else $msgid[]=$l;
          }
      }
      #$text=str_replace(array('msgid','msgstr'),
      #        array('<span class="msgid">msgid</span>',
      #        '<span class="msgstr">msgstr</span>',
      #        '<span class="fuzzy">fuzzy</span>',)
      #        ,$value);
      #$out= preg_replace(array('/(%.)/','/(\\\\n)/'),
      #    array("<span class='posym'>\\1</span>",
      #    "<span class='potok'>\\1</span>",),
      #    $out);
      $link=$formatter->link_url($formatter->page->urlname,'?action=msgfmt');
      $formhead="<form method='post' action='$link'>"
           ."<input type='hidden' name='action' value='msgfmt'>";
      $formtail="<input type='submit' value='Update now' /></form>\n";
      return "$js$formhead<pre>$out</pre>$formtail";
  }
  
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2006/01/19 17:20:04

  Added:       data     PeignotNum.ttf
  Log:
  add a small/free truetype font for ticket images
  (Please see fontforge project)
  
  Revision  Changes    Path
  1.1                  moniwiki/data/PeignotNum.ttf
  
  	<<Binary file>>
  
  


wkpark      2006/01/19 17:20:39

  Modified:    data     intermap.txt
  Log:
  fix KTUGFaq url
  
  Revision  Changes    Path
  1.6       +2 -2      moniwiki/data/intermap.txt
  
  Index: intermap.txt
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/data/intermap.txt,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- intermap.txt	5 Apr 2005 10:25:15 -0000	1.5
  +++ intermap.txt	19 Jan 2006 08:20:39 -0000	1.6
  @@ -1,4 +1,4 @@
  -# $Id: intermap.txt,v 1.5 2005/04/05 10:25:15 wkpark Exp $
  +# $Id: intermap.txt,v 1.6 2006/01/19 08:20:39 wkpark Exp $
   # see http://usemod.com/intermap.txt 
   ISBN http://www.amazon.com/exec/obidos/ISBN=
   Wiki http://c2.com/cgi/wiki?
  @@ -37,6 +37,6 @@
   Jangnan http://jangnan.st/wiki/
   Xper http://xper.org/wiki/xp/
   PyKug http://www.python.or.kr/pykug/
  -KTUG http://faq.ktug.or.kr/mywiki/
  +KTUG http://faq.ktug.or.kr/faq/
   MoniWiki http://moniwiki.sf.net/wiki.php/
   KLDPWiki http://wiki.kldp.org/wiki/
  
  
  


wkpark      2006/01/19 17:26:18

  Modified:    .        wiki.php
  Log:
  add $hide_actions option
  support new pagealise syntax like as 'existpage<nonexistpage1,nonexistpage2'
  
  Revision  Changes    Path
  1.277     +29 -11    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.276
  retrieving revision 1.277
  diff -u -r1.276 -r1.277
  --- wiki.php	18 Jan 2006 16:03:33 -0000	1.276
  +++ wiki.php	19 Jan 2006 08:26:18 -0000	1.277
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.276 2006/01/18 16:03:33 wkpark Exp $
  +// $Id: wiki.php,v 1.277 2006/01/19 08:26:18 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.276 $',1,-1);
  +$_revision = substr('$Revision: 1.277 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -358,9 +358,18 @@
     function MetaDB_text($file) {
       $lines=file($file);
       foreach ($lines as $line) {
  -      if ($line[0]=='#') continue;
  -      list($key,$list)=explode(',',rtrim($line),2);
  -      $this->db[$key]=$list;
  +      if ($line[0]=='#' or !trim($line)) continue;
  +      if (($p=strpos($line,'<')) !== false) {
  +        list($val,$keys)=explode('<',trim($line),2);
  +        $keys=explode(',',$keys);
  +
  +        foreach ($keys as $k) {
  +          $this->db[$k]=$this->db[$k] ? $this->db[$k].','.$val:$val;
  +        }
  +      } else {
  +        list($key,$list)=explode(',',trim($line),2);
  +        $this->db[$key]=$list;
  +      }
       }
     }
   
  @@ -2128,6 +2137,11 @@
               "$sisters <br/>";
             $this->pagelinks[$page]=$this->sister_idx++;
             $idx=$this->pagelinks[$page];
  +          #if (strpos($sisters,' ') === false and $this->use_smartsister) {
  +          #  $url=$this->link_repl(substr($sisters,0,-1).' '.$word.']');
  +          #  return "$url";
  +          #  return "<a href='$url'>$word</a>";
  +          #}
           }
           if ($idx > 0) {
             return "<a href='$url'>$word</a>".
  @@ -3281,12 +3295,16 @@
         $args['editable']=-1;
       
       $menus=$this->get_actions($args,$options);
  -    if (!$this->css_friendly) {
  -      $menu=$this->menu_bra.implode($this->menu_sep,$menus).$this->menu_cat;
  -    } else {
  -      $menu="<div id='wikiAction'>";
  -      $menu.='<ul><li>'.implode("</li>\n<li>\n",$menus)."</li></ul>";
  -      $menu.="</div>";
  +
  +    if (!$DBInfo->hide_actions or
  +      ($DBInfo->hide_actions and $options['id']!='Anonymous')) {
  +      if (!$this->css_friendly) {
  +        $menu=$this->menu_bra.implode($this->menu_sep,$menus).$this->menu_cat;
  +      } else {
  +        $menu="<div id='wikiAction'>";
  +        $menu.='<ul><li>'.implode("</li>\n<li>\n",$menus)."</li></ul>";
  +        $menu.="</div>";
  +      }
       }
   
       if ($mtime=$this->page->mtime()) {
  
  
  


wkpark      2006/01/19 17:28:03

  Modified:    plugin   msgfmt.php
  Log:
  more fixes. check fuzzy etc.
  
  Revision  Changes    Path
  1.2       +68 -19    moniwiki/plugin/msgfmt.php
  
  Index: msgfmt.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/msgfmt.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- msgfmt.php	18 Jan 2006 16:12:27 -0000	1.1
  +++ msgfmt.php	19 Jan 2006 08:28:03 -0000	1.2
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a msgfmt plugin for the MoniWiki
   //
  -// $Id: msgfmt.php,v 1.1 2006/01/18 16:12:27 wkpark Exp $
  +// $Id: msgfmt.php,v 1.2 2006/01/19 08:28:03 wkpark Exp $
   
   function _pocheck($po,$showpo=0) {
       global $DBInfo;
  @@ -69,6 +69,25 @@
           return;
       }
   
  +    if ($options['po'] and $options['btn']) {
  +        $formatter->send_header('',$options);
  +        $formatter->send_title(sprintf(_("Translation of %s"),$options['page']),'',$options);
  +
  +        $comment=$options['comment'] ? _stripslashes($options['comment']):
  +            "Translations are updated";
  +        $po=preg_replace("/(\r\n|\r)/","\n",
  +                    _stripslashes($options['po']));
  +        $formatter->page->write($po);
  +        $ret=$DBInfo->savePage($formatter->page,$comment,$options);
  +        if ($ret != -1) {
  +            print "<h2>"._("Translations are successfully updated.")."</h2>";
  +        } else {
  +            print "<h2>"._("Fail to save translations.")."</h2>";
  +        }
  +        $formatter->send_footer('',$options);
  +        return;
  +    }
  +
       $msgkeys=array_keys($options);
       $msgids=preg_grep('/^msgid-/',$msgkeys);
       $msgstrs=preg_grep('/^msgstr-/',$msgkeys);
  @@ -82,58 +101,88 @@
       $lines= explode("\n",$rawpo);
   
       $po='';
  +    $comment='';
       $msgid=array(); $msgstr=array();
       foreach ($lines as $l) {
           if ($l[0]!='m' and !preg_match('/^\s*"/',$l)) {
               if ($msgstr) {
                   $mid=implode("\n",$msgid);
                   $id=md5($mid);
  -                $po.='msgid '.preg_replace('/(\r\n|\r)/',"\n",
  -                    _stripslashes($options['msgid-'.$id]))."\n";
   
  -                $msg=preg_replace('/(\r\n|\r)/',"\n",
  +                $msg=preg_replace("/(\r\n|\r)/","\n",
                       _stripslashes($options['msgstr-'.$id]));
  +
  +                $sid=md5(rtrim($msg));
  +                if ($options['md5sum-'.$id] and $options['md5sum-'.$id]!= $sid){
  +                    $comment=preg_replace('/#, fuzzy\n/m','',$comment);
  +                    $comment=str_replace(', fuzzy','',$comment);
  +                }
                   # fix msgstr
                   #$msg=preg_replace('/(?!<\\\\)"/','\\"',$msg);
  +                $po.=$comment;
  +                $po.='msgid '.preg_replace('/(\r\n|\r)/',"\n",
  +                    _stripslashes($options['msgid-'.$id]))."\n";
                   $po.='msgstr '.$msg."\n";
   
                   # init
  -                $msgid=array();$msgstr=array();
  +                $msgid=array();$msgstr=array();$comment='';
  +            } 
  +            if ($l[0]=='#' and $l[1]==',') {
  +                if ($comment) {$po.=$comment;$comment='';}
  +                $comment.=$l."\n";
  +            } else {
  +                if ($comment) {$po.=$comment;$comment='';}
  +                $po.=$l."\n"; continue;
               }
  -            $po.=$l."\n"; continue;
           } else if (preg_match('/^(msgid|msgstr)\s+(".*")\s*$/',$l,$m)) {
               if ($m[1]=='msgid') {
                   $msgid[]=$m[2];
                   continue;        
               }
               $msgstr[]=$m[2];
  -        } else if (preg_match('/\s*(".*")\s*$/',$l,$m)) {
  -            if ($msgstr) continue;
  -            if ($msgid) $msgid[]=$m[1];
  -            continue;
  +        } else if (preg_match('/^\s*(".*")\s*$/',$l,$m)) {
  +            if ($msgstr) $msgstr[]=$m[1];
  +            else $msgid[]=$m[1];
           } else {
               $po.=$l."\n";
           }
       }
   
  -    header("Content-type: text/plain");
  +    $formatter->send_header('',$options);
  +    $formatter->send_title(sprintf(_("Translation of %s"),$options['page']),'',$options);
   
       $e=_pocheck($po);
       #if ($e != true) return;
       #print $po;
   
  -    include_once('lib/difflib.php');
  -    $rawpo=array_map(create_function('$a', 'return $a."\n";'),
  +    $url=$formatter->link_url($formatter->page->urlname);
  +    print "<form method='post' action='$url'>\n".
  +        "<input type='hidden' name='action' value='msgfmt' />\n";
  +    print "<input type='submit' name='btn' value='Save Translation ?' /> ";
  +    print "Summary:".
  +        " <input type='text' size='60' name='comment' value='Translations are updated' />".
  +        "<br />\n";
  +    if ($options['patch']) {
  +        include_once('lib/difflib.php');
  +        $rawpo=array_map(create_function('$a', 'return $a."\n";'),
               explode("\n",$rawpo));
  -    $po=array_map(create_function('$a', 'return $a."\n";'),
  +        $newpo=array_map(create_function('$a', 'return $a."\n";'),
               explode("\n",$po));
  -    $diff = new Diff($rawpo, $po);
  +        $diff = new Diff($rawpo, $newpo);
   
  -    $f = new UnifiedDiffFormatter;
  -    $f->trailing_cr="";
  -    $diffs = $f->format($diff);
  -    print $diffs;
  +        $f = new UnifiedDiffFormatter;
  +        $f->trailing_cr="";
  +        $diffs = $f->format($diff);
  +        $sz=sizeof(explode("\n",$diffs));
  +        print "<textarea cols='80' rows='$sz' style='width:80%'>";
  +        print $diffs;
  +        print "</textarea>\n";
  +    }
  +    $po=str_replace('"',"&#34;",$po);
  +    print "<input type='hidden' name='po' value=\"$po\" />\n";
  +    print "</form>";
   
  +    $formatter->send_footer('',$options);
       return;
   }
   
  
  
  


wkpark      2006/01/19 17:28:04

  Modified:    plugin/processor po.php
  Log:
  more fixes. check fuzzy etc.
  
  Revision  Changes    Path
  1.2       +12 -7     moniwiki/plugin/processor/po.php
  
  Index: po.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/po.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- po.php	18 Jan 2006 16:12:27 -0000	1.1
  +++ po.php	19 Jan 2006 08:28:03 -0000	1.2
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a po processor for the MoniWiki
   //
  -// $Id: po.php,v 1.1 2006/01/18 16:12:27 wkpark Exp $
  +// $Id: po.php,v 1.2 2006/01/19 08:28:03 wkpark Exp $
   
   function processor_po($formatter,$value='') {
       if ($value[0]=='#' and $value[1]=='!')
  @@ -45,12 +45,14 @@
               if ($msgstr) {
                   $mid=implode("\n",$msgid);
                   $msg=implode("\n",$msgstr);
  +                $sid=md5(preg_replace("/(\r\n|\r)/","\n",rtrim($msg)));
  +                $id=md5($mid);
                   $msg=str_replace('"',"&#34;",$msg);
                   $vmid=str_replace('"',"&#34;",$mid);
  -                $id=md5($mid);
                   $test= strpos($msg,"\n");
                   $row=max(sizeof($msgstr),sizeof($msgid));
  -                $out.="<input type='hidden' name='msgid-$id' value=\"$vmid\"/>";
  +                $out.="<input type='hidden' name='msgid-$id' value=\"$vmid\" />";
  +                $out.="<input type='hidden' name='md5sum-$id' value=\"$sid\" />";
                   $btn=
                   "<input type='button' onclick='javascript:checkmsg(this)' name='check-$id' value='check' />";
                   if ($row > 1) {
  @@ -84,9 +86,9 @@
               } else {
                   $msgstr[]=$m[2];
               }
  -        } else if (preg_match("/\".*\"$/",$l)) {
  -            if ($msgstr) $msgstr[]=$l;
  -            else $msgid[]=$l;
  +        } else if (preg_match("/^\s*(\".*\")\s*$/",$l,$m)) {
  +            if ($msgstr) $msgstr[]=$m[1];
  +            else $msgid[]=$m[1];
           }
       }
       #$text=str_replace(array('msgid','msgstr'),
  @@ -101,7 +103,10 @@
       $link=$formatter->link_url($formatter->page->urlname,'?action=msgfmt');
       $formhead="<form method='post' action='$link'>"
            ."<input type='hidden' name='action' value='msgfmt'>";
  -    $formtail="<input type='submit' value='Update now' /></form>\n";
  +    $formtail=
  +        "<input type='submit' value='Check all' />\n".
  +        "<input type='checkbox' name='patch' checked='checked' />: Show patch\n".
  +        "</form>\n";
       return "$js$formhead<pre>$out</pre>$formtail";
   }
   
  
  
  


wkpark      2006/01/19 17:28:58

  Modified:    plugin   Diff.php
  Log:
  check the format of selected page.
  
  Revision  Changes    Path
  1.9       +5 -1      moniwiki/plugin/Diff.php
  
  Index: Diff.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Diff.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Diff.php	18 Jan 2006 15:57:12 -0000	1.8
  +++ Diff.php	19 Jan 2006 08:28:58 -0000	1.9
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a diff plugin for the MoniWiki
   //
  -// $Id: Diff.php,v 1.8 2006/01/18 15:57:12 wkpark Exp $
  +// $Id: Diff.php,v 1.9 2006/01/19 08:28:58 wkpark Exp $
   
   function simple_diff($diff) {
     $diff=str_replace("<","&lt;",$diff);
  @@ -145,6 +145,10 @@
     else
       $type=$DBInfo->diff_type.'_diff';
   
  +  $pi=$formatter->get_instructions($dum);
  +  if ($pi['#format']) # is it not wiki format ?
  +    $type=$DBInfo->diff_type.'_diff'; # use default diff format
  +
     if ($options['text']) {
       $out= $options['text'];
       if (!$options['raw'])
  
  
  


wkpark      2006/01/19 17:29:36

  Modified:    plugin   ticket.php
  Log:
  $ticket_font_size option added
  
  Revision  Changes    Path
  1.3       +2 -2      moniwiki/plugin/ticket.php
  
  Index: ticket.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/ticket.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ticket.php	7 Jan 2006 05:58:48 -0000	1.2
  +++ ticket.php	19 Jan 2006 08:29:36 -0000	1.3
  @@ -2,7 +2,7 @@
   // Copyright 2005 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a ticket plugin for the MoniWiki
  -// $Id: ticket.php,v 1.2 2006/01/07 05:58:48 wkpark Exp $
  +// $Id: ticket.php,v 1.3 2006/01/19 08:29:36 wkpark Exp $
   
   function _effect_blur($image,$color,$dx=1,$dy=0) {
   // please see http://www.hudzilla.org/phpbook/read.php/11_2_23
  @@ -93,7 +93,7 @@
       }
           
       if ($use_ttf) {
  -        $pointsize=16;
  +        $pointsize=$DBInfo->ticket_font_size ? $DBInfo->ticket_font_size:16;
           $angle=0;
           //$size = Imagettfbbox($pointsize, 0, $FONT, $passwd);
           // XXX segfault :(
  
  
  


wkpark      2006/01/19 17:30:19

  Modified:    plugin   Keywords.php
  Log:
  add a 'suggest' option
  
  Revision  Changes    Path
  1.11      +7 -6      moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- Keywords.php	14 Jan 2006 14:30:19 -0000	1.10
  +++ Keywords.php	19 Jan 2006 08:30:19 -0000	1.11
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a 'Keywords' plugin for the MoniWiki
   //
  -// $Id: Keywords.php,v 1.10 2006/01/14 14:30:19 wkpark Exp $
  +// $Id: Keywords.php,v 1.11 2006/01/19 08:30:19 wkpark Exp $
   
   define(LOCAL_KEYWORDS,'LocalKeywords');
   
  @@ -23,7 +23,8 @@
               $tag_link='http://www.technorati.com/tag/$TAG';
           else if ($opt == 'flickr')
               $tag_link='http://www.flickr.com/photos/tags/$TAG';
  -        else if ($opt=='all') $options['all']=1;
  +        else if ($opt=='all') { $options['all']=1; $limit=0; }
  +        else if ($opt=='suggest') $options['suggest']=1;
           else if (($p=strpos($opt,'='))!==false) {
               $k=substr($opt,0,$p);
               $v=substr($opt,$p+1);
  @@ -78,7 +79,7 @@
       }
   
       # automatically generate list of keywords
  -    if (!$options['all'] and (!$words or $options['checknew'])):
  +    if (!$options['all'] and (!$words or $options['suggest'])):
   
       $common= <<<EOF
   am an a b c d e f g h i j k l m n o p q r s t u v w x y z
  @@ -263,9 +264,9 @@
               $btn=_("Add keywords");
           $btn1=_("Add as common words"); 
           $btn2=_("Unselect all"); 
  -        $btnc=_("Check new Keywords"); 
  +        $btnc=_("Suggest new Keywords"); 
           $form_close="<input type='submit' value='$btn'/>\n";
  -        $form_close.="<input type='submit' name='checknew' value='$btnc' />\n";
  +        $form_close.="<input type='submit' name='suggest' value='$btnc' />\n";
           $form_close.="<input type='submit' name='common' value='$btn1' />\n";
           $form_close.="<input type='button' value='$btn2' onClick='UncheckAll(this)' />\n";
           $form_close.="<select name='lang'><option>---</option>\n";
  @@ -343,7 +344,7 @@
   
       $formatter->send_header('',$options);
   
  -    if (!$options['checknew'] and
  +    if (!$options['suggest'] and
           (is_array($options['key']) or $options['keywords'])) {
           if ($options['keywords']) {
               // following keyword list are acceptable separated with spaces.
  
  
  


wkpark      2006/01/19 23:11:55

  Modified:    .        wiki.php wikilib.php
  Log:
  fixed template related msgs and user interface
  
  Revision  Changes    Path
  1.278     +10 -5     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.277
  retrieving revision 1.278
  diff -u -r1.277 -r1.278
  --- wiki.php	19 Jan 2006 08:26:18 -0000	1.277
  +++ wiki.php	19 Jan 2006 14:11:55 -0000	1.278
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.277 2006/01/19 08:26:18 wkpark Exp $
  +// $Id: wiki.php,v 1.278 2006/01/19 14:11:55 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.277 $',1,-1);
  +$_revision = substr('$Revision: 1.278 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -3857,10 +3857,15 @@
             print $err['extra'];
   
           print "<hr />\n$button";
  -        print _(" or alternativly, use one of these templates:\n");
           $options['linkto']="?action=edit&amp;template=";
  -        print macro_TitleSearch($formatter,$DBInfo->template_regex,$options);
  -        print _("To create your own templates, add a page with a 'Template' suffix.\n");
  +        $tmpls= macro_TitleSearch($formatter,$DBInfo->template_regex,$options);
  +        if ($tmpls) {
  +          print _(" or alternativly, use one of these templates:\n");
  +          print $tmpls;
  +        } else {
  +          print "<h3>"._("You have no templates")."</h3>";
  +        }
  +        print sprintf(_("To create your own templates, add a page with '%s' pattern.\n"),$DBInfo->template_regex);
         }
   
         $args['editable']=1;
  
  
  
  1.198     +10 -7     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.197
  retrieving revision 1.198
  diff -u -r1.197 -r1.198
  --- wikilib.php	18 Jan 2006 16:03:33 -0000	1.197
  +++ wikilib.php	19 Jan 2006 14:11:55 -0000	1.198
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.197 2006/01/18 16:03:33 wkpark Exp $
  +// $Id: wikilib.php,v 1.198 2006/01/19 14:11:55 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -659,11 +659,14 @@
   
     $preview= $options['preview'];
   
  -  if (!$formatter->page->exists()) {
  +  if (!$formatter->page->exists() and !$preview) {
       $options['linkto']="?action=edit&amp;template=";
  -    $form = '<br />'._("Use one of the following templates as an initial release :\n");
  -    $form.= macro_TitleSearch($formatter,$DBInfo->template_regex,$options);
  -    $form.= _("To create your own templates, add a page with a 'Template' suffix.")."\n<br />\n";
  +    $tmpls= macro_TitleSearch($formatter,$DBInfo->template_regex,$options);
  +    if ($tmpls) {
  +      $form = '<br />'._("Use one of the following templates as an initial release :\n");
  +      $form.=$tmpls;
  +      $form.= sprintf(_("To create your own templates, add a page with '%s' pattern."),$DBInfo->template_regex)."\n<br />\n";
  +    }
     }
   
     $merge_btn=_("Merge");
  @@ -2416,8 +2419,8 @@
   
     sort($hits);
   
  -  $out="<${type}l>\n";
     $idx=1;
  +  $out='';
     foreach ($hits as $pagename) {
       if ($opts['linkto'])
         $out.= '<li>' . $formatter->link_to("$opts[linkto]$pagename",$pagename,"tabindex='$idx'")."</li>\n";
  @@ -2426,7 +2429,7 @@
       $idx++;
     }
   
  -  $out.="</${type}l>\n";
  +  if ($out) $out="<${type}l>$out</${type}l>\n";
     $opts['hits']= count($hits);
     if ($opts['hits']==1)
       $opts['value']=array_pop($hits);
  
  
  


wkpark      2006/01/19 23:13:46

  Modified:    plugin/filter antispam.php
  Log:
  fix to work with no bad contents
  
  Revision  Changes    Path
  1.4       +2 -1      moniwiki/plugin/filter/antispam.php
  
  Index: antispam.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/filter/antispam.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- antispam.php	11 Sep 2005 07:38:42 -0000	1.3
  +++ antispam.php	19 Jan 2006 14:13:46 -0000	1.4
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Antispam filter plugin for the MoniWiki
   //
  -// $Id: antispam.php,v 1.3 2005/09/11 07:38:42 wkpark Exp $
  +// $Id: antispam.php,v 1.4 2006/01/19 14:13:46 wkpark Exp $
   
   function filter_antispam($formatter,$value,$options) {
       $blacklist_pages=array('BadContent','LocalBadContent');
  @@ -15,6 +15,7 @@
               $p=new WikiPage($list);
               if ($p->exists()) $badcontent.=$p->get_raw_body();
           }
  +        if (!$badcontent) return $value;
           $badcontents=explode("\n",$badcontent);
           $pattern[0]='';
           $i=0;
  
  
  


wkpark      2006/01/19 23:15:30

  Modified:    css      _extra.css print.css
  Log:
  add some css entries for msgfmt
  use _base.css in the print.css
  
  Revision  Changes    Path
  1.3       +9 -0      moniwiki/css/_extra.css
  
  Index: _extra.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_extra.css,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- _extra.css	23 Sep 2005 17:15:11 -0000	1.2
  +++ _extra.css	19 Jan 2006 14:15:30 -0000	1.3
  @@ -116,3 +116,12 @@
     border:0;
   }
   
  +/* for po processor */
  +.msgid { color:blue; }
  +.msgstr { color:blue; }
  +.pofuzzy { color:red; }
  +.potype { color:blue; }
  +.posrc { color:red; }
  +.poold { color:#909090; }
  +.posym { color:red; }
  +.potok { color:violet; }
  
  
  
  1.9       +1 -0      moniwiki/css/print.css
  
  Index: print.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/print.css,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- print.css	23 Sep 2005 17:15:11 -0000	1.8
  +++ print.css	19 Jan 2006 14:15:30 -0000	1.9
  @@ -1,4 +1,5 @@
   @import url("_user.css");
  +@import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
   
  
  
  


wkpark      2006/01/19 23:16:15

  Modified:    css      _base.css
  Log:
  add img related css class: interwiki,url,icon etc.
  
  Revision  Changes    Path
  1.4       +30 -15    moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- _base.css	10 Jan 2006 12:29:38 -0000	1.3
  +++ _base.css	19 Jan 2006 14:16:15 -0000	1.4
  @@ -57,7 +57,11 @@
   }
   
   #wikiAction a {
  -  font-size:small;
  +  font-size:12px;
  +}
  +
  +#wikiBanner {
  +  clear:both;
   }
   
   tt.wiki {font-family:monospace;}
  @@ -120,15 +124,11 @@
   }
   
   div.diff-added {
  -  font-family:Lucida Sans TypeWriter,Lucida Console,monospace;
  -  background-color:#E0FFE0;
  -  color:black;
  +  background-color:#ccffcc;
   }
   
   div.diff-removed {
  -  font-family:Lucida Sans TypeWriter,Lucida Console,monospace;
  -  background-color:#E9EAB8;
  -  color:black;
  +  background-color:#EEBfbb;
   }
   
   div.diff-sep {
  @@ -137,24 +137,19 @@
   }
   
   span.diff-added, ins.diff-added {
  -  color:black;
     background-color: #60FF60;
     text-decoration: none;
   }
   
   span.diff-removed, del.diff-removed {
  -  color:black;
     background-color: #FF0000;
   }
   
   div.message {
  -  margin-top: 6pt;
     background-color: #E8E8E8;
  -  border-style:solid;
  -  border-width:1pt;
  -  border-color:#990000;
  +  border:2px solid #ff0000;
     color:#440000;
  -  padding:0px;
  +  padding:4px;
   }
   
   .highlight {
  @@ -167,7 +162,7 @@
   
   span.goto, input.goto {
     font-family:sans-serif;
  -  font-size:10px;
  +  font-size:11px;
   }
   
   table.closure, td.closure{
  @@ -246,6 +241,10 @@
     margin-left: 10px;
   }
   
  +#wikiIcon img, #wikiMenu img {
  +  vertical-align: middle;
  +}
  +
   * html #wikiIcon {
     visibility:visible; /* for IE */
   }
  @@ -289,6 +288,22 @@
     font-style: normal;
   }
   
  +img.interwiki {
  +  vertical-align:middle; /* */
  +}
  +
  +img.smiley {
  +  vertical-align:middle; /* */
  +}
  +
  +img.url {
  +  vertical-align:middle; /* */
  +}
  +
  +img.icon {
  +  vertical-align:middle; /* */
  +}
  +
   img.imgLeft {
     margin-right : 15px;
     margin-bottom : 5px;
  
  
  


wkpark      2006/01/20 07:49:10

  Modified:    .        wikilib.php
  Log:
  fixed tabindex for titlesearch results.
  
  Revision  Changes    Path
  1.199     +2 -1      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.198
  retrieving revision 1.199
  diff -u -r1.198 -r1.199
  --- wikilib.php	19 Jan 2006 14:11:55 -0000	1.198
  +++ wikilib.php	19 Jan 2006 22:49:10 -0000	1.199
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.198 2006/01/19 14:11:55 wkpark Exp $
  +// $Id: wikilib.php,v 1.199 2006/01/19 22:49:10 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2420,6 +2420,7 @@
     sort($hits);
   
     $idx=1;
  +  if ($opts['linkto']) $idx=10;
     $out='';
     foreach ($hits as $pagename) {
       if ($opts['linkto'])
  
  
  


wkpark      2006/01/20 07:52:06

  Modified:    plugin   login.php userform.php
  Log:
  fixed logout behavior as expected. patched by kz
  
  Revision  Changes    Path
  1.7       +3 -3      moniwiki/plugin/login.php
  
  Index: login.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/login.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- login.php	21 Oct 2004 08:27:01 -0000	1.6
  +++ login.php	19 Jan 2006 22:52:06 -0000	1.7
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Login]]
   //
  -// $Id: login.php,v 1.6 2004/10/21 08:27:01 wkpark Exp $
  +// $Id: login.php,v 1.7 2006/01/19 22:52:06 wkpark Exp $
   
   function macro_login($formatter,$value="",$options="") {
     global $DBInfo;
  @@ -43,7 +43,7 @@
     $option=_("UserPreferences");
     return <<<LOGOUT
   <div id='wikiLogin'>
  -<form method='post' action='$url'>
  +<form method='post' action='$urlpage'>
   <input type="hidden" name="action" value="userform" />
   <a href='$url'>$option</a> or <input type='submit' name="logout" value="$button"/>
   </form>
  @@ -51,5 +51,5 @@
   LOGOUT;
   }
   
  -// vim:et:ts=2:
  +// vim:et:sts=2:
   ?>
  
  
  
  1.15      +2 -2      moniwiki/plugin/userform.php
  
  Index: userform.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/userform.php,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- userform.php	7 Jan 2006 05:57:50 -0000	1.14
  +++ userform.php	19 Jan 2006 22:52:06 -0000	1.15
  @@ -4,7 +4,7 @@
   // a userform action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: userform.php,v 1.14 2006/01/07 05:57:50 wkpark Exp $
  +// $Id: userform.php,v 1.15 2006/01/19 22:52:06 wkpark Exp $
   
   function do_userform($formatter,$options) {
     global $DBInfo;
  @@ -102,7 +102,7 @@
     } else if ($options['logout']) {
       # logout
       $formatter->header($user->unsetCookie());
  -    $title= _("Cookie deleted !");
  +    $options['msg']= _("Cookie deleted !");
     } else if ($DBInfo->use_sendmail and
       $options['login'] == _("E-mail new password") and
       $user->id=="Anonymous" and $options['email'] and $options['login_id']) {
  
  
  


wkpark      2006/01/20 07:53:39

  Modified:    plugin   Info.php
  Log:
  add $info_options "simple" and "ago". you can use both options like as follow
  $info_options='simple,ago'
  
  Revision  Changes    Path
  1.10      +58 -15    moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Info.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- Info.php	8 Jan 2006 12:52:57 -0000	1.9
  +++ Info.php	19 Jan 2006 22:53:39 -0000	1.10
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Info plugin for the MoniWiki
   //
  -// $Id: Info.php,v 1.9 2006/01/08 12:52:57 wkpark Exp $
  +// $Id: Info.php,v 1.10 2006/01/19 22:53:39 wkpark Exp $
   
   function _parse_rlog($formatter,$log,$options=array()) {
     global $DBInfo;
  @@ -13,21 +13,28 @@
       $udb=new UserDB($DBInfo);
       $udb->checkUser($user);
       $tz_offset=$user->info['tz_offset'];
  +  } else {
  +    $tz_offset=$options['tz_offset'];
     }
     $state=0;
     $flag=0;
   
  +  $time_current=time();
  +
  +  $simple=$options['simple'] ? 1:0;
  +
     $url=$formatter->link_url($formatter->page->urlname);
   
     $out="<h2>"._("Revision History")."</h2>\n";
     $out.="<table class='info' border='0' cellpadding='3' cellspacing='2'>\n";
     $out.="<form id='infoform' method='post' action='$url'>";
  -  $out.="<th class='info'>#</th><th class='info'>Date and Changes</th>".
  +  $out.="<th class='info'>ver.</th><th class='info'>Date and Changes</th>".
          "<th class='info'>Editor</th>".
  -       "<th><input type='submit' value='diff'></th>".
  -       "<th class='info'>actions</th>".
  +       "<th class='info'><input type='submit' value='diff'></th>";
  +  if (!$simple) {
  +    $out.="<th class='info'>actions</th>".
          "<th class='info'>admin.</th>";
  -       #"<th><input type='submit' value='admin'></th>";
  +  }
     $out.= "</tr>\n";
   
     $users=array();
  @@ -42,7 +49,7 @@
       }
       if ($state==1 and $ok==1) {
         $lnk=$formatter->link_to("?action=info&all=1",_("Show all revisions"));
  -      $out.='<tr><td colspan="3"></td><th colspan="3">'.$lnk.'</th></tr>';
  +      $out.='<tr><td colspan="2"></td><th colspan="4">'.$lnk.'</th></tr>';
         break;
       }
       
  @@ -59,10 +66,29 @@
         case 2:
            $inf=preg_replace("/date:\s(.*);\s+author:.*;\s+state:.*;/","\\1",$line);
            list($inf,$change)=explode('lines:',$inf,2);
  -         if ($tz_offset !='')
  -           $inf=gmdate("Y-m-d H:i:s",strtotime($inf.' GMT')+$tz_offset);
  -         else
  -           $inf=date("Y-m-d H:i:s",strtotime($inf)); // localtime
  +
  +         if ($options['ago']) {
  +           $ed_time=strtotime($inf.' GMT');
  +           $time_diff=(int)($time_current - $ed_time)/60;
  +           if ($time_diff > 1440*14) {
  +             $inf=gmdate("Y-m-d H:i:s",strtotime($inf.' GMT')+$tz_offset);
  +           } else if (($time_diff=$time_diff/60) > 24) {
  +             $day=(int)($time_diff/24);
  +             if ($day==1) $inf=_("Yesterday");
  +             else $inf=sprintf(_("%s days ago"),(int)($time_diff/24));
  +           } else if ($time_diff > 1) {
  +             $inf=sprintf(_("%s hours ago"),(int)$time_diff);
  +           } else {
  +             $inf=sprintf(_("%s min ago"),$time_diff%60);
  +           }
  +
  +         } else {
  +           if ($tz_offset !='')
  +             $inf=gmdate("Y-m-d H:i:s",strtotime($inf.' GMT')+$tz_offset);
  +           else
  +             $inf=date("Y-m-d H:i:s",strtotime($inf)); // localtime
  +         }
  +         $inf=$formatter->link_to("?action=recall&rev=$rev",$inf);
   
            $change=preg_replace("/\+(\d+)\s\-(\d+)/",
              "<span class='diff-added'>+\\1</span><span class='diff-removed'>-\\2</span>",$change);
  @@ -91,7 +117,7 @@
         case 4:
            if (!$rev) break;
            $rowspan=1;
  -         if ($comment) $rowspan=2;
  +         if (!$simple and $comment) $rowspan=2;
            $out.="<tr>\n";
            $out.="<th valign='top' rowspan=$rowspan>r$rev</th><td nowrap='nowrap'>$inf $change</td><td>$ip&nbsp;</td>";
            $achecked="";
  @@ -100,9 +126,10 @@
               $achecked="checked ";
            else if (!$flag)
               $bchecked="checked ";
  -         $out.="<td nowrap='nowrap'><input type='radio' name='rev' value='$rev' $achecked/>";
  -         $out.="<input type='radio' name='rev2' value='$rev' $bchecked/>";
  +         $out.="<th nowrap='nowrap'><input type='radio' name='rev' value='$rev' $achecked/>";
  +         $out.="<input type='radio' name='rev2' value='$rev' $bchecked/></th>";
   
  +         if (!$simple) {
            $out.="<td nowrap='nowrap'>".$formatter->link_to("?action=recall&rev=$rev","view").
                  " ".$formatter->link_to("?action=raw&rev=$rev","raw");
            if ($flag) {
  @@ -113,8 +140,9 @@
               $out.="</td><th>";
               $out.="<input type='image' src='$DBInfo->imgs_dir/smile/checkmark.png' onClick=\"ToggleAll('infoform');return false;\"/>";
            }
  -         $out.="</th></tr>\n";
  -         if ($comment)
  +         }
  +         $out.="</tr>\n";
  +         if (!$simple and $comment)
               $out.="<tr><td class='info' colspan='5'>$comment&nbsp;</td></tr>\n";
            $state=1;
            $flag++;
  @@ -123,18 +151,33 @@
            break;
        }
     }
  +  if (!$simple) {
     $out.="<tr><td colspan='6' align='right'><input type='checkbox' name='show' checked='checked' />show only ";
     if ($DBInfo->security->is_protected("rcspurge",$options)) {
       $out.="<input type='password' name='passwd'>";
     }
     $out.="<input type='submit' name='rcspurge' value='purge'></td></tr>";
  +  }
     $out.="<input type='hidden' name='action' value='diff'/></form></table>\n";
  +  if (!$simple) {
     $out.="<script type='text/javascript' src='$DBInfo->url_prefix/local/checkbox.js'></script>\n";
  +  }
     return $out; 
   }
   
   function macro_info($formatter,$value,$options=array()) {
     global $DBInfo;
  +
  +  $value=$value ? $value:$DBInfo->info_options;
  +  $args=explode(',',$value);
  +  if (is_array($args)) {
  +    foreach ($args as $arg) {
  +      $arg=trim($arg);
  +      if ($arg=='simple') $options['simple']=1;
  +      else if ($arg=='ago') $options['ago']=1;
  +    }
  +  }
  +
     if ($DBInfo->version_class) {
       getModule('Version',$DBInfo->version_class);
       $class="Version_".$DBInfo->version_class;
  
  
  


wkpark      2006/01/20 12:21:30

  Modified:    plugin   Diff.php
  Log:
  fixed detection method.
  type option added to macro_diff()
  
  Revision  Changes    Path
  1.10      +21 -8     moniwiki/plugin/Diff.php
  
  Index: Diff.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Diff.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- Diff.php	19 Jan 2006 08:28:58 -0000	1.9
  +++ Diff.php	20 Jan 2006 03:21:30 -0000	1.10
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a diff plugin for the MoniWiki
   //
  -// $Id: Diff.php,v 1.9 2006/01/19 08:28:58 wkpark Exp $
  +// $Id: Diff.php,v 1.10 2006/01/20 03:21:30 wkpark Exp $
   
   function simple_diff($diff) {
     $diff=str_replace("<","&lt;",$diff);
  @@ -140,15 +140,18 @@
   
     $option='';
   
  +  $pi=$formatter->get_instructions($dum);
  +  if ($pi['#format'] and !$options['type']) # is it not wiki format ?
  +    $options['type']=$DBInfo->diff_type; # use default diff format
  +
  +  if (!$options['type'] and $DBInfo->use_smartdiff)
  +    $options['type']='smart';
  +
     if ($options['type'] and function_exists($options['type'].'_diff'))
       $type=$options['type'].'_diff';
     else
       $type=$DBInfo->diff_type.'_diff';
   
  -  $pi=$formatter->get_instructions($dum);
  -  if ($pi['#format']) # is it not wiki format ?
  -    $type=$DBInfo->diff_type.'_diff'; # use default diff format
  -
     if ($options['text']) {
       $out= $options['text'];
       if (!$options['raw'])
  @@ -263,7 +266,13 @@
   
           $options['nomsg']=0;
           $options['msg']=$msg;
  -        return $formatter->send_page($diffed,$options);
  +        $options['smart']=1;
  +
  +        if ($pi['#format'])
  +          print '<pre class="code">'.$diffed.'</pre>';
  +        else
  +          $formatter->send_page($diffed,$options);
  +        return;
           #return "<pre>$diffed</pre>";
         }
       }
  @@ -298,7 +307,11 @@
       do_RcsPurge($formatter,$options);
       return;
     }
  -  if ($DBInfo->use_smartdiff) $options['type']='smart';
  +
  +  if ($options['type'] and
  +    !in_array($options['type'],array('smart','fancy','simple')))
  +    $options['type']=$DBInfo->diff_type;
  +
     $formatter->send_header("",$options);
   
     $title='';
  @@ -318,7 +331,7 @@
     }
     else
       print macro_diff($formatter,'',$options);
  -  if (!$DBInfo->diffonly) {
  +  if (!$DBInfo->diffonly and !$options['smart']) {
       print "<br /><hr />\n";
       $formatter->send_page();
     }
  
  
  


wkpark      2006/01/21 01:31:25

  Modified:    plugin   Diff.php
  Log:
  use _get_raw_body()
  
  Revision  Changes    Path
  1.11      +2 -2      moniwiki/plugin/Diff.php
  
  Index: Diff.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Diff.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- Diff.php	20 Jan 2006 03:21:30 -0000	1.10
  +++ Diff.php	20 Jan 2006 16:31:25 -0000	1.11
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a diff plugin for the MoniWiki
   //
  -// $Id: Diff.php,v 1.10 2006/01/20 03:21:30 wkpark Exp $
  +// $Id: Diff.php,v 1.11 2006/01/20 16:31:25 wkpark Exp $
   
   function simple_diff($diff) {
     $diff=str_replace("<","&lt;",$diff);
  @@ -207,7 +207,7 @@
           #print_r($ret);
           $dels=$ret[1]; $ret=$ret[0];
           $rev=($rev2 and $rev2) ? $rev2:''; // get newest rev.
  -        $current=$formatter->page->get_raw_body(array('rev'=>$rev));
  +        $current=$formatter->page->_get_raw_body(array('rev'=>$rev));
           $lines=explode("\n",$current);
           #print_r($lines);
           #print_r($ret);
  
  
  


wkpark      2006/01/21 02:16:28

  Modified:    .        wiki.php
  Log:
  change alias syntax: dest,alias1,alias2... dest<alias1,alias2, alias>dest1,dest2
  $use_easyalias option added to direct link to the dest page.
  
  Revision  Changes    Path
  1.279     +28 -13    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.278
  retrieving revision 1.279
  diff -u -r1.278 -r1.279
  --- wiki.php	19 Jan 2006 14:11:55 -0000	1.278
  +++ wiki.php	20 Jan 2006 17:16:28 -0000	1.279
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.278 2006/01/19 14:11:55 wkpark Exp $
  +// $Id: wiki.php,v 1.279 2006/01/20 17:16:28 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.278 $',1,-1);
  +$_revision = substr('$Revision: 1.279 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -359,16 +359,27 @@
       $lines=file($file);
       foreach ($lines as $line) {
         if ($line[0]=='#' or !trim($line)) continue;
  -      if (($p=strpos($line,'<')) !== false) {
  -        list($val,$keys)=explode('<',trim($line),2);
  -        $keys=explode(',',$keys);
  +      # support three types of aliases
  +      #
  +      # dest<alias1,alias2,...
  +      # dest,alias1,alias2,...
  +      # alias>dest1,dest2,dest3,...
  +      #
  +      if (($p=strpos($line,'>')) !== false) {
  +        list($key,$list)=explode('>',trim($line),2);
  +        $this->db[$key]=$list;
  +      } else {
  +        if (($p=strpos($line,'<')) !== false) {
  +          list($val,$keys)=explode('<',trim($line),2);
  +          $keys=explode(',',$keys);
  +        } else {
  +          $keys=explode(',',trim($line));
  +          $val=array_shift($keys);
  +        }
   
           foreach ($keys as $k) {
             $this->db[$k]=$this->db[$k] ? $this->db[$k].','.$val:$val;
           }
  -      } else {
  -        list($key,$list)=explode(',',trim($line),2);
  -        $this->db[$key]=$list;
         }
       }
     }
  @@ -1520,6 +1531,7 @@
       $this->url_mapping_rule=$DBInfo->url_mapping_rule;
       $this->css_friendly=$DBInfo->css_friendly;
       $this->use_smartdiff=$DBInfo->use_smartdiff;
  +    $this->use_easyalias=$DBInfo->use_easyalias;
   
       if (($p=strpos($page->name,"~")))
         $this->group=substr($page->name,0,$p+1);
  @@ -1528,6 +1540,7 @@
       $this->sisters=array();
       $this->foots=array();
       $this->pagelinks=array();
  +    $this->aliases=array();
       $this->icons="";
   
       $this->themeurl= $DBInfo->url_prefix;
  @@ -2123,6 +2136,7 @@
           return $this->link_tag(_rawurlencode($gpage),'',$this->icon['main']).
             "<a href='$url' $attr>$word</a>";
         }
  +      if ($this->aliases[$page]) return $url;
         if ($this->sister_on) {
           $sisters=$DBInfo->metadb->getSisterSites($page, $DBInfo->use_sistersites);
           if ($sisters === true) {
  @@ -2131,17 +2145,18 @@
               "<tt class='sister'><a href='$url'>&#x203a;</a></tt>";
           }
           if ($sisters) {
  +          if ($this->use_easyalias and strpos($sisters,' ') === false) {
  +            # this is a alias
  +            $url=$this->link_repl(substr($sisters,0,-1).' '.$word.']');
  +            $this->aliases[$page]=$url;
  +            return $url;
  +          }
             $this->sisters[]="<tt class='foot'>&#160;&#160;&#160;".
               "<a name='sister$this->sister_idx' id='sister$this->sister_idx'></a>".
               "<a href='#rsister$this->sister_idx'>$this->sister_idx&#x203a;</a>&#160;</tt> ".
               "$sisters <br/>";
             $this->pagelinks[$page]=$this->sister_idx++;
             $idx=$this->pagelinks[$page];
  -          #if (strpos($sisters,' ') === false and $this->use_smartsister) {
  -          #  $url=$this->link_repl(substr($sisters,0,-1).' '.$word.']');
  -          #  return "$url";
  -          #  return "<a href='$url'>$word</a>";
  -          #}
           }
           if ($idx > 0) {
             return "<a href='$url'>$word</a>".
  
  
  


wkpark      2006/01/22 14:13:25

  Modified:    .        wiki.php
  Log:
  fixed $use_easyalias mode
  $quote_style option added.
  new wiki syntax '====' added to support <br clear="all" />
  
  Revision  Changes    Path
  1.280     +18 -14    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.279
  retrieving revision 1.280
  diff -u -r1.279 -r1.280
  --- wiki.php	20 Jan 2006 17:16:28 -0000	1.279
  +++ wiki.php	22 Jan 2006 05:13:24 -0000	1.280
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.279 2006/01/20 17:16:28 wkpark Exp $
  +// $Id: wiki.php,v 1.280 2006/01/22 05:13:24 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.279 $',1,-1);
  +$_revision = substr('$Revision: 1.280 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -260,11 +260,11 @@
       $addons=$this->aux->getSisterSites($pagename,$mode);
   
       if ($sisters)
  -      $ret='wiki:'.str_replace(' ',":$pagename wiki:",$sisters).":$pagename";
  +      $ret='[wiki:'.str_replace(' ',":$pagename] [wiki:",$sisters).":$pagename]";
       $pagename=_preg_search_escape($pagename);
       if ($addons) $ret=rtrim($addons.' '.$ret);
   
  -    if ($mode==1 and strlen($ret) > 80) return "TwinPages:$pagename";
  +    if ($mode==1 and strlen($ret) > 80) return "[wiki:TwinPages:$pagename]";
       return preg_replace("/((:[^\s]+){2})(\:$pagename)/","\\1",$ret);
     }
   
  @@ -1542,6 +1542,7 @@
       $this->pagelinks=array();
       $this->aliases=array();
       $this->icons="";
  +    $this->quote_style=$DBInfo->quote_style? $DBInfo->quote_style:'quote';
   
       $this->themeurl= $DBInfo->url_prefix;
       $this->themedir= dirname(__FILE__);
  @@ -1558,6 +1559,7 @@
                        "/`(?<!\s)(?!`)([^`']+)(?<!\s)'/",
                        "/`(?<!\s)(?U)(.*)(?<!\s)`/",
                        "/(-{4,})$/e",
  +                     "/(={4,})$/",
                        "/,,([^,]{1,40}),,/",
                        "/\^([^ \^]+)\^(?=\s|$)/",
                        "/\^\^(?<!\s)(?!\^)(?U)(.+)(?<!\s)\^\^/",
  @@ -1571,6 +1573,7 @@
                        "<i>\\1</i>","<i>\\1</i>",
                        "&#96;\\1'","<tt class='wiki'>\\1</tt>",
                        "\$formatter->$DBInfo->hr_type"."_hr('\\1')",
  +                     "<br clear='all' />",
                        "<sub>\\1</sub>",
                        "<sup>\\1</sup>",
                        "<sup>\\1</sup>",
  @@ -1586,11 +1589,11 @@
       
       # set smily_rule,_repl
       if ($DBInfo->smileys) {
  -      $smiley_rule='/(?<=\s|^|>)('.$DBInfo->smiley_rule.')(?=\s|$)/e';
  -      $smiley_repl="\$formatter->smiley_repl('\\1')";
  +      $this->smiley_rule='/(?<=\s|^|>)('.$DBInfo->smiley_rule.')(?=\s|$)/e';
  +      $this->smiley_repl="\$formatter->smiley_repl('\\1')";
   
  -      $this->baserule[]=$smiley_rule;
  -      $this->baserepl[]=$smiley_repl;
  +      #$this->baserule[]=$smiley_rule;
  +      #$this->baserepl[]=$smiley_repl;
       }
       $this->footrule="\[\*[^\]]*\s[^\]]+\]";
   
  @@ -2136,7 +2139,7 @@
           return $this->link_tag(_rawurlencode($gpage),'',$this->icon['main']).
             "<a href='$url' $attr>$word</a>";
         }
  -      if ($this->aliases[$page]) return $url;
  +      if ($this->aliases[$page]) return $this->aliases[$page];
         if ($this->sister_on) {
           $sisters=$DBInfo->metadb->getSisterSites($page, $DBInfo->use_sistersites);
           if ($sisters === true) {
  @@ -2634,13 +2637,13 @@
             $macro=substr($line,4,-2);
             $text.= $this->macro_repl($macro);
           } else if ($line[2]=='#') {
  -          $div_enclose='<div id="'.substr($line,3).'">';
  +          $div_enclose.='<div id="'.substr($line,3).'">';
             $my_div++;
           } else if ($line[2]=='.') {
  -          $div_enclose='<div class="'.substr($line,3).'">';
  +          $div_enclose.='<div class="'.substr($line,3).'">';
             $my_div++;
           } else if ($my_div>0) {
  -          $div_enclose='</div>';
  +          $div_enclose.='</div>';
             $my_div--;
           }
           continue; # comments
  @@ -2757,7 +2760,7 @@
                  $divtype=" $dt=\"".substr($line,1,$p-1).'"';
                  $line=substr($line,$p+1);
                } else
  -               $divtype=' class="indent quote"';
  +               $divtype=' class="indent '.$this->quote_style.'"';
              } else {
                $divtype=' class="indent"';
              }
  @@ -2881,7 +2884,8 @@
         #                    $this->head_repl("$1","$2","$3"),$line);
   
         # Smiley
  -      #if ($smiley_rule) $line=preg_replace($smiley_rule,$smiley_repl,$line);
  +      if ($this->smiley_rule)
  +        $line=preg_replace($this->smiley_rule,$this->smiley_repl,$line);
         # NoSmoke's MultiLineCell hack
         #$line=preg_replace(array("/{{\|/","/\|}}/"),
         #      array("</div><table class='closure'><tr class='closure'><td class='closure'><div>","</div></td></tr></table><div>"),$line);
  
  
  


wkpark      2006/01/22 19:28:49

  Modified:    .        wiki.php
  Log:
  oops test fix for easy alias
  
  Revision  Changes    Path
  1.281     +4 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.280
  retrieving revision 1.281
  diff -u -r1.280 -r1.281
  --- wiki.php	22 Jan 2006 05:13:24 -0000	1.280
  +++ wiki.php	22 Jan 2006 10:28:49 -0000	1.281
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.280 2006/01/22 05:13:24 wkpark Exp $
  +// $Id: wiki.php,v 1.281 2006/01/22 10:28:49 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.280 $',1,-1);
  +$_revision = substr('$Revision: 1.281 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -2150,7 +2150,9 @@
           if ($sisters) {
             if ($this->use_easyalias and strpos($sisters,' ') === false) {
               # this is a alias
  +            $this->use_easyalias=0;
               $url=$this->link_repl(substr($sisters,0,-1).' '.$word.']');
  +            $this->use_easyalias=1;
               $this->aliases[$page]=$url;
               return $url;
             }
  
  
  


wkpark      2006/01/23 02:27:12

  Modified:    .        wikilib.php
  Log:
  set default interwiki map for TwinPages.
  
  Revision  Changes    Path
  1.200     +5 -1      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.199
  retrieving revision 1.200
  diff -u -r1.199 -r1.200
  --- wikilib.php	19 Jan 2006 22:49:10 -0000	1.199
  +++ wikilib.php	22 Jan 2006 17:27:12 -0000	1.200
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.199 2006/01/19 22:49:10 wkpark Exp $
  +// $Id: wikilib.php,v 1.200 2006/01/22 17:27:12 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1877,6 +1877,10 @@
       $interwikirule.="Self";
       $interwiki['Self']=get_scriptname().$DBInfo->query_prefix;
   
  +    # set default TwinPages interwiki
  +    if (!$interwiki['TwinPages'])
  +      $interwiki['TwinPages']=$DBInfo->query_prefix.'action=twinpages';
  +
       # read shared intericons
       $map=array();
       if (file_exists($DBInfo->shared_intericon))
  
  
  


wkpark      2006/01/23 15:24:48

  Modified:    .        wikilib.php
  Log:
  oops! fix last change to work correctly.
  
  Revision  Changes    Path
  1.201     +3 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.200
  retrieving revision 1.201
  diff -u -r1.200 -r1.201
  --- wikilib.php	22 Jan 2006 17:27:12 -0000	1.200
  +++ wikilib.php	23 Jan 2006 06:24:48 -0000	1.201
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.200 2006/01/22 17:27:12 wkpark Exp $
  +// $Id: wikilib.php,v 1.201 2006/01/23 06:24:48 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1879,7 +1879,8 @@
   
       # set default TwinPages interwiki
       if (!$interwiki['TwinPages'])
  -      $interwiki['TwinPages']=$DBInfo->query_prefix.'action=twinpages';
  +      $interwiki['TwinPages']=(($DBInfo->query_prefix == '?') ? '&amp;':'?').
  +        'action=twinpages&amp;value=';
   
       # read shared intericons
       $map=array();
  
  
  


wkpark      2006/01/26 12:03:04

  Modified:    .        wiki.php
  Log:
  fixed twinpages list.
  fixed new syntax rule "===="
  
  Revision  Changes    Path
  1.282     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.281
  retrieving revision 1.282
  diff -u -r1.281 -r1.282
  --- wiki.php	22 Jan 2006 10:28:49 -0000	1.281
  +++ wiki.php	26 Jan 2006 03:03:04 -0000	1.282
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.281 2006/01/22 10:28:49 wkpark Exp $
  +// $Id: wiki.php,v 1.282 2006/01/26 03:03:04 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.281 $',1,-1);
  +$_revision = substr('$Revision: 1.282 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -1559,7 +1559,7 @@
                        "/`(?<!\s)(?!`)([^`']+)(?<!\s)'/",
                        "/`(?<!\s)(?U)(.*)(?<!\s)`/",
                        "/(-{4,})$/e",
  -                     "/(={4,})$/",
  +                     "/^(={4,})$/",
                        "/,,([^,]{1,40}),,/",
                        "/\^([^ \^]+)\^(?=\s|$)/",
                        "/\^\^(?<!\s)(?!\^)(?U)(.+)(?<!\s)\^\^/",
  @@ -3864,7 +3864,7 @@
         $twins=$DBInfo->metadb->getTwinPages($page->name,2);
         if ($twins) {
           $formatter->send_title($page->name,"",$options);
  -        $twins=join("\n",$twins);
  +        $twins="\n".join("\n",$twins);
           $formatter->send_page(_("See [TwinPages]: ").$twins);
           echo "<br />".
             $formatter->link_to("?action=edit",$formatter->icon['create']._("Create this page"));
  
  
  


wkpark      2006/01/26 12:08:44

  Modified:    .        wikilib.php
  Log:
  separate the macro_PageLinks() from wikilib.php
  
  Revision  Changes    Path
  1.202     +1 -20     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.201
  retrieving revision 1.202
  diff -u -r1.201 -r1.202
  --- wikilib.php	23 Jan 2006 06:24:48 -0000	1.201
  +++ wikilib.php	26 Jan 2006 03:08:43 -0000	1.202
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.201 2006/01/23 06:24:48 wkpark Exp $
  +// $Id: wikilib.php,v 1.202 2006/01/26 03:08:43 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1993,25 +1993,6 @@
   }
   
   
  -function macro_PageLinks($formatter="",$options="") {
  -  global $DBInfo;
  -  $pages = $DBInfo->getPageLists();
  -
  -  $out="<ul>\n";
  -  $cache=new Cache_text("pagelinks");
  -  foreach ($pages as $page) {
  -    $p= new WikiPage($page);
  -    $f= new Formatter($p);
  -    $out.="<li>".$f->link_to().": ";
  -    $links=$f->get_pagelinks();
  -    $links=preg_replace("/(".$formatter->wordrule.")/e","\$formatter->link_repl('\\1')",$links);
  -    $out.=$links."</li>\n";
  -  }
  -  $out.="</ul>\n";
  -  return $out;
  -}
  -
  -
   function macro_PageList($formatter,$arg="") {
     global $DBInfo;
   
  
  
  


wkpark      2006/01/26 12:08:44

  Added:       plugin   PageLinks.php
  Log:
  separate the macro_PageLinks() from wikilib.php
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/PageLinks.php
  
  Index: PageLinks.php
  ===================================================================
  <?php
  // Copyright 2003-2006 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a sample plugin for the MoniWiki
  //
  // Usage: [[Test]]
  //
  // $Id: PageLinks.php,v 1.1 2006/01/26 03:08:44 wkpark Exp $
  
  function macro_PageLinks($formatter,$options="") {
    global $DBInfo;
    $pages = $DBInfo->getPageLists();
  
    $out="<ul>\n";
    $cache=new Cache_text("pagelinks");
    foreach ($pages as $page) {
      $out.="<li>".$formatter->link_tag($page,'',htmlspecialchars($page)).": ";
      $links=implode(' ',unserialize($cache->fetch($page)));
      $links=preg_replace("/(".$formatter->wordrule.")/e","\$formatter->link_repl('\\1')",$links);
      $out.=$links."</li>\n";
    }
    $out.="</ul>\n";
    return $out;
  }
  
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2006/01/26 12:10:35

  Modified:    plugin   Blog.php Comment.php Gallery.php Icon.php
                        SlideShow.php WantedPages.php sendping.php
  Log:
  small fixes (use $_SERVER, $formatter->imgs_dir etc.)
  
  Revision  Changes    Path
  1.30      +3 -5      moniwiki/plugin/Blog.php
  
  Index: Blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Blog.php,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- Blog.php	3 Jan 2006 13:27:57 -0000	1.29
  +++ Blog.php	26 Jan 2006 03:10:35 -0000	1.30
  @@ -5,7 +5,7 @@
   //
   // Usage: ?action=Blog
   //
  -// $Id: Blog.php,v 1.29 2006/01/03 13:27:57 wkpark Exp $
  +// $Id: Blog.php,v 1.30 2006/01/26 03:10:35 wkpark Exp $
   
   function updateBlogList($formatter) {
     global $DBInfo;
  @@ -70,10 +70,9 @@
   
   function do_Blog($formatter,$options) {
     global $DBInfo;
  -  global $HTTP_USER_AGENT;
     $COLS_MSIE = 80;
     $COLS_OTHER = 85;
  -  $cols = preg_match('/MSIE/', $HTTP_USER_AGENT) ? $COLS_MSIE : $COLS_OTHER;
  +  $cols = preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']) ? $COLS_MSIE : $COLS_OTHER;
   
     $rows=$options['rows'] > 5 ? $options['rows']: 8;
     $cols=$options['cols'] > 60 ? $options['cols']: $cols;
  @@ -268,10 +267,9 @@
   }
   
   function macro_Blog($formatter,$value) {
  -  global $HTTP_USER_AGENT;
     $COLS_MSIE = 80;
     $COLS_OTHER = 85;
  -  $cols = preg_match('/MSIE/', $HTTP_USER_AGENT) ? $COLS_MSIE : $COLS_OTHER;
  +  $cols = preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']) ? $COLS_MSIE : $COLS_OTHER;
   
     $rows=$options['rows'] > 5 ? $options['rows']: 8;
     $cols=$options['cols'] > 60 ? $options['cols']: $cols;
  
  
  
  1.20      +3 -5      moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- Comment.php	15 Jan 2006 15:44:21 -0000	1.19
  +++ Comment.php	26 Jan 2006 03:10:35 -0000	1.20
  @@ -6,10 +6,9 @@
   // Usage: [[Comment]], ?action=comment
   //
   //
  -// $Id: Comment.php,v 1.19 2006/01/15 15:44:21 wkpark Exp $
  +// $Id: Comment.php,v 1.20 2006/01/26 03:10:35 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
  -  global $HTTP_USER_AGENT;
     global $DBInfo;
     if (!$options['page']) $options['page']=$formatter->page->name;
   
  @@ -19,7 +18,7 @@
   
     $COLS_MSIE = 80;
     $COLS_OTHER = 85;
  -  $cols = preg_match('/MSIE/', $HTTP_USER_AGENT) ? $COLS_MSIE : $COLS_OTHER;
  +  $cols = preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']) ? $COLS_MSIE : $COLS_OTHER;
   
     $rows=$options['rows'] > 5 ? $options['rows']: 5;
     $cols=$options['cols'] > 60 ? $options['cols']: $cols;
  @@ -67,7 +66,6 @@
   
   function do_comment($formatter,$options=array()) {
     global $DBInfo;
  -  global $HTTP_USER_AGENT;
   
     if (!$DBInfo->security->writable($options)) {
       $formatter->preview=1;
  @@ -83,7 +81,7 @@
   
     $COLS_MSIE = 80;
     $COLS_OTHER = 85;
  -  $cols = preg_match('/MSIE/', $HTTP_USER_AGENT) ? $COLS_MSIE : $COLS_OTHER;
  +  $cols = preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']) ? $COLS_MSIE : $COLS_OTHER;
   
     $rows=$options['rows'] > 5 ? $options['rows']: 8;
     $cols=$options['cols'] > 60 ? $options['cols']: $cols;
  
  
  
  1.24      +2 -2      moniwiki/plugin/Gallery.php
  
  Index: Gallery.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Gallery.php,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- Gallery.php	14 Jan 2006 14:30:43 -0000	1.23
  +++ Gallery.php	26 Jan 2006 03:10:35 -0000	1.24
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Gallery]]
   //
  -// $Id: Gallery.php,v 1.23 2006/01/14 14:30:43 wkpark Exp $
  +// $Id: Gallery.php,v 1.24 2006/01/26 03:10:35 wkpark Exp $
   
   function get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -289,7 +289,7 @@
   
   function do_gallery($formatter,$options='') {
     global $DBInfo;
  -  $cols = preg_match('/MSIE/', $HTTP_USER_AGENT) ? $COLS_MSIE : $COLS_OTHER;
  +  $cols = preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']) ? $COLS_MSIE : $COLS_OTHER;
                                                                                   
     $rows=$options['rows'] > 5 ? $options['rows']: 4;
     $cols=$options['cols'] > 60 ? $options['cols']: $cols;
  
  
  
  1.5       +2 -2      moniwiki/plugin/Icon.php
  
  Index: Icon.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Icon.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Icon.php	3 Sep 2004 17:41:10 -0000	1.4
  +++ Icon.php	26 Jan 2006 03:10:35 -0000	1.5
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Icon macro plugin for the MoniWiki
   //
  -// $Id: Icon.php,v 1.4 2004/09/03 17:41:10 wkpark Exp $
  +// $Id: Icon.php,v 1.5 2006/01/26 03:10:35 wkpark Exp $
   function macro_Icon($formatter,$value='',$extra='') {
     global $DBInfo;
   
  @@ -17,7 +17,7 @@
       $value=$DBInfo->iconset.'/'.$value.'.png';
     }
   
  -  $out=$DBInfo->imgs_dir."/$value";
  +  $out=$formatter->imgs_dir."/$value";
     $out="<img src='$out' border='0' alt='icon' align='middle' />";
     return $out;
   }
  
  
  
  1.6       +2 -2      moniwiki/plugin/SlideShow.php
  
  Index: SlideShow.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SlideShow.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SlideShow.php	3 Jan 2006 13:27:57 -0000	1.5
  +++ SlideShow.php	26 Jan 2006 03:10:35 -0000	1.6
  @@ -5,7 +5,7 @@
   //
   // Usage: [[SlideShow(pagename)]]
   //
  -// $Id: SlideShow.php,v 1.5 2006/01/03 13:27:57 wkpark Exp $
  +// $Id: SlideShow.php,v 1.6 2006/01/26 03:10:35 wkpark Exp $
   
   function macro_SlideShow($formatter,$value='',$options=array()) {
       global $DBInfo;
  @@ -43,7 +43,7 @@
       $act=$options['action'] ? $options['action']:'SlideShow';
   
       $iconset='bluecurve';
  -    $icon_dir=$DBInfo->imgs_dir.'/plugin/SlideShow/'.$iconset.'/';
  +    $icon_dir=$formatter->imgs_dir.'/plugin/SlideShow/'.$iconset.'/';
   
       // get head title section
       if ($depth==2) {
  
  
  
  1.5       +2 -2      moniwiki/plugin/WantedPages.php
  
  Index: WantedPages.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/WantedPages.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- WantedPages.php	14 Jan 2006 14:27:00 -0000	1.4
  +++ WantedPages.php	26 Jan 2006 03:10:35 -0000	1.5
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a WantedPages macro plugin for the MoniWiki
   //
  -// $Id: WantedPages.php,v 1.4 2006/01/14 14:27:00 wkpark Exp $
  +// $Id: WantedPages.php,v 1.5 2006/01/26 03:10:35 wkpark Exp $
   
   function macro_WantedPages($formatter,$value='') {
     global $DBInfo;
  @@ -33,7 +33,7 @@
     $out="<ul>\n";
     while (list($name,$owns) = each($wants)) {
       $owns=preg_replace("/(".$formatter->wordrule.")/e","\$formatter->link_repl('\\1')",$owns);
  -    $out.="<li>".$formatter->link_repl($name). ": $owns</li>";
  +    $out.="<li>".$formatter->link_repl($name,htmlspecialchars($name)). ": $owns</li>";
     }
     $out.="</ul>\n";
     $formatter->pagelinks = $pagelinks; // restore
  
  
  
  1.14      +2 -3      moniwiki/plugin/sendping.php
  
  Index: sendping.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/sendping.php,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- sendping.php	10 Dec 2005 02:46:28 -0000	1.13
  +++ sendping.php	26 Jan 2006 03:10:35 -0000	1.14
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a TrackBack send action plugin for the MoniWiki
   //
  -// $Id: sendping.php,v 1.13 2005/12/10 02:46:28 wkpark Exp $
  +// $Id: sendping.php,v 1.14 2006/01/26 03:10:35 wkpark Exp $
   
   # trackback ping
   function do_sendping($formatter,$options) {
  @@ -60,10 +60,9 @@
         $title=$options['page'];
       }
   
  -    global $HTTP_USER_AGENT;
       $COLS_MSIE = 80;
       $COLS_OTHER = 85;
  -    $cols = preg_match('/MSIE/', $HTTP_USER_AGENT) ? $COLS_MSIE : $COLS_OTHER;
  +    $cols = preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']) ? $COLS_MSIE : $COLS_OTHER;
   
       $rows=$options['rows'] > 5 ? $options['rows']: 8;
       $cols=$options['cols'] > 60 ? $options['cols']: $cols;
  
  
  


wkpark      2006/01/26 12:10:36

  Modified:    plugin/processor diff.php
  Log:
  small fixes (use $_SERVER, $formatter->imgs_dir etc.)
  
  Revision  Changes    Path
  1.4       +3 -1      moniwiki/plugin/processor/diff.php
  
  Index: diff.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/diff.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- diff.php	18 Jan 2006 15:59:06 -0000	1.3
  +++ diff.php	26 Jan 2006 03:10:36 -0000	1.4
  @@ -7,7 +7,7 @@
   // - hello world
   // + Hello world
   // }}}
  -// $Id: diff.php,v 1.3 2006/01/18 15:59:06 wkpark Exp $
  +// $Id: diff.php,v 1.4 2006/01/26 03:10:36 wkpark Exp $
   
   function processor_diff($formatter,$value="") {
     if ($value[0]=='#' and $value[1]=='!')
  @@ -15,6 +15,8 @@
     list($dummy, $type)=explode(' ',$line);
     if (in_array($type,array('fancy','simple')))
       $options['type']=$type;
  +  else
  +    $options['type']='fancy';
     // add first two blank lines
     //$options['text']="\n\n".$value;
     $options['text']=$value;
  
  
  


wkpark      2006/01/26 23:44:12

  Modified:    plugin   login.php userform.php
  Log:
  fix for safe_login.
  
  Revision  Changes    Path
  1.8       +14 -5     moniwiki/plugin/login.php
  
  Index: login.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/login.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- login.php	19 Jan 2006 22:52:06 -0000	1.7
  +++ login.php	26 Jan 2006 14:44:12 -0000	1.8
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Login]]
   //
  -// $Id: login.php,v 1.7 2006/01/19 22:52:06 wkpark Exp $
  +// $Id: login.php,v 1.8 2006/01/26 14:44:12 wkpark Exp $
   
   function macro_login($formatter,$value="",$options="") {
     global $DBInfo;
  @@ -19,7 +19,16 @@
       $udb->checkUser($user);
     }
   
  -  if ($user->id == 'Anonymous')
  +  $jscript='';
  +  if ($user->id == 'Anonymous' and $DBInfo->use_safelogin) {
  +    $onsubmit=' onsubmit="javascript:_chall.value=challenge.value;password.value=hex_hmac_md5(challenge.value, hex_md5(password.value))"';
  +    $jscript.="<script src='$DBInfo->url_prefix/local/md5.js'></script>";
  +    $time_seed=time();
  +    $chall=md5(base64_encode(getTicket($time_seed,$_SERVER['REMOTE_ADDR'],10)));
  +    $passwd_hidden="<input type='hidden' name='_seed' value='$time_seed' />";
  +    $passwd_hidden.="<input type='hidden' name='challenge' value='$chall' />";
  +    $passwd_hidden.="<input type='hidden' name='_chall' />\n";
  +  }
   
     $login=_("Login:");
     $pass=_("Password:");
  @@ -27,13 +36,13 @@
   
     if ($user->id == 'Anonymous')
     return <<<LOGIN
  -<div id='wikiLogin'>
  -<form method='post' action='$urlpage'>
  +<div id='wikiLogin'>$jscript
  +<form method='post' action='$urlpage' $onsubmit>
   <input type="hidden" name="action" value="userform" />
   <table border='0' cellpadding='2' cellspacing='0'>
   <tr><td align='right'>$login</td><td><input name='login_id' size='10' /></td></tr>
   <tr><td align='right'>$pass</td><td><input name='password' type='password' size='10' /></td></tr>
  -<tr><td align='right'><a href='$url'>$join</a></td><td><input type='submit' value='OK' /></td></tr>
  +<tr><td align='right'><a href='$url'>$join</a></td><td><input type='submit' value='OK' />$passwd_hidden</td></tr>
   </table>
   </form>
   </div>
  
  
  
  1.16      +1 -2      moniwiki/plugin/userform.php
  
  Index: userform.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/userform.php,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- userform.php	19 Jan 2006 22:52:06 -0000	1.15
  +++ userform.php	26 Jan 2006 14:44:12 -0000	1.16
  @@ -4,7 +4,7 @@
   // a userform action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: userform.php,v 1.15 2006/01/19 22:52:06 wkpark Exp $
  +// $Id: userform.php,v 1.16 2006/01/26 14:44:12 wkpark Exp $
   
   function do_userform($formatter,$options) {
     global $DBInfo;
  @@ -78,7 +78,6 @@
               $login_ok=1;
           } else { # with no javascript browsers
             $md5pw=md5($options['password']);
  -          //if (hmac($md5pw,$user->info['password']) == $md5pw)
             if ($md5pw == $user->info['password'])
               $login_ok=1;
           }
  
  
  


wkpark      2006/01/27 00:23:19

  Modified:    plugin/processor dot.php
  Log:
  popen() fix
  
  Revision  Changes    Path
  1.3       +6 -5      moniwiki/plugin/processor/dot.php
  
  Index: dot.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/dot.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- dot.php	10 Dec 2005 14:14:59 -0000	1.2
  +++ dot.php	26 Jan 2006 15:23:19 -0000	1.3
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a dot plugin for the MoniWiki
   //
  -// $Id: dot.php,v 1.2 2005/12/10 14:14:59 wkpark Exp $
  +// $Id: dot.php,v 1.3 2006/01/26 15:23:19 wkpark Exp $
   // vim:et:ts=2:
   
   function processor_dot($formatter,$value) {
  @@ -28,12 +28,13 @@
       fwrite($fp,$dot);
       fclose($fp);
     }{
  +
       $cmd="$dotcmd -Tpng $webdot_dir/$md5sum.dot -o $webdot_dir/$md5sum.png";
  -    $fp=popen($cmd,'w');
  -    fclose($fp);
  +    $fp=popen($cmd,'r');
  +    pclose($fp);
       $cmd="$dotcmd -Timap $webdot_dir/$md5sum.dot -o $webdot_dir/$md5sum.map";
  -    popen($cmd,'w');
  -    fclose($fp);
  +    $fp=popen($cmd,'r');
  +    pclose($fp);
     }
   
     return "<a href='$DBInfo->url_prefix/$webdot_dir/$md5sum.map'><img border='0' src='$DBInfo->url_prefix/$webdot_dir/$md5sum.png' ismap /></a>\n";
  
  
  


wkpark      2006/01/27 00:42:56

  Modified:    plugin/processor geshi.php
  Added:       plugin/processor enscript.php
  Removed:     plugin/processor syntax.php
  Log:
  rename syntax.php to enscript.php.
  add some comments to geshi.php
  
  Revision  Changes    Path
  1.3       +4 -1      moniwiki/plugin/processor/geshi.php
  
  Index: geshi.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/geshi.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- geshi.php	9 Aug 2005 04:19:46 -0000	1.2
  +++ geshi.php	26 Jan 2006 15:42:56 -0000	1.3
  @@ -6,6 +6,9 @@
   // Usage: {{{#!geshi ada|apache|asm|c|css... [number|fancy]
   // some codes
   // }}}
  +//
  +// or you can replace the vim processor by following option in config.php
  +//  $myprocessors=array('vim'=>'geshi');
   // 
   // to use this processor:
   // download GeSHi-x.x.x.tar.gz from http://qbnz.com/highlighter/
  @@ -24,7 +27,7 @@
   //
   // this version was tested with geshi 1.0.6.
   //
  -// $Id: geshi.php,v 1.2 2005/08/09 04:19:46 wkpark Exp $
  +// $Id: geshi.php,v 1.3 2006/01/26 15:42:56 wkpark Exp $
   
   include_once(dirname(__FILE__)."/../../lib/geshi/geshi.php");
   
  
  
  
  1.1                  moniwiki/plugin/processor/enscript.php
  
  Index: enscript.php
  ===================================================================
  <?php
  // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a syntax colorizer plugin using the enscript for the MoniWiki
  //
  // Usage: {{{#!enscript sh|c|sh|..
  // some codes
  // }}}
  // $Id: enscript.php,v 1.1 2006/01/26 15:42:56 wkpark Exp $
  
  function processor_enscript($formatter,$value) {
    global $DBInfo;
  
    $enscript='enscript ';
  ##enscript --help-pretty-print |grep "^Name" |cut -d" " -f 2
    $syntax=array(
  "ada", "asm", "awk", "c", "changelog", "cpp", "diff", "diffu", "delphi",
  "elisp", "fortran", "haskell", "html", "idl", "java", "javascript", "mail",
  "makefile", "nroff", "objc", "pascal", "perl", "postscript", "python", "scheme",
  "sh", "sql", "states", "synopsys", "tcl", "verilog", "vhdl", "vba","php");
  
    $options=array("number");
  
    $vartmp_dir=&$DBInfo->vartmp_dir;
  
    if ($value[0]=='#' and $value[1]=='!')
      list($line,$value)=explode("\n",$value,2);
    # get parameters
    if ($line)
      list($tag,$type,$extra)=explode(" ",$line,3);
  
    if ($extra == "number") $option='-C ';
  
    $src=$value;
  
    if (!in_array($type,$syntax)) 
      return "<pre class='code'>\n$line\n$src\n</pre>\n";
  
    if ($type=='php') {
      ob_start();
      highlight_string($src);
      $html= ob_get_contents();
      ob_end_clean();
    } else {
      $tmpf=tempnam($vartmp_dir,"FOO");
      $fp= fopen($tmpf, "w");
      fwrite($fp, $src);
      fclose($fp);
  
  #-E%s -W html -J "" -B --color --word-wrap 
  
      #$cmd="ENSCRIPT_LIBRARY=/home/httpd/wiki/lib $enscript -q -o - -E$type -W html --color=ifh --word-wrap ".$tmpf;
      $cmd="$enscript -q -o - $option -E$type -W html --color=ifh --word-wrap ".$tmpf;
      $fp=popen($cmd, 'r');
      $html='';
      while($s = fgets($fp, 1024)) $html.= $s;
      pclose($fp);
  
      $html= eregi_replace('^.*<pre>', '<div class="wikiPre"><pre class="wiki">', $html);
      $html= eregi_replace('<\/PRE>.*$', '</pre></div>', $html);
      unlink($tmpf);
    }
  
    return $html;
  }
  
  // vim:et:sts=2:
  ?>
  
  
  


wkpark      2006/01/27 00:45:08

  Added:       plugin/processor jmol.php live3d.php
  Log:
  add new applet processors
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/processor/jmol.php
  
  Index: jmol.php
  ===================================================================
  <?php
  // Copyright 2004 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a Jmol plugin for the MoniWiki
  //
  // http://jmol.sf.net
  //
  // $Id: jmol.php,v 1.1 2006/01/26 15:45:08 wkpark Exp $
  
  function processor_jmol($formatter,$value="") {
      $verbs=array('#sticks'=>'wireframe 0.25',
                  '#ball&stick'=>'wireframe 0.18; spacefill 25%',
                  '#wireframe'=>'wireframe 0.1',
                  '#cpk'=>'cpk 80%',
                  '#spacefill'=>'cpk %80',
                  '#black'=>'background [0,0,0]',
                  '#white'=>'background [255,255,255]',
                  );
      $default_size="width='200' height='200' ";
  
      if ($value[0]=='#' and $value[1]=='!')
        list($line,$value)=explode("\n",$value,2);
      list($dum,$szarg)=explode(' ',$line);
      if ($szarg) {
        $args= explode('x',$szarg,2);
        $xsize=intval($args[0]);$ysize=intval($args[1]);
      }
  
      $body = $value;
      $args='<param name="emulate" value="chime" />';
      $args.='<param name="progressbar" value="true" />';
  
      $script='set frank off; wireframe 0.18; spacefill 25%;';
      if ($DBInfo->jmol_script) $script.=$DBInfo->jmol_script;
  
      while ($body and $body[0] == '#') {
          # extract first line
          list($line, $body) = explode("\n",$body, 2);
  
          # skip comments (lines with two hash marks)
          if ($line[1] == '#') continue;
  
          # parse the PI
          list($verb, $arg) = explode(' ',$line,2);
          $verb = strtolower($verb);
          $arg = rtrim($arg);
  
          if (array_key_exists($verb,$verbs)) {
              $script.=$verbs[$verb].';';
          }
      }
  
      if (!$args)
          $args.='<param name="style" value="sticks" />';
      if ($script)
          $args.='<param name="script" value="'.$script.'" />';
  
      if ($xsize) {
        if ($xsize > 640 or $xsize < 100) $xscale=0.5;
        if ($xscale and ($ysize > 480 or $ysize < 100)) $yscale=0.6;
        $xscale=$xsize/640.0;
      
        if (empty($yscale)) $yscale=$xscale/0.5*0.6;
  
        $size="width='$xsize' height='$ysize' ";
      } else $size=$default_size;
  
      $buff=str_replace("\n","|\n",$body)."\n";
      $molstring= trim($buff);
  
      $pubpath = $formatter->url_prefix.'/applets/JmolPlugin';
  
      return <<<APP
  <applet code='JmolApplet.class' $size archive='$pubpath/JmolApplet.jar' codebase='$pubpath'>
          $args
          <param name='inline' value='$molstring' />
      Loading a JmolApplet object.
  </applet>
  APP;
  }
  
  // vim:et:sts=4:sw=4:
  ?>
  
  
  
  1.1                  moniwiki/plugin/processor/live3d.php
  
  Index: live3d.php
  ===================================================================
  <?php
  // Copyright 2003-2004 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a Live3D plugin for the MoniWiki
  //
  // http://www.vis.uni-stuttgart.de/~kraus/LiveGraphics3D
  //
  // $Id: live3d.php,v 1.1 2006/01/26 15:45:08 wkpark Exp $
  
  function processor_live3d($formatter,$value="") {
      if ($value[0]=='#' and $value[1]=='!')
        list($line,$value)=explode("\n",$value,2);
      $body = $value;
      $args='';
  
      while ($body and $body[0] == '#') {
          # extract first line
          list($line, $body) = explode("\n",$body, 2);
  
          # skip comments (lines with two hash marks)
          if ($line[1] == '#') continue;
  
          #print $line."<Br>";
          # parse the PI
          list($verb, $args) = explode(' ',$line,2);
          $verb = strtolower($verb);
          $args = rtrim($args);
  
          if ($verb == "#dependent") $dependent= $args;
          else if ($verb == "#independent") $independent= $args;
      }
  
      $extra= '';
      if ($dependent)
          $extra.='<param name="DEPENDENT_VARIABLES" value="'.$dependent.'" />';
      if ($independent)
          $extra.='<param name="INDEPENDENT_VARIABLES" value="'.$independent.'" />';
  
      $pubpath = $formatter->url_prefix.'/applets/LiveGraphics3D';
  
      return <<<APP
  <applet code='Live.class' height='200' width='200'
      archive='$pubpath/live.jar' codebase='$pubpath'>
      $extra
      <param name="INPUT"
             value="$body" />
          Loading a JavaView object.
  </applet>
  APP;
  }
  
  // vim:et:sts=4:sw=4:
  ?>
  
  
  


wkpark      2006/01/27 00:55:03

  Added:       plugin   ABBR.php
  Log:
  add a new macro
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/ABBR.php
  
  Index: ABBR.php
  ===================================================================
  <?php
  // Copyright 2005 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a sample plugin for the MoniWiki
  //
  // Usage: [[ABBR(HTTP Hyper Text Transper Protocol)]]
  //
  // $Id: ABBR.php,v 1.1 2006/01/26 15:55:03 wkpark Exp $
  
  function macro_ABBR($formatter,$value) {
      $sym=strtok($value,' '); $val=strtok('');
      return '<abbr title="'.$val.'">'.$sym.'</abbr>';
  }
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2006/01/27 00:57:01

  Added:       plugin/processor pre.php
  Log:
  add a new processor
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/processor/pre.php
  
  Index: pre.php
  ===================================================================
  <?php
  // Copyright 2005 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a preserve whitespace processor plugin for the MoniWiki
  //   by Anonymous Doner :)
  //
  // Usage: {{{#!pre
  // blah blah
  //   blah
  //     blah
  // }}}
  //
  // $Id: pre.php,v 1.1 2006/01/26 15:57:01 wkpark Exp $
  
  function processor_pre($formatter,$value) {
      if ($value[0]=='#' and $value[1]=='!')
      list($line,$value)=explode("\n",$value,2);
  
      if ($line)
      list($tag,$args)=explode(' ',$line,2);
  
      #$pre=preg_replace($formatter->baserule,$formatter->baserepl,$value);
      #$pre=
      #    preg_replace("/(".$wordrule.")/e","\$formatter->link_repl('\\1')",$value);
      $pre = htmlspecialchars($value);
      $pre = str_replace(
          array("\t", "\n"),
          array('&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;',"<br />\n"),
          $pre);
      $pre=preg_replace("/(\s\s+)/e","str_repeat('&nbsp;',strlen('\\1'))",$pre);
  
      $out = "<div class='preWhiteSpace'>$pre</div>";
  
      return $out;
  }
  
  // vim:et:sts=4
  ?>
  
  
  


wkpark      2006/01/27 01:48:22

  Modified:    plugin   Comment.php
  Log:
  fix for new comment style
  
  Revision  Changes    Path
  1.21      +25 -6     moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- Comment.php	26 Jan 2006 03:10:35 -0000	1.20
  +++ Comment.php	26 Jan 2006 16:48:22 -0000	1.21
  @@ -6,12 +6,14 @@
   // Usage: [[Comment]], ?action=comment
   //
   //
  -// $Id: Comment.php,v 1.20 2006/01/26 03:10:35 wkpark Exp $
  +// $Id: Comment.php,v 1.21 2006/01/26 16:48:22 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $DBInfo;
     if (!$options['page']) $options['page']=$formatter->page->name;
   
  +  if ($options['usemeta']) $use_meta=1;
  +
     if ($options['nocomment']) return '';
     #if (!$DBInfo->_isWritable($options['page'])) return '';
     if (!$DBInfo->security->writable($options)) return '';
  @@ -142,11 +144,28 @@
         _stripslashes($options['name']):$_SERVER['REMOTE_ADDR'];
     else $id=$options['id'];
   
  -  if ($options['nosig']) $savetext="----\n$savetext\n";
  -  else if($options['id']=='Anonymous')
  -    $savetext="----\n$savetext -- $id @DATE@\n";
  -  else
  -    $savetext="----\n$savetext @SIG@\n";
  +  if ($use_meta) {
  +    $date=gmdate('Y-m-d H:i:s').' GMT';
  +
  +    $idx=1;
  +    if (preg_match_all('/-{4,}\nComment-Id:\s*(\d+)\n/m',$body,$m)) {
  +      $idx=$m[1][sizeof($m[1])-1]+1;
  +    }
  +
  +    if ($options['id']!='Anonymous') $id='@USERNAME@';
  +    $meta=<<<META
  +Comment-Id: $idx
  +From: $id
  +Date: $date
  +META;
  +    $savetext="----\n$meta\n\n$savetext\n";
  +  } else {
  +    if ($options['nosig']) $savetext="----\n$savetext\n";
  +    else if($options['id']=='Anonymous')
  +      $savetext="----\n$savetext -- $id @DATE@\n";
  +    else
  +      $savetext="----\n$savetext @SIG@\n";
  +  }
   
     if ($options['comment_id'] and preg_match("/^\[\[Comment\(".$options['comment_id']."\)\]\]/m",$body)) {
       $str="[[Comment($options[comment_id])]]";
  
  
  


wkpark      2006/01/27 02:27:41

  Modified:    .        wiki.php
  Log:
  more fixes for new comment style for the bts.
  
  Revision  Changes    Path
  1.283     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.282
  retrieving revision 1.283
  diff -u -r1.282 -r1.283
  --- wiki.php	26 Jan 2006 03:03:04 -0000	1.282
  +++ wiki.php	26 Jan 2006 17:27:41 -0000	1.283
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.282 2006/01/26 03:03:04 wkpark Exp $
  +// $Id: wiki.php,v 1.283 2006/01/26 17:27:41 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.282 $',1,-1);
  +$_revision = substr('$Revision: 1.283 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -3955,7 +3955,7 @@
       $options['timer']->Check("send_page");
       $formatter->write("<!-- wikiContent --></div>\n");
   
  -    if ($DBInfo->extra_macros) {
  +    if ($DBInfo->extra_macros and !$formatter->pi['#format']) {
         if ($formatter->pi['#nocomment']) $options['nocomment']=1;
         if (!is_array($DBInfo->extra_macros)) {
           print '<div id="wikiExtra">'."\n";
  
  
  


wkpark      2006/01/27 02:27:41

  Modified:    plugin   Comment.php
  Log:
  more fixes for new comment style for the bts.
  
  Revision  Changes    Path
  1.22      +13 -4     moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- Comment.php	26 Jan 2006 16:48:22 -0000	1.21
  +++ Comment.php	26 Jan 2006 17:27:41 -0000	1.22
  @@ -6,13 +6,20 @@
   // Usage: [[Comment]], ?action=comment
   //
   //
  -// $Id: Comment.php,v 1.21 2006/01/26 16:48:22 wkpark Exp $
  +// $Id: Comment.php,v 1.22 2006/01/26 17:27:41 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $DBInfo;
     if (!$options['page']) $options['page']=$formatter->page->name;
   
  -  if ($options['usemeta']) $use_meta=1;
  +  if ($value) {
  +    $args=explode(',',$value);
  +    if (in_array('usemeta',$args)) $use_meta=1;
  +  }
  +
  +  if ($options['usemeta'] or $use_meta) {
  +    $hidden="<input type='hidden' name='usemeta' value=1 />\n";
  +  }
   
     if ($options['nocomment']) return '';
     #if (!$DBInfo->_isWritable($options['page'])) return '';
  @@ -41,7 +48,7 @@
   
   
     if ($value)
  -    $hidden='<input type="hidden" name="comment_id" value="'.$value.'" />';
  +    $hidden.='<input type="hidden" name="comment_id" value="'.$value.'" />';
     $form = "<form name='editform' method='post' action='$url'>\n";
     $form.= <<<FORM
   <textarea class="wiki" id="content" name="savetext"
  @@ -49,7 +56,7 @@
   FORM;
     if ($options['id'] == 'Anonymous')
       $sig=_("Username").": <input name='name' value='$options[name]' />";
  -  else 
  +  else if (!$use_meta)
       $sig="<input name='nosig' type='checkbox' />"._("Don't add a signature");
     $comment=_("Comment");
     $preview=_("Preview");
  @@ -81,6 +88,8 @@
       return;
     }
   
  +  if ($options['usemeta']) $use_meta=1;
  +
     $COLS_MSIE = 80;
     $COLS_OTHER = 85;
     $cols = preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']) ? $COLS_MSIE : $COLS_OTHER;
  
  
  


wkpark      2006/01/27 02:30:29

  Modified:    .        config.php.default
  Log:
  add comments for new options
  
  Revision  Changes    Path
  1.26      +18 -12    moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- config.php.default	13 Jan 2006 16:27:08 -0000	1.25
  +++ config.php.default	26 Jan 2006 17:30:29 -0000	1.26
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.25 2006/01/13 16:27:08 wkpark Exp $
  +# $Id: config.php.default,v 1.26 2006/01/26 17:30:29 wkpark Exp $
   #
   $sitename='UnnamedWiki';
   $data_dir= './data';
  @@ -113,7 +113,8 @@
   #$timezone='KST'; // for windows
   #$version_class='RcsLite';
   #$use_numbering=1; // for the vim processor
  -#$use_resizer=1;
  +#$vim_nocheck=0; // do not check vim syntax.
  +#$use_resizer=1; // javascript resizer
   #$use_minoredit=1; // only for wiki owners
   #$auto_search='FixMoin';
   #$auto_search='AutoGoto';
  @@ -122,10 +123,11 @@
   $spam_filter='antispam';
   $use_toctoggle=0;
   #$toc_options='title=Contents,toggle,simple';
  -#$use_ticket=1;
  -#$ticket_gdfont=5;
  -#$ticket_font='TTFONT';
  +#$use_ticket=1; # use ticket image to block spam bots.
  +#$ticket_gdfont=5; # use a builtin gd bitmap font
   #$gdfontpath='./data';
  +#$ticket_font='TTFONT';
  +#$ticket_font_size='20';
   $local_abbr='LocalDictionary';
   $postfilters='abbr';
   $use_forcemerge=1;
  @@ -133,16 +135,20 @@
   $use_alias=0;
   #$aliaspage=$data_dir.'/text/AliasPageNames';
   $css_friendly=0;
  -$use_redirect_msg=1;
  +$use_redirect_msg=1; # like as MoinMoin
   #$use_safelogin=0;
   #$url_mappings=array('http://faq.ktug.or.kr/mywiki'=>'http://faq.ktug.or.kr/faq');
  +#$shared_url_mappings=$data_dir.'/text/UrlMap'; # enable builtin fix url
   
  -#$use_category=0;
  -#$use_textbrowsers=1;
  +#$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;
  -#$mask_hostname=1;
  -#$shared_url_mappings=$data_dir.'/text/UrlMap';
  +#$use_camelcase=0; # turn off camelcase syntax by default
  +#$mask_hostname=1; # hide hostname or ip address
   #$category_regex=urldecode('%EB%B6%84%EB%A5%98$');
  -#$use_backlinks=1
  +#$use_backlinks=1; # set default fullsearch behavior as backlinks search
  +#$use_smartdiff=1;
  +#$hide_actions=0; # hide actions list for anonymous user
  +#$use_easyalias=1; # direct linking to the dest page
  +#$info_options='ago,simple'; # default Info macro options
   ?>
  
  
  


wkpark      2006/01/29 12:59:30

  Modified:    plugin   ImportUrl.php
  Log:
  Security fix!!!
  
  Revision  Changes    Path
  1.9       +8 -2      moniwiki/plugin/ImportUrl.php
  
  Index: ImportUrl.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/ImportUrl.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- ImportUrl.php	4 Dec 2004 15:40:45 -0000	1.8
  +++ ImportUrl.php	29 Jan 2006 03:59:30 -0000	1.9
  @@ -1,14 +1,20 @@
   <?php
  -// Copyright 2004 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2004-2006 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a importurl action plugin for the MoniWiki
   //
   // Usage: ?action=importurl&url=http://foo.bar.com/
   //
  -// $Id: ImportUrl.php,v 1.8 2004/12/04 15:40:45 wkpark Exp $
  +// $Id: ImportUrl.php,v 1.9 2006/01/29 03:59:30 wkpark Exp $
   
   function do_ImportUrl($formatter,$options) {
     $value=$options['url'];
  +
  +  if (!preg_match('/^(http|ftp|https):\/\//',$value)) {
  +    do_invalid($formatter,$options);
  +    return;
  +  }
  +
     $fp = fopen("$value","r");
     if (!$fp) {
       do_invalid($formatter,$options);
  
  
  


wkpark      2006/01/29 13:01:11

  Added:       plugin   markup.php
  Log:
  markup action for the Wikiwyg
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/markup.php
  
  Index: markup.php
  ===================================================================
  <?php
  // Copyright 2003-2006 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a markup plugin for the MoniWiki
  //
  // $Id: markup.php,v 1.1 2006/01/29 04:01:10 wkpark Exp $
  
  function do_markup($formatter,$options) {
      $formatter->preview=1;
      $formatter->sister_on=0;
      $formatter->nomacro=1;
      if ($options['value']) {
          $formatter->send_page(_stripslashes($options['value']),$options);
      }
      return;
  }
  
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2006/01/29 13:07:26

  Modified:    .        wiki.php wikilib.php
  Log:
  fixes for the Wikiwyg
  
  Revision  Changes    Path
  1.284     +15 -9     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.283
  retrieving revision 1.284
  diff -u -r1.283 -r1.284
  --- wiki.php	26 Jan 2006 17:27:41 -0000	1.283
  +++ wiki.php	29 Jan 2006 04:07:26 -0000	1.284
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.283 2006/01/26 17:27:41 wkpark Exp $
  +// $Id: wiki.php,v 1.284 2006/01/29 04:07:26 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.283 $',1,-1);
  +$_revision = substr('$Revision: 1.284 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -1989,9 +1989,9 @@
         $sy=$DBInfo->intericon[$wiki][1];
       }
   
  -    $img="<a href='$url' target='wiki'>".
  -         "<img border='0' src='$icon' class='interwiki' height='$sy' ".
  -         "width='$sx' alt='$wiki:' title='$wiki:' /></a>";
  +    $img="<a class=\"interwiki\" href='$url' target='wiki'>".
  +         "<img class=\"interwiki\" alt=\"$wiki:\" src='$icon' border='0' height='$sy' ".
  +         "width='$sx' title='$wiki:' /></a>";
       #if (!$text) $text=str_replace("%20"," ",$page);
       if (!$text) $text=urldecode($page);
       else if (preg_match("/^(http|ftp|attachment):.*\.(png|gif|jpeg|jpg)$/i",$text)) {
  @@ -2012,6 +2012,7 @@
       if (preg_match("/\.(png|gif|jpeg|jpg)$/i",$url))
         return "<a href='".$url."' $attr title='$wiki:$page'><img border='0' align='middle' alt='$text' src='$url' /></a>$extra";
   
  +    if (!$text) return $img;
       return $img. "<a href='".$url."' $attr title='$wiki:$page'>$text</a>$extra";
     }
   
  @@ -2285,6 +2286,7 @@
     function macro_repl($macro,$value='',$options='') {
       preg_match("/^([A-Za-z]+)(\((.*)\))?$/",$macro,$match);
       if (!$match) return $this->word_repl($macro);
  +    if ($this->nomacro) return '<span class="wikiMarkup">[['.$macro.']]</span>';
       if (!$value and $match[1] and $match[2]) { #strpos($macro,'(') !== false)) {
         $name=$match[1]; $args=($match[2] and !$match[3]) ? true:$match[3];
       } else {
  @@ -2869,13 +2871,17 @@
           $in_p='';
           if ($this->section_edit && !$this->preview) {
             $act='edit';
  -          if ($DBInfo->use_ajax) {
  -            $onclick=' onclick="javascript:sectionEdit(null,this,'.
  -              $this->sect_num.');return false;"';
  +          if ($DBInfo->sectionedit_attr) {
  +            if (!is_string($DBInfo->sectionedit_attr))
  +              $sect_attr=' onclick="javascript:sectionEdit(null,this,'.
  +                $this->sect_num.');return false;"';
  +            else
  +              $sect_attr=$DBInfo->sectionedit_attr;
             }
             $url=$this->link_url($this->page->urlname,
               '?action='.$act.'&amp;section='.$this->sect_num);
  -          $edit="<div class='sectionEdit' style='float:right;'>[<a href='$url'$onclick>edit</a>]</div>\n";
  +          $lab=_("edit");
  +          $edit="<div class='sectionEdit' style='float:right;'>[<a href='$url'$sect_attr>$lab</a>]</div>\n";
             $anchor_id='sect-'.$this->sect_num;
             $anchor="<a id='$anchor_id' name='$anchor_id'></a>";
           }
  
  
  
  1.203     +19 -5     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.202
  retrieving revision 1.203
  diff -u -r1.202 -r1.203
  --- wikilib.php	26 Jan 2006 03:08:43 -0000	1.202
  +++ wikilib.php	29 Jan 2006 04:07:26 -0000	1.203
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.202 2006/01/26 03:08:43 wkpark Exp $
  +// $Id: wikilib.php,v 1.203 2006/01/29 04:07:26 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -707,7 +707,7 @@
     }
   
     $form.=$menu;
  -  if ($options['action_mode']=='ajax' and $DBInfo->use_ajax) {
  +  if ($options['action_mode']=='ajax') {
       $ajax=" onsubmit='savePage(this);return false'";
     }
     $formh= sprintf('<form name="editform" method="post" action="%s"'.$ajax.'>',
  @@ -968,7 +968,16 @@
       $formatter->send_header("Content-Type: $options[mime]",$options);
     } else
       $formatter->send_header("Content-Type: text/plain",$options);
  -  print $formatter->page->get_raw_body($options);
  +  $raw_body=$formatter->page->get_raw_body($options);
  +  if (isset($options['section'])) {
  +    $sections= _get_sections($raw_body);
  +    if ($sections[$options['section']])
  +      $raw_body = $sections[$options['section']];
  +     #else ignore
  +    else
  +      $raw_body = "Fill Me\n";
  +  }
  +  print $raw_body;
   }
   
   function do_recall($formatter,$options) {
  @@ -1665,10 +1674,15 @@
     }
     if ($value[10]== 'T') {
       $value[10]=' ';
  -    $time=strtotime($value.' GMT');
  +    $value.=' GMT';
  +  }
  +
  +  if (preg_match('/^\d{2,4}(\-|\/)\d{1,2}\\1\d{1,2}\s+\d{2}:\d{2}/',$value)) {
  +    $time=strtotime($value);
       return gmdate($fmt,$time+$tz_offset);
     }
  -  return gmdate("Y/m/d\TH:i:s",time()+$tz_offset);
  +
  +  return gmdate("Y/m/d H:i:s",time()+$tz_offset).' GMT';
   }
   
   function macro_UserPreferences($formatter,$value,$options='') {
  
  
  


wkpark      2006/01/30 15:55:34

  Modified:    .        wiki.php
  Log:
  RCS fixes: fix rcsdiff not to log stdout messages to the error_log.
  
  Revision  Changes    Path
  1.285     +8 -5      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.284
  retrieving revision 1.285
  diff -u -r1.284 -r1.285
  --- wiki.php	29 Jan 2006 04:07:26 -0000	1.284
  +++ wiki.php	30 Jan 2006 06:55:34 -0000	1.285
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.284 2006/01/29 04:07:26 wkpark Exp $
  +// $Id: wiki.php,v 1.285 2006/01/30 06:55:34 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.284 $',1,-1);
  +$_revision = substr('$Revision: 1.285 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -1147,7 +1147,7 @@
   
       $fp=@popen("co -x,v/ -q -p\"".$rev."\" ".$filename,"r");
       $out='';
  -    if ($fp) {
  +    if (is_resource($fp)) {
         while (!feof($fp)) {
           $line=fgets($fp,2048);
           $out.= $line;
  @@ -1160,7 +1160,8 @@
     function ci($pagename,$log) {
       $key=$this->_filename($pagename);
       $pagename=escapeshellcmd($pagename);
  -    $ret=system("ci -l -x,v/ -q -t-\"".$pagename."\" -m\"".$log."\" ".$key);
  +    $fp=@popen("ci -l -x,v/ -q -t-\"".$pagename."\" -m\"".$log."\" ".$key,"r");
  +    if ($fp) pclose($fp);
     }
   
     function rlog($pagename,$rev='',$opt='',$oldopt='') {
  @@ -1184,8 +1185,10 @@
       if ($rev) $option="-r$rev ";
       if ($rev2) $option.="-r$rev2 ";
   
  +    $NULL='';
  +    if(getenv("OS")!="Windows_NT") $NULL=' 2>/dev/null';
       $filename=$this->_filename($pagename);
  -    $fp=popen("rcsdiff -x,v/ -u $option ".$filename,'r');
  +    $fp=popen("rcsdiff -x,v/ -u $option ".$filename.$NULL,'r');
       if (!$fp) return '';
       while (!feof($fp)) {
         # trashing first two lines
  
  
  


wkpark      2006/01/30 20:52:27

  Modified:    .        wiki.php
  Log:
  more fix for WikiWyg
  
  Revision  Changes    Path
  1.286     +10 -5     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.285
  retrieving revision 1.286
  diff -u -r1.285 -r1.286
  --- wiki.php	30 Jan 2006 06:55:34 -0000	1.285
  +++ wiki.php	30 Jan 2006 11:52:27 -0000	1.286
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.285 2006/01/30 06:55:34 wkpark Exp $
  +// $Id: wiki.php,v 1.286 2006/01/30 11:52:27 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.285 $',1,-1);
  +$_revision = substr('$Revision: 1.286 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -1899,6 +1899,7 @@
         if (preg_match("/^(w|[A-Z])/",$url)) { # InterWiki or wiki:
           if (strpos($url," ")) { # have a space ?
             $dum=explode(" ",$url,2);
  +          if ($dum[1])
             return $this->interwiki_repl($dum[0],$dum[1],$attr,$external_icon);
           }
           
  @@ -1970,6 +1971,7 @@
       }
   
       if ($page=='/') $page='';
  +    if (substr($page,-1)==' ') $sep='<b></b>'; // auto append SixSingleQuotes
       $urlpage=_urlencode(trim($page));
       #$urlpage=trim($page);
       if (strpos($url,'$PAGE') === false)
  @@ -2016,7 +2018,7 @@
         return "<a href='".$url."' $attr title='$wiki:$page'><img border='0' align='middle' alt='$text' src='$url' /></a>$extra";
   
       if (!$text) return $img;
  -    return $img. "<a href='".$url."' $attr title='$wiki:$page'>$text</a>$extra";
  +    return $img. "<a href='".$url."' $attr title='$wiki:$page'>$text</a>$extra$sep";
     }
   
     function store_pagelinks() {
  @@ -2281,6 +2283,8 @@
       $prefix=$this->toc_prefix;
       if ($this->toc)
         $head="<a href='#toc'>$num</a> $head";
  +    $perma='';
  +    if ($this->perma_icon)
       $perma=" <a class='perma' href='#s$prefix-$num'>$this->perma_icon</a>";
   
       return "$close$open$edit<h$dep><a id='s$prefix-$num' name='s$prefix-$num'></a> $head$perma</h$dep>";
  @@ -2289,7 +2293,8 @@
     function macro_repl($macro,$value='',$options='') {
       preg_match("/^([A-Za-z]+)(\((.*)\))?$/",$macro,$match);
       if (!$match) return $this->word_repl($macro);
  -    if ($this->nomacro) return '<span class="wikiMarkup">[['.$macro.']]</span>';
  +    if ($this->wikimarkup)
  +      return '<span class="wikiMarkup">[['.$macro.']]</span>';
       if (!$value and $match[1] and $match[2]) { #strpos($macro,'(') !== false)) {
         $name=$match[1]; $args=($match[2] and !$match[3]) ? true:$match[3];
       } else {
  @@ -2919,7 +2924,7 @@
              preg_match('/<(ins|del) class=\'diff-(added|removed)\'>/',
              $this->pre_line)) $show_raw=1;
   
  -         if ($processor and !$show_raw) {
  +         if ($processor and !$show_raw and !$this->wikimarkup) {
              $value=$this->pre_line;
              $out= call_user_func("processor_$processor",$this,$value,$options);
              $line=$out.$line;
  
  
  


wkpark      2006/01/30 20:53:14

  Modified:    plugin   markup.php
  Log:
  fixes for WikiWyg
  
  Revision  Changes    Path
  1.2       +3 -2      moniwiki/plugin/markup.php
  
  Index: markup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/markup.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- markup.php	29 Jan 2006 04:01:10 -0000	1.1
  +++ markup.php	30 Jan 2006 11:53:14 -0000	1.2
  @@ -3,12 +3,13 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a markup plugin for the MoniWiki
   //
  -// $Id: markup.php,v 1.1 2006/01/29 04:01:10 wkpark Exp $
  +// $Id: markup.php,v 1.2 2006/01/30 11:53:14 wkpark Exp $
   
   function do_markup($formatter,$options) {
       $formatter->preview=1;
       $formatter->sister_on=0;
  -    $formatter->nomacro=1;
  +    $formatter->perma_icon='';
  +    if (!$options['all']) $formatter->wikimarkup=1;
       if ($options['value']) {
           $formatter->send_page(_stripslashes($options['value']),$options);
       }
  
  
  


wkpark      2006/01/30 20:53:14

  Modified:    plugin/processor mimetex.php
  Log:
  fixes for WikiWyg
  
  Revision  Changes    Path
  1.4       +2 -2      moniwiki/plugin/processor/mimetex.php
  
  Index: mimetex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/mimetex.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- mimetex.php	13 Jan 2006 16:04:52 -0000	1.3
  +++ mimetex.php	30 Jan 2006 11:53:14 -0000	1.4
  @@ -6,11 +6,12 @@
   //
   // Support command line mode by JoungKyun Kim 2006/01/13
   //
  -// $Id: mimetex.php,v 1.3 2006/01/13 16:04:52 wkpark Exp $
  +// $Id: mimetex.php,v 1.4 2006/01/30 11:53:14 wkpark Exp $
   
   function processor_mimetex($formatter,$value) {
     global $DBInfo;
   
  +  $alt = str_replace ('\'','&#039;',$value);
     $value = escapeshellarg ($value);
     preg_match ('/\s*\$+([^\$]*)\$+\s*/', $value, $match);
     $tex = $match[1];
  @@ -33,7 +34,6 @@
            "</pre>\n";
     }
   
  -  $alt = str_replace ('\'','&#039;',$tex);
     if ( ! strncmp ('shell:', $mimetex, 6) ) {
       if ( ! $tex ) return;
   
  
  
  


wkpark      2006/01/31 00:38:31

  Modified:    .        wiki.php
  Log:
  more fixes for WikiWyg
  
  Revision  Changes    Path
  1.287     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.286
  retrieving revision 1.287
  diff -u -r1.286 -r1.287
  --- wiki.php	30 Jan 2006 11:52:27 -0000	1.286
  +++ wiki.php	30 Jan 2006 15:38:31 -0000	1.287
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.286 2006/01/30 11:52:27 wkpark Exp $
  +// $Id: wiki.php,v 1.287 2006/01/30 15:38:31 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.286 $',1,-1);
  +$_revision = substr('$Revision: 1.287 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -670,7 +670,7 @@
       $this->icon['main']="<img src='$imgdir/${iconset}main.$ext' class='icon' alt='^' align='middle' border='0' />";
       $this->icon['print']="<img src='$imgdir/${iconset}print.$ext' alt='P' align='middle' border='0' />";
       $this->icon['attach']="<img src='$imgdir/${iconset}attach.$ext' alt='@' align='middle' border='0' />";
  -    $this->icon['external']="<img src='$imgdir/${iconset}external.$ext' alt='[]' align='middle' border='0' />";
  +    $this->icon['external']="<img class='externalLink' src='$imgdir/${iconset}external.$ext' alt='[]' align='middle' border='0' />";
       $this->icon_sep=" ";
       $this->icon_bra=" ";
       $this->icon_cat=" ";
  @@ -1893,7 +1893,7 @@
           $url=str_replace("@","_at_",$url);
           $link=str_replace('&','&amp;',$url);
           $name=substr($url,7);
  -        return $this->icon['mailto']."<a href='$link' $attr>$name</a>$external_icon";
  +        return $this->icon['mailto']."<a class='externalLink' href='$link' $attr>$name</a>$external_icon";
         }
   
         if (preg_match("/^(w|[A-Z])/",$url)) { # InterWiki or wiki:
  
  
  


wkpark      2006/01/31 00:41:28

  Added:       local    moniwyg.js
  Log:
  experimental WikiWyg module
  
  Revision  Changes    Path
  1.1                  moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  //
  // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
  //
  // $Id: moniwyg.js,v 1.1 2006/01/30 15:41:28 wkpark Exp $
  //
  _url_prefix="/wiki";
  
  Wikiwyg.prototype.saveChanges = function() {
      var self = this;
      var myWikiwyg = new Wikiwyg.Wikitext();
      var wikitext;
  
      this.current_mode.toHtml( function(html) { self.fromHtml(html) });
  
      if (this.current_mode.classname.match(/(Wysiwyg|HTML|Preview)/)) {
          this.current_mode.fromHtml(this.div.innerHTML);
  
          wikitext = myWikiwyg.convert_html_to_wikitext(this.div.innerHTML);
      }
      else {
          wikitext = this.current_mode.textarea.value;
      }
  
      //alert(wikitext);
      myWikiwyg.convertWikitextToHtmlAll(wikitext,
          function(new_html) { self.div.innerHTML = new_html });
  
      this.displayMode();
  }
  
  Wikiwyg.prototype.editMode = function(form) {
      var self = this;
      var dom = document.createElement('div');
      dom.innerHTML=form;
  
      var form=dom.getElementsByTagName('form')[0];
      var wikitext= form.savetext.value;
  
      this.current_mode = this.first_mode;
      if (this.current_mode.classname.match(/(Wysiwyg|HTML|Preview)/)) {
          var myWikiwyg = new Wikiwyg.Wikitext();
  
          myWikiwyg.convertWikitextToHtml(wikitext,
              function(new_html) { self.current_mode.fromHtml(new_html); });
      }
      else {
          this.current_mode.textarea.value = wikitext;
      }
      this.toolbarObject.resetModeSelector();
      this.current_mode.enableThis();
      this.myinput=dom.getElementsByTagName('input');
  }
  
  proto = Wikiwyg.Wysiwyg.prototype;
  proto.do_link = function() {
      var selection = this.get_link_selection_text();
      if (! selection) return;
      var url;
      var match = selection.match(/(.*?)\b((?:http|https|ftp|irc):\/\/\S+)(.*)/);
      if (match) {
          if (match[1] || match[3]) return null;
          url = match[2];
      }
      else {
          url = '/' + escape(selection); 
      }
      this.exec_command('createlink', url);
  }
  
  
  proto = Wikiwyg.Wikitext.prototype;
  
  proto.convert_html_to_wikitext = function(html) {
      this.copyhtml = html;
      var dom = document.createElement('div');
      html = html.replace(/<!-=-/g, '<!--').
                  replace(/-=->/g, '-->');
  
      // for MoniWiki
      // remove perma icons
      html = html.replace(/<a class=.perma..*\/a>/g, '');
      // interwiki links
      // remove interwiki icons
      html =
          html.replace(/<a class=.interwiki.[^>]+><img [^>]+><\/a><a [^>]+title=(\'|\")([^\'\"]+)\1>[^<]+<\/a>/g, "$2");
      //html =
      //html.replace(/<a [^>]+title=(\'|\")([^\'\"]+)\1>[^<]+<\/a>/g, "**$2");
      html =
          html.replace(/<img class=.(url|externalLink).[^>]+>/g, '');
      // smiley/inline tex etc.
      html =
          html.replace(/<img [^>]*class=.(interwiki|smiley).[^>]* alt=(.)([^\'\"]+)\2[^>]+>/g, "$3");
      // interwiki links
      html =
          html.replace(/<a [^>]+ alt=(.)([^\'\"]+)\1[^>]+>/g, "$2");
      // remove nonexists links
      html = html.replace(/<a class=.nonexistent.[^>]+>([^<]+)<\/a>/g, "$1");
  
      //
      dom.innerHTML = html;
      this.output = [];
      this.list_type = [];
      this.indent_level = 0;
  
      this.walk(dom);
  
      // add final whitespace
      this.assert_new_line();
  
      return this.join_output(this.output);
  }
  
  proto.format_tr = function(element) {
      this.walk(element);
      this.appendOutput('||');
      this.insert_new_line();
  }
  
  proto.format_br = function(element) {
      this.insert_new_line();
  }
  
  proto.assert_blank_line = function() {
      this.chomp();
      this.insert_new_line();
  }
  
  proto.format_td = function(element) {
      var colspan =element.getAttribute('colspan');
      if (colspan) {
          for (var i=0;i<colspan;i++)
              this.appendOutput('||');
      } else
          this.appendOutput('||');
      var rowspan =element.getAttribute('rowspan');
      if (rowspan)
          this.appendOutput('<|'+rowspan+'>');
      this.appendOutput(' ');
      this.walk(element);
      this.appendOutput(' ');
  }
  
  proto = Wikiwyg.Toolbar.prototype;
  proto.config.controlLayout = [
      'save', 'cancel', 'mode_selector', '/',
      'bold',
      'italic',
      'link',
      'h2',
      'ordered',
      'unordered',
      'math',
      'nowiki',
      'hr'
  ];
  
  proto.config.controlLabels.math = 'Math';
  proto.config.controlLabels.nowiki = 'As Is';
  
  proto = Wikiwyg.Wikitext.prototype;
  proto.config.markupRules.bold = ['bound_phrase', "'''", "'''"];
  proto.config.markupRules.italic = ['bound_phrase', "''", "''"];
  proto.config.markupRules.underline = ['bound_phrase', '__', '__'];
  proto.config.markupRules.strike = ['bound_phrase', '~~', '~~'];
  proto.config.markupRules.link = ['bound_phrase', '[', ']'];
  proto.config.markupRules.math = ['bound_phrase', '$ ', ' $'];
  proto.config.markupRules.nowiki = ['bound_phrase', '{{{', '}}}'];
  proto.config.markupRules.h1 = ['bound_line', '= ', ' ='],
  proto.config.markupRules.h2 = ['bound_line', '== ', ' =='],
  proto.config.markupRules.h3 = ['bound_line', '=== ', ' ==='],
  proto.config.markupRules.h4 = ['bound_line', '==== ', ' ===='],
  proto.config.markupRules.h5 = ['bound_line', '===== ', ' ====='],
  proto.config.markupRules.h6 = ['bound_line', '====== ', ' ======'],
  proto.config.markupRules.pre = ['bound_phrase','{{{','}}}'],
  proto.config.markupRules.ordered = ['start_lines', ' 1.'];
  proto.config.markupRules.unordered = ['start_lines', ' *'];
  proto.config.markupRules.indent = ['start_lines', '>'];
  proto.config.markupRules.hr = ['line_alone', '----'];
  proto.config.markupRules.table = ['line_alone', '|| A || B || C ||\n||   ||   ||   ||\n||   ||   ||   ||'];
  
  proto.do_math = Wikiwyg.Wikitext.make_do('math');
  proto.do_nowiki = Wikiwyg.Wikitext.make_do('nowiki');
  
  proto.collapse = function(string) {
      return string.replace(/\r\n/g, "\n"); // FIX
  }
  
  proto.walk = function(element) {
      if (!element) return;
      for (var part = element.firstChild; part; part = part.nextSibling) {
          if (part.nodeType == 1) {
              this.dispatch_formatter(part);
          }
          else if (part.nodeType == 3) {
              if (part.nodeValue.match(/\S/)) {
                  var string = part.nodeValue;
                  if (! string.match(/^[\'\.\,\?\!\)]/)) {
                      this.assert_space_or_newline(); // FIX
                      string = this.trim(string); // FIX
                      //string = this.mytrim(string); // replace
                  }
                  this.appendOutput(this.collapse(string));
              }
          }
      }
  }
  
  proto.mytrim = function(string) {
      string = string.replace(/(\s|\r\n|\n|\r)+$/, '');
      return string.replace(/^(\r\n|\n|\r)+/, '');
  }
  
  proto.handle_bound_phrase = function(element, markup) {
      //this.assert_space_or_newline(); // FIX
      this.appendOutput(markup[1]);
      this.no_following_whitespace();
      this.walk(element);
      // assume that walk leaves no trailing whitespace.
      this.appendOutput(markup[2]);
  }
  
  proto.assert_space_or_newline = function() {
      var string;
      if (! this.output.length) return;
  
      string = this.output[this.output.length - 1];
      if (! string.whitespace && ! string.match(/(\s+|[\"\':])$/))
          this.appendOutput(' ');
  }
  
  proto.camel_case_link = function(label) {
      if (! this.config.supportCamelCaseLinks)
          return false;
      return label.match(/^[A-Z]*[a-z]+/);
  }
  
  proto.href_is_wiki_link = function(href) {
      if (! this.looks_like_a_url(href))
          return true;
      if (! href.match(/\?/))
          return false;
      var no_arg_input   = href.split('?')[0];
      var no_arg_current = location.href.split('?')[0];
      return no_arg_input == no_arg_current;
  }
  
  proto.convertWikitextToHtml = function(wikitext, func) {
      var postdata = 'action=markup&value=' + encodeURIComponent(wikitext);
      Wikiwyg.liveUpdate(
          'POST',
          self.location,
          postdata,
          func);
  }
  
  proto.convertWikitextToHtmlAll = function(wikitext, func) {
      var postdata = 'action=markup&all=1&value=' + encodeURIComponent(wikitext);
      Wikiwyg.liveUpdate(
          'POST',
          self.location,
          postdata,
          func);
  }
  
  // Inject Wikiwyg css into the head
  var head = document.getElementsByTagName('head')[0];
  
  var link = document.createElement('link');
  link.setAttribute('rel', 'stylesheet');
  link.setAttribute('type', 'text/css');
  link.setAttribute('href', _url_prefix + '/local/Wikiwyg/css/wikiwyg.css');
  head.appendChild(link);
  //
  
  wikiwyg_divs = [];
  function createWikiwygDiv(elem, parent) {
      var div = document.createElement('div');
      div.setAttribute('class', 'wikiwyg_area');
      var insert = elem.previousSibling;
      var edit = elem;
      var elem = elem.nextSibling;
      var check = 0;
  
      alert(edit.innerHTML);
      while (elem) {
          for (i=0; i<elem.childNodes.length; i++) {
              if (elem.childNodes[i].className == 'sectionEdit') {
                  check = 1;
                  break;
              }
          }
          if (check == 1) break;
          //if (elem.className == 'sectionEdit')
          //    break;
          //if (elem.className == 'printfooter') {
          //    elem = null;
          //    break;
          //}
          var temp = elem.nextSibling;
          div.appendChild(elem);
          elem = temp;
      }
      wikiwyg_divs.push([edit, div]);
      parent.insertBefore(div, insert);
      parent.insertBefore(edit, div);
      return elem;
  }
  
  //
  // dynamic section editing for MoniWiki
  //
  wikiwygs = [];
  function sectionEdit(ev,obj,sect) {
      if (sect) {
          var sec=document.getElementById('sect-'+sect);
          var ed=document.getElementById('editSect-'+sect);
          if (ed) { // toogle
              sec.parentNode.removeChild(sec.parentNode.lastChild);
              return;
          }
          var href=obj.href.replace(/=edit/,'=edit/ajax');
          var form=HTTPGet(href);
          if (form.substring(0,5) != 'false') {
              var myConfig = {
                  doubleClickToEdit: true,
                  toolbar: {
                      imagesLocation:
                          _url_prefix + '/local/Wikiwyg/demo/moin/images/',
                  imagesExtension: '.png'
              },
              wikitext: {
                  supportCamelCaseLinks: true
              },
              modeClasses: [
                  'Wikiwyg.Wikitext',
                  'Wikiwyg.Wysiwyg',
                  'Wikiwyg.Preview',
              ]
          }
          //var div = document.createElement('div');
          //div.setAttribute('class', 'wikiwyg_area');
  
          //sec.parentNode.appendChild(div);
  
          var myWikiwyg = new Wikiwyg();
          //myWikiwyg.createWikiwygArea(div, myConfig);
          myWikiwyg.createWikiwygArea(sec.parentNode, myConfig);
          wikiwygs.push(myWikiwyg);
          myWikiwyg.editMode(form);
          //myWikiwyg.textarea.value = wikitext;
          //alert(sec.parentNode.innerHTML);
  
          //var f=document.createElement('div');
          //f.setAttribute('id','editSect-'+sect);
          }
      }
  }
  
  function savePage(obj) {
      obj.elements['action'].value+='/ajax';
      var sec=document.getElementById('sect-'+obj.section.value);
      var toSend = '';
      for (var i=0;i<obj.elements.length;i++) {
          if (obj.elements[i].name != '')  {
              toSend += (toSend ? '&' : '') + obj.elements[i].name + '='
                                    + escape(obj.elements[i].value);
              //alert(obj.elements[i].name+'='+obj.elements[i].value);
          }
      }
      var form=HTTPPost(self.location,toSend);
      if (form.substring(0,4) == 'true') {
          var ed=document.getElementById('editSect-'+obj.section.value);
          if (ed) { // toogle
              sec.parentNode.removeChild(sec.parentNode.lastChild);
              return false;
          }
      } else {
          var f=document.createElement('div');
          f.setAttribute('id','editSect-'+obj.section.value);
          // show error XXX
          f.innerHTML=form;
          sec.parentNode.appendChild(f);
      }
      return false;
  }
  
  // vim:et:sts=4:sw=4:
  
  
  


wkpark      2006/01/31 19:31:30

  Modified:    .        wiki.php
  Log:
  more fixes for WikiWyg integration.
  
  Revision  Changes    Path
  1.288     +28 -9     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.287
  retrieving revision 1.288
  diff -u -r1.287 -r1.288
  --- wiki.php	30 Jan 2006 15:38:31 -0000	1.287
  +++ wiki.php	31 Jan 2006 10:31:30 -0000	1.288
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.287 2006/01/30 15:38:31 wkpark Exp $
  +// $Id: wiki.php,v 1.288 2006/01/31 10:31:30 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.287 $',1,-1);
  +$_revision = substr('$Revision: 1.288 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -2293,8 +2293,11 @@
     function macro_repl($macro,$value='',$options='') {
       preg_match("/^([A-Za-z]+)(\((.*)\))?$/",$macro,$match);
       if (!$match) return $this->word_repl($macro);
  -    if ($this->wikimarkup)
  -      return '<span class="wikiMarkup">[['.$macro.']]</span>';
  +    $bra='';$ket='';
  +    if ($this->wikimarkup and !$options['nomarkup']) {
  +      $bra= "<span class='wikiMarkup'><!-- wiki:\n[[$macro]]\n-->";
  +      $ket= '</span>';
  +    }
       if (!$value and $match[1] and $match[2]) { #strpos($macro,'(') !== false)) {
         $name=$match[1]; $args=($match[2] and !$match[3]) ? true:$match[3];
       } else {
  @@ -2309,7 +2312,7 @@
         if (!function_exists ("macro_".$plugin)) return '[['.$macro.']]';
       }
       $ret=call_user_func_array("macro_$plugin",array(&$this,$args,$options));
  -    return $ret;
  +    return $bra.$ret.$ket;
     }
   
     function processor_repl($processor,$value,$options="") {
  @@ -2645,9 +2648,10 @@
         }
   
         if (!$in_pre and $line[0]=='#' and $line[1]=='#') {
  +        $out='';
           if ($line[2]=='[') {
             $macro=substr($line,4,-2);
  -          $text.= $this->macro_repl($macro);
  +          $out= $this->macro_repl($macro,'',array('nomarkup'=>1));
           } else if ($line[2]=='#') {
             $div_enclose.='<div id="'.substr($line,3).'">';
             $my_div++;
  @@ -2658,6 +2662,10 @@
             $div_enclose.='</div>';
             $my_div--;
           }
  +        if ($this->wikimarkup)
  +          $text=$text."<span><!-- wiki:\n$line\n-->$out</span>";
  +        else $text.=$out;
  +        unset($out);
           continue; # comments
         }
         $ll=strlen($line);
  @@ -2924,10 +2932,15 @@
              preg_match('/<(ins|del) class=\'diff-(added|removed)\'>/',
              $this->pre_line)) $show_raw=1;
   
  -         if ($processor and !$show_raw and !$this->wikimarkup) {
  +         if ($processor and !$show_raw) {
              $value=$this->pre_line;
              $out= call_user_func("processor_$processor",$this,$value,$options);
  -           $line=$out.$line;
  +           if ($this->wikimarkup)
  +             $line='<div class="wikiMarkup">'."<!-- wiki:\n{{{".
  +               $value."}}}\n-->$out</div>";
  +           else
  +             $line=$out.$line;
  +           unset($out);
            } else if ($in_quote) {
               # htmlfy '<'
               $pre=str_replace("<","&lt;",$this->pre_line);
  @@ -2958,7 +2971,13 @@
                               $this->pre_line);
               $pre=preg_replace("/&lt;(\/?)(ins|del)/","<\\1\\2",$pre);
               # FIXME Check open/close tags in $pre
  -            $line="<pre class='wiki'>\n".$pre."</pre>\n".$line;
  +            $out="<pre class='wiki'>\n".$pre."</pre>";
  +            if ($this->wikimarkup)
  +              $out='<div class="wikiMarkup">'."<!-- wiki:\n{{{\n".
  +                str_replace('}}}','\}}}',$this->pre_line).
  +                "}}}\n-->".$out."</div>";
  +            $line=$out."\n".$line;
  +            unset($out);
            }
            $this->nobr=1;
         }
  
  
  


wkpark      2006/01/31 19:31:31

  Modified:    plugin   markup.php
  Log:
  more fixes for WikiWyg integration.
  
  Revision  Changes    Path
  1.3       +12 -2     moniwiki/plugin/markup.php
  
  Index: markup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/markup.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- markup.php	30 Jan 2006 11:53:14 -0000	1.2
  +++ markup.php	31 Jan 2006 10:31:31 -0000	1.3
  @@ -3,15 +3,25 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a markup plugin for the MoniWiki
   //
  -// $Id: markup.php,v 1.2 2006/01/30 11:53:14 wkpark Exp $
  +// $Id: markup.php,v 1.3 2006/01/31 10:31:31 wkpark Exp $
   
   function do_markup($formatter,$options) {
  -    $formatter->preview=1;
  +    $formatter->section_edit=0;
       $formatter->sister_on=0;
       $formatter->perma_icon='';
       if (!$options['all']) $formatter->wikimarkup=1;
       if ($options['value']) {
           $formatter->send_page(_stripslashes($options['value']),$options);
  +    } else if (isset($options['section'])) {
  +        $formatter->section_edit=1;
  +        $formatter->sect_num=$options['section'] - 1;
  +        $raw_body=$formatter->page->get_raw_body($options);
  +        $sections= _get_sections($raw_body);
  +        if ($sections[$options['section']]) {
  +            $raw_body = $sections[$options['section']];
  +            $formatter->send_page($raw_body,$options);
  +        }
  +        #else ignore
       }
       return;
   }
  
  
  


wkpark      2006/01/31 19:32:08

  Modified:    plugin/processor mimetex.php
  Log:
  add a missing class name.
  
  Revision  Changes    Path
  1.5       +2 -2      moniwiki/plugin/processor/mimetex.php
  
  Index: mimetex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/mimetex.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- mimetex.php	30 Jan 2006 11:53:14 -0000	1.4
  +++ mimetex.php	31 Jan 2006 10:32:08 -0000	1.5
  @@ -6,7 +6,7 @@
   //
   // Support command line mode by JoungKyun Kim 2006/01/13
   //
  -// $Id: mimetex.php,v 1.4 2006/01/30 11:53:14 wkpark Exp $
  +// $Id: mimetex.php,v 1.5 2006/01/31 10:32:08 wkpark Exp $
   
   function processor_mimetex($formatter,$value) {
     global $DBInfo;
  @@ -58,7 +58,7 @@
       return "<img class='tex' src='$DBInfo->url_prefix/$cache_dir/$uniq.$ext' alt='$alt' ".
              "title=\"$alt\" />";
     } else {
  -    return '<img src=\''.$mimetex.'?'.$tex.'\' alt=\''. $alt .'\' title=\''.$alt.'\' />';
  +    return '<img class=\'tex\' src=\''.$mimetex.'?'.$tex.'\' alt=\''. $alt .'\' title=\''.$alt.'\' />';
     }
   }
   // vim:et:sts=2:sw=2:
  
  
  


wkpark      2006/01/31 19:48:07

  Modified:    local    se.js moniwyg.js
  Log:
  more fixes
  
  Revision  Changes    Path
  1.2       +8 -3      moniwiki/local/se.js
  
  Index: se.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/se.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- se.js	10 Dec 2005 12:14:49 -0000	1.1
  +++ se.js	31 Jan 2006 10:48:07 -0000	1.2
  @@ -1,7 +1,7 @@
   //
   // dynamic section editing for MoniWiki
   //
  -// $Id: se.js,v 1.1 2005/12/10 12:14:49 wkpark Exp $
  +// $Id: se.js,v 1.2 2006/01/31 10:48:07 wkpark Exp $
   //
   function sectionEdit(ev,obj,sect) {
     if (sect) {
  @@ -33,7 +33,7 @@
     for (var i=0;i<obj.elements.length;i++) {
       if (obj.elements[i].name != '')  {
         toSend += (toSend ? '&' : '') + obj.elements[i].name + '='
  -                                  + escape(obj.elements[i].value);
  +                                  + encodeURIComponent(obj.elements[i].value);
         //alert(obj.elements[i].name+'='+obj.elements[i].value);
       }
     }
  @@ -42,8 +42,13 @@
       var ed=document.getElementById('editSect-'+obj.section.value);
       if (ed) { // toogle
         sec.parentNode.removeChild(sec.parentNode.lastChild);
  -      return false;
       }
  +
  +    toSend = 'action=markup&all=1&section=' + obj.section.value;
  +    form=HTTPPost(self.location,toSend);
  +    //
  +    sec.parentNode.innerHTML=form;
  +    return false;
     } else {
       var f=document.createElement('div');
       f.setAttribute('id','editSect-'+obj.section.value);
  
  
  
  1.2       +63 -14    moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- moniwyg.js	30 Jan 2006 15:41:28 -0000	1.1
  +++ moniwyg.js	31 Jan 2006 10:48:07 -0000	1.2
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.1 2006/01/30 15:41:28 wkpark Exp $
  +// $Id: moniwyg.js,v 1.2 2006/01/31 10:48:07 wkpark Exp $
   //
   _url_prefix="/wiki";
   
  @@ -21,20 +21,55 @@
           wikitext = this.current_mode.textarea.value;
       }
   
  -    //alert(wikitext);
  +    var datestamp='';
  +    var section='';
  +    for (var i=0;i<this.myinput.length;i++) {
  +        if (this.myinput[i].name == 'datestamp')
  +            datestamp=this.myinput[i].value;
  +        if (this.myinput[i].name == 'section')
  +        section=this.myinput[i].value;
  +    }
  +    //alert(datestamp+'/'+section);
  +
       myWikiwyg.convertWikitextToHtmlAll(wikitext,
           function(new_html) { self.div.innerHTML = new_html });
   
  -    this.displayMode();
  +    // save
  +    var toSend = 'action=savepage/ajax' +
  +    '&savetext=' + encodeURIComponent(wikitext) +
  +    '&datestamp=' + datestamp + '&section=' + section;
  +    var location = this.mylocation;
  +
  +    var saved=self.div.innerHTML;
  +    self.div.innerHTML='<img src="'+_url_prefix+'/imgs/loading.gif" />';
  +    var form=HTTPPost(location,toSend);
  +    if (form.substring(0,4) == 'true') {
  +        // get section
  +        var toSend = 'action=markup&all=1&section=' + section;
  +        form=HTTPPost(location,toSend);
  +        self.div.innerHTML=form;
  +
  +        this.displayMode();
  +        return;
  +    } else {
  +        self.div.innerHTML=saved;
  +        var f=document.createElement('div');
  +        f.setAttribute('class','errorLog');
  +        // show error XXX
  +        f.innerHTML=form;
  +        self.parentNode.appendChild(f);
  +    }
  +    return;
   }
   
   Wikiwyg.prototype.editMode = function(form) {
       var self = this;
       var dom = document.createElement('div');
  -    dom.innerHTML=form;
  +    dom.innerHTML = form;
   
  -    var form=dom.getElementsByTagName('form')[0];
  -    var wikitext= form.savetext.value;
  +    var form = dom.getElementsByTagName('form')[0];
  +    var wikitext = form.savetext.value;
  +    this.mylocation = form.getAttribute('action');
   
       this.current_mode = this.first_mode;
       if (this.current_mode.classname.match(/(Wysiwyg|HTML|Preview)/)) {
  @@ -89,7 +124,7 @@
           html.replace(/<img class=.(url|externalLink).[^>]+>/g, '');
       // smiley/inline tex etc.
       html =
  -        html.replace(/<img [^>]*class=.(interwiki|smiley).[^>]* alt=(.)([^\'\"]+)\2[^>]+>/g, "$3");
  +        html.replace(/<img [^>]*class=.(tex|interwiki|smiley).[^>]* alt=(.)([^\'\"]+)\2[^>]+>/g, "$3");
       // interwiki links
       html =
           html.replace(/<a [^>]+ alt=(.)([^\'\"]+)\1[^>]+>/g, "$2");
  @@ -117,9 +152,15 @@
   }
   
   proto.format_br = function(element) {
  +// for plain br
  +    var string = this.output[this.output.length - 1];
  +    if (! string.whitespace && ! string.match(/\n$/))
  +        this.insert_new_line();
       this.insert_new_line();
   }
   
  +// proto.format_pre FIXME
  +
   proto.assert_blank_line = function() {
       this.chomp();
       this.insert_new_line();
  @@ -135,9 +176,10 @@
       var rowspan =element.getAttribute('rowspan');
       if (rowspan)
           this.appendOutput('<|'+rowspan+'>');
  -    this.appendOutput(' ');
  +    this.appendOutput('');
       this.walk(element);
  -    this.appendOutput(' ');
  +    this.chomp(); // XXX
  +    this.appendOutput('');
   }
   
   proto = Wikiwyg.Toolbar.prototype;
  @@ -313,13 +355,19 @@
   function sectionEdit(ev,obj,sect) {
       if (sect) {
           var sec=document.getElementById('sect-'+sect);
  -        var ed=document.getElementById('editSect-'+sect);
  -        if (ed) { // toogle
  -            sec.parentNode.removeChild(sec.parentNode.lastChild);
  -            return;
  -        }
  +
           var href=obj.href.replace(/=edit/,'=edit/ajax');
  +        var saved=obj.cloneNode(true);
  +        var loading=document.createElement('img');
  +        loading.setAttribute('border',0);
  +        loading.setAttribute('class','ajaxLoading');
  +        loading.src=_url_prefix + '/imgs/loading.gif';
  +        obj.blur();
  +        obj.parentNode.replaceChild(loading,obj);
  +        //alert('loading...');
           var form=HTTPGet(href);
  +        loading.parentNode.replaceChild(saved,loading);
  +
           if (form.substring(0,5) != 'false') {
               var myConfig = {
                   doubleClickToEdit: true,
  @@ -334,6 +382,7 @@
               modeClasses: [
                   'Wikiwyg.Wikitext',
                   'Wikiwyg.Wysiwyg',
  +                'Wikiwyg.HTML',
                   'Wikiwyg.Preview',
               ]
           }
  
  
  


wkpark      2006/02/01 09:42:48

  Modified:    local    moniwyg.js
  Log:
  Wikiwyg fix for table
  
  Revision  Changes    Path
  1.3       +89 -6     moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- moniwyg.js	31 Jan 2006 10:48:07 -0000	1.2
  +++ moniwyg.js	1 Feb 2006 00:42:48 -0000	1.3
  @@ -1,9 +1,9 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.2 2006/01/31 10:48:07 wkpark Exp $
  +// $Id: moniwyg.js,v 1.3 2006/02/01 00:42:48 wkpark Exp $
   //
  -_url_prefix="/wiki";
  +//_url_prefix="/wiki";
   
   Wikiwyg.prototype.saveChanges = function() {
       var self = this;
  @@ -87,6 +87,32 @@
   }
   
   proto = Wikiwyg.Wysiwyg.prototype;
  +
  +proto.enableThis = function() {
  +    this.superfunc('enableThis').call(this);
  +    this.edit_iframe.style.border = '1px black solid';
  +    this.edit_iframe.width = '100%';
  +    this.setHeightOf(this.edit_iframe);
  +    this.fix_up_relative_imgs();
  +    this.get_edit_document().designMode = 'on';
  +    // XXX - Doing stylesheets in initializeObject might get rid of blue flash
  +    this.apply_stylesheets();
  +    //
  +    var doc    = this.get_edit_document();
  +    var head   = doc.getElementsByTagName("head")[0];
  +    var link = doc.createElement('link');
  +    link.setAttribute('rel', 'STYLESHEET');
  +    link.setAttribute('type', 'text/css');
  +    link.setAttribute('media', 'screen');
  +    var loc = location.protocol + '//' + location.host;
  +    if (location.port) loc += ':' + location.port;
  +    link.setAttribute('href',
  +        loc + _url_prefix + '/local/Wikiwyg/css/wysiwyg.css');
  +    head.appendChild(link);
  +    this.enable_keybindings();
  +    this.clear_inner_html();
  +}
  +
   proto.do_link = function() {
       var selection = this.get_link_selection_text();
       if (! selection) return;
  @@ -102,7 +128,6 @@
       this.exec_command('createlink', url);
   }
   
  -
   proto = Wikiwyg.Wikitext.prototype;
   
   proto.convert_html_to_wikitext = function(html) {
  @@ -145,6 +170,55 @@
       return this.join_output(this.output);
   }
   
  +proto.format_img = function(element) {
  +    var uri = element.getAttribute('src');
  +    var style = element.getAttribute('style');
  +    var width = element.getAttribute('width');
  +    var height = element.getAttribute('height');
  +    var class = element.getAttribute('class');
  +    if (uri) {
  +        this.assert_space_or_newline();
  +        this.appendOutput(uri);
  +        var attr='';
  +        if (width) attr+='width='+width;
  +        if (height) attr+=(attr ? '&':'') + 'height='+height;
  +
  +        if (style) {
  +            var m = style.match(/width:\s*(\d+)px;\s*height:\s*(\d+)px/);
  +            if (m[1]) attr+=(attr ? '&':'') + 'width='+m[1];
  +            if (m[2]) attr+=(attr ? '&':'') + 'height='+m[2];
  +        }
  +
  +        if (class) {
  +            var m = class.match(/img(Center|Left|Right)$/);
  +            if (m[1]) attr+=(attr ? '&':'') + 'align='+m[1].toLowerCase();
  +        }
  +
  +        if (attr) this.appendOutput('?'+attr);
  +    }
  +}
  +
  +proto.format_table = function(element) {
  +    this.assert_blank_line();
  +    var style =element.getAttribute('style');
  +    var width =element.getAttribute('width');
  +    this.myattr=null;
  +
  +    if (width) {
  +        this.myattr= '<tablewidth='+width + '>';
  +    } else 
  +    if (style) {
  +        var attr='';
  +        var m = style.match(/width:\s*(\d+)px;\s*height:\s*(\d+)px/);
  +        if (m[1]) attr+= '<tablewidth='+m[1] + '>';
  +        if (m[2]) attr+= '<tableheight='+m[2] + '>';
  +
  +        if (attr != '') this.myattr=attr;
  +    }
  +    this.walk(element);
  +    this.assert_blank_line();
  +}
  +
   proto.format_tr = function(element) {
       this.walk(element);
       this.appendOutput('||');
  @@ -168,14 +242,22 @@
   
   proto.format_td = function(element) {
       var colspan =element.getAttribute('colspan');
  +    //var align =element.getAttribute('align');
       if (colspan) {
           for (var i=0;i<colspan;i++)
               this.appendOutput('||');
       } else
           this.appendOutput('||');
  +
  +    if (this.myattr)
  +        this.appendOutput(this.myattr);
  +    this.myattr=null;
  +
       var rowspan =element.getAttribute('rowspan');
       if (rowspan)
           this.appendOutput('<|'+rowspan+'>');
  +
  +    //if (align) this.appendOutput('<align='+align+'>');
       this.appendOutput('');
       this.walk(element);
       this.chomp(); // XXX
  @@ -193,7 +275,8 @@
       'unordered',
       'math',
       'nowiki',
  -    'hr'
  +    'hr',
  +    'table',
   ];
   
   proto.config.controlLabels.math = 'Math';
  @@ -310,7 +393,7 @@
   var link = document.createElement('link');
   link.setAttribute('rel', 'stylesheet');
   link.setAttribute('type', 'text/css');
  -link.setAttribute('href', _url_prefix + '/local/Wikiwyg/css/wikiwyg.css');
  +link.setAttribute('href', _url_prefix + '/local/Wikiwyg/css/moniwyg.css');
   head.appendChild(link);
   //
   
  @@ -373,7 +456,7 @@
                   doubleClickToEdit: true,
                   toolbar: {
                       imagesLocation:
  -                        _url_prefix + '/local/Wikiwyg/demo/moin/images/',
  +                        _url_prefix + '/local/Wikiwyg/moni/images/',
                   imagesExtension: '.png'
               },
               wikitext: {
  
  
  


wkpark      2006/02/01 09:42:56

  moniwiki/local/Wikiwyg - New directory

wkpark      2006/02/01 09:43:11

  moniwiki/local/Wikiwyg/moni - New directory

wkpark      2006/02/01 09:43:20

  moniwiki/local/Wikiwyg/moni/images - New directory

wkpark      2006/02/01 09:43:59

  moniwiki/local/Wikiwyg/css - New directory

wkpark      2006/02/01 09:44:57

  Added:       local/Wikiwyg/css moniwyg.css wysiwyg.css
  Log:
  add WikiWyg icons,css
  
  Revision  Changes    Path
  1.1                  moniwiki/local/Wikiwyg/css/moniwyg.css
  
  Index: moniwyg.css
  ===================================================================
  .wikiwyg_toolbar {
      background: #EBE8D5;
      border: 1px outset #ACA899;
      letter-spacing: 0;
      padding: 2px;
  }
  
  span.wikiwyg_control_link a {
      padding-right: 8px;
  }
  
  .wikiwyg_button {
      background: #EBE8D5;
      border: 1px solid #D3D3D3;
      cursor: pointer;
      width: 23px;
      height: 22px;
      vertical-align: bottom;
  }
  
  .wikiwyg_button:hover {
      border: 1px outset;
  }
  
  .wikiwyg_button:active {
      border: 1px inset;
  }
  
  .wikiwyg_separator {
      background: #EBE8D5;
      border: 1px solid #D3D3D3;
      width: 9px;
      height: 20px;
      vertical-align: bottom;
  }
  
  .wikiwyg_selector {
      width: 70px;
  }
  
  .wikiwyg_wysiwyg table {
      border-collapse: collapse;
      margin-bottom: .2em;
  }
  
  .wikiwyg_wysiwyg table td {
      border: 1px;
      border-style: solid;
      padding: .2em;
      vertical-align: top;
  }
  
  
  
  
  1.1                  moniwiki/local/Wikiwyg/css/wysiwyg.css
  
  Index: wysiwyg.css
  ===================================================================
  
  td, table, td.wiki, table.wiki {
      border: 1px solid black;
      background-color: #F0F4FF;
  }
  
  
  


wkpark      2006/02/01 09:44:57

  Added:       local/Wikiwyg/moni/images bold.png h1.png h2.png h3.png
                        h4.png h5.png h6.png help.png hr.png href.png
                        image.png indent.png italic.png link.png math.png
                        nowiki.png ordered.png outdent.png p.png pre.png
                        separator.png strike.png table.png underline.png
                        unordered.png
  Log:
  add WikiWyg icons,css
  
  Revision  Changes    Path
  1.1                  moniwiki/local/Wikiwyg/moni/images/bold.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/Wikiwyg/moni/images/h1.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/Wikiwyg/moni/images/h2.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/Wikiwyg/moni/images/h3.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/Wikiwyg/moni/images/h4.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/Wikiwyg/moni/images/h5.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/Wikiwyg/moni/images/h6.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/Wikiwyg/moni/images/help.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/Wikiwyg/moni/images/hr.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/Wikiwyg/moni/images/href.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/Wikiwyg/moni/images/image.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/Wikiwyg/moni/images/indent.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/Wikiwyg/moni/images/italic.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/Wikiwyg/moni/images/link.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/Wikiwyg/moni/images/math.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/Wikiwyg/moni/images/nowiki.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/Wikiwyg/moni/images/ordered.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/Wikiwyg/moni/images/outdent.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/Wikiwyg/moni/images/p.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/Wikiwyg/moni/images/pre.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/Wikiwyg/moni/images/separator.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/Wikiwyg/moni/images/strike.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/Wikiwyg/moni/images/table.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/Wikiwyg/moni/images/underline.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/Wikiwyg/moni/images/unordered.png
  
  	<<Binary file>>
  
  


wkpark      2006/02/01 10:04:41

  Added:       local/Wikiwyg Makefile
  Log:
  add a Makefile for Wikiwyg
  
  Revision  Changes    Path
  1.1                  moniwiki/local/Wikiwyg/Makefile
  
  Index: Makefile
  ===================================================================
  ver=0.12
  tarball=Wikiwyg-$(ver).tar.gz
  files=lib COPYRIGHT LICENSE Changes
  install:
  	wget -c http://openjsan.org/dist/i/in/ingy/$(tarball)
  	if [ -f $(tarball) ]; then \
  		mkdir -p tmp;\
  		tar --directory tmp -xzvf $(tarball);\
  		(cd tmp/Wikiwyg-$(ver);tar cvf - $(files) |\
  		(cd ../..;tar xf - )); rm -r tmp;\
  	fi
  
  
  


wkpark      2006/02/01 10:14:47

  Modified:    .        wiki.php
  Log:
  add a global const for WikiWyg
  
  Revision  Changes    Path
  1.289     +9 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.288
  retrieving revision 1.289
  diff -u -r1.288 -r1.289
  --- wiki.php	31 Jan 2006 10:31:30 -0000	1.288
  +++ wiki.php	1 Feb 2006 01:14:47 -0000	1.289
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.288 2006/01/31 10:31:30 wkpark Exp $
  +// $Id: wiki.php,v 1.289 2006/02/01 01:14:47 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.288 $',1,-1);
  +$_revision = substr('$Revision: 1.289 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -3201,6 +3201,13 @@
   
         print '<meta http-equiv="Content-Type" content="'.$content_type.
           ';charset='.$DBInfo->charset.'" />';
  +      print <<<JSHEAD
  +<script language="JavaScript" type="text/javascript">
  +/*<![CDATA[*/
  +_url_prefix="$DBInfo->url_prefix";
  +/*]]>*/
  +</script>
  +JSHEAD;
         print $metatags."\n".$keywords;
         print "  <title>$DBInfo->sitename: ".$options['title']."</title>\n";
         if ($upper)
  
  
  


wkpark      2006/02/01 17:17:35

  moniwiki/local/Wikiwyg/lib - New directory

wkpark      2006/02/01 17:18:38

  moniwiki/local/Wikiwyg/lib/Wikiwyg - New directory

wkpark      2006/02/01 17:20:09

  Added:       local/Wikiwyg/lib Wikiwyg.js
  Log:
  snapshot from wikiwyg.net
  update images
  
  Revision  Changes    Path
  1.1                  moniwiki/local/Wikiwyg/lib/Wikiwyg.js
  
  Index: Wikiwyg.js
  ===================================================================
  /*==============================================================================
  Wikiwyg - Turn any HTML div into a wikitext /and/ wysiwyg edit area.
  
  DESCRIPTION:
  
  Wikiwyg is a Javascript library that can be easily integrated into any
  wiki or blog software. It offers the user multiple ways to edit/view a
  piece of content: Wysiwyg, Wikitext, Raw-HTML and Preview.
  
  The library is easy to use, completely object oriented, configurable and
  extendable.
  
  See the Wikiwyg documentation for details.
  
  AUTHORS:
  
      Brian Ingerson <ingy@cpan.org>
      Casey West <casey@geeknest.com>
      Chris Dent <cdent@burningchrome.com>
      Matt Liggett <mml@pobox.com>
      Ryan King <rking@panoptic.com>
      Dave Rolsky <autarch@urth.org>
  
  COPYRIGHT:
  
      Copyright (c) 2005 Socialtext Corporation 
      655 High Street
      Palo Alto, CA 94301 U.S.A.
      All rights reserved.
  
  Wikiwyg is free software. 
  
  This library is free software; you can redistribute it and/or modify it
  under the terms of the GNU Lesser General Public License as published by
  the Free Software Foundation; either version 2.1 of the License, or (at
  your option) any later version.
  
  This library is distributed in the hope that it will be useful, but
  WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
  General Public License for more details.
  
      http://www.gnu.org/copyleft/lesser.txt
  
   =============================================================================*/
  
  /*==============================================================================
  Subclass - this can be used to create new classes
   =============================================================================*/
  
  Subclass = function(name, base) {
      if (!name) die("Can't create a subclass without a name");
  
      var parts = name.split('.');
      var subclass = window;
      for (var i = 0; i < parts.length; i++) {
          if (! subclass[parts[i]])
              subclass[parts[i]] = function() {};
          subclass = subclass[parts[i]];
      }
  
      if (base) {
          var baseclass = eval('new ' + base + '()');
          subclass.prototype = baseclass;
          subclass.prototype.baseclass = base;
          subclass.prototype.superfunc = Subclass.generate_superfunc();
      }
      subclass.prototype.classname = name;
      return subclass.prototype;
  }
  
  Subclass.generate_superfunc = function() {
      return function(func) {
          var p;
          var found = false;
          var caller_func = arguments.callee.caller;
          for (var b = this.classname; b; b = p.baseclass) {
              p = eval(b + '.prototype');
              if (! found) {
                  if (p[func] && p[func] == caller_func)
                      found = true;
                  continue;
              }
              if (p[func] && p[func] != caller_func)
                  return p[func];
          }
          die(
              "No superfunc function for: " + func + "\n" +
              "baseclass was: " + this.baseclass + "\n" +
              "caller was: " + arguments.callee.caller
          );
      }
  }
  
  /*==============================================================================
  Wikiwyg - Primary Wikiwyg base class
   =============================================================================*/
  
  // Constructor and class methods
  proto = new Subclass('Wikiwyg');
  
  Wikiwyg.VERSION = '0.12';
  
  // Browser support properties
  Wikiwyg.ua = navigator.userAgent.toLowerCase();
  Wikiwyg.is_ie = (
      Wikiwyg.ua.indexOf("msie") != -1 &&
      Wikiwyg.ua.indexOf("opera") == -1 && 
      Wikiwyg.ua.indexOf("webtv") == -1
  );
  Wikiwyg.is_gecko = (
      Wikiwyg.ua.indexOf('gecko') != -1 &&
      Wikiwyg.ua.indexOf('safari') == -1
  );
  Wikiwyg.is_safari = (
      Wikiwyg.ua.indexOf('safari') != -1
  );
  Wikiwyg.is_opera = (
      Wikiwyg.ua.indexOf('opera') != -1
  );
  Wikiwyg.browserIsSupported = (
      Wikiwyg.is_gecko ||
      Wikiwyg.is_ie
  );
  
  // Wikiwyg environment setup public methods
  proto.createWikiwygArea = function(div, config) {
      this.set_config(config);
      this.initializeObject(div, config);
  };
  
  proto.config = {
      javascriptLocation: 'lib/',
      doubleClickToEdit: false,
      toolbarClass: 'Wikiwyg.Toolbar',
      firstMode: null,
      modeClasses: [
          'Wikiwyg.Wysiwyg',
          'Wikiwyg.Wikitext',
          'Wikiwyg.Preview'
      ]
  };
  
  proto.initializeObject = function(div, config) {
      if (! Wikiwyg.browserIsSupported) return;
      if (this.enabled) return;
      this.enabled = true;
      this.div = div;
      this.divHeight = this.div.offsetHeight;
      if (!config) config = {};
  
      this.mode_objects = {};
      for (var i = 0; i < this.config.modeClasses.length; i++) {
          var class_name = this.config.modeClasses[i];
          var mode_object = eval('new ' + class_name + '()');
          mode_object.wikiwyg = this;
          mode_object.set_config(config[mode_object.classtype]);
          mode_object.initializeObject();
          this.mode_objects[class_name] = mode_object;
      }
      var firstMode = this.config.firstMode
          ? this.config.firstMode
          : this.config.modeClasses[0];
      this.setFirstModeByName(firstMode);
  
      if (this.config.toolbarClass) {
          var class_name = this.config.toolbarClass;
          this.toolbarObject = eval('new ' + class_name + '()');
          this.toolbarObject.wikiwyg = this;
          this.toolbarObject.set_config(config.toolbar);
          this.toolbarObject.initializeObject();
          this.placeToolbar(this.toolbarObject.div);
      }
  
      // These objects must be _created_ before the toolbar is created
      // but _inserted_ after.
      for (var i = 0; i < this.config.modeClasses.length; i++) {
          var mode_class = this.config.modeClasses[i];
          var mode_object = this.modeByName(mode_class);
          this.insert_div_before(mode_object.div);
      }
  
      if (this.config.doubleClickToEdit) {
          var self = this;
          this.div.ondblclick = function() { self.editMode() }; 
      }
  }
  
  // Wikiwyg environment setup private methods
  proto.set_config = function(user_config) {
      for (var key in this.config)
          if (user_config && user_config[key])
              this.config[key] = user_config[key];
          else if (this[key] != null)
              this.config[key] = this[key];
  }
  
  proto.insert_div_before = function(div) {
      div.style.display = 'none';
      if (! div.iframe_hack) {
          this.div.parentNode.insertBefore(div, this.div);
      }
  }
  
  // Wikiwyg actions - public methods
  proto.saveChanges = function() {
      alert('Wikiwyg.prototype.saveChanges not subclassed');
  }
  
  proto.editMode = function() { // See IE, below
      this.current_mode = this.first_mode;
      this.current_mode.fromHtml(this.div.innerHTML);
      this.toolbarObject.resetModeSelector();
      this.current_mode.enableThis();
  }
  
  proto.displayMode = function() {
      for (var i = 0; i < this.config.modeClasses.length; i++) {
          var mode_class = this.config.modeClasses[i];
          var mode_object = this.modeByName(mode_class);
          mode_object.disableThis();
      }
      this.toolbarObject.disableThis();
      this.div.style.display = 'block';
      this.divHeight = this.div.offsetHeight;
  }
  
  proto.switchMode = function(new_mode_key) {
      var new_mode = this.modeByName(new_mode_key);
      var old_mode = this.current_mode;
      var self = this;
      new_mode.enableStarted();
      old_mode.disableStarted();
      old_mode.toHtml(
          function(html) {
              self.previous_mode = old_mode;
              new_mode.fromHtml(html);
              old_mode.disableThis();
              new_mode.enableThis();
              new_mode.enableFinished();
              old_mode.disableFinished();
              self.current_mode = new_mode;
          }
      );
  }
  
  proto.modeByName = function(mode_name) {
      return this.mode_objects[mode_name]
  }
  
  proto.cancelEdit = function() {
      this.displayMode();
  }
  
  proto.fromHtml = function(html) {
      this.div.innerHTML = html;
  }
  
  proto.placeToolbar = function(div) {
      this.insert_div_before(div);
  }
  
  proto.setFirstModeByName = function(mode_name) {
      if (!this.modeByName(mode_name))
          die('No mode named ' + mode_name);
      this.first_mode = this.modeByName(mode_name);
  }
  
  // Class level helper methods
  Wikiwyg.unique_id_base = 0;
  Wikiwyg.createUniqueId = function() {
      return 'wikiwyg_' + Wikiwyg.unique_id_base++;
  }
  
  Wikiwyg.liveUpdate = function(method, url, query, callback) {
      var req = new XMLHttpRequest();
      var data = null;
      if (method == 'GET')
          url = url + '?' + query;
      else
          data = query;
      req.open(method, url);
      req.onreadystatechange = function() {
          if (req.readyState == 4 && req.status == 200) {
              try {
                  response_text = req.responseText;
              }
              catch(e) {
                  return;
              }
              callback(response_text);
          }
      }
      if (method == 'POST') {
          req.setRequestHeader(
              'Content-Type', 
              'application/x-www-form-urlencoded'
          );
      }
      req.send(data);
  }
  
  Wikiwyg.htmlUnescape = function(escaped) {
      // thanks to Randal Schwartz for the correct solution to this one
      // (from CGI.pm, CGI::unescapeHTML())
      return escaped.replace(
          /&(.*?);/g,
          function(dummy,s) {
              return s.match(/^amp$/i) ? '&' :
                  s.match(/^quot$/i) ? '"' :
                  s.match(/^gt$/i) ? '>' :
                  s.match(/^lt$/i) ? '<' :
                  s.match(/^#(\d+)$/) ?
                      String.fromCharCode(s.replace(/#/,'')) :
                  s.match(/^#x([0-9a-f]+)$/i) ?
                      String.fromCharCode(s.replace(/#/,'0')) :
                  s
          }
      );
  }
  
  Wikiwyg.showById = function(id) {
      document.getElementById(id).style.visibility = 'inherit';
  }
  
  Wikiwyg.hideById = function(id) {
      document.getElementById(id).style.visibility = 'hidden';
  }
  
  
  Wikiwyg.changeLinksMatching = function(attribute, pattern, func) {
      var links = document.getElementsByTagName('a');
      for (var i = 0; i < links.length; i++) {
          var link = links[i];
          var my_attribute = link.getAttribute(attribute);
          if (my_attribute && my_attribute.match(pattern)) {
              link.setAttribute('href', '#');
              link.onclick = func;
          }
      }
  }
  
  Wikiwyg.createElementWithAttrs = function(element, attrs, doc) {
      if (doc == null)
          doc = document;
      return Wikiwyg.create_element_with_attrs(element, attrs, doc);
  }
  
  // See IE, below
  Wikiwyg.create_element_with_attrs = function(element, attrs, doc) {
      var elem = doc.createElement(element);
      for (name in attrs)
          elem.setAttribute(name, attrs[name]);
      return elem;
  }
  
  die = function(e) { // See IE, below
      throw(e);
  }
  
  String.prototype.times = function(n) {
      return n ? this + this.times(n-1) : "";
  }
  
  String.prototype.ucFirst = function () {
      return this.substr(0,1).toUpperCase() + this.substr(1,this.length);
  }
  
  /*==============================================================================
  Base class for Wikiwyg classes
   =============================================================================*/
  proto = new Subclass('Wikiwyg.Base');
  
  proto.set_config = function(user_config) {
      for (var key in this.config) {
          if (user_config != null && user_config[key] != null)
              this.merge_config(key, user_config[key]);
          else if (this[key] != null)
              this.merge_config(key, this[key]);
          else if (this.wikiwyg.config[key] != null)
              this.merge_config(key, this.wikiwyg.config[key]);
      }
  }
  
  proto.merge_config = function(key, value) {
      if (value instanceof Array) {
          this.config[key] = value;
      }
      // cross-browser RegExp object check
      else if (typeof value.test == 'function') {
          this.config[key] = value;
      }
      else if (value instanceof Object) {
          if (!this.config[key])
              this.config[key] = {};
          for (var subkey in value) {
              this.config[key][subkey] = value[subkey];
          }
      }
      else {
          this.config[key] = value;
      }
  }
  
  /*==============================================================================
  Base class for Wikiwyg Mode classes
   =============================================================================*/
  proto = new Subclass('Wikiwyg.Mode', 'Wikiwyg.Base');
  
  proto.enableThis = function() {
      this.div.style.display = 'block';
      this.display_unsupported_toolbar_buttons('none');
      this.wikiwyg.toolbarObject.enableThis();
      this.wikiwyg.div.style.display = 'none';
  }
  
  proto.display_unsupported_toolbar_buttons = function(display) {
      if (!this.config) return;
      var disabled = this.config.disabledToolbarButtons;
      if (!disabled || disabled.length < 1) return;
  
      var toolbar_div = this.wikiwyg.toolbarObject.div;
      var toolbar_buttons = toolbar_div.childNodes;
      for (var i in disabled) {
          var action = disabled[i];
  
          for (var i in toolbar_buttons) {
              var button = toolbar_buttons[i];
              var src = button.src;
              if (!src) continue;
  
              if (src.match(action)) {
                  button.style.display = display;
                  break;
              }
          }
      }
  }
  
  proto.enableStarted = function() {}
  proto.enableFinished = function() {}
  proto.disableStarted = function() {}
  proto.disableFinished = function() {}
  
  proto.disableThis = function() {
      this.display_unsupported_toolbar_buttons('inline');
      this.div.style.display = 'none';
  }
  
  proto.process_command = function(command) {
      if (this['do_' + command])
          this['do_' + command](command);
  }
  
  proto.enable_keybindings = function() { // See IE
      if (!this.key_press_function) {
          this.key_press_function = this.get_key_press_function();
          this.get_keybinding_area().addEventListener(
              'keypress', this.key_press_function, true
          );
      }
  }
  
  proto.get_key_press_function = function() {
      var self = this;
      return function(e) {
          if (! e.ctrlKey) return;
          var key = String.fromCharCode(e.charCode).toLowerCase();
          var command = '';
          switch (key) {
              case 'b': command = 'bold'; break;
              case 'i': command = 'italic'; break;
              case 'u': command = 'underline'; break;
              case 'd': command = 'strike'; break;
              case 'l': command = 'link'; break;
          };
  
          if (command) {
              e.preventDefault();
              e.stopPropagation();
              self.process_command(command);
          }
      };
  }
  
  proto.get_edit_height = function() {
      var height = parseInt(
          this.wikiwyg.divHeight *
          this.config.editHeightAdjustment
      );
      var min = this.config.editHeightMinimum;
      return height < min
          ? min
          : height;
  }
  
  proto.setHeightOf = function(elem) {
      elem.height = this.get_edit_height() + 'px';
  }
  
  proto.sanitize_html = function(html) { // See IE, below
      var dom = this.create_dom(html);
      return this.element_transforms(dom, {
          del: {
              name: 'strike',
              attr: { }
          },
          strong: {
              name: 'span',
              attr: { style: 'font-weight: bold;' }
          },
          em: {
              name: 'span',
              attr: { style: 'font-style: italic;' }
          }
      }).innerHTML;
  }
  
  proto.create_dom = function(html) {
      var dom = document.createElement('div');
      dom.innerHTML = html;
      return dom;
  }
  
  proto.element_transforms = function(dom, el_transforms) {
      for (var orig in el_transforms) {
          var elems = dom.getElementsByTagName(orig);
          if (elems.length == 0) continue;
          for (var i = 0; i < elems.length; i++) {
              var elem = elems[i];
              var replace = el_transforms[orig];
              var new_el =
                Wikiwyg.createElementWithAttrs(replace.name, replace.attr);
              new_el.innerHTML = elem.innerHTML;
              elem.parentNode.replaceChild(new_el, elem);
          }
      }
      return dom;
  }
  
  /*==============================================================================
  Support for Internet Explorer in Wikiwyg
   =============================================================================*/
  if (Wikiwyg.is_ie) {
  
  Wikiwyg.create_element_with_attrs = function(element, attrs, doc) {
       var str = '';
       // Note the double-quotes (make sure your data doesn't use them):
       for (name in attrs)
           str += ' ' + name + '="' + attrs[name] + '"';
       return doc.createElement('<' + element + str + '>');
  }
  
  die = function(e) {
      alert(e);
      throw(e);
  }
  
  proto = Wikiwyg.Mode.prototype;
  
  proto.enable_keybindings = function() {}
  
  proto.sanitize_html = function(html) {
      var dom = this.create_dom(html);
      return this.element_transforms(dom, {
          del: {
              name: 'strike',
              attr: { }
          }
      }).innerHTML;
  }
  
  } // end of global if statement for IE overrides
  
  
  


wkpark      2006/02/01 17:20:10

  Added:       local/Wikiwyg/lib/Wikiwyg Debug.js HTML.js Preview.js
                        Toolbar.js Wikitext.js Wysiwyg.js
  Log:
  snapshot from wikiwyg.net
  update images
  
  Revision  Changes    Path
  1.1                  moniwiki/local/Wikiwyg/lib/Wikiwyg/Debug.js
  
  Index: Debug.js
  ===================================================================
  /*==============================================================================
  This Wikiwyg mode supports a textarea editor with toolbar buttons.
  
  COPYRIGHT:
  
      Copyright (c) 2005 Socialtext Corporation 
      655 High Street
      Palo Alto, CA 94301 U.S.A.
      All rights reserved.
  
  Wikiwyg is free software. 
  
  This library is free software; you can redistribute it and/or modify it
  under the terms of the GNU Lesser General Public License as published by
  the Free Software Foundation; either version 2.1 of the License, or (at
  your option) any later version.
  
  This library is distributed in the hope that it will be useful, but
  WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
  General Public License for more details.
  
      http://www.gnu.org/copyleft/lesser.txt
  
   =============================================================================*/
  
  (function() {
  
  new Subclass('XXX');
  var klass = XXX;
  
  klass.sort_object_keys = function(o) {
      var a = [];
      for (p in o) a.push(p);
      return a.sort();
  }
  
  klass.dump_keys = function(o) {
      var a = klass.sort_object_keys(o);
      var str='';
      for (p in a)
          str += a[p] + "\t";
      alert(str);
  }
  
  klass.dump_object_into_screen = function(o) {
      var a = klass.sort_object_keys(o);
      var str='';
      for (p in a) {
          var i = a[p];
          try {
              str += a[p] + ': ' + o[i] + '\n';
          } catch(e) {
              // alert('Died on key "' + i + '":\n' + e.message);
          }
      }
      document.write('<xmp>' + str + '</xmp>');
  }
  
  })();
  
  
  
  1.1                  moniwiki/local/Wikiwyg/lib/Wikiwyg/HTML.js
  
  Index: HTML.js
  ===================================================================
  
  /*==============================================================================
  This Wikiwyg mode supports a simple HTML editor
  
  COPYRIGHT:
  
      Copyright (c) 2005 Socialtext Corporation 
      655 High Street
      Palo Alto, CA 94301 U.S.A.
      All rights reserved.
  
  Wikiwyg is free software. 
  
  This library is free software; you can redistribute it and/or modify it
  under the terms of the GNU Lesser General Public License as published by
  the Free Software Foundation; either version 2.1 of the License, or (at
  your option) any later version.
  
  This library is distributed in the hope that it will be useful, but
  WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
  General Public License for more details.
  
      http://www.gnu.org/copyleft/lesser.txt
  
   =============================================================================*/
  
  proto = new Subclass('Wikiwyg.HTML', 'Wikiwyg.Mode');
  
  proto.classtype = 'html';
  proto.modeDescription = 'HTML';
  
  proto.config = {
      textareaId: null
  }
  
  proto.initializeObject = function() {
      this.div = document.createElement('div');
      if (this.config.textareaId)
          this.textarea = document.getElementById(this.config.textareaId);
      else
          this.textarea = document.createElement('textarea');
      this.div.appendChild(this.textarea);
  }
  
  proto.enableThis = function() {
      this.superfunc('enableThis').call(this);
      this.textarea.style.width = '100%';
      this.textarea.style.height = '200px';
  }
  
  proto.fromHtml = function(html) {
      this.textarea.value = this.sanitize_html(html);
  }
  
  proto.toHtml = function(func) {
      func(this.textarea.value);
  }
  
  proto.process_command = function(command) {};
  
  
  
  1.1                  moniwiki/local/Wikiwyg/lib/Wikiwyg/Preview.js
  
  Index: Preview.js
  ===================================================================
  /*==============================================================================
  This Wikiwyg mode supports a preview of current changes
  
  COPYRIGHT:
  
      Copyright (c) 2005 Socialtext Corporation 
      655 High Street
      Palo Alto, CA 94301 U.S.A.
      All rights reserved.
  
  Wikiwyg is free software. 
  
  This library is free software; you can redistribute it and/or modify it
  under the terms of the GNU Lesser General Public License as published by
  the Free Software Foundation; either version 2.1 of the License, or (at
  your option) any later version.
  
  This library is distributed in the hope that it will be useful, but
  WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
  General Public License for more details.
  
      http://www.gnu.org/copyleft/lesser.txt
  
   =============================================================================*/
  
  proto = new Subclass('Wikiwyg.Preview', 'Wikiwyg.Mode');
  
  proto.classtype = 'preview';
  proto.modeDescription = 'Preview';
  
  proto.config = {
      divId: null
  }
  
  proto.initializeObject = function() {
      if (this.config.divId)
          this.div = document.getElementById(this.config.divId);
      else
          this.div = document.createElement('div');
      // XXX Make this a config option.
      this.div.style.backgroundColor = 'lightyellow';
  }
  
  proto.fromHtml = function(html) {
      this.div.innerHTML = html;
  }
  
  proto.toHtml = function(func) {
      func(this.div.innerHTML);
  }
  
  proto.disableStarted = function() {
      this.wikiwyg.divHeight = this.div.offsetHeight;
  }
  
  
  
  1.1                  moniwiki/local/Wikiwyg/lib/Wikiwyg/Toolbar.js
  
  Index: Toolbar.js
  ===================================================================
  /*==============================================================================
  This Wikiwyg class provides toolbar support
  
  COPYRIGHT:
  
      Copyright (c) 2005 Socialtext Corporation 
      655 High Street
      Palo Alto, CA 94301 U.S.A.
      All rights reserved.
  
  Wikiwyg is free software. 
  
  This library is free software; you can redistribute it and/or modify it
  under the terms of the GNU Lesser General Public License as published by
  the Free Software Foundation; either version 2.1 of the License, or (at
  your option) any later version.
  
  This library is distributed in the hope that it will be useful, but
  WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
  General Public License for more details.
  
      http://www.gnu.org/copyleft/lesser.txt
  
   =============================================================================*/
  
  proto = new Subclass('Wikiwyg.Toolbar', 'Wikiwyg.Base');
  proto.classtype = 'toolbar';
  
  proto.config = {
      divId: null,
      imagesLocation: 'images/',
      imagesExtension: '.gif',
      controlLayout: [
          'save', 'cancel', 'mode_selector', '/',
          // 'selector',
          'h1', 'h2', 'h3', 'h4', 'p', 'pre', '|',
          'bold', 'italic', 'underline', 'strike', '|',
          'link', 'hr', '|',
          'ordered', 'unordered', '|',
          'indent', 'outdent', '|',
          'table', '|',
          'help'
      ],
      styleSelector: [
          'label', 'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'pre'
      ],
      controlLabels: {
          save: 'Save',
          cancel: 'Cancel',
          bold: 'Bold (Ctrl+b)',
          italic: 'Italic (Ctrl+i)',
          underline: 'Underline (Ctrl+u)',
          strike: 'Strike Through (Ctrl+d)',
          hr: 'Horizontal Rule',
          ordered: 'Numbered List',
          unordered: 'Bulleted List',
          indent: 'More Indented',
          outdent: 'Less Indented',
          help: 'About Wikiwyg',
          label: '[Style]',
          p: 'Normal Text',
          pre: 'Preformatted',
          h1: 'Heading 1',
          h2: 'Heading 2',
          h3: 'Heading 3',
          h4: 'Heading 4',
          h5: 'Heading 5',
          h6: 'Heading 6',
          link: 'Create Link',
          unlink: 'Remove Linkedness',
          table: 'Create Table'
      }
  };
  
  proto.initializeObject = function() {
      if (this.config.divId) {
          this.div = document.getElementById(this.config.divId);
      }
      else {
          this.div = Wikiwyg.createElementWithAttrs(
              'div', {
                  'class': 'wikiwyg_toolbar',
                  id: 'wikiwyg_toolbar'
              }
          );
      }
  
      var config = this.config;
      for (var i = 0; i < config.controlLayout.length; i++) {
          var action = config.controlLayout[i];
          var label = config.controlLabels[action]
          if (action == 'save')
              this.addControlItem(label, 'saveChanges');
          else if (action == 'cancel')
              this.addControlItem(label, 'cancelEdit');
          else if (action == 'mode_selector')
              this.addModeSelector();
          else if (action == 'selector')
              this.add_styles();
          else if (action == 'help')
              this.add_help_button(action, label);
          else if (action == '|')
              this.add_separator();
          else if (action == '/')
              this.add_break();
          else
              this.add_button(action, label);
      }
  }
  
  proto.enableThis = function() {
      this.div.style.display = 'block';
  }
  
  proto.disableThis = function() {
      this.div.style.display = 'none';
  }
  
  proto.make_button = function(type, label) {
      var base = this.config.imagesLocation;
      var ext = this.config.imagesExtension;
      return Wikiwyg.createElementWithAttrs(
          'img', {
              'class': 'wikiwyg_button',
              onmouseup: "this.style.border='1px outset';",
              onmouseover: "this.style.border='1px outset';",
              onmouseout:
                  "this.style.borderColor=this.style.backgroundColor;" +
                  "this.style.borderStyle='solid';",
              onmousedown:     "this.style.border='1px inset';",
              alt: label,
              title: label,
              src: base + type + ext
          }
      );
  }
  
  proto.add_button = function(type, label) {
      var img = this.make_button(type, label);
      var self = this;
      img.onclick = function() {
          self.wikiwyg.current_mode.process_command(type);
      };
      this.div.appendChild(img);
  }
  
  proto.add_help_button = function(type, label) {
      var img = this.make_button(type, label);
      var a = Wikiwyg.createElementWithAttrs(
          'a', {
              target: 'wikiwyg_button',
              href: 'http://www.wikiwyg.net/about/'
          }
      );
      a.appendChild(img);
      this.div.appendChild(a);
  }
  
  proto.add_separator = function() {
      var base = this.config.imagesLocation;
      var ext = this.config.imagesExtension;
      this.div.appendChild(
          Wikiwyg.createElementWithAttrs(
              'img', {
                  'class': 'wikiwyg_separator',
                  alt: ' | ',
                  title: '',
                  src: base + 'separator' + ext
              }
          )
      );
  }
  
  proto.addControlItem = function(text, method) {
      var span = Wikiwyg.createElementWithAttrs(
          'span', { 'class': 'wikiwyg_control_link' }
      );
  
      var link = Wikiwyg.createElementWithAttrs(
          'a', { href: '#' }
      );
      link.appendChild(document.createTextNode(text));
      span.appendChild(link);
      
      var self = this;
      link.onclick = function() { eval('self.wikiwyg.' + method + '()'); return false };
  
      this.div.appendChild(span);
  }
  
  proto.resetModeSelector = function() {
      if (this.firstModeRadio) {
          var temp = this.firstModeRadio.onclick;
          this.firstModeRadio.onclick = null;
          this.firstModeRadio.click();
          this.firstModeRadio.onclick = temp;
      }
  }
  
  proto.addModeSelector = function() {
      var span = document.createElement('span');
  
      var radio_name = Wikiwyg.createUniqueId();
      for (var i = 0; i < this.wikiwyg.config.modeClasses.length; i++) {
          var class_name = this.wikiwyg.config.modeClasses[i];
          var mode_object = this.wikiwyg.mode_objects[class_name];
   
          var radio_id = Wikiwyg.createUniqueId();
   
          var checked = i == 0 ? 'checked' : '';
          var radio = Wikiwyg.createElementWithAttrs(
              'input', {
                  type: 'radio',
                  name: radio_name,
                  id: radio_id,
                  value: mode_object.classname,
                  'checked': checked
              }
          );
          if (!this.firstModeRadio)
              this.firstModeRadio = radio;
   
          var self = this;
          radio.onclick = function() { 
              self.wikiwyg.switchMode(this.value);
          };
   
          var label = Wikiwyg.createElementWithAttrs(
              'label', { 'for': radio_id }
          );
          label.appendChild(document.createTextNode(mode_object.modeDescription));
  
          span.appendChild(radio);
          span.appendChild(label);
      }
      this.div.appendChild(span);
  }
  
  proto.add_break = function() {
      this.div.appendChild(document.createElement('br'));
  }
  
  proto.add_styles = function() {
      var options = this.config.styleSelector;
      var labels = this.config.controlLabels;
  
      this.styleSelect = Wikiwyg.createElementWithAttrs(
          'select', {
              'class': 'wikiwyg_selector'
          }
      );
  
      for (var i = 0; i < options.length; i++) {
          value = options[i];
          var option = Wikiwyg.createElementWithAttrs(
              'option', { 'value': value }
          );
          option.appendChild(document.createTextNode(labels[value]));
          this.styleSelect.appendChild(option);
      }
      var self = this;
      this.styleSelect.onchange = function() { 
          self.set_style(this.value) 
      };
      this.div.appendChild(this.styleSelect);
  }
  
  proto.set_style = function(style_name) {
      var idx = this.styleSelect.selectedIndex;
      // First one is always a label
      if (idx != 0)
          this.wikiwyg.current_mode.process_command(style_name);
      this.styleSelect.selectedIndex = 0;
  }
  
  
  
  1.1                  moniwiki/local/Wikiwyg/lib/Wikiwyg/Wikitext.js
  
  Index: Wikitext.js
  ===================================================================
  /*==============================================================================
  This Wikiwyg mode supports a textarea editor with toolbar buttons.
  
  COPYRIGHT:
  
      Copyright (c) 2005 Socialtext Corporation 
      655 High Street
      Palo Alto, CA 94301 U.S.A.
      All rights reserved.
  
  Wikiwyg is free software. 
  
  This library is free software; you can redistribute it and/or modify it
  under the terms of the GNU Lesser General Public License as published by
  the Free Software Foundation; either version 2.1 of the License, or (at
  your option) any later version.
  
  This library is distributed in the hope that it will be useful, but
  WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
  General Public License for more details.
  
      http://www.gnu.org/copyleft/lesser.txt
  
   =============================================================================*/
  
  proto = new Subclass('Wikiwyg.Wikitext', 'Wikiwyg.Mode');
  klass = Wikiwyg.Wikitext;
  
  proto.classtype = 'wikitext';
  proto.modeDescription = 'Wikitext';
  
  proto.config = {
      textareaId: null,
      supportCamelCaseLinks: false,
      javascriptLocation: null,
      clearRegex: null,
      editHeightMinimum: 10,
      editHeightAdjustment: 1.3,
      markupRules: {
          link: ['bound_phrase', '[', ']'],
          bold: ['bound_phrase', '*', '*'],
          code: ['bound_phrase', '`', '`'],
          italic: ['bound_phrase', '/', '/'],
          underline: ['bound_phrase', '_', '_'],
          strike: ['bound_phrase', '-', '-'],
          p: ['start_lines', ''],
          pre: ['start_lines', '    '],
          h1: ['start_line', '= '],
          h2: ['start_line', '== '],
          h3: ['start_line', '=== '],
          h4: ['start_line', '==== '],
          h5: ['start_line', '===== '],
          h6: ['start_line', '====== '],
          ordered: ['start_lines', '#'],
          unordered: ['start_lines', '*'],
          indent: ['start_lines', '>'],
          hr: ['line_alone', '----'],
          table: ['line_alone', '| A | B | C |\n|   |   |   |\n|   |   |   |']
      }
  }
  
  proto.initializeObject = function() { // See IE
      this.initialize_object();
  }
  
  proto.initialize_object = function() {
      this.div = document.createElement('div');
      if (this.config.textareaId)
          this.textarea = document.getElementById(this.config.textareaId);
      else
          this.textarea = document.createElement('textarea');
      this.textarea.setAttribute('id', 'wikiwyg_wikitext_textarea');
      this.div.appendChild(this.textarea);
      this.area = this.textarea;
      this.clear_inner_text();
  }
  
  proto.clear_inner_text = function() {
      var self = this;
      this.area.onclick = function() {
          var inner_text = self.area.value;
          var clear = self.config.clearRegex;
          if (clear && inner_text.match(clear))
              self.area.value = '';
      }
  }
  
  proto.enableThis = function() {
      this.superfunc('enableThis').call(this);
      this.textarea.style.width = '100%';
      this.setHeightOfEditor();
      this.enable_keybindings();
  }
  
  proto.setHeightOfEditor = function() {
      var config = this.config;
      var adjust = config.editHeightAdjustment;
      var area   = this.textarea;
      var text   = this.getTextArea();
      var rows   = text.split(/\n/).length;
  
      var height = parseInt(rows * adjust);
      if (height < config.editHeightMinimum)
          height = config.editHeightMinimum;
  
      area.setAttribute('rows', height);
  }
  
  proto.toWikitext = function() {
      return this.getTextArea();
  }
  
  proto.toHtml = function(func) {
      var wikitext = this.canonicalText();
      this.convertWikitextToHtml(wikitext, func);
  }
  
  proto.canonicalText = function() {
      var wikitext = this.getTextArea();
      if (wikitext[wikitext.length - 1] != '\n')
          wikitext += '\n';
      return wikitext;
  }
  
  proto.fromHtml = function(html) {
      this.setTextArea('Loading...');
      var self = this;
      this.convertHtmlToWikitext(
          html, 
          function(value) { self.setTextArea(value) }
      );
  }
  
  proto.getTextArea = function() {
      return this.textarea.value;
  }
  
  proto.setTextArea = function(text) {
      this.textarea.value = text;
  }
  
  proto.convertWikitextToHtml = function(wikitext, func) {
      alert('Wikitext changes cannot be converted to HTML\nWikiwyg.Wikitext.convertWikitextToHtml is not implemented here');
      func(this.copyhtml);
  }
  
  proto.convertHtmlToWikitext = function(html, func) {
      func(this.convert_html_to_wikitext(html));
  }
  
  proto.get_keybinding_area = function() {
      return this.textarea;
  }
  
  /*==============================================================================
  Code to markup wikitext
   =============================================================================*/
  Wikiwyg.Wikitext.phrase_end_re = /[\s\.\:\;\,\!\?\(\)]/;
  
  proto.find_left = function(t, selection_start, matcher) {
      var substring = t.substr(selection_start - 1, 1);
      var nextstring = t.substr(selection_start - 2, 1);
      if (selection_start == 0) 
          return selection_start;
      if (substring.match(matcher)) {
          // special case for word.word
          if ((substring != '.') || (nextstring.match(/\s/))) 
              return selection_start;
      }
      return this.find_left(t, selection_start - 1, matcher);
  }  
  
  proto.find_right = function(t, selection_end, matcher) {
      var substring = t.substr(selection_end, 1);
      var nextstring = t.substr(selection_end + 1, 1);
      if (selection_end >= t.length)
          return selection_end;
      if (substring.match(matcher)) {
          // special case for word.word
          if ((substring != '.') || (nextstring.match(/\s/)))
              return selection_end;
      }
      return this.find_right(t, selection_end + 1, matcher);
  }
  
  proto.get_lines = function() {
      t = this.area; // XXX needs "var"?
      var selection_start = t.selectionStart;
      var selection_end = t.selectionEnd;
  
      if (selection_start == null) {
          selection_start = selection_end;
          if (selection_start == null) {
              return false
          }
          selection_start = selection_end =
              t.value.substr(0, selection_start).replace(/\r/g, '').length;
      }
  
      var our_text = t.value.replace(/\r/g, '');
      selection = our_text.substr(selection_start,
          selection_end - selection_start);
  
      selection_start = this.find_right(our_text, selection_start, /[^\r\n]/);
      selection_end = this.find_left(our_text, selection_end, /[^\r\n]/);
  
      this.selection_start = this.find_left(our_text, selection_start, /[\r\n]/);
      this.selection_end = this.find_right(our_text, selection_end, /[\r\n]/);
      t.setSelectionRange(selection_start, selection_end);
      t.focus();
  
      this.start = our_text.substr(0,this.selection_start);
      this.sel = our_text.substr(this.selection_start, this.selection_end -
          this.selection_start);
      this.finish = our_text.substr(this.selection_end, our_text.length);
  
      return true;
  }
  
  proto.alarm_on = function() {
      var area = this.area;
      var background = area.style.background;
      area.style.background = '#f88';
  
      function alarm_off() {
          area.style.background = background;
      }
  
      window.setTimeout(alarm_off, 250);
      area.focus()
  }
  
  proto.get_words = function() {
      function is_insane(selection) {
          return selection.match(/\r?\n(\r?\n|\*+ |\#+ |\=+ )/);
      }   
  
      t = this.area; // XXX needs "var"?
      var selection_start = t.selectionStart;
      var selection_end = t.selectionEnd;
  
      if (selection_start == null) {
          selection_start = selection_end;
          if (selection_start == null) {
              return false
          }
          selection_start = selection_end =
              t.value.substr(0, selection_start).replace(/\r/g, '').length;
      }
  
      var our_text = t.value.replace(/\r/g, '');
      selection = our_text.substr(selection_start,
          selection_end - selection_start);
  
      selection_start = this.find_right(our_text, selection_start, /(\S|\r?\n)/);
      if (selection_start > selection_end)
          selection_start = selection_end;
      selection_end = this.find_left(our_text, selection_end, /(\S|\r?\n)/);
      if (selection_end < selection_start)
          selection_end = selection_start;
  
      if (is_insane(selection)) {
          this.alarm_on();
          return false;
      }
  
      this.selection_start =
          this.find_left(our_text, selection_start, Wikiwyg.Wikitext.phrase_end_re);
      this.selection_end =
          this.find_right(our_text, selection_end, Wikiwyg.Wikitext.phrase_end_re);
  
      t.setSelectionRange(this.selection_start, this.selection_end);
      t.focus();
  
      this.start = our_text.substr(0,this.selection_start);
      this.sel = our_text.substr(this.selection_start, this.selection_end -
          this.selection_start);
      this.finish = our_text.substr(this.selection_end, our_text.length);
  
      return true;
  }
  
  proto.markup_is_on = function(start, finish) {
      return (this.sel.match(start) && this.sel.match(finish));
  }
  
  proto.clean_selection = function(start, finish) {
      this.sel = this.sel.replace(start, '');
      this.sel = this.sel.replace(finish, '');
  }
  
  proto.toggle_same_format = function(start, finish) {
      start = this.clean_regexp(start);
      finish = this.clean_regexp(finish);
      var start_re = new RegExp('^' + start);
      var finish_re = new RegExp(finish + '$');
      if (this.markup_is_on(start_re, finish_re)) {
          this.clean_selection(start_re, finish_re);
          return true;
      }
      return false;
  }
  
  proto.clean_regexp = function(string) {
      string = string.replace(/([\^\$\*\+\.\?\[\]\{\}])/g, '\\$1');
      return string;
  }
  
  proto.insert_text_at_cursor = function(text) {
      var t = this.area;
  
      var selection_start = t.selectionStart;
      var selection_end = t.selectionEnd;
  
      if (selection_start == null) {
          selection_start = selection_end;
          if (selection_start == null) {
              return false
          }
      }
  
      var before = t.value.substr(0, selection_start);
      var after = t.value.substr(selection_end, t.value.length);
      t.value = before + text + after;
  }
  
  proto.set_text_and_selection = function(text, start, end) {
      this.area.value = text;
      this.area.setSelectionRange(start, end);
  }
  
  proto.add_markup_words = function(markup_start, markup_finish, example) {
      if (this.toggle_same_format(markup_start, markup_finish)) {
          this.selection_end = this.selection_end -
              (markup_start.length + markup_finish.length);
          markup_start = '';
          markup_finish = '';
      }
      if (this.sel.length == 0) {
          if (example)
              this.sel = example;
          var text = this.start + markup_start + this.sel +
              markup_finish + this.finish;
          var start = this.selection_start + markup_start.length;
          var end = this.selection_end + markup_start.length + this.sel.length;
          this.set_text_and_selection(text, start, end);
      } else {
          var text = this.start + markup_start + this.sel +
              markup_finish + this.finish;
          var start = this.selection_start;
          var end = this.selection_end + markup_start.length +
              markup_finish.length;
          this.set_text_and_selection(text, start, end);
      }
      this.area.focus();
  }
  
  // XXX - A lot of this is hardcoded.
  proto.add_markup_lines = function(markup_start) {
      var already_set_re = new RegExp( '^' + this.clean_regexp(markup_start), 'gm');
      var other_markup_re = /^(\^+|\=+|\*+|#+|>+|    )/gm;
  
      var match;
      // if paragraph, reduce everything.
      if (! markup_start.length) {
          this.sel = this.sel.replace(other_markup_re, '');
          this.sel = this.sel.replace(/^\ +/gm, '');
      }
      // if pre and not all indented, indent
      else if ((markup_start == '    ') && this.sel.match(/^\S/m))
          this.sel = this.sel.replace(/^/gm, markup_start);
      // if not requesting heading and already this style, kill this style
      else if (
          (! markup_start.match(/[\=\^]/)) &&
          this.sel.match(already_set_re)
      ) {
          this.sel = this.sel.replace(already_set_re, '');
          if (markup_start != '    ')
              this.sel = this.sel.replace(/^ */gm, '');
      }
      // if some other style, switch to new style
      else if (match = this.sel.match(other_markup_re))
          // if pre, just indent
          if (markup_start == '    ')
              this.sel = this.sel.replace(/^/gm, markup_start);
          // if heading, just change it
          else if (markup_start.match(/[\=\^]/))
              this.sel = this.sel.replace(other_markup_re, markup_start);
          // else try to change based on level
          else
              this.sel = this.sel.replace(
                  other_markup_re,
                  function(match) {
                      return markup_start.times(match.length);
                  }
              );
      // if something selected, use this style
      else if (this.sel.length > 0)
          this.sel = this.sel.replace(/^(.*\S+)/gm, markup_start + ' $1');
      // just add the markup
      else
          this.sel = markup_start + ' ';
  
      var text = this.start + this.sel + this.finish;
      var start = this.selection_start;
      var end = this.selection_start + this.sel.length;
      this.set_text_and_selection(text, start, end);
      this.area.focus();
  }
  
  // XXX - A lot of this is hardcoded.
  proto.bound_markup_lines = function(markup_array) {
      var markup_start = markup_array[1];
      var markup_finish = markup_array[2];
      var already_start = new RegExp('^' + this.clean_regexp(markup_start), 'gm');
      var already_finish = new RegExp(this.clean_regexp(markup_finish) + '$', 'gm');
      var other_start = /^(\^+|\=+|\*+|#+|>+) */gm;
      var other_finish = /( +(\^+|\=+))?$/gm;
  
      var match;
      if (this.sel.match(already_start)) {
          this.sel = this.sel.replace(already_start, '');
          this.sel = this.sel.replace(already_finish, '');
      }
      else if (match = this.sel.match(other_start)) {
          this.sel = this.sel.replace(other_start, markup_start);
          this.sel = this.sel.replace(other_finish, markup_finish);
      }
      // if something selected, use this style
      else if (this.sel.length > 0) {
          this.sel = this.sel.replace(
              /^(.*\S+)/gm,
              markup_start + '$1' + markup_finish
          );
      }
      // just add the markup
      else
          this.sel = markup_start + markup_finish;
  
      var text = this.start + this.sel + this.finish;
      var start = this.selection_start;
      var end = this.selection_start + this.sel.length;
      this.set_text_and_selection(text, start, end);
      this.area.focus();
  }
  
  proto.markup_bound_line = function(markup_array) {
      var scroll_top = this.area.scrollTop;
      if (this.get_lines())
          this.bound_markup_lines(markup_array);
      this.area.scrollTop = scroll_top;
  }
  
  proto.markup_start_line = function(markup_array) {
      var markup_start = markup_array[1];
      markup_start = markup_start.replace(/ +/, '');
      var scroll_top = this.area.scrollTop;
      if (this.get_lines())
          this.add_markup_lines(markup_start);
      this.area.scrollTop = scroll_top;
  }
  
  proto.markup_start_lines = function(markup_array) {
      var markup_start = markup_array[1];
      var scroll_top = this.area.scrollTop;
      if (this.get_lines())
          this.add_markup_lines(markup_start);
      this.area.scrollTop = scroll_top;
  }
  
  proto.markup_bound_phrase = function(markup_array) {
      var markup_start = markup_array[1];
      var markup_finish = markup_array[2];
      var scroll_top = this.area.scrollTop;
      if (markup_finish == 'undefined')
          markup_finish = markup_start;
      if (this.get_words())
          this.add_markup_words(markup_start, markup_finish, null);
      this.area.scrollTop = scroll_top;
  }
  
  klass.make_do = function(style) {
      return function() {
          var markup = this.config.markupRules[style];
          var handler = markup[0];
          if (! this['markup_' + handler])
              die('No handler for markup: "' + handler + '"');
          this['markup_' + handler](markup);
      }
  }
  
  proto.do_link = klass.make_do('link');
  proto.do_bold = klass.make_do('bold');
  proto.do_code = klass.make_do('code');
  proto.do_italic = klass.make_do('italic');
  proto.do_underline = klass.make_do('underline');
  proto.do_strike = klass.make_do('strike');
  proto.do_p = klass.make_do('p');
  proto.do_pre = klass.make_do('pre');
  proto.do_h1 = klass.make_do('h1');
  proto.do_h2 = klass.make_do('h2');
  proto.do_h3 = klass.make_do('h3');
  proto.do_h4 = klass.make_do('h4');
  proto.do_h5 = klass.make_do('h5');
  proto.do_h6 = klass.make_do('h6');
  proto.do_ordered = klass.make_do('ordered');
  proto.do_unordered = klass.make_do('unordered');
  proto.do_hr = klass.make_do('hr');
  proto.do_table = klass.make_do('table');
  
  proto.selection_mangle = function(method) {
      var scroll_top = this.area.scrollTop;
      if (! this.get_lines()) {
          this.area.scrollTop = scroll_top;
          return;
      }
  
      if (method(this)) {
          var text = this.start + this.sel + this.finish;
          var start = this.selection_start;
          var end = this.selection_start + this.sel.length;
          this.set_text_and_selection(text, start, end);
      }
      this.area.focus();
  }
  
  proto.do_indent = function() {
      this.selection_mangle(
          function(that) {
              if (that.sel == '') return false;
              that.sel = that.sel.replace(/^(([\*\-\#])+(?=\s))/gm, '$2$1');
              that.sel = that.sel.replace(/^([\>\=])/gm, '$1$1');
              that.sel = that.sel.replace(/^([^\>\*\-\#\=\r\n])/gm, '> $1');
              that.sel = that.sel.replace(/^\={7,}/gm, '======');
              return true;
          }
      )
  }
  
  proto.do_outdent = function() {
      this.selection_mangle(
          function(that) {
              if (that.sel == '') return false;
              that.sel = that.sel.replace(/^([\>\*\-\#\=] ?)/gm, '');
              return true;
          }
      )
  }
  
  proto.do_unlink = function() {
      this.selection_mangle(
          function(that) {
              that.sel = that.kill_linkedness(that.sel);
              return true;
          }
      );
  }
  
  // TODO - generalize this to allow Wikitext dialects that don't use "[foo]"
  proto.kill_linkedness = function(str) {
      while (str.match(/\[.*\]/))
          str = str.replace(/\[(.*?)\]/, '$1');
      str = str.replace(/^(.*)\]/, '] $1');
      str = str.replace(/\[(.*)$/, '$1 [');
      return str;
  }
  
  // uncomment these to run tests:
  // assertEquals('turkey', proto.kill_linkedness('[turkey]'), 'basic')
  // assertEquals('a s d f', proto.kill_linkedness('a [s] d [f]'), 'in the midst')
  // assertEquals('] xyz', proto.kill_linkedness('xyz]'), 'tail end snip')
  // assertEquals('abc [', proto.kill_linkedness('[abc'), 'circumcision')
  // assertEquals('h j k [', proto.kill_linkedness('[h] j [k'), 'devious combo 1')
  // assertEquals('] q w e', proto.kill_linkedness('q] w [e]'), 'devious combo 2')
  // assertEquals('robot', proto.kill_linkedness('robot'), 'no-change')
  
  proto.markup_line_alone = function(markup_array) {
      var t = this.area;
      var scroll_top = t.scrollTop;
      var selection_start = t.selectionStart;
      var selection_end = t.selectionEnd;
      if (selection_start == null) {
          selection_start = selection_end;
      }
      
      var text = t.value;
      this.selection_start = this.find_right(text, selection_start, /\r?\n/);
      this.selection_end = this.selection_start;
      t.setSelectionRange(this.selection_start, this.selection_start);
      t.focus();
  
      var markup = markup_array[1];
      this.start = t.value.substr(0, this.selection_start);
      this.finish = t.value.substr(this.selection_end, t.value.length);
      var text = this.start + '\n' + markup + this.finish;
      var start = this.selection_start + markup.length + 1;
      var end = this.selection_end + markup.length + 1;
      this.set_text_and_selection(text, start, end);
      t.scrollTop = scroll_top;
  }
  
  
  /*==============================================================================
  Code to convert from html to wikitext.
   =============================================================================*/
  proto.convert_html_to_wikitext = function(html) {
      this.copyhtml = html;
      var dom = document.createElement('div');
      dom.innerHTML = html;
      this.output = [];
      this.list_type = [];
      this.indent_level = 0;
  
      this.normalizeDomWhitespace(dom);
  
      this.walk(dom);
  
      // add final whitespace
      this.assert_new_line();
  
      return this.join_output(this.output);
  }
  
  proto.normalizeDomWhitespace = function(dom) {
      var tags = ['span', 'strong', 'em', 'strike', 'del', 'tt'];
      for (var ii = 0; ii < tags.length; ii++) {
          var elements = dom.getElementsByTagName(tags[ii]);
          for (var i = 0; i < elements.length; i++) {
              this.normalizePhraseWhitespace(elements[i]);
          }
      }
  }
  
  proto.normalizePhraseWhitespace = function(element) {
      if (this.elementHasComment(element)) return;
  
      var first_node = this.getFirstTextNode(element);
      var prev_node = this.getPreviousTextNode(element);
      var last_node = this.getLastTextNode(element);
      var next_node = this.getNextTextNode(element);
  
      if (this.destroyPhraseMarkup(element)) return;
  
      if (first_node && first_node.nodeValue.match(/^ /)) {
          first_node.nodeValue = first_node.nodeValue.replace(/^ +/, '');
          if (prev_node && ! prev_node.nodeValue.match(/ $/)) 
              prev_node.nodeValue = prev_node.nodeValue + ' ';
      }
  
      if (last_node && last_node.nodeValue.match(/ $/)) {
          last_node.nodeValue = last_node.nodeValue.replace(/ $/, '');
          if (next_node && ! next_node.nodeValue.match(/^ /)) 
              next_node.nodeValue = ' ' + next_node.nodeValue;
      }
  }
  
  proto.elementHasComment = function(element) {
      var node = element.lastChild;
      return node && (node.nodeType == 8);
  }
  
  proto.destroyPhraseMarkup = function(element) {
      if (this.start_is_no_good(element) || this.end_is_no_good(element))
          return this.destroyElement(element);
      return false;
  }
  
  proto.start_is_no_good = function(element) {
      var first_node = this.getFirstTextNode(element);
      var prev_node = this.getPreviousTextNode(element);
  
      if (! first_node) return true;
      if (first_node.nodeValue.match(/^ /)) return false;
      if (! prev_node || prev_node.nodeValue == '\n') return false;
      return ! prev_node.nodeValue.match(/[ "]$/);
  }
  
  proto.end_is_no_good = function(element) {
      var last_node = this.getLastTextNode(element);
      var next_node = this.getNextTextNode(element);
  
      for (var n = element; n && n.nodeType != 3; n = n.lastChild) {
          if (n.nodeType == 8) return false;
      }
  
      if (! last_node) return true;
      if (last_node.nodeValue.match(/ $/)) return false;
      if (! next_node || next_node.nodeValue == '\n') return false;
      return ! next_node.nodeValue.match(/^[ ."]/);
  }
  
  proto.destroyElement = function(element) {
      var span = document.createElement('font');
      span.innerHTML = element.innerHTML;
      element.parentNode.replaceChild(span, element);
      return true;
  }
  
  proto.getFirstTextNode = function(element) {
      for (node = element; node && node.nodeType != 3; node = node.firstChild) {
      }
      return node;
  }
  
  proto.getLastTextNode = function(element) {
      for (node = element; node && node.nodeType != 3; node = node.lastChild) {
      }
      return node;
  }
  
  proto.getPreviousTextNode = function(element) {
      var node = element.previousSibling;
      if (node && node.nodeType != 3)
          node = null;
      return node;
  }
  
  proto.getNextTextNode = function(element) {
      var node = element.nextSibling;
      if (node && node.nodeType != 3)
          node = null;
      return node;
  }
  
  proto.appendOutput = function(string) {
      this.output.push(string);
  }
  
  proto.join_output = function(output) {
      var list = this.remove_stops(output);
      list = this.cleanup_output(list);
      return list.join('');
  }
  
  // This is a noop, but can be subclassed.
  proto.cleanup_output = function(list) {
      return list;
  }
  
  proto.remove_stops = function(list) {
      var clean = [];
      for (var i = 0 ; i < list.length ; i++) {
          if (typeof(list[i]) != 'string') continue;
          clean.push(list[i]);
      }
      return clean;
  }
  
  proto.walk = function(element) {
      if (!element) return;
      for (var part = element.firstChild; part; part = part.nextSibling) {
          if (part.nodeType == 1) {
              this.dispatch_formatter(part);
          }
          else if (part.nodeType == 3) {
              if (part.nodeValue.match(/[^\n]/)) {
                  var string = part.nodeValue.replace(/^\r?\n/, '');
                  this.appendOutput(this.collapse(string));
              }
          }
      }
  }
  
  proto.dispatch_formatter = function(element) {
      var dispatch = 'format_' + element.nodeName.toLowerCase();
      if (! this[dispatch])
          dispatch = 'handle_undefined';
      this[dispatch](element);
  }
  
  proto.skip = function() { }
  proto.pass = function(element) {
      this.walk(element);
  }
  proto.handle_undefined = function(element) {
      this.appendOutput('<' + element.nodeName + '>');
      this.walk(element);
      this.appendOutput('</' + element.nodeName + '>');
  }
  proto.handle_undefined = proto.skip;
  
  proto.format_abbr = proto.pass;
  proto.format_acronym = proto.pass;
  proto.format_address = proto.pass;
  proto.format_applet = proto.skip;
  proto.format_area = proto.skip;
  proto.format_basefont = proto.skip;
  proto.format_base = proto.skip;
  proto.format_bgsound = proto.skip;
  proto.format_big = proto.pass;
  proto.format_blink = proto.pass;
  proto.format_body = proto.pass;
  proto.format_br = proto.skip;
  proto.format_button = proto.skip;
  proto.format_caption = proto.pass;
  proto.format_center = proto.pass;
  proto.format_cite = proto.pass;
  proto.format_col = proto.pass;
  proto.format_colgroup = proto.pass;
  proto.format_dd = proto.pass;
  proto.format_dfn = proto.pass;
  proto.format_dl = proto.pass;
  proto.format_dt = proto.pass;
  proto.format_embed = proto.skip;
  proto.format_field = proto.skip;
  proto.format_fieldset = proto.skip;
  proto.format_font = proto.pass;
  proto.format_form = proto.skip;
  proto.format_frame = proto.skip;
  proto.format_frameset = proto.skip;
  proto.format_head = proto.skip;
  proto.format_html = proto.pass;
  proto.format_iframe = proto.pass;
  proto.format_input = proto.skip;
  proto.format_ins = proto.pass;
  proto.format_isindex = proto.skip;
  proto.format_label = proto.skip;
  proto.format_legend = proto.skip;
  proto.format_link = proto.skip;
  proto.format_map = proto.skip;
  proto.format_marquee = proto.skip;
  proto.format_meta = proto.skip;
  proto.format_multicol = proto.pass;
  proto.format_nobr = proto.skip;
  proto.format_noembed = proto.skip;
  proto.format_noframes = proto.skip;
  proto.format_nolayer = proto.skip;
  proto.format_noscript = proto.skip;
  proto.format_nowrap = proto.skip;
  proto.format_object = proto.skip;
  proto.format_optgroup = proto.skip;
  proto.format_option = proto.skip;
  proto.format_param = proto.skip;
  proto.format_select = proto.skip;
  proto.format_small = proto.pass;
  proto.format_spacer = proto.skip;
  proto.format_style = proto.skip;
  proto.format_sub = proto.pass;
  proto.format_submit = proto.skip;
  proto.format_sup = proto.pass;
  proto.format_tbody = proto.pass;
  proto.format_textarea = proto.skip;
  proto.format_tfoot = proto.pass;
  proto.format_thead = proto.pass;
  proto.format_wiki = proto.pass;
  
  proto.format_img = function(element) {
      var uri = element.getAttribute('src');
      if (uri) {
          this.assert_space_or_newline();
          this.appendOutput(uri);
      }
  }
  
  // XXX This little dance relies on knowning lots of little details about where
  // indentation fangs are added and deleted by the various insert/assert calls.
  proto.format_blockquote = function(element) {
      var margin  = parseInt(element.style.marginLeft);
      var indents = 0;
      if (margin)
          indents += parseInt(margin / 40);
      if (element.tagName.toLowerCase() == 'blockquote')
          indents += 1;
  
      if (!this.indent_level)
          this.first_indent_line = true;
      this.indent_level += indents;
  
      this.output = defang_last_string(this.output);
      this.assert_new_line();
      this.walk(element);
      this.indent_level -= indents;
  
      if (! this.indent_level)
          this.assert_blank_line();
      else
          this.assert_new_line();
  
      function defang_last_string(output) {
          function non_string(a) { return typeof(a) != 'string' }
  
          // Strategy: reverse the output list, take any non-strings off the
          // head (tail of the original output list), do the substitution on the
          // first item of the reversed head (this is the last string in the
          // original list), then join and reverse the result.
          //
          // Suppose the output list looks like this, where a digit is a string,
          // a letter is an object, and * is the substituted string: 01q234op.
  
          var rev = output.slice().reverse();                     // po432q10
          var rev_tail = takeWhile(non_string, rev);              // po
          var rev_head = dropWhile(non_string, rev);              // 432q10
  
          if (rev_head.length)
              rev_head[0].replace(/^>+/, '');                     // *32q10
  
          // po*3210 -> 0123*op
          return rev_tail.concat(rev_head).reverse();             // 01q23*op
      }
  }
  
  proto.format_div = function(element) {
      if (this.is_opaque(element)) {
          this.handle_opaque_block(element);
          return;
      }
      if (this.is_indented(element)) {
          this.format_blockquote(element);
          return;
      }
      this.walk(element);
  }
  
  proto.format_span = function(element) {
      if (this.is_opaque(element)) {
          this.handle_opaque_phrase(element);
          return;
      }
  
      var style = element.getAttribute('style');
      if (!style) {
          this.pass(element);
          return;
      }
  
      if (! this.element_has_text_content(element)) return;
  
      var attributes = [ 'line-through', 'bold', 'italic', 'underline' ];
      for (var i = 0; i < attributes.length; i++)
          this.check_style_and_maybe_mark_up(style, attributes[i], 1);
      this.no_following_whitespace();
      this.walk(element);
      for (var i = attributes.length; i >= 0; i--)
          this.check_style_and_maybe_mark_up(style, attributes[i], 2);
  }
  
  proto.element_has_text_content = function(element) {
      return element.innerHTML.replace(/<.*?>/g, '')
                              .replace(/&nbsp;/g, '').match(/\S/);
  }
  
  proto.check_style_and_maybe_mark_up = function(style, attribute, open_close) {
      var markup_rule = attribute;
      if (markup_rule == 'line-through')
          markup_rule = 'strike';
      if (this.check_style_for_attribute(style, attribute))
          this.appendOutput(this.config.markupRules[markup_rule][open_close]);
  }
  
  proto.check_style_for_attribute = function(style, attribute) {
      var string = this.squish_style_object_into_string(style);
      return string.match("\\b" + attribute + "\\b");
  }
  
  proto.squish_style_object_into_string = function(style) {
      if ((style.constructor+'').match('String'))
          return style;
      var interesting_attributes = [
          [ 'font', 'weight' ],
          [ 'font', 'style' ],
          [ 'text', 'decoration' ]
      ];
      var string = '';
      for (var i = 0; i < interesting_attributes.length; i++) {
          var pair = interesting_attributes[i];
          var css = pair[0] + '-' + pair[1];
          var js = pair[0] + pair[1].ucFirst();
          string += css + ': ' + style[js] + '; ';
      }
      return string;
  }
  
  proto.basic_formatter = function(element, style) {
      var markup = this.config.markupRules[style];
      var handler = markup[0];
      this['handle_' + handler](element, markup);
  }
  
  klass.make_empty_formatter = function(style) {
      return function(element) {
          this.basic_formatter(element, style);
      }
  }
  
  klass.make_formatter = function(style) {
      return function(element) {
          if (this.element_has_text_content(element))
              this.basic_formatter(element, style);
      }
  }
  
  proto.format_b = klass.make_formatter('bold');
  proto.format_strong = proto.format_b;
  proto.format_code = klass.make_formatter('code');
  proto.format_kbd = proto.format_code;
  proto.format_samp = proto.format_code;
  proto.format_tt = proto.format_code;
  proto.format_var = proto.format_code;
  proto.format_i = klass.make_formatter('italic');
  proto.format_em = proto.format_i;
  proto.format_u = klass.make_formatter('underline');
  proto.format_strike = klass.make_formatter('strike');
  proto.format_del = proto.format_strike;
  proto.format_s = proto.format_strike;
  proto.format_hr = klass.make_empty_formatter('hr');
  proto.format_h1 = klass.make_formatter('h1');
  proto.format_h2 = klass.make_formatter('h2');
  proto.format_h3 = klass.make_formatter('h3');
  proto.format_h4 = klass.make_formatter('h4');
  proto.format_h5 = klass.make_formatter('h5');
  proto.format_h6 = klass.make_formatter('h6');
  proto.format_pre = klass.make_formatter('pre');
  
  proto.format_p = function(element) {
      if (this.is_indented(element)) {
          this.format_blockquote(element);
          return;
      }
      this.assert_blank_line();
      this.walk(element);
      this.assert_blank_line();
  }
  
  proto.format_a = function(element) {
      var label = Wikiwyg.htmlUnescape(element.innerHTML);
      label = label.replace(/<[^>]*?>/g, ' ');
      label = label.replace(/\s+/g, ' ');
      label = label.replace(/^\s+/, '');
      label = label.replace(/\s+$/, '');
      var href = element.getAttribute('href');
      if (! href) href = ''; // Necessary for <a name="xyz"></a>'s
      this.make_wikitext_link(label, href, element);
  }
  
  proto.format_table = function(element) {
      this.assert_blank_line();
      this.walk(element);
      this.assert_blank_line();
  }
  
  proto.format_tr = function(element) {
      this.walk(element);
      this.appendOutput('|');
      this.insert_new_line();
  }
  
  proto.format_td = function(element) {
      this.appendOutput('| ');
      this.no_following_whitespace();
      this.walk(element);
      this.chomp();
      this.appendOutput(' ');
  }
  proto.format_th = proto.format_td;
  
  // Generic functions on lists taken from the Haskell Prelude.
  // See http://xrl.us/jbko
  //
  // These sorts of thing should probably be moved to some general-purpose
  // Javascript library.
  
  function takeWhile(f, a) {
      for (var i = 0; i < a.length; ++i)
          if (! f(a[i])) break;
  
      return a.slice(0, i);
  }
  
  function dropWhile(f, a) {
      for (var i = 0; i < a.length; ++i)
          if (! f(a[i])) break;
  
      return a.slice(i);
  }
  
  proto.previous_line = function() {
      function newline(s) { return s['match'] && s.match(/\n/) }
      function non_newline(s) { return ! newline(s) }
  
      return this.join_output(
          takeWhile(non_newline,
              dropWhile(newline,
                  this.output.slice().reverse()
              )
          ).reverse()
      );
  }
  
  proto.make_list = function(element, list_type) { 
      if (! this.previous_was_newline_or_start())
          this.insert_new_line();
  
      this.list_type.push(list_type);
      this.walk(element);
      this.list_type.pop();
  
      if (!this.list_type.length)
          this.assert_blank_line();
  }
  
  proto.format_ol = function(element) {
      this.make_list(element, 'ordered');
  }
  
  proto.format_ul = function(element) {
      this.make_list(element, 'unordered');
  }
  
  proto.format_li = function(element) {
      var level = this.list_type.length;
      if (!level) die("List error");
      var type = this.list_type[level - 1];
      var markup = this.config.markupRules[type];
      this.appendOutput(markup[1].times(level) + ' ');
  
      // Nasty ie hack which I don't want to talk about.
      // But I will...
      // *Sometimes* when pulling html out of the designmode iframe it has
      // <LI> elements with no matching </LI> even though the </LI>s existed
      // going in. This needs to be delved into, and we need to see if
      // quirksmode and friends can/should be set somehow on the iframe
      // document for wikiwyg. Also research whether we need an iframe at all on
      // IE. Could we just use a div with contenteditable=true?
      if (Wikiwyg.is_ie &&
          element.firstChild &&
          element.firstChild.nextSibling &&
          element.firstChild.nextSibling.nodeName.match(/^[uo]l$/i))
      {
          try {
              element.firstChild.nodeValue =
                element.firstChild.nodeValue.replace(/ $/, '');
          }
          catch(e) { }
      }
  
      this.walk(element);
  
      this.chomp();
      this.insert_new_line();
  }
  
  proto.chomp = function() {
      var string;
      while (this.output.length) {
          string = this.output.pop();
          if (typeof(string) != 'string') {
              this.appendOutput(string);
              return;
          }
          if (! string.match(/^\n+>+ $/) && string.match(/\S/))
              break;
      }
      if (string) {
          string = string.replace(/[\r\n\s]+$/, '');
          this.appendOutput(string);
      }
  }
  
  proto.collapse = function(string) {
      return string.replace(/[ \u00a0\r\n]+/g, ' ');
  }
  
  proto.trim = function(string) {
      return string.replace(/^\s+/, '');
  }
  
  proto.insert_new_line = function() {
      var fang = '';
      var indentChar = this.config.markupRules.indent[1];
      var newline = '\n';
      if (this.indent_level > 0)
          fang = indentChar.times(this.indent_level) + ' ';
      // XXX - ('\n' + fang) MUST be in the same element in this.output so that
      // it can be properly matched by chomp above.
      if (fang.length && this.first_indent_line) {
          this.first_indent_line = false;
          newline = newline + newline;
      }
      if (this.output.length)
          this.appendOutput(newline + fang);
      else if (fang.length)
          this.appendOutput(fang);
  }
  
  proto.previous_was_newline_or_start = function() {
      for (var ii = this.output.length - 1; ii >= 0; ii--) {
          var string = this.output[ii];
          if (typeof(string) != 'string')
              continue;
          return string.match(/\n$/);
      }
      return true;
  }
  
  proto.assert_new_line = function() {
      this.chomp();
      this.insert_new_line();
  }
  
  proto.assert_blank_line = function() {
      if (! this.should_whitespace()) return
      this.chomp();
      this.insert_new_line();
      this.insert_new_line();
  }
  
  proto.assert_space_or_newline = function() {
      if (! this.output.length || ! this.should_whitespace()) return;
      if (! this.previous_output().match(/(\s+|[\(])$/))
          this.appendOutput(' ');
  }
  
  proto.no_following_whitespace = function() {
      this.appendOutput({whitespace: 'stop'});
  }
  
  proto.should_whitespace = function() {
      return ! this.previous_output().whitespace;
  }
  
  // how_far_back defaults to 1
  proto.previous_output = function(how_far_back) {
      if (! how_far_back)
          how_far_back = 1;
      var length = this.output.length;
      return length ? this.output[length - how_far_back] : '';
  }
  
  proto.handle_bound_phrase = function(element, markup) {
      if (! this.element_has_text_content(element)) return;
  
      /* If an italics/bold/etc element starts with a
         <br> tag we want to make sure the newline comes _before_ the
         wiki markup we are adding, or we end up with this:
  
         _
         foo_
      */
      if (element.innerHTML.match(/^\s*<br\s*\/?\s*>/)) {
          this.appendOutput("\n");
          element.innerHTML = element.innerHTML.replace(/^\s*<br\s*\/?\s*>/, '');
      }
      this.appendOutput(markup[1]);
      this.no_following_whitespace();
      this.walk(element);
      // assume that walk leaves no trailing whitespace.
      this.appendOutput(markup[2]);
  }
  
  // XXX - A very promising refactoring is that we don't need the trailing
  // assert_blank_line in block formatters.
  proto.handle_bound_line = function(element,markup) {
      this.assert_blank_line();
      this.appendOutput(markup[1]);
      this.walk(element);
      this.appendOutput(markup[2]);
      this.assert_blank_line();
  }
  
  proto.handle_start_line = function (element, markup) {
      this.assert_blank_line();
      this.appendOutput(markup[1]);
      this.walk(element);
      this.assert_blank_line();
  }
  
  proto.handle_start_lines = function (element, markup) {
      var text = element.firstChild.nodeValue;
      if (!text) return;
      this.assert_blank_line();
      text = text.replace(/^/mg, markup[1]);
      this.appendOutput(text);
      this.assert_blank_line();
  }
  
  proto.handle_line_alone = function (element, markup) {
      this.assert_blank_line();
      this.appendOutput(markup[1]);
      this.assert_blank_line();
  }
  
  proto.COMMENT_NODE_TYPE = 8;
  proto.get_wiki_comment = function(element) {
      for (var node = element.firstChild; node; node = node.nextSibling) {
          if (node.nodeType == this.COMMENT_NODE_TYPE
              && node.data.match(/^\s*wiki/))
              return node;
      }
      return null;
  }
  
  proto.is_indented = function (element) {
      var margin = parseInt(element.style.marginLeft);
      return margin > 0;
  }
  
  proto.is_opaque = function(element) {
      var comment = this.get_wiki_comment(element);
      if (!comment) return false;
  
      var text = comment.data;
      if (text.match(/^\s*wiki:/)) return true;
      return false;
  }
  
  proto.handle_opaque_phrase = function(element) {
      var comment = this.get_wiki_comment(element);
      if (comment) {
          var text = comment.data;
          text = text.replace(/^ wiki:\s+/, '')
                     .replace(/-=/g, '-')
                     .replace(/==/g, '=') 
                     .replace(/\s$/, '')
                     .replace(/\{(\w+):\s*\}/, '{$1}');
          this.appendOutput(Wikiwyg.htmlUnescape(text))
          this.smart_trailing_space(element);
      }
  }
  
  proto.smart_trailing_space = function(element) {
      var next = element.nextSibling;
      if (! next) {
          // do nothing
      }
      else if (next.nodeType == 1) {
          this.appendOutput(' ');
      }
      else if (next.nodeType == 3) {
          var text = next.nodeValue;
          if (text.match(/^\n/))
              this.appendOutput('\n');
          else if (text.match(/^\s/)) {
              // do nothing
          }
          else
              this.no_following_whitespace()
      }
  }
  
  proto.handle_opaque_block = function(element) {
      var comment = this.get_wiki_comment(element);
      if (!comment) return;
  
      var text = comment.data;
      text = text.replace(/^\s*wiki:\s+/, '');
      this.appendOutput(text);
  }
  
  proto.make_wikitext_link = function(label, href, element) {
      var before = this.config.markupRules.link[1];
      var after  = this.config.markupRules.link[2];
  
      this.assert_space_or_newline();
      if (! href) {
          this.appendOutput(label);
      }
      else if (href == label) {
          this.appendOutput(href);
      }
      else if (this.href_is_wiki_link(href)) {
          if (this.camel_case_link(label))
              this.appendOutput(label);
          else
              this.appendOutput(before + label + after);
      }
      else {
          this.appendOutput(before + href + ' ' + label + after);
      }
  }
  
  proto.camel_case_link = function(label) {
      if (! this.config.supportCamelCaseLinks)
          return false;
      return label.match(/[a-z][A-Z]/);
  }
  
  proto.href_is_wiki_link = function(href) {
      if (! this.looks_like_a_url(href))
          return true;
      if (! href.match(/\?/))
          return false;
      if (href.match(/\/static\/\d+\.\d+\.\d+\.\d+\//))
          href = location.href;
      var no_arg_input   = href.split('?')[0];
      var no_arg_current = location.href.split('?')[0];
      if (no_arg_current == location.href)
          no_arg_current =
            location.href.replace(new RegExp(location.hash), '');
      return no_arg_input == no_arg_current;
  }
  
  proto.looks_like_a_url = function(string) {
      return string.match(/^(http|https|ftp|irc|mailto|file):/);
  }
  
  /*==============================================================================
  Support for Internet Explorer in Wikiwyg.Wikitext
   =============================================================================*/
  if (Wikiwyg.is_ie) {
  
  proto.setHeightOf = function() {
      // XXX hardcode this until we can keep window from jumping after button
      // events.
      this.textarea.style.height = '200px';
  }
  
  proto.initializeObject = function() {
      this.initialize_object();
      this.area.addBehavior(this.config.javascriptLocation + "Selection.htc");
  }
  
  } // end of global if
  
  
  
  
  1.1                  moniwiki/local/Wikiwyg/lib/Wikiwyg/Wysiwyg.js
  
  Index: Wysiwyg.js
  ===================================================================
  /*==============================================================================
  This Wikiwyg mode supports a DesignMode wysiwyg editor with toolbar buttons
  
  COPYRIGHT:
  
      Copyright (c) 2005 Socialtext Corporation 
      655 High Street
      Palo Alto, CA 94301 U.S.A.
      All rights reserved.
  
  Wikiwyg is free software. 
  
  This library is free software; you can redistribute it and/or modify it
  under the terms of the GNU Lesser General Public License as published by
  the Free Software Foundation; either version 2.1 of the License, or (at
  your option) any later version.
  
  This library is distributed in the hope that it will be useful, but
  WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
  General Public License for more details.
  
      http://www.gnu.org/copyleft/lesser.txt
  
   =============================================================================*/
  
  proto = new Subclass('Wikiwyg.Wysiwyg', 'Wikiwyg.Mode');
  
  proto.classtype = 'wysiwyg';
  proto.modeDescription = 'Wysiwyg';
  
  proto.config = {
      useParentStyles: true,
      useStyleMedia: 'wikiwyg',
      iframeId: null,
      iframeObject: null,
      disabledToolbarButtons: [],
      editHeightMinimum: 150,
      editHeightAdjustment: 1.3,
      clearRegex: null
  };
      
  proto.initializeObject = function() {
      this.edit_iframe = this.get_edit_iframe();
      this.div = this.edit_iframe;
      this.set_design_mode_early();
  }
  
  proto.set_design_mode_early = function() { // Se IE, below
      // Unneeded for Gecko
  }
  
  proto.fromHtml = function(html) {
      this.set_inner_html(this.sanitize_html(html));
  }
  
  proto.toHtml = function(func) {
      func(this.get_inner_html());
  }
  
  // This is needed to work around the broken IMGs in Firefox design mode.
  // Works harmlessly on IE, too.
  // TODO - IMG URLs that don't match /^\//
  proto.fix_up_relative_imgs = function() {
      var base = location.href.replace(/(.*?:\/\/.*?\/).*/, '$1');
      var imgs = this.get_edit_document().getElementsByTagName('img');
      for (var ii = 0; ii < imgs.length; ++ii)
          imgs[ii].src = imgs[ii].src.replace(/^\//, base);
  }
  
  proto.enableThis = function() {
      this.superfunc('enableThis').call(this);
      this.edit_iframe.style.border = '1px black solid';
      this.edit_iframe.width = '100%';
      this.setHeightOf(this.edit_iframe);
      this.fix_up_relative_imgs();
      this.get_edit_document().designMode = 'on';
      this.apply_stylesheets();
      this.enable_keybindings();
      this.clear_inner_html();
  }
  
  proto.clear_inner_html = function() {
      var inner_html = this.get_inner_html();
      var clear = this.config.clearRegex;
      if (clear && inner_html.match(clear))
          this.set_inner_html('');
  }
  
  proto.get_keybinding_area = function() {
      return this.get_edit_document();
  }
  
  proto.get_edit_iframe = function() {
      var iframe;
      if (this.config.iframeId) {
          iframe = document.getElementById(this.config.iframeId);
          iframe.iframe_hack = true;
      }
      else if (this.config.iframeObject) {
          iframe = this.config.iframeObject;
          iframe.iframe_hack = true;
      }
      else {
          // XXX in IE need to wait a little while for iframe to load up
          iframe = document.createElement('iframe');
      }
      return iframe;
  }
  
  proto.get_edit_window = function() { // See IE, below
      return this.edit_iframe.contentWindow;
  }
  
  proto.get_edit_document = function() { // See IE, below
      return this.get_edit_window().document;
  }
  
  proto.get_inner_html = function() {
      return this.get_edit_document().body.innerHTML;
  }
  proto.set_inner_html = function(html) {
      this.get_edit_document().body.innerHTML = html;
  }
  
  proto.apply_stylesheets = function(styles) {
      var styles = document.styleSheets;
      var head   = this.get_edit_document().getElementsByTagName("head")[0];
  
      for (var i = 0; i < styles.length; i++) {
          var style = styles[i];
  
          if (style.href == location.href)
              this.apply_inline_stylesheet(style, head);
          else
              if (this.should_link_stylesheet(style))
                  this.apply_linked_stylesheet(style, head);
      }
  }
  
  proto.apply_inline_stylesheet = function(style, head) {
      // TODO: figure this out
  }
  
  proto.should_link_stylesheet = function(style, head) {
          var media = style.media;
          var config = this.config;
          var media_text = media.mediaText ? media.mediaText : media;
          var use_parent =
               ((!media_text || media_text == 'screen') &&
               config.useParentStyles);
          var use_style = (media_text && (media_text == config.useStyleMedia));
          if (!use_parent && !use_style) // TODO: simplify
              return false;
          else
              return true;
  }
  
  proto.apply_linked_stylesheet = function(style, head) {
      var link = Wikiwyg.createElementWithAttrs(
          'link', {
              href:  style.href,
              type:  style.type,
              media: 'screen',
              rel:   'STYLESHEET'
          }, this.get_edit_document()
      );
      head.appendChild(link);
  }
  
  proto.process_command = function(command) {
      if (this['do_' + command])
          this['do_' + command](command);
      if (! Wikiwyg.is_ie)
          this.get_edit_window().focus();
  }
  
  proto.exec_command = function(command, option) {
      this.get_edit_document().execCommand(command, false, option);
  }
  
  proto.format_command = function(command) {
      this.exec_command('formatblock', '<' + command + '>');
  }
  
  proto.do_bold = proto.exec_command;
  proto.do_italic = proto.exec_command;
  proto.do_underline = proto.exec_command;
  proto.do_strike = function() {
      this.exec_command('strikethrough');
  }
  proto.do_hr = function() {
      this.exec_command('inserthorizontalrule');
  }
  proto.do_ordered = function() {
      this.exec_command('insertorderedlist');
  }
  proto.do_unordered = function() {
      this.exec_command('insertunorderedlist');
  }
  proto.do_indent = proto.exec_command;
  proto.do_outdent = proto.exec_command;
  
  proto.do_h1 = proto.format_command;
  proto.do_h2 = proto.format_command;
  proto.do_h3 = proto.format_command;
  proto.do_h4 = proto.format_command;
  proto.do_h5 = proto.format_command;
  proto.do_h6 = proto.format_command;
  proto.do_pre = proto.format_command;
  proto.do_p = proto.format_command;
  
  proto.do_table = function() {
      var html =
          '<table><tbody>' +
          '<tr><td>A</td>' +
              '<td>B</td>' +
              '<td>C</td></tr>' +
          '<tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>' +
          '<tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>' +
          '</tbody></table>';
      this.insert_table(html);
  }
  
  proto.insert_table = function(html) { // See IE
      this.get_edit_window().focus();
      this.exec_command('inserthtml', html);
  }
  
  proto.do_unlink = proto.exec_command;
  
  proto.do_link = function() {
      var selection = this.get_link_selection_text();
      if (! selection) return;
      var url;
      var match = selection.match(/(.*?)\b((?:http|https|ftp|irc|file):\/\/\S+)(.*)/);
      if (match) {
          if (match[1] || match[3]) return null;
          url = match[2];
      }
      else {
          url = '?' + escape(selection); 
      }
      this.exec_command('createlink', url);
  }
  
  proto.get_selection_text = function() { // See IE, below
      return this.get_edit_window().getSelection().toString();
  }
  
  proto.get_link_selection_text = function() {
      var selection = this.get_selection_text();
      if (! selection) {
          alert("Please select the text you would like to turn into a link.");
          return;
      }
      return selection;
  }
  
  /*==============================================================================
  Support for Internet Explorer in Wikiwyg.Wysiwyg
   =============================================================================*/
  if (Wikiwyg.is_ie) {
  
  proto.set_design_mode_early = function(wikiwyg) {
      // XXX - need to know if iframe is ready yet...
      this.get_edit_document().designMode = 'on';
  }
  
  proto.get_edit_window = function() {
      return this.edit_iframe;
  }
  
  proto.get_edit_document = function() {
      return this.edit_iframe.contentWindow.document;
  }
  
  proto.get_selection_text = function() {
      var selection = this.get_edit_document().selection;
      if (selection != null)
          return selection.createRange().htmlText;
      return '';
  }
  
  proto.insert_table = function(html) {
      var doc = this.get_edit_document();
      var range = this.get_edit_document().selection.createRange();
      if (range.boundingTop == 2 && range.boundingLeft == 2)
          return;
      range.pasteHTML(html);
      range.collapse(false);
      range.select();
  }
  
  // Use IE's design mode default key bindings for now.
  proto.enable_keybindings = function() {}
  
  } // end of global if
  
  
  


wkpark      2006/02/01 17:20:10

  Modified:    local/Wikiwyg/moni/images image.png table.png
  Log:
  snapshot from wikiwyg.net
  update images
  
  Revision  Changes    Path
  1.2       +1 -3      moniwiki/local/Wikiwyg/moni/images/image.png
  
  	<<Binary file>>
  
  
  1.2       +2 -2      moniwiki/local/Wikiwyg/moni/images/table.png
  
  	<<Binary file>>
  
  


wkpark      2006/02/01 17:21:05

  Modified:    local/Wikiwyg/lib/Wikiwyg Wikitext.js
  Log:
  fix clean_regexp() for regex of macros
  
  Revision  Changes    Path
  1.2       +1 -1      moniwiki/local/Wikiwyg/lib/Wikiwyg/Wikitext.js
  
  Index: Wikitext.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/lib/Wikiwyg/Wikitext.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Wikitext.js	1 Feb 2006 08:20:10 -0000	1.1
  +++ Wikitext.js	1 Feb 2006 08:21:04 -0000	1.2
  @@ -303,7 +303,7 @@
   }
   
   proto.clean_regexp = function(string) {
  -    string = string.replace(/([\^\$\*\+\.\?\[\]\{\}])/g, '\\$1');
  +    string = string.replace(/([\^\$\*\+\.\?\[\]\{\}\(\)])/g, '\\$1');
       return string;
   }
   
  
  
  


wkpark      2006/02/01 18:27:18

  Added:       imgs     loading.gif
  Log:
  update icons and add loading.gif
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/loading.gif
  
  	<<Binary file>>
  
  


wkpark      2006/02/01 18:27:18

  Modified:    imgs/moni2 create.png
  Log:
  update icons and add loading.gif
  
  Revision  Changes    Path
  1.2       +4 -3      moniwiki/imgs/moni2/create.png
  
  	<<Binary file>>
  
  


wkpark      2006/02/01 18:27:18

  Modified:    imgs/plugin arrdown.png arrup.png
  Log:
  update icons and add loading.gif
  
  Revision  Changes    Path
  1.2       +3 -2      moniwiki/imgs/plugin/arrdown.png
  
  	<<Binary file>>
  
  
  1.2       +4 -1      moniwiki/imgs/plugin/arrup.png
  
  	<<Binary file>>
  
  


wkpark      2006/02/02 20:53:13

  Modified:    local    moniwyg.js
  Log:
  support indentation and lists for WikiWyg
  
  Revision  Changes    Path
  1.4       +176 -23   moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- moniwyg.js	1 Feb 2006 00:42:48 -0000	1.3
  +++ moniwyg.js	2 Feb 2006 11:53:13 -0000	1.4
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.3 2006/02/01 00:42:48 wkpark Exp $
  +// $Id: moniwyg.js,v 1.4 2006/02/02 11:53:13 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -171,12 +171,14 @@
   }
   
   proto.format_img = function(element) {
  -    var uri = element.getAttribute('src');
  -    var style = element.getAttribute('style');
  -    var width = element.getAttribute('width');
  -    var height = element.getAttribute('height');
  -    var class = element.getAttribute('class');
  +    var uri='';
  +    uri = element.getAttribute('src');
       if (uri) {
  +        var style = element.getAttribute('style');
  +        var width = element.getAttribute('width');
  +        var height = element.getAttribute('height');
  +        var class = element.getAttribute('class');
  +
           this.assert_space_or_newline();
           this.appendOutput(uri);
           var attr='';
  @@ -198,6 +200,7 @@
       }
   }
   
  +
   proto.format_table = function(element) {
       this.assert_blank_line();
       var style =element.getAttribute('style');
  @@ -226,18 +229,26 @@
   }
   
   proto.format_br = function(element) {
  -// for plain br
  -    var string = this.output[this.output.length - 1];
  -    if (! string.whitespace && ! string.match(/\n$/))
  +    var str1 = this.output[this.output.length - 1];
  +    if (! str1.whitespace && ! str1.match(/\n$/)) {
           this.insert_new_line();
  -    this.insert_new_line();
  +        this.insert_new_line(); // two \n\n is rendered as <br />
  +    } else {
  +        this.insert_new_line(); // \n\n\n is rendered as <br /><br />
  +    }
   }
   
  -// proto.format_pre FIXME
  -
   proto.assert_blank_line = function() {
  +    if (! this.should_whitespace()) return
       this.chomp();
       this.insert_new_line();
  +    //this.insert_new_line(); // FIX for line_alone (----)
  +}
  +
  +proto.handle_line_alone = function (element, markup) {
  +    this.assert_blank_line();
  +    this.appendOutput(markup[1]);
  +    this.assert_blank_line();
   }
   
   proto.format_td = function(element) {
  @@ -264,6 +275,63 @@
       this.appendOutput('');
   }
   
  +proto.format_li = function(element) {
  +    var level = this.list_type.length;
  +    if (!level) die("List error");
  +    var type = this.list_type[level - 1];
  +    var markup = this.config.markupRules[type];
  +    var ind = ' ';
  +    this.appendOutput(ind.times(level-1) + markup[1] + ' ');
  +
  +    // Nasty ie hack which I don't want to talk about.
  +    // But I will...
  +    // *Sometimes* when pulling html out of the designmode iframe it has
  +    // <LI> elements with no matching </LI> even though the </LI>s existed
  +    // going in. This needs to be delved into, and we need to see if
  +    // quirksmode and friends can/should be set somehow on the iframe
  +    // document for wikiwyg. Also research whether we need an iframe at all on
  +    // IE. Could we just use a div with contenteditable=true?
  +    if (Wikiwyg.is_ie &&
  +        element.firstChild &&
  +        element.firstChild.nextSibling &&
  +        element.firstChild.nextSibling.nodeName.match(/^[uo]l$/i))
  +    {
  +        try {
  +            element.firstChild.nodeValue =
  +              element.firstChild.nodeValue.replace(/ $/, '');
  +        }
  +        catch(e) { }
  +    }
  +
  +    this.walk(element);
  +
  +    this.chomp();
  +    this.insert_new_line();
  +}
  +
  +proto.do_indent = function() {
  +    this.selection_mangle(
  +        function(that) {
  +            if (that.sel == '') return false;
  +            that.sel = that.sel.replace(/^(\>\s)/gm, '$1$1');
  +            that.sel = that.sel.replace(/^/gm, ' '); // space indent
  +            that.sel = that.sel.replace(/^ (\>\s)/gm, '$1');
  +            return true;
  +        }
  +    )
  +}
  +
  +proto.do_outdent = function() {
  +    this.selection_mangle(
  +        function(that) {
  +            if (that.sel == '') return false;
  +            that.sel = that.sel.replace(/^(\s(?=\s+(\*|\d+\.))|\s(?!\*|\d+\.)|\> )/gm, '');
  +            return true;
  +        }
  +    )
  +}
  +
  +
   proto = Wikiwyg.Toolbar.prototype;
   proto.config.controlLayout = [
       'save', 'cancel', 'mode_selector', '/',
  @@ -277,10 +345,15 @@
       'nowiki',
       'hr',
       'table',
  +    'indent', 'outdent', '|',
  +    'image',
  +    'media',
   ];
   
   proto.config.controlLabels.math = 'Math';
   proto.config.controlLabels.nowiki = 'As Is';
  +proto.config.controlLabels.image = 'Image';
  +proto.config.controlLabels.media = 'Media';
   
   proto = Wikiwyg.Wikitext.prototype;
   proto.config.markupRules.bold = ['bound_phrase', "'''", "'''"];
  @@ -299,15 +372,25 @@
   proto.config.markupRules.pre = ['bound_phrase','{{{','}}}'],
   proto.config.markupRules.ordered = ['start_lines', ' 1.'];
   proto.config.markupRules.unordered = ['start_lines', ' *'];
  -proto.config.markupRules.indent = ['start_lines', '>'];
  +proto.config.markupRules.indent = ['start_lines', ' '];
  +proto.config.markupRules.quote = ['start_lines', '> '];
   proto.config.markupRules.hr = ['line_alone', '----'];
  +proto.config.markupRules.image = ['bound_phrase', 'attachment:', ''];
  +proto.config.markupRules.media = ['bound_phrase', '[[Media(', ')]]'];
   proto.config.markupRules.table = ['line_alone', '|| A || B || C ||\n||   ||   ||   ||\n||   ||   ||   ||'];
   
   proto.do_math = Wikiwyg.Wikitext.make_do('math');
   proto.do_nowiki = Wikiwyg.Wikitext.make_do('nowiki');
  +if (Wikiwyg.Wikitext.make_format) // Wikiwyg-0.12
  +    proto.format_image = Wikiwyg.Wikitext.make_format('image');
  +else // Wikiwyg snapshot
  +    proto.format_image = Wikiwyg.Wikitext.make_formatter('image');
  +proto.do_image = Wikiwyg.Wikitext.make_do('image');
  +proto.do_media = Wikiwyg.Wikitext.make_do('media');
   
   proto.collapse = function(string) {
  -    return string.replace(/\r\n/g, "\n"); // FIX
  +    return string.replace(/\r\n|\r/g, ''); // FIX
  +    //return string.replace(/\r\n|\r/g, "\n"); // FIX
   }
   
   proto.walk = function(element) {
  @@ -319,24 +402,93 @@
           else if (part.nodeType == 3) {
               if (part.nodeValue.match(/\S/)) {
                   var string = part.nodeValue;
  -                if (! string.match(/^[\'\.\,\?\!\)]/)) {
  -                    this.assert_space_or_newline(); // FIX
  -                    string = this.trim(string); // FIX
  +                //if (! string.match(/^[\'\.\,\?\!\)]/)) {
  +                    //this.assert_space_or_newline(); // FIX
  +                    //string = this.trim(string); // FIX
                       //string = this.mytrim(string); // replace
  -                }
  -                this.appendOutput(this.collapse(string));
  +                //}
  +                // XXX do not auto insert/delete white spaces!!!
  +                //string = this.mytrim(string); // replace
  +                //this.appendOutput(this.collapse(string)); // FIX
  +                this.appendOutput(string);
  +                //this.appendOutput('^'+string+'_');
               }
           }
       }
   }
   
   proto.mytrim = function(string) {
  -    string = string.replace(/(\s|\r\n|\n|\r)+$/, '');
  -    return string.replace(/^(\r\n|\n|\r)+/, '');
  +    // remove only one leading newline
  +    return string.replace(/^(\r\n|\n|\r)/, '');
  +    //return string.replace(/^(\r\n|\n|\r)+/, '');
  +}
  +
  +// XXX - A lot of this is hardcoded.
  +// customize of moniwiki
  +proto.add_markup_lines = function(markup_start) {
  +    var already_set_re = new RegExp( '^' + this.clean_regexp(markup_start), 'gm');
  +    //var other_markup_re = /^(\^+|\=+|\*+|#+|>+|    )/gm;
  +    var other_markup_re = /^(\s+\*|\s+\d+\.|(\>\s)+|\=+|\s+)/gm;
  +
  +    var match;
  +    // if paragraph, reduce everything.
  +    if (! markup_start.length) {
  +        this.sel = this.sel.replace(other_markup_re, '');
  +        this.sel = this.sel.replace(/^\ +/gm, '');
  +    }
  +    // if pre and not all indented, indent
  +    else if ((markup_start == ' ') && this.sel.match(/^\S/m))
  +        this.sel = this.sel.replace(/^/gm, markup_start);
  +    // if not requesting heading and already this style, kill this style
  +    else if (
  +        (! markup_start.match(/[\=\^]/)) &&
  +        this.sel.match(already_set_re)
  +    ) {
  +        this.sel = this.sel.replace(already_set_re, '');
  +        if (markup_start != ' ')
  +            this.sel = this.sel.replace(/^ */gm, '');
  +    }
  +    // if some other style, switch to new style
  +    else if (match = this.sel.match(other_markup_re))
  +        // if pre, just indent
  +        if (markup_start == ' ')
  +            this.sel = this.sel.replace(/^/gm, markup_start);
  +        // if heading, just change it
  +        else if (markup_start.match(/[\=\^]/))
  +            this.sel = this.sel.replace(other_markup_re, markup_start);
  +        // else try to change based on level
  +        else
  +            this.sel = this.sel.replace(
  +                other_markup_re,
  +                function(match) {
  +                    //return markup_start.times(match.length);
  +                    var lev = 0;
  +                    if (match.match(/\s+\d+\./))
  +                       lev = match.length - 3; 
  +                    else if (match.match(/\s+\*/))
  +                       lev = match.length - 2; 
  +                    else if (match.match(/\>\s/))
  +                       lev = match.length / 2 - 1; 
  +
  +                    return (' ').times(lev) + markup_start;
  +                }
  +            );
  +    // if something selected, use this style
  +    else if (this.sel.length > 0)
  +        this.sel = this.sel.replace(/^(.*\S+)/gm, markup_start + ' $1');
  +    // just add the markup
  +    else
  +        this.sel = markup_start + ' ';
  +
  +    var text = this.start + this.sel + this.finish;
  +    var start = this.selection_start;
  +    var end = this.selection_start + this.sel.length;
  +    this.set_text_and_selection(text, start, end);
  +    this.area.focus();
   }
   
   proto.handle_bound_phrase = function(element, markup) {
  -    //this.assert_space_or_newline(); // FIX
  +    this.assert_space_or_newline(); // FIX
       this.appendOutput(markup[1]);
       this.no_following_whitespace();
       this.walk(element);
  @@ -434,7 +586,9 @@
   //
   // dynamic section editing for MoniWiki
   //
  +
   wikiwygs = [];
  +
   function sectionEdit(ev,obj,sect) {
       if (sect) {
           var sec=document.getElementById('sect-'+sect);
  @@ -445,7 +599,6 @@
           loading.setAttribute('border',0);
           loading.setAttribute('class','ajaxLoading');
           loading.src=_url_prefix + '/imgs/loading.gif';
  -        obj.blur();
           obj.parentNode.replaceChild(loading,obj);
           //alert('loading...');
           var form=HTTPGet(href);
  
  
  


wkpark      2006/02/02 20:53:46

  Modified:    local/Wikiwyg/moni/images indent.png outdent.png
  Added:       local/Wikiwyg/moni/images media.png
  Log:
  update
  
  Revision  Changes    Path
  1.2       +2 -1      moniwiki/local/Wikiwyg/moni/images/indent.png
  
  	<<Binary file>>
  
  
  1.2       +2 -2      moniwiki/local/Wikiwyg/moni/images/outdent.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/Wikiwyg/moni/images/media.png
  
  	<<Binary file>>
  
  


wkpark      2006/02/02 20:54:37

  Added:       local/Wikiwyg COPYRIGHT LICENSE
  Log:
  add LICENSE,COPYRIGHT for Wikiwyg
  
  Revision  Changes    Path
  1.1                  moniwiki/local/Wikiwyg/COPYRIGHT
  
  Index: COPYRIGHT
  ===================================================================
      Copyright (c) 2005 Socialtext Corporation 
      655 High Street
      Palo Alto, CA 94301 U.S.A.
      All rights reserved.
  
  Wikiwyg is free software. 
  
  This library is free software; you can redistribute it and/or modify it
  under the terms of the GNU Lesser General Public License as published by
  the Free Software Foundation; either version 2.1 of the License, or (at
  your option) any later version.
  
  This library is distributed in the hope that it will be useful, but
  WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
  General Public License for more details.
  
      http://www.gnu.org/copyleft/lesser.txt
  
  
  
  
  1.1                  moniwiki/local/Wikiwyg/LICENSE
  
  Index: LICENSE
  ===================================================================
  		  GNU LESSER GENERAL PUBLIC LICENSE
  		       Version 2.1, February 1999
  
   Copyright (C) 1991, 1999 Free Software Foundation, Inc.
       51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
   Everyone is permitted to copy and distribute verbatim copies
   of this license document, but changing it is not allowed.
  
  [This is the first released version of the Lesser GPL.  It also counts
   as the successor of the GNU Library Public License, version 2, hence
   the version number 2.1.]
  
  			    Preamble
  
    The licenses for most software are designed to take away your
  freedom to share and change it.  By contrast, the GNU General Public
  Licenses are intended to guarantee your freedom to share and change
  free software--to make sure the software is free for all its users.
  
    This license, the Lesser General Public License, applies to some
  specially designated software packages--typically libraries--of the
  Free Software Foundation and other authors who decide to use it.  You
  can use it too, but we suggest you first think carefully about whether
  this license or the ordinary General Public License is the better
  strategy to use in any particular case, based on the explanations below.
  
    When we speak of free software, we are referring to freedom of use,
  not price.  Our General Public Licenses are designed to make sure that
  you have the freedom to distribute copies of free software (and charge
  for this service if you wish); that you receive source code or can get
  it if you want it; that you can change the software and use pieces of
  it in new free programs; and that you are informed that you can do
  these things.
  
    To protect your rights, we need to make restrictions that forbid
  distributors to deny you these rights or to ask you to surrender these
  rights.  These restrictions translate to certain responsibilities for
  you if you distribute copies of the library or if you modify it.
  
    For example, if you distribute copies of the library, whether gratis
  or for a fee, you must give the recipients all the rights that we gave
  you.  You must make sure that they, too, receive or can get the source
  code.  If you link other code with the library, you must provide
  complete object files to the recipients, so that they can relink them
  with the library after making changes to the library and recompiling
  it.  And you must show them these terms so they know their rights.
  
    We protect your rights with a two-step method: (1) we copyright the
  library, and (2) we offer you this license, which gives you legal
  permission to copy, distribute and/or modify the library.
  
    To protect each distributor, we want to make it very clear that
  there is no warranty for the free library.  Also, if the library is
  modified by someone else and passed on, the recipients should know
  that what they have is not the original version, so that the original
  author's reputation will not be affected by problems that might be
  introduced by others.
  
    Finally, software patents pose a constant threat to the existence of
  any free program.  We wish to make sure that a company cannot
  effectively restrict the users of a free program by obtaining a
  restrictive license from a patent holder.  Therefore, we insist that
  any patent license obtained for a version of the library must be
  consistent with the full freedom of use specified in this license.
  
    Most GNU software, including some libraries, is covered by the
  ordinary GNU General Public License.  This license, the GNU Lesser
  General Public License, applies to certain designated libraries, and
  is quite different from the ordinary General Public License.  We use
  this license for certain libraries in order to permit linking those
  libraries into non-free programs.
  
    When a program is linked with a library, whether statically or using
  a shared library, the combination of the two is legally speaking a
  combined work, a derivative of the original library.  The ordinary
  General Public License therefore permits such linking only if the
  entire combination fits its criteria of freedom.  The Lesser General
  Public License permits more lax criteria for linking other code with
  the library.
  
    We call this license the "Lesser" General Public License because it
  does Less to protect the user's freedom than the ordinary General
  Public License.  It also provides other free software developers Less
  of an advantage over competing non-free programs.  These disadvantages
  are the reason we use the ordinary General Public License for many
  libraries.  However, the Lesser license provides advantages in certain
  special circumstances.
  
    For example, on rare occasions, there may be a special need to
  encourage the widest possible use of a certain library, so that it becomes
  a de-facto standard.  To achieve this, non-free programs must be
  allowed to use the library.  A more frequent case is that a free
  library does the same job as widely used non-free libraries.  In this
  case, there is little to gain by limiting the free library to free
  software only, so we use the Lesser General Public License.
  
    In other cases, permission to use a particular library in non-free
  programs enables a greater number of people to use a large body of
  free software.  For example, permission to use the GNU C Library in
  non-free programs enables many more people to use the whole GNU
  operating system, as well as its variant, the GNU/Linux operating
  system.
  
    Although the Lesser General Public License is Less protective of the
  users' freedom, it does ensure that the user of a program that is
  linked with the Library has the freedom and the wherewithal to run
  that program using a modified version of the Library.
  
    The precise terms and conditions for copying, distribution and
  modification follow.  Pay close attention to the difference between a
  "work based on the library" and a "work that uses the library".  The
  former contains code derived from the library, whereas the latter must
  be combined with the library in order to run.
  
  		  GNU LESSER GENERAL PUBLIC LICENSE
     TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
  
    0. This License Agreement applies to any software library or other
  program which contains a notice placed by the copyright holder or
  other authorized party saying it may be distributed under the terms of
  this Lesser General Public License (also called "this License").
  Each licensee is addressed as "you".
  
    A "library" means a collection of software functions and/or data
  prepared so as to be conveniently linked with application programs
  (which use some of those functions and data) to form executables.
  
    The "Library", below, refers to any such software library or work
  which has been distributed under these terms.  A "work based on the
  Library" means either the Library or any derivative work under
  copyright law: that is to say, a work containing the Library or a
  portion of it, either verbatim or with modifications and/or translated
  straightforwardly into another language.  (Hereinafter, translation is
  included without limitation in the term "modification".)
  
    "Source code" for a work means the preferred form of the work for
  making modifications to it.  For a library, complete source code means
  all the source code for all modules it contains, plus any associated
  interface definition files, plus the scripts used to control compilation
  and installation of the library.
  
    Activities other than copying, distribution and modification are not
  covered by this License; they are outside its scope.  The act of
  running a program using the Library is not restricted, and output from
  such a program is covered only if its contents constitute a work based
  on the Library (independent of the use of the Library in a tool for
  writing it).  Whether that is true depends on what the Library does
  and what the program that uses the Library does.
    
    1. You may copy and distribute verbatim copies of the Library's
  complete source code as you receive it, in any medium, provided that
  you conspicuously and appropriately publish on each copy an
  appropriate copyright notice and disclaimer of warranty; keep intact
  all the notices that refer to this License and to the absence of any
  warranty; and distribute a copy of this License along with the
  Library.
  
    You may charge a fee for the physical act of transferring a copy,
  and you may at your option offer warranty protection in exchange for a
  fee.
  
    2. You may modify your copy or copies of the Library or any portion
  of it, thus forming a work based on the Library, and copy and
  distribute such modifications or work under the terms of Section 1
  above, provided that you also meet all of these conditions:
  
      a) The modified work must itself be a software library.
  
      b) You must cause the files modified to carry prominent notices
      stating that you changed the files and the date of any change.
  
      c) You must cause the whole of the work to be licensed at no
      charge to all third parties under the terms of this License.
  
      d) If a facility in the modified Library refers to a function or a
      table of data to be supplied by an application program that uses
      the facility, other than as an argument passed when the facility
      is invoked, then you must make a good faith effort to ensure that,
      in the event an application does not supply such function or
      table, the facility still operates, and performs whatever part of
      its purpose remains meaningful.
  
      (For example, a function in a library to compute square roots has
      a purpose that is entirely well-defined independent of the
      application.  Therefore, Subsection 2d requires that any
      application-supplied function or table used by this function must
      be optional: if the application does not supply it, the square
      root function must still compute square roots.)
  
  These requirements apply to the modified work as a whole.  If
  identifiable sections of that work are not derived from the Library,
  and can be reasonably considered independent and separate works in
  themselves, then this License, and its terms, do not apply to those
  sections when you distribute them as separate works.  But when you
  distribute the same sections as part of a whole which is a work based
  on the Library, the distribution of the whole must be on the terms of
  this License, whose permissions for other licensees extend to the
  entire whole, and thus to each and every part regardless of who wrote
  it.
  
  Thus, it is not the intent of this section to claim rights or contest
  your rights to work written entirely by you; rather, the intent is to
  exercise the right to control the distribution of derivative or
  collective works based on the Library.
  
  In addition, mere aggregation of another work not based on the Library
  with the Library (or with a work based on the Library) on a volume of
  a storage or distribution medium does not bring the other work under
  the scope of this License.
  
    3. You may opt to apply the terms of the ordinary GNU General Public
  License instead of this License to a given copy of the Library.  To do
  this, you must alter all the notices that refer to this License, so
  that they refer to the ordinary GNU General Public License, version 2,
  instead of to this License.  (If a newer version than version 2 of the
  ordinary GNU General Public License has appeared, then you can specify
  that version instead if you wish.)  Do not make any other change in
  these notices.
  
    Once this change is made in a given copy, it is irreversible for
  that copy, so the ordinary GNU General Public License applies to all
  subsequent copies and derivative works made from that copy.
  
    This option is useful when you wish to copy part of the code of
  the Library into a program that is not a library.
  
    4. You may copy and distribute the Library (or a portion or
  derivative of it, under Section 2) in object code or executable form
  under the terms of Sections 1 and 2 above provided that you accompany
  it with the complete corresponding machine-readable source code, which
  must be distributed under the terms of Sections 1 and 2 above on a
  medium customarily used for software interchange.
  
    If distribution of object code is made by offering access to copy
  from a designated place, then offering equivalent access to copy the
  source code from the same place satisfies the requirement to
  distribute the source code, even though third parties are not
  compelled to copy the source along with the object code.
  
    5. A program that contains no derivative of any portion of the
  Library, but is designed to work with the Library by being compiled or
  linked with it, is called a "work that uses the Library".  Such a
  work, in isolation, is not a derivative work of the Library, and
  therefore falls outside the scope of this License.
  
    However, linking a "work that uses the Library" with the Library
  creates an executable that is a derivative of the Library (because it
  contains portions of the Library), rather than a "work that uses the
  library".  The executable is therefore covered by this License.
  Section 6 states terms for distribution of such executables.
  
    When a "work that uses the Library" uses material from a header file
  that is part of the Library, the object code for the work may be a
  derivative work of the Library even though the source code is not.
  Whether this is true is especially significant if the work can be
  linked without the Library, or if the work is itself a library.  The
  threshold for this to be true is not precisely defined by law.
  
    If such an object file uses only numerical parameters, data
  structure layouts and accessors, and small macros and small inline
  functions (ten lines or less in length), then the use of the object
  file is unrestricted, regardless of whether it is legally a derivative
  work.  (Executables containing this object code plus portions of the
  Library will still fall under Section 6.)
  
    Otherwise, if the work is a derivative of the Library, you may
  distribute the object code for the work under the terms of Section 6.
  Any executables containing that work also fall under Section 6,
  whether or not they are linked directly with the Library itself.
  
    6. As an exception to the Sections above, you may also combine or
  link a "work that uses the Library" with the Library to produce a
  work containing portions of the Library, and distribute that work
  under terms of your choice, provided that the terms permit
  modification of the work for the customer's own use and reverse
  engineering for debugging such modifications.
  
    You must give prominent notice with each copy of the work that the
  Library is used in it and that the Library and its use are covered by
  this License.  You must supply a copy of this License.  If the work
  during execution displays copyright notices, you must include the
  copyright notice for the Library among them, as well as a reference
  directing the user to the copy of this License.  Also, you must do one
  of these things:
  
      a) Accompany the work with the complete corresponding
      machine-readable source code for the Library including whatever
      changes were used in the work (which must be distributed under
      Sections 1 and 2 above); and, if the work is an executable linked
      with the Library, with the complete machine-readable "work that
      uses the Library", as object code and/or source code, so that the
      user can modify the Library and then relink to produce a modified
      executable containing the modified Library.  (It is understood
      that the user who changes the contents of definitions files in the
      Library will not necessarily be able to recompile the application
      to use the modified definitions.)
  
      b) Use a suitable shared library mechanism for linking with the
      Library.  A suitable mechanism is one that (1) uses at run time a
      copy of the library already present on the user's computer system,
      rather than copying library functions into the executable, and (2)
      will operate properly with a modified version of the library, if
      the user installs one, as long as the modified version is
      interface-compatible with the version that the work was made with.
  
      c) Accompany the work with a written offer, valid for at
      least three years, to give the same user the materials
      specified in Subsection 6a, above, for a charge no more
      than the cost of performing this distribution.
  
      d) If distribution of the work is made by offering access to copy
      from a designated place, offer equivalent access to copy the above
      specified materials from the same place.
  
      e) Verify that the user has already received a copy of these
      materials or that you have already sent this user a copy.
  
    For an executable, the required form of the "work that uses the
  Library" must include any data and utility programs needed for
  reproducing the executable from it.  However, as a special exception,
  the materials to be distributed need not include anything that is
  normally distributed (in either source or binary form) with the major
  components (compiler, kernel, and so on) of the operating system on
  which the executable runs, unless that component itself accompanies
  the executable.
  
    It may happen that this requirement contradicts the license
  restrictions of other proprietary libraries that do not normally
  accompany the operating system.  Such a contradiction means you cannot
  use both them and the Library together in an executable that you
  distribute.
  
    7. You may place library facilities that are a work based on the
  Library side-by-side in a single library together with other library
  facilities not covered by this License, and distribute such a combined
  library, provided that the separate distribution of the work based on
  the Library and of the other library facilities is otherwise
  permitted, and provided that you do these two things:
  
      a) Accompany the combined library with a copy of the same work
      based on the Library, uncombined with any other library
      facilities.  This must be distributed under the terms of the
      Sections above.
  
      b) Give prominent notice with the combined library of the fact
      that part of it is a work based on the Library, and explaining
      where to find the accompanying uncombined form of the same work.
  
    8. You may not copy, modify, sublicense, link with, or distribute
  the Library except as expressly provided under this License.  Any
  attempt otherwise to copy, modify, sublicense, link with, or
  distribute the Library is void, and will automatically terminate your
  rights under this License.  However, parties who have received copies,
  or rights, from you under this License will not have their licenses
  terminated so long as such parties remain in full compliance.
  
    9. You are not required to accept this License, since you have not
  signed it.  However, nothing else grants you permission to modify or
  distribute the Library or its derivative works.  These actions are
  prohibited by law if you do not accept this License.  Therefore, by
  modifying or distributing the Library (or any work based on the
  Library), you indicate your acceptance of this License to do so, and
  all its terms and conditions for copying, distributing or modifying
  the Library or works based on it.
  
    10. Each time you redistribute the Library (or any work based on the
  Library), the recipient automatically receives a license from the
  original licensor to copy, distribute, link with or modify the Library
  subject to these terms and conditions.  You may not impose any further
  restrictions on the recipients' exercise of the rights granted herein.
  You are not responsible for enforcing compliance by third parties with
  this License.
  
    11. If, as a consequence of a court judgment or allegation of patent
  infringement or for any other reason (not limited to patent issues),
  conditions are imposed on you (whether by court order, agreement or
  otherwise) that contradict the conditions of this License, they do not
  excuse you from the conditions of this License.  If you cannot
  distribute so as to satisfy simultaneously your obligations under this
  License and any other pertinent obligations, then as a consequence you
  may not distribute the Library at all.  For example, if a patent
  license would not permit royalty-free redistribution of the Library by
  all those who receive copies directly or indirectly through you, then
  the only way you could satisfy both it and this License would be to
  refrain entirely from distribution of the Library.
  
  If any portion of this section is held invalid or unenforceable under any
  particular circumstance, the balance of the section is intended to apply,
  and the section as a whole is intended to apply in other circumstances.
  
  It is not the purpose of this section to induce you to infringe any
  patents or other property right claims or to contest validity of any
  such claims; this section has the sole purpose of protecting the
  integrity of the free software distribution system which is
  implemented by public license practices.  Many people have made
  generous contributions to the wide range of software distributed
  through that system in reliance on consistent application of that
  system; it is up to the author/donor to decide if he or she is willing
  to distribute software through any other system and a licensee cannot
  impose that choice.
  
  This section is intended to make thoroughly clear what is believed to
  be a consequence of the rest of this License.
  
    12. If the distribution and/or use of the Library is restricted in
  certain countries either by patents or by copyrighted interfaces, the
  original copyright holder who places the Library under this License may add
  an explicit geographical distribution limitation excluding those countries,
  so that distribution is permitted only in or among countries not thus
  excluded.  In such case, this License incorporates the limitation as if
  written in the body of this License.
  
    13. The Free Software Foundation may publish revised and/or new
  versions of the Lesser General Public License from time to time.
  Such new versions will be similar in spirit to the present version,
  but may differ in detail to address new problems or concerns.
  
  Each version is given a distinguishing version number.  If the Library
  specifies a version number of this License which applies to it and
  "any later version", you have the option of following the terms and
  conditions either of that version or of any later version published by
  the Free Software Foundation.  If the Library does not specify a
  license version number, you may choose any version ever published by
  the Free Software Foundation.
  
    14. If you wish to incorporate parts of the Library into other free
  programs whose distribution conditions are incompatible with these,
  write to the author to ask for permission.  For software which is
  copyrighted by the Free Software Foundation, write to the Free
  Software Foundation; we sometimes make exceptions for this.  Our
  decision will be guided by the two goals of preserving the free status
  of all derivatives of our free software and of promoting the sharing
  and reuse of software generally.
  
  			    NO WARRANTY
  
    15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
  WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
  OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
  KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
  LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
  THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
  
    16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
  WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
  AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
  FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
  CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
  LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
  RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
  FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
  SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
  DAMAGES.
  
  		     END OF TERMS AND CONDITIONS
  
             How to Apply These Terms to Your New Libraries
  
    If you develop a new library, and you want it to be of the greatest
  possible use to the public, we recommend making it free software that
  everyone can redistribute and change.  You can do so by permitting
  redistribution under these terms (or, alternatively, under the terms of the
  ordinary General Public License).
  
    To apply these terms, attach the following notices to the library.  It is
  safest to attach them to the start of each source file to most effectively
  convey the exclusion of warranty; and each file should have at least the
  "copyright" line and a pointer to where the full notice is found.
  
      <one line to give the library's name and a brief idea of what it does.>
      Copyright (C) <year>  <name of author>
  
      This library is free software; you can redistribute it and/or
      modify it under the terms of the GNU Lesser General Public
      License as published by the Free Software Foundation; either
      version 2.1 of the License, or (at your option) any later version.
  
      This library is distributed in the hope that it will be useful,
      but WITHOUT ANY WARRANTY; without even the implied warranty of
      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      Lesser General Public License for more details.
  
      You should have received a copy of the GNU Lesser General Public
      License along with this library; if not, write to the Free Software
      Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  
  Also add information on how to contact you by electronic and paper mail.
  
  You should also get your employer (if you work as a programmer) or your
  school, if any, to sign a "copyright disclaimer" for the library, if
  necessary.  Here is a sample; alter the names:
  
    Yoyodyne, Inc., hereby disclaims all copyright interest in the
    library `Frob' (a library for tweaking knobs) written by James Random Hacker.
  
    <signature of Ty Coon>, 1 April 1990
    Ty Coon, President of Vice
  
  That's all there is to it!
  
  
  
  
  


wkpark      2006/02/03 17:40:11

  Modified:    .        wiki.php
  Log:
  fix for Wikwyg: TOC class fix
  
  Revision  Changes    Path
  1.290     +5 -5      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.289
  retrieving revision 1.290
  diff -u -r1.289 -r1.290
  --- wiki.php	1 Feb 2006 01:14:47 -0000	1.289
  +++ wiki.php	3 Feb 2006 08:40:11 -0000	1.290
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.289 2006/02/01 01:14:47 wkpark Exp $
  +// $Id: wiki.php,v 1.290 2006/02/03 08:40:11 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.289 $',1,-1);
  +$_revision = substr('$Revision: 1.290 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -2282,12 +2282,12 @@
   
       $prefix=$this->toc_prefix;
       if ($this->toc)
  -      $head="<a href='#toc'>$num</a> $head";
  +      $head="<span class='tocnumber'><a href='#toc'>$num</a> </span>$head";
       $perma='';
       if ($this->perma_icon)
       $perma=" <a class='perma' href='#s$prefix-$num'>$this->perma_icon</a>";
   
  -    return "$close$open$edit<h$dep><a id='s$prefix-$num' name='s$prefix-$num'></a> $head$perma</h$dep>";
  +    return "$close$open$edit<h$dep><a id='s$prefix-$num' name='s$prefix-$num'></a>$head$perma</h$dep>";
     }
   
     function macro_repl($macro,$value='',$options='') {
  @@ -2500,7 +2500,7 @@
     }
   
     function _div($on,&$in_div,&$enclose,$attr='') {
  -    $tag=array("</div>\n","<div$attr>\n");
  +    $tag=array("</div>\n","<div$attr>");
       if ($on) { $in_div++; $open=$enclose;}
       else {
         if (!$in_div) return '';
  
  
  


wkpark      2006/02/04 07:19:28

  Added:       local/Wikiwyg/moni/images quote.png
  Log:
  add a new icon
  
  Revision  Changes    Path
  1.1                  moniwiki/local/Wikiwyg/moni/images/quote.png
  
  	<<Binary file>>
  
  


wkpark      2006/02/04 07:22:33

  Modified:    local    moniwyg.js
  Log:
  more fixes for WikiWyg: support pre,quote
  
  Revision  Changes    Path
  1.5       +117 -8    moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- moniwyg.js	2 Feb 2006 11:53:13 -0000	1.4
  +++ moniwyg.js	3 Feb 2006 22:22:33 -0000	1.5
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.4 2006/02/02 11:53:13 wkpark Exp $
  +// $Id: moniwyg.js,v 1.5 2006/02/03 22:22:33 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -152,9 +152,12 @@
           html.replace(/<img [^>]*class=.(tex|interwiki|smiley).[^>]* alt=(.)([^\'\"]+)\2[^>]+>/g, "$3");
       // interwiki links
       html =
  -        html.replace(/<a [^>]+ alt=(.)([^\'\"]+)\1[^>]+>/g, "$2");
  +        html.replace(/<a [^>]+ alt=(.)([^\'\"]+)\1[^>]+>/gm, "$2");
       // remove nonexists links
  -    html = html.replace(/<a class=.nonexistent.[^>]+>([^<]+)<\/a>/g, "$1");
  +    html = html.replace(/<a class=.nonexistent.[^>]+>([^<]+)<\/a>/gm, "$1");
  +
  +    // remove toc number
  +    html = html.replace(/<span class=.tocnumber.>(.*)<\/span>/gm, '');
   
       //
       dom.innerHTML = html;
  @@ -346,6 +349,8 @@
       'hr',
       'table',
       'indent', 'outdent', '|',
  +    'pre',
  +    'quote', '|',
       'image',
       'media',
   ];
  @@ -354,6 +359,7 @@
   proto.config.controlLabels.nowiki = 'As Is';
   proto.config.controlLabels.image = 'Image';
   proto.config.controlLabels.media = 'Media';
  +proto.config.controlLabels.quote = 'Quote';
   
   proto = Wikiwyg.Wikitext.prototype;
   proto.config.markupRules.bold = ['bound_phrase', "'''", "'''"];
  @@ -373,7 +379,7 @@
   proto.config.markupRules.ordered = ['start_lines', ' 1.'];
   proto.config.markupRules.unordered = ['start_lines', ' *'];
   proto.config.markupRules.indent = ['start_lines', ' '];
  -proto.config.markupRules.quote = ['start_lines', '> '];
  +proto.config.markupRules.quote = ['start_lines', '>'];
   proto.config.markupRules.hr = ['line_alone', '----'];
   proto.config.markupRules.image = ['bound_phrase', 'attachment:', ''];
   proto.config.markupRules.media = ['bound_phrase', '[[Media(', ')]]'];
  @@ -387,6 +393,7 @@
       proto.format_image = Wikiwyg.Wikitext.make_formatter('image');
   proto.do_image = Wikiwyg.Wikitext.make_do('image');
   proto.do_media = Wikiwyg.Wikitext.make_do('media');
  +proto.do_quote = Wikiwyg.Wikitext.make_do('quote');
   
   proto.collapse = function(string) {
       return string.replace(/\r\n|\r/g, ''); // FIX
  @@ -424,11 +431,11 @@
   }
   
   // XXX - A lot of this is hardcoded.
  -// customize of moniwiki
  +// customize for moniwiki
   proto.add_markup_lines = function(markup_start) {
       var already_set_re = new RegExp( '^' + this.clean_regexp(markup_start), 'gm');
       //var other_markup_re = /^(\^+|\=+|\*+|#+|>+|    )/gm;
  -    var other_markup_re = /^(\s+\*|\s+\d+\.|(\>\s)+|\=+|\s+)/gm;
  +    var other_markup_re = /^(\s+\*|\s+\d+\.|(\>\s)+|\=+)/gm;
   
       var match;
       // if paragraph, reduce everything.
  @@ -451,11 +458,14 @@
       // if some other style, switch to new style
       else if (match = this.sel.match(other_markup_re))
           // if pre, just indent
  -        if (markup_start == ' ')
  +        if (markup_start == ' ') {
               this.sel = this.sel.replace(/^/gm, markup_start);
  +            alert(this.sel);
  +        }
           // if heading, just change it
  -        else if (markup_start.match(/[\=\^]/))
  +        else if (markup_start.match(/[\=\^]/)) {
               this.sel = this.sel.replace(other_markup_re, markup_start);
  +        }
           // else try to change based on level
           else
               this.sel = this.sel.replace(
  @@ -487,6 +497,105 @@
       this.area.focus();
   }
   
  +proto.markup_bound_phrase = function(markup_array) {
  +    var markup_start = markup_array[1];
  +    var markup_finish = markup_array[2];
  +    var scroll_top = this.area.scrollTop;
  +    if (markup_finish == 'undefined')
  +        markup_finish = markup_start;
  +    var multi = null;
  +    if (markup_array[1].match(/\{\{\{/)) multi = 1; // fix for pre block
  +    if (this.get_words(multi))
  +        this.add_markup_words(markup_start, markup_finish, null);
  +    this.area.scrollTop = scroll_top;
  +}
  +
  +proto.get_words = function(multi) {
  +    function is_insane(selection,multi) {
  +        if (multi)
  +            return selection.match(/\r?\n(\s+\*|\s\d\.)/); //FIX
  +        return selection.match(/(\r?\n|\*+ |\#+ |\=+ )/);
  +    }   
  +
  +    t = this.area; // XXX needs "var"?
  +    var selection_start = t.selectionStart;
  +    var selection_end = t.selectionEnd;
  +
  +    if (selection_start == null) {
  +        selection_start = selection_end;
  +        if (selection_start == null) {
  +            return false
  +        }
  +        selection_start = selection_end =
  +            t.value.substr(0, selection_start).replace(/\r/g, '').length;
  +    }
  +
  +    var our_text = t.value.replace(/\r/g, '');
  +    selection = our_text.substr(selection_start,
  +        selection_end - selection_start);
  +
  +    selection_start = this.find_right(our_text, selection_start, /(\S|\r?\n)/);
  +    if (selection_start > selection_end)
  +        selection_start = selection_end;
  +    selection_end = this.find_left(our_text, selection_end, /(\S|\r?\n)/);
  +    if (selection_end < selection_start)
  +        selection_end = selection_start;
  +
  +    if (is_insane(selection,multi)) {
  +        this.alarm_on();
  +        return false;
  +    }
  +
  +    this.selection_start =
  +        this.find_left(our_text, selection_start, Wikiwyg.Wikitext.phrase_end_re);
  +    this.selection_end =
  +        this.find_right(our_text, selection_end, Wikiwyg.Wikitext.phrase_end_re);
  +
  +    t.setSelectionRange(this.selection_start, this.selection_end);
  +    t.focus();
  +
  +    this.start = our_text.substr(0,this.selection_start);
  +    this.sel = our_text.substr(this.selection_start, this.selection_end -
  +        this.selection_start);
  +    this.finish = our_text.substr(this.selection_end, our_text.length);
  +
  +    return true;
  +}
  +
  +proto.markup_is_on = function(start, finish) {
  +    return (this.sel.match(start) && this.sel.match(finish));
  +}
  +
  +proto.add_markup_words = function(markup_start, markup_finish, example) {
  +        if (this.sel.match(/\n/)) {
  +            markup_start += '\n';
  +            markup_finish = '\n' + markup_finish;
  +        }
  +    if (this.toggle_same_format(markup_start, markup_finish)) {
  +        this.selection_end = this.selection_end -
  +            (markup_start.length + markup_finish.length);
  +        markup_start = '';
  +        markup_finish = '';
  +    }
  +    if (this.sel.length == 0) {
  +        if (example)
  +            this.sel = example;
  +        var text = this.start + markup_start + this.sel +
  +            markup_finish + this.finish;
  +        var start = this.selection_start + markup_start.length;
  +        var end = this.selection_end + markup_start.length + this.sel.length;
  +        this.set_text_and_selection(text, start, end);
  +    } else {
  +        var text = this.start + markup_start + this.sel +
  +            markup_finish + this.finish;
  +        var start = this.selection_start;
  +        var end = this.selection_end + markup_start.length +
  +            markup_finish.length;
  +        this.set_text_and_selection(text, start, end);
  +    }
  +    this.area.focus();
  +}
  +
   proto.handle_bound_phrase = function(element, markup) {
       this.assert_space_or_newline(); // FIX
       this.appendOutput(markup[1]);
  
  
  


wkpark      2006/02/04 07:22:33

  Modified:    local/Wikiwyg/css moniwyg.css
  Log:
  more fixes for WikiWyg: support pre,quote
  
  Revision  Changes    Path
  1.2       +2 -2      moniwiki/local/Wikiwyg/css/moniwyg.css
  
  Index: moniwyg.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/css/moniwyg.css,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- moniwyg.css	1 Feb 2006 00:44:56 -0000	1.1
  +++ moniwyg.css	3 Feb 2006 22:22:33 -0000	1.2
  @@ -11,7 +11,7 @@
   
   .wikiwyg_button {
       background: #EBE8D5;
  -    border: 1px solid #D3D3D3;
  +    border: 1px solid #EBE8D5;
       cursor: pointer;
       width: 23px;
       height: 22px;
  @@ -28,7 +28,7 @@
   
   .wikiwyg_separator {
       background: #EBE8D5;
  -    border: 1px solid #D3D3D3;
  +    border: 1px solid #EBE8D5;
       width: 9px;
       height: 20px;
       vertical-align: bottom;
  
  
  


wkpark      2006/02/04 07:22:33

  Modified:    local/Wikiwyg/moni/images pre.png
  Log:
  more fixes for WikiWyg: support pre,quote
  
  Revision  Changes    Path
  1.2       +1 -1      moniwiki/local/Wikiwyg/moni/images/pre.png
  
  	<<Binary file>>
  
  


wkpark      2006/02/04 07:49:18

  moniwiki/theme/azblue - New directory

wkpark      2006/02/04 07:49:28

  moniwiki/theme/azblue/css - New directory

wkpark      2006/02/04 07:49:28

  moniwiki/theme/azblue/imgs - New directory

wkpark      2006/02/04 07:50:49

  Added:       theme/azblue footer.php header.php theme.php
  Log:
  add a new theme "azblue"
  
  Revision  Changes    Path
  1.1                  moniwiki/theme/azblue/footer.php
  
  Index: footer.php
  ===================================================================
  </div>
  <?php
  
  $banner= <<<FOOT
   <a href="http://validator.w3.org/check/referer"><img
    src="$this->themeurl/imgs/xhtml.png"
    border="0" width="80" height="15"
    align="middle"
    alt="Valid XHTML 1.0!" /></a>
  
   <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
    src="$this->themeurl/imgs/css.png"
    border="0" width="80" height="15"
    align="middle"
    alt="Valid CSS!" /></a>
  
   <a href="http://moniwiki.sourceforge.net/"><img
    src="$this->themeurl/imgs/moniwiki-powered-thin.png"
    border="0" width="80" height="15"
    align="middle"
    alt="powered by MoniWiki" /></a>
  FOOT;
  ?>
  </div>
  </div>
  <div id='wikiFooter'>
  <?php
    print $menu;
    print '<div align="center" id="wikiBanner">'.$banner.'<br />';
    if ($lastedit)
      print "last modified $lastedit $lasttime<br />";
    print 'Processing time '.$timer;
    print '</div>';
  ?>
  </div>
  </div></div></div></div></div></div>
  </div></div>
  
  
  
  1.1                  moniwiki/theme/azblue/header.php
  
  Index: header.php
  ===================================================================
  <?php
  # MoniWiki Theme by wkpark at kldp.org
  # $Id: header.php,v 1.1 2006/02/03 22:50:49 wkpark Exp $
  #
  include_once("plugin/login.php");
  include_once("plugin/RandomBanner.php");
  include_once("plugin/Calendar.php");
  $login=macro_login($this);
  # theme options
  #$_theme['sidebar']=1;
  
  ?>
  <div id='topHeader'>
  <!--
  &middot; <a href='http://kldp.org'>KLDP.org</a> &middot;
  <a href='http://kldp.net'>KLDP.net</a> &middot;
  <a href='http://wiki.kldp.org'>KLDP Wiki</a> &middot;
  <a href='http://bbs.kldp.org'>KLDP BBS</a> &middot;
  -->
  </div>
  <div id='mainBody'>
  <!--
  <div id='topBanner'>
  <img src="<?php echo $this->themeurl?>/imgs/kldpwikilogo.png"/>
  </div>
  -->
  <div id='pBodyRight'><div id='pBodyLeft'>
  <div id='pBottomRight'><div id='pBottomLeft'>
  <div id='pTopRight'><div id='pTopLeft'>
  
  <div id='wikiPage'>
  <div id='pBanSpace'></div>
  <div id='pBanRight'><div id='pBanLeft'>
  <div id='pBanner'>
  <?php echo $DBInfo->sitename?>
  </div>
  <div id='goForm'>
  <form name='go' id='go' action='' method='get' onsubmit="return moin_submit();">
  <input type='text' name='value' size='20' accesskey='s' class='goto' style='width:120px' />
  <input type='hidden' name='action' value='goto' />
  <input type='submit' name='status' class='submitBtn' value='Go' style='width:35px;' />
  </form>
  </div>
  <div id='pTitle'><?php echo $title?></div><div id='wikiHeader'>
  <div id='pMenuRight'><div id='pMenuLeft'>
  <div id='wikiMenuBar'>
  <div id='wikiIcon'><?php echo $upper_icon.$icons.$rss_icon.$home?></div>
  <?php echo $menu?>
  </div>
  </div></div>
  </div>
  </div>
  <div class='clear'></div>
  <?php echo $msg?>
  <div id='container'>
  <?php
  # enable/disable sidebar
  if ($this->_sidebar==1) :
  ?>
  <div id='wikiSideMenu'>
  <?php
  print macro_login($this);
  print '<div style="font-size:11px;font-family:verdana,sans-serif">';
  if ($options['id']=='Anonymous')
    print macro_calendar($this,"'Blog',blog,noweek,archive",'Blog');
  else
    print macro_calendar($this,"'$options[id]',blog,noweek,archive",$options['id']);
  print '</div>';
  print '<font style="font-size:12px;"><b>';
  print macro_RandomQuote($this);
  print '</b></font>';
  print "<br /><br />\n";
  print '<font style="font-size:11px">';
  print macro_RandomPage($this,"4,simple");
  print '</font>';
  ?>
  </div>
  <?php
  endif;
  
  ?>
  <div id='content'>
  
  
  
  1.1                  moniwiki/theme/azblue/theme.php
  
  Index: theme.php
  ===================================================================
  <?php
  $css_friendly=1;
  $_sidebar=0;
  ?>
  
  
  


wkpark      2006/02/04 07:50:49

  Added:       theme/azblue/css default.css
  Log:
  add a new theme "azblue"
  
  Revision  Changes    Path
  1.1                  moniwiki/theme/azblue/css/default.css
  
  Index: default.css
  ===================================================================
  @import url("../../../css/_base.css");
  @import url("../../../css/_extra.css");
  @import url("../../../css/_calendar.css");
  @import url("../../../css/_user.css");
  
  body {
    font-family:Georgia,Verdana,Lucida,sans-serif;font-size:12px;
    color:#000;
    margin-left:0px;
    margin-right:0px;
    margin-top:0px;
    margin-bottom:0px;
  }
  
  #mainBody {
    /* top:15px; /* */
  /*  padding-left:100px;
    padding-right:100px; */
    min-width:750px;
    margin: 0px auto 0px auto;
    width: 750px;
    /*\*/ min-width: 750px /* */
  }
  
  div {
  /*  border:1px solid red; /* */
  }
  
  #topHeader {
    padding-left:15px;
    padding-top:2px;
    color:white;
    font-family:Tahoma,Verdana,Vera Sans,sans-serif;
    font-size:11px;
    font-weight:bold;
  }
  
  #topHeader a{
    color:white;
    text-decoration:none;
  }
  
  #topBanner {
    height:48px;
    font-size:40px;
    font-family:Tahoma,sans-serif;
    color:white;
    padding-left:8px;
    padding-top:10px;
    padding-bottom:0px;
    margin:0px;
    overflow-y:hidden;
    /* overflow:hidden; does not work correctly in the mozilla */
  }
  #pTopLeft {
    background: url("../imgs/ntl.png") no-repeat;
    z-index:4;
  }
  #pTopRight {
    background: url("../imgs/ntr.png") no-repeat right top;
    z-index:4;
  }
  
  #pBanSpace {
    height:3px;
  }
  
  #pBanner {
    height:50px;
    padding:8px;
    font-size:36px;
    text-align:center;
    font-family:Trebuchet MS,Tahoma,Lucida,sans-serif;
  }
  
  #pBanLeft {
    height:143px;
  }
  #pBanRight {
  }
  
  
  #pBottomMargin {
    height:20px;
  }
  
  #pBottomLeft {
    background: url("../imgs/nbl.png") no-repeat left bottom;
    z-index:1;
  }
  #pBottomRight {
    background: url("../imgs/nbr.png") no-repeat right bottom;
    z-index:1;
  }
  
  #pBodyLeft {
    background: url("../imgs/nl.png") repeat-y left;
    z-index:-5;
  }
  #pBodyRight {
    background: url("../imgs/nr.png") repeat-y right;
    z-index:-5;
  }
  
  #goForm {
    float:right;
    padding: 3px 10px;
  }
  
  #pTitle {
  /*  border: 1px solid #7B9AC5; /* */
    padding:0px;
  }
  
  #wikiPage {
    margin-left:13px;
    margin-right:15px;
    padding-top:10px;
    padding-bottom:10px;
    min-height:400px;
  }
  
  #wikiBanner {
    margin-top:10px;
    text-align:center;
  }
  
  
  a:link { color: #0686db;}
  a:visited { color: #000000;}
  /* a:hover {background-color:#999966;color:white} /* */
  .wikiTitle {
    padding-left:10px;
    font-family:Trebuchet MS,Tahoma,Lucida,sans-serif;
    font-size:22px;
    font-weight:bold;
    text-decoration: none;
  }
  tt.wiki {font-family:Monotype,Lucida Console,lucida,monospace;font-size:12px;}
  tt.foot {
    font-family:Tahoma,lucida,monospace;
    font-size:11px;
    vertical-align: super;
  }
  
  tt.sister {
    font-family:Tahoma,lucida,monospace;
    font-size:11px;
    vertical-align: super;
    text-decoration: none;
  }
  
  pre {
    white-space:pre-wrap;
    white-space: -moz-pre-wrap;
    overflow: auto;
  }
  
  pre.wiki {
    padding-left:6px;
    padding-top:6px; 
    font-family:"Bitstream Vera Sans Mono", Courier, GulimChe, monospace !important;
    background-color:#000000;
    color:#c0c0c0;
    border:1px solid #cccc99;
    border-left:10px solid #cccc99;
    padding:10px;
    white-space:pre;
    white-space: -moz-pre-wrap;
  }
  
  pre.console {
    background-color: #000000;
    color: #E0E0E0;
    padding: .25em ;
    border: 2px inset #808080;
  }
  
  pre.quote {
    padding-left:6px;
    padding-top:6px;
    white-space:pre-wrap;
    white-space: -moz-pre-wrap; 
    font-family:Georgia,monotype,lucida,monospace;font-size:14px;
    background-color: #E9ECEF;
  }
  
  pre.wikiSyntax {
    font-family:"Bitstream Vera Sans Mono", Courier, GulimChe, monospace !important;
    background-color: #f5f5f5 !important;
    color: black !important;
    border:1px solid #cccc99;
    border-left:10px solid #cccc99;
    padding:10px;
    white-space:pre;
    white-space: -moz-pre-wrap;
  }
  
  table.wiki {
  /* background-color:#E2ECE5;*/
  /* border-collapse: collapse; */
    border: 0px outset #ddddb0;
  }
  
  td.wiki {
    background-color: #F8F7F0;
  /* border-collapse: collapse; */
    border: 0px inset #EAF2F4;
  }
  
  textarea.wiki { width:98%; }
  
  th.info {
    background-color:#E2ECE2;
  /*  border-collapse: collapse; */
  /*  border: 1px solid silver; */
  }
  
  td.info {
    background-color:#E2ECE2;
  
  }
  
  h1,h2,h3,h4,h5 {
    font-family:Tahoma,sans-serif;
    padding-left:2px;
    border-bottom:1px solid #C0c0c0;
  }
  
  h1 a, h2 a, h3 a, h4 a, h5 a {
    text-decoration:none;
  }
  
  ul li {
    list-style-image: url(../imgs/li1.png);
  }
  
  ul li li {
    list-style-image: url(../imgs/li2.png);
  }
  
  h2,h1 {
    padding-top:10px;
  }
  
  * html a.perma:visited { /* IE hack */
    color:#000;
  }
  
  div.message {
    margin-top: 3pt;
    background-color: #E8E8E8;
    border-color:#ee0000;
    color:#440000;
    padding:3px;
  }
  
  .highlight {
    background-color:#FFFF40;
  }
  
  #wikiGoto {
    font-family:Tahoma,Lucida,sans-serif;
    font-size:11px;
  }
  
  #wikiGoto input[type="text"] {
    font-family:Tahoma,Lucida,sans-serif;
    font-size:11px;
    width:100px;
  }
  
  input[value="Go"] {
    font-family:Tahoma,Lucida,sans-serif;
    font-size:10px;
    width:23px;
  }
  
  input[value="OK"] {
    font-family:Tahoma,Lucida,sans-serif;
    font-size:10px;
    width:25px;
  }
  
  
  table.closure, td.closure{
    background-color: #E9ECEF;
  }
  
  /*  */
  .wikiHr {
    border:0px solid;
    padding: 0px 0px; /* */
    margin-top:0px;
    height:1px;  
  /* background: #000 url(hr1.gif) no-repeat scroll center; */
  }
  
  #wikiTrailer {
    background-color:#fafafa; 
    padding-left: 20px;
  }
  
  .wikiNavigation {
    background-color:#E0E0E0; 
    padding-top: 5px;
    padding-bottom: 5px;
  }
  
  #wikiOrigin {
    background-color:#fafafa; 
    padding-left: 20px;
    padding-top:3px;
    padding-bottom:3px;
  }
  
  #wikiHeader {
  /*  border-left: 0.8em solid #7B9AC5; /* */
  /*  border: 1px solid #7B9AC5; /* */
    clear:both;
    color: #000000;
    padding: 0.2em 0em 0.2em 0.2em;
  }
  
  #wikiHeader a:link {color:#000000;}
  #wikiHeader a:visited {color:#000000;}
  
  #wikiMenuBar {
    padding:6px;
    height:43px;
  }
  
  #pMenuLeft {
    background: url("../imgs/ml.png") no-repeat left top;
    z-index:2;
  }
  #pMenuRight {
    background: url("../imgs/mr.png") no-repeat right top;
    z-index:2;
  }
  
  #wikiIcon {
    float:right;
    padding: 3px 10px;
    text-align: right;
    vertical-align: middle;
  }
  
  #wikiMenu {
  /*
    background-color: #1690c0;
    color: #1690c0;
  */
  }
  
  #wikiMenu ul {
    margin:0;
    padding:0;
    list-style:none;
  }
  
  #wikiMenu li {
    display:inline;
    padding: 4px 10px;
    border-right: 1px solid #A8DBFD;
    /* border-right: 1px solid #e0e0e0; */
  }
  
  #wikiMenu li:hover {
  /*  background-color: #ffffff; /* */
    background-color: #98D3FC; /* */
    text-decoration: none;
  }
  
  #wikiMenu li:hover a{
  /* color: #1999ee; /* */
    color: #ffffff; /* */
  }
  
  #wikiMenu li a:active {
    color: #b0b0b0;
    text-decoration: none;
  }
  
  #wikiMenu a, #wikiMenu a:visited, #wikiMenu a:link {
    margin: 0;
    text-decoration: none;
    color:white;
  }
  
  #wikiMenu a{
    color:white;
    font-size:11px;
    font-weight:bold;
    font-family: Tahoma,Verdana,sans-serif;
    text-decoration:none;
  }
  
  #wikiBody {
    color: black;
  /*  background-color: #fff; /* */
    overflow: hidden; /* */
  /*  border: 1px dotted #c0c0c0; /* */
  /*  border-left: 0.8em solid #E2ECE2;
    border-right: 0.8em solid #E2ECE2; */
  /*  border-left: 0.8em dotted; /*solid #6A2525; */
  /*  border-right: 0.8em solid #6A2525; */
  /*  text-transform: lowercase; /* */
  /*  margin: 10px 10px 0px 10px; */
  /*  padding: 5px 1em 5px 1em; */
  /*  margin-left: 20px; */
  /*  padding-left: 1em; /* */
  /*  text-indent: 10px; */
  /*  border: 0px outset #E2ECE5; */
  /*  font-size:16px; 
    border-collapse:collapse; */
  }
  
  #wikiBody a:link {
    text-decoration:none;
    color: #125Fab;
  }
  
  #wikiBody a:visited {
    /* border-bottom: 1px dotted #bbb; */
    color: #125fab;
  }
  
  #wikiBody a:hover {
    color: #2285E8;
    text-decoration:none;
  }
  
  #wikiContent {
  }
  
  #wikiExtra {
  /*  padding-top: 1em; /* */
  }
  
  #wikiFooter {
    clear:both;
    padding: 0.5em 2em;
  /*  background-color:yellow; */
  }
  
  .wikiHints {
    font-family:Georgia,Verdana,Lucida,sans-serif;
    font-size:10px;
    background-color:#C0D3D2;
    padding:5px;
  }
  
  #wikiSister {
  /*  background-color:lightgreen; /* */
  }
  
  #wikiPreview {
    border: 2px solid #a0a0a0;
    margin: 5px 5px 5px 5px;
    padding: 5px 1em 5px 1em;
  }
  
  
  div.indent {
    margin-top: 3px;
    padding-left: 22px;
  }
  
  div.quote {
    background: transparent url("../imgs/quote-open.png") no-repeat;
    padding-top: 3px;
    background-color: #f8f8f8; /* */
  }
  
  div.diff-removed {
    background-color:#EEBfbb;
  }
  
  del.diff-removed {
    color: #999999;
    background-color:white !important;
  }
  
  ins.diff-added {
    background-color:#ccffcc;
  }
  
  div.hint { font-size: 10px; background-color: #369; color:white;}
  a.purple { font-size: 10px; text-decoration:none;}
  
  /* Blog CSS */
  a.purple { font-size: 10px; text-decoration:none;}
  div.blog { width:90%; padding: 0em 1em 0em 1em; }
  span.blog-user { font-size:10px; }
  div.blog-title { font-size:16px; font-weight:bold; }
  div.blog-comments { }
  div.blog-comment { padding:1em 1em 1em 2em; margin-bottom:5px;border-left: 4px solid #E4F1F4; background-color:#F0F6F8;}
  div.blog-comments .separator { display:none;}
  div.blog-action { text-align:right; font-size:9px; }
  
  div.blog-date { font-size:18px; font-weight:bold; padding-bottom:5px;}
  span.blog-user { font-size:10px; }
  
  div.blog-summary { margin-bottom:10px;}
  
  div.trackback-hint { font-size: 10px; padding: 1em 1em 1em 1em;background-color: #eee;}
  /* Calendar */
  td.day { background: #e0e0e0; text-align: center;}
  td.today { background:#ffffff; text-align: center;}
  span.blogged {
    text-decoration:none;
    font-weight:bold; color:#000000; text-align: center;
  }
  
  .Calendar a{text-decoration:none;color:black;}
  
  caption.month {
    font-weight:bold;
    white-space:nowrap;
  }
  
  /* HierarchicalWiki */
  div.wikiGroup {
    font-family:Tahoma,Lucida,sans-serif;
    font-size:x-small;
  }
  
  /* login */
  #wikiLogin {
    font-family:Tahoma,sans-serif;
    font-size:x-small;
    font-weight:bold;
  }
  
  #wikiLogin input {
    font-family:Verdana,sans-serif;
    /* border:1px solid #848284; /* */
    font-size:x-small;
    font-weight:normal;
  }
  
  #commentForm {
    padding:5px;
    background-color:#eeeeee;
  }
  
  #commentForm input {
    /* border:1px solid #848284; /* */
    font-size:x-small;
    font-family:Verdana,sans-serif;
  }
  
  /* enscript syntax */
  div.wikiPre i,div.wikiPre b{
    font-weight: normal;
    font-style: normal;
  }
  
  img.imgLeft {
    margin-right : 15px;
    margin-bottom : 5px;
  }
  
  img.imgRight {
    margin-left : 10px;
    margin-bottom : 5px;
  }
  
  span.externalLink {
    display: none;
  }
  
  span.lineNumber {
    color:#c0c0c0;
    /* color:#ffff00; /* */
  }
  
  math, math[mode="inline"] {
    font-family: CMSY10, CMEX10, Symbol, Times;
  }
  
  .sectionEdit a:link {
    color:#3D9CB4;
  }
  
  .commentForm textarea.wiki {
    align:right;
    width:412px; height:136px;
    background:url(../imgs/commentarea.png) no-repeat left top;
    border:none;
    padding:4px 8px;
  }
  
  * html .commentForm textarea.wiki { /* IE fix */
    background:url(../imgs/commentarea.png) no-repeat left top fixed;
    padding-right:20px;
  }
  
  .commentForm textarea.wiki:hover { background-position:left bottom;}
  
  #goForm input.goto {
    width:160px !important; 
    height:15px;
    background:url(../imgs/goinput.png) no-repeat left top;
    border:none;
    padding:6px 8px;
    font-family: "Trebuchet MS",Georgia,sans-serif;
    font-size:12px;
  }
  
  * html #goForm input.goto { /* IE fix */
    background:url(../imgs/goinput.png) no-repeat left top fixed;
  }
  
  #goForm input.goto:hover {
    background-position:left bottom;
  }
  
  #goForm input.submitBtn {
  width:69px; height:26px;
  color:#FFF;
  font-weight:bold;
  padding:2px 5px;
  background:url(../imgs/gobutton.png) no-repeat left top;
  cursor:pointer;
  border:none;}
  
  #goForm input.submitBtn:hover {
    background-position:left bottom;
  }
  
  #container {
    margin: 0 auto;
  }
  
  #content {
  /*  margin-right:140px; /* */
    padding-right:5px;
  }
  
  #wikiSideMenu {
    float:right;
    display:inline;
    padding:5px;
    width:140px;
    border-left:1px dotted #e0e0e0;
    height:100%;
  }
  
  
  


wkpark      2006/02/04 07:50:50

  Added:       theme/azblue/imgs bgl.png bgr.png commentarea.png css.png
                        gobutton.png goinput.png li1.png li2.png ml.png
                        moniwiki-powered-thin.png mr.png nbl.png nbr.png
                        nl.png nr.png ntl.png ntr.png quote-open.png
                        xhtml.png
  Log:
  add a new theme "azblue"
  
  Revision  Changes    Path
  1.1                  moniwiki/theme/azblue/imgs/bgl.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/theme/azblue/imgs/bgr.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/theme/azblue/imgs/commentarea.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/theme/azblue/imgs/css.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/theme/azblue/imgs/gobutton.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/theme/azblue/imgs/goinput.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/theme/azblue/imgs/li1.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/theme/azblue/imgs/li2.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/theme/azblue/imgs/ml.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/theme/azblue/imgs/moniwiki-powered-thin.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/theme/azblue/imgs/mr.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/theme/azblue/imgs/nbl.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/theme/azblue/imgs/nbr.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/theme/azblue/imgs/nl.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/theme/azblue/imgs/nr.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/theme/azblue/imgs/ntl.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/theme/azblue/imgs/ntr.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/theme/azblue/imgs/quote-open.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/theme/azblue/imgs/xhtml.png
  
  	<<Binary file>>
  
  


wkpark      2006/02/07 09:59:09

  Modified:    .        wikilib.php
  Log:
  fixed #301151 by puzzlet
  
  Revision  Changes    Path
  1.204     +4 -4      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.203
  retrieving revision 1.204
  diff -u -r1.203 -r1.204
  --- wikilib.php	29 Jan 2006 04:07:26 -0000	1.203
  +++ wikilib.php	7 Feb 2006 00:59:09 -0000	1.204
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.203 2006/01/29 04:07:26 wkpark Exp $
  +// $Id: wikilib.php,v 1.204 2006/02/07 00:59:09 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1879,8 +1879,8 @@
               $url=$formatter->macro_repl('Attachment',substr($icon,11),1);
               $icon=qualifiedUrl($DBInfo->url_prefix.'/'.$url);
             }
  -          preg_match('/^(\d+)(x(\d+))?\b/',strtok(''),$sz);
  -          $sx=$sz[1];$sy=$sz[3];
  +          preg_match('/^(\d+)(x(\d+))?\b/',strtok(''),$msz);
  +          $sx=$msz[1];$sy=$msz[3];
             $sx=$sx ? $sx:16; $sy=$sy ? $sy:16;
             $intericon[$wiki]=array($sx,$sy,trim($icon));
           }
  @@ -1901,7 +1901,7 @@
       if (file_exists($DBInfo->shared_intericon))
         $map=array_merge($map,file($DBInfo->shared_intericon));
   
  -    for ($i=0;$i<sizeof($map);$i++) {
  +    for ($i=0,$isz=sizeof($map);$i<$isz;$i++) {
         $line=rtrim($map[$i]);
         if (!$line || $line[0]=="#" || $line[0]==" ") continue;
         if (preg_match("/^[A-Z]+/",$line)) {
  
  
  


wkpark      2006/02/08 11:37:18

  Modified:    .        wikilib.php
  Log:
  fixed qualifiedUrl() for https
  
  Revision  Changes    Path
  1.205     +8 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.204
  retrieving revision 1.205
  diff -u -r1.204 -r1.205
  --- wikilib.php	7 Feb 2006 00:59:09 -0000	1.204
  +++ wikilib.php	8 Feb 2006 02:37:18 -0000	1.205
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.204 2006/02/07 00:59:09 wkpark Exp $
  +// $Id: wikilib.php,v 1.205 2006/02/08 02:37:18 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -44,9 +44,14 @@
   }
   
   function qualifiedUrl($url) {
  -  if (substr($url,0,7)=="http://")
  +  if (substr($url,0,7)=='http://' or substr($url,0,8) == 'https://')
       return $url;
  -  return "http://$_SERVER[HTTP_HOST]$url";
  +  $port= ($_SERVER['SERVER_PORT'] != 80) ? ':'.$_SERVER['SERVER_PORT']:'';
  +  $proto= 'http';
  +  if (!empty($_SERVER['HTTPS'])) $proto= 'https';
  +  else $proto= strtolower(strtok($_SERVER['SERVER_PROTOCOL'],'/'));
  +  if ($url[0] != '/') $url='/'.$url; // XXX
  +  return $proto.'://'.$_SERVER['HTTP_HOST'].$port.$url;
   }
   
   function find_needle($body,$needle,$exclude='',$count=0) {
  
  
  


wkpark      2006/02/08 11:38:04

  Modified:    plugin   Comment.php
  Log:
  fixed css id for the Comment macro
  
  Revision  Changes    Path
  1.23      +2 -2      moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- Comment.php	26 Jan 2006 17:27:41 -0000	1.22
  +++ Comment.php	8 Feb 2006 02:38:04 -0000	1.23
  @@ -6,7 +6,7 @@
   // Usage: [[Comment]], ?action=comment
   //
   //
  -// $Id: Comment.php,v 1.22 2006/01/26 17:27:41 wkpark Exp $
  +// $Id: Comment.php,v 1.23 2006/02/08 02:38:04 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $DBInfo;
  @@ -51,7 +51,7 @@
       $hidden.='<input type="hidden" name="comment_id" value="'.$value.'" />';
     $form = "<form name='editform' method='post' action='$url'>\n";
     $form.= <<<FORM
  -<textarea class="wiki" id="content" name="savetext"
  +<textarea class="wiki" name="savetext"
    rows="$rows" cols="$cols">$savetext</textarea><br />
   FORM;
     if ($options['id'] == 'Anonymous')
  
  
  


wkpark      2006/02/08 17:22:55

  Modified:    plugin   css.php theme.php
  Log:
  fixed theme plugin: use setcookie()
  
  Revision  Changes    Path
  1.7       +2 -2      moniwiki/plugin/css.php
  
  Index: css.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/css.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- css.php	11 Sep 2005 07:30:53 -0000	1.6
  +++ css.php	8 Feb 2006 08:22:55 -0000	1.7
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // css action plugin for the MoniWiki
   //
  -// $Id: css.php,v 1.6 2005/09/11 07:30:53 wkpark Exp $
  +// $Id: css.php,v 1.7 2006/02/08 08:22:55 wkpark Exp $
   
   function do_css($formatter,$options) {
     global $DBInfo;
  @@ -60,7 +60,7 @@
   
   function macro_Css($formatter="") {
     global $DBInfo;
  -  if ($DBInfo->theme_css) return "CSS disabled !";
  +  if ($DBInfo->theme_css) return _("CSS disabled !");
     $out="
   <form method='post'>
   <input type='hidden' name='action' value='css' />
  
  
  
  1.6       +12 -7     moniwiki/plugin/theme.php
  
  Index: theme.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/theme.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- theme.php	1 Aug 2004 13:16:56 -0000	1.5
  +++ theme.php	8 Feb 2006 08:22:55 -0000	1.6
  @@ -1,17 +1,22 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2006 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // Theme plugin for the MoniWiki
   //
  -// $Id: theme.php,v 1.5 2004/08/01 13:16:56 wkpark Exp $
  +// $Id: theme.php,v 1.6 2006/02/08 08:22:55 wkpark Exp $
   //
   
   function do_theme($formatter,$options) {
     global $DBInfo;
   
     if ($options['clear']) {
  -    if ($options[id]=='Anonymous') {
  -      header("Set-Cookie: MONI_THEME=dummy; expires=Tuesday, 01-Jan-1999 12:00:00 GMT; Path=".get_scriptname());
  +    if ($options['id']=='Anonymous') {
  +      #header("Set-Cookie: MONI_THEME=dummy; expires=Tuesday, 01-Jan-1999 12:00:00 GMT; Path=".get_scriptname());
  +      #header("Set-Cookie: MONI_CSS=dummy; expires=Tuesday, 01-Jan-1999 12:00:00 GMT; Path=".get_scriptname());
  +      setcookie('MONI_THEME','dummy',time()-60*60*24*30,get_scriptname());
  +      setcookie('MONI_CSS','dummy',time()-60*60*24*30,get_scriptname());
  +      $options['css_url']='';
  +      $options['theme']='';
       } else {
         # save profile
         $udb=new UserDB($DBInfo);
  @@ -31,7 +36,7 @@
                                  get_scriptname());
           setcookie("MONI_CSS",$options['css_url'],time()+60*60*24*30,
                                  get_scriptname());
  -        $title="Theme is changed";
  +        $title=_("Theme is changed");
           $msg="Goto ".$formatter->link_repl("UserPreferences");
         } else if ($options['save'] and $options['id']!='Anonymous') {
           # save profile
  @@ -70,7 +75,7 @@
   
   function macro_theme($formatter,$value) {
     global $DBInfo;
  -  if ($DBInfo->theme) return "Theme disabled !";
  +  if ($DBInfo->theme_css) return _("Theme disabled !");
     $out="
   <form method='get'>
   <input type='hidden' name='action' value='theme' />
  @@ -84,7 +89,7 @@
         $themes[]= $file;
     }
   
  -  $out.="<option value=''>-- Select --</option>\n";
  +  $out.="<option value=''>"._("-- Select --")."</option>\n";
     foreach ($themes as $item)
        $out.="<option value='$item'>$item</option>\n";
   
  
  
  


wkpark      2006/02/08 17:41:02

  Modified:    .        wiki.php
  Log:
  fixed procedure for theme detection
  
  Revision  Changes    Path
  1.291     +7 -5      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.290
  retrieving revision 1.291
  diff -u -r1.290 -r1.291
  --- wiki.php	3 Feb 2006 08:40:11 -0000	1.290
  +++ wiki.php	8 Feb 2006 08:41:02 -0000	1.291
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.290 2006/02/03 08:40:11 wkpark Exp $
  +// $Id: wiki.php,v 1.291 2006/02/08 08:41:02 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.290 $',1,-1);
  +$_revision = substr('$Revision: 1.291 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -3754,7 +3754,7 @@
   
   # MoniWiki theme
   if ((empty($DBInfo->theme) or isset($_GET['action'])) and isset($_GET['theme'])) $theme=$_GET['theme'];
  -else $theme=$DBInfo->theme;
  +else if ($DBInfo->theme_css) $theme=$DBInfo->theme;
   if ($theme) $options['theme']=$theme;
   
   if ($DBInfo->trail) {
  @@ -3780,10 +3780,12 @@
   } else {
     $options['css_url']=$user->css;
     $options['tz_offset']=$user->tz_offset;
  -  if (!$theme) $options['theme']=$user->theme;
  +  if (!$theme) $options['theme']=$theme=$user->theme;
   }
   
  -if ($DBInfo->theme and $DBInfo->theme_css)
  +if (!$options['theme']) $options['theme']=$theme=$DBInfo->theme;
  +
  +if ($theme and ($DBInfo->theme_css or !$options['css_url']))
     $options['css_url']=$DBInfo->url_prefix."/theme/$theme/css/default.css";
   
   $options['timer']=&$timing;
  
  
  


wkpark      2006/02/25 15:55:15

  Modified:    .        monisetup.php
  Log:
  win32 fix
  
  Revision  Changes    Path
  1.28      +16 -14    moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- monisetup.php	16 Aug 2005 14:29:29 -0000	1.27
  +++ monisetup.php	25 Feb 2006 06:55:15 -0000	1.28
  @@ -1,7 +1,7 @@
   <?php
   // Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.27 2005/08/16 14:29:29 wkpark Exp $
  +// $Id: monisetup.php,v 1.28 2006/02/25 06:55:15 wkpark Exp $
   
   function _stripslashes($str) {
     return get_magic_quotes_gpc() ? stripslashes($str):$str;
  @@ -117,7 +117,7 @@
       $lines=file($configfile);
       $key='';
       foreach ($lines as $line) {
  -      $line=rtrim($line); // for Win32
  +      $line=rtrim($line)."\n"; // for Win32
         if (!$key and $line[0] != '$') continue;
         if ($key) {
           $val.=$line;
  @@ -388,22 +388,23 @@
   <html><head><title>Moni Setup</title>
   <style type="text/css">
   //<!--
  -body {font-family:Tahoma;}
  +body {font-family:Trebuchet MS,Tahoma,sans-serif;}
   h1,h2,h3,h4,h5 {
  -  font-family:Tahoma;
  +  font-family:Tahoma,sans-serif;
   /* background-color:#E07B2A; */
     padding-left:6px;
  -  border-bottom:1px solid #999;
  +  border-bottom:1px solid #bbb;
   }
   table.wiki {
  -/* background-color:#E2ECE5;*/
   /* border-collapse: collapse; */
     border: 0px outset #E2ECE5;
  +  font-family:bitstream vera sans mono,monospace;
   }
   
   pre.console {
     background-color:#000;
     padding: 1em 0.5em 0.5em 1em;
  +  border: 1px inset #eeeeee;
     color:white;
     width:80%;
   }
  @@ -412,11 +413,12 @@
     background-color:#E2ECE2;
   /* border-collapse: collapse; */
     border: 0px inset #E2ECE5;
  +  font-family:bitstream vera sans mono,monospace;
   }
   
   td.option {
  -  font-family:sans-serif;
  -  background-color:#000000;
  +  font-family:bitstream vera sans mono,monospace;
  +  background-color:#2062d0;
     font-weight:bold;
     color: white;
   }
  @@ -576,7 +578,7 @@
     while (list($key,$val) = each($config)) {
       if ($key != "admin_passwd" && $key != "purge_passwd")
       if (!preg_match('/<img /',$val))
  -      $val=str_replace('<','&lt;',$val);
  +      $val=str_replace(array('<',"\n"),array('&lt;',"<br />\n"),$val);
       print "<tr><td class='option'>\$$key</td><td>$val</td></tr>\n";
     }
     print "</table>\n";
  @@ -597,21 +599,21 @@
         else $type="input";
         if ($type=='input') {
           $val=str_replace('"',"&#34;",$val);
  -        print "<td><$type type='text' name='config[$key]' value=\"$val\" size='s40'></td></tr>\n";
  +        print "<td><$type type='text' name='config[$key]' value=\"$val\" size='60'></td></tr>\n";
         } else {
  -        print "<td><$type name='config[$key]' rows='4' cols='40'>".$val."</$type></td></tr>\n";
  +        print "<td><$type name='config[$key]' rows='4' cols='60'>".$val."</$type></td></tr>\n";
         }
       }
     }
   
     if (!$config['admin_passwd']) {
       print "<tr><td><b>\$admin_passwd</b></td>";
  -    print "<td><input type='password' name='newpasswd' size='30'></td></tr>\n";
  +    print "<td><input type='password' name='newpasswd' size='60'></td></tr>\n";
     } else  {
       print "<tr><td><b>Old password</b></td>";
  -    print "<td><input type='password' name='oldpasswd' size='30'></td></tr>\n";
  +    print "<td><input type='password' name='oldpasswd' size='60'></td></tr>\n";
       print "<tr><td><b>New password</b></td>";
  -    print "<td><input type='password' name='newpasswd' size='30'></td></tr>\n";
  +    print "<td><input type='password' name='newpasswd' size='60'></td></tr>\n";
     }
     print "<tr><td colspan=2>";
     print "<input type='submit' value='preview'> ";
  
  
  


wkpark      2006/02/25 15:56:41

  Modified:    css      _base.css _extra.css
  Log:
  IE fix
  
  Revision  Changes    Path
  1.5       +12 -6     moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- _base.css	19 Jan 2006 14:16:15 -0000	1.4
  +++ _base.css	25 Feb 2006 06:56:41 -0000	1.5
  @@ -132,8 +132,10 @@
   }
   
   div.diff-sep {
  -  background-color:#000000;
  -  color:#FFD700; /* gold */
  +  font-family:"Bitstream Vera Sans mono",monospace;
  +  background-color:#e0e0e0;
  +  color:#000000; /* */
  +  padding:2px;
   }
   
   span.diff-added, ins.diff-added {
  @@ -203,7 +205,6 @@
   }
   
   #wikiTrailer, #wikiOrigin {
  -  clear:both;
     padding-left: 20px;
     padding-bottom: 5px;
   }
  @@ -391,9 +392,14 @@
   }
   
   .rc-date {
  - font-size:1.2em;
  +  font-size:1.2em;
   }
   .rc-bookmark {
  - font-size:11px;
  - font-weight:normal;
  +  font-size:11px;
  +  font-weight:normal;
  +}
  +
  +.wikiMarkup {
  +  font-family:Bitstream vera sans mono,Courier New,monospace; 
  +  background-color:#ffff00;
   }
  
  
  
  1.4       +13 -0     moniwiki/css/_extra.css
  
  Index: _extra.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_extra.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- _extra.css	19 Jan 2006 14:15:30 -0000	1.3
  +++ _extra.css	25 Feb 2006 06:56:41 -0000	1.4
  @@ -7,9 +7,15 @@
     margin-right:5px; margin-top:3px;
     visibility:hidden;
   }
  +
   #wikiContent div:hover .sectionEdit {
     visibility:visible;
   }
  +
  +* html div.sectionEdit {
  +  visibility:visible; /* for IE */
  +}
  +
   div.sectionEdit:hover {
     visibility:visible;
   }
  @@ -125,3 +131,10 @@
   .poold { color:#909090; }
   .posym { color:red; }
   .potok { color:violet; }
  +
  +/* bts */
  +.bts-comment {
  +  padding-top: 3px;
  +  padding-left:8px !important;
  +  border-left: 3px solid #d7b7fb;
  +}
  
  
  


wkpark      2006/02/25 15:58:45

  Modified:    theme/azblue/css default.css
  Log:
  small css fixes
  
  Revision  Changes    Path
  1.2       +2 -2      moniwiki/theme/azblue/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/azblue/css/default.css,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- default.css	3 Feb 2006 22:50:49 -0000	1.1
  +++ default.css	25 Feb 2006 06:58:45 -0000	1.2
  @@ -19,7 +19,7 @@
     min-width:750px;
     margin: 0px auto 0px auto;
     width: 750px;
  -  /*\*/ min-width: 750px /* */
  +  /*\*/ min-width: 750px; /* */
   }
   
   div {
  @@ -30,7 +30,7 @@
     padding-left:15px;
     padding-top:2px;
     color:white;
  -  font-family:Tahoma,Verdana,Vera Sans,sans-serif;
  +  font-family:Tahoma,Verdana,sans-serif;
     font-size:11px;
     font-weight:bold;
   }
  
  
  


wkpark      2006/02/25 15:59:12

  Modified:    plugin   FullSearch.php
  Log:
  empty needle fix
  
  Revision  Changes    Path
  1.18      +6 -2      moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- FullSearch.php	18 Jan 2006 15:59:06 -0000	1.17
  +++ FullSearch.php	25 Feb 2006 06:59:12 -0000	1.18
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
   //
  -// $Id: FullSearch.php,v 1.17 2006/01/18 15:59:06 wkpark Exp $
  +// $Id: FullSearch.php,v 1.18 2006/02/25 06:59:12 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
  @@ -116,7 +116,11 @@
   
     $test=@preg_match("/$needle/","",$match);
     $test2=@preg_match("/$excl_needle/","",$match);
  -  if ($test === false or $test2 === false) {
  +  if (!trim($needle)) {
  +     $opts['msg'] = _("Empty expression");
  +     return $form;
  +  }
  +  if (!$needle or $test === false or $test2 === false) {
        $opts['msg'] = sprintf(_("Invalid search expression \"%s\""), $needle);
        return $form;
     }
  
  
  


wkpark      2006/02/25 16:01:02

  Modified:    .        config.php.default
  Log:
  change some default settings: theme,icon etc.
  
  Revision  Changes    Path
  1.27      +6 -6      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- config.php.default	26 Jan 2006 17:30:29 -0000	1.26
  +++ config.php.default	25 Feb 2006 07:01:02 -0000	1.27
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.26 2006/01/26 17:30:29 wkpark Exp $
  +# $Id: config.php.default,v 1.27 2006/02/25 07:01:02 wkpark Exp $
   #
   $sitename='UnnamedWiki';
   $data_dir= './data';
  @@ -25,8 +25,9 @@
   #$smiley='wikismiley';
   $use_counter= 0;
   $use_hostname= 1;
  +#$mask_hostname=1; # hide hostname or ip address
   $edit_rows=16;
  -$iconset= 'moni';
  +$iconset= 'moni2';
   $inline_latex=0;
   #$inline_latex='mimetex';
   $lang='auto';
  @@ -46,7 +47,7 @@
   $pds_allowed="png|jpg|jpeg|gif|mp3|zip|tgz|gz|txt|css|exe|hwp|pdf";
   #$vim_nocheck=1;
   #$vim_options='+"set encoding=UTF-8"';
  -#$nonexists='fancy';
  +$nonexists='fancy';
   #$nonexists='nolink';
   #$nonexists='forcelink';
   #$use_titlecache=0;
  @@ -61,8 +62,8 @@
   #$menu_bra='';
   #$menu_cat='';
   #$path='/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin';
  -#$theme='blog';
  -#$theme_css=1;
  +$theme='azblue';
  +$theme_css=0;
   #$blog_comments=1;
   
   #$date_fmt='Y-m-d';
  @@ -144,7 +145,6 @@
   #$use_textbrowsers=1; # check some textbased browsers
   $use_preview_uploads=1;
   #$use_camelcase=0; # turn off camelcase syntax by default
  -#$mask_hostname=1; # hide hostname or ip address
   #$category_regex=urldecode('%EB%B6%84%EB%A5%98$');
   #$use_backlinks=1; # set default fullsearch behavior as backlinks search
   #$use_smartdiff=1;
  
  
  


wkpark      2006/02/25 16:01:23

  Modified:    .        moni-install.in
  Log:
  copy local/ dir
  
  Revision  Changes    Path
  1.3       +1 -0      moniwiki/moni-install.in
  
  Index: moni-install.in
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/moni-install.in,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- moni-install.in	17 Oct 2004 16:38:02 -0000	1.2
  +++ moni-install.in	25 Feb 2006 07:01:23 -0000	1.3
  @@ -10,6 +10,7 @@
   [ ! -d imgs ] && cp -a $INSTDIR/imgs .
   [ ! -d theme ] && cp -a $INSTDIR/theme .
   [ ! -d css ] && cp -a $INSTDIR/css .
  +[ ! -d local ] && cp -a $INSTDIR/css .
   [ ! -d applets ] && cp -a $INSTDIR/applets .
   cp $INSTDIR/{monisetup.*,secure.sh,config.php.default} .
   
  
  
  


wkpark      2006/02/25 16:16:37

  Modified:    locale   Makefile
  Log:
  update
  
  Revision  Changes    Path
  1.7       +1 -9      moniwiki/locale/Makefile
  
  Index: Makefile
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/Makefile,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- Makefile	10 Jan 2006 11:39:39 -0000	1.6
  +++ Makefile	25 Feb 2006 07:16:37 -0000	1.7
  @@ -1,4 +1,4 @@
  -# $Id: Makefile,v 1.6 2006/01/10 11:39:39 wkpark Exp $
  +# $Id: Makefile,v 1.7 2006/02/25 07:16:37 wkpark Exp $
   #
   # locale/Makefile
   #
  @@ -55,7 +55,6 @@
   ${POT_FILE}: ../plugin/Anchor.php
   ${POT_FILE}: ../plugin/Attachment.php
   ${POT_FILE}: ../plugin/BabelFish.php
  -${POT_FILE}: ../plugin/Baduk.php
   ${POT_FILE}: ../plugin/Bar.php
   ${POT_FILE}: ../plugin/Blog.php
   ${POT_FILE}: ../plugin/BlogArchives.php
  @@ -79,12 +78,10 @@
   ${POT_FILE}: ../plugin/GetText.php
   ${POT_FILE}: ../plugin/ISBN.php
   ${POT_FILE}: ../plugin/Icon.php
  -${POT_FILE}: ../plugin/ImportTable.php
   ${POT_FILE}: ../plugin/ImportUrl.php
   ${POT_FILE}: ../plugin/Include.php
   ${POT_FILE}: ../plugin/Info.php
   ${POT_FILE}: ../plugin/JME.php
  -${POT_FILE}: ../plugin/KeywordView.php
   ${POT_FILE}: ../plugin/Keywords.php
   ${POT_FILE}: ../plugin/LikePages.php
   ${POT_FILE}: ../plugin/LineHeight.php
  @@ -118,7 +115,6 @@
   ${POT_FILE}: ../plugin/WordIndex.php
   ${POT_FILE}: ../plugin/autogoto.php
   ${POT_FILE}: ../plugin/backup.php
  -${POT_FILE}: ../plugin/blog2.php
   ${POT_FILE}: ../plugin/blogrss.php
   ${POT_FILE}: ../plugin/bookmark.php
   ${POT_FILE}: ../plugin/chat.php
  @@ -130,7 +126,6 @@
   ${POT_FILE}: ../plugin/filter/abbr.php
   ${POT_FILE}: ../plugin/filter/antispam.php
   ${POT_FILE}: ../plugin/filter/cite.php
  -${POT_FILE}: ../plugin/filter/indexer.php
   ${POT_FILE}: ../plugin/filter/sample.php
   ${POT_FILE}: ../plugin/fixmoin.php
   ${POT_FILE}: ../plugin/foaf.php
  @@ -148,7 +143,6 @@
   ${POT_FILE}: ../plugin/print.php
   ${POT_FILE}: ../plugin/processor/abc.php
   ${POT_FILE}: ../plugin/processor/asciimathml.php
  -${POT_FILE}: ../plugin/processor/baduk.php
   ${POT_FILE}: ../plugin/processor/blog.php
   ${POT_FILE}: ../plugin/processor/chat.php
   ${POT_FILE}: ../plugin/processor/diff.php
  @@ -172,7 +166,6 @@
   ${POT_FILE}: ../plugin/processor/pre.php
   ${POT_FILE}: ../plugin/processor/python.php
   ${POT_FILE}: ../plugin/processor/randomquote.php
  -${POT_FILE}: ../plugin/processor/syntax.php
   ${POT_FILE}: ../plugin/processor/text_xml.php
   ${POT_FILE}: ../plugin/processor/vim.php
   ${POT_FILE}: ../plugin/processor/xslt.php
  @@ -187,7 +180,6 @@
   ${POT_FILE}: ../plugin/rss_blog.php
   ${POT_FILE}: ../plugin/rss_rc.php
   ${POT_FILE}: ../plugin/scrap.php
  -${POT_FILE}: ../plugin/searchdb.php
   ${POT_FILE}: ../plugin/security/community.php
   ${POT_FILE}: ../plugin/security/desktop.php
   ${POT_FILE}: ../plugin/security/htaccesslogin.php
  
  
  


wkpark      2006/02/25 16:16:37

  Modified:    locale/po fr.po ko.po moniwiki.pot
  Log:
  update
  
  Revision  Changes    Path
  1.15      +371 -282  moniwiki/locale/po/fr.po
  
  Index: fr.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/fr.po,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- fr.po	10 Jan 2006 11:39:39 -0000	1.14
  +++ fr.po	25 Feb 2006 07:16:37 -0000	1.15
  @@ -3,7 +3,7 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1\n"
  -"POT-Creation-Date: 2006-01-10 19:47+0900\n"
  +"POT-Creation-Date: 2006-02-25 16:17+0900\n"
   "PO-Revision-Date: 2003-08-17 22:51+0900\n"
   "Last-Translator: Serge Stinckwich <Serge.Stinckwich@info.unicaen.fr>\n"
   "Language-Team: fr <fr@li.org>\n"
  @@ -33,73 +33,71 @@
   msgid "Translate %s to %s"
   msgstr "Translate %s en %s"
   
  -#: ../plugin/Blog.php:86 ../plugin/blog2.php:87
  +#: ../plugin/Blog.php:85
   #, c-format
   msgid "Blog cache of \"%s\" is refreshed"
   msgstr ""
   
   # ../plugin/Blog.php:78
  -#: ../plugin/Blog.php:110 ../plugin/blog2.php:111
  +#: ../plugin/Blog.php:109
   #, c-format
   msgid "\"%s\" is updated"
   msgstr "\"%s\" est mis  jour"
   
   # ../plugin/Blog.php:83
  -#: ../plugin/Blog.php:115 ../plugin/blog2.php:116
  +#: ../plugin/Blog.php:114
   msgid "Add Blog"
   msgstr "Ajouter un blog"
   
   # ../plugin/sendping.php:55
  -#: ../plugin/Blog.php:155 ../plugin/blog2.php:156
  +#: ../plugin/Blog.php:154
   msgid "Error: No blog entry found!"
   msgstr ""
   
  -#: ../plugin/Blog.php:163 ../plugin/Comment.php:135 ../plugin/blog2.php:164
  +#: ../plugin/Blog.php:162 ../plugin/Comment.php:144
   msgid "Error: Don't make a clone!"
   msgstr ""
   
   # ../plugin/Blog.php:137
  -#: ../plugin/Blog.php:180 ../plugin/blog2.php:181
  +#: ../plugin/Blog.php:179
   #, c-format
   msgid "Comment added to \"%s\""
   msgstr "Commentaire ajout  \"%s\""
   
   # ../plugin/Blog.php:140
  -#: ../plugin/Blog.php:183 ../plugin/blog2.php:184
  +#: ../plugin/Blog.php:182
   #, c-format
   msgid "Blog entry added to \"%s\""
   msgstr "Entre de blog ajout  \"%s\""
   
   # ../plugin/Blog.php:176
  -#: ../plugin/Blog.php:220 ../plugin/blog2.php:221
  +#: ../plugin/Blog.php:219
   #, c-format
   msgid "Add Comment to \"%s\""
   msgstr "Ajouter un commentaire  \"%s\""
   
   # ../plugin/Blog.php:178
  -#: ../plugin/Blog.php:222 ../plugin/blog2.php:223
  +#: ../plugin/Blog.php:221
   #, c-format
   msgid "Add Blog entry to \"%s\""
   msgstr "Ajouter une entre de blog  \"%s\""
   
  -#: ../plugin/Blog.php:236 ../plugin/Blog.php:292 ../plugin/Comment.php:50
  -#: ../plugin/blog2.php:237 ../plugin/blog2.php:293
  +#: ../plugin/Blog.php:235 ../plugin/Blog.php:290
   msgid "Name"
   msgstr ""
   
   # ../wiki.php:2950
  -#: ../plugin/Blog.php:240 ../plugin/Blog.php:293 ../plugin/blog2.php:241
  -#: ../plugin/blog2.php:294
  +#: ../plugin/Blog.php:239 ../plugin/Blog.php:291
   msgid "Title"
   msgstr "titre"
   
   # ../plugin/Blog.php:197
  -#: ../plugin/Blog.php:246 ../plugin/Comment.php:52 ../plugin/blog2.php:247
  +#: ../plugin/Blog.php:245 ../plugin/Comment.php:60
   msgid "Don't add a signature"
   msgstr "Ne pas ajouter de signature"
   
   # ../plugin/Blog.php:210
  -#: ../plugin/Blog.php:259 ../plugin/blog2.php:260
  +#: ../plugin/Blog.php:258
   msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
   msgstr "<b>Une rgle horizontale</b> ---- ne s'applique pas au mode blog."
   
  @@ -137,8 +135,8 @@
   msgstr "%d commentaires"
   
   # ../plugin/processor/blog.php:70
  -#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:124
  -#: ../plugin/ImportTable.php:76 ../plugin/processor/blog.php:78
  +#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:133
  +#: ../plugin/processor/blog.php:78
   msgid "Add comment"
   msgstr "Ajouter un commentaire"
   
  @@ -179,89 +177,94 @@
   msgid "Cut & Paste a Clipboard Image"
   msgstr ""
   
  +# ../plugin/rename.php:27
  +#: ../plugin/Comment.php:58
  +msgid "Username"
  +msgstr ""
  +
   # ../plugin/processor/blog.php:78
  -#: ../plugin/Comment.php:53
  +#: ../plugin/Comment.php:61
   msgid "Comment"
   msgstr "commentaire"
   
   # ../wikilib.php:482
  -#: ../plugin/Comment.php:54 ../plugin/ImportTable.php:67 ../wikilib.php:747
  +#: ../plugin/Comment.php:62 ../wikilib.php:771
   msgid "Preview"
   msgstr "Prvisualisation"
   
   # ../wikilib.php:814
  -#: ../plugin/Comment.php:74
  +#: ../plugin/Comment.php:81
   msgid "Page is not writable"
   msgstr ""
   
   # ../wiki.php:3009
  -#: ../plugin/Comment.php:78
  +#: ../plugin/Comment.php:85
   msgid "You are not allowed to add a comment."
   msgstr ""
   
   # ../plugin/restore.php:27
  -#: ../plugin/Comment.php:79 ../plugin/Keywords.php:256
  +#: ../plugin/Comment.php:86 ../plugin/Keywords.php:292
   msgid "Page does not exists"
   msgstr ""
   
  -#: ../plugin/Comment.php:110 ../wikilib.php:1144 ../wikilib.php:1288
  +#: ../plugin/Comment.php:119 ../wikilib.php:1179 ../wikilib.php:1323
   msgid ""
   "Sorry, can not save page because some messages are blocked in this wiki."
   msgstr ""
   
   # ../wikilib.php:748 ../wikilib.php:777
  -#: ../plugin/Comment.php:115
  +#: ../plugin/Comment.php:124
   msgid "Preview comment"
   msgstr ""
   
   # ../plugin/Vote.php:109
  -#: ../plugin/Comment.php:165
  +#: ../plugin/Comment.php:191
   #, c-format
   msgid "%s is commented successfully"
   msgstr "Vote russi"
   
   # ../plugin/Vote.php:109
  -#: ../plugin/Comment.php:166
  +#: ../plugin/Comment.php:192
   msgid "Comment added successfully"
   msgstr ""
   
  -# ../wiki.php:2338 ../wiki.php:2373 ../wikilib.php:770
  -#: ../plugin/Diff.php:151 ../plugin/Diff.php:190 ../wikilib.php:1275
  -msgid "No difference found"
  -msgstr "Aucune diffrence trouv"
  -
  -# ../wiki.php:2341
  -#: ../plugin/Diff.php:153
  -msgid "Difference between yours and the current"
  -msgstr "Diffrence entre votre version et la courante"
  -
   # ../wiki.php:2211 ../wiki.php:2360
  -#: ../plugin/Diff.php:174 ../plugin/Info.php:145
  +#: ../plugin/Diff.php:177 ../plugin/Info.php:188
   msgid "No older revisions available"
   msgstr "Aucune rvision plus ancienne disponible"
   
   # ../wikilib.php:803
  -#: ../plugin/Diff.php:179 ../plugin/Info.php:151
  +#: ../plugin/Diff.php:182 ../plugin/Info.php:194
   msgid "Version info is not available in this wiki"
   msgstr ""
   
  +# ../wiki.php:2338 ../wiki.php:2373 ../wikilib.php:770
  +#: ../plugin/Diff.php:193 ../wikilib.php:1310
  +msgid "No difference found"
  +msgstr "Aucune diffrence trouv"
  +
   # ../wiki.php:2376
  -#: ../plugin/Diff.php:192
  +#: ../plugin/Diff.php:195
   msgid "Difference between versions"
   msgstr "Diffrence entre les versions"
   
   # ../wiki.php:2378
  -#: ../plugin/Diff.php:194
  +#: ../plugin/Diff.php:197 ../plugin/Diff.php:320
   #, c-format
   msgid "Difference between r%s and r%s"
   msgstr "Diffrence entre r%s et r%s"
   
   # ../wiki.php:2382
  -#: ../plugin/Diff.php:197
  +#: ../plugin/Diff.php:200 ../plugin/Diff.php:322
   #, c-format
   msgid "Difference between r%s and the current"
   msgstr "Diffrence entre r%s et la version courante"
   
  +# ../locale/dummy.php:7
  +#: ../plugin/Diff.php:324
  +msgid "latest changes"
  +msgstr ""
  +
   # ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
   #: ../plugin/Draw.php:29 ../plugin/OeKaki.php:36
   msgid "Draw new picture"
  @@ -300,63 +303,65 @@
   msgid "%d day(s) passed from %s."
   msgstr "%d jour(s) se sont passs depuis %s."
   
  +#: ../plugin/FastSearch.php:44 ../plugin/FullSearch.php:77
  +msgid "No search text"
  +msgstr ""
  +
  +#: ../plugin/FastSearch.php:50
  +msgid "Couldn't open search database, sorry."
  +msgstr ""
  +
   # ../plugin/FastSearch.php:116
  -#: ../plugin/FastSearch.php:114 ../plugin/FullSearch.php:18
  +#: ../plugin/FastSearch.php:114 ../plugin/FullSearch.php:19
   #, c-format
   msgid "Full text search for \"%s\""
   msgstr "Recherche en texte intgral pour \"%s\""
   
   # ../plugin/FastSearch.php:125
  -#: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:28
  +#: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:35
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr "Trouv %s s'appariant avec %s sur un total de %s pages"
   
  +#: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:37
  +msgid "page"
  +msgstr ""
  +
  +#: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:37
  +msgid "pages"
  +msgstr ""
  +
   # ../wikilib.php:1479
  -#: ../plugin/FullSearch.php:14
  +#: ../plugin/FullSearch.php:15
   #, c-format
   msgid "BackLinks search for \"%s\""
   msgstr ""
   
   # ../wikilib.php:1479
  -#: ../plugin/FullSearch.php:16
  +#: ../plugin/FullSearch.php:17
   #, c-format
   msgid "KeyWords search for \"%s\""
   msgstr ""
   
  -#: ../plugin/FullSearch.php:30
  -msgid "page"
  +#: ../plugin/FullSearch.php:40
  +msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:30
  -msgid "pages"
  -msgstr ""
  -
  -#: ../plugin/FullSearch.php:33
  -msgid "Context search."
  -msgstr ""
  -
  -# ../plugin/minilogin.php:30
  -#: ../plugin/FullSearch.php:34
  -#, c-format
  -msgid " or %s"
  -msgstr " ou %s"
  -
  -#: ../plugin/FullSearch.php:36
  +#: ../plugin/FullSearch.php:43
   msgid "Refresh"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:37
  +#: ../plugin/FullSearch.php:44
   #, c-format
   msgid " (%s search results)"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:70
  -msgid "No search text"
  +#: ../plugin/FullSearch.php:120
  +msgid "Empty expression"
   msgstr ""
   
   # ../wikilib.php:1483
  -#: ../plugin/FullSearch.php:113 ../wikilib.php:2369
  +#: ../plugin/FullSearch.php:124 ../wikilib.php:2410
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "Expression de recherche \"%s\" invalide"
  @@ -372,8 +377,8 @@
   msgstr ""
   
   # ../wikilib.php:769
  -#: ../plugin/Gallery.php:309 ../plugin/Gallery.php:312 ../wikilib.php:1131
  -#: ../wikilib.php:1274
  +#: ../plugin/Gallery.php:309 ../plugin/Gallery.php:312 ../wikilib.php:1166
  +#: ../wikilib.php:1309
   #, c-format
   msgid "Go back or return to %s"
   msgstr "Revenir en arrire ou retourner  %s"
  @@ -387,25 +392,40 @@
   msgid "Comments is added"
   msgstr ""
   
  -#: ../plugin/ImportTable.php:32
  -msgid "Convert"
  -msgstr ""
  -
  -#: ../plugin/ImportUrl.php:105
  +#: ../plugin/ImportUrl.php:111
   msgid "Import URL"
   msgstr ""
   
   # ../wiki.php:2110
  -#: ../plugin/Info.php:22
  +#: ../plugin/Info.php:28
   msgid "Revision History"
   msgstr "Historique de rvision"
   
  -#: ../plugin/Info.php:44
  +#: ../plugin/Info.php:51
   msgid "Show all revisions"
   msgstr ""
   
  +#: ../plugin/Info.php:77
  +msgid "Yesterday"
  +msgstr ""
  +
  +#: ../plugin/Info.php:78
  +#, c-format
  +msgid "%s days ago"
  +msgstr ""
  +
  +#: ../plugin/Info.php:80
  +#, c-format
  +msgid "%s hours ago"
  +msgstr ""
  +
  +#: ../plugin/Info.php:82
  +#, c-format
  +msgid "%s min ago"
  +msgstr ""
  +
   # ../wikilib.php:507
  -#: ../plugin/Info.php:161
  +#: ../plugin/Info.php:204
   #, c-format
   msgid "Info. for %s"
   msgstr "Information sur %s"
  @@ -433,89 +453,74 @@
   msgid "Edit new molecule"
   msgstr ""
   
  -#: ../plugin/KeywordView.php:16 ../plugin/Tour.php:16
  -#, c-format
  -msgid "Tour from %s"
  -msgstr ""
  -
  -#: ../plugin/KeywordView.php:66 ../plugin/Tour.php:68
  -msgid "links"
  -msgstr ""
  -
  -# ../plugin/VisualTour.php:59
  -#: ../plugin/KeywordView.php:68 ../plugin/Tour.php:70
  -msgid "deeper"
  -msgstr ""
  -
  -# ../plugin/minilogin.php:30
  -#: ../plugin/KeywordView.php:69 ../plugin/Tour.php:71
  -#, c-format
  -msgid "More %s or more %s"
  -msgstr ""
  -
  -#: ../plugin/KeywordView.php:74 ../plugin/Tour.php:77
  -#, c-format
  -msgid "Total %d related pages"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:221
  +#: ../plugin/Keywords.php:255
   msgid "hits"
   msgstr ""
   
  -#: ../plugin/Keywords.php:225
  +#: ../plugin/Keywords.php:259
   msgid "add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:228
  +#: ../plugin/Keywords.php:262
   msgid "Update keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:230
  +#: ../plugin/Keywords.php:264
   msgid "Add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:231
  +#: ../plugin/Keywords.php:265
   msgid "Add as common words"
   msgstr ""
   
  -#: ../plugin/Keywords.php:232
  +#: ../plugin/Keywords.php:266
   msgid "Unselect all"
   msgstr ""
   
  +#: ../plugin/Keywords.php:267
  +msgid "Suggest new Keywords"
  +msgstr ""
  +
   # ../wiki.php:3009
  -#: ../plugin/Keywords.php:255
  +#: ../plugin/Keywords.php:291
   msgid "You are not able to add keywords."
   msgstr ""
   
  -#: ../plugin/Keywords.php:319
  +# ../wikilib.php:814
  +#: ../plugin/Keywords.php:300
  +#, c-format
  +msgid "%s is not found."
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:404
   msgid "Common words are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:354
  +#: ../plugin/Keywords.php:451
   #, c-format
   msgid "Keywords for %s are updated"
   msgstr ""
   
   # ../plugin/quicklinks.php:38
  -#: ../plugin/Keywords.php:379
  +#: ../plugin/Keywords.php:477
   msgid "Keywords are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:381
  +#: ../plugin/Keywords.php:479
   msgid "There are no changes found"
   msgstr ""
   
  -#: ../plugin/Keywords.php:393
  +#: ../plugin/Keywords.php:492
   msgid "Update with these Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:406
  +#: ../plugin/Keywords.php:505
   #, c-format
   msgid "Select keywords for %s"
   msgstr ""
   
   # ../wikilib.php:672 ../wikilib.php:1472
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1023 ../wikilib.php:2358
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1058 ../wikilib.php:2399
   msgid "Use more specific text"
   msgstr "Utiliser un texte plus spcifique"
   
  @@ -628,6 +633,56 @@
   msgid "PHP Version"
   msgstr ""
   
  +#: ../plugin/Tour.php:16
  +#, c-format
  +msgid "Tour from %s"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:56
  +msgid "BackLinks"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:60
  +msgid "Keywords"
  +msgstr ""
  +
  +# ../plugin/minilogin.php:30
  +#: ../plugin/Tour.php:68
  +#, c-format
  +msgid " from %s"
  +msgstr ""
  +
  +# ../plugin/minilogin.php:30
  +#: ../plugin/Tour.php:71
  +#, c-format
  +msgid "%s Tour %s"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:112
  +msgid "links"
  +msgstr ""
  +
  +# ../plugin/VisualTour.php:59
  +#: ../plugin/Tour.php:114
  +msgid "deeper"
  +msgstr ""
  +
  +# ../plugin/minilogin.php:30
  +#: ../plugin/Tour.php:115
  +#, c-format
  +msgid "More %s or more %s"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:123
  +#, c-format
  +msgid "Total %d related keywords"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:126
  +#, c-format
  +msgid "Total %d related pages"
  +msgstr ""
  +
   # ../plugin/TwinPages.php:13
   #: ../plugin/TwinPages.php:13
   #, c-format
  @@ -635,7 +690,7 @@
   msgstr "TwinPages de %s"
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../plugin/TwinPages.php:19 ../wiki.php:3760
  +#: ../plugin/TwinPages.php:19 ../wiki.php:3910
   msgid "See [TwinPages]: "
   msgstr "Voir [TwinPages]: "
   
  @@ -675,13 +730,13 @@
   msgstr ""
   
   # ../plugin/rename.php:36
  -#: ../plugin/UploadedFiles.php:278 ../plugin/rename.php:77 ../wikilib.php:882
  -#: ../wikilib.php:1674
  +#: ../plugin/UploadedFiles.php:278 ../plugin/rename.php:77 ../wikilib.php:908
  +#: ../wikilib.php:1726
   msgid "Password"
   msgstr "Mot de passe"
   
   # ../wikilib.php:550
  -#: ../plugin/UploadedFiles.php:279 ../wikilib.php:860
  +#: ../plugin/UploadedFiles.php:279 ../wikilib.php:886
   msgid "Delete selected files"
   msgstr "Effacer les fichiers slectionns"
   
  @@ -717,7 +772,7 @@
   msgid "Voted successfully"
   msgstr "Vote russi"
   
  -#: ../plugin/WordIndex.php:65 ../wikilib.php:2111
  +#: ../plugin/WordIndex.php:66 ../wikilib.php:2152
   msgid "Others"
   msgstr ""
   
  @@ -751,33 +806,37 @@
   msgid "Back to UserPreferences"
   msgstr "Retour  UserPreferences"
   
  +#: ../plugin/css.php:63
  +msgid "CSS disabled !"
  +msgstr ""
  +
   # ../plugin/format.php:16
   #: ../plugin/format.php:15
   msgid "It is a XML format !"
   msgstr "C'est un format XML !"
   
   # ../plugin/login.php:24
  -#: ../plugin/login.php:24
  +#: ../plugin/login.php:33
   msgid "Login:"
   msgstr "Identifiant de connection :"
   
   # ../plugin/login.php:25
  -#: ../plugin/login.php:25
  +#: ../plugin/login.php:34
   msgid "Password:"
   msgstr "Mot de passe :"
   
   # ../plugin/login.php:27
  -#: ../plugin/login.php:26
  +#: ../plugin/login.php:35
   msgid "Join"
   msgstr "Se joindre "
   
   # ../plugin/login.php:41 ../plugin/minilogin.php:29
  -#: ../plugin/login.php:42 ../plugin/minilogin.php:29
  +#: ../plugin/login.php:51 ../plugin/minilogin.php:29
   msgid "Logout"
   msgstr "Se dconnecter"
   
   # ../locale/dummy.php:3 ../plugin/login.php:42 ../plugin/minilogin.php:28
  -#: ../plugin/login.php:43 ../plugin/minilogin.php:28 ../locale/dummy.php:3
  +#: ../plugin/login.php:52 ../plugin/minilogin.php:28 ../locale/dummy.php:3
   msgid "UserPreferences"
   msgstr "PrfrencesUtilisateur"
   
  @@ -792,7 +851,7 @@
   msgstr "Aucune page de manuel trouv"
   
   # ../plugin/minilogin.php:22 ../wikilib.php:1076
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1724
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1776
   msgid "Login or Join"
   msgstr "Se connecter ou se joindre "
   
  @@ -830,7 +889,7 @@
   msgid "last modified %s %s"
   msgstr ""
   
  -#: ../plugin/processor/vim.php:47
  +#: ../plugin/processor/vim.php:49
   msgid "Toggle line numbers"
   msgstr ""
   
  @@ -902,13 +961,13 @@
   msgstr ""
   
   # ../locale/dummy.php:7
  -#: ../plugin/rdf_blog.php:31 ../plugin/rss_blog.php:26
  +#: ../plugin/rdf_blog.php:31 ../plugin/rss_blog.php:25
   msgid "Blog Changes"
   msgstr "ModificationsBlog"
   
   # ../locale/dummy.php:7
   # c-format
  -#: ../plugin/rdf_blog.php:45 ../plugin/rss_blog.php:104
  +#: ../plugin/rdf_blog.php:45 ../plugin/rss_blog.php:103
   #, c-format
   msgid "BlogChanges at %s"
   msgstr "ModificationsBlog at %s"
  @@ -967,7 +1026,7 @@
   msgstr "Seulement le WikiMaster peut renommer cette page"
   
   # ../plugin/rename.php:39 ../wikilib.php:588
  -#: ../plugin/rename.php:79 ../wikilib.php:920
  +#: ../plugin/rename.php:79 ../wikilib.php:946
   msgid "with revision history"
   msgstr "avec l'historique de rvision"
   
  @@ -1065,12 +1124,12 @@
   msgstr "Erreur : entre non trouv !"
   
   # ../plugin/sendping.php:73
  -#: ../plugin/sendping.php:72
  +#: ../plugin/sendping.php:71
   msgid "Send TrackBack ping"
   msgstr "Envoy un ping de TrackBack"
   
   # ../plugin/sendping.php:158
  -#: ../plugin/sendping.php:166
  +#: ../plugin/sendping.php:165
   msgid "Trackback sent"
   msgstr "Trackback envoy"
   
  @@ -1114,15 +1173,28 @@
   msgstr "Voulez vous abonner  \"%s\" ?"
   
   # ../plugin/theme.php:24
  -#: ../plugin/theme.php:23
  +#: ../plugin/theme.php:28
   msgid "Theme cleared. Goto UserPreferences."
   msgstr "Thme effac. Allez  UserPreferences."
   
  +#: ../plugin/theme.php:39
  +msgid "Theme is changed"
  +msgstr ""
  +
   # ../plugin/theme.php:64
  -#: ../plugin/theme.php:63
  +#: ../plugin/theme.php:68
   msgid "Please select a theme properly."
   msgstr "Merci de slectionner un thme de manire satisfaisante"
   
  +#: ../plugin/theme.php:78
  +msgid "Theme disabled !"
  +msgstr ""
  +
  +# ../wikilib.php:476
  +#: ../plugin/theme.php:92
  +msgid "-- Select --"
  +msgstr ""
  +
   #: ../plugin/ticket.php:75
   msgid "Invalid use of ticket"
   msgstr ""
  @@ -1187,174 +1259,174 @@
   msgid "ID does not exists !"
   msgstr "Erreur : l'archive n'existe pas"
   
  -#: ../plugin/userform.php:87 ../plugin/userform.php:267
  +#: ../plugin/userform.php:86 ../plugin/userform.php:266
   #, c-format
   msgid "Successfully login as '%s'"
   msgstr ""
   
   # ../wiki.php:3024
  -#: ../plugin/userform.php:93 ../plugin/userform.php:272
  -#: ../plugin/userform.php:315
  +#: ../plugin/userform.php:92 ../plugin/userform.php:271
  +#: ../plugin/userform.php:314
   msgid "Invalid password !"
   msgstr "Merci d'entrer un mot de passe valide"
   
  -#: ../plugin/userform.php:97
  +#: ../plugin/userform.php:96
   #, c-format
   msgid "\"%s\" does not exists on this wiki !"
   msgstr ""
   
  -#: ../plugin/userform.php:99
  +#: ../plugin/userform.php:98
   msgid "Make new ID on this wiki"
   msgstr ""
   
   # ../wikilib.php:575
  -#: ../plugin/userform.php:105
  +#: ../plugin/userform.php:104
   msgid "Cookie deleted !"
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../plugin/userform.php:107 ../wikilib.php:1781
  +#: ../plugin/userform.php:106 ../wikilib.php:1833
   msgid "E-mail new password"
   msgstr ""
   
  -#: ../plugin/userform.php:118 ../plugin/userform.php:181
  -#: ../plugin/userform.php:204
  +#: ../plugin/userform.php:117 ../plugin/userform.php:180
  +#: ../plugin/userform.php:203
   msgid "Invalid ticket !"
   msgstr ""
   
  -#: ../plugin/userform.php:120 ../plugin/userform.php:206
  +#: ../plugin/userform.php:119 ../plugin/userform.php:205
   msgid "You need a ticket !"
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../plugin/userform.php:152
  +#: ../plugin/userform.php:151
   msgid "New password confirmation"
   msgstr ""
   
   # ../wiki.php:3024
  -#: ../plugin/userform.php:157
  +#: ../plugin/userform.php:156
   msgid "Please confirm your new password"
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../plugin/userform.php:159
  +#: ../plugin/userform.php:158
   #, c-format
   msgid "Your new password is %s"
   msgstr ""
   
  -#: ../plugin/userform.php:160 ../plugin/userform.php:259
  +#: ../plugin/userform.php:159 ../plugin/userform.php:258
   msgid "Please change your password later"
   msgstr ""
   
  -#: ../plugin/userform.php:164 ../plugin/userform.php:172
  +#: ../plugin/userform.php:163 ../plugin/userform.php:171
   msgid "Fail to e-mail notification !"
   msgstr ""
   
  -#: ../plugin/userform.php:167
  +#: ../plugin/userform.php:166
   msgid "New password is sent to your e-mail !"
   msgstr ""
   
   # ../plugin/subscribe.php:22
  -#: ../plugin/userform.php:168
  +#: ../plugin/userform.php:167
   msgid "Please check your e-mail"
   msgstr ""
   
  -#: ../plugin/userform.php:173
  +#: ../plugin/userform.php:172
   msgid "E-mail mismatch !"
   msgstr ""
   
  -#: ../plugin/userform.php:175
  +#: ../plugin/userform.php:174
   msgid "Invalid request"
   msgstr ""
   
   # ../plugin/subscribe.php:22
  -#: ../plugin/userform.php:176
  +#: ../plugin/userform.php:175
   msgid "Please confirm your e-mail address first !"
   msgstr ""
   
  -#: ../plugin/userform.php:183
  +#: ../plugin/userform.php:182
   msgid "ID and e-mail mismatch !"
   msgstr ""
   
   # ../plugin/subscribe.php:22
  -#: ../plugin/userform.php:185
  +#: ../plugin/userform.php:184
   msgid "Please try again or make a new profile"
   msgstr ""
   
  -#: ../plugin/userform.php:225 ../plugin/userform.php:303
  +#: ../plugin/userform.php:224 ../plugin/userform.php:302
   msgid "too short password!"
   msgstr ""
   
  -#: ../plugin/userform.php:226
  +#: ../plugin/userform.php:225
   msgid "mismatch password!"
   msgstr ""
   
  -#: ../plugin/userform.php:227 ../plugin/userform.php:307
  +#: ../plugin/userform.php:226 ../plugin/userform.php:306
   msgid "not acceptable character found in the password!"
   msgstr ""
   
  -#: ../plugin/userform.php:230
  +#: ../plugin/userform.php:229
   msgid "Your password is too simple to use as a password !"
   msgstr ""
   
   # ../plugin/subscribe.php:22
  -#: ../plugin/userform.php:236 ../plugin/userform.php:338
  +#: ../plugin/userform.php:235 ../plugin/userform.php:337
   msgid "Your email address is not valid"
   msgstr "Merci de rentrer d'abord votre adresse de messagerie"
   
  -#: ../plugin/userform.php:240
  +#: ../plugin/userform.php:239
   msgid "Successfully added!"
   msgstr ""
   
  -#: ../plugin/userform.php:246
  +#: ../plugin/userform.php:245
   #, c-format
   msgid "Successfully added as '%s'"
   msgstr ""
   
  -#: ../plugin/userform.php:247
  +#: ../plugin/userform.php:246
   msgid "Please check your mailbox"
   msgstr ""
   
  -#: ../plugin/userform.php:254 ../plugin/userform.php:332
  +#: ../plugin/userform.php:253 ../plugin/userform.php:331
   msgid "E-mail confirmation"
   msgstr ""
   
   # ../plugin/subscribe.php:22
  -#: ../plugin/userform.php:256 ../plugin/userform.php:334
  +#: ../plugin/userform.php:255 ../plugin/userform.php:333
   msgid "Please confirm your email address"
   msgstr ""
   
  -#: ../plugin/userform.php:258
  +#: ../plugin/userform.php:257
   #, c-format
   msgid "Your initial password is %s"
   msgstr ""
   
  -#: ../plugin/userform.php:262 ../plugin/userform.php:336
  +#: ../plugin/userform.php:261 ../plugin/userform.php:335
   msgid "E-mail confirmation mail sent"
   msgstr ""
   
  -#: ../plugin/userform.php:277
  +#: ../plugin/userform.php:276
   msgid "Invalid username !"
   msgstr ""
   
  -#: ../plugin/userform.php:305
  +#: ../plugin/userform.php:304
   msgid "mismatch password !"
   msgstr ""
   
  -#: ../plugin/userform.php:308 ../plugin/userform.php:316
  +#: ../plugin/userform.php:307 ../plugin/userform.php:315
   msgid "Password is not changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:310
  +#: ../plugin/userform.php:309
   msgid "Password is changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:312
  +#: ../plugin/userform.php:311
   msgid "Password is too simple to use as a password !"
   msgstr ""
   
   # ../wikilib.php:887
  -#: ../plugin/userform.php:344
  +#: ../plugin/userform.php:343
   msgid "Profiles are saved successfully !"
   msgstr ""
   
  @@ -1370,85 +1442,93 @@
   msgstr ""
   
   # ../wiki.php:850
  -#: ../wiki.php:1087
  +#: ../wiki.php:1107
   #, c-format
   msgid "Rename %s to %s"
   msgstr "Renommer %s en %s"
   
   # ../wikilib.php:803
  -#: ../wiki.php:1380
  +#: ../wiki.php:1408
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
   # ../plugin/restore.php:27
  -#: ../wiki.php:1391
  +#: ../wiki.php:1418
   msgid "File does not exists"
   msgstr ""
   
   # ../wikilib.php:521
  -#: ../wiki.php:2274
  +#: ../wiki.php:2360
   msgid "Invalid ajax action."
   msgstr ""
   
   # ../wiki.php:1824
  -#: ../wiki.php:2503
  +#: ../wiki.php:2589
   #, c-format
   msgid "See %s"
   msgstr "Voir %s"
   
   # ../wiki.php:1824
  -#: ../wiki.php:2503
  +#: ../wiki.php:2589
   msgid "TwinPages"
   msgstr ""
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../wiki.php:2508
  +#: ../wiki.php:2594
   msgid "See [TwinPages]:"
   msgstr "Voir [TwinPages]: "
   
  +#: ../wiki.php:2899
  +msgid "edit"
  +msgstr ""
  +
  +#: ../wiki.php:3052
  +msgid "Sister Sites Index"
  +msgstr ""
  +
   # ../locale/dummy.php:6 ../wiki.php:2553
  -#: ../wiki.php:3193 ../locale/dummy.php:6
  +#: ../wiki.php:3336 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "ditionTexte"
   
   # ../wiki.php:2555
  -#: ../wiki.php:3195
  +#: ../wiki.php:3338
   msgid "NotEditable"
   msgstr "Pasditable"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wiki.php:3197 ../locale/dummy.php:6
  +#: ../wiki.php:3340 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "MontrePage"
   
   # ../locale/dummy.php:3 ../locale/dummy.php:5 ../wiki.php:2558
  -#: ../wiki.php:3198 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:3341 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "TrouvePage"
   
  -#: ../wiki.php:3461
  +#: ../wiki.php:3609
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:3720
  +#: ../wiki.php:3870
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:3721 ../wiki.php:3732
  +#: ../wiki.php:3871 ../wiki.php:3882
   msgid "Please contact WikiMasters"
   msgstr ""
   
  -#: ../wiki.php:3731
  +#: ../wiki.php:3881
   msgid "You are blocked in this wiki"
   msgstr ""
   
   # ../wiki.php:2945 ../wiki.php:2948
  -#: ../wiki.php:3762 ../wiki.php:3765 ../wikilib.php:1065
  +#: ../wiki.php:3912 ../wiki.php:3915 ../wikilib.php:1100
   msgid "Create this page"
   msgstr "Crer cette page"
   
   # ../wiki.php:2950
  -#: ../wiki.php:3767 ../wikilib.php:1067
  +#: ../wiki.php:3917 ../wikilib.php:1102
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
  @@ -1456,46 +1536,49 @@
   "page.\n"
   
   # ../wiki.php:2950
  -#: ../wiki.php:3767 ../wikilib.php:1067
  +#: ../wiki.php:3917 ../wikilib.php:1102
   msgid "title"
   msgstr "titre"
   
   # ../wiki.php:2956
  -#: ../wiki.php:3773
  +#: ../wiki.php:3926
   msgid " or alternativly, use one of these templates:\n"
   msgstr " ou alternativement, utiliser un de ces modles de page :\n"
   
  +#: ../wiki.php:3929
  +msgid "You have no templates"
  +msgstr ""
  +
   # ../wikilib.php:427
  -#: ../wiki.php:3776
  -msgid "To create your own templates, add a page with a 'Template' suffix.\n"
  +#: ../wiki.php:3931
  +#, c-format
  +msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
  -"Pour crer vos propres modles de pages, ajouter une page avec lesuffix "
  -"'Template'.\n"
   
  -#: ../wiki.php:3787
  +#: ../wiki.php:3942
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
   # ../wiki.php:3009
  -#: ../wiki.php:3864
  +#: ../wiki.php:4032
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "Vous n'tes pas autoris  '%s'"
   
   # ../wiki.php:3021
  -#: ../wiki.php:3885
  +#: ../wiki.php:4052
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "Impossible de pouvoir \"%s\" !"
   
   # ../wiki.php:3024
  -#: ../wiki.php:3888
  +#: ../wiki.php:4055
   msgid "Please enter the valid password"
   msgstr "Merci d'entrer un mot de passe valide"
   
   # ../wikilib.php:368
  -#: ../wikilib.php:526
  +#: ../wikilib.php:547
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -1527,277 +1610,282 @@
   "deux colonnes ||;\n"
   "Les espaces aprs un tableau ou un titre ne sont pas autoriss.<br />\n"
   
  -#: ../wikilib.php:564
  +#: ../wikilib.php:588
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
   # ../wikilib.php:425
  -#: ../wikilib.php:645
  +#: ../wikilib.php:671
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   "Utiliser un des modles de pages qui suivent pour une premirecration :\n"
   
   # ../wikilib.php:427
  -#: ../wikilib.php:647
  -msgid "To create your own templates, add a page with a 'Template' suffix."
  +#: ../wikilib.php:673
  +#, c-format
  +msgid "To create your own templates, add a page with '%s' pattern."
   msgstr ""
  -"Pour crer vos propres modles de pages, ajouter une page avec lesuffix "
  -"'Template'."
   
  -#: ../wikilib.php:650
  +#: ../wikilib.php:677
   msgid "Merge"
   msgstr ""
   
  -#: ../wikilib.php:651
  +#: ../wikilib.php:678
   msgid "Merge manually"
   msgstr ""
   
  -#: ../wikilib.php:652
  +#: ../wikilib.php:679
   msgid "Ignore conflicts"
   msgstr ""
   
  -# ../wikilib.php:443
  -#: ../wikilib.php:676
  -msgid "Skip to preview"
  -msgstr "Aller  la prvisualisation"
  -
   # ../wikilib.php:445
  -#: ../wikilib.php:680
  +#: ../wikilib.php:704
   msgid "ReduceEditor"
   msgstr "Rduirediteur"
   
  -#: ../wikilib.php:681
  +#: ../wikilib.php:705
   msgid "EnlargeEditor"
   msgstr ""
   
   # ../locale/dummy.php:6 ../wikilib.php:448
  -#: ../wikilib.php:685 ../locale/dummy.php:6
  +#: ../wikilib.php:709 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
   # ../wikilib.php:449
  -#: ../wikilib.php:687
  +#: ../wikilib.php:711
   msgid "HelpOnEditing"
   msgstr ""
   
   # ../wikilib.php:462
  -#: ../wikilib.php:714
  +#: ../wikilib.php:738
   #, c-format
   msgid "Describe %s here"
   msgstr "Dcrire %s ici"
   
   # ../wikilib.php:476
  -#: ../wikilib.php:731
  +#: ../wikilib.php:755
   msgid "--Select Category--"
   msgstr "-- Slectionner une catgorie"
   
  -#: ../wikilib.php:741
  +#: ../wikilib.php:765
   msgid "Minor edit"
   msgstr ""
   
  +# ../wikilib.php:443
  +#: ../wikilib.php:773
  +msgid "Skip to preview"
  +msgstr "Aller  la prvisualisation"
  +
   # ../wikilib.php:483 ../wikilib.php:1079
  -#: ../wikilib.php:749 ../wikilib.php:1727 ../wikilib.php:1769
  +#: ../wikilib.php:775 ../wikilib.php:1779 ../wikilib.php:1821
   msgid "Save"
   msgstr "Sauvegarder"
   
   # ../wikilib.php:484
  -#: ../wikilib.php:750
  +#: ../wikilib.php:776
   msgid "Summary of Change"
   msgstr "Sommaire des modifications"
   
   # ../wikilib.php:517
  -#: ../wikilib.php:796
  +#: ../wikilib.php:822
   msgid "406 Not Acceptable"
   msgstr ""
   
   # ../wikilib.php:519
  -#: ../wikilib.php:801
  +#: ../wikilib.php:827
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s n'est pas une action valide"
   
   # ../wikilib.php:521
  -#: ../wikilib.php:803
  +#: ../wikilib.php:829
   msgid "Is it valid action ?"
   msgstr "Est-ce que c'est une action valide ?"
   
   # ../wikilib.php:540
  -#: ../wikilib.php:848
  +#: ../wikilib.php:874
   #, c-format
   msgid "File '%s' is deleted"
   msgstr "Le fichier '%s' est effac"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:850
  +#: ../wikilib.php:876
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr "Impossible d'effacer '%s'"
   
   # ../wikilib.php:545
  -#: ../wikilib.php:855
  +#: ../wikilib.php:881
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr "Le rpertoire '%s' est effac"
   
   # ../wikilib.php:547
  -#: ../wikilib.php:857
  +#: ../wikilib.php:883
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr "Impossible d'effacer le rpertoire '%s'"
   
   # ../wikilib.php:557 ../wikilib.php:559
  -#: ../wikilib.php:867 ../wikilib.php:887
  +#: ../wikilib.php:893 ../wikilib.php:913
   msgid "No files are selected !"
   msgstr "Aucun fichier n'est slectionn !"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:880
  +#: ../wikilib.php:906
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
   # ../locale/dummy.php:5
  -#: ../wikilib.php:883
  +#: ../wikilib.php:909
   msgid "Delete"
   msgstr ""
   
   # ../wikilib.php:550
  -#: ../wikilib.php:884
  +#: ../wikilib.php:910
   msgid "Delete selected file"
   msgstr ""
   
   # ../wikilib.php:575
  -#: ../wikilib.php:905
  +#: ../wikilib.php:931
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr "\"%s\" est effac !"
   
   # ../wikilib.php:581
  -#: ../wikilib.php:912
  +#: ../wikilib.php:938
   msgid "Please delete this file manually."
   msgstr "Merci d'effacer ce fichier manuellement."
   
   # ../wikilib.php:583
  -#: ../wikilib.php:914
  +#: ../wikilib.php:940
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "Effacer \"%s\" ?"
   
  +# ../plugin/minilogin.php:30
  +#: ../wikilib.php:990
  +#, c-format
  +msgid "%s (rev. %s)"
  +msgstr ""
  +
   # ../wikilib.php:743
  -#: ../wikilib.php:1119 ../wikilib.php:1223
  +#: ../wikilib.php:1154 ../wikilib.php:1258
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "Quelqu'un a sauvegard la page tandis que vous ditiez %s"
   
  -#: ../wikilib.php:1125
  +#: ../wikilib.php:1160
   msgid "Section edit is not valid for non-exists page."
   msgstr ""
   
   # ../wikilib.php:803
  -#: ../wikilib.php:1158 ../wikilib.php:1332
  +#: ../wikilib.php:1193 ../wikilib.php:1368
   msgid "mail does not supported by default."
   msgstr "La messagerie n'est pas support par dfaut."
   
   # ../wikilib.php:807
  -#: ../wikilib.php:1162 ../wikilib.php:1336
  +#: ../wikilib.php:1197 ../wikilib.php:1372
   msgid "Sent notification mail."
   msgstr "Des notifications par messagerie ont t envoyes."
   
   # ../wikilib.php:809
  -#: ../wikilib.php:1164 ../wikilib.php:1338
  +#: ../wikilib.php:1199 ../wikilib.php:1374
   msgid "No subscribers found."
   msgstr "Aucun abonn trouv."
   
   # ../wikilib.php:814
  -#: ../wikilib.php:1169 ../wikilib.php:1343
  +#: ../wikilib.php:1204 ../wikilib.php:1379
   #, c-format
   msgid "%s is not editable"
   msgstr "%s n'est pas ditable"
   
   # ../wikilib.php:816
  -#: ../wikilib.php:1171 ../wikilib.php:1345
  +#: ../wikilib.php:1206 ../wikilib.php:1381
   #, c-format
   msgid "%s is saved"
   msgstr "%s est sauvegard"
   
   # ../wikilib.php:734
  -#: ../wikilib.php:1214
  +#: ../wikilib.php:1249
   msgid "Goto Editor"
   msgstr "Aller  l'diteur"
   
  -#: ../wikilib.php:1227
  +#: ../wikilib.php:1262
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr ""
   
   # ../plugin/Vote.php:109
  -#: ../wikilib.php:1228
  +#: ../wikilib.php:1263
   #, c-format
   msgid "%s is merged successfully"
   msgstr ""
   
  -#: ../wikilib.php:1232
  +#: ../wikilib.php:1267
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1233
  +#: ../wikilib.php:1268
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr ""
   
  -#: ../wikilib.php:1234
  +#: ../wikilib.php:1269
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1235
  +#: ../wikilib.php:1270
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1240
  +#: ../wikilib.php:1275
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr ""
   
   # ../wikilib.php:581
  -#: ../wikilib.php:1241
  +#: ../wikilib.php:1276
   msgid "Please resolve conflicts manually."
   msgstr ""
   
  -#: ../wikilib.php:1244
  +#: ../wikilib.php:1279
   #, c-format
   msgid "Force merging for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1245
  +#: ../wikilib.php:1280
   msgid "Please be careful, you could damage useful information."
   msgstr ""
   
   # ../wikilib.php:755
  -#: ../wikilib.php:1257
  +#: ../wikilib.php:1292
   msgid "Conflict error!"
   msgstr "Erreur de conflit !"
   
   # ../wikilib.php:748 ../wikilib.php:777
  -#: ../wikilib.php:1294
  +#: ../wikilib.php:1329
   #, c-format
   msgid "Preview of %s"
   msgstr "Prvisualisation de %s"
   
   # ../wikilib.php:838
  -#: ../wikilib.php:1369
  +#: ../wikilib.php:1405
   msgid "Nobody subscribed to this page."
   msgstr "Personne n'est abonn  cette page, aucun mail envoy"
   
   # ../wikilib.php:860
  -#: ../wikilib.php:1386
  +#: ../wikilib.php:1424
   #, c-format
   msgid "%s page is modified"
   msgstr "la page %s est modifi"
   
   # ../wikilib.php:870
  -#: ../wikilib.php:1411
  +#: ../wikilib.php:1453
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
  @@ -1808,93 +1896,93 @@
   "\n"
   
   # ../wikilib.php:883
  -#: ../wikilib.php:1424
  +#: ../wikilib.php:1466
   msgid "Send notification mails to all subscribers"
   msgstr "Envoyez un mail de notification  tous les abonns"
   
   # ../wikilib.php:887
  -#: ../wikilib.php:1429
  +#: ../wikilib.php:1471
   msgid "Mails are sent successfully"
   msgstr "Mail envoy avec succs"
   
   # ../wikilib.php:888
  -#: ../wikilib.php:1430
  +#: ../wikilib.php:1472
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr "un mail a t envoy  '%s'"
   
   # ../wiki.php:3021
  -#: ../wikilib.php:1432
  +#: ../wikilib.php:1474
   msgid "Fail to send mail"
   msgstr ""
   
   # ../wikilib.php:803
  -#: ../wikilib.php:1443
  +#: ../wikilib.php:1485
   msgid "This wiki does not support sendmail"
   msgstr ""
   
   # ../wikilib.php:1483
  -#: ../wikilib.php:1536
  +#: ../wikilib.php:1583
   msgid "Invalid regular expression !"
   msgstr ""
   
  -#: ../wikilib.php:1560
  +#: ../wikilib.php:1607
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:1563
  +#: ../wikilib.php:1610
   msgid "Infinite loop possible!"
   msgstr ""
   
   # ../plugin/login.php:26 ../wikilib.php:1051
  -#: ../wikilib.php:1685
  +#: ../wikilib.php:1737
   msgid "Login"
   msgstr "Se connecter"
   
  -#: ../wikilib.php:1686 ../wikilib.php:1786
  +#: ../wikilib.php:1738 ../wikilib.php:1838
   msgid "ID"
   msgstr ""
   
   # ../wikilib.php:1070
  -#: ../wikilib.php:1707 ../wikilib.php:1779
  +#: ../wikilib.php:1759 ../wikilib.php:1831
   msgid "Make profile"
   msgstr "Faire un profil"
   
   # ../wikilib.php:1071
  -#: ../wikilib.php:1709
  +#: ../wikilib.php:1761
   msgid "password again"
   msgstr "mot de passe de nouveau"
   
  -#: ../wikilib.php:1711 ../wikilib.php:1749
  +#: ../wikilib.php:1763 ../wikilib.php:1801
   msgid "Mail"
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../wikilib.php:1731
  +#: ../wikilib.php:1783
   msgid "New password"
   msgstr "Nouveau mot de passe"
   
  -#: ../wikilib.php:1750
  +#: ../wikilib.php:1802
   msgid "Time Zone"
   msgstr ""
   
   # ../wikilib.php:1088
  -#: ../wikilib.php:1758
  +#: ../wikilib.php:1810
   msgid "logout"
   msgstr "se dconnecter"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wikilib.php:2112
  +#: ../wikilib.php:2153
   msgid "Show all"
   msgstr ""
   
   # ../locale/dummy.php:4
  -#: ../wikilib.php:2254
  +#: ../wikilib.php:2295
   msgid "Contents"
   msgstr ""
   
   # ../wikilib.php:1479
  -#: ../wikilib.php:2365
  +#: ../wikilib.php:2406
   #, c-format
   msgid "Title search for \"%s\""
   msgstr "Recherche de titre pour \"%s\""
  @@ -1948,3 +2036,4 @@
   #: ../locale/dummy.php:7
   msgid "TrackBack"
   msgstr ""
  +
  
  
  
  1.20      +361 -274  moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- ko.po	10 Jan 2006 11:39:39 -0000	1.19
  +++ ko.po	25 Feb 2006 07:16:37 -0000	1.20
  @@ -5,7 +5,7 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1\n"
  -"POT-Creation-Date: 2006-01-10 19:47+0900\n"
  +"POT-Creation-Date: 2006-02-25 16:17+0900\n"
   "PO-Revision-Date: 2003-04-29 19:00+0900\n"
   "Last-Translator: Won-kyu Park <wkpark@kldp.org>\n"
   "Language-Team: ko <ko@li.org>\n"
  @@ -32,63 +32,61 @@
   msgid "Translate %s to %s"
   msgstr "%s %s() ϱ"
   
  -#: ../plugin/Blog.php:86 ../plugin/blog2.php:87
  +#: ../plugin/Blog.php:85
   #, c-format
   msgid "Blog cache of \"%s\" is refreshed"
   msgstr ""
   
  -#: ../plugin/Blog.php:110 ../plugin/blog2.php:111
  +#: ../plugin/Blog.php:109
   #, c-format
   msgid "\"%s\" is updated"
   msgstr "\"%s\"() ŵǾϴ"
   
  -#: ../plugin/Blog.php:115 ../plugin/blog2.php:116
  +#: ../plugin/Blog.php:114
   msgid "Add Blog"
   msgstr ""
   
  -#: ../plugin/Blog.php:155 ../plugin/blog2.php:156
  +#: ../plugin/Blog.php:154
   msgid "Error: No blog entry found!"
   msgstr ""
   
  -#: ../plugin/Blog.php:163 ../plugin/Comment.php:135 ../plugin/blog2.php:164
  +#: ../plugin/Blog.php:162 ../plugin/Comment.php:144
   msgid "Error: Don't make a clone!"
   msgstr ""
   
  -#: ../plugin/Blog.php:180 ../plugin/blog2.php:181
  +#: ../plugin/Blog.php:179
   #, c-format
   msgid "Comment added to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:183 ../plugin/blog2.php:184
  +#: ../plugin/Blog.php:182
   #, c-format
   msgid "Blog entry added to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:220 ../plugin/blog2.php:221
  +#: ../plugin/Blog.php:219
   #, c-format
   msgid "Add Comment to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:222 ../plugin/blog2.php:223
  +#: ../plugin/Blog.php:221
   #, c-format
   msgid "Add Blog entry to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:236 ../plugin/Blog.php:292 ../plugin/Comment.php:50
  -#: ../plugin/blog2.php:237 ../plugin/blog2.php:293
  +#: ../plugin/Blog.php:235 ../plugin/Blog.php:290
   msgid "Name"
   msgstr ""
   
  -#: ../plugin/Blog.php:240 ../plugin/Blog.php:293 ../plugin/blog2.php:241
  -#: ../plugin/blog2.php:294
  +#: ../plugin/Blog.php:239 ../plugin/Blog.php:291
   msgid "Title"
   msgstr ""
   
  -#: ../plugin/Blog.php:246 ../plugin/Comment.php:52 ../plugin/blog2.php:247
  +#: ../plugin/Blog.php:245 ../plugin/Comment.php:60
   msgid "Don't add a signature"
   msgstr ""
   
  -#: ../plugin/Blog.php:259 ../plugin/blog2.php:260
  +#: ../plugin/Blog.php:258
   msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
   msgstr "<b>μ</b> ---- α   ʽϴ."
   
  @@ -120,8 +118,8 @@
   msgid "%d comments"
   msgstr " %d"
   
  -#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:124
  -#: ../plugin/ImportTable.php:76 ../plugin/processor/blog.php:78
  +#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:133
  +#: ../plugin/processor/blog.php:78
   msgid "Add comment"
   msgstr " ޱ"
   
  @@ -157,74 +155,78 @@
   msgid "Cut & Paste a Clipboard Image"
   msgstr ""
   
  -#: ../plugin/Comment.php:53
  +#: ../plugin/Comment.php:58
  +msgid "Username"
  +msgstr "̸"
  +
  +#: ../plugin/Comment.php:61
   msgid "Comment"
   msgstr " ޱ"
   
  -#: ../plugin/Comment.php:54 ../plugin/ImportTable.php:67 ../wikilib.php:747
  +#: ../plugin/Comment.php:62 ../wikilib.php:771
   msgid "Preview"
   msgstr "̸"
   
  -#: ../plugin/Comment.php:74
  +#: ../plugin/Comment.php:81
   msgid "Page is not writable"
   msgstr "  ϴ"
   
  -#: ../plugin/Comment.php:78
  +#: ../plugin/Comment.php:85
   msgid "You are not allowed to add a comment."
   msgstr "Comment  ʽϴ."
   
  -#: ../plugin/Comment.php:79 ../plugin/Keywords.php:256
  +#: ../plugin/Comment.php:86 ../plugin/Keywords.php:292
   msgid "Page does not exists"
   msgstr " ϴ"
   
  -#: ../plugin/Comment.php:110 ../wikilib.php:1144 ../wikilib.php:1288
  +#: ../plugin/Comment.php:119 ../wikilib.php:1179 ../wikilib.php:1323
   msgid ""
   "Sorry, can not save page because some messages are blocked in this wiki."
   msgstr "˼մϴ. Ư ޽ Ǿ    ϴ."
   
  -#: ../plugin/Comment.php:115
  +#: ../plugin/Comment.php:124
   msgid "Preview comment"
   msgstr "̸"
   
  -#: ../plugin/Comment.php:165
  +#: ../plugin/Comment.php:191
   #, c-format
   msgid "%s is commented successfully"
   msgstr "%s   ÷Ǿϴ"
   
  -#: ../plugin/Comment.php:166
  +#: ../plugin/Comment.php:192
   msgid "Comment added successfully"
   msgstr " ÷Ǿϴ"
   
  -#: ../plugin/Diff.php:151 ../plugin/Diff.php:190 ../wikilib.php:1275
  -msgid "No difference found"
  -msgstr "ȭ ϴ"
  -
  -#: ../plugin/Diff.php:153
  -msgid "Difference between yours and the current"
  -msgstr "  "
  -
  -#: ../plugin/Diff.php:174 ../plugin/Info.php:145
  +#: ../plugin/Diff.php:177 ../plugin/Info.php:188
   msgid "No older revisions available"
   msgstr "  ϴ"
   
  -#: ../plugin/Diff.php:179 ../plugin/Info.php:151
  +#: ../plugin/Diff.php:182 ../plugin/Info.php:194
   msgid "Version info is not available in this wiki"
   msgstr ""
   
  -#: ../plugin/Diff.php:192
  +#: ../plugin/Diff.php:193 ../wikilib.php:1310
  +msgid "No difference found"
  +msgstr "ȭ ϴ"
  +
  +#: ../plugin/Diff.php:195
   msgid "Difference between versions"
   msgstr " "
   
  -#: ../plugin/Diff.php:194
  +#: ../plugin/Diff.php:197 ../plugin/Diff.php:320
   #, c-format
   msgid "Difference between r%s and r%s"
   msgstr "r%s r%s "
   
  -#: ../plugin/Diff.php:197
  +#: ../plugin/Diff.php:200 ../plugin/Diff.php:322
   #, c-format
   msgid "Difference between r%s and the current"
   msgstr "r%s   "
   
  +#: ../plugin/Diff.php:324
  +msgid "latest changes"
  +msgstr "ֱ ٲ"
  +
   #: ../plugin/Draw.php:29 ../plugin/OeKaki.php:36
   msgid "Draw new picture"
   msgstr " ׸ "
  @@ -256,57 +258,60 @@
   msgid "%d day(s) passed from %s."
   msgstr "%2$sκ %1$d ϴ."
   
  -#: ../plugin/FastSearch.php:114 ../plugin/FullSearch.php:18
  +#: ../plugin/FastSearch.php:44 ../plugin/FullSearch.php:77
  +msgid "No search text"
  +msgstr ""
  +
  +#: ../plugin/FastSearch.php:50
  +msgid "Couldn't open search database, sorry."
  +msgstr ""
  +
  +#: ../plugin/FastSearch.php:114 ../plugin/FullSearch.php:19
   #, c-format
   msgid "Full text search for \"%s\""
   msgstr "\"%s\"() ü ãƺ"
   
  -#: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:28
  +#: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:35
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr "%3$s ߿ %1$s ߰ߵǾϴ"
   
  -#: ../plugin/FullSearch.php:14
  +#: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:37
  +msgid "page"
  +msgstr ""
  +
  +#: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:37
  +msgid "pages"
  +msgstr ""
  +
  +#: ../plugin/FullSearch.php:15
   #, c-format
   msgid "BackLinks search for \"%s\""
   msgstr "\"%s\"  ũ ã"
   
  -#: ../plugin/FullSearch.php:16
  +#: ../plugin/FullSearch.php:17
   #, c-format
   msgid "KeyWords search for \"%s\""
   msgstr "\"%s\"  Ű ġ"
   
  -#: ../plugin/FullSearch.php:30
  -msgid "page"
  -msgstr ""
  -
  -#: ../plugin/FullSearch.php:30
  -msgid "pages"
  -msgstr ""
  -
  -#: ../plugin/FullSearch.php:33
  -msgid "Context search."
  +#: ../plugin/FullSearch.php:40
  +msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:34
  -#, c-format
  -msgid " or %s"
  -msgstr " Ȥ %s"
  -
  -#: ../plugin/FullSearch.php:36
  +#: ../plugin/FullSearch.php:43
   msgid "Refresh"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:37
  +#: ../plugin/FullSearch.php:44
   #, c-format
   msgid " (%s search results)"
   msgstr " (ġ  %s)"
   
  -#: ../plugin/FullSearch.php:70
  -msgid "No search text"
  +#: ../plugin/FullSearch.php:120
  +msgid "Empty expression"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:113 ../wikilib.php:2369
  +#: ../plugin/FullSearch.php:124 ../wikilib.php:2410
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "߸ ã ǥ \"%s\""
  @@ -319,8 +324,8 @@
   msgid "show comments"
   msgstr " "
   
  -#: ../plugin/Gallery.php:309 ../plugin/Gallery.php:312 ../wikilib.php:1131
  -#: ../wikilib.php:1274
  +#: ../plugin/Gallery.php:309 ../plugin/Gallery.php:312 ../wikilib.php:1166
  +#: ../wikilib.php:1309
   #, c-format
   msgid "Go back or return to %s"
   msgstr "ڷ Ȥ %s() "
  @@ -333,23 +338,38 @@
   msgid "Comments is added"
   msgstr ""
   
  -#: ../plugin/ImportTable.php:32
  -msgid "Convert"
  -msgstr ""
  -
  -#: ../plugin/ImportUrl.php:105
  +#: ../plugin/ImportUrl.php:111
   msgid "Import URL"
   msgstr ""
   
  -#: ../plugin/Info.php:22
  +#: ../plugin/Info.php:28
   msgid "Revision History"
   msgstr " 丮"
   
  -#: ../plugin/Info.php:44
  +#: ../plugin/Info.php:51
   msgid "Show all revisions"
   msgstr ""
   
  -#: ../plugin/Info.php:161
  +#: ../plugin/Info.php:77
  +msgid "Yesterday"
  +msgstr ""
  +
  +#: ../plugin/Info.php:78
  +#, c-format
  +msgid "%s days ago"
  +msgstr ""
  +
  +#: ../plugin/Info.php:80
  +#, c-format
  +msgid "%s hours ago"
  +msgstr ""
  +
  +#: ../plugin/Info.php:82
  +#, c-format
  +msgid "%s min ago"
  +msgstr ""
  +
  +#: ../plugin/Info.php:204
   #, c-format
   msgid "Info. for %s"
   msgstr "%s "
  @@ -375,84 +395,70 @@
   msgid "Edit new molecule"
   msgstr ""
   
  -#: ../plugin/KeywordView.php:16 ../plugin/Tour.php:16
  -#, c-format
  -msgid "Tour from %s"
  -msgstr ""
  -
  -#: ../plugin/KeywordView.php:66 ../plugin/Tour.php:68
  -msgid "links"
  -msgstr ""
  -
  -#: ../plugin/KeywordView.php:68 ../plugin/Tour.php:70
  -msgid "deeper"
  -msgstr ""
  -
  -#: ../plugin/KeywordView.php:69 ../plugin/Tour.php:71
  -#, c-format
  -msgid "More %s or more %s"
  -msgstr "  %s Ȥ %s"
  -
  -#: ../plugin/KeywordView.php:74 ../plugin/Tour.php:77
  -#, c-format
  -msgid "Total %d related pages"
  -msgstr "%d   "
  -
  -#: ../plugin/Keywords.php:221
  +#: ../plugin/Keywords.php:255
   msgid "hits"
   msgstr ""
   
  -#: ../plugin/Keywords.php:225
  +#: ../plugin/Keywords.php:259
   msgid "add keywords"
   msgstr "Ű ϱ"
   
  -#: ../plugin/Keywords.php:228
  +#: ../plugin/Keywords.php:262
   msgid "Update keywords"
   msgstr "Ű "
   
  -#: ../plugin/Keywords.php:230
  +#: ../plugin/Keywords.php:264
   msgid "Add keywords"
   msgstr "Ű ϱ"
   
  -#: ../plugin/Keywords.php:231
  +#: ../plugin/Keywords.php:265
   msgid "Add as common words"
   msgstr ""
   
  -#: ../plugin/Keywords.php:232
  +#: ../plugin/Keywords.php:266
   msgid "Unselect all"
   msgstr "  "
   
  -#: ../plugin/Keywords.php:255
  +#: ../plugin/Keywords.php:267
  +msgid "Suggest new Keywords"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:291
   msgid "You are not able to add keywords."
   msgstr "Ű带 ߰  ϴ."
   
  -#: ../plugin/Keywords.php:319
  +#: ../plugin/Keywords.php:300
  +#, c-format
  +msgid "%s is not found."
  +msgstr "%s() ã  ϴ"
  +
  +#: ../plugin/Keywords.php:404
   msgid "Common words are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:354
  +#: ../plugin/Keywords.php:451
   #, c-format
   msgid "Keywords for %s are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:379
  +#: ../plugin/Keywords.php:477
   msgid "Keywords are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:381
  +#: ../plugin/Keywords.php:479
   msgid "There are no changes found"
   msgstr ""
   
  -#: ../plugin/Keywords.php:393
  +#: ../plugin/Keywords.php:492
   msgid "Update with these Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:406
  +#: ../plugin/Keywords.php:505
   #, c-format
   msgid "Select keywords for %s"
   msgstr ""
   
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1023 ../wikilib.php:2358
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1058 ../wikilib.php:2399
   msgid "Use more specific text"
   msgstr "  ڼ Էϼ"
   
  @@ -558,12 +564,58 @@
   msgid "PHP Version"
   msgstr ""
   
  +#: ../plugin/Tour.php:16
  +#, c-format
  +msgid "Tour from %s"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:56
  +msgid "BackLinks"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:60
  +msgid "Keywords"
  +msgstr "Ű"
  +
  +#: ../plugin/Tour.php:68
  +#, c-format
  +msgid " from %s"
  +msgstr " %s "
  +
  +#: ../plugin/Tour.php:71
  +#, c-format
  +msgid "%s Tour %s"
  +msgstr "%s  %s"
  +
  +#: ../plugin/Tour.php:112
  +msgid "links"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:114
  +msgid "deeper"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:115
  +#, c-format
  +msgid "More %s or more %s"
  +msgstr "  %s Ȥ %s"
  +
  +#: ../plugin/Tour.php:123
  +#, c-format
  +msgid "Total %d related keywords"
  +msgstr "%d   Ű"
  +
  +#: ../plugin/Tour.php:126
  +#, c-format
  +msgid "Total %d related pages"
  +msgstr "%d   "
  +
   #: ../plugin/TwinPages.php:13
   #, c-format
   msgid "TwinPages of %s"
   msgstr "%s ֵ "
   
  -#: ../plugin/TwinPages.php:19 ../wiki.php:3760
  +#: ../plugin/TwinPages.php:19 ../wiki.php:3910
   msgid "See [TwinPages]: "
   msgstr ""
   
  @@ -598,12 +650,12 @@
   msgid ": Rename"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:278 ../plugin/rename.php:77 ../wikilib.php:882
  -#: ../wikilib.php:1674
  +#: ../plugin/UploadedFiles.php:278 ../plugin/rename.php:77 ../wikilib.php:908
  +#: ../wikilib.php:1726
   msgid "Password"
   msgstr "йȣ"
   
  -#: ../plugin/UploadedFiles.php:279 ../wikilib.php:860
  +#: ../plugin/UploadedFiles.php:279 ../wikilib.php:886
   msgid "Delete selected files"
   msgstr "õ  "
   
  @@ -633,7 +685,7 @@
   msgid "Voted successfully"
   msgstr ""
   
  -#: ../plugin/WordIndex.php:65 ../wikilib.php:2111
  +#: ../plugin/WordIndex.php:66 ../wikilib.php:2152
   msgid "Others"
   msgstr ""
   
  @@ -664,27 +716,31 @@
   msgid "Back to UserPreferences"
   msgstr "UserPreferences "
   
  +#: ../plugin/css.php:63
  +msgid "CSS disabled !"
  +msgstr ""
  +
   #: ../plugin/format.php:15
   msgid "It is a XML format !"
   msgstr ""
   
  -#: ../plugin/login.php:24
  +#: ../plugin/login.php:33
   msgid "Login:"
   msgstr ""
   
  -#: ../plugin/login.php:25
  +#: ../plugin/login.php:34
   msgid "Password:"
   msgstr ""
   
  -#: ../plugin/login.php:26
  +#: ../plugin/login.php:35
   msgid "Join"
   msgstr ""
   
  -#: ../plugin/login.php:42 ../plugin/minilogin.php:29
  +#: ../plugin/login.php:51 ../plugin/minilogin.php:29
   msgid "Logout"
   msgstr ""
   
  -#: ../plugin/login.php:43 ../plugin/minilogin.php:28 ../locale/dummy.php:3
  +#: ../plugin/login.php:52 ../plugin/minilogin.php:28 ../locale/dummy.php:3
   msgid "UserPreferences"
   msgstr "ȯ漳"
   
  @@ -696,7 +752,7 @@
   msgid "No manpage found"
   msgstr "Manpage ϴ"
   
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1724
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1776
   msgid "Login or Join"
   msgstr ""
   
  @@ -731,7 +787,7 @@
   msgid "last modified %s %s"
   msgstr ""
   
  -#: ../plugin/processor/vim.php:47
  +#: ../plugin/processor/vim.php:49
   msgid "Toggle line numbers"
   msgstr ""
   
  @@ -792,12 +848,12 @@
   msgid "RCS purge \"%s\""
   msgstr ""
   
  -#: ../plugin/rdf_blog.php:31 ../plugin/rss_blog.php:26
  +#: ../plugin/rdf_blog.php:31 ../plugin/rss_blog.php:25
   msgid "Blog Changes"
   msgstr "ٲ α"
   
   # c-format
  -#: ../plugin/rdf_blog.php:45 ../plugin/rss_blog.php:104
  +#: ../plugin/rdf_blog.php:45 ../plugin/rss_blog.php:103
   #, c-format
   msgid "BlogChanges at %s"
   msgstr ""
  @@ -847,7 +903,7 @@
   msgid "Only WikiMaster can rename this page"
   msgstr ""
   
  -#: ../plugin/rename.php:79 ../wikilib.php:920
  +#: ../plugin/rename.php:79 ../wikilib.php:946
   msgid "with revision history"
   msgstr " 丮 Բ"
   
  @@ -930,11 +986,11 @@
   msgid "Error: No entry found!"
   msgstr ""
   
  -#: ../plugin/sendping.php:72
  +#: ../plugin/sendping.php:71
   msgid "Send TrackBack ping"
   msgstr ""
   
  -#: ../plugin/sendping.php:166
  +#: ../plugin/sendping.php:165
   msgid "Trackback sent"
   msgstr "Ʈ"
   
  @@ -971,14 +1027,26 @@
   msgid "Do you want to subscribe \"%s\" ?"
   msgstr "\"%s\"() Ͻðڽϱ ?"
   
  -#: ../plugin/theme.php:23
  +#: ../plugin/theme.php:28
   msgid "Theme cleared. Goto UserPreferences."
   msgstr "׸ . UserPreferences "
   
  -#: ../plugin/theme.php:63
  +#: ../plugin/theme.php:39
  +msgid "Theme is changed"
  +msgstr "׸ ٲϴ"
  +
  +#: ../plugin/theme.php:68
   msgid "Please select a theme properly."
   msgstr "׸  ּ"
   
  +#: ../plugin/theme.php:78
  +msgid "Theme disabled !"
  +msgstr ""
  +
  +#: ../plugin/theme.php:92
  +msgid "-- Select --"
  +msgstr "--  --"
  +
   #: ../plugin/ticket.php:75
   msgid "Invalid use of ticket"
   msgstr ""
  @@ -1033,162 +1101,162 @@
   msgid "ID does not exists !"
   msgstr "̵  ʽϴ !"
   
  -#: ../plugin/userform.php:87 ../plugin/userform.php:267
  +#: ../plugin/userform.php:86 ../plugin/userform.php:266
   #, c-format
   msgid "Successfully login as '%s'"
   msgstr " '%s'() αεǾϴ"
   
  -#: ../plugin/userform.php:93 ../plugin/userform.php:272
  -#: ../plugin/userform.php:315
  +#: ../plugin/userform.php:92 ../plugin/userform.php:271
  +#: ../plugin/userform.php:314
   msgid "Invalid password !"
   msgstr "߸ йȣ !"
   
  -#: ../plugin/userform.php:97
  +#: ../plugin/userform.php:96
   #, c-format
   msgid "\"%s\" does not exists on this wiki !"
   msgstr ""
   
  -#: ../plugin/userform.php:99
  +#: ../plugin/userform.php:98
   msgid "Make new ID on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:105
  +#: ../plugin/userform.php:104
   msgid "Cookie deleted !"
   msgstr "Ű ϴ !"
   
  -#: ../plugin/userform.php:107 ../wikilib.php:1781
  +#: ../plugin/userform.php:106 ../wikilib.php:1833
   msgid "E-mail new password"
   msgstr " йȣ ޱ"
   
  -#: ../plugin/userform.php:118 ../plugin/userform.php:181
  -#: ../plugin/userform.php:204
  +#: ../plugin/userform.php:117 ../plugin/userform.php:180
  +#: ../plugin/userform.php:203
   msgid "Invalid ticket !"
   msgstr ""
   
  -#: ../plugin/userform.php:120 ../plugin/userform.php:206
  +#: ../plugin/userform.php:119 ../plugin/userform.php:205
   msgid "You need a ticket !"
   msgstr ""
   
  -#: ../plugin/userform.php:152
  +#: ../plugin/userform.php:151
   msgid "New password confirmation"
   msgstr " йȣ Ȯ"
   
  -#: ../plugin/userform.php:157
  +#: ../plugin/userform.php:156
   msgid "Please confirm your new password"
   msgstr " йȣ Ȯ ּ"
   
  -#: ../plugin/userform.php:159
  +#: ../plugin/userform.php:158
   #, c-format
   msgid "Your new password is %s"
   msgstr " йȣ %s"
   
  -#: ../plugin/userform.php:160 ../plugin/userform.php:259
  +#: ../plugin/userform.php:159 ../plugin/userform.php:258
   msgid "Please change your password later"
   msgstr "йȣ ٲּ"
   
  -#: ../plugin/userform.php:164 ../plugin/userform.php:172
  +#: ../plugin/userform.php:163 ../plugin/userform.php:171
   msgid "Fail to e-mail notification !"
   msgstr "̸ ˸  !"
   
  -#: ../plugin/userform.php:167
  +#: ../plugin/userform.php:166
   msgid "New password is sent to your e-mail !"
   msgstr " йȣ ̸Ϸ ۵Ǿϴ !"
   
  -#: ../plugin/userform.php:168
  +#: ../plugin/userform.php:167
   msgid "Please check your e-mail"
   msgstr "̸ Ȯ ּ"
   
  -#: ../plugin/userform.php:173
  +#: ../plugin/userform.php:172
   msgid "E-mail mismatch !"
   msgstr "̸  ʽϴ !"
   
  -#: ../plugin/userform.php:175
  +#: ../plugin/userform.php:174
   msgid "Invalid request"
   msgstr "߸ û !"
   
  -#: ../plugin/userform.php:176
  +#: ../plugin/userform.php:175
   msgid "Please confirm your e-mail address first !"
   msgstr "̸ ּҸ  Ȯ ּ !"
   
  -#: ../plugin/userform.php:183
  +#: ../plugin/userform.php:182
   msgid "ID and e-mail mismatch !"
   msgstr "̵ ̸ ּҰ  ʽϴ !"
   
  -#: ../plugin/userform.php:185
  +#: ../plugin/userform.php:184
   msgid "Please try again or make a new profile"
   msgstr "̸ ּ  ٽ ϼ"
   
  -#: ../plugin/userform.php:225 ../plugin/userform.php:303
  +#: ../plugin/userform.php:224 ../plugin/userform.php:302
   msgid "too short password!"
   msgstr "йȣ ªϴ"
   
  -#: ../plugin/userform.php:226
  +#: ../plugin/userform.php:225
   msgid "mismatch password!"
   msgstr "йȣ  ʽϴ!"
   
  -#: ../plugin/userform.php:227 ../plugin/userform.php:307
  +#: ../plugin/userform.php:226 ../plugin/userform.php:306
   msgid "not acceptable character found in the password!"
   msgstr ""
   
  -#: ../plugin/userform.php:230
  +#: ../plugin/userform.php:229
   msgid "Your password is too simple to use as a password !"
   msgstr ""
   
  -#: ../plugin/userform.php:236 ../plugin/userform.php:338
  +#: ../plugin/userform.php:235 ../plugin/userform.php:337
   msgid "Your email address is not valid"
   msgstr "̸ ּҰ ߸ Ǿϴ"
   
  -#: ../plugin/userform.php:240
  +#: ../plugin/userform.php:239
   msgid "Successfully added!"
   msgstr ""
   
  -#: ../plugin/userform.php:246
  +#: ../plugin/userform.php:245
   #, c-format
   msgid "Successfully added as '%s'"
   msgstr ""
   
  -#: ../plugin/userform.php:247
  +#: ../plugin/userform.php:246
   msgid "Please check your mailbox"
   msgstr "̸ Ȯ ּ"
   
  -#: ../plugin/userform.php:254 ../plugin/userform.php:332
  +#: ../plugin/userform.php:253 ../plugin/userform.php:331
   msgid "E-mail confirmation"
   msgstr "̸ Ȯ"
   
  -#: ../plugin/userform.php:256 ../plugin/userform.php:334
  +#: ../plugin/userform.php:255 ../plugin/userform.php:333
   msgid "Please confirm your email address"
   msgstr "̸ ּҸ Ȯ ּ"
   
  -#: ../plugin/userform.php:258
  +#: ../plugin/userform.php:257
   #, c-format
   msgid "Your initial password is %s"
   msgstr ""
   
  -#: ../plugin/userform.php:262 ../plugin/userform.php:336
  +#: ../plugin/userform.php:261 ../plugin/userform.php:335
   msgid "E-mail confirmation mail sent"
   msgstr ""
   
  -#: ../plugin/userform.php:277
  +#: ../plugin/userform.php:276
   msgid "Invalid username !"
   msgstr "߸ ̸ !"
   
  -#: ../plugin/userform.php:305
  +#: ../plugin/userform.php:304
   msgid "mismatch password !"
   msgstr "߸ йȣ !"
   
  -#: ../plugin/userform.php:308 ../plugin/userform.php:316
  +#: ../plugin/userform.php:307 ../plugin/userform.php:315
   msgid "Password is not changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:310
  +#: ../plugin/userform.php:309
   msgid "Password is changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:312
  +#: ../plugin/userform.php:311
   msgid "Password is too simple to use as a password !"
   msgstr ""
   
  -#: ../plugin/userform.php:344
  +#: ../plugin/userform.php:343
   msgid "Profiles are saved successfully !"
   msgstr "   Ǿϴ !"
   
  @@ -1202,109 +1270,122 @@
   msgid "Whois search result for %s"
   msgstr "%s  Whois ġ "
   
  -#: ../wiki.php:1087
  +#: ../wiki.php:1107
   #, c-format
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1380
  +#: ../wiki.php:1408
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
  -#: ../wiki.php:1391
  +#: ../wiki.php:1418
   msgid "File does not exists"
   msgstr ""
   
  -#: ../wiki.php:2274
  +#: ../wiki.php:2360
   msgid "Invalid ajax action."
   msgstr "߸ ajax ׼."
   
  -#: ../wiki.php:2503
  +#: ../wiki.php:2589
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:2503
  +#: ../wiki.php:2589
   msgid "TwinPages"
   msgstr "TwinPages"
   
  -#: ../wiki.php:2508
  +#: ../wiki.php:2594
   msgid "See [TwinPages]:"
   msgstr ""
   
  -#: ../wiki.php:3193 ../locale/dummy.php:6
  +#: ../wiki.php:2899
  +msgid "edit"
  +msgstr ""
  +
  +#: ../wiki.php:3052
  +msgid "Sister Sites Index"
  +msgstr ""
  +
  +#: ../wiki.php:3336 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "ġ"
   
  -#: ../wiki.php:3195
  +#: ../wiki.php:3338
   msgid "NotEditable"
   msgstr "ĥ "
   
  -#: ../wiki.php:3197 ../locale/dummy.php:6
  +#: ../wiki.php:3340 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:3198 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:3341 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "ã"
   
  -#: ../wiki.php:3461
  +#: ../wiki.php:3609
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:3720
  +#: ../wiki.php:3870
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:3721 ../wiki.php:3732
  +#: ../wiki.php:3871 ../wiki.php:3882
   msgid "Please contact WikiMasters"
   msgstr ""
   
  -#: ../wiki.php:3731
  +#: ../wiki.php:3881
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:3762 ../wiki.php:3765 ../wikilib.php:1065
  +#: ../wiki.php:3912 ../wiki.php:3915 ../wikilib.php:1100
   msgid "Create this page"
   msgstr " "
   
  -#: ../wiki.php:3767 ../wikilib.php:1067
  +#: ../wiki.php:3917 ../wikilib.php:1102
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
   
  -#: ../wiki.php:3767 ../wikilib.php:1067
  +#: ../wiki.php:3917 ../wikilib.php:1102
   msgid "title"
   msgstr ""
   
  -#: ../wiki.php:3773
  +#: ../wiki.php:3926
   msgid " or alternativly, use one of these templates:\n"
   msgstr " Ȥ Ʒ øƮ  ̿ϼ:\n"
   
  -#: ../wiki.php:3776
  -msgid "To create your own templates, add a page with a 'Template' suffix.\n"
  -msgstr "øƮ ÷ Template ̸   弼.\n"
  +#: ../wiki.php:3929
  +msgid "You have no templates"
  +msgstr ""
   
  -#: ../wiki.php:3787
  +#: ../wiki.php:3931
  +#, c-format
  +msgid "To create your own templates, add a page with '%s' pattern.\n"
  +msgstr "øƮ ÷ '%s'    弼.\n"
  +
  +#: ../wiki.php:3942
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
  -#: ../wiki.php:3864
  +#: ../wiki.php:4032
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr ""
   
  -#: ../wiki.php:3885
  +#: ../wiki.php:4052
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:3888
  +#: ../wiki.php:4055
   msgid "Please enter the valid password"
   msgstr "Ȯ йȣ ־ּ"
   
  -#: ../wikilib.php:526
  +#: ../wikilib.php:547
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -1333,316 +1414,322 @@
   "<b>̺</b>: ||   |||| ĭ ģ  ||;<br />\n"
   "̺̳     ȵ˴ϴ.<br />\n"
   
  -#: ../wikilib.php:564
  +#: ../wikilib.php:588
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
  -#: ../wikilib.php:645
  +#: ../wikilib.php:671
   msgid "Use one of the following templates as an initial release :\n"
   msgstr "ó   øƮ Ȱϼ :\n"
   
  -#: ../wikilib.php:647
  -msgid "To create your own templates, add a page with a 'Template' suffix."
  -msgstr "øƮ ÷ Template ̸   弼."
  +#: ../wikilib.php:673
  +#, c-format
  +msgid "To create your own templates, add a page with '%s' pattern."
  +msgstr "øƮ ÷ '%s'  ̸  弼."
   
  -#: ../wikilib.php:650
  +#: ../wikilib.php:677
   msgid "Merge"
   msgstr ""
   
  -#: ../wikilib.php:651
  +#: ../wikilib.php:678
   msgid "Merge manually"
   msgstr ""
   
  -#: ../wikilib.php:652
  +#: ../wikilib.php:679
   msgid "Ignore conflicts"
   msgstr ""
   
  -#: ../wikilib.php:676
  -msgid "Skip to preview"
  -msgstr "̸"
  -
  -#: ../wikilib.php:680
  +#: ../wikilib.php:704
   msgid "ReduceEditor"
   msgstr "â ̱"
   
  -#: ../wikilib.php:681
  +#: ../wikilib.php:705
   msgid "EnlargeEditor"
   msgstr "â ̱"
   
  -#: ../wikilib.php:685 ../locale/dummy.php:6
  +#: ../wikilib.php:709 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr "Ű"
   
  -#: ../wikilib.php:687
  +#: ../wikilib.php:711
   msgid "HelpOnEditing"
   msgstr "ġ "
   
  -#: ../wikilib.php:714
  +#: ../wikilib.php:738
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:731
  +#: ../wikilib.php:755
   msgid "--Select Category--"
   msgstr "--īװ --"
   
  -#: ../wikilib.php:741
  +#: ../wikilib.php:765
   msgid "Minor edit"
   msgstr ""
   
  -#: ../wikilib.php:749 ../wikilib.php:1727 ../wikilib.php:1769
  +#: ../wikilib.php:773
  +msgid "Skip to preview"
  +msgstr "̸"
  +
  +#: ../wikilib.php:775 ../wikilib.php:1779 ../wikilib.php:1821
   msgid "Save"
   msgstr ""
   
  -#: ../wikilib.php:750
  +#: ../wikilib.php:776
   msgid "Summary of Change"
   msgstr "ٲ "
   
  -#: ../wikilib.php:796
  +#: ../wikilib.php:822
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:801
  +#: ../wikilib.php:827
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s() ȿ ׼ ƴմϴ"
   
  -#: ../wikilib.php:803
  +#: ../wikilib.php:829
   msgid "Is it valid action ?"
   msgstr ""
   
  -#: ../wikilib.php:848
  +#: ../wikilib.php:874
   #, c-format
   msgid "File '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:850
  +#: ../wikilib.php:876
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr ""
   
  -#: ../wikilib.php:855
  +#: ../wikilib.php:881
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:857
  +#: ../wikilib.php:883
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr ""
   
  -#: ../wikilib.php:867 ../wikilib.php:887
  +#: ../wikilib.php:893 ../wikilib.php:913
   msgid "No files are selected !"
   msgstr " õ ʾҽϴ !"
   
  -#: ../wikilib.php:880
  +#: ../wikilib.php:906
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr " '%s'() ðڽϱ ?"
   
  -#: ../wikilib.php:883
  +#: ../wikilib.php:909
   msgid "Delete"
   msgstr ""
   
  -#: ../wikilib.php:884
  +#: ../wikilib.php:910
   msgid "Delete selected file"
   msgstr "õ  "
   
  -#: ../wikilib.php:905
  +#: ../wikilib.php:931
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr ""
   
  -#: ../wikilib.php:912
  +#: ../wikilib.php:938
   msgid "Please delete this file manually."
   msgstr ""
   
  -#: ../wikilib.php:914
  +#: ../wikilib.php:940
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "\"%s\"()  ?"
   
  -#: ../wikilib.php:1119 ../wikilib.php:1223
  +#: ../wikilib.php:990
  +#, c-format
  +msgid "%s (rev. %s)"
  +msgstr ""
  +
  +#: ../wikilib.php:1154 ../wikilib.php:1258
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "%s() ġ  ٸ    ߽ϴ"
   
  -#: ../wikilib.php:1125
  +#: ../wikilib.php:1160
   msgid "Section edit is not valid for non-exists page."
   msgstr ""
   
  -#: ../wikilib.php:1158 ../wikilib.php:1332
  +#: ../wikilib.php:1193 ../wikilib.php:1368
   msgid "mail does not supported by default."
   msgstr ""
   
  -#: ../wikilib.php:1162 ../wikilib.php:1336
  +#: ../wikilib.php:1197 ../wikilib.php:1372
   msgid "Sent notification mail."
   msgstr ""
   
  -#: ../wikilib.php:1164 ../wikilib.php:1338
  +#: ../wikilib.php:1199 ../wikilib.php:1374
   msgid "No subscribers found."
   msgstr "ڰ ϴ"
   
  -#: ../wikilib.php:1169 ../wikilib.php:1343
  +#: ../wikilib.php:1204 ../wikilib.php:1379
   #, c-format
   msgid "%s is not editable"
   msgstr "%s()   ϴ"
   
  -#: ../wikilib.php:1171 ../wikilib.php:1345
  +#: ../wikilib.php:1206 ../wikilib.php:1381
   #, c-format
   msgid "%s is saved"
   msgstr "%s() Ǿϴ"
   
  -#: ../wikilib.php:1214
  +#: ../wikilib.php:1249
   msgid "Goto Editor"
   msgstr " "
   
  -#: ../wikilib.php:1227
  +#: ../wikilib.php:1262
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr ""
   
  -#: ../wikilib.php:1228
  +#: ../wikilib.php:1263
   #, c-format
   msgid "%s is merged successfully"
   msgstr "%s()  յǾϴ"
   
  -#: ../wikilib.php:1232
  +#: ../wikilib.php:1267
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr "%s Ͽ  浹 ߰ߵǾϴ !"
   
  -#: ../wikilib.php:1233
  +#: ../wikilib.php:1268
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr "%   ҵǾϴ."
   
  -#: ../wikilib.php:1234
  +#: ../wikilib.php:1269
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1235
  +#: ../wikilib.php:1270
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1240
  +#: ../wikilib.php:1275
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr ""
   
  -#: ../wikilib.php:1241
  +#: ../wikilib.php:1276
   msgid "Please resolve conflicts manually."
   msgstr "浹  ذϽñ ٶϴ."
   
  -#: ../wikilib.php:1244
  +#: ../wikilib.php:1279
   #, c-format
   msgid "Force merging for %s !"
   msgstr "%s    Ǿϴ !"
   
  -#: ../wikilib.php:1245
  +#: ../wikilib.php:1280
   msgid "Please be careful, you could damage useful information."
   msgstr ""
   
  -#: ../wikilib.php:1257
  +#: ../wikilib.php:1292
   msgid "Conflict error!"
   msgstr "浹!"
   
  -#: ../wikilib.php:1294
  +#: ../wikilib.php:1329
   #, c-format
   msgid "Preview of %s"
   msgstr "%s ̸"
   
  -#: ../wikilib.php:1369
  +#: ../wikilib.php:1405
   msgid "Nobody subscribed to this page."
   msgstr "ƹ   ʰֽϴ."
   
  -#: ../wikilib.php:1386
  +#: ../wikilib.php:1424
   #, c-format
   msgid "%s page is modified"
   msgstr ""
   
  -#: ../wikilib.php:1411
  +#: ../wikilib.php:1453
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:1424
  +#: ../wikilib.php:1466
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:1429
  +#: ../wikilib.php:1471
   msgid "Mails are sent successfully"
   msgstr ""
   
  -#: ../wikilib.php:1430
  +#: ../wikilib.php:1472
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1432
  +#: ../wikilib.php:1474
   msgid "Fail to send mail"
   msgstr ""
   
  -#: ../wikilib.php:1443
  +#: ../wikilib.php:1485
   msgid "This wiki does not support sendmail"
   msgstr ""
   
  -#: ../wikilib.php:1536
  +#: ../wikilib.php:1583
   msgid "Invalid regular expression !"
   msgstr "߸ Խ !"
   
  -#: ../wikilib.php:1560
  +#: ../wikilib.php:1607
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:1563
  +#: ../wikilib.php:1610
   msgid "Infinite loop possible!"
   msgstr ""
   
  -#: ../wikilib.php:1685
  +#: ../wikilib.php:1737
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:1686 ../wikilib.php:1786
  +#: ../wikilib.php:1738 ../wikilib.php:1838
   msgid "ID"
   msgstr "̵"
   
  -#: ../wikilib.php:1707 ../wikilib.php:1779
  +#: ../wikilib.php:1759 ../wikilib.php:1831
   msgid "Make profile"
   msgstr " "
   
  -#: ../wikilib.php:1709
  +#: ../wikilib.php:1761
   msgid "password again"
   msgstr "йȣ Է"
   
  -#: ../wikilib.php:1711 ../wikilib.php:1749
  +#: ../wikilib.php:1763 ../wikilib.php:1801
   msgid "Mail"
   msgstr ""
   
  -#: ../wikilib.php:1731
  +#: ../wikilib.php:1783
   msgid "New password"
   msgstr " йȣ"
   
  -#: ../wikilib.php:1750
  +#: ../wikilib.php:1802
   msgid "Time Zone"
   msgstr "ð"
   
  -#: ../wikilib.php:1758
  +#: ../wikilib.php:1810
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:2112
  +#: ../wikilib.php:2153
   msgid "Show all"
   msgstr " "
   
  -#: ../wikilib.php:2254
  +#: ../wikilib.php:2295
   msgid "Contents"
   msgstr ""
   
  -#: ../wikilib.php:2365
  +#: ../wikilib.php:2406
   #, c-format
   msgid "Title search for \"%s\""
   msgstr ""
  
  
  
  1.15      +356 -269  moniwiki/locale/po/moniwiki.pot
  
  Index: moniwiki.pot
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/moniwiki.pot,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- moniwiki.pot	10 Jan 2006 11:39:39 -0000	1.14
  +++ moniwiki.pot	25 Feb 2006 07:16:37 -0000	1.15
  @@ -6,7 +6,7 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: PACKAGE VERSION\n"
  -"POT-Creation-Date: 2006-01-10 19:47+0900\n"
  +"POT-Creation-Date: 2006-02-25 16:18+0900\n"
   "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
   "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
   "Language-Team: LANGUAGE <LL@li.org>\n"
  @@ -33,63 +33,61 @@
   msgid "Translate %s to %s"
   msgstr ""
   
  -#: ../plugin/Blog.php:86 ../plugin/blog2.php:87
  +#: ../plugin/Blog.php:85
   #, c-format
   msgid "Blog cache of \"%s\" is refreshed"
   msgstr ""
   
  -#: ../plugin/Blog.php:110 ../plugin/blog2.php:111
  +#: ../plugin/Blog.php:109
   #, c-format
   msgid "\"%s\" is updated"
   msgstr ""
   
  -#: ../plugin/Blog.php:115 ../plugin/blog2.php:116
  +#: ../plugin/Blog.php:114
   msgid "Add Blog"
   msgstr ""
   
  -#: ../plugin/Blog.php:155 ../plugin/blog2.php:156
  +#: ../plugin/Blog.php:154
   msgid "Error: No blog entry found!"
   msgstr ""
   
  -#: ../plugin/Blog.php:163 ../plugin/Comment.php:135 ../plugin/blog2.php:164
  +#: ../plugin/Blog.php:162 ../plugin/Comment.php:144
   msgid "Error: Don't make a clone!"
   msgstr ""
   
  -#: ../plugin/Blog.php:180 ../plugin/blog2.php:181
  +#: ../plugin/Blog.php:179
   #, c-format
   msgid "Comment added to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:183 ../plugin/blog2.php:184
  +#: ../plugin/Blog.php:182
   #, c-format
   msgid "Blog entry added to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:220 ../plugin/blog2.php:221
  +#: ../plugin/Blog.php:219
   #, c-format
   msgid "Add Comment to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:222 ../plugin/blog2.php:223
  +#: ../plugin/Blog.php:221
   #, c-format
   msgid "Add Blog entry to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:236 ../plugin/Blog.php:292 ../plugin/Comment.php:50
  -#: ../plugin/blog2.php:237 ../plugin/blog2.php:293
  +#: ../plugin/Blog.php:235 ../plugin/Blog.php:290
   msgid "Name"
   msgstr ""
   
  -#: ../plugin/Blog.php:240 ../plugin/Blog.php:293 ../plugin/blog2.php:241
  -#: ../plugin/blog2.php:294
  +#: ../plugin/Blog.php:239 ../plugin/Blog.php:291
   msgid "Title"
   msgstr ""
   
  -#: ../plugin/Blog.php:246 ../plugin/Comment.php:52 ../plugin/blog2.php:247
  +#: ../plugin/Blog.php:245 ../plugin/Comment.php:60
   msgid "Don't add a signature"
   msgstr ""
   
  -#: ../plugin/Blog.php:259 ../plugin/blog2.php:260
  +#: ../plugin/Blog.php:258
   msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
   msgstr ""
   
  @@ -121,8 +119,8 @@
   msgid "%d comments"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:124
  -#: ../plugin/ImportTable.php:76 ../plugin/processor/blog.php:78
  +#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:133
  +#: ../plugin/processor/blog.php:78
   msgid "Add comment"
   msgstr ""
   
  @@ -158,74 +156,78 @@
   msgid "Cut & Paste a Clipboard Image"
   msgstr ""
   
  -#: ../plugin/Comment.php:53
  +#: ../plugin/Comment.php:58
  +msgid "Username"
  +msgstr ""
  +
  +#: ../plugin/Comment.php:61
   msgid "Comment"
   msgstr ""
   
  -#: ../plugin/Comment.php:54 ../plugin/ImportTable.php:67 ../wikilib.php:747
  +#: ../plugin/Comment.php:62 ../wikilib.php:771
   msgid "Preview"
   msgstr ""
   
  -#: ../plugin/Comment.php:74
  +#: ../plugin/Comment.php:81
   msgid "Page is not writable"
   msgstr ""
   
  -#: ../plugin/Comment.php:78
  +#: ../plugin/Comment.php:85
   msgid "You are not allowed to add a comment."
   msgstr ""
   
  -#: ../plugin/Comment.php:79 ../plugin/Keywords.php:256
  +#: ../plugin/Comment.php:86 ../plugin/Keywords.php:292
   msgid "Page does not exists"
   msgstr ""
   
  -#: ../plugin/Comment.php:110 ../wikilib.php:1144 ../wikilib.php:1288
  +#: ../plugin/Comment.php:119 ../wikilib.php:1179 ../wikilib.php:1323
   msgid ""
   "Sorry, can not save page because some messages are blocked in this wiki."
   msgstr ""
   
  -#: ../plugin/Comment.php:115
  +#: ../plugin/Comment.php:124
   msgid "Preview comment"
   msgstr ""
   
  -#: ../plugin/Comment.php:165
  +#: ../plugin/Comment.php:191
   #, c-format
   msgid "%s is commented successfully"
   msgstr ""
   
  -#: ../plugin/Comment.php:166
  +#: ../plugin/Comment.php:192
   msgid "Comment added successfully"
   msgstr ""
   
  -#: ../plugin/Diff.php:151 ../plugin/Diff.php:190 ../wikilib.php:1275
  -msgid "No difference found"
  -msgstr ""
  -
  -#: ../plugin/Diff.php:153
  -msgid "Difference between yours and the current"
  -msgstr ""
  -
  -#: ../plugin/Diff.php:174 ../plugin/Info.php:145
  +#: ../plugin/Diff.php:177 ../plugin/Info.php:188
   msgid "No older revisions available"
   msgstr ""
   
  -#: ../plugin/Diff.php:179 ../plugin/Info.php:151
  +#: ../plugin/Diff.php:182 ../plugin/Info.php:194
   msgid "Version info is not available in this wiki"
   msgstr ""
   
  -#: ../plugin/Diff.php:192
  +#: ../plugin/Diff.php:193 ../wikilib.php:1310
  +msgid "No difference found"
  +msgstr ""
  +
  +#: ../plugin/Diff.php:195
   msgid "Difference between versions"
   msgstr ""
   
  -#: ../plugin/Diff.php:194
  +#: ../plugin/Diff.php:197 ../plugin/Diff.php:320
   #, c-format
   msgid "Difference between r%s and r%s"
   msgstr ""
   
  -#: ../plugin/Diff.php:197
  +#: ../plugin/Diff.php:200 ../plugin/Diff.php:322
   #, c-format
   msgid "Difference between r%s and the current"
   msgstr ""
   
  +#: ../plugin/Diff.php:324
  +msgid "latest changes"
  +msgstr ""
  +
   #: ../plugin/Draw.php:29 ../plugin/OeKaki.php:36
   msgid "Draw new picture"
   msgstr ""
  @@ -257,57 +259,60 @@
   msgid "%d day(s) passed from %s."
   msgstr ""
   
  -#: ../plugin/FastSearch.php:114 ../plugin/FullSearch.php:18
  -#, c-format
  -msgid "Full text search for \"%s\""
  +#: ../plugin/FastSearch.php:44 ../plugin/FullSearch.php:77
  +msgid "No search text"
   msgstr ""
   
  -#: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:28
  -#, c-format
  -msgid "Found %s matching %s out of %s total pages"
  +#: ../plugin/FastSearch.php:50
  +msgid "Couldn't open search database, sorry."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:14
  +#: ../plugin/FastSearch.php:114 ../plugin/FullSearch.php:19
   #, c-format
  -msgid "BackLinks search for \"%s\""
  +msgid "Full text search for \"%s\""
   msgstr ""
   
  -#: ../plugin/FullSearch.php:16
  +#: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:35
   #, c-format
  -msgid "KeyWords search for \"%s\""
  +msgid "Found %s matching %s out of %s total pages"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:30
  +#: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:37
   msgid "page"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:30
  +#: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:37
   msgid "pages"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:33
  -msgid "Context search."
  +#: ../plugin/FullSearch.php:15
  +#, c-format
  +msgid "BackLinks search for \"%s\""
   msgstr ""
   
  -#: ../plugin/FullSearch.php:34
  +#: ../plugin/FullSearch.php:17
   #, c-format
  -msgid " or %s"
  +msgid "KeyWords search for \"%s\""
  +msgstr ""
  +
  +#: ../plugin/FullSearch.php:40
  +msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:36
  +#: ../plugin/FullSearch.php:43
   msgid "Refresh"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:37
  +#: ../plugin/FullSearch.php:44
   #, c-format
   msgid " (%s search results)"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:70
  -msgid "No search text"
  +#: ../plugin/FullSearch.php:120
  +msgid "Empty expression"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:113 ../wikilib.php:2369
  +#: ../plugin/FullSearch.php:124 ../wikilib.php:2410
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr ""
  @@ -320,8 +325,8 @@
   msgid "show comments"
   msgstr ""
   
  -#: ../plugin/Gallery.php:309 ../plugin/Gallery.php:312 ../wikilib.php:1131
  -#: ../wikilib.php:1274
  +#: ../plugin/Gallery.php:309 ../plugin/Gallery.php:312 ../wikilib.php:1166
  +#: ../wikilib.php:1309
   #, c-format
   msgid "Go back or return to %s"
   msgstr ""
  @@ -334,23 +339,38 @@
   msgid "Comments is added"
   msgstr ""
   
  -#: ../plugin/ImportTable.php:32
  -msgid "Convert"
  -msgstr ""
  -
  -#: ../plugin/ImportUrl.php:105
  +#: ../plugin/ImportUrl.php:111
   msgid "Import URL"
   msgstr ""
   
  -#: ../plugin/Info.php:22
  +#: ../plugin/Info.php:28
   msgid "Revision History"
   msgstr ""
   
  -#: ../plugin/Info.php:44
  +#: ../plugin/Info.php:51
   msgid "Show all revisions"
   msgstr ""
   
  -#: ../plugin/Info.php:161
  +#: ../plugin/Info.php:77
  +msgid "Yesterday"
  +msgstr ""
  +
  +#: ../plugin/Info.php:78
  +#, c-format
  +msgid "%s days ago"
  +msgstr ""
  +
  +#: ../plugin/Info.php:80
  +#, c-format
  +msgid "%s hours ago"
  +msgstr ""
  +
  +#: ../plugin/Info.php:82
  +#, c-format
  +msgid "%s min ago"
  +msgstr ""
  +
  +#: ../plugin/Info.php:204
   #, c-format
   msgid "Info. for %s"
   msgstr ""
  @@ -376,84 +396,70 @@
   msgid "Edit new molecule"
   msgstr ""
   
  -#: ../plugin/KeywordView.php:16 ../plugin/Tour.php:16
  -#, c-format
  -msgid "Tour from %s"
  -msgstr ""
  -
  -#: ../plugin/KeywordView.php:66 ../plugin/Tour.php:68
  -msgid "links"
  -msgstr ""
  -
  -#: ../plugin/KeywordView.php:68 ../plugin/Tour.php:70
  -msgid "deeper"
  -msgstr ""
  -
  -#: ../plugin/KeywordView.php:69 ../plugin/Tour.php:71
  -#, c-format
  -msgid "More %s or more %s"
  -msgstr ""
  -
  -#: ../plugin/KeywordView.php:74 ../plugin/Tour.php:77
  -#, c-format
  -msgid "Total %d related pages"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:221
  +#: ../plugin/Keywords.php:255
   msgid "hits"
   msgstr ""
   
  -#: ../plugin/Keywords.php:225
  +#: ../plugin/Keywords.php:259
   msgid "add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:228
  +#: ../plugin/Keywords.php:262
   msgid "Update keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:230
  +#: ../plugin/Keywords.php:264
   msgid "Add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:231
  +#: ../plugin/Keywords.php:265
   msgid "Add as common words"
   msgstr ""
   
  -#: ../plugin/Keywords.php:232
  +#: ../plugin/Keywords.php:266
   msgid "Unselect all"
   msgstr ""
   
  -#: ../plugin/Keywords.php:255
  +#: ../plugin/Keywords.php:267
  +msgid "Suggest new Keywords"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:291
   msgid "You are not able to add keywords."
   msgstr ""
   
  -#: ../plugin/Keywords.php:319
  +#: ../plugin/Keywords.php:300
  +#, c-format
  +msgid "%s is not found."
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:404
   msgid "Common words are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:354
  +#: ../plugin/Keywords.php:451
   #, c-format
   msgid "Keywords for %s are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:379
  +#: ../plugin/Keywords.php:477
   msgid "Keywords are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:381
  +#: ../plugin/Keywords.php:479
   msgid "There are no changes found"
   msgstr ""
   
  -#: ../plugin/Keywords.php:393
  +#: ../plugin/Keywords.php:492
   msgid "Update with these Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:406
  +#: ../plugin/Keywords.php:505
   #, c-format
   msgid "Select keywords for %s"
   msgstr ""
   
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1023 ../wikilib.php:2358
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1058 ../wikilib.php:2399
   msgid "Use more specific text"
   msgstr ""
   
  @@ -559,12 +565,58 @@
   msgid "PHP Version"
   msgstr ""
   
  +#: ../plugin/Tour.php:16
  +#, c-format
  +msgid "Tour from %s"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:56
  +msgid "BackLinks"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:60
  +msgid "Keywords"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:68
  +#, c-format
  +msgid " from %s"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:71
  +#, c-format
  +msgid "%s Tour %s"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:112
  +msgid "links"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:114
  +msgid "deeper"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:115
  +#, c-format
  +msgid "More %s or more %s"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:123
  +#, c-format
  +msgid "Total %d related keywords"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:126
  +#, c-format
  +msgid "Total %d related pages"
  +msgstr ""
  +
   #: ../plugin/TwinPages.php:13
   #, c-format
   msgid "TwinPages of %s"
   msgstr ""
   
  -#: ../plugin/TwinPages.php:19 ../wiki.php:3760
  +#: ../plugin/TwinPages.php:19 ../wiki.php:3910
   msgid "See [TwinPages]: "
   msgstr ""
   
  @@ -599,12 +651,12 @@
   msgid ": Rename"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:278 ../plugin/rename.php:77 ../wikilib.php:882
  -#: ../wikilib.php:1674
  +#: ../plugin/UploadedFiles.php:278 ../plugin/rename.php:77 ../wikilib.php:908
  +#: ../wikilib.php:1726
   msgid "Password"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:279 ../wikilib.php:860
  +#: ../plugin/UploadedFiles.php:279 ../wikilib.php:886
   msgid "Delete selected files"
   msgstr ""
   
  @@ -634,7 +686,7 @@
   msgid "Voted successfully"
   msgstr ""
   
  -#: ../plugin/WordIndex.php:65 ../wikilib.php:2111
  +#: ../plugin/WordIndex.php:66 ../wikilib.php:2152
   msgid "Others"
   msgstr ""
   
  @@ -665,27 +717,31 @@
   msgid "Back to UserPreferences"
   msgstr ""
   
  +#: ../plugin/css.php:63
  +msgid "CSS disabled !"
  +msgstr ""
  +
   #: ../plugin/format.php:15
   msgid "It is a XML format !"
   msgstr ""
   
  -#: ../plugin/login.php:24
  +#: ../plugin/login.php:33
   msgid "Login:"
   msgstr ""
   
  -#: ../plugin/login.php:25
  +#: ../plugin/login.php:34
   msgid "Password:"
   msgstr ""
   
  -#: ../plugin/login.php:26
  +#: ../plugin/login.php:35
   msgid "Join"
   msgstr ""
   
  -#: ../plugin/login.php:42 ../plugin/minilogin.php:29
  +#: ../plugin/login.php:51 ../plugin/minilogin.php:29
   msgid "Logout"
   msgstr ""
   
  -#: ../plugin/login.php:43 ../plugin/minilogin.php:28 ../locale/dummy.php:3
  +#: ../plugin/login.php:52 ../plugin/minilogin.php:28 ../locale/dummy.php:3
   msgid "UserPreferences"
   msgstr ""
   
  @@ -697,7 +753,7 @@
   msgid "No manpage found"
   msgstr ""
   
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1724
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1776
   msgid "Login or Join"
   msgstr ""
   
  @@ -732,7 +788,7 @@
   msgid "last modified %s %s"
   msgstr ""
   
  -#: ../plugin/processor/vim.php:47
  +#: ../plugin/processor/vim.php:49
   msgid "Toggle line numbers"
   msgstr ""
   
  @@ -793,11 +849,11 @@
   msgid "RCS purge \"%s\""
   msgstr ""
   
  -#: ../plugin/rdf_blog.php:31 ../plugin/rss_blog.php:26
  +#: ../plugin/rdf_blog.php:31 ../plugin/rss_blog.php:25
   msgid "Blog Changes"
   msgstr ""
   
  -#: ../plugin/rdf_blog.php:45 ../plugin/rss_blog.php:104
  +#: ../plugin/rdf_blog.php:45 ../plugin/rss_blog.php:103
   #, c-format
   msgid "BlogChanges at %s"
   msgstr ""
  @@ -847,7 +903,7 @@
   msgid "Only WikiMaster can rename this page"
   msgstr ""
   
  -#: ../plugin/rename.php:79 ../wikilib.php:920
  +#: ../plugin/rename.php:79 ../wikilib.php:946
   msgid "with revision history"
   msgstr ""
   
  @@ -930,11 +986,11 @@
   msgid "Error: No entry found!"
   msgstr ""
   
  -#: ../plugin/sendping.php:72
  +#: ../plugin/sendping.php:71
   msgid "Send TrackBack ping"
   msgstr ""
   
  -#: ../plugin/sendping.php:166
  +#: ../plugin/sendping.php:165
   msgid "Trackback sent"
   msgstr ""
   
  @@ -967,14 +1023,26 @@
   msgid "Do you want to subscribe \"%s\" ?"
   msgstr ""
   
  -#: ../plugin/theme.php:23
  +#: ../plugin/theme.php:28
   msgid "Theme cleared. Goto UserPreferences."
   msgstr ""
   
  -#: ../plugin/theme.php:63
  +#: ../plugin/theme.php:39
  +msgid "Theme is changed"
  +msgstr ""
  +
  +#: ../plugin/theme.php:68
   msgid "Please select a theme properly."
   msgstr ""
   
  +#: ../plugin/theme.php:78
  +msgid "Theme disabled !"
  +msgstr ""
  +
  +#: ../plugin/theme.php:92
  +msgid "-- Select --"
  +msgstr ""
  +
   #: ../plugin/ticket.php:75
   msgid "Invalid use of ticket"
   msgstr ""
  @@ -1029,162 +1097,162 @@
   msgid "ID does not exists !"
   msgstr ""
   
  -#: ../plugin/userform.php:87 ../plugin/userform.php:267
  +#: ../plugin/userform.php:86 ../plugin/userform.php:266
   #, c-format
   msgid "Successfully login as '%s'"
   msgstr ""
   
  -#: ../plugin/userform.php:93 ../plugin/userform.php:272
  -#: ../plugin/userform.php:315
  +#: ../plugin/userform.php:92 ../plugin/userform.php:271
  +#: ../plugin/userform.php:314
   msgid "Invalid password !"
   msgstr ""
   
  -#: ../plugin/userform.php:97
  +#: ../plugin/userform.php:96
   #, c-format
   msgid "\"%s\" does not exists on this wiki !"
   msgstr ""
   
  -#: ../plugin/userform.php:99
  +#: ../plugin/userform.php:98
   msgid "Make new ID on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:105
  +#: ../plugin/userform.php:104
   msgid "Cookie deleted !"
   msgstr ""
   
  -#: ../plugin/userform.php:107 ../wikilib.php:1781
  +#: ../plugin/userform.php:106 ../wikilib.php:1833
   msgid "E-mail new password"
   msgstr ""
   
  -#: ../plugin/userform.php:118 ../plugin/userform.php:181
  -#: ../plugin/userform.php:204
  +#: ../plugin/userform.php:117 ../plugin/userform.php:180
  +#: ../plugin/userform.php:203
   msgid "Invalid ticket !"
   msgstr ""
   
  -#: ../plugin/userform.php:120 ../plugin/userform.php:206
  +#: ../plugin/userform.php:119 ../plugin/userform.php:205
   msgid "You need a ticket !"
   msgstr ""
   
  -#: ../plugin/userform.php:152
  +#: ../plugin/userform.php:151
   msgid "New password confirmation"
   msgstr ""
   
  -#: ../plugin/userform.php:157
  +#: ../plugin/userform.php:156
   msgid "Please confirm your new password"
   msgstr ""
   
  -#: ../plugin/userform.php:159
  +#: ../plugin/userform.php:158
   #, c-format
   msgid "Your new password is %s"
   msgstr ""
   
  -#: ../plugin/userform.php:160 ../plugin/userform.php:259
  +#: ../plugin/userform.php:159 ../plugin/userform.php:258
   msgid "Please change your password later"
   msgstr ""
   
  -#: ../plugin/userform.php:164 ../plugin/userform.php:172
  +#: ../plugin/userform.php:163 ../plugin/userform.php:171
   msgid "Fail to e-mail notification !"
   msgstr ""
   
  -#: ../plugin/userform.php:167
  +#: ../plugin/userform.php:166
   msgid "New password is sent to your e-mail !"
   msgstr ""
   
  -#: ../plugin/userform.php:168
  +#: ../plugin/userform.php:167
   msgid "Please check your e-mail"
   msgstr ""
   
  -#: ../plugin/userform.php:173
  +#: ../plugin/userform.php:172
   msgid "E-mail mismatch !"
   msgstr ""
   
  -#: ../plugin/userform.php:175
  +#: ../plugin/userform.php:174
   msgid "Invalid request"
   msgstr ""
   
  -#: ../plugin/userform.php:176
  +#: ../plugin/userform.php:175
   msgid "Please confirm your e-mail address first !"
   msgstr ""
   
  -#: ../plugin/userform.php:183
  +#: ../plugin/userform.php:182
   msgid "ID and e-mail mismatch !"
   msgstr ""
   
  -#: ../plugin/userform.php:185
  +#: ../plugin/userform.php:184
   msgid "Please try again or make a new profile"
   msgstr ""
   
  -#: ../plugin/userform.php:225 ../plugin/userform.php:303
  +#: ../plugin/userform.php:224 ../plugin/userform.php:302
   msgid "too short password!"
   msgstr ""
   
  -#: ../plugin/userform.php:226
  +#: ../plugin/userform.php:225
   msgid "mismatch password!"
   msgstr ""
   
  -#: ../plugin/userform.php:227 ../plugin/userform.php:307
  +#: ../plugin/userform.php:226 ../plugin/userform.php:306
   msgid "not acceptable character found in the password!"
   msgstr ""
   
  -#: ../plugin/userform.php:230
  +#: ../plugin/userform.php:229
   msgid "Your password is too simple to use as a password !"
   msgstr ""
   
  -#: ../plugin/userform.php:236 ../plugin/userform.php:338
  +#: ../plugin/userform.php:235 ../plugin/userform.php:337
   msgid "Your email address is not valid"
   msgstr ""
   
  -#: ../plugin/userform.php:240
  +#: ../plugin/userform.php:239
   msgid "Successfully added!"
   msgstr ""
   
  -#: ../plugin/userform.php:246
  +#: ../plugin/userform.php:245
   #, c-format
   msgid "Successfully added as '%s'"
   msgstr ""
   
  -#: ../plugin/userform.php:247
  +#: ../plugin/userform.php:246
   msgid "Please check your mailbox"
   msgstr ""
   
  -#: ../plugin/userform.php:254 ../plugin/userform.php:332
  +#: ../plugin/userform.php:253 ../plugin/userform.php:331
   msgid "E-mail confirmation"
   msgstr ""
   
  -#: ../plugin/userform.php:256 ../plugin/userform.php:334
  +#: ../plugin/userform.php:255 ../plugin/userform.php:333
   msgid "Please confirm your email address"
   msgstr ""
   
  -#: ../plugin/userform.php:258
  +#: ../plugin/userform.php:257
   #, c-format
   msgid "Your initial password is %s"
   msgstr ""
   
  -#: ../plugin/userform.php:262 ../plugin/userform.php:336
  +#: ../plugin/userform.php:261 ../plugin/userform.php:335
   msgid "E-mail confirmation mail sent"
   msgstr ""
   
  -#: ../plugin/userform.php:277
  +#: ../plugin/userform.php:276
   msgid "Invalid username !"
   msgstr ""
   
  -#: ../plugin/userform.php:305
  +#: ../plugin/userform.php:304
   msgid "mismatch password !"
   msgstr ""
   
  -#: ../plugin/userform.php:308 ../plugin/userform.php:316
  +#: ../plugin/userform.php:307 ../plugin/userform.php:315
   msgid "Password is not changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:310
  +#: ../plugin/userform.php:309
   msgid "Password is changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:312
  +#: ../plugin/userform.php:311
   msgid "Password is too simple to use as a password !"
   msgstr ""
   
  -#: ../plugin/userform.php:344
  +#: ../plugin/userform.php:343
   msgid "Profiles are saved successfully !"
   msgstr ""
   
  @@ -1198,109 +1266,122 @@
   msgid "Whois search result for %s"
   msgstr ""
   
  -#: ../wiki.php:1087
  +#: ../wiki.php:1107
   #, c-format
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1380
  +#: ../wiki.php:1408
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
  -#: ../wiki.php:1391
  +#: ../wiki.php:1418
   msgid "File does not exists"
   msgstr ""
   
  -#: ../wiki.php:2274
  +#: ../wiki.php:2360
   msgid "Invalid ajax action."
   msgstr ""
   
  -#: ../wiki.php:2503
  +#: ../wiki.php:2589
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:2503
  +#: ../wiki.php:2589
   msgid "TwinPages"
   msgstr ""
   
  -#: ../wiki.php:2508
  +#: ../wiki.php:2594
   msgid "See [TwinPages]:"
   msgstr ""
   
  -#: ../wiki.php:3193 ../locale/dummy.php:6
  +#: ../wiki.php:2899
  +msgid "edit"
  +msgstr ""
  +
  +#: ../wiki.php:3052
  +msgid "Sister Sites Index"
  +msgstr ""
  +
  +#: ../wiki.php:3336 ../locale/dummy.php:6
   msgid "EditText"
   msgstr ""
   
  -#: ../wiki.php:3195
  +#: ../wiki.php:3338
   msgid "NotEditable"
   msgstr ""
   
  -#: ../wiki.php:3197 ../locale/dummy.php:6
  +#: ../wiki.php:3340 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:3198 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:3341 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr ""
   
  -#: ../wiki.php:3461
  +#: ../wiki.php:3609
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:3720
  +#: ../wiki.php:3870
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:3721 ../wiki.php:3732
  +#: ../wiki.php:3871 ../wiki.php:3882
   msgid "Please contact WikiMasters"
   msgstr ""
   
  -#: ../wiki.php:3731
  +#: ../wiki.php:3881
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:3762 ../wiki.php:3765 ../wikilib.php:1065
  +#: ../wiki.php:3912 ../wiki.php:3915 ../wikilib.php:1100
   msgid "Create this page"
   msgstr ""
   
  -#: ../wiki.php:3767 ../wikilib.php:1067
  +#: ../wiki.php:3917 ../wikilib.php:1102
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
   
  -#: ../wiki.php:3767 ../wikilib.php:1067
  +#: ../wiki.php:3917 ../wikilib.php:1102
   msgid "title"
   msgstr ""
   
  -#: ../wiki.php:3773
  +#: ../wiki.php:3926
   msgid " or alternativly, use one of these templates:\n"
   msgstr ""
   
  -#: ../wiki.php:3776
  -msgid "To create your own templates, add a page with a 'Template' suffix.\n"
  +#: ../wiki.php:3929
  +msgid "You have no templates"
  +msgstr ""
  +
  +#: ../wiki.php:3931
  +#, c-format
  +msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
   
  -#: ../wiki.php:3787
  +#: ../wiki.php:3942
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
  -#: ../wiki.php:3864
  +#: ../wiki.php:4032
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr ""
   
  -#: ../wiki.php:3885
  +#: ../wiki.php:4052
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:3888
  +#: ../wiki.php:4055
   msgid "Please enter the valid password"
   msgstr ""
   
  -#: ../wikilib.php:526
  +#: ../wikilib.php:547
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -1317,316 +1398,322 @@
   "no trailing white space allowed after tables or titles.<br />\n"
   msgstr ""
   
  -#: ../wikilib.php:564
  +#: ../wikilib.php:588
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
  -#: ../wikilib.php:645
  +#: ../wikilib.php:671
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   
  -#: ../wikilib.php:647
  -msgid "To create your own templates, add a page with a 'Template' suffix."
  +#: ../wikilib.php:673
  +#, c-format
  +msgid "To create your own templates, add a page with '%s' pattern."
   msgstr ""
   
  -#: ../wikilib.php:650
  +#: ../wikilib.php:677
   msgid "Merge"
   msgstr ""
   
  -#: ../wikilib.php:651
  +#: ../wikilib.php:678
   msgid "Merge manually"
   msgstr ""
   
  -#: ../wikilib.php:652
  +#: ../wikilib.php:679
   msgid "Ignore conflicts"
   msgstr ""
   
  -#: ../wikilib.php:676
  -msgid "Skip to preview"
  -msgstr ""
  -
  -#: ../wikilib.php:680
  +#: ../wikilib.php:704
   msgid "ReduceEditor"
   msgstr ""
   
  -#: ../wikilib.php:681
  +#: ../wikilib.php:705
   msgid "EnlargeEditor"
   msgstr ""
   
  -#: ../wikilib.php:685 ../locale/dummy.php:6
  +#: ../wikilib.php:709 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
  -#: ../wikilib.php:687
  +#: ../wikilib.php:711
   msgid "HelpOnEditing"
   msgstr ""
   
  -#: ../wikilib.php:714
  +#: ../wikilib.php:738
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:731
  +#: ../wikilib.php:755
   msgid "--Select Category--"
   msgstr ""
   
  -#: ../wikilib.php:741
  +#: ../wikilib.php:765
   msgid "Minor edit"
   msgstr ""
   
  -#: ../wikilib.php:749 ../wikilib.php:1727 ../wikilib.php:1769
  +#: ../wikilib.php:773
  +msgid "Skip to preview"
  +msgstr ""
  +
  +#: ../wikilib.php:775 ../wikilib.php:1779 ../wikilib.php:1821
   msgid "Save"
   msgstr ""
   
  -#: ../wikilib.php:750
  +#: ../wikilib.php:776
   msgid "Summary of Change"
   msgstr ""
   
  -#: ../wikilib.php:796
  +#: ../wikilib.php:822
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:801
  +#: ../wikilib.php:827
   #, c-format
   msgid "%s is not valid action"
   msgstr ""
   
  -#: ../wikilib.php:803
  +#: ../wikilib.php:829
   msgid "Is it valid action ?"
   msgstr ""
   
  -#: ../wikilib.php:848
  +#: ../wikilib.php:874
   #, c-format
   msgid "File '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:850
  +#: ../wikilib.php:876
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr ""
   
  -#: ../wikilib.php:855
  +#: ../wikilib.php:881
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:857
  +#: ../wikilib.php:883
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr ""
   
  -#: ../wikilib.php:867 ../wikilib.php:887
  +#: ../wikilib.php:893 ../wikilib.php:913
   msgid "No files are selected !"
   msgstr ""
   
  -#: ../wikilib.php:880
  +#: ../wikilib.php:906
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
  -#: ../wikilib.php:883
  +#: ../wikilib.php:909
   msgid "Delete"
   msgstr ""
   
  -#: ../wikilib.php:884
  +#: ../wikilib.php:910
   msgid "Delete selected file"
   msgstr ""
   
  -#: ../wikilib.php:905
  +#: ../wikilib.php:931
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr ""
   
  -#: ../wikilib.php:912
  +#: ../wikilib.php:938
   msgid "Please delete this file manually."
   msgstr ""
   
  -#: ../wikilib.php:914
  +#: ../wikilib.php:940
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr ""
   
  -#: ../wikilib.php:1119 ../wikilib.php:1223
  +#: ../wikilib.php:990
  +#, c-format
  +msgid "%s (rev. %s)"
  +msgstr ""
  +
  +#: ../wikilib.php:1154 ../wikilib.php:1258
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr ""
   
  -#: ../wikilib.php:1125
  +#: ../wikilib.php:1160
   msgid "Section edit is not valid for non-exists page."
   msgstr ""
   
  -#: ../wikilib.php:1158 ../wikilib.php:1332
  +#: ../wikilib.php:1193 ../wikilib.php:1368
   msgid "mail does not supported by default."
   msgstr ""
   
  -#: ../wikilib.php:1162 ../wikilib.php:1336
  +#: ../wikilib.php:1197 ../wikilib.php:1372
   msgid "Sent notification mail."
   msgstr ""
   
  -#: ../wikilib.php:1164 ../wikilib.php:1338
  +#: ../wikilib.php:1199 ../wikilib.php:1374
   msgid "No subscribers found."
   msgstr ""
   
  -#: ../wikilib.php:1169 ../wikilib.php:1343
  +#: ../wikilib.php:1204 ../wikilib.php:1379
   #, c-format
   msgid "%s is not editable"
   msgstr ""
   
  -#: ../wikilib.php:1171 ../wikilib.php:1345
  +#: ../wikilib.php:1206 ../wikilib.php:1381
   #, c-format
   msgid "%s is saved"
   msgstr ""
   
  -#: ../wikilib.php:1214
  +#: ../wikilib.php:1249
   msgid "Goto Editor"
   msgstr ""
   
  -#: ../wikilib.php:1227
  +#: ../wikilib.php:1262
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr ""
   
  -#: ../wikilib.php:1228
  +#: ../wikilib.php:1263
   #, c-format
   msgid "%s is merged successfully"
   msgstr ""
   
  -#: ../wikilib.php:1232
  +#: ../wikilib.php:1267
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1233
  +#: ../wikilib.php:1268
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr ""
   
  -#: ../wikilib.php:1234
  +#: ../wikilib.php:1269
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1235
  +#: ../wikilib.php:1270
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1240
  +#: ../wikilib.php:1275
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr ""
   
  -#: ../wikilib.php:1241
  +#: ../wikilib.php:1276
   msgid "Please resolve conflicts manually."
   msgstr ""
   
  -#: ../wikilib.php:1244
  +#: ../wikilib.php:1279
   #, c-format
   msgid "Force merging for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1245
  +#: ../wikilib.php:1280
   msgid "Please be careful, you could damage useful information."
   msgstr ""
   
  -#: ../wikilib.php:1257
  +#: ../wikilib.php:1292
   msgid "Conflict error!"
   msgstr ""
   
  -#: ../wikilib.php:1294
  +#: ../wikilib.php:1329
   #, c-format
   msgid "Preview of %s"
   msgstr ""
   
  -#: ../wikilib.php:1369
  +#: ../wikilib.php:1405
   msgid "Nobody subscribed to this page."
   msgstr ""
   
  -#: ../wikilib.php:1386
  +#: ../wikilib.php:1424
   #, c-format
   msgid "%s page is modified"
   msgstr ""
   
  -#: ../wikilib.php:1411
  +#: ../wikilib.php:1453
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:1424
  +#: ../wikilib.php:1466
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:1429
  +#: ../wikilib.php:1471
   msgid "Mails are sent successfully"
   msgstr ""
   
  -#: ../wikilib.php:1430
  +#: ../wikilib.php:1472
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1432
  +#: ../wikilib.php:1474
   msgid "Fail to send mail"
   msgstr ""
   
  -#: ../wikilib.php:1443
  +#: ../wikilib.php:1485
   msgid "This wiki does not support sendmail"
   msgstr ""
   
  -#: ../wikilib.php:1536
  +#: ../wikilib.php:1583
   msgid "Invalid regular expression !"
   msgstr ""
   
  -#: ../wikilib.php:1560
  +#: ../wikilib.php:1607
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:1563
  +#: ../wikilib.php:1610
   msgid "Infinite loop possible!"
   msgstr ""
   
  -#: ../wikilib.php:1685
  +#: ../wikilib.php:1737
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:1686 ../wikilib.php:1786
  +#: ../wikilib.php:1738 ../wikilib.php:1838
   msgid "ID"
   msgstr ""
   
  -#: ../wikilib.php:1707 ../wikilib.php:1779
  +#: ../wikilib.php:1759 ../wikilib.php:1831
   msgid "Make profile"
   msgstr ""
   
  -#: ../wikilib.php:1709
  +#: ../wikilib.php:1761
   msgid "password again"
   msgstr ""
   
  -#: ../wikilib.php:1711 ../wikilib.php:1749
  +#: ../wikilib.php:1763 ../wikilib.php:1801
   msgid "Mail"
   msgstr ""
   
  -#: ../wikilib.php:1731
  +#: ../wikilib.php:1783
   msgid "New password"
   msgstr ""
   
  -#: ../wikilib.php:1750
  +#: ../wikilib.php:1802
   msgid "Time Zone"
   msgstr ""
   
  -#: ../wikilib.php:1758
  +#: ../wikilib.php:1810
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:2112
  +#: ../wikilib.php:2153
   msgid "Show all"
   msgstr ""
   
  -#: ../wikilib.php:2254
  +#: ../wikilib.php:2295
   msgid "Contents"
   msgstr ""
   
  -#: ../wikilib.php:2365
  +#: ../wikilib.php:2406
   #, c-format
   msgid "Title search for \"%s\""
   msgstr ""
  
  
  


wkpark      2006/02/25 16:21:30

  Modified:    local    moniwyg.js
  Log:
  disable 'pre'
  
  Revision  Changes    Path
  1.6       +1 -3      moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- moniwyg.js	3 Feb 2006 22:22:33 -0000	1.5
  +++ moniwyg.js	25 Feb 2006 07:21:30 -0000	1.6
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.5 2006/02/03 22:22:33 wkpark Exp $
  +// $Id: moniwyg.js,v 1.6 2006/02/25 07:21:30 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -349,7 +349,6 @@
       'hr',
       'table',
       'indent', 'outdent', '|',
  -    'pre',
       'quote', '|',
       'image',
       'media',
  @@ -375,7 +374,6 @@
   proto.config.markupRules.h4 = ['bound_line', '==== ', ' ===='],
   proto.config.markupRules.h5 = ['bound_line', '===== ', ' ====='],
   proto.config.markupRules.h6 = ['bound_line', '====== ', ' ======'],
  -proto.config.markupRules.pre = ['bound_phrase','{{{','}}}'],
   proto.config.markupRules.ordered = ['start_lines', ' 1.'];
   proto.config.markupRules.unordered = ['start_lines', ' *'];
   proto.config.markupRules.indent = ['start_lines', ' '];
  
  
  


wkpark      2006/02/25 18:43:53

  Modified:    .        config.php.default
  Log:
  change default $menu
  
  Revision  Changes    Path
  1.28      +4 -2      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- config.php.default	25 Feb 2006 07:01:02 -0000	1.27
  +++ config.php.default	25 Feb 2006 09:43:53 -0000	1.28
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.27 2006/02/25 07:01:02 wkpark Exp $
  +# $Id: config.php.default,v 1.28 2006/02/25 09:43:53 wkpark Exp $
   #
   $sitename='UnnamedWiki';
   $data_dir= './data';
  @@ -58,6 +58,7 @@
   #$owners=array('moniwiki','Hong');
   
   #$menu=array('MoniWiki'=>1,'FindPage'=>4,'TitleIndex'=>3,'BlogChanges'=>'','RecentChanges'=>2,'http://kldp.org KLDP'=>9);
  +$menu=array('FrontPage'=>1,'FindPage'=>4,'TitleIndex'=>3,'RecentChanges'=>2,'UserPreferences'=>'');
   #$menu_sep='|';
   #$menu_bra='';
   #$menu_cat='';
  @@ -136,7 +137,8 @@
   $use_alias=0;
   #$aliaspage=$data_dir.'/text/AliasPageNames';
   $css_friendly=0;
  -$use_redirect_msg=1; # like as MoinMoin
  +$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=$data_dir.'/text/UrlMap'; # enable builtin fix url
  
  
  


iolo        2006/03/01 14:26:56

  Modified:    css      print.css slide.css
  Log:
  fix typo(replace "nonexists" to "nonexistent").
  
  Revision  Changes    Path
  1.10      +1 -1      moniwiki/css/print.css
  
  Index: print.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/print.css,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- print.css	19 Jan 2006 14:15:30 -0000	1.9
  +++ print.css	1 Mar 2006 05:26:56 -0000	1.10
  @@ -190,7 +190,7 @@
   }
   
   a.purple { font-size: 10px; display:none;}
  -a.nonexists {display: none;}
  +a.nonexistent {display: none;}
   /* Blog CSS */
   a.perma { font-size: 10px; display:none;}
   a.purple { display: none;}
  
  
  
  1.4       +1 -1      moniwiki/css/slide.css
  
  Index: slide.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/slide.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- slide.css	23 Sep 2005 17:15:11 -0000	1.3
  +++ slide.css	1 Mar 2006 05:26:56 -0000	1.4
  @@ -194,7 +194,7 @@
   }
   
   a.purple { font-size: 10px; display:none;}
  -a.nonexists {display: none;}
  +a.nonexistent {display: none;}
   /* Blog CSS */
   a.perma { font-size: 10px; display:none;}
   a.purple { display: none;}
  
  
  


iolo        2006/03/01 15:26:24

  Modified:    plugin   Navigation.php
  Log:
  fix bug#301055.
  
  Revision  Changes    Path
  1.11      +3 -4      moniwiki/plugin/Navigation.php
  
  Index: Navigation.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Navigation.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- Navigation.php	29 Apr 2005 12:16:33 -0000	1.10
  +++ Navigation.php	1 Mar 2006 06:26:24 -0000	1.11
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Navigation(IndexPage)]]
   //
  -// $Id: Navigation.php,v 1.10 2005/04/29 12:16:33 wkpark Exp $
  +// $Id: Navigation.php,v 1.11 2006/03/01 06:26:24 iolo Exp $
   
   function macro_Navigation($formatter,$value) {
     global $DBInfo;
  @@ -88,8 +88,7 @@
         $prev=$indices[$prev];
         if (($p=strpos($prev,'~'))!==false)
           $prev_text=substr($prev,$p+1);
  -      if ($prev_text)
  -      $pnut.=$formatter->link_repl("[wiki:$prev $prev_text]"," accesskey=\",\" ");
  +      $pnut.=$formatter->link_tag($prev, "", $prev_text," accesskey=\",\" ");
       }
       if ($use_action) $formatter->query_string=$save;
       $pnut.=" | ".$formatter->link_repl("[wiki:$index $index_text]")." | ";
  @@ -99,7 +98,7 @@
         $next=$indices[$next];
         if (($p=strpos($next,'~'))!==false)
           $next_text=substr($next,$p+1);
  -      $pnut.=$formatter->link_repl("[wiki:$next $next_text]"," accesskey=\".\" ");
  +      $pnut.=$formatter->link_tag($next, "", $next_text, " accesskey=\".\" ");
       }
       $pnut.=' &raquo;';
       if ($use_action) $formatter->query_string=$save;
  
  
  


wkpark      2006/03/03 23:13:40

  Modified:    plugin   Keywords.php
  Log:
  option 'random' added suggested by nobody
  
  Revision  Changes    Path
  1.12      +18 -1     moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- Keywords.php	19 Jan 2006 08:30:19 -0000	1.11
  +++ Keywords.php	3 Mar 2006 14:13:40 -0000	1.12
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a 'Keywords' plugin for the MoniWiki
   //
  -// $Id: Keywords.php,v 1.11 2006/01/19 08:30:19 wkpark Exp $
  +// $Id: Keywords.php,v 1.12 2006/03/03 14:13:40 wkpark Exp $
   
   define(LOCAL_KEYWORDS,'LocalKeywords');
   
  @@ -24,11 +24,19 @@
           else if ($opt == 'flickr')
               $tag_link='http://www.flickr.com/photos/tags/$TAG';
           else if ($opt=='all') { $options['all']=1; $limit=0; }
  +        else if ($opt=='random') {
  +            $options['random']=$options['all']=1; }
           else if ($opt=='suggest') $options['suggest']=1;
           else if (($p=strpos($opt,'='))!==false) {
               $k=substr($opt,0,$p);
               $v=substr($opt,$p+1);
               if ($k=='limit') $limit=$v;
  +            else if ($k=='random') {
  +                $options['all']=1;
  +                $v=(int)$v;
  +                $v=($v > 0) ? $v:1;
  +                $options['random']=$v;
  +            }
               else if ($k=='sort' and in_array($v,array('freq','alpha')))
                   $sort=$v;
               else if ($k=='type' and in_array($v,array('full','title')))
  @@ -42,6 +50,7 @@
               $pagename=$opt;
           }
       }
  +    if ($options['random'] and !$limit) $limit=0;
   
       if (!$pagename) $pagename=$formatter->page->name;
   
  @@ -68,6 +77,14 @@
           arsort($words);
           $max=current($words); // get max hit number
   
  +        if ($options['random']) {
  +            $rws=array();
  +            $selected=array_rand($words,$options['random']);
  +            foreach($selected as $k) {
  +                $rws[$k]=$words[$k];
  +            }
  +            $words=&$rws;
  +        }
           #print_r($words);
       } else {
           $max=3; // default weight
  
  
  


wkpark      2006/04/11 16:48:35

  Modified:    .        wiki.php
  Log:
  recentchange bug fixed by Che. Thank you :)
  (http://kldp.net/forum/forum.php?thread_id=6848&forum_id=712)
  
  Revision  Changes    Path
  1.292     +10 -7     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.291
  retrieving revision 1.292
  diff -u -r1.291 -r1.292
  --- wiki.php	8 Feb 2006 08:41:02 -0000	1.291
  +++ wiki.php	11 Apr 2006 07:48:35 -0000	1.292
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.291 2006/02/08 08:41:02 wkpark Exp $
  +// $Id: wiki.php,v 1.292 2006/04/11 07:48:35 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.291 $',1,-1);
  +$_revision = substr('$Revision: 1.292 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -924,20 +924,23 @@
       $fp= fopen($this->editlog_name, 'r');
       while (is_resource($fp) and ($fz=filesize($this->editlog_name))>0){
         fseek($fp,0,SEEK_END);
  -      if ($fz < 1024) {
  +      if ($fz <= 1024) {
           fseek($fp,0);
           $ll=rtrim(fread($fp,1024));
  -        $lines=explode("\n",$ll);
  +        $lines=array_reverse(explode("\n",$ll));
           break;   
         }
         $a=-1; // hack, don't read last \n char.
         $last='';
         fseek($fp,0,SEEK_END);
         while($date_from < $check and !feof($fp)){
  -        $a-=1024;
  -        if (-$a > $fz) { $a=-$fz;}
  +        $rlen=$fz + $a;
  +        if ($rlen > 1024) { $rlen=1024;}
  +        else if ($rlen <= 0) break;
  +        $a-=$rlen;
           fseek($fp,$a,SEEK_END);
  -        $l=fread($fp,1024);
  +        $l=fread($fp,$rlen);
  +        if ($rlen != 1024) $l="\n".$l; // hack, for the first log entry.
           while(($p=strrpos($l,"\n"))!==false) {
             $line=substr($l,$p+1).$last;
             $l=substr($l,0,$p);
  
  
  


wkpark      2006/04/25 12:37:20

  Modified:    .        wiki.php config.php.default
  Log:
  add $use_titlemenu option.
  
  Revision  Changes    Path
  1.293     +24 -4     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.292
  retrieving revision 1.293
  diff -u -r1.292 -r1.293
  --- wiki.php	11 Apr 2006 07:48:35 -0000	1.292
  +++ wiki.php	25 Apr 2006 03:37:20 -0000	1.293
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.292 2006/04/11 07:48:35 wkpark Exp $
  +// $Id: wiki.php,v 1.293 2006/04/25 03:37:20 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.292 $',1,-1);
  +$_revision = substr('$Revision: 1.293 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -3156,8 +3156,14 @@
       }
       $content_type=
         $DBInfo->content_type ? $DBInfo->content_type: "text/html";
  +
  +    if ($DBInfo->force_charset)
  +      $force_charset = '; charset='.$DBInfo->charset;
  +
       if (!$plain)
  -      $this->header('Content-type: '.$content_type);
  +      $this->header('Content-type: '.$content_type.$force_charset);
  +#    if (!$plain)
  +#      $this->header('Content-type: '.$content_type);
   
       if (isset($this->pi['#noindex'])) {
         $metatags='<meta name="robots" content="noindex,nofollow" />';
  @@ -3487,11 +3493,17 @@
         # get from the config.php
         $quicklinks=$this->menu;
       }
  +
       $sister_save=$this->sister_on;
       $this->sister_on=0;
  +    $titlemnu=0;
       foreach ($quicklinks as $item=>$attr) {
         if (strpos($item,' ') === false) {
           if (strpos($attr,'=') === false) $attr="accesskey='$attr'";
  +        if ($item == $this->page->name) {
  +          $attr.=" class='current'";
  +          $titlemnu=1;
  +        }
           # like 'MoniWiki'=>'accesskey="1"'
           $menu[]=$this->word_repl($item,_($item),$attr);
   #        $menu[]=$this->link_tag($item,"",_($item),$attr);
  @@ -3500,6 +3512,11 @@
           $menu[]=$this->link_repl($item,$attr);
         }
       }
  +    if ($DBInfo->use_titlemenu and $titlemnu == 0 ) {
  +      $attr="class='current'";
  +      # XXX make title more shorter to name abbr
  +      $menu[]=$this->word_repl($this->page->name,'',$attr);
  +    }
       $this->sister_on=$sister_save;
       if (!$this->css_friendly) {
         $menu=$this->menu_bra.join($this->menu_sep,$menu).$this->menu_cat;
  @@ -3508,7 +3525,10 @@
         #  #if $menu[$i]==
         #  $menu[$i]="<li >".$menu[$i]."</li>\n";
         #}
  -      $menu='<div id="wikiMenu"><ul><li>'.implode("</li>\n<li>",$menu)."</li></ul></div>\n";
  +      $menu='<div id="wikiMenu"><ul><li>'.implode("</li><li>",$menu)."</li></ul></div>\n";
  +      # set current attribute.
  +      $menu=preg_replace("/(li)>(<a\s[^>]+current[^>]+)/",
  +        "$1 class='current'>$2",$menu);
       }
   
       # icons
  
  
  
  1.29      +2 -1      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- config.php.default	25 Feb 2006 09:43:53 -0000	1.28
  +++ config.php.default	25 Apr 2006 03:37:20 -0000	1.29
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.28 2006/02/25 09:43:53 wkpark Exp $
  +# $Id: config.php.default,v 1.29 2006/04/25 03:37:20 wkpark Exp $
   #
   $sitename='UnnamedWiki';
   $data_dir= './data';
  @@ -51,6 +51,7 @@
   #$nonexists='nolink';
   #$nonexists='forcelink';
   #$use_titlecache=0;
  +#$use_titlemenu=1; # use current title name as menu
   #$security_class="needtologin";
   #$security_class="desktop";
   #$security_class="wikimaster";
  
  
  


wkpark      2006/04/26 23:53:28

  Modified:    data     mime.types
  Log:
  add a hwp type
  
  Revision  Changes    Path
  1.2       +1 -0      moniwiki/data/mime.types
  
  Index: mime.types
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/data/mime.types,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- mime.types	10 Aug 2003 12:12:49 -0000	1.1
  +++ mime.types	26 Apr 2006 14:53:28 -0000	1.2
  @@ -289,3 +289,4 @@
   video/x-sgi-movie		movie
   x-conference/x-cooltalk		ice
   text/html			html htm
  +application/x-hwp               hwp
  
  
  


wkpark      2006/04/26 23:54:04

  Modified:    theme/azblue/css default.css
  Log:
  update
  
  Revision  Changes    Path
  1.3       +7 -1      moniwiki/theme/azblue/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/azblue/css/default.css,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- default.css	25 Feb 2006 06:58:45 -0000	1.2
  +++ default.css	26 Apr 2006 14:54:04 -0000	1.3
  @@ -361,7 +361,7 @@
   
   #wikiMenu li {
     display:inline;
  -  padding: 4px 10px;
  +  padding: 4px 10px;margin:0px;
     border-right: 1px solid #A8DBFD;
     /* border-right: 1px solid #e0e0e0; */
   }
  @@ -372,6 +372,12 @@
     text-decoration: none;
   }
   
  +#wikiMenu li.current {
  +/*  background-color: #ffffff; /* */
  +  background-color: #0584D9; /* */
  +  text-decoration: none;
  +}
  +
   #wikiMenu li:hover a{
   /* color: #1999ee; /* */
     color: #ffffff; /* */
  
  
  


wkpark      2006/04/28 21:16:01

  Modified:    plugin   RandomBanner.php Attachment.php
  Log:
  add a new config option '$use_clipmacro' in the Attachment with a png img.
  support attachment:img in the RandomBanner macro
  
  Revision  Changes    Path
  1.5       +26 -8     moniwiki/plugin/RandomBanner.php
  
  Index: RandomBanner.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RandomBanner.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- RandomBanner.php	18 Aug 2003 16:24:40 -0000	1.4
  +++ RandomBanner.php	28 Apr 2006 12:16:01 -0000	1.5
  @@ -1,11 +1,11 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2006 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a RandomBanner macro plugin for the MoniWiki
   //
  -// Usage: [[RandomBanner(PageName,number]]
  +// Usage: [[RandomBanner(PageName,number)]]
   //
  -// $Id: RandomBanner.php,v 1.4 2003/08/18 16:24:40 wkpark Exp $
  +// $Id: RandomBanner.php,v 1.5 2006/04/28 12:16:01 wkpark Exp $
   // vim:et:ts=2:
   
   function macro_RandomBanner($formatter,$value="") {
  @@ -14,6 +14,7 @@
     $test=preg_match("/^([^ ,0-9]*)\s*,?\s*(\d+)?$/",$value,$match);
     if ($test) 
       $pagename=$match[1];$number=$match[2];
  +
     if (!$pagename) $pagename='RandomBanner';
     if (!$number) $number=3;
     #print $pagename.";".$number;
  @@ -28,8 +29,23 @@
     foreach ($lines as $line) {
       if (substr($line,0,10)!= ' * http://') continue;
       $dummy=explode(" ",substr($line,3),3);
  -    if (preg_match(",^(http://|ftp://).*(gif|png|jpg|jpeg)$,",$dummy[1],$match)) {
  -      $banner[]="<a href='$dummy[0]'><img border='0' src='$dummy[1]' title='$dummy[2]'></a> ";
  +    $text=$dummy[1];
  +    $title=$dummy[2];
  +    if (preg_match(",^(http|ftp|attachment):.*\.(gif|png|jpg|jpeg)$,",$text,$match)) {
  +      if ($match[1]=='attachment') {
  +        $fname=$pagename.'/'.substr($text,11);
  +        $ntext=$formatter->macro_repl('Attachment',$fname,1);
  +        if (!file_exists($ntext))
  +          $text=$formatter->macro_repl('Attachment',$fname);
  +        else {
  +          $text=qualifiedUrl($DBInfo->url_prefix.'/'.$ntext);
  +          $text= "<img border='0' alt='$text' src='$text' title='$title' />";
  +        }
  +      } else {
  +        $text= "<img border='0' alt='$text' src='$text' title='$title' />";
  +      }
  +      $banner[]=
  +        "<a href='$dummy[0]'>$text</a>";
       }
     }
   
  @@ -37,11 +53,13 @@
     $number=min($number,$count);
     $selected=array_rand($banner,$number);
     if ($number==1) $selected=array($selected);
  -  $out='';
  +  $out=array();
     foreach ($selected as $idx)
  -    $out.=$banner[$idx];
  +    $out[]=$banner[$idx];
  +
  +  $banners=implode(' ',$out);
   
  -  return $out;
  +  return $banners;
   }
   
   ?>
  
  
  
  1.19      +10 -3     moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- Attachment.php	4 Jan 2006 16:55:06 -0000	1.18
  +++ Attachment.php	28 Apr 2006 12:16:01 -0000	1.19
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.18 2006/01/04 16:55:06 wkpark Exp $
  +// $Id: Attachment.php,v 1.19 2006/04/28 12:16:01 wkpark Exp $
   
   function macro_Attachment($formatter,$value,$option='') {
     global $DBInfo;
  @@ -117,11 +117,18 @@
         return "<span class=\"attach\"><img align='middle' src='$DBInfo->imgs_dir_interwiki".'uploads-16.png\' /><a href="'.$link.'">'.$text.'</a></span>';
       }
     }
  +
  +  $paste='';
  +  if ($DBInfo->use_clipmacro and preg_match('/^(.*)\.png$/i',$file,$m)) {
  +    $now=time();
  +    $url=$formatter->link_url($pagename,"?action=clip&amp;value=$m[1]&amp;now=$now");
  +    $paste=" <a href='$url'>"._("or paste a new picture")."</a>";
  +  }
     if ($pagename == $formatter->page->name)
  -    return '<span class="attach">'.$formatter->link_to("?action=UploadFile&amp;rename=".urlencode($file),sprintf(_("Upload new Attachment \"%s\""),$file)).'</span>';
  +    return '<span class="attach">'.$formatter->link_to("?action=UploadFile&amp;rename=".urlencode($file),sprintf(_("Upload new Attachment \"%s\""),$file)).$paste.'</span>';
   
     if (!$pagename) $pagename='UploadFile';
  -  return '<span class="attach">'.$formatter->link_tag($pagename,"?action=UploadFile&amp;rename=".urlencode($file),sprintf(_("Upload new Attachment \"%s\" on the \"%s\""),$file, $pagename)).'</span>';
  +  return '<span class="attach">'.$formatter->link_tag($pagename,"?action=UploadFile&amp;rename=".urlencode($file),sprintf(_("Upload new Attachment \"%s\" on the \"%s\""),$file, $pagename)).$paste.'</span>';
   }
   
   // vim:et:sts=2:
  
  
  


wkpark      2006/06/03 00:09:24

  Modified:    .        wiki.php
  Log:
  support smiley map
  fix title for group name
  
  Revision  Changes    Path
  1.294     +30 -9     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.293
  retrieving revision 1.294
  diff -u -r1.293 -r1.294
  --- wiki.php	25 Apr 2006 03:37:20 -0000	1.293
  +++ wiki.php	2 Jun 2006 15:09:24 -0000	1.294
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.293 2006/04/25 03:37:20 wkpark Exp $
  +// $Id: wiki.php,v 1.294 2006/06/02 15:09:24 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.293 $',1,-1);
  +$_revision = substr('$Revision: 1.294 $',1,-1);
   $_release = '1.1.1';
   
   #ob_start("ob_gzhandler");
  @@ -692,6 +692,24 @@
       if ($this->use_smileys){
         include_once($this->smiley.".php");
         # set smileys rule
  +      if ($this->shared_smileymap and file_exists($this->shared_smileymap)) {
  +        $myicons=array();
  +        $lines=file($this->shared_smileymap);
  +        foreach ($lines as $l) {
  +          if ($l[0] != ' ') continue;
  +          if (!preg_match('/^ \*\s*([^ ]+)\s(.*)$/',$l,$m)) continue;
  +          $name=_preg_escape($m[1]);
  +          list($img,$extra)=explode(' ',$m[2]);
  +          if (preg_match('/^(http|ftp):.*\.(png|jpg|jpeg|gif)/',$img)) {
  +            $myicons[$name]=array(16,16,0,$img);
  +          } else {
  +            continue;
  +          }
  +        }
  +        #print_r($myicons);
  +        $smileys=array_merge($smileys,$myicons);
  +      }
  +
         $tmp=array_keys($smileys);
         $tmp=array_map("_preg_escape",$tmp);
         $rule=join($tmp,"|");
  @@ -2372,6 +2390,8 @@
   
       $alt=str_replace("<","&lt;",$smiley);
   
  +    if (preg_match('/^(http|ftp):/',$img))
  +      return "<img src='$img' border='0' class='smiley' alt='$alt' title='$alt' />";
       return "<img src='$this->imgs_dir/$img' border='0' class='smiley' alt='$alt' title='$alt' />";
     }
   
  @@ -3436,15 +3456,14 @@
   
       # find upper page
       $pos=strrpos($name,"/");
  -    $myname=$name;
  +    $mypgname=$name;
       if ($pos > 0) {
         $upper=substr($name,0,$pos);
         $upper_icon=$this->link_tag($upper,'',$this->icon['upper'])." ";
       } else if ($this->group) {
         $group=$this->group;
  -      $groupt=substr($group,0,-1).' &raquo;';
  -      $myname=substr($this->page->name,strlen($group));
  -      $upper=_urlencode($myname);
  +      $mypgname=substr($this->page->name,strlen($group));
  +      $upper=_urlencode($mypgname);
         $upper_icon=$this->link_tag($upper,'',$this->icon['main'])." ";
       }
   
  @@ -3456,7 +3475,8 @@
       }
       if (!$title) {
         if ($group) { # for UserNameSpace
  -        $title=$myname;
  +        $title=$mypgname;
  +        $groupt=substr($group,0,-1).' &raquo;';
           $groupt=
             "<span class='wikiGroup'>$groupt</span>";
         } else     
  @@ -3471,7 +3491,7 @@
       if ($link)
         $title="<a href=\"$link\" class='wikiTitle'>$title</a>";
       else if (empty($options['nolink']))
  -      $title=$this->link_to("?action=fullsearch$qext&amp;value="._urlencode($myname),$title,"class='wikiTitle'");
  +      $title=$this->link_to("?action=fullsearch$qext&amp;value="._urlencode($mypgname),$title,"class='wikiTitle'");
       $logo=$this->link_tag($DBInfo->logo_page,'',$DBInfo->logo_string);
       $goto_form=$DBInfo->goto_form ?
         $DBInfo->goto_form : goto_form($action,$DBInfo->goto_type);
  @@ -3515,7 +3535,8 @@
       if ($DBInfo->use_titlemenu and $titlemnu == 0 ) {
         $attr="class='current'";
         # XXX make title more shorter to name abbr
  -      $menu[]=$this->word_repl($this->page->name,'',$attr);
  +      if ($DBInfo->hasPage($this->page->name))
  +        $menu[]=$this->word_repl($mypgname,'',$attr);
       }
       $this->sister_on=$sister_save;
       if (!$this->css_friendly) {
  
  
  


wkpark      2006/06/03 00:10:47

  Modified:    .        config.php.default
  Log:
  update new options and comments
  
  Revision  Changes    Path
  1.30      +7 -2      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- config.php.default	25 Apr 2006 03:37:20 -0000	1.29
  +++ config.php.default	2 Jun 2006 15:10:47 -0000	1.30
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.29 2006/04/25 03:37:20 wkpark Exp $
  +# $Id: config.php.default,v 1.30 2006/06/02 15:10:47 wkpark Exp $
   #
   $sitename='UnnamedWiki';
   $data_dir= './data';
  @@ -150,8 +150,13 @@
   #$use_camelcase=0; # turn off camelcase syntax by default
   #$category_regex=urldecode('%EB%B6%84%EB%A5%98$');
   #$use_backlinks=1; # set default fullsearch behavior as backlinks search
  -#$use_smartdiff=1;
  +#$use_smartdiff=1; # use the experimental smart diff XXX
   #$hide_actions=0; # hide actions list for anonymous user
   #$use_easyalias=1; # direct linking to the dest page
   #$info_options='ago,simple'; # default Info macro options
  +#$force_charset=1; # overriding default charset 
  +#$use_titlemenu=1; # add the current pagename to the menu list
  +#$submenu='SubMenu'; # dynamic submenu
  +#$shared_smileymap=$data_dir.'/text/SmileyMap'; # customizable smileymap
  +#$use_clipmacro=1; # use the clip macro with the attachment macro
   ?>
  
  
  


wkpark      2006/06/03 00:55:02

  Modified:    css      print.css
  Log:
  hide toggle tags and fix the wikiSyntax class
  
  Revision  Changes    Path
  1.11      +6 -0      moniwiki/css/print.css
  
  Index: print.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/print.css,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- print.css	1 Mar 2006 05:26:56 -0000	1.10
  +++ print.css	2 Jun 2006 15:55:02 -0000	1.11
  @@ -240,3 +240,9 @@
   div.pagebreak br { display:none;}
   
   div.sectionEdit { display:none; }
  +
  +.codenumbers { display:none; }
  +
  +pre.wikiSyntax {
  +  border-left: 3px solid #c0c0c0;
  +}
  
  
  


wkpark      2006/06/03 01:11:08

  Modified:    .        wiki.php
  Log:
  support experimental submenu
  fixed tailer option for the PHP 5.x
  more fix for the titlemenu option
  
  Revision  Changes    Path
  1.295     +60 -9     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.294
  retrieving revision 1.295
  diff -u -r1.294 -r1.295
  --- wiki.php	2 Jun 2006 15:09:24 -0000	1.294
  +++ wiki.php	2 Jun 2006 16:11:08 -0000	1.295
  @@ -11,10 +11,10 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.294 2006/06/02 15:09:24 wkpark Exp $
  +// $Id: wiki.php,v 1.295 2006/06/02 16:11:08 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.294 $',1,-1);
  -$_release = '1.1.1';
  +$_revision = substr('$Revision: 1.295 $',1,-1);
  +$_release = '1.1.2';
   
   #ob_start("ob_gzhandler");
   
  @@ -1556,6 +1556,7 @@
       $this->css_friendly=$DBInfo->css_friendly;
       $this->use_smartdiff=$DBInfo->use_smartdiff;
       $this->use_easyalias=$DBInfo->use_easyalias;
  +    $this->submenu=$DBInfo->submenu;
   
       if (($p=strpos($page->name,"~")))
         $this->group=substr($page->name,0,$p+1);
  @@ -2136,6 +2137,9 @@
       else $page=urldecode($url_only);
       $url=$this->link_url($url);
   
  +    #check current page
  +    if ($page == $this->page->name) $attr.='class="current"';
  +
       //$url=$this->link_url(_rawurlencode($page)); # XXX
       if (isset($this->pagelinks[$page])) {
         $idx=$this->pagelinks[$page];
  @@ -3456,7 +3460,7 @@
   
       # find upper page
       $pos=strrpos($name,"/");
  -    $mypgname=$name;
  +    $mypgname=$this->page->name;
       if ($pos > 0) {
         $upper=substr($name,0,$pos);
         $upper_icon=$this->link_tag($upper,'',$this->icon['upper'])." ";
  @@ -3536,7 +3540,7 @@
         $attr="class='current'";
         # XXX make title more shorter to name abbr
         if ($DBInfo->hasPage($this->page->name))
  -        $menu[]=$this->word_repl($mypgname,'',$attr);
  +        $menu[]=$this->word_repl($mypgname,$this->page->name,$attr);
       }
       $this->sister_on=$sister_save;
       if (!$this->css_friendly) {
  @@ -3552,6 +3556,53 @@
           "$1 class='current'>$2",$menu);
       }
   
  +    # submenu XXX
  +    if ($this->submenu) {
  +      $smenu=array();
  +      $mnu_pgname=($group ? $group.'~':'').$this->submenu;
  +      if ($DBInfo->hasPage($mnu_pgname)) {
  +        $pg=$DBInfo->getPage($mnu_pgname);
  +        $mnu_raw=$pg->get_raw_body();
  +        $mlines=explode("\n",$mnu_raw);
  +        foreach ($mlines as $l) {
  +          if ($mk and preg_match('/^\s{2,}\*\s*(.*)$/',$l,$m)) {
  +            if (!is_array($smenu[$mk])) $smenu[$mk]=array();
  +            $smenu[$mk][]=$m[1];
  +            if (!$smenu[$m[1]]) $smenu[$m[1]]=$mk;
  +          } else if (preg_match('/^ \*\s*(.*)$/',$l,$m)) {
  +            $mk=$m[1];
  +          }
  +        }
  +
  +        #print_r($smenu);
  +
  +        $cmenu=null;
  +        if ($smenu[$this->page->name]) {
  +          $cmenu=&$smenu[$this->page->name];
  +        } else if ($smenu['Main']) {
  +          $cmenu=&$smenu['Main'];
  +        }
  +
  +        if ($cmenu) {
  +          if (is_array($cmenu)) {
  +            $smenua=$cmenu;
  +          } else {
  +            $smenua=$smenu[$cmenu];
  +          }
  +
  +          $submenus=array();
  +          foreach ($smenua as $item) {
  +            $submenus[]=$this->link_repl($item);
  +          }
  +          #print_r($submenus);
  +          $submenu='<div id="subMenu"><ul><li>'.implode("</li><li>",$submenus)."</li></ul></div>\n";
  +          # set current attribute.
  +          $submenu=preg_replace("/(li)>(<a\s[^>]+current[^>]+)/",
  +            "$1 class='current'>$2",$submenu);
  +        }
  +      }
  +    }
  +
       # icons
       #if ($upper)
       #  $upper_icon=$this->link_tag($upper,'',$this->icon['upper'])." ";
  @@ -3581,8 +3632,8 @@
   
       #
       if (file_exists($this->themedir."/header.php")) {
  -      $trail=&$option['trail'];
  -      $origin=&$this->origin;
  +      $trail="<div id='wikiTrailer'>\n".$this->trail."</div>\n";
  +      $origin="<div id='wikiOrigin'>\n".$this->origin."</div>\n";
   
         $themeurl=$this->themeurl;
         include($this->themedir."/header.php");
  @@ -3612,7 +3663,7 @@
         print $msg;
         print "</div>\n";
       }
  -    if (empty($themeurl) or !$_NEWTHEME) {
  +    if (empty($themeurl) or !$this->_newtheme) {
         print $DBInfo->hr;
         if ($options['trail']) {
           print "<div id='wikiTrailer'>\n";
  @@ -3802,7 +3853,7 @@
   if ($theme) $options['theme']=$theme;
   
   if ($DBInfo->trail) {
  -  $options['trail']=$user->trail;
  +  $options['trail']=$user->trail ? $user->trail:'';
   }
   if ($options['id'] != 'Anonymous') {
     $udb=new UserDB($DBInfo);
  
  
  


wkpark      2006/06/04 00:17:48

  Modified:    plugin   FullSearch.php
  Log:
  fixed #301228: Fullsearch cache bug
  
  Revision  Changes    Path
  1.19      +11 -1     moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- FullSearch.php	25 Feb 2006 06:59:12 -0000	1.18
  +++ FullSearch.php	3 Jun 2006 15:17:48 -0000	1.19
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
   //
  -// $Id: FullSearch.php,v 1.18 2006/02/25 06:59:12 wkpark Exp $
  +// $Id: FullSearch.php,v 1.19 2006/06/03 15:17:48 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
  @@ -140,6 +140,16 @@
     if (!$formatter->refresh and $fc->exists($sid)) {
       $data=unserialize($fc->fetch($sid));
       if (is_array($data)) {
  +      # check cache mtime
  +      $cmt=$fc->mtime($sid);
  +      foreach ($data as $p=>$c) {
  +        $mp=$DBInfo->getPage($p);
  +        $mt=$mp->mtime();
  +        if ($mt > $cmt) {
  +          $data=array();
  +          break;
  +        }
  +      }
         $hits=$data;
       }
       if ($arena != 'fullsearch') {
  
  
  


wkpark      2006/06/04 00:34:18

  Modified:    plugin   OeKaki.php
  Log:
  rawurlencode pagename for Oekaki macro
  
  Revision  Changes    Path
  1.7       +6 -4      moniwiki/plugin/OeKaki.php
  
  Index: OeKaki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/OeKaki.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- OeKaki.php	3 Apr 2005 14:29:43 -0000	1.6
  +++ OeKaki.php	3 Jun 2006 15:34:18 -0000	1.7
  @@ -4,7 +4,7 @@
   //
   // Usage: [[OeKaki(hello)]]
   //
  -// $Id: OeKaki.php,v 1.6 2005/04/03 14:29:43 wkpark Exp $
  +// $Id: OeKaki.php,v 1.7 2006/06/03 15:34:18 wkpark Exp $
   // vim:et:ts=2:
   
   function macro_OeKaki($formatter,$value) {
  @@ -30,7 +30,7 @@
     $pngname='OeKaki_'.$name.".png";
     $now=time();
   
  -  $url=$formatter->link_url($formatter->page->name,"?action=OeKaki&amp;value=$name$size&amp;now=$now");
  +  $url=$formatter->link_url(_rawurlencode($formatter->page->name),"?action=OeKaki&amp;value=$name$size&amp;now=$now");
   
     if (!file_exists($oekaki_dir."/$pngname"))
       return "<a href='$url'>"._("Draw new picture")."</a>";
  @@ -118,8 +118,10 @@
     $formatter->send_title(_("Create new picture"),"",$options);
     $prefix=$formatter->prefix;
     $now=time();
  -  $url_exit= $formatter->link_url($options['page'],"?ts=$now");
  -  $url_save= $formatter->link_url($options['page'],"----OeKaki----$name");
  +  $urlpgname=_rawurlencode($options['page']);
  +  $imgname=_rawurlencode($name);
  +  $url_exit= $formatter->link_url($urlpgname,"?ts=$now");
  +  $url_save= $formatter->link_url($urlpgname,"----OeKaki----$imgname");
   
     $pubpath=$DBInfo->url_prefix."/applets/OekakiPlugin";
     print "<h2>"._("Edit Image")."</h2>\n";
  
  
  


wkpark      2006/06/08 19:34:38

  Modified:    plugin   Gallery.php
  Log:
  add "gallery-comments" "gallery-img" class
  fix the size of selected image.
  workaround comment align problem with "col=1" option. use "float:left" with imgs
  
  Revision  Changes    Path
  1.25      +20 -7     moniwiki/plugin/Gallery.php
  
  Index: Gallery.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Gallery.php,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- Gallery.php	26 Jan 2006 03:10:35 -0000	1.24
  +++ Gallery.php	8 Jun 2006 10:34:38 -0000	1.25
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Gallery]]
   //
  -// $Id: Gallery.php,v 1.24 2006/01/26 03:10:35 wkpark Exp $
  +// $Id: Gallery.php,v 1.25 2006/06/08 10:34:38 wkpark Exp $
   
   function get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -77,18 +77,23 @@
         $v=substr($opt,$p+1);
         if ($k=='col') $col=$v;
         else if ($k=='row') $row=$v;
  +      else if ($k=='sort') $sort=$v;
       } else {
         if ($opt=='sort') $sort=1;
       }
     }
   
  +  if (!in_array($sort,array(0,1,'name','date'))) {
  +    $sort=0;
  +  }
  +
  +  $default_width=$DBInfo->gallery_img_width ? $DBInfo->gallery_img_width:600;
  +
     $col=($col<=0 or $col>7) ? $default_column:$col;
     $row=($row<=0 or $row>7) ? $default_row:$row;
  -  $width=$selected ? $default_width:150;
     $perpage=$col*$row;
   
  -
  -  $default_width=$DBInfo->gallery_img_width ? $DBInfo->gallery_img_width:600;
  +  if ($col == 1) $img_style=' style="float:left"';
   
     if ($match[3])
       # arg has a pagename
  @@ -155,6 +160,7 @@
       $comments[$file]=$comment;
       $selected=1;
     }
  +  $width=$selected ? $default_width:150;
   
     $mtime=file_exists($dir."/list.txt") ? filemtime($dir."/list.txt"):0;
     if ((filemtime($dir) > $mtime) or $update) {
  @@ -180,7 +186,13 @@
     }
   
     if (!$upfiles) return "<h3>No files uploaded</h3>";
  -  if ($sort) arsort($upfiles);
  +  if ($sort) {
  +    if ($sort ==1) {
  +     arsort($upfiles);
  +    } elseif ($sort=='name') {
  +     ksort($upfiles);
  +    }
  +  }
     else asort($upfiles);
   
     $out.="<table border='0' cellpadding='2'>\n<tr>\n";
  @@ -271,11 +283,12 @@
         }
         $comment=str_replace("\\n","<br/>\n",$comment);
       }
  -    $out.="<td align='center' valign='top' class='wiki'><a href='$link'>$object</a><br />".
  +    $out.="<td align='center' valign='top' class='wiki'><div class='gallery-img' $img_style><a href='$link'>$object</a><br />".
             "$date ($size) ";
       if (!$options['value'])
         $out.='['.$formatter->link_tag($formatter->page->urlname,"?action=gallery&amp;value=$id",$comment_btn)."]<br />\n";
  -    if ($comment) $out.="<div align='left' class='gallery-comments'>$comment</div>";
  +    $out.='</div>';
  +    if ($comment) $out.="<div class='gallery-comments' $comment_style>$comment</div>";
       $out.="</td>\n";
       if ($idx % $col == 0) $out.="</tr>\n<tr>\n";
       $idx++;
  
  
  


wkpark      2006/06/22 17:45:25

  Modified:    .        wiki.php
  Log:
  fixup refresh related bug to block fullsearch attacks
  
  Revision  Changes    Path
  1.296     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.295
  retrieving revision 1.296
  diff -u -r1.295 -r1.296
  --- wiki.php	2 Jun 2006 16:11:08 -0000	1.295
  +++ wiki.php	22 Jun 2006 08:45:25 -0000	1.296
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.295 2006/06/02 16:11:08 wkpark Exp $
  +// $Id: wiki.php,v 1.296 2006/06/22 08:45:25 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.295 $',1,-1);
  +$_revision = substr('$Revision: 1.296 $',1,-1);
   $_release = '1.1.2';
   
   #ob_start("ob_gzhandler");
  @@ -3936,7 +3936,7 @@
       $value=$_GET['value'];
       $goto=$_GET['goto'];
       $rev=$_GET['rev'];
  -    $refresh=$_GET['refresh'];
  +    $refresh=($options['id'] == 'Anonymous') ? 0:$_GET['refresh'];
     }
     if (($p=strpos($action,'/'))!==false) {
       $action_mode=substr($action,$p+1);
  
  
  


wkpark      2006/06/22 17:45:25

  Modified:    plugin   FullSearch.php
  Log:
  fixup refresh related bug to block fullsearch attacks
  
  Revision  Changes    Path
  1.20      +3 -1      moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- FullSearch.php	3 Jun 2006 15:17:48 -0000	1.19
  +++ FullSearch.php	22 Jun 2006 08:45:25 -0000	1.20
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
   //
  -// $Id: FullSearch.php,v 1.19 2006/06/03 15:17:48 wkpark Exp $
  +// $Id: FullSearch.php,v 1.20 2006/06/22 08:45:25 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
  @@ -40,8 +40,10 @@
         $tag=$formatter->link_to("?action=fullsearch&amp;value=$val&amp;context=20",_("Show Context."));
         print $tag.'<br />';
       }
  +    if ($options['id'] != 'Anonymous') {
       $tag=$formatter->link_to("?action=fullsearch$qext&amp;value=$val&amp;refresh=1",_("Refresh"));
       printf(_(" (%s search results)"),$tag);
  +    }
     }
     $args['noaction']=1;
     $formatter->send_footer($args,$options);
  
  
  


wkpark      2006/06/22 17:51:38

  Modified:    plugin   Gallery.php
  Log:
  fix for more fancy 1-column gallery
  
  Revision  Changes    Path
  1.26      +9 -3      moniwiki/plugin/Gallery.php
  
  Index: Gallery.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Gallery.php,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- Gallery.php	8 Jun 2006 10:34:38 -0000	1.25
  +++ Gallery.php	22 Jun 2006 08:51:38 -0000	1.26
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Gallery]]
   //
  -// $Id: Gallery.php,v 1.25 2006/06/08 10:34:38 wkpark Exp $
  +// $Id: Gallery.php,v 1.26 2006/06/22 08:51:38 wkpark Exp $
   
   function get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -86,8 +86,13 @@
     if (!in_array($sort,array(0,1,'name','date'))) {
       $sort=0;
     }
  +  if ($col > 1) {
  +    $col_td_width=(int) (100/$col);
  +    $col_td_width=' width="'.$col_td_width.'%"';
  +  }
   
     $default_width=$DBInfo->gallery_img_width ? $DBInfo->gallery_img_width:600;
  +  $img_class="gallery-img";
   
     $col=($col<=0 or $col>7) ? $default_column:$col;
     $row=($row<=0 or $row>7) ? $default_row:$row;
  @@ -159,6 +164,7 @@
       $upfiles[$file]=$mtime;
       $comments[$file]=$comment;
       $selected=1;
  +    $img_class="gallery-sel";
     }
     $width=$selected ? $default_width:150;
   
  @@ -195,7 +201,7 @@
     }
     else asort($upfiles);
   
  -  $out.="<table border='0' cellpadding='2'>\n<tr>\n";
  +  $out.="<table width='100%' border='0' cellpadding='2'>\n<tr>\n";
     $idx=1;
   
     $pages= intval(sizeof($upfiles) / $perpage);
  @@ -283,7 +289,7 @@
         }
         $comment=str_replace("\\n","<br/>\n",$comment);
       }
  -    $out.="<td align='center' valign='top' class='wiki'><div class='gallery-img' $img_style><a href='$link'>$object</a><br />".
  +    $out.="<td $col_td_width align='center' valign='top' class='wiki'><div class='$img_class' $img_style><a href='$link'>$object</a><br />".
             "$date ($size) ";
       if (!$options['value'])
         $out.='['.$formatter->link_tag($formatter->page->urlname,"?action=gallery&amp;value=$id",$comment_btn)."]<br />\n";
  
  
  


wkpark      2006/06/22 17:52:26

  Modified:    css      _extra.css
  Log:
  add some css entries for the GalleryMacro
  
  Revision  Changes    Path
  1.5       +11 -0     moniwiki/css/_extra.css
  
  Index: _extra.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_extra.css,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- _extra.css	25 Feb 2006 06:56:41 -0000	1.4
  +++ _extra.css	22 Jun 2006 08:52:26 -0000	1.5
  @@ -20,6 +20,17 @@
     visibility:visible;
   }
   
  +.gallery-img {
  +  /* float:left; */
  +}
  +.gallery-sel {
  +  padding-bottom:10px;
  +}
  +
  +.gallery-comments {
  +  padding: 5px;
  +}
  +
   .cloudView li{
     font-family:Trebuchet MS,Georgia,Verdana,sans-serif;
     list-style:none;
  
  
  


wkpark      2006/06/25 16:40:03

  Modified:    plugin   dot.php
  Log:
  fix typo reported by kz
  
  Revision  Changes    Path
  1.9       +2 -2      moniwiki/plugin/dot.php
  
  Index: dot.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/dot.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- dot.php	18 Jan 2006 15:59:06 -0000	1.8
  +++ dot.php	25 Jun 2006 07:40:03 -0000	1.9
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // dot action plugin for the MoniWiki
   //
  -// $Id: dot.php,v 1.8 2006/01/18 15:59:06 wkpark Exp $
  +// $Id: dot.php,v 1.9 2006/06/25 07:40:03 wkpark Exp $
   
   define(DEPTH,3);
   define(LEAFCOUNT,2);
  @@ -72,7 +72,7 @@
   
     $color=array();
     $tree=new LinkTree($options['arena']);
  -  $thee->makeTree($options['page'],$node,$color,$depth,$count);
  +  $tree->makeTree($options['page'],$node,$color,$depth,$count);
     if (!$node) $node=array($options['page']=>array());
     #print_r($color);
     foreach ($color as $key=>$val) $color[$key]=$depth-$val;
  
  
  


wkpark      2006/07/02 03:41:04

  Modified:    .        wiki.php
  Log:
  XSS vulnerability fix reported by kil13r.
  
  Revision  Changes    Path
  1.297     +9 -6      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.296
  retrieving revision 1.297
  diff -u -r1.296 -r1.297
  --- wiki.php	22 Jun 2006 08:45:25 -0000	1.296
  +++ wiki.php	1 Jul 2006 18:41:03 -0000	1.297
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.296 2006/06/22 08:45:25 wkpark Exp $
  +// $Id: wiki.php,v 1.297 2006/07/01 18:41:03 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.296 $',1,-1);
  +$_revision = substr('$Revision: 1.297 $',1,-1);
   $_release = '1.1.2';
   
   #ob_start("ob_gzhandler");
  @@ -3214,6 +3214,7 @@
         else if ($DBInfo->use_keywords) {
           $keywords=strip_tags($this->page->title);
           $keywords=str_replace(" ",", ",$keywords);
  +        $keywords=htmlspecialchars($keywords);
           $keywords="<meta name=\"keywords\" content=\"$keywords\" />";
         }
   
  @@ -3538,9 +3539,10 @@
       }
       if ($DBInfo->use_titlemenu and $titlemnu == 0 ) {
         $attr="class='current'";
  -      # XXX make title more shorter to name abbr
  -      if ($DBInfo->hasPage($this->page->name))
  -        $menu[]=$this->word_repl($mypgname,$this->page->name,$attr);
  +      # XXX make title more shorter ?
  +      $mnuname=htmlspecialchars($this->page->name);
  +      if ($DBInfo->hasPage($this->page->name) and strlen($mnuname) < 10)
  +        $menu[]=$this->word_repl($mypgname,$mnuname,$attr);
       }
       $this->sister_on=$sister_save;
       if (!$this->css_friendly) {
  @@ -4009,7 +4011,8 @@
           $formatter->send_title(sprintf("%s Not Found",$page->name),"",$options);
           $button= $formatter->link_to("?action=edit",$formatter->icon['create']._("Create this page"));
           print $button;
  -        print sprintf(_(" or click %s to fullsearch this page.\n"),$formatter->link_to("?action=fullsearch&amp;value=$options[page]",_("title")));
  +        $searchval=htmlspecialchars($options['page']);
  +        print sprintf(_(" or click %s to fullsearch this page.\n"),$formatter->link_to("?action=fullsearch&amp;value=$searchval",_("title")));
           print $formatter->macro_repl('LikePages',$page->name,$err);
           if ($err['extra'])
             print $err['extra'];
  
  
  


wkpark      2006/07/02 03:55:51

  Modified:    local/Wikiwyg Makefile
  Log:
  add warn message
  
  Revision  Changes    Path
  1.2       +3 -0      moniwiki/local/Wikiwyg/Makefile
  
  Index: Makefile
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/Makefile,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Makefile	1 Feb 2006 01:04:41 -0000	1.1
  +++ Makefile	1 Jul 2006 18:55:51 -0000	1.2
  @@ -1,3 +1,6 @@
  +#### WARN
  +#### WARN Some functions maybe incompatible with this modified scripts.
  +#### WARN
   ver=0.12
   tarball=Wikiwyg-$(ver).tar.gz
   files=lib COPYRIGHT LICENSE Changes
  
  
  


wkpark      2006/07/02 03:59:33

  Modified:    locale/po fr.po ko.po moniwiki.pot
  Log:
  update messages
  
  Revision  Changes    Path
  1.16      +65 -61    moniwiki/locale/po/fr.po
  
  Index: fr.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/fr.po,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- fr.po	25 Feb 2006 07:16:37 -0000	1.15
  +++ fr.po	1 Jul 2006 18:59:33 -0000	1.16
  @@ -3,7 +3,7 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1\n"
  -"POT-Creation-Date: 2006-02-25 16:17+0900\n"
  +"POT-Creation-Date: 2006-07-02 04:01+0900\n"
   "PO-Revision-Date: 2003-08-17 22:51+0900\n"
   "Last-Translator: Serge Stinckwich <Serge.Stinckwich@info.unicaen.fr>\n"
   "Language-Team: fr <fr@li.org>\n"
  @@ -12,13 +12,18 @@
   "Content-Transfer-Encoding: 8bit\n"
   
   # ../plugin/Attachment.php:24
  -#: ../plugin/Attachment.php:41 ../plugin/Attachment.php:121
  +#: ../plugin/Attachment.php:41 ../plugin/Attachment.php:128
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr "Tlcharger le nouvel attachement \"%s\""
   
  +# ../plugin/OeKaki.php:118
  +#: ../plugin/Attachment.php:125
  +msgid "or paste a new picture"
  +msgstr "or Crer un nouveau dessin"
  +
   # ../plugin/Attachment.php:24
  -#: ../plugin/Attachment.php:124
  +#: ../plugin/Attachment.php:131
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
  @@ -203,7 +208,7 @@
   msgstr ""
   
   # ../plugin/restore.php:27
  -#: ../plugin/Comment.php:86 ../plugin/Keywords.php:292
  +#: ../plugin/Comment.php:86 ../plugin/Keywords.php:309
   msgid "Page does not exists"
   msgstr ""
   
  @@ -303,7 +308,7 @@
   msgid "%d day(s) passed from %s."
   msgstr "%d jour(s) se sont passs depuis %s."
   
  -#: ../plugin/FastSearch.php:44 ../plugin/FullSearch.php:77
  +#: ../plugin/FastSearch.php:44 ../plugin/FullSearch.php:79
   msgid "No search text"
   msgstr ""
   
  @@ -347,48 +352,48 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:43
  +#: ../plugin/FullSearch.php:44
   msgid "Refresh"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:44
  +#: ../plugin/FullSearch.php:45
   #, c-format
   msgid " (%s search results)"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:120
  +#: ../plugin/FullSearch.php:122
   msgid "Empty expression"
   msgstr ""
   
   # ../wikilib.php:1483
  -#: ../plugin/FullSearch.php:124 ../wikilib.php:2410
  +#: ../plugin/FullSearch.php:126 ../wikilib.php:2410
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "Expression de recherche \"%s\" invalide"
   
   # ../plugin/processor/blog.php:70
  -#: ../plugin/Gallery.php:257 ../plugin/Gallery.php:269
  +#: ../plugin/Gallery.php:275 ../plugin/Gallery.php:287
   msgid "add comment"
   msgstr ""
   
   # ../plugin/processor/blog.php:78
  -#: ../plugin/Gallery.php:266
  +#: ../plugin/Gallery.php:284
   msgid "show comments"
   msgstr ""
   
   # ../wikilib.php:769
  -#: ../plugin/Gallery.php:309 ../plugin/Gallery.php:312 ../wikilib.php:1166
  +#: ../plugin/Gallery.php:328 ../plugin/Gallery.php:331 ../wikilib.php:1166
   #: ../wikilib.php:1309
   #, c-format
   msgid "Go back or return to %s"
   msgstr "Revenir en arrire ou retourner  %s"
   
  -#: ../plugin/Gallery.php:310
  +#: ../plugin/Gallery.php:329
   msgid "Comments are edited"
   msgstr ""
   
   # ../plugin/Blog.php:137
  -#: ../plugin/Gallery.php:313
  +#: ../plugin/Gallery.php:332
   msgid "Comments is added"
   msgstr ""
   
  @@ -453,68 +458,68 @@
   msgid "Edit new molecule"
   msgstr ""
   
  -#: ../plugin/Keywords.php:255
  +#: ../plugin/Keywords.php:272
   msgid "hits"
   msgstr ""
   
  -#: ../plugin/Keywords.php:259
  +#: ../plugin/Keywords.php:276
   msgid "add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:262
  +#: ../plugin/Keywords.php:279
   msgid "Update keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:264
  +#: ../plugin/Keywords.php:281
   msgid "Add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:265
  +#: ../plugin/Keywords.php:282
   msgid "Add as common words"
   msgstr ""
   
  -#: ../plugin/Keywords.php:266
  +#: ../plugin/Keywords.php:283
   msgid "Unselect all"
   msgstr ""
   
  -#: ../plugin/Keywords.php:267
  +#: ../plugin/Keywords.php:284
   msgid "Suggest new Keywords"
   msgstr ""
   
   # ../wiki.php:3009
  -#: ../plugin/Keywords.php:291
  +#: ../plugin/Keywords.php:308
   msgid "You are not able to add keywords."
   msgstr ""
   
   # ../wikilib.php:814
  -#: ../plugin/Keywords.php:300
  +#: ../plugin/Keywords.php:317
   #, c-format
   msgid "%s is not found."
   msgstr ""
   
  -#: ../plugin/Keywords.php:404
  +#: ../plugin/Keywords.php:421
   msgid "Common words are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:451
  +#: ../plugin/Keywords.php:468
   #, c-format
   msgid "Keywords for %s are updated"
   msgstr ""
   
   # ../plugin/quicklinks.php:38
  -#: ../plugin/Keywords.php:477
  +#: ../plugin/Keywords.php:494
   msgid "Keywords are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:479
  +#: ../plugin/Keywords.php:496
   msgid "There are no changes found"
   msgstr ""
   
  -#: ../plugin/Keywords.php:492
  +#: ../plugin/Keywords.php:509
   msgid "Update with these Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:505
  +#: ../plugin/Keywords.php:522
   #, c-format
   msgid "Select keywords for %s"
   msgstr ""
  @@ -569,7 +574,7 @@
   msgstr "Crer un nouveau dessin"
   
   # ../plugin/OeKaki.php:125
  -#: ../plugin/OeKaki.php:125
  +#: ../plugin/OeKaki.php:127
   msgid "Edit Image"
   msgstr "diter l'image"
   
  @@ -690,7 +695,7 @@
   msgstr "TwinPages de %s"
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../plugin/TwinPages.php:19 ../wiki.php:3910
  +#: ../plugin/TwinPages.php:19 ../wiki.php:4007
   msgid "See [TwinPages]: "
   msgstr "Voir [TwinPages]: "
   
  @@ -961,13 +966,13 @@
   msgstr ""
   
   # ../locale/dummy.php:7
  -#: ../plugin/rdf_blog.php:31 ../plugin/rss_blog.php:25
  +#: ../plugin/rdf_blog.php:30 ../plugin/rss_blog.php:25
   msgid "Blog Changes"
   msgstr "ModificationsBlog"
   
   # ../locale/dummy.php:7
   # c-format
  -#: ../plugin/rdf_blog.php:45 ../plugin/rss_blog.php:103
  +#: ../plugin/rdf_blog.php:44 ../plugin/rss_blog.php:103
   #, c-format
   msgid "BlogChanges at %s"
   msgstr "ModificationsBlog at %s"
  @@ -1442,93 +1447,93 @@
   msgstr ""
   
   # ../wiki.php:850
  -#: ../wiki.php:1107
  +#: ../wiki.php:1128
   #, c-format
   msgid "Rename %s to %s"
   msgstr "Renommer %s en %s"
   
   # ../wikilib.php:803
  -#: ../wiki.php:1408
  +#: ../wiki.php:1429
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
   # ../plugin/restore.php:27
  -#: ../wiki.php:1418
  +#: ../wiki.php:1439
   msgid "File does not exists"
   msgstr ""
   
   # ../wikilib.php:521
  -#: ../wiki.php:2360
  +#: ../wiki.php:2385
   msgid "Invalid ajax action."
   msgstr ""
   
   # ../wiki.php:1824
  -#: ../wiki.php:2589
  +#: ../wiki.php:2616
   #, c-format
   msgid "See %s"
   msgstr "Voir %s"
   
   # ../wiki.php:1824
  -#: ../wiki.php:2589
  +#: ../wiki.php:2616
   msgid "TwinPages"
   msgstr ""
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../wiki.php:2594
  +#: ../wiki.php:2621
   msgid "See [TwinPages]:"
   msgstr "Voir [TwinPages]: "
   
  -#: ../wiki.php:2899
  +#: ../wiki.php:2926
   msgid "edit"
   msgstr ""
   
  -#: ../wiki.php:3052
  +#: ../wiki.php:3079
   msgid "Sister Sites Index"
   msgstr ""
   
   # ../locale/dummy.php:6 ../wiki.php:2553
  -#: ../wiki.php:3336 ../locale/dummy.php:6
  +#: ../wiki.php:3370 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "ditionTexte"
   
   # ../wiki.php:2555
  -#: ../wiki.php:3338
  +#: ../wiki.php:3372
   msgid "NotEditable"
   msgstr "Pasditable"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wiki.php:3340 ../locale/dummy.php:6
  +#: ../wiki.php:3374 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "MontrePage"
   
   # ../locale/dummy.php:3 ../locale/dummy.php:5 ../wiki.php:2558
  -#: ../wiki.php:3341 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:3375 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "TrouvePage"
   
  -#: ../wiki.php:3609
  +#: ../wiki.php:3706
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:3870
  +#: ../wiki.php:3967
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:3871 ../wiki.php:3882
  +#: ../wiki.php:3968 ../wiki.php:3979
   msgid "Please contact WikiMasters"
   msgstr ""
   
  -#: ../wiki.php:3881
  +#: ../wiki.php:3978
   msgid "You are blocked in this wiki"
   msgstr ""
   
   # ../wiki.php:2945 ../wiki.php:2948
  -#: ../wiki.php:3912 ../wiki.php:3915 ../wikilib.php:1100
  +#: ../wiki.php:4009 ../wiki.php:4012 ../wikilib.php:1100
   msgid "Create this page"
   msgstr "Crer cette page"
   
   # ../wiki.php:2950
  -#: ../wiki.php:3917 ../wikilib.php:1102
  +#: ../wiki.php:4015 ../wikilib.php:1102
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
  @@ -1536,44 +1541,44 @@
   "page.\n"
   
   # ../wiki.php:2950
  -#: ../wiki.php:3917 ../wikilib.php:1102
  +#: ../wiki.php:4015 ../wikilib.php:1102
   msgid "title"
   msgstr "titre"
   
   # ../wiki.php:2956
  -#: ../wiki.php:3926
  +#: ../wiki.php:4024
   msgid " or alternativly, use one of these templates:\n"
   msgstr " ou alternativement, utiliser un de ces modles de page :\n"
   
  -#: ../wiki.php:3929
  +#: ../wiki.php:4027
   msgid "You have no templates"
   msgstr ""
   
   # ../wikilib.php:427
  -#: ../wiki.php:3931
  +#: ../wiki.php:4029
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
   
  -#: ../wiki.php:3942
  +#: ../wiki.php:4040
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
   # ../wiki.php:3009
  -#: ../wiki.php:4032
  +#: ../wiki.php:4130
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "Vous n'tes pas autoris  '%s'"
   
   # ../wiki.php:3021
  -#: ../wiki.php:4052
  +#: ../wiki.php:4150
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "Impossible de pouvoir \"%s\" !"
   
   # ../wiki.php:3024
  -#: ../wiki.php:4055
  +#: ../wiki.php:4153
   msgid "Please enter the valid password"
   msgstr "Merci d'entrer un mot de passe valide"
   
  @@ -2036,4 +2041,3 @@
   #: ../locale/dummy.php:7
   msgid "TrackBack"
   msgstr ""
  -
  
  
  
  1.21      +64 -60    moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- ko.po	25 Feb 2006 07:16:37 -0000	1.20
  +++ ko.po	1 Jul 2006 18:59:33 -0000	1.21
  @@ -5,7 +5,7 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1\n"
  -"POT-Creation-Date: 2006-02-25 16:17+0900\n"
  +"POT-Creation-Date: 2006-07-02 04:01+0900\n"
   "PO-Revision-Date: 2003-04-29 19:00+0900\n"
   "Last-Translator: Won-kyu Park <wkpark@kldp.org>\n"
   "Language-Team: ko <ko@li.org>\n"
  @@ -13,12 +13,16 @@
   "Content-Type: text/plain; charset=EUC-KR\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  -#: ../plugin/Attachment.php:41 ../plugin/Attachment.php:121
  +#: ../plugin/Attachment.php:41 ../plugin/Attachment.php:128
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr ""
   
  -#: ../plugin/Attachment.php:124
  +#: ../plugin/Attachment.php:125
  +msgid "or paste a new picture"
  +msgstr "Ȥ  ׸ ̱"
  +
  +#: ../plugin/Attachment.php:131
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
  @@ -175,7 +179,7 @@
   msgid "You are not allowed to add a comment."
   msgstr "Comment  ʽϴ."
   
  -#: ../plugin/Comment.php:86 ../plugin/Keywords.php:292
  +#: ../plugin/Comment.php:86 ../plugin/Keywords.php:309
   msgid "Page does not exists"
   msgstr " ϴ"
   
  @@ -258,7 +262,7 @@
   msgid "%d day(s) passed from %s."
   msgstr "%2$sκ %1$d ϴ."
   
  -#: ../plugin/FastSearch.php:44 ../plugin/FullSearch.php:77
  +#: ../plugin/FastSearch.php:44 ../plugin/FullSearch.php:79
   msgid "No search text"
   msgstr ""
   
  @@ -298,43 +302,43 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:43
  +#: ../plugin/FullSearch.php:44
   msgid "Refresh"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:44
  +#: ../plugin/FullSearch.php:45
   #, c-format
   msgid " (%s search results)"
   msgstr " (ġ  %s)"
   
  -#: ../plugin/FullSearch.php:120
  +#: ../plugin/FullSearch.php:122
   msgid "Empty expression"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:124 ../wikilib.php:2410
  +#: ../plugin/FullSearch.php:126 ../wikilib.php:2410
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "߸ ã ǥ \"%s\""
   
  -#: ../plugin/Gallery.php:257 ../plugin/Gallery.php:269
  +#: ../plugin/Gallery.php:275 ../plugin/Gallery.php:287
   msgid "add comment"
   msgstr " ޱ"
   
  -#: ../plugin/Gallery.php:266
  +#: ../plugin/Gallery.php:284
   msgid "show comments"
   msgstr " "
   
  -#: ../plugin/Gallery.php:309 ../plugin/Gallery.php:312 ../wikilib.php:1166
  +#: ../plugin/Gallery.php:328 ../plugin/Gallery.php:331 ../wikilib.php:1166
   #: ../wikilib.php:1309
   #, c-format
   msgid "Go back or return to %s"
   msgstr "ڷ Ȥ %s() "
   
  -#: ../plugin/Gallery.php:310
  +#: ../plugin/Gallery.php:329
   msgid "Comments are edited"
   msgstr ""
   
  -#: ../plugin/Gallery.php:313
  +#: ../plugin/Gallery.php:332
   msgid "Comments is added"
   msgstr ""
   
  @@ -395,65 +399,65 @@
   msgid "Edit new molecule"
   msgstr ""
   
  -#: ../plugin/Keywords.php:255
  +#: ../plugin/Keywords.php:272
   msgid "hits"
   msgstr ""
   
  -#: ../plugin/Keywords.php:259
  +#: ../plugin/Keywords.php:276
   msgid "add keywords"
   msgstr "Ű ϱ"
   
  -#: ../plugin/Keywords.php:262
  +#: ../plugin/Keywords.php:279
   msgid "Update keywords"
   msgstr "Ű "
   
  -#: ../plugin/Keywords.php:264
  +#: ../plugin/Keywords.php:281
   msgid "Add keywords"
   msgstr "Ű ϱ"
   
  -#: ../plugin/Keywords.php:265
  +#: ../plugin/Keywords.php:282
   msgid "Add as common words"
   msgstr ""
   
  -#: ../plugin/Keywords.php:266
  +#: ../plugin/Keywords.php:283
   msgid "Unselect all"
   msgstr "  "
   
  -#: ../plugin/Keywords.php:267
  +#: ../plugin/Keywords.php:284
   msgid "Suggest new Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:291
  +#: ../plugin/Keywords.php:308
   msgid "You are not able to add keywords."
   msgstr "Ű带 ߰  ϴ."
   
  -#: ../plugin/Keywords.php:300
  +#: ../plugin/Keywords.php:317
   #, c-format
   msgid "%s is not found."
   msgstr "%s() ã  ϴ"
   
  -#: ../plugin/Keywords.php:404
  +#: ../plugin/Keywords.php:421
   msgid "Common words are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:451
  +#: ../plugin/Keywords.php:468
   #, c-format
   msgid "Keywords for %s are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:477
  +#: ../plugin/Keywords.php:494
   msgid "Keywords are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:479
  +#: ../plugin/Keywords.php:496
   msgid "There are no changes found"
   msgstr ""
   
  -#: ../plugin/Keywords.php:492
  +#: ../plugin/Keywords.php:509
   msgid "Update with these Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:505
  +#: ../plugin/Keywords.php:522
   #, c-format
   msgid "Select keywords for %s"
   msgstr ""
  @@ -503,7 +507,7 @@
   msgid "Create new picture"
   msgstr " ׸ "
   
  -#: ../plugin/OeKaki.php:125
  +#: ../plugin/OeKaki.php:127
   msgid "Edit Image"
   msgstr "׸ ġ"
   
  @@ -615,7 +619,7 @@
   msgid "TwinPages of %s"
   msgstr "%s ֵ "
   
  -#: ../plugin/TwinPages.php:19 ../wiki.php:3910
  +#: ../plugin/TwinPages.php:19 ../wiki.php:4007
   msgid "See [TwinPages]: "
   msgstr ""
   
  @@ -848,12 +852,12 @@
   msgid "RCS purge \"%s\""
   msgstr ""
   
  -#: ../plugin/rdf_blog.php:31 ../plugin/rss_blog.php:25
  +#: ../plugin/rdf_blog.php:30 ../plugin/rss_blog.php:25
   msgid "Blog Changes"
   msgstr "ٲ α"
   
   # c-format
  -#: ../plugin/rdf_blog.php:45 ../plugin/rss_blog.php:103
  +#: ../plugin/rdf_blog.php:44 ../plugin/rss_blog.php:103
   #, c-format
   msgid "BlogChanges at %s"
   msgstr ""
  @@ -1270,118 +1274,118 @@
   msgid "Whois search result for %s"
   msgstr "%s  Whois ġ "
   
  -#: ../wiki.php:1107
  +#: ../wiki.php:1128
   #, c-format
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1408
  +#: ../wiki.php:1429
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
  -#: ../wiki.php:1418
  +#: ../wiki.php:1439
   msgid "File does not exists"
   msgstr ""
   
  -#: ../wiki.php:2360
  +#: ../wiki.php:2385
   msgid "Invalid ajax action."
   msgstr "߸ ajax ׼."
   
  -#: ../wiki.php:2589
  +#: ../wiki.php:2616
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:2589
  +#: ../wiki.php:2616
   msgid "TwinPages"
   msgstr "TwinPages"
   
  -#: ../wiki.php:2594
  +#: ../wiki.php:2621
   msgid "See [TwinPages]:"
   msgstr ""
   
  -#: ../wiki.php:2899
  +#: ../wiki.php:2926
   msgid "edit"
   msgstr ""
   
  -#: ../wiki.php:3052
  +#: ../wiki.php:3079
   msgid "Sister Sites Index"
   msgstr ""
   
  -#: ../wiki.php:3336 ../locale/dummy.php:6
  +#: ../wiki.php:3370 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "ġ"
   
  -#: ../wiki.php:3338
  +#: ../wiki.php:3372
   msgid "NotEditable"
   msgstr "ĥ "
   
  -#: ../wiki.php:3340 ../locale/dummy.php:6
  +#: ../wiki.php:3374 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:3341 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:3375 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "ã"
   
  -#: ../wiki.php:3609
  +#: ../wiki.php:3706
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:3870
  +#: ../wiki.php:3967
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:3871 ../wiki.php:3882
  +#: ../wiki.php:3968 ../wiki.php:3979
   msgid "Please contact WikiMasters"
   msgstr ""
   
  -#: ../wiki.php:3881
  +#: ../wiki.php:3978
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:3912 ../wiki.php:3915 ../wikilib.php:1100
  +#: ../wiki.php:4009 ../wiki.php:4012 ../wikilib.php:1100
   msgid "Create this page"
   msgstr " "
   
  -#: ../wiki.php:3917 ../wikilib.php:1102
  +#: ../wiki.php:4015 ../wikilib.php:1102
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
   
  -#: ../wiki.php:3917 ../wikilib.php:1102
  +#: ../wiki.php:4015 ../wikilib.php:1102
   msgid "title"
   msgstr ""
   
  -#: ../wiki.php:3926
  +#: ../wiki.php:4024
   msgid " or alternativly, use one of these templates:\n"
   msgstr " Ȥ Ʒ øƮ  ̿ϼ:\n"
   
  -#: ../wiki.php:3929
  +#: ../wiki.php:4027
   msgid "You have no templates"
   msgstr ""
   
  -#: ../wiki.php:3931
  +#: ../wiki.php:4029
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr "øƮ ÷ '%s'    弼.\n"
   
  -#: ../wiki.php:3942
  +#: ../wiki.php:4040
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
  -#: ../wiki.php:4032
  +#: ../wiki.php:4130
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr ""
   
  -#: ../wiki.php:4052
  +#: ../wiki.php:4150
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:4055
  +#: ../wiki.php:4153
   msgid "Please enter the valid password"
   msgstr "Ȯ йȣ ־ּ"
   
  
  
  
  1.16      +64 -60    moniwiki/locale/po/moniwiki.pot
  
  Index: moniwiki.pot
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/moniwiki.pot,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- moniwiki.pot	25 Feb 2006 07:16:37 -0000	1.15
  +++ moniwiki.pot	1 Jul 2006 18:59:33 -0000	1.16
  @@ -6,7 +6,7 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: PACKAGE VERSION\n"
  -"POT-Creation-Date: 2006-02-25 16:18+0900\n"
  +"POT-Creation-Date: 2006-07-02 04:01+0900\n"
   "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
   "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
   "Language-Team: LANGUAGE <LL@li.org>\n"
  @@ -14,12 +14,16 @@
   "Content-Type: text/plain; charset=CHARSET\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  -#: ../plugin/Attachment.php:41 ../plugin/Attachment.php:121
  +#: ../plugin/Attachment.php:41 ../plugin/Attachment.php:128
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr ""
   
  -#: ../plugin/Attachment.php:124
  +#: ../plugin/Attachment.php:125
  +msgid "or paste a new picture"
  +msgstr ""
  +
  +#: ../plugin/Attachment.php:131
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
  @@ -176,7 +180,7 @@
   msgid "You are not allowed to add a comment."
   msgstr ""
   
  -#: ../plugin/Comment.php:86 ../plugin/Keywords.php:292
  +#: ../plugin/Comment.php:86 ../plugin/Keywords.php:309
   msgid "Page does not exists"
   msgstr ""
   
  @@ -259,7 +263,7 @@
   msgid "%d day(s) passed from %s."
   msgstr ""
   
  -#: ../plugin/FastSearch.php:44 ../plugin/FullSearch.php:77
  +#: ../plugin/FastSearch.php:44 ../plugin/FullSearch.php:79
   msgid "No search text"
   msgstr ""
   
  @@ -299,43 +303,43 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:43
  +#: ../plugin/FullSearch.php:44
   msgid "Refresh"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:44
  +#: ../plugin/FullSearch.php:45
   #, c-format
   msgid " (%s search results)"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:120
  +#: ../plugin/FullSearch.php:122
   msgid "Empty expression"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:124 ../wikilib.php:2410
  +#: ../plugin/FullSearch.php:126 ../wikilib.php:2410
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr ""
   
  -#: ../plugin/Gallery.php:257 ../plugin/Gallery.php:269
  +#: ../plugin/Gallery.php:275 ../plugin/Gallery.php:287
   msgid "add comment"
   msgstr ""
   
  -#: ../plugin/Gallery.php:266
  +#: ../plugin/Gallery.php:284
   msgid "show comments"
   msgstr ""
   
  -#: ../plugin/Gallery.php:309 ../plugin/Gallery.php:312 ../wikilib.php:1166
  +#: ../plugin/Gallery.php:328 ../plugin/Gallery.php:331 ../wikilib.php:1166
   #: ../wikilib.php:1309
   #, c-format
   msgid "Go back or return to %s"
   msgstr ""
   
  -#: ../plugin/Gallery.php:310
  +#: ../plugin/Gallery.php:329
   msgid "Comments are edited"
   msgstr ""
   
  -#: ../plugin/Gallery.php:313
  +#: ../plugin/Gallery.php:332
   msgid "Comments is added"
   msgstr ""
   
  @@ -396,65 +400,65 @@
   msgid "Edit new molecule"
   msgstr ""
   
  -#: ../plugin/Keywords.php:255
  +#: ../plugin/Keywords.php:272
   msgid "hits"
   msgstr ""
   
  -#: ../plugin/Keywords.php:259
  +#: ../plugin/Keywords.php:276
   msgid "add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:262
  +#: ../plugin/Keywords.php:279
   msgid "Update keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:264
  +#: ../plugin/Keywords.php:281
   msgid "Add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:265
  +#: ../plugin/Keywords.php:282
   msgid "Add as common words"
   msgstr ""
   
  -#: ../plugin/Keywords.php:266
  +#: ../plugin/Keywords.php:283
   msgid "Unselect all"
   msgstr ""
   
  -#: ../plugin/Keywords.php:267
  +#: ../plugin/Keywords.php:284
   msgid "Suggest new Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:291
  +#: ../plugin/Keywords.php:308
   msgid "You are not able to add keywords."
   msgstr ""
   
  -#: ../plugin/Keywords.php:300
  +#: ../plugin/Keywords.php:317
   #, c-format
   msgid "%s is not found."
   msgstr ""
   
  -#: ../plugin/Keywords.php:404
  +#: ../plugin/Keywords.php:421
   msgid "Common words are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:451
  +#: ../plugin/Keywords.php:468
   #, c-format
   msgid "Keywords for %s are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:477
  +#: ../plugin/Keywords.php:494
   msgid "Keywords are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:479
  +#: ../plugin/Keywords.php:496
   msgid "There are no changes found"
   msgstr ""
   
  -#: ../plugin/Keywords.php:492
  +#: ../plugin/Keywords.php:509
   msgid "Update with these Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:505
  +#: ../plugin/Keywords.php:522
   #, c-format
   msgid "Select keywords for %s"
   msgstr ""
  @@ -504,7 +508,7 @@
   msgid "Create new picture"
   msgstr ""
   
  -#: ../plugin/OeKaki.php:125
  +#: ../plugin/OeKaki.php:127
   msgid "Edit Image"
   msgstr ""
   
  @@ -616,7 +620,7 @@
   msgid "TwinPages of %s"
   msgstr ""
   
  -#: ../plugin/TwinPages.php:19 ../wiki.php:3910
  +#: ../plugin/TwinPages.php:19 ../wiki.php:4007
   msgid "See [TwinPages]: "
   msgstr ""
   
  @@ -849,11 +853,11 @@
   msgid "RCS purge \"%s\""
   msgstr ""
   
  -#: ../plugin/rdf_blog.php:31 ../plugin/rss_blog.php:25
  +#: ../plugin/rdf_blog.php:30 ../plugin/rss_blog.php:25
   msgid "Blog Changes"
   msgstr ""
   
  -#: ../plugin/rdf_blog.php:45 ../plugin/rss_blog.php:103
  +#: ../plugin/rdf_blog.php:44 ../plugin/rss_blog.php:103
   #, c-format
   msgid "BlogChanges at %s"
   msgstr ""
  @@ -1266,118 +1270,118 @@
   msgid "Whois search result for %s"
   msgstr ""
   
  -#: ../wiki.php:1107
  +#: ../wiki.php:1128
   #, c-format
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1408
  +#: ../wiki.php:1429
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
  -#: ../wiki.php:1418
  +#: ../wiki.php:1439
   msgid "File does not exists"
   msgstr ""
   
  -#: ../wiki.php:2360
  +#: ../wiki.php:2385
   msgid "Invalid ajax action."
   msgstr ""
   
  -#: ../wiki.php:2589
  +#: ../wiki.php:2616
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:2589
  +#: ../wiki.php:2616
   msgid "TwinPages"
   msgstr ""
   
  -#: ../wiki.php:2594
  +#: ../wiki.php:2621
   msgid "See [TwinPages]:"
   msgstr ""
   
  -#: ../wiki.php:2899
  +#: ../wiki.php:2926
   msgid "edit"
   msgstr ""
   
  -#: ../wiki.php:3052
  +#: ../wiki.php:3079
   msgid "Sister Sites Index"
   msgstr ""
   
  -#: ../wiki.php:3336 ../locale/dummy.php:6
  +#: ../wiki.php:3370 ../locale/dummy.php:6
   msgid "EditText"
   msgstr ""
   
  -#: ../wiki.php:3338
  +#: ../wiki.php:3372
   msgid "NotEditable"
   msgstr ""
   
  -#: ../wiki.php:3340 ../locale/dummy.php:6
  +#: ../wiki.php:3374 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:3341 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:3375 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr ""
   
  -#: ../wiki.php:3609
  +#: ../wiki.php:3706
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:3870
  +#: ../wiki.php:3967
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:3871 ../wiki.php:3882
  +#: ../wiki.php:3968 ../wiki.php:3979
   msgid "Please contact WikiMasters"
   msgstr ""
   
  -#: ../wiki.php:3881
  +#: ../wiki.php:3978
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:3912 ../wiki.php:3915 ../wikilib.php:1100
  +#: ../wiki.php:4009 ../wiki.php:4012 ../wikilib.php:1100
   msgid "Create this page"
   msgstr ""
   
  -#: ../wiki.php:3917 ../wikilib.php:1102
  +#: ../wiki.php:4015 ../wikilib.php:1102
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
   
  -#: ../wiki.php:3917 ../wikilib.php:1102
  +#: ../wiki.php:4015 ../wikilib.php:1102
   msgid "title"
   msgstr ""
   
  -#: ../wiki.php:3926
  +#: ../wiki.php:4024
   msgid " or alternativly, use one of these templates:\n"
   msgstr ""
   
  -#: ../wiki.php:3929
  +#: ../wiki.php:4027
   msgid "You have no templates"
   msgstr ""
   
  -#: ../wiki.php:3931
  +#: ../wiki.php:4029
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
   
  -#: ../wiki.php:3942
  +#: ../wiki.php:4040
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
  -#: ../wiki.php:4032
  +#: ../wiki.php:4130
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr ""
   
  -#: ../wiki.php:4052
  +#: ../wiki.php:4150
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:4055
  +#: ../wiki.php:4153
   msgid "Please enter the valid password"
   msgstr ""
   
  
  
  


wkpark      2006/07/02 13:34:00

  Modified:    .        wiki.php
  Log:
  use /dev/null with popen()
  
  Revision  Changes    Path
  1.298     +10 -9     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.297
  retrieving revision 1.298
  diff -u -r1.297 -r1.298
  --- wiki.php	1 Jul 2006 18:41:03 -0000	1.297
  +++ wiki.php	2 Jul 2006 04:34:00 -0000	1.298
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.297 2006/07/01 18:41:03 wkpark Exp $
  +// $Id: wiki.php,v 1.298 2006/07/02 04:34:00 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.297 $',1,-1);
  +$_revision = substr('$Revision: 1.298 $',1,-1);
   $_release = '1.1.2';
   
   #ob_start("ob_gzhandler");
  @@ -1155,6 +1155,9 @@
   
     function Version_RCS($DB) {
       $this->DB=$DB;
  +    $this->NULL='';
  +    if(getenv("OS")!="Windows_NT") $this->NULL=' 2>/dev/null';
  +    if ($DB->rcs_error_log) $this->NULL='';
     }
   
     function _filename($pagename) {
  @@ -1166,7 +1169,7 @@
     function co($pagename,$rev,$opt='') {
       $filename= $this->_filename($pagename);
   
  -    $fp=@popen("co -x,v/ -q -p\"".$rev."\" ".$filename,"r");
  +    $fp=@popen("co -x,v/ -q -p\"".$rev."\" ".$filename.$this->NULL,"r");
       $out='';
       if (is_resource($fp)) {
         while (!feof($fp)) {
  @@ -1181,7 +1184,7 @@
     function ci($pagename,$log) {
       $key=$this->_filename($pagename);
       $pagename=escapeshellcmd($pagename);
  -    $fp=@popen("ci -l -x,v/ -q -t-\"".$pagename."\" -m\"".$log."\" ".$key,"r");
  +    $fp=@popen("ci -l -x,v/ -q -t-\"".$pagename."\" -m\"".$log."\" ".$key.$this->NULL,"r");
       if ($fp) pclose($fp);
     }
   
  @@ -1190,7 +1193,7 @@
         $rev = "-r$rev";
       $filename=$this->_filename($pagename);
   
  -    $fp= popen("rlog $opt $oldopt -x,v/ $rev ".$filename,"r");
  +    $fp= popen("rlog $opt $oldopt -x,v/ $rev ".$filename.$this->NULL,"r");
       $out='';
       if ($fp) {
         while (!feof($fp)) {
  @@ -1206,10 +1209,8 @@
       if ($rev) $option="-r$rev ";
       if ($rev2) $option.="-r$rev2 ";
   
  -    $NULL='';
  -    if(getenv("OS")!="Windows_NT") $NULL=' 2>/dev/null';
       $filename=$this->_filename($pagename);
  -    $fp=popen("rcsdiff -x,v/ -u $option ".$filename.$NULL,'r');
  +    $fp=popen("rcsdiff -x,v/ -u $option ".$filename.$this->NULL,'r');
       if (!$fp) return '';
       while (!feof($fp)) {
         # trashing first two lines
  @@ -3121,7 +3122,7 @@
         fwrite($fp, $orig);
         fclose($fp);
   
  -      $fp=popen("merge -p ".$this->page->filename." $tmpf2 $tmpf3",'r');
  +      $fp=popen("merge -p ".$this->page->filename." $tmpf2 $tmpf3".$this->NULL,'r');
   
         if (!$fp) {
           unlink($tmpf2);
  
  
  


wkpark      2006/07/02 19:15:14

  Modified:    plugin   FullSearch.php
  Log:
  fixed fullsearch cache bug
  
  Revision  Changes    Path
  1.21      +14 -7     moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- FullSearch.php	22 Jun 2006 08:45:25 -0000	1.20
  +++ FullSearch.php	2 Jul 2006 10:15:14 -0000	1.21
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
   //
  -// $Id: FullSearch.php,v 1.20 2006/06/22 08:45:25 wkpark Exp $
  +// $Id: FullSearch.php,v 1.21 2006/07/02 10:15:14 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
  @@ -144,12 +144,19 @@
       if (is_array($data)) {
         # check cache mtime
         $cmt=$fc->mtime($sid);
  -      foreach ($data as $p=>$c) {
  -        $mp=$DBInfo->getPage($p);
  -        $mt=$mp->mtime();
  -        if ($mt > $cmt) {
  -          $data=array();
  -          break;
  +
  +      # check update or not
  +      $dmt=filemtime($DBInfo->text_dir.'/.');
  +      if ($dmt > $cmt) { # XXX crude method
  +        $data=array();
  +      } else { # XXX smart but incomplete method
  +        foreach ($data as $p=>$c) {
  +          $mp=$DBInfo->getPage($p);
  +          $mt=$mp->mtime();
  +          if ($mt > $cmt) {
  +            $data=array();
  +            break;
  +          }
           }
         }
         $hits=$data;
  
  
  


wkpark      2006/07/03 21:48:16

  Modified:    plugin   ISBN.php
  Log:
  update Aladdin url and more fix for Aladdin
  
  Revision  Changes    Path
  1.6       +18 -11    moniwiki/plugin/ISBN.php
  
  Index: ISBN.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/ISBN.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ISBN.php	20 Sep 2005 10:04:34 -0000	1.5
  +++ ISBN.php	3 Jul 2006 12:48:16 -0000	1.6
  @@ -1,9 +1,9 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2006 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a ISBN macro plugin for the MoniWiki
   //
  -// $Id: ISBN.php,v 1.5 2005/09/20 10:04:34 wkpark Exp $
  +// $Id: ISBN.php,v 1.6 2006/07/03 12:48:16 wkpark Exp $
   
   function macro_ISBN($formatter="",$value="") {
     global $DBInfo;
  @@ -11,7 +11,7 @@
     $ISBN_MAP="IsbnMap";
     $DEFAULT=<<<EOS
   Amazon http://www.amazon.com/exec/obidos/ISBN= http://images.amazon.com/images/P/\$ISBN.01.MZZZZZZZ.gif
  -Aladdin http://www.aladdin.co.kr/catalog/book.asp?ISBN= http://image.aladdin.co.kr/cover/cover/\$ISBN_1.gif @/cover/(\$ISBN_1\..{3,4})\s@\\\$ISBN_1\.gif
  +Aladdin http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN= http://image.aladdin.co.kr/cover/cover/\$ISBN_1.gif @/cover/([^\s_/]+_1\..{3,4})\s@\\\$ISBN_1\.gif
   Gang http://kangcom.com/common/qsearch/search.asp?s_flag=T&s_text= http://kangcom.com/l_pic/\$ISBN.jpg @bookinfo\.asp\?sku=(\d+)"@\n
   EOS;
   
  @@ -134,10 +134,12 @@
        $bcache=new Cache_text('isbn');
        if ($bcache->exists($md5sum)) {
           $imgname=trim($bcache->fetch($md5sum));
  +
           if ($imgrepl)
              $imglink=preg_replace('@'.$imgrepl.'@',$imgname, $imglink);
           else
              $imglink=str_replace('$ISBN', $imgname, $imglink);
  +        $fetch_ok=1;
        } else {
           // fetch the bookinfo page and grep the imagname of the book.
           $fd=fopen($booklink,'r');
  @@ -151,21 +153,26 @@
                       $imglink=preg_replace('@'.$imgrepl.'@',$match[1], $imglink);
                    else
                       $imglink=str_replace('$ISBN', $match[1], $imglink);
  +                 $fetch_ok=1;
                    break;
                 }
              }
              fclose($fd);
           }
        }
  -  } else if (strpos($imglink, '$ISBN') === false)
  +  }
  +
  +  if (!$fetch_ok) {
  +     if (strpos($imglink, '$ISBN') === false)
           $imglink.=$isbn;
  -  else {
  -     if (strpos($imglink, '$ISBN2') === false)
  -        $imglink=str_replace('$ISBN', $isbn, $imglink);
  -     else
  -        $imglink=str_replace('$ISBN2', $isbn2, $imglink);
  -     if ($ext)
  -        $imglink=preg_replace('/\.(gif|jpeg|jpg|png|bmp)$/i', $ext, $imglink);
  +     else {
  +        if (strpos($imglink, '$ISBN2') === false)
  +           $imglink=str_replace('$ISBN', $isbn, $imglink);
  +        else
  +           $imglink=str_replace('$ISBN2', $isbn2, $imglink);
  +        if ($ext)
  +           $imglink=preg_replace('/\.(gif|jpeg|jpg|png|bmp)$/i', $ext, $imglink);
  +     }
     }
   
     if ($noimg) {
  
  
  


wkpark      2006/07/05 20:13:25

  Modified:    css      _base.css
  Log:
  added rc-button styles
  
  Revision  Changes    Path
  1.6       +10 -0     moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- _base.css	25 Feb 2006 06:56:41 -0000	1.5
  +++ _base.css	5 Jul 2006 11:13:25 -0000	1.6
  @@ -399,6 +399,16 @@
     font-weight:normal;
   }
   
  +.rc-button ul {
  +  list-style: none;
  +  display: inline;
  +  padding: 0px;
  +}
  +
  +.rc-button li {
  +  display: inline;
  +}
  +
   .wikiMarkup {
     font-family:Bitstream vera sans mono,Courier New,monospace; 
     background-color:#ffff00;
  
  
  


wkpark      2006/07/05 22:16:47

  Modified:    plugin   ISBN.php
  Log:
  use $refresh
  
  Revision  Changes    Path
  1.7       +4 -4      moniwiki/plugin/ISBN.php
  
  Index: ISBN.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/ISBN.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- ISBN.php	3 Jul 2006 12:48:16 -0000	1.6
  +++ ISBN.php	5 Jul 2006 13:16:47 -0000	1.7
  @@ -3,9 +3,9 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a ISBN macro plugin for the MoniWiki
   //
  -// $Id: ISBN.php,v 1.6 2006/07/03 12:48:16 wkpark Exp $
  +// $Id: ISBN.php,v 1.7 2006/07/05 13:16:47 wkpark Exp $
   
  -function macro_ISBN($formatter="",$value="") {
  +function macro_ISBN($formatter,$value="") {
     global $DBInfo;
   
     $ISBN_MAP="IsbnMap";
  @@ -97,7 +97,7 @@
         else {
           $name=strtok($arg,'=');
           $val=strtok(' ');
  -        $attr.=$name.'="'.$val.'" ';
  +        if ($val) $attr.=$name.'="'.$val.'" '; #XXX
           if ($name == 'align') $attr.='class="img'.ucfirst($val).'" ';
           if ($name == 'img') $ext=$val;
         }
  @@ -132,7 +132,7 @@
        $md5sum=md5($booklink);
        // check cache
        $bcache=new Cache_text('isbn');
  -     if ($bcache->exists($md5sum)) {
  +     if (!$formatter->refresh and $bcache->exists($md5sum)) {
           $imgname=trim($bcache->fetch($md5sum));
   
           if ($imgrepl)
  
  
  


wkpark      2006/07/06 07:51:12

  Modified:    plugin/processor vim.php
  Log:
  workaround to strip header tags from vim outputs.
  
  Revision  Changes    Path
  1.32      +8 -4      moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- vim.php	18 Jan 2006 15:59:06 -0000	1.31
  +++ vim.php	5 Jul 2006 22:51:12 -0000	1.32
  @@ -1,5 +1,5 @@
   <?php
  -// Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2006 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a vim colorizer plugin for the MoniWiki
   //
  @@ -10,7 +10,7 @@
   // Win32 note:
   //  add $path="/bin;/Program Files/Vim/VimXX"; in the config.php
   //
  -// $Id: vim.php,v 1.31 2006/01/18 15:59:06 wkpark Exp $
  +// $Id: vim.php,v 1.32 2006/07/05 22:51:12 wkpark Exp $
   
   function processor_vim($formatter,$value,$options) {
     global $DBInfo;
  @@ -62,7 +62,7 @@
     if (!file_exists($cache_dir)) {
       umask(000);
       mkdir($cache_dir,0777);
  -    umask(022);
  +    umask($DBInfo->umask);
     }
   
     if (file_exists($cache_dir."/$uniq".".html") && !$formatter->refresh && !$formatter->preview) {
  @@ -123,7 +123,11 @@
   
     #$out=preg_replace("/<title.*title>|<\/?head>|<\/?html>|<meta.*>|<\/?body.*>/","", $out);
     $out=str_replace("\r\n","\n",$out); # for Win32
  -  $out=preg_replace("/(^(\s|\S)*<pre>\n|\n<\/pre>(\s|\S)*$)/","",$out);
  +  #$out=preg_replace("/(^(\s|\S)*<pre>\n|\n<\/pre>(\s|\S)*$)/","",$out); # XXX segfault sometime
  +  $fpos=strpos($out,'<pre>');
  +  $tpos=strpos($out,'</pre>');
  +  $out=substr($out,$fpos+6,$tpos);
  +
     $lines=explode("\n",$out);
     $out="<span class=\"line\">".
       implode("</span>\n<span class=\"line\">",$lines)."</span>\n";
  
  
  


wkpark      2006/07/06 08:07:06

  Modified:    plugin   ISBN.php
  Log:
  some sites like as IMDB check the referer to block his images
  and the $isbn_img_download is now supported to use these sites
  
  Revision  Changes    Path
  1.8       +36 -1     moniwiki/plugin/ISBN.php
  
  Index: ISBN.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/ISBN.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- ISBN.php	5 Jul 2006 13:16:47 -0000	1.7
  +++ ISBN.php	5 Jul 2006 23:07:06 -0000	1.8
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a ISBN macro plugin for the MoniWiki
   //
  -// $Id: ISBN.php,v 1.7 2006/07/05 13:16:47 wkpark Exp $
  +// $Id: ISBN.php,v 1.8 2006/07/05 23:07:06 wkpark Exp $
   
   function macro_ISBN($formatter,$value="") {
     global $DBInfo;
  @@ -160,6 +160,41 @@
              fclose($fd);
           }
        }
  +     if ($fetch_ok and $DBInfo->isbn_img_download) {
  +        # some sites such as the IMDB check the referer and
  +        # do not permit to show any of its images
  +        # the $isbn_img_download option is needed to show such images
  +        preg_match('/^(.*)\.(jpeg|jpg|gif|png)$/',$imglink,$m);
  +        if ($m[1] and $m[2]) {
  +           $myimglink=md5($m[1]).'.'.$m[2];
  +        }
  +
  +        if (!$m[2]) {
  +           # skip XXX
  +        } else if (file_exists($DBInfo->upload_dir.'/isbn/'.$myimglink)) {
  +           $mlink=macro_Attachment($formatter,'attachment:isbn/'.$myimglink,1);
  +           $imglink=qualifiedUrl($DBInfo->url_prefix.'/'.$mlink);
  +        } else {
  +           $fd=fopen($imglink,'r');
  +           if (is_resource($fd)) {
  +              $myimg='';
  +              while(!feof($fd)) {
  +                 $myimg.=fread($fd,1024);
  +              }
  +              fclose($fd);
  +              if (!is_dir($DBInfo->upload_dir.'/isbn/')) {
  +                 umask(000);
  +                 mkdir($DBInfo->upload_dir.'/isbn/',0777);
  +                 umask($DBInfo->umask);
  +              }
  +              $fd=fopen($DBInfo->upload_dir.'/isbn/'.$myimglink,'w');
  +              if (is_resource($fd)) {
  +                 fwrite($fd,$myimg);
  +                 fclose($fd);
  +              }
  +           }
  +        }
  +     }
     }
   
     if (!$fetch_ok) {
  
  
  


wkpark      2006/07/06 08:21:51

  Modified:    theme/azblue/css default.css
  Log:
  fixed list style
  
  Revision  Changes    Path
  1.4       +6 -2      moniwiki/theme/azblue/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/azblue/css/default.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- default.css	26 Apr 2006 14:54:04 -0000	1.3
  +++ default.css	5 Jul 2006 23:21:51 -0000	1.4
  @@ -231,14 +231,18 @@
     text-decoration:none;
   }
   
  -ul li {
  +ul {
     list-style-image: url(../imgs/li1.png);
   }
   
  -ul li li {
  +ul>li ul>li {
     list-style-image: url(../imgs/li2.png);
   }
   
  +ol {
  +  list-style-image: none;
  +}
  +
   h2,h1 {
     padding-top:10px;
   }
  
  
  


wkpark      2006/07/06 20:17:52

  Modified:    plugin   download.php
  Log:
  fixed for the $force_download option
  
  Revision  Changes    Path
  1.12      +21 -5     moniwiki/plugin/download.php
  
  Index: download.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/download.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- download.php	4 Jan 2005 08:25:25 -0000	1.11
  +++ download.php	6 Jul 2006 11:17:52 -0000	1.12
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // download action plugin for the MoniWiki
   //
  -// $Id: download.php,v 1.11 2005/01/04 08:25:25 wkpark Exp $
  +// $Id: download.php,v 1.12 2006/07/06 11:17:52 wkpark Exp $
   //
   function do_download($formatter,$options) {
     global $DBInfo;
  @@ -14,11 +14,27 @@
       do_uploadedfiles($formatter,$options);
       return; 
     }
  -  $key=$DBInfo->pageToKeyname($formatter->page->name);
  -  if (!$key) {
  -    // FIXME
  -    return;
  +  $value=&$options['value'];
  +  if (($p=strpos($value,':')) !== false or ($p=strpos($value,'/')) !== false) {
  +    $subpage=substr($value,0,$p);
  +    $file=substr($value,$p+1);
  +    $value=$subpage.'/'.$file; # normalize page arg
  +    if ($subpage and $DBInfo->hasPage($subpage)) {
  +      $pagename=&$subpage;
  +      $key=$DBInfo->pageToKeyname($subpage);
  +    } else {
  +      $pagename='';
  +      $key='';
  +    }
  +  } else {
  +    $pagename=&$formatter->page->name;
  +    $key=$DBInfo->pageToKeyname($formatter->page->name);
     }
  +
  +  #if (!$key) {
  +  #  // FIXME
  +  #  return;
  +  #}
     $dir=$DBInfo->upload_dir."/$key";
   
     if (file_exists($dir))
  
  
  


wkpark      2006/07/06 20:38:29

  Modified:    .        wiki.php
  Log:
  small fix to use $value in security plugins
  
  Revision  Changes    Path
  1.299     +3 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.298
  retrieving revision 1.299
  diff -u -r1.298 -r1.299
  --- wiki.php	2 Jul 2006 04:34:00 -0000	1.298
  +++ wiki.php	6 Jul 2006 11:38:29 -0000	1.299
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.298 2006/07/02 04:34:00 wkpark Exp $
  +// $Id: wiki.php,v 1.299 2006/07/06 11:38:29 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.298 $',1,-1);
  +$_revision = substr('$Revision: 1.299 $',1,-1);
   $_release = '1.1.2';
   
   #ob_start("ob_gzhandler");
  @@ -4119,6 +4119,7 @@
       $options['metatags']='<meta name="robots" content="noindex,nofollow" />';
       $options['custom']='';
       $options['help']='';
  +    $options['value']=$value;
   
       if (!$DBInfo->security->is_allowed($action,$options)) {
         if ($options['custom']!='' and
  
  
  


wkpark      2006/07/06 21:56:52

  Modified:    plugin   UploadFile.php UploadedFiles.php
  Log:
  pdf type added
  fix to support $force_download
  
  Revision  Changes    Path
  1.23      +2 -2      moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- UploadFile.php	7 Jan 2006 10:38:59 -0000	1.22
  +++ UploadFile.php	6 Jul 2006 12:56:52 -0000	1.23
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.22 2006/01/07 10:38:59 wkpark Exp $
  +// $Id: UploadFile.php,v 1.23 2006/07/06 12:56:52 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -73,7 +73,7 @@
     if ($DBInfo->pds_allowed)
        $pds_exts=$DBInfo->pds_allowed;
     else
  -     $pds_exts="png|jpg|jpeg|gif|mp3|zip|tgz|gz|txt|css|exe|hwp";
  +     $pds_exts="png|jpg|jpeg|gif|mp3|zip|tgz|gz|txt|css|exe|pdf|hwp";
     if (!preg_match("/(".$pds_exts.")$/i",$fname[2])) {
        $msg.=sprintf(_("%s is not allowed to upload"),$upfilename)."<br/>\n";
        continue;
  
  
  
  1.12      +5 -4      moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- UploadedFiles.php	18 Jan 2006 15:58:35 -0000	1.11
  +++ UploadedFiles.php	6 Jul 2006 12:56:52 -0000	1.12
  @@ -4,7 +4,7 @@
   // a UploadedFiles plugin for the MoniWiki
   // vim:et:sts=4:
   //
  -// $Id: UploadedFiles.php,v 1.11 2006/01/18 15:58:35 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.12 2006/07/06 12:56:52 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     $list=macro_UploadedFiles($formatter,$options['page'],$options);
  @@ -24,7 +24,7 @@
      $use_preview=$DBInfo->use_preview_uploads ? $DBInfo->use_preview_uploads:0;
      $preview_width=64;
   
  -   $use_preview=0;
  +   #$use_preview=0;
      $js_tag=0;
      $js_script='';
      $uploader='';
  @@ -42,7 +42,7 @@
        $use_preview=1;
      }
   
  -   if ($options['tag']) {
  +   if ($options['tag']) { # javascript tag mode
        $js_tag=1;$use_preview=1;
      }
      foreach ($args as $arg) {
  @@ -164,7 +164,8 @@
      else {
         $key='';
         $value='UploadFile';
  -      $prefix.= ($prefix ? '/':'');
  +      if (!$force_download)
  +         $prefix.= ($prefix ? '/':'');
         $dir=$DBInfo->upload_dir;
         $handle= opendir($dir);
         $opener='/';
  
  
  


wkpark      2006/07/07 21:50:09

  Modified:    .        wiki.php
  Log:
  add errlog() method
  
  Revision  Changes    Path
  1.300     +48 -2     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.299
  retrieving revision 1.300
  diff -u -r1.299 -r1.300
  --- wiki.php	6 Jul 2006 11:38:29 -0000	1.299
  +++ wiki.php	7 Jul 2006 12:50:08 -0000	1.300
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.299 2006/07/06 11:38:29 wkpark Exp $
  +// $Id: wiki.php,v 1.300 2006/07/07 12:50:08 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.299 $',1,-1);
  +$_revision = substr('$Revision: 1.300 $',1,-1);
   $_release = '1.1.2';
   
   #ob_start("ob_gzhandler");
  @@ -1574,6 +1574,9 @@
       $this->themedir= dirname(__FILE__);
       $this->set_theme($options['theme']);
   
  +    $this->NULL='';
  +    if(getenv("OS")!="Windows_NT") $this->NULL=' 2>/dev/null';
  +
       $this->external_on=0;
       $this->external_target='';
       if ($DBInfo->external_target)
  @@ -3759,6 +3762,49 @@
   
       setcookie('MONI_TRAIL',$trail,time()+60*60*24*30,get_scriptname());
     }
  +
  +  function errlog($prefix="LoG") {
  +    global $DBInfo;
  +
  +    $this->mylog='';
  +    $this->LOG='';
  +    if ($DBInfo->use_errlog) {
  +      if(getenv("OS")!="Windows_NT") {
  +        $this->mylog=tempnam($DBInfo->vartmp_dir,$prefix);
  +        $this->LOG=' 2>'.$this->mylog;
  +      }
  +    } else {
  +      if(getenv("OS")!="Windows_NT") $this->LOG=' 2>/dev/null';
  +    }
  +  }
  +
  +  function get_errlog() {
  +    global $DBInfo;
  +
  +    $log=&$this->mylog;
  +    if ($log and file_exists($log) and ($sz=filesize($log))) {
  +      $fd=fopen($log,'r');
  +      if (is_resource($fd)) {
  +        $maxl=$DBInfo->errlog_maxline ? min($DBInfo->errlog_maxline,200):20;
  +        if ($sz <= $maxl*70) { # approx log size ~ line * 70
  +          $out=fread($fd,$sz);
  +        } else {
  +          for ($i=0;($i<$maxl) and ($s=fgets($fd,1024));$i++)
  +             $out.=$s;
  +          $out.= "...\n";
  +        }
  +        fclose($fd);
  +        unlink($log);
  +        $this->LOG='';
  +        $this->mylog='';
  +
  +        if (!$DBInfo->raw_errlog) {
  +          $out=preg_replace('/(\/[a-z0-9.]+)+/','/XXX',$out);
  +        }
  +        return $out;
  +      }
  +    }
  +  }
   } # end-of-Formatter
   
   # setup the locale like as the phpwiki style
  
  
  


wkpark      2006/07/07 21:51:31

  Modified:    plugin   backup.php restore.php UploadedFiles.php
  Log:
  use errlog() method and fixed restore action
  
  Revision  Changes    Path
  1.3       +15 -7     moniwiki/plugin/backup.php
  
  Index: backup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/backup.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- backup.php	5 Aug 2003 12:58:58 -0000	1.2
  +++ backup.php	7 Jul 2006 12:51:31 -0000	1.3
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Test]]
   //
  -// $Id: backup.php,v 1.2 2003/08/05 12:58:58 wkpark Exp $
  +// $Id: backup.php,v 1.3 2006/07/07 12:51:31 wkpark Exp $
   // vim:et:ts=2:
   
   function do_post_backup($formatter,$options) {
  @@ -34,13 +34,21 @@
       $cmd="tar c{$verbose_option}pzf $tar $dest_files";
   
       $formatter->send_header("",$options);
  -    $formatter->send_title("","",$options);
   
  -    print "<pre>";
  -    print $cmd;
  -    exec($cmd,$log);
  -    print(join("\n",$log));
  -    print "</pre>";
  +    $formatter->errlog();
  +    $fp=popen($cmd.' > '.$formatter->mylog,'r');
  +    if (is_resource($fp)) {
  +      pclose($fp);
  +      $options['msg']=_("Your wiki is backuped successfully");
  +      $formatter->send_title("","",$options);
  +      print '<pre class="errlog">';
  +      print $cmd."\n";
  +      print $formatter->get_errlog();
  +      print "</pre>";
  +    } else {
  +      $options['msg']=_("Backup failed !");
  +      $formatter->send_title("","",$options);
  +    }
       $formatter->send_footer("",$options);
     } else {
       $title = _("Did you want to Backup your wiki ?");
  
  
  
  1.4       +10 -4     moniwiki/plugin/restore.php
  
  Index: restore.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/restore.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- restore.php	25 Aug 2003 08:00:30 -0000	1.3
  +++ restore.php	7 Jul 2006 12:51:31 -0000	1.4
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a restore action plugin for the MoniWiki
   //
  -// $Id: restore.php,v 1.3 2003/08/25 08:00:30 wkpark Exp $
  +// $Id: restore.php,v 1.4 2006/07/07 12:51:31 wkpark Exp $
   // vim:et:ts=2:
   
   function do_post_restore($formatter,$options) {
  @@ -21,6 +21,8 @@
   
       if (file_exists($DBInfo->text_dir)) {
         $title = _("Error: Don't try to overwrite it");
  +      $options['msg'] = _("Please rename your old 'text_dir' first.");
  +      $options['msg'].= '<br />'._("e.g. \$ mv data/text data/text_old");
         $formatter->send_header("",$options);
         $formatter->send_title($title,"",$options);
       } else if (file_exists($tar)) {
  @@ -33,10 +35,13 @@
         $formatter->send_header("",$options);
         $formatter->send_title($title,"",$options);
   
  -      print "<pre class='wiki'>";
  +      print "<pre class='errlog'>";
         print "$ $cmd\n";
  -      exec($cmd,$log);
  -      print(join("\n",$log));
  +      $formatter->errlog();
  +      $fp=popen($cmd.$formatter->LOG,'r');
  +      pclose($fp);
  +      $err=$formatter->get_errlog();
  +      print $err;
         print "</pre>";
       }
   
  @@ -60,6 +65,7 @@
       $formatter->send_footer("",$options);
     } else {
       $title = _("Restore backuped data");
  +    $options['msg']=_("Select a tarball file to restore");
       $formatter->send_header("",$options);
       $formatter->send_title($title,"",$options);
   
  
  
  
  1.13      +5 -2      moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- UploadedFiles.php	6 Jul 2006 12:56:52 -0000	1.12
  +++ UploadedFiles.php	7 Jul 2006 12:51:31 -0000	1.13
  @@ -4,7 +4,7 @@
   // a UploadedFiles plugin for the MoniWiki
   // vim:et:sts=4:
   //
  -// $Id: UploadedFiles.php,v 1.12 2006/07/06 12:56:52 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.13 2006/07/07 12:51:31 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     $list=macro_UploadedFiles($formatter,$options['page'],$options);
  @@ -132,8 +132,11 @@
      else $mydownload='download';
      $checkbox='checkbox';
      $needle="//";
  -   if ($options['download'] || $DBInfo->force_download)
  +   if ($options['download'] || $DBInfo->force_download) {
        $force_download=1;
  +     if ($options['download'])
  +       $mydownload=$options['download'];
  +   }
      if ($options['needle']) $needle=$options['needle'];
      if ($options['checkbox']) $checkbox=$options['checkbox'];
   
  
  
  


wkpark      2006/07/07 21:53:04

  Modified:    plugin   man_get.php
  Log:
  use errlog(), gzfile()
  
  Revision  Changes    Path
  1.3       +18 -5     moniwiki/plugin/man_get.php
  
  Index: man_get.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/man_get.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- man_get.php	15 Aug 2003 21:30:36 -0000	1.2
  +++ man_get.php	7 Jul 2006 12:53:04 -0000	1.3
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a man_get action plugin for the MoniWiki
   //
  -// $Id: man_get.php,v 1.2 2003/08/15 21:30:36 wkpark Exp $
  +// $Id: man_get.php,v 1.3 2006/07/07 12:53:04 wkpark Exp $
   // vim:et:ts=2:
   
   function do_man_get($formatter,$options) {
  @@ -16,8 +16,16 @@
     }
   
     $cmd="man -w $options[man]";
  -  exec(escapeshellcmd($cmd),$log);
  -  $fname=$log[0];
  +  $formatter->errlog();
  +  $fp=popen(escapeshellcmd($cmd).$formatter->LOG,'r');
  +  if (is_resource($fp)) {
  +    $fname=rtrim(fgets($fp,1024));
  +    pclose($fp);
  +  }
  +  $err=$formatter->get_errlog();
  +  if ($err) {
  +    $err='<pre class="errlog">'.$err.'</pre>';
  +  }
   
     if (!$fname) {
       $options['title']=_("No manpage found");
  @@ -33,8 +41,13 @@
       return;
     }
   
  -  exec("zcat $fname",$raw);
  -  $raw=join("\n",$raw);
  +  if (function_exists('gzfile')) {
  +    $raw=gzfile($fname);
  +    $raw=join('',$raw);
  +  } else {
  +    exec("zcat $fname",$raw);
  +    $raw=join("\n",$raw);
  +  }
   
     $options['title']=$options['page'];
   
  
  
  


wkpark      2006/07/07 21:55:23

  Modified:    plugin/processor gnuplot.php
  Log:
  use errlog() and small fixes to support dumb term for fun.
  
  Revision  Changes    Path
  1.12      +29 -17    moniwiki/plugin/processor/gnuplot.php
  
  Index: gnuplot.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/gnuplot.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- gnuplot.php	10 Dec 2005 14:14:59 -0000	1.11
  +++ gnuplot.php	7 Jul 2006 12:55:22 -0000	1.12
  @@ -6,7 +6,7 @@
   // Usage: {{{#!gnuplot
   // plot sin(x)
   // }}}
  -// $Id: gnuplot.php,v 1.11 2005/12/10 14:14:59 wkpark Exp $
  +// $Id: gnuplot.php,v 1.12 2006/07/07 12:55:22 wkpark Exp $
   
   function processor_gnuplot($formatter="",$value="") {
     global $DBInfo;
  @@ -24,10 +24,14 @@
     list($dum,$szarg)=explode(' ',$line);
     if ($szarg) {
       $args= explode('x',$szarg,2);
  -    $xsize=intval($args[0]);$ysize=intval($args[1]);
  +    $xsize=max(intval($args[0]),50);$ysize=max(intval($args[1]),50);
       $value='#'.$line."\n".$value;
     }
   
  +  $term='png';
  +  if ($term=='png') $ext='png';
  +  else if ($term == 'dumb') $ext='txt';
  +
     $default_size="set size 0.5,0.6";
   
     $body=$plt=$value;
  @@ -74,14 +78,15 @@
     $plt=preg_replace("/\n\s*(s?plot)\s+('|\")<(\s*)/", "\n\\1 \\2\\3",$plt);
     
     #print "<pre>$plt</pre>";
  -  
  -  $plt="\n".$size."\n".$plt;
  +
  +  if ($term != 'dumb') 
  +    $plt="\n".$size."\n".$plt;
     $uniq=md5($plt);
   
  -  $outpath="$cache_dir/$uniq.png";
  +  $outpath="$cache_dir/$uniq.$ext";
   
     $src="
  -set term png
  +set term $term
   set out '$outpath'
   $plt
   ";
  @@ -92,7 +97,7 @@
       umask(022);
     }
   
  -  if ($formatter->refresh || !file_exists("$cache_dir/$uniq.png")) {
  +  if ($formatter->refresh || !file_exists("$cache_dir/$uniq.$ext")) {
   
        $flog=tempnam($vartmp_dir,"GNUPLOT");
        #
  @@ -117,22 +122,29 @@
          #
          # Unix
          #
  -       $cmd= "$gnuplot 2> $flog";
  -       $fp=popen($cmd,"w");
  -       fwrite($fp,$src);
  -       pclose($fp);
  -       $log=join(file($flog),"");
  -       if (file_exists($outpath)) {
  -         unlink($flog);
  -       } else {
  +       $cmd= $gnuplot;
  +       $formatter->errlog('GnuPlot');
  +       $fp=popen($cmd.$formatter->LOG,"w");
  +       if (is_resource($fp)) {
  +         fwrite($fp,$src);
  +         pclose($fp);
  +       }
  +       $log=$formatter->get_errlog();
  +       if (filesize($outpath) == 0) {
            print "<font color='red'>ERROR:</font> Gnuplot does not work correctly";
  +         unlink($outpath);
          }
        }
   
        if ($log)
  -        $log ="<pre style='background-color:black;color:gold'>$log</pre>\n";
  +        $log ="<pre class='errlog'>$log</pre>\n";
     }
  -  return $log."<img src='$DBInfo->url_prefix/$cache_dir/$uniq.png' alt='gnuplot' />";
  +  if (!file_exists($outpath)) return $log;
  +  if ($ext == 'png')
  +  return $log."<img src='$DBInfo->url_prefix/$cache_dir/$uniq.$ext' alt='gnuplot' />";
  +  if ($ext == 'txt')
  +  return $log.'<pre class="gnuplot">'.(implode('',file("$cache_dir/$uniq.$ext"))).'</pre>';
  +
   }
   
   ?>
  
  
  


wkpark      2006/07/07 21:57:33

  Modified:    plugin/processor jade.php octave.php
  Log:
  use errlog()
  UTF-8 support for JadeProcessor
  
  Revision  Changes    Path
  1.9       +22 -8     moniwiki/plugin/processor/jade.php
  
  Index: jade.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/jade.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- jade.php	10 Dec 2005 14:14:59 -0000	1.8
  +++ jade.php	7 Jul 2006 12:57:32 -0000	1.9
  @@ -6,7 +6,7 @@
   // Usage: {{{#!jade
   // docbook code
   // }}}
  -// $Id: jade.php,v 1.8 2005/12/10 14:14:59 wkpark Exp $
  +// $Id: jade.php,v 1.9 2006/07/07 12:57:32 wkpark Exp $
   
   function processor_jade($formatter,$value,$options=array()) {
     global $DBInfo;
  @@ -62,20 +62,34 @@
     if (!$dsssl_flag and $DBInfo->default_dsssl)
       $args.=" -d $DBInfo->default_dsssl";
   
  +  if (strtolower($DBInfo->charset)=='utf-8') {
  +    if ($DBInfo->docbook_xmldcl)
  +      $args.=' '.$DBInfo->docbook_xmldcl;
  +    else
  +      $args.=' xml.dcl';
  +    $sp_encoding='SP_ENCODING=utf-8 ';
  +    #putenv('SP_ENCODING=utf-8');
  +  }
  +
     $tmpf=tempnam($vartmp_dir,"JADE");
     $fp= fopen($tmpf, "w");
     fwrite($fp, $src);
     fclose($fp);
   
  -  $cmd="$jade $args $tmpf";
  -
  -  $fp=popen($cmd,"r");
  -  fwrite($fp,$src);
  +  $cmd=$sp_encoding."$jade $args $tmpf";
   
  -  while($s = fgets($fp, 1024)) $html.= $s;
  +  $formatter->errlog();
  +  $fp=popen($cmd.$formatter->LOG,"r");
  +  if (is_resource($fp)) {
  +    $html='';
  +    while($s = fgets($fp, 1024)) $html.= $s;
   
  -  pclose($fp);
  +    pclose($fp);
  +  }
     unlink($tmpf);
  +  $err=$formatter->get_errlog();
  +
  +  if ($err) $err='<pre class="errlog">'.$err.'</pre>';
   
     if (!$html) {
       $src=str_replace("<","&lt;",$value);
  @@ -83,7 +97,7 @@
     }
   
     if (!$formatter->preview) $cache->update($pagename,$html);
  -  return $html;
  +  return $err.$html;
   }
   
   // vim:et:sts=2:
  
  
  
  1.4       +23 -15    moniwiki/plugin/processor/octave.php
  
  Index: octave.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/octave.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- octave.php	10 Dec 2005 14:20:58 -0000	1.3
  +++ octave.php	7 Jul 2006 12:57:33 -0000	1.4
  @@ -6,18 +6,21 @@
   // Usage: {{{#!octave
   // code..
   // }}}
  -// $Id: octave.php,v 1.3 2005/12/10 14:20:58 wkpark Exp $
  +// $Id: octave.php,v 1.4 2006/07/07 12:57:33 wkpark Exp $
   
   function processor_octave($formatter="",$value="") {
     global $DBInfo;
   
  -  if(getenv("OS")=="Windows_NT")
  +  $vartmp_dir=&$DBInfo->vartmp_dir;
  +
  +  if(getenv("OS")=="Windows_NT") {
       $octave="woctave"; # Win32
  -  else
  -    #$octave="octave -q -H --no-init-file --no-line-editing -f ";
  +  } else {
  +    #$octave="octave -q -H -V --no-init-file --no-line-editing -f ";
       $octave="octave -q -H -f ";
  +    $octave='HOME='.$vartmp_dir.' '.$octave;
  +  }
   
  -  $vartmp_dir=&$DBInfo->vartmp_dir;
     $cache_dir=$DBInfo->upload_dir."/Octave";
   
     if ($value[0]=='#' and $value[1]=='!')
  @@ -58,8 +61,7 @@
       umask(022);
     }
   
  -  if ($formatter->refresh || !file_exists("$cache_dir/$uniq.png")) {
  -
  +  if ($formatter->preview || $formatter->refresh || !file_exists("$cache_dir/$uniq.png")) {
        $flog=tempnam($vartmp_dir,"OCTAVE");
        #
        # for Win32 woctave.exe
  @@ -79,18 +81,24 @@
          #
          # Unix
          #
  -       $cmd= "$octave 2> $flog";
  -       $fp=popen($cmd,"r");
  -       fwrite($fp,$src);
  -       pclose($fp);
  -       $log=implode('',file($flog));
  -       #if ($log) unlink($outpath);
  -       unlink($flog);
  +       $formatter->errlog('Oct');
  +       $cmd= $octave;
  +       $fp=popen($cmd.$formatter->LOG,"w");
  +       if (is_resource($fp)) {
  +         fwrite($fp,$src);
  +         pclose($fp);
  +       }
  +       $log=$formatter->get_errlog();
  +
  +       @unlink($vartmp_dir.'/.octave_hist');
        }
   
        if ($log)
  -        $log ="<pre style='background-color:black;color:gold'>$log</pre>\n";
  +        $log ="<pre class='errlog'>$log</pre>\n";
  +     if (filesize("$cache_dir/$uniq.png") == 0)
  +        unlink("$cache_dir/$uniq.png");
     }
  +  if (!file_exists("$cache_dir/$uniq.png")) return $log;
     return $log."<img src='$DBInfo->url_prefix/$cache_dir/$uniq.png' alt='octave' />";
   }
   
  
  
  


wkpark      2006/07/07 21:59:02

  Modified:    plugin/processor vim.php
  Log:
  use errlog()
  
  Revision  Changes    Path
  1.33      +11 -5     moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- vim.php	5 Jul 2006 22:51:12 -0000	1.32
  +++ vim.php	7 Jul 2006 12:59:02 -0000	1.33
  @@ -10,7 +10,7 @@
   // Win32 note:
   //  add $path="/bin;/Program Files/Vim/VimXX"; in the config.php
   //
  -// $Id: vim.php,v 1.32 2006/07/05 22:51:12 wkpark Exp $
  +// $Id: vim.php,v 1.33 2006/07/07 12:59:02 wkpark Exp $
   
   function processor_vim($formatter,$value,$options) {
     global $DBInfo;
  @@ -110,14 +110,20 @@
           ' +"syntax on " +"set syntax='.$type.'" '.$option.
           ' +"so '.$tohtml.'" +"wq! '.$fout.'" +q';
   
  +  $log='';
     if(getenv("OS")=="Windows_NT") {
       system($cmd);
       $out=join(file($fout),"");
       unlink($fout);
     } else {
  -    $fp=popen($cmd,"r");
  -    while($s = fgets($fp, 1024)) $out.= $s;
  -    pclose($fp);
  +    $formatter->errlog();
  +    $fp=popen($cmd.$formatter->LOG,"r");
  +    if (is_resource($fp)) {
  +      while($s = fgets($fp, 1024)) $out.= $s;
  +      pclose($fp);
  +    }
  +    $log=$formatter->get_errlog();
  +    if ($log) $log='<pre class="errlog">'.$log.'</pre>';
     }
     unlink($tmpf);
   
  @@ -134,7 +140,7 @@
     $fp=fopen($cache_dir."/$uniq".".html","w");
     fwrite($fp,$stag.$out.$etag);
     fclose($fp);
  -  return '<div>'.$script.$stag.$out.$etag.'</div>';
  +  return $log.'<div>'.$script.$stag.$out.$etag.'</div>';
   }
   
   // vim:et:sts=2:
  
  
  


wkpark      2006/07/07 21:59:57

  Modified:    plugin   Gallery.php VisualTour.php rcs.php rcspurge.php
                        urlencode.php
  Log:
  redirect stderr to /dev/null
  
  Revision  Changes    Path
  1.27      +4 -2      moniwiki/plugin/Gallery.php
  
  Index: Gallery.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Gallery.php,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- Gallery.php	22 Jun 2006 08:51:38 -0000	1.26
  +++ Gallery.php	7 Jul 2006 12:59:57 -0000	1.27
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Gallery]]
   //
  -// $Id: Gallery.php,v 1.26 2006/06/22 08:51:38 wkpark Exp $
  +// $Id: Gallery.php,v 1.27 2006/07/07 12:59:57 wkpark Exp $
   
   function get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -241,7 +241,9 @@
               imagejpeg ($thumb, $dir.'/thumbnails/'.$file);
             }
           } else {
  -          system("convert -scale ".$width." ".$dir."/".$file." ".$dir."/thumbnails/".$file);
  +          $fp=popen("convert -scale ".$width." ".$dir."/".$file." ".$dir."/thumbnails/".$file.
  +          $formatter->NULL);
  +          pclose($fp);
           }
         }
         if (!$selected and file_exists($dir."/thumbnails/".$file)) {
  
  
  
  1.5       +5 -3      moniwiki/plugin/VisualTour.php
  
  Index: VisualTour.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/VisualTour.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- VisualTour.php	4 Jan 2005 08:25:51 -0000	1.4
  +++ VisualTour.php	7 Jul 2006 12:59:57 -0000	1.5
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a VisualTour plugin for the MoniWiki
   //
  -// $Id: VisualTour.php,v 1.4 2005/01/04 08:25:51 wkpark Exp $
  +// $Id: VisualTour.php,v 1.5 2006/07/07 12:59:57 wkpark Exp $
   // vim:et:ts=2:
   
   function do_VisualTour($formatter,$options) {
  @@ -44,9 +44,11 @@
       fclose($fp);
     }{
       $cmd="$dotcmd -Tpng $webdot_dir/$md5sum.dot -o $webdot_dir/$md5sum.png";
  -    exec($cmd,$log);
  +    $fp=popen($cmd.$formatter->NULL,'r');
  +    pclose($fp);
       $cmd="$dotcmd -Timap $webdot_dir/$md5sum.dot -o $webdot_dir/$md5sum.map";
  -    exec($cmd,$log);
  +    $fp=popen($cmd.$formatter->NULL,'r');
  +    pclose($fp);
     }
   
     $selfurl=$formatter->link_to();
  
  
  
  1.6       +2 -2      moniwiki/plugin/rcs.php
  
  Index: rcs.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rcs.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- rcs.php	10 Dec 2005 14:24:50 -0000	1.5
  +++ rcs.php	7 Jul 2006 12:59:57 -0000	1.6
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a rcs action plugin for the MoniWiki
   //
  -// $Id: rcs.php,v 1.5 2005/12/10 14:24:50 wkpark Exp $
  +// $Id: rcs.php,v 1.6 2006/07/07 12:59:57 wkpark Exp $
   
   function do_post_rcs($formatter,$options) {
     global $DBInfo;
  @@ -21,7 +21,7 @@
     if (isset($options['param'])) {
       if ($DBInfo->hasPage($formatter->page->name) and in_array($options['param'],$supported)) {
         $key=$DBInfo->getPageKey($formatter->page->name);
  -      $fp=popen( "rcs $options[param] $key",'r');
  +      $fp=popen( "rcs $options[param] $key".$formatter->NULL,'r');
         pclose($fp);
         $title = sprintf(_("Change options for \"%s\""), $formatter->page->name);
         $formatter->send_header("",$options);
  
  
  
  1.4       +2 -2      moniwiki/plugin/rcspurge.php
  
  Index: rcspurge.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rcspurge.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- rcspurge.php	10 Dec 2005 14:24:50 -0000	1.3
  +++ rcspurge.php	7 Jul 2006 12:59:57 -0000	1.4
  @@ -4,7 +4,7 @@
   // a rcspurge action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: rcspurge.php,v 1.3 2005/12/10 14:24:50 wkpark Exp $
  +// $Id: rcspurge.php,v 1.4 2006/07/07 12:59:57 wkpark Exp $
   
   function do_rcspurge($formatter,$options) {
     global $DBInfo;
  @@ -39,7 +39,7 @@
          else {
            #print "<b>Not enabled now</b> <tt>rcs -o$range  data_dir/".$options[page]."</tt><br />";
            print "<tt>rcs -o$range ".$options['page']."</tt><br />";
  -         $fp=popen("rcs -o$range ".$formatter->page->filename,'r');
  +         $fp=popen("rcs -o$range ".$formatter->page->filename.$formatter->NULL,'r');
            pclose($fp);
          }
       }
  
  
  
  1.2       +2 -2      moniwiki/plugin/urlencode.php
  
  Index: urlencode.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/urlencode.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- urlencode.php	11 Jul 2003 16:40:50 -0000	1.1
  +++ urlencode.php	7 Jul 2006 12:59:57 -0000	1.2
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // urlencode action plugin for the MoniWiki
   //
  -// $Id: urlencode.php,v 1.1 2003/07/11 16:40:50 wkpark Exp $
  +// $Id: urlencode.php,v 1.2 2006/07/07 12:59:57 wkpark Exp $
   // vim:et:ts=2:
   
   function do_urlencode($formatter,$options) {
  @@ -19,7 +19,7 @@
         header("Location: $url");
       }
     } else {
  -    $buf=exec(escapeshellcmd("echo ".$options[page])." | ".escapeshellcmd("iconv -f $from -t $to"));
  +    $buf=exec(escapeshellcmd("echo ".$options['page'])." | ".escapeshellcmd("iconv -f $from -t $to".$formatter->NULL));
       $url=$formatter->link_url($buf);
       header("Location: $url");
     }
  
  
  


wkpark      2006/07/07 21:59:57

  Modified:    plugin/processor abc.php dot.php enscript.php itex.php
                        latex.php linuxdoc.php man.php metapost.php
                        mimetex.php pic.php xsltproc.php
  Log:
  redirect stderr to /dev/null
  
  Revision  Changes    Path
  1.6       +2 -2      moniwiki/plugin/processor/abc.php
  
  Index: abc.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/abc.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- abc.php	10 Dec 2005 14:20:57 -0000	1.5
  +++ abc.php	7 Jul 2006 12:59:57 -0000	1.6
  @@ -6,7 +6,7 @@
   // Usage: {{{#!abc
   // blah blah
   // }}}
  -// $Id: abc.php,v 1.5 2005/12/10 14:20:57 wkpark Exp $
  +// $Id: abc.php,v 1.6 2006/07/07 12:59:57 wkpark Exp $
   
   function processor_abc($formatter="",$value="") {
     global $DBInfo;
  @@ -66,7 +66,7 @@
   # Unix
   #
        $cmd= "$abc2midi $tmpf -o $cache_dir/$uniq.midi";
  -     $fp=popen($cmd,'r');
  +     $fp=popen($cmd.$formatter->NULL,'r');
        $log='';
        while($s = fgets($fp, 1024)) $log.= $s;
        pclose($fp);
  
  
  
  1.4       +3 -3      moniwiki/plugin/processor/dot.php
  
  Index: dot.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/dot.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- dot.php	26 Jan 2006 15:23:19 -0000	1.3
  +++ dot.php	7 Jul 2006 12:59:57 -0000	1.4
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a dot plugin for the MoniWiki
   //
  -// $Id: dot.php,v 1.3 2006/01/26 15:23:19 wkpark Exp $
  +// $Id: dot.php,v 1.4 2006/07/07 12:59:57 wkpark Exp $
   // vim:et:ts=2:
   
   function processor_dot($formatter,$value) {
  @@ -30,10 +30,10 @@
     }{
   
       $cmd="$dotcmd -Tpng $webdot_dir/$md5sum.dot -o $webdot_dir/$md5sum.png";
  -    $fp=popen($cmd,'r');
  +    $fp=popen($cmd.$formatter->NULL,'r');
       pclose($fp);
       $cmd="$dotcmd -Timap $webdot_dir/$md5sum.dot -o $webdot_dir/$md5sum.map";
  -    $fp=popen($cmd,'r');
  +    $fp=popen($cmd.$formatter->NULL,'r');
       pclose($fp);
     }
   
  
  
  
  1.2       +2 -2      moniwiki/plugin/processor/enscript.php
  
  Index: enscript.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/enscript.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- enscript.php	26 Jan 2006 15:42:56 -0000	1.1
  +++ enscript.php	7 Jul 2006 12:59:57 -0000	1.2
  @@ -6,7 +6,7 @@
   // Usage: {{{#!enscript sh|c|sh|..
   // some codes
   // }}}
  -// $Id: enscript.php,v 1.1 2006/01/26 15:42:56 wkpark Exp $
  +// $Id: enscript.php,v 1.2 2006/07/07 12:59:57 wkpark Exp $
   
   function processor_enscript($formatter,$value) {
     global $DBInfo;
  @@ -51,7 +51,7 @@
   
       #$cmd="ENSCRIPT_LIBRARY=/home/httpd/wiki/lib $enscript -q -o - -E$type -W html --color=ifh --word-wrap ".$tmpf;
       $cmd="$enscript -q -o - $option -E$type -W html --color=ifh --word-wrap ".$tmpf;
  -    $fp=popen($cmd, 'r');
  +    $fp=popen($cmd.$formatter->NULL, 'r');
       $html='';
       while($s = fgets($fp, 1024)) $html.= $s;
       pclose($fp);
  
  
  
  1.5       +2 -2      moniwiki/plugin/processor/itex.php
  
  Index: itex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/itex.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- itex.php	10 Dec 2005 14:14:59 -0000	1.4
  +++ itex.php	7 Jul 2006 12:59:57 -0000	1.5
  @@ -13,7 +13,7 @@
   // and replace the latex processor:
   //  $processors=array('latex'=>'itex',...);
   //
  -// $Id: itex.php,v 1.4 2005/12/10 14:14:59 wkpark Exp $
  +// $Id: itex.php,v 1.5 2006/07/07 12:59:57 wkpark Exp $
   
   /*
     itex2MML.l patch to enable $$\alpha$$ syntax
  @@ -99,7 +99,7 @@
           $cmd= "$itex < $srcpath";
     
           $out='';
  -        $fp=popen($cmd,'r');
  +        $fp=popen($cmd.$formatter->NULL,'r');
           while($s = fgets($fp, 1024)) $out.= $s;
           pclose($fp);
           unlink($srcpath);
  
  
  
  1.13      +4 -6      moniwiki/plugin/processor/latex.php
  
  Index: latex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/latex.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- latex.php	15 Jan 2006 15:36:00 -0000	1.12
  +++ latex.php	7 Jul 2006 12:59:57 -0000	1.13
  @@ -6,7 +6,7 @@
   // Usage: {{{#!latex
   // $ \alpha $
   // }}}
  -// $Id: latex.php,v 1.12 2006/01/15 15:36:00 wkpark Exp $
  +// $Id: latex.php,v 1.13 2006/07/07 12:59:57 wkpark Exp $
   
   function processor_latex($formatter="",$value="") {
     global $DBInfo;
  @@ -48,10 +48,8 @@
   ";
     }
   
  -  $RM='rm';
     $NULL='/dev/null';
     if(getenv("OS")=="Windows_NT") {
  -    $RM='del';
       $NULL='NUL';
     }
     
  @@ -66,7 +64,7 @@
        $cwd= getcwd();
        chdir($vartmp_dir);
        $cmd= "$latex $option $uniq.tex >$NULL";
  -     $fp=popen($cmd,'r');
  +     $fp=popen($cmd.$formatter->NULL,'r');
        pclose($fp);
   
        if (!file_exists($uniq.".dvi")) {
  @@ -75,12 +73,12 @@
          return;
        }
        $cmd= "$dvips -D 600 $uniq.dvi -o $uniq.ps";
  -     $fp=popen($cmd,'r');
  +     $fp=popen($cmd.$formatter->NULL,'r');
        pclose($fp);
        chdir($cwd);
   
        $cmd= "$convert -transparent white -trim -crop 0x0 -density 120x120 $vartmp_dir/$uniq.ps $outpath";
  -     $fp=popen($cmd,'r');
  +     $fp=popen($cmd.$formatter->NULL,'r');
        pclose($fp);
        unlink($vartmp_dir."/$uniq.log");
        unlink($vartmp_dir."/$uniq.aux");
  
  
  
  1.8       +2 -2      moniwiki/plugin/processor/linuxdoc.php
  
  Index: linuxdoc.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/linuxdoc.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- linuxdoc.php	9 Jan 2006 14:21:46 -0000	1.7
  +++ linuxdoc.php	7 Jul 2006 12:59:57 -0000	1.8
  @@ -6,7 +6,7 @@
   // Usage: {{{#!linuxdoc
   // linuxdoc code
   // }}}
  -// $Id: linuxdoc.php,v 1.7 2006/01/09 14:21:46 wkpark Exp $
  +// $Id: linuxdoc.php,v 1.8 2006/07/07 12:59:57 wkpark Exp $
   
   function processor_linuxdoc($formatter,$value) {
     global $DBInfo;
  @@ -53,7 +53,7 @@
     $cwd=getcwd();
     chdir($vartmp_dir);
     $log='';
  -  $fp=popen($cmd,'r');
  +  $fp=popen($cmd.$formatter->NULL,'r');
     while($s = fgets($fp, 1024)) $log.= $s;
     pclose($fp);
   
  
  
  
  1.4       +2 -2      moniwiki/plugin/processor/man.php
  
  Index: man.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/man.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- man.php	10 Dec 2005 14:14:59 -0000	1.3
  +++ man.php	7 Jul 2006 12:59:57 -0000	1.4
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a man processor plugin for the MoniWiki
   //
  -// $Id: man.php,v 1.3 2005/12/10 14:14:59 wkpark Exp $
  +// $Id: man.php,v 1.4 2006/07/07 12:59:57 wkpark Exp $
   
   function processor_man($formatter,$value="") {
     global $DBInfo;
  @@ -23,7 +23,7 @@
     $man2html= "man2html $tmpf";
     $html='';
     while($s = fgets($fp, 1024)) $html.= $s;
  -  $fp=popen($man2html,'r');
  +  $fp=popen($man2html.$formatter->NULL,'r');
   
     pclose($fp);
     unlink($tmpf);
  
  
  
  1.4       +3 -3      moniwiki/plugin/processor/metapost.php
  
  Index: metapost.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/metapost.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- metapost.php	10 Dec 2005 14:20:58 -0000	1.3
  +++ metapost.php	7 Jul 2006 12:59:57 -0000	1.4
  @@ -5,7 +5,7 @@
   //
   // Usage: {{{#!metapost
   // }}}
  -// $Id: metapost.php,v 1.3 2005/12/10 14:20:58 wkpark Exp $
  +// $Id: metapost.php,v 1.4 2006/07/07 12:59:57 wkpark Exp $
   
   function processor_metapost($formatter,$value="") {
     global $DBInfo;
  @@ -55,12 +55,12 @@
        $dir=getcwd();
        chdir($vartmp_dir);
        $cmd= "$mpost $option $uniq >/dev/null";
  -     $fp=popen($cmd,'r');
  +     $fp=popen($cmd.$formatter->NULL,'r');
        pclose($fp);
        chdir($dir);
   
        $cmd= "$convert $vartmp_dir/$uniq.1 $outpath";
  -     $fp=popen($cmd,'r');
  +     $fp=popen($cmd.$formatter->NULL,'r');
        pclose($fp);
   
        @copy("$vartmp_dir/$uniq.1","$cache_dir/$uniq.ps");
  
  
  
  1.6       +2 -2      moniwiki/plugin/processor/mimetex.php
  
  Index: mimetex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/mimetex.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- mimetex.php	31 Jan 2006 10:32:08 -0000	1.5
  +++ mimetex.php	7 Jul 2006 12:59:57 -0000	1.6
  @@ -6,7 +6,7 @@
   //
   // Support command line mode by JoungKyun Kim 2006/01/13
   //
  -// $Id: mimetex.php,v 1.5 2006/01/31 10:32:08 wkpark Exp $
  +// $Id: mimetex.php,v 1.6 2006/07/07 12:59:57 wkpark Exp $
   
   function processor_mimetex($formatter,$value) {
     global $DBInfo;
  @@ -50,7 +50,7 @@
   
       if ( $formatter->preview || $formatter->refresh || ! file_exists ("$cache_dir/$uniq.$ext")) {
         $cmd = "$mimetex -e $cache_dir/$uniq.$ext \"$tex\"";
  -      $fp = @popen ($cmd, 'r');
  +      $fp = @popen ($cmd.$formatter->NULL, 'r');
         if ( ! is_resource ($fp) ) return $tex;
         pclose ($fp);
       }
  
  
  
  1.4       +6 -4      moniwiki/plugin/processor/pic.php
  
  Index: pic.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/pic.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- pic.php	10 Dec 2005 14:20:58 -0000	1.3
  +++ pic.php	7 Jul 2006 12:59:57 -0000	1.4
  @@ -1,9 +1,9 @@
   <?php
  -// Copyright 2003 by Kim Jeong Yeon <see2002 at new-type.com>
  +// Copyright 2003-2006 Kim Jeong Yeon <see2002 at new-type.com>
   // All rights reserved. Distributable under GPL see COPYING
   // a PIC plugin for the MoniWiki
   //
  -// $Id: pic.php,v 1.3 2005/12/10 14:20:58 wkpark Exp $
  +// $Id: pic.php,v 1.4 2006/07/07 12:59:57 wkpark Exp $
   // Usage: {{{#!pic
   // some codes
   // }}}
  @@ -12,7 +12,7 @@
     global $DBInfo;
   
     $GROFF="groff -e -p -ms -Tps ";
  -  $CONVERT="convert -transparent white -density 120x120 -crop 0x0 ";
  +  $CONVERT="convert -transparent white -density 120x120 -crop 0x0 -trim ";
   
     $vartmp_dir=&$DBInfo->vartmp_dir;
     $cache_dir=$DBInfo->upload_dir."/PIC";
  @@ -43,7 +43,9 @@
       fclose($ifp);
   
       # convert processing
  -    $fp=popen("$GROFF $outpath_pic >$outpath_ps ; $CONVERT $outpath_ps $outpath_png","r");
  +    $fp=popen("$GROFF $outpath_pic >$outpath_ps".$formatter->NULL,'r');
  +    pclose($fp);
  +    $fp=popen("$CONVERT $outpath_ps $outpath_png".$formatter->NULL,'r');
       pclose($fp);
   
       # delete temporary files
  
  
  
  1.7       +6 -6      moniwiki/plugin/processor/xsltproc.php
  
  Index: xsltproc.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/xsltproc.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- xsltproc.php	10 Dec 2005 14:14:59 -0000	1.6
  +++ xsltproc.php	7 Jul 2006 12:59:57 -0000	1.7
  @@ -6,7 +6,7 @@
   // Usage: {{{#!xsltproc
   // xml codes
   // }}}
  -// $Id: xsltproc.php,v 1.6 2005/12/10 14:14:59 wkpark Exp $
  +// $Id: xsltproc.php,v 1.7 2006/07/07 12:59:57 wkpark Exp $
   
   function processor_xsltproc($formatter,$value) {
     global $DBInfo;
  @@ -47,12 +47,12 @@
   
     $cmd="$xsltproc --xinclude $tmpf";
   
  -  $fp=popen($cmd,"r");
  +  $fp=popen($cmd.$formatter->NULL,"r");
     #fwrite($fp,$src);
  -
  -  while($s = fgets($fp, 1024)) $html.= $s;
  -
  -  pclose($fp);
  +  if (is_resource($fp) {
  +    while($s = fgets($fp, 1024)) $html.= $s;
  +    pclose($fp);
  +  }
     unlink($tmpf);
   
     if (!$html) {
  
  
  


wkpark      2006/07/07 22:04:31

  Modified:    .        wiki.php
  Log:
  more fix
  
  Revision  Changes    Path
  1.301     +3 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.300
  retrieving revision 1.301
  diff -u -r1.300 -r1.301
  --- wiki.php	7 Jul 2006 12:50:08 -0000	1.300
  +++ wiki.php	7 Jul 2006 13:04:31 -0000	1.301
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.300 2006/07/07 12:50:08 wkpark Exp $
  +// $Id: wiki.php,v 1.301 2006/07/07 13:04:31 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.300 $',1,-1);
  +$_revision = substr('$Revision: 1.301 $',1,-1);
   $_release = '1.1.2';
   
   #ob_start("ob_gzhandler");
  @@ -3804,6 +3804,7 @@
           return $out;
         }
       }
  +    return '';
     }
   } # end-of-Formatter
   
  
  
  


wkpark      2006/07/07 22:05:19

  Modified:    css      _base.css
  Log:
  add a CSS class for errlog
  
  Revision  Changes    Path
  1.7       +7 -0      moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- _base.css	5 Jul 2006 11:13:25 -0000	1.6
  +++ _base.css	7 Jul 2006 13:05:19 -0000	1.7
  @@ -154,6 +154,13 @@
     padding:4px;
   }
   
  +pre.errlog {
  +  background-color: #E8E8E8;
  +  border:2px solid #ff0000;
  +  color:#440000;
  +  padding:4px;
  +}
  +
   .highlight {
     background-color:#FFFF40;
   }
  
  
  


wkpark      2006/07/07 22:25:27

  Modified:    .        config.php.default
  Log:
  update
  
  Revision  Changes    Path
  1.31      +28 -19    moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- config.php.default	2 Jun 2006 15:10:47 -0000	1.30
  +++ config.php.default	7 Jul 2006 13:25:27 -0000	1.31
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.30 2006/06/02 15:10:47 wkpark Exp $
  +# $Id: config.php.default,v 1.31 2006/07/07 13:25:27 wkpark Exp $
   #
   $sitename='UnnamedWiki';
   $data_dir= './data';
  @@ -22,7 +22,7 @@
   $kbd_script= $url_prefix.'/css/kbd.js';
   $logo_string= '<img src="'.$logo_img.'" alt="" border="0" align="middle" />';
   $use_smileys= 1;
  -#$smiley='wikismiley';
  +#$smiley='wikismiley'; # you can also use SmileyMap too.
   $use_counter= 0;
   $use_hostname= 1;
   #$mask_hostname=1; # hide hostname or ip address
  @@ -38,6 +38,7 @@
   #$origin=1;
   #$arrow=' <img src="/wiki/imgs/moni-arrow.gif"/> ';
   $notify= 0;
  +#$notify= 0; # enable email notification
   $use_referer= 0;
   $use_sistersites=1;
   #$use_singlebracket=1;
  @@ -45,11 +46,10 @@
   $use_trackback=0;
   $vim_options='+"set expandtab" +"retab"';
   $pds_allowed="png|jpg|jpeg|gif|mp3|zip|tgz|gz|txt|css|exe|hwp|pdf";
  -#$vim_nocheck=1;
  -#$vim_options='+"set encoding=UTF-8"';
  +#$vim_options='+"set encoding=UTF-8"'; # for UTF-8 wikis
   $nonexists='fancy';
  -#$nonexists='nolink';
  -#$nonexists='forcelink';
  +#$nonexists='nolink'; # do not link non exists pages
  +#$nonexists='forcelink'; # link always
   #$use_titlecache=0;
   #$use_titlemenu=1; # use current title name as menu
   #$security_class="needtologin";
  @@ -63,10 +63,12 @@
   #$menu_sep='|';
   #$menu_bra='';
   #$menu_cat='';
  -#$path='/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin';
  +#$path='/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin'; # for unixes
  +#$path='c:/windows/command;c:/Program Files/gnuplot'; # for win32
   $theme='azblue';
   $theme_css=0;
  -#$blog_comments=1;
  +#$title_rule='((?<=[a-z0-9])[A-Z][a-z0-9])';
  +#$blog_comments=1; # show all comments
   
   #$date_fmt='Y-m-d';
   #$date_fmt_rc='Y-m-d';
  @@ -85,41 +87,44 @@
   #<link rel="Alternate" title="xml" type="application/rss+xml" href="?action=rss_rc" />
   #';
   
  -#$diffonly=1;
  +#$diffonly=1; # show only diff infos (do not show wiki contents)
   #$goto_type=1;
   
   #$purple_icon=''; # obsolute
   #$use_purple='';
   #$perma_icon='<img src="/wiki/imgs/egg.png" border="0" />';
   #$pagetype=array("KldpDsl"=>"plain","ManPage"=>"/man","DocbookSgml"=>"/jade","LinuxDoc"=>"/linuxdoc");
  -#$default_dsssl='to_dir/kldp.dsl';
  +# set default processor for jade
  +#$default_dsssl='to_dir/kldp.dsl#html';
  +#$docbook_xmldcl='to_dir/xml.dcl'; # utf-8 support for jade
   
   #$password_length=6;
  -#$use_convert_thumbs=0;
  +#$use_convert_thumbs=0; # for GalleryMacro
   
   #$myprocessors=array('latex'=>'mimetex');
  -#$myplugins=array('FullSearch'=>'FastSearch');
  +#$myplugins=array('FullSearch'=>'FastSearch'); # substitute action/macro
   #$inline_latex='mimetex';
   #$mimetex_path='/cgi-bin/mimetex.cgi'; # cgi mode
   #$mimetex_path='shell:mimetex'; # command line mode
   #$mimetex_path='shell:/usr/bin/mimetex';
   #$inline_latex='latex';
  -#$inline_latex='itex';
  -#$inline_latex='1';
  +#$inline_latex='itex'; # use alternative inline latex (experimental)
  +#$inline_latex='1'; # use inline latex (default)
   
   #$url_schemas='mms';
  -#$blacklist='127.0.0.0/24:192.168.1.0/24:192.168.1.67';
  -#$kiwirian=array('Kiwirian','Hello');
  +#$blacklist='127.0.0.0/24:192.168.1.0/24:192.168.1.67'; # block ip
  +#$kiwirian=array('Kiwirian','Hello'); # block users
   #$kiwirian='Kiwirian:Hello';
   #$delete_history=1;
  -#$use_twikilink=1;
  +#$use_twikilink=1; 
   #$timezone='KST'; // for windows
   #$version_class='RcsLite';
   #$use_numbering=1; // for the vim processor
   #$vim_nocheck=0; // do not check vim syntax.
  +#$vim_nocheck=1;
   #$use_resizer=1; // javascript resizer
   #$use_minoredit=1; // only for wiki owners
  -#$auto_search='FixMoin';
  +#$auto_search='FixMoin'; # for old moinmoin users
   #$auto_search='AutoGoto';
   #$hr_type='fancy';
   $use_sectionedit=0;
  @@ -138,6 +143,7 @@
   $use_alias=0;
   #$aliaspage=$data_dir.'/text/AliasPageNames';
   $css_friendly=0;
  +#$css_friendly=1; # for more CSS friendly support
   $use_redirect_msg=0;
   #$use_redirect_msg=1; # for MoinMoin compatible
   #$use_safelogin=0;
  @@ -148,7 +154,7 @@
   #$use_textbrowsers=1; # check some textbased browsers
   $use_preview_uploads=1;
   #$use_camelcase=0; # turn off camelcase syntax by default
  -#$category_regex=urldecode('%EB%B6%84%EB%A5%98$');
  +#$category_regex=urldecode('%EB%B6%84%EB%A5%98$'); # a category example for Korean
   #$use_backlinks=1; # set default fullsearch behavior as backlinks search
   #$use_smartdiff=1; # use the experimental smart diff XXX
   #$hide_actions=0; # hide actions list for anonymous user
  @@ -159,4 +165,7 @@
   #$submenu='SubMenu'; # dynamic submenu
   #$shared_smileymap=$data_dir.'/text/SmileyMap'; # customizable smileymap
   #$use_clipmacro=1; # use the clip macro with the attachment macro
  +$use_errlog=1;
  +#$errlog_maxline=20; # max lines to show
  +#$raw_errlog=0; # do not hide some dir. infos.
   ?>
  
  
  


wkpark      2006/07/07 22:44:52

  Modified:    plugin   Calendar.php
  Log:
  _urlencode() pagename
  
  Revision  Changes    Path
  1.14      +7 -6      moniwiki/plugin/Calendar.php
  
  Index: Calendar.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Calendar.php,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- Calendar.php	25 Aug 2005 09:32:46 -0000	1.13
  +++ Calendar.php	7 Jul 2006 13:44:52 -0000	1.14
  @@ -7,7 +7,7 @@
   #-----usage: generate_calendar(2001, 11, $day_func, 2);-------------------------
   #------(last two arguments are optional)----------------------------------------
   #-------------------------------------------------------------------------------
  -# $Id: Calendar.php,v 1.13 2005/08/25 09:32:46 wkpark Exp $
  +# $Id: Calendar.php,v 1.14 2006/07/07 13:44:52 wkpark Exp $
   
   function calendar_get_dates($formatter,$date='',$page='') {
     global $DBInfo;
  @@ -71,6 +71,7 @@
   		$pagename=$match[3];
   	else
   		$pagename=$formatter->page->name;
  +	$urlpagename=_urlencode($pagename);
   
   	$link_prefix=sprintf("%04d-%02d",$year,$month);
   
  @@ -160,11 +161,11 @@
   
   	#print the days of the month
   	if ($mode=='blog') {
  -		$link=$pagename."/$link_prefix";
  +		$link=$urlpagename."/$link_prefix";
   		if (!$DBInfo->hasPage($link))
   			$action="?action=blog";
   	} else if ($mode) {
  -		$link=$pagename;
  +		$link=$urlpagename;
   	}
   	while ($day <= $maxdays){
   		if($weekday == 7){ #start a new week
  @@ -184,7 +185,7 @@
   		}
   
   		if (!$mode) {
  -			$link=$pagename."/".$link_prefix."-".sprintf("%02d",$day);
  +			$link=$urlpagename."/".$link_prefix."-".sprintf("%02d",$day);
   			if ($DBInfo->hasPage($link))
   				$classes=$exists;
   		} else if ($mode) {
  @@ -199,10 +200,10 @@
                                             $anchor = '#'.$date.$day;
   					$action='?action=blogchanges&amp;date='.$date.$anchor;
   					$classes='day';
  -					$link=$pagename;
  +					$link=$urlpagename;
   				} else {
   					if ($day==$today)
  -						$link=$pagename;
  +						$link=$urlpagename;
   					else
   						$link='';
   					$action='?action=blog';
  
  
  


wkpark      2006/07/07 22:53:07

  Modified:    plugin/processor man.php
  Log:
  work again ;)
  
  Revision  Changes    Path
  1.5       +2 -2      moniwiki/plugin/processor/man.php
  
  Index: man.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/man.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- man.php	7 Jul 2006 12:59:57 -0000	1.4
  +++ man.php	7 Jul 2006 13:53:07 -0000	1.5
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a man processor plugin for the MoniWiki
   //
  -// $Id: man.php,v 1.4 2006/07/07 12:59:57 wkpark Exp $
  +// $Id: man.php,v 1.5 2006/07/07 13:53:07 wkpark Exp $
   
   function processor_man($formatter,$value="") {
     global $DBInfo;
  @@ -22,8 +22,8 @@
   
     $man2html= "man2html $tmpf";
     $html='';
  -  while($s = fgets($fp, 1024)) $html.= $s;
     $fp=popen($man2html.$formatter->NULL,'r');
  +  while($s = fgets($fp, 1024)) $html.= $s;
   
     pclose($fp);
     unlink($tmpf);
  
  
  


wkpark      2006/07/07 23:18:18

  Modified:    plugin   man_get.php Test.php
  Log:
  enhanced man_get action
  
  Revision  Changes    Path
  1.4       +8 -3      moniwiki/plugin/man_get.php
  
  Index: man_get.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/man_get.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- man_get.php	7 Jul 2006 12:53:04 -0000	1.3
  +++ man_get.php	7 Jul 2006 14:18:18 -0000	1.4
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a man_get action plugin for the MoniWiki
   //
  -// $Id: man_get.php,v 1.3 2006/07/07 12:53:04 wkpark Exp $
  +// $Id: man_get.php,v 1.4 2006/07/07 14:18:18 wkpark Exp $
   // vim:et:ts=2:
   
   function do_man_get($formatter,$options) {
  @@ -54,8 +54,13 @@
     $formatter->send_header("",$options);
     $formatter->send_title("","",$options);
     $options['savetext']=$raw;
  -  print macro_EditText($formatter,$raw,$options);
  -  $formatter->send_footer("",$options);
  +  if ($options['edit']) {
  +    print macro_EditText($formatter,$raw,$options);
  +  } else {
  +    print $formatter->processor_repl('man',$raw,$options);
  +    $formatter->actions[]='?action=man_get&man='.$options['man'].'&edit=1 '._("Edit");
  +  }
  +  $formatter->send_footer('',$options);
     return;
   }
   
  
  
  
  1.4       +5 -5      moniwiki/plugin/Test.php
  
  Index: Test.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Test.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Test.php	12 Apr 2005 13:59:08 -0000	1.3
  +++ Test.php	7 Jul 2006 14:18:18 -0000	1.4
  @@ -5,18 +5,18 @@
   //
   // Usage: [[Test]]
   //
  -// $Id: Test.php,v 1.3 2005/04/12 13:59:08 wkpark Exp $
  +// $Id: Test.php,v 1.4 2006/07/07 14:18:18 wkpark Exp $
   
   function macro_Test($formatter,$value) {
       return "HelloWorld !\n";
   }
   
   function do_test($formatter,$options) {
  -    $formatter->send_header();
  -    $formatter->send_title();
  -    $ret= macro_Test($formatter,$options[value]);
  +    $formatter->send_header('',$options);
  +    $formatter->send_title('','',$options);
  +    $ret= macro_Test($formatter,$options['value']);
       $formatter->send_page($ret);
  -    $formatter->send_footer("",$options);
  +    $formatter->send_footer('',$options);
       return;
   }
   
  
  
  


wkpark      2006/07/07 23:24:11

  Modified:    .        config.php.default wiki.php
  Log:
  support more customizable action list
  
  Revision  Changes    Path
  1.32      +2 -1      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- config.php.default	7 Jul 2006 13:25:27 -0000	1.31
  +++ config.php.default	7 Jul 2006 14:24:11 -0000	1.32
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.31 2006/07/07 13:25:27 wkpark Exp $
  +# $Id: config.php.default,v 1.32 2006/07/07 14:24:11 wkpark Exp $
   #
   $sitename='UnnamedWiki';
   $data_dir= './data';
  @@ -158,6 +158,7 @@
   #$use_backlinks=1; # set default fullsearch behavior as backlinks search
   #$use_smartdiff=1; # use the experimental smart diff XXX
   #$hide_actions=0; # hide actions list for anonymous user
  +#$actions= array('DeletePage','LikePages','?action=Keywords Add keywords'); # customized act list
   #$use_easyalias=1; # direct linking to the dest page
   #$info_options='ago,simple'; # default Info macro options
   #$force_charset=1; # overriding default charset 
  
  
  
  1.302     +10 -4     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.301
  retrieving revision 1.302
  diff -u -r1.301 -r1.302
  --- wiki.php	7 Jul 2006 13:04:31 -0000	1.301
  +++ wiki.php	7 Jul 2006 14:24:11 -0000	1.302
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.301 2006/07/07 13:04:31 wkpark Exp $
  +// $Id: wiki.php,v 1.302 2006/07/07 14:24:11 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.301 $',1,-1);
  +$_revision = substr('$Revision: 1.302 $',1,-1);
   $_release = '1.1.2';
   
   #ob_start("ob_gzhandler");
  @@ -3379,8 +3379,14 @@
       $menu[]=$this->link_tag("FindPage","",_("FindPage"));
   
       if (!$args['noaction']) {
  -      foreach ($this->actions as $action)
  -        $menu[]= $this->link_to("?action=$action",_($action));
  +      foreach ($this->actions as $action) {
  +        if (strpos($action,' ')) {
  +          list($act,$text)=explode(' ',$action,2);
  +          $menu[]= $this->link_to($act,_($text));
  +        } else {
  +          $menu[]= $this->link_to("?action=$action",_($action));
  +        }
  +      }
       }
       return $menu;
     }
  
  
  


wkpark      2006/07/07 23:36:02

  Modified:    plugin/security mustlogin.php
  Log:
  fixed #301200 - the mustlogin module now work correctly with '$use_ticket'
  
  Revision  Changes    Path
  1.4       +11 -3     moniwiki/plugin/security/mustlogin.php
  
  Index: mustlogin.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/mustlogin.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- mustlogin.php	4 Jan 2005 08:22:58 -0000	1.3
  +++ mustlogin.php	7 Jul 2006 14:36:02 -0000	1.4
  @@ -1,6 +1,6 @@
   <?php
   # a mustlogin security plugin for the MoniWiki
  -# $Id: mustlogin.php,v 1.3 2005/01/04 08:22:58 wkpark Exp $
  +# $Id: mustlogin.php,v 1.4 2006/07/07 14:36:02 wkpark Exp $
   
   class Security_mustlogin extends Security {
     var $DB;
  @@ -12,6 +12,10 @@
   # $options[page]: pagename
   # $options[id]: user id
   
  +  function help($formatter) {
  +    return $formatter->macro_repl('UserPreferences');
  +  }
  +
     function writable($options="") {
       return $this->DB->_isWritable($options['page']);
     }
  @@ -23,6 +27,7 @@
       if ($options['id']=='Anonymous') {
         $options['err']=sprintf(_("You are not allowed to '%s' on this page"),$action);
         $options['err'].="\n"._("Please Login or make your ID on this Wiki ;)");
  +      $options['help']='help';
         return 0;
       }
       return 1;
  @@ -33,6 +38,7 @@
       if ($options['id']=='Anonymous') {
         $options['err']=sprintf(_("You are not allowed to '%s' on this page"),$action);
         $options['err'].="\n"._("Please Login or make your ID on this Wiki ;)");
  +      $options['help']='help';
         return 0;
       }
       return 1;
  @@ -43,21 +49,23 @@
       if ($options['id']=='Anonymous') {
         $options['err']=sprintf(_("You are not allowed to '%s' on this page"),$action);
         $options['err'].="\n"._("Please Login or make your ID on this Wiki ;)");
  +      $options['help']='help';
         return 0;
       }
       return 1;
     }
   
     function is_allowed($action="read",&$options) {
  -    $allowed_actions=array("userform");
  +    $allowed_actions=array("userform",'ticket','bookmark');
       if (in_array($action,$allowed_actions)) return 1;
       $method='may_'.$action;
       if (method_exists($this, $method)) {
  -      return $this->$method ($action,&$options);
  +      return $this->$method ($action,$options);
       }
       if ($options['id']=='Anonymous') {
         $options['err']=sprintf(_("You are not allowed to '%s' on this page."),$action);
         $options['err'].="\n"._("Please Login or make your ID on this Wiki ;)");
  +      $options['help']='help';
         return 0;
       }
       return 1;
  
  
  


wkpark      2006/07/07 23:44:16

  Modified:    plugin/security wikimaster.php
  Log:
  updated. Please see also PR #300884
  
  Revision  Changes    Path
  1.6       +21 -3     moniwiki/plugin/security/wikimaster.php
  
  Index: wikimaster.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/wikimaster.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- wikimaster.php	21 Oct 2004 08:27:07 -0000	1.5
  +++ wikimaster.php	7 Jul 2006 14:44:16 -0000	1.6
  @@ -1,6 +1,6 @@
   <?php
  -# a user based security plugin for the MoniWiki
  -# $Id: wikimaster.php,v 1.5 2004/10/21 08:27:07 wkpark Exp $
  +# a wikimaster security plugin for the MoniWiki
  +# $Id: wikimaster.php,v 1.6 2006/07/07 14:44:16 wkpark Exp $
   
   class Security_wikimaster extends Security {
     var $DB;
  @@ -10,6 +10,10 @@
       $this->allowed_users=array_merge($DB->wikimasters,$DB->owners);
     }
   
  +  function help($formatter) {
  +    return $formatter->macro_repl('UserPreferences');
  +  }
  +
     function writable($options='') {
       return $this->DB->_isWritable($options['page']);
     }
  @@ -24,6 +28,7 @@
       if (in_array($options['id'],$this->allowed_users)) return 1;
       $options['err']=sprintf(_("You are not allowed to '%s' on this page."),$action);
       $options['err'].=" "._("Please contact to WikiMaster");
  +    $options['help']='help';
       return 0;
     }
   
  @@ -32,6 +37,7 @@
       if (in_array($options['id'],$this->allowed_users)) return 1;
       $options['err']=sprintf(_("You are not allowed to '%s' on this page."),$action);
       $options['err'].=" "._("Please contact to WikiMaster");
  +    $options['help']='help';
       return 0;
     }
   
  @@ -40,6 +46,7 @@
       if (in_array($options['id'],$this->allowed_users)) return 1;
       $options['err']=sprintf(_("You are not allowed to '%s' on this page."),$action);
       $options['err'].=" "._("Please contact to WikiMaster");
  +    $options['help']='help';
       return 0;
     }
   
  @@ -54,6 +61,17 @@
       return 0;
     }
   
  +#  function may_fullsearch($action,&$options) {
  +#    if (!$options['page']) return 0; # XXX
  +#    if ($options['id']=='Anonymous') {
  +#      $options['err']=sprintf(_("You are not allowed to '%s' on this page"),$action);
  +#      $options['err'].="\n"._("Please Login or make your ID on this Wiki ;)");
  +#      $options['help']='help';
  +#      return 0;
  +#    }
  +#    return 1;
  +#  }
  +
     function is_allowed($action='read',&$options) {
       $allowed_actions=array('theme','css','userform','bookmark','goto','dot',
         'trackback','rss_rc','rss','blogrss','urlencode');
  @@ -61,7 +79,7 @@
   
       $method='may_'.$action;
       if (method_exists($this, $method)) {
  -      return $this->$method ($action,&$options);
  +      return $this->$method ($action,$options);
       }
       return 1;
     }
  
  
  


wkpark      2006/07/08 00:06:07

  Modified:    .        wiki.php
  Log:
  config option $use_macro_as_action added. (default is 0)
  
  Revision  Changes    Path
  1.303     +4 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.302
  retrieving revision 1.303
  diff -u -r1.302 -r1.303
  --- wiki.php	7 Jul 2006 14:24:11 -0000	1.302
  +++ wiki.php	7 Jul 2006 15:06:07 -0000	1.303
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.302 2006/07/07 14:24:11 wkpark Exp $
  +// $Id: wiki.php,v 1.303 2006/07/07 15:06:07 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.302 $',1,-1);
  +$_revision = substr('$Revision: 1.303 $',1,-1);
   $_release = '1.1.2';
   
   #ob_start("ob_gzhandler");
  @@ -4218,8 +4218,9 @@
         $options['action_mode']=$action_mode;
         if ($action_mode=='ajax')
           $formatter->ajax_repl($action,$options);
  -      else
  +      else if ($DBInfo->use_macro_as_action) # XXX
           print $formatter->macro_repl($action,$options['value'],$options);
  +      do_invalid($formatter,$options);
         return;
       }
   
  
  
  


wkpark      2006/07/08 00:06:37

  Modified:    plugin/processor xsltproc.php
  Log:
  fix last changes
  
  Revision  Changes    Path
  1.8       +2 -2      moniwiki/plugin/processor/xsltproc.php
  
  Index: xsltproc.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/xsltproc.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- xsltproc.php	7 Jul 2006 12:59:57 -0000	1.7
  +++ xsltproc.php	7 Jul 2006 15:06:37 -0000	1.8
  @@ -6,7 +6,7 @@
   // Usage: {{{#!xsltproc
   // xml codes
   // }}}
  -// $Id: xsltproc.php,v 1.7 2006/07/07 12:59:57 wkpark Exp $
  +// $Id: xsltproc.php,v 1.8 2006/07/07 15:06:37 wkpark Exp $
   
   function processor_xsltproc($formatter,$value) {
     global $DBInfo;
  @@ -49,7 +49,7 @@
   
     $fp=popen($cmd.$formatter->NULL,"r");
     #fwrite($fp,$src);
  -  if (is_resource($fp) {
  +  if (is_resource($fp)) {
       while($s = fgets($fp, 1024)) $html.= $s;
       pclose($fp);
     }
  
  
  


wkpark      2006/07/08 07:40:58

  moniwiki/config - New directory

wkpark      2006/07/08 07:46:49

  Modified:    .        wiki.php
  Log:
  support a simple ACL security plugin
  $control_read config option added now and you can control read action
  
  Revision  Changes    Path
  1.304     +6 -6      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.303
  retrieving revision 1.304
  diff -u -r1.303 -r1.304
  --- wiki.php	7 Jul 2006 15:06:07 -0000	1.303
  +++ wiki.php	7 Jul 2006 22:46:49 -0000	1.304
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.303 2006/07/07 15:06:07 wkpark Exp $
  +// $Id: wiki.php,v 1.304 2006/07/07 22:46:49 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.303 $',1,-1);
  +$_revision = substr('$Revision: 1.304 $',1,-1);
   $_release = '1.1.2';
   
   #ob_start("ob_gzhandler");
  @@ -4099,10 +4099,10 @@
   
       if (!$action) $options['pi']=1; # protect a recursivly called #redirect
   
  -#    if (!$DBInfo->security->is_allowed('read',$options)) {
  -#      do_invalid($formatter,$options);
  -#      return;
  -#    }
  +    if ($DBInfo->control_read and !$DBInfo->security->is_allowed('read',$options)) {
  +      do_invalid($formatter,$options);
  +      return;
  +    }
   
   
       $formatter->pi=$formatter->get_instructions($dum);
  
  
  


wkpark      2006/07/08 07:46:49

  Added:       plugin   aclinfo.php
  Log:
  support a simple ACL security plugin
  $control_read config option added now and you can control read action
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/aclinfo.php
  
  Index: aclinfo.php
  ===================================================================
  <?php
  // Copyright 2006 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a sample aclinfo plugin for the MoniWiki
  //
  // Usage: ?action=aclinfo
  //
  // $Id: aclinfo.php,v 1.1 2006/07/07 22:46:49 wkpark Exp $
  
  function do_aclinfo($formatter,$options) {
      global $DBInfo;
      if ($DBInfo->security_class=='acl') {
          $options['aclinfo']=1;
          list($allowed,$denied)=$DBInfo->security->acl_check('aclinfo',$options);
      } else {
          $options['msg']=_("ACL is not enabled on this Wiki");
          do_invalid($formatter,$options);
          return;
      }
      $formatter->send_header('',$options);
      $formatter->send_title('','',$options);
      print '<h2>'._("Your ACL Info").'</h2>';
      if (in_array($options['id'],$DBInfo->owners)) {
          print '<h3>'._("You are wiki owner")."</h3>\n";
      } else if (in_array($options['id'],$DBInfo->wikimasters)) {
          print '<h3>'._("You are wiki master")."</h3>\n";
      } else {
          print '<h3>'._("allowed actions")."</h3>\n";
          print '<pre>';
          print_r($allowed);
          print '</pre>';
          print '<h3>'._("denied actions")."</h3>\n";
          print '<pre>';
          print_r($denied);
          print '</pre>';
      }
      $formatter->send_footer('',$options);
      return;
  }
  
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2006/07/08 07:46:49

  Added:       plugin/security acl.php
  Log:
  support a simple ACL security plugin
  $control_read config option added now and you can control read action
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/security/acl.php
  
  Index: acl.php
  ===================================================================
  <?php
  # a simple ACL security plugin for the MoniWiki
  # $Id: acl.php,v 1.1 2006/07/07 22:46:49 wkpark Exp $
  #
  # Please see also http://www.dokuwiki.org/wiki:discussion:acl2
  #
  # ACL file example:
  # <?php // just for hide contents
  # *     @ALL    allow   *                   # allow all actions
  # *     Anonymous   deny    edit,diff,info  # deny some actions for Anonymous
  # MoniWiki  @ALL    deny    uploadfile,uploadedfiles,edit
  # ACL   @ALL        deny    edit,diff,info
  
  class Security_ACL extends Security {
      var $DB;
  
      function Security_ACL($DB="") {
          $this->DB=$DB;
          //load ACL into a global array
          define(_CURRENT,dirname(__FILE__));
          if ($DB->acl_type and file_exists(_CURRENT.'/../../config/acl.'.$DB->acl_type.'.php'))
              $acl_file=_CURRENT.'/../../config/acl.'.$DB->acl_type.'.php';
          else
              $acl_file=_CURRENT.'/../../config/acl.default.php';
  
          if(is_readable($acl_file)) {
              $this->AUTH_ACL= file($acl_file);
          } else{
              $this->AUTH_ACL= array('*   @ALL    allow   *');
          }
  
          $this->allowed_users=array_merge($DB->wikimasters,$DB->owners);
      }
  
      function acl_check($action='read',&$options,$groups=array()) {
          if (in_array($options['id'],$this->allowed_users)) return 1;
          $pg=$this->DB->_getPageKey($options['page']);
          $user=$options['id'];
  
          $groups[]='@ALL';
          $groups[]=$user;
          $allowed=array();
          $denied=array();
  
          $matches= preg_grep('/^(@[^\s]+)\s+(.*,?'.$user.'|,?.*)/', $this->AUTH_ACL);
          foreach ($matches as $line) {
              $groups[]=strtok($line," \t");
          }
  
          $gregex=implode('|',$groups);
  
          $matches= preg_grep('/^('.$pg.'|\*)\s+('.$gregex.')\s+/', $this->AUTH_ACL);
          if (count($matches)) {
              foreach ($matches as $rule) {
                  if ($rule[0] == '@') continue; # group definition XXX
                  $rule = rtrim($rule);
                  $rule = preg_replace('/#.*$/','',$rule); # delete comments
                  $acl = preg_split('/\s+/',$rule,4);
  
                  if ($acl[2] == 'allow') {
                      $allowed=array_merge($allowed,split(',',$acl[3]));
                      if ($acl[1] == $user and $acl[3] == '*') {
                          $s=array_search('*',$denied);
                          unset($denied[$s]);
                      }
                  } else if ($acl[2] == 'deny') {
                      $denied=array_merge($denied,split(',',$acl[3]));
                      if ($acl[1] == $user and $acl[3] == '*') {
                          $s=array_search('*',$allowed);
                          unset($allowed[$s]);
                      }
                  }
              }
          }
          if ($this->DB->acl_debug) {
              ob_start();
              print '<pre>';
              print "*** groups\n";
              print_r($groups);
              print "*** matches\n";
              print_r($matches);
              print "*** allowed\n";
              print_r($allowed);
              print "*** denied\n";
              print_r($denied);
              print '</pre>';
              $options['msg']=ob_get_contents();
              ob_end_clean();
          }
  
          if ($options['aclinfo']) return array($allowed,$denied);
  
          if ((($p=in_array('*',$allowed)) or in_array($action,$allowed)) and
              !(in_array($action,$denied) and ($p and !in_array('*',$denied))))
              return 1;
          return 0;
      }
  
      function is_allowed($action="read",&$options) {
          # basic allowed actions
          $action=strtolower($action);
          $ret=$this->acl_check($action,$options);
          if ($ret == 0) {
              $options['err']=sprintf(_("You are not allowed to '%s' on this page"),$action);
              $options['err'].="\n"._("Please contact WikiMasters :b");
          }
          return $ret;
      }
  }
  
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2006/07/08 07:47:55

  Added:       config   acl.default.php
  Log:
  a sample acl config file
  
  Revision  Changes    Path
  1.1                  moniwiki/config/acl.default.php
  
  Index: acl.default.php
  ===================================================================
  <?php
  # A sample ACL file for Moniwiki
  # $Id: acl.default.php,v 1.1 2006/07/07 22:47:55 wkpark Exp $
  *	@ALL		allow	*
  *	Anonymous	deny	*
  *	Anonymous	allow	read,userform,rss_rc,aclinfo
  MoniWiki	@ALL	deny	uploadfile,diff
  ACL	@ALL		deny    edit,diff,info # a shared ACL file (not supported yet)
  # set group members
  #@KLDP	Hello,foobar,moniwiki
  
  
  


wkpark      2006/07/08 08:02:14

  Added:       config   .htaccess
  Log:
  add .htaccess to hide config/ dir.
  
  Revision  Changes    Path
  1.1                  moniwiki/config/.htaccess
  
  Index: .htaccess
  ===================================================================
  Order allow,deny
  Deny from all
  
  
  


wkpark      2006/07/08 22:41:55

  Modified:    plugin/security acl.php
  Log:
  more cleaner implementation
  support group priority
  
  Revision  Changes    Path
  1.2       +112 -22   moniwiki/plugin/security/acl.php
  
  Index: acl.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/acl.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- acl.php	7 Jul 2006 22:46:49 -0000	1.1
  +++ acl.php	8 Jul 2006 13:41:55 -0000	1.2
  @@ -1,22 +1,35 @@
   <?php
  -# a simple ACL security plugin for the MoniWiki
  -# $Id: acl.php,v 1.1 2006/07/07 22:46:49 wkpark Exp $
  +# a ACL security plugin for the MoniWiki (experimental)
  +# $Id: acl.php,v 1.2 2006/07/08 13:41:55 wkpark Exp $
   #
   # Please see also http://www.dokuwiki.org/wiki:discussion:acl2
   #
   # ACL file example:
  -# <?php // just for hide contents
  +#
  +## page|*  @group/user allow|deny|protect   action list|*
  +#
   # *     @ALL    allow   *                   # allow all actions
  +# *     @ALL    allow   ticket              # allow ticket action to show ticket img
   # *     Anonymous   deny    edit,diff,info  # deny some actions for Anonymous
   # MoniWiki  @ALL    deny    uploadfile,uploadedfiles,edit
   # ACL   @ALL        deny    edit,diff,info
  +## protect all protectable actions
  +# *	@ALL        protect deletefile,deletepage,rename,rcspurge,rcs,chmod,backup,restore
  +#
  +## set group and priority of group
  +## the priority of @ALL is 1
  +## User's priority is 4
  +## @groupname   userlist    [priority (default=2)]
  +# @Kiwirian     foobar,kiwi 100
  +# *     @Kiwirian   deny    *
  +# *     @Kiwirian   allow   read
   
   class Security_ACL extends Security {
       var $DB;
   
       function Security_ACL($DB="") {
           $this->DB=$DB;
  -        //load ACL into a global array
  +        # load ACL
           define(_CURRENT,dirname(__FILE__));
           if ($DB->acl_type and file_exists(_CURRENT.'/../../config/acl.'.$DB->acl_type.'.php'))
               $acl_file=_CURRENT.'/../../config/acl.'.$DB->acl_type.'.php';
  @@ -32,46 +45,84 @@
           $this->allowed_users=array_merge($DB->wikimasters,$DB->owners);
       }
   
  -    function acl_check($action='read',&$options,$groups=array()) {
  +    function get_acl($action='read',&$options) {
           if (in_array($options['id'],$this->allowed_users)) return 1;
           $pg=$this->DB->_getPageKey($options['page']);
           $user=$options['id'];
   
  +        $groups=array();
           $groups[]='@ALL';
           $groups[]=$user;
           $allowed=array();
           $denied=array();
  +        $protected=array();
   
  -        $matches= preg_grep('/^(@[^\s]+)\s+(.*,?'.$user.'|,?.*)/', $this->AUTH_ACL);
  +        $gpriority=array(); # group priorities
  +
  +        #get group info.
  +        $matches= preg_grep('/^(@[^\s]+)\s+(.*,?'.$user.',?.*)/', $this->AUTH_ACL);
           foreach ($matches as $line) {
  -            $groups[]=strtok($line," \t");
  +            $grp=preg_split('/\s+/',$line);
  +            $groups[]=$grp[0];
  +            if ($grp[2]) $gpriority[$grp[0]]=$grp[2]; # set group priorities
  +            else $gpriority[$grp[0]]=2;
           }
   
           $gregex=implode('|',$groups);
   
  +        #get ACL info.
           $matches= preg_grep('/^('.$pg.'|\*)\s+('.$gregex.')\s+/', $this->AUTH_ACL);
           if (count($matches)) {
               foreach ($matches as $rule) {
  -                if ($rule[0] == '@') continue; # group definition XXX
  -                $rule = rtrim($rule);
  +                if (in_array($rule[0],array('@','#'))) continue;
                   $rule = preg_replace('/#.*$/','',$rule); # delete comments
  +                $rule = rtrim($rule);
                   $acl = preg_split('/\s+/',$rule,4);
   
                   if ($acl[2] == 'allow') {
  -                    $allowed=array_merge($allowed,split(',',$acl[3]));
  -                    if ($acl[1] == $user and $acl[3] == '*') {
  -                        $s=array_search('*',$denied);
  -                        unset($denied[$s]);
  +                    $tmp=split(',',$acl[3]);
  +                    $tmp=array_flip($tmp);
  +                    if ($acl[1] == $user) $pri=4;
  +                    else if ($acl[1] == '@ALL') $pri=1;
  +                    else $pri= $gpriority[$acl[1]] ? $gpriority[$acl[1]]:2; # get group prio
  +                    foreach ($tmp as $t=>$v) {
  +                        if (isset($allowed[$t]) and $allowed[$t] > $pri)
  +                            unset($tmp[$t]);
  +                        else
  +                            $tmp[$t]=$pri;
  +                    }
  +
  +                    $allowed=array_merge($allowed,$tmp);
  +                    if ($acl[3]=='*' and isset($denied['*'])) {
  +                        if ($allowed['*']>=$denied['*']) unset($denied['*']);
  +                        else $unset($allowed['*']);
                       }
                   } else if ($acl[2] == 'deny') {
  -                    $denied=array_merge($denied,split(',',$acl[3]));
  -                    if ($acl[1] == $user and $acl[3] == '*') {
  -                        $s=array_search('*',$allowed);
  -                        unset($allowed[$s]);
  +                    $tmp=split(',',$acl[3]);
  +                    $tmp=array_flip($tmp);
  +                    if ($acl[1] == $user) $pri=4;
  +                    else if ($acl[1] == '@ALL') $pri=1;
  +                    else $pri= $gpriority[$acl[1]] ? $gpriority[$acl[1]]:2; # set group prio
  +                    foreach ($tmp as $t=>$v) {
  +                        if (isset($allowed[$t]) and $denied[$t] > $pri)
  +                            unset($tmp[$t]);
  +                        else
  +                            $tmp[$t]=$pri;
  +                    }
  +                    $denied=array_merge($denied,$tmp);
  +                    if ($acl[3]=='*' and isset($allowed['*'])) {
  +                        if ($allowed['*']<=$denied['*']) unset($allowed['*']);
  +                        else unset($denied['*']);
                       }
  +                } else if ($acl[2] == 'protect') {
  +                    $tmp=split(',',$acl[3]);
  +                    $tmp=array_flip($tmp);
  +                    $protected=array_merge($protected,$tmp);
                   }
               }
           }
  +        $protected=array_keys($protected);
  +
           if ($this->DB->acl_debug) {
               ob_start();
               print '<pre>';
  @@ -83,22 +134,52 @@
               print_r($allowed);
               print "*** denied\n";
               print_r($denied);
  +            print "*** protected\n";
  +            print_r($protected);
               print '</pre>';
               $options['msg']=ob_get_contents();
               ob_end_clean();
           }
  +        $this->_acl_ok=1;
  +        $this->_allowed=$allowed;
  +        $this->_denied=$denied;
  +        $this->_protected=$protected;
  +        return array($allowed,$denied,$protected);
  +    }
   
  -        if ($options['aclinfo']) return array($allowed,$denied);
  -
  -        if ((($p=in_array('*',$allowed)) or in_array($action,$allowed)) and
  -            !(in_array($action,$denied) and ($p and !in_array('*',$denied))))
  +    function acl_check($action='read',&$options) {
  +        # check allow first
  +        $allowed=&$this->_allowed;
  +        $denied=&$this->_denied;
  +
  +        if (isset($allowed['*'])) {
  +            if (isset($denied[$action])) {
  +                if ($allowed['*'] >= $denied[$action]) return 1;
  +                return 0;
  +            }
               return 1;
  -        return 0;
  +        }
  +        if (isset($denied['*'])) {
  +            if (isset($allowed[$action])) {
  +                if ($allowed[$action] >= $denied['*']) return 1;
  +                return 0;
  +            }
  +            return 0;
  +        }
  +        if (isset($allowed[$action]) and isset($denied[$action])) {
  +            if ($allowed[$action] >= $denied[$action]) return 1;
  +            return 0;
  +        }
  +        if (isset($allowed[$action])) return 1;
  +        if (isset($denied[$action])) return 0;
  +        return 1; # default is allow
       }
   
       function is_allowed($action="read",&$options) {
           # basic allowed actions
           $action=strtolower($action);
  +        if (!$this->_acl_ok) $this->get_acl($action,$options); # get acl info
  +
           $ret=$this->acl_check($action,$options);
           if ($ret == 0) {
               $options['err']=sprintf(_("You are not allowed to '%s' on this page"),$action);
  @@ -106,6 +187,15 @@
           }
           return $ret;
       }
  +
  +    function is_protected($action="read",$options) {
  +        # password protected POST actions
  +        $action=strtolower($action);
  +        if (!$this->_acl_ok) $this->get_acl($action,$options); # get acl info
  +
  +        if (in_array($action,$this->_protected)) return 1;
  +        return 0;
  +    }
   }
   
   // vim:et:sts=4:
  
  
  


wkpark      2006/07/08 23:29:51

  Modified:    config   acl.default.php
  Log:
  add @User group for registered users
  add more ACL examples
  
  Revision  Changes    Path
  1.2       +25 -8     moniwiki/config/acl.default.php
  
  Index: acl.default.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config/acl.default.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- acl.default.php	7 Jul 2006 22:47:55 -0000	1.1
  +++ acl.default.php	8 Jul 2006 14:29:51 -0000	1.2
  @@ -1,10 +1,27 @@
  -<?php
  -# A sample ACL file for Moniwiki
  -# $Id: acl.default.php,v 1.1 2006/07/07 22:47:55 wkpark Exp $
  -*	@ALL		allow	*
  -*	Anonymous	deny	*
  -*	Anonymous	allow	read,userform,rss_rc,aclinfo
  -MoniWiki	@ALL	deny	uploadfile,diff
  -ACL	@ALL		deny    edit,diff,info # a shared ACL file (not supported yet)
  +# acl.default.php
  +# <?php exit()?>
  +# Please don't modify the lines above
  +#
  +# A sample Access Control Lists file for Moniwiki
  +#
  +# $Id: acl.default.php,v 1.2 2006/07/08 14:29:51 wkpark Exp $
  +@Guest	Anonymous
  +*	@ALL		deny	*
  +*	@ALL		allow	ticket
  +*	@User		allow	*
  +# some pages are allowed to edit
  +WikiSandBox	@Guest	allow	edit,info,diff
  +#*	Anonymous	deny	*
  +# some POST actions support protected mode using admin password
  +*	@ALL		protect	deletefile,deletepage,rename,rcspurge,rcs,chmod,backup,restore
  +# some actions allowed to @ALL
  +*	@ALL		allow	read,userform,rss_rc,aclinfo,fortune,deletepage,fixmoin,ticket
  +# some pages have restrict permission
  +MoniWiki	@ALL	deny	edit,uploadfile,diff
  +# special pages
  +ACL	@ALL		deny    edit,diff,info # a shared ACL file (not supported yet XXX)
   # set group members
   #@KLDP	Hello,foobar,moniwiki
  +#@Kiwirian	foobar
  +#*	@Kiwirian	deny	*
  +#*	@Kiwirian	allow	read
  
  
  


wkpark      2006/07/08 23:29:51

  Modified:    plugin/security acl.php
  Log:
  add @User group for registered users
  add more ACL examples
  
  Revision  Changes    Path
  1.3       +4 -2      moniwiki/plugin/security/acl.php
  
  Index: acl.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/acl.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- acl.php	8 Jul 2006 13:41:55 -0000	1.2
  +++ acl.php	8 Jul 2006 14:29:51 -0000	1.3
  @@ -1,6 +1,6 @@
   <?php
   # a ACL security plugin for the MoniWiki (experimental)
  -# $Id: acl.php,v 1.2 2006/07/08 13:41:55 wkpark Exp $
  +# $Id: acl.php,v 1.3 2006/07/08 14:29:51 wkpark Exp $
   #
   # Please see also http://www.dokuwiki.org/wiki:discussion:acl2
   #
  @@ -53,6 +53,7 @@
           $groups=array();
           $groups[]='@ALL';
           $groups[]=$user;
  +        if ($user != 'Anonymous') $groups[]='@User';
           $allowed=array();
           $denied=array();
           $protected=array();
  @@ -78,6 +79,7 @@
                   $rule = preg_replace('/#.*$/','',$rule); # delete comments
                   $rule = rtrim($rule);
                   $acl = preg_split('/\s+/',$rule,4);
  +                if (!$acl[3]) $acl[3]='*';
   
                   if ($acl[2] == 'allow') {
                       $tmp=split(',',$acl[3]);
  @@ -137,7 +139,7 @@
               print "*** protected\n";
               print_r($protected);
               print '</pre>';
  -            $options['msg']=ob_get_contents();
  +            $options['msg'].=ob_get_contents();
               ob_end_clean();
           }
           $this->_acl_ok=1;
  
  
  


wkpark      2006/07/08 23:30:52

  Modified:    .        wiki.php
  Log:
  small fix
  
  Revision  Changes    Path
  1.305     +4 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.304
  retrieving revision 1.305
  diff -u -r1.304 -r1.305
  --- wiki.php	7 Jul 2006 22:46:49 -0000	1.304
  +++ wiki.php	8 Jul 2006 14:30:52 -0000	1.305
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.304 2006/07/07 22:46:49 wkpark Exp $
  +// $Id: wiki.php,v 1.305 2006/07/08 14:30:52 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.304 $',1,-1);
  +$_revision = substr('$Revision: 1.305 $',1,-1);
   $_release = '1.1.2';
   
   #ob_start("ob_gzhandler");
  @@ -4220,7 +4220,8 @@
           $formatter->ajax_repl($action,$options);
         else if ($DBInfo->use_macro_as_action) # XXX
           print $formatter->macro_repl($action,$options['value'],$options);
  -      do_invalid($formatter,$options);
  +      else
  +        do_invalid($formatter,$options);
         return;
       }
   
  
  
  


wkpark      2006/07/08 23:31:28

  Modified:    plugin   aclinfo.php
  Log:
  update
  
  Revision  Changes    Path
  1.2       +18 -12    moniwiki/plugin/aclinfo.php
  
  Index: aclinfo.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/aclinfo.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- aclinfo.php	7 Jul 2006 22:46:49 -0000	1.1
  +++ aclinfo.php	8 Jul 2006 14:31:28 -0000	1.2
  @@ -5,13 +5,12 @@
   //
   // Usage: ?action=aclinfo
   //
  -// $Id: aclinfo.php,v 1.1 2006/07/07 22:46:49 wkpark Exp $
  +// $Id: aclinfo.php,v 1.2 2006/07/08 14:31:28 wkpark Exp $
   
   function do_aclinfo($formatter,$options) {
       global $DBInfo;
       if ($DBInfo->security_class=='acl') {
  -        $options['aclinfo']=1;
  -        list($allowed,$denied)=$DBInfo->security->acl_check('aclinfo',$options);
  +        list($allowed,$denied,$protected)=$DBInfo->security->get_acl('aclinfo',$options);
       } else {
           $options['msg']=_("ACL is not enabled on this Wiki");
           do_invalid($formatter,$options);
  @@ -21,18 +20,25 @@
       $formatter->send_title('','',$options);
       print '<h2>'._("Your ACL Info").'</h2>';
       if (in_array($options['id'],$DBInfo->owners)) {
  -        print '<h3>'._("You are wiki owner")."</h3>\n";
  +        print '<h4>'._("You are wiki owner")."</h4>\n";
       } else if (in_array($options['id'],$DBInfo->wikimasters)) {
  -        print '<h3>'._("You are wiki master")."</h3>\n";
  +        print '<h4>'._("You are wiki master")."</h4>\n";
       } else {
  -        print '<h3>'._("allowed actions")."</h3>\n";
  -        print '<pre>';
  -        print_r($allowed);
  -        print '</pre>';
  -        print '<h3>'._("denied actions")."</h3>\n";
  -        print '<pre>';
  -        print_r($denied);
  +        print '<h4>'._("Allowed actions")."</h4>\n";
  +        print '<ul>';
  +        foreach ($allowed as $k=>$v)
  +            print '<li>'.$k.': ('.$v.')</li>';
  +        print '</ul>';
  +        print '<h4>'._("Denied actions")."</h4>\n";
  +        print '<ul>';
  +        foreach ($denied as $k=>$v)
  +            print '<li>'.$k.': ('.$v.')</li>';
  +        print '</ul>';
           print '</pre>';
  +        print '<h4>'._("Protected actions")."</h4>\n";
  +        print '<ul><li>';
  +        print implode('</li><li>',$protected);
  +        print '</li></ul>';
       }
       $formatter->send_footer('',$options);
       return;
  
  
  


wkpark      2006/07/08 23:32:50

  Modified:    plugin   userform.php
  Log:
  added new config option $no_register
  
  Revision  Changes    Path
  1.17      +9 -2      moniwiki/plugin/userform.php
  
  Index: userform.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/userform.php,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- userform.php	26 Jan 2006 14:44:12 -0000	1.16
  +++ userform.php	8 Jul 2006 14:32:50 -0000	1.17
  @@ -4,7 +4,7 @@
   // a userform action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: userform.php,v 1.16 2006/01/26 14:44:12 wkpark Exp $
  +// $Id: userform.php,v 1.17 2006/07/08 14:32:50 wkpark Exp $
   
   function do_userform($formatter,$options) {
     global $DBInfo;
  @@ -236,6 +236,13 @@
              }
   
              if ($udb->isNotUser($user)) {
  +             if ($DBInfo->no_register) {
  +               $options['msg']=_("Fail to register");
  +               $options['err']=_("You are not allowed to register on this wiki");
  +               $options['err'].="\n"._("Please contact WikiMasters");
  +               do_invalid($formatter,$options);
  +               return;
  +             }
                $title= _("Successfully added!");
                $options['id']=$user->id;
                $ticket=md5(time().$user->id.$options['email']);
  @@ -258,7 +265,7 @@
                    $body.=_("Please change your password later")."\n";
                  }
                  wiki_sendmail($body,$options);
  -               $options['msg'].='<br/>'._("E-mail confirmation mail sent");
  +               $options['msg'].='<br/>'._("Confirmation E-mail sent");
                }
              } else {# already exist user
                $user=$udb->getUser($user->id);
  
  
  


wkpark      2006/07/08 23:33:34

  Modified:    .        config.php.default
  Log:
  add missing options and update
  
  Revision  Changes    Path
  1.33      +8 -1      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- config.php.default	7 Jul 2006 14:24:11 -0000	1.32
  +++ config.php.default	8 Jul 2006 14:33:34 -0000	1.33
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.32 2006/07/07 14:24:11 wkpark Exp $
  +# $Id: config.php.default,v 1.33 2006/07/08 14:33:34 wkpark Exp $
   #
   $sitename='UnnamedWiki';
   $data_dir= './data';
  @@ -169,4 +169,11 @@
   $use_errlog=1;
   #$errlog_maxline=20; # max lines to show
   #$raw_errlog=0; # do not hide some dir. infos.
  +#$acl_type='default';
  +#$acl_debug=1;
  +#$read_control=1;
  +#$use_macro_as_action=0;
  +#$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
   ?>
  
  
  


wkpark      2006/07/09 19:26:17

  Modified:    plugin   Attachment.php UploadFile.php
  Log:
  support attachment:"Hello World/my img.png"?width=100
  
  Revision  Changes    Path
  1.20      +4 -3      moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- Attachment.php	28 Apr 2006 12:16:01 -0000	1.19
  +++ Attachment.php	9 Jul 2006 10:26:17 -0000	1.20
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.19 2006/04/28 12:16:01 wkpark Exp $
  +// $Id: Attachment.php,v 1.20 2006/07/09 10:26:17 wkpark Exp $
   
   function macro_Attachment($formatter,$value,$option='') {
     global $DBInfo;
  @@ -24,8 +24,9 @@
       // [attachment:my.ext http://url/../my.png]
       if ($value[0]=='"' and ($p2=strpos(substr($value,1),'"')) !== false) {
         $text=$ntext=substr($value,$p2+3);
  -      $dummy=substr($value,1,$p2);
  -      $value=$dummy;
  +      $dummy=substr($value,1,$p2); # "my image.png" => my image.png
  +      $args=substr($value,$p2+2);
  +      $value=$dummy.$args; # append query string
       } else {
         $text=$ntext=substr($value,$p+1);
         $value=substr($value,0,$p);
  
  
  
  1.24      +15 -7     moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- UploadFile.php	6 Jul 2006 12:56:52 -0000	1.23
  +++ UploadFile.php	9 Jul 2006 10:26:17 -0000	1.24
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.23 2006/07/06 12:56:52 wkpark Exp $
  +// $Id: UploadFile.php,v 1.24 2006/07/09 10:26:17 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -162,14 +162,22 @@
   
     $title.=($title ? '<br />':'').
       sprintf(_("File \"%s\" is uploaded successfully"),$upfilename);
  +
  +  $fullname=$formatter->page->name."/$upfilename";
  +  $upname=$upfilename;
  +  if (strpos($fullname,' ')!==false);
  +    $fullname='"'.$fullname.'"';
  +  if (strpos($upname,' ')!==false);
  +    $upname='"'.$upname.'"';
  +
     if ($key == 'UploadFile') {
  -    $msg.= "<ins>Uploads:$upfilename</ins> or<br />";
  -    $msg.= "<ins>attachment:/$upfilename</ins><br />";
  -    $log_entry.=" * attachment:/$upfilename?action=deletefile . . . @USERNAME@ @DATE@\n";
  +    $msg.= "<ins>Uploads:$upname</ins> or<br />";
  +    $msg.= "<ins>attachment:/$upname</ins><br />";
  +    $log_entry.=" * attachment:/$upname?action=deletefile . . . @USERNAME@ @DATE@\n";
     } else {
  -    $msg.= "<ins>attachment:$upfilename</ins> or<br />";
  -    $msg.= "<ins>attachment:".$formatter->page->name."/$upfilename</ins><br />";
  -    $log_entry.=" * attachment:".$formatter->page->name."/$upfilename?action=deletefile . . . @USERNAME@ @DATE@\n";
  +    $msg.= "<ins>attachment:$upname</ins> or<br />";
  +    $msg.= "<ins>attachment:$fullname</ins><br />";
  +    $log_entry.=" * attachment:$fullname?action=deletefile . . . @USERNAME@ @DATE@\n";
     }
   
     } // multiple upload
  
  
  


wkpark      2006/07/09 19:38:58

  Modified:    css      kbd.js
  Log:
  fixed PR #301246: CapsLock probem with kbd.js reported by gamdora
  add "U" short cut as UserPreferences
  
  Revision  Changes    Path
  1.10      +7 -1      moniwiki/css/kbd.js
  
  Index: kbd.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/kbd.js,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- kbd.js	20 Sep 2005 12:57:51 -0000	1.9
  +++ kbd.js	9 Jul 2006 10:38:58 -0000	1.10
  @@ -6,7 +6,7 @@
   
      distributable under GPL
   
  -   $Id: kbd.js,v 1.9 2005/09/20 12:57:51 wkpark Exp $
  +   $Id: kbd.js,v 1.10 2006/07/09 10:38:58 wkpark Exp $
   
      CHANGES
   
  @@ -35,6 +35,7 @@
      T: TitleIndex
      H: ?action=home (not supported in the MoinMoin)
      L: ?action=LikePages
  +   U: ?action=UserPreferences
   
      <ESC>: goto the 'go' form
      /: FullSearch mode
  @@ -53,6 +54,7 @@
   FindPage= "FindPage"; 
   TitleIndex= "TitleIndex"; 
   HelpContents= "HelpContents";
  +UserPreferences= "UserPreferences";
   
   // go form ID
   _go= "go";
  @@ -119,6 +121,8 @@
   			ch=String.fromCharCode(e.charCode);
   		}
   	}
  +
  +	ch = ch.toLowerCase();
   	var go=document.getElementById(_go);
   	if(e.altKey || e.ctrlKey) {
   		if(ch == "z" && e.altKey) {
  @@ -230,6 +234,8 @@
   		self.location = url_prefix + _qp + FindPage
   	} else if(ch == "t") { // titleindex
   		self.location = url_prefix + _qp + TitleIndex
  +	} else if(ch == "u") { // userpreferences
  +		self.location = url_prefix + _qp + UserPreferences;
   	} else if(ch=="e" || ch=="w" || ch=="r") { // Edit or refresh
   		var my=''+self.location;
   		var idx=my.indexOf(_ap);
  
  
  


wkpark      2006/07/09 21:45:34

  Modified:    .        wiki.php
  Log:
  support interwiki links like as wiki:"Hello world" etc.
  
  Revision  Changes    Path
  1.306     +31 -25    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.305
  retrieving revision 1.306
  diff -u -r1.305 -r1.306
  --- wiki.php	8 Jul 2006 14:30:52 -0000	1.305
  +++ wiki.php	9 Jul 2006 12:45:34 -0000	1.306
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.305 2006/07/08 14:30:52 wkpark Exp $
  +// $Id: wiki.php,v 1.306 2006/07/09 12:45:34 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.305 $',1,-1);
  +$_revision = substr('$Revision: 1.306 $',1,-1);
   $_release = '1.1.2';
   
   #ob_start("ob_gzhandler");
  @@ -598,6 +598,7 @@
       $this->use_singlebracket=1;
       $this->use_twinpages=1;
       $this->use_hostname=1;
  +    $this->email_guard='hex';
       $this->pagetype=array();
       $this->smiley='wikismiley';
       $this->convmap=array(0xac00, 0xd7a3, 0x0000, 0xffff); /* for euc-kr */
  @@ -1558,6 +1559,7 @@
       $this->use_smartdiff=$DBInfo->use_smartdiff;
       $this->use_easyalias=$DBInfo->use_easyalias;
       $this->submenu=$DBInfo->submenu;
  +    $this->email_guard=$DBInfo->email_guard;
   
       if (($p=strpos($page->name,"~")))
         $this->group=substr($page->name,0,$p+1);
  @@ -1642,7 +1644,7 @@
       $punct="<\'}\]\)\|;\.\!"; # , is omitted for the WikiPedia
       $url="wiki|http|https|ftp|nntp|news|irc|telnet|mailto|file|attachment";
       if ($DBInfo->url_schemas) $url.='|'.$DBInfo->url_schemas;
  -    $urlrule="((?:$url):([^\s$punct]|(\.?[^\s$punct]))+)";
  +    $urlrule="((?:$url):\"[^\"]+\"[^\s$punct]*|(?:$url):([^\s$punct]|(\.?[^\s$punct]))+)";
       #$urlrule="((?:$url):(\.?[^\s$punct])+)";
       #$urlrule="((?:$url):[^\s$punct]+(\.?[^\s$punct]+)+\s?)";
       # solw slow slow
  @@ -1916,21 +1918,14 @@
         }
   
         if (preg_match("/^mailto:/",$url)) {
  -        $url=str_replace("@","_at_",$url);
  -        $link=str_replace('&','&amp;',$url);
  -        $name=substr($url,7);
  -        return $this->icon['mailto']."<a class='externalLink' href='$link' $attr>$name</a>$external_icon";
  +        $email=substr($url,7);
  +        $link=$name=email_guard($email,$this->email_guard);
  +        $link=preg_replace('/&(?!#?[a-z0-9]+;)/i','&amp;',$link);
  +        return $this->icon['mailto']."<a class='externalLink' href='mailto:$link' $attr>$link</a>$external_icon";
         }
   
  -      if (preg_match("/^(w|[A-Z])/",$url)) { # InterWiki or wiki:
  -        if (strpos($url," ")) { # have a space ?
  -          $dum=explode(" ",$url,2);
  -          if ($dum[1])
  -          return $this->interwiki_repl($dum[0],$dum[1],$attr,$external_icon);
  -        }
  -        
  +      if (preg_match("/^(w|[A-Z])/",$url)) # InterWiki or wiki:
           return $this->interwiki_repl($url,'',$attr,$external_icon);
  -      }
   
         if ($force or strpos($url," ")) { # have a space ?
           list($url,$text)=explode(" ",$url,2);
  @@ -1973,21 +1968,32 @@
   
       if ($url[0]=="w")
         $url=substr($url,5);
  -    $dum=explode(":",$url,2);
  -    $wiki=$dum[0]; $page=$dum[1];
  -#    if (!$page) { # wiki:Wiki/FrontPage
  -#      $dum1=explode("/",$url,2);
  -#      $wiki=$dum1[0]; $page=$dum1[1];
  -#    }
   
  -    if (sizeof($dum) == 1) {
  -      # wiki:FrontPage(not supported in the MoinMoin
  +    $wiki='';
  +    # wiki:MoinMoin:FrontPage
  +    # wiki:MoinMoin/FrontPage for MoinMoin compatibility.
  +    if (preg_match('/^([A-Z][a-zA-Z]+):(.*)$/',$url,$m)) {
  +      $wiki=$m[1]; $url=$m[2];
  +    }
  +
  +    # wiki:"Hello World" wiki:MoinMoin:"Hello World"
  +    # [wiki:"Hello World" hello world]
  +    if ($url[0]=='"') {
  +      if (preg_match('/^((")?[^"]+\2)((\s+)?(.*))?$/',$url,$m)) {
  +        $url=$m[1];
  +        if (isset($m[5])) $text=$m[5];
  +      }
  +    }
  +
  +    if ($wiki== '') {
  +      # wiki:FrontPage (not supported in the MoinMoin)
         # or [wiki:FrontPage Home Page]
  -      $page=$dum[0];
  +      $page=&$url;
         if (!$text)
  -        return $this->word_repl($page,$page.$extra,$attr,1);
  +        return $this->word_repl($page,''.$extra,$attr,1);
         return $this->word_repl($page,$text.$extra,$attr,1);
       }
  +    $page=$url;
   
       $url=$DBInfo->interwiki[$wiki];
       # invalid InterWiki name
  
  
  


wkpark      2006/07/09 21:46:30

  Modified:    .        wikilib.php
  Log:
  add email_guard()
  
  Revision  Changes    Path
  1.206     +27 -1     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.205
  retrieving revision 1.206
  diff -u -r1.205 -r1.206
  --- wikilib.php	8 Feb 2006 02:37:18 -0000	1.205
  +++ wikilib.php	9 Jul 2006 12:46:30 -0000	1.206
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.205 2006/02/08 02:37:18 wkpark Exp $
  +// $Id: wikilib.php,v 1.206 2006/07/09 12:46:30 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -218,6 +218,32 @@
     return $hash(($key^$opad) . pack('H*', $hash(($key^$ipad) . $data)));
   }
   
  +/**
  + * return an obfuscated email address in line from dokuwiki
  + *
  + * @author Harry Fuecks <hfuecks@gmail.com>
  + * @author Christopher Smith <chris@jalakai.co.uk>
  + */
  +function email_guard($email,$mode='hex') {
  +
  +  switch ($mode) {
  +    case 'visible' :
  +      $obfuscate = array('@' => ' [at] ', '.' => ' [dot] ', '-' => ' [dash] ');
  +      return strtr($email, $obfuscate);
  +
  +    case 'hex' :
  +      $encode = '';
  +      $sz=strlen($email);
  +      for ($i=0; $i<$sz; $i++)
  +        $encode .= '&#x' . bin2hex($email{$i}).';';
  +      return $encode;
  +
  +    case 'none' :
  +    default :
  +      return $email;
  +  }
  +}
  +
   // Remember to initialize MT (using mt_srand() ) if required
   function pw_encode($password) {
     $seed = substr('00' . dechex(mt_rand()), -3) .
  
  
  


wkpark      2006/07/09 21:50:45

  Modified:    plugin/security acl.php
  Log:
  support pagename pattern like as "HelpOn*"
  
  Revision  Changes    Path
  1.4       +54 -37    moniwiki/plugin/security/acl.php
  
  Index: acl.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/acl.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- acl.php	8 Jul 2006 14:29:51 -0000	1.3
  +++ acl.php	9 Jul 2006 12:50:45 -0000	1.4
  @@ -1,6 +1,6 @@
   <?php
   # a ACL security plugin for the MoniWiki (experimental)
  -# $Id: acl.php,v 1.3 2006/07/08 14:29:51 wkpark Exp $
  +# $Id: acl.php,v 1.4 2006/07/09 12:50:45 wkpark Exp $
   #
   # Please see also http://www.dokuwiki.org/wiki:discussion:acl2
   #
  @@ -47,13 +47,13 @@
   
       function get_acl($action='read',&$options) {
           if (in_array($options['id'],$this->allowed_users)) return 1;
  -        $pg=$this->DB->_getPageKey($options['page']);
  +        $pg=$options['page'];
           $user=$options['id'];
   
           $groups=array();
           $groups[]='@ALL';
  -        $groups[]=$user;
           if ($user != 'Anonymous') $groups[]='@User';
  +        $groups[]=$user;
           $allowed=array();
           $denied=array();
           $protected=array();
  @@ -66,20 +66,30 @@
               $grp=preg_split('/\s+/',$line);
               $groups[]=$grp[0];
               if ($grp[2]) $gpriority[$grp[0]]=$grp[2]; # set group priorities
  -            else $gpriority[$grp[0]]=2;
  +            else $gpriority[$grp[0]]=2; # default group priority
           }
   
           $gregex=implode('|',$groups);
   
           #get ACL info.
  -        $matches= preg_grep('/^('.$pg.'|\*)\s+('.$gregex.')\s+/', $this->AUTH_ACL);
  +        #$matches= preg_grep('/^('.$pg.'|\*)\s+('.$gregex.')\s+/', $this->AUTH_ACL);
  +        $matches= preg_grep('/^[^#@].*\s+('.$gregex.')\s+/', $this->AUTH_ACL);
           if (count($matches)) {
               foreach ($matches as $rule) {
  -                if (in_array($rule[0],array('@','#'))) continue;
  -                $rule = preg_replace('/#.*$/','',$rule); # delete comments
  -                $rule = rtrim($rule);
  -                $acl = preg_split('/\s+/',$rule,4);
  +                #if (in_array($rule[0],array('@','#'))) continue;
  +                $rule= preg_replace('/#.*$/','',$rule); # delete comments
  +                $rule= rtrim($rule);
  +                $acl= preg_split('/\s+/',$rule,4);
                   if (!$acl[3]) $acl[3]='*';
  +                if ($acl[0] != '*') {
  +                    $prule=$acl[0];
  +                    // HelpOn* -> HelpOn.*
  +                    // MoniWiki/* -> MoniWiki\/.*
  +                    $prule=
  +                       preg_replace(array('/(?!<\.)\*/',"/(?<!\\\\)\//"),array('.*','\/'),$prule);
  +                    if (false === @preg_match("/$prule/",'')) continue;
  +                    if (!preg_match("/$prule/",$pg)) continue;
  +                }
   
                   if ($acl[2] == 'allow') {
                       $tmp=split(',',$acl[3]);
  @@ -87,7 +97,8 @@
                       if ($acl[1] == $user) $pri=4;
                       else if ($acl[1] == '@ALL') $pri=1;
                       else $pri= $gpriority[$acl[1]] ? $gpriority[$acl[1]]:2; # get group prio
  -                    foreach ($tmp as $t=>$v) {
  +                    $keys=array_keys($tmp);
  +                    foreach ($keys as $t) {
                           if (isset($allowed[$t]) and $allowed[$t] > $pri)
                               unset($tmp[$t]);
                           else
  @@ -105,8 +116,9 @@
                       if ($acl[1] == $user) $pri=4;
                       else if ($acl[1] == '@ALL') $pri=1;
                       else $pri= $gpriority[$acl[1]] ? $gpriority[$acl[1]]:2; # set group prio
  -                    foreach ($tmp as $t=>$v) {
  -                        if (isset($allowed[$t]) and $denied[$t] > $pri)
  +                    $keys=array_keys($tmp);
  +                    foreach ($keys as $t) {
  +                        if (isset($denied[$t]) and $denied[$t] > $pri)
                               unset($tmp[$t]);
                           else
                               $tmp[$t]=$pri;
  @@ -127,18 +139,21 @@
   
           if ($this->DB->acl_debug) {
               ob_start();
  -            print '<pre>';
  -            print "*** groups\n";
  -            print_r($groups);
  -            print "*** matches\n";
  -            print_r($matches);
  -            print "*** allowed\n";
  -            print_r($allowed);
  -            print "*** denied\n";
  -            print_r($denied);
  -            print "*** protected\n";
  -            print_r($protected);
  -            print '</pre>';
  +            print "<h4>groups</h4>\n";
  +            print implode(',',$groups);
  +            print "\n";
  +            print "<h4>Allowed actions</h4>\n";
  +            foreach ($allowed as $k=>$v)
  +                print $k." ($v),";
  +            #print_r($allowed);
  +            print "\n";
  +            print "<h4>Denied actions</h4>\n";
  +            foreach ($denied as $k=>$v)
  +                print $k." ($v),";
  +            #print_r($denied);
  +            print "\n";
  +            print "<h4>Protected actions</h4>\n";
  +            print implode(',',$protected);
               $options['msg'].=ob_get_contents();
               ob_end_clean();
           }
  @@ -154,13 +169,6 @@
           $allowed=&$this->_allowed;
           $denied=&$this->_denied;
   
  -        if (isset($allowed['*'])) {
  -            if (isset($denied[$action])) {
  -                if ($allowed['*'] >= $denied[$action]) return 1;
  -                return 0;
  -            }
  -            return 1;
  -        }
           if (isset($denied['*'])) {
               if (isset($allowed[$action])) {
                   if ($allowed[$action] >= $denied['*']) return 1;
  @@ -168,13 +176,22 @@
               }
               return 0;
           }
  -        if (isset($allowed[$action]) and isset($denied[$action])) {
  -            if ($allowed[$action] >= $denied[$action]) return 1;
  -            return 0;
  +        if (isset($allowed['*'])) {
  +            if (isset($denied[$action])) {
  +                if ($denied[$action] >= $allowed['*']) return 0;
  +                return 1;
  +            }
  +            return 1;
           }
  -        if (isset($allowed[$action])) return 1;
  -        if (isset($denied[$action])) return 0;
  -        return 1; # default is allow
  +        if ($allowed[$action] >= $denied[$action]) return 1;
  +        return 0;
  +        #if (isset($allowed[$action]) and isset($denied[$action])) {
  +        #    if ($allowed[$action] >= $denied[$action]) return 1;
  +        #    return 0;
  +        #}
  +        #if (isset($allowed[$action])) return 1;
  +        #if (isset($denied[$action])) return 0;
  +        #return 1; # default is allow
       }
   
       function is_allowed($action="read",&$options) {
  
  
  


wkpark      2006/07/09 22:00:05

  Modified:    .        wiki.php
  Log:
  more fix
  
  Revision  Changes    Path
  1.307     +4 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.306
  retrieving revision 1.307
  diff -u -r1.306 -r1.307
  --- wiki.php	9 Jul 2006 12:45:34 -0000	1.306
  +++ wiki.php	9 Jul 2006 13:00:05 -0000	1.307
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.306 2006/07/09 12:45:34 wkpark Exp $
  +// $Id: wiki.php,v 1.307 2006/07/09 13:00:05 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.306 $',1,-1);
  +$_revision = substr('$Revision: 1.307 $',1,-1);
   $_release = '1.1.2';
   
   #ob_start("ob_gzhandler");
  @@ -1994,6 +1994,8 @@
         return $this->word_repl($page,$text.$extra,$attr,1);
       }
       $page=$url;
  +    if ($page[0]=='"') # "extended wiki name"
  +      $page=substr($page,1,-1);
   
       $url=$DBInfo->interwiki[$wiki];
       # invalid InterWiki name
  
  
  


wkpark      2006/07/09 23:41:43

  Modified:    .        wiki.php
  Log:
  fixed [wiki:KLDPWiki:Hangul Hangul Font] syntax reported by iolo
  
  Revision  Changes    Path
  1.308     +6 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.307
  retrieving revision 1.308
  diff -u -r1.307 -r1.308
  --- wiki.php	9 Jul 2006 13:00:05 -0000	1.307
  +++ wiki.php	9 Jul 2006 14:41:43 -0000	1.308
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.307 2006/07/09 13:00:05 wkpark Exp $
  +// $Id: wiki.php,v 1.308 2006/07/09 14:41:43 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.307 $',1,-1);
  +$_revision = substr('$Revision: 1.308 $',1,-1);
   $_release = '1.1.2';
   
   #ob_start("ob_gzhandler");
  @@ -1983,6 +1983,10 @@
           $url=$m[1];
           if (isset($m[5])) $text=$m[5];
         }
  +    } else if (($p=strpos($url,' '))!==false) {
  +      $dummy=substr($url,0,$p);
  +      $text=substr($url,$p+1);
  +      $url=$dummy;
       }
   
       if ($wiki== '') {
  
  
  


wkpark      2006/07/10 20:00:48

  Modified:    plugin   Keywords.php Tour.php
  Log:
  more fixes
  
  Revision  Changes    Path
  1.13      +31 -7     moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- Keywords.php	3 Mar 2006 14:13:40 -0000	1.12
  +++ Keywords.php	10 Jul 2006 11:00:48 -0000	1.13
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a 'Keywords' plugin for the MoniWiki
   //
  -// $Id: Keywords.php,v 1.12 2006/03/03 14:13:40 wkpark Exp $
  +// $Id: Keywords.php,v 1.13 2006/07/10 11:00:48 wkpark Exp $
   
   define(LOCAL_KEYWORDS,'LocalKeywords');
   
  @@ -27,6 +27,8 @@
           else if ($opt=='random') {
               $options['random']=$options['all']=1; }
           else if ($opt=='suggest') $options['suggest']=1;
  +        else if ($opt=='tour') $options['tour']=1;
  +        else if ($opt=='freq') $sort='freq';
           else if (($p=strpos($opt,'='))!==false) {
               $k=substr($opt,0,$p);
               $v=substr($opt,$p+1);
  @@ -50,6 +52,7 @@
               $pagename=$opt;
           }
       }
  +
       if ($options['random'] and !$limit) $limit=0;
   
       if (!$pagename) $pagename=$formatter->page->name;
  @@ -71,6 +74,7 @@
           if ($keys) $mykeys=array_merge($mykeys,$keys);
       }
       if ($options['all']) {
  +        $use_sty=1;
           $words=array_count_values($mykeys);
           unset($words['']);
           $ncount=array_sum($words); // total count
  @@ -85,7 +89,12 @@
               }
               $words=&$rws;
           }
  +        if ($sort=='freq') ksort($words);
  +        #sort($words);
  +        #print $sort." $value";
  +        #print "<pre>";
           #print_r($words);
  +        #print "</pre>";
       } else {
           $max=3; // default weight
           $words=array();
  @@ -208,6 +217,7 @@
       }
   
       if ($nwords) $words=array_merge($words,$nwords);
  +    $use_sty=1;
   
       endif;
       //
  @@ -217,6 +227,8 @@
           $words=array_slice($words,0,$limit);
       }
       // make criteria list
  +
  +    if ($use_sty):
       $fact=array();
       $weight=$max; // $ncount
       #print 'max='.$max.' ratio='.$weight/$ncount.':';
  @@ -235,24 +247,31 @@
       $fs=MAX_FONT_SZ; // max font-size:24px;
       for ($i=0;$i<$fz;$i++) {
           $ifs=(int)($fs+0.5);
  -        $sty[]= "style='font-size:${ifs}px'";
  +        $sty[]= " style='font-size:${ifs}px'";
           #print '/'.$ifs;
           $fs-=$fsh;
           $fs=max($fs,9); // min font-size:9px
       }
  -    if ($sort!='freq') ksort($words);
  +    endif;
  +
  +    if ($sort=='freq') ksort($words);
   
       $link=$formatter->link_url(_rawurlencode($pagename),'');
       if (!isset($tag_link)) {
           if (!$search) $search='fullsearch&amp;keywords=1';
  -        $tag_link=$formatter->link_url(_rawurlencode($pagename),
  -            '?action='.$search.'&amp;value=$TAG');
  +        if ($options['tour'])
  +            $tag_link=$formatter->link_url('$TAG',
  +                '?action=tour&amp;arena=keylinks');
  +        else 
  +            $tag_link=$formatter->link_url(_rawurlencode($pagename),
  +                '?action='.$search.'&amp;value=$TAG');
       }
       $out='';
       if ($options['add']) {
           $out="<form method='post' action='$link'>\n";
           $out.="<input type='hidden' name='action' value='keywords' />\n";
       }
  +
       $out.='<ul>';
       foreach ($words as $key=>$val) {
           $style=$sty[$fz-1];
  @@ -268,10 +287,15 @@
               if ($options['add'])
                   $checkbox="<input type='checkbox' $checked name='key[]' ".
                       "value='$key' />";
  -            $out.=" <li>$checkbox"."<a href='".str_replace('$TAG',$key,$tag_link).
  -                "' $style title=\"$val "._("hits").'">'.$key."</a></li>\n";
  +            $out.=" <li class=\"tag-item\"";
  +            if ($use_sty) {
  +                $out.=" $style title=\"$val "._("hits").'"';
  +            }
  +            $out.=">$checkbox"."<a href='".str_replace('$TAG',$key,$tag_link).
  +                "'>".$key."</a></li>\n";
           }
       }
  +
       if ($options['add']) {
           $msg=_("add keywords");
           $inp="<li><input type='text' name='keywords' size='12' />: $msg</li>";
  
  
  
  1.8       +2 -2      moniwiki/plugin/Tour.php
  
  Index: Tour.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Tour.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Tour.php	11 Jan 2006 16:04:58 -0000	1.7
  +++ Tour.php	10 Jul 2006 11:00:48 -0000	1.8
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Tour]]
   //
  -// $Id: Tour.php,v 1.7 2006/01/11 16:04:58 wkpark Exp $
  +// $Id: Tour.php,v 1.8 2006/07/10 11:00:48 wkpark Exp $
   
   if (!function_exists('do_dot'))
       if ($pn=getPlugin('dot')) include_once("plugin/$pn.php");
  @@ -50,7 +50,7 @@
   
       $head='';
       if (!$value) $value=$formatter->page->name;
  -    else if ($value != $formatter->page->name)
  +    #else if ($value != $formatter->page->name) XXX;
   
       if ($arena == 'backlinks') {
           $head2=_("BackLinks");
  
  
  


wkpark      2006/07/10 20:03:15

  Modified:    .        wiki.php
  Log:
  config option $use_tagging added. set $use_tagging=1 or $use_tagging='[[Keywords]]'
  fixed interwiki_repl()
  
  Revision  Changes    Path
  1.309     +17 -7     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.308
  retrieving revision 1.309
  diff -u -r1.308 -r1.309
  --- wiki.php	9 Jul 2006 14:41:43 -0000	1.308
  +++ wiki.php	10 Jul 2006 11:03:15 -0000	1.309
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.308 2006/07/09 14:41:43 wkpark Exp $
  +// $Id: wiki.php,v 1.309 2006/07/10 11:03:15 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.308 $',1,-1);
  +$_revision = substr('$Revision: 1.309 $',1,-1);
   $_release = '1.1.2';
   
   #ob_start("ob_gzhandler");
  @@ -2004,8 +2004,8 @@
       $url=$DBInfo->interwiki[$wiki];
       # invalid InterWiki name
       if (!$url) {
  -      $dum0=preg_replace("/(".$this->wordrule.")/e","\$this->link_repl('\\1')",$dum[0]);
  -      return $dum0.':'.($dum[1]?$this->link_repl($dum[1],$text):'');
  +      $dum0=preg_replace("/(".$this->wordrule.")/e","\$this->link_repl('\\1')",$wiki);
  +      return $dum0.':'.($page?$this->link_repl($page,$text):'');
       }
   
       if ($page=='/') $page='';
  @@ -2618,14 +2618,24 @@
           return;
         }
   
  -      $twin_mode=$DBInfo->use_twinpages;
  -      if (isset($pi['#twinpages'])) $twin_mode=$pi['#twinpages'];
  -      $twins=$DBInfo->metadb->getTwinPages($this->page->name,$twin_mode);
         if ($body) {
           $body=rtrim($body); # delete last empty line
           $lines=explode("\n",$body);
         } else
           $lines=array();
  +
  +      if ($DBInfo->use_tagging and isset($pi['#keywords'])) {
  +        $lines[]="----";
  +        if (is_string($DBInfo->use_tagging))
  +          $lines[]=$DBInfo->use_tagging;
  +        else
  +          $lines[]="Tags: [[Keywords]]";
  +      }
  +
  +      $twin_mode=$DBInfo->use_twinpages;
  +      if (isset($pi['#twinpages'])) $twin_mode=$pi['#twinpages'];
  +      $twins=$DBInfo->metadb->getTwinPages($this->page->name,$twin_mode);
  +
         if ($twins === true) {
           if ($DBInfo->interwiki['TwinPages']) {
             if ($lines) $lines[]="----";
  
  
  


wkpark      2006/07/11 22:15:54

  Modified:    .        wiki.php
  Log:
  fix for keyword caches
  
  Revision  Changes    Path
  1.310     +3 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.309
  retrieving revision 1.310
  diff -u -r1.309 -r1.310
  --- wiki.php	10 Jul 2006 11:03:15 -0000	1.309
  +++ wiki.php	11 Jul 2006 13:15:54 -0000	1.310
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.309 2006/07/10 11:03:15 wkpark Exp $
  +// $Id: wiki.php,v 1.310 2006/07/11 13:15:54 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.309 $',1,-1);
  +$_revision = substr('$Revision: 1.310 $',1,-1);
   $_release = '1.1.2';
   
   #ob_start("ob_gzhandler");
  @@ -4146,6 +4146,7 @@
           $tcache->mtime($pagename) < $formatter->page->mtime() or
           $_GET['update_keywords']) {
           $keys=explode(',',$formatter->pi['#keywords']);
  +        $keys=array_map('trim',$keys);
           $tcache->update($pagename,serialize($keys));
         }
       }
  
  
  


wkpark      2006/07/12 13:58:46

  Modified:    css      _extra.css _base.css
  Log:
  add tag-* class name for the tagging system
  
  Revision  Changes    Path
  1.6       +18 -0     moniwiki/css/_extra.css
  
  Index: _extra.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_extra.css,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- _extra.css	22 Jun 2006 08:52:26 -0000	1.5
  +++ _extra.css	12 Jul 2006 04:58:46 -0000	1.6
  @@ -31,12 +31,30 @@
     padding: 5px;
   }
   
  +.cloudView {
  +  display:inline;
  +}
  +
  +.cloudView ul{
  +  padding:0px;
  +  margin:0px;
  +  display:inline;
  +}
  +
   .cloudView li{
     font-family:Trebuchet MS,Georgia,Verdana,sans-serif;
     list-style:none;
     white-space: nowrap;
     display:inline;
  +  padding-left:0px;
  +}
  +
  +span.tag-name {
  +}
  +
  +.cloudView li.tag-item {
     padding-left:5px;
  +  font-size:14px;
   }
   
   #wikiBody .cloudView a:link, #wikiBody .cloudView a:visited {
  
  
  
  1.8       +1 -0      moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- _base.css	7 Jul 2006 13:05:19 -0000	1.7
  +++ _base.css	12 Jul 2006 04:58:46 -0000	1.8
  @@ -152,6 +152,7 @@
     border:2px solid #ff0000;
     color:#440000;
     padding:4px;
  +  vertical-align: middle;
   }
   
   pre.errlog {
  
  
  


wkpark      2006/07/12 14:05:55

  Modified:    plugin   Keywords.php
  Log:
  comment debug codes
  
  Revision  Changes    Path
  1.14      +5 -5      moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- Keywords.php	10 Jul 2006 11:00:48 -0000	1.13
  +++ Keywords.php	12 Jul 2006 05:05:55 -0000	1.14
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a 'Keywords' plugin for the MoniWiki
   //
  -// $Id: Keywords.php,v 1.13 2006/07/10 11:00:48 wkpark Exp $
  +// $Id: Keywords.php,v 1.14 2006/07/12 05:05:55 wkpark Exp $
   
   define(LOCAL_KEYWORDS,'LocalKeywords');
   
  @@ -369,18 +369,18 @@
                       if (($nrels=array_diff($rels,$krels))) {
                           $rs=array_unique(array_merge($nrels,$krels));
                           $kc->update($k,serialize($rs));
  -                        print "***** updated $k\n";
  +                        #print "***** updated $k\n";
                       }
                   } else {
                       if (sizeof($rels) > 1 and is_array($rels)) {
                           $kc->update($k,serialize($rels));
  -                        print "***** save $k\n";
  +                        #print "***** save $k\n";
                       }
                   }
               }
           }
  -        print "OK";
  -        return;
  +        #print "OK";
  +        #return;
       }
   
       $formatter->send_header('',$options);
  
  
  


wkpark      2006/07/12 14:46:19

  Modified:    plugin   Keywords.php Tour.php
  Log:
  more fixes
  
  Revision  Changes    Path
  1.15      +4 -6      moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- Keywords.php	12 Jul 2006 05:05:55 -0000	1.14
  +++ Keywords.php	12 Jul 2006 05:46:19 -0000	1.15
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a 'Keywords' plugin for the MoniWiki
   //
  -// $Id: Keywords.php,v 1.14 2006/07/12 05:05:55 wkpark Exp $
  +// $Id: Keywords.php,v 1.15 2006/07/12 05:46:19 wkpark Exp $
   
   define(LOCAL_KEYWORDS,'LocalKeywords');
   
  @@ -260,11 +260,9 @@
       if (!isset($tag_link)) {
           if (!$search) $search='fullsearch&amp;keywords=1';
           if ($options['tour'])
  -            $tag_link=$formatter->link_url('$TAG',
  -                '?action=tour&amp;arena=keylinks');
  -        else 
  -            $tag_link=$formatter->link_url(_rawurlencode($pagename),
  -                '?action='.$search.'&amp;value=$TAG');
  +            $search='tour&amp;arena=keylinks';
  +        $tag_link=$formatter->link_url(_rawurlencode($pagename),
  +            '?action='.$search.'&amp;value=$TAG');
       }
       $out='';
       if ($options['add']) {
  
  
  
  1.9       +33 -9     moniwiki/plugin/Tour.php
  
  Index: Tour.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Tour.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Tour.php	10 Jul 2006 11:00:48 -0000	1.8
  +++ Tour.php	12 Jul 2006 05:46:19 -0000	1.9
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Tour]]
   //
  -// $Id: Tour.php,v 1.8 2006/07/10 11:00:48 wkpark Exp $
  +// $Id: Tour.php,v 1.9 2006/07/12 05:46:19 wkpark Exp $
   
   if (!function_exists('do_dot'))
       if ($pn=getPlugin('dot')) include_once("plugin/$pn.php");
  @@ -16,7 +16,9 @@
       $formatter->send_title(sprintf(_("Tour from %s"),$options['page']),'',
           $options);
   
  -    print macro_Tour($formatter,$options['page'],$options);
  +    if ($options['value']) $value=$options['value'];
  +    else $value=$options['page'];
  +    print macro_Tour($formatter,$value,$options);
       //$args['editable']=1;
       $formatter->send_footer($args,$options);
   }
  @@ -59,6 +61,7 @@
           $query2='?action=fullsearch&amp;keywords=1';
           $head2=_("Keywords");
           if ($DBInfo->hasPage($value)) {
  +            $link=$value;
           } else {
               $link=$formatter->link_to('?action=fullsearch&amp;value='.$value,htmlspecialchars($value));
           }
  @@ -108,14 +111,28 @@
           }
       }
       unset($out[0]);
  -    $wide= $formatter->link_tag($url[$value],
  -        "?action=tour$query&amp;w=".($count+1)."&amp;d=$depth",_("links"));
  -    $deep= $formatter->link_tag($url[$value],
  -        "?action=tour$query&amp;w=$count&amp;d=".($depth+1),_("deeper"));
  +    if ($DBInfo->hasPage($url[$value])) {
  +        $pg=$url[$value];
  +        $extra='';
  +    } else {
  +        $pg=$options['page'];
  +        $extra='&amp;value='.$url[$value];
  +    }
  +    $wide= $formatter->link_tag($pg,
  +       "?action=tour$query$extra&amp;w=".($count+1)."&amp;d=$depth",_("links"));
  +    $deep= $formatter->link_tag($pg,
  +       "?action=tour$query$extra&amp;w=$count&amp;d=".($depth+1),_("deeper"));
       $link='<h3>'.sprintf(_("More %s or more %s"),$wide,$deep).'</h3>';
   
       foreach ($allnode as $node) {
  -        $pages.='<li>'.$formatter->link_tag($url[$node],$query2,
  +        if ($DBInfo->hasPage($url[$node])) {
  +            $pg=$url[$node];
  +            $extra='';
  +        } else {
  +            $pg=$options['page'];
  +            $extra='&amp;value='.$url[$node];
  +        }
  +        $pages.='<li>'.$formatter->link_tag($pg,$query2.$extra,
               htmlspecialchars($node))."</li>\n";
       }
       if ($arena == 'keywords' or $arena == 'keylinks')
  @@ -131,8 +148,15 @@
           asort($ls);
           $temp='';
           foreach ($ls as $leaf) {
  -            $temp.= ' <li>'.$formatter->link_tag($url[$leaf],
  -                "?action=tour$query",$leaf)."</li>\n";
  +            if ($DBInfo->hasPage($url[$leaf])) {
  +                $pg=$url[$leaf];
  +                $extra='';
  +            } else {
  +                $pg=$options['page'];
  +                $extra='&amp;value='.$url[$leaf];
  +            }
  +            $temp.= ' <li>'.$formatter->link_tag($pg,
  +                "?action=tour$query$extra",$leaf)."</li>\n";
           }
           $out[]="<ul class='depth-$dep'>".$temp.'</ul>';
           $dep++;
  
  
  


wkpark      2006/07/12 14:54:39

  Modified:    plugin   Keywords.php
  Log:
  revert some fixes and add a charset info
  
  Revision  Changes    Path
  1.16      +7 -6      moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- Keywords.php	12 Jul 2006 05:46:19 -0000	1.15
  +++ Keywords.php	12 Jul 2006 05:54:39 -0000	1.16
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a 'Keywords' plugin for the MoniWiki
   //
  -// $Id: Keywords.php,v 1.15 2006/07/12 05:46:19 wkpark Exp $
  +// $Id: Keywords.php,v 1.16 2006/07/12 05:54:39 wkpark Exp $
   
   define(LOCAL_KEYWORDS,'LocalKeywords');
   
  @@ -334,7 +334,8 @@
       }
       if ($options['update'] or $options['refresh']) {
           $lk=$DBInfo->getPage(LOCAL_KEYWORDS);
  -        $formatter->send_header("Content-type: text/plain");
  +        $formatter->send_header("Content-type: text/plain;charset=",
  +            $DBInfo->charset);
           if (!$lk->exists()) {
               print sprintf(_("%s is not found."),LOCAL_KEYWORDS);
               return;
  @@ -367,18 +368,18 @@
                       if (($nrels=array_diff($rels,$krels))) {
                           $rs=array_unique(array_merge($nrels,$krels));
                           $kc->update($k,serialize($rs));
  -                        #print "***** updated $k\n";
  +                        print "***** updated $k\n";
                       }
                   } else {
                       if (sizeof($rels) > 1 and is_array($rels)) {
                           $kc->update($k,serialize($rels));
  -                        #print "***** save $k\n";
  +                        print "***** save $k\n";
                       }
                   }
               }
           }
  -        #print "OK";
  -        #return;
  +        print "OK";
  +        return;
       }
   
       $formatter->send_header('',$options);
  
  
  


wkpark      2006/07/12 16:15:06

  Modified:    plugin   Keywords.php
  Log:
  action=keywords&all=1 support added
  
  Revision  Changes    Path
  1.17      +33 -10    moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- Keywords.php	12 Jul 2006 05:54:39 -0000	1.16
  +++ Keywords.php	12 Jul 2006 07:15:06 -0000	1.17
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a 'Keywords' plugin for the MoniWiki
   //
  -// $Id: Keywords.php,v 1.16 2006/07/12 05:54:39 wkpark Exp $
  +// $Id: Keywords.php,v 1.17 2006/07/12 07:15:06 wkpark Exp $
   
   define(LOCAL_KEYWORDS,'LocalKeywords');
   
  @@ -13,7 +13,7 @@
   define(MIN_FONT_SZ,10);
       $supported_lang=array('ko');
   
  -    $limit=$options['limit'] ? $options['limit']:40;
  +    $limit=isset($options['limit']) ? $options['limit']:40;
       $opts=explode(',',$value);
       foreach ($opts as $opt) {
           $opt=trim($opt);
  @@ -332,10 +332,14 @@
           do_invalid($formatter,$options);
           return;
       }
  +
       if ($options['update'] or $options['refresh']) {
           $lk=$DBInfo->getPage(LOCAL_KEYWORDS);
  -        $formatter->send_header("Content-type: text/plain;charset=",
  -            $DBInfo->charset);
  +        $force_charset='';
  +        if ($DBInfo->force_charset)
  +            $force_charset = '; charset='.$DBInfo->charset;
  +        $formatter->send_header("Content-type: text/plain".
  +            $force_charset);
           if (!$lk->exists()) {
               print sprintf(_("%s is not found."),LOCAL_KEYWORDS);
               return;
  @@ -345,7 +349,8 @@
           # update keylinks of LocalKeywords
           $kc=new Cache_text('keylinks');
           $lines=explode("\n",$raw);
  -        $formatter->send_header("Content-type: text/plain");
  +
  +        $all_keys=array();
           foreach ($lines as $l) {
               $l=trim($l);
               if ($l[0] == '#' or !$l) continue;
  @@ -361,6 +366,7 @@
                   'return preg_replace("/^([\"\'])(.*)\\\\1$/","\\\\2",$a);'),
                   $ws); // delete ",'
               $ws=array_unique($ws);
  +            $all_keys=array_merge($all_keys,$ws);
               foreach ($ws as $k) {
                   $rels=array_diff($ws,array($k));
                   $krels=unserialize($kc->fetch($k));
  @@ -378,6 +384,16 @@
                   }
               }
           }
  +        #print_r(array_unique($all_keys));
  +        $handle= opendir("$DBInfo->cache_dir/keylinks");
  +        while ($fcache= readdir($handle)) {
  +            if ($fcache[0] == '.') continue;
  +            $pgname=$DBInfo->keyToPagename($fcache);
  +            if (!in_array($fcache,$all_keys))
  +                print 'X "'.$pgname."\"\n";
  +            else
  +                print 'O "'.$pgname."\"\n";
  +        }
           print "OK";
           return;
       }
  @@ -541,12 +557,19 @@
           $formatter->send_footer($args,$options);
           return;
       }
  -    
  -    $formatter->send_title(sprintf(_("Select keywords for %s"),
  -        $options['page']),'', $options);
   
  -    $options['merge']=1;
  -    $options['add']=1;
  +    if ($options['all']) {
  +        $formatter->send_title(sprintf(_("Select keywords for %s"),
  +            $options['page']),'', $options);
  +        if (!$options['limit'])
  +            $options['limit']=0;
  +    } else {
  +        $formatter->send_title(sprintf(_("Select keywords for %s"),
  +            $options['page']),'', $options);
  +
  +        $options['merge']=1;
  +        $options['add']=1;
  +    }
   
       print macro_KeyWords($formatter,$options['page'],$options);
       //$args['editable']=1;
  
  
  


wkpark      2006/07/12 16:16:13

  Modified:    .        wiki.php
  Log:
  remove keywords correctly
  add http://?action=myaction syntax
  
  Revision  Changes    Path
  1.311     +10 -4     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.310
  retrieving revision 1.311
  diff -u -r1.310 -r1.311
  --- wiki.php	11 Jul 2006 13:15:54 -0000	1.310
  +++ wiki.php	12 Jul 2006 07:16:13 -0000	1.311
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.310 2006/07/11 13:15:54 wkpark Exp $
  +// $Id: wiki.php,v 1.311 2006/07/12 07:16:13 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.310 $',1,-1);
  +$_revision = substr('$Revision: 1.311 $',1,-1);
   $_release = '1.1.2';
   
   #ob_start("ob_gzhandler");
  @@ -1939,6 +1939,10 @@
             if ($this->external_on)
               $external_link='<span class="externalLink">('.$url.')</span>';
           }
  +        if (substr($url,0,7)=='http://' and $url[7]=='?') {
  +          $link=substr($url,7);
  +          return "<a href='$link'>$text</a>";
  +        }
           $icon=strtok($url,':');
           return "<img class='url' alt='[$icon]' src='".$this->imgs_dir_url."$icon.png' />". "<a class='externalLink' $attr $this->external_target href='$link'>$text</a>".$external_icon.$external_link;
         } # have no space
  @@ -4140,9 +4144,11 @@
         if (!$tcache->exists($pagename) or $_GET['update_title'])
           $tcache->update($pagename,$formatter->pi['#title']);
       }
  -    if ($formatter->pi['#keywords'] and $DBInfo->use_keywords) {
  +    if ($DBInfo->use_keywords or $_GET['update_keywords']) {
         $tcache=new Cache_text('keywords');
  -      if (!$tcache->exists($pagename) or
  +      if (!$formatter->pi['#keywords']) {
  +        $tcache->remove($pagename);
  +      } else if (!$tcache->exists($pagename) or
           $tcache->mtime($pagename) < $formatter->page->mtime() or
           $_GET['update_keywords']) {
           $keys=explode(',',$formatter->pi['#keywords']);
  
  
  


wkpark      2006/07/12 21:04:10

  Modified:    plugin   Keywords.php
  Log:
  fixed rand args
  
  Revision  Changes    Path
  1.18      +2 -2      moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- Keywords.php	12 Jul 2006 07:15:06 -0000	1.17
  +++ Keywords.php	12 Jul 2006 12:04:10 -0000	1.18
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a 'Keywords' plugin for the MoniWiki
   //
  -// $Id: Keywords.php,v 1.17 2006/07/12 07:15:06 wkpark Exp $
  +// $Id: Keywords.php,v 1.18 2006/07/12 12:04:10 wkpark Exp $
   
   define(LOCAL_KEYWORDS,'LocalKeywords');
   
  @@ -83,7 +83,7 @@
   
           if ($options['random']) {
               $rws=array();
  -            $selected=array_rand($words,$options['random']);
  +            $selected=array_rand($words,min($options['random'],count($words));
               foreach($selected as $k) {
                   $rws[$k]=$words[$k];
               }
  
  
  


wkpark      2006/07/12 21:06:35

  Modified:    plugin   Keywords.php
  Log:
  fix last chage
  
  Revision  Changes    Path
  1.19      +2 -2      moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- Keywords.php	12 Jul 2006 12:04:10 -0000	1.18
  +++ Keywords.php	12 Jul 2006 12:06:35 -0000	1.19
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a 'Keywords' plugin for the MoniWiki
   //
  -// $Id: Keywords.php,v 1.18 2006/07/12 12:04:10 wkpark Exp $
  +// $Id: Keywords.php,v 1.19 2006/07/12 12:06:35 wkpark Exp $
   
   define(LOCAL_KEYWORDS,'LocalKeywords');
   
  @@ -83,7 +83,7 @@
   
           if ($options['random']) {
               $rws=array();
  -            $selected=array_rand($words,min($options['random'],count($words));
  +            $selected=array_rand($words,min($options['random'],count($words)));
               foreach($selected as $k) {
                   $rws[$k]=$words[$k];
               }
  
  
  


wkpark      2006/07/13 15:24:33

  Modified:    plugin   ticket.php
  Log:
  add a new distort effect and enhancement
  
  Revision  Changes    Path
  1.4       +118 -20   moniwiki/plugin/ticket.php
  
  Index: ticket.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/ticket.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ticket.php	19 Jan 2006 08:29:36 -0000	1.3
  +++ ticket.php	13 Jul 2006 06:24:33 -0000	1.4
  @@ -1,8 +1,102 @@
   <?php
  -// Copyright 2005 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2005-2006 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
  -// a ticket plugin for the MoniWiki
  -// $Id: ticket.php,v 1.3 2006/01/19 08:29:36 wkpark Exp $
  +// a simple CAPTCHA ticket plugin for the MoniWiki
  +//
  +// $Id: ticket.php,v 1.4 2006/07/13 06:24:33 wkpark Exp $
  +
  +function _effect_distort($image,$factor=40,$grad=1) {
  +    // from http://www.codeproject.com/aspnet/CaptchaNET_2.asp Farshid Hosseini
  +    $width = imagesx($image);
  +    $height = imagesy($image);
  +
  +    $fact=$factor/25;
  +    $disx=rand(4,10)*(rand(0,1) ? 1:-1)*$fact;
  +    $disy=rand(4,12)*(rand(0,1) ? 1:-1)*$fact;
  +    $yf=rand(30,45)*$fact;
  +    $xf=rand(80,95)*$fact;
  +
  +    $canvas=imagecreate($width,$height);
  +    $new = imagecolorallocate($canvas, $r1, $g1, $b1);
  +    imagepalettecopy($canvas,$image);
  +
  +    for ($y = 0; $y < $height; $y++) {
  +        for ($x = 0; $x < $width; $x++) {
  +            // Adds a simple wave
  +            $newX = 
  +              ($x + ($disx * Sin(3.141592 * $y / $xf)));
  +
  +            $t=($x - $width/2) / $yf * 2.4;
  +            $t=$t*$t;
  +            $newY = 
  +              #($y + ($distort * sin(1.5*3.141592 * $x / $yf)));
  +              ($y + ($disy * exp(-$t)*sin(3.141592 * $x / $yf)));
  +            $col = imagecolorat($image, $newX, $newY);
  +
  +            if ($newY >$height or $newY < 0) $newY=0;
  +            if ($newX < 0) $newX=0;
  +            else if ($newX > $width) $newX=$width;
  +
  +            if ($grad) { # with gradient effect based on above functions
  +                $i = imagecolorsforindex($image, $col);
  +                $r = $i['red'];
  +                $g = $i['green'];
  +                $b = $i['blue'];
  +
  +                $gratio=120;
  +                $bratio=100;
  +                $pratio=125;
  +            
  +                $red = (int)($r);
  +                $green = (int)($newX/$width*$gratio+$g/255*$pratio);
  +                $blue = (int)($newY/$height*$bgatio+$b/255*$pratio);
  +                $new = imagecolorallocate($canvas, $red, $green, $blue);
  +                $new = imagecolorclosest($canvas, $red, $green, $blue);
  +                imageSetPixel($canvas,$x,$y,$new);
  +            } else {
  +                imageSetPixel($canvas,$x,$y,$col);
  +            }
  +        }
  +    }
  +    imageCopy($image,$canvas,0,0,0,0,$width,$height);
  +}
  +
  +function _effect_wave($image) {
  +    // from http://kr.php.net/manual/en/function.imagecopy.php#65555
  +    // and some modification
  +    $width = imagesx($image);
  +    $height = imagesy($image);
  +    $x=3;
  +    $y=-5;
  +
  +    $ext=rand(4,7);
  +    $se=rand(10,15);
  +
  +    $canvas=imagecreate($width,$height+5);
  +    #imageCopy($canvas,$image,0,0,0,0,$width,$height);
  +
  +    for ($i=0;$i<$width;$i+=2){
  +        imagecopy($canvas,$image,
  +            $x+$i-2,$y+(-sin($i/$se+0.5)+cos($i/$se*0.8))*$ext,
  +            $x+$i,$y,
  +            2,$height);
  +    }
  +
  +    $ext=rand(10,15);
  +    $se=rand(15,17);
  +
  +    $canvas2=imagecreate($width,$height+5);
  +
  +    for ($i=0;$i<$height;$i+=2){
  +        imagecopy($canvas2,$canvas,
  +            $x+(sin($i/$se+0.5))*$ext,$y+$i+2,
  +            $x,$y+$i,
  +            $width,2);
  +    }
  +
  +    imageCopy($image,$canvas2,0,0,0,0,$width,$height+5);
  +}
  +
   
   function _effect_blur($image,$color,$dx=1,$dy=0) {
   // please see http://www.hudzilla.org/phpbook/read.php/11_2_23
  @@ -67,10 +161,13 @@
   function do_ticket($formatter,$options) {
       global $DBInfo;
   
  +    $word_length=4;
  +
       if ($options['__seed']) {
           // check seed
           // check referer
  -        $passwd=getTicket($options['__seed'],$_SERVER['REMOTE_ADDR'],4);
  +        $passwd=getTicket($options['__seed'],$_SERVER['REMOTE_ADDR'],
  +            $word_length);
       } else {
           $options['title']=_("Invalid use of ticket");
           do_invalid($formatter,$options);
  @@ -97,10 +194,14 @@
           $angle=0;
           //$size = Imagettfbbox($pointsize, 0, $FONT, $passwd);
           // XXX segfault :(
  +
  +        $margin=$pointsize/2;
           $size=array(0,0,0,20,65);
           //$size=array(0,0,0,20,50);
  -        $w=$size[4]+20; # margin=20 ?
  -        $h=$size[3]- $size[5]+10; # margin= 10 ?
  +        //$w=$size[4]+20; # margin=20 ?
  +        $w=$pointsize*$word_length + $margin;
  +        $h=$pointsize+$margin;
  +        if ($DBInfo->use_ticket & 7) $h+=$pointsize/3;
       } else {
           $FONT=5; // giant
           if ($DBInfo->ticket_gdfont)
  @@ -110,7 +211,6 @@
       }
   
       Header("Content-type: image/png");
  -    $im= ImageCreate(($size[4]+20), ($size[5]+10));
       $im= ImageCreate($w,$h);
       $color=array();
       $color[]= ImageColorAllocate($im, 240, 240, 240); // background
  @@ -120,26 +220,24 @@
       for ($i=0;$i<18;$i++)
           $color[]= ImageColorAllocate($im,rand(100,200),rand(100,200),rand(100,200));
       if ($use_ttf) {
  -        ImageTtfText($im,$pointsize, $angle, 6, 25, $color[$pen], $FONT,
  +        $sx=$margin;
  +        $sy=$margin/2+$pointsize;
  +        ImageTtfText($im,$pointsize, $angle, $sx, $sy+1, $color[$pen], $FONT,
               $passwd);
  -        ImageTtfText($im,$pointsize, $angle, 7, 24, $color[$pen], $FONT,
  +        ImageTtfText($im,$pointsize, $angle, $sx+1, $sy, $color[$pen], $FONT,
               $passwd);
       } else {
           ImageString($im,$FONT, 5, 3, $passwd, $color[$pen]);
           ImageString($im,$FONT, 4, 4, $passwd, $color[$pen]);
       }
   
  -    switch ($DBInfo->use_ticket) {
  -        case 1:
  -            _effect_blur($im,$color,1,1);
  -            break;
  -        case 3:
  -            _effect_blur($im,$color,1,1);
  -        case 2:
  -        default:
  -            _effect_grid($im,$color,$pen);
  -            break;
  -    }
  +    if ($DBInfo->use_ticket & 8) $grad=1;
  +    if ($DBInfo->use_ticket & 4)
  +        _effect_distort($im,$pointsize,$grad);
  +    if ($DBInfo->use_ticket & 1)
  +        _effect_blur($im,$color,1,1);
  +    if ($DBInfo->use_ticket & 2)
  +        _effect_grid($im,$color,$pen);
   
       ImagePng($im);
       ImageDestroy($im);
  
  
  


wkpark      2006/07/13 22:15:29

  Modified:    theme/azblue/css default.css
  Log:
  update
  
  Revision  Changes    Path
  1.5       +4 -1      moniwiki/theme/azblue/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/azblue/css/default.css,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- default.css	5 Jul 2006 23:21:51 -0000	1.4
  +++ default.css	13 Jul 2006 13:15:29 -0000	1.5
  @@ -256,7 +256,10 @@
     background-color: #E8E8E8;
     border-color:#ee0000;
     color:#440000;
  -  padding:3px;
  +  padding:5px;
  +  padding-left:55px;
  +  background: #E8E8E8 url(../imgs/warn.png) 10px 10px no-repeat;
  +  min-height: 40px;
   }
   
   .highlight {
  
  
  


wkpark      2006/07/13 22:15:29

  Added:       theme/azblue/imgs warn.png
  Log:
  update
  
  Revision  Changes    Path
  1.1                  moniwiki/theme/azblue/imgs/warn.png
  
  	<<Binary file>>
  
  


wkpark      2006/07/13 23:46:49

  Modified:    plugin/processor dot.php
  Log:
  use errlog()
  
  Revision  Changes    Path
  1.5       +11 -4     moniwiki/plugin/processor/dot.php
  
  Index: dot.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/dot.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- dot.php	7 Jul 2006 12:59:57 -0000	1.4
  +++ dot.php	13 Jul 2006 14:46:49 -0000	1.5
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a dot plugin for the MoniWiki
   //
  -// $Id: dot.php,v 1.4 2006/07/07 12:59:57 wkpark Exp $
  +// $Id: dot.php,v 1.5 2006/07/13 14:46:49 wkpark Exp $
   // vim:et:ts=2:
   
   function processor_dot($formatter,$value) {
  @@ -30,14 +30,21 @@
     }{
   
       $cmd="$dotcmd -Tpng $webdot_dir/$md5sum.dot -o $webdot_dir/$md5sum.png";
  -    $fp=popen($cmd.$formatter->NULL,'r');
  +
  +    $formatter->errlog('Dot');
  +    $fp=popen($cmd.$formatter->LOG,'r');
       pclose($fp);
  +    $err=$formatter->get_errlog();
  +    $formatter->errlog('Dot');
       $cmd="$dotcmd -Timap $webdot_dir/$md5sum.dot -o $webdot_dir/$md5sum.map";
  -    $fp=popen($cmd.$formatter->NULL,'r');
  +    $fp=popen($cmd.$formatter->LOG,'r');
       pclose($fp);
  +    $err.=$formatter->get_errlog();
  +    if ($err)
  +        $err ="<pre class='errlog'>$err</pre>\n";
     }
   
  -  return "<a href='$DBInfo->url_prefix/$webdot_dir/$md5sum.map'><img border='0' src='$DBInfo->url_prefix/$webdot_dir/$md5sum.png' ismap /></a>\n";
  +  return $err."<a href='$DBInfo->url_prefix/$webdot_dir/$md5sum.map'><img border='0' src='$DBInfo->url_prefix/$webdot_dir/$md5sum.png' ismap /></a>\n";
   }
   
   ?>
  
  
  


wkpark      2006/07/13 23:55:33

  Modified:    plugin   dot.php
  Log:
  use $dot_fontsize option
  
  Revision  Changes    Path
  1.10      +3 -1      moniwiki/plugin/dot.php
  
  Index: dot.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/dot.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- dot.php	25 Jun 2006 07:40:03 -0000	1.9
  +++ dot.php	13 Jul 2006 14:55:33 -0000	1.10
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // dot action plugin for the MoniWiki
   //
  -// $Id: dot.php,v 1.9 2006/06/25 07:40:03 wkpark Exp $
  +// $Id: dot.php,v 1.10 2006/07/13 14:55:33 wkpark Exp $
   
   define(DEPTH,3);
   define(LEAFCOUNT,2);
  @@ -70,6 +70,8 @@
       $fontsize=$options['f'];
     else $fontsize=FONTSIZE;
   
  +  $fontsize= $DBInfo->dot_fontsize ? $DBInfo->dot_fontsize: $fontsize;
  +
     $color=array();
     $tree=new LinkTree($options['arena']);
     $tree->makeTree($options['page'],$node,$color,$depth,$count);
  
  
  


wkpark      2006/07/13 23:58:55

  Modified:    plugin/processor dot.php
  Log:
  use $refresh
  
  Revision  Changes    Path
  1.6       +2 -3      moniwiki/plugin/processor/dot.php
  
  Index: dot.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/dot.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- dot.php	13 Jul 2006 14:46:49 -0000	1.5
  +++ dot.php	13 Jul 2006 14:58:55 -0000	1.6
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a dot plugin for the MoniWiki
   //
  -// $Id: dot.php,v 1.5 2006/07/13 14:46:49 wkpark Exp $
  +// $Id: dot.php,v 1.6 2006/07/13 14:58:55 wkpark Exp $
   // vim:et:ts=2:
   
   function processor_dot($formatter,$value) {
  @@ -23,11 +23,10 @@
     $dot=$value;
   
     $md5sum=md5($dot);
  -  if (!file_exists($webdot_dir."/$md5sum.dot")) {
  +  if ($formatter->refresh or !file_exists($webdot_dir."/$md5sum.dot")) {
       $fp=fopen($webdot_dir."/$md5sum.dot","w");
       fwrite($fp,$dot);
       fclose($fp);
  -  }{
   
       $cmd="$dotcmd -Tpng $webdot_dir/$md5sum.dot -o $webdot_dir/$md5sum.png";
   
  
  
  


wkpark      2006/07/14 00:21:02

  Modified:    theme/azblue/css default.css
  Log:
  add errlog class
  
  Revision  Changes    Path
  1.6       +6 -0      moniwiki/theme/azblue/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/azblue/css/default.css,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- default.css	13 Jul 2006 13:15:29 -0000	1.5
  +++ default.css	13 Jul 2006 15:21:02 -0000	1.6
  @@ -262,6 +262,12 @@
     min-height: 40px;
   }
   
  +pre.errlog {
  +  padding-left:55px;
  +  background: #E8E8E8 url(../imgs/error.png) 10px 10px no-repeat;
  +  min-height: 40px;
  +}
  +
   .highlight {
     background-color:#FFFF40;
   }
  
  
  


wkpark      2006/07/14 00:21:03

  Added:       theme/azblue/imgs error.png
  Log:
  add errlog class
  
  Revision  Changes    Path
  1.1                  moniwiki/theme/azblue/imgs/error.png
  
  	<<Binary file>>
  
  


wkpark      2006/07/14 13:44:20

  Modified:    plugin   Keywords.php
  Log:
  revert freq related option
  
  Revision  Changes    Path
  1.20      +3 -3      moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- Keywords.php	12 Jul 2006 12:06:35 -0000	1.19
  +++ Keywords.php	14 Jul 2006 04:44:20 -0000	1.20
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a 'Keywords' plugin for the MoniWiki
   //
  -// $Id: Keywords.php,v 1.19 2006/07/12 12:06:35 wkpark Exp $
  +// $Id: Keywords.php,v 1.20 2006/07/14 04:44:20 wkpark Exp $
   
   define(LOCAL_KEYWORDS,'LocalKeywords');
   
  @@ -89,7 +89,7 @@
               }
               $words=&$rws;
           }
  -        if ($sort=='freq') ksort($words);
  +        if ($sort!='freq') ksort($words);
           #sort($words);
           #print $sort." $value";
           #print "<pre>";
  @@ -254,7 +254,7 @@
       }
       endif;
   
  -    if ($sort=='freq') ksort($words);
  +    if ($sort!='freq') ksort($words);
   
       $link=$formatter->link_url(_rawurlencode($pagename),'');
       if (!isset($tag_link)) {
  
  
  


wkpark      2006/07/14 13:46:01

  Modified:    plugin   VisualTour.php dot.php
  Log:
  macro_VisualTour added. suggested by kz
  fixed dot action. use errlog()
  
  Revision  Changes    Path
  1.6       +55 -14    moniwiki/plugin/VisualTour.php
  
  Index: VisualTour.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/VisualTour.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- VisualTour.php	7 Jul 2006 12:59:57 -0000	1.5
  +++ VisualTour.php	14 Jul 2006 04:46:01 -0000	1.6
  @@ -3,10 +3,9 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a VisualTour plugin for the MoniWiki
   //
  -// $Id: VisualTour.php,v 1.5 2006/07/07 12:59:57 wkpark Exp $
  -// vim:et:ts=2:
  +// $Id: VisualTour.php,v 1.6 2006/07/14 04:46:01 wkpark Exp $
   
  -function do_VisualTour($formatter,$options) {
  +function macro_VisualTour($formatter,$value,$options=array()) {
     global $DBInfo;
   
     putenv('GDFONTPATH='.getcwd().'/data');
  @@ -23,36 +22,77 @@
     if (!$formatter->page->exists())
       return "";
   
  +  $args=explode(',',$value);
  +  $extra='';
  +  foreach ($args as $arg) {
  +    $arg=trim($arg);
  +    if (($p=strpos($arg,'='))===false) {
  +      if ($arg == 'show') $extra.='&t=show';
  +      else if (is_int($arg)) $w=$arg;
  +      else if ($DBInfo->hasPage($arg)) $pgname=$arg;
  +    } else {
  +      $k=strtok($arg,'=');
  +      $v=strtok('');
  +      if ($k == 'width' or $k =='w') $w=(int)$v;
  +      else if ($k == 'depth' or $k =='d') $d=(int)$v;
  +      else if ($k == 'arena' or $k =='a') $extra.='&arena='.$v;
  +    }
  +  }
  +
     if ($options['w'] and $options['w'] < 6) $w=$options['w'];
  -  else $w=2;
  +  else $w=$w?$w:2;
     if ($options['d'] and $options['d'] < 6) $d=$options['d'];
  -  else $d=3;
  +  else $d=$d?$d:3;
   
  -  if ($options['f']) $extra="&f=".$options['f'];
  +  if ($options['f']) $extra.="&f=".$options['f'];
  +  if ($options['arena']) $extra.="&arena=".$options['arena'];
   
  -  $url=qualifiedUrl($formatter->link_url($formatter->page->urlname,"?action=dot&w=$w&d=$d$extra"));
  +  if ($pgname)
  +    $urlname=_urlencode($pgname);
  +  else {
  +    $urlname=$formatter->page->urlname;
  +    $pgname=$formatter->page->name;
  +  }
  +
  +  $url=qualifiedUrl($formatter->link_url($urlname,"?action=dot&w=$w&d=$d$extra"));
   
     $fp=fopen($url,"r");
     $dot="";
     while ($data= fread($fp, 4096)) $dot.=$data;
     fclose($fp);
   
  -  $md5sum=$DBInfo->pageToKeyname($options['page']).".".md5($dot);
  -  if (!file_exists($webdot_dir."/$md5sum.dot")) {
  +  $md5sum=$DBInfo->pageToKeyname($pgname).".".md5($dot);
  +  if ($formatter->refresh or !file_exists($webdot_dir."/$md5sum.dot")) {
       $fp=fopen($webdot_dir."/$md5sum.dot","w");
       fwrite($fp,$dot);
       fclose($fp);
  -  }{
  +
       $cmd="$dotcmd -Tpng $webdot_dir/$md5sum.dot -o $webdot_dir/$md5sum.png";
  -    $fp=popen($cmd.$formatter->NULL,'r');
  +    $formatter->errlog('Dot');
  +    $fp=popen($cmd.$formatter->LOG,'r');
       pclose($fp);
  +    $err=$formatter->get_errlog();
       $cmd="$dotcmd -Timap $webdot_dir/$md5sum.dot -o $webdot_dir/$md5sum.map";
  -    $fp=popen($cmd.$formatter->NULL,'r');
  +    $formatter->errlog('Dot');
  +    $fp=popen($cmd.$formatter->LOG,'r');
       pclose($fp);
  +    $err.=$formatter->get_errlog();
  +    if ($err)
  +        $err ="<pre class='errlog'>$err</pre>\n";
  +
     }
   
  -  $selfurl=$formatter->link_to();
  +  return $err."<span class='VisualTour'><a href='$DBInfo->url_prefix/$webdot_dir/$md5sum.map'><img src='$DBInfo->url_prefix/$webdot_dir/$md5sum.png' alt='VisualTour' ismap></a></span>\n";
  +}
  +
  +function do_VisualTour($formatter,$options) {
     $formatter->send_header();
  +  $selfurl=$formatter->link_to();
  +  if ($options['w'] and $options['w'] < 6) $w=$options['w'];
  +  else $w=2;
  +  if ($options['d'] and $options['d'] < 6) $d=$options['d'];
  +  else $d=3;
  +
     print "<h2 style='font-family:Tahoma,Sans-serif;'>VisualTour on $selfurl</h2>";
   
     print $formatter->link_to("?action=visualtour",_("Normal"));
  @@ -62,9 +102,10 @@
     print $formatter->link_to("?action=visualtour&amp;w=$w&amp;d=".($d+1),_("Deeper"));
     print "<br />";
   
  -  print "<a href='$DBInfo->url_prefix/$webdot_dir/$md5sum.map'><img src='$DBInfo->url_prefix/$webdot_dir/$md5sum.png' alt='VisualTour' ismap></a>\n";
  +  print macro_VisualTour($formatter,'',$options);
   
     return;
   }
   
  +// vim:et:sts=2:
   ?>
  
  
  
  1.11      +21 -7     moniwiki/plugin/dot.php
  
  Index: dot.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/dot.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- dot.php	13 Jul 2006 14:55:33 -0000	1.10
  +++ dot.php	14 Jul 2006 04:46:01 -0000	1.11
  @@ -3,11 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // dot action plugin for the MoniWiki
   //
  -// $Id: dot.php,v 1.10 2006/07/13 14:55:33 wkpark Exp $
  +// $Id: dot.php,v 1.11 2006/07/14 04:46:01 wkpark Exp $
   
   define(DEPTH,3);
   define(LEAFCOUNT,2);
   define(FONTSIZE,8);
  +define(FONTNAME,'WEBDOTFONT');
   
   class LinkTree {
     var $cache=null;
  @@ -31,11 +32,14 @@
               # XXX 
               $nodelink[$page]=sizeof($leafs);
             } else
  -          $nodelink[$page]=1;
  +            $nodelink[$page]=1;
           } else $nodelink[$page]=1;
         }
       }
  -    if (sizeof($nodelink) > $count) arsort($nodelink);
  +    if (sizeof($nodelink) > $count) {
  +      arsort($nodelink);
  +      $nodelink=array_slice($nodelink,0,$count*2);
  +    }
       if ($nodelink) $node[$pagename]=array_keys($nodelink);
     }
   
  @@ -71,32 +75,39 @@
     else $fontsize=FONTSIZE;
   
     $fontsize= $DBInfo->dot_fontsize ? $DBInfo->dot_fontsize: $fontsize;
  +  $fontname= $DBInfo->dot_fontname ? $DBInfo->dot_fontname: FONTNAME;
   
     $color=array();
     $tree=new LinkTree($options['arena']);
  -  $tree->makeTree($options['page'],$node,$color,$depth,$count);
  +  $tree->makeTree($options['page'],$node,$color,$depth,$count*2);
     if (!$node) $node=array($options['page']=>array());
     #print_r($color);
     foreach ($color as $key=>$val) $color[$key]=$depth-$val;
   
     $color[$options['page']]=10;
   
  +  $myaction='visualtour';
  +  if (in_array($options['t'],array('visualtour','show')))
  +    $myaction=$options['t'];
  +
     header("Content-Type: text/plain");
     #print_r($color);
     #print_r(array_keys($node));
     $visualtour=$formatter->link_url("VisualTour");
  -  $pageurl=qualifiedUrl($formatter->link_url("\\N","?action=visualtour"));
  +  $pageurl=qualifiedUrl($formatter->link_url("\\N","?action=$myaction"));
   
     $colref=array('gray71',
                   'olivedrab1','olivedrab2','olivedrab3',
                   '"#A4DDF4"','"#83D0ED"','"#63C0E3"',
                   'gray53', 'gray40','gray30','yellow');
     $colidx=0;
  -  $out=<<<HEAD
  +  $dot_head=<<<HEAD
   digraph G {
  +  nodesep="0.05"
  +  ratio="compress"
     URL="$visualtour"
     node [URL="$pageurl", 
  -fontcolor=black, fontname=WEBDOTFONT, fontsize=$fontsize]\n
  +fontcolor=black, fontname=$fontname, fontsize=$fontsize]\n
   HEAD;
   
     $allnode=array_keys($node);
  @@ -109,6 +120,7 @@
       #print $leafname."\n";
       #print_r($node[$leafname]);
       $selected=array_intersect($node[$leafname],$allnode);
  +
       foreach ($selected as $leaf) {
         if (!$leafs[($urlname=_rawurlencode($leaf))]) {
           $leafs[$leaf]=$urlname;
  @@ -120,6 +132,8 @@
     }
     $out.= "};\n";
   
  +  $out=$dot_head.$out;
  +
     if (strtoupper($DBInfo->charset) != 'UTF-8') {
       $new=iconv($DBInfo->charset,'UTF-8',$out);
       if ($new) print $new;
  
  
  


wkpark      2006/07/14 13:48:01

  Modified:    .        wiki.php
  Log:
  change $title to $msgtitle and it's behavior. suggested by kz
  
  Revision  Changes    Path
  1.312     +11 -12    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.311
  retrieving revision 1.312
  diff -u -r1.311 -r1.312
  --- wiki.php	12 Jul 2006 07:16:13 -0000	1.311
  +++ wiki.php	14 Jul 2006 04:48:01 -0000	1.312
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.311 2006/07/12 07:16:13 wkpark Exp $
  +// $Id: wiki.php,v 1.312 2006/07/14 04:48:01 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.311 $',1,-1);
  +$_revision = substr('$Revision: 1.312 $',1,-1);
   $_release = '1.1.2';
   
   #ob_start("ob_gzhandler");
  @@ -2356,6 +2356,7 @@
         include_once("plugin/$plugin.php");
         if (!function_exists ("macro_".$plugin)) return '[['.$macro.']]';
       }
  +
       $ret=call_user_func_array("macro_$plugin",array(&$this,$args,$options));
       return $bra.$ret.$ket;
     }
  @@ -3487,7 +3488,7 @@
       #include "prof_results.php";
     }
   
  -  function send_title($title="", $link="", $options="") {
  +  function send_title($msgtitle="", $link="", $options="") {
       // Generate and output the top part of the HTML page.
       global $DBInfo;
   
  @@ -3508,12 +3509,9 @@
         $upper_icon=$this->link_tag($upper,'',$this->icon['main'])." ";
       }
   
  -    if (!$title) {
  -      $title=htmlspecialchars($this->pi['#title']);
  -      if (!$title) $title=$options['title'];
  -    } else {
  -      $title=htmlspecialchars($title);
  -    }
  +    $title=htmlspecialchars($this->pi['#title']);
  +    if (!$title) $title=$options['title'];
  +    $msgtitle=htmlspecialchars($msgtitle);
       if (!$title) {
         if ($group) { # for UserNameSpace
           $title=$mypgname;
  @@ -3537,10 +3535,11 @@
       $goto_form=$DBInfo->goto_form ?
         $DBInfo->goto_form : goto_form($action,$DBInfo->goto_type);
   
  -    if ($options['msg']) {
  +    if ($options['msg'] or $msgtitle) {
  +      $mtitle=$msgtitle ? "<h3>".$msgtitle."</h3>\n":"";
         $msg=<<<MSG
   <div class="message">
  -$options[msg]
  +$mtitle$options[msg]
   </div>
   MSG;
       }
  @@ -4082,7 +4081,7 @@
   
         $twins=$DBInfo->metadb->getTwinPages($page->name,2);
         if ($twins) {
  -        $formatter->send_title($page->name,"",$options);
  +        $formatter->send_title('','',$options);
           $twins="\n".join("\n",$twins);
           $formatter->send_page(_("See [TwinPages]: ").$twins);
           echo "<br />".
  
  
  


wkpark      2006/07/14 19:05:44

  Modified:    .        wiki.php
  Log:
  set $msgtitle properly
  
  Revision  Changes    Path
  1.313     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.312
  retrieving revision 1.313
  diff -u -r1.312 -r1.313
  --- wiki.php	14 Jul 2006 04:48:01 -0000	1.312
  +++ wiki.php	14 Jul 2006 10:05:44 -0000	1.313
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.312 2006/07/14 04:48:01 wkpark Exp $
  +// $Id: wiki.php,v 1.313 2006/07/14 10:05:44 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.312 $',1,-1);
  +$_revision = substr('$Revision: 1.313 $',1,-1);
   $_release = '1.1.2';
   
   #ob_start("ob_gzhandler");
  @@ -3510,8 +3510,8 @@
       }
   
       $title=htmlspecialchars($this->pi['#title']);
  -    if (!$title) $title=$options['title'];
       $msgtitle=htmlspecialchars($msgtitle);
  +    if (!$msgtitle) $msgtitle=$options['title'];
       if (!$title) {
         if ($group) { # for UserNameSpace
           $title=$mypgname;
  
  
  


wkpark      2006/07/14 19:06:13

  Modified:    .        wikilib.php
  Log:
  fixed "%" related bug with pagenames
  
  Revision  Changes    Path
  1.207     +3 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.206
  retrieving revision 1.207
  diff -u -r1.206 -r1.207
  --- wikilib.php	9 Jul 2006 12:46:30 -0000	1.206
  +++ wikilib.php	14 Jul 2006 10:06:13 -0000	1.207
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.206 2006/07/09 12:46:30 wkpark Exp $
  +// $Id: wikilib.php,v 1.207 2006/07/14 10:06:13 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -36,7 +36,8 @@
   }
   
   function _urlencode($url) {
  -  return preg_replace("/([^a-z0-9\/\?\.\+~#&:;=%\-_]{1})/ie","'%'.strtoupper(dechex(ord(substr('\\1',-1))))",$url);
  +  $t= preg_replace("/([^a-z0-9\/\?\.\+~#&:;=%\-_]{1})/ie","'%'.strtoupper(dechex(ord(substr('\\1',-1))))",$url);
  +  return preg_replace("/(%)(?!=[a-f0-9]{2})/i","%25",$t);
   }
   
   function _stripslashes($str) {
  
  
  


wkpark      2006/07/14 19:06:50

  Modified:    plugin   VisualTour.php
  Log:
  add a refresh tag
  
  Revision  Changes    Path
  1.7       +3 -1      moniwiki/plugin/VisualTour.php
  
  Index: VisualTour.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/VisualTour.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- VisualTour.php	14 Jul 2006 04:46:01 -0000	1.6
  +++ VisualTour.php	14 Jul 2006 10:06:50 -0000	1.7
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a VisualTour plugin for the MoniWiki
   //
  -// $Id: VisualTour.php,v 1.6 2006/07/14 04:46:01 wkpark Exp $
  +// $Id: VisualTour.php,v 1.7 2006/07/14 10:06:50 wkpark Exp $
   
   function macro_VisualTour($formatter,$value,$options=array()) {
     global $DBInfo;
  @@ -100,6 +100,8 @@
     print $formatter->link_to("?action=visualtour&amp;w=".($w+1)."&amp;d=$d",_("Wider"));
     print "|";
     print $formatter->link_to("?action=visualtour&amp;w=$w&amp;d=".($d+1),_("Deeper"));
  +  print "|";
  +  print $formatter->link_to("?action=visualtour&amp;refresh=1&amp;w=$w&amp;d=".$d,_("Refresh"));
     print "<br />";
   
     print macro_VisualTour($formatter,'',$options);
  
  
  


wkpark      2006/07/14 19:25:36

  Modified:    .        wiki.php
  Log:
  support $use_tagging for non wiki documents
  
  Revision  Changes    Path
  1.314     +12 -2     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.313
  retrieving revision 1.314
  diff -u -r1.313 -r1.314
  --- wiki.php	14 Jul 2006 10:05:44 -0000	1.313
  +++ wiki.php	14 Jul 2006 10:25:36 -0000	1.314
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.313 2006/07/14 10:05:44 wkpark Exp $
  +// $Id: wiki.php,v 1.314 2006/07/14 10:25:36 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.313 $',1,-1);
  +$_revision = substr('$Revision: 1.314 $',1,-1);
   $_release = '1.1.2';
   
   #ob_start("ob_gzhandler");
  @@ -2594,6 +2594,8 @@
           if ($pi['args']) $pi_line="#!".$pi['#format']." $pi[args]\n";
           print call_user_func("processor_".$pi['#format'],$this,
             $pi_line.$this->page->body,$options);
  +
  +        
           return;
         }
         $lines=explode("\n",$body);
  @@ -2620,6 +2622,14 @@
         if ($pi['#format']) {
           if ($pi['args']) $pi_line="#!".$pi['#format']." $pi[args]\n";
           print call_user_func("processor_".$pi['#format'],$this,$pi_line.$body,$options);
  +        if ($DBInfo->use_tagging and isset($pi['#keywords'])) {
  +          $tmp="----\n";
  +          if (is_string($DBInfo->use_tagging))
  +            $tmp.=$DBInfo->use_tagging;
  +          else
  +            $tmp.="Tags: [[Keywords]]";
  +          $this->send_page($tmp); // XXX
  +        }
           return;
         }
   
  
  
  


wkpark      2006/07/14 19:43:20

  Modified:    .        wikilib.php
  Log:
  oops! fix the last change
  
  Revision  Changes    Path
  1.208     +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.207
  retrieving revision 1.208
  diff -u -r1.207 -r1.208
  --- wikilib.php	14 Jul 2006 10:06:13 -0000	1.207
  +++ wikilib.php	14 Jul 2006 10:43:20 -0000	1.208
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.207 2006/07/14 10:06:13 wkpark Exp $
  +// $Id: wikilib.php,v 1.208 2006/07/14 10:43:20 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -37,7 +37,7 @@
   
   function _urlencode($url) {
     $t= preg_replace("/([^a-z0-9\/\?\.\+~#&:;=%\-_]{1})/ie","'%'.strtoupper(dechex(ord(substr('\\1',-1))))",$url);
  -  return preg_replace("/(%)(?!=[a-f0-9]{2})/i","%25",$t);
  +  return preg_replace("/(%)(?![a-f0-9]{2})/i","%25",$t);
   }
   
   function _stripslashes($str) {
  
  
  


wkpark      2006/07/14 20:59:18

  Modified:    plugin   Icon.php
  Log:
  fixed PR #300833: suggested by hhyoon
  
  Revision  Changes    Path
  1.6       +6 -2      moniwiki/plugin/Icon.php
  
  Index: Icon.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Icon.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Icon.php	26 Jan 2006 03:10:35 -0000	1.5
  +++ Icon.php	14 Jul 2006 11:59:18 -0000	1.6
  @@ -1,9 +1,9 @@
   <?php
  -// Copyright 2003-2004 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2006 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a Icon macro plugin for the MoniWiki
   //
  -// $Id: Icon.php,v 1.5 2006/01/26 03:10:35 wkpark Exp $
  +// $Id: Icon.php,v 1.6 2006/07/14 11:59:18 wkpark Exp $
   function macro_Icon($formatter,$value='',$extra='') {
     global $DBInfo;
   
  @@ -13,6 +13,10 @@
       $realdir=basename($DBInfo->imgs_dir);
       $img=strtok('');
       if (is_dir($realdir.'/'.$dir)) $value=$dir.'/'.$img;
  +  } else if (isset($formatter->icon[$value])) {
  +    return $formatter->icon[$value];
  +  } else if ($value == 'deleted') {
  +    return $formatter->icon['del'];
     } else if (! preg_match('/\.(gif|png|jpg|jpeg)$/',$value)) {
       $value=$DBInfo->iconset.'/'.$value.'.png';
     }
  
  
  


wkpark      2006/07/14 21:11:16

  Modified:    css      _extra.css
  Log:
  add css classes for the VisualTour plugin
  
  Revision  Changes    Path
  1.7       +8 -0      moniwiki/css/_extra.css
  
  Index: _extra.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_extra.css,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- _extra.css	12 Jul 2006 04:58:46 -0000	1.6
  +++ _extra.css	14 Jul 2006 12:11:16 -0000	1.7
  @@ -167,3 +167,11 @@
     padding-left:8px !important;
     border-left: 3px solid #d7b7fb;
   }
  +
  +span.VisualTour img {
  +  border:0px;
  +}
  +
  +span.VisualTour {
  +  overflow:auto;
  +}
  
  
  


wkpark      2006/07/14 22:54:34

  Modified:    plugin   UploadedFiles.php
  Log:
  xhtmlfy. $uploadedfiles_per_page option added. fixed alt
  
  Revision  Changes    Path
  1.14      +21 -5     moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- UploadedFiles.php	7 Jul 2006 12:51:31 -0000	1.13
  +++ UploadedFiles.php	14 Jul 2006 13:54:34 -0000	1.14
  @@ -4,7 +4,7 @@
   // a UploadedFiles plugin for the MoniWiki
   // vim:et:sts=4:
   //
  -// $Id: UploadedFiles.php,v 1.13 2006/07/07 12:51:31 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.14 2006/07/14 13:54:34 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     $list=macro_UploadedFiles($formatter,$options['page'],$options);
  @@ -177,16 +177,27 @@
      $upfiles=array();
      $dirs=array();
   
  +   $per=$DBInfo->uploadedfiles_per_page ? $DBInfo->uploadedfiles_per_page:100;
  +   // XXX
  +   $plink='';
  +   if ($options['p'])
  +      $p=$options['p'] ? (int) $options['p']:1;
  +   else $p=1;
  +   $pfrom=($p-1)*$per;
  +   $pto=$pfrom+$per;
  +   $count=0;
      while ($file= readdir($handle)) {
         if ($file[0]=='.') continue;
         if (!$options['nodir'] and is_dir($dir."/".$file)) {
           if ($value =='UploadFile')
             $dirs[]= $DBInfo->keyToPagename($file);
  -      } else if (preg_match($needle,$file))
  +      } else if (preg_match($needle,$file) and $count >= $pfrom)
           $upfiles[]= $file;
  +      $count++;
  +      if ($count >= $pto) { $plink=1; break;}
      }
      closedir($handle);
  -   if (!$upfiles and !$dirs) return "<h3>No files uploaded</h3>";
  +   if (!$upfiles and !$dirs) return "<h3>"._("No files found")."</h3>";
      sort($upfiles); sort($dirs);
   
      $link=$formatter->link_url($formatter->page->urlname);
  @@ -221,6 +232,10 @@
         $date=date("Y-m-d",filemtime($dir."/.."));
         $out.="<tr><td class='wiki'>&nbsp;</td><td class='wiki'>$link</td><td align='right' class='wiki'>&nbsp;</td><td class='wiki'>$date</td></tr>\n";
      }
  +   if ($plink)
  +      $plink=$formatter->link_tag('',"?action=uploadedfiles$extra&amp;p=".($p+1),_("Next page &raquo;"),$attr);
  +   else if ($p > 1)
  +      $plink=$formatter->link_tag('',"?action=uploadedfiles$extra",_("&laquo; First page"),$attr);
   
      if (!$prefix) $prefix=$DBInfo->url_prefix."/".$dir."/";
   
  @@ -251,7 +266,7 @@
           $tag_open='attachment:'; $tag_close='';
           if ($opener != $value)
               $tag_open.=$opener;
  -        $alt="$tag_open$file$tag_close";
  +        $alt="alt='$tag_open$file$tag_close'";
           preg_match("/\.(.{1,4})$/",$fname,$m);
           $ext=strtolower($m[1]);
           if ($ext and stristr('gif,png,jpeg,jpg',$ext)) {
  @@ -276,7 +291,8 @@
         $idx++;
      }
      $idx--;
  -   $out.="<tr><th colspan='2'>Total $idx files</th><td></td><td></td></tr>\n";
  +   $msg=sprintf(_("Total %d files"),$idx);
  +   $out.="<tr><th colspan='2'>$msg</th><th colspan='2'>$plink</th></tr>\n";
      $out.="</table>\n";
      if ($DBInfo->security->is_protected("deletefile",$options))
        $out.=_("Password").": <input type='password' name='passwd' size='10' />\n";
  
  
  


wkpark      2006/07/14 22:57:08

  Modified:    plugin   dot.php
  Log:
  added $dot_options config option
  
  Revision  Changes    Path
  1.12      +3 -2      moniwiki/plugin/dot.php
  
  Index: dot.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/dot.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- dot.php	14 Jul 2006 04:46:01 -0000	1.11
  +++ dot.php	14 Jul 2006 13:57:08 -0000	1.12
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // dot action plugin for the MoniWiki
   //
  -// $Id: dot.php,v 1.11 2006/07/14 04:46:01 wkpark Exp $
  +// $Id: dot.php,v 1.12 2006/07/14 13:57:08 wkpark Exp $
   
   define(DEPTH,3);
   define(LEAFCOUNT,2);
  @@ -76,6 +76,7 @@
   
     $fontsize= $DBInfo->dot_fontsize ? $DBInfo->dot_fontsize: $fontsize;
     $fontname= $DBInfo->dot_fontname ? $DBInfo->dot_fontname: FONTNAME;
  +  $dot_options=$DBInfo->dot_options ? $DBInfo->dot_options: '';
   
     $color=array();
     $tree=new LinkTree($options['arena']);
  @@ -103,7 +104,7 @@
     $colidx=0;
     $dot_head=<<<HEAD
   digraph G {
  -  nodesep="0.05"
  +  $dot_options
     ratio="compress"
     URL="$visualtour"
     node [URL="$pageurl", 
  
  
  


wkpark      2006/07/14 23:38:33

  Modified:    .        wiki.php
  Log:
  more moinmoin 1.1 compliant table syntaxes
  
  Revision  Changes    Path
  1.315     +13 -6     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.314
  retrieving revision 1.315
  diff -u -r1.314 -r1.315
  --- wiki.php	14 Jul 2006 10:25:36 -0000	1.314
  +++ wiki.php	14 Jul 2006 14:38:33 -0000	1.315
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.314 2006/07/14 10:25:36 wkpark Exp $
  +// $Id: wiki.php,v 1.315 2006/07/14 14:38:33 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.314 $',1,-1);
  +$_revision = substr('$Revision: 1.315 $',1,-1);
   $_release = '1.1.2';
   
   #ob_start("ob_gzhandler");
  @@ -2516,12 +2516,19 @@
       if (!$val) return '';
       $para=substr($val,4,-1);
       # rowspan
  -    if (preg_match("/^\|(\d+)$/",$para,$match))
  -      $attr[]="rowspan='$match[1]'";
  +    if (preg_match("/^(\^|v)?\|(\d+)$/",$para,$match)) {
  +      $attr[]="rowspan='$match[2]'";
  +      if ($match[1]) {
  +        if ($match[1] == '^') $attr[]="valign='top'";
  +        else $attr[]="valign='bottom'";
  +      }
  +    }
  +    else if (preg_match("/^\-(\d+)$/",$para,$match))
  +      $attr[]="colspan='$match[1]'";
       else if ($para[0]=='#')
         $attr[]="bgcolor='".strtolower($para)."'";
       else
  -      $attr[]=$para;
  +      $attr[]=strtolower($para);
       return implode(' ',$attr).' ';
     }
   
  @@ -2529,7 +2536,7 @@
       if (!$on) return "</table>\n";
       $tattr=substr($attr,4,-1);
       if ($tattr[0]=='#') {
  -      $tattr="bgcolor='$tattr'";
  +      $tattr="bgcolor='".strtolower($tattr)."'";
       } else if (substr($tattr,0,5)=='table') {
         $tattr=substr($tattr,5);
         $attr='';
  
  
  


wkpark      2006/07/15 10:10:29

  Modified:    .        wikilib.php
  Log:
  support $use_save_refresh to refresh after page saving
  
  Revision  Changes    Path
  1.209     +12 -3     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.208
  retrieving revision 1.209
  diff -u -r1.208 -r1.209
  --- wikilib.php	14 Jul 2006 10:43:20 -0000	1.208
  +++ wikilib.php	15 Jul 2006 01:10:29 -0000	1.209
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.208 2006/07/14 10:43:20 wkpark Exp $
  +// $Id: wikilib.php,v 1.209 2006/07/15 01:10:29 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1251,8 +1251,6 @@
     $button_merge=$options['manual_merge']? 2:$button_merge;
     $button_merge=$options['force_merge']? 3:$button_merge;
   
  -  $formatter->send_header("",$options);
  -
     $savetext=preg_replace("/\r\n|\r/", "\n", $savetext);
     $savetext=_stripslashes($savetext);
     $section_savetext='';
  @@ -1285,6 +1283,7 @@
         $options['msg']=sprintf(_("Someone else saved the page while you edited %s"),$formatter->link_tag($formatter->page->urlname,"",htmlspecialchars($options['page'])));
         $options['preview']=1; 
         $options['conflict']=1; 
  +      $formatter->send_header("",$options);
         if ($button_merge) {
           $options['msg']=sprintf(_("%s is merged with latest contents."),$formatter->link_tag($formatter->page->urlname,"",htmlspecialchars($options['page'])));
           $options['title']=sprintf(_("%s is merged successfully"),htmlspecialchars($options['page']));
  @@ -1334,6 +1333,7 @@
   
     if (!$button_preview && $orig == $new) {
       $options['msg']=sprintf(_("Go back or return to %s"),$formatter->link_tag($formatter->page->urlname,"",htmlspecialchars($options['page'])));
  +    $formatter->send_header("",$options);
       $formatter->send_title(_("No difference found"),"",$options);
       $formatter->send_footer();
       return;
  @@ -1354,6 +1354,7 @@
   
     if ($button_preview) {
       $options['title']=sprintf(_("Preview of %s"),htmlspecialchars($options['page']));
  +    $formatter->send_header("",$options);
       $formatter->send_title("","",$options);
        
       $options['preview']=1; 
  @@ -1406,6 +1407,14 @@
         $options['msg'].=sprintf(_("%s is not editable"),$formatter->link_tag($formatter->page->urlname,"",htmlspecialchars($options['page'])));
       else
         $options['msg'].=sprintf(_("%s is saved"),$formatter->link_tag($formatter->page->urlname,"?action=show",htmlspecialchars($options['page'])));
  +
  +    $myrefresh='';
  +    if ($DBInfo->use_save_refresh) {
  +       $sec=$DBInfo->use_save_refresh - 1;
  +       $lnk=$formatter->link_url($formatter->page->urlname,"?action=show");
  +       $myrefresh='Refresh: '.$sec.'; url='.qualifiedURL($lnk);
  +    }
  +    $formatter->send_header($myrefresh,$options);
       $formatter->send_title("","",$options);
       $opt['pagelinks']=1;
       # re-generates pagelinks
  
  
  


wkpark      2006/07/15 10:11:21

  Modified:    .        config.php.default
  Log:
  update new config options
  
  Revision  Changes    Path
  1.34      +9 -4      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- config.php.default	8 Jul 2006 14:33:34 -0000	1.33
  +++ config.php.default	15 Jul 2006 01:11:20 -0000	1.34
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.33 2006/07/08 14:33:34 wkpark Exp $
  +# $Id: config.php.default,v 1.34 2006/07/15 01:11:20 wkpark Exp $
   #
   $sitename='UnnamedWiki';
   $data_dir= './data';
  @@ -169,11 +169,16 @@
   $use_errlog=1;
   #$errlog_maxline=20; # max lines to show
   #$raw_errlog=0; # do not hide some dir. infos.
  -#$acl_type='default';
  +#$acl_type='default'; # XXX
   #$acl_debug=1;
  -#$read_control=1;
  -#$use_macro_as_action=0;
  +#$read_control=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;
   ?>
  
  
  


wkpark      2006/07/15 10:12:44

  Modified:    plugin   Keywords.php Tour.php
  Log:
  fixed msg and enhanced UI
  
  Revision  Changes    Path
  1.21      +19 -3     moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- Keywords.php	14 Jul 2006 04:44:20 -0000	1.20
  +++ Keywords.php	15 Jul 2006 01:12:44 -0000	1.21
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a 'Keywords' plugin for the MoniWiki
   //
  -// $Id: Keywords.php,v 1.20 2006/07/14 04:44:20 wkpark Exp $
  +// $Id: Keywords.php,v 1.21 2006/07/15 01:12:44 wkpark Exp $
   
   define(LOCAL_KEYWORDS,'LocalKeywords');
   
  @@ -54,6 +54,7 @@
       }
   
       if ($options['random'] and !$limit) $limit=0;
  +    if ($options['sort']=='freq') $sort= 'freq';
   
       if (!$pagename) $pagename=$formatter->page->name;
   
  @@ -559,8 +560,23 @@
       }
   
       if ($options['all']) {
  -        $formatter->send_title(sprintf(_("Select keywords for %s"),
  -            $options['page']),'', $options);
  +        if ($options['sort']=='freq') $sort= 'freq';
  +        $formatter->send_title('','', $options);
  +        $myq='?'.$_SERVER['QUERY_STRING'];
  +        $myq=preg_replace('/&sort=[^&]+/i','',$myq);
  +        if ($sort != 'freq') {
  +            $myq.='&sort=freq';
  +            $txt=_("alphabetically");
  +            $ltxt=_("by frequency");
  +        } else {
  +            $txt=_("by size");
  +            $ltxt=_("alphabetically");
  +        }
  +        $link=$formatter->link_tag(_rawurlencode($page),$myq,$ltxt);
  +        
  +        print "<h2>";
  +        print sprintf(_("Keywords list %s (or %s)"),$txt,$link);
  +        print "</h2>\n";
           if (!$options['limit'])
               $options['limit']=0;
       } else {
  
  
  
  1.10      +2 -3      moniwiki/plugin/Tour.php
  
  Index: Tour.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Tour.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- Tour.php	12 Jul 2006 05:46:19 -0000	1.9
  +++ Tour.php	15 Jul 2006 01:12:44 -0000	1.10
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Tour]]
   //
  -// $Id: Tour.php,v 1.9 2006/07/12 05:46:19 wkpark Exp $
  +// $Id: Tour.php,v 1.10 2006/07/15 01:12:44 wkpark Exp $
   
   if (!function_exists('do_dot'))
       if ($pn=getPlugin('dot')) include_once("plugin/$pn.php");
  @@ -13,8 +13,7 @@
   function do_tour($formatter,$options) {
       #header("Content-Type: text/plain");
       $formatter->send_header('',$options);
  -    $formatter->send_title(sprintf(_("Tour from %s"),$options['page']),'',
  -        $options);
  +    $formatter->send_title('','', $options);
   
       if ($options['value']) $value=$options['value'];
       else $value=$options['page'];
  
  
  


wkpark      2006/07/15 10:16:00

  Modified:    plugin   Comment.php
  Log:
  use $use_save_refresh
  
  Revision  Changes    Path
  1.24      +8 -2      moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- Comment.php	8 Feb 2006 02:38:04 -0000	1.23
  +++ Comment.php	15 Jul 2006 01:16:00 -0000	1.24
  @@ -6,7 +6,7 @@
   // Usage: [[Comment]], ?action=comment
   //
   //
  -// $Id: Comment.php,v 1.23 2006/02/08 02:38:04 wkpark Exp $
  +// $Id: Comment.php,v 1.24 2006/07/15 01:16:00 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $DBInfo;
  @@ -191,7 +191,13 @@
     $options['msg']=sprintf(_("%s is commented successfully"),$formatter->link_tag($formatter->page->urlname,"?action=show",$options['page']));
     $title=_("Comment added successfully");
   
  -  $formatter->send_header('',$options);
  +  $myrefresh='';
  +  if ($DBInfo->use_save_refresh) {
  +    $sec=$DBInfo->use_save_refresh - 1;
  +    $lnk=$formatter->link_url($formatter->page->urlname,"?action=show");
  +    $myrefresh='Refresh: '.$sec.'; url='.qualifiedURL($lnk);
  +  }
  +  $formatter->send_header($myrefresh,$options);
     $formatter->send_title($title,'',$options);
   
     $opt['pagelinks']=1;
  
  
  


wkpark      2006/07/15 10:48:05

  Modified:    plugin   Gallery.php
  Log:
  apply $spam_filter and $use_save_refresh
  
  Revision  Changes    Path
  1.28      +41 -18    moniwiki/plugin/Gallery.php
  
  Index: Gallery.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Gallery.php,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- Gallery.php	7 Jul 2006 12:59:57 -0000	1.27
  +++ Gallery.php	15 Jul 2006 01:48:05 -0000	1.28
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Gallery]]
   //
  -// $Id: Gallery.php,v 1.27 2006/07/07 12:59:57 wkpark Exp $
  +// $Id: Gallery.php,v 1.28 2006/07/15 01:48:05 wkpark Exp $
   
   function get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -142,19 +142,29 @@
       $update=1;
     } else if ($file and $upfiles[$file] and $options['comment']) {
       // add new comment
  -    if ($options['id']=='Anonymous') $name=$_SERVER['REMOTE_ADDR'];
  -    else $name=$options['id'];
  -    if ($options['name']) $name=$options['name'];
  -    $date=date("(Y-m-d H:i:s) ");
  +    $comment=$text=_stripslashes($options['comment']);
   
  -    $comment=_stripslashes($options['comment']);
  -    $comment=str_replace("\r","",$comment);
  -    $comment=str_replace("\n","\\n",$comment);
  -    $comment=str_replace("\t"," ",$comment);
  -    $comment=str_replace("<","&lt;",$comment);
  -    $comment.=" -- $name $date";
  -    $comments[$file]=$comment."\t".$comments[$file];
  -    $update=1;
  +    // spam filtering
  +    $fts=preg_split('/(\||,)/',$DBInfo->spam_filter);
  +    foreach ($fts as $ft) {
  +      $text=$formatter->filter_repl($ft,$text,$options);
  +    }
  +    if ($text != $comment) {
  +      $options['err'] = _("Sorry, can not save page because some messages are blocked in this wiki.");
  +    } else {
  +      if ($options['id']=='Anonymous') $name=$_SERVER['REMOTE_ADDR'];
  +      else $name=$options['id'];
  +      if ($options['name']) $name=$options['name'];
  +      $date=date("(Y-m-d H:i:s) ");
  +
  +      $comment=str_replace("\r","",$comment);
  +      $comment=str_replace("\n","\\n",$comment);
  +      $comment=str_replace("\t"," ",$comment);
  +      $comment=str_replace("<","&lt;",$comment);
  +      $comment.=" -- $name $date";
  +      $comments[$file]=$comment."\t".$comments[$file];
  +      $update=1;
  +    }
     } else if ($file and $upfiles[$file]) {
       // show comments of the selected item
       $mtime=$upfiles[$file];
  @@ -191,7 +201,7 @@
       }
     }
   
  -  if (!$upfiles) return "<h3>No files uploaded</h3>";
  +  if (!$upfiles) return "<h3>"._("No files found")."</h3>\n";
     if ($sort) {
       if ($sort ==1) {
        arsort($upfiles);
  @@ -315,10 +325,9 @@
     $rows=$options['rows'] > 5 ? $options['rows']: 4;
     $cols=$options['cols'] > 60 ? $options['cols']: $cols;
   
  -  $formatter->send_header("",$options);
  -
     if ($options['comments'] and !$DBInfo->security->is_valid_password($options['passwd'],$options)) {
       $title= sprintf('Invalid password !');
  +    $formatter->send_header("",$options);
       $formatter->send_title($title);
       $formatter->send_footer();
       return;
  @@ -330,20 +339,33 @@
       $options['msg']=sprintf(_("Go back or return to %s"),$formatter->link_tag($formatter->page->urlname,"",$options['page']));
       $options['title']=_("Comments are edited");
     } else if ($options['comment']) {
  -    $options['msg']=sprintf(_("Go back or return to %s"),$formatter->link_tag($formatter->page->urlname,"",$options['page']));
  -    $options['title']=_("Comments is added");
  +    if (!$options['err']) {
  +      $options['msg']=sprintf(_("Go back or return to %s"),$formatter->link_tag($formatter->page->urlname,"",$options['page']));
  +      $options['title']=_("Comments is added");
  +    } else
  +      $options['msg']=&$options['err'];
     }
   
     if (!$options['value']) {
  +    $formatter->send_header("",$options);
       $formatter->send_title("","",$options);
       print $ret;
     } else
     if ($options['comment'] or ($options['comments'] and $options['passwd'])) {
  +    $myrefresh='';
  +    if (!$options['err'] and $DBInfo->use_save_refresh) {
  +      $sec=$DBInfo->use_save_refresh;
  +      $lnk=$formatter->link_url($formatter->page->urlname,"?action=show");
  +      $myrefresh='Refresh: '.$sec.'; url='.qualifiedURL($lnk);
  +    }
  +    $formatter->send_header($myrefresh,$options);
       $formatter->send_title("","",$options);
  +    #$formatter->send_page('',$options);
     } else
     if ($options['comments'] and $options['admin'] and !$options['passwd']) {
       // admin form
       $rows+=5;
  +    $formatter->send_header("",$options);
       $formatter->send_title("","",$options);
       print $ret;
       $url=$formatter->link_url($formatter->page->urlname);
  @@ -365,6 +387,7 @@
       print $form;
     } else if (!$options['comment']) {
       // add comment form
  +    $formatter->send_header("",$options);
       $formatter->send_title("","",$options);
       print $ret;
       $url=$formatter->link_url($formatter->page->urlname);
  
  
  


wkpark      2006/07/15 16:28:22

  Modified:    theme/azblue/css default.css
  Log:
  adjusted header height. comments for azblue variants. See AzBlueThemeVariants
  
  Revision  Changes    Path
  1.7       +21 -11    moniwiki/theme/azblue/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/azblue/css/default.css,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- default.css	13 Jul 2006 15:21:02 -0000	1.6
  +++ default.css	15 Jul 2006 07:28:21 -0000	1.7
  @@ -74,9 +74,17 @@
   }
   
   #pBanLeft {
  -  height:143px;
  +  height:143px; /* total Banner heigt */
   }
  +
   #pBanRight {
  +
  +}
  +
  +#pTitle {
  +/*  border: 1px solid #7B9AC5; /* */
  +  height: 30px; /* title height */
  +  padding:0px;
   }
   
   
  @@ -107,11 +115,6 @@
     padding: 3px 10px;
   }
   
  -#pTitle {
  -/*  border: 1px solid #7B9AC5; /* */
  -  padding:0px;
  -}
  -
   #wikiPage {
     margin-left:13px;
     margin-right:15px;
  @@ -198,15 +201,20 @@
   
   table.wiki {
   /* background-color:#E2ECE5;*/
  +/* background-color: #F8F7F0; */
   /* border-collapse: collapse; */
     border: 0px outset #ddddb0;
   }
   
   td.wiki {
  -  background-color: #F8F7F0;
  +  background-color: #F8F7F0; 
   /* border-collapse: collapse; */
     border: 0px inset #EAF2F4;
   }
  +tr.wiki {
  +/* background-color: #F8F7F0; */
  +/* border-collapse: collapse; */
  +}
   
   textarea.wiki { width:98%; }
   
  @@ -380,14 +388,16 @@
   }
   
   #wikiMenu li:hover {
  -/*  background-color: #ffffff; /* */
  -  background-color: #98D3FC; /* */
  +  background-color: #98D3FC; /* default */
  +  /* background-color: #355F88; /* dark blue */
  +  /* background-color: #F2B568; /* orange */
     text-decoration: none;
   }
   
   #wikiMenu li.current {
  -/*  background-color: #ffffff; /* */
  -  background-color: #0584D9; /* */
  +  background-color: #0584D9; /* default */
  +  /* background-color: #2C4F72; /* dark blue */
  +  /* background-color: #E75024; /* orange */
     text-decoration: none;
   }
   
  
  
  


wkpark      2006/07/16 04:01:23

  Modified:    theme/azblue/css default.css
  Log:
  IE css hack (min-height, form etc.)
  
  Revision  Changes    Path
  1.8       +14 -3     moniwiki/theme/azblue/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/azblue/css/default.css,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- default.css	15 Jul 2006 07:28:21 -0000	1.7
  +++ default.css	15 Jul 2006 19:01:23 -0000	1.8
  @@ -71,10 +71,12 @@
     font-size:36px;
     text-align:center;
     font-family:Trebuchet MS,Tahoma,Lucida,sans-serif;
  +  /* border:1px solid red; /* */
   }
   
   #pBanLeft {
     height:143px; /* total Banner heigt */
  +  /* border:1px solid red; /* */
   }
   
   #pBanRight {
  @@ -82,9 +84,9 @@
   }
   
   #pTitle {
  -/*  border: 1px solid #7B9AC5; /* */
     height: 30px; /* title height */
     padding:0px;
  +  /* border: 1px solid red; /* */
   }
   
   
  @@ -115,12 +117,18 @@
     padding: 3px 10px;
   }
   
  +form {
  +  margin-bottom:0px; /* IE hack */
  +}
  +
   #wikiPage {
     margin-left:13px;
     margin-right:15px;
     padding-top:10px;
     padding-bottom:10px;
     min-height:400px;
  +  height: auto !important; /* IE min-height hack */
  +  height:400px;
   }
   
   #wikiBanner {
  @@ -268,12 +276,16 @@
     padding-left:55px;
     background: #E8E8E8 url(../imgs/warn.png) 10px 10px no-repeat;
     min-height: 40px;
  +  height: auto !important;
  +  height:40px;
   }
   
   pre.errlog {
     padding-left:55px;
     background: #E8E8E8 url(../imgs/error.png) 10px 10px no-repeat;
     min-height: 40px;
  +  height: auto !important;
  +  height:40px;
   }
   
   .highlight {
  @@ -348,7 +360,7 @@
   
   #wikiMenuBar {
     padding:6px;
  -  height:43px;
  +  height:29px;
   }
   
   #pMenuLeft {
  @@ -407,7 +419,6 @@
   }
   
   #wikiMenu li a:active {
  -  color: #b0b0b0;
     text-decoration: none;
   }
   
  
  
  


wkpark      2006/07/16 04:07:35

  Modified:    plugin   ISBN.php Attachment.php
  Log:
  fix for ISBN caches
  
  Revision  Changes    Path
  1.9       +2 -2      moniwiki/plugin/ISBN.php
  
  Index: ISBN.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/ISBN.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- ISBN.php	5 Jul 2006 23:07:06 -0000	1.8
  +++ ISBN.php	15 Jul 2006 19:07:35 -0000	1.9
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a ISBN macro plugin for the MoniWiki
   //
  -// $Id: ISBN.php,v 1.8 2006/07/05 23:07:06 wkpark Exp $
  +// $Id: ISBN.php,v 1.9 2006/07/15 19:07:35 wkpark Exp $
   
   function macro_ISBN($formatter,$value="") {
     global $DBInfo;
  @@ -172,7 +172,7 @@
           if (!$m[2]) {
              # skip XXX
           } else if (file_exists($DBInfo->upload_dir.'/isbn/'.$myimglink)) {
  -           $mlink=macro_Attachment($formatter,'attachment:isbn/'.$myimglink,1);
  +           $mlink=$formatter->macro_repl('attachment','isbn:'.$myimglink,1);
              $imglink=qualifiedUrl($DBInfo->url_prefix.'/'.$mlink);
           } else {
              $fd=fopen($imglink,'r');
  
  
  
  1.21      +2 -2      moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- Attachment.php	9 Jul 2006 10:26:17 -0000	1.20
  +++ Attachment.php	15 Jul 2006 19:07:35 -0000	1.21
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.20 2006/07/09 10:26:17 wkpark Exp $
  +// $Id: Attachment.php,v 1.21 2006/07/15 19:07:35 wkpark Exp $
   
   function macro_Attachment($formatter,$value,$option='') {
     global $DBInfo;
  @@ -74,7 +74,7 @@
       $subpage=substr($value,0,$p);
       $file=substr($value,$p+1);
       $value=$subpage.'/'.$file; # normalize page arg
  -    if ($subpage and $DBInfo->hasPage($subpage)) {
  +    if ($subpage and is_dir($DBInfo->upload_dir.'/'.$DBInfo->pageToKeyname($subpage))) {
         $pagename=$subpage;
         $key=$DBInfo->pageToKeyname($subpage);
       } else {
  
  
  


wkpark      2006/07/16 04:08:07

  Modified:    plugin   Info.php
  Log:
  remove $title arg
  
  Revision  Changes    Path
  1.11      +2 -2      moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Info.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- Info.php	19 Jan 2006 22:53:39 -0000	1.10
  +++ Info.php	15 Jul 2006 19:08:07 -0000	1.11
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Info plugin for the MoniWiki
   //
  -// $Id: Info.php,v 1.10 2006/01/19 22:53:39 wkpark Exp $
  +// $Id: Info.php,v 1.11 2006/07/15 19:08:07 wkpark Exp $
   
   function _parse_rlog($formatter,$log,$options=array()) {
     global $DBInfo;
  @@ -201,7 +201,7 @@
   function do_info($formatter,$options) {
     global $DBInfo;
     $formatter->send_header("",$options);
  -  $formatter->send_title(sprintf(_("Info. for %s"),$options['page']),"",$options);
  +  $formatter->send_title('','',$options);
   
     print macro_info($formatter,'',$options);
     $formatter->send_footer($args,$options);
  
  
  


wkpark      2006/07/16 04:09:08

  Modified:    plugin   theme.php
  Log:
  do not reset $css_url,$theme
  
  Revision  Changes    Path
  1.7       +4 -3      moniwiki/plugin/theme.php
  
  Index: theme.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/theme.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- theme.php	8 Feb 2006 08:22:55 -0000	1.6
  +++ theme.php	15 Jul 2006 19:09:08 -0000	1.7
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // Theme plugin for the MoniWiki
   //
  -// $Id: theme.php,v 1.6 2006/02/08 08:22:55 wkpark Exp $
  +// $Id: theme.php,v 1.7 2006/07/15 19:09:08 wkpark Exp $
   //
   
   function do_theme($formatter,$options) {
  @@ -15,8 +15,9 @@
         #header("Set-Cookie: MONI_CSS=dummy; expires=Tuesday, 01-Jan-1999 12:00:00 GMT; Path=".get_scriptname());
         setcookie('MONI_THEME','dummy',time()-60*60*24*30,get_scriptname());
         setcookie('MONI_CSS','dummy',time()-60*60*24*30,get_scriptname());
  -      $options['css_url']='';
  -      $options['theme']='';
  +      $cleared=1;
  +      //$options['css_url']='';
  +      //$options['theme']='';
       } else {
         # save profile
         $udb=new UserDB($DBInfo);
  
  
  


wkpark      2006/07/16 04:09:35

  Modified:    plugin   Calendar.php
  Log:
  add a 'center' arg
  
  Revision  Changes    Path
  1.15      +3 -2      moniwiki/plugin/Calendar.php
  
  Index: Calendar.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Calendar.php,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- Calendar.php	7 Jul 2006 13:44:52 -0000	1.14
  +++ Calendar.php	15 Jul 2006 19:09:34 -0000	1.15
  @@ -7,7 +7,7 @@
   #-----usage: generate_calendar(2001, 11, $day_func, 2);-------------------------
   #------(last two arguments are optional)----------------------------------------
   #-------------------------------------------------------------------------------
  -# $Id: Calendar.php,v 1.14 2006/07/07 13:44:52 wkpark Exp $
  +# $Id: Calendar.php,v 1.15 2006/07/15 19:09:34 wkpark Exp $
   
   function calendar_get_dates($formatter,$date='',$page='') {
     global $DBInfo;
  @@ -81,6 +81,7 @@
   
   		if (in_array ("blog", $args)) $mode='blog';
   		if (in_array ("noweek", $args)) $day_heading_length=0;
  +		if (in_array ("center", $args)) $attr=' align="center"';
   		if (in_array ("shortweek", $args)) $day_heading_length=1;
   		if (in_array ("yearlink", $args)) $yearlink=1;
   		if (in_array ("archive", $args)) {
  @@ -119,7 +120,7 @@
   	$year= $date_info['year'];
   	$today= date("d");
   
  -	$calendar= "<table class=\"Calendar\">\n";
  +	$calendar= "<table class=\"Calendar\"$attr>\n";
   	#use the <caption> tag or just a normal table heading. Take your pick.
   	#http://diveintomark.org/archives/2002/07/03.html#day_18_giving_your_calendar_a_real_caption
   #	$calendar .= "<tr><th colspan=\"7\" class=\"month\">$date_info[month], $year</th></tr>\n";
  
  
  


wkpark      2006/07/16 23:47:09

  Modified:    plugin   FullSearch.php
  Log:
  add a $fullsearch_tooshort option.
  use ksort() instead of krsort()
  
  Revision  Changes    Path
  1.22      +5 -3      moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- FullSearch.php	2 Jul 2006 10:15:14 -0000	1.21
  +++ FullSearch.php	16 Jul 2006 14:47:09 -0000	1.22
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
   //
  -// $Id: FullSearch.php,v 1.21 2006/07/02 10:15:14 wkpark Exp $
  +// $Id: FullSearch.php,v 1.22 2006/07/16 14:47:09 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
  @@ -63,6 +63,7 @@
   
     $url=$formatter->link_url($formatter->page->urlname);
     $fneedle=str_replace('"',"&#34;",$needle); # XXX
  +  $tooshort=$DBInfo->fullsearch_tooshort ? $DBInfo->fullsearch_tooshort:2;
   
     $form= <<<EOF
   <form method='get' action='$url'>
  @@ -101,7 +102,7 @@
           $len=strlen($word);
   
           if (!$match[1] and $match[2] != '"') {
  -          if ($len <= 2 or in_array($word,$common_words)) {
  +          if ($len <= $tooshort or in_array($word,$common_words)) {
               $common[]=$word;
               continue;
             }
  @@ -215,7 +216,8 @@
          }
        }
     }
  -  krsort($hits);
  +  #krsort($hits);
  +  ksort($hits);
   
     if ($arena == 'fullsearch')
       $fc->update($sid,serialize($hits));
  
  
  


wkpark      2006/07/16 23:48:16

  Modified:    plugin   Keywords.php
  Log:
  small fix
  
  Revision  Changes    Path
  1.22      +2 -2      moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- Keywords.php	15 Jul 2006 01:12:44 -0000	1.21
  +++ Keywords.php	16 Jul 2006 14:48:16 -0000	1.22
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a 'Keywords' plugin for the MoniWiki
   //
  -// $Id: Keywords.php,v 1.21 2006/07/15 01:12:44 wkpark Exp $
  +// $Id: Keywords.php,v 1.22 2006/07/16 14:48:16 wkpark Exp $
   
   define(LOCAL_KEYWORDS,'LocalKeywords');
   
  @@ -240,7 +240,7 @@
           #print $weight.'--';
       }
       $max=current($fact);
  -    $min=$limit ? max(1,end($fact)):0;
  +    $min=$limit ? max(1,end($fact))-1:0; // XXX
       // make font-size style
       $fz=max(sizeof($fact),2);
       $sty=array();
  
  
  


wkpark      2006/07/18 21:22:09

  Modified:    plugin   Keywords.php
  Log:
  gettextize some msg
  
  Revision  Changes    Path
  1.23      +3 -2      moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- Keywords.php	16 Jul 2006 14:48:16 -0000	1.22
  +++ Keywords.php	18 Jul 2006 12:22:09 -0000	1.23
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a 'Keywords' plugin for the MoniWiki
   //
  -// $Id: Keywords.php,v 1.22 2006/07/16 14:48:16 wkpark Exp $
  +// $Id: Keywords.php,v 1.23 2006/07/18 12:22:09 wkpark Exp $
   
   define(LOCAL_KEYWORDS,'LocalKeywords');
   
  @@ -313,7 +313,8 @@
           foreach ($supported_lang as $l) {
               $form_close.="<option value='$l'>$l</option>\n";
           }
  -        $form_close.="</select>\n</form>\n";
  +        $langmsg=_("select language");
  +        $form_close.="</select>: $langmsg\n</form>\n";
           $form_close.=<<<EOF
   <script type='text/javascript' src='$DBInfo->url_prefix/local/checkbox.js'>
   </script>
  
  
  


wkpark      2006/07/18 21:36:58

  Modified:    theme/azblue header.php
  Log:
  update
  
  Revision  Changes    Path
  1.2       +21 -12    moniwiki/theme/azblue/header.php
  
  Index: header.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/azblue/header.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- header.php	3 Feb 2006 22:50:49 -0000	1.1
  +++ header.php	18 Jul 2006 12:36:58 -0000	1.2
  @@ -1,10 +1,15 @@
   <?php
   # MoniWiki Theme by wkpark at kldp.org
  -# $Id: header.php,v 1.1 2006/02/03 22:50:49 wkpark Exp $
  +# $Id: header.php,v 1.2 2006/07/18 12:36:58 wkpark Exp $
   #
  -include_once("plugin/login.php");
  -include_once("plugin/RandomBanner.php");
  -include_once("plugin/Calendar.php");
  +if ($this->_sidebar) {
  +  include_once("plugin/login.php");
  +  include_once("plugin/RandomBanner.php");
  +  include_once("plugin/Calendar.php");
  +}
  +if ($DBInfo->use_tagging) {
  +  include_once("plugin/Keywords.php");
  +}
   $login=macro_login($this);
   # theme options
   #$_theme['sidebar']=1;
  @@ -60,19 +65,23 @@
   <div id='wikiSideMenu'>
   <?php
   print macro_login($this);
  -print '<div style="font-size:11px;font-family:verdana,sans-serif">';
  +print '<div class="calendar">';
   if ($options['id']=='Anonymous')
  -  print macro_calendar($this,"'Blog',blog,noweek,archive",'Blog');
  +  print macro_calendar($this,"'Blog',blog,noweek,archive,center",'Blog');
   else
  -  print macro_calendar($this,"'$options[id]',blog,noweek,archive",$options['id']);
  +  print macro_calendar($this,"'$options[id]',blog,noweek,archive,center",$options['id']);
   print '</div>';
  -print '<font style="font-size:12px;"><b>';
  +print '<div class="randomQuote">';
   print macro_RandomQuote($this);
  -print '</b></font>';
  -print "<br /><br />\n";
  -print '<font style="font-size:11px">';
  +print '</div>';
  +print '<div class="randomPage">';
   print macro_RandomPage($this,"4,simple");
  -print '</font>';
  +print '</div>';
  +if ($DBInfo->use_tagging) {
  +  print "<div>";
  +  print macro_Keywords($this,"all,tour,limit=15");
  +  print "</div>";
  +}
   ?>
   </div>
   <?php
  
  
  


wkpark      2006/07/18 21:37:00

  Modified:    theme/azblue/css default.css
  Log:
  update
  
  Revision  Changes    Path
  1.9       +26 -1     moniwiki/theme/azblue/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/azblue/css/default.css,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- default.css	15 Jul 2006 19:01:23 -0000	1.8
  +++ default.css	18 Jul 2006 12:37:00 -0000	1.9
  @@ -280,6 +280,11 @@
     height:40px;
   }
   
  +div.message h3 {
  +  border:0px;
  +  font-family:Trebuchet MS,sans-serif;
  +}
  +
   pre.errlog {
     padding-left:55px;
     background: #E8E8E8 url(../imgs/error.png) 10px 10px no-repeat;
  @@ -439,7 +444,7 @@
   #wikiBody {
     color: black;
   /*  background-color: #fff; /* */
  -  overflow: hidden; /* */
  +  overflow: hidden; /* magic XXX */
   /*  border: 1px dotted #c0c0c0; /* */
   /*  border-left: 0.8em solid #E2ECE2;
     border-right: 0.8em solid #E2ECE2; */
  @@ -687,3 +692,23 @@
     border-left:1px dotted #e0e0e0;
     height:100%;
   }
  +
  +.randomQuote {
  +  font-family: Verdana,Tahoma,sans-serif;
  +  font-weight:bold;
  +  margin-bottom: 10px;
  +  border-bottom: 1px solid #e0e0e0;
  +  border-top: 1px solid #e0e0e0;
  +  padding: 10px 0px 10px 0px;
  +}
  +
  +.randomPage {
  +  font-family: Trebuchet MS,sans-serif;
  +/*  border-bottom: 1px solid #e0e0e0; /* */
  +  padding: 0px 0px 10px 0px;
  +}
  +
  +.calendar {
  +  font-size:11px;
  +  font-family: Trebuchet MS,sans-serif;
  +}
  
  
  


wkpark      2006/07/18 21:50:02

  Modified:    theme/azblue header.php
  Log:
  oops! fix last change
  
  Revision  Changes    Path
  1.3       +2 -2      moniwiki/theme/azblue/header.php
  
  Index: header.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/azblue/header.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- header.php	18 Jul 2006 12:36:58 -0000	1.2
  +++ header.php	18 Jul 2006 12:50:02 -0000	1.3
  @@ -1,16 +1,16 @@
   <?php
   # MoniWiki Theme by wkpark at kldp.org
  -# $Id: header.php,v 1.2 2006/07/18 12:36:58 wkpark Exp $
  +# $Id: header.php,v 1.3 2006/07/18 12:50:02 wkpark Exp $
   #
   if ($this->_sidebar) {
     include_once("plugin/login.php");
     include_once("plugin/RandomBanner.php");
     include_once("plugin/Calendar.php");
  +  $login=macro_login($this);
   }
   if ($DBInfo->use_tagging) {
     include_once("plugin/Keywords.php");
   }
  -$login=macro_login($this);
   # theme options
   #$_theme['sidebar']=1;
   
  
  
  


wkpark      2006/07/18 22:06:58

  Modified:    .        config.php.default
  Log:
  $hr=''; is default now
  
  Revision  Changes    Path
  1.35      +2 -1      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- config.php.default	15 Jul 2006 01:11:20 -0000	1.34
  +++ config.php.default	18 Jul 2006 13:06:58 -0000	1.35
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.34 2006/07/15 01:11:20 wkpark Exp $
  +# $Id: config.php.default,v 1.35 2006/07/18 13:06:58 wkpark Exp $
   #
   $sitename='UnnamedWiki';
   $data_dir= './data';
  @@ -67,6 +67,7 @@
   #$path='c:/windows/command;c:/Program Files/gnuplot'; # for win32
   $theme='azblue';
   $theme_css=0;
  +$hr='';
   #$title_rule='((?<=[a-z0-9])[A-Z][a-z0-9])';
   #$blog_comments=1; # show all comments
   
  
  
  


wkpark      2006/07/18 22:07:22

  Modified:    config   acl.default.php
  Log:
  update
  
  Revision  Changes    Path
  1.3       +3 -2      moniwiki/config/acl.default.php
  
  Index: acl.default.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config/acl.default.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- acl.default.php	8 Jul 2006 14:29:51 -0000	1.2
  +++ acl.default.php	18 Jul 2006 13:07:22 -0000	1.3
  @@ -4,10 +4,10 @@
   #
   # A sample Access Control Lists file for Moniwiki
   #
  -# $Id: acl.default.php,v 1.2 2006/07/08 14:29:51 wkpark Exp $
  +# $Id: acl.default.php,v 1.3 2006/07/18 13:07:22 wkpark Exp $
   @Guest	Anonymous
   *	@ALL		deny	*
  -*	@ALL		allow	ticket
  +*	@ALL		allow	edit,ticket,savepage
   *	@User		allow	*
   # some pages are allowed to edit
   WikiSandBox	@Guest	allow	edit,info,diff
  @@ -18,6 +18,7 @@
   *	@ALL		allow	read,userform,rss_rc,aclinfo,fortune,deletepage,fixmoin,ticket
   # some pages have restrict permission
   MoniWiki	@ALL	deny	edit,uploadfile,diff
  +HelpOn*		@User	deny	edit,uploadfile,diff
   # special pages
   ACL	@ALL		deny    edit,diff,info # a shared ACL file (not supported yet XXX)
   # set group members
  
  
  


wkpark      2006/07/18 22:09:07

  Modified:    css      _base.css
  Log:
  update
  
  Revision  Changes    Path
  1.9       +0 -1      moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- _base.css	12 Jul 2006 04:58:46 -0000	1.8
  +++ _base.css	18 Jul 2006 13:09:07 -0000	1.9
  @@ -150,7 +150,6 @@
   div.message {
     background-color: #E8E8E8;
     border:2px solid #ff0000;
  -  color:#440000;
     padding:4px;
     vertical-align: middle;
   }
  
  
  


wkpark      2006/07/19 00:10:27

  Modified:    plugin   PageLinks.php WantedPages.php WordIndex.php
  Log:
  fixed to remove meaningless links
  
  Revision  Changes    Path
  1.2       +14 -5     moniwiki/plugin/PageLinks.php
  
  Index: PageLinks.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/PageLinks.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- PageLinks.php	26 Jan 2006 03:08:44 -0000	1.1
  +++ PageLinks.php	18 Jul 2006 15:10:27 -0000	1.2
  @@ -5,21 +5,30 @@
   //
   // Usage: [[Test]]
   //
  -// $Id: PageLinks.php,v 1.1 2006/01/26 03:08:44 wkpark Exp $
  +// $Id: PageLinks.php,v 1.2 2006/07/18 15:10:27 wkpark Exp $
   
   function macro_PageLinks($formatter,$options="") {
     global $DBInfo;
     $pages = $DBInfo->getPageLists();
  +  $pagelinks=$formatter->pagelinks; // save
  +  $save=$formatter->sister_on;
  +  $formatter->sister_on=0;
   
     $out="<ul>\n";
     $cache=new Cache_text("pagelinks");
     foreach ($pages as $page) {
  -    $out.="<li>".$formatter->link_tag($page,'',htmlspecialchars($page)).": ";
  -    $links=implode(' ',unserialize($cache->fetch($page)));
  -    $links=preg_replace("/(".$formatter->wordrule.")/e","\$formatter->link_repl('\\1')",$links);
  -    $out.=$links."</li>\n";
  +    $lnks=$cache->fetch($page);
  +    if ($lnks !== false) {
  +        $lnks=unserialize($lnks);
  +        $out.="<li>".$formatter->link_tag($page,'',htmlspecialchars($page)).": ";
  +        $links=implode(' ',$lnks);
  +        $links=preg_replace("/(".$formatter->wordrule.")/e","\$formatter->link_repl('\\1')",$links);
  +        $out.=$links."</li>\n";
  +    }
     }
     $out.="</ul>\n";
  +  $formatter->pagelinks = $pagelinks; // restore
  +  $formatter->sister_on=$save;
     return $out;
   }
   
  
  
  
  1.6       +16 -5     moniwiki/plugin/WantedPages.php
  
  Index: WantedPages.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/WantedPages.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- WantedPages.php	26 Jan 2006 03:10:35 -0000	1.5
  +++ WantedPages.php	18 Jul 2006 15:10:27 -0000	1.6
  @@ -3,19 +3,24 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a WantedPages macro plugin for the MoniWiki
   //
  -// $Id: WantedPages.php,v 1.5 2006/01/26 03:10:35 wkpark Exp $
  +// $Id: WantedPages.php,v 1.6 2006/07/18 15:10:27 wkpark Exp $
   
   function macro_WantedPages($formatter,$value='') {
     global $DBInfo;
     $pages = $DBInfo->getPageLists();
   
     $pagelinks=$formatter->pagelinks; // save
  +  $save=$formatter->sister_on;
  +  $formatter->sister_on=0;
   
     $cache=new Cache_text("pagelinks");
   
     foreach ($pages as $page) {
  +    $dum='';
       $p= new WikiPage($page);
       $f= new Formatter($p);
  +    $pi=$f->get_instructions($dum);
  +    if ($pi['#format']!='') continue;
       $links=$f->get_pagelinks();
       if ($links) {
         $lns=&$links;
  @@ -23,20 +28,26 @@
           if (!$link or $DBInfo->hasPage($link)) continue;
           if ($link and !$wants[$link])
             $wants[$link]="[\"$page\"]";
  -        else $wants[$link].=" [\"$page\"]";
  +        else $wants[$link].=" [\"".$page."\"]";
         }
       }
     }
  +  $formatter->pagelinks=$pagelinks; // save
  +  $formatter->sister_on=$save;
     if (!count($wants)) return '';
  +  $pagelinks=$formatter->pagelinks; // save
  +  $formatter->sister_on=0;
   
     asort($wants);
     $out="<ul>\n";
     while (list($name,$owns) = each($wants)) {
  -    $owns=preg_replace("/(".$formatter->wordrule.")/e","\$formatter->link_repl('\\1')",$owns);
  -    $out.="<li>".$formatter->link_repl($name,htmlspecialchars($name)). ": $owns</li>";
  +    $owns=str_replace('<','&lt;',$owns);
  +    $nowns=preg_replace("/(".$formatter->wordrule.")/e","\$formatter->link_repl('\\1')",$owns);
  +    $out.="<li>".$formatter->link_repl($name,htmlspecialchars($name)). ": $nowns</li>";
     }
     $out.="</ul>\n";
  -  $formatter->pagelinks = $pagelinks; // restore
  +  $formatter->sister_on=$save;
  +  $formatter->pagelinks=$pagelinks; // save
   
     return $out;
   }
  
  
  
  1.7       +6 -1      moniwiki/plugin/WordIndex.php
  
  Index: WordIndex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/WordIndex.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- WordIndex.php	15 Jan 2006 15:43:47 -0000	1.6
  +++ WordIndex.php	18 Jul 2006 15:10:27 -0000	1.7
  @@ -5,13 +5,16 @@
   //
   // Usage: [[WordIndex]]
   //
  -// $Id: WordIndex.php,v 1.6 2006/01/15 15:43:47 wkpark Exp $
  +// $Id: WordIndex.php,v 1.7 2006/07/18 15:10:27 wkpark Exp $
   // vim:et:ts=2:
   
   function macro_WordIndex($formatter,$value) {
     global $DBInfo;
   
     $all_pages= $DBInfo->getPageLists();
  +  $pagelinks=$formatter->pagelinks; // save
  +  $save=$formatter->sister_on;
  +  $formatter->sister_on=0;
   
     if ($DBInfo->use_titlecache) {
       $cache=new Cache_text('title');
  @@ -68,6 +71,8 @@
       $index.= "| <a href='#$ukey'>$name</a> ";
     }
     $index[0]=" ";
  +  $formatter->pagelinks = $pagelinks; // restore
  +  $formatter->sister_on= $save;
   
     return "<center><a name='top' />$index</center>\n$out";
   }
  
  
  


wkpark      2006/07/19 00:11:27

  Modified:    .        wiki.php
  Log:
  fixed store_pagelinks()
  store_pagelinks() for non wiki pages
  
  Revision  Changes    Path
  1.316     +7 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.315
  retrieving revision 1.316
  diff -u -r1.315 -r1.316
  --- wiki.php	14 Jul 2006 14:38:33 -0000	1.315
  +++ wiki.php	18 Jul 2006 15:11:27 -0000	1.316
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.315 2006/07/14 14:38:33 wkpark Exp $
  +// $Id: wiki.php,v 1.316 2006/07/18 15:11:27 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.315 $',1,-1);
  +$_revision = substr('$Revision: 1.316 $',1,-1);
   $_release = '1.1.2';
   
   #ob_start("ob_gzhandler");
  @@ -2090,7 +2090,10 @@
         $this->bcache->update($d,serialize($bl));
       }
       // XXX
  -    $this->cache->update($this->page->name,serialize($new));
  +    if ($new)
  +      $this->cache->update($this->page->name,serialize($new));
  +    else
  +      $this->cache->remove($this->page->name);
   #      $this->page->mtime());
     }
   
  @@ -2601,7 +2604,6 @@
           if ($pi['args']) $pi_line="#!".$pi['#format']." $pi[args]\n";
           print call_user_func("processor_".$pi['#format'],$this,
             $pi_line.$this->page->body,$options);
  -
           
           return;
         }
  @@ -2637,6 +2639,7 @@
               $tmp.="Tags: [[Keywords]]";
             $this->send_page($tmp); // XXX
           }
  +        $this->store_pagelinks(); // XXX
           return;
         }
   
  
  
  


wkpark      2006/07/19 14:28:14

  Modified:    .        wiki.php
  Log:
  fixed invalid use of the stristr()
  set the lang correctly to support Opera browser
  
  Revision  Changes    Path
  1.317     +6 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.316
  retrieving revision 1.317
  diff -u -r1.316 -r1.317
  --- wiki.php	18 Jul 2006 15:11:27 -0000	1.316
  +++ wiki.php	19 Jul 2006 05:28:14 -0000	1.317
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.316 2006/07/18 15:11:27 wkpark Exp $
  +// $Id: wiki.php,v 1.317 2006/07/19 05:28:14 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.316 $',1,-1);
  +$_revision = substr('$Revision: 1.317 $',1,-1);
   $_release = '1.1.2';
   
   #ob_start("ob_gzhandler");
  @@ -1873,7 +1873,8 @@
           if ($m[2]=='') $m[1].='1';
           return "<font size='$m[1]'>$m[3]</font>";
         }
  -      if ($url[0]==' ' and stristr('#+-',$url[1])) $url=substr($url,1);
  +      if ($url[0]==' ' and in_array($url[1],array('#','-','+')) !==false)
  +        $url=substr($url,1);
         return "<tt class='wiki'>".str_replace("<","&lt;",$url)."</tt>"; # No link
         break;
       case '[':
  @@ -3866,7 +3867,8 @@
       'fr'=>array('fr_FR','france',''),
       'ko'=>array('ko_KR','korean',''),
     );
  -  $lang= $_SERVER['HTTP_ACCEPT_LANGUAGE'];
  +  $lang= strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']);
  +  $lang= strtr($lang,'_','-');
     $langs=explode(',',preg_replace(array("/;[^;,]+/","/\-[a-z]+/"),'',$lang));
     if ($languages[$langs[0]]) return array($languages[$langs[0]][0]);
     return array($languages[0][0]);
  
  
  


wkpark      2006/07/19 14:29:10

  Modified:    plugin   Navigation.php
  Log:
  use set_wordrule() in the navigation action
  
  Revision  Changes    Path
  1.12      +2 -1      moniwiki/plugin/Navigation.php
  
  Index: Navigation.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Navigation.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- Navigation.php	1 Mar 2006 06:26:24 -0000	1.11
  +++ Navigation.php	19 Jul 2006 05:29:10 -0000	1.12
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Navigation(IndexPage)]]
   //
  -// $Id: Navigation.php,v 1.11 2006/03/01 06:26:24 iolo Exp $
  +// $Id: Navigation.php,v 1.12 2006/07/19 05:29:10 wkpark Exp $
   
   function macro_Navigation($formatter,$value) {
     global $DBInfo;
  @@ -107,6 +107,7 @@
   }
   
   function do_navigation($formatter,$options) {
  +  if (!$formatter->wordrule) $formatter->set_wordrule();
     $pnut=macro_Navigation($formatter,$options['value'].',action');
     $formatter->send_header('',$options);
     $formatter->send_title($title,$formatter->link_url("FindPage"),$options);
  
  
  


wkpark      2006/07/19 19:01:51

  Modified:    theme/azblue/css default.css
  Log:
  update css
  
  Revision  Changes    Path
  1.10      +5 -2      moniwiki/theme/azblue/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/azblue/css/default.css,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- default.css	18 Jul 2006 12:37:00 -0000	1.9
  +++ default.css	19 Jul 2006 10:01:51 -0000	1.10
  @@ -274,10 +274,12 @@
     color:#440000;
     padding:5px;
     padding-left:55px;
  -  background: #E8E8E8 url(../imgs/warn.png) 10px 10px no-repeat;
  +  background: #FFF1B9 url(../imgs/warn.png) 10px 10px no-repeat;
     min-height: 40px;
     height: auto !important;
     height:40px;
  +  border-width:2px 0 2px 0;
  +  margin:0 10px 5px 10px;
   }
   
   div.message h3 {
  @@ -287,9 +289,10 @@
   
   pre.errlog {
     padding-left:55px;
  -  background: #E8E8E8 url(../imgs/error.png) 10px 10px no-repeat;
  +  background: #FFE784 url(../imgs/error.png) 10px 10px no-repeat;
     min-height: 40px;
     height: auto !important;
  +  border-width:2px 0 2px 0;
     height:40px;
   }
   
  
  
  


wkpark      2006/07/20 00:48:46

  Modified:    data     intermap.txt
  Log:
  remove some interwikis
  
  Revision  Changes    Path
  1.7       +3 -5      moniwiki/data/intermap.txt
  
  Index: intermap.txt
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/data/intermap.txt,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- intermap.txt	19 Jan 2006 08:20:39 -0000	1.6
  +++ intermap.txt	19 Jul 2006 15:48:46 -0000	1.7
  @@ -1,4 +1,4 @@
  -# $Id: intermap.txt,v 1.6 2006/01/19 08:20:39 wkpark Exp $
  +# $Id: intermap.txt,v 1.7 2006/07/19 15:48:46 wkpark Exp $
   # see http://usemod.com/intermap.txt 
   ISBN http://www.amazon.com/exec/obidos/ISBN=
   Wiki http://c2.com/cgi/wiki?
  @@ -31,12 +31,10 @@
   GentooKorea http://gentoo.or.kr/wiki/moin.cgi/
   DebianKorea http://debianusers.org/DebianWiki/
   BSDKorea http://wiki.bsdforum.or.kr/wiki.php/
  -KDEKorea http://wiki.kde.or.kr/wiki/
   Freefeel http://freefeel.org/wiki/
  -SFReaders http://www.sfreaders.org/moin.cgi/
  -Jangnan http://jangnan.st/wiki/
  +SFReaders http://wiki.sfreaders.org/
   Xper http://xper.org/wiki/xp/
   PyKug http://www.python.or.kr/pykug/
   KTUG http://faq.ktug.or.kr/faq/
   MoniWiki http://moniwiki.sf.net/wiki.php/
  -KLDPWiki http://wiki.kldp.org/wiki/
  +KLDPWiki http://wiki.kldp.org/wiki.php/
  
  
  


wkpark      2006/07/20 00:49:13

  Modified:    imgs/interwiki twiki-16.png
  Log:
  update
  
  Revision  Changes    Path
  1.2       +2 -1      moniwiki/imgs/interwiki/twiki-16.png
  
  	<<Binary file>>
  
  


wkpark      2006/07/20 08:48:05

  Modified:    plugin   theme.php
  Log:
  fixed PR #301266
  
  Revision  Changes    Path
  1.8       +10 -7     moniwiki/plugin/theme.php
  
  Index: theme.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/theme.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- theme.php	15 Jul 2006 19:09:08 -0000	1.7
  +++ theme.php	19 Jul 2006 23:48:05 -0000	1.8
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // Theme plugin for the MoniWiki
   //
  -// $Id: theme.php,v 1.7 2006/07/15 19:09:08 wkpark Exp $
  +// $Id: theme.php,v 1.8 2006/07/19 23:48:05 wkpark Exp $
   //
   
   function do_theme($formatter,$options) {
  @@ -29,9 +29,9 @@
       $msg="== "._("Theme cleared. Goto UserPreferences.")." ==";
     }
     else if ($options['theme']) {
  -    $themedir="theme/$options[theme]";
  +    $themedir=$formatter->themedir;
       if (file_exists($themedir."/header.php")) { # check
  -      $options['css_url']=$DBInfo->url_prefix."/$themedir/css/default.css";
  +      $options['css_url']=$formatter->themeurl."/css/default.css";
         if ($options['save'] and $options['id']=='Anonymous') {
           setcookie("MONI_THEME",$options['theme'],time()+60*60*24*30,
                                  get_scriptname());
  @@ -83,11 +83,14 @@
     <b>Supported theme lists</b>&nbsp;
   <select name='theme'>
   ";
  -  $handle = opendir("theme");
     $themes=array();
  -  while ($file = readdir($handle)) {
  -    if (!in_array($file,array('.','..','RCS','CVS')) and is_dir("theme/".$file))
  -      $themes[]= $file;
  +  $path=$DBInfo->themedir ? $DBInfo->themedir: '.';
  +  $handle = @opendir("$path/theme");
  +  if (is_resource($handle)) {
  +    while ($file = readdir($handle)) {
  +      if (!in_array($file,array('.','..','RCS','CVS')) and is_dir("$path/theme/".$file))
  +        $themes[]= $file;
  +    }
     }
   
     $out.="<option value=''>"._("-- Select --")."</option>\n";
  
  
  


wkpark      2006/07/20 08:51:24

  Modified:    .        wiki.php
  Log:
  fixed PR #301266
  
  Revision  Changes    Path
  1.318     +5 -5      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.317
  retrieving revision 1.318
  diff -u -r1.317 -r1.318
  --- wiki.php	19 Jul 2006 05:28:14 -0000	1.317
  +++ wiki.php	19 Jul 2006 23:51:24 -0000	1.318
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.317 2006/07/19 05:28:14 wkpark Exp $
  +// $Id: wiki.php,v 1.318 2006/07/19 23:51:24 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.317 $',1,-1);
  +$_revision = substr('$Revision: 1.318 $',1,-1);
   $_release = '1.1.2';
   
   #ob_start("ob_gzhandler");
  @@ -1572,8 +1572,8 @@
       $this->icons="";
       $this->quote_style=$DBInfo->quote_style? $DBInfo->quote_style:'quote';
   
  -    $this->themeurl= $DBInfo->url_prefix;
  -    $this->themedir= dirname(__FILE__);
  +    $this->themedir= $DBInfo->themedir ? $DBInfo->themedir:dirname(__FILE__);
  +    $this->themeurl= $DBInfo->themeurl ? $DBInfo->themeurl:$DBInfo->url_prefix;
       $this->set_theme($options['theme']);
   
       $this->NULL='';
  @@ -3984,7 +3984,7 @@
   if (!$options['theme']) $options['theme']=$theme=$DBInfo->theme;
   
   if ($theme and ($DBInfo->theme_css or !$options['css_url']))
  -  $options['css_url']=$DBInfo->url_prefix."/theme/$theme/css/default.css";
  +  $options['css_url']=($DBInfo->themeurl ? $DBInfo->themeurl:$DBInfo->url_prefix)."/theme/$theme/css/default.css";
   
   $options['timer']=&$timing;
   $options['timer']->Check("load");
  
  
  


wkpark      2006/07/20 08:57:08

  Modified:    .        Makefile
  Log:
  update
  
  Revision  Changes    Path
  1.3       +3 -0      moniwiki/Makefile
  
  Index: Makefile
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/Makefile,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Makefile	17 Oct 2004 16:37:14 -0000	1.2
  +++ Makefile	19 Jul 2006 23:57:08 -0000	1.3
  @@ -8,6 +8,9 @@
   	cp -ar wikiseed imgs css $(DESTDIR)$(prefix)/share/moniwiki
   	cp -ar lib plugin $(DESTDIR)$(prefix)/share/moniwiki
   	cp -ar locale tools $(DESTDIR)$(prefix)/share/moniwiki
  +	cp -ar local config $(DESTDIR)$(prefix)/share/moniwiki
  +	cp -ar theme $(DESTDIR)$(prefix)/share/moniwiki
  +	cp -ar applets $(DESTDIR)$(prefix)/share/moniwiki
   	cp wiki.php wikilib.php $(DESTDIR)$(prefix)/share/moniwiki
   	cp wikismiley.php $(DESTDIR)$(prefix)/share/moniwiki
   	cp config.php.default monisetup.php $(DESTDIR)$(prefix)/share/moniwiki
  
  
  


wkpark      2006/07/20 08:58:19

  Modified:    .        moni-install.in
  Log:
  fixup
  
  Revision  Changes    Path
  1.4       +2 -1      moniwiki/moni-install.in
  
  Index: moni-install.in
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/moni-install.in,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- moni-install.in	25 Feb 2006 07:01:23 -0000	1.3
  +++ moni-install.in	19 Jul 2006 23:58:19 -0000	1.4
  @@ -10,7 +10,8 @@
   [ ! -d imgs ] && cp -a $INSTDIR/imgs .
   [ ! -d theme ] && cp -a $INSTDIR/theme .
   [ ! -d css ] && cp -a $INSTDIR/css .
  -[ ! -d local ] && cp -a $INSTDIR/css .
  +[ ! -d local ] && cp -a $INSTDIR/local .
  +[ ! -d config ] && cp -a $INSTDIR/config .
   [ ! -d applets ] && cp -a $INSTDIR/applets .
   cp $INSTDIR/{monisetup.*,secure.sh,config.php.default} .
   
  
  
  


wkpark      2006/07/20 09:01:16

  Added:       config   acl.default.php.sample
  Removed:     config   acl.default.php
  Log:
  rename
  
  Revision  Changes    Path
  1.1                  moniwiki/config/acl.default.php.sample
  
  Index: acl.default.php.sample
  ===================================================================
  # a sample acl.default.php
  # <?php exit()?>
  # Please don't modify the lines above
  #
  # A sample Access Control Lists file for Moniwiki
  #
  # $Id: acl.default.php.sample,v 1.1 2006/07/20 00:01:16 wkpark Exp $
  @Guest	Anonymous
  *	@ALL		deny	*
  *	@ALL		allow	edit,ticket,savepage
  *	@User		allow	*
  # some pages are allowed to edit
  WikiSandBox	@Guest	allow	edit,info,diff
  #*	Anonymous	deny	*
  # some POST actions support protected mode using admin password
  *	@ALL		protect	deletefile,deletepage,rename,rcspurge,rcs,chmod,backup,restore
  # some actions allowed to @ALL
  *	@ALL		allow	read,userform,rss_rc,aclinfo,fortune,deletepage,fixmoin,ticket
  # some pages have restrict permission
  MoniWiki	@ALL	deny	edit,uploadfile,diff
  # you can use simple wildcards
  HelpOn*		@User	deny	edit,uploadfile,diff
  # and also use regex
  #MoniWiki/.*		@User	deny	edit,uploadfile
  # special pages
  ACL	@ALL		deny    edit,diff,info # a shared ACL file (not supported yet XXX)
  # set group members
  #@KLDP	Hello,foobar,moniwiki
  #@Kiwirian	foobar
  #*	@Kiwirian	deny	*
  #*	@Kiwirian	allow	read
  
  
  


wkpark      2006/07/20 19:38:22

  Modified:    plugin   autogoto.php man_get.php
  Log:
  enhanced man_get action. support sect,lang
  autogoto using man_get
  
  Revision  Changes    Path
  1.2       +17 -1     moniwiki/plugin/autogoto.php
  
  Index: autogoto.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/autogoto.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- autogoto.php	3 Apr 2005 09:07:30 -0000	1.1
  +++ autogoto.php	20 Jul 2006 10:38:22 -0000	1.2
  @@ -5,11 +5,27 @@
   //
   // Usage: set $auto_search='AutoGoto'; in the config.php
   //
  -// $Id: autogoto.php,v 1.1 2005/04/03 09:07:30 wkpark Exp $
  +// $Id: autogoto.php,v 1.2 2006/07/20 10:38:22 wkpark Exp $
   
   function do_AutoGoto($formatter,$options) {
       global $DBInfo;
   
  +    if ($DBInfo->autogoto_options) {
  +        $opts=explode(',',$DBInfo->autogoto_options);
  +        foreach ($opts as $opt) {
  +            $opt=trim($opt);
  +            if ($opt=='man') {
  +                $v=explode(' ',trim($formatter->page->name));
  +                if (strtolower($v[0])=='man') {
  +                    $options['url']=
  +                        $formatter->link_url('ManPage',
  +                        "?action=man_get&man=".$v[1]);
  +                    do_goto($formatter,$options);
  +                    return true;
  +                }
  +            }
  +        }
  +    }
       $npage=str_replace(' ','',$formatter->page->name);
       if ($DBInfo->hasPage($npage)) {
           $options['value']=$npage;
  
  
  
  1.5       +52 -9     moniwiki/plugin/man_get.php
  
  Index: man_get.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/man_get.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- man_get.php	7 Jul 2006 14:18:18 -0000	1.4
  +++ man_get.php	20 Jul 2006 10:38:22 -0000	1.5
  @@ -3,11 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a man_get action plugin for the MoniWiki
   //
  -// $Id: man_get.php,v 1.4 2006/07/07 14:18:18 wkpark Exp $
  +// $Id: man_get.php,v 1.5 2006/07/20 10:38:22 wkpark Exp $
   // vim:et:ts=2:
   
   function do_man_get($formatter,$options) {
     global $DBInfo;
  +  $supported=array('ko','ja','fr','C','en');
   
     if (!$options['man']) {
       $options['title']=_("No manpage selected");
  @@ -15,11 +16,18 @@
       return;
     }
   
  -  $cmd="man -w $options[man]";
  +  $LANG='';
  +  if ($options['lang'] and in_array($options['lang'],$supported))
  +    $LANG='LANG='.$options['lang'];
  +  $cmd=$LANG." man $options[sect] -a -w $options[man]";
     $formatter->errlog();
     $fp=popen(escapeshellcmd($cmd).$formatter->LOG,'r');
     if (is_resource($fp)) {
  -    $fname=rtrim(fgets($fp,1024));
  +    $fnames=array();
  +    while ($l=fgets($fp,1024)) {
  +      if (preg_match('/\.gz$/',$l))
  +        $fnames[]=trim($l);
  +    }
       pclose($fp);
     }
     $err=$formatter->get_errlog();
  @@ -27,13 +35,21 @@
       $err='<pre class="errlog">'.$err.'</pre>';
     }
   
  -  if (!$fname) {
  +  if (!$fnames) {
       $options['title']=_("No manpage found");
  +    $options['msg']=$err; // XXX
       do_invalid($formatter,$options);
       return;
     }
  -  $man= preg_replace("/\.gz$/","",basename($fname));
  -  $options['page']="ManPage/$man";
  +  $sz=count($fnames);
  +  $man=array();
  +  if ($sz >=1) {
  +    foreach ($fnames as $fname) {
  +      $man[]= $tmp=preg_replace("/\.gz$/","",basename($fname));
  +    }
  +    $options['page']="ManPage/$man[0]";
  +    $fname=$fnames[0];
  +  }
   
     if ($DBInfo->hasPage($options['page'])) {
       $options['value']=$options['page'];
  @@ -49,19 +65,46 @@
       $raw=join("\n",$raw);
     }
   
  -  $options['title']=$options['page'];
  -
  +  if ($sz>1) {
  +    $lnk=array();
  +    foreach ($fnames as $f) {
  +      $tmp=preg_match("@/([^/]+)?/man./([^/]+).(.)\.gz$@",$f,$m);
  +      $lang='en';
  +      if ($m) {
  +        if ($m[1] != 'man') $lang=$m[1];
  +        $myman=$m[2];
  +        $mysect=$m[3];
  +        if ($lang) $lang='&amp;lang='.$lang;
  +        $lnk[]=$formatter->link_tag('ManPage/'.$myman.'.'.$mysect,
  +            '?action=man_get&amp;man='.$myman.'&amp;sect='.$mysect.$lang);
  +      }
  +    }
  +    $options['msg']=implode(', ',$lnk);
  +  }
     $formatter->send_header("",$options);
     $formatter->send_title("","",$options);
  +
  +  if ($DBInfo->man_charset and
  +    $DBInfo->man_charset != $DBInfo->charset) {
  +    if (function_exists('iconv')) {
  +      $raw=iconv($DBInfo->man_charset,$DBInfo->charset,$raw);
  +    }
  +  }
     $options['savetext']=$raw;
  +
     if ($options['edit']) {
       print macro_EditText($formatter,$raw,$options);
     } else {
       print $formatter->processor_repl('man',$raw,$options);
  -    $formatter->actions[]='?action=man_get&man='.$options['man'].'&edit=1 '._("Edit");
  +    $extra='';
  +    if ($options['sect']) $extra='&amp;sect='.$options['sect'];
  +    if ($options['lang']) $extra='&amp;lang='.$options['lang'];
  +    $formatter->actions[]='?action=man_get&man='.$options['man'].
  +        $extra.'&amp;edit=1 '._("Edit");
     }
     $formatter->send_footer('',$options);
     return;
  +// vim:et:sts=4:
   }
   
   ?>
  
  
  


wkpark      2006/07/21 18:23:20

  Modified:    plugin   Gallery.php
  Log:
  enhanced GalleryMacro. add prev,next tags patched by kz
  set query args for sorting
  
  Revision  Changes    Path
  1.29      +30 -13    moniwiki/plugin/Gallery.php
  
  Index: Gallery.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Gallery.php,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- Gallery.php	15 Jul 2006 01:48:05 -0000	1.28
  +++ Gallery.php	21 Jul 2006 09:23:20 -0000	1.29
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Gallery]]
   //
  -// $Id: Gallery.php,v 1.28 2006/07/15 01:48:05 wkpark Exp $
  +// $Id: Gallery.php,v 1.29 2006/07/21 09:23:20 wkpark Exp $
   
   function get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -64,7 +64,7 @@
     $default_row=4;
     $col=$options['col'] > 0 ? (int)$options['col']:0;
     $row=$options['row'] > 0 ? (int)$options['row']:0;
  -  $sort=$options['sort'] ? 1:0;
  +  $sort=$options['sort'] ? $options['sort']:'';
   
     // parse args
     preg_match("/^(('|\")([^\\2]+)\\2)?,?(\s*,?\s*.*)?$/",
  @@ -127,6 +127,14 @@
         $comments[$name]=$comment;
       }
     }
  +  if ($sort) {
  +    if ($sort ==1) {
  +     arsort($upfiles);
  +    } elseif ($sort=='name') {
  +     ksort($upfiles);
  +    }
  +  }
  +  else asort($upfiles);
   
     if ($options['value'])
       $file=urldecode($options['value']);
  @@ -169,6 +177,12 @@
       // show comments of the selected item
       $mtime=$upfiles[$file];
       $comment=$comments[$file];
  +
  +    $values=array_keys($upfiles);
  +    $prev_value=$values[array_search($file,$values)-1];
  +    $next_value=$values[array_search($file,$values)+1];
  +    unset($values);
  +
       $upfiles=array();
       $comments=array();
       $upfiles[$file]=$mtime;
  @@ -202,14 +216,6 @@
     }
   
     if (!$upfiles) return "<h3>"._("No files found")."</h3>\n";
  -  if ($sort) {
  -    if ($sort ==1) {
  -     arsort($upfiles);
  -    } elseif ($sort=='name') {
  -     ksort($upfiles);
  -    }
  -  }
  -  else asort($upfiles);
   
     $out.="<table width='100%' border='0' cellpadding='2'>\n<tr>\n";
     $idx=1;
  @@ -223,9 +229,11 @@
       $upfiles=array_slice($upfiles,$slice_index);
     }
   
  +  $extra=$sort ? "&amp;sort=".$sort:'';
  +
     if ($pages > 1)
       $pnut=get_pagelist($formatter,$pages,
  -      '?action=gallery&amp;col='.$col.'&amp;row='.$row.
  +      '?action=gallery&amp;col='.$col.'&amp;row='.$row.$extra.
         '&amp;p=',$options['p'],$perpage);
   
     if (!file_exists($dir."/thumbnails")) @mkdir($dir."/thumbnails",0777);
  @@ -235,7 +243,7 @@
       $id=rawurlencode($file);
       $linksrc=($key == $value) ? $prefix.$id:
         str_replace('value=','value='.$id,$prefix);
  -    $link=$selected ? $linksrc:$formatter->link_url($formatter->page->urlname,"?action=gallery&amp;value=$id");
  +    $link=$selected ? $linksrc:$formatter->link_url($formatter->page->urlname,"?action=gallery$extra&amp;value=$id");
       $date=date("Y-m-d",$mtime);
       if (preg_match("/\.(jpg|jpeg|gif|png)$/i",$file)) {
         if ($DBInfo->use_convert_thumbs and !file_exists($dir."/thumbnails/".$file)) {
  @@ -315,7 +323,16 @@
     $idx--;
     $out.="</tr></table>\n";
   
  -  return $pnut.$out.$pnut;
  +  if ($prev_value) {
  +    $prev_link="<a id='gallery-prev-link' href='".$formatter->link_url($formatter->page->urlname,"?action=gallery&amp;value=$prev_value")."'>prev</a>";
  +  } else
  +    $prev_link='';
  +  if ($next_value) {
  +    $next_link="<a id='gallery-next-link' href='".$formatter->link_url($formatter->page->urlname,"?action=gallery&amp;value=$next_value")."'>next</a>";
  +  } else
  +    $next_link='';
  +
  +  return $pnut.$prev_link.$out.$next_link.$pnut;
   }
   
   function do_gallery($formatter,$options='') {
  
  
  


wkpark      2006/07/21 18:26:23

  Modified:    plugin   man_get.php
  Log:
  rename sect to sec
  
  Revision  Changes    Path
  1.6       +7 -6      moniwiki/plugin/man_get.php
  
  Index: man_get.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/man_get.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- man_get.php	20 Jul 2006 10:38:22 -0000	1.5
  +++ man_get.php	21 Jul 2006 09:26:23 -0000	1.6
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a man_get action plugin for the MoniWiki
   //
  -// $Id: man_get.php,v 1.5 2006/07/20 10:38:22 wkpark Exp $
  +// $Id: man_get.php,v 1.6 2006/07/21 09:26:23 wkpark Exp $
   // vim:et:ts=2:
   
   function do_man_get($formatter,$options) {
  @@ -19,7 +19,8 @@
     $LANG='';
     if ($options['lang'] and in_array($options['lang'],$supported))
       $LANG='LANG='.$options['lang'];
  -  $cmd=$LANG." man $options[sect] -a -w $options[man]";
  +  if ($options['sec']!=intval($options['sec'])) unset($options['sec']);
  +  $cmd=$LANG." man $options[sec] -a -w $options[man]";
     $formatter->errlog();
     $fp=popen(escapeshellcmd($cmd).$formatter->LOG,'r');
     if (is_resource($fp)) {
  @@ -73,10 +74,10 @@
         if ($m) {
           if ($m[1] != 'man') $lang=$m[1];
           $myman=$m[2];
  -        $mysect=$m[3];
  +        $mysec=$m[3];
           if ($lang) $lang='&amp;lang='.$lang;
  -        $lnk[]=$formatter->link_tag('ManPage/'.$myman.'.'.$mysect,
  -            '?action=man_get&amp;man='.$myman.'&amp;sect='.$mysect.$lang);
  +        $lnk[]=$formatter->link_tag('ManPage/'.$myman.'.'.$mysec,
  +            '?action=man_get&amp;man='.$myman.'&amp;sec='.$mysec.$lang);
         }
       }
       $options['msg']=implode(', ',$lnk);
  @@ -97,7 +98,7 @@
     } else {
       print $formatter->processor_repl('man',$raw,$options);
       $extra='';
  -    if ($options['sect']) $extra='&amp;sect='.$options['sect'];
  +    if ($options['sec']) $extra='&amp;sec='.$options['sec'];
       if ($options['lang']) $extra='&amp;lang='.$options['lang'];
       $formatter->actions[]='?action=man_get&man='.$options['man'].
           $extra.'&amp;edit=1 '._("Edit");
  
  
  


wkpark      2006/07/21 20:05:15

  Modified:    plugin   Gallery.php
  Log:
  support "nocomment" option.
  change prev/next position.
  change css id to class
  
  Revision  Changes    Path
  1.30      +25 -19    moniwiki/plugin/Gallery.php
  
  Index: Gallery.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Gallery.php,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- Gallery.php	21 Jul 2006 09:23:20 -0000	1.29
  +++ Gallery.php	21 Jul 2006 11:05:15 -0000	1.30
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Gallery]]
   //
  -// $Id: Gallery.php,v 1.29 2006/07/21 09:23:20 wkpark Exp $
  +// $Id: Gallery.php,v 1.30 2006/07/21 11:05:15 wkpark Exp $
   
   function get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -65,6 +65,7 @@
     $col=$options['col'] > 0 ? (int)$options['col']:0;
     $row=$options['row'] > 0 ? (int)$options['row']:0;
     $sort=$options['sort'] ? $options['sort']:'';
  +  $nocomment=$options['nocomment'] ? $options['nocomment']:'';
   
     // parse args
     preg_match("/^(('|\")([^\\2]+)\\2)?,?(\s*,?\s*.*)?$/",
  @@ -72,6 +73,7 @@
     $opts=explode(',',$match[4]);
     foreach ($opts as $opt) {
       if ($opt == 'showall') $show_all=1;
  +    else if ($opt=='nocomment') $nocomment=1;
       else if (($p=strpos($opt,'='))!==false) {
         $k=substr($opt,0,$p);
         $v=substr($opt,$p+1);
  @@ -86,15 +88,18 @@
     if (!in_array($sort,array(0,1,'name','date'))) {
       $sort=0;
     }
  +
  +  $img_default_width=150;
     if ($col > 1) {
       $col_td_width=(int) (100/$col);
       $col_td_width=' width="'.$col_td_width.'%"';
  +    $img_default_width=(int) (100/$col)*5; // XXX assume 500px
     }
   
     $default_width=$DBInfo->gallery_img_width ? $DBInfo->gallery_img_width:600;
     $img_class="gallery-img";
   
  -  $col=($col<=0 or $col>7) ? $default_column:$col;
  +  $col=($col<=0 or $col>10) ? $default_column:$col;
     $row=($row<=0 or $row>7) ? $default_row:$row;
     $perpage=$col*$row;
   
  @@ -189,8 +194,16 @@
       $comments[$file]=$comment;
       $selected=1;
       $img_class="gallery-sel";
  +    if ($prev_value) {
  +      $prev_link="<span class='gallery-prev-link'><a href='".$formatter->link_url($formatter->page->urlname,"?action=gallery&amp;value=$prev_value")."'><span class='gallery-prev-text'>&#171;Prev</span></a></span>";
  +    } else
  +      $prev_link='';
  +    if ($next_value) {
  +      $next_link="<span class='gallery-next-link'><a href='".$formatter->link_url($formatter->page->urlname,"?action=gallery&amp;value=$next_value")."'><span class='gallery-next-text'>Next&#187;</span></a></span>";
  +    } else
  +      $next_link='';
     }
  -  $width=$selected ? $default_width:150;
  +  $width=$selected ? $default_width:$img_default_width;
   
     $mtime=file_exists($dir."/list.txt") ? filemtime($dir."/list.txt"):0;
     if ((filemtime($dir) > $mtime) or $update) {
  @@ -230,6 +243,7 @@
     }
   
     $extra=$sort ? "&amp;sort=".$sort:'';
  +  $extra.=$nocomment ? "&amp;nocomment=1":'';
   
     if ($pages > 1)
       $pnut=get_pagelist($formatter,$pages,
  @@ -292,14 +306,16 @@
   #    $size=round($size,2).' '.$unit[$i];
   
       $comment='';
  -    $comment_btn=_("add comment");
  +    $comment_btn='';
  +    $comment_btn=$nocomment ? '':_("add comment");
  +    $imginfo=(!$nocomment or $selected) ? "$date ($size) ":'';
       if ($comments[$file] != '' and $options['value']) {
         $comment=$comments[$file];
         $comment=str_replace("\\n","\n",$comment);
         $options['comments']=str_replace("\t","\n----\n",$comment);
         $comment=str_replace("\t","<div class='separator'><hr /></div>",$comment);
         $comment=str_replace("\n","<br/>\n",$comment);
  -    } else if (!empty($comments[$file])) {
  +    } else if ((!$nocomment or $selected) and !empty($comments[$file])) {
         if (empty($show_all)) {
           $comment_btn=_("show comments");
           list($comment,$dum)=explode("\t",$comments[$file],2);
  @@ -309,11 +325,10 @@
         }
         $comment=str_replace("\\n","<br/>\n",$comment);
       }
  -    $out.="<td $col_td_width align='center' valign='top' class='wiki'><div class='$img_class' $img_style><a href='$link'>$object</a><br />".
  -          "$date ($size) ";
  -    if (!$options['value'])
  +    $out.="<td $col_td_width align='center' valign='top'>$prev_link<div class='$img_class' $img_style><a href='$link'>$object</a><br />".$imginfo;
  +    if ($comment_btn)
         $out.='['.$formatter->link_tag($formatter->page->urlname,"?action=gallery&amp;value=$id",$comment_btn)."]<br />\n";
  -    $out.='</div>';
  +    $out.='</div>'.$next_link;
       if ($comment) $out.="<div class='gallery-comments' $comment_style>$comment</div>";
       $out.="</td>\n";
       if ($idx % $col == 0) $out.="</tr>\n<tr>\n";
  @@ -323,16 +338,7 @@
     $idx--;
     $out.="</tr></table>\n";
   
  -  if ($prev_value) {
  -    $prev_link="<a id='gallery-prev-link' href='".$formatter->link_url($formatter->page->urlname,"?action=gallery&amp;value=$prev_value")."'>prev</a>";
  -  } else
  -    $prev_link='';
  -  if ($next_value) {
  -    $next_link="<a id='gallery-next-link' href='".$formatter->link_url($formatter->page->urlname,"?action=gallery&amp;value=$next_value")."'>next</a>";
  -  } else
  -    $next_link='';
  -
  -  return $pnut.$prev_link.$out.$next_link.$pnut;
  +  return $pnut.'<div class="gallery">'.$out.'</div>'.$pnut;
   }
   
   function do_gallery($formatter,$options='') {
  
  
  


wkpark      2006/07/21 20:19:18

  Modified:    .        wikilib.php
  Log:
  fixed do_titlesearch() bug with the autogoto action.
  
  Revision  Changes    Path
  1.210     +2 -1      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.209
  retrieving revision 1.210
  diff -u -r1.209 -r1.210
  --- wikilib.php	15 Jul 2006 01:10:29 -0000	1.209
  +++ wikilib.php	21 Jul 2006 11:19:18 -0000	1.210
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.209 2006/07/15 01:10:29 wkpark Exp $
  +// $Id: wikilib.php,v 1.210 2006/07/21 11:19:18 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1114,6 +1114,7 @@
   
     if ($ret['hits']==1) {
       $options['value']=$ret['value'];
  +    $options['redirect']=1;
       do_goto($formatter,$options);
       return true;
     }
  
  
  


wkpark      2006/07/21 20:41:38

  Modified:    plugin   Gallery.php
  Log:
  more customizable prev/next button
  
  Revision  Changes    Path
  1.31      +9 -5      moniwiki/plugin/Gallery.php
  
  Index: Gallery.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Gallery.php,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- Gallery.php	21 Jul 2006 11:05:15 -0000	1.30
  +++ Gallery.php	21 Jul 2006 11:41:38 -0000	1.31
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Gallery]]
   //
  -// $Id: Gallery.php,v 1.30 2006/07/21 11:05:15 wkpark Exp $
  +// $Id: Gallery.php,v 1.31 2006/07/21 11:41:38 wkpark Exp $
   
   function get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -195,13 +195,17 @@
       $selected=1;
       $img_class="gallery-sel";
       if ($prev_value) {
  -      $prev_link="<span class='gallery-prev-link'><a href='".$formatter->link_url($formatter->page->urlname,"?action=gallery&amp;value=$prev_value")."'><span class='gallery-prev-text'>&#171;Prev</span></a></span>";
  +      $prev_link="<div class='gallery-prev-link'><a href='".$formatter->link_url($formatter->page->urlname,"?action=gallery&amp;value=$prev_value")."'><span class='gallery-prev-text'>&#171;Prev</span></a></div>";
       } else
         $prev_link='';
       if ($next_value) {
  -      $next_link="<span class='gallery-next-link'><a href='".$formatter->link_url($formatter->page->urlname,"?action=gallery&amp;value=$next_value")."'><span class='gallery-next-text'>Next&#187;</span></a></span>";
  +      $next_link="<div class='gallery-next-link'><a href='".$formatter->link_url($formatter->page->urlname,"?action=gallery&amp;value=$next_value")."'><span class='gallery-next-text'>Next&#187;</span></a></div>";
       } else
         $next_link='';
  +    if ($next_link or $prev_link) {
  +      $top_link="<div class='gallery-top-link'>$prev_link$next_link</div>";
  +      $bot_link="<div class='gallery-bottom-link'>$prev_link$next_link</div>";
  +    }
     }
     $width=$selected ? $default_width:$img_default_width;
   
  @@ -325,10 +329,10 @@
         }
         $comment=str_replace("\\n","<br/>\n",$comment);
       }
  -    $out.="<td $col_td_width align='center' valign='top'>$prev_link<div class='$img_class' $img_style><a href='$link'>$object</a><br />".$imginfo;
  +    $out.="<td $col_td_width align='center' valign='top'>$top_link<div class='$img_class' $img_style><a href='$link'>$object</a><br />".$imginfo;
       if ($comment_btn)
         $out.='['.$formatter->link_tag($formatter->page->urlname,"?action=gallery&amp;value=$id",$comment_btn)."]<br />\n";
  -    $out.='</div>'.$next_link;
  +    $out.='</div>'.$bot_link;
       if ($comment) $out.="<div class='gallery-comments' $comment_style>$comment</div>";
       $out.="</td>\n";
       if ($idx % $col == 0) $out.="</tr>\n<tr>\n";
  
  
  


wkpark      2006/07/21 20:42:10

  Modified:    css      _base.css _extra.css
  Log:
  update
  
  Revision  Changes    Path
  1.10      +1 -0      moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- _base.css	18 Jul 2006 13:09:07 -0000	1.9
  +++ _base.css	21 Jul 2006 11:42:10 -0000	1.10
  @@ -306,6 +306,7 @@
   
   img.url {
     vertical-align:middle; /* */
  +  border:0px;
   }
   
   img.icon {
  
  
  
  1.8       +11 -0     moniwiki/css/_extra.css
  
  Index: _extra.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_extra.css,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- _extra.css	14 Jul 2006 12:11:16 -0000	1.7
  +++ _extra.css	21 Jul 2006 11:42:10 -0000	1.8
  @@ -31,6 +31,17 @@
     padding: 5px;
   }
   
  +.gallery-prev-link {
  +  float:left;
  +}
  +.gallery-next-link {
  +  float:right;
  +}
  +
  +.gallery-top-link {
  +  visibility:hidden;
  +}
  +
   .cloudView {
     display:inline;
   }
  
  
  


wkpark      2006/07/21 21:44:21

  Modified:    .        wiki.php
  Log:
  fixed ascii range in the interwiki rule
  
  Revision  Changes    Path
  1.319     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.318
  retrieving revision 1.319
  diff -u -r1.318 -r1.319
  --- wiki.php	19 Jul 2006 23:51:24 -0000	1.318
  +++ wiki.php	21 Jul 2006 12:44:21 -0000	1.319
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.318 2006/07/19 23:51:24 wkpark Exp $
  +// $Id: wiki.php,v 1.319 2006/07/21 12:44:21 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.318 $',1,-1);
  +$_revision = substr('$Revision: 1.319 $',1,-1);
   $_release = '1.1.2';
   
   #ob_start("ob_gzhandler");
  @@ -1657,7 +1657,7 @@
       #"\b(".$DBInfo->interwikirule."):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
       #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
       #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+[^\(\)<>\s\',\.:\?\!]+)|".
  -    "(\b|\^?)([A-Z][a-zA-Z]+):([^\(\)<>\s\']*[^\(\)<>\s\'\",\.:\?\!]*(\s(?![\x33-\x7e]))?)";
  +    "(\b|\^?)([A-Z][a-zA-Z]+):([^\(\)<>\s\']*[^\(\)<>\s\'\",\.:\?\!]*(\s(?![\x21-\x7e]))?)";
   
       if ($camelcase)
         $this->wordrule.='|'.
  
  
  


wkpark      2006/07/22 13:48:22

  Modified:    plugin/security community.php
  Log:
  protect deletepage action
  
  Revision  Changes    Path
  1.5       +10 -6     moniwiki/plugin/security/community.php
  
  Index: community.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/community.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- community.php	5 Jan 2006 17:33:43 -0000	1.4
  +++ community.php	22 Jul 2006 04:48:22 -0000	1.5
  @@ -1,6 +1,6 @@
   <?php
   # a community security plugin for the MoniWiki
  -# $Id: community.php,v 1.4 2006/01/05 17:33:43 wkpark Exp $
  +# $Id: community.php,v 1.5 2006/07/22 04:48:22 wkpark Exp $
   
   class Security_community extends Security {
     var $DB;
  @@ -50,7 +50,7 @@
     }
   
     function is_allowed($action='read',&$options) {
  -    $allowed_actions=array('theme','css','userform','bookmark','goto','dot',
  +    $allowed_actions=array('read','theme','css','userform','bookmark','goto','dot',
         'trackback','rss_rc','rss','blogrss','urlencode','deletepage',
         'titlesearch','info','download','comment','notitle','fixmoin');
       $notallowed_actions=array('raw','recall','diff','info','rcs','deletepage',
  @@ -61,6 +61,7 @@
         $options['err'].="\n"._("Please Login or make your ID on this Wiki ;)");
         return 0;
       }
  +    print_r($options);
       $method='may_'.$action;
       if (method_exists($this, $method)) {
         return $this->$method ($action,$options);
  @@ -70,14 +71,17 @@
   
     function is_protected($action="read",&$options) {
       # password protected POST actions
  -    $protected_actions=array("rcs","rcspurge","chmod","backup","restore");
  +    $protected_actions=array("rcs","rcspurge","chmod","backup","restore","deletefile");
  +    $notprotected_actions=array("userform");
       $action=strtolower($action);
   
  -    if (in_array($action,$protected_actions)) {
  -      return 1;
  -    }
  +    if (in_array($action,$protected_actions)) return 1;
  +    if (in_array($action,$notprotected_actions)) return 0;
  +    if ($options['id']=='Anonymous') return 1;
  +
       return 0;
     }
  +// vim:et:sts=2:
   }
   
   ?>
  
  
  


wkpark      2006/07/22 20:15:46

  Modified:    locale   Makefile
  Log:
  update
  
  Revision  Changes    Path
  1.8       +9 -4      moniwiki/locale/Makefile
  
  Index: Makefile
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/Makefile,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Makefile	25 Feb 2006 07:16:37 -0000	1.7
  +++ Makefile	22 Jul 2006 11:15:46 -0000	1.8
  @@ -1,4 +1,4 @@
  -# $Id: Makefile,v 1.7 2006/02/25 07:16:37 wkpark Exp $
  +# $Id: Makefile,v 1.8 2006/07/22 11:15:46 wkpark Exp $
   #
   # locale/Makefile
   #
  @@ -65,7 +65,6 @@
   ${POT_FILE}: ../plugin/Clip.php
   ${POT_FILE}: ../plugin/Comment.php
   ${POT_FILE}: ../plugin/Diff.php
  -${POT_FILE}: ../plugin/DisMol.php
   ${POT_FILE}: ../plugin/Draw.php
   ${POT_FILE}: ../plugin/DueDate.php
   ${POT_FILE}: ../plugin/Echo.php
  @@ -81,7 +80,6 @@
   ${POT_FILE}: ../plugin/ImportUrl.php
   ${POT_FILE}: ../plugin/Include.php
   ${POT_FILE}: ../plugin/Info.php
  -${POT_FILE}: ../plugin/JME.php
   ${POT_FILE}: ../plugin/Keywords.php
   ${POT_FILE}: ../plugin/LikePages.php
   ${POT_FILE}: ../plugin/LineHeight.php
  @@ -93,6 +91,7 @@
   ${POT_FILE}: ../plugin/OeKaki.php
   ${POT_FILE}: ../plugin/PGBR.php
   ${POT_FILE}: ../plugin/PageHits.php
  +${POT_FILE}: ../plugin/PageLinks.php
   ${POT_FILE}: ../plugin/Play.php
   ${POT_FILE}: ../plugin/RandomBanner.php
   ${POT_FILE}: ../plugin/RecentChanges.php
  @@ -113,6 +112,7 @@
   ${POT_FILE}: ../plugin/Vote.php
   ${POT_FILE}: ../plugin/WantedPages.php
   ${POT_FILE}: ../plugin/WordIndex.php
  +${POT_FILE}: ../plugin/aclinfo.php
   ${POT_FILE}: ../plugin/autogoto.php
   ${POT_FILE}: ../plugin/backup.php
   ${POT_FILE}: ../plugin/blogrss.php
  @@ -134,9 +134,11 @@
   ${POT_FILE}: ../plugin/home.php
   ${POT_FILE}: ../plugin/login.php
   ${POT_FILE}: ../plugin/man_get.php
  +${POT_FILE}: ../plugin/markup.php
   ${POT_FILE}: ../plugin/minilogin.php
   ${POT_FILE}: ../plugin/moniedit.php
   ${POT_FILE}: ../plugin/moztab.php
  +${POT_FILE}: ../plugin/msgfmt.php
   ${POT_FILE}: ../plugin/new.php
   ${POT_FILE}: ../plugin/notitle.php
   ${POT_FILE}: ../plugin/pageview.php
  @@ -146,8 +148,8 @@
   ${POT_FILE}: ../plugin/processor/blog.php
   ${POT_FILE}: ../plugin/processor/chat.php
   ${POT_FILE}: ../plugin/processor/diff.php
  -${POT_FILE}: ../plugin/processor/dismol.php
   ${POT_FILE}: ../plugin/processor/dot.php
  +${POT_FILE}: ../plugin/processor/enscript.php
   ${POT_FILE}: ../plugin/processor/freemind.php
   ${POT_FILE}: ../plugin/processor/geshi.php
   ${POT_FILE}: ../plugin/processor/gnuplot.php
  @@ -163,6 +165,7 @@
   ${POT_FILE}: ../plugin/processor/mimetex.php
   ${POT_FILE}: ../plugin/processor/octave.php
   ${POT_FILE}: ../plugin/processor/pic.php
  +${POT_FILE}: ../plugin/processor/po.php
   ${POT_FILE}: ../plugin/processor/pre.php
   ${POT_FILE}: ../plugin/processor/python.php
   ${POT_FILE}: ../plugin/processor/randomquote.php
  @@ -180,6 +183,8 @@
   ${POT_FILE}: ../plugin/rss_blog.php
   ${POT_FILE}: ../plugin/rss_rc.php
   ${POT_FILE}: ../plugin/scrap.php
  +${POT_FILE}: ../plugin/security/acl.php
  +${POT_FILE}: ../plugin/security/authbasic.php
   ${POT_FILE}: ../plugin/security/community.php
   ${POT_FILE}: ../plugin/security/desktop.php
   ${POT_FILE}: ../plugin/security/htaccesslogin.php
  
  
  


wkpark      2006/07/22 20:15:46

  Modified:    locale/po fr.po ko.po moniwiki.pot
  Log:
  update
  
  Revision  Changes    Path
  1.17      +350 -241  moniwiki/locale/po/fr.po
  
  Index: fr.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/fr.po,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- fr.po	1 Jul 2006 18:59:33 -0000	1.16
  +++ fr.po	22 Jul 2006 11:15:46 -0000	1.17
  @@ -3,7 +3,7 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1\n"
  -"POT-Creation-Date: 2006-07-02 04:01+0900\n"
  +"POT-Creation-Date: 2006-07-22 20:14+0900\n"
   "PO-Revision-Date: 2003-08-17 22:51+0900\n"
   "Last-Translator: Serge Stinckwich <Serge.Stinckwich@info.unicaen.fr>\n"
   "Language-Team: fr <fr@li.org>\n"
  @@ -12,18 +12,18 @@
   "Content-Transfer-Encoding: 8bit\n"
   
   # ../plugin/Attachment.php:24
  -#: ../plugin/Attachment.php:41 ../plugin/Attachment.php:128
  +#: ../plugin/Attachment.php:42 ../plugin/Attachment.php:129
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr "Tlcharger le nouvel attachement \"%s\""
   
   # ../plugin/OeKaki.php:118
  -#: ../plugin/Attachment.php:125
  +#: ../plugin/Attachment.php:126
   msgid "or paste a new picture"
   msgstr "or Crer un nouveau dessin"
   
   # ../plugin/Attachment.php:24
  -#: ../plugin/Attachment.php:131
  +#: ../plugin/Attachment.php:132
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
  @@ -193,7 +193,7 @@
   msgstr "commentaire"
   
   # ../wikilib.php:482
  -#: ../plugin/Comment.php:62 ../wikilib.php:771
  +#: ../plugin/Comment.php:62 ../wikilib.php:798
   msgid "Preview"
   msgstr "Prvisualisation"
   
  @@ -208,11 +208,12 @@
   msgstr ""
   
   # ../plugin/restore.php:27
  -#: ../plugin/Comment.php:86 ../plugin/Keywords.php:309
  +#: ../plugin/Comment.php:86 ../plugin/Keywords.php:333
   msgid "Page does not exists"
   msgstr ""
   
  -#: ../plugin/Comment.php:119 ../wikilib.php:1179 ../wikilib.php:1323
  +#: ../plugin/Comment.php:119 ../plugin/Gallery.php:166 ../wikilib.php:1207
  +#: ../wikilib.php:1351
   msgid ""
   "Sorry, can not save page because some messages are blocked in this wiki."
   msgstr ""
  @@ -244,7 +245,7 @@
   msgstr ""
   
   # ../wiki.php:2338 ../wiki.php:2373 ../wikilib.php:770
  -#: ../plugin/Diff.php:193 ../wikilib.php:1310
  +#: ../plugin/Diff.php:193 ../wikilib.php:1338
   msgid "No difference found"
   msgstr "Aucune diffrence trouv"
   
  @@ -308,7 +309,7 @@
   msgid "%d day(s) passed from %s."
   msgstr "%d jour(s) se sont passs depuis %s."
   
  -#: ../plugin/FastSearch.php:44 ../plugin/FullSearch.php:79
  +#: ../plugin/FastSearch.php:44 ../plugin/FullSearch.php:80
   msgid "No search text"
   msgstr ""
   
  @@ -352,7 +353,7 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:44
  +#: ../plugin/FullSearch.php:44 ../plugin/VisualTour.php:104
   msgid "Refresh"
   msgstr ""
   
  @@ -361,39 +362,44 @@
   msgid " (%s search results)"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:122
  +#: ../plugin/FullSearch.php:123
   msgid "Empty expression"
   msgstr ""
   
   # ../wikilib.php:1483
  -#: ../plugin/FullSearch.php:126 ../wikilib.php:2410
  +#: ../plugin/FullSearch.php:127 ../wikilib.php:2447
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "Expression de recherche \"%s\" invalide"
   
  +# ../plugin/TwinPages.php:20
  +#: ../plugin/Gallery.php:235 ../plugin/UploadedFiles.php:200
  +msgid "No files found"
  +msgstr ""
  +
   # ../plugin/processor/blog.php:70
  -#: ../plugin/Gallery.php:275 ../plugin/Gallery.php:287
  +#: ../plugin/Gallery.php:314 ../plugin/Gallery.php:327
   msgid "add comment"
   msgstr ""
   
   # ../plugin/processor/blog.php:78
  -#: ../plugin/Gallery.php:284
  +#: ../plugin/Gallery.php:324
   msgid "show comments"
   msgstr ""
   
   # ../wikilib.php:769
  -#: ../plugin/Gallery.php:328 ../plugin/Gallery.php:331 ../wikilib.php:1166
  -#: ../wikilib.php:1309
  +#: ../plugin/Gallery.php:366 ../plugin/Gallery.php:370 ../wikilib.php:1194
  +#: ../wikilib.php:1336
   #, c-format
   msgid "Go back or return to %s"
   msgstr "Revenir en arrire ou retourner  %s"
   
  -#: ../plugin/Gallery.php:329
  +#: ../plugin/Gallery.php:367
   msgid "Comments are edited"
   msgstr ""
   
   # ../plugin/Blog.php:137
  -#: ../plugin/Gallery.php:332
  +#: ../plugin/Gallery.php:371
   msgid "Comments is added"
   msgstr ""
   
  @@ -429,103 +435,95 @@
   msgid "%s min ago"
   msgstr ""
   
  -# ../wikilib.php:507
  -#: ../plugin/Info.php:204
  -#, c-format
  -msgid "Info. for %s"
  -msgstr "Information sur %s"
  -
  -#: ../plugin/JME.php:55
  -#, c-format
  -msgid "Draw a new molecule '%s'"
  -msgstr ""
  -
  -# ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
  -#: ../plugin/JME.php:57
  -msgid "Draw a new molecule"
  -msgstr ""
  -
  -# ../plugin/Vote.php:109
  -#: ../plugin/JME.php:95
  -msgid "Molecule successfully added"
  -msgstr ""
  -
  -#: ../plugin/JME.php:101
  -msgid "Edit Molecule"
  -msgstr ""
  -
  -#: ../plugin/JME.php:131
  -msgid "Edit new molecule"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:272
  +#: ../plugin/Keywords.php:291
   msgid "hits"
   msgstr ""
   
  -#: ../plugin/Keywords.php:276
  +#: ../plugin/Keywords.php:299
   msgid "add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:279
  +#: ../plugin/Keywords.php:302
   msgid "Update keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:281
  +#: ../plugin/Keywords.php:304
   msgid "Add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:282
  +#: ../plugin/Keywords.php:305
   msgid "Add as common words"
   msgstr ""
   
  -#: ../plugin/Keywords.php:283
  +#: ../plugin/Keywords.php:306
   msgid "Unselect all"
   msgstr ""
   
  -#: ../plugin/Keywords.php:284
  +#: ../plugin/Keywords.php:307
   msgid "Suggest new Keywords"
   msgstr ""
   
  +#: ../plugin/Keywords.php:316
  +msgid "select language"
  +msgstr ""
  +
   # ../wiki.php:3009
  -#: ../plugin/Keywords.php:308
  +#: ../plugin/Keywords.php:332
   msgid "You are not able to add keywords."
   msgstr ""
   
   # ../wikilib.php:814
  -#: ../plugin/Keywords.php:317
  +#: ../plugin/Keywords.php:346
   #, c-format
   msgid "%s is not found."
   msgstr ""
   
  -#: ../plugin/Keywords.php:421
  +#: ../plugin/Keywords.php:462
   msgid "Common words are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:468
  +#: ../plugin/Keywords.php:509
   #, c-format
   msgid "Keywords for %s are updated"
   msgstr ""
   
   # ../plugin/quicklinks.php:38
  -#: ../plugin/Keywords.php:494
  +#: ../plugin/Keywords.php:535
   msgid "Keywords are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:496
  +#: ../plugin/Keywords.php:537
   msgid "There are no changes found"
   msgstr ""
   
  -#: ../plugin/Keywords.php:509
  +#: ../plugin/Keywords.php:550
   msgid "Update with these Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:522
  +#: ../plugin/Keywords.php:570 ../plugin/Keywords.php:574
  +msgid "alphabetically"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:571
  +msgid "by frequency"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:573
  +msgid "by size"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:579
  +#, c-format
  +msgid "Keywords list %s (or %s)"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:584
   #, c-format
   msgid "Select keywords for %s"
   msgstr ""
   
   # ../wikilib.php:672 ../wikilib.php:1472
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1058 ../wikilib.php:2399
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1085 ../wikilib.php:2436
   msgid "Use more specific text"
   msgstr "Utiliser un texte plus spcifique"
   
  @@ -638,52 +636,47 @@
   msgid "PHP Version"
   msgstr ""
   
  -#: ../plugin/Tour.php:16
  -#, c-format
  -msgid "Tour from %s"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:56
  +#: ../plugin/Tour.php:57
   msgid "BackLinks"
   msgstr ""
   
  -#: ../plugin/Tour.php:60
  +#: ../plugin/Tour.php:61
   msgid "Keywords"
   msgstr ""
   
   # ../plugin/minilogin.php:30
  -#: ../plugin/Tour.php:68
  +#: ../plugin/Tour.php:70
   #, c-format
   msgid " from %s"
   msgstr ""
   
   # ../plugin/minilogin.php:30
  -#: ../plugin/Tour.php:71
  +#: ../plugin/Tour.php:73
   #, c-format
   msgid "%s Tour %s"
   msgstr ""
   
  -#: ../plugin/Tour.php:112
  +#: ../plugin/Tour.php:121
   msgid "links"
   msgstr ""
   
   # ../plugin/VisualTour.php:59
  -#: ../plugin/Tour.php:114
  +#: ../plugin/Tour.php:123
   msgid "deeper"
   msgstr ""
   
   # ../plugin/minilogin.php:30
  -#: ../plugin/Tour.php:115
  +#: ../plugin/Tour.php:124
   #, c-format
   msgid "More %s or more %s"
   msgstr ""
   
  -#: ../plugin/Tour.php:123
  +#: ../plugin/Tour.php:139
   #, c-format
   msgid "Total %d related keywords"
   msgstr ""
   
  -#: ../plugin/Tour.php:126
  +#: ../plugin/Tour.php:142
   #, c-format
   msgid "Total %d related pages"
   msgstr ""
  @@ -695,7 +688,7 @@
   msgstr "TwinPages de %s"
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../plugin/TwinPages.php:19 ../wiki.php:4007
  +#: ../plugin/TwinPages.php:19 ../wiki.php:4108
   msgid "See [TwinPages]: "
   msgstr "Voir [TwinPages]: "
   
  @@ -726,37 +719,50 @@
   msgstr ""
   
   # ../wikilib.php:887
  -#: ../plugin/UploadFile.php:195
  +#: ../plugin/UploadFile.php:203
   msgid "Files are uploaded successfully"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:235
  +#: ../plugin/UploadFile.php:243
   msgid ": Rename"
   msgstr ""
   
  +#: ../plugin/UploadedFiles.php:236
  +msgid "Next page &raquo;"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:238
  +msgid "&laquo; First page"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:294
  +#, c-format
  +msgid "Total %d files"
  +msgstr ""
  +
   # ../plugin/rename.php:36
  -#: ../plugin/UploadedFiles.php:278 ../plugin/rename.php:77 ../wikilib.php:908
  -#: ../wikilib.php:1726
  +#: ../plugin/UploadedFiles.php:298 ../plugin/rename.php:77 ../wikilib.php:935
  +#: ../wikilib.php:1763
   msgid "Password"
   msgstr "Mot de passe"
   
   # ../wikilib.php:550
  -#: ../plugin/UploadedFiles.php:279 ../wikilib.php:886
  +#: ../plugin/UploadedFiles.php:299 ../wikilib.php:913
   msgid "Delete selected files"
   msgstr "Effacer les fichiers slectionns"
   
   # ../plugin/VisualTour.php:55
  -#: ../plugin/VisualTour.php:56
  +#: ../plugin/VisualTour.php:98
   msgid "Normal"
   msgstr ""
   
   # ../plugin/VisualTour.php:57
  -#: ../plugin/VisualTour.php:58
  +#: ../plugin/VisualTour.php:100
   msgid "Wider"
   msgstr "Plus large"
   
   # ../plugin/VisualTour.php:59
  -#: ../plugin/VisualTour.php:60
  +#: ../plugin/VisualTour.php:102
   msgid "Deeper"
   msgstr "Plus profond"
   
  @@ -764,9 +770,9 @@
   # ../plugin/security/needtologin.php:35
   #: ../plugin/Vote.php:67 ../plugin/security/community.php:26
   #: ../plugin/security/community.php:36 ../plugin/security/community.php:46
  -#: ../plugin/security/community.php:61 ../plugin/security/mustlogin.php:25
  -#: ../plugin/security/mustlogin.php:35 ../plugin/security/mustlogin.php:45
  -#: ../plugin/security/mustlogin.php:60 ../plugin/security/needtologin.php:29
  +#: ../plugin/security/community.php:61 ../plugin/security/mustlogin.php:29
  +#: ../plugin/security/mustlogin.php:40 ../plugin/security/mustlogin.php:51
  +#: ../plugin/security/mustlogin.php:67 ../plugin/security/needtologin.php:29
   #: ../plugin/security/needtologin.php:40 ../plugin/security/needtologin.php:51
   #: ../plugin/security/userbased.php:60
   msgid "Please Login or make your ID on this Wiki ;)"
  @@ -777,12 +783,49 @@
   msgid "Voted successfully"
   msgstr "Vote russi"
   
  -#: ../plugin/WordIndex.php:66 ../wikilib.php:2152
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2189
   msgid "Others"
   msgstr ""
   
  +#: ../plugin/aclinfo.php:15
  +msgid "ACL is not enabled on this Wiki"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:21
  +msgid "Your ACL Info"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:23
  +msgid "You are wiki owner"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:25
  +msgid "You are wiki master"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:27
  +msgid "Allowed actions"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:32
  +msgid "Denied actions"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:38
  +msgid "Protected actions"
  +msgstr ""
  +
  +# ../wikilib.php:887
  +#: ../plugin/backup.php:42
  +msgid "Your wiki is backuped successfully"
  +msgstr ""
  +
  +#: ../plugin/backup.php:49
  +msgid "Backup failed !"
  +msgstr ""
  +
   # ../plugin/backup.php:46
  -#: ../plugin/backup.php:46
  +#: ../plugin/backup.php:54
   msgid "Did you want to Backup your wiki ?"
   msgstr "Voulez vous faire une sauvegarde de votre wiki ?"
   
  @@ -846,17 +889,22 @@
   msgstr "PrfrencesUtilisateur"
   
   # ../plugin/man_get.php:13
  -#: ../plugin/man_get.php:13
  +#: ../plugin/man_get.php:14
   msgid "No manpage selected"
   msgstr "Aucune page de manuel slectionn"
   
   # ../plugin/man_get.php:23
  -#: ../plugin/man_get.php:23
  +#: ../plugin/man_get.php:40
   msgid "No manpage found"
   msgstr "Aucune page de manuel trouv"
   
  +# ../locale/dummy.php:6 ../wiki.php:2553
  +#: ../plugin/man_get.php:104
  +msgid "Edit"
  +msgstr ""
  +
   # ../plugin/minilogin.php:22 ../wikilib.php:1076
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1776
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1813
   msgid "Login or Join"
   msgstr "Se connecter ou se joindre "
   
  @@ -866,6 +914,21 @@
   msgid "%s or %s"
   msgstr "%s ou %s"
   
  +# ../wiki.php:850
  +#: ../plugin/msgfmt.php:74 ../plugin/msgfmt.php:152
  +#, c-format
  +msgid "Translation of %s"
  +msgstr ""
  +
  +# ../wikilib.php:887
  +#: ../plugin/msgfmt.php:83
  +msgid "Translations are successfully updated."
  +msgstr ""
  +
  +#: ../plugin/msgfmt.php:85
  +msgid "Fail to save translations."
  +msgstr ""
  +
   # ../plugin/OeKaki.php:118
   #: ../plugin/new.php:11 ../plugin/new.php:18
   msgid "Create a new page"
  @@ -1031,7 +1094,7 @@
   msgstr "Seulement le WikiMaster peut renommer cette page"
   
   # ../plugin/rename.php:39 ../wikilib.php:588
  -#: ../plugin/rename.php:79 ../wikilib.php:946
  +#: ../plugin/rename.php:79 ../wikilib.php:973
   msgid "with revision history"
   msgstr "avec l'historique de rvision"
   
  @@ -1048,28 +1111,41 @@
   msgid "Error: Don't try to overwrite it"
   msgstr "Erreur : n'essayez pas d'crire par dessus"
   
  +# ../plugin/subscribe.php:22
  +#: ../plugin/restore.php:24
  +msgid "Please rename your old 'text_dir' first."
  +msgstr ""
  +
  +#: ../plugin/restore.php:25
  +msgid "e.g. \\$ mv data/text data/text_old"
  +msgstr ""
  +
   # ../plugin/restore.php:27
  -#: ../plugin/restore.php:27
  +#: ../plugin/restore.php:29
   msgid "Error: tarball does not exists"
   msgstr "Erreur : l'archive n'existe pas"
   
   # ../plugin/restore.php:32
  -#: ../plugin/restore.php:32
  +#: ../plugin/restore.php:34
   #, c-format
   msgid "Restore %s"
   msgstr "Restaurer %s"
   
   # ../plugin/restore.php:45
  -#: ../plugin/restore.php:45
  +#: ../plugin/restore.php:50
   #, c-format
   msgid "Restore %s ?"
   msgstr "Restaurer %s ?"
   
   # ../plugin/restore.php:62
  -#: ../plugin/restore.php:62
  +#: ../plugin/restore.php:67
   msgid "Restore backuped data"
   msgstr "Restaurer des donnes sauvegardes"
   
  +#: ../plugin/restore.php:68
  +msgid "Select a tarball file to restore"
  +msgstr ""
  +
   # ../locale/dummy.php:7
   #: ../plugin/rss_rc.php:54
   msgid "show changes"
  @@ -1088,22 +1164,36 @@
   
   # ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
   # c-format
  -#: ../plugin/security/community.php:25 ../plugin/security/community.php:35
  -#: ../plugin/security/community.php:45 ../plugin/security/mustlogin.php:24
  -#: ../plugin/security/mustlogin.php:34 ../plugin/security/mustlogin.php:44
  -#: ../plugin/security/needtologin.php:28 ../plugin/security/needtologin.php:39
  -#: ../plugin/security/needtologin.php:50
  +#: ../plugin/security/acl.php:204 ../plugin/security/community.php:25
  +#: ../plugin/security/community.php:35 ../plugin/security/community.php:45
  +#: ../plugin/security/mustlogin.php:28 ../plugin/security/mustlogin.php:39
  +#: ../plugin/security/mustlogin.php:50 ../plugin/security/needtologin.php:28
  +#: ../plugin/security/needtologin.php:39 ../plugin/security/needtologin.php:50
   #, c-format
   msgid "You are not allowed to '%s' on this page"
   msgstr "Vous n'tes pas autoris  pouvoir '%s' cette page"
   
  +#: ../plugin/security/acl.php:205
  +msgid "Please contact WikiMasters :b"
  +msgstr ""
  +
  +# ../wiki.php:3009
  +#: ../plugin/security/authbasic.php:68
  +#, c-format
  +msgid "You have no permission to '%s'."
  +msgstr ""
  +
  +#: ../plugin/security/authbasic.php:71
  +msgid "You must enter a valid login ID and password to access this resource.\n"
  +msgstr ""
  +
   # ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
   # c-format
   #: ../plugin/security/community.php:60 ../plugin/security/htaccesslogin.php:46
  -#: ../plugin/security/mustlogin.php:59 ../plugin/security/userbased.php:28
  +#: ../plugin/security/mustlogin.php:66 ../plugin/security/userbased.php:28
   #: ../plugin/security/userbased.php:36 ../plugin/security/userbased.php:44
  -#: ../plugin/security/userbased.php:59 ../plugin/security/wikimaster.php:25
  -#: ../plugin/security/wikimaster.php:33 ../plugin/security/wikimaster.php:41
  +#: ../plugin/security/userbased.php:59 ../plugin/security/wikimaster.php:29
  +#: ../plugin/security/wikimaster.php:38 ../plugin/security/wikimaster.php:47
   #, c-format
   msgid "You are not allowed to '%s' on this page."
   msgstr "Vous n'tes pas autoris  pouvoir '%s' cette page"
  @@ -1113,8 +1203,8 @@
   msgstr ""
   
   #: ../plugin/security/userbased.php:29 ../plugin/security/userbased.php:37
  -#: ../plugin/security/userbased.php:45 ../plugin/security/wikimaster.php:26
  -#: ../plugin/security/wikimaster.php:34 ../plugin/security/wikimaster.php:42
  +#: ../plugin/security/userbased.php:45 ../plugin/security/wikimaster.php:30
  +#: ../plugin/security/wikimaster.php:39 ../plugin/security/wikimaster.php:48
   msgid "Please contact to WikiMaster"
   msgstr ""
   
  @@ -1178,29 +1268,29 @@
   msgstr "Voulez vous abonner  \"%s\" ?"
   
   # ../plugin/theme.php:24
  -#: ../plugin/theme.php:28
  +#: ../plugin/theme.php:29
   msgid "Theme cleared. Goto UserPreferences."
   msgstr "Thme effac. Allez  UserPreferences."
   
  -#: ../plugin/theme.php:39
  +#: ../plugin/theme.php:40
   msgid "Theme is changed"
   msgstr ""
   
   # ../plugin/theme.php:64
  -#: ../plugin/theme.php:68
  +#: ../plugin/theme.php:69
   msgid "Please select a theme properly."
   msgstr "Merci de slectionner un thme de manire satisfaisante"
   
  -#: ../plugin/theme.php:78
  +#: ../plugin/theme.php:79
   msgid "Theme disabled !"
   msgstr ""
   
   # ../wikilib.php:476
  -#: ../plugin/theme.php:92
  +#: ../plugin/theme.php:96
   msgid "-- Select --"
   msgstr ""
   
  -#: ../plugin/ticket.php:75
  +#: ../plugin/ticket.php:172
   msgid "Invalid use of ticket"
   msgstr ""
   
  @@ -1264,14 +1354,14 @@
   msgid "ID does not exists !"
   msgstr "Erreur : l'archive n'existe pas"
   
  -#: ../plugin/userform.php:86 ../plugin/userform.php:266
  +#: ../plugin/userform.php:86 ../plugin/userform.php:273
   #, c-format
   msgid "Successfully login as '%s'"
   msgstr ""
   
   # ../wiki.php:3024
  -#: ../plugin/userform.php:92 ../plugin/userform.php:271
  -#: ../plugin/userform.php:314
  +#: ../plugin/userform.php:92 ../plugin/userform.php:278
  +#: ../plugin/userform.php:321
   msgid "Invalid password !"
   msgstr "Merci d'entrer un mot de passe valide"
   
  @@ -1290,7 +1380,7 @@
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../plugin/userform.php:106 ../wikilib.php:1833
  +#: ../plugin/userform.php:106 ../wikilib.php:1870
   msgid "E-mail new password"
   msgstr ""
   
  @@ -1319,7 +1409,7 @@
   msgid "Your new password is %s"
   msgstr ""
   
  -#: ../plugin/userform.php:159 ../plugin/userform.php:258
  +#: ../plugin/userform.php:159 ../plugin/userform.php:265
   msgid "Please change your password later"
   msgstr ""
   
  @@ -1358,7 +1448,7 @@
   msgid "Please try again or make a new profile"
   msgstr ""
   
  -#: ../plugin/userform.php:224 ../plugin/userform.php:302
  +#: ../plugin/userform.php:224 ../plugin/userform.php:309
   msgid "too short password!"
   msgstr ""
   
  @@ -1366,7 +1456,7 @@
   msgid "mismatch password!"
   msgstr ""
   
  -#: ../plugin/userform.php:226 ../plugin/userform.php:306
  +#: ../plugin/userform.php:226 ../plugin/userform.php:313
   msgid "not acceptable character found in the password!"
   msgstr ""
   
  @@ -1375,63 +1465,82 @@
   msgstr ""
   
   # ../plugin/subscribe.php:22
  -#: ../plugin/userform.php:235 ../plugin/userform.php:337
  +#: ../plugin/userform.php:235 ../plugin/userform.php:344
   msgid "Your email address is not valid"
   msgstr "Merci de rentrer d'abord votre adresse de messagerie"
   
  -#: ../plugin/userform.php:239
  +# ../wikilib.php:547
  +#: ../plugin/userform.php:240
  +msgid "Fail to register"
  +msgstr ""
  +
  +# ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
  +# c-format
  +#: ../plugin/userform.php:241
  +msgid "You are not allowed to register on this wiki"
  +msgstr ""
  +
  +#: ../plugin/userform.php:242 ../wiki.php:4069 ../wiki.php:4080
  +msgid "Please contact WikiMasters"
  +msgstr ""
  +
  +#: ../plugin/userform.php:246
   msgid "Successfully added!"
   msgstr ""
   
  -#: ../plugin/userform.php:245
  +#: ../plugin/userform.php:252
   #, c-format
   msgid "Successfully added as '%s'"
   msgstr ""
   
  -#: ../plugin/userform.php:246
  +#: ../plugin/userform.php:253
   msgid "Please check your mailbox"
   msgstr ""
   
  -#: ../plugin/userform.php:253 ../plugin/userform.php:331
  +#: ../plugin/userform.php:260 ../plugin/userform.php:338
   msgid "E-mail confirmation"
   msgstr ""
   
   # ../plugin/subscribe.php:22
  -#: ../plugin/userform.php:255 ../plugin/userform.php:333
  +#: ../plugin/userform.php:262 ../plugin/userform.php:340
   msgid "Please confirm your email address"
   msgstr ""
   
  -#: ../plugin/userform.php:257
  +#: ../plugin/userform.php:264
   #, c-format
   msgid "Your initial password is %s"
   msgstr ""
   
  -#: ../plugin/userform.php:261 ../plugin/userform.php:335
  -msgid "E-mail confirmation mail sent"
  +#: ../plugin/userform.php:268
  +msgid "Confirmation E-mail sent"
   msgstr ""
   
  -#: ../plugin/userform.php:276
  +#: ../plugin/userform.php:283
   msgid "Invalid username !"
   msgstr ""
   
  -#: ../plugin/userform.php:304
  +#: ../plugin/userform.php:311
   msgid "mismatch password !"
   msgstr ""
   
  -#: ../plugin/userform.php:307 ../plugin/userform.php:315
  +#: ../plugin/userform.php:314 ../plugin/userform.php:322
   msgid "Password is not changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:309
  +#: ../plugin/userform.php:316
   msgid "Password is changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:311
  +#: ../plugin/userform.php:318
   msgid "Password is too simple to use as a password !"
   msgstr ""
   
  +#: ../plugin/userform.php:342
  +msgid "E-mail confirmation mail sent"
  +msgstr ""
  +
   # ../wikilib.php:887
  -#: ../plugin/userform.php:343
  +#: ../plugin/userform.php:350
   msgid "Profiles are saved successfully !"
   msgstr ""
   
  @@ -1447,93 +1556,89 @@
   msgstr ""
   
   # ../wiki.php:850
  -#: ../wiki.php:1128
  +#: ../wiki.php:1129
   #, c-format
   msgid "Rename %s to %s"
   msgstr "Renommer %s en %s"
   
   # ../wikilib.php:803
  -#: ../wiki.php:1429
  +#: ../wiki.php:1431
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
   # ../plugin/restore.php:27
  -#: ../wiki.php:1439
  +#: ../wiki.php:1441
   msgid "File does not exists"
   msgstr ""
   
   # ../wikilib.php:521
  -#: ../wiki.php:2385
  +#: ../wiki.php:2410
   msgid "Invalid ajax action."
   msgstr ""
   
   # ../wiki.php:1824
  -#: ../wiki.php:2616
  +#: ../wiki.php:2668
   #, c-format
   msgid "See %s"
   msgstr "Voir %s"
   
   # ../wiki.php:1824
  -#: ../wiki.php:2616
  +#: ../wiki.php:2668
   msgid "TwinPages"
   msgstr ""
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../wiki.php:2621
  +#: ../wiki.php:2673
   msgid "See [TwinPages]:"
   msgstr "Voir [TwinPages]: "
   
  -#: ../wiki.php:2926
  +#: ../wiki.php:2978
   msgid "edit"
   msgstr ""
   
  -#: ../wiki.php:3079
  +#: ../wiki.php:3131
   msgid "Sister Sites Index"
   msgstr ""
   
   # ../locale/dummy.php:6 ../wiki.php:2553
  -#: ../wiki.php:3370 ../locale/dummy.php:6
  +#: ../wiki.php:3422 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "ditionTexte"
   
   # ../wiki.php:2555
  -#: ../wiki.php:3372
  +#: ../wiki.php:3424
   msgid "NotEditable"
   msgstr "Pasditable"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wiki.php:3374 ../locale/dummy.php:6
  +#: ../wiki.php:3426 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "MontrePage"
   
   # ../locale/dummy.php:3 ../locale/dummy.php:5 ../wiki.php:2558
  -#: ../wiki.php:3375 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:3427 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "TrouvePage"
   
  -#: ../wiki.php:3706
  +#: ../wiki.php:3762
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:3967
  +#: ../wiki.php:4068
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:3968 ../wiki.php:3979
  -msgid "Please contact WikiMasters"
  -msgstr ""
  -
  -#: ../wiki.php:3978
  +#: ../wiki.php:4079
   msgid "You are blocked in this wiki"
   msgstr ""
   
   # ../wiki.php:2945 ../wiki.php:2948
  -#: ../wiki.php:4009 ../wiki.php:4012 ../wikilib.php:1100
  +#: ../wiki.php:4110 ../wiki.php:4113 ../wikilib.php:1128
   msgid "Create this page"
   msgstr "Crer cette page"
   
   # ../wiki.php:2950
  -#: ../wiki.php:4015 ../wikilib.php:1102
  +#: ../wiki.php:4116 ../wikilib.php:1130
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
  @@ -1541,49 +1646,49 @@
   "page.\n"
   
   # ../wiki.php:2950
  -#: ../wiki.php:4015 ../wikilib.php:1102
  +#: ../wiki.php:4116 ../wikilib.php:1130
   msgid "title"
   msgstr "titre"
   
   # ../wiki.php:2956
  -#: ../wiki.php:4024
  +#: ../wiki.php:4125
   msgid " or alternativly, use one of these templates:\n"
   msgstr " ou alternativement, utiliser un de ces modles de page :\n"
   
  -#: ../wiki.php:4027
  +#: ../wiki.php:4128
   msgid "You have no templates"
   msgstr ""
   
   # ../wikilib.php:427
  -#: ../wiki.php:4029
  +#: ../wiki.php:4130
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
   
  -#: ../wiki.php:4040
  +#: ../wiki.php:4141
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
   # ../wiki.php:3009
  -#: ../wiki.php:4130
  +#: ../wiki.php:4235
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "Vous n'tes pas autoris  '%s'"
   
   # ../wiki.php:3021
  -#: ../wiki.php:4150
  +#: ../wiki.php:4255
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "Impossible de pouvoir \"%s\" !"
   
   # ../wiki.php:3024
  -#: ../wiki.php:4153
  +#: ../wiki.php:4258
   msgid "Please enter the valid password"
   msgstr "Merci d'entrer un mot de passe valide"
   
   # ../wikilib.php:368
  -#: ../wikilib.php:547
  +#: ../wikilib.php:574
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -1615,282 +1720,282 @@
   "deux colonnes ||;\n"
   "Les espaces aprs un tableau ou un titre ne sont pas autoriss.<br />\n"
   
  -#: ../wikilib.php:588
  +#: ../wikilib.php:615
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
   # ../wikilib.php:425
  -#: ../wikilib.php:671
  +#: ../wikilib.php:698
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   "Utiliser un des modles de pages qui suivent pour une premirecration :\n"
   
   # ../wikilib.php:427
  -#: ../wikilib.php:673
  +#: ../wikilib.php:700
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr ""
   
  -#: ../wikilib.php:677
  +#: ../wikilib.php:704
   msgid "Merge"
   msgstr ""
   
  -#: ../wikilib.php:678
  +#: ../wikilib.php:705
   msgid "Merge manually"
   msgstr ""
   
  -#: ../wikilib.php:679
  +#: ../wikilib.php:706
   msgid "Ignore conflicts"
   msgstr ""
   
   # ../wikilib.php:445
  -#: ../wikilib.php:704
  +#: ../wikilib.php:731
   msgid "ReduceEditor"
   msgstr "Rduirediteur"
   
  -#: ../wikilib.php:705
  +#: ../wikilib.php:732
   msgid "EnlargeEditor"
   msgstr ""
   
   # ../locale/dummy.php:6 ../wikilib.php:448
  -#: ../wikilib.php:709 ../locale/dummy.php:6
  +#: ../wikilib.php:736 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
   # ../wikilib.php:449
  -#: ../wikilib.php:711
  +#: ../wikilib.php:738
   msgid "HelpOnEditing"
   msgstr ""
   
   # ../wikilib.php:462
  -#: ../wikilib.php:738
  +#: ../wikilib.php:765
   #, c-format
   msgid "Describe %s here"
   msgstr "Dcrire %s ici"
   
   # ../wikilib.php:476
  -#: ../wikilib.php:755
  +#: ../wikilib.php:782
   msgid "--Select Category--"
   msgstr "-- Slectionner une catgorie"
   
  -#: ../wikilib.php:765
  +#: ../wikilib.php:792
   msgid "Minor edit"
   msgstr ""
   
   # ../wikilib.php:443
  -#: ../wikilib.php:773
  +#: ../wikilib.php:800
   msgid "Skip to preview"
   msgstr "Aller  la prvisualisation"
   
   # ../wikilib.php:483 ../wikilib.php:1079
  -#: ../wikilib.php:775 ../wikilib.php:1779 ../wikilib.php:1821
  +#: ../wikilib.php:802 ../wikilib.php:1816 ../wikilib.php:1858
   msgid "Save"
   msgstr "Sauvegarder"
   
   # ../wikilib.php:484
  -#: ../wikilib.php:776
  +#: ../wikilib.php:803
   msgid "Summary of Change"
   msgstr "Sommaire des modifications"
   
   # ../wikilib.php:517
  -#: ../wikilib.php:822
  +#: ../wikilib.php:849
   msgid "406 Not Acceptable"
   msgstr ""
   
   # ../wikilib.php:519
  -#: ../wikilib.php:827
  +#: ../wikilib.php:854
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s n'est pas une action valide"
   
   # ../wikilib.php:521
  -#: ../wikilib.php:829
  +#: ../wikilib.php:856
   msgid "Is it valid action ?"
   msgstr "Est-ce que c'est une action valide ?"
   
   # ../wikilib.php:540
  -#: ../wikilib.php:874
  +#: ../wikilib.php:901
   #, c-format
   msgid "File '%s' is deleted"
   msgstr "Le fichier '%s' est effac"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:876
  +#: ../wikilib.php:903
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr "Impossible d'effacer '%s'"
   
   # ../wikilib.php:545
  -#: ../wikilib.php:881
  +#: ../wikilib.php:908
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr "Le rpertoire '%s' est effac"
   
   # ../wikilib.php:547
  -#: ../wikilib.php:883
  +#: ../wikilib.php:910
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr "Impossible d'effacer le rpertoire '%s'"
   
   # ../wikilib.php:557 ../wikilib.php:559
  -#: ../wikilib.php:893 ../wikilib.php:913
  +#: ../wikilib.php:920 ../wikilib.php:940
   msgid "No files are selected !"
   msgstr "Aucun fichier n'est slectionn !"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:906
  +#: ../wikilib.php:933
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
   # ../locale/dummy.php:5
  -#: ../wikilib.php:909
  +#: ../wikilib.php:936
   msgid "Delete"
   msgstr ""
   
   # ../wikilib.php:550
  -#: ../wikilib.php:910
  +#: ../wikilib.php:937
   msgid "Delete selected file"
   msgstr ""
   
   # ../wikilib.php:575
  -#: ../wikilib.php:931
  +#: ../wikilib.php:958
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr "\"%s\" est effac !"
   
   # ../wikilib.php:581
  -#: ../wikilib.php:938
  +#: ../wikilib.php:965
   msgid "Please delete this file manually."
   msgstr "Merci d'effacer ce fichier manuellement."
   
   # ../wikilib.php:583
  -#: ../wikilib.php:940
  +#: ../wikilib.php:967
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "Effacer \"%s\" ?"
   
   # ../plugin/minilogin.php:30
  -#: ../wikilib.php:990
  +#: ../wikilib.php:1017
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
   # ../wikilib.php:743
  -#: ../wikilib.php:1154 ../wikilib.php:1258
  +#: ../wikilib.php:1182 ../wikilib.php:1284
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "Quelqu'un a sauvegard la page tandis que vous ditiez %s"
   
  -#: ../wikilib.php:1160
  +#: ../wikilib.php:1188
   msgid "Section edit is not valid for non-exists page."
   msgstr ""
   
   # ../wikilib.php:803
  -#: ../wikilib.php:1193 ../wikilib.php:1368
  +#: ../wikilib.php:1221 ../wikilib.php:1397
   msgid "mail does not supported by default."
   msgstr "La messagerie n'est pas support par dfaut."
   
   # ../wikilib.php:807
  -#: ../wikilib.php:1197 ../wikilib.php:1372
  +#: ../wikilib.php:1225 ../wikilib.php:1401
   msgid "Sent notification mail."
   msgstr "Des notifications par messagerie ont t envoyes."
   
   # ../wikilib.php:809
  -#: ../wikilib.php:1199 ../wikilib.php:1374
  +#: ../wikilib.php:1227 ../wikilib.php:1403
   msgid "No subscribers found."
   msgstr "Aucun abonn trouv."
   
   # ../wikilib.php:814
  -#: ../wikilib.php:1204 ../wikilib.php:1379
  +#: ../wikilib.php:1232 ../wikilib.php:1408
   #, c-format
   msgid "%s is not editable"
   msgstr "%s n'est pas ditable"
   
   # ../wikilib.php:816
  -#: ../wikilib.php:1206 ../wikilib.php:1381
  +#: ../wikilib.php:1234 ../wikilib.php:1410
   #, c-format
   msgid "%s is saved"
   msgstr "%s est sauvegard"
   
   # ../wikilib.php:734
  -#: ../wikilib.php:1249
  +#: ../wikilib.php:1275
   msgid "Goto Editor"
   msgstr "Aller  l'diteur"
   
  -#: ../wikilib.php:1262
  +#: ../wikilib.php:1289
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr ""
   
   # ../plugin/Vote.php:109
  -#: ../wikilib.php:1263
  +#: ../wikilib.php:1290
   #, c-format
   msgid "%s is merged successfully"
   msgstr ""
   
  -#: ../wikilib.php:1267
  +#: ../wikilib.php:1294
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1268
  +#: ../wikilib.php:1295
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr ""
   
  -#: ../wikilib.php:1269
  +#: ../wikilib.php:1296
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1270
  +#: ../wikilib.php:1297
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1275
  +#: ../wikilib.php:1302
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr ""
   
   # ../wikilib.php:581
  -#: ../wikilib.php:1276
  +#: ../wikilib.php:1303
   msgid "Please resolve conflicts manually."
   msgstr ""
   
  -#: ../wikilib.php:1279
  +#: ../wikilib.php:1306
   #, c-format
   msgid "Force merging for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1280
  +#: ../wikilib.php:1307
   msgid "Please be careful, you could damage useful information."
   msgstr ""
   
   # ../wikilib.php:755
  -#: ../wikilib.php:1292
  +#: ../wikilib.php:1319
   msgid "Conflict error!"
   msgstr "Erreur de conflit !"
   
   # ../wikilib.php:748 ../wikilib.php:777
  -#: ../wikilib.php:1329
  +#: ../wikilib.php:1357
   #, c-format
   msgid "Preview of %s"
   msgstr "Prvisualisation de %s"
   
   # ../wikilib.php:838
  -#: ../wikilib.php:1405
  +#: ../wikilib.php:1442
   msgid "Nobody subscribed to this page."
   msgstr "Personne n'est abonn  cette page, aucun mail envoy"
   
   # ../wikilib.php:860
  -#: ../wikilib.php:1424
  +#: ../wikilib.php:1461
   #, c-format
   msgid "%s page is modified"
   msgstr "la page %s est modifi"
   
   # ../wikilib.php:870
  -#: ../wikilib.php:1453
  +#: ../wikilib.php:1490
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
  @@ -1901,93 +2006,93 @@
   "\n"
   
   # ../wikilib.php:883
  -#: ../wikilib.php:1466
  +#: ../wikilib.php:1503
   msgid "Send notification mails to all subscribers"
   msgstr "Envoyez un mail de notification  tous les abonns"
   
   # ../wikilib.php:887
  -#: ../wikilib.php:1471
  +#: ../wikilib.php:1508
   msgid "Mails are sent successfully"
   msgstr "Mail envoy avec succs"
   
   # ../wikilib.php:888
  -#: ../wikilib.php:1472
  +#: ../wikilib.php:1509
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr "un mail a t envoy  '%s'"
   
   # ../wiki.php:3021
  -#: ../wikilib.php:1474
  +#: ../wikilib.php:1511
   msgid "Fail to send mail"
   msgstr ""
   
   # ../wikilib.php:803
  -#: ../wikilib.php:1485
  +#: ../wikilib.php:1522
   msgid "This wiki does not support sendmail"
   msgstr ""
   
   # ../wikilib.php:1483
  -#: ../wikilib.php:1583
  +#: ../wikilib.php:1620
   msgid "Invalid regular expression !"
   msgstr ""
   
  -#: ../wikilib.php:1607
  +#: ../wikilib.php:1644
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:1610
  +#: ../wikilib.php:1647
   msgid "Infinite loop possible!"
   msgstr ""
   
   # ../plugin/login.php:26 ../wikilib.php:1051
  -#: ../wikilib.php:1737
  +#: ../wikilib.php:1774
   msgid "Login"
   msgstr "Se connecter"
   
  -#: ../wikilib.php:1738 ../wikilib.php:1838
  +#: ../wikilib.php:1775 ../wikilib.php:1875
   msgid "ID"
   msgstr ""
   
   # ../wikilib.php:1070
  -#: ../wikilib.php:1759 ../wikilib.php:1831
  +#: ../wikilib.php:1796 ../wikilib.php:1868
   msgid "Make profile"
   msgstr "Faire un profil"
   
   # ../wikilib.php:1071
  -#: ../wikilib.php:1761
  +#: ../wikilib.php:1798
   msgid "password again"
   msgstr "mot de passe de nouveau"
   
  -#: ../wikilib.php:1763 ../wikilib.php:1801
  +#: ../wikilib.php:1800 ../wikilib.php:1838
   msgid "Mail"
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../wikilib.php:1783
  +#: ../wikilib.php:1820
   msgid "New password"
   msgstr "Nouveau mot de passe"
   
  -#: ../wikilib.php:1802
  +#: ../wikilib.php:1839
   msgid "Time Zone"
   msgstr ""
   
   # ../wikilib.php:1088
  -#: ../wikilib.php:1810
  +#: ../wikilib.php:1847
   msgid "logout"
   msgstr "se dconnecter"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wikilib.php:2153
  +#: ../wikilib.php:2190
   msgid "Show all"
   msgstr ""
   
   # ../locale/dummy.php:4
  -#: ../wikilib.php:2295
  +#: ../wikilib.php:2332
   msgid "Contents"
   msgstr ""
   
   # ../wikilib.php:1479
  -#: ../wikilib.php:2406
  +#: ../wikilib.php:2443
   #, c-format
   msgid "Title search for \"%s\""
   msgstr "Recherche de titre pour \"%s\""
  @@ -2041,3 +2146,7 @@
   #: ../locale/dummy.php:7
   msgid "TrackBack"
   msgstr ""
  +
  +# ../wikilib.php:507
  +#~ msgid "Info. for %s"
  +#~ msgstr "Information sur %s"
  
  
  
  1.22      +376 -275  moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- ko.po	1 Jul 2006 18:59:33 -0000	1.21
  +++ ko.po	22 Jul 2006 11:15:46 -0000	1.22
  @@ -5,7 +5,7 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1\n"
  -"POT-Creation-Date: 2006-07-02 04:01+0900\n"
  +"POT-Creation-Date: 2006-07-22 20:14+0900\n"
   "PO-Revision-Date: 2003-04-29 19:00+0900\n"
   "Last-Translator: Won-kyu Park <wkpark@kldp.org>\n"
   "Language-Team: ko <ko@li.org>\n"
  @@ -13,16 +13,16 @@
   "Content-Type: text/plain; charset=EUC-KR\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  -#: ../plugin/Attachment.php:41 ../plugin/Attachment.php:128
  +#: ../plugin/Attachment.php:42 ../plugin/Attachment.php:129
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr ""
   
  -#: ../plugin/Attachment.php:125
  +#: ../plugin/Attachment.php:126
   msgid "or paste a new picture"
   msgstr "Ȥ  ׸ ̱"
   
  -#: ../plugin/Attachment.php:131
  +#: ../plugin/Attachment.php:132
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
  @@ -56,7 +56,7 @@
   
   #: ../plugin/Blog.php:162 ../plugin/Comment.php:144
   msgid "Error: Don't make a clone!"
  -msgstr ""
  +msgstr ":   !"
   
   #: ../plugin/Blog.php:179
   #, c-format
  @@ -66,7 +66,7 @@
   #: ../plugin/Blog.php:182
   #, c-format
   msgid "Blog entry added to \"%s\""
  -msgstr ""
  +msgstr "α ׸ \"%s\" ϴ"
   
   #: ../plugin/Blog.php:219
   #, c-format
  @@ -76,11 +76,11 @@
   #: ../plugin/Blog.php:221
   #, c-format
   msgid "Add Blog entry to \"%s\""
  -msgstr ""
  +msgstr "\"%s\" α ׸ ϱ"
   
   #: ../plugin/Blog.php:235 ../plugin/Blog.php:290
   msgid "Name"
  -msgstr ""
  +msgstr "̸"
   
   #: ../plugin/Blog.php:239 ../plugin/Blog.php:291
   msgid "Title"
  @@ -88,7 +88,7 @@
   
   #: ../plugin/Blog.php:245 ../plugin/Comment.php:60
   msgid "Don't add a signature"
  -msgstr ""
  +msgstr " ʱ"
   
   #: ../plugin/Blog.php:258
   msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
  @@ -105,7 +105,7 @@
   #: ../plugin/BlogChanges.php:246
   #, c-format
   msgid "Invalid category expr \"%s\""
  -msgstr ""
  +msgstr "߸ з Խ \"%s\""
   
   #: ../plugin/BlogChanges.php:378 ../plugin/BlogChanges.php:380
   #: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
  @@ -149,7 +149,7 @@
   
   #: ../plugin/Clip.php:53 ../plugin/Draw.php:111
   msgid "No filename given"
  -msgstr ""
  +msgstr " ̸ "
   
   #: ../plugin/Clip.php:72
   msgid "Clipboard"
  @@ -157,7 +157,7 @@
   
   #: ../plugin/Clip.php:81
   msgid "Cut & Paste a Clipboard Image"
  -msgstr ""
  +msgstr "Ŭ ̹ ߸ ̱"
   
   #: ../plugin/Comment.php:58
   msgid "Username"
  @@ -167,7 +167,7 @@
   msgid "Comment"
   msgstr " ޱ"
   
  -#: ../plugin/Comment.php:62 ../wikilib.php:771
  +#: ../plugin/Comment.php:62 ../wikilib.php:798
   msgid "Preview"
   msgstr "̸"
   
  @@ -179,11 +179,12 @@
   msgid "You are not allowed to add a comment."
   msgstr "Comment  ʽϴ."
   
  -#: ../plugin/Comment.php:86 ../plugin/Keywords.php:309
  +#: ../plugin/Comment.php:86 ../plugin/Keywords.php:333
   msgid "Page does not exists"
   msgstr " ϴ"
   
  -#: ../plugin/Comment.php:119 ../wikilib.php:1179 ../wikilib.php:1323
  +#: ../plugin/Comment.php:119 ../plugin/Gallery.php:166 ../wikilib.php:1207
  +#: ../wikilib.php:1351
   msgid ""
   "Sorry, can not save page because some messages are blocked in this wiki."
   msgstr "˼մϴ. Ư ޽ Ǿ    ϴ."
  @@ -209,7 +210,7 @@
   msgid "Version info is not available in this wiki"
   msgstr ""
   
  -#: ../plugin/Diff.php:193 ../wikilib.php:1310
  +#: ../plugin/Diff.php:193 ../wikilib.php:1338
   msgid "No difference found"
   msgstr "ȭ ϴ"
   
  @@ -262,7 +263,7 @@
   msgid "%d day(s) passed from %s."
   msgstr "%2$sκ %1$d ϴ."
   
  -#: ../plugin/FastSearch.php:44 ../plugin/FullSearch.php:79
  +#: ../plugin/FastSearch.php:44 ../plugin/FullSearch.php:80
   msgid "No search text"
   msgstr ""
   
  @@ -302,7 +303,7 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:44
  +#: ../plugin/FullSearch.php:44 ../plugin/VisualTour.php:104
   msgid "Refresh"
   msgstr ""
   
  @@ -311,34 +312,38 @@
   msgid " (%s search results)"
   msgstr " (ġ  %s)"
   
  -#: ../plugin/FullSearch.php:122
  +#: ../plugin/FullSearch.php:123
   msgid "Empty expression"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:126 ../wikilib.php:2410
  +#: ../plugin/FullSearch.php:127 ../wikilib.php:2447
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "߸ ã ǥ \"%s\""
   
  -#: ../plugin/Gallery.php:275 ../plugin/Gallery.php:287
  +#: ../plugin/Gallery.php:235 ../plugin/UploadedFiles.php:200
  +msgid "No files found"
  +msgstr " ϴ"
  +
  +#: ../plugin/Gallery.php:314 ../plugin/Gallery.php:327
   msgid "add comment"
   msgstr " ޱ"
   
  -#: ../plugin/Gallery.php:284
  +#: ../plugin/Gallery.php:324
   msgid "show comments"
   msgstr " "
   
  -#: ../plugin/Gallery.php:328 ../plugin/Gallery.php:331 ../wikilib.php:1166
  -#: ../wikilib.php:1309
  +#: ../plugin/Gallery.php:366 ../plugin/Gallery.php:370 ../wikilib.php:1194
  +#: ../wikilib.php:1336
   #, c-format
   msgid "Go back or return to %s"
   msgstr "ڷ Ȥ %s() "
   
  -#: ../plugin/Gallery.php:329
  +#: ../plugin/Gallery.php:367
   msgid "Comments are edited"
   msgstr ""
   
  -#: ../plugin/Gallery.php:332
  +#: ../plugin/Gallery.php:371
   msgid "Comments is added"
   msgstr ""
   
  @@ -373,96 +378,91 @@
   msgid "%s min ago"
   msgstr ""
   
  -#: ../plugin/Info.php:204
  -#, c-format
  -msgid "Info. for %s"
  -msgstr "%s "
  -
  -#: ../plugin/JME.php:55
  -#, c-format
  -msgid "Draw a new molecule '%s'"
  -msgstr ""
  -
  -#: ../plugin/JME.php:57
  -msgid "Draw a new molecule"
  -msgstr ""
  -
  -#: ../plugin/JME.php:95
  -msgid "Molecule successfully added"
  -msgstr ""
  -
  -#: ../plugin/JME.php:101
  -msgid "Edit Molecule"
  -msgstr ""
  -
  -#: ../plugin/JME.php:131
  -msgid "Edit new molecule"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:272
  +#: ../plugin/Keywords.php:291
   msgid "hits"
   msgstr ""
   
  -#: ../plugin/Keywords.php:276
  +#: ../plugin/Keywords.php:299
   msgid "add keywords"
   msgstr "Ű ϱ"
   
  -#: ../plugin/Keywords.php:279
  +#: ../plugin/Keywords.php:302
   msgid "Update keywords"
   msgstr "Ű "
   
  -#: ../plugin/Keywords.php:281
  +#: ../plugin/Keywords.php:304
   msgid "Add keywords"
   msgstr "Ű ϱ"
   
  -#: ../plugin/Keywords.php:282
  +#: ../plugin/Keywords.php:305
   msgid "Add as common words"
  -msgstr ""
  +msgstr "Ϲ ܾ ߰"
   
  -#: ../plugin/Keywords.php:283
  +#: ../plugin/Keywords.php:306
   msgid "Unselect all"
   msgstr "  "
   
  -#: ../plugin/Keywords.php:284
  +#: ../plugin/Keywords.php:307
   msgid "Suggest new Keywords"
  +msgstr " Ű "
  +
  +#: ../plugin/Keywords.php:316
  +msgid "select language"
   msgstr ""
   
  -#: ../plugin/Keywords.php:308
  +#: ../plugin/Keywords.php:332
   msgid "You are not able to add keywords."
   msgstr "Ű带 ߰  ϴ."
   
  -#: ../plugin/Keywords.php:317
  +#: ../plugin/Keywords.php:346
   #, c-format
   msgid "%s is not found."
   msgstr "%s() ã  ϴ"
   
  -#: ../plugin/Keywords.php:421
  +#: ../plugin/Keywords.php:462
   msgid "Common words are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:468
  +#: ../plugin/Keywords.php:509
   #, c-format
   msgid "Keywords for %s are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:494
  +#: ../plugin/Keywords.php:535
   msgid "Keywords are updated"
  -msgstr ""
  +msgstr "Ű尡 ŵǾϴ"
   
  -#: ../plugin/Keywords.php:496
  +#: ../plugin/Keywords.php:537
   msgid "There are no changes found"
  -msgstr ""
  +msgstr "ȭ ϴ"
   
  -#: ../plugin/Keywords.php:509
  +#: ../plugin/Keywords.php:550
   msgid "Update with these Keywords"
  -msgstr ""
  +msgstr "Ű ϱ"
  +
  +#: ../plugin/Keywords.php:570 ../plugin/Keywords.php:574
  +msgid "alphabetically"
  +msgstr ""
   
  -#: ../plugin/Keywords.php:522
  +#: ../plugin/Keywords.php:571
  +msgid "by frequency"
  +msgstr "󵵼"
  +
  +#: ../plugin/Keywords.php:573
  +msgid "by size"
  +msgstr "ũ"
  +
  +#: ../plugin/Keywords.php:579
  +#, c-format
  +msgid "Keywords list %s (or %s)"
  +msgstr "%s Ű  (Ȥ %s)"
  +
  +#: ../plugin/Keywords.php:584
   #, c-format
   msgid "Select keywords for %s"
  -msgstr ""
  +msgstr "%s  Ű带 "
   
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1058 ../wikilib.php:2399
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1085 ../wikilib.php:2436
   msgid "Use more specific text"
   msgstr "  ڼ Էϼ"
   
  @@ -568,48 +568,43 @@
   msgid "PHP Version"
   msgstr ""
   
  -#: ../plugin/Tour.php:16
  -#, c-format
  -msgid "Tour from %s"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:56
  +#: ../plugin/Tour.php:57
   msgid "BackLinks"
   msgstr ""
   
  -#: ../plugin/Tour.php:60
  +#: ../plugin/Tour.php:61
   msgid "Keywords"
   msgstr "Ű"
   
  -#: ../plugin/Tour.php:68
  +#: ../plugin/Tour.php:70
   #, c-format
   msgid " from %s"
   msgstr " %s "
   
  -#: ../plugin/Tour.php:71
  +#: ../plugin/Tour.php:73
   #, c-format
   msgid "%s Tour %s"
  -msgstr "%s  %s"
  +msgstr "%2$s %1$s "
   
  -#: ../plugin/Tour.php:112
  +#: ../plugin/Tour.php:121
   msgid "links"
   msgstr ""
   
  -#: ../plugin/Tour.php:114
  +#: ../plugin/Tour.php:123
   msgid "deeper"
   msgstr ""
   
  -#: ../plugin/Tour.php:115
  +#: ../plugin/Tour.php:124
   #, c-format
   msgid "More %s or more %s"
   msgstr "  %s Ȥ %s"
   
  -#: ../plugin/Tour.php:123
  +#: ../plugin/Tour.php:139
   #, c-format
   msgid "Total %d related keywords"
   msgstr "%d   Ű"
   
  -#: ../plugin/Tour.php:126
  +#: ../plugin/Tour.php:142
   #, c-format
   msgid "Total %d related pages"
   msgstr "%d   "
  @@ -619,7 +614,7 @@
   msgid "TwinPages of %s"
   msgstr "%s ֵ "
   
  -#: ../plugin/TwinPages.php:19 ../wiki.php:4007
  +#: ../plugin/TwinPages.php:19 ../wiki.php:4108
   msgid "See [TwinPages]: "
   msgstr ""
   
  @@ -646,40 +641,53 @@
   msgid "File \"%s\" is uploaded successfully"
   msgstr "\"%s\"  ö󰬽ϴ"
   
  -#: ../plugin/UploadFile.php:195
  +#: ../plugin/UploadFile.php:203
   msgid "Files are uploaded successfully"
   msgstr "  ö󰬽ϴ"
   
  -#: ../plugin/UploadFile.php:235
  +#: ../plugin/UploadFile.php:243
   msgid ": Rename"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:278 ../plugin/rename.php:77 ../wikilib.php:908
  -#: ../wikilib.php:1726
  +#: ../plugin/UploadedFiles.php:236
  +msgid "Next page &raquo;"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:238
  +msgid "&laquo; First page"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:294
  +#, c-format
  +msgid "Total %d files"
  +msgstr " %d  "
  +
  +#: ../plugin/UploadedFiles.php:298 ../plugin/rename.php:77 ../wikilib.php:935
  +#: ../wikilib.php:1763
   msgid "Password"
   msgstr "йȣ"
   
  -#: ../plugin/UploadedFiles.php:279 ../wikilib.php:886
  +#: ../plugin/UploadedFiles.php:299 ../wikilib.php:913
   msgid "Delete selected files"
   msgstr "õ  "
   
  -#: ../plugin/VisualTour.php:56
  +#: ../plugin/VisualTour.php:98
   msgid "Normal"
   msgstr ""
   
  -#: ../plugin/VisualTour.php:58
  +#: ../plugin/VisualTour.php:100
   msgid "Wider"
   msgstr "а"
   
  -#: ../plugin/VisualTour.php:60
  +#: ../plugin/VisualTour.php:102
   msgid "Deeper"
   msgstr ""
   
   #: ../plugin/Vote.php:67 ../plugin/security/community.php:26
   #: ../plugin/security/community.php:36 ../plugin/security/community.php:46
  -#: ../plugin/security/community.php:61 ../plugin/security/mustlogin.php:25
  -#: ../plugin/security/mustlogin.php:35 ../plugin/security/mustlogin.php:45
  -#: ../plugin/security/mustlogin.php:60 ../plugin/security/needtologin.php:29
  +#: ../plugin/security/community.php:61 ../plugin/security/mustlogin.php:29
  +#: ../plugin/security/mustlogin.php:40 ../plugin/security/mustlogin.php:51
  +#: ../plugin/security/mustlogin.php:67 ../plugin/security/needtologin.php:29
   #: ../plugin/security/needtologin.php:40 ../plugin/security/needtologin.php:51
   #: ../plugin/security/userbased.php:60
   msgid "Please Login or make your ID on this Wiki ;)"
  @@ -689,11 +697,47 @@
   msgid "Voted successfully"
   msgstr ""
   
  -#: ../plugin/WordIndex.php:66 ../wikilib.php:2152
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2189
   msgid "Others"
   msgstr ""
   
  -#: ../plugin/backup.php:46
  +#: ../plugin/aclinfo.php:15
  +msgid "ACL is not enabled on this Wiki"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:21
  +msgid "Your ACL Info"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:23
  +msgid "You are wiki owner"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:25
  +msgid "You are wiki master"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:27
  +msgid "Allowed actions"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:32
  +msgid "Denied actions"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:38
  +msgid "Protected actions"
  +msgstr ""
  +
  +#: ../plugin/backup.php:42
  +msgid "Your wiki is backuped successfully"
  +msgstr "Ű  Ǿϴ"
  +
  +#: ../plugin/backup.php:49
  +msgid "Backup failed !"
  +msgstr ""
  +
  +#: ../plugin/backup.php:54
   msgid "Did you want to Backup your wiki ?"
   msgstr ""
   
  @@ -748,15 +792,19 @@
   msgid "UserPreferences"
   msgstr "ȯ漳"
   
  -#: ../plugin/man_get.php:13
  +#: ../plugin/man_get.php:14
   msgid "No manpage selected"
   msgstr "Manpage õ ʾҽϴ"
   
  -#: ../plugin/man_get.php:23
  +#: ../plugin/man_get.php:40
   msgid "No manpage found"
   msgstr "Manpage ϴ"
   
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1776
  +#: ../plugin/man_get.php:104
  +msgid "Edit"
  +msgstr "ġ"
  +
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1813
   msgid "Login or Join"
   msgstr ""
   
  @@ -765,6 +813,19 @@
   msgid "%s or %s"
   msgstr "%s Ȥ %s"
   
  +#: ../plugin/msgfmt.php:74 ../plugin/msgfmt.php:152
  +#, c-format
  +msgid "Translation of %s"
  +msgstr "%s "
  +
  +#: ../plugin/msgfmt.php:83
  +msgid "Translations are successfully updated."
  +msgstr "  ŵǾϴ"
  +
  +#: ../plugin/msgfmt.php:85
  +msgid "Fail to save translations."
  +msgstr "  ߽ϴ"
  +
   #: ../plugin/new.php:11 ../plugin/new.php:18
   msgid "Create a new page"
   msgstr " "
  @@ -907,7 +968,7 @@
   msgid "Only WikiMaster can rename this page"
   msgstr ""
   
  -#: ../plugin/rename.php:79 ../wikilib.php:946
  +#: ../plugin/rename.php:79 ../wikilib.php:973
   msgid "with revision history"
   msgstr " 丮 Բ"
   
  @@ -923,24 +984,36 @@
   msgid "Error: Don't try to overwrite it"
   msgstr ""
   
  -#: ../plugin/restore.php:27
  +#: ../plugin/restore.php:24
  +msgid "Please rename your old 'text_dir' first."
  +msgstr " 'text_dir' ̸  ٲּ."
  +
  +#: ../plugin/restore.php:25
  +msgid "e.g. \\$ mv data/text data/text_old"
  +msgstr ""
  +
  +#: ../plugin/restore.php:29
   msgid "Error: tarball does not exists"
   msgstr ""
   
  -#: ../plugin/restore.php:32
  +#: ../plugin/restore.php:34
   #, c-format
   msgid "Restore %s"
   msgstr ""
   
  -#: ../plugin/restore.php:45
  +#: ../plugin/restore.php:50
   #, c-format
   msgid "Restore %s ?"
   msgstr "%s() Restoreұ ?"
   
  -#: ../plugin/restore.php:62
  +#: ../plugin/restore.php:67
   msgid "Restore backuped data"
   msgstr ""
   
  +#: ../plugin/restore.php:68
  +msgid "Select a tarball file to restore"
  +msgstr ""
  +
   #: ../plugin/rss_rc.php:54
   msgid "show changes"
   msgstr ""
  @@ -954,20 +1027,33 @@
   msgid "Do you want to scrap \"%s\" ?"
   msgstr "\"%s\"() ũϽðڽϱ ?"
   
  -#: ../plugin/security/community.php:25 ../plugin/security/community.php:35
  -#: ../plugin/security/community.php:45 ../plugin/security/mustlogin.php:24
  -#: ../plugin/security/mustlogin.php:34 ../plugin/security/mustlogin.php:44
  -#: ../plugin/security/needtologin.php:28 ../plugin/security/needtologin.php:39
  -#: ../plugin/security/needtologin.php:50
  +#: ../plugin/security/acl.php:204 ../plugin/security/community.php:25
  +#: ../plugin/security/community.php:35 ../plugin/security/community.php:45
  +#: ../plugin/security/mustlogin.php:28 ../plugin/security/mustlogin.php:39
  +#: ../plugin/security/mustlogin.php:50 ../plugin/security/needtologin.php:28
  +#: ../plugin/security/needtologin.php:39 ../plugin/security/needtologin.php:50
   #, c-format
   msgid "You are not allowed to '%s' on this page"
   msgstr "'%s'   ׼Դϴ."
   
  +#: ../plugin/security/acl.php:205
  +msgid "Please contact WikiMasters :b"
  +msgstr ""
  +
  +#: ../plugin/security/authbasic.php:68
  +#, c-format
  +msgid "You have no permission to '%s'."
  +msgstr "'%s'()  ʾҽϴ"
  +
  +#: ../plugin/security/authbasic.php:71
  +msgid "You must enter a valid login ID and password to access this resource.\n"
  +msgstr ""
  +
   #: ../plugin/security/community.php:60 ../plugin/security/htaccesslogin.php:46
  -#: ../plugin/security/mustlogin.php:59 ../plugin/security/userbased.php:28
  +#: ../plugin/security/mustlogin.php:66 ../plugin/security/userbased.php:28
   #: ../plugin/security/userbased.php:36 ../plugin/security/userbased.php:44
  -#: ../plugin/security/userbased.php:59 ../plugin/security/wikimaster.php:25
  -#: ../plugin/security/wikimaster.php:33 ../plugin/security/wikimaster.php:41
  +#: ../plugin/security/userbased.php:59 ../plugin/security/wikimaster.php:29
  +#: ../plugin/security/wikimaster.php:38 ../plugin/security/wikimaster.php:47
   #, c-format
   msgid "You are not allowed to '%s' on this page."
   msgstr "'%s'   ׼Դϴ."
  @@ -977,8 +1063,8 @@
   msgstr ""
   
   #: ../plugin/security/userbased.php:29 ../plugin/security/userbased.php:37
  -#: ../plugin/security/userbased.php:45 ../plugin/security/wikimaster.php:26
  -#: ../plugin/security/wikimaster.php:34 ../plugin/security/wikimaster.php:42
  +#: ../plugin/security/userbased.php:45 ../plugin/security/wikimaster.php:30
  +#: ../plugin/security/wikimaster.php:39 ../plugin/security/wikimaster.php:48
   msgid "Please contact to WikiMaster"
   msgstr ""
   
  @@ -1031,27 +1117,27 @@
   msgid "Do you want to subscribe \"%s\" ?"
   msgstr "\"%s\"() Ͻðڽϱ ?"
   
  -#: ../plugin/theme.php:28
  +#: ../plugin/theme.php:29
   msgid "Theme cleared. Goto UserPreferences."
   msgstr "׸ . UserPreferences "
   
  -#: ../plugin/theme.php:39
  +#: ../plugin/theme.php:40
   msgid "Theme is changed"
   msgstr "׸ ٲϴ"
   
  -#: ../plugin/theme.php:68
  +#: ../plugin/theme.php:69
   msgid "Please select a theme properly."
   msgstr "׸  ּ"
   
  -#: ../plugin/theme.php:78
  +#: ../plugin/theme.php:79
   msgid "Theme disabled !"
   msgstr ""
   
  -#: ../plugin/theme.php:92
  +#: ../plugin/theme.php:96
   msgid "-- Select --"
   msgstr "--  --"
   
  -#: ../plugin/ticket.php:75
  +#: ../plugin/ticket.php:172
   msgid "Invalid use of ticket"
   msgstr ""
   
  @@ -1105,13 +1191,13 @@
   msgid "ID does not exists !"
   msgstr "̵  ʽϴ !"
   
  -#: ../plugin/userform.php:86 ../plugin/userform.php:266
  +#: ../plugin/userform.php:86 ../plugin/userform.php:273
   #, c-format
   msgid "Successfully login as '%s'"
   msgstr " '%s'() αεǾϴ"
   
  -#: ../plugin/userform.php:92 ../plugin/userform.php:271
  -#: ../plugin/userform.php:314
  +#: ../plugin/userform.php:92 ../plugin/userform.php:278
  +#: ../plugin/userform.php:321
   msgid "Invalid password !"
   msgstr "߸ йȣ !"
   
  @@ -1128,7 +1214,7 @@
   msgid "Cookie deleted !"
   msgstr "Ű ϴ !"
   
  -#: ../plugin/userform.php:106 ../wikilib.php:1833
  +#: ../plugin/userform.php:106 ../wikilib.php:1870
   msgid "E-mail new password"
   msgstr " йȣ ޱ"
   
  @@ -1154,7 +1240,7 @@
   msgid "Your new password is %s"
   msgstr " йȣ %s"
   
  -#: ../plugin/userform.php:159 ../plugin/userform.php:258
  +#: ../plugin/userform.php:159 ../plugin/userform.php:265
   msgid "Please change your password later"
   msgstr "йȣ ٲּ"
   
  @@ -1190,7 +1276,7 @@
   msgid "Please try again or make a new profile"
   msgstr "̸ ּ  ٽ ϼ"
   
  -#: ../plugin/userform.php:224 ../plugin/userform.php:302
  +#: ../plugin/userform.php:224 ../plugin/userform.php:309
   msgid "too short password!"
   msgstr "йȣ ªϴ"
   
  @@ -1198,7 +1284,7 @@
   msgid "mismatch password!"
   msgstr "йȣ  ʽϴ!"
   
  -#: ../plugin/userform.php:226 ../plugin/userform.php:306
  +#: ../plugin/userform.php:226 ../plugin/userform.php:313
   msgid "not acceptable character found in the password!"
   msgstr ""
   
  @@ -1206,61 +1292,77 @@
   msgid "Your password is too simple to use as a password !"
   msgstr ""
   
  -#: ../plugin/userform.php:235 ../plugin/userform.php:337
  +#: ../plugin/userform.php:235 ../plugin/userform.php:344
   msgid "Your email address is not valid"
   msgstr "̸ ּҰ ߸ Ǿϴ"
   
  -#: ../plugin/userform.php:239
  +#: ../plugin/userform.php:240
  +msgid "Fail to register"
  +msgstr " ߽ϴ"
  +
  +#: ../plugin/userform.php:241
  +msgid "You are not allowed to register on this wiki"
  +msgstr "Ű   ʾҽϴ"
  +
  +#: ../plugin/userform.php:242 ../wiki.php:4069 ../wiki.php:4080
  +msgid "Please contact WikiMasters"
  +msgstr "Űڿ ϼ"
  +
  +#: ../plugin/userform.php:246
   msgid "Successfully added!"
   msgstr ""
   
  -#: ../plugin/userform.php:245
  +#: ../plugin/userform.php:252
   #, c-format
   msgid "Successfully added as '%s'"
   msgstr ""
   
  -#: ../plugin/userform.php:246
  +#: ../plugin/userform.php:253
   msgid "Please check your mailbox"
   msgstr "̸ Ȯ ּ"
   
  -#: ../plugin/userform.php:253 ../plugin/userform.php:331
  +#: ../plugin/userform.php:260 ../plugin/userform.php:338
   msgid "E-mail confirmation"
   msgstr "̸ Ȯ"
   
  -#: ../plugin/userform.php:255 ../plugin/userform.php:333
  +#: ../plugin/userform.php:262 ../plugin/userform.php:340
   msgid "Please confirm your email address"
   msgstr "̸ ּҸ Ȯ ּ"
   
  -#: ../plugin/userform.php:257
  +#: ../plugin/userform.php:264
   #, c-format
   msgid "Your initial password is %s"
   msgstr ""
   
  -#: ../plugin/userform.php:261 ../plugin/userform.php:335
  -msgid "E-mail confirmation mail sent"
  -msgstr ""
  +#: ../plugin/userform.php:268
  +msgid "Confirmation E-mail sent"
  +msgstr "Ȯ ̸ ϴ"
   
  -#: ../plugin/userform.php:276
  +#: ../plugin/userform.php:283
   msgid "Invalid username !"
   msgstr "߸ ̸ !"
   
  -#: ../plugin/userform.php:304
  +#: ../plugin/userform.php:311
   msgid "mismatch password !"
   msgstr "߸ йȣ !"
   
  -#: ../plugin/userform.php:307 ../plugin/userform.php:315
  +#: ../plugin/userform.php:314 ../plugin/userform.php:322
   msgid "Password is not changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:309
  +#: ../plugin/userform.php:316
   msgid "Password is changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:311
  +#: ../plugin/userform.php:318
   msgid "Password is too simple to use as a password !"
  +msgstr "йȣ ⿡ ʹ ª йȣԴϴ !"
  +
  +#: ../plugin/userform.php:342
  +msgid "E-mail confirmation mail sent"
   msgstr ""
   
  -#: ../plugin/userform.php:343
  +#: ../plugin/userform.php:350
   msgid "Profiles are saved successfully !"
   msgstr "   Ǿϴ !"
   
  @@ -1274,122 +1376,118 @@
   msgid "Whois search result for %s"
   msgstr "%s  Whois ġ "
   
  -#: ../wiki.php:1128
  +#: ../wiki.php:1129
   #, c-format
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1429
  +#: ../wiki.php:1431
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
  -#: ../wiki.php:1439
  +#: ../wiki.php:1441
   msgid "File does not exists"
   msgstr ""
   
  -#: ../wiki.php:2385
  +#: ../wiki.php:2410
   msgid "Invalid ajax action."
   msgstr "߸ ajax ׼."
   
  -#: ../wiki.php:2616
  +#: ../wiki.php:2668
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:2616
  +#: ../wiki.php:2668
   msgid "TwinPages"
   msgstr "TwinPages"
   
  -#: ../wiki.php:2621
  +#: ../wiki.php:2673
   msgid "See [TwinPages]:"
   msgstr ""
   
  -#: ../wiki.php:2926
  +#: ../wiki.php:2978
   msgid "edit"
   msgstr ""
   
  -#: ../wiki.php:3079
  +#: ../wiki.php:3131
   msgid "Sister Sites Index"
   msgstr ""
   
  -#: ../wiki.php:3370 ../locale/dummy.php:6
  +#: ../wiki.php:3422 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "ġ"
   
  -#: ../wiki.php:3372
  +#: ../wiki.php:3424
   msgid "NotEditable"
   msgstr "ĥ "
   
  -#: ../wiki.php:3374 ../locale/dummy.php:6
  +#: ../wiki.php:3426 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:3375 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:3427 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "ã"
   
  -#: ../wiki.php:3706
  +#: ../wiki.php:3762
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:3967
  +#: ../wiki.php:4068
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:3968 ../wiki.php:3979
  -msgid "Please contact WikiMasters"
  -msgstr ""
  -
  -#: ../wiki.php:3978
  +#: ../wiki.php:4079
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:4009 ../wiki.php:4012 ../wikilib.php:1100
  +#: ../wiki.php:4110 ../wiki.php:4113 ../wikilib.php:1128
   msgid "Create this page"
   msgstr " "
   
  -#: ../wiki.php:4015 ../wikilib.php:1102
  +#: ../wiki.php:4116 ../wikilib.php:1130
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
   
  -#: ../wiki.php:4015 ../wikilib.php:1102
  +#: ../wiki.php:4116 ../wikilib.php:1130
   msgid "title"
   msgstr ""
   
  -#: ../wiki.php:4024
  +#: ../wiki.php:4125
   msgid " or alternativly, use one of these templates:\n"
   msgstr " Ȥ Ʒ øƮ  ̿ϼ:\n"
   
  -#: ../wiki.php:4027
  +#: ../wiki.php:4128
   msgid "You have no templates"
   msgstr ""
   
  -#: ../wiki.php:4029
  +#: ../wiki.php:4130
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr "øƮ ÷ '%s'    弼.\n"
   
  -#: ../wiki.php:4040
  +#: ../wiki.php:4141
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
  -#: ../wiki.php:4130
  +#: ../wiki.php:4235
   #, c-format
   msgid "You are not allowed to '%s'"
  -msgstr ""
  +msgstr "'%s'()  ʾҽϴ"
   
  -#: ../wiki.php:4150
  +#: ../wiki.php:4255
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:4153
  +#: ../wiki.php:4258
   msgid "Please enter the valid password"
   msgstr "Ȯ йȣ ־ּ"
   
  -#: ../wikilib.php:547
  +#: ../wikilib.php:574
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -1418,325 +1516,325 @@
   "<b>̺</b>: ||   |||| ĭ ģ  ||;<br />\n"
   "̺̳     ȵ˴ϴ.<br />\n"
   
  -#: ../wikilib.php:588
  +#: ../wikilib.php:615
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
  -#: ../wikilib.php:671
  +#: ../wikilib.php:698
   msgid "Use one of the following templates as an initial release :\n"
   msgstr "ó   øƮ Ȱϼ :\n"
   
  -#: ../wikilib.php:673
  +#: ../wikilib.php:700
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr "øƮ ÷ '%s'  ̸  弼."
   
  -#: ../wikilib.php:677
  +#: ../wikilib.php:704
   msgid "Merge"
  -msgstr ""
  +msgstr ""
   
  -#: ../wikilib.php:678
  +#: ../wikilib.php:705
   msgid "Merge manually"
  -msgstr ""
  +msgstr " "
   
  -#: ../wikilib.php:679
  +#: ../wikilib.php:706
   msgid "Ignore conflicts"
  -msgstr ""
  +msgstr "浹 "
   
  -#: ../wikilib.php:704
  +#: ../wikilib.php:731
   msgid "ReduceEditor"
   msgstr "â ̱"
   
  -#: ../wikilib.php:705
  +#: ../wikilib.php:732
   msgid "EnlargeEditor"
   msgstr "â ̱"
   
  -#: ../wikilib.php:709 ../locale/dummy.php:6
  +#: ../wikilib.php:736 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr "Ű"
   
  -#: ../wikilib.php:711
  +#: ../wikilib.php:738
   msgid "HelpOnEditing"
   msgstr "ġ "
   
  -#: ../wikilib.php:738
  +#: ../wikilib.php:765
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:755
  +#: ../wikilib.php:782
   msgid "--Select Category--"
   msgstr "--īװ --"
   
  -#: ../wikilib.php:765
  +#: ../wikilib.php:792
   msgid "Minor edit"
   msgstr ""
   
  -#: ../wikilib.php:773
  +#: ../wikilib.php:800
   msgid "Skip to preview"
   msgstr "̸"
   
  -#: ../wikilib.php:775 ../wikilib.php:1779 ../wikilib.php:1821
  +#: ../wikilib.php:802 ../wikilib.php:1816 ../wikilib.php:1858
   msgid "Save"
   msgstr ""
   
  -#: ../wikilib.php:776
  +#: ../wikilib.php:803
   msgid "Summary of Change"
   msgstr "ٲ "
   
  -#: ../wikilib.php:822
  +#: ../wikilib.php:849
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:827
  +#: ../wikilib.php:854
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s() ȿ ׼ ƴմϴ"
   
  -#: ../wikilib.php:829
  +#: ../wikilib.php:856
   msgid "Is it valid action ?"
  -msgstr ""
  +msgstr "ùٸ ׼Դϱ ?"
   
  -#: ../wikilib.php:874
  +#: ../wikilib.php:901
   #, c-format
   msgid "File '%s' is deleted"
  -msgstr ""
  +msgstr "'%s'  ϴ"
   
  -#: ../wikilib.php:876
  +#: ../wikilib.php:903
   #, c-format
   msgid "Fail to delete '%s'"
  -msgstr ""
  +msgstr "'%s' ⸦ ߽ϴ"
   
  -#: ../wikilib.php:881
  +#: ../wikilib.php:908
   #, c-format
   msgid "Directory '%s' is deleted"
  -msgstr ""
  +msgstr "'%s' 丮 ϴ"
   
  -#: ../wikilib.php:883
  +#: ../wikilib.php:910
   #, c-format
   msgid "Fail to rmdir '%s'"
  -msgstr ""
  +msgstr "'%s' ⸦ ߽ϴ"
   
  -#: ../wikilib.php:893 ../wikilib.php:913
  +#: ../wikilib.php:920 ../wikilib.php:940
   msgid "No files are selected !"
   msgstr " õ ʾҽϴ !"
   
  -#: ../wikilib.php:906
  +#: ../wikilib.php:933
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr " '%s'() ðڽϱ ?"
   
  -#: ../wikilib.php:909
  +#: ../wikilib.php:936
   msgid "Delete"
   msgstr ""
   
  -#: ../wikilib.php:910
  +#: ../wikilib.php:937
   msgid "Delete selected file"
   msgstr "õ  "
   
  -#: ../wikilib.php:931
  +#: ../wikilib.php:958
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr ""
   
  -#: ../wikilib.php:938
  +#: ../wikilib.php:965
   msgid "Please delete this file manually."
   msgstr ""
   
  -#: ../wikilib.php:940
  +#: ../wikilib.php:967
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "\"%s\"()  ?"
   
  -#: ../wikilib.php:990
  +#: ../wikilib.php:1017
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
  -#: ../wikilib.php:1154 ../wikilib.php:1258
  +#: ../wikilib.php:1182 ../wikilib.php:1284
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "%s() ġ  ٸ    ߽ϴ"
   
  -#: ../wikilib.php:1160
  +#: ../wikilib.php:1188
   msgid "Section edit is not valid for non-exists page."
  -msgstr ""
  +msgstr "      ʽϴ"
   
  -#: ../wikilib.php:1193 ../wikilib.php:1368
  +#: ../wikilib.php:1221 ../wikilib.php:1397
   msgid "mail does not supported by default."
  -msgstr ""
  +msgstr "  ʽϴ"
   
  -#: ../wikilib.php:1197 ../wikilib.php:1372
  +#: ../wikilib.php:1225 ../wikilib.php:1401
   msgid "Sent notification mail."
  -msgstr ""
  +msgstr " ½ϴ"
   
  -#: ../wikilib.php:1199 ../wikilib.php:1374
  +#: ../wikilib.php:1227 ../wikilib.php:1403
   msgid "No subscribers found."
   msgstr "ڰ ϴ"
   
  -#: ../wikilib.php:1204 ../wikilib.php:1379
  +#: ../wikilib.php:1232 ../wikilib.php:1408
   #, c-format
   msgid "%s is not editable"
   msgstr "%s()   ϴ"
   
  -#: ../wikilib.php:1206 ../wikilib.php:1381
  +#: ../wikilib.php:1234 ../wikilib.php:1410
   #, c-format
   msgid "%s is saved"
   msgstr "%s() Ǿϴ"
   
  -#: ../wikilib.php:1249
  +#: ../wikilib.php:1275
   msgid "Goto Editor"
   msgstr " "
   
  -#: ../wikilib.php:1262
  +#: ../wikilib.php:1289
   #, c-format
   msgid "%s is merged with latest contents."
  -msgstr ""
  +msgstr "%s  ֱ  յǾϴ."
   
  -#: ../wikilib.php:1263
  +#: ../wikilib.php:1290
   #, c-format
   msgid "%s is merged successfully"
   msgstr "%s()  յǾϴ"
   
  -#: ../wikilib.php:1267
  +#: ../wikilib.php:1294
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr "%s Ͽ  浹 ߰ߵǾϴ !"
   
  -#: ../wikilib.php:1268
  +#: ../wikilib.php:1295
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr "%   ҵǾϴ."
   
  -#: ../wikilib.php:1269
  +#: ../wikilib.php:1296
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1270
  +#: ../wikilib.php:1297
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1275
  +#: ../wikilib.php:1302
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr ""
   
  -#: ../wikilib.php:1276
  +#: ../wikilib.php:1303
   msgid "Please resolve conflicts manually."
   msgstr "浹  ذϽñ ٶϴ."
   
  -#: ../wikilib.php:1279
  +#: ../wikilib.php:1306
   #, c-format
   msgid "Force merging for %s !"
   msgstr "%s    Ǿϴ !"
   
  -#: ../wikilib.php:1280
  +#: ../wikilib.php:1307
   msgid "Please be careful, you could damage useful information."
  -msgstr ""
  +msgstr "Ͻñ ٶϴ. ߿  Ҿ  ֽϴ."
   
  -#: ../wikilib.php:1292
  +#: ../wikilib.php:1319
   msgid "Conflict error!"
  -msgstr "浹!"
  +msgstr "浹 !"
   
  -#: ../wikilib.php:1329
  +#: ../wikilib.php:1357
   #, c-format
   msgid "Preview of %s"
   msgstr "%s ̸"
   
  -#: ../wikilib.php:1405
  +#: ../wikilib.php:1442
   msgid "Nobody subscribed to this page."
   msgstr "ƹ   ʰֽϴ."
   
  -#: ../wikilib.php:1424
  +#: ../wikilib.php:1461
   #, c-format
   msgid "%s page is modified"
  -msgstr ""
  +msgstr "%s  Ǿϴ"
   
  -#: ../wikilib.php:1453
  +#: ../wikilib.php:1490
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:1466
  +#: ../wikilib.php:1503
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:1471
  +#: ../wikilib.php:1508
   msgid "Mails are sent successfully"
  -msgstr ""
  +msgstr "  ½ϴ"
   
  -#: ../wikilib.php:1472
  +#: ../wikilib.php:1509
   #, c-format
   msgid "mails are sent to '%s'"
  -msgstr ""
  +msgstr "'%s'  ½ϴ"
   
  -#: ../wikilib.php:1474
  +#: ../wikilib.php:1511
   msgid "Fail to send mail"
  -msgstr ""
  +msgstr "  ߽ϴ"
   
  -#: ../wikilib.php:1485
  +#: ../wikilib.php:1522
   msgid "This wiki does not support sendmail"
  -msgstr ""
  +msgstr "Ű sendmail  մϴ"
   
  -#: ../wikilib.php:1583
  +#: ../wikilib.php:1620
   msgid "Invalid regular expression !"
   msgstr "߸ Խ !"
   
  -#: ../wikilib.php:1607
  +#: ../wikilib.php:1644
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:1610
  +#: ../wikilib.php:1647
   msgid "Infinite loop possible!"
  -msgstr ""
  +msgstr "  !"
   
  -#: ../wikilib.php:1737
  +#: ../wikilib.php:1774
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:1738 ../wikilib.php:1838
  +#: ../wikilib.php:1775 ../wikilib.php:1875
   msgid "ID"
   msgstr "̵"
   
  -#: ../wikilib.php:1759 ../wikilib.php:1831
  +#: ../wikilib.php:1796 ../wikilib.php:1868
   msgid "Make profile"
   msgstr " "
   
  -#: ../wikilib.php:1761
  +#: ../wikilib.php:1798
   msgid "password again"
   msgstr "йȣ Է"
   
  -#: ../wikilib.php:1763 ../wikilib.php:1801
  +#: ../wikilib.php:1800 ../wikilib.php:1838
   msgid "Mail"
   msgstr ""
   
  -#: ../wikilib.php:1783
  +#: ../wikilib.php:1820
   msgid "New password"
   msgstr " йȣ"
   
  -#: ../wikilib.php:1802
  +#: ../wikilib.php:1839
   msgid "Time Zone"
   msgstr "ð"
   
  -#: ../wikilib.php:1810
  +#: ../wikilib.php:1847
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:2153
  +#: ../wikilib.php:2190
   msgid "Show all"
   msgstr " "
   
  -#: ../wikilib.php:2295
  +#: ../wikilib.php:2332
   msgid "Contents"
   msgstr ""
   
  -#: ../wikilib.php:2406
  +#: ../wikilib.php:2443
   #, c-format
   msgid "Title search for \"%s\""
  -msgstr ""
  +msgstr "\"%s\"   ã"
   
   #: ../locale/dummy.php:3
   msgid "FrontPage"
  @@ -1777,3 +1875,6 @@
   #: ../locale/dummy.php:7
   msgid "TrackBack"
   msgstr "Ʈ"
  +
  +#~ msgid "Info. for %s"
  +#~ msgstr "%s "
  
  
  
  1.17      +336 -238  moniwiki/locale/po/moniwiki.pot
  
  Index: moniwiki.pot
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/moniwiki.pot,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- moniwiki.pot	1 Jul 2006 18:59:33 -0000	1.16
  +++ moniwiki.pot	22 Jul 2006 11:15:46 -0000	1.17
  @@ -6,7 +6,7 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: PACKAGE VERSION\n"
  -"POT-Creation-Date: 2006-07-02 04:01+0900\n"
  +"POT-Creation-Date: 2006-07-22 20:14+0900\n"
   "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
   "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
   "Language-Team: LANGUAGE <LL@li.org>\n"
  @@ -14,16 +14,16 @@
   "Content-Type: text/plain; charset=CHARSET\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  -#: ../plugin/Attachment.php:41 ../plugin/Attachment.php:128
  +#: ../plugin/Attachment.php:42 ../plugin/Attachment.php:129
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr ""
   
  -#: ../plugin/Attachment.php:125
  +#: ../plugin/Attachment.php:126
   msgid "or paste a new picture"
   msgstr ""
   
  -#: ../plugin/Attachment.php:131
  +#: ../plugin/Attachment.php:132
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
  @@ -168,7 +168,7 @@
   msgid "Comment"
   msgstr ""
   
  -#: ../plugin/Comment.php:62 ../wikilib.php:771
  +#: ../plugin/Comment.php:62 ../wikilib.php:798
   msgid "Preview"
   msgstr ""
   
  @@ -180,11 +180,12 @@
   msgid "You are not allowed to add a comment."
   msgstr ""
   
  -#: ../plugin/Comment.php:86 ../plugin/Keywords.php:309
  +#: ../plugin/Comment.php:86 ../plugin/Keywords.php:333
   msgid "Page does not exists"
   msgstr ""
   
  -#: ../plugin/Comment.php:119 ../wikilib.php:1179 ../wikilib.php:1323
  +#: ../plugin/Comment.php:119 ../plugin/Gallery.php:166 ../wikilib.php:1207
  +#: ../wikilib.php:1351
   msgid ""
   "Sorry, can not save page because some messages are blocked in this wiki."
   msgstr ""
  @@ -210,7 +211,7 @@
   msgid "Version info is not available in this wiki"
   msgstr ""
   
  -#: ../plugin/Diff.php:193 ../wikilib.php:1310
  +#: ../plugin/Diff.php:193 ../wikilib.php:1338
   msgid "No difference found"
   msgstr ""
   
  @@ -263,7 +264,7 @@
   msgid "%d day(s) passed from %s."
   msgstr ""
   
  -#: ../plugin/FastSearch.php:44 ../plugin/FullSearch.php:79
  +#: ../plugin/FastSearch.php:44 ../plugin/FullSearch.php:80
   msgid "No search text"
   msgstr ""
   
  @@ -303,7 +304,7 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:44
  +#: ../plugin/FullSearch.php:44 ../plugin/VisualTour.php:104
   msgid "Refresh"
   msgstr ""
   
  @@ -312,34 +313,38 @@
   msgid " (%s search results)"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:122
  +#: ../plugin/FullSearch.php:123
   msgid "Empty expression"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:126 ../wikilib.php:2410
  +#: ../plugin/FullSearch.php:127 ../wikilib.php:2447
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr ""
   
  -#: ../plugin/Gallery.php:275 ../plugin/Gallery.php:287
  +#: ../plugin/Gallery.php:235 ../plugin/UploadedFiles.php:200
  +msgid "No files found"
  +msgstr ""
  +
  +#: ../plugin/Gallery.php:314 ../plugin/Gallery.php:327
   msgid "add comment"
   msgstr ""
   
  -#: ../plugin/Gallery.php:284
  +#: ../plugin/Gallery.php:324
   msgid "show comments"
   msgstr ""
   
  -#: ../plugin/Gallery.php:328 ../plugin/Gallery.php:331 ../wikilib.php:1166
  -#: ../wikilib.php:1309
  +#: ../plugin/Gallery.php:366 ../plugin/Gallery.php:370 ../wikilib.php:1194
  +#: ../wikilib.php:1336
   #, c-format
   msgid "Go back or return to %s"
   msgstr ""
   
  -#: ../plugin/Gallery.php:329
  +#: ../plugin/Gallery.php:367
   msgid "Comments are edited"
   msgstr ""
   
  -#: ../plugin/Gallery.php:332
  +#: ../plugin/Gallery.php:371
   msgid "Comments is added"
   msgstr ""
   
  @@ -374,96 +379,91 @@
   msgid "%s min ago"
   msgstr ""
   
  -#: ../plugin/Info.php:204
  -#, c-format
  -msgid "Info. for %s"
  -msgstr ""
  -
  -#: ../plugin/JME.php:55
  -#, c-format
  -msgid "Draw a new molecule '%s'"
  -msgstr ""
  -
  -#: ../plugin/JME.php:57
  -msgid "Draw a new molecule"
  -msgstr ""
  -
  -#: ../plugin/JME.php:95
  -msgid "Molecule successfully added"
  -msgstr ""
  -
  -#: ../plugin/JME.php:101
  -msgid "Edit Molecule"
  -msgstr ""
  -
  -#: ../plugin/JME.php:131
  -msgid "Edit new molecule"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:272
  +#: ../plugin/Keywords.php:291
   msgid "hits"
   msgstr ""
   
  -#: ../plugin/Keywords.php:276
  +#: ../plugin/Keywords.php:299
   msgid "add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:279
  +#: ../plugin/Keywords.php:302
   msgid "Update keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:281
  +#: ../plugin/Keywords.php:304
   msgid "Add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:282
  +#: ../plugin/Keywords.php:305
   msgid "Add as common words"
   msgstr ""
   
  -#: ../plugin/Keywords.php:283
  +#: ../plugin/Keywords.php:306
   msgid "Unselect all"
   msgstr ""
   
  -#: ../plugin/Keywords.php:284
  +#: ../plugin/Keywords.php:307
   msgid "Suggest new Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:308
  +#: ../plugin/Keywords.php:316
  +msgid "select language"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:332
   msgid "You are not able to add keywords."
   msgstr ""
   
  -#: ../plugin/Keywords.php:317
  +#: ../plugin/Keywords.php:346
   #, c-format
   msgid "%s is not found."
   msgstr ""
   
  -#: ../plugin/Keywords.php:421
  +#: ../plugin/Keywords.php:462
   msgid "Common words are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:468
  +#: ../plugin/Keywords.php:509
   #, c-format
   msgid "Keywords for %s are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:494
  +#: ../plugin/Keywords.php:535
   msgid "Keywords are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:496
  +#: ../plugin/Keywords.php:537
   msgid "There are no changes found"
   msgstr ""
   
  -#: ../plugin/Keywords.php:509
  +#: ../plugin/Keywords.php:550
   msgid "Update with these Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:522
  +#: ../plugin/Keywords.php:570 ../plugin/Keywords.php:574
  +msgid "alphabetically"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:571
  +msgid "by frequency"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:573
  +msgid "by size"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:579
  +#, c-format
  +msgid "Keywords list %s (or %s)"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:584
   #, c-format
   msgid "Select keywords for %s"
   msgstr ""
   
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1058 ../wikilib.php:2399
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1085 ../wikilib.php:2436
   msgid "Use more specific text"
   msgstr ""
   
  @@ -569,48 +569,43 @@
   msgid "PHP Version"
   msgstr ""
   
  -#: ../plugin/Tour.php:16
  -#, c-format
  -msgid "Tour from %s"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:56
  +#: ../plugin/Tour.php:57
   msgid "BackLinks"
   msgstr ""
   
  -#: ../plugin/Tour.php:60
  +#: ../plugin/Tour.php:61
   msgid "Keywords"
   msgstr ""
   
  -#: ../plugin/Tour.php:68
  +#: ../plugin/Tour.php:70
   #, c-format
   msgid " from %s"
   msgstr ""
   
  -#: ../plugin/Tour.php:71
  +#: ../plugin/Tour.php:73
   #, c-format
   msgid "%s Tour %s"
   msgstr ""
   
  -#: ../plugin/Tour.php:112
  +#: ../plugin/Tour.php:121
   msgid "links"
   msgstr ""
   
  -#: ../plugin/Tour.php:114
  +#: ../plugin/Tour.php:123
   msgid "deeper"
   msgstr ""
   
  -#: ../plugin/Tour.php:115
  +#: ../plugin/Tour.php:124
   #, c-format
   msgid "More %s or more %s"
   msgstr ""
   
  -#: ../plugin/Tour.php:123
  +#: ../plugin/Tour.php:139
   #, c-format
   msgid "Total %d related keywords"
   msgstr ""
   
  -#: ../plugin/Tour.php:126
  +#: ../plugin/Tour.php:142
   #, c-format
   msgid "Total %d related pages"
   msgstr ""
  @@ -620,7 +615,7 @@
   msgid "TwinPages of %s"
   msgstr ""
   
  -#: ../plugin/TwinPages.php:19 ../wiki.php:4007
  +#: ../plugin/TwinPages.php:19 ../wiki.php:4108
   msgid "See [TwinPages]: "
   msgstr ""
   
  @@ -647,40 +642,53 @@
   msgid "File \"%s\" is uploaded successfully"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:195
  +#: ../plugin/UploadFile.php:203
   msgid "Files are uploaded successfully"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:235
  +#: ../plugin/UploadFile.php:243
   msgid ": Rename"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:278 ../plugin/rename.php:77 ../wikilib.php:908
  -#: ../wikilib.php:1726
  +#: ../plugin/UploadedFiles.php:236
  +msgid "Next page &raquo;"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:238
  +msgid "&laquo; First page"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:294
  +#, c-format
  +msgid "Total %d files"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:298 ../plugin/rename.php:77 ../wikilib.php:935
  +#: ../wikilib.php:1763
   msgid "Password"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:279 ../wikilib.php:886
  +#: ../plugin/UploadedFiles.php:299 ../wikilib.php:913
   msgid "Delete selected files"
   msgstr ""
   
  -#: ../plugin/VisualTour.php:56
  +#: ../plugin/VisualTour.php:98
   msgid "Normal"
   msgstr ""
   
  -#: ../plugin/VisualTour.php:58
  +#: ../plugin/VisualTour.php:100
   msgid "Wider"
   msgstr ""
   
  -#: ../plugin/VisualTour.php:60
  +#: ../plugin/VisualTour.php:102
   msgid "Deeper"
   msgstr ""
   
   #: ../plugin/Vote.php:67 ../plugin/security/community.php:26
   #: ../plugin/security/community.php:36 ../plugin/security/community.php:46
  -#: ../plugin/security/community.php:61 ../plugin/security/mustlogin.php:25
  -#: ../plugin/security/mustlogin.php:35 ../plugin/security/mustlogin.php:45
  -#: ../plugin/security/mustlogin.php:60 ../plugin/security/needtologin.php:29
  +#: ../plugin/security/community.php:61 ../plugin/security/mustlogin.php:29
  +#: ../plugin/security/mustlogin.php:40 ../plugin/security/mustlogin.php:51
  +#: ../plugin/security/mustlogin.php:67 ../plugin/security/needtologin.php:29
   #: ../plugin/security/needtologin.php:40 ../plugin/security/needtologin.php:51
   #: ../plugin/security/userbased.php:60
   msgid "Please Login or make your ID on this Wiki ;)"
  @@ -690,11 +698,47 @@
   msgid "Voted successfully"
   msgstr ""
   
  -#: ../plugin/WordIndex.php:66 ../wikilib.php:2152
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2189
   msgid "Others"
   msgstr ""
   
  -#: ../plugin/backup.php:46
  +#: ../plugin/aclinfo.php:15
  +msgid "ACL is not enabled on this Wiki"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:21
  +msgid "Your ACL Info"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:23
  +msgid "You are wiki owner"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:25
  +msgid "You are wiki master"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:27
  +msgid "Allowed actions"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:32
  +msgid "Denied actions"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:38
  +msgid "Protected actions"
  +msgstr ""
  +
  +#: ../plugin/backup.php:42
  +msgid "Your wiki is backuped successfully"
  +msgstr ""
  +
  +#: ../plugin/backup.php:49
  +msgid "Backup failed !"
  +msgstr ""
  +
  +#: ../plugin/backup.php:54
   msgid "Did you want to Backup your wiki ?"
   msgstr ""
   
  @@ -749,15 +793,19 @@
   msgid "UserPreferences"
   msgstr ""
   
  -#: ../plugin/man_get.php:13
  +#: ../plugin/man_get.php:14
   msgid "No manpage selected"
   msgstr ""
   
  -#: ../plugin/man_get.php:23
  +#: ../plugin/man_get.php:40
   msgid "No manpage found"
   msgstr ""
   
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1776
  +#: ../plugin/man_get.php:104
  +msgid "Edit"
  +msgstr ""
  +
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1813
   msgid "Login or Join"
   msgstr ""
   
  @@ -766,6 +814,19 @@
   msgid "%s or %s"
   msgstr ""
   
  +#: ../plugin/msgfmt.php:74 ../plugin/msgfmt.php:152
  +#, c-format
  +msgid "Translation of %s"
  +msgstr ""
  +
  +#: ../plugin/msgfmt.php:83
  +msgid "Translations are successfully updated."
  +msgstr ""
  +
  +#: ../plugin/msgfmt.php:85
  +msgid "Fail to save translations."
  +msgstr ""
  +
   #: ../plugin/new.php:11 ../plugin/new.php:18
   msgid "Create a new page"
   msgstr ""
  @@ -907,7 +968,7 @@
   msgid "Only WikiMaster can rename this page"
   msgstr ""
   
  -#: ../plugin/rename.php:79 ../wikilib.php:946
  +#: ../plugin/rename.php:79 ../wikilib.php:973
   msgid "with revision history"
   msgstr ""
   
  @@ -923,24 +984,36 @@
   msgid "Error: Don't try to overwrite it"
   msgstr ""
   
  -#: ../plugin/restore.php:27
  +#: ../plugin/restore.php:24
  +msgid "Please rename your old 'text_dir' first."
  +msgstr ""
  +
  +#: ../plugin/restore.php:25
  +msgid "e.g. \\$ mv data/text data/text_old"
  +msgstr ""
  +
  +#: ../plugin/restore.php:29
   msgid "Error: tarball does not exists"
   msgstr ""
   
  -#: ../plugin/restore.php:32
  +#: ../plugin/restore.php:34
   #, c-format
   msgid "Restore %s"
   msgstr ""
   
  -#: ../plugin/restore.php:45
  +#: ../plugin/restore.php:50
   #, c-format
   msgid "Restore %s ?"
   msgstr ""
   
  -#: ../plugin/restore.php:62
  +#: ../plugin/restore.php:67
   msgid "Restore backuped data"
   msgstr ""
   
  +#: ../plugin/restore.php:68
  +msgid "Select a tarball file to restore"
  +msgstr ""
  +
   #: ../plugin/rss_rc.php:54
   msgid "show changes"
   msgstr ""
  @@ -954,20 +1027,33 @@
   msgid "Do you want to scrap \"%s\" ?"
   msgstr ""
   
  -#: ../plugin/security/community.php:25 ../plugin/security/community.php:35
  -#: ../plugin/security/community.php:45 ../plugin/security/mustlogin.php:24
  -#: ../plugin/security/mustlogin.php:34 ../plugin/security/mustlogin.php:44
  -#: ../plugin/security/needtologin.php:28 ../plugin/security/needtologin.php:39
  -#: ../plugin/security/needtologin.php:50
  +#: ../plugin/security/acl.php:204 ../plugin/security/community.php:25
  +#: ../plugin/security/community.php:35 ../plugin/security/community.php:45
  +#: ../plugin/security/mustlogin.php:28 ../plugin/security/mustlogin.php:39
  +#: ../plugin/security/mustlogin.php:50 ../plugin/security/needtologin.php:28
  +#: ../plugin/security/needtologin.php:39 ../plugin/security/needtologin.php:50
   #, c-format
   msgid "You are not allowed to '%s' on this page"
   msgstr ""
   
  +#: ../plugin/security/acl.php:205
  +msgid "Please contact WikiMasters :b"
  +msgstr ""
  +
  +#: ../plugin/security/authbasic.php:68
  +#, c-format
  +msgid "You have no permission to '%s'."
  +msgstr ""
  +
  +#: ../plugin/security/authbasic.php:71
  +msgid "You must enter a valid login ID and password to access this resource.\n"
  +msgstr ""
  +
   #: ../plugin/security/community.php:60 ../plugin/security/htaccesslogin.php:46
  -#: ../plugin/security/mustlogin.php:59 ../plugin/security/userbased.php:28
  +#: ../plugin/security/mustlogin.php:66 ../plugin/security/userbased.php:28
   #: ../plugin/security/userbased.php:36 ../plugin/security/userbased.php:44
  -#: ../plugin/security/userbased.php:59 ../plugin/security/wikimaster.php:25
  -#: ../plugin/security/wikimaster.php:33 ../plugin/security/wikimaster.php:41
  +#: ../plugin/security/userbased.php:59 ../plugin/security/wikimaster.php:29
  +#: ../plugin/security/wikimaster.php:38 ../plugin/security/wikimaster.php:47
   #, c-format
   msgid "You are not allowed to '%s' on this page."
   msgstr ""
  @@ -977,8 +1063,8 @@
   msgstr ""
   
   #: ../plugin/security/userbased.php:29 ../plugin/security/userbased.php:37
  -#: ../plugin/security/userbased.php:45 ../plugin/security/wikimaster.php:26
  -#: ../plugin/security/wikimaster.php:34 ../plugin/security/wikimaster.php:42
  +#: ../plugin/security/userbased.php:45 ../plugin/security/wikimaster.php:30
  +#: ../plugin/security/wikimaster.php:39 ../plugin/security/wikimaster.php:48
   msgid "Please contact to WikiMaster"
   msgstr ""
   
  @@ -1027,27 +1113,27 @@
   msgid "Do you want to subscribe \"%s\" ?"
   msgstr ""
   
  -#: ../plugin/theme.php:28
  +#: ../plugin/theme.php:29
   msgid "Theme cleared. Goto UserPreferences."
   msgstr ""
   
  -#: ../plugin/theme.php:39
  +#: ../plugin/theme.php:40
   msgid "Theme is changed"
   msgstr ""
   
  -#: ../plugin/theme.php:68
  +#: ../plugin/theme.php:69
   msgid "Please select a theme properly."
   msgstr ""
   
  -#: ../plugin/theme.php:78
  +#: ../plugin/theme.php:79
   msgid "Theme disabled !"
   msgstr ""
   
  -#: ../plugin/theme.php:92
  +#: ../plugin/theme.php:96
   msgid "-- Select --"
   msgstr ""
   
  -#: ../plugin/ticket.php:75
  +#: ../plugin/ticket.php:172
   msgid "Invalid use of ticket"
   msgstr ""
   
  @@ -1101,13 +1187,13 @@
   msgid "ID does not exists !"
   msgstr ""
   
  -#: ../plugin/userform.php:86 ../plugin/userform.php:266
  +#: ../plugin/userform.php:86 ../plugin/userform.php:273
   #, c-format
   msgid "Successfully login as '%s'"
   msgstr ""
   
  -#: ../plugin/userform.php:92 ../plugin/userform.php:271
  -#: ../plugin/userform.php:314
  +#: ../plugin/userform.php:92 ../plugin/userform.php:278
  +#: ../plugin/userform.php:321
   msgid "Invalid password !"
   msgstr ""
   
  @@ -1124,7 +1210,7 @@
   msgid "Cookie deleted !"
   msgstr ""
   
  -#: ../plugin/userform.php:106 ../wikilib.php:1833
  +#: ../plugin/userform.php:106 ../wikilib.php:1870
   msgid "E-mail new password"
   msgstr ""
   
  @@ -1150,7 +1236,7 @@
   msgid "Your new password is %s"
   msgstr ""
   
  -#: ../plugin/userform.php:159 ../plugin/userform.php:258
  +#: ../plugin/userform.php:159 ../plugin/userform.php:265
   msgid "Please change your password later"
   msgstr ""
   
  @@ -1186,7 +1272,7 @@
   msgid "Please try again or make a new profile"
   msgstr ""
   
  -#: ../plugin/userform.php:224 ../plugin/userform.php:302
  +#: ../plugin/userform.php:224 ../plugin/userform.php:309
   msgid "too short password!"
   msgstr ""
   
  @@ -1194,7 +1280,7 @@
   msgid "mismatch password!"
   msgstr ""
   
  -#: ../plugin/userform.php:226 ../plugin/userform.php:306
  +#: ../plugin/userform.php:226 ../plugin/userform.php:313
   msgid "not acceptable character found in the password!"
   msgstr ""
   
  @@ -1202,61 +1288,77 @@
   msgid "Your password is too simple to use as a password !"
   msgstr ""
   
  -#: ../plugin/userform.php:235 ../plugin/userform.php:337
  +#: ../plugin/userform.php:235 ../plugin/userform.php:344
   msgid "Your email address is not valid"
   msgstr ""
   
  -#: ../plugin/userform.php:239
  +#: ../plugin/userform.php:240
  +msgid "Fail to register"
  +msgstr ""
  +
  +#: ../plugin/userform.php:241
  +msgid "You are not allowed to register on this wiki"
  +msgstr ""
  +
  +#: ../plugin/userform.php:242 ../wiki.php:4069 ../wiki.php:4080
  +msgid "Please contact WikiMasters"
  +msgstr ""
  +
  +#: ../plugin/userform.php:246
   msgid "Successfully added!"
   msgstr ""
   
  -#: ../plugin/userform.php:245
  +#: ../plugin/userform.php:252
   #, c-format
   msgid "Successfully added as '%s'"
   msgstr ""
   
  -#: ../plugin/userform.php:246
  +#: ../plugin/userform.php:253
   msgid "Please check your mailbox"
   msgstr ""
   
  -#: ../plugin/userform.php:253 ../plugin/userform.php:331
  +#: ../plugin/userform.php:260 ../plugin/userform.php:338
   msgid "E-mail confirmation"
   msgstr ""
   
  -#: ../plugin/userform.php:255 ../plugin/userform.php:333
  +#: ../plugin/userform.php:262 ../plugin/userform.php:340
   msgid "Please confirm your email address"
   msgstr ""
   
  -#: ../plugin/userform.php:257
  +#: ../plugin/userform.php:264
   #, c-format
   msgid "Your initial password is %s"
   msgstr ""
   
  -#: ../plugin/userform.php:261 ../plugin/userform.php:335
  -msgid "E-mail confirmation mail sent"
  +#: ../plugin/userform.php:268
  +msgid "Confirmation E-mail sent"
   msgstr ""
   
  -#: ../plugin/userform.php:276
  +#: ../plugin/userform.php:283
   msgid "Invalid username !"
   msgstr ""
   
  -#: ../plugin/userform.php:304
  +#: ../plugin/userform.php:311
   msgid "mismatch password !"
   msgstr ""
   
  -#: ../plugin/userform.php:307 ../plugin/userform.php:315
  +#: ../plugin/userform.php:314 ../plugin/userform.php:322
   msgid "Password is not changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:309
  +#: ../plugin/userform.php:316
   msgid "Password is changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:311
  +#: ../plugin/userform.php:318
   msgid "Password is too simple to use as a password !"
   msgstr ""
   
  -#: ../plugin/userform.php:343
  +#: ../plugin/userform.php:342
  +msgid "E-mail confirmation mail sent"
  +msgstr ""
  +
  +#: ../plugin/userform.php:350
   msgid "Profiles are saved successfully !"
   msgstr ""
   
  @@ -1270,122 +1372,118 @@
   msgid "Whois search result for %s"
   msgstr ""
   
  -#: ../wiki.php:1128
  +#: ../wiki.php:1129
   #, c-format
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1429
  +#: ../wiki.php:1431
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
  -#: ../wiki.php:1439
  +#: ../wiki.php:1441
   msgid "File does not exists"
   msgstr ""
   
  -#: ../wiki.php:2385
  +#: ../wiki.php:2410
   msgid "Invalid ajax action."
   msgstr ""
   
  -#: ../wiki.php:2616
  +#: ../wiki.php:2668
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:2616
  +#: ../wiki.php:2668
   msgid "TwinPages"
   msgstr ""
   
  -#: ../wiki.php:2621
  +#: ../wiki.php:2673
   msgid "See [TwinPages]:"
   msgstr ""
   
  -#: ../wiki.php:2926
  +#: ../wiki.php:2978
   msgid "edit"
   msgstr ""
   
  -#: ../wiki.php:3079
  +#: ../wiki.php:3131
   msgid "Sister Sites Index"
   msgstr ""
   
  -#: ../wiki.php:3370 ../locale/dummy.php:6
  +#: ../wiki.php:3422 ../locale/dummy.php:6
   msgid "EditText"
   msgstr ""
   
  -#: ../wiki.php:3372
  +#: ../wiki.php:3424
   msgid "NotEditable"
   msgstr ""
   
  -#: ../wiki.php:3374 ../locale/dummy.php:6
  +#: ../wiki.php:3426 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:3375 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:3427 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr ""
   
  -#: ../wiki.php:3706
  +#: ../wiki.php:3762
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:3967
  +#: ../wiki.php:4068
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:3968 ../wiki.php:3979
  -msgid "Please contact WikiMasters"
  -msgstr ""
  -
  -#: ../wiki.php:3978
  +#: ../wiki.php:4079
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:4009 ../wiki.php:4012 ../wikilib.php:1100
  +#: ../wiki.php:4110 ../wiki.php:4113 ../wikilib.php:1128
   msgid "Create this page"
   msgstr ""
   
  -#: ../wiki.php:4015 ../wikilib.php:1102
  +#: ../wiki.php:4116 ../wikilib.php:1130
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
   
  -#: ../wiki.php:4015 ../wikilib.php:1102
  +#: ../wiki.php:4116 ../wikilib.php:1130
   msgid "title"
   msgstr ""
   
  -#: ../wiki.php:4024
  +#: ../wiki.php:4125
   msgid " or alternativly, use one of these templates:\n"
   msgstr ""
   
  -#: ../wiki.php:4027
  +#: ../wiki.php:4128
   msgid "You have no templates"
   msgstr ""
   
  -#: ../wiki.php:4029
  +#: ../wiki.php:4130
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
   
  -#: ../wiki.php:4040
  +#: ../wiki.php:4141
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
  -#: ../wiki.php:4130
  +#: ../wiki.php:4235
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr ""
   
  -#: ../wiki.php:4150
  +#: ../wiki.php:4255
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:4153
  +#: ../wiki.php:4258
   msgid "Please enter the valid password"
   msgstr ""
   
  -#: ../wikilib.php:547
  +#: ../wikilib.php:574
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -1402,322 +1500,322 @@
   "no trailing white space allowed after tables or titles.<br />\n"
   msgstr ""
   
  -#: ../wikilib.php:588
  +#: ../wikilib.php:615
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
  -#: ../wikilib.php:671
  +#: ../wikilib.php:698
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   
  -#: ../wikilib.php:673
  +#: ../wikilib.php:700
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr ""
   
  -#: ../wikilib.php:677
  +#: ../wikilib.php:704
   msgid "Merge"
   msgstr ""
   
  -#: ../wikilib.php:678
  +#: ../wikilib.php:705
   msgid "Merge manually"
   msgstr ""
   
  -#: ../wikilib.php:679
  +#: ../wikilib.php:706
   msgid "Ignore conflicts"
   msgstr ""
   
  -#: ../wikilib.php:704
  +#: ../wikilib.php:731
   msgid "ReduceEditor"
   msgstr ""
   
  -#: ../wikilib.php:705
  +#: ../wikilib.php:732
   msgid "EnlargeEditor"
   msgstr ""
   
  -#: ../wikilib.php:709 ../locale/dummy.php:6
  +#: ../wikilib.php:736 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
  -#: ../wikilib.php:711
  +#: ../wikilib.php:738
   msgid "HelpOnEditing"
   msgstr ""
   
  -#: ../wikilib.php:738
  +#: ../wikilib.php:765
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:755
  +#: ../wikilib.php:782
   msgid "--Select Category--"
   msgstr ""
   
  -#: ../wikilib.php:765
  +#: ../wikilib.php:792
   msgid "Minor edit"
   msgstr ""
   
  -#: ../wikilib.php:773
  +#: ../wikilib.php:800
   msgid "Skip to preview"
   msgstr ""
   
  -#: ../wikilib.php:775 ../wikilib.php:1779 ../wikilib.php:1821
  +#: ../wikilib.php:802 ../wikilib.php:1816 ../wikilib.php:1858
   msgid "Save"
   msgstr ""
   
  -#: ../wikilib.php:776
  +#: ../wikilib.php:803
   msgid "Summary of Change"
   msgstr ""
   
  -#: ../wikilib.php:822
  +#: ../wikilib.php:849
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:827
  +#: ../wikilib.php:854
   #, c-format
   msgid "%s is not valid action"
   msgstr ""
   
  -#: ../wikilib.php:829
  +#: ../wikilib.php:856
   msgid "Is it valid action ?"
   msgstr ""
   
  -#: ../wikilib.php:874
  +#: ../wikilib.php:901
   #, c-format
   msgid "File '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:876
  +#: ../wikilib.php:903
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr ""
   
  -#: ../wikilib.php:881
  +#: ../wikilib.php:908
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:883
  +#: ../wikilib.php:910
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr ""
   
  -#: ../wikilib.php:893 ../wikilib.php:913
  +#: ../wikilib.php:920 ../wikilib.php:940
   msgid "No files are selected !"
   msgstr ""
   
  -#: ../wikilib.php:906
  +#: ../wikilib.php:933
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
  -#: ../wikilib.php:909
  +#: ../wikilib.php:936
   msgid "Delete"
   msgstr ""
   
  -#: ../wikilib.php:910
  +#: ../wikilib.php:937
   msgid "Delete selected file"
   msgstr ""
   
  -#: ../wikilib.php:931
  +#: ../wikilib.php:958
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr ""
   
  -#: ../wikilib.php:938
  +#: ../wikilib.php:965
   msgid "Please delete this file manually."
   msgstr ""
   
  -#: ../wikilib.php:940
  +#: ../wikilib.php:967
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr ""
   
  -#: ../wikilib.php:990
  +#: ../wikilib.php:1017
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
  -#: ../wikilib.php:1154 ../wikilib.php:1258
  +#: ../wikilib.php:1182 ../wikilib.php:1284
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr ""
   
  -#: ../wikilib.php:1160
  +#: ../wikilib.php:1188
   msgid "Section edit is not valid for non-exists page."
   msgstr ""
   
  -#: ../wikilib.php:1193 ../wikilib.php:1368
  +#: ../wikilib.php:1221 ../wikilib.php:1397
   msgid "mail does not supported by default."
   msgstr ""
   
  -#: ../wikilib.php:1197 ../wikilib.php:1372
  +#: ../wikilib.php:1225 ../wikilib.php:1401
   msgid "Sent notification mail."
   msgstr ""
   
  -#: ../wikilib.php:1199 ../wikilib.php:1374
  +#: ../wikilib.php:1227 ../wikilib.php:1403
   msgid "No subscribers found."
   msgstr ""
   
  -#: ../wikilib.php:1204 ../wikilib.php:1379
  +#: ../wikilib.php:1232 ../wikilib.php:1408
   #, c-format
   msgid "%s is not editable"
   msgstr ""
   
  -#: ../wikilib.php:1206 ../wikilib.php:1381
  +#: ../wikilib.php:1234 ../wikilib.php:1410
   #, c-format
   msgid "%s is saved"
   msgstr ""
   
  -#: ../wikilib.php:1249
  +#: ../wikilib.php:1275
   msgid "Goto Editor"
   msgstr ""
   
  -#: ../wikilib.php:1262
  +#: ../wikilib.php:1289
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr ""
   
  -#: ../wikilib.php:1263
  +#: ../wikilib.php:1290
   #, c-format
   msgid "%s is merged successfully"
   msgstr ""
   
  -#: ../wikilib.php:1267
  +#: ../wikilib.php:1294
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1268
  +#: ../wikilib.php:1295
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr ""
   
  -#: ../wikilib.php:1269
  +#: ../wikilib.php:1296
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1270
  +#: ../wikilib.php:1297
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1275
  +#: ../wikilib.php:1302
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr ""
   
  -#: ../wikilib.php:1276
  +#: ../wikilib.php:1303
   msgid "Please resolve conflicts manually."
   msgstr ""
   
  -#: ../wikilib.php:1279
  +#: ../wikilib.php:1306
   #, c-format
   msgid "Force merging for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1280
  +#: ../wikilib.php:1307
   msgid "Please be careful, you could damage useful information."
   msgstr ""
   
  -#: ../wikilib.php:1292
  +#: ../wikilib.php:1319
   msgid "Conflict error!"
   msgstr ""
   
  -#: ../wikilib.php:1329
  +#: ../wikilib.php:1357
   #, c-format
   msgid "Preview of %s"
   msgstr ""
   
  -#: ../wikilib.php:1405
  +#: ../wikilib.php:1442
   msgid "Nobody subscribed to this page."
   msgstr ""
   
  -#: ../wikilib.php:1424
  +#: ../wikilib.php:1461
   #, c-format
   msgid "%s page is modified"
   msgstr ""
   
  -#: ../wikilib.php:1453
  +#: ../wikilib.php:1490
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:1466
  +#: ../wikilib.php:1503
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:1471
  +#: ../wikilib.php:1508
   msgid "Mails are sent successfully"
   msgstr ""
   
  -#: ../wikilib.php:1472
  +#: ../wikilib.php:1509
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1474
  +#: ../wikilib.php:1511
   msgid "Fail to send mail"
   msgstr ""
   
  -#: ../wikilib.php:1485
  +#: ../wikilib.php:1522
   msgid "This wiki does not support sendmail"
   msgstr ""
   
  -#: ../wikilib.php:1583
  +#: ../wikilib.php:1620
   msgid "Invalid regular expression !"
   msgstr ""
   
  -#: ../wikilib.php:1607
  +#: ../wikilib.php:1644
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:1610
  +#: ../wikilib.php:1647
   msgid "Infinite loop possible!"
   msgstr ""
   
  -#: ../wikilib.php:1737
  +#: ../wikilib.php:1774
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:1738 ../wikilib.php:1838
  +#: ../wikilib.php:1775 ../wikilib.php:1875
   msgid "ID"
   msgstr ""
   
  -#: ../wikilib.php:1759 ../wikilib.php:1831
  +#: ../wikilib.php:1796 ../wikilib.php:1868
   msgid "Make profile"
   msgstr ""
   
  -#: ../wikilib.php:1761
  +#: ../wikilib.php:1798
   msgid "password again"
   msgstr ""
   
  -#: ../wikilib.php:1763 ../wikilib.php:1801
  +#: ../wikilib.php:1800 ../wikilib.php:1838
   msgid "Mail"
   msgstr ""
   
  -#: ../wikilib.php:1783
  +#: ../wikilib.php:1820
   msgid "New password"
   msgstr ""
   
  -#: ../wikilib.php:1802
  +#: ../wikilib.php:1839
   msgid "Time Zone"
   msgstr ""
   
  -#: ../wikilib.php:1810
  +#: ../wikilib.php:1847
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:2153
  +#: ../wikilib.php:2190
   msgid "Show all"
   msgstr ""
   
  -#: ../wikilib.php:2295
  +#: ../wikilib.php:2332
   msgid "Contents"
   msgstr ""
   
  -#: ../wikilib.php:2406
  +#: ../wikilib.php:2443
   #, c-format
   msgid "Title search for \"%s\""
   msgstr ""
  
  
  


wkpark      2006/07/22 21:09:50

  Modified:    plugin/security community.php
  Log:
  remove debug msgs
  
  Revision  Changes    Path
  1.6       +1 -2      moniwiki/plugin/security/community.php
  
  Index: community.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/community.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- community.php	22 Jul 2006 04:48:22 -0000	1.5
  +++ community.php	22 Jul 2006 12:09:50 -0000	1.6
  @@ -1,6 +1,6 @@
   <?php
   # a community security plugin for the MoniWiki
  -# $Id: community.php,v 1.5 2006/07/22 04:48:22 wkpark Exp $
  +# $Id: community.php,v 1.6 2006/07/22 12:09:50 wkpark Exp $
   
   class Security_community extends Security {
     var $DB;
  @@ -61,7 +61,6 @@
         $options['err'].="\n"._("Please Login or make your ID on this Wiki ;)");
         return 0;
       }
  -    print_r($options);
       $method='may_'.$action;
       if (method_exists($this, $method)) {
         return $this->$method ($action,$options);
  
  
  


wkpark      2006/07/24 00:35:39

  Modified:    .        wiki.php
  Log:
  cleanup umask()
  support ProcessorClass
  
  Revision  Changes    Path
  1.320     +23 -14    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.319
  retrieving revision 1.320
  diff -u -r1.319 -r1.320
  --- wiki.php	21 Jul 2006 12:44:21 -0000	1.319
  +++ wiki.php	23 Jul 2006 15:35:39 -0000	1.320
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.319 2006/07/21 12:44:21 wkpark Exp $
  +// $Id: wiki.php,v 1.320 2006/07/23 15:35:39 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.319 $',1,-1);
  +$_revision = substr('$Revision: 1.320 $',1,-1);
   $_release = '1.1.2';
   
   #ob_start("ob_gzhandler");
  @@ -541,7 +541,7 @@
       $this->upload_dir= 'pds';
       $this->data_dir= './data';
       $this->query_prefix='/';
  -    $this->umask= 02;
  +    $this->umask= 0770;
       $this->charset='utf-8';
       $this->lang='auto';
       $this->dba_type="db3";
  @@ -1145,9 +1145,10 @@
     }
   
     function setPerms($pagename,$perms) {
  -    umask(0700);
  +    $om=umask(0700);
       $key=$this->getPageKey($pagename);
       if (file_exists($key)) chmod($key,$perms);
  +    umask($om);
     }
   }
   
  @@ -1272,12 +1273,13 @@
   }
   
   class Cache_text {
  -  function Cache_text($arena) {
  -    global $DBInfo;
  -    umask(000);
  -    $this->cache_dir=$DBInfo->cache_dir."/$arena";
  +  function Cache_text($arena,$depth=0) {
  +    global $Config;
  +    $om=umask(000);
  +    $this->cache_dir=$Config['cache_dir']."/$arena";
       if (!file_exists($this->cache_dir))
  -      mkdir($this->cache_dir, 0777);
  +      _mkdir_p($this->cache_dir, 0777);
  +    umask($om);
     }
   
     function getKey($pagename) {
  @@ -1300,7 +1302,7 @@
     }
   
     function _save($key,$val) {
  -    umask(011);
  +    #$old=umask(011);
       $fp=fopen($key,"w+");
       if ($fp) {
         flock($fp,LOCK_EX);
  @@ -2366,14 +2368,21 @@
     }
   
     function processor_repl($processor,$value,$options="") {
  -    if (!function_exists("processor_".$processor)) {
  +    if (!($f=function_exists("processor_".$processor)) and !($c=class_exists('processor_'.$processor))) {
         $pf=getProcessor($processor);
         if (!$pf)
         return call_user_func('processor_plain',$this,$value,$options);
         include_once("plugin/processor/$pf.php");
         $processor=$pf;
  -    }
  -    return call_user_func("processor_$processor",$this,$value,$options);
  +      $name='processor_'.$pf;
  +      if (!($f=function_exists($name)) and !($c=class_exists($name)))
  +        return call_user_func('processor_plain',$this,$value,$options);
  +    }
  +    if ($f)
  +      return call_user_func("processor_$processor",$this,$value,$options);
  +    $classname='processor_'.$processor;
  +    $myclass= & new $classname($this,$options);
  +    return call_user_func(array($myclass,'process'),$value,$options);
     }
   
     function filter_repl($filter,$value,$options='') {
  @@ -3013,7 +3022,7 @@
   
            if ($processor and !$show_raw) {
              $value=$this->pre_line;
  -           $out= call_user_func("processor_$processor",$this,$value,$options);
  +           $out= $this->processor_repl($processor,$value,$options);
              if ($this->wikimarkup)
                $line='<div class="wikiMarkup">'."<!-- wiki:\n{{{".
                  $value."}}}\n-->$out</div>";
  
  
  


wkpark      2006/07/24 00:41:24

  Added:       plugin/processor textile.php
  Log:
  import textile class from http://docs.g-blog.net/code/Textile/2.0beta_class_version/class.textile.php.txt
  (slightly modified for MoniWiki)
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/processor/textile.php
  
  Index: textile.php
  ===================================================================
  <?php
  // slightly modified for MoniWiki by wkpark@kldp.org
  // $Id: textile.php,v 1.1 2006/07/23 15:41:24 wkpark Exp $
  //
  
  /**
   * class Textile
   *
   * Class version of the original Textile 2 beta which can be found at
   * http://www.textism.com/article/739/
   *
   * The original version was just a bunch of functions; since I wanted
   * to use Textile in an OO framework, I've cleaned it up a bit (code-
   * wise) and semi-refactored it into a PHP class. -Carlo
   *
   * Example: get XHTML from a given Textile-markup string ($givenstring)
   *
   *        $textile =& new Textile();
   *        print $textile->TextileThis($givenstring);
   *
   * Example: get Textile-markup from a given XHTML string ($givenstring)
   * Please note: This method is still work in progress.
   *
   *        $textile =& new Textile();
   *        print $textile->DeTextileThis($givenstring);
   *
   * @access		public
   * @author		Dean Allen <dean@textism.com> (Original code)
   * @author		Carlo Zottmann <carlo@g-blog.net> (Refactoring)
   * @package		Textile
   * @date		9 January, 2004
   * @version		2.0 beta (class version)
   */
  
  /*
  
  This is Textile
  A Humane Web Text Generator
  
  Version 2.0 beta
  8 July, 2003
  
  Copyright (c) 2003, Dean Allen, www.textism.com
  All rights reserved.
  
  _______
  LICENSE
  
  Redistribution and use in source and binary forms, with or without
  modification, are permitted provided that the following conditions are met:
  
  * Redistributions of source code must retain the above copyright notice,
    this list of conditions and the following disclaimer.
  
  * Redistributions in binary form must reproduce the above copyright notice,
    this list of conditions and the following disclaimer in the documentation
    and/or other materials provided with the distribution.
  
  * Neither the name Textile nor the names of its contributors may be used to
    endorse or promote products derived from this software without specific
    prior written permission.
  
  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  POSSIBILITY OF SUCH DAMAGE.
  
  _____________
  USING TEXTILE
  
  Block modifier syntax:
  
  	Header: h(1-6).
  	Paragraphs beginning with 'hn. ' (where n is 1-6) are wrapped in header tags.
  	Example: h1. Header... -> <h1>Header...</h1>
  
  	Paragraph: p. (also applied by default)
  	Example: p. Text -> <p>Text</p>
  
  	Blockquote: bq.
  	Example: bq. Block quotation... -> <blockquote>Block quotation...</blockquote>
  
  	Blockquote with citation: bq.:http://citation.url
  	Example: bq.:http://textism.com/ Text...
  	->	<blockquote cite="http://textism.com">Text...</blockquote>
  
  	Footnote: fn(1-100).
  	Example: fn1. Footnote... -> <p id="fn1">Footnote...</p>
  
  	Numeric list: #, ##
  	Consecutive paragraphs beginning with # are wrapped in ordered list tags.
  	Example: <ol><li>ordered list</li></ol>
  
  	Bulleted list: *, **
  	Consecutive paragraphs beginning with * are wrapped in unordered list tags.
  	Example: <ul><li>unordered list</li></ul>
  
  Phrase modifier syntax:
  
  			_emphasis_   ->   <em>emphasis</em>
  			__italic__   ->   <i>italic</i>
  			 *strong*   ->   <strong>strong</strong>
  			 **bold**   ->   <b>bold</b>
  		 ??citation??   ->   <cite>citation</cite>
  		-deleted text-   ->   <del>deleted</del>
  	  +inserted text+   ->   <ins>inserted</ins>
  		^superscript^   ->   <sup>superscript</sup>
  		  ~subscript~   ->   <sub>subscript</sub>
  				@code@   ->   <code>computer code</code>
  		  %(bob)span%   ->   <span class="bob">span</span>
  
  		==notextile==   ->   leave text alone (do not format)
  
  		"linktext":url   ->   <a href="url">linktext</a>
   "linktext(title)":url   ->   <a href="url" title="title">linktext</a>
  
  			!imageurl!   ->   <img src="imageurl" />
    !imageurl(alt text)!   ->   <img src="imageurl" alt="alt text" />
  	!imageurl!:linkurl   ->   <a href="linkurl"><img src="imageurl" /></a>
  
  ABC(Always Be Closing)   ->   <acronym title="Always Be Closing">ABC</acronym>
  
  
  Table syntax:
  
  	Simple tables:
  
  		|a|simple|table|row|
  		|And|Another|table|row|
  
  		|_. A|_. table|_. header|_.row|
  		|A|simple|table|row|
  
  	Tables with attributes:
  
  		table{border:1px solid black}.
  		{background:#ddd;color:red}. |{}| | | |
  
  
  Applying Attributes:
  
  	Most anywhere Textile code is used, attributes such as arbitrary css style,
  	css classes, and ids can be applied. The syntax is fairly consistent.
  
  	The following characters quickly alter the alignment of block elements:
  
  		<  ->  left align	ex. p<. left-aligned para
  		>  ->  right align	  h3>. right-aligned header 3
  		=  ->  centred		  h4=. centred header 4
  		<> ->  justified		p<>. justified paragraph
  
  	These will change vertical alignment in table cells:
  
  		^  ->  top		 ex. |^. top-aligned table cell|
  		-  ->  middle		  |-. middle aligned|
  		~  ->  bottom		  |~. bottom aligned cell|
  
  	Plain (parentheses) inserted between block syntax and the closing dot-space
  	indicate classes and ids:
  
  		p(hector). paragraph -> <p class="hector">paragraph</p>
  
  		p(#fluid). paragraph -> <p id="fluid">paragraph</p>
  
  		(classes and ids can be combined)
  		p(hector#fluid). paragraph -> <p class="hector" id="fluid">paragraph</p>
  
  	Curly {brackets} insert arbitrary css style
  
  		p{line-height:18px}. paragraph -> <p style="line-height:18px">paragraph</p>
  
  		h3{color:red}. header 3 -> <h3 style="color:red">header 3</h3>
  
  	Square [brackets] insert language attributes
  
  		p[no]. paragraph -> <p lang="no">paragraph</p>
  
  		%[fr]phrase% -> <span lang="fr">phrase</span>
  
  	Usually Textile block element syntax requires a dot and space before the block
  	begins, but since lists don't, they can be styled just using braces
  
  		#{color:blue} one  ->  <ol style="color:blue">
  		# big				  <li>one</li>
  		# list				 <li>big</li>
  								<li>list</li>
  							  </ol>
  
  	Using the span tag to style a phrase
  
  		It goes like this, %{color:red}the fourth the fifth%
  		-> It goes like this, <span style="color:red">the fourth the fifth</span>
  
  */
  
  class processor_textile
  {
  	var $hlgn;
  	var $vlgn;
  	var $clas;
  	var $lnge;
  	var $styl;
  	var $cspn;
  	var $rspn;
  	var $a;
  	var $s;
  	var $c;
  	var $pnct;
  
  	function processor_textile($formatter,$options=array())
  	{
  		global $Config;
          	$this->charset=$Config['charset'] ? $Config['charset']:'UTF-8';
  		$this->formatter=&$formatter; // not used yet
  
  		$this->hlgn = "(?:\<(?!>)|(?<!<)\>|\<\>|\=|[()]+)";
  		$this->vlgn = "[\-^~]";
  		$this->clas = "(?:\([^)]+\))";
  		$this->lnge = "(?:\[[^]]+\])";
  		$this->styl = "(?:\{[^}]+\})";
  		$this->cspn = "(?:\\\\\d+)";
  		$this->rspn = "(?:\/\d+)";
  		$this->a = "(?:{$this->hlgn}?{$this->vlgn}?|{$this->vlgn}?{$this->hlgn}?)";
  		$this->s = "(?:{$this->cspn}?{$this->rspn}?|{$this->rspn}?{$this->cspn}?)";
  		$this->c = "(?:{$this->clas}?{$this->styl}?{$this->lnge}?|{$this->styl}?{$this->lnge}?{$this->clas}?|{$this->lnge}?{$this->styl}?{$this->clas}?)";
  		$this->pnct = '[\!"#\$%&\'()\*\+,\-\./:;<=>\?@\[\\\]\^_`{\|}\~]';
  	}
  
  	function process($text, $options=array())
  	{
          	if ($text[0]=='#' and $text[1]=='!')
              		list($line,$text)=explode("\n",$text,2);
  		$lite=$options['lite'];
  
  		#if (get_magic_quotes_gpc() == 1)
  		#	$text = stripslashes($text);
  
  		$text = $this->incomingEntities($text);
  		$text = $this->encodeEntities($text);
  		$text = $this->fixEntities($text);
  		$text = $this->cleanWhiteSpace($text);
  
  		$text = $this->getRefs($text);
  
  		$text = $this->noTextile($text);
  		$text = $this->image($text);
  		$text = $this->links($text);
  		$text = $this->code($text);
  		$text = $this->span($text);
  		$text = $this->superscript($text);
  		$text = $this->footnoteRef($text);
  		$text = $this->glyphs($text);
  		$text = $this->retrieve($text);
  
  		if ($lite == '')
  		{
  			$text = $this->lists($text);
  			$text = $this->table($text);
  			$text = $this->block($text);
  		}
  
  		/* clean up <notextile> */
  		$text = preg_replace('/<\/?notextile>/', "", $text);
  
  		/* turn the temp char back to an ampersand entity */
  		$text = str_replace("x%x%", "&#38;", $text);
  
  		$text = str_replace("<br />", "<br />\n", $text);
  
  		return trim($text);
  	}
  	// -------------------------------------------------------------
  	function pba($in, $element = "") // "parse block attributes"
  	{
  		$style = '';
  		$class = '';
  		$language = '';
  		$colspan = '';
  		$rowspan = '';
  		$id = '';
  		$atts = '';
  
  		if (!empty($in))
  		{
  			$matched = $in;
  			if ($element == 'td')
  			{
  				if (preg_match("/\\\\(\d+)/", $matched, $csp)) $colspan = $csp[1];
  				if (preg_match("/\/(\d+)/", $matched, $rsp)) $rowspan = $rsp[1];
  
  				if (preg_match("/($this->vlgn)/", $matched, $vert))
  					$style[] = "vertical-align:" . $this->vAlign($vert[1]) . ";";
  			}
  
  			if (preg_match("/\{([^}]*)\}/", $matched, $sty))
  			{
  				$style[] = $sty[1] . ';';
  				$matched = str_replace($sty[0], '', $matched);
  			}
  
  			if (preg_match("/\[([^)]+)\]/U", $matched, $lng))
  			{
  				$language = $lng[1];
  				$matched = str_replace($lng[0], '', $matched);
  			}
  
  			if (preg_match("/\(([^()]+)\)/U", $matched, $cls))
  			{
  				$class = $cls[1];
  				$matched = str_replace($cls[0], '', $matched);
  			}
  
  			if (preg_match("/([(]+)/", $matched, $pl))
  			{
  				$style[] = "padding-left:" . strlen($pl[1]) . "em;";
  				$matched = str_replace($pl[0], '', $matched);
  			}
  			if (preg_match("/([)]+)/", $matched, $pr))
  			{
  				//dump($pr);
  				$style[] = "padding-right:" . strlen($pr[1]) . "em;";
  				$matched = str_replace($pr[0], '', $matched);
  			}
  
  			if (preg_match("/($this->hlgn)/", $matched, $horiz))
  				$style[] = "text-align:" . $this->hAlign($horiz[1]) . ";";
  
  			if (preg_match("/^(.*)#(.*)$/", $class, $ids))
  			{
  				$id = $ids[2];
  				$class = $ids[1];
  			}
  
  			if ($style) $atts .= ' style="' . join("", $style) . '"';
  			if ($class) $atts .= ' class="' . $class . '"';
  			if ($language) $atts .= ' lang="' . $language . '"';
  			if ($id) $atts .= ' id="' . $id . '"';
  			if ($colspan) $atts .= ' colspan="' . $colspan . '"';
  			if ($rowspan) $atts .= ' rowspan="' . $rowspan . '"';
  
  			return $atts;
  		}
  		else
  		{
  			return '';
  		}
  	}
  	// -------------------------------------------------------------
  	function table($text)
  	{
  		$text = $text . "\n\n";
  		return preg_replace_callback("/^(?:table(_?{$this->s}{$this->a}{$this->c})\. ?\n)?^({$this->a}{$this->c}\.? ?\|.*\|)\n\n/smU", array(&$this, "fTable"), $text);
  	}
  	// -------------------------------------------------------------
  	function fTable($matches)
  	{
  		$tatts = $this->pba($matches[1], 'table');
  
  		foreach(preg_split("/\|$/m", $matches[2], -1, PREG_SPLIT_NO_EMPTY) as $row)
  		{
  			if (preg_match("/^($this->a$this->c\. )(.*)/m", $row, $rmtch))
  			{
  				$ratts = $this->pba($rmtch[1], 'tr');
  				$row = $rmtch[2];
  			}
  			else $ratts = '';
  
  			foreach(explode("|", $row) as $cell)
  			{
  				$ctyp = "d";
  				if (preg_match("/^_/", $cell)) $ctyp = "h";
  				if (preg_match("/^(_?$this->s$this->a$this->c\. )(.*)/", $cell, $cmtch))
  				{
  					$catts = $this->pba($cmtch[1], 'td');
  					$cell = $cmtch[2];
  				}
  				else $catts = '';
  
  				if (trim($cell) != '')
  					$cells[] = "\t\t\t<t$ctyp$catts>$cell</t$ctyp>";
  			}
  			$rows[] = "\t\t<tr$ratts>\n" . join("\n", $cells) . "\n\t\t</tr>";
  			unset($cells, $catts);
  		}
  		return "\t<table$tatts>\n" . join("\n", $rows) . "\n\t</table>\n\n";
  	}
  	// -------------------------------------------------------------
  	function lists($text)
  	{
  		return preg_replace_callback("/^([#*]+$this->c .*)$(?![^#*])/smU", array(&$this, "fList"), $text);
  	}
  	// -------------------------------------------------------------
  	function fList($m)
  	{
  		$text = explode("\n", $m[0]);
  		foreach($text as $line)
  		{
  			$nextline = next($text);
  			if (preg_match("/^([#*]+)($this->a$this->c) (.*)$/s", $line, $m))
  			{
  				list(, $tl, $atts, $content) = $m;
  				$nl = preg_replace("/^([#*]+)\s.*/", "$1", $nextline);
  				if (!isset($lists[$tl]))
  				{
  					$lists[$tl] = true;
  					$atts = $this->pba($atts);
  					$line = "\t<" . $this->lT($tl) . "l$atts>\n\t<li>" . $content;
  				}
  				else
  				{
  					$line = "\t\t<li>" . $content;
  				}
  
  				if ($nl === $tl)
  				{
  					$line .= "</li>";
  				} elseif ($nl == "*" or $nl == "#")
  				{
  					$line .= "</li>\n\t</" . $this->lT($tl) . "l>\n\t</li>";
  					unset($lists[$tl]);
  				}
  				if (!$nl)
  				{
  					foreach($lists as $k => $v)
  					{
  						$line .= "</li>\n\t</" . $this->lT($k) . "l>";
  						unset($lists[$k]);
  					}
  				}
  			}
  			$out[] = $line;
  		}
  		return join("\n", $out);
  	}
  	// -------------------------------------------------------------
  	function lT($in)
  	{
  		return preg_match("/^#+/", $in) ? 'o' : 'u';
  	}
  	// -------------------------------------------------------------
  	function block($text)
  	{
  		$pre = false;
  		$find = array('bq', 'h[1-6]', 'fn\d+', 'p');
  
  		$text = preg_replace("/(.+)\n(?![#*\s|])/",
  			"$1<br />", $text);
  
  		$text = explode("\n", $text);
  		array_push($text, " ");
  
  		foreach($text as $line)
  		{
  			if (preg_match('/<pre>/i', $line))
  			{
  				$pre = true;
  			}
  			foreach($find as $tag)
  			{
  				$line = ($pre == false)
  				? preg_replace_callback("/^($tag)($this->a$this->c)\.(?::(\S+))? (.*)$/",
  					array(&$this, "fBlock"), $line)
  				: $line;
  			}
  
  			$line = preg_replace('/^(?!\t|<\/?pre|<\/?code|$| )(.*)/', "\t<p>$1</p>", $line);
  
  			$line = ($pre == true) ? str_replace("<br />", "\n", $line):$line;
  			if (preg_match('/<\/pre>/i', $line))
  			{
  				$pre = false;
  			}
  
  			$out[] = $line;
  		}
  		return join("\n", $out);
  	}
  	// -------------------------------------------------------------
  	function fBlock($m)
  	{
  		// dump($m);
  		list(, $tag, $atts, $cite, $content) = $m;
  
  		$atts = $this->pba($atts);
  
  		if (preg_match("/fn(\d+)/", $tag, $fns))
  		{
  			$tag = 'p';
  			$atts .= ' id="fn' . $fns[1] . '"';
  			$content = '<sup>' . $fns[1] . '</sup> ' . $content;
  		}
  
  		$start = "\t<$tag";
  		$end = "</$tag>";
  
  		if ($tag == "bq")
  		{
  			$cite = $this->checkRefs($cite);
  			$cite = ($cite != '') ? ' cite="' . $cite . '"' : '';
  			$start = "\t<blockquote$cite>\n\t\t<p";
  			$end = "</p>\n\t</blockquote>";
  		}
  
  		return "$start$atts>$content$end";
  	}
  	// -------------------------------------------------------------
  	function span($text)
  	{
  		$qtags = array('\*\*', '\*', '\?\?', '-', '__', '_', '%', '\+', '~');
  
  		foreach($qtags as $f)
  		{
  			$text = preg_replace_callback("/(?<=^|\s|\>|[[:punct:]]|[{(\[])
  				($f)
  				($this->c)
  				(?::(\S+))?
  				(\w.+\w)
  				([[:punct:]]*)
  				$f
  				(?=[])}]|[[:punct:]]+|\s|$)
  			/xmU", array(&$this, "fSpan"), $text);
  		}
  		return $text;
  	}
  	// -------------------------------------------------------------
  	function fSpan($m)
  	{
  		// dump($m);
  		$qtags = array('*' => 'b',
  			'**' => 'strong',
  			'??' => 'cite',
  			'_' => 'em',
  			'__' => 'i',
  			'-' => 'del',
  			'%' => 'span',
  			'+' => 'ins',
  			'~' => 'sub');
  
  		list(, $tag, $atts, $cite, $content, $end) = $m;
  		$tag = $qtags[$tag];
  		$atts = $this->pba($atts);
  		$atts .= ($cite != '') ? 'cite="' . $cite . '"' : '';
  
  		return "<$tag$atts>$content$end</$tag>";
  	}
  	// -------------------------------------------------------------
  	function links($text)
  	{
  		return preg_replace_callback('/
  			([\s[{(]|[[:punct:]])?		# $pre
  			"							# start
  			(' . $this->c . ')				# $atts
  			([^"]+)						# $text
  			\s?
  			(?:\(([^)]+)\)(?="))?		# $title
  			":
  			(\S+\b)						# $url
  			(\/)?						# $slash
  			([^\w\/;]*)					# $post
  			(?=\s|$)
  		/Ux', array(&$this, "fLink"), $text);
  	}
  	// -------------------------------------------------------------
  	function fLink($m)
  	{
  		list(, $pre, $atts, $text, $title, $url, $slash, $post) = $m;
  
  		$url = $this->checkRefs($url);
  
  		$atts = $this->pba($atts);
  		$atts .= ($title != '') ? ' title="' . $title . '"' : '';
  
  		$atts = ($atts != '') ? $this->shelve($atts) : '';
  
  		return $pre . '<a href="' . $url . $slash . '"' . $atts . '>' . $text . '</a>' . $post;
  	}
  	// -------------------------------------------------------------
  	function getRefs($text)
  	{
  		return preg_replace_callback("/(?<=^|\s)\[(.+)\]((?:http:\/\/|\/)\S+)(?=\s|$)/U",
  			array(&$this, "refs"), $text);
  	}
  	// -------------------------------------------------------------
  	function refs($m)
  	{
  		list(, $flag, $url) = $m;
  		$this->urlrefs[$flag] = $url;
  		return '';
  	}
  	// -------------------------------------------------------------
  	function checkRefs($text)
  	{
  		return (isset($this->urlrefs[$text])) ? $this->urlrefs[$text] : $text;
  	}
  	// -------------------------------------------------------------
  	function image($text)
  	{
  		return preg_replace_callback("/
  			\!				  # opening
  			(\<|\=|\>)?		 # optional alignment atts
  			($this->c)				# optional style,class atts
  			(?:\. )?			# optional dot-space
  			([^\s(!]+)		  # presume this is the src
  			\s?				 # optional space
  			(?:\(([^\)]+)\))?	# optional title
  			\!				  # closing
  			(?::(\S+))?		 # optional href
  			(?=\s|$)			# lookahead: space or end of string
  		/Ux", array(&$this, "fImage"), $text);
  	}
  	// -------------------------------------------------------------
  	function fImage($m)
  	{
  		list(, $algn, $atts, $url) = $m;
  		$atts = $this->pba($atts);
  		$atts .= ($algn != '') ? ' align="' . $this->iAlign($algn) . '"' : '';
  		$atts .= (isset($m[4])) ? ' title="' . $m[4] . '"' : '';
  		$atts .= (isset($m[4])) ? ' alt="' . $m[4] . '"' : ' alt=""';
  		$size = @getimagesize($url);
  		if ($size) $atts .= " $size[3]";
  
  		$href = (isset($m[5])) ? $this->checkRefs($m[5]) : '';
  		$url = $this->checkRefs($url);
  
  		$out = '';
  		$out .= ($href != '') ? '<a href="' . $href . '">' : '';
  		$out .= '<img src="' . $url . '"' . $atts . ' />';
  		$out .= ($href != '') ? '</a>' : '';
  
  		return $out;
  	}
  	// -------------------------------------------------------------
  	function code($text)
  	{
  		return preg_replace_callback("/
  			(?:^|(?<=[\s\(])|([[{]))		# 1 open bracket?
  			@								# opening
  			(?:\|(\w+)\|)?				  # 2 language
  			(.+)							# 3 code
  			@								# closing
  			(?:$|([\]}])|
  			(?=[[:punct:]]{1,2}|
  			\s))							# 4 closing bracket?
  		/Ux", array(&$this, "fCode"), $text);
  	}
  	// -------------------------------------------------------------
  	function fCode($m)
  	{
  		list(, $before, $lang, $code, $after) = $m;
  		$lang = ($lang != '') ? ' language="' . $lang . '"' : '';
  		return $before . '<code' . $lang . '>' . $code . '</code>' . $after;
  	}
  	// -------------------------------------------------------------
  	function shelve($val)
  	{
  		$this->shelf[] = $val;
  		return ' <' . count($this->shelf) . '>';
  	}
  	// -------------------------------------------------------------
  	function retrieve($text)
  	{
  		$i = 0;
  		if (is_array($this->shelf))
  		{
  			foreach($this->shelf as $r)
  			{
  				$i++;
  				$text = str_replace("<$i>", $r, $text);
  			}
  		}
  		return $text;
  	}
  	// -------------------------------------------------------------
  	function incomingEntities($text)
  	{
  		/*  turn any incoming ampersands into a dummy character for now.
  			This uses a negative lookahead for alphanumerics followed by a semicolon,
  			implying an incoming html entity, to be skipped */
  
  		return preg_replace("/&(?![#a-z0-9]+;)/i", "x%x%", $text);
  	}
  	// -------------------------------------------------------------
  	function encodeEntities($text)
  	{
  		/*  Convert high and low ascii to entities. If multibyte string functions are
  			available (on by default in php 4.3+), we convert using unicode mapping as
  			defined in the function encode_high(). If not, we use php's nasty
  			built-in htmlentities() */
  
  		return (function_exists('mb_encode_numericentity'))
  		? encode_high($text)
  		: htmlentities($text, ENT_NOQUOTES, "utf-8");
  	}
  	// -------------------------------------------------------------
  	function fixEntities($text)
  	{
  		/*  de-entify any remaining angle brackets or ampersands */
  		return str_replace(array("&gt;", "&lt;", "&amp;"),
  			array(">", "<", "&"), $text);
  	}
  	// -------------------------------------------------------------
  	function cleanWhiteSpace($text)
  	{
  		$out = str_replace(array("\r\n", "\t"), array("\n", ''), $text);
  		$out = preg_replace("/\n{3,}/", "\n\n", $out);
  		$out = preg_replace("/\n *\n/", "\n\n", $out);
  		$out = preg_replace('/"$/', "\" ", $out);
  		return $out;
  	}
  	// -------------------------------------------------------------
  	function noTextile($text)
  	{
  		return preg_replace('/(^|\s)==(.*)==(\s|$)?/msU',
  			'$1<notextile>$2</notextile>$3', $text);
  	}
  	// -------------------------------------------------------------
  	function superscript($text)
  	{
  		return preg_replace('/\^(.*)\^/mU', '<sup>$1</sup>', $text);
  	}
  	// -------------------------------------------------------------
  	function footnoteRef($text)
  	{
  		return preg_replace('/\b\[([0-9]+)\](\s)?/U',
  			'<sup><a href="#fn$1">$1</a></sup>$2', $text);
  	}
  	// -------------------------------------------------------------
  	function glyphs($text)
  	{
  		// fix: hackish
  		$text = preg_replace('/"\z/', "\" ", $text);
  
  		$glyph_search = array('/([^\s[{(>])?\'(?(1)|(?=\s|s\b|[[:punct:]]))/', // single closing
  			'/\'/', // single opening
  			'/([^\s[{(>])?"(?(1)|(?=\s|[[:punct:]]))/', // double closing
  			'/"/', // double opening
  			'/\b( )?\.{3}/', // ellipsis
  			'/\b([A-Z][A-Z0-9]{2,})\b(?:[(]([^)]*)[)])/', // 3+ uppercase acronym
  			'/(^|[^"][>\s])([A-Z][A-Z0-9 ]{2,})([^<a-z0-9]|$)/', // 3+ uppercase caps
  			'/\s?--\s?/', // em dash
  			'/\s-\s/', // en dash
  			'/(\d+) ?x ?(\d+)/', // dimension sign
  			'/\b ?[([]TM[])]/i', // trademark
  			'/\b ?[([]R[])]/i', // registered
  			'/\b ?[([]C[])]/i'); //  copyright
  
  		$glyph_replace = array('$1&#8217;$2', // single closing
  			'&#8216;', // single opening
  			'$1&#8221;', // double closing
  			'&#8220;', // double opening
  			'$1&#8230;', // ellipsis
  			'<acronym title="$2">$1</acronym>', // 3+ uppercase acronym
  			'$1<span class="caps">$2</span>$3', // 3+ uppercase caps
  			'&#8212;', // em dash
  			' &#8211; ', // en dash
  			'$1&#215;$2', // dimension sign
  			'&#8482;', // trademark
  			'&#174;', // registered
  			'&#169;'); //  copyright
  
  		$codepre = false;
  		/*  if no html, do a simple search and replace... */
  		if (!preg_match("/<.*>/", $text))
  		{
  			$text = preg_replace($glyph_search, $glyph_replace, $text);
  			return $text;
  		}
  		else
  		{
  			$text = preg_split("/(<.*>)/U", $text, -1, PREG_SPLIT_DELIM_CAPTURE);
  			foreach($text as $line)
  			{
  				$offtags = ('code|pre|kbd|notextile');
  
  				/*  matches are off if we're between <code>, <pre> etc. */
  				if (preg_match('/<(' . $offtags . ')>/i', $line)) $codepre = true;
  				if (preg_match('/<\/(' . $offtags . ')>/i', $line)) $codepre = false;
  
  				if (!preg_match("/<.*>/", $line) && $codepre == false)
  				{
  					$line = preg_replace($glyph_search, $glyph_replace, $line);
  				}
  
  				/* do htmlspecial if between <code> */
  				if ($codepre == true)
  				{
  					$line = htmlspecialchars($line, ENT_NOQUOTES, $this->charset);
  					$line = preg_replace('/&lt;(\/?' . $offtags . ')&gt;/', "<$1>", $line);
  				}
  
  				$glyph_out[] = $line;
  			}
  			return join('', $glyph_out);
  		}
  	}
  	// -------------------------------------------------------------
  	function iAlign($in)
  	{
  		$vals = array('<' => 'left',
  			'=' => 'center',
  			'>' => 'right');
  		return (isset($vals[$in])) ? $vals[$in] : '';
  	}
  	// -------------------------------------------------------------
  	function hAlign($in)
  	{
  		$vals = array('<' => 'left',
  			'=' => 'center',
  			'>' => 'right',
  			'<>' => 'justify');
  		return (isset($vals[$in])) ? $vals[$in] : '';
  	}
  	// -------------------------------------------------------------
  	function vAlign($in)
  	{
  		$vals = array('^' => 'top',
  			'-' => 'middle',
  			'~' => 'bottom');
  		return (isset($vals[$in])) ? $vals[$in] : '';
  	}
  	// -------------------------------------------------------------
  	function encode_high($text, $charset = "UTF-8")
  	{
  		$cmap = $this->cmap($charet);
  		return mb_encode_numericentity($text, $cmap, $charset);
  	}
  	// -------------------------------------------------------------
  	function decode_high($text, $charset = "UTF-8")
  	{
  		$cmap = $this->cmap($charet);
  		return mb_decode_numericentity($text, $cmap, $charset);
  	}
  	// -------------------------------------------------------------
  	function cmap($charset = "UTF-8")
  	{
  		$f = 0xffff;
  
  		if (strtolower($charset)=='euc-kr')
      			return array(0xac00, 0xd7a3, 0, $f); /* for euc-kr */
  		$cmap = array(160, 255, 0, $f,
  			402, 402, 0, $f,
  			913, 929, 0, $f,
  			931, 937, 0, $f,
  			945, 969, 0, $f,
  			977, 978, 0, $f,
  			982, 982, 0, $f,
  			8226, 8226, 0, $f,
  			8230, 8230, 0, $f,
  			8242, 8243, 0, $f,
  			8254, 8254, 0, $f,
  			8260, 8260, 0, $f,
  			8465, 8465, 0, $f,
  			8472, 8472, 0, $f,
  			8476, 8476, 0, $f,
  			8482, 8482, 0, $f,
  			8501, 8501, 0, $f,
  			8592, 8596, 0, $f,
  			8629, 8629, 0, $f,
  			8656, 8660, 0, $f,
  			8704, 8704, 0, $f,
  			8706, 8707, 0, $f,
  			8709, 8709, 0, $f,
  			8711, 8713, 0, $f,
  			8715, 8715, 0, $f,
  			8719, 8719, 0, $f,
  			8721, 8722, 0, $f,
  			8727, 8727, 0, $f,
  			8730, 8730, 0, $f,
  			8733, 8734, 0, $f,
  			8736, 8736, 0, $f,
  			8743, 8747, 0, $f,
  			8756, 8756, 0, $f,
  			8764, 8764, 0, $f,
  			8773, 8773, 0, $f,
  			8776, 8776, 0, $f,
  			8800, 8801, 0, $f,
  			8804, 8805, 0, $f,
  			8834, 8836, 0, $f,
  			8838, 8839, 0, $f,
  			8853, 8853, 0, $f,
  			8855, 8855, 0, $f,
  			8869, 8869, 0, $f,
  			8901, 8901, 0, $f,
  			8968, 8971, 0, $f,
  			9001, 9002, 0, $f,
  			9674, 9674, 0, $f,
  			9824, 9824, 0, $f,
  			9827, 9827, 0, $f,
  			9829, 9830, 0, $f,
  			338, 339, 0, $f,
  			352, 353, 0, $f,
  			376, 376, 0, $f,
  			710, 710, 0, $f,
  			732, 732, 0, $f,
  			8194, 8195, 0, $f,
  			8201, 8201, 0, $f,
  			8204, 8207, 0, $f,
  			8211, 8212, 0, $f,
  			8216, 8218, 0, $f,
  			8218, 8218, 0, $f,
  			8220, 8222, 0, $f,
  			8224, 8225, 0, $f,
  			8240, 8240, 0, $f,
  			8249, 8250, 0, $f,
  			8364, 8364, 0, $f);
  		return $cmap;
  	}
  	// -------------------------------------------------------------
  	function textile_popup_help($name, $helpvar, $windowW, $windowH)
  	{
  		return ' <a target="_blank" href="http://www.textpattern.com/help/?item=' . $helpvar . '" onclick="window.open(this.href, \'popupwindow\', \'width=' . $windowW . ',height=' . $windowH . ',scrollbars,resizable\'); return false;">' . $name . '</a><br />';
  
  		return $out;
  	}
  	// -------------------------------------------------------------
  	function txtgps($thing)
  	{
  		if (isset($_POST[$thing]))
  		{
  			if (get_magic_quotes_gpc() == 1)
  			{
  				return stripslashes($_POST[$thing]);
  			}
  			else
  			{
  				return $_POST[$thing];
  			}
  		}
  		else
  		{
  			return '';
  		}
  	}
  	// -------------------------------------------------------------
  	// The following functions are used to detextile html, a process
  	// still in development.
  	// -------------------------------------------------------------
  	function DeTextileThis($text)
  	{
  		$text = preg_replace("/<br \/>\s*/", "\n", $text);
  
  		$oktags = array('p', 'ol', 'ul', 'li', 'i', 'b', 'em', 'strong', 'span', 'a', 'h[1-6]',
  			'table', 'tr', 'td', 'u', 'del', 'sup', 'sub', 'blockquote');
  
  		foreach($oktags as $tag)
  		{
  			$text = preg_replace_callback("/\t*<(" . $tag . ")\s*([^>]*)>(.*)<\/\\1>/Usi",
  				array(&$this, "processTag"), $text);
  		}
  
  		$glyphs = array('&#8217;' => '\'', // single closing
  			'&#8216;' => '\'', // single opening
  			'&#8221;' => '"', // double closing
  			'&#8220;' => '"', // double opening
  			'&#8212;' => '--', // em dash
  			'&#8211;' => ' - ', // en dash
  			'&#215;' => 'x', // dimension sign
  			'&#8482;' => '(TM)', // trademark
  			'&#174;' => '(R)', // registered
  			'&#169;' => '(C)', // copyright
  			'&#8230;' => '...' // ellipsis
  			);
  
  		foreach($glyphs as $f => $r)
  		{
  			$text = str_replace($f, $r, $text);
  		}
  
  		$list = false;
  
  		$text = preg_split("/(<.*>)/U", $text, -1, PREG_SPLIT_DELIM_CAPTURE);
  		foreach($text as $line)
  		{
  			if ($list == false && preg_match('/<ol/', $line))
  			{
  				$line = "";
  				$list = "o";
  			}
  			else if (preg_match('/<\/ol/', $line))
  			{
  				$line = "";
  				$list = false;
  			}
  			else if ($list == false && preg_match('/<ul/', $line))
  			{
  				$line = "";
  				$list = "u";
  			}
  			else if (preg_match('/<\/ul/', $line))
  			{
  				$line = "";
  				$list = false;
  			}
  			else if ($list == 'o')
  			{
  				$line = preg_replace('/<li.*>/U', '# ', $line);
  			}
  			else if ($list == 'u')
  			{
  				$line = preg_replace('/<li.*>/U', '* ', $line);
  			}
  			$glyph_out[] = $line;
  		}
  
  		$text = implode('', $glyph_out);
  
  		$text = preg_replace('/^\t* *p\. /m', '', $text);
  
  		return $this->decode_high($text);
  	}
  	// -------------------------------------------------------------
  	function processTag($matches)
  	{
  		list($all, $tag, $atts, $content) = $matches;
  		$a = $this->splat($atts);
  		// dump($tag); dump($content); dump($a);
  		$phr = array('em' => '_',
  			'i' => '__',
  			'b' => '**',
  			'strong' => '*',
  			'cite' => '??',
  			'del' => '-',
  			'ins' => '+',
  			'sup' => '^',
  			'sub' => '~',
  			'span' => '%');
  
  		$blk = array('p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6');
  
  		if (isset($phr[$tag]))
  		{
  			return $phr[$tag] . sci($a) . $content . $phr[$tag];
  		} elseif ($tag == 'blockquote')
  		{
  			return 'bq.' . $this->sci($a) . ' ' . $content;
  		} elseif (in_array($tag, $blk))
  		{
  			return $tag . $this->sci($a) . '. ' . $content;
  		} elseif ($tag == 'a')
  		{
  			$t = $this->filterAtts($a, array('href', 'title'));
  			$out = '"' . $content;
  			$out .= (isset($t['title'])) ? ' (' . $t['title'] . ')' : '';
  			$out .= '":' . $t['href'];
  			return $out;
  		}
  		else
  		{
  			return $all;
  		}
  	}
  	// -------------------------------------------------------------
  	function filterAtts($atts, $ok)
  	{
  		foreach($atts as $a)
  		{
  			if (in_array($a['name'], $ok))
  			{
  				if ($a['att'] != '')
  				{
  					$out[$a['name']] = $a['att'];
  				}
  			}
  		}
  		// dump($out);
  		return $out;
  	}
  	// -------------------------------------------------------------
  	function sci($a)
  	{
  		$out = '';
  		foreach($a as $t)
  		{
  			$out .= ($t['name'] == 'class') ? '(=' . $t['att'] . ')' : '';
  			$out .= ($t['name'] == 'id') ? '[=' . $t['att'] . ']' : '';
  			$out .= ($t['name'] == 'style') ? '{=' . $t['att'] . '}' : '';
  			$out .= ($t['name'] == 'cite') ? ':' . $t['att'] : '';
  		}
  		return $out;
  	}
  	// -------------------------------------------------------------
  	function splat($attr) // returns attributes as an array
  	{
  		$arr = array();
  		$atnm = '';
  		$mode = 0;
  
  		while (strlen($attr) != 0)
  		{
  			$ok = 0;
  			switch ($mode)
  			{
  				case 0: // name
  					if (preg_match('/^([a-z]+)/i', $attr, $match))
  					{
  						$atnm = $match[1];
  						$ok = $mode = 1;
  						$attr = preg_replace('/^[a-z]+/i', '', $attr);
  					}
  					break;
  
  				case 1: // =
  					if (preg_match('/^\s*=\s*/', $attr))
  					{
  						$ok = 1;
  						$mode = 2;
  						$attr = preg_replace('/^\s*=\s*/', '', $attr);
  						break;
  					}
  					if (preg_match('/^\s+/', $attr))
  					{
  						$ok = 1;
  						$mode = 0;
  						$arr[] = array('name' => $atnm, 'whole' => $atnm, 'att' => $atnm);
  						$attr = preg_replace('/^\s+/', '', $attr);
  					}
  					break;
  
  				case 2: // value
  					if (preg_match('/^("[^"]*")(\s+|$)/', $attr, $match))
  					{
  						$arr[] = array('name' => $atnm, 'whole' => $atnm . '=' . $match[1],
  							'att' => str_replace('"', '', $match[1]));
  						$ok = 1;
  						$mode = 0;
  						$attr = preg_replace('/^"[^"]*"(\s+|$)/', '', $attr);
  						break;
  					}
  					if (preg_match("/^('[^']*')(\s+|$)/", $attr, $match))
  					{
  						$arr[] = array('name' => $atnm, 'whole' => $atnm . '=' . $match[1],
  							'att' => str_replace("'", '', $match[1]));
  						$ok = 1;
  						$mode = 0;
  						$attr = preg_replace("/^'[^']*'(\s+|$)/", '', $attr);
  						break;
  					}
  					if (preg_match("/^(\w+)(\s+|$)/", $attr, $match))
  					{
  						$arr[] =
  						array('name' => $atnm, 'whole' => $atnm . '="' . $match[1] . '"',
  							'att' => $match[1]);
  						$ok = 1;
  						$mode = 0;
  						$attr = preg_replace("/^\w+(\s+|$)/", '', $attr);
  					}
  					break;
  			}
  			if ($ok == 0)
  			{
  				$attr = preg_replace('/^\S*\s*/', '', $attr);
  				$mode = 0;
  			}
  		}
  		if ($mode == 1) $arr[] =
  			array ('name' => $atnm, 'whole' => $atnm . '="' . $atnm . '"', 'att' => $atnm);
  
  		return $arr;
  	}
  }
  
  ?>
  
  
  


wkpark      2006/07/24 01:04:23

  Modified:    plugin/processor textile.php
  Log:
  add get_info() method
  
  Revision  Changes    Path
  1.2       +21 -1     moniwiki/plugin/processor/textile.php
  
  Index: textile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/textile.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- textile.php	23 Jul 2006 15:41:24 -0000	1.1
  +++ textile.php	23 Jul 2006 16:04:23 -0000	1.2
  @@ -1,6 +1,6 @@
   <?php
   // slightly modified for MoniWiki by wkpark@kldp.org
  -// $Id: textile.php,v 1.1 2006/07/23 15:41:24 wkpark Exp $
  +// $Id: textile.php,v 1.2 2006/07/23 16:04:23 wkpark Exp $
   //
   
   /**
  @@ -214,6 +214,23 @@
   	var $c;
   	var $pnct;
   
  +	/**
  +     	 * return processor info
  +     	 */
  +    	function get_info()
  +	{
  +     		return array(
  +        		'author'  => 'Dean Allen <dean@textism.com>',
  +        		'date'    => '2004-01-09',
  +        		'name'    => 'Textile',
  +        		'desc'    => 'Textile Procssor',
  +        		'url'     => 'MoniWiki:TextileProcessor',
  +			'version' => substr('$Revision: 1.2 $',1,-1),
  +			'depend'  => '1.1.3',
  +			'license' => 'BSD style',
  +      		);
  +    	}
  +
   	function processor_textile($formatter,$options=array())
   	{
   		global $Config;
  @@ -233,6 +250,9 @@
   		$this->pnct = '[\!"#\$%&\'()\*\+,\-\./:;<=>\?@\[\\\]\^_`{\|}\~]';
   	}
   
  +	/**
  +	 * main processor
  +	 */
   	function process($text, $options=array())
   	{
           	if ($text[0]=='#' and $text[1]=='!')
  
  
  


wkpark      2006/07/24 01:06:39

  Modified:    .        wikilib.php
  Log:
  add _mkdir_p() function
  
  Revision  Changes    Path
  1.211     +23 -1     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.210
  retrieving revision 1.211
  diff -u -r1.210 -r1.211
  --- wikilib.php	21 Jul 2006 11:19:18 -0000	1.210
  +++ wikilib.php	23 Jul 2006 16:06:39 -0000	1.211
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.210 2006/07/21 11:19:18 wkpark Exp $
  +// $Id: wikilib.php,v 1.211 2006/07/23 16:06:39 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -21,6 +21,28 @@
     return preg_replace('/([\/]{1})/','\\\\\1',$val);
   }
   
  +function _mkdir_p($target,$mode=0777) {
  +  // from php.net/mkdir user contributed notes
  +  if (file_exists($target)) {
  +    if (!is_dir($target)) {
  +      return false;
  +    } else {
  +      return true;
  +    }
  +  }
  +
  +  // Attempting to create the directory may clutter up our display.
  +  if (@mkdir($target,$mode)) {
  +    return true;
  +  }
  +
  +  // If the above failed, attempt to create the parent node, then try again.
  +  if (_mkdir_p(dirname($target))) {
  +    return _mkdir_p($target);
  +  }
  +  return false;
  +}
  +
   function get_scriptname() {
     // Return full URL of current page.
     // $_SERVER["SCRIPT_NAME"] has bad value under CGI mode
  
  
  


wkpark      2006/07/29 16:13:58

  Modified:    plugin   download.php
  Log:
  fixed $data_dir
  
  Revision  Changes    Path
  1.13      +2 -2      moniwiki/plugin/download.php
  
  Index: download.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/download.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- download.php	6 Jul 2006 11:17:52 -0000	1.12
  +++ download.php	29 Jul 2006 07:13:58 -0000	1.13
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // download action plugin for the MoniWiki
   //
  -// $Id: download.php,v 1.12 2006/07/06 11:17:52 wkpark Exp $
  +// $Id: download.php,v 1.13 2006/07/29 07:13:58 wkpark Exp $
   //
   function do_download($formatter,$options) {
     global $DBInfo;
  @@ -55,7 +55,7 @@
     if (!file_exists("$dir/$file")) 
       return;
   
  -  $lines = @file('data/mime.types');
  +  $lines = @file($DBInfo->data_dir.'/mime.types');
     if ($lines) {
       foreach($lines as $line) {
         rtrim($line);
  
  
  


wkpark      2006/07/29 16:14:44

  Modified:    plugin/security acl.php
  Log:
  set $_protected as array()
  
  Revision  Changes    Path
  1.5       +3 -1      moniwiki/plugin/security/acl.php
  
  Index: acl.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/acl.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- acl.php	9 Jul 2006 12:50:45 -0000	1.4
  +++ acl.php	29 Jul 2006 07:14:44 -0000	1.5
  @@ -1,6 +1,6 @@
   <?php
   # a ACL security plugin for the MoniWiki (experimental)
  -# $Id: acl.php,v 1.4 2006/07/09 12:50:45 wkpark Exp $
  +# $Id: acl.php,v 1.5 2006/07/29 07:14:44 wkpark Exp $
   #
   # Please see also http://www.dokuwiki.org/wiki:discussion:acl2
   #
  @@ -27,6 +27,8 @@
   class Security_ACL extends Security {
       var $DB;
   
  +    var $_acl_ok=0;
  +    var $_protected=array();
       function Security_ACL($DB="") {
           $this->DB=$DB;
           # load ACL
  
  
  


wkpark      2006/07/29 16:16:37

  Modified:    plugin/processor textile.php
  Log:
  fixed utf-8 defendency
  
  Revision  Changes    Path
  1.3       +5 -5      moniwiki/plugin/processor/textile.php
  
  Index: textile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/textile.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- textile.php	23 Jul 2006 16:04:23 -0000	1.2
  +++ textile.php	29 Jul 2006 07:16:37 -0000	1.3
  @@ -1,6 +1,6 @@
   <?php
   // slightly modified for MoniWiki by wkpark@kldp.org
  -// $Id: textile.php,v 1.2 2006/07/23 16:04:23 wkpark Exp $
  +// $Id: textile.php,v 1.3 2006/07/29 07:16:37 wkpark Exp $
   //
   
   /**
  @@ -225,7 +225,7 @@
           		'name'    => 'Textile',
           		'desc'    => 'Textile Procssor',
           		'url'     => 'MoniWiki:TextileProcessor',
  -			'version' => substr('$Revision: 1.2 $',1,-1),
  +			'version' => substr('$Revision: 1.3 $',1,-1),
   			'depend'  => '1.1.3',
   			'license' => 'BSD style',
         		);
  @@ -715,8 +715,8 @@
   			built-in htmlentities() */
   
   		return (function_exists('mb_encode_numericentity'))
  -		? encode_high($text)
  -		: htmlentities($text, ENT_NOQUOTES, "utf-8");
  +		? encode_high($text,$this->charset)
  +		: htmlentities($text, ENT_NOQUOTES,$this->charset);
   	}
   	// -------------------------------------------------------------
   	function fixEntities($text)
  @@ -1033,7 +1033,7 @@
   
   		$text = preg_replace('/^\t* *p\. /m', '', $text);
   
  -		return $this->decode_high($text);
  +		return $this->decode_high($text,$this->charset);
   	}
   	// -------------------------------------------------------------
   	function processTag($matches)
  
  
  


wkpark      2006/07/29 16:17:09

  Modified:    plugin/processor gnuplot.php latex.php vim.php
  Log:
  support new caching mechainism
  
  Revision  Changes    Path
  1.13      +26 -11    moniwiki/plugin/processor/gnuplot.php
  
  Index: gnuplot.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/gnuplot.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- gnuplot.php	7 Jul 2006 12:55:22 -0000	1.12
  +++ gnuplot.php	29 Jul 2006 07:17:09 -0000	1.13
  @@ -6,7 +6,7 @@
   // Usage: {{{#!gnuplot
   // plot sin(x)
   // }}}
  -// $Id: gnuplot.php,v 1.12 2006/07/07 12:55:22 wkpark Exp $
  +// $Id: gnuplot.php,v 1.13 2006/07/29 07:17:09 wkpark Exp $
   
   function processor_gnuplot($formatter="",$value="") {
     global $DBInfo;
  @@ -17,7 +17,6 @@
       $gnuplot="gnuplot";
   
     $vartmp_dir=&$DBInfo->vartmp_dir;
  -  $cache_dir=$DBInfo->upload_dir."/GnuPlot";
   
     if ($value[0]=='#' and $value[1]=='!')
       list($line,$value)=explode("\n",$value,2);
  @@ -28,6 +27,7 @@
       $value='#'.$line."\n".$value;
     }
   
  +  #$term='dumb'; // for w3m,lynx
     $term='png';
     if ($term=='png') $ext='png';
     else if ($term == 'dumb') $ext='txt';
  @@ -82,8 +82,23 @@
     if ($term != 'dumb') 
       $plt="\n".$size."\n".$plt;
     $uniq=md5($plt);
  +  if ($DBInfo->cache_public_dir) {
  +    $fc=new Cache_text('gnuplot',2,$ext,$DBInfo->cache_public_dir);
  +    $pngname=$fc->_getKey($uniq,0);
  +    $png= $DBInfo->cache_public_dir.'/'.$pngname;
  +    $png_url=
  +      $DBInfo->cache_public_url ? $DBInfo->cache_public_url.'/'.$pngname:
  +      $DBInfo->url_prefix.'/'.$png;
  +    $cache_dir=$DBInfo->cache_public_dir;
  +  } else {
  +    $cache_dir=$DBInfo->upload_dir."/GnuPlot";
  +    $cache_url=$DBInfo->upload_url ? $DBInfo->upload_url.'/GnuPlot':
  +    $DBInfo->url_prefix.'/'.$cache_dir;
  +    $png=$cache_dir.'/'.$uniq.".$ext";
  +    $png_url=$cache_url.'/'.$uniq.".$ext";
  +  }
   
  -  $outpath="$cache_dir/$uniq.$ext";
  +  $outpath=&$png;
   
     $src="
   set term $term
  @@ -91,13 +106,13 @@
   $plt
   ";
   
  -  if (!file_exists($cache_dir)) {
  -    umask(000);
  -    mkdir($cache_dir,0777);
  -    umask(022);
  +  if (!is_dir(dirname($png))) {
  +    $om=umask(000);
  +    _mkdir_p(dirname($png),0777);
  +    umask($om);
     }
   
  -  if ($formatter->refresh || !file_exists("$cache_dir/$uniq.$ext")) {
  +  if ($formatter->refresh || !file_exists($outpath)) {
   
        $flog=tempnam($vartmp_dir,"GNUPLOT");
        #
  @@ -131,7 +146,7 @@
          }
          $log=$formatter->get_errlog();
          if (filesize($outpath) == 0) {
  -         print "<font color='red'>ERROR:</font> Gnuplot does not work correctly";
  +         $log.="\n<font color='red'>ERROR:</font> Gnuplot does not work correctly";
            unlink($outpath);
          }
        }
  @@ -141,9 +156,9 @@
     }
     if (!file_exists($outpath)) return $log;
     if ($ext == 'png')
  -  return $log."<img src='$DBInfo->url_prefix/$cache_dir/$uniq.$ext' alt='gnuplot' />";
  +  return $log."<img src='$png_url' alt='gnuplot' />";
     if ($ext == 'txt')
  -  return $log.'<pre class="gnuplot">'.(implode('',file("$cache_dir/$uniq.$ext"))).'</pre>';
  +  return $log.'<pre class="gnuplot">'.(implode('',file("$cache_dir/$pngname"))).'</pre>';
   
   }
   
  
  
  
  1.14      +43 -18    moniwiki/plugin/processor/latex.php
  
  Index: latex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/latex.php,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- latex.php	7 Jul 2006 12:59:57 -0000	1.13
  +++ latex.php	29 Jul 2006 07:17:09 -0000	1.14
  @@ -1,12 +1,12 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2006 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a latex processor plugin for the MoniWiki
   //
   // Usage: {{{#!latex
   // $ \alpha $
   // }}}
  -// $Id: latex.php,v 1.13 2006/07/07 12:59:57 wkpark Exp $
  +// $Id: latex.php,v 1.14 2006/07/29 07:17:09 wkpark Exp $
   
   function processor_latex($formatter="",$value="") {
     global $DBInfo;
  @@ -16,21 +16,16 @@
     $convert="convert";
     $vartmp_dir=&$DBInfo->vartmp_dir;
     $cache_dir=$DBInfo->upload_dir."/LaTeX";
  +  $cache_url=$DBInfo->upload_url ? $DBInfo->upload_url.'/LaTeX':
  +    $DBInfo->url_prefix.'/'.$cache_dir;
     $option='-interaction=batchmode ';
   
     if ($value[0]=='#' and $value[1]=='!')
       list($line,$value)=explode("\n",$value,2);
   
  -  if (!$value) return;
  +  if (!$value) return '';
   
  -  if (!file_exists($cache_dir)) {
  -    umask(000);
  -    mkdir($cache_dir,0777);
  -  }
  -
  -  $tex=$value;
  -
  -  $uniq=md5($tex);
  +  $tex=&$value;
   
     if ($DBInfo->latex_template and file_exists($DBInfo->data_dir.'/'.$DBInfo->latex_template)) {
       $src=implode('',file($DBInfo->data_dir.'/'.$DBInfo->latex_template));
  @@ -48,45 +43,75 @@
   ";
     }
   
  +  $uniq=md5($src);
  +  if ($DBInfo->cache_public_dir) {
  +    $fc=new Cache_text('latex',2,'png',$DBInfo->cache_public_dir);
  +    $pngname=$fc->_getKey($uniq,0);
  +    $png= $DBInfo->cache_public_dir.'/'.$pngname;
  +    $png_url=
  +      $DBInfo->cache_public_url ? $DBInfo->cache_public_url.'/'.$pngname:
  +      $DBInfo->url_prefix.'/'.$png;
  +  } else {
  +    $png=$cache_dir.'/'.$uniq.'.png';
  +    $png_url=$cache_url.'/'.$uniq.'.png';
  +  }
  +
  +  if (!is_dir(dirname($png))) {
  +    $om=umask(000);
  +    _mkdir_p(dirname($png),0777);
  +    umask($om);
  +  }
  +
     $NULL='/dev/null';
     if(getenv("OS")=="Windows_NT") {
       $NULL='NUL';
     }
     
  -  if ($formatter->preview || $formatter->refresh || !file_exists("$cache_dir/$uniq.png")) {
  +  if ($formatter->preview || $formatter->refresh || !file_exists($png)) {
        $fp= fopen($vartmp_dir."/$uniq.tex", "w");
        fwrite($fp, $src);
        fclose($fp);
   
  -     $outpath="$cache_dir/$uniq.png";
  +     $outpath=&$png;
   
        # Unix specific FIXME
        $cwd= getcwd();
        chdir($vartmp_dir);
  +     $formatter->errlog('Dum',$uniq.'.log');
        $cmd= "$latex $option $uniq.tex >$NULL";
        $fp=popen($cmd.$formatter->NULL,'r');
        pclose($fp);
  +     $log=$formatter->get_errlog(1,1);
  +     if ($log) {
  +       list($dum,$log,$dum2)=preg_split('/\n!/',$log,3);
  +       if ($log)
  +         $log="<pre class='errlog'>".$log."</pre>\n";
  +     }
   
        if (!file_exists($uniq.".dvi")) {
  -       print "<font color='red'>ERROR:</font> LaTeX does not work properly.";
  +       $log.="<pre class='errlog'><font color='red'>ERROR:</font> LaTeX does not work properly.</pre>";
          chdir($cwd);
  -       return;
  +       return $log;
        }
  +     #$formatter->errlog('DVIPS');
        $cmd= "$dvips -D 600 $uniq.dvi -o $uniq.ps";
        $fp=popen($cmd.$formatter->NULL,'r');
        pclose($fp);
  +     #$log2=$formatter->get_errlog();
        chdir($cwd);
   
        $cmd= "$convert -transparent white -trim -crop 0x0 -density 120x120 $vartmp_dir/$uniq.ps $outpath";
        $fp=popen($cmd.$formatter->NULL,'r');
        pclose($fp);
  -     unlink($vartmp_dir."/$uniq.log");
  +     #unlink($vartmp_dir."/$uniq.log");
        unlink($vartmp_dir."/$uniq.aux");
        @unlink($vartmp_dir."/$uniq.bib");
        @unlink($vartmp_dir."/$uniq.ps");
     }
  -  return "<img class='tex' src='$DBInfo->url_prefix/$cache_dir/$uniq.png' alt='$tex' ".
  -         "title=\"$tex\" />";
  +  $alt=str_replace("'","&#39;",$tex);
  +  return $log."<img class='tex' src='$png_url' alt='$alt' ".
  +         "title='$alt' />";
   }
   
  +// vim:et:sts=2:
   ?>
  
  
  
  1.34      +20 -12    moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- vim.php	7 Jul 2006 12:59:02 -0000	1.33
  +++ vim.php	29 Jul 2006 07:17:09 -0000	1.34
  @@ -10,14 +10,13 @@
   // Win32 note:
   //  add $path="/bin;/Program Files/Vim/VimXX"; in the config.php
   //
  -// $Id: vim.php,v 1.33 2006/07/07 12:59:02 wkpark Exp $
  +// $Id: vim.php,v 1.34 2006/07/29 07:17:09 wkpark Exp $
   
   function processor_vim($formatter,$value,$options) {
     global $DBInfo;
   
     $vim_default='-T xterm';
     static $jsloaded=0;
  -  $cache_dir=$DBInfo->upload_dir."/VimProcessor";
     $vartmp_dir=&$DBInfo->vartmp_dir;
   
     $syntax=array("php","c","python","jsp","sh","cpp",
  @@ -44,6 +43,16 @@
       $option.=$DBInfo->vim_options.' ';
   
     $uniq=md5($option.$src);
  +
  +  if ($DBInfo->cache_public_dir) {
  +    $fc=new Cache_text('vim',2,'html',$DBInfo->cache_public_dir);
  +    $htmlname=$fc->_getKey($uniq,0);
  +    $html= $DBInfo->cache_public_dir.'/'.$htmlname;
  +  } else {
  +    $cache_dir=$DBInfo->upload_dir."/VimProcessor";
  +    $html=$cache_dir.'/'.$uniq.'.html';
  +  }
  +
     $script='';
     if ($DBInfo->use_numbering) {
       $button=_("Toggle line numbers");
  @@ -59,23 +68,22 @@
     $stag="<pre class='wikiSyntax' id='PRE-$uniq' style='font-family:FixedSys,monospace;color:#c0c0c0;background-color:black'>\n";
     $etag="</pre>\n";
   
  -  if (!file_exists($cache_dir)) {
  -    umask(000);
  -    mkdir($cache_dir,0777);
  -    umask($DBInfo->umask);
  +  if (!is_dir(dirname($html))) {
  +    $om=umask(000);
  +    _mkdir_p(dirname($html),0777);
  +    umask($om);
     }
   
  -  if (file_exists($cache_dir."/$uniq".".html") && !$formatter->refresh && !$formatter->preview) {
  +  if (file_exists($html) && !$formatter->refresh && !$formatter->preview) {
       $out = "";
  -    $fp=fopen($cache_dir."/$uniq".".html","r");
  +    $fp=fopen($html,"r");
       while (!feof($fp)) $out .= fread($fp, 1024);
       @fclose($fp);
       return '<div>'.$script.$out.'</div>';
  -    #return join('',file($cache_dir."/$uniq".".html"));
     }
   
     if (!empty($DBInfo->vim_nocheck) and !in_array($type,$syntax)) {
  -    $lines=explode("\n",$line."\n".$src);
  +    $lines=explode("\n",$line."\n".str_replace('<','&lt;',$src));
       if ($lines[sizeof($lines)-1]=="") array_pop($lines);
       $src="<span class=\"line\">".
         implode("</span>\n<span class=\"line\">",$lines)."</span>";
  @@ -132,12 +140,12 @@
     #$out=preg_replace("/(^(\s|\S)*<pre>\n|\n<\/pre>(\s|\S)*$)/","",$out); # XXX segfault sometime
     $fpos=strpos($out,'<pre>');
     $tpos=strpos($out,'</pre>');
  -  $out=substr($out,$fpos+6,$tpos);
  +  $out=substr($out,$fpos+6,$tpos-$fpos-7);
   
     $lines=explode("\n",$out);
     $out="<span class=\"line\">".
       implode("</span>\n<span class=\"line\">",$lines)."</span>\n";
  -  $fp=fopen($cache_dir."/$uniq".".html","w");
  +  $fp=fopen($html,"w");
     fwrite($fp,$stag.$out.$etag);
     fclose($fp);
     return $log.'<div>'.$script.$stag.$out.$etag.'</div>';
  
  
  


wkpark      2006/07/29 16:42:22

  Modified:    plugin/processor textile.php
  Added:       plugin/processor bbcode.php
  Log:
  add bbcode processor. changed method name form get_info() to info()
  
  Revision  Changes    Path
  1.4       +3 -3      moniwiki/plugin/processor/textile.php
  
  Index: textile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/textile.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- textile.php	29 Jul 2006 07:16:37 -0000	1.3
  +++ textile.php	29 Jul 2006 07:42:22 -0000	1.4
  @@ -1,6 +1,6 @@
   <?php
   // slightly modified for MoniWiki by wkpark@kldp.org
  -// $Id: textile.php,v 1.3 2006/07/29 07:16:37 wkpark Exp $
  +// $Id: textile.php,v 1.4 2006/07/29 07:42:22 wkpark Exp $
   //
   
   /**
  @@ -217,7 +217,7 @@
   	/**
        	 * return processor info
        	 */
  -    	function get_info()
  +    	function info()
   	{
        		return array(
           		'author'  => 'Dean Allen <dean@textism.com>',
  @@ -225,7 +225,7 @@
           		'name'    => 'Textile',
           		'desc'    => 'Textile Procssor',
           		'url'     => 'MoniWiki:TextileProcessor',
  -			'version' => substr('$Revision: 1.3 $',1,-1),
  +			'version' => substr('$Revision: 1.4 $',1,-1),
   			'depend'  => '1.1.3',
   			'license' => 'BSD style',
         		);
  
  
  
  1.1                  moniwiki/plugin/processor/bbcode.php
  
  Index: bbcode.php
  ===================================================================
  <?php
  // Copyright 2006 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a simple BBCode processor for MoniWiki
  //
  // imported from the Soojung project http://soojung.kldp.net
  // - with some modification and simley disabled.
  
  class processor_bbcode {
  
    function info() {
      return array(
        'author'  => 'Soojung http://soojung.kldp.net',
        'date'    => '2006-01-09',
        'name'    => 'BBCode',
        'desc'    => 'BBCode Procssor',
        'url'     => 'MoniWiki:BBCodeProcessor',
        'version' => substr('$Revision: 1.1 $',1,-1),
        'depend'  => '1.1.3',
        'license' => 'GPL',
      );
    }
  
    function __listing($mode, $str) {
      $item = explode("[*]", $str);
      $rstr = trim($item[0]);
      for($i=1;$i<count($item);$i++) {
        $rstr .= "<li>".trim($item[$i])."</li>";
      }
      switch($mode) {
      case "A": return "<ol style=\"list-style-type:upper-alpha\">$rstr</ol>";
      case "a": return "<ol style=\"list-style-type:lower-alpha\">$rstr</ol>";
      case "1": return "<ol style=\"list-style-type:decimal\">$rstr</ol>";
      case "I": return "<ol style=\"list-style-type:upper-roman\">$rstr</ol>";
      case "i": return "<ol style=\"list-style-type:lower-roman\">$rstr</ol>";
      default: return "<ul>$rstr</ul>";
      }
    }
  
    function __escape($str) {
      return strtr($str, array("@"=>"\0@", "://"=>"\0://", "["=>"[\0"));
    }
  
    function process($str) {
      static
        $rule1 = array(
          '#\[i](.+)\[/i]#iU',
          '#\[b](.+)\[/b]#iU',
          '#\[u](.+)\[/u]#iU',
  	'#\[s](.+)\[/s]#iU',
          '#\[\+\+](.+)\[/\+\+]#iU',
          '#\[--](.+)\[/--]#iU',
          '#\[color=((?:&quot;)?)([^\[\]]+)\1](.+?)\[/color]#i',
          '#\[size=((?:&quot;)?)([\d.]+)\1](.+?)\[/size]#i',
          '#\[quote](.+)\[/quote]#isU',
          '#\[quote=((?:&quot;)?)([^\[\]]+)\1](.+?)\[/quote]#is',
          '#\[list(?:=([Aa1Ii]))?](.+)\[/list]#iseU',
          '#\[url](.+)\[/url]#ieU',
          '#\[url=((?:&quot;)?)([^\[\]]+)\1](.+?)\[/url]#ie',
          '#\[img](.+)\[/img]#ieU',
          '#\[img=((?:&quot;)?)([^\[\]]+)\1](.+?)\[/img]#ie',
          '#\[email](.+)\[/email]#ieU'),
        $repl1 = array(
          '<i>\1</i>',
          '<b>\1</b>',
          '<span style="text-decoration:underline;">\1</span>',
  	'<span style="text-decoration:line-through;">\1</span>',
          '<ins>\1</ins>',
          '<del>\1</del>',
          '<span style="color:\2;">\3</span>',
          '<span style="font-size:\2pt;">\3</span>',
          '<blockquote><div>\1</div></blockquote>',
          '<blockquote><p class="quotetitle">\2</p><div>\3</div></blockquote>',
          '$this->__listing("\1","\2")',
          '$this->__escape("<a href=\\"\1\\">\1</a>")',
          '$this->__escape("<a href=\\"\2\\">\3</a>")',
          '$this->__escape("<img src=\\"".htmlspecialchars("\1")."\\" alt=\\"\1\\\" class=\\"bbcode\\" />")',
          '$this->__escape("<img src=\\"".htmlspecialchars("\2")."\\" alt=\\"\3\\\" class=\\"bbcodd\\" />")',
          '$this->__escape("<a href=\\"mailto:\1\\">\1</a>")'),
        $rule2 = array(
          '#(?<![\/~"\'])http://(?:[-0-9a-z_.@:~\\#%=+?/]|&amp;)+(?!(?:</a>|"|\'>))#i',
          '#[-0-9a-z_.]+@[-0-9a-z_.]+#i'),
        $repl2 = array(
          '<a href="\0">\0</a>',
          '<a href="mailto:\0">\0</a>'),
        $_smiley = array(
          ":D" => "icon_biggrin.gif",
          ":)" => "icon_smile.gif",
          ":(" => "icon_sad.gif",
          ":shock:" => "icon_eek.gif",
          "8)" => "icon_cool.gif",
          ":lol:" => "icon_lol.gif",
          ":x" => "icon_mad.gif",
          ":p" => "icon_razz.gif",
          ":cry:" => "icon_cry.gif",
          ":evil:" => "icon_evil.gif",
          ":twisted:" => "icon_twisted.gif",
          ":roll:" => "icon_rolleyes.gif",
          ";)" => "icon_wink.gif",
          ":wink:" => "icon_wink.gif",
          ":!:" => "icon_exclaim.gif",
          ":idea:" => "icon_idea.gif",
          ":arrow:" => "icon_arrow.gif",
          ":|" => "icon_neutral.gif",
          ":mrgreen:" => "icon_mrgreen.gif",
          ":oops:" => "icon_redface.gif",
          ":o" => "icon_surprised.gif",
          ":?:" => "icon_question.gif",
          ":?" => "icon_confused.gif"),
        $smiley = null;
      #global $blog_baseurl;
      if ($str[0]=='#' and $str[1]=='!')
        list($line,$str)=explode("\n",$str,2);
  
      #if(is_null($smiley)) {
      #  foreach($_smiley as $k => $v) {
      #    $smiley_rule[] = "#(?<!alt=\")" . preg_quote(htmlspecialchars($k)) . "#i";
      #    $smiley_repl[] = '<img src="'.$blog_baseurl.'/libs/bbcode/smiles/'.$v.'" width="15" height="15" alt="'.htmlspecialchars($k).'" />';
      #  }
      #}
  
      $option = array("smiley" => false);
      #$option = array("smiley" => true);
      #if(preg_match("/^#pragma(.*?)(?:(?:\r\n?|\n)+|$)/i", $str, $m)) {
      #  $str = str_replace($m[0], "", $str);
      #  $options = explode(" ", strtolower(trim($m[1])));
      #  foreach($options as $v) {
      #    if($v == "nosmiley") $option["smiley"] = false;
      #  }
      #}
  
      $str = explode("\0", preg_replace('#\[code](.*?)\[/code](?:\r\n|\r|\n)?#is', "\0\\1\0", $str));
      $rstr = "";
      for($i=0,$sz=count($str);$i<$sz;$i++) {
        if($i % 2 == 0) {
          $temp = htmlspecialchars($str[$i]);
          if($option["smiley"]) {
            $temp = preg_replace($smiley_rule, $smiley_repl, $temp);
          }
          $temp = preg_replace('#\[literal](.*)\[/literal]#ieU', '$this->__escape("\1")', $temp);
          $temp = preg_replace($rule2, $repl2, preg_replace($rule1, $repl1, $temp));
          $rstr .= nl2br(str_replace("\0", "", $temp));
        } else {
          $rstr .= "<pre>".htmlspecialchars(trim($str[$i], "\r\n"))."</pre>";
        }
      }
      return "<div class=\"format_bbcode\">$rstr</div>";
    }
  }
  
  #if (basename($_SERVER['SCRIPT_NAME']) == basename(__FILE__)) {
  #if (basename($_SERVER['argv'][0]) == basename(__FILE__)) {
  #  $f=&new processor_bbcode();
  #  print $f->process($text);
  #}
  // vim:et:sts=2:
  ?>
  
  
  


wkpark      2006/07/29 19:51:59

  Modified:    .        wikilib.php
  Log:
  use interwiki cache.
  fixed processor_plain()
  
  Revision  Changes    Path
  1.212     +21 -4     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.211
  retrieving revision 1.212
  diff -u -r1.211 -r1.212
  --- wikilib.php	23 Jul 2006 16:06:39 -0000	1.211
  +++ wikilib.php	29 Jul 2006 10:51:59 -0000	1.212
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.211 2006/07/23 16:06:39 wkpark Exp $
  +// $Id: wikilib.php,v 1.212 2006/07/29 10:51:59 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1920,7 +1920,16 @@
   function macro_InterWiki($formatter,$value,$options=array()) {
     global $DBInfo;
   
  -  if (!isset($DBInfo->interwiki) or $options['init']) {
  +  while (!isset($DBInfo->interwiki) or $options['init']) {
  +    $cf=new Cache_text('settings');
  +    if (!$formatter->refresh and $cf->exists('interwiki')) {
  +      $info=unserialize($cf->fetch('interwiki'));
  +      $DBInfo->interwiki=$info['interwiki'];
  +      $DBInfo->interwikirule=$info['interwikirule'];
  +      $DBInfo->intericon=$info['intericon'];
  +      break;
  +    }
  +
       $interwiki=array();
       # intitialize interwiki map
       $map=file($DBInfo->intermap);
  @@ -1984,6 +1993,10 @@
       $DBInfo->interwiki=$interwiki;
       $DBInfo->interwikirule=$interwikirule;
       $DBInfo->intericon=$intericon;
  +    $interinfo=
  +      serialize(array('interwiki'=>$interwiki,'interwikirule'=>$interwikirule,'intericon'=>$intericon));
  +    $cf->update('interwiki',$interinfo);
  +    break;
     }
     if ($options['init']) return;
   
  @@ -2520,8 +2533,12 @@
   function processor_plain($formatter,$value) {
     if ($value[0]=='#' and $value[1]=='!')
       list($line,$value)=explode("\n",$value,2);
  -  $value=str_replace('<','&lt;',$value);
  -  return "<pre class='code'>$value</pre>";
  +  $class='wiki'; // XXX {{{#!plain myclass
  +
  +  $pre=str_replace(array('&','<'), array("&amp;","&lt;"), $value);
  +  $pre=preg_replace("/&lt;(\/?)(ins|del)/","<\\1\\2",$pre);
  +  $out="<pre class='$class'>\n".$pre."</pre>";
  +  return $out;
   }
   
   function processor_php($formatter="",$value="") {
  
  
  


wkpark      2006/07/29 20:37:42

  Modified:    .        wiki.php
  Log:
  bump up the version to 1.1.3
  fixed getFilter(): use $myfilters
  add $default_markup
  use $Config instead of $DBInfo in some conditions.
  enhanced Cache_text class to support more smart/large scale caching.
  enhanced editlog()
  simplified get_instructions()
  $cachetime option is added to support html page caching!
  $no_404 option added for IIS
  $nofancy_404 option added
  #nocache,#cache PI added
  FootNotes are automatically added to the end of wikipage now
  
  Revision  Changes    Path
  1.321     +139 -94   moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.320
  retrieving revision 1.321
  diff -u -r1.320 -r1.321
  --- wiki.php	23 Jul 2006 15:35:39 -0000	1.320
  +++ wiki.php	29 Jul 2006 11:37:42 -0000	1.321
  @@ -11,10 +11,10 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.320 2006/07/23 15:35:39 wkpark Exp $
  +// $Id: wiki.php,v 1.321 2006/07/29 11:37:42 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.320 $',1,-1);
  -$_release = '1.1.2';
  +$_revision = substr('$Revision: 1.321 $',1,-1);
  +$_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
   
  @@ -100,8 +100,8 @@
       }
     }
   
  -  if (is_array($DBInfo->filters))
  -    $filters=array_merge($filters,$DBInfo->filters);
  +  if (is_array($DBInfo->myfilters))
  +    $filters=array_merge($filters,$DBInfo->myfilters);
   
     return $filters[strtolower($filtername)];
   }
  @@ -534,7 +534,7 @@
   }
   
   class WikiDB {
  -  function WikiDB($config=array()) {
  +  function WikiDB(&$config) {
       # Default Configuations
       $this->frontpage='FrontPage';
       $this->sitename='UnnamedWiki';
  @@ -571,6 +571,7 @@
       $this->date_fmt_rc= 'D d M Y';
       $this->date_fmt_blog= 'M d, Y';
       $this->datetime_fmt= 'Y-m-d H:i:s';
  +    $this->default_markup= 'wiki';
       #$this->changed_time_fmt = ' . . . . [h:i a]';
       $this->changed_time_fmt= ' [h:i a]'; # used by RecentChanges macro
       $this->admin_passwd= 'daEPulu0FLGhk'; # default value moniwiki
  @@ -688,6 +689,7 @@
                 array("HelpContents","",$this->icon['help']),
              );
       }
  +    $config=get_object_vars($this); // merge default settings to $config
   
       # load smileys
       if ($this->use_smileys){
  @@ -1273,18 +1275,38 @@
   }
   
   class Cache_text {
  -  function Cache_text($arena,$depth=0) {
  +  var $depth=0;
  +  var $ext='';
  +  var $arena='default';
  +  function Cache_text($arena,$depth=0,$ext='',$dir='') {
       global $Config;
  -    $om=umask(000);
  -    $this->cache_dir=$Config['cache_dir']."/$arena";
  -    if (!file_exists($this->cache_dir))
  -      _mkdir_p($this->cache_dir, 0777);
  -    umask($om);
  +    $this->depth=$depth;
  +    $this->arena=$arena;
  +    $this->ext=$ext ? '.'.$ext:'';
  +    $this->cache_dir=$dir ? $dir.'/'.$arena: $Config['cache_dir'].'/'.$arena;
  +  }
  +
  +  function _getKey($pagename,$md5=1) {
  +    if ($this->depth>0) {
  +      $key=$md5 ? md5($pagename):$pagename;
  +      $prefix=substr($key,0,$this->depth);
  +      return $this->arena.'/'.$prefix.'/'.$key.$this->ext;
  +    }
  +    return $this->arena.'/'.
  +      preg_replace("/([^a-z0-9]{1})/ie","'_'.strtolower(dechex(ord('\\1')))",
  +      $pagename).$this->ext;
     }
   
     function getKey($pagename) {
  -    $name=preg_replace("/([^a-z0-9]{1})/ie","'_'.strtolower(dechex(ord('\\1')))",$pagename);
  -    return $this->cache_dir . '/' . $name;
  +    if ($this->depth>0) {
  +      $key=md5($pagename);
  +      $prefix=substr($key,0,$this->depth);
  +      $key=$prefix.'/'.$key.$this->ext;
  +      return $this->cache_dir . '/' . $key;
  +    }
  +    return $this->cache_dir .'/'.
  +      preg_replace("/([^a-z0-9]{1})/ie","'_'.strtolower(dechex(ord('\\1')))",
  +      $pagename).$this->ext;
     }
   
     function update($pagename,$val,$mtime="") {
  @@ -1302,7 +1324,12 @@
     }
   
     function _save($key,$val) {
  -    #$old=umask(011);
  +    $dir=dirname($key);
  +    if (!is_dir($dir)) {
  +      $om=umask(000);
  +      _mkdir_p($dir, 0777);
  +      umask($om);
  +    }
       $fp=fopen($key,"w+");
       if ($fp) {
         flock($fp,LOCK_EX);
  @@ -1646,6 +1673,7 @@
       $punct="<\'}\]\)\|;\.\!"; # , is omitted for the WikiPedia
       $url="wiki|http|https|ftp|nntp|news|irc|telnet|mailto|file|attachment";
       if ($DBInfo->url_schemas) $url.='|'.$DBInfo->url_schemas;
  +    $this->urls=$url;
       $urlrule="((?:$url):\"[^\"]+\"[^\s$punct]*|(?:$url):([^\s$punct]|(\.?[^\s$punct]))+)";
       #$urlrule="((?:$url):(\.?[^\s$punct])+)";
       #$urlrule="((?:$url):[^\s$punct]+(\.?[^\s$punct]+)+\s?)";
  @@ -1756,27 +1784,28 @@
     }
   
     function get_instructions(&$body) {
  -    global $DBInfo;
  +    global $Config;
       $pikeys=array('#redirect','#action','#title','#keywords','#noindex',
  -      '#filter','#postfilter','#twinpages','#notwins','#nocomment',
  -      '#language','#camelcase','#nocamelcase',
  +      '#format','#filter','#postfilter','#twinpages','#notwins','#nocomment',
  +      '#language','#camelcase','#nocamelcase','#cache','#nocache',
         '#singlebracket','#nosinglebracket');
       $pi=array();
       if (!$body) {
  -      if (!$this->page->exists()) return '';
  +      if (!$this->page->exists()) return array();
         if ($this->pi) return $this->pi;
         $body=$this->page->get_raw_body();
         $update_body=1;
       }
   
  +    $format='';
       if (!$this->pi['#format']) { # XXX
         $pos=strpos($this->page->name,'/') ? 1:0;
         $key=strtok($this->page->name,'/');
  -      $format=$DBInfo->pagetype[$key];
  -      if ($format) {
  -        $temp=explode("/",$format);
  +      if (isset($Config['pagetype'][$key]) and $f=$Config['pagetype'][$key]) {
  +        $temp=explode("/",$f);
           $format=$temp[$pos];
  -      }
  +      } else if (isset($Config['pagetype']['*']))
  +        $format=$Config['pagetype']['*']; // default page type
       }
       if (!$format and $body[0] == '<') {
         list($line, $dummy)= explode("\n", $body,2);
  @@ -1784,47 +1813,36 @@
           #$format='xslt';
           $format='xsltproc';
       } else {
  -      if ($body[0]=='#' and substr($body,0,8)=='#format ') {
  -        list($line,$body)=explode("\n",$body,2);
  -        list($tag,$format,$args)=explode(" ",$line,3);
  -        $pi['args']=$args;
  -      } else if ($body[0] == '#' and $body[1] =='!') {
  +      if ($body[0] == '#' and $body[1] =='!') {
           list($line, $body)= explode("\n", $body,2);
  -        list($format,$args)= explode(" ", substr($line,2),2);
  -        $pi['args']=$args;
  +        $format= trim(substr($line,2));
         }
  -      if ($format=='wiki') $format=='';
   
  +      $notused=array();
         while ($body and $body[0] == '#') {
           # extract first line
           list($line, $body)= split("\n", $body,2);
           if ($line=='#') break;
           else if ($line[1]=='#') { $notused[]=$line; continue;}
   
  -        #list($key,$val,$args)= explode(" ",$line,2); # XXX
  -        list($key,$val)= explode(" ",$line,2); # XXX
  +        list($key,$val)= explode(" ",$line,2);
           $key=strtolower($key);
  -        if (in_array($key,$pikeys)) { $pi[$key]=($val == '') ? 1:$val; }
  +        $val=trim($val);
  +        if (in_array($key,$pikeys)) { $pi[$key]=$val ? $val:1; }
           else $notused[]=$line;
         }
         #
  -      if ($pi['#notwins']) $pi['#twinpages']=0;
  -      if ($pi['#nocamelcase']) $pi['#camelcase']=0;
  -      if ($pi['#nofilter']) unset($pi['#filter']);
  -      if ($pi['#nosinglebracket']) $pi['#singlebracket']=0;
  +      if (isset($pi['#notwins'])) $pi['#twinpages']=0;
  +      if (isset($pi['#nocamelcase'])) $pi['#camelcase']=0;
  +      if (isset($pi['#nocache'])) $pi['#cache']=0;
  +      if (isset($pi['#nofilter'])) unset($pi['#filter']);
  +      if (isset($pi['#nosinglebracket'])) $pi['#singlebracket']=0;
       }
   
  -    if ($format) {
  -      if ($format == 'wiki') {
  -        #just ignore
  -      } else if (function_exists("processor_".$format)) {
  -        $pi['#format']=$format;
  -      } else if ($processor=getProcessor($format)) {
  -        include_once("plugin/processor/$processor.php");
  -        $pi['#format']=$format;
  -      } else
  -        $pi['#format']='plain';
  -    }
  +    if (!empty($format)) $pi['#format']=$format; // override default
  +    if (!isset($pi['#format'])) $pi['#format']= $Config['default_markup'];
  +
  +    list($pi['#format'],$pi['args'])=explode(' ',$pi['#format']);
   
       if ($notused) $body=join("\n",$notused)."\n".$body;
       if ($update_body) $this->page->write($body." "); # workaround XXX
  @@ -1858,8 +1876,9 @@
     }
   
     function link_repl($url,$attr='') {
  +    if (is_array($url)) $url=$url[1];
       #if ($url[0]=='<') { print $url;return $url;}
  -    $url=str_replace('\"','"',$url);
  +    $url=str_replace('\"','"',$url); // XXX
       if ($url[0]=="[") {
         $url=substr($url,1,-1);
         $force=1;
  @@ -1905,7 +1924,7 @@
         break;
       }
   
  -    if (strpos($url,":")) {
  +    if (strpos($url,':')) {
         if ($url[0]=='a') # attachment:
           return $this->macro_repl('Attachment',substr($url,11));
   
  @@ -1920,17 +1939,18 @@
             preg_replace('/('.$this->url_mapping_rule.')/ie',"\$this->url_mappings['\\1']",$url);
         }
   
  -      if (preg_match("/^mailto:/",$url)) {
  +      if (preg_match("/^(w|[A-Z])/",$url)) # InterWiki or wiki:
  +        return $this->interwiki_repl($url,'',$attr,$external_icon);
  +
  +      if ($url[0]=='m' and $url[1]=='a') {
  +      #if (preg_match("/^mailto:/",$url)) {
           $email=substr($url,7);
           $link=$name=email_guard($email,$this->email_guard);
           $link=preg_replace('/&(?!#?[a-z0-9]+;)/i','&amp;',$link);
           return $this->icon['mailto']."<a class='externalLink' href='mailto:$link' $attr>$link</a>$external_icon";
         }
   
  -      if (preg_match("/^(w|[A-Z])/",$url)) # InterWiki or wiki:
  -        return $this->interwiki_repl($url,'',$attr,$external_icon);
  -
  -      if ($force or strpos($url," ")) { # have a space ?
  +      if ($force or strpos($url,' ')) { # have a space ?
           list($url,$text)=explode(" ",$url,2);
           $link=str_replace('&','&amp;',$url);
           if (!$text) $text=$url;
  @@ -2610,10 +2630,10 @@
             $body=$this->filter_repl($ft,$body,$options);
           }
         }
  -      if ($pi['#format']) {
  +      if ($pi['#format'] != 'wiki') {
           if ($pi['args']) $pi_line="#!".$pi['#format']." $pi[args]\n";
  -        print call_user_func("processor_".$pi['#format'],$this,
  -          $pi_line.$this->page->body,$options);
  +        print $this->processor_repl($pi['#format'],
  +          $pi_line.$body,$options);
           
           return;
         }
  @@ -2638,9 +2658,9 @@
         }
   
         $this->pi=$pi;
  -      if ($pi['#format']) {
  +      if ($pi['#format'] != 'wiki') {
           if ($pi['args']) $pi_line="#!".$pi['#format']." $pi[args]\n";
  -        print call_user_func("processor_".$pi['#format'],$this,$pi_line.$body,$options);
  +        print $this->processor_repl($pi['#format'],$pi_line.$body,$options);
           if ($DBInfo->use_tagging and isset($pi['#keywords'])) {
             $tmp="----\n";
             if (is_string($DBInfo->use_tagging))
  @@ -2955,7 +2975,9 @@
   
         # InterWiki, WikiName, {{{ }}}, !WikiName, ?single, ["extended wiki name"]
         # urls, [single bracket name], [urls text], [[macro]]
  -      $line=preg_replace("/(".$wordrule.")/e","\$this->link_repl('\\1')",$line);
  +      $line=preg_replace_callback("/(".$wordrule.")/",
  +        array(&$this,'link_repl'),$line);
  +      #$line=preg_replace("/(".$wordrule.")/e","\$this->link_repl('\\1')",$line);
   
         # FIXME for smart diff XXX (one line ins/del)
         if ($this->use_smartdiff)
  @@ -2992,8 +3014,6 @@
           $line=$anchor.$edit.$this->head_repl($m[1],$m[2]);
           $edit='';$anchor='';
         }
  -      #$line=preg_replace("/(?<!=)(={1,5})\s+(.*)\s+(={1,5})\s?$/",
  -      #                    $this->head_repl("$1","$2","$3"),$line);
   
         # Smiley
         if ($this->smiley_rule)
  @@ -3036,7 +3056,9 @@
               if ($this->use_smartdiff)
                 $pre=preg_replace("/&lt;(\/?)(ins|del)/","<\\1\\2",$pre);
               $pre=preg_replace($this->baserule,$this->baserepl,$pre);
  -            $pre=preg_replace("/(".$wordrule.")/e","\$this->link_repl('\\1')",$pre);
  +            $pre=preg_replace_callback("/(".$wordrule.")/",
  +              array(&$this,'link_repl'),$pre);
  +            #$pre=preg_replace("/(".$wordrule.")/e","\$this->link_repl('\\1')",$pre);
               $attr='class="quote"';
               if ($pre_style) {
                 $tag=$pre_style[0];
  @@ -3142,6 +3164,9 @@
         $this->sister_on=$sister_save;
       }
   
  +    if ($this->foots)
  +      print $this->macro_repl('FootNote','',$options);
  +
       if ($options['pagelinks']) $this->store_pagelinks();
     }
   
  @@ -3431,6 +3456,8 @@
           $menu[]= $this->link_to("?action=edit",_("EditText"),"accesskey='x'");
         else
           $menu[]= _("NotEditable");
  +      if ($args['refresh']==1)
  +        $menu[]= $this->link_to("?refresh=1",_("Refresh"),"accesskey='n'");
       } else
         $menu[]= $this->link_to('?action=show',_("ShowPage"));
       $menu[]=$this->link_tag("FindPage","",_("FindPage"));
  @@ -3824,14 +3851,15 @@
       setcookie('MONI_TRAIL',$trail,time()+60*60*24*30,get_scriptname());
     }
   
  -  function errlog($prefix="LoG") {
  +  function errlog($prefix="LoG",$tmpname='') {
       global $DBInfo;
   
       $this->mylog='';
       $this->LOG='';
       if ($DBInfo->use_errlog) {
         if(getenv("OS")!="Windows_NT") {
  -        $this->mylog=tempnam($DBInfo->vartmp_dir,$prefix);
  +        $this->mylog=$tmpname ? $DBInfo->vartmp_dir.'/'.$tmpname:
  +          tempnam($DBInfo->vartmp_dir,$prefix);
           $this->LOG=' 2>'.$this->mylog;
         }
       } else {
  @@ -3839,7 +3867,7 @@
       }
     }
   
  -  function get_errlog() {
  +  function get_errlog($all=0,$raw=0) {
       global $DBInfo;
   
       $log=&$this->mylog;
  @@ -3847,7 +3875,7 @@
         $fd=fopen($log,'r');
         if (is_resource($fd)) {
           $maxl=$DBInfo->errlog_maxline ? min($DBInfo->errlog_maxline,200):20;
  -        if ($sz <= $maxl*70) { # approx log size ~ line * 70
  +        if ($all or $sz <= $maxl*70) { # approx log size ~ line * 70
             $out=fread($fd,$sz);
           } else {
             for ($i=0;($i<$maxl) and ($s=fgets($fd,1024));$i++)
  @@ -3859,7 +3887,7 @@
           $this->LOG='';
           $this->mylog='';
   
  -        if (!$DBInfo->raw_errlog) {
  +        if (!$DBInfo->raw_errlog and !$raw) {
             $out=preg_replace('/(\/[a-z0-9.]+)+/','/XXX',$out);
           }
           return $out;
  @@ -4027,7 +4055,7 @@
   $pagename=get_pagename();
   //function render($pagename,$options) {
   if ($pagename) {
  -  global $DBInfo;
  +  global $DBInfo,$Config;
     # get primary variables
     if ($_SERVER['REQUEST_METHOD']=="POST") {
       # hack for TWiki plugin
  @@ -4059,18 +4087,14 @@
     #print $_SERVER['REQUEST_URI'];
     $options['page']=$pagename;
   
  -#  if ($action=="recall" || $action=="raw" && $rev) {
  -#    $options['rev']=$rev;
  -#    $page = $DBInfo->getPage($pagename,$options);
  -#  } else
     $page = $DBInfo->getPage($pagename);
   
     $formatter = new Formatter($page,$options);
  -  $formatter->macro_repl('InterWiki','',array('init'=>1));
     $formatter->refresh=$refresh;
  +  $formatter->macro_repl('InterWiki','',array('init'=>1));
     $formatter->tz_offset=$options['tz_offset'];
   
  -  // check black list
  +  // simple black list check
     if (!empty($DBInfo->blacklist)) {
       include_once 'lib/checkip.php';
       if (check_ip($DBInfo->blacklist, $_SERVER['REMOTE_ADDR'])) {
  @@ -4108,7 +4132,14 @@
           break;
         }
   
  -      $formatter->send_header("Status: 404 Not found",$options);
  +      $msg_404='';
  +      if (!$Config['no_404']) $msg_404="Status: 404 Not found"; # for IE
  +      if ($Config['nofancy_404']) {
  +        $formatter->header($msg_404);
  +        print '<html><head></head><body><h1>'.$msg_404.'</h1></body></html>';
  +        return;
  +      }
  +      $formatter->send_header($msg_404,$options);
   
         $twins=$DBInfo->metadb->getTwinPages($page->name,2);
         if ($twins) {
  @@ -4186,29 +4217,43 @@
           $tcache->update($pagename,serialize($keys));
         }
       }
  +    if ($DBInfo->use_referer)
  +      log_referer($_SERVER['HTTP_REFERER'],$pagename);
  +
       $formatter->write("<div id='wikiContent'>\n");
       $options['timer']->Check("init");
       $options['pagelinks']=1;
  -#    $cache=new Cache_text('pages');
  -#    if ($cache->exists($pagename)) {
  -#      print $cache->fetch($pagename);
  -#    } else {
  -#      ob_start();
  +    if ($Config['cachetime'] > 0 and !$formatter->pi['#nocache']) {
  +      $cache=new Cache_text('pages',2,'html');
  +      $mtime=$cache->mtime($pagename);
  +      $dtime=filemtime($Config['data_dir'].'/text/.'); // XXX
  +      $now=time();
  +      $check=$now-$mtime;
  +     
  +      if (!$formatter->refresh and (($mtime > $dtime) and ($check < $Config['cachetime']))) {
  +        print $cache->fetch($pagename);
  +        $mytime=gmdate("Y-m-d H:i:s",$mtime+$options['tz_offset']);
  +        print "<!-- Cached at $mytime -->";
  +      } else {
  +        ob_start();
  +        $formatter->send_page('',$options);
  +        flush();
  +        $out=ob_get_contents();
  +        ob_end_clean();
  +        print $out;
  +        if (!$formatter->pi['#nocache'])
  +          $cache->update($pagename,$out);
  +      }
  +      $args['refresh']=1; // add refresh menu
  +    } else {
         $formatter->send_page('',$options);
  -      if ($DBInfo->use_referer)
  -        log_referer($_SERVER['HTTP_REFERER'],$pagename);
  -      flush();
  -#      ob_end_flush();
  -#      ob_end_clean();
  -#      $out=ob_get_contents();
  -#      ob_end_clean();
  -#      print $out;
  -#      $cache->update($pagename,$out);
  -#    }
  +    }
       $options['timer']->Check("send_page");
       $formatter->write("<!-- wikiContent --></div>\n");
   
  -    if ($DBInfo->extra_macros and !$formatter->pi['#format']) {
  +    // XXX
  +    if ($DBInfo->extra_macros and
  +        $formatter->pi['#format'] == $DBInfo->default_markup) {
         if ($formatter->pi['#nocomment']) $options['nocomment']=1;
         if (!is_array($DBInfo->extra_macros)) {
           print '<div id="wikiExtra">'."\n";
  
  
  


wkpark      2006/07/29 20:49:29

  Modified:    css      _base.css
  Log:
  make FootNote() more css friendly
  
  Revision  Changes    Path
  1.11      +5 -0      moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- _base.css	21 Jul 2006 11:42:10 -0000	1.10
  +++ _base.css	29 Jul 2006 11:49:29 -0000	1.11
  @@ -70,6 +70,11 @@
     vertical-align: super;
   }
   
  +div.foot ul{
  +  list-style:none;
  +  padding-left:10px;
  +}
  +
   tt.sister {
     font-family:sans-serif;
     vertical-align: super;
  
  
  


wkpark      2006/07/29 20:49:29

  Modified:    .        wikilib.php
  Log:
  make FootNote() more css friendly
  
  Revision  Changes    Path
  1.213     +5 -5      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.212
  retrieving revision 1.213
  diff -u -r1.212 -r1.213
  --- wikilib.php	29 Jul 2006 10:51:59 -0000	1.212
  +++ wikilib.php	29 Jul 2006 11:49:29 -0000	1.213
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.212 2006/07/29 10:51:59 wkpark Exp $
  +// $Id: wikilib.php,v 1.213 2006/07/29 11:49:29 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2246,7 +2246,7 @@
       $foots=preg_replace("/(".$formatter->wordrule.")/e","\$formatter->link_repl('\\1')",$foots);
       unset($formatter->foots);
       if ($foots)
  -      return "<div class='foot'><div class='separator'><tt class='wiki'>----</tt></div>\n$foots</div>";
  +      return "<div class='foot'><div class='separator'><tt class='wiki'>----</tt></div><ul>\n$foots</ul></div>";
       return '';
     }
   
  @@ -2308,10 +2308,10 @@
          return "<tt class='foot'><a href='#$fnidx'>$text</a></tt>";
       }
     }
  -  $formatter->foots[]="<tt class='foot'>&#160;&#160;&#160;".
  +  $formatter->foots[]="<li><tt class='foot'>".
                         "<a id='$fnidx' name='$fnidx'/>".
  -                      "<a href='#r$fnidx'>$text</a>&#160;</tt> ".
  -                      "$value<br/>";
  +                      "<a href='#r$fnidx'>$text</a></tt> ".
  +                      "$value</li>";
     $tval=str_replace("'","&#39;",$value);
     return "<tt class='foot'><a id='r$fnidx' name='r$fnidx'/>".
       "<a href='#$fnidx' title='$tval'>$text</a></tt>";
  
  
  


wkpark      2006/07/29 20:58:05

  Modified:    .        config.php.default
  Log:
  update
  
  Revision  Changes    Path
  1.36      +4 -1      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- config.php.default	18 Jul 2006 13:06:58 -0000	1.35
  +++ config.php.default	29 Jul 2006 11:58:05 -0000	1.36
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.35 2006/07/18 13:06:58 wkpark Exp $
  +# $Id: config.php.default,v 1.36 2006/07/29 11:58:05 wkpark Exp $
   #
   $sitename='UnnamedWiki';
   $data_dir= './data';
  @@ -182,4 +182,7 @@
   #$dot_fontname='WEBDOTFONT'; # webdot fontname fot graphviz 1.8.x
   #$dot_options="size \"6,6\"\n"; # extra webdot options
   $use_save_refresh=2;
  +#$cache_public_dir='./_cache'; # enhanced caching
  +#$no_404=1; # for IIS
  +#$nofancy_404=1; # simplified 404 msg for robots etc.
   ?>
  
  
  


wkpark      2006/07/30 00:01:14

  Modified:    plugin   dot.php VisualTour.php
  Log:
  support sisterwikis
  macro_dot() refactoring
  support nodefont colors
  
  Revision  Changes    Path
  1.13      +39 -15    moniwiki/plugin/dot.php
  
  Index: dot.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/dot.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- dot.php	14 Jul 2006 13:57:08 -0000	1.12
  +++ dot.php	29 Jul 2006 15:01:14 -0000	1.13
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // dot action plugin for the MoniWiki
   //
  -// $Id: dot.php,v 1.12 2006/07/14 13:57:08 wkpark Exp $
  +// $Id: dot.php,v 1.13 2006/07/29 15:01:14 wkpark Exp $
   
   define(DEPTH,3);
   define(LEAFCOUNT,2);
  @@ -32,7 +32,7 @@
               # XXX 
               $nodelink[$page]=sizeof($leafs);
             } else
  -            $nodelink[$page]=1;
  +            $nodelink[$page]=-1; // XXX
           } else $nodelink[$page]=1;
         }
       }
  @@ -56,13 +56,16 @@
           $selected=array_slice($node[$pagename],0,$slice);
           foreach($selected as $leaf)
             $this->makeTree($leaf,$node,$color,$depth,$count);
  +      } else {
  +        $node[$pagename]=array(); // no links found
  +        $color[$pagename]=-9;
         }
       }
       return;
     }
   }
   
  -function do_dot($formatter,$options) {
  +function macro_Dot($formatter,$value='',$options=array()) {
     global $DBInfo;
   
     #getLeafs($options[page],&$node);
  @@ -74,24 +77,31 @@
       $fontsize=$options['f'];
     else $fontsize=FONTSIZE;
   
  +  if ($value and $DBInfo->hasPage($value)) {
  +    $pgname=$value;
  +  } else if ($DBInfo->hasPage($options['page'])) {
  +    $pgname=$options['page'];
  +  } else {
  +    return ''; // XXX
  +  }
  +
     $fontsize= $DBInfo->dot_fontsize ? $DBInfo->dot_fontsize: $fontsize;
     $fontname= $DBInfo->dot_fontname ? $DBInfo->dot_fontname: FONTNAME;
     $dot_options=$DBInfo->dot_options ? $DBInfo->dot_options: '';
   
     $color=array();
     $tree=new LinkTree($options['arena']);
  -  $tree->makeTree($options['page'],$node,$color,$depth,$count*2);
  -  if (!$node) $node=array($options['page']=>array());
  +  $tree->makeTree($pgname,$node,$color,$depth,$count*2);
  +  if (!$node) $node=array($pgname=>array());
     #print_r($color);
  -  foreach ($color as $key=>$val) $color[$key]=$depth-$val;
  +  foreach ($color as $key=>$val) $color[$key]=$val>0 ?$depth-$val:-$val;
   
  -  $color[$options['page']]=10;
  +  $color[$pgname]=10;
   
     $myaction='visualtour';
     if (in_array($options['t'],array('visualtour','show')))
       $myaction=$options['t'];
   
  -  header("Content-Type: text/plain");
     #print_r($color);
     #print_r(array_keys($node));
     $visualtour=$formatter->link_url("VisualTour");
  @@ -100,7 +110,11 @@
     $colref=array('gray71',
                   'olivedrab1','olivedrab2','olivedrab3',
                   '"#A4DDF4"','"#83D0ED"','"#63C0E3"',
  -                'gray53', 'gray40','gray30','yellow');
  +                'gray53', 'gray40','orangered','yellow');
  +  $fcolref=array('gray71',
  +                'olivedrab4','olivedrab4','olivedrab4',
  +                '"#A4DDF4"','"#83D0ED"','"#63C0E3"',
  +                'gray53', 'gray40','white','black');
     $colidx=0;
     $dot_head=<<<HEAD
   digraph G {
  @@ -115,8 +129,12 @@
     while (list($leafname,$leaf) = @each ($node)) {
       if (!$leafs[($urlname=_rawurlencode($leafname))]) {
         $leafs[$leafname]=$urlname;
  +
  +      $extra='';
  +      if ($fcolref[$color[$leafname]])
  +        $extra=',fontcolor='.$fcolref[$color[$leafname]];
         $out.= '"'.$urlname."\" [label=\"$leafname\",".
  -             "style=filled,fillcolor=".$colref[$color[$leafname]]."];\n";
  +             "style=filled,fillcolor=".$colref[$color[$leafname]]."$extra];\n";
       }
       #print $leafname."\n";
       #print_r($node[$leafname]);
  @@ -125,8 +143,11 @@
       foreach ($selected as $leaf) {
         if (!$leafs[($urlname=_rawurlencode($leaf))]) {
           $leafs[$leaf]=$urlname;
  +        $extra='';
  +        if ($fcolref[$color[$leaf]])
  +          $extra=',fontcolor='.$fcolref[$color[$leaf]];
           $out.= '"'.$urlname."\" [label=\"$leaf\",".
  -               "style=filled,fillcolor=".$colref[$color[$leaf]]."];\n";
  +               "style=filled,fillcolor=".$colref[$color[$leaf]]."$extra];\n";
         }
         $out.= "\"".$leafs[$leafname]."\" ->\"".$leafs[$leaf]."\";\n";
       }
  @@ -137,11 +158,14 @@
   
     if (strtoupper($DBInfo->charset) != 'UTF-8') {
       $new=iconv($DBInfo->charset,'UTF-8',$out);
  -    if ($new) print $new;
  -    return;
  +    if ($new) return $new;
     }
  -  print $out;
  -  return;
  +  return $out;
  +}
  +
  +function do_dot($formatter,$options=array()) {
  +  header("Content-Type: text/plain");
  +  print macro_Dot($formatter,$options['page'],$options);
   }
   
   // vim:et:sts=2
  
  
  
  1.8       +39 -19    moniwiki/plugin/VisualTour.php
  
  Index: VisualTour.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/VisualTour.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- VisualTour.php	14 Jul 2006 10:06:50 -0000	1.7
  +++ VisualTour.php	29 Jul 2006 15:01:14 -0000	1.8
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a VisualTour plugin for the MoniWiki
   //
  -// $Id: VisualTour.php,v 1.7 2006/07/14 10:06:50 wkpark Exp $
  +// $Id: VisualTour.php,v 1.8 2006/07/29 15:01:14 wkpark Exp $
   
   function macro_VisualTour($formatter,$value,$options=array()) {
     global $DBInfo;
  @@ -12,12 +12,6 @@
     $dotcmd="dot";
     #$dotcmd="twopi";
     #$dotcmd="neato";
  -  $webdot_dir=$DBInfo->upload_dir."/VisualTour";
  -
  -  if (!file_exists($webdot_dir)) {
  -    umask(000);
  -    mkdir($webdot_dir,0777);
  -  }
   
     if (!$formatter->page->exists())
       return "";
  @@ -54,25 +48,51 @@
       $pgname=$formatter->page->name;
     }
   
  -  $url=qualifiedUrl($formatter->link_url($urlname,"?action=dot&w=$w&d=$d$extra"));
  +  $dot=$formatter->macro_repl('dot',$pgname,$options);
  +
  +  $md5sum=md5($dot);
  +  if ($DBInfo->cache_public_dir) {
  +    $fc=new Cache_text('visualtour',2,'',$DBInfo->cache_public_dir);
  +    $fname=$fc->_getKey($md5sum,0);
  +    $basename= $DBInfo->cache_public_dir.'/'.$fname;
  +    $dotfile= $basename.'.dot';
  +    $pngfile= $basename.'.png';
  +    $mapfile= $basename.'.map';
  +    $urlbase=
  +      $DBInfo->cache_public_url ? $DBInfo->cache_public_url.'/'.$fname:
  +      $DBInfo->url_prefix.'/'.$basename;
  +    $png_url= $urlbase.'.png';
  +    $map_url= $urlbase.'.map';
  +  } else {
  +    $cache_dir= $DBInfo->upload_dir."/VisualTour";
  +    $cache_url= $DBInfo->upload_url ? $DBInfo->upload_url.'/VisualTour':
  +      $DBInfo->url_prefix.'/'.$cache_dir;
  +    $basename= $cache_dir.'/'.$md5sum;
  +    $pngfile= $basename.'.png';
  +    $mapfile= $basename.'.map';
  +    $dotfile= $basename.'.dot';
  +    $urlbase= $cache_url.'/'.$md5sum;
  +    $png_url= $urlbase.'.png';
  +    $map_url= $urlbase.'.map';
  +  }
  +
  +  if (!is_dir(dirname($pngfile))) {
  +    $om=umask(000);
  +    _mkdir_p(dirname($pngfile),0777);
  +    umask($om);
  +  }
   
  -  $fp=fopen($url,"r");
  -  $dot="";
  -  while ($data= fread($fp, 4096)) $dot.=$data;
  -  fclose($fp);
  -
  -  $md5sum=$DBInfo->pageToKeyname($pgname).".".md5($dot);
  -  if ($formatter->refresh or !file_exists($webdot_dir."/$md5sum.dot")) {
  -    $fp=fopen($webdot_dir."/$md5sum.dot","w");
  +  if ($formatter->refresh or !file_exists($dotfile)) {
  +    $fp=fopen($dotfile,"w");
       fwrite($fp,$dot);
       fclose($fp);
   
  -    $cmd="$dotcmd -Tpng $webdot_dir/$md5sum.dot -o $webdot_dir/$md5sum.png";
  +    $cmd="$dotcmd -Tpng $dotfile -o $pngfile";
       $formatter->errlog('Dot');
       $fp=popen($cmd.$formatter->LOG,'r');
       pclose($fp);
       $err=$formatter->get_errlog();
  -    $cmd="$dotcmd -Timap $webdot_dir/$md5sum.dot -o $webdot_dir/$md5sum.map";
  +    $cmd="$dotcmd -Timap $dotfile -o $mapfile";
       $formatter->errlog('Dot');
       $fp=popen($cmd.$formatter->LOG,'r');
       pclose($fp);
  @@ -82,7 +102,7 @@
   
     }
   
  -  return $err."<span class='VisualTour'><a href='$DBInfo->url_prefix/$webdot_dir/$md5sum.map'><img src='$DBInfo->url_prefix/$webdot_dir/$md5sum.png' alt='VisualTour' ismap></a></span>\n";
  +  return $err."<span class='VisualTour'><a href='$map_url'><img src='$png_url' alt='VisualTour' ismap></a></span>\n";
   }
   
   function do_VisualTour($formatter,$options) {
  
  
  


wkpark      2006/07/31 00:33:28

  Modified:    .        wiki.php
  Log:
  make sistersites index more css friendly
  
  Revision  Changes    Path
  1.322     +8 -8      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.321
  retrieving revision 1.322
  diff -u -r1.321 -r1.322
  --- wiki.php	29 Jul 2006 11:37:42 -0000	1.321
  +++ wiki.php	30 Jul 2006 15:33:28 -0000	1.322
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.321 2006/07/29 11:37:42 wkpark Exp $
  +// $Id: wiki.php,v 1.322 2006/07/30 15:33:28 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.321 $',1,-1);
  +$_revision = substr('$Revision: 1.322 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2233,10 +2233,10 @@
               $this->aliases[$page]=$url;
               return $url;
             }
  -          $this->sisters[]="<tt class='foot'>&#160;&#160;&#160;".
  -            "<a name='sister$this->sister_idx' id='sister$this->sister_idx'></a>".
  -            "<a href='#rsister$this->sister_idx'>$this->sister_idx&#x203a;</a>&#160;</tt> ".
  -            "$sisters <br/>";
  +          $this->sisters[]="<tt class='foot'>".
  +            "<li><a name='sister$this->sister_idx' id='sister$this->sister_idx'></a>".
  +            "<a href='#rsister$this->sister_idx'>$this->sister_idx&#x203a;</a></tt> ".
  +            "$sisters </li>";
             $this->pagelinks[$page]=$this->sister_idx++;
             $idx=$this->pagelinks[$page];
           }
  @@ -2669,7 +2669,7 @@
               $tmp.="Tags: [[Keywords]]";
             $this->send_page($tmp); // XXX
           }
  -        $this->store_pagelinks(); // XXX
  +        //$this->store_pagelinks(); // XXX
           return;
         }
   
  @@ -3160,7 +3160,7 @@
         $sisters=join("\n",$this->sisters);
         $sisters=preg_replace("/(".$wordrule.")/e","\$this->link_repl('\\1')",$sisters);
         $msg=_("Sister Sites Index");
  -      print "<div id='wikiSister'>\n<div class='separator'><tt class='foot'>----</tt></div>\n$msg<br />\n$sisters</div>\n";
  +      print "<div id='wikiSister'>\n<div class='separator'><tt class='foot'>----</tt></div>\n$msg<br />\n<ul>$sisters</ul></div>\n";
         $this->sister_on=$sister_save;
       }
   
  
  
  


wkpark      2006/07/31 00:39:23

  Modified:    .        wiki.php
  Log:
  cache plugins/processors list.
  
  Revision  Changes    Path
  1.323     +23 -0     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.322
  retrieving revision 1.323
  diff -u -r1.322 -r1.323
  --- wiki.php	30 Jul 2006 15:33:28 -0000	1.322
  +++ wiki.php	30 Jul 2006 15:39:23 -0000	1.323
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.322 2006/07/30 15:33:28 wkpark Exp $
  +// $Id: wiki.php,v 1.323 2006/07/30 15:39:23 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.322 $',1,-1);
  +$_revision = substr('$Revision: 1.323 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -29,6 +29,15 @@
     static $plugins=array();
     if ($plugins) return $plugins[strtolower($pluginname)];
     global $DBInfo;
  +
  +  $cp=new Cache_text('settings');
  +
  +  if ($cp->exists('plugins')) {
  +    $plugins=unserialize($cp->fetch('plugins'));
  +    if (is_array($DBInfo->myplugins))
  +      $plugins=array_merge($plugins,$DBInfo->myplugins);
  +    return $plugins[strtolower($pluginname)];
  +  }
     if ($DBInfo->include_path)
       $dirs=explode(':',$DBInfo->include_path);
     else
  @@ -43,6 +52,9 @@
         $plugins[strtolower($name)]= $name;
       }
     }
  +
  +  if ($plugins)
  +    $cp->update('plugins',serialize($plugins));
     if (is_array($DBInfo->myplugins))
       $plugins=array_merge($plugins,$DBInfo->myplugins);
   
  @@ -60,6 +72,15 @@
     static $processors=array();
     if ($processors) return $processors[strtolower($pro_name)];
     global $DBInfo;
  +
  +  $cp=new Cache_text('settings');
  +
  +  if ($cp->exists('processors')) {
  +    $processors=unserialize($cp->fetch('processors'));
  +    if (is_array($DBInfo->myprocessors))
  +      $processors=array_merge($processors,$DBInfo->myprocessors);
  +    return $processors[strtolower($pro_name)];
  +  }
     if ($DBInfo->include_path)
       $dirs=explode(':',$DBInfo->include_path);
     else
  @@ -75,6 +96,8 @@
       }
     }
   
  +  if ($processors)
  +    $cp->update('processors',serialize($processors));
     if (is_array($DBInfo->myprocessors))
       $processors=array_merge($processors,$DBInfo->myprocessors);
   
  
  
  


wkpark      2006/07/31 18:56:20

  Modified:    plugin/processor geshi.php
  Log:
  support new caching mechainism.
  check "GESHI_VERSION"
  change comment style from italic to normal.
  
  Revision  Changes    Path
  1.4       +25 -12    moniwiki/plugin/processor/geshi.php
  
  Index: geshi.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/geshi.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- geshi.php	26 Jan 2006 15:42:56 -0000	1.3
  +++ geshi.php	31 Jul 2006 09:56:20 -0000	1.4
  @@ -27,13 +27,13 @@
   //
   // this version was tested with geshi 1.0.6.
   //
  -// $Id: geshi.php,v 1.3 2006/01/26 15:42:56 wkpark Exp $
  +// $Id: geshi.php,v 1.4 2006/07/31 09:56:20 wkpark Exp $
   
  -include_once(dirname(__FILE__)."/../../lib/geshi/geshi.php");
  +@include_once(dirname(__FILE__)."/../../lib/geshi/geshi.php");
   
  +if (defined('GESHI_VERSION')):
   function processor_geshi($formatter,$value,$options) {
     global $DBInfo;
  -  $cache_dir=$DBInfo->upload_dir."/GeshiProcessor";
   
     $syntax=array(
       'actionscript', 'ada', 'apache', 'asm', 'asp', 'bash', 'c', 'c_mac',
  @@ -51,18 +51,27 @@
     $src=$value;
     if (!$type) $type='nosyntax';
   
  -  $uniq=md5($option.$src); if (!file_exists($cache_dir)) {
  -    umask(000);
  -    mkdir($cache_dir,0777);
  -    umask(022);
  +  $uniq=md5($option.$src);
  +  if ($DBInfo->cache_public_dir) {
  +    $fc=new Cache_text('geshi',2,'html',$DBInfo->cache_public_dir);
  +    $htmlname=$fc->_getKey($uniq,0);
  +    $html= $DBInfo->cache_public_dir.'/'.$htmlname;
  +  } else {
  +    $cache_dir=$DBInfo->upload_dir."/GeshiProcessor";
  +    $html=$cache_dir.'/'.$uniq.'.html';
  +  }
  +
  +  if (!is_dir(dirname($html))) {
  +    $om=umask(000);
  +    _mkdir_p(dirname($html),0777);
  +    umask($om);
     }
   
  -  if (file_exists($cache_dir."/$uniq".".html") && !$formatter->refresh) {
  +  if (file_exists($html) && !$formatter->refresh) {
       $out = "";
  -    $fp=fopen($cache_dir."/$uniq".".html","r");
  +    $fp=fopen($html,"r");
       while (!feof($fp)) $out .= fread($fp, 1024);
       return $out;
  -    #return join('',file($cache_dir."/$uniq".".html"));
     }
   
     # comment out the following two lines to freely use any syntaxes.
  @@ -77,18 +86,22 @@
     } else {
       $geshi->enable_line_numbers(GESHI_NO_LINE_NUMBERS);
     }
  +  $out='';
  +  $geshi->set_comments_style(1, 'font-style: normal;');
     $geshi->set_header_type(GESHI_HEADER_DIV);
     #$geshi->set_header_type(GESHI_HEADER_PRE);
     #$out = '<style type="text/css"><!--'.$geshi->get_stylesheet().'--></style>';
     #$geshi->enable_classes();
  -  $out = $out.$geshi->parse_code();
  +  $out.= $geshi->parse_code();
   
  -  $fp=fopen($cache_dir."/$uniq".".html","w");
  +  $fp=fopen($html,"w");
     fwrite($fp,$out);
     fclose($fp);
   
     return $out;
   }
   
  +endif;
  +
   // vim:et:sts=2:
   ?>
  
  
  


wkpark      2006/08/01 10:02:30

  Modified:    plugin/processor geshi.php
  Log:
  fix for trailing spaces (workaround for buggy geshi)
  
  Revision  Changes    Path
  1.5       +3 -3      moniwiki/plugin/processor/geshi.php
  
  Index: geshi.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/geshi.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- geshi.php	31 Jul 2006 09:56:20 -0000	1.4
  +++ geshi.php	1 Aug 2006 01:02:30 -0000	1.5
  @@ -27,7 +27,7 @@
   //
   // this version was tested with geshi 1.0.6.
   //
  -// $Id: geshi.php,v 1.4 2006/07/31 09:56:20 wkpark Exp $
  +// $Id: geshi.php,v 1.5 2006/08/01 01:02:30 wkpark Exp $
   
   @include_once(dirname(__FILE__)."/../../lib/geshi/geshi.php");
   
  @@ -48,10 +48,10 @@
     # get parameters
     if ($line)
       list($tag,$type,$extra)=explode(" ",$line,3);
  -  $src=$value;
  +  $src=rtrim($value); // XXX
     if (!$type) $type='nosyntax';
   
  -  $uniq=md5($option.$src);
  +  $uniq=md5($extra.$value);
     if ($DBInfo->cache_public_dir) {
       $fc=new Cache_text('geshi',2,'html',$DBInfo->cache_public_dir);
       $htmlname=$fc->_getKey($uniq,0);
  
  
  


wkpark      2006/08/01 10:03:01

  Modified:    plugin/processor bbcode.php
  Log:
  strip slashes for __list(), __escape()
  
  Revision  Changes    Path
  1.2       +6 -2      moniwiki/plugin/processor/bbcode.php
  
  Index: bbcode.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/bbcode.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- bbcode.php	29 Jul 2006 07:42:22 -0000	1.1
  +++ bbcode.php	1 Aug 2006 01:03:01 -0000	1.2
  @@ -5,6 +5,8 @@
   //
   // imported from the Soojung project http://soojung.kldp.net
   // - with some modification and simley disabled.
  +//
  +// $Id: bbcode.php,v 1.2 2006/08/01 01:03:01 wkpark Exp $
   
   class processor_bbcode {
   
  @@ -15,16 +17,17 @@
         'name'    => 'BBCode',
         'desc'    => 'BBCode Procssor',
         'url'     => 'MoniWiki:BBCodeProcessor',
  -      'version' => substr('$Revision: 1.1 $',1,-1),
  +      'version' => substr('$Revision: 1.2 $',1,-1),
         'depend'  => '1.1.3',
         'license' => 'GPL',
       );
     }
   
     function __listing($mode, $str) {
  +    $str=str_replace("\\'","'",$str);
       $item = explode("[*]", $str);
       $rstr = trim($item[0]);
  -    for($i=1;$i<count($item);$i++) {
  +    for($i=1,$sz=count($item);$i<$sz;$i++) {
         $rstr .= "<li>".trim($item[$i])."</li>";
       }
       switch($mode) {
  @@ -38,6 +41,7 @@
     }
   
     function __escape($str) {
  +    $str=str_replace("\\'","'",$str);
       return strtr($str, array("@"=>"\0@", "://"=>"\0://", "["=>"[\0"));
     }
   
  
  
  


wkpark      2006/08/01 16:35:31

  Modified:    .        wiki.php
  Log:
  fixed "current" attribute of css by cheeky.
  cleanup smartdiff/wikimarkup things.
  
  Revision  Changes    Path
  1.324     +38 -23    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.323
  retrieving revision 1.324
  diff -u -r1.323 -r1.324
  --- wiki.php	30 Jul 2006 15:39:23 -0000	1.323
  +++ wiki.php	1 Aug 2006 07:35:31 -0000	1.324
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.323 2006/07/30 15:39:23 wkpark Exp $
  +// $Id: wiki.php,v 1.324 2006/08/01 07:35:31 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.323 $',1,-1);
  +$_revision = substr('$Revision: 1.324 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -1965,8 +1965,7 @@
         if (preg_match("/^(w|[A-Z])/",$url)) # InterWiki or wiki:
           return $this->interwiki_repl($url,'',$attr,$external_icon);
   
  -      if ($url[0]=='m' and $url[1]=='a') {
  -      #if (preg_match("/^mailto:/",$url)) {
  +      if (preg_match("/^mailto:/",$url)) {
           $email=substr($url,7);
           $link=$name=email_guard($email,$this->email_guard);
           $link=preg_replace('/&(?!#?[a-z0-9]+;)/i','&amp;',$link);
  @@ -2207,7 +2206,7 @@
       $url=$this->link_url($url);
   
       #check current page
  -    if ($page == $this->page->name) $attr.='class="current"';
  +    if ($page == $this->page->name) $attr.=' class="current"';
   
       //$url=$this->link_url(_rawurlencode($page)); # XXX
       if (isset($this->pagelinks[$page])) {
  @@ -2411,21 +2410,36 @@
     }
   
     function processor_repl($processor,$value,$options="") {
  +    $bra='';$ket='';
  +    if (!empty($this->wikimarkup) and empty($options['nomarkup'])) {
  +      $bra= "<div class='wikiMarkup'><!-- wiki:\n{{{".$value."}}}\n-->";
  +      $ket= '</div>';
  +    }
  +    if (!empty($this->use_smartdiff) and
  +      preg_match('/<(ins|del|div) class=\'diff-(added|removed)\'>/',
  +      $value)) $processor='plain';
       if (!($f=function_exists("processor_".$processor)) and !($c=class_exists('processor_'.$processor))) {
         $pf=getProcessor($processor);
  -      if (!$pf)
  -      return call_user_func('processor_plain',$this,$value,$options);
  +      if (!$pf) {
  +        $ret= call_user_func('processor_plain',$this,$value,$options);
  +        return $bra.$ret.$ket;
  +      }
         include_once("plugin/processor/$pf.php");
         $processor=$pf;
         $name='processor_'.$pf;
  -      if (!($f=function_exists($name)) and !($c=class_exists($name)))
  -        return call_user_func('processor_plain',$this,$value,$options);
  +      if (!($f=function_exists($name)) and !($c=class_exists($name))) {
  +        $ret= call_user_func('processor_plain',$this,$value,$options);
  +        return $bra.$ret.$ket;
  +      }
  +    }
  +    if ($f) {
  +      $ret= call_user_func("processor_$processor",$this,$value,$options);
  +      return $bra.$ret.$ket;
       }
  -    if ($f)
  -      return call_user_func("processor_$processor",$this,$value,$options);
       $classname='processor_'.$processor;
       $myclass= & new $classname($this,$options);
  -    return call_user_func(array($myclass,'process'),$value,$options);
  +    $ret= call_user_func(array($myclass,'process'),$value,$options);
  +    return $bra.$ret.$ket;
     }
   
     function filter_repl($filter,$value,$options='') {
  @@ -3059,18 +3073,19 @@
   
            # for smart diff
            $show_raw=0;
  -         if ($this->use_smartdiff and
  -           preg_match('/<(ins|del) class=\'diff-(added|removed)\'>/',
  -           $this->pre_line)) $show_raw=1;
  +         #if ($this->use_smartdiff and
  +         #  preg_match('/<(ins|del) class=\'diff-(added|removed)\'>/',
  +         #  $this->pre_line)) $show_raw=1;
   
            if ($processor and !$show_raw) {
  -           $value=$this->pre_line;
  +           $value=&$this->pre_line;
              $out= $this->processor_repl($processor,$value,$options);
  -           if ($this->wikimarkup)
  -             $line='<div class="wikiMarkup">'."<!-- wiki:\n{{{".
  -               $value."}}}\n-->$out</div>";
  -           else
  -             $line=$out.$line;
  +           #if ($this->wikimarkup)
  +           #  $line='<div class="wikiMarkup">'."<!-- wiki:\n{{{".
  +           #    $value."}}}\n-->$out</div>";
  +           #else
  +           #  $line=$out.$line;
  +           $line=$out.$line;
              unset($out);
            } else if ($in_quote) {
               # htmlfy '<'
  @@ -3641,7 +3656,7 @@
         if (strpos($item,' ') === false) {
           if (strpos($attr,'=') === false) $attr="accesskey='$attr'";
           if ($item == $this->page->name) {
  -          $attr.=" class='current'";
  +          #$attr.=" class='current'";
             $titlemnu=1;
           }
           # like 'MoniWiki'=>'accesskey="1"'
  @@ -3653,7 +3668,7 @@
         }
       }
       if ($DBInfo->use_titlemenu and $titlemnu == 0 ) {
  -      $attr="class='current'";
  +      #$attr="class='current'";
         # XXX make title more shorter ?
         $mnuname=htmlspecialchars($this->page->name);
         if ($DBInfo->hasPage($this->page->name) and strlen($mnuname) < 10)
  
  
  


wkpark      2006/08/01 16:36:50

  Modified:    .        wiki.php
  Log:
  fixed email_gurad bug. http://kldp.net/forum/message.php?msg_id=13779
  
  Revision  Changes    Path
  1.325     +7 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.324
  retrieving revision 1.325
  diff -u -r1.324 -r1.325
  --- wiki.php	1 Aug 2006 07:35:31 -0000	1.324
  +++ wiki.php	1 Aug 2006 07:36:50 -0000	1.325
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.324 2006/08/01 07:35:31 wkpark Exp $
  +// $Id: wiki.php,v 1.325 2006/08/01 07:36:50 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.324 $',1,-1);
  +$_revision = substr('$Revision: 1.325 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -1967,9 +1967,12 @@
   
         if (preg_match("/^mailto:/",$url)) {
           $email=substr($url,7);
  -        $link=$name=email_guard($email,$this->email_guard);
  +        $link=strtok($email,' ');
  +        $myname=strtok('');
  +        $link=email_guard($link,$this->email_guard);
  +        $myname=!empty($myname) ? $myname:$link;
           $link=preg_replace('/&(?!#?[a-z0-9]+;)/i','&amp;',$link);
  -        return $this->icon['mailto']."<a class='externalLink' href='mailto:$link' $attr>$link</a>$external_icon";
  +        return $this->icon['mailto']."<a class='externalLink' href='mailto:$link' $attr>$myname</a>$external_icon";
         }
   
         if ($force or strpos($url,' ')) { # have a space ?
  
  
  


wkpark      2006/08/01 22:23:46

  Modified:    .        wiki.php
  Log:
  fixed arguments for #format PI
  
  Revision  Changes    Path
  1.326     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.325
  retrieving revision 1.326
  diff -u -r1.325 -r1.326
  --- wiki.php	1 Aug 2006 07:36:50 -0000	1.325
  +++ wiki.php	1 Aug 2006 13:23:46 -0000	1.326
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.325 2006/08/01 07:36:50 wkpark Exp $
  +// $Id: wiki.php,v 1.326 2006/08/01 13:23:46 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.325 $',1,-1);
  +$_revision = substr('$Revision: 1.326 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -1865,7 +1865,7 @@
       if (!empty($format)) $pi['#format']=$format; // override default
       if (!isset($pi['#format'])) $pi['#format']= $Config['default_markup'];
   
  -    list($pi['#format'],$pi['args'])=explode(' ',$pi['#format']);
  +    list($pi['#format'],$pi['args'])=explode(' ',$pi['#format'],2);
   
       if ($notused) $body=join("\n",$notused)."\n".$body;
       if ($update_body) $this->page->write($body." "); # workaround XXX
  
  
  


wkpark      2006/08/01 22:24:47

  Modified:    .        wikilib.php
  Log:
  use isset() or !empty()
  
  Revision  Changes    Path
  1.214     +9 -7      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.213
  retrieving revision 1.214
  diff -u -r1.213 -r1.214
  --- wikilib.php	29 Jul 2006 11:49:29 -0000	1.213
  +++ wikilib.php	1 Aug 2006 13:24:47 -0000	1.214
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.213 2006/07/29 11:49:29 wkpark Exp $
  +// $Id: wikilib.php,v 1.214 2006/08/01 13:24:47 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -104,6 +104,8 @@
     if ($word[0]=='[') $word=substr($word,1,-1);
     if ($word[0]=='"') $word=substr($word,1,-1);
     $page=$word;
  +  $text='';
  +  $main_page='';
   
     # User namespace extension
     if ($page[0]=='~' and ($p=strpos($page,'/'))) {
  @@ -135,7 +137,7 @@
   
     if ($page[0]=='/') { # SubPage
       $page=$pagename.$page;
  -  } else if ($islink && $tok=strtok($page,'.')) {
  +  } else if (!empty($islink) && $tok=strtok($page,'.')) {
   #    print $tok;
       if ($tok=='Main') {
         # Main.MoniWiki => MoniWiki
  @@ -452,11 +454,11 @@
        list($this->ticket,$id)=explode(".",$_COOKIE['MONI_ID'],2);
   
        $this->setID($id);
  -     $this->css=$_COOKIE['MONI_CSS'];
  -     $this->theme=$_COOKIE['MONI_THEME'];
  -     $this->bookmark=$_COOKIE['MONI_BOOKMARK'];
  -     $this->trail=_stripslashes($_COOKIE['MONI_TRAIL']);
  -     $this->tz_offset=_stripslashes($_COOKIE['MONI_TZ']);
  +     $this->css=isset($_COOKIE['MONI_CSS']) ? $_COOKIE['MONI_CSS']:'';
  +     $this->theme=isset($_COOKIE['MONI_THEME']) ? $_COOKIE['MONI_THEME']:'';
  +     $this->bookmark=isset($_COOKIE['MONI_BOOKMARK']) ? $_COOKIE['MONI_BOOKMARK']:'';
  +     $this->trail=isset($_COOKIE['MONI_TRAIL']) ? _stripslashes($_COOKIE['MONI_TRAIL']):'';
  +     $this->tz_offset=isset($_COOKIE['MONI_TZ']) ?_stripslashes($_COOKIE['MONI_TZ']):'';
        if ($this->tz_offset =='') $this->tz_offset=date('Z');
     }
   
  
  
  


wkpark      2006/08/01 22:28:19

  Modified:    plugin   Diff.php
  Log:
  updates correspond to get_instruction()
  
  Revision  Changes    Path
  1.12      +5 -5      moniwiki/plugin/Diff.php
  
  Index: Diff.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Diff.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- Diff.php	20 Jan 2006 16:31:25 -0000	1.11
  +++ Diff.php	1 Aug 2006 13:28:19 -0000	1.12
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a diff plugin for the MoniWiki
   //
  -// $Id: Diff.php,v 1.11 2006/01/20 16:31:25 wkpark Exp $
  +// $Id: Diff.php,v 1.12 2006/08/01 13:28:19 wkpark Exp $
   
   function simple_diff($diff) {
     $diff=str_replace("<","&lt;",$diff);
  @@ -141,7 +141,7 @@
     $option='';
   
     $pi=$formatter->get_instructions($dum);
  -  if ($pi['#format'] and !$options['type']) # is it not wiki format ?
  +  if (!in_array($pi['#format'],array('wiki','moni')) and !$options['type']) # is it not wiki format ?
       $options['type']=$DBInfo->diff_type; # use default diff format
   
     if (!$options['type'] and $DBInfo->use_smartdiff)
  @@ -255,8 +255,8 @@
             $diffed);
   
           $diffed=preg_replace(array(
  -            "/\n\(@@/m","/@@\)\n/m","/\(@@/","/@@\)/",
  -            "/\n\(%%/m","/%%\)\n/m","/\(%%/","/%%\)/"),
  +            "/\n?\(@@/m","/@@\)\n/m","/\(@@/","/@@\)/",
  +            "/\n?\(%%/m","/%%\)\n/m","/\(%%/","/%%\)/"),
             array(
               "\n<div class='diff-added'>","\n</div>",
               "<ins class='diff-added'>","\n</ins>",
  @@ -268,7 +268,7 @@
           $options['msg']=$msg;
           $options['smart']=1;
   
  -        if ($pi['#format'])
  +        if (!in_array($pi['#format'],array('wiki','moni')))
             print '<pre class="code">'.$diffed.'</pre>';
           else
             $formatter->send_page($diffed,$options);
  
  
  


wkpark      2006/08/02 00:47:30

  Modified:    local/Wikiwyg/lib Wikiwyg.js
  Log:
  update to latest from the svn repository
  
  Revision  Changes    Path
  1.2       +28 -28    moniwiki/local/Wikiwyg/lib/Wikiwyg.js
  
  Index: Wikiwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/lib/Wikiwyg.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Wikiwyg.js	1 Feb 2006 08:20:09 -0000	1.1
  +++ Wikiwyg.js	1 Aug 2006 15:47:30 -0000	1.2
  @@ -14,12 +14,13 @@
   
   AUTHORS:
   
  -    Brian Ingerson <ingy@cpan.org>
  +    Ingy döt Net <ingy@cpan.org>
       Casey West <casey@geeknest.com>
       Chris Dent <cdent@burningchrome.com>
       Matt Liggett <mml@pobox.com>
       Ryan King <rking@panoptic.com>
       Dave Rolsky <autarch@urth.org>
  +    Kang-min Liu <gugod@gugod.org>
   
   COPYRIGHT:
   
  @@ -99,7 +100,7 @@
   // Constructor and class methods
   proto = new Subclass('Wikiwyg');
   
  -Wikiwyg.VERSION = '0.12';
  +Wikiwyg.VERSION = '0.13';
   
   // Browser support properties
   Wikiwyg.ua = navigator.userAgent.toLowerCase();
  @@ -110,7 +111,8 @@
   );
   Wikiwyg.is_gecko = (
       Wikiwyg.ua.indexOf('gecko') != -1 &&
  -    Wikiwyg.ua.indexOf('safari') == -1
  +    Wikiwyg.ua.indexOf('safari') == -1 &&
  +    Wikiwyg.ua.indexOf('konqueror') == -1
   );
   Wikiwyg.is_safari = (
       Wikiwyg.ua.indexOf('safari') != -1
  @@ -118,6 +120,9 @@
   Wikiwyg.is_opera = (
       Wikiwyg.ua.indexOf('opera') != -1
   );
  +Wikiwyg.is_konqueror = (
  +    Wikiwyg.ua.indexOf("konqueror") != -1
  +)
   Wikiwyg.browserIsSupported = (
       Wikiwyg.is_gecko ||
       Wikiwyg.is_ie
  @@ -129,7 +134,7 @@
       this.initializeObject(div, config);
   };
   
  -proto.config = {
  +proto.default_config = {
       javascriptLocation: 'lib/',
       doubleClickToEdit: false,
       toolbarClass: 'Wikiwyg.Toolbar',
  @@ -188,11 +193,16 @@
   
   // Wikiwyg environment setup private methods
   proto.set_config = function(user_config) {
  -    for (var key in this.config)
  -        if (user_config && user_config[key])
  +    this.config = [];
  +    for (var key in this.default_config) {
  +        if (user_config != null && user_config[key] != null) {
               this.config[key] = user_config[key];
  -        else if (this[key] != null)
  +        } else if (this.default_config[key] != null) {
  +            this.config[key] = this.default_config[key];
  +        } else if (this[key] != null) {
               this.config[key] = this[key];
  +        }
  +    }
   }
   
   proto.insert_div_before = function(div) {
  @@ -272,32 +282,22 @@
       return 'wikiwyg_' + Wikiwyg.unique_id_base++;
   }
   
  +// This method is deprecated. Use Ajax.get and Ajax.post.
   Wikiwyg.liveUpdate = function(method, url, query, callback) {
  -    var req = new XMLHttpRequest();
  -    var data = null;
  -    if (method == 'GET')
  -        url = url + '?' + query;
  -    else
  -        data = query;
  -    req.open(method, url);
  -    req.onreadystatechange = function() {
  -        if (req.readyState == 4 && req.status == 200) {
  -            try {
  -                response_text = req.responseText;
  -            }
  -            catch(e) {
  -                return;
  -            }
  -            callback(response_text);
  -        }
  +    if (method == 'GET') {
  +        return Ajax.get(
  +            url + '?' + query,
  +            callback
  +        );
       }
       if (method == 'POST') {
  -        req.setRequestHeader(
  -            'Content-Type', 
  -            'application/x-www-form-urlencoded'
  +        return Ajax.post(
  +            url,
  +            query,
  +            callback
           );
       }
  -    req.send(data);
  +    throw("Bad method: " + method + " passed to Wikiwyg.liveUpdate");
   }
   
   Wikiwyg.htmlUnescape = function(escaped) {
  
  
  


wkpark      2006/08/02 00:47:30

  Modified:    local/Wikiwyg/lib/Wikiwyg Debug.js HTML.js Toolbar.js
                        Wikitext.js Wysiwyg.js
  Added:       local/Wikiwyg/lib/Wikiwyg Util.js
  Log:
  update to latest from the svn repository
  
  Revision  Changes    Path
  1.2       +9 -55     moniwiki/local/Wikiwyg/lib/Wikiwyg/Debug.js
  
  Index: Debug.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/lib/Wikiwyg/Debug.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Debug.js	1 Feb 2006 08:20:10 -0000	1.1
  +++ Debug.js	1 Aug 2006 15:47:30 -0000	1.2
  @@ -1,60 +1,14 @@
  -/*==============================================================================
  -This Wikiwyg mode supports a textarea editor with toolbar buttons.
  -
  -COPYRIGHT:
  -
  -    Copyright (c) 2005 Socialtext Corporation 
  -    655 High Street
  -    Palo Alto, CA 94301 U.S.A.
  -    All rights reserved.
  -
  -Wikiwyg is free software. 
  -
  -This library is free software; you can redistribute it and/or modify it
  -under the terms of the GNU Lesser General Public License as published by
  -the Free Software Foundation; either version 2.1 of the License, or (at
  -your option) any later version.
  -
  -This library is distributed in the hope that it will be useful, but
  -WITHOUT ANY WARRANTY; without even the implied warranty of
  -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
  -General Public License for more details.
  -
  -    http://www.gnu.org/copyleft/lesser.txt
  -
  - =============================================================================*/
  -
  -(function() {
  -
  -new Subclass('XXX');
  -var klass = XXX;
  -
  -klass.sort_object_keys = function(o) {
  -    var a = [];
  -    for (p in o) a.push(p);
  -    return a.sort();
  +//------------------------------------------------------------------------------
  +// Debugging Support
  +//------------------------------------------------------------------------------
  +
  +function XXX(msg) {
  +    if (! confirm(msg))
  +        throw("terminated...");
   }
   
  -klass.dump_keys = function(o) {
  -    var a = klass.sort_object_keys(o);
  -    var str='';
  -    for (p in a)
  -        str += a[p] + "\t";
  -    alert(str);
  +function JJJ(obj) {
  +    XXX(JSON.stringify(obj));
   }
   
  -klass.dump_object_into_screen = function(o) {
  -    var a = klass.sort_object_keys(o);
  -    var str='';
  -    for (p in a) {
  -        var i = a[p];
  -        try {
  -            str += a[p] + ': ' + o[i] + '\n';
  -        } catch(e) {
  -            // alert('Died on key "' + i + '":\n' + e.message);
  -        }
  -    }
  -    document.write('<xmp>' + str + '</xmp>');
  -}
   
  -})();
  
  
  
  1.2       +1 -1      moniwiki/local/Wikiwyg/lib/Wikiwyg/HTML.js
  
  Index: HTML.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/lib/Wikiwyg/HTML.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- HTML.js	1 Feb 2006 08:20:10 -0000	1.1
  +++ HTML.js	1 Aug 2006 15:47:30 -0000	1.2
  @@ -44,7 +44,7 @@
   }
   
   proto.enableThis = function() {
  -    this.superfunc('enableThis').call(this);
  +    Wikiwyg.Mode.prototype.enableThis.call(this);
       this.textarea.style.width = '100%';
       this.textarea.style.height = '200px';
   }
  
  
  
  1.2       +1 -1      moniwiki/local/Wikiwyg/lib/Wikiwyg/Toolbar.js
  
  Index: Toolbar.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/lib/Wikiwyg/Toolbar.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Toolbar.js	1 Feb 2006 08:20:10 -0000	1.1
  +++ Toolbar.js	1 Aug 2006 15:47:30 -0000	1.2
  @@ -89,7 +89,7 @@
       var config = this.config;
       for (var i = 0; i < config.controlLayout.length; i++) {
           var action = config.controlLayout[i];
  -        var label = config.controlLabels[action]
  +        var label = config.controlLabels[action];
           if (action == 'save')
               this.addControlItem(label, 'saveChanges');
           else if (action == 'cancel')
  
  
  
  1.3       +157 -25   moniwiki/local/Wikiwyg/lib/Wikiwyg/Wikitext.js
  
  Index: Wikitext.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/lib/Wikiwyg/Wikitext.js,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Wikitext.js	1 Feb 2006 08:21:04 -0000	1.2
  +++ Wikitext.js	1 Aug 2006 15:47:30 -0000	1.3
  @@ -56,7 +56,8 @@
           unordered: ['start_lines', '*'],
           indent: ['start_lines', '>'],
           hr: ['line_alone', '----'],
  -        table: ['line_alone', '| A | B | C |\n|   |   |   |\n|   |   |   |']
  +        table: ['line_alone', '| A | B | C |\n|   |   |   |\n|   |   |   |'],
  +        www: ['bound_phrase', '[', ']']
       }
   }
   
  @@ -77,6 +78,7 @@
   }
   
   proto.clear_inner_text = function() {
  +    if ( Wikiwyg.is_safari ) return;
       var self = this;
       this.area.onclick = function() {
           var inner_text = self.area.value;
  @@ -87,7 +89,7 @@
   }
   
   proto.enableThis = function() {
  -    this.superfunc('enableThis').call(this);
  +    Wikiwyg.Mode.prototype.enableThis.call(this);
       this.textarea.style.width = '100%';
       this.setHeightOfEditor();
       this.enable_keybindings();
  @@ -97,7 +99,10 @@
       var config = this.config;
       var adjust = config.editHeightAdjustment;
       var area   = this.textarea;
  -    var text   = this.getTextArea();
  +
  +    if ( Wikiwyg.is_safari) return area.setAttribute('rows', 25);
  +
  +    var text   = this.getTextArea() ;
       var rows   = text.split(/\n/).length;
   
       var height = parseInt(rows * adjust);
  @@ -303,7 +308,7 @@
   }
   
   proto.clean_regexp = function(string) {
  -    string = string.replace(/([\^\$\*\+\.\?\[\]\{\}\(\)])/g, '\\$1');
  +    string = string.replace(/([\^\$\*\+\.\?\[\]\{\}])/g, '\\$1');
       return string;
   }
   
  @@ -509,6 +514,22 @@
   proto.do_hr = klass.make_do('hr');
   proto.do_table = klass.make_do('table');
   
  +proto.do_www = function() {
  +    var  url =  prompt("Please enter a link", "Type in your link here");
  +	var old = this.config.markupRules.www[1];
  +	this.config.markupRules.www[1] += url + " ";
  +  
  +	// do the transformation 
  +	var markup = this.config.markupRules['www'];
  +    var handler = markup[0];
  +     if (! this['markup_' + handler])
  +    	die('No handler for markup: "' + handler + '"');
  +    this['markup_' + handler](markup);
  +
  +	// reset
  +	this.config.markupRules.www[1] = old;	
  +}
  +
   proto.selection_mangle = function(method) {
       var scroll_top = this.area.scrollTop;
       if (! this.get_lines()) {
  @@ -611,8 +632,10 @@
       this.output = [];
       this.list_type = [];
       this.indent_level = 0;
  +    this.no_collapse_text = false;
   
       this.normalizeDomWhitespace(dom);
  +    this.normalizeDomStructure(dom);
   
       this.walk(dom);
   
  @@ -622,6 +645,80 @@
       return this.join_output(this.output);
   }
   
  +proto.normalizeDomStructure = function(dom) {
  +    this.normalize_styled_blocks(dom, 'p');
  +    this.normalize_styled_lists(dom, 'ol');
  +    this.normalize_styled_lists(dom, 'ul');
  +    this.normalize_styled_blocks(dom, 'li');
  +    this.normalize_span_whitespace(dom, 'span');
  +}
  +
  +proto.normalize_span_whitespace = function(dom,tag ) {
  +    var grep = function(element) {
  +       return Boolean(element.getAttribute('style'));
  +    }
  +        
  +    var elements = this.array_elements_by_tag_name(dom, tag, grep);
  +    for (var i = 0; i < elements.length; i++) {
  +        var element = elements[i];
  +        var node = element.firstChild;
  +        while (node) {
  +            if (node.nodeType == 3) {
  +                node.nodeValue = node.nodeValue.replace(/^\n+/,"");
  +                break;
  +            }
  +            node = node.nextSibling;
  +        }
  +        var node = element.lastChild;
  +        while (node) {
  +            if (node.nodeType == 3) {
  +                node.nodeValue = node.nodeValue.replace(/\n+$/,"");
  +                break;
  +            }
  +            node = node.previousSibling;
  +        }
  +    }
  +}
  +
  +proto.normalize_styled_blocks = function(dom, tag) {
  +    var elements = this.array_elements_by_tag_name(dom, tag);
  +    for (var i = 0; i < elements.length; i++) {
  +        var element = elements[i];
  +        var style = element.getAttribute('style');
  +        if (!style) continue;
  +        element.removeAttribute('style');
  +        element.innerHTML =
  +            '<span style="' + style + '">' + element.innerHTML + '</span>';
  +    }
  +}
  +
  +proto.normalize_styled_lists = function(dom, tag) {
  +    var elements = this.array_elements_by_tag_name(dom, tag);
  +    for (var i = 0; i < elements.length; i++) {
  +        var element = elements[i];
  +        var style = element.getAttribute('style');
  +        if (!style) continue;
  +        element.removeAttribute('style');
  +
  +        var items = element.getElementsByTagName('li');
  +        for (var j = 0; j < items.length; j++) {
  +            items[j].innerHTML = 
  +                '<span style="' + style + '">' + items[j].innerHTML + '</span>';
  +        }
  +    }
  +}
  +
  +proto.array_elements_by_tag_name = function(dom, tag, grep) {
  +    var result = dom.getElementsByTagName(tag);
  +    var elements = [];
  +    for (var i = 0; i < result.length; i++) {
  +        if (grep && ! grep(result[i]))
  +            continue;
  +        elements.push(result[i]);
  +    }
  +    return elements;
  +}
  +
   proto.normalizeDomWhitespace = function(dom) {
       var tags = ['span', 'strong', 'em', 'strike', 'del', 'tt'];
       for (var ii = 0; ii < tags.length; ii++) {
  @@ -630,6 +727,20 @@
               this.normalizePhraseWhitespace(elements[i]);
           }
       }
  +    this.normalizeNewlines(dom, ['br', 'blockquote'], 'nextSibling');
  +    this.normalizeNewlines(dom, ['p', 'div', 'blockquote'], 'firstChild');
  +}
  +
  +proto.normalizeNewlines = function(dom, tags, relation) {
  +    for (var ii = 0; ii < tags.length; ii++) {
  +        var nodes = dom.getElementsByTagName(tags[ii]);
  +        for (var jj = 0; jj < nodes.length; jj++) {
  +            var next_node = nodes[jj][relation];
  +            if (next_node && next_node.nodeType == '3') {
  +                next_node.nodeValue = next_node.nodeValue.replace(/^\n/, '');
  +            }
  +        }
  +    }
   }
   
   proto.normalizePhraseWhitespace = function(element) {
  @@ -687,7 +798,7 @@
       if (! last_node) return true;
       if (last_node.nodeValue.match(/ $/)) return false;
       if (! next_node || next_node.nodeValue == '\n') return false;
  -    return ! next_node.nodeValue.match(/^[ ."]/);
  +    return ! next_node.nodeValue.match(/^[ ."\n]/);
   }
   
   proto.destroyElement = function(element) {
  @@ -754,12 +865,19 @@
               this.dispatch_formatter(part);
           }
           else if (part.nodeType == 3) {
  -            if (part.nodeValue.match(/[^\n]/)) {
  -                var string = part.nodeValue.replace(/^\r?\n/, '');
  -                this.appendOutput(this.collapse(string));
  +            if (part.nodeValue.match(/[^\n]/) &&
  +                ! part.nodeValue.match(/^\n[\ \t]*$/)
  +               ) {
  +                if (this.no_collapse_text) { 
  +                    this.appendOutput(part.nodeValue);
  +                }
  +                else {
  +                    this.appendOutput(this.collapse(part.nodeValue));
  +                }
               }
           }
       }
  +    this.no_collapse_text = false;
   }
   
   proto.dispatch_formatter = function(element) {
  @@ -844,6 +962,7 @@
   proto.format_tfoot = proto.pass;
   proto.format_thead = proto.pass;
   proto.format_wiki = proto.pass;
  +proto.format_www = proto.skip;
   
   proto.format_img = function(element) {
       var uri = element.getAttribute('src');
  @@ -924,8 +1043,8 @@
           return;
       }
   
  -    if (! this.element_has_text_content(element)) return;
  -
  +    if (   ! this.element_has_text_content(element)
  +        && ! this.element_has_only_image_content(element)) return;
       var attributes = [ 'line-through', 'bold', 'italic', 'underline' ];
       for (var i = 0; i < attributes.length; i++)
           this.check_style_and_maybe_mark_up(style, attributes[i], 1);
  @@ -940,6 +1059,12 @@
                               .replace(/&nbsp;/g, '').match(/\S/);
   }
   
  +proto.element_has_only_image_content = function(element) {
  +    return    element.childNodes.length == 1
  +           && element.firstChild.nodeType == 1
  +           && element.firstChild.tagName.toLowerCase() == 'img';
  +}
  +
   proto.check_style_and_maybe_mark_up = function(style, attribute, open_close) {
       var markup_rule = attribute;
       if (markup_rule == 'line-through')
  @@ -1094,9 +1219,6 @@
       this.list_type.push(list_type);
       this.walk(element);
       this.list_type.pop();
  -
  -    if (!this.list_type.length)
  -        this.assert_blank_line();
   }
   
   proto.format_ol = function(element) {
  @@ -1169,8 +1291,11 @@
       var fang = '';
       var indentChar = this.config.markupRules.indent[1];
       var newline = '\n';
  -    if (this.indent_level > 0)
  -        fang = indentChar.times(this.indent_level) + ' ';
  +    if (this.indent_level > 0) {
  +        fang = indentChar.times(this.indent_level);
  +        if (fang.length)
  +            fang += ' ';
  +    }
       // XXX - ('\n' + fang) MUST be in the same element in this.output so that
       // it can be properly matched by chomp above.
       if (fang.length && this.first_indent_line) {
  @@ -1224,7 +1349,7 @@
       if (! how_far_back)
           how_far_back = 1;
       var length = this.output.length;
  -    return length ? this.output[length - how_far_back] : '';
  +    return length && how_far_back <= length ? this.output[length - how_far_back] : '';
   }
   
   proto.handle_bound_phrase = function(element, markup) {
  @@ -1324,17 +1449,18 @@
           // do nothing
       }
       else if (next.nodeType == 1) {
  -        this.appendOutput(' ');
  +        if (next.nodeName == 'BR') {
  +            var nn = next.nextSibling;
  +            if (! (nn && nn.nodeType == 1 && nn.nodeName == 'SPAN'))
  +                this.appendOutput('\n');
  +        }
  +        else {
  +            this.appendOutput(' ');
  +        }
       }
       else if (next.nodeType == 3) {
  -        var text = next.nodeValue;
  -        if (text.match(/^\n/))
  -            this.appendOutput('\n');
  -        else if (text.match(/^\s/)) {
  -            // do nothing
  -        }
  -        else
  -            this.no_following_whitespace()
  +        if (! next.nodeValue.match(/^\s/))
  +            this.no_following_whitespace();
       }
   }
   
  @@ -1351,6 +1477,12 @@
       var before = this.config.markupRules.link[1];
       var after  = this.config.markupRules.link[2];
   
  +	// handle external links
  +	if (this.looks_like_a_url(href)) {
  +		before = this.config.markupRules.www[1];
  +		after = this.config.markupRules.www[2];
  +	}
  +	
       this.assert_space_or_newline();
       if (! href) {
           this.appendOutput(label);
  
  
  
  1.2       +50 -4     moniwiki/local/Wikiwyg/lib/Wikiwyg/Wysiwyg.js
  
  Index: Wysiwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/lib/Wikiwyg/Wysiwyg.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Wysiwyg.js	1 Feb 2006 08:20:10 -0000	1.1
  +++ Wysiwyg.js	1 Aug 2006 15:47:30 -0000	1.2
  @@ -46,7 +46,7 @@
       this.set_design_mode_early();
   }
   
  -proto.set_design_mode_early = function() { // Se IE, below
  +proto.set_design_mode_early = function() { // See IE, below
       // Unneeded for Gecko
   }
   
  @@ -69,7 +69,7 @@
   }
   
   proto.enableThis = function() {
  -    this.superfunc('enableThis').call(this);
  +    Wikiwyg.Mode.prototype.enableThis.call(this);
       this.edit_iframe.style.border = '1px black solid';
       this.edit_iframe.width = '100%';
       this.setHeightOf(this.edit_iframe);
  @@ -123,7 +123,7 @@
       this.get_edit_document().body.innerHTML = html;
   }
   
  -proto.apply_stylesheets = function(styles) {
  +proto.apply_stylesheets = function() {
       var styles = document.styleSheets;
       var head   = this.get_edit_document().getElementsByTagName("head")[0];
   
  @@ -139,7 +139,45 @@
   }
   
   proto.apply_inline_stylesheet = function(style, head) {
  -    // TODO: figure this out
  +    var style_string = "";
  +    for ( var i = 0 ; i < style.cssRules.length ; i++ ) {
  +        if ( style.cssRules[i].type == 3 ) {
  +            // IMPORT_RULE
  +
  +            /* It's pretty strange that this doesnt work.
  +               That's why Ajax.get() is used to retrive the css text.
  +               
  +            this.apply_linked_stylesheet({
  +                href: style.cssRules[i].href,
  +                type: 'text/css'
  +            }, head);
  +            */
  +            
  +            style_string += Ajax.get(style.cssRules[i].href);
  +        } else {
  +            style_string += style.cssRules[i].cssText + "\n";
  +        }
  +    }
  +    if (style_string.length > 0) {
  +        style_string += "\nbody { padding: 5px; }\n";
  +        this.append_inline_style_element(style_string, head);
  +    }
  +}
  +
  +proto.append_inline_style_element = function(style_string, head) {
  +    // Add a body padding so words are not touching borders.
  +    var style_elt = document.createElement("style");
  +    style_elt.setAttribute("type", "text/css");
  +    if ( style_elt.styleSheet ) { /* IE */
  +        style_elt.styleSheet.cssText = style_string;
  +    }
  +    else { /* w3c */
  +        var style_text = document.createTextNode(style_string);
  +        style_elt.appendChild(style_text);
  +        head.appendChild(style_elt);
  +    }
  +    // XXX This doesn't work in IE!!
  +    // head.appendChild(style_elt);
   }
   
   proto.should_link_stylesheet = function(style, head) {
  @@ -244,6 +282,14 @@
       this.exec_command('createlink', url);
   }
   
  +proto.do_www = function() {
  +    var selection = this.get_link_selection_text();
  +	if (selection != null) {
  +		var  url =  prompt("Please enter a link", "Type in your link here");
  +		this.exec_command('createlink', url);
  +	}
  +}
  +
   proto.get_selection_text = function() { // See IE, below
       return this.get_edit_window().getSelection().toString();
   }
  
  
  
  1.1                  moniwiki/local/Wikiwyg/lib/Wikiwyg/Util.js
  
  Index: Util.js
  ===================================================================
  function addEvent(name, func) {
      if (window.addEventListener) {
          name = name.replace(/^on/, '');
          window.addEventListener(name, func, false);
      }
      else if (window.attachEvent) {
          window.attachEvent(name, func);
      }
  }
  
  function grepElementsByTag(tag, func) {
      var elements = document.getElementsByTagName(tag);
      var list = [];
      for (var i = 0; i < elements.length; i++) {
          var element = elements[i];
          if (func(element)) {
              list.push(element);
          }
      }
      return list;
  }
  
  // getStyle()
  // http://www.robertnyman.com/2006/04/24/get-the-rendered-style-of-an-element/
  function getStyle(oElm, strCssRule) {
      var strValue = "";
      if(document.defaultView && document.defaultView.getComputedStyle){
          strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
      }
      else if(oElm.currentStyle){
          strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){
              return p1.toUpperCase();
          });
          strValue = oElm.currentStyle[strCssRule];
      }
      return strValue;
  }
  //------------------------------------------------------------------------------
  
  Cookie = {};
  
  Cookie.get = function(name) {
      var cookieStart = document.cookie.indexOf(name + "=")
      if (cookieStart == -1) return null
      var valueStart = document.cookie.indexOf('=', cookieStart) + 1
      var valueEnd = document.cookie.indexOf(';', valueStart);
      if (valueEnd == -1) valueEnd = document.cookie.length
      var val = document.cookie.substring(valueStart, valueEnd);
      return val == null
          ? null
          : unescape(document.cookie.substring(valueStart, valueEnd))
  }
  
  Cookie.set = function(name, val, expiration) {
      // Default to 25 year expiry if not specified by the caller.
      if (typeof(expiration) == 'undefined')
          expiration = new Date(
              new Date().getTime() + 25 * 365 * 24 * 60 * 60 * 1000
          )
      var str = name + '=' + escape(val) + '; expires=' + expiration.toGMTString()
      document.cookie = str;
  }
  
  Cookie.del = function(name) {
      Cookie.set(name, '', new Date(new Date().getTime() - 1));
  }
  
  //------------------------------------------------------------------------------
  
  // XXX Move Wait into Wikiwyg.Util
  if ( typeof Wait == 'undefined' ) {
      Wait = {}
  }
  
  Wait.VERSION = 0.01;
  Wait.EXPORT  = [ 'wait' ];
  Wait.EXPORT_TAGS = { ':all': Wait.EXPORT };
  
  Wait.interval = 100;
  
  Wait.wait = function(arg1, arg2, arg3, arg4) {
      if (   typeof arg1 == 'function'
          && typeof arg2 == 'function'
          && typeof arg3 == 'function'
          ) {
              return Wait._wait3(arg1, arg2, arg3, arg4);
          }
  
      if (   typeof arg1 == 'function'
          && typeof arg2 == 'function'
          ) {
              return Wait._wait2(arg1, arg2, arg3);
          }
  }
  
  Wait._wait2 = function(test, callback, max) {
      Wait._wait3(test, callback, function(){}, max);
  }
  
  Wait._wait3 = function(test, callback, failed_callback ,max) {
      var func = function() {
          var interval = Wait.interval;
          var time_elapsed = 0;
          var intervalId;
          var check_and_callback = function () {
              if ( test() ) {
                  callback();
                  clearInterval(intervalId);
              }
              time_elapsed += interval;
              if ( typeof max == 'number' ) {
                  if ( time_elapsed >= max ) {
                      if ( typeof failed_callback == 'function')
                          failed_callback();
                      clearInterval(intervalId);
                  }
              }
          }
          intervalId = setInterval(check_and_callback, interval );
      }
      func();
  }
  
  // Manually export the wait() function.
  window.wait = Wait.wait;
  
  
  //------------------------------------------------------------------------------
  // Ajax support
  //------------------------------------------------------------------------------
  if (! this.Ajax) Ajax = {};
  
  Ajax.get = function(url, callback) {
      var req = new XMLHttpRequest();
      req.open('GET', url, Boolean(callback));
      return Ajax._send(req, null, callback);
  }
  
  Ajax.post = function(url, data, callback) {
      var req = new XMLHttpRequest();
      req.open('POST', url, Boolean(callback));
      req.setRequestHeader(
          'Content-Type', 
          'application/x-www-form-urlencoded'
      );
      return Ajax._send(req, data, callback);
  }
  
  Ajax._send = function(req, data, callback) {
      if (callback) {
          req.onreadystatechange = function() {
              if (req.readyState == 4) {
                  if(req.status == 200)
                      callback(req.responseText);
              }
          };
      }
      req.send(data);
      if (!callback) {
          if (req.status != 200)
              throw('Request for "' + url +
                    '" failed with status: ' + req.status);
          return req.responseText;
      }
  }
  
  //------------------------------------------------------------------------------
  // Cross-Browser XMLHttpRequest v1.1
  //------------------------------------------------------------------------------
  /*
  Emulate Gecko 'XMLHttpRequest()' functionality in IE and Opera. Opera requires
  the Sun Java Runtime Environment <http://www.java.com/>.
  
  by Andrew Gregory
  http://www.scss.com.au/family/andrew/webdesign/xmlhttprequest/
  
  This work is licensed under the Creative Commons Attribution License. To view a
  copy of this license, visit http://creativecommons.org/licenses/by/1.0/ or send
  a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305,
  USA.
  */
  
  // IE support
  if (window.ActiveXObject && !window.XMLHttpRequest) {
    window.XMLHttpRequest = function() {
      return new ActiveXObject((navigator.userAgent.toLowerCase().indexOf('msie 5') != -1) ? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP');
    };
  }
  
  // Opera support
  if (window.opera && !window.XMLHttpRequest) {
    window.XMLHttpRequest = function() {
      this.readyState = 0; // 0=uninitialized,1=loading,2=loaded,3=interactive,4=complete
      this.status = 0; // HTTP status codes
      this.statusText = '';
      this._headers = [];
      this._aborted = false;
      this._async = true;
      this.abort = function() {
        this._aborted = true;
      };
      this.getAllResponseHeaders = function() {
        return this.getAllResponseHeader('*');
      };
      this.getAllResponseHeader = function(header) {
        var ret = '';
        for (var i = 0; i < this._headers.length; i++) {
          if (header == '*' || this._headers[i].h == header) {
            ret += this._headers[i].h + ': ' + this._headers[i].v + '\n';
          }
        }
        return ret;
      };
      this.setRequestHeader = function(header, value) {
        this._headers[this._headers.length] = {h:header, v:value};
      };
      this.open = function(method, url, async, user, password) {
        this.method = method;
        this.url = url;
        this._async = true;
        this._aborted = false;
        if (arguments.length >= 3) {
          this._async = async;
        }
        if (arguments.length > 3) {
          // user/password support requires a custom Authenticator class
          opera.postError('XMLHttpRequest.open() - user/password not supported');
        }
        this._headers = [];
        this.readyState = 1;
        if (this.onreadystatechange) {
          this.onreadystatechange();
        }
      };
      this.send = function(data) {
        if (!navigator.javaEnabled()) {
          alert("XMLHttpRequest.send() - Java must be installed and enabled.");
          return;
        }
        if (this._async) {
          setTimeout(this._sendasync, 0, this, data);
          // this is not really asynchronous and won't execute until the current
          // execution context ends
        } else {
          this._sendsync(data);
        }
      }
      this._sendasync = function(req, data) {
        if (!req._aborted) {
          req._sendsync(data);
        }
      };
      this._sendsync = function(data) {
        this.readyState = 2;
        if (this.onreadystatechange) {
          this.onreadystatechange();
        }
        // open connection
        var url = new java.net.URL(new java.net.URL(window.location.href), this.url);
        var conn = url.openConnection();
        for (var i = 0; i < this._headers.length; i++) {
          conn.setRequestProperty(this._headers[i].h, this._headers[i].v);
        }
        this._headers = [];
        if (this.method == 'POST') {
          // POST data
          conn.setDoOutput(true);
          var wr = new java.io.OutputStreamWriter(conn.getOutputStream());
          wr.write(data);
          wr.flush();
          wr.close();
        }
        // read response headers
        // NOTE: the getHeaderField() methods always return nulls for me :(
        var gotContentEncoding = false;
        var gotContentLength = false;
        var gotContentType = false;
        var gotDate = false;
        var gotExpiration = false;
        var gotLastModified = false;
        for (var i = 0; ; i++) {
          var hdrName = conn.getHeaderFieldKey(i);
          var hdrValue = conn.getHeaderField(i);
          if (hdrName == null && hdrValue == null) {
            break;
          }
          if (hdrName != null) {
            this._headers[this._headers.length] = {h:hdrName, v:hdrValue};
            switch (hdrName.toLowerCase()) {
              case 'content-encoding': gotContentEncoding = true; break;
              case 'content-length'  : gotContentLength   = true; break;
              case 'content-type'    : gotContentType     = true; break;
              case 'date'            : gotDate            = true; break;
              case 'expires'         : gotExpiration      = true; break;
              case 'last-modified'   : gotLastModified    = true; break;
            }
          }
        }
        // try to fill in any missing header information
        var val;
        val = conn.getContentEncoding();
        if (val != null && !gotContentEncoding) this._headers[this._headers.length] = {h:'Content-encoding', v:val};
        val = conn.getContentLength();
        if (val != -1 && !gotContentLength) this._headers[this._headers.length] = {h:'Content-length', v:val};
        val = conn.getContentType();
        if (val != null && !gotContentType) this._headers[this._headers.length] = {h:'Content-type', v:val};
        val = conn.getDate();
        if (val != 0 && !gotDate) this._headers[this._headers.length] = {h:'Date', v:(new Date(val)).toUTCString()};
        val = conn.getExpiration();
        if (val != 0 && !gotExpiration) this._headers[this._headers.length] = {h:'Expires', v:(new Date(val)).toUTCString()};
        val = conn.getLastModified();
        if (val != 0 && !gotLastModified) this._headers[this._headers.length] = {h:'Last-modified', v:(new Date(val)).toUTCString()};
        // read response data
        var reqdata = '';
        var stream = conn.getInputStream();
        if (stream) {
          var reader = new java.io.BufferedReader(new java.io.InputStreamReader(stream));
          var line;
          while ((line = reader.readLine()) != null) {
            if (this.readyState == 2) {
              this.readyState = 3;
              if (this.onreadystatechange) {
                this.onreadystatechange();
              }
            }
            reqdata += line + '\n';
          }
          reader.close();
          this.status = 200;
          this.statusText = 'OK';
          this.responseText = reqdata;
          this.readyState = 4;
          if (this.onreadystatechange) {
            this.onreadystatechange();
          }
          if (this.onload) {
            this.onload();
          }
        } else {
          // error
          this.status = 404;
          this.statusText = 'Not Found';
          this.responseText = '';
          this.readyState = 4;
          if (this.onreadystatechange) {
            this.onreadystatechange();
          }
          if (this.onerror) {
            this.onerror();
          }
        }
      };
    };
  }
  // ActiveXObject emulation
  if (!window.ActiveXObject && window.XMLHttpRequest) {
    window.ActiveXObject = function(type) {
      switch (type.toLowerCase()) {
        case 'microsoft.xmlhttp':
        case 'msxml2.xmlhttp':
          return new XMLHttpRequest();
      }
      return null;
    };
  }
  
  
  //------------------------------------------------------------------------------
  // JSON Support
  //------------------------------------------------------------------------------
  
  /*
  Copyright (c) 2005 JSON.org
  */
  var JSON = function () {
      var m = {
              '\b': '\\b',
              '\t': '\\t',
              '\n': '\\n',
              '\f': '\\f',
              '\r': '\\r',
              '"' : '\\"',
              '\\': '\\\\'
          },
          s = {
              'boolean': function (x) {
                  return String(x);
              },
              number: function (x) {
                  return isFinite(x) ? String(x) : 'null';
              },
              string: function (x) {
                  if (/["\\\x00-\x1f]/.test(x)) {
                      x = x.replace(/([\x00-\x1f\\"])/g, function(a, b) {
                          var c = m[b];
                          if (c) {
                              return c;
                          }
                          c = b.charCodeAt();
                          return '\\u00' +
                              Math.floor(c / 16).toString(16) +
                              (c % 16).toString(16);
                      });
                  }
                  return '"' + x + '"';
              },
              object: function (x) {
                  if (x) {
                      var a = [], b, f, i, l, v;
                      if (x instanceof Array) {
                          a[0] = '[';
                          l = x.length;
                          for (i = 0; i < l; i += 1) {
                              v = x[i];
                              f = s[typeof v];
                              if (f) {
                                  v = f(v);
                                  if (typeof v == 'string') {
                                      if (b) {
                                          a[a.length] = ',';
                                      }
                                      a[a.length] = v;
                                      b = true;
                                  }
                              }
                          }
                          a[a.length] = ']';
                      } else if (x instanceof Object) {
                          a[0] = '{';
                          for (i in x) {
                              v = x[i];
                              f = s[typeof v];
                              if (f) {
                                  v = f(v);
                                  if (typeof v == 'string') {
                                      if (b) {
                                          a[a.length] = ',';
                                      }
                                      a.push(s.string(i), ':', v);
                                      b = true;
                                  }
                              }
                          }
                          a[a.length] = '}';
                      } else {
                          return;
                      }
                      return a.join('');
                  }
                  return 'null';
              }
          };
      return {
          copyright: '(c)2005 JSON.org',
          license: 'http://www.crockford.com/JSON/license.html',
          stringify: function (v) {
              var f = s[typeof v];
              if (f) {
                  v = f(v);
                  if (typeof v == 'string') {
                      return v;
                  }
              }
              return null;
          },
          parse: function (text) {
              try {
                  return !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(
                          text.replace(/"(\\.|[^"\\])*"/g, ''))) &&
                      eval('(' + text + ')');
              } catch (e) {
                  return false;
              }
          }
      };
  }();
  
  
  


wkpark      2006/08/02 00:51:55

  Modified:    local    moniwyg.js
  Log:
  small fixes for IE and opera
  
  Revision  Changes    Path
  1.7       +42 -34    moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- moniwyg.js	25 Feb 2006 07:21:30 -0000	1.6
  +++ moniwyg.js	1 Aug 2006 15:51:55 -0000	1.7
  @@ -1,10 +1,16 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.6 2006/02/25 07:21:30 wkpark Exp $
  +// $Id: moniwyg.js,v 1.7 2006/08/01 15:51:55 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  +Wikiwyg.browserIsSupported = (
  +    Wikiwyg.is_gecko ||
  +    Wikiwyg.is_ie ||
  +    Wikiwyg.is_opera
  +);
  +
   Wikiwyg.prototype.saveChanges = function() {
       var self = this;
       var myWikiwyg = new Wikiwyg.Wikitext();
  @@ -68,7 +74,8 @@
       dom.innerHTML = form;
   
       var form = dom.getElementsByTagName('form')[0];
  -    var wikitext = form.savetext.value;
  +    var text = dom.getElementsByTagName('textarea')[0];
  +    var wikitext = text.value;
       this.mylocation = form.getAttribute('action');
   
       this.current_mode = this.first_mode;
  @@ -89,12 +96,11 @@
   proto = Wikiwyg.Wysiwyg.prototype;
   
   proto.enableThis = function() {
  -    this.superfunc('enableThis').call(this);
  +    Wikiwyg.Mode.prototype.enableThis.call(this);
       this.edit_iframe.style.border = '1px black solid';
       this.edit_iframe.width = '100%';
       this.setHeightOf(this.edit_iframe);
       this.fix_up_relative_imgs();
  -    this.get_edit_document().designMode = 'on';
       // XXX - Doing stylesheets in initializeObject might get rid of blue flash
       this.apply_stylesheets();
       //
  @@ -108,7 +114,10 @@
       if (location.port) loc += ':' + location.port;
       link.setAttribute('href',
           loc + _url_prefix + '/local/Wikiwyg/css/wysiwyg.css');
  +
       head.appendChild(link);
  +    this.fix_up_relative_imgs();
  +    this.get_edit_document().designMode = 'on';
       this.enable_keybindings();
       this.clear_inner_html();
   }
  @@ -180,7 +189,7 @@
           var style = element.getAttribute('style');
           var width = element.getAttribute('width');
           var height = element.getAttribute('height');
  -        var class = element.getAttribute('class');
  +        var myclass = element.getAttribute('class');
   
           this.assert_space_or_newline();
           this.appendOutput(uri);
  @@ -194,8 +203,8 @@
               if (m[2]) attr+=(attr ? '&':'') + 'height='+m[2];
           }
   
  -        if (class) {
  -            var m = class.match(/img(Center|Left|Right)$/);
  +        if (myclass) {
  +            var m = myclass.match(/img(Center|Left|Right)$/);
               if (m[1]) attr+=(attr ? '&':'') + 'align='+m[1].toLowerCase();
           }
   
  @@ -707,7 +716,6 @@
           loading.setAttribute('class','ajaxLoading');
           loading.src=_url_prefix + '/imgs/loading.gif';
           obj.parentNode.replaceChild(loading,obj);
  -        //alert('loading...');
           var form=HTTPGet(href);
           loading.parentNode.replaceChild(saved,loading);
   
  @@ -717,35 +725,35 @@
                   toolbar: {
                       imagesLocation:
                           _url_prefix + '/local/Wikiwyg/moni/images/',
  -                imagesExtension: '.png'
  -            },
  -            wikitext: {
  -                supportCamelCaseLinks: true
  -            },
  -            modeClasses: [
  -                'Wikiwyg.Wikitext',
  -                'Wikiwyg.Wysiwyg',
  -                'Wikiwyg.HTML',
  -                'Wikiwyg.Preview',
  -            ]
  -        }
  -        //var div = document.createElement('div');
  -        //div.setAttribute('class', 'wikiwyg_area');
  -
  -        //sec.parentNode.appendChild(div);
  -
  -        var myWikiwyg = new Wikiwyg();
  -        //myWikiwyg.createWikiwygArea(div, myConfig);
  -        myWikiwyg.createWikiwygArea(sec.parentNode, myConfig);
  -        wikiwygs.push(myWikiwyg);
  -        myWikiwyg.editMode(form);
  -        //myWikiwyg.textarea.value = wikitext;
  -        //alert(sec.parentNode.innerHTML);
  +                    imagesExtension: '.png'
  +                },
  +                wikitext: {
  +                    supportCamelCaseLinks: true
  +                },
  +                modeClasses: [
  +                    'Wikiwyg.Wikitext',
  +                    'Wikiwyg.Wysiwyg',
  +                    'Wikiwyg.Preview',
  +                    'Wikiwyg.HTML',
  +                ]
  +            };
  +            //var div = document.createElement('div');
  +            //div.setAttribute('class', 'wikiwyg_area');
  +            //sec.parentNode.appendChild(div);
  +
  +            var myWikiwyg = new Wikiwyg();
  +            //myWikiwyg.createWikiwygArea(div, myConfig);
  +            myWikiwyg.createWikiwygArea(sec.parentNode, myConfig);
  +            //myWikiwyg.createWikiwygArea(sec, myConfig);
  +            wikiwygs.push(myWikiwyg);
  +            myWikiwyg.editMode(form);
  +            //myWikiwyg.textarea.value = wikitext;
   
  -        //var f=document.createElement('div');
  -        //f.setAttribute('id','editSect-'+sect);
  +            //var f=document.createElement('div');
  +            //f.setAttribute('id','editSect-'+sect);
           }
       }
  +    return;
   }
   
   function savePage(obj) {
  
  
  


wkpark      2006/08/03 12:54:26

  Modified:    local    moniwyg.js
  Log:
  IE hacks. WikiWyg works with IE and opera !
  
  Revision  Changes    Path
  1.8       +60 -31    moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- moniwyg.js	1 Aug 2006 15:51:55 -0000	1.7
  +++ moniwyg.js	3 Aug 2006 03:54:26 -0000	1.8
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.7 2006/08/01 15:51:55 wkpark Exp $
  +// $Id: moniwyg.js,v 1.8 2006/08/03 03:54:26 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -90,36 +90,59 @@
       }
       this.toolbarObject.resetModeSelector();
       this.current_mode.enableThis();
  +    this.current_mode.enableThis(); // hack !!
       this.myinput=dom.getElementsByTagName('input');
   }
   
   proto = Wikiwyg.Wysiwyg.prototype;
   
  +proto.get_edit_iframe = function() {
  +    var iframe;
  +    if (this.config.iframeId) {
  +        iframe = document.getElementById(this.config.iframeId);
  +        iframe.iframe_hack = true;
  +    }
  +    else if (this.config.iframeObject) {
  +        iframe = this.config.iframeObject;
  +        iframe.iframe_hack = true;
  +    }
  +    else {
  +        // XXX iframe need to be a element of the body.
  +        iframe = document.createElement('iframe');
  +        var body = document.getElementsByTagName('body')[0];;
  +        body.appendChild(iframe);
  +    }
  +    return iframe;
  +}
  +
   proto.enableThis = function() {
       Wikiwyg.Mode.prototype.enableThis.call(this);
       this.edit_iframe.style.border = '1px black solid';
       this.edit_iframe.width = '100%';
       this.setHeightOf(this.edit_iframe);
  -    this.fix_up_relative_imgs();
  +    this.get_edit_document().designMode = 'on';
  +    this.enable_keybindings();
       // XXX - Doing stylesheets in initializeObject might get rid of blue flash
  -    this.apply_stylesheets();
       //
       var doc    = this.get_edit_document();
       var head   = doc.getElementsByTagName("head")[0];
  -    var link = doc.createElement('link');
  -    link.setAttribute('rel', 'STYLESHEET');
  -    link.setAttribute('type', 'text/css');
  -    link.setAttribute('media', 'screen');
  -    var loc = location.protocol + '//' + location.host;
  -    if (location.port) loc += ':' + location.port;
  -    link.setAttribute('href',
  -        loc + _url_prefix + '/local/Wikiwyg/css/wysiwyg.css');
  -
  -    head.appendChild(link);
  -    this.fix_up_relative_imgs();
  -    this.get_edit_document().designMode = 'on';
  -    this.enable_keybindings();
  -    this.clear_inner_html();
  +    if (head != null) {
  +        var styles = doc.styleSheets;
  +        if (styles.length == 0) {
  +            this.apply_stylesheets();
  +            var link = doc.createElement('link');
  +            link.setAttribute('rel', 'STYLESHEET');
  +            link.setAttribute('type', 'text/css');
  +            link.setAttribute('media', 'screen');
  +            var loc = location.protocol + '//' + location.host;
  +            if (location.port) loc += ':' + location.port;
  +            link.setAttribute('href',
  +                loc + _url_prefix + '/local/Wikiwyg/css/wysiwyg.css');
  +            head.appendChild(link);
  +        }
  +        this.fix_up_relative_imgs();
  +        this.clear_inner_html();
  +    }
   }
   
   proto.do_link = function() {
  @@ -145,29 +168,34 @@
       html = html.replace(/<!-=-/g, '<!--').
                   replace(/-=->/g, '-->');
   
  +    // Opera note: opera internally use upper case tag names.
  +    //  e.g.) <A class=..></A> <IMG src=..
  +    // IE note: IE does not quote some attributes, class,title,etc.
  +    //
       // for MoniWiki
       // remove perma icons
  -    html = html.replace(/<a class=.perma..*\/a>/g, '');
  +    html = html.replace(/<a class=.?perma.?.*\/a>/g, '');
       // interwiki links
       // remove interwiki icons
       html =
  -        html.replace(/<a class=.interwiki.[^>]+><img [^>]+><\/a><a [^>]+title=(\'|\")([^\'\"]+)\1>[^<]+<\/a>/g, "$2");
  -    //html =
  -    //html.replace(/<a [^>]+title=(\'|\")([^\'\"]+)\1>[^<]+<\/a>/g, "**$2");
  +        html.replace(/<a class=.?interwiki.?[^>]+><img [^>]+><\/a><a [^>]*title=(\'|\")?([^\'\" ]+)\1?[^>]*>[^<]+<\/a>/ig, "$2");
       html =
  -        html.replace(/<img class=.(url|externalLink).[^>]+>/g, '');
  +        html.replace(/<img class=.?(url|externalLink).?[^>]+>/ig, '');
       // smiley/inline tex etc.
       html =
  -        html.replace(/<img [^>]*class=.(tex|interwiki|smiley).[^>]* alt=(.)([^\'\"]+)\2[^>]+>/g, "$3");
  +        html.replace(/<img [^>]*class=.?(tex|interwiki|smiley).?[^>]* alt=(\'|\")?([^\'\" ]+)\2?[^>]+>/ig, "$3");
       // interwiki links
       html =
  -        html.replace(/<a [^>]+ alt=(.)([^\'\"]+)\1[^>]+>/gm, "$2");
  +        html.replace(/<a [^>]*alt=(.)?([^\'\"]+)\1?[^>]*>/igm, "$2");
       // remove nonexists links
  -    html = html.replace(/<a class=.nonexistent.[^>]+>([^<]+)<\/a>/gm, "$1");
  +    html = html.replace(/<a class=.?nonexistent.?[^>]+>([^<]+)<\/a>/igm, "$1");
   
       // remove toc number
  -    html = html.replace(/<span class=.tocnumber.>(.*)<\/span>/gm, '');
  +    html = html.replace(/<span class=.?tocnumber.?>(.*)<\/span>/igm, '');
   
  +    // remove all links XXX
  +    html =
  +        html.replace(/<a [^>]+>([^>]+)<\/a>/ig, "$1");
       //
       dom.innerHTML = html;
       this.output = [];
  @@ -197,7 +225,7 @@
           if (width) attr+='width='+width;
           if (height) attr+=(attr ? '&':'') + 'height='+height;
   
  -        if (style) {
  +        if (style.match) {
               var m = style.match(/width:\s*(\d+)px;\s*height:\s*(\d+)px/);
               if (m[1]) attr+=(attr ? '&':'') + 'width='+m[1];
               if (m[2]) attr+=(attr ? '&':'') + 'height='+m[2];
  @@ -360,7 +388,7 @@
       'indent', 'outdent', '|',
       'quote', '|',
       'image',
  -    'media',
  +    'media'
   ];
   
   proto.config.controlLabels.math = 'Math';
  @@ -728,13 +756,14 @@
                       imagesExtension: '.png'
                   },
                   wikitext: {
  -                    supportCamelCaseLinks: true
  +                    supportCamelCaseLinks: true,
  +                    javascriptLocation: _url_prefix + '/local/Wikiwyg/lib/'
                   },
                   modeClasses: [
  -                    'Wikiwyg.Wikitext',
                       'Wikiwyg.Wysiwyg',
  +                    'Wikiwyg.Wikitext',
                       'Wikiwyg.Preview',
  -                    'Wikiwyg.HTML',
  +                    'Wikiwyg.HTML'
                   ]
               };
               //var div = document.createElement('div');
  
  
  


wkpark      2006/08/03 12:55:16

  Modified:    local/Wikiwyg/lib/Wikiwyg Toolbar.js
  Log:
  fix for opera: do not set checkbox.
  
  Revision  Changes    Path
  1.3       +2 -2      moniwiki/local/Wikiwyg/lib/Wikiwyg/Toolbar.js
  
  Index: Toolbar.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/lib/Wikiwyg/Toolbar.js,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Toolbar.js	1 Aug 2006 15:47:30 -0000	1.2
  +++ Toolbar.js	3 Aug 2006 03:55:16 -0000	1.3
  @@ -214,8 +214,8 @@
                   type: 'radio',
                   name: radio_name,
                   id: radio_id,
  -                value: mode_object.classname,
  -                'checked': checked
  +                value: mode_object.classname
  +                /* 'checked': checked */
               }
           );
           if (!this.firstModeRadio)
  
  
  


wkpark      2006/08/03 20:57:07

  Modified:    .        wikilib.php
  Log:
  extracted pagelist plugin
  
  Revision  Changes    Path
  1.215     +1 -78     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.214
  retrieving revision 1.215
  diff -u -r1.214 -r1.215
  --- wikilib.php	1 Aug 2006 13:24:47 -0000	1.214
  +++ wikilib.php	3 Aug 2006 11:57:07 -0000	1.215
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.214 2006/08/01 13:24:47 wkpark Exp $
  +// $Id: wikilib.php,v 1.215 2006/08/03 11:57:07 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2085,83 +2085,6 @@
     return $DBInfo->getCounter();
   }
   
  -
  -function macro_PageList($formatter,$arg="") {
  -  global $DBInfo;
  -
  -  preg_match("/([^,]*)(\s*,\s*)?(.*)?$/",$arg,$match);
  -  if ($match[1]=='date') {
  -    $options['date']=1;
  -    $arg='';
  -  } else if ($match) {
  -    $arg=$match[1];
  -    $options=array();
  -    if ($match[3]) $options=explode(",",$match[3]);
  -    if (in_array('date',$options)) $options['date']=1;
  -    else if ($arg and (in_array('metawiki',$options) or in_array('m',$options)))
  -      $options['metawiki']=1;
  -  }
  -  $needle=_preg_search_escape($arg);
  -
  -  $test=@preg_match("/$needle/","",$match);
  -  if ($test === false) {
  -    # show error message
  -    return "[[PageList(<font color='red'>Invalid \"$arg\"</font>)]]";
  -  }
  -
  -  if ($options['date']) {
  -    $user=new User(); # get from COOKIE VARS
  -    if ($user->id != 'Anonymous') {
  -      $udb=new UserDB($DBInfo);
  -      $udb->checkUser($user);
  -      $tz_offset=$user->info['tz_offset'];
  -    } else {
  -      $tz_offset=date('Z');
  -    }
  -    $all_pages = $DBInfo->getPageLists($options);
  -  } else {
  -    if ($options['metawiki'])
  -      $all_pages = $DBInfo->metadb->getLikePages($needle);
  -    else
  -      $all_pages = $DBInfo->getPageLists();
  -#     $all_pages= array_unique(array_merge($meta_pages,$all_pages));
  -  }
  -#  $all_pages = $DBInfo->getPageLists($options);
  -
  -#  print_r($all_pages);
  -
  -  $hits=array();
  -
  -  if ($options['date']) {
  -    if ($needle) {
  -      while (list($pagename,$mtime) = @each ($all_pages)) {
  -        preg_match("/$needle/",$pagename,$matches);
  -        if ($matches) $hits[$pagename]=$mtime;
  -      }
  -    } else $hits=$all_pages;
  -    arsort($hits);
  -    while (list($pagename,$mtime) = @each ($hits)) {
  -      $out.= '<li>'.$formatter->link_tag(_rawurlencode($pagename),"",
  -	htmlspecialchars($pagename)).
  -	". . . . [".gmdate("Y-m-d",$mtime+$tz_offset)."]</li>\n";
  -    }
  -    $out="<ol>\n".$out."</ol>\n";
  -  } else {
  -    foreach ($all_pages as $page) {
  -      preg_match("/$needle/",$page,$matches);
  -      if ($matches) $hits[]=$page;
  -    }
  -    sort($hits);
  -    foreach ($hits as $pagename) {
  -      $out.= '<li>' . $formatter->link_tag(_rawurlencode($pagename),"",
  -	htmlspecialchars($pagename))."</li>\n";
  -    }
  -    $out="<ul>\n".$out."</ul>\n";
  -  }
  -
  -  return $out;
  -}
  -
   function macro_TitleIndex($formatter,$value) {
     global $DBInfo;
   
  
  
  


wkpark      2006/08/03 20:57:07

  Added:       plugin   pagelist.php
  Log:
  extracted pagelist plugin
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/pagelist.php
  
  Index: pagelist.php
  ===================================================================
  <?php
  function macro_PageList($formatter,$arg="") {
    global $DBInfo;
  
    preg_match("/([^,]*)(\s*,\s*)?(.*)?$/",$arg,$match);
    if ($match[1]=='date') {
      $options['date']=1;
      $arg='';
    } else if ($match) {
      $arg=$match[1];
      $options=array();
      if ($match[3]) $options=explode(",",$match[3]);
      if (in_array('date',$options)) $options['date']=1;
      else if ($arg and (in_array('metawiki',$options) or in_array('m',$options)))
        $options['metawiki']=1;
    }
    $needle=_preg_search_escape($arg);
  
    $test=@preg_match("/$needle/","",$match);
    if ($test === false) {
      # show error message
      return "[[PageList(<font color='red'>Invalid \"$arg\"</font>)]]";
    }
  
    if ($options['date']) {
      $user=new User(); # get from COOKIE VARS
      if ($user->id != 'Anonymous') {
        $udb=new UserDB($DBInfo);
        $udb->checkUser($user);
        $tz_offset=$user->info['tz_offset'];
      } else {
        $tz_offset=date('Z');
      }
      $all_pages = $DBInfo->getPageLists($options);
    } else {
      if ($options['metawiki'])
        $all_pages = $DBInfo->metadb->getLikePages($needle);
      else
        $all_pages = $DBInfo->getPageLists();
  #     $all_pages= array_unique(array_merge($meta_pages,$all_pages));
    }
  #  $all_pages = $DBInfo->getPageLists($options);
  
  #  print_r($all_pages);
  
    $hits=array();
  
    if ($options['date']) {
      if ($needle) {
        while (list($pagename,$mtime) = @each ($all_pages)) {
          preg_match("/$needle/",$pagename,$matches);
          if ($matches) $hits[$pagename]=$mtime;
        }
      } else $hits=$all_pages;
      arsort($hits);
      while (list($pagename,$mtime) = @each ($hits)) {
        $out.= '<li>'.$formatter->link_tag(_rawurlencode($pagename),"",
  	htmlspecialchars($pagename)).
  	". . . . [".gmdate("Y-m-d",$mtime+$tz_offset)."]</li>\n";
      }
      $out="<ol>\n".$out."</ol>\n";
    } else {
      foreach ($all_pages as $page) {
        preg_match("/$needle/",$page,$matches);
        if ($matches) $hits[]=$page;
      }
      sort($hits);
      foreach ($hits as $pagename) {
        $out.= '<li>' . $formatter->link_tag(_rawurlencode($pagename),"",
  	htmlspecialchars($pagename))."</li>\n";
      }
      $out="<ul>\n".$out."</ul>\n";
    }
  
    return $out;
  }
  
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2006/08/03 21:38:59

  Modified:    .        wiki.php
  Log:
  fixed getPlugin() behavior to compatible with old versions
  set the macro ID counter for the Rating macro,Comment macro etc.
  
  Revision  Changes    Path
  1.327     +23 -2     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.326
  retrieving revision 1.327
  diff -u -r1.326 -r1.327
  --- wiki.php	1 Aug 2006 13:23:46 -0000	1.326
  +++ wiki.php	3 Aug 2006 12:38:59 -0000	1.327
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.326 2006/08/01 13:23:46 wkpark Exp $
  +// $Id: wiki.php,v 1.327 2006/08/03 12:38:59 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.326 $',1,-1);
  +$_revision = substr('$Revision: 1.327 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -31,6 +31,22 @@
     global $DBInfo;
   
     $cp=new Cache_text('settings');
  +  if (!$DBInfo->manual_plugin_admin) {
  +    if ($DBInfo->include_path)
  +      $dirs=explode(':',$DBInfo->include_path);
  +    else
  +      $dirs=array('.');
  +    $updated=false;
  +    $mt=$cp->mtime('plugins');
  +    foreach ($dirs as $d) {
  +      $ct=filemtime($d.'/plugin/.');
  +      $updated=$ct > $mt ? true:$updated;
  +    }
  +    if ($updated) {
  +      $cp->remove('plugins');
  +      $cp->remove('processors');
  +    }
  +  }
   
     if ($cp->exists('plugins')) {
       $plugins=unserialize($cp->fetch('plugins'));
  @@ -2387,6 +2403,9 @@
     }
   
     function macro_repl($macro,$value='',$options='') {
  +    // macro ID
  +    $this->mid=!empty($this->mid) ? ++$this->mid:1;
  +
       preg_match("/^([A-Za-z]+)(\((.*)\))?$/",$macro,$match);
       if (!$match) return $this->word_repl($macro);
       $bra='';$ket='';
  @@ -2658,6 +2677,8 @@
     function send_page($body="",$options=array()) {
       global $DBInfo;
       if ($options['fixpath']) $this->_fixpath();
  +    // reset macro ID
  +    $this->mid=0;
   
       if ($body) {
         $pi=$this->get_instructions($body);
  
  
  


wkpark      2006/08/05 14:52:52

  moniwiki/imgs/misc - New directory

wkpark      2006/08/05 14:56:44

  Modified:    .        wikilib.php
  Log:
  support textarea resizer ($use_resizer=2)
  cleanup $tz_offset
  small fixes for EditTextForm and resizer
  
  Revision  Changes    Path
  1.216     +27 -25    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.215
  retrieving revision 1.216
  diff -u -r1.215 -r1.216
  --- wikilib.php	3 Aug 2006 11:57:07 -0000	1.215
  +++ wikilib.php	5 Aug 2006 05:56:44 -0000	1.216
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.215 2006/08/03 11:57:07 wkpark Exp $
  +// $Id: wikilib.php,v 1.216 2006/08/05 05:56:44 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -617,7 +617,7 @@
       ob_end_clean();
   
       $editform= macro_Edit($formatter,'nohints,nomenu',$options);
  -    $new=str_replace("\n#editform",$editform,$form);
  +    $new=str_replace("#editform\n",$editform,$form);
       if ($form == $new) $form.=$editform;
       else $form=$new;
     } else {
  @@ -826,7 +826,8 @@
     $save_msg=_("Save");
     $summary_msg=_("Summary of Change");
     if ($use_js and $DBInfo->use_resizer) {
  -    $resizer=<<<EOS
  +    if ($DBInfo->use_resizer==1) {
  +      $resizer=<<<EOS
   <script type="text/javascript" language='javascript'>
   /*<![CDATA[*/
   function resize(obj,val) {
  @@ -836,17 +837,31 @@
     else if (rows < 5) rows=16;
     obj.savetext.rows=rows;
   }
  +
  +var resizer=document.createElement('div');
  +resizer.setAttribute('id','wikiResize');
  +resizer.innerHTML="<input type='button' class='inc' value='+' onclick='resize(this.form,3)' />\\n<input type='button' class='dec' value='-' onclick='resize(this.form,-3)' />";
  +
  +var toolbar=document.getElementById('toolbar');
  +if (toolbar) {
  +  toolbar.insertBefore(resizer, toolbar.firstChild);
  +} else {
  +  var editor=document.getElementById('wikiEditor');
  +  editor.insertBefore(resizer, editor.firstChild);
  +}
   /*]]>*/
   </script>
  -<div id='wikiResize'>
  -<input type='button' class='inc' value='+' onclick='resize(this.form,3)' />
  -<input type='button' class='dec' value='-' onclick='resize(this.form,-3)' />
  -</div>
   EOS;
  +    } else {
  +      $resizer=<<<EOS
  +<script type="text/javascript" src="$DBInfo->url_prefix/local/textarea.js"></script>
  +EOS;
  +    }
     }
     $form.=<<<EOS
  +<div id="wikiEditor">
   <textarea id="content" wrap="virtual" name="savetext" tabindex="1"
  - rows="$rows" cols="$cols" class="wiki">$raw_body</textarea><br />
  + rows="$rows" cols="$cols" class="wiki resizable">$raw_body</textarea><br />
   $summary_msg: <input name="comment" size="70" maxlength="70" style="width:200" tabindex="2" />$extra_check<br />
   <input type="hidden" name="action" value="savepage" />
   <input type="hidden" name="datestamp" value="$datestamp" />
  @@ -856,12 +871,13 @@
   $preview_btn
   $extra
   </form>
  +</div>
   EOS;
     if (!$options['nohints'])
       $form.= macro_EditHints($formatter);
     if (!$options['simple'])
       $form.= "<a id='preview' name='preview'></a>";
  -  return $formh.$resizer.$form;
  +  return $formh.$form.$resizer;
   }
   
   
  @@ -1701,14 +1717,7 @@
   function macro_Date($formatter,$value) {
     global $DBInfo;
   
  -  $user=new User(); # get from COOKIE VARS
  -  if ($user->id != 'Anonymous') {
  -    $udb=new UserDB($DBInfo);
  -    $udb->checkUser($user);
  -    $tz_offset=$user->info['tz_offset'];
  -  } else {
  -    $tz_offset=date('Z');
  -  }
  +  $tz_offset=&$formatter->tz_offset;
   
     $fmt=&$DBInfo->date_fmt;
     if (!$value) {
  @@ -1726,14 +1735,7 @@
     global $DBInfo;
   
     $fmt=&$DBInfo->datetime_fmt;
  -  $user=new User(); # get from COOKIE VARS
  -  if ($user->id != 'Anonymous') {
  -    $udb=new UserDB($DBInfo);
  -    $udb->checkUser($user);
  -    $tz_offset=$user->info['tz_offset'];
  -  } else {
  -    $tz_offset=date('Z');
  -  }
  +  $tz_offset=&$formatter->tz_offset;
   
     if (!$value) {
       return gmdate($fmt,time()+$tz_offset);
  
  
  


wkpark      2006/08/05 14:57:32

  Added:       imgs/misc grippie.png
  Log:
  add grippie.png for new textarea resizer.
  make 8bit png for IE
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/misc/grippie.png
  
  	<<Binary file>>
  
  


wkpark      2006/08/05 14:57:32

  Modified:    imgs/plugin/SlideShow/bluecurve up.png
  Log:
  add grippie.png for new textarea resizer.
  make 8bit png for IE
  
  Revision  Changes    Path
  1.2       +2 -7      moniwiki/imgs/plugin/SlideShow/bluecurve/up.png
  
  	<<Binary file>>
  
  


wkpark      2006/08/05 14:57:47

  moniwiki/imgs/plugin/Rating - New directory

wkpark      2006/08/05 14:57:55

  moniwiki/imgs/plugin/Rating/star - New directory

wkpark      2006/08/05 14:58:37

  Added:       imgs/plugin/Rating/star star0.png star1.png
  Log:
  add missing pngs for the RatingPlugin
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/plugin/Rating/star/star0.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/Rating/star/star1.png
  
  	<<Binary file>>
  
  


wkpark      2006/08/05 14:59:05

  moniwiki/imgs/plugin/UploadedFiles/tango - New directory

wkpark      2006/08/05 14:59:32

  Added:       imgs/plugin/UploadedFiles/tango folder-16.png text-16.png
  Log:
  add 16x16 imgs for PageList macro
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/plugin/UploadedFiles/tango/folder-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/UploadedFiles/tango/text-16.png
  
  	<<Binary file>>
  
  


wkpark      2006/08/05 15:03:12

  Modified:    plugin   pagelist.php
  Log:
  support directory style listing
  
  Revision  Changes    Path
  1.2       +64 -13    moniwiki/plugin/pagelist.php
  
  Index: pagelist.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/pagelist.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- pagelist.php	3 Aug 2006 11:57:07 -0000	1.1
  +++ pagelist.php	5 Aug 2006 06:03:12 -0000	1.2
  @@ -1,4 +1,12 @@
   <?php
  +// Copyright 2003-2006 Won-Kyu Park <wkpark at kldp.org>
  +// All rights reserved. Distributable under GPL see COPYING
  +// a PageList plugin for the MoniWiki
  +//
  +// Usage: [[PageList(a needle for list,dir,info,date]]
  +//
  +// $Id: pagelist.php,v 1.2 2006/08/05 06:03:12 wkpark Exp $
  +
   function macro_PageList($formatter,$arg="") {
     global $DBInfo;
   
  @@ -11,6 +19,8 @@
       $options=array();
       if ($match[3]) $options=explode(",",$match[3]);
       if (in_array('date',$options)) $options['date']=1;
  +    if (in_array('dir',$options)) $options['dir']=1;
  +    if (in_array('info',$options)) $options['info']=1;
       else if ($arg and (in_array('metawiki',$options) or in_array('m',$options)))
         $options['metawiki']=1;
     }
  @@ -23,25 +33,14 @@
     }
   
     if ($options['date']) {
  -    $user=new User(); # get from COOKIE VARS
  -    if ($user->id != 'Anonymous') {
  -      $udb=new UserDB($DBInfo);
  -      $udb->checkUser($user);
  -      $tz_offset=$user->info['tz_offset'];
  -    } else {
  -      $tz_offset=date('Z');
  -    }
  +    $tz_offset=&$formatter->tz_offset;
       $all_pages = $DBInfo->getPageLists($options);
     } else {
       if ($options['metawiki'])
         $all_pages = $DBInfo->metadb->getLikePages($needle);
       else
         $all_pages = $DBInfo->getPageLists();
  -#     $all_pages= array_unique(array_merge($meta_pages,$all_pages));
     }
  -#  $all_pages = $DBInfo->getPageLists($options);
  -
  -#  print_r($all_pages);
   
     $hits=array();
   
  @@ -65,15 +64,67 @@
         if ($matches) $hits[]=$page;
       }
       sort($hits);
  +    if ($options['dir']) {
  +        $dirs=array();
  +        $files=array();
  +        foreach ($hits as $pagename) {
  +            if (($p=strpos($pagename,'/'))!==false) {
  +                $name=substr($pagename,0,$p);
  +                $dirs[$name]=$name;
  +                continue;
  +            }
  +            $files[$pagename]=$pagename;
  +        }
  +        $iconset='tango';
  +        $icon_dir=$DBInfo->imgs_dir.'/plugin/UploadedFiles/'.$iconset;
  +        $dicon="<img src='$icon_dir/folder-16.png' width='16px'/>";
  +        $ficon="<img src='$icon_dir/text-16.png' width='16px'/>";
  +        $now=time();
  +        foreach ($dirs as $pg) {
  +            $out.= '<tr><td>'.$dicon.'</td><td>'.
  +                $formatter->link_tag(_rawurlencode($pg),"",
  +	    htmlspecialchars($pg)).'</td>';
  +            if ($options['info']) {
  +                $p=new WikiPage($pg);
  +                $mtime=$p->mtime();
  +                $time_diff=(int)($now - $mtime)/60;
  +                if ($time_diff < 1440)
  +                    $date=sprintf(_("[%sh %sm ago]"),(int)($time_diff/60),$time_diff%60);
  +                else
  +                    $date=date("Y/m/d H:i",$mtime);        
  +                $out.='<td>'.$date.'</td>';
  +            }
  +            $out.="</tr>\n";
  +            if (isset($files[$pg])) unset($files[$pg]);
  +        }
  +        foreach ($files as $pg) {
  +            $out.= '<tr><td>'.$ficon.'</td><td>'.
  +                $formatter->link_tag(_rawurlencode($pg),"",
  +	    htmlspecialchars($pg)).'</td>';
  +            if ($options['info']) {
  +                $p=new WikiPage($pg);
  +                $mtime=$p->mtime();
  +                $time_diff=(int)($now - $mtime)/60;
  +                if ($time_diff < 1440)
  +                    $date=sprintf(_("[%sh %sm ago]"),(int)($time_diff/60),$time_diff%60);
  +                else
  +                    $date=date("Y/m/d H:i",$mtime);        
  +                $out.='<td>'.$date.'</td>';
  +            }
  +            $out.="</tr>\n";
  +        }
  +        $out='<table>'.$out.'</table>';
  +    } else {
       foreach ($hits as $pagename) {
         $out.= '<li>' . $formatter->link_tag(_rawurlencode($pagename),"",
   	htmlspecialchars($pagename))."</li>\n";
       }
       $out="<ul>\n".$out."</ul>\n";
  +    }
     }
   
     return $out;
   }
   
  -// vim:et:sts=4:
  +// vim:et:sts=2:
   ?>
  
  
  


wkpark      2006/08/05 15:07:13

  Modified:    plugin   EditToolbar.php
  Log:
  add a $toolbar_iconset config option
  
  Revision  Changes    Path
  1.4       +7 -7      moniwiki/plugin/EditToolbar.php
  
  Index: EditToolbar.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/EditToolbar.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- EditToolbar.php	5 Jan 2006 17:33:43 -0000	1.3
  +++ EditToolbar.php	5 Aug 2006 06:07:13 -0000	1.4
  @@ -1,5 +1,5 @@
   <?php
  -// Copyright 2004 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2004-2006 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a EditToolbar plugin for the MoniWiki
   //
  @@ -7,15 +7,15 @@
   //
   // This feature is imported from the MediaWiki
   //
  -// $Id: EditToolbar.php,v 1.3 2006/01/05 17:33:43 wkpark Exp $
  +// $Id: EditToolbar.php,v 1.4 2006/08/05 06:07:13 wkpark Exp $
   
   function macro_EditToolbar($formatter,$value) {
  -   global $DBInfo;
  +    global $DBInfo;
   
  -   $iconset='mediawiki';
  -   $iconset='moniwiki';
  -   $imgdir=$DBInfo->imgs_dir.'/plugin/EditToolbar/'.$iconset;
  -   $script=<<<EOS
  +    $iconset=!empty($DBInfo->toolbar_iconset) ? $DBInfo->toolbar_iconset:
  +        'moniwiki';
  +    $imgdir=$DBInfo->imgs_dir.'/plugin/EditToolbar/'.$iconset;
  +    $script=<<<EOS
   <script type="text/javascript" src="$DBInfo->url_prefix/local/wikibits.js"></script>
   <script language="JavaScript" type='text/javascript'>
   /*<![CDATA[*/
  
  
  


wkpark      2006/08/05 15:17:13

  Modified:    plugin/processor text_xml.php
  Log:
  small fixes to use macro_repl() and CDATA
  
  Revision  Changes    Path
  1.6       +20 -10    moniwiki/plugin/processor/text_xml.php
  
  Index: text_xml.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/text_xml.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- text_xml.php	6 Sep 2004 14:47:47 -0000	1.5
  +++ text_xml.php	5 Aug 2006 06:17:13 -0000	1.6
  @@ -1,6 +1,6 @@
   <?php
   
  -class Formatter_xml {
  +class Formatter_xml extends Formatter {
   
     function Formatter_xml() {
       global $DBInfo;
  @@ -18,7 +18,7 @@
                        "<keycap>\\1</keycap>","<keycap>\\1</keycap>",
                        "<emphasis>\\1</emphasis>","<emphasis>\\1</emphasis>",
                        "<superscript>\\1</superscript>","<subscript>\\1</subscript>",
  -                     "<constant class='underline'>\\1</constant>","----\n");
  +                     "<constant class='underline'>\\1</constant>","<!-- hr -->\n");
   
       $this->extrarule=array();
       $this->extrarepl=array();
  @@ -112,8 +112,12 @@
         return "<constant>$url</constant>"; # No link
       } else if ($url[0]=="[") {
         $url=substr($url,1,-1);
  -      #return $this->macro_repl($url); # No link
  -      return $url;
  +      if (preg_match('/tableofcontents/i',$url)) return '';
  +      if ($this->use_cdata) {
  +        $out= $this->macro_repl($url); # No link
  +        return "<programlisting><![CDATA[\n".$out."\n]]></programlisting>\n";
  +      }
  +      return '[['.$url.']]';
       }
   
       if ($url[0]=="!") {
  @@ -324,7 +328,7 @@
   
   }
   
  -  function processor_text_xml($formatter,$value) {
  +  function processor_text_xml($formatter,$value,$options=array()) {
       global $DBInfo;
   
       if ($value[0]=='#' and $value[1]=='!')
  @@ -351,6 +355,8 @@
         $wordrule.="\\$\s([^\\$]+)\\$(?:\s|$)|".
                    "\\$\\$\s([^\\$]+)\\$\\$(?:\s|$)|";
       $wordrule.=$formatter->wordrule;
  +    $formatter->no_js=1;
  +    $xml->use_cdata=$options['cdata'] ? 1:0;
   
       foreach ($lines as $line) {
   
  @@ -509,12 +515,16 @@
         if ($in_pre==-1) {
            $in_pre=0;
            if ($processor) {
  -           #$value=$xml->pre_line;
  -           #$out= call_user_func("processor_$processor",&$formatter,$value,$options);
  +           $value=$xml->pre_line;
              if ($processor != 'docbook') {
  -             $pre=str_replace("&","&amp;",$xml->pre_line);
  -             $pre=str_replace("<","&lt;",$pre);
  -             $line="<programlisting><![CDATA[\n".$pre."\n]]></programlisting>\n".$line;
  +             if ($formatter->use_cdata) {
  +               $out= call_user_func("processor_$processor",$formatter,$value,$options);
  +               $line="<programlisting><![CDATA[\n".$out."\n]]></programlisting>\n".$line;
  +             } else {
  +               $pre=str_replace("&","&amp;",$xml->pre_line);
  +               $pre=str_replace("<","&lt;",$pre);
  +               $line="<programlisting><![CDATA[\n".$pre."\n]]></programlisting>\n".$line;
  +             }
              } else {
                list($tag,$pre)=explode("\n",$xml->pre_line,2);
                $line=$pre;
  
  
  


wkpark      2006/08/05 15:17:46

  Modified:    plugin/processor vim.php
  Log:
  on/of javascript with $formatter->no_js
  
  Revision  Changes    Path
  1.35      +2 -2      moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- vim.php	29 Jul 2006 07:17:09 -0000	1.34
  +++ vim.php	5 Aug 2006 06:17:46 -0000	1.35
  @@ -10,7 +10,7 @@
   // Win32 note:
   //  add $path="/bin;/Program Files/Vim/VimXX"; in the config.php
   //
  -// $Id: vim.php,v 1.34 2006/07/29 07:17:09 wkpark Exp $
  +// $Id: vim.php,v 1.35 2006/08/05 06:17:46 wkpark Exp $
   
   function processor_vim($formatter,$value,$options) {
     global $DBInfo;
  @@ -54,7 +54,7 @@
     }
   
     $script='';
  -  if ($DBInfo->use_numbering) {
  +  if ($DBInfo->use_numbering and empty($formatter->no_js)) {
       $button=_("Toggle line numbers");
       if (!$jsloaded) 
         $script='<script type="text/javascript" src="'.$DBInfo->url_prefix.'/local/numbering.js"></script>';
  
  
  


wkpark      2006/08/05 15:18:23

  Modified:    plugin   format.php
  Log:
  use $options arg
  
  Revision  Changes    Path
  1.5       +3 -3      moniwiki/plugin/format.php
  
  Index: format.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/format.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- format.php	10 Nov 2004 10:41:11 -0000	1.4
  +++ format.php	5 Aug 2006 06:18:23 -0000	1.5
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a format plugin to connect with processors for the MoniWiki
   //
  -// $Id: format.php,v 1.4 2004/11/10 10:41:11 wkpark Exp $
  +// $Id: format.php,v 1.5 2006/08/05 06:18:23 wkpark Exp $
   
   function do_format($formatter,$options) {
     $mimes=array('text/plain'=>'html','text/xml'=>'text_xml');
  @@ -22,13 +22,13 @@
     } // Detect File type
     else if (array_key_exists($mimetype,$mimes)) {
       header("Content-type: ".$mimetype);
  -    print $formatter->processor_repl($mimes[$mimetype],$formatter->page->get_raw_body());
  +    print $formatter->processor_repl($mimes[$mimetype],$formatter->page->get_raw_body(),$options);
     } else {
       $processor=str_replace("/.","__",$mimetype);
       header("Content-type: text/plain");
   
       if (getProcessor($processor))
  -      print $formatter->processor_repl($processor,$formatter->page->get_raw_body());
  +      print $formatter->processor_repl($processor,$formatter->page->get_raw_body(),$options);
       else {
         do_invalid($formatter,$options);
         return;
  
  
  


wkpark      2006/08/05 17:10:49

  Added:       local    textarea.js
  Log:
  new textarea resizer
  
  Revision  Changes    Path
  1.1                  moniwiki/local/textarea.js
  
  Index: textarea.js
  ===================================================================
  // $Id: textarea.js,v 1.1 2006/08/05 08:10:49 wkpark Exp $
  // $origId: textarea.js,v 1.9 2006/04/14 13:48:56 killes Exp $
  // from drupal
  // many functions are imported from drupal.js to eliminate dependency
  
  if (document.jsEnabled == undefined) {
    // Note: ! casts to boolean implicitly.
    document.jsEnabled = !(
     !document.getElementsByTagName ||
     !document.createElement        ||
     !document.createTextNode       ||
     !document.getElementById);
  }
  
  /**
   * Retrieves the absolute position of an element on the screen
   */
  function absolutePosition(el) {
    var sLeft = 0, sTop = 0;
    var isDiv = /^div$/i.test(el.tagName);
    if (isDiv && el.scrollLeft) {
      sLeft = el.scrollLeft;
    }
    if (isDiv && el.scrollTop) {
      sTop = el.scrollTop;
    }
    var r = { x: el.offsetLeft - sLeft, y: el.offsetTop - sTop };
    if (el.offsetParent) {
      var tmp = absolutePosition(el.offsetParent);
      r.x += tmp.x;
      r.y += tmp.y;
    }
    return r;
  };
  
  function dimensions(el) {
    return { width: el.offsetWidth, height: el.offsetHeight };
  }
  
  /**
   * Returns true if an element has a specified class name
   */
  function hasClass(node, className) {
    if (node.className == className) {
      return true;
    }
    var reg = new RegExp('(^| )'+ className +'($| )')
    if (reg.test(node.className)) {
      return true;
    }
    return false;
  }
  
  /**
   * Prevents an event from propagating.
   */
  function stopEvent(event) {
    if (event.preventDefault) {
      event.preventDefault();
      event.stopPropagation();
    }
    else {
      event.returnValue = false;
      event.cancelBubble = true;
    }
  }
  
  /**
   * Removes a class name from an element
   */
  function removeNode(node) {
    if (typeof node == 'string') {
      node = document.getElementById(node);
    }
    if (node && node.parentNode) {
      return node.parentNode.removeChild(node);
    }
    else {
      return false;
    }
  }
  
  /**
   * main textarea resizer function from drupal
   *
   * you have to define css as following
    .resizable-textarea .grippie {
      height: 14px;
      background: #ECE9D6 url(../to_dir/grippie.png) no-repeat 100% 100%;
      border: 1px solid #DFDBCA;
      border-top-width: 0;
      border-right-width: 0;
      cursor: s-resize;
    }
   */
  function textAreaAutoAttach(event, parent) {
    if (typeof parent == 'undefined') {
      // Attach to all visible textareas.
      textareas = document.getElementsByTagName('textarea');
    }
    else {
      // Attach to all visible textareas inside parent.
      textareas = parent.getElementsByTagName('textarea');
    }
    var textarea;
    for (var i = 0; textarea = textareas[i]; ++i) {
      if (hasClass(textarea, 'resizable') && !hasClass(textarea.nextSibling, 'grippie')) {
        if (typeof dimensions(textarea).width != 'undefined' && dimensions(textarea).width != 0) {
          new textArea(textarea);
        }
      }
    }
  }
  
  function textArea(element) {
    var ta = this;
    this.element = element;
    this.parent = this.element.parentNode;
    this.dimensions = dimensions(element);
  
    // Prepare wrapper
    this.wrapper = document.createElement('div');
    this.wrapper.className = 'resizable-textarea';
    this.parent.insertBefore(this.wrapper, this.element);
  
    // Add grippie and measure it
    this.grippie = document.createElement('div');
    this.grippie.className = 'grippie';
    this.wrapper.appendChild(this.grippie);
    this.grippie.dimensions = dimensions(this.grippie);
    this.grippie.onmousedown = function (e) { ta.beginDrag(e); };
  
    // Set wrapper and textarea dimensions
    this.wrapper.style.height = this.dimensions.height + this.grippie.dimensions.height + 1 +'px';
    this.element.style.marginBottom = '0px';
    this.element.style.width = '100%';
    this.element.style.height = this.dimensions.height +'px';
  
    // Wrap textarea
    removeNode(this.element);
    this.wrapper.insertBefore(this.element, this.grippie);
  
    // Measure difference between desired and actual textarea dimensions to account for padding/borders
    this.widthOffset = dimensions(this.wrapper).width - this.dimensions.width;
  
    // Make the grippie line up in various browsers
    if (window.opera) {
      // Opera
      this.grippie.style.marginRight = '4px';
    }
    if (document.all && !window.opera) {
      // IE
      this.grippie.style.width = '100%';
      this.grippie.style.paddingLeft = '2px';
    }
    // Mozilla
    this.element.style.MozBoxSizing = 'border-box';
  
    this.heightOffset = absolutePosition(this.grippie).y - absolutePosition(this.element).y - this.dimensions.height;
  }
  
  textArea.prototype.beginDrag = function (event) {
    if (document.isDragging) {
      return;
    }
    document.isDragging = true;
  
    event = event || window.event;
    // Capture mouse
    var cp = this;
    this.oldMoveHandler = document.onmousemove;
    document.onmousemove = function(e) { cp.handleDrag(e); };
    this.oldUpHandler = document.onmouseup;
    document.onmouseup = function(e) { cp.endDrag(e); };
  
    // Store drag offset from grippie top
    var pos = absolutePosition(this.grippie);
    this.dragOffset = event.clientY - pos.y;
  
    // Make transparent
    this.element.style.opacity = 0.5;
  
    // Process
    this.handleDrag(event);
  }
  
  textArea.prototype.handleDrag = function (event) {
    event = event || window.event;
    // Get coordinates relative to text area
    var pos = absolutePosition(this.element);
    var y = event.clientY - pos.y;
  
    // Set new height
    var height = Math.max(32, y - this.dragOffset - this.heightOffset);
    this.wrapper.style.height = height + this.grippie.dimensions.height + 1 + 'px';
    this.element.style.height = height + 'px';
  
    // Avoid text selection
    stopEvent(event);
  }
  
  textArea.prototype.endDrag = function (event) {
    // Uncapture mouse
    document.onmousemove = this.oldMoveHandler;
    document.onmouseup = this.oldUpHandler;
  
    // Restore opacity
    this.element.style.opacity = 1.0;
    document.isDragging = false;
  }
  
  if (document.jsEnabled) {
    var oldOnload = window.onload;
    if (typeof window.onload != 'function') {
      window.onload = textAreaAutoAttach;
    }
    else {
      window.onload = function() {
        oldOnload();
        textAreaAutoAttach();
      }
    }
    /* addLoadEvent(textAreaAutoAttach); */
  }
  
  
  
  


wkpark      2006/08/05 17:12:04

  Modified:    local/Wikiwyg/moni/images separator.png
  Log:
  make 8bit transparent png
  
  Revision  Changes    Path
  1.2       +2 -1      moniwiki/local/Wikiwyg/moni/images/separator.png
  
  	<<Binary file>>
  
  


wkpark      2006/08/06 02:46:51

  Modified:    .        wiki.php
  Log:
  now wiki.php can be included into another scripts if "INC_MONIWIKI" is definded
  
  Revision  Changes    Path
  1.328     +49 -38    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.327
  retrieving revision 1.328
  diff -u -r1.327 -r1.328
  --- wiki.php	3 Aug 2006 12:38:59 -0000	1.327
  +++ wiki.php	5 Aug 2006 17:46:50 -0000	1.328
  @@ -11,17 +11,15 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.327 2006/08/03 12:38:59 wkpark Exp $
  +// $Id: wiki.php,v 1.328 2006/08/05 17:46:50 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.327 $',1,-1);
  +$_revision = substr('$Revision: 1.328 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
   
   error_reporting(E_ALL ^ E_NOTICE);
   #error_reporting(E_ALL);
  -$Config=getConfig("config.php",array('init'=>1));
  -include("wikilib.php");
   
   $timing=new Timer();
   
  @@ -146,12 +144,12 @@
   }
   
   if (!function_exists ('bindtextdomain')) {
  -  $locale = array();
  +  $_locale = array();
   
     function gettext ($text) {
  -    global $locale;
  -    if (!empty ($locale[$text]))
  -      return $locale[$text];
  +    global $_locale;
  +    if (!empty ($_locale[$text]))
  +      return $_locale[$text];
       return $text;
     }
   
  @@ -217,20 +215,20 @@
   }
   
   function kbd_handler() {
  -  global $DBInfo;
  +  global $Config;
   
  -  if (!$DBInfo->kbd_script) return '';
  +  if (!$Config['kbd_script']) return '';
     $prefix=get_scriptname();
  -  $sep= $DBInfo->query_prefix;
  +  $sep= $Config['query_prefix'];
     print <<<EOS
   <script language="JavaScript" type="text/javascript">
   /*<![CDATA[*/
   url_prefix="$prefix";
   _qp="$sep";
  -FrontPage= "$DBInfo->frontpage";
  +FrontPage= "$Config[frontpage]";
   /*]]>*/
   </script>
  -<script type="text/javascript" src="$DBInfo->kbd_script">
  +<script type="text/javascript" src="$Config[kbd_script]">
   </script>
   EOS;
   }
  @@ -4004,7 +4002,7 @@
   
   # get the pagename
   function get_pagename() {
  -  global $DBInfo;
  +  global $Config;
     // $_SERVER["PATH_INFO"] has bad value under CGI mode
     // set 'cgi.fix_pathinfo=1' in the php.ini under
     // apache 2.0.x + php4.2.x Win32
  @@ -4012,7 +4010,7 @@
       if ($_SERVER['PATH_INFO'][0] == '/')
         $pagename=substr($_SERVER['PATH_INFO'],1);
       if (!$pagename) {
  -      $pagename = $DBInfo->frontpage;
  +      $pagename = $Config['frontpage'];
       }
       $pagename=_stripslashes($pagename);
     } else if (!empty($_SERVER['QUERY_STRING'])) {
  @@ -4022,7 +4020,7 @@
         $temp = strtok($pagename,"&");
   
         if ($temp and strpos($temp,"="))
  -        $pagename = $DBInfo->frontpage;
  +        $pagename = $Config['frontpage'];
         else
           $result = preg_match('/^([^&=]+)/',$pagename,$matches);
         if ($result) {
  @@ -4030,9 +4028,9 @@
           $_SERVER['QUERY_STRING']=substr($_SERVER['QUERY_STRING'],strlen($pagename));
         }
       }
  -    if (!$pagename) $pagename= $DBInfo->frontpage;
  +    if (!$pagename) $pagename= $Config['frontpage'];
     } else {
  -    $pagename = $DBInfo->frontpage;
  +    $pagename = $Config['frontpage'];
     }
   
     if ($pagename[0]=='~' and ($p=strpos($pagename,"/")))
  @@ -4040,13 +4038,9 @@
     return $pagename;
   }
   
  -# Start Main
  -
  -$DBInfo= new WikiDB($Config);
  -register_shutdown_function(array(&$DBInfo,'Close'));
  -
  +function init_requests(&$options) {
  +  global $DBInfo;
   $user=new User();
  -$options=array();
   $options['id']=$user->id;
   
   # MoniWiki theme
  @@ -4085,19 +4079,18 @@
   if ($theme and ($DBInfo->theme_css or !$options['css_url']))
     $options['css_url']=($DBInfo->themeurl ? $DBInfo->themeurl:$DBInfo->url_prefix)."/theme/$theme/css/default.css";
   
  -$options['timer']=&$timing;
  -$options['timer']->Check("load");
  -
  -$lang= set_locale($DBInfo->lang,$DBInfo->charset);
  -$DBInfo->lang=$lang;
  +  $options['pagename']=get_pagename();
  +}
   
  -if (isset($locale)) {
  +function init_locale($lang) {
  +  global $Config,$_locale;
  +if (isset($_locale)) {
     if (!@include_once('locale/'.$lang.'/LC_MESSAGES/moniwiki.php'))
       @include_once('locale/'.substr($lang,0,2).'/LC_MESSAGES/moniwiki.php');
   } else if (substr($lang,0,2) == 'en') {
     $test=setlocale(LC_ALL, $lang);
   } else {
  -  if ($DBInfo->include_path) $dirs=explode(':',$DBInfo->include_path);
  +  if ($Config['include_path']) $dirs=explode(':',$Config['include_path']);
     else $dirs=array('.');
   
     $test=setlocale(LC_ALL, $lang);
  @@ -4109,15 +4102,17 @@
         break;
       }
     }
  -  if ($DBInfo->set_lang) putenv("LANG=".$lang);
  +  if ($Config['set_lang']) putenv("LANG=".$lang);
     if (function_exists('bind_textdomain_codeset'))
  -    bind_textdomain_codeset ('moniwiki', $DBInfo->charset);
  +    bind_textdomain_codeset ('moniwiki', $Config['charset']);
   }
   
  -$pagename=get_pagename();
  -//function render($pagename,$options) {
  -if ($pagename) {
  +}
  +
  +function wiki_main($options) {
     global $DBInfo,$Config;
  +  $pagename=$options['pagename'];
  +  
     # get primary variables
     if ($_SERVER['REQUEST_METHOD']=="POST") {
       # hack for TWiki plugin
  @@ -4418,7 +4413,23 @@
     }
   }
   
  -//$pagename=get_pagename();
  -//render($pagename,$options);
  +if (!defined('INC_MONIWIKI')):
  +# Start Main
  +$Config=getConfig("config.php",array('init'=>1));
  +include("wikilib.php");
  +
  +$DBInfo= new WikiDB($Config);
  +register_shutdown_function(array(&$DBInfo,'Close'));
  +
  +$options=array();
  +$options['timer']=&$timing;
  +$options['timer']->Check("load");
  +
  +$lang= set_locale($DBInfo->lang,$DBInfo->charset);
  +init_locale($lang);
  +init_requests($options);
  +$DBInfo->lang=$lang;
  +wiki_main($options);
  +endif;
   // vim:et:sts=2:
   ?>
  
  
  


wkpark      2006/08/06 02:52:30

  Added:       doc      mywiki.php.sample
  Log:
  sample script how to include wiki.php in another scripts
  
  Revision  Changes    Path
  1.1                  moniwiki/doc/mywiki.php.sample
  
  Index: mywiki.php.sample
  ===================================================================
  <?php
  //
  // wiki.php can be included into another script.
  // This sample shows how to include wiki.php in another scripts.
  //
  // $Id: mywiki.php.sample,v 1.1 2006/08/05 17:52:30 wkpark Exp $
  //
  define('INC_MONIWIKI',1);
  include_once("wiki.php");
  
  # Start Main
  $Config=getConfig("some_other_config.php",array('init'=>1));
  include("wikilib.php");
  
  $DBInfo= new WikiDB($Config);
  register_shutdown_function(array(&$DBInfo,'Close'));
  
  $options=array();
  $options['timer']=&$timing;
  $options['timer']->Check("load");
  
  $lang= set_locale($DBInfo->lang,$DBInfo->charset);
  init_locale($lang);
  init_requests($options);
  $DBInfo->lang=$lang;
  wiki_main($options);
  
  
  


wkpark      2006/08/06 19:18:46

  Modified:    .        wiki.php
  Log:
  fixed Version_RCS class
  - check $rev is numeric or not
  - use is_resource()
  
  Revision  Changes    Path
  1.329     +9 -9      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.328
  retrieving revision 1.329
  diff -u -r1.328 -r1.329
  --- wiki.php	5 Aug 2006 17:46:50 -0000	1.328
  +++ wiki.php	6 Aug 2006 10:18:46 -0000	1.329
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.328 2006/08/05 17:46:50 wkpark Exp $
  +// $Id: wiki.php,v 1.329 2006/08/06 10:18:46 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.328 $',1,-1);
  +$_revision = substr('$Revision: 1.329 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -1210,7 +1210,8 @@
     function co($pagename,$rev,$opt='') {
       $filename= $this->_filename($pagename);
   
  -    $fp=@popen("co -x,v/ -q -p\"".$rev."\" ".$filename.$this->NULL,"r");
  +    $rev=(is_numeric($rev) and $rev>0) ? "\"".$rev."\" ":'';
  +    $fp=@popen("co -x,v/ -q -p$rev ".$filename.$this->NULL,"r");
       $out='';
       if (is_resource($fp)) {
         while (!feof($fp)) {
  @@ -1226,17 +1227,16 @@
       $key=$this->_filename($pagename);
       $pagename=escapeshellcmd($pagename);
       $fp=@popen("ci -l -x,v/ -q -t-\"".$pagename."\" -m\"".$log."\" ".$key.$this->NULL,"r");
  -    if ($fp) pclose($fp);
  +    if (is_resource($fp)) pclose($fp);
     }
   
     function rlog($pagename,$rev='',$opt='',$oldopt='') {
  -    if ($rev)
  -      $rev = "-r$rev";
  +    $rev = (is_numeric($rev) and $rev > 0) ? "-r$rev":'';
       $filename=$this->_filename($pagename);
   
       $fp= popen("rlog $opt $oldopt -x,v/ $rev ".$filename.$this->NULL,"r");
       $out='';
  -    if ($fp) {
  +    if (is_resource($fp)) {
         while (!feof($fp)) {
           $line=fgets($fp,1024);
           $out .= $line;
  @@ -1252,7 +1252,7 @@
   
       $filename=$this->_filename($pagename);
       $fp=popen("rcsdiff -x,v/ -u $option ".$filename.$this->NULL,'r');
  -    if (!$fp) return '';
  +    if (!is_resource($fp)) return '';
       while (!feof($fp)) {
         # trashing first two lines
         $line=fgets($fp,1024);
  @@ -3269,7 +3269,7 @@
   
         $fp=popen("merge -p ".$this->page->filename." $tmpf2 $tmpf3".$this->NULL,'r');
   
  -      if (!$fp) {
  +      if (!is_resource($fp)) {
           unlink($tmpf2);
           unlink($tmpf3);
           return '';
  
  
  


wkpark      2006/08/06 23:47:18

  Modified:    .        wiki.php
  Log:
  fixed list/indent parsing to support a table in a list.
  
  Revision  Changes    Path
  1.330     +26 -6     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.329
  retrieving revision 1.330
  diff -u -r1.329 -r1.330
  --- wiki.php	6 Aug 2006 10:18:46 -0000	1.329
  +++ wiki.php	6 Aug 2006 14:47:18 -0000	1.330
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.329 2006/08/06 10:18:46 wkpark Exp $
  +// $Id: wiki.php,v 1.330 2006/08/06 14:47:18 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.329 $',1,-1);
  +$_revision = substr('$Revision: 1.330 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2778,6 +2778,7 @@
       $my_div=0;
       $indent_list[0]=0;
       $indent_type[0]="";
  +    $_myindlen=array(0);
       $oline='';
   
       $wordrule="({{{(?U)(.+)}}})|".
  @@ -2936,7 +2937,9 @@
            $close="";
            $indtype="dd";
            $indlen=strlen($match[0]);
  +         $liopen='';
            if ($indlen > 0) {
  +           $myindlen=$indlen;
              $line=substr($line,$indlen);
              # check div type.
              if ($match[0][$indlen-1]=='>') {
  @@ -2954,28 +2957,43 @@
   
              if ($line[0]=='*') {
                $limatch[1]='*';
  -             $line=preg_replace("/^(\*\s?)/","<li>",$line);
  -             if ($indent_list[$in_li] == $indlen && $indent_type[$in_li]!='dd') $line=$this->_li(0).$line;
  +             $myindlen=($line{1}==' ') ? $indlen+2:$indlen+1;
  +             preg_match("/^(\*\s?)/",$line,$m);
  +             $liopen='<li>'; // XXX
  +             $line=substr($line,strlen($m[1]));
  +             if ($indent_list[$in_li] == $indlen && $indent_type[$in_li]!='dd'){
  +                $close.=$this->_li(0);
  +                $_myindlen[$in_li]=$myindlen;
  +             }
                $numtype="";
                $indtype="ul";
              } elseif (preg_match("/^(([1-9]\d*|[aAiI])\.)(#\d+)?\s/",$line,$limatch)){
  -             $line=preg_replace("/^((\d+|[aAiI])\.(#\d+)?)/","<li>",$line);
  -             if ($indent_list[$in_li] == $indlen) $line=$this->_li(0).$line;
  +             $myindlen=$indlen+strlen($limatch[1])+1;
  +             $liopen='<li>'; // XXX
  +             $line=substr($line,strlen($limatch[0]));
  +             if ($indent_list[$in_li] == $indlen) {
  +                $close.=$this->_li(0);
  +                $_myindlen[$in_li]=$myindlen;
  +             }
                $numtype=$limatch[2][0];
                if ($limatch[3])
                  $numtype.=substr($limatch[3],1);
                $indtype="ol";
              } elseif (preg_match("/^([^:]+)::\s/",$line,$limatch)) {
  +             $myindlen=$indlen;
                $line=preg_replace("/^[^:]+::\s/",
                        "<dt class='wiki'>".$limatch[1]."</dt><dd>",$line);
                if ($indent_list[$in_li] == $indlen) $line="</dd>\n".$line;
                $numtype="";
                $indtype="dl";
  +           } else if ($_myindlen[$in_li] == $indlen) {
  +             $indlen=$indent_list[$in_li]; // XXX
              }
            }
            if ($indent_list[$in_li] < $indlen) {
               $in_li++;
               $indent_list[$in_li]=$indlen; # add list depth
  +            $_myindlen[$in_li]=$myindlen; # add list depth
               $indent_type[$in_li]=$indtype; # add list type
               $open.=$this->_list(1,$indtype,$numtype,'',$divtype);
            } else if ($indent_list[$in_li] > $indlen) {
  @@ -2986,10 +3004,12 @@
                    $indent_type[$in_li-1]);
                  unset($indent_list[$in_li]);
                  unset($indent_type[$in_li]);
  +               unset($_myindlen[$in_li]);
                  $in_li--;
               }
               #$li_empty=0;
            }
  +         if ($liopen) $open.=$liopen;
            $li_empty=0;
            if ($indent_list[$in_li] <= $indlen || $limatch) $li_open=$in_li;
            else $li_open=0;
  
  
  


wkpark      2006/08/07 00:53:34

  Added:       plugin   admin.php cacheadmin.php
  Log:
  add new admin plugins
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/admin.php
  
  Index: admin.php
  ===================================================================
  <?php
  // Copyright 2006 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a admin plugin for the MoniWiki
  //
  // Plugin/Processor on/off plugin <!> experimental
  //
  // Usage: ?action=admin
  //
  // $Id: admin.php,v 1.1 2006/08/06 15:53:34 wkpark Exp $
  
  function info_admin() {
      return array(
          'author'  => 'Won-Kyu Park <wkpark@kldp.org>',
          'date'    => '2006-07-30',
          'name'    => 'Admin',
          'desc'    => 'Admin Plugin',
          'url'     => 'MoniWiki:AdminPlugin',
          'version' => substr('$Revision: 1.1 $',1,-1),
          'depend'  => '1.1.3',
          'license' => 'GPL',
       );
  }
  
  function macro_admin($formatter,$value='',$options=array()) {
      global $DBInfo;
  
      if ($DBInfo->include_path)
          $dirs=explode(':',$DBInfo->include_path);
      else
          $dirs=array('.');
  
      // make plugins list
      foreach ($dirs as $dir) {
          $handle= @opendir($dir.'/plugin');
          if (!$handle) continue;
          while ($file= readdir($handle)) {
              if (is_dir($dir."/plugin/$file")) continue;
              if ($file{0}=='.') continue;
              $name= substr($file,0,-4);
              $plugins[strtolower($name)]= $name;
          }
      }
      // make processors list
      foreach ($dirs as $dir) {
          $handle= @opendir($dir.'/plugin/processor');
          if (!$handle) continue;
          while ($file= readdir($handle)) {
              if (is_dir($dir."/plugin/processor/$file")) continue;
              if ($file{0}=='.') continue;
              $name= substr($file,0,-4);
              $processors[strtolower($name)]= $name;
          }
      }
  
      ksort($plugins);
      ksort($processors);
  
      // get settings
      $sc=new Cache_text('settings');
      $pls=unserialize($sc->fetch('plugins'));
      $prs=unserialize($sc->fetch('processors'));
  
      $pl="<tr><th colspan='2'>Plugins</th></tr>\n";
      $i=0;
      foreach ($plugins as $p=>$v) {
          $ck= isset($pls[$p]) ? 'checked="checked"':'';
          $disabled=empty($ck) ? ' disabled':'';
          $pl.="<tr><th class='info$disabled'>".
              $p.'</th><td>'."$v</td><td><input type='checkbox' name='pl[$p]' value='$v' $ck/></td></tr>\n";
          ++$i;
      }
      $pl.="<tr><td colspan='2'>Total <b>$i</b></td></tr>\n";
      $pr="<tr><th colspan='2'>Processors</th></tr>\n";
      $j=0;
      foreach ($processors as $p=>$v) {
          $ck= isset($prs[$p]) ? 'checked="checked"':'';
          $disabled=empty($ck) ? ' disabled':'';
          $pr.="<tr><th class='info$disabled'>".
              $p.'</th><td>'."$v</td><td><input type='checkbox' name='pr[$p]' value='$v' $ck/></td></tr>\n";
          ++$j;
      }
      $pr.="<tr><td colspan='2'>Total <b>$j</b></td></tr>\n";
  
      $out="<form method='post' action=''><table><tr valign='top'><td><table>".$pl."</table></td>";
      $out.="<td><table>".$pr."</table></td></tr>";
      $out.='</table>';
      if (in_array($options['id'],$DBInfo->owners)) {
          $out.='<input type="hidden" name="action" value="admin" />';
          $out.='<input type="submit" value="Update" />';
      }
      $out.='</form>';
      return $out;
  }
  
  function do_admin($formatter,$options) {
      global $DBInfo;
      if (in_array($options['id'],$DBInfo->owners) and
              (is_array($options['pl']) or is_array($options['pr']))) {
          $formatter->send_header('',$options);
          $cp=new Cache_text('settings');
          $cpl=unserialize($cp->fetch('plugins'));
          $cpr=unserialize($cp->fetch('processors'));
  
          $out='';
          if (is_array($options['pl'])) {
              $ad=array_diff($options['pl'],$cpl);
              $de=array_diff($cpl,$options['pl']);
  
              $out.=!empty($ad) ?
                  '<h2>'._("Enabled plugins").'</h2><ul><li>'.implode("</li>\n<li>",$ad).'</li></ul>':'';
              $out.=!empty($de) ?
                  '<h2>'._("Disabled plugins").'</h2><ul><li>'.implode("</li>\n<li>",$de).'</li></ul>':'';
          }
  
          if (is_array($options['pr'])) {
              $ad=array_diff($options['pr'],$cpr);
              $de=array_diff($cpr,$options['pr']);
              $out.=!empty($ad) ?
                  '<h2>'._("Enabled processors").'</h2><ul><li>'.implode("</li>\n<li>",$ad).'</li></ul>':'';
              $out.=!empty($de) ?
                  '<h2>'._("Disabled processors").'</h2><ul><li>'.implode("</li>\n<li>",$de).'</li></ul>':'';
          }
  
          $cp->update('plugins',serialize($options['pl']));
          $cp->update('processors',serialize($options['pr']));
          $options['title']=_("Plugin/Processor settings are updated");
          $formatter->send_title('','',$options);
          print $out;
          $formatter->send_footer('',$options);
          return;
      }
      $options['title']=_("Enable/disable plugins and processors");
      $formatter->send_header('',$options);
      $formatter->send_title('','',$options);
      echo macro_admin($formatter,$options['value'],$options);
      $formatter->send_footer('',$options);
      return;
  }
  
  // vim:et:sts=4:
  ?>
  
  
  
  1.1                  moniwiki/plugin/cacheadmin.php
  
  Index: cacheadmin.php
  ===================================================================
  <?php
  // Copyright 2006 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a cacheadmin plugin for the MoniWiki
  //
  // Usage: ?action=cacheadmin
  //
  // $Id: cacheadmin.php,v 1.1 2006/08/06 15:53:34 wkpark Exp $
  
  function info_CacheAdmin() {
      return array(
          'author'  => 'Won-Kyu Park <wkpark@kldp.org>',
          'date'    => '2006-08-05',
          'name'    => 'CacheAdmin',
          'desc'    => 'CacheAdmin Plugin',
          'url'     => 'MoniWiki:CacheAdminPlugin',
          'version' => substr('$Revision: 1.1 $',1,-1),
          'depend'  => '1.1.1',
          'license' => 'GPL',
       );
  }
  
  function macro_CacheAdmin($formatter,$value='',$options=array()) {
      global $Config;
      $protected=
          array('backlinks','blog','settings','blogchanges',
              'fullsearch','index','keylinks','keywords','keyword',
              'metawiki','pagelinks','pagelist','referer',
              'settings','title','trackback','.','..');
      $protected=array_flip($protected);
  
      $dir=&$Config['cache_dir'];
      $caches=array();
      $handle= @opendir($dir);
      while(1) {
          if (!$handle) break;
          while ($file= readdir($handle)) {
              if (is_dir($dir."/$file")) {
                  if (isset($protected[$file])) continue;
                  $caches[]= $file;
              }
          }
          break;
      }
      @closedir($handle);
  
      if (!empty($Config['cache_public_dir'])) {
          $dir=&$Config['cache_public_dir'];
          $pubcaches=array();
          $handle= @opendir($dir);
          while(1) {
              if (!$handle) break;
              while ($file= readdir($handle)) {
                  if (is_dir($dir."/$file")) {
                      if ($file[0]=='.') continue;
                      $pubcaches[]= $file;
                  }
              }
              break;
          }
          @closedir($handle);
      }
  
      if (!empty($caches)) {
          $j=0;
          $out="<table border='0'><tr>";
          foreach ($caches as $c) {
              ++$j;
              $out.="<td><input type='checkbox' name='val[]' value='$c'/></td><th class='info'>$c</th><td></td>";
              if ($j%3==0) $out.='</tr><tr>';
          }
          $out.='</tr></table>';
          $out= "<form method='post' action=''>$out";
      
          $out.="<input type='submit' value='purge caches' />";
          $out.="<input type='hidden' name='action' value='cacheadmin' />";
  
          $out.="</form>";
          $form1=$out;
          $out='';
      }
  
      if (!empty($pubcaches)) {
          $j=0;
          $out="<br /><table border='0'><tr>";
          foreach ($pubcaches as $c) {
              ++$j;
              $out.="<td><input type='checkbox' name='val[]' value='$c'/></td><th class='info'>$c</th><td></td>";
              if ($j%3==0) $out.='</tr><tr>';
          }
          $out.='</tr></table>';
          $out= "<form method='post' action=''>$out";
      
          $out.="<input type='submit' value='purge public caches' />";
          $out.="<input type='hidden' name='action' value='cacheadmin' />";
          $out.="<input type='hidden' name='type' value='public' />";
  
          $out.="</form>";
      }
      return $form1.$out;
  }
  
  function do_cacheadmin($formatter,$options) {
      global $Config;
      if (in_array($options['id'],$Config['owners']) and
          is_array($options['val'])) {
  
          if ($options['type']!='public') $dir=$Config['cache_dir'];
          else $dir=$Config['cache_public_dir'];
          foreach ($options['val'] as $d) {
              $b=basename($d);
              if (is_dir($dir.'/'.$b)) {
                  print "rmdir_r $b<br />";
                  _rmdir_r($dir.'/'.$b,true);
              }
          }
          return;
      }
      $options['title']=_("Clear cache dirs"); 
      $formatter->send_header('',$options);
      $formatter->send_title('','',$options);
      $ret= macro_CacheAdmin($formatter,$options['value'],$options);
      print $ret;
      $formatter->send_footer('',$options);
      return;
  }
  
  // removes a directory and everything within it
  // from http://kr.php.net/manual/en/function.rmdir.php#55075
  function _rmdir_r($target,$verbose=false,$dry=false) {
      $verbose=$verbose or $dry;
      $exceptions=array('.','..');
      if (!$sourcedir=@opendir($target)) {
          if ($verbose)
              echo '<strong>Couldn&#146;t open '.$target."</strong><br />\n";
          return false;
      }
      while(false!==($sibling=readdir($sourcedir))) {
          if (!in_array($sibling,$exceptions)) {
              $obj=str_replace('//','/',$target.'/'.$sibling);
              if ($verbose)
                  echo '<strong>Processing:</strong> '.$obj."<br />\n";
              if (is_dir($obj))
                  _rmdir_r($obj,$verbose,$dry);
              if (is_file($obj)) {
                  if ($dry)
                      echo "&nbsp;<strong>file:</strong> $obj ...<br />\n";
                  else {
                      $result=@unlink($obj);
                      if ($verbose) {
                          if ($result)
                              echo "$obj has been removed<br />\n";
                          else
                              echo "<strong>Couldn&#146;t remove $obj</strong>";
                      }
                  }
              }
          }
      }
      closedir($sourcedir);
      if ($dry) {
          echo "&nbsp;<strong>dir:</strong> $target ...<br />\n";
      } else {
          if ($result=@rmdir($target)) {
              if ($verbose)
                  echo "Target directory has been removed<br />\n";
              return true;
          }
          if ($verbose)
              echo "<strong>Couldn&#146;t remove target directory</strong>";
      }
      return false;
  }
  
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2006/08/07 00:54:34

  Modified:    plugin   Comment.php
  Log:
  add a css id 'add_comment'
  
  Revision  Changes    Path
  1.25      +3 -1      moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- Comment.php	15 Jul 2006 01:16:00 -0000	1.24
  +++ Comment.php	6 Aug 2006 15:54:34 -0000	1.25
  @@ -6,7 +6,7 @@
   // Usage: [[Comment]], ?action=comment
   //
   //
  -// $Id: Comment.php,v 1.24 2006/07/15 01:16:00 wkpark Exp $
  +// $Id: Comment.php,v 1.25 2006/08/06 15:54:34 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $DBInfo;
  @@ -50,6 +50,8 @@
     if ($value)
       $hidden.='<input type="hidden" name="comment_id" value="'.$value.'" />';
     $form = "<form name='editform' method='post' action='$url'>\n";
  +  if ($use_meta)
  +    $form.="<a id='add_comment' name='add_comment'></a>";
     $form.= <<<FORM
   <textarea class="wiki" name="savetext"
    rows="$rows" cols="$cols">$savetext</textarea><br />
  
  
  


wkpark      2006/08/07 00:55:41

  Modified:    plugin/processor hello.php
  Log:
  fix vim tag: s/ts/sts/
  
  Revision  Changes    Path
  1.5       +2 -2      moniwiki/plugin/processor/hello.php
  
  Index: hello.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/hello.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- hello.php	5 Sep 2005 17:11:46 -0000	1.4
  +++ hello.php	6 Aug 2006 15:55:41 -0000	1.5
  @@ -6,7 +6,7 @@
   // Usage: {{{#!hello Name
   // Hello World
   // }}}
  -// $Id: hello.php,v 1.4 2005/09/05 17:11:46 wkpark Exp $
  +// $Id: hello.php,v 1.5 2006/08/06 15:55:41 wkpark Exp $
   
   function processor_hello($formatter,$value="",$options=array()) {
       if ($value[0]=='#' and $value[1]=='!')
  @@ -22,5 +22,5 @@
       return $out;
   }
   
  -// vim:et:ts=4:
  +// vim:et:sts=4:
   ?>
  
  
  


wkpark      2006/08/07 00:58:26

  Modified:    .        wiki.php
  Log:
  support rcsimport/rcsexport for the Version_RCS class
  
  Revision  Changes    Path
  1.331     +26 -3     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.330
  retrieving revision 1.331
  diff -u -r1.330 -r1.331
  --- wiki.php	6 Aug 2006 14:47:18 -0000	1.330
  +++ wiki.php	6 Aug 2006 15:58:25 -0000	1.331
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.330 2006/08/06 14:47:18 wkpark Exp $
  +// $Id: wiki.php,v 1.331 2006/08/06 15:58:25 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.330 $',1,-1);
  +$_revision = substr('$Revision: 1.331 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -525,7 +525,7 @@
     function is_protected($action="read",$options) {
       # password protected POST actions
       $protected_actions=array(
  -      "deletepage","deletefile","rename","rcspurge","rcs","chmod","backup","restore");
  +      "deletepage","deletefile","rename","rcspurge","rcs","chmod","backup","restore","rcsimport");
       $action=strtolower($action);
   
       if (in_array($action,$protected_actions)) {
  @@ -1309,6 +1309,29 @@
       }
       return $rev;
     }
  +  function export($pagename) {
  +    $keyname=$this->DB->_getPageKey($pagename);
  +    $fname=$this->DB->text_dir."/RCS/$keyname,v";
  +    $fp=fopen($fname,'r');
  +    if (is_resource($fp)) {
  +      $sz=filesize($fname);
  +      $out=fread($fp,$sz);
  +      fclose($fp);
  +    }
  +    return $out;
  +  }
  +
  +  function import($pagename,$rcsfile) {
  +    $keyname=$this->DB->_getPageKey($pagename);
  +    $fname=$this->DB->text_dir."/RCS/$keyname,v";
  +    $fp=fopen($fname,'w');
  +    if (is_resource($fp)) {
  +      fwrite($fp,$rcsfile);
  +      fclose($fp);
  +      return true;
  +    }
  +    return false;
  +  }
   }
   
   class Cache_text {
  
  
  


wkpark      2006/08/07 00:58:26

  Added:       plugin   rcsexport.php rcsimport.php
  Log:
  support rcsimport/rcsexport for the Version_RCS class
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/rcsexport.php
  
  Index: rcsexport.php
  ===================================================================
  <?php
  // Copyright 2006 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a rcsexport plugin for the MoniWiki
  //
  // Usage: [[Test]]
  //
  // $Id: rcsexport.php,v 1.1 2006/08/06 15:58:26 wkpark Exp $
  
  function do_rcsexport($formatter,$options) {
      global $DBInfo;
      if (!$DBInfo->version_class) {
          $msg= _("Version info is not available in this wiki");
          return "<h2>$msg</h2>";
      }
  
      getModule('Version',$DBInfo->version_class);
      $class='Version_'.$DBInfo->version_class;
      $version=new $class ($DBInfo);
      header('Content-type:text/plain');
      if (method_exists($version,'export'))
          print chunk_split(base64_encode($version->export($options['page'])));
      else
          print 'Not supported';
  }
  
  // vim:et:sts=4:
  ?>
  
  
  
  1.1                  moniwiki/plugin/rcsimport.php
  
  Index: rcsimport.php
  ===================================================================
  <?php
  // Copyright 2006 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a rcsimport plugin for the MoniWiki
  //
  // Usage: [[Test]]
  //
  // $Id: rcsimport.php,v 1.1 2006/08/06 15:58:26 wkpark Exp $
  
  function do_post_rcsimport($formatter,$options) {
      global $DBInfo;
      if (!$DBInfo->version_class) {
          $msg= _("Version info is not available in this wiki");
          return "<h2>$msg</h2>";
      }
      if (!trim($options['rcsfile'])) {
          $formatter->send_header('',$options);
          $formatter->send_title('','',$options);
          $COLS_MSIE= 80;
          $COLS_OTHER= 85;
  
          $cols= preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']) ? $COLS_MSIE : $COLS_OTHER;
  
          print <<<FORM
  <form method='post' action=''>
  <div>
  <textarea name='rcsfile' class='' cols='$cols' rows='20'>
  </textarea></div>
  <input type='hidden' name='action' value='rcsimport' />
  FORM;
          if ($DBInfo->security->is_protected("rcsimport",$options))
              print " <input type='password' name='passwd' /> ";
          print <<<FORM
  <input type='submit' value='Import RCS' />
  </form>
  FORM;
          $formatter->send_footer('',$options);
          return;
      }
  
      getModule('Version',$DBInfo->version_class);
      $class='Version_'.$DBInfo->version_class;
      $version=new $class ($DBInfo);
      header('Content-type:text/plain');
      if (method_exists($version,'import')) {
          $content=base64_decode($options['rcsfile']);
          $version->import($options['page'],$content);
      }
      print 'OK';
  }
  
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2006/08/10 19:59:24

  Modified:    plugin   UploadFile.php
  Log:
  add a "upload_max_filesize" info message
  
  Revision  Changes    Path
  1.25      +2 -1      moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- UploadFile.php	9 Jul 2006 10:26:17 -0000	1.24
  +++ UploadFile.php	10 Aug 2006 10:59:24 -0000	1.25
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.24 2006/07/09 10:26:17 wkpark Exp $
  +// $Id: UploadFile.php,v 1.25 2006/08/10 10:59:24 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -153,6 +153,7 @@
     if (!$test) {
       $msg.=sprintf(_("Fail to copy \"%s\" to \"%s\""),$upfilename,$file_path);
       $msg.='<br />'._("Please check your php.ini setting");
  +    $msg.='<br />'."<tt>upload_max_filesize=".ini_get('upload_max_filesize').'</tt>';
       continue;
     }
   
  
  
  


wkpark      2006/08/11 22:16:35

  Modified:    plugin   download.php
  Log:
  apply RFC 2231 for Opera 9, RFC 2047 for Mozilla and rawurlencode() for IE
  $use_resume_download,$download_mode added.
  
  Revision  Changes    Path
  1.14      +91 -4     moniwiki/plugin/download.php
  
  Index: download.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/download.php,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- download.php	29 Jul 2006 07:13:58 -0000	1.13
  +++ download.php	11 Aug 2006 13:16:35 -0000	1.14
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // download action plugin for the MoniWiki
   //
  -// $Id: download.php,v 1.13 2006/07/29 07:13:58 wkpark Exp $
  +// $Id: download.php,v 1.14 2006/08/11 13:16:35 wkpark Exp $
   //
   function do_download($formatter,$options) {
     global $DBInfo;
  @@ -15,6 +15,9 @@
       return; 
     }
     $value=&$options['value'];
  +  $down_mode=$options['mode']{0}=='a' ? 'attachment':
  +    ($DBInfo->download_mode ? $DBInfo->download_mode:'inline');
  +
     if (($p=strpos($value,':')) !== false or ($p=strpos($value,'/')) !== false) {
       $subpage=substr($value,0,$p);
       $file=substr($value,$p+1);
  @@ -52,8 +55,10 @@
   
     $file=$subdir.$file[count($file)-1];
   
  -  if (!file_exists("$dir/$file")) 
  +  if (!file_exists("$dir/$file")) {
  +    header("HTTP/1.1 404 Not Found");
       return;
  +  }
   
     $lines = @file($DBInfo->data_dir.'/mime.types');
     if ($lines) {
  @@ -69,13 +74,36 @@
       }
     } else
       $mime=array();
  +
  +  # set filename
     if (preg_match("/\.(.{1,4})$/",$file,$match))
       $mimetype=strtolower($mime[$match[1]]);
     if (!$mimetype) $mimetype="application/x-unknown";
   
  +  if (strstr($_SERVER['HTTP_USER_AGENT'], 'MSIE')) {
  +    // IE: rawurlencode()
  +    $fname='filename="'.rawurlencode($file).'"';
  +    // fix IE bug
  +    $fname = preg_replace('/\./', '%2e',
  +        $fname, substr_count($fname, '.') - 1);
  +
  +    #header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  +    #header('Pragma: public');
  +  } else if (strstr($_SERVER['HTTP_USER_AGENT'], 'Opera')) {
  +    // Opera 9: RFC 2231
  +    $fname='filename*='.$DBInfo->charset."*".rawurlencode($file).'';
  +  } else // Mozilla: RFC 2047
  +    $fname='filename="=?'.$DBInfo->charset.'?B?'.base64_encode($file).'?="';
  +
  +  if ($DBInfo->use_resume_download) {
  +    $header=array("Content-Description: MoniWiki PHP Downloader");
  +    dl_file_resume($mimetype,$dir.'/'.$file,$fname,$down_mode,$header);
  +    return; 
  +  }
  +
     header("Content-Type: $mimetype\r\n");
  -  header("Content-Disposition: inline; filename=\"$file\"" );
  -  #header("Content-Disposition: attachment; filename=\"$file\"" );
  +  header("Content-Length: ".filesize($dir.'/'.$file));
  +  header("Content-Disposition: $down_mode; ".$fname );
     header("Content-Description: MoniWiki PHP Downloader" );
     Header("Pragma: no-cache");
     Header("Expires: 0");
  @@ -87,4 +115,63 @@
   function macro_download($formatter,$value) {
     return $formatter->link_to("?action=download&amp;value=$value",$value);
   }
  +
  +function dl_file_resume($ctype,$file,$fname,$mode='inline',$header='') {
  +   # from http://kr2.php.net/manual/en/function.fread.php#63893
  +   # ans some modification
  +  
  +   //Gather relevent info about file
  +   $len = filesize($file);
  +  
  +   //Begin writing headers
  +   header("Cache-Control:");
  +   header("Cache-Control: public");
  +   if (is_array($header)) foreach($header as $h) header($h);
  +  
  +   //Use the switch-generated Content-Type
  +   header("Content-Type: $ctype");
  +   if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE")) {
  +       # workaround for IE filename bug with multiple periods / multiple dots
  +       # in filename that adds square brackets to filename
  +       # - eg. setup.abc.exe becomes setup[1].abc.exe
  +       $fname = preg_replace('/\./', '%2e',
  +           $fname, substr_count($fname, '.') - 1);
  +   }
  +   header("Accept-Ranges: bytes");
  +  
  +   $size=filesize($file);
  +   //check if http_range is sent by browser (or download manager)
  +   if(isset($_SERVER['HTTP_RANGE'])) {
  +       list($a, $range)=explode("=",$_SERVER['HTTP_RANGE']);
  +       //if yes, download missing part
  +       str_replace($range, "-", $range);
  +       $size2=$size-1;
  +       $new_length=$size2-$range;
  +       header("HTTP/1.1 206 Partial Content");
  +       header("Content-Range: bytes $range$size2/$size");
  +       header("Content-Length: $new_length");
  +       header("Content-Disposition: $mode; $fname");
  +   } else {
  +       $size2=$size-1;
  +       header("Content-Range: bytes 0-$size2/$size");
  +       header("Content-Length: ".$size);
  +       header("Content-Disposition: $mode; $fname");
  +   }
  +   //open the file
  +   $fp=fopen("$file","rb");
  +   //seek to start of missing part
  +   fseek($fp,$range);
  +   //start buffered download
  +   while(!feof($fp)){
  +       //reset time limit for big files
  +       set_time_limit(0);
  +       print(fread($fp,1024*8));
  +       flush();
  +       ob_flush();
  +   }
  +   fclose($fp);
  +   exit;
  +}
  +
  +// vim:et:sts=4:
   ?>
  
  
  


wkpark      2006/08/11 22:50:17

  Modified:    plugin   SlideShow.php
  Log:
  change border="0" to style='border:0'
  
  Revision  Changes    Path
  1.7       +10 -10    moniwiki/plugin/SlideShow.php
  
  Index: SlideShow.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SlideShow.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SlideShow.php	26 Jan 2006 03:10:35 -0000	1.6
  +++ SlideShow.php	11 Aug 2006 13:50:17 -0000	1.7
  @@ -5,7 +5,7 @@
   //
   // Usage: [[SlideShow(pagename)]]
   //
  -// $Id: SlideShow.php,v 1.6 2006/01/26 03:10:35 wkpark Exp $
  +// $Id: SlideShow.php,v 1.7 2006/08/11 13:50:17 wkpark Exp $
   
   function macro_SlideShow($formatter,$value='',$options=array()) {
       global $DBInfo;
  @@ -100,43 +100,43 @@
               $dep.'&amp;p=1');
           $icon=$options['action'] ? 'start':'next';
           $start= '<a href="'.$slink.'" title="'._("Start:").' '.$s_title.'">'.
  -            '<img src="'.$icon_dir.$icon.'.png'.'" border="0" alt="&lt;|" /></a>';
  +            '<img src="'.$icon_dir.$icon.'.png'.'" style="border:0" alt="&lt;|" /></a>';
       } else {
           $start= 
  -            '<img src="'.$icon_dir.'start_off.png'.'" border="0" alt="&lt;|" /></a>';
  +            '<img src="'.$icon_dir.'start_off.png'.'" style="border:0" alt="&lt;|" /></a>';
       }
       if ($e_title!='' and $options['action']) {
           $elink= $formatter->link_url($urlname,'?action='.$act.
               $dep.'&amp;p='.$sz);
           $end= '<a href="'.$elink.'" title="'._("End:").' '.$e_title.'">'.
  -            '<img src="'.$icon_dir.'end.png'.'" border="0" alt="|>" /></a>';
  +            '<img src="'.$icon_dir.'end.png'.'" style="border:0" alt="|>" /></a>';
       } else {
           $end= 
  -            '<img src="'.$icon_dir.'end_off.png'.'" border="0" alt="|>" /></a>';
  +            '<img src="'.$icon_dir.'end_off.png'.'" style="border:0" alt="|>" /></a>';
       }
       if ($n_title!='' and $options['action']) {
           $np=$sect+1;
           $nlink= $formatter->link_url($urlname,'?action='.$act.
               $dep.'&amp;p='.($sect+1));
           $next= '<a href="'.$nlink.'" title="'._("Next:").' '.$n_title.'">'.
  -            '<img src="'.$icon_dir.'next.png'.'" border="0" alt=">" /></a>';
  +            '<img src="'.$icon_dir.'next.png'.'" style="border:0" alt=">" /></a>';
       } else {
           $next= 
  -            '<img src="'.$icon_dir.'next_off.png'.'" border="0" alt=">" /></a>';
  +            '<img src="'.$icon_dir.'next_off.png'.'" style="border:0" alt=">" /></a>';
       }
       if ($p_title!='') {
           $pp=$sect-1;
           $plink= $formatter->link_url($urlname,'?action='.$act.
               $dep.'&amp;p='.($sect-1));
           $prev= '<a href="'.$plink.'" title="'._("Prev:").' '.$p_title.'">'.
  -            '<img src="'.$icon_dir.'prev.png'.'" border="0" alt="<" /></a>';
  +            '<img src="'.$icon_dir.'prev.png'.'" style="border:0" alt="<" /></a>';
       } else {
           $prev= 
  -            '<img src="'.$icon_dir.'prev_off.png'.'" border="0" alt="<" /></a>';
  +            '<img src="'.$icon_dir.'prev_off.png'.'" style="border:0" alt="<" /></a>';
       }
       $rlink= $formatter->link_url($urlname,'?action=show');
       $return= '<a href="'.$rlink.'" title="'._("Return").' '.$pgname.'">'.
  -        '<img src="'.$icon_dir.'up.png'.'" border="0" alt="^" /></a>';
  +        '<img src="'.$icon_dir.'up.png'.'" style="border:0" alt="^" /></a>';
       if ($options['action']) {
           $form0='<form method="post" onsubmit="return false" action="'.$rlink.'">';
           $form0.='<input type="hidden" name="d" value="'.$depth.'" />';
  
  
  


wkpark      2006/08/11 22:59:30

  Modified:    .        wiki.php
  Log:
  make more xhtml 1.0 strict
   - border='0' to style='border:0' etc.
   - remove name tags
   - remove language="JavaScript" attributes
   - change <u> to <em class='underline'>
   - change <font> to <span>
  fixed $use_smartdiff related problem
  fixed first arg of the head_repl()
  support <li value='digit'>
  remove "class='wiki'" tag from <hr />
  added $interwiki_target option and remove taget="wiki" by default.
  fix for table syntax in lists (partially support)
  remove {{{#red text}}} syntax and support texttile styling like as {color:red}
  
  Revision  Changes    Path
  1.332     +75 -66    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.331
  retrieving revision 1.332
  diff -u -r1.331 -r1.332
  --- wiki.php	6 Aug 2006 15:58:25 -0000	1.331
  +++ wiki.php	11 Aug 2006 13:59:30 -0000	1.332
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.331 2006/08/06 15:58:25 wkpark Exp $
  +// $Id: wiki.php,v 1.332 2006/08/11 13:59:30 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.331 $',1,-1);
  +$_revision = substr('$Revision: 1.332 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -161,7 +161,8 @@
   function goto_form($action,$type="",$form="") {
     if ($type==1) {
       return "
  -<form name='go' id='go' method='get' action='$action'>
  +<form id='go' method='get' action='$action'>
  +<div>
   <span title='TitleSearch'>
   <input type='radio' name='action' value='titlesearch' />
   Title</span>
  @@ -170,11 +171,13 @@
   Contents</span>&nbsp;
   <input type='text' name='value' class='goto' accesskey='s' size='20' />
   <input type='submit' name='status' value='Go' style='width:23px' />
  +</div>
   </form>
   ";
     } else if ($type==2) {
       return "
  -<form name='go' id='go' method='get' action='$action'>
  +<form id='go' method='get' action='$action'>
  +<div>
   <select name='action' style='width:60px'>
   <option value='goto'>goto</option>
   <option value='titlesearch'>TitleSearch</option>
  @@ -182,11 +185,12 @@
   </select>
   <input type='text' name='value' class='goto' accesskey='s' size='20' />
   <input type='submit' name='status' value='Go' />
  +</div>
   </form>
   ";
     } else if ($type==3) {
       return "
  -<form name='go' id='go' method='get' action='$action'>
  +<form id='go' method='get' action='$action'>
   <table class='goto'>
   <tr><td nowrap='nowrap' style='width:220px'>
   <input type='text' name='value' size='28' accesskey='s' style='width:110px' />
  @@ -205,10 +209,12 @@
   ";
     } else {
       return <<<FORM
  -<form name='go' id='go' method='get' action='$action' onsubmit="return moin_submit();">
  +<form id='go' method='get' action='$action' onsubmit="return moin_submit();">
  +<div>
   <input type='text' name='value' size='20' accesskey='s' class='goto' style='width:100px' />
   <input type='hidden' name='action' value='goto' />
   <input type='submit' name='status' value='Go' style='width:23px;' />
  +</div>
   </form>
   FORM;
     }
  @@ -221,7 +227,7 @@
     $prefix=get_scriptname();
     $sep= $Config['query_prefix'];
     print <<<EOS
  -<script language="JavaScript" type="text/javascript">
  +<script type="text/javascript">
   /*<![CDATA[*/
   url_prefix="$prefix";
   _qp="$sep";
  @@ -600,7 +606,7 @@
       $this->kbd_script= $this->url_prefix.'/css/kbd.js';
       $this->logo_img= $this->imgs_dir.'/moniwiki-logo.gif';
       $this->logo_page= $this->frontpage;
  -    $this->logo_string= '<img src="'.$this->logo_img.'" alt="[logo]" border="0" align="middle" />';
  +    $this->logo_string= '<img src="'.$this->logo_img.'" alt="[logo]" style="vertical-align:middle;border:0px" />';
       $this->metatags='<meta name="robots" content="noindex,nofollow" />';
       $this->use_smileys=1;
       $this->hr="<hr class='wikiHr' />";
  @@ -690,26 +696,26 @@
       if (file_exists($imgs_realdir.'/'.$iconset.'http.png'))
         $this->imgs_dir_url=$this->imgs_dir.'/'.$iconset;
   
  -    $this->icon['upper']="<img src='$imgdir/${iconset}upper.$ext' alt='U' align='middle' border='0' />";
  -    $this->icon['edit']="<img src='$imgdir/${iconset}edit.$ext' alt='E' align='middle' border='0' />";
  -    $this->icon['diff']="<img src='$imgdir/${iconset}diff.$ext' alt='D' align='middle' border='0' />";
  -    $this->icon['del']="<img src='$imgdir/${iconset}deleted.$ext' alt='(del)' align='middle' border='0' />";
  -    $this->icon['info']="<img src='$imgdir/${iconset}info.$ext' alt='I' align='middle' border='0' />";
  -    $this->icon['rss']="<img src='$imgdir/${iconset}rss.$ext' alt='RSS' align='middle' border='0' />";
  -    $this->icon['show']="<img src='$imgdir/${iconset}show.$ext' alt='R' align='middle' border='0' />";
  -    $this->icon['find']="<img src='$imgdir/${iconset}search.$ext' alt='S' align='middle' border='0' />";
  -    $this->icon['help']="<img src='$imgdir/${iconset}help.$ext' alt='H' align='middle' border='0' />";
  -    $this->icon['www']="<img src='$imgdir/${iconset}www.$ext' alt='www' align='middle' border='0' />";
  -    $this->icon['mailto']="<img src='$imgdir/${iconset}email.$ext' alt='M' align='middle' border='0' />";
  -    $this->icon['create']="<img src='$imgdir/${iconset}create.$ext' alt='N' align='middle' border='0' />";
  -    $this->icon['new']="<img src='$imgdir/${iconset}new.$ext' alt='U' align='middle' border='0' />";
  -    $this->icon['updated']="<img src='$imgdir/${iconset}updated.$ext' alt='U' align='middle' border='0' />";
  +    $this->icon['upper']="<img src='$imgdir/${iconset}upper.$ext' alt='U' style='vertical-align:middle;border:0px' />";
  +    $this->icon['edit']="<img src='$imgdir/${iconset}edit.$ext' alt='E' style='vertical-align:middle;border:0px' />";
  +    $this->icon['diff']="<img src='$imgdir/${iconset}diff.$ext' alt='D' style='vertical-align:middle;border:0px' />";
  +    $this->icon['del']="<img src='$imgdir/${iconset}deleted.$ext' alt='(del)' style='vertical-align:middle;border:0px' />";
  +    $this->icon['info']="<img src='$imgdir/${iconset}info.$ext' alt='I' style='vertical-align:middle;border:0px' />";
  +    $this->icon['rss']="<img src='$imgdir/${iconset}rss.$ext' alt='RSS' style='vertical-align:middle;border:0px' />";
  +    $this->icon['show']="<img src='$imgdir/${iconset}show.$ext' alt='R' style='vertical-align:middle;border:0px' />";
  +    $this->icon['find']="<img src='$imgdir/${iconset}search.$ext' alt='S' style='vertical-align:middle;border:0px' />";
  +    $this->icon['help']="<img src='$imgdir/${iconset}help.$ext' alt='H' style='vertical-align:middle;border:0px' />";
  +    $this->icon['www']="<img src='$imgdir/${iconset}www.$ext' alt='www' style='vertical-align:middle;border:0px' />";
  +    $this->icon['mailto']="<img src='$imgdir/${iconset}email.$ext' alt='M' style='vertical-align:middle;border:0px' />";
  +    $this->icon['create']="<img src='$imgdir/${iconset}create.$ext' alt='N' style='vertical-align:middle;border:0px' />";
  +    $this->icon['new']="<img src='$imgdir/${iconset}new.$ext' alt='U' style='vertical-align:middle;border:0px' />";
  +    $this->icon['updated']="<img src='$imgdir/${iconset}updated.$ext' alt='U' style='vertical-align:middle;border:0px' />";
       $this->icon['user']="UserPreferences";
  -    $this->icon['home']="<img src='$imgdir/${iconset}home.$ext' alt='M' align='middle' border='0' />";
  -    $this->icon['main']="<img src='$imgdir/${iconset}main.$ext' class='icon' alt='^' align='middle' border='0' />";
  -    $this->icon['print']="<img src='$imgdir/${iconset}print.$ext' alt='P' align='middle' border='0' />";
  -    $this->icon['attach']="<img src='$imgdir/${iconset}attach.$ext' alt='@' align='middle' border='0' />";
  -    $this->icon['external']="<img class='externalLink' src='$imgdir/${iconset}external.$ext' alt='[]' align='middle' border='0' />";
  +    $this->icon['home']="<img src='$imgdir/${iconset}home.$ext' alt='M' style='vertical-align:middle;border:0px' />";
  +    $this->icon['main']="<img src='$imgdir/${iconset}main.$ext' class='icon' alt='^' style='vertical-align:middle;border:0px' />";
  +    $this->icon['print']="<img src='$imgdir/${iconset}print.$ext' alt='P' style='vertical-align:middle;border:0px' />";
  +    $this->icon['attach']="<img src='$imgdir/${iconset}attach.$ext' alt='@' style='vertical-align:middle;border:0px' />";
  +    $this->icon['external']="<img class='externalLink' src='$imgdir/${iconset}external.$ext' alt='[]' style='vertical-align:middle;border:0px' />";
       $this->icon_sep=" ";
       $this->icon_bra=" ";
       $this->icon_cat=" ";
  @@ -1649,6 +1655,8 @@
       $this->use_easyalias=$DBInfo->use_easyalias;
       $this->submenu=$DBInfo->submenu;
       $this->email_guard=$DBInfo->email_guard;
  +    $this->interwiki_target=$DBInfo->interwiki_target ?
  +      ' target="'.$DBInfo->interwiki_target.'"':'';
   
       if (($p=strpos($page->name,"~")))
         $this->group=substr($page->name,0,$p+1);
  @@ -1690,14 +1698,14 @@
                        );
       $this->baserepl=array("&lt;\\1",
                        "<strong>\\1</strong>","<strong>\\1</strong>",
  -                     "<i>\\1</i>","<i>\\1</i>",
  +                     "<em>\\1</em>","<em>\\1</em>",
                        "&#96;\\1'","<tt class='wiki'>\\1</tt>",
                        "\$formatter->$DBInfo->hr_type"."_hr('\\1')",
                        "<br clear='all' />",
                        "<sub>\\1</sub>",
                        "<sup>\\1</sup>",
                        "<sup>\\1</sup>",
  -                     "<u>\\1</u>",
  +                     "<em class='underline'>\\1</em>",
                        "<del>\\1</del>",
                        "<del>\\1</del>",
                        #"<br />\n",
  @@ -1946,13 +1954,18 @@
       switch ($url[0]) {
       case '{':
         $url=substr($url,3,-3);
  +      if (preg_match('/^({([^{}]+)})/s',$url,$sty)) { # textile like styling
  +        $url=substr($url,strlen($sty[1]));
  +        return "<span style='$sty[2]'>$url</span>";
  +      }
         if ($url[0]=='#' and ($p=strpos($url,' '))) {
           $col=strtok($url,' '); $url=strtok('');
  -        if (!preg_match('/^#[0-9a-f]{6}$/',$col)) $col=substr($col,1);
  -        return "<font color='$col'>$url</font>";
  +        if (preg_match('/^#[0-9a-f]{6}$/',$col))
  +          return "<span style='color:$col'>$url</span>";
  +        $url=$col.' '.$url;
         } else if (preg_match('/^((?:\+|\-)([1-6]?))(?=\s)(.*)$/',$url,$m)) {
           if ($m[2]=='') $m[1].='1';
  -        return "<font size='$m[1]'>$m[3]</font>";
  +        return "<span style='size:$m[1]'>$m[3]</span>";
         }
         if ($url[0]==' ' and in_array($url[1],array('#','-','+')) !==false)
           $url=substr($url,1);
  @@ -2019,7 +2032,7 @@
           else {
             if (preg_match("/^(http|ftp).*\.(png|gif|jpeg|jpg)$/i",$text)) {
               $text=str_replace('&','&amp;',$text);
  -            return "<a href='$link' $attr $this->external_target title='$url'><img border='0' alt='$url' src='$text' /></a>";
  +            return "<a href='$link' $attr $this->external_target title='$url'><img style='border:0px' alt='$url' src='$text' /></a>";
             }
             if ($this->external_on)
               $external_link='<span class="externalLink">('.$url.')</span>';
  @@ -2121,8 +2134,8 @@
         $sy=$DBInfo->intericon[$wiki][1];
       }
   
  -    $img="<a class=\"interwiki\" href='$url' target='wiki'>".
  -         "<img class=\"interwiki\" alt=\"$wiki:\" src='$icon' border='0' height='$sy' ".
  +    $img="<a class=\"interwiki\" href='$url' $this->interwiki_target>".
  +         "<img class=\"interwiki\" alt=\"$wiki:\" src='$icon' style='border:0' height='$sy' ".
            "width='$sx' title='$wiki:' /></a>";
       #if (!$text) $text=str_replace("%20"," ",$page);
       if (!$text) $text=urldecode($page);
  @@ -2134,15 +2147,15 @@
             $text=$this->macro_repl('Attachment',$fname);
           else {
             $text=qualifiedUrl($DBInfo->url_prefix.'/'.$ntext);
  -          $text= "<img border='0' alt='$text' src='$text' />";
  +          $text= "<img style='border:0' alt='$text' src='$text' />";
           }
         } else
  -        $text= "<img border='0' alt='$text' src='$text' />";
  +        $text= "<img style='border:0' alt='$text' src='$text' />";
         $img='';
       }
   
       if (preg_match("/\.(png|gif|jpeg|jpg)$/i",$url))
  -      return "<a href='".$url."' $attr title='$wiki:$page'><img border='0' align='middle' alt='$text' src='$url' /></a>$extra";
  +      return "<a href='".$url."' $attr title='$wiki:$page'><img style='vertical-align:middle;border:0px' alt='$text' src='$url' /></a>$extra";
   
       if (!$text) return $img;
       return $img. "<a href='".$url."' $attr title='$wiki:$page'>$text</a>$extra$sep";
  @@ -2224,11 +2237,11 @@
               $word=$this->macro_repl('Attachment',$fname);
             } else {
               $text=qualifiedUrl($DBInfo->url_prefix.'/'.$ntext);
  -            $word= "<img border='0' alt='$text' src='$text' /></a>";
  +            $word= "<img style='border:0' alt='$text' src='$text' /></a>";
             }
           } else {
             $text=str_replace('&','&amp;',$text);
  -          $word="<img border='0' alt='$word' src='$text' /></a>";
  +          $word="<img style='border:0' alt='$word' src='$text' /></a>";
           }
         } else $word=$text;
       } else {
  @@ -2363,7 +2376,7 @@
     }
   
     function head_repl($depth,$head) {
  -    $dep=strlen($depth);
  +    $dep=&$depth;
       $this->nobr=1;
   
       $head=str_replace('\"','"',$head); # revert \\" to \"
  @@ -2420,7 +2433,7 @@
       if ($this->perma_icon)
       $perma=" <a class='perma' href='#s$prefix-$num'>$this->perma_icon</a>";
   
  -    return "$close$open$edit<h$dep><a id='s$prefix-$num' name='s$prefix-$num'></a>$head$perma</h$dep>";
  +    return "$close$open$edit<h$dep><a id='s$prefix-$num'></a>$head$perma</h$dep>";
     }
   
     function macro_repl($macro,$value='',$options='') {
  @@ -2529,8 +2542,8 @@
       $alt=str_replace("<","&lt;",$smiley);
   
       if (preg_match('/^(http|ftp):/',$img))
  -      return "<img src='$img' border='0' class='smiley' alt='$alt' title='$alt' />";
  -    return "<img src='$this->imgs_dir/$img' border='0' class='smiley' alt='$alt' title='$alt' />";
  +      return "<img src='$img' style='border:0' class='smiley' alt='$alt' title='$alt' />";
  +    return "<img src='$this->imgs_dir/$img' style='border:0' class='smiley' alt='$alt' title='$alt' />";
     }
   
     function link_url($pageurl,$query_string="") {
  @@ -2570,12 +2583,12 @@
   
     function fancy_hr($rule) {
       $sz=($sz=strlen($rule)-4) < 6 ? ($sz ? $sz+2:0):8;
  -    $size=$sz ? " size='$sz'":'';
  -    return "<div class='separator'><hr$size class='wiki' /></div>";
  +    $size=$sz ? " style='height:{$sz}px'":'';
  +    return "<div class='separator'><hr$size /></div>";
     }
   
     function simple_hr() {
  -    return "<div class='separator'><hr class='wiki' /></div>";
  +    return "<div class='separator'><hr /></div>";
     }
   
     function _list($on,$list_type,$numtype="",$closetype="",
  @@ -2992,7 +3005,6 @@
                $indtype="ul";
              } elseif (preg_match("/^(([1-9]\d*|[aAiI])\.)(#\d+)?\s/",$line,$limatch)){
                $myindlen=$indlen+strlen($limatch[1])+1;
  -             $liopen='<li>'; // XXX
                $line=substr($line,strlen($limatch[0]));
                if ($indent_list[$in_li] == $indlen) {
                   $close.=$this->_li(0);
  @@ -3002,6 +3014,10 @@
                if ($limatch[3])
                  $numtype.=substr($limatch[3],1);
                $indtype="ol";
  +             $lival='';
  +             if ($in_li and $limatch[3])
  +               $lival=' value="'.substr($limatch[3],1).'"';
  +             $liopen="<li$lival>"; // XXX
              } elseif (preg_match("/^([^:]+)::\s/",$line,$limatch)) {
                $myindlen=$indlen;
                $line=preg_replace("/^[^:]+::\s/",
  @@ -3072,8 +3088,8 @@
         }
   
         # FIXME for smart diff XXX (one line ins/del)
  -      if ($this->use_smartdiff)
  -        $line=preg_replace('/&lt;(\/)?(ins|del)/','<\\1\\2',$line);
  +      ##if ($this->use_smartdiff)
  +      ##  $line=preg_replace('/&lt;(\/)?(ins|del)/','<\\1\\2',$line);
   
         # InterWiki, WikiName, {{{ }}}, !WikiName, ?single, ["extended wiki name"]
         # urls, [single bracket name], [urls text], [[macro]]
  @@ -3081,10 +3097,6 @@
           array(&$this,'link_repl'),$line);
         #$line=preg_replace("/(".$wordrule.")/e","\$this->link_repl('\\1')",$line);
   
  -      # FIXME for smart diff XXX (one line ins/del)
  -      if ($this->use_smartdiff)
  -        $line=preg_replace('/&lt;(\/)?(ins|del)/','<\\1\\2',$line);
  -
         # Headings
         if (preg_match("/(?<!=)(={1,5})\s+(.*)\s+\\1\s?$/",$line,$m)) {
           $this->sect_num++;
  @@ -3111,9 +3123,9 @@
             $lab=_("edit");
             $edit="<div class='sectionEdit' style='float:right;'>[<a href='$url'$sect_attr>$lab</a>]</div>\n";
             $anchor_id='sect-'.$this->sect_num;
  -          $anchor="<a id='$anchor_id' name='$anchor_id'></a>";
  +          $anchor="<a id='$anchor_id'></a>";
           }
  -        $line=$anchor.$edit.$this->head_repl($m[1],$m[2]);
  +        $line=$anchor.$edit.$this->head_repl(strlen($m[1]),$m[2]);
           $edit='';$anchor='';
         }
   
  @@ -3206,8 +3218,8 @@
       } # end rendering loop
       # for smart_diff (div)
       if ($this->use_smartdiff)
  -      $text= preg_replace('/&lt;(\/)?(div( class=.diff-(added|removed).)?)>/',
  -        '<\\2>',$text);
  +      $text= preg_replace('/&lt;(\/)?(...( class=.diff-(added|removed).)?)>/',
  +        '<\\1\\2>',$text);
   
       # highlight text
       if ($this->highlight) {
  @@ -3425,7 +3437,7 @@
         print '<meta http-equiv="Content-Type" content="'.$content_type.
           ';charset='.$DBInfo->charset.'" />';
         print <<<JSHEAD
  -<script language="JavaScript" type="text/javascript">
  +<script type="text/javascript">
   /*<![CDATA[*/
   _url_prefix="$DBInfo->url_prefix";
   /*]]>*/
  @@ -3612,20 +3624,17 @@
       $banner= <<<FOOT
    <a href="http://validator.w3.org/check/referer"><img
     src="$this->imgs_dir/valid-xhtml10.png"
  -  border="0" width="88" height="31"
  -  align="middle"
  +  style="border:0;vertical-align:middle" width="88" height="31"
     alt="Valid XHTML 1.0!" /></a>
   
    <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
     src="$this->imgs_dir/vcss.png" 
  -  border="0" width="88" height="31"
  -  align="middle"
  +  style="border:0;vertical-align:middle" width="88" height="31"
     alt="Valid CSS!" /></a>
   
    <a href="http://moniwiki.sourceforge.net/"><img
     src="$this->imgs_dir/moniwiki-powered.png" 
  -  border="0" width="88" height="31"
  -  align="middle"
  +  style="border:0;vertical-align:middle" width="88" height="31"
     alt="powered by MoniWiki" /></a>
   FOOT;
   
  @@ -3838,7 +3847,7 @@
         $header="<table width='100%' border='0' cellpadding='3' cellspacing='0'>";
         $header.="<tr>";
         if ($DBInfo->logo_string) {
  -         $header.="<td rowspan='2' width='10%' valign='top'>";
  +         $header.="<td rowspan='2' style='width:10%' valign='top'>";
            $header.=$logo;
            $header.="</td>";
         }
  
  
  


wkpark      2006/08/11 23:10:01

  Modified:    .        wikilib.php
  Log:
  remove name tags for the xhtml strict
  change <font color='.. to <span style='color:.. in the processor_php()
  
  Revision  Changes    Path
  1.217     +11 -7     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.216
  retrieving revision 1.217
  diff -u -r1.216 -r1.217
  --- wikilib.php	5 Aug 2006 05:56:44 -0000	1.216
  +++ wikilib.php	11 Aug 2006 14:10:01 -0000	1.217
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.216 2006/08/05 05:56:44 wkpark Exp $
  +// $Id: wikilib.php,v 1.217 2006/08/11 14:10:01 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -742,7 +742,7 @@
   
     # make a edit form
     if (!$options['simple'])
  -    $form.= "<a id='editor' name='editor'></a>\n";
  +    $form.= "<a id='editor'></a>\n";
   
     if ($options['page'])
       $previewurl=$formatter->link_url(_rawurlencode($options['page']),'#preview');
  @@ -876,7 +876,7 @@
     if (!$options['nohints'])
       $form.= macro_EditHints($formatter);
     if (!$options['simple'])
  -    $form.= "<a id='preview' name='preview'></a>";
  +    $form.= "<a id='preview'></a>";
     return $formh.$form.$resizer;
   }
   
  @@ -2236,11 +2236,11 @@
       }
     }
     $formatter->foots[]="<li><tt class='foot'>".
  -                      "<a id='$fnidx' name='$fnidx'/>".
  +                      "<a id='$fnidx' />".
                         "<a href='#r$fnidx'>$text</a></tt> ".
                         "$value</li>";
     $tval=str_replace("'","&#39;",$value);
  -  return "<tt class='foot'><a id='r$fnidx' name='r$fnidx'/>".
  +  return "<tt class='foot'><a id='r$fnidx' />".
       "<a href='#$fnidx' title='$tval'>$text</a></tt>";
   }
   
  @@ -2373,7 +2373,7 @@
      if ($baseurl)
        $TOC.=$close.$open."<dt><a href='$baseurl#s$prefix-$num'>$num$a0 $head $a1</dt>\n";
      else
  -     $TOC.=$close.$open."<dt><a id='toc$prefix-$num' name='toc$prefix-$num' /><a href='#s$prefix-$num'>$num$a0 $head $a1</dt>\n";
  +     $TOC.=$close.$open."<dt><a id='toc$prefix-$num' /><a href='#s$prefix-$num'>$num$a0 $head $a1</dt>\n";
   
     }
   
  @@ -2471,11 +2471,15 @@
   function processor_php($formatter="",$value="") {
     if ($value[0]=='#' and $value[1]=='!')
       list($line,$value)=explode("\n",$value,2);
  -  $php=$value;
  +  if (substr($value,-1,1)=="\n") $value=substr($value,0,-1);
  +  $php=&$value;
     ob_start();
     highlight_string($php);
     $highlighted= ob_get_contents();
     ob_end_clean();
  +  $highlighted=preg_replace(array('@<font color="@','@</font>@'),
  +			array('<span style="color:','</span>'),
  +	$highlighted);
   #  $highlighted=preg_replace("/<code>/","<code style='background-color:#c0c0c0;'>",$highlighted);
   #  $highlighted=preg_replace("/<\/?code>/","",$highlighted);
   #  $highlighted="<pre style='color:white;background-color:black;'>".
  
  
  


wkpark      2006/08/12 16:27:52

  Modified:    .        wiki.php
  Log:
  enhanced table syntax
   - support rowbgcolor syntax like as MoinMoin
   - parse styles to support xhtml1.0 validation
   - remove "wiki" class from td elements
  more strict xhtml
   - remove name tags
   - fix sister indices
  cleanup "smart diff"
  oops! fixed head_repl()
  
  Revision  Changes    Path
  1.333     +137 -39   moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.332
  retrieving revision 1.333
  diff -u -r1.332 -r1.333
  --- wiki.php	11 Aug 2006 13:59:30 -0000	1.332
  +++ wiki.php	12 Aug 2006 07:27:51 -0000	1.333
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.332 2006/08/11 13:59:30 wkpark Exp $
  +// $Id: wiki.php,v 1.333 2006/08/12 07:27:51 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.332 $',1,-1);
  +$_revision = substr('$Revision: 1.333 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -1939,6 +1939,14 @@
       return "<strong class='highlight'>$val</strong>";
     }
   
  +  function _diff_repl($arr) {
  +    if ($arr[1]{0}=="\010") { $tag='ins'; $sty='added'; }
  +    else { $tag='del'; $sty='removed'; }
  +    if (strpos($arr[2],"\n") !== false)
  +      return "<div class='diff-$sty'>".$arr[2]."</div>";
  +    return "<$tag class='diff-$sty'>".$arr[2]."</$tag>";
  +  }
  +
     function write($raw) {
       print $raw;
     }
  @@ -1954,6 +1962,7 @@
       switch ($url[0]) {
       case '{':
         $url=substr($url,3,-3);
  +      $url=str_replace("<","&lt;",$url);
         if (preg_match('/^({([^{}]+)})/s',$url,$sty)) { # textile like styling
           $url=substr($url,strlen($sty[1]));
           return "<span style='$sty[2]'>$url</span>";
  @@ -1969,7 +1978,7 @@
         }
         if ($url[0]==' ' and in_array($url[1],array('#','-','+')) !==false)
           $url=substr($url,1);
  -      return "<tt class='wiki'>".str_replace("<","&lt;",$url)."</tt>"; # No link
  +      return "<tt class='wiki'>".$url."</tt>"; # No link
         break;
       case '[':
         $url=substr($url,1,-1);
  @@ -1984,7 +1993,7 @@
       case '#': # Anchor syntax in the MoinMoin 1.1
         $anchor=strtok($url,' ');
         return ($word=strtok('')) ? $this->link_to($anchor,$word):
  -                 "<a name='".($temp=substr($anchor,1))."' id='$temp'></a>";
  +                 "<a id='".($temp=substr($anchor,1))."'></a>";
         break;
       case '*':
         return $this->macro_repl('FootNote',$url);
  @@ -2308,8 +2317,8 @@
               $this->aliases[$page]=$url;
               return $url;
             }
  -          $this->sisters[]="<tt class='foot'>".
  -            "<li><a name='sister$this->sister_idx' id='sister$this->sister_idx'></a>".
  +          $this->sisters[]=
  +            "<li><tt class='foot'><a id='sister$this->sister_idx'></a>".
               "<a href='#rsister$this->sister_idx'>$this->sister_idx&#x203a;</a></tt> ".
               "$sisters </li>";
             $this->pagelinks[$page]=$this->sister_idx++;
  @@ -2318,7 +2327,7 @@
           if ($idx > 0) {
             return "<a href='$url'>$word</a>".
              "<tt class='sister'>".
  -           "<a name='rsister$idx' id='rsister$idx'></a>".
  +           "<a id='rsister$idx'></a>".
              "<a href='#sister$idx'>&#x203a;$idx</a></tt>";
           }
         }
  @@ -2376,7 +2385,7 @@
     }
   
     function head_repl($depth,$head) {
  -    $dep=&$depth;
  +    $dep=$depth;
       $this->nobr=1;
   
       $head=str_replace('\"','"',$head); # revert \\" to \"
  @@ -2472,8 +2481,7 @@
         $ket= '</div>';
       }
       if (!empty($this->use_smartdiff) and
  -      preg_match('/<(ins|del|div) class=\'diff-(added|removed)\'>/',
  -      $value)) $processor='plain';
  +      preg_match("/\006|\010/", $value)) $processor='plain';
       if (!($f=function_exists("processor_".$processor)) and !($c=class_exists('processor_'.$processor))) {
         $pf=getProcessor($processor);
         if (!$pf) {
  @@ -2638,10 +2646,70 @@
       return implode(' ',$attr);
     }
   
  -  function _td_attr($val) {
  -    if (!$val) return '';
  +  function _attr($attr,$sty=array(),$myclass=array(),$align='') {
  +    $aligns=array('center'=>1,'left'=>1,'right'=>1);
  +    $attrs=preg_split('@(\w+\=(?:"[^"]*"|\'[^\']*\')\s*|\w+\=[^\s]+\s*)@',
  +      $attr,-1, PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);
  +
  +    $myattr=array();
  +    foreach ($attrs as $at) {
  +      $at=str_replace(array("'",'"'),'',rtrim($at));
  +      $k=strtok($at,'=');
  +      $v=strtok('');
  +      $k=strtolower($k);
  +      if ($k == 'style') {
  +        $stys=preg_split('@;\s*@',$v,-1,PREG_SPLIT_NO_EMPTY);
  +        foreach ($stys as $my) {
  +          $nk=strtok($my,':');
  +          $nv=strtok('');
  +          $sty[$nk]=$nv;
  +        }
  +      } else {
  +        switch($k) {
  +          case 'class':
  +            if (isset($aligns[$v]))
  +              $align=$v;
  +            else $myclass[]=$v;
  +            break;
  +          case 'align':
  +            $align=$v;
  +            break;
  +          case 'bgcolor':
  +            $sty['background-color']=strtolower($v);
  +            break;
  +          case 'width':
  +          case 'color':
  +            $sty[$k]=strtolower($v);
  +            break;
  +          default:
  +            $myattr[]=$k.'="'.$v.'"';
  +            break;
  +        }
  +      }
  +    }
  +
  +    if ($align) $myclass[]=$align;
  +    if ($myclass) $myattr[]='class="'.implode(' ',array_unique($myclass)).'"';
  +    if ($sty) {
  +      $mysty='';
  +      foreach ($sty as $k=>$v) $mysty.="$k:$v;";
  +      $myattr[]='style="'.substr($mysty,0,-1).'"';
  +    }
  +    asort($myattr);
  +    return $myattr;
  +  }
  +
  +  function _td_attr(&$val,$align='') {
  +    $myclass=array();
  +    if (!$val) {
  +      if ($align) return 'class="'.$align.'"';
  +      return '';
  +    }
       $para=substr($val,4,-1);
       # rowspan
  +    $sty=array();
  +    $attr=array();
  +    $myattr=array();
       if (preg_match("/^(\^|v)?\|(\d+)$/",$para,$match)) {
         $attr[]="rowspan='$match[2]'";
         if ($match[1]) {
  @@ -2649,28 +2717,64 @@
           else $attr[]="valign='bottom'";
         }
       }
  +    else if (strlen($para)==1) {
  +      switch ($para) {
  +      case '(':
  +        $align='left';
  +        break;
  +      case ')':
  +        $align='right';
  +        break;
  +      case ':':
  +        $align='center';
  +        break;
  +      default:
  +        break;
  +      }
  +    }
       else if (preg_match("/^\-(\d+)$/",$para,$match))
         $attr[]="colspan='$match[1]'";
       else if ($para[0]=='#')
  -      $attr[]="bgcolor='".strtolower($para)."'";
  -    else
  -      $attr[]=strtolower($para);
  +      $sty['background-color']=strtolower($para);
  +    else {
  +      if (substr($para,0,3)=='row') { // row properties
  +        $val=substr($para,3); $myattr=$this->_attr($val);
  +        $val=implode(' ',$myattr);
  +        if ($align) {
  +          return 'class="'.$align.'"';
  +        } else return '';
  +      }
  +      $myattr=$this->_attr($para,$sty,$myclass,$align);
  +      $attr=array_merge($myattr,$attr);
  +    }
  +    if (!$attr and $align) {
  +      $val='';
  +      return 'class="'.$align.'"';
  +    }
  +
  +    $val='';
       return implode(' ',$attr).' ';
     }
   
     function _table($on,&$attr) {
       if (!$on) return "</table>\n";
  +    $sty=array();
  +    $myattr=array();
       $tattr=substr($attr,4,-1);
  +    $myclass=array('wiki');
       if ($tattr[0]=='#') {
  -      $tattr="bgcolor='".strtolower($tattr)."'";
  +      $sty['background-color']=strtolower($tattr);
       } else if (substr($tattr,0,5)=='table') {
         $tattr=substr($tattr,5);
  +      $myattr=$this->_attr($tattr,$sty,$myclass);
         $attr='';
  -    } else {
  +    } else { // not table attribute
         if ($tattr=='') $attr='';
  -      $tattr='';
  +      #else $myattr=$this->_attr($tattr,$sty,$myclass);
       }
  -    return "<table class='wiki' cellpadding='3' cellspacing='2' $tattr>\n";
  +    if ($myattr) $my=implode(' ',$myattr);
  +    else $my='class="wiki"';
  +    return "<table cellpadding='3' cellspacing='2' $my>\n";
     }
   
     function _purple() {
  @@ -3060,8 +3164,7 @@
           if ($match[2]) $open.='<caption>'.$match[2].'</caption>';
           if (!$match[5]) $line='||'.$match[3].$match[6].'||';
           $in_table=1;
  -      #} elseif ($in_table && !preg_match("/^\|\|.*\|\|$/",$line)){
  -      } elseif ($in_table && $line[0]!='|' && !preg_match("/^\|\|.*\|\|$/s",$line)){
  +      } elseif ($in_table && $line[0]!='|') {
            $close=$this->_table(0,$dumm).$close;
            $in_table=0;
         }
  @@ -3070,27 +3173,26 @@
           $cells=preg_split('/((?:\|\|)+)/',$line,-1,
             PREG_SPLIT_DELIM_CAPTURE);
           $row='';
  +        $tr_attr='';
           for ($i=1,$s=sizeof($cells);$i<$s;$i+=2) {
  -          $align='';$attr='';
  +          $align='';
             preg_match('/^((&lt;[^>]+>)?)(\s?)(.*)(?<!\s)(\s*)?$/s',
               $cells[$i+1],$m);
             $cell=$m[3].$m[4].$m[5];
             $cell=str_replace("\n","<br />\n",$cell);
  -          if ($m[3] and $m[5]) $align='align="center"';
  +          if ($m[3] and $m[5]) $align='center';
             else if (!$m[3]) $align='';
  -          else if (!$m[5]) $align='align="right"';
  -          $attr=$this->_td_attr($m[1]);
  +          else if (!$m[5]) $align='right';
  +
  +          $attr=$this->_td_attr($m[1],$align);
  +          if (!$tr_attr) $tr_attr=$m[1]; // XXX
             $attr.=$this->_td_span($cells[$i]);
  -          $row.="<td class=\"wiki\" $attr$align>".$cell.'</td>';
  +          $row.="<td $attr>".$cell.'</td>';
           }
  -        $line='<tr class="wiki">'.$row.'</tr>';
  +        $line="<tr $tr_attr>".$row.'</tr>';
           $line=str_replace('\"','"',$line); # revert \\" to \"
         }
   
  -      # FIXME for smart diff XXX (one line ins/del)
  -      ##if ($this->use_smartdiff)
  -      ##  $line=preg_replace('/&lt;(\/)?(ins|del)/','<\\1\\2',$line);
  -
         # InterWiki, WikiName, {{{ }}}, !WikiName, ?single, ["extended wiki name"]
         # urls, [single bracket name], [urls text], [[macro]]
         $line=preg_replace_callback("/(".$wordrule.")/",
  @@ -3150,9 +3252,8 @@
   
            # for smart diff
            $show_raw=0;
  -         #if ($this->use_smartdiff and
  -         #  preg_match('/<(ins|del) class=\'diff-(added|removed)\'>/',
  -         #  $this->pre_line)) $show_raw=1;
  +         if ($this->use_smartdiff and
  +           preg_match("/\006|\010/", $this->pre_line)) $show_raw=1;
   
            if ($processor and !$show_raw) {
              $value=&$this->pre_line;
  @@ -3167,9 +3268,6 @@
            } else if ($in_quote) {
               # htmlfy '<'
               $pre=str_replace("<","&lt;",$this->pre_line);
  -            # for smart diff
  -            if ($this->use_smartdiff)
  -              $pre=preg_replace("/&lt;(\/?)(ins|del)/","<\\1\\2",$pre);
               $pre=preg_replace($this->baserule,$this->baserepl,$pre);
               $pre=preg_replace_callback("/(".$wordrule.")/",
                 array(&$this,'link_repl'),$pre);
  @@ -3218,8 +3316,8 @@
       } # end rendering loop
       # for smart_diff (div)
       if ($this->use_smartdiff)
  -      $text= preg_replace('/&lt;(\/)?(...( class=.diff-(added|removed).)?)>/',
  -        '<\\1\\2>',$text);
  +      $text= preg_replace_callback(array("/(\006|\010)(.*)\\1/sU"),
  +          array(&$this,'_diff_repl'),$text);
   
       # highlight text
       if ($this->highlight) {
  
  
  


wkpark      2006/08/12 16:29:14

  Modified:    plugin   Diff.php
  Log:
  cleanup!
   - use "\010","\006" as delims
  
  Revision  Changes    Path
  1.13      +17 -24    moniwiki/plugin/Diff.php
  
  Index: Diff.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Diff.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- Diff.php	1 Aug 2006 13:28:19 -0000	1.12
  +++ Diff.php	12 Aug 2006 07:29:14 -0000	1.13
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a diff plugin for the MoniWiki
   //
  -// $Id: Diff.php,v 1.12 2006/08/01 13:28:19 wkpark Exp $
  +// $Id: Diff.php,v 1.13 2006/08/12 07:29:14 wkpark Exp $
   
   function simple_diff($diff) {
     $diff=str_replace("<","&lt;",$diff);
  @@ -78,7 +78,7 @@
     #print_r( $lines);
     #print "</pre>";
   
  -  $tags=array('(%%','%%)','(@@','@@)');
  +  $tags=array("\006","\006","\010","\010");
    
     $news=array(); $dels=array();
   
  @@ -237,32 +237,25 @@
           #print "</pre>";
           $diffed=implode("\n",$lines);
           # change for headings
  -        $diffed=preg_replace("/^\(([@%]{2})(={1,5})\s(.*)\s\\2\\1\)$/m",
  -          "\\2 (\\1\\3\\1) \\2",$diffed);
  +        $diffed=preg_replace("/^(\006|\010)(={1,5})\s(.*)\s\\2\\1$/m",
  +          "\\2 \\1\\3\\1 \\2",$diffed);
           # change for lists
  -        $diffed=preg_replace("/\(([@%]{2})(\s+)(\*|\d+\.\s)(.*)\\1\)/m",
  -          "\\2\\3(\\1\\4\\1)",$diffed);
  +        $diffed=preg_replace("/(\006|\010)(\s+)(\*|\d+\.\s)(.*)\\1/m",
  +          "\\2\\3\\1\\4\\1",$diffed);
  +
  +        # fix <ins>{{{foobar</ins> to {{{<ins>foobar</ins>
  +        $diffed=preg_replace("/(\006|\010)({{{)(.*)$/m","\\2\\1\\3",$diffed);
  +        # fix <ins>foobar}}}</ins> to <ins>foobar</ins>}}}
  +        $diffed=preg_replace("/(\006|\010)(.*)(}}})(\\1)/m","\\1\\2\\4\\3",$diffed);
           # change for hrs
  -        #$diffed=preg_replace("/\(([@%]{2})(-{4,})\\1\)/m",
  -        #  "(\\1\\2\n\\1)",$diffed);
  +        $diffed=preg_replace("/(\006|\010)(-{4,})\\1/m",
  +          "\\1\\2\n\\1",$diffed);
           # XXX FIXME
           # merge multiline diffs
  -        $diffed=preg_replace("/\@@\)\n\(@@/m","\n",$diffed);
  -        $diffed=preg_replace("/\%%\)\n\(%%/m","\n",$diffed);
  -        $diffed=preg_replace(array("/\(@@(.*)@@\)/","/\(%%(.*)%%\)/"),
  -          array("<ins class='diff-added'>\\1</ins> ",
  -                "<del class='diff-removed'>\\1</del> "),
  -          $diffed);
  -
  -        $diffed=preg_replace(array(
  -            "/\n?\(@@/m","/@@\)\n/m","/\(@@/","/@@\)/",
  -            "/\n?\(%%/m","/%%\)\n/m","/\(%%/","/%%\)/"),
  -          array(
  -            "\n<div class='diff-added'>","\n</div>",
  -            "<ins class='diff-added'>","\n</ins>",
  -            "\n<div class='diff-removed'>","\n</div>",
  -            "<del class='diff-removed'>","</del>")
  -            ,$diffed);
  +        #$diffed=preg_replace("/\006([ ]*)\006$/m","\\1",$diffed);
  +        #$diffed=preg_replace("/\010([ ]*)\010$/m","\\1",$diffed);
  +        $diffed=preg_replace("/\006\n\006(?!\n)/m","\n",$diffed);
  +        $diffed=preg_replace("/\010\n\010(?!\n)/m","\n",$diffed);
   
           $options['nomsg']=0;
           $options['msg']=$msg;
  
  
  


wkpark      2006/08/12 16:31:54

  Modified:    plugin   RecentChanges.php Anchor.php Icon.php
  Log:
  fix to make xhtml 1.0 strict compliant
  
  Revision  Changes    Path
  1.21      +7 -7      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- RecentChanges.php	8 Jan 2006 12:52:57 -0000	1.20
  +++ RecentChanges.php	12 Aug 2006 07:31:54 -0000	1.21
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.20 2006/01/08 12:52:57 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.21 2006/08/12 07:31:54 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     $options['trail']='';
  @@ -71,7 +71,7 @@
         } else if ($arg=="table") {
           $bra="<table border='0' cellpadding='0' cellspacing='0' width='100%'>";
           $template=
  -  '$out.= "<tr><td nowrap=\'nowrap\' width=\'2%\'>$icon</td><td width=\'40%\'>$title</td><td width=\'15%\'>$date</td><td>$user $count $extra</td></tr>\n";';
  +  '$out.= "<tr><td style=\'white-space:nowrap;width:2%\'>$icon</td><td style=\'width:40%\'>$title</td><td style=\'width:15%\'>$date</td><td>$user $count $extra</td></tr>\n";';
           $cat="</table>";
           $cat0="";
         }
  @@ -201,15 +201,15 @@
         $out.=$cat0;
         $rcdate=gmdate($date_fmt,$ed_time+$tz_offset);
   
  -      $out.=sprintf("%s<span class='rc-date'><font class='rc-date' size='+1'>%s ",
  +      $out.=sprintf("%s<span class='rc-date'><span class='rc-date' style='font-size:large'>%s ",
               $br, $rcdate);
         if (!$nobookmark)
  -        $out.="<font class='rc-bookmark' size='-1'>[".
  +        $out.="<span class='rc-bookmark' style='font-size:small'>[".
             $formatter->link_tag($formatter->page->urlname,"?action=bookmark&amp;time=$ed_time".$daysago,
  -          _("set bookmark"))."]</font>\n";
  +          _("set bookmark"))."]</span>\n";
         $ratchet_day = $day;
         $br="<br />";
  -      $out.=$perma.'</font></span><br />'.$bra;
  +      $out.=$perma.'</span></span><br />'.$bra;
         $cat0=$cat;
       } else
         $day=$formatter->link_to("?action=bookmark&amp;time=$ed_time".$daysago,$day);
  @@ -260,7 +260,7 @@
       if ($editcount[$page_key] > 1)
         $count=" [".$editcount[$page_key]." changes]";
       if ($comment && $log)
  -      $extra="&nbsp; &nbsp; &nbsp; <font size='-1'>$log</font>";
  +      $extra="&nbsp; &nbsp; &nbsp; <small>$log</small>";
   
       eval($template);
   
  
  
  
  1.2       +2 -2      moniwiki/plugin/Anchor.php
  
  Index: Anchor.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Anchor.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Anchor.php	25 Jul 2003 17:14:22 -0000	1.1
  +++ Anchor.php	12 Aug 2006 07:31:54 -0000	1.2
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Anchor]]
   //
  -// $Id: Anchor.php,v 1.1 2003/07/25 17:14:22 wkpark Exp $
  +// $Id: Anchor.php,v 1.2 2006/08/12 07:31:54 wkpark Exp $
   
   function macro_Anchor($formatter,$value) {
     static $id=1;
  @@ -16,7 +16,7 @@
       $tag=strtok($value," ");
       $text=($tok=strtok("")) ? "<a href='#$tag'>".$tok."</a>":"";
     }
  -  return "<a name='$tag' id='$tag'>$text</a>";
  +  return "<a id='$tag'></a>$text";
   }
   
   // vim:et:ts=2:
  
  
  
  1.7       +2 -2      moniwiki/plugin/Icon.php
  
  Index: Icon.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Icon.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- Icon.php	14 Jul 2006 11:59:18 -0000	1.6
  +++ Icon.php	12 Aug 2006 07:31:54 -0000	1.7
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Icon macro plugin for the MoniWiki
   //
  -// $Id: Icon.php,v 1.6 2006/07/14 11:59:18 wkpark Exp $
  +// $Id: Icon.php,v 1.7 2006/08/12 07:31:54 wkpark Exp $
   function macro_Icon($formatter,$value='',$extra='') {
     global $DBInfo;
   
  @@ -22,7 +22,7 @@
     }
   
     $out=$formatter->imgs_dir."/$value";
  -  $out="<img src='$out' border='0' alt='icon' align='middle' />";
  +  $out="<img src='$out' alt='icon' style='vertical-align:middle;border:0' />";
     return $out;
   }
   
  
  
  


wkpark      2006/08/12 19:01:41

  Modified:    css      _base.css
  Log:
  update
  
  Revision  Changes    Path
  1.12      +61 -6     moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- _base.css	29 Jul 2006 11:49:29 -0000	1.11
  +++ _base.css	12 Aug 2006 10:01:41 -0000	1.12
  @@ -101,25 +101,53 @@
   }
   
   table.wiki {
  -/*  border: 1px outset #E2ECE5; */
  +/* background-color: #E9ECEF; */
   }
   
  -td.wiki {
  -/* border: 1px inset #E2ECE5; */
  +table.center {
  +  text-align:center;
  +  margin-left:auto; /* Moz */
  +  margin-right:auto; /* Moz */
   }
   
  -tr.wiki {
  -  background-color: #E9ECEF;
  +table.right {
  +  text-align:right;
  +  float:right;
  +}
  +
  +td.center {
  +  text-align:center;
  +}
  +
  +td.right {
  +  text-align:right;
  +}
  +
  +table.wiki tr {
  +   background-color: #E9ECEF;
   }
   
   textarea.wiki { width:100%; }
   
  +.resizable-textarea .grippie {
  +  height: 14px;
  +  background: #ECE9D6 url(../imgs/misc/grippie.png) no-repeat 100% 100%;
  +  border: 1px solid #DFDBCA;
  +  border-top-width: 0;
  +  cursor: s-resize;
  +}
  +
   th.info {
     background-color:#E2ECE2;
   /*  border-collapse: collapse; */
   /*  border: 1px solid silver; */
   }
   
  +.disabled {
  +  background-color:#E2E2E2 !important;
  +  color:gray;
  +}
  +
   td.info {
     background-color:#E2ECE2;
   }
  @@ -179,10 +207,15 @@
     font-size:11px;
   }
   
  -table.closure, td.closure{
  +table.closure, td.closure, div.closure {
     background-color: #E9ECEF;
   }
   
  +div.closure {
  +  background-color: #E9ECEF;
  +  padding:3px;
  +}
  +
   /*  */
   .wikiHr {
     border:0px solid;
  @@ -425,4 +458,26 @@
   .wikiMarkup {
     font-family:Bitstream vera sans mono,Courier New,monospace; 
     background-color:#ffff00;
  +  border-left:3px solid #ffff00;
  +  border-right:3px solid #ffff00;
  +}
  +
  +/* since v1.1.3 */
  +blockquote.indent {
  +  margin:5px 0px 5px 0px;
  +  padding-left:1ex;
  +  border-left:2px solid #d7b7fb;
  +}
  +
  +blockquote.quote {
  +  background-color: #f8f8f8; /* */
  +  margin:5px 0px 5px 0px;
  +  padding:5px 5px 5px 1ex;
  +  border-left:2px solid #d7d7d7;
  +}
  +
  +/* <u></u> replacement */
  +em.underline{
  +  font-style:normal;
  +  text-decoration:underline;
   }
  
  
  


wkpark      2006/08/12 19:03:12

  Modified:    theme/azblue header.php footer.php
  Log:
  xhtml strict fix
  
  Revision  Changes    Path
  1.4       +5 -3      moniwiki/theme/azblue/header.php
  
  Index: header.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/azblue/header.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- header.php	18 Jul 2006 12:50:02 -0000	1.3
  +++ header.php	12 Aug 2006 10:03:12 -0000	1.4
  @@ -1,6 +1,6 @@
   <?php
   # MoniWiki Theme by wkpark at kldp.org
  -# $Id: header.php,v 1.3 2006/07/18 12:50:02 wkpark Exp $
  +# $Id: header.php,v 1.4 2006/08/12 10:03:12 wkpark Exp $
   #
   if ($this->_sidebar) {
     include_once("plugin/login.php");
  @@ -40,10 +40,12 @@
   <?php echo $DBInfo->sitename?>
   </div>
   <div id='goForm'>
  -<form name='go' id='go' action='' method='get' onsubmit="return moin_submit();">
  +<form id='go' action='' method='get' onsubmit="return moin_submit();">
  +<div>
   <input type='text' name='value' size='20' accesskey='s' class='goto' style='width:120px' />
   <input type='hidden' name='action' value='goto' />
   <input type='submit' name='status' class='submitBtn' value='Go' style='width:35px;' />
  +</div>
   </form>
   </div>
   <div id='pTitle'><?php echo $title?></div><div id='wikiHeader'>
  @@ -88,4 +90,4 @@
   endif;
   
   ?>
  -<div id='content'>
  +<div id='mycontent'>
  
  
  
  1.2       +4 -7      moniwiki/theme/azblue/footer.php
  
  Index: footer.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/azblue/footer.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- footer.php	3 Feb 2006 22:50:49 -0000	1.1
  +++ footer.php	12 Aug 2006 10:03:12 -0000	1.2
  @@ -4,20 +4,17 @@
   $banner= <<<FOOT
    <a href="http://validator.w3.org/check/referer"><img
     src="$this->themeurl/imgs/xhtml.png"
  -  border="0" width="80" height="15"
  -  align="middle"
  +  style='border:0;vertical-align:middle' width="80" height="15"
     alt="Valid XHTML 1.0!" /></a>
   
    <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
     src="$this->themeurl/imgs/css.png"
  -  border="0" width="80" height="15"
  -  align="middle"
  +  style='border:0;vertical-align:middle' width="80" height="15"
     alt="Valid CSS!" /></a>
   
    <a href="http://moniwiki.sourceforge.net/"><img
     src="$this->themeurl/imgs/moniwiki-powered-thin.png"
  -  border="0" width="80" height="15"
  -  align="middle"
  +  style='border:0;vertical-align:middle' width="80" height="15"
     alt="powered by MoniWiki" /></a>
   FOOT;
   ?>
  @@ -26,7 +23,7 @@
   <div id='wikiFooter'>
   <?php
     print $menu;
  -  print '<div align="center" id="wikiBanner">'.$banner.'<br />';
  +  print '<div style="align:center" id="wikiBanner">'.$banner.'<br />';
     if ($lastedit)
       print "last modified $lastedit $lasttime<br />";
     print 'Processing time '.$timer;
  
  
  


wkpark      2006/08/12 19:10:38

  Modified:    theme/azblue/css default.css
  Log:
  remove td.wiki and use "table.wiki tr"
  
  Revision  Changes    Path
  1.11      +12 -17    moniwiki/theme/azblue/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/azblue/css/default.css,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- default.css	19 Jul 2006 10:01:51 -0000	1.10
  +++ default.css	12 Aug 2006 10:10:38 -0000	1.11
  @@ -13,17 +13,17 @@
   }
   
   #mainBody {
  -  /* top:15px; /* */
  -/*  padding-left:100px;
  +/* top:15px; /* */
  +/* padding-left:100px;
     padding-right:100px; */
     min-width:750px;
     margin: 0px auto 0px auto;
     width: 750px;
  -  /*\*/ min-width: 750px; /* */
  +  /*\*/ min-width: 750px; /* IE fix */
   }
   
   div {
  -/*  border:1px solid red; /* */
  +/* border:1px solid red; /* */
   }
   
   #topHeader {
  @@ -132,7 +132,7 @@
   }
   
   #wikiBanner {
  -  margin-top:10px;
  +  padding-top:5px;
     text-align:center;
   }
   
  @@ -208,20 +208,16 @@
   }
   
   table.wiki {
  -/* background-color:#E2ECE5;*/
  -/* background-color: #F8F7F0; */
  -/* border-collapse: collapse; */
  -  border: 0px outset #ddddb0;
  +/* background-color:#E2ECE5;
  +  background-color: #F8F7F0;
  +  border-collapse: collapse;
  +  border: 0px outset #ddddb0; */
   }
   
  -td.wiki {
  +table.wiki tr {
     background-color: #F8F7F0; 
   /* border-collapse: collapse; */
  -  border: 0px inset #EAF2F4;
  -}
  -tr.wiki {
  -/* background-color: #F8F7F0; */
  -/* border-collapse: collapse; */
  +/* border: 0px inset #EAF2F4; */
   }
   
   textarea.wiki { width:98%; }
  @@ -234,7 +230,6 @@
   
   td.info {
     background-color:#E2ECE2;
  -
   }
   
   h1,h2,h3,h4,h5 {
  @@ -682,7 +677,7 @@
     margin: 0 auto;
   }
   
  -#content {
  +#mycontent { /* theme specific */
   /*  margin-right:140px; /* */
     padding-right:5px;
   }
  
  
  


wkpark      2006/08/15 16:51:33

  Modified:    .        wikilib.php
  Log:
  try to fix the cookie bug of Safari
  
  Revision  Changes    Path
  1.218     +10 -3     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.217
  retrieving revision 1.218
  diff -u -r1.217 -r1.218
  --- wikilib.php	11 Aug 2006 14:10:01 -0000	1.217
  +++ wikilib.php	15 Aug 2006 07:51:33 -0000	1.218
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.217 2006/08/11 14:10:01 wkpark Exp $
  +// $Id: wikilib.php,v 1.218 2006/08/15 07:51:33 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -487,13 +487,20 @@
        $this->ticket=$ticket;
        # set the fake cookie
        $_COOKIE['MONI_ID']=$ticket.'.'.$this->id;
  -     return "Set-Cookie: MONI_ID=".$ticket.'.'.$this->id.'; expires='.gmdate('l, d-M-Y H:i:s',time()+60*60*24*30).' GMT; Path='.get_scriptname();
  +
  +     $path=strpos($_SERVER['HTTP_USER_AGENT'],'Safari')===false ?
  +       get_scriptname():'/';
  +     return "Set-Cookie: MONI_ID=".$ticket.'.'.$this->id.'; expires='.gmdate('l, d-M-Y H:i:s',time()+60*60*24*30).' GMT; Path='.$path;
     }
   
     function unsetCookie() {
        # set the fake cookie
        $_COOKIE['MONI_ID']="Anonymous";
  -     return "Set-Cookie: MONI_ID=".$this->id."; expires=Tuesday, 01-Jan-1999 12:00:00 GMT; Path=".get_scriptname();
  +
  +     # check safari
  +     $path=strpos($_SERVER['HTTP_USER_AGENT'],'Safari')===false ?
  +       get_scriptname():'/';
  +     return "Set-Cookie: MONI_ID=".$this->id."; expires=Tuesday, 01-Jan-1999 12:00:00 GMT; Path=".$path;
     }
   
     function setPasswd($passwd,$passwd2="",$rawmode=0) {
  
  
  


wkpark      2006/08/15 16:53:50

  Modified:    .        wikilib.php
  Log:
  small fix for setTimezone() js
  
  Revision  Changes    Path
  1.219     +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.218
  retrieving revision 1.219
  diff -u -r1.218 -r1.219
  --- wikilib.php	15 Aug 2006 07:51:33 -0000	1.218
  +++ wikilib.php	15 Aug 2006 07:53:50 -0000	1.219
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.218 2006/08/15 07:51:33 wkpark Exp $
  +// $Id: wikilib.php,v 1.219 2006/08/15 07:53:50 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1879,7 +1879,7 @@
   EXTRA;
       $logout="<input type='submit' name='logout' value='"._("logout")."' /> &nbsp;";
     }
  -  if ($tz_offset=="")
  +  if (empty($tz_offset) and $jscript)
       $script=<<<EOF
   <script type="text/javascript">
   /*<![CDATA[*/
  
  
  


wkpark      2006/08/15 16:55:25

  Modified:    plugin   ImportUrl.php
  Log:
  add macro_importurl() and more fixes
  
  Revision  Changes    Path
  1.10      +59 -21    moniwiki/plugin/ImportUrl.php
  
  Index: ImportUrl.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/ImportUrl.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- ImportUrl.php	29 Jan 2006 03:59:30 -0000	1.9
  +++ ImportUrl.php	15 Aug 2006 07:55:25 -0000	1.10
  @@ -5,30 +5,52 @@
   //
   // Usage: ?action=importurl&url=http://foo.bar.com/
   //
  -// $Id: ImportUrl.php,v 1.9 2006/01/29 03:59:30 wkpark Exp $
  +// $Id: ImportUrl.php,v 1.10 2006/08/15 07:55:25 wkpark Exp $
   
  -function do_ImportUrl($formatter,$options) {
  -  $value=$options['url'];
  +function macro_ImportUrl($formatter,$value='',$options=array()) {
  +  $value=$value ? $value:$options['url'];
   
  -  if (!preg_match('/^(http|ftp|https):\/\//',$value)) {
  -    do_invalid($formatter,$options);
  -    return;
  +  if (!$value) {
  +    return <<<EOF
  +<div>
  +<form method='get' action=''>
  +<input type='hidden' name='action' value='importurl' />
  +<input name='url' value='http://' size='60' />
  +<input type='submit' value='html 2 wiki' />
  +</form>
  +</div>
  +EOF;
     }
   
  +  if (!preg_match('/^(http|ftp|https):\/\//',$value))
  +    return false;
  +
     $fp = fopen("$value","r");
  -  if (!$fp) {
  -    do_invalid($formatter,$options);
  -    return;
  -  }
  +  if (!$fp) return false;
   
     while ($data = fread($fp, 4096)) $html_data.=$data;
     fclose($fp);
   
  +  # only use <body> contents
  +  preg_match("/<\s*body[^>]*>(.*)<\/\s*body\s*>/is",$html_data,$m);
  +  if ($m) $html_data=$m[1];
   #  fix_url($value,$dummy);
   #  fix_url('http://hello.com/',$dummy);
   #  fix_url('http://hello.com',$dummy);
   
  -  $out= strip_tags($html_data,'<pre><hr><td><tr><a><b><i><u><h1><h2><h3><h4><h5><li><img>');
  +  # remove some tags
  +  $out=preg_replace("@<(script|style)[^>]*>.*</\\1>@is","",$html_data);
  +
  +  # remove empty tags
  +  $out=preg_replace("@<(h.|).[^>]*></\\1>@i","",$out);
  +
  +  # strip tags
  +  $out= strip_tags($out,'<pre><hr><td><tr><a><b><i><u><h1><h2><h3><h4><h5><li><img>');
  +
  +  # fix some "\n" important sytaxes
  +  $out=preg_replace(array("/(?!\n)(\s*<h.[^>]*>)/i",
  +                          "/((<\/h.\s*>)(?:[ ]*)(?!\n))/i"),
  +                    array("\n\\1","\\2\n"),$out);
   
     $splits=preg_split('/(<pre\s*[^>]*>|<\/pre>)/', $out,
       -1, PREG_SPLIT_DELIM_CAPTURE);
  @@ -60,12 +82,12 @@
       # remove leading spaces
       $out= preg_replace("/\n[ ]+/","\n",$split);
       $out= preg_replace("/\r/","",$out);
  -    $out= preg_replace("/<img\s*[^>]*src=['\"]((http|ftp)[^'\"]+)['\"][^>]*>/i",
  -      "\\1",$out);
  -    $out = preg_replace("/<img\s*[^>]*src=['\"]([^'\"]+)['\"][^>]*>/ie",
  -      "fix_url('$value','\\1')",$out);
  -    $out= preg_replace("/<li>/i"," * ",$out);
  -    $out= preg_replace("/<\/li>\n*/i","",$out);
  +    #$out= preg_replace("/<img\s*[^>]*src=(['\"])?((http|ftp)[^'\"]+)\\1[^>]*>/i",
  +    #  "\\2",$out);
  +    $out = preg_replace("/<img\s*[^>]*src=(['\"])?([^'\"]+)\\1[^>]*>/ie",
  +     "fix_url('$value','\\2')",$out);
  +    $out= preg_replace("/<li[^>]*>/i"," * ",$out);
  +    $out= preg_replace("/<\/li>\n*/i","\n",$out);
       $out= preg_replace("/<td\s*[^>]*>/i","||",$out);
       $out= preg_replace("/<\/td>\n*/i","",$out);
       $out= preg_replace("/<tr\s*[^>]*>/i","",$out);
  @@ -88,7 +110,7 @@
       $out= preg_replace("/<a\s*[^>]*href=['\"][^>]+><\/a>/i","",$out);
       # url
       $out= preg_replace("/<a\s*[^>]*href=['\"]([^'\"]+)['\"][^>]*>([^<]+)<\/a>/ie",
  -      "'['.fix_url('$value','\\1','\\2').'\\2]'",$out);
  +      "'['.fix_url('$value','\\1','\\2').trim('\\2').']'",$out);
       # heading
       $out= preg_replace("/<h(\d)[^>]*>(?:\d+\.?\d*)*([^<]+)<\/h\d>/ie",
         "str_repeat('=', \\1).' \\2 '.str_repeat('=', \\1)",$out);
  @@ -101,9 +123,8 @@
       $wiki.=$out;
     }
   
  -  $formatter->send_header("content-type: text/plain",$options);
  -  print $wiki;
  -  return;
  +  #$wiki=preg_replace(array("/\007\s/","/\007/"),array(" ",""),$wiki);
  +  return $wiki;
   
     $options['savetext']=$out;
     $options['button_preview']=1;
  @@ -117,6 +138,8 @@
   }
   
   function prep_url($base_url) {
  +  $base_url=trim($base_url);
  +  $base_url=substr($base_url,-1,1)!='/' ? $base_url.'/':$base_url;
     $proto=strtok($base_url,'/').'//';
     $base_url=strtok('');
     $base_url=preg_replace('/(\/[^\/]+)$/','',$base_url);
  @@ -180,5 +203,20 @@
     return end($path).'/'.$url.' ';
   }
   
  +function do_ImportUrl($formatter,$options=array())
  +{
  +  $value=$options['url'];
  +
  +  if (!preg_match('/^(http|ftp|https):\/\//',$value)) {
  +    do_invalid($formatter,$options);
  +    return;
  +  }
  +
  +  $ret=macro_ImportUrl($formatter,$value,$options);
  +
  +  $formatter->send_header("content-type: text/plain",$options);
  +  print $ret;
  +}
  +
   // vim:et:sts=2:
   ?>
  
  
  


wkpark      2006/08/15 16:57:01

  Modified:    plugin   Info.php
  Log:
  show purge checkbox only for wikimasters
  
  Revision  Changes    Path
  1.12      +38 -31    moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Info.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- Info.php	15 Jul 2006 19:08:07 -0000	1.11
  +++ Info.php	15 Aug 2006 07:57:00 -0000	1.12
  @@ -3,19 +3,19 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Info plugin for the MoniWiki
   //
  -// $Id: Info.php,v 1.11 2006/07/15 19:08:07 wkpark Exp $
  +// $Id: Info.php,v 1.12 2006/08/15 07:57:00 wkpark Exp $
   
   function _parse_rlog($formatter,$log,$options=array()) {
     global $DBInfo;
   
  -  $user=new User(); # get cookie
  -  if ($user->id != 'Anonymous') { # XXX
  -    $udb=new UserDB($DBInfo);
  -    $udb->checkUser($user);
  -    $tz_offset=$user->info['tz_offset'];
  -  } else {
  -    $tz_offset=$options['tz_offset'];
  -  }
  +  $tz_offset=$formatter->tz_offset;
  +  if (in_array($options['id'],$DBInfo->wikimasters)) $admin=1;
  +
  +  if ($DBInfo->info_actions)
  +    $actions=$DBInfo->info_actions;
  +  else
  +    $actions=array('recall'=>'view','raw'=>'raw');
  +
     $state=0;
     $flag=0;
   
  @@ -25,15 +25,16 @@
   
     $url=$formatter->link_url($formatter->page->urlname);
   
  +  $diff_btn=_("Diff");
     $out="<h2>"._("Revision History")."</h2>\n";
  -  $out.="<table class='info' border='0' cellpadding='3' cellspacing='2'>\n";
     $out.="<form id='infoform' method='post' action='$url'>";
  +  $out.="<table class='info' cellpadding='3' cellspacing='2'><tr>\n";
     $out.="<th class='info'>ver.</th><th class='info'>Date and Changes</th>".
          "<th class='info'>Editor</th>".
  -       "<th class='info'><input type='submit' value='diff'></th>";
  +       "<th class='info'><input type='submit' value='$diff_btn'></th>";
     if (!$simple) {
  -    $out.="<th class='info'>actions</th>".
  -       "<th class='info'>admin.</th>";
  +    $out.="<th class='info'>actions</th>";
  +    if (isset($admin)) $out.= "<th class='info'>admin.</th>";
     }
     $out.= "</tr>\n";
   
  @@ -70,7 +71,7 @@
            if ($options['ago']) {
              $ed_time=strtotime($inf.' GMT');
              $time_diff=(int)($time_current - $ed_time)/60;
  -           if ($time_diff > 1440*14) {
  +           if ($time_diff > 1440*31) {
                $inf=gmdate("Y-m-d H:i:s",strtotime($inf.' GMT')+$tz_offset);
              } else if (($time_diff=$time_diff/60) > 24) {
                $day=(int)($time_diff/24);
  @@ -119,28 +120,36 @@
            $rowspan=1;
            if (!$simple and $comment) $rowspan=2;
            $out.="<tr>\n";
  -         $out.="<th valign='top' rowspan=$rowspan>r$rev</th><td nowrap='nowrap'>$inf $change</td><td>$ip&nbsp;</td>";
  +         $out.="<th valign='top' rowspan=$rowspan>$rev</th><td nowrap='nowrap'>$inf $change</td><td>$ip&nbsp;</td>";
            $achecked="";
            $bchecked="";
            if ($flag==1)
               $achecked="checked ";
            else if (!$flag)
               $bchecked="checked ";
  -         $out.="<th nowrap='nowrap'><input type='radio' name='rev' value='$rev' $achecked/>";
  -         $out.="<input type='radio' name='rev2' value='$rev' $bchecked/></th>";
  -
  -         if (!$simple) {
  -         $out.="<td nowrap='nowrap'>".$formatter->link_to("?action=recall&rev=$rev","view").
  -               " ".$formatter->link_to("?action=raw&rev=$rev","raw");
  +         $onclick="onclick='ToggleRev(this)'";
  +         $out.="<th nowrap='nowrap'><input type='radio' name='rev' value='$rev' $achecked $onclick />";
  +         $out.="<input type='radio' name='rev2' value='$rev' $bchecked $onclick /></th>";
  +
  +         if (!$simple):
  +         $out.="<td nowrap='nowrap'>";
  +         foreach ($actions as $k=>$v) {
  +           $k=is_numeric($k) ? $v:$k;
  +           $out.=$formatter->link_to("?action=$k&amp;rev=$rev",_($v)).' ';
  +         }
            if ($flag) {
  -            $out.= " ".$formatter->link_to("?action=diff&rev=$rev","diff");
  -            $out.="</td><th>";
  -            $out.="<input type='checkbox' name='range[$flag]' value='$rev' />";
  +            $out.= " ".$formatter->link_to("?action=diff&amp;rev=$rev",_("diff"));
  +            $out.="</td>";
  +            if (isset($admin))
  +              $out.=
  +                "<th><input type='checkbox' name='range[$flag]' value='$rev' /></th>";
            } else {
  -            $out.="</td><th>";
  -            $out.="<input type='image' src='$DBInfo->imgs_dir/smile/checkmark.png' onClick=\"ToggleAll('infoform');return false;\"/>";
  -         }
  +            $out.="</td>";
  +            if (isset($admin)) {
  +              $out.="<th><input type='image' src='$DBInfo->imgs_dir/smile/checkmark.png' onClick=\"ToggleAll('infoform');return false;\"/></th>";
  +            }
            }
  +         endif;
            $out.="</tr>\n";
            if (!$simple and $comment)
               $out.="<tr><td class='info' colspan='5'>$comment&nbsp;</td></tr>\n";
  @@ -151,17 +160,15 @@
            break;
        }
     }
  -  if (!$simple) {
  +  if (!$simple and $admin):
     $out.="<tr><td colspan='6' align='right'><input type='checkbox' name='show' checked='checked' />show only ";
     if ($DBInfo->security->is_protected("rcspurge",$options)) {
       $out.="<input type='password' name='passwd'>";
     }
     $out.="<input type='submit' name='rcspurge' value='purge'></td></tr>";
  -  }
  +  endif;
     $out.="<input type='hidden' name='action' value='diff'/></form></table>\n";
  -  if (!$simple) {
     $out.="<script type='text/javascript' src='$DBInfo->url_prefix/local/checkbox.js'></script>\n";
  -  }
     return $out; 
   }
   
  
  
  


wkpark      2006/08/15 16:57:59

  Modified:    local    checkbox.js
  Log:
  set diff radio buttons more user friendly
  
  Revision  Changes    Path
  1.2       +7 -0      moniwiki/local/checkbox.js
  
  Index: checkbox.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/checkbox.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- checkbox.js	8 Sep 2005 12:36:47 -0000	1.1
  +++ checkbox.js	15 Aug 2006 07:57:59 -0000	1.2
  @@ -57,3 +57,10 @@
      }
   }
   
  +function ToggleRev(obj) {
  +   var p=obj.parentNode;
  +   var i=obj.name == 'rev' ? 1:0;
  +   var n=p.getElementsByTagName('input');
  +   if (n[i].checked) n[i].checked=false;
  +}
  +
  
  
  


wkpark      2006/08/15 19:58:02

  Modified:    plugin   chat.php
  Log:
  use set_wordrule()
  
  Revision  Changes    Path
  1.9       +2 -1      moniwiki/plugin/chat.php
  
  Index: chat.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/chat.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- chat.php	5 Jan 2006 17:33:43 -0000	1.8
  +++ chat.php	15 Aug 2006 10:58:02 -0000	1.9
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Chat]]
   //
  -// $Id: chat.php,v 1.8 2006/01/05 17:33:43 wkpark Exp $
  +// $Id: chat.php,v 1.9 2006/08/15 10:58:02 wkpark Exp $
   // http://cvs.drupal.org/viewcvs/drupal/contributions/modules/chat/
   
   function macro_Chat($formatter,$value,$options=array()) {
  @@ -166,6 +166,7 @@
       #ob_end_clean();
   
       $out='';
  +    $formatter->set_wordrule();
       $smiley_rule='/(?<=\s|^|>)('.$DBInfo->smiley_rule.')(?=\s|$)/e';
       $smiley_repl="\$formatter->smiley_repl('\\1')";
       $save=$formatter->sister_on;
  
  
  


wkpark      2006/08/15 22:03:26

  Added:       plugin   atom.php
  Log:
  add a atom feed plugin (atom:id is not implimented)
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/atom.php
  
  Index: atom.php
  ===================================================================
  <?php
  // Copyright 2006 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a atom action plugin for the MoniWiki
  //
  // $Id: atom.php,v 1.1 2006/08/15 13:03:26 wkpark Exp $
  // $orig Id: rss_rc.php,v 1.12 2005/09/13 09:10:52 wkpark Exp $
  
  function do_atom($formatter,$options) {
    global $DBInfo;
    global $_release;
    define('ATOM_DEFAULT_DAYS',7);
  
    $days=$DBInfo->rc_days ? $DBInfo->rc_days:ATOM_DEFAULT_DAYS;
    $options['quick']=1;
    if ($options['c']) $options['items']=$options['c'];
    $lines= $DBInfo->editlog_raw_lines($days,$options);
      
    $time_current= time();
  #  $secs_per_day= 60*60*24;
  #  $days_to_show= 30;
  #  $time_cutoff= $time_current - ($days_to_show * $secs_per_day);
  
    $URL=qualifiedURL($formatter->prefix);
    $img_url=qualifiedURL($DBInfo->logo_img);
  
    $url=qualifiedUrl($formatter->link_url($DBInfo->frontpage));
    $surl=qualifiedUrl($formatter->link_url($options['page'].'?action=atom'));
    $channel=<<<CHANNEL
    <title>$DBInfo->sitename</title>
    <link href="$url"></link>
    <link rel="self" type="application/atom+xml" href="$surl" />
    <subtitle>RecentChanges at $DBInfo->sitename</subtitle>
    <generator version="$_release">MoniWiki Atom feeder</generator>\n
  CHANNEL;
    $items="";
  
    $ratchet_day= FALSE;
    if (!$lines) $lines=array();
    foreach ($lines as $line) {
      $parts= explode("\t", $line);
      $page_name= $DBInfo->keyToPagename($parts[0]);
      $addr= $parts[1];
      $ed_time= $parts[2];
      $user= $parts[4];
      $user_uri='';
      if ($DBInfo->hasPage($user)) {
        $user_uri= $formatter->link_url(_rawurlencode($user),"",$user);
        $user_uri='<uri>'.$user_uri.'</uri>';
      }
      $log= stripslashes($parts[5]);
      $act= rtrim($parts[6]);
  
      $url=qualifiedUrl($formatter->link_url(_rawurlencode($page_name)));
      $diff_url=qualifiedUrl($formatter->link_url(_rawurlencode($page_name),'?action=diff'));
  
      $extra="<br /><a href='$diff_url'>"._("show changes")."</a>\n";
      $content='';
      if (!$DBInfo->hasPage($page_name)) {
        $status='deleted';
        $content="<content type='html'><a href='$url'>$page_name</a> is deleted</content>\n";
      } else {
        $status='updated';
        if ($options['diffs']) {
          $p=new WikiPage($page_name);
          $f=new Formatter($p);
          $options['raw']=1;
          $options['nomsg']=1;
          $html=$f->macro_repl('Diff','',$options);
          if (!$html) {
            ob_start();
            $f->send_page('',array('fixpath'=>1));
            #$f->send_page('');
            $html=ob_get_contents();
            ob_end_clean();
            $extra='';
          }
          $content="  <content type='xhtml'><div xmlns='http://www.w3.org/1999/xhtml'>$html</content>\n";
        } else if ($log) {
          $html=str_replace('&','&amp;',$log);
          $content="<content type='text'>".$html."</content>\n";
        } else {
          $content="<content type='text'>updated</content>\n";
        }
      }
      $zone = '+00:00';
      $date = gmdate("Y-m-d\TH:i:s",$ed_time).$zone;
      if (!isset($updated)) $updated=$date;
      #$datetag = gmdate("YmdHis",$ed_time);
  
      $valid_page_name=str_replace('&','&amp;',$page_name);
      $items.="<entry>\n";
      $items.="  <title>$valid_page_name</title>\n";
      $items.="  <link href='$url'></link>\n";
      $items.='  '.$content;
      $items.="  <author><name>$user</name>$user_uri</author>\n";
      $items.="  <updated>$date</updated>\n";
      $items.="  <contributor><name>$user</name>$user_uri</contributor>\n";
      $items.="</entry>\n";
    }
    $updated="  <updated>$updated</updated>\n";
  
    $new="";
    if ($options['oe'] and (strtolower($options['oe']) != $DBInfo->charset)) {
      $charset=$options['oe'];
      if (function_exists('iconv')) {
        $out=$head.$channel.$items.$form;
        $new=iconv($DBInfo->charset,$charset,$out);
        if (!$new) $charset=$DBInfo->charset;
      }
    } else $charset=$DBInfo->charset;
  
    $head=<<<HEAD
  <?xml version="1.0" encoding="$charset"?>
  <!--<?xml-stylesheet href="$DBInfo->url_prefix/css/_feed.css" type="text/css"?>-->
  <feed xmlns="http://www.w3.org/2005/Atom">
  <!--
      Add "diffs=1" to add change diffs to the description of each items.
      Add "oe=utf-8" to convert the charset of this rss to UTF-8.
  -->\n
  HEAD;
    header("Content-Type: application/xml");
    if ($new) print $head.$new;
    else print $head.$channel.$updated.$items.$form;
    print "</feed>\n";
  }
  ?>
  
  
  


wkpark      2006/08/15 23:05:33

  Modified:    .        wiki.php
  Log:
  fixed td coloring, rowspan and table closing
  
  Revision  Changes    Path
  1.334     +8 -6      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.333
  retrieving revision 1.334
  diff -u -r1.333 -r1.334
  --- wiki.php	12 Aug 2006 07:27:51 -0000	1.333
  +++ wiki.php	15 Aug 2006 14:05:33 -0000	1.334
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.333 2006/08/12 07:27:51 wkpark Exp $
  +// $Id: wiki.php,v 1.334 2006/08/15 14:05:33 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.333 $',1,-1);
  +$_revision = substr('$Revision: 1.334 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2682,7 +2682,7 @@
               $sty[$k]=strtolower($v);
               break;
             default:
  -            $myattr[]=$k.'="'.$v.'"';
  +            if ($v) $myattr[]=$k.'="'.$v.'"';
               break;
           }
         }
  @@ -2735,9 +2735,10 @@
       else if (preg_match("/^\-(\d+)$/",$para,$match))
         $attr[]="colspan='$match[1]'";
       else if ($para[0]=='#')
  -      $sty['background-color']=strtolower($para);
  +      $attr[]='style="background-color:'.strtolower($para).'"';
       else {
  -      if (substr($para,0,3)=='row') { // row properties
  +      if (substr($para,0,3)=='row' and substr($para,0,7)!='rowspan') {
  +        // row properties
           $val=substr($para,3); $myattr=$this->_attr($val);
           $val=implode(' ',$myattr);
           if ($align) {
  @@ -3164,7 +3165,8 @@
           if ($match[2]) $open.='<caption>'.$match[2].'</caption>';
           if (!$match[5]) $line='||'.$match[3].$match[6].'||';
           $in_table=1;
  -      } elseif ($in_table && $line[0]!='|') {
  +      } elseif ($in_table && ($line[0]!='|' or
  +           !preg_match("/^\|{2}.*\|{2}$/",$line))) {
            $close=$this->_table(0,$dumm).$close;
            $in_table=0;
         }
  
  
  


wkpark      2006/08/16 20:24:01

  Added:       plugin   Rating.php
  Log:
  add a new rating plugin
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/Rating.php
  
  Index: Rating.php
  ===================================================================
  <?php
  // Copyright 2006 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a Rating plugin for the MoniWiki
  //
  // Usage: [[Rating(totalscore,count)]] or [[Rating(initial score)]]
  //
  // $Id: Rating.php,v 1.1 2006/08/16 11:24:01 wkpark Exp $
  
  function macro_Rating($formatter,$value='',$options=array()) {
      global $Config;
      $rating_script=&$GLOBALS['rating_script'];
  
      $mid='&amp;mid='.base64_encode($formatter->mid.',Rating,'.$value);
  
      $val=explode(',',$value);
      if (sizeof($val)>=2) {
          $total=$val[0];
          $count=$val[1];
      } else
          $total=$val[0];
      $count=max(1,$count);
      $value=$total/$count; // averaged value
      $value=(!empty($value) and 0 < $value and 6 > $value) ? $value:0;
  
      $iconset='star';
      $imgs_dir=$Config['imgs_dir'].'/plugin/Rating/'.$iconset;
      $script=<<<EOF
  <script type="text/javascript">
  /*<![CDATA[*/
  function showstars(obj, n, desc) {
      var my = obj.parentNode.parentNode;
      var c = my.getElementsByTagName('img');
      for( i=0; i < c.length; i++ ) {
          if (i < n)
              c[i].src = "$imgs_dir/star1.png"
          else
              c[i].src = "$imgs_dir/star0.png"
      }
      my.getElementsByTagName('span')[0].innerHTML = desc ? ' ' + desc:'';
  }
  
  /*]]>*/
  </script>
  EOF;
  
      $star='<span class="rating">';
      $msg=array(
          1=>_("Awful!"),
          2=>_("Not the worst ever."),
          3=>_("Not bad!"),
          4=>_("Useful!"),
          5=>_("Very Gooood!"));
  
      for ($i=1;$i<=5;++$i) {
          $t=($i <= $value) ? '1':'0';
          $alt=$t ? '{*}':'{o}';
          $star.='<a href="?action=rating'.$mid.'&amp;rating='.$i.'">'.
              '<img alt="'.$alt.'" src="'.$imgs_dir.'/star'.$t.'.png" '.
              'onmouseover="showstars(this,'.$i.
              ',\''.$msg[$i].'\')" onmouseout="showstars(this,'.intval($value).',\'\')" '.
              'border="0" class="star" /></a>';
      }
      $star.=<<<EOF
  <span class="rating-desc" style="font-size: 16px;"></span>
  </span>
  EOF;
      if ($rating_script) return $star;
      $rating_script=1;
      return $script.$star;
  }
  
  function do_rating($formatter,$options) {
      global $DBInfo;
      if ($options['id'] == 'Anonymous') {
          $options['msg'].="\n"._("Please Login or make your ID on this Wiki ;)");
          do_invalid($formatter,$options);
          return;
      }
      $formatter->send_header('',$options);
  
      $raw=$formatter->page->get_raw_body();
  
      list($nth,$dum,$v)=explode(',', base64_decode($options['mid']),3);
  
      $val=explode(',',$v);
      if (sizeof($val)>=2) {
          $total=$val[0];
          $count=$val[1];
      } else
          $total=$val[0];
      $count=max(1,$count);
      $value=$total/$count; // averaged value
      $value=(!empty($value) and 0 < $value and 6 > $value) ? $value:0;
      ++$count;
  
      $check='[['.$dum.'('.$v.')]]';
      $rating=$options['rating'] ? (int)$options['rating']:1;
      $rating=min(5,max(0,$rating));
  
      $total+=$rating; // increase total rating
  
      $raw=str_replace("\n","\1",$raw);
      $chunk=preg_split("/({{{.+}}})/U",$raw,-1,PREG_SPLIT_DELIM_CAPTURE);
      #print '<pre>';
      #print_r($chunk);
      #print '</pre>';
      $nc='';
      $k=1;
      $i=1;
      foreach ($chunk as $c) {
          if ($k%2) {
              $nc.=$c;
          } else {
              $nc.="\7".$i."\7";
              $blocks[$i]=str_replace("\1","\n",$c);
              ++$i;
          }
          $k++;
      }
      $nc=str_replace("\1","\n",$nc);
      $chunk=preg_split('/((?!\!)\[\[.+\]\])/U',$nc,-1,PREG_SPLIT_DELIM_CAPTURE);
      $nnc='';
      $ii=1;
      $matched=0;
      for ($j=0,$sz=sizeof($chunk);$j<$sz;++$j) {
          if (($j+1)%2) {
              $nnc.=$chunk[$j];
          } else {
              if ($nth==$ii) {
                  $new='[[Rating('.$total.','.$count.')]]';
                  if ($check != $chunk[$j]) break;
                  $nnc.=$new;
                  $matched=1;
              }
              else
                  $nnc.=$chunk[$j];
              ++$ii;
          }
      }
  
      if (!$matched) {
          $options['title']=_("Invalid rating request !");
          $formatter->send_title('','',$options);
          $formatter->send_footer('',$options);
          return;
      }
  
      if (!empty($blocks)) {
          $nnc=preg_replace("/\7(\d+)\7/e",
              "\$blocks[$1]",$nnc);
      }
      $formatter->page->write($nnc);
      $DBInfo->savePage($formatter->page,"Rating",$options);
  
      #print "<pre>";
      #print_r($options);
      #print "</pre>";
      #print $check;   
  
      $options['title']=_("Rating successfully !");
      $formatter->send_title('','',$options);
      $formatter->send_page('',$options);
      $formatter->send_footer('',$options);
      return;
  }
  
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2006/08/17 17:01:30

  Modified:    plugin/processor bbcode.php chat.php hello.php textile.php
  Log:
  change metainfo method like as WordPress
  
  Revision  Changes    Path
  1.3       +11 -14    moniwiki/plugin/processor/bbcode.php
  
  Index: bbcode.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/bbcode.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- bbcode.php	1 Aug 2006 01:03:01 -0000	1.2
  +++ bbcode.php	17 Aug 2006 08:01:30 -0000	1.3
  @@ -6,23 +6,20 @@
   // imported from the Soojung project http://soojung.kldp.net
   // - with some modification and simley disabled.
   //
  -// $Id: bbcode.php,v 1.2 2006/08/01 01:03:01 wkpark Exp $
  +// $Id: bbcode.php,v 1.3 2006/08/17 08:01:30 wkpark Exp $
  +/**
  + * @author  Soojung http://soojung.kldp.net
  + * @date    2006-01-09
  + * @name    BBCode
  + * @desc    BBCode Procssor
  + * @url     MoniWiki:BBCodeProcessor
  + * @version $Revision: 1.3 $
  + * @depend  1.1.3
  + * @license GPL
  + */
   
   class processor_bbcode {
   
  -  function info() {
  -    return array(
  -      'author'  => 'Soojung http://soojung.kldp.net',
  -      'date'    => '2006-01-09',
  -      'name'    => 'BBCode',
  -      'desc'    => 'BBCode Procssor',
  -      'url'     => 'MoniWiki:BBCodeProcessor',
  -      'version' => substr('$Revision: 1.2 $',1,-1),
  -      'depend'  => '1.1.3',
  -      'license' => 'GPL',
  -    );
  -  }
  -
     function __listing($mode, $str) {
       $str=str_replace("\\'","'",$str);
       $item = explode("[*]", $str);
  
  
  
  1.6       +11 -1     moniwiki/plugin/processor/chat.php
  
  Index: chat.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/chat.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- chat.php	13 Jan 2006 15:32:33 -0000	1.5
  +++ chat.php	17 Aug 2006 08:01:30 -0000	1.6
  @@ -3,10 +3,19 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a sample plugin for the MoniWiki
   //
  +// Author: Your name <foobar@foo.bar>
  +// Date: 2006-01-01
  +// Name: Hello world2
  +// Description: Hello world2 Processor
  +// URL: to_plugin url/interwiki name etc.
  +// Version: $Revision: 1.6 $
  +// License: GPL
  +//
   // Usage: {{{#!chat ID @date@ title
   // Hello World
   // }}}
  -// $Id: chat.php,v 1.5 2006/01/13 15:32:33 wkpark Exp $
  +//
  +// $Id: chat.php,v 1.6 2006/08/17 08:01:30 wkpark Exp $
   
   function processor_chat($formatter,$value="") {
       if ($value[0]=='#' and $value[1]=='!')
  @@ -27,6 +36,7 @@
   
       $src= $value;
   
  +    $formatter->set_wordrule();
       if ($src) {
           $options['nosisters']=1;
           ob_start();
  
  
  
  1.6       +9 -1      moniwiki/plugin/processor/hello.php
  
  Index: hello.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/hello.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- hello.php	6 Aug 2006 15:55:41 -0000	1.5
  +++ hello.php	17 Aug 2006 08:01:30 -0000	1.6
  @@ -3,10 +3,18 @@
   // All rights reserved. Distributable under GPL see COPYING
   // sample plugin for the MoniWiki
   //
  +// Author: Your name <foobar@foo.bar>
  +// Date: 2006-01-01
  +// Name: Hello world
  +// Description: Hello world Processor
  +// URL: to_plugin url/interwiki name etc.
  +// Version: $Revision: 1.6 $
  +// License: GPL
  +//
   // Usage: {{{#!hello Name
   // Hello World
   // }}}
  -// $Id: hello.php,v 1.5 2006/08/06 15:55:41 wkpark Exp $
  +// $Id: hello.php,v 1.6 2006/08/17 08:01:30 wkpark Exp $
   
   function processor_hello($formatter,$value="",$options=array()) {
       if ($value[0]=='#' and $value[1]=='!')
  
  
  
  1.5       +2 -3      moniwiki/plugin/processor/textile.php
  
  Index: textile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/textile.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- textile.php	29 Jul 2006 07:42:22 -0000	1.4
  +++ textile.php	17 Aug 2006 08:01:30 -0000	1.5
  @@ -1,8 +1,7 @@
   <?php
   // slightly modified for MoniWiki by wkpark@kldp.org
  -// $Id: textile.php,v 1.4 2006/07/29 07:42:22 wkpark Exp $
  +// $Id: textile.php,v 1.5 2006/08/17 08:01:30 wkpark Exp $
   //
  -
   /**
    * class Textile
    *
  @@ -225,7 +224,7 @@
           		'name'    => 'Textile',
           		'desc'    => 'Textile Procssor',
           		'url'     => 'MoniWiki:TextileProcessor',
  -			'version' => substr('$Revision: 1.4 $',1,-1),
  +			'version' => substr('$Revision: 1.5 $',1,-1),
   			'depend'  => '1.1.3',
   			'license' => 'BSD style',
         		);
  
  
  


wkpark      2006/08/17 17:02:21

  Modified:    plugin   atom.php Test.php Rating.php
  Log:
  add metainfo
  
  Revision  Changes    Path
  1.2       +8 -1      moniwiki/plugin/atom.php
  
  Index: atom.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/atom.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- atom.php	15 Aug 2006 13:03:26 -0000	1.1
  +++ atom.php	17 Aug 2006 08:02:21 -0000	1.2
  @@ -3,7 +3,14 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a atom action plugin for the MoniWiki
   //
  -// $Id: atom.php,v 1.1 2006/08/15 13:03:26 wkpark Exp $
  +// Date: 2006-08-15
  +// Name: Atom feeder
  +// Description: Atom Plugin
  +// URL: MoniWiki:AtomPlugin
  +// Version: $Revision: 1.2 $
  +// License: GPL
  +//
  +// $Id: atom.php,v 1.2 2006/08/17 08:02:21 wkpark Exp $
   // $orig Id: rss_rc.php,v 1.12 2005/09/13 09:10:52 wkpark Exp $
   
   function do_atom($formatter,$options) {
  
  
  
  1.5       +9 -1      moniwiki/plugin/Test.php
  
  Index: Test.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Test.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Test.php	7 Jul 2006 14:18:18 -0000	1.4
  +++ Test.php	17 Aug 2006 08:02:21 -0000	1.5
  @@ -3,9 +3,17 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a sample plugin for the MoniWiki
   //
  +// Author: Your name <foobar@foo.bar>
  +// Date: 2006-01-01
  +// Name: Hello world
  +// Description: Hello world Plugin
  +// URL: to_plugin url/interwiki name etc.
  +// Version: $Revision: 1.5 $
  +// License: GPL
  +//
   // Usage: [[Test]]
   //
  -// $Id: Test.php,v 1.4 2006/07/07 14:18:18 wkpark Exp $
  +// $Id: Test.php,v 1.5 2006/08/17 08:02:21 wkpark Exp $
   
   function macro_Test($formatter,$value) {
       return "HelloWorld !\n";
  
  
  
  1.2       +8 -1      moniwiki/plugin/Rating.php
  
  Index: Rating.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Rating.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Rating.php	16 Aug 2006 11:24:01 -0000	1.1
  +++ Rating.php	17 Aug 2006 08:02:21 -0000	1.2
  @@ -3,9 +3,16 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Rating plugin for the MoniWiki
   //
  +// Date: 2006-08-16
  +// Name: Rating
  +// Description: Rating Plugin
  +// URL: MoniWiki:RatingPlugin
  +// Version: $Revision: 1.2 $
  +// License: GPL
  +//
   // Usage: [[Rating(totalscore,count)]] or [[Rating(initial score)]]
   //
  -// $Id: Rating.php,v 1.1 2006/08/16 11:24:01 wkpark Exp $
  +// $Id: Rating.php,v 1.2 2006/08/17 08:02:21 wkpark Exp $
   
   function macro_Rating($formatter,$value='',$options=array()) {
       global $Config;
  
  
  


wkpark      2006/08/17 17:03:13

  Modified:    plugin   admin.php
  Log:
  change metadata mechanism like as WordPress
  
  Revision  Changes    Path
  1.2       +130 -51   moniwiki/plugin/admin.php
  
  Index: admin.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/admin.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- admin.php	6 Aug 2006 15:53:34 -0000	1.1
  +++ admin.php	17 Aug 2006 08:03:13 -0000	1.2
  @@ -5,21 +5,71 @@
   //
   // Plugin/Processor on/off plugin <!> experimental
   //
  +// Date: 2006-07-30
  +// Name: Admin
  +// Description: Admin Plugin
  +// URL: MoniWiki:AdminPlugin
  +// Version: $Revision: 1.2 $
  +// Depend: 1.1.3
  +// License: GPL
  +//
   // Usage: ?action=admin
   //
  -// $Id: admin.php,v 1.1 2006/08/06 15:53:34 wkpark Exp $
  +// $Id: admin.php,v 1.2 2006/08/17 08:03:13 wkpark Exp $
  +
  +function get_plugin_info($plugin_file) {
  +    // wordpress style management
  +    $info=array();
  +    $fp=fopen($plugin_file,'r');
  +    if (is_resource($fp)) {
  +        while(1) {
  +            $l=fgets($fp,2048);
  +            if (!rtrim($l)) break; // XXX
  +            if ($l{0}==' ' and $l{1}=='*') {
  +                if ($l{2}==' ' and $l{3}!='@') {
  +                    $desc.=substr($l,3);
  +                } else if (substr($l,1,3)=='* @') {
  +                    $l=substr($l,4);
  +                    list($k,$v)=split("[[:blank:]]+",rtrim($l),2);
  +                    $nk=strtolower($k);
  +                    $info[$nk]=$info[$nk] ? $info[$nk].','.$v:$v;
  +                }
  +            } else if ($l{1}=='/' and $l{2}==' ') {
  +                $l=substr($l,3);
  +                if (($p=strpos($l,':'))!== false) {
  +                    $k=substr($l,0,$p);
  +                    $v=trim(substr($l,$p+2));
  +                    $nk=strtolower($k);
  +                    $info[$nk]=$info[$nk] ? $info[$nk].','.$v:$v;
  +                }
  +            }
  +        }
  +        fclose($fp);
  +    }
  +
  +    if (!$info) return array();
   
  -function info_admin() {
  -    return array(
  -        'author'  => 'Won-Kyu Park <wkpark@kldp.org>',
  -        'date'    => '2006-07-30',
  -        'name'    => 'Admin',
  -        'desc'    => 'Admin Plugin',
  -        'url'     => 'MoniWiki:AdminPlugin',
  -        'version' => substr('$Revision: 1.1 $',1,-1),
  -        'depend'  => '1.1.3',
  -        'license' => 'GPL',
  -     );
  +    $name = $info['name'];
  +    $url = $info['uri'].$info['url'];
  +    $author = $info['author'];
  +    $author_url = $info['author uri'] or $info['author url'];
  +    $description = $info['description'].$desc.$info['desc'];
  +    $license = $info['license'];
  +    $version = $info['version'];
  +    $depend = $info['depend'] or $info['dependency'];
  +
  +    if ($version and $version{0}=='$' and substr($version,1,9)=='Revision:')
  +        $version=substr($version,10,-1);
  +
  +    return array (
  +                'Name' => $name,
  +                'Description' => $description,
  +                'Author' => $author,
  +                'Version' => $version,
  +                'License' => $license,
  +                'URL' => $url,
  +                'Depend' => $depend,
  +    );
   }
   
   function macro_admin($formatter,$value='',$options=array()) {
  @@ -30,61 +80,90 @@
       else
           $dirs=array('.');
   
  +    $arena='plugin';
  +    $plcur=' class="current"';
  +    $prcur='';
  +    if ($options['arena']=='processor') {
  +        $arena='processor';
  +        $prcur=' class="current"';
  +        $plcur='';
  +    }
  +    $pdir=$arena == 'plugin' ? 'plugin':'plugin/processor';
  +    $tag=$arena == 'plugin' ? 'pl':'pr';
  +    
       // make plugins list
       foreach ($dirs as $dir) {
  -        $handle= @opendir($dir.'/plugin');
  +        $handle= @opendir($dir.'/'.$pdir);
           if (!$handle) continue;
           while ($file= readdir($handle)) {
  -            if (is_dir($dir."/plugin/$file")) continue;
  +            if (is_dir($dir.'/'.$pdir.'/'.$file)) continue;
               if ($file{0}=='.') continue;
  +            if (substr($file,-4)!='.php') continue;
               $name= substr($file,0,-4);
               $plugins[strtolower($name)]= $name;
  -        }
  -    }
  -    // make processors list
  -    foreach ($dirs as $dir) {
  -        $handle= @opendir($dir.'/plugin/processor');
  -        if (!$handle) continue;
  -        while ($file= readdir($handle)) {
  -            if (is_dir($dir."/plugin/processor/$file")) continue;
  -            if ($file{0}=='.') continue;
  -            $name= substr($file,0,-4);
  -            $processors[strtolower($name)]= $name;
  +            $pl_infos[strtolower($name)]=
  +                get_plugin_info($dir.'/'.$pdir.'/'.$file);
           }
       }
   
       ksort($plugins);
  -    ksort($processors);
  +
  +    //
  +    $formatter->set_wordrule(array('#camelcase'=>0));
   
       // get settings
       $sc=new Cache_text('settings');
  -    $pls=unserialize($sc->fetch('plugins'));
  -    $prs=unserialize($sc->fetch('processors'));
  +    $pls=unserialize($sc->fetch($arena.'s'));
   
  -    $pl="<tr><th colspan='2'>Plugins</th></tr>\n";
  +    #$pl="<tr><th colspan='3'>"._($arena)."</th></tr>\n";
  +    $pl='';
       $i=0;
       foreach ($plugins as $p=>$v) {
  +        ++$i;
           $ck= isset($pls[$p]) ? 'checked="checked"':'';
           $disabled=empty($ck) ? ' disabled':'';
  -        $pl.="<tr><th class='info$disabled'>".
  -            $p.'</th><td>'."$v</td><td><input type='checkbox' name='pl[$p]' value='$v' $ck/></td></tr>\n";
  -        ++$i;
  +        $name=$pl_infos[$p]['Name'] ? $pl_infos[$p]['Name']:$p;
  +        $version=$pl_infos[$p]['Version'];
  +        $author=$pl_infos[$p]['Author'];
  +        $version=$pl_infos[$p]['Version'];
  +        $license=$pl_infos[$p]['License'];
  +        $depend=$pl_infos[$p]['Depend'];
  +        $url=$pl_infos[$p]['URL'];
  +        $desc=$pl_infos[$p]['Description'] ? $pl_infos[$p]['Description']:'';
  +        $pl.="<tr><th class='info$disabled' width='10%'>".
  +            $name.' '.$version.'</th><td>'."$v</td><td width='2%'><input type='checkbox' name='{$tag}[$p]' value='$v' $ck/></td></tr>\n";
  +        if ($author or $desc or $license) {
  +            $msg=_("Description");
  +            $pl.="<tr><td colspan='3'><fieldset class='collapsible collapsed'><legend>$msg: </legend>";
  +            if ($author)
  +                $pl.='<strong>'._("Author").': '.$author."</strong><br />\n";
  +            if ($license)
  +                $pl.='<strong>'._("License").': '.$license."</strong><br />\n";
  +            if ($depend)
  +                $pl.='<strong>'._("Depend").': '.$depend."</strong><br />\n";
  +            if ($url) {
  +                $url=preg_replace("/(".$formatter->wordrule.")/e",
  +                    "\$formatter->link_repl('\\1')",$url);
  +                $pl.='<strong>'._("URL").': '.$url."</strong><br />\n";
  +            }
  +            if ($desc) {
  +                $desc=preg_replace("/(".$formatter->wordrule.")/e",
  +                    "\$formatter->link_repl('\\1')",$desc);
  +                $pl.="<p><pre>$desc</pre></p>\n";
  +            }
  +            $pl.="</fieldset></td></tr>\n";
  +        }
       }
  -    $pl.="<tr><td colspan='2'>Total <b>$i</b></td></tr>\n";
  -    $pr="<tr><th colspan='2'>Processors</th></tr>\n";
  -    $j=0;
  -    foreach ($processors as $p=>$v) {
  -        $ck= isset($prs[$p]) ? 'checked="checked"':'';
  -        $disabled=empty($ck) ? ' disabled':'';
  -        $pr.="<tr><th class='info$disabled'>".
  -            $p.'</th><td>'."$v</td><td><input type='checkbox' name='pr[$p]' value='$v' $ck/></td></tr>\n";
  -        ++$j;
  -    }
  -    $pr.="<tr><td colspan='2'>Total <b>$j</b></td></tr>\n";
  -
  -    $out="<form method='post' action=''><table><tr valign='top'><td><table>".$pl."</table></td>";
  -    $out.="<td><table>".$pr."</table></td></tr>";
  -    $out.='</table>';
  +    $pl.="<tr><td colspan='3'>Total <b>$i</b></td></tr>\n";
  +
  +    $out=<<<MENU
  +<ul id="admin-submenu">
  +    <li><a href="?action=admin&amp;arena=plugin"$plcur>Plugins</a></li>
  +    <li><a href="?action=admin&amp;arena=processor"$prcur>Processors</a></li>
  +</ul>
  +MENU;
  +    $out.="<form method='post' action=''><table algin='center'><tr valign='top'>".$pl.
  +        "</table>";
       if (in_array($options['id'],$DBInfo->owners)) {
           $out.='<input type="hidden" name="action" value="admin" />';
           $out.='<input type="submit" value="Update" />';
  @@ -103,9 +182,10 @@
           $cpr=unserialize($cp->fetch('processors'));
   
           $out='';
  -        if (is_array($options['pl'])) {
  +        if (is_array($options['pl']) and is_array($cpl)) {
               $ad=array_diff($options['pl'],$cpl);
               $de=array_diff($cpl,$options['pl']);
  +            $cp->update('plugins',serialize($options['pl']));
   
               $out.=!empty($ad) ?
                   '<h2>'._("Enabled plugins").'</h2><ul><li>'.implode("</li>\n<li>",$ad).'</li></ul>':'';
  @@ -113,17 +193,16 @@
                   '<h2>'._("Disabled plugins").'</h2><ul><li>'.implode("</li>\n<li>",$de).'</li></ul>':'';
           }
   
  -        if (is_array($options['pr'])) {
  +        if (is_array($options['pr']) and is_array($cpr)) {
               $ad=array_diff($options['pr'],$cpr);
               $de=array_diff($cpr,$options['pr']);
  +            $cp->update('processors',serialize($options['pr']));
               $out.=!empty($ad) ?
                   '<h2>'._("Enabled processors").'</h2><ul><li>'.implode("</li>\n<li>",$ad).'</li></ul>':'';
               $out.=!empty($de) ?
                   '<h2>'._("Disabled processors").'</h2><ul><li>'.implode("</li>\n<li>",$de).'</li></ul>':'';
           }
   
  -        $cp->update('plugins',serialize($options['pl']));
  -        $cp->update('processors',serialize($options['pr']));
           $options['title']=_("Plugin/Processor settings are updated");
           $formatter->send_title('','',$options);
           print $out;
  
  
  


pyrasis     2006/10/31 10:54:17

  Modified:    plugin   Blog.php BlogChanges.php rss_blog.php
  Log:
  add #BlogComment to Blog comment link.
  
  Revision  Changes    Path
  1.31      +3 -1      moniwiki/plugin/Blog.php
  
  Index: Blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Blog.php,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- Blog.php	26 Jan 2006 03:10:35 -0000	1.30
  +++ Blog.php	31 Oct 2006 01:54:17 -0000	1.31
  @@ -5,7 +5,7 @@
   //
   // Usage: ?action=Blog
   //
  -// $Id: Blog.php,v 1.30 2006/01/26 03:10:35 wkpark Exp $
  +// $Id: Blog.php,v 1.31 2006/10/31 01:54:17 pyrasis Exp $
   
   function updateBlogList($formatter) {
     global $DBInfo;
  @@ -230,6 +230,8 @@
         $extra='<div style="text-align:right">'.'
           <input type="submit" name="button_refresh" value="Refresh" /></div>';
   
  +    if ($options['value'])
  +      print "<a name='BlogComment'></a>";
       print "<form method='post' action='$url'>\n";
       if ($options['id'] == 'Anonymous')
         print '<b>'._("Name")."</b>: <input name='name' size='15' maxlength='15' value='$options[name]' />\n";
  
  
  
  1.36      +2 -2      moniwiki/plugin/BlogChanges.php
  
  Index: BlogChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogChanges.php,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- BlogChanges.php	9 Jan 2006 16:10:56 -0000	1.35
  +++ BlogChanges.php	31 Oct 2006 01:54:17 -0000	1.36
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogChanges action plugin for the MoniWiki
   //
  -// $Id: BlogChanges.php,v 1.35 2006/01/09 16:10:56 wkpark Exp $
  +// $Id: BlogChanges.php,v 1.36 2006/10/31 01:54:17 pyrasis Exp $
   
   class Blog_cache {
     function get_all_blogs() {
  @@ -412,7 +412,7 @@
           } else
             $add_button=_("Add comment");
           $add_button=sprintf($add_button,$commentcount);
  -        $btn= $formatter->link_tag(_urlencode($page),"?action=blog&amp;value=$tag",$add_button);
  +        $btn= $formatter->link_tag(_urlencode($page),"?action=blog&amp;value=$tag#BlogComment",$add_button);
   
           if ($DBInfo->use_trackback) {
             if (isset($trackback_list[$page][$tag]))
  
  
  
  1.23      +2 -2      moniwiki/plugin/rss_blog.php
  
  Index: rss_blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rss_blog.php,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- rss_blog.php	9 Oct 2005 05:52:52 -0000	1.22
  +++ rss_blog.php	31 Oct 2006 01:54:17 -0000	1.23
  @@ -4,7 +4,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a rss_blog action plugin for the MoniWiki
   //
  -// $Id: rss_blog.php,v 1.22 2005/10/09 05:52:52 iolo Exp $
  +// $Id: rss_blog.php,v 1.23 2006/10/31 01:54:17 pyrasis Exp $
   
   include_once("plugin/BlogChanges.php");
   
  @@ -167,7 +167,7 @@
     <pubDate>$pubDate</pubDate>
     <author>$user</author>
     <category domain="$url">$page</category>
  -  <comments><![CDATA[$url?action=blog&value=$tag]]></comments>
  +  <comments><![CDATA[$url?action=blog&value=$tag#BlogComment]]></comments>
   </item>
   
   ITEM;
  
  
  


pyrasis     2006/10/31 10:54:17

  Modified:    plugin/processor blog.php
  Log:
  add #BlogComment to Blog comment link.
  
  Revision  Changes    Path
  1.23      +2 -2      moniwiki/plugin/processor/blog.php
  
  Index: blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/blog.php,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- blog.php	10 Jan 2006 08:26:56 -0000	1.22
  +++ blog.php	31 Oct 2006 01:54:17 -0000	1.23
  @@ -7,7 +7,7 @@
   // Hello World
   // }}}
   // this processor is used internally by the Blog action
  -// $Id: blog.php,v 1.22 2006/01/10 08:26:56 wkpark Exp $
  +// $Id: blog.php,v 1.23 2006/10/31 01:54:17 pyrasis Exp $
   
   function processor_blog($formatter,$value="",$options) {
     static $date_anchor='';
  @@ -92,7 +92,7 @@
       else $counter='';
   
       if (!$options['noaction'] and $md5sum) {
  -      $action= $formatter->link_tag($formatter->page->urlname,"?action=blog&amp;value=$md5sum",$add_button);
  +      $action= $formatter->link_tag($formatter->page->urlname,"?action=blog&amp;value=$md5sum#BlogComment",$add_button);
         if (getPlugin('SendPing'))
           $action.= ' | '.$formatter->link_tag($formatter->page->urlname,"?action=trackback&amp;value=$md5sum",_("track back").$counter);
       }
  
  
  


wkpark      2006/11/14 19:59:51

  Modified:    .        config.php.default
  Log:
  fixed the name of the control_read option and add some others
  
  Revision  Changes    Path
  1.37      +3 -2      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- config.php.default	29 Jul 2006 11:58:05 -0000	1.36
  +++ config.php.default	14 Nov 2006 10:59:51 -0000	1.37
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.36 2006/07/29 11:58:05 wkpark Exp $
  +# $Id: config.php.default,v 1.37 2006/11/14 10:59:51 wkpark Exp $
   #
   $sitename='UnnamedWiki';
   $data_dir= './data';
  @@ -172,7 +172,7 @@
   #$raw_errlog=0; # do not hide some dir. infos.
   #$acl_type='default'; # XXX
   #$acl_debug=1;
  -#$read_control=1; # control read action also
  +#$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
  @@ -185,4 +185,5 @@
   #$cache_public_dir='./_cache'; # enhanced caching
   #$no_404=1; # for IIS
   #$nofancy_404=1; # simplified 404 msg for robots etc.
  +#$toolbar_iconset='mediawiki'; # change the toolbar iconset 
   ?>
  
  
  


wkpark      2006/12/05 08:30:20

  Modified:    plugin   Tag: B_1_1_2 UploadFile.php
  Log:
  fixed " problem in the uploadfile action
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.24.2.1  +3 -3      moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.24
  retrieving revision 1.24.2.1
  diff -u -r1.24 -r1.24.2.1
  --- UploadFile.php	9 Jul 2006 10:26:17 -0000	1.24
  +++ UploadFile.php	4 Dec 2006 23:30:20 -0000	1.24.2.1
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.24 2006/07/09 10:26:17 wkpark Exp $
  +// $Id: UploadFile.php,v 1.24.2.1 2006/12/04 23:30:20 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -165,9 +165,9 @@
   
     $fullname=$formatter->page->name."/$upfilename";
     $upname=$upfilename;
  -  if (strpos($fullname,' ')!==false);
  +  if (strpos($fullname,' ')!==false)
       $fullname='"'.$fullname.'"';
  -  if (strpos($upname,' ')!==false);
  +  if (strpos($upname,' ')!==false)
       $upname='"'.$upname.'"';
   
     if ($key == 'UploadFile') {
  
  
  


wkpark      2006/12/05 08:38:42

  Modified:    plugin   UploadFile.php
  Log:
  fixed quote problem with the UploadFile action
  
  Revision  Changes    Path
  1.26      +3 -3      moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- UploadFile.php	10 Aug 2006 10:59:24 -0000	1.25
  +++ UploadFile.php	4 Dec 2006 23:38:42 -0000	1.26
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.25 2006/08/10 10:59:24 wkpark Exp $
  +// $Id: UploadFile.php,v 1.26 2006/12/04 23:38:42 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -166,9 +166,9 @@
   
     $fullname=$formatter->page->name."/$upfilename";
     $upname=$upfilename;
  -  if (strpos($fullname,' ')!==false);
  +  if (strpos($fullname,' ')!==false)
       $fullname='"'.$fullname.'"';
  -  if (strpos($upname,' ')!==false);
  +  if (strpos($upname,' ')!==false)
       $upname='"'.$upname.'"';
   
     if ($key == 'UploadFile') {
  
  
  


wkpark      2006/12/05 08:49:52

  Modified:    plugin   Tag: B_1_1_2 print.php
  Log:
  fixed non-exists links problem with the print action reported by ChangMin Oh
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.4.4.1   +4 -1      moniwiki/plugin/print.php
  
  Index: print.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/print.php,v
  retrieving revision 1.4
  retrieving revision 1.4.4.1
  diff -u -r1.4 -r1.4.4.1
  --- print.php	2 Oct 2004 02:44:36 -0000	1.4
  +++ print.php	4 Dec 2006 23:49:52 -0000	1.4.4.1
  @@ -3,11 +3,14 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a print action plugin for the MoniWiki
   //
  -// $Id: print.php,v 1.4 2004/10/02 02:44:36 wkpark Exp $
  +// $Id: print.php,v 1.4.4.1 2006/12/04 23:49:52 wkpark Exp $
   
   function do_print($formatter,$options) {
     global $DBInfo;
     $options['css_url']=$DBInfo->url_prefix."/css/print.css";
  +
  +  $formatter->nonexists='simple';
  +
     $formatter->send_header("",$options);
     print "<div id='printHeader'>";
     print "<h2>$options[page]</h2>";
  
  
  


wkpark      2006/12/05 08:50:36

  Modified:    plugin   print.php
  Log:
  fixed non-exists links problem with the print action
  
  Revision  Changes    Path
  1.5       +4 -1      moniwiki/plugin/print.php
  
  Index: print.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/print.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- print.php	2 Oct 2004 02:44:36 -0000	1.4
  +++ print.php	4 Dec 2006 23:50:36 -0000	1.5
  @@ -3,11 +3,14 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a print action plugin for the MoniWiki
   //
  -// $Id: print.php,v 1.4 2004/10/02 02:44:36 wkpark Exp $
  +// $Id: print.php,v 1.5 2006/12/04 23:50:36 wkpark Exp $
   
   function do_print($formatter,$options) {
     global $DBInfo;
     $options['css_url']=$DBInfo->url_prefix."/css/print.css";
  +
  +  $formatter->nonexists='simple';
  +
     $formatter->send_header("",$options);
     print "<div id='printHeader'>";
     print "<h2>$options[page]</h2>";
  
  
  


wkpark      2006/12/06 08:55:16

  moniwiki/local/SWFUpload - New directory

wkpark      2006/12/06 09:07:40

  moniwiki/local/SWFUpload/images - New directory

wkpark      2006/12/06 09:09:03

  Added:       local/SWFUpload mmSWFUpload.js moni.js swfupload.css
                        upload.swf
  Log:
  add the SWFUpload slightly modified to support the MoniWiki
  
  Revision  Changes    Path
  1.1                  moniwiki/local/SWFUpload/mmSWFUpload.js
  
  Index: mmSWFUpload.js
  ===================================================================
  /**
   * mmSWFUpload 0.7: Flash upload dialog - http://profandesign.se/swfupload/
   *
   * SWFUpload is (c) 2006 Lars Huring and Mammon Media and is released under the MIT License:
   * http://www.opensource.org/licenses/mit-license.php
   *
   * VERSION HISTORY
   * 0.5 - First release
   *
   * 0.6 - 2006-11-24
   * - Got rid of flash overlay
   * - SWF size reduced to 840b
   * - CSS-only styling of button
   * - Add upload to links etc.
   *
   * 0.7 - 2006-11-27
   * - Added filesize param and check in SWF
   */
  
  mmSWFUpload = {
  
  	init: function(settings) {
  	
  		this.settings = settings;
  		this._prefix="./jscripts";
  		
  		// Remove background flicker in IE
  		try {
  		  document.execCommand('BackgroundImageCache', false, true);
  		} catch(e) {}
  
  		if (this.settings["_prefix"]) {
  			this._prefix=this.settings["_prefix"];
  		}
  		// Create SWFObject
  		var so = new SWFObject(this._prefix + "/SWFUpload/upload.swf", "_mmSWFUploadField", "1px", "1px", this.addSetting("flash_version", "8"), "#000000");
  			
  		if(deconcept.SWFObjectUtil.getPlayerVersion(so.getAttribute("version")).major >= 8) {
  		
  			so.addParam("wmode", "transparent");
  			so.addParam("menu", "false");
  						
  			// Add all settings to flash
  			so.addVariable("uploadBackend", this.addSetting("upload_backend", ""));
  			so.addVariable("uploadStartCallback", this.addSetting("upload_start_callback", ""));
  			so.addVariable("uploadProgressCallback", this.addSetting("upload_progress_callback", ""));
  			so.addVariable("uploadCompleteCallback", this.addSetting("upload_complete_callback", ""));
  			so.addVariable("uploadCancelCallback", this.addSetting("upload_cancel_callback", ""));
  			so.addVariable("uploadErrorCallback", this.addSetting("upload_error_callback", "mmSWFUpload.handleErrors"));
  			so.addVariable("allowedFiletypes", this.addSetting("allowed_filetypes", "*.gif;*.jpg;*.png"));
  			so.addVariable("allowedFilesize", this.addSetting("allowed_filesize", "1000"));
  			
  			// Output the flash
  			so.write(this.addSetting("target", "flashUpload"));
  	
  			// Set up button and styles
  			var swfc = document.getElementById(this.settings["target"])
  			
  			var link = document.createElement("a");
  			link.id = "_mmSWFUploadLink";
  			link.href = "javascript:mmSWFUpload.callSWF()";
  			link.className = this.addSetting("cssClass", "SWFUploadLink")
  			
  			link.style.display = "block";
  			swfc.appendChild(link);
  	
  		}
  		
  		if(this.settings["debug"] == true) {
  			mmSWFUpload.debug();
  		}
  		
  	},
  	
  	// Make sure that we get a few default values
  	addSetting: function(setting, defval) {
  		
  		if(!this.settings[setting]) {
  			this.settings[setting] = defval;
  		}
  	
  		return this.settings[setting];
  
  	},
  	
  	// Default error handling.
  	handleErrors: function(errcode, file, msg) {
  		
  		switch(errcode) {
  			
  			case -10:	// HTTP error
  				// alert(errcode + ", " + file + ", " + msg);
  				break;
  			
  			case -20:	// No backend file specified
  				alert(errcode + ", " + file + ", " + msg);
  				break;
  			
  			case -30:	// IOError
  				alert(errcode + ", " + file + ", " + msg);
  				break;
  			
  			case -40:	// Security error
  				alert(errcode + ", " + file + ", " + msg);
  				break;
  
  			case -50:	// Filesize too big
  				alert(errcode + ", " + file.name + ", " + msg);
  				break;
  		
  		}
  		
  	},
  	
  	getMovie: function(movieName) {
  		if (navigator.appName.indexOf("Microsoft") != -1) {
  		return window[movieName]
  		}	else {
  			return document[movieName]
  		}
      },
      
  	callSWF: function() {
  		mmSWFUpload.getMovie("_mmSWFUploadField").uploadImage();
      },
  	
  	debug: function() {
  			document.write("<strong>Target:</strong> " + this.settings["target"] + "<br />");
  			document.write("<strong>Upload start callback:</strong> " + this.settings["upload_start_callback"] + "<br />");
  			document.write("<strong>Upload progress callback:</strong> " + this.settings["upload_progress_callback"] + "<br />");
  			document.write("<strong>Upload complete callback:</strong> " + this.settings["upload_complete_callback"] + "<br />");
  			document.write("<strong>Upload filetypes:</strong> " + this.settings["allowed_filetypes"] + "<br />");
  			document.write("<strong>Max filesize:</strong> " + this.settings["allowed_filesize"] + "kb <br />");
  			document.write("<strong>Upload backend file:</strong> " + this.settings["upload_backend"] + "<br />");
  			document.write("<strong>Upload error callback:</strong> " + this.settings["upload_error_callback"] + "<br />");
  			document.write("<strong>Upload cancel callback:</strong> " + this.settings["upload_cancel_callback"] + "<br />");
  	}
  
  }
  
  /**
   * SWFObject v1.4: Flash Player detection and embed - http://blog.deconcept.com/swfobject/
   *
   * SWFObject is (c) 2006 Geoff Stearns and is released under the MIT License:
   * http://www.opensource.org/licenses/mit-license.php
   *
   * **SWFObject is the SWF embed script formerly known as FlashObject. The name was changed for
   *   legal reasons.
   */
  if(typeof deconcept=="undefined") {var deconcept=new Object();}
  if(typeof deconcept.util=="undefined") {deconcept.util=new Object();}
  if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();}
  
  deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a,_b){
  	
  	if(!document.createElement||!document.getElementById) {return;}
  	
  	this.DETECT_KEY = _b ? _b : "detectflash";
  	
  	this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);
  	this.params=new Object();
  	this.variables=new Object();
  	this.attributes=new Array();
  	
  	if(_1){this.setAttribute("swf",_1);}
  	
  	if(id){this.setAttribute("id",id);}
  	
  	if(w){this.setAttribute("width",w);}
  	
  	if(h){this.setAttribute("height",h);}
  	
  	if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}
  	
  	this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion(this.getAttribute("version"),_7);
  	
  	if(c) {this.addParam("bgcolor",c);}
  	
  	var q=_8?_8:"high";
  	
  	this.addParam("quality",q);
  	this.setAttribute("useExpressInstall",_7);
  	this.setAttribute("doExpressInstall",false);
  	var _d=(_9)?_9:window.location;
  	this.setAttribute("xiRedirectUrl",_d);
  	this.setAttribute("redirectUrl","");
  	
  	if(_a) {this.setAttribute("redirectUrl",_a);}
  };
  
  deconcept.SWFObject.prototype={setAttribute:function(_e,_f){
  	
  	this.attributes[_e]=_f;
  	},
  	
  	getAttribute: function(_10){
  		return this.attributes[_10];
  	},
  	
  	addParam: function(_11,_12){
  		this.params[_11]=_12;
  	},
  	
  	getParams: function(){
  		return this.params;
  	},
  
  	addVariable: function(_13,_14) {
  		this.variables[_13]=_14;
  	},
  	
  	getVariable: function(_15) {
  		return this.variables[_15];
  	},
  	
  	getVariables: function(){
  		return this.variables;
  	},
  	
  	getVariablePairs: function(){
  		var _16=new Array();
  		var key;
  	var _18=this.getVariables();
  for(key in _18){
  _16.push(key+"="+_18[key]);}
  return _16;
  },
  
  	getSWFHTML:function(){
  	var _19="";
  	if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){
  		if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","PlugIn");}
  		_19="<embed type=\"application/x-shockwave-flash\" src=\""+this.getAttribute("swf")+"\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\"";
  		_19+=" id=\""+this.getAttribute("id")+"\" name=\""+this.getAttribute("id")+"\" ";
  		var _1a=this.getParams();
  		for(var key in _1a){_19+=[key]+"=\""+_1a[key]+"\" ";}
  		var _1c=this.getVariablePairs().join("&");
  		if(_1c.length>0){_19+="flashvars=\""+_1c+"\"";}
  		_19+="/>";
  	} else {
  	
  		if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");}
  		_19="<object id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\">";
  		_19+="<param name=\"movie\" value=\""+this.getAttribute("swf")+"\" />";
  		var _1d=this.getParams();
  		for(var key in _1d){_19+="<param name=\""+key+"\" value=\""+_1d[key]+"\" />";}
  		var _1f=this.getVariablePairs().join("&");
  		if(_1f.length>0){_19+="<param name=\"flashvars\" value=\""+_1f+"\" />";}
  		_19+="</object>"
  	;}
  		return _19;
  	},
  
  write:function(_20){
  
  if(this.getAttribute("useExpressInstall")){
  	var _21=new deconcept.PlayerVersion([6,0,65]);
  	if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){
  	this.setAttribute("doExpressInstall",true);
  	this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));
  	document.title=document.title.slice(0,47)+" - Flash Player Installation";
  	this.addVariable("MMdoctitle",document.title);}}
  	if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){
  	var n=(typeof _20=="string")?document.getElementById(_20):_20;
  	n.innerHTML=this.getSWFHTML();
  	return true;
  }
  else{
  if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}
  return false;}};
  deconcept.SWFObjectUtil.getPlayerVersion=function(_23,_24){
  var _25=new deconcept.PlayerVersion([0,0,0]);
  if(navigator.plugins&&navigator.mimeTypes.length){
  var x=navigator.plugins["Shockwave Flash"];
  if(x&&x.description){_25=new deconcept.PlayerVersion(x.description.replace(/([a-z]|[A-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}
  }else{try{
  var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
  for(var i=3;axo!=null;i++){
  axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+i);
  _25=new deconcept.PlayerVersion([i,0,0]);}}
  catch(e){}
  if(_23&&_25.major>_23.major){return _25;}
  if(!_23||((_23.minor!=0||_23.rev!=0)&&_25.major==_23.major)||_25.major!=6||_24){
  try{_25=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}
  catch(e){}}}
  return _25;};
  deconcept.PlayerVersion=function(_29){
  this.major=parseInt(_29[0])!=null?parseInt(_29[0]):0;
  this.minor=parseInt(_29[1])||0;
  this.rev=parseInt(_29[2])||0;};
  deconcept.PlayerVersion.prototype.versionIsValid=function(fv){
  if(this.major<fv.major){return false;}
  if(this.major>fv.major){return true;}
  if(this.minor<fv.minor){return false;}
  if(this.minor>fv.minor){return true;}
  if(this.rev<fv.rev){return false;}return true;};
  deconcept.util={getRequestParameter:function(_2b){
  var q=document.location.search||document.location.hash;
  if(q){
  var _2d=q.indexOf(_2b+"=");
  var _2e=(q.indexOf("&",_2d)>-1)?q.indexOf("&",_2d):q.length;
  if(q.length>1&&_2d>-1){
  return q.substring(q.indexOf("=",_2d)+1,_2e);
  }}return "";}};
  if(Array.prototype.push==null){
  Array.prototype.push=function(_2f){
  this[this.length]=_2f;
  return this.length;};}
  var getQueryParamValue=deconcept.util.getRequestParameter;
  var FlashObject=deconcept.SWFObject; // for backwards compatibility
  var SWFObject=deconcept.SWFObject;
  
  
  
  1.1                  moniwiki/local/SWFUpload/moni.js
  
  Index: moni.js
  ===================================================================
  ﻿Math.roundf = function(val, precision) {
      var p = this.pow(10, precision);
      return this.round(val * p) / p;
  }
  
  function $(id) {
      return document.getElementById(id);
  }
  
  // Default upload start function.
  uploadStart = function(fileObj) {
      $("filesDisplay").style.display = "block";
  
      if (document.getElementById(fileObj.name)) {
          $(fileObj.name).className = "uploading";
          return false;
      }
      var li = document.createElement("li");
      var txt = document.createTextNode(fileObj.name);
  
      li.className = "uploading";
      li.id = fileObj.name;
      
      var prg = document.createElement("span");
      prg.id = fileObj.name + "progress";
      prg.className = "progressBar"
      
      li.appendChild(txt);
      li.appendChild(prg);
  
      $("mmUploadFileListing").appendChild(li);
  
      delFiles();
  }
  
  uploadProgress = function(fileObj, bytesLoaded) {
      var pie = document.getElementById("fileProgressInfo");
      var proc = Math.ceil((bytesLoaded / fileObj.size) * 100);
  
      pie.style.background = "url(" + _url_prefix + "/local/SWFUpload/images/progressbar.png) repeat-y -" + (100 - proc) + "px 0";
      pie.innerHTML = proc + " %";
  }
  
  uploadComplete = function(fileObj) {
      var unt= new Array('Bytes','KB','MB','GB','TB');
      var size=fileObj.size;
      var i;
      for (i=0;i<4;i++) {
          if (size <= 1024) {
              break;
          }
          size=size/1024;
      }
      size= Math.roundf(size,2) + " " + unt[i];
  
      $(fileObj.name).className = "uploadDone";
      $(fileObj.name).innerHTML = "<input type='checkbox' checked='checked' />"
          + "<a href='javascript:showImgPreview(\"" + fileObj.name + "\")'>" + fileObj.name + "</a>" + " (" + size + ")";
  
      var pie = document.getElementById("fileProgressInfo");
      pie.style.background='';
      pie.innerHTML = "";
  }
  
  uploadCancel = function() {
      alert("Cancel!");
  }
  
  function delFiles() {
      var listing = $("mmUploadFileListing");
      var elem = listing.getElementsByTagName("li");
  
      for (var i=0;i<elem.length;i++) {
          var chk= elem[i].getElementsByTagName("input")[0];
          if (chk.type=='checkbox' && chk.checked==0) {
              elem[i].parentNode.removeChild(elem[i]);
          }
      }
  }
  
  function fileSubmit(obj) {
      var listing = $("mmUploadFileListing");
      var elem = listing.getElementsByTagName("li");
      var selected = new Array();
      var form = obj.parentNode;
      var j=0;
  
      for (var i=0;i<elem.length;i++) {
          var chk= elem[i].getElementsByTagName("input")[0];
          if (chk.type=='checkbox' && chk.checked==1) {
              var inp = document.createElement('INPUT');
              inp.setAttribute("name",'MYFILES[]');
              inp.setAttribute("type",'hidden');
              inp.setAttribute("value",elem[i].id);
              form.appendChild(inp);
          }
      }
      //alert(form.innerHTML);
  }
  
  function showImgPreview(filename) {
      var preview = document.getElementById("filePreview");
      if (preview) {
          preview.innerHTML='<img src="' + _url_prefix + '/pds/_swfupload/' + filename + '" width="100px" />';
      }
  }
  
  /*
   * vim:et:sts=4:sw=4
   */
  
  
  
  1.1                  moniwiki/local/SWFUpload/swfupload.css
  
  Index: swfupload.css
  ===================================================================
  /* SWFUpload CSS */
  		
  #filesDisplay {
  	padding-left: 10px;
  	background: #f9f9f9;
  	border: 1px solid #f3f3f3;
  	/* display: none; */
  	min-height:13px;
  	min-width:200px;
  	vertical-align: top;
  }
  
  #filePreview {
  	width:100px;
  	min-height: 13px;
  	border: 1px solid #f3f3f3;
  }
  
  .fileList td {
  	vertical-align: top;
  }
  
  .fileList input {
  	vertical-align: middle;
  }
  		
  #SWFUpload {
  	margin-left: 20px;
  }
  		
  #mmUploadFileListing {
  	margin: 0;
  	padding: 0;
  }
  		
  #mmUploadFileListing li {
  	margin: 0 0 0px 0;
  	/* border-bottom: 1px solid #f3f3f3; /* */
  /*
  	display: block;
  	float: left;
  	width: 150px;
  */
          list-style-image: none;
  	list-style-type: none;
  	font-size: 11px;
  }
  
  .uploading { color: #CCC; }
  .uploadDone { color: #000; }
  .uploading a, .uploading a:hover { color: #CCC; }
  
  span.progressBar {
  	width: 100px;
  	/* display: block; */
  	background-color: red;
  	font-size: 10px;
  	height: 4px;
  	margin-top: 4px;
  }
  #fileProgressInfo {
  	width:100px;
  	min-height: 14px;
  	font-size:8px;
  	font-weight:bold;
  }
  
  a.SWFUploadLink {
  	width: 300px;
        	height: 100px;
        	background: url(images/custom_button.png) no-repeat;
        	display: block;
  	border: 1px solid #f3f3f3;
  }
      
  a.SWFUploadLink:hover {
  	background: url(images/custom_button_over.png) no-repeat;
  }
  
  /*
   * vim:et:sts=2:sw
   */
  
  
  
  1.1                  moniwiki/local/SWFUpload/upload.swf
  
  	<<Binary file>>
  
  


wkpark      2006/12/06 09:09:03

  Added:       local/SWFUpload/images progressbar.png
  Log:
  add the SWFUpload slightly modified to support the MoniWiki
  
  Revision  Changes    Path
  1.1                  moniwiki/local/SWFUpload/images/progressbar.png
  
  	<<Binary file>>
  
  


wkpark      2006/12/06 09:10:15

  Added:       plugin   SWFUpload.php
  Log:
  SWFUpload plugin added
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/SWFUpload.php
  
  Index: SWFUpload.php
  ===================================================================
  <?php
  // Copyright 2006 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // SWFUpload plugin for the MoniWiki
  //
  // Author: Won-Kyu Park <wkpark@kldp.org>
  // Date: 2006-12-06
  // Name: SWF Upload
  // Description: SWF Upload Plugin
  // URL: http://labb.dev.mammon.se/swfupload/ MoniWikiDev:SWFUpload
  // Version: $Revision: 1.1 $
  // License: GPL
  //
  // Usage: [[SWFUpload]]
  //
  // $Id: SWFUpload.php,v 1.1 2006/12/06 00:10:15 wkpark Exp $
  
  function macro_SWFUpload($formatter,$value) {
      global $DBInfo;
  
      $swfupload_scrpit=$GLOBALS['swf_script'] ? 1:0;
  
      if (!$swfupload_script) {
          $swfupload_script=<<<EOS
  	<script type="text/javascript" src="$DBInfo->url_prefix/local/SWFUpload/mmSWFUpload.js"></script>
  	<script type="text/javascript" src="$DBInfo->url_prefix/local/SWFUpload/moni.js"></script>
  EOS;
      }
  
      $swf_css=<<<CSS
  <style type="text/css">
  @import url("$DBInfo->url_prefix/local/SWFUpload/swfupload.css");
  </style>
  CSS;
  
      $btn=_("Files...");
      $btn2=_("Upload");
      $prefix=qualifiedUrl($DBInfo->url_prefix.'/local');
      $action=$formatter->link_url($formatter->page->urlname);
      $action2=$action.'----swfupload';
      $action2=qualifiedUrl($action2);
      $form=<<<EOF
  	<div id="SWFUpload">
  		<form action="" onsubmit="return false;">
  			<input type="file" name="upload" />
  			<input type="submit" value="Upload" onclick="javascript:alert('disabled...'); return false;" />
  		</form>
  	</div>
  			
  	<script type="text/javascript">
  		mmSWFUpload.init({
  			// debug : true,
  			upload_backend : "$action2",
  			target : "SWFUpload",
  			// cssClass : "myCustomClass",
  			_prefix : "$prefix",
  			allowed_filesize : "40000",
  			allowed_filetypes : "*.gif;*.jpg;*.png;*.psd",
  			upload_start_callback : 'uploadStart',
  			upload_progress_callback : 'uploadProgress',
  			upload_complete_callback : 'uploadComplete',
  			// upload_error_callback : 'uploadError',
  			upload_cancel_callback : 'uploadCancel'
  		});
  	</script>
  
  	<div class="fileList">
  	<table border='0' cellpadding='0'><tr>
  	<td colspan='2'>
  		<div id="fileProgressInfo"></div>
  	</td>
  	</tr><tr>
  	<td>
  	<div id="filesDisplay">
                  <form method='POST' action='$action'>
  		<ul id="mmUploadFileListing"></ul>
  		<span id="fileButton">
                  <input type='hidden' name='action' value='swfupload' />
  		<input type='button' value="$btn" onclick='javascript:mmSWFUpload.callSWF();' />
  		<input type='submit' value="$btn2" onclick='javascript:fileSubmit(this);' />
  		</span>
                  </form>
  	</div>
  	</td>
  	<td>
  	<div id="filePreview">
  	</div>
  	</td></tr>
  	</table>
  	</div>
  EOF;
      return $swfupload_script.$swf_css.$form;
  }
  
  // do_UploadFile wrapper
  function do_SWFUpload($formatter,$options=array()) {
      global $DBInfo;
  
      $dir=$DBInfo->upload_dir.'/_swfupload'; // XXX
      if(!is_dir($dir)) mkdir($dir, 0755);
      //move the uploaded file
      if (isset($_FILES['Filedata']['tmp_name'])) {
          move_uploaded_file($_FILES['Filedata']['tmp_name'], $dir.'/'.$_FILES['Filedata']['name']);
          return;
      } else if (is_array($options['MYFILES'])) {
          include_once('plugin/UploadFile.php');
  
          do_UploadFile($formatter,$options);
      } else {
          echo "Error";
      }
  }
  
  /*
   * vim:et:sts=4:sw
   */
  
  
  


wkpark      2006/12/06 09:10:37

  Modified:    plugin   UploadFile.php
  Log:
  support SWFUpload plugin
  
  Revision  Changes    Path
  1.27      +12 -2     moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- UploadFile.php	4 Dec 2006 23:38:42 -0000	1.26
  +++ UploadFile.php	6 Dec 2006 00:10:37 -0000	1.27
  @@ -3,12 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.26 2006/12/04 23:38:42 wkpark Exp $
  +// $Id: UploadFile.php,v 1.27 2006/12/06 00:10:37 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
     $files=array();
  -  if (is_array($_FILES)) {
  +  if (isset($_FILES['upfile']) and is_array($_FILES)) {
       if (($options['multiform'] > 1) or is_array($_FILES['upfile']['name'])) {
         $options['multiform']=$options['multiform'] ?
            $options['multiform']:sizeof($_FILES['upfile']['name']);
  @@ -22,6 +22,16 @@
         $options['rename']=array($options['rename']);
         $options['replace']=array($options['replace']);
       }
  +  } else if (is_array($options['MYFILES'])) { // for SWFUpload action
  +    $count=sizeof($options['MYFILES']);
  +    $MYFILES=&$options['MYFILES'];
  +    for ($i=0;$i<$count;$i++) {
  +      $myname=$MYFILES[$i];
  +      $files['upfile']['name'][]=$myname;
  +      $files['upfile']['tmp_name'][]=$DBInfo->upload_dir.'/_swfupload/'.$myname; // XXX
  +      $files['rename'][]='';
  +      $files['replace'][]='';
  +    }
     }
   
     $ok=0;
  
  
  


wkpark      2006/12/06 09:15:32

  Modified:    .        wiki.php
  Log:
  add _t() to support dynamic MO/PO
  workaround POST action to add some basic form parameters to support SWFUpload plugin
  
  Revision  Changes    Path
  1.335     +17 -6     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.334
  retrieving revision 1.335
  diff -u -r1.334 -r1.335
  --- wiki.php	15 Aug 2006 14:05:33 -0000	1.334
  +++ wiki.php	6 Dec 2006 00:15:32 -0000	1.335
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.334 2006/08/15 14:05:33 wkpark Exp $
  +// $Id: wiki.php,v 1.335 2006/12/06 00:15:32 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.334 $',1,-1);
  +$_revision = substr('$Revision: 1.335 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -158,6 +158,10 @@
     }
   }
   
  +function _t ($text) {
  +  return gettext($text);
  +}
  +
   function goto_form($action,$type="",$form="") {
     if ($type==1) {
       return "
  @@ -401,7 +405,8 @@
     function MetaDB_text($file) {
       $lines=file($file);
       foreach ($lines as $line) {
  -      if ($line[0]=='#' or !trim($line)) continue;
  +      $line=trim($line);
  +      if ($line[0]=='#' or !$line) continue;
         # support three types of aliases
         #
         # dest<alias1,alias2,...
  @@ -409,14 +414,14 @@
         # alias>dest1,dest2,dest3,...
         #
         if (($p=strpos($line,'>')) !== false) {
  -        list($key,$list)=explode('>',trim($line),2);
  +        list($key,$list)=explode('>',$line,2);
           $this->db[$key]=$list;
         } else {
           if (($p=strpos($line,'<')) !== false) {
  -          list($val,$keys)=explode('<',trim($line),2);
  +          list($val,$keys)=explode('<',$line,2);
             $keys=explode(',',$keys);
           } else {
  -          $keys=explode(',',trim($line));
  +          $keys=explode(',',$line);
             $val=array_shift($keys);
           }
   
  @@ -1739,6 +1744,7 @@
   
       #$punct="<\"\'}\]\|;,\.\!";
       $punct="<\'}\]\)\|;\.\!"; # , is omitted for the WikiPedia
  +    #$punct="<\'}\]\|;\.\!"; # , is omitted for the WikiPedia
       $url="wiki|http|https|ftp|nntp|news|irc|telnet|mailto|file|attachment";
       if ($DBInfo->url_schemas) $url.='|'.$DBInfo->url_schemas;
       $this->urls=$url;
  @@ -4278,6 +4284,11 @@
       } else {
         $value=$_POST['value'];
         $action=$_POST['action'] ? $_POST['action']:$action;
  +      if (!$action) $dum=explode('----',$pagename,3);
  +      if ($dum[0] && $dum[1]) {
  +        $pagename=$dum[0];
  +        $action=$dum[1];
  +      }
       }
       $goto=$_POST['goto'];
     } else if ($_SERVER['REQUEST_METHOD']=="GET") {
  
  
  


wkpark      2006/12/08 13:12:06

  Modified:    local/SWFUpload moni.js mmSWFUpload.js
  Log:
  more fixes to integrate with MoniWiki
  
  Revision  Changes    Path
  1.2       +71 -14    moniwiki/local/SWFUpload/moni.js
  
  Index: moni.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/SWFUpload/moni.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- moni.js	6 Dec 2006 00:09:03 -0000	1.1
  +++ moni.js	8 Dec 2006 04:12:06 -0000	1.2
  @@ -3,16 +3,16 @@
       return this.round(val * p) / p;
   }
   
  -function $(id) {
  +function byId(id) {
       return document.getElementById(id);
   }
   
   // Default upload start function.
   uploadStart = function(fileObj) {
  -    $("filesDisplay").style.display = "block";
  +    byId("filesDisplay").style.display = "block";
   
       if (document.getElementById(fileObj.name)) {
  -        $(fileObj.name).className = "uploading";
  +        byId(fileObj.name).className = "uploading";
           return false;
       }
       var li = document.createElement("li");
  @@ -20,15 +20,15 @@
   
       li.className = "uploading";
       li.id = fileObj.name;
  -    
  +
       var prg = document.createElement("span");
       prg.id = fileObj.name + "progress";
  -    prg.className = "progressBar"
  +    prg.className = "progressBar";
       
       li.appendChild(txt);
       li.appendChild(prg);
   
  -    $("mmUploadFileListing").appendChild(li);
  +    byId("mmUploadFileListing").appendChild(li);
   
       delFiles();
   }
  @@ -39,6 +39,9 @@
   
       pie.style.background = "url(" + _url_prefix + "/local/SWFUpload/images/progressbar.png) repeat-y -" + (100 - proc) + "px 0";
       pie.innerHTML = proc + " %";
  +
  +    var progress = byId(fileObj.name + "progress");
  +    progress.style.background = pie.style.background;
   }
   
   uploadComplete = function(fileObj) {
  @@ -53,11 +56,11 @@
       }
       size= Math.roundf(size,2) + " " + unt[i];
   
  -    $(fileObj.name).className = "uploadDone";
  -    $(fileObj.name).innerHTML = "<input type='checkbox' checked='checked' />"
  +    byId(fileObj.name).className = "uploadDone";
  +    byId(fileObj.name).innerHTML = "<input type='checkbox' checked='checked' />"
           + "<a href='javascript:showImgPreview(\"" + fileObj.name + "\")'>" + fileObj.name + "</a>" + " (" + size + ")";
   
  -    var pie = document.getElementById("fileProgressInfo");
  +    var pie = byId("fileProgressInfo");
       pie.style.background='';
       pie.innerHTML = "";
   }
  @@ -67,7 +70,7 @@
   }
   
   function delFiles() {
  -    var listing = $("mmUploadFileListing");
  +    var listing = byId("mmUploadFileListing");
       var elem = listing.getElementsByTagName("li");
   
       for (var i=0;i<elem.length;i++) {
  @@ -79,7 +82,7 @@
   }
   
   function fileSubmit(obj) {
  -    var listing = $("mmUploadFileListing");
  +    var listing = byId("mmUploadFileListing");
       var elem = listing.getElementsByTagName("li");
       var selected = new Array();
       var form = obj.parentNode;
  @@ -95,14 +98,68 @@
               form.appendChild(inp);
           }
       }
  -    //alert(form.innerHTML);
   }
   
   function showImgPreview(filename) {
       var preview = document.getElementById("filePreview");
  -    if (preview) {
  -        preview.innerHTML='<img src="' + _url_prefix + '/pds/_swfupload/' + filename + '" width="100px" />';
  +    if (!preview) return;
  +    var tag_open='attachment:',tag_close='';
  +    var href_open='',href_close='';
  +    var jspreview=0;
  +    var icon_dir = _url_prefix + '/imgs/plugin/UploadedFiles/gnome';
  +    var preview_width='100px';
  +    var alt='';
  +    var fname='';
  +    var path;
  +
  +    var form=document.getElementById("filesDisplay").getElementsByTagName("form")[0];
  +    var mydir= '';
  +    if (form.mysubdir) {
  +        mydir = form.mysubdir.value;
  +    }
  +
  +    mydir = mydir ? mydir:'';
  +
  +    path = _url_prefix + '/pds/_swfupload/' + mydir + filename;
  +
  +    if (preview.className=="previewTag") {
  +        jspreview=1;
       }
  +
  +    if (jspreview) {
  +        tag_open="attachment:"; tag_close="";
  +//      if (opener != value) tag_open+=opener;
  +//      alt="alt='" + tag_open + filename + tag_close +"'";
  +    }
  +
  +    var m=filename.match(/\.(.{1,4})$/);
  +    var ext=m[1].toLowerCase();
  +    var isImg=0;
  +    if (ext && ext.match(/gif|png|jpeg|jpg|bmp/)) {
  +        fname="<img src='" + path + "' width='" + preview_width + ' ' + alt + " />";
  +        isImg=1;
  +    } else {
  +        if (ext.match(/^(wmv|avi|mpeg|mpg|swf|wav|mp3|ogg|midi|mid|mov)$/)) {
  +            tag_open='[[Media('; tag_close=')]]';
  +            alt=tag_open + filename + tag_close;
  +        } else if (!ext.match(/^(bmp|c|h|java|py|bak|diff|doc|css|php|xml|html|mod|rpm|deb|pdf|ppt|xls|tgz|gz|bz2|zip)$/)) {
  +            ext='unknown';
  +        }
  +        fname="<img src='" + icon_dir + "/" + ext + ".png' " +  alt + " />";
  +    }
  +    if (jspreview) {
  +        //if (strpos($file,' '))
  +        link="javascript:insertTags('" + tag_open + "','" +  tag_close + "','" + filename + "',true)";
  +        href_open="<a href=\""+ link + "\">";href_close="</a>";
  +    } else if (isImg && form.use_lightbox.value) {
  +        var myclick='myLightbox.start(this)';
  +        if (form.use_lightbox.value == 2) {
  +            myclick='LightBox._show(1)';
  +        }
  +        href_open="<a href=\""+ path + "\" rel=\"lightbox\" onclick=\"" + myclick + "; return false;\">";href_close="</a>";
  +    }
  +
  +    preview.innerHTML=href_open + fname + href_close;
   }
   
   /*
  
  
  
  1.2       +8 -6      moniwiki/local/SWFUpload/mmSWFUpload.js
  
  Index: mmSWFUpload.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/SWFUpload/mmSWFUpload.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- mmSWFUpload.js	6 Dec 2006 00:09:03 -0000	1.1
  +++ mmSWFUpload.js	8 Dec 2006 04:12:06 -0000	1.2
  @@ -22,16 +22,19 @@
   	init: function(settings) {
   	
   		this.settings = settings;
  -		this._prefix="./jscripts";
  -		
  +		if (this.settings["_prefix"]) {
  +                        this._prefix=this.settings["_prefix"] + "/local";
  +		} else if (_url_prefix) { // for MoniWiki
  +			this._prefix=_url_prefix + "/local";
  +		} else {
  +			this._prefix= "./jscripts";
  +		}
  +
   		// Remove background flicker in IE
   		try {
   		  document.execCommand('BackgroundImageCache', false, true);
   		} catch(e) {}
   
  -		if (this.settings["_prefix"]) {
  -			this._prefix=this.settings["_prefix"];
  -		}
   		// Create SWFObject
   		var so = new SWFObject(this._prefix + "/SWFUpload/upload.swf", "_mmSWFUploadField", "1px", "1px", this.addSetting("flash_version", "8"), "#000000");
   			
  @@ -63,7 +66,6 @@
   			
   			link.style.display = "block";
   			swfc.appendChild(link);
  -	
   		}
   		
   		if(this.settings["debug"] == true) {
  
  
  


wkpark      2006/12/08 13:14:15

  Modified:    local/SWFUpload swfupload.css
  Log:
  fixed indentation
  
  Revision  Changes    Path
  1.2       +47 -43    moniwiki/local/SWFUpload/swfupload.css
  
  Index: swfupload.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/SWFUpload/swfupload.css,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- swfupload.css	6 Dec 2006 00:09:03 -0000	1.1
  +++ swfupload.css	8 Dec 2006 04:14:15 -0000	1.2
  @@ -1,49 +1,49 @@
   /* SWFUpload CSS */
  -		
  +    
   #filesDisplay {
  -	padding-left: 10px;
  -	background: #f9f9f9;
  -	border: 1px solid #f3f3f3;
  -	/* display: none; */
  -	min-height:13px;
  -	min-width:200px;
  -	vertical-align: top;
  +  padding-left: 10px;
  +  background: #f9f9f9;
  +  border: 1px solid #f3f3f3;
  +  /* display: none; */
  +  min-height:13px;
  +  min-width:200px;
  +  vertical-align: top;
   }
   
   #filePreview {
  -	width:100px;
  -	min-height: 13px;
  -	border: 1px solid #f3f3f3;
  +  width:100px;
  +  min-height: 13px;
  +  border: 1px solid #f3f3f3;
   }
   
   .fileList td {
  -	vertical-align: top;
  +  vertical-align: top;
   }
   
   .fileList input {
  -	vertical-align: middle;
  +  vertical-align: middle;
   }
  -		
  +    
   #SWFUpload {
  -	margin-left: 20px;
  +  margin-left: 20px;
   }
  -		
  +    
   #mmUploadFileListing {
  -	margin: 0;
  -	padding: 0;
  +  margin: 0;
  +  padding: 0;
   }
  -		
  +    
   #mmUploadFileListing li {
  -	margin: 0 0 0px 0;
  -	/* border-bottom: 1px solid #f3f3f3; /* */
  +  margin: 0 0 0px 0;
  +  /* border-bottom: 1px solid #f3f3f3; /* */
   /*
  -	display: block;
  -	float: left;
  -	width: 150px;
  +  display: block;
  +  float: left;
  +  width: 150px;
   */
  -        list-style-image: none;
  -	list-style-type: none;
  -	font-size: 11px;
  +  list-style-image: none;
  +  list-style-type: none;
  +  font-size: 11px;
   }
   
   .uploading { color: #CCC; }
  @@ -51,30 +51,34 @@
   .uploading a, .uploading a:hover { color: #CCC; }
   
   span.progressBar {
  -	width: 100px;
  -	/* display: block; */
  -	background-color: red;
  -	font-size: 10px;
  -	height: 4px;
  -	margin-top: 4px;
  +  width: 100px;
  +  display: block;
  +  font-size: 10px;
  +  height: 4px;
  +  margin-top: 4px;
   }
  +
   #fileProgressInfo {
  -	width:100px;
  -	min-height: 14px;
  -	font-size:8px;
  -	font-weight:bold;
  +  width:100px;
  +  min-height: 14px;
  +  font-size:8px;
  +  font-weight:bold;
   }
   
   a.SWFUploadLink {
  -	width: 300px;
  -      	height: 100px;
  -      	background: url(images/custom_button.png) no-repeat;
  -      	display: block;
  -	border: 1px solid #f3f3f3;
  +  /*
  +  width: 300px;
  +  height: 100px;
  +  background: url(images/custom_button.png) no-repeat;
  +  display: block;
  +  */
  +  width:1px;
  +  height:1px;
  +  display: none;
   }
       
   a.SWFUploadLink:hover {
  -	background: url(images/custom_button_over.png) no-repeat;
  +  background: url(images/custom_button_over.png) no-repeat;
   }
   
   /*
  
  
  


wkpark      2006/12/08 13:16:16

  Modified:    plugin   SWFUpload.php
  Log:
  session based temp dir
  
  Revision  Changes    Path
  1.2       +104 -14   moniwiki/plugin/SWFUpload.php
  
  Index: SWFUpload.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SWFUpload.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SWFUpload.php	6 Dec 2006 00:10:15 -0000	1.1
  +++ SWFUpload.php	8 Dec 2006 04:16:16 -0000	1.2
  @@ -8,18 +8,66 @@
   // Name: SWF Upload
   // Description: SWF Upload Plugin
   // URL: http://labb.dev.mammon.se/swfupload/ MoniWikiDev:SWFUpload
  -// Version: $Revision: 1.1 $
  +// Version: $Revision: 1.2 $
   // License: GPL
   //
   // Usage: [[SWFUpload]]
   //
  -// $Id: SWFUpload.php,v 1.1 2006/12/06 00:10:15 wkpark Exp $
  +// $Id: SWFUpload.php,v 1.2 2006/12/08 04:16:16 wkpark Exp $
   
   function macro_SWFUpload($formatter,$value) {
       global $DBInfo;
   
  +    if ($myid=session_id()) {
  +        if ($DBInfo->swfupload_depth > 2) {
  +            $depth=$DBInfo->swfupload_depth;
  +        } else {
  +            $depth=2;
  +        }
  +        $prefix=substr($myid,0,$depth);
  +        $mysubdir=$prefix.'/'.$myid.'/';
  +        $myoptions="<input type='hidden' name='mysubdir' value='$mysubdir' />";
  +    }
  +
  +    if ($DBInfo->use_lightbox) {
  +        $myoptions.="\n<input type='hidden' name='use_lightbox' value='1' />";
  +    }
  +
  +    if ($formatter->preview) {
  +        $js_tag=1;$jsPreview=' class="previewTag"';
  +        $uploader='UploadForm';
  +    } else if ($options['preview']) {
  +        $jsPreview=' class="previewTag"';
  +    }
  +
  +    $default_allowed='*.gif;*.jpg;*.png;*.psd';
  +    $allowed=$default_allowed;
  +    if ($DBInfo->pds_allowed) {
  +        $allowed='*.'.str_replace('|',';*.',$DBInfo->pds_allowed);
  +    }
  +
       $swfupload_scrpit=$GLOBALS['swf_script'] ? 1:0;
   
  +    // get already uploaded files list
  +    $uploaded='';
  +    if (is_dir($DBInfo->upload_dir.'/_swfupload/'.$mysubdir)) {
  +        $mydir=$DBInfo->upload_dir.'/_swfupload/'.$mysubdir;
  +        $handle = opendir($mydir);
  +        if ($handle) {
  +            $files=array();
  +            while ($file = readdir($handle)) {
  +                if (is_dir($mydir.$file) or $file[0]=='.') continue;
  +                $files[] = $file;
  +            }
  +            closedir($handle);
  +
  +            foreach ($files as $f) {
  +                $uploaded.="<li id='$f'><input checked=\"checked\" type=\"checkbox\">".
  +                    "<a href='javascript:showImgPreview(\"$f\")'>$f</a></li>";
  +            }
  +        }
  +    }
  +
       if (!$swfupload_script) {
           $swfupload_script=<<<EOS
   	<script type="text/javascript" src="$DBInfo->url_prefix/local/SWFUpload/mmSWFUpload.js"></script>
  @@ -38,7 +86,9 @@
       $prefix=qualifiedUrl($DBInfo->url_prefix.'/local');
       $action=$formatter->link_url($formatter->page->urlname);
       $action2=$action.'----swfupload';
  +    if ($mysubdir) $action2.='----'.$mysubdir;
       $action2=qualifiedUrl($action2);
  +    $myprefix=qualifiedUrl($DBInfo->url_prefix);
       $form=<<<EOF
   	<div id="SWFUpload">
   		<form action="" onsubmit="return false;">
  @@ -46,22 +96,24 @@
   			<input type="submit" value="Upload" onclick="javascript:alert('disabled...'); return false;" />
   		</form>
   	</div>
  -			
  -	<script type="text/javascript">
  +
  +        <script type="text/javascript">
  +        /*<![CDATA[*/
   		mmSWFUpload.init({
  -			// debug : true,
  +			//debug : true,
   			upload_backend : "$action2",
   			target : "SWFUpload",
   			// cssClass : "myCustomClass",
  -			_prefix : "$prefix",
  +			_prefix : "$myprefix",
   			allowed_filesize : "40000",
  -			allowed_filetypes : "*.gif;*.jpg;*.png;*.psd",
  +			allowed_filetypes : "$allowed",
   			upload_start_callback : 'uploadStart',
   			upload_progress_callback : 'uploadProgress',
   			upload_complete_callback : 'uploadComplete',
   			// upload_error_callback : 'uploadError',
  -			upload_cancel_callback : 'uploadCancel'
  -		});
  +                        upload_cancel_callback : 'uploadCancel'
  +                });
  +        /*]]>*/
   	</script>
   
   	<div class="fileList">
  @@ -73,9 +125,10 @@
   	<td>
   	<div id="filesDisplay">
                   <form method='POST' action='$action'>
  -		<ul id="mmUploadFileListing"></ul>
  +		<ul id="mmUploadFileListing">$uploaded</ul>
   		<span id="fileButton">
                   <input type='hidden' name='action' value='swfupload' />
  +                $myoptions
   		<input type='button' value="$btn" onclick='javascript:mmSWFUpload.callSWF();' />
   		<input type='submit' value="$btn2" onclick='javascript:fileSubmit(this);' />
   		</span>
  @@ -83,7 +136,7 @@
   	</div>
   	</td>
   	<td>
  -	<div id="filePreview">
  +	<div id="filePreview"$jsPreview>
   	</div>
   	</td></tr>
   	</table>
  @@ -96,15 +149,52 @@
   function do_SWFUpload($formatter,$options=array()) {
       global $DBInfo;
   
  -    $dir=$DBInfo->upload_dir.'/_swfupload'; // XXX
  -    if(!is_dir($dir)) mkdir($dir, 0755);
  +    $swfupload_dir=$DBInfo->upload_dir.'/_swfupload';
  +    $mysubdir='';
  +    if(!is_dir($swfupload_dir)) {
  +        $om=umask(000);
  +        mkdir($swfupload_dir, 0777);
  +        umask($om);
  +
  +        $fp=fopen($swfupload_dir.'/.htaccess','w');
  +        if ($fp) {
  +            $htaccess=<<<EOF
  +Options -Indexes
  +Order deny,allow\n
  +EOF;
  +            fwrite($fp,$htaccess);
  +            fclose($fp);
  +        }
  +    }
  +
  +    // set the personal subdir
  +    if ($options['value'] and preg_match('/^[a-f0-9\/]+$/i',$options['value'])) {
  +        $mysubdir=$options['value'];
  +
  +        if(!is_dir($swfupload_dir.'/'.$mysubdir)) {
  +            $om=umask(000);
  +            _mkdir_p($swfupload_dir.'/'.$mysubdir, 0777);
  +            umask($om);
  +        }
  +    }
  +
  +    // debug
  +    //$fp=fopen('/var/tmp/swflog.txt','w+');
  +    //foreach ($options as $k=>$v) {
  +    //    fwrite($fp,sprintf("%s=>%s\n",$k,$v));
  +    //}
  +    //fclose($fp);
  +
       //move the uploaded file
       if (isset($_FILES['Filedata']['tmp_name'])) {
  -        move_uploaded_file($_FILES['Filedata']['tmp_name'], $dir.'/'.$_FILES['Filedata']['name']);
  +        move_uploaded_file($_FILES['Filedata']['tmp_name'],
  +            $swfupload_dir.'/'.$mysubdir.$_FILES['Filedata']['name']);
           return;
       } else if (is_array($options['MYFILES'])) {
           include_once('plugin/UploadFile.php');
   
  +        $options['_pds_subdir']=$mysubdir; // a temporary pds dir
  +        $options['_pds_remove']=1; // remove all files in pds dir
           do_UploadFile($formatter,$options);
       } else {
           echo "Error";
  
  
  


wkpark      2006/12/08 13:17:10

  Modified:    plugin   Gallery.php
  Log:
  fixed Gallery macro to support resizing with the GD
  
  Revision  Changes    Path
  1.32      +22 -8     moniwiki/plugin/Gallery.php
  
  Index: Gallery.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Gallery.php,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- Gallery.php	21 Jul 2006 11:41:38 -0000	1.31
  +++ Gallery.php	8 Dec 2006 04:17:10 -0000	1.32
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Gallery]]
   //
  -// $Id: Gallery.php,v 1.31 2006/07/21 11:41:38 wkpark Exp $
  +// $Id: Gallery.php,v 1.32 2006/12/08 04:17:10 wkpark Exp $
   
   function get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -67,6 +67,11 @@
     $sort=$options['sort'] ? $options['sort']:'';
     $nocomment=$options['nocomment'] ? $options['nocomment']:'';
   
  +  if ($DBInfo->gallery_use_lightbox and $DBInfo->use_lightbox) {
  +    $use_lightbox=1;
  +    $href_attr=' rel="lightbox[gallery]" ';
  +  }
  +
     // parse args
     preg_match("/^(('|\")([^\\2]+)\\2)?,?(\s*,?\s*.*)?$/",
       $value,$match);
  @@ -261,25 +266,34 @@
       $id=rawurlencode($file);
       $linksrc=($key == $value) ? $prefix.$id:
         str_replace('value=','value='.$id,$prefix);
  -    $link=$selected ? $linksrc:$formatter->link_url($formatter->page->urlname,"?action=gallery$extra&amp;value=$id");
  +    $link=($selected or $use_lightbox) ? $linksrc:$formatter->link_url($formatter->page->urlname,"?action=gallery$extra&amp;value=$id");
       $date=date("Y-m-d",$mtime);
       if (preg_match("/\.(jpg|jpeg|gif|png)$/i",$file)) {
         if ($DBInfo->use_convert_thumbs and !file_exists($dir."/thumbnails/".$file)) {
  -        if (function_exists('imagecopyresized')) {
  +        if (function_exists('gd_info')) {
             $fname=$dir.'/'.$file;
             list($w, $h) = getimagesize($fname);
             if ($w > $width) {
               $nh=$width*$h/$w;
               $thumb= imagecreatetruecolor($width,$nh);
               // XXX only jpeg for testing now.
  -            $source= imagecreatefromjpeg($fname);
  +            if (preg_match("/\.(jpg|jpeg)$/i",$file))
  +              $imgtype= 'jpeg';
  +            else if (preg_match("/\.png$/i",$file))
  +              $imgtype= 'png';
  +            else if (preg_match("/\.gif$/i",$file))
  +              $imgtype= 'gif';
  +
  +            $myfunc='imagecreatefrom'.$imgtype;
  +            $source= $myfunc($fname);
               imagecopyresized($thumb, $source, 0,0,0,0, $width, $nh, $w, $h);
  -            imagejpeg ($thumb, $dir.'/thumbnails/'.$file);
  +            $myfunc='image'.$imgtype;
  +            $myfunc($thumb, $dir.'/thumbnails/'.$file);
             }
           } else {
             $fp=popen("convert -scale ".$width." ".$dir."/".$file." ".$dir."/thumbnails/".$file.
  -          $formatter->NULL);
  -          pclose($fp);
  +          $formatter->NULL,'r');
  +          @pclose($fp);
           }
         }
         if (!$selected and file_exists($dir."/thumbnails/".$file)) {
  @@ -329,7 +343,7 @@
         }
         $comment=str_replace("\\n","<br/>\n",$comment);
       }
  -    $out.="<td $col_td_width align='center' valign='top'>$top_link<div class='$img_class' $img_style><a href='$link'>$object</a><br />".$imginfo;
  +    $out.="<td $col_td_width align='center' valign='top'>$top_link<div class='$img_class' $img_style><a href='$link'$href_attr>$object</a><br />".$imginfo;
       if ($comment_btn)
         $out.='['.$formatter->link_tag($formatter->page->urlname,"?action=gallery&amp;value=$id",$comment_btn)."]<br />\n";
       $out.='</div>'.$bot_link;
  
  
  


wkpark      2006/12/08 13:18:11

  Modified:    plugin   UploadedFiles.php UploadFile.php
  Log:
  support lightbox v2
  
  Revision  Changes    Path
  1.15      +5 -2      moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- UploadedFiles.php	14 Jul 2006 13:54:34 -0000	1.14
  +++ UploadedFiles.php	8 Dec 2006 04:18:11 -0000	1.15
  @@ -4,7 +4,7 @@
   // a UploadedFiles plugin for the MoniWiki
   // vim:et:sts=4:
   //
  -// $Id: UploadedFiles.php,v 1.14 2006/07/14 13:54:34 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.15 2006/12/08 04:18:11 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     $list=macro_UploadedFiles($formatter,$options['page'],$options);
  @@ -42,6 +42,9 @@
        $use_preview=1;
      }
   
  +   if ($DBInfo->use_lightbox and !$js_tag)
  +     $href_attr=' rel="lightbox[upload]" ';
  +
      if ($options['tag']) { # javascript tag mode
        $js_tag=1;$use_preview=1;
      }
  @@ -287,7 +290,7 @@
             $link="javascript:$tag";
           }
         }
  -      $out.="<tr><td class='wiki'><input type='$checkbox' name='files[$idx]' value='$file' /></td><td class='wiki'><a href=\"$link\"$attr>$fname</a></td><td align='right' class='wiki'>$size</td><td class='wiki'>$date</td></tr>\n";
  +      $out.="<tr><td class='wiki'><input type='$checkbox' name='files[$idx]' value='$file' /></td><td class='wiki'><a href=\"$link\"$attr$href_attr>$fname</a></td><td align='right' class='wiki'>$size</td><td class='wiki'>$date</td></tr>\n";
         $idx++;
      }
      $idx--;
  
  
  
  1.28      +7 -2      moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- UploadFile.php	6 Dec 2006 00:10:37 -0000	1.27
  +++ UploadFile.php	8 Dec 2006 04:18:11 -0000	1.28
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.27 2006/12/06 00:10:37 wkpark Exp $
  +// $Id: UploadFile.php,v 1.28 2006/12/08 04:18:11 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -25,10 +25,11 @@
     } else if (is_array($options['MYFILES'])) { // for SWFUpload action
       $count=sizeof($options['MYFILES']);
       $MYFILES=&$options['MYFILES'];
  +    $mysubdir=$options['mysubdir'];
       for ($i=0;$i<$count;$i++) {
         $myname=$MYFILES[$i];
         $files['upfile']['name'][]=$myname;
  -      $files['upfile']['tmp_name'][]=$DBInfo->upload_dir.'/_swfupload/'.$myname; // XXX
  +      $files['upfile']['tmp_name'][]=$DBInfo->upload_dir.'/_swfupload/'.$mysubdir.$myname; // XXX
         $files['rename'][]='';
         $files['replace'][]='';
       }
  @@ -160,6 +161,7 @@
     } else {
       $test=@copy($upfile, $newfile_path);
     }
  +  @unlink($upfile);
     if (!$test) {
       $msg.=sprintf(_("Fail to copy \"%s\" to \"%s\""),$upfilename,$file_path);
       $msg.='<br />'._("Please check your php.ini setting");
  @@ -216,6 +218,9 @@
       print $msg;
     }
     $formatter->send_footer();
  +
  +  if (is_array($options['MYFILES']))
  +    session_destroy();
   }
   
   function macro_UploadFile($formatter,$value='',$options='') {
  
  
  


wkpark      2006/12/08 13:18:48

  Modified:    .        wiki.php
  Log:
  use session
  
  Revision  Changes    Path
  1.336     +9 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.335
  retrieving revision 1.336
  diff -u -r1.335 -r1.336
  --- wiki.php	6 Dec 2006 00:15:32 -0000	1.335
  +++ wiki.php	8 Dec 2006 04:18:48 -0000	1.336
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.335 2006/12/06 00:15:32 wkpark Exp $
  +// $Id: wiki.php,v 1.336 2006/12/08 04:18:48 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.335 $',1,-1);
  +$_revision = substr('$Revision: 1.336 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -4288,6 +4288,7 @@
         if ($dum[0] && $dum[1]) {
           $pagename=$dum[0];
           $action=$dum[1];
  +        $value=$dum[2] ? $dum[2]:'';
         }
       }
       $goto=$_POST['goto'];
  @@ -4592,6 +4593,12 @@
   init_locale($lang);
   init_requests($options);
   $DBInfo->lang=$lang;
  +
  +if (session_id()== '' && !$DBInfo->nosession){
  +  session_name("MONIWIKI");
  +  session_start();
  +}
  +
   wiki_main($options);
   endif;
   // vim:et:sts=2:
  
  
  


wkpark      2006/12/10 16:14:30

  Modified:    local    chat.js
  Log:
  fix to play sound properly
  
  Revision  Changes    Path
  1.4       +3 -3      moniwiki/local/chat.js
  
  Index: chat.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/chat.js,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- chat.js	20 Sep 2005 10:11:23 -0000	1.3
  +++ chat.js	10 Dec 2006 07:14:30 -0000	1.4
  @@ -63,10 +63,10 @@
       node.setAttribute('src',surl);
       node.setAttribute('id',id);
       node.setAttribute('autostart','false');
  -    node.setAttribute('style','visibility:hidden');
  +    //node.setAttribute('style','visibility:hidden');
       node.setAttribute('loop','false');
  -    node.setAttribute('height','1px');
  -    node.setAttribute('width','1px');
  +    node.setAttribute('height','0px');
  +    node.setAttribute('width','0px');
       sound.insertBefore(node,sound.firstChild);
   }
   
  
  
  


wkpark      2006/12/13 10:42:27

  Modified:    local    moniwyg.js
  Log:
  fixed confilct with the prototype.js
  
  Revision  Changes    Path
  1.9       +29 -5     moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- moniwyg.js	3 Aug 2006 03:54:26 -0000	1.8
  +++ moniwyg.js	13 Dec 2006 01:42:27 -0000	1.9
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.8 2006/08/03 03:54:26 wkpark Exp $
  +// $Id: moniwyg.js,v 1.9 2006/12/13 01:42:27 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -115,6 +115,32 @@
       return iframe;
   }
   
  +proto.apply_inline_stylesheet = function(style, head) {
  +    var style_string = "";
  +    for ( var i = 0 ; i < style.cssRules.length ; i++ ) {
  +        if ( style.cssRules[i].type == 3 ) {
  +            // IMPORT_RULE
  +
  +            /* It's pretty strange that this doesnt work.
  +               That's why Ajax.get() is used to retrive the css text.
  +
  +            this.apply_linked_stylesheet({
  +                href: style.cssRules[i].href,
  +                type: 'text/css'
  +            }, head);
  +            */
  +
  +            style_string += HTTPGet(style.cssRules[i].href);
  +        } else {
  +            style_string += style.cssRules[i].cssText + "\n";
  +        }
  +    }
  +    if (style_string.length > 0) {
  +        style_string += "\nbody { padding: 5px; }\n";
  +        this.append_inline_style_element(style_string, head);
  +    }
  +}
  +
   proto.enableThis = function() {
       Wikiwyg.Mode.prototype.enableThis.call(this);
       this.edit_iframe.style.border = '1px black solid';
  @@ -667,8 +693,7 @@
   
   proto.convertWikitextToHtml = function(wikitext, func) {
       var postdata = 'action=markup&value=' + encodeURIComponent(wikitext);
  -    Wikiwyg.liveUpdate(
  -        'POST',
  +    HTTPPost(
           self.location,
           postdata,
           func);
  @@ -676,8 +701,7 @@
   
   proto.convertWikitextToHtmlAll = function(wikitext, func) {
       var postdata = 'action=markup&all=1&value=' + encodeURIComponent(wikitext);
  -    Wikiwyg.liveUpdate(
  -        'POST',
  +    HTTPPost(
           self.location,
           postdata,
           func);
  
  
  


wkpark      2006/12/13 10:43:09

  Modified:    local    chat.js
  Log:
  fixed last changes for MS IE
  
  Revision  Changes    Path
  1.5       +3 -2      moniwiki/local/chat.js
  
  Index: chat.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/chat.js,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- chat.js	10 Dec 2006 07:14:30 -0000	1.4
  +++ chat.js	13 Dec 2006 01:43:09 -0000	1.5
  @@ -63,11 +63,12 @@
       node.setAttribute('src',surl);
       node.setAttribute('id',id);
       node.setAttribute('autostart','false');
  -    //node.setAttribute('style','visibility:hidden');
  +    if (navigator.appVersion.indexOf("MSIE")!=-1)
  +    	node.setAttribute('style','visibility:hidden');
       node.setAttribute('loop','false');
       node.setAttribute('height','0px');
       node.setAttribute('width','0px');
  -    sound.insertBefore(node,sound.firstChild);
  +    sound.appendChild(node);
   }
   
   function OnOff(obj) {
  
  
  


wkpark      2006/12/13 10:44:38

  Modified:    plugin   Attachment.php
  Log:
  support lightbox
  
  Revision  Changes    Path
  1.22      +9 -2      moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- Attachment.php	15 Jul 2006 19:07:35 -0000	1.21
  +++ Attachment.php	13 Dec 2006 01:44:38 -0000	1.22
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.21 2006/07/15 19:07:35 wkpark Exp $
  +// $Id: Attachment.php,v 1.22 2006/12/13 01:44:38 wkpark Exp $
   
   function macro_Attachment($formatter,$value,$option='') {
     global $DBInfo;
  @@ -49,6 +49,7 @@
       $value=str_replace('%20',' ',$value);
     }
   
  +  $lightbox_attr='';
     if (($dummy=strpos($value,'?'))) {
       # for attachment: syntax
       parse_str(substr($value,$dummy+1),$attrs);
  @@ -57,8 +58,12 @@
         if ($name=='action') {
           if ($val == 'deletefile') $extra_action=$val;
           else $mydownload=$val;
  -      } else
  +      } else {
           $attr.="$name=\"$val\" ";
  +        if (in_array($name,array('width','height')) and $DBInfo->use_lightbox) {
  +          $lightbox_attr=' rel="lightbox" ';
  +        }
  +      }
       }
   
       if ($attrs['align']) $attr.='class="img'.ucfirst($attrs['align']).'" ';
  @@ -70,6 +75,8 @@
         $attr.="$arg ";
     }
   
  +  $attr.=$lightbox_attr;
  +
     if (($p=strpos($value,':')) !== false or ($p=strpos($value,'/')) !== false) {
       $subpage=substr($value,0,$p);
       $file=substr($value,$p+1);
  
  
  


wkpark      2006/12/15 23:05:09

  moniwiki/imgs/plugin/UploadedFiles/gnome/32 - New directory

wkpark      2006/12/15 23:41:36

  Modified:    plugin   UploadedFiles.php
  Log:
  support WikiWyg
  xhtml 1.0 strict fix
  
  Revision  Changes    Path
  1.16      +43 -10    moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- UploadedFiles.php	8 Dec 2006 04:18:11 -0000	1.15
  +++ UploadedFiles.php	15 Dec 2006 14:41:36 -0000	1.16
  @@ -1,10 +1,9 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2006 by Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadedFiles plugin for the MoniWiki
  -// vim:et:sts=4:
   //
  -// $Id: UploadedFiles.php,v 1.15 2006/12/08 04:18:11 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.16 2006/12/15 14:41:36 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     $list=macro_UploadedFiles($formatter,$options['page'],$options);
  @@ -78,8 +77,40 @@
       var areas = document.getElementsByTagName('textarea');
       if (areas.length > 0) {
           var txtarea = areas[0];
  -    } else if (opener.document.$form.savetext) {
  -        var txtarea = opener.document.$form.savetext;
  +    } else {
  +        // WikiWyg support
  +        var wikiwyg_area=opener.document.getElementById('wikiwyg_wikitext_textarea');
  +        if (opener.document.$form && opener.document.$form.savetext) {
  +            var txtarea = opener.document.$form.savetext;
  +        } else if (wikiwyg_area) {
  +            //
  +            var myWikiwyg = new opener.Wikiwyg.Wikitext();
  +            var wikitext;
  +            var i=0;
  +
  +            //for (i=0;i<opener.wikiwygs.length;i++) {
  +                var my = opener.wikiwygs[i];
  +
  +                my.current_mode.toHtml( function(html) { my.fromHtml(html) });
  +
  +                if (my.current_mode.classname.match(/(Wysiwyg|HTML|Preview)/)) {
  +                    my.current_mode.fromHtml(my.div.innerHTML);
  +
  +                    wikitext = myWikiwyg.convert_html_to_wikitext(my.div.innerHTML);
  +
  +                    var tmp= tagOpen + myText + tagClose;
  +                    var html= myWikiwyg.convertWikitextToHtml(tmp,
  +                        function(nhtml) { my.current_mode.insert_table(nhtml); });
  +                    opener.focus(); // XXX
  +                    return;
  +                } else {
  +                    wikitext = my.current_mode.textarea.value;
  +                }
  +            //}
  +            // XXX
  +            wikiwyg_area.value = wikitext;
  +            txtarea=wikiwyg_area;
  +        }
       }
     }
   
  @@ -208,7 +239,7 @@
      $out.="<input type='hidden' name='action' value='DeleteFile' />\n";
      if ($key)
        $out.="<input type='hidden' name='value' value='$value' />\n";
  -   $out.="<table border='0' cellpadding='2'>\n";
  +   $out.="<table style='border:0' cellpadding='2'>\n";
      $out.="<tr><th colspan='2'>File name</th><th>Size</th><th>Date</th></tr>\n";
      $idx=1;
   
  @@ -231,7 +262,8 @@
           $attr=' target="_blank"';
           $extra='&amp;tag=1';
         }
  -      $link=$formatter->link_tag('UploadFile',"?action=uploadedfiles&amp;value=top$extra","..",$attr);
  +      $link=$formatter->link_tag('UploadFile',"?action=uploadedfiles&amp;value=top$extra",
  +        "<img src='".$icon_dir."/32/up.png' style='border:0' class='upper' alt='..' />",$attr);
         $date=date("Y-m-d",filemtime($dir."/.."));
         $out.="<tr><td class='wiki'>&nbsp;</td><td class='wiki'>$link</td><td align='right' class='wiki'>&nbsp;</td><td class='wiki'>$date</td></tr>\n";
      }
  @@ -269,11 +301,11 @@
           $tag_open='attachment:'; $tag_close='';
           if ($opener != $value)
               $tag_open.=$opener;
  -        $alt="alt='$tag_open$file$tag_close'";
  +        $alt="alt='$tag_open$file$tag_close' title='$file'";
           preg_match("/\.(.{1,4})$/",$fname,$m);
           $ext=strtolower($m[1]);
           if ($ext and stristr('gif,png,jpeg,jpg',$ext)) {
  -          $fname="<img src='$link' width='$preview_width' $alt />";
  +          $fname="<img src='$link' class='icon' width='$preview_width' $alt />";
           } else {
             if (preg_match('/^(wmv|avi|mpeg|mpg|swf|wav|mp3|ogg|midi|mid|mov)$/',$ext)) {
               $tag_open='[[Media('; $tag_close=')]]';
  @@ -282,7 +314,7 @@
                 'rpm|deb|pdf|ppt|xls|tgz|gz|bz2|zip)$/',$ext)) {
               $ext='unknown';
             }
  -          $fname="<img src='$icon_dir/$ext.png' $alt />";
  +          $fname="<img src='$icon_dir/$ext.png' class='icon' $alt />";
           }
           if ($js_tag) {
             //if (strpos($file,' '))
  @@ -310,4 +342,5 @@
      return $js_script.$out;
   }
   
  +// vim:et:sw:sts=4:
   ?>
  
  
  


wkpark      2006/12/15 23:42:58

  Added:       plugin/filter fiximgpath.php
  Log:
  added fiximgpath() postfilter
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/filter/fiximgpath.php
  
  Index: fiximgpath.php
  ===================================================================
  <?php
  // Copyright 2006 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a fiximgpath postfilter plugin for the MoniWiki
  //
  // $Id: fiximgpath.php,v 1.1 2006/12/15 14:42:58 wkpark Exp $
  
  function postfilter_fiximgpath($formatter,$value,$options=array()) {
      global $DBInfo;
  
      $prefix=qualifiedUrl('');
      $chunks=preg_split('/(<[^>]+>)/',$value,-1, PREG_SPLIT_DELIM_CAPTURE);
      for ($i=0,$sz=count($chunks); $i<$sz; $i++) {
          if (preg_match('/^<img /',$chunks[$i])) {
              $dumm=preg_replace('/<(img .*)src=(\'|\")\/([^\\2]+)\\2/i',"<$1"."src=$2".$prefix."$3$2",$chunks[$i]);
              $chunks[$i]=$dumm;
          }
      }
  
      return implode('',$chunks);
  }
  
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2006/12/15 23:43:49

  Modified:    plugin   SWFUpload.php
  Log:
  rename temporary _swfupload/ dir to .swfupload/
  
  Revision  Changes    Path
  1.3       +5 -5      moniwiki/plugin/SWFUpload.php
  
  Index: SWFUpload.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SWFUpload.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SWFUpload.php	8 Dec 2006 04:16:16 -0000	1.2
  +++ SWFUpload.php	15 Dec 2006 14:43:49 -0000	1.3
  @@ -8,12 +8,12 @@
   // Name: SWF Upload
   // Description: SWF Upload Plugin
   // URL: http://labb.dev.mammon.se/swfupload/ MoniWikiDev:SWFUpload
  -// Version: $Revision: 1.2 $
  +// Version: $Revision: 1.3 $
   // License: GPL
   //
   // Usage: [[SWFUpload]]
   //
  -// $Id: SWFUpload.php,v 1.2 2006/12/08 04:16:16 wkpark Exp $
  +// $Id: SWFUpload.php,v 1.3 2006/12/15 14:43:49 wkpark Exp $
   
   function macro_SWFUpload($formatter,$value) {
       global $DBInfo;
  @@ -50,8 +50,8 @@
   
       // get already uploaded files list
       $uploaded='';
  -    if (is_dir($DBInfo->upload_dir.'/_swfupload/'.$mysubdir)) {
  -        $mydir=$DBInfo->upload_dir.'/_swfupload/'.$mysubdir;
  +    if (is_dir($DBInfo->upload_dir.'/.swfupload/'.$mysubdir)) {
  +        $mydir=$DBInfo->upload_dir.'/.swfupload/'.$mysubdir;
           $handle = opendir($mydir);
           if ($handle) {
               $files=array();
  @@ -149,7 +149,7 @@
   function do_SWFUpload($formatter,$options=array()) {
       global $DBInfo;
   
  -    $swfupload_dir=$DBInfo->upload_dir.'/_swfupload';
  +    $swfupload_dir=$DBInfo->upload_dir.'/.swfupload';
       $mysubdir='';
       if(!is_dir($swfupload_dir)) {
           $om=umask(000);
  
  
  


wkpark      2006/12/15 23:52:02

  Modified:    plugin   Attachment.php
  Log:
  fix for WikiWyg
  
  Revision  Changes    Path
  1.23      +20 -7     moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- Attachment.php	13 Dec 2006 01:44:38 -0000	1.22
  +++ Attachment.php	15 Dec 2006 14:52:02 -0000	1.23
  @@ -3,9 +3,17 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Attachment macro plugin for the MoniWiki
   //
  +// Date: 2006-12-15
  +// Name: Attachment
  +// Description: Attachment Plugin
  +// URL: MoniWiki:AttachmentPlugin
  +// Version: $Revision: 1.23 $
  +// Depend: 1.1.3
  +// License: GPL
  +//
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.22 2006/12/13 01:44:38 wkpark Exp $
  +// $Id: Attachment.php,v 1.23 2006/12/15 14:52:02 wkpark Exp $
   
   function macro_Attachment($formatter,$value,$option='') {
     global $DBInfo;
  @@ -18,6 +26,11 @@
   
     $text='';
   
  +  if ($formatter->wikimarkup and !$options['nomarkup']) {
  +    $bra= "<span class='wikiMarkup'><!-- wiki:\nattachment:$value\n-->";
  +    $ket= '</span>';
  +  }
  +
     if (($p=strpos($value,' ')) !== false) {
       // [attachment:my.ext hello]
       // [attachment:my.ext attachment:my.png]
  @@ -96,7 +109,7 @@
       $file=$value;
     }
     // check file name XXX
  -  if (!$file) return 'attachment:/';
  +  if (!$file) return $bra.'attachment:/'.$ket;
   
     $upload_file=$dir.'/'.$file;
     if ($option == 1) return $upload_file;
  @@ -115,14 +128,14 @@
           $img="<a href='$url'>$img</a>";
         }
         
  -      return "<span class=\"imgAttach\">$img</span>";
  +      return $bra."<span class=\"imgAttach\">$img</span>".$ket;
       } else {
         $mydownload= $extra_action ? $extra_action:$mydownload;
         $link=$formatter->link_url(_urlencode($pagename),"?action=$mydownload&amp;value=".urlencode($value),$text);
         if ($img_link)
  -        return "<span class=\"attach\"><a href='$link'>$img_link</a></span>";
  +        return $bra."<span class=\"attach\"><a href='$link'>$img_link</a></span>".$ket;
   
  -      return "<span class=\"attach\"><img align='middle' src='$DBInfo->imgs_dir_interwiki".'uploads-16.png\' /><a href="'.$link.'">'.$text.'</a></span>';
  +      return $bra."<span class=\"attach\"><img align='middle' src='$DBInfo->imgs_dir_interwiki".'uploads-16.png\' /><a href="'.$link.'">'.$text.'</a></span>'.$ket;
       }
     }
   
  @@ -133,10 +146,10 @@
       $paste=" <a href='$url'>"._("or paste a new picture")."</a>";
     }
     if ($pagename == $formatter->page->name)
  -    return '<span class="attach">'.$formatter->link_to("?action=UploadFile&amp;rename=".urlencode($file),sprintf(_("Upload new Attachment \"%s\""),$file)).$paste.'</span>';
  +    return $bra.'<span class="attach">'.$formatter->link_to("?action=UploadFile&amp;rename=".urlencode($file),sprintf(_("Upload new Attachment \"%s\""),$file)).$paste.'</span>'.$ket;
   
     if (!$pagename) $pagename='UploadFile';
  -  return '<span class="attach">'.$formatter->link_tag($pagename,"?action=UploadFile&amp;rename=".urlencode($file),sprintf(_("Upload new Attachment \"%s\" on the \"%s\""),$file, $pagename)).$paste.'</span>';
  +  return $bra.'<span class="attach">'.$formatter->link_tag($pagename,"?action=UploadFile&amp;rename=".urlencode($file),sprintf(_("Upload new Attachment \"%s\" on the \"%s\""),$file, $pagename)).$paste.'</span>'.$ket;
   }
   
   // vim:et:sts=2:
  
  
  


wkpark      2006/12/15 23:53:56

  Modified:    .        wiki.php
  Log:
  fix to support WikiWyg with attachments
  
  Revision  Changes    Path
  1.337     +7 -5      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.336
  retrieving revision 1.337
  diff -u -r1.336 -r1.337
  --- wiki.php	8 Dec 2006 04:18:48 -0000	1.336
  +++ wiki.php	15 Dec 2006 14:53:56 -0000	1.337
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.336 2006/12/08 04:18:48 wkpark Exp $
  +// $Id: wiki.php,v 1.337 2006/12/15 14:53:56 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.336 $',1,-1);
  +$_revision = substr('$Revision: 1.337 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -1662,6 +1662,8 @@
       $this->email_guard=$DBInfo->email_guard;
       $this->interwiki_target=$DBInfo->interwiki_target ?
         ' target="'.$DBInfo->interwiki_target.'"':'';
  +    $this->filters=$DBInfo->filters;
  +    $this->postfilters=$DBInfo->postfilters;
   
       if (($p=strpos($page->name,"~")))
         $this->group=substr($page->name,0,$p+1);
  @@ -2458,7 +2460,7 @@
       preg_match("/^([A-Za-z]+)(\((.*)\))?$/",$macro,$match);
       if (!$match) return $this->word_repl($macro);
       $bra='';$ket='';
  -    if ($this->wikimarkup and !$options['nomarkup']) {
  +    if ($this->wikimarkup and $macro != 'Attachment' and !$options['nomarkup']) {
         $bra= "<span class='wikiMarkup'><!-- wiki:\n[[$macro]]\n-->";
         $ket= '</span>';
       }
  @@ -2856,7 +2858,7 @@
   
         $fts=array();
         if ($pi['#filter']) $fts=preg_split('/(\||,)/',$pi['#filter']);
  -      if ($DBInfo->filters) $fts=array_merge($fts,$DBInfo->filters);
  +      if ($this->filters) $fts=array_merge($fts,$this->filters);
         if ($fts) {  
           foreach ($fts as $ft) {
             $body=$this->filter_repl($ft,$body,$options);
  @@ -3341,7 +3343,7 @@
       }
       $fts=array();
       if ($pi['#postfilter']) $fts=preg_split('/(\||,)/',$pi['#postfilter']);
  -    if ($DBInfo->postfilters) $fts=array_merge($fts,$DBInfo->postfilters);
  +    if ($this->postfilters) $fts=array_merge($fts,$this->postfilters);
       if ($fts) {
         foreach ($fts as $ft)
           $text=$this->postfilter_repl($ft,$text,$options);
  
  
  


wkpark      2006/12/16 09:01:30

  Modified:    plugin   UploadForm.php UploadFile.php
  Log:
  more js friendly
  
  Revision  Changes    Path
  1.7       +2 -1      moniwiki/plugin/UploadForm.php
  
  Index: UploadForm.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadForm.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- UploadForm.php	14 Jan 2006 14:28:37 -0000	1.6
  +++ UploadForm.php	16 Dec 2006 00:01:30 -0000	1.7
  @@ -5,7 +5,7 @@
   //
   // Usage: [[UploadForm]]
   //
  -// $Id: UploadForm.php,v 1.6 2006/01/14 14:28:37 wkpark Exp $
  +// $Id: UploadForm.php,v 1.7 2006/12/16 00:01:30 wkpark Exp $
   
   function macro_UploadForm($formatter,$value) {
       global $DBInfo;
  @@ -70,6 +70,7 @@
       <tr>
         <td>
     <input type='button' onclick="addRow('upload$id')" value="add a file" />
  +  <input type="hidden" name="uploadid" value="upload$id" />
     <input type="submit" name="upload" value="Upload files" />
     <input type="reset" name="reset" value="Reset" />
         </td>
  
  
  
  1.29      +25 -2     moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- UploadFile.php	8 Dec 2006 04:18:11 -0000	1.28
  +++ UploadFile.php	16 Dec 2006 00:01:30 -0000	1.29
  @@ -3,11 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.28 2006/12/08 04:18:11 wkpark Exp $
  +// $Id: UploadFile.php,v 1.29 2006/12/16 00:01:30 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
     $files=array();
  +
     if (isset($_FILES['upfile']) and is_array($_FILES)) {
       if (($options['multiform'] > 1) or is_array($_FILES['upfile']['name'])) {
         $options['multiform']=$options['multiform'] ?
  @@ -29,12 +30,33 @@
       for ($i=0;$i<$count;$i++) {
         $myname=$MYFILES[$i];
         $files['upfile']['name'][]=$myname;
  -      $files['upfile']['tmp_name'][]=$DBInfo->upload_dir.'/_swfupload/'.$mysubdir.$myname; // XXX
  +      $files['upfile']['tmp_name'][]=$DBInfo->upload_dir.'/.swfupload/'.$mysubdir.$myname; // XXX
         $files['rename'][]='';
         $files['replace'][]='';
       }
     }
   
  +  $js='';
  +  if ($options['uploadid']) {
  +    $js=<<<EOF
  +<script type="text/javascript">
  +/*<![CDATA[*/
  +function delAllForm(id) {
  +  var fform = opener.document.getElementById(id);
  +
  +  if (fform && fform.rows.length) {
  +    for (var i=fform.rows.length;i>0;i--) {
  +      fform.deleteRow(i-1);
  +    }
  +  }
  +}
  +
  +delAllForm('$options[uploadid]');
  +/*]]>*/
  +</script>\n
  +EOF;
  +  }
  +
     $ok=0;
     if ($files) {
       foreach ($files['upfile']['name'] as $f) {
  @@ -218,6 +240,7 @@
       print $msg;
     }
     $formatter->send_footer();
  +  print $js;
   
     if (is_array($options['MYFILES']))
       session_destroy();
  
  
  


wkpark      2006/12/16 09:02:03

  Modified:    plugin   markup.php
  Log:
  use the fiximgpath filter
  
  Revision  Changes    Path
  1.4       +4 -1      moniwiki/plugin/markup.php
  
  Index: markup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/markup.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- markup.php	31 Jan 2006 10:31:31 -0000	1.3
  +++ markup.php	16 Dec 2006 00:02:03 -0000	1.4
  @@ -3,12 +3,15 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a markup plugin for the MoniWiki
   //
  -// $Id: markup.php,v 1.3 2006/01/31 10:31:31 wkpark Exp $
  +// $Id: markup.php,v 1.4 2006/12/16 00:02:03 wkpark Exp $
   
   function do_markup($formatter,$options) {
       $formatter->section_edit=0;
       $formatter->sister_on=0;
       $formatter->perma_icon='';
  +
  +    //$options['fixpath']=1;
  +    $formatter->postfilters=array('fiximgpath');
       if (!$options['all']) $formatter->wikimarkup=1;
       if ($options['value']) {
           $formatter->send_page(_stripslashes($options['value']),$options);
  
  
  


wkpark      2006/12/16 09:02:33

  Modified:    plugin   download.php
  Log:
  use thumbnails properly
  
  Revision  Changes    Path
  1.15      +20 -8     moniwiki/plugin/download.php
  
  Index: download.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/download.php,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- download.php	11 Aug 2006 13:16:35 -0000	1.14
  +++ download.php	16 Dec 2006 00:02:33 -0000	1.15
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // download action plugin for the MoniWiki
   //
  -// $Id: download.php,v 1.14 2006/08/11 13:16:35 wkpark Exp $
  +// $Id: download.php,v 1.15 2006/12/16 00:02:33 wkpark Exp $
   //
   function do_download($formatter,$options) {
     global $DBInfo;
  @@ -18,6 +18,23 @@
     $down_mode=$options['mode']{0}=='a' ? 'attachment':
       ($DBInfo->download_mode ? $DBInfo->download_mode:'inline');
   
  +
  +  // check acceptable subdirs
  +  $acceptable_dirs=array('thumbnails');
  +
  +  $ifile=explode('/',$options['value']);
  +
  +  $subdir='';
  +  if (count($ifile) > 1) {
  +    $subdir=in_array($ifile[count($ifile)-2],$acceptable_dirs) ?
  +      $ifile[count($ifile)-2].'/':'';
  +
  +    if ($subdir) {
  +      unset($ifile[count($ifile)-2]);
  +      $value=implode('/',$ifile);
  +    }
  +  }
  +
     if (($p=strpos($value,':')) !== false or ($p=strpos($value,'/')) !== false) {
       $subpage=substr($value,0,$p);
       $file=substr($value,$p+1);
  @@ -38,7 +55,7 @@
     #  // FIXME
     #  return;
     #}
  -  $dir=$DBInfo->upload_dir."/$key";
  +  $dir=$DBInfo->upload_dir.($key ? "/$key":"");
   
     if (file_exists($dir))
       $handle= opendir($dir);
  @@ -46,13 +63,8 @@
       $dir=$DBInfo->upload_dir;
       $handle= opendir($dir);
     }
  -  $acceptable_dirs=array('thumbnails');
  -  $file=explode('/',$options['value']);
  -  $subdir='';
  -  if (count($file) > 1)
  -    $subdir=in_array($file[count($file)-2],$acceptable_dirs) ?
  -      $file[count($file)-2].'/':'';
   
  +  $file=explode('/',$value);
     $file=$subdir.$file[count($file)-1];
   
     if (!file_exists("$dir/$file")) {
  
  
  


wkpark      2006/12/16 09:05:40

  Modified:    plugin   UploadedFiles.php
  Log:
  use thumbnails if possible
  
  Revision  Changes    Path
  1.17      +18 -2     moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- UploadedFiles.php	15 Dec 2006 14:41:36 -0000	1.16
  +++ UploadedFiles.php	16 Dec 2006 00:05:40 -0000	1.17
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadedFiles plugin for the MoniWiki
   //
  -// $Id: UploadedFiles.php,v 1.16 2006/12/15 14:41:36 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.17 2006/12/16 00:05:40 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     $list=macro_UploadedFiles($formatter,$options['page'],$options);
  @@ -277,13 +277,29 @@
      $unit=array('Bytes','KB','MB','GB','TB');
   
      $down_mode=(strpos($prefix,';value=') !== false);
  +   $mywidth=$preview_width;
      foreach ($upfiles as $file) {
         if ($down_mode)
           $link=str_replace("value=","value=".rawurlencode($file),$prefix);
         else
           $link=$prefix.rawurlencode($file);
  +
  +      $previewlink=$link;
         $size=filesize($dir.'/'.$file);
   
  +      if ($use_preview > 1) {
  +        list($w, $h) = getimagesize($dir.'/'.$file);
  +        if ($w <= $preview_width) $mywidth=$w;
  +        else $mywidth=$preview_width;
  +
  +        if (file_exists($dir."/thumbnails/".$file)) {
  +          if ($down_mode)
  +            $previewlink=str_replace('value=','value=thumbnails/',$previewlink);
  +          else
  +            $previewlink=$prefix.'thumbnails/'.rawurlencode($file);
  +        }
  +      }
  +
         $i=0;
         for (;$i<4;$i++) {
            if ($size <= 1024) {
  @@ -305,7 +321,7 @@
           preg_match("/\.(.{1,4})$/",$fname,$m);
           $ext=strtolower($m[1]);
           if ($ext and stristr('gif,png,jpeg,jpg',$ext)) {
  -          $fname="<img src='$link' class='icon' width='$preview_width' $alt />";
  +          $fname="<img src='$previewlink' class='icon' width='$mywidth' $alt />";
           } else {
             if (preg_match('/^(wmv|avi|mpeg|mpg|swf|wav|mp3|ogg|midi|mid|mov)$/',$ext)) {
               $tag_open='[[Media('; $tag_close=')]]';
  
  
  


wkpark      2006/12/16 09:08:04

  Modified:    local/SWFUpload mmSWFUpload.js
  Log:
  use escape() to fix SWFObject bug
  
  Revision  Changes    Path
  1.3       +1 -0      moniwiki/local/SWFUpload/mmSWFUpload.js
  
  Index: mmSWFUpload.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/SWFUpload/mmSWFUpload.js,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- mmSWFUpload.js	8 Dec 2006 04:12:06 -0000	1.2
  +++ mmSWFUpload.js	16 Dec 2006 00:08:04 -0000	1.3
  @@ -208,6 +208,7 @@
   	},
   
   	addVariable: function(_13,_14) {
  +		_14=escape(_14); // fix Firefox error with urlencoded variables
   		this.variables[_13]=_14;
   	},
   	
  
  
  


wkpark      2006/12/16 09:08:36

  Modified:    local/SWFUpload moni.js
  Log:
  support image align options under the preview mode
  
  Revision  Changes    Path
  1.3       +37 -4     moniwiki/local/SWFUpload/moni.js
  
  Index: moni.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/SWFUpload/moni.js,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- moni.js	8 Dec 2006 04:12:06 -0000	1.2
  +++ moni.js	16 Dec 2006 00:08:36 -0000	1.3
  @@ -100,6 +100,29 @@
       }
   }
   
  +function alignImg(obj,val) {
  +    var preview = obj.parentNode;
  +    var elem = preview.getElementsByTagName("img");
  +    var i,j;
  +    for (i=0;i<elem.length;i++) {
  +        rad=elem[i].className = 'alignImg';
  +    }
  +
  +    obj.className = 'alignImg selected';
  +
  +    var tag = document.getElementById("insertTag");
  +    if (tag) {
  +        var href= tag.href;
  +        var dum=href.split(/,/);
  +        if (val == 'normal') {
  +            dum[1]="''";
  +        } else {
  +            dum[1]="'" + '?align='+val+"'";
  +        }
  +        tag.href=dum.join(",");
  +    }
  +}
  +
   function showImgPreview(filename) {
       var preview = document.getElementById("filePreview");
       if (!preview) return;
  @@ -107,6 +130,7 @@
       var href_open='',href_close='';
       var jspreview=0;
       var icon_dir = _url_prefix + '/imgs/plugin/UploadedFiles/gnome';
  +    var img_dir = _url_prefix + '/local/SWFUpload/images';
       var preview_width='100px';
       var alt='';
       var fname='';
  @@ -120,7 +144,7 @@
   
       mydir = mydir ? mydir:'';
   
  -    path = _url_prefix + '/pds/_swfupload/' + mydir + filename;
  +    path = _url_prefix + '/pds/.swfupload/' + mydir + filename;
   
       if (preview.className=="previewTag") {
           jspreview=1;
  @@ -135,9 +159,18 @@
       var m=filename.match(/\.(.{1,4})$/);
       var ext=m[1].toLowerCase();
       var isImg=0;
  +    var myAlign='';
       if (ext && ext.match(/gif|png|jpeg|jpg|bmp/)) {
           fname="<img src='" + path + "' width='" + preview_width + ' ' + alt + " />";
           isImg=1;
  +
  +        if (jspreview) {
  +            myAlign="<div id='previewAlign'>";
  +            myAlign+=" <img src='" + img_dir + "/normal.png' class='alignImg' onclick='javascript:alignImg(this,\"normal\")' />";
  +            myAlign+=" <img src='" + img_dir + "/left.png'  class='alignImg' onclick='javascript:alignImg(this,\"left\")' />";
  +            myAlign+=" <img src='" + img_dir + "/right.png'  class='alignImg' onclick='javascript:alignImg(this,\"light\")' />";
  +            myAlign+="</div>";
  +        }
       } else {
           if (ext.match(/^(wmv|avi|mpeg|mpg|swf|wav|mp3|ogg|midi|mid|mov)$/)) {
               tag_open='[[Media('; tag_close=')]]';
  @@ -150,16 +183,16 @@
       if (jspreview) {
           //if (strpos($file,' '))
           link="javascript:insertTags('" + tag_open + "','" +  tag_close + "','" + filename + "',true)";
  -        href_open="<a href=\""+ link + "\">";href_close="</a>";
  +        href_open="<a id='insertTag' href=\""+ link + "\">";href_close="</a>";
       } else if (isImg && form.use_lightbox.value) {
           var myclick='myLightbox.start(this)';
           if (form.use_lightbox.value == 2) {
               myclick='LightBox._show(1)';
           }
  -        href_open="<a href=\""+ path + "\" rel=\"lightbox\" onclick=\"" + myclick + "; return false;\">";href_close="</a>";
  +        href_open="<a href=\""+ path + "\" rel=\"lightbox[mmswf]\" onclick=\"" + myclick + "; return false;\">";href_close="</a>";
       }
   
  -    preview.innerHTML=href_open + fname + href_close;
  +    preview.innerHTML=myAlign + href_open + fname + href_close;
   }
   
   /*
  
  
  


wkpark      2006/12/16 09:08:56

  Modified:    local/SWFUpload swfupload.css
  Log:
  update
  
  Revision  Changes    Path
  1.3       +12 -0     moniwiki/local/SWFUpload/swfupload.css
  
  Index: swfupload.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/SWFUpload/swfupload.css,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- swfupload.css	8 Dec 2006 04:14:15 -0000	1.2
  +++ swfupload.css	16 Dec 2006 00:08:56 -0000	1.3
  @@ -81,6 +81,18 @@
     background: url(images/custom_button_over.png) no-repeat;
   }
   
  +.alignImg {
  +  border: 2px solid #e0e0e0;
  +}
  +
  +.selected {
  +  border: 2px solid #0084c4;
  +  background-image: url(images/gray.gif);
  +  filter:alpha(opacity=60);
  +  -moz-opacity: 0.6;
  +  opacity: 0.6;
  +}
  +
   /*
    * vim:et:sts=2:sw
    */
  
  
  


wkpark      2006/12/16 09:10:30

  Added:       local/SWFUpload/images left.png normal.png right.png
  Log:
  add imgs to select alignment
  
  Revision  Changes    Path
  1.1                  moniwiki/local/SWFUpload/images/left.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/SWFUpload/images/normal.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/SWFUpload/images/right.png
  
  	<<Binary file>>
  
  


wkpark      2006/12/16 09:12:47

  Added:       imgs/plugin/UploadedFiles/gnome/32 up.png
  Log:
  add up.png for UploadedFiles macro
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/plugin/UploadedFiles/gnome/32/up.png
  
  	<<Binary file>>
  
  


wkpark      2006/12/19 11:01:38

  Added:       lib      unicode.php
  Log:
  add hangul_getSearchRule() to support smart hangul search
  
  Revision  Changes    Path
  1.1                  moniwiki/lib/unicode.php
  
  Index: unicode.php
  ===================================================================
  <?php
  // Copyright 2005-2006 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a unicode module for the MoniWiki
  //
  // $Id: unicode.php,v 1.1 2006/12/19 02:01:38 wkpark Exp $
  //
  // from http://www.randomchaos.com/document.php?source=php_and_unicode
  // with some modifications
  //
  
  function utf8_to_unicode( $str ) {
      $unicode= array();        
      $values= array();
      $lookingFor= 1;
      
      for ($i= 0; $i < strlen( $str ); $i++ ) {
          $thisValue = ord( $str[ $i ] );
          if ( $thisValue < 128 ) $unicode[] = $thisValue;
          else {
              if (count( $values ) == 0)
                  $lookingFor = ($thisValue < 224) ? 2 : 3;
              $values[] = $thisValue;
              if (count($values) == $lookingFor ) {
                  $number= ($lookingFor == 3) ?
                      (($values[0]%16)*4096)+(($values[1]%64)*64)+($values[2]%64):
                  	(($values[0]%32)*64)+($values[1]%64);
                  $unicode[]= $number;
                  $values= array();
                  $lookingFor= 1;
              }
          }
      }
      return $unicode;
  }
  
  function unicode_to_entities( $unicode ) {
      $entities = '';
      foreach( $unicode as $value ) {
  	$v=sprintf("%0x",$value);
  	$entities .= '&#' . $v . ';';
      }
      return $entities;
  }
  
  function unicode_to_entities_preserving_ascii( $unicode ) {
      $entities = '';
      foreach( $unicode as $value ) {
          $entities .= ( $value > 127 ) ? '&#' . $value . ';' : chr( $value );
      }
      return $entities;
  }
  
  function strpos_unicode( $haystack , $needle , $offset = 0 ) {
      $position = $offset;
      $found = FALSE;
      
      while( (! $found ) && ( $position < count( $haystack ) ) ) {
          if ( $needle[0] == $haystack[$position] ) {
              for ($i = 1; $i < count( $needle ); $i++ ) {
                  if ( $needle[$i] != $haystack[ $position + $i ] ) break;
              }
              
              if ( $i == count( $needle ) ) {
                  $found = TRUE;
                  $position--;
              }
          }
          $position++;
      }
      
      return ( $found == TRUE ) ? $position : FALSE;
  }
  
  $position = strpos_unicode( $unicode , utf8_to_unicode( '42' ) );
  
  function unicode_to_utf8( $str ) {
      $utf8 = '';
      foreach( $str as $unicode ) {
          if ( $unicode < 128 ) {
              $utf8.= chr( $unicode );
          } elseif ( $unicode < 2048 ) {
              $utf8.= chr( 192 +  ( ( $unicode - ( $unicode % 64 ) ) / 64 ) );
              $utf8.= chr( 128 + ( $unicode % 64 ) );
          } else {
              $utf8.= chr( 224 + ( ( $unicode - ( $unicode % 4096 ) ) / 4096 ) );
              $utf8.= chr( 128 + ( ( ( $unicode % 4096 ) - ( $unicode % 64 ) ) / 64 ) );
              $utf8.= chr( 128 + ( $unicode % 64 ) );
          }
      }
      return $utf8;
  }
  
  // for Hangul
  function hangul_to_jamo($unicode) {
      static $j2c=array(
          0x3131=>0x1100,
          0x3132=>0x1101,
          0x3133=>0x11aa, // fcon
          0x3134=>0x1102,
          0x3135=>0x11ac, // fcon
          0x3136=>0x11ad, // fcon
          0x3137=>0x1103,
          0x3138=>0x1104,
          0x3139=>0x1105,
          0x313a=>0x11b0, // fcon
          0x313b=>0x11b1, // fcon
          0x313c=>0x11b2, // fcon
          0x313d=>0x11b3, // fcon
          0x313e=>0x11b4, // fcon
          0x313f=>0x11b5, // fcon
          0x3140=>0x11b6, // fcon
          0x3141=>0x1106,
          0x3142=>0x1107,
          0x3143=>0x1108,
          0x3144=>0x11b9, // fcon
          0x3145=>0x1109,
          0x3146=>0x110a,
          0x3147=>0x110b,
          0x3148=>0x110c,
          0x3149=>0x110d,
          0x314a=>0x110e,
          0x314b=>0x110f,
          0x314c=>0x1110,
          0x314d=>0x1111,
          0x314e=>0x1112,
  
          0x314f=>0x1161,
          0x3150=>0x1162,
          0x3151=>0x1163,
          0x3152=>0x1164,
          0x3153=>0x1165,
          0x3154=>0x1166,
          0x3155=>0x1167,
          0x3156=>0x1168,
          0x3157=>0x1169,
          0x3158=>0x116a,
          0x3159=>0x116b,
          0x315a=>0x116c,
          0x315b=>0x116d,
          0x315c=>0x116e,
          0x315d=>0x116f,
          0x315e=>0x1170,
          0x315f=>0x1171,
          0x3160=>0x1172,
          0x3161=>0x1173,
          0x3162=>0x1174,
          0x3163=>0x1175,
      );
      $jamo=array();
      //$unicode=utf8_to_unicode($str);
      foreach ($unicode as $u) {
          if ($u >= 0xac00 and $u <=0xd7af) {
              $dummy=$u - 0xac00;
              $T= $dummy % 28 + 0x11a7;
              $dummy=(int)($dummy/28);
              $V= $dummy % 21 + 0x1161;
              $dummy=(int)($dummy/21);
              $L= $dummy + 0x1100;
              $jamo[]=$L;$jamo[]=$V;
              if ($T >=0x11a8) $jamo[]=$T;
          } else if ($u >=0x3130 and $u <=0x318f) {
              $jamo[]=$j2c[$u];
              //print sprintf("0x%04x",$j2c[$u]);
          } else {
              $jamo[]=$u;
          }
      }
      return $jamo;
  }
  
  function utf8_hangul_to_jamo($str) {
      $unicode=utf8_to_unicode($str);
      return hangul_to_jamo($unicode);
  }
  
  function jamo_to_syllable($jamo) {
      define('hangul_base', 0xac00);
      define('choseong_base', 0x1100);
      define('jungseong_base', 0x1161);
      define('jongseong_base', 0x11a7);
      define('njungseong', 21);
      define('njongseong', 28);
  
      if (sizeof($jamo)<=3) {
          $choseong=$jamo[0];
          $jungseong=$jamo[1];
          $jongseong=isset($jamo[2]) ? $jamo[2]:0;
      }
  
      /* we use 0x11a7 like a Jongseong filler */
      if ($jongseong == 0)
      $jongseong = 0x11a7; /* Jongseong filler */
  
      if (!($choseong  >= 0x1100 && $choseong  <= 0x1112))
      return 0;
      if (!($jungseong >= 0x1161 && $jungseong <= 0x1175))
      return 0;
      if (!($jongseong >= 0x11a7 && $jongseong <= 0x11c2))
      return 0;
  
      $choseong  -= choseong_base;
      $jungseong -= jungseong_base;
      $jongseong -= jongseong_base;
      // php hack XXX
      $choseong = sprintf("%d",$choseong);
      $jungseong = sprintf("%d",$jungseong);
      $jongseong = sprintf("%d",$jongseong);
  
      $ch[0] = (($choseong * njungseong) + $jungseong) * njongseong + $jongseong
      + hangul_base;
      return $ch;
  }
  
  // make a UTF-8 regular expression for Hangul
  function utf8_hangul_getSearchRule($str,$lastchar=1) {
      $rule='';
  
      $val=utf8_to_unicode($str);
      $len=sizeof($val);
      if ($lastchar and $len > 1) { // make a regex using with the last char
          $last=array_pop($val);
          $rule=unicode_to_utf8($val);
          $val=array($last);
          $len=sizeof($val);
      }
  
      for ($i=0;$i<$len;$i++) {
          $ch=$val[$i];
  
          $wch=array();
          $ustart=array();
          $uend=array();
          if (($ch >=0xac00 and $ch <=0xd7a3) or ($ch >=0x3130 and $ch <=0x318f)) {
              $wch=hangul_to_jamo(array($ch));
          } else {
              $rule.=unicode_to_utf8(array($ch));
              continue;
          }
  
          $wlen=sizeof($wch);
          if ($wlen>=3) {
              $rule.=unicode_to_utf8(array($ch));
              continue;
          } else if ($wlen==1) {
              if ($wch[0] >=0x1100 and $wch[0] <=0x1112) {
                  $wch[1]=0x1161;
                  $start=jamo_to_syllable($wch);
                  $ustart=unicode_to_utf8($start);
  
                  $wch[1]=0x1175;
                  $wch[2]=0x11c2;
                  $end=jamo_to_syllable($wch);
                  $uend=unicode_to_utf8($end);
              } else {
                  $rule.=unicode_to_utf8($wch);
                  continue;
              }
          } else if ($wlen==2) {
              if ($wch[0] >=0x1100 and $wch[0] <=0x1112) {
                  $start=jamo_to_syllable($wch);
                  $ustart=unicode_to_utf8($start);
  
                  $wch[2]=0x11c2;
                  $end=jamo_to_syllable($wch);
                  $uend=unicode_to_utf8($end);
              } else {
                  $rule.=unicode_to_utf8($wch);
                  continue;
              }
          }
  
          $rule.= sprintf("\x%02X",ord($ustart[0]));
          $crule='';
          if ($ustart[1]==$uend[1]) {
              $crule.=sprintf("\x%02X",ord($ustart[1]));
              $crule.=sprintf("[\x%02X-\x%02X]",ord($ustart[2]),ord($uend[2]));
          } else {
              $sch=ord($ustart[1]);
              $ech=ord($uend[1]);
  
              $subrule=array();
  
              $subrule[]=sprintf("\x%02X[\x%02X-\\xBF]",$sch,ord($ustart[2]));
              if (($sch+1) == ($ech-1))
                  $subrule[]=sprintf("\x%02X[\\x80-\\xBF]",($sch+1));
              else if (($sch+1) != $ech)
                  $subrule[]=sprintf("[\x%02X-\x%02X][\\x80-\\xBF]",($sch+1),($ech-1));
              $subrule[]=sprintf("\x%02X[\\x80-\\x%02X]",ord($uend[1]),ord($uend[2]));
              $crule.='('.implode('|',$subrule).')';
          }
  
          $rule.=$crule;
      }
      return $rule;
  }
  
  // vim:et:sw:sts=4:
  ?>
  
  
  


wkpark      2006/12/19 11:04:31

  Modified:    .        wikilib.php
  Log:
  enhanced titleindex plugin for autocompletion
  
  Revision  Changes    Path
  1.220     +52 -3     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.219
  retrieving revision 1.220
  diff -u -r1.219 -r1.220
  --- wikilib.php	15 Aug 2006 07:53:50 -0000	1.219
  +++ wikilib.php	19 Dec 2006 02:04:31 -0000	1.220
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.219 2006/08/15 07:53:50 wkpark Exp $
  +// $Id: wikilib.php,v 1.220 2006/12/19 02:04:31 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -624,7 +624,7 @@
       ob_end_clean();
   
       $editform= macro_Edit($formatter,'nohints,nomenu',$options);
  -    $new=str_replace("#editform\n",$editform,$form);
  +    $new=str_replace("#editform",$editform,$form); // XXX
       if ($form == $new) $form.=$editform;
       else $form=$new;
     } else {
  @@ -1141,10 +1141,59 @@
   function do_titleindex($formatter,$options) {
     global $DBInfo;
   
  -  if ($options['sec'] =='') {
  +  if (isset($options['q'])) {
  +    if (!$options['q']) return "<ul></ul>";
  +
  +    $val='';
  +    $rule='';
  +    while ($DBInfo->use_hangul_search) {
  +      include_once("lib/unicode.php");
  +      $val=$options['q'];
  +      if (strtoupper($DBInfo->charset) != 'UTF-8' and function_exists('iconv')) {
  +        $val=iconv($DBInfo->charset,'UTF-8',$options['q']);
  +      }
  +      if (!$val) break;
  +        
  +      $rule=utf8_hangul_getSearchRule($val);
  +      //print $rule;
  +
  +      $test=@preg_match("/^$rule/",'');
  +      if ($test === false) $rule=$options['q'];
  +      break;     
  +    }
  +    if (!$rule) $rule=$options['q'];
  +
  +    $test=@preg_match("/^$rule/",'');
  +    if ($test === false) return "<ul></ul>";
  +
  +    $pages= array();
  +
  +    $all= $DBInfo->getPageLists();
  +
  +    foreach ($all as $page) {
  +      if (@preg_match("/^".$rule."/i",$page))
  +        $pages[] = $page;
  +    }
  +
  +    sort($pages);
  +    array_unshift($pages, $options['q']);
  +    header("Content-Type: text/plain");
  +    if ($pages) {
  +    	$ret= "<ul>\n<li>".implode("</li>\n<li>",$pages)."</li>\n</ul>\n";
  +    } else {
  +        $ret= "<ul>\n<li>".$options['q']."</li></ul>";
  +    }
  +    if (strtoupper($DBInfo->charset) != 'UTF-8' and function_exists('iconv')) {
  +      $val=iconv('UTF-8',$DBInfo->charset,$ret);
  +      if ($val) { print $val; return; }
  +    }
  +    print $ret;
  +    return;
  +  } else if ($options['sec'] =='') {
       $pages = $DBInfo->getPageLists();
   
       sort($pages);
  +
       header("Content-Type: text/plain");
       print join("\n",$pages);
       return;
  
  
  


wkpark      2006/12/19 11:06:30

  moniwiki/local/js - New directory

wkpark      2006/12/19 11:09:32

  Added:       local/js controls.js effects.js prototype.js
                        scriptaculous.js
  Log:
  add the prototype and the scriptaculous
  
  Revision  Changes    Path
  1.1                  moniwiki/local/js/controls.js
  
  Index: controls.js
  ===================================================================
  // script.aculo.us controls.js v1.6.5, Wed Nov 08 14:17:49 CET 2006
  
  // Copyright (c) 2005, 2006 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
  //           (c) 2005, 2006 Ivan Krstic (http://blogs.law.harvard.edu/ivan)
  //           (c) 2005, 2006 Jon Tirsen (http://www.tirsen.com)
  // Contributors:
  //  Richard Livsey
  //  Rahul Bhargava
  //  Rob Wills
  // 
  // script.aculo.us is freely distributable under the terms of an MIT-style license.
  // For details, see the script.aculo.us web site: http://script.aculo.us/
  
  // Autocompleter.Base handles all the autocompletion functionality 
  // that's independent of the data source for autocompletion. This
  // includes drawing the autocompletion menu, observing keyboard
  // and mouse events, and similar.
  //
  // Specific autocompleters need to provide, at the very least, 
  // a getUpdatedChoices function that will be invoked every time
  // the text inside the monitored textbox changes. This method 
  // should get the text for which to provide autocompletion by
  // invoking this.getToken(), NOT by directly accessing
  // this.element.value. This is to allow incremental tokenized
  // autocompletion. Specific auto-completion logic (AJAX, etc)
  // belongs in getUpdatedChoices.
  //
  // Tokenized incremental autocompletion is enabled automatically
  // when an autocompleter is instantiated with the 'tokens' option
  // in the options parameter, e.g.:
  // new Ajax.Autocompleter('id','upd', '/url/', { tokens: ',' });
  // will incrementally autocomplete with a comma as the token.
  // Additionally, ',' in the above example can be replaced with
  // a token array, e.g. { tokens: [',', '\n'] } which
  // enables autocompletion on multiple tokens. This is most 
  // useful when one of the tokens is \n (a newline), as it 
  // allows smart autocompletion after linebreaks.
  
  if(typeof Effect == 'undefined')
    throw("controls.js requires including script.aculo.us' effects.js library");
  
  var Autocompleter = {}
  Autocompleter.Base = function() {};
  Autocompleter.Base.prototype = {
    baseInitialize: function(element, update, options) {
      this.element     = $(element); 
      this.update      = $(update);  
      this.hasFocus    = false; 
      this.changed     = false; 
      this.active      = false; 
      this.index       = 0;     
      this.entryCount  = 0;
  
      if(this.setOptions)
        this.setOptions(options);
      else
        this.options = options || {};
  
      this.options.paramName    = this.options.paramName || this.element.name;
      this.options.tokens       = this.options.tokens || [];
      this.options.frequency    = this.options.frequency || 0.4;
      this.options.minChars     = this.options.minChars || 1;
      this.options.onShow       = this.options.onShow || 
        function(element, update){ 
          if(!update.style.position || update.style.position=='absolute') {
            update.style.position = 'absolute';
            Position.clone(element, update, {
              setHeight: false, 
              offsetTop: element.offsetHeight
            });
          }
          Effect.Appear(update,{duration:0.15});
        };
      this.options.onHide = this.options.onHide || 
        function(element, update){ new Effect.Fade(update,{duration:0.15}) };
  
      if(typeof(this.options.tokens) == 'string') 
        this.options.tokens = new Array(this.options.tokens);
  
      this.observer = null;
      
      this.element.setAttribute('autocomplete','off');
  
      Element.hide(this.update);
  
      Event.observe(this.element, "blur", this.onBlur.bindAsEventListener(this));
      Event.observe(this.element, "keypress", this.onKeyPress.bindAsEventListener(this));
    },
  
    show: function() {
      if(Element.getStyle(this.update, 'display')=='none') this.options.onShow(this.element, this.update);
      if(!this.iefix && 
        (navigator.appVersion.indexOf('MSIE')>0) &&
        (navigator.userAgent.indexOf('Opera')<0) &&
        (Element.getStyle(this.update, 'position')=='absolute')) {
        new Insertion.After(this.update, 
         '<iframe id="' + this.update.id + '_iefix" '+
         'style="display:none;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);" ' +
         'src="javascript:false;" frameborder="0" scrolling="no"></iframe>');
        this.iefix = $(this.update.id+'_iefix');
      }
      if(this.iefix) setTimeout(this.fixIEOverlapping.bind(this), 50);
    },
    
    fixIEOverlapping: function() {
      Position.clone(this.update, this.iefix, {setTop:(!this.update.style.height)});
      this.iefix.style.zIndex = 1;
      this.update.style.zIndex = 2;
      Element.show(this.iefix);
    },
  
    hide: function() {
      this.stopIndicator();
      if(Element.getStyle(this.update, 'display')!='none') this.options.onHide(this.element, this.update);
      if(this.iefix) Element.hide(this.iefix);
    },
  
    startIndicator: function() {
      if(this.options.indicator) Element.show(this.options.indicator);
    },
  
    stopIndicator: function() {
      if(this.options.indicator) Element.hide(this.options.indicator);
    },
  
    onKeyPress: function(event) {
      if(this.active)
        switch(event.keyCode) {
         case Event.KEY_TAB:
         case Event.KEY_RETURN:
           this.selectEntry();
           Event.stop(event);
         case Event.KEY_ESC:
           this.hide();
           this.active = false;
           Event.stop(event);
           return;
         case Event.KEY_LEFT:
         case Event.KEY_RIGHT:
           return;
         case Event.KEY_UP:
           this.markPrevious();
           this.render();
           if(navigator.appVersion.indexOf('AppleWebKit')>0) Event.stop(event);
           return;
         case Event.KEY_DOWN:
           this.markNext();
           this.render();
           if(navigator.appVersion.indexOf('AppleWebKit')>0) Event.stop(event);
           return;
        }
       else 
         if(event.keyCode==Event.KEY_TAB || event.keyCode==Event.KEY_RETURN || 
           (navigator.appVersion.indexOf('AppleWebKit') > 0 && event.keyCode == 0)) return;
  
      this.changed = true;
      this.hasFocus = true;
  
      if(this.observer) clearTimeout(this.observer);
        this.observer = 
          setTimeout(this.onObserverEvent.bind(this), this.options.frequency*1000);
    },
  
    activate: function() {
      this.changed = false;
      this.hasFocus = true;
      this.getUpdatedChoices();
    },
  
    onHover: function(event) {
      var element = Event.findElement(event, 'LI');
      if(this.index != element.autocompleteIndex) 
      {
          this.index = element.autocompleteIndex;
          this.render();
      }
      Event.stop(event);
    },
    
    onClick: function(event) {
      var element = Event.findElement(event, 'LI');
      this.index = element.autocompleteIndex;
      this.selectEntry();
      this.hide();
    },
    
    onBlur: function(event) {
      // needed to make click events working
      setTimeout(this.hide.bind(this), 250);
      this.hasFocus = false;
      this.active = false;     
    }, 
    
    render: function() {
      if(this.entryCount > 0) {
        for (var i = 0; i < this.entryCount; i++)
          this.index==i ? 
            Element.addClassName(this.getEntry(i),"selected") : 
            Element.removeClassName(this.getEntry(i),"selected");
          
        if(this.hasFocus) { 
          this.show();
          this.active = true;
        }
      } else {
        this.active = false;
        this.hide();
      }
    },
    
    markPrevious: function() {
      if(this.index > 0) this.index--
        else this.index = this.entryCount-1;
      this.getEntry(this.index).scrollIntoView(true);
    },
    
    markNext: function() {
      if(this.index < this.entryCount-1) this.index++
        else this.index = 0;
      this.getEntry(this.index).scrollIntoView(false);
    },
    
    getEntry: function(index) {
      return this.update.firstChild.childNodes[index];
    },
    
    getCurrentEntry: function() {
      return this.getEntry(this.index);
    },
    
    selectEntry: function() {
      this.active = false;
      this.updateElement(this.getCurrentEntry());
    },
  
    updateElement: function(selectedElement) {
      if (this.options.updateElement) {
        this.options.updateElement(selectedElement);
        return;
      }
      var value = '';
      if (this.options.select) {
        var nodes = document.getElementsByClassName(this.options.select, selectedElement) || [];
        if(nodes.length>0) value = Element.collectTextNodes(nodes[0], this.options.select);
      } else
        value = Element.collectTextNodesIgnoreClass(selectedElement, 'informal');
      
      var lastTokenPos = this.findLastToken();
      if (lastTokenPos != -1) {
        var newValue = this.element.value.substr(0, lastTokenPos + 1);
        var whitespace = this.element.value.substr(lastTokenPos + 1).match(/^\s+/);
        if (whitespace)
          newValue += whitespace[0];
        this.element.value = newValue + value;
      } else {
        this.element.value = value;
      }
      this.element.focus();
      
      if (this.options.afterUpdateElement)
        this.options.afterUpdateElement(this.element, selectedElement);
    },
  
    updateChoices: function(choices) {
      if(!this.changed && this.hasFocus) {
        this.update.innerHTML = choices;
        Element.cleanWhitespace(this.update);
        Element.cleanWhitespace(this.update.down());
  
        if(this.update.firstChild && this.update.down().childNodes) {
          this.entryCount = 
            this.update.down().childNodes.length;
          for (var i = 0; i < this.entryCount; i++) {
            var entry = this.getEntry(i);
            entry.autocompleteIndex = i;
            this.addObservers(entry);
          }
        } else { 
          this.entryCount = 0;
        }
  
        this.stopIndicator();
        this.index = 0;
        
        if(this.entryCount==1 && this.options.autoSelect) {
          this.selectEntry();
          this.hide();
        } else {
          this.render();
        }
      }
    },
  
    addObservers: function(element) {
      Event.observe(element, "mouseover", this.onHover.bindAsEventListener(this));
      Event.observe(element, "click", this.onClick.bindAsEventListener(this));
    },
  
    onObserverEvent: function() {
      this.changed = false;   
      if(this.getToken().length>=this.options.minChars) {
        this.startIndicator();
        this.getUpdatedChoices();
      } else {
        this.active = false;
        this.hide();
      }
    },
  
    getToken: function() {
      var tokenPos = this.findLastToken();
      if (tokenPos != -1)
        var ret = this.element.value.substr(tokenPos + 1).replace(/^\s+/,'').replace(/\s+$/,'');
      else
        var ret = this.element.value;
  
      return /\n/.test(ret) ? '' : ret;
    },
  
    findLastToken: function() {
      var lastTokenPos = -1;
  
      for (var i=0; i<this.options.tokens.length; i++) {
        var thisTokenPos = this.element.value.lastIndexOf(this.options.tokens[i]);
        if (thisTokenPos > lastTokenPos)
          lastTokenPos = thisTokenPos;
      }
      return lastTokenPos;
    }
  }
  
  Ajax.Autocompleter = Class.create();
  Object.extend(Object.extend(Ajax.Autocompleter.prototype, Autocompleter.Base.prototype), {
    initialize: function(element, update, url, options) {
      this.baseInitialize(element, update, options);
      this.options.asynchronous  = true;
      this.options.onComplete    = this.onComplete.bind(this);
      this.options.defaultParams = this.options.parameters || null;
      this.url                   = url;
    },
  
    getUpdatedChoices: function() {
      entry = encodeURIComponent(this.options.paramName) + '=' + 
        encodeURIComponent(this.getToken());
  
      this.options.parameters = this.options.callback ?
        this.options.callback(this.element, entry) : entry;
  
      if(this.options.defaultParams) 
        this.options.parameters += '&' + this.options.defaultParams;
  
      new Ajax.Request(this.url, this.options);
    },
  
    onComplete: function(request) {
      this.updateChoices(request.responseText);
    }
  
  });
  
  // The local array autocompleter. Used when you'd prefer to
  // inject an array of autocompletion options into the page, rather
  // than sending out Ajax queries, which can be quite slow sometimes.
  //
  // The constructor takes four parameters. The first two are, as usual,
  // the id of the monitored textbox, and id of the autocompletion menu.
  // The third is the array you want to autocomplete from, and the fourth
  // is the options block.
  //
  // Extra local autocompletion options:
  // - choices - How many autocompletion choices to offer
  //
  // - partialSearch - If false, the autocompleter will match entered
  //                    text only at the beginning of strings in the 
  //                    autocomplete array. Defaults to true, which will
  //                    match text at the beginning of any *word* in the
  //                    strings in the autocomplete array. If you want to
  //                    search anywhere in the string, additionally set
  //                    the option fullSearch to true (default: off).
  //
  // - fullSsearch - Search anywhere in autocomplete array strings.
  //
  // - partialChars - How many characters to enter before triggering
  //                   a partial match (unlike minChars, which defines
  //                   how many characters are required to do any match
  //                   at all). Defaults to 2.
  //
  // - ignoreCase - Whether to ignore case when autocompleting.
  //                 Defaults to true.
  //
  // It's possible to pass in a custom function as the 'selector' 
  // option, if you prefer to write your own autocompletion logic.
  // In that case, the other options above will not apply unless
  // you support them.
  
  Autocompleter.Local = Class.create();
  Autocompleter.Local.prototype = Object.extend(new Autocompleter.Base(), {
    initialize: function(element, update, array, options) {
      this.baseInitialize(element, update, options);
      this.options.array = array;
    },
  
    getUpdatedChoices: function() {
      this.updateChoices(this.options.selector(this));
    },
  
    setOptions: function(options) {
      this.options = Object.extend({
        choices: 10,
        partialSearch: true,
        partialChars: 2,
        ignoreCase: true,
        fullSearch: false,
        selector: function(instance) {
          var ret       = []; // Beginning matches
          var partial   = []; // Inside matches
          var entry     = instance.getToken();
          var count     = 0;
  
          for (var i = 0; i < instance.options.array.length &&  
            ret.length < instance.options.choices ; i++) { 
  
            var elem = instance.options.array[i];
            var foundPos = instance.options.ignoreCase ? 
              elem.toLowerCase().indexOf(entry.toLowerCase()) : 
              elem.indexOf(entry);
  
            while (foundPos != -1) {
              if (foundPos == 0 && elem.length != entry.length) { 
                ret.push("<li><strong>" + elem.substr(0, entry.length) + "</strong>" + 
                  elem.substr(entry.length) + "</li>");
                break;
              } else if (entry.length >= instance.options.partialChars && 
                instance.options.partialSearch && foundPos != -1) {
                if (instance.options.fullSearch || /\s/.test(elem.substr(foundPos-1,1))) {
                  partial.push("<li>" + elem.substr(0, foundPos) + "<strong>" +
                    elem.substr(foundPos, entry.length) + "</strong>" + elem.substr(
                    foundPos + entry.length) + "</li>");
                  break;
                }
              }
  
              foundPos = instance.options.ignoreCase ? 
                elem.toLowerCase().indexOf(entry.toLowerCase(), foundPos + 1) : 
                elem.indexOf(entry, foundPos + 1);
  
            }
          }
          if (partial.length)
            ret = ret.concat(partial.slice(0, instance.options.choices - ret.length))
          return "<ul>" + ret.join('') + "</ul>";
        }
      }, options || {});
    }
  });
  
  // AJAX in-place editor
  //
  // see documentation on http://wiki.script.aculo.us/scriptaculous/show/Ajax.InPlaceEditor
  
  // Use this if you notice weird scrolling problems on some browsers,
  // the DOM might be a bit confused when this gets called so do this
  // waits 1 ms (with setTimeout) until it does the activation
  Field.scrollFreeActivate = function(field) {
    setTimeout(function() {
      Field.activate(field);
    }, 1);
  }
  
  Ajax.InPlaceEditor = Class.create();
  Ajax.InPlaceEditor.defaultHighlightColor = "#FFFF99";
  Ajax.InPlaceEditor.prototype = {
    initialize: function(element, url, options) {
      this.url = url;
      this.element = $(element);
  
      this.options = Object.extend({
        okButton: true,
        okText: "ok",
        cancelLink: true,
        cancelText: "cancel",
        savingText: "Saving...",
        clickToEditText: "Click to edit",
        okText: "ok",
        rows: 1,
        onComplete: function(transport, element) {
          new Effect.Highlight(element, {startcolor: this.options.highlightcolor});
        },
        onFailure: function(transport) {
          alert("Error communicating with the server: " + transport.responseText.stripTags());
        },
        callback: function(form) {
          return Form.serialize(form);
        },
        handleLineBreaks: true,
        loadingText: 'Loading...',
        savingClassName: 'inplaceeditor-saving',
        loadingClassName: 'inplaceeditor-loading',
        formClassName: 'inplaceeditor-form',
        highlightcolor: Ajax.InPlaceEditor.defaultHighlightColor,
        highlightendcolor: "#FFFFFF",
        externalControl: null,
        submitOnBlur: false,
        ajaxOptions: {},
        evalScripts: false
      }, options || {});
  
      if(!this.options.formId && this.element.id) {
        this.options.formId = this.element.id + "-inplaceeditor";
        if ($(this.options.formId)) {
          // there's already a form with that name, don't specify an id
          this.options.formId = null;
        }
      }
      
      if (this.options.externalControl) {
        this.options.externalControl = $(this.options.externalControl);
      }
      
      this.originalBackground = Element.getStyle(this.element, 'background-color');
      if (!this.originalBackground) {
        this.originalBackground = "transparent";
      }
      
      this.element.title = this.options.clickToEditText;
      
      this.onclickListener = this.enterEditMode.bindAsEventListener(this);
      this.mouseoverListener = this.enterHover.bindAsEventListener(this);
      this.mouseoutListener = this.leaveHover.bindAsEventListener(this);
      Event.observe(this.element, 'click', this.onclickListener);
      Event.observe(this.element, 'mouseover', this.mouseoverListener);
      Event.observe(this.element, 'mouseout', this.mouseoutListener);
      if (this.options.externalControl) {
        Event.observe(this.options.externalControl, 'click', this.onclickListener);
        Event.observe(this.options.externalControl, 'mouseover', this.mouseoverListener);
        Event.observe(this.options.externalControl, 'mouseout', this.mouseoutListener);
      }
    },
    enterEditMode: function(evt) {
      if (this.saving) return;
      if (this.editing) return;
      this.editing = true;
      this.onEnterEditMode();
      if (this.options.externalControl) {
        Element.hide(this.options.externalControl);
      }
      Element.hide(this.element);
      this.createForm();
      this.element.parentNode.insertBefore(this.form, this.element);
      if (!this.options.loadTextURL) Field.scrollFreeActivate(this.editField);
      // stop the event to avoid a page refresh in Safari
      if (evt) {
        Event.stop(evt);
      }
      return false;
    },
    createForm: function() {
      this.form = document.createElement("form");
      this.form.id = this.options.formId;
      Element.addClassName(this.form, this.options.formClassName)
      this.form.onsubmit = this.onSubmit.bind(this);
  
      this.createEditField();
  
      if (this.options.textarea) {
        var br = document.createElement("br");
        this.form.appendChild(br);
      }
  
      if (this.options.okButton) {
        okButton = document.createElement("input");
        okButton.type = "submit";
        okButton.value = this.options.okText;
        okButton.className = 'editor_ok_button';
        this.form.appendChild(okButton);
      }
  
      if (this.options.cancelLink) {
        cancelLink = document.createElement("a");
        cancelLink.href = "#";
        cancelLink.appendChild(document.createTextNode(this.options.cancelText));
        cancelLink.onclick = this.onclickCancel.bind(this);
        cancelLink.className = 'editor_cancel';      
        this.form.appendChild(cancelLink);
      }
    },
    hasHTMLLineBreaks: function(string) {
      if (!this.options.handleLineBreaks) return false;
      return string.match(/<br/i) || string.match(/<p>/i);
    },
    convertHTMLLineBreaks: function(string) {
      return string.replace(/<br>/gi, "\n").replace(/<br\/>/gi, "\n").replace(/<\/p>/gi, "\n").replace(/<p>/gi, "");
    },
    createEditField: function() {
      var text;
      if(this.options.loadTextURL) {
        text = this.options.loadingText;
      } else {
        text = this.getText();
      }
  
      var obj = this;
      
      if (this.options.rows == 1 && !this.hasHTMLLineBreaks(text)) {
        this.options.textarea = false;
        var textField = document.createElement("input");
        textField.obj = this;
        textField.type = "text";
        textField.name = "value";
        textField.value = text;
        textField.style.backgroundColor = this.options.highlightcolor;
        textField.className = 'editor_field';
        var size = this.options.size || this.options.cols || 0;
        if (size != 0) textField.size = size;
        if (this.options.submitOnBlur)
          textField.onblur = this.onSubmit.bind(this);
        this.editField = textField;
      } else {
        this.options.textarea = true;
        var textArea = document.createElement("textarea");
        textArea.obj = this;
        textArea.name = "value";
        textArea.value = this.convertHTMLLineBreaks(text);
        textArea.rows = this.options.rows;
        textArea.cols = this.options.cols || 40;
        textArea.className = 'editor_field';      
        if (this.options.submitOnBlur)
          textArea.onblur = this.onSubmit.bind(this);
        this.editField = textArea;
      }
      
      if(this.options.loadTextURL) {
        this.loadExternalText();
      }
      this.form.appendChild(this.editField);
    },
    getText: function() {
      return this.element.innerHTML;
    },
    loadExternalText: function() {
      Element.addClassName(this.form, this.options.loadingClassName);
      this.editField.disabled = true;
      new Ajax.Request(
        this.options.loadTextURL,
        Object.extend({
          asynchronous: true,
          onComplete: this.onLoadedExternalText.bind(this)
        }, this.options.ajaxOptions)
      );
    },
    onLoadedExternalText: function(transport) {
      Element.removeClassName(this.form, this.options.loadingClassName);
      this.editField.disabled = false;
      this.editField.value = transport.responseText.stripTags();
      Field.scrollFreeActivate(this.editField);
    },
    onclickCancel: function() {
      this.onComplete();
      this.leaveEditMode();
      return false;
    },
    onFailure: function(transport) {
      this.options.onFailure(transport);
      if (this.oldInnerHTML) {
        this.element.innerHTML = this.oldInnerHTML;
        this.oldInnerHTML = null;
      }
      return false;
    },
    onSubmit: function() {
      // onLoading resets these so we need to save them away for the Ajax call
      var form = this.form;
      var value = this.editField.value;
      
      // do this first, sometimes the ajax call returns before we get a chance to switch on Saving...
      // which means this will actually switch on Saving... *after* we've left edit mode causing Saving...
      // to be displayed indefinitely
      this.onLoading();
      
      if (this.options.evalScripts) {
        new Ajax.Request(
          this.url, Object.extend({
            parameters: this.options.callback(form, value),
            onComplete: this.onComplete.bind(this),
            onFailure: this.onFailure.bind(this),
            asynchronous:true, 
            evalScripts:true
          }, this.options.ajaxOptions));
      } else  {
        new Ajax.Updater(
          { success: this.element,
            // don't update on failure (this could be an option)
            failure: null }, 
          this.url, Object.extend({
            parameters: this.options.callback(form, value),
            onComplete: this.onComplete.bind(this),
            onFailure: this.onFailure.bind(this)
          }, this.options.ajaxOptions));
      }
      // stop the event to avoid a page refresh in Safari
      if (arguments.length > 1) {
        Event.stop(arguments[0]);
      }
      return false;
    },
    onLoading: function() {
      this.saving = true;
      this.removeForm();
      this.leaveHover();
      this.showSaving();
    },
    showSaving: function() {
      this.oldInnerHTML = this.element.innerHTML;
      this.element.innerHTML = this.options.savingText;
      Element.addClassName(this.element, this.options.savingClassName);
      this.element.style.backgroundColor = this.originalBackground;
      Element.show(this.element);
    },
    removeForm: function() {
      if(this.form) {
        if (this.form.parentNode) Element.remove(this.form);
        this.form = null;
      }
    },
    enterHover: function() {
      if (this.saving) return;
      this.element.style.backgroundColor = this.options.highlightcolor;
      if (this.effect) {
        this.effect.cancel();
      }
      Element.addClassName(this.element, this.options.hoverClassName)
    },
    leaveHover: function() {
      if (this.options.backgroundColor) {
        this.element.style.backgroundColor = this.oldBackground;
      }
      Element.removeClassName(this.element, this.options.hoverClassName)
      if (this.saving) return;
      this.effect = new Effect.Highlight(this.element, {
        startcolor: this.options.highlightcolor,
        endcolor: this.options.highlightendcolor,
        restorecolor: this.originalBackground
      });
    },
    leaveEditMode: function() {
      Element.removeClassName(this.element, this.options.savingClassName);
      this.removeForm();
      this.leaveHover();
      this.element.style.backgroundColor = this.originalBackground;
      Element.show(this.element);
      if (this.options.externalControl) {
        Element.show(this.options.externalControl);
      }
      this.editing = false;
      this.saving = false;
      this.oldInnerHTML = null;
      this.onLeaveEditMode();
    },
    onComplete: function(transport) {
      this.leaveEditMode();
      this.options.onComplete.bind(this)(transport, this.element);
    },
    onEnterEditMode: function() {},
    onLeaveEditMode: function() {},
    dispose: function() {
      if (this.oldInnerHTML) {
        this.element.innerHTML = this.oldInnerHTML;
      }
      this.leaveEditMode();
      Event.stopObserving(this.element, 'click', this.onclickListener);
      Event.stopObserving(this.element, 'mouseover', this.mouseoverListener);
      Event.stopObserving(this.element, 'mouseout', this.mouseoutListener);
      if (this.options.externalControl) {
        Event.stopObserving(this.options.externalControl, 'click', this.onclickListener);
        Event.stopObserving(this.options.externalControl, 'mouseover', this.mouseoverListener);
        Event.stopObserving(this.options.externalControl, 'mouseout', this.mouseoutListener);
      }
    }
  };
  
  Ajax.InPlaceCollectionEditor = Class.create();
  Object.extend(Ajax.InPlaceCollectionEditor.prototype, Ajax.InPlaceEditor.prototype);
  Object.extend(Ajax.InPlaceCollectionEditor.prototype, {
    createEditField: function() {
      if (!this.cached_selectTag) {
        var selectTag = document.createElement("select");
        var collection = this.options.collection || [];
        var optionTag;
        collection.each(function(e,i) {
          optionTag = document.createElement("option");
          optionTag.value = (e instanceof Array) ? e[0] : e;
          if((typeof this.options.value == 'undefined') && 
            ((e instanceof Array) ? this.element.innerHTML == e[1] : e == optionTag.value)) optionTag.selected = true;
          if(this.options.value==optionTag.value) optionTag.selected = true;
          optionTag.appendChild(document.createTextNode((e instanceof Array) ? e[1] : e));
          selectTag.appendChild(optionTag);
        }.bind(this));
        this.cached_selectTag = selectTag;
      }
  
      this.editField = this.cached_selectTag;
      if(this.options.loadTextURL) this.loadExternalText();
      this.form.appendChild(this.editField);
      this.options.callback = function(form, value) {
        return "value=" + encodeURIComponent(value);
      }
    }
  });
  
  // Delayed observer, like Form.Element.Observer, 
  // but waits for delay after last key input
  // Ideal for live-search fields
  
  Form.Element.DelayedObserver = Class.create();
  Form.Element.DelayedObserver.prototype = {
    initialize: function(element, delay, callback) {
      this.delay     = delay || 0.5;
      this.element   = $(element);
      this.callback  = callback;
      this.timer     = null;
      this.lastValue = $F(this.element); 
      Event.observe(this.element,'keyup',this.delayedListener.bindAsEventListener(this));
    },
    delayedListener: function(event) {
      if(this.lastValue == $F(this.element)) return;
      if(this.timer) clearTimeout(this.timer);
      this.timer = setTimeout(this.onTimerEvent.bind(this), this.delay * 1000);
      this.lastValue = $F(this.element);
    },
    onTimerEvent: function() {
      this.timer = null;
      this.callback(this.element, $F(this.element));
    }
  };
  
  
  
  1.1                  moniwiki/local/js/effects.js
  
  Index: effects.js
  ===================================================================
  // script.aculo.us effects.js v1.6.5, Wed Nov 08 14:17:49 CET 2006
  
  // Copyright (c) 2005, 2006 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
  // Contributors:
  //  Justin Palmer (http://encytemedia.com/)
  //  Mark Pilgrim (http://diveintomark.org/)
  //  Martin Bialasinki
  // 
  // script.aculo.us is freely distributable under the terms of an MIT-style license.
  // For details, see the script.aculo.us web site: http://script.aculo.us/ 
  
  // converts rgb() and #xxx to #xxxxxx format,  
  // returns self (or first argument) if not convertable  
  String.prototype.parseColor = function() {  
    var color = '#';  
    if(this.slice(0,4) == 'rgb(') {  
      var cols = this.slice(4,this.length-1).split(',');  
      var i=0; do { color += parseInt(cols[i]).toColorPart() } while (++i<3);  
    } else {  
      if(this.slice(0,1) == '#') {  
        if(this.length==4) for(var i=1;i<4;i++) color += (this.charAt(i) + this.charAt(i)).toLowerCase();  
        if(this.length==7) color = this.toLowerCase();  
      }  
    }  
    return(color.length==7 ? color : (arguments[0] || this));  
  }
  
  /*--------------------------------------------------------------------------*/
  
  Element.collectTextNodes = function(element) {  
    return $A($(element).childNodes).collect( function(node) {
      return (node.nodeType==3 ? node.nodeValue : 
        (node.hasChildNodes() ? Element.collectTextNodes(node) : ''));
    }).flatten().join('');
  }
  
  Element.collectTextNodesIgnoreClass = function(element, className) {  
    return $A($(element).childNodes).collect( function(node) {
      return (node.nodeType==3 ? node.nodeValue : 
        ((node.hasChildNodes() && !Element.hasClassName(node,className)) ? 
          Element.collectTextNodesIgnoreClass(node, className) : ''));
    }).flatten().join('');
  }
  
  Element.setContentZoom = function(element, percent) {
    element = $(element);  
    element.setStyle({fontSize: (percent/100) + 'em'});   
    if(navigator.appVersion.indexOf('AppleWebKit')>0) window.scrollBy(0,0);
    return element;
  }
  
  Element.getOpacity = function(element){
    element = $(element);
    var opacity;
    if (opacity = element.getStyle('opacity'))  
      return parseFloat(opacity);  
    if (opacity = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/))  
      if(opacity[1]) return parseFloat(opacity[1]) / 100;  
    return 1.0;  
  }
  
  Element.setOpacity = function(element, value){  
    element= $(element);  
    if (value == 1){
      element.setStyle({ opacity: 
        (/Gecko/.test(navigator.userAgent) && !/Konqueror|Safari|KHTML/.test(navigator.userAgent)) ? 
        0.999999 : 1.0 });
      if(/MSIE/.test(navigator.userAgent) && !window.opera)  
        element.setStyle({filter: Element.getStyle(element,'filter').replace(/alpha\([^\)]*\)/gi,'')});  
    } else {  
      if(value < 0.00001) value = 0;  
      element.setStyle({opacity: value});
      if(/MSIE/.test(navigator.userAgent) && !window.opera)  
        element.setStyle(
          { filter: element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'') +
              'alpha(opacity='+value*100+')' });  
    }
    return element;
  }  
   
  Element.getInlineOpacity = function(element){  
    return $(element).style.opacity || '';
  }  
  
  Element.forceRerendering = function(element) {
    try {
      element = $(element);
      var n = document.createTextNode(' ');
      element.appendChild(n);
      element.removeChild(n);
    } catch(e) { }
  };
  
  /*--------------------------------------------------------------------------*/
  
  Array.prototype.call = function() {
    var args = arguments;
    this.each(function(f){ f.apply(this, args) });
  }
  
  /*--------------------------------------------------------------------------*/
  
  var Effect = {
    _elementDoesNotExistError: {
      name: 'ElementDoesNotExistError',
      message: 'The specified DOM element does not exist, but is required for this effect to operate'
    },
    tagifyText: function(element) {
      if(typeof Builder == 'undefined')
        throw("Effect.tagifyText requires including script.aculo.us' builder.js library");
        
      var tagifyStyle = 'position:relative';
      if(/MSIE/.test(navigator.userAgent) && !window.opera) tagifyStyle += ';zoom:1';
      
      element = $(element);
      $A(element.childNodes).each( function(child) {
        if(child.nodeType==3) {
          child.nodeValue.toArray().each( function(character) {
            element.insertBefore(
              Builder.node('span',{style: tagifyStyle},
                character == ' ' ? String.fromCharCode(160) : character), 
                child);
          });
          Element.remove(child);
        }
      });
    },
    multiple: function(element, effect) {
      var elements;
      if(((typeof element == 'object') || 
          (typeof element == 'function')) && 
         (element.length))
        elements = element;
      else
        elements = $(element).childNodes;
        
      var options = Object.extend({
        speed: 0.1,
        delay: 0.0
      }, arguments[2] || {});
      var masterDelay = options.delay;
  
      $A(elements).each( function(element, index) {
        new effect(element, Object.extend(options, { delay: index * options.speed + masterDelay }));
      });
    },
    PAIRS: {
      'slide':  ['SlideDown','SlideUp'],
      'blind':  ['BlindDown','BlindUp'],
      'appear': ['Appear','Fade']
    },
    toggle: function(element, effect) {
      element = $(element);
      effect = (effect || 'appear').toLowerCase();
      var options = Object.extend({
        queue: { position:'end', scope:(element.id || 'global'), limit: 1 }
      }, arguments[2] || {});
      Effect[element.visible() ? 
        Effect.PAIRS[effect][1] : Effect.PAIRS[effect][0]](element, options);
    }
  };
  
  var Effect2 = Effect; // deprecated
  
  /* ------------- transitions ------------- */
  
  Effect.Transitions = {
    linear: Prototype.K,
    sinoidal: function(pos) {
      return (-Math.cos(pos*Math.PI)/2) + 0.5;
    },
    reverse: function(pos) {
      return 1-pos;
    },
    flicker: function(pos) {
      return ((-Math.cos(pos*Math.PI)/4) + 0.75) + Math.random()/4;
    },
    wobble: function(pos) {
      return (-Math.cos(pos*Math.PI*(9*pos))/2) + 0.5;
    },
    pulse: function(pos, pulses) { 
      pulses = pulses || 5; 
      return (
        Math.round((pos % (1/pulses)) * pulses) == 0 ? 
              ((pos * pulses * 2) - Math.floor(pos * pulses * 2)) : 
          1 - ((pos * pulses * 2) - Math.floor(pos * pulses * 2))
        );
    },
    none: function(pos) {
      return 0;
    },
    full: function(pos) {
      return 1;
    }
  };
  
  /* ------------- core effects ------------- */
  
  Effect.ScopedQueue = Class.create();
  Object.extend(Object.extend(Effect.ScopedQueue.prototype, Enumerable), {
    initialize: function() {
      this.effects  = [];
      this.interval = null;
    },
    _each: function(iterator) {
      this.effects._each(iterator);
    },
    add: function(effect) {
      var timestamp = new Date().getTime();
      
      var position = (typeof effect.options.queue == 'string') ? 
        effect.options.queue : effect.options.queue.position;
      
      switch(position) {
        case 'front':
          // move unstarted effects after this effect  
          this.effects.findAll(function(e){ return e.state=='idle' }).each( function(e) {
              e.startOn  += effect.finishOn;
              e.finishOn += effect.finishOn;
            });
          break;
        case 'with-last':
          timestamp = this.effects.pluck('startOn').max() || timestamp;
          break;
        case 'end':
          // start effect after last queued effect has finished
          timestamp = this.effects.pluck('finishOn').max() || timestamp;
          break;
      }
      
      effect.startOn  += timestamp;
      effect.finishOn += timestamp;
  
      if(!effect.options.queue.limit || (this.effects.length < effect.options.queue.limit))
        this.effects.push(effect);
      
      if(!this.interval) 
        this.interval = setInterval(this.loop.bind(this), 40);
    },
    remove: function(effect) {
      this.effects = this.effects.reject(function(e) { return e==effect });
      if(this.effects.length == 0) {
        clearInterval(this.interval);
        this.interval = null;
      }
    },
    loop: function() {
      var timePos = new Date().getTime();
      this.effects.invoke('loop', timePos);
    }
  });
  
  Effect.Queues = {
    instances: $H(),
    get: function(queueName) {
      if(typeof queueName != 'string') return queueName;
      
      if(!this.instances[queueName])
        this.instances[queueName] = new Effect.ScopedQueue();
        
      return this.instances[queueName];
    }
  }
  Effect.Queue = Effect.Queues.get('global');
  
  Effect.DefaultOptions = {
    transition: Effect.Transitions.sinoidal,
    duration:   1.0,   // seconds
    fps:        25.0,  // max. 25fps due to Effect.Queue implementation
    sync:       false, // true for combining
    from:       0.0,
    to:         1.0,
    delay:      0.0,
    queue:      'parallel'
  }
  
  Effect.Base = function() {};
  Effect.Base.prototype = {
    position: null,
    start: function(options) {
      this.options      = Object.extend(Object.extend({},Effect.DefaultOptions), options || {});
      this.currentFrame = 0;
      this.state        = 'idle';
      this.startOn      = this.options.delay*1000;
      this.finishOn     = this.startOn + (this.options.duration*1000);
      this.event('beforeStart');
      if(!this.options.sync)
        Effect.Queues.get(typeof this.options.queue == 'string' ? 
          'global' : this.options.queue.scope).add(this);
    },
    loop: function(timePos) {
      if(timePos >= this.startOn) {
        if(timePos >= this.finishOn) {
          this.render(1.0);
          this.cancel();
          this.event('beforeFinish');
          if(this.finish) this.finish(); 
          this.event('afterFinish');
          return;  
        }
        var pos   = (timePos - this.startOn) / (this.finishOn - this.startOn);
        var frame = Math.round(pos * this.options.fps * this.options.duration);
        if(frame > this.currentFrame) {
          this.render(pos);
          this.currentFrame = frame;
        }
      }
    },
    render: function(pos) {
      if(this.state == 'idle') {
        this.state = 'running';
        this.event('beforeSetup');
        if(this.setup) this.setup();
        this.event('afterSetup');
      }
      if(this.state == 'running') {
        if(this.options.transition) pos = this.options.transition(pos);
        pos *= (this.options.to-this.options.from);
        pos += this.options.from;
        this.position = pos;
        this.event('beforeUpdate');
        if(this.update) this.update(pos);
        this.event('afterUpdate');
      }
    },
    cancel: function() {
      if(!this.options.sync)
        Effect.Queues.get(typeof this.options.queue == 'string' ? 
          'global' : this.options.queue.scope).remove(this);
      this.state = 'finished';
    },
    event: function(eventName) {
      if(this.options[eventName + 'Internal']) this.options[eventName + 'Internal'](this);
      if(this.options[eventName]) this.options[eventName](this);
    },
    inspect: function() {
      return '#<Effect:' + $H(this).inspect() + ',options:' + $H(this.options).inspect() + '>';
    }
  }
  
  Effect.Parallel = Class.create();
  Object.extend(Object.extend(Effect.Parallel.prototype, Effect.Base.prototype), {
    initialize: function(effects) {
      this.effects = effects || [];
      this.start(arguments[1]);
    },
    update: function(position) {
      this.effects.invoke('render', position);
    },
    finish: function(position) {
      this.effects.each( function(effect) {
        effect.render(1.0);
        effect.cancel();
        effect.event('beforeFinish');
        if(effect.finish) effect.finish(position);
        effect.event('afterFinish');
      });
    }
  });
  
  Effect.Event = Class.create();
  Object.extend(Object.extend(Effect.Event.prototype, Effect.Base.prototype), {
    initialize: function() {
      var options = Object.extend({
        duration: 0
      }, arguments[0] || {});
      this.start(options);
    },
    update: Prototype.emptyFunction
  });
  
  Effect.Opacity = Class.create();
  Object.extend(Object.extend(Effect.Opacity.prototype, Effect.Base.prototype), {
    initialize: function(element) {
      this.element = $(element);
      if(!this.element) throw(Effect._elementDoesNotExistError);
      // make this work on IE on elements without 'layout'
      if(/MSIE/.test(navigator.userAgent) && !window.opera && (!this.element.currentStyle.hasLayout))
        this.element.setStyle({zoom: 1});
      var options = Object.extend({
        from: this.element.getOpacity() || 0.0,
        to:   1.0
      }, arguments[1] || {});
      this.start(options);
    },
    update: function(position) {
      this.element.setOpacity(position);
    }
  });
  
  Effect.Move = Class.create();
  Object.extend(Object.extend(Effect.Move.prototype, Effect.Base.prototype), {
    initialize: function(element) {
      this.element = $(element);
      if(!this.element) throw(Effect._elementDoesNotExistError);
      var options = Object.extend({
        x:    0,
        y:    0,
        mode: 'relative'
      }, arguments[1] || {});
      this.start(options);
    },
    setup: function() {
      // Bug in Opera: Opera returns the "real" position of a static element or
      // relative element that does not have top/left explicitly set.
      // ==> Always set top and left for position relative elements in your stylesheets 
      // (to 0 if you do not need them) 
      this.element.makePositioned();
      this.originalLeft = parseFloat(this.element.getStyle('left') || '0');
      this.originalTop  = parseFloat(this.element.getStyle('top')  || '0');
      if(this.options.mode == 'absolute') {
        // absolute movement, so we need to calc deltaX and deltaY
        this.options.x = this.options.x - this.originalLeft;
        this.options.y = this.options.y - this.originalTop;
      }
    },
    update: function(position) {
      this.element.setStyle({
        left: Math.round(this.options.x  * position + this.originalLeft) + 'px',
        top:  Math.round(this.options.y  * position + this.originalTop)  + 'px'
      });
    }
  });
  
  // for backwards compatibility
  Effect.MoveBy = function(element, toTop, toLeft) {
    return new Effect.Move(element, 
      Object.extend({ x: toLeft, y: toTop }, arguments[3] || {}));
  };
  
  Effect.Scale = Class.create();
  Object.extend(Object.extend(Effect.Scale.prototype, Effect.Base.prototype), {
    initialize: function(element, percent) {
      this.element = $(element);
      if(!this.element) throw(Effect._elementDoesNotExistError);
      var options = Object.extend({
        scaleX: true,
        scaleY: true,
        scaleContent: true,
        scaleFromCenter: false,
        scaleMode: 'box',        // 'box' or 'contents' or {} with provided values
        scaleFrom: 100.0,
        scaleTo:   percent
      }, arguments[2] || {});
      this.start(options);
    },
    setup: function() {
      this.restoreAfterFinish = this.options.restoreAfterFinish || false;
      this.elementPositioning = this.element.getStyle('position');
      
      this.originalStyle = {};
      ['top','left','width','height','fontSize'].each( function(k) {
        this.originalStyle[k] = this.element.style[k];
      }.bind(this));
        
      this.originalTop  = this.element.offsetTop;
      this.originalLeft = this.element.offsetLeft;
      
      var fontSize = this.element.getStyle('font-size') || '100%';
      ['em','px','%','pt'].each( function(fontSizeType) {
        if(fontSize.indexOf(fontSizeType)>0) {
          this.fontSize     = parseFloat(fontSize);
          this.fontSizeType = fontSizeType;
        }
      }.bind(this));
      
      this.factor = (this.options.scaleTo - this.options.scaleFrom)/100;
      
      this.dims = null;
      if(this.options.scaleMode=='box')
        this.dims = [this.element.offsetHeight, this.element.offsetWidth];
      if(/^content/.test(this.options.scaleMode))
        this.dims = [this.element.scrollHeight, this.element.scrollWidth];
      if(!this.dims)
        this.dims = [this.options.scaleMode.originalHeight,
                     this.options.scaleMode.originalWidth];
    },
    update: function(position) {
      var currentScale = (this.options.scaleFrom/100.0) + (this.factor * position);
      if(this.options.scaleContent && this.fontSize)
        this.element.setStyle({fontSize: this.fontSize * currentScale + this.fontSizeType });
      this.setDimensions(this.dims[0] * currentScale, this.dims[1] * currentScale);
    },
    finish: function(position) {
      if(this.restoreAfterFinish) this.element.setStyle(this.originalStyle);
    },
    setDimensions: function(height, width) {
      var d = {};
      if(this.options.scaleX) d.width = Math.round(width) + 'px';
      if(this.options.scaleY) d.height = Math.round(height) + 'px';
      if(this.options.scaleFromCenter) {
        var topd  = (height - this.dims[0])/2;
        var leftd = (width  - this.dims[1])/2;
        if(this.elementPositioning == 'absolute') {
          if(this.options.scaleY) d.top = this.originalTop-topd + 'px';
          if(this.options.scaleX) d.left = this.originalLeft-leftd + 'px';
        } else {
          if(this.options.scaleY) d.top = -topd + 'px';
          if(this.options.scaleX) d.left = -leftd + 'px';
        }
      }
      this.element.setStyle(d);
    }
  });
  
  Effect.Highlight = Class.create();
  Object.extend(Object.extend(Effect.Highlight.prototype, Effect.Base.prototype), {
    initialize: function(element) {
      this.element = $(element);
      if(!this.element) throw(Effect._elementDoesNotExistError);
      var options = Object.extend({ startcolor: '#ffff99' }, arguments[1] || {});
      this.start(options);
    },
    setup: function() {
      // Prevent executing on elements not in the layout flow
      if(this.element.getStyle('display')=='none') { this.cancel(); return; }
      // Disable background image during the effect
      this.oldStyle = {
        backgroundImage: this.element.getStyle('background-image') };
      this.element.setStyle({backgroundImage: 'none'});
      if(!this.options.endcolor)
        this.options.endcolor = this.element.getStyle('background-color').parseColor('#ffffff');
      if(!this.options.restorecolor)
        this.options.restorecolor = this.element.getStyle('background-color');
      // init color calculations
      this._base  = $R(0,2).map(function(i){ return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16) }.bind(this));
      this._delta = $R(0,2).map(function(i){ return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i] }.bind(this));
    },
    update: function(position) {
      this.element.setStyle({backgroundColor: $R(0,2).inject('#',function(m,v,i){
        return m+(Math.round(this._base[i]+(this._delta[i]*position)).toColorPart()); }.bind(this)) });
    },
    finish: function() {
      this.element.setStyle(Object.extend(this.oldStyle, {
        backgroundColor: this.options.restorecolor
      }));
    }
  });
  
  Effect.ScrollTo = Class.create();
  Object.extend(Object.extend(Effect.ScrollTo.prototype, Effect.Base.prototype), {
    initialize: function(element) {
      this.element = $(element);
      this.start(arguments[1] || {});
    },
    setup: function() {
      Position.prepare();
      var offsets = Position.cumulativeOffset(this.element);
      if(this.options.offset) offsets[1] += this.options.offset;
      var max = window.innerHeight ? 
        window.height - window.innerHeight :
        document.body.scrollHeight - 
          (document.documentElement.clientHeight ? 
            document.documentElement.clientHeight : document.body.clientHeight);
      this.scrollStart = Position.deltaY;
      this.delta = (offsets[1] > max ? max : offsets[1]) - this.scrollStart;
    },
    update: function(position) {
      Position.prepare();
      window.scrollTo(Position.deltaX, 
        this.scrollStart + (position*this.delta));
    }
  });
  
  /* ------------- combination effects ------------- */
  
  Effect.Fade = function(element) {
    element = $(element);
    var oldOpacity = element.getInlineOpacity();
    var options = Object.extend({
    from: element.getOpacity() || 1.0,
    to:   0.0,
    afterFinishInternal: function(effect) { 
      if(effect.options.to!=0) return;
      effect.element.hide().setStyle({opacity: oldOpacity}); 
    }}, arguments[1] || {});
    return new Effect.Opacity(element,options);
  }
  
  Effect.Appear = function(element) {
    element = $(element);
    var options = Object.extend({
    from: (element.getStyle('display') == 'none' ? 0.0 : element.getOpacity() || 0.0),
    to:   1.0,
    // force Safari to render floated elements properly
    afterFinishInternal: function(effect) {
      effect.element.forceRerendering();
    },
    beforeSetup: function(effect) {
      effect.element.setOpacity(effect.options.from).show(); 
    }}, arguments[1] || {});
    return new Effect.Opacity(element,options);
  }
  
  Effect.Puff = function(element) {
    element = $(element);
    var oldStyle = { 
      opacity: element.getInlineOpacity(), 
      position: element.getStyle('position'),
      top:  element.style.top,
      left: element.style.left,
      width: element.style.width,
      height: element.style.height
    };
    return new Effect.Parallel(
     [ new Effect.Scale(element, 200, 
        { sync: true, scaleFromCenter: true, scaleContent: true, restoreAfterFinish: true }), 
       new Effect.Opacity(element, { sync: true, to: 0.0 } ) ], 
       Object.extend({ duration: 1.0, 
        beforeSetupInternal: function(effect) {
          Position.absolutize(effect.effects[0].element)
        },
        afterFinishInternal: function(effect) {
           effect.effects[0].element.hide().setStyle(oldStyle); }
       }, arguments[1] || {})
     );
  }
  
  Effect.BlindUp = function(element) {
    element = $(element);
    element.makeClipping();
    return new Effect.Scale(element, 0,
      Object.extend({ scaleContent: false, 
        scaleX: false, 
        restoreAfterFinish: true,
        afterFinishInternal: function(effect) {
          effect.element.hide().undoClipping();
        } 
      }, arguments[1] || {})
    );
  }
  
  Effect.BlindDown = function(element) {
    element = $(element);
    var elementDimensions = element.getDimensions();
    return new Effect.Scale(element, 100, Object.extend({ 
      scaleContent: false, 
      scaleX: false,
      scaleFrom: 0,
      scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
      restoreAfterFinish: true,
      afterSetup: function(effect) {
        effect.element.makeClipping().setStyle({height: '0px'}).show(); 
      },  
      afterFinishInternal: function(effect) {
        effect.element.undoClipping();
      }
    }, arguments[1] || {}));
  }
  
  Effect.SwitchOff = function(element) {
    element = $(element);
    var oldOpacity = element.getInlineOpacity();
    return new Effect.Appear(element, Object.extend({
      duration: 0.4,
      from: 0,
      transition: Effect.Transitions.flicker,
      afterFinishInternal: function(effect) {
        new Effect.Scale(effect.element, 1, { 
          duration: 0.3, scaleFromCenter: true,
          scaleX: false, scaleContent: false, restoreAfterFinish: true,
          beforeSetup: function(effect) { 
            effect.element.makePositioned().makeClipping();
          },
          afterFinishInternal: function(effect) {
            effect.element.hide().undoClipping().undoPositioned().setStyle({opacity: oldOpacity});
          }
        })
      }
    }, arguments[1] || {}));
  }
  
  Effect.DropOut = function(element) {
    element = $(element);
    var oldStyle = {
      top: element.getStyle('top'),
      left: element.getStyle('left'),
      opacity: element.getInlineOpacity() };
    return new Effect.Parallel(
      [ new Effect.Move(element, {x: 0, y: 100, sync: true }), 
        new Effect.Opacity(element, { sync: true, to: 0.0 }) ],
      Object.extend(
        { duration: 0.5,
          beforeSetup: function(effect) {
            effect.effects[0].element.makePositioned(); 
          },
          afterFinishInternal: function(effect) {
            effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle);
          } 
        }, arguments[1] || {}));
  }
  
  Effect.Shake = function(element) {
    element = $(element);
    var oldStyle = {
      top: element.getStyle('top'),
      left: element.getStyle('left') };
      return new Effect.Move(element, 
        { x:  20, y: 0, duration: 0.05, afterFinishInternal: function(effect) {
      new Effect.Move(effect.element,
        { x: -40, y: 0, duration: 0.1,  afterFinishInternal: function(effect) {
      new Effect.Move(effect.element,
        { x:  40, y: 0, duration: 0.1,  afterFinishInternal: function(effect) {
      new Effect.Move(effect.element,
        { x: -40, y: 0, duration: 0.1,  afterFinishInternal: function(effect) {
      new Effect.Move(effect.element,
        { x:  40, y: 0, duration: 0.1,  afterFinishInternal: function(effect) {
      new Effect.Move(effect.element,
        { x: -20, y: 0, duration: 0.05, afterFinishInternal: function(effect) {
          effect.element.undoPositioned().setStyle(oldStyle);
    }}) }}) }}) }}) }}) }});
  }
  
  Effect.SlideDown = function(element) {
    element = $(element).cleanWhitespace();
    // SlideDown need to have the content of the element wrapped in a container element with fixed height!
    var oldInnerBottom = element.down().getStyle('bottom');
    var elementDimensions = element.getDimensions();
    return new Effect.Scale(element, 100, Object.extend({ 
      scaleContent: false, 
      scaleX: false, 
      scaleFrom: window.opera ? 0 : 1,
      scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
      restoreAfterFinish: true,
      afterSetup: function(effect) {
        effect.element.makePositioned();
        effect.element.down().makePositioned();
        if(window.opera) effect.element.setStyle({top: ''});
        effect.element.makeClipping().setStyle({height: '0px'}).show(); 
      },
      afterUpdateInternal: function(effect) {
        effect.element.down().setStyle({bottom:
          (effect.dims[0] - effect.element.clientHeight) + 'px' }); 
      },
      afterFinishInternal: function(effect) {
        effect.element.undoClipping().undoPositioned();
        effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom}); }
      }, arguments[1] || {})
    );
  }
  
  Effect.SlideUp = function(element) {
    element = $(element).cleanWhitespace();
    var oldInnerBottom = element.down().getStyle('bottom');
    return new Effect.Scale(element, window.opera ? 0 : 1,
     Object.extend({ scaleContent: false, 
      scaleX: false, 
      scaleMode: 'box',
      scaleFrom: 100,
      restoreAfterFinish: true,
      beforeStartInternal: function(effect) {
        effect.element.makePositioned();
        effect.element.down().makePositioned();
        if(window.opera) effect.element.setStyle({top: ''});
        effect.element.makeClipping().show();
      },  
      afterUpdateInternal: function(effect) {
        effect.element.down().setStyle({bottom:
          (effect.dims[0] - effect.element.clientHeight) + 'px' });
      },
      afterFinishInternal: function(effect) {
        effect.element.hide().undoClipping().undoPositioned().setStyle({bottom: oldInnerBottom});
        effect.element.down().undoPositioned();
      }
     }, arguments[1] || {})
    );
  }
  
  // Bug in opera makes the TD containing this element expand for a instance after finish 
  Effect.Squish = function(element) {
    return new Effect.Scale(element, window.opera ? 1 : 0, { 
      restoreAfterFinish: true,
      beforeSetup: function(effect) {
        effect.element.makeClipping(); 
      },  
      afterFinishInternal: function(effect) {
        effect.element.hide().undoClipping(); 
      }
    });
  }
  
  Effect.Grow = function(element) {
    element = $(element);
    var options = Object.extend({
      direction: 'center',
      moveTransition: Effect.Transitions.sinoidal,
      scaleTransition: Effect.Transitions.sinoidal,
      opacityTransition: Effect.Transitions.full
    }, arguments[1] || {});
    var oldStyle = {
      top: element.style.top,
      left: element.style.left,
      height: element.style.height,
      width: element.style.width,
      opacity: element.getInlineOpacity() };
  
    var dims = element.getDimensions();    
    var initialMoveX, initialMoveY;
    var moveX, moveY;
    
    switch (options.direction) {
      case 'top-left':
        initialMoveX = initialMoveY = moveX = moveY = 0; 
        break;
      case 'top-right':
        initialMoveX = dims.width;
        initialMoveY = moveY = 0;
        moveX = -dims.width;
        break;
      case 'bottom-left':
        initialMoveX = moveX = 0;
        initialMoveY = dims.height;
        moveY = -dims.height;
        break;
      case 'bottom-right':
        initialMoveX = dims.width;
        initialMoveY = dims.height;
        moveX = -dims.width;
        moveY = -dims.height;
        break;
      case 'center':
        initialMoveX = dims.width / 2;
        initialMoveY = dims.height / 2;
        moveX = -dims.width / 2;
        moveY = -dims.height / 2;
        break;
    }
    
    return new Effect.Move(element, {
      x: initialMoveX,
      y: initialMoveY,
      duration: 0.01, 
      beforeSetup: function(effect) {
        effect.element.hide().makeClipping().makePositioned();
      },
      afterFinishInternal: function(effect) {
        new Effect.Parallel(
          [ new Effect.Opacity(effect.element, { sync: true, to: 1.0, from: 0.0, transition: options.opacityTransition }),
            new Effect.Move(effect.element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }),
            new Effect.Scale(effect.element, 100, {
              scaleMode: { originalHeight: dims.height, originalWidth: dims.width }, 
              sync: true, scaleFrom: window.opera ? 1 : 0, transition: options.scaleTransition, restoreAfterFinish: true})
          ], Object.extend({
               beforeSetup: function(effect) {
                 effect.effects[0].element.setStyle({height: '0px'}).show(); 
               },
               afterFinishInternal: function(effect) {
                 effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle); 
               }
             }, options)
        )
      }
    });
  }
  
  Effect.Shrink = function(element) {
    element = $(element);
    var options = Object.extend({
      direction: 'center',
      moveTransition: Effect.Transitions.sinoidal,
      scaleTransition: Effect.Transitions.sinoidal,
      opacityTransition: Effect.Transitions.none
    }, arguments[1] || {});
    var oldStyle = {
      top: element.style.top,
      left: element.style.left,
      height: element.style.height,
      width: element.style.width,
      opacity: element.getInlineOpacity() };
  
    var dims = element.getDimensions();
    var moveX, moveY;
    
    switch (options.direction) {
      case 'top-left':
        moveX = moveY = 0;
        break;
      case 'top-right':
        moveX = dims.width;
        moveY = 0;
        break;
      case 'bottom-left':
        moveX = 0;
        moveY = dims.height;
        break;
      case 'bottom-right':
        moveX = dims.width;
        moveY = dims.height;
        break;
      case 'center':  
        moveX = dims.width / 2;
        moveY = dims.height / 2;
        break;
    }
    
    return new Effect.Parallel(
      [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, transition: options.opacityTransition }),
        new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, transition: options.scaleTransition, restoreAfterFinish: true}),
        new Effect.Move(element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition })
      ], Object.extend({            
           beforeStartInternal: function(effect) {
             effect.effects[0].element.makePositioned().makeClipping(); 
           },
           afterFinishInternal: function(effect) {
             effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle); }
         }, options)
    );
  }
  
  Effect.Pulsate = function(element) {
    element = $(element);
    var options    = arguments[1] || {};
    var oldOpacity = element.getInlineOpacity();
    var transition = options.transition || Effect.Transitions.sinoidal;
    var reverser   = function(pos){ return transition(1-Effect.Transitions.pulse(pos, options.pulses)) };
    reverser.bind(transition);
    return new Effect.Opacity(element, 
      Object.extend(Object.extend({  duration: 2.0, from: 0,
        afterFinishInternal: function(effect) { effect.element.setStyle({opacity: oldOpacity}); }
      }, options), {transition: reverser}));
  }
  
  Effect.Fold = function(element) {
    element = $(element);
    var oldStyle = {
      top: element.style.top,
      left: element.style.left,
      width: element.style.width,
      height: element.style.height };
    element.makeClipping();
    return new Effect.Scale(element, 5, Object.extend({   
      scaleContent: false,
      scaleX: false,
      afterFinishInternal: function(effect) {
      new Effect.Scale(element, 1, { 
        scaleContent: false, 
        scaleY: false,
        afterFinishInternal: function(effect) {
          effect.element.hide().undoClipping().setStyle(oldStyle);
        } });
    }}, arguments[1] || {}));
  };
  
  ['setOpacity','getOpacity','getInlineOpacity','forceRerendering','setContentZoom',
   'collectTextNodes','collectTextNodesIgnoreClass'].each( 
    function(f) { Element.Methods[f] = Element[f]; }
  );
  
  Element.Methods.visualEffect = function(element, effect, options) {
    s = effect.gsub(/_/, '-').camelize();
    effect_class = s.charAt(0).toUpperCase() + s.substring(1);
    new Effect[effect_class](element, options);
    return $(element);
  };
  
  Element.addMethods();
  
  
  1.1                  moniwiki/local/js/prototype.js
  
  Index: prototype.js
  ===================================================================
  /*  Prototype JavaScript framework, version 1.5.0_rc1
   *  (c) 2005 Sam Stephenson <sam@conio.net>
   *
   *  Prototype is freely distributable under the terms of an MIT-style license.
   *  For details, see the Prototype web site: http://prototype.conio.net/
   *
  /*--------------------------------------------------------------------------*/
  
  var Prototype = {
    Version: '1.5.0_rc1',
    BrowserFeatures: {
      XPath: !!document.evaluate
    },
  
    ScriptFragment: '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)',
    emptyFunction: function() {},
    K: function(x) { return x }
  }
  
  var Class = {
    create: function() {
      return function() {
        this.initialize.apply(this, arguments);
      }
    }
  }
  
  var Abstract = new Object();
  
  Object.extend = function(destination, source) {
    for (var property in source) {
      destination[property] = source[property];
    }
    return destination;
  }
  
  Object.extend(Object, {
    inspect: function(object) {
      try {
        if (object === undefined) return 'undefined';
        if (object === null) return 'null';
        return object.inspect ? object.inspect() : object.toString();
      } catch (e) {
        if (e instanceof RangeError) return '...';
        throw e;
      }
    },
  
    keys: function(object) {
      var keys = [];
      for (var property in object)
        keys.push(property);
      return keys;
    },
  
    values: function(object) {
      var values = [];
      for (var property in object)
        values.push(object[property]);
      return values;
    },
  
    clone: function(object) {
      return Object.extend({}, object);
    }
  });
  
  Function.prototype.bind = function() {
    var __method = this, args = $A(arguments), object = args.shift();
    return function() {
      return __method.apply(object, args.concat($A(arguments)));
    }
  }
  
  Function.prototype.bindAsEventListener = function(object) {
    var __method = this, args = $A(arguments), object = args.shift();
    return function(event) {
      return __method.apply(object, [( event || window.event)].concat(args).concat($A(arguments)));
    }
  }
  
  Object.extend(Number.prototype, {
    toColorPart: function() {
      var digits = this.toString(16);
      if (this < 16) return '0' + digits;
      return digits;
    },
  
    succ: function() {
      return this + 1;
    },
  
    times: function(iterator) {
      $R(0, this, true).each(iterator);
      return this;
    }
  });
  
  var Try = {
    these: function() {
      var returnValue;
  
      for (var i = 0; i < arguments.length; i++) {
        var lambda = arguments[i];
        try {
          returnValue = lambda();
          break;
        } catch (e) {}
      }
  
      return returnValue;
    }
  }
  
  /*--------------------------------------------------------------------------*/
  
  var PeriodicalExecuter = Class.create();
  PeriodicalExecuter.prototype = {
    initialize: function(callback, frequency) {
      this.callback = callback;
      this.frequency = frequency;
      this.currentlyExecuting = false;
  
      this.registerCallback();
    },
  
    registerCallback: function() {
      this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
    },
  
    stop: function() {
      if (!this.timer) return;
      clearInterval(this.timer);
      this.timer = null;
    },
  
    onTimerEvent: function() {
      if (!this.currentlyExecuting) {
        try {
          this.currentlyExecuting = true;
          this.callback(this);
        } finally {
          this.currentlyExecuting = false;
        }
      }
    }
  }
  Object.extend(String.prototype, {
    gsub: function(pattern, replacement) {
      var result = '', source = this, match;
      replacement = arguments.callee.prepareReplacement(replacement);
  
      while (source.length > 0) {
        if (match = source.match(pattern)) {
          result += source.slice(0, match.index);
          result += (replacement(match) || '').toString();
          source  = source.slice(match.index + match[0].length);
        } else {
          result += source, source = '';
        }
      }
      return result;
    },
  
    sub: function(pattern, replacement, count) {
      replacement = this.gsub.prepareReplacement(replacement);
      count = count === undefined ? 1 : count;
  
      return this.gsub(pattern, function(match) {
        if (--count < 0) return match[0];
        return replacement(match);
      });
    },
  
    scan: function(pattern, iterator) {
      this.gsub(pattern, iterator);
      return this;
    },
  
    truncate: function(length, truncation) {
      length = length || 30;
      truncation = truncation === undefined ? '...' : truncation;
      return this.length > length ?
        this.slice(0, length - truncation.length) + truncation : this;
    },
  
    strip: function() {
      return this.replace(/^\s+/, '').replace(/\s+$/, '');
    },
  
    stripTags: function() {
      return this.replace(/<\/?[^>]+>/gi, '');
    },
  
    stripScripts: function() {
      return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');
    },
  
    extractScripts: function() {
      var matchAll = new RegExp(Prototype.ScriptFragment, 'img');
      var matchOne = new RegExp(Prototype.ScriptFragment, 'im');
      return (this.match(matchAll) || []).map(function(scriptTag) {
        return (scriptTag.match(matchOne) || ['', ''])[1];
      });
    },
  
    evalScripts: function() {
      return this.extractScripts().map(function(script) { return eval(script) });
    },
  
    escapeHTML: function() {
      var div = document.createElement('div');
      var text = document.createTextNode(this);
      div.appendChild(text);
      return div.innerHTML;
    },
  
    unescapeHTML: function() {
      var div = document.createElement('div');
      div.innerHTML = this.stripTags();
      return div.childNodes[0] ? div.childNodes[0].nodeValue : '';
    },
  
    toQueryParams: function() {
      var match = this.strip().match(/[^?]*$/)[0];
      if (!match) return {};
      var pairs = match.split('&');
      return pairs.inject({}, function(params, pairString) {
        var pair  = pairString.split('=');
        var value = pair[1] ? decodeURIComponent(pair[1]) : undefined;
        params[decodeURIComponent(pair[0])] = value;
        return params;
      });
    },
  
    toArray: function() {
      return this.split('');
    },
  
    camelize: function() {
      var oStringList = this.split('-');
      if (oStringList.length == 1) return oStringList[0];
  
      var camelizedString = this.indexOf('-') == 0
        ? oStringList[0].charAt(0).toUpperCase() + oStringList[0].substring(1)
        : oStringList[0];
  
      for (var i = 1, length = oStringList.length; i < length; i++) {
        var s = oStringList[i];
        camelizedString += s.charAt(0).toUpperCase() + s.substring(1);
      }
  
      return camelizedString;
    },
  
    inspect: function(useDoubleQuotes) {
      var escapedString = this.replace(/\\/g, '\\\\');
      if (useDoubleQuotes)
        return '"' + escapedString.replace(/"/g, '\\"') + '"';
      else
        return "'" + escapedString.replace(/'/g, '\\\'') + "'";
    }
  });
  
  String.prototype.gsub.prepareReplacement = function(replacement) {
    if (typeof replacement == 'function') return replacement;
    var template = new Template(replacement);
    return function(match) { return template.evaluate(match) };
  }
  
  String.prototype.parseQuery = String.prototype.toQueryParams;
  
  var Template = Class.create();
  Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/;
  Template.prototype = {
    initialize: function(template, pattern) {
      this.template = template.toString();
      this.pattern  = pattern || Template.Pattern;
    },
  
    evaluate: function(object) {
      return this.template.gsub(this.pattern, function(match) {
        var before = match[1];
        if (before == '\\') return match[2];
        return before + (object[match[3]] || '').toString();
      });
    }
  }
  
  var $break    = new Object();
  var $continue = new Object();
  
  var Enumerable = {
    each: function(iterator) {
      var index = 0;
      try {
        this._each(function(value) {
          try {
            iterator(value, index++);
          } catch (e) {
            if (e != $continue) throw e;
          }
        });
      } catch (e) {
        if (e != $break) throw e;
      }
      return this;
    },
  
    eachSlice: function(number, iterator) {
      var index = -number, slices = [], array = this.toArray();
      while ((index += number) < array.length)
        slices.push(array.slice(index, index+number));
      return slices.collect(iterator || Prototype.K);
    },
  
    all: function(iterator) {
      var result = true;
      this.each(function(value, index) {
        result = result && !!(iterator || Prototype.K)(value, index);
        if (!result) throw $break;
      });
      return result;
    },
  
    any: function(iterator) {
      var result = false;
      this.each(function(value, index) {
        if (result = !!(iterator || Prototype.K)(value, index))
          throw $break;
      });
      return result;
    },
  
    collect: function(iterator) {
      var results = [];
      this.each(function(value, index) {
        results.push(iterator(value, index));
      });
      return results;
    },
  
    detect: function(iterator) {
      var result;
      this.each(function(value, index) {
        if (iterator(value, index)) {
          result = value;
          throw $break;
        }
      });
      return result;
    },
  
    findAll: function(iterator) {
      var results = [];
      this.each(function(value, index) {
        if (iterator(value, index))
          results.push(value);
      });
      return results;
    },
  
    grep: function(pattern, iterator) {
      var results = [];
      this.each(function(value, index) {
        var stringValue = value.toString();
        if (stringValue.match(pattern))
          results.push((iterator || Prototype.K)(value, index));
      })
      return results;
    },
  
    include: function(object) {
      var found = false;
      this.each(function(value) {
        if (value == object) {
          found = true;
          throw $break;
        }
      });
      return found;
    },
  
    inGroupsOf: function(number, fillWith) {
      fillWith = fillWith || null;
      var results = this.eachSlice(number);
      if (results.length > 0) (number - results.last().length).times(function() {
        results.last().push(fillWith)
      });
      return results;
    },
  
    inject: function(memo, iterator) {
      this.each(function(value, index) {
        memo = iterator(memo, value, index);
      });
      return memo;
    },
  
    invoke: function(method) {
      var args = $A(arguments).slice(1);
      return this.collect(function(value) {
        return value[method].apply(value, args);
      });
    },
  
    max: function(iterator) {
      var result;
      this.each(function(value, index) {
        value = (iterator || Prototype.K)(value, index);
        if (result == undefined || value >= result)
          result = value;
      });
      return result;
    },
  
    min: function(iterator) {
      var result;
      this.each(function(value, index) {
        value = (iterator || Prototype.K)(value, index);
        if (result == undefined || value < result)
          result = value;
      });
      return result;
    },
  
    partition: function(iterator) {
      var trues = [], falses = [];
      this.each(function(value, index) {
        ((iterator || Prototype.K)(value, index) ?
          trues : falses).push(value);
      });
      return [trues, falses];
    },
  
    pluck: function(property) {
      var results = [];
      this.each(function(value, index) {
        results.push(value[property]);
      });
      return results;
    },
  
    reject: function(iterator) {
      var results = [];
      this.each(function(value, index) {
        if (!iterator(value, index))
          results.push(value);
      });
      return results;
    },
  
    sortBy: function(iterator) {
      return this.collect(function(value, index) {
        return {value: value, criteria: iterator(value, index)};
      }).sort(function(left, right) {
        var a = left.criteria, b = right.criteria;
        return a < b ? -1 : a > b ? 1 : 0;
      }).pluck('value');
    },
  
    toArray: function() {
      return this.collect(Prototype.K);
    },
  
    zip: function() {
      var iterator = Prototype.K, args = $A(arguments);
      if (typeof args.last() == 'function')
        iterator = args.pop();
  
      var collections = [this].concat(args).map($A);
      return this.map(function(value, index) {
        return iterator(collections.pluck(index));
      });
    },
  
    inspect: function() {
      return '#<Enumerable:' + this.toArray().inspect() + '>';
    }
  }
  
  Object.extend(Enumerable, {
    map:     Enumerable.collect,
    find:    Enumerable.detect,
    select:  Enumerable.findAll,
    member:  Enumerable.include,
    entries: Enumerable.toArray
  });
  var $A = Array.from = function(iterable) {
    if (!iterable) return [];
    if (iterable.toArray) {
      return iterable.toArray();
    } else {
      var results = [];
      for (var i = 0, length = iterable.length; i < length; i++)
        results.push(iterable[i]);
      return results;
    }
  }
  
  Object.extend(Array.prototype, Enumerable);
  
  if (!Array.prototype._reverse)
    Array.prototype._reverse = Array.prototype.reverse;
  
  Object.extend(Array.prototype, {
    _each: function(iterator) {
      for (var i = 0, length = this.length; i < length; i++)
        iterator(this[i]);
    },
  
    clear: function() {
      this.length = 0;
      return this;
    },
  
    first: function() {
      return this[0];
    },
  
    last: function() {
      return this[this.length - 1];
    },
  
    compact: function() {
      return this.select(function(value) {
        return value != undefined || value != null;
      });
    },
  
    flatten: function() {
      return this.inject([], function(array, value) {
        return array.concat(value && value.constructor == Array ?
          value.flatten() : [value]);
      });
    },
  
    without: function() {
      var values = $A(arguments);
      return this.select(function(value) {
        return !values.include(value);
      });
    },
  
    indexOf: function(object) {
      for (var i = 0, length = this.length; i < length; i++)
        if (this[i] == object) return i;
      return -1;
    },
  
    reverse: function(inline) {
      return (inline !== false ? this : this.toArray())._reverse();
    },
  
    reduce: function() {
      return this.length > 1 ? this : this[0];
    },
  
    uniq: function() {
      return this.inject([], function(array, value) {
        return array.include(value) ? array : array.concat([value]);
      });
    },
  
    clone: function() {
      return [].concat(this);
    },
  
    inspect: function() {
      return '[' + this.map(Object.inspect).join(', ') + ']';
    }
  });
  
  Array.prototype.toArray = Array.prototype.clone;
  var Hash = {
    _each: function(iterator) {
      for (var key in this) {
        var value = this[key];
        if (typeof value == 'function') continue;
  
        var pair = [key, value];
        pair.key = key;
        pair.value = value;
        iterator(pair);
      }
    },
  
    keys: function() {
      return this.pluck('key');
    },
  
    values: function() {
      return this.pluck('value');
    },
  
    merge: function(hash) {
      return $H(hash).inject(this, function(mergedHash, pair) {
        mergedHash[pair.key] = pair.value;
        return mergedHash;
      });
    },
  
    toQueryString: function() {
      return this.map(function(pair) {
        if (!pair.value && pair.value !== 0) pair[1] = '';
        if (!pair.key) return;
        return pair.map(encodeURIComponent).join('=');
      }).join('&');
    },
  
    inspect: function() {
      return '#<Hash:{' + this.map(function(pair) {
        return pair.map(Object.inspect).join(': ');
      }).join(', ') + '}>';
    }
  }
  
  function $H(object) {
    var hash = Object.extend({}, object || {});
    Object.extend(hash, Enumerable);
    Object.extend(hash, Hash);
    return hash;
  }
  ObjectRange = Class.create();
  Object.extend(ObjectRange.prototype, Enumerable);
  Object.extend(ObjectRange.prototype, {
    initialize: function(start, end, exclusive) {
      this.start = start;
      this.end = end;
      this.exclusive = exclusive;
    },
  
    _each: function(iterator) {
      var value = this.start;
      while (this.include(value)) {
        iterator(value);
        value = value.succ();
      }
    },
  
    include: function(value) {
      if (value < this.start)
        return false;
      if (this.exclusive)
        return value < this.end;
      return value <= this.end;
    }
  });
  
  var $R = function(start, end, exclusive) {
    return new ObjectRange(start, end, exclusive);
  }
  
  var Ajax = {
    getTransport: function() {
      return Try.these(
        function() {return new XMLHttpRequest()},
        function() {return new ActiveXObject('Msxml2.XMLHTTP')},
        function() {return new ActiveXObject('Microsoft.XMLHTTP')}
      ) || false;
    },
  
    activeRequestCount: 0
  }
  
  Ajax.Responders = {
    responders: [],
  
    _each: function(iterator) {
      this.responders._each(iterator);
    },
  
    register: function(responder) {
      if (!this.include(responder))
        this.responders.push(responder);
    },
  
    unregister: function(responder) {
      this.responders = this.responders.without(responder);
    },
  
    dispatch: function(callback, request, transport, json) {
      this.each(function(responder) {
        if (typeof responder[callback] == 'function') {
          try {
            responder[callback].apply(responder, [request, transport, json]);
          } catch (e) {}
        }
      });
    }
  };
  
  Object.extend(Ajax.Responders, Enumerable);
  
  Ajax.Responders.register({
    onCreate: function() {
      Ajax.activeRequestCount++;
    },
    onComplete: function() {
      Ajax.activeRequestCount--;
    }
  });
  
  Ajax.Base = function() {};
  Ajax.Base.prototype = {
    setOptions: function(options) {
      this.options = {
        method:       'post',
        asynchronous: true,
        contentType:  'application/x-www-form-urlencoded',
        encoding:     'UTF-8',
        parameters:   ''
      }
      Object.extend(this.options, options || {});
  
      this.options.method = this.options.method.toLowerCase();
      this.options.parameters = $H(typeof this.options.parameters == 'string' ?
        this.options.parameters.toQueryParams() : this.options.parameters);
    }
  }
  
  Ajax.Request = Class.create();
  Ajax.Request.Events =
    ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];
  
  Ajax.Request.prototype = Object.extend(new Ajax.Base(), {
    initialize: function(url, options) {
      this.transport = Ajax.getTransport();
      this.setOptions(options);
      this.request(url);
    },
  
    request: function(url) {
      var params = this.options.parameters;
      if (params.any()) params['_'] = '';
  
      if (!['get', 'post'].include(this.options.method)) {
        // simulate other verbs over post
        params['_method'] = this.options.method;
        this.options.method = 'post';
      }
  
      this.url = url;
  
      // when GET, append parameters to URL
      if (this.options.method == 'get' && params.any())
        this.url += (this.url.indexOf('?') >= 0 ? '&' : '?') +
          params.toQueryString();
  
      try {
        Ajax.Responders.dispatch('onCreate', this, this.transport);
  
        this.transport.open(this.options.method.toUpperCase(), this.url,
          this.options.asynchronous, this.options.username,
          this.options.password);
  
        if (this.options.asynchronous)
          setTimeout(function() { this.respondToReadyState(1) }.bind(this), 10);
  
        this.transport.onreadystatechange = this.onStateChange.bind(this);
        this.setRequestHeaders();
  
        var body = this.options.method == 'post' ?
          (this.options.postBody || params.toQueryString()) : null;
  
        this.transport.send(body);
  
        /* Force Firefox to handle ready state 4 for synchronous requests */
        if (!this.options.asynchronous && this.transport.overrideMimeType)
          this.onStateChange();
      }
      catch (e) {
        this.dispatchException(e);
      }
    },
  
    onStateChange: function() {
      var readyState = this.transport.readyState;
      if (readyState > 1)
        this.respondToReadyState(this.transport.readyState);
    },
  
    setRequestHeaders: function() {
      var headers = {
        'X-Requested-With': 'XMLHttpRequest',
        'X-Prototype-Version': Prototype.Version,
        'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'
      };
  
      if (this.options.method == 'post') {
        headers['Content-type'] = this.options.contentType +
          (this.options.encoding ? '; charset=' + this.options.encoding : '');
  
        /* Force "Connection: close" for older Mozilla browsers to work
         * around a bug where XMLHttpRequest sends an incorrect
         * Content-length header. See Mozilla Bugzilla #246651.
         */
        if (this.transport.overrideMimeType &&
            (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005)
              headers['Connection'] = 'close';
      }
  
      // user-defined headers
      if (typeof this.options.requestHeaders == 'object') {
        var extras = this.options.requestHeaders;
  
        if (typeof extras.push == 'function')
          for (var i = 0; i < extras.length; i += 2)
            headers[extras[i]] = extras[i+1];
        else
          $H(extras).each(function(pair) { headers[pair.key] = pair.value });
      }
  
      for (var name in headers)
        this.transport.setRequestHeader(name, headers[name]);
    },
  
    success: function() {
      return !this.transport.status
          || (this.transport.status >= 200 && this.transport.status < 300);
    },
  
    respondToReadyState: function(readyState) {
      var state = Ajax.Request.Events[readyState];
      var transport = this.transport, json = this.evalJSON();
  
      if (state == 'Complete') {
        try {
          (this.options['on' + this.transport.status]
           || this.options['on' + (this.success() ? 'Success' : 'Failure')]
           || Prototype.emptyFunction)(transport, json);
        } catch (e) {
          this.dispatchException(e);
        }
      }
  
      try {
        (this.options['on' + state] || Prototype.emptyFunction)(transport, json);
        Ajax.Responders.dispatch('on' + state, this, transport, json);
      } catch (e) {
        this.dispatchException(e);
      }
  
      if (state == 'Complete') {
        if ((this.getHeader('Content-type') || '').strip().
          match(/^(text|application)\/(x-)?(java|ecma)script(;.*)?$/i))
            this.evalResponse();
  
        // avoid memory leak in MSIE: clean up
        this.transport.onreadystatechange = Prototype.emptyFunction;
      }
    },
  
    getHeader: function(name) {
      try {
        return this.transport.getResponseHeader(name);
      } catch (e) { return null }
    },
  
    evalJSON: function() {
      try {
        var json = this.getHeader('X-JSON');
        return json ? eval('(' + json + ')') : null;
      } catch (e) { return null }
    },
  
    evalResponse: function() {
      try {
        return eval(this.transport.responseText);
      } catch (e) {
        this.dispatchException(e);
      }
    },
  
    dispatchException: function(exception) {
      (this.options.onException || Prototype.emptyFunction)(this, exception);
      Ajax.Responders.dispatch('onException', this, exception);
    }
  });
  
  Ajax.Updater = Class.create();
  
  Object.extend(Object.extend(Ajax.Updater.prototype, Ajax.Request.prototype), {
    initialize: function(container, url, options) {
      this.container = {
        success: (container.success || container),
        failure: (container.failure || (container.success ? null : container))
      }
  
      this.transport = Ajax.getTransport();
      this.setOptions(options);
  
      var onComplete = this.options.onComplete || Prototype.emptyFunction;
      this.options.onComplete = (function(transport, param) {
        this.updateContent();
        onComplete(transport, param);
      }).bind(this);
  
      this.request(url);
    },
  
    updateContent: function() {
      var receiver = this.container[this.success() ? 'success' : 'failure'];
      var response = this.transport.responseText;
  
      if (!this.options.evalScripts) response = response.stripScripts();
  
      if (receiver = $(receiver)) {
        if (this.options.insertion)
          new this.options.insertion(receiver, response);
        else
          receiver.update(response);
      }
  
      if (this.success()) {
        if (this.onComplete)
          setTimeout(this.onComplete.bind(this), 10);
      }
    }
  });
  
  Ajax.PeriodicalUpdater = Class.create();
  Ajax.PeriodicalUpdater.prototype = Object.extend(new Ajax.Base(), {
    initialize: function(container, url, options) {
      this.setOptions(options);
      this.onComplete = this.options.onComplete;
  
      this.frequency = (this.options.frequency || 2);
      this.decay = (this.options.decay || 1);
  
      this.updater = {};
      this.container = container;
      this.url = url;
  
      this.start();
    },
  
    start: function() {
      this.options.onComplete = this.updateComplete.bind(this);
      this.onTimerEvent();
    },
  
    stop: function() {
      this.updater.options.onComplete = undefined;
      clearTimeout(this.timer);
      (this.onComplete || Prototype.emptyFunction).apply(this, arguments);
    },
  
    updateComplete: function(request) {
      if (this.options.decay) {
        this.decay = (request.responseText == this.lastText ?
          this.decay * this.options.decay : 1);
  
        this.lastText = request.responseText;
      }
      this.timer = setTimeout(this.onTimerEvent.bind(this),
        this.decay * this.frequency * 1000);
    },
  
    onTimerEvent: function() {
      this.updater = new Ajax.Updater(this.container, this.url, this.options);
    }
  });
  function $(element) {
    if (arguments.length > 1) {
      for (var i = 0, elements = [], length = arguments.length; i < length; i++)
        elements.push($(arguments[i]));
      return elements;
    }
    if (typeof element == 'string')
      element = document.getElementById(element);
    return Element.extend(element);
  }
  
  if (Prototype.BrowserFeatures.XPath) {
    document._getElementsByXPath = function(expression, parentElement) {
      var results = [];
      var query = document.evaluate(expression, $(parentElement) || document,
        null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
      for (var i = 0, len = query.snapshotLength; i < len; i++)
        results.push(query.snapshotItem(i));
      return results;
    }
  }
  
  document.getElementsByClassName = function(className, parentElement) {
    if (Prototype.BrowserFeatures.XPath) {
      var q = ".//*[contains(concat(' ', @class, ' '), ' " + className + " ')]";
      return document._getElementsByXPath(q, parentElement);
    } else {
      var children = ($(parentElement) || document.body).getElementsByTagName('*');
      var elements = [], child;
      for (var i = 0, length = children.length; i < length; i++) {
        child = children[i];
        if (Element.hasClassName(child, className))
          elements.push(Element.extend(child));
      }
      return elements;
    }
  }
  
  /*--------------------------------------------------------------------------*/
  
  if (!window.Element)
    var Element = new Object();
  
  Element.extend = function(element) {
    if (!element) return;
    if (_nativeExtensions || element.nodeType == 3) return element;
  
    if (!element._extended && element.tagName && element != window) {
      var methods = Object.clone(Element.Methods), cache = Element.extend.cache;
  
      if (element.tagName == 'FORM')
        Object.extend(methods, Form.Methods);
      if (['INPUT', 'TEXTAREA', 'SELECT'].include(element.tagName))
        Object.extend(methods, Form.Element.Methods);
  
      for (var property in methods) {
        var value = methods[property];
        if (typeof value == 'function')
          element[property] = cache.findOrStore(value);
      }
  
      var methods = Object.clone(Element.Methods.Simulated), cache = Element.extend.cache;
      for (var property in methods) {
        var value = methods[property];
        if ('function' == typeof value && !(property in element))
          element[property] = cache.findOrStore(value);
      }
    }
  
    element._extended = true;
    return element;
  }
  
  Element.extend.cache = {
    findOrStore: function(value) {
      return this[value] = this[value] || function() {
        return value.apply(null, [this].concat($A(arguments)));
      }
    }
  }
  
  Element.Methods = {
    visible: function(element) {
      return $(element).style.display != 'none';
    },
  
    toggle: function(element) {
      element = $(element);
      Element[Element.visible(element) ? 'hide' : 'show'](element);
      return element;
    },
  
    hide: function(element) {
      $(element).style.display = 'none';
      return element;
    },
  
    show: function(element) {
      $(element).style.display = '';
      return element;
    },
  
    remove: function(element) {
      element = $(element);
      element.parentNode.removeChild(element);
      return element;
    },
  
    update: function(element, html) {
      html = typeof html == 'undefined' ? '' : html.toString();
      $(element).innerHTML = html.stripScripts();
      setTimeout(function() {html.evalScripts()}, 10);
      return element;
    },
  
    replace: function(element, html) {
      element = $(element);
      if (element.outerHTML) {
        element.outerHTML = html.stripScripts();
      } else {
        var range = element.ownerDocument.createRange();
        range.selectNodeContents(element);
        element.parentNode.replaceChild(
          range.createContextualFragment(html.stripScripts()), element);
      }
      setTimeout(function() {html.evalScripts()}, 10);
      return element;
    },
  
    inspect: function(element) {
      element = $(element);
      var result = '<' + element.tagName.toLowerCase();
      $H({'id': 'id', 'className': 'class'}).each(function(pair) {
        var property = pair.first(), attribute = pair.last();
        var value = (element[property] || '').toString();
        if (value) result += ' ' + attribute + '=' + value.inspect(true);
      });
      return result + '>';
    },
  
    recursivelyCollect: function(element, property) {
      element = $(element);
      var elements = [];
      while (element = element[property])
        if (element.nodeType == 1)
          elements.push(Element.extend(element));
      return elements;
    },
  
    ancestors: function(element) {
      return $(element).recursivelyCollect('parentNode');
    },
  
    descendants: function(element) {
      element = $(element);
      return $A(element.getElementsByTagName('*'));
    },
  
    previousSiblings: function(element) {
      return $(element).recursivelyCollect('previousSibling');
    },
  
    nextSiblings: function(element) {
      return $(element).recursivelyCollect('nextSibling');
    },
  
    siblings: function(element) {
      element = $(element);
      return element.previousSiblings().reverse().concat(element.nextSiblings());
    },
  
    match: function(element, selector) {
      element = $(element);
      if (typeof selector == 'string')
        selector = new Selector(selector);
      return selector.match(element);
    },
  
    up: function(element, expression, index) {
      return Selector.findElement($(element).ancestors(), expression, index);
    },
  
    down: function(element, expression, index) {
      return Selector.findElement($(element).descendants(), expression, index);
    },
  
    previous: function(element, expression, index) {
      return Selector.findElement($(element).previousSiblings(), expression, index);
    },
  
    next: function(element, expression, index) {
      return Selector.findElement($(element).nextSiblings(), expression, index);
    },
  
    getElementsBySelector: function() {
      var args = $A(arguments), element = $(args.shift());
      return Selector.findChildElements(element, args);
    },
  
    getElementsByClassName: function(element, className) {
      element = $(element);
      return document.getElementsByClassName(className, element);
    },
  
    getHeight: function(element) {
      element = $(element);
      return element.offsetHeight;
    },
  
    classNames: function(element) {
      return new Element.ClassNames(element);
    },
  
    hasClassName: function(element, className) {
      if (!(element = $(element))) return;
      var elementClassName = element.className;
      if (elementClassName.length == 0) return false;
      if (elementClassName == className ||
          elementClassName.match(new RegExp("(^|\\s)" + className + "(\\s|$)")))
        return true;
      return false;
    },
  
    addClassName: function(element, className) {
      if (!(element = $(element))) return;
      Element.classNames(element).add(className);
      return element;
    },
  
    removeClassName: function(element, className) {
      if (!(element = $(element))) return;
      Element.classNames(element).remove(className);
      return element;
    },
  
    observe: function() {
      Event.observe.apply(Event, arguments);
      return $A(arguments).first();
    },
  
    stopObserving: function() {
      Event.stopObserving.apply(Event, arguments);
      return $A(arguments).first();
    },
  
    // removes whitespace-only text node children
    cleanWhitespace: function(element) {
      element = $(element);
      var node = element.firstChild;
      while (node) {
        var nextNode = node.nextSibling;
        if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
          element.removeChild(node);
        node = nextNode;
      }
      return element;
    },
  
    empty: function(element) {
      return $(element).innerHTML.match(/^\s*$/);
    },
  
    childOf: function(element, ancestor) {
      element = $(element), ancestor = $(ancestor);
      while (element = element.parentNode)
        if (element == ancestor) return true;
      return false;
    },
  
    scrollTo: function(element) {
      element = $(element);
      var x = element.x ? element.x : element.offsetLeft,
          y = element.y ? element.y : element.offsetTop;
      window.scrollTo(x, y);
      return element;
    },
  
    getStyle: function(element, style) {
      element = $(element);
      var value = element.style[style.camelize()];
      if (!value) {
        if (document.defaultView && document.defaultView.getComputedStyle) {
          var css = document.defaultView.getComputedStyle(element, null);
          value = css ? css.getPropertyValue(style) : null;
        } else if (element.currentStyle) {
          value = element.currentStyle[style.camelize()];
        }
      }
  
      if (window.opera && ['left', 'top', 'right', 'bottom'].include(style))
        if (Element.getStyle(element, 'position') == 'static') value = 'auto';
  
      return value == 'auto' ? null : value;
    },
  
    setStyle: function(element, style) {
      element = $(element);
      for (var name in style)
        element.style[name.camelize()] = style[name];
      return element;
    },
  
    getDimensions: function(element) {
      element = $(element);
      if (Element.getStyle(element, 'display') != 'none')
        return {width: element.offsetWidth, height: element.offsetHeight};
  
      // All *Width and *Height properties give 0 on elements with display none,
      // so enable the element temporarily
      var els = element.style;
      var originalVisibility = els.visibility;
      var originalPosition = els.position;
      els.visibility = 'hidden';
      els.position = 'absolute';
      els.display = '';
      var originalWidth = element.clientWidth;
      var originalHeight = element.clientHeight;
      els.display = 'none';
      els.position = originalPosition;
      els.visibility = originalVisibility;
      return {width: originalWidth, height: originalHeight};
    },
  
    makePositioned: function(element) {
      element = $(element);
      var pos = Element.getStyle(element, 'position');
      if (pos == 'static' || !pos) {
        element._madePositioned = true;
        element.style.position = 'relative';
        // Opera returns the offset relative to the positioning context, when an
        // element is position relative but top and left have not been defined
        if (window.opera) {
          element.style.top = 0;
          element.style.left = 0;
        }
      }
      return element;
    },
  
    undoPositioned: function(element) {
      element = $(element);
      if (element._madePositioned) {
        element._madePositioned = undefined;
        element.style.position =
          element.style.top =
          element.style.left =
          element.style.bottom =
          element.style.right = '';
      }
      return element;
    },
  
    makeClipping: function(element) {
      element = $(element);
      if (element._overflow) return element;
      element._overflow = element.style.overflow || 'auto';
      if ((Element.getStyle(element, 'overflow') || 'visible') != 'hidden')
        element.style.overflow = 'hidden';
      return element;
    },
  
    undoClipping: function(element) {
      element = $(element);
      if (!element._overflow) return element;
      element.style.overflow = element._overflow == 'auto' ? '' : element._overflow;
      element._overflow = null;
      return element;
    }
  }
  
  Element.Methods.Simulated = {
    hasAttribute: function(element, attribute) {
      return $(element).getAttributeNode(attribute).specified;
    }
  }
  
  // IE is missing .innerHTML support for TABLE-related elements
  if(document.all){
    Element.Methods.update = function(element, html) {
      element = $(element);
      html = typeof html == 'undefined' ? '' : html.toString();
      var tagName = element.tagName.toUpperCase();
      if (['THEAD','TBODY','TR','TD'].indexOf(tagName) > -1) {
        var div = document.createElement('div');
        switch (tagName) {
          case 'THEAD':
          case 'TBODY':
            div.innerHTML = '<table><tbody>' +  html.stripScripts() + '</tbody></table>';
            depth = 2;
            break;
          case 'TR':
            div.innerHTML = '<table><tbody><tr>' +  html.stripScripts() + '</tr></tbody></table>';
            depth = 3;
            break;
          case 'TD':
            div.innerHTML = '<table><tbody><tr><td>' +  html.stripScripts() + '</td></tr></tbody></table>';
            depth = 4;
        }
        $A(element.childNodes).each(function(node){
          element.removeChild(node)
        });
        depth.times(function(){ div = div.firstChild });
  
        $A(div.childNodes).each(
          function(node){ element.appendChild(node) });
      } else {
        element.innerHTML = html.stripScripts();
      }
      setTimeout(function() {html.evalScripts()}, 10);
      return element;
    }
  }
  
  Object.extend(Element, Element.Methods);
  
  var _nativeExtensions = false;
  
  if(/Konqueror|Safari|KHTML/.test(navigator.userAgent))
    ['', 'Form', 'Input', 'TextArea', 'Select'].each(function(tag) {
      var className = 'HTML' + tag + 'Element';
      if(window[className]) return;
      var klass = window[className] = {};
      klass.prototype = document.createElement(tag ? tag.toLowerCase() : 'div').__proto__;
    });
  
  Element.addMethods = function(methods) {
    Object.extend(Element.Methods, methods || {});
  
    function copy(methods, destination, onlyIfAbsent) {
      onlyIfAbsent = onlyIfAbsent || false;
      var cache = Element.extend.cache;
      for (var property in methods) {
        var value = methods[property];
        if (!onlyIfAbsent || !(property in destination))
          destination[property] = cache.findOrStore(value);
      }
    }
  
    if (typeof HTMLElement != 'undefined') {
      copy(Element.Methods, HTMLElement.prototype);
      copy(Element.Methods.Simulated, HTMLElement.prototype, true);
      copy(Form.Methods, HTMLFormElement.prototype);
      [HTMLInputElement, HTMLTextAreaElement, HTMLSelectElement].each(function(klass) {
        copy(Form.Element.Methods, klass.prototype);
      });
      _nativeExtensions = true;
    }
  }
  
  var Toggle = new Object();
  Toggle.display = Element.toggle;
  
  /*--------------------------------------------------------------------------*/
  
  Abstract.Insertion = function(adjacency) {
    this.adjacency = adjacency;
  }
  
  Abstract.Insertion.prototype = {
    initialize: function(element, content) {
      this.element = $(element);
      this.content = content.stripScripts();
  
      if (this.adjacency && this.element.insertAdjacentHTML) {
        try {
          this.element.insertAdjacentHTML(this.adjacency, this.content);
        } catch (e) {
          var tagName = this.element.tagName.toLowerCase();
          if (tagName == 'tbody' || tagName == 'tr') {
            this.insertContent(this.contentFromAnonymousTable());
          } else {
            throw e;
          }
        }
      } else {
        this.range = this.element.ownerDocument.createRange();
        if (this.initializeRange) this.initializeRange();
        this.insertContent([this.range.createContextualFragment(this.content)]);
      }
  
      setTimeout(function() {content.evalScripts()}, 10);
    },
  
    contentFromAnonymousTable: function() {
      var div = document.createElement('div');
      div.innerHTML = '<table><tbody>' + this.content + '</tbody></table>';
      return $A(div.childNodes[0].childNodes[0].childNodes);
    }
  }
  
  var Insertion = new Object();
  
  Insertion.Before = Class.create();
  Insertion.Before.prototype = Object.extend(new Abstract.Insertion('beforeBegin'), {
    initializeRange: function() {
      this.range.setStartBefore(this.element);
    },
  
    insertContent: function(fragments) {
      fragments.each((function(fragment) {
        this.element.parentNode.insertBefore(fragment, this.element);
      }).bind(this));
    }
  });
  
  Insertion.Top = Class.create();
  Insertion.Top.prototype = Object.extend(new Abstract.Insertion('afterBegin'), {
    initializeRange: function() {
      this.range.selectNodeContents(this.element);
      this.range.collapse(true);
    },
  
    insertContent: function(fragments) {
      fragments.reverse(false).each((function(fragment) {
        this.element.insertBefore(fragment, this.element.firstChild);
      }).bind(this));
    }
  });
  
  Insertion.Bottom = Class.create();
  Insertion.Bottom.prototype = Object.extend(new Abstract.Insertion('beforeEnd'), {
    initializeRange: function() {
      this.range.selectNodeContents(this.element);
      this.range.collapse(this.element);
    },
  
    insertContent: function(fragments) {
      fragments.each((function(fragment) {
        this.element.appendChild(fragment);
      }).bind(this));
    }
  });
  
  Insertion.After = Class.create();
  Insertion.After.prototype = Object.extend(new Abstract.Insertion('afterEnd'), {
    initializeRange: function() {
      this.range.setStartAfter(this.element);
    },
  
    insertContent: function(fragments) {
      fragments.each((function(fragment) {
        this.element.parentNode.insertBefore(fragment,
          this.element.nextSibling);
      }).bind(this));
    }
  });
  
  /*--------------------------------------------------------------------------*/
  
  Element.ClassNames = Class.create();
  Element.ClassNames.prototype = {
    initialize: function(element) {
      this.element = $(element);
    },
  
    _each: function(iterator) {
      this.element.className.split(/\s+/).select(function(name) {
        return name.length > 0;
      })._each(iterator);
    },
  
    set: function(className) {
      this.element.className = className;
    },
  
    add: function(classNameToAdd) {
      if (this.include(classNameToAdd)) return;
      this.set($A(this).concat(classNameToAdd).join(' '));
    },
  
    remove: function(classNameToRemove) {
      if (!this.include(classNameToRemove)) return;
      this.set($A(this).without(classNameToRemove).join(' '));
    },
  
    toString: function() {
      return $A(this).join(' ');
    }
  }
  
  Object.extend(Element.ClassNames.prototype, Enumerable);
  var Selector = Class.create();
  Selector.prototype = {
    initialize: function(expression) {
      this.params = {classNames: []};
      this.expression = expression.toString().strip();
      this.parseExpression();
      this.compileMatcher();
    },
  
    parseExpression: function() {
      function abort(message) { throw 'Parse error in selector: ' + message; }
  
      if (this.expression == '')  abort('empty expression');
  
      var params = this.params, expr = this.expression, match, modifier, clause, rest;
      while (match = expr.match(/^(.*)\[([a-z0-9_:-]+?)(?:([~\|!]?=)(?:"([^"]*)"|([^\]\s]*)))?\]$/i)) {
        params.attributes = params.attributes || [];
        params.attributes.push({name: match[2], operator: match[3], value: match[4] || match[5] || ''});
        expr = match[1];
      }
  
      if (expr == '*') return this.params.wildcard = true;
  
      while (match = expr.match(/^([^a-z0-9_-])?([a-z0-9_-]+)(.*)/i)) {
        modifier = match[1], clause = match[2], rest = match[3];
        switch (modifier) {
          case '#':       params.id = clause; break;
          case '.':       params.classNames.push(clause); break;
          case '':
          case undefined: params.tagName = clause.toUpperCase(); break;
          default:        abort(expr.inspect());
        }
        expr = rest;
      }
  
      if (expr.length > 0) abort(expr.inspect());
    },
  
    buildMatchExpression: function() {
      var params = this.params, conditions = [], clause;
  
      if (params.wildcard)
        conditions.push('true');
      if (clause = params.id)
        conditions.push('element.id == ' + clause.inspect());
      if (clause = params.tagName)
        conditions.push('element.tagName.toUpperCase() == ' + clause.inspect());
      if ((clause = params.classNames).length > 0)
        for (var i = 0; i < clause.length; i++)
          conditions.push('Element.hasClassName(element, ' + clause[i].inspect() + ')');
      if (clause = params.attributes) {
        clause.each(function(attribute) {
          var value = 'element.getAttribute(' + attribute.name.inspect() + ')';
          var splitValueBy = function(delimiter) {
            return value + ' && ' + value + '.split(' + delimiter.inspect() + ')';
          }
  
          switch (attribute.operator) {
            case '=':       conditions.push(value + ' == ' + attribute.value.inspect()); break;
            case '~=':      conditions.push(splitValueBy(' ') + '.include(' + attribute.value.inspect() + ')'); break;
            case '|=':      conditions.push(
                              splitValueBy('-') + '.first().toUpperCase() == ' + attribute.value.toUpperCase().inspect()
                            ); break;
            case '!=':      conditions.push(value + ' != ' + attribute.value.inspect()); break;
            case '':
            case undefined: conditions.push(value + ' != null'); break;
            default:        throw 'Unknown operator ' + attribute.operator + ' in selector';
          }
        });
      }
  
      return conditions.join(' && ');
    },
  
    compileMatcher: function() {
      this.match = new Function('element', 'if (!element.tagName) return false; \
        return ' + this.buildMatchExpression());
    },
  
    findElements: function(scope) {
      var element;
  
      if (element = $(this.params.id))
        if (this.match(element))
          if (!scope || Element.childOf(element, scope))
            return [element];
  
      scope = (scope || document).getElementsByTagName(this.params.tagName || '*');
  
      var results = [];
      for (var i = 0, length = scope.length; i < length; i++)
        if (this.match(element = scope[i]))
          results.push(Element.extend(element));
  
      return results;
    },
  
    toString: function() {
      return this.expression;
    }
  }
  
  Object.extend(Selector, {
    matchElements: function(elements, expression) {
      var selector = new Selector(expression);
      return elements.select(selector.match.bind(selector)).collect(Element.extend);
    },
  
    findElement: function(elements, expression, index) {
      if (typeof expression == 'number') index = expression, expression = false;
      return Selector.matchElements(elements, expression || '*')[index || 0];
    },
  
    findChildElements: function(element, expressions) {
      return expressions.map(function(expression) {
        return expression.strip().split(/\s+/).inject([null], function(results, expr) {
          var selector = new Selector(expr);
          return results.inject([], function(elements, result) {
            return elements.concat(selector.findElements(result || element));
          });
        });
      }).flatten();
    }
  });
  
  function $$() {
    return Selector.findChildElements(document, $A(arguments));
  }
  var Form = {
    reset: function(form) {
      $(form).reset();
      return form;
    },
  
    serializeElements: function(elements) {
      return elements.inject([], function(queryComponents, element) {
        var queryComponent = Form.Element.serialize(element);
        if (queryComponent) queryComponents.push(queryComponent);
        return queryComponents;
      }).join('&');
    }
  };
  
  Form.Methods = {
    serialize: function(form) {
      return Form.serializeElements($(form).getElements());
    },
  
    getElements: function(form) {
      return $A($(form).getElementsByTagName('*')).inject([],
        function(elements, child) {
          if (Form.Element.Serializers[child.tagName.toLowerCase()])
            elements.push(Element.extend(child));
          return elements;
        }
      );
    },
  
    getInputs: function(form, typeName, name) {
      form = $(form);
      var inputs = form.getElementsByTagName('input');
  
      if (!typeName && !name)
        return inputs;
  
      var matchingInputs = new Array();
      for (var i = 0, length = inputs.length; i < length; i++) {
        var input = inputs[i];
        if ((typeName && input.type != typeName) ||
            (name && input.name != name))
          continue;
        matchingInputs.push(Element.extend(input));
      }
  
      return matchingInputs;
    },
  
    disable: function(form) {
      form = $(form);
      form.getElements().each(function(element) {
        element.blur();
        element.disabled = 'true';
      });
      return form;
    },
  
    enable: function(form) {
      form = $(form);
      form.getElements().each(function(element) {
        element.disabled = '';
      });
      return form;
    },
  
    findFirstElement: function(form) {
      return $(form).getElements().find(function(element) {
        return element.type != 'hidden' && !element.disabled &&
          ['input', 'select', 'textarea'].include(element.tagName.toLowerCase());
      });
    },
  
    focusFirstElement: function(form) {
      form = $(form);
      form.findFirstElement().activate();
      return form;
    }
  }
  
  Object.extend(Form, Form.Methods);
  
  /*--------------------------------------------------------------------------*/
  
  Form.Element = {
    focus: function(element) {
      $(element).focus();
      return element;
    },
  
    select: function(element) {
      $(element).select();
      return element;
    }
  }
  
  Form.Element.Methods = {
    serialize: function(element) {
      element = $(element);
      if (element.disabled) return '';
      var method = element.tagName.toLowerCase();
      var parameter = Form.Element.Serializers[method](element);
  
      if (parameter) {
        var key = encodeURIComponent(parameter[0]);
        if (key.length == 0) return;
  
        if (parameter[1].constructor != Array)
          parameter[1] = [parameter[1]];
  
        return parameter[1].map(function(value) {
          return key + '=' + encodeURIComponent(value);
        }).join('&');
      }
    },
  
    getValue: function(element) {
      element = $(element);
      var method = element.tagName.toLowerCase();
      var parameter = Form.Element.Serializers[method](element);
  
      if (parameter)
        return parameter[1];
    },
  
    clear: function(element) {
      $(element).value = '';
      return element;
    },
  
    present: function(element) {
      return $(element).value != '';
    },
  
    activate: function(element) {
      element = $(element);
      element.focus();
      if (element.select)
        element.select();
      return element;
    },
  
    disable: function(element) {
      element = $(element);
      element.disabled = true;
      return element;
    },
  
    enable: function(element) {
      element = $(element);
      element.blur();
      element.disabled = false;
      return element;
    }
  }
  
  Object.extend(Form.Element, Form.Element.Methods);
  var Field = Form.Element;
  
  /*--------------------------------------------------------------------------*/
  
  Form.Element.Serializers = {
    input: function(element) {
      switch (element.type.toLowerCase()) {
        case 'checkbox':
        case 'radio':
          return Form.Element.Serializers.inputSelector(element);
        default:
          return Form.Element.Serializers.textarea(element);
      }
      return false;
    },
  
    inputSelector: function(element) {
      if (element.checked)
        return [element.name, element.value];
    },
  
    textarea: function(element) {
      return [element.name, element.value];
    },
  
    select: function(element) {
      return Form.Element.Serializers[element.type == 'select-one' ?
        'selectOne' : 'selectMany'](element);
    },
  
    selectOne: function(element) {
      var value = '', opt, index = element.selectedIndex;
      if (index >= 0) {
        opt = Element.extend(element.options[index]);
        // Uses the new potential extension if hasAttribute isn't native.
        value = opt.hasAttribute('value') ? opt.value : opt.text;
      }
      return [element.name, value];
    },
  
    selectMany: function(element) {
      var value = [];
      for (var i = 0; i < element.length; i++) {
        var opt = Element.extend(element.options[i]);
        if (opt.selected)
          // Uses the new potential extension if hasAttribute isn't native.
          value.push(opt.hasAttribute('value') ? opt.value : opt.text);
      }
      return [element.name, value];
    }
  }
  
  /*--------------------------------------------------------------------------*/
  
  var $F = Form.Element.getValue;
  
  /*--------------------------------------------------------------------------*/
  
  Abstract.TimedObserver = function() {}
  Abstract.TimedObserver.prototype = {
    initialize: function(element, frequency, callback) {
      this.frequency = frequency;
      this.element   = $(element);
      this.callback  = callback;
  
      this.lastValue = this.getValue();
      this.registerCallback();
    },
  
    registerCallback: function() {
      setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
    },
  
    onTimerEvent: function() {
      var value = this.getValue();
      if (this.lastValue != value) {
        this.callback(this.element, value);
        this.lastValue = value;
      }
    }
  }
  
  Form.Element.Observer = Class.create();
  Form.Element.Observer.prototype = Object.extend(new Abstract.TimedObserver(), {
    getValue: function() {
      return Form.Element.getValue(this.element);
    }
  });
  
  Form.Observer = Class.create();
  Form.Observer.prototype = Object.extend(new Abstract.TimedObserver(), {
    getValue: function() {
      return Form.serialize(this.element);
    }
  });
  
  /*--------------------------------------------------------------------------*/
  
  Abstract.EventObserver = function() {}
  Abstract.EventObserver.prototype = {
    initialize: function(element, callback) {
      this.element  = $(element);
      this.callback = callback;
  
      this.lastValue = this.getValue();
      if (this.element.tagName.toLowerCase() == 'form')
        this.registerFormCallbacks();
      else
        this.registerCallback(this.element);
    },
  
    onElementEvent: function() {
      var value = this.getValue();
      if (this.lastValue != value) {
        this.callback(this.element, value);
        this.lastValue = value;
      }
    },
  
    registerFormCallbacks: function() {
      Form.getElements(this.element).each(this.registerCallback.bind(this));
    },
  
    registerCallback: function(element) {
      if (element.type) {
        switch (element.type.toLowerCase()) {
          case 'checkbox':
          case 'radio':
            Event.observe(element, 'click', this.onElementEvent.bind(this));
            break;
          default:
            Event.observe(element, 'change', this.onElementEvent.bind(this));
            break;
        }
      }
    }
  }
  
  Form.Element.EventObserver = Class.create();
  Form.Element.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), {
    getValue: function() {
      return Form.Element.getValue(this.element);
    }
  });
  
  Form.EventObserver = Class.create();
  Form.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), {
    getValue: function() {
      return Form.serialize(this.element);
    }
  });
  if (!window.Event) {
    var Event = new Object();
  }
  
  Object.extend(Event, {
    KEY_BACKSPACE: 8,
    KEY_TAB:       9,
    KEY_RETURN:   13,
    KEY_ESC:      27,
    KEY_LEFT:     37,
    KEY_UP:       38,
    KEY_RIGHT:    39,
    KEY_DOWN:     40,
    KEY_DELETE:   46,
    KEY_HOME:     36,
    KEY_END:      35,
    KEY_PAGEUP:   33,
    KEY_PAGEDOWN: 34,
  
    element: function(event) {
      return event.target || event.srcElement;
    },
  
    isLeftClick: function(event) {
      return (((event.which) && (event.which == 1)) ||
              ((event.button) && (event.button == 1)));
    },
  
    pointerX: function(event) {
      return event.pageX || (event.clientX +
        (document.documentElement.scrollLeft || document.body.scrollLeft));
    },
  
    pointerY: function(event) {
      return event.pageY || (event.clientY +
        (document.documentElement.scrollTop || document.body.scrollTop));
    },
  
    stop: function(event) {
      if (event.preventDefault) {
        event.preventDefault();
        event.stopPropagation();
      } else {
        event.returnValue = false;
        event.cancelBubble = true;
      }
    },
  
    // find the first node with the given tagName, starting from the
    // node the event was triggered on; traverses the DOM upwards
    findElement: function(event, tagName) {
      var element = Event.element(event);
      while (element.parentNode && (!element.tagName ||
          (element.tagName.toUpperCase() != tagName.toUpperCase())))
        element = element.parentNode;
      return element;
    },
  
    observers: false,
  
    _observeAndCache: function(element, name, observer, useCapture) {
      if (!this.observers) this.observers = [];
      if (element.addEventListener) {
        this.observers.push([element, name, observer, useCapture]);
        element.addEventListener(name, observer, useCapture);
      } else if (element.attachEvent) {
        this.observers.push([element, name, observer, useCapture]);
        element.attachEvent('on' + name, observer);
      }
    },
  
    unloadCache: function() {
      if (!Event.observers) return;
      for (var i = 0, length = Event.observers.length; i < length; i++) {
        Event.stopObserving.apply(this, Event.observers[i]);
        Event.observers[i][0] = null;
      }
      Event.observers = false;
    },
  
    observe: function(element, name, observer, useCapture) {
      element = $(element);
      useCapture = useCapture || false;
  
      if (name == 'keypress' &&
          (navigator.appVersion.match(/Konqueror|Safari|KHTML/)
          || element.attachEvent))
        name = 'keydown';
  
      Event._observeAndCache(element, name, observer, useCapture);
    },
  
    stopObserving: function(element, name, observer, useCapture) {
      element = $(element);
      useCapture = useCapture || false;
  
      if (name == 'keypress' &&
          (navigator.appVersion.match(/Konqueror|Safari|KHTML/)
          || element.detachEvent))
        name = 'keydown';
  
      if (element.removeEventListener) {
        element.removeEventListener(name, observer, useCapture);
      } else if (element.detachEvent) {
        try {
          element.detachEvent('on' + name, observer);
        } catch (e) {}
      }
    }
  });
  
  /* prevent memory leaks in IE */
  if (navigator.appVersion.match(/\bMSIE\b/))
    Event.observe(window, 'unload', Event.unloadCache, false);
  var Position = {
    // set to true if needed, warning: firefox performance problems
    // NOT neeeded for page scrolling, only if draggable contained in
    // scrollable elements
    includeScrollOffsets: false,
  
    // must be called before calling withinIncludingScrolloffset, every time the
    // page is scrolled
    prepare: function() {
      this.deltaX =  window.pageXOffset
                  || document.documentElement.scrollLeft
                  || document.body.scrollLeft
                  || 0;
      this.deltaY =  window.pageYOffset
                  || document.documentElement.scrollTop
                  || document.body.scrollTop
                  || 0;
    },
  
    realOffset: function(element) {
      var valueT = 0, valueL = 0;
      do {
        valueT += element.scrollTop  || 0;
        valueL += element.scrollLeft || 0;
        element = element.parentNode;
      } while (element);
      return [valueL, valueT];
    },
  
    cumulativeOffset: function(element) {
      var valueT = 0, valueL = 0;
      do {
        valueT += element.offsetTop  || 0;
        valueL += element.offsetLeft || 0;
        element = element.offsetParent;
      } while (element);
      return [valueL, valueT];
    },
  
    positionedOffset: function(element) {
      var valueT = 0, valueL = 0;
      do {
        valueT += element.offsetTop  || 0;
        valueL += element.offsetLeft || 0;
        element = element.offsetParent;
        if (element) {
          if(element.tagName=='BODY') break;
          var p = Element.getStyle(element, 'position');
          if (p == 'relative' || p == 'absolute') break;
        }
      } while (element);
      return [valueL, valueT];
    },
  
    offsetParent: function(element) {
      if (element.offsetParent) return element.offsetParent;
      if (element == document.body) return element;
  
      while ((element = element.parentNode) && element != document.body)
        if (Element.getStyle(element, 'position') != 'static')
          return element;
  
      return document.body;
    },
  
    // caches x/y coordinate pair to use with overlap
    within: function(element, x, y) {
      if (this.includeScrollOffsets)
        return this.withinIncludingScrolloffsets(element, x, y);
      this.xcomp = x;
      this.ycomp = y;
      this.offset = this.cumulativeOffset(element);
  
      return (y >= this.offset[1] &&
              y <  this.offset[1] + element.offsetHeight &&
              x >= this.offset[0] &&
              x <  this.offset[0] + element.offsetWidth);
    },
  
    withinIncludingScrolloffsets: function(element, x, y) {
      var offsetcache = this.realOffset(element);
  
      this.xcomp = x + offsetcache[0] - this.deltaX;
      this.ycomp = y + offsetcache[1] - this.deltaY;
      this.offset = this.cumulativeOffset(element);
  
      return (this.ycomp >= this.offset[1] &&
              this.ycomp <  this.offset[1] + element.offsetHeight &&
              this.xcomp >= this.offset[0] &&
              this.xcomp <  this.offset[0] + element.offsetWidth);
    },
  
    // within must be called directly before
    overlap: function(mode, element) {
      if (!mode) return 0;
      if (mode == 'vertical')
        return ((this.offset[1] + element.offsetHeight) - this.ycomp) /
          element.offsetHeight;
      if (mode == 'horizontal')
        return ((this.offset[0] + element.offsetWidth) - this.xcomp) /
          element.offsetWidth;
    },
  
    page: function(forElement) {
      var valueT = 0, valueL = 0;
  
      var element = forElement;
      do {
        valueT += element.offsetTop  || 0;
        valueL += element.offsetLeft || 0;
  
        // Safari fix
        if (element.offsetParent==document.body)
          if (Element.getStyle(element,'position')=='absolute') break;
  
      } while (element = element.offsetParent);
  
      element = forElement;
      do {
        if (!window.opera || element.tagName=='BODY') {
          valueT -= element.scrollTop  || 0;
          valueL -= element.scrollLeft || 0;
        }
      } while (element = element.parentNode);
  
      return [valueL, valueT];
    },
  
    clone: function(source, target) {
      var options = Object.extend({
        setLeft:    true,
        setTop:     true,
        setWidth:   true,
        setHeight:  true,
        offsetTop:  0,
        offsetLeft: 0
      }, arguments[2] || {})
  
      // find page position of source
      source = $(source);
      var p = Position.page(source);
  
      // find coordinate system to use
      target = $(target);
      var delta = [0, 0];
      var parent = null;
      // delta [0,0] will do fine with position: fixed elements,
      // position:absolute needs offsetParent deltas
      if (Element.getStyle(target,'position') == 'absolute') {
        parent = Position.offsetParent(target);
        delta = Position.page(parent);
      }
  
      // correct by body offsets (fixes Safari)
      if (parent == document.body) {
        delta[0] -= document.body.offsetLeft;
        delta[1] -= document.body.offsetTop;
      }
  
      // set position
      if(options.setLeft)   target.style.left  = (p[0] - delta[0] + options.offsetLeft) + 'px';
      if(options.setTop)    target.style.top   = (p[1] - delta[1] + options.offsetTop) + 'px';
      if(options.setWidth)  target.style.width = source.offsetWidth + 'px';
      if(options.setHeight) target.style.height = source.offsetHeight + 'px';
    },
  
    absolutize: function(element) {
      element = $(element);
      if (element.style.position == 'absolute') return;
      Position.prepare();
  
      var offsets = Position.positionedOffset(element);
      var top     = offsets[1];
      var left    = offsets[0];
      var width   = element.clientWidth;
      var height  = element.clientHeight;
  
      element._originalLeft   = left - parseFloat(element.style.left  || 0);
      element._originalTop    = top  - parseFloat(element.style.top || 0);
      element._originalWidth  = element.style.width;
      element._originalHeight = element.style.height;
  
      element.style.position = 'absolute';
      element.style.top    = top + 'px';;
      element.style.left   = left + 'px';;
      element.style.width  = width + 'px';;
      element.style.height = height + 'px';;
    },
  
    relativize: function(element) {
      element = $(element);
      if (element.style.position == 'relative') return;
      Position.prepare();
  
      element.style.position = 'relative';
      var top  = parseFloat(element.style.top  || 0) - (element._originalTop || 0);
      var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0);
  
      element.style.top    = top + 'px';
      element.style.left   = left + 'px';
      element.style.height = element._originalHeight;
      element.style.width  = element._originalWidth;
    }
  }
  
  // Safari returns margins on body which is incorrect if the child is absolutely
  // positioned.  For performance reasons, redefine Position.cumulativeOffset for
  // KHTML/WebKit only.
  if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) {
    Position.cumulativeOffset = function(element) {
      var valueT = 0, valueL = 0;
      do {
        valueT += element.offsetTop  || 0;
        valueL += element.offsetLeft || 0;
        if (element.offsetParent == document.body)
          if (Element.getStyle(element, 'position') == 'absolute') break;
  
        element = element.offsetParent;
      } while (element);
  
      return [valueL, valueT];
    }
  }
  
  Element.addMethods();
  
  
  1.1                  moniwiki/local/js/scriptaculous.js
  
  Index: scriptaculous.js
  ===================================================================
  // script.aculo.us scriptaculous.js v1.6.5, Wed Nov 08 14:17:49 CET 2006
  
  // Copyright (c) 2005, 2006 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
  // 
  // Permission is hereby granted, free of charge, to any person obtaining
  // a copy of this software and associated documentation files (the
  // "Software"), to deal in the Software without restriction, including
  // without limitation the rights to use, copy, modify, merge, publish,
  // distribute, sublicense, and/or sell copies of the Software, and to
  // permit persons to whom the Software is furnished to do so, subject to
  // the following conditions:
  // 
  // The above copyright notice and this permission notice shall be
  // included in all copies or substantial portions of the Software.
  //
  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
  // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
  // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  //
  // For details, see the script.aculo.us web site: http://script.aculo.us/
  
  var Scriptaculous = {
    Version: '1.6.5',
    require: function(libraryName) {
      // inserting via DOM fails in Safari 2.0, so brute force approach
      document.write('<script type="text/javascript" src="'+libraryName+'"></script>');
    },
    load: function() {
      if((typeof Prototype=='undefined') || 
         (typeof Element == 'undefined') || 
         (typeof Element.Methods=='undefined') ||
         parseFloat(Prototype.Version.split(".")[0] + "." +
                    Prototype.Version.split(".")[1]) < 1.5)
         throw("script.aculo.us requires the Prototype JavaScript framework >= 1.5.0");
      
      $A(document.getElementsByTagName("script")).findAll( function(s) {
        return (s.src && s.src.match(/scriptaculous\.js(\?.*)?$/))
      }).each( function(s) {
        var path = s.src.replace(/scriptaculous\.js(\?.*)?$/,'');
        var includes = s.src.match(/\?.*load=([a-z,]*)/);
        (includes ? includes[1] : 'builder,effects,dragdrop,controls,slider').split(',').each(
         function(include) { Scriptaculous.require(path+include+'.js') });
      });
    }
  }
  
  Scriptaculous.load();
  
  


wkpark      2006/12/21 07:58:07

  Modified:    .        wiki.php
  Log:
  support popup window style (without header/actions)
  support subindex for WikiSubPages (set $use_subindex in the config.php)
  
  Revision  Changes    Path
  1.338     +33 -8     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.337
  retrieving revision 1.338
  diff -u -r1.337 -r1.338
  --- wiki.php	15 Dec 2006 14:53:56 -0000	1.337
  +++ wiki.php	20 Dec 2006 22:58:07 -0000	1.338
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.337 2006/12/15 14:53:56 wkpark Exp $
  +// $Id: wiki.php,v 1.338 2006/12/20 22:58:07 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.337 $',1,-1);
  +$_revision = substr('$Revision: 1.338 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -936,14 +936,17 @@
       return $pages;
     }
   
  -  function getLikePages($needle) {
  +  function getLikePages($needle,$count=100,$opts='') {
       $pages= array();
   
  +    if (!$needle) return false;
       $all= $this->getPageLists();
   
       foreach ($all as $page) {
  -      if (preg_match("/($needle)/",$page))
  -        $pages[] = $page;
  +      if (preg_match("/$needle/".$opts,$page)) {
  +        $pages[] = $page; $count--;
  +      }
  +      if ($count < 0) break;
       }
       return $pages;
     }
  @@ -3526,6 +3529,20 @@
           $keywords=htmlspecialchars($keywords);
           $keywords="<meta name=\"keywords\" content=\"$keywords\" />";
         }
  +      # find sub pages
  +      if ($DBInfo->use_subindex and !$options['action']) {
  +        $scache=new Cache_text('subpages');
  +        if (!($subs=$scache->exists($this->page->name))) {
  +          $rule=_preg_search_escape($this->page->name);
  +          $subs=$DBInfo->getLikePages('^'.$rule.'\/',1);
  +          if ($subs) $scache->update($this->page->name,1);
  +        }
  +        if ($subs) {
  +          $this->subindex="<fieldset id='wikiSubIndex'>".
  +            "<legend title='[+]' onclick='javascript:toggleSubIndex(\"wikiSubIndex\")'>".
  +            "</legend></fieldset>\n";
  +        }
  +      }
   
         if (empty($options['title'])) {
           $options['title']=$this->pi['#title'] ? $this->pi['#title']:
  @@ -3708,8 +3725,10 @@
       
       $menus=$this->get_actions($args,$options);
   
  -    if (!$DBInfo->hide_actions or
  -      ($DBInfo->hide_actions and $options['id']!='Anonymous')) {
  +    $hide_actions= $this->popup + $DBInfo->hide_actions;
  +
  +    if (!$hide_actions or
  +      ($hide_actions and $options['id']!='Anonymous')) {
         if (!$this->css_friendly) {
           $menu=$this->menu_bra.implode($this->menu_sep,$menus).$this->menu_cat;
         } else {
  @@ -3977,7 +3996,7 @@
         print $msg;
         print "</div>\n";
       }
  -    if (empty($themeurl) or !$this->_newtheme) {
  +    if (!$this->popup and (empty($themeurl) or !$this->_newtheme)) {
         print $DBInfo->hr;
         if ($options['trail']) {
           print "<div id='wikiTrailer'>\n";
  @@ -3989,8 +4008,11 @@
           print $this->origin;
           print "</div>\n";
         }
  +      print $this->subindex;
       }
       print "<div id='wikiBody'>\n";
  +    #if ($this->subindex and !$this->popup and (empty($themeurl) or !$this->_newtheme))
  +    #  print $this->subindex;
       $this->pagelinks=$saved_pagelinks;
     }
   
  @@ -4294,12 +4316,14 @@
         }
       }
       $goto=$_POST['goto'];
  +    $popup=$_POST['popup'];
     } else if ($_SERVER['REQUEST_METHOD']=="GET") {
       $action=$_GET['action'];
       $value=$_GET['value'];
       $goto=$_GET['goto'];
       $rev=$_GET['rev'];
       $refresh=($options['id'] == 'Anonymous') ? 0:$_GET['refresh'];
  +    $popup=$_GET['popup'];
     }
     if (($p=strpos($action,'/'))!==false) {
       $action_mode=substr($action,$p+1);
  @@ -4314,6 +4338,7 @@
   
     $formatter = new Formatter($page,$options);
     $formatter->refresh=$refresh;
  +  $formatter->popup=$popup;
     $formatter->macro_repl('InterWiki','',array('init'=>1));
     $formatter->tz_offset=$options['tz_offset'];
   
  
  
  


wkpark      2006/12/21 07:58:55

  Modified:    plugin   pagelist.php
  Log:
  support subindex
  
  Revision  Changes    Path
  1.3       +36 -17    moniwiki/plugin/pagelist.php
  
  Index: pagelist.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/pagelist.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- pagelist.php	5 Aug 2006 06:03:12 -0000	1.2
  +++ pagelist.php	20 Dec 2006 22:58:55 -0000	1.3
  @@ -5,9 +5,9 @@
   //
   // Usage: [[PageList(a needle for list,dir,info,date]]
   //
  -// $Id: pagelist.php,v 1.2 2006/08/05 06:03:12 wkpark Exp $
  +// $Id: pagelist.php,v 1.3 2006/12/20 22:58:55 wkpark Exp $
   
  -function macro_PageList($formatter,$arg="") {
  +function macro_PageList($formatter,$arg="",$options=array()) {
     global $DBInfo;
   
     preg_match("/([^,]*)(\s*,\s*)?(.*)?$/",$arg,$match);
  @@ -16,15 +16,21 @@
       $arg='';
     } else if ($match) {
       $arg=$match[1];
  -    $options=array();
  -    if ($match[3]) $options=explode(",",$match[3]);
  -    if (in_array('date',$options)) $options['date']=1;
  -    if (in_array('dir',$options)) $options['dir']=1;
  -    if (in_array('info',$options)) $options['info']=1;
  -    else if ($arg and (in_array('metawiki',$options) or in_array('m',$options)))
  +    $opts=array();
  +    if ($match[3]) $opts=explode(",",$match[3]);
  +    if (in_array('date',$opts)) $options['date']=1;
  +    if (in_array('dir',$opts)) $options['dir']=1;
  +    if (in_array('subdir',$opts)) $options['subdir']=1;
  +    if (in_array('info',$opts)) $options['info']=1;
  +    else if ($arg and (in_array('metawiki',$opts) or in_array('m',$opts)))
         $options['metawiki']=1;
     }
  -  $needle=_preg_search_escape($arg);
  +
  +  if ($options['subdir']) {
  +    $needle=_preg_search_escape($formatter->page->name);
  +    $needle='^'.$needle.'\/';
  +  } else
  +    $needle=_preg_search_escape($arg);
   
     $test=@preg_match("/$needle/","",$match);
     if ($test === false) {
  @@ -64,13 +70,22 @@
         if ($matches) $hits[]=$page;
       }
       sort($hits);
  -    if ($options['dir']) {
  +    if ($options['dir'] or $options['subdir']) {
           $dirs=array();
           $files=array();
  +        if ($options['subdir']) $plen=strlen($formatter->page->name)+1;
  +        else $plen=0;
           foreach ($hits as $pagename) {
  -            if (($p=strpos($pagename,'/'))!==false) {
  -                $name=substr($pagename,0,$p);
  -                $dirs[$name]=$name;
  +            if (($rp=strrpos($pagename,'/'))!==false) {
  +                $p=strpos($pagename,'/');
  +                $name=substr($pagename,$plen);
  +                $dum=explode('/',$name);
  +                if (sizeof($dum) > 1) {
  +                    $dirname=substr($pagename,0,$rp);
  +                    $dirs[$dirname]=substr($dirname,$p+1);
  +                } else {
  +                    $files[$pagename]=$name;
  +                }
                   continue;
               }
               $files[$pagename]=$pagename;
  @@ -80,10 +95,10 @@
           $dicon="<img src='$icon_dir/folder-16.png' width='16px'/>";
           $ficon="<img src='$icon_dir/text-16.png' width='16px'/>";
           $now=time();
  -        foreach ($dirs as $pg) {
  +        foreach ($dirs as $pg=>$name) {
               $out.= '<tr><td>'.$dicon.'</td><td>'.
                   $formatter->link_tag(_rawurlencode($pg),"",
  -	    htmlspecialchars($pg)).'</td>';
  +	    htmlspecialchars($name)).'</td>';
               if ($options['info']) {
                   $p=new WikiPage($pg);
                   $mtime=$p->mtime();
  @@ -97,10 +112,10 @@
               $out.="</tr>\n";
               if (isset($files[$pg])) unset($files[$pg]);
           }
  -        foreach ($files as $pg) {
  +        foreach ($files as $pg=>$name) {
               $out.= '<tr><td>'.$ficon.'</td><td>'.
                   $formatter->link_tag(_rawurlencode($pg),"",
  -	    htmlspecialchars($pg)).'</td>';
  +	    htmlspecialchars($name)).'</td>';
               if ($options['info']) {
                   $p=new WikiPage($pg);
                   $mtime=$p->mtime();
  @@ -126,5 +141,9 @@
     return $out;
   }
   
  +function do_pagelist($formatter,$options=array()) {
  +  print macro_PageList($formatter,'',$options);
  +}
  +
   // vim:et:sts=2:
   ?>
  
  
  


wkpark      2006/12/21 08:00:42

  Modified:    plugin   UploadForm.php UploadedFiles.php SWFUpload.php
                        UploadFile.php
  Log:
  use popup window
  UploadFile: support SWFUpload
  
  Revision  Changes    Path
  1.8       +2 -1      moniwiki/plugin/UploadForm.php
  
  Index: UploadForm.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadForm.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- UploadForm.php	16 Dec 2006 00:01:30 -0000	1.7
  +++ UploadForm.php	20 Dec 2006 23:00:42 -0000	1.8
  @@ -5,7 +5,7 @@
   //
   // Usage: [[UploadForm]]
   //
  -// $Id: UploadForm.php,v 1.7 2006/12/16 00:01:30 wkpark Exp $
  +// $Id: UploadForm.php,v 1.8 2006/12/20 23:00:42 wkpark Exp $
   
   function macro_UploadForm($formatter,$value) {
       global $DBInfo;
  @@ -71,6 +71,7 @@
         <td>
     <input type='button' onclick="addRow('upload$id')" value="add a file" />
     <input type="hidden" name="uploadid" value="upload$id" />
  +  <input type="hidden" name="popup" value="1" />
     <input type="submit" name="upload" value="Upload files" />
     <input type="reset" name="reset" value="Reset" />
         </td>
  
  
  
  1.18      +2 -2      moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- UploadedFiles.php	16 Dec 2006 00:05:40 -0000	1.17
  +++ UploadedFiles.php	20 Dec 2006 23:00:42 -0000	1.18
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadedFiles plugin for the MoniWiki
   //
  -// $Id: UploadedFiles.php,v 1.17 2006/12/16 00:05:40 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.18 2006/12/20 23:00:42 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     $list=macro_UploadedFiles($formatter,$options['page'],$options);
  @@ -262,7 +262,7 @@
           $attr=' target="_blank"';
           $extra='&amp;tag=1';
         }
  -      $link=$formatter->link_tag('UploadFile',"?action=uploadedfiles&amp;value=top$extra",
  +      $link=$formatter->link_tag('UploadFile',"?action=uploadedfiles&amp;value=top&amp;popup=1$extra",
           "<img src='".$icon_dir."/32/up.png' style='border:0' class='upper' alt='..' />",$attr);
         $date=date("Y-m-d",filemtime($dir."/.."));
         $out.="<tr><td class='wiki'>&nbsp;</td><td class='wiki'>$link</td><td align='right' class='wiki'>&nbsp;</td><td class='wiki'>$date</td></tr>\n";
  
  
  
  1.4       +11 -9     moniwiki/plugin/SWFUpload.php
  
  Index: SWFUpload.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SWFUpload.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- SWFUpload.php	15 Dec 2006 14:43:49 -0000	1.3
  +++ SWFUpload.php	20 Dec 2006 23:00:42 -0000	1.4
  @@ -8,12 +8,12 @@
   // Name: SWF Upload
   // Description: SWF Upload Plugin
   // URL: http://labb.dev.mammon.se/swfupload/ MoniWikiDev:SWFUpload
  -// Version: $Revision: 1.3 $
  +// Version: $Revision: 1.4 $
   // License: GPL
   //
   // Usage: [[SWFUpload]]
   //
  -// $Id: SWFUpload.php,v 1.3 2006/12/15 14:43:49 wkpark Exp $
  +// $Id: SWFUpload.php,v 1.4 2006/12/20 23:00:42 wkpark Exp $
   
   function macro_SWFUpload($formatter,$value) {
       global $DBInfo;
  @@ -124,10 +124,11 @@
   	</tr><tr>
   	<td>
   	<div id="filesDisplay">
  -                <form method='POST' action='$action'>
  +                <form target='_blank' method='POST' action='$action'>
   		<ul id="mmUploadFileListing">$uploaded</ul>
   		<span id="fileButton">
                   <input type='hidden' name='action' value='swfupload' />
  +                <input type='hidden' name='popup' value='1' />
                   $myoptions
   		<input type='button' value="$btn" onclick='javascript:mmSWFUpload.callSWF();' />
   		<input type='submit' value="$btn2" onclick='javascript:fileSubmit(this);' />
  @@ -167,10 +168,17 @@
           }
       }
   
  +    // debug
  +    //$fp=fopen('/var/tmp/swflog.txt','w+');
  +    //foreach ($options as $k=>$v) {
  +    //    fwrite($fp,sprintf("%s=>%s\n",$k,$v));
  +    //}
  +    //fclose($fp);
       // set the personal subdir
       if ($options['value'] and preg_match('/^[a-f0-9\/]+$/i',$options['value'])) {
           $mysubdir=$options['value'];
   
  +        list($dum,$myval,$dum2)=explode('/',$options['value'],3); // XXX
           if(!is_dir($swfupload_dir.'/'.$mysubdir)) {
               $om=umask(000);
               _mkdir_p($swfupload_dir.'/'.$mysubdir, 0777);
  @@ -178,12 +186,6 @@
           }
       }
   
  -    // debug
  -    //$fp=fopen('/var/tmp/swflog.txt','w+');
  -    //foreach ($options as $k=>$v) {
  -    //    fwrite($fp,sprintf("%s=>%s\n",$k,$v));
  -    //}
  -    //fclose($fp);
   
       //move the uploaded file
       if (isset($_FILES['Filedata']['tmp_name'])) {
  
  
  
  1.30      +9 -3      moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- UploadFile.php	16 Dec 2006 00:01:30 -0000	1.29
  +++ UploadFile.php	20 Dec 2006 23:00:42 -0000	1.30
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.29 2006/12/16 00:01:30 wkpark Exp $
  +// $Id: UploadFile.php,v 1.30 2006/12/20 23:00:42 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -37,17 +37,23 @@
     }
   
     $js='';
  -  if ($options['uploadid']) {
  +  if ($options['uploadid'] or $options['MYFILES']) {
       $js=<<<EOF
   <script type="text/javascript">
   /*<![CDATA[*/
   function delAllForm(id) {
     var fform = opener.document.getElementById(id);
   
  -  if (fform && fform.rows.length) {
  +  if (fform && fform.rows.length) { // for UploadForm
       for (var i=fform.rows.length;i>0;i--) {
         fform.deleteRow(i-1);
       }
  +  } else { // for SWFUpload
  +    var listing = opener.document.getElementById('mmUploadFileListing');
  +    if (listing) {
  +      var elem = listing.getElementsByTagName("li");
  +      listing.innerHTML='';
  +    }
     }
   }
   
  
  
  


wkpark      2006/12/21 08:12:43

  Modified:    plugin/processor latex.php
  Log:
  add $latex_convert_options option
  add some comment about the "-trim" option
  
  Revision  Changes    Path
  1.15      +9 -2      moniwiki/plugin/processor/latex.php
  
  Index: latex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/latex.php,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- latex.php	29 Jul 2006 07:17:09 -0000	1.14
  +++ latex.php	20 Dec 2006 23:12:43 -0000	1.15
  @@ -6,10 +6,14 @@
   // Usage: {{{#!latex
   // $ \alpha $
   // }}}
  -// $Id: latex.php,v 1.14 2006/07/29 07:17:09 wkpark Exp $
  +// $Id: latex.php,v 1.15 2006/12/20 23:12:43 wkpark Exp $
   
   function processor_latex($formatter="",$value="") {
     global $DBInfo;
  +
  +  $latex_convert_options=
  +    $DBInfo->latex_convert_options ? $DBInfo->latex_convert_options:"-trim -crop 0x0 -density 120x120";
  +
     # site spesific variables
     $latex="latex";
     $dvips="dvips";
  @@ -100,7 +104,10 @@
        #$log2=$formatter->get_errlog();
        chdir($cwd);
   
  -     $cmd= "$convert -transparent white -trim -crop 0x0 -density 120x120 $vartmp_dir/$uniq.ps $outpath";
  +     $cmd= "$convert -transparent white $latex_convert_options $vartmp_dir/$uniq.ps $outpath";
  +     # ImageMagick of the RedHat AS 4.x do not support -trim option correctly
  +     # http://kldp.net/forum/message.php?msg_id=12024
  +     #$cmd= "$convert -transparent white -trim -crop 0x0 -density 120x120 $vartmp_dir/$uniq.ps $outpath";
        $fp=popen($cmd.$formatter->NULL,'r');
        pclose($fp);
        #unlink($vartmp_dir."/$uniq.log");
  
  
  


wkpark      2006/12/21 19:51:37

  Modified:    local    moniwyg.js
  Log:
  support insertion of images, etc.
  
  Revision  Changes    Path
  1.10      +155 -9    moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- moniwyg.js	13 Dec 2006 01:42:27 -0000	1.9
  +++ moniwyg.js	21 Dec 2006 10:51:37 -0000	1.10
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.9 2006/12/13 01:42:27 wkpark Exp $
  +// $Id: moniwyg.js,v 1.10 2006/12/21 10:51:37 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -88,6 +88,7 @@
       else {
           this.current_mode.textarea.value = wikitext;
       }
  +
       this.toolbarObject.resetModeSelector();
       this.current_mode.enableThis();
       this.current_mode.enableThis(); // hack !!
  @@ -143,8 +144,8 @@
   
   proto.enableThis = function() {
       Wikiwyg.Mode.prototype.enableThis.call(this);
  -    this.edit_iframe.style.border = '1px black solid';
  -    this.edit_iframe.width = '100%';
  +    this.edit_iframe.style.border = '1px solid ActiveBorder';
  +    this.edit_iframe.width = '99%';
       this.setHeightOf(this.edit_iframe);
       this.get_edit_document().designMode = 'on';
       this.enable_keybindings();
  @@ -186,8 +187,24 @@
       this.exec_command('createlink', url);
   }
   
  +proto.do_image = function() {
  +    var base = location.href.replace(/(.*?:\/\/.*?\/).*/, '$1');
  +
  +    var x=window.open("?action=uploadedfiles&tag=1&popup=1","MyWin",'toolbar=no,width=800,height=500,scrollbars=yes');
  +    if (x!=null) {
  +        x.focus();
  +    }
  +}
  +
   proto = Wikiwyg.Wikitext.prototype;
   
  +proto.enableThis = function() {
  +    Wikiwyg.Mode.prototype.enableThis.call(this);
  +    this.textarea.style.width = '99%';
  +    this.setHeightOfEditor();
  +    this.enable_keybindings();
  +}
  +
   proto.convert_html_to_wikitext = function(html) {
       this.copyhtml = html;
       var dom = document.createElement('div');
  @@ -219,10 +236,17 @@
       // remove toc number
       html = html.replace(/<span class=.?tocnumber.?>(.*)<\/span>/igm, '');
   
  +    // remove javatag
  +    html =
  +        html.replace(/<a href=.javascript:[^>]+>(.*)<\/a>/ig, "$1");
       // remove all links XXX
       html =
           html.replace(/<a [^>]+>([^>]+)<\/a>/ig, "$1");
  -    //
  +
  +    // escaped wiki markup blocks
  +    html =
  +        html.replace(/<tt class[^>]+>([^>]+)<\/tt>/ig, "{{{$1}}}");
  +
       dom.innerHTML = html;
       this.output = [];
       this.list_type = [];
  @@ -251,10 +275,12 @@
           if (width) attr+='width='+width;
           if (height) attr+=(attr ? '&':'') + 'height='+height;
   
  -        if (style.match) {
  +        if (style) {
               var m = style.match(/width:\s*(\d+)px;\s*height:\s*(\d+)px/);
  -            if (m[1]) attr+=(attr ? '&':'') + 'width='+m[1];
  -            if (m[2]) attr+=(attr ? '&':'') + 'height='+m[2];
  +            if (m) {
  +                if (m[1]) attr+=(attr ? '&':'') + 'width='+m[1];
  +                if (m[2]) attr+=(attr ? '&':'') + 'height='+m[2];
  +            }
           }
   
           if (myclass) {
  @@ -296,7 +322,7 @@
   
   proto.format_br = function(element) {
       var str1 = this.output[this.output.length - 1];
  -    if (! str1.whitespace && ! str1.match(/\n$/)) {
  +    if (str1 && ! str1.whitespace && ! str1.match(/\n$/)) {
           this.insert_new_line();
           this.insert_new_line(); // two \n\n is rendered as <br />
       } else {
  @@ -397,10 +423,19 @@
       )
   }
   
  +Wikiwyg.Preview.prototype.initializeObject = function() {
  +    if (this.config.divId)
  +        this.div = document.getElementById(this.config.divId);
  +    else
  +        this.div = document.createElement('div');
  +    // XXX Make this a config option.
  +    this.div.setAttribute('style','background:lightyellow;padding:10px;');
  +}
   
   proto = Wikiwyg.Toolbar.prototype;
  +
   proto.config.controlLayout = [
  -    'save', 'cancel', 'mode_selector', '/',
  +    'save', 'preview', 'cancel', 'mode_selector', '/',
       'bold',
       'italic',
       'link',
  @@ -461,6 +496,117 @@
       //return string.replace(/\r\n|\r/g, "\n"); // FIX
   }
   
  +proto.get_wiki_comment = function(element) {
  +    for (var node = element.firstChild; node; node = node.nextSibling) {
  +        if (node.nodeType == this.COMMENT_NODE_TYPE
  +            && node.data.match(/^\s*wiki/)) {
  +            var ele=node.nextSibling.firstChild;
  +            if (ele && node.data.match(/\nattachment:/) && ele.tagName && ele.tagName.toLowerCase() == 'img') {
  +                // check the attributes of the attached images
  +                var style = ele.getAttribute('style');
  +                var width = ele.getAttribute('width');
  +                var height = ele.getAttribute('height');
  +                var myclass = ele.getAttribute('class');
  +                var align = '';
  +
  +                var attr=new Array();
  +
  +                if (width) attr["width"]='width='+width;
  +                if (height) attr["height"]='height='+height;
  +                ele.setAttribute('width','');
  +                ele.setAttribute('height','');
  +
  +                if (style && style.match) {
  +                    var m = style.match(/width:\s*(\d+)px;\s*height:\s*(\d+)px/);
  +                    if (m) {
  +                        if (m[1]) attr["width"]='width='+m[1];
  +                        if (m[2]) attr["height"]='height='+m[2];
  +                        ele.setAttribute('style','');
  +                    }
  +                }
  +
  +                if (myclass) {
  +                    var m = myclass.match(/img(Center|Left|Right)$/);
  +                    if (m[1]) {
  +                        attr["align"]='align='+m[1].toLowerCase();
  +                        align=attr["align"];
  +                    }
  +                }
  +
  +                var newquery='';
  +                if (attr) {
  +                    var tattr=new Array();
  +
  +                    for (var key in attr) {
  +                        var value = attr[key];
  +                        if (typeof value == 'function') continue;
  +                        tattr.push(value);
  +                    }
  +
  +                    newquery=tattr.join("&");
  +
  +                    var p=node.data.indexOf("?");
  +                    var orig='';
  +                    var oldquery='';
  +                    if (p != -1) {
  +                        orig=node.data.substr(0,p);
  +                        oldquery=node.data.substr(p+1);
  +                    }
  +                    if (oldquery) {
  +                        oldquery = oldquery.replace(/\n+$/,""); // strip \n
  +                        var oldattr=oldquery.split("&");
  +                        var newattr=new Array();
  +                        for (var j=0;j<oldattr.length;j++) {
  +                            var dum=oldattr[j].split("=");
  +                            if (!width && dum[0] == "width") {
  +                                newattr["width"]=oldattr[j];
  +                            } else if (!height && dum[0] == "height") {
  +                                newattr["height"]=oldattr[j];
  +                            } else if (!align && dum[0] == "align") {
  +                                newattr["align"]=oldattr[j];
  +                            }
  +                        }
  +                        if (newattr) {
  +                            var tattr=[];
  +                            for (var key in newattr) {
  +                                var value = newattr[key];
  +                                if (typeof value == 'function') continue;
  +                                tattr.push(value);
  +                            }
  +                            var old=tattr.join("&");
  +                            newquery=newquery ? (old+'&'+newquery):old;
  +                        } else {
  +                            newquery=oldquery+'&'+newquery;
  +                        }
  +                        node.data=orig+'?'+newquery + " \n";
  +                    } else {
  +                        node.data = node.data.replace(/\n+$/,""); // strip \n
  +                        node.data+='?'+newquery + " \n";
  +                    }
  +
  +                    return node;
  +                }
  +            }
  +            return node;
  +        }
  +    }
  +    return null;
  +}
  +
  +proto.handle_opaque_phrase = function(element) {
  +    var comment = this.get_wiki_comment(element);
  +    if (comment) {
  +        var text = comment.data;
  +        text = text.replace(/^ wiki:\s+/, '')
  +                   .replace(/-=/g, '-')
  +                   .replace(/==/g, '=')
  +                   .replace(/\s$/, '')
  +                   .replace(/\{(\w+):\s*\}/, '{$1}');
  +        this.appendOutput(Wikiwyg.htmlUnescape(text))
  +        this.smart_trailing_space(element);
  +    }
  +}
  +
   proto.walk = function(element) {
       if (!element) return;
       for (var part = element.firstChild; part; part = part.nextSibling) {
  
  
  


wkpark      2006/12/21 19:52:49

  Modified:    local/Wikiwyg/css moniwyg.css
  Log:
  fixed button style and css etc.
  
  Revision  Changes    Path
  1.3       +27 -9     moniwiki/local/Wikiwyg/css/moniwyg.css
  
  Index: moniwyg.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/css/moniwyg.css,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- moniwyg.css	3 Feb 2006 22:22:33 -0000	1.2
  +++ moniwyg.css	21 Dec 2006 10:52:49 -0000	1.3
  @@ -1,17 +1,35 @@
   .wikiwyg_toolbar {
  -    background: #EBE8D5;
  -    border: 1px outset #ACA899;
  -    letter-spacing: 0;
  +/*  background: #EBE8D5; /* */
  +/*  border: 1px outset #ACA899; /* */
  +    letter-spacing: 0; /* */
  +    line-height: 210%; /* */
       padding: 2px;
   }
   
   span.wikiwyg_control_link a {
  -    padding-right: 8px;
  +/*  padding-right: 8px; /* */
  +    font-family:Trebuchet MS,sans-serif;
  +    padding: 4px;
  +}
  +span.wikiwyg_control_link {
  +}
  +
  +.wikiwyg_toolbar label {
  +    padding:4px;
  +    border:1px outset ThreeDFace;
  +    background: ThreeDFace;
  +}
  +
  +.wikiwyg_toolbar label.selected {
  +    padding:4px;
  +    border:1px outset ThreeDHighlight;
  +    background: ThreeDHighlight;
   }
   
   .wikiwyg_button {
  -    background: #EBE8D5;
  -    border: 1px solid #EBE8D5;
  +/*  background: #EBE8D5; /* */
  +/*  border: 1px solid #EBE8D5; /* */
  +    border: 1px solid #FFFFFF;
       cursor: pointer;
       width: 23px;
       height: 22px;
  @@ -27,9 +45,9 @@
   }
   
   .wikiwyg_separator {
  -    background: #EBE8D5;
  -    border: 1px solid #EBE8D5;
  -    width: 9px;
  +/*  background: #EBE8D5; /* */
  +/*  border: 1px solid #EBE8D5; /* */
  +    width: 8px;
       height: 20px;
       vertical-align: bottom;
   }
  
  
  


wkpark      2006/12/21 19:52:49

  Modified:    local/Wikiwyg/lib/Wikiwyg Toolbar.js
  Log:
  fixed button style and css etc.
  
  Revision  Changes    Path
  1.4       +22 -3     moniwiki/local/Wikiwyg/lib/Wikiwyg/Toolbar.js
  
  Index: Toolbar.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/lib/Wikiwyg/Toolbar.js,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Toolbar.js	3 Aug 2006 03:55:16 -0000	1.3
  +++ Toolbar.js	21 Dec 2006 10:52:49 -0000	1.4
  @@ -31,8 +31,9 @@
       divId: null,
       imagesLocation: 'images/',
       imagesExtension: '.gif',
  +    hideRadio: true,
       controlLayout: [
  -        'save', 'cancel', 'mode_selector', '/',
  +        'save', 'preview', 'cancel', 'mode_selector', '/',
           // 'selector',
           'h1', 'h2', 'h3', 'h4', 'p', 'pre', '|',
           'bold', 'italic', 'underline', 'strike', '|',
  @@ -47,6 +48,7 @@
       ],
       controlLabels: {
           save: 'Save',
  +        preview: 'Preview',
           cancel: 'Cancel',
           bold: 'Bold (Ctrl+b)',
           italic: 'Italic (Ctrl+i)',
  @@ -94,6 +96,8 @@
               this.addControlItem(label, 'saveChanges');
           else if (action == 'cancel')
               this.addControlItem(label, 'cancelEdit');
  +        else if (action == 'preview')
  +            this.addControlItem(label, 'switchMode','Wikiwyg.Preview');
           else if (action == 'mode_selector')
               this.addModeSelector();
           else if (action == 'selector')
  @@ -172,7 +176,7 @@
       );
   }
   
  -proto.addControlItem = function(text, method) {
  +proto.addControlItem = function(text, method,arg) {
       var span = Wikiwyg.createElementWithAttrs(
           'span', { 'class': 'wikiwyg_control_link' }
       );
  @@ -184,7 +188,11 @@
       span.appendChild(link);
       
       var self = this;
  -    link.onclick = function() { eval('self.wikiwyg.' + method + '()'); return false };
  +    if (arg) {
  +        method=method+'("'+arg+'")';
  +        this.controls=this.controls ? ','+arg:arg;
  +    } else method=method+'()';
  +    link.onclick = function() { eval('self.wikiwyg.' + method); return false };
   
       this.div.appendChild(span);
   }
  @@ -201,9 +209,18 @@
   proto.addModeSelector = function() {
       var span = document.createElement('span');
   
  +    var control_buttons=[];
  +    if (this.controls) {
  +        var btns=this.controls.split(',');
  +        for (var i=0;i < btns.length;i++) {
  +            control_buttons[btns[i]]=1;
  +        }
  +    }
  +
       var radio_name = Wikiwyg.createUniqueId();
       for (var i = 0; i < this.wikiwyg.config.modeClasses.length; i++) {
           var class_name = this.wikiwyg.config.modeClasses[i];
  +        if (control_buttons[class_name]) continue;
           var mode_object = this.wikiwyg.mode_objects[class_name];
    
           var radio_id = Wikiwyg.createUniqueId();
  @@ -230,6 +247,8 @@
               'label', { 'for': radio_id }
           );
           label.appendChild(document.createTextNode(mode_object.modeDescription));
  +    	if (this.config.hideRadio)
  +            radio.setAttribute('style','display:none'); /* */
   
           span.appendChild(radio);
           span.appendChild(label);
  
  
  


wkpark      2006/12/22 18:10:54

  Modified:    theme/azblue footer.php header.php
  Log:
  support popup.
  xhtml fix
  
  Revision  Changes    Path
  1.3       +5 -6      moniwiki/theme/azblue/footer.php
  
  Index: footer.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/azblue/footer.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- footer.php	12 Aug 2006 10:03:12 -0000	1.2
  +++ footer.php	22 Dec 2006 09:10:54 -0000	1.3
  @@ -1,4 +1,6 @@
   </div>
  +</div>
  +<div id='wikiFooter'>
   <?php
   
   $banner= <<<FOOT
  @@ -17,11 +19,7 @@
     style='border:0;vertical-align:middle' width="80" height="15"
     alt="powered by MoniWiki" /></a>
   FOOT;
  -?>
  -</div>
  -</div>
  -<div id='wikiFooter'>
  -<?php
  +
     print $menu;
     print '<div style="align:center" id="wikiBanner">'.$banner.'<br />';
     if ($lastedit)
  @@ -31,4 +29,5 @@
   ?>
   </div>
   </div></div></div></div></div></div>
  -</div></div>
  +</div>
  +</div>
  
  
  
  1.5       +6 -2      moniwiki/theme/azblue/header.php
  
  Index: header.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/azblue/header.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- header.php	12 Aug 2006 10:03:12 -0000	1.4
  +++ header.php	22 Dec 2006 09:10:54 -0000	1.5
  @@ -1,6 +1,6 @@
   <?php
   # MoniWiki Theme by wkpark at kldp.org
  -# $Id: header.php,v 1.4 2006/08/12 10:03:12 wkpark Exp $
  +# $Id: header.php,v 1.5 2006/12/22 09:10:54 wkpark Exp $
   #
   if ($this->_sidebar) {
     include_once("plugin/login.php");
  @@ -32,8 +32,10 @@
   <div id='pBodyRight'><div id='pBodyLeft'>
   <div id='pBottomRight'><div id='pBottomLeft'>
   <div id='pTopRight'><div id='pTopLeft'>
  -
   <div id='wikiPage'>
  +<?php
  +if ($this->popup!=1) :
  +?>
   <div id='pBanSpace'></div>
   <div id='pBanRight'><div id='pBanLeft'>
   <div id='pBanner'>
  @@ -57,6 +59,8 @@
   </div></div>
   </div>
   </div>
  +</div>
  +<?php endif; ?>
   <div class='clear'></div>
   <?php echo $msg?>
   <div id='container'>
  
  
  


wkpark      2006/12/22 18:10:54

  Modified:    theme/azblue/css default.css
  Log:
  support popup.
  xhtml fix
  
  Revision  Changes    Path
  1.12      +3 -0      moniwiki/theme/azblue/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/azblue/css/default.css,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- default.css	12 Aug 2006 10:10:38 -0000	1.11
  +++ default.css	22 Dec 2006 09:10:54 -0000	1.12
  @@ -19,6 +19,9 @@
     min-width:750px;
     margin: 0px auto 0px auto;
     width: 750px;
  +  min-height:400px;
  +  height: auto !important; /* IE min-height hack */
  +  height:400px;
     /*\*/ min-width: 750px; /* IE fix */
   }
   
  
  
  


wkpark      2006/12/23 14:04:07

  Removed:     theme/sampleleft footer.php header.php theme.php
  Log:
  remove sampleleft theme


wkpark      2006/12/23 14:04:07

  Removed:     theme/sampleleft/css default.css
  Log:
  remove sampleleft theme


wkpark      2006/12/23 14:07:37

  Removed:     theme/samplehome footer.php header.php theme.php
  Log:
  remove samplehome theme


wkpark      2006/12/23 14:07:37

  Removed:     theme/samplehome/css default.css
  Log:
  remove samplehome theme


wkpark      2006/12/23 14:07:37

  Removed:     theme/samplehome/imgs bg.png foot-16.png logo.png
  Log:
  remove samplehome theme


wkpark      2006/12/23 14:09:38

  Removed:     theme/orange footer.php header.php
  Log:
  remove orange theme


wkpark      2006/12/23 14:09:39

  Removed:     theme/orange/css default.css
  Log:
  remove orange theme


wkpark      2006/12/23 14:16:15

  Removed:     theme/nblog footer.php header.php
  Log:
  remove nblog


wkpark      2006/12/23 14:16:15

  Removed:     theme/nblog/css default.css
  Log:
  remove nblog


wkpark      2006/12/23 14:20:48

  Removed:     theme/ddt README footer.php header.php
  Log:
  remove ddt theme


wkpark      2006/12/23 14:20:48

  Removed:     theme/ddt/css default.css
  Log:
  remove ddt theme


wkpark      2006/12/23 14:55:02

  Removed:     theme/sampleicon footer.php header.php theme.php
  Log:
  remove sampleicon theme


wkpark      2006/12/23 14:55:02

  Removed:     theme/sampleicon/css default.css
  Log:
  remove sampleicon theme


wkpark      2006/12/23 14:55:02

  Removed:     theme/sampleicon/imgs create.gif deleted.gif diff.gif
                        diff.png edit.gif edit.png email.gif email.png
                        ftp.gif help.gif help.png home.gif info.gif
                        info.png moni-inter.gif new.gif rss.gif search.gif
                        search.png show.gif show.png updated.gif upper.gif
                        upper.png www.gif
  Log:
  remove sampleicon theme


wkpark      2006/12/23 15:07:39

  Modified:    theme/azblue header.php
  Log:
  update
  
  Revision  Changes    Path
  1.6       +2 -2      moniwiki/theme/azblue/header.php
  
  Index: header.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/azblue/header.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- header.php	22 Dec 2006 09:10:54 -0000	1.5
  +++ header.php	23 Dec 2006 06:07:39 -0000	1.6
  @@ -1,6 +1,6 @@
   <?php
   # MoniWiki Theme by wkpark at kldp.org
  -# $Id: header.php,v 1.5 2006/12/22 09:10:54 wkpark Exp $
  +# $Id: header.php,v 1.6 2006/12/23 06:07:39 wkpark Exp $
   #
   if ($this->_sidebar) {
     include_once("plugin/login.php");
  @@ -53,7 +53,7 @@
   <div id='pTitle'><?php echo $title?></div><div id='wikiHeader'>
   <div id='pMenuRight'><div id='pMenuLeft'>
   <div id='wikiMenuBar'>
  -<div id='wikiIcon'><?php echo $upper_icon.$icons.$rss_icon.$home?></div>
  +<div id='wikiIcon'><?php echo $upper_icon.$icons.$rss_icon?></div>
   <?php echo $menu?>
   </div>
   </div></div>
  
  
  


wkpark      2006/12/23 15:07:40

  Modified:    theme/azblue/css default.css
  Log:
  update
  
  Revision  Changes    Path
  1.13      +28 -0     moniwiki/theme/azblue/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/azblue/css/default.css,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- default.css	22 Dec 2006 09:10:54 -0000	1.12
  +++ default.css	23 Dec 2006 06:07:40 -0000	1.13
  @@ -396,6 +396,10 @@
     margin:0;
     padding:0;
     list-style:none;
  +  margin-left:0;
  +  padding-bottom:3px !important; /* for FF */
  +  padding-bottom:2px;
  +  height:1.7em;
   }
   
   #wikiMenu li {
  @@ -403,6 +407,11 @@
     padding: 4px 10px;margin:0px;
     border-right: 1px solid #A8DBFD;
     /* border-right: 1px solid #e0e0e0; */
  +/* background-color:whitesmoke; */
  +/* the next 4 lines are magic for IE */
  +  float: left;
  +  position: relative;
  +  vertical-align:top;
   }
   
   #wikiMenu li:hover {
  @@ -442,6 +451,25 @@
     text-decoration:none;
   }
   
  +#wikiAction ul {
  +  list-style:none;
  +  padding:0;
  +  margin:0;
  +  white-space:nowrap;
  +}
  +
  +#wikiAction li {
  +  display:inline;
  +  padding-left:5px;
  +  padding-right:5px;
  +  border-right:1px solid #e0e0e0;
  +  float:left;
  +}
  +
  +#wikiAction a {
  +  font-size:12px;
  +}
  +
   #wikiBody {
     color: black;
   /*  background-color: #fff; /* */
  
  
  


wkpark      2006/12/23 15:07:40

  Modified:    theme/blog header.php
  Log:
  update
  
  Revision  Changes    Path
  1.6       +1 -1      moniwiki/theme/blog/header.php
  
  Index: header.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/blog/header.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- header.php	9 Jan 2006 14:48:04 -0000	1.5
  +++ header.php	23 Dec 2006 06:07:40 -0000	1.6
  @@ -15,7 +15,7 @@
   <tr><td><?php echo $goto_form?></td></tr>
   </table>
   </div>
  -<div id='wikiIcon'><?php echo $upper_icon?><?php echo $icons?><?php echo $rss_icon?><?php echo $home?></div>
  +<div id='wikiIcon'><?php echo $upper_icon?><?php echo $icons?><?php echo $rss_icon?></div>
   <div id='wikiMenu'><?php echo $menu?></div>
   <?php echo $msg?>
   <table border='0' width='100%'><tr valign='top'>
  
  
  


wkpark      2006/12/23 15:07:40

  Modified:    theme/kz/css default.css
  Log:
  update
  
  Revision  Changes    Path
  1.5       +6 -2      moniwiki/theme/kz/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/kz/css/default.css,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- default.css	4 Jan 2005 09:38:43 -0000	1.4
  +++ default.css	23 Dec 2006 06:07:40 -0000	1.5
  @@ -1,3 +1,7 @@
  +@import url("../../../css/_base.css");
  +@import url("../../../css/_extra.css");
  +@import url("../../../css/_calendar.css");
  +@import url("../../../css/_user.css");
   body {
   	margin: 1em;
   	background-color: lightgrey;
  @@ -5,7 +9,7 @@
   	font-family: sans-serif;
   }
   head + body {
  -	background-image: url(/images/haenim_transparent.png);
  +	background-image: url(../images/haenim_transparent.png);
   	background-repeat: no-repeat;
   	background-attachment: fixed;
   	background-position: right bottom;
  @@ -119,7 +123,7 @@
   	height: 24px;
   	padding-left: 24px;
   	font-size: 18px;
  -	background-image: url("/moniwiki/theme/rightmenu/imgs/stock_save_24.png");
  +	background-image: url("../imgs/stock_save_24.png");
   	background-repeat: no-repeat;
   }
   
  
  
  


wkpark      2006/12/23 15:10:59

  Modified:    css      _base.css _extra.css kbd.js slide.css
  Added:       css      _menu.css
  Log:
  extract _menu.css from _base.css and update etc.
  
  Revision  Changes    Path
  1.13      +35 -57    moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- _base.css	12 Aug 2006 10:01:41 -0000	1.12
  +++ _base.css	23 Dec 2006 06:10:58 -0000	1.13
  @@ -5,61 +5,6 @@
   /* behavior:url("../local/csshover.htc"); */
   }
   
  -#wikiMenu {
  -  padding: 0;
  -}
  -
  -#wikiMenu ul {
  -  list-style:none;
  -  padding:0;
  -  margin:0;
  -  margin-left:0;
  -  padding-bottom:3px !important; /* for FF */
  -  padding-bottom:2px;
  -  height:1.7em;
  -}
  -
  -#wikiMenu li {
  -  list-style: none;
  -  padding:2px 10px;
  -  margin:2px 1px;
  -/* background-color:whitesmoke; */
  -/* the next 4 lines are magic for IE */
  -  display: block;
  -  float: left;
  -  position: relative;
  -  vertical-align:top;
  -}
  -
  -#wikiMenu li:hover {
  -  background-color:white;
  -  color:black;
  -}
  -
  -#wikiMenu a {
  -  text-decoration:none;
  -  font-size:small;
  -}
  -
  -#wikiAction ul {
  -  list-style:none;
  -  padding:0;
  -  margin:0;
  -  white-space:nowrap;
  -}
  -
  -#wikiAction li {
  -  display:inline;
  -  padding-left:5px;
  -  padding-right:5px;
  -  border-right:1px solid #e0e0e0;
  -  float:left;
  -}
  -
  -#wikiAction a {
  -  font-size:12px;
  -}
  -
   #wikiBanner {
     clear:both;
   }
  @@ -465,8 +410,8 @@
   /* since v1.1.3 */
   blockquote.indent {
     margin:5px 0px 5px 0px;
  -  padding-left:1ex;
  -  border-left:2px solid #d7b7fb;
  +  padding:1em;
  +  border-left:2px solid #e0e0e0;
   }
   
   blockquote.quote {
  @@ -481,3 +426,36 @@
     font-style:normal;
     text-decoration:underline;
   }
  +
  +#wikiSubIndex {
  +  /* float:right; /* */
  +}
  +
  +#wikiSubIndex {
  +  display:block;
  +  padding-bottom:0px;
  +  padding-left:0px;
  +  padding-top:0px;
  +  border:1px solid transparent; /* */
  +  margin-right:5px;
  +  z-index:20;
  +}
  +
  +#wikiSubIndex legend {
  +  color:#555;
  +  background: url(../imgs/misc/open.png) no-repeat;
  +  height:9px;
  +  width:9px;
  +  padding:5px;
  +}
  +
  +#wikiSubIndex legend.close {
  +  background: url(../imgs/misc/close.png) no-repeat;
  +}
  +
  +#toc {
  +  /* float:right;
  +  border:1px solid black; */
  +  background: #ffffff;
  +  padding:3px;
  +}
  
  
  
  1.9       +76 -0     moniwiki/css/_extra.css
  
  Index: _extra.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_extra.css,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- _extra.css	21 Jul 2006 11:42:10 -0000	1.8
  +++ _extra.css	23 Dec 2006 06:10:58 -0000	1.9
  @@ -186,3 +186,79 @@
   span.VisualTour {
     overflow:auto;
   }
  +
  +/* admin plugin */
  +#admin-submenu li {
  +  font-family: Trebuchet MS,sans-serif;
  +  font-size:14px;
  +  display: inline;
  +  line-height: 200%;
  +  list-style: none;
  +  text-align: center;
  +}
  +
  +#admin-submenu {
  +  background: #DFE8FF;
  +  border-bottom: none;
  +  margin: 0;
  +  padding: 3px 2em 0px 3em;
  +}
  +
  +#admin-submenu li a,#admin-submenu li a:visited {
  +  text-decoration:none;
  +  color: #000;
  +  font-size:14px;
  +}
  +
  +#admin-submenu .current {
  +  font-weight:bold;
  +  background: #f9fcfe;
  +  border-top: 1px solid #bcbcbc;
  +  border-right: 2px solid #808080;
  +  color: #000;
  +}
  +
  +#admin-submenu a {
  +  border: none;
  +  color: #fff;
  +  font-size: 12px;
  +  padding: .3em .4em .33em;
  +}
  +
  +#admin-submenu li a:hover {
  +  background: #F0F4FF;
  +  color: #393939;
  +}
  +
  +#admin-submenu li {
  +  line-height: 170%;
  +}
  +
  +/* Scriptaculous autocompleter */
  +.autocomplete, #autocomplete_choices {
  +  font-size:11px;
  +  font-family : tahoma, arial, helvetica, sans-serif;
  +  width: 350px;
  +  background: #fff;
  +  border:1px solid #888;
  +  z-index:100;
  +}
  +
  +.autocomplete ul,#autocomplete_choices ul {
  +  margin:0px;
  +  padding:0px;
  +  width:100%;
  +  list-style-type:none;
  +}
  +
  +.autocomplete ul li.selected,#autocomplete_choices ul li.selected {
  +  background-color: #316ac5;color:white;
  +}
  +
  +.autocomplete ul li,#autocomplete_choices ul li {
  +  margin:0;
  +  padding:3px;
  +  list-style-image: none;
  +  cursor:pointer;
  +}
  +
  
  
  
  1.11      +3 -3      moniwiki/css/kbd.js
  
  Index: kbd.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/kbd.js,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- kbd.js	9 Jul 2006 10:38:58 -0000	1.10
  +++ kbd.js	23 Dec 2006 06:10:58 -0000	1.11
  @@ -6,7 +6,7 @@
   
      distributable under GPL
   
  -   $Id: kbd.js,v 1.10 2006/07/09 10:38:58 wkpark Exp $
  +   $Id: kbd.js,v 1.11 2006/12/23 06:10:58 wkpark Exp $
   
      CHANGES
   
  @@ -89,7 +89,7 @@
   		if (_dom==3 && cc==27 && EventStatus == 'TEXTAREA')
   			return false;
   		// ESC blocking for all vim lovers
  -		return;
  +		return true;
   	}
   //	if (cc==8) { // Backspace blocking
   //		alert(e.keyCode);
  @@ -99,7 +99,7 @@
   //		}
   //		return false;
   //	}
  -	return
  +	return true;
   }
   
   function keypresshandler(ev){
  
  
  
  1.5       +6 -1      moniwiki/css/slide.css
  
  Index: slide.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/slide.css,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- slide.css	1 Mar 2006 05:26:56 -0000	1.4
  +++ slide.css	23 Dec 2006 06:10:58 -0000	1.5
  @@ -4,7 +4,8 @@
   @import url("_user.css");
   
   body {
  -  font-family:Bitstream Vera Sans,Georgia,Verdana,Lucida,sans-serif;
  +  /* font-family:Bitstream Vera Sans,Georgia,Verdana,Lucida,sans-serif; /* */
  +  font-family:Verdana,Lucida,sans-serif;
     font-size:20px;
     margin: 10;
   }
  @@ -244,3 +245,7 @@
   div.slideNav {
      text-align:center;
   }
  +
  +.slideNav img {
  +   vertical-align:middle;
  +}
  
  
  
  1.1                  moniwiki/css/_menu.css
  
  Index: _menu.css
  ===================================================================
  #wikiMenu {
    padding: 0;
  }
  
  #wikiMenu ul {
    list-style:none;
    padding:0;
    margin:0;
    margin-left:0;
    padding-bottom:3px !important; /* for FF */
    padding-bottom:2px;
    height:1.7em;
  }
  
  #wikiMenu li {
    list-style: none;
    padding:2px 10px;
    margin:2px 1px;
  /* background-color:whitesmoke; */
  /* the next 4 lines are magic for IE */
    display: block;
    float: left;
    position: relative;
    vertical-align:top;
  }
  
  #wikiMenu li:hover {
    background-color:white;
    color:black;
  }
  
  #wikiMenu a {
    text-decoration:none;
    font-size:small;
  }
  
  #wikiAction ul {
    list-style:none;
    padding:0;
    margin:0;
    white-space:nowrap;
  }
  
  #wikiAction li {
    display:inline;
    padding-left:5px;
    padding-right:5px;
    border-right:1px solid #e0e0e0;
    float:left;
  }
  
  #wikiAction a {
    font-size:12px;
  }
  
  
  
  


wkpark      2006/12/24 01:27:14

  Modified:    .        wiki.php wikilib.php
  Log:
  whole wikipage editing supported with WikiWyg
  
  Revision  Changes    Path
  1.339     +47 -27    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.338
  retrieving revision 1.339
  diff -u -r1.338 -r1.339
  --- wiki.php	20 Dec 2006 22:58:07 -0000	1.338
  +++ wiki.php	23 Dec 2006 16:27:14 -0000	1.339
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.338 2006/12/20 22:58:07 wkpark Exp $
  +// $Id: wiki.php,v 1.339 2006/12/23 16:27:14 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.338 $',1,-1);
  +$_revision = substr('$Revision: 1.339 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -672,6 +672,9 @@
       if (!$this->purge_passwd)
         $this->purge_passwd=$this->admin_passwd;
   
  +    if ($this->use_wikiwyg and !$this->sectionedit_attr)
  +      $this->sectionedit_attr=1;
  +
   #
       if (!$this->menu) {
         $this->menu= array($this->frontpage=>"accesskey='1'",'FindPage'=>"accesskey='4'",'TitleIndex'=>"accesskey='3'",'RecentChanges'=>"accesskey='2'");
  @@ -710,6 +713,7 @@
       $this->icon['show']="<img src='$imgdir/${iconset}show.$ext' alt='R' style='vertical-align:middle;border:0px' />";
       $this->icon['find']="<img src='$imgdir/${iconset}search.$ext' alt='S' style='vertical-align:middle;border:0px' />";
       $this->icon['help']="<img src='$imgdir/${iconset}help.$ext' alt='H' style='vertical-align:middle;border:0px' />";
  +    $this->icon['pref']="<img src='$imgdir/${iconset}pref.$ext' alt='C' style='vertical-align:middle;border:0px' />";
       $this->icon['www']="<img src='$imgdir/${iconset}www.$ext' alt='www' style='vertical-align:middle;border:0px' />";
       $this->icon['mailto']="<img src='$imgdir/${iconset}email.$ext' alt='M' style='vertical-align:middle;border:0px' />";
       $this->icon['create']="<img src='$imgdir/${iconset}create.$ext' alt='N' style='vertical-align:middle;border:0px' />";
  @@ -732,10 +736,11 @@
                 array("","?action=diff",$this->icon['diff'],"accesskey='c'"),
                 array("","",$this->icon['show']),
                 array("FindPage","",$this->icon['find']),
  -              array("","?action=info",$this->icon['info']),
  -              array("","?action=subscribe",$this->icon['mailto']),
  -              array("HelpContents","",$this->icon['help']),
  -           );
  +              array("","?action=info",$this->icon['info']));
  +      if ($this->notify)
  +        $this->icons['subscribe']=array("","?action=subscribe",$this->icon['mailto']);
  +      $this->icons[]=array("HelpContents","",$this->icon['help']);
  +      $this->icons['pref']=array("UserPreferences","",$this->icon['pref']);
       }
       $config=get_object_vars($this); // merge default settings to $config
   
  @@ -1709,7 +1714,7 @@
       $this->baserepl=array("&lt;\\1",
                        "<strong>\\1</strong>","<strong>\\1</strong>",
                        "<em>\\1</em>","<em>\\1</em>",
  -                     "&#96;\\1'","<tt class='wiki'>\\1</tt>",
  +                     "&#96;\\1'","<tt>\\1</tt>",
                        "\$formatter->$DBInfo->hr_type"."_hr('\\1')",
                        "<br clear='all' />",
                        "<sub>\\1</sub>",
  @@ -1748,8 +1753,8 @@
         $DBInfo->use_singlebracket;
   
       #$punct="<\"\'}\]\|;,\.\!";
  -    $punct="<\'}\]\)\|;\.\!"; # , is omitted for the WikiPedia
  -    #$punct="<\'}\]\|;\.\!"; # , is omitted for the WikiPedia
  +    #$punct="<\'}\]\)\|;\.\!"; # , is omitted for the WikiPedia
  +    $punct="<\'}\]\|\.\!"; # , is omitted for the WikiPedia
       $url="wiki|http|https|ftp|nntp|news|irc|telnet|mailto|file|attachment";
       if ($DBInfo->url_schemas) $url.='|'.$DBInfo->url_schemas;
       $this->urls=$url;
  @@ -2689,6 +2694,7 @@
               $sty['background-color']=strtolower($v);
               break;
             case 'width':
  +          case 'height':
             case 'color':
               $sty[$k]=strtolower($v);
               break;
  @@ -3407,7 +3413,7 @@
     function get_javascripts() {
       $out='';
       foreach ($this->java_scripts as $js) {
  -      $out.='<script type="text/javascript" src="'.$url_prefix.'/lib/'.$js.'>'.
  +      $out.='<script type="text/javascript" src="'.$url_prefix.'/local/'.$js.'>'.
           "</script>\n";
       }
       return $out;
  @@ -3511,6 +3517,8 @@
         }
       }
   
  +    $js=$DBInfo->js;
  +
       if (isset($options['trail']))
         $this->set_trailer($options['trail'],$this->page->name);
       else if ($DBInfo->origin)
  @@ -3538,9 +3546,15 @@
             if ($subs) $scache->update($this->page->name,1);
           }
           if ($subs) {
  +          $subindices='';
  +          if (!$DBInfo->use_ajax) {
  +            $subindices= '<div>'.$this->macro_repl('PageList','',array('subdir'=>1)).'</div>';
  +            $btncls='class="close"';
  +          } else
  +            $btncls='';
             $this->subindex="<fieldset id='wikiSubIndex'>".
  -            "<legend title='[+]' onclick='javascript:toggleSubIndex(\"wikiSubIndex\")'>".
  -            "</legend></fieldset>\n";
  +            "<legend title='[+]' $btncls onclick='javascript:toggleSubIndex(\"wikiSubIndex\")'></legend>".
  +            $subindices."</fieldset>\n";
           }
         }
   
  @@ -3568,7 +3582,7 @@
   /*]]>*/
   </script>
   JSHEAD;
  -      print $metatags."\n".$keywords;
  +      print $metatags.$js."\n".$keywords;
         print "  <title>$DBInfo->sitename: ".$options['title']."</title>\n";
         if ($upper)
           print '  <link rel="Up" href="'.$this->link_url($upper)."\" />\n";
  @@ -3883,11 +3897,12 @@
         #  #if $menu[$i]==
         #  $menu[$i]="<li >".$menu[$i]."</li>\n";
         #}
  -      $menu='<div id="wikiMenu"><ul><li>'.implode("</li><li>",$menu)."</li></ul></div>\n";
  +      $menu='<div id="wikiMenu"><ul><li class="first">'.implode("</li><li>",$menu)."</li></ul></div>\n";
         # set current attribute.
         $menu=preg_replace("/(li)>(<a\s[^>]+current[^>]+)/",
           "$1 class='current'>$2",$menu);
       }
  +    $this->topmenu=$menu;
   
       # submenu XXX
       if ($this->submenu) {
  @@ -3940,6 +3955,19 @@
       #if ($upper)
       #  $upper_icon=$this->link_tag($upper,'',$this->icon['upper'])." ";
   
  +    # UserPreferences
  +    if ($options['id'] != "Anonymous") {
  +      $user_link=$this->link_tag("UserPreferences","",$options['id']);
  +      if ($DBInfo->hasPage($options['id'])) {
  +        $home=$this->link_tag($options['id'],"",$this->icon['home'])." ";
  +        unset($this->icons['pref']); // insert home icon
  +        $this->icons['home']=array($options['id'],"",$this->icon['home']);
  +        $this->icons['pref']=array("UserPreferences","",$this->icon['pref']);
  +      } else
  +        $this->icons['pref']=array("UserPreferences","",$this->icon['pref']);
  +    } else
  +      $user_link=$this->link_tag("UserPreferences","",_($this->icon['user']));
  +
       if ($this->icons) {
         $icon=array();
         foreach ($this->icons as $item) {
  @@ -3952,14 +3980,6 @@
   
       $rss_icon=$this->link_tag("RecentChanges","?action=rss_rc",$this->icon['rss'])." ";
   
  -    # UserPreferences
  -    if ($options['id'] != "Anonymous") {
  -      $user_link=$this->link_tag("UserPreferences","",$options['id']);
  -      if ($DBInfo->hasPage($options['id']))
  -      $home=$this->link_tag($options['id'],"",$this->icon['home'])." ";
  -    } else
  -      $user_link=$this->link_tag("UserPreferences","",_($this->icon['user']));
  -
       # print the title
       kbd_handler();
   
  @@ -3968,6 +3988,7 @@
         $trail="<div id='wikiTrailer'>\n".$this->trail."</div>\n";
         $origin="<div id='wikiOrigin'>\n".$this->origin."</div>\n";
   
  +      $subindex=$this->subindex;
         $themeurl=$this->themeurl;
         include($this->themedir."/header.php");
       } else { #default header
  @@ -4397,20 +4418,19 @@
           echo "<br />".
             $formatter->link_to("?action=edit",$formatter->icon['create']._("Create this page"));
         } else {
  -        $formatter->send_title(sprintf("%s Not Found",$page->name),"",$options);
  +        $formatter->send_title(sprintf(_("%s is not found in this Wiki"),$page->name),"",$options);
           $button= $formatter->link_to("?action=edit",$formatter->icon['create']._("Create this page"));
  -        print $button;
           $searchval=htmlspecialchars($options['page']);
  -        print sprintf(_(" or click %s to fullsearch this page.\n"),$formatter->link_to("?action=fullsearch&amp;value=$searchval",_("title")));
  +        print sprintf(_("%s or click %s to fullsearch this page.\n"),$button,$formatter->link_to("?action=fullsearch&amp;value=$searchval",_("title")));
           print $formatter->macro_repl('LikePages',$page->name,$err);
           if ($err['extra'])
             print $err['extra'];
   
  -        print "<hr />\n$button";
  +        print "<hr />\n";
           $options['linkto']="?action=edit&amp;template=";
           $tmpls= macro_TitleSearch($formatter,$DBInfo->template_regex,$options);
           if ($tmpls) {
  -          print _(" or alternativly, use one of these templates:\n");
  +          print sprintf(_("%s or alternativly, use one of these templates:\n"),$button);
             print $tmpls;
           } else {
             print "<h3>"._("You have no templates")."</h3>";
  
  
  
  1.221     +19 -6     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.220
  retrieving revision 1.221
  diff -u -r1.220 -r1.221
  --- wikilib.php	19 Dec 2006 02:04:31 -0000	1.220
  +++ wikilib.php	23 Dec 2006 16:27:14 -0000	1.221
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.220 2006/12/19 02:04:31 wkpark Exp $
  +// $Id: wikilib.php,v 1.221 2006/12/23 16:27:14 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -644,7 +644,15 @@
     if ($options['section'])
       $sec=' (Section)';
     $formatter->send_title(sprintf(_("Edit %s"),$options['page']).$sec,"",$options);
  -  print macro_EditText($formatter,$value,$options);
  +  print '<div id="editor_area">'.macro_EditText($formatter,$value,$options).'</div>';
  +  if ($DBInfo->use_wikiwyg==1)
  +    print <<<JS
  +<script type='text/javascript'>
  +/*<![CDATA[*/
  +sectionEdit(null,null,null);
  +/*]]>*/
  +</script>
  +JS;
     $formatter->send_footer($args,$options);
   }
   
  @@ -828,7 +836,12 @@
       $preview_btn='<input type="submit" tabindex="6" name="button_preview" '.
         'value="'._("Preview").'" />';
       if ($preview)
  -      $preview_btn.= ' '.$formatter->link_to('#preview',_("Skip to preview"));
  +      $skip_preview= ' '.$formatter->link_to('#preview',_("Skip to preview"));
  +    if ($DBInfo->use_wikiwyg) {
  +      $wysiwyg_msg=_("GUI");
  +      $wysiwyg_btn.='&nbsp;<input type="button" tabindex="7" value="'.$wysiwyg_msg.
  +        '" onclick="javascript:sectionEdit(null,null,null)" />';
  +    }
     }
     $save_msg=_("Save");
     $summary_msg=_("Summary of Change");
  @@ -869,13 +882,13 @@
   <div id="wikiEditor">
   <textarea id="content" wrap="virtual" name="savetext" tabindex="1"
    rows="$rows" cols="$cols" class="wiki resizable">$raw_body</textarea><br />
  -$summary_msg: <input name="comment" size="70" maxlength="70" style="width:200" tabindex="2" />$extra_check<br />
  +$summary_msg: <input name="comment" size="70" maxlength="70" style="width:80%" tabindex="2" />$extra_check<br />
   <input type="hidden" name="action" value="savepage" />
   <input type="hidden" name="datestamp" value="$datestamp" />
   $hidden$select_category
  -<input type="submit" tabindex="5" value="$save_msg" />&nbsp;
  +<input type="submit" tabindex="5" value="$save_msg" />
   <!-- <input type="reset" value="Reset" />&nbsp; -->
  -$preview_btn
  +$preview_btn$wysiwyg_btn$skip_preview
   $extra
   </form>
   </div>
  
  
  


wkpark      2006/12/24 01:27:14

  Modified:    local    moniwyg.js
  Log:
  whole wikipage editing supported with WikiWyg
  
  Revision  Changes    Path
  1.11      +122 -42   moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- moniwyg.js	21 Dec 2006 10:51:37 -0000	1.10
  +++ moniwyg.js	23 Dec 2006 16:27:14 -0000	1.11
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.10 2006/12/21 10:51:37 wkpark Exp $
  +// $Id: moniwyg.js,v 1.11 2006/12/23 16:27:14 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -28,7 +28,7 @@
       }
   
       var datestamp='';
  -    var section='';
  +    var section=null;
       for (var i=0;i<this.myinput.length;i++) {
           if (this.myinput[i].name == 'datestamp')
               datestamp=this.myinput[i].value;
  @@ -43,7 +43,10 @@
       // save
       var toSend = 'action=savepage/ajax' +
       '&savetext=' + encodeURIComponent(wikitext) +
  -    '&datestamp=' + datestamp + '&section=' + section;
  +    '&datestamp=' + datestamp;
  +
  +    if (section)
  +        toSend += '&section=' + section;
       var location = this.mylocation;
   
       var saved=self.div.innerHTML;
  @@ -51,7 +54,9 @@
       var form=HTTPPost(location,toSend);
       if (form.substring(0,4) == 'true') {
           // get section
  -        var toSend = 'action=markup&all=1&section=' + section;
  +        var toSend = 'action=markup&all=1';
  +        if (section)
  +            toSend += '&section=' + section;
           form=HTTPPost(location,toSend);
           self.div.innerHTML=form;
   
  @@ -68,14 +73,14 @@
       return;
   }
   
  -Wikiwyg.prototype.editMode = function(form) {
  +Wikiwyg.prototype.editMode = function(form,text) {
       var self = this;
       var dom = document.createElement('div');
       dom.innerHTML = form;
   
       var form = dom.getElementsByTagName('form')[0];
  -    var text = dom.getElementsByTagName('textarea')[0];
  -    var wikitext = text.value;
  +    var mytext = dom.getElementsByTagName('textarea')[0];
  +    var wikitext = text == null ? mytext.value:text;
       this.mylocation = form.getAttribute('action');
   
       this.current_mode = this.first_mode;
  @@ -145,6 +150,8 @@
   proto.enableThis = function() {
       Wikiwyg.Mode.prototype.enableThis.call(this);
       this.edit_iframe.style.border = '1px solid ActiveBorder';
  +    //this.edit_iframe.style.backgroundColor = '#ffffff';
  +    //this.edit_iframe.setAttribute('style','1px solid ThreeDFace;background:#fff;');
       this.edit_iframe.width = '99%';
       this.setHeightOf(this.edit_iframe);
       this.get_edit_document().designMode = 'on';
  @@ -196,6 +203,8 @@
       }
   }
   
  +proto.do_media = proto.do_image;
  +
   proto = Wikiwyg.Wikitext.prototype;
   
   proto.enableThis = function() {
  @@ -300,14 +309,14 @@
       this.myattr=null;
   
       if (width) {
  -        this.myattr= '<tablewidth='+width + '>';
  +        this.myattr= '<tablewidth="'+width + 'px">';
       } else 
       if (style) {
           var attr='';
           var m = style.match(/width:\s*(\d+)px;\s*height:\s*(\d+)px/);
  -        if (m[1]) attr+= '<tablewidth='+m[1] + '>';
  -        if (m[2]) attr+= '<tableheight='+m[2] + '>';
  -
  +        if (m)
  +            attr='<tablewidth="'+m[1] + 'px" height="'+m[2]+'px">';
  +        
           if (attr != '') this.myattr=attr;
       }
       this.walk(element);
  @@ -331,7 +340,7 @@
   }
   
   proto.assert_blank_line = function() {
  -    if (! this.should_whitespace()) return
  +    if (! this.should_whitespace()) return;
       this.chomp();
       this.insert_new_line();
       //this.insert_new_line(); // FIX for line_alone (----)
  @@ -345,7 +354,7 @@
   
   proto.format_td = function(element) {
       var colspan =element.getAttribute('colspan');
  -    //var align =element.getAttribute('align');
  +    var align =element.getAttribute('class');
       if (colspan) {
           for (var i=0;i<colspan;i++)
               this.appendOutput('||');
  @@ -362,9 +371,51 @@
   
       //if (align) this.appendOutput('<align='+align+'>');
       this.appendOutput('');
  -    this.walk(element);
  -    this.chomp(); // XXX
  +    this.walk_n(element);
  +    this.chomp_n(); // table specific chomp
       this.appendOutput('');
  +    this.chomp_n(); // chomp again
  +}
  +
  +proto.walk_n = function(element) {
  +    if (!element) return;
  +    for (var part = element.firstChild; part; part = part.nextSibling) {
  +        if (part.nodeType == 1) {
  +            this.dispatch_formatter(part);
  +        }
  +        else if (part.nodeType == 3) {
  +            if (part.nodeValue.match(/^[ ]*$/)) {
  +                this.appendOutput(part.nodeValue);
  +            }
  +            else if (part.nodeValue.match(/[^\n]/)) {
  +                if (this.no_collapse_text) {
  +                    this.appendOutput(part.nodeValue);
  +                }
  +                else {
  +                    this.appendOutput(this.collapse(part.nodeValue));
  +                }
  +            }
  +        }
  +    }
  +    this.no_collapse_text = false;
  +}
  +
  +proto.chomp_n = function() {
  +    var string;
  +    while (this.output.length) {
  +        string = this.output.pop();
  +        if (typeof(string) != 'string') {
  +            this.appendOutput(string);
  +            return;
  +        }
  +        if (! string.match(/^\n+>+ $/) && string.match(/(\S|\s)/)) {
  +            break;
  +        }
  +    }
  +    if (string) {
  +        string = string.replace(/[\r\n]+$/, '');
  +        this.appendOutput(string);
  +    }
   }
   
   proto.format_li = function(element) {
  @@ -434,6 +485,30 @@
   
   proto = Wikiwyg.Toolbar.prototype;
   
  +proto.addControlItem = function(text, method,arg) {
  +    var span = Wikiwyg.createElementWithAttrs(
  +        'span', { 'class': 'wikiwyg_control_link' }
  +    );
  +
  +    var link = Wikiwyg.createElementWithAttrs(
  +        'input', {
  +            type: 'button',
  +            value: text
  +        }
  +    );
  +    //link.appendChild(document.createTextNode(text));
  +    span.appendChild(link);
  +
  +    var self = this;
  +    if (arg) {
  +        method=method+'("'+arg+'")';
  +        this.controls=this.controls ? ','+arg:arg;
  +    } else method=method+'()';
  +    link.onclick = function() { eval('self.wikiwyg.' + method); return false };
  +
  +    this.div.appendChild(span);
  +}
  +
   proto.config.controlLayout = [
       'save', 'preview', 'cancel', 'mode_selector', '/',
       'bold',
  @@ -477,8 +552,8 @@
   proto.config.markupRules.indent = ['start_lines', ' '];
   proto.config.markupRules.quote = ['start_lines', '>'];
   proto.config.markupRules.hr = ['line_alone', '----'];
  -proto.config.markupRules.image = ['bound_phrase', 'attachment:', ''];
  -proto.config.markupRules.media = ['bound_phrase', '[[Media(', ')]]'];
  +proto.config.markupRules.image = ['bound_phrase', 'attachment:', '','sample.png'];
  +proto.config.markupRules.media = ['bound_phrase', '[[Media(', ')]]','sample.ogg'];
   proto.config.markupRules.table = ['line_alone', '|| A || B || C ||\n||   ||   ||   ||\n||   ||   ||   ||'];
   
   proto.do_math = Wikiwyg.Wikitext.make_do('math');
  @@ -707,13 +782,14 @@
   proto.markup_bound_phrase = function(markup_array) {
       var markup_start = markup_array[1];
       var markup_finish = markup_array[2];
  +    var markup_example = markup_array[3] || null;
       var scroll_top = this.area.scrollTop;
       if (markup_finish == 'undefined')
           markup_finish = markup_start;
       var multi = null;
       if (markup_array[1].match(/\{\{\{/)) multi = 1; // fix for pre block
       if (this.get_words(multi))
  -        this.add_markup_words(markup_start, markup_finish, null);
  +        this.add_markup_words(markup_start, markup_finish, markup_example);
       this.area.scrollTop = scroll_top;
   }
   
  @@ -904,8 +980,12 @@
   wikiwygs = [];
   
   function sectionEdit(ev,obj,sect) {
  +    var area;
  +    var text=null;
  +    var form=null;
       if (sect) {
           var sec=document.getElementById('sect-'+sect);
  +        area=sec.parentNode;
   
           var href=obj.href.replace(/=edit/,'=edit/ajax');
           var saved=obj.cloneNode(true);
  @@ -914,10 +994,15 @@
           loading.setAttribute('class','ajaxLoading');
           loading.src=_url_prefix + '/imgs/loading.gif';
           obj.parentNode.replaceChild(loading,obj);
  -        var form=HTTPGet(href);
  +        form=HTTPGet(href);
           loading.parentNode.replaceChild(saved,loading);
  +    } else {
  +        area=document.getElementById('editor_area');
  +        text=area.getElementsByTagName('textarea')[0].value;
  +        form=area.innerHTML;
  +    }
   
  -        if (form.substring(0,5) != 'false') {
  +    if (form && form.substring(0,5) != 'false') {
               var myConfig = {
                   doubleClickToEdit: true,
                   toolbar: {
  @@ -936,49 +1021,44 @@
                       'Wikiwyg.HTML'
                   ]
               };
  -            //var div = document.createElement('div');
  -            //div.setAttribute('class', 'wikiwyg_area');
  -            //sec.parentNode.appendChild(div);
   
               var myWikiwyg = new Wikiwyg();
  -            //myWikiwyg.createWikiwygArea(div, myConfig);
  -            myWikiwyg.createWikiwygArea(sec.parentNode, myConfig);
  -            //myWikiwyg.createWikiwygArea(sec, myConfig);
  +            myWikiwyg.createWikiwygArea(area, myConfig);
               wikiwygs.push(myWikiwyg);
  -            myWikiwyg.editMode(form);
  -            //myWikiwyg.textarea.value = wikitext;
  -
  -            //var f=document.createElement('div');
  -            //f.setAttribute('id','editSect-'+sect);
  -        }
  +            myWikiwyg.editMode(form,text);
       }
       return;
   }
   
   function savePage(obj) {
       obj.elements['action'].value+='/ajax';
  -    var sec=document.getElementById('sect-'+obj.section.value);
  +    var sec=null;
  +    if (obj.section)
  +        sec=document.getElementById('sect-'+obj.section.value);
       var toSend = '';
       for (var i=0;i<obj.elements.length;i++) {
           if (obj.elements[i].name != '')  {
               toSend += (toSend ? '&' : '') + obj.elements[i].name + '='
                                     + escape(obj.elements[i].value);
  -            //alert(obj.elements[i].name+'='+obj.elements[i].value);
           }
       }
       var form=HTTPPost(self.location,toSend);
       if (form.substring(0,4) == 'true') {
  -        var ed=document.getElementById('editSect-'+obj.section.value);
  -        if (ed) { // toogle
  -            sec.parentNode.removeChild(sec.parentNode.lastChild);
  -            return false;
  +        if (sec) {
  +            var ed=document.getElementById('editSect-'+obj.section.value);
  +            if (ed) { // toogle
  +                sec.parentNode.removeChild(sec.parentNode.lastChild);
  +                return false;
  +            }
           }
       } else {
           var f=document.createElement('div');
  -        f.setAttribute('id','editSect-'+obj.section.value);
  -        // show error XXX
  -        f.innerHTML=form;
  -        sec.parentNode.appendChild(f);
  +        if (sec) {
  +            f.setAttribute('id','editSect-'+obj.section.value);
  +            // show error XXX
  +            f.innerHTML=form;
  +            sec.parentNode.appendChild(f);
  +        }
       }
       return false;
   }
  
  
  


wkpark      2006/12/24 01:27:14

  Modified:    plugin   markup.php
  Log:
  whole wikipage editing supported with WikiWyg
  
  Revision  Changes    Path
  1.5       +14 -9     moniwiki/plugin/markup.php
  
  Index: markup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/markup.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- markup.php	16 Dec 2006 00:02:03 -0000	1.4
  +++ markup.php	23 Dec 2006 16:27:14 -0000	1.5
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a markup plugin for the MoniWiki
   //
  -// $Id: markup.php,v 1.4 2006/12/16 00:02:03 wkpark Exp $
  +// $Id: markup.php,v 1.5 2006/12/23 16:27:14 wkpark Exp $
   
   function do_markup($formatter,$options) {
       $formatter->section_edit=0;
  @@ -15,14 +15,19 @@
       if (!$options['all']) $formatter->wikimarkup=1;
       if ($options['value']) {
           $formatter->send_page(_stripslashes($options['value']),$options);
  -    } else if (isset($options['section'])) {
  -        $formatter->section_edit=1;
  -        $formatter->sect_num=$options['section'] - 1;
  -        $raw_body=$formatter->page->get_raw_body($options);
  -        $sections= _get_sections($raw_body);
  -        if ($sections[$options['section']]) {
  -            $raw_body = $sections[$options['section']];
  -            $formatter->send_page($raw_body,$options);
  +    } else {
  +        if (isset($options['section'])) {
  +            $formatter->section_edit=1;
  +            $formatter->sect_num=$options['section'] - 1;
  +            $raw_body=$formatter->page->get_raw_body($options);
  +            $sections= _get_sections($raw_body);
  +            if ($sections[$options['section']]) {
  +                $raw_body = $sections[$options['section']];
  +                $formatter->send_page($raw_body,$options);
  +            }
  +        } else {
  +            $formatter->section_edit=1;
  +            $formatter->send_page('',$options);
           }
           #else ignore
       }
  
  
  


wkpark      2006/12/24 01:28:42

  Modified:    local/Wikiwyg/lib/Wikiwyg Wikitext.js
  Log:
  fixed Wikitext.js bug with (,) chars
  
  Revision  Changes    Path
  1.4       +1 -1      moniwiki/local/Wikiwyg/lib/Wikiwyg/Wikitext.js
  
  Index: Wikitext.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/lib/Wikiwyg/Wikitext.js,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Wikitext.js	1 Aug 2006 15:47:30 -0000	1.3
  +++ Wikitext.js	23 Dec 2006 16:28:42 -0000	1.4
  @@ -308,7 +308,7 @@
   }
   
   proto.clean_regexp = function(string) {
  -    string = string.replace(/([\^\$\*\+\.\?\[\]\{\}])/g, '\\$1');
  +    string = string.replace(/([\^\$\*\+\.\?\[\]\{\}\(\)])/g, '\\$1');
       return string;
   }
   
  
  
  


wkpark      2006/12/24 01:30:06

  Modified:    local    ASCIIMathML.js
  Log:
  update to v 1.4.7
  
  Revision  Changes    Path
  1.2       +314 -162  moniwiki/local/ASCIIMathML.js
  
  Index: ASCIIMathML.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/ASCIIMathML.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ASCIIMathML.js	27 Mar 2005 21:56:17 -0000	1.1
  +++ ASCIIMathML.js	23 Dec 2006 16:30:06 -0000	1.2
  @@ -2,13 +2,16 @@
   ASCIIMathML.js
   ==============
   This file contains JavaScript functions to convert ASCII math notation
  -to Presentation MathML. The conversion is done while the XHTML page 
  +to Presentation MathML. The conversion is done while the (X)HTML page 
   loads, and should work with Firefox/Mozilla/Netscape 7+ and Internet 
   Explorer 6+MathPlayer (http://www.dessci.com/en/products/mathplayer/).
  +Just add the next line to your (X)HTML page with this file in the same folder:
  +<script type="text/javascript" src="ASCIIMathML.js"></script>
   This is a convenient and inexpensive solution for authoring MathML.
   
  -Version 1.4.4 Jan 6, 2005, (c) Peter Jipsen http://www.chapman.edu/~jipsen
  +Version 1.4.7 Dec 15, 2005, (c) Peter Jipsen http://www.chapman.edu/~jipsen
   Latest version at http://www.chapman.edu/~jipsen/mathml/ASCIIMathML.js
  +For changes see http://www.chapman.edu/~jipsen/mathml/asciimathchanges.txt
   If you use it on a webpage, please send the URL to jipsen@chapman.edu
   
   This program is free software; you can redistribute it and/or modify
  @@ -23,17 +26,20 @@
   for more details.
   */
   
  -var checkForMathML = true; // check if browser can display MathML
  -var notifyIfNoMathML = true; // put note at top of page if no MathML capability
  -var mathcolor = "";   // change it to "" (to inherit) or any other color
  -var mathfontfamily = "serif"; // change to "" (to inherit) or another family
  -var displaystyle = true;   // puts limits above and below large operators
  -var separatetokens = false;// if true, nonletters must separate letter tokens
  -
  +var checkForMathML = true;   // check if browser can display MathML
  +var notifyIfNoMathML = true; // display note if no MathML capability
  +var alertIfNoMathML = false;  // show alert box if no MathML capability
  +var mathcolor = "red";       // change it to "" (to inherit) or any other color
  +var mathfontfamily = "serif"; // change to "" to inherit (works in IE) 
  +                              // or another family (e.g. "arial")
  +var displaystyle = true;      // puts limits above and below large operators
  +var showasciiformulaonhover = true; // helps students learn ASCIIMath
  +var decimalsign = ".";        // change to "," if you like, beware of `(1,2)`!
   var AMdelimiter1 = "`", AMescape1 = "\\\\`"; // can use other characters
   var AMdelimiter2 = "$", AMescape2 = "\\\\\\$", AMdelimiter2regexp = "\\$";
   var doubleblankmathdelimiter = false; // if true,  x+1  is equal to `x+1`
                                         // for IE this works only in <!--   -->
  +//var separatetokens;// has been removed (email me if this is a problem)
   var isIE = document.createElementNS==null;
   
   if (document.getElementById==null) 
  @@ -47,8 +53,10 @@
     else return document.createElementNS("http://www.w3.org/1999/xhtml",t);
   }
   
  -function AMisMathMLavailable() {
  -  var nd = AMcreateElementXHTML("center");
  +function AMnoMathMLNote() {
  +  var nd = AMcreateElementXHTML("h3");
  +  nd.setAttribute("align","center")
  +  nd.appendChild(AMcreateElementXHTML("p"));
     nd.appendChild(document.createTextNode("To view the "));
     var an = AMcreateElementXHTML("a");
     an.appendChild(document.createTextNode("ASCIIMathML"));
  @@ -60,17 +68,22 @@
     an.setAttribute("href","http://www.dessci.com/en/products/mathplayer/download.htm");
     nd.appendChild(an);
     nd.appendChild(document.createTextNode(" or Netscape/Mozilla/Firefox"));
  +  nd.appendChild(AMcreateElementXHTML("p"));
  +  return nd;
  +}
  +
  +function AMisMathMLavailable() {
     if (navigator.appName.slice(0,8)=="Netscape") 
       if (navigator.appVersion.slice(0,1)>="5") return null;
  -    else return nd;
  +    else return AMnoMathMLNote();
     else if (navigator.appName.slice(0,9)=="Microsoft")
       try {
           var ActiveX = new ActiveXObject("MathPlayer.Factory.1");
           return null;
       } catch (e) {
  -        return nd;
  +        return AMnoMathMLNote();
       }
  -  else return nd;
  +  else return AMnoMathMLNote();
   }
   
   // character lists for Mozilla/Netscape fonts
  @@ -79,7 +92,8 @@
   var AMbbb = [0xEF8C,0xEF8D,0x2102,0xEF8E,0xEF8F,0xEF90,0xEF91,0x210D,0xEF92,0xEF93,0xEF94,0xEF95,0xEF96,0x2115,0xEF97,0x2119,0x211A,0x211D,0xEF98,0xEF99,0xEF9A,0xEF9B,0xEF9C,0xEF9D,0xEF9E,0x2124];
   
   var CONST = 0, UNARY = 1, BINARY = 2, INFIX = 3, LEFTBRACKET = 4, 
  -    RIGHTBRACKET = 5, SPACE = 6, UNDEROVER = 7, DEFINITION = 8; // token types
  +    RIGHTBRACKET = 5, SPACE = 6, UNDEROVER = 7, DEFINITION = 8,
  +    LEFTRIGHT = 9, TEXT = 10; // token types
   
   var AMsqrt = {input:"sqrt", tag:"msqrt", output:"sqrt", tex:null, ttype:UNARY},
     AMroot  = {input:"root", tag:"mroot", output:"root", tex:null, ttype:BINARY},
  @@ -88,9 +102,9 @@
     AMover  = {input:"stackrel", tag:"mover", output:"stackrel", tex:null, ttype:BINARY},
     AMsub   = {input:"_",    tag:"msub",  output:"_",    tex:null, ttype:INFIX},
     AMsup   = {input:"^",    tag:"msup",  output:"^",    tex:null, ttype:INFIX},
  -  AMtext  = {input:"text", tag:"mtext", output:"text", tex:null, ttype:UNARY},
  -  AMmbox  = {input:"mbox", tag:"mtext", output:"mbox", tex:null, ttype:UNARY},
  -  AMquote = {input:"\"",   tag:"mtext", output:"mbox", tex:null, ttype:UNARY};
  +  AMtext  = {input:"text", tag:"mtext", output:"text", tex:null, ttype:TEXT},
  +  AMmbox  = {input:"mbox", tag:"mtext", output:"mbox", tex:null, ttype:TEXT},
  +  AMquote = {input:"\"",   tag:"mtext", output:"mbox", tex:null, ttype:TEXT};
   
   var AMsymbols = [
   //some greek symbols
  @@ -118,6 +132,7 @@
   {input:"pi",     tag:"mi", output:"\u03C0", tex:null, ttype:CONST},
   {input:"Pi",     tag:"mo", output:"\u03A0", tex:null, ttype:CONST},
   {input:"psi",    tag:"mi", output:"\u03C8", tex:null, ttype:CONST},
  +{input:"Psi",    tag:"mi", output:"\u03A8", tex:null, ttype:CONST},
   {input:"rho",    tag:"mi", output:"\u03C1", tex:null, ttype:CONST},
   {input:"sigma",  tag:"mi", output:"\u03C3", tex:null, ttype:CONST},
   {input:"Sigma",  tag:"mo", output:"\u03A3", tex:null, ttype:CONST},
  @@ -135,7 +150,7 @@
   {input:"**", tag:"mo", output:"\u22C6", tex:"star", ttype:CONST},
   {input:"//", tag:"mo", output:"/",      tex:null, ttype:CONST},
   {input:"\\\\", tag:"mo", output:"\\",   tex:"backslash", ttype:CONST},
  -{input:"setminus", tag:"mo", output:"\\",   tex:null, ttype:CONST},
  +{input:"setminus", tag:"mo", output:"\\", tex:null, ttype:CONST},
   {input:"xx", tag:"mo", output:"\u00D7", tex:"times", ttype:CONST},
   {input:"-:", tag:"mo", output:"\u00F7", tex:"divide", ttype:CONST},
   {input:"@",  tag:"mo", output:"\u2218", tex:"circ", ttype:CONST},
  @@ -164,6 +179,8 @@
   {input:"-<",  tag:"mo", output:"\u227A", tex:"prec", ttype:CONST},
   {input:"-lt", tag:"mo", output:"\u227A", tex:null, ttype:CONST},
   {input:">-",  tag:"mo", output:"\u227B", tex:"succ", ttype:CONST},
  +{input:"-<=", tag:"mo", output:"\u2AAF", tex:"preceq", ttype:CONST},
  +{input:">-=", tag:"mo", output:"\u2AB0", tex:"succeq", ttype:CONST},
   {input:"in",  tag:"mo", output:"\u2208", tex:null, ttype:CONST},
   {input:"!in", tag:"mo", output:"\u2209", tex:"notin", ttype:CONST},
   {input:"sub", tag:"mo", output:"\u2282", tex:"subset", ttype:CONST},
  @@ -186,8 +203,8 @@
   {input:"EE",  tag:"mo", output:"\u2203", tex:"exists", ttype:CONST},
   {input:"_|_", tag:"mo", output:"\u22A5", tex:"bot", ttype:CONST},
   {input:"TT",  tag:"mo", output:"\u22A4", tex:"top", ttype:CONST},
  -{input:"|-",  tag:"mo", output:"\u22A2", tex:"vdash", ttype:CONST},
  -{input:"|=",  tag:"mo", output:"\u22A8", tex:"models", ttype:CONST},
  +{input:"|--",  tag:"mo", output:"\u22A2", tex:"vdash", ttype:CONST},
  +{input:"|==",  tag:"mo", output:"\u22A8", tex:"models", ttype:CONST},
   
   //grouping brackets
   {input:"(", tag:"mo", output:"(", tex:null, ttype:LEFTBRACKET},
  @@ -196,6 +213,8 @@
   {input:"]", tag:"mo", output:"]", tex:null, ttype:RIGHTBRACKET},
   {input:"{", tag:"mo", output:"{", tex:null, ttype:LEFTBRACKET},
   {input:"}", tag:"mo", output:"}", tex:null, ttype:RIGHTBRACKET},
  +{input:"|", tag:"mo", output:"|", tex:null, ttype:LEFTRIGHT},
  +//{input:"||", tag:"mo", output:"||", tex:null, ttype:LEFTRIGHT},
   {input:"(:", tag:"mo", output:"\u2329", tex:"langle", ttype:LEFTBRACKET},
   {input:":)", tag:"mo", output:"\u232A", tex:"rangle", ttype:RIGHTBRACKET},
   {input:"<<", tag:"mo", output:"\u2329", tex:null, ttype:LEFTBRACKET},
  @@ -217,6 +236,8 @@
   {input:"oo",   tag:"mo", output:"\u221E", tex:"infty", ttype:CONST},
   {input:"aleph", tag:"mo", output:"\u2135", tex:null, ttype:CONST},
   {input:"...",  tag:"mo", output:"...",    tex:"ldots", ttype:CONST},
  +{input:":.",  tag:"mo", output:"\u2234",  tex:"therefore", ttype:CONST},
  +{input:"/_",  tag:"mo", output:"\u2220",  tex:"angle", ttype:CONST},
   {input:"\\ ",  tag:"mo", output:"\u00A0", tex:null, ttype:CONST},
   {input:"quad", tag:"mo", output:"\u00A0\u00A0", tex:null, ttype:CONST},
   {input:"qquad", tag:"mo", output:"\u00A0\u00A0\u00A0\u00A0", tex:null, ttype:CONST},
  @@ -225,8 +246,8 @@
   {input:"ddots", tag:"mo", output:"\u22F1", tex:null, ttype:CONST},
   {input:"diamond", tag:"mo", output:"\u22C4", tex:null, ttype:CONST},
   {input:"square", tag:"mo", output:"\u25A1", tex:null, ttype:CONST},
  -{input:"|_", tag:"mo", output:"\u230A",  tex:"lfloor", ttype:CONST},
  -{input:"_|", tag:"mo", output:"\u230B",  tex:"rfloor", ttype:CONST},
  +{input:"|__", tag:"mo", output:"\u230A",  tex:"lfloor", ttype:CONST},
  +{input:"__|", tag:"mo", output:"\u230B",  tex:"rfloor", ttype:CONST},
   {input:"|~", tag:"mo", output:"\u2308",  tex:"lceiling", ttype:CONST},
   {input:"~|", tag:"mo", output:"\u2309",  tex:"rceiling", ttype:CONST},
   {input:"CC",  tag:"mo", output:"\u2102", tex:null, ttype:CONST},
  @@ -234,26 +255,28 @@
   {input:"QQ",  tag:"mo", output:"\u211A", tex:null, ttype:CONST},
   {input:"RR",  tag:"mo", output:"\u211D", tex:null, ttype:CONST},
   {input:"ZZ",  tag:"mo", output:"\u2124", tex:null, ttype:CONST},
  +{input:"f",   tag:"mi", output:"f",      tex:null, ttype:UNARY, func:true},
  +{input:"g",   tag:"mi", output:"g",      tex:null, ttype:UNARY, func:true},
   
   //standard functions
   {input:"lim",  tag:"mo", output:"lim", tex:null, ttype:UNDEROVER},
   {input:"Lim",  tag:"mo", output:"Lim", tex:null, ttype:UNDEROVER},
  -{input:"sin",  tag:"mo", output:"sin", tex:null, ttype:CONST},
  -{input:"cos",  tag:"mo", output:"cos", tex:null, ttype:CONST},
  -{input:"tan",  tag:"mo", output:"tan", tex:null, ttype:CONST},
  -{input:"sinh", tag:"mo", output:"sinh", tex:null, ttype:CONST},
  -{input:"cosh", tag:"mo", output:"cosh", tex:null, ttype:CONST},
  -{input:"tanh", tag:"mo", output:"tanh", tex:null, ttype:CONST},
  -{input:"cot",  tag:"mo", output:"cot", tex:null, ttype:CONST},
  -{input:"sec",  tag:"mo", output:"sec", tex:null, ttype:CONST},
  -{input:"csc",  tag:"mo", output:"csc", tex:null, ttype:CONST},
  -{input:"log",  tag:"mo", output:"log", tex:null, ttype:CONST},
  -{input:"ln",   tag:"mo", output:"ln",  tex:null, ttype:CONST},
  -{input:"det",  tag:"mo", output:"det", tex:null, ttype:CONST},
  +{input:"sin",  tag:"mo", output:"sin", tex:null, ttype:UNARY, func:true},
  +{input:"cos",  tag:"mo", output:"cos", tex:null, ttype:UNARY, func:true},
  +{input:"tan",  tag:"mo", output:"tan", tex:null, ttype:UNARY, func:true},
  +{input:"sinh", tag:"mo", output:"sinh", tex:null, ttype:UNARY, func:true},
  +{input:"cosh", tag:"mo", output:"cosh", tex:null, ttype:UNARY, func:true},
  +{input:"tanh", tag:"mo", output:"tanh", tex:null, ttype:UNARY, func:true},
  +{input:"cot",  tag:"mo", output:"cot", tex:null, ttype:UNARY, func:true},
  +{input:"sec",  tag:"mo", output:"sec", tex:null, ttype:UNARY, func:true},
  +{input:"csc",  tag:"mo", output:"csc", tex:null, ttype:UNARY, func:true},
  +{input:"log",  tag:"mo", output:"log", tex:null, ttype:UNARY, func:true},
  +{input:"ln",   tag:"mo", output:"ln",  tex:null, ttype:UNARY, func:true},
  +{input:"det",  tag:"mo", output:"det", tex:null, ttype:UNARY, func:true},
   {input:"dim",  tag:"mo", output:"dim", tex:null, ttype:CONST},
   {input:"mod",  tag:"mo", output:"mod", tex:null, ttype:CONST},
  -{input:"gcd",  tag:"mo", output:"gcd", tex:null, ttype:CONST},
  -{input:"lcm",  tag:"mo", output:"lcm", tex:null, ttype:CONST},
  +{input:"gcd",  tag:"mo", output:"gcd", tex:null, ttype:UNARY, func:true},
  +{input:"lcm",  tag:"mo", output:"lcm", tex:null, ttype:UNARY, func:true},
   {input:"lub",  tag:"mo", output:"lub", tex:null, ttype:CONST},
   {input:"glb",  tag:"mo", output:"glb", tex:null, ttype:CONST},
   {input:"min",  tag:"mo", output:"min", tex:null, ttype:UNDEROVER},
  @@ -315,16 +338,23 @@
   var AMmathml = "http://www.w3.org/1998/Math/MathML";
   
   function AMcreateElementMathML(t) {
  -  if (isIE) return document.createElement("mml:"+t);
  +  if (isIE) return document.createElement("m:"+t);
     else return document.createElementNS(AMmathml,t);
   }
   
  -function AMcreateMmlNode(name,frag) {
  -  var node = AMcreateElementMathML(name);
  +function AMcreateMmlNode(t,frag) {
  +//  var node = AMcreateElementMathML(name);
  +  if (isIE) var node = document.createElement("m:"+t);
  +  else var node = document.createElementNS(AMmathml,t);
     node.appendChild(frag);
     return node;
   }
   
  +function newcommand(oldstr,newstr) {
  +  AMsymbols = AMsymbols.concat([{input:oldstr, tag:"mo", output:newstr, 
  +                                 tex:null, ttype:DEFINITION}]);
  +}
  +
   function AMremoveCharsAndBlanks(str,n) {
   //remove n characters and any following blanks
     var st;
  @@ -352,8 +382,6 @@
     return i; // i=arr.length || arr[i]>=str
   }
   
  -var AMseparated = true;
  -
   function AMgetSymbol(str) {
   //return maximal initial substring of str that appears in names
   //return null if there is none
  @@ -375,53 +403,44 @@
       }
       more = k<AMnames.length && str.slice(0,AMnames[k].length)>=AMnames[k];
     }
  -  if (match!="")
  -    if (separatetokens) {
  -      i = match.length;
  -      if ("a">str.charAt(0) || str.charAt(0)>"z" || 
  -        "a">str.charAt(i-1) || str.charAt(i-1)>"z") {
  -        AMseparated = true;
  -        return AMsymbols[mk];
  -      }
  -      st = str.charAt(i);
  -      AMseparated = AMseparated && ("a">st || st>"z");
  -      if (AMseparated) return AMsymbols[mk];
  -    } else return AMsymbols[mk]; 
  +  AMpreviousSymbol=AMcurrentSymbol;
  +  if (match!=""){
  +    AMcurrentSymbol=AMsymbols[mk].ttype;
  +    return AMsymbols[mk]; 
  +  }
   // if str[0] is a digit or - return maxsubstring of digits.digits
  +  AMcurrentSymbol=CONST;
     k = 1;
     st = str.slice(0,1);
  -  var pos = true;
     var integ = true;
  -  if (st == "-") {
  -    pos = false;
  -    st = str.slice(k,k+1);
  -    k++;
  -  }
     while ("0"<=st && st<="9" && k<=str.length) {
       st = str.slice(k,k+1);
       k++;
     }
  -  if (st == ".") {
  -    integ = false;
  +  if (st == decimalsign) {
       st = str.slice(k,k+1);
  -    k++;
  -    while ("0"<=st && st<="9" && k<=str.length) {
  -      st = str.slice(k,k+1);
  +    if ("0"<=st && st<="9") {
  +      integ = false;
         k++;
  +      while ("0"<=st && st<="9" && k<=str.length) {
  +        st = str.slice(k,k+1);
  +        k++;
  +      }
       }
     }
  -  if ((pos && integ && k>1) || ((pos || integ) && k>2) || k>3) {
  +  if ((integ && k>1) || k>2) {
       st = str.slice(0,k-1);
       tagst = "mn";
  -    AMseparated = true;
     } else {
       k = 2;
       st = str.slice(0,1); //take 1 character
  -    AMseparated = ("A">st || st>"Z") && ("a">st || st>"z");
  -    tagst = (AMseparated?"mo":"mi");
  -    AMseparated = AMseparated || str.charAt(1)<"a" || str.charAt(1)>"z";
  +    tagst = (("A">st || st>"Z") && ("a">st || st>"z")?"mo":"mi");
  +  }
  +  if (st=="-" && AMpreviousSymbol==INFIX) {
  +    AMcurrentSymbol = INFIX;  //trick "/" into recognizing "-" on second parse
  +    return {input:st, tag:tagst, output:st, ttype:UNARY, func:true};
     }
  -  return {input:str.slice(0,k-1), tag:tagst, output:st, ttype:CONST};
  +  return {input:st, tag:tagst, output:st, ttype:CONST};
   }
   
   function AMremoveBrackets(node) {
  @@ -437,23 +456,26 @@
   }
   
   /*Parsing ASCII math expressions with the following grammar
  -V ::= [A-Za-z] | greek letters | numbers | other constant symbols
  -U ::= sqrt | text | bb | other unary symbols for font commands
  -B ::= frac | root | stackrel         binary symbols
  -L ::= ( | [ | { | (: | {:            left brackets
  -R ::= ) | ] | } | :) | :}            right brackets
  -S ::= V | LER | US | BSS             simple expression
  -E ::= SE | S/S | S_S | S^S | S_S^S   expression
  +v ::= [A-Za-z] | greek letters | numbers | other constant symbols
  +u ::= sqrt | text | bb | other unary symbols for font commands
  +b ::= frac | root | stackrel         binary symbols
  +l ::= ( | [ | { | (: | {:            left brackets
  +r ::= ) | ] | } | :) | :}            right brackets
  +S ::= v | lEr | uS | bSS             Simple expression
  +I ::= S_S | S^S | S_S^S | S          Intermediate expression
  +E ::= IE | I/I                       Expression
   Each terminal symbol is translated into a corresponding mathml node.*/
   
  -var AMnestingDepth;
  +var AMnestingDepth,AMpreviousSymbol,AMcurrentSymbol;
   
   function AMparseSexpr(str) { //parses str and returns [node,tailstr]
  -  var symbol, node, result, i, st, newFrag = document.createDocumentFragment();
  +  var symbol, node, result, i, st,// rightvert = false,
  +    newFrag = document.createDocumentFragment();
     str = AMremoveCharsAndBlanks(str,0);
     symbol = AMgetSymbol(str);             //either a token or a bracket or empty
  -  if (symbol == null || symbol.ttype == RIGHTBRACKET && AMnestingDepth > 0)
  +  if (symbol == null || symbol.ttype == RIGHTBRACKET && AMnestingDepth > 0) {
       return [null,str];
  +  }
     if (symbol.ttype == DEFINITION) {
       str = symbol.output+AMremoveCharsAndBlanks(str,symbol.input.length); 
       symbol = AMgetSymbol(str);
  @@ -462,19 +484,13 @@
     case UNDEROVER:
     case CONST:
       str = AMremoveCharsAndBlanks(str,symbol.input.length); 
  -    if (symbol.tag=="mn" && symbol.output.charAt(0)=="-") {
  -      node = AMcreateMmlNode("mo",document.createTextNode("-"));
  -      node = AMcreateMmlNode("mrow",node);
  -      node.appendChild(AMcreateMmlNode(symbol.tag,        //its a constant
  -                             document.createTextNode(symbol.output.slice(1))));
  -      return [node,str];
  -    } else
       return [AMcreateMmlNode(symbol.tag,        //its a constant
                                document.createTextNode(symbol.output)),str];
     case LEFTBRACKET:   //read (expr+)
       AMnestingDepth++;
       str = AMremoveCharsAndBlanks(str,symbol.input.length); 
  -    result = AMparseExpr(str);
  +    result = AMparseExpr(str,true);
  +    AMnestingDepth--;
       if (typeof symbol.invisible == "boolean" && symbol.invisible) 
         node = AMcreateMmlNode("mrow",result[0]);
       else {
  @@ -483,8 +499,7 @@
         node.appendChild(result[0]);
       }
       return [node,result[1]];
  -  case UNARY:
  -    if (symbol == AMtext || symbol == AMmbox || symbol == AMquote) {
  +  case TEXT:
         if (symbol!=AMquote) str = AMremoveCharsAndBlanks(str,symbol.input.length);
         if (str.charAt(0)=="{") i=str.indexOf("}");
         else if (str.charAt(0)=="(") i=str.indexOf(")");
  @@ -507,13 +522,25 @@
         }
         str = AMremoveCharsAndBlanks(str,i+1);
         return [AMcreateMmlNode("mrow",newFrag),str];
  -    } else {
  +  case UNARY:
         str = AMremoveCharsAndBlanks(str,symbol.input.length); 
         result = AMparseSexpr(str);
  -      if (result[0]==null) return [AMcreateMmlNode("mo",
  -                             document.createTextNode(symbol.input)),str];
  +      if (result[0]==null) return [AMcreateMmlNode(symbol.tag,
  +                             document.createTextNode(symbol.output)),str];
  +      if (typeof symbol.func == "boolean" && symbol.func) { // functions hack
  +        st = str.charAt(0);
  +        if (st=="^" || st=="_" || st=="/" || st=="|" || st==",") {
  +          return [AMcreateMmlNode(symbol.tag,
  +                    document.createTextNode(symbol.output)),str];
  +        } else {
  +          node = AMcreateMmlNode("mrow",
  +           AMcreateMmlNode(symbol.tag,document.createTextNode(symbol.output)));
  +          node.appendChild(result[0]);
  +          return [node,result[1]];
  +        }
  +      }
         AMremoveBrackets(result[0]);
  -      if (symbol == AMsqrt) {           // sqrt
  +      if (symbol.input == "sqrt") {           // sqrt
           return [AMcreateMmlNode(symbol.tag,result[0]),result[1]];
         } else if (typeof symbol.acc == "boolean" && symbol.acc) {   // accent
           node = AMcreateMmlNode(symbol.tag,result[0]);
  @@ -541,7 +568,6 @@
           node.setAttribute(symbol.atname,symbol.atval);
           return [node,result[1]];
         }
  -    }
     case BINARY:
       str = AMremoveCharsAndBlanks(str,symbol.input.length); 
       result = AMparseSexpr(str);
  @@ -552,9 +578,10 @@
       if (result2[0]==null) return [AMcreateMmlNode("mo",
                              document.createTextNode(symbol.input)),str];
       AMremoveBrackets(result2[0]);
  -    if (symbol==AMroot || symbol==AMover) newFrag.appendChild(result2[0]);
  +    if (symbol.input=="root" || symbol.input=="stackrel") 
  +      newFrag.appendChild(result2[0]);
       newFrag.appendChild(result[0]);
  -    if (symbol==AMfrac) newFrag.appendChild(result2[0]);
  +    if (symbol.input=="frac") newFrag.appendChild(result2[0]);
       return [AMcreateMmlNode(symbol.tag,newFrag),result2[1]];
     case INFIX:
       str = AMremoveCharsAndBlanks(str,symbol.input.length); 
  @@ -570,58 +597,102 @@
       node.setAttribute("width","1ex");
       newFrag.appendChild(node);
       return [AMcreateMmlNode("mrow",newFrag),str];
  +  case LEFTRIGHT:
  +//    if (rightvert) return [null,str]; else rightvert = true;
  +    AMnestingDepth++;
  +    str = AMremoveCharsAndBlanks(str,symbol.input.length); 
  +    result = AMparseExpr(str,false);
  +    AMnestingDepth--;
  +    var st = "";
  +    if (result[0].lastChild!=null)
  +      st = result[0].lastChild.firstChild.nodeValue;
  +    if (st == "|") { // its an absolute value subterm
  +      node = AMcreateMmlNode("mo",document.createTextNode(symbol.output));
  +      node = AMcreateMmlNode("mrow",node);
  +      node.appendChild(result[0]);
  +      return [node,result[1]];
  +    } else { // the "|" is a \mid
  +      node = AMcreateMmlNode("mo",document.createTextNode(symbol.output));
  +      node = AMcreateMmlNode("mrow",node);
  +      return [node,str];
  +    }
     default:
  +//alert("default");
       str = AMremoveCharsAndBlanks(str,symbol.input.length); 
       return [AMcreateMmlNode(symbol.tag,        //its a constant
                                document.createTextNode(symbol.output)),str];
     }
   }
   
  -function AMparseExpr(str) {
  -  var symbol, sym1, sym2, node, result, i, underover, nodeList = [],
  +function AMparseIexpr(str) {
  +  var symbol, sym1, sym2, node, result, underover;
  +  str = AMremoveCharsAndBlanks(str,0);
  +  sym1 = AMgetSymbol(str);
  +  result = AMparseSexpr(str);
  +  node = result[0];
  +  str = result[1];
  +  symbol = AMgetSymbol(str);
  +  if (symbol.ttype == INFIX && symbol.input != "/") {
  +    str = AMremoveCharsAndBlanks(str,symbol.input.length);
  +//    if (symbol.input == "/") result = AMparseIexpr(str); else ...
  +    result = AMparseSexpr(str);
  +    if (result[0] == null) // show box in place of missing argument
  +      result[0] = AMcreateMmlNode("mo",document.createTextNode("\u25A1"));
  +    else AMremoveBrackets(result[0]);
  +    str = result[1];
  +//    if (symbol.input == "/") AMremoveBrackets(node);
  +    if (symbol.input == "_") {
  +      sym2 = AMgetSymbol(str);
  +      underover = (sym1.ttype == UNDEROVER);
  +      if (sym2.input == "^") {
  +        str = AMremoveCharsAndBlanks(str,sym2.input.length);
  +        var res2 = AMparseSexpr(str);
  +        AMremoveBrackets(res2[0]);
  +        str = res2[1];
  +        node = AMcreateMmlNode((underover?"munderover":"msubsup"),node);
  +        node.appendChild(result[0]);
  +        node.appendChild(res2[0]);
  +        node = AMcreateMmlNode("mrow",node); // so sum does not stretch
  +      } else {
  +        node = AMcreateMmlNode((underover?"munder":"msub"),node);
  +        node.appendChild(result[0]);
  +      }
  +    } else {
  +      node = AMcreateMmlNode(symbol.tag,node);
  +      node.appendChild(result[0]);
  +    }
  +  }
  +  return [node,str];
  +}
  +
  +function AMparseExpr(str,rightbracket) {
  +  var symbol, node, result, i, nodeList = [],
     newFrag = document.createDocumentFragment();
     do {
       str = AMremoveCharsAndBlanks(str,0);
  -    sym1 = AMgetSymbol(str);
  -    result = AMparseSexpr(str);
  +    result = AMparseIexpr(str);
       node = result[0];
       str = result[1];
       symbol = AMgetSymbol(str);
  -    if (symbol.ttype == INFIX) {
  +    if (symbol.ttype == INFIX && symbol.input == "/") {
         str = AMremoveCharsAndBlanks(str,symbol.input.length);
  -      result = AMparseSexpr(str);
  -      if (result[0] == null)
  +      result = AMparseIexpr(str);
  +      if (result[0] == null) // show box in place of missing argument
           result[0] = AMcreateMmlNode("mo",document.createTextNode("\u25A1"));
         else AMremoveBrackets(result[0]);
         str = result[1];
  -      if (symbol == AMdiv) AMremoveBrackets(node);
  -      if (symbol == AMsub) {
  -        sym2 = AMgetSymbol(str);
  -        underover = (sym1.ttype == UNDEROVER);
  -        if (sym2 == AMsup) {
  -          str = AMremoveCharsAndBlanks(str,sym2.input.length);
  -          var res2 = AMparseSexpr(str);
  -          AMremoveBrackets(res2[0]);
  -          str = res2[1];
  -          node = AMcreateMmlNode((underover?"munderover":"msubsup"),node);
  -          node.appendChild(result[0]);
  -          node.appendChild(res2[0]);
  -          node = AMcreateMmlNode("mrow",node); // so sum does not stretch
  -        } else {
  -          node = AMcreateMmlNode((underover?"munder":"msub"),node);
  -          node.appendChild(result[0]);
  -        }
  -      } else {
  -        node = AMcreateMmlNode(symbol.tag,node);
  -        node.appendChild(result[0]);
  -      }
  +      AMremoveBrackets(node);
  +      node = AMcreateMmlNode(symbol.tag,node);
  +      node.appendChild(result[0]);
         newFrag.appendChild(node);
  +      symbol = AMgetSymbol(str);
       } 
       else if (node!=undefined) newFrag.appendChild(node);
  -  } while ((symbol.ttype != RIGHTBRACKET || AMnestingDepth == 0) && 
  -           symbol!=null && symbol.output!="");
  -  if (symbol.ttype == RIGHTBRACKET) {
  -    if (AMnestingDepth > 0) AMnestingDepth--;
  +  } while ((symbol.ttype != RIGHTBRACKET && 
  +           (symbol.ttype != LEFTRIGHT || rightbracket)
  +           || AMnestingDepth == 0) && symbol!=null && symbol.output!="");
  +  if (symbol.ttype == RIGHTBRACKET || symbol.ttype == LEFTRIGHT) {
  +//    if (AMnestingDepth > 0) AMnestingDepth--;
       var len = newFrag.childNodes.length;
       if (len>0 && newFrag.childNodes[len-1].nodeName == "mrow" && len>1 &&
         newFrag.childNodes[len-2].nodeName == "mo" &&
  @@ -693,9 +764,11 @@
     if (displaystyle) node.setAttribute("displaystyle","true");
     if (mathfontfamily != "") node.setAttribute("fontfamily",mathfontfamily);
     AMnestingDepth = 0;
  -  node.appendChild(AMparseExpr(str.replace(/^\s+/g,""))[0]);
  +  node.appendChild(AMparseExpr(str.replace(/^\s+/g,""),false)[0]);
     node = AMcreateMmlNode("math",node);
  -  if (mathfontfamily != "") {
  +  if (showasciiformulaonhover)                      //fixed by djhsu so newline
  +    node.setAttribute("title",str.replace(/\s+/g," "));//does not show in Gecko
  +  if (mathfontfamily != "" && (isIE || mathfontfamily != "serif")) {
       var fnode = AMcreateElementXHTML("font");
       fnode.setAttribute("face",mathfontfamily);
       fnode.appendChild(node);
  @@ -712,14 +785,11 @@
       else {
         var arri = (linebreaks ? arr[i].split("\n\n") : [arr[i]]);
         newFrag.appendChild(AMcreateElementXHTML("span").
  -      appendChild(document.createTextNode(arri[0].
  -      replace(/AMescape2/g,AMdelimiter2).replace(/AMescape1/g,AMdelimiter1))));
  +      appendChild(document.createTextNode(arri[0])));
         for (var j=1; j<arri.length; j++) {
           newFrag.appendChild(AMcreateElementXHTML("p"));
           newFrag.appendChild(AMcreateElementXHTML("span").
  -        appendChild(document.createTextNode(arri[j].
  -          replace(/AMescape2/g,AMdelimiter2).
  -          replace(/AMescape1/g,AMdelimiter1))));
  +        appendChild(document.createTextNode(arri[j])));
         }
       }
       expr = !expr;
  @@ -727,9 +797,11 @@
     return newFrag;
   }
   
  -function AMprocessNode(n, linebreaks) {
  -  var mtch, str, arr;
  -  if (n.childNodes.length == 0 && (n.nodeType!=8 || linebreaks) &&
  +function AMprocessNodeR(n, linebreaks) {
  +  var mtch, str, arr, frg, i;
  +  if (n.childNodes.length == 0) {
  +   if ((n.nodeType!=8 || linebreaks) &&
  +    n.parentNode.nodeName!="form" && n.parentNode.nodeName!="FORM" &&
       n.parentNode.nodeName!="textarea" && n.parentNode.nodeName!="TEXTAREA" &&
       n.parentNode.nodeName!="pre" && n.parentNode.nodeName!="PRE") {
       str = n.nodeValue;
  @@ -749,42 +821,122 @@
                 function(st){mtch=true;return "AMescape1"});
         str = str.replace(new RegExp(AMdelimiter2regexp, "g"),AMdelimiter1);
         arr = str.split(AMdelimiter1);
  +      for (i=0; i<arr.length; i++)
  +        arr[i]=arr[i].replace(/AMescape2/g,AMdelimiter2).
  +                      replace(/AMescape1/g,AMdelimiter1);
         if (arr.length>1 || mtch) {
           if (checkForMathML) {
             checkForMathML = false;
             var nd = AMisMathMLavailable();
  -          AMnoMathML = nd != null
  +          AMnoMathML = nd != null;
             if (AMnoMathML && notifyIfNoMathML) 
  -            AMbody.insertBefore(nd,AMbody.childNodes[0]);
  +            if (alertIfNoMathML)
  +              alert("To view the ASCIIMathML notation use Internet Explorer 6 +\nMathPlayer (free from www.dessci.com)\n\
  +                or Firefox/Mozilla/Netscape");
  +            else AMbody.insertBefore(nd,AMbody.childNodes[0]);
           }
  -        if (!AMnoMathML)
  -          n.parentNode.replaceChild(AMstrarr2docFrag(arr,n.nodeType==8),n);
  +        if (!AMnoMathML) {
  +          frg = AMstrarr2docFrag(arr,n.nodeType==8);
  +          var len = frg.childNodes.length;
  +          n.parentNode.replaceChild(frg,n);
  +          return len-1;
  +        } else return 0;
         }
       }
  -  } else if (n.nodeName!="math") 
  -    for (var i=0; i<n.childNodes.length; i++)
  -      AMprocessNode(n.childNodes[i], linebreaks);
  +   } else return 0;
  +  } else if (n.nodeName!="math") {
  +    for (i=0; i<n.childNodes.length; i++)
  +      i += AMprocessNodeR(n.childNodes[i], linebreaks);
  +  }
  +  return 0;
   }
   
  -var AMbody;
  -var AMnoMathML = false;
  -
  -function translate() {
  -  AMinitSymbols();
  -  AMbody = document.getElementsByTagName("body")[0];
  -  AMprocessNode(AMbody, false);
  +function AMprocessNode(n, linebreaks, spanclassAM) {
  +  var frag,st;
  +  if (spanclassAM!=null) {
  +    frag = document.getElementsByTagName("span")
  +    for (var i=0;i<frag.length;i++)
  +      if (frag[i].className == "AM")
  +        AMprocessNodeR(frag[i],linebreaks);
  +  } else {
  +    try {
  +      st = n.innerHTML;
  +    } catch(err) {}
  +    if (st==null || 
  +        st.indexOf(AMdelimiter1)!=-1 || st.indexOf(AMdelimiter2)!=-1) 
  +      AMprocessNodeR(n,linebreaks);
  +  }
     if (isIE) { //needed to match size and font of formula to surrounding text
  -    var frag = document.getElementsByTagName('math');
  +    frag = document.getElementsByTagName('math');
       for (var i=0;i<frag.length;i++) frag[i].update()
     }
   }
   
  -function translateById(objId) {
  -  AMbody = document.getElementById(objId);
  -  AMprocessNode(AMbody, false);
  -  if (isIE) { //needed to match size and font of formula to surrounding text
  -    var frag = document.getElementsByTagName('math');
  -    for (var i=0;i<frag.length;i++) frag[i].update()
  +var AMbody;
  +var AMnoMathML = false, AMtranslated = false;
  +
  +function translate(spanclassAM) {
  +  if (!AMtranslated) { // run this only once
  +    AMtranslated = true;
  +    AMinitSymbols();
  +    AMbody = document.getElementsByTagName("body")[0];
  +    AMprocessNode(AMbody, false, spanclassAM);
     }
   }
  -  AMinitSymbols();
  +
  +/* disable it for MoniWiki
  +if (isIE) { // avoid adding MathPlayer info explicitly to each webpage
  +  document.write("<object id=\"mathplayer\"\
  +  classid=\"clsid:32F66A20-7614-11D4-BD11-00104BD3F987\"></object>");
  +  document.write("<?import namespace=\"m\" implementation=\"#mathplayer\"?>");
  +}
  +
  +// GO1.1 Generic onload by Brothercake 
  +// http://www.brothercake.com/
  +//onload function (replaces the onload="translate()" in the <body> tag)
  +function generic()
  +{
  +  translate();
  +};
  +//setup onload function
  +if(typeof window.addEventListener != 'undefined')
  +{
  +  //.. gecko, safari, konqueror and standard
  +  window.addEventListener('load', generic, false);
  +}
  +else if(typeof document.addEventListener != 'undefined')
  +{
  +  //.. opera 7
  +  document.addEventListener('load', generic, false);
  +}
  +else if(typeof window.attachEvent != 'undefined')
  +{
  +  //.. win/ie
  +  window.attachEvent('onload', generic);
  +}
  +//** remove this condition to degrade older browsers
  +else
  +{
  +  //.. mac/ie5 and anything else that gets this far
  +  //if there's an existing onload function
  +  if(typeof window.onload == 'function')
  +  {
  +    //store it
  +    var existing = onload;
  +    //add new onload handler
  +    window.onload = function()
  +    {
  +      //call existing onload function
  +      existing();
  +      //call generic onload function
  +      generic();
  +    };
  +  }
  +  else
  +  {
  +    //setup onload function
  +    window.onload = generic;
  +  }
  +}
  +
  +*/
  
  
  


wkpark      2006/12/24 01:45:49

  Modified:    plugin   UploadFile.php Gallery.php theme.php ISBN.php
  Log:
  UploadFile plugin: enable to upload files without ext.
  Gallery plugin: check thumbnail width properly.
  theme plugin: check the header.php
  ISBN plugin: check international code for Korean
  asciimathmal processor: define js function on the fly
  
  Revision  Changes    Path
  1.31      +18 -5     moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- UploadFile.php	20 Dec 2006 23:00:42 -0000	1.30
  +++ UploadFile.php	23 Dec 2006 16:45:49 -0000	1.31
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.30 2006/12/20 23:00:42 wkpark Exp $
  +// $Id: UploadFile.php,v 1.31 2006/12/23 16:45:49 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -20,6 +20,7 @@
         $count=1;
         $files['upfile']['name'][]=&$_FILES['upfile']['name'];
         $files['upfile']['tmp_name'][]=&$_FILES['upfile']['tmp_name'];
  +      $files['upfile']['type'][]=&$_FILES['upfile']['type'];
         $options['rename']=array($options['rename']);
         $options['replace']=array($options['replace']);
       }
  @@ -108,12 +109,23 @@
     if (!$upfilename) continue;
     else if ($upfilename) $uploaded++;
   
  +  $no_ext=0;
  +  $type='';
  +  if (!$fname) {
  +    $no_ext=1;
  +    $fname[1]=$upfilename;
  +    $fname[2]='';
  +    // XXX
  +    if ($DBInfo->use_filetype) $type=$files['upfile']['type'] ? $files['upfile']['type']:'text/plain';
  +    else $fname[2]='txt'; // XXX
  +  }
  +
     # upload file protection
     if ($DBInfo->pds_allowed)
        $pds_exts=$DBInfo->pds_allowed;
     else
        $pds_exts="png|jpg|jpeg|gif|mp3|zip|tgz|gz|txt|css|exe|pdf|hwp";
  -  if (!preg_match("/(".$pds_exts.")$/i",$fname[2])) {
  +  if (!$no_ext and !preg_match("/(".$pds_exts.")$/i",$fname[2])) {
        $msg.=sprintf(_("%s is not allowed to upload"),$upfilename)."<br/>\n";
        continue;
     } else {
  @@ -170,10 +182,11 @@
   
     # is file already exists ?
     $dummy=0;
  -  while (file_exists($newfile_path)) {
  +  $myext=$fname[2] ? '.'.$fname[2]:'';
  +  while (@file_exists($newfile_path)) {
        $dummy=$dummy+1;
        $ufname=$fname[1]."_".$dummy; // rename file
  -     $upfilename=$ufname.".$fname[2]";
  +     $upfilename=$ufname.$myext;
        $newfile_path= $dir."/".$upfilename;
     }
    
  @@ -193,7 +206,7 @@
     if (!$test) {
       $msg.=sprintf(_("Fail to copy \"%s\" to \"%s\""),$upfilename,$file_path);
       $msg.='<br />'._("Please check your php.ini setting");
  -    $msg.='<br />'."<tt>upload_max_filesize=".ini_get('upload_max_filesize').'</tt>';
  +    $msg.='<br />'."<tt>upload_max_filesize=".ini_get('upload_max_filesize').'</tt><br />';
       continue;
     }
   
  
  
  
  1.33      +14 -5     moniwiki/plugin/Gallery.php
  
  Index: Gallery.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Gallery.php,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- Gallery.php	8 Dec 2006 04:17:10 -0000	1.32
  +++ Gallery.php	23 Dec 2006 16:45:49 -0000	1.33
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Gallery]]
   //
  -// $Id: Gallery.php,v 1.32 2006/12/08 04:17:10 wkpark Exp $
  +// $Id: Gallery.php,v 1.33 2006/12/23 16:45:49 wkpark Exp $
   
   function get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -214,6 +214,8 @@
     }
     $width=$selected ? $default_width:$img_default_width;
   
  +  $thumb_width=$DBInfo->thumb_width ? $DBInfo->thumb_width:'250';
  +
     $mtime=file_exists($dir."/list.txt") ? filemtime($dir."/list.txt"):0;
     if ((filemtime($dir) > $mtime) or $update) {
       unset($upfiles);
  @@ -286,12 +288,12 @@
   
               $myfunc='imagecreatefrom'.$imgtype;
               $source= $myfunc($fname);
  -            imagecopyresized($thumb, $source, 0,0,0,0, $width, $nh, $w, $h);
  +            imagecopyresized($thumb, $source, 0,0,0,0, $thumb_width, $nh, $w, $h);
               $myfunc='image'.$imgtype;
               $myfunc($thumb, $dir.'/thumbnails/'.$file);
             }
           } else {
  -          $fp=popen("convert -scale ".$width." ".$dir."/".$file." ".$dir."/thumbnails/".$file.
  +          $fp=popen("convert -scale ".$thumb_width." ".$dir."/".$file." ".$dir."/thumbnails/".$file.
             $formatter->NULL,'r');
             @pclose($fp);
           }
  @@ -299,7 +301,9 @@
         if (!$selected and file_exists($dir."/thumbnails/".$file)) {
           $thumb=($key == $value) ? $prefix.'thumbnails/'.$id:
             str_replace('value=','value=thumbnails/'.$id,$prefix);
  -        $object="<img class='imgGallery' src='$thumb' alt='$file' />";
  +        if ($thumb_width > $width) $mywidth=" width='".$width."' ";
  +        else $mywidth='';
  +        $object="<img class='imgGallery' src='$thumb' $mywidth alt='$file' />";
         } else {
           $nwidth=$width;
           if (function_exists('getimagesize')) {
  @@ -324,6 +328,7 @@
   #    $size=round($size,2).' '.$unit[$i];
   
       $comment='';
  +    if ($width > 100):
       $comment_btn='';
       $comment_btn=$nocomment ? '':_("add comment");
       $imginfo=(!$nocomment or $selected) ? "$date ($size) ":'';
  @@ -343,11 +348,15 @@
         }
         $comment=str_replace("\\n","<br/>\n",$comment);
       }
  -    $out.="<td $col_td_width align='center' valign='top'>$top_link<div class='$img_class' $img_style><a href='$link'$href_attr>$object</a><br />".$imginfo;
  +    endif;
  +
  +    $out.="<td $col_td_width align='center' valign='top'>$top_link<div class='$img_class' $img_style><a href='$link'$href_attr>$object</a>";
  +    if ($imginfo) $out.="<br />".$imginfo;
       if ($comment_btn)
         $out.='['.$formatter->link_tag($formatter->page->urlname,"?action=gallery&amp;value=$id",$comment_btn)."]<br />\n";
       $out.='</div>'.$bot_link;
       if ($comment) $out.="<div class='gallery-comments' $comment_style>$comment</div>";
  +
       $out.="</td>\n";
       if ($idx % $col == 0) $out.="</tr>\n<tr>\n";
       $idx++;
  
  
  
  1.9       +4 -3      moniwiki/plugin/theme.php
  
  Index: theme.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/theme.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- theme.php	19 Jul 2006 23:48:05 -0000	1.8
  +++ theme.php	23 Dec 2006 16:45:49 -0000	1.9
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // Theme plugin for the MoniWiki
   //
  -// $Id: theme.php,v 1.8 2006/07/19 23:48:05 wkpark Exp $
  +// $Id: theme.php,v 1.9 2006/12/23 16:45:49 wkpark Exp $
   //
   
   function do_theme($formatter,$options) {
  @@ -88,8 +88,9 @@
     $handle = @opendir("$path/theme");
     if (is_resource($handle)) {
       while ($file = readdir($handle)) {
  -      if (!in_array($file,array('.','..','RCS','CVS')) and is_dir("$path/theme/".$file))
  -        $themes[]= $file;
  +      if (!in_array($file,array('.','..','RCS','CVS')) and is_dir("$path/theme/".$file) and
  +        file_exists($path.'/theme/'.$file.'/header.php'))
  +          $themes[]= $file;
       }
     }
   
  
  
  
  1.10      +11 -2     moniwiki/plugin/ISBN.php
  
  Index: ISBN.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/ISBN.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- ISBN.php	15 Jul 2006 19:07:35 -0000	1.9
  +++ ISBN.php	23 Dec 2006 16:45:49 -0000	1.10
  @@ -3,11 +3,14 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a ISBN macro plugin for the MoniWiki
   //
  -// $Id: ISBN.php,v 1.9 2006/07/15 19:07:35 wkpark Exp $
  +// $Id: ISBN.php,v 1.10 2006/12/23 16:45:49 wkpark Exp $
   
   function macro_ISBN($formatter,$value="") {
     global $DBInfo;
   
  +  // http://www.isbn-international.org/en/identifiers/allidentifiers.html
  +  $default_map=array('89'=>'Aladdin');
  +
     $ISBN_MAP="IsbnMap";
     $DEFAULT=<<<EOS
   Amazon http://www.amazon.com/exec/obidos/ISBN= http://images.amazon.com/images/P/\$ISBN.01.MZZZZZZZ.gif
  @@ -84,7 +87,13 @@
     if ($match[3]) {
       if (strtolower($match[2][0])=='k') $lang='Aladdin';
       else $lang=$match[3];
  -  } else $lang=$DEFAULT_ISBN;
  +  } else {
  +    $lang_code=substr($isbn,0,2);
  +    if ($default_map[$lang_code])
  +      $lang=$default_map[$lang_code];
  +    else
  +      $lang=$DEFAULT_ISBN;
  +  }
   
     $attr='';
     $ext='';
  
  
  


wkpark      2006/12/24 01:45:49

  Modified:    plugin/processor asciimathml.php
  Log:
  UploadFile plugin: enable to upload files without ext.
  Gallery plugin: check thumbnail width properly.
  theme plugin: check the header.php
  ISBN plugin: check international code for Korean
  asciimathmal processor: define js function on the fly
  
  Revision  Changes    Path
  1.3       +22 -3     moniwiki/plugin/processor/asciimathml.php
  
  Index: asciimathml.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/asciimathml.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- asciimathml.php	28 Mar 2005 08:49:00 -0000	1.2
  +++ asciimathml.php	23 Dec 2006 16:45:49 -0000	1.3
  @@ -7,7 +7,7 @@
   //
   // download the following javascript in the local/ dir to enable this processor:
   //  http://www1.chapman.edu/~jipsen/mathml/ASCIIMathML.js
  -//  and add small code:
  +//  and add small code or set $_add_func=1;
   //-----x8-----
   // function translateById(objId) {
   //   AMbody = document.getElementById(objId);
  @@ -23,11 +23,13 @@
   // 1. set $inline_latex='asciimathml';
   // 2. replace the latex processor: $processors=array('latex'=>'asciimathml');
   //
  -// $Id: asciimathml.php,v 1.2 2005/03/28 08:49:00 wkpark Exp $
  +// $Id: asciimathml.php,v 1.3 2006/12/23 16:45:49 wkpark Exp $
   
   function processor_asciimathml($formatter,$value="") {
     global $DBInfo;
   
  +  $_add_func=1;
  +
     $flag = 0;
     $id=&$GLOBALS['_transient']['asciimathml'];
     if ( !$id ) { $flag = 1; $id = 1; }
  @@ -39,12 +41,29 @@
   
     if ( $flag ) {
       $out .= "<script type=\"text/javascript\" src=\"" .
  -    $DBInfo->url_prefix ."/local/ASCIIMathML.js\"></script>";
  +    $DBInfo->url_prefix ."/local/ASCIIMathML.js\"></script>\n";
       if (preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']))
         $out.='<object id="mathplayer"'.
           ' classid="clsid:32F66A20-7614-11D4-BD11-00104BD3F987">'.
           '</object>'.
           '<?import namespace="mml" implementation="#mathplayer"?>';
  +
  +    if ($_add_func)
  +      $out.=<<<AJS
  +<script type="text/javascript">
  +/*<![CDATA[*/
  +function translateById(objId) {
  +  AMbody = document.getElementById(objId);
  +  AMprocessNode(AMbody, false);
  +  if (isIE) { //needed to match size and font of formula to surrounding text
  +    var frag = document.getElementsByTagName('math');
  +    for (var i=0;i<frag.length;i++) frag[i].update()
  +  }
  +}
  +  AMinitSymbols();
  +/*]]>*/
  +</script>
  +AJS;
     }
   
     $out .= "<div id=\"asciimathml" . $id . "\">$value</div>" .
  
  
  


wkpark      2006/12/24 01:46:23

  Modified:    plugin   Attachment.php
  Log:
  support embeded img data for the mozilla firefox
  
  Revision  Changes    Path
  1.24      +9 -3      moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- Attachment.php	15 Dec 2006 14:52:02 -0000	1.23
  +++ Attachment.php	23 Dec 2006 16:46:23 -0000	1.24
  @@ -7,13 +7,13 @@
   // Name: Attachment
   // Description: Attachment Plugin
   // URL: MoniWiki:AttachmentPlugin
  -// Version: $Revision: 1.23 $
  +// Version: $Revision: 1.24 $
   // Depend: 1.1.3
   // License: GPL
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.23 2006/12/15 14:52:02 wkpark Exp $
  +// $Id: Attachment.php,v 1.24 2006/12/23 16:46:23 wkpark Exp $
   
   function macro_Attachment($formatter,$value,$option='') {
     global $DBInfo;
  @@ -80,7 +80,13 @@
       }
   
       if ($attrs['align']) $attr.='class="img'.ucfirst($attrs['align']).'" ';
  -  } else if (($dummy=strpos($value,','))) {
  +  }
  +
  +  if (preg_match('/^data:image\/(png|jpg|jpeg);base64,/',$value)) {
  +    return "<img src='".$value."' $attr />";
  +  }
  +
  +  if (!$attr and ($dummy=strpos($value,','))) {
       # for Attachment macro
       $args=explode(',',substr($value,$dummy+1));
       $value=substr($value,0,$dummy);
  
  
  


wkpark      2006/12/27 16:21:57

  Modified:    .        wiki.php
  Log:
  enhanced latex processor: support 'renumbering' and 'all-in-one'
  
  Revision  Changes    Path
  1.340     +43 -7     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.339
  retrieving revision 1.340
  diff -u -r1.339 -r1.340
  --- wiki.php	23 Dec 2006 16:27:14 -0000	1.339
  +++ wiki.php	27 Dec 2006 07:21:56 -0000	1.340
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.339 2006/12/23 16:27:14 wkpark Exp $
  +// $Id: wiki.php,v 1.340 2006/12/27 07:21:56 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.339 $',1,-1);
  +$_revision = substr('$Revision: 1.340 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -1903,9 +1903,11 @@
         }
   
         $notused=array();
  +      $pilines=array();
         while ($body and $body[0] == '#') {
           # extract first line
           list($line, $body)= split("\n", $body,2);
  +        $pilines[]=$line;
           if ($line=='#') break;
           else if ($line[1]=='#') { $notused[]=$line; continue;}
   
  @@ -1915,6 +1917,8 @@
           if (in_array($key,$pikeys)) { $pi[$key]=$val ? $val:1; }
           else $notused[]=$line;
         }
  +      $piline=implode("\n",$pilines);
  +      $piline=$piline ? $piline."\n":'';
         #
         if (isset($pi['#notwins'])) $pi['#twinpages']=0;
         if (isset($pi['#nocamelcase'])) $pi['#camelcase']=0;
  @@ -1931,6 +1935,7 @@
       if ($notused) $body=join("\n",$notused)."\n".$body;
       if ($update_body) $this->page->write($body." "); # workaround XXX
       #if ($update_body) $this->page->write($body);
  +    $pi['raw']=$piline;
       return $pi;
     }
   
  @@ -2004,6 +2009,7 @@
         #return processor_latex($this,"#!latex\n".$url);
         $url=preg_replace('/<\/?sup>/','^',$url);
         if ($url[1] != '$') $opt=array('type'=>'inline');
  +      else $opt=array('type'=>'block');
         return $this->processor_repl($this->inline_latex,$url,$opt);
         break;
       case '#': # Anchor syntax in the MoinMoin 1.1
  @@ -2493,8 +2499,11 @@
     function processor_repl($processor,$value,$options="") {
       $bra='';$ket='';
       if (!empty($this->wikimarkup) and empty($options['nomarkup'])) {
  -      $bra= "<div class='wikiMarkup'><!-- wiki:\n{{{".$value."}}}\n-->";
  -      $ket= '</div>';
  +      if ($processor == 'latex' and $options['type'])
  +        $bra= "<span class='wikiMarkup'><!-- wiki:\n".$value."\n-->";
  +      else
  +        $bra= "<span class='wikiMarkup'><!-- wiki:\n{{{".$value."}}}\n-->";
  +      $ket= '</span>';
       }
       if (!empty($this->use_smartdiff) and
         preg_match("/\006|\010/", $value)) $processor='plain';
  @@ -2513,7 +2522,7 @@
         }
       }
       if ($f) {
  -      $ret= call_user_func("processor_$processor",$this,$value,$options);
  +      $ret= call_user_func_array("processor_$processor",array(&$this,$value,$options));
         return $bra.$ret.$ket;
       }
       $classname='processor_'.$processor;
  @@ -2838,6 +2847,8 @@
   
       if ($body) {
         $pi=$this->get_instructions($body);
  +      if ($this->wikimarkup and $pi['raw'])
  +        print "<span class='wikiMarkup'><!-- wiki:\n$pi[raw]\n--></span>";
         $this->set_wordrule($pi);
         $fts=array();
         if ($pi['#filter']) $fts=preg_split('/(\||,)/',$pi['#filter']);
  @@ -2864,6 +2875,8 @@
           $body=$this->page->get_raw_body($options);
         }
         $this->set_wordrule($pi);
  +      if ($this->wikimarkup and $pi['raw'])
  +        print "<span class='wikiMarkup'><!-- wiki:\n$pi[raw]\n--></span>";
   
         $fts=array();
         if ($pi['#filter']) $fts=preg_split('/(\||,)/',$pi['#filter']);
  @@ -3315,9 +3328,9 @@
               # FIXME Check open/close tags in $pre
               $out="<pre class='wiki'>\n".$pre."</pre>";
               if ($this->wikimarkup)
  -              $out='<div class="wikiMarkup">'."<!-- wiki:\n{{{\n".
  +              $out='<span class="wikiMarkup">'."<!-- wiki:\n{{{\n".
                   str_replace('}}}','\}}}',$this->pre_line).
  -                "}}}\n-->".$out."</div>";
  +                "}}}\n-->".$out."</span>";
               $line=$out."\n".$line;
               unset($out);
            }
  @@ -3396,6 +3409,29 @@
         $this->sister_on=$sister_save;
       }
   
  +    # postamble
  +    $save= $this->wikimarkup;
  +    $this->wikimarkup=0;
  +    if ($this->postamble) {
  +      $sz=sizeof($this->postamble);
  +      for ($i=0;$i<$sz;$i++) {
  +        $postamble=implode("\n",$this->postamble);
  +        if (!trim($postamble)) continue;
  +        list($type,$name,$val)=explode(':',$postamble,3);
  +        if (in_array($type,array('macro','processor'))) {
  +          switch($type) {
  +            case 'macro':
  +              print $this->macro_repl($name,$val,$options);
  +              break;
  +            case 'processor':
  +              print $this->processor_repl($name,$val,$options);
  +              break;
  +          }
  +        }
  +      }
  +    }
  +    $this->wikimarkup=$save;
  +
       if ($this->foots)
         print $this->macro_repl('FootNote','',$options);
   
  
  
  


wkpark      2006/12/27 16:21:57

  Added:       local    latex.js
  Log:
  enhanced latex processor: support 'renumbering' and 'all-in-one'
  
  Revision  Changes    Path
  1.1                  moniwiki/local/latex.js
  
  Index: latex.js
  ===================================================================
  var __realImg=new Array();
  var __timer=new Array();
  
  function autoTexImgTimer(img,rimg,timer,msec) {
      timer= window.setInterval(function() {
          if (timer != null && rimg.complete == true) {
              window.clearInterval(timer);
              timer=null;
              rimg.title=img.alt;
              img.src=rimg.src;
          }
      },msec);
  }
  
  function autoTexImgLoader(loadingGif) {
      var imgs = document.getElementsByTagName('img');
      var oldImage;
  
      // loop through all img tags
      for (var i=0; i<imgs.length; i++){
          var img = imgs[i];
          var attr = String(img.getAttribute('class'));
  
          if (img.getAttribute('src') && attr.match('tex')) {
              if (img.src.match(/loading\.gif$/))
                  oldImage=img.title; // hack :>
              else
                  oldImage=img.src;
  
              img.title=img.alt;
              img.src=loadingGif;
              __realImg[i] = new Image();
              var rImg=__realImg[i];
  
              __realImg[i].src=String(oldImage);
  
              autoTexImgTimer(img,__realImg[i],__timer[i],500);
          }
      }
  }
  
  autoTexImgLoader(_url_prefix + '/imgs/loading.gif');
  
  // vim:et:sts=4:sw=4:
  
  
  


wkpark      2006/12/27 16:21:57

  Modified:    plugin/processor latex.php
  Log:
  enhanced latex processor: support 'renumbering' and 'all-in-one'
  
  Revision  Changes    Path
  1.16      +107 -14   moniwiki/plugin/processor/latex.php
  
  Index: latex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/latex.php,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- latex.php	20 Dec 2006 23:12:43 -0000	1.15
  +++ latex.php	27 Dec 2006 07:21:57 -0000	1.16
  @@ -6,11 +6,28 @@
   // Usage: {{{#!latex
   // $ \alpha $
   // }}}
  -// $Id: latex.php,v 1.15 2006/12/20 23:12:43 wkpark Exp $
  +// $Id: latex.php,v 1.16 2006/12/27 07:21:57 wkpark Exp $
   
  -function processor_latex($formatter="",$value="") {
  +function _latex_renumber($match,$tag='\\tag') {
  +  // XXX
  +  $num= &$GLOBALS['_latex_eq_num'];
  +  $num++;
  +
  +  if ($tag == '\\tag') $star='*';
  +  else $star='';
  +  $math=rtrim($match[2]);
  +  
  +  return '\\begin{'.$match[1].$star.'}'.$math.$tag.'{'.$num.'}'."\n".'\\end{'.$match[1].$star.'}';
  +}
  +
  +function processor_latex(&$formatter,$value="") {
     global $DBInfo;
   
  +  if (!$formatter->latex_uniq) {
  +    $formatter->latex_all='';
  +    $formatter->latex_uniq=array();
  +  }
  +
     $latex_convert_options=
       $DBInfo->latex_convert_options ? $DBInfo->latex_convert_options:"-trim -crop 0x0 -density 120x120";
   
  @@ -27,27 +44,54 @@
     if ($value[0]=='#' and $value[1]=='!')
       list($line,$value)=explode("\n",$value,2);
   
  -  if (!$value) return '';
  +  if (!$value) {
  +    if (!$DBInfo->latex_allinone) return '';
  +  }
  +
  +  $tex=$value;
   
  -  $tex=&$value;
  +  if ($DBInfo->latex_renumbering) {
  +    $GLOBALS['_latex_eq_num']=$formatter->latex_num ? $formatter->latex_num:0;
  +    // renumbering
  +    //  just remove numbers and use \\tag{num}
  +    $ntex=preg_replace_callback('/\\\\begin\{\s*(equation)\s*\}((.|\n)+)\\\\end\{\s*\1\s*\}/',
  +      '_latex_renumber',$tex);
  +    #print '<pre>'.$ntex.'</pre>';
  +    if ($tex != $ntex) { $tex=$ntex; }
  +    $formatter->latex_num=$GLOBALS['_latex_eq_num']; // save
  +  } else if ($DBInfo->latex_allinone) {
  +    $ntex=preg_replace('/\\\\begin\{\s*(equation)\s*\}((.|\n)+)\\\\end\{\s*\1\s*\}/e',
  +      "_latex_renumber(array('','\\1','\\2'),\"\n%%\")",$tex);
  +    if ($tex != $ntex) { $tex=$ntex; }
  +    #print '<pre>'.$ntex.'</pre>';
  +  }
   
     if ($DBInfo->latex_template and file_exists($DBInfo->data_dir.'/'.$DBInfo->latex_template)) {
  -    $src=implode('',file($DBInfo->data_dir.'/'.$DBInfo->latex_template));
  -    $src=str_replace('@TEX@',$tex,$src);
  +    $templ=implode('',file($DBInfo->data_dir.'/'.$DBInfo->latex_template));
     } else {
  -    $src="\\documentclass[10pt,notitlepage]{article}
  +    $templ="\\documentclass[10pt,notitlepage]{article}
   \\usepackage{amsmath}
   \\usepackage{amssymb}
   \\usepackage{amsfonts}$DBInfo->latex_header
   %%\usepackage[all]{xy}
   \\pagestyle{empty}
   \\begin{document}
  -$tex
  +@TEX@
   \\end{document}
   ";
     }
   
  -  $uniq=md5($src);
  +  $src=str_replace('@TEX@',$tex,$templ);
  +
  +  $uniq=$tex ? md5($src):$formatter->latex_uniq[sizeof($formatter->latex_uniq)-1];
  +
  +  // check image file exists
  +  if ($DBInfo->latex_allinone and $tex) {
  +    $formatter->latex_uniq[]=$uniq;
  +    $formatter->latex_all.=$tex."\n\\pagebreak\n";
  +    #print '<pre>'.$tex.'</pre>';
  +  }
  +
     if ($DBInfo->cache_public_dir) {
       $fc=new Cache_text('latex',2,'png',$DBInfo->cache_public_dir);
       $pngname=$fc->_getKey($uniq,0);
  @@ -70,8 +114,28 @@
     if(getenv("OS")=="Windows_NT") {
       $NULL='NUL';
     }
  -  
  -  if ($formatter->preview || $formatter->refresh || !file_exists($png)) {
  +
  +  if ($formatter->preview and !$DBInfo->latex_allinone) {
  +    $bra='<span class="previewTex"><input type="checkbox" class="previewTex" name="_tex_'.$uniq.'" />';
  +    $ket='</span>';
  +  }
  +
  +  $img_exists=file_exists($png);
  +  while ($formatter->preview || $formatter->refresh || !$img_exists) {
  +  //if ($options['_tex_'.$uniq] || $formatter->refresh || !file_exists($png)) {
  +
  +     if ($DBInfo->latex_allinone) {
  +       if (!$value) {
  +         $js= '<script type="text/javascript" src="'.$DBInfo->url_prefix.'/local/latex.js"></script>';
  +
  +         $src=str_replace('@TEX@',$formatter->latex_all,$templ);
  +         $uniq=md5($src);
  +       } else {
  +         $formatter->postamble['latex']='processor:latex:';
  +         break;
  +       }
  +     }
  +
        $fp= fopen($vartmp_dir."/$uniq.tex", "w");
        fwrite($fp, $src);
        fclose($fp);
  @@ -110,14 +174,43 @@
        #$cmd= "$convert -transparent white -trim -crop 0x0 -density 120x120 $vartmp_dir/$uniq.ps $outpath";
        $fp=popen($cmd.$formatter->NULL,'r');
        pclose($fp);
  +
  +
  +     if ($DBInfo->latex_allinone) {
  +        $sz=sizeof($formatter->latex_uniq);
  +        for ($i=0;$i<$sz;$i++) {
  +          $id=$formatter->latex_uniq[$i];
  +          if ($DBInfo->cache_public_dir) {
  +            $pngname=$fc->_getKey($id,0);
  +            $img= $DBInfo->cache_public_dir.'/'.$pngname;
  +          } else {
  +            $img=$cache_dir.'/'.$id.'.png';
  +          }
  +          rename($outpath.'.'.$i,$img);
  +        }
  +        $formatter->latex_all='';
  +        $formatter->latex_uniq=array();
  +        $formatter->postamble['latex']='';
  +
  +     }
  +
        #unlink($vartmp_dir."/$uniq.log");
        unlink($vartmp_dir."/$uniq.aux");
        @unlink($vartmp_dir."/$uniq.bib");
        @unlink($vartmp_dir."/$uniq.ps");
  +     $img_exists=true;
  +     break;
  +  }
  +  if (!$value) return $js;
  +  $alt=str_replace("'","&#39;",$value);
  +  $title=$alt;
  +  if (!$img_exists) {
  +    $title=$png_url;
  +    if ($DBInfo->latex_allinone==1)
  +      $png_url=$DBInfo->imgs_dir.'/loading.gif';
     }
  -  $alt=str_replace("'","&#39;",$tex);
  -  return $log."<img class='tex' src='$png_url' alt='$alt' ".
  -         "title='$alt' />";
  +  return $log.$bra."<img class='tex' src='$png_url' rel='$uniq' alt='$alt' ".
  +         "title='$title' />".$ket;
   }
   
   // vim:et:sts=2:
  
  
  


wkpark      2006/12/27 16:26:33

  Modified:    .        wikilib.php
  Log:
  update for wikiwyg
  
  Revision  Changes    Path
  1.222     +3 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.221
  retrieving revision 1.222
  diff -u -r1.221 -r1.222
  --- wikilib.php	23 Dec 2006 16:27:14 -0000	1.221
  +++ wikilib.php	27 Dec 2006 07:26:33 -0000	1.222
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.221 2006/12/23 16:27:14 wkpark Exp $
  +// $Id: wikilib.php,v 1.222 2006/12/27 07:26:33 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1427,7 +1427,7 @@
         } else
           $formatter->send_title(_("Conflict error!"),"",$options);
         $options['savetext']=$savetext;
  -      print macro_EditText($formatter,$value,$options); # XXX
  +      print '<div id="editor_area">'.macro_EditText($formatter,$value,$options).'</div>'; # XXX
   
         print $menu;
         print "<div id='wikiPreview'>\n";
  @@ -1473,7 +1473,7 @@
       $options['savetext']=$savetext;
   
       $formatter->preview=1;
  -    print macro_EditText($formatter,$value,$options); # XXX
  +    print '<div id="editor_area">'.macro_EditText($formatter,$value,$options).'</div>'; # XXX
       print $DBInfo->hr;
       print $menu;
       print "<div id='wikiPreview'>\n";
  
  
  


wkpark      2006/12/27 16:57:18

  Modified:    .        wiki.php
  Log:
  http://kldp.net/forum/forum.php?thread_id=8223&forum_id=712
  
  Revision  Changes    Path
  1.341     +20 -14    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.340
  retrieving revision 1.341
  diff -u -r1.340 -r1.341
  --- wiki.php	27 Dec 2006 07:21:56 -0000	1.340
  +++ wiki.php	27 Dec 2006 07:57:17 -0000	1.341
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.340 2006/12/27 07:21:56 wkpark Exp $
  +// $Id: wiki.php,v 1.341 2006/12/27 07:57:17 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.340 $',1,-1);
  +$_revision = substr('$Revision: 1.341 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2501,8 +2501,10 @@
       if (!empty($this->wikimarkup) and empty($options['nomarkup'])) {
         if ($processor == 'latex' and $options['type'])
           $bra= "<span class='wikiMarkup'><!-- wiki:\n".$value."\n-->";
  -      else
  -        $bra= "<span class='wikiMarkup'><!-- wiki:\n{{{".$value."}}}\n-->";
  +      else {
  +        if ($value{0}!='#' and $value{1}!='!') $notag="\n";
  +        $bra= "<span class='wikiMarkup'><!-- wiki:\n{{{".$notag.$value."}}}\n-->";
  +      }
         $ket= '</span>';
       }
       if (!empty($this->use_smartdiff) and
  @@ -3321,16 +3323,20 @@
               $in_quote=0;
            } else {
               # htmlfy '<', '&'
  -            $pre=str_replace(array('&','<'),
  -                             array("&amp;","&lt;"),
  -                            $this->pre_line);
  -            $pre=preg_replace("/&lt;(\/?)(ins|del)/","<\\1\\2",$pre);
  -            # FIXME Check open/close tags in $pre
  -            $out="<pre class='wiki'>\n".$pre."</pre>";
  -            if ($this->wikimarkup)
  -              $out='<span class="wikiMarkup">'."<!-- wiki:\n{{{\n".
  -                str_replace('}}}','\}}}',$this->pre_line).
  -                "}}}\n-->".$out."</span>";
  +            if ($DBInfo->default_pre) {
  +              $out=$this->processor_repl($DBInfo->default_pre,$this->pre_line,$options);
  +            } else {
  +              $pre=str_replace(array('&','<'),
  +                               array("&amp;","&lt;"),
  +                               $this->pre_line);
  +              $pre=preg_replace("/&lt;(\/?)(ins|del)/","<\\1\\2",$pre);
  +              # FIXME Check open/close tags in $pre
  +              $out="<pre class='wiki'>\n".$pre."</pre>";
  +              if ($this->wikimarkup)
  +                $out='<span class="wikiMarkup">'."<!-- wiki:\n{{{\n".
  +                  str_replace('}}}','\}}}',$this->pre_line).
  +                  "}}}\n-->".$out."</span>";
  +            }
               $line=$out."\n".$line;
               unset($out);
            }
  
  
  


wkpark      2006/12/27 16:57:18

  Modified:    plugin/processor pre.php
  Log:
  http://kldp.net/forum/forum.php?thread_id=8223&forum_id=712
  
  Revision  Changes    Path
  1.2       +11 -6     moniwiki/plugin/processor/pre.php
  
  Index: pre.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/pre.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- pre.php	26 Jan 2006 15:57:01 -0000	1.1
  +++ pre.php	27 Dec 2006 07:57:18 -0000	1.2
  @@ -10,7 +10,7 @@
   //     blah
   // }}}
   //
  -// $Id: pre.php,v 1.1 2006/01/26 15:57:01 wkpark Exp $
  +// $Id: pre.php,v 1.2 2006/12/27 07:57:18 wkpark Exp $
   
   function processor_pre($formatter,$value) {
       if ($value[0]=='#' and $value[1]=='!')
  @@ -22,12 +22,17 @@
       #$pre=preg_replace($formatter->baserule,$formatter->baserepl,$value);
       #$pre=
       #    preg_replace("/(".$wordrule.")/e","\$formatter->link_repl('\\1')",$value);
  -    $pre = htmlspecialchars($value);
  +    #$pre = htmlspecialchars($value);
  +
       $pre = str_replace(
  -        array("\t", "\n"),
  -        array('&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;',"<br />\n"),
  -        $pre);
  -    $pre=preg_replace("/(\s\s+)/e","str_repeat('&nbsp;',strlen('\\1'))",$pre);
  +        array('&','<', '>', "\t", "\n", '  '),
  +        array('&amp;','&lt;', '&gt;',
  +            '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;',
  +            "<br />\n",
  +            ' &nbsp;'),
  +        $value);
  +
  +    #$pre=preg_replace("/(\s\s+)/e","str_repeat('&nbsp;',strlen('\\1'))",$pre);
   
       $out = "<div class='preWhiteSpace'>$pre</div>";
   
  
  
  


wkpark      2006/12/27 17:00:58

  Modified:    local    moniwyg.js
  Log:
  fixed iframe problem with the firefox
  
  Revision  Changes    Path
  1.12      +93 -30    moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- moniwyg.js	23 Dec 2006 16:27:14 -0000	1.11
  +++ moniwyg.js	27 Dec 2006 08:00:57 -0000	1.12
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.11 2006/12/23 16:27:14 wkpark Exp $
  +// $Id: moniwyg.js,v 1.12 2006/12/27 08:00:57 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -73,6 +73,25 @@
       return;
   }
   
  +Wikiwyg.prototype.switchMode = function(new_mode_key) {
  +    var new_mode = this.modeByName(new_mode_key);
  +    var old_mode = this.current_mode;
  +    var self = this;
  +    new_mode.enableStarted();
  +    old_mode.disableStarted();
  +    old_mode.toHtml(
  +        function(html) {
  +            self.previous_mode = old_mode;
  +            new_mode.fromHtml(fixup_markup_style(html));
  +            old_mode.disableThis();
  +            new_mode.enableThis();
  +            new_mode.enableFinished();
  +            old_mode.disableFinished();
  +            self.current_mode = new_mode;
  +        }
  +    );
  +}
  +
   Wikiwyg.prototype.editMode = function(form,text) {
       var self = this;
       var dom = document.createElement('div');
  @@ -88,7 +107,7 @@
           var myWikiwyg = new Wikiwyg.Wikitext();
   
           myWikiwyg.convertWikitextToHtml(wikitext,
  -            function(new_html) { self.current_mode.fromHtml(new_html); });
  +            function(new_html) { self.current_mode.fromHtml(fixup_markup_style(new_html)); });
       }
       else {
           this.current_mode.textarea.value = wikitext;
  @@ -96,28 +115,88 @@
   
       this.toolbarObject.resetModeSelector();
       this.current_mode.enableThis();
  -    this.current_mode.enableThis(); // hack !!
  +    //this.current_mode.enableThis(); // hack !!
       this.myinput=dom.getElementsByTagName('input');
   }
   
  +//
  +// change display style to 'block' for multiline markups
  +//
  +function fixup_markup_style(html)
  +{
  +    var dom = document.createElement('div');
  +    dom.innerHTML = html;
  +
  +    var spans=dom.getElementsByTagName('span');
  +
  +    if (spans.length) {
  +        for (var i=0;i<spans.length;i++) {
  +            var cname= spans[i].getAttribute('class');
  +            if (cname == 'wikiMarkup' && spans[i].innerHTML) {
  +                // check marcos
  +                var match=spans[i].innerHTML.match(/^(<!-- wiki:\n[^\n]+\n-->)/m);
  +                if (!match) // check processors
  +                    match=spans[i].innerHTML.match(/^(<!-- wiki:\n\{\{\{(.|\n)+\}\}\}\n-->)/m);
  +                if (match) {
  +                    var test=spans[i].innerHTML.substr(match[1].length);
  +                    if (test.indexOf("\n") != -1)
  +                        spans[i].style.display='block';
  +                }
  +            }
  +        }
  +        return dom.innerHTML;
  +    } else {
  +        return html;
  +    }
  +}
  +
   proto = Wikiwyg.Wysiwyg.prototype;
   
   proto.get_edit_iframe = function() {
  -    var iframe;
  -    if (this.config.iframeId) {
  +    var iframe=null;
  +    if (this.config.iframeId)
           iframe = document.getElementById(this.config.iframeId);
  -        iframe.iframe_hack = true;
  -    }
  -    else if (this.config.iframeObject) {
  +    else if (this.config.iframeObject)
           iframe = this.config.iframeObject;
  +    if (iframe)
           iframe.iframe_hack = true;
  -    }
       else {
           // XXX iframe need to be a element of the body.
           iframe = document.createElement('iframe');
           var body = document.getElementsByTagName('body')[0];;
           body.appendChild(iframe);
       }
  +
  +    // from http://www.codingforums.com/archive/index.php?t-63511.html
  +    var self=this;
  +    iframe.onload = function() {
  +        var doc = iframe.contentDocument || iframe.contentWindow.document;
  +        //Fx workaround: delay modifying editorDoc.body right after iframe onload event
  +        var head = doc.getElementsByTagName("head")[0];
  +        setTimeout(function() {
  +            doc.designMode = 'on';
  +
  +            self.apply_stylesheets();
  +            var link = doc.createElement('link');
  +            link.setAttribute('rel', 'STYLESHEET');
  +            link.setAttribute('type', 'text/css');
  +            link.setAttribute('media', 'screen');
  +            var loc = location.protocol + '//' + location.host;
  +            if (location.port) loc += ':' + location.port;
  +            link.setAttribute('href',
  +                loc + _url_prefix + '/local/Wikiwyg/css/wysiwyg.css');
  +            head.appendChild(link);
  +
  +            self.fix_up_relative_imgs();
  +            self.clear_inner_html();
  +            self.enable_keybindings();
  +        }, 0);
  +
  +        //editorDoc.onkeydown = editorDoc_onkeydown;
  +        //where editorDoc_onkeydown is the keydown event handler you defined earlier
  +        iframe = null; //IE mem leak fix
  +    }
  +
       return iframe;
   }
   
  @@ -155,28 +234,9 @@
       this.edit_iframe.width = '99%';
       this.setHeightOf(this.edit_iframe);
       this.get_edit_document().designMode = 'on';
  -    this.enable_keybindings();
       // XXX - Doing stylesheets in initializeObject might get rid of blue flash
       //
  -    var doc    = this.get_edit_document();
  -    var head   = doc.getElementsByTagName("head")[0];
  -    if (head != null) {
  -        var styles = doc.styleSheets;
  -        if (styles.length == 0) {
  -            this.apply_stylesheets();
  -            var link = doc.createElement('link');
  -            link.setAttribute('rel', 'STYLESHEET');
  -            link.setAttribute('type', 'text/css');
  -            link.setAttribute('media', 'screen');
  -            var loc = location.protocol + '//' + location.host;
  -            if (location.port) loc += ':' + location.port;
  -            link.setAttribute('href',
  -                loc + _url_prefix + '/local/Wikiwyg/css/wysiwyg.css');
  -            head.appendChild(link);
  -        }
  -        this.fix_up_relative_imgs();
  -        this.clear_inner_html();
  -    }
  +    // this.edit_iframe.contentWindow;
   }
   
   proto.do_link = function() {
  @@ -575,7 +635,7 @@
       for (var node = element.firstChild; node; node = node.nextSibling) {
           if (node.nodeType == this.COMMENT_NODE_TYPE
               && node.data.match(/^\s*wiki/)) {
  -            var ele=node.nextSibling.firstChild;
  +            var ele=node.nextSibling ? node.nextSibling.firstChild:null;
               if (ele && node.data.match(/\nattachment:/) && ele.tagName && ele.tagName.toLowerCase() == 'img') {
                   // check the attributes of the attached images
                   var style = ele.getAttribute('style');
  @@ -1005,6 +1065,9 @@
       if (form && form.substring(0,5) != 'false') {
               var myConfig = {
                   doubleClickToEdit: true,
  +                wysiwyg: {
  +                    iframeId: 'default-iframe'
  +                },
                   toolbar: {
                       imagesLocation:
                           _url_prefix + '/local/Wikiwyg/moni/images/',
  
  
  


wkpark      2006/12/27 17:00:58

  Modified:    local/Wikiwyg/css moniwyg.css
  Log:
  fixed iframe problem with the firefox
  
  Revision  Changes    Path
  1.4       +1 -1      moniwiki/local/Wikiwyg/css/moniwyg.css
  
  Index: moniwyg.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/css/moniwyg.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- moniwyg.css	21 Dec 2006 10:52:49 -0000	1.3
  +++ moniwyg.css	27 Dec 2006 08:00:58 -0000	1.4
  @@ -29,7 +29,7 @@
   .wikiwyg_button {
   /*  background: #EBE8D5; /* */
   /*  border: 1px solid #EBE8D5; /* */
  -    border: 1px solid #FFFFFF;
  +    border: 1px solid transparent;
       cursor: pointer;
       width: 23px;
       height: 22px;
  
  
  


wkpark      2006/12/27 17:40:58

  Modified:    css      _base.css
  Log:
  add a preWhiteSpace class
  
  Revision  Changes    Path
  1.14      +15 -3     moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- _base.css	23 Dec 2006 06:10:58 -0000	1.13
  +++ _base.css	27 Dec 2006 08:40:58 -0000	1.14
  @@ -45,6 +45,17 @@
     font-family:monospace;
   }
   
  +.preWhiteSpace {
  +  padding-left:6px;
  +  padding-top:6px;
  +  font-family: "Courier New", GulimChe, monospace !important;
  +  background-color:#000000;
  +  color:#c0c0c0;
  +  border:1px solid #D8E1E9;
  +  border-left:10px solid #D8E1E9;
  +  padding:10px;
  +}
  +
   table.wiki {
   /* background-color: #E9ECEF; */
   }
  @@ -180,10 +191,13 @@
     font-family:Trebuchet MS,Georgia,Verdana,sans-serif;
     font-size:28px;
     font-weight:bold;
  -  text-decoration: none;
     display:block;
   }
   
  +.wikiTitle a,.wikiTitle a:active,.wikiTitle a:visited {
  +  text-decoration: none;
  +}
  +
   .clear {
     clear:both;
   }
  @@ -403,8 +417,6 @@
   .wikiMarkup {
     font-family:Bitstream vera sans mono,Courier New,monospace; 
     background-color:#ffff00;
  -  border-left:3px solid #ffff00;
  -  border-right:3px solid #ffff00;
   }
   
   /* since v1.1.3 */
  
  
  


wkpark      2006/12/28 12:38:20

  Modified:    .        wiki.php
  Log:
  support builtin rating system with the Rating plugin
  fix wikiTitle more css friendly
  
  Revision  Changes    Path
  1.342     +28 -10    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.341
  retrieving revision 1.342
  diff -u -r1.341 -r1.342
  --- wiki.php	27 Dec 2006 07:57:17 -0000	1.341
  +++ wiki.php	28 Dec 2006 03:38:20 -0000	1.342
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.341 2006/12/27 07:57:17 wkpark Exp $
  +// $Id: wiki.php,v 1.342 2006/12/28 03:38:20 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.341 $',1,-1);
  +$_revision = substr('$Revision: 1.342 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -1672,6 +1672,7 @@
         ' target="'.$DBInfo->interwiki_target.'"':'';
       $this->filters=$DBInfo->filters;
       $this->postfilters=$DBInfo->postfilters;
  +    $this->use_rating=$DBInfo->use_rating;
   
       if (($p=strpos($page->name,"~")))
         $this->group=substr($page->name,0,$p+1);
  @@ -1872,7 +1873,7 @@
       $pikeys=array('#redirect','#action','#title','#keywords','#noindex',
         '#format','#filter','#postfilter','#twinpages','#notwins','#nocomment',
         '#language','#camelcase','#nocamelcase','#cache','#nocache',
  -      '#singlebracket','#nosinglebracket');
  +      '#singlebracket','#nosinglebracket','#rating');
       $pi=array();
       if (!$body) {
         if (!$this->page->exists()) return array();
  @@ -1995,7 +1996,10 @@
           $url=$col.' '.$url;
         } else if (preg_match('/^((?:\+|\-)([1-6]?))(?=\s)(.*)$/',$url,$m)) {
           if ($m[2]=='') $m[1].='1';
  -        return "<span style='size:$m[1]'>$m[3]</span>";
  +        $fsz=array(
  +          '-5'=>'10%','-4'=>'20%','-3'=>'40%','-2'=>'60%','-1'=>'80%',
  +          '+1'=>'140%','+2'=>'180%','+3'=>'220%','+4'=>'260%','+5'=>'200%');
  +        return "<span style='font-size:".$fsz[$m[1]]."'>$m[3]</span>";
         }
         if ($url[0]==' ' and in_array($url[1],array('#','-','+')) !==false)
           $url=substr($url,1);
  @@ -2849,8 +2853,10 @@
   
       if ($body) {
         $pi=$this->get_instructions($body);
  -      if ($this->wikimarkup and $pi['raw'])
  -        print "<span class='wikiMarkup'><!-- wiki:\n$pi[raw]\n--></span>";
  +      if ($this->wikimarkup and $pi['raw']) {
  +        $pi_html=str_replace("\n","<br />\n",$pi['raw']);
  +        print "<span class='wikiMarkup'><!-- wiki:\n$pi[raw]\n-->$pi_html</span>";
  +      }
         $this->set_wordrule($pi);
         $fts=array();
         if ($pi['#filter']) $fts=preg_split('/(\||,)/',$pi['#filter']);
  @@ -2880,6 +2886,16 @@
         if ($this->wikimarkup and $pi['raw'])
           print "<span class='wikiMarkup'><!-- wiki:\n$pi[raw]\n--></span>";
   
  +      if ($this->use_rating and !$this->wikimarkup) {
  +        $this->pi=$pi;
  +        $old=$this->mid;
  +        if ($pi['#rating']) $rval=$pi['#rating'];
  +        else $rval='5';
  +
  +        print '<div class="wikiRating">'.$this->macro_repl('Rating',$rval,array('mid'=>'page'))."</div>\n";
  +        $this->mid=$old;
  +      }
  +
         $fts=array();
         if ($pi['#filter']) $fts=preg_split('/(\||,)/',$pi['#filter']);
         if ($this->filters) $fts=array_merge($fts,$this->filters);
  @@ -3877,12 +3893,14 @@
       # setup title variables
       #$heading=$this->link_to("?action=fullsearch&amp;value="._urlencode($name),$title);
       if ($DBInfo->use_backlinks) $qext='&amp;backlinks=1';
  -    $title="$groupt<span class='wikiTitle'>$title</span>";
  -    #$title="<span class='wikiTitle'><b>$title</b></span>";
       if ($link)
  -      $title="<a href=\"$link\" class='wikiTitle'>$title</a>";
  +      $title="<a href=\"$link\">$title</a>";
       else if (empty($options['nolink']))
  -      $title=$this->link_to("?action=fullsearch$qext&amp;value="._urlencode($mypgname),$title,"class='wikiTitle'");
  +      $title=$this->link_to("?action=fullsearch$qext&amp;value="._urlencode($mypgname),$title);
  +
  +    $title="$groupt<span class='wikiTitle'>$title</span>";
  +    #$title="<span class='wikiTitle'><b>$title</b></span>";
  +
       $logo=$this->link_tag($DBInfo->logo_page,'',$DBInfo->logo_string);
       $goto_form=$DBInfo->goto_form ?
         $DBInfo->goto_form : goto_form($action,$DBInfo->goto_type);
  
  
  


wkpark      2006/12/28 12:38:52

  Modified:    plugin   Rating.php
  Log:
  support builtin rating system
  
  Revision  Changes    Path
  1.3       +49 -13    moniwiki/plugin/Rating.php
  
  Index: Rating.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Rating.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Rating.php	17 Aug 2006 08:02:21 -0000	1.2
  +++ Rating.php	28 Dec 2006 03:38:52 -0000	1.3
  @@ -7,18 +7,21 @@
   // Name: Rating
   // Description: Rating Plugin
   // URL: MoniWiki:RatingPlugin
  -// Version: $Revision: 1.2 $
  +// Version: $Revision: 1.3 $
   // License: GPL
   //
   // Usage: [[Rating(totalscore,count)]] or [[Rating(initial score)]]
   //
  -// $Id: Rating.php,v 1.2 2006/08/17 08:02:21 wkpark Exp $
  +// $Id: Rating.php,v 1.3 2006/12/28 03:38:52 wkpark Exp $
   
   function macro_Rating($formatter,$value='',$options=array()) {
       global $Config;
       $rating_script=&$GLOBALS['rating_script'];
   
  -    $mid='&amp;mid='.base64_encode($formatter->mid.',Rating,'.$value);
  +    if ($options['mid'])
  +        $mid='&amp;mid='.base64_encode($options['mid'].',Rating,'.$value);
  +    else
  +        $mid='&amp;mid='.base64_encode($formatter->mid.',Rating,'.$value);
   
       $val=explode(',',$value);
       if (sizeof($val)>=2) {
  @@ -86,7 +89,7 @@
       }
       $formatter->send_header('',$options);
   
  -    $raw=$formatter->page->get_raw_body();
  +    $oraw=$formatter->page->get_raw_body();
   
       list($nth,$dum,$v)=explode(',', base64_decode($options['mid']),3);
   
  @@ -107,7 +110,9 @@
   
       $total+=$rating; // increase total rating
   
  -    $raw=str_replace("\n","\1",$raw);
  +    if (is_numeric($nth)):
  +
  +    $raw=str_replace("\n","\1",$oraw);
       $chunk=preg_split("/({{{.+}}})/U",$raw,-1,PREG_SPLIT_DELIM_CAPTURE);
       #print '<pre>';
       #print_r($chunk);
  @@ -145,18 +150,49 @@
               ++$ii;
           }
       }
  -
  -    if (!$matched) {
  -        $options['title']=_("Invalid rating request !");
  -        $formatter->send_title('','',$options);
  -        $formatter->send_footer('',$options);
  -        return;
  -    }
  -
       if (!empty($blocks)) {
           $nnc=preg_replace("/\7(\d+)\7/e",
               "\$blocks[$1]",$nnc);
       }
  +
  +    endif;
  +
  +    if (!$matched) {
  +        if ($DBInfo->use_rating) {
  +            $dum='';
  +            $pi=$formatter->get_instructions($dum);
  +            $old=$pi['#rating'];
  +            $new='#rating '.$total.','.$count;
  +            if ($old) {
  +                list($ts,$cnt)=explode(',',$old);
  +                $raw=preg_replace('/^#rating\s+.*$/m',$new,$oraw,1);
  +            } else {
  +                if (!$formatter->pi)
  +                    $raw=$new."\n".$oraw;
  +                else {
  +                    $body=$oraw;
  +                    $head='';
  +                    while (true) {
  +                        list($line,$body)=explode("\n",$body,2);
  +                        if ($line{0}=='#') $head.=$line."\n";
  +                        else {
  +                            $body=$line."\n".$body;
  +                            break;
  +                        }
  +                    }
  +                    $raw=$head.$new."\n".$body;
  +                }
  +            }
  +            #print "<pre>".$raw."</pre>";
  +            $nnc=&$raw;
  +        } else {
  +            $options['title']=_("Invalid rating request !");
  +            $formatter->send_title('','',$options);
  +            $formatter->send_footer('',$options);
  +            return;
  +        }
  +    }
  +
       $formatter->page->write($nnc);
       $DBInfo->savePage($formatter->page,"Rating",$options);
   
  
  
  


wkpark      2007/01/01 10:09:45

  Added:       imgs/moni2 pref.png
  Log:
  add a pref icon
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/moni2/pref.png
  
  	<<Binary file>>
  
  


wkpark      2007/01/01 10:21:23

  Modified:    .        wiki.php config.php.default
  Log:
  add '#norating' PI
  fixed #format detection method
  
  Revision  Changes    Path
  1.343     +14 -12    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.342
  retrieving revision 1.343
  diff -u -r1.342 -r1.343
  --- wiki.php	28 Dec 2006 03:38:20 -0000	1.342
  +++ wiki.php	1 Jan 2007 01:21:23 -0000	1.343
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.342 2006/12/28 03:38:20 wkpark Exp $
  +// $Id: wiki.php,v 1.343 2007/01/01 01:21:23 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.342 $',1,-1);
  +$_revision = substr('$Revision: 1.343 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -1873,17 +1873,11 @@
       $pikeys=array('#redirect','#action','#title','#keywords','#noindex',
         '#format','#filter','#postfilter','#twinpages','#notwins','#nocomment',
         '#language','#camelcase','#nocamelcase','#cache','#nocache',
  -      '#singlebracket','#nosinglebracket','#rating');
  +      '#singlebracket','#nosinglebracket','#rating','#norating');
       $pi=array();
  -    if (!$body) {
  -      if (!$this->page->exists()) return array();
  -      if ($this->pi) return $this->pi;
  -      $body=$this->page->get_raw_body();
  -      $update_body=1;
  -    }
   
       $format='';
  -    if (!$this->pi['#format']) { # XXX
  +    if (!$body and !$this->pi['#format']) { # XXX
         $pos=strpos($this->page->name,'/') ? 1:0;
         $key=strtok($this->page->name,'/');
         if (isset($Config['pagetype'][$key]) and $f=$Config['pagetype'][$key]) {
  @@ -1892,6 +1886,14 @@
         } else if (isset($Config['pagetype']['*']))
           $format=$Config['pagetype']['*']; // default page type
       }
  +
  +    if (!$body) {
  +      if (!$this->page->exists()) return array();
  +      if ($this->pi) return $this->pi;
  +      $body=$this->page->get_raw_body();
  +      $update_body=1;
  +    }
  +
       if (!$format and $body[0] == '<') {
         list($line, $dummy)= explode("\n", $body,2);
         if (substr($line,0,6) == '<?xml ')
  @@ -2886,11 +2888,11 @@
         if ($this->wikimarkup and $pi['raw'])
           print "<span class='wikiMarkup'><!-- wiki:\n$pi[raw]\n--></span>";
   
  -      if ($this->use_rating and !$this->wikimarkup) {
  +      if ($this->use_rating and !$this->wikimarkup and !$pi['#norating']) {
           $this->pi=$pi;
           $old=$this->mid;
           if ($pi['#rating']) $rval=$pi['#rating'];
  -        else $rval='5';
  +        else $rval='0';
   
           print '<div class="wikiRating">'.$this->macro_repl('Rating',$rval,array('mid'=>'page'))."</div>\n";
           $this->mid=$old;
  
  
  
  1.38      +31 -2     moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- config.php.default	14 Nov 2006 10:59:51 -0000	1.37
  +++ config.php.default	1 Jan 2007 01:21:23 -0000	1.38
  @@ -1,8 +1,8 @@
   <?php
   #
  -# $Id: config.php.default,v 1.37 2006/11/14 10:59:51 wkpark Exp $
  +# $Id: config.php.default,v 1.38 2007/01/01 01:21:23 wkpark Exp $
   #
  -$sitename='UnnamedWiki';
  +$sitename='UnnamedWiki'; # site name
   $data_dir= './data';
   $upload_dir= 'pds';
   
  @@ -30,6 +30,9 @@
   $iconset= 'moni2';
   $inline_latex=0;
   #$inline_latex='mimetex';
  +#$latex_convert_options='-crop 0x0 -density 120x120'; # change convert options for the latex processor
  +#$latex_renumbering=1; # renumbering tex equations
  +#$latex_allinone=1; # XXX
   $lang='auto';
   $charset='utf-8';
   #$charset='euc-kr';
  @@ -88,6 +91,25 @@
   #<link rel="Alternate" title="xml" type="application/rss+xml" href="?action=rss_rc" />
   #';
   
  +# set global javascripts
  +#$js=<<<EOF
  +#<script type="text/javascript" src="$url_prefix/local/ajax.js"></script>
  +#<script type="text/javascript" src="$url_prefix/local/Wikiwyg/lib/Wikiwyg.js"></script>
  +#<script type="text/javascript" src="$url_prefix/local/Wikiwyg/lib/Wikiwyg/Util.js"></script>
  +#<script type="text/javascript" src="$url_prefix/local/Wikiwyg/lib/Wikiwyg/Toolbar.js"></script>
  +#<script type="text/javascript" src="$url_prefix/local/Wikiwyg/lib/Wikiwyg/Wikitext.js"></script>
  +#<script type="text/javascript" src="$url_prefix/local/Wikiwyg/lib/Wikiwyg/Preview.js"></script>
  +#<script type="text/javascript" src="$url_prefix/local/Wikiwyg/lib/Wikiwyg/HTML.js"></script>
  +#<script type="text/javascript" src="$url_prefix/local/Wikiwyg/lib/Wikiwyg/Wysiwyg.js"></script>
  +#<script type="text/javascript" src="$url_prefix/local/moniwyg.js"></script>
  +#
  +#<script type="text/javascript" src="$url_prefix/local/js/prototype.js"></script>
  +#<script type="text/javascript" src="$url_prefix/local/js/scriptaculous.js?load=effects,controls"></script>
  +#<script type="text/javascript" src="$url_prefix/local/lightbox2/js/lightbox.js"></script>
  +#<script type="text/javascript" src="$url_prefix/local/autocomplete.js"></script>
  +#<script type="text/javascript" src="$url_prefix/local/subindex.js"></script>
  +#EOF;
  +
   #$diffonly=1; # show only diff infos (do not show wiki contents)
   #$goto_type=1;
   
  @@ -129,6 +151,7 @@
   #$auto_search='AutoGoto';
   #$hr_type='fancy';
   $use_sectionedit=0;
  +#$sectionedit_attr=1; # enable wikiwyg section editing
   $spam_filter='antispam';
   $use_toctoggle=0;
   #$toc_options='title=Contents,toggle,simple';
  @@ -186,4 +209,10 @@
   #$no_404=1; # for IIS
   #$nofancy_404=1; # simplified 404 msg for robots etc.
   #$toolbar_iconset='mediawiki'; # change the toolbar iconset 
  +#$use_lightbox=1;
  +#$gallery_use_lightbox=1;
  +#$use_subindex=1; # use subpage indices 
  +#$nosession=1; # do not use session
  +#$default_pre='pre'; # set the default pre processor
  +#$use_rating=1; # builtin Rating support
   ?>
  
  
  


wkpark      2007/01/01 10:21:58

  Modified:    plugin/processor latex.php
  Log:
  fixed last changes
  
  Revision  Changes    Path
  1.17      +8 -3      moniwiki/plugin/processor/latex.php
  
  Index: latex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/latex.php,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- latex.php	27 Dec 2006 07:21:57 -0000	1.16
  +++ latex.php	1 Jan 2007 01:21:58 -0000	1.17
  @@ -6,7 +6,7 @@
   // Usage: {{{#!latex
   // $ \alpha $
   // }}}
  -// $Id: latex.php,v 1.16 2006/12/27 07:21:57 wkpark Exp $
  +// $Id: latex.php,v 1.17 2007/01/01 01:21:58 wkpark Exp $
   
   function _latex_renumber($match,$tag='\\tag') {
     // XXX
  @@ -88,7 +88,7 @@
     // check image file exists
     if ($DBInfo->latex_allinone and $tex) {
       $formatter->latex_uniq[]=$uniq;
  -    $formatter->latex_all.=$tex."\n\\pagebreak\n";
  +    $formatter->latex_all.=$tex."\n\\pagebreak\n\n";
       #print '<pre>'.$tex.'</pre>';
     }
   
  @@ -129,6 +129,7 @@
            $js= '<script type="text/javascript" src="'.$DBInfo->url_prefix.'/local/latex.js"></script>';
   
            $src=str_replace('@TEX@',$formatter->latex_all,$templ);
  +         #print '<pre>'.$src.'</pre>';
            $uniq=md5($src);
          } else {
            $formatter->postamble['latex']='processor:latex:';
  @@ -178,6 +179,7 @@
   
        if ($DBInfo->latex_allinone) {
           $sz=sizeof($formatter->latex_uniq);
  +
           for ($i=0;$i<$sz;$i++) {
             $id=$formatter->latex_uniq[$i];
             if ($DBInfo->cache_public_dir) {
  @@ -186,7 +188,10 @@
             } else {
               $img=$cache_dir.'/'.$id.'.png';
             }
  -          rename($outpath.'.'.$i,$img);
  +          if ($sz==1)
  +            rename($outpath,$img);
  +          else
  +            rename($outpath.'.'.$i,$img);
           }
           $formatter->latex_all='';
           $formatter->latex_uniq=array();
  
  
  


wkpark      2007/01/01 10:23:40

  Modified:    plugin   Rating.php Attachment.php SlideShow.php
                        UploadedFiles.php
  Log:
  update misc fixes
  
  Revision  Changes    Path
  1.4       +3 -2      moniwiki/plugin/Rating.php
  
  Index: Rating.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Rating.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Rating.php	28 Dec 2006 03:38:52 -0000	1.3
  +++ Rating.php	1 Jan 2007 01:23:39 -0000	1.4
  @@ -7,12 +7,12 @@
   // Name: Rating
   // Description: Rating Plugin
   // URL: MoniWiki:RatingPlugin
  -// Version: $Revision: 1.3 $
  +// Version: $Revision: 1.4 $
   // License: GPL
   //
   // Usage: [[Rating(totalscore,count)]] or [[Rating(initial score)]]
   //
  -// $Id: Rating.php,v 1.3 2006/12/28 03:38:52 wkpark Exp $
  +// $Id: Rating.php,v 1.4 2007/01/01 01:23:39 wkpark Exp $
   
   function macro_Rating($formatter,$value='',$options=array()) {
       global $Config;
  @@ -101,6 +101,7 @@
           $total=$val[0];
       $count=max(1,$count);
       $value=$total/$count; // averaged value
  +    if ($total==0 and $count==1) $count=0;
       $value=(!empty($value) and 0 < $value and 6 > $value) ? $value:0;
       ++$count;
   
  
  
  
  1.25      +3 -3      moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- Attachment.php	23 Dec 2006 16:46:23 -0000	1.24
  +++ Attachment.php	1 Jan 2007 01:23:40 -0000	1.25
  @@ -7,13 +7,13 @@
   // Name: Attachment
   // Description: Attachment Plugin
   // URL: MoniWiki:AttachmentPlugin
  -// Version: $Revision: 1.24 $
  +// Version: $Revision: 1.25 $
   // Depend: 1.1.3
   // License: GPL
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.24 2006/12/23 16:46:23 wkpark Exp $
  +// $Id: Attachment.php,v 1.25 2007/01/01 01:23:40 wkpark Exp $
   
   function macro_Attachment($formatter,$value,$option='') {
     global $DBInfo;
  @@ -141,7 +141,7 @@
         if ($img_link)
           return $bra."<span class=\"attach\"><a href='$link'>$img_link</a></span>".$ket;
   
  -      return $bra."<span class=\"attach\"><img align='middle' src='$DBInfo->imgs_dir_interwiki".'uploads-16.png\' /><a href="'.$link.'">'.$text.'</a></span>'.$ket;
  +      return $bra."<span class=\"attach\"><img src='$DBInfo->imgs_dir_interwiki".'uploads-16.png\' /><a href="'.$link.'">'.$text.'</a></span>'.$ket;
       }
     }
   
  
  
  
  1.8       +2 -2      moniwiki/plugin/SlideShow.php
  
  Index: SlideShow.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SlideShow.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SlideShow.php	11 Aug 2006 13:50:17 -0000	1.7
  +++ SlideShow.php	1 Jan 2007 01:23:40 -0000	1.8
  @@ -5,7 +5,7 @@
   //
   // Usage: [[SlideShow(pagename)]]
   //
  -// $Id: SlideShow.php,v 1.7 2006/08/11 13:50:17 wkpark Exp $
  +// $Id: SlideShow.php,v 1.8 2007/01/01 01:23:40 wkpark Exp $
   
   function macro_SlideShow($formatter,$value='',$options=array()) {
       global $DBInfo;
  @@ -148,7 +148,7 @@
           $form1="</form>\n";
           return array($sections,"$form0$return$start$prev$form$next$end$form1\n");
       }
  -    return "$return$start\n";
  +    return "$return$start";
   }
   
   function do_slideshow($formatter,$options=array()) {
  
  
  
  1.19      +3 -2      moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- UploadedFiles.php	20 Dec 2006 23:00:42 -0000	1.18
  +++ UploadedFiles.php	1 Jan 2007 01:23:40 -0000	1.19
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadedFiles plugin for the MoniWiki
   //
  -// $Id: UploadedFiles.php,v 1.18 2006/12/20 23:00:42 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.19 2007/01/01 01:23:40 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     $list=macro_UploadedFiles($formatter,$options['page'],$options);
  @@ -322,6 +322,7 @@
           $ext=strtolower($m[1]);
           if ($ext and stristr('gif,png,jpeg,jpg',$ext)) {
             $fname="<img src='$previewlink' class='icon' width='$mywidth' $alt />";
  +          $attr.=$href_attr;
           } else {
             if (preg_match('/^(wmv|avi|mpeg|mpg|swf|wav|mp3|ogg|midi|mid|mov)$/',$ext)) {
               $tag_open='[[Media('; $tag_close=')]]';
  @@ -338,7 +339,7 @@
             $link="javascript:$tag";
           }
         }
  -      $out.="<tr><td class='wiki'><input type='$checkbox' name='files[$idx]' value='$file' /></td><td class='wiki'><a href=\"$link\"$attr$href_attr>$fname</a></td><td align='right' class='wiki'>$size</td><td class='wiki'>$date</td></tr>\n";
  +      $out.="<tr><td class='wiki'><input type='$checkbox' name='files[$idx]' value='$file' /></td><td class='wiki'><a href=\"$link\"$attr>$fname</a></td><td align='right' class='wiki'>$size</td><td class='wiki'>$date</td></tr>\n";
         $idx++;
      }
      $idx--;
  
  
  


wkpark      2007/01/01 17:29:49

  Modified:    plugin   RecentChanges.php
  Log:
  fix for the WikiWyg. -_-
  
  Revision  Changes    Path
  1.22      +3 -3      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- RecentChanges.php	12 Aug 2006 07:31:54 -0000	1.21
  +++ RecentChanges.php	1 Jan 2007 08:29:49 -0000	1.22
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.21 2006/08/12 07:31:54 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.22 2007/01/01 08:29:49 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     $options['trail']='';
  @@ -201,7 +201,7 @@
         $out.=$cat0;
         $rcdate=gmdate($date_fmt,$ed_time+$tz_offset);
   
  -      $out.=sprintf("%s<span class='rc-date'><span class='rc-date' style='font-size:large'>%s ",
  +      $out.=sprintf("%s<span class='rc-date' style='font-size:large'>%s ",
               $br, $rcdate);
         if (!$nobookmark)
           $out.="<span class='rc-bookmark' style='font-size:small'>[".
  @@ -209,7 +209,7 @@
             _("set bookmark"))."]</span>\n";
         $ratchet_day = $day;
         $br="<br />";
  -      $out.=$perma.'</span></span><br />'.$bra;
  +      $out.='</span>'.$perma.'<br />'.$bra;
         $cat0=$cat;
       } else
         $day=$formatter->link_to("?action=bookmark&amp;time=$ed_time".$daysago,$day);
  
  
  


wkpark      2007/01/02 15:56:02

  Modified:    plugin   Diff.php
  Log:
  new processor detection mechanism
  
  Revision  Changes    Path
  1.14      +43 -10    moniwiki/plugin/Diff.php
  
  Index: Diff.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Diff.php,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- Diff.php	12 Aug 2006 07:29:14 -0000	1.13
  +++ Diff.php	2 Jan 2007 06:56:02 -0000	1.14
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a diff plugin for the MoniWiki
   //
  -// $Id: Diff.php,v 1.13 2006/08/12 07:29:14 wkpark Exp $
  +// $Id: Diff.php,v 1.14 2007/01/02 06:56:02 wkpark Exp $
   
   function simple_diff($diff) {
     $diff=str_replace("<","&lt;",$diff);
  @@ -87,9 +87,9 @@
     foreach ($lines as $line) {
       $marker=$line[0];
       $line=substr($line,1);
  -    if ($marker=='@' and preg_match('/^@\s\-\d+,\d+\s\+(\d+),\d+\s@@/',$line,$mat))
  -      $lp=$mat[1];
  -    else if ($marker=='-') {
  +    if ($marker=='@' and preg_match('/^@\s\-(\d+)(?:,\d+)?\s\+(\d+)(?:,\d+)?\s@@/',$line,$mat)) {
  +      $lp=$mat[2]; $lm=$mat[1];
  +    } else if ($marker=='-') {
         $omarker=1; $orig[]=$line; continue;
       }
       else if ($marker=='+') {
  @@ -97,6 +97,7 @@
       }
       else if ($omarker) {
         $count=sizeof($new);
  +      $ocount=sizeof($orig);
   
         $omarker=0;
         $buf='';
  @@ -113,13 +114,18 @@
           $news[$lp-1]=$buf;
           for ($i=0;$i<$count-1;$i++) $news[$lp+$i]=null;
           #for ($i=$count-1;$i>0;$i--) $news[$lp+$i-1]=null;
  -      } else {
  -        $dels[$lp-1]=$buf;
  +      } else if ($ocount != 0) {
  +        $dels[$lm-1]=$buf;
  +        for ($i=0;$i<$ocount-1;$i++) $dels[$lm+$i]=null;
  +      }
  +      if ($marker==' ') {
  +        $lp+=$count+1;
  +        $lm+=$ocount+1;
         }
  -      if ($marker==' ') $lp+=$count+1;
       }
       else if ($marker==' ' and !$omarker) {
         $lp++;
  +      $lm++;
       }
       else if ($marker=="\\" && $line==' No newline at end of file') continue;
     }
  @@ -141,7 +147,31 @@
     $option='';
   
     $pi=$formatter->get_instructions($dum);
  -  if (!in_array($pi['#format'],array('wiki','moni')) and !$options['type']) # is it not wiki format ?
  +
  +  $processor_type=$pi['#format'];
  +  while ($DBInfo->default_markup != 'wiki') { // XXX
  +    $processor=$pi['#format'];
  +    if (!($f=function_exists("processor_".$processor)) and !($c=class_exists('processor_'.$processor))) {
  +      $pf=getProcessor($processor);
  +      if (!$pf) break;
  +      include_once("plugin/processor/$pf.php");
  +      $processor=$pf;
  +      $name='processor_'.$pf;
  +      if (class_exists($name)) {
  +        $classname='processor_'.$processor;
  +        $myclass= & new $classname($formatter,$options);
  +        $processor_type=$myclass->_type == 'wikimarkup' ? 'wiki':$pi['#format'];
  +      }
  +    } else if ($c=class_exists('processor_'.$processor)) {
  +      $classname='processor_'.$processor;
  +      $myclass= & new $classname($formatter,$options);
  +      $processor_type=$myclass->_type == 'wikimarkup' ? 'wiki':$pi['#format'];
  +    }
  +    break;
  +  }
  +
  +  //if (!in_array($pi['#format'],array('wiki','moni')) and !$options['type']) # is it not wiki format ?
  +  if ($processor_type != 'wiki' and !$options['type']) # is it not wiki format ?
       $options['type']=$DBInfo->diff_type; # use default diff format
   
     if (!$options['type'] and $DBInfo->use_smartdiff)
  @@ -231,6 +261,7 @@
             #print_r($dels);
             foreach ($dels as $k => $v) {
               $lines[$k]=$v."\n".$lines[$k];
  +            #$lines[$k]=$v;
             }
           }
           #print_r($lines);
  @@ -261,12 +292,14 @@
           $options['msg']=$msg;
           $options['smart']=1;
   
  -        if (!in_array($pi['#format'],array('wiki','moni')))
  +        #if (!in_array($pi['#format'],array('wiki','moni')))
  +        if ($processor_type != 'wiki')
             print '<pre class="code">'.$diffed.'</pre>';
           else
             $formatter->send_page($diffed,$options);
  +        #print "<pre>".str_replace(array("\010","\006"),array("+++","---"),$diffed)."</pre>";
  +        #print "<pre>".$diffed."</pre>";
           return;
  -        #return "<pre>$diffed</pre>";
         }
       }
       else
  
  
  


wkpark      2007/01/02 15:57:39

  Modified:    plugin   UploadedFiles.php Gallery.php
  Log:
  set actions correctly
  fix for $use_preview option
  
  Revision  Changes    Path
  1.20      +21 -15    moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- UploadedFiles.php	1 Jan 2007 01:23:40 -0000	1.19
  +++ UploadedFiles.php	2 Jan 2007 06:57:38 -0000	1.20
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadedFiles plugin for the MoniWiki
   //
  -// $Id: UploadedFiles.php,v 1.19 2007/01/01 01:23:40 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.20 2007/01/02 06:57:38 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     $list=macro_UploadedFiles($formatter,$options['page'],$options);
  @@ -13,6 +13,9 @@
   
     print $list;
     $args['editable']=0;
  +  if (!in_array('UploadFile',$formatter->actions))
  +    $formatter->actions[]='UploadFile';
  +
     $formatter->send_footer($args,$options);
     return;
   }
  @@ -260,9 +263,9 @@
      if (!$options['nodir'] and !$dirs) {
         if ($js_tag) {
           $attr=' target="_blank"';
  -        $extra='&amp;tag=1';
  +        $extra='&amp;popup=1&amp;tag=1';
         }
  -      $link=$formatter->link_tag('UploadFile',"?action=uploadedfiles&amp;value=top&amp;popup=1$extra",
  +      $link=$formatter->link_tag('UploadFile',"?action=uploadedfiles&amp;value=top$extra",
           "<img src='".$icon_dir."/32/up.png' style='border:0' class='upper' alt='..' />",$attr);
         $date=date("Y-m-d",filemtime($dir."/.."));
         $out.="<tr><td class='wiki'>&nbsp;</td><td class='wiki'>$link</td><td align='right' class='wiki'>&nbsp;</td><td class='wiki'>$date</td></tr>\n";
  @@ -287,16 +290,21 @@
         $previewlink=$link;
         $size=filesize($dir.'/'.$file);
   
  -      if ($use_preview > 1) {
  -        list($w, $h) = getimagesize($dir.'/'.$file);
  -        if ($w <= $preview_width) $mywidth=$w;
  -        else $mywidth=$preview_width;
  -
  -        if (file_exists($dir."/thumbnails/".$file)) {
  -          if ($down_mode)
  -            $previewlink=str_replace('value=','value=thumbnails/',$previewlink);
  -          else
  -            $previewlink=$prefix.'thumbnails/'.rawurlencode($file);
  +      if ($use_preview) {
  +        preg_match("/\.(.{1,4})$/",$file,$m);
  +        $ext=strtolower($m[1]);
  +
  +        if ($use_preview > 1 and $ext and stristr('gif,png,jpeg,jpg',$ext)) {
  +          list($w, $h) = getimagesize($dir.'/'.$file);
  +          if ($w <= $preview_width) $mywidth=$w;
  +          else $mywidth=$preview_width;
  +
  +          if (file_exists($dir."/thumbnails/".$file)) {
  +            if ($down_mode)
  +              $previewlink=str_replace('value=','value=thumbnails/',$previewlink);
  +            else
  +              $previewlink=$prefix.'thumbnails/'.rawurlencode($file);
  +          }
           }
         }
   
  @@ -318,8 +326,6 @@
           if ($opener != $value)
               $tag_open.=$opener;
           $alt="alt='$tag_open$file$tag_close' title='$file'";
  -        preg_match("/\.(.{1,4})$/",$fname,$m);
  -        $ext=strtolower($m[1]);
           if ($ext and stristr('gif,png,jpeg,jpg',$ext)) {
             $fname="<img src='$previewlink' class='icon' width='$mywidth' $alt />";
             $attr.=$href_attr;
  
  
  
  1.34      +7 -1      moniwiki/plugin/Gallery.php
  
  Index: Gallery.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Gallery.php,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- Gallery.php	23 Dec 2006 16:45:49 -0000	1.33
  +++ Gallery.php	2 Jan 2007 06:57:38 -0000	1.34
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Gallery]]
   //
  -// $Id: Gallery.php,v 1.33 2006/12/23 16:45:49 wkpark Exp $
  +// $Id: Gallery.php,v 1.34 2007/01/02 06:57:38 wkpark Exp $
   
   function get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -365,6 +365,9 @@
     $idx--;
     $out.="</tr></table>\n";
   
  +  if (!in_array('UploadFile',$formatter->actions))
  +    $formatter->actions[]='UploadFile';
  +
     return $pnut.'<div class="gallery">'.$out.'</div>'.$pnut;
   }
   
  @@ -459,6 +462,9 @@
       print $form;
     }
   
  +  if (!in_array('UploadFile',$formatter->actions))
  +    $formatter->actions[]='UploadFile';
  +
     $formatter->send_footer("",$options);
     return;
   }
  
  
  


wkpark      2007/01/02 15:58:10

  Modified:    plugin   download.php
  Log:
  do not set 'no-cache' for images
  
  Revision  Changes    Path
  1.16      +15 -3     moniwiki/plugin/download.php
  
  Index: download.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/download.php,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- download.php	16 Dec 2006 00:02:33 -0000	1.15
  +++ download.php	2 Jan 2007 06:58:10 -0000	1.16
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // download action plugin for the MoniWiki
   //
  -// $Id: download.php,v 1.15 2006/12/16 00:02:33 wkpark Exp $
  +// $Id: download.php,v 1.16 2007/01/02 06:58:10 wkpark Exp $
   //
   function do_download($formatter,$options) {
     global $DBInfo;
  @@ -117,8 +117,14 @@
     header("Content-Length: ".filesize($dir.'/'.$file));
     header("Content-Disposition: $down_mode; ".$fname );
     header("Content-Description: MoniWiki PHP Downloader" );
  -  Header("Pragma: no-cache");
  -  Header("Expires: 0");
  +  header("Last-Modified: " . gmdate("D, d M Y H:i:s",filemtime($dir.'/'.$file)) . " GMT");
  +  header("Pragma:");
  +  header("Cache-Control:");
  +  if (!preg_match('/^image\//',$mimetype)) {
  +    Header("Pragma: no-cache");
  +    Header("Cache-Control: no-cache");
  +    Header("Expires: 0");
  +  }
   
     $fp=readfile("$dir/$file");
     return;
  @@ -168,6 +174,12 @@
          header("Content-Range: bytes 0-$size2/$size");
          header("Content-Length: ".$size);
          header("Content-Disposition: $mode; $fname");
  +       header("Last-Modified: " . gmdate("D, d M Y H:i:s",filemtime($file)) . " GMT");
  +       if (!preg_match('/^image\//',$ctype)) {
  +          Header("Pragma: no-cache");
  +          Header("Cache-Control: no-cache");
  +          Header("Expires: 0");
  +       }
      }
      //open the file
      $fp=fopen("$file","rb");
  
  
  


wkpark      2007/01/02 15:58:35

  Modified:    plugin   Rating.php
  Log:
  fix for css friendly
  
  Revision  Changes    Path
  1.5       +3 -3      moniwiki/plugin/Rating.php
  
  Index: Rating.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Rating.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Rating.php	1 Jan 2007 01:23:39 -0000	1.4
  +++ Rating.php	2 Jan 2007 06:58:35 -0000	1.5
  @@ -7,12 +7,12 @@
   // Name: Rating
   // Description: Rating Plugin
   // URL: MoniWiki:RatingPlugin
  -// Version: $Revision: 1.4 $
  +// Version: $Revision: 1.5 $
   // License: GPL
   //
   // Usage: [[Rating(totalscore,count)]] or [[Rating(initial score)]]
   //
  -// $Id: Rating.php,v 1.4 2007/01/01 01:23:39 wkpark Exp $
  +// $Id: Rating.php,v 1.5 2007/01/02 06:58:35 wkpark Exp $
   
   function macro_Rating($formatter,$value='',$options=array()) {
       global $Config;
  @@ -69,7 +69,7 @@
               '<img alt="'.$alt.'" src="'.$imgs_dir.'/star'.$t.'.png" '.
               'onmouseover="showstars(this,'.$i.
               ',\''.$msg[$i].'\')" onmouseout="showstars(this,'.intval($value).',\'\')" '.
  -            'border="0" class="star" /></a>';
  +            'style="border:0" class="star" /></a>';
       }
       $star.=<<<EOF
   <span class="rating-desc" style="font-size: 16px;"></span>
  
  
  


wkpark      2007/01/02 16:02:45

  Modified:    .        wiki.php
  Log:
  fix for new smart_diff method.
  support prefilter,postfilter for wikimarkup processors
  escape some delim for wikiMarkups
  fixed puncts for smart_diff
  
  Revision  Changes    Path
  1.344     +41 -18    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.343
  retrieving revision 1.344
  diff -u -r1.343 -r1.344
  --- wiki.php	1 Jan 2007 01:21:23 -0000	1.343
  +++ wiki.php	2 Jan 2007 07:02:45 -0000	1.344
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.343 2007/01/01 01:21:23 wkpark Exp $
  +// $Id: wiki.php,v 1.344 2007/01/02 07:02:45 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.343 $',1,-1);
  +$_revision = substr('$Revision: 1.344 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -472,12 +472,12 @@
   class Counter_dba {
     var $counter;
     var $DB;
  -  function Counter_dba($DB) {
  +  function Counter_dba($DB,$dbname='counter') {
       if (!function_exists('dba_open')) return;
  -    if (!file_exists($DB->data_dir."/counter.db"))
  -      $this->counter=dba_open($DB->data_dir."/counter.db","n",$DB->dba_type);
  +    if (!file_exists($DB->data_dir.'/'.$dbname.'.db'))
  +      $this->counter=dba_open($DB->data_dir.'/'.$dbname.'.db',"n",$DB->dba_type);
       else
  -      $this->counter=@dba_open($DB->data_dir."/counter.db","w",$DB->dba_type);
  +      $this->counter=@dba_open($DB->data_dir.'/'.$dbname.'.db',"w",$DB->dba_type);
       $this->DB=&$DB;
     }
   
  @@ -1756,6 +1756,7 @@
       #$punct="<\"\'}\]\|;,\.\!";
       #$punct="<\'}\]\)\|;\.\!"; # , is omitted for the WikiPedia
       $punct="<\'}\]\|\.\!"; # , is omitted for the WikiPedia
  +    $punct="<\'}\]\|\.\!\010\006"; # , is omitted for the WikiPedia
       $url="wiki|http|https|ftp|nntp|news|irc|telnet|mailto|file|attachment";
       if ($DBInfo->url_schemas) $url.='|'.$DBInfo->url_schemas;
       $this->urls=$url;
  @@ -1772,7 +1773,7 @@
       #"\b(".$DBInfo->interwikirule."):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
       #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
       #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+[^\(\)<>\s\',\.:\?\!]+)|".
  -    "(\b|\^?)([A-Z][a-zA-Z]+):([^\(\)<>\s\']*[^\(\)<>\s\'\",\.:\?\!]*(\s(?![\x21-\x7e]))?)";
  +    "(\b|\^?)([A-Z][a-zA-Z]+):([^\(\)<>\s\'][^\(\)<>\s\'\",\.:\?\!\010\006]*(\s(?![\x21-\x7e]))?)";
   
       if ($camelcase)
         $this->wordrule.='|'.
  @@ -2481,7 +2482,8 @@
       if (!$match) return $this->word_repl($macro);
       $bra='';$ket='';
       if ($this->wikimarkup and $macro != 'Attachment' and !$options['nomarkup']) {
  -      $bra= "<span class='wikiMarkup'><!-- wiki:\n[[$macro]]\n-->";
  +      $markups=str_replace(array('=','-','&','<'),array('==','-=','&amp;','&lt;'),$macro);
  +      $bra= "<span class='wikiMarkup'><!-- wiki:\n[[$markups]]\n-->";
         $ket= '</span>';
       }
       if (!$value and $match[1] and $match[2]) { #strpos($macro,'(') !== false)) {
  @@ -2505,16 +2507,16 @@
     function processor_repl($processor,$value,$options="") {
       $bra='';$ket='';
       if (!empty($this->wikimarkup) and empty($options['nomarkup'])) {
  -      if ($processor == 'latex' and $options['type'])
  -        $bra= "<span class='wikiMarkup'><!-- wiki:\n".$value."\n-->";
  -      else {
  +      if ($processor == 'latex' and $options['type']) {
  +        $markups=str_replace(array('=','-','&','<'),array('==','-=','&amp;','&lt;'),$value);
  +        $bra= "<span class='wikiMarkup'><!-- wiki:\n".$markups."\n-->";
  +      } else {
           if ($value{0}!='#' and $value{1}!='!') $notag="\n";
  -        $bra= "<span class='wikiMarkup'><!-- wiki:\n{{{".$notag.$value."}}}\n-->";
  +        $markups=str_replace(array('=','-','&','<'),array('==','-=','&amp;','&lt;'),$value);
  +        $bra= "<span class='wikiMarkup'><!-- wiki:\n{{{".$notag.$markups."}}}\n-->";
         }
         $ket= '</span>';
       }
  -    if (!empty($this->use_smartdiff) and
  -      preg_match("/\006|\010/", $value)) $processor='plain';
       if (!($f=function_exists("processor_".$processor)) and !($c=class_exists('processor_'.$processor))) {
         $pf=getProcessor($processor);
         if (!$pf) {
  @@ -2525,17 +2527,24 @@
         $processor=$pf;
         $name='processor_'.$pf;
         if (!($f=function_exists($name)) and !($c=class_exists($name))) {
  -        $ret= call_user_func('processor_plain',$this,$value,$options);
  -        return $bra.$ret.$ket;
  +        $processor='plain';
  +        $f=true;
         }
       }
  +
       if ($f) {
  +      if (!empty($this->use_smartdiff) and
  +        preg_match("/\006|\010/", $value)) $processor='plain';
  +
         $ret= call_user_func_array("processor_$processor",array(&$this,$value,$options));
         return $bra.$ret.$ket;
       }
  +
       $classname='processor_'.$processor;
       $myclass= & new $classname($this,$options);
       $ret= call_user_func(array($myclass,'process'),$value,$options);
  +    if ($myclass->_type=='wikimarkup') return $ret;
  +
       return $bra.$ret.$ket;
     }
   
  @@ -2862,6 +2871,7 @@
         $this->set_wordrule($pi);
         $fts=array();
         if ($pi['#filter']) $fts=preg_split('/(\||,)/',$pi['#filter']);
  +      if ($this->filters) $fts=array_merge($fts,$this->filters);
         if ($DBInfo->filters) $fts=array_merge($fts,$DBInfo->filters);
         if ($fts) {  
           foreach ($fts as $ft) {
  @@ -2870,9 +2880,21 @@
         }
         if ($pi['#format'] != 'wiki') {
           if ($pi['args']) $pi_line="#!".$pi['#format']." $pi[args]\n";
  -        print $this->processor_repl($pi['#format'],
  +        $text= $this->processor_repl($pi['#format'],
             $pi_line.$body,$options);
  -        
  +        if ($this->use_smartdiff)
  +          $text= preg_replace_callback(array("/(\006|\010)(.*)\\1/sU"),
  +            array(&$this,'_diff_repl'),$text);
  +
  +        $fts=array();
  +        if ($pi['#postfilter']) $fts=preg_split('/(\||,)/',$pi['#postfilter']);
  +        if ($this->postfilters) $fts=array_merge($fts,$this->postfilters);
  +        if ($fts) {
  +          foreach ($fts as $ft)
  +            $text=$this->postfilter_repl($ft,$text,$options);
  +        }
  +        print $text;
  +
           return;
         }
         $lines=explode("\n",$body);
  @@ -3247,6 +3269,7 @@
   
         # InterWiki, WikiName, {{{ }}}, !WikiName, ?single, ["extended wiki name"]
         # urls, [single bracket name], [urls text], [[macro]]
  +
         $line=preg_replace_callback("/(".$wordrule.")/",
           array(&$this,'link_repl'),$line);
         #$line=preg_replace("/(".$wordrule.")/e","\$this->link_repl('\\1')",$line);
  
  
  


wkpark      2007/01/02 20:16:06

  Modified:    plugin   Navigation.php
  Log:
  fix bug #301055 and make work with interwikis
  
  Revision  Changes    Path
  1.13      +8 -3      moniwiki/plugin/Navigation.php
  
  Index: Navigation.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Navigation.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- Navigation.php	19 Jul 2006 05:29:10 -0000	1.12
  +++ Navigation.php	2 Jan 2007 11:16:06 -0000	1.13
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Navigation(IndexPage)]]
   //
  -// $Id: Navigation.php,v 1.12 2006/07/19 05:29:10 wkpark Exp $
  +// $Id: Navigation.php,v 1.13 2007/01/02 11:16:06 wkpark Exp $
   
   function macro_Navigation($formatter,$value) {
     global $DBInfo;
  @@ -88,7 +88,9 @@
         $prev=$indices[$prev];
         if (($p=strpos($prev,'~'))!==false)
           $prev_text=substr($prev,$p+1);
  -      $pnut.=$formatter->link_tag($prev, "", $prev_text," accesskey=\",\" ");
  +      if (strpos($prev,':')===false) $prev='"'.$prev.'"';
  +      #$pnut.=$formatter->link_tag($prev, "", $prev_text," accesskey=\",\" ");
  +      $pnut.=$formatter->link_repl("[wiki:$prev $prev_text]"," accesskey=\",\" ");
       }
       if ($use_action) $formatter->query_string=$save;
       $pnut.=" | ".$formatter->link_repl("[wiki:$index $index_text]")." | ";
  @@ -98,7 +100,10 @@
         $next=$indices[$next];
         if (($p=strpos($next,'~'))!==false)
           $next_text=substr($next,$p+1);
  -      $pnut.=$formatter->link_tag($next, "", $next_text, " accesskey=\".\" ");
  +      if (strpos($next,':')===false) $next='"'.$next.'"';
  +      # to make wiki:"My Page" to fix PR #301055
  +      #$pnut.=$formatter->link_tag($next, "", $next_text, " accesskey=\".\" ");
  +      $pnut.=$formatter->link_repl("[wiki:$next $next_text]"," accesskey=\".\" ");
       }
       $pnut.=' &raquo;';
       if ($use_action) $formatter->query_string=$save;
  
  
  


wkpark      2007/01/03 13:24:18

  Modified:    plugin   Attachment.php UploadFile.php
  Log:
  add a 'UploadedFiles' action
  UploadFile macro: support 'swf' option to use SWFUpload macro
  
  Revision  Changes    Path
  1.26      +5 -2      moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- Attachment.php	1 Jan 2007 01:23:40 -0000	1.25
  +++ Attachment.php	3 Jan 2007 04:24:18 -0000	1.26
  @@ -7,13 +7,13 @@
   // Name: Attachment
   // Description: Attachment Plugin
   // URL: MoniWiki:AttachmentPlugin
  -// Version: $Revision: 1.25 $
  +// Version: $Revision: 1.26 $
   // Depend: 1.1.3
   // License: GPL
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.25 2007/01/01 01:23:40 wkpark Exp $
  +// $Id: Attachment.php,v 1.26 2007/01/03 04:24:18 wkpark Exp $
   
   function macro_Attachment($formatter,$value,$option='') {
     global $DBInfo;
  @@ -122,6 +122,9 @@
     if (!$text) $text=$file;
   
     if (file_exists($upload_file)) {
  +    if (!in_array('UploadedFiles',$formatter->actions))
  +      $formatter->actions[]='UploadedFiles';
  +
       if (!$img_link && preg_match("/\.(png|gif|jpeg|jpg)$/i",$upload_file)) {
         if ($key != $pagename || $force_download)
           $url=$formatter->link_url(_urlencode($pagename),"?action=$mydownload&amp;value=".urlencode($value));
  
  
  
  1.32      +6 -1      moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- UploadFile.php	23 Dec 2006 16:45:49 -0000	1.31
  +++ UploadFile.php	3 Jan 2007 04:24:18 -0000	1.32
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.31 2006/12/23 16:45:49 wkpark Exp $
  +// $Id: UploadFile.php,v 1.32 2007/01/03 04:24:18 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -76,6 +76,8 @@
       $formatter->send_header("",$options);
       $formatter->send_title($title,"",$options);
       print macro_UploadFile($formatter,'',$options);
  +    if (!in_array('UploadedFiles',$formatter->actions))
  +      $formatter->actions[]='UploadedFiles';
       $formatter->send_footer("",$options);
       return;
     }
  @@ -258,6 +260,7 @@
       $formatter->send_title($title,"",$options);
       print $msg;
     }
  +
     $formatter->send_footer();
     print $js;
   
  @@ -268,6 +271,8 @@
   function macro_UploadFile($formatter,$value='',$options='') {
     if ($value=='js') {
       return $formatter->macro_repl('UploadForm');
  +  } else if ($value=='swf') {
  +    return $formatter->macro_repl('SWFUpload');
     }
     $use_multi=1;
     $multiform='';
  
  
  


wkpark      2007/01/03 13:24:53

  Modified:    plugin   Navigation.php
  Log:
  fix last changes
  
  Revision  Changes    Path
  1.14      +6 -4      moniwiki/plugin/Navigation.php
  
  Index: Navigation.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Navigation.php,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- Navigation.php	2 Jan 2007 11:16:06 -0000	1.13
  +++ Navigation.php	3 Jan 2007 04:24:53 -0000	1.14
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Navigation(IndexPage)]]
   //
  -// $Id: Navigation.php,v 1.13 2007/01/02 11:16:06 wkpark Exp $
  +// $Id: Navigation.php,v 1.14 2007/01/03 04:24:53 wkpark Exp $
   
   function macro_Navigation($formatter,$value) {
     global $DBInfo;
  @@ -88,9 +88,11 @@
         $prev=$indices[$prev];
         if (($p=strpos($prev,'~'))!==false)
           $prev_text=substr($prev,$p+1);
  -      if (strpos($prev,':')===false) $prev='"'.$prev.'"';
  -      #$pnut.=$formatter->link_tag($prev, "", $prev_text," accesskey=\",\" ");
  -      $pnut.=$formatter->link_repl("[wiki:$prev $prev_text]"," accesskey=\",\" ");
  +      if ($prev) {
  +        if (strpos($prev,':')===false) $prev='"'.$prev.'"';
  +        #$pnut.=$formatter->link_tag($prev, "", $prev_text," accesskey=\",\" ");
  +        $pnut.=$formatter->link_repl("[wiki:$prev $prev_text]"," accesskey=\",\" ");
  +      }
       }
       if ($use_action) $formatter->query_string=$save;
       $pnut.=" | ".$formatter->link_repl("[wiki:$index $index_text]")." | ";
  
  
  


wkpark      2007/01/03 13:25:59

  Modified:    .        wiki.php
  Log:
  fixed backtick syntax
  
  Revision  Changes    Path
  1.345     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.344
  retrieving revision 1.345
  diff -u -r1.344 -r1.345
  --- wiki.php	2 Jan 2007 07:02:45 -0000	1.344
  +++ wiki.php	3 Jan 2007 04:25:59 -0000	1.345
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.344 2007/01/02 07:02:45 wkpark Exp $
  +// $Id: wiki.php,v 1.345 2007/01/03 04:25:59 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.344 $',1,-1);
  +$_revision = substr('$Revision: 1.345 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -1700,7 +1700,7 @@
       $this->baserule=array("/<([^\s<>])/",
                        "/'''([^']*)'''/","/(?<!')'''(.*)'''(?!')/",
                        "/''([^']*)''/","/(?<!')''(.*)''(?!')/",
  -                     "/`(?<!\s)(?!`)([^`']+)(?<!\s)'/",
  +                     "/`(?<!\s)(?!`)([^`']+)(?<!\s)'(?=\s|$)/",
                        "/`(?<!\s)(?U)(.*)(?<!\s)`/",
                        "/(-{4,})$/e",
                        "/^(={4,})$/",
  
  
  


wkpark      2007/01/04 16:31:40

  Added:       imgs/moni pref.png
  Log:
  add pref.png
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/moni/pref.png
  
  	<<Binary file>>
  
  


wkpark      2007/01/04 16:33:06

  Modified:    imgs/moni2 inter.png
  Log:
  replace inter.png to a tango icon
  
  Revision  Changes    Path
  1.2       +1 -3      moniwiki/imgs/moni2/inter.png
  
  	<<Binary file>>
  
  


wkpark      2007/01/04 16:33:40

  Modified:    imgs/moni2 attach.png
  Log:
  replace with a tango icon
  
  Revision  Changes    Path
  1.2       +2 -2      moniwiki/imgs/moni2/attach.png
  
  	<<Binary file>>
  
  


wkpark      2007/01/06 15:52:11

  Added:       plugin   revert.php
  Log:
  add a new revert plugin
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/revert.php
  
  Index: revert.php
  ===================================================================
  <?php
  // Copyright 2007 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a revert plugin for the MoniWiki
  //
  // Author: wkpark <wkpark@kldp.org>
  // Date: 2007-01-06
  // Name: Rollback plugin
  // Description: Rollback Plugin
  // PluginType: macro,action
  // ActionType: protected
  // URL: to_plugin url/interwiki name etc.
  // Version: $Revision: 1.1 $
  // Depend: 1.1.3
  // License: GPL
  //
  // Usage: ?action=revert&rev=1.1
  //
  // $Id: revert.php,v 1.1 2007/01/06 06:52:11 wkpark Exp $
  
  function macro_Revert($formatter,$value,$options=array()) {
      $options['info_actions']=array('recall'=>'view','revert'=>'revert');
      $options['title']='<h3>'.sprintf(_("Old Revisions of the %s"),htmlspecialchars($formatter->page->name)).'</h3>';
      $out= $formatter->macro_repl('Info','',$options);
      return $out;
  }
  
  function do_revert($formatter,$options) {
      global $DBInfo;
  
      $formatter->send_header('',$options);
      $force=1;
      if ($DBInfo->hasPage($_POST['name'])) {
          $force=0;
          if ($_POST['force']) $force=1;
      }
      if ($_POST['rev'] and $_POST['name'] and $force) {
          if ($DBInfo->version_class) {
              $REMOTE_ADDR=$_SERVER['REMOTE_ADDR'];
  
              $user=new User();
              if ($user->id != 'Anonymous') {
                  $udb=new UserDB($this);
                  $udb->checkUser($user);
              }
  
              $comment=_stripslashes($options['comment']);
  
              $key=$DBInfo->getPageKey($formatter->page->name);
  
              $class=getModule('Version',$DBInfo->version_class);
              $version=new $class ($DBInfo);
              if ($force) unlink($key); // try to delete
              $ret=$version->co($formatter->page->name,$_POST['rev'],array('stdout'=>1));
              chmod($key,0666);
  
              $log=$REMOTE_ADDR.';;'.$user->id.';;'.$comment;
              $keyname=$DBInfo->_getPageKey($formatter->page->name);
              $DBInfo->addLogEntry($keyname, $REMOTE_ADDR,$comment,"SAVE");
          } else {
              $formatter->send_title(_("No version control available."),"",$options);
              $formatter->send_footer('',$options);
              return;
          }
          $formatter->send_title(sprintf(_("%s is successfully rollback."),$formatter->page->name),"",$options);
          $formatter->send_footer('',$options);
          return;
      } else {
          if ($DBInfo->hasPage($formatter->page->name)) {
              $formatter->send_title(_("Are you really want to overwrite this page ?"),"",$options);
              $extra='<input type="checkbox" name="force" />'._("Force overwrite").'<br />';
          } else {
              $formatter->send_title(_("Are you really want to revert this page ?"),"",$options);
          }
      }
  
      $pagename=$formatter->page->name;
      $lab=_("Summary");
      $rev=$options['rev'];
      $comment=sprintf(_("Rollback to revision %s"),$rev);
      print "<form method='post'>
  $lab: <input name='comment' size='80' value='$comment' /><br />\n";
      $btn=_("Revert page");
      $msg=sprintf(_("Only WikiMaster can %s this pagee"),_("revert"));
      if ($DBInfo->security->is_protected("revert",$options))
          print _("Password").": <input type='password' name='passwd' size='20' value='' />
  $msg<br />\n";
    print "
      <input type='hidden' name='action' value='revert' />
      <input type='hidden' name='rev' value='$rev' />
      <input type='hidden' name='name' value='$pagename' />
      <input type='submit' value='$btn' />$extra
      </form>";
  
      print macro_revert($formatter,$options['value']);
      $formatter->send_footer('',$options);
      return;
  }
  
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2007/01/07 01:38:54

  Modified:    plugin/processor gnuplot.php
  Log:
  support postscript, svg too
  
  Revision  Changes    Path
  1.14      +53 -6     moniwiki/plugin/processor/gnuplot.php
  
  Index: gnuplot.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/gnuplot.php,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- gnuplot.php	29 Jul 2006 07:17:09 -0000	1.13
  +++ gnuplot.php	6 Jan 2007 16:38:54 -0000	1.14
  @@ -6,11 +6,12 @@
   // Usage: {{{#!gnuplot
   // plot sin(x)
   // }}}
  -// $Id: gnuplot.php,v 1.13 2006/07/29 07:17:09 wkpark Exp $
  +// $Id: gnuplot.php,v 1.14 2007/01/06 16:38:54 wkpark Exp $
   
   function processor_gnuplot($formatter="",$value="") {
     global $DBInfo;
   
  +  $convert="convert";
     if(getenv("OS")=="Windows_NT")
       $gnuplot="wgnuplot"; # Win32
     else
  @@ -73,12 +74,25 @@
     $plt="\n".$plt."\n";
     $plt=preg_replace("/\n\s*![^\n]+\n/","\n",$plt); # strip shell commands
     $plt=preg_replace("/[ ]+/"," ",$plt);
  +  preg_match("/\nset?\s+(t|te|ter|term)\s(.*)\n/", $plt,$tmatch);
     $plt=preg_replace("/\nset?\s+(t|o|si).*\n/", "\n",$plt);
     #
     $plt=preg_replace("/\n\s*(s?plot)\s+('|\")<(\s*)/", "\n\\1 \\2\\3",$plt);
     
     #print "<pre>$plt</pre>";
   
  +  if ($tmatch) {
  +    if (preg_match('/^postscript\s*(enhanced|color)?/',$tmatch[2])) { // XXX
  +      $term=$tmatch[2];
  +      $ext='ps';
  +      $size='#set term '.$term;
  +    } else if (preg_match('/^svg/',$tmatch[2])) {
  +      $term=$tmatch[2];
  +      $ext='svg';
  +      $size="set size 1.0,1.0\n#set term ".$term;
  +    }
  +  }
  +
     if ($term != 'dumb') 
       $plt="\n".$size."\n".$plt;
     $uniq=md5($plt);
  @@ -154,12 +168,45 @@
        if ($log)
           $log ="<pre class='errlog'>$log</pre>\n";
     }
  -  if (!file_exists($outpath)) return $log;
  -  if ($ext == 'png')
  -  return $log."<img src='$png_url' alt='gnuplot' />";
  -  if ($ext == 'txt')
  -  return $log.'<pre class="gnuplot">'.(implode('',file("$cache_dir/$pngname"))).'</pre>';
   
  +  $rext=$ext;
  +  $rpng_url=$png_url;
  +
  +  if ($ext == 'ps' and file_exists($outpath)) {
  +     $routpath=preg_replace('/\.'.$ext.'$/','.png',$outpath);
  +     if ($formatter->refresh || !file_exists($routpath)) {
  +     	$cmd= "$convert -rotate 90 $outpath $routpath";
  +     	$fp=popen($cmd.$formatter->NULL,'r');
  +     	pclose($fp);
  +     }
  +     $rpng_url=preg_replace('/\.'.$ext.'$/','.png',$png_url);
  +     $rext='png';
  +  } else if ($ext == 'svg') {
  +     $fp=fopen($outpath,'r');
  +     if ($fp) {
  +       $svg=fread($fp,filesize($outpath));
  +       fclose($fp);
  +
  +       $svg=preg_replace('/<svg [^>]+>/','<svg xmlns="http://www.w3.org/2000/svg"
  +     xmlns:xlink="http://www.w3.org/1999/xlink">',$svg);
  +       $fp=fopen($outpath,'w');
  +       if ($fp) {
  +         fwrite($fp,$svg);
  +         fclose($fp);
  +       }
  +     }
  +  }
  +
  +  if ($ext == 'ps')
  +    $extra='<a href="'.$png_url.'" />'.sprintf(_("Download %s"),$ext).'</a>';
  +
  +  if (!file_exists($outpath)) return $log;
  +  if ($rext == 'png')
  +     return $log."<img src='$rpng_url' alt='gnuplot' />".$extra;
  +  if ($rext == 'svg')
  +     return $log."<embed src='$rpng_url' alt='gnuplot' width='640' height='480' />".$extra;
  +  if ($rext == 'txt')
  +    return $log.'<pre class="gnuplot">'.(implode('',file("$cache_dir/$pngname"))).'</pre>';
   }
   
   ?>
  
  
  


wkpark      2007/01/08 16:06:43

  Modified:    .        wiki.php
  Log:
  new config option '$validator_xhtml'
  new wiki syntax [wiki:Pagename] == [:Pagename] (similar as MoinMoin's)
  fixed set_wordrule()
  add a protected action 'revert'
  
  Revision  Changes    Path
  1.346     +55 -20    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.345
  retrieving revision 1.346
  diff -u -r1.345 -r1.346
  --- wiki.php	3 Jan 2007 04:25:59 -0000	1.345
  +++ wiki.php	8 Jan 2007 07:06:42 -0000	1.346
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.345 2007/01/03 04:25:59 wkpark Exp $
  +// $Id: wiki.php,v 1.346 2007/01/08 07:06:42 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.345 $',1,-1);
  +$_revision = substr('$Revision: 1.346 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -536,7 +536,7 @@
     function is_protected($action="read",$options) {
       # password protected POST actions
       $protected_actions=array(
  -      "deletepage","deletefile","rename","rcspurge","rcs","chmod","backup","restore","rcsimport");
  +      "deletepage","deletefile","rename","rcspurge","rcs","chmod","backup","restore","rcsimport","revert");
       $action=strtolower($action);
   
       if (in_array($action,$protected_actions)) {
  @@ -1226,11 +1226,20 @@
       return $this->DB->getPageKey($pagename);
     }
   
  -  function co($pagename,$rev,$opt='') {
  +  function co($pagename,$rev,$opt=array()) {
       $filename= $this->_filename($pagename);
   
       $rev=(is_numeric($rev) and $rev>0) ? "\"".$rev."\" ":'';
  -    $fp=@popen("co -x,v/ -q -p$rev ".$filename.$this->NULL,"r");
  +    $ropt='-p';
  +    if ($opt['stdout']) $ropt='-r';
  +    $fp=@popen("co -x,v/ -q $ropt$rev ".$filename.$this->NULL,"r");
  +    if ($opt['stdout']) {
  +      if (is_resource($fp)) {
  +        pclose($fp);
  +        return '';
  +      }
  +    }
  +
       $out='';
       if (is_resource($fp)) {
         while (!feof($fp)) {
  @@ -1773,7 +1782,7 @@
       #"\b(".$DBInfo->interwikirule."):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
       #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
       #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+[^\(\)<>\s\',\.:\?\!]+)|".
  -    "(\b|\^?)([A-Z][a-zA-Z]+):([^\(\)<>\s\'][^\(\)<>\s\'\",\.:\?\!\010\006]*(\s(?![\x21-\x7e]))?)";
  +    "(\b|\^?)([A-Z][a-zA-Z]+):([^\(\)<>\s\']?[^\(\)<>\s\'\",:\?\!\010\006]*(\s(?![\x21-\x7e]))?)";
   
       if ($camelcase)
         $this->wordrule.='|'.
  @@ -1801,7 +1810,7 @@
   
       if ($sbracket)
         # single bracketed name [Hello World]
  -      $this->wordrule.= "|(?<!\[)\!?\[([^\[:,<\s'][^\[:,>]{1,255})\](?!\])";
  +      $this->wordrule.= "|(?<!\[)\!?\[([^\[,<\s'][^\[:,>]{1,255})\](?!\])";
       else
         # only anchor [#hello], footnote [* note] allowed 
         $this->wordrule.= "|(?<!\[)\!?\[([#\*\+][^\[:,>]{1,255})\](?!\])";
  @@ -2035,7 +2044,7 @@
         break;
       }
   
  -    if (strpos($url,':')) {
  +    if (strpos($url,':') !== false) {
         if ($url[0]=='a') # attachment:
           return $this->macro_repl('Attachment',substr($url,11));
   
  @@ -2050,7 +2059,7 @@
             preg_replace('/('.$this->url_mapping_rule.')/ie',"\$this->url_mappings['\\1']",$url);
         }
   
  -      if (preg_match("/^(w|[A-Z])/",$url)) # InterWiki or wiki:
  +      if (preg_match("/^(:|w|[A-Z])/",$url)) # InterWiki or wiki:
           return $this->interwiki_repl($url,'',$attr,$external_icon);
   
         if (preg_match("/^mailto:/",$url)) {
  @@ -2108,6 +2117,8 @@
   
       if ($url[0]=="w")
         $url=substr($url,5);
  +    else if ($url[0]==":")
  +      $url=substr($url,1);
   
       $wiki='';
       # wiki:MoinMoin:FrontPage
  @@ -3510,7 +3521,7 @@
       $opts['rev']=$this->page->get_rev();
       $orig=$this->page->get_raw_body($opts);
   
  -    if (0) {
  +    if ($DBInfo->use_external_merge) {
         # save new
         $tmpf3=tempnam($DBInfo->vartmp_dir,'MERGE_NEW');
         $fp= fopen($tmpf3, 'w');
  @@ -3845,13 +3856,16 @@
         }
       }
   
  +    $validator_xhtml=$DBInfo->validator_xhtml ? $DBInfo->validator_xhtml:'http://validator.w3.org/check/referer';
  +    $validator_css=$DBInfo->validator_css ? $DBInfo->validator_xhtml:'http://jigsaw.w3.org/css-validator';
  +
       $banner= <<<FOOT
  - <a href="http://validator.w3.org/check/referer"><img
  + <a href="$validator_xhtml"><img
     src="$this->imgs_dir/valid-xhtml10.png"
     style="border:0;vertical-align:middle" width="88" height="31"
     alt="Valid XHTML 1.0!" /></a>
   
  - <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
  + <a href="$validator_css"><img
     src="$this->imgs_dir/vcss.png" 
     style="border:0;vertical-align:middle" width="88" height="31"
     alt="Valid CSS!" /></a>
  @@ -3971,8 +3985,14 @@
         #$attr="class='current'";
         # XXX make title more shorter ?
         $mnuname=htmlspecialchars($this->page->name);
  -      if ($DBInfo->hasPage($this->page->name) and strlen($mnuname) < 10)
  -        $menu[]=$this->word_repl($mypgname,$mnuname,$attr);
  +      if ($DBInfo->hasPage($this->page->name)) {
  +        if (strlen($mnuname) < 15) {
  +          $menu[]=$this->word_repl($mypgname,$mnuname,$attr);
  +        } else if (function_exists('mb_strimwidth')) {
  +          $my=mb_strimwidth($mypgname,0,15,'...');
  +          $menu[]=$this->word_repl($mypgname,htmlspecialchars($my),$attr);
  +        }
  +      }
       }
       $this->sister_on=$sister_save;
       if (!$this->css_friendly) {
  @@ -4503,13 +4523,28 @@
           echo "<br />".
             $formatter->link_to("?action=edit",$formatter->icon['create']._("Create this page"));
         } else {
  -        $formatter->send_title(sprintf(_("%s is not found in this Wiki"),$page->name),"",$options);
  +        $oldver='';
  +        if ($DBInfo->version_class) {
  +          getModule('Version',$DBInfo->version_class);
  +          $class="Version_".$DBInfo->version_class;
  +          $version=new $class ($DBInfo);
  +          $oldver= $version->rlog($formatter->page->name,'','','-z');
  +        }
           $button= $formatter->link_to("?action=edit",$formatter->icon['create']._("Create this page"));
  -        $searchval=htmlspecialchars($options['page']);
  -        print sprintf(_("%s or click %s to fullsearch this page.\n"),$button,$formatter->link_to("?action=fullsearch&amp;value=$searchval",_("title")));
  -        print $formatter->macro_repl('LikePages',$page->name,$err);
  -        if ($err['extra'])
  -          print $err['extra'];
  +        if ($oldver) {
  +          $formatter->send_title(sprintf(_("%s has saved revisions"),$page->name),"",$options);
  +          print sprintf(_("%s or click %s to fullsearch this page.\n"),$button,$formatter->link_to("?action=fullsearch&amp;value=$searchval",_("title")));
  +          $options['info_actions']=array('recall'=>'view','revert'=>'revert');
  +          $options['title']='<h3>'.sprintf(_("Old Revisions of the %s"),htmlspecialchars($page->name)).'</h3>';
  +          print $formatter->macro_repl('Info','',$options);
  +        } else {
  +          $formatter->send_title(sprintf(_("%s is not found in this Wiki"),$page->name),"",$options);
  +          $searchval=htmlspecialchars($options['page']);
  +          print sprintf(_("%s or click %s to fullsearch this page.\n"),$button,$formatter->link_to("?action=fullsearch&amp;value=$searchval",_("title")));
  +          print $formatter->macro_repl('LikePages',$page->name,$err);
  +          if ($err['extra'])
  +            print $err['extra'];
  +        }
   
           print "<hr />\n";
           $options['linkto']="?action=edit&amp;template=";
  
  
  


wkpark      2007/01/08 16:07:10

  Modified:    .        wikilib.php
  Log:
  fixed TitleIndex macro for namespaces
  
  Revision  Changes    Path
  1.223     +4 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.222
  retrieving revision 1.223
  diff -u -r1.222 -r1.223
  --- wikilib.php	27 Dec 2006 07:26:33 -0000	1.222
  +++ wikilib.php	8 Jan 2007 07:07:10 -0000	1.223
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.222 2006/12/27 07:26:33 wkpark Exp $
  +// $Id: wikilib.php,v 1.223 2007/01/08 07:07:10 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -135,6 +135,7 @@
       return array($page,$text,$main_page);
     }
   
  +  #if ($nogroup and $page[0]=='/') { # SubPage without group support. XXX disabled
     if ($page[0]=='/') { # SubPage
       $page=$pagename.$page;
     } else if (!empty($islink) && $tok=strtok($page,'.')) {
  @@ -2159,6 +2160,7 @@
   function macro_TitleIndex($formatter,$value) {
     global $DBInfo;
   
  +  $group=$formatter->group;
     if ($formatter->group) {
       $group_pages = $DBInfo->getLikePages($formatter->group);
       foreach ($group_pages as $page)
  @@ -2198,7 +2200,7 @@
         $title=get_title($page);
   
       #$out.= '<li>' . $formatter->word_repl('"'.$page.'"',$title,'',0,0);
  -    $urlname=_urlencode($page);
  +    $urlname=_urlencode($group.$page);
       $out.= '<li>' . $formatter->link_tag($urlname,'',htmlspecialchars($title));
       $keyname=$DBInfo->pageToKeyname(urldecode($page));
       if (is_dir($DBInfo->upload_dir."/$keyname"))
  
  
  


wkpark      2007/01/08 16:09:06

  Modified:    theme/azblue footer.php header.php theme.php
  Log:
  update :)
  add $_width option for this theme
  
  Revision  Changes    Path
  1.4       +1 -0      moniwiki/theme/azblue/footer.php
  
  Index: footer.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/azblue/footer.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- footer.php	22 Dec 2006 09:10:54 -0000	1.3
  +++ footer.php	8 Jan 2007 07:09:06 -0000	1.4
  @@ -31,3 +31,4 @@
   </div></div></div></div></div></div>
   </div>
   </div>
  +</div>
  
  
  
  1.7       +14 -1     moniwiki/theme/azblue/header.php
  
  Index: header.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/azblue/header.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- header.php	23 Dec 2006 06:07:39 -0000	1.6
  +++ header.php	8 Jan 2007 07:09:06 -0000	1.7
  @@ -1,6 +1,6 @@
   <?php
   # MoniWiki Theme by wkpark at kldp.org
  -# $Id: header.php,v 1.6 2006/12/23 06:07:39 wkpark Exp $
  +# $Id: header.php,v 1.7 2007/01/08 07:09:06 wkpark Exp $
   #
   if ($this->_sidebar) {
     include_once("plugin/login.php");
  @@ -14,6 +14,14 @@
   # theme options
   #$_theme['sidebar']=1;
   
  +if ($this->_width) {
  +  print <<<EOF
  +<style type='text/css'>
  +#mainBody { width:$this->_width;};
  +</style>
  +EOF;
  +}
  +
   ?>
   <div id='topHeader'>
   <!--
  @@ -23,6 +31,7 @@
   <a href='http://bbs.kldp.org'>KLDP BBS</a> &middot;
   -->
   </div>
  +<div id='mainContainer'>
   <div id='mainBody'>
   <!--
   <div id='topBanner'>
  @@ -37,10 +46,12 @@
   if ($this->popup!=1) :
   ?>
   <div id='pBanSpace'></div>
  +<?php if ($this->_topbanner): ?>
   <div id='pBanRight'><div id='pBanLeft'>
   <div id='pBanner'>
   <?php echo $DBInfo->sitename?>
   </div>
  +<?php endif;?>
   <div id='goForm'>
   <form id='go' action='' method='get' onsubmit="return moin_submit();">
   <div>
  @@ -58,8 +69,10 @@
   </div>
   </div></div>
   </div>
  +<?php if ($this->_topbanner): ?>
   </div>
   </div>
  +<?php endif;?>
   <?php endif; ?>
   <div class='clear'></div>
   <?php echo $msg?>
  
  
  
  1.2       +2 -0      moniwiki/theme/azblue/theme.php
  
  Index: theme.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/azblue/theme.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- theme.php	3 Feb 2006 22:50:49 -0000	1.1
  +++ theme.php	8 Jan 2007 07:09:06 -0000	1.2
  @@ -1,4 +1,6 @@
   <?php
   $css_friendly=1;
   $_sidebar=0;
  +$_topbanner=0;
  +$_width='750px';
   ?>
  
  
  


wkpark      2007/01/08 16:09:06

  Modified:    theme/azblue/css default.css
  Log:
  update :)
  add $_width option for this theme
  
  Revision  Changes    Path
  1.14      +25 -12    moniwiki/theme/azblue/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/azblue/css/default.css,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- default.css	23 Dec 2006 06:07:40 -0000	1.13
  +++ default.css	8 Jan 2007 07:09:06 -0000	1.14
  @@ -18,7 +18,7 @@
     padding-right:100px; */
     min-width:750px;
     margin: 0px auto 0px auto;
  -  width: 750px;
  +  width: 80%;
     min-height:400px;
     height: auto !important; /* IE min-height hack */
     height:400px;
  @@ -78,7 +78,6 @@
   }
   
   #pBanLeft {
  -  height:143px; /* total Banner heigt */
     /* border:1px solid red; /* */
   }
   
  @@ -87,7 +86,6 @@
   }
   
   #pTitle {
  -  height: 30px; /* title height */
     padding:0px;
     /* border: 1px solid red; /* */
   }
  @@ -117,7 +115,7 @@
   
   #goForm {
     float:right;
  -  padding: 3px 10px;
  +  padding: 3px 4px;
   }
   
   form {
  @@ -137,9 +135,9 @@
   #wikiBanner {
     padding-top:5px;
     text-align:center;
  +  font-family: Trebuchet MS,sans-serif;
   }
   
  -
   a:link { color: #0686db;}
   a:visited { color: #000000;}
   /* a:hover {background-color:#999966;color:white} /* */
  @@ -150,6 +148,11 @@
     font-weight:bold;
     text-decoration: none;
   }
  +
  +.wikiTitle a,.wikiTitle a:active,.wikiTitle a:visited {
  +  color: #0686db;
  +}
  +
   tt.wiki {font-family:Monotype,Lucida Console,lucida,monospace;font-size:12px;}
   tt.foot {
     font-family:Tahoma,lucida,monospace;
  @@ -338,6 +341,7 @@
   #wikiTrailer {
     background-color:#fafafa; 
     padding-left: 20px;
  +  font-family: Trebuchet MS,sans-serif;
   }
   
   .wikiNavigation {
  @@ -365,8 +369,9 @@
   #wikiHeader a:visited {color:#000000;}
   
   #wikiMenuBar {
  -  padding:6px;
  -  height:29px;
  +  padding-top:1px;
  +  padding-left:5px;
  +  height:42px; /* important !!! for IE */
   }
   
   #pMenuLeft {
  @@ -380,7 +385,7 @@
   
   #wikiIcon {
     float:right;
  -  padding: 3px 10px;
  +  padding: 7px 15px;
     text-align: right;
     vertical-align: middle;
   }
  @@ -399,19 +404,22 @@
     margin-left:0;
     padding-bottom:3px !important; /* for FF */
     padding-bottom:2px;
  -  height:1.7em;
  +  height:42px;
   }
   
   #wikiMenu li {
     display:inline;
  -  padding: 4px 10px;margin:0px;
  -  border-right: 1px solid #A8DBFD;
  +  padding: 9px 10px;
  +  padding-bottom:11px; /* for IE */
  +  margin:0px;
  +/*  border-right: 1px solid #A8DBFD; */
     /* border-right: 1px solid #e0e0e0; */
   /* background-color:whitesmoke; */
   /* the next 4 lines are magic for IE */
     float: left;
     position: relative;
     vertical-align:top;
  +  background: url("../imgs/mi.png") no-repeat right top;
   }
   
   #wikiMenu li:hover {
  @@ -419,6 +427,7 @@
     /* background-color: #355F88; /* dark blue */
     /* background-color: #F2B568; /* orange */
     text-decoration: none;
  +  background: url("../imgs/mih.png") no-repeat right top;
   }
   
   #wikiMenu li.current {
  @@ -426,6 +435,7 @@
     /* background-color: #2C4F72; /* dark blue */
     /* background-color: #E75024; /* orange */
     text-decoration: none;
  +  background: url("../imgs/mic.png") no-repeat right top;
   }
   
   #wikiMenu li:hover a{
  @@ -595,9 +605,12 @@
   }
   
   /* HierarchicalWiki */
  -div.wikiGroup {
  +.wikiGroup {
  +  font-weight:bold;
  +  padding-left:10px;
     font-family:Tahoma,Lucida,sans-serif;
     font-size:x-small;
  +  color: #0686db;
   }
   
   /* login */
  
  
  


wkpark      2007/01/08 16:09:07

  Added:       theme/azblue/imgs mi.png mic.png mih.png
  Log:
  update :)
  add $_width option for this theme
  
  Revision  Changes    Path
  1.1                  moniwiki/theme/azblue/imgs/mi.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/theme/azblue/imgs/mic.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/theme/azblue/imgs/mih.png
  
  	<<Binary file>>
  
  


wkpark      2007/01/09 10:28:45

  Added:       plugin/processor whtml.php
  Log:
  new WikiHtml processor added
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/processor/whtml.php
  
  Index: whtml.php
  ===================================================================
  <?php
  // Copyright 2007 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // sample plugin for the MoniWiki
  //
  // Author: Won-Kyu Park <wkpark@kldp.org>
  // Date: 2007-01-09
  // Name: WHTML Processor
  // Description: HTML with WikiLinks Processor
  // URL: MoniWiki:WikiHtmlProcessor
  // Version: $Revision: 1.1 $
  // License: GPL
  //
  // Usage: {{{#!whtml
  // <h1>Hello world ! Hello [MoniWiki]</h1>
  // Hello World
  // }}}
  // $Id: whtml.php,v 1.1 2007/01/09 01:28:45 wkpark Exp $
  
  function processor_whtml($formatter,$value='',$options=array()) {
      if ($value[0]=='#' and $value[1]=='!')
          list($line,$value)=explode("\n",$value,2);
  
      if ($line)
          list($tag,$args)=explode(' ',$line,2);
  
      $formatter->set_wordrule();
      $smiley_rule='/(?<=\s|^|>)('.$DBInfo->smiley_rule.')(?=\s|$|<)/e';
      $smiley_repl="\$formatter->smiley_repl('\\1')";
  
      $save=$formatter; // do not disturb $formatter
      $formatter->nonexists='always';
  
      $chunks=preg_split('/(<[^>]+>)/',$value,-1, PREG_SPLIT_DELIM_CAPTURE);
      for ($i=0,$sz=count($chunks); $i<$sz; $i++) {
          if ($chunks[$i][0] != '<') {
              $out=$chunks[$i];
              $out=preg_replace($smiley_rule,$smiley_repl,$out);
              $out=preg_replace("/(".$formatter->wordrule.")/e","\$formatter->link_repl('\\1')",$out);
              $chunks[$i]=$out;
          }
      }
  
      $formatter=$save;
  
      return implode('',$chunks);
  }
  
  // vim:et:sts=4:sw=4:
  ?>
  
  
  


wkpark      2007/01/09 13:29:02

  Modified:    plugin   revert.php
  Added:       plugin   rawtext.php
  Log:
  add a new action 'rawtext' and small fixes
  
  Revision  Changes    Path
  1.2       +3 -3      moniwiki/plugin/revert.php
  
  Index: revert.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/revert.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- revert.php	6 Jan 2007 06:52:11 -0000	1.1
  +++ revert.php	9 Jan 2007 04:29:02 -0000	1.2
  @@ -10,13 +10,13 @@
   // PluginType: macro,action
   // ActionType: protected
   // URL: to_plugin url/interwiki name etc.
  -// Version: $Revision: 1.1 $
  +// Version: $Revision: 1.2 $
   // Depend: 1.1.3
   // License: GPL
   //
   // Usage: ?action=revert&rev=1.1
   //
  -// $Id: revert.php,v 1.1 2007/01/06 06:52:11 wkpark Exp $
  +// $Id: revert.php,v 1.2 2007/01/09 04:29:02 wkpark Exp $
   
   function macro_Revert($formatter,$value,$options=array()) {
       $options['info_actions']=array('recall'=>'view','revert'=>'revert');
  @@ -81,7 +81,7 @@
       print "<form method='post'>
   $lab: <input name='comment' size='80' value='$comment' /><br />\n";
       $btn=_("Revert page");
  -    $msg=sprintf(_("Only WikiMaster can %s this pagee"),_("revert"));
  +    $msg=sprintf(_("Only WikiMaster can %s this page"),_("revert"));
       if ($DBInfo->security->is_protected("revert",$options))
           print _("Password").": <input type='password' name='passwd' size='20' value='' />
   $msg<br />\n";
  
  
  
  1.1                  moniwiki/plugin/rawtext.php
  
  Index: rawtext.php
  ===================================================================
  <?php
  // Copyright 2006 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a sample plugin for the MoniWiki
  //
  // Author: Your name <foobar@foo.bar>
  // Date: 2006-01-01
  // Name: Hello world
  // Description: Hello world Plugin
  // URL: to_plugin url/interwiki name etc.
  // Version: $Revision: 1.1 $
  // License: GPL
  //
  // Usage: [[Test]]
  //
  // $Id: rawtext.php,v 1.1 2007/01/09 04:29:02 wkpark Exp $
  
  function do_rawtext($formatter,$options) {
      $COLS_MSIE= 80;
      $COLS_OTHER= 85;
  
      $cols= preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']) ? $COLS_MSIE : $COLS_OTHER;
  
      $formatter->send_header('',$options);
      $formatter->send_title('','',$options);
  
      $body=$formatter->page->_get_raw_body();
      $raw_body = str_replace(array("&","<"),array("&amp;","&lt;"),$body);
  
      $rows=30;
  
      print <<<EOF
  <form>
  <textarea rows='$rows' cols='$cols' class='wiki'>$raw_body</textarea>
  </form>
  EOF;
      $formatter->send_footer('',$options);
      return;
  }
  
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2007/01/09 13:29:02

  Modified:    plugin/processor gnuplot.php
  Log:
  add a new action 'rawtext' and small fixes
  
  Revision  Changes    Path
  1.15      +7 -5      moniwiki/plugin/processor/gnuplot.php
  
  Index: gnuplot.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/gnuplot.php,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- gnuplot.php	6 Jan 2007 16:38:54 -0000	1.14
  +++ gnuplot.php	9 Jan 2007 04:29:02 -0000	1.15
  @@ -6,7 +6,7 @@
   // Usage: {{{#!gnuplot
   // plot sin(x)
   // }}}
  -// $Id: gnuplot.php,v 1.14 2007/01/06 16:38:54 wkpark Exp $
  +// $Id: gnuplot.php,v 1.15 2007/01/09 04:29:02 wkpark Exp $
   
   function processor_gnuplot($formatter="",$value="") {
     global $DBInfo;
  @@ -197,14 +197,16 @@
        }
     }
   
  -  if ($ext == 'ps')
  -    $extra='<a href="'.$png_url.'" />'.sprintf(_("Download %s"),$ext).'</a>';
  +  if ($ext == 'ps') {
  +    $bra='<a href="'.$png_url.'" />';
  +    $ket='</a>';
  +  }
   
     if (!file_exists($outpath)) return $log;
     if ($rext == 'png')
  -     return $log."<img src='$rpng_url' alt='gnuplot' />".$extra;
  +     return $log.$bra."<img src='$rpng_url' alt='gnuplot' style='border:0' />".$ket;
     if ($rext == 'svg')
  -     return $log."<embed src='$rpng_url' alt='gnuplot' width='640' height='480' />".$extra;
  +     return $log.$bra."<embed src='$rpng_url' alt='gnuplot' width='640' height='480' />".$ket;
     if ($rext == 'txt')
       return $log.'<pre class="gnuplot">'.(implode('',file("$cache_dir/$pngname"))).'</pre>';
   }
  
  
  


wkpark      2007/01/09 15:11:59

  Modified:    plugin   Info.php
  Log:
  fixed last changes
  
  Revision  Changes    Path
  1.13      +9 -4      moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Info.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- Info.php	15 Aug 2006 07:57:00 -0000	1.12
  +++ Info.php	9 Jan 2007 06:11:59 -0000	1.13
  @@ -3,15 +3,17 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Info plugin for the MoniWiki
   //
  -// $Id: Info.php,v 1.12 2006/08/15 07:57:00 wkpark Exp $
  +// $Id: Info.php,v 1.13 2007/01/09 06:11:59 wkpark Exp $
   
   function _parse_rlog($formatter,$log,$options=array()) {
     global $DBInfo;
   
     $tz_offset=$formatter->tz_offset;
  -  if (in_array($options['id'],$DBInfo->wikimasters)) $admin=1;
  +  if (is_array($DBInfo->wikimasters) and in_array($options['id'],$DBInfo->wikimasters)) $admin=1;
   
  -  if ($DBInfo->info_actions)
  +  if ($options['info_actions'])
  +    $actions=$options['info_actions'];
  +  else if ($DBInfo->info_actions)
       $actions=$DBInfo->info_actions;
     else
       $actions=array('recall'=>'view','raw'=>'raw');
  @@ -26,7 +28,10 @@
     $url=$formatter->link_url($formatter->page->urlname);
   
     $diff_btn=_("Diff");
  -  $out="<h2>"._("Revision History")."</h2>\n";
  +  if ($options['title'])
  +    $out=$options['title'];
  +  else
  +    $out="<h2>"._("Revision History")."</h2>\n";
     $out.="<form id='infoform' method='post' action='$url'>";
     $out.="<table class='info' cellpadding='3' cellspacing='2'><tr>\n";
     $out.="<th class='info'>ver.</th><th class='info'>Date and Changes</th>".
  
  
  


wkpark      2007/01/09 15:12:42

  Modified:    plugin   admin.php
  Log:
  check $owners
  
  Revision  Changes    Path
  1.3       +4 -4      moniwiki/plugin/admin.php
  
  Index: admin.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/admin.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- admin.php	17 Aug 2006 08:03:13 -0000	1.2
  +++ admin.php	9 Jan 2007 06:12:42 -0000	1.3
  @@ -9,13 +9,13 @@
   // Name: Admin
   // Description: Admin Plugin
   // URL: MoniWiki:AdminPlugin
  -// Version: $Revision: 1.2 $
  +// Version: $Revision: 1.3 $
   // Depend: 1.1.3
   // License: GPL
   //
   // Usage: ?action=admin
   //
  -// $Id: admin.php,v 1.2 2006/08/17 08:03:13 wkpark Exp $
  +// $Id: admin.php,v 1.3 2007/01/09 06:12:42 wkpark Exp $
   
   function get_plugin_info($plugin_file) {
       // wordpress style management
  @@ -164,7 +164,7 @@
   MENU;
       $out.="<form method='post' action=''><table algin='center'><tr valign='top'>".$pl.
           "</table>";
  -    if (in_array($options['id'],$DBInfo->owners)) {
  +    if (is_array($DBInfo->owners) and in_array($options['id'],$DBInfo->owners)) {
           $out.='<input type="hidden" name="action" value="admin" />';
           $out.='<input type="submit" value="Update" />';
       }
  @@ -174,7 +174,7 @@
   
   function do_admin($formatter,$options) {
       global $DBInfo;
  -    if (in_array($options['id'],$DBInfo->owners) and
  +    if (is_array($DBInfo->owners) and in_array($options['id'],$DBInfo->owners) and
               (is_array($options['pl']) or is_array($options['pr']))) {
           $formatter->send_header('',$options);
           $cp=new Cache_text('settings');
  
  
  


wkpark      2007/01/09 15:13:33

  Modified:    plugin   Rating.php
  Log:
  use title attr.
  
  Revision  Changes    Path
  1.6       +5 -7      moniwiki/plugin/Rating.php
  
  Index: Rating.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Rating.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Rating.php	2 Jan 2007 06:58:35 -0000	1.5
  +++ Rating.php	9 Jan 2007 06:13:33 -0000	1.6
  @@ -7,12 +7,12 @@
   // Name: Rating
   // Description: Rating Plugin
   // URL: MoniWiki:RatingPlugin
  -// Version: $Revision: 1.5 $
  +// Version: $Revision: 1.6 $
   // License: GPL
   //
   // Usage: [[Rating(totalscore,count)]] or [[Rating(initial score)]]
   //
  -// $Id: Rating.php,v 1.5 2007/01/02 06:58:35 wkpark Exp $
  +// $Id: Rating.php,v 1.6 2007/01/09 06:13:33 wkpark Exp $
   
   function macro_Rating($formatter,$value='',$options=array()) {
       global $Config;
  @@ -38,7 +38,7 @@
       $script=<<<EOF
   <script type="text/javascript">
   /*<![CDATA[*/
  -function showstars(obj, n, desc) {
  +function showstars(obj, n) {
       var my = obj.parentNode.parentNode;
       var c = my.getElementsByTagName('img');
       for( i=0; i < c.length; i++ ) {
  @@ -47,7 +47,6 @@
           else
               c[i].src = "$imgs_dir/star0.png"
       }
  -    my.getElementsByTagName('span')[0].innerHTML = desc ? ' ' + desc:'';
   }
   
   /*]]>*/
  @@ -67,12 +66,11 @@
           $alt=$t ? '{*}':'{o}';
           $star.='<a href="?action=rating'.$mid.'&amp;rating='.$i.'">'.
               '<img alt="'.$alt.'" src="'.$imgs_dir.'/star'.$t.'.png" '.
  -            'onmouseover="showstars(this,'.$i.
  -            ',\''.$msg[$i].'\')" onmouseout="showstars(this,'.intval($value).',\'\')" '.
  +            'onmouseover="showstars(this,'.$i.')" title="'.$msg[$i].'" '.
  +            'onmouseout="showstars(this,'.intval($value).')" '.
               'style="border:0" class="star" /></a>';
       }
       $star.=<<<EOF
  -<span class="rating-desc" style="font-size: 16px;"></span>
   </span>
   EOF;
       if ($rating_script) return $star;
  
  
  


wkpark      2007/01/09 19:09:11

  Modified:    css      _extra.css
  Log:
  fix for google search highlights
  
  Revision  Changes    Path
  1.10      +12 -0     moniwiki/css/_extra.css
  
  Index: _extra.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_extra.css,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- _extra.css	23 Dec 2006 06:10:58 -0000	1.9
  +++ _extra.css	9 Jan 2007 10:09:10 -0000	1.10
  @@ -262,3 +262,15 @@
     cursor:pointer;
   }
   
  +.previewTex {
  +  vertical-align:middle;
  +}
  +
  +/* Styles for search word highlighting */
  +@media screen {
  + .searchword0 { background: #ff9 }
  + .searchword1 { background: #cfc }
  + .searchword2 { background: #cff }
  + .searchword3 { background: #ccf }
  + .searchword4 { background: #fcf }
  +}
  
  
  


wkpark      2007/01/13 01:26:03

  Modified:    config   acl.default.php.sample
  Log:
  add some comments
  
  Revision  Changes    Path
  1.2       +8 -6      moniwiki/config/acl.default.php.sample
  
  Index: acl.default.php.sample
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config/acl.default.php.sample,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- acl.default.php.sample	20 Jul 2006 00:01:16 -0000	1.1
  +++ acl.default.php.sample	12 Jan 2007 16:26:03 -0000	1.2
  @@ -1,27 +1,24 @@
  -# a sample acl.default.php
  +# acl.default.php
   # <?php exit()?>
   # Please don't modify the lines above
   #
   # A sample Access Control Lists file for Moniwiki
   #
  -# $Id: acl.default.php.sample,v 1.1 2006/07/20 00:01:16 wkpark Exp $
  +# $Id: acl.default.php.sample,v 1.2 2007/01/12 16:26:03 wkpark Exp $
   @Guest	Anonymous
   *	@ALL		deny	*
  -*	@ALL		allow	edit,ticket,savepage
  +*	@ALL		allow	edit,ticket,savepage,titleindex,bookmark
   *	@User		allow	*
   # some pages are allowed to edit
   WikiSandBox	@Guest	allow	edit,info,diff
   #*	Anonymous	deny	*
   # some POST actions support protected mode using admin password
  -*	@ALL		protect	deletefile,deletepage,rename,rcspurge,rcs,chmod,backup,restore
  +*	@ALL		protect	deletefile,deletepage,rename,rcspurge,rcs,chmod,backup,restore,revert
   # some actions allowed to @ALL
   *	@ALL		allow	read,userform,rss_rc,aclinfo,fortune,deletepage,fixmoin,ticket
   # some pages have restrict permission
   MoniWiki	@ALL	deny	edit,uploadfile,diff
  -# you can use simple wildcards
   HelpOn*		@User	deny	edit,uploadfile,diff
  -# and also use regex
  -#MoniWiki/.*		@User	deny	edit,uploadfile
   # special pages
   ACL	@ALL		deny    edit,diff,info # a shared ACL file (not supported yet XXX)
   # set group members
  @@ -29,3 +26,8 @@
   #@Kiwirian	foobar
   #*	@Kiwirian	deny	*
   #*	@Kiwirian	allow	read
  +###
  +### hide some page to show
  +###
  +#MySecretPage	@Guest	deny	read,raw,recall,diff
  +#MySecretPage	@Guest	allow	*
  
  
  


wkpark      2007/01/13 01:28:18

  Modified:    plugin   bookmark.php userform.php
  Log:
  fixed PR #301609 reported by gomeisa,kz
  
  Revision  Changes    Path
  1.3       +4 -2      moniwiki/plugin/bookmark.php
  
  Index: bookmark.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/bookmark.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- bookmark.php	21 Oct 2004 08:27:01 -0000	1.2
  +++ bookmark.php	12 Jan 2007 16:28:18 -0000	1.3
  @@ -4,7 +4,7 @@
   // a bookmark action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: bookmark.php,v 1.2 2004/10/21 08:27:01 wkpark Exp $
  +// $Id: bookmark.php,v 1.3 2007/01/12 16:28:18 wkpark Exp $
   
   function do_bookmark($formatter,$options) {
     global $DBInfo;
  @@ -36,7 +36,9 @@
       $options['msg']="Invalid bookmark!";
     $formatter->send_header("",$options);
     $formatter->send_title($title,"",$options);
  -  $formatter->send_page();
  +  if (!$DBInfo->control_read or $DBInfo->security->is_allowed('read',$options)) {
  +    $formatter->send_page();
  +  }
     $formatter->send_footer("",$options);
   }
   
  
  
  
  1.18      +3 -3      moniwiki/plugin/userform.php
  
  Index: userform.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/userform.php,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- userform.php	8 Jul 2006 14:32:50 -0000	1.17
  +++ userform.php	12 Jan 2007 16:28:18 -0000	1.18
  @@ -4,7 +4,7 @@
   // a userform action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: userform.php,v 1.17 2006/07/08 14:32:50 wkpark Exp $
  +// $Id: userform.php,v 1.18 2007/01/12 16:28:18 wkpark Exp $
   
   function do_userform($formatter,$options) {
     global $DBInfo;
  @@ -352,9 +352,9 @@
   
     $formatter->send_header("",$options);
     $formatter->send_title($title,"",$options);
  -  if (!$title)
  +  if (!$title && (!$DBInfo->control_read or $DBInfo->security->is_allowed('read',$options)) ) {
       $formatter->send_page();
  -  else {
  +  } else {
       if ($form) print $form;
   #    else $formatter->send_page("Goto UserPreferences");
     }
  
  
  


keizie      2007/04/30 23:30:48

  Added:       plugin   referer.php
  Log:
  Print last N lines of referer log in table layout.
  Recognize known search engine keywords by regex.
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/referer.php
  
  Index: referer.php
  ===================================================================
  <?
  // vim:et:ts=2:
  
  function do_referer($formatter, $options)
  {
    $out= macro_referer($formatter,$options['value'],&$options);
  
    return $out;
  }
  
  /* snippet from http://au2.php.net/manual/en/function.fseek.php */
  function tail_file($file, $lines)
  {
          $handle = fopen($file, "r");
          $linecounter = $lines;
          $pos = -2;
          $beginning = false;
          $text = array();
          while ($linecounter > 0) {
                  $t = " ";
                  while ($t != "\n") {
                          if(fseek($handle, $pos, SEEK_END) == -1) {
                                  $beginning = true; break; }
                          $t = fgetc($handle);
                          $pos --;
                  }
                  $linecounter --;
                  if($beginning) rewind($handle);
                  $text[$lines-$linecounter-1] = fgets($handle);
                  if($beginning) break;
          }
          fclose ($handle);
          return $text;
  }
  
  function macro_referer($formatter="",$value, &$options) {
    global $DBInfo;
    if (!$DBInfo->use_referer)
      return "[[referer macro: $use_referer is off.]]";
    $referer_log_filename = $DBInfo->cache_dir."/referer/referer.log";
  
    if ($value !== true) {
      // [[referer]] or ?action=referer
      $needle = $formatter->page->name;
    } else {
      // [[referer()]]
      unset($needle);
    }
  
    if ($needle) {
      $handle = fopen($referer_log_filename, 'r');
      $logs = array();
      while(!feof($handle)) {
        $line = fgets($handle);
        list(, $pagename,) = explode("\t", $line);
        if ($pagename == $needle)
          $logs[] = $line;
      }
      fclose($handle);
      $logs = array_reverse($logs);
    } else {
      $number_of_lines = 10;
      $logs = tail_file ($referer_log_filename, $number_of_lines);
    }
  
    $user=new User(); # retrive user info
    if ($user->id != 'Anonymous') {
      $tz_offset= $user->info['tz_offset'];
    }
    if ($tz_offset == '') {
      $tz_offset=date("Z");
    }
    
    $length = sizeof($logs);
    for ($c = 0; $c < $length; $c++) {
      $fields = explode("\t", $logs[$c]);
      $fields[0] = date("Y-m-d H:i:s", strtotime($fields[0])+$tz_offset);
      $fields[1] = $formatter->link_tag(urlencode($fields[1]), "", $fields[1]);
      if (ereg("[?&][pqQ](uery)?=([^&]+)&?", $fields[2], $regs)) {
        $found = urldecode($regs[2]);
        if (@iconv("utf-8", "cp949", $found)) {
          $found = iconv("utf-8", "cp949", $found);
        }
      } else {
        unset($found);
      }
      $fields[2] = ($found ? "[ $found ] " : "") ."<a href='$fields[2]'>".$fields[2]."</a>";
  
      if (isset($needle)) unset($fields[1]);
      $logs[$c] = "<td>". implode("</td><td>", $fields) ."<td>";
    }
    if ($length > 0) {
      $ret = "\n<table>";
      $ret.= "<caption>Referer history</caption>";
      $ret.= "<tr>";
      $ret.= implode("</tr>\n<tr>", $logs);
      $ret.= "</tr></table>\n";
    } else {
      $ret = "";
    }
  
    return $ret;
  }
  
  ?>
  
  
  


keizie      2007/05/02 21:40:33

  Modified:    .        wiki.php
  Log:
  #nodtd pi appended
  
  Revision  Changes    Path
  1.347     +8 -9      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.346
  retrieving revision 1.347
  diff -u -r1.346 -r1.347
  --- wiki.php	8 Jan 2007 07:06:42 -0000	1.346
  +++ wiki.php	2 May 2007 12:40:33 -0000	1.347
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.346 2007/01/08 07:06:42 wkpark Exp $
  +// $Id: wiki.php,v 1.347 2007/05/02 12:40:33 keizie Exp $
   //
  -$_revision = substr('$Revision: 1.346 $',1,-1);
  +$_revision = substr('$Revision: 1.347 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -613,6 +613,10 @@
       $this->logo_page= $this->frontpage;
       $this->logo_string= '<img src="'.$this->logo_img.'" alt="[logo]" style="vertical-align:middle;border:0px" />';
       $this->metatags='<meta name="robots" content="noindex,nofollow" />';
  +    $this->doctype=<<<EOS
  +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  +<html xmlns="http://www.w3.org/1999/xhtml">
  +EOS;
       $this->use_smileys=1;
       $this->hr="<hr class='wikiHr' />";
       $this->date_fmt= 'Y-m-d';
  @@ -1883,7 +1887,7 @@
       $pikeys=array('#redirect','#action','#title','#keywords','#noindex',
         '#format','#filter','#postfilter','#twinpages','#notwins','#nocomment',
         '#language','#camelcase','#nocamelcase','#cache','#nocache',
  -      '#singlebracket','#nosinglebracket','#rating','#norating');
  +      '#singlebracket','#nosinglebracket','#rating','#norating','#nodtd');
       $pi=array();
   
       $format='';
  @@ -3659,12 +3663,7 @@
             htmlspecialchars($options['title']);
         }
         if (empty($options['css_url'])) $options['css_url']=$DBInfo->css_url;
  -      if ($DBInfo->doctype) print $DBInfo->doctype;
  -      else
  -        print <<<EOS
  -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  -<html xmlns="http://www.w3.org/1999/xhtml">
  -EOS;
  +      if (!$this->pi['#nodtd']) print $DBInfo->doctype;
         print "<head>\n";
   
         print '<meta http-equiv="Content-Type" content="'.$content_type.
  
  
  


iolo        2007/05/15 20:18:39

  Modified:    css      _extra.css
  Log:
  add folding processor and css styles.
  see http://kldp.net/forum/forum.php?thread_id=9418&forum_id=712
  
  Revision  Changes    Path
  1.11      +23 -0     moniwiki/css/_extra.css
  
  Index: _extra.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_extra.css,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- _extra.css	9 Jan 2007 10:09:10 -0000	1.10
  +++ _extra.css	15 May 2007 11:18:39 -0000	1.11
  @@ -266,6 +266,29 @@
     vertical-align:middle;
   }
   
  +/* Styles for folding processor */
  +.folding {
  +	background:#eee;
  +	border-color:#ccc;
  +	margin:10px;
  +	padding:0;
  +}
  +
  +.folding dt {
  +	background-color:#bdc2bd;
  +	height:20px;
  +	font-weight:bold;
  +	line-height:20px;
  +	vertical-align:middle;
  +	cursor:pointer;
  +}
  +
  +.folding dd {
  +	display:none;
  +	padding:10px;
  +	margin:0;
  +}
  +
   /* Styles for search word highlighting */
   @media screen {
    .searchword0 { background: #ff9 }
  
  
  


iolo        2007/05/15 20:18:40

  Added:       plugin/processor folding.php
  Log:
  add folding processor and css styles.
  see http://kldp.net/forum/forum.php?thread_id=9418&forum_id=712
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/processor/folding.php
  
  Index: folding.php
  ===================================================================
  <?php
  // Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // sample plugin for the MoniWiki
  //
  // Author: Your name <foobar@foo.bar>
  // Date: 2006-01-01
  // Name: Hello world
  // Description: Hello world Processor
  // URL: to_plugin url/interwiki name etc.
  // Version: $Revision: 1.1 $
  // License: GPL
  //
  // Usage: {{{#!folding Name
  // Hello World
  // }}}
  // $Id: folding.php,v 1.1 2007/05/15 11:18:40 iolo Exp $
  
  function processor_folding($formatter,$value="",$options=array()) {
      if ($value[0]=='#' and $value[1]=='!')
          list($line,$value)=explode("\n",$value,2);
  
      if ($line)
          list($tag,$args)=explode(' ',$line,2);
  
      // unique id for folding area(dd tag)
      $id = md5($args);
  
      // allow wiki syntax in folding content
      ob_start();
      $formatter->send_page($value);
      $value = ob_get_contents();
      ob_end_clean();
  
      return <<<HERE
  <dl class="folding">
  <dt onclick="document.getElementById('folding_$id').style.display=(document.getElementById('folding_$id').style.display == 'block') ? 'none' : 'block';">$args</dt>
  <dd id="folding_$id" style="display:none;">$value</dd>
  </dl>
  HERE;
  }
  
  // vim:et:sts=4:
  ?>
  
  
  


keizie      2007/07/01 21:59:23

  Modified:    plugin   Attachment.php
  Log:
  check download action is allowed, for copyright issue
  
  Revision  Changes    Path
  1.27      +5 -2      moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- Attachment.php	3 Jan 2007 04:24:18 -0000	1.26
  +++ Attachment.php	1 Jul 2007 12:59:23 -0000	1.27
  @@ -7,13 +7,13 @@
   // Name: Attachment
   // Description: Attachment Plugin
   // URL: MoniWiki:AttachmentPlugin
  -// Version: $Revision: 1.26 $
  +// Version: $Revision: 1.27 $
   // Depend: 1.1.3
   // License: GPL
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.26 2007/01/03 04:24:18 wkpark Exp $
  +// $Id: Attachment.php,v 1.27 2007/07/01 12:59:23 keizie Exp $
   
   function macro_Attachment($formatter,$value,$option='') {
     global $DBInfo;
  @@ -26,6 +26,9 @@
   
     $text='';
   
  +  if (!$DBInfo->security->is_allowed($mydownload,$options))
  +    return $text;
  +
     if ($formatter->wikimarkup and !$options['nomarkup']) {
       $bra= "<span class='wikiMarkup'><!-- wiki:\nattachment:$value\n-->";
       $ket= '</span>';
  
  
  


keizie      2007/08/01 10:13:20

  Modified:    .        wikilib.php
  Log:
  new action: rawblog to extract raw body of certain Blog entry from page text
  
  Revision  Changes    Path
  1.224     +3 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.223
  retrieving revision 1.224
  diff -u -r1.223 -r1.224
  --- wikilib.php	8 Jan 2007 07:07:10 -0000	1.223
  +++ wikilib.php	1 Aug 2007 01:13:20 -0000	1.224
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.223 2007/01/08 07:07:10 wkpark Exp $
  +// $Id: wikilib.php,v 1.224 2007/08/01 01:13:20 keizie Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -724,6 +724,7 @@
     $cols= $options['cols'] > 60 ? $options['cols']: $cols;
   
     $text= $options['savetext'];
  +  $editlog= $options['editlog'] ? $options['editlog'] : "";
   
     $args= explode(',',$value);
     if (in_array('nohints',$args)) $options['nohints']=1;
  @@ -883,7 +884,7 @@
   <div id="wikiEditor">
   <textarea id="content" wrap="virtual" name="savetext" tabindex="1"
    rows="$rows" cols="$cols" class="wiki resizable">$raw_body</textarea><br />
  -$summary_msg: <input name="comment" size="70" maxlength="70" style="width:80%" tabindex="2" />$extra_check<br />
  +$summary_msg: <input name="comment" value="$editlog" size="70" maxlength="70" style="width:80%" tabindex="2" />$extra_check<br />
   <input type="hidden" name="action" value="savepage" />
   <input type="hidden" name="datestamp" value="$datestamp" />
   $hidden$select_category
  
  
  


keizie      2007/08/01 10:13:20

  Added:       plugin   rawblog.php
  Log:
  new action: rawblog to extract raw body of certain Blog entry from page text
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/rawblog.php
  
  Index: rawblog.php
  ===================================================================
  <?php
  
  function do_rawblog($formatter,$options) {
    global $DBInfo;
    global $HTTP_USER_AGENT;
    $COLS_MSIE = 80;
    $COLS_OTHER = 85;
    $cols = preg_match('/MSIE/', $HTTP_USER_AGENT) ? $COLS_MSIE : $COLS_OTHER;
  
    $rows=$options['rows'] > 5 ? $options['rows']: 8;
    $cols=$options['cols'] > 60 ? $options['cols']: $cols;
  
    $url=$formatter->link_url($formatter->page->urlname);
    $formatter->send_header("",$options);
  
    { # add entry or comment
      if ($options['value']) {
        $raw_body=$formatter->page->_get_raw_body();
        $lines=explode("\n",$raw_body);
        $count=count($lines);
        for ($i=0;$i<$count;$i++) {
          if (preg_match("/^({{{)?#!blog (.*)$/",$lines[$i],$match)) {
            if (md5($match[2]) == $options['value']) {
              list($tag, $user, $date, $title) = explode(" ",$lines[$i],4);
              $found=1;
              $lines[$i]='#!blog '.$match[2];
              break;
            }
          }
        }
  
        if ($found) {
          for (;$i<$count;$i++) {
            if (preg_match("/^}}}$/",$lines[$i])) {
              unset($lines[$i]);
              break;
            }
            $quote.=$lines[$i]."\n";
            unset($lines[$i]);
          }
          $quote=str_replace('\}}}','}}}',$quote);
        } else {
          $formatter->send_title("Error: No entry found!","",$options);
          $formatter->send_footer("",$options);
          return;
        }
        if (!$title) $title=$options['page'];
        $formatter->send_title(sprintf(_("Delete Blog entry \"%s\""),$title),"",$options);
      }
      $options['noaction']=1;
  
      print <<<FORM
  <textarea class="wiki" id="content" wrap="virtual" name="savetext"
   rows="$rows" cols="$cols" class="wiki">$quote</textarea><br />
  FORM;
    }
    $options['savetext']=implode("\n",$lines);
    $options['editlog']=sprintf(_("Delete Blog entry \"%s\""),$title);
    echo macro_Edit($formatter,"",$options);
    $formatter->send_footer("",$options);
    return;
  }
  
  // vim:et:sts=2:
  ?>
  
  
  


keizie      2007/08/01 10:13:20

  Modified:    plugin/processor blog.php
  Log:
  new action: rawblog to extract raw body of certain Blog entry from page text
  
  Revision  Changes    Path
  1.24      +3 -1      moniwiki/plugin/processor/blog.php
  
  Index: blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/blog.php,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- blog.php	31 Oct 2006 01:54:17 -0000	1.23
  +++ blog.php	1 Aug 2007 01:13:20 -0000	1.24
  @@ -7,7 +7,7 @@
   // Hello World
   // }}}
   // this processor is used internally by the Blog action
  -// $Id: blog.php,v 1.23 2006/10/31 01:54:17 pyrasis Exp $
  +// $Id: blog.php,v 1.24 2007/08/01 01:13:20 keizie Exp $
   
   function processor_blog($formatter,$value="",$options) {
     static $date_anchor='';
  @@ -95,6 +95,8 @@
         $action= $formatter->link_tag($formatter->page->urlname,"?action=blog&amp;value=$md5sum#BlogComment",$add_button);
         if (getPlugin('SendPing'))
           $action.= ' | '.$formatter->link_tag($formatter->page->urlname,"?action=trackback&amp;value=$md5sum",_("track back").$counter);
  +      if (getPlugin('rawblog'))
  +        $action.= ' | '.$formatter->link_tag($formatter->page->urlname,"?action=rawblog&amp;value=$md5sum",_("raw"));
       }
   
       if ($action)
  
  
  


wkpark      2007/09/27 17:42:39

  Added:       local/js swfobject.js
  Log:
  add swfobject v1.5
  
  Revision  Changes    Path
  1.1                  moniwiki/local/js/swfobject.js
  
  Index: swfobject.js
  ===================================================================
  /**
   * SWFObject v1.5: Flash Player detection and embed - http://blog.deconcept.com/swfobject/
   *
   * SWFObject is (c) 2007 Geoff Stearns and is released under the MIT License:
   * http://www.opensource.org/licenses/mit-license.php
   *
   */
  if(typeof deconcept=="undefined"){var deconcept=new Object();}if(typeof deconcept.util=="undefined"){deconcept.util=new Object();}if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();}deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!document.getElementById){return;}this.DETECT_KEY=_a?_a:"detectflash";this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);this.params=new Object();this.variables=new Object();this.attributes=new Array();if(_1){this.setAttribute("swf",_1);}if(id){this.setAttribute("id",id);}if(w){this.setAttribute("width",w);}if(h){this.setAttribute("height",h);}if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=true;}if(c){this.addParam("bgcolor",c);}var q=_7?_7:"high";this.addParam("quality",q);this.setAttribute("useExpressInstall",false);this.setAttribute("doExpressInstall",false);var _c=(_8)?_8:window.location;this.setAttribute("xiRedirectUrl",_c);this.setAttribute("redirectUrl","");if(_9){this.setAttribute("redirectUrl",_9);}};deconcept.SWFObject.prototype={useExpressInstall:function(_d){this.xiSWFPath=!_d?"expressinstall.swf":_d;this.setAttribute("useExpressInstall",true);},setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=_12;},getParams:function(){return this.params;},addVariable:function(_13,_14){this.variables[_13]=_14;},getVariable:function(_15){return this.variables[_15];},getVariables:function(){return this.variables;},getVariablePairs:function(){var _16=new Array();var key;var _18=this.getVariables();for(key in _18){_16[_16.length]=key+"="+_18[key];}return _16;},getSWFHTML:function(){var _19="";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","PlugIn");this.setAttribute("swf",this.xiSWFPath);}_19="<embed type=\"application/x-shockwave-flash\" src=\""+this.getAttribute("swf")+"\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\"";_19+=" id=\""+this.getAttribute("id")+"\" name=\""+this.getAttribute("id")+"\" ";var _1a=this.getParams();for(var key in _1a){_19+=[key]+"=\""+_1a[key]+"\" ";}var _1c=this.getVariablePairs().join("&");if(_1c.length>0){_19+="flashvars=\""+_1c+"\"";}_19+="/>";}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");this.setAttribute("swf",this.xiSWFPath);}_19="<object id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\">";_19+="<param name=\"movie\" value=\""+this.getAttribute("swf")+"\" />";var _1d=this.getParams();for(var key in _1d){_19+="<param name=\""+key+"\" value=\""+_1d[key]+"\" />";}var _1f=this.getVariablePairs().join("&");if(_1f.length>0){_19+="<param name=\"flashvars\" value=\""+_1f+"\" />";}_19+="</object>";}return _19;},write:function(_20){if(this.getAttribute("useExpressInstall")){var _21=new deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){this.setAttribute("doExpressInstall",true);this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));document.title=document.title.slice(0,47)+" - Flash Player Installation";this.addVariable("MMdoctitle",document.title);}}if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){var n=(typeof _20=="string")?document.getElementById(_20):_20;n.innerHTML=this.getSWFHTML();return true;}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}return false;}};deconcept.SWFObjectUtil.getPlayerVersion=function(){var _23=new deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins["Shockwave Flash"];if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}}else{if(navigator.userAgent&&navigator.userAgent.indexOf("Windows CE")>=0){var axo=1;var _26=3;while(axo){try{_26++;axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_26);_23=new deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=null;}}}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";}catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}}}return _23;};deconcept.PlayerVersion=function(_29){this.major=_29[0]!=null?parseInt(_29[0]):0;this.minor=_29[1]!=null?parseInt(_29[1]):0;this.rev=_29[2]!=null?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototype.versionIsValid=function(fv){if(this.major<fv.major){return false;}if(this.major>fv.major){return true;}if(this.minor<fv.minor){return false;}if(this.minor>fv.minor){return true;}if(this.rev<fv.rev){return false;}return true;};deconcept.util={getRequestParameter:function(_2b){var q=document.location.search||document.location.hash;if(_2b==null){return q;}if(q){var _2d=q.substring(1).split("&");for(var i=0;i<_2d.length;i++){if(_2d[i].substring(0,_2d[i].indexOf("="))==_2b){return _2d[i].substring((_2d[i].indexOf("=")+1));}}}return "";}};deconcept.SWFObjectUtil.cleanupSWFs=function(){var _2f=document.getElementsByTagName("OBJECT");for(var i=_2f.length-1;i>=0;i--){_2f[i].style.display="none";for(var x in _2f[i]){if(typeof _2f[i][x]=="function"){_2f[i][x]=function(){};}}}};if(deconcept.SWFObject.doPrepUnload){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};window.attachEvent("onunload",deconcept.SWFObjectUtil.cleanupSWFs);};window.attachEvent("onbeforeunload",deconcept.SWFObjectUtil.prepUnload);deconcept.unloadSet=true;}}if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all[id];};}var getQueryParamValue=deconcept.util.getRequestParameter;var FlashObject=deconcept.SWFObject;var SWFObject=deconcept.SWFObject;
  
  


wkpark      2007/09/27 17:46:37

  Modified:    local/js swfobject.js
  Log:
  just newline fixes for a clear patch against this line
  
  Revision  Changes    Path
  1.2       +5 -1      moniwiki/local/js/swfobject.js
  
  Index: swfobject.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/swfobject.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- swfobject.js	27 Sep 2007 08:42:39 -0000	1.1
  +++ swfobject.js	27 Sep 2007 08:46:37 -0000	1.2
  @@ -5,4 +5,8 @@
    * http://www.opensource.org/licenses/mit-license.php
    *
    */
  -if(typeof deconcept=="undefined"){var deconcept=new Object();}if(typeof deconcept.util=="undefined"){deconcept.util=new Object();}if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();}deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!document.getElementById){return;}this.DETECT_KEY=_a?_a:"detectflash";this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);this.params=new Object();this.variables=new Object();this.attributes=new Array();if(_1){this.setAttribute("swf",_1);}if(id){this.setAttribute("id",id);}if(w){this.setAttribute("width",w);}if(h){this.setAttribute("height",h);}if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=true;}if(c){this.addParam("bgcolor",c);}var q=_7?_7:"high";this.addParam("quality",q);this.setAttribute("useExpressInstall",false);this.setAttribute("doExpressInstall",false);var _c=(_8)?_8:window.location;this.setAttribute("xiRedirectUrl",_c);this.setAttribute("redirectUrl","");if(_9){this.setAttribute("redirectUrl",_9);}};deconcept.SWFObject.prototype={useExpressInstall:function(_d){this.xiSWFPath=!_d?"expressinstall.swf":_d;this.setAttribute("useExpressInstall",true);},setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=_12;},getParams:function(){return this.params;},addVariable:function(_13,_14){this.variables[_13]=_14;},getVariable:function(_15){return this.variables[_15];},getVariables:function(){return this.variables;},getVariablePairs:function(){var _16=new Array();var key;var _18=this.getVariables();for(key in _18){_16[_16.length]=key+"="+_18[key];}return _16;},getSWFHTML:function(){var _19="";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","PlugIn");this.setAttribute("swf",this.xiSWFPath);}_19="<embed type=\"application/x-shockwave-flash\" src=\""+this.getAttribute("swf")+"\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\"";_19+=" id=\""+this.getAttribute("id")+"\" name=\""+this.getAttribute("id")+"\" ";var _1a=this.getParams();for(var key in _1a){_19+=[key]+"=\""+_1a[key]+"\" ";}var _1c=this.getVariablePairs().join("&");if(_1c.length>0){_19+="flashvars=\""+_1c+"\"";}_19+="/>";}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");this.setAttribute("swf",this.xiSWFPath);}_19="<object id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\">";_19+="<param name=\"movie\" value=\""+this.getAttribute("swf")+"\" />";var _1d=this.getParams();for(var key in _1d){_19+="<param name=\""+key+"\" value=\""+_1d[key]+"\" />";}var _1f=this.getVariablePairs().join("&");if(_1f.length>0){_19+="<param name=\"flashvars\" value=\""+_1f+"\" />";}_19+="</object>";}return _19;},write:function(_20){if(this.getAttribute("useExpressInstall")){var _21=new deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){this.setAttribute("doExpressInstall",true);this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));document.title=document.title.slice(0,47)+" - Flash Player Installation";this.addVariable("MMdoctitle",document.title);}}if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){var n=(typeof _20=="string")?document.getElementById(_20):_20;n.innerHTML=this.getSWFHTML();return true;}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}return false;}};deconcept.SWFObjectUtil.getPlayerVersion=function(){var _23=new deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins["Shockwave Flash"];if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}}else{if(navigator.userAgent&&navigator.userAgent.indexOf("Windows CE")>=0){var axo=1;var _26=3;while(axo){try{_26++;axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_26);_23=new deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=null;}}}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";}catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}}}return _23;};deconcept.PlayerVersion=function(_29){this.major=_29[0]!=null?parseInt(_29[0]):0;this.minor=_29[1]!=null?parseInt(_29[1]):0;this.rev=_29[2]!=null?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototype.versionIsValid=function(fv){if(this.major<fv.major){return false;}if(this.major>fv.major){return true;}if(this.minor<fv.minor){return false;}if(this.minor>fv.minor){return true;}if(this.rev<fv.rev){return false;}return true;};deconcept.util={getRequestParameter:function(_2b){var q=document.location.search||document.location.hash;if(_2b==null){return q;}if(q){var _2d=q.substring(1).split("&");for(var i=0;i<_2d.length;i++){if(_2d[i].substring(0,_2d[i].indexOf("="))==_2b){return _2d[i].substring((_2d[i].indexOf("=")+1));}}}return "";}};deconcept.SWFObjectUtil.cleanupSWFs=function(){var _2f=document.getElementsByTagName("OBJECT");for(var i=_2f.length-1;i>=0;i--){_2f[i].style.display="none";for(var x in _2f[i]){if(typeof _2f[i][x]=="function"){_2f[i][x]=function(){};}}}};if(deconcept.SWFObject.doPrepUnload){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};window.attachEvent("onunload",deconcept.SWFObjectUtil.cleanupSWFs);};window.attachEvent("onbeforeunload",deconcept.SWFObjectUtil.prepUnload);deconcept.unloadSet=true;}}if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all[id];};}var getQueryParamValue=deconcept.util.getRequestParameter;var FlashObject=deconcept.SWFObject;var SWFObject=deconcept.SWFObject;
  \ No newline at end of file
  +if(typeof deconcept=="undefined"){var deconcept=new Object();}if(typeof deconcept.util=="undefined"){deconcept.util=new Object();}if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();}deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!document.getElementById){return;}this.DETECT_KEY=_a?_a:"detectflash";this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);this.params=new Object();this.variables=new Object();this.attributes=new Array();if(_1){this.setAttribute("swf",_1);}if(id){this.setAttribute("id",id);}if(w){this.setAttribute("width",w);}if(h){this.setAttribute("height",h);}if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=true;}if(c){this.addParam("bgcolor",c);}var q=_7?_7:"high";this.addParam("quality",q);this.setAttribute("useExpressInstall",false);this.setAttribute("doExpressInstall",false);var _c=(_8)?_8:window.location;this.setAttribute("xiRedirectUrl",_c);this.setAttribute("redirectUrl","");if(_9){this.setAttribute("redirectUrl",_9);}};deconcept.SWFObject.prototype={useExpressInstall:function(_d){this.xiSWFPath=!_d?"expressinstall.swf":_d;this.setAttribute("useExpressInstall",true);},setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=_12;},
  +getParams:function(){return this.params;},
  +addVariable:function(_13,_14){this.variables[_13]=_14;},
  +getVariable:function(_15){return this.variables[_15];},
  +getVariables:function(){return this.variables;},getVariablePairs:function(){var _16=new Array();var key;var _18=this.getVariables();for(key in _18){_16[_16.length]=key+"="+_18[key];}return _16;},getSWFHTML:function(){var _19="";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","PlugIn");this.setAttribute("swf",this.xiSWFPath);}_19="<embed type=\"application/x-shockwave-flash\" src=\""+this.getAttribute("swf")+"\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\"";_19+=" id=\""+this.getAttribute("id")+"\" name=\""+this.getAttribute("id")+"\" ";var _1a=this.getParams();for(var key in _1a){_19+=[key]+"=\""+_1a[key]+"\" ";}var _1c=this.getVariablePairs().join("&");if(_1c.length>0){_19+="flashvars=\""+_1c+"\"";}_19+="/>";}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");this.setAttribute("swf",this.xiSWFPath);}_19="<object id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\">";_19+="<param name=\"movie\" value=\""+this.getAttribute("swf")+"\" />";var _1d=this.getParams();for(var key in _1d){_19+="<param name=\""+key+"\" value=\""+_1d[key]+"\" />";}var _1f=this.getVariablePairs().join("&");if(_1f.length>0){_19+="<param name=\"flashvars\" value=\""+_1f+"\" />";}_19+="</object>";}return _19;},write:function(_20){if(this.getAttribute("useExpressInstall")){var _21=new deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){this.setAttribute("doExpressInstall",true);this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));document.title=document.title.slice(0,47)+" - Flash Player Installation";this.addVariable("MMdoctitle",document.title);}}if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){var n=(typeof _20=="string")?document.getElementById(_20):_20;n.innerHTML=this.getSWFHTML();return true;}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}return false;}};deconcept.SWFObjectUtil.getPlayerVersion=function(){var _23=new deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins["Shockwave Flash"];if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}}else{if(navigator.userAgent&&navigator.userAgent.indexOf("Windows CE")>=0){var axo=1;var _26=3;while(axo){try{_26++;axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_26);_23=new deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=null;}}}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";}catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}}}return _23;};deconcept.PlayerVersion=function(_29){this.major=_29[0]!=null?parseInt(_29[0]):0;this.minor=_29[1]!=null?parseInt(_29[1]):0;this.rev=_29[2]!=null?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototype.versionIsValid=function(fv){if(this.major<fv.major){return false;}if(this.major>fv.major){return true;}if(this.minor<fv.minor){return false;}if(this.minor>fv.minor){return true;}if(this.rev<fv.rev){return false;}return true;};deconcept.util={getRequestParameter:function(_2b){var q=document.location.search||document.location.hash;if(_2b==null){return q;}if(q){var _2d=q.substring(1).split("&");for(var i=0;i<_2d.length;i++){if(_2d[i].substring(0,_2d[i].indexOf("="))==_2b){return _2d[i].substring((_2d[i].indexOf("=")+1));}}}return "";}};deconcept.SWFObjectUtil.cleanupSWFs=function(){var _2f=document.getElementsByTagName("OBJECT");for(var i=_2f.length-1;i>=0;i--){_2f[i].style.display="none";for(var x in _2f[i]){if(typeof _2f[i][x]=="function"){_2f[i][x]=function(){};}}}};if(deconcept.SWFObject.doPrepUnload){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};window.attachEvent("onunload",deconcept.SWFObjectUtil.cleanupSWFs);};window.attachEvent("onbeforeunload",deconcept.SWFObjectUtil.prepUnload);deconcept.unloadSet=true;}}if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all[id];};}var getQueryParamValue=deconcept.util.getRequestParameter;var FlashObject=deconcept.SWFObject;var SWFObject=deconcept.SWFObject;
  
  
  


wkpark      2007/09/27 17:48:09

  Modified:    local/js swfobject.js
  Log:
  fix urlencode()
  
  Revision  Changes    Path
  1.3       +4 -1      moniwiki/local/js/swfobject.js
  
  Index: swfobject.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/swfobject.js,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- swfobject.js	27 Sep 2007 08:46:37 -0000	1.2
  +++ swfobject.js	27 Sep 2007 08:48:09 -0000	1.3
  @@ -7,6 +7,9 @@
    */
   if(typeof deconcept=="undefined"){var deconcept=new Object();}if(typeof deconcept.util=="undefined"){deconcept.util=new Object();}if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();}deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!document.getElementById){return;}this.DETECT_KEY=_a?_a:"detectflash";this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);this.params=new Object();this.variables=new Object();this.attributes=new Array();if(_1){this.setAttribute("swf",_1);}if(id){this.setAttribute("id",id);}if(w){this.setAttribute("width",w);}if(h){this.setAttribute("height",h);}if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=true;}if(c){this.addParam("bgcolor",c);}var q=_7?_7:"high";this.addParam("quality",q);this.setAttribute("useExpressInstall",false);this.setAttribute("doExpressInstall",false);var _c=(_8)?_8:window.location;this.setAttribute("xiRedirectUrl",_c);this.setAttribute("redirectUrl","");if(_9){this.setAttribute("redirectUrl",_9);}};deconcept.SWFObject.prototype={useExpressInstall:function(_d){this.xiSWFPath=!_d?"expressinstall.swf":_d;this.setAttribute("useExpressInstall",true);},setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=_12;},
   getParams:function(){return this.params;},
  -addVariable:function(_13,_14){this.variables[_13]=_14;},
  +addVariable:function(_13,_14){
  +_14=escape(_14);  // fix Firefox error with urlencoded variables
  +this.variables[_13]=_14;
  +},
   getVariable:function(_15){return this.variables[_15];},
   getVariables:function(){return this.variables;},getVariablePairs:function(){var _16=new Array();var key;var _18=this.getVariables();for(key in _18){_16[_16.length]=key+"="+_18[key];}return _16;},getSWFHTML:function(){var _19="";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","PlugIn");this.setAttribute("swf",this.xiSWFPath);}_19="<embed type=\"application/x-shockwave-flash\" src=\""+this.getAttribute("swf")+"\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\"";_19+=" id=\""+this.getAttribute("id")+"\" name=\""+this.getAttribute("id")+"\" ";var _1a=this.getParams();for(var key in _1a){_19+=[key]+"=\""+_1a[key]+"\" ";}var _1c=this.getVariablePairs().join("&");if(_1c.length>0){_19+="flashvars=\""+_1c+"\"";}_19+="/>";}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");this.setAttribute("swf",this.xiSWFPath);}_19="<object id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\">";_19+="<param name=\"movie\" value=\""+this.getAttribute("swf")+"\" />";var _1d=this.getParams();for(var key in _1d){_19+="<param name=\""+key+"\" value=\""+_1d[key]+"\" />";}var _1f=this.getVariablePairs().join("&");if(_1f.length>0){_19+="<param name=\"flashvars\" value=\""+_1f+"\" />";}_19+="</object>";}return _19;},write:function(_20){if(this.getAttribute("useExpressInstall")){var _21=new deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){this.setAttribute("doExpressInstall",true);this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));document.title=document.title.slice(0,47)+" - Flash Player Installation";this.addVariable("MMdoctitle",document.title);}}if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){var n=(typeof _20=="string")?document.getElementById(_20):_20;n.innerHTML=this.getSWFHTML();return true;}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}return false;}};deconcept.SWFObjectUtil.getPlayerVersion=function(){var _23=new deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins["Shockwave Flash"];if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}}else{if(navigator.userAgent&&navigator.userAgent.indexOf("Windows CE")>=0){var axo=1;var _26=3;while(axo){try{_26++;axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_26);_23=new deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=null;}}}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";}catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}}}return _23;};deconcept.PlayerVersion=function(_29){this.major=_29[0]!=null?parseInt(_29[0]):0;this.minor=_29[1]!=null?parseInt(_29[1]):0;this.rev=_29[2]!=null?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototype.versionIsValid=function(fv){if(this.major<fv.major){return false;}if(this.major>fv.major){return true;}if(this.minor<fv.minor){return false;}if(this.minor>fv.minor){return true;}if(this.rev<fv.rev){return false;}return true;};deconcept.util={getRequestParameter:function(_2b){var q=document.location.search||document.location.hash;if(_2b==null){return q;}if(q){var _2d=q.substring(1).split("&");for(var i=0;i<_2d.length;i++){if(_2d[i].substring(0,_2d[i].indexOf("="))==_2b){return _2d[i].substring((_2d[i].indexOf("=")+1));}}}return "";}};deconcept.SWFObjectUtil.cleanupSWFs=function(){var _2f=document.getElementsByTagName("OBJECT");for(var i=_2f.length-1;i>=0;i--){_2f[i].style.display="none";for(var x in _2f[i]){if(typeof _2f[i][x]=="function"){_2f[i][x]=function(){};}}}};if(deconcept.SWFObject.doPrepUnload){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};window.attachEvent("onunload",deconcept.SWFObjectUtil.cleanupSWFs);};window.attachEvent("onbeforeunload",deconcept.SWFObjectUtil.prepUnload);deconcept.unloadSet=true;}}if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all[id];};}var getQueryParamValue=deconcept.util.getRequestParameter;var FlashObject=deconcept.SWFObject;var SWFObject=deconcept.SWFObject;
  
  
  


wkpark      2007/09/27 18:02:22

  moniwiki/local/JWPlayers - New directory

wkpark      2007/09/27 18:04:07

  Added:       local/JWPlayers README cover.jpg flvlist.xml flvplayer.html
                        flvplayer.swf mp3player.html mp3player.swf
                        playlist.xml preview.jpg song1.mp3 song2.mp3
                        video.flv
  Log:
  add JW MP3/Flv players
  
  Revision  Changes    Path
  1.1                  moniwiki/local/JWPlayers/README
  
  Index: README
  ===================================================================
  http://www.jeroenwijering.com/extras/readme.html
  
  == JW MP3 Player ==
  http://www.jeroenwijering.com/upload/jw_mp3_player.zip
  == JW Flv Player ==
  http://www.jeroenwijering.com/upload/flash_flv_player.zip
  
  
  
  1.1                  moniwiki/local/JWPlayers/cover.jpg
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/JWPlayers/flvlist.xml
  
  Index: flvlist.xml
  ===================================================================
  <?xml version="1.0" encoding="utf-8"?>
  <playlist version="1" xmlns="http://xspf.org/ns/0/">
  	<trackList>
  
  		<track>
  			<title>Afraid</title>
  			<creator>Jeroen Wijering</creator>
  			<location>video.flv</location>
  		</track>
  
  		<track>
  			<title>Afraid (again)</title>
  			<creator>Jeroen Wijering</creator>
  			<location>video.flv</location>
  		</track>
  
  		<track>
  			<title>Afraid (once again)</title>
  			<creator>Jeroen Wijering</creator>
  			<location>video.flv</location>
  			<info>http://www.jeroenwijering.com/</info>
  		</track>
  
  	</trackList>
  </playlist>
  
  
  1.1                  moniwiki/local/JWPlayers/flvplayer.html
  
  Index: flvplayer.html
  ===================================================================
  <html>
  <head>
  
  
  <script type="text/javascript" src="../js/swfobject.js"></script>
  
  
  </head>
  <body>
  
  
  <h3>single file, with preview image:</h3>
  
  
  <p id="player1"><a href="http://www.macromedia.com/go/getflashplayer">Get the Flash Player</a> to see this player.</p>
  <script type="text/javascript">
  	var s1 = new SWFObject("flvplayer.swf","single","300","170","7");
  	s1.addParam("allowfullscreen","true");
  	s1.addVariable("file","video.flv");
  	s1.addVariable("image","preview.jpg");
  	s1.write("player1");
  </script>
  
  
  <h3>playlist file, with different colors:</h3>
  
  
  <p id="player2"><a href="http://www.macromedia.com/go/getflashplayer">Get the Flash Player</a> to see this player.</p>
  <script type="text/javascript">
  	var s2 = new SWFObject("flvplayer.swf","playlist","300","312","7");
  	s2.addParam("allowfullscreen","true");
  	s2.addVariable("file","flvlist.xml");
  	s2.addVariable("displayheight","200");
  	s2.addVariable("backcolor","0x000000");
  	s2.addVariable("frontcolor","0xCCCCCC");
  	s2.addVariable("lightcolor","0x557722");
  	s2.write("player2");
  </script>
  
  
  <p><a href="http://www.jeroenwijering.com/extras/wizard.html">online configuration wizard</a></p>
  
  
  </body>
  </html>
  
  
  
  1.1                  moniwiki/local/JWPlayers/flvplayer.swf
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/JWPlayers/mp3player.html
  
  Index: mp3player.html
  ===================================================================
  <html>
  <head>
  
  
  <script type="text/javascript" src="../js/swfobject.js"></script>
  
  
  </head>
  <body>
  
  
  <h2>single mp3 file, with cover image:</h2>
  
  
  <p id="player1"><a href="http://www.macromedia.com/go/getflashplayer">Get the Flash Player</a> to see this player.</p>
  <script type="text/javascript">
  	var s1 = new SWFObject("mp3player.swf", "single", "240", "240", "7");
  	s1.addVariable("file","song1.mp3");
  	s1.addVariable("image","cover.jpg");
  	s1.addVariable("width","240");
  	s1.addVariable("height","240");
  	s1.write("player1");
  </script>
  
  
  <h2>playlist file, with different colors and EQ:</h2>
  
  
  <p id="player2"><a href="http://www.macromedia.com/go/getflashplayer">Get the Flash Player</a> to see this player.</p>
  <script type="text/javascript">
  	var s2 = new SWFObject("mp3player.swf", "playlist", "240", "135", "7");
  	s2.addVariable("file","playlist.xml");
  	s2.addVariable("backcolor","0x00000");
  	s2.addVariable("frontcolor","0xEECCDD");
  	s2.addVariable("lightcolor","0xCC0066");
  	s2.addVariable("displayheight","0");
  	s2.addVariable("width","240");
  	s2.addVariable("height","135");
  	s2.write("player2");
  </script>
  
  
  <h2>a single line, with repeat and downloadbutton and without digits:</h2>
  
  
  <p id="player3"><a href="http://www.macromedia.com/go/getflashplayer">Get the Flash Player</a> to see this player.</p>
  <script type="text/javascript">
  	var s3 = new SWFObject("mp3player.swf", "line", "240", "20", "7");
  	s3.addVariable("file","song1.mp3");
  	s3.addVariable("repeat","true");
  	s3.addVariable("showdigits","false");
  	s3.addVariable("showdownload","true");
  	s3.addVariable("width","240");
  	s3.addVariable("height","20");
  	s3.write("player3");
  </script>
  
  
  <p><a href="http://www.jeroenwijering.com/extras/wizard.html">online configuration wizard</a></p>
  
  
  </body>
  </html>
  
  
  
  1.1                  moniwiki/local/JWPlayers/mp3player.swf
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/JWPlayers/playlist.xml
  
  Index: playlist.xml
  ===================================================================
  <?xml version="1.0" encoding="utf-8"?>
  <playlist version="1" xmlns="http://xspf.org/ns/0/">
  	<trackList>
  
  		<track>
  			<title>Homeland</title>
  			<creator>Postman</creator>
  			<location>song1.mp3</location>
  		</track>
  
  		<track>
  			<title>Jazzalude</title>
  			<creator>Basement Jaxx</creator>
  			<location>song2.mp3</location>
  			<info>http://www.jeroenwijering.com</info>
  		</track>
  		
  		<track>
  			<title>Homeland</title>
  			<creator>Postman</creator>
  			<location>song1.mp3</location>
  			<info>http://www.jeroenwijering.com</info>
  		</track>
  
  		<track>
  			<title>Jazzalude</title>
  			<creator>Basement Jaxx</creator>
  			<location>song2.mp3</location>
  		</track>
  		
  		<track>
  			<title>Homeland</title>
  			<creator>Postman</creator>
  			<location>song1.mp3</location>
  		</track>
  
  	</trackList>
  </playlist>
  
  
  1.1                  moniwiki/local/JWPlayers/preview.jpg
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/JWPlayers/song1.mp3
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/JWPlayers/song2.mp3
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/JWPlayers/video.flv
  
  	<<Binary file>>
  
  


wkpark      2007/09/27 21:40:15

  Modified:    .        config.php.default
  Log:
  support the JW Media Player
  add $use_jwmediaplayer,$jwmediaplayer_prefix options
  
  Revision  Changes    Path
  1.39      +6 -1      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- config.php.default	1 Jan 2007 01:21:23 -0000	1.38
  +++ config.php.default	27 Sep 2007 12:40:15 -0000	1.39
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.38 2007/01/01 01:21:23 wkpark Exp $
  +# $Id: config.php.default,v 1.39 2007/09/27 12:40:15 wkpark Exp $
   #
   $sitename='UnnamedWiki'; # site name
   $data_dir= './data';
  @@ -94,6 +94,7 @@
   # set global javascripts
   #$js=<<<EOF
   #<script type="text/javascript" src="$url_prefix/local/ajax.js"></script>
  +#<script type="text/javascript" src="$url_prefix/local/se.js"></script>
   #<script type="text/javascript" src="$url_prefix/local/Wikiwyg/lib/Wikiwyg.js"></script>
   #<script type="text/javascript" src="$url_prefix/local/Wikiwyg/lib/Wikiwyg/Util.js"></script>
   #<script type="text/javascript" src="$url_prefix/local/Wikiwyg/lib/Wikiwyg/Toolbar.js"></script>
  @@ -106,6 +107,7 @@
   #<script type="text/javascript" src="$url_prefix/local/js/prototype.js"></script>
   #<script type="text/javascript" src="$url_prefix/local/js/scriptaculous.js?load=effects,controls"></script>
   #<script type="text/javascript" src="$url_prefix/local/lightbox2/js/lightbox.js"></script>
  +#<link rel="stylesheet" href="$url_prefix/local/lightbox2/css/lightbox.css" type="text/css" media="screen" />
   #<script type="text/javascript" src="$url_prefix/local/autocomplete.js"></script>
   #<script type="text/javascript" src="$url_prefix/local/subindex.js"></script>
   #EOF;
  @@ -146,6 +148,7 @@
   #$vim_nocheck=0; // do not check vim syntax.
   #$vim_nocheck=1;
   #$use_resizer=1; // javascript resizer
  +#$use_resizer=2; // drupal style resizer 
   #$use_minoredit=1; // only for wiki owners
   #$auto_search='FixMoin'; # for old moinmoin users
   #$auto_search='AutoGoto';
  @@ -215,4 +218,6 @@
   #$nosession=1; # do not use session
   #$default_pre='pre'; # set the default pre processor
   #$use_rating=1; # builtin Rating support
  +$use_jwmediaplayer=1;
  +$jwmediaplayer_prefix='http://www.jeroenwijering.com/embed';
   ?>
  
  
  


wkpark      2007/09/27 21:40:15

  Modified:    plugin   Play.php
  Log:
  support the JW Media Player
  add $use_jwmediaplayer,$jwmediaplayer_prefix options
  
  Revision  Changes    Path
  1.5       +61 -3     moniwiki/plugin/Play.php
  
  Index: Play.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Play.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Play.php	26 Mar 2005 11:34:47 -0000	1.4
  +++ Play.php	27 Sep 2007 12:40:15 -0000	1.5
  @@ -1,11 +1,19 @@
   <?php
  -// Copyright 2003,2004 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2004-2007 by Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
  -// a simple Play macro plugin for the MoniWiki
  +// a media Play macro plugin for the MoniWiki
  +//
  +// Author: Won-Kyu Park <wkpark@kldp.org>
  +// Date: 2004-08-02
  +// Name: Play macro
  +// Description: media Player Plugin
  +// URL: MoniWikiDev:PlayMacro
  +// Version: $Revision: 1.5 $
  +// License: GPL
   //
   // Usage: [[Play(http://blah.net/blah.mp3)]]
   //
  -// $Id: Play.php,v 1.4 2005/03/26 11:34:47 wkpark Exp $
  +// $Id: Play.php,v 1.5 2007/09/27 12:40:15 wkpark Exp $
   
   function macro_Play($formatter,$value) {
     global $DBInfo;
  @@ -35,6 +43,55 @@
       $play="false";
     }
   
  +  if ($DBInfo->use_jwmediaplayer and preg_match("/(flv|mp3)$/i",$media,$ext)) {
  +    $swfobject_num=$GLOBALS['swfobject_num'] ? $GLOBALS['swfobject_num']:0;
  +    if (!$swfobject_num) {
  +      $swfobject_script="<script type=\"text/javascript\" src=\"$DBInfo->url_prefix/local/js/swfobject.js\"></script>\n";
  +      $num=1;
  +    } else {
  +      $num=++$swfobject_num;
  +    }
  +    $GLOBALS['swfobject_num']=$num;
  +
  +    if (!$DBInfo->jwmediaplayer_prefix) {
  +      $_swf_prefix=qualifiedUrl("$DBInfo->url_prefix/local/JWPlayers");
  +    } else{
  +      $_swf_prefix=$DBInfo->jwmediaplayer_prefix;
  +    }
  +
  +    if (!preg_match("/^(http|ftp):\/\//",$url)) {
  +      $url=qualifiedUrl($url);
  +    }
  +
  +    if ($ext[1] == 'flv') {
  +      $jw_script=<<<EOS
  +    <p id="mediaplayer$num"></p>
  +    <script type="text/javascript">
  +        var _s$num = new SWFObject("$_swf_prefix/mediaplayer.swf","_mediaplayer$num","320","240","7");
  +        _s$num.addParam("allowfullscreen","true");
  +        _s$num.addVariable("file","$url");
  +        //_s$num.addVariable("image","preview.jpg");
  +        _s$num.write("mediaplayer$num");
  +</script>
  +EOS;
  +    } else { // mp3 only
  +      $jw_script=<<<EOS
  +    <p id="mediaplayer$num"></p>
  +    <script type="text/javascript">
  +        var _s$num = new SWFObject("$_swf_prefix/mediaplayer.swf", "_mediaplayer$num", "240", "20", "7");
  +        _s$num.addVariable("file","$url");
  +        //_s$num.addVariable("image","cover.jpg");
  +        _s$num.addVariable("width","240");
  +        _s$num.addVariable("height","20");
  +        _s$num.write("mediaplayer$num");
  +</script>
  +EOS;
  +    }
  +
  +    return <<<EOS
  +      $swfobject_script$jw_script
  +EOS;
  +  } else {
     if (preg_match("/(wmv|mpeg4|avi|asf)$/",$media)) {
       $classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95";
       $type='type="application/x-mplayer2"';
  @@ -58,6 +115,7 @@
   <embed $type src="$url" $attr></embed>
   </object>
   OBJECT;
  +  }
   }
   
   // vim:et:sts=2:
  
  
  


wkpark      2007/09/27 22:19:17

  Modified:    local/JWPlayers README
  Removed:     local/JWPlayers cover.jpg flvlist.xml flvplayer.html
                        flvplayer.swf mp3player.html mp3player.swf
                        playlist.xml preview.jpg song1.mp3 song2.mp3
                        video.flv
  Log:
  oops!! the license of the JW Media Player is Creative Commons and it is not compatible with GPL
  
  Revision  Changes    Path
  1.2       +2 -0      moniwiki/local/JWPlayers/README
  
  Index: README
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/JWPlayers/README,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- README	27 Sep 2007 09:04:07 -0000	1.1
  +++ README	27 Sep 2007 13:19:17 -0000	1.2
  @@ -4,3 +4,5 @@
   http://www.jeroenwijering.com/upload/jw_mp3_player.zip
   == JW Flv Player ==
   http://www.jeroenwijering.com/upload/flash_flv_player.zip
  +== JW Media Player ==
  +http://www.jeroenwijering.com/upload/jw_media_player.zip
  
  
  


wkpark      2007/09/27 22:24:29

  Modified:    plugin   SWFUpload.php
  Log:
  fixed minor bug
  
  Revision  Changes    Path
  1.5       +4 -4      moniwiki/plugin/SWFUpload.php
  
  Index: SWFUpload.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SWFUpload.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SWFUpload.php	20 Dec 2006 23:00:42 -0000	1.4
  +++ SWFUpload.php	27 Sep 2007 13:24:29 -0000	1.5
  @@ -8,12 +8,12 @@
   // Name: SWF Upload
   // Description: SWF Upload Plugin
   // URL: http://labb.dev.mammon.se/swfupload/ MoniWikiDev:SWFUpload
  -// Version: $Revision: 1.4 $
  +// Version: $Revision: 1.5 $
   // License: GPL
   //
   // Usage: [[SWFUpload]]
   //
  -// $Id: SWFUpload.php,v 1.4 2006/12/20 23:00:42 wkpark Exp $
  +// $Id: SWFUpload.php,v 1.5 2007/09/27 13:24:29 wkpark Exp $
   
   function macro_SWFUpload($formatter,$value) {
       global $DBInfo;
  @@ -46,7 +46,7 @@
           $allowed='*.'.str_replace('|',';*.',$DBInfo->pds_allowed);
       }
   
  -    $swfupload_scrpit=$GLOBALS['swf_script'] ? 1:0;
  +    $swfupload_num=$GLOBALS['swfupload_num'] ? $GLOBALS['swfupload_num']:0;
   
       // get already uploaded files list
       $uploaded='';
  @@ -68,7 +68,7 @@
           }
       }
   
  -    if (!$swfupload_script) {
  +    if (!$swfupload_num) {
           $swfupload_script=<<<EOS
   	<script type="text/javascript" src="$DBInfo->url_prefix/local/SWFUpload/mmSWFUpload.js"></script>
   	<script type="text/javascript" src="$DBInfo->url_prefix/local/SWFUpload/moni.js"></script>
  
  
  


wkpark      2007/09/29 13:06:16

  Modified:    plugin   Play.php
  Log:
  support file list etc.
  
  Revision  Changes    Path
  1.6       +168 -55   moniwiki/plugin/Play.php
  
  Index: Play.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Play.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Play.php	27 Sep 2007 12:40:15 -0000	1.5
  +++ Play.php	29 Sep 2007 04:06:16 -0000	1.6
  @@ -8,33 +8,62 @@
   // Name: Play macro
   // Description: media Player Plugin
   // URL: MoniWikiDev:PlayMacro
  -// Version: $Revision: 1.5 $
  +// Version: $Revision: 1.6 $
   // License: GPL
   //
   // Usage: [[Play(http://blah.net/blah.mp3)]]
   //
  -// $Id: Play.php,v 1.5 2007/09/27 12:40:15 wkpark Exp $
  +// $Id: Play.php,v 1.6 2007/09/29 04:06:16 wkpark Exp $
   
   function macro_Play($formatter,$value) {
     global $DBInfo;
     static $autoplay=1;
  +  $max_width=600;
  +  $max_height=400;
   
  -  preg_match("/(^[^,]+)(\s*,\s*)?$/",$value,$match);
  -  if (!$match) return '[[Play()]]';
  +  $default_width=320;
  +  $default_height=240;
   
  -  $media=$match[1];
  -  if ($match[3]) {
  -    $attr='';
  -    list($x,$y)=explode(',',$match[3]);
  -  }
  -  if (!preg_match("/^(http|ftp|mms|rtsp):\/\//",$media)) {
  -    $fname=$formatter->macro_repl('Attachment',$media,1);
  -    if (!file_exists($fname)) {
  -      return $formatter->macro_repl('Attachment',$value);
  +  #
  +  $media=array();
  +  #
  +  preg_match("/^(([^,]+\s*,?\s*)+)$/",$value,$match);
  +  if (!$match) return '[[Play(error!! '.$value.')]]';
  +
  +  if (($p=strpos($match[1],','))!==false) {
  +    $my=explode(',',$match[1]);
  +    for ($i=0,$sz=count($my);$i<$sz;$i++) {
  +      if (strpos($my[$i],'=')) {
  +        list($key,$val)=explode('=',$my[$i]);
  +        if ($key == 'width' and $val > 1) {
  +          $width=$val;
  +        } else if ($key == 'height' and $val > 1) {
  +          $height=$val;
  +        }
  +      } else { // multiple files
  +        $media[]=$my[$i];
  +      }
       }
  -    $url=qualifiedUrl($DBInfo->url_prefix."/"._urlencode($fname));
     } else {
  -    $url=$media;
  +    $media[]=$match[1];
  +  }
  +  # set embeded object size
  +  $width=$width ? min($width,$max_width):$default_width;
  +  $height=$height ? min($height,$max_height):$default_height;
  +
  +  $url=array();
  +  $my_check=1;
  +  for ($i=0,$sz=count($media);$i<$sz;$i++) {
  +    if (!preg_match("/^(http|ftp|mms|rtsp):\/\//",$media[$i])) {
  +      $fname=$formatter->macro_repl('Attachment',$media[$i],1);
  +      if ($my_check and !file_exists($fname)) {
  +        return $formatter->macro_repl('Attachment',$value);
  +      }
  +      $my_check=1; // check only first file.
  +      $url[]=qualifiedUrl($DBInfo->url_prefix."/"._urlencode($fname));
  +    } else {
  +      $url[]=$media[$i];
  +    }
     }
   
     if ($autoplay==1) {
  @@ -43,7 +72,25 @@
       $play="false";
     }
   
  -  if ($DBInfo->use_jwmediaplayer and preg_match("/(flv|mp3)$/i",$media,$ext)) {
  +  #
  +  $use_flashplayer_ok=0;
  +  if ($DBInfo->use_jwmediaplayer) {
  +    $use_flashplayer_ok=1;
  +    for ($i=0,$sz=count($media);$i<$sz;$i++) { // check type of all files
  +      if (!preg_match("/(flv|mp3|mp4|swf)$/i",$media[$i])) {
  +        $use_flashplayer_ok=0;
  +        break;
  +      }
  +    }
  +  }
  +
  +  if ($use_flashplayer_ok) {
  +    # set embed flash size
  +    if (($sz=count($media)) == 1 and preg_match("/(ogg|wav|mp3)$/i",$media[0])) {
  +      // only one and a sound file
  +      $height=20; // override the hegiht of the JW MediaPlayer
  +    }
  +
       $swfobject_num=$GLOBALS['swfobject_num'] ? $GLOBALS['swfobject_num']:0;
       if (!$swfobject_num) {
         $swfobject_script="<script type=\"text/javascript\" src=\"$DBInfo->url_prefix/local/js/swfobject.js\"></script>\n";
  @@ -54,68 +101,134 @@
       $GLOBALS['swfobject_num']=$num;
   
       if (!$DBInfo->jwmediaplayer_prefix) {
  -      $_swf_prefix=qualifiedUrl("$DBInfo->url_prefix/local/JWPlayers");
  +      $_swf_prefix=qualifiedUrl("$DBInfo->url_prefix/local/JWPlayers"); // FIXME
       } else{
         $_swf_prefix=$DBInfo->jwmediaplayer_prefix;
       }
   
  -    if (!preg_match("/^(http|ftp):\/\//",$url)) {
  -      $url=qualifiedUrl($url);
  +    if ($sz > 1) {
  +      $md5sum=md5(implode(':',$media));
  +      if ($DBInfo->cache_public_dir) {
  +        $fc=new Cache_text('jwmediaplayer',2,'',$DBInfo->cache_public_dir);
  +        $fname=$fc->_getKey($md5sum,0);
  +        $basename= $DBInfo->cache_public_dir.'/'.$fname;
  +        $urlbase=
  +          $DBInfo->cache_public_url ? $DBInfo->cache_public_url.'/'.$fname:
  +          $DBInfo->url_prefix.'/'.$basename;
  +        $playfile=$basename.'.xml';
  +      } else {
  +        $cache_dir= $DBInfo->upload_dir."/VisualTour";
  +        $cache_url= $DBInfo->upload_url ? $DBInfo->upload_url.'/VisualTour':
  +          $DBInfo->url_prefix.'/'.$cache_dir;
  +        $basename= $cache_dir.'/'.$md5sum;
  +        $urlbase= $cache_url.'/'.$md5sum;
  +        $playfile= $basename.'.xml';
  +      }
  +      $playlist=$urlbase.'.xml';
  +
  +      
  +      $list=array();
  +      for ($i=0;$i<$sz;$i++) {
  +        if (!preg_match("/^(http|ftp):\/\//",$url[$i])) {
  +          $url=qualifiedUrl($url);
  +        }
  +
  +        $ext=substr($media[$i],-3,3); // XXX
  +
  +        $list[]='<title>'.$media[$i].'</title>'."\n".
  +                '<location>'.$url[$i].'</location>'."\n";
  +      }
  +
  +      $tracks="<track>\n".implode("</track>\n<track>\n",$list)."</track>\n";
  +      $xml=<<<XML
  +<?xml version="1.0" encoding="UTF-8"? >
  +<playlist version="1" xmlns="http://xspf.org/ns/0/">
  +  <title>XSPF Playlist</title>
  +  <info>XSPF Playlist</info>
  +  <trackList>
  +$tracks
  +  </trackList>
  +</playlist>
  +XML;
  +      # check cache dir exists or not and make it
  +      if (!is_dir(dirname($playfile))) {
  +        $om=umask(000);
  +        _mkdir_p(dirname($playfile),0777);
  +        umask($om);
  +      }
  +
  +      if ($formatter->refresh or !file_exists($playfile)) {
  +        $fp=fopen($playfile,"w");
  +        fwrite($fp,$xml);
  +        fclose($fp);
  +      }
  +      $displayheight=$height;
  +      $height+=$sz*40; // XXX
  +      $addparam=<<<EOS
  +        _s$num.addVariable("displayheight","$displayheight");
  +EOS;
  +      $filelist=qualifiedUrl($playlist);
  +    } else {
  +      $filelist=$url[0];
       }
   
  -    if ($ext[1] == 'flv') {
  -      $jw_script=<<<EOS
  -    <p id="mediaplayer$num"></p>
  -    <script type="text/javascript">
  -        var _s$num = new SWFObject("$_swf_prefix/mediaplayer.swf","_mediaplayer$num","320","240","7");
  +    $jw_script=<<<EOS
  +<p id="mediaplayer$num"></p>
  +<script type="text/javascript">
  +        var _s$num = new SWFObject("$_swf_prefix/mediaplayer.swf","_mediaplayer$num","$width","$height","7");
           _s$num.addParam("allowfullscreen","true");
  -        _s$num.addVariable("file","$url");
  +        _s$num.addVariable("width","$width");
  +        _s$num.addVariable("height","$height");
  +        $addparam
  +        _s$num.addVariable("file","$filelist");
           //_s$num.addVariable("image","preview.jpg");
           _s$num.write("mediaplayer$num");
   </script>
   EOS;
  -    } else { // mp3 only
  -      $jw_script=<<<EOS
  -    <p id="mediaplayer$num"></p>
  -    <script type="text/javascript">
  -        var _s$num = new SWFObject("$_swf_prefix/mediaplayer.swf", "_mediaplayer$num", "240", "20", "7");
  -        _s$num.addVariable("file","$url");
  -        //_s$num.addVariable("image","cover.jpg");
  -        _s$num.addVariable("width","240");
  -        _s$num.addVariable("height","20");
  -        _s$num.write("mediaplayer$num");
  -</script>
  -EOS;
  -    }
   
       return <<<EOS
         $swfobject_script$jw_script
   EOS;
     } else {
  -  if (preg_match("/(wmv|mpeg4|avi|asf)$/",$media)) {
  -    $classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95";
  -    $type='type="application/x-mplayer2"';
  -    $attr='width="320" height="280" autoplay="'.$play.'"';
  -    $params="<param name='FileName' value='$url'>\n".
  -      "<param name='AutoStart' value='False'>\n".
  -      "<param name='ShowControls' value='True'>";
  -  } else if (preg_match("/(wav|mp3|ogg)$/",$media)) {
  -    $classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B";
  -    $attr='codebase="http://www.apple.com/qtactivex/qtplugin.cab" height="30"';
  -    $attr.=' autoplay="'.$play.'"';
  -    $params="<param name='src' value='$url'>\n".
  -      "<param name='AutoStart' value='$play'>";
  -  }
  -  $autoplay=0;
  +    $out='';
  +
  +    for ($i=0,$sz=count($media);$i<$sz;$i++) {
  +      if (preg_match("/(wmv|mpeg4|mp4|avi|asf)$/",$media[$i])) {
  +        $classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95";
  +        $type='type="application/x-mplayer2"';
  +        $attr='width="320" height="280" autoplay="'.$play.'"';
  +        $params="<param name='FileName' value='".$url[$i]."'>\n".
  +          "<param name='AutoStart' value='False'>\n".
  +          "<param name='ShowControls' value='True'>";
  +      } else if (preg_match("/(wav|mp3|ogg)$/",$media[$i])) {
  +        $classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B";
  +        $type='';
  +        $attr='codebase="http://www.apple.com/qtactivex/qtplugin.cab" height="30"';
  +        $attr.=' autoplay="'.$play.'"';
  +        $params="<param name='src' value='".$url[$i]."'>\n".
  +          "<param name='AutoStart' value='$play'>";
  +      } else if (preg_match("/swf$/",$media[$i])) {
  +        $type='type="application/x-shockwave-flash"';
  +        $classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000";
  +        $attr='codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"';
  +        $attr.=' autoplay="'.$play.'"';
  +        $params="<param name='movie' value='".$url[$i]."'>\n".
  +          "<param name='AutoStart' value='$play'>";
  +      }
  +      $autoplay=0; $play='false';
   
  -  return <<<OBJECT
  +      $myurl=$url[$i];
  +      $out.=<<<OBJECT
   <object classid="$classid" $type $attr>
   $params
   <param name="AutoRewind" value="True">
  -<embed $type src="$url" $attr></embed>
  +<embed $type src="$myurl" $attr></embed>
   </object>
   OBJECT;
  +    }
     }
  +
  +  return $out;
   }
   
   // vim:et:sts=2:
  
  
  


wkpark      2007/10/05 18:00:00

  Modified:    .        monisetup.php
  Log:
  more fancy simplified fixes etc.
  
  Revision  Changes    Path
  1.29      +179 -41   moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- monisetup.php	25 Feb 2006 06:55:15 -0000	1.28
  +++ monisetup.php	5 Oct 2007 09:00:00 -0000	1.29
  @@ -1,7 +1,7 @@
   <?php
  -// Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
  +// Copyright 2003-2007 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.28 2006/02/25 06:55:15 wkpark Exp $
  +// $Id: monisetup.php,v 1.29 2007/10/05 09:00:00 wkpark Exp $
   
   function _stripslashes($str) {
     return get_magic_quotes_gpc() ? stripslashes($str):$str;
  @@ -12,6 +12,7 @@
       if (file_exists($configfile)) {
         $this->config=$this->_getConfig($configfile);
         $this->rawconfig=$this->_rawConfig($configfile);
  +      $this->configdesc=$this->_getConfigDesc($configfile);
       } else {
         $this->config=array();
         $this->rawconfig=array();
  @@ -30,6 +31,7 @@
   
     }
     function _getHostConfig() {
  +    print '<div class="check">';
       if (function_exists("dba_open")) {
         print '<h3>Check a dba configuration</h3>';
         $tempnam="/tmp/".time();
  @@ -90,6 +92,7 @@
       if (!file_exists('wikilib.php')) {
         $config['include_path']="'.:/usr/local/share/moniwiki:/usr/share/moniwiki'";
       }
  +    print '</div>';
       return $config;
     }
   
  @@ -121,17 +124,18 @@
         if (!$key and $line[0] != '$') continue;
         if ($key) {
           $val.=$line;
  -        if (!preg_match('/\s*;$/',$line)) continue;
  +        if (!preg_match('/\s*;(\s*#.*)?$/',$line)) continue;
         } else {
           list($key,$val)=explode('=',substr($line,1),2);
  -        if (!preg_match('/\s*;$/',$val)) {
  +        if (!preg_match('/\s*;(\s*#.*)?$/',$val)) {
             if (substr($val,0,3)== '<<<') $tag=substr($val,3);
             continue;
           }
         }
   
         if ($key) {
  -        $val=preg_replace('/\s*;$/','',rtrim($val));
  +	$val=rtrim($val);
  +        $val=preg_replace('/\s*;(\s*#.*)?$/','',$val);
           $config[$key]=$val;
         }
         $key='';
  @@ -140,6 +144,34 @@
       return $config;
     }
   
  +  function _getConfigDesc($configfile) {
  +    $lines=file($configfile);
  +    $key='';
  +    $desc=array();
  +    foreach ($lines as $line) {
  +      $line=rtrim($line)."\n"; // for Win32
  +      if (!$key and $line[0] != '$') continue;
  +      if ($key) {
  +        $val.=$line;
  +        if (!preg_match('/\s*;\s*(#.*)?$/',$line)) continue;
  +      } else {
  +        list($key,$val)=explode('=',substr($line,1),2);
  +        if (!preg_match('/\s*;\s*(#.*)?$/',$val)) {
  +          if (substr($val,0,3)== '<<<') $tag=substr($val,3);
  +          continue;
  +        }
  +      }
  +
  +      if ($key) {
  +        preg_match('/\s*;\s*#(.*)?$/',rtrim($val),$match);
  +        if ($match[1]) $desc[$key]=$match[1];
  +      }
  +      $key='';
  +      $tag='';
  +    }
  +    return $desc;
  +  }
  +
     function _getFormConfig($config,$mode=0) {
       $conf=array();
       while (list($key,$val) = each($config)) {
  @@ -201,7 +233,7 @@
        print "<h2><a href='monisetup.php'>Reload</a></h2>";
        exit;
     } else if (file_exists("config.php")) {
  -     print "<h3><font color='green'>WARN: Please execute the following command after you have completed your configuration.</font></h3>\n";
  +     print "<p class='notice'><span class='warn'>WARN:</span> Please execute the following command after you have completed your configuration.</p>\n";
        print "<pre class='console'>\n<font color='green'>$</font> sh secure.sh\n</pre>\n";
     }
   
  @@ -245,6 +277,7 @@
   
       $writables=array("upload_dir","editlog_name");
   
  +    print '<div class="check">';
       foreach($writables as $file) {
         if (!is_writable($config[$file])) {
           if (file_exists($config[$file])) {
  @@ -280,6 +313,7 @@
         fwrite($fp,'AddType text/plain .sh .cgi .pl .py .php .php3 .php4 .phtml .html'."\n");
         fclose($fp);
       }
  +    print "</div>\n";
     }
   }
   
  @@ -385,20 +419,47 @@
   }
   
   print <<<EOF
  -<html><head><title>Moni Setup</title>
  +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  +<html xmlns="http://www.w3.org/1999/xhtml">
  +<head><title>Moni Setup</title>
   <style type="text/css">
  -//<!--
  -body {font-family:Trebuchet MS,Tahoma,sans-serif;}
  -h1,h2,h3,h4,h5 {
  -  font-family:Tahoma,sans-serif;
  +<!--
  +html { background: #707070; }
  +.body {
  +  background:#fff;
  +  font-family: "Trebuchet MS", Tahoma,"Times New Roman", Times, serif;
  +  margin-left: 10%;
  +  margin-right: 10%;
  +  padding: 0.1em 1.5em;
  +}
  +.header {
  +  background:#909090 url("imgs/setup-bg.png");
  +  margin-left: 10%;
  +  margin-right: 10%;
  +  color: white;
  +  padding-left:1em;
  +}
  +
  +
  +h1 { display:inline;
  +  font-size:40px;
  +  font-family: Tahoma, "Times New Roman", Times, serif;
  +}
  +
  +h2 {
  +  font-size:1.5em;
  +}
  +
  +h2,h3,h4,h5 {
  +  font-family:"Trebuchet MS",sans-serif;
   /* background-color:#E07B2A; */
     padding-left:6px;
  -  border-bottom:1px solid #bbb;
  +/*  border-bottom:1px solid #eee; */
   }
   table.wiki {
   /* border-collapse: collapse; */
     border: 0px outset #E2ECE5;
  -  font-family:bitstream vera sans mono,monospace;
  +  font-family:"bitstream vera sans mono",monospace;
   }
   
   pre.console {
  @@ -413,27 +474,90 @@
     background-color:#E2ECE2;
   /* border-collapse: collapse; */
     border: 0px inset #E2ECE5;
  -  font-family:bitstream vera sans mono,monospace;
  +  font-family:sans-serif;
  +}
  +
  +table.wiki td {
  +  border: 0px inset #E2ECE5;
  +  background-color:#ffffff;
  +}
  +
  +table.wiki td.preview {
  +  font-size:12px;
  +  font-family:"bitstream vera sans mono",monospace;
  +  background-color:#E6E6E6;
  +  font-weight:bold;
   }
   
   td.option {
  +  font-size:12px;
     font-family:bitstream vera sans mono,monospace;
  -  background-color:#2062d0;
  +  background-color:#E6E6E6;
     font-weight:bold;
  -  color: white;
  +  color:black;
  +}
  +
  +.newset table input {
  +  background-color:#ffffff;
  +  border:1px solid #c0c0c0;
  +}
  +
  +td.desc {
  +  font-family:Trebuchet MS,sans-serif;
  +  background-color:#E6E6E6;
  +  text-align:right;
  +  padding:5px;
  +}
  +
  +span.warn {
  +  color:red;
  +}
  +
  +.notice {
  +  font-size:18px;
  +  color: #4BD548;
  +}
  +
  +.check {
  +  background: #f2f2f2;
  +  margin-left:2em;
  +  margin-right:2em;
  +  padding:0.5em;
  +}
  +
  +.oldset {
  +  height: 300px;
  +  overflow-y: scroll;
  +  background: #f2f2f2;
  +}
  +
  +.newset {
  +  height: 300px;
  +  overflow-y: scroll;
  +  background: #f2f2f2;
  +}
  +
  +.step {
  +  text-align: right;
   }
   
  -//-->
  +.step input {
  +  font-size: 2em;
  +  font-weight:bold;
  +  font-family: Trebuchet MS, "Times New Roman", Times, serif;
  +}
  +
  +-->
   </style>
   </head>
   <body>
   EOF;
   
  -print "<h2>Moni Wiki setup</h2>\n";
  +print "<div class='header'><h1><img src='imgs/setup-logo.png' style='vertical-align: middle'/> MoniWiki</h1></div><div class='body'>\n";
   
   if (file_exists("config.php") && !is_writable("config.php")) {
     print "<h2><font color='red'>'config.php' is not writable !!</font></h2>\n";
  -  print "Please execute 'monisetup.sh' first to change your settings.<br />\n";
  +  print "Please execute <tt>'monisetup.sh'</tt> or <tt>chmod a+w config.php</tt> first to change your settings.<br />\n";
   
     return;
   }
  @@ -459,8 +583,10 @@
     if ($Config->config['admin_passwd']) {
       if (crypt($oldpasswd,$Config->config['admin_passwd']) != 
         $Config->config['admin_passwd']) {
  -        print "<h3><font color='red'>Invalid password error !!!</font></h3>\n";
  +        if ($update=='Update') {
  +        print "<h2><font color='red'>Invalid password error !!!</font></h2>\n";
           print "If you can't remember your admin password, delete password entry in the 'config.php' and restart 'monisetup'<br />\n";
  +        }
           $invalid=1;
       } else {
           $rawconfig['admin_passwd']=$newpasswd;
  @@ -470,7 +596,7 @@
          $rawconfig['admin_passwd']=$newpasswd;
     }
   
  -  if ($update) {
  +  if ($update == 'Update') {
       if ($rawconfig['charset'] && $rawconfig['sitename']) {
         if (function_exists('iconv')) {
           $ncharset=strtoupper($rawconfig['charset']);
  @@ -490,7 +616,8 @@
           if ($out) $rawconfig['sitename']=$out;
         }
       }
  -    print "<h3>Updated Configutations for this $config[sitename]</h3>\n";
  +    if (!$invalid)
  +      print "<h2>Updated Configutations for this $config[sitename]</h2>\n";
       $lines=$Config->_genRawConfig($rawconfig);
       print "<pre class='console'>\n";
       $rawconf=join("",$lines);
  @@ -509,7 +636,7 @@
         fwrite($fp,$rawconf);
         fclose($fp);
         @chmod("config.php",0666);
  -      print "<h3><font color='blue'>Configurations are saved successfully</font></h3>\n";
  +      print "<h2><font color='blue'>Configurations are saved successfully</font></h2>\n";
         print "<h3><font color='green'>WARN: Please check <a href='monisetup.php'> your saved configurations</a></font></h3>\n";
         print "If all is good, change 'config.php' permission as 644.<br />\n";
       } else {
  @@ -517,17 +644,17 @@
           print "<h3><font color='red'>You Can't write this settings to 'config.php'</font></h3>\n";
         }
       }
  -  } else
  -    print "<h3>Read current settings for this $config[sitename]</h3>\n";
  +  }
  +  # print "<h2>Read current settings for this $config[sitename]</h2>\n";
   } else {
     # read settings
   
     if (!$Config->config) {
  +    print "<h2>Welcome to MoniWiki ! This is your first installation</h2>\n";
       $Config->getDefaultConfig();
       $config=$Config->config;
   
       checkConfig($config);
  -    print "<h2>Welcome ! This is your first installation</h2>\n";
   
       $rawconfig=$Config->rawconfig;
       print "<h3 color='blue'>Default settings are loaded...</h3>\n";
  @@ -539,13 +666,14 @@
       fwrite($fp,$rawconf);
       fclose($fp);
       @chmod("config.php",0666);
  -    print "<h3><font color='blue'>Initial configurations are saved successfully.</font></h3>\n";
  +    print "<h2><font color='blue'>Initial configurations are saved successfully.</font></h2>\n";
       print "<h3><font color='red'>Goto <a href='monisetup.php'>MoniSetup</a> again to configure details</font></h3>\n";
       exit;
     } else {
       $config=$Config->config;
       checkConfig($config);
  -    $rawconfig=$Config->rawconfig;
  +    $rawconfig=&$Config->rawconfig;
  +    $configdesc=&$Config->configdesc;
     }
   }
   
  @@ -564,26 +692,30 @@
       print "<h2><font color='red'>No WikiSeeds are selected</font></h2>";
       exit;
     }
  -}
  -
  -if ($_SERVER['REQUEST_METHOD']!="POST") {
  +} else {
     if ($action=='seed') {
       show_wikiseed($config,'wikiseed');
       exit;
     }
  +}
   
  -  print "<h3>Read current settings for this $config[sitename]</h3>\n";
  +  if ($update == 'Preview')
  +  print "<h2>Preview current settings for this $config[sitename]</h2>\n";
  +  else
  +  print "<h2>Read current settings for this $config[sitename]</h2>\n";
  +  print "<div class='oldset'>";
     print"<table class='wiki' align=center border=1 cellpadding=2 cellspacing=2>";
     print "\n";
     while (list($key,$val) = each($config)) {
       if ($key != "admin_passwd" && $key != "purge_passwd")
       if (!preg_match('/<img /',$val))
         $val=str_replace(array('<',"\n"),array('&lt;',"<br />\n"),$val);
  -    print "<tr><td class='option'>\$$key</td><td>$val</td></tr>\n";
  +    print "<tr><td class='preview'>\$$key</td><td>$val</td></tr>\n";
     }
  -  print "</table>\n";
  +  print "</table>\n</div>\n";
   
  -  print "<h3>Change your settings</h3>\n";
  +if ($_SERVER['REQUEST_METHOD']!="POST") {
  +  print "<h2>Change your settings</h2>\n";
     if (!$config['admin_passwd'])
     print "<h3><font color='red'>WARN: You have to enter your Admin Password</h3>\n";
     else if (file_exists('config.php') && !file_exists($config[data_dir]."/text/RecentChanges")) {
  @@ -591,18 +723,22 @@
       print "<h2>If you want to put wikiseeds on your wiki <a href='?action=seed'>Click here</a> now</h2>";
     }
     print "<form method='post' action=''>\n";
  +  print "<div class='newset'>\n";
     print "<table align='center' border='0' cellpadding='2' cellspacing='2'>\n";
     while (list($key,$val) = each($rawconfig)) {
       if ($key != "admin_passwd") {
         print "<tr><td class='option'>$$key</td>";
         if (strpos($val,"\n")) $type="textarea";
         else $type="input";
  +
         if ($type=='input') {
           $val=str_replace('"',"&#34;",$val);
  -        print "<td><$type type='text' name='config[$key]' value=\"$val\" size='60'></td></tr>\n";
  +        print "<td class='option'><$type type='text' name='config[$key]' value=\"$val\" size='60'></td></tr>\n";
         } else {
           print "<td><$type name='config[$key]' rows='4' cols='60'>".$val."</$type></td></tr>\n";
         }
  +      if ($configdesc[$key])
  +        print "<td class='desc' colspan='2'>".$configdesc[$key]."</td></tr>\n";
       }
     }
   
  @@ -615,13 +751,14 @@
       print "<tr><td><b>New password</b></td>";
       print "<td><input type='password' name='newpasswd' size='60'></td></tr>\n";
     }
  -  print "<tr><td colspan=2>";
  -  print "<input type='submit' value='preview'> ";
  +  print "</table></div>";
  +  print "<div class='step'>";
  +  print "<input type='submit' name='update' value='Preview' /> ";
     if (!$config['admin_passwd'])
  -  print "<input type='submit' name='update' value='update'></td></tr>\n";
  +  print "<input type='submit' name='update' value='Update' />\n";
     else
  -  print "<input type='submit' name='update' value='update'></td></tr>\n";
  -  print "</table></form>\n";
  +  print "<input type='submit' name='update' value='Update' />\n";
  +  print "</div></form>\n";
   
     if (file_exists('config.php') && !file_exists($config[data_dir]."/text/RecentChanges")) {
       print "<h3><font color='red'>WARN: You have no WikiSeed on your $config[sitename]</font></h3>\n";
  @@ -633,5 +770,6 @@
         print "<h2>goto <a href='".$config[url_prefix]."'>$config[sitename]</a></h2>";
     }
   }
  +  print "</div></body></html>";
   
   ?>
  
  
  


wkpark      2007/10/05 18:00:00

  Added:       imgs     setup-bg.png setup-logo.png
  Log:
  more fancy simplified fixes etc.
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/setup-bg.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/setup-logo.png
  
  	<<Binary file>>
  
  


wkpark      2007/10/05 23:38:41

  Modified:    plugin   rawblog.php
  Log:
  add some comment
  
  Revision  Changes    Path
  1.2       +16 -1     moniwiki/plugin/rawblog.php
  
  Index: rawblog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rawblog.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- rawblog.php	1 Aug 2007 01:13:20 -0000	1.1
  +++ rawblog.php	5 Oct 2007 14:38:41 -0000	1.2
  @@ -1,4 +1,19 @@
   <?php
  +// Copyright 2007 by keizie <keizie at gmail.com>
  +// All rights reserved. Distributable under GPL see COPYING
  +// a rawblog plugin for the MoniWiki
  +//
  +// Author: Keizie <keizie@gmail.com>
  +// Date: 2007-08-01
  +// Name: Raw blog action plugin
  +// Description: Raw blog action Plugin to extract a blog entry from a Blog page.
  +// URL: MoniWiki:RawBlogPlugin
  +// Version: $Revision: 1.2 $
  +// License: GPL
  +//
  +// Usage: ?action=rawblog
  +//
  +// $Id: rawblog.php,v 1.2 2007/10/05 14:38:41 wkpark Exp $
   
   function do_rawblog($formatter,$options) {
     global $DBInfo;
  @@ -13,7 +28,7 @@
     $url=$formatter->link_url($formatter->page->urlname);
     $formatter->send_header("",$options);
   
  -  { # add entry or comment
  +  { #
       if ($options['value']) {
         $raw_body=$formatter->page->_get_raw_body();
         $lines=explode("\n",$raw_body);
  
  
  


wkpark      2007/10/05 23:42:47

  Modified:    plugin   referer.php
  Log:
  fixed short open tag
  
  Revision  Changes    Path
  1.2       +2 -2      moniwiki/plugin/referer.php
  
  Index: referer.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/referer.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- referer.php	30 Apr 2007 14:30:48 -0000	1.1
  +++ referer.php	5 Oct 2007 14:42:47 -0000	1.2
  @@ -1,5 +1,4 @@
  -<?
  -// vim:et:ts=2:
  +<?php
   
   function do_referer($formatter, $options)
   {
  @@ -102,4 +101,5 @@
     return $ret;
   }
   
  +// vim:et:ts=2:
   ?>
  
  
  


wkpark      2007/10/06 11:10:38

  Modified:    .        wiki.php
  Log:
  fixed behavior of the ajax_repl()
  support explicit security check of a ?action=myaction/ajax
  fixed link of twinpages (reverted)
  
  Revision  Changes    Path
  1.348     +32 -10    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.347
  retrieving revision 1.348
  diff -u -r1.347 -r1.348
  --- wiki.php	2 May 2007 12:40:33 -0000	1.347
  +++ wiki.php	6 Oct 2007 02:10:38 -0000	1.348
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.347 2007/05/02 12:40:33 keizie Exp $
  +// $Id: wiki.php,v 1.348 2007/10/06 02:10:38 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.347 $',1,-1);
  +$_revision = substr('$Revision: 1.348 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -326,7 +326,7 @@
       $addons=$this->aux->getTwinPages($pagename,$mode);
       $ret=array();
       if ($twins) {
  -      $ret="wiki:".str_replace(" ",":$pagename wiki:",$twins). ":$pagename";
  +      $ret="[wiki:".str_replace(" ",":$pagename] [wiki:",$twins). ":$pagename]";
   
         $pagename=_preg_search_escape($pagename);
         $ret= preg_replace("/((:[^\s]+){2})(\:$pagename)/","\\1",$ret);
  @@ -2587,16 +2587,22 @@
       return call_user_func("postfilter_$filter",$this,$value,$options);
     }
   
  -  function ajax_repl($action,$options='') {
  -    if (!function_exists('ajax_'.$action) and !function_exists('do_'.$action)) {
  -      $ff=getPlugin($action);
  -      if (!$ff) return $value;
  +  function ajax_repl($plugin,$options='') {
  +    if (!function_exists('ajax_'.$plugin) and !function_exists('macro_'.$plugin)) {
  +      $ff=getPlugin($plugin);
  +      if (!$ff)
  +        return ajax_invalid($this,array('title'=>_("Invalid ajax action.")));
         include_once("plugin/$ff.php");
       }
  -    if (!function_exists ("ajax_".$action))
  +    if (!function_exists ('ajax_'.$plugin)) {
  +      if (function_exists('macro_'.$plugin)) {
  +        print call_user_func_array('macro_'.$plugin,array(&$this,'',$options));
  +        return;
  +      }
         return ajax_invalid($this,array('title'=>_("Invalid ajax action.")));
  +    }
   
  -    return call_user_func("ajax_$action",$this,$options);
  +    return call_user_func('ajax_'.$plugin,$this,$options);
     }
   
     function smiley_repl($smiley) {
  @@ -4450,7 +4456,9 @@
       $refresh=($options['id'] == 'Anonymous') ? 0:$_GET['refresh'];
       $popup=$_GET['popup'];
     }
  +  $full_action=$action;
     if (($p=strpos($action,'/'))!==false) {
  +    $full_action=strtr($action,'/','-');
       $action_mode=substr($action,$p+1);
       $action=substr($action,0,$p);
     }
  @@ -4665,7 +4673,21 @@
       $options['help']='';
       $options['value']=$value;
   
  -    if (!$DBInfo->security->is_allowed($action,$options)) {
  +    $a_allow=$DBInfo->security->is_allowed($action,$options);
  +    if ($action_mode) {
  +      $myopt=$options;
  +      $myopt['explicit']=1;
  +      $f_allow=$DBInfo->security->is_allowed($full_action,$myopt);
  +      # check if hello/ajax is defined or not
  +      if ($f_allow === false)
  +        $f_allow=$a_allow; # follow action permission if it is not defined explicitly.
  +      if (!$f_allow) {
  +        if ($action_mode=='ajax') {
  +          return ajax_invalid($formatter,array('title'=>_("Invalid ajax action.")));
  +        }
  +        return do_invalid($formatter,array('title'=>_("Invalid macro action.")));
  +      }
  +    } else if (!$a_allow) {
         if ($options['custom']!='' and
             method_exists($DBInfo->security,$options['custom'])) {
           $options['action']=$action;
  
  
  


wkpark      2007/10/06 11:10:38

  Modified:    plugin/security acl.php
  Log:
  fixed behavior of the ajax_repl()
  support explicit security check of a ?action=myaction/ajax
  fixed link of twinpages (reverted)
  
  Revision  Changes    Path
  1.6       +9 -1      moniwiki/plugin/security/acl.php
  
  Index: acl.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/acl.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- acl.php	29 Jul 2006 07:14:44 -0000	1.5
  +++ acl.php	6 Oct 2007 02:10:38 -0000	1.6
  @@ -1,6 +1,6 @@
   <?php
   # a ACL security plugin for the MoniWiki (experimental)
  -# $Id: acl.php,v 1.5 2006/07/29 07:14:44 wkpark Exp $
  +# $Id: acl.php,v 1.6 2007/10/06 02:10:38 wkpark Exp $
   #
   # Please see also http://www.dokuwiki.org/wiki:discussion:acl2
   #
  @@ -171,6 +171,12 @@
           $allowed=&$this->_allowed;
           $denied=&$this->_denied;
   
  +        if ($options['explicit']) {
  +            if (isset($allowed[$action])) return 1;
  +            else if (isset($denied[$action])) return 0;
  +            return false;
  +        }
  +
           if (isset($denied['*'])) {
               if (isset($allowed[$action])) {
                   if ($allowed[$action] >= $denied['*']) return 1;
  @@ -199,6 +205,7 @@
       function is_allowed($action="read",&$options) {
           # basic allowed actions
           $action=strtolower($action);
  +        $action=strtr($action,'-','/'); # for myaction/macro or myaction/ajax
           if (!$this->_acl_ok) $this->get_acl($action,$options); # get acl info
   
           $ret=$this->acl_check($action,$options);
  @@ -212,6 +219,7 @@
       function is_protected($action="read",$options) {
           # password protected POST actions
           $action=strtolower($action);
  +        $action=strtr($action,'-','/'); # for myaction/macro or myaction/ajax
           if (!$this->_acl_ok) $this->get_acl($action,$options); # get acl info
   
           if (in_array($action,$this->_protected)) return 1;
  
  
  


wkpark      2007/10/06 11:10:38

  Added:       local    subindex.js
  Log:
  fixed behavior of the ajax_repl()
  support explicit security check of a ?action=myaction/ajax
  fixed link of twinpages (reverted)
  
  Revision  Changes    Path
  1.1                  moniwiki/local/subindex.js
  
  Index: subindex.js
  ===================================================================
  function toggleSubIndex(id)
  {
      var subindex;
      if (typeof id == 'object') subindex=id;
      else subindex=document.getElementById(id);
      if (!subindex) return;
      var mode='';
  
      if (subindex) {
          var sub=subindex.getElementsByTagName('div')[0];
          if (sub) {
              mode= sub.getAttribute('style');
              if (mode) {
  	        new Effect.SlideDown(sub, { duration: 0.3, afterFinish: function() {Element.show(sub);} });
              } else {
  	        new Effect.SlideUp(sub, { duration: 0.3, afterFinish: function() {Element.hide(sub);} });
              }
          } else { // get subpages for the first time.
              var sub=document.createElement('div');
  
              var href= self.location + "";
              var qp=href.indexOf("?") != -1 ? '&':'?';
              href=self.location + qp + 'action=pagelist/ajax&subdir=1';
  
              var form=HTTPGet(href);
              sub.innerHTML=form;
              sub.setAttribute('style','display:none');
              subindex.appendChild(sub);
  
  	    new Effect.SlideDown(sub, { duration: 0.4,afterFinish: function() {Element.show(sub);} });
              mode=true;
          }
          var icon=subindex.getElementsByTagName('legend')[0];
          if (icon) {
              if (mode)
                  icon.setAttribute('class','close');
              else
                  icon.setAttribute('class','');
          }
      }
  }
  
  // vim:et:sts=4:sw:
  
  
  


wkpark      2007/10/06 11:13:24

  Added:       local    autocomplete.js
  Log:
  autocomplete feature
  
  Revision  Changes    Path
  1.1                  moniwiki/local/autocomplete.js
  
  Index: autocomplete.js
  ===================================================================
  //
  // Moniwiki Autocompleter using the scriptaculous
  // $Id: autocomplete.js,v 1.1 2007/10/06 02:13:24 wkpark Exp $
  //
  
  function setGotoFormId(formid,id) {
      var inp= document.getElementById(formid);
      var ok=false;
      if (inp) {
          var val= inp.getElementsByTagName('input');
          if (!val) {
              return false;
          }
          for (var i=0;i<val.length;i++) {
              if (val[i].name== 'value') {
                  val[i].setAttribute('id',id);
                  return;
              }
          }
      }
      return false;
  }
  
  
  Ajax.Autocompleter.prototype.onKeyPress = function(event) {
      if(this.active)
          switch(event.keyCode) {
          case Event.KEY_TAB:
          case Event.KEY_RETURN:
              this.selectEntry();
              Event.stop(event);
          case Event.KEY_ESC:
              this.hide();
              this.active = false;
              Event.stop(event);
              return;
          case Event.KEY_LEFT:
          case Event.KEY_RIGHT:
              return;
          case Event.KEY_UP:
              this.markPrevious();
              this.render();
              if(navigator.appVersion.indexOf('AppleWebKit')>0) Event.stop(event);
              return;
          case Event.KEY_DOWN:
              this.markNext();
              this.render();
              if(navigator.appVersion.indexOf('AppleWebKit')>0) Event.stop(event);
              return;
          }
          else
          if(event.keyCode==Event.KEY_TAB || event.keyCode==Event.KEY_RETURN ||
              (navigator.appVersion.indexOf('AppleWebKit') > 0 && event.keyCode == 0)) return;
  
          if (!document.all) { // mozilla hack to workaround keypress/keydown event problem with IME
              if (event.keyCode == 229) {
                  var self=this;
                  this.oldToken=this.getToken();
                  if (this.mozFixKeydown == null)
                  this.mozFixKeydown = setInterval(function()
                      { var newToken=self.getToken();
                          if (newToken != self.oldToken) {
                              self.active=false;self.getUpdatedChoices();self.oldToken=newToken;
                          } 
                      }, 100);
              } else {
                  if (this.mozFixKeydown)
                  clearInterval(this.mozFixKeydown);
                  this.mozFixKeydown= null;
          }
      }
  
      this.changed = true;
      this.hasFocus = true;
  
      if(this.observer) clearTimeout(this.observer);
          this.observer =
              setTimeout(this.onObserverEvent.bind(this), this.options.frequency*1000);
  }
  
  function initGotoAutoCompleter(id,choiceid,action,method) {
      if (id == null || id == undefined)
          return false;
  
      if (typeof id == 'string')
          if (!document.getElementById(id)) return false;
      var div= document.createElement('div');
      div.setAttribute('id',choiceid);
      div.setAttribute('class','autocomplete');
      div.setAttribute('style','display: none');
      document.body.appendChild(div);
  
      var ac= new Ajax.Autocompleter(id, choiceid,
          action, {method: method,paramName: 'q',minChars: 1});
  
      return true;
  }
  
  if (typeof window.onload != 'function') {
      function _oldOnload() {
      }
  } else {
      var _oldOnload = window.onload;
  }
  
  window.onload = function() {
      _oldOnload();
      setGotoFormId('go','autocomplete_goto');
      initGotoAutoCompleter('autocomplete_goto','autocomplete_choices',"?action=titleindex",'get');
  }
  
  // vim:et:sts=4:sw:
  
  
  


wkpark      2007/10/08 23:16:09

  Modified:    local    subindex.js
  Log:
  IE fix
  
  Revision  Changes    Path
  1.2       +12 -4     moniwiki/local/subindex.js
  
  Index: subindex.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/subindex.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- subindex.js	6 Oct 2007 02:10:38 -0000	1.1
  +++ subindex.js	8 Oct 2007 14:16:09 -0000	1.2
  @@ -4,13 +4,21 @@
       if (typeof id == 'object') subindex=id;
       else subindex=document.getElementById(id);
       if (!subindex) return;
  -    var mode='';
  +    var mode='',toggle='';
   
       if (subindex) {
           var sub=subindex.getElementsByTagName('div')[0];
           if (sub) {
               mode= sub.getAttribute('style');
  -            if (mode) {
  +            if (typeof mode == 'object') { // for IE
  +                if (sub.style.display == 'none')
  +                    toggle=true;
  +                else
  +                    toggle=false;
  +            } else if (mode) {
  +                toggle=true;
  +            }
  +            if (toggle) {
   	        new Effect.SlideDown(sub, { duration: 0.3, afterFinish: function() {Element.show(sub);} });
               } else {
   	        new Effect.SlideUp(sub, { duration: 0.3, afterFinish: function() {Element.hide(sub);} });
  @@ -28,11 +36,11 @@
               subindex.appendChild(sub);
   
   	    new Effect.SlideDown(sub, { duration: 0.4,afterFinish: function() {Element.show(sub);} });
  -            mode=true;
  +            toggle=true;
           }
           var icon=subindex.getElementsByTagName('legend')[0];
           if (icon) {
  -            if (mode)
  +            if (toggle)
                   icon.setAttribute('class','close');
               else
                   icon.setAttribute('class','');
  
  
  


wkpark      2007/10/08 23:17:19

  Modified:    css      _base.css
  Log:
  update
  
  Revision  Changes    Path
  1.15      +34 -3     moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- _base.css	27 Dec 2006 08:40:58 -0000	1.14
  +++ _base.css	8 Oct 2007 14:17:19 -0000	1.15
  @@ -112,11 +112,11 @@
     font-family:sans-serif;
   }
   
  -div.diff-added {
  +div.diff-added, tr.diff-added {
     background-color:#ccffcc;
   }
   
  -div.diff-removed {
  +div.diff-removed, tr.diff-removed {
     background-color:#EEBfbb;
   }
   
  @@ -134,6 +134,7 @@
   
   span.diff-removed, del.diff-removed {
     background-color: #FF0000;
  +  text-decoration: none;
   }
   
   div.message {
  @@ -206,6 +207,7 @@
   .wikiGroup {
     font-family:Tahoma,Lucida,sans-serif;
     font-size:10px;
  +  display:block;
   }
   
   #wikiTrailer, #wikiOrigin {
  @@ -415,8 +417,9 @@
   }
   
   .wikiMarkup {
  -  font-family:Bitstream vera sans mono,Courier New,monospace; 
     background-color:#ffff00;
  +  border-left:2px solid #F5E238;
  +  border-right:2px solid #F5E238;
   }
   
   /* since v1.1.3 */
  @@ -453,12 +456,14 @@
     z-index:20;
   }
   
  +
   #wikiSubIndex legend {
     color:#555;
     background: url(../imgs/misc/open.png) no-repeat;
     height:9px;
     width:9px;
     padding:5px;
  +  margin:0px;
   }
   
   #wikiSubIndex legend.close {
  @@ -471,3 +476,29 @@
     background: #ffffff;
     padding:3px;
   }
  +
  +.wikiRating {
  +  left:500px;
  +  border-left:5px solid #72BEE2;
  +  padding-left:5px;
  +}
  +
  +.attach img {
  +  vertical-align:middle;
  +}
  +
  +.addPage {
  +  margin-left:auto; /* Moz */
  +  margin-right:auto; /* Moz */
  +}
  +
  +.addPage table {
  +}
  +
  +.addPage, .addPage input{
  +  font-size:20px;
  +}
  +
  +.addLabel {
  +  text-align:right;
  +}
  
  
  


wkpark      2007/10/08 23:17:36

  Modified:    css      _base.css
  Log:
  IE fix
  
  Revision  Changes    Path
  1.16      +1 -1      moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- _base.css	8 Oct 2007 14:17:19 -0000	1.15
  +++ _base.css	8 Oct 2007 14:17:36 -0000	1.16
  @@ -451,7 +451,7 @@
     padding-bottom:0px;
     padding-left:0px;
     padding-top:0px;
  -  border:1px solid transparent; /* */
  +  border:0px solid transparent; /* */
     margin-right:5px;
     z-index:20;
   }
  
  
  


wkpark      2007/10/09 01:35:04

  Modified:    local    moniwyg.js
  Log:
  more fixes
  
  Revision  Changes    Path
  1.13      +43 -11    moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- moniwyg.js	27 Dec 2006 08:00:57 -0000	1.12
  +++ moniwyg.js	8 Oct 2007 16:35:04 -0000	1.13
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.12 2006/12/27 08:00:57 wkpark Exp $
  +// $Id: moniwyg.js,v 1.13 2007/10/08 16:35:04 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -134,13 +134,19 @@
               var cname= spans[i].getAttribute('class');
               if (cname == 'wikiMarkup' && spans[i].innerHTML) {
                   // check marcos
  -                var match=spans[i].innerHTML.match(/^(<!-- wiki:\n[^\n]+\n-->)/m);
  -                if (!match) // check processors
  -                    match=spans[i].innerHTML.match(/^(<!-- wiki:\n\{\{\{(.|\n)+\}\}\}\n-->)/m);
  -                if (match) {
  -                    var test=spans[i].innerHTML.substr(match[1].length);
  -                    if (test.indexOf("\n") != -1)
  +                //var len=spans[i].firstChild.data.length + 7;
  +
  +                //if (len) {
  +                //    var test=spans[i].innerHTML.substr(len);
  +                //    if (test.indexOf("\n") != -1)
  +                //        spans[i].style.display='block';
  +                //}
  +                for (var part = spans[i].firstChild; part; part = part.nextSibling) {
  +                    if (part.nodeType == 1 && part.nodeName != 'IMG' &&
  +                            part.innerHTML && part.innerHTML.indexOf("\n") != -1) {
                           spans[i].style.display='block';
  +                        break;
  +                    }
                   }
               }
           }
  @@ -401,7 +407,7 @@
   
   proto.assert_blank_line = function() {
       if (! this.should_whitespace()) return;
  -    this.chomp();
  +    this.chomp_n(); // FIX
       this.insert_new_line();
       //this.insert_new_line(); // FIX for line_alone (----)
   }
  @@ -713,10 +719,10 @@
                           } else {
                               newquery=oldquery+'&'+newquery;
                           }
  -                        node.data=orig+'?'+newquery + " \n";
  +                        node.data=orig+'?'+newquery;
                       } else {
                           node.data = node.data.replace(/\n+$/,""); // strip \n
  -                        node.data+='?'+newquery + " \n";
  +                        node.data+='?'+newquery;
                       }
   
                       return node;
  @@ -738,7 +744,33 @@
                      .replace(/\s$/, '')
                      .replace(/\{(\w+):\s*\}/, '{$1}');
           this.appendOutput(Wikiwyg.htmlUnescape(text))
  -        this.smart_trailing_space(element);
  +        this.smart_trailing_space_n(element);
  +    }
  +}
  +
  +proto.smart_trailing_space_n = function(element) {
  +    var next = element.nextSibling;
  +    if (! next) {
  +        // do nothing
  +    }
  +    else if (next.nodeType == 1) {
  +        if (next.nodeName == 'BR') {
  +            var nn = next.nextSibling;
  +            if (! (nn && nn.nodeType == 1 && nn.nodeName == 'SPAN') && nn.nodeType != 3) {
  +                this.appendOutput('\n');
  +                alert(nn.nodeName + nn.nodeType);
  +            }
  +        }
  +        else {
  +            this.appendOutput('');
  +        }
  +    }
  +    else if (next.nodeType == 3) {
  +        if (! next.nodeValue.match(/^\s/)) {
  +            this.no_following_whitespace();
  +        } else if (next.nodeValue.match(/\n/) && next.nodeValue.match(/^\s+$/)){
  +            this.appendOutput(next.nodeValue);
  +        }
       }
   }
   
  
  
  


wkpark      2007/10/09 01:35:54

  Modified:    local    chat.js
  Log:
  small fix
  
  Revision  Changes    Path
  1.6       +1 -1      moniwiki/local/chat.js
  
  Index: chat.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/chat.js,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- chat.js	13 Dec 2006 01:43:09 -0000	1.5
  +++ chat.js	8 Oct 2007 16:35:54 -0000	1.6
  @@ -64,7 +64,7 @@
       node.setAttribute('id',id);
       node.setAttribute('autostart','false');
       if (navigator.appVersion.indexOf("MSIE")!=-1)
  -    	node.setAttribute('style','visibility:hidden');
  +    	node.setAttribute('hidden','true');
       node.setAttribute('loop','false');
       node.setAttribute('height','0px');
       node.setAttribute('width','0px');
  
  
  


wkpark      2007/10/09 14:11:46

  Modified:    plugin   Play.php
  Log:
  fixed xml tag
  
  Revision  Changes    Path
  1.7       +4 -3      moniwiki/plugin/Play.php
  
  Index: Play.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Play.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- Play.php	29 Sep 2007 04:06:16 -0000	1.6
  +++ Play.php	9 Oct 2007 05:11:45 -0000	1.7
  @@ -8,12 +8,12 @@
   // Name: Play macro
   // Description: media Player Plugin
   // URL: MoniWikiDev:PlayMacro
  -// Version: $Revision: 1.6 $
  +// Version: $Revision: 1.7 $
   // License: GPL
   //
   // Usage: [[Play(http://blah.net/blah.mp3)]]
   //
  -// $Id: Play.php,v 1.6 2007/09/29 04:06:16 wkpark Exp $
  +// $Id: Play.php,v 1.7 2007/10/09 05:11:45 wkpark Exp $
   
   function macro_Play($formatter,$value) {
     global $DBInfo;
  @@ -140,8 +140,9 @@
         }
   
         $tracks="<track>\n".implode("</track>\n<track>\n",$list)."</track>\n";
  +      // UTF-8 FIXME
         $xml=<<<XML
  -<?xml version="1.0" encoding="UTF-8"? >
  +<?xml version="1.0" encoding="UTF-8"?>
   <playlist version="1" xmlns="http://xspf.org/ns/0/">
     <title>XSPF Playlist</title>
     <info>XSPF Playlist</info>
  
  
  


wkpark      2007/10/09 14:17:23

  Modified:    plugin   new.php
  Log:
  more user friendly fixes
  
  Revision  Changes    Path
  1.3       +19 -6     moniwiki/plugin/new.php
  
  Index: new.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/new.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- new.php	13 Oct 2005 13:06:31 -0000	1.2
  +++ new.php	9 Oct 2007 05:17:23 -0000	1.3
  @@ -4,25 +4,38 @@
   // a new action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: new.php,v 1.2 2005/10/13 13:06:31 wkpark Exp $
  +// $Id: new.php,v 1.3 2007/10/09 05:17:23 wkpark Exp $
   
   function do_new($formatter,$options) {
  +  global $DBInfo;
  +
     if (!$options['value']) {
       $title=_("Create a new page");
       $formatter->send_header("",$options);
       $formatter->send_title($title,"",$options);
       $url=$formatter->link_url($formatter->page->urlname);
   
  -    $msg=_("Enter a page name");
  +    if ($DBInfo->hasPage('MyNewPage')) {
  +        $p = $DBInfo->getPage('MyNewPage');
  +        $f = new Formatter($p,$options);
  +        $f->use_rating=0;
  +
  +        $f->send_page('',$options);
  +    }
  +
  +    $msg=_("Page Name");
       $fixname=_("Normalize this page name");
       $btn=_("Create a new page");
       print <<<FORM
  +<div class='addPage'>
   <form method='get' action='$url'>
  -    $msg: <input type='hidden' name='action' value='new' />
  -    <input name='value' size='30' />
  -    <input type='checkbox' name='fixname' checked='checked' />$fixname<br />
  -    <input type='submit' value='$btn' />
  +<table style='border:0'><tr><th class='addLabel'><labe>$msg: </label></th><td><input type='hidden' name='action' value='new' />
  +    <input name='value' size='30' /></td></tr>
  +<tr><th class='addLabel'><input type='checkbox' name='fixname' checked='checked' /></th><td>$fixname</td></tr>
  +<td></td><td><input type='submit' value='$btn' /></td>
  +</tr></table>
       </form>
  +</div>
   FORM;
       $formatter->send_footer();
     } else {
  
  
  


wkpark      2007/10/11 18:10:29

  Modified:    plugin   SWFUpload.php UploadFile.php
  Log:
  fix to use a temporary subdir with the $nosession option
  
  Revision  Changes    Path
  1.6       +16 -11    moniwiki/plugin/SWFUpload.php
  
  Index: SWFUpload.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SWFUpload.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SWFUpload.php	27 Sep 2007 13:24:29 -0000	1.5
  +++ SWFUpload.php	11 Oct 2007 09:10:29 -0000	1.6
  @@ -8,27 +8,32 @@
   // Name: SWF Upload
   // Description: SWF Upload Plugin
   // URL: http://labb.dev.mammon.se/swfupload/ MoniWikiDev:SWFUpload
  -// Version: $Revision: 1.5 $
  +// Version: $Revision: 1.6 $
   // License: GPL
   //
   // Usage: [[SWFUpload]]
   //
  -// $Id: SWFUpload.php,v 1.5 2007/09/27 13:24:29 wkpark Exp $
  +// $Id: SWFUpload.php,v 1.6 2007/10/11 09:10:29 wkpark Exp $
   
   function macro_SWFUpload($formatter,$value) {
       global $DBInfo;
   
  -    if ($myid=session_id()) {
  -        if ($DBInfo->swfupload_depth > 2) {
  -            $depth=$DBInfo->swfupload_depth;
  -        } else {
  -            $depth=2;
  -        }
  -        $prefix=substr($myid,0,$depth);
  -        $mysubdir=$prefix.'/'.$myid.'/';
  -        $myoptions="<input type='hidden' name='mysubdir' value='$mysubdir' />";
  +    if ($DBInfo->swfupload_depth > 2) {
  +        $depth=$DBInfo->swfupload_depth;
  +    } else {
  +        $depth=2;
  +    }
  +
  +    if ($DBInfo->nosession) { // ip based
  +        $myid=md5($_SERVER['REMOTE_ADDR'].'.'.'MONIWIKI'); // FIXME
  +    } else {
  +        $myid=session_id();
       }
   
  +    $prefix=substr($myid,0,$depth);
  +    $mysubdir=$prefix.'/'.$myid.'/';
  +    $myoptions="<input type='hidden' name='mysubdir' value='$mysubdir' />";
  +
       if ($DBInfo->use_lightbox) {
           $myoptions.="\n<input type='hidden' name='use_lightbox' value='1' />";
       }
  
  
  
  1.33      +2 -2      moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- UploadFile.php	3 Jan 2007 04:24:18 -0000	1.32
  +++ UploadFile.php	11 Oct 2007 09:10:29 -0000	1.33
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.32 2007/01/03 04:24:18 wkpark Exp $
  +// $Id: UploadFile.php,v 1.33 2007/10/11 09:10:29 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -264,7 +264,7 @@
     $formatter->send_footer();
     print $js;
   
  -  if (is_array($options['MYFILES']))
  +  if (is_array($options['MYFILES']) and !$DBInfo->nosession)
       session_destroy();
   }
   
  
  
  


wkpark      2007/10/11 18:34:00

  Added:       local    googlehi.js
  Log:
  support google highlighting like as trac etc.
  
  Revision  Changes    Path
  1.1                  moniwiki/local/googlehi.js
  
  Index: googlehi.js
  ===================================================================
  // from http://www.edgewall.org/chrome/common/js/trac.js
  // Adapted from http://www.kryogenix.org/code/browser/searchhi/
  function MoniSearchHighlight() {
    if (!document.createElement) return;
  
    var div = document.getElementById("wikiBody");
    if (!div) return;
  
    function getSearchWords(url) {
      if (url.indexOf('?') == -1) return [];
      var queryString = url.substr(url.indexOf('?') + 1);
      var params = queryString.split('&');
      for (var p in params) {
        var param = params[p].split('=');
        if (param.length < 2) continue;
        if (param[0] == 'q' || param[0] == 'p') { // q= for Google, p= for Yahoo
          var query = decodeURIComponent(param[1].replace(/\+/g, ' '));
          if (query[0] == '!') query = query.slice(1);
          words = query.split(/(".*?")|('.*?')|(\s+)/);
          var words2 = new Array();
          for (var w in words) {
            words[w] = words[w].replace(/^\s+$/, '');
            if (words[w] != '') {
              words2.push(words[w].replace(/^['"]/, '').replace(/['"]$/, ''));
            }
          }
          return words2;
        }
      }
      return [];
    }
  
    function highlightWord(node, word, searchwordindex) {
      // If this node is a text node and contains the search word, highlight it by
      // surrounding it with a span element
      if (node.nodeType == 3) { // Node.TEXT_NODE
        var pos = node.nodeValue.toLowerCase().indexOf(word.toLowerCase());
        if (pos >= 0 && !/^searchword\d$/.test(node.parentNode.className)) {
          var span = document.createElement("span");
          span.className = "searchword" + (searchwordindex % 5);
          span.appendChild(document.createTextNode(
            node.nodeValue.substr(pos, word.length)));
          node.parentNode.insertBefore(span, node.parentNode.insertBefore(
            document.createTextNode(node.nodeValue.substr(pos + word.length)),
              node.nextSibling));
          node.nodeValue = node.nodeValue.substr(0, pos);
          return true;
        }
      } else if (!node.nodeName.match(/button|select|textarea/i)) {
        // Recurse into child nodes
        for (var i = 0; i < node.childNodes.length; i++) {
          if (highlightWord(node.childNodes[i], word, searchwordindex)) i++;
        }
      }
      return false;
    }
  
    var words = getSearchWords(document.URL);
    if (!words.length) words = getSearchWords(document.referrer);
    if (words.length) {
      for (var w in words) {
        if (words[w].length) highlightWord(div, words[w], w);
      }
    }
  }
  
  
  if (window.addEventListener) window.addEventListener("load",MoniSearchHighlight,false);
  else if (window.attachEvent) window.attachEvent("onload",MoniSearchHighlight);
  
  
  


wkpark      2007/10/13 09:19:39

  Modified:    plugin   Attachment.php UploadedFiles.php
  Log:
  show filesize info
  
  Revision  Changes    Path
  1.28      +16 -3     moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- Attachment.php	1 Jul 2007 12:59:23 -0000	1.27
  +++ Attachment.php	13 Oct 2007 00:19:39 -0000	1.28
  @@ -7,13 +7,13 @@
   // Name: Attachment
   // Description: Attachment Plugin
   // URL: MoniWiki:AttachmentPlugin
  -// Version: $Revision: 1.27 $
  +// Version: $Revision: 1.28 $
   // Depend: 1.1.3
   // License: GPL
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.27 2007/07/01 12:59:23 keizie Exp $
  +// $Id: Attachment.php,v 1.28 2007/10/13 00:19:39 wkpark Exp $
   
   function macro_Attachment($formatter,$value,$option='') {
     global $DBInfo;
  @@ -124,7 +124,20 @@
     if ($option == 1) return $upload_file;
     if (!$text) $text=$file;
   
  +
     if (file_exists($upload_file)) {
  +
  +    $sz=filesize($upload_file);
  +    $unit=array('Bytes','KB','MB','GB','TB');
  +    for ($i=0;$i<4;$i++) {
  +      if ($sz <= 1024) {
  +        #$sz= round($sz,2).' '.$unit[$i];
  +        break;
  +      }
  +      $sz=$sz/1024;
  +    }
  +    $info=' ('.round($sz,2).' '.$unit[$i].') ';
  +
       if (!in_array('UploadedFiles',$formatter->actions))
         $formatter->actions[]='UploadedFiles';
   
  @@ -147,7 +160,7 @@
         if ($img_link)
           return $bra."<span class=\"attach\"><a href='$link'>$img_link</a></span>".$ket;
   
  -      return $bra."<span class=\"attach\"><img src='$DBInfo->imgs_dir_interwiki".'uploads-16.png\' /><a href="'.$link.'">'.$text.'</a></span>'.$ket;
  +      return $bra."<span class=\"attach\"><img src='$DBInfo->imgs_dir_interwiki".'uploads-16.png\' /><a href="'.$link.'">'.$text.'</a></span>'.$info.$ket;
       }
     }
   
  
  
  
  1.21      +2 -2      moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- UploadedFiles.php	2 Jan 2007 06:57:38 -0000	1.20
  +++ UploadedFiles.php	13 Oct 2007 00:19:39 -0000	1.21
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadedFiles plugin for the MoniWiki
   //
  -// $Id: UploadedFiles.php,v 1.20 2007/01/02 06:57:38 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.21 2007/10/13 00:19:39 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     $list=macro_UploadedFiles($formatter,$options['page'],$options);
  @@ -311,7 +311,7 @@
         $i=0;
         for (;$i<4;$i++) {
            if ($size <= 1024) {
  -            $size= round($size,2).' '.$unit[$i];
  +            #$size= round($size,2).' '.$unit[$i];
               break;
            }
            $size=$size/1024;
  
  
  


wkpark      2007/10/13 09:21:36

  Modified:    plugin   subscribe.php
  Log:
  do not check the $notify option.
  
  Revision  Changes    Path
  1.5       +50 -5     moniwiki/plugin/subscribe.php
  
  Index: subscribe.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/subscribe.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- subscribe.php	12 Apr 2005 13:58:38 -0000	1.4
  +++ subscribe.php	13 Oct 2007 00:21:36 -0000	1.5
  @@ -3,12 +3,42 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a subscribe action plugin for the MoniWiki
   //
  -// $Id: subscribe.php,v 1.4 2005/04/12 13:58:38 wkpark Exp $
  +// $Id: subscribe.php,v 1.5 2007/10/13 00:21:36 wkpark Exp $
  +
  +
  +function macro_Subscribe($formatter,$value,$options=array()) {
  +  global $DBInfo;
  +
  +  $user=new User(); # get cookie
  +
  +  if ($user->id != 'Anonymous') {
  +    $udb=new UserDB($DBInfo);
  +    $userinfo=$udb->getUser($user->id);
  +    $email=$userinfo->info['email'];
  +  } else {
  +    $title = _("Please login or make your ID.");
  +    return $title;
  +  }
  +
  +  if (!$userinfo->info['subscribed_pages'])
  +    return _("You did'nt subscribed any pages yet.");
  +  #$page_list=_preg_search_escape($userinfo->info['subscribed_pages']);
  +  $page_list=$userinfo->info['subscribed_pages'];
  +  if (!trim($page_list))
  +    return _("You did'nt subscribed any pages yet.");
  +  $page_lists=explode("\t",$page_list);
  +  $page_rule='^'.join("$|^",$page_lists).'$';
  +
  +  $out= macro_TitleSearch($formatter,$page_rule,$ret);
  +  if ($ret['hits'] > 0)
  +    return '<div class="subscribePages">'.$out.'</div>';
  +  return _("No subscribed pages found.");
  +}
   
   function do_subscribe($formatter,$options) {
     global $DBInfo;
   
  -  if (!$DBInfo->notify) {
  +  if (!$DBInfo->notify and 0) { # XXX
       $options['title']=_("EmailNotification is not activated");
       $options['msg']=_("If you want to subscribe this page please contact the WikiMaster to activate the e-mail notification");
       do_invalid($formatter,$options);
  @@ -52,16 +82,31 @@
       return;
     }
   
  +  $plist=_preg_search_escape($userinfo->info['subscribed_pages']);
  +  $check=1;
  +  if (trim($plist)) {
  +    $plists=explode("\t",$plist);
  +    $prule='^'.join("$|^",$plists).'$';
  +    if (preg_match('/('.$prule.')/',_preg_search_escape($options['page']))) {
  +      $title = sprintf(_("\"%s\" is already subscribed."), $options['page']);
  +      $check=0;
  +    }
  +  }
     $pages=explode("\t",$userinfo->info['subscribed_pages']);
  -  if (!in_array($options['page'],$pages)) $pages[]=$options['page'];
  +  if ($check) {
  +    if (!in_array($options['page'],$pages)) {
  +      $pages[]=$options['page'];
  +    }
  +    $title = sprintf(_("Do you want to subscribe \"%s\" ?"), $options['page']);
  +  }
     $page_lists=join("\n",$pages);
   
  -  $title = sprintf(_("Do you want to subscribe \"%s\" ?"), $options['page']);
     $formatter->send_header("",$options);
     $formatter->send_title($title,"",$options);
  +  $msg=_("Subscribed pages");
     print "<form method='post'>
   <table border='0'><tr>
  -<th>Subscribe pages:</th><td><textarea name='subscribed_pages' cols='30' rows='5' value='' />$page_lists</textarea></td></tr>
  +<th>$msg :</th><td><textarea name='subscribed_pages' cols='30' rows='5' value='' />$page_lists</textarea></td></tr>
   <tr><td></td><td>
       <input type='hidden' name='action' value='subscribe' />
       <input type='submit' value='Subscribe' />
  
  
  


wkpark      2007/10/13 09:22:01

  Modified:    plugin   print.php
  Log:
  emit kbd js
  
  Revision  Changes    Path
  1.6       +2 -1      moniwiki/plugin/print.php
  
  Index: print.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/print.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- print.php	4 Dec 2006 23:50:36 -0000	1.5
  +++ print.php	13 Oct 2007 00:22:01 -0000	1.6
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a print action plugin for the MoniWiki
   //
  -// $Id: print.php,v 1.5 2006/12/04 23:50:36 wkpark Exp $
  +// $Id: print.php,v 1.6 2007/10/13 00:22:01 wkpark Exp $
   
   function do_print($formatter,$options) {
     global $DBInfo;
  @@ -12,6 +12,7 @@
     $formatter->nonexists='simple';
   
     $formatter->send_header("",$options);
  +  kbd_handler();
     print "<div id='printHeader'>";
     print "<h2>$options[page]</h2>";
     print "</div>";
  
  
  


wkpark      2007/10/13 09:23:40

  Modified:    plugin   login.php
  Log:
  do_login action added
  
  Revision  Changes    Path
  1.9       +19 -1     moniwiki/plugin/login.php
  
  Index: login.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/login.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- login.php	26 Jan 2006 14:44:12 -0000	1.8
  +++ login.php	13 Oct 2007 00:23:40 -0000	1.9
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Login]]
   //
  -// $Id: login.php,v 1.8 2006/01/26 14:44:12 wkpark Exp $
  +// $Id: login.php,v 1.9 2007/10/13 00:23:40 wkpark Exp $
   
   function macro_login($formatter,$value="",$options="") {
     global $DBInfo;
  @@ -60,5 +60,23 @@
   LOGOUT;
   }
   
  +function do_login($formatter,$options) {
  +  global $DBInfo;
  +
  +  $user=new User(); # get from COOKIE VARS
  +  if ($user->id != 'Anonymous') {
  +    $options['logout']=1;
  +    $url=$formatter->link_url($formatter->page->urlname,'?action=userform&logout=1');
  +    $formatter->send_header(array('Status: 302','Location: '.$url),$options);
  +    return;
  +  }
  +
  +  $formatter->send_header("",$options);
  +  $formatter->send_title('','',$options);
  +
  +  print macro_Login($formatter,'',$options);
  +  $formatter->send_footer($args,$options);
  +}
  +
   // vim:et:sts=2:
   ?>
  
  
  


wkpark      2007/10/13 09:25:02

  Modified:    .        wiki.php config.php.default
  Log:
  $icon_list option added
  
  Revision  Changes    Path
  1.349     +28 -11    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.348
  retrieving revision 1.349
  diff -u -r1.348 -r1.349
  --- wiki.php	6 Oct 2007 02:10:38 -0000	1.348
  +++ wiki.php	13 Oct 2007 00:25:01 -0000	1.349
  @@ -1,5 +1,5 @@
   <?php
  -// Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
  +// Copyright 2003-2007 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING
   //
   // many codes are imported from the MoinMoin
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.348 2007/10/06 02:10:38 wkpark Exp $
  +// $Id: wiki.php,v 1.349 2007/10/13 00:25:01 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.348 $',1,-1);
  +$_revision = substr('$Revision: 1.349 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -736,14 +736,14 @@
   
       if (empty($this->icons)) {
         $this->icons=array(
  -              array("","?action=edit",$this->icon['edit'],"accesskey='e'"),
  -              array("","?action=diff",$this->icon['diff'],"accesskey='c'"),
  -              array("","",$this->icon['show']),
  -              array("FindPage","",$this->icon['find']),
  -              array("","?action=info",$this->icon['info']));
  +              'edit'=>array("","?action=edit",$this->icon['edit'],"accesskey='e'"),
  +              'diff'=>array("","?action=diff",$this->icon['diff'],"accesskey='c'"),
  +              'show'=>array("","",$this->icon['show']),
  +              'find'=>array("FindPage","",$this->icon['find']),
  +              'info'=>array("","?action=info",$this->icon['info']));
         if ($this->notify)
           $this->icons['subscribe']=array("","?action=subscribe",$this->icon['mailto']);
  -      $this->icons[]=array("HelpContents","",$this->icon['help']);
  +      $this->icons['help']=array("HelpContents","",$this->icon['help']);
         $this->icons['pref']=array("UserPreferences","",$this->icon['pref']);
       }
       $config=get_object_vars($this); // merge default settings to $config
  @@ -1863,7 +1863,10 @@
       }
   
       if (!$this->icons) {
  -      $this->icons=&$DBInfo->icons;
  +      $this->icons=$DBInfo->icons ? $DBInfo->icons:null;
  +    }
  +    if (!$this->icon_list) {
  +      $this->icon_list=$DBInfo->icon_list ? $DBInfo->icon_list:null;
       }
       if (!$this->purple_icon) {
         $this->purple_icon=$DBInfo->purple_icon;
  @@ -4080,7 +4083,21 @@
   
       if ($this->icons) {
         $icon=array();
  -      foreach ($this->icons as $item) {
  +      $myicons=array();
  +
  +      if ($this->icon_list) {
  +        $inames=explode(',',$this->icon_list);
  +        foreach ($inames as $item) {
  +          if (isset($this->icons[$item])) {
  +            $myicons[$item]=$this->icons[$item];
  +          } else if (isset($this->icon[$item])) {
  +            $myicons[$item]= array("",'?action='.$item,$this->icon[$item]);
  +          }
  +        }
  +      } else {
  +        $myicons=&$this->icons;
  +      }
  +      foreach ($myicons as $item) {
           if ($item[3]) $attr=$item[3];
           else $attr='';
           $icon[]=$this->link_tag($item[0],$item[1],$item[2],$attr);
  
  
  
  1.40      +3 -2      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.39
  retrieving revision 1.40
  diff -u -r1.39 -r1.40
  --- config.php.default	27 Sep 2007 12:40:15 -0000	1.39
  +++ config.php.default	13 Oct 2007 00:25:01 -0000	1.40
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.39 2007/09/27 12:40:15 wkpark Exp $
  +# $Id: config.php.default,v 1.40 2007/10/13 00:25:01 wkpark Exp $
   #
   $sitename='UnnamedWiki'; # site name
   $data_dir= './data';
  @@ -48,7 +48,7 @@
   $use_twinpages=1;
   $use_trackback=0;
   $vim_options='+"set expandtab" +"retab"';
  -$pds_allowed="png|jpg|jpeg|gif|mp3|zip|tgz|gz|txt|css|exe|hwp|pdf";
  +$pds_allowed="png|jpg|jpeg|gif|mp3|zip|tgz|gz|txt|css|exe|hwp|pdf|flv";
   #$vim_options='+"set encoding=UTF-8"'; # for UTF-8 wikis
   $nonexists='fancy';
   #$nonexists='nolink'; # do not link non exists pages
  @@ -220,4 +220,5 @@
   #$use_rating=1; # builtin Rating support
   $use_jwmediaplayer=1;
   $jwmediaplayer_prefix='http://www.jeroenwijering.com/embed';
  +#$icon_list='edit,diff,show,find,print,info,help'; # set the icon list
   ?>
  
  
  


wkpark      2007/10/13 09:25:53

  Modified:    plugin   userform.php
  Log:
  $use_refresh option added
  
  Revision  Changes    Path
  1.19      +11 -2     moniwiki/plugin/userform.php
  
  Index: userform.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/userform.php,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- userform.php	12 Jan 2007 16:28:18 -0000	1.18
  +++ userform.php	13 Oct 2007 00:25:53 -0000	1.19
  @@ -4,7 +4,7 @@
   // a userform action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: userform.php,v 1.18 2007/01/12 16:28:18 wkpark Exp $
  +// $Id: userform.php,v 1.19 2007/10/13 00:25:53 wkpark Exp $
   
   function do_userform($formatter,$options) {
     global $DBInfo;
  @@ -88,6 +88,7 @@
           $formatter->header($user->setCookie());
   
           $userdb->saveUser($user); # XXX
  +        $use_refresh=1;
         } else {
           $title = sprintf(_("Invalid password !"));
         }
  @@ -102,6 +103,7 @@
       # logout
       $formatter->header($user->unsetCookie());
       $options['msg']= _("Cookie deleted !");
  +    $use_refresh=1;
     } else if ($DBInfo->use_sendmail and
       $options['login'] == _("E-mail new password") and
       $user->id=="Anonymous" and $options['email'] and $options['login_id']) {
  @@ -350,7 +352,14 @@
         $options['msg']=_("Profiles are saved successfully !");
     }
   
  -  $formatter->send_header("",$options);
  +  $myrefresh='';
  +  if ($DBInfo->use_refresh and $use_refresh) {
  +    $sec=$DBInfo->use_refresh - 1;
  +    $lnk=$formatter->link_url($formatter->page->urlname,'?action=show');
  +    $myrefresh='Refresh: '.$sec.'; url='.qualifiedURL($lnk);
  +  }
  +
  +  $formatter->send_header($myrefresh,$options);
     $formatter->send_title($title,"",$options);
     if (!$title && (!$DBInfo->control_read or $DBInfo->security->is_allowed('read',$options)) ) {
       $formatter->send_page();
  
  
  


wkpark      2007/10/13 09:28:25

  Modified:    plugin   UploadFile.php
  Log:
  add some msgs
  
  Revision  Changes    Path
  1.34      +10 -5     moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- UploadFile.php	11 Oct 2007 09:10:29 -0000	1.33
  +++ UploadFile.php	13 Oct 2007 00:28:25 -0000	1.34
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.33 2007/10/11 09:10:29 wkpark Exp $
  +// $Id: UploadFile.php,v 1.34 2007/10/13 00:28:25 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -261,8 +261,8 @@
       print $msg;
     }
   
  -  $formatter->send_footer();
     print $js;
  +  $formatter->send_footer();
   
     if (is_array($options['MYFILES']) and !$DBInfo->nosession)
       session_destroy();
  @@ -299,21 +299,26 @@
   
     $form="<form enctype='multipart/form-data' method='post' action='$url'>\n";
     $form.="<input type='hidden' name='action' value='UploadFile' />\n";
  +  $msg1=_("Replace original file");
  +  $msg2=_("Rename if it already exist");
     for ($j=0;$j<$count;$j++) {
       if ($count > 1) $suffix="[$j]";
       if ($options['rename'][$j]) {
         $rename=_stripslashes($options['rename'][$j]);
  -      $extra="<input name='rename$suffix' value='$rename' />"._(": Rename")."<br />";
  +      $extra="<input name='rename$suffix' value='$rename' />: "._("Rename")."<br />";
       } else $extra='';
       $form.= <<<EOF
      <input type='file' name='upfile$suffix' size='30' />
   EOF;
       if ($count == 1) $form.="<input type='submit' value='Upload' />";
  +
  +    if (1 or $DBInfo->use_swfupload)
  +      $form.=' '.sprintf(_("or %s."),$formatter->link_to("?action=swfupload"),_("Upload files"));
       $form.= <<<EOF
   <br/>
      $extra
  -   <input type='radio' name='replace$suffix' value='1' />Replace original file<br />
  -   <input type='radio' name='replace$suffix' value='0' checked='checked' />Rename if it already exist<br />\n
  +   <input type='radio' name='replace$suffix' value='1' />$msg1<br />
  +   <input type='radio' name='replace$suffix' value='0' checked='checked' />$msg2<br />\n
   EOF;
     }
     if ($count > 1) $form.="<input type='submit' value='Upload files' />";
  
  
  


wkpark      2007/10/13 09:29:39

  Modified:    plugin   SWFUpload.php
  Log:
  fixed do_SWFUpload
  
  Revision  Changes    Path
  1.7       +8 -3      moniwiki/plugin/SWFUpload.php
  
  Index: SWFUpload.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SWFUpload.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SWFUpload.php	11 Oct 2007 09:10:29 -0000	1.6
  +++ SWFUpload.php	13 Oct 2007 00:29:39 -0000	1.7
  @@ -8,12 +8,12 @@
   // Name: SWF Upload
   // Description: SWF Upload Plugin
   // URL: http://labb.dev.mammon.se/swfupload/ MoniWikiDev:SWFUpload
  -// Version: $Revision: 1.6 $
  +// Version: $Revision: 1.7 $
   // License: GPL
   //
   // Usage: [[SWFUpload]]
   //
  -// $Id: SWFUpload.php,v 1.6 2007/10/11 09:10:29 wkpark Exp $
  +// $Id: SWFUpload.php,v 1.7 2007/10/13 00:29:39 wkpark Exp $
   
   function macro_SWFUpload($formatter,$value) {
       global $DBInfo;
  @@ -204,7 +204,12 @@
           $options['_pds_remove']=1; // remove all files in pds dir
           do_UploadFile($formatter,$options);
       } else {
  -        echo "Error";
  +        $formatter->send_header("",$options);
  +        $formatter->send_title("","",$options);
  +        print macro_SWFUpload($formatter,'');
  +        if (!in_array('UploadedFiles',$formatter->actions))
  +            $formatter->actions[]='UploadedFiles';
  +        $formatter->send_footer("",$options);
       }
   }
   
  
  
  


wkpark      2007/10/15 14:01:15

  Modified:    local    autocomplete.js
  Log:
  support the mootools's autocompleter.
  Please see http://digitarald.de/project/autocompleter/
  
  Revision  Changes    Path
  1.2       +126 -14   moniwiki/local/autocomplete.js
  
  Index: autocomplete.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/autocomplete.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- autocomplete.js	6 Oct 2007 02:13:24 -0000	1.1
  +++ autocomplete.js	15 Oct 2007 05:01:15 -0000	1.2
  @@ -1,6 +1,6 @@
   //
  -// Moniwiki Autocompleter using the scriptaculous
  -// $Id: autocomplete.js,v 1.1 2007/10/06 02:13:24 wkpark Exp $
  +// Moniwiki Autocompleter using the scriptaculous or Mootools
  +// $Id: autocomplete.js,v 1.2 2007/10/15 05:01:15 wkpark Exp $
   //
   
   function setGotoFormId(formid,id) {
  @@ -21,8 +21,8 @@
       return false;
   }
   
  -
  -Ajax.Autocompleter.prototype.onKeyPress = function(event) {
  +if (Ajax.Autocompleter) { // for prototype.js
  +    Ajax.Autocompleter.prototype.onKeyPress = function(event) {
       if(this.active)
           switch(event.keyCode) {
           case Event.KEY_TAB:
  @@ -76,22 +76,134 @@
       if(this.observer) clearTimeout(this.observer);
           this.observer =
               setTimeout(this.onObserverEvent.bind(this), this.options.frequency*1000);
  +    }
  +} else { // mootools r1.11
  +    Autocompleter.Ajax.Moni = Autocompleter.Ajax.Base.extend({
  +        options: {
  +            parseChoices: null
  +        },
  +    
  +        queryResponse: function(resp) {
  +            // workaround for moniwiki
  +            var tmp = new Element('ul');
  +            tmp.setHTML(resp);
  +            resp = tmp.getFirst().innerHTML;
  +            //
  +            this.parent(resp);
  +            if (!resp) return;
  +            this.choices.setHTML(resp).getChildren().each(this.options.parseChoices || this.parseChoices, this);
  +            this.showChoices();
  +        },
  +
  +        parseChoices: function(el) {
  +            var value = el.innerHTML;
  +            el.inputValue = value;
  +            el.setHTML(this.markQueryValue(value));
  +        },
  +
  +        onCommand: function(e, mouse) {
  +            if (mouse && this.focussed) this.prefetch();
  +
  +            if (e.key && !document.all && e.code != 229) { // FIXME
  +                if (this.mozFixKeydown) {
  +                    clearInterval(this.mozFixKeydown);
  +                }
  +                this.mozFixKeydown= null;
  +            }
  +
  +            if (e.key && !e.shift) switch (e.key) {
  +                case 'enter':
  +                    if (this.selected && this.visible) {
  +                        this.choiceSelect(this.selected);
  +                        e.stop();
  +                    } return;
  +                case 'up': case 'down':
  +                    if (this.queryValue === null) break;
  +                    else if (!this.visible) this.showChoices();
  +                    else {
  +                        if (this.observer.value != (this.value || this.queryValue)) {
  +                            this.prefetch();
  +                        }
  +                        this.choiceOver((e.key == 'up')
  +                            ? this.selected.getPrevious() || this.choices.getLast()
  +                            : this.selected.getNext() || this.choices.getFirst() );
  +                        this.setSelection();
  +                    }
  +                    e.stop(); return;
  +                case 'esc': this.hideChoices(); return;
  +            }
  +
  +            if (e.key && !document.all) { // mozilla hack to workaround keypress/keydown event problem with IME
  +                if (e.code == 229) {
  +                    var self=this;
  +                    // FIXME
  +                    if (this.mozFixKeydown == null) {
  +                        this.mozFixKeydown = setInterval(function() {
  +                            self.prefetch();
  +                        }, 1000);
  +                    }
  +                } else {
  +                    if (this.mozFixKeydown) {
  +                        clearInterval(this.mozFixKeydown);
  +                    }
  +                    this.mozFixKeydown= null;
  +                }
  +            }
  +    
  +            this.value = false;
  +        },
  +        setSelection: function() {
  +            if (!this.options.useSelection) return;
  +            var startLength = this.queryValue.length;
  +            //if (this.element.value.indexOf(this.queryValue) != 0) return;
  +            var insert = this.selected.inputValue.substr(startLength);
  +            if (document.getSelection) {
  +                this.element.value = this.selected.inputValue;
  +                //this.element.value = this.queryValue + insert;
  +                this.element.selectionStart = startLength;
  +                this.element.selectionEnd = this.element.value.length;
  +            } else if (document.selection) {
  +                var sel = document.selection.createRange();
  +                sel.text = insert;
  +                sel.move("character", - insert.length);
  +                sel.findText(insert);
  +                sel.select();
  +            }
  +
  +            this.value = this.observer.value = this.element.value;
  +        },
  +    });
   }
   
  +
   function initGotoAutoCompleter(id,choiceid,action,method) {
       if (id == null || id == undefined)
           return false;
   
  -    if (typeof id == 'string')
  -        if (!document.getElementById(id)) return false;
  -    var div= document.createElement('div');
  -    div.setAttribute('id',choiceid);
  -    div.setAttribute('class','autocomplete');
  -    div.setAttribute('style','display: none');
  -    document.body.appendChild(div);
  -
  -    var ac= new Ajax.Autocompleter(id, choiceid,
  -        action, {method: method,paramName: 'q',minChars: 1});
  +    if (Ajax.Autocompleter) { // for prototype.js
  +        if (typeof id == 'string')
  +            if (!document.getElementById(id)) return false;
  +        var div= document.createElement('div');
  +        div.setAttribute('id',choiceid);
  +        div.setAttribute('class','autocomplete');
  +        div.setAttribute('style','display: none');
  +        document.body.appendChild(div);
  +
  +        var ac= new Ajax.Autocompleter(id, choiceid,
  +            action, {method: method,paramName: 'q',minChars: 1});
  +    } else { // mootools
  +       var ac = new Autocompleter.Ajax.Moni(id, action, {
  +            'postData': {html: 1},
  +            'postVar': 'q',
  +            'ajaxOptions': {method: method},
  +            'parseChoices': function(el) {
  +                var value = el.innerHTML;
  +                el.inputValue = value;
  +                // add mouseover events
  +                this.addChoiceEvents(el).setHTML(this.markQueryValue(value));
  +            }
  +        });
  +    }
   
       return true;
   }
  
  
  


wkpark      2007/10/15 20:03:05

  Modified:    local    subindex.js
  Log:
  support mootools
  
  Revision  Changes    Path
  1.3       +30 -10    moniwiki/local/subindex.js
  
  Index: subindex.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/subindex.js,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- subindex.js	8 Oct 2007 14:16:09 -0000	1.2
  +++ subindex.js	15 Oct 2007 11:03:05 -0000	1.3
  @@ -1,3 +1,8 @@
  +/**
  + Support subpage index for MoniWiki with prototype.js or mootools.
  + by wkpark@kldp.org
  +
  +*/
   function toggleSubIndex(id)
   {
       var subindex;
  @@ -6,6 +11,7 @@
       if (!subindex) return;
       var mode='',toggle='';
   
  +    var icon=subindex.getElementsByTagName('legend')[0];
       if (subindex) {
           var sub=subindex.getElementsByTagName('div')[0];
           if (sub) {
  @@ -18,10 +24,12 @@
               } else if (mode) {
                   toggle=true;
               }
  -            if (toggle) {
  -	        new Effect.SlideDown(sub, { duration: 0.3, afterFinish: function() {Element.show(sub);} });
  -            } else {
  -	        new Effect.SlideUp(sub, { duration: 0.3, afterFinish: function() {Element.hide(sub);} });
  +            if (typeof Effect != 'undefined') { // prototype.js
  +                if (toggle) {
  +	            new Effect.SlideDown(sub, { duration: 0.3, afterFinish: function() {Element.show(sub);} });
  +                } else {
  +	            new Effect.SlideUp(sub, { duration: 0.3, afterFinish: function() {Element.hide(sub);} });
  +                }
               }
           } else { // get subpages for the first time.
               var sub=document.createElement('div');
  @@ -32,18 +40,30 @@
   
               var form=HTTPGet(href);
               sub.innerHTML=form;
  -            sub.setAttribute('style','display:none');
               subindex.appendChild(sub);
   
  -	    new Effect.SlideDown(sub, { duration: 0.4,afterFinish: function() {Element.show(sub);} });
  +            if (typeof Effect != 'undefined') { // prototype.js
  +                sub.setAttribute('style','display:none');
  +	        new Effect.SlideDown(sub, { duration: 0.4,afterFinish: function() {Element.show(sub);} });
  +            } else { // mootools
  +                var mySlide = new Fx.Slide(sub);
  +                mySlide.wrapper.setStyle('height',0);
  +
  +                icon.addEvent('click',function(e) {
  +                    e = new Event(e);
  +                    mySlide.toggle();
  +                    e.stop();
  +                });
  +                mySlide.slideIn();
  +            }
               toggle=true;
           }
  -        var icon=subindex.getElementsByTagName('legend')[0];
           if (icon) {
  -            if (toggle)
  -                icon.setAttribute('class','close');
  -            else
  +            var name=icon.getAttribute('class');
  +            if (name == 'close')
                   icon.setAttribute('class','');
  +            else
  +                icon.setAttribute('class','close');
           }
       }
   }
  
  
  


wkpark      2007/10/15 22:55:03

  Modified:    plugin   FullSearch.php
  Log:
  fixed PR #301343 reported by hey.
  
  Revision  Changes    Path
  1.23      +19 -10    moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- FullSearch.php	16 Jul 2006 14:47:09 -0000	1.22
  +++ FullSearch.php	15 Oct 2007 13:55:03 -0000	1.23
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
   //
  -// $Id: FullSearch.php,v 1.22 2006/07/16 14:47:09 wkpark Exp $
  +// $Id: FullSearch.php,v 1.23 2007/10/15 13:55:03 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
  @@ -81,24 +81,25 @@
        return $form;
     }
     # XXX
  +  $excl = array();
  +  $incl = array();
  +
  +  $test1 = $test2 = true;
     if ($opts['noexpr']) {
       $tmp=preg_split("/\s+/",$needle);
       $needle=$value=join('|',$tmp);
       $raw_needle=implode(' ',$tmp);
       $needle=_preg_search_escape($needle);
  -  } else {
  -    $needle=_preg_search_escape($needle);
  +  } else if (!$opts['backlinks']) {
       $terms = preg_split('/((?<!\S)[-+]?"[^"]+?"(?!\S)|\S+)/s',$needle,-1,
         PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);
   
       $common_words=array('the','that','where','what','who','how','too','are');
  -    $excl = array();
  -    $incl = array();
       $common = array();
       foreach($terms as $term) {
         if (trim($term)=='') continue;
         if (preg_match('/^([-+]?)("?)([^\\2]+?)\\2$/',$term,$match)) {
  -        $word=str_replace(array('/','-','\\','.','*'),'',$match[3]);
  +        $word=str_replace(array('-','\\','.','*'),'',$match[3]);
           $len=strlen($word);
   
           if (!$match[1] and $match[2] != '"') {
  @@ -113,17 +114,22 @@
         }
       }
       $needle=implode('|',$incl);
  +    $needle=_preg_search_escape($needle);
  +
       $raw_needle=implode(' ',$incl);
       $excl_needle=implode('|',$excl);
  +
  +    $test2=@preg_match("/$excl_needle/","",$match);
  +  } else {
  +    $needle=_preg_search_escape($needle);
     }
   
     $test=@preg_match("/$needle/","",$match);
  -  $test2=@preg_match("/$excl_needle/","",$match);
     if (!trim($needle)) {
        $opts['msg'] = _("Empty expression");
        return $form;
     }
  -  if (!$needle or $test === false or $test2 === false) {
  +  if ($test === false or $test2 === false) {
        $opts['msg'] = sprintf(_("Invalid search expression \"%s\""), $needle);
        return $form;
     }
  @@ -185,7 +191,7 @@
        foreach ($pages as $page_name) {
          $links=unserialize($cache->fetch($page_name));
          if (is_array($links)) {
  -         if (stristr(implode(' ',$links),$needle))
  +         if (stristr(implode(' ',$links),$value))
              $hits[$page_name] = -1;
              // ignore count if < 0
          }
  @@ -211,7 +217,10 @@
          $body= $p->_get_raw_body();
          #$count = count(preg_split($pattern, $body))-1;
          $count = preg_match_all($pattern, $body,$matches);
  +
          if ($count) {
  +         foreach($excl as $ex) if (stristr($body,$ex)) continue;
  +         foreach($incl as $in) if (!stristr($body,$in)) continue;
            $hits[$page_name] = $count;
          }
        }
  @@ -233,7 +242,7 @@
       if ($opts['checkbox']) $checkbox="<input type='checkbox' name='pagenames[]' value='$page_name' />";
       $out.= '<!-- RESULT ITEM START -->'; // for search plugin
       $out.= '<li>'.$checkbox.$formatter->link_tag(_rawurlencode($page_name),
  -          '?action=highlight&amp;value='._urlencode($needle),
  +          '?action=highlight&amp;value='._urlencode($value),
             $page_name,'tabindex="'.$idx.'"');
       if ($count > 0)
         $out.= ' . . . . ' . $count . (($count == 1) ? ' match' : ' matches');
  
  
  


wkpark      2007/10/16 00:37:10

  Modified:    local    autocomplete.js
  Log:
  IE fix
  check the goto form exist or not
  
  Revision  Changes    Path
  1.3       +6 -5      moniwiki/local/autocomplete.js
  
  Index: autocomplete.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/autocomplete.js,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- autocomplete.js	15 Oct 2007 05:01:15 -0000	1.2
  +++ autocomplete.js	15 Oct 2007 15:37:10 -0000	1.3
  @@ -1,6 +1,6 @@
   //
   // Moniwiki Autocompleter using the scriptaculous or Mootools
  -// $Id: autocomplete.js,v 1.2 2007/10/15 05:01:15 wkpark Exp $
  +// $Id: autocomplete.js,v 1.3 2007/10/15 15:37:10 wkpark Exp $
   //
   
   function setGotoFormId(formid,id) {
  @@ -14,7 +14,7 @@
           for (var i=0;i<val.length;i++) {
               if (val[i].name== 'value') {
                   val[i].setAttribute('id',id);
  -                return;
  +                return true;
               }
           }
       }
  @@ -171,7 +171,7 @@
               }
   
               this.value = this.observer.value = this.element.value;
  -        },
  +        }
       });
   }
   
  @@ -217,8 +217,9 @@
   
   window.onload = function() {
       _oldOnload();
  -    setGotoFormId('go','autocomplete_goto');
  -    initGotoAutoCompleter('autocomplete_goto','autocomplete_choices',"?action=titleindex",'get');
  +    if (setGotoFormId('go','autocomplete_goto')) {
  +        initGotoAutoCompleter('autocomplete_goto','autocomplete_choices',"?action=titleindex",'get');
  +    }
   }
   
   // vim:et:sts=4:sw:
  
  
  


wkpark      2007/10/16 20:25:39

  Modified:    .        wiki.php wikilib.php config.php.default
  Log:
  support the WikiWyg with a blog action.
  revert wiki.php behavior with ajax actions.
  
  Revision  Changes    Path
  1.350     +14 -5     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.349
  retrieving revision 1.350
  diff -u -r1.349 -r1.350
  --- wiki.php	13 Oct 2007 00:25:01 -0000	1.349
  +++ wiki.php	16 Oct 2007 11:25:38 -0000	1.350
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.349 2007/10/13 00:25:01 wkpark Exp $
  +// $Id: wiki.php,v 1.350 2007/10/16 11:25:38 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.349 $',1,-1);
  +$_revision = substr('$Revision: 1.350 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -1559,7 +1559,7 @@
           $out.="See MoniWiki/AccessControl\n";
           return $out;
         }
  -      $out=_("File does not exists");
  +      $out=_("File does not exist");
         return $out;
       }
       $this->fsize=filesize($this->filename);
  @@ -2591,14 +2591,17 @@
     }
   
     function ajax_repl($plugin,$options='') {
  -    if (!function_exists('ajax_'.$plugin) and !function_exists('macro_'.$plugin)) {
  +    if (!function_exists('ajax_'.$plugin) and !function_exists('do_'.$plugin)) {
         $ff=getPlugin($plugin);
         if (!$ff)
           return ajax_invalid($this,array('title'=>_("Invalid ajax action.")));
         include_once("plugin/$ff.php");
       }
       if (!function_exists ('ajax_'.$plugin)) {
  -      if (function_exists('macro_'.$plugin)) {
  +      if (function_exists('do_'.$plugin)) {
  +        call_user_func('do_'.$plugin,$this,$options);
  +        return;
  +      } else if (function_exists('macro_'.$plugin)) {
           print call_user_func_array('macro_'.$plugin,array(&$this,'',$options));
           return;
         }
  @@ -3614,6 +3617,8 @@
   #    if (!$plain)
   #      $this->header('Content-type: '.$content_type);
   
  +    if ($options['action_mode']=='ajax') return;
  +
       if (isset($this->pi['#noindex'])) {
         $metatags='<meta name="robots" content="noindex,nofollow" />';
       } else {
  @@ -3834,6 +3839,8 @@
     function send_footer($args='',$options='') {
       global $DBInfo;
   
  +    if ($options['action_mode']=='ajax') return;
  +
       print "<!-- wikiBody --></div>\n";
       print $DBInfo->hr;
       if ($args['editable'] and !$DBInfo->security->writable($options))
  @@ -3907,6 +3914,8 @@
       // Generate and output the top part of the HTML page.
       global $DBInfo;
   
  +    if ($options['action_mode']=='ajax') return;
  +
       $name=$this->page->urlname;
       $action=$this->link_url($name);
       $saved_pagelinks = $this->pagelinks;
  
  
  
  1.225     +11 -5     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.224
  retrieving revision 1.225
  diff -u -r1.224 -r1.225
  --- wikilib.php	1 Aug 2007 01:13:20 -0000	1.224
  +++ wikilib.php	16 Oct 2007 11:25:38 -0000	1.225
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.224 2007/08/01 01:13:20 keizie Exp $
  +// $Id: wikilib.php,v 1.225 2007/10/16 11:25:38 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -646,7 +646,7 @@
       $sec=' (Section)';
     $formatter->send_title(sprintf(_("Edit %s"),$options['page']).$sec,"",$options);
     print '<div id="editor_area">'.macro_EditText($formatter,$value,$options).'</div>';
  -  if ($DBInfo->use_wikiwyg==1)
  +  if ($DBInfo->use_wikiwyg>=2)
       print <<<JS
   <script type='text/javascript'>
   /*<![CDATA[*/
  @@ -904,6 +904,12 @@
   
   
   function do_invalid($formatter,$options) {
  +
  +  if ($options['action_mode'] == 'ajax') {
  +    ajax_invalid($formatter,$options);
  +    return;
  +  }
  +
     $formatter->send_header("Status: 406 Not Acceptable",$options);
     if ($options['title'])
       $formatter->send_title('',"",$options);
  @@ -1087,7 +1093,7 @@
     if (preg_match("/^(http:\/\/|ftp:\/\/)/",$options['value'])) {
        $options['url']=$options['value'];
        unset($options['value']);
  -  } else if (preg_match("/^(".$DBInfo->interwikirule."):(.*)/",$options[value],$match)) {
  +  } else if (preg_match("/^(".$DBInfo->interwikirule."):(.*)/",$options['value'],$match)) {
       $url=$DBInfo->interwiki[$match[1]];
       if ($url) {
         $page=trim($match[2]);
  @@ -1157,7 +1163,7 @@
     global $DBInfo;
   
     if (isset($options['q'])) {
  -    if (!$options['q']) return "<ul></ul>";
  +    if (!$options['q']) { print "<ul></ul>"; return; }
   
       $val='';
       $rule='';
  @@ -1179,7 +1185,7 @@
       if (!$rule) $rule=$options['q'];
   
       $test=@preg_match("/^$rule/",'');
  -    if ($test === false) return "<ul></ul>";
  +    if ($test === false) { print "<ul></ul>"; return; }
   
       $pages= array();
   
  
  
  
  1.41      +3 -1      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- config.php.default	13 Oct 2007 00:25:01 -0000	1.40
  +++ config.php.default	16 Oct 2007 11:25:38 -0000	1.41
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.40 2007/10/13 00:25:01 wkpark Exp $
  +# $Id: config.php.default,v 1.41 2007/10/16 11:25:38 wkpark Exp $
   #
   $sitename='UnnamedWiki'; # site name
   $data_dir= './data';
  @@ -153,6 +153,7 @@
   #$auto_search='FixMoin'; # for old moinmoin users
   #$auto_search='AutoGoto';
   #$hr_type='fancy';
  +$use_wikiwyg=1; # 1 for GUI button/ 2 to set as default behavior/ 3 to set always use GUI.
   $use_sectionedit=0;
   #$sectionedit_attr=1; # enable wikiwyg section editing
   $spam_filter='antispam';
  @@ -208,6 +209,7 @@
   #$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;
   #$cache_public_dir='./_cache'; # enhanced caching
   #$no_404=1; # for IIS
   #$nofancy_404=1; # simplified 404 msg for robots etc.
  
  
  


wkpark      2007/10/16 20:25:39

  Modified:    plugin   Blog.php
  Log:
  support the WikiWyg with a blog action.
  revert wiki.php behavior with ajax actions.
  
  Revision  Changes    Path
  1.32      +43 -7     moniwiki/plugin/Blog.php
  
  Index: Blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Blog.php,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- Blog.php	31 Oct 2006 01:54:17 -0000	1.31
  +++ Blog.php	16 Oct 2007 11:25:39 -0000	1.32
  @@ -5,7 +5,7 @@
   //
   // Usage: ?action=Blog
   //
  -// $Id: Blog.php,v 1.31 2006/10/31 01:54:17 pyrasis Exp $
  +// $Id: Blog.php,v 1.32 2007/10/16 11:25:39 wkpark Exp $
   
   function updateBlogList($formatter) {
     global $DBInfo;
  @@ -159,8 +159,13 @@
         // check timestamp
         if ($formatter->page->mtime() > $datestamp) {
           $options['msg']='';
  -        $formatter->send_title(_("Error: Don't make a clone!"),"",$options);
  -        $formatter->send_footer("",$options);
  +        if ($options['action_mode']=='ajax') {
  +          print "false\n";
  +          print _("Error: Don't make a clone!");
  +        } else {
  +          $formatter->send_title(_("Error: Don't make a clone!"),"",$options);
  +          $formatter->send_footer("",$options);
  +        }
           return;
         }
   
  @@ -187,7 +192,11 @@
       $DBInfo->savePage($formatter->page,$log,$options);
       updateBlogList($formatter);
   
  -    $formatter->send_page();
  +    if ($options['action_mode']=='ajax') {
  +      print "true\n";
  +      print $options['msg'];
  +    } else
  +      $formatter->send_page();
     } else { # add entry or comment
       if ($options['value']) {
         $raw_body=$formatter->page->_get_raw_body();
  @@ -232,6 +241,7 @@
   
       if ($options['value'])
         print "<a name='BlogComment'></a>";
  +    print '<div id="editor_area">';
       print "<form method='post' action='$url'>\n";
       if ($options['id'] == 'Anonymous')
         print '<b>'._("Name")."</b>: <input name='name' size='15' maxlength='15' value='$options[name]' />\n";
  @@ -239,6 +249,12 @@
         print "<input type='hidden' name='value' value='$options[value]' />\n";
       else
         print '<b>'._("Title")."</b>: <input name='title' value='$options[title]' size='70' maxlength='70' style='width:300px' /><br />\n";
  +    $savetext=$savetext ? $savetext:'Enter blog entry';
  +    if ($DBInfo->use_wikiwyg) {
  +      $wysiwyg_msg=_("GUI");
  +      $wysiwyg_btn.='&nbsp;<input type="button" tabindex="7" value="'.$wysiwyg_msg.
  +        '" onclick="javascript:sectionEdit(null,null,null)" />';
  +    }
       print <<<FORM
   <textarea class="wiki" id="content" wrap="virtual" name="savetext"
    rows="$rows" cols="$cols" class="wiki">$savetext</textarea><br />
  @@ -250,9 +266,18 @@
   <input type="hidden" name="datestamp" value="$datestamp" />
   <input type="submit" value="Save" />&nbsp;
   <input type="submit" name="button_preview" value="Preview" />
  -$extra
  +$wysiwyg_btn$extra
   </form>
  +</div>
   FORM2;
  +    if ($DBInfo->use_wikiwyg>=3)
  +      print <<<JS
  +<script type='text/javascript'>
  +/*<![CDATA[*/
  +sectionEdit(null,null,null);
  +/*]]>*/
  +</script>
  +JS;
     }
     if (!$savetext) {
       #print $formatter->macro_repl('SmileyChooser');
  @@ -269,6 +294,7 @@
   }
   
   function macro_Blog($formatter,$value) {
  +  global $DBInfo;
     $COLS_MSIE = 80;
     $COLS_OTHER = 85;
     $cols = preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']) ? $COLS_MSIE : $COLS_OTHER;
  @@ -287,7 +313,8 @@
       $extra='<div style="text-align:right">'.'
         <input type="submit" name="button_refresh" value="Refresh" /></div>';
   
  -  $form = "<form method='post' action='$url'>\n";
  +  $form = '<div id="editor_area">';
  +  $form.= "<form method='post' action='$url'>\n";
     if ($options['id'] == 'Anonymous')
       $form.='<b>'._("Name")."</b>: <input name='name' size='15' maxlength='15' value='$options[name]' />\n";
     $form.= '<b>'._("Title")."</b>: <input name='title' size='70' maxlength='70' style='width:200' /><br />\n";
  @@ -302,9 +329,18 @@
   <input type="submit" name="button_preview" value="Preview" />
   $extra
   </form>
  +</div>
   FORM2;
  +  if ($DBInfo->use_wikiwyg >=3)
  +    $JS=<<<JS
  +<script type='text/javascript'>
  +/*<![CDATA[*/
  +sectionEdit(null,null,null);
  +/*]]>*/
  +</script>
  +JS;
   
  -  return $form;
  +  return $form.$JS;
   }
   
   // vim:et:sts=2:
  
  
  


wkpark      2007/10/16 20:25:39

  Modified:    local    moniwyg.js
  Log:
  support the WikiWyg with a blog action.
  revert wiki.php behavior with ajax actions.
  
  Revision  Changes    Path
  1.14      +7 -4      moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- moniwyg.js	8 Oct 2007 16:35:04 -0000	1.13
  +++ moniwyg.js	16 Oct 2007 11:25:39 -0000	1.14
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.13 2007/10/08 16:35:04 wkpark Exp $
  +// $Id: moniwyg.js,v 1.14 2007/10/16 11:25:39 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -28,12 +28,15 @@
       }
   
       var datestamp='';
  +    var myaction='';
       var section=null;
       for (var i=0;i<this.myinput.length;i++) {
           if (this.myinput[i].name == 'datestamp')
               datestamp=this.myinput[i].value;
  -        if (this.myinput[i].name == 'section')
  -        section=this.myinput[i].value;
  +        else if (this.myinput[i].name == 'section')
  +            section=this.myinput[i].value;
  +        else if (this.myinput[i].name == 'action')
  +            myaction=this.myinput[i].value;
       }
       //alert(datestamp+'/'+section);
   
  @@ -41,7 +44,7 @@
           function(new_html) { self.div.innerHTML = new_html });
   
       // save
  -    var toSend = 'action=savepage/ajax' +
  +    var toSend = 'action=' + myaction + '/ajax' +
       '&savetext=' + encodeURIComponent(wikitext) +
       '&datestamp=' + datestamp;
   
  
  
  


wkpark      2007/10/16 20:30:11

  Modified:    plugin   Blog.php
  Log:
  fixed log entry for some blog entries without title
  
  Revision  Changes    Path
  1.33      +5 -2      moniwiki/plugin/Blog.php
  
  Index: Blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Blog.php,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- Blog.php	16 Oct 2007 11:25:39 -0000	1.32
  +++ Blog.php	16 Oct 2007 11:30:11 -0000	1.33
  @@ -5,7 +5,7 @@
   //
   // Usage: ?action=Blog
   //
  -// $Id: Blog.php,v 1.32 2007/10/16 11:25:39 wkpark Exp $
  +// $Id: Blog.php,v 1.33 2007/10/16 11:30:11 wkpark Exp $
   
   function updateBlogList($formatter) {
     global $DBInfo;
  @@ -185,7 +185,10 @@
         $log="Add Comment to \"$title\"";
       } else {
         $formatter->send_title(sprintf(_("Blog entry added to \"%s\""),$options['page']),"",$options);
  -      $log="Blog entry \"$options[title]\" added";
  +      if ($options['title'])
  +        $log=sprintf(_("Blog entry \"%s\" added"),$options['title']);
  +      else
  +        $log=_("Blog entry added");
       }
       
       $formatter->page->write($raw_body);
  
  
  


wkpark      2007/10/16 21:41:16

  Modified:    plugin   SmileyChooser.php
  Log:
  rename the js function appendText() to mySmiley() to use with mootools
  
  Revision  Changes    Path
  1.9       +3 -3      moniwiki/plugin/SmileyChooser.php
  
  Index: SmileyChooser.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SmileyChooser.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- SmileyChooser.php	7 Jan 2006 10:38:59 -0000	1.8
  +++ SmileyChooser.php	16 Oct 2007 12:41:16 -0000	1.9
  @@ -5,7 +5,7 @@
   //
   // Usage: [[SmileyChooser]]
   //
  -// $Id: SmileyChooser.php,v 1.8 2006/01/07 10:38:59 wkpark Exp $
  +// $Id: SmileyChooser.php,v 1.9 2007/10/16 12:41:16 wkpark Exp $
   
   function macro_SmileyChooser($formatter,$value) {
     global $DBInfo;
  @@ -17,7 +17,7 @@
   <script language="javascript" type="text/javascript">
   /*<![CDATA[*/
   // from wikibits.js
  -function appendText(myText)
  +function mySmiley(myText)
   {
     if (document.$form)
       var txtarea = document.$form.savetext;
  @@ -65,7 +65,7 @@
     while (list($key,$value) = each($DBInfo->smileys)) {
       if ($last_img != $value[3]) {
         $skey=str_replace(array("\\","'"),array("\\\\","&#39;"),$key);
  -      $chooser.= "<span onclick='appendText(\"$skey\")'>".$formatter->smiley_repl($key)."</span>&shy;";
  +      $chooser.= "<span onclick='mySmiley(\"$skey\")'>".$formatter->smiley_repl($key)."</span>&shy;";
         $last_img = $value[3];
         $idx++;
       }
  
  
  


wkpark      2007/10/17 15:36:16

  Modified:    plugin   UploadFile.php
  Log:
  rename $use_swfupload to $flashupload
  
  Revision  Changes    Path
  1.35      +4 -3      moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- UploadFile.php	13 Oct 2007 00:28:25 -0000	1.34
  +++ UploadFile.php	17 Oct 2007 06:36:16 -0000	1.35
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.34 2007/10/13 00:28:25 wkpark Exp $
  +// $Id: UploadFile.php,v 1.35 2007/10/17 06:36:16 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -269,6 +269,7 @@
   }
   
   function macro_UploadFile($formatter,$value='',$options='') {
  +  global $DBInfo;
     if ($value=='js') {
       return $formatter->macro_repl('UploadForm');
     } else if ($value=='swf') {
  @@ -312,8 +313,8 @@
   EOF;
       if ($count == 1) $form.="<input type='submit' value='Upload' />";
   
  -    if (1 or $DBInfo->use_swfupload)
  -      $form.=' '.sprintf(_("or %s."),$formatter->link_to("?action=swfupload"),_("Upload files"));
  +    if ($DBInfo->flashupload)
  +      $form.=' '.sprintf(_("or %s."),$formatter->link_to('?action='.$DBInfo->flashupload,_("Upload files")));
       $form.= <<<EOF
   <br/>
      $extra
  
  
  


wkpark      2007/10/17 15:36:52

  Modified:    plugin   UploadedFiles.php SmileyChooser.php
  Log:
  support WikiWyg now!
  
  Revision  Changes    Path
  1.22      +36 -37    moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- UploadedFiles.php	13 Oct 2007 00:19:39 -0000	1.21
  +++ UploadedFiles.php	17 Oct 2007 06:36:52 -0000	1.22
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadedFiles plugin for the MoniWiki
   //
  -// $Id: UploadedFiles.php,v 1.21 2007/10/13 00:19:39 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.22 2007/10/17 06:36:52 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     $list=macro_UploadedFiles($formatter,$options['page'],$options);
  @@ -44,12 +44,13 @@
        $use_preview=1;
      }
   
  -   if ($DBInfo->use_lightbox and !$js_tag)
  -     $href_attr=' rel="lightbox[upload]" ';
  -
      if ($options['tag']) { # javascript tag mode
        $js_tag=1;$use_preview=1;
      }
  +
  +   if ($DBInfo->use_lightbox and !$js_tag)
  +     $href_attr=' rel="lightbox[upload]" ';
  +
      foreach ($args as $arg) {
         $arg=trim($arg);
         if (($p=strpos($arg,'='))!==false) {
  @@ -73,47 +74,45 @@
   
   function insertTags(tagOpen,tagClose,myText,replaced)
   {
  -  if (document.$form)
  +  if (document.$form) {
       var txtarea = document.$form.savetext;
  -  else {
  +  } else {
  +
       // some alternate form? take the first one we can find
       var areas = document.getElementsByTagName('textarea');
       if (areas.length > 0) {
           var txtarea = areas[0];
  -    } else {
  +    } else if (opener) {
           // WikiWyg support
  -        var wikiwyg_area=opener.document.getElementById('wikiwyg_wikitext_textarea');
           if (opener.document.$form && opener.document.$form.savetext) {
  -            var txtarea = opener.document.$form.savetext;
  -        } else if (wikiwyg_area) {
  -            //
  -            var myWikiwyg = new opener.Wikiwyg.Wikitext();
  -            var wikitext;
  -            var i=0;
  -
  -            //for (i=0;i<opener.wikiwygs.length;i++) {
  -                var my = opener.wikiwygs[i];
  -
  -                my.current_mode.toHtml( function(html) { my.fromHtml(html) });
  -
  -                if (my.current_mode.classname.match(/(Wysiwyg|HTML|Preview)/)) {
  -                    my.current_mode.fromHtml(my.div.innerHTML);
  -
  -                    wikitext = myWikiwyg.convert_html_to_wikitext(my.div.innerHTML);
  -
  -                    var tmp= tagOpen + myText + tagClose;
  -                    var html= myWikiwyg.convertWikitextToHtml(tmp,
  -                        function(nhtml) { my.current_mode.insert_table(nhtml); });
  -                    opener.focus(); // XXX
  -                    return;
  -                } else {
  -                    wikitext = my.current_mode.textarea.value;
  -                }
  -            //}
  -            // XXX
  -            wikiwyg_area.value = wikitext;
  -            txtarea=wikiwyg_area;
  +            txtarea = opener.document.$form.savetext;
  +        } else {
  +            txtarea = opener.document.getElementsByTagName('textarea')[0];
           }
  +
  +        var my=opener.document.getElementById('editor_area');
  +        var mystyle=my.getAttribute('style');
  +        while (mystyle && mystyle.match(/display: none/i)) { // wikiwyg hack
  +            txtarea = opener.document.getElementById('wikiwyg_wikitext_textarea');
  +
  +            // get iframe and check visibility.
  +            var myframe = opener.document.getElementsByTagName('iframe')[0];
  +            mystyle = myframe.getAttribute('style');
  +            var check = mystyle && mystyle.match(/display: none/i);
  +            if (check) break;
  +
  +            var postdata = 'action=markup&value=' + encodeURIComponent(tagOpen + myText + tagClose);
  +            var myhtml='';
  +            myhtml= HTTPPost(self.location, postdata);
  +
  +            var mnew = myhtml.replace(/^<div>/i,''); // strip div tag
  +            mnew = mnew.replace(/<\/div>\s*$/i,''); // strip div tag
  +            myframe.contentWindow.document.execCommand('inserthtml', false, mnew + ' ');
  +
  +            return;
  +        }
  +    } else {
  +        return; // XXX
       }
     }
   
  
  
  
  1.10      +26 -1     moniwiki/plugin/SmileyChooser.php
  
  Index: SmileyChooser.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SmileyChooser.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- SmileyChooser.php	16 Oct 2007 12:41:16 -0000	1.9
  +++ SmileyChooser.php	17 Oct 2007 06:36:52 -0000	1.10
  @@ -5,7 +5,7 @@
   //
   // Usage: [[SmileyChooser]]
   //
  -// $Id: SmileyChooser.php,v 1.9 2007/10/16 12:41:16 wkpark Exp $
  +// $Id: SmileyChooser.php,v 1.10 2007/10/17 06:36:52 wkpark Exp $
   
   function macro_SmileyChooser($formatter,$value) {
     global $DBInfo;
  @@ -26,6 +26,31 @@
       var areas = document.getElementsByTagName('textarea');
       var txtarea = areas[0];
     }
  +
  +  // check WikiWyg
  +  var my=document.getElementById('editor_area');
  +  var mystyle=my.getAttribute('style');
  +  while (mystyle && mystyle.match(/display: none/i)) { // wikiwyg hack
  +    txtarea = document.getElementById('wikiwyg_wikitext_textarea');
  +
  +    // get iframe and check visibility.
  +    var myframe = document.getElementsByTagName('iframe')[0];
  +    mystyle = myframe.getAttribute('style');
  +    var check = mystyle && mystyle.match(/display: none/i);
  +    if (check) break;
  +
  +    var postdata = 'action=markup&value=' + encodeURIComponent(myText);
  +    var myhtml='';
  +    myhtml= HTTPPost(self.location, postdata);
  +
  +    var m = myhtml.match(/<div>(.*)\\n<\/div>/i); // strip div tag
  +    if (m) {
  +      myframe.contentWindow.document.execCommand('inserthtml', false, m[1] + ' ');
  +    }
  +
  +    return;
  +  }
  +
     if(document.selection && document.all) {
       var theSelection = document.selection.createRange().text;
       txtarea.focus();
  
  
  


wkpark      2007/10/17 16:43:21

  Modified:    local    moniwyg.js textarea.js
  Log:
  more integrated with MoniWiki
  
  Revision  Changes    Path
  1.15      +86 -3     moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- moniwyg.js	16 Oct 2007 11:25:39 -0000	1.14
  +++ moniwyg.js	17 Oct 2007 07:43:21 -0000	1.15
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.14 2007/10/16 11:25:39 wkpark Exp $
  +// $Id: moniwyg.js,v 1.15 2007/10/17 07:43:21 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -76,6 +76,38 @@
       return;
   }
   
  +Wikiwyg.prototype.cancelEdit = function() {
  +    var self = this;
  +    var myWikiwyg = new Wikiwyg.Wikitext();
  +    var wikitext;
  +
  +    var toolbar=document.getElementById('toolbar');
  +    if (toolbar) { // show toolbar
  +        toolbar.setAttribute('style','');
  +    }
  +
  +    var area=document.getElementById('editor_area');
  +    if (area) {
  +        var textarea=area.getElementsByTagName('textarea')[0];
  +
  +        var myhtml;
  +        this.current_mode.toHtml( function(html) { myhtml = html; });
  +
  +        if (this.current_mode.classname.match(/(Wysiwyg|HTML|Preview)/)) {
  +            this.current_mode.fromHtml(myhtml);
  +
  +            wikitext = myWikiwyg.convert_html_to_wikitext(myhtml);
  +        }
  +        else {
  +            wikitext = this.current_mode.textarea.value;
  +        }
  +
  +        if (textarea)
  +            textarea.value=wikitext; // XXX
  +    }
  +    this.displayMode();
  +}
  +
   Wikiwyg.prototype.switchMode = function(new_mode_key) {
       var new_mode = this.modeByName(new_mode_key);
       var old_mode = this.current_mode;
  @@ -93,6 +125,8 @@
               self.current_mode = new_mode;
           }
       );
  +    if (typeof textAreaAutoAttach == 'function') // support resizable textarea
  +        textAreaAutoAttach();
   }
   
   Wikiwyg.prototype.editMode = function(form,text) {
  @@ -172,7 +206,7 @@
       else {
           // XXX iframe need to be a element of the body.
           iframe = document.createElement('iframe');
  -        var body = document.getElementsByTagName('body')[0];;
  +        var body = document.getElementsByTagName('body')[0];
           body.appendChild(iframe);
       }
   
  @@ -283,6 +317,19 @@
       this.enable_keybindings();
   }
   
  +proto.initialize_object = function() {
  +    this.div = document.createElement('div');
  +    if (this.config.textareaId)
  +        this.textarea = document.getElementById(this.config.textareaId);
  +    else
  +        this.textarea = document.createElement('textarea');
  +    this.textarea.setAttribute('id', 'wikiwyg_wikitext_textarea');
  +    this.textarea.setAttribute('class', 'resizable');
  +    this.div.appendChild(this.textarea);
  +    this.area = this.textarea;
  +    this.clear_inner_text();
  +}
  +
   proto.convert_html_to_wikitext = function(html) {
       this.copyhtml = html;
       var dom = document.createElement('div');
  @@ -552,6 +599,18 @@
       this.div.setAttribute('style','background:lightyellow;padding:10px;');
   }
   
  +proto = Wikiwyg.HTML.prototype;
  +
  +proto.initializeObject = function() {
  +    this.div = document.createElement('div');
  +    if (this.config.textareaId)
  +        this.textarea = document.getElementById(this.config.textareaId);
  +    else
  +        this.textarea = document.createElement('textarea');
  +    this.textarea.setAttribute('class','resizable');
  +    this.div.appendChild(this.textarea);
  +}
  +
   proto = Wikiwyg.Toolbar.prototype;
   
   proto.addControlItem = function(text, method,arg) {
  @@ -1078,6 +1137,9 @@
       var area;
       var text=null;
       var form=null;
  +    var area_id="WikiWygArea";
  +    area_id += '_' + wikiwygs.length;
  +
       if (sect) {
           var sec=document.getElementById('sect-'+sect);
           area=sec.parentNode;
  @@ -1095,6 +1157,26 @@
           area=document.getElementById('editor_area');
           text=area.getElementsByTagName('textarea')[0].value;
           form=area.innerHTML;
  +        var toolbar=document.getElementById('toolbar');
  +        if (toolbar) { // hide toolbar
  +            toolbar.setAttribute('style','display:none');
  +        }
  +    }
  +
  +    if (area) {
  +        var x= area.previousSibling;
  +        while (x.nodeType != 1) {
  +            x = x.previousSibling;
  +        }
  +        
  +        var mycheck= x.getAttribute('id');
  +        if (mycheck && mycheck.match(/WikiWygArea/)) {
  +            var tmp = mycheck.split(/_/); // get already loaded WikiWygArea
  +
  +            wikiwygs[tmp[1]].toolbarObject.resetModeSelector();
  +            wikiwygs[tmp[1]].current_mode.enableThis();
  +            return;
  +        }
       }
   
       if (form && form.substring(0,5) != 'false') {
  @@ -1121,9 +1203,10 @@
               };
   
               var myWikiwyg = new Wikiwyg();
  -            myWikiwyg.createWikiwygArea(area, myConfig);
  +            myWikiwyg.createWikiwygArea(area, myConfig, area_id);
               wikiwygs.push(myWikiwyg);
               myWikiwyg.editMode(form,text);
  +
       }
       return;
   }
  
  
  
  1.2       +2 -2      moniwiki/local/textarea.js
  
  Index: textarea.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/textarea.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- textarea.js	5 Aug 2006 08:10:49 -0000	1.1
  +++ textarea.js	17 Oct 2007 07:43:21 -0000	1.2
  @@ -1,4 +1,4 @@
  -// $Id: textarea.js,v 1.1 2006/08/05 08:10:49 wkpark Exp $
  +// $Id: textarea.js,v 1.2 2007/10/17 07:43:21 wkpark Exp $
   // $origId: textarea.js,v 1.9 2006/04/14 13:48:56 killes Exp $
   // from drupal
   // many functions are imported from drupal.js to eliminate dependency
  @@ -104,7 +104,7 @@
     }
     var textarea;
     for (var i = 0; textarea = textareas[i]; ++i) {
  -    if (hasClass(textarea, 'resizable') && !hasClass(textarea.nextSibling, 'grippie')) {
  +    if (hasClass(textarea, 'resizable') && (textarea.nextSibling == null|| !hasClass(textarea.nextSibling, 'grippie'))) {
         if (typeof dimensions(textarea).width != 'undefined' && dimensions(textarea).width != 0) {
           new textArea(textarea);
         }
  
  
  


wkpark      2007/10/17 16:44:48

  Modified:    local/Wikiwyg/lib Wikiwyg.js
  Log:
  set id attrubutes to WikiWygAreas
  
  Revision  Changes    Path
  1.3       +15 -5     moniwiki/local/Wikiwyg/lib/Wikiwyg.js
  
  Index: Wikiwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/lib/Wikiwyg.js,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Wikiwyg.js	1 Aug 2006 15:47:30 -0000	1.2
  +++ Wikiwyg.js	17 Oct 2007 07:44:48 -0000	1.3
  @@ -129,9 +129,10 @@
   );
   
   // Wikiwyg environment setup public methods
  -proto.createWikiwygArea = function(div, config) {
  +proto.createWikiwygArea = function(div, config, id) {
       this.set_config(config);
  -    this.initializeObject(div, config);
  +    this.initializeObject(div, config, id);
  +    this.displayMode();
   };
   
   proto.default_config = {
  @@ -146,10 +147,16 @@
       ]
   };
   
  -proto.initializeObject = function(div, config) {
  +proto.initializeObject = function(div, config, id) {
       if (! Wikiwyg.browserIsSupported) return;
       if (this.enabled) return;
       this.enabled = true;
  +
  +    var mydiv=document.createElement('div');
  +    if (id) {
  +        mydiv.setAttribute('id',id);
  +    }
  +
       this.div = div;
       this.divHeight = this.div.offsetHeight;
       if (!config) config = {};
  @@ -174,7 +181,8 @@
           this.toolbarObject.wikiwyg = this;
           this.toolbarObject.set_config(config.toolbar);
           this.toolbarObject.initializeObject();
  -        this.placeToolbar(this.toolbarObject.div);
  +        //this.placeToolbar(this.toolbarObject.div);
  +        mydiv.appendChild(this.toolbarObject.div);
       }
   
       // These objects must be _created_ before the toolbar is created
  @@ -182,13 +190,15 @@
       for (var i = 0; i < this.config.modeClasses.length; i++) {
           var mode_class = this.config.modeClasses[i];
           var mode_object = this.modeByName(mode_class);
  -        this.insert_div_before(mode_object.div);
  +        mydiv.appendChild(mode_object.div);
  +        //this.insert_div_before(mode_object.div);
       }
   
       if (this.config.doubleClickToEdit) {
           var self = this;
           this.div.ondblclick = function() { self.editMode() }; 
       }
  +    div.parentNode.insertBefore(mydiv, div);
   }
   
   // Wikiwyg environment setup private methods
  
  
  


wkpark      2007/10/18 19:39:48

  Modified:    local/Wikiwyg/lib/Wikiwyg Toolbar.js Wysiwyg.js
  Log:
  iframe patch for IE
  small fix for styling
  
  Revision  Changes    Path
  1.5       +18 -9     moniwiki/local/Wikiwyg/lib/Wikiwyg/Toolbar.js
  
  Index: Toolbar.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/lib/Wikiwyg/Toolbar.js,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Toolbar.js	21 Dec 2006 10:52:49 -0000	1.4
  +++ Toolbar.js	18 Oct 2007 10:39:48 -0000	1.5
  @@ -87,6 +87,11 @@
               }
           );
       }
  +    this.imgdiv = Wikiwyg.createElementWithAttrs(
  +        'div', {
  +            'class': 'wikiwyg_buttons'
  +        }
  +    );
   
       var config = this.config;
       for (var i = 0; i < config.controlLayout.length; i++) {
  @@ -111,6 +116,7 @@
           else
               this.add_button(action, label);
       }
  +    this.div.appendChild(this.imgdiv);
   }
   
   proto.enableThis = function() {
  @@ -127,12 +133,6 @@
       return Wikiwyg.createElementWithAttrs(
           'img', {
               'class': 'wikiwyg_button',
  -            onmouseup: "this.style.border='1px outset';",
  -            onmouseover: "this.style.border='1px outset';",
  -            onmouseout:
  -                "this.style.borderColor=this.style.backgroundColor;" +
  -                "this.style.borderStyle='solid';",
  -            onmousedown:     "this.style.border='1px inset';",
               alt: label,
               title: label,
               src: base + type + ext
  @@ -146,7 +146,7 @@
       img.onclick = function() {
           self.wikiwyg.current_mode.process_command(type);
       };
  -    this.div.appendChild(img);
  +    this.imgdiv.appendChild(img);
   }
   
   proto.add_help_button = function(type, label) {
  @@ -164,7 +164,7 @@
   proto.add_separator = function() {
       var base = this.config.imagesLocation;
       var ext = this.config.imagesExtension;
  -    this.div.appendChild(
  +    this.imgdiv.appendChild(
           Wikiwyg.createElementWithAttrs(
               'img', {
                   'class': 'wikiwyg_separator',
  @@ -257,7 +257,16 @@
   }
   
   proto.add_break = function() {
  -    this.div.appendChild(document.createElement('br'));
  +    if (this.imgdiv.childNodes.length) {
  +        this.div.appendChild(this.imgdiv);
  +        this.imgdiv = Wikiwyg.createElementWithAttrs(
  +            'div', {
  +                'class': 'wikiwyg_buttons'
  +            }
  +        );
  +    } else {
  +        this.div.appendChild(document.createElement('br'));
  +    }
   }
   
   proto.add_styles = function() {
  
  
  
  1.3       +1 -0      moniwiki/local/Wikiwyg/lib/Wikiwyg/Wysiwyg.js
  
  Index: Wysiwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/lib/Wikiwyg/Wysiwyg.js,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Wysiwyg.js	1 Aug 2006 15:47:30 -0000	1.2
  +++ Wysiwyg.js	18 Oct 2007 10:39:48 -0000	1.3
  @@ -72,6 +72,7 @@
       Wikiwyg.Mode.prototype.enableThis.call(this);
       this.edit_iframe.style.border = '1px black solid';
       this.edit_iframe.width = '100%';
  +    this.edit_iframe.frameBorder='no';
       this.setHeightOf(this.edit_iframe);
       this.fix_up_relative_imgs();
       this.get_edit_document().designMode = 'on';
  
  
  


wkpark      2007/10/18 19:44:32

  Modified:    local/Wikiwyg/moni/images bold.png h2.png hr.png image.png
                        indent.png italic.png link.png math.png media.png
                        nowiki.png ordered.png outdent.png quote.png
                        table.png unordered.png
  Added:       local/Wikiwyg/moni/images redo.png undo.png
  Log:
  rework
  
  Revision  Changes    Path
  1.2       +2 -3      moniwiki/local/Wikiwyg/moni/images/bold.png
  
  	<<Binary file>>
  
  
  1.2       +4 -1      moniwiki/local/Wikiwyg/moni/images/h2.png
  
  	<<Binary file>>
  
  
  1.2       +1 -2      moniwiki/local/Wikiwyg/moni/images/hr.png
  
  	<<Binary file>>
  
  
  1.3       +1 -1      moniwiki/local/Wikiwyg/moni/images/image.png
  
  	<<Binary file>>
  
  
  1.3       +1 -2      moniwiki/local/Wikiwyg/moni/images/indent.png
  
  	<<Binary file>>
  
  
  1.2       +1 -2      moniwiki/local/Wikiwyg/moni/images/italic.png
  
  	<<Binary file>>
  
  
  1.2       +4 -2      moniwiki/local/Wikiwyg/moni/images/link.png
  
  	<<Binary file>>
  
  
  1.2       +2 -1      moniwiki/local/Wikiwyg/moni/images/math.png
  
  	<<Binary file>>
  
  
  1.2       +3 -4      moniwiki/local/Wikiwyg/moni/images/media.png
  
  	<<Binary file>>
  
  
  1.2       +2 -2      moniwiki/local/Wikiwyg/moni/images/nowiki.png
  
  	<<Binary file>>
  
  
  1.2       +1 -1      moniwiki/local/Wikiwyg/moni/images/ordered.png
  
  	<<Binary file>>
  
  
  1.3       +1 -2      moniwiki/local/Wikiwyg/moni/images/outdent.png
  
  	<<Binary file>>
  
  
  1.2       +1 -1      moniwiki/local/Wikiwyg/moni/images/quote.png
  
  	<<Binary file>>
  
  
  1.3       +1 -2      moniwiki/local/Wikiwyg/moni/images/table.png
  
  	<<Binary file>>
  
  
  1.2       +2 -2      moniwiki/local/Wikiwyg/moni/images/unordered.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/Wikiwyg/moni/images/redo.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/Wikiwyg/moni/images/undo.png
  
  	<<Binary file>>
  
  


wkpark      2007/10/18 19:47:18

  Modified:    local    moniwyg.js
  Log:
  IE iframe hack
  
  Revision  Changes    Path
  1.16      +64 -13    moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- moniwyg.js	17 Oct 2007 07:43:21 -0000	1.15
  +++ moniwyg.js	18 Oct 2007 10:47:18 -0000	1.16
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.15 2007/10/17 07:43:21 wkpark Exp $
  +// $Id: moniwyg.js,v 1.16 2007/10/18 10:47:18 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -102,8 +102,8 @@
               wikitext = this.current_mode.textarea.value;
           }
   
  -        if (textarea)
  -            textarea.value=wikitext; // XXX
  +        //if (textarea)
  +        //    textarea.value=wikitext; // XXX
       }
       this.displayMode();
   }
  @@ -197,22 +197,36 @@
   
   proto.get_edit_iframe = function() {
       var iframe=null;
  +    var body;
       if (this.config.iframeId)
           iframe = document.getElementById(this.config.iframeId);
       else if (this.config.iframeObject)
           iframe = this.config.iframeObject;
  -    if (iframe)
  +    if (iframe) {
           iframe.iframe_hack = true;
  -    else {
  +        return;
  +    }
  +    {
           // XXX iframe need to be a element of the body.
  -        iframe = document.createElement('iframe');
  -        var body = document.getElementsByTagName('body')[0];
  -        body.appendChild(iframe);
  +        if (Wikiwyg.is_ie) {
  +            // http://dojofindings.blogspot.com/2007/09/dynamically-creating-iframes-with.html
  +            iframe = document.createElement('<iframe onload="iframeHandler()">');
  +        } else {
  +            iframe = document.createElement('iframe');
  +        }
  +        body = document.getElementsByTagName('body')[0];
  +        // body.appendChild(iframe);
  +        // You can't get 'frameBorder=no' if you appendChild at this line. :( IE bug.
  +        iframe.border='0';
  +        iframe.frameBorder='no';
       }
   
  -    // from http://www.codingforums.com/archive/index.php?t-63511.html
       var self=this;
  -    iframe.onload = function() {
  +
  +    // from http://www.codingforums.com/archive/index.php?t-63511.html
  +    // mozilla and IE hack !!
  +
  +    iframeHandler = function() {
           var doc = iframe.contentDocument || iframe.contentWindow.document;
           //Fx workaround: delay modifying editorDoc.body right after iframe onload event
           var head = doc.getElementsByTagName("head")[0];
  @@ -233,6 +247,15 @@
               self.fix_up_relative_imgs();
               self.clear_inner_html();
               self.enable_keybindings();
  +
  +/*
  +            iframe.onload='undefined';
  +            if (typeof textArea == 'function') {
  +                var x=iframe.nextSibling;
  +                if (x == null || ! x.className.match(/grippe/))
  +                    new textArea(self.edit_iframe);
  +            }
  +*/
           }, 0);
   
           //editorDoc.onkeydown = editorDoc_onkeydown;
  @@ -240,6 +263,10 @@
           iframe = null; //IE mem leak fix
       }
   
  +    iframe.onload=iframeHandler; // ignored by IE :(
  +
  +    body.appendChild(iframe);
  +
       return iframe;
   }
   
  @@ -271,15 +298,39 @@
   
   proto.enableThis = function() {
       Wikiwyg.Mode.prototype.enableThis.call(this);
  -    this.edit_iframe.style.border = '1px solid ActiveBorder';
  +    this.edit_iframe.style.border = '1px solid activeborder';
  +    //this.edit_iframe.style.border = '1px solid ActiveBorder';
       //this.edit_iframe.style.backgroundColor = '#ffffff';
       //this.edit_iframe.setAttribute('style','1px solid ThreeDFace;background:#fff;');
       this.edit_iframe.width = '99%';
  +    //this.edit_iframe.style.display='block';
  +    this.edit_iframe.frameBorder='no';
  +    this.edit_iframe.border='0';
       this.setHeightOf(this.edit_iframe);
  +    //this.fix_up_relative_imgs();
       this.get_edit_document().designMode = 'on';
       // XXX - Doing stylesheets in initializeObject might get rid of blue flash
       //
       // this.edit_iframe.contentWindow;
  +    //this.apply_stylesheets();
  +/*
  +    var styles = document.styleSheets;
  +    var head   = this.get_edit_document().getElementsByTagName("head")[0];
  +
  +    if (!head) return;
  +
  +    for (var i = 0; i < styles.length; i++) {
  +        var style = styles[i];
  +
  +        if (style.href == location.href)
  +            this.apply_inline_stylesheet(style, head);
  +        else
  +            if (this.should_link_stylesheet(style))
  +                this.apply_linked_stylesheet(style, head);
  +    }
  +*/
  +    //this.enable_keybindings();
  +    //this.clear_inner_html();
   }
   
   proto.do_link = function() {
  @@ -410,7 +461,7 @@
   
           if (myclass) {
               var m = myclass.match(/img(Center|Left|Right)$/);
  -            if (m[1]) attr+=(attr ? '&':'') + 'align='+m[1].toLowerCase();
  +            if (m && m[1]) attr+=(attr ? '&':'') + 'align='+m[1].toLowerCase();
           }
   
           if (attr) this.appendOutput('?'+attr);
  @@ -730,7 +781,7 @@
   
                   if (myclass) {
                       var m = myclass.match(/img(Center|Left|Right)$/);
  -                    if (m[1]) {
  +                    if (m && m[1]) {
                           attr["align"]='align='+m[1].toLowerCase();
                           align=attr["align"];
                       }
  
  
  


wkpark      2007/10/19 10:00:51

  Modified:    local    moniwyg.js
  Log:
  small fix
  
  Revision  Changes    Path
  1.17      +6 -4      moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- moniwyg.js	18 Oct 2007 10:47:18 -0000	1.16
  +++ moniwyg.js	19 Oct 2007 01:00:51 -0000	1.17
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.16 2007/10/18 10:47:18 wkpark Exp $
  +// $Id: moniwyg.js,v 1.17 2007/10/19 01:00:51 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -1214,12 +1214,13 @@
           }
       }
   
  -    if (area) {
  +    while (area && wikiwygs.length) {
           var x= area.previousSibling;
  -        while (x.nodeType != 1) {
  +        while (x && x.nodeType != 1) {
               x = x.previousSibling;
           }
  -        
  +        if (!x) break;
  +       
           var mycheck= x.getAttribute('id');
           if (mycheck && mycheck.match(/WikiWygArea/)) {
               var tmp = mycheck.split(/_/); // get already loaded WikiWygArea
  @@ -1228,6 +1229,7 @@
               wikiwygs[tmp[1]].current_mode.enableThis();
               return;
           }
  +        break;
       }
   
       if (form && form.substring(0,5) != 'false') {
  
  
  


wkpark      2007/10/19 10:02:45

  moniwiki/local/Wikiwyg/images - New directory

wkpark      2007/10/19 10:03:26

  Added:       local/Wikiwyg/images bg.png ibg.png
  Log:
  new added files for a toolbar
  
  Revision  Changes    Path
  1.1                  moniwiki/local/Wikiwyg/images/bg.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/Wikiwyg/images/ibg.png
  
  	<<Binary file>>
  
  


wkpark      2007/10/19 11:28:03

  Modified:    local/Wikiwyg/lib/Wikiwyg Toolbar.js
  Log:
  remove hardcoded styles
  
  Revision  Changes    Path
  1.6       +0 -2      moniwiki/local/Wikiwyg/lib/Wikiwyg/Toolbar.js
  
  Index: Toolbar.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/lib/Wikiwyg/Toolbar.js,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Toolbar.js	18 Oct 2007 10:39:48 -0000	1.5
  +++ Toolbar.js	19 Oct 2007 02:28:03 -0000	1.6
  @@ -247,8 +247,6 @@
               'label', { 'for': radio_id }
           );
           label.appendChild(document.createTextNode(mode_object.modeDescription));
  -    	if (this.config.hideRadio)
  -            radio.setAttribute('style','display:none'); /* */
   
           span.appendChild(radio);
           span.appendChild(label);
  
  
  


wkpark      2007/10/19 11:31:17

  Modified:    local/Wikiwyg/css moniwyg.css
  Log:
  update with new style
  
  Revision  Changes    Path
  1.5       +25 -14    moniwiki/local/Wikiwyg/css/moniwyg.css
  
  Index: moniwyg.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/css/moniwyg.css,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- moniwyg.css	27 Dec 2006 08:00:58 -0000	1.4
  +++ moniwyg.css	19 Oct 2007 02:31:17 -0000	1.5
  @@ -7,19 +7,29 @@
   }
   
   span.wikiwyg_control_link a {
  -/*  padding-right: 8px; /* */
  -    font-family:Trebuchet MS,sans-serif;
  +    font-family:'Trebuchet MS',sans-serif;
       padding: 4px;
   }
  +
   span.wikiwyg_control_link {
  +
   }
   
   .wikiwyg_toolbar label {
       padding:4px;
  -    border:1px outset ThreeDFace;
  -    background: ThreeDFace;
  +    /*
  +    border:1px outset ThreeDFace !important;
  +    border:0px;
  +    */
  +    background: none;
   }
   
  +/*
  +.wikiwyg_toolbar input[type="radio"] {
  +    display:none;
  +}
  +*/
  +
   .wikiwyg_toolbar label.selected {
       padding:4px;
       border:1px outset ThreeDHighlight;
  @@ -27,29 +37,30 @@
   }
   
   .wikiwyg_button {
  -/*  background: #EBE8D5; /* */
  -/*  border: 1px solid #EBE8D5; /* */
  -    border: 1px solid transparent;
  +    padding:1px;
  +    background: url(../images/bg.png) repeat-x;
       cursor: pointer;
  -    width: 23px;
       height: 22px;
  -    vertical-align: bottom;
  +    vertical-align: middle;
   }
   
   .wikiwyg_button:hover {
  +    padding:0px;
       border: 1px outset;
  +    background: url(../images/ibg.png) no-repeat;
   }
   
   .wikiwyg_button:active {
  +    padding:0px;
       border: 1px inset;
   }
   
   .wikiwyg_separator {
  -/*  background: #EBE8D5; /* */
  -/*  border: 1px solid #EBE8D5; /* */
  -    width: 8px;
  -    height: 20px;
  -    vertical-align: bottom;
  +    padding:1px;
  +    background: url(../images/bg.png);
  +    height: 22px;
  +    width: 9px;
  +    vertical-align: middle;
   }
   
   .wikiwyg_selector {
  
  
  


wkpark      2007/10/19 11:36:14

  Modified:    local/Wikiwyg/css wysiwyg.css
  Log:
  update
  
  Revision  Changes    Path
  1.2       +6 -2      moniwiki/local/Wikiwyg/css/wysiwyg.css
  
  Index: wysiwyg.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/css/wysiwyg.css,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- wysiwyg.css	1 Feb 2006 00:44:56 -0000	1.1
  +++ wysiwyg.css	19 Oct 2007 02:36:14 -0000	1.2
  @@ -1,5 +1,9 @@
   
  -td, table, td.wiki, table.wiki {
  -    border: 1px solid black;
  +td.wiki, table.wiki, table.wiki td {
  +    border: 1px dotted black;
       background-color: #F0F4FF;
   }
  +
  +.wikiMarkup td, .wikiMarkup td.wiki {
  +    background-color: #FFFFB0;
  +}
  
  
  


wkpark      2007/10/19 12:03:01

  Modified:    local/Wikiwyg/css wysiwyg.css
  Log:
  oops! revert some css
  
  Revision  Changes    Path
  1.3       +5 -0      moniwiki/local/Wikiwyg/css/wysiwyg.css
  
  Index: wysiwyg.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/css/wysiwyg.css,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- wysiwyg.css	19 Oct 2007 02:36:14 -0000	1.2
  +++ wysiwyg.css	19 Oct 2007 03:03:01 -0000	1.3
  @@ -7,3 +7,8 @@
   .wikiMarkup td, .wikiMarkup td.wiki {
       background-color: #FFFFB0;
   }
  +
  +td, table {
  +    border: 1px dotted black;
  +    background-color: #F0F4FF;
  +}
  
  
  


wkpark      2007/10/19 12:46:05

  Modified:    .        wikilib.php
  Log:
  WikiWyg fixes
  textarea.js hack for IE
  
  Revision  Changes    Path
  1.226     +17 -8     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.225
  retrieving revision 1.226
  diff -u -r1.225 -r1.226
  --- wikilib.php	16 Oct 2007 11:25:38 -0000	1.225
  +++ wikilib.php	19 Oct 2007 03:46:05 -0000	1.226
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.225 2007/10/16 11:25:38 wkpark Exp $
  +// $Id: wikilib.php,v 1.226 2007/10/19 03:46:05 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -645,7 +645,8 @@
     if ($options['section'])
       $sec=' (Section)';
     $formatter->send_title(sprintf(_("Edit %s"),$options['page']).$sec,"",$options);
  -  print '<div id="editor_area">'.macro_EditText($formatter,$value,$options).'</div>';
  +  //print '<div id="editor_area">'.macro_EditText($formatter,$value,$options).'</div>';
  +  print macro_EditText($formatter,$value,$options);
     if ($DBInfo->use_wikiwyg>=2)
       print <<<JS
   <script type='text/javascript'>
  @@ -881,9 +882,13 @@
       }
     }
     $form.=<<<EOS
  -<div id="wikiEditor">
  +<div id="editor_area">
  +$formh
  +<div class="resizable-textarea"><!-- IE hack -->
   <textarea id="content" wrap="virtual" name="savetext" tabindex="1"
  - rows="$rows" cols="$cols" class="wiki resizable">$raw_body</textarea><br />
  + rows="$rows" cols="$cols" class="wiki resizable">$raw_body</textarea>
  +</div>
  +<div>
   $summary_msg: <input name="comment" value="$editlog" size="70" maxlength="70" style="width:80%" tabindex="2" />$extra_check<br />
   <input type="hidden" name="action" value="savepage" />
   <input type="hidden" name="datestamp" value="$datestamp" />
  @@ -892,6 +897,7 @@
   <!-- <input type="reset" value="Reset" />&nbsp; -->
   $preview_btn$wysiwyg_btn$skip_preview
   $extra
  +</div>
   </form>
   </div>
   EOS;
  @@ -899,7 +905,7 @@
       $form.= macro_EditHints($formatter);
     if (!$options['simple'])
       $form.= "<a id='preview'></a>";
  -  return $formh.$form.$resizer;
  +  return $form.$resizer;
   }
   
   
  @@ -1197,12 +1203,13 @@
       }
   
       sort($pages);
  -    array_unshift($pages, $options['q']);
  +    //array_unshift($pages, $options['q']);
       header("Content-Type: text/plain");
       if ($pages) {
       	$ret= "<ul>\n<li>".implode("</li>\n<li>",$pages)."</li>\n</ul>\n";
       } else {
  -        $ret= "<ul>\n<li>".$options['q']."</li></ul>";
  +        #$ret= "<ul>\n<li>".$options['q']."</li></ul>";
  +        $ret= "<ul>\n</ul>";
       }
       if (strtoupper($DBInfo->charset) != 'UTF-8' and function_exists('iconv')) {
         $val=iconv('UTF-8',$DBInfo->charset,$ret);
  @@ -1435,7 +1442,8 @@
         } else
           $formatter->send_title(_("Conflict error!"),"",$options);
         $options['savetext']=$savetext;
  -      print '<div id="editor_area">'.macro_EditText($formatter,$value,$options).'</div>'; # XXX
  +      #print '<div id="editor_area">'.macro_EditText($formatter,$value,$options).'</div>'; # XXX
  +      print macro_EditText($formatter,$value,$options); # XXX
   
         print $menu;
         print "<div id='wikiPreview'>\n";
  @@ -1776,6 +1784,7 @@
       $out= ob_get_contents();
       ob_end_clean();
     } else {
  +    $formatter->set_wordrule();
       $quote=str_replace("<","&lt;",$quote);
       $quote=preg_replace($formatter->baserule,$formatter->baserepl,$quote);
       $out=preg_replace("/(".$formatter->wordrule.")/e",
  
  
  


wkpark      2007/10/19 13:41:01

  Modified:    .        wikismiley.php
  Log:
  change smiley >:> to ):) to avoid indentation markup
  
  Revision  Changes    Path
  1.10      +2 -2      moniwiki/wikismiley.php
  
  Index: wikismiley.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikismiley.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- wikismiley.php	10 Jan 2006 12:27:59 -0000	1.9
  +++ wikismiley.php	19 Oct 2007 04:41:01 -0000	1.10
  @@ -1,5 +1,5 @@
   <?php
  -# $Id: wikismiley.php,v 1.9 2006/01/10 12:27:59 wkpark Exp $
  +# $Id: wikismiley.php,v 1.10 2007/10/19 04:41:01 wkpark Exp $
   $smileys=array(
       ":)"=>  array(16, 16, 0, "smile/8).png"),
       ":-)"=> array(16, 16, 0, "smile/8-).png"),
  @@ -42,7 +42,7 @@
   #    "=)"=> array(16, 16, 0, "smile/=).gif"),
       ":-?"=> array(16, 16, 0, "smile/8-question.png"),
       ":\\"=> array(16, 16, 0, "smile/8-ll.png"),
  -    ">:>"=> array(16, 16, 0, "smile/v8v.png"),
  +    "):)"=> array(16, 16, 0, "smile/v8v.png"),
       "%-)"=> array(16, 16, 0, "smile/%25-).png"),
   #    "%)"=> array(16, 16, 0, "smile/%25-).gif"),
   #    "%-6"=> array(16, 16, 0, "smile/%25-6.gif"),
  
  
  


wkpark      2007/10/19 13:46:37

  Modified:    plugin   SmileyChooser.php UploadedFiles.php
  Log:
  fixed IE problem with the inserthtml related command.
  
  Revision  Changes    Path
  1.11      +17 -3     moniwiki/plugin/SmileyChooser.php
  
  Index: SmileyChooser.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SmileyChooser.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- SmileyChooser.php	17 Oct 2007 06:36:52 -0000	1.10
  +++ SmileyChooser.php	19 Oct 2007 04:46:37 -0000	1.11
  @@ -5,7 +5,7 @@
   //
   // Usage: [[SmileyChooser]]
   //
  -// $Id: SmileyChooser.php,v 1.10 2007/10/17 06:36:52 wkpark Exp $
  +// $Id: SmileyChooser.php,v 1.11 2007/10/19 04:46:37 wkpark Exp $
   
   function macro_SmileyChooser($formatter,$value) {
     global $DBInfo;
  @@ -19,6 +19,7 @@
   // from wikibits.js
   function mySmiley(myText)
   {
  +  var is_ie = document.selection && document.all;
     if (document.$form)
       var txtarea = document.$form.savetext;
     else {
  @@ -30,12 +31,15 @@
     // check WikiWyg
     var my=document.getElementById('editor_area');
     var mystyle=my.getAttribute('style');
  +  if (typeof mystyle == 'object') mystyle = mystyle.cssText;
  +  
     while (mystyle && mystyle.match(/display: none/i)) { // wikiwyg hack
       txtarea = document.getElementById('wikiwyg_wikitext_textarea');
   
       // get iframe and check visibility.
       var myframe = document.getElementsByTagName('iframe')[0];
       mystyle = myframe.getAttribute('style');
  +    if (typeof mystyle == 'object') mystyle = mystyle.cssText;
       var check = mystyle && mystyle.match(/display: none/i);
       if (check) break;
   
  @@ -45,13 +49,23 @@
   
       var m = myhtml.match(/<div>(.*)\\n<\/div>/i); // strip div tag
       if (m) {
  -      myframe.contentWindow.document.execCommand('inserthtml', false, m[1] + ' ');
  +      var html = m[1] + ' ';
  +      if (is_ie) {
  +        var range = myframe.contentWindow.document.selection.createRange();
  +        if (range.boundingTop == 2 && range.boundingLeft == 2)
  +          return;
  +        range.pasteHTML(html);
  +        range.collapse(false);
  +        range.select();
  +      } else {
  +        myframe.contentWindow.document.execCommand('inserthtml', false, html);
  +      }
       }
   
       return;
     }
   
  -  if(document.selection && document.all) {
  +  if(is_ie) {
       var theSelection = document.selection.createRange().text;
       txtarea.focus();
       if(theSelection.charAt(theSelection.length - 1) == " "){
  
  
  
  1.23      +16 -3     moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- UploadedFiles.php	17 Oct 2007 06:36:52 -0000	1.22
  +++ UploadedFiles.php	19 Oct 2007 04:46:37 -0000	1.23
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadedFiles plugin for the MoniWiki
   //
  -// $Id: UploadedFiles.php,v 1.22 2007/10/17 06:36:52 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.23 2007/10/19 04:46:37 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     $list=macro_UploadedFiles($formatter,$options['page'],$options);
  @@ -74,6 +74,7 @@
   
   function insertTags(tagOpen,tagClose,myText,replaced)
   {
  +  var is_ie = document.selection && document.all;
     if (document.$form) {
       var txtarea = document.$form.savetext;
     } else {
  @@ -92,12 +93,14 @@
   
           var my=opener.document.getElementById('editor_area');
           var mystyle=my.getAttribute('style');
  +        if (typeof mystyle == 'object') mystyle = mystyle.cssText;
           while (mystyle && mystyle.match(/display: none/i)) { // wikiwyg hack
               txtarea = opener.document.getElementById('wikiwyg_wikitext_textarea');
   
               // get iframe and check visibility.
               var myframe = opener.document.getElementsByTagName('iframe')[0];
               mystyle = myframe.getAttribute('style');
  +            if (typeof mystyle == 'object') mystyle = mystyle.cssText;
               var check = mystyle && mystyle.match(/display: none/i);
               if (check) break;
   
  @@ -107,7 +110,17 @@
   
               var mnew = myhtml.replace(/^<div>/i,''); // strip div tag
               mnew = mnew.replace(/<\/div>\s*$/i,''); // strip div tag
  -            myframe.contentWindow.document.execCommand('inserthtml', false, mnew + ' ');
  +
  +            if (is_ie) {
  +                var range = myframe.contentWindow.document.selection.createRange();
  +                if (range.boundingTop == 2 && range.boundingLeft == 2)
  +                    return;
  +                range.pasteHTML(html);
  +                range.collapse(false);
  +                range.select();
  +            } else {
  +                myframe.contentWindow.document.execCommand('inserthtml', false, mnew + ' ');
  +            }
   
               return;
           }
  @@ -116,7 +129,7 @@
       }
     }
   
  -  if(document.selection && document.all) {
  +  if(is_ie) {
       var theSelection = document.selection.createRange().text;
       txtarea.focus();
       if(theSelection.charAt(theSelection.length - 1) == " "){
  
  
  


wkpark      2007/10/19 14:21:11

  Modified:    local    moniwyg.js
  Log:
  setAttribute() fix
  
  Revision  Changes    Path
  1.18      +5 -3      moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- moniwyg.js	19 Oct 2007 01:00:51 -0000	1.17
  +++ moniwyg.js	19 Oct 2007 05:21:11 -0000	1.18
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.17 2007/10/19 01:00:51 wkpark Exp $
  +// $Id: moniwyg.js,v 1.18 2007/10/19 05:21:11 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -83,7 +83,8 @@
   
       var toolbar=document.getElementById('toolbar');
       if (toolbar) { // show toolbar
  -        toolbar.setAttribute('style','');
  +        if (Wikiwyg.is_ie) toolbar.style.display='';
  +        else toolbar.setAttribute('style','');
       }
   
       var area=document.getElementById('editor_area');
  @@ -1210,7 +1211,8 @@
           form=area.innerHTML;
           var toolbar=document.getElementById('toolbar');
           if (toolbar) { // hide toolbar
  -            toolbar.setAttribute('style','display:none');
  +            if (Wikiwyg.is_ie) toolbar.style.display='none';
  +            else toolbar.setAttribute('style','display:none');
           }
       }
   
  
  
  


wkpark      2007/10/19 21:55:56

  Modified:    theme/azblue header.php theme.php
  Log:
  update
  
  Revision  Changes    Path
  1.8       +55 -22    moniwiki/theme/azblue/header.php
  
  Index: header.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/azblue/header.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- header.php	8 Jan 2007 07:09:06 -0000	1.7
  +++ header.php	19 Oct 2007 12:55:56 -0000	1.8
  @@ -1,6 +1,6 @@
   <?php
   # MoniWiki Theme by wkpark at kldp.org
  -# $Id: header.php,v 1.7 2007/01/08 07:09:06 wkpark Exp $
  +# $Id: header.php,v 1.8 2007/10/19 12:55:56 wkpark Exp $
   #
   if ($this->_sidebar) {
     include_once("plugin/login.php");
  @@ -17,7 +17,7 @@
   if ($this->_width) {
     print <<<EOF
   <style type='text/css'>
  -#mainBody { width:$this->_width;};
  +#mainBody { width:$this->_width;}
   </style>
   EOF;
   }
  @@ -31,27 +31,37 @@
   <a href='http://bbs.kldp.org'>KLDP BBS</a> &middot;
   -->
   </div>
  -<div id='mainContainer'>
   <div id='mainBody'>
   <!--
   <div id='topBanner'>
   <img src="<?php echo $this->themeurl?>/imgs/kldpwikilogo.png"/>
   </div>
   -->
  -<div id='pBodyRight'><div id='pBodyLeft'>
  -<div id='pBottomRight'><div id='pBottomLeft'>
  +<?php if ($this->_topicon): ?>
  +<div id='topIcon'>
  +<a href='?action=edit'><img src='<?php echo $this->themeurl?>/imgs/record.png' alt='*' style='border:0' /></a>
  +<a href='?action=new'><img src='<?php echo $this->themeurl?>/imgs/add.png' alt='+' style='border:0' /></a>
  +<a href='?action=subscribe'><img src='<?php echo $this->themeurl?>/imgs/favorite.png' alt='#' style='border:0' /></a>
  +<a href='?action=rss_rc'><img src='<?php echo $this->themeurl?>/imgs/rss.png' alt='.)' style='border:0' /></a>
  +-->
  +</div>
  +<?php endif;?>
  +<div class='pBodyRight'><div class='pBodyLeft'>
   <div id='pTopRight'><div id='pTopLeft'>
  -<div id='wikiPage'>
  +<div id='pBanSpace'></div>
  +<div id='wikiHeadPage'>
   <?php
   if ($this->popup!=1) :
   ?>
  -<div id='pBanSpace'></div>
   <?php if ($this->_topbanner): ?>
   <div id='pBanRight'><div id='pBanLeft'>
  -<div id='pBanner'>
  -<?php echo $DBInfo->sitename?>
  -</div>
  -<?php endif;?>
  + <div id='pBanner'>
  +<img src='<?php echo $DBInfo->logo_img?>' /><?php
  +  echo $DBInfo->sitename;
  +  if ($DBInfo->site_description) echo '<p class="siteDescription">'.$DBInfo->site_description.'</p>';
  +?>
  + </div>
  +<?php endif; /* topbanner */?>
   <div id='goForm'>
   <form id='go' action='' method='get' onsubmit="return moin_submit();">
   <div>
  @@ -61,20 +71,43 @@
   </div>
   </form>
   </div>
  -<div id='pTitle'><?php echo $title?></div><div id='wikiHeader'>
  -<div id='pMenuRight'><div id='pMenuLeft'>
  -<div id='wikiMenuBar'>
  -<div id='wikiIcon'><?php echo $upper_icon.$icons.$rss_icon?></div>
  -<?php echo $menu?>
  -</div>
  -</div></div>
  -</div>
  +<div id='pTitle'>
  +<?php if (!$this->_topbanner and $this->_logo): ?>
  +<img src='<?php echo $DBInfo->logo_img?>' style='text-align:left;' alt='moniwiki' />
  +<?php endif; /* topbanner */?>
  +<?php echo $title?></div>
   <?php if ($this->_topbanner): ?>
  + </div>
   </div>
  +<?php endif; /* topbanner */?>
  +<?php endif; /* popup */?>
   </div>
  -<?php endif;?>
  -<?php endif; ?>
  -<div class='clear'></div>
  +</div></div>
  +</div></div>
  +<?php if ($this->_splash):?>
  +<div class='pBodyRight'><div class='pBodyLeft'>
  + <div id='wikiSplash'>
  + </div>
  +</div></div>
  +<?php endif; /* _splash */?>
  +<span class='clear' ><!-- for IE --></span>
  +<div class='pBodyRight'><div class='pBodyLeft'>
  +<div id='pBottomRight'><div id='pBottomLeft'>
  +<div id='wikiPage'>
  +<span class='clear'></span>
  +<?php if ($this->popup) :?>
  +&nbsp;<!-- oops!! firefox bug workaround :( -->
  +<?php else:?>
  +<div id='wikiHeader'>
  + <div id='pMenuRight'><div id='pMenuLeft'>
  +  <div id='wikiMenuBar'>
  +   <div id='wikiIcon'><?php echo $upper_icon.$icons.$rss_icon?></div>
  +<?php echo $menu?>
  +  </div>
  + </div></div>
  +</div>
  +<span class='clear'></span>
  +<?php endif; /* popup */?>
   <?php echo $msg?>
   <div id='container'>
   <?php
  @@ -83,7 +116,7 @@
   ?>
   <div id='wikiSideMenu'>
   <?php
  -print macro_login($this);
  +if ($this->_login) print macro_login($this);
   print '<div class="calendar">';
   if ($options['id']=='Anonymous')
     print macro_calendar($this,"'Blog',blog,noweek,archive,center",'Blog');
  
  
  
  1.3       +2 -0      moniwiki/theme/azblue/theme.php
  
  Index: theme.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/azblue/theme.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- theme.php	8 Jan 2007 07:09:06 -0000	1.2
  +++ theme.php	19 Oct 2007 12:55:56 -0000	1.3
  @@ -2,5 +2,7 @@
   $css_friendly=1;
   $_sidebar=0;
   $_topbanner=0;
  +$_topicon=0;
  +$_logo=0;
   $_width='750px';
   ?>
  
  
  


wkpark      2007/10/19 21:55:56

  Modified:    theme/azblue/css default.css
  Log:
  update
  
  Revision  Changes    Path
  1.15      +82 -31    moniwiki/theme/azblue/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/azblue/css/default.css,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- default.css	8 Jan 2007 07:09:06 -0000	1.14
  +++ default.css	19 Oct 2007 12:55:56 -0000	1.15
  @@ -55,10 +55,12 @@
     overflow-y:hidden;
     /* overflow:hidden; does not work correctly in the mozilla */
   }
  +
   #pTopLeft {
     background: url("../imgs/ntl.png") no-repeat;
     z-index:4;
   }
  +
   #pTopRight {
     background: url("../imgs/ntr.png") no-repeat right top;
     z-index:4;
  @@ -70,26 +72,41 @@
   
   #pBanner {
     height:50px;
  -  padding:8px;
  +  padding:0px;
     font-size:36px;
     text-align:center;
     font-family:Trebuchet MS,Tahoma,Lucida,sans-serif;
  -  /* border:1px solid red; /* */
  +  margin:0;
  +  line-height:20%;
  +}
  +
  +#pBanner p {
  +  padding:0;
  +  margin:0;
  +  font-size:12px;
  +}
  +
  +#pBanner img {
  +  vertical-align:middle;
   }
   
   #pBanLeft {
  -  /* border:1px solid red; /* */
  +  padding:0;
  +  margin:0;
   }
   
   #pBanRight {
  -
  +  padding:0;
  +  margin:0;
   }
   
   #pTitle {
     padding:0px;
  -  /* border: 1px solid red; /* */
   }
   
  +#pTitle img {
  +  vertical-align:middle;
  +}
   
   #pBottomMargin {
     height:20px;
  @@ -98,44 +115,63 @@
   #pBottomLeft {
     background: url("../imgs/nbl.png") no-repeat left bottom;
     z-index:1;
  +  padding:0;
   }
   #pBottomRight {
     background: url("../imgs/nbr.png") no-repeat right bottom;
     z-index:1;
  +  padding:0;
   }
   
  -#pBodyLeft {
  +.pBodyLeft {
     background: url("../imgs/nl.png") repeat-y left;
     z-index:-5;
   }
  -#pBodyRight {
  +.pBodyRight {
     background: url("../imgs/nr.png") repeat-y right;
     z-index:-5;
   }
   
  +#wikiSplash {
  +  height:150px;
  +  background: url("../imgs/img2.jpg") repeat-x;
  +  padding:0;
  +  margin:0;
  +  margin-left:20px;
  +  margin-right:22px;
  +}
  +
   #goForm {
     float:right;
  -  padding: 3px 4px;
  +  padding: 3px 6px;
   }
   
   form {
     margin-bottom:0px; /* IE hack */
   }
   
  -#wikiPage {
  +#wikiPage, #wikiHeadPage {
     margin-left:13px;
     margin-right:15px;
  -  padding-top:10px;
     padding-bottom:10px;
  +}
  +
  +#wikiHeadPage {
  +  padding-top:10px;
  +}
  +
  +#wikiPage {
  +  padding-top:0;
     min-height:400px;
     height: auto !important; /* IE min-height hack */
     height:400px;
  +
   }
   
   #wikiBanner {
     padding-top:5px;
     text-align:center;
  -  font-family: Trebuchet MS,sans-serif;
  +  font-family: "Trebuchet MS",Georgia,sans-serif;
   }
   
   a:link { color: #0686db;}
  @@ -147,6 +183,7 @@
     font-size:22px;
     font-weight:bold;
     text-decoration: none;
  +  display:inline;
   }
   
   .wikiTitle a,.wikiTitle a:active,.wikiTitle a:visited {
  @@ -339,9 +376,9 @@
   }
   
   #wikiTrailer {
  -  background-color:#fafafa; 
  +  padding:0;
     padding-left: 20px;
  -  font-family: Trebuchet MS,sans-serif;
  +  font-family: "Trebuchet MS",Georgia,sans-serif;
   }
   
   .wikiNavigation {
  @@ -360,18 +397,21 @@
   #wikiHeader {
   /*  border-left: 0.8em solid #7B9AC5; /* */
   /*  border: 1px solid #7B9AC5; /* */
  -  clear:both;
     color: #000000;
  -  padding: 0.2em 0em 0.2em 0.2em;
  +  padding: 0;
  +  margin-left:5px;
   }
   
   #wikiHeader a:link {color:#000000;}
   #wikiHeader a:visited {color:#000000;}
   
   #wikiMenuBar {
  +  padding:2px;
     padding-top:1px;
  -  padding-left:5px;
     height:42px; /* important !!! for IE */
  +  padding-bottom:0;
  +  margin:0;
  +  margin-left:5px;
   }
   
   #pMenuLeft {
  @@ -384,6 +424,7 @@
   }
   
   #wikiIcon {
  +  visibility:hidden;
     float:right;
     padding: 7px 15px;
     text-align: right;
  @@ -395,6 +436,8 @@
     background-color: #1690c0;
     color: #1690c0;
   */
  +  margin:0;
  +  padding:0;
   }
   
   #wikiMenu ul {
  @@ -404,38 +447,37 @@
     margin-left:0;
     padding-bottom:3px !important; /* for FF */
     padding-bottom:2px;
  -  height:42px;
  +  height:43px !important;
  +  height:44px;
  +}
  +
  +#wikiMenu li.first {
  +  margin-left:5px;
   }
   
   #wikiMenu li {
     display:inline;
  -  padding: 9px 10px;
  -  padding-bottom:11px; /* for IE */
     margin:0px;
  -/*  border-right: 1px solid #A8DBFD; */
  -  /* border-right: 1px solid #e0e0e0; */
  -/* background-color:whitesmoke; */
  -/* the next 4 lines are magic for IE */
  +  padding: 10px 10px;
  +  padding-bottom: 8px !important; /* for FF */
  +  padding-bottom: 9px;
     float: left;
     position: relative;
     vertical-align:top;
  -  background: url("../imgs/mi.png") no-repeat right top;
  +  background: transparent url("../imgs/mi.png") no-repeat right top;
   }
   
  -#wikiMenu li:hover {
  +#wikiMenu li:hover, #wikiMenu li.current:hover {
     background-color: #98D3FC; /* default */
     /* background-color: #355F88; /* dark blue */
     /* background-color: #F2B568; /* orange */
     text-decoration: none;
  -  background: url("../imgs/mih.png") no-repeat right top;
  +  background: transparent url("../imgs/mih.png") no-repeat right top;
   }
   
   #wikiMenu li.current {
  -  background-color: #0584D9; /* default */
  -  /* background-color: #2C4F72; /* dark blue */
  -  /* background-color: #E75024; /* orange */
     text-decoration: none;
  -  background: url("../imgs/mic.png") no-repeat right top;
  +  background: transparent url("../imgs/mic.png") no-repeat right top;
   }
   
   #wikiMenu li:hover a{
  @@ -563,7 +605,11 @@
   
   del.diff-removed {
     color: #999999;
  -  background-color:white !important;
  +  background-color:white !important; /* */
  +  /* background-color:#f0f0f0; /* */
  +  border-right:2px solid #f0f0f0;
  +  border-left:2px solid #f0f0f0;
  +  text-decoration:line-through;
   }
   
   ins.diff-added {
  @@ -754,3 +800,8 @@
     font-size:11px;
     font-family: Trebuchet MS,sans-serif;
   }
  +
  +#topIcon {
  +  text-align:right;
  +  padding-right:20px;
  +}
  
  
  


wkpark      2007/10/20 10:49:51

  Modified:    .        config.php.default
  Log:
  some comments for win32
  
  Revision  Changes    Path
  1.42      +5 -2      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.41
  retrieving revision 1.42
  diff -u -r1.41 -r1.42
  --- config.php.default	16 Oct 2007 11:25:38 -0000	1.41
  +++ config.php.default	20 Oct 2007 01:49:51 -0000	1.42
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.41 2007/10/16 11:25:38 wkpark Exp $
  +# $Id: config.php.default,v 1.42 2007/10/20 01:49:51 wkpark Exp $
   #
   $sitename='UnnamedWiki'; # site name
   $data_dir= './data';
  @@ -48,6 +48,8 @@
   $use_twinpages=1;
   $use_trackback=0;
   $vim_options='+"set expandtab" +"retab"';
  +#$vim_options='+"set expandtab" +"retab" +"let g:html_use_css=0"';
  +# with vim7.1 but hang... why ? :(
   $pds_allowed="png|jpg|jpeg|gif|mp3|zip|tgz|gz|txt|css|exe|hwp|pdf|flv";
   #$vim_options='+"set encoding=UTF-8"'; # for UTF-8 wikis
   $nonexists='fancy';
  @@ -67,7 +69,8 @@
   #$menu_bra='';
   #$menu_cat='';
   #$path='/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin'; # for unixes
  -#$path='c:/windows/command;c:/Program Files/gnuplot'; # for win32
  +#$path='./bin;c:/windows/command;c:/Program Files/gnuplot;c:/Program Files/vim/vim71'; # for win32
  +# ./bin to use user installed bins.
   $theme='azblue';
   $theme_css=0;
   $hr='';
  
  
  


wkpark      2007/10/20 10:50:40

  Modified:    .        monisetup.php
  Log:
  add default config $path for a win32 env.
  
  Revision  Changes    Path
  1.30      +3 -2      moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- monisetup.php	5 Oct 2007 09:00:00 -0000	1.29
  +++ monisetup.php	20 Oct 2007 01:50:40 -0000	1.30
  @@ -1,7 +1,7 @@
   <?php
   // Copyright 2003-2007 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.29 2007/10/05 09:00:00 wkpark Exp $
  +// $Id: monisetup.php,v 1.30 2007/10/20 01:50:40 wkpark Exp $
   
   function _stripslashes($str) {
     return get_magic_quotes_gpc() ? stripslashes($str):$str;
  @@ -86,7 +86,8 @@
         $config['timezone']="'-09-09'";
         // http://kldp.net/forum/message.php?msg_id=7675
         // http://bugs.php.net/bug.php?id=22418
  -      $config['version_class']="'RcsLite'";
  +      //$config['version_class']="'RcsLite'";
  +      $config['path']="./bin;c:/program files/vim/vimXX'";
       }
   
       if (!file_exists('wikilib.php')) {
  
  
  


wkpark      2007/10/21 01:52:12

  Modified:    plugin   markup.php
  Log:
  fix for Win32 env
  
  Revision  Changes    Path
  1.6       +4 -2      moniwiki/plugin/markup.php
  
  Index: markup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/markup.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- markup.php	23 Dec 2006 16:27:14 -0000	1.5
  +++ markup.php	20 Oct 2007 16:52:12 -0000	1.6
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a markup plugin for the MoniWiki
   //
  -// $Id: markup.php,v 1.5 2006/12/23 16:27:14 wkpark Exp $
  +// $Id: markup.php,v 1.6 2007/10/20 16:52:12 wkpark Exp $
   
   function do_markup($formatter,$options) {
       $formatter->section_edit=0;
  @@ -14,7 +14,9 @@
       $formatter->postfilters=array('fiximgpath');
       if (!$options['all']) $formatter->wikimarkup=1;
       if ($options['value']) {
  -        $formatter->send_page(_stripslashes($options['value']),$options);
  +        $val=_stripslashes($options['value']);
  +        $val= preg_replace('/(\r\n|\n|\r)/',"\n",$val); // Win32 fix
  +        $formatter->send_page(_stripslashes($val),$options);
       } else {
           if (isset($options['section'])) {
               $formatter->section_edit=1;
  
  
  


wkpark      2007/10/22 11:45:45

  Modified:    .        wiki.php
  Log:
  Wikiwyg fixes
  
  Revision  Changes    Path
  1.351     +10 -5     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.350
  retrieving revision 1.351
  diff -u -r1.350 -r1.351
  --- wiki.php	16 Oct 2007 11:25:38 -0000	1.350
  +++ wiki.php	22 Oct 2007 02:45:45 -0000	1.351
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.350 2007/10/16 11:25:38 wkpark Exp $
  +// $Id: wiki.php,v 1.351 2007/10/22 02:45:45 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.350 $',1,-1);
  +$_revision = substr('$Revision: 1.351 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -3387,7 +3387,12 @@
                   break;
                 }
               }
  -            $line="<pre $attr>\n".$pre."</pre>\n".$line;
  +            $out="<pre $attr>\n".$pre."</pre>\n";
  +            if ($this->wikimarkup)
  +              $out='<span class="wikiMarkup">'."<!-- wiki:\n{{{:$pre_style\n".
  +                str_replace('}}}','\}}}',$this->pre_line).
  +                "}}}\n-->".$out."</span>";
  +            $line=$out.$line;
               $in_quote=0;
            } else {
               # htmlfy '<', '&'
  @@ -3405,7 +3410,7 @@
                     str_replace('}}}','\}}}',$this->pre_line).
                     "}}}\n-->".$out."</span>";
               }
  -            $line=$out."\n".$line;
  +            $line=$out.$line;
               unset($out);
            }
            $this->nobr=1;
  @@ -3413,7 +3418,7 @@
         if ($this->auto_linebreak && !$in_table && !$this->nobr)
           $text.=$line."<br />\n"; 
         else
  -        $text.=$line."\n";
  +        $text.=$line ? $line."\n":'';
         $this->nobr=0;
         # empty line for quoted div
         if (!$this->auto_linebreak and !$in_pre and trim($line) =='')
  
  
  


wkpark      2007/10/22 11:47:01

  Modified:    local    moniwyg.js
  Log:
  IE innerHTML hack :(
  
  Revision  Changes    Path
  1.19      +128 -28   moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- moniwyg.js	19 Oct 2007 05:21:11 -0000	1.18
  +++ moniwyg.js	22 Oct 2007 02:47:01 -0000	1.19
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.18 2007/10/19 05:21:11 wkpark Exp $
  +// $Id: moniwyg.js,v 1.19 2007/10/22 02:47:01 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -11,6 +11,31 @@
       Wikiwyg.is_opera
   );
   
  +// Wikiwyg fix for IE
  +if (Wikiwyg.is_ie) {
  +    // innerHTML hack :(
  +    Wikiwyg.prototype.fromHtml = function(html) {
  +        //html=html.replace(/<\/span>(\s+)/,"</span><span class=wikiMarkup><!-- wiki:\n$1\n-->$1</span>");
  +        this.div.innerHTML = '<br>' +html; // IE hack :(
  +        this.div.removeChild(this.div.firstChild);
  +        alert('Wikiwyg in #1='+html); // ???
  +    }
  +
  +    Wikiwyg.Mode.prototype.create_dom = function(html) {
  +        var dom = document.createElement('div');
  +        dom.innerHTML = '<br>' + html; // IE hack :(
  +        dom.removeChild(dom.firstChild);
  +        return dom;
  +    }
  +
  +    Wikiwyg.Wysiwyg.prototype.set_inner_html = function(html) {
  +        var body = this.get_edit_document().body;
  +        body.innerHTML = '<br>' + html; // IE hack :(
  +        body.removeChild(body.firstChild);
  +    }
  +}
  +
  +// Moniwiki hack
   Wikiwyg.prototype.saveChanges = function() {
       var self = this;
       var myWikiwyg = new Wikiwyg.Wikitext();
  @@ -19,6 +44,7 @@
       this.current_mode.toHtml( function(html) { self.fromHtml(html) });
   
       if (this.current_mode.classname.match(/(Wysiwyg|HTML|Preview)/)) {
  +
           this.current_mode.fromHtml(this.div.innerHTML);
   
           wikitext = myWikiwyg.convert_html_to_wikitext(this.div.innerHTML);
  @@ -41,7 +67,11 @@
       //alert(datestamp+'/'+section);
   
       myWikiwyg.convertWikitextToHtmlAll(wikitext,
  -        function(new_html) { self.div.innerHTML = new_html });
  +        function(new_html) {
  +            //self.div.innerHTML = new_html
  +            self.div.innerHTML = "<br>" + new_html; // Bah.... IE hack :(
  +            self.div.removeChild(self.div.firstChild);
  +        });
   
       // save
       var toSend = 'action=' + myaction + '/ajax' +
  @@ -66,7 +96,10 @@
           this.displayMode();
           return;
       } else {
  -        self.div.innerHTML=saved;
  +        //self.div.innerHTML=saved;
  +        self.div.innerHTML = "<br>" + saved; // Bah.... IE hack :(
  +        self.div.removeChild(self.div.firstChild);
  +
           var f=document.createElement('div');
           f.setAttribute('class','errorLog');
           // show error XXX
  @@ -113,6 +146,7 @@
       var new_mode = this.modeByName(new_mode_key);
       var old_mode = this.current_mode;
       var self = this;
  +
       new_mode.enableStarted();
       old_mode.disableStarted();
       old_mode.toHtml(
  @@ -133,6 +167,7 @@
   Wikiwyg.prototype.editMode = function(form,text) {
       var self = this;
       var dom = document.createElement('div');
  +
       dom.innerHTML = form;
   
       var form = dom.getElementsByTagName('form')[0];
  @@ -163,13 +198,22 @@
   function fixup_markup_style(html)
   {
       var dom = document.createElement('div');
  -    dom.innerHTML = html;
  +
  +    alert('fixup_markup='+html);
  +    if (Wikiwyg.is_ie) {
  +        dom.innerHTML = "<br>" +html; // Bah.... IE hack :(
  +        dom.removeChild(dom.firstChild);
  +    } else {
  +        dom.innerHTML = html;
  +    }
  +    alert('fixup innerHTML='+dom.innerHTML);
   
       var spans=dom.getElementsByTagName('span');
  +    var className= Wikiwyg.is_ie ? 'className':'class';
   
       if (spans.length) {
           for (var i=0;i<spans.length;i++) {
  -            var cname= spans[i].getAttribute('class');
  +            var cname= spans[i].getAttribute(className) ;
               if (cname == 'wikiMarkup' && spans[i].innerHTML) {
                   // check marcos
                   //var len=spans[i].firstChild.data.length + 7;
  @@ -183,6 +227,13 @@
                       if (part.nodeType == 1 && part.nodeName != 'IMG' &&
                               part.innerHTML && part.innerHTML.indexOf("\n") != -1) {
                           spans[i].style.display='block';
  +                        if (false && Wikiwyg.is_ie) {
  +                            var sn=spans[i].nextSibling;
  +                            var newline = document.createElement("br");
  +                            if (sn && sn.nodeType == 3) {
  +                                sn.parentNode.insertBefore(newline,sn); // XXX IE
  +                            }
  +                        }
                           break;
                       }
                   }
  @@ -196,6 +247,7 @@
   
   proto = Wikiwyg.Wysiwyg.prototype;
   
  +
   proto.get_edit_iframe = function() {
       var iframe=null;
       var body;
  @@ -300,7 +352,6 @@
   proto.enableThis = function() {
       Wikiwyg.Mode.prototype.enableThis.call(this);
       this.edit_iframe.style.border = '1px solid activeborder';
  -    //this.edit_iframe.style.border = '1px solid ActiveBorder';
       //this.edit_iframe.style.backgroundColor = '#ffffff';
       //this.edit_iframe.setAttribute('style','1px solid ThreeDFace;background:#fff;');
       this.edit_iframe.width = '99%';
  @@ -329,9 +380,9 @@
               if (this.should_link_stylesheet(style))
                   this.apply_linked_stylesheet(style, head);
       }
  +    this.enable_keybindings();
  +    this.clear_inner_html();
   */
  -    //this.enable_keybindings();
  -    //this.clear_inner_html();
   }
   
   proto.do_link = function() {
  @@ -388,6 +439,8 @@
       html = html.replace(/<!-=-/g, '<!--').
                   replace(/-=->/g, '-->');
   
  +    //alert(html);
  +
       // Opera note: opera internally use upper case tag names.
       //  e.g.) <A class=..></A> <IMG src=..
       // IE note: IE does not quote some attributes, class,title,etc.
  @@ -424,12 +477,16 @@
       html =
           html.replace(/<tt class[^>]+>([^>]+)<\/tt>/ig, "{{{$1}}}");
   
  -    dom.innerHTML = html;
  +    dom.innerHTML = "<br>" +html; // Bah.... IE hack :(
  +    dom.removeChild(dom.firstChild);
  +
  +    alert(dom.innerHTML);
  +
       this.output = [];
       this.list_type = [];
       this.indent_level = 0;
   
  -    this.walk(dom);
  +    this.walk_n(dom);
   
       // add final whitespace
       this.assert_new_line();
  @@ -453,14 +510,15 @@
           if (height) attr+=(attr ? '&':'') + 'height='+height;
   
           if (style) {
  -            var m = style.match(/width:\s*(\d+)px;\s*height:\s*(\d+)px/);
  -            if (m) {
  -                if (m[1]) attr+=(attr ? '&':'') + 'width='+m[1];
  -                if (m[2]) attr+=(attr ? '&':'') + 'height='+m[2];
  -            }
  +            if (typeof style == 'object') style= style.cssText;
  +            alert(style);
  +            var w = style.match(/width:\s*(\d+)px/i);
  +            var h = style.match(/height:\s*(\d+)px/i);
  +            if (w) attr+=(attr ? '&':'') + 'width='+w[1];
  +            if (h) attr+=(attr ? '&':'') + 'height='+h[1];
           }
   
  -        if (myclass) {
  +        if (myclass) { // FIXME
               var m = myclass.match(/img(Center|Left|Right)$/);
               if (m && m[1]) attr+=(attr ? '&':'') + 'align='+m[1].toLowerCase();
           }
  @@ -480,8 +538,9 @@
           this.myattr= '<tablewidth="'+width + 'px">';
       } else 
       if (style) {
  +        if (typeof style == 'object') style= style.cssText;
           var attr='';
  -        var m = style.match(/width:\s*(\d+)px;\s*height:\s*(\d+)px/);
  +        var m = style.match(/width:\s*(\d+)px;\s*height:\s*(\d+)px/i);
           if (m)
               attr='<tablewidth="'+m[1] + 'px" height="'+m[2]+'px">';
           
  @@ -522,7 +581,7 @@
   
   proto.format_td = function(element) {
       var colspan =element.getAttribute('colspan');
  -    var align =element.getAttribute('class');
  +    var align =element.getAttribute('class') || element.getAttribute('className');
       if (colspan) {
           for (var i=0;i<colspan;i++)
               this.appendOutput('||');
  @@ -534,12 +593,19 @@
       this.myattr=null;
   
       var rowspan =element.getAttribute('rowspan');
  -    if (rowspan)
  +    if (rowspan > 1)
           this.appendOutput('<|'+rowspan+'>');
   
  -    //if (align) this.appendOutput('<align='+align+'>');
  -    this.appendOutput('');
  +    // to support the PmWiki style table alignment
  +    // firstChild have to be a text node
  +    // BUT IE ignore the firstChild if it is spaces!!
  +    // and you can't get raw spaces info from DOM elements
  +    //   see also http://www.javascriptkit.com/domref/nodetype.shtml
  +    // but there is a simple way to workaround this situation!
  +    // like as following line. Wow !! :>
  +    if (Wikiwyg.is_ie && align.match(/right|center/)) this.appendOutput(' ');
       this.walk_n(element);
  +    this.appendOutput('');
       this.chomp_n(); // table specific chomp
       this.appendOutput('');
       this.chomp_n(); // chomp again
  @@ -582,7 +648,7 @@
       }
       if (string) {
           string = string.replace(/[\r\n]+$/, '');
  -        this.appendOutput(string);
  +        if (string != '') this.appendOutput(string); // MY
       }
   }
   
  @@ -756,12 +822,13 @@
           if (node.nodeType == this.COMMENT_NODE_TYPE
               && node.data.match(/^\s*wiki/)) {
               var ele=node.nextSibling ? node.nextSibling.firstChild:null;
  +
               if (ele && node.data.match(/\nattachment:/) && ele.tagName && ele.tagName.toLowerCase() == 'img') {
                   // check the attributes of the attached images
                   var style = ele.getAttribute('style');
                   var width = ele.getAttribute('width');
                   var height = ele.getAttribute('height');
  -                var myclass = ele.getAttribute('class');
  +                var myclass = ele.getAttribute('class') || ele.getAttribute('className');
                   var align = '';
   
                   var attr=new Array();
  @@ -771,12 +838,13 @@
                   ele.setAttribute('width','');
                   ele.setAttribute('height','');
   
  -                if (style && style.match) {
  +                if (style) {
  +                    if (typeof style == 'object') style = style.cssText;
                       var m = style.match(/width:\s*(\d+)px;\s*height:\s*(\d+)px/);
                       if (m) {
                           if (m[1]) attr["width"]='width='+m[1];
                           if (m[2]) attr["height"]='height='+m[2];
  -                        ele.setAttribute('style','');
  +                        ele.setAttribute('style',null);
                       }
                   }
   
  @@ -855,7 +923,7 @@
           text = text.replace(/^ wiki:\s+/, '')
                      .replace(/-=/g, '-')
                      .replace(/==/g, '=')
  -                   .replace(/\s$/, '')
  +                   .replace(/(\r\n|\n|\r)+$/, '') //.replace(/\s$/, '') IE fix
                      .replace(/\{(\w+):\s*\}/, '{$1}');
           this.appendOutput(Wikiwyg.htmlUnescape(text))
           this.smart_trailing_space_n(element);
  @@ -872,7 +940,7 @@
               var nn = next.nextSibling;
               if (! (nn && nn.nodeType == 1 && nn.nodeName == 'SPAN') && nn.nodeType != 3) {
                   this.appendOutput('\n');
  -                alert(nn.nodeName + nn.nodeType);
  +                ////// XXX alert(nn.nodeName + nn.nodeType);
               }
           }
           else {
  @@ -880,6 +948,19 @@
           }
       }
       else if (next.nodeType == 3) {
  +        if (Wikiwyg.is_ie && this.output.length) { // IE innerHTML space hack
  +            str = this.output[this.output.length - 1];
  +            if (str.length) {
  +                var str1 = str.length ? str.substr(str.length-1):''; // XXX
  +                var str2 = (str.length > 3 && str1 == '}') ? str.substr(str.length-3):''; // XXX
  +                if (str.indexOf("\n") != -1 && str2 == '}}}') {
  +                    //var save = this.output.pop();
  +                    //this.appendOutput("\n");
  +                    //this.appendOutput(save);
  +                    this.appendOutput("\n");
  +                }
  +            }
  +        }
           if (! next.nodeValue.match(/^\s/)) {
               this.no_following_whitespace();
           } else if (next.nodeValue.match(/\n/) && next.nodeValue.match(/^\s+$/)){
  @@ -1086,7 +1167,7 @@
   }
   
   proto.handle_bound_phrase = function(element, markup) {
  -    this.assert_space_or_newline(); // FIX
  +    this.assert_space_or_newline_n(); // FIX XXX
       this.appendOutput(markup[1]);
       this.no_following_whitespace();
       this.walk(element);
  @@ -1094,6 +1175,24 @@
       this.appendOutput(markup[2]);
   }
   
  +proto.assert_space_or_newline_n = function() {
  +    var string;
  +    if (! this.output.length) return;
  +
  +    string = this.output[this.output.length - 1];
  +    if (string.length) {
  +        var str = string.length ? string.substr(string.length-1):''; // XXX
  +        var str2 = (string.length > 3 && str == '}') ? string.substr(string.length-3):''; // XXX
  +        if (Wikiwyg.is_ie && str2 == '}}}')
  +            this.appendOutput("\n");
  +        else
  +        if (! str.whitespace && ! str.match(/(\s+|[>\|\"\':])$/)) {
  +            alert(str);
  +            this.appendOutput(' ');
  +        }
  +    }
  +}
  +
   proto.assert_space_or_newline = function() {
       var string;
       if (! this.output.length) return;
  @@ -1121,6 +1220,7 @@
   
   proto.convertWikitextToHtml = function(wikitext, func) {
       var postdata = 'action=markup&value=' + encodeURIComponent(wikitext);
  +
       HTTPPost(
           self.location,
           postdata,
  
  
  


wkpark      2007/10/22 11:51:51

  Modified:    local/Wikiwyg/lib/Wikiwyg Preview.js
  Log:
  IE innerHTML hack :(
  
  Revision  Changes    Path
  1.2       +0 -4      moniwiki/local/Wikiwyg/lib/Wikiwyg/Preview.js
  
  Index: Preview.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/lib/Wikiwyg/Preview.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Preview.js	1 Feb 2006 08:20:10 -0000	1.1
  +++ Preview.js	22 Oct 2007 02:51:51 -0000	1.2
  @@ -42,10 +42,6 @@
       this.div.style.backgroundColor = 'lightyellow';
   }
   
  -proto.fromHtml = function(html) {
  -    this.div.innerHTML = html;
  -}
  -
   proto.toHtml = function(func) {
       func(this.div.innerHTML);
   }
  
  
  


wkpark      2007/10/22 11:55:40

  Modified:    plugin/processor vim.php
  Log:
  fix for the vim73
  
  Revision  Changes    Path
  1.36      +17 -7     moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- vim.php	5 Aug 2006 06:17:46 -0000	1.35
  +++ vim.php	22 Oct 2007 02:55:40 -0000	1.36
  @@ -10,7 +10,7 @@
   // Win32 note:
   //  add $path="/bin;/Program Files/Vim/VimXX"; in the config.php
   //
  -// $Id: vim.php,v 1.35 2006/08/05 06:17:46 wkpark Exp $
  +// $Id: vim.php,v 1.36 2007/10/22 02:55:40 wkpark Exp $
   
   function processor_vim($formatter,$value,$options) {
     global $DBInfo;
  @@ -65,9 +65,6 @@
   </script>";
     }
   
  -  $stag="<pre class='wikiSyntax' id='PRE-$uniq' style='font-family:FixedSys,monospace;color:#c0c0c0;background-color:black'>\n";
  -  $etag="</pre>\n";
  -
     if (!is_dir(dirname($html))) {
       $om=umask(000);
       _mkdir_p(dirname($html),0777);
  @@ -116,7 +113,7 @@
   
     $cmd= "$vim $vim_default -e -s $tmpf ".
           ' +"syntax on " +"set syntax='.$type.'" '.$option.
  -        ' +"so '.$tohtml.'" +"wq! '.$fout.'" +q';
  +        ' +"so '.$tohtml.'" +"wq! '.$fout.'" +qall';
   
     $log='';
     if(getenv("OS")=="Windows_NT") {
  @@ -138,9 +135,22 @@
     #$out=preg_replace("/<title.*title>|<\/?head>|<\/?html>|<meta.*>|<\/?body.*>/","", $out);
     $out=str_replace("\r\n","\n",$out); # for Win32
     #$out=preg_replace("/(^(\s|\S)*<pre>\n|\n<\/pre>(\s|\S)*$)/","",$out); # XXX segfault sometime
  +
  +  $myspan='pre';
     $fpos=strpos($out,'<pre>');
  -  $tpos=strpos($out,'</pre>');
  -  $out=substr($out,$fpos+6,$tpos-$fpos-7);
  +  if ($fpos === false) {
  +    $myspan='div';
  +    $fpos=strpos($out,'<body');
  +    $tpos=strpos($out,'</body>');
  +    $out=substr($out,$fpos+7,$tpos-$fpos-7);
  +    $out=preg_replace('/^[^>]+>/','',$out);
  +  } else {
  +    $tpos=strpos($out,'</pre>');
  +    $out=substr($out,$fpos+6,$tpos-$fpos-7);
  +  }
  +  $stag="<$myspan class='wikiSyntax' id='PRE-$uniq' style='font-family:FixedSys,monospace;color:#c0c0c0;background-color:black'>\n";
  +  $etag="</$myspan>\n";
  +
   
     $lines=explode("\n",$out);
     $out="<span class=\"line\">".
  
  
  


wkpark      2007/10/23 12:37:20

  Added:       plugin/processor monimarkup.php
  Log:
  a new wiki processor
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/processor/monimarkup.php
  
  Index: monimarkup.php
  ===================================================================
  <?php
  // Copyright 2006-2007 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a moniwiki formatting processor for the MoniWiki
  //
  // $Id: monimarkup.php,v 1.1 2007/10/23 03:37:20 wkpark Exp $
  /**
   * @date    2006-08-09
   * @name    Moniwiki Processor
   * @desc    Moniwiki default processor
   * @version $Revision: 1.1 $
   * @depend  1.1.3
   * @license GPL
   */
  
  class processor_monimarkup
  {
      var $_type='wikimarkup';
  
      function processor_monimarkup(&$formatter,$options=array())
      {
          $this->formatter=&$formatter;
      }
  
      function _pass1($text)
      {
          // NoSmoke MultilineCell to moniwiki for lower version compatibility
          $text=str_replace(array('{{|','|}}'),
              array("{{{:.closure\n",'}}}'),$text);
          // Pass #1: separate code inline/blocks.
          $chunk=preg_split('/({{{|}}})/',$text,-1,
              PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);
          $state=0;
          $ci=-1;
          $ii=0;
          $inline=array();
          $block=array();
          $btype=array();
          $j=1;
          $k=1;
          $sz=count($chunk);
          for ($i=0;$i<$sz;++$i) {
              if ($chunk[$i] == '{{{') {
                  ++$state;
                  if ($state == 1) {
                      $ci=$i;
                  } else if ($state > 1) {
                      $chunk[$ci].=$chunk[$i];
                      unset($chunk[$i]);
                  }
              } else if ($state > 0) {
                  $chunk[$ci].=$chunk[$i];
                  if ($chunk[$i] == '}}}') {
                      --$state;
                      if ($state==0) {
                          if (strpos($chunk[$ci],"\n")) {
                              $block[$j]=substr($chunk[$ci],3,-3);
                              $chunk[$ci]="\007".$j."\007";
                              list($type,$dum)= explode("\n",$block[$j],2);
                              if (!empty($type)) {
                                  if ($type{0}=='#' and $type{1}=='!') {
                                      list($tag,$dummy)= explode(' ',$type);
                                      $btype[$j]=substr($tag,2);
                                  } else if ($type{0} == ':') {
                                      # for a quote block
                                      $block[$j]=substr($block[$j],1);
                                      $arg= substr($type,1);
                                      if ($type{1}=='#' or $type{1}=='.') {
                                          $btype[$j]='moni';
                                          $block[$j]='#!moni '.$arg."\n".$dum;
                                      } else {
                                          $btype[$j]='moni';
                                          $block[$j]="#!moni .quote\n$arg\n".$dum;
                                      }
                                  } else {
                                      // XXX check processor/block type
                                      $btype[$j]='plain';
                                  }
                              } else { // ignore first "\n"
                                  $block[$j]=$dum;
                                  $btype[$j]=$tag;
                              }
                              ++$j;
                          } else {
                              $inline[$k]=$chunk[$ci];
                              #$inline[$k]=substr($chunk[$ci],3,-3);
                              $chunk[$ci]="\035".$k."\035";
                              ++$k;
                          }
                      }
                  }
                  unset($chunk[$i]);
              }
          }
          # close last block/inline '}}}'
          #if ($state>0)
          #    for (;$state>0;$state--) $chunk[$ci].='}}}';
  
          #print_r($chunk);
          $body=implode('',$chunk);
          #print $body;
          return array($body,$inline,$block,$btype);
      }
  
      function _node($depth,&$node,$line)
      {
          if (is_array($node[$depth])) {
              $my=$node[$depth];
              $my['value']=$line;
              $my['depth']=$depth;
              return $my;
          } else {
              return $line;
          }
      }
  
      function _pass2($text)
      {
          $lines=explode("\n",$text);
          $chunk=array();
          $indlen=0;
          $myindlen=0;
          $_indlen=array(0);
          $_indtype=array(null);
          $_nodtype=array('');
          $_myindlen=array(0);
          $_in_li=0;
          $_eop=0; // end of paragraph
          $oline=null;
          foreach ($lines as $line) {
              if (!trim($line)) {
                  if ($_in_li) $oline.="\n".$line;
                  else {
                      $oline.=isset($oline) ? "\n".$line:$line;
                      $_eop=1;
                  }
                  continue;
              } else if (preg_match("/^([ ]*(={1,5})\s(.*\s*)\s\\2\s?)$/",$line,$m)) {
                  $tag='HEAD';
                  $depth=strlen($m[2]);
                  if ($oline)
                      $chunk[]= $this->_node($_in_li,$_nodtype,$oline);
                  $oline=null;
                  $chunk[]=array('tag'=>'HEAD','type'=>'complete',
                      'depth'=>$depth,'value'=>$m[3]);
                  $_eop=0;
                  $_in_li=0;
                  continue;
              } else if (preg_match("/^[ ]*(-{4,})$/",$line,$m)) {
                  if ($oline)
                      $chunk[]= $this->_node($_in_li,$_nodtype,$oline);
                  $oline=null;
                  $_eop=0;
                  $_in_li=0;
                  $chunk[]=array('tag'=>'HR','type'=>'complete','value'=>$m[1]);
                  continue;
              } else if (preg_match("/^((?:\>\s)*\>(\.\w+)?\s|\s+)/",$line,$m)) {
                  $_eop=0;
                  $mytype=array('tag'=>'LIST','type'=>'di');
                  $indlen=$myindlen=strlen($m[0])-strlen($m[2]);
                  if ($line{0}=='>') {
                      $myclass=$m[2] ? substr($m[2],1):'quote';
                      $mytype['attributes']=array('class'=>$myclass);
                      $mytype['type']='dq';
                      $indlen=$myindlen=$myindlen>>1;
                  }
                  #print_r($m);
                  #print "==$indlen`".$m[1]."'".$line."<br>\n";
                  $cutline=substr($line,strlen($m[0]));
                  $indtype=null;
                  if (preg_match("/^((\*\s?)|(?:([1-9]\d*|[aAiI])\.)(?:#(\d+))?\s)/",
                      $cutline,$m)) {
                      $myindlen=$indlen+strlen($m[1])-strlen($m[4]);
                      $type=$m[2] ? 'ul':$m[3];
                      $mytype['type']=$type;
                      $start=$m[4] ? $m[4]:($m[3] ? $m[3]:null);
                      if (isset($start) and is_numeric($start) and $start > 1)
                          $mytype['attributes']=array('start'=>$start);
                      $cutline=substr($cutline,strlen($m[1]));
                      $indtype='li';
                  }
                  if ($indlen < $_indlen[$_in_li]) {
                      // fix indlen XXX
                      if ($oline)
                          $chunk[]=$this->_node($_in_li,$_nodtype,$oline);
                      while($_in_li > 0 && $indlen < $_indlen[$_in_li]) {
                          unset($_indlen[$_in_li]);
                          unset($_indtype[$_in_li]);
                          unset($_nodtype[$_in_li]);
                          unset($_myindlen[$_in_li]);
                          --$_in_li;
                      }
                      if ($_in_li) {
                          if (!$indtype)
                              $_nodtype[$_in_li]['type']='cdata';
                          else {
                              $_myindlen[$_in_li]=$myindlen;
                              $_nodtype[$_in_li]=$mytype;
                          }
                      }
                      $oline=$cutline;
                      continue;
                  }
                  if ($_indtype[$_in_li] == $indtype) {
                      if ($indlen == $_indlen[$_in_li]) {
                          if ($indtype or
                              $_nodtype[$_in_li]['attributes']['class'] !=
                              $mytype['attributes']['class']) {
                              # another list/indent
                              if ($oline)
                                  $chunk[]=
                                      $this->_node($_in_li,$_nodtype,$oline);
                              $_myindlen[$_in_li]=$myindlen;
                              $_nodtype[$_in_li]=$mytype;
                              $oline=$cutline;
                          } else # continued indent
                              $oline.= isset($oline) ? "\n".$cutline:$cutline;
                          continue;
                      }
                  }
                  if ($_indlen[$_in_li]) { // continued list ?
                      if ($indlen == $_indlen[$_in_li]) {
                          if ($indtype) {
                              if ($oline)
                                  $chunk[]=
                                      $this->_node($_in_li,$_nodtype,$oline);
                              $_myindlen[$_in_li]=$myindlen;
                              $_nodtype[$_in_li]=$mytype;
                              $oline=$cutline;
                              continue;
                          } else 
                              $oline.= isset($oline) ? "\n".$cutline:$cutline;
                          $_myindlen[$_in_li]=$indlen; // reset myindlen
                          continue;
                      }
                      if (!$indtype and $indlen == $_myindlen[$_in_li]) {
                          $oline.="\n".substr($line,$myindlen);
                          continue;
                      }
                  }
                  if ($indlen > $_indlen[$_in_li]) {
                      if ($oline)
                          $chunk[]= $this->_node($_in_li,$_nodtype,$oline);
                      $_in_li++;
                      $_indtype[$_in_li]=$indtype; # add list type
                      $_indlen[$_in_li]=$indlen; # add list depth
                      $_nodtype[$_in_li]=$mytype; # add list depth
                      $_myindlen[$_in_li]=$myindlen; # add list depth
                      #if (!$indtype)
                      #$_nodtype[$_in_li]['type']='cdata';
                      $oline=$cutline;
                      continue;
                  }
                  // not reach
              }
              // paragraph block
              if ($_indlen[$_in_li]) {
                  $chunk[]= $this->_node($_in_li,$_nodtype,$oline);
                  $_in_li=0;
                  $_eop=0;
                  $oline=$line;
                  continue;
              } else if ($_eop) {
              #} else if ($_eop and $oline) {
                  $chunk[]= $oline;
                  $_eop=0;
                  $oline=$line;
                  continue;
              }
              $oline.=isset($oline) ? "\n".$line:$line;
          }
          if ($oline)
              $chunk[]= $this->_node($_in_li,$_nodtype,$oline);
          #print_r($chunk);
          return $chunk;
      }
  
      function _parseTable($text) {
          if (substr($text,-1,1)=="\n") {
              $_del_cr=1;
              $text=substr($text,0,-1);
          }
          if (preg_match("/^(\010|\006).*\\1/s",$text,$m)) {
              $_diff=$m[1];
              $text=substr($text,1,-1);
          }
          $formatter=&$this->formatter;
          $_in_table=0;
          $lines=explode("\n",$text);
          $tout='';
          foreach ($lines as $line) {
              if (!trim($line)) {
                  if ($_in_table) {
                      $tout.=$formatter->_table(0,$dumm);
                      $_in_table=0;
                  }
                  $tout.=$line."\n";
                  continue;
              }
              $tr_diff='';
              if ($line{0}== "\010" or $line{1}=="\006") {
                  $tr_diff=$line{0} == "\010" ? 'diff-added':'diff-removed';
                  $line=substr($line,1,-1);
              }
              if (!$_in_table and $line[0]=='|' and
                  preg_match("/^(\|([^\|]+)?\|((\|\|)*))(&lt;[^>\|]*>)?(.*)(\|\|)$/s",$line,$m)) {
                  $open.=$formatter->_table(1,$m[5]);
                  if ($m[2]) $open.='<caption>'.$m[2].'</caption>';
                  if (!$m[5]) $line='||'.$m[3].$m[6].'||';
                  $_in_table=1;
              } elseif ($_in_table and $line[0]!='|') {
                  $close=$formatter->_table(0,$dumm).$close;
                  $_in_table=0;
              }
              if ($_in_table) {
                  $line=substr($line,0,-2);
                  $cells=preg_split('/((?:\|\|)+)/',$line,-1,
                      PREG_SPLIT_DELIM_CAPTURE);
                  $row='';
                  $tr_attr=$tr_diff ? 'class="'.$tr_diff.'"':'';
                  for ($i=1,$s=sizeof($cells);$i<$s;$i+=2) {
                      $align='';
                      preg_match('/^((&lt;[^>]+>)?)(\s?)(.*)(?<!\s)(\s*)?$/s',
                      $cells[$i+1],$m);
                      $cell=$m[3].$m[4].$m[5];
                      $cell=str_replace("\n","<br />\n",$cell);
                      if ($m[3] and $m[5]) $align='center';
                      else if (!$m[3]) $align='';
                      else if (!$m[5]) $align='right';
  
                      $attr=$formatter->_td_attr($m[1],$align);
                      if (!$tr_attr) $tr_attr=$m[1]; // XXX
                      $attr.=$formatter->_td_span($cells[$i]);
                      $row.="<td $attr>".$cell.'</td>';
                  }
                  $line='<tr '.$tr_attr.'>'.$row.'</tr>';
                  $line=str_replace('\"','"',$line); # revert \\" to \"
              }
              $tout.=$close.$open.$line."\n";
              $close='';$open='';
          }
          if (isset($_del_cr) and substr($tout,-1,1)!="\n") $tout.="\n";
          if ($_in_table) $tout.=$formatter->_table(0,$dumm);
          $tout=substr($tout,0,-1); // trash last "\n"; // XXX
  
          if ($_diff) $tout=$_diff.$tout.$_diff;
          return $tout;
      }
  
      function process($body='',$options=array()) {
          global $Config;
  
          if (trim($body)=='') return '';
          #$body=rtrim($body); # delete last empty line
          $palign=array('&lt;'=>'text-align:left',
                           '='=>'text-align:center',
                           '>'=>'text-align:right');
  
          $inline=array();
          $block=array();
          $btype=array();
          $options['nodiff']=0;
          $options['nomarkup']=0;
          $formatter=&$this->formatter;
  
          $pi=&$formatter->pi;
          #$formatter->set_wordrule($pi);
  
          if ($body{0}=='#' and $body{1}=='!') {
              list($line,$body)=explode("\n",$body,2);
              $dum=preg_split('/\s+/',$line);
              $myarg=$dum[1];
          }
  
          $my_divopen='';
          $my_divclose='';
          if (isset($myarg)) {
              if ($myarg{0}=='.') $my_type='class';
              else if ($myarg{0}=='#') $my_type='id';
              if (isset($my_type)) {
                  $my_name=substr($myarg,1);
                  $my_divopen="<div $my_type='$my_name'>";
                  $my_divclose='</div>';
              }
          }
          $wordrule="({{{(?U)(.+)}}})|".
                "\[\[([A-Za-z0-9]+(\(((?<!\]\]).)*\))?)\]\]|"; # macro
          if ($Config['inline_latex']) # single line latex syntax
              $wordrule.="(?<=\s|^|>)\\$([^\\$]+)\\$(?:\s|$)|".
                   "(?<=\s|^|>)\\$\\$([^\\$]+)\\$\\$(?:\s|$)|";
          #if ($Config['builtin_footnote']) # builtin footnote support
          $wordrule.=$formatter->footrule.'|';
          $wordrule.=$formatter->wordrule;
  
          # 1-pass
          list($body,$inline,$block,$btype)=$this->_pass1($body);
          # 2-pass
          $chunk=$this->_pass2($body);
  
          $hr_func=$Config['hr_type'].'_hr';
  
          $_lidep=array(0);
          $_lityp=array(0);
          $_li=0;
          $out='';
          foreach ($chunk as $c) {
              if (is_array($c)) {
                  $val=&$c['value'];
                  $val= preg_replace($formatter->baserule,
                      $formatter->baserepl,$val);
                  if ($_li>0 and $c['tag']!='LIST')
                      while($_li>0 and $_lidep[$_li] > 0) {
                          $out.=$this->_li(0,$_lityp[$_li]);
                          $out.=$this->_list(0,$_lityp[$_li]);
                          --$_li;
                      }
                  switch($c['tag']) {
                  case 'HEAD':
                      $val=preg_replace_callback("/(".$wordrule.")/",
                          array(&$formatter,'link_repl'),$val);
                      ++$formatter->sect_num;
                      $anchor=$ed='';
                      if (!empty($formatter->section_edit) &&
                              empty($formatter->preview)) {
                          $act='edit';
                          $sect_num=&$formatter->sect_num;
                          if ($Config['sectionedit_attr']) {
                              if (!is_string($Config['sectionedit_attr']))
                                  $sect_attr=' onclick='.
                                      '"javascript:sectionEdit(null,this,'.
                                      $sect_num.');return false;"';
                              else
                                  $sect_attr=$Config['sectionedit_attr'];
                          }
                          $url=$formatter->link_url($formatter->page->urlname,
                              '?action='.$act.'&amp;section='.$sect_num);
                          $lab=_("edit");
                          $ed="<div class='sectionEdit' style='float:right;'>".
                              "[<a href='$url'$sect_attr>$lab</a>]</div>\n";
                          $anchor_id='sect-'.$sect_num;
                          $anchor="<a id='$anchor_id'></a>";
                      }
  
                      if ($sect_num >1) $out.=$this->_div(0);
                      $out.=$this->_div(1," class='level$c[depth]'");
                      $out.= $anchor.$ed.$formatter->head_repl($c['depth'],$val);
                      break;
                  case 'HR':
                      $out.= $c['value'];
                      // already converted by $baserule
                      #$out.= $formatter->$hr_func($c['value']);
                      break;
                  case 'LIST':
                      $test=$c['type'];
                      $type=is_numeric($test{0}) ? 'ol':$test;
                      $linfo='';
                      $listy='';
                      if ($type=='ol')
                          $linfo=$c['attributes'] ? $c['attributes']['start']:'';
                      else if ($test{0}=='d') {
                          $linfo=$c['attributes'] ? $c['attributes']['class']:'';
                          if (preg_match('/^((\s*)(&lt;|=|>)?{([^}]+)})/s',$val,
                                  $sty)) {
                              if ($sty[3]) $sty[4].=';'.$palign[$sty[3]];
                              $val=$sty[2].substr($val,strlen($sty[1]));
                              $listy=$sty[4];
                          }
                      }
  
                      // new list/indent type
                      if ($_lidep[$_li] == $c['depth'] and 
                          $_li== 1 and $type!= $_lityp[$_li]) {
                          // close all
                          while($_li>0) {
                              $out.=$this->_li(0,$_lityp[$_li]);
                              $out.=$this->_list(0,$_lityp[$_li]);
                              --$_li;
                          }
                      }
                      if ($_lidep[$_li] < $c['depth']) {
                          $out.=$this->_list(1,$type,$linfo);
                          $out.=$this->_li(1,$type,$linfo,$listy);
                          ++$_li;
                          $_lidep[$_li]=$c['depth'];
                          $_lityp[$_li]=$type;
                      } else if ($_lidep[$_li] == $c['depth']) {
                          $out.=$this->_li(0,$type);
                          $out.=$this->_li(1,$type,$linfo,$listy);
                      } else {
                          while($_li>0 and $_lidep[$_li] > $c['depth']) {
                              $out.=$this->_li(0,$_lityp[$_li]);
                              $out.=$this->_list(0,$_lityp[$_li]);
                              --$_li;
                          }
                          if ($c['type']!='cdata') {
                              $out.=$this->_li(0,$type);
                              $out.=$this->_li(1,$type,$linfo,$listy);
                          }
                      }
                      if (strpos($val,'||')!== false)
                          $val=$this->_parseTable($val);
                      $val=preg_replace_callback("/(".$wordrule.")/",
                          array(&$formatter,'link_repl'),$val);
                      if ($formatter->auto_linebreak) {
                          $val1=$val;
                          $val=preg_replace("/(?<!>|\007)\n/","<br />\n",$val);
                          if ($val1!=$val) $val.="<br />";
                          unset($val1);
                      }
                      else {
                          $val1=$val;
                          $val=preg_replace("/^[ ]*$/m","<br />",$val1);
                          if ($val1!=$val) $val.="<br />";
                          unset($val1);
                      }
                      #print "<pre>".htmlspecialchars($val)."</pre>";
                      $out.=$val;
                      break;
                  default:
                      break;
                  }
              } else {
                  $c= preg_replace($formatter->baserule,$formatter->baserepl,$c);
                  if (strpos($c,'||')!== false) {
                      $c=$this->_parseTable($c);
                  }
  
                  if (preg_match('/^((\s*)(&lt;|=|>)?{([^}]+)})/s',$c,$sty)) {
                      if ($sty[3]) $sty[4].=';'.$palign[$sty[3]];
                      $c=$sty[2].substr($c,strlen($sty[1]));
                  }
  
                  if ($formatter->auto_linebreak)
                      $c=preg_replace("/(?<!>|\007|^)\n/","<br />\n",$c);
                  else
                      $c=preg_replace("/^[ ]*$/m","<br />",$c);
                  $c=preg_replace_callback("/(".$wordrule.")/",
                      array(&$formatter,'link_repl'),$c);
                  while($_li>0 and $_lidep[$_li] > 0) {
                      $out.=$this->_li(0,$_lityp[$_li]);
                      $out.=$this->_list(0,$_lityp[$_li]);
                      --$_li;
                  }
  
                  $out.= $this->_div(1,' class="para"',$sty[4]).$c.$this->_div(0);
              }
          }
          while($_li>0 and $_lidep[$_li] > 0) {
              $out.=$this->_li(0,$_lityp[$_li]);
              $out.=$this->_list(0,$_lityp[$_li]);
              --$_li;
          }
          if ($formatter->sect_num >1) $out.=$this->_div(0);
          if (!empty($formatter->smiley_rule))
              $out=preg_replace($formatter->smiley_rule,
                  $formatter->smiley_repl,$out);
  
          $out=preg_replace("/\007(\d+)\007/e",
              "\$formatter->processor_repl(\$btype[$1],\$block[$1])",$out);
          $out=preg_replace("/\035(\d+)\035/e", 
              "\$formatter->link_repl(\$inline[$1])",$out);
  
          return $my_divopen.$out.$my_divclose;
      }
  
      function _list($on,$type='',$linfo='')
      {
          $close=$on ? '':'/';
          if ($type{0}=='d') {
              if ($on) {
                  $attr=$linfo ?  " class='$linfo'":" class='indent'";
                  return "<blockquote$attr>\n";
              } else {
                  return "</blockquote>\n";
              }
          }
          if ($on) {
              if ($linfo) {
                  $start=substr($linfo,1);
                  if ($start)
                      return "<$type type='$linfo[0]' start='$start'>";
                  return "<$type type='$linfo[0]'>";
              }
              return "<$type>\n";
          }
          return "</$type>\n";
      }
  
      function _li($on,$type='',$start=null,$sty='')
      {
          if ($type{0}=='d') {
              if ($sty) $sty=' style="'.$sty.'"';
              return $on ? "<div$sty>":"</div>\n";
          }
          if ($on) {
              if ($start)
                  return "<li value='$start'>";
              return "<li>";
          }
          return "</li>\n";
      }
  
      function _div($on,$attr='',$sty='') {
          if ($sty) $sty=' style="'.$sty.'"';
          $tag=array("</div>\n","<div$attr$sty>");
          return $tag[$on].$close;
      }
  }
  
  if (basename($_SERVER['argv'][0]) == basename(__FILE__)) {
  //if (basename($_SERVER['SCRIPT_NAME']) == basename(__FILE__)) {
  
  $text=<<<EOF
  Paragraph
  Paragraph
   Paragraph
   Paragraph
    PARA
    PARA
   * '''''Mix''' at the beginning''
     test test
     test
      * sublist
        sublist
        sublist
        sublist
        sublist
  
         ddd
         ddd
  
      sublist continue
      sublist
  
     test continue
     test
   * '''''Mix'' at the beginning'''
     TEst test second
     continue
  
     continue
   * '''Mix at the ''end'''''
     third
     continue
   * ''Mix at the '''end'''''
  ----
   1. first
      first
    1. hello world
       hello world
   2. second
      second
   3.#4 third
      third
  EOF;
  $text=<<<EOF
  == Text Formatting Rules ==
  
  Leave blank lines between paragraphs. Use {{{[[BR]]}}} to insert linebreaks into paragraphs.
  
  You can render text in ''italics'' or '''bold'''.
  To write italics, enclose the text in double single quotes.
  To write bold, enclose the text in triple single quotes.
  __Underlined text__ needs a double underscore on each side.
  You get ^superscripted^ text by enclosing it into caret characters,
  and ,,subscripts,, have to be embedded into double commas.
  
  To insert program source without reformatting in a {{{monospace font}}}, use three curly braces:
  {{{
  10 PRINT "Hello, world!"
  20 GOTO 10
  }}}
  Note that within code sections, both inline and display ones, any wiki markup is ignored. An alternative and shorter syntax for `inlined code` is to use backtick characters.
  
  For more information on the possible markup, see HelpOnEditing.
  
  === Example ===
  {{{
  __Mixing__ ''italics'' and '''bold''':
   * '''''Mix''' at the beginning'' 
   * '''''Mix'' at the beginning'''
   * '''Mix at the ''end'''''
   * ''Mix at the '''end'''''
  
  You might recall ''a''^2^ `+` ''b''^2^ `=` ''c''^2^ from your math lessons, unless your head is filled with H,,2,,O.
  
  An {{{inline code sequence\}}} has the start and end markers on the same line. Or you use `backticks`.
  
  A code display has them on different lines: {{{
  '''No''' markup here!
  \}}}
  }}} 
  /!\ In the above example, we "escaped" the markers for source code sequences by inserting \ character before the curly braces.
  
  /!\ MoinMoin does not support escape "{''''''{{" markup in preblock.
  
  === Display ===
  __Mixing__ ''italics'' and '''bold''':
   * '''''Mix''' at the beginning''
    * '' '''Mix''' at the beginning''
   * '''''Mix'' at the beginning'''
    * ''' ''Mix'' at the beginning'''
   * '''Mix at the ''end'''''
    * '''Mix at the ''end'' '''
   * ''Mix at the '''end'''''
    * ''Mix at the '''end''' ''
  
  You might recall ''a''^2^ `+` ''b''^2^ `=` ''c''^2^ from your math lessons, unless your head is filled with H,,2,,O.
  
  An {{{inline code sequence}}} has the start and end markers on the same line. Or you use `backticks`.
  
  
  A code display has them on different lines: {{{
  '''No''' markup here!
  }}}
  
  === ColorizedSourceCode ===
  Example:
  
  {{{#!php
  <?
  phpinfo();
  ?>
  }}}
  
  == SixSingleQuotes and backticks ==
  {{{
  Wiki''''''Name vs Wiki``Name
  }}}
  
  Wiki''''''Name vs Wiki``Name
  == MoniWiki extensions ==
  To write --striked text--, enclose the text in double dashes.
  
  Superscripted text also obtained by encloseing a string into double carets ^^like it^^.
  
  /!\ MoinMoin does superscript texts contain space but, MoniWiki does not. You can superscript a string contains space by encloseing it into double carets.
  === coloring and sizing ===
   * {{{{{{#0000ff Hello World}}}}}} is renderd as {{{#0000ff Hello World}}}
   * {{{{{{+3 Hello World}}}}}} is rendered as {{{+3 Hello World}}}
   * {{{{{{-1 Hello World}}}}}} is rendered as {{{-2 Hello World}}}
  ----
  ''escape font styling syntax''
   * {{{{{{<space>#red Hello World}}}}}} is rendered as {{{ #red Hello World}}}
  
  Please see also WikiSlide
  ----
  [[Navigation(HelpOnEditing)]]
  EOF;
  #    header("Content-Type:text/plain");
  print <<<HEAD
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml">
  <head>
  <title>wow</title>
  <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
  </head>
  <body>
  HEAD;
  
      $f=&new processor_simple($m);
      print $f->process($text);
      print "<a href='http://validator.w3.org/check/referer'>XHTML</a>";
  print <<<FOOT
  </body>
  </html>
  FOOT;
  
  }
  
  // vim:et:sts=4
  ?>
  
  
  


wkpark      2007/10/24 00:12:46

  Modified:    local    moniwyg.js
  Log:
  table, indent, list support added
  
  Revision  Changes    Path
  1.20      +247 -30   moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- moniwyg.js	22 Oct 2007 02:47:01 -0000	1.19
  +++ moniwyg.js	23 Oct 2007 15:12:46 -0000	1.20
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.19 2007/10/22 02:47:01 wkpark Exp $
  +// $Id: moniwyg.js,v 1.20 2007/10/23 15:12:46 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -199,14 +199,15 @@
   {
       var dom = document.createElement('div');
   
  -    alert('fixup_markup='+html);
  +    //alert('fixup_markup='+html);
       if (Wikiwyg.is_ie) {
  +        //html = html.replace(/(\r\n|\n|\r)/g,'\\n');
           dom.innerHTML = "<br>" +html; // Bah.... IE hack :(
           dom.removeChild(dom.firstChild);
       } else {
           dom.innerHTML = html;
       }
  -    alert('fixup innerHTML='+dom.innerHTML);
  +    //alert('fixup innerHTML='+dom.innerHTML);
   
       var spans=dom.getElementsByTagName('span');
       var className= Wikiwyg.is_ie ? 'className':'class';
  @@ -436,8 +437,8 @@
   proto.convert_html_to_wikitext = function(html) {
       this.copyhtml = html;
       var dom = document.createElement('div');
  -    html = html.replace(/<!-=-/g, '<!--').
  -                replace(/-=->/g, '-->');
  +    //html = html.replace(/<!-=-/g, '<!--')
  +    //           .replace(/-=->/g, '-->');
   
       //alert(html);
   
  @@ -455,8 +456,8 @@
       html =
           html.replace(/<img class=.?(url|externalLink).?[^>]+>/ig, '');
       // smiley/inline tex etc.
  -    html =
  -        html.replace(/<img [^>]*class=.?(tex|interwiki|smiley).?[^>]* alt=(\'|\")?([^\'\" ]+)\2?[^>]+>/ig, "$3");
  +    //html =
  +    //    html.replace(/<img [^>]*class=.?(tex|interwiki|smiley|external).?[^>]* alt=(\'|\")?([^\'\" ]+)\2?[^>]+>/ig, "$3");
       // interwiki links
       html =
           html.replace(/<a [^>]*alt=(.)?([^\'\"]+)\1?[^>]*>/igm, "$2");
  @@ -469,6 +470,12 @@
       // remove javatag
       html =
           html.replace(/<a href=.javascript:[^>]+>(.*)<\/a>/ig, "$1");
  +    // unnamed externalLinks
  +    html =
  +        html.replace(/<a class=.externalLink unnamed. [^>]+>([^>]+)<\/a>/ig, "[$1]");
  +    // named externalLinks
  +    html =
  +        html.replace(/<a class=.externalLink named. [^>]*href=(\'|\")?([^\'\"]+)\1?[^>]+>(.+)<\/a>/ig, "[$2 $3]");
       // remove all links XXX
       html =
           html.replace(/<a [^>]+>([^>]+)<\/a>/ig, "$1");
  @@ -480,10 +487,11 @@
       dom.innerHTML = "<br>" +html; // Bah.... IE hack :(
       dom.removeChild(dom.firstChild);
   
  -    alert(dom.innerHTML);
  +    // alert(dom.innerHTML);
   
       this.output = [];
       this.list_type = [];
  +    this.ordered_type = [];
       this.indent_level = 0;
   
       this.walk_n(dom);
  @@ -491,6 +499,11 @@
       // add final whitespace
       this.assert_new_line();
   
  +    for (var i=0;i<this.output.length;i++) {
  +        if (this.output[i].length)
  +        this.output[i]=this.output[i].replace(/\\n/,"\n");
  +    }
  +
       return this.join_output(this.output);
   }
   
  @@ -502,6 +515,12 @@
           var width = element.getAttribute('width');
           var height = element.getAttribute('height');
           var myclass = element.getAttribute('class');
  +        if (myclass) { // FIXME
  +            if (myclass.match(/(tex|interwiki|smiley|external)$/)) {
  +                this.appendOutput(element.getAttribute('alt'));
  +                return;
  +            }
  +        }
   
           this.assert_space_or_newline();
           this.appendOutput(uri);
  @@ -527,15 +546,91 @@
       }
   }
   
  +proto.insert_new_line = function() {
  +    var fang = '';
  +    var indentChar = this.config.markupRules.indent[1];
  +    var newline = '\n';
  +    if (this.indent_level > 0) {
  +        fang = indentChar.times(this.indent_level);
  +        if (fang.length)
  +            fang += ' '; // needed ?? XXX
  +    }
  +    // XXX - ('\n' + fang) MUST be in the same element in this.output so that
  +    // it can be properly matched by chomp above.
  +    if (fang.length && this.first_indent_line) {
  +        this.first_indent_line = false;
  +    }
  +    if (this.output.length)
  +        this.appendOutput(newline + fang);
  +    else if (fang.length)
  +        this.appendOutput(fang);
  +}
  +
  +proto.format_blockquote = function(element) {
  +    var indents = 0;
  +    if (element.className.toLowerCase() == 'indent')
  +        indents += 1;
  +
  +    if (!this.indent_level)
  +        this.first_indent_line = true;
  +    this.indent_level += indents;
  +
  +    this.output = defang_last_string(this.output);
  +    this.assert_new_line();
  +
  +    this.walk(element);
  +    this.indent_level -= indents;
  +
  +    if (! this.indent_level) {
  +        if (this.should_whitespace()) {
  +            this.chomp();
  +            this.appendOutput("\n");
  +        }
  +    } else {
  +        this.chomp();
  +        this.appendOutput("\n");
  +    }
  +
  +    function defang_last_string(output) {
  +        function non_string(a) { return typeof(a) != 'string' }
  +
  +        // Strategy: reverse the output list, take any non-strings off the
  +        // head (tail of the original output list), do the substitution on the
  +        // first item of the reversed head (this is the last string in the
  +        // original list), then join and reverse the result.
  +        //
  +        // Suppose the output list looks like this, where a digit is a string,
  +        // a letter is an object, and * is the substituted string: 01q234op.
  +
  +        var rev = output.slice().reverse();                     // po432q10
  +        var rev_tail = takeWhile(non_string, rev);              // po
  +        var rev_head = dropWhile(non_string, rev);              // 432q10
  +
  +        if (rev_head.length)
  +            rev_head[0].replace(/^[ ]+/, '');                     // *32q10
  +            //rev_head[0].replace(/^>+/, '');                     // *32q10
  +
  +        // po*3210 -> 0123*op
  +
  +        return rev_tail.concat(rev_head).reverse();             // 01q23*op
  +    }
  +}
   
   proto.format_table = function(element) {
       this.assert_blank_line();
       var style =element.getAttribute('style');
  +    var cls =element.getAttribute('class') || element.getAttribute('className');
       var width =element.getAttribute('width');
  -    this.myattr=null;
  +    var color =element.getAttribute('bgcolor');
  +    var m;
  +    this.myattr='';
  +
  +    if (m = cls.match(/(right|center)/)) {
  +        this.myattr+= '<tablealign="'+m[1]+'">';
  +    }
   
       if (width) {
  -        this.myattr= '<tablewidth="'+width + 'px">';
  +        this.myattr+= '<tablewidth="'+width + 'px">';
       } else 
       if (style) {
           if (typeof style == 'object') style= style.cssText;
  @@ -544,7 +639,7 @@
           if (m)
               attr='<tablewidth="'+m[1] + 'px" height="'+m[2]+'px">';
           
  -        if (attr != '') this.myattr=attr;
  +        if (attr != '') this.myattr+=attr;
       }
       this.walk(element);
       this.assert_blank_line();
  @@ -558,11 +653,14 @@
   
   proto.format_br = function(element) {
       var str1 = this.output[this.output.length - 1];
  -    if (str1 && ! str1.whitespace && ! str1.match(/\n$/)) {
  -        this.insert_new_line();
  -        this.insert_new_line(); // two \n\n is rendered as <br />
  +    var str2 = (this.output.length) > 2 ? this.output[this.output.length - 2]:null;
  +
  +    if (str1 && ! str1.whitespace && !str1.match(/\n$/)) {
  +        this.output.pop();
  +        this.appendOutput(str1 + "\n");
       } else {
  -        this.insert_new_line(); // \n\n\n is rendered as <br /><br />
  +        this.appendOutput("\n");
  +        //this.insert_new_line();
       }
   }
   
  @@ -581,20 +679,42 @@
   
   proto.format_td = function(element) {
       var colspan =element.getAttribute('colspan');
  +    var width =element.getAttribute('width');
  +    var color =element.getAttribute('bgcolor');
       var align =element.getAttribute('class') || element.getAttribute('className');
  -    if (colspan) {
  -        for (var i=0;i<colspan;i++)
  -            this.appendOutput('||');
  -    } else
  -        this.appendOutput('||');
  +    var style =element.getAttribute('style');
  +    var attr= [];
  +    var i=0;
  +
  +    colspan = colspan ? colspan:1;
  +    if (this.has_caption) i=1;
  +    this.has_caption=false;
  +
  +    for (;i<colspan;i++) this.appendOutput('||');
   
       if (this.myattr)
           this.appendOutput(this.myattr);
  -    this.myattr=null;
  +    this.myattr='';
  +    //
  +
  +    if (width)
  +        attr.push('width="'+width+'"');
  +    if (color)
  +        attr.push('bgcolor="'+color+'"');
  +    if (style) {
  +        if (typeof style == 'object') style= style.cssText;
  +        var m;
  +        m = style.match(/width:\s*(\d+)px/i);
  +        if (m) attr.push('width="'+m[1] + 'px"');
  +        m = style.match(/background-color:\s*([^;]+);?/i);
  +        if (m) attr.push('bgcolor="'+m[1]+'"');
  +    }
   
       var rowspan =element.getAttribute('rowspan');
       if (rowspan > 1)
           this.appendOutput('<|'+rowspan+'>');
  +    if (attr.length)
  +        this.appendOutput('<'+attr.join(' ')+'>');
   
       // to support the PmWiki style table alignment
       // firstChild have to be a text node
  @@ -652,13 +772,46 @@
       }
   }
   
  +proto.format_caption = function(element) {
  +    this.appendOutput('|');
  +    this.walk(element);
  +    this.appendOutput('|');
  +    this.has_caption=true;
  +}
  +
  +proto.format_ol = function(element) {
  +    var type = element.getAttribute('type');
  +    var start = element.getAttribute('start') || null;
  +    if (start == 1) start = null; // IE fix
  +
  +    this.ordered_type.push(type);
  +    this.ordered_start=start;
  +
  +    this.make_list(element, 'ordered');
  +    this.ordered_type.pop();
  +}
  +
   proto.format_li = function(element) {
       var level = this.list_type.length;
       if (!level) die("List error");
       var type = this.list_type[level - 1];
  -    var markup = this.config.markupRules[type];
  +    var markup = this.config.markupRules[type][1];
       var ind = ' ';
  -    this.appendOutput(ind.times(level-1) + markup[1] + ' ');
  +    var start = '';
  +
  +    if (type == 'ordered' && this.ordered_type[this.ordered_type.length - 1]) {
  +        markup = ' ' + this.ordered_type[this.ordered_type.length - 1] + '.';
  +    }
  +
  +    if (this.ordered_start) {
  +        start = '#' + this.ordered_start;
  +        this.ordered_start = null;
  +    }
  +    
  +    this.appendOutput(ind.times(level-1) + markup + start + ' ');
  +
  +
  +    //alert(element.innerHTML);
   
       // Nasty ie hack which I don't want to talk about.
       // But I will...
  @@ -680,12 +833,55 @@
           catch(e) { }
       }
   
  -    this.walk(element);
  +    this.walk_li(element,markup,level);
   
       this.chomp();
       this.insert_new_line();
   }
   
  +proto.walk_li = function(element,markup,level) {
  +    if (!element) return;
  +
  +    var ind = ' ';
  +    var myind = ind.times(level-1) + ind.times(markup.length) + ' ';
  +    var myind0 = ind.times(level-1) + markup;
  +    var mre=new RegExp('^'+myind0);
  +
  +    for (var part = element.firstChild; part; part = part.nextSibling) {
  +        if (part.nodeType == 1) {
  +            this.dispatch_formatter(part);
  +        }
  +        else if (part.nodeType == 3) {
  +            var item = part.nodeValue.replace(/\n$/,'');
  +            part.nodeValue=item;
  +            if (part.nodeValue == '') continue;
  +            if (Wikiwyg.is_ie) {
  +                if (this.output.length &&
  +                        !this.output[this.output.length - 1].match(mre))
  +                    item = myind + item;
  +                this.appendOutput(item);
  +            }
  +            else if (item.length > 0 && item.indexOf("\n") != -1) {
  +                item = item.replace(/\n/g,"\n" + myind);
  +                item = item.replace(/^\n/,'');
  +                this.appendOutput(item);
  +            }
  +            else if (part.nodeValue.match(/^[ ]*$/)) {
  +                this.appendOutput(part.nodeValue);
  +            }
  +            else if (part.nodeValue.match(/[^\n]/)) {
  +                if (this.no_collapse_text) {
  +                    this.appendOutput(part.nodeValue);
  +                }
  +                else {
  +                    this.appendOutput(this.collapse(part.nodeValue));
  +                }
  +            }
  +        }
  +    }
  +    this.no_collapse_text = false;
  +}
  +
   proto.do_indent = function() {
       this.selection_mangle(
           function(that) {
  @@ -916,11 +1112,16 @@
       return null;
   }
   
  +proto.is_indented = function (element) {
  +    var cls = element.getAttribute('class') ||element.getAttribute('className');
  +    return cls == 'indent';
  +}
  +
   proto.handle_opaque_phrase = function(element) {
       var comment = this.get_wiki_comment(element);
       if (comment) {
           var text = comment.data;
  -        text = text.replace(/^ wiki:\s+/, '')
  +        text = text.replace(/^ wiki:(\s|\\n)+/, '')
                      .replace(/-=/g, '-')
                      .replace(/==/g, '=')
                      .replace(/(\r\n|\n|\r)+$/, '') //.replace(/\s$/, '') IE fix
  @@ -944,7 +1145,7 @@
               }
           }
           else {
  -            this.appendOutput('');
  +            this.appendOutput('\n'); // for comments and PIs
           }
       }
       else if (next.nodeType == 3) {
  @@ -977,7 +1178,7 @@
           }
           else if (part.nodeType == 3) {
               if (part.nodeValue.match(/\S/)) {
  -                var string = part.nodeValue;
  +                var str = part.nodeValue;
                   //if (! string.match(/^[\'\.\,\?\!\)]/)) {
                       //this.assert_space_or_newline(); // FIX
                       //string = this.trim(string); // FIX
  @@ -986,8 +1187,24 @@
                   // XXX do not auto insert/delete white spaces!!!
                   //string = this.mytrim(string); // replace
                   //this.appendOutput(this.collapse(string)); // FIX
  -                this.appendOutput(string);
  -                //this.appendOutput('^'+string+'_');
  +                //this.appendOutput(string);
  +                if (this.indent_level) {
  +                    var markup = this.config.markupRules['indent'][1];
  +                    var ind = ' ';
  +                    var myind = ind.times(this.indent_level) + markup;
  +
  +                    str = str.replace(/\n$/,'');
  +                    if (str.length > 0 && str.indexOf("\n") != -1) {
  +                        //str = str.replace(/^\n/,'');
  +                        str = str.replace(/\n/g,"\n" + myind);
  +                        str = str.replace(/^\n/,'');
  +                        this.appendOutput(str);
  +                    } else if (str.length) {
  +                        this.appendOutput(str);
  +                    }
  +                } else if (str.length) {
  +                    this.appendOutput(str);
  +                }
               }
           }
       }
  @@ -1254,7 +1471,7 @@
       var elem = elem.nextSibling;
       var check = 0;
   
  -    alert(edit.innerHTML);
  +    //alert(edit.innerHTML);
       while (elem) {
           for (i=0; i<elem.childNodes.length; i++) {
               if (elem.childNodes[i].className == 'sectionEdit') {
  
  
  


wkpark      2007/10/24 00:14:44

  Modified:    .        wiki.php
  Log:
  Wikiwyg fixes
  fixed get_instruction()
  
  Revision  Changes    Path
  1.352     +28 -13    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.351
  retrieving revision 1.352
  diff -u -r1.351 -r1.352
  --- wiki.php	22 Oct 2007 02:45:45 -0000	1.351
  +++ wiki.php	23 Oct 2007 15:14:44 -0000	1.352
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.351 2007/10/22 02:45:45 wkpark Exp $
  +// $Id: wiki.php,v 1.352 2007/10/23 15:14:44 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.351 $',1,-1);
  +$_revision = substr('$Revision: 1.352 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -1927,15 +1927,18 @@
         while ($body and $body[0] == '#') {
           # extract first line
           list($line, $body)= split("\n", $body,2);
  -        $pilines[]=$line;
           if ($line=='#') break;
           else if ($line[1]=='#') { $notused[]=$line; continue;}
  +        $pilines[]=$line;
   
           list($key,$val)= explode(" ",$line,2);
           $key=strtolower($key);
           $val=trim($val);
           if (in_array($key,$pikeys)) { $pi[$key]=$val ? $val:1; }
  -        else $notused[]=$line;
  +        else {
  +           $notused[]=$line;
  +           array_pop($pilines);
  +        }
         }
         $piline=implode("\n",$pilines);
         $piline=$piline ? $piline."\n":'';
  @@ -2085,8 +2088,9 @@
           if (!$text) $text=$url;
           else {
             if (preg_match("/^(http|ftp).*\.(png|gif|jpeg|jpg)$/i",$text)) {
  +            $atext=$text;
               $text=str_replace('&','&amp;',$text);
  -            return "<a href='$link' $attr $this->external_target title='$url'><img style='border:0px' alt='$url' src='$text' /></a>";
  +            return "<a class='externalLink named' href='$link' $attr $this->external_target title='$url'><img class='external' style='border:0px' alt='$atext' src='$text' /></a>";
             }
             if ($this->external_on)
               $external_link='<span class="externalLink">('.$url.')</span>';
  @@ -2096,7 +2100,9 @@
             return "<a href='$link'>$text</a>";
           }
           $icon=strtok($url,':');
  -        return "<img class='url' alt='[$icon]' src='".$this->imgs_dir_url."$icon.png' />". "<a class='externalLink' $attr $this->external_target href='$link'>$text</a>".$external_icon.$external_link;
  +        if ($text != $url) $eclass='named';
  +        else $eclass='unnamed';
  +        return "<img class='url' alt='[$icon]' src='".$this->imgs_dir_url."$icon.png' />". "<a class='externalLink $eclass' $attr $this->external_target href='$link'>$text</a>".$external_icon.$external_link;
         } # have no space
         $link=str_replace('&','&amp;',$url);
         if (preg_match("/^(http|https|ftp)/",$url)) {
  @@ -2694,7 +2700,7 @@
             return "<$list_type type='$numtype[0]' start='$start'>";
           return "<$list_type type='$numtype[0]'>";
         }
  -      return "$close$open<$list_type>\n";
  +      return "$close$open<$list_type>"; // FIX Wikiwyg
       } else {
         return "</$list_type>\n$close$open";
       }
  @@ -2891,6 +2897,7 @@
   
       if ($body) {
         $pi=$this->get_instructions($body);
  +
         if ($this->wikimarkup and $pi['raw']) {
           $pi_html=str_replace("\n","<br />\n",$pi['raw']);
           print "<span class='wikiMarkup'><!-- wiki:\n$pi[raw]\n-->$pi_html</span>";
  @@ -3070,8 +3077,12 @@
             $div_enclose.='</div>';
             $my_div--;
           }
  -        if ($this->wikimarkup)
  -          $text=$text."<span><!-- wiki:\n$line\n-->$out</span>";
  +
  +        if ($this->wikimarkup) {
  +          $out=$out ? $out:$line.'<br />';
  +          $nline=str_replace(array('=','-','&','<'),array('==','-=','&amp;','&lt;'),$line);
  +          $text=$text."<span class='wikiMarkup'><!-- wiki:\n$nline\n\n-->$out</span>";
  +        }
           else $text.=$out;
           unset($out);
           continue; # comments
  @@ -3388,10 +3399,12 @@
                 }
               }
               $out="<pre $attr>\n".$pre."</pre>\n";
  -            if ($this->wikimarkup)
  +            if ($this->wikimarkup) {
  +              $nline=str_replace(array('=','-','&','<'),array('==','-=','&amp;','&lt;'),$this->pre_line);
                 $out='<span class="wikiMarkup">'."<!-- wiki:\n{{{:$pre_style\n".
  -                str_replace('}}}','\}}}',$this->pre_line).
  +                str_replace('}}}','\}}}',$nline).
                   "}}}\n-->".$out."</span>";
  +            }
               $line=$out.$line;
               $in_quote=0;
            } else {
  @@ -3405,10 +3418,12 @@
                 $pre=preg_replace("/&lt;(\/?)(ins|del)/","<\\1\\2",$pre);
                 # FIXME Check open/close tags in $pre
                 $out="<pre class='wiki'>\n".$pre."</pre>";
  -              if ($this->wikimarkup)
  +              if ($this->wikimarkup) {
  +                $nline=str_replace(array('=','-','&','<'),array('==','-=','&amp;','&lt;'),$this->pre_line);
                   $out='<span class="wikiMarkup">'."<!-- wiki:\n{{{\n".
  -                  str_replace('}}}','\}}}',$this->pre_line).
  +                  str_replace('}}}','\}}}',$nline).
                     "}}}\n-->".$out."</span>";
  +              }
               }
               $line=$out.$line;
               unset($out);
  
  
  


wkpark      2007/10/25 18:08:00

  Modified:    local    moniwyg.js
  Log:
  nested list, indent supported now!!
  
  Revision  Changes    Path
  1.21      +67 -14    moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- moniwyg.js	23 Oct 2007 15:12:46 -0000	1.20
  +++ moniwyg.js	25 Oct 2007 09:08:00 -0000	1.21
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.20 2007/10/23 15:12:46 wkpark Exp $
  +// $Id: moniwyg.js,v 1.21 2007/10/25 09:08:00 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -550,10 +550,9 @@
       var fang = '';
       var indentChar = this.config.markupRules.indent[1];
       var newline = '\n';
  -    if (this.indent_level > 0) {
  -        fang = indentChar.times(this.indent_level);
  -        if (fang.length)
  -            fang += ' '; // needed ?? XXX
  +    if (this.list_type.length > 0) {
  +        fang = indentChar.times(this.list_type.length);
  +        //if (fang.length) fang += ' ';
       }
       // XXX - ('\n' + fang) MUST be in the same element in this.output so that
       // it can be properly matched by chomp above.
  @@ -567,6 +566,14 @@
   }
   
   proto.format_blockquote = function(element) {
  +    this.make_list(element,'indent');
  +    this.chomp();
  +    this.appendOutput("\n");
  +    return;
  +
  +}
  +
  +proto.format_blockquote_old = function(element) {
       var indents = 0;
       if (element.className.toLowerCase() == 'indent')
           indents += 1;
  @@ -642,7 +649,9 @@
           if (attr != '') this.myattr+=attr;
       }
       this.walk(element);
  -    this.assert_blank_line();
  +    this.chomp();
  +    this.appendOutput("\n");
  +    //this.assert_blank_line();
   }
   
   proto.format_tr = function(element) {
  @@ -779,6 +788,38 @@
       this.has_caption=true;
   }
   
  +proto.format_div = function(element) {
  +    if (this.is_opaque(element)) {
  +        this.handle_opaque_block(element);
  +        return;
  +    }
  +    if (this.is_indented(element)) {
  +        //this.format_blockquote(element);
  +        this.make_list(element,'indent');
  +        this.chomp();
  +        this.appendOutput("\n");
  +        return;
  +    }
  +    this.walk(element);
  +}
  +
  +proto.make_list = function(element, list_type) { 
  +    //this.assert_new_line();
  +
  +    if (! this.previous_was_newline_or_start())
  +        this.appendOutput("\n");
  +        //this.insert_new_line(); // XXX
  +
  +    this.list_type.push(list_type);
  +    if (this.list_type.length)
  +        this.first_indent_line = true;
  +
  +    this.walk(element);
  +    this.first_indent_line=false;
  +    this.list_type.pop();
  +}
  +
  +
   proto.format_ol = function(element) {
       var type = element.getAttribute('type');
       var start = element.getAttribute('start') || null;
  @@ -836,7 +877,7 @@
       this.walk_li(element,markup,level);
   
       this.chomp();
  -    this.insert_new_line();
  +    this.appendOutput("\n");
   }
   
   proto.walk_li = function(element,markup,level) {
  @@ -1177,6 +1218,8 @@
               this.dispatch_formatter(part);
           }
           else if (part.nodeType == 3) {
  +            var level = this.list_type.length;
  +
               if (part.nodeValue.match(/\S/)) {
                   var str = part.nodeValue;
                   //if (! string.match(/^[\'\.\,\?\!\)]/)) {
  @@ -1188,15 +1231,25 @@
                   //string = this.mytrim(string); // replace
                   //this.appendOutput(this.collapse(string)); // FIX
                   //this.appendOutput(string);
  -                if (this.indent_level) {
  -                    var markup = this.config.markupRules['indent'][1];
  -                    var ind = ' ';
  -                    var myind = ind.times(this.indent_level) + markup;
  +                if (level) {
  +                    var ind=' ';
  +                    var indent;
  +                    var type = this.list_type[level - 1];
  +                    var markup = this.config.markupRules[type][1];
  +                    if (type.match(/ordered/)) {
  +                        indent = ind.times(level)
  +                            + ind.times(markup.length) + ' ';
  +                    } else {
  +                        indent = ind.times(level);
  +                        if (this.first_indent_line) {
  +                            this.appendOutput(indent);
  +                            this.first_indent_line=false;
  +                        }
  +                    }
   
  -                    str = str.replace(/\n$/,'');
  +                    str = str.replace(/\n$/,''); // remove trailing \n
                       if (str.length > 0 && str.indexOf("\n") != -1) {
  -                        //str = str.replace(/^\n/,'');
  -                        str = str.replace(/\n/g,"\n" + myind);
  +                        str = str.replace(/\n/g,"\n" + indent);
                           str = str.replace(/^\n/,'');
                           this.appendOutput(str);
                       } else if (str.length) {
  
  
  


wkpark      2007/10/25 18:09:55

  Modified:    plugin/processor monimarkup.php
  Log:
  fixed for the Wikiwyg
  
  Revision  Changes    Path
  1.2       +9 -6      moniwiki/plugin/processor/monimarkup.php
  
  Index: monimarkup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/monimarkup.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- monimarkup.php	23 Oct 2007 03:37:20 -0000	1.1
  +++ monimarkup.php	25 Oct 2007 09:09:55 -0000	1.2
  @@ -3,12 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a moniwiki formatting processor for the MoniWiki
   //
  -// $Id: monimarkup.php,v 1.1 2007/10/23 03:37:20 wkpark Exp $
  +// $Id: monimarkup.php,v 1.2 2007/10/25 09:09:55 wkpark Exp $
   /**
    * @date    2006-08-09
    * @name    Moniwiki Processor
    * @desc    Moniwiki default processor
  - * @version $Revision: 1.1 $
  + * @version $Revision: 1.2 $
    * @depend  1.1.3
    * @license GPL
    */
  @@ -262,7 +262,7 @@
                   continue;
               } else if ($_eop) {
               #} else if ($_eop and $oline) {
  -                $chunk[]= $oline;
  +                $chunk[]= $oline."\n"; // "\n" is important for WikiWyg :)
                   $_eop=0;
                   $oline=$line;
                   continue;
  @@ -509,8 +509,10 @@
                       }
                       else {
                           $val1=$val;
  -                        $val=preg_replace("/^[ ]*$/m","<br />",$val1);
  -                        if ($val1!=$val) $val.="<br />";
  +                        $val=preg_replace("/^[ ]*$/m","",$val1);
  +                        # fix for Wikiwyg !!
  +                        $val=preg_replace("/(\n{2,})/es",
  +                            'str_repeat("\n<br />",strlen("$1"))."\n"',$val);
                           unset($val1);
                       }
                       #print "<pre>".htmlspecialchars($val)."</pre>";
  @@ -533,7 +535,8 @@
                   if ($formatter->auto_linebreak)
                       $c=preg_replace("/(?<!>|\007|^)\n/","<br />\n",$c);
                   else
  -                    $c=preg_replace("/^[ ]*$/m","<br />",$c);
  +                    $c=preg_replace("/^[ ]*$/m","<br />",$c); // XXX
  +
                   $c=preg_replace_callback("/(".$wordrule.")/",
                       array(&$formatter,'link_repl'),$c);
                   while($_li>0 and $_lidep[$_li] > 0) {
  
  
  


wkpark      2007/10/26 20:51:09

  Modified:    plugin/processor monimarkup.php
  Log:
  fixed list formatting bug etc.
  
  Revision  Changes    Path
  1.3       +20 -15    moniwiki/plugin/processor/monimarkup.php
  
  Index: monimarkup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/monimarkup.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- monimarkup.php	25 Oct 2007 09:09:55 -0000	1.2
  +++ monimarkup.php	26 Oct 2007 11:51:09 -0000	1.3
  @@ -3,12 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a moniwiki formatting processor for the MoniWiki
   //
  -// $Id: monimarkup.php,v 1.2 2007/10/25 09:09:55 wkpark Exp $
  +// $Id: monimarkup.php,v 1.3 2007/10/26 11:51:09 wkpark Exp $
   /**
    * @date    2006-08-09
    * @name    Moniwiki Processor
    * @desc    Moniwiki default processor
  - * @version $Revision: 1.2 $
  + * @version $Revision: 1.3 $
    * @depend  1.1.3
    * @license GPL
    */
  @@ -25,7 +25,9 @@
       function _pass1($text)
       {
           // NoSmoke MultilineCell to moniwiki for lower version compatibility
  -        $text=str_replace(array('{{|','|}}'),
  +        //$text=str_replace(array('{{|','|}}'),
  +        //    array("{{{:.closure\n",'}}}'),$text);
  +        $text=preg_replace(array('/(?<!\{)\{\{\|\n/','/\|\}\}(?!\})/'),
               array("{{{:.closure\n",'}}}'),$text);
           // Pass #1: separate code inline/blocks.
           $chunk=preg_split('/({{{|}}})/',$text,-1,
  @@ -66,11 +68,11 @@
                                       $block[$j]=substr($block[$j],1);
                                       $arg= substr($type,1);
                                       if ($type{1}=='#' or $type{1}=='.') {
  -                                        $btype[$j]='moni';
  -                                        $block[$j]='#!moni '.$arg."\n".$dum;
  +                                        $btype[$j]='monimarkup';
  +                                        $block[$j]='#!monimarkup '.$arg."\n".$dum;
                                       } else {
  -                                        $btype[$j]='moni';
  -                                        $block[$j]="#!moni .quote\n$arg\n".$dum;
  +                                        $btype[$j]='monimarkup';
  +                                        $block[$j]="#!monimarkup .quote\n$arg\n".$dum;
                                       }
                                   } else {
                                       // XXX check processor/block type
  @@ -451,13 +453,12 @@
                       #$out.= $formatter->$hr_func($c['value']);
                       break;
                   case 'LIST':
  -                    $test=$c['type'];
  -                    $type=is_numeric($test{0}) ? 'ol':$test;
  +                    $type=$c['type'];
                       $linfo='';
                       $listy='';
  -                    if ($type=='ol')
  +                    if ($type!='ul' and $type{0} !='d')
                           $linfo=$c['attributes'] ? $c['attributes']['start']:'';
  -                    else if ($test{0}=='d') {
  +                    else if ($type{0}=='d') {
                           $linfo=$c['attributes'] ? $c['attributes']['class']:'';
                           if (preg_match('/^((\s*)(&lt;|=|>)?{([^}]+)})/s',$val,
                                   $sty)) {
  @@ -577,12 +578,16 @@
                   return "</blockquote>\n";
               }
           }
  +        if ($type != 'ul') {
  +            $litype=$type;
  +            $type='ol';
  +        }
           if ($on) {
  -            if ($linfo) {
  -                $start=substr($linfo,1);
  +            if ($litype) {
  +                $start=$linfo;
                   if ($start)
  -                    return "<$type type='$linfo[0]' start='$start'>";
  -                return "<$type type='$linfo[0]'>";
  +                    return "<$type type='$litype' start='$start'>";
  +                return "<$type type='$litype'>";
               }
               return "<$type>\n";
           }
  
  
  


wkpark      2007/10/30 20:04:42

  Modified:    .        wiki.php
  Log:
  support extended table formatting
  more strictly formatted quote block for the WikiWyg
  
  Revision  Changes    Path
  1.353     +106 -37   moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.352
  retrieving revision 1.353
  diff -u -r1.352 -r1.353
  --- wiki.php	23 Oct 2007 15:14:44 -0000	1.352
  +++ wiki.php	30 Oct 2007 11:04:42 -0000	1.353
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.352 2007/10/23 15:14:44 wkpark Exp $
  +// $Id: wiki.php,v 1.353 2007/10/30 11:04:42 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.352 $',1,-1);
  +$_revision = substr('$Revision: 1.353 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -1686,6 +1686,7 @@
       $this->filters=$DBInfo->filters;
       $this->postfilters=$DBInfo->postfilters;
       $this->use_rating=$DBInfo->use_rating;
  +    $this->use_etable=$DBInfo->use_etable;
   
       if (($p=strpos($page->name,"~")))
         $this->group=substr($page->name,0,$p+1);
  @@ -2437,7 +2438,7 @@
       return "<a class='nonexistent' href='$url'>?</a>$word";
     }
   
  -  function head_repl($depth,$head) {
  +  function head_repl($depth,$head,$attr='') {
       $dep=$depth;
       $this->nobr=1;
   
  @@ -2495,7 +2496,7 @@
       if ($this->perma_icon)
       $perma=" <a class='perma' href='#s$prefix-$num'>$this->perma_icon</a>";
   
  -    return "$close$open$edit<h$dep><a id='s$prefix-$num'></a>$head$perma</h$dep>";
  +    return "$close$open$edit<h$dep$attr><a id='s$prefix-$num'></a>$head$perma</h$dep>";
     }
   
     function macro_repl($macro,$value='',$options='') {
  @@ -2775,6 +2776,29 @@
       return $myattr;
     }
   
  +  function _td($line,&$tr_attr) {
  +    $cells=preg_split('/((?:\|\|)+)/',$line,-1,
  +      PREG_SPLIT_DELIM_CAPTURE);
  +    $row='';
  +    for ($i=1,$s=sizeof($cells);$i<$s;$i+=2) {
  +      $align='';
  +      $m=array();
  +      preg_match('/^((&lt;[^>]+>)?)(\s?)(.*)(?<!\s)(\s*)?$/s',
  +        $cells[$i+1],$m);
  +      $cell=$m[3].$m[4].$m[5];
  +      $cell=str_replace("\n","<br />\n",$cell); // XXX
  +      if ($m[3] and $m[5]) $align='center';
  +      else if (!$m[3]) $align='';
  +      else if (!$m[5]) $align='right';
  +
  +      $attr=$this->_td_attr($m[1],$align);
  +      if (!$tr_attr) $tr_attr=$m[1]; // XXX
  +      $attr.=$this->_td_span($cells[$i]);
  +      $row.="<td $attr>".$cell.'</td>';
  +    }
  +    return $row;
  +  }
  +
     function _td_attr(&$val,$align='') {
       $myclass=array();
       if (!$val) {
  @@ -3188,20 +3212,26 @@
            $close="";
            $indtype="dd";
            $indlen=strlen($match[0]);
  +         $line=substr($line,$indlen);
            $liopen='';
            if ($indlen > 0) {
              $myindlen=$indlen;
  -           $line=substr($line,$indlen);
              # check div type.
  +           $mydiv=array('indent');
              if ($match[0][$indlen-1]=='>') {
                # get user defined style
                if (($line[0]=='.' or $line[0]=='#') and ($p=strpos($line,' '))) {
  -               if ($line[0]=='.') $dt='class';
  -               else $dt='id';
  -               $divtype=" $dt=\"".substr($line,1,$p-1).'"';
  +               $divtype='';
  +               $mytag=substr($line,1,$p-1);
  +               if ($line[0]=='.') $mydiv[]=$mytag;
  +               else $divtype=' id="'.$mytag.'"';
  +               $divtype.=' class="quote '.implode(' ',$mydiv).'"';
                  $line=substr($line,$p+1);
  -             } else
  -               $divtype=' class="indent '.$this->quote_style.'"';
  +             } else {
  +               if ($line[0] == ' ')
  +                 $line=substr($line,1); // with space
  +               $divtype=' class="quote indent '.$this->quote_style.'"';
  +             }
              } else {
                $divtype=' class="indent"';
              }
  @@ -3270,39 +3300,69 @@
         }
   
         #if (!$in_pre && !$in_table && preg_match("/^\|\|.*\|\|$/",$line)) {
  -      if (!$in_pre && $line[0]=='|' && !$in_table && preg_match("/^(\|([^\|]+)?\|((\|\|)*))(&lt;[^>\|]*>)?(.*)(\|\|)$/s",$line,$match)) {
  +      if (!$in_pre && $line[0]=='|' && !$in_table && preg_match("/^(\|([^\|]+)?\|((\|\|)*))(&lt;[^>\|]*>)?(.*)$/s",$line,$match)) {
           $open.=$this->_table(1,$match[5]);
           if ($match[2]) $open.='<caption>'.$match[2].'</caption>';
  -        if (!$match[5]) $line='||'.$match[3].$match[6].'||';
  +        if (!$match[5]) $line='||'.$match[3].$match[6];
           $in_table=1;
  +        if ($this->use_etable && !preg_match('/\|\|$/',$match[6])) {
  +          $text.=$open;
  +          $this->table_line.=substr($line,2)."\n";
  +          continue;
  +        }
         } elseif ($in_table && ($line[0]!='|' or
  -           !preg_match("/^\|{2}.*\|{2}$/",$line))) {
  -         $close=$this->_table(0,$dumm).$close;
  -         $in_table=0;
  +              !preg_match("/^\|{2}.*\|{2}$/",$line))) {
  +        if ($this->use_etable && $in_table && preg_match('/^\|\|/',$line)) {
  +          $this->table_line.=substr($line,2)."\n";
  +          continue;
  +        }
  +        $close=$this->_table(0,$dumm).$close;
  +        $in_table=0;
         }
  -      if ($in_table) {
  +      while ($in_table) {
           $line=substr($line,0,-2);
  -        $cells=preg_split('/((?:\|\|)+)/',$line,-1,
  -          PREG_SPLIT_DELIM_CAPTURE);
  -        $row='';
  -        $tr_attr='';
  -        for ($i=1,$s=sizeof($cells);$i<$s;$i+=2) {
  -          $align='';
  -          preg_match('/^((&lt;[^>]+>)?)(\s?)(.*)(?<!\s)(\s*)?$/s',
  -            $cells[$i+1],$m);
  -          $cell=$m[3].$m[4].$m[5];
  -          $cell=str_replace("\n","<br />\n",$cell);
  -          if ($m[3] and $m[5]) $align='center';
  -          else if (!$m[3]) $align='';
  -          else if (!$m[5]) $align='right';
  -
  -          $attr=$this->_td_attr($m[1],$align);
  -          if (!$tr_attr) $tr_attr=$m[1]; // XXX
  -          $attr.=$this->_td_span($cells[$i]);
  -          $row.="<td $attr>".$cell.'</td>';
  +        if ($this->use_etable && $this->table_line) {
  +          $nline='||'.$this->table_line;
  +          $this->table_line='';
  +          if (!preg_match('/^\|+$/',$line)) $nline.=$line;
  + 
  +          $row=$this->_td($nline,$tr_attr);
  +          if (!$this->in_tr) {
  +            $this->in_tr=1;
  +            $nline="<tr $tr_attr>".$row;
  +            $tr_attr='';
  +          } else {
  +            $nline=$row;
  +          }
  +          if (preg_match('/^\|{3,}$/',$line)) {
  +
  +            $nline.='</tr>';
  +            $this->in_tr=0;
  +          }
  +          $line=$nline;
  +        } else {
  +          $tr_attr='';
  +          $row=$this->_td($line,$tr_attr);
  +          $line="<tr $tr_attr>".$row.'</tr>';
  +          $tr_attr='';
           }
  -        $line="<tr $tr_attr>".$row.'</tr>';
  +
           $line=str_replace('\"','"',$line); # revert \\" to \"
  +        break;
  +      }
  +      if ($this->use_etable && !$in_table && $this->table_line) {
  +        $tline='';      
  +        $row=$this->_td('||'.$this->table_line,$tr_attr);
  +          if (!$this->in_tr) {
  +            $tline="<tr $tr_attr>";
  +            $tr_attr='';
  +          }
  +          $tline.=$row.'</tr>';
  +          $this->in_tr=0;
  +          $this->table_line='';
  +          $tline=str_replace('\"','"',$tline); # revert \\" to \"
  +          $tline=preg_replace_callback("/(".$wordrule.")/",
  +            array(&$this,'link_repl'),$tline);
         }
   
         # InterWiki, WikiName, {{{ }}}, !WikiName, ?single, ["extended wiki name"]
  @@ -3340,7 +3400,15 @@
             $anchor_id='sect-'.$this->sect_num;
             $anchor="<a id='$anchor_id'></a>";
           }
  -        $line=$anchor.$edit.$this->head_repl(strlen($m[1]),$m[2]);
  +        $attr='';
  +        if ($DBInfo->use_folding == 1) {
  +          $attr=" onclick=\"document.getElementById('sc-$this->sect_num').style.display=document.getElementById('sc-$this->sect_num').style.display!='none'? 'none':'block';\"";
  +        } else {
  +          $attr=" onclick=\"foldingSection(this,'sc-$this->sect_num');\"";
  +        }
  +
  +        $line=$anchor.$edit.$this->head_repl(strlen($m[1]),$m[2],$attr);
  +        $line.=$this->_div(1,$in_div,$dummy,' id="sc-'.$this->sect_num.'"'); // for folding
           $edit='';$anchor='';
         }
   
  @@ -3357,7 +3425,8 @@
         #if ($this->auto_linebreak and preg_match('/<div>$/',$line))
         #  $this->nobr=1;
   
  -      $line=$close.$p_closeopen.$open.$line;
  +      $line=$tline.$close.$p_closeopen.$open.$line;
  +      $tline='';
         $open="";$close="";
   
         if ($in_pre==-1) {
  
  
  


wkpark      2007/10/30 20:07:51

  Modified:    local    moniwyg.js
  Log:
  do not indent/ordered in tables/headings
  support quote blocks now
  
  Revision  Changes    Path
  1.22      +88 -10    moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- moniwyg.js	25 Oct 2007 09:08:00 -0000	1.21
  +++ moniwyg.js	30 Oct 2007 11:07:51 -0000	1.22
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.21 2007/10/25 09:08:00 wkpark Exp $
  +// $Id: moniwyg.js,v 1.22 2007/10/30 11:07:51 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -401,6 +401,40 @@
       this.exec_command('createlink', url);
   }
   
  +if (!Wikiwyg.is_ie) {
  +proto.get_selection = function() { // See IE, below
  +    return this.get_edit_window().getSelection();
  +}
  +} else {
  +proto.get_selection = function() {
  +    var selection = this.get_edit_document().selection;
  +    if (selection != null)
  +        return selection.createRange();
  +    return null;
  +}
  +}
  +
  +proto.do_indent = function() {
  +    var sel=this.get_selection();
  +    var node=sel.focusNode.parentNode.nodeName; // XXX
  +    if (node && node != 'TD' && !node.match(/^H[1-6]$/))
  +        this.exec_command('indent');
  +}
  +
  +proto.do_ordered = function() {
  +    var sel=this.get_selection();
  +    var node=sel.focusNode.parentNode.nodeName; // XXX
  +    if (node && node != 'TD' && !node.match(/^H[1-6]$/))
  +        this.exec_command('insertorderedlist');
  +}
  +
  +proto.do_unordered = function() {
  +    var sel=this.get_selection();
  +    var node=sel.focusNode.parentNode.nodeName; // XXX
  +    if (node && node != 'TD' && !node.match(/^H[1-6]$/))
  +        this.exec_command('insertunorderedlist');
  +}
  +
   proto.do_image = function() {
       var base = location.href.replace(/(.*?:\/\/.*?\/).*/, '$1');
   
  @@ -566,7 +600,8 @@
   }
   
   proto.format_blockquote = function(element) {
  -    this.make_list(element,'indent');
  +    this.make_list(element,'quote');
  +    //this.make_list(element,'indent');
       this.chomp();
       this.appendOutput("\n");
       return;
  @@ -626,7 +661,8 @@
   proto.format_table = function(element) {
       this.assert_blank_line();
       var style =element.getAttribute('style');
  -    var cls =element.getAttribute('class') || element.getAttribute('className');
  +    var cls =element.getAttribute('class') ||
  +        element.getAttribute('className') || '';
       var width =element.getAttribute('width');
       var color =element.getAttribute('bgcolor');
       var m;
  @@ -664,6 +700,13 @@
       var str1 = this.output[this.output.length - 1];
       var str2 = (this.output.length) > 2 ? this.output[this.output.length - 2]:null;
   
  +    var pn=element.parentNode.nodeName;
  +    if (pn && (pn == 'TD' || pn.match(/^H[1-6]$/))) {
  +        this.output.pop();
  +        this.appendOutput(str1 + "&\n");
  +        return;
  +    }
  +
       if (str1 && ! str1.whitespace && !str1.match(/\n$/)) {
           this.output.pop();
           this.appendOutput(str1 + "\n");
  @@ -751,11 +794,12 @@
                   this.appendOutput(part.nodeValue);
               }
               else if (part.nodeValue.match(/[^\n]/)) {
  +                var str = part.nodeValue.replace(/^\n/,'');
                   if (this.no_collapse_text) {
  -                    this.appendOutput(part.nodeValue);
  +                    this.appendOutput(str);
                   }
                   else {
  -                    this.appendOutput(this.collapse(part.nodeValue));
  +                    this.appendOutput(this.collapse(str));
                   }
               }
           }
  @@ -795,7 +839,11 @@
       }
       if (this.is_indented(element)) {
           //this.format_blockquote(element);
  -        this.make_list(element,'indent');
  +        var cls = element.getAttribute('class') ||element.getAttribute('className');
  +        if (cls && cls.match(/quote/))
  +            this.make_list(element,'quote');
  +        else
  +            this.make_list(element,'indent');
           this.chomp();
           this.appendOutput("\n");
           return;
  @@ -811,8 +859,20 @@
           //this.insert_new_line(); // XXX
   
       this.list_type.push(list_type);
  -    if (this.list_type.length)
  +    if (this.list_type.length) {
  +        this.div_tag = '';
  +        if (list_type == 'indent' || list_type == 'quote') {
  +            var id = element.getAttribute('id');
  +            if (id) {
  +                if (id) this.div_tag = '#' + id;
  +            } else {
  +                var cls = element.getAttribute('class') ||element.getAttribute('className');
  +                var tag = cls.replace(/quote|indent/g,'').replace(/(^\s*|\s*$)/g,'');
  +                if (tag) this.div_tag = '.' + tag;
  +            }
  +        }
           this.first_indent_line = true;
  +    }
   
       this.walk(element);
       this.first_indent_line=false;
  @@ -927,6 +987,7 @@
       this.selection_mangle(
           function(that) {
               if (that.sel == '') return false;
  +            if (that.sel.match(/^\s*(=+)\s+.*\s+\1\s?$/)) return false;
               that.sel = that.sel.replace(/^(\>\s)/gm, '$1$1');
               that.sel = that.sel.replace(/^/gm, ' '); // space indent
               that.sel = that.sel.replace(/^ (\>\s)/gm, '$1');
  @@ -935,6 +996,18 @@
       )
   }
   
  +proto.do_quote = function() {
  +    this.selection_mangle(
  +        function(that) {
  +            if (that.sel == '') return false;
  +            if (that.sel.match(/^\s*(=+)\s+.*\s+\1\s?$/)) return false;
  +            that.sel = that.sel.replace(/^/gm, '> ');
  +            return true;
  +        }
  +    )
  +}
  +
  +
   proto.do_outdent = function() {
       this.selection_mangle(
           function(that) {
  @@ -1047,7 +1120,7 @@
       proto.format_image = Wikiwyg.Wikitext.make_formatter('image');
   proto.do_image = Wikiwyg.Wikitext.make_do('image');
   proto.do_media = Wikiwyg.Wikitext.make_do('media');
  -proto.do_quote = Wikiwyg.Wikitext.make_do('quote');
  +//proto.do_quote = Wikiwyg.Wikitext.make_do('quote');
   
   proto.collapse = function(string) {
       return string.replace(/\r\n|\r/g, ''); // FIX
  @@ -1155,7 +1228,7 @@
   
   proto.is_indented = function (element) {
       var cls = element.getAttribute('class') ||element.getAttribute('className');
  -    return cls == 'indent';
  +    return cls && cls.match(/indent/);
   }
   
   proto.handle_opaque_phrase = function(element) {
  @@ -1240,9 +1313,14 @@
                           indent = ind.times(level)
                               + ind.times(markup.length) + ' ';
                       } else {
  +                        if (markup == '>') ind = markup + ind; // markup specific XXX
                           indent = ind.times(level);
                           if (this.first_indent_line) {
  -                            this.appendOutput(indent);
  +                            if (this.div_tag) {
  +                                var myindent=indent.substr(0,indent.length-1);
  +                                this.appendOutput(myindent + this.div_tag + ' ');
  +                            } else 
  +                                this.appendOutput(indent);
                               this.first_indent_line=false;
                           }
                       }
  
  
  


wkpark      2007/10/30 20:11:56

  Added:       local    folding.js
  Log:
  builtin folding support using prototype/mootools
   with the $use_folding config option. ($use_folding=1: simple method, 2:use prototype/mootools)
  
  Revision  Changes    Path
  1.1                  moniwiki/local/folding.js
  
  Index: folding.js
  ===================================================================
  function foldingSection(btn,id)
  {
      var sect;
      if (typeof id == 'object') sect=id;
      else sect=document.getElementById(id);
      if (!sect) return;
      var toggle=true;
      if (sect.style.display != 'none') {
          toggle=false;
      }
  
      var icon=null;
      if (btn)
          icon=btn.getElementsByTagName('img')[0];
  
      if (typeof Effect != 'undefined') { // prototype.js
          var dur = 0.5;
          if (toggle) {
            new Effect.SlideDown(sect, { duration: dur, afterFinish: function() {Element.show(sect);} });
          } else {
            new Effect.SlideUp(sect, { duration: dur, afterFinish: function() {Element.hide(sect);} });
          }
      } else { // get sectpages for the first time.
          var mySlide = new Fx.Slide(sect); // oops!!!
          if (sect.style.height != 0) {
              mySlide.slideIn();
          } else {
              mySlide.slideOut();
          }
      }
      if (icon) {
          var name=icon.getAttribute('class');
          if (name == 'close')
              icon.setAttribute('class','');
          else
              icon.setAttribute('class','close');
      }
  }
  
  // vim:et:sts=4:sw:
  
  
  


wkpark      2007/10/31 00:54:33

  Modified:    local    moniwyg.js
  Log:
  fixed format_img()
  
  Revision  Changes    Path
  1.23      +9 -6      moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- moniwyg.js	30 Oct 2007 11:07:51 -0000	1.22
  +++ moniwyg.js	30 Oct 2007 15:54:33 -0000	1.23
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.22 2007/10/30 11:07:51 wkpark Exp $
  +// $Id: moniwyg.js,v 1.23 2007/10/30 15:54:33 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -548,10 +548,14 @@
           var style = element.getAttribute('style');
           var width = element.getAttribute('width');
           var height = element.getAttribute('height');
  -        var myclass = element.getAttribute('class');
  -        if (myclass) { // FIXME
  +        var myclass = element.getAttribute('class') || element.getAttribute('className');
  +        if (myclass) {
               if (myclass.match(/(tex|interwiki|smiley|external)$/)) {
  -                this.appendOutput(element.getAttribute('alt'));
  +                if (this.output.length) {
  +                    var trail=this.output[this.output.length-1];
  +                    if (!trail.match(/\s$/)) this.appendOutput(' ');
  +                }
  +                this.appendOutput(element.getAttribute('alt')+ ' ');
                   return;
               }
           }
  @@ -564,14 +568,13 @@
   
           if (style) {
               if (typeof style == 'object') style= style.cssText;
  -            alert(style);
               var w = style.match(/width:\s*(\d+)px/i);
               var h = style.match(/height:\s*(\d+)px/i);
               if (w) attr+=(attr ? '&':'') + 'width='+w[1];
               if (h) attr+=(attr ? '&':'') + 'height='+h[1];
           }
   
  -        if (myclass) { // FIXME
  +        if (myclass) {
               var m = myclass.match(/img(Center|Left|Right)$/);
               if (m && m[1]) attr+=(attr ? '&':'') + 'align='+m[1].toLowerCase();
           }
  
  
  


wkpark      2007/11/01 22:50:25

  Modified:    local    moniwyg.js
  Log:
  editable markup blocks now !!
  
  Revision  Changes    Path
  1.24      +196 -16   moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- moniwyg.js	30 Oct 2007 15:54:33 -0000	1.23
  +++ moniwyg.js	1 Nov 2007 13:50:24 -0000	1.24
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.23 2007/10/30 15:54:33 wkpark Exp $
  +// $Id: moniwyg.js,v 1.24 2007/11/01 13:50:24 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -35,6 +35,135 @@
       }
   }
   
  +// Returns if current position is in a wikimarkup block or not
  +Wikiwyg.Wysiwyg.prototype.get_wikimarkup_node = function() {
  +    var p=this.get_parent_node();
  +    while (p && (p.nodeType == 1) && (p.tagName.toLowerCase() != 'body')) {
  +        if (p.nodeName=='SPAN' && p.className &&
  +                p.className.match(/wikiMarkup/) &&
  +                p.firstChild.nodeType == 8 &&
  +                p.firstChild.data.match(/^\s*wiki/)) {
  +            return p;
  +            break;
  +        }
  +        p=p.parentNode;
  +    }
  +    return null;
  +}
  +
  +Wikiwyg.Wysiwyg.prototype.set_focus = function(el) {
  +    var sel = this.get_selection();
  +    var iframe = this.edit_iframe;
  +    var doc = iframe.contentDocument || iframe.contentWindow.document;
  +
  +    // from HTMLArea 3.0 selectNodeContents() function
  +    // http://www.dynarch.com/projects/htmlarea/ BSD-style
  +    if (!Wikiwyg.is_ie) {
  +        var range = doc.createRange();
  +        range.selectNodeContents(el);
  +        sel.removeAllRanges();
  +        range.collapse(true);
  +        sel.addRange(range);
  +        el.focus();
  +    } else {
  +        range = doc.body.createTextRange();
  +        range.moveToElementText(el);
  +        range.collapse(true);
  +        range.select();
  +        el.focus();
  +    }
  +}
  +
  +Wikiwyg.Wysiwyg.prototype.update_wikimarkup = function(el,flag) {
  +    var markup = el.firstChild;
  +    if (markup.nodeType != 8) return false;
  +
  +    if (el.className == 'wikiMarkup') {
  +        el.className = 'wikiMarkupEdit';
  +        var pre=document.createElement('pre');
  +        var div=document.createElement('div');
  +        var text = markup.data.replace(/^ wiki:(\s|\\n)+/, '')
  +                   .replace(/-=/g, '-')
  +                   .replace(/==/g, '=')
  +                   .replace(/(\r\n|\n|\r)+$/, '') //.replace(/\s$/, '') IE fix
  +                   .replace(/\{(\w+):\s*\}/, '{$1}');
  +        text=text.replace(/>/g,'&gt;');
  +        var newhtml='<!--'+markup.data+'--><pre>'+text+'</pre>';
  +
  +        if (Wikiwyg.is_ie) {
  +            el.innerHTML = "<br>" +newhtml; // Bah.... IE hack :(
  +            el.removeChild(el.firstChild);
  +        } else {
  +            el.innerHTML = newhtml;
  +        }
  +
  +        this.set_focus(el.firstChild.nextSibling);
  +    } else if (flag && el.className == 'wikiMarkupEdit') {
  +        var pre=markup.nextSibling;
  +        if (pre==null) return;
  +        var myText=pre.innerHTML
  +                        .replace(/<br>/ig,"\n")
  +                        .replace(/&gt;/g,'>')
  +                        .replace(/&lt;/g,'<')
  +                        ;
  +        var postdata = 'action=markup&value=' + encodeURIComponent(myText);
  +        var myhtml= HTTPPost(top.location, postdata);
  +
  +        var myhtml = myhtml.replace(/^(.|\n)*(<span)/i,'<span')
  +                .replace(/<\/span>(\s|\n)*<\/?div>$/i,'</span>');
  +
  +        var div=document.createElement('div');
  +        if (Wikiwyg.is_ie) {
  +            div.innerHTML='<br>'+fixup_markup_style(myhtml); // IE hack
  +            div.removeChild(div.firstChild);
  +        } else {
  +            div.innerHTML=fixup_markup_style(myhtml);
  +        }
  +
  +        var n=div.firstChild;
  +        for (;n && n.nodeName!='SPAN';n=n.nextSibling);
  +
  +        if (n.nodeName=='SPAN') {
  +            if (Wikiwyg.is_ie) {
  +                el.innerHTML='<br>'+n.outerHTML; // IE hack
  +                el.removeChild(el.firstChild);
  +            } else {
  +                el.parentNode.insertBefore(n,el); // insert
  +                el.parentNode.removeChild(el);
  +                this.set_focus(el.firstChild.nextSibling);
  +            }
  +        }
  +    }
  +    return true;
  +}
  +
  +Wikiwyg.Wysiwyg.prototype.get_key_press_function = function() {
  +    var self = this;
  +    return function(e) {
  +        var ch = String.fromCharCode(Wikiwyg.is_ie ? e.keyCode : e.charCode);
  +
  +        var wm = self.get_wikimarkup_node();
  +        if (wm) self.update_wikimarkup(wm,false);
  +
  +        if (! e.ctrlKey) return;
  +        var key = String.fromCharCode(e.charCode).toLowerCase();
  +        var command = '';
  +        switch (key) {
  +            case 'b': command = 'bold'; break;
  +            case 'i': command = 'italic'; break;
  +            case 'u': command = 'underline'; break;
  +            case 'd': command = 'strike'; break;
  +            case 'l': command = 'link'; break;
  +        };
  +
  +        if (command) {
  +            e.preventDefault();
  +            e.stopPropagation();
  +            self.process_command(command);
  +        }
  +    };
  +}
  +
   // Moniwiki hack
   Wikiwyg.prototype.saveChanges = function() {
       var self = this;
  @@ -224,9 +353,11 @@
                   //    if (test.indexOf("\n") != -1)
                   //        spans[i].style.display='block';
                   //}
  -                for (var part = spans[i].firstChild; part; part = part.nextSibling) {
  -                    if (part.nodeType == 1 && part.nodeName != 'IMG' &&
  -                            part.innerHTML && part.innerHTML.indexOf("\n") != -1) {
  +                //
  +
  +                for (var p= spans[i].firstChild; p; p= p.nextSibling) {
  +                    if (p.nodeType == 1 && p.nodeName != 'IMG' &&
  +                            p.innerHTML && p.innerHTML.indexOf("\n") != -1) {
                           spans[i].style.display='block';
                           if (false && Wikiwyg.is_ie) {
                               var sn=spans[i].nextSibling;
  @@ -248,6 +379,29 @@
   
   proto = Wikiwyg.Wysiwyg.prototype;
   
  +proto.get_onclick_wikimarkup_function = function() {
  +    var self= this;
  +    return function(e) {
  +        var wm = self.get_wikimarkup_node();
  +        if (wm) self.update_wikimarkup(wm, true);
  +        //e.stopPropagation();
  +    };
  +}
  +
  +proto.enable_edit_wikimarkup = function() {
  +    if (!this.onclick_wikimarkup) {
  +        this.onclick_wikimarkup = this.get_onclick_wikimarkup_function();
  +        if (window.addEventListener) {
  +            this.get_keybinding_area().addEventListener(
  +                'dblclick', this.onclick_wikimarkup, false
  +            );
  +        } else {
  +            this.get_keybinding_area().attachEvent(
  +                'ondblclick', this.onclick_wikimarkup
  +            );
  +        }
  +    }
  +}
   
   proto.get_edit_iframe = function() {
       var iframe=null;
  @@ -301,6 +455,7 @@
               self.fix_up_relative_imgs();
               self.clear_inner_html();
               self.enable_keybindings();
  +            self.enable_edit_wikimarkup();
   
   /*
               iframe.onload='undefined';
  @@ -405,32 +560,57 @@
   proto.get_selection = function() { // See IE, below
       return this.get_edit_window().getSelection();
   }
  +
  +proto.get_parent_node = function() {
  +    var sel= this.get_edit_window().getSelection();
  +    return sel.focusNode.parentNode;
  +}
   } else {
   proto.get_selection = function() {
  -    var selection = this.get_edit_document().selection;
  -    if (selection != null)
  -        return selection.createRange();
  -    return null;
  +    return this.get_edit_document().selection;
   }
  +
  +proto.get_parent_node = function() {
  +    var sel = this.get_edit_document().selection;
  +    var iframe = this.edit_iframe;
  +    var doc = iframe.contentDocument || iframe.contentWindow.document;
  +    if (sel == null) return doc.body;
  +    var range= sel.createRange();
  +
  +    // from HTMLArea 3.0 parentElement() function
  +    switch (sel.type) {
  +    case "Text":
  +    case "None":
  +	// It seems that even for selection of type "None",
  +	// there _is_ a parent element and it's value is not
  +	// only correct, but very important to us.  MSIE is
  +	// certainly the buggiest browser in the world and I
  +	// wonder, God, how can Earth stand it?
  +	return range.parentElement();
  +    case "Control":
  +	return range.item(0);
  +    default:
  +	return doc.body;
  +    }
   }
  +}
  +
   
   proto.do_indent = function() {
  -    var sel=this.get_selection();
  -    var node=sel.focusNode.parentNode.nodeName; // XXX
  +    var node=this.get_parent_node().nodeName;
  +
       if (node && node != 'TD' && !node.match(/^H[1-6]$/))
           this.exec_command('indent');
   }
   
   proto.do_ordered = function() {
  -    var sel=this.get_selection();
  -    var node=sel.focusNode.parentNode.nodeName; // XXX
  +    var node=this.get_parent_node().nodeName;
       if (node && node != 'TD' && !node.match(/^H[1-6]$/))
           this.exec_command('insertorderedlist');
   }
   
   proto.do_unordered = function() {
  -    var sel=this.get_selection();
  -    var node=sel.focusNode.parentNode.nodeName; // XXX
  +    var node=this.get_parent_node().nodeName;
       if (node && node != 'TD' && !node.match(/^H[1-6]$/))
           this.exec_command('insertunorderedlist');
   }
  @@ -448,6 +628,8 @@
   
   proto = Wikiwyg.Wikitext.prototype;
   
  +
  +
   proto.enableThis = function() {
       Wikiwyg.Mode.prototype.enableThis.call(this);
       this.textarea.style.width = '99%';
  @@ -471,8 +653,6 @@
   proto.convert_html_to_wikitext = function(html) {
       this.copyhtml = html;
       var dom = document.createElement('div');
  -    //html = html.replace(/<!-=-/g, '<!--')
  -    //           .replace(/-=->/g, '-->');
   
       //alert(html);
   
  
  
  


wkpark      2007/11/03 01:07:19

  Modified:    css      _base.css
  Log:
  add a wikiMarkupEdit class
  
  Revision  Changes    Path
  1.17      +9 -3      moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- _base.css	8 Oct 2007 14:17:36 -0000	1.16
  +++ _base.css	2 Nov 2007 16:07:19 -0000	1.17
  @@ -265,9 +265,9 @@
   }
   
   div.indent {
  -  padding-top: 3px;
  -  margin-top: 3px;
  -  padding-left: 10px;
  +  margin:5px 0px 5px 0px;
  +  padding:0px 1em 0px 0px;
  +  border-left:2px solid #e0e0e0;
   }
   
   div.hint { font-size: 10px; background-color: #369; color:white;}
  @@ -422,6 +422,12 @@
     border-right:2px solid #F5E238;
   }
   
  +.wikiMarkupEdit pre, .wikiMarkupEdit span {
  +  background-color:#ffff00;
  +  border:2px dotted #F5E238;
  +  font-family: "Courier New",sans-serif;
  +}
  +
   /* since v1.1.3 */
   blockquote.indent {
     margin:5px 0px 5px 0px;
  
  
  


wkpark      2007/11/03 01:08:35

  Modified:    .        wiki.php
  Log:
  fixed inline markup for the WikiWyg
  
  Revision  Changes    Path
  1.354     +6 -6      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.353
  retrieving revision 1.354
  diff -u -r1.353 -r1.354
  --- wiki.php	30 Oct 2007 11:04:42 -0000	1.353
  +++ wiki.php	2 Nov 2007 16:08:35 -0000	1.354
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.353 2007/10/30 11:04:42 wkpark Exp $
  +// $Id: wiki.php,v 1.354 2007/11/02 16:08:35 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.353 $',1,-1);
  +$_revision = substr('$Revision: 1.354 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2532,9 +2532,9 @@
     function processor_repl($processor,$value,$options="") {
       $bra='';$ket='';
       if (!empty($this->wikimarkup) and empty($options['nomarkup'])) {
  -      if ($processor == 'latex' and $options['type']) {
  +      if ($options['type'] == 'inline') {
           $markups=str_replace(array('=','-','&','<'),array('==','-=','&amp;','&lt;'),$value);
  -        $bra= "<span class='wikiMarkup'><!-- wiki:\n".$markups."\n-->";
  +        $bra= "<span class='wikiMarkup' style='display:inline'><!-- wiki:\n".$markups."\n-->";
         } else {
           if ($value{0}!='#' and $value{1}!='!') $notag="\n";
           $markups=str_replace(array('=','-','&','<'),array('==','-=','&amp;','&lt;'),$value);
  @@ -3055,8 +3055,8 @@
       $wordrule="({{{(?U)(.+)}}})|".
                 "\[\[([A-Za-z0-9]+(\(((?<!\]\]).)*\))?)\]\]|"; # macro
       if ($DBInfo->inline_latex) # single line latex syntax
  -      $wordrule.="(?<=\s|^|>)\\$([^\\$]+)\\$(?:\s|$)|".
  -                 "(?<=\s|^|>)\\$\\$([^\\$]+)\\$\\$(?:\s|$)|";
  +      $wordrule.="(?<=\s|^|>)\\$([^\\$]+)\\$(?=\s|\.|\,|$)|".
  +                 "(?<=\s|^|>)\\$\\$([^\\$]+)\\$\\$(?=\s|$)|";
       #if ($DBInfo->builtin_footnote) # builtin footnote support
       $wordrule.=$this->footrule.'|';
       $wordrule.=$this->wordrule;
  
  
  


wkpark      2007/11/03 01:15:33

  Modified:    plugin/processor asciimathml.php
  Log:
  support dynamic editing with the WikiWyg like as the AsciencePad
  
  Revision  Changes    Path
  1.4       +40 -18    moniwiki/plugin/processor/asciimathml.php
  
  Index: asciimathml.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/asciimathml.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- asciimathml.php	23 Dec 2006 16:45:49 -0000	1.3
  +++ asciimathml.php	2 Nov 2007 16:15:33 -0000	1.4
  @@ -1,8 +1,16 @@
   <?php
  -// Copyright 2005 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2005-2007 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a asciimathml processor plugin by AnonymousDoner
   //
  +// Author: Won-Kyu Park <wkpark@kldp.org> and AnonymousDoner
  +// Date: 2007-11-02
  +// Name: a AsciiMathML processor
  +// Description: It support AsciiMathML
  +// URL: MoniWiki:AsciiMathML
  +// Version: $Revision: 1.4 $
  +// License: GPL
  +//
   // please see http://kldp.net/forum/message.php?msg_id=9419
   //
   // download the following javascript in the local/ dir to enable this processor:
  @@ -23,25 +31,35 @@
   // 1. set $inline_latex='asciimathml';
   // 2. replace the latex processor: $processors=array('latex'=>'asciimathml');
   //
  -// $Id: asciimathml.php,v 1.3 2006/12/23 16:45:49 wkpark Exp $
  +// $Id: asciimathml.php,v 1.4 2007/11/02 16:15:33 wkpark Exp $
   
   function processor_asciimathml($formatter,$value="") {
     global $DBInfo;
   
  -  $_add_func=1;
  -
  -  $flag = 0;
  -  $id=&$GLOBALS['_transient']['asciimathml'];
  -  if ( !$id ) { $flag = 1; $id = 1; }
     if ($value[0]=='#' and $value[1]=='!')
     list($line,$value)=explode("\n",$value,2);
   
     if ($line)
  -  list($tag,$args)=explode(' ',$line,2);
  +    list($tag,$args)=explode(' ',$line,2);
  +
  +  $_add_func=1;
  +
  +  $flag = 0;
  +  $bgcolor='';
  +  if (!$formatter->wikimarkup) {
  +    $cid=&$GLOBALS['_transient']['asciimathml'];
  +    if ( !$cid ) { $flag = 1; $cid = 1; }
  +    $id=$cid;
  +    $cid++;
  +  } else {
  +    $flag = 1;
  +    $id=md5($value.'.'.time());
  +    $bgcolor="mathbgcolor='yellow';\n";
  +  }
   
     if ( $flag ) {
  -    $out .= "<script type=\"text/javascript\" src=\"" .
  -    $DBInfo->url_prefix ."/local/ASCIIMathML.js\"></script>\n";
  +    $js=qualifiedUrl($DBInfo->url_prefix .'/local/ASCIIMathML.js');
  +    $out .= "<script type=\"text/javascript\" src=\"$js\"></script>\n";
       if (preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']))
         $out.='<object id="mathplayer"'.
           ' classid="clsid:32F66A20-7614-11D4-BD11-00104BD3F987">'.
  @@ -52,23 +70,27 @@
         $out.=<<<AJS
   <script type="text/javascript">
   /*<![CDATA[*/
  -function translateById(objId) {
  +function translateById(objId,flag) {
     AMbody = document.getElementById(objId);
  +  math2ascii(AMbody); // for WikiWyg mode switching
  +$bgcolor
     AMprocessNode(AMbody, false);
     if (isIE) { //needed to match size and font of formula to surrounding text
  -    var frag = document.getElementsByTagName('math');
  -    for (var i=0;i<frag.length;i++) frag[i].update()
  +    var frag = AMbody.getElementsByTagName('math')[0];
  +    frag.update()
     }
   }
  -  AMinitSymbols();
  +
  +// AMinitSymbols();
   /*]]>*/
   </script>
   AJS;
     }
   
  -  $out .= "<div id=\"asciimathml" . $id . "\">$value</div>" .
  -    "<script type=\"text/javascript\">translateById('asciimathml" . $id.
  -    "');</script>";
  -  $id++;
  +  $out .= "<span><span class=\"AM\" id=\"AM-$id\">$value</span>" .
  +    "<script type=\"text/javascript\">translateById('AM-$id');".
  +    "</script></span>";
     return $out;
   }
  +
  +// vim:et:sts=2:sw=2
  
  
  


wkpark      2007/11/03 01:19:13

  Modified:    local    ASCIIMathML.js
  Log:
  update with the new 1.4.8 and add a 'mathbgcolor' styling variable
  
  Revision  Changes    Path
  1.3       +29 -51    moniwiki/local/ASCIIMathML.js
  
  Index: ASCIIMathML.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/ASCIIMathML.js,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ASCIIMathML.js	23 Dec 2006 16:30:06 -0000	1.2
  +++ ASCIIMathML.js	2 Nov 2007 16:19:13 -0000	1.3
  @@ -8,28 +8,29 @@
   Just add the next line to your (X)HTML page with this file in the same folder:
   <script type="text/javascript" src="ASCIIMathML.js"></script>
   This is a convenient and inexpensive solution for authoring MathML.
  -
  -Version 1.4.7 Dec 15, 2005, (c) Peter Jipsen http://www.chapman.edu/~jipsen
  +Version 1.4.8 Aug 30, 2005, (c) Peter Jipsen http://www.chapman.edu/~jipsen
  +Modified by PJ for ASciencePad Jan 12, 2006
   Latest version at http://www.chapman.edu/~jipsen/mathml/ASCIIMathML.js
   For changes see http://www.chapman.edu/~jipsen/mathml/asciimathchanges.txt
   If you use it on a webpage, please send the URL to jipsen@chapman.edu
  -
  +**this file contains a small modification for HTMLArea plugin use
  +**mods (c) David Lippman
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2 of the License, or (at
   your option) any later version.
  -
   This program is distributed in the hope that it will be useful, 
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
   General Public License (at http://www.gnu.org/copyleft/gpl.html) 
   for more details.
   */
  -
   var checkForMathML = true;   // check if browser can display MathML
   var notifyIfNoMathML = true; // display note if no MathML capability
   var alertIfNoMathML = false;  // show alert box if no MathML capability
  +var autoRunOnLoad = false;
   var mathcolor = "red";       // change it to "" (to inherit) or any other color
  +var mathbgcolor = ""; // change it to "" (to inherit) or any other color
   var mathfontfamily = "serif"; // change to "" to inherit (works in IE) 
                                 // or another family (e.g. "arial")
   var displaystyle = true;      // puts limits above and below large operators
  @@ -41,18 +42,14 @@
                                         // for IE this works only in <!--   -->
   //var separatetokens;// has been removed (email me if this is a problem)
   var isIE = document.createElementNS==null;
  -
   if (document.getElementById==null) 
     alert("This webpage requires a recent browser such as\
   \nMozilla/Netscape 7+ or Internet Explorer 6+MathPlayer")
  -
   // all further global variables start with "AM"
  -
   function AMcreateElementXHTML(t) {
     if (isIE) return document.createElement(t);
     else return document.createElementNS("http://www.w3.org/1999/xhtml",t);
   }
  -
   function AMnoMathMLNote() {
     var nd = AMcreateElementXHTML("h3");
     nd.setAttribute("align","center")
  @@ -71,7 +68,6 @@
     nd.appendChild(AMcreateElementXHTML("p"));
     return nd;
   }
  -
   function AMisMathMLavailable() {
     if (navigator.appName.slice(0,8)=="Netscape") 
       if (navigator.appVersion.slice(0,1)>="5") return null;
  @@ -85,16 +81,13 @@
       }
     else return AMnoMathMLNote();
   }
  -
   // character lists for Mozilla/Netscape fonts
   var AMcal = [0xEF35,0x212C,0xEF36,0xEF37,0x2130,0x2131,0xEF38,0x210B,0x2110,0xEF39,0xEF3A,0x2112,0x2133,0xEF3B,0xEF3C,0xEF3D,0xEF3E,0x211B,0xEF3F,0xEF40,0xEF41,0xEF42,0xEF43,0xEF44,0xEF45,0xEF46];
   var AMfrk = [0xEF5D,0xEF5E,0x212D,0xEF5F,0xEF60,0xEF61,0xEF62,0x210C,0x2111,0xEF63,0xEF64,0xEF65,0xEF66,0xEF67,0xEF68,0xEF69,0xEF6A,0x211C,0xEF6B,0xEF6C,0xEF6D,0xEF6E,0xEF6F,0xEF70,0xEF71,0x2128];
   var AMbbb = [0xEF8C,0xEF8D,0x2102,0xEF8E,0xEF8F,0xEF90,0xEF91,0x210D,0xEF92,0xEF93,0xEF94,0xEF95,0xEF96,0x2115,0xEF97,0x2119,0x211A,0x211D,0xEF98,0xEF99,0xEF9A,0xEF9B,0xEF9C,0xEF9D,0xEF9E,0x2124];
  -
   var CONST = 0, UNARY = 1, BINARY = 2, INFIX = 3, LEFTBRACKET = 4, 
       RIGHTBRACKET = 5, SPACE = 6, UNDEROVER = 7, DEFINITION = 8,
       LEFTRIGHT = 9, TEXT = 10; // token types
  -
   var AMsqrt = {input:"sqrt", tag:"msqrt", output:"sqrt", tex:null, ttype:UNARY},
     AMroot  = {input:"root", tag:"mroot", output:"root", tex:null, ttype:BINARY},
     AMfrac  = {input:"frac", tag:"mfrac", output:"/",    tex:null, ttype:BINARY},
  @@ -105,7 +98,6 @@
     AMtext  = {input:"text", tag:"mtext", output:"text", tex:null, ttype:TEXT},
     AMmbox  = {input:"mbox", tag:"mtext", output:"mbox", tex:null, ttype:TEXT},
     AMquote = {input:"\"",   tag:"mtext", output:"mbox", tex:null, ttype:TEXT};
  -
   var AMsymbols = [
   //some greek symbols
   {input:"alpha",  tag:"mi", output:"\u03B1", tex:null, ttype:CONST},
  @@ -144,7 +136,6 @@
   {input:"xi",     tag:"mi", output:"\u03BE", tex:null, ttype:CONST},
   {input:"Xi",     tag:"mo", output:"\u039E", tex:null, ttype:CONST},
   {input:"zeta",   tag:"mi", output:"\u03B6", tex:null, ttype:CONST},
  -
   //binary operation symbols
   {input:"*",  tag:"mo", output:"\u22C5", tex:"cdot", ttype:CONST},
   {input:"**", tag:"mo", output:"\u22C6", tex:"star", ttype:CONST},
  @@ -167,7 +158,6 @@
   {input:"nnn", tag:"mo", output:"\u22C2", tex:"bigcap", ttype:UNDEROVER},
   {input:"uu",  tag:"mo", output:"\u222A", tex:"cup", ttype:CONST},
   {input:"uuu", tag:"mo", output:"\u22C3", tex:"bigcup", ttype:UNDEROVER},
  -
   //binary relation symbols
   {input:"!=",  tag:"mo", output:"\u2260", tex:"ne", ttype:CONST},
   {input:":=",  tag:"mo", output:":=",     tex:null, ttype:CONST},
  @@ -191,7 +181,6 @@
   {input:"~=",  tag:"mo", output:"\u2245", tex:"cong", ttype:CONST},
   {input:"~~",  tag:"mo", output:"\u2248", tex:"approx", ttype:CONST},
   {input:"prop", tag:"mo", output:"\u221D", tex:"propto", ttype:CONST},
  -
   //logical symbols
   {input:"and", tag:"mtext", output:"and", tex:null, ttype:SPACE},
   {input:"or",  tag:"mtext", output:"or",  tex:null, ttype:SPACE},
  @@ -205,7 +194,6 @@
   {input:"TT",  tag:"mo", output:"\u22A4", tex:"top", ttype:CONST},
   {input:"|--",  tag:"mo", output:"\u22A2", tex:"vdash", ttype:CONST},
   {input:"|==",  tag:"mo", output:"\u22A8", tex:"models", ttype:CONST},
  -
   //grouping brackets
   {input:"(", tag:"mo", output:"(", tex:null, ttype:LEFTBRACKET},
   {input:")", tag:"mo", output:")", tex:null, ttype:RIGHTBRACKET},
  @@ -221,7 +209,6 @@
   {input:">>", tag:"mo", output:"\u232A", tex:null, ttype:RIGHTBRACKET},
   {input:"{:", tag:"mo", output:"{:", tex:null, ttype:LEFTBRACKET, invisible:true},
   {input:":}", tag:"mo", output:":}", tex:null, ttype:RIGHTBRACKET, invisible:true},
  -
   //miscellaneous symbols
   {input:"int",  tag:"mo", output:"\u222B", tex:null, ttype:CONST},
   {input:"dx",   tag:"mi", output:"{:d x:}", tex:null, ttype:DEFINITION},
  @@ -257,7 +244,6 @@
   {input:"ZZ",  tag:"mo", output:"\u2124", tex:null, ttype:CONST},
   {input:"f",   tag:"mi", output:"f",      tex:null, ttype:UNARY, func:true},
   {input:"g",   tag:"mi", output:"g",      tex:null, ttype:UNARY, func:true},
  -
   //standard functions
   {input:"lim",  tag:"mo", output:"lim", tex:null, ttype:UNDEROVER},
   {input:"Lim",  tag:"mo", output:"Lim", tex:null, ttype:UNDEROVER},
  @@ -281,7 +267,6 @@
   {input:"glb",  tag:"mo", output:"glb", tex:null, ttype:CONST},
   {input:"min",  tag:"mo", output:"min", tex:null, ttype:UNDEROVER},
   {input:"max",  tag:"mo", output:"max", tex:null, ttype:UNDEROVER},
  -
   //arrows
   {input:"uarr", tag:"mo", output:"\u2191", tex:"uparrow", ttype:CONST},
   {input:"darr", tag:"mo", output:"\u2193", tex:"downarrow", ttype:CONST},
  @@ -293,7 +278,6 @@
   {input:"rArr", tag:"mo", output:"\u21D2", tex:"Rightarrow", ttype:CONST},
   {input:"lArr", tag:"mo", output:"\u21D0", tex:"Leftarrow", ttype:CONST},
   {input:"hArr", tag:"mo", output:"\u21D4", tex:"Leftrightarrow", ttype:CONST},
  -
   //commands with argument
   AMsqrt, AMroot, AMfrac, AMdiv, AMover, AMsub, AMsup,
   {input:"hat", tag:"mover", output:"\u005E", tex:null, ttype:UNARY, acc:true},
  @@ -316,14 +300,11 @@
   {input:"fr",  tag:"mstyle", atname:"mathvariant", atval:"fraktur", output:"fr", tex:null, ttype:UNARY, codes:AMfrk},
   {input:"mathfrak",  tag:"mstyle", atname:"mathvariant", atval:"fraktur", output:"mathfrak", tex:null, ttype:UNARY, codes:AMfrk}
   ];
  -
   function compareNames(s1,s2) {
     if (s1.input > s2.input) return 1
     else return -1;
   }
  -
   var AMnames = []; //list of input symbols
  -
   function AMinitSymbols() {
     var texsymbols = [], i;
     for (i=0; i<AMsymbols.length; i++)
  @@ -334,14 +315,11 @@
     AMsymbols.sort(compareNames);
     for (i=0; i<AMsymbols.length; i++) AMnames[i] = AMsymbols[i].input;
   }
  -
   var AMmathml = "http://www.w3.org/1998/Math/MathML";
  -
   function AMcreateElementMathML(t) {
     if (isIE) return document.createElement("m:"+t);
     else return document.createElementNS(AMmathml,t);
   }
  -
   function AMcreateMmlNode(t,frag) {
   //  var node = AMcreateElementMathML(name);
     if (isIE) var node = document.createElement("m:"+t);
  @@ -349,12 +327,10 @@
     node.appendChild(frag);
     return node;
   }
  -
   function newcommand(oldstr,newstr) {
     AMsymbols = AMsymbols.concat([{input:oldstr, tag:"mo", output:newstr, 
                                    tex:null, ttype:DEFINITION}]);
   }
  -
   function AMremoveCharsAndBlanks(str,n) {
   //remove n characters and any following blanks
     var st;
  @@ -364,7 +340,6 @@
     for (var i=0; i<st.length && st.charCodeAt(i)<=32; i=i+1);
     return st.slice(i);
   }
  -
   function AMposition(arr, str, n) { 
   // return position >=n where str appears or would be inserted
   // assumes arr is sorted
  @@ -381,7 +356,6 @@
       for (var i=n; i<arr.length && arr[i]<str; i++);
     return i; // i=arr.length || arr[i]>=str
   }
  -
   function AMgetSymbol(str) {
   //return maximal initial substring of str that appears in names
   //return null if there is none
  @@ -436,13 +410,10 @@
       st = str.slice(0,1); //take 1 character
       tagst = (("A">st || st>"Z") && ("a">st || st>"z")?"mo":"mi");
     }
  -  if (st=="-" && AMpreviousSymbol==INFIX) {
  -    AMcurrentSymbol = INFIX;  //trick "/" into recognizing "-" on second parse
  +  if (st=="-" && AMpreviousSymbol==INFIX)
       return {input:st, tag:tagst, output:st, ttype:UNARY, func:true};
  -  }
     return {input:st, tag:tagst, output:st, ttype:CONST};
   }
  -
   function AMremoveBrackets(node) {
     var st;
     if (node.nodeName=="mrow") {
  @@ -454,7 +425,6 @@
       if (st==")" || st=="]" || st=="}") node.removeChild(node.lastChild);
     }
   }
  -
   /*Parsing ASCII math expressions with the following grammar
   v ::= [A-Za-z] | greek letters | numbers | other constant symbols
   u ::= sqrt | text | bb | other unary symbols for font commands
  @@ -465,9 +435,7 @@
   I ::= S_S | S^S | S_S^S | S          Intermediate expression
   E ::= IE | I/I                       Expression
   Each terminal symbol is translated into a corresponding mathml node.*/
  -
   var AMnestingDepth,AMpreviousSymbol,AMcurrentSymbol;
  -
   function AMparseSexpr(str) { //parses str and returns [node,tailstr]
     var symbol, node, result, i, st,// rightvert = false,
       newFrag = document.createDocumentFragment();
  @@ -606,6 +574,7 @@
       var st = "";
       if (result[0].lastChild!=null)
         st = result[0].lastChild.firstChild.nodeValue;
  +//alert(result[0].lastChild+"***"+st);
       if (st == "|") { // its an absolute value subterm
         node = AMcreateMmlNode("mo",document.createTextNode(symbol.output));
         node = AMcreateMmlNode("mrow",node);
  @@ -623,7 +592,6 @@
                                document.createTextNode(symbol.output)),str];
     }
   }
  -
   function AMparseIexpr(str) {
     var symbol, sym1, sym2, node, result, underover;
     str = AMremoveCharsAndBlanks(str,0);
  @@ -664,7 +632,6 @@
     }
     return [node,str];
   }
  -
   function AMparseExpr(str,rightbracket) {
     var symbol, node, result, i, nodeList = [],
     newFrag = document.createDocumentFragment();
  @@ -757,13 +724,17 @@
     }
     return [newFrag,str];
   }
  -
   function AMparseMath(str) {
     var result, node = AMcreateElementMathML("mstyle");
     if (mathcolor != "") node.setAttribute("mathcolor",mathcolor);
     if (displaystyle) node.setAttribute("displaystyle","true");
  +  if (mathbgcolor != "") node.setAttribute("background",mathbgcolor);
     if (mathfontfamily != "") node.setAttribute("fontfamily",mathfontfamily);
     AMnestingDepth = 0;
  +  //DLMOD to remove &nbsp;, which editor adds on multiple spaces
  +  str = str.replace(/&nbsp;/g,"");
  +  str = str.replace(/&gt;/g,">");
  +  str = str.replace(/&lt;/g,"<");
     node.appendChild(AMparseExpr(str.replace(/^\s+/g,""),false)[0]);
     node = AMcreateMmlNode("math",node);
     if (showasciiformulaonhover)                      //fixed by djhsu so newline
  @@ -776,7 +747,6 @@
     }
     return node;
   }
  -
   function AMstrarr2docFrag(arr, linebreaks) {
     var newFrag=document.createDocumentFragment();
     var expr = false;
  @@ -796,7 +766,6 @@
     }
     return newFrag;
   }
  -
   function AMprocessNodeR(n, linebreaks) {
     var mtch, str, arr, frg, i;
     if (n.childNodes.length == 0) {
  @@ -850,10 +819,9 @@
     }
     return 0;
   }
  -
   function AMprocessNode(n, linebreaks, spanclassAM) {
     var frag,st;
  -  if (spanclassAM!=null) {
  +  if (spanclassAM!=null) {;
       frag = document.getElementsByTagName("span")
       for (var i=0;i<frag.length;i++)
         if (frag[i].className == "AM")
  @@ -871,33 +839,43 @@
       for (var i=0;i<frag.length;i++) frag[i].update()
     }
   }
  -
   var AMbody;
   var AMnoMathML = false, AMtranslated = false;
  -
   function translate(spanclassAM) {
     if (!AMtranslated) { // run this only once
       AMtranslated = true;
  -    AMinitSymbols();
       AMbody = document.getElementsByTagName("body")[0];
       AMprocessNode(AMbody, false, spanclassAM);
     }
   }
   
  -/* disable it for MoniWiki
  +// from AsciencePad
  +function math2ascii(el) {
  +  var myAM = el.innerHTML;
  +  if (myAM.indexOf("$") == -1) {
  +    myAM = myAM.replace(/.+title=\"(.*?)\".+/g,"\$1");
  +    myAM = myAM.replace(/.+title=(.*?)>.+/g,"\$1");
  +    el.innerHTML = '$' + myAM + '$';
  +  } 
  +}
  +
  +AMinitSymbols();
  +
   if (isIE) { // avoid adding MathPlayer info explicitly to each webpage
     document.write("<object id=\"mathplayer\"\
     classid=\"clsid:32F66A20-7614-11D4-BD11-00104BD3F987\"></object>");
     document.write("<?import namespace=\"m\" implementation=\"#mathplayer\"?>");
   }
   
  +/* disable it for the MoniWiki
   // GO1.1 Generic onload by Brothercake 
   // http://www.brothercake.com/
   //onload function (replaces the onload="translate()" in the <body> tag)
   function generic()
   {
  -  translate();
  +  if (autoRunOnLoad) translate();
   };
  +
   //setup onload function
   if(typeof window.addEventListener != 'undefined')
   {
  
  
  


wkpark      2007/11/03 01:21:59

  Modified:    local    moniwyg.js
  Log:
  fixes for dynamic markup editing with the AsciiMathML.
  misc changes and fixes
  
  Revision  Changes    Path
  1.25      +134 -17   moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- moniwyg.js	1 Nov 2007 13:50:24 -0000	1.24
  +++ moniwyg.js	2 Nov 2007 16:21:59 -0000	1.25
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.24 2007/11/01 13:50:24 wkpark Exp $
  +// $Id: moniwyg.js,v 1.25 2007/11/02 16:21:59 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -35,6 +35,48 @@
       }
   }
   
  +Wikiwyg.Mode.prototype.execute_scripts = function(el) {
  +    var doc;
  +    var iframe=null;
  +
  +    if (this.classname.match(/(Wysiwyg)/)) {
  +        iframe = this.edit_iframe;
  +        doc = iframe.contentDocument || iframe.contentWindow.document;
  +        el= this.get_edit_document().body; // XXX
  +    } else if (this.classname.match(/(Preview)/)) {
  +        doc = document;
  +    } else {
  +        return;
  +    }
  +
  +    var head = document.getElementsByTagName("head")[0];
  +    var scripts;
  +
  +    if (el)
  +        scripts= el.getElementsByTagName('script');
  +    else
  +        scripts= this.div.getElementsByTagName('script');
  +
  +    for (var i=0;i<scripts.length;i++) {
  +        var n=scripts[i].cloneNode(true);
  +        if (scripts[i].src) {
  +            var js=document.createElement('script');
  +            js.type='text/javascript';
  +            js.src=n.src;
  +            head.appendChild(js);
  +        } else {
  +            var js1=doc.createElement('script');
  +            js1.type='text/javascript';
  +            if (iframe) // hack XXX
  +                js1.text=n.text.replace(/document\./g,'doc.');
  +            else
  +                js1.text=n.text;
  +            eval(js1.text); // XXX
  +            //head.appendChild(js1);
  +        }
  +    }
  +}
  +
   // Returns if current position is in a wikimarkup block or not
   Wikiwyg.Wysiwyg.prototype.get_wikimarkup_node = function() {
       var p=this.get_parent_node();
  @@ -51,6 +93,28 @@
       return null;
   }
   
  +Wikiwyg.Wysiwyg.prototype.check_parent_node = function() {
  +    var p=this.get_parent_node();
  +    while (p && (p.nodeType == 1) && (p.tagName.toLowerCase() != 'body')) {
  +        if (p.nodeName == 'TD' ||
  +                p.nodeName == 'PRE' ||
  +                p.nodeName.match(/^H[1-6]/)) {
  +            return p;
  +            break;
  +        } else if (p.nodeName == 'SPAN') {
  +            if (p.className &&
  +                    p.className.match(/wikiMarkup/) &&
  +                    p.firstChild.nodeType == 8 &&
  +                    p.firstChild.data.match(/^\s*wiki/)) {
  +                return p;
  +                break;
  +            }
  +        }
  +        p=p.parentNode;
  +    }
  +    return p;
  +}
  +
   Wikiwyg.Wysiwyg.prototype.set_focus = function(el) {
       var sel = this.get_selection();
       var iframe = this.edit_iframe;
  @@ -77,10 +141,14 @@
   Wikiwyg.Wysiwyg.prototype.update_wikimarkup = function(el,flag) {
       var markup = el.firstChild;
       if (markup.nodeType != 8) return false;
  +    var self= this;
  +    var type;
   
       if (el.className == 'wikiMarkup') {
           el.className = 'wikiMarkupEdit';
  -        var pre=document.createElement('pre');
  +        if (el.style.display == 'inline') type='span';
  +        else type='pre';
  +        var edit=document.createElement(type);
           var div=document.createElement('div');
           var text = markup.data.replace(/^ wiki:(\s|\\n)+/, '')
                      .replace(/-=/g, '-')
  @@ -88,7 +156,7 @@
                      .replace(/(\r\n|\n|\r)+$/, '') //.replace(/\s$/, '') IE fix
                      .replace(/\{(\w+):\s*\}/, '{$1}');
           text=text.replace(/>/g,'&gt;');
  -        var newhtml='<!--'+markup.data+'--><pre>'+text+'</pre>';
  +        var newhtml='<!--'+markup.data+'--><'+type+'>'+text+'</'+type+'>';
   
           if (Wikiwyg.is_ie) {
               el.innerHTML = "<br>" +newhtml; // Bah.... IE hack :(
  @@ -99,9 +167,9 @@
   
           this.set_focus(el.firstChild.nextSibling);
       } else if (flag && el.className == 'wikiMarkupEdit') {
  -        var pre=markup.nextSibling;
  -        if (pre==null) return;
  -        var myText=pre.innerHTML
  +        var edit=markup.nextSibling;
  +        if (edit==null) return;
  +        var myText=edit.innerHTML
                           .replace(/<br>/ig,"\n")
                           .replace(/&gt;/g,'>')
                           .replace(/&lt;/g,'<')
  @@ -119,19 +187,22 @@
           } else {
               div.innerHTML=fixup_markup_style(myhtml);
           }
  +        //alert(div.innerHTML);
   
           var n=div.firstChild;
           for (;n && n.nodeName!='SPAN';n=n.nextSibling);
   
  -        if (n.nodeName=='SPAN') {
  +        if (n && n.nodeName=='SPAN') {
               if (Wikiwyg.is_ie) {
                   el.innerHTML='<br>'+n.outerHTML; // IE hack
                   el.removeChild(el.firstChild);
               } else {
  +                //el.innerHTML=nn.innerHTML; // not work properly :(
                   el.parentNode.insertBefore(n,el); // insert
                   el.parentNode.removeChild(el);
  -                this.set_focus(el.firstChild.nextSibling);
  +                this.set_focus(n.firstChild.nextSibling);
               }
  +            this.execute_scripts(n);
           }
       }
       return true;
  @@ -287,12 +358,15 @@
               new_mode.enableFinished();
               old_mode.disableFinished();
               self.current_mode = new_mode;
  +            self.current_mode.execute_scripts(new_mode.div);
           }
       );
       if (typeof textAreaAutoAttach == 'function') // support resizable textarea
           textAreaAutoAttach();
   }
   
  +
  +
   Wikiwyg.prototype.editMode = function(form,text) {
       var self = this;
       var dom = document.createElement('div');
  @@ -309,7 +383,10 @@
           var myWikiwyg = new Wikiwyg.Wikitext();
   
           myWikiwyg.convertWikitextToHtml(wikitext,
  -            function(new_html) { self.current_mode.fromHtml(fixup_markup_style(new_html)); });
  +            function(new_html) {
  +                self.current_mode.fromHtml(fixup_markup_style(new_html));
  +                self.current_mode.execute_scripts();
  +            });
       }
       else {
           this.current_mode.textarea.value = wikitext;
  @@ -354,6 +431,8 @@
                   //        spans[i].style.display='block';
                   //}
                   //
  +                if (spans[i].style.display == 'inline') continue;
  +                // inline markups
   
                   for (var p= spans[i].firstChild; p; p= p.nextSibling) {
                       if (p.nodeType == 1 && p.nodeName != 'IMG' &&
  @@ -393,7 +472,7 @@
           this.onclick_wikimarkup = this.get_onclick_wikimarkup_function();
           if (window.addEventListener) {
               this.get_keybinding_area().addEventListener(
  -                'dblclick', this.onclick_wikimarkup, false
  +                'dblclick', this.onclick_wikimarkup, true
               );
           } else {
               this.get_keybinding_area().attachEvent(
  @@ -597,21 +676,58 @@
   
   
   proto.do_indent = function() {
  -    var node=this.get_parent_node().nodeName;
  -
  -    if (node && node != 'TD' && !node.match(/^H[1-6]$/))
  +    var node=this.check_parent_node().nodeName;
  +    if (node && node == 'BODY')
           this.exec_command('indent');
   }
   
  +proto.do_math = function() {
  +    var node=this.check_parent_node().nodeName;
  +    if (node && node != 'BODY') return;
  +
  +    var html =
  +        '<span class="wikiMarkupEdit" style="display:inline">' +
  +        "<!-- wiki:\n$ $\n-->" +
  +        '<span>$&nbsp;$</span></span>';
  +    this.insert_table(html);
  +}
  +
  +proto.do_hr = function() {
  +    var node=this.check_parent_node().nodeName;
  +    if (node && node == 'BODY')
  +        this.exec_command('inserthorizontalrule');
  +}
  +
  +proto.do_h2 = function(command) {
  +    var node=this.check_parent_node().nodeName;
  +    if (node && node == 'BODY')
  +        this.exec_command('formatblock','<' + command + '>');
  +}
  +
  +proto.do_table = function(command) {
  +    var node=this.check_parent_node().nodeName;
  +    if (node && node != 'BODY') return;
  +
  +    var html =
  +        '<table><tbody>' +
  +        '<tr><td>A</td>' +
  +            '<td>B</td>' +
  +            '<td>C</td></tr>' +
  +        '<tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>' +
  +        '<tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>' +
  +        '</tbody></table>';
  +    this.insert_table(html);
  +}
  +
   proto.do_ordered = function() {
  -    var node=this.get_parent_node().nodeName;
  -    if (node && node != 'TD' && !node.match(/^H[1-6]$/))
  +    var node=this.check_parent_node().nodeName;
  +    if (node && node == 'BODY')
           this.exec_command('insertorderedlist');
   }
   
   proto.do_unordered = function() {
  -    var node=this.get_parent_node().nodeName;
  -    if (node && node != 'TD' && !node.match(/^H[1-6]$/))
  +    var node=this.check_parent_node().nodeName;
  +    if (node && node == 'BODY')
           this.exec_command('insertunorderedlist');
   }
   
  @@ -646,6 +762,7 @@
       this.textarea.setAttribute('id', 'wikiwyg_wikitext_textarea');
       this.textarea.setAttribute('class', 'resizable');
       this.div.appendChild(this.textarea);
  +
       this.area = this.textarea;
       this.clear_inner_text();
   }
  
  
  


wkpark      2007/11/03 01:24:46

  Modified:    local/Wikiwyg/lib/Wikiwyg Preview.js
  Log:
  oops! revert..
  
  Revision  Changes    Path
  1.3       +4 -0      moniwiki/local/Wikiwyg/lib/Wikiwyg/Preview.js
  
  Index: Preview.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/lib/Wikiwyg/Preview.js,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Preview.js	22 Oct 2007 02:51:51 -0000	1.2
  +++ Preview.js	2 Nov 2007 16:24:46 -0000	1.3
  @@ -42,6 +42,10 @@
       this.div.style.backgroundColor = 'lightyellow';
   }
   
  +proto.fromHtml = function(html) {
  +    this.div.innerHTML = html;
  +}
  +
   proto.toHtml = function(func) {
       func(this.div.innerHTML);
   }
  
  
  


wkpark      2007/11/03 12:50:30

  Modified:    local    googlehi.js
  Log:
  fixed moz error
  
  Revision  Changes    Path
  1.2       +2 -2      moniwiki/local/googlehi.js
  
  Index: googlehi.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/googlehi.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- googlehi.js	11 Oct 2007 09:34:00 -0000	1.1
  +++ googlehi.js	3 Nov 2007 03:50:30 -0000	1.2
  @@ -10,8 +10,8 @@
       if (url.indexOf('?') == -1) return [];
       var queryString = url.substr(url.indexOf('?') + 1);
       var params = queryString.split('&');
  -    for (var p in params) {
  -      var param = params[p].split('=');
  +    for (var i=0;i<params.length;i++) {
  +      var param = params[i].split('=');
         if (param.length < 2) continue;
         if (param[0] == 'q' || param[0] == 'p') { // q= for Google, p= for Yahoo
           var query = decodeURIComponent(param[1].replace(/\+/g, ' '));
  
  
  


wkpark      2007/11/03 12:54:00

  Modified:    local    moniwyg.js
  Log:
  add keydown handler.
  use ESC as toggle key
  
  Revision  Changes    Path
  1.26      +82 -10    moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- moniwyg.js	2 Nov 2007 16:21:59 -0000	1.25
  +++ moniwyg.js	3 Nov 2007 03:54:00 -0000	1.26
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.25 2007/11/02 16:21:59 wkpark Exp $
  +// $Id: moniwyg.js,v 1.26 2007/11/03 03:54:00 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -115,35 +115,46 @@
       return p;
   }
   
  -Wikiwyg.Wysiwyg.prototype.set_focus = function(el) {
  +Wikiwyg.Wysiwyg.prototype.set_focus = function(el,focus) {
       var sel = this.get_selection();
       var iframe = this.edit_iframe;
       var doc = iframe.contentDocument || iframe.contentWindow.document;
   
  +    flag=false;
  +    collapse=true;
  +    if (focus!=null) {
  +        if (focus & 1) flag= true;
  +        if (focus & 2) collapse= false;
  +    }
  +    // focus = 0:start, 1:end, 2:no collapse
  +
       // from HTMLArea 3.0 selectNodeContents() function
       // http://www.dynarch.com/projects/htmlarea/ BSD-style
       if (!Wikiwyg.is_ie) {
           var range = doc.createRange();
           range.selectNodeContents(el);
           sel.removeAllRanges();
  -        range.collapse(true);
  +        if (collapse) range.collapse(flag);
           sel.addRange(range);
           el.focus();
       } else {
           range = doc.body.createTextRange();
           range.moveToElementText(el);
  -        range.collapse(true);
  +        if (collapse) range.collapse(flag);
           range.select();
           el.focus();
       }
   }
   
  -Wikiwyg.Wysiwyg.prototype.update_wikimarkup = function(el,flag) {
  +Wikiwyg.Wysiwyg.prototype.update_wikimarkup = function(el,flag,focus) {
       var markup = el.firstChild;
       if (markup.nodeType != 8) return false;
       var self= this;
       var type;
   
  +    if (focus==null || focus == 'undefined')
  +        focus=0; // 0:start, 1:end, 2:no collapse
  +
       if (el.className == 'wikiMarkup') {
           el.className = 'wikiMarkupEdit';
           if (el.style.display == 'inline') type='span';
  @@ -165,7 +176,7 @@
               el.innerHTML = newhtml;
           }
   
  -        this.set_focus(el.firstChild.nextSibling);
  +        this.set_focus(el.firstChild.nextSibling,focus);
       } else if (flag && el.className == 'wikiMarkupEdit') {
           var edit=markup.nextSibling;
           if (edit==null) return;
  @@ -200,7 +211,7 @@
                   //el.innerHTML=nn.innerHTML; // not work properly :(
                   el.parentNode.insertBefore(n,el); // insert
                   el.parentNode.removeChild(el);
  -                this.set_focus(n.firstChild.nextSibling);
  +                this.set_focus(n.firstChild.nextSibling,focus);
               }
               this.execute_scripts(n);
           }
  @@ -208,15 +219,58 @@
       return true;
   }
   
  -Wikiwyg.Wysiwyg.prototype.get_key_press_function = function() {
  +
  +Wikiwyg.Wysiwyg.prototype.get_key_down_function = function() {
       var self = this;
       return function(e) {
           var ch = String.fromCharCode(Wikiwyg.is_ie ? e.keyCode : e.charCode);
  +        var key = String.fromCharCode(e.keyCode); // XXX
   
           var wm = self.get_wikimarkup_node();
  -        if (wm) self.update_wikimarkup(wm,false);
  +        if (e.keyCode == 27) { // ESC
  +            if (wm) self.update_wikimarkup(wm,true);
  +            return false;
  +        }
  +        if (wm && wm.className.match(/wikiMarkup/)) {
  +            var focus=0;
  +            var stop=false;
  +
  +            if (key == 'I') focus|=1;
  +            else if (key == 'S') focus|=2;
  +            if (wm.className == 'wikiMarkup') {
  +                self.update_wikimarkup(wm,false,focus);
  +                stop=true;
  +            } else if (e.ctrlKey) {
  +                stop=true; // FIXME
  +            }
  +
  +            if (stop) {    
  +                e.preventDefault();
  +                e.stopPropagation();
  +                return false;
  +            }
  +            return true;
  +        }
  +        return true;
  +    };
  +}
  +
  +Wikiwyg.Wysiwyg.prototype.get_key_press_function = function() {
  +    var self = this;
  +    return function(e) {
  +        var ch = String.fromCharCode(Wikiwyg.is_ie ? e.keyCode : e.charCode);
   
  -        if (! e.ctrlKey) return;
  +        if (! e.ctrlKey) {
  +            /* if (e.keyCode == 8) { // backspace
  +                var p = self.get_parent_node();
  +                if (p.childNodes.length == 0) {
  +                    alert('www');
  +                    p.parentNode.removeChild(p);
  +                }
  +            }
  +            */
  +            return;
  +        }
           var key = String.fromCharCode(e.charCode).toLowerCase();
           var command = '';
           switch (key) {
  @@ -464,6 +518,7 @@
           var wm = self.get_wikimarkup_node();
           if (wm) self.update_wikimarkup(wm, true);
           //e.stopPropagation();
  +        //e.preventDefault();
       };
   }
   
  @@ -482,6 +537,22 @@
       }
   }
   
  +proto.enable_keybindings = function() { // See IE
  +    if (!this.key_press_function) {
  +        this.key_press_function = this.get_key_press_function();
  +        this.get_keybinding_area().addEventListener(
  +            'keypress', this.key_press_function, true
  +        );
  +    }
  +
  +    if (!this.key_down_function) {
  +        this.key_down_function = this.get_key_down_function();
  +        this.get_keybinding_area().addEventListener(
  +            'keydown', this.key_down_function, true
  +        );
  +    }
  +}
  +
   proto.get_edit_iframe = function() {
       var iframe=null;
       var body;
  @@ -1957,6 +2028,7 @@
           area=document.getElementById('editor_area');
           text=area.getElementsByTagName('textarea')[0].value;
           form=area.innerHTML;
  +
           var toolbar=document.getElementById('toolbar');
           if (toolbar) { // hide toolbar
               if (Wikiwyg.is_ie) toolbar.style.display='none';
  
  
  


wkpark      2007/11/03 12:57:26

  Modified:    .        wiki.php
  Log:
  fixed get_javascripts() and use it in the send_page()
  add a $javascripts config option. ex) $javascript = array('ASCIIMathML.js');
  use $this->url_prefix in the Formatter
  
  Revision  Changes    Path
  1.355     +12 -7     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.354
  retrieving revision 1.355
  diff -u -r1.354 -r1.355
  --- wiki.php	2 Nov 2007 16:08:35 -0000	1.354
  +++ wiki.php	3 Nov 2007 03:57:26 -0000	1.355
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.354 2007/11/02 16:08:35 wkpark Exp $
  +// $Id: wiki.php,v 1.355 2007/11/03 03:57:26 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.354 $',1,-1);
  +$_revision = substr('$Revision: 1.355 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -1687,6 +1687,7 @@
       $this->postfilters=$DBInfo->postfilters;
       $this->use_rating=$DBInfo->use_rating;
       $this->use_etable=$DBInfo->use_etable;
  +    $this->java_scripts=$DBInfo->javascripts;
   
       if (($p=strpos($page->name,"~")))
         $this->group=substr($page->name,0,$p+1);
  @@ -2209,7 +2210,7 @@
           if (!file_exists($ntext))
             $text=$this->macro_repl('Attachment',$fname);
           else {
  -          $text=qualifiedUrl($DBInfo->url_prefix.'/'.$ntext);
  +          $text=qualifiedUrl($this->url_prefix.'/'.$ntext);
             $text= "<img style='border:0' alt='$text' src='$text' />";
           }
         } else
  @@ -2299,7 +2300,7 @@
             if (!file_exists($ntext)) {
               $word=$this->macro_repl('Attachment',$fname);
             } else {
  -            $text=qualifiedUrl($DBInfo->url_prefix.'/'.$ntext);
  +            $text=qualifiedUrl($this->url_prefix.'/'.$ntext);
               $word= "<img style='border:0' alt='$text' src='$text' /></a>";
             }
           } else {
  @@ -2951,6 +2952,7 @@
             foreach ($fts as $ft)
               $text=$this->postfilter_repl($ft,$text,$options);
           }
  +        print $this->get_javascripts();
           print $text;
   
           return;
  @@ -3561,6 +3563,7 @@
       #$text=preg_replace("/(&lt;)(\/?del>)/i","<\\2",$text);
       $text.=$close;
     
  +    print $this->get_javascripts();
       print $text;
       if ($this->sisters and !$options['nosisters']) {
         $sister_save=$this->sister_on;
  @@ -3612,9 +3615,11 @@
     function get_javascripts() {
       $out='';
       foreach ($this->java_scripts as $js) {
  -      $out.='<script type="text/javascript" src="'.$url_prefix.'/local/'.$js.'>'.
  -        "</script>\n";
  +      if (!preg_match('@^http://@',$js))
  +        $js=$this->url_prefix.'/local/'.$js;
  +      $out.="<script type='text/javascript' src='$js'></script>\n";
       }
  +    $this->java_scripts=array();
       return $out;
     }
   
  @@ -4904,5 +4909,5 @@
   
   wiki_main($options);
   endif;
  -// vim:et:sts=2:
  +// vim:et:sts=2:sw=2
   ?>
  
  
  


wkpark      2007/11/03 13:08:13

  Modified:    .        config.php.default
  Log:
  add a $javascripts option
  
  Revision  Changes    Path
  1.43      +14 -1     moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.42
  retrieving revision 1.43
  diff -u -r1.42 -r1.43
  --- config.php.default	20 Oct 2007 01:49:51 -0000	1.42
  +++ config.php.default	3 Nov 2007 04:08:13 -0000	1.43
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.42 2007/10/20 01:49:51 wkpark Exp $
  +# $Id: config.php.default,v 1.43 2007/11/03 04:08:13 wkpark Exp $
   #
   $sitename='UnnamedWiki'; # site name
   $data_dir= './data';
  @@ -114,6 +114,17 @@
   #<script type="text/javascript" src="$url_prefix/local/autocomplete.js"></script>
   #<script type="text/javascript" src="$url_prefix/local/subindex.js"></script>
   #EOF;
  +# alternatively you can use the $javascripts option
  +#$javascripts=array(
  +#	'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',
  +#	'moniwyg.js',
  +#	'ASCIIMathML.js');
   
   #$diffonly=1; # show only diff infos (do not show wiki contents)
   #$goto_type=1;
  @@ -226,4 +237,6 @@
   $use_jwmediaplayer=1;
   $jwmediaplayer_prefix='http://www.jeroenwijering.com/embed';
   #$icon_list='edit,diff,show,find,print,info,help'; # set the icon list
  +#$use_folding=0; # 1:default simple js / 2:with the prototype/mootools
  +#$use_etable=0; # use new extended table syntax: experimental
   ?>
  
  
  


wkpark      2007/11/03 17:29:15

  Modified:    local    moniwyg.js
  Log:
  more fixes
  
  Revision  Changes    Path
  1.27      +4 -3      moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- moniwyg.js	3 Nov 2007 03:54:00 -0000	1.26
  +++ moniwyg.js	3 Nov 2007 08:29:15 -0000	1.27
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.26 2007/11/03 03:54:00 wkpark Exp $
  +// $Id: moniwyg.js,v 1.27 2007/11/03 08:29:15 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -188,7 +188,7 @@
           var postdata = 'action=markup&value=' + encodeURIComponent(myText);
           var myhtml= HTTPPost(top.location, postdata);
   
  -        var myhtml = myhtml.replace(/^(.|\n)*(<span)/i,'<span')
  +        var myhtml = myhtml.replace(/^(.|\n)*<div>(\s|\n)*(<span)/i,'$3')
                   .replace(/<\/span>(\s|\n)*<\/?div>$/i,'</span>');
   
           var div=document.createElement('div');
  @@ -211,7 +211,8 @@
                   //el.innerHTML=nn.innerHTML; // not work properly :(
                   el.parentNode.insertBefore(n,el); // insert
                   el.parentNode.removeChild(el);
  -                this.set_focus(n.firstChild.nextSibling,focus);
  +                this.set_focus(n,focus);
  +                //this.set_focus(n.firstChild.nextSibling,focus);
               }
               this.execute_scripts(n);
           }
  
  
  


wkpark      2007/11/03 17:31:35

  Modified:    .        wiki.php
  Log:
  fixed *_javascripts()
  
  Revision  Changes    Path
  1.356     +21 -10    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.355
  retrieving revision 1.356
  diff -u -r1.355 -r1.356
  --- wiki.php	3 Nov 2007 03:57:26 -0000	1.355
  +++ wiki.php	3 Nov 2007 08:31:35 -0000	1.356
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.355 2007/11/03 03:57:26 wkpark Exp $
  +// $Id: wiki.php,v 1.356 2007/11/03 08:31:35 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.355 $',1,-1);
  +$_revision = substr('$Revision: 1.356 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -3607,19 +3607,28 @@
     function register_javascripts($js) {
       if (is_array($js)) {
         array_merge($this->java_scripts,$js);
  -    } else if (!in_array($js,$this->java_scripts)) {
  -      $this->java_scripts[]=$js;
  +    } else {
  +      if ($js{0} == '<') { $tag=md5($js); }
  +      else $tag=$js;
  +      if (!empty($this->javascripts[$tag]))
  +        $this->java_scripts[$tag]=$js;
       }
     }
   
     function get_javascripts() {
       $out='';
  -    foreach ($this->java_scripts as $js) {
  -      if (!preg_match('@^http://@',$js))
  -        $js=$this->url_prefix.'/local/'.$js;
  -      $out.="<script type='text/javascript' src='$js'></script>\n";
  +    foreach ($this->java_scripts as $k=>$js) {
  +      if ($js) {
  +        if ($js{0} != '<') {
  +          if (!preg_match('@^(http://|/)@',$js))
  +            $js=$this->url_prefix.'/local/'.$js;
  +          $out.="<script type='text/javascript' src='$js'></script>\n";
  +        } else {
  +          $out.=$js;
  +        }
  +        $this->java_scripts[$k]='';
  +      }
       }
  -    $this->java_scripts=array();
       return $out;
     }
   
  @@ -3783,7 +3792,9 @@
   /*]]>*/
   </script>
   JSHEAD;
  -      print $metatags.$js."\n".$keywords;
  +      print $metatags.$js."\n";
  +      print $this->get_javascripts();
  +      print $keywords;
         print "  <title>$DBInfo->sitename: ".$options['title']."</title>\n";
         if ($upper)
           print '  <link rel="Up" href="'.$this->link_url($upper)."\" />\n";
  
  
  


wkpark      2007/11/03 17:32:02

  Modified:    plugin   markup.php
  Log:
  trash already registerd javascripts
  
  Revision  Changes    Path
  1.7       +4 -2      moniwiki/plugin/markup.php
  
  Index: markup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/markup.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- markup.php	20 Oct 2007 16:52:12 -0000	1.6
  +++ markup.php	3 Nov 2007 08:32:02 -0000	1.7
  @@ -3,20 +3,22 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a markup plugin for the MoniWiki
   //
  -// $Id: markup.php,v 1.6 2007/10/20 16:52:12 wkpark Exp $
  +// $Id: markup.php,v 1.7 2007/11/03 08:32:02 wkpark Exp $
   
   function do_markup($formatter,$options) {
       $formatter->section_edit=0;
       $formatter->sister_on=0;
       $formatter->perma_icon='';
   
  +    $formatter->get_javascripts(); // trash default javascripts
  +
       //$options['fixpath']=1;
       $formatter->postfilters=array('fiximgpath');
       if (!$options['all']) $formatter->wikimarkup=1;
       if ($options['value']) {
           $val=_stripslashes($options['value']);
           $val= preg_replace('/(\r\n|\n|\r)/',"\n",$val); // Win32 fix
  -        $formatter->send_page(_stripslashes($val),$options);
  +        $formatter->send_page($val,$options);
       } else {
           if (isset($options['section'])) {
               $formatter->section_edit=1;
  
  
  


wkpark      2007/11/03 17:33:39

  Modified:    plugin/processor asciimathml.php
  Log:
  use register_javascripts() function
  
  Revision  Changes    Path
  1.5       +19 -8     moniwiki/plugin/processor/asciimathml.php
  
  Index: asciimathml.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/asciimathml.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- asciimathml.php	2 Nov 2007 16:15:33 -0000	1.4
  +++ asciimathml.php	3 Nov 2007 08:33:39 -0000	1.5
  @@ -8,7 +8,7 @@
   // Name: a AsciiMathML processor
   // Description: It support AsciiMathML
   // URL: MoniWiki:AsciiMathML
  -// Version: $Revision: 1.4 $
  +// Version: $Revision: 1.5 $
   // License: GPL
   //
   // please see http://kldp.net/forum/message.php?msg_id=9419
  @@ -31,7 +31,7 @@
   // 1. set $inline_latex='asciimathml';
   // 2. replace the latex processor: $processors=array('latex'=>'asciimathml');
   //
  -// $Id: asciimathml.php,v 1.4 2007/11/02 16:15:33 wkpark Exp $
  +// $Id: asciimathml.php,v 1.5 2007/11/03 08:33:39 wkpark Exp $
   
   function processor_asciimathml($formatter,$value="") {
     global $DBInfo;
  @@ -42,24 +42,35 @@
     if ($line)
       list($tag,$args)=explode(' ',$line,2);
   
  +  # 1 or 0
     $_add_func=1;
  +  # customizable variables
  +  $edit_mathbgcolor='yellow';
  +  $myfontfamily='Palatino Linotype'; # or serif
  +  $myfontcolor='#2171B1'; # red(default), black etc.
   
  +  #
     $flag = 0;
  -  $bgcolor='';
     if (!$formatter->wikimarkup) {
  +    // use a md5 tag with a wikimarkup action
       $cid=&$GLOBALS['_transient']['asciimathml'];
       if ( !$cid ) { $flag = 1; $cid = 1; }
       $id=$cid;
       $cid++;
  +
  +    # wikimarkup specific settings
  +    $fontcolor="mathcolor='$myfontcolor';\n";
     } else {
       $flag = 1;
       $id=md5($value.'.'.time());
  -    $bgcolor="mathbgcolor='yellow';\n";
  +
  +    # normal settings
  +    $bgcolor="mathbgcolor='$edit_mathbgcolor';\n";
     }
  +  $fontfamily="mathfontfamily='$myfontfamily';\n";
   
     if ( $flag ) {
  -    $js=qualifiedUrl($DBInfo->url_prefix .'/local/ASCIIMathML.js');
  -    $out .= "<script type=\"text/javascript\" src=\"$js\"></script>\n";
  +    $formatter->register_javascripts('ASCIIMathML.js');
       if (preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']))
         $out.='<object id="mathplayer"'.
           ' classid="clsid:32F66A20-7614-11D4-BD11-00104BD3F987">'.
  @@ -72,8 +83,7 @@
   /*<![CDATA[*/
   function translateById(objId,flag) {
     AMbody = document.getElementById(objId);
  -  math2ascii(AMbody); // for WikiWyg mode switching
  -$bgcolor
  +  if (math2ascii) math2ascii(AMbody); // for WikiWyg mode switching
     AMprocessNode(AMbody, false);
     if (isIE) { //needed to match size and font of formula to surrounding text
       var frag = AMbody.getElementsByTagName('math')[0];
  @@ -81,6 +91,7 @@
     }
   }
   
  +$bgcolor$fontfamily$fontcolor
   // AMinitSymbols();
   /*]]>*/
   </script>
  
  
  


wkpark      2007/11/04 01:03:54

  Modified:    local    textarea.js
  Log:
  support iframe resizer
  
  Revision  Changes    Path
  1.3       +48 -1     moniwiki/local/textarea.js
  
  Index: textarea.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/textarea.js,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- textarea.js	17 Oct 2007 07:43:21 -0000	1.2
  +++ textarea.js	3 Nov 2007 16:03:54 -0000	1.3
  @@ -1,4 +1,4 @@
  -// $Id: textarea.js,v 1.2 2007/10/17 07:43:21 wkpark Exp $
  +// $Id: textarea.js,v 1.3 2007/11/03 16:03:54 wkpark Exp $
   // $origId: textarea.js,v 1.9 2006/04/14 13:48:56 killes Exp $
   // from drupal
   // many functions are imported from drupal.js to eliminate dependency
  @@ -159,6 +159,49 @@
     this.heightOffset = absolutePosition(this.grippie).y - absolutePosition(this.element).y - this.dimensions.height;
   }
   
  +function textAreaWrapper(element,wrapper) {
  +  var ta = this;
  +  this.element = element;
  +  this.dimensions = dimensions(element);
  +  this.wrapper=wrapper;
  +  this.parent = this.wrapper;
  +  this.wrapper.className = 'resizable-textarea';
  +
  +  // Prepare wrapper
  +  this.wrapper = wrapper;
  +
  +  // Add grippie and measure it
  +  this.grippie = document.createElement('div');
  +  this.grippie.className = 'grippie';
  +  this.wrapper.appendChild(this.grippie);
  +  this.grippie.dimensions = dimensions(this.grippie);
  +  this.grippie.onmousedown = function (e) { ta.beginDrag(e); };
  +
  +  // Set wrapper and textarea dimensions
  +  this.wrapper.style.height = this.dimensions.height + this.grippie.dimensions.height + 1 +'px';
  +  this.element.style.marginBottom = '0px';
  +  this.element.style.width = '100%';
  +  this.element.style.height = this.dimensions.height +'px';
  +
  +  // Measure difference between desired and actual textarea dimensions to account for padding/borders
  +  this.widthOffset = dimensions(this.wrapper).width - this.dimensions.width;
  +
  +  // Make the grippie line up in various browsers
  +  if (window.opera) {
  +    // Opera
  +    this.grippie.style.marginRight = '4px';
  +  }
  +  if (document.all && !window.opera) {
  +    // IE
  +    this.grippie.style.width = '100%';
  +    this.grippie.style.paddingLeft = '2px';
  +  }
  +  // Mozilla
  +  this.element.style.MozBoxSizing = 'border-box';
  +
  +  this.heightOffset = absolutePosition(this.grippie).y - absolutePosition(this.element).y - this.dimensions.height;
  +}
  +
   textArea.prototype.beginDrag = function (event) {
     if (document.isDragging) {
       return;
  @@ -209,6 +252,10 @@
     document.isDragging = false;
   }
   
  +textAreaWrapper.prototype.beginDrag = textArea.prototype.beginDrag;
  +textAreaWrapper.prototype.handleDrag = textArea.prototype.handleDrag;
  +textAreaWrapper.prototype.endDrag = textArea.prototype.endDrag;
  +
   if (document.jsEnabled) {
     var oldOnload = window.onload;
     if (typeof window.onload != 'function') {
  
  
  


wkpark      2007/11/04 01:10:03

  Modified:    local    moniwyg.js
  Log:
  Wysiwyg editor is resizable now
  fixed saveChanges()
  fixes for resizable attached images
  fixed get_key_down_function() and it support Ctrl-A to select itself
  
  Revision  Changes    Path
  1.28      +57 -28    moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- moniwyg.js	3 Nov 2007 08:29:15 -0000	1.27
  +++ moniwyg.js	3 Nov 2007 16:10:03 -0000	1.28
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.27 2007/11/03 08:29:15 wkpark Exp $
  +// $Id: moniwyg.js,v 1.28 2007/11/03 16:10:03 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -161,6 +161,9 @@
           else type='pre';
           var edit=document.createElement(type);
           var div=document.createElement('div');
  +
  +        var myWikitext=new Wikiwyg.Wikitext();
  +        markup = myWikitext.get_wiki_comment(el);
           var text = markup.data.replace(/^ wiki:(\s|\\n)+/, '')
                      .replace(/-=/g, '-')
                      .replace(/==/g, '=')
  @@ -236,13 +239,18 @@
               var focus=0;
               var stop=false;
   
  -            if (key == 'I') focus|=1;
  -            else if (key == 'S') focus|=2;
  -            if (wm.className == 'wikiMarkup') {
  -                self.update_wikimarkup(wm,false,focus);
  -                stop=true;
  -            } else if (e.ctrlKey) {
  -                stop=true; // FIXME
  +            if (!e.ctrlKey) {
  +                if (key == 'I') focus|=1;
  +                else if (key == 'S') focus|=2;
  +                if (wm.className == 'wikiMarkup') {
  +                    self.update_wikimarkup(wm,false,focus);
  +                    stop=true;
  +                }
  +            } else {
  +                if (key == 'A' && wm.className == 'wikiMarkupEdit') { // select node
  +                    self.set_focus(wm,2);
  +                    stop=true;
  +                }
               }
   
               if (stop) {    
  @@ -295,17 +303,17 @@
       var self = this;
       var myWikiwyg = new Wikiwyg.Wikitext();
       var wikitext;
  +    var myhtml;
   
  -    this.current_mode.toHtml( function(html) { self.fromHtml(html) });
  -
  -    if (this.current_mode.classname.match(/(Wysiwyg|HTML|Preview)/)) {
  -
  -        this.current_mode.fromHtml(this.div.innerHTML);
  -
  -        wikitext = myWikiwyg.convert_html_to_wikitext(this.div.innerHTML);
  -    }
  -    else {
  +    if (this.current_mode.classname == 'Wikiwyg.Wikitext') {
           wikitext = this.current_mode.textarea.value;
  +    } else {
  +        if (this.current_mode.classname.match(/(Wysiwyg|Preview)/)) {
  +            this.current_mode.toHtml( function(html) { myhtml = html; });
  +        } else if (this.current_mode.classname=='Wikiwyg.HTML') {
  +            myhtml = this.current_mode.textarea.value;
  +        }
  +        wikitext = myWikiwyg.convert_html_to_wikitext(myhtml);
       }
   
       var datestamp='';
  @@ -319,8 +327,8 @@
           else if (this.myinput[i].name == 'action')
               myaction=this.myinput[i].value;
       }
  -    //alert(datestamp+'/'+section);
   
  +    // for preview
       myWikiwyg.convertWikitextToHtmlAll(wikitext,
           function(new_html) {
               //self.div.innerHTML = new_html
  @@ -328,7 +336,18 @@
               self.div.removeChild(self.div.firstChild);
           });
   
  -    // save
  +    // XXX using default form XXX
  +    var area=document.getElementById('editor_area');
  +    if (area) {
  +        var textarea=area.getElementsByTagName('textarea')[0];
  +        var form=area.getElementsByTagName('form')[0];
  +        if (textarea) textarea.value=wikitext;
  +
  +        form.submit();
  +        return;
  +    }
  +
  +    // save section
       var toSend = 'action=' + myaction + '/ajax' +
       '&savetext=' + encodeURIComponent(wikitext) +
       '&datestamp=' + datestamp;
  @@ -359,8 +378,9 @@
           f.setAttribute('class','errorLog');
           // show error XXX
           f.innerHTML=form;
  -        self.parentNode.appendChild(f);
  +        alert('Can\'t save.'); // XXX
       }
  +
       return;
   }
   
  @@ -554,6 +574,17 @@
       }
   }
   
  +proto.initializeObject = function() {
  +    this.edit_iframe = this.get_edit_iframe();
  +    this.wrapper=document.createElement('div');
  +    this.wrapper.className='resizable wrapper';
  +    this.wrapper.appendChild(this.edit_iframe);
  +    this.div = this.wrapper;
  +
  +    //this.div = this.edit_iframe;
  +    this.set_design_mode_early();
  +}
  +
   proto.get_edit_iframe = function() {
       var iframe=null;
       var body;
  @@ -608,14 +639,11 @@
               self.enable_keybindings();
               self.enable_edit_wikimarkup();
   
  -/*
  +            if (typeof textAreaWrapper == 'function')
  +                new textAreaWrapper(self.edit_iframe,self.wrapper);
  +            /*
               iframe.onload='undefined';
  -            if (typeof textArea == 'function') {
  -                var x=iframe.nextSibling;
  -                if (x == null || ! x.className.match(/grippe/))
  -                    new textArea(self.edit_iframe);
  -            }
  -*/
  +            */
           }, 0);
   
           //editorDoc.onkeydown = editorDoc_onkeydown;
  @@ -625,6 +653,7 @@
   
       iframe.onload=iframeHandler; // ignored by IE :(
   
  +
       body.appendChild(iframe);
   
       return iframe;
  @@ -1586,7 +1615,7 @@
                           node.data=orig+'?'+newquery;
                       } else {
                           node.data = node.data.replace(/\n+$/,""); // strip \n
  -                        node.data+='?'+newquery;
  +                        if (newquery) node.data+='?'+newquery;
                       }
   
                       return node;
  
  
  


wkpark      2007/11/04 01:11:40

  Modified:    plugin/processor asciimathml.php
  Log:
  use microtime() in the markup mode
  
  Revision  Changes    Path
  1.6       +3 -3      moniwiki/plugin/processor/asciimathml.php
  
  Index: asciimathml.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/asciimathml.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- asciimathml.php	3 Nov 2007 08:33:39 -0000	1.5
  +++ asciimathml.php	3 Nov 2007 16:11:40 -0000	1.6
  @@ -8,7 +8,7 @@
   // Name: a AsciiMathML processor
   // Description: It support AsciiMathML
   // URL: MoniWiki:AsciiMathML
  -// Version: $Revision: 1.5 $
  +// Version: $Revision: 1.6 $
   // License: GPL
   //
   // please see http://kldp.net/forum/message.php?msg_id=9419
  @@ -31,7 +31,7 @@
   // 1. set $inline_latex='asciimathml';
   // 2. replace the latex processor: $processors=array('latex'=>'asciimathml');
   //
  -// $Id: asciimathml.php,v 1.5 2007/11/03 08:33:39 wkpark Exp $
  +// $Id: asciimathml.php,v 1.6 2007/11/03 16:11:40 wkpark Exp $
   
   function processor_asciimathml($formatter,$value="") {
     global $DBInfo;
  @@ -62,7 +62,7 @@
       $fontcolor="mathcolor='$myfontcolor';\n";
     } else {
       $flag = 1;
  -    $id=md5($value.'.'.time());
  +    $id=md5($value.'.'.microtime());
   
       # normal settings
       $bgcolor="mathbgcolor='$edit_mathbgcolor';\n";
  
  
  


wkpark      2007/11/04 03:25:32

  Modified:    plugin/processor latex.php
  Log:
  Win32 fixes.
  
  Revision  Changes    Path
  1.18      +11 -3     moniwiki/plugin/processor/latex.php
  
  Index: latex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/latex.php,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- latex.php	1 Jan 2007 01:21:58 -0000	1.17
  +++ latex.php	3 Nov 2007 18:25:32 -0000	1.18
  @@ -1,12 +1,18 @@
   <?php
  -// Copyright 2003-2006 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2007 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a latex processor plugin for the MoniWiki
   //
   // Usage: {{{#!latex
   // $ \alpha $
   // }}}
  -// $Id: latex.php,v 1.17 2007/01/01 01:21:58 wkpark Exp $
  +//
  +// under Win32 env. you have to add latex/ImageMagick pathes like as following:
  +// # in config.php
  +// $path='./bin;C:/Program Files/MiKTeX 2.5/miktex/bin;C:/Program Files/ImageMagick-6.3.6-Q16';
  +// # ImagMagick and MikTeX are used in this setting.
  +//
  +// $Id: latex.php,v 1.18 2007/11/03 18:25:32 wkpark Exp $
   
   function _latex_renumber($match,$tag='\\tag') {
     // XXX
  @@ -113,6 +119,8 @@
     $NULL='/dev/null';
     if(getenv("OS")=="Windows_NT") {
       $NULL='NUL';
  +    $vartmp_dir=getenv('TEMP');
  +    #$convert="wconvert";
     }
   
     if ($formatter->preview and !$DBInfo->latex_allinone) {
  @@ -218,5 +226,5 @@
            "title='$title' />".$ket;
   }
   
  -// vim:et:sts=2:
  +// vim:et:sts=2:sw=2
   ?>
  
  
  


wkpark      2007/11/05 20:06:26

  Modified:    .        wiki.php
  Log:
  fix for Wikiwyg
  
  Revision  Changes    Path
  1.357     +4 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.356
  retrieving revision 1.357
  diff -u -r1.356 -r1.357
  --- wiki.php	3 Nov 2007 08:31:35 -0000	1.356
  +++ wiki.php	5 Nov 2007 11:06:26 -0000	1.357
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.356 2007/11/03 08:31:35 wkpark Exp $
  +// $Id: wiki.php,v 1.357 2007/11/05 11:06:26 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.356 $',1,-1);
  +$_revision = substr('$Revision: 1.357 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2920,6 +2920,8 @@
       // reset macro ID
       $this->mid=0;
   
  +    if ($this->wikimarkup) $this->nonexists='always';
  +
       if ($body) {
         $pi=$this->get_instructions($body);
   
  
  
  


wkpark      2007/11/05 20:07:08

  Modified:    css      _base.css
  Log:
  fix for Wikiwyg
  
  Revision  Changes    Path
  1.18      +4 -0      moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- _base.css	2 Nov 2007 16:07:19 -0000	1.17
  +++ _base.css	5 Nov 2007 11:07:08 -0000	1.18
  @@ -428,6 +428,10 @@
     font-family: "Courier New",sans-serif;
   }
   
  +.wikiMarkup img {
  +  background-color:#ffff00;
  +}
  +
   /* since v1.1.3 */
   blockquote.indent {
     margin:5px 0px 5px 0px;
  
  
  


wkpark      2007/11/05 20:40:12

  Modified:    local    textarea.js
  Log:
  simplified
  
  Revision  Changes    Path
  1.4       +16 -54    moniwiki/local/textarea.js
  
  Index: textarea.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/textarea.js,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- textarea.js	3 Nov 2007 16:03:54 -0000	1.3
  +++ textarea.js	5 Nov 2007 11:40:12 -0000	1.4
  @@ -1,4 +1,4 @@
  -// $Id: textarea.js,v 1.3 2007/11/03 16:03:54 wkpark Exp $
  +// $Id: textarea.js,v 1.4 2007/11/05 11:40:12 wkpark Exp $
   // $origId: textarea.js,v 1.9 2006/04/14 13:48:56 killes Exp $
   // from drupal
   // many functions are imported from drupal.js to eliminate dependency
  @@ -112,16 +112,21 @@
     }
   }
   
  -function textArea(element) {
  +function textArea(element,wrapper) {
     var ta = this;
     this.element = element;
     this.parent = this.element.parentNode;
     this.dimensions = dimensions(element);
   
     // Prepare wrapper
  -  this.wrapper = document.createElement('div');
  -  this.wrapper.className = 'resizable-textarea';
  -  this.parent.insertBefore(this.wrapper, this.element);
  +  if (typeof wrapper=='undefined') {
  +    this.wrapper = document.createElement('div');
  +    this.wrapper.className = 'resizable-textarea';
  +    this.parent.insertBefore(this.wrapper, this.element);
  +  } else {
  +    this.wrapper=wrapper;
  +    this.wrapper.className = 'resizable-textarea';
  +  }
   
     // Add grippie and measure it
     this.grippie = document.createElement('div');
  @@ -137,51 +142,10 @@
     this.element.style.height = this.dimensions.height +'px';
   
     // Wrap textarea
  -  removeNode(this.element);
  -  this.wrapper.insertBefore(this.element, this.grippie);
  -
  -  // Measure difference between desired and actual textarea dimensions to account for padding/borders
  -  this.widthOffset = dimensions(this.wrapper).width - this.dimensions.width;
  -
  -  // Make the grippie line up in various browsers
  -  if (window.opera) {
  -    // Opera
  -    this.grippie.style.marginRight = '4px';
  -  }
  -  if (document.all && !window.opera) {
  -    // IE
  -    this.grippie.style.width = '100%';
  -    this.grippie.style.paddingLeft = '2px';
  +  if (typeof wrapper=='undefined') {
  +    removeNode(this.element);
  +    this.wrapper.insertBefore(this.element, this.grippie);
     }
  -  // Mozilla
  -  this.element.style.MozBoxSizing = 'border-box';
  -
  -  this.heightOffset = absolutePosition(this.grippie).y - absolutePosition(this.element).y - this.dimensions.height;
  -}
  -
  -function textAreaWrapper(element,wrapper) {
  -  var ta = this;
  -  this.element = element;
  -  this.dimensions = dimensions(element);
  -  this.wrapper=wrapper;
  -  this.parent = this.wrapper;
  -  this.wrapper.className = 'resizable-textarea';
  -
  -  // Prepare wrapper
  -  this.wrapper = wrapper;
  -
  -  // Add grippie and measure it
  -  this.grippie = document.createElement('div');
  -  this.grippie.className = 'grippie';
  -  this.wrapper.appendChild(this.grippie);
  -  this.grippie.dimensions = dimensions(this.grippie);
  -  this.grippie.onmousedown = function (e) { ta.beginDrag(e); };
  -
  -  // Set wrapper and textarea dimensions
  -  this.wrapper.style.height = this.dimensions.height + this.grippie.dimensions.height + 1 +'px';
  -  this.element.style.marginBottom = '0px';
  -  this.element.style.width = '100%';
  -  this.element.style.height = this.dimensions.height +'px';
   
     // Measure difference between desired and actual textarea dimensions to account for padding/borders
     this.widthOffset = dimensions(this.wrapper).width - this.dimensions.width;
  @@ -221,7 +185,8 @@
     this.dragOffset = event.clientY - pos.y;
   
     // Make transparent
  -  this.element.style.opacity = 0.5;
  +  this.element.style.opacity = 0.4;
  +  if (window.event) this.element.style.filter = "alpha(opacity=40)";
   
     // Process
     this.handleDrag(event);
  @@ -249,13 +214,10 @@
   
     // Restore opacity
     this.element.style.opacity = 1.0;
  +  if (window.event) this.element.style.filter = '';
     document.isDragging = false;
   }
   
  -textAreaWrapper.prototype.beginDrag = textArea.prototype.beginDrag;
  -textAreaWrapper.prototype.handleDrag = textArea.prototype.handleDrag;
  -textAreaWrapper.prototype.endDrag = textArea.prototype.endDrag;
  -
   if (document.jsEnabled) {
     var oldOnload = window.onload;
     if (typeof window.onload != 'function') {
  
  
  


wkpark      2007/11/05 20:41:43

  Modified:    local    wikibits.js
  Log:
  toggling markup
  
  Revision  Changes    Path
  1.3       +38 -16    moniwiki/local/wikibits.js
  
  Index: wikibits.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/wikibits.js,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- wikibits.js	7 Jan 2006 10:45:35 -0000	1.2
  +++ wikibits.js	5 Nov 2007 11:41:43 -0000	1.3
  @@ -1,7 +1,7 @@
   // from the MediaWiki
   // simplified for the MoniWiki by wkpark
   //
  -// $Id: wikibits.js,v 1.2 2006/01/07 10:45:35 wkpark Exp $
  +// $Id: wikibits.js,v 1.3 2007/11/05 11:41:43 wkpark Exp $
   //
   // Wikipedia JavaScript support functions
   // if this is true, the toolbar will no longer overwrite the infobox when you move the mouse over individual items
  @@ -134,31 +134,29 @@
   		var replaced = false;
   		var startPos = txtarea.selectionStart;
   		var endPos = txtarea.selectionEnd;
  -		if (endPos-startPos)
  -			replaced = true;
   		var scrollTop = txtarea.scrollTop;
   		var myText = (txtarea.value).substring(startPos, endPos);
  -		if (!myText)
  -			myText=sampleText;
  -		if (myText.charAt(myText.length - 1) == " ") { // exclude ending space char, if any
  -			subst = tagOpen + myText.substring(0, (myText.length - 1)) + tagClose + " ";
  +		var subst;
  +
  +		if (myText) {
  +			if (myText.charAt(myText.length - 1) == " ") { // exclude ending space char, if any
  +				endPos--;
  +				myText=myText.substr(0,myText.length-1);
  +			}
  +			subst=toggleSameFormat(tagOpen,tagClose,myText);
   		} else {
  +			myText=sampleText;
   			subst = tagOpen + myText + tagClose;
   		}
  +
   		txtarea.value = txtarea.value.substring(0, startPos) + subst +
   			txtarea.value.substring(endPos, txtarea.value.length);
   		txtarea.focus();
   		//set new selection
  -		if (replaced) {
  -			var cPos = startPos+(tagOpen.length+myText.length+tagClose.length);
  -			txtarea.selectionStart = cPos;
  -			txtarea.selectionEnd = cPos;
  -		} else {
  -			txtarea.selectionStart = startPos+tagOpen.length;   
  -			txtarea.selectionEnd = startPos+tagOpen.length+myText.length;
  -		}	
  -		txtarea.scrollTop = scrollTop;
  +		txtarea.selectionStart = startPos;
  +		txtarea.selectionEnd = startPos+subst.length;
   
  +		txtarea.scrollTop = scrollTop;
   	// All others
   	} else {
   		var copy_alertText=alertText;
  @@ -186,6 +184,30 @@
   		txtarea.caretPos = document.selection.createRange().duplicate();
   }
   
  +function toggleSameFormat(start, end, sel) {
  +    var nsel=sel;
  +    var start_re = start.replace(/([\^\$\*\+\.\?\[\]\{\}\(\)])/g, '\\$1')
  +        .replace(/\n/,"\n?").replace(/==/,'={2,6}'); // for headings
  +    var end_re = end.replace(/([\^\$\*\+\.\?\[\]\{\}\(\)])/g, '\\$1')
  +        .replace(/\n/,"\n?").replace(/==/,'={2,6}');
  +
  +    start_re = new RegExp('^' + start_re);
  +    end_re = new RegExp(end_re + '$');
  +    if (sel.match(start_re) && sel.match(end_re)) {
  +	nsel = sel.replace(start_re,'').replace(end_re,'');
  +
  +	var m;
  +	if (m=sel.match(/^\n?(={1,6})/)) { // for headings
  +	    var tag='='.times(m[1].length);
  +	    start=start.replace(/=/,tag),end=end.replace(/=/,tag)
  +	    if (start.length==9) start="\n== ",end=" ==\n"; // reset
  +	} else {
  +            return nsel;
  +	}
  +    }
  +    return start+nsel+end;
  +}
  +
   function akeytt() {
       if(typeof ta == "undefined" || !ta) return;
       pref = 'alt-';
  
  
  


wkpark      2007/11/05 21:28:21

  Modified:    local    moniwyg.js
  Log:
  autolink feature added in the WysiWyg mode
  
  Revision  Changes    Path
  1.29      +44 -6     moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- moniwyg.js	3 Nov 2007 16:10:03 -0000	1.28
  +++ moniwyg.js	5 Nov 2007 12:28:21 -0000	1.29
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.28 2007/11/03 16:10:03 wkpark Exp $
  +// $Id: moniwyg.js,v 1.29 2007/11/05 12:28:21 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -167,6 +167,7 @@
           var text = markup.data.replace(/^ wiki:(\s|\\n)+/, '')
                      .replace(/-=/g, '-')
                      .replace(/==/g, '=')
  +                   .replace(/&amp;/g,'&')
                      .replace(/(\r\n|\n|\r)+$/, '') //.replace(/\s$/, '') IE fix
                      .replace(/\{(\w+):\s*\}/, '{$1}');
           text=text.replace(/>/g,'&gt;');
  @@ -187,6 +188,7 @@
                           .replace(/<br>/ig,"\n")
                           .replace(/&gt;/g,'>')
                           .replace(/&lt;/g,'<')
  +                        .replace(/&amp;/g,'&')
                           ;
           var postdata = 'action=markup&value=' + encodeURIComponent(myText);
           var myhtml= HTTPPost(top.location, postdata);
  @@ -260,6 +262,7 @@
               }
               return true;
           }
  +
           return true;
       };
   }
  @@ -270,6 +273,35 @@
           var ch = String.fromCharCode(Wikiwyg.is_ie ? e.keyCode : e.charCode);
   
           if (! e.ctrlKey) {
  +            if (e.charCode == 32) { // space
  +                var sel=self.get_selection();
  +                if (!Wikiwyg.is_ie) {
  +                    if (sel.focusNode.nodeType == 3 && sel.toString() == '') { // text node
  +                        var range=self.get_range();
  +                        var m = sel.focusNode.nodeValue.substr(0,sel.focusOffset).match(/^(.*\s)(\S+)\s*$/);
  +                        if (m) {
  +                            if (m[2].match(/^(http|https|ftp|nntp|news|irc|telnet):\/\//)) {
  +                                range.setStart(sel.focusNode,m[1].length);
  +                                range.setEnd(sel.focusNode,m[1].length+m[2].length);
  +                                sel.addRange(range);
  +                                self.do_link(); // auto linking
  +
  +                                sel=self.get_selection();
  +                                var mynode=sel.focusNode.parentNode;
  +                                sel.removeAllRanges();
  +                                range=self.get_range();
  +                                range.setStartAfter(mynode);
  +                                range.setEndAfter(mynode);
  +                                sel.addRange(range);
  +
  +                                return true;
  +                            }
  +                        }
  +                        //e.preventDefault();
  +                        //e.stopPropagation();
  +                    }
  +                }
  +            }
               /* if (e.keyCode == 8) { // backspace
                   var p = self.get_parent_node();
                   if (p.childNodes.length == 0) {
  @@ -639,8 +671,8 @@
               self.enable_keybindings();
               self.enable_edit_wikimarkup();
   
  -            if (typeof textAreaWrapper == 'function')
  -                new textAreaWrapper(self.edit_iframe,self.wrapper);
  +            if (typeof textArea == 'function')
  +                new textArea(self.edit_iframe,self.wrapper);
               /*
               iframe.onload='undefined';
               */
  @@ -697,6 +729,7 @@
       this.setHeightOf(this.edit_iframe);
       //this.fix_up_relative_imgs();
       this.get_edit_document().designMode = 'on';
  +
       // XXX - Doing stylesheets in initializeObject might get rid of blue flash
       //
       // this.edit_iframe.contentWindow;
  @@ -725,7 +758,7 @@
       var selection = this.get_link_selection_text();
       if (! selection) return;
       var url;
  -    var match = selection.match(/(.*?)\b((?:http|https|ftp|irc):\/\/\S+)(.*)/);
  +    var match = selection.match(/(.*?)\b((?:http|https|ftp|nntp|telnet|irc):\/\/\S+)(.*)/);
       if (match) {
           if (match[1] || match[3]) return null;
           url = match[2];
  @@ -741,6 +774,10 @@
       return this.get_edit_window().getSelection();
   }
   
  +proto.get_range = function() {
  +    return this.get_edit_document().createRange();
  +}
  +
   proto.get_parent_node = function() {
       var sel= this.get_edit_window().getSelection();
       return sel.focusNode.parentNode;
  @@ -909,8 +946,8 @@
       html =
           html.replace(/<a class=.externalLink named. [^>]*href=(\'|\")?([^\'\"]+)\1?[^>]+>(.+)<\/a>/ig, "[$2 $3]");
       // remove all links XXX
  -    html =
  -        html.replace(/<a [^>]+>([^>]+)<\/a>/ig, "$1");
  +    //html =
  +    //    html.replace(/<a [^>]+>([^>]+)<\/a>/ig, "$1");
   
       // escaped wiki markup blocks
       html =
  @@ -1639,6 +1676,7 @@
           text = text.replace(/^ wiki:(\s|\\n)+/, '')
                      .replace(/-=/g, '-')
                      .replace(/==/g, '=')
  +                   .replace(/&amp;/g,'&')
                      .replace(/(\r\n|\n|\r)+$/, '') //.replace(/\s$/, '') IE fix
                      .replace(/\{(\w+):\s*\}/, '{$1}');
           this.appendOutput(Wikiwyg.htmlUnescape(text))
  @@ -1954,7 +1992,7 @@
   proto.camel_case_link = function(label) {
       if (! this.config.supportCamelCaseLinks)
           return false;
  -    return label.match(/^[A-Z]*[a-z]+/);
  +    return label.match(/^[A-Z][A-Z]*[a-z]+/);
   }
   
   proto.href_is_wiki_link = function(href) {
  
  
  


wkpark      2007/11/06 17:14:47

  Modified:    local/Wikiwyg/css wysiwyg.css
  Log:
  fixed Wikiwyg css style for links
  
  Revision  Changes    Path
  1.4       +8 -0      moniwiki/local/Wikiwyg/css/wysiwyg.css
  
  Index: wysiwyg.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/css/wysiwyg.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- wysiwyg.css	19 Oct 2007 03:03:01 -0000	1.3
  +++ wysiwyg.css	6 Nov 2007 08:14:47 -0000	1.4
  @@ -12,3 +12,11 @@
       border: 1px dotted black;
       background-color: #F0F4FF;
   }
  +
  +a {text-decoration: underline; color:blue;}
  +a:link { color: blue;}
  +a:visited { color: blue;}
  +
  +* html .separator { font-size:1px; height:1px; }
  +* html hr { padding:0;margin:0; }
  +
  
  
  


wkpark      2007/11/06 21:37:52

  Modified:    plugin/processor asciimathml.php
  Log:
  IE fix for Wikiwyg
  
  Revision  Changes    Path
  1.7       +17 -11    moniwiki/plugin/processor/asciimathml.php
  
  Index: asciimathml.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/asciimathml.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- asciimathml.php	3 Nov 2007 16:11:40 -0000	1.6
  +++ asciimathml.php	6 Nov 2007 12:37:52 -0000	1.7
  @@ -8,7 +8,7 @@
   // Name: a AsciiMathML processor
   // Description: It support AsciiMathML
   // URL: MoniWiki:AsciiMathML
  -// Version: $Revision: 1.6 $
  +// Version: $Revision: 1.7 $
   // License: GPL
   //
   // please see http://kldp.net/forum/message.php?msg_id=9419
  @@ -31,7 +31,7 @@
   // 1. set $inline_latex='asciimathml';
   // 2. replace the latex processor: $processors=array('latex'=>'asciimathml');
   //
  -// $Id: asciimathml.php,v 1.6 2007/11/03 16:11:40 wkpark Exp $
  +// $Id: asciimathml.php,v 1.7 2007/11/06 12:37:52 wkpark Exp $
   
   function processor_asciimathml($formatter,$value="") {
     global $DBInfo;
  @@ -70,12 +70,13 @@
     $fontfamily="mathfontfamily='$myfontfamily';\n";
   
     if ( $flag ) {
  -    $formatter->register_javascripts('ASCIIMathML.js');
  -    if (preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']))
  -      $out.='<object id="mathplayer"'.
  -        ' classid="clsid:32F66A20-7614-11D4-BD11-00104BD3F987">'.
  -        '</object>'.
  -        '<?import namespace="mml" implementation="#mathplayer"?>';
  +    if ($formatter->register_javascripts('ASCIIMathML.js'))
  +      if (preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']))
  +        $formatter->register_javascripts('<object id="mathplayer"'.
  +          ' classid="clsid:32F66A20-7614-11D4-BD11-00104BD3F987" width="1px" height="1px">'.
  +          '</object>'.
  +          '<?import namespace="mml" implementation="#mathplayer"?>'
  +      );
   
       if ($_add_func)
         $out.=<<<AJS
  @@ -83,11 +84,16 @@
   /*<![CDATA[*/
   function translateById(objId,flag) {
     AMbody = document.getElementById(objId);
  -  if (math2ascii) math2ascii(AMbody); // for WikiWyg mode switching
  -  AMprocessNode(AMbody, false);
  -  if (isIE) { //needed to match size and font of formula to surrounding text
  +  if (typeof math2ascii != "undefined") math2ascii(AMbody); // for WikiWyg mode switching
  +  if (isIE) { // for WikiWyg
  +    var str=AMbody.innerHTML.replace(/\\$/g,'');;
  +    var math=AMparseMath(str);
  +    AMbody.innerHTML=math.innerHTML;
  +    //needed to match size and font of formula to surrounding text
       var frag = AMbody.getElementsByTagName('math')[0];
       frag.update()
  +  } else {
  +    AMprocessNode(AMbody, false);
     }
   }
   
  
  
  


wkpark      2007/11/06 21:38:26

  Modified:    plugin   markup.php
  Log:
  add get_scripts() at the end
  
  Revision  Changes    Path
  1.8       +2 -1      moniwiki/plugin/markup.php
  
  Index: markup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/markup.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- markup.php	3 Nov 2007 08:32:02 -0000	1.7
  +++ markup.php	6 Nov 2007 12:38:26 -0000	1.8
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a markup plugin for the MoniWiki
   //
  -// $Id: markup.php,v 1.7 2007/11/03 08:32:02 wkpark Exp $
  +// $Id: markup.php,v 1.8 2007/11/06 12:38:26 wkpark Exp $
   
   function do_markup($formatter,$options) {
       $formatter->section_edit=0;
  @@ -35,6 +35,7 @@
           }
           #else ignore
       }
  +    print $formatter->get_javascripts();
       return;
   }
   
  
  
  


wkpark      2007/11/06 22:15:05

  Modified:    .        wiki.php
  Log:
  oops! fixed register_javascripts() function
  
  Revision  Changes    Path
  1.358     +8 -5      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.357
  retrieving revision 1.358
  diff -u -r1.357 -r1.358
  --- wiki.php	5 Nov 2007 11:06:26 -0000	1.357
  +++ wiki.php	6 Nov 2007 13:15:05 -0000	1.358
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.357 2007/11/05 11:06:26 wkpark Exp $
  +// $Id: wiki.php,v 1.358 2007/11/06 13:15:05 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.357 $',1,-1);
  +$_revision = substr('$Revision: 1.358 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -1687,7 +1687,7 @@
       $this->postfilters=$DBInfo->postfilters;
       $this->use_rating=$DBInfo->use_rating;
       $this->use_etable=$DBInfo->use_etable;
  -    $this->java_scripts=$DBInfo->javascripts;
  +    $this->register_javascripts($DBInfo->javascripts);
   
       if (($p=strpos($page->name,"~")))
         $this->group=substr($page->name,0,$p+1);
  @@ -3608,12 +3608,15 @@
   
     function register_javascripts($js) {
       if (is_array($js)) {
  -      array_merge($this->java_scripts,$js);
  +      foreach ($js as $j) $this->register_javascripts($j);
  +      return true;
       } else {
         if ($js{0} == '<') { $tag=md5($js); }
         else $tag=$js;
  -      if (!empty($this->javascripts[$tag]))
  +      if (!isset($this->java_scripts[$tag]))
           $this->java_scripts[$tag]=$js;
  +      else return false;
  +      return true;
       }
     }
   
  
  
  


wkpark      2007/11/06 22:19:56

  Modified:    local    moniwyg.js
  Log:
  IE fix for Wikiwyg
  auto linking features added with wiki markup under the Wysiwyg mode.
  
  Revision  Changes    Path
  1.30      +148 -52   moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- moniwyg.js	5 Nov 2007 12:28:21 -0000	1.29
  +++ moniwyg.js	6 Nov 2007 13:19:56 -0000	1.30
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.29 2007/11/05 12:28:21 wkpark Exp $
  +// $Id: moniwyg.js,v 1.30 2007/11/06 13:19:56 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -58,19 +58,18 @@
           scripts= this.div.getElementsByTagName('script');
   
       for (var i=0;i<scripts.length;i++) {
  -        var n=scripts[i].cloneNode(true);
           if (scripts[i].src) {
               var js=document.createElement('script');
               js.type='text/javascript';
  -            js.src=n.src;
  +            js.src=scripts[i].src;
               head.appendChild(js);
           } else {
               var js1=doc.createElement('script');
               js1.type='text/javascript';
               if (iframe) // hack XXX
  -                js1.text=n.text.replace(/document\./g,'doc.');
  +                js1.text=scripts[i].text.replace(/document\./g,'doc.');
               else
  -                js1.text=n.text;
  +                js1.text=scripts[i].text;
               eval(js1.text); // XXX
               //head.appendChild(js1);
           }
  @@ -193,8 +192,8 @@
           var postdata = 'action=markup&value=' + encodeURIComponent(myText);
           var myhtml= HTTPPost(top.location, postdata);
   
  -        var myhtml = myhtml.replace(/^(.|\n)*<div>(\s|\n)*(<span)/i,'$3')
  -                .replace(/<\/span>(\s|\n)*<\/?div>$/i,'</span>');
  +        var myhtml = myhtml.replace(/^(.|\s|\n)*<div>(\s|\n)*(<span)/i,'$3')
  +                .replace(/<\/span>(\s|\n)*<\/?div>\s*$/i,'</span>');
   
           var div=document.createElement('div');
           if (Wikiwyg.is_ie) {
  @@ -210,7 +209,8 @@
   
           if (n && n.nodeName=='SPAN') {
               if (Wikiwyg.is_ie) {
  -                el.innerHTML='<br>'+n.outerHTML; // IE hack
  +                el.className='wikiMarkup';
  +                el.innerHTML='<br>'+n.innerHTML; // IE hack
                   el.removeChild(el.firstChild);
               } else {
                   //el.innerHTML=nn.innerHTML; // not work properly :(
  @@ -229,12 +229,15 @@
   Wikiwyg.Wysiwyg.prototype.get_key_down_function = function() {
       var self = this;
       return function(e) {
  +        e = e || window.event;
           var ch = String.fromCharCode(Wikiwyg.is_ie ? e.keyCode : e.charCode);
           var key = String.fromCharCode(e.keyCode); // XXX
   
           var wm = self.get_wikimarkup_node();
  -        if (e.keyCode == 27) { // ESC
  +        if (e.keyCode == 27 || e.keyCode == 13) { // ESC
               if (wm) self.update_wikimarkup(wm,true);
  +            if (Wikiwyg.is_ie) e.cancelBubble = true;
  +            else e.preventDefault(), e.stopPropagation();
               return false;
           }
           if (wm && wm.className.match(/wikiMarkup/)) {
  @@ -244,7 +247,7 @@
               if (!e.ctrlKey) {
                   if (key == 'I') focus|=1;
                   else if (key == 'S') focus|=2;
  -                if (wm.className == 'wikiMarkup') {
  +                if (focus && wm.className == 'wikiMarkup') { // check arrowkey or not
                       self.update_wikimarkup(wm,false,focus);
                       stop=true;
                   }
  @@ -256,8 +259,8 @@
               }
   
               if (stop) {    
  -                e.preventDefault();
  -                e.stopPropagation();
  +                if (Wikiwyg.is_ie) e.cancelBubble = true;
  +                else e.preventDefault(), e.stopPropagation();
                   return false;
               }
               return true;
  @@ -270,35 +273,73 @@
   Wikiwyg.Wysiwyg.prototype.get_key_press_function = function() {
       var self = this;
       return function(e) {
  -        var ch = String.fromCharCode(Wikiwyg.is_ie ? e.keyCode : e.charCode);
  +        if (e) cc=e.charCode;
  +        else e=window.event,cc=e.keyCode;
  +        var ch = String.fromCharCode(cc);
   
           if (! e.ctrlKey) {
  -            if (e.charCode == 32) { // space
  +            if (cc == 32) { // space
                   var sel=self.get_selection();
                   if (!Wikiwyg.is_ie) {
  -                    if (sel.focusNode.nodeType == 3 && sel.toString() == '') { // text node
  +                    var sf=sel.focusNode;
  +                    if (sf.nodeType == 3 && sf.parentNode.nodeName != 'A' && sel.toString() == '') {
  +                        // text node
                           var range=self.get_range();
  -                        var m = sel.focusNode.nodeValue.substr(0,sel.focusOffset).match(/^(.*\s)(\S+)\s*$/);
  -                        if (m) {
  -                            if (m[2].match(/^(http|https|ftp|nntp|news|irc|telnet):\/\//)) {
  -                                range.setStart(sel.focusNode,m[1].length);
  -                                range.setEnd(sel.focusNode,m[1].length+m[2].length);
  +                        var val = sf.nodeValue.substr(0,sel.focusOffset).replace(/\s+$/,'');
  +                        if (val) {
  +                            var m=[];
  +                            var p=val.lastIndexOf(' ');
  +                            if (p == -1) m[1]='',m[2]=val;
  +                            else m[1]=val.substr(0,p+1),m[2]=val.substr(p+1);
  +                            if (m[2].match(/^(http|https|ftp|nntp|news|irc|telnet):\/\//) ||
  +                                m[2].match(/^[A-Z]([A-Z]+[0-9a-z]|[a-z0-9]+[A-Z])[0-9a-zA-Z]*\b/) ||
  +                                m[2].match(/^\[.*\]$/)) { // force link, macro
  +
  +                                range.setStart(sf,m[1].length);
  +                                range.setEnd(sf,m[1].length+m[2].length);
  +                                sel.removeAllRanges(); // remove old ranges !
                                   sel.addRange(range);
  -                                self.do_link(); // auto linking
   
  -                                sel=self.get_selection();
  -                                var mynode=sel.focusNode.parentNode;
  -                                sel.removeAllRanges();
  -                                range=self.get_range();
  -                                range.setStartAfter(mynode);
  -                                range.setEndAfter(mynode);
  -                                sel.addRange(range);
  +                                //e.preventDefault();
  +                                //e.stopPropagation();
   
  +                                self.do_link(); // auto linking
  +                                nsel=self.get_selection();
  +                                if (nsel.focusNode.nodeType == 3) {
  +                                    var mynode=nsel.focusNode.parentNode;
  +                                    nsel.removeAllRanges();
  +                                    range=self.get_range();
  +                                    range.setStartAfter(mynode);
  +                                    range.setEndAfter(mynode);
  +                                    nsel.addRange(range);
  +                                }
                                   return true;
                               }
                           }
  -                        //e.preventDefault();
  -                        //e.stopPropagation();
  +                    }
  +                }
  +            } else if (e.keyCode == 35 || e.keyCode == 39) { // right arrow or end key.
  +                var sel = self.get_selection();
  +                var sf = sel.focusNode;
  +                var p = sf.parentNode;
  +                if (p.nodeName=='A' && sf.nodeType==3) {
  +                    if (e.keyCode == 35 ||
  +                            (e.keyCode == 39 && sel.focusOffset == sf.nodeValue.length)) {
  +                        range=self.get_range();
  +                        if (p.nextSibling) {
  +                            range.selectNode(p.nextSibling);
  +                            range.setStart(p.nextSibling,0);
  +                            range.setEnd(p.nextSibling,0);
  +                            //range.collapse(true); // not work ;;
  +                        }
  +                        else
  +                            range.setStartAfter(p);
  +                        sel.removeAllRanges();
  +                        sel.addRange(range);
  +
  +                        if (Wikiwyg.is_ie) e.cancelBubble = true;
  +                        else e.preventDefault(), e.stopPropagation();
  +                        return true;
                       }
                   }
               }
  @@ -323,8 +364,8 @@
           };
   
           if (command) {
  -            e.preventDefault();
  -            e.stopPropagation();
  +            if (Wikiwyg.is_ie) e.cancelBubble = true;
  +            else e.preventDefault(), e.stopPropagation();
               self.process_command(command);
           }
       };
  @@ -593,16 +634,28 @@
   proto.enable_keybindings = function() { // See IE
       if (!this.key_press_function) {
           this.key_press_function = this.get_key_press_function();
  -        this.get_keybinding_area().addEventListener(
  -            'keypress', this.key_press_function, true
  -        );
  +        if (window.addEventListener) {
  +            this.get_keybinding_area().addEventListener(
  +                'keypress', this.key_press_function, true
  +            );
  +        } else {
  +            this.get_keybinding_area().attachEvent(
  +                'onkeypress', this.key_press_function
  +            );
  +        }
       }
   
       if (!this.key_down_function) {
           this.key_down_function = this.get_key_down_function();
  -        this.get_keybinding_area().addEventListener(
  -            'keydown', this.key_down_function, true
  -        );
  +        if (window.addEventListener) {
  +            this.get_keybinding_area().addEventListener(
  +                'keydown', this.key_down_function, true
  +            );
  +        } else {
  +            this.get_keybinding_area().attachEvent(
  +                'onkeydown', this.key_down_function
  +            );
  +        }
       }
   }
   
  @@ -757,16 +810,39 @@
   proto.do_link = function() {
       var selection = this.get_link_selection_text();
       if (! selection) return;
  -    var url;
  -    var match = selection.match(/(.*?)\b((?:http|https|ftp|nntp|telnet|irc):\/\/\S+)(.*)/);
  -    if (match) {
  -        if (match[1] || match[3]) return null;
  -        url = match[2];
  +    var url=null;
  +    var urltext=null;
  +    if (selection.match(/^\[\[.*\]\]$/)) { // macro or links XXX FIXME
  +        var postdata = 'action=markup&value=' + encodeURIComponent(selection);
  +        var myhtml= HTTPPost(top.location, postdata);
  +
  +        var myhtml = myhtml.replace(/^(.|\n)*<div>(\s|\n)*(<span)/i,'$3')
  +                .replace(/<\/span>(\s|\n)*<\/?div>\s*$/i,'</span>')
  +                .replace(/^<div>/i,'')
  +                .replace(/(\s|\n)*<\/div>\s*$/i,'');
  +        this.exec_command('inserthtml', fixup_markup_style('<!-- -->'+myhtml));
  +        urltext=null;
  +    } else
  +    {
  +        var match = selection.match(/(.*?)\b((?:http|https|ftp|nntp|telnet|irc):\/\/\S+)(.*)/);
  +        if (match) {
  +            if (match[1] || match[3]) return null;
  +            url = match[2];
  +        } else if (selection.match(/^\[.*\]$/)) {
  +            urltext = selection.substr(1,selection.length-2);
  +            url = '/' + escape(urltext);
  +        }
  +        else {
  +            url = '/' + escape(selection); 
  +        }
  +        this.exec_command('createlink', url);
       }
  -    else {
  -        url = '/' + escape(selection); 
  +    if (!Wikiwyg.is_ie && urltext) {
  +        var p=this.get_selection();
  +        if (p.focusNode && p.focusNode.nodeType == 3) {
  +            p.focusNode.nodeValue=urltext; // change text
  +        }
       }
  -    this.exec_command('createlink', url);
   }
   
   if (!Wikiwyg.is_ie) {
  @@ -936,6 +1012,9 @@
       // remove toc number
       html = html.replace(/<span class=.?tocnumber.?>(.*)<\/span>/igm, '');
   
  +    // six single quotes for mozilla
  +    html =
  +        html.replace(/<span style=[^>]+bold[^>]*><\/span>/ig, "''''''");
       // remove javatag
       html =
           html.replace(/<a href=.javascript:[^>]+>(.*)<\/a>/ig, "$1");
  @@ -945,9 +1024,10 @@
       // named externalLinks
       html =
           html.replace(/<a class=.externalLink named. [^>]*href=(\'|\")?([^\'\"]+)\1?[^>]+>(.+)<\/a>/ig, "[$2 $3]");
  -    // remove all links XXX
  -    //html =
  -    //    html.replace(/<a [^>]+>([^>]+)<\/a>/ig, "$1");
  +
  +    // inner links for IE
  +    var loc = location.protocol + '//' + location.host + (location.port ? ':'+location.port:'');
  +    this.loc_re=new RegExp('^' + loc.replace(/\//g,'\\/'),'ig');
   
       // escaped wiki markup blocks
       html =
  @@ -956,8 +1036,6 @@
       dom.innerHTML = "<br>" +html; // Bah.... IE hack :(
       dom.removeChild(dom.firstChild);
   
  -    // alert(dom.innerHTML);
  -
       this.output = [];
       this.list_type = [];
       this.ordered_type = [];
  @@ -976,6 +1054,13 @@
       return this.join_output(this.output);
   }
   
  +if (Wikiwyg.is_ie) {
  +proto.looks_like_a_url = function(string) {
  +    string = string.replace(this.loc_re, ''); // for IE
  +    return string.match(/^(http|https|ftp|irc|mailto|file):/);
  +}
  +}
  +
   proto.format_img = function(element) {
       var uri='';
       uri = element.getAttribute('src');
  @@ -1046,6 +1131,17 @@
   
   }
   
  +proto.format_strong = function(element) {
  +    var markup = this.config.markupRules['bold'];
  +    this.appendOutput(markup[1]);
  +    this.no_following_whitespace();
  +    this.walk(element);
  +    // assume that walk leaves no trailing whitespace.
  +    this.appendOutput(markup[2]);
  +}
  +
  +proto.format_b = proto.format_strong;
  +
   proto.format_blockquote_old = function(element) {
       var indents = 0;
       if (element.className.toLowerCase() == 'indent')
  @@ -1992,7 +2088,7 @@
   proto.camel_case_link = function(label) {
       if (! this.config.supportCamelCaseLinks)
           return false;
  -    return label.match(/^[A-Z][A-Z]*[a-z]+/);
  +    return label.match(/^[A-Z]([A-Z]+[0-9a-z]|[a-z0-9]+[A-Z])[0-9a-zA-Z]*\b/);
   }
   
   proto.href_is_wiki_link = function(href) {
  
  
  


wkpark      2007/11/06 22:37:15

  Modified:    plugin/processor textile.php
  Log:
  call encode_high() correctly
  
  Revision  Changes    Path
  1.6       +3 -3      moniwiki/plugin/processor/textile.php
  
  Index: textile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/textile.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- textile.php	17 Aug 2006 08:01:30 -0000	1.5
  +++ textile.php	6 Nov 2007 13:37:15 -0000	1.6
  @@ -1,6 +1,6 @@
   <?php
   // slightly modified for MoniWiki by wkpark@kldp.org
  -// $Id: textile.php,v 1.5 2006/08/17 08:01:30 wkpark Exp $
  +// $Id: textile.php,v 1.6 2007/11/06 13:37:15 wkpark Exp $
   //
   /**
    * class Textile
  @@ -224,7 +224,7 @@
           		'name'    => 'Textile',
           		'desc'    => 'Textile Procssor',
           		'url'     => 'MoniWiki:TextileProcessor',
  -			'version' => substr('$Revision: 1.5 $',1,-1),
  +			'version' => substr('$Revision: 1.6 $',1,-1),
   			'depend'  => '1.1.3',
   			'license' => 'BSD style',
         		);
  @@ -714,7 +714,7 @@
   			built-in htmlentities() */
   
   		return (function_exists('mb_encode_numericentity'))
  -		? encode_high($text,$this->charset)
  +		? $this->encode_high($text,$this->charset)
   		: htmlentities($text, ENT_NOQUOTES,$this->charset);
   	}
   	// -------------------------------------------------------------
  
  
  


wkpark      2007/11/06 22:49:49

  Modified:    plugin/processor asciimathml.php
  Log:
  more fixes
  
  Revision  Changes    Path
  1.8       +11 -12    moniwiki/plugin/processor/asciimathml.php
  
  Index: asciimathml.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/asciimathml.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- asciimathml.php	6 Nov 2007 12:37:52 -0000	1.7
  +++ asciimathml.php	6 Nov 2007 13:49:49 -0000	1.8
  @@ -8,7 +8,7 @@
   // Name: a AsciiMathML processor
   // Description: It support AsciiMathML
   // URL: MoniWiki:AsciiMathML
  -// Version: $Revision: 1.7 $
  +// Version: $Revision: 1.8 $
   // License: GPL
   //
   // please see http://kldp.net/forum/message.php?msg_id=9419
  @@ -31,7 +31,7 @@
   // 1. set $inline_latex='asciimathml';
   // 2. replace the latex processor: $processors=array('latex'=>'asciimathml');
   //
  -// $Id: asciimathml.php,v 1.7 2007/11/06 12:37:52 wkpark Exp $
  +// $Id: asciimathml.php,v 1.8 2007/11/06 13:49:49 wkpark Exp $
   
   function processor_asciimathml($formatter,$value="") {
     global $DBInfo;
  @@ -70,7 +70,7 @@
     $fontfamily="mathfontfamily='$myfontfamily';\n";
   
     if ( $flag ) {
  -    if ($formatter->register_javascripts('ASCIIMathML.js'))
  +    if ($formatter->register_javascripts('ASCIIMathML.js'));
         if (preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']))
           $formatter->register_javascripts('<object id="mathplayer"'.
             ' classid="clsid:32F66A20-7614-11D4-BD11-00104BD3F987" width="1px" height="1px">'.
  @@ -79,19 +79,17 @@
         );
   
       if ($_add_func)
  -      $out.=<<<AJS
  +      $js=<<<AJS
   <script type="text/javascript">
   /*<![CDATA[*/
   function translateById(objId,flag) {
  -  AMbody = document.getElementById(objId);
  -  if (typeof math2ascii != "undefined") math2ascii(AMbody); // for WikiWyg mode switching
  -  if (isIE) { // for WikiWyg
  -    var str=AMbody.innerHTML.replace(/\\$/g,'');;
  -    var math=AMparseMath(str);
  -    AMbody.innerHTML=math.innerHTML;
  +  var AMbody = document.getElementById(objId);
  +  // for WikiWyg mode switching
  +  if (typeof math2ascii != "undefined") math2ascii(AMbody);
  +  if (isIE) { // for WikiWyg in the iframe
  +    AMbody.innerHTML=AMparseMath(AMbody.innerHTML.replace(/\\$/g,'')).innerHTML;
       //needed to match size and font of formula to surrounding text
  -    var frag = AMbody.getElementsByTagName('math')[0];
  -    frag.update()
  +    AMbody.getElementsByTagName('math')[0].update();
     } else {
       AMprocessNode(AMbody, false);
     }
  @@ -102,6 +100,7 @@
   /*]]>*/
   </script>
   AJS;
  +    if ($js) $formatter->register_javascripts($js);
     }
   
     $out .= "<span><span class=\"AM\" id=\"AM-$id\">$value</span>" .
  
  
  


wkpark      2007/11/07 00:08:38

  Modified:    local    moniwyg.js
  Log:
  hack hack ;;
  
  Revision  Changes    Path
  1.31      +12 -9     moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- moniwyg.js	6 Nov 2007 13:19:56 -0000	1.30
  +++ moniwyg.js	6 Nov 2007 15:08:38 -0000	1.31
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.30 2007/11/06 13:19:56 wkpark Exp $
  +// $Id: moniwyg.js,v 1.31 2007/11/06 15:08:38 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -192,8 +192,11 @@
           var postdata = 'action=markup&value=' + encodeURIComponent(myText);
           var myhtml= HTTPPost(top.location, postdata);
   
  -        var myhtml = myhtml.replace(/^(.|\s|\n)*<div>(\s|\n)*(<span)/i,'$3')
  -                .replace(/<\/span>(\s|\n)*<\/?div>\s*$/i,'</span>');
  +        // hack hack
  +        var chunks = myhtml.split(/<div>/i);
  +        myhtml = (chunks[1] ? chunks[1]:chunks[0])
  +            .replace(/^(.*)<div>(\s|\n)*(<span)/i,'$3')
  +            .replace(/<\/span>(\s|\n)*<\/?div>(\s)*$/i,'</span>');
   
           var div=document.createElement('div');
           if (Wikiwyg.is_ie) {
  @@ -234,11 +237,10 @@
           var key = String.fromCharCode(e.keyCode); // XXX
   
           var wm = self.get_wikimarkup_node();
  -        if (e.keyCode == 27 || e.keyCode == 13) { // ESC
  +        if (e.keyCode == 27 || (e.keyCode== 13 && wm.style.display=='inline')) {            // ESC or RETURN
               if (wm) self.update_wikimarkup(wm,true);
  -            if (Wikiwyg.is_ie) e.cancelBubble = true;
  +            if (window.event) e.cancelBubble = true;
               else e.preventDefault(), e.stopPropagation();
  -            return false;
           }
           if (wm && wm.className.match(/wikiMarkup/)) {
               var focus=0;
  @@ -259,7 +261,7 @@
               }
   
               if (stop) {    
  -                if (Wikiwyg.is_ie) e.cancelBubble = true;
  +                if (window.event) e.cancelBubble = true;
                   else e.preventDefault(), e.stopPropagation();
                   return false;
               }
  @@ -609,10 +611,11 @@
   proto.get_onclick_wikimarkup_function = function() {
       var self= this;
       return function(e) {
  +        e = e || window.event;
           var wm = self.get_wikimarkup_node();
           if (wm) self.update_wikimarkup(wm, true);
  -        //e.stopPropagation();
  -        //e.preventDefault();
  +        if (window.event) e.cancelBubble = true;
  +        else e.preventDefault(), e.stopPropagation();
       };
   }
   
  
  
  


wkpark      2007/11/07 01:31:54

  Modified:    plugin   rss_rc.php
  Log:
  support the rss_rc summary option (summary=1)
  Please see http://kldp.net/forum/message.php?msg_id=31256
  
  Revision  Changes    Path
  1.14      +33 -2     moniwiki/plugin/rss_rc.php
  
  Index: rss_rc.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rss_rc.php,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- rss_rc.php	18 Jan 2006 15:59:06 -0000	1.13
  +++ rss_rc.php	6 Nov 2007 16:31:54 -0000	1.14
  @@ -1,9 +1,9 @@
   <?php
  -// Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2007 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // rss_rc action plugin for the MoniWiki
   //
  -// $Id: rss_rc.php,v 1.13 2006/01/18 15:59:06 wkpark Exp $
  +// $Id: rss_rc.php,v 1.14 2007/11/06 16:31:54 wkpark Exp $
   
   function do_rss_rc($formatter,$options) {
     global $DBInfo;
  @@ -13,6 +13,14 @@
     $options['quick']=1;
     if ($options['c']) $options['items']=$options['c'];
     $lines= $DBInfo->editlog_raw_lines($days,$options);
  +
  +  if ($DBInfo->rss_rc_options) {
  +    $opts=$DBInfo->rss_rc_options;
  +    $opts=explode(',',$opts);
  +    foreach ($opts as $opt) {
  +      $options[$opt]=1; // FIXME
  +    }
  +  }
       
     $time_current= time();
   #  $secs_per_day= 60*60*24;
  @@ -73,6 +81,27 @@
           }
           $html="<![CDATA[".$html.$extra."]]>";
           #$html=strtr($html.$extra,array('&'=>'&amp;','<'=>'&lt;'));
  +      } else if ($options['summary']) {
  +        $p=new WikiPage($page_name);
  +        $f=new Formatter($p);
  +        $f->section_edit=0;
  +        $f->sister_on=0;
  +        $f->perma_icon='';
  +
  +        $options['nomsg']=1;
  +        $b= $p->_get_raw_body();
  +        $chunks= preg_split('/\n#{4,}/',$b); # summary breaker is ####
  +        ob_start();
  +        if ($chunks) $f->send_page($chunks[0],array('fixpath'=>1));
  +        else $f->send_page('',array('fixpath'=>1));
  +        #$f->send_page('');
  +        $html=ob_get_contents();
  +        ob_end_clean();
  +        $chunks= preg_split('/<!-- break -->/',$html); # <!-- break -->
  +        if ($chunks[0]) $html=$chunks[0];
  +
  +        $extra='';
  +        $html="<![CDATA[".$html.$extra."]]>";
         } else {
       	$html=str_replace('&','&amp;',$log);
         }
  @@ -147,4 +176,6 @@
     else print $head.$channel.$items.$form;
     print "</rdf:RDF>\n";
   }
  +
  +// vim:et:sts=2:sw=2
   ?>
  
  
  


wkpark      2007/11/07 14:46:42

  Modified:    local    moniwyg.js
  Log:
  support <object> <embed> tags on the Wisiwyg mode
  
  Revision  Changes    Path
  1.32      +56 -3     moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- moniwyg.js	6 Nov 2007 15:08:38 -0000	1.31
  +++ moniwyg.js	7 Nov 2007 05:46:42 -0000	1.32
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.31 2007/11/06 15:08:38 wkpark Exp $
  +// $Id: moniwyg.js,v 1.32 2007/11/07 05:46:42 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -237,7 +237,7 @@
           var key = String.fromCharCode(e.keyCode); // XXX
   
           var wm = self.get_wikimarkup_node();
  -        if (e.keyCode == 27 || (e.keyCode== 13 && wm.style.display=='inline')) {            // ESC or RETURN
  +        if (e.keyCode == 27 || (e.keyCode== 13 && wm && wm.style.display=='inline')) {            // ESC or RETURN
               if (wm) self.update_wikimarkup(wm,true);
               if (window.event) e.cancelBubble = true;
               else e.preventDefault(), e.stopPropagation();
  @@ -284,7 +284,9 @@
                   var sel=self.get_selection();
                   if (!Wikiwyg.is_ie) {
                       var sf=sel.focusNode;
  -                    if (sf.nodeType == 3 && sf.parentNode.nodeName != 'A' && sel.toString() == '') {
  +                    var wm=self.get_wikimarkup_node();
  +                    if (sf.nodeType == 3 && sel.toString() == ''
  +                            && sf.parentNode.nodeName != 'A' && wm == null) {
                           // text node
                           var range=self.get_range();
                           var val = sf.nodeValue.substr(0,sel.focusOffset).replace(/\s+$/,'');
  @@ -555,6 +557,11 @@
   {
       var dom = document.createElement('div');
   
  +    // embed or object tags
  +    html =
  +        html.replace(/(<\/embed>)/ig,
  +                "<img src='"+ _url_prefix + "/imgs/loading.gif' width='100px' height='100px'>$1");
  +
       //alert('fixup_markup='+html);
       if (Wikiwyg.is_ie) {
           //html = html.replace(/(\r\n|\n|\r)/g,'\\n');
  @@ -1036,6 +1043,9 @@
       html =
           html.replace(/<tt class[^>]+>([^>]+)<\/tt>/ig, "{{{$1}}}");
   
  +    // embed or object tags
  +    //html = html.replace(/(<\/(embed|object)>)/ig, "<img src='/wiki/imgs/loading.gif' width='100px' height='100px'>$1");
  +
       dom.innerHTML = "<br>" +html; // Bah.... IE hack :(
       dom.removeChild(dom.firstChild);
   
  @@ -1064,6 +1074,49 @@
   }
   }
   
  +proto.format_object = function(element) {
  +    var attr=['type','classid','codebase','align','data','width','height','id'];
  +    var attrs=[];
  +    for (var k in attr) {
  +        var v=element.getAttribute(attr[k]);
  +        if (v) attrs.push(attr[k]+'="'+ v + '"');
  +    }
  +    if (element.innerHTML) {
  +        var save_out=this.output;
  +        this.output=[];
  +        this.walk(element);
  +        var my=this.output.join('');
  +        this.output=save_out;
  +        this.appendOutput('[[HTML(<object '+attrs.join(' ')+'>'+ my +'</object>)]]');
  +    } else {
  +        this.appendOutput('[[HTML(<object '+attrs.join(' ')+'></object>)]]');
  +    }
  +}
  +
  +proto.format_embed = function(element) {
  +    var attr=['src','type','data','width','height','id','wmode',
  +            'quality','align','allowScriptAccess','allowFullScreen','name','pluginspage'];
  +    var attrs=[];
  +    for (var k in attr) {
  +        var v=element.getAttribute(attr[k]);
  +        if (v) attrs.push(attr[k]+'="'+ v + '"');
  +    }
  +    if (element.parentNode.nodeName == 'OBJECT')
  +        this.appendOutput('<embed '+attrs.join(' ')+'>' + element.innerHTML +'</embed>');
  +    else
  +        this.appendOutput('[[HTML(<embed '+attrs.join(' ')+'>'+element.innerHTML+'</embed>)]]');
  +}
  +
  +proto.format_param = function(element) {
  +    var attr=['name','value'];
  +    var attrs=[];
  +    for (var k in attr) {
  +        var v=element.getAttribute(attr[k]);
  +        if (v) attrs.push(attr[k]+'="'+ v + '"');
  +    }
  +    this.appendOutput('<param '+attrs.join(' ')+'></param>');
  +}
  +
   proto.format_img = function(element) {
       var uri='';
       uri = element.getAttribute('src');
  
  
  


wkpark      2007/11/15 02:16:47

  Modified:    .        wiki.php
  Log:
  call moin_submit(this)
  
  Revision  Changes    Path
  1.359     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.358
  retrieving revision 1.359
  diff -u -r1.358 -r1.359
  --- wiki.php	6 Nov 2007 13:15:05 -0000	1.358
  +++ wiki.php	14 Nov 2007 17:16:46 -0000	1.359
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.358 2007/11/06 13:15:05 wkpark Exp $
  +// $Id: wiki.php,v 1.359 2007/11/14 17:16:46 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.358 $',1,-1);
  +$_revision = substr('$Revision: 1.359 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -213,7 +213,7 @@
   ";
     } else {
       return <<<FORM
  -<form id='go' method='get' action='$action' onsubmit="return moin_submit();">
  +<form id='go' method='get' action='$action' onsubmit="moin_submit(this);">
   <div>
   <input type='text' name='value' size='20' accesskey='s' class='goto' style='width:100px' />
   <input type='hidden' name='action' value='goto' />
  
  
  


wkpark      2007/11/15 02:17:35

  Modified:    local    wikibits.js
  Log:
  fix for IE
  
  Revision  Changes    Path
  1.4       +26 -13    moniwiki/local/wikibits.js
  
  Index: wikibits.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/wikibits.js,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- wikibits.js	5 Nov 2007 11:41:43 -0000	1.3
  +++ wikibits.js	14 Nov 2007 17:17:35 -0000	1.4
  @@ -1,7 +1,7 @@
   // from the MediaWiki
   // simplified for the MoniWiki by wkpark
   //
  -// $Id: wikibits.js,v 1.3 2007/11/05 11:41:43 wkpark Exp $
  +// $Id: wikibits.js,v 1.4 2007/11/14 17:17:35 wkpark Exp $
   //
   // Wikipedia JavaScript support functions
   // if this is true, the toolbar will no longer overwrite the infobox when you move the mouse over individual items
  @@ -118,20 +118,33 @@
   	}
   
   	// IE
  +	// http://www.bazon.net/mishoo/articles.epl?art_id=1292 (used by this script)
  +	// http://the-stickman.com/web-development/javascript/finding-selection-cursor-position-in-a-textarea-in-internet-explorer/
   	if(document.selection  && !is_gecko) {
  -		var theSelection = document.selection.createRange().text;
  -		if(!theSelection) { theSelection=sampleText;}
   		txtarea.focus();
  -		if(theSelection.charAt(theSelection.length - 1) == " "){// exclude ending space char, if any
  -			theSelection = theSelection.substring(0, theSelection.length - 1);
  -			document.selection.createRange().text = tagOpen + theSelection + tagClose + " ";
  +		var r = document.selection.createRange();
  +		var range = r.duplicate();
  +		var endText = '';
  +
  +		var myText = range.text;
  +		if (myText) {
  +			if (myText.charAt(myText.length - 1) == " ") { // exclude ending space char, if any
  +				endText = ' ';
  +				myText = myText.substring(0, myText.length - 1);
  +			}
  +			subst=toggleSameFormat(tagOpen,tagClose,myText);
   		} else {
  -			document.selection.createRange().text = tagOpen + theSelection + tagClose;
  +			myText=sampleText;
  +			subst = tagOpen + myText + tagClose;
   		}
   
  +		range.text = subst + endText;
  +
  +		range.setEndPoint('StartToStart', r);
  +		txtarea.focus();
  +		range.select();
   	// Mozilla
   	} else if(txtarea.selectionStart || txtarea.selectionStart == '0') {
  -		var replaced = false;
   		var startPos = txtarea.selectionStart;
   		var endPos = txtarea.selectionEnd;
   		var scrollTop = txtarea.scrollTop;
  @@ -187,9 +200,9 @@
   function toggleSameFormat(start, end, sel) {
       var nsel=sel;
       var start_re = start.replace(/([\^\$\*\+\.\?\[\]\{\}\(\)])/g, '\\$1')
  -        .replace(/\n/,"\n?").replace(/==/,'={2,6}'); // for headings
  +        .replace(/\n/,"(\r\n|\n)?").replace(/==/,'={2,6}'); // for headings
       var end_re = end.replace(/([\^\$\*\+\.\?\[\]\{\}\(\)])/g, '\\$1')
  -        .replace(/\n/,"\n?").replace(/==/,'={2,6}');
  +        .replace(/\n/,"(\r\n|\n)?").replace(/==/,'={2,6}');
   
       start_re = new RegExp('^' + start_re);
       end_re = new RegExp(end_re + '$');
  @@ -197,10 +210,10 @@
   	nsel = sel.replace(start_re,'').replace(end_re,'');
   
   	var m;
  -	if (m=sel.match(/^\n?(={1,6})/)) { // for headings
  -	    var tag='='.times(m[1].length);
  +	if (m=sel.match(/^(\r\n|\n)?(={1,6})/)) { // for headings
  +	    var tag='='.times(m[2].length);
   	    start=start.replace(/=/,tag),end=end.replace(/=/,tag)
  -	    if (start.length==9) start="\n== ",end=" ==\n"; // reset
  +	    if (start.replace(/(\r\n|\n)/,'').length==8) start="\n== ",end=" ==\n"; // reset
   	} else {
               return nsel;
   	}
  
  
  


wkpark      2007/11/15 02:18:52

  Modified:    css      kbd.js
  Log:
  refactoring :> simplify and cleanup
  
  Revision  Changes    Path
  1.12      +166 -200  moniwiki/css/kbd.js
  
  Index: kbd.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/kbd.js,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- kbd.js	23 Dec 2006 06:10:58 -0000	1.11
  +++ kbd.js	14 Nov 2007 17:18:52 -0000	1.12
  @@ -2,11 +2,11 @@
      MoinMoin Hotkeys
   
      Copyright(c) 2002 Byung-Chan Kim
  -   Copyright(c) 2003-2004 Won-kyu Park <wkpark at kldp.org>
  +   Copyright(c) 2003-2007 Won-kyu Park <wkpark at kldp.org>
   
      distributable under GPL
   
  -   $Id: kbd.js,v 1.11 2006/12/23 06:10:58 wkpark Exp $
  +   $Id: kbd.js,v 1.12 2007/11/14 17:18:52 wkpark Exp $
   
      CHANGES
   
  @@ -16,10 +16,11 @@
      * 2003/07/14 : fixed element indices
      * 2004/08/24 : no PATH_INFO support merged
      * 2004/10/03 : more intelligent behavior with search keys '?' '/'
  +   * 2007/11/09 : simplified and cleanup.
   */
   
   /*
  - <form name="go" id="go" method="get" action='$url' onsubmit="return moin_submit();">
  + <form name="go" id="go" method="get" action='$url' onsubmit="return moin_submit(this);">
    <input type="text" name="value" size="20" />
    <input type="hidden" name="action" value="goto" />
    <input type="submit" name="status" value="Go" class="goto" />
  @@ -27,29 +28,39 @@
   */
   
   /*
  +   A: ?action=randompage
  +   B: ?action=bookmark
      D: ?action=diff
  -   I: ?action=info
      E/W: ?action=edit
  -   F: FrontPage
  -   C: RecentChanges
  -   T: TitleIndex
  -   H: ?action=home (not supported in the MoinMoin)
  +   H: ?action=home (not supported action in the MoinMoin)
  +   I: ?action=info
  +   K: ?action=keywords
      L: ?action=LikePages
  +   P: ?action=print
  +   R: ?action=show
      U: ?action=UserPreferences
   
  +   C: RecentChanges
  +   F: FrontPage
  +   S/Q: FindPage
  +   T: TitleIndex
  +
      <ESC>: goto the 'go' form
  -   /: FullSearch mode
  -   ?: TitleSearch mode
  +   /: FullSearch mode toggle
  +   ?: TitleSearch mode toggle
   
  +   ** mozilla only **
      F1: HelpContents
      F3: FindPage
   */
   
   // uncomment bellow three lines and customize for your wiki.
   
  -//url_prefix="/mywiki";
  +//_script_name="/mywiki";
   //_qp="/"; // query_prefix
   //FrontPage= "FrontPage";
  +_script_name=url_prefix || _script_name; // url_prefix is depricated
  +
   RecentChanges= "RecentChanges"; 
   FindPage= "FindPage"; 
   TitleIndex= "TitleIndex"; 
  @@ -58,230 +69,185 @@
   
   // go form ID
   _go= "go";
  +_ap = _qp == '/' ? '?':'&';
   
  -if (_qp == '/') { _ap='?'; }
  -else { _ap='&'; }
  +function noBubble(e) {
  +	if (e.preventDefault) e.preventDefault();
  +	else e.cancelBubble = true;
  +}
   
  -_dom=0;
  +function keydownhandler(e) {
  +	if (e && e.target) var f = e.target, nn=f.nodeName; // Mozilla
  +	else var e=window.event, f = e.srcElement, nn = f.tagName; // IE
   
  -function keydownhandler(ev) {
  -	e=ev ? ev:window.event; // for IE
  -	if(_dom==3) var EventStatus= e.srcElement.tagName;
  -	else if(_dom==1) var EventStatus= e.target.nodeName; // for Mozilla
  -
  -	var cc = '';
  -	var ch = '';
  -
  -	if(_dom==3) { // for IE
  -		if(e.keyCode>0) {
  -			ch=String.fromCharCode(e.keyCode);
  -			cc=e.keyCode;
  -		}
  -	} else { // for Mozilla
  -		cc=e.keyCode;
  -		if(e.charCode>0) {
  -			ch=String.fromCharCode(e.charCode);
  -		}
  -	}
  -
  -//	if (_dom!=3) return;
  -	if(EventStatus == 'INPUT' || EventStatus == 'TEXTAREA' ) {
  -		if (_dom==3 && cc==27 && EventStatus == 'TEXTAREA')
  -			return false;
  -		// ESC blocking for all vim lovers
  -		return true;
  -	}
  -//	if (cc==8) { // Backspace blocking
  -//		alert(e.keyCode);
  -//		if( _dom==3 && strs.length > 0) {
  -//			//strs=strs.substr(0,strs.length-1);
  -//			//document.getElementById("status").innerHTML=strs;
  -//		}
  -//		return false;
  -//	}
  +	if (window.event && e.keyCode==27 && (nn == 'TEXTAREA' || nn == 'INPUT')) return false;
  +	// IE ESC blocking for all vim lovers
   	return true;
   }
   
  -function keypresshandler(ev){
  -	e=ev ? ev:window.event; // for IE
  -	if(_dom==3) var EventStatus= e.srcElement.tagName;
  -	else if(_dom==1) var EventStatus= e.target.nodeName; // for Mozilla
  -
  -	var cc = '';
  -	var ch = '';
  -
  -	if(window.event) { // for IE
  -		if(e.keyCode>0) {
  -			ch=String.fromCharCode(e.keyCode);
  -			cc=e.keyCode;
  -		}
  -	} else { // for Mozilla
  -		cc=e.keyCode;
  -		if(e.charCode>0) {
  -			ch=String.fromCharCode(e.charCode);
  -		}
  -	}
  +function keypresshandler(e) {
  +	if (window.event) var e = window.event, f = e.srcElement, nn = f.tagName;
  +	else  var f = e.target, nn = f.nodeName;
  +	var cc = e.charCode ? e.charCode : e.keyCode;
  +	ch = (cc >= 32 && cc <=126) ? String.fromCharCode(cc).toLowerCase():0;
   
  -	ch = ch.toLowerCase();
  +	//alert(e.keyCode+','+e.charCode+','+e.which);
   	var go=document.getElementById(_go);
  -	if(e.altKey || e.ctrlKey) {
  -		if(ch == "z" && e.altKey) {
  -			if (EventStatus != 'INPUT') {
  -				go.elements['value'].focus();
  -				return false;
  -			} else {
  -				var bot=document.getElementById('bottom');
  -				if (bot) bot.focus();
  -				return false;
  -			}
  +	var goValue=go.elements['value'];
  +	var goAction=go.elements['action'];
  +	var goStatus=go.elements['status'];
  +
  +	if (cc == 229 && nn != 'INPUT' && nn != 'TEXTAREA') { // for Mozilla
  +		goValue.focus();
  +		noBubble(e);
  +		return;
  +	}
  +
  +	var val = goValue.value || "", act="goto";
  +	var stat = goStatus.value || "Go";
  +	var i=0;
  +
  +	if (e.altKey && ch == 'z') {
  +		if (nn != 'INPUT') {
  +			goValue.focus();
  +			noBubble(e);
  +		} else {
  +			var bot=document.getElementById('bottom');
  +			if (bot) bot.focus(), noBubble(e);
   		}
   		return;
   	}
  -	if(EventStatus == 'INPUT' || EventStatus == 'TEXTAREA' || _dom == 2) {
  -		if ((ch == '?' || ch== '/') && EventStatus == 'INPUT') {
  -			var my=""+go.elements['value'].value;
  -			if (ch == '?' && (my == "/" || my =="?" || my=="")) {
  -				if (go.elements['status'].value == '?') {
  -					go.elements['action'].value="goto";
  -					go.elements['status'].value="Go";
  -					window.status="GoTo";
  -				} else {
  -					go.elements['action'].value="titlesearch";
  -					go.elements['status'].value="?";
  -					window.status="TitleSearch";
  -				}
  -			} else if (ch == '/' && (my == "/" || my =="?" || my=="")) {
  -				if (go.elements['status'].value == '/') {
  -			 		go.elements['action'].value="goto";
  -			 		go.elements['status'].value="Go";
  -			 		window.status="GoTo";
  -				} else {
  -					go.elements['action'].value="fullsearch";
  -					go.elements['status'].value="/";
  -					window.status="FullSearch";
  +
  +	switch(ch || cc) {
  +	case 27: ch = 27;
  +	case '/':
  +	case '?':
  +		if (nn == 'INPUT') {
  +			if (val == "" || val == "/" || val =="?") {
  +				if (ch == '?') {
  +					if (stat == "?") { // toggle
  +						stat = "Go";
  +						window.status="GoTo";
  +					} else {
  +						act="titlesearch";
  +						stat="?";
  +						window.status="TitleSearch";
  +					}
  +				} else if (ch == '/') {
  +					if (stat == "/") { // toggle
  +						stat = "Go";
  +				 		window.status="GoTo";
  +					} else {
  +						act="fullsearch";
  +						stat="/";
  +						window.status="FullSearch";
  +					}
  +				} else if (ch == 27) {
  +					stat="Go";
  +					goValue.blur();
   				}
  +				if (val == "/" || val == "?") val=val.substr(0,val.length-1);
  +				goValue.value=val;
  +				goAction.value=act;
  +				goStatus.value=stat;
  +				return;
   			}
  -			if (my == '/' || my == '?')
  -			go.elements['value'].value=my.substr(0,my.length-1);
  -		} else if (cc== 27 && EventStatus == 'INPUT') {
  -			go.elements['value'].blur();
  -			go.elements['value'].value='';
  -			go.elements['action'].value="goto";
  -			go.elements['status'].value="Go";
  -			window.status="GoTo"+window.defaultStatus;
   		}
  -		return;
  +		break;
   	}
   
  -	if(_dom != 3 && cc == 229 && ch == '') { // Mozilla
  +	if (nn == 'INPUT' || nn == 'TEXTAREA' || e.ctrlKey) return;
  +	var loc=self.location+'';
  +	var pages={'c':RecentChanges,'f':FrontPage,'s':FindPage,'t':TitleIndex,'u':UserPreferences};
  +	var actions={'d':'diff', 'i':'info', 'b':'bookmark', 'h':'home', 'l':'likepages',
  +		'p':'print', 'a':'randompage', 'k':'keywords'};
  +
  +	switch(ch || cc) {
  +	case '?':
  +		// Title search as vi way
  +		goAction.value="titlesearch";
  +		goStatus.value='?';
  +		goValue.focus();
  +		break;
  +	case '/':
  +		// Contents search
  +		goAction.value="fullsearch";
  +		goStatus.value='/';
  +		goValue.focus();
  +		break;
  +	case 27: // 'ESC' key
  +		goValue.focus();
  +		break;
  +	case 112: // 'F1' Help (Mozilla only)
  +		noBubble(e);
  +		self.location = _script_name + _qp + HelpContents;
  +		break;
  +	case 114: // 'F3' Find (Mozilla only)
  +		noBubble(e);
  +		self.location = _script_name + _qp + FindPage;
  +		break;
  +	case 229: // IME
   		window.status="?/ or change IME status";
  -	} else if(_dom !=3 && cc == 112) { // 'F1' Help! (Mozilla only)
  -		self.location = url_prefix + _qp + HelpContents;
  -	} else if(_dom !=3 && cc == 114) { // 'F3' Find (Mozilla only)
  -		self.location = url_prefix + _qp + FindPage;
  -	} else if(cc == 9 || cc == 27) { // 'TAB','ESC' key
  -		if (cc == 27) {
  -			go.elements['value'].focus();
  -		}
  -	} else if(ch == "`") {
  +		break;
  +	case '`':
   		var bot=document.getElementById('bottom');
   		if (bot) bot.focus();
  -	} else if(ch == "z") {
  -		go.elements['value'].focus();
  -	} else if(ch == "/" || ch == "?") {
  -		var my=go.elements['value'].value + "";
  -		if (ch == "?" && (my == "?" || my =="/" || my=="")) {
  -			// Title search as vi way
  -			go.elements['value'].focus();
  -			go.elements['action'].value="titlesearch";
  -			go.elements['status'].value="?";
  -		} else
  -		if (ch == "/" && (my == "?" || my =="/" || my=="")) {
  -			// Contents search
  -			go.elements['value'].focus();
  -			go.elements['action'].value="fullsearch";
  -			go.elements['status'].value="/";
  -		}
  -	} else if(ch == "c") {
  -		self.location = url_prefix + _qp + RecentChanges;
  -	} else if(ch == "d" || ch== "i" || ch=="b" || ch=="l" || ch=="h" || ch=="p" || ch=="a" || ch=="k") {
  -		var my=''+self.location;
  -		var idx = my.indexOf(_ap);
  -		if (idx != -1) {
  -			my=my.substr(0,idx);
  -		}
  -		if (ch == "d")
  -			my +=_ap + 'action=diff';
  -		else if (ch == "i")
  -			my +=_ap + 'action=info';
  -		else if (ch == "b")
  -			my +=_ap + 'action=bookmark';
  -		else if (ch == "h")
  -			my +=_ap + 'action=home';
  -		else if (ch == "l")
  -			my +=_ap + 'action=LikePages';
  -		else if (ch == "p")
  -			my +=_ap + 'action=print';
  -		else if (ch == "a")
  -			my +=_ap + 'action=randompage';
  -		else if (ch == "k")
  -			my +=_ap + 'action=keywords';
  -		self.location=my;
  -		
  -	} else if(ch == "f") { // frontpage
  -		self.location = url_prefix + _qp + FrontPage;
  -	} else if(ch == "s" || ch == 'q') { // findpage
  -		self.location = url_prefix + _qp + FindPage
  -	} else if(ch == "t") { // titleindex
  -		self.location = url_prefix + _qp + TitleIndex
  -	} else if(ch == "u") { // userpreferences
  -		self.location = url_prefix + _qp + UserPreferences;
  -	} else if(ch=="e" || ch=="w" || ch=="r") { // Edit or refresh
  -		var my=''+self.location;
  -		var idx=my.indexOf(_ap);
  -		if (idx != -1 && my.substr(idx+1,5) == "goto=") {
  -			my=my.substr(idx+6,my.length-6);
  -			if ((idx=my.indexOf("&")) != -1)
  -				my=my.substring(0,idx);
  +		break;
  +	case 'z':
  +		goValue.focus();
  +		break;
  +	case 'a': case 'b': case 'd': case 'h': case 'i': case 'k': case 'l': case 'p':
  +		if ((i = loc.indexOf(_ap)) != -1) loc = loc.substr(0,i);
  +		self.location=loc + _ap + 'action=' + actions[ch];
  +		break;
  +	case 'q': ch = 's';
  +	case 'c': case 'f': case 's': case 't': case 'u':
  +		self.location = _script_name + _qp + pages[ch];
  +		break;
  +	case 'e': case 'r': case 'w':
  +		// Edit/write or refresh
  +		if ((i=loc.indexOf(_ap)) != -1 && loc.substr(i+1,5) == "goto=") { // deprecated
  +			loc=loc.substr(i+6,loc.length-6);
  +			if ((i=loc.indexOf('&')) != -1) loc=loc.substring(0,i);
   			if (ch == "e" || ch == "w")
  -				self.location=url_prefix + _qp + my + _ap +
  +				self.location=_script_name + _qp + loc + _ap +
   					'action=edit';
   			if (ch == "r") {
  -				if ((idx=my.indexOf("#")) != -1)
  -					my=my.substring(0,idx);
  -				self.location=url_prefix + _qp + my + _ap +
  +				if ((i=loc.indexOf('#')) != -1)
  +					loc=loc.substring(0,i);
  +				self.location=_script_name + _qp + loc + _ap +
   					'action=show';
   			}
   		} else {
  -			if (idx != -1) {
  -				my=my.substr(0,idx);
  -			} else if ((idx=my.indexOf("#")) != -1) {
  -				my=my.substring(0,idx);
  -			}
  -			if (ch == "e" || ch == "w")
  -				self.location = my + _ap + 'action=edit';
  -			if (ch == "r")
  -				self.location = my + _ap + 'action=show';
  +			if (i != -1) loc=loc.substr(0,i);
  +			else if ((i=loc.indexOf('#')) != -1) loc=loc.substring(0,i);
  +			if (ch == "e" || ch == "w") self.location = loc + _ap + 'action=edit';
  +			if (ch == "r") self.location = loc + _ap + 'action=show';
   		}
  +		break;
   	}
   	return;
   }
   
  -function input(){
  -	_dom=document.all ? 3 : (document.getElementById ? 1 : (document.layers ? 2 : 0));
  -	document.onkeypress = keypresshandler;
  -	document.onkeydown = keydownhandler;
  +function moin_init() {
  +	if (document.addEventListener) {
  +		document.addEventListener('keypress',keypresshandler,false);
  +		document.addEventListener('keypress',keydownhandler,false);
  +	} else {
  +		document.attachEvent('onkeypress',keypresshandler);
  +		document.attachEvent('onkeydown',keydownhandler);
  +	}
   }
   
  -function moin_submit() {
  -	var go=document.getElementById(_go);
  -	if (go.elements['value'].value.replace(/\s+/,'') =="")
  -		return false;
  -	if (go.elements['action'].value =="goto") {
  +function moin_submit(form) {
  +	if (form == null) form=document.getElementById(_go);
  +	if (form == null) return true;
  +	if (form.elements['value'].value.replace(/\s+/,'') == "") return false;
  +	if (form.elements['action'].value =="goto") {
   		go.elements['value'].name='goto';
   		go.elements['action'].name='';
   		return true;
   	}
   }
   
  -input();
  +moin_init();
  
  
  


wkpark      2007/11/15 02:21:13

  Modified:    plugin   EditToolbar.php
  Log:
  fixed math tag
  
  Revision  Changes    Path
  1.5       +2 -2      moniwiki/plugin/EditToolbar.php
  
  Index: EditToolbar.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/EditToolbar.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- EditToolbar.php	5 Aug 2006 06:07:13 -0000	1.4
  +++ EditToolbar.php	14 Nov 2007 17:21:13 -0000	1.5
  @@ -7,7 +7,7 @@
   //
   // This feature is imported from the MediaWiki
   //
  -// $Id: EditToolbar.php,v 1.4 2006/08/05 06:07:13 wkpark Exp $
  +// $Id: EditToolbar.php,v 1.5 2007/11/14 17:21:13 wkpark Exp $
   
   function macro_EditToolbar($formatter,$value) {
       global $DBInfo;
  @@ -27,7 +27,7 @@
   addButton('$imgdir/button_headline.png','Level 2 headline','\\n== ',' ==\\n','Headline text');
   addButton('$imgdir/button_image.png','Embedded image','attachment:','','Example.jpg');
   addButton('$imgdir/button_media.png','Media file link','[[Media(',')]]','Example.mp3');
  -addButton('$imgdir/button_math.png','Mathematical formula (LaTeX)','\$\$ ',' \$\$ ','Insert formula here');
  +addButton('$imgdir/button_math.png','Mathematical formula (LaTeX)','\$ ',' \$','Insert formula here');
   addButton('$imgdir/button_nowiki.png','Ignore wiki formatting','{{{','}}}','Insert non-formatted text here');
   
   addButton('$imgdir/button_sig.png','Your signature with timestamp','@SIG@','','');
  
  
  


wkpark      2007/11/16 18:58:13

  Modified:    local/Wikiwyg/lib Wikiwyg.js
  Log:
  fix for extra input fields to use with the blog etc.
  
  Revision  Changes    Path
  1.4       +13 -1     moniwiki/local/Wikiwyg/lib/Wikiwyg.js
  
  Index: Wikiwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/lib/Wikiwyg.js,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Wikiwyg.js	17 Oct 2007 07:44:48 -0000	1.3
  +++ Wikiwyg.js	16 Nov 2007 09:58:13 -0000	1.4
  @@ -14,7 +14,7 @@
   
   AUTHORS:
   
  -    Ingy döt Net <ingy@cpan.org>
  +    Ingy dot Net <ingy@cpan.org>
       Casey West <casey@geeknest.com>
       Chris Dent <cdent@burningchrome.com>
       Matt Liggett <mml@pobox.com>
  @@ -157,6 +157,18 @@
           mydiv.setAttribute('id',id);
       }
   
  +    var divs=div.getElementsByTagName('div');
  +    this.extra=null;
  +    // save some needed fields
  +    for (var i=0;i < divs.length;i++) {
  +        if (divs[i].className == 'editor_area_extra') {
  +            this.extra=divs[i].cloneNode(true);
  +            break;
  +        }
  +    }
  +    if (this.extra) mydiv.appendChild(this.extra);
  +
  +    //
       this.div = div;
       this.divHeight = this.div.offsetHeight;
       if (!config) config = {};
  
  
  


wkpark      2007/11/16 18:59:09

  Modified:    local    moniwyg.js
  Log:
  fix for extra input fields to use with the blog etc.
  
  Revision  Changes    Path
  1.33      +24 -2     moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- moniwyg.js	7 Nov 2007 05:46:42 -0000	1.32
  +++ moniwyg.js	16 Nov 2007 09:59:09 -0000	1.33
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.32 2007/11/07 05:46:42 wkpark Exp $
  +// $Id: moniwyg.js,v 1.33 2007/11/16 09:59:09 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -405,6 +405,7 @@
               myaction=this.myinput[i].value;
       }
   
  +    /*
       // for preview
       myWikiwyg.convertWikitextToHtmlAll(wikitext,
           function(new_html) {
  @@ -414,12 +415,24 @@
           });
   
       // XXX using default form XXX
  +    */
       var area=document.getElementById('editor_area');
       if (area) {
           var textarea=area.getElementsByTagName('textarea')[0];
           var form=area.getElementsByTagName('form')[0];
           if (textarea) textarea.value=wikitext;
   
  +        // restore extra fields
  +        if (this.extra) {
  +            var extras=this.extra.getElementsByTagName('input');
  +            var myinputs=form.getElementsByTagName('input');
  +            for (var i=0;i < extras.length;i++) {
  +                if (myinputs[extras[i].name]) {
  +                    myinputs[extras[i].name].value=extras[i].value;
  +                }
  +            }
  +        }
  +
           form.submit();
           return;
       }
  @@ -548,6 +561,15 @@
       this.current_mode.enableThis();
       //this.current_mode.enableThis(); // hack !!
       this.myinput=dom.getElementsByTagName('input');
  +    var divs=dom.getElementsByTagName('div');
  +
  +    // save some needed fields
  +    for (var i=0;i < divs.length;i++) {
  +        if (divs[i].className == 'editor_area_extra') {
  +            this.extra_input=divs[i];
  +            break;
  +        }
  +    }
   }
   
   //
  @@ -2246,7 +2268,7 @@
           loading.parentNode.replaceChild(saved,loading);
       } else {
           area=document.getElementById('editor_area');
  -        text=area.getElementsByTagName('textarea')[0].value;
  +        var textarea=area.getElementsByTagName('textarea')[0].value;
           form=area.innerHTML;
   
           var toolbar=document.getElementById('toolbar');
  
  
  


wkpark      2007/11/16 19:00:24

  Modified:    plugin   Blog.php
  Log:
  fix for extra input fields to use with the blog etc.
  use $use_save_refresh
  
  Revision  Changes    Path
  1.34      +17 -6     moniwiki/plugin/Blog.php
  
  Index: Blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Blog.php,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- Blog.php	16 Oct 2007 11:30:11 -0000	1.33
  +++ Blog.php	16 Nov 2007 10:00:24 -0000	1.34
  @@ -5,7 +5,7 @@
   //
   // Usage: ?action=Blog
   //
  -// $Id: Blog.php,v 1.33 2007/10/16 11:30:11 wkpark Exp $
  +// $Id: Blog.php,v 1.34 2007/11/16 10:00:24 wkpark Exp $
   
   function updateBlogList($formatter) {
     global $DBInfo;
  @@ -78,7 +78,6 @@
     $cols=$options['cols'] > 60 ? $options['cols']: $cols;
   
     $url=$formatter->link_url($formatter->page->urlname);
  -  $formatter->send_header("",$options);
   
     if ($formatter->refresh or $options['button_refresh']) {
       updateBlogList($formatter);
  @@ -151,6 +150,7 @@
             $lines[$i]="----\n$savetext @SIG@\n$endtag";
           $raw_body=join("\n",$lines);
         } else {
  +        $formatter->send_header("",$options);
           $formatter->send_title(_("Error: No blog entry found!"),"",$options);
           $formatter->send_footer("",$options);
           return;
  @@ -180,6 +180,14 @@
           $raw_body.=$entry;
       }
   
  +    $myrefresh='';
  +    if ($DBInfo->use_save_refresh) {
  +       $sec=$DBInfo->use_save_refresh - 1;
  +       $lnk=$formatter->link_url($formatter->page->urlname,"?action=show");
  +       $myrefresh='Refresh: '.$sec.'; url='.qualifiedURL($lnk);
  +    }
  +    $formatter->send_header($myrefresh,$options);
  +
       if ($options['value']) {
         $formatter->send_title(sprintf(_("Comment added to \"%s\""),$title),"",$options);
         $log="Add Comment to \"$title\"";
  @@ -201,6 +209,7 @@
       } else
         $formatter->send_page();
     } else { # add entry or comment
  +    $formatter->send_header("",$options);
       if ($options['value']) {
         $raw_body=$formatter->page->_get_raw_body();
         $lines=explode("\n",$raw_body);
  @@ -246,12 +255,14 @@
         print "<a name='BlogComment'></a>";
       print '<div id="editor_area">';
       print "<form method='post' action='$url'>\n";
  +    $myinput='';
       if ($options['id'] == 'Anonymous')
  -      print '<b>'._("Name")."</b>: <input name='name' size='15' maxlength='15' value='$options[name]' />\n";
  -    if ($options['value'])
  -      print "<input type='hidden' name='value' value='$options[value]' />\n";
  +      $myinput.='<b>'._("Name")."</b>: <input name='name' size='15' maxlength='15' value='$options[name]' />\n";
  +    if (!$options['value'])
  +      $myinput.='<b>'._("Title")."</b>: <input name='title' value='$options[title]' size='70' maxlength='70' style='width:300px' /><br />\n";
       else
  -      print '<b>'._("Title")."</b>: <input name='title' value='$options[title]' size='70' maxlength='70' style='width:300px' /><br />\n";
  +      print "<input type='hidden' name='value' value='$options[value]' />\n";
  +    print '<div class="editor_area_extra">'.$myinput."</div>\n";
       $savetext=$savetext ? $savetext:'Enter blog entry';
       if ($DBInfo->use_wikiwyg) {
         $wysiwyg_msg=_("GUI");
  
  
  


wkpark      2007/11/16 19:01:23

  Modified:    plugin/processor blog.php
  Log:
  add a $use_rawblog config option and use it.
  
  Revision  Changes    Path
  1.25      +2 -2      moniwiki/plugin/processor/blog.php
  
  Index: blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/blog.php,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- blog.php	1 Aug 2007 01:13:20 -0000	1.24
  +++ blog.php	16 Nov 2007 10:01:23 -0000	1.25
  @@ -7,7 +7,7 @@
   // Hello World
   // }}}
   // this processor is used internally by the Blog action
  -// $Id: blog.php,v 1.24 2007/08/01 01:13:20 keizie Exp $
  +// $Id: blog.php,v 1.25 2007/11/16 10:01:23 wkpark Exp $
   
   function processor_blog($formatter,$value="",$options) {
     static $date_anchor='';
  @@ -95,7 +95,7 @@
         $action= $formatter->link_tag($formatter->page->urlname,"?action=blog&amp;value=$md5sum#BlogComment",$add_button);
         if (getPlugin('SendPing'))
           $action.= ' | '.$formatter->link_tag($formatter->page->urlname,"?action=trackback&amp;value=$md5sum",_("track back").$counter);
  -      if (getPlugin('rawblog'))
  +      if ($DBInfo->use_rawblog)
           $action.= ' | '.$formatter->link_tag($formatter->page->urlname,"?action=rawblog&amp;value=$md5sum",_("raw"));
       }
   
  
  
  


wkpark      2007/11/19 00:13:32

  Added:       lib      HTTPClient.php openid.php
  Log:
  add openid modules
  
  Revision  Changes    Path
  1.1                  moniwiki/lib/HTTPClient.php
  
  Index: HTTPClient.php
  ===================================================================
  <?php
  /**
   * HTTP Client
   *
   * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
   * @author     Andreas Goetz <cpuidle@gmx.de>
   */
  
  define('HTTP_NL',"\r\n");
  
  /**
   * This class implements a basic HTTP client
   *
   * It supports POST and GET, Proxy usage, basic authentication,
   * handles cookies and referers. It is based upon the httpclient
   * function from the VideoDB project.
   *
   * @link   http://www.splitbrain.org/go/videodb
   * @author Andreas Goetz <cpuidle@gmx.de>
   * @author Andreas Gohr <andi@splitbrain.org>
   */
  class HTTPClient {
      //set these if you like
      var $agent;         // User agent
      var $http;          // HTTP version defaults to 1.0
      var $timeout;       // read timeout (seconds)
      var $cookies;
      var $referer;
      var $max_redirect;
      var $max_bodysize;  // abort if the response body is bigger than this
      var $headers;
      var $debug;
  
      // don't set these, read on error
      var $error;
      var $redirect_count;
  
      // read these after a successful request
      var $resp_status;
      var $resp_body;
      var $resp_headers;
  
      // set these to do basic authentication
      var $user;
      var $pass;
  
      // set these if you need to use a proxy
      var $proxy_host;
      var $proxy_port;
      var $proxy_user;
      var $proxy_pass;
      var $proxy_ssl; //boolean set to true if your proxy needs SSL
  
      /**
       * Constructor.
       *
       * @author Andreas Gohr <andi@splitbrain.org>
       */
      function HTTPClient(){
          $this->agent        = 'Mozilla/4.0 (compatible; HTTP Client; '.PHP_OS.')';
          $this->timeout      = 15;
          $this->cookies      = array();
          $this->referer      = '';
          $this->max_redirect = 3;
          $this->redirect_count = 0;
          $this->status       = 0;
          $this->headers      = array();
          $this->http         = '1.0';
          $this->debug        = false;
          $this->max_bodysize = 0;
          if(extension_loaded('zlib')) $this->headers['Accept-encoding'] = 'gzip';
          $this->headers['Accept'] = 'text/xml,application/xml,application/xhtml+xml,'.
                                     'text/html,text/plain,image/png,image/jpeg,image/gif,*/*';
          $this->headers['Accept-Language'] = 'en-us';
      }
  
  
      /**
       * Simple function to do a GET request
       *
       * Returns the wanted page or false on an error;
       *
       * @author Andreas Gohr <andi@splitbrain.org>
       */
      function get($url){
          if(!$this->sendRequest($url)) return false;
          if($this->status != 200) return false;
          return $this->resp_body;
      }
  
      /**
       * Simple function to do a POST request
       *
       * Returns the resulting page or false on an error;
       *
       * @author Andreas Gohr <andi@splitbrain.org>
       */
      function post($url,$data){
          if(!$this->sendRequest($url,$data,'POST')) return false;
          if($this->status != 200) return false;
          return $this->resp_body;
      }
  
      /**
       * Do an HTTP request
       *
       * @author Andreas Goetz <cpuidle@gmx.de>
       * @author Andreas Gohr <andi@splitbrain.org>
       */
      function sendRequest($url,$data=array(),$method='GET'){
          $this->error = '';
          $this->status = 0;
  
          // parse URL into bits
          $uri = parse_url($url);
          $server = $uri['host'];
          $path   = $uri['path'];
          if(empty($path)) $path = '/';
          if(!empty($uri['query'])) $path .= '?'.$uri['query'];
          $port = $uri['port'];
          if($uri['user']) $this->user = $uri['user'];
          if($uri['pass']) $this->pass = $uri['pass'];
  
          // proxy setup
          if($this->proxy_host){
              $request_url = $url;
              $server      = $this->proxy_host;
              $port        = $this->proxy_port;
              if (empty($port)) $port = 8080;
          }else{
              $request_url = $path;
              $server      = $server;
              if (empty($port)) $port = ($uri['scheme'] == 'https') ? 443 : 80;
          }
  
          // add SSL stream prefix if needed - needs SSL support in PHP
          if($port == 443 || $this->proxy_ssl) $server = 'ssl://'.$server;
  
          // prepare headers
          $headers               = $this->headers;
          $headers['Host']       = $uri['host'];
          $headers['User-Agent'] = $this->agent;
          $headers['Referer']    = $this->referer;
          $headers['Connection'] = 'Close';
          if($method == 'POST'){
              $post = _postEncode($data);
              $headers['Content-Type']   = 'application/x-www-form-urlencoded';
              $headers['Content-Length'] = strlen($post);
          }
          if($this->user) {
              $headers['Authorization'] = 'BASIC '.base64_encode($this->user.':'.$this->pass);
          }
          if($this->proxy_user) {
              $headers['Proxy-Authorization'] = 'BASIC '.base64_encode($this->proxy_user.':'.$this->proxy_pass);
          }
  
          // stop time
          $start = time();
  
          // open socket
          $socket = @fsockopen($server,$port,$errno, $errstr, $this->timeout);
          if (!$socket){
              $resp->status = '-100';
              $this->error = "Could not connect to $server:$port\n$errstr ($errno)";
              return false;
          }
          //set non blocking
          stream_set_blocking($socket,0);
  
          // build request
          $request  = "$method $request_url HTTP/".$this->http.HTTP_NL;
          $request .= $this->_buildHeaders($headers);
          $request .= $this->_getCookies();
          $request .= HTTP_NL;
          $request .= $post;
  
          $this->_debug('request',$request);
  
          // send request
          fputs($socket, $request);
          // read headers from socket
          $r_headers = '';
          do{
              if(time()-$start > $this->timeout){
                  $this->status = -100;
                  $this->error = 'Timeout while reading headers';
                  return false;
              }
              if(feof($socket)){
                  $this->error = 'Premature End of File (socket)';
                  return false;
              }
              $r_headers .= fread($socket,1); #FIXME read full lines here?
          }while(!preg_match('/\r\n\r\n$/',$r_headers));
  
          //read body (with chunked encoding if needed)
          $r_body    = '';
          if(preg_match('/transfer\-(en)?coding:\s+chunked\r\n/i',$r_header)){
              do {
                  unset($chunk_size);
                  do {
                      if(feof($socket)){
                          $this->error = 'Premature End of File (socket)';
                          return false;
                      }
                      if(time()-$start > $this->timeout){
                          $this->status = -100;
                          $this->error = 'Timeout while reading chunk';
                          return false;
                      }
                      $byte = fread($socket,1);
                      $chunk_size .= $byte;
                  } while (preg_match('/[a-zA-Z0-9]/',$byte)); // read chunksize including \r
  
                  $byte = fread($socket,1);     // readtrailing \n
                  $chunk_size = hexdec($chunk_size);
                  $this_chunk = fread($socket,$chunk_size);
                  $r_body    .= $this_chunk;
                  if ($chunk_size) $byte = fread($socket,2); // read trailing \r\n
  
                  if($this->max_bodysize && strlen($r_body) > $this->max_bodysize){
                      $this->error = 'Allowed response size exceeded';
                      return false;
                  }
              } while ($chunk_size);
          }else{
              // read entire socket
              while (!feof($socket)) {
                  if(time()-$start > $this->timeout){
                      $this->status = -100;
                      $this->error = 'Timeout while reading response';
                      return false;
                  }
                  $r_body .= fread($socket,4096);
                  if($this->max_bodysize && strlen($r_body) > $this->max_bodysize){
                      $this->error = 'Allowed response size exceeded';
                      return false;
                  }
              }
          }
  
          // close socket
          $status = socket_get_status($socket);
          fclose($socket);
  
          $this->_debug('response headers',$r_headers);
  
          // get Status
          if (!preg_match('/^HTTP\/(\d\.\d)\s*(\d+).*?\n/', $r_headers, $m)) {
              $this->error = 'Server returned bad answer';
              return false;
          }
          $this->status = $m[2];
  
          // handle headers and cookies
          $this->resp_headers = $this->_parseHeaders($r_headers);
          if(isset($this->resp_headers['set-cookie'])){
              foreach ($this->resp_headers['set-cookie'] as $c){
                  list($key, $value, $foo) = split('=', $cookie);
                  $this->cookies[$key] = $value;
              }
          }
  
          $this->_debug('Object headers',$this->resp_headers);
  
          // check server status code to follow redirect
          if($this->status == 301 || $this->status == 302 ){
              if (empty($this->resp_headers['location'])){
                  $this->error = 'Redirect but no Location Header found';
                  return false;
              }elseif($this->redirect_count == $this->max_redirect){
                  $this->error = 'Maximum number of redirects exceeded';
                  return false;
              }else{
                  $this->redirect_count++;
                  $this->referer = $url;
                  if (!preg_match('/^http/i', $this->resp_headers['location'])){
                      $this->resp_headers['location'] = $uri['scheme'].'://'.$uri['host'].
                                                        $this->resp_headers['location'];
                  }
                  // perform redirected request, always via GET (required by RFC)
                  return $this->sendRequest($this->resp_headers['location'],array(),'GET');
              }
          }
  
          // decode gzip if needed
          if($this->resp_headers['content-encoding'] == 'gzip'){
              $this->resp_body = gzinflate(substr($r_body, 10));
          }else{
              $this->resp_body = $r_body;
          }
  
          $this->_debug('response body',$this->resp_body);
          $this->redirect_count = 0;
          return true;
      }
  
      /**
       * print debug info
       *
       * @author Andreas Gohr <andi@splitbrain.org>
       */
      function _debug($info,$var){
          if(!$this->debug) return;
          print '<b>'.$info.'</b><br />';
          ob_start();
          print_r($var);
          $content = htmlspecialchars(ob_get_contents());
          ob_end_clean();
          print '<pre>'.$content.'</pre>';
      }
  
      /**
       * convert given header string to Header array
       *
       * All Keys are lowercased.
       *
       * @author Andreas Gohr <andi@splitbrain.org>
       */
      function _parseHeaders($string){
          $headers = array();
          $lines = explode("\n",$string);
          foreach($lines as $line){
              list($key,$val) = explode(':',$line,2);
              $key = strtolower(trim($key));
              $val = trim($val);
              if(empty($val)) continue;
              if(isset($headers[$key])){
                  if(is_array($headers[$key])){
                      $headers[$key][] = $val;
                  }else{
                      $headers[$key] = array($headers[$key],$val);
                  }
              }else{
                  $headers[$key] = $val;
              }
          }
          return $headers;
      }
  
      /**
       * convert given header array to header string
       *
       * @author Andreas Gohr <andi@splitbrain.org>
       */
      function _buildHeaders($headers){
          $string = '';
          foreach($headers as $key => $value){
              if(empty($value)) continue;
              $string .= $key.': '.$value.HTTP_NL;
          }
          return $string;
      }
  
      /**
       * get cookies as http header string
       *
       * @author Andreas Goetz <cpuidle@gmx.de>
       */
      function _getCookies(){
          foreach ($this->cookies as $key => $val){
              if ($headers) $headers .= '; ';
              $headers .= $key.'='.$val;
          }
  
          if ($headers) $headers = "Cookie: $headers".HTTP_NL;
          return $headers;
      }
  
      /**
       * Encode data for posting
       *
       * @todo handle mixed encoding for file upoads
       * @author Andreas Gohr <andi@splitbrain.org>
       */
      function _postEncode($data){
          foreach($params as $key => $val){
              if($url) $url .= '&';
              $url .= $key.'='.urlencode($val);
          }
          return $url;
      }
  }
  
  //Setup VIM: ex: et ts=4 enc=utf-8 :
  
  
  
  1.1                  moniwiki/lib/openid.php
  
  Index: openid.php
  ===================================================================
  <?php
  /*
  	FREE TO USE
  	Simple OpenID PHP Class
  	Contributed by http://www.fivestores.com/
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  
  This Class was written to make easy for you to integrate OpenID on your website. 
  This is just a client, which checks for user's identity. This Class Requires CURL Module.
  It should be easy to use some other HTTP Request Method, but remember, often OpenID servers
  are using SSL.
  We need to be able to perform SSL Verification on the background to check for valid signature.
  
  */
  
  class SimpleOpenID{
  	var $openid_url_identity;
  	var $URLs = array();
  	var $error = array();
  	var $fields = array();
  	var $_user_agent_ = "Simple OpenID PHP Class";
  	var $_request = 'CURL_Request';
  	
  	function SimpleOpenID() {
  		if (!function_exists('curl_exec')) {
  			require_once('HTTPClient.php');
  			$this->_request='HTTP_Request';
          		$this->HTTP = new HTTPClient();
  		}
  	}
  	function SetOpenIDServer($a) {
  		$this->URLs['openid_server'] = $a;
  	}
  	function SetTrustRoot($a) {
  		$this->URLs['trust_root'] = $a;
  	}
  	function SetCancelURL($a) {
  		$this->URLs['cancel'] = $a;
  	}
  	function SetApprovedURL($a) {
  		$this->URLs['approved'] = $a;
  	}
  	function SetRequiredFields($a) {
  		if (is_array($a)) {
  			$this->fields['required'] = $a;
  		} else {
  			$this->fields['required'][] = $a;
  		}
  	}
  	function SetOptionalFields($a) {
  		if (is_array($a)) {
  			$this->fields['optional'] = $a;
  		} else {
  			$this->fields['optional'][] = $a;
  		}
  	}
  	function SetIdentity($a) { 	// Set Identity URL
   			if(strpos($a, 'http://') === false) {
  		 		$a = 'http://'.$a;
  		 	}
  			/*
  			$u = parse_url(trim($a));
  			if (!isset($u['path'])) {
  				$u['path'] = '/';
  			}else if(substr($u['path'],-1,1) == '/') {
  				$u['path'] = substr($u['path'], 0, strlen($u['path'])-1);
  			}
  			if (isset($u['query'])) { // If there is a query string, then use identity as is
  				$identity = $a;
  			} else {
  				$identity = $u['scheme'] . '://' . $u['host'] . $u['path'];
  			}*/
  			$this->openid_url_identity = $a;
  	}
  	function GetIdentity() { 	// Get Identity
  		return $this->openid_url_identity;
  	}
  	function GetError() {
  		$e = $this->error;
  		return array('code'=>$e[0],'description'=>$e[1]);
  	}
  
  	function ErrorStore($code, $desc = null) {
  		$errs['OPENID_NOSERVERSFOUND'] = 'Cannot find OpenID Server TAG on Identity page.';
  		if ($desc == null) {
  			$desc = $errs[$code];
  		}
  	   	$this->error = array($code,$desc);
  	}
  
  	function IsError() {
  		if (count($this->error) > 0) {
  			return true;
  		} else {
  			return false;
  		}
  	}
  	
  	function splitResponse($response) {
  		$r = array();
  		$response = explode("\n", $response);
  		foreach($response as $line) {
  			$line = trim($line);
  			if ($line != "") {
  				list($key, $value) = explode(":", $line, 2);
  				$r[trim($key)] = trim($value);
  			}
  		}
  	 	return $r;
  	}
  	
  	function OpenID_Standarize($openid_identity) {
  		$u = parse_url(strtolower(trim($openid_identity)));
  		if ($u['path'] == '/') {
  			$u['path'] = '';
  		}
  		if(substr($u['path'],-1,1) == '/') {
  			$u['path'] = substr($u['path'], 0, strlen($u['path'])-1);
  		}
  		if (isset($u['query'])) { // If there is a query string, then use identity as is
  			return $u['host'] . $u['path'] . '?' . $u['query'];
  		} else {
  			return $u['host'] . $u['path'];
  		}
  	}
  	
  	function array2url($arr) { // converts associated array to URL Query String
  		if (!is_array($arr)) {
  			return false;
  		}
  		foreach($arr as $key => $value) {
  			$query .= $key . "=" . $value . "&";
  		}
  		return $query;
  	}
  	function FSOCK_Request($url, $method="GET", $params = "") {
  		$fp = fsockopen("ssl://www.myopenid.com", 443, $errno, $errstr, 3); // Connection timeout is 3 seconds
  		if (!$fp) {
  			$this->ErrorStore('OPENID_SOCKETERROR', $errstr);
  		   	return false;
  		} else {
  			$request = $method . " /server HTTP/1.0\r\n";
  			$request .= "User-Agent: " . $this->_user_agent_ . "\r\n";
  			$request .= "Connection: close\r\n\r\n";
  		   	fwrite($fp, $request);
  		   	stream_set_timeout($fp, 4); // Connection response timeout is 4 seconds
  		   	$res = fread($fp, 2000);
  		   	$info = stream_get_meta_data($fp);
  		   	fclose($fp);
  		
  		   	if ($info['timed_out']) {
  				$this->ErrorStore('OPENID_SOCKETTIMEOUT');
  		   	} else {
  		      	return $res;
  		   	}
  		}
  	}
  
  	function HTTP_Request($url, $method="GET", $params = "") { // Remember, SSL MUST BE SUPPORTED
  		if ($method == "GET") {
  			if (is_array($params)) $params = $this->array2url($params);
          		$respanse = $this->HTTP->get($url . ($params ? '?' . $params:''));
  		} else if ($method == 'POST') {
          		$respanse = $this->HTTP->post($url, $params);
  		}
  		if (!$response) {
  			$this->ErrorStore('OPENID_HTTP', 'HTTP Error: '.$this->HTTP->error);
  		}
  		return $response;
  	}
  
  	function CURL_Request($url, $method="GET", $params = "") { // Remember, SSL MUST BE SUPPORTED
  		if (is_array($params)) $params = $this->array2url($params);
  		$curl = curl_init($url . ($method == "GET" && $params != "" ? "?" . $params : ""));
  		curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
  		curl_setopt($curl, CURLOPT_HEADER, false);
  		curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  		curl_setopt($curl, CURLOPT_HTTPGET, ($method == "GET"));
  		curl_setopt($curl, CURLOPT_POST, ($method == "POST"));
  		if ($method == "POST") curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
  		curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  		$response = curl_exec($curl);
  		
  		if (curl_errno($curl) == 0) {
  			$response;
  		} else {
  			$this->ErrorStore('OPENID_CURL', curl_error($curl));
  		}
  		return $response;
  	}
  	
  	function HTML2OpenIDServer($content) {
  		$get = array();
  		// Get details of their OpenID server and (optional) delegate
  		preg_match_all('/<link[^>]*rel="openid.server"[^>]*href="([^"]+)"[^>]*\/?>/i', $content, $matches1);
  		preg_match_all('/<link[^>]*href="([^"]+)"[^>]*rel="openid.server"[^>]*\/?>/i', $content, $matches2);
  		$servers = array_merge($matches1[1], $matches2[1]);
  		
  		preg_match_all('/<link[^>]*rel="openid.delegate"[^>]*href="([^"]+)"[^>]*\/?>/i', $content, $matches1);
  		
  		preg_match_all('/<link[^>]*href="([^"]+)"[^>]*rel="openid.delegate"[^>]*\/?>/i', $content, $matches2);
  		
  		$delegates = array_merge($matches1[1], $matches2[1]);
  		
  		$ret = array($servers, $delegates);
  		return $ret;
  	}
  	
  	function GetOpenIDServer() {
  		#$response = $this->Request($this->openid_url_identity);
            	call_user_func(array(&$this,$this->_request),$this->openid_url_identity);
  		list($servers, $delegates) = $this->HTML2OpenIDServer($response);
  		if (count($servers) == 0) {
  			$this->ErrorStore('OPENID_NOSERVERSFOUND');
  			return false;
  		}
  		if ($delegates[0] != "") {
  			$this->openid_url_identity = $delegates[0];
  		}
  		$this->SetOpenIDServer($servers[0]);
  		return $servers[0];
  	}
  	
  	function GetRedirectURL() {
  		$params = array();
  		$params['openid.return_to'] = urlencode($this->URLs['approved']);
  		$params['openid.mode'] = 'checkid_setup';
  		$params['openid.identity'] = urlencode($this->openid_url_identity);
  		$params['openid.trust_root'] = urlencode($this->URLs['trust_root']);
  		
  		if (count($this->fields['required']) > 0) {
  			$params['openid.sreg.required'] = implode(',',$this->fields['required']);
  		}
  		if (count($this->fields['optional']) > 0) {
  			$params['openid.sreg.optional'] = implode(',',$this->fields['optional']);
  		}
  		return $this->URLs['openid_server'] . "?". $this->array2url($params);
  	}
  	
  	function Redirect() {
  		$redirect_to = $this->GetRedirectURL();
  		if (headers_sent()) { // Use JavaScript to redirect if content has been previously sent (not recommended, but safe)
  			echo '<script language="JavaScript" type="text/javascript">window.location=\'';
  			echo $redirect_to;
  			echo '\';</script>';
  		} else {	// Default Header Redirect
  			header('Location: ' . $redirect_to);
  		}
  	}
  	
  	function ValidateWithServer() {
  		$params = array(
  			'openid.assoc_handle' => urlencode($_GET['openid_assoc_handle']),
  			'openid.signed' => urlencode($_GET['openid_signed']),
  			'openid.sig' => urlencode($_GET['openid_sig'])
  		);
  		// Send only required parameters to confirm validity
  		$arr_signed = explode(",",str_replace('sreg.','sreg_',$_GET['openid_signed']));
  		for ($i=0; $i<count($arr_signed); $i++) {
  			$s = str_replace('sreg_','sreg.', $arr_signed[$i]);
  			$c = $_GET['openid_' . $arr_signed[$i]];
  			// if ($c != "") {
  				$params['openid.' . $s] = urlencode($c);
  			// }
  		}
  		$params['openid.mode'] = "check_authentication";
  		// print "<pre>";
  		// print_r($_GET);
  		// print_r($params);
  		// print "</pre>";
  		$openid_server = $this->GetOpenIDServer();
  		if ($openid_server == false) {
  			return false;
  		}
  		#$response = $this->Request($openid_server,'GET',$params);
            	call_user_func(array(&$this,$this->_request),$openid_server,'GET',$params);
  		$data = $this->splitResponse($response);
  		if ($data['is_valid'] == "true") {
  			return true;
  		} else {
  			return false;
  		}
  	}
  }
  
  ?>
  
  
  


wkpark      2007/11/19 00:14:34

  Modified:    .        wikilib.php
  Log:
  add openid support
  
  Revision  Changes    Path
  1.227     +36 -12    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.226
  retrieving revision 1.227
  diff -u -r1.226 -r1.227
  --- wikilib.php	19 Oct 2007 03:46:05 -0000	1.226
  +++ wikilib.php	18 Nov 2007 15:14:34 -0000	1.227
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.226 2007/10/19 03:46:05 wkpark Exp $
  +// $Id: wikilib.php,v 1.227 2007/11/18 15:14:34 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1883,24 +1883,47 @@
     } else {
       $idform=$user->id;
     }
  +
     $button=_("Login");
  +  $openid_btn=_("OpenID");
  +  if ($DBInfo->use_openid) {
  +    $openid_form=<<<OPENID
  +  <tr>
  +    <th>OpenID</th>
  +    <td>
  +      <input type="text" name="openid_url" value="" style="background:url(http://www.myopenid.com/static/openid-icon-small.gif) no-repeat scroll 3px 2px; padding: 2px 2px 2px 28px;" />
  +      <input type="hidden" name="login_with_openid" value="1" />
  +	    <input type="submit" name="login" value="$button" /> &nbsp;
  +    </td>
  +  </tr>
  +OPENID;
  +    }
     $id_btn=_("ID");
  -  if ($user->id == 'Anonymous' and !isset($options['login_id']) and $value!="simple")
  -    $login=<<<FORM
  -<form method="post" action="$url"$onsubmit>
  -<input type="hidden" name="action" value="userform" />
  -<table border="0">
  -  <tr><td><b>$id_btn</b>&nbsp;</td><td>$idform</td></tr>
  +  if ($user->id == 'Anonymous' and !isset($options['login_id']) and $value!="simple") {
  +    if (isset($openid_form) and $value != 'openid') $sep="<tr><td colspan='2'><hr></td></tr>\n";
  +    if ($value != 'openid')
  +      $default_form=<<<MYFORM
  +  <tr><th>$id_btn&nbsp;</th><td>$idform</td></tr>
     <tr>
  -     <td><b>$passwd_btn</b>&nbsp;</td><td><input type="password" size="15" maxlength="$pw_len" name="password" value="" /></td>
  +     <th>$passwd_btn&nbsp;</th><td><input type="password" size="15" maxlength="$pw_len" name="password" value="" /></td>
     <tr><td></td><td>
       $passwd_hidden
       <input type="submit" name="login" value="$button" /> &nbsp;
     </td></tr>
  +MYFORM;
  +    $login=<<<FORM
  +<form method="post" action="$url"$onsubmit>
  +<input type="hidden" name="action" value="userform" />
  +<table border="0">
  +$openid_form
  +$sep
  +$default_form
   </table>
   </form>
   <hr />
   FORM;
  +    $openid_form='';
  +  }
   
     if ($user->id == 'Anonymous') {
       if (isset($options['login_id']) or $_GET['join'] or $value!="simple") {
  @@ -1911,7 +1934,7 @@
         }
         $mailbtn=_("Mail");
         $extra=<<<EXTRA
  -  <tr><td><b>$mailbtn</b>&nbsp;</td><td><input type="text" size="40" name="email" value="$email" /></td></tr>
  +  <tr><th>$mailbtn&nbsp;</th><td><input type="text" size="40" name="email" value="$email" /></td></tr>
   EXTRA;
         if (!$use_any and $DBInfo->use_ticket) {
           $seed=md5(base64_encode(time()));
  @@ -1950,8 +1973,8 @@
       $email_btn=_("Mail");
       $tz_btn=_("Time Zone");
       $extra=<<<EXTRA
  -  <tr><td><b>$email_btn</b>&nbsp;</td><td><input type="text" size="40" name="email" value="$email" /></td></tr>
  -  <tr><td><b>$tz_btn</b>&nbsp;</td><td><select name="timezone">
  +  <tr><th>$email_btn&nbsp;</th><td><input type="text" size="40" name="email" value="$email" /></td></tr>
  +  <tr><th>$tz_btn&nbsp;</th><td><select name="timezone">
     $opts
     </select> <input type='button' value='Local timezone' onclick='javascript:setTimezone()' /></td></tr>
     <tr><td><b>CSS URL </b>&nbsp;</td><td><input type="text" size="40" name="user_css" value="$css" /><br />("None" for disabling CSS)</td></tr>
  @@ -1991,7 +2014,8 @@
   <form method="post" action="$url"$onsubmit>
   <input type="hidden" name="action" value="userform" />
   <table border="0">
  -  <tr><td><b>$id_btn</b>&nbsp;</td><td>$idform</td></tr>
  +$openid_form
  +  <tr><th>$id_btn&nbsp;</th><td>$idform</td></tr>
       $passwd_inp
       $passwd_hidden
       $again
  
  
  


wkpark      2007/11/19 00:52:23

  Modified:    plugin   userform.php
  Log:
  try to support openid.
  
  Revision  Changes    Path
  1.20      +52 -2     moniwiki/plugin/userform.php
  
  Index: userform.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/userform.php,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- userform.php	13 Oct 2007 00:25:53 -0000	1.19
  +++ userform.php	18 Nov 2007 15:52:23 -0000	1.20
  @@ -4,7 +4,7 @@
   // a userform action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: userform.php,v 1.19 2007/10/13 00:25:53 wkpark Exp $
  +// $Id: userform.php,v 1.20 2007/11/18 15:52:23 wkpark Exp $
   
   function do_userform($formatter,$options) {
     global $DBInfo;
  @@ -60,7 +60,7 @@
       return '';
     }
   
  -  if ($user->id == "Anonymous" and isset($options['id']) and isset($options['password']) and !isset($options['passwordagain'])) {
  +  if ($user->id == "Anonymous" and !empty($options['login_id']) and isset($options['password']) and !isset($options['passwordagain'])) {
       # login
       $userdb=new UserDB($DBInfo);
       if ($userdb->_exists($id)) {
  @@ -350,6 +350,56 @@
       #$options['css_url']=$options['user_css'];
       if (!isset($options['msg']))
         $options['msg']=_("Profiles are saved successfully !");
  +  } else if ($user->id == "Anonymous" and isset($options['openid_url'])) {
  +    # login with openid
  +    include_once('lib/openid.php');      
  +    session_start();
  +
  +    $process_url = qualifiedUrl($formatter->link_url("UserPreferences", "?action=userform"));
  +    $trust_root = qualifiedUrl($formatter->link_url(""));
  +
  +    $openid = new SimpleOpenID;
  +	  $openid->SetIdentity($options['openid_url']);
  +	  $openid->SetTrustRoot($trust_root);
  +	  $openid->SetRequiredFields(array('wikiname','email','fullname'));
  +	  $openid->SetOptionalFields(array('language','timezone'));
  +
  +	  if ($openid->GetOpenIDServer()){
  +		  $openid->SetApprovedURL($process_url);  	// Send Response from OpenID server to this script
  +      $openid->Redirect(); 	// This will redirect user to OpenID Server
  +      return;
  +	  } else {
  +		  $error = $openid->GetError();
  +		  #echo "ERROR CODE: " . $error['code'] . "<br>";
  +		  #echo "ERROR DESCRIPTION: " . $error['description'] . "<br>";
  +      $options["msg"] = sprintf(_("Authentication request was failed: %s"),$error['description']);
  +    }
  +  } else if ($options['id_res']) { // OpenID result
  +    include_once('lib/openid.php');      
  +    session_start();
  +
  +    $openid = new SimpleOpenID;
  +	  $openid->SetIdentity($options['openid_identity']);
  +	  $openid_validation_result = $openid->ValidateWithServer();
  +    if ($openid_validation_result == true) { // OK HERE KEY IS VALID
  +      $userdb=new UserDB($DBInfo);
  +      // XXX
  +      if ($userdb->_exists($id)) {
  +              $user=$userdb->getUser($id);
  +              // check openid
  +      } else {
  +         $user->info['tz_offset']=$tz_offset; // XXX
  +         $udb->addUser($user);
  +         $udb->saveUser($user);
  +      }
  +		  $options['msg'] =  _("");
  +	  } else if($openid->IsError() == true) { // ON THE WAY, WE GOT SOME ERROR
  +		  $error = $openid->GetError();
  +      $options["msg"] = sprintf(_("Authentication request was failed: %s"),$error['description']);
  +	  } else {											// Signature Verification Failed
  +      $options["msg"] = _("Invalid OpenID Authentication request");
  +		  echo "INVALID AUTHORIZATION";
  +	  }
     }
   
     $myrefresh='';
  
  
  


wkpark      2007/11/19 01:08:50

  Modified:    lib      openid.php
  Log:
  oops!
  
  Revision  Changes    Path
  1.2       +2 -2      moniwiki/lib/openid.php
  
  Index: openid.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/openid.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- openid.php	18 Nov 2007 15:13:32 -0000	1.1
  +++ openid.php	18 Nov 2007 16:08:50 -0000	1.2
  @@ -208,7 +208,7 @@
   	
   	function GetOpenIDServer() {
   		#$response = $this->Request($this->openid_url_identity);
  -          	call_user_func(array(&$this,$this->_request),$this->openid_url_identity);
  +          	$response = call_user_func(array(&$this,$this->_request),$this->openid_url_identity);
   		list($servers, $delegates) = $this->HTML2OpenIDServer($response);
   		if (count($servers) == 0) {
   			$this->ErrorStore('OPENID_NOSERVERSFOUND');
  @@ -273,7 +273,7 @@
   			return false;
   		}
   		#$response = $this->Request($openid_server,'GET',$params);
  -          	call_user_func(array(&$this,$this->_request),$openid_server,'GET',$params);
  +          	$response = call_user_func(array(&$this,$this->_request),$openid_server,'GET',$params);
   		$data = $this->splitResponse($response);
   		if ($data['is_valid'] == "true") {
   			return true;
  
  
  


wkpark      2007/11/19 01:56:47

  Modified:    .        wikilib.php
  Log:
  fixed UserDB and openid fixes
  
  Revision  Changes    Path
  1.228     +16 -8     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.227
  retrieving revision 1.228
  diff -u -r1.227 -r1.228
  --- wikilib.php	18 Nov 2007 15:14:34 -0000	1.227
  +++ wikilib.php	18 Nov 2007 16:56:47 -0000	1.228
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.227 2007/11/18 15:14:34 wkpark Exp $
  +// $Id: wikilib.php,v 1.228 2007/11/18 16:56:47 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -338,6 +338,14 @@
       $this->user_dir=$WikiDB->data_dir.'/user';
     }
   
  +  function _id_to_key($id) {
  +    return preg_replace("/([^a-z0-9]{1})/ie","'_'.strtolower(dechex(ord(substr('\\1',-1))))",$id);
  +  }
  +
  +  function _key_to_id($key) {
  +    return rawurldecode(strtr($key,'_','%'));
  +  }
  +
     function getUserList() {
       if ($this->users) return $this->users;
   
  @@ -347,7 +355,7 @@
         if (is_dir($this->user_dir."/".$file)) continue;
         if (preg_match('/^wu\-([^\.]+)$/', $file,$match))
           #$users[$match[1]] = 1;
  -        $users[] = $match[1];
  +        $users[] = $this->_key_to_id($match[1]);
       }
       closedir($handle);
       $this->users=$users;
  @@ -379,7 +387,7 @@
   
     function saveUser($user) {
       $config=array("css_url","datatime_fmt","email","bookmark","language",
  -                  "name","password","wikiname_add_spaces","subscribed_pages",
  +                  "name","nick","password","wikiname_add_spaces","subscribed_pages",
                     "scrapped_pages","quicklinks","theme","ticket","eticket",
   	  	  "tz_offset","npassword","nticket");
   
  @@ -396,13 +404,13 @@
   
       #print $data;
   
  -    $fp=fopen($this->user_dir."/wu-".$user->id,"w+");
  +    $fp=fopen($this->user_dir."/wu-".$this->_id_to_key($user->id),"w+");
       fwrite($fp,$data);
       fclose($fp);
     }
   
     function _exists($id) {
  -    if (file_exists("$this->user_dir/wu-$id"))
  +    if (file_exists("$this->user_dir/wu-" . $this->_id_to_key($id)))
         return true;
       return false;
     }
  @@ -419,7 +427,7 @@
   
     function getUser($id) {
       if ($this->_exists($id)) {
  -       $data=file("$this->user_dir/wu-$id");
  +       $data=file("$this->user_dir/wu-" . $this->_id_to_key($id));
       } else {
          $user=new User('Anonymous');
          return $user;
  @@ -441,7 +449,7 @@
   
     function delUser($id) {
       if ($this->_exists($id)) {
  -       unlink("$this->user_dir/wu-$id");
  +       unlink("$this->user_dir/wu-". $this->_id_to_key($id));
       }
     }
   }
  @@ -1886,7 +1894,7 @@
   
     $button=_("Login");
     $openid_btn=_("OpenID");
  -  if ($DBInfo->use_openid) {
  +  if ($user->id == 'Anonymous' && $DBInfo->use_openid) {
       $openid_form=<<<OPENID
     <tr>
       <th>OpenID</th>
  
  
  


wkpark      2007/11/19 02:29:34

  Modified:    .        wikilib.php
  Log:
  openid fixes
  
  Revision  Changes    Path
  1.229     +2 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.228
  retrieving revision 1.229
  diff -u -r1.228 -r1.229
  --- wikilib.php	18 Nov 2007 16:56:47 -0000	1.228
  +++ wikilib.php	18 Nov 2007 17:29:34 -0000	1.229
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.228 2007/11/18 16:56:47 wkpark Exp $
  +// $Id: wikilib.php,v 1.229 2007/11/18 17:29:34 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -527,7 +527,7 @@
     }
   
     function checkID($id) {
  -     $SPECIAL='\\,\.;:\-_#\+\*\?!"\'\?%&\/\(\)\[\]\{\}\=';
  +     $SPECIAL='\\,;\$\|~`#\+\*\?!"\'\?%&\(\)\[\]\{\}\=';
        preg_match("/[$SPECIAL]/",$id,$match);
        if (!$id || $match)
           return false;
  @@ -1900,7 +1900,6 @@
       <th>OpenID</th>
       <td>
         <input type="text" name="openid_url" value="" style="background:url(http://www.myopenid.com/static/openid-icon-small.gif) no-repeat scroll 3px 2px; padding: 2px 2px 2px 28px;" />
  -      <input type="hidden" name="login_with_openid" value="1" />
   	    <input type="submit" name="login" value="$button" /> &nbsp;
       </td>
     </tr>
  
  
  


wkpark      2007/11/19 03:17:12

  Modified:    plugin   userform.php
  Log:
  more fixes
  
  Revision  Changes    Path
  1.21      +23 -11    moniwiki/plugin/userform.php
  
  Index: userform.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/userform.php,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- userform.php	18 Nov 2007 15:52:23 -0000	1.20
  +++ userform.php	18 Nov 2007 18:17:12 -0000	1.21
  @@ -4,7 +4,7 @@
   // a userform action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: userform.php,v 1.20 2007/11/18 15:52:23 wkpark Exp $
  +// $Id: userform.php,v 1.21 2007/11/18 18:17:12 wkpark Exp $
   
   function do_userform($formatter,$options) {
     global $DBInfo;
  @@ -210,7 +210,7 @@
         $ok_ticket=1;
       }
       $id=$user->getID($options['login_id']);
  -    $user->setID($id);
  +    if (!preg_match("/\//",$id)) $user->setID($id); // protect http:// style id
   
       if ($ok_ticket and $user->id != "Anonymous") {
          if ($DBInfo->use_safelogin) {
  @@ -361,7 +361,7 @@
       $openid = new SimpleOpenID;
   	  $openid->SetIdentity($options['openid_url']);
   	  $openid->SetTrustRoot($trust_root);
  -	  $openid->SetRequiredFields(array('wikiname','email','fullname'));
  +	  $openid->SetRequiredFields(array('nickname','email','fullname'));
   	  $openid->SetOptionalFields(array('language','timezone'));
   
   	  if ($openid->GetOpenIDServer()){
  @@ -374,7 +374,7 @@
   		  #echo "ERROR DESCRIPTION: " . $error['description'] . "<br>";
         $options["msg"] = sprintf(_("Authentication request was failed: %s"),$error['description']);
       }
  -  } else if ($options['id_res']) { // OpenID result
  +  } else if ($options['openid_mode']=='id_res') { // OpenID result
       include_once('lib/openid.php');      
       session_start();
   
  @@ -384,15 +384,27 @@
       if ($openid_validation_result == true) { // OK HERE KEY IS VALID
         $userdb=new UserDB($DBInfo);
         // XXX
  -      if ($userdb->_exists($id)) {
  -              $user=$userdb->getUser($id);
  -              // check openid
  +      $user->setID($options['openid_identity']); // XXX
  +      if ($userdb->_exists($options['openid_identity'])) {
  +        $user=$userdb->getUser($options['openid_identity']);
  +        $user->info['email']=$options['openid_sreg_email'];
  +        $user->info['idtype']='openid';
  +        $userdb->saveUser($user); // always save
  +        $options['msg'].= sprintf(_("Successfully login as '%s' via OpenID."),$options['openid_identity']);
  +        $formatter->header($user->setCookie());
         } else {
  -         $user->info['tz_offset']=$tz_offset; // XXX
  -         $udb->addUser($user);
  -         $udb->saveUser($user);
  +        //$user->info['tz_offset']=$options['openid_timezone']; // XXX
  +        //$user->info['tz_offset']=$options['openid_language']; // XXX
  +        //$user->info['nick']=$options['openid_nickname']; // XXX
  +        $user->info['email']=$options['openid_sreg_email'];
  +        $user->info['idtype']='openid';
  +        $userdb->addUser($user);
  +        $formatter->header($user->setCookie());
  +        $userdb->saveUser($user);
  +        $options["msg"] =
  +          sprintf(_("OpenID Authentication successful and saved as %s."),$options['openid_identity']);
         }
  -		  $options['msg'] =  _("");
  +      $options['id']=$user->id;
   	  } else if($openid->IsError() == true) { // ON THE WAY, WE GOT SOME ERROR
   		  $error = $openid->GetError();
         $options["msg"] = sprintf(_("Authentication request was failed: %s"),$error['description']);
  
  
  


wkpark      2007/11/19 03:17:28

  Modified:    .        wikilib.php
  Log:
  openid fixes
  
  Revision  Changes    Path
  1.230     +9 -4      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.229
  retrieving revision 1.230
  diff -u -r1.229 -r1.230
  --- wikilib.php	18 Nov 2007 17:29:34 -0000	1.229
  +++ wikilib.php	18 Nov 2007 18:17:28 -0000	1.230
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.229 2007/11/18 17:29:34 wkpark Exp $
  +// $Id: wikilib.php,v 1.230 2007/11/18 18:17:28 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -389,7 +389,7 @@
       $config=array("css_url","datatime_fmt","email","bookmark","language",
                     "name","nick","password","wikiname_add_spaces","subscribed_pages",
                     "scrapped_pages","quicklinks","theme","ticket","eticket",
  -	  	  "tz_offset","npassword","nticket");
  +	  	  "tz_offset","npassword","nticket","idtype");
   
       $date=gmdate('Y/m/d', time());
       $data="# Data saved $date\n";
  @@ -460,7 +460,8 @@
           $this->setID($id);
           return;
        }
  -     list($this->ticket,$id)=explode(".",$_COOKIE['MONI_ID'],2);
  +     $this->ticket=substr($_COOKIE['MONI_ID'],0,32);
  +     $id=substr($_COOKIE['MONI_ID'],33);
   
        $this->setID($id);
        $this->css=isset($_COOKIE['MONI_CSS']) ? $_COOKIE['MONI_CSS']:'';
  @@ -1959,7 +1960,10 @@
       $css=$user->info['css_url'];
       $email=$user->info['email'];
       $tz_offset=$user->info['tz_offset'];
  -    $again="<b>"._("New password")."</b>&nbsp;<input type='password' size='15' maxlength='$pw_len' name='passwordagain' value='' /></td></tr>";
  +    if ($user->info['password'])
  +      $again="<b>"._("New password")."</b>&nbsp;<input type='password' size='15' maxlength='$pw_len' name='passwordagain' value='' /></td></tr>";
  +    else
  +      $again='';
   
       $tz_off=date('Z');
       for ($i=-47;$i<=47;$i++) {
  @@ -1998,6 +2002,7 @@
   EOF;
   
     if (!$DBInfo->use_safelogin or $button==_("Save")) {
  +    if ($user->info['password'])
       $passwd_inp=<<<PASS
     <tr>
        <td><b>$passwd_btn</b>&nbsp;</td><td><input type="password" size="15" maxlength="$pw_len" name="password" value="$passwd" />
  
  
  


wkpark      2007/11/19 17:18:38

  Modified:    .        wikilib.php wiki.php
  Log:
  openid fixes
  
  Revision  Changes    Path
  1.231     +21 -5     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.230
  retrieving revision 1.231
  diff -u -r1.230 -r1.231
  --- wikilib.php	18 Nov 2007 18:17:28 -0000	1.230
  +++ wikilib.php	19 Nov 2007 08:18:38 -0000	1.231
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.230 2007/11/18 18:17:28 wkpark Exp $
  +// $Id: wikilib.php,v 1.231 2007/11/19 08:18:38 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -469,6 +469,7 @@
        $this->bookmark=isset($_COOKIE['MONI_BOOKMARK']) ? $_COOKIE['MONI_BOOKMARK']:'';
        $this->trail=isset($_COOKIE['MONI_TRAIL']) ? _stripslashes($_COOKIE['MONI_TRAIL']):'';
        $this->tz_offset=isset($_COOKIE['MONI_TZ']) ?_stripslashes($_COOKIE['MONI_TZ']):'';
  +     $this->nick=isset($_COOKIE['MONI_NICK']) ?_stripslashes($_COOKIE['MONI_NICK']):'';
        if ($this->tz_offset =='') $this->tz_offset=date('Z');
     }
   
  @@ -497,6 +498,7 @@
        $this->ticket=$ticket;
        # set the fake cookie
        $_COOKIE['MONI_ID']=$ticket.'.'.$this->id;
  +     if ($this->info['nick']) $_COOKIE['MONI_NICK']=$this->info['nick'];
   
        $path=strpos($_SERVER['HTTP_USER_AGENT'],'Safari')===false ?
          get_scriptname():'/';
  @@ -1891,6 +1893,9 @@
         $idform="<input type='text' size='20' name='login_id' value='' />";
     } else {
       $idform=$user->id;
  +    if ($user->info['idtype']=='openid')
  +      $idform='<img src="http://www.myopenid.com/static/openid-icon-small.gif" alt="OpenID:" style="vertical-align:middle" />'.
  +      '<a href="$idform">'.$idform.'</a>';
     }
   
     $button=_("Login");
  @@ -1907,8 +1912,9 @@
   OPENID;
       }
     $id_btn=_("ID");
  +  $sep="<tr><td colspan='2'><hr></td></tr>\n";
     if ($user->id == 'Anonymous' and !isset($options['login_id']) and $value!="simple") {
  -    if (isset($openid_form) and $value != 'openid') $sep="<tr><td colspan='2'><hr></td></tr>\n";
  +    if (isset($openid_form) and $value != 'openid') $sep0=$sep;
       if ($value != 'openid')
         $default_form=<<<MYFORM
     <tr><th>$id_btn&nbsp;</th><td>$idform</td></tr>
  @@ -1924,11 +1930,10 @@
   <input type="hidden" name="action" value="userform" />
   <table border="0">
   $openid_form
  -$sep
  +$sep0
   $default_form
   </table>
   </form>
  -<hr />
   FORM;
       $openid_form='';
     }
  @@ -1959,12 +1964,20 @@
       $button=_("Save");
       $css=$user->info['css_url'];
       $email=$user->info['email'];
  +    $nick=$user->info['nick'];
       $tz_offset=$user->info['tz_offset'];
       if ($user->info['password'])
         $again="<b>"._("New password")."</b>&nbsp;<input type='password' size='15' maxlength='$pw_len' name='passwordagain' value='' /></td></tr>";
       else
         $again='';
   
  +    if ($nick) {
  +      $nick_btn=_("Nickname");
  +      $nick=<<<NICK
  +  <tr><th>$nick_btn&nbsp;</th><td><input type="text" size="40" name="nick" value="$nick" /></td></tr>
  +NICK;
  +    }
  +
       $tz_off=date('Z');
       for ($i=-47;$i<=47;$i++) {
         $val=1800*$i;
  @@ -1984,6 +1997,7 @@
       $email_btn=_("Mail");
       $tz_btn=_("Time Zone");
       $extra=<<<EXTRA
  +$nick
     <tr><th>$email_btn&nbsp;</th><td><input type="text" size="40" name="email" value="$email" /></td></tr>
     <tr><th>$tz_btn&nbsp;</th><td><select name="timezone">
     $opts
  @@ -2002,7 +2016,7 @@
   EOF;
   
     if (!$DBInfo->use_safelogin or $button==_("Save")) {
  -    if ($user->info['password'])
  +    if ($user->id == 'Anonymous' or $user->info['password'])
       $passwd_inp=<<<PASS
     <tr>
        <td><b>$passwd_btn</b>&nbsp;</td><td><input type="password" size="15" maxlength="$pw_len" name="password" value="$passwd" />
  @@ -2020,6 +2034,7 @@
       }
     }
     $id_btn=_("ID");
  +  if ($openid_form) $sep1=$sep;
     return <<<EOF
   $login
   $jscript
  @@ -2027,6 +2042,7 @@
   <input type="hidden" name="action" value="userform" />
   <table border="0">
   $openid_form
  +$sep1
     <tr><th>$id_btn&nbsp;</th><td>$idform</td></tr>
       $passwd_inp
       $passwd_hidden
  
  
  
  1.360     +12 -4     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.359
  retrieving revision 1.360
  diff -u -r1.359 -r1.360
  --- wiki.php	14 Nov 2007 17:16:46 -0000	1.359
  +++ wiki.php	19 Nov 2007 08:18:38 -0000	1.360
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.359 2007/11/14 17:16:46 wkpark Exp $
  +// $Id: wiki.php,v 1.360 2007/11/19 08:18:38 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.359 $',1,-1);
  +$_revision = substr('$Revision: 1.360 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -785,6 +785,7 @@
   
       if ($this->path)
         putenv("PATH=".$this->path);
  +
       if ($this->rcs_user)
         putenv('LOGNAME='.$this->rcs_user);
       if ($this->timezone)
  @@ -1068,7 +1069,7 @@
         $id=$options['name'] ?
           _stripslashes($options['name']):$_SERVER['REMOTE_ADDR'];
       } else {
  -      $id=$options['id'];
  +      $id=$options['nick'] ? $options['nick']:$options['id'];
         if (!preg_match('/([A-Z][a-z0-9]+){2,}/',$id)) $id='['.$id.']';
       }
    
  @@ -1096,6 +1097,13 @@
       $keyname=$this->_getPageKey($page->name);
       $key=$this->text_dir."/$keyname";
   
  +    $myid=$user->id;
  +    if ($user->info['nick']) {
  +      $myid.=' '.$user->info['nick'];
  +      $options['nick']=$user->info['nick'];
  +    }
  +
  +    $options['myid']=$myid;
       $fp=fopen($key,"w");
       if (!$fp)
          return -1;
  @@ -1106,7 +1114,7 @@
       flock($fp,LOCK_UN);
       fclose($fp);
   
  -    $log=$REMOTE_ADDR.';;'.$user->id.';;'.$comment;
  +    $log=$REMOTE_ADDR.';;'.$myid.';;'.$comment;
       if ($this->version_class) {
         $class=getModule('Version',$this->version_class);
         $version=new $class ($this);
  
  
  


wkpark      2007/11/19 17:18:38

  Modified:    plugin   userform.php
  Log:
  openid fixes
  
  Revision  Changes    Path
  1.22      +18 -6     moniwiki/plugin/userform.php
  
  Index: userform.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/userform.php,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- userform.php	18 Nov 2007 18:17:12 -0000	1.21
  +++ userform.php	19 Nov 2007 08:18:38 -0000	1.22
  @@ -4,7 +4,7 @@
   // a userform action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: userform.php,v 1.21 2007/11/18 18:17:12 wkpark Exp $
  +// $Id: userform.php,v 1.22 2007/11/19 08:18:38 wkpark Exp $
   
   function do_userform($formatter,$options) {
     global $DBInfo;
  @@ -346,6 +346,14 @@
           $options['msg']=_("Your email address is not valid");
         }
       }
  +    if ($userinfo->info['idtype']=='openid' and
  +      $options['nick'] and ($options['nick'] != $userinfo->info['nick'])) {
  +      $nick = $userinfo->getID($options['nick']);
  +
  +      // nickname check XXX
  +      if (!$udb->_exists($nick)) $userinfo->info['nick']=$nick;
  +      else $options['msg']=_("Your Nickname already used as ID in this wiki");
  +    }
       $udb->saveUser($userinfo);
       #$options['css_url']=$options['user_css'];
       if (!isset($options['msg']))
  @@ -385,23 +393,27 @@
         $userdb=new UserDB($DBInfo);
         // XXX
         $user->setID($options['openid_identity']); // XXX
  +      if ($options['openid_language']) $user->info['language']=strtolower($options['openid_sreg_language']);
  +      //$user->info['tz_offset']=$options['openid_timezone'];
  +
         if ($userdb->_exists($options['openid_identity'])) {
           $user=$userdb->getUser($options['openid_identity']);
  -        $user->info['email']=$options['openid_sreg_email'];
           $user->info['idtype']='openid';
           $userdb->saveUser($user); // always save
           $options['msg'].= sprintf(_("Successfully login as '%s' via OpenID."),$options['openid_identity']);
           $formatter->header($user->setCookie());
         } else {
  -        //$user->info['tz_offset']=$options['openid_timezone']; // XXX
  -        //$user->info['tz_offset']=$options['openid_language']; // XXX
  -        //$user->info['nick']=$options['openid_nickname']; // XXX
  +        if ($options['openid_sreg_nickname']) {
  +          $nick=$user->getID($options['openid_sreg_nickname']);
  +          if (!$userdb->_exists($nick)) $user->info['nick']=$nick;
  +          else $options['msg']=sprintf(_("Your Nickname %s already used as ID in this Wiki."),$nick);
  +        }
           $user->info['email']=$options['openid_sreg_email'];
           $user->info['idtype']='openid';
           $userdb->addUser($user);
           $formatter->header($user->setCookie());
           $userdb->saveUser($user);
  -        $options["msg"] =
  +        $options["msg"] .=
             sprintf(_("OpenID Authentication successful and saved as %s."),$options['openid_identity']);
         }
         $options['id']=$user->id;
  
  
  


wkpark      2007/11/19 17:40:00

  Modified:    plugin   RecentChanges.php
  Log:
  fix for more generic idtype
  
  Revision  Changes    Path
  1.23      +4 -3      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- RecentChanges.php	1 Jan 2007 08:29:49 -0000	1.22
  +++ RecentChanges.php	19 Nov 2007 08:40:00 -0000	1.23
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.22 2007/01/01 08:29:49 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.23 2007/11/19 08:40:00 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     $options['trail']='';
  @@ -250,8 +250,9 @@
         if ($showhost && $user == 'Anonymous')
           $user= $addr;
         else {
  -        if ($DBInfo->hasPage($user)) {
  -          $user= $formatter->link_tag(_rawurlencode($user),"",$user);
  +        if (strpos($user,' ')!==false) $user= $formatter->link_repl($user);
  +        else if ($DBInfo->hasPage($user)) {
  +          $user= $formatter->link_repl(_rawurlencode($user),"",$user);
           } else
             $user= $user;
         }
  
  
  


wkpark      2007/11/19 17:40:22

  Modified:    .        wiki.php
  Log:
  fix for more generic idtype
  
  Revision  Changes    Path
  1.361     +8 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.360
  retrieving revision 1.361
  diff -u -r1.360 -r1.361
  --- wiki.php	19 Nov 2007 08:18:38 -0000	1.360
  +++ wiki.php	19 Nov 2007 08:40:22 -0000	1.361
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.360 2007/11/19 08:18:38 wkpark Exp $
  +// $Id: wiki.php,v 1.361 2007/11/19 08:40:22 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.360 $',1,-1);
  +$_revision = substr('$Revision: 1.361 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -971,13 +971,18 @@
         $udb=new UserDB($this);
         $udb->checkUser($user);
       }
  +    $myid=$user->id;
  +    if ($user->info['nick']) {
  +      $myid.=' '.$user->info['nick'];
  +      $options['nick']=$user->info['nick'];
  +    }
       $comment=strtr($comment,"\t"," ");
       $fp_editlog = fopen($this->editlog_name, 'a+');
       $time= time();
       if ($this->use_hostname) $host= gethostbyaddr($remote_name);
       else $host= $remote_name;
       $page_name=trim($page_name);
  -    $msg="$page_name\t$remote_name\t$time\t$host\t$user->id\t$comment\t$action\n";
  +    $msg="$page_name\t$remote_name\t$time\t$host\t$myid\t$comment\t$action\n";
       fwrite($fp_editlog, $msg);
       fclose($fp_editlog);
     }
  
  
  


wkpark      2007/11/19 19:35:29

  Modified:    .        wikilib.php
  Log:
  openid fix
  
  Revision  Changes    Path
  1.232     +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.231
  retrieving revision 1.232
  diff -u -r1.231 -r1.232
  --- wikilib.php	19 Nov 2007 08:18:38 -0000	1.231
  +++ wikilib.php	19 Nov 2007 10:35:29 -0000	1.232
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.231 2007/11/19 08:18:38 wkpark Exp $
  +// $Id: wikilib.php,v 1.232 2007/11/19 10:35:29 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1971,7 +1971,7 @@
       else
         $again='';
   
  -    if ($nick) {
  +    if (preg_match("@^https?://@",$user->id)) {
         $nick_btn=_("Nickname");
         $nick=<<<NICK
     <tr><th>$nick_btn&nbsp;</th><td><input type="text" size="40" name="nick" value="$nick" /></td></tr>
  
  
  


wkpark      2007/11/19 19:37:29

  Modified:    plugin   userform.php
  Log:
  use $no_register with the OpenID registration.
  
  Revision  Changes    Path
  1.23      +9 -2      moniwiki/plugin/userform.php
  
  Index: userform.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/userform.php,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- userform.php	19 Nov 2007 08:18:38 -0000	1.22
  +++ userform.php	19 Nov 2007 10:37:29 -0000	1.23
  @@ -4,7 +4,7 @@
   // a userform action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: userform.php,v 1.22 2007/11/19 08:18:38 wkpark Exp $
  +// $Id: userform.php,v 1.23 2007/11/19 10:37:29 wkpark Exp $
   
   function do_userform($formatter,$options) {
     global $DBInfo;
  @@ -347,7 +347,7 @@
         }
       }
       if ($userinfo->info['idtype']=='openid' and
  -      $options['nick'] and ($options['nick'] != $userinfo->info['nick'])) {
  +      isset($options['nick']) and ($options['nick'] != $userinfo->info['nick'])) {
         $nick = $userinfo->getID($options['nick']);
   
         // nickname check XXX
  @@ -403,6 +403,13 @@
           $options['msg'].= sprintf(_("Successfully login as '%s' via OpenID."),$options['openid_identity']);
           $formatter->header($user->setCookie());
         } else {
  +        if ($DBInfo->no_register == 1) {
  +          $options['msg']=_("Fail to register");
  +          $options['err']=_("You are not allowed to register on this wiki");
  +          $options['err'].="\n"._("Please contact WikiMasters");
  +          do_invalid($formatter,$options);
  +          return;
  +        }
           if ($options['openid_sreg_nickname']) {
             $nick=$user->getID($options['openid_sreg_nickname']);
             if (!$userdb->_exists($nick)) $user->info['nick']=$nick;
  
  
  


wkpark      2007/11/20 00:16:23

  Modified:    plugin   Comment.php
  Log:
  support a OneLiner [[Comment(oneliner)]]
  support multiple Comments
  
  Revision  Changes    Path
  1.26      +77 -11    moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- Comment.php	6 Aug 2006 15:54:34 -0000	1.25
  +++ Comment.php	19 Nov 2007 15:16:23 -0000	1.26
  @@ -1,12 +1,12 @@
   <?php
  -// Copyright 2004-2005 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2004-2007 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a Wiki comment plugin for the MoniWiki
   //
   // Usage: [[Comment]], ?action=comment
   //
   //
  -// $Id: Comment.php,v 1.25 2006/08/06 15:54:34 wkpark Exp $
  +// $Id: Comment.php,v 1.26 2007/11/19 15:16:23 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $DBInfo;
  @@ -15,16 +15,18 @@
     if ($value) {
       $args=explode(',',$value);
       if (in_array('usemeta',$args)) $use_meta=1;
  +    if (in_array('oneliner',$args)) $oneliner=1;
     }
   
     if ($options['usemeta'] or $use_meta) {
       $hidden="<input type='hidden' name='usemeta' value=1 />\n";
     }
  -
     if ($options['nocomment']) return '';
  -  #if (!$DBInfo->_isWritable($options['page'])) return '';
     if (!$DBInfo->security->writable($options)) return '';
   
  +  $emid=base64_encode($formatter->mid.',Comment,'.$value);
  +  $mid=$formatter->mid;
  +
     $COLS_MSIE = 80;
     $COLS_OTHER = 85;
     $cols = preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']) ? $COLS_MSIE : $COLS_OTHER;
  @@ -47,28 +49,35 @@
     $url=$formatter->link_url($formatter->page->urlname);
   
   
  -  if ($value)
  -    $hidden.='<input type="hidden" name="comment_id" value="'.$value.'" />';
  +  $hidden.='<input type="hidden" name="comment_id" value="'.$emid.'" />';
     $form = "<form name='editform' method='post' action='$url'>\n";
     if ($use_meta)
       $form.="<a id='add_comment' name='add_comment'></a>";
  -  $form.= <<<FORM
  +
  +  $comment=_("Comment");
  +  $preview_btn=_("Preview");
  +  if ($oneliner) {
  +    $form.=<<<FORM
  +<input class='wiki' size='$cols' name="savetext" value="$savetext" />&nbsp;
  +FORM;
  +  } else {
  +    $preview='<input type="submit" name="button_preview" value="'.$preview_btn.'" />';
  +    $form.= <<<FORM
   <textarea class="wiki" name="savetext"
    rows="$rows" cols="$cols">$savetext</textarea><br />
   FORM;
  +  }
     if ($options['id'] == 'Anonymous')
  -    $sig=_("Username").": <input name='name' value='$options[name]' />";
  +    $sig=_("Username").": <input name='name' value='$options[name]' size='10' />";
     else if (!$use_meta)
       $sig="<input name='nosig' type='checkbox' />"._("Don't add a signature");
  -  $comment=_("Comment");
  -  $preview=_("Preview");
     $form.= <<<FORM2
   $hidden
   $sig
   <input type="hidden" name="action" value="comment" />
   <input type="hidden" name="datestamp" value="$datestamp" />
   <input type="submit" value="$comment" />
  -<input type="submit" name="button_preview" value="$preview" />
  +$preview
   </form>
   FORM2;
   
  @@ -92,6 +101,8 @@
   
     if ($options['usemeta']) $use_meta=1;
   
  +  list($nth,$dum,$v)=explode(',', base64_decode($options['mid']),3);
  +
     $COLS_MSIE = 80;
     $COLS_OTHER = 85;
     $cols = preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']) ? $COLS_MSIE : $COLS_OTHER;
  @@ -178,6 +189,60 @@
         $savetext="----\n$savetext @SIG@\n";
     }
   
  +  if ($options['comment_id']) {
  +    list($nth,$dum,$v)=explode(',', base64_decode($options['comment_id']),3);
  +
  +    if ($v) $check='[['.$dum.'('.$v.')]]';
  +    else $check='[['.$dum.']]';
  +
  +    if (is_numeric($nth)):
  +
  +    $raw=str_replace("\n","\1",$body);
  +    $chunk=preg_split("/({{{.+}}})/U",$raw,-1,PREG_SPLIT_DELIM_CAPTURE);
  +
  +    $nc='';
  +    $k=1;
  +    $i=1;
  +    foreach ($chunk as $c) {
  +        if ($k%2) {
  +            $nc.=$c;
  +        } else {
  +            $nc.="\7".$i."\7";
  +            $blocks[$i]=str_replace("\1","\n",$c);
  +            ++$i;
  +        }
  +        $k++;
  +    }
  +    $nc=str_replace("\1","\n",$nc);
  +    $chunk=preg_split('/((?!\!)\[\[.+\]\])/U',$nc,-1,PREG_SPLIT_DELIM_CAPTURE);
  +    $nnc='';
  +    $ii=1;
  +    $matched=0;
  +    for ($j=0,$sz=sizeof($chunk);$j<$sz;++$j) {
  +        if (($j+1)%2) {
  +            $nnc.=$chunk[$j];
  +        } else {
  +            if ($nth==$ii) {
  +                $new=$savetext.$chunk[$j];
  +                if ($check != $chunk[$j]) break;
  +                $nnc.=$new;
  +                $matched=1;
  +            }
  +            else
  +                $nnc.=$chunk[$j];
  +            ++$ii;
  +        }
  +    }
  +    if (!empty($blocks)) {
  +        $nnc=preg_replace("/\7(\d+)\7/e",
  +            "\$blocks[$1]",$nnc);
  +    }
  +
  +    endif;
  +
  +    if ($matched) $body=$nnc;
  +  }
  +  if (!$matched):
     if ($options['comment_id'] and preg_match("/^\[\[Comment\(".$options['comment_id']."\)\]\]/m",$body)) {
       $str="[[Comment($options[comment_id])]]";
       $body= preg_replace('/'.preg_quote($str).'/',$savetext.$str,$body,1);
  @@ -187,6 +252,7 @@
       $body= preg_replace("/^(\[\[Comment(\([^\)]*\))?\]\])/m",$savetext."\\1",$body,1);
     } else
       $body.=$savetext;
  +  endif;
   
     $formatter->page->write($body);
     $DBInfo->savePage($formatter->page,"Comment added",$options);
  
  
  


wkpark      2007/11/20 01:04:22

  Modified:    .        wiki.php
  Log:
  more fixes last changes
  
  Revision  Changes    Path
  1.362     +3 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.361
  retrieving revision 1.362
  diff -u -r1.361 -r1.362
  --- wiki.php	19 Nov 2007 08:40:22 -0000	1.361
  +++ wiki.php	19 Nov 2007 16:04:22 -0000	1.362
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.361 2007/11/19 08:40:22 wkpark Exp $
  +// $Id: wiki.php,v 1.362 2007/11/19 16:04:22 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.361 $',1,-1);
  +$_revision = substr('$Revision: 1.362 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -4799,6 +4799,7 @@
       if ($DBInfo->extra_macros and
           $formatter->pi['#format'] == $DBInfo->default_markup) {
         if ($formatter->pi['#nocomment']) $options['nocomment']=1;
  +      $options['mid']='dummy';
         if (!is_array($DBInfo->extra_macros)) {
           print '<div id="wikiExtra">'."\n";
           print $formatter->macro_repl($DBInfo->extra_macros,'',$options);
  
  
  


wkpark      2007/11/20 01:04:22

  Modified:    plugin   Comment.php
  Log:
  more fixes last changes
  
  Revision  Changes    Path
  1.27      +7 -7      moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- Comment.php	19 Nov 2007 15:16:23 -0000	1.26
  +++ Comment.php	19 Nov 2007 16:04:22 -0000	1.27
  @@ -6,7 +6,7 @@
   // Usage: [[Comment]], ?action=comment
   //
   //
  -// $Id: Comment.php,v 1.26 2007/11/19 15:16:23 wkpark Exp $
  +// $Id: Comment.php,v 1.27 2007/11/19 16:04:22 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $DBInfo;
  @@ -24,8 +24,11 @@
     if ($options['nocomment']) return '';
     if (!$DBInfo->security->writable($options)) return '';
   
  -  $emid=base64_encode($formatter->mid.',Comment,'.$value);
  -  $mid=$formatter->mid;
  +  if ($options['mid']) $mymid=$options['mid'];
  +  else $mymid=$formatter->mid;
  +  $emid=base64_encode($mymid.',Comment,'.$value);
  +
  +  $mid=$mymid;
   
     $COLS_MSIE = 80;
     $COLS_OTHER = 85;
  @@ -48,8 +51,7 @@
   
     $url=$formatter->link_url($formatter->page->urlname);
   
  -
  -  $hidden.='<input type="hidden" name="comment_id" value="'.$emid.'" />';
  +  if ($emid) $hidden.='<input type="hidden" name="comment_id" value="'.$emid.'" />';
     $form = "<form name='editform' method='post' action='$url'>\n";
     if ($use_meta)
       $form.="<a id='add_comment' name='add_comment'></a>";
  @@ -101,8 +103,6 @@
   
     if ($options['usemeta']) $use_meta=1;
   
  -  list($nth,$dum,$v)=explode(',', base64_decode($options['mid']),3);
  -
     $COLS_MSIE = 80;
     $COLS_OTHER = 85;
     $cols = preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']) ? $COLS_MSIE : $COLS_OTHER;
  
  
  


wkpark      2007/11/20 18:00:07

  Modified:    .        wikilib.php wiki.php
  Log:
  openid fixes
  
  Revision  Changes    Path
  1.233     +36 -11    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.232
  retrieving revision 1.233
  diff -u -r1.232 -r1.233
  --- wikilib.php	19 Nov 2007 10:35:29 -0000	1.232
  +++ wikilib.php	20 Nov 2007 09:00:07 -0000	1.233
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.232 2007/11/19 10:35:29 wkpark Exp $
  +// $Id: wikilib.php,v 1.233 2007/11/20 09:00:07 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -346,14 +346,18 @@
       return rawurldecode(strtr($key,'_','%'));
     }
   
  -  function getUserList() {
  +  function getUserList($option='') {
       if ($this->users) return $this->users;
   
  +    $type='';
  +    if ($option=='del') $type='del-';
  +    elseif ($options=='wait') $type='wait-';
  +
       $users = array();
       $handle = opendir($this->user_dir);
       while ($file = readdir($handle)) {
         if (is_dir($this->user_dir."/".$file)) continue;
  -      if (preg_match('/^wu\-([^\.]+)$/', $file,$match))
  +      if (preg_match('/^'.$type.'wu\-([^\.]+)$/', $file,$match))
           #$users[$match[1]] = 1;
           $users[] = $this->_key_to_id($match[1]);
       }
  @@ -385,13 +389,13 @@
       return true;
     }
   
  -  function saveUser($user) {
  +  function saveUser($user,$options=array()) {
       $config=array("css_url","datatime_fmt","email","bookmark","language",
                     "name","nick","password","wikiname_add_spaces","subscribed_pages",
                     "scrapped_pages","quicklinks","theme","ticket","eticket",
   	  	  "tz_offset","npassword","nticket","idtype");
   
  -    $date=gmdate('Y/m/d', time());
  +    $date=gmdate('Y/m/d H:i:s', time());
       $data="# Data saved $date\n";
   
       if ($user->ticket)
  @@ -404,7 +408,9 @@
   
       #print $data;
   
  -    $fp=fopen($this->user_dir."/wu-".$this->_id_to_key($user->id),"w+");
  +    $wu="wu-".$this->_id_to_key($user->id);
  +    if ($options['wait']) $wu='wait-'.$wu;
  +    $fp=fopen($wu,"w+");
       fwrite($fp,$data);
       fclose($fp);
     }
  @@ -449,9 +455,27 @@
   
     function delUser($id) {
       if ($this->_exists($id)) {
  -       unlink("$this->user_dir/wu-". $this->_id_to_key($id));
  +      $u='wu-'. $this->_id_to_key($id);
  +      $du='del-'.$u;
  +      rename($this->user_dir.'/'.$u,$this->user_dir.'/'.$du);
       }
     }
  +
  +  function activateUser($id) {
  +    $wu='wu-'. $this->_id_to_key($id);
  +    if (file_exists($this->user_dir.'/'.$wu)) return true;
  +    if (file_exists($this->user_dir.'/wait-'.$wu)) {
  +      $u='wait-'.$wu;
  +      rename($this->user_dir.'/'.$u,$this->user_dir.'/'.$wu);
  +      return true;
  +    }
  +    if (file_exists($this->user_dir.'/del-'.$wu)) {
  +      $u='del-'.$wu;
  +      rename($this->user_dir.'/'.$u,$this->user_dir.'/'.$wu);
  +      return true;
  +    }
  +    return false;
  +  }
   }
   
   class User {
  @@ -1893,9 +1917,10 @@
         $idform="<input type='text' size='20' name='login_id' value='' />";
     } else {
       $idform=$user->id;
  -    if ($user->info['idtype']=='openid')
  +    if ($user->info['idtype']=='openid') {
         $idform='<img src="http://www.myopenid.com/static/openid-icon-small.gif" alt="OpenID:" style="vertical-align:middle" />'.
  -      '<a href="$idform">'.$idform.'</a>';
  +      '<a href="'.$idform.'">'.$idform.'</a>';
  +    }
     }
   
     $button=_("Login");
  @@ -2019,7 +2044,7 @@
       if ($user->id == 'Anonymous' or $user->info['password'])
       $passwd_inp=<<<PASS
     <tr>
  -     <td><b>$passwd_btn</b>&nbsp;</td><td><input type="password" size="15" maxlength="$pw_len" name="password" value="$passwd" />
  +     <th>$passwd_btn&nbsp;</th><td><input type="password" size="15" maxlength="$pw_len" name="password" value="$passwd" />
   PASS;
   
     } else {
  @@ -2034,7 +2059,7 @@
       }
     }
     $id_btn=_("ID");
  -  if ($openid_form) $sep1=$sep;
  +  if ($openid_form or $login) $sep1=$sep;
     return <<<EOF
   $login
   $jscript
  
  
  
  1.363     +27 -22    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.362
  retrieving revision 1.363
  diff -u -r1.362 -r1.363
  --- wiki.php	19 Nov 2007 16:04:22 -0000	1.362
  +++ wiki.php	20 Nov 2007 09:00:07 -0000	1.363
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.362 2007/11/19 16:04:22 wkpark Exp $
  +// $Id: wiki.php,v 1.363 2007/11/20 09:00:07 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.362 $',1,-1);
  +$_revision = substr('$Revision: 1.363 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -1700,6 +1700,8 @@
       $this->postfilters=$DBInfo->postfilters;
       $this->use_rating=$DBInfo->use_rating;
       $this->use_etable=$DBInfo->use_etable;
  +    $this->udb=$DBInfo->udb;
  +    $this->check_openid_url=$DBInfo->check_openid_url;
       $this->register_javascripts($DBInfo->javascripts);
   
       if (($p=strpos($page->name,"~")))
  @@ -2010,7 +2012,7 @@
       print $raw;
     }
   
  -  function link_repl($url,$attr='') {
  +  function link_repl($url,$attr='',$opts=array()) {
       if (is_array($url)) $url=$url[1];
       #if ($url[0]=='<') { print $url;return $url;}
       $url=str_replace('\"','"',$url); // XXX
  @@ -2113,11 +2115,20 @@
           if (substr($url,0,7)=='http://' and $url[7]=='?') {
             $link=substr($url,7);
             return "<a href='$link'>$text</a>";
  +        } else if ($this->check_openid_url and preg_match("@^https?://@i",$url)) {
  +          if ($this->udb->_exists($url)) {
  +            $icon='openid';
  +            $icon="<a class='externalLink' href='$link'><img class='url' alt='[$icon]' src='".$this->imgs_dir_url."$icon.png' /></a>";
  +            $link=$this->link_url(_rawurlencode($text));
  +          }
  +        }
  +        if (!$icon) {
  +          $icon= strtok($url,':');
  +          $icon="<img class='url' alt='[$icon]' src='".$this->imgs_dir_url."$icon.png' />";
           }
  -        $icon=strtok($url,':');
           if ($text != $url) $eclass='named';
           else $eclass='unnamed';
  -        return "<img class='url' alt='[$icon]' src='".$this->imgs_dir_url."$icon.png' />". "<a class='externalLink $eclass' $attr $this->external_target href='$link'>$text</a>".$external_icon.$external_link;
  +        return $icon. "<a class='externalLink $eclass' $attr $this->external_target href='$link'>$text</a>".$external_icon.$external_link;
         } # have no space
         $link=str_replace('&','&amp;',$url);
         if (preg_match("/^(http|https|ftp)/",$url)) {
  @@ -4503,7 +4514,6 @@
   function init_requests(&$options) {
     global $DBInfo;
   $user=new User();
  -$options['id']=$user->id;
   
   # MoniWiki theme
   if ((empty($DBInfo->theme) or isset($_GET['action'])) and isset($_GET['theme'])) $theme=$_GET['theme'];
  @@ -4513,23 +4523,18 @@
   if ($DBInfo->trail) {
     $options['trail']=$user->trail ? $user->trail:'';
   }
  -if ($options['id'] != 'Anonymous') {
  -  $udb=new UserDB($DBInfo);
  -  $userinfo=$udb->getUser($user->id);
   
  -  # Does it have valid ticket ?
  -  if ($user->ticket == $userinfo->info['ticket']) {
  -    $user=$userinfo;
  -    $options['css_url']=$user->info['css_url'];
  -    $options['quicklinks']=$user->info['quicklinks'];
  -    $options['tz_offset']=$user->info['tz_offset'];
  -    if (!$theme) $options['theme']=$user->info['theme'];
  -  } else {
  -    $options['id']='Anonymous';
  -    $options['css_url']=$user->css;
  -    $options['tz_offset']=$user->tz_offset;
  -    if (!$theme) $options['theme']=$user->theme;
  -  }
  +$udb=new UserDB($DBInfo);
  +$udb->checkUser($user); # is it valid user ?
  +$options['id']=$user->id;
  +$DBInfo->udb=$udb; // XXX
  +
  +if ($options['id'] != 'Anonymous') {
  +  $user=$udb->getUser($user->id); // read user info
  +  $options['css_url']=$user->info['css_url'];
  +  $options['quicklinks']=$user->info['quicklinks'];
  +  $options['tz_offset']=$user->info['tz_offset'];
  +  if (!$theme) $options['theme']=$user->info['theme'];
   } else {
     $options['css_url']=$user->css;
     $options['tz_offset']=$user->tz_offset;
  
  
  


wkpark      2007/11/20 18:00:07

  Modified:    plugin   userform.php
  Log:
  openid fixes
  
  Revision  Changes    Path
  1.24      +2 -2      moniwiki/plugin/userform.php
  
  Index: userform.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/userform.php,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- userform.php	19 Nov 2007 10:37:29 -0000	1.23
  +++ userform.php	20 Nov 2007 09:00:07 -0000	1.24
  @@ -4,7 +4,7 @@
   // a userform action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: userform.php,v 1.23 2007/11/19 10:37:29 wkpark Exp $
  +// $Id: userform.php,v 1.24 2007/11/20 09:00:07 wkpark Exp $
   
   function do_userform($formatter,$options) {
     global $DBInfo;
  @@ -399,9 +399,9 @@
         if ($userdb->_exists($options['openid_identity'])) {
           $user=$userdb->getUser($options['openid_identity']);
           $user->info['idtype']='openid';
  -        $userdb->saveUser($user); // always save
           $options['msg'].= sprintf(_("Successfully login as '%s' via OpenID."),$options['openid_identity']);
           $formatter->header($user->setCookie());
  +        $userdb->saveUser($user); // always save
         } else {
           if ($DBInfo->no_register == 1) {
             $options['msg']=_("Fail to register");
  
  
  


wkpark      2007/11/20 18:00:38

  Modified:    plugin   Info.php
  Log:
  fix for more generic ids
  
  Revision  Changes    Path
  1.14      +5 -2      moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Info.php,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- Info.php	9 Jan 2007 06:11:59 -0000	1.13
  +++ Info.php	20 Nov 2007 09:00:38 -0000	1.14
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Info plugin for the MoniWiki
   //
  -// $Id: Info.php,v 1.13 2007/01/09 06:11:59 wkpark Exp $
  +// $Id: Info.php,v 1.14 2007/11/20 09:00:38 wkpark Exp $
   
   function _parse_rlog($formatter,$log,$options=array()) {
     global $DBInfo;
  @@ -106,7 +106,10 @@
            $user=$dummy[1];
            if ($user and $user!='Anonymous') {
              if (in_array($user,$users)) $ip=$users[$user];
  -           else if ($DBInfo->hasPage($user)) {
  +           else if (strpos($user,' ') !== false) {
  +             $ip=$formatter->link_repl($user);
  +             $users[$user]=$ip;
  +           } else if ($DBInfo->hasPage($user)) {
                $ip=$formatter->link_tag($user);
                $users[$user]=$ip;
              } else if (!$DBInfo->mask_hostname and $DBInfo->interwiki['Whois']) {
  
  
  


wkpark      2007/11/20 18:02:58

  Modified:    theme/azblue header.php
  Log:
  update
  
  Revision  Changes    Path
  1.9       +2 -2      moniwiki/theme/azblue/header.php
  
  Index: header.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/azblue/header.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- header.php	19 Oct 2007 12:55:56 -0000	1.8
  +++ header.php	20 Nov 2007 09:02:58 -0000	1.9
  @@ -1,6 +1,6 @@
   <?php
   # MoniWiki Theme by wkpark at kldp.org
  -# $Id: header.php,v 1.8 2007/10/19 12:55:56 wkpark Exp $
  +# $Id: header.php,v 1.9 2007/11/20 09:02:58 wkpark Exp $
   #
   if ($this->_sidebar) {
     include_once("plugin/login.php");
  @@ -63,7 +63,7 @@
    </div>
   <?php endif; /* topbanner */?>
   <div id='goForm'>
  -<form id='go' action='' method='get' onsubmit="return moin_submit();">
  +<form id='go' action='' method='get' onsubmit="return moin_submit(this);">
   <div>
   <input type='text' name='value' size='20' accesskey='s' class='goto' style='width:120px' />
   <input type='hidden' name='action' value='goto' />
  
  
  


wkpark      2007/11/20 18:04:51

  Modified:    local    moniwyg.js
  Log:
  auto formatting headings
  
  Revision  Changes    Path
  1.34      +27 -11    moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- moniwyg.js	16 Nov 2007 09:59:09 -0000	1.33
  +++ moniwyg.js	20 Nov 2007 09:04:51 -0000	1.34
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.33 2007/11/16 09:59:09 wkpark Exp $
  +// $Id: moniwyg.js,v 1.34 2007/11/20 09:04:51 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -275,12 +275,12 @@
   Wikiwyg.Wysiwyg.prototype.get_key_press_function = function() {
       var self = this;
       return function(e) {
  -        if (e) cc=e.charCode;
  +        if (e) cc=e.keyCode||e.charCode;
           else e=window.event,cc=e.keyCode;
           var ch = String.fromCharCode(cc);
   
           if (! e.ctrlKey) {
  -            if (cc == 32) { // space
  +            if (cc == 32 || cc == 13) { // space
                   var sel=self.get_selection();
                   if (!Wikiwyg.is_ie) {
                       var sf=sel.focusNode;
  @@ -292,20 +292,31 @@
                           var val = sf.nodeValue.substr(0,sel.focusOffset).replace(/\s+$/,'');
                           if (val) {
                               var m=[];
  -                            var p=val.lastIndexOf(' ');
  -                            if (p == -1) m[1]='',m[2]=val;
  -                            else m[1]=val.substr(0,p+1),m[2]=val.substr(p+1);
  +                            var p=val.lastIndexOf('=');
  +                            if (p == -1) {
  +                                var p=val.lastIndexOf(' ');
  +                                if (p == -1) m[1]='',m[2]=val;
  +                                else m[1]=val.substr(0,p+1),m[2]=val.substr(p+1);
  +                            } else {
  +                                var m=val.match(/(={2,6})(\s*.*\s*)\1$/); // FIXME
  +                                if (m) {
  +                                    m[1]=val.substr(0,val.length - m[0].length);
  +                                    m[2]=val.substr(val.length - m[0].length);
  +                                } else m = [null,'',val];
  +                            }
                               if (m[2].match(/^(http|https|ftp|nntp|news|irc|telnet):\/\//) ||
                                   m[2].match(/^[A-Z]([A-Z]+[0-9a-z]|[a-z0-9]+[A-Z])[0-9a-zA-Z]*\b/) ||
  -                                m[2].match(/^\[.*\]$/)) { // force link, macro
  +                                m[2].match(/^(\[.*\]|(={2,6}).*\2)$/)) { // force link, macro
   
                                   range.setStart(sf,m[1].length);
                                   range.setEnd(sf,m[1].length+m[2].length);
                                   sel.removeAllRanges(); // remove old ranges !
                                   sel.addRange(range);
   
  -                                //e.preventDefault();
  -                                //e.stopPropagation();
  +                                if (cc == 13) {
  +                                    e.preventDefault();
  +                                    e.stopPropagation();
  +                                }
   
                                   self.do_link(); // auto linking
                                   nsel=self.get_selection();
  @@ -582,7 +593,7 @@
       // embed or object tags
       html =
           html.replace(/(<\/embed>)/ig,
  -                "<img src='"+ _url_prefix + "/imgs/loading.gif' width='100px' height='100px'>$1");
  +                "<img src='"+ _url_prefix + "/imgs/loading.gif' width='100px' height='100px'></embed>");
   
       //alert('fixup_markup='+html);
       if (Wikiwyg.is_ie) {
  @@ -844,7 +855,12 @@
       if (! selection) return;
       var url=null;
       var urltext=null;
  -    if (selection.match(/^\[\[.*\]\]$/)) { // macro or links XXX FIXME
  +    var m=null;
  +    if ((m=selection.match(/^(={1,6})(.*)\1$/))) { // headings
  +        var tag = 'h'+m[1].length;
  +        var myhtml = '<'+tag+'>' + m[2] + '</'+ tag +'>';
  +        this.exec_command('inserthtml', myhtml);
  +    } else if (selection.match(/^\[\[.*\]\]$/)) { // macro or links XXX FIXME
           var postdata = 'action=markup&value=' + encodeURIComponent(selection);
           var myhtml= HTTPPost(top.location, postdata);
   
  
  
  


wkpark      2007/11/20 18:23:07

  Modified:    local    moniwyg.js
  Log:
  fix for titled anchor hack
  
  Revision  Changes    Path
  1.35      +7 -1      moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- moniwyg.js	20 Nov 2007 09:04:51 -0000	1.34
  +++ moniwyg.js	20 Nov 2007 09:23:07 -0000	1.35
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.34 2007/11/20 09:04:51 wkpark Exp $
  +// $Id: moniwyg.js,v 1.35 2007/11/20 09:23:07 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -1069,6 +1069,12 @@
       // unnamed externalLinks
       html =
           html.replace(/<a class=.externalLink unnamed. [^>]+>([^>]+)<\/a>/ig, "[$1]");
  +    // remove empty anchors
  +    html =
  +        html.replace(/<a class=.externalLink. [^>]+><\/a>/ig, "");
  +    // named externalLinks with a title
  +    html =
  +        html.replace(/<a class=.externalLink named. [^>]*title=(\'|\")?([^\'\"]+)\1?[^>]*>(.+)<\/a>/ig, "[$2 $3]");
       // named externalLinks
       html =
           html.replace(/<a class=.externalLink named. [^>]*href=(\'|\")?([^\'\"]+)\1?[^>]+>(.+)<\/a>/ig, "[$2 $3]");
  
  
  


wkpark      2007/11/20 18:23:50

  Modified:    .        wiki.php
  Log:
  titled anchor for openid
  
  Revision  Changes    Path
  1.364     +3 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.363
  retrieving revision 1.364
  diff -u -r1.363 -r1.364
  --- wiki.php	20 Nov 2007 09:00:07 -0000	1.363
  +++ wiki.php	20 Nov 2007 09:23:50 -0000	1.364
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.363 2007/11/20 09:00:07 wkpark Exp $
  +// $Id: wiki.php,v 1.364 2007/11/20 09:23:50 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.363 $',1,-1);
  +$_revision = substr('$Revision: 1.364 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2119,6 +2119,7 @@
             if ($this->udb->_exists($url)) {
               $icon='openid';
               $icon="<a class='externalLink' href='$link'><img class='url' alt='[$icon]' src='".$this->imgs_dir_url."$icon.png' /></a>";
  +            $attr.=' title="'.$link.'"';
               $link=$this->link_url(_rawurlencode($text));
             }
           }
  
  
  


keizie      2007/11/20 21:12:08

  Modified:    .        wikilib.php
  Log:
  FIXED mislocated user dir
  
  Revision  Changes    Path
  1.234     +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.233
  retrieving revision 1.234
  diff -u -r1.233 -r1.234
  --- wikilib.php	20 Nov 2007 09:00:07 -0000	1.233
  +++ wikilib.php	20 Nov 2007 12:12:08 -0000	1.234
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.233 2007/11/20 09:00:07 wkpark Exp $
  +// $Id: wikilib.php,v 1.234 2007/11/20 12:12:08 keizie Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -410,7 +410,7 @@
   
       $wu="wu-".$this->_id_to_key($user->id);
       if ($options['wait']) $wu='wait-'.$wu;
  -    $fp=fopen($wu,"w+");
  +    $fp=fopen("$this->user_dir/$wu","w+");
       fwrite($fp,$data);
       fclose($fp);
     }
  
  
  


wkpark      2007/11/20 21:54:19

  Modified:    lib      HTTPClient.php openid.php
  Log:
  oops! fix typo err
  
  Revision  Changes    Path
  1.2       +2 -1      moniwiki/lib/HTTPClient.php
  
  Index: HTTPClient.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/HTTPClient.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- HTTPClient.php	18 Nov 2007 15:13:32 -0000	1.1
  +++ HTTPClient.php	20 Nov 2007 12:54:19 -0000	1.2
  @@ -165,7 +165,8 @@
               return false;
           }
           //set non blocking
  -        stream_set_blocking($socket,0);
  +        socket_set_blocking($socket,0);
  +        //stream_set_blocking($socket,0);
   
           // build request
           $request  = "$method $request_url HTTP/".$this->http.HTTP_NL;
  
  
  
  1.3       +2 -2      moniwiki/lib/openid.php
  
  Index: openid.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/openid.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- openid.php	18 Nov 2007 16:08:50 -0000	1.2
  +++ openid.php	20 Nov 2007 12:54:19 -0000	1.3
  @@ -159,9 +159,9 @@
   	function HTTP_Request($url, $method="GET", $params = "") { // Remember, SSL MUST BE SUPPORTED
   		if ($method == "GET") {
   			if (is_array($params)) $params = $this->array2url($params);
  -        		$respanse = $this->HTTP->get($url . ($params ? '?' . $params:''));
  +        		$response = $this->HTTP->get($url . ($params ? '?' . $params:''));
   		} else if ($method == 'POST') {
  -        		$respanse = $this->HTTP->post($url, $params);
  +        		$response = $this->HTTP->post($url, $params);
   		}
   		if (!$response) {
   			$this->ErrorStore('OPENID_HTTP', 'HTTP Error: '.$this->HTTP->error);
  
  
  


wkpark      2007/11/20 22:46:48

  Modified:    plugin   UploadedFiles.php
  Log:
  show filenames for non image files
  
  Revision  Changes    Path
  1.24      +2 -2      moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- UploadedFiles.php	19 Oct 2007 04:46:37 -0000	1.23
  +++ UploadedFiles.php	20 Nov 2007 13:46:48 -0000	1.24
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadedFiles plugin for the MoniWiki
   //
  -// $Id: UploadedFiles.php,v 1.23 2007/10/19 04:46:37 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.24 2007/11/20 13:46:48 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     $list=macro_UploadedFiles($formatter,$options['page'],$options);
  @@ -349,7 +349,7 @@
                 'rpm|deb|pdf|ppt|xls|tgz|gz|bz2|zip)$/',$ext)) {
               $ext='unknown';
             }
  -          $fname="<img src='$icon_dir/$ext.png' class='icon' $alt />";
  +          $fname="<img src='$icon_dir/$ext.png' class='icon' $alt /><div>$file</div>";
           }
           if ($js_tag) {
             //if (strpos($file,' '))
  
  
  


wkpark      2007/11/21 15:07:49

  Added:       imgs     openid.png
  Log:
  add a new img
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/openid.png
  
  	<<Binary file>>
  
  


wkpark      2007/11/21 15:08:55

  Added:       imgs/misc embed.png
  Log:
  add a new img for WikiWyg
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/misc/embed.png
  
  	<<Binary file>>
  
  


wkpark      2007/11/21 18:49:33

  Modified:    plugin   SmileyChooser.php UploadedFiles.php
  Log:
  use style.display instead of getAttribute()
  
  Revision  Changes    Path
  1.12      +5 -10     moniwiki/plugin/SmileyChooser.php
  
  Index: SmileyChooser.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SmileyChooser.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- SmileyChooser.php	19 Oct 2007 04:46:37 -0000	1.11
  +++ SmileyChooser.php	21 Nov 2007 09:49:33 -0000	1.12
  @@ -5,7 +5,7 @@
   //
   // Usage: [[SmileyChooser]]
   //
  -// $Id: SmileyChooser.php,v 1.11 2007/10/19 04:46:37 wkpark Exp $
  +// $Id: SmileyChooser.php,v 1.12 2007/11/21 09:49:33 wkpark Exp $
   
   function macro_SmileyChooser($formatter,$value) {
     global $DBInfo;
  @@ -30,18 +30,14 @@
   
     // check WikiWyg
     var my=document.getElementById('editor_area');
  -  var mystyle=my.getAttribute('style');
  -  if (typeof mystyle == 'object') mystyle = mystyle.cssText;
     
  -  while (mystyle && mystyle.match(/display: none/i)) { // wikiwyg hack
  +  while (my.style && my.style.display == 'none') { // wikiwyg hack
       txtarea = document.getElementById('wikiwyg_wikitext_textarea');
   
       // get iframe and check visibility.
       var myframe = document.getElementsByTagName('iframe')[0];
  -    mystyle = myframe.getAttribute('style');
  -    if (typeof mystyle == 'object') mystyle = mystyle.cssText;
  -    var check = mystyle && mystyle.match(/display: none/i);
  -    if (check) break;
  +    // hack. check wrapper also
  +    if (myframe.style.display == 'none' || myframe.parentNode.style.display == 'none') break;
   
       var postdata = 'action=markup&value=' + encodeURIComponent(myText);
       var myhtml='';
  @@ -65,9 +61,9 @@
       return;
     }
   
  +  txtarea.focus();
     if(is_ie) {
       var theSelection = document.selection.createRange().text;
  -    txtarea.focus();
       if(theSelection.charAt(theSelection.length - 1) == " "){
         // exclude ending space char, if any
         theSelection = theSelection.substring(0, theSelection.length - 1);
  @@ -83,7 +79,6 @@
       var scrollTop=txtarea.scrollTop;
       txtarea.value = txtarea.value.substring(0, startPos) + myText + " " +
         txtarea.value.substring(endPos, txtarea.value.length);
  -    txtarea.focus();
   
       var cPos=startPos+(myText.length+1);
   
  
  
  
  1.25      +3 -8      moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- UploadedFiles.php	20 Nov 2007 13:46:48 -0000	1.24
  +++ UploadedFiles.php	21 Nov 2007 09:49:33 -0000	1.25
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadedFiles plugin for the MoniWiki
   //
  -// $Id: UploadedFiles.php,v 1.24 2007/11/20 13:46:48 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.25 2007/11/21 09:49:33 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     $list=macro_UploadedFiles($formatter,$options['page'],$options);
  @@ -92,17 +92,12 @@
           }
   
           var my=opener.document.getElementById('editor_area');
  -        var mystyle=my.getAttribute('style');
  -        if (typeof mystyle == 'object') mystyle = mystyle.cssText;
  -        while (mystyle && mystyle.match(/display: none/i)) { // wikiwyg hack
  +        while (my.style.display == 'none') { // wikiwyg hack
               txtarea = opener.document.getElementById('wikiwyg_wikitext_textarea');
   
               // get iframe and check visibility.
               var myframe = opener.document.getElementsByTagName('iframe')[0];
  -            mystyle = myframe.getAttribute('style');
  -            if (typeof mystyle == 'object') mystyle = mystyle.cssText;
  -            var check = mystyle && mystyle.match(/display: none/i);
  -            if (check) break;
  +            if (myframe.style.display == 'none' || myframe.parentNode.style.display == 'none') break;
   
               var postdata = 'action=markup&value=' + encodeURIComponent(tagOpen + myText + tagClose);
               var myhtml='';
  
  
  


wkpark      2007/11/21 22:40:58

  Modified:    plugin   Attachment.php UploadFile.php UploadedFiles.php
                        download.php
  Log:
  win32 filesystem fix for file uploading
  
  Revision  Changes    Path
  1.29      +6 -4      moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- Attachment.php	13 Oct 2007 00:19:39 -0000	1.28
  +++ Attachment.php	21 Nov 2007 13:40:58 -0000	1.29
  @@ -7,13 +7,13 @@
   // Name: Attachment
   // Description: Attachment Plugin
   // URL: MoniWiki:AttachmentPlugin
  -// Version: $Revision: 1.28 $
  +// Version: $Revision: 1.29 $
   // Depend: 1.1.3
   // License: GPL
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.28 2007/10/13 00:19:39 wkpark Exp $
  +// $Id: Attachment.php,v 1.29 2007/11/21 13:40:58 wkpark Exp $
   
   function macro_Attachment($formatter,$value,$option='') {
     global $DBInfo;
  @@ -124,10 +124,12 @@
     if ($option == 1) return $upload_file;
     if (!$text) $text=$file;
   
  +  $_l_file=_l_filename($file);
  +  $_l_upload_file=$dir.'/'.$_l_file;
   
  -  if (file_exists($upload_file)) {
  +  if (file_exists($_l_upload_file)) {
   
  -    $sz=filesize($upload_file);
  +    $sz=filesize($_l_upload_file);
       $unit=array('Bytes','KB','MB','GB','TB');
       for ($i=0;$i<4;$i++) {
         if ($sz <= 1024) {
  
  
  
  1.36      +8 -5      moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- UploadFile.php	17 Oct 2007 06:36:16 -0000	1.35
  +++ UploadFile.php	21 Nov 2007 13:40:58 -0000	1.36
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.35 2007/10/17 06:36:16 wkpark Exp $
  +// $Id: UploadFile.php,v 1.36 2007/11/21 13:40:58 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -194,15 +194,18 @@
    
     $upfile=$files['upfile']['tmp_name'][$j];
   
  +  $_l_path=_l_filename($file_path);
  +  $new_l_path=_l_filename($newfile_path);
  +
     if ($options['replace'][$j]) {
       // backup
       if ($newfile_path != $file_path)
  -      $test=@copy($file_path, $newfile_path);
  +      $test=@copy($_l_path, $new_l_path);
       // replace
  -    $test=@copy($upfile, $file_path);
  +    $test=@copy($upfile, $_l_path);
       $upfilename=$filename;
     } else {
  -    $test=@copy($upfile, $newfile_path);
  +    $test=@copy($upfile, $new_l_path);
     }
     @unlink($upfile);
     if (!$test) {
  @@ -212,7 +215,7 @@
       continue;
     }
   
  -  chmod($newfile_path,0644);
  +  chmod($nf_path,0644);
   
     $comment.="'$upfilename' ";
   
  
  
  
  1.26      +7 -6      moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- UploadedFiles.php	21 Nov 2007 09:49:33 -0000	1.25
  +++ UploadedFiles.php	21 Nov 2007 13:40:58 -0000	1.26
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadedFiles plugin for the MoniWiki
   //
  -// $Id: UploadedFiles.php,v 1.25 2007/11/21 09:49:33 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.26 2007/11/21 13:40:58 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     $list=macro_UploadedFiles($formatter,$options['page'],$options);
  @@ -236,7 +236,7 @@
           if ($value =='UploadFile')
             $dirs[]= $DBInfo->keyToPagename($file);
         } else if (preg_match($needle,$file) and $count >= $pfrom)
  -        $upfiles[]= $file;
  +        $upfiles[]= _p_filename($file);
         $count++;
         if ($count >= $pto) { $plink=1; break;}
      }
  @@ -289,13 +289,14 @@
      $down_mode=(strpos($prefix,';value=') !== false);
      $mywidth=$preview_width;
      foreach ($upfiles as $file) {
  +      $_l_file=_l_filename($file);
         if ($down_mode)
           $link=str_replace("value=","value=".rawurlencode($file),$prefix);
         else
  -        $link=$prefix.rawurlencode($file);
  +        $link=$prefix.rawurlencode($file); // XXX
   
         $previewlink=$link;
  -      $size=filesize($dir.'/'.$file);
  +      $size=filesize($dir.'/'. $_l_file);
   
         if ($use_preview) {
           preg_match("/\.(.{1,4})$/",$file,$m);
  @@ -306,7 +307,7 @@
             if ($w <= $preview_width) $mywidth=$w;
             else $mywidth=$preview_width;
   
  -          if (file_exists($dir."/thumbnails/".$file)) {
  +          if (file_exists($dir."/thumbnails/".$_l_file)) {
               if ($down_mode)
                 $previewlink=str_replace('value=','value=thumbnails/',$previewlink);
               else
  @@ -325,7 +326,7 @@
         }
         $size=round($size,2).' '.$unit[$i];
   
  -      $date=date('Y-m-d',filemtime($dir.'/'.$file));
  +      $date=date('Y-m-d',filemtime($dir.'/'.$_l_file));
         $fname=$file;
         $attr='';
         if ($use_preview or $js_tag) {
  
  
  
  1.17      +8 -7      moniwiki/plugin/download.php
  
  Index: download.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/download.php,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- download.php	2 Jan 2007 06:58:10 -0000	1.16
  +++ download.php	21 Nov 2007 13:40:58 -0000	1.17
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // download action plugin for the MoniWiki
   //
  -// $Id: download.php,v 1.16 2007/01/02 06:58:10 wkpark Exp $
  +// $Id: download.php,v 1.17 2007/11/21 13:40:58 wkpark Exp $
   //
   function do_download($formatter,$options) {
     global $DBInfo;
  @@ -67,7 +67,8 @@
     $file=explode('/',$value);
     $file=$subdir.$file[count($file)-1];
   
  -  if (!file_exists("$dir/$file")) {
  +  $_l_file=_l_filename($file);
  +  if (!file_exists("$dir/$_l_file")) {
       header("HTTP/1.1 404 Not Found");
       return;
     }
  @@ -94,7 +95,7 @@
   
     if (strstr($_SERVER['HTTP_USER_AGENT'], 'MSIE')) {
       // IE: rawurlencode()
  -    $fname='filename="'.rawurlencode($file).'"';
  +    $fname='filename="'.rawurlencode($_l_file).'"';
       // fix IE bug
       $fname = preg_replace('/\./', '%2e',
           $fname, substr_count($fname, '.') - 1);
  @@ -109,15 +110,15 @@
   
     if ($DBInfo->use_resume_download) {
       $header=array("Content-Description: MoniWiki PHP Downloader");
  -    dl_file_resume($mimetype,$dir.'/'.$file,$fname,$down_mode,$header);
  +    dl_file_resume($mimetype,$dir.'/'. $_l_file,$fname,$down_mode,$header);
       return; 
     }
   
     header("Content-Type: $mimetype\r\n");
  -  header("Content-Length: ".filesize($dir.'/'.$file));
  +  header("Content-Length: ".filesize($dir.'/'. $_l_file));
     header("Content-Disposition: $down_mode; ".$fname );
     header("Content-Description: MoniWiki PHP Downloader" );
  -  header("Last-Modified: " . gmdate("D, d M Y H:i:s",filemtime($dir.'/'.$file)) . " GMT");
  +  header("Last-Modified: " . gmdate("D, d M Y H:i:s",filemtime($dir.'/'.$_l_file)) . " GMT");
     header("Pragma:");
     header("Cache-Control:");
     if (!preg_match('/^image\//',$mimetype)) {
  @@ -126,7 +127,7 @@
       Header("Expires: 0");
     }
   
  -  $fp=readfile("$dir/$file");
  +  $fp=readfile("$dir/$_l_file");
     return;
   }
   
  
  
  


wkpark      2007/11/21 22:40:59

  Modified:    .        wiki.php
  Log:
  win32 filesystem fix for file uploading
  
  Revision  Changes    Path
  1.365     +3 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.364
  retrieving revision 1.365
  diff -u -r1.364 -r1.365
  --- wiki.php	20 Nov 2007 09:23:50 -0000	1.364
  +++ wiki.php	21 Nov 2007 13:40:58 -0000	1.365
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.364 2007/11/20 09:23:50 wkpark Exp $
  +// $Id: wiki.php,v 1.365 2007/11/21 13:40:58 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.364 $',1,-1);
  +$_revision = substr('$Revision: 1.365 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -4925,6 +4925,7 @@
   # Start Main
   $Config=getConfig("config.php",array('init'=>1));
   include("wikilib.php");
  +include("lib/win32fix.php");
   
   $DBInfo= new WikiDB($Config);
   register_shutdown_function(array(&$DBInfo,'Close'));
  
  
  


wkpark      2007/11/21 22:40:59

  Added:       lib      win32fix.php
  Log:
  win32 filesystem fix for file uploading
  
  Revision  Changes    Path
  1.1                  moniwiki/lib/win32fix.php
  
  Index: win32fix.php
  ===================================================================
  <?php
  
  if (function_exists('iconv')) {
      function _win32fs_local($name) {
          global $Config;
  
          $new=iconv('utf-8','UHC',$name);
          if ($new) return $new;
          return $name; // silently ignore
      }
  
      function _win32fs_public($name) {
          global $Config;
  
          $new=iconv('UHC','utf-8',$name);
          if ($new) return $new;
          return $name;
      }
  } else {
      function _win32fs_local($name) {
          return $name;
      }
  
      function _win32fs_public($name) {
          return $name;
      }
  }
  
  if (getenv('OS')=='Windows_NT' and strtolower($Config['charset']) == 'utf-8') {
      function _l_filename($name) {
          return _win32fs_local($name);
      }
      function _p_filename($name) {
          return _win32fs_public($name);
      }
  } else {
      function _l_filename($name) {
          return $name;
      }
      function _p_filename($name) {
          return $name;
      }
  }
  
  // vim:et:sts=4:sw=4:
  ?>
  
  
  


wkpark      2007/11/21 22:42:11

  Modified:    local    wikibits.js
  Log:
  safari fix
  
  Revision  Changes    Path
  1.5       +4 -4      moniwiki/local/wikibits.js
  
  Index: wikibits.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/wikibits.js,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- wikibits.js	14 Nov 2007 17:17:35 -0000	1.4
  +++ wikibits.js	21 Nov 2007 13:42:11 -0000	1.5
  @@ -1,7 +1,7 @@
   // from the MediaWiki
   // simplified for the MoniWiki by wkpark
   //
  -// $Id: wikibits.js,v 1.4 2007/11/14 17:17:35 wkpark Exp $
  +// $Id: wikibits.js,v 1.5 2007/11/21 13:42:11 wkpark Exp $
   //
   // Wikipedia JavaScript support functions
   // if this is true, the toolbar will no longer overwrite the infobox when you move the mouse over individual items
  @@ -10,7 +10,7 @@
   var clientPC = navigator.userAgent.toLowerCase(); // Get client info
   var is_gecko = ((clientPC.indexOf('gecko')!=-1) && (clientPC.indexOf('spoofer')==-1)
                   && (clientPC.indexOf('khtml') == -1) && (clientPC.indexOf('netscape/7.0')==-1));
  -var is_safari = ((clientPC.indexOf('AppleWebKit')!=-1) && (clientPC.indexOf('spoofer')==-1));
  +var is_safari = ((clientPC.indexOf('applewebkit')!=-1) && (clientPC.indexOf('spoofer')==-1));
   var is_khtml = (navigator.vendor == 'KDE' || ( document.childNodes && !document.all && !navigator.taintEnabled ));
   if (clientPC.indexOf('opera')!=-1) {
       var is_opera = true;
  @@ -54,7 +54,7 @@
   
   	// we can't change the selection, so we show example texts
   	// when moving the mouse instead, until the first button is clicked
  -	if(!document.selection && !is_gecko) {
  +	if(!document.selection && !is_gecko && !is_safari) {
   		// filter backslashes so it can be shown in the infobox
   		var re=new RegExp("\\\\n","g");
   		tagOpen=tagOpen.replace(re,"");
  @@ -80,7 +80,7 @@
   	// if no support for changing selection, add a small copy & paste field
   	// document.selection is an IE-only property. The full toolbar works in IE and
   	// Gecko-based browsers.
  -	if(!document.selection && !is_gecko) {
  +	if(!document.selection && !is_gecko && !is_safari) {
    		infoText=escapeQuotesHTML(infoText);
   	 	document.write("<form name='infoform' id='infoform'>"+
   			"<input size=80 id='infobox' name='infobox' value=\""+
  
  
  


wkpark      2007/11/21 23:08:15

  Modified:    local    moniwyg.js
  Log:
  support resizable embed/object/applet tags for the mozilla/firefox
  
  Revision  Changes    Path
  1.36      +70 -11    moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- moniwyg.js	20 Nov 2007 09:23:07 -0000	1.35
  +++ moniwyg.js	21 Nov 2007 14:08:15 -0000	1.36
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.35 2007/11/20 09:23:07 wkpark Exp $
  +// $Id: moniwyg.js,v 1.36 2007/11/21 14:08:15 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -528,7 +528,7 @@
       old_mode.toHtml(
           function(html) {
               self.previous_mode = old_mode;
  -            new_mode.fromHtml(fixup_markup_style(html));
  +            new_mode.fromHtml(fixup_markup_style(html,new_mode.classname));
               old_mode.disableThis();
               new_mode.enableThis();
               new_mode.enableFinished();
  @@ -560,7 +560,7 @@
   
           myWikiwyg.convertWikitextToHtml(wikitext,
               function(new_html) {
  -                self.current_mode.fromHtml(fixup_markup_style(new_html));
  +                self.current_mode.fromHtml(fixup_markup_style(new_html,self.current_mode.classname));
                   self.current_mode.execute_scripts();
               });
       }
  @@ -586,14 +586,11 @@
   //
   // change display style to 'block' for multiline markups
   //
  -function fixup_markup_style(html)
  +function fixup_markup_style(html,modename)
   {
       var dom = document.createElement('div');
   
  -    // embed or object tags
  -    html =
  -        html.replace(/(<\/embed>)/ig,
  -                "<img src='"+ _url_prefix + "/imgs/loading.gif' width='100px' height='100px'></embed>");
  +    if (!modename) modename='Wysiwyg';
   
       //alert('fixup_markup='+html);
       if (Wikiwyg.is_ie) {
  @@ -604,6 +601,56 @@
           dom.innerHTML = html;
       }
       //alert('fixup innerHTML='+dom.innerHTML);
  +    // fix for Mozilla
  +    // var embeds=dom.getElementsByTagName('embed');
  +    var objects=dom.getElementsByTagName('object');
  +    var loc = location.protocol + '//' + location.host;
  +    if (location.port) loc += ':' + location.port;
  +
  +    if (objects.length) {
  +        for (var i=0;i<objects.length;i++) {
  +            var n=objects[i];
  +            var w=n.getAttribute('width') + 'px';
  +            var h=n.getAttribute('height') + 'px';
  +            var applet=null,embed=null;
  +            var img = new Image();
  +            img.style.width = w;
  +            img.style.height = h;
  +            img.src = loc + _url_prefix + '/imgs/misc/embed.png';
  +
  +            n=n.firstChild;
  +            while (n) {
  +                if (n.tagName == 'IMG') break;
  +                if (n.tagName == 'APPLET') applet=n;
  +                else if (n.tagName == 'EMBED') embed=n;
  +                n=n.nextSibling;
  +            }
  +
  +            if (n == null) {
  +                if (modename.match(/Wysiwyg/)) objects[i].appendChild(img);
  +            } else {
  +                w=n.style.width || n.getAttribute('width');
  +                h=n.style.height || n.getAttribute('height');
  +
  +                if (modename.match(/Preview/)) objects[i].removeChild(n);
  +
  +                objects[i].setAttribute('width',w)
  +                objects[i].setAttribute('height',h)
  +                if (applet) {
  +                    applet.setAttribute('width',w);
  +                    applet.setAttribute('height',h);
  +                } else if (embed) {
  +                    embed.setAttribute('width',w);
  +                    embed.setAttribute('height',h);
  +                }
  +            }
  +            if (applet) {
  +                if (modename.match(/Wysiwyg/)) w='1px', h='1px'; // mozilla hack for applet tags
  +                applet.setAttribute('width',w);
  +                applet.setAttribute('height',h);
  +            }
  +        }
  +    }
   
       var spans=dom.getElementsByTagName('span');
       var className= Wikiwyg.is_ie ? 'className':'class';
  @@ -1087,9 +1134,6 @@
       html =
           html.replace(/<tt class[^>]+>([^>]+)<\/tt>/ig, "{{{$1}}}");
   
  -    // embed or object tags
  -    //html = html.replace(/(<\/(embed|object)>)/ig, "<img src='/wiki/imgs/loading.gif' width='100px' height='100px'>$1");
  -
       dom.innerHTML = "<br>" +html; // Bah.... IE hack :(
       dom.removeChild(dom.firstChild);
   
  @@ -1854,6 +1898,21 @@
                       return node;
                   }
               }
  +            else if (node.data.match(/&lt;object/i)) {
  +                var n=node.nextSibling.firstChild;
  +                while (n) {
  +                    if (n.tagName == 'IMG') break;
  +                    n=n.nextSibling;
  +                }
  +                if (n && n.style) {
  +                    var width = n.style.width;
  +                    var height = n.style.height;
  +                    node.data = node.data.replace(/width=([^\s]+)/ig,'width="'+width+'"')
  +                        .replace(/height=([^\s]+)/ig,'height="'+height+'"');
  +                    //    .replace(/width:\s*([0-9]+px)/ig,'width:'+width)
  +                    //    .replace(/height:\s*([0-9]+px)/ig,'height:'+height);
  +                }
  +            }
               return node;
           }
       }
  
  
  


wkpark      2007/11/21 23:55:05

  Modified:    local/Wikiwyg/lib Wikiwyg.js
  Log:
  fixed htmlUnescape()
  
  Revision  Changes    Path
  1.5       +1 -1      moniwiki/local/Wikiwyg/lib/Wikiwyg.js
  
  Index: Wikiwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/lib/Wikiwyg.js,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Wikiwyg.js	16 Nov 2007 09:58:13 -0000	1.4
  +++ Wikiwyg.js	21 Nov 2007 14:55:05 -0000	1.5
  @@ -326,7 +326,7 @@
       // thanks to Randal Schwartz for the correct solution to this one
       // (from CGI.pm, CGI::unescapeHTML())
       return escaped.replace(
  -        /&(.*?);/g,
  +        /&(#?[0-9a-z]+);/g,
           function(dummy,s) {
               return s.match(/^amp$/i) ? '&' :
                   s.match(/^quot$/i) ? '"' :
  
  
  


wkpark      2007/11/22 00:05:17

  Modified:    .        wiki.php
  Log:
  selectivly htmlencode "&" to &amp;
  
  Revision  Changes    Path
  1.366     +4 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.365
  retrieving revision 1.366
  diff -u -r1.365 -r1.366
  --- wiki.php	21 Nov 2007 13:40:58 -0000	1.365
  +++ wiki.php	21 Nov 2007 15:05:17 -0000	1.366
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.365 2007/11/21 13:40:58 wkpark Exp $
  +// $Id: wiki.php,v 1.366 2007/11/21 15:05:17 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.365 $',1,-1);
  +$_revision = substr('$Revision: 1.366 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2533,7 +2533,8 @@
       if (!$match) return $this->word_repl($macro);
       $bra='';$ket='';
       if ($this->wikimarkup and $macro != 'Attachment' and !$options['nomarkup']) {
  -      $markups=str_replace(array('=','-','&','<'),array('==','-=','&amp;','&lt;'),$macro);
  +      $markups=str_replace(array('=','-','<'),array('==','-=','&lt;'),$macro);
  +      $markups=preg_replace('/&(?!#?[a-z0-9]+;)/i','&amp;',$markups);
         $bra= "<span class='wikiMarkup'><!-- wiki:\n[[$markups]]\n-->";
         $ket= '</span>';
       }
  
  
  


wkpark      2007/11/22 00:34:43

  Modified:    local    csshover.htc
  Log:
  version up to 1.42
  
  Revision  Changes    Path
  1.3       +9 -4      moniwiki/local/csshover.htc
  
  Index: csshover.htc
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/csshover.htc,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- csshover.htc	2 Jan 2006 17:56:50 -0000	1.2
  +++ csshover.htc	21 Nov 2007 15:34:43 -0000	1.3
  @@ -1,7 +1,7 @@
   <attach event="ondocumentready" handler="parseStylesheets" />
   <script>
   /**
  - *	Whatever:hover - V1.41.050927 - hover & active
  + *	Whatever:hover - V1.42.060206 - hover & active
    *	------------------------------------------------------------
    *	(c) 2005 - Peter Nederlof
    *	Peterned - http://www.xs4all.nl/~peterned/
  @@ -54,7 +54,7 @@
   	function parseCSSRule(rule) {
   		var select = rule.selectorText, style = rule.style.cssText;
   		if(!csshoverReg.test(select) || !style) return;
  -		
  +
   		var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1');
   		var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo);
   		var className = (/\.([a-z0-9_-]*on(hover|active))/i).exec(newSelect)[1];
  @@ -98,7 +98,10 @@
   	function getSelectedNodes(select, elements) {
   		var result, node, nodes = [];
   		var identify = (/\#([a-z0-9_-]+)/i).exec(select);
  -		if(identify) return [doc.getElementById(identify[1])];
  +		if(identify) {
  +			var element = doc.getElementById(identify[1]);
  +			return element? [element]:nodes;
  +		}
   		
   		var classname = (/\.([a-z0-9_-]+)/i).exec(select);
   		var tagName = select.replace(/(\.|\#|\:)[a-z0-9_-]+/i, '');
  @@ -110,6 +113,8 @@
   				if(classReg && !classReg.test(node.className)) continue;
   				nodes[nodes.length] = node;
   			}
  -		}	return nodes;
  +		}	
  +		
  +		return nodes;
   	}
   </script>
  \ No newline at end of file
  
  
  


wkpark      2007/11/22 01:14:18

  Modified:    plugin   UploadFile.php
  Log:
  oops! fix last chanes
  
  Revision  Changes    Path
  1.37      +2 -2      moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- UploadFile.php	21 Nov 2007 13:40:58 -0000	1.36
  +++ UploadFile.php	21 Nov 2007 16:14:18 -0000	1.37
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.36 2007/11/21 13:40:58 wkpark Exp $
  +// $Id: UploadFile.php,v 1.37 2007/11/21 16:14:18 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -215,7 +215,7 @@
       continue;
     }
   
  -  chmod($nf_path,0644);
  +  chmod($new_l_path,0644);
   
     $comment.="'$upfilename' ";
   
  
  
  


wkpark      2007/11/22 01:16:43

  Modified:    plugin   download.php
  Log:
  fix the last changes for MSIE
  fix for Opera bug
  
  Revision  Changes    Path
  1.18      +6 -3      moniwiki/plugin/download.php
  
  Index: download.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/download.php,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- download.php	21 Nov 2007 13:40:58 -0000	1.17
  +++ download.php	21 Nov 2007 16:16:43 -0000	1.18
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // download action plugin for the MoniWiki
   //
  -// $Id: download.php,v 1.17 2007/11/21 13:40:58 wkpark Exp $
  +// $Id: download.php,v 1.18 2007/11/21 16:16:43 wkpark Exp $
   //
   function do_download($formatter,$options) {
     global $DBInfo;
  @@ -95,7 +95,8 @@
   
     if (strstr($_SERVER['HTTP_USER_AGENT'], 'MSIE')) {
       // IE: rawurlencode()
  -    $fname='filename="'.rawurlencode($_l_file).'"';
  +    $fn = preg_replace('/[:\\x5c\\/*?"<>|]/', '_', $file);
  +    $fname='filename="'.rawurlencode($fn).'"';
       // fix IE bug
       $fname = preg_replace('/\./', '%2e',
           $fname, substr_count($fname, '.') - 1);
  @@ -104,7 +105,9 @@
       #header('Pragma: public');
     } else if (strstr($_SERVER['HTTP_USER_AGENT'], 'Opera')) {
       // Opera 9: RFC 2231
  -    $fname='filename*='.$DBInfo->charset."*".rawurlencode($file).'';
  +    $fn = preg_replace('/[:\\x5c\\/{?]/', '_', $file);
  +    $fname='filename*='.$DBInfo->charset."''".rawurlencode($fn).'';
  +    //$fname='filename="'.$fn.'"';
     } else // Mozilla: RFC 2047
       $fname='filename="=?'.$DBInfo->charset.'?B?'.base64_encode($file).'?="';
   
  
  
  


wkpark      2007/11/22 13:10:10

  Modified:    plugin   RecentChanges.php
  Log:
  fix last change
  
  Revision  Changes    Path
  1.24      +2 -2      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- RecentChanges.php	19 Nov 2007 08:40:00 -0000	1.23
  +++ RecentChanges.php	22 Nov 2007 04:10:10 -0000	1.24
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.23 2007/11/19 08:40:00 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.24 2007/11/22 04:10:10 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     $options['trail']='';
  @@ -252,7 +252,7 @@
         else {
           if (strpos($user,' ')!==false) $user= $formatter->link_repl($user);
           else if ($DBInfo->hasPage($user)) {
  -          $user= $formatter->link_repl(_rawurlencode($user),"",$user);
  +          $user= $formatter->link_tag(_rawurlencode($user),"",$user);
           } else
             $user= $user;
         }
  
  
  


wkpark      2007/11/26 15:52:42

  Modified:    plugin   Keywords.php
  Log:
  use a macro cache
  
  Revision  Changes    Path
  1.24      +24 -2     moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- Keywords.php	18 Jul 2006 12:22:09 -0000	1.23
  +++ Keywords.php	26 Nov 2007 06:52:42 -0000	1.24
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a 'Keywords' plugin for the MoniWiki
   //
  -// $Id: Keywords.php,v 1.23 2006/07/18 12:22:09 wkpark Exp $
  +// $Id: Keywords.php,v 1.24 2007/11/26 06:52:42 wkpark Exp $
   
   define(LOCAL_KEYWORDS,'LocalKeywords');
   
  @@ -58,13 +58,30 @@
   
       if (!$pagename) $pagename=$formatter->page->name;
   
  +    $mc=new Cache_text('macro');
  +    $mkey='Keywords.'.md5($value);
  +    $mykeys=array();
  +
  +    if (!$formatter->refresh and $mc->exists($mkey)) {
  +        # check cache mtime
  +        $cmt=$mc->mtime($mkey);
  +
  +        # check update or not
  +        $dmt=filemtime($DBInfo->text_dir.'/.');
  +        if ($dmt > $cmt) { # XXX crude method
  +            $mykeys=array();
  +        } else {
  +            $mykeys=unserialize($mc->fetch($mkey));
  +        }
  +    }
  +
  +    if (!$mykeys):
       if ($options['all']) $pages=$DBInfo->getPageLists();
       else $pages=array($pagename);
   
       # get cached keywords
       $cache=new Cache_text('keywords');
   
  -    $mykeys=array();
       foreach ($pages as $pn) {
           if ($cache->exists($pn)) {
               $keys=$cache->fetch($pn);
  @@ -74,6 +91,11 @@
           }
           if ($keys) $mykeys=array_merge($mykeys,$keys);
       }
  +    $mc->update($mkey,serialize($mykeys));
  +
  +    endif;
  +
  +
       if ($options['all']) {
           $use_sty=1;
           $words=array_count_values($mykeys);
  
  
  


wkpark      2007/11/26 23:37:11

  Modified:    plugin   Attachment.php
  Log:
  support [attachment:my.jpg alt text] correctly
  support external link [attachment:my.jpg http://foo.bar.com]
  fixed nomarkup related option
  
  Revision  Changes    Path
  1.30      +15 -8     moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- Attachment.php	21 Nov 2007 13:40:58 -0000	1.29
  +++ Attachment.php	26 Nov 2007 14:37:11 -0000	1.30
  @@ -7,17 +7,19 @@
   // Name: Attachment
   // Description: Attachment Plugin
   // URL: MoniWiki:AttachmentPlugin
  -// Version: $Revision: 1.29 $
  +// Version: $Revision: 1.30 $
   // Depend: 1.1.3
   // License: GPL
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.29 2007/11/21 13:40:58 wkpark Exp $
  +// $Id: Attachment.php,v 1.30 2007/11/26 14:37:11 wkpark Exp $
   
  -function macro_Attachment($formatter,$value,$option='') {
  +function macro_Attachment($formatter,$value,$options='') {
     global $DBInfo;
   
  +  if (!is_array($options) and $options==1) $options=array('link'=>1); // compatible
  +
     $attr='';
     if ($DBInfo->force_download) $force_download=1;
     if ($DBInfo->download_action) $mydownload=$DBInfo->download_action;
  @@ -26,7 +28,7 @@
   
     $text='';
   
  -  if (!$DBInfo->security->is_allowed($mydownload,$options))
  +  if ($options and !$DBInfo->security->is_allowed($mydownload,$options))
       return $text;
   
     if ($formatter->wikimarkup and !$options['nomarkup']) {
  @@ -49,7 +51,7 @@
       }
       if (substr($text,0,11)=='attachment:') {
         $fname=substr($text,11);
  -      $ntext=macro_Attachment($formatter,$fname,1);
  +      $ntext=macro_Attachment($formatter,$fname,array('link'=>1));
       }
       if (preg_match("/\.(png|gif|jpeg|jpg)$/i",$ntext)) {
         if (!file_exists($ntext)) {
  @@ -60,6 +62,8 @@
         }
         $ntext=qualifiedUrl($DBInfo->url_prefix.'/'.$ntext);
         $img_link='<img src="'.$ntext.'" alt="'.$text.'" border="0" />';
  +    } else {
  +      $alt=$ntext;
       }
     } else {
       $value=str_replace('%20',' ',$value);
  @@ -121,7 +125,7 @@
     if (!$file) return $bra.'attachment:/'.$ket;
   
     $upload_file=$dir.'/'.$file;
  -  if ($option == 1) return $upload_file;
  +  if ($options['link'] == 1) return $upload_file;
     if (!$text) $text=$file;
   
     $_l_file=_l_filename($file);
  @@ -144,16 +148,19 @@
         $formatter->actions[]='UploadedFiles';
   
       if (!$img_link && preg_match("/\.(png|gif|jpeg|jpg)$/i",$upload_file)) {
  +      $alt=$alt ? $alt:$file;
         if ($key != $pagename || $force_download)
           $url=$formatter->link_url(_urlencode($pagename),"?action=$mydownload&amp;value=".urlencode($value));
         else
           $url=$DBInfo->url_prefix."/"._urlencode($upload_file);
  -      $img="<img src='$url' alt='$file' $attr/>";
  +
  +      $img="<img src='$url' title='$alt' alt='$alt' style='border:0' $attr/>";
   
         if ($extra_action) {
           $url=$formatter->link_url(_urlencode($pagename),"?action=$extra_action&amp;value=".urlencode($value));
           $img="<a href='$url'>$img</a>";
  -      }
  +      } else if (preg_match('@^(https?|ftp)://@',$alt))
  +        $img="<a href='$alt'>$img</a>";
         
         return $bra."<span class=\"imgAttach\">$img</span>".$ket;
       } else {
  
  
  


wkpark      2007/11/26 23:38:33

  Modified:    .        wiki.php
  Log:
  support [foobar attachment:my.jpg] syntax
  
  Revision  Changes    Path
  1.367     +6 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.366
  retrieving revision 1.367
  diff -u -r1.366 -r1.367
  --- wiki.php	21 Nov 2007 15:05:17 -0000	1.366
  +++ wiki.php	26 Nov 2007 14:38:33 -0000	1.367
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.366 2007/11/21 15:05:17 wkpark Exp $
  +// $Id: wiki.php,v 1.367 2007/11/26 14:38:33 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.366 $',1,-1);
  +$_revision = substr('$Revision: 1.367 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2104,6 +2104,10 @@
           $link=str_replace('&','&amp;',$url);
           if (!$text) $text=$url;
           else {
  +          if (preg_match("/^attachment:/",$text)) {
  +            $text=$this->macro_repl('Attachment',substr($text,11),1);
  +            $text=qualifiedUrl($this->url_prefix.'/'.$text);
  +          }
             if (preg_match("/^(http|ftp).*\.(png|gif|jpeg|jpg)$/i",$text)) {
               $atext=$text;
               $text=str_replace('&','&amp;',$text);
  
  
  


wkpark      2007/11/27 09:33:18

  Modified:    .        wikilib.php
  Log:
  fixed _mkdir_p() :p
  support autosave ($use_autosave=1; to activate it)
  
  Revision  Changes    Path
  1.235     +8 -18     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.234
  retrieving revision 1.235
  diff -u -r1.234 -r1.235
  --- wikilib.php	20 Nov 2007 12:12:08 -0000	1.234
  +++ wikilib.php	27 Nov 2007 00:33:18 -0000	1.235
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.234 2007/11/20 12:12:08 keizie Exp $
  +// $Id: wikilib.php,v 1.235 2007/11/27 00:33:18 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -24,23 +24,11 @@
   function _mkdir_p($target,$mode=0777) {
     // from php.net/mkdir user contributed notes
     if (file_exists($target)) {
  -    if (!is_dir($target)) {
  -      return false;
  -    } else {
  -      return true;
  -    }
  -  }
  -
  -  // Attempting to create the directory may clutter up our display.
  -  if (@mkdir($target,$mode)) {
  -    return true;
  -  }
  -
  -  // If the above failed, attempt to create the parent node, then try again.
  -  if (_mkdir_p(dirname($target))) {
  -    return _mkdir_p($target);
  +    if (!is_dir($target)) return false;
  +    else return true;
     }
  -  return false;
  +  // recursivly create dirs.
  +  return (_mkdir_p(dirname($target),$mode) and mkdir($target,$mode));
   }
   
   function get_scriptname() {
  @@ -819,7 +807,9 @@
     if ($options['action_mode']=='ajax') {
       $ajax=" onsubmit='savePage(this);return false'";
     }
  -  $formh= sprintf('<form name="editform" method="post" action="%s"'.$ajax.'>',
  +  if ($DBInfo->use_autosave)
  +    $form_attr='onClick="moni_autosave(this)" onsubmit="moni_autosave_reset()" ';
  +  $formh= sprintf('<form name="editform" '.$form_attr.'method="post" action="%s"'.$ajax.'>',
       $previewurl);
     if ($text) {
       $raw_body = preg_replace("/\r\n|\r/", "\n", $text);
  
  
  


wkpark      2007/11/27 09:34:24

  Added:       local    autosave.js
  Log:
  support autosave ($use_autosave=1; to activate it)
  
  Revision  Changes    Path
  1.1                  moniwiki/local/autosave.js
  
  Index: autosave.js
  ===================================================================
  var _cookie_autosave='_MONI_SAVE_';
  
  function cookieToVar(cookie) {
      if (!cookie) return {};
      var txt=cookie.split(/\0\0/);
      var txts={};
      for (var i=0;i<txt.length;i++) {
          var p=txt[i].indexOf(':');
          var k='',v='';
          if (p != -1) {
              k=txt[i].substring(0,p);
              v=txt[i].substr(p+1);
              txts[k]=v;
          }
      }
      return txts;
  }
  
  function varToCookie(val) {
      var cookie='';
      for (var k in val) cookie+=k+':'+val[k]+'\0\0';
      return cookie;
  }
  
  function moni_autosave_reset(form) {
      setCookie(_cookie_autosave,'');
  }
  
  function moni_autosave(form) {
      var val=getCookie(_cookie_autosave);
  
      if (!this.timer) {
          var key=location+'';
          key=key.replace(/^https?:\/\//,'');
          txts=cookieToVar(val);
  
          if (txts[key]) {
              if (confirm('Are you sure to restore page ?') )
                  form.elements['savetext'].value=txts[key];
          }
          self = this;
          self.form=form;
          this.timer = setInterval(function() {
              var val=getCookie(_cookie_autosave);
              var cookie;
              var txts=cookieToVar(val);
              var key=location+'';
              key=key.replace(/^https?:\/\//,'');
              txts[key]=self.form.elements['savetext'].value;
              cookie=varToCookie(txts);
              setCookie(_cookie_autosave,cookie);
              } ,2000);
      }
  }
  
  function setCookie(name, value, expires, path, domain, secure) {
      var curCookie = name + "=" + escape(value) +
      ((expires) ? "; expires=" + expires.toGMTString() : "") +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      ((secure) ? "; secure" : "")
      document.cookie = curCookie
  }
  
  function getCookie(name) {
      var prefix = name + "="
      var cookieStartIndex = document.cookie.indexOf(prefix)
      if (cookieStartIndex == -1)
      return null
      var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex +
      prefix.length)
      if (cookieEndIndex == -1)
      cookieEndIndex = document.cookie.length
      return unescape(document.cookie.substring(cookieStartIndex +
      prefix.length,
      cookieEndIndex))
  }
  
  
  /*
   * vim:et:sts=4:sw=4
   */
  
  
  


wkpark      2007/11/28 00:07:45

  Modified:    local    moniwyg.js
  Log:
  resizable gnuplot imgs
  resizable attachment imgs with [attachment:my.jpg FooBar] syntax
  
  Revision  Changes    Path
  1.37      +47 -9     moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- moniwyg.js	21 Nov 2007 14:08:15 -0000	1.36
  +++ moniwyg.js	27 Nov 2007 15:07:45 -0000	1.37
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.36 2007/11/21 14:08:15 wkpark Exp $
  +// $Id: moniwyg.js,v 1.37 2007/11/27 15:07:45 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -79,6 +79,7 @@
   // Returns if current position is in a wikimarkup block or not
   Wikiwyg.Wysiwyg.prototype.get_wikimarkup_node = function() {
       var p=this.get_parent_node();
  +
       while (p && (p.nodeType == 1) && (p.tagName.toLowerCase() != 'body')) {
           if (p.nodeName=='SPAN' && p.className &&
                   p.className.match(/wikiMarkup/) &&
  @@ -951,8 +952,12 @@
   
   proto.get_parent_node = function() {
       var sel= this.get_edit_window().getSelection();
  +    var sf = sel.focusNode;
  +    if (sf.nodeName == 'SPAN' && sf.className && sf.className.match(/wikiMarkup/))
  +        return sf; // mozilla hack
       return sel.focusNode.parentNode;
   }
  +
   } else {
   proto.get_selection = function() {
       return this.get_edit_document().selection;
  @@ -1809,9 +1814,13 @@
       for (var node = element.firstChild; node; node = node.nextSibling) {
           if (node.nodeType == this.COMMENT_NODE_TYPE
               && node.data.match(/^\s*wiki/)) {
  +            // for <span class='imgAttach'><img src=...
               var ele=node.nextSibling ? node.nextSibling.firstChild:null;
  +            // for <span class='imgAttach'><a href=''><img src=...
  +            if (ele.tagName == 'A') ele=ele.firstChild;
  +            var b;
   
  -            if (ele && node.data.match(/\nattachment:/) && ele.tagName && ele.tagName.toLowerCase() == 'img') {
  +            if (ele && (b=node.data.match(/\n(\[?)attachment:/)) && ele.tagName == 'IMG') {
                   // check the attributes of the attached images
                   var style = ele.getAttribute('style');
                   var width = ele.getAttribute('width');
  @@ -1862,6 +1871,8 @@
                       if (p != -1) {
                           orig=node.data.substr(0,p);
                           oldquery=node.data.substr(p+1);
  +                        p=oldquery.indexOf(" ");
  +                        if (p != -1) oldquery=oldquery.substr(0,p);
                       }
                       if (oldquery) {
                           oldquery = oldquery.replace(/\n+$/,""); // strip \n
  @@ -1889,21 +1900,32 @@
                           } else {
                               newquery=oldquery+'&'+newquery;
                           }
  -                        node.data=orig+'?'+newquery;
  +                        if (b[1])
  +                            node.data= node.data.replace(/(attachment:[^\s\?]+)\?[^\s]+(\s)/,'$1?'+newquery+' ');
  +                        else node.data=orig+'?'+newquery;
                       } else {
                           node.data = node.data.replace(/\n+$/,""); // strip \n
  -                        if (newquery) node.data+='?'+newquery;
  +                        if (newquery) {
  +                            if (b[1])
  +                                node.data= node.data.replace(/(attachment:[^\s]+)(\s)/,'$1'+'?'+newquery+' ');
  +                            else
  +                                node.data+='?'+newquery;
  +                        }
                       }
   
                       return node;
                   }
               }
  -            else if (node.data.match(/&lt;object/i)) {
  -                var n=node.nextSibling.firstChild;
  -                while (n) {
  -                    if (n.tagName == 'IMG') break;
  -                    n=n.nextSibling;
  +            else if (node.data.match(/&lt;object/i) || node.data.match(/wiki:\n{{{#![^ ]+/)) {
  +                var n=node.nextSibling;
  +                if (n.tagName != 'IMG') {
  +                    var n=n.firstChild;
  +                    while (n) {
  +                        if (n.tagName == 'IMG') break;
  +                        n=n.nextSibling;
  +                    }
                   }
  +
                   if (n && n.style) {
                       var width = n.style.width;
                       var height = n.style.height;
  @@ -1911,6 +1933,22 @@
                           .replace(/height=([^\s]+)/ig,'height="'+height+'"');
                       //    .replace(/width:\s*([0-9]+px)/ig,'width:'+width)
                       //    .replace(/height:\s*([0-9]+px)/ig,'height:'+height);
  +
  +                    var re=new RegExp('wiki:\n({{{#![^ \n]+)([^\n]*)\n');
  +                    var m = node.data.match(re);
  +                    if (m && width && height) {
  +                        var w = width.replace(/[^0-9]/g,'');
  +                        var h = height.replace(/[^0-9]/g,'');
  +                        var nm= w+'x'+h;
  +                        if (m[2]) {
  +                            if (m[2].match(/\b[0-9]+x[0-9]+\b/)) nm = m[2].replace(/[0-9]+x[0-9]+/,nm);
  +                            else nm = m[2] + ' ' + nm;
  +                        } else
  +                            nm = ' ' + nm;
  +
  +                        if (m) node.data =
  +                            ' ' + 'wiki:\n'+ m[1]+nm +'\n' + node.data.substr(m[0].length+1);
  +                    }
                   }
               }
               return node;
  
  
  


wkpark      2007/11/28 00:08:48

  Modified:    plugin   Attachment.php
  Log:
  fixed markup for a [attachment:my.jpg Foo Bar] syntax
  
  Revision  Changes    Path
  1.31      +5 -3      moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- Attachment.php	26 Nov 2007 14:37:11 -0000	1.30
  +++ Attachment.php	27 Nov 2007 15:08:48 -0000	1.31
  @@ -7,13 +7,13 @@
   // Name: Attachment
   // Description: Attachment Plugin
   // URL: MoniWiki:AttachmentPlugin
  -// Version: $Revision: 1.30 $
  +// Version: $Revision: 1.31 $
   // Depend: 1.1.3
   // License: GPL
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.30 2007/11/26 14:37:11 wkpark Exp $
  +// $Id: Attachment.php,v 1.31 2007/11/27 15:08:48 wkpark Exp $
   
   function macro_Attachment($formatter,$value,$options='') {
     global $DBInfo;
  @@ -32,7 +32,9 @@
       return $text;
   
     if ($formatter->wikimarkup and !$options['nomarkup']) {
  -    $bra= "<span class='wikiMarkup'><!-- wiki:\nattachment:$value\n-->";
  +    $ll=$rr='';
  +    if (strpos($value,' ') !==false) { $ll='['; $rr=']'; }
  +    $bra= "<span class='wikiMarkup'><!-- wiki:\n${ll}attachment:$value$rr\n-->";
       $ket= '</span>';
     }
   
  
  
  


wkpark      2007/11/28 00:10:07

  Modified:    .        wiki.php
  Log:
  fixes for attachment:foo.jpg syntax
  
  Revision  Changes    Path
  1.368     +9 -8      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.367
  retrieving revision 1.368
  diff -u -r1.367 -r1.368
  --- wiki.php	26 Nov 2007 14:38:33 -0000	1.367
  +++ wiki.php	27 Nov 2007 15:10:06 -0000	1.368
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.367 2007/11/26 14:38:33 wkpark Exp $
  +// $Id: wiki.php,v 1.368 2007/11/27 15:10:06 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.367 $',1,-1);
  +$_revision = substr('$Revision: 1.368 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2073,7 +2073,7 @@
   
       if (strpos($url,':') !== false) {
         if ($url[0]=='a') # attachment:
  -        return $this->macro_repl('Attachment',substr($url,11));
  +        return $this->macro_repl('attachment',substr($url,11));
   
         if ($url[0] == '^') {
           $attr.=' target="_blank" ';
  @@ -2105,11 +2105,12 @@
           if (!$text) $text=$url;
           else {
             if (preg_match("/^attachment:/",$text)) {
  -            $text=$this->macro_repl('Attachment',substr($text,11),1);
  +            $atext=$text;
  +            $text=$this->macro_repl('attachment',substr($text,11),1);
               $text=qualifiedUrl($this->url_prefix.'/'.$text);
             }
             if (preg_match("/^(http|ftp).*\.(png|gif|jpeg|jpg)$/i",$text)) {
  -            $atext=$text;
  +            $atext=$atext ? $atext:$text;
               $text=str_replace('&','&amp;',$text);
               return "<a class='externalLink named' href='$link' $attr $this->external_target title='$url'><img class='external' style='border:0px' alt='$atext' src='$text' /></a>";
             }
  @@ -2325,9 +2326,9 @@
         if (preg_match("/^(http|ftp|attachment).*\.(png|gif|jpeg|jpg)$/i",$text)) {
           if (substr($text,0,11)=='attachment:') {
             $fname=substr($text,11);
  -          $ntext=$this->macro_repl('Attachment',$fname,1);
  +          $ntext=$this->macro_repl('attachment',$fname,1);
             if (!file_exists($ntext)) {
  -            $word=$this->macro_repl('Attachment',$fname);
  +            $word=$this->macro_repl('attachment',$fname);
             } else {
               $text=qualifiedUrl($this->url_prefix.'/'.$ntext);
               $word= "<img style='border:0' alt='$text' src='$text' /></a>";
  @@ -2536,7 +2537,7 @@
       preg_match("/^([A-Za-z]+)(\((.*)\))?$/",$macro,$match);
       if (!$match) return $this->word_repl($macro);
       $bra='';$ket='';
  -    if ($this->wikimarkup and $macro != 'Attachment' and !$options['nomarkup']) {
  +    if ($this->wikimarkup and $macro != 'attachment' and !$options['nomarkup']) {
         $markups=str_replace(array('=','-','<'),array('==','-=','&lt;'),$macro);
         $markups=preg_replace('/&(?!#?[a-z0-9]+;)/i','&amp;',$markups);
         $bra= "<span class='wikiMarkup'><!-- wiki:\n[[$markups]]\n-->";
  
  
  


wkpark      2007/11/29 00:55:59

  Modified:    .        wiki.php
  Log:
  more fixup for the attachment syntax
  
  Revision  Changes    Path
  1.369     +13 -3     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.368
  retrieving revision 1.369
  diff -u -r1.368 -r1.369
  --- wiki.php	27 Nov 2007 15:10:06 -0000	1.368
  +++ wiki.php	28 Nov 2007 15:55:59 -0000	1.369
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.368 2007/11/27 15:10:06 wkpark Exp $
  +// $Id: wiki.php,v 1.369 2007/11/28 15:55:59 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.368 $',1,-1);
  +$_revision = substr('$Revision: 1.369 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2104,15 +2104,24 @@
           $link=str_replace('&','&amp;',$url);
           if (!$text) $text=$url;
           else {
  +          $img_attr='';
             if (preg_match("/^attachment:/",$text)) {
               $atext=$text;
  +            if (($p=strpos($text,'?')) !== false) {
  +              $atext=substr($text,0,$p);
  +              parse_str(substr($text,$p+1),$attrs);
  +              foreach ($attrs as $n=>$v) {
  +                $img_attr.="$n=\"$v\" ";
  +              }
  +            }
  +
               $text=$this->macro_repl('attachment',substr($text,11),1);
               $text=qualifiedUrl($this->url_prefix.'/'.$text);
             }
             if (preg_match("/^(http|ftp).*\.(png|gif|jpeg|jpg)$/i",$text)) {
               $atext=$atext ? $atext:$text;
               $text=str_replace('&','&amp;',$text);
  -            return "<a class='externalLink named' href='$link' $attr $this->external_target title='$url'><img class='external' style='border:0px' alt='$atext' src='$text' /></a>";
  +            return "<a class='externalLink named' href='$link' $attr $this->external_target title='$url'><img class='external' style='border:0px' alt='$atext' src='$text' $img_attr/></a>";
             }
             if ($this->external_on)
               $external_link='<span class="externalLink">('.$url.')</span>';
  @@ -2542,6 +2551,7 @@
         $markups=preg_replace('/&(?!#?[a-z0-9]+;)/i','&amp;',$markups);
         $bra= "<span class='wikiMarkup'><!-- wiki:\n[[$markups]]\n-->";
         $ket= '</span>';
  +      $options['nomarkup']=1; // for the attachment macro
       }
       if (!$value and $match[1] and $match[2]) { #strpos($macro,'(') !== false)) {
         $name=$match[1]; $args=($match[2] and !$match[3]) ? true:$match[3];
  
  
  


wkpark      2007/11/29 00:57:19

  Modified:    local    moniwyg.js
  Log:
  fix for arguments of a macro syntax
  
  Revision  Changes    Path
  1.38      +73 -22    moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- moniwyg.js	27 Nov 2007 15:07:45 -0000	1.37
  +++ moniwyg.js	28 Nov 2007 15:57:19 -0000	1.38
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.37 2007/11/27 15:07:45 wkpark Exp $
  +// $Id: moniwyg.js,v 1.38 2007/11/28 15:57:19 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -1224,8 +1224,13 @@
                       var trail=this.output[this.output.length-1];
                       if (!trail.match(/\s$/)) this.appendOutput(' ');
                   }
  -                this.appendOutput(element.getAttribute('alt')+ ' ');
  -                return;
  +                var alt=element.getAttribute('alt');
  +                if (!alt.match(/attachment:/)) {
  +                    this.appendOutput(alt);
  +                    this.appendOutput(' ');
  +                    return;
  +                }
  +                uri=alt;
               }
           }
   
  @@ -1810,6 +1815,33 @@
       //return string.replace(/\r\n|\r/g, "\n"); // FIX
   }
   
  +
  +proto.get_macro_args = function(arg,attr) {
  +    var attrs=[];
  +    var vals=arg.split(/,/);
  +    for (var i=0;i < vals.length;i++) {
  +        var p;
  +        var v=vals[i].replace(/^\s+/,'').replace(/\s+$/,'');
  +        if ((p=v.indexOf('='))!= -1) {
  +            var k=v.substr(0,p);
  +            var vv=v.substr(p+1);
  +            attrs[k]=vv;
  +        } else
  +            attrs[v]='';
  +    }
  +    attrs['width']=attr['width'];
  +    attrs['height']=attr['height'];
  +    if (attr['align']) attrs['align']=attr['align'];
  +
  +    var args=[];
  +    for (var key in attrs) {
  +        if (typeof attrs[key] == 'function') continue;
  +        var val=attrs[key];
  +        args.push(key + (val ? '=' + val:''));
  +    }
  +    return args.join(',');
  +}
  +
   proto.get_wiki_comment = function(element) {
       for (var node = element.firstChild; node; node = node.nextSibling) {
           if (node.nodeType == this.COMMENT_NODE_TYPE
  @@ -1820,7 +1852,7 @@
               if (ele.tagName == 'A') ele=ele.firstChild;
               var b;
   
  -            if (ele && (b=node.data.match(/\n(\[?)attachment:/)) && ele.tagName == 'IMG') {
  +            if (ele && (b=node.data.match(/\n(\[+)?attachment(:|\()/i)) && ele.tagName == 'IMG') {
                   // check the attributes of the attached images
                   var style = ele.getAttribute('style');
                   var width = ele.getAttribute('width');
  @@ -1828,10 +1860,10 @@
                   var myclass = ele.getAttribute('class') || ele.getAttribute('className');
                   var align = '';
   
  -                var attr=new Array();
  +                var attr={};
   
  -                if (width) attr["width"]='width='+width;
  -                if (height) attr["height"]='height='+height;
  +                if (width) attr["width"]=width;
  +                if (height) attr["height"]=height;
                   ele.setAttribute('width','');
                   ele.setAttribute('height','');
   
  @@ -1839,8 +1871,8 @@
                       if (typeof style == 'object') style = style.cssText;
                       var m = style.match(/width:\s*(\d+)px;\s*height:\s*(\d+)px/);
                       if (m) {
  -                        if (m[1]) attr["width"]='width='+m[1];
  -                        if (m[2]) attr["height"]='height='+m[2];
  +                        if (m[1]) attr["width"]=m[1];
  +                        if (m[2]) attr["height"]=m[2];
                           ele.setAttribute('style',null);
                       }
                   }
  @@ -1848,7 +1880,7 @@
                   if (myclass) {
                       var m = myclass.match(/img(Center|Left|Right)$/);
                       if (m && m[1]) {
  -                        attr["align"]='align='+m[1].toLowerCase();
  +                        attr["align"]=m[1].toLowerCase();
                           align=attr["align"];
                       }
                   }
  @@ -1858,8 +1890,8 @@
                       var tattr=new Array();
   
                       for (var key in attr) {
  -                        var value = attr[key];
  -                        if (typeof value == 'function') continue;
  +                        if (typeof attr[key] == 'function') continue;
  +                        var value = key + '='+attr[key];
                           tattr.push(value);
                       }
   
  @@ -1881,18 +1913,18 @@
                           for (var j=0;j<oldattr.length;j++) {
                               var dum=oldattr[j].split("=");
                               if (!width && dum[0] == "width") {
  -                                newattr["width"]=oldattr[j];
  +                                newattr["width"]=dum[1];
                               } else if (!height && dum[0] == "height") {
  -                                newattr["height"]=oldattr[j];
  +                                newattr["height"]=dum[1];
                               } else if (!align && dum[0] == "align") {
  -                                newattr["align"]=oldattr[j];
  +                                newattr["align"]=dum[1];
                               }
                           }
                           if (newattr) {
                               var tattr=[];
                               for (var key in newattr) {
  -                                var value = newattr[key];
  -                                if (typeof value == 'function') continue;
  +                                if (typeof newattr[key] == 'function') continue;
  +                                var value = key + '=' + newattr[key];
                                   tattr.push(value);
                               }
                               var old=tattr.join("&");
  @@ -1900,15 +1932,34 @@
                           } else {
                               newquery=oldquery+'&'+newquery;
                           }
  -                        if (b[1])
  -                            node.data= node.data.replace(/(attachment:[^\s\?]+)\?[^\s]+(\s)/,'$1?'+newquery+' ');
  +                        if (b[1]) {
  +                            if (b[1]=='[')
  +                                node.data= node.data.replace(/(attachment:[^\s\?]+)\?[^\s]+(\s)/,'$1?'+newquery+' ');
  +                            else {
  +                                var m= node.data.match(/Attachment\((.*)\)\]/);
  +                                if (m[1]) {
  +                                    var arg = this.get_macro_args(m[1],attr);
  +                                    node.data= node.data.replace(/Attachment\((.*)\)/,
  +                                            'Attachment(' + arg + ')');
  +                                }
  +                            }
  +                        }
                           else node.data=orig+'?'+newquery;
                       } else {
                           node.data = node.data.replace(/\n+$/,""); // strip \n
                           if (newquery) {
  -                            if (b[1])
  -                                node.data= node.data.replace(/(attachment:[^\s]+)(\s)/,'$1'+'?'+newquery+' ');
  -                            else
  +                            if (b[1]) {
  +                                if (b[1]=='[')
  +                                    node.data= node.data.replace(/(attachment:[^\s]+)(\s)/,'$1'+'?'+newquery+' ');
  +                                else {
  +                                    var m= node.data.match(/Attachment\((.*)\)\]/);
  +                                    if (m[1]) {
  +                                        var arg = this.get_macro_args(m[1],attr);
  +                                        node.data= node.data.replace(/Attachment\((.*)\)/,
  +                                            'Attachment(' + arg + ')');
  +                                    }
  +                                }
  +                            } else
                                   node.data+='?'+newquery;
                           }
                       }
  
  
  


wkpark      2007/11/29 23:21:24

  Modified:    plugin   Attachment.php
  Log:
  support image captions
  e.g) [[Attachment(foo.png,caption=Hello World)]]
  fixed image alignment method.
  
  Revision  Changes    Path
  1.32      +57 -13    moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- Attachment.php	27 Nov 2007 15:08:48 -0000	1.31
  +++ Attachment.php	29 Nov 2007 14:21:24 -0000	1.32
  @@ -1,5 +1,5 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2007 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a Attachment macro plugin for the MoniWiki
   //
  @@ -7,13 +7,13 @@
   // Name: Attachment
   // Description: Attachment Plugin
   // URL: MoniWiki:AttachmentPlugin
  -// Version: $Revision: 1.31 $
  +// Version: $Revision: 1.32 $
   // Depend: 1.1.3
   // License: GPL
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.31 2007/11/27 15:08:48 wkpark Exp $
  +// $Id: Attachment.php,v 1.32 2007/11/29 14:21:24 wkpark Exp $
   
   function macro_Attachment($formatter,$value,$options='') {
     global $DBInfo;
  @@ -27,6 +27,9 @@
     $extra_action='';
   
     $text='';
  +  $caption='';
  +  $cap_bra='';
  +  $cap_ket='';
   
     if ($options and !$DBInfo->security->is_allowed($mydownload,$options))
       return $text;
  @@ -38,10 +41,11 @@
       $ket= '</span>';
     }
   
  -  if (($p=strpos($value,' ')) !== false) {
  -    // [attachment:my.ext hello]
  -    // [attachment:my.ext attachment:my.png]
  -    // [attachment:my.ext http://url/../my.png]
  +  if (($p = strpos($value,' ')) !== false and (strpos(substr($value,0,$p),','))=== false) {
  +    // [[Attachment(my.png,width=100,height=200,caption="Hello(space)World")]]
  +    // [attachment:my.ext(space)hello]
  +    // [attachment:my.ext(space)attachment:my.png]
  +    // [attachment:my.ext(space)http://url/../my.png]
       if ($value[0]=='"' and ($p2=strpos(substr($value,1),'"')) !== false) {
         $text=$ntext=substr($value,$p2+3);
         $dummy=substr($value,1,$p2); # "my image.png" => my image.png
  @@ -56,7 +60,8 @@
         $ntext=macro_Attachment($formatter,$fname,array('link'=>1));
       }
       if (preg_match("/\.(png|gif|jpeg|jpg)$/i",$ntext)) {
  -      if (!file_exists($ntext)) {
  +      $_l_ntext=_l_filename($ntext);
  +      if (!file_exists($_l_ntext)) {
           $fname=preg_replace('/^"([^"]*)"$/',"\\1",$fname);
           $mydownload='UploadFile&amp;rename='.$fname;
           $text=sprintf(_("Upload new Attachment \"%s\""),$fname);
  @@ -65,7 +70,12 @@
         $ntext=qualifiedUrl($DBInfo->url_prefix.'/'.$ntext);
         $img_link='<img src="'.$ntext.'" alt="'.$text.'" border="0" />';
       } else {
  -      $alt=$ntext;
  +      if (($q=strpos($ntext,','))!== false) {
  +        $alt=substr($ntext,0,$q);
  +        $caption=substr($ntext,$q+1);
  +      } else {
  +        $alt=$ntext;
  +      }
       }
     } else {
       $value=str_replace('%20',' ',$value);
  @@ -99,8 +109,21 @@
       # for Attachment macro
       $args=explode(',',substr($value,$dummy+1));
       $value=substr($value,0,$dummy);
  -    foreach ($args as $arg)
  -      $attr.="$arg ";
  +    foreach ($args as $arg) {
  +      list($k,$v)=split('=',trim($arg),2);
  +      if ($v) {
  +        if (in_array($k,array('width','height'))) {
  +          $attrs[trim($k)]=$v;
  +          $attr.="$arg ";
  +        } else if ($k=='align') {
  +          $imgalign='img'.ucfirst($v);
  +          $align='class="'.$imgalign.'" ';
  +        } else if ($k=='caption') {
  +          $caption=preg_replace("/^([\"'])([^\\1]+)\\1$/","\\2",trim($v));
  +          #$caption=preg_replace('/^"([^"]*)"$/',"\\1",trim($v));
  +        }
  +      }
  +    }
     }
   
     $attr.=$lightbox_attr;
  @@ -135,6 +158,26 @@
   
     if (file_exists($_l_upload_file)) {
   
  +    $imgcls='imgAttach';
  +
  +    if ($imgalign == 'imgCenter' or ($caption && !$imgalign)) {
  +      if (!$attrs['width']) {
  +        $size=getimagesize($_l_upload_file); // XXX
  +        $attrs['width']=$size[0];
  +      }
  +      $img_width=' style="width:'.$attrs['width'].'px"';
  +    }
  +
  +    if ($caption) {
  +      $cls=$imgalign ? 'imgContainer '.$imgalign:'imgContainer'; 
  +      $caption='<div class="imgCaption">'.$caption.'</div>';
  +      $cap_bra='<div class="'.$cls.'"'.$img_width.'>';
  +      $cap_ket='</div>';
  +      $img_width='';
  +    } else {
  +      $imgcls=$imgalign ? 'imgAttach '.$imgalign:'imgAttach';
  +    }
  +
       $sz=filesize($_l_upload_file);
       $unit=array('Bytes','KB','MB','GB','TB');
       for ($i=0;$i<4;$i++) {
  @@ -163,8 +206,9 @@
           $img="<a href='$url'>$img</a>";
         } else if (preg_match('@^(https?|ftp)://@',$alt))
           $img="<a href='$alt'>$img</a>";
  -      
  -      return $bra."<span class=\"imgAttach\">$img</span>".$ket;
  +
  +      return $bra.$cap_bra."<div class=\"$imgcls\"$img_width>$img$caption</div>".$cap_ket.$ket;
  +      #return $bra.$cap_bra."<span class=\"$cls\">$img$caption</span>".$cap_ket.$ket;
       } else {
         $mydownload= $extra_action ? $extra_action:$mydownload;
         $link=$formatter->link_url(_urlencode($pagename),"?action=$mydownload&amp;value=".urlencode($value),$text);
  
  
  


wkpark      2007/11/29 23:22:30

  Modified:    css      _extra.css
  Log:
  fixed image alignment method.
  
  Revision  Changes    Path
  1.12      +18 -0     moniwiki/css/_extra.css
  
  Index: _extra.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_extra.css,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- _extra.css	15 May 2007 11:18:39 -0000	1.11
  +++ _extra.css	29 Nov 2007 14:22:30 -0000	1.12
  @@ -297,3 +297,21 @@
    .searchword3 { background: #ccf }
    .searchword4 { background: #fcf }
   }
  +
  +.imgLeft { margin-right:5px;float:left; clear:right;}
  +.imgRight { margin-left:5px;float:right; clear:left;}
  +.imgCenter { margin-left: auto; margin-right: auto; }
  +
  +.imgCaption {
  +  font-size:.8em;
  +  text-indent:0;
  +  margin:0;
  +  clear:both;
  +}
  +
  +.imgContainer {
  +  padding:5px;
  +  border:1px solid silver;
  +}
  +
  +.imgAttach {}
  
  
  


wkpark      2007/11/30 02:14:01

  Added:       lib      metadata.php
  Log:
  simple BugTrack system added
  
  Revision  Changes    Path
  1.1                  moniwiki/lib/metadata.php
  
  Index: metadata.php
  ===================================================================
  <?php
  //
  // Metadata module for MoniWiki
  //
  // $Id: metadata.php,v 1.1 2007/11/29 17:14:00 wkpark Exp $
  
  function getMetadata($raw,$mode=1,$opts=array()) {
  
      $metas=explode("\n",$raw);
      $meta=array();
      foreach ($metas as $line) {
          if (!trim($line)) break;
          if (($p=strpos($line,':'))!== false) {
              list($mykey,$val)=explode(':',$line,2);
              $val=trim($val);
              # strip leading bullet' * '
              $mykey=preg_replace('/^\s*(\*|\d.)?\s*/','',$mykey);
              if (strpos($mykey,' ')!== false)
                  $mykey=str_replace(' ','-',ucwords($mykey));
  
              $mymeta=array();
              if (trim($val)) {
                  $vals=explode(',',$val);
                  foreach ($vals as $v) {
                      $v=trim($v);
                      if ($v) $mymeta[]=trim($v);
                  }
                  $meta[$mykey]=$mymeta;
              }
  
  #            if (strpos($val,' ')!== false) {
  #                #$val=str_replace('"','\"',$val);
  #                $val=str_replace('"','',$val);
  #                $val='"'.trim($val).'"';
  #            }
  #            $meta[$mykey][]=$val;
          }
      }
      if ($mode==1) {
          foreach ($meta as $k=>$v) {
              array_unique($v);
              $val=implode(", ",$v);
              $metadata[$k]=$val;
          }
          return $metadata;
      }
      return ($meta);
  }
  
  // vim:et:sts=4:sw=4:
  ?>
  
  
  


wkpark      2007/11/30 02:14:01

  Added:       plugin   InputForm.php
  Log:
  simple BugTrack system added
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/InputForm.php
  
  Index: InputForm.php
  ===================================================================
  <?php
  // Copyright 2006 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a sample plugin for the MoniWiki
  //
  // Usage: [[Test]]
  //
  // $Id: InputForm.php,v 1.1 2007/11/29 17:14:01 wkpark Exp $
  
  function macro_InputForm($formatter,$value,$options=array()) {
      $out='';
      $type='select';
      $name='val[]';
  
      if (empty($value)) return "</form>\n";
      if (strpos($value,':')!==false)
          list($type,$value)=explode(':',$value,2);
  
      if (!in_array($type,array('form','select','input','submit','checkbox','radio')))
          $type='select';
  
      $myname=$name;
      switch($type) {
      case 'form':
          list($method,$action,$dum)=explode(':',$value);
          $method= in_array(strtolower($method),array('post','get')) ? $method:'get';
          $url=$formatter->link_url($formatter->page->urlname);
          $out="<form method='$method' action='$url'>\n".
              "<input type='hidden' name='action' value='$action' />\n";
          break;
      case 'submit':
          $out.="<input type='$type' name='$name' value='$value' />\n";
          break;
      case 'input':
          list($myname,$size,$value)=explode(':',$value,3);
          $size=$size ? "size='$size'":'';
          $out.="<input type='$type' {$size}name='$myname' value='$value' />\n";
          break;
      case 'select':
      default:
          list($myname,$value)=explode(':',$value);
          $list=explode(',',$value);
  
          $out.='<option>----</option>'."\n";
          foreach ($list as $l) {
              $l=trim($l);
              if (($p=strrpos($l,' ')) !== false and substr($l,$p+1) == 1) {
                  $check=' selected="selected"';
                  $l=substr($l,0,-1);
              } else $check='';
              $out.="<option value='".$l."'$check>"._($l)."</option>\n";
          }
          $out="<select name='$myname'>".$out."</select>\n";
          break;
      }
  
      return $out;
  }
  
  // vim:et:sts=4:sw=4
  ?>
  
  
  


wkpark      2007/11/30 02:14:01

  Added:       plugin/processor bts.php
  Log:
  simple BugTrack system added
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/processor/bts.php
  
  Index: bts.php
  ===================================================================
  <?php
  // Copyright 2006 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a bug track system plugin for the MoniWiki
  //
  // $Id: bts.php,v 1.1 2007/11/29 17:14:01 wkpark Exp $
  
  include_once("lib/metadata.php");
  
  function _get_btsConfig($raw) {
      $meta='';
      $body=&$raw;
      while(true) {
          list($line,$body)=explode("\n",$body,2);
          if ($line[0]=='#') continue;
          if (strpos($line,':')===false or trim($line)=='') break;
          $meta.=$line."\n";
      }
  
      return getMetadata($meta,1);
  }
  
  function processor_bts($formatter,$value='',$options='') {
      global $DBInfo;
  
      $rating_script=&$GLOBALS['rating_script'];
  
      $script=<<<SCRIPT
  <script type="text/javascript">
  /*<![CDATA[*/
  /* from bugzilla script with small fix */
    /* Outputs a link to call replyToComment(); used to reduce HTML output */
    function addReplyLink(id) {
      /* XXX this should really be updated to use the DOM Core's
       * createElement, but finding a container isn't trivial */
      document.write('[<a href="#add_comment" onclick="replyToComment(' + 
          id + ');">reply<' + '/a>]');
    }
  
    /* Adds the reply text to the `comment' textarea */
    function replyToComment(id) {
      /* pre id="comment_name_N" */
      var text_elem = document.getElementById('comment_text_'+id);
      var text = getText(text_elem);
  
      /* make sure we split on all newlines -- IE or Moz use \\r and \\n
       * respectively */
      text = text.split(/\\r|\\n/);
  
      var replytext = "";
      for (var i=0; i < text.length; i++) {
          replytext += "> " + text[i] + "\\n"; 
      }
  
      replytext = "(In reply to comment #" + id + ")\\n" + replytext + "\\n";
  
      /* <textarea name="savetext"> */
      var textarea = document.getElementsByTagName('textarea');
      textarea[0].value += replytext;
  
      textarea[0].focus();
    }
  
    if (!Node) {
      /* MSIE doesn't define Node, so provide a compatibility array */
      var Node = {
          TEXT_NODE: 3,
          ENTITY_REFERENCE_NODE: 5
      };
    }
  
    /* Concatenates all text from element's childNodes. This is used
     * instead of innerHTML because we want the actual text (and
     * innerText is non-standard) */
    function getText(element) {
      var child, text = "";
      for (var i=0; i < element.childNodes.length; i++) {
          child = element.childNodes[i];
          var type = child.nodeType;
          if (type == Node.TEXT_NODE || type == Node.ENTITY_REFERENCE_NODE) {
              text += child.nodeValue;
          } else {
              /* recurse into nodes of other types */
              text += getText(child);
          }
      }
      return text;
    }
  /*]]>*/
  </script>
  SCRIPT;
  
      if ($value[0]=='#' and $value[1]=='!')
          list($arg,$value)=explode("\n",$value,2);
      if ($arg) {
          # get parameters
          list($tag, $user, $date, $title)=explode(" ",$line, 4);
  
          if (preg_match('/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/',$user))
          $user="Anonymous[$user]";
  
          if ($date && $date[10] == 'T') {
              $date[10]=' ';
              $time=strtotime($date.' GMT');
              $date= '@ '.date('Y-m-d [h:i a]',$time);
          }
      }
  
      $bts_conf='BugTrack/Config';
      if ($DBInfo->hasPage($bts_conf)) {
          $p=new WikiPage($bts_conf);
          $config_raw=$p->get_raw_body();
          $confs=_get_btsConfig($config_raw);
          #print_r($confs);
      }
      
      $body=$value;
      # parse metadata
      $meta='';
      while(true) {
          list($line,$body)=explode("\n",$body,2);
          if ($line[0]=='#') continue;
          if (strpos($line,':')===false or !trim($line)) break;
          $meta.=$line."\n";
      }
  
      $metas=getMetadata($meta);
      $head="##[[InputForm(form:get:bts)]]\n##[[HTML(<table><tr><td valign='top'>)]]\n";
      $extra='';
      foreach ($metas as $k=>$v) {
          $kk=$k;
          if (in_array($k,array('Version','Component'))) {
              $kk=str_replace(' ','-',ucwords($metas['Product'])).'-'.$k;
          }
          if ($k[0]=='X' and $k[1]=='-') {
              if ($confs[$kk])
                  $v='[[InputForm(:'.$kk.':'.str_replace($v,$v.' 1',$confs[$kk]).')]]';
              $k=substr($k,2);
              if ($k=='Separator') {
                  $head.="\n##\n##[[HTML(</td><td valign='top'>)]]\n";
              } else {
                  if ($k=='Date-Submitted') $v='[[DateTime('.$v.')]]';
                  $head.="|| ''".$k."'' || ".$v." ||\n";
              }
          } else {
              if ($k=='Summary' or $k=='Keywords') {
                  $v=str_replace(':','&#58;',$v);
                  $v='[[InputForm(input:'.$k.':'.$confs[$k].':'.$v.')]]';
                  $extra.="||'''$k'''||$v||\n";
              } else {
                  if ($confs[$kk])
                      $v='[[InputForm(:'.$kk.':'.str_replace($v,$v.' 1',$confs[$kk]).')]]';
                  $head.="|| '''".$k."''' ||".$v." ||\n";
              }
          }
      }
      $head.=
          "\n##\n\n##[[HTML(</td></tr></table>)]]\n".
          $extra."\n".
          "[[InputForm(submit:Save Changes)]]\n##[[InputForm]]";
      print <<<HEAD
  <fieldset id="bts-properties"><legend>Change Properties</legend>
  HEAD;
      $formatter->send_page($head,$options);
      print <<<TAIL
  </fieldset>
  TAIL;
  
      if ($body) {
          $options['nosisters']=1;
  
          $copy=$body;
          $hidden='';
          list($comment,$copy)=explode("----\n",$copy,2);
          while(!empty($comment)) {
              list($comment,$copy)=explode("----\n",$copy,2);
              if (preg_match('/^Comment-Id:\s*(\d+)/i',$comment,$m)) {
                  list($myhead,$my)=explode("\n\n",$comment,2);
                  $hidden.='<pre style="display:none;" id="comment_text_'.$m[1].'">'.htmlspecialchars($my).'</pre>';
              }
          }
  
          ob_start();
  
          # add some basic rule/repl for bts
          $rule="/----\nComment-Id:\s*(\d+)\n".
              "From:\s*([^\n]+)\nDate:\s*([^\n]+)\n\n/im";
          $repl="----\n'''Comment-Id:''' [#c\\1][#c\\1 #\\1] by \\2 on [[DateTime(\\3)]] [reply \\1]\n\n";
          $body=preg_replace($rule,$repl,$body);
  
          $formatter->quote_style='bts-comment';
          $options['usemeta']=1;
  
          #
          $formatter->baserule[]="/^((-=)+-?$)/";
          $formatter->baserule[]="/ comment #(\d+)\b/";
          $formatter->baserule[]="/Bug #?(\d+)\b/";
          $formatter->baserule[]="/\[reply (\d+)\]/";
  
          $formatter->baserepl[]="<hr />\n";
          $formatter->baserepl[]=" comment [#c\\1 #\\1]";
          $formatter->baserepl[]="wiki:BugTrack:\\1";
          $formatter->baserepl[]="<script type='text/javascript'><!--
              addReplyLink(\\1); //--></script>";
  
          #
          $formatter->send_page($body,$options);
          $msg= ob_get_contents();
          ob_end_clean();
      }
      if ($bts_script) return $msg.$hidden;
      $bts_script=1;
      return $script.$msg.$hidden;
  }
  
  // vim:et:sts=4::
  ?>
  
  
  


wkpark      2007/12/01 11:11:51

  Modified:    local    moniwyg.js
  Log:
  support img resizing for a img with a caption
  
  Revision  Changes    Path
  1.39      +4 -3      moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- moniwyg.js	28 Nov 2007 15:57:19 -0000	1.38
  +++ moniwyg.js	1 Dec 2007 02:11:51 -0000	1.39
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.38 2007/11/28 15:57:19 wkpark Exp $
  +// $Id: moniwyg.js,v 1.39 2007/12/01 02:11:51 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -1847,9 +1847,10 @@
           if (node.nodeType == this.COMMENT_NODE_TYPE
               && node.data.match(/^\s*wiki/)) {
               // for <span class='imgAttach'><img src=...
  -            var ele=node.nextSibling ? node.nextSibling.firstChild:null;
  +            //var ele=node.nextSibling ? node.nextSibling.firstChild:null;
               // for <span class='imgAttach'><a href=''><img src=...
  -            if (ele.tagName == 'A') ele=ele.firstChild;
  +            //if (ele.tagName == 'A') ele=ele.firstChild;
  +            var ele=node.parentNode.getElementsByTagName('img')[0];
               var b;
   
               if (ele && (b=node.data.match(/\n(\[+)?attachment(:|\()/i)) && ele.tagName == 'IMG') {
  
  
  


wkpark      2007/12/02 20:18:12

  Modified:    lib      HTTPClient.php
  Log:
  fixed cookie bug.
  
  Revision  Changes    Path
  1.3       +8 -2      moniwiki/lib/HTTPClient.php
  
  Index: HTTPClient.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/HTTPClient.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- HTTPClient.php	20 Nov 2007 12:54:19 -0000	1.2
  +++ HTTPClient.php	2 Dec 2007 11:18:12 -0000	1.3
  @@ -256,8 +256,14 @@
           // handle headers and cookies
           $this->resp_headers = $this->_parseHeaders($r_headers);
           if(isset($this->resp_headers['set-cookie'])){
  -            foreach ($this->resp_headers['set-cookie'] as $c){
  -                list($key, $value, $foo) = split('=', $cookie);
  +            if (is_array($this->resp_headers['set-cookie'])) {
  +                foreach ($this->resp_headers['set-cookie'] as $c){
  +                    list($key, $value, $foo) = split('=', $c);
  +                    $this->cookies[$key] = $value;
  +                }
  +            } else {
  +                $c=$this->resp_headers['set-cookie'];
  +                list($key, $value, $foo) = split('=', $c);
                   $this->cookies[$key] = $value;
               }
           }
  
  
  


wkpark      2007/12/02 22:51:21

  Modified:    lib      HTTPClient.php
  Log:
  fix last changes
  
  Revision  Changes    Path
  1.4       +10 -4     moniwiki/lib/HTTPClient.php
  
  Index: HTTPClient.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/HTTPClient.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- HTTPClient.php	2 Dec 2007 11:18:12 -0000	1.3
  +++ HTTPClient.php	2 Dec 2007 13:51:21 -0000	1.4
  @@ -258,13 +258,19 @@
           if(isset($this->resp_headers['set-cookie'])){
               if (is_array($this->resp_headers['set-cookie'])) {
                   foreach ($this->resp_headers['set-cookie'] as $c){
  -                    list($key, $value, $foo) = split('=', $c);
  -                    $this->cookies[$key] = $value;
  +                    $cs=explode(';',$c);
  +                    foreach ($cs as $c) {
  +                        list($key, $value) = split('=', $c, 2);
  +                        $this->cookies[trim($key)] = $value;
  +                    }
                   }
               } else {
                   $c=$this->resp_headers['set-cookie'];
  -                list($key, $value, $foo) = split('=', $c);
  -                $this->cookies[$key] = $value;
  +                $cs=explode(';',$c);
  +                foreach ($cs as $c) {
  +                    list($key, $value) = split('=', $c, 2);
  +                    $this->cookies[trim($key)] = $value;
  +                }
               }
           }
   
  
  
  


wkpark      2007/12/02 23:27:45

  Modified:    lib      openid.php
  Log:
  fixed myid.net problem reported by 1day1
  
  Revision  Changes    Path
  1.4       +13 -1     moniwiki/lib/openid.php
  
  Index: openid.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/openid.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- openid.php	20 Nov 2007 12:54:19 -0000	1.3
  +++ openid.php	2 Dec 2007 14:27:45 -0000	1.4
  @@ -205,10 +205,22 @@
   		$ret = array($servers, $delegates);
   		return $ret;
   	}
  +
  +	function getHTTPEquiv($content) {
  +		preg_match('/<meta http-equiv=("|\')?[^\\1]+\\1.*content=("|\')([^\\2]+)\\2.*>/i',$content,$match);
  +		list($dummy,$url)=explode('url=',$match[3],2);
  +		if ($url) return $url;
  +		return null;
  +	}
   	
   	function GetOpenIDServer() {
   		#$response = $this->Request($this->openid_url_identity);
  -          	$response = call_user_func(array(&$this,$this->_request),$this->openid_url_identity);
  +		$response = call_user_func(array(&$this,$this->_request),$this->openid_url_identity);
  +		$new_url=$this->getHTTPEquiv($response);
  +		if ($new_url) {
  +			if ($new_url{0}=='/') $new_url=$this->openid_url_identity.$new_url;
  +			$response = call_user_func(array(&$this,$this->_request),$new_url);
  +		}
   		list($servers, $delegates) = $this->HTML2OpenIDServer($response);
   		if (count($servers) == 0) {
   			$this->ErrorStore('OPENID_NOSERVERSFOUND');
  
  
  


wkpark      2007/12/02 23:38:20

  Modified:    lib      openid.php
  Log:
  support x-xrds-location too.
  
  Revision  Changes    Path
  1.5       +3 -2      moniwiki/lib/openid.php
  
  Index: openid.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/openid.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- openid.php	2 Dec 2007 14:27:45 -0000	1.4
  +++ openid.php	2 Dec 2007 14:38:20 -0000	1.5
  @@ -207,8 +207,9 @@
   	}
   
   	function getHTTPEquiv($content) {
  -		preg_match('/<meta http-equiv=("|\')?[^\\1]+\\1.*content=("|\')([^\\2]+)\\2.*>/i',$content,$match);
  -		list($dummy,$url)=explode('url=',$match[3],2);
  +		preg_match('/<meta http-equiv=("|\')?([^\\1]+)\\1.*content=("|\')?([^\\3]+)\\3.*>/i',$content,$match);
  +		if (strtolower($match[2])=='refresh') list($dummy,$url)=explode('url=',$match[4],2);
  +		else if (in_array(strtolower($match[1]),array('x-xrds-location', 'x-yadis-location'))) $url=$match[4];
   		if ($url) return $url;
   		return null;
   	}
  
  
  


wkpark      2007/12/03 23:30:05

  Modified:    plugin   Attachment.php
  Log:
  use the icon[attach]
  
  Revision  Changes    Path
  1.33      +3 -3      moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- Attachment.php	29 Nov 2007 14:21:24 -0000	1.32
  +++ Attachment.php	3 Dec 2007 14:30:05 -0000	1.33
  @@ -7,13 +7,13 @@
   // Name: Attachment
   // Description: Attachment Plugin
   // URL: MoniWiki:AttachmentPlugin
  -// Version: $Revision: 1.32 $
  +// Version: $Revision: 1.33 $
   // Depend: 1.1.3
   // License: GPL
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.32 2007/11/29 14:21:24 wkpark Exp $
  +// $Id: Attachment.php,v 1.33 2007/12/03 14:30:05 wkpark Exp $
   
   function macro_Attachment($formatter,$value,$options='') {
     global $DBInfo;
  @@ -215,7 +215,7 @@
         if ($img_link)
           return $bra."<span class=\"attach\"><a href='$link'>$img_link</a></span>".$ket;
   
  -      return $bra."<span class=\"attach\"><img src='$DBInfo->imgs_dir_interwiki".'uploads-16.png\' /><a href="'.$link.'">'.$text.'</a></span>'.$info.$ket;
  +      return $bra."<span class=\"attach\">".$formatter->icon['attach'].'<a href="'.$link.'">'.$text.'</a></span>'.$info.$ket;
       }
     }
   
  
  
  


wkpark      2007/12/03 23:50:28

  Modified:    plugin   Attachment.php
  Log:
  set img width correctly
  
  Revision  Changes    Path
  1.34      +3 -3      moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- Attachment.php	3 Dec 2007 14:30:05 -0000	1.33
  +++ Attachment.php	3 Dec 2007 14:50:28 -0000	1.34
  @@ -7,13 +7,13 @@
   // Name: Attachment
   // Description: Attachment Plugin
   // URL: MoniWiki:AttachmentPlugin
  -// Version: $Revision: 1.33 $
  +// Version: $Revision: 1.34 $
   // Depend: 1.1.3
   // License: GPL
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.33 2007/12/03 14:30:05 wkpark Exp $
  +// $Id: Attachment.php,v 1.34 2007/12/03 14:50:28 wkpark Exp $
   
   function macro_Attachment($formatter,$value,$options='') {
     global $DBInfo;
  @@ -165,8 +165,8 @@
           $size=getimagesize($_l_upload_file); // XXX
           $attrs['width']=$size[0];
         }
  -      $img_width=' style="width:'.$attrs['width'].'px"';
       }
  +    if ($attrs['width']) $img_width=' style="width:'.$attrs['width'].'px"';
   
       if ($caption) {
         $cls=$imgalign ? 'imgContainer '.$imgalign:'imgContainer'; 
  
  
  


wkpark      2007/12/06 03:17:30

  Modified:    .        config.php.default
  Log:
  update
  
  Revision  Changes    Path
  1.44      +6 -1      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.43
  retrieving revision 1.44
  diff -u -r1.43 -r1.44
  --- config.php.default	3 Nov 2007 04:08:13 -0000	1.43
  +++ config.php.default	5 Dec 2007 18:17:30 -0000	1.44
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.43 2007/11/03 04:08:13 wkpark Exp $
  +# $Id: config.php.default,v 1.44 2007/12/05 18:17:30 wkpark Exp $
   #
   $sitename='UnnamedWiki'; # site name
   $data_dir= './data';
  @@ -70,6 +70,7 @@
   #$menu_cat='';
   #$path='/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin'; # for unixes
   #$path='./bin;c:/windows/command;c:/Program Files/gnuplot;c:/Program Files/vim/vim71'; # for win32
  +#$path='./bin;C:/Program Files/MiKTeX 2.5/miktex/bin;C:/Program Files/ImageMagick-6.3.6-Q16'; # for MikTeX
   # ./bin to use user installed bins.
   $theme='azblue';
   $theme_css=0;
  @@ -213,6 +214,7 @@
   #$raw_errlog=0; # do not hide some dir. infos.
   #$acl_type='default'; # XXX
   #$acl_debug=1;
  +#$default_download_image='/block.jpg';
   #$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.
  @@ -239,4 +241,7 @@
   #$icon_list='edit,diff,show,find,print,info,help'; # set the icon list
   #$use_folding=0; # 1:default simple js / 2:with the prototype/mootools
   #$use_etable=0; # use new extended table syntax: experimental
  +#$use_openid=0; # enable openid login
  +#$check_openid_url=0; # selectivly show openid icons: experimental
  +#$use_autosave=1; # enable autosave feature.
   ?>
  
  
  


wkpark      2007/12/06 03:18:12

  Modified:    plugin/security acl.php
  Log:
  fix for download control
  
  Revision  Changes    Path
  1.7       +11 -2     moniwiki/plugin/security/acl.php
  
  Index: acl.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/acl.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- acl.php	6 Oct 2007 02:10:38 -0000	1.6
  +++ acl.php	5 Dec 2007 18:18:12 -0000	1.7
  @@ -1,6 +1,6 @@
   <?php
   # a ACL security plugin for the MoniWiki (experimental)
  -# $Id: acl.php,v 1.6 2007/10/06 02:10:38 wkpark Exp $
  +# $Id: acl.php,v 1.7 2007/12/05 18:18:12 wkpark Exp $
   #
   # Please see also http://www.dokuwiki.org/wiki:discussion:acl2
   #
  @@ -44,7 +44,9 @@
               $this->AUTH_ACL= array('*   @ALL    allow   *');
           }
   
  -        $this->allowed_users=array_merge($DB->wikimasters,$DB->owners);
  +        $wikimasters=$DB->wikimasters ? $DB->wikimasters:array();
  +        $owners=$DB->owners ? $DB->owners:array();
  +        $this->allowed_users=array_merge($wikimasters,$owners);
       }
   
       function get_acl($action='read',&$options) {
  @@ -210,6 +212,13 @@
   
           $ret=$this->acl_check($action,$options);
           if ($ret == 0) {
  +            if ($action == 'download' and
  +                    preg_match('/\.(gif|png|jpg|jpeg)$/i',$options['value'])) {
  +                if ($this->DB->default_download_image)
  +                    $options['value']=$this->DB->default_download_image;
  +                return 1;
  +            }
  +            
               $options['err']=sprintf(_("You are not allowed to '%s' on this page"),$action);
               $options['err'].="\n"._("Please contact WikiMasters :b");
           }
  
  
  


wkpark      2007/12/15 14:56:26

  Modified:    locale   Makefile
  Log:
  update
  
  Revision  Changes    Path
  1.9       +2 -2      moniwiki/locale/Makefile
  
  Index: Makefile
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/Makefile,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Makefile	22 Jul 2006 11:15:46 -0000	1.8
  +++ Makefile	15 Dec 2007 05:56:26 -0000	1.9
  @@ -1,4 +1,4 @@
  -# $Id: Makefile,v 1.8 2006/07/22 11:15:46 wkpark Exp $
  +# $Id: Makefile,v 1.9 2007/12/15 05:56:26 wkpark Exp $
   #
   # locale/Makefile
   #
  @@ -16,7 +16,7 @@
   
   ${POT_FILE} : # dependencies are auto-generated by 'make dep' , see below
   	cp -f $@ $@~
  -	xgettext -L C++ -k_ -k__printf -k__sprintf -k__vsprintf -kfmt -o $@.extracted $^
  +	xgettext -L C++ -k_ -kt_ -k__printf -k__sprintf -k__vsprintf -kfmt -o $@.extracted $^
   	msgmerge -o $@ $@~ $@.extracted && rm -f $@.extracted
   
   po/%.po : ${POT_FILE}
  
  
  


wkpark      2007/12/15 14:56:26

  Modified:    locale/po fr.po ko.po moniwiki.pot
  Log:
  update
  
  Revision  Changes    Path
  1.18      +399 -274  moniwiki/locale/po/fr.po
  
  Index: fr.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/fr.po,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- fr.po	22 Jul 2006 11:15:46 -0000	1.17
  +++ fr.po	15 Dec 2007 05:56:26 -0000	1.18
  @@ -3,7 +3,7 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1\n"
  -"POT-Creation-Date: 2006-07-22 20:14+0900\n"
  +"POT-Creation-Date: 2007-12-15 14:20+0900\n"
   "PO-Revision-Date: 2003-08-17 22:51+0900\n"
   "Last-Translator: Serge Stinckwich <Serge.Stinckwich@info.unicaen.fr>\n"
   "Language-Team: fr <fr@li.org>\n"
  @@ -12,18 +12,18 @@
   "Content-Transfer-Encoding: 8bit\n"
   
   # ../plugin/Attachment.php:24
  -#: ../plugin/Attachment.php:42 ../plugin/Attachment.php:129
  +#: ../plugin/Attachment.php:70 ../plugin/Attachment.php:232
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr "Tlcharger le nouvel attachement \"%s\""
   
   # ../plugin/OeKaki.php:118
  -#: ../plugin/Attachment.php:126
  +#: ../plugin/Attachment.php:229
   msgid "or paste a new picture"
   msgstr "or Crer un nouveau dessin"
   
   # ../plugin/Attachment.php:24
  -#: ../plugin/Attachment.php:132
  +#: ../plugin/Attachment.php:235
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
  @@ -38,19 +38,19 @@
   msgid "Translate %s to %s"
   msgstr "Translate %s en %s"
   
  -#: ../plugin/Blog.php:85
  +#: ../plugin/Blog.php:84
   #, c-format
   msgid "Blog cache of \"%s\" is refreshed"
   msgstr ""
   
   # ../plugin/Blog.php:78
  -#: ../plugin/Blog.php:109
  +#: ../plugin/Blog.php:108
   #, c-format
   msgid "\"%s\" is updated"
   msgstr "\"%s\" est mis  jour"
   
   # ../plugin/Blog.php:83
  -#: ../plugin/Blog.php:114
  +#: ../plugin/Blog.php:113
   msgid "Add Blog"
   msgstr "Ajouter un blog"
   
  @@ -59,50 +59,65 @@
   msgid "Error: No blog entry found!"
   msgstr ""
   
  -#: ../plugin/Blog.php:162 ../plugin/Comment.php:144
  +#: ../plugin/Blog.php:164 ../plugin/Blog.php:166 ../plugin/Comment.php:157
   msgid "Error: Don't make a clone!"
   msgstr ""
   
   # ../plugin/Blog.php:137
  -#: ../plugin/Blog.php:179
  +#: ../plugin/Blog.php:192
   #, c-format
   msgid "Comment added to \"%s\""
   msgstr "Commentaire ajout  \"%s\""
   
   # ../plugin/Blog.php:140
  -#: ../plugin/Blog.php:182
  +#: ../plugin/Blog.php:195
   #, c-format
   msgid "Blog entry added to \"%s\""
   msgstr "Entre de blog ajout  \"%s\""
   
  +# ../plugin/Blog.php:140
  +#: ../plugin/Blog.php:197
  +#, c-format
  +msgid "Blog entry \"%s\" added"
  +msgstr "Entre de blog ajout  \"%s\""
  +
  +# ../plugin/Blog.php:140
  +#: ../plugin/Blog.php:199
  +msgid "Blog entry added"
  +msgstr "Entre de blog ajout "
  +
   # ../plugin/Blog.php:176
  -#: ../plugin/Blog.php:219
  +#: ../plugin/Blog.php:240
   #, c-format
   msgid "Add Comment to \"%s\""
   msgstr "Ajouter un commentaire  \"%s\""
   
   # ../plugin/Blog.php:178
  -#: ../plugin/Blog.php:221
  +#: ../plugin/Blog.php:242
   #, c-format
   msgid "Add Blog entry to \"%s\""
   msgstr "Ajouter une entre de blog  \"%s\""
   
  -#: ../plugin/Blog.php:235 ../plugin/Blog.php:290
  +#: ../plugin/Blog.php:260 ../plugin/Blog.php:333
   msgid "Name"
   msgstr ""
   
   # ../wiki.php:2950
  -#: ../plugin/Blog.php:239 ../plugin/Blog.php:291
  +#: ../plugin/Blog.php:262 ../plugin/Blog.php:334
   msgid "Title"
   msgstr "titre"
   
  +#: ../plugin/Blog.php:268 ../wikilib.php:869
  +msgid "GUI"
  +msgstr ""
  +
   # ../plugin/Blog.php:197
  -#: ../plugin/Blog.php:245 ../plugin/Comment.php:60
  +#: ../plugin/Blog.php:277 ../plugin/Comment.php:75
   msgid "Don't add a signature"
   msgstr "Ne pas ajouter de signature"
   
   # ../plugin/Blog.php:210
  -#: ../plugin/Blog.php:258
  +#: ../plugin/Blog.php:299
   msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
   msgstr "<b>Une rgle horizontale</b> ---- ne s'applique pas au mode blog."
   
  @@ -140,7 +155,7 @@
   msgstr "%d commentaires"
   
   # ../plugin/processor/blog.php:70
  -#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:133
  +#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:146
   #: ../plugin/processor/blog.php:78
   msgid "Add comment"
   msgstr "Ajouter un commentaire"
  @@ -182,92 +197,92 @@
   msgid "Cut & Paste a Clipboard Image"
   msgstr ""
   
  -# ../plugin/rename.php:27
  -#: ../plugin/Comment.php:58
  -msgid "Username"
  -msgstr ""
  -
   # ../plugin/processor/blog.php:78
  -#: ../plugin/Comment.php:61
  +#: ../plugin/Comment.php:59
   msgid "Comment"
   msgstr "commentaire"
   
   # ../wikilib.php:482
  -#: ../plugin/Comment.php:62 ../wikilib.php:798
  +#: ../plugin/Comment.php:60 ../wikilib.php:865
   msgid "Preview"
   msgstr "Prvisualisation"
   
  +# ../plugin/rename.php:27
  +#: ../plugin/Comment.php:73
  +msgid "Username"
  +msgstr ""
  +
   # ../wikilib.php:814
  -#: ../plugin/Comment.php:81
  +#: ../plugin/Comment.php:94
   msgid "Page is not writable"
   msgstr ""
   
   # ../wiki.php:3009
  -#: ../plugin/Comment.php:85
  +#: ../plugin/Comment.php:98
   msgid "You are not allowed to add a comment."
   msgstr ""
   
   # ../plugin/restore.php:27
  -#: ../plugin/Comment.php:86 ../plugin/Keywords.php:333
  +#: ../plugin/Comment.php:99 ../plugin/Keywords.php:355
   msgid "Page does not exists"
   msgstr ""
   
  -#: ../plugin/Comment.php:119 ../plugin/Gallery.php:166 ../wikilib.php:1207
  -#: ../wikilib.php:1351
  +#: ../plugin/Comment.php:132 ../plugin/Gallery.php:171 ../wikilib.php:1356
  +#: ../wikilib.php:1501
   msgid ""
   "Sorry, can not save page because some messages are blocked in this wiki."
   msgstr ""
   
   # ../wikilib.php:748 ../wikilib.php:777
  -#: ../plugin/Comment.php:124
  +#: ../plugin/Comment.php:137
   msgid "Preview comment"
   msgstr ""
   
   # ../plugin/Vote.php:109
  -#: ../plugin/Comment.php:191
  +#: ../plugin/Comment.php:259
   #, c-format
   msgid "%s is commented successfully"
   msgstr "Vote russi"
   
   # ../plugin/Vote.php:109
  -#: ../plugin/Comment.php:192
  +#: ../plugin/Comment.php:260
   msgid "Comment added successfully"
   msgstr ""
   
   # ../wiki.php:2211 ../wiki.php:2360
  -#: ../plugin/Diff.php:177 ../plugin/Info.php:188
  +#: ../plugin/Diff.php:207 ../plugin/Info.php:203
   msgid "No older revisions available"
   msgstr "Aucune rvision plus ancienne disponible"
   
   # ../wikilib.php:803
  -#: ../plugin/Diff.php:182 ../plugin/Info.php:194
  +#: ../plugin/Diff.php:212 ../plugin/Info.php:209
   msgid "Version info is not available in this wiki"
   msgstr ""
   
   # ../wiki.php:2338 ../wiki.php:2373 ../wikilib.php:770
  -#: ../plugin/Diff.php:193 ../wikilib.php:1338
  +#: ../plugin/Diff.php:223 ../wikilib.php:1488
   msgid "No difference found"
   msgstr "Aucune diffrence trouv"
   
   # ../wiki.php:2376
  -#: ../plugin/Diff.php:195
  +#: ../plugin/Diff.php:225
   msgid "Difference between versions"
   msgstr "Diffrence entre les versions"
   
   # ../wiki.php:2378
  -#: ../plugin/Diff.php:197 ../plugin/Diff.php:320
  +#: ../plugin/Diff.php:227 ../plugin/Diff.php:346
   #, c-format
   msgid "Difference between r%s and r%s"
   msgstr "Diffrence entre r%s et r%s"
   
   # ../wiki.php:2382
  -#: ../plugin/Diff.php:200 ../plugin/Diff.php:322
  +#: ../plugin/Diff.php:230 ../plugin/Diff.php:348
   #, c-format
   msgid "Difference between r%s and the current"
   msgstr "Diffrence entre r%s et la version courante"
   
   # ../locale/dummy.php:7
  -#: ../plugin/Diff.php:324
  +#: ../plugin/Diff.php:350
   msgid "latest changes"
   msgstr ""
   
  @@ -277,7 +292,7 @@
   msgstr "Faire un nouveau dessin"
   
   # ../plugin/Draw.php:48
  -#: ../plugin/Draw.php:81 ../plugin/UploadFile.php:154
  +#: ../plugin/Draw.php:81 ../plugin/UploadFile.php:212
   #, c-format
   msgid "Fail to copy \"%s\" to \"%s\""
   msgstr "Impossible de copier \"%s\" vers \"%s\""
  @@ -353,7 +368,7 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:44 ../plugin/VisualTour.php:104
  +#: ../plugin/FullSearch.php:44 ../plugin/VisualTour.php:124 ../wiki.php:3972
   msgid "Refresh"
   msgstr ""
   
  @@ -362,168 +377,176 @@
   msgid " (%s search results)"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:123
  +#: ../plugin/FullSearch.php:129
   msgid "Empty expression"
   msgstr ""
   
   # ../wikilib.php:1483
  -#: ../plugin/FullSearch.php:127 ../wikilib.php:2447
  +#: ../plugin/FullSearch.php:133 ../wikilib.php:2563
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "Expression de recherche \"%s\" invalide"
   
   # ../plugin/TwinPages.php:20
  -#: ../plugin/Gallery.php:235 ../plugin/UploadedFiles.php:200
  +#: ../plugin/Gallery.php:242 ../plugin/UploadedFiles.php:244
   msgid "No files found"
   msgstr ""
   
   # ../plugin/processor/blog.php:70
  -#: ../plugin/Gallery.php:314 ../plugin/Gallery.php:327
  +#: ../plugin/Gallery.php:333 ../plugin/Gallery.php:346
   msgid "add comment"
   msgstr ""
   
   # ../plugin/processor/blog.php:78
  -#: ../plugin/Gallery.php:324
  +#: ../plugin/Gallery.php:343
   msgid "show comments"
   msgstr ""
   
   # ../wikilib.php:769
  -#: ../plugin/Gallery.php:366 ../plugin/Gallery.php:370 ../wikilib.php:1194
  -#: ../wikilib.php:1336
  +#: ../plugin/Gallery.php:392 ../plugin/Gallery.php:396 ../wikilib.php:1343
  +#: ../wikilib.php:1486
   #, c-format
   msgid "Go back or return to %s"
   msgstr "Revenir en arrire ou retourner  %s"
   
  -#: ../plugin/Gallery.php:367
  +#: ../plugin/Gallery.php:393
   msgid "Comments are edited"
   msgstr ""
   
   # ../plugin/Blog.php:137
  -#: ../plugin/Gallery.php:371
  +#: ../plugin/Gallery.php:397
   msgid "Comments is added"
   msgstr ""
   
  -#: ../plugin/ImportUrl.php:111
  +#: ../plugin/ImportUrl.php:132
   msgid "Import URL"
   msgstr ""
   
  +#: ../plugin/Info.php:30
  +msgid "Diff"
  +msgstr ""
  +
   # ../wiki.php:2110
  -#: ../plugin/Info.php:28
  +#: ../plugin/Info.php:34
   msgid "Revision History"
   msgstr "Historique de rvision"
   
  -#: ../plugin/Info.php:51
  +#: ../plugin/Info.php:57
   msgid "Show all revisions"
   msgstr ""
   
  -#: ../plugin/Info.php:77
  +#: ../plugin/Info.php:83
   msgid "Yesterday"
   msgstr ""
   
  -#: ../plugin/Info.php:78
  +#: ../plugin/Info.php:84
   #, c-format
   msgid "%s days ago"
   msgstr ""
   
  -#: ../plugin/Info.php:80
  +#: ../plugin/Info.php:86
   #, c-format
   msgid "%s hours ago"
   msgstr ""
   
  -#: ../plugin/Info.php:82
  +#: ../plugin/Info.php:88
   #, c-format
   msgid "%s min ago"
   msgstr ""
   
  -#: ../plugin/Keywords.php:291
  +#: ../plugin/Info.php:149
  +msgid "diff"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:313
   msgid "hits"
   msgstr ""
   
  -#: ../plugin/Keywords.php:299
  +#: ../plugin/Keywords.php:321
   msgid "add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:302
  +#: ../plugin/Keywords.php:324
   msgid "Update keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:304
  +#: ../plugin/Keywords.php:326
   msgid "Add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:305
  +#: ../plugin/Keywords.php:327
   msgid "Add as common words"
   msgstr ""
   
  -#: ../plugin/Keywords.php:306
  +#: ../plugin/Keywords.php:328
   msgid "Unselect all"
   msgstr ""
   
  -#: ../plugin/Keywords.php:307
  +#: ../plugin/Keywords.php:329
   msgid "Suggest new Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:316
  +#: ../plugin/Keywords.php:338
   msgid "select language"
   msgstr ""
   
   # ../wiki.php:3009
  -#: ../plugin/Keywords.php:332
  +#: ../plugin/Keywords.php:354
   msgid "You are not able to add keywords."
   msgstr ""
   
   # ../wikilib.php:814
  -#: ../plugin/Keywords.php:346
  +#: ../plugin/Keywords.php:368
   #, c-format
   msgid "%s is not found."
   msgstr ""
   
  -#: ../plugin/Keywords.php:462
  +#: ../plugin/Keywords.php:484
   msgid "Common words are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:509
  +#: ../plugin/Keywords.php:531
   #, c-format
   msgid "Keywords for %s are updated"
   msgstr ""
   
   # ../plugin/quicklinks.php:38
  -#: ../plugin/Keywords.php:535
  +#: ../plugin/Keywords.php:557
   msgid "Keywords are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:537
  +#: ../plugin/Keywords.php:559
   msgid "There are no changes found"
   msgstr ""
   
  -#: ../plugin/Keywords.php:550
  +#: ../plugin/Keywords.php:572
   msgid "Update with these Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:570 ../plugin/Keywords.php:574
  +#: ../plugin/Keywords.php:592 ../plugin/Keywords.php:596
   msgid "alphabetically"
   msgstr ""
   
  -#: ../plugin/Keywords.php:571
  +#: ../plugin/Keywords.php:593
   msgid "by frequency"
   msgstr ""
   
  -#: ../plugin/Keywords.php:573
  +#: ../plugin/Keywords.php:595
   msgid "by size"
   msgstr ""
   
  -#: ../plugin/Keywords.php:579
  +#: ../plugin/Keywords.php:601
   #, c-format
   msgid "Keywords list %s (or %s)"
   msgstr ""
   
  -#: ../plugin/Keywords.php:584
  +#: ../plugin/Keywords.php:606
   #, c-format
   msgid "Select keywords for %s"
   msgstr ""
   
   # ../wikilib.php:672 ../wikilib.php:1472
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1085 ../wikilib.php:2436
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1184 ../wikilib.php:2552
   msgid "Use more specific text"
   msgstr "Utiliser un texte plus spcifique"
   
  @@ -688,7 +711,7 @@
   msgstr "TwinPages de %s"
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../plugin/TwinPages.php:19 ../wiki.php:4108
  +#: ../plugin/TwinPages.php:19 ../wiki.php:4700
   msgid "See [TwinPages]: "
   msgstr "Voir [TwinPages]: "
   
  @@ -698,71 +721,90 @@
   msgstr "Aucune TwinPages trouv"
   
   # ../wikilib.php:519
  -#: ../plugin/UploadFile.php:78
  +#: ../plugin/UploadFile.php:131
   #, c-format
   msgid "%s is not allowed to upload"
   msgstr "%s n'est pas une action valide"
   
  -#: ../plugin/UploadFile.php:127
  +#: ../plugin/UploadFile.php:180
   #, c-format
   msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
   msgstr ""
   
  -#: ../plugin/UploadFile.php:155
  +#: ../plugin/UploadFile.php:213
   msgid "Please check your php.ini setting"
   msgstr ""
   
   # ../wikilib.php:887
  -#: ../plugin/UploadFile.php:164
  +#: ../plugin/UploadFile.php:223
   #, c-format
   msgid "File \"%s\" is uploaded successfully"
   msgstr ""
   
   # ../wikilib.php:887
  -#: ../plugin/UploadFile.php:203
  +#: ../plugin/UploadFile.php:262
   msgid "Files are uploaded successfully"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:243
  -msgid ": Rename"
  +#: ../plugin/UploadFile.php:306
  +msgid "Replace original file"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:307
  +msgid "Rename if it already exist"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:236
  +# ../plugin/rename.php:27
  +#: ../plugin/UploadFile.php:312 ../plugin/rename.php:69
  +msgid "Rename"
  +msgstr "Renommer"
  +
  +# ../plugin/minilogin.php:30
  +#: ../plugin/UploadFile.php:320
  +#, c-format
  +msgid "or %s."
  +msgstr "ou %s"
  +
  +#: ../plugin/UploadFile.php:320
  +msgid "Upload files"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:281
   msgid "Next page &raquo;"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:238
  +#: ../plugin/UploadedFiles.php:283
   msgid "&laquo; First page"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:294
  +#: ../plugin/UploadedFiles.php:360
   #, c-format
   msgid "Total %d files"
   msgstr ""
   
   # ../plugin/rename.php:36
  -#: ../plugin/UploadedFiles.php:298 ../plugin/rename.php:77 ../wikilib.php:935
  -#: ../wikilib.php:1763
  +#: ../plugin/UploadedFiles.php:364 ../plugin/rename.php:77 ../wikilib.php:1034
  +#: ../wikilib.php:1900
   msgid "Password"
   msgstr "Mot de passe"
   
   # ../wikilib.php:550
  -#: ../plugin/UploadedFiles.php:299 ../wikilib.php:913
  +#: ../plugin/UploadedFiles.php:365 ../wikilib.php:1012
   msgid "Delete selected files"
   msgstr "Effacer les fichiers slectionns"
   
   # ../plugin/VisualTour.php:55
  -#: ../plugin/VisualTour.php:98
  +#: ../plugin/VisualTour.php:118
   msgid "Normal"
   msgstr ""
   
   # ../plugin/VisualTour.php:57
  -#: ../plugin/VisualTour.php:100
  +#: ../plugin/VisualTour.php:120
   msgid "Wider"
   msgstr "Plus large"
   
   # ../plugin/VisualTour.php:59
  -#: ../plugin/VisualTour.php:102
  +#: ../plugin/VisualTour.php:122
   msgid "Deeper"
   msgstr "Plus profond"
   
  @@ -783,7 +825,7 @@
   msgid "Voted successfully"
   msgstr "Vote russi"
   
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2189
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2305
   msgid "Others"
   msgstr ""
   
  @@ -899,12 +941,12 @@
   msgstr "Aucune page de manuel trouv"
   
   # ../locale/dummy.php:6 ../wiki.php:2553
  -#: ../plugin/man_get.php:104
  +#: ../plugin/man_get.php:112
   msgid "Edit"
   msgstr ""
   
   # ../plugin/minilogin.php:22 ../wikilib.php:1076
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1813
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1976
   msgid "Login or Join"
   msgstr "Se connecter ou se joindre "
   
  @@ -930,16 +972,16 @@
   msgstr ""
   
   # ../plugin/OeKaki.php:118
  -#: ../plugin/new.php:11 ../plugin/new.php:18
  +#: ../plugin/new.php:13 ../plugin/new.php:28
   msgid "Create a new page"
   msgstr ""
   
  -#: ../plugin/new.php:16
  -msgid "Enter a page name"
  +#: ../plugin/new.php:26
  +msgid "Page Name"
   msgstr ""
   
   # ../wiki.php:2945 ../wiki.php:2948
  -#: ../plugin/new.php:17
  +#: ../plugin/new.php:27
   msgid "Normalize this page name"
   msgstr ""
   
  @@ -947,29 +989,33 @@
   msgid "First:"
   msgstr ""
   
  -#: ../plugin/print.php:20
  +#: ../plugin/print.php:24
   #, c-format
   msgid "Retrieved from %s"
   msgstr ""
   
  -#: ../plugin/print.php:25
  +#: ../plugin/print.php:29
   #, c-format
   msgid "last modified %s %s"
   msgstr ""
   
  -#: ../plugin/processor/vim.php:49
  +#: ../plugin/processor/blog.php:99
  +msgid "raw"
  +msgstr ""
  +
  +#: ../plugin/processor/vim.php:58
   msgid "Toggle line numbers"
   msgstr ""
   
   # ../plugin/quicklinks.php:16 ../plugin/subscribe.php:24
   #: ../plugin/quicklinks.php:16 ../plugin/scrap.php:37
  -#: ../plugin/subscribe.php:25
  +#: ../plugin/subscribe.php:19 ../plugin/subscribe.php:55
   msgid "Please login or make your ID."
   msgstr "Merci de vous connectez ou de construire un ID"
   
   # ../plugin/quicklinks.php:22 ../plugin/subscribe.php:30
   #: ../plugin/quicklinks.php:22 ../plugin/scrap.php:40
  -#: ../plugin/subscribe.php:31
  +#: ../plugin/subscribe.php:61
   msgid "Goto UserPreferences"
   msgstr "Aller  UserPreferences"
   
  @@ -1079,11 +1125,6 @@
   msgid "New name:"
   msgstr ""
   
  -# ../plugin/rename.php:27
  -#: ../plugin/rename.php:69
  -msgid "Rename"
  -msgstr "Renommer"
  -
   #: ../plugin/rename.php:74
   msgid "Rename and fix Backlinks"
   msgstr ""
  @@ -1094,7 +1135,7 @@
   msgstr "Seulement le WikiMaster peut renommer cette page"
   
   # ../plugin/rename.php:39 ../wikilib.php:588
  -#: ../plugin/rename.php:79 ../wikilib.php:973
  +#: ../plugin/rename.php:79 ../wikilib.php:1072
   msgid "with revision history"
   msgstr "avec l'historique de rvision"
   
  @@ -1147,7 +1188,7 @@
   msgstr ""
   
   # ../locale/dummy.php:7
  -#: ../plugin/rss_rc.php:54
  +#: ../plugin/rss_rc.php:62
   msgid "show changes"
   msgstr ""
   
  @@ -1164,7 +1205,7 @@
   
   # ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
   # c-format
  -#: ../plugin/security/acl.php:204 ../plugin/security/community.php:25
  +#: ../plugin/security/acl.php:222 ../plugin/security/community.php:25
   #: ../plugin/security/community.php:35 ../plugin/security/community.php:45
   #: ../plugin/security/mustlogin.php:28 ../plugin/security/mustlogin.php:39
   #: ../plugin/security/mustlogin.php:50 ../plugin/security/needtologin.php:28
  @@ -1173,7 +1214,7 @@
   msgid "You are not allowed to '%s' on this page"
   msgstr "Vous n'tes pas autoris  pouvoir '%s' cette page"
   
  -#: ../plugin/security/acl.php:205
  +#: ../plugin/security/acl.php:223
   msgid "Please contact WikiMasters :b"
   msgstr ""
   
  @@ -1228,13 +1269,22 @@
   msgid "Trackback sent"
   msgstr "Trackback envoy"
   
  +#: ../plugin/subscribe.php:24 ../plugin/subscribe.php:28
  +msgid "You did'nt subscribed any pages yet."
  +msgstr ""
  +
  +# ../wikilib.php:809
  +#: ../plugin/subscribe.php:35
  +msgid "No subscribed pages found."
  +msgstr ""
  +
   # ../plugin/subscribe.php:12
  -#: ../plugin/subscribe.php:12
  +#: ../plugin/subscribe.php:42
   msgid "EmailNotification is not activated"
   msgstr "EmailNotification n'est pas activ"
   
   # ../plugin/subscribe.php:13
  -#: ../plugin/subscribe.php:13
  +#: ../plugin/subscribe.php:43
   msgid ""
   "If you want to subscribe this page please contact the WikiMaster to activate "
   "the e-mail notification"
  @@ -1243,12 +1293,12 @@
   "WikiMasterpour activer la notification par email"
   
   # ../plugin/subscribe.php:22
  -#: ../plugin/subscribe.php:23
  +#: ../plugin/subscribe.php:53
   msgid "Please enter your email address first."
   msgstr "Merci de rentrer d'abord votre adresse de messagerie"
   
   # ../plugin/subscribe.php:31
  -#: ../plugin/subscribe.php:32
  +#: ../plugin/subscribe.php:62
   msgid ""
   "If you want to subscribe this page, just make your ID and register your "
   "email address in the UserPreferences."
  @@ -1257,16 +1307,26 @@
   "votre adresse de messagerie dans UserPreferences."
   
   # ../plugin/subscribe.php:46
  -#: ../plugin/subscribe.php:47
  +#: ../plugin/subscribe.php:77
   msgid "Subscribe lists updated."
   msgstr "Listes d'abonnement mises  jour"
   
  +#: ../plugin/subscribe.php:91
  +#, c-format
  +msgid "\"%s\" is already subscribed."
  +msgstr ""
  +
   # ../plugin/subscribe.php:58
  -#: ../plugin/subscribe.php:59
  +#: ../plugin/subscribe.php:100
   #, c-format
   msgid "Do you want to subscribe \"%s\" ?"
   msgstr "Voulez vous abonner  \"%s\" ?"
   
  +# ../plugin/subscribe.php:46
  +#: ../plugin/subscribe.php:106
  +msgid "Subscribed pages"
  +msgstr ""
  +
   # ../plugin/theme.php:24
   #: ../plugin/theme.php:29
   msgid "Theme cleared. Goto UserPreferences."
  @@ -1286,7 +1346,7 @@
   msgstr ""
   
   # ../wikilib.php:476
  -#: ../plugin/theme.php:96
  +#: ../plugin/theme.php:97
   msgid "-- Select --"
   msgstr ""
   
  @@ -1354,196 +1414,225 @@
   msgid "ID does not exists !"
   msgstr "Erreur : l'archive n'existe pas"
   
  -#: ../plugin/userform.php:86 ../plugin/userform.php:273
  +#: ../plugin/userform.php:86 ../plugin/userform.php:275
   #, c-format
   msgid "Successfully login as '%s'"
   msgstr ""
   
   # ../wiki.php:3024
  -#: ../plugin/userform.php:92 ../plugin/userform.php:278
  -#: ../plugin/userform.php:321
  +#: ../plugin/userform.php:93 ../plugin/userform.php:280
  +#: ../plugin/userform.php:323
   msgid "Invalid password !"
   msgstr "Merci d'entrer un mot de passe valide"
   
  -#: ../plugin/userform.php:96
  +#: ../plugin/userform.php:97
   #, c-format
   msgid "\"%s\" does not exists on this wiki !"
   msgstr ""
   
  -#: ../plugin/userform.php:98
  +#: ../plugin/userform.php:99
   msgid "Make new ID on this wiki"
   msgstr ""
   
   # ../wikilib.php:575
  -#: ../plugin/userform.php:104
  +#: ../plugin/userform.php:105
   msgid "Cookie deleted !"
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../plugin/userform.php:106 ../wikilib.php:1870
  +#: ../plugin/userform.php:108 ../wikilib.php:2046
   msgid "E-mail new password"
   msgstr ""
   
  -#: ../plugin/userform.php:117 ../plugin/userform.php:180
  -#: ../plugin/userform.php:203
  +#: ../plugin/userform.php:119 ../plugin/userform.php:182
  +#: ../plugin/userform.php:205
   msgid "Invalid ticket !"
   msgstr ""
   
  -#: ../plugin/userform.php:119 ../plugin/userform.php:205
  +#: ../plugin/userform.php:121 ../plugin/userform.php:207
   msgid "You need a ticket !"
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../plugin/userform.php:151
  +#: ../plugin/userform.php:153
   msgid "New password confirmation"
   msgstr ""
   
   # ../wiki.php:3024
  -#: ../plugin/userform.php:156
  +#: ../plugin/userform.php:158
   msgid "Please confirm your new password"
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../plugin/userform.php:158
  +#: ../plugin/userform.php:160
   #, c-format
   msgid "Your new password is %s"
   msgstr ""
   
  -#: ../plugin/userform.php:159 ../plugin/userform.php:265
  +#: ../plugin/userform.php:161 ../plugin/userform.php:267
   msgid "Please change your password later"
   msgstr ""
   
  -#: ../plugin/userform.php:163 ../plugin/userform.php:171
  +#: ../plugin/userform.php:165 ../plugin/userform.php:173
   msgid "Fail to e-mail notification !"
   msgstr ""
   
  -#: ../plugin/userform.php:166
  +#: ../plugin/userform.php:168
   msgid "New password is sent to your e-mail !"
   msgstr ""
   
   # ../plugin/subscribe.php:22
  -#: ../plugin/userform.php:167
  +#: ../plugin/userform.php:169
   msgid "Please check your e-mail"
   msgstr ""
   
  -#: ../plugin/userform.php:172
  +#: ../plugin/userform.php:174
   msgid "E-mail mismatch !"
   msgstr ""
   
  -#: ../plugin/userform.php:174
  +#: ../plugin/userform.php:176
   msgid "Invalid request"
   msgstr ""
   
   # ../plugin/subscribe.php:22
  -#: ../plugin/userform.php:175
  +#: ../plugin/userform.php:177
   msgid "Please confirm your e-mail address first !"
   msgstr ""
   
  -#: ../plugin/userform.php:182
  +#: ../plugin/userform.php:184
   msgid "ID and e-mail mismatch !"
   msgstr ""
   
   # ../plugin/subscribe.php:22
  -#: ../plugin/userform.php:184
  +#: ../plugin/userform.php:186
   msgid "Please try again or make a new profile"
   msgstr ""
   
  -#: ../plugin/userform.php:224 ../plugin/userform.php:309
  +#: ../plugin/userform.php:226 ../plugin/userform.php:311
   msgid "too short password!"
   msgstr ""
   
  -#: ../plugin/userform.php:225
  +#: ../plugin/userform.php:227
   msgid "mismatch password!"
   msgstr ""
   
  -#: ../plugin/userform.php:226 ../plugin/userform.php:313
  +#: ../plugin/userform.php:228 ../plugin/userform.php:315
   msgid "not acceptable character found in the password!"
   msgstr ""
   
  -#: ../plugin/userform.php:229
  +#: ../plugin/userform.php:231
   msgid "Your password is too simple to use as a password !"
   msgstr ""
   
   # ../plugin/subscribe.php:22
  -#: ../plugin/userform.php:235 ../plugin/userform.php:344
  +#: ../plugin/userform.php:237 ../plugin/userform.php:346
   msgid "Your email address is not valid"
   msgstr "Merci de rentrer d'abord votre adresse de messagerie"
   
   # ../wikilib.php:547
  -#: ../plugin/userform.php:240
  +#: ../plugin/userform.php:242 ../plugin/userform.php:407
   msgid "Fail to register"
   msgstr ""
   
   # ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
   # c-format
  -#: ../plugin/userform.php:241
  +#: ../plugin/userform.php:243 ../plugin/userform.php:408
   msgid "You are not allowed to register on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:242 ../wiki.php:4069 ../wiki.php:4080
  +#: ../plugin/userform.php:244 ../plugin/userform.php:409 ../wiki.php:4654
  +#: ../wiki.php:4665
   msgid "Please contact WikiMasters"
   msgstr ""
   
  -#: ../plugin/userform.php:246
  +#: ../plugin/userform.php:248
   msgid "Successfully added!"
   msgstr ""
   
  -#: ../plugin/userform.php:252
  +#: ../plugin/userform.php:254
   #, c-format
   msgid "Successfully added as '%s'"
   msgstr ""
   
  -#: ../plugin/userform.php:253
  +#: ../plugin/userform.php:255
   msgid "Please check your mailbox"
   msgstr ""
   
  -#: ../plugin/userform.php:260 ../plugin/userform.php:338
  +#: ../plugin/userform.php:262 ../plugin/userform.php:340
   msgid "E-mail confirmation"
   msgstr ""
   
   # ../plugin/subscribe.php:22
  -#: ../plugin/userform.php:262 ../plugin/userform.php:340
  +#: ../plugin/userform.php:264 ../plugin/userform.php:342
   msgid "Please confirm your email address"
   msgstr ""
   
  -#: ../plugin/userform.php:264
  +#: ../plugin/userform.php:266
   #, c-format
   msgid "Your initial password is %s"
   msgstr ""
   
  -#: ../plugin/userform.php:268
  +#: ../plugin/userform.php:270
   msgid "Confirmation E-mail sent"
   msgstr ""
   
  -#: ../plugin/userform.php:283
  +#: ../plugin/userform.php:285
   msgid "Invalid username !"
   msgstr ""
   
  -#: ../plugin/userform.php:311
  +#: ../plugin/userform.php:313
   msgid "mismatch password !"
   msgstr ""
   
  -#: ../plugin/userform.php:314 ../plugin/userform.php:322
  +#: ../plugin/userform.php:316 ../plugin/userform.php:324
   msgid "Password is not changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:316
  +#: ../plugin/userform.php:318
   msgid "Password is changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:318
  +#: ../plugin/userform.php:320
   msgid "Password is too simple to use as a password !"
   msgstr ""
   
  -#: ../plugin/userform.php:342
  +#: ../plugin/userform.php:344
   msgid "E-mail confirmation mail sent"
   msgstr ""
   
  +#: ../plugin/userform.php:355
  +msgid "Your Nickname already used as ID in this wiki"
  +msgstr ""
  +
   # ../wikilib.php:887
  -#: ../plugin/userform.php:350
  +#: ../plugin/userform.php:360
   msgid "Profiles are saved successfully !"
   msgstr ""
   
  +#: ../plugin/userform.php:383 ../plugin/userform.php:429
  +#, c-format
  +msgid "Authentication request was failed: %s"
  +msgstr ""
  +
  +#: ../plugin/userform.php:402
  +#, c-format
  +msgid "Successfully login as '%s' via OpenID."
  +msgstr ""
  +
  +#: ../plugin/userform.php:416
  +#, c-format
  +msgid "Your Nickname %s already used as ID in this Wiki."
  +msgstr ""
  +
  +#: ../plugin/userform.php:424
  +#, c-format
  +msgid "OpenID Authentication successful and saved as %s."
  +msgstr ""
  +
  +#: ../plugin/userform.php:431
  +msgid "Invalid OpenID Authentication request"
  +msgstr ""
  +
   #: ../plugin/whois.php:119
   #, c-format
   msgid "Could not connect to %s server"
  @@ -1556,139 +1645,159 @@
   msgstr ""
   
   # ../wiki.php:850
  -#: ../wiki.php:1129
  +#: ../wiki.php:1204
   #, c-format
   msgid "Rename %s to %s"
   msgstr "Renommer %s en %s"
   
   # ../wikilib.php:803
  -#: ../wiki.php:1431
  +#: ../wiki.php:1565
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
   # ../plugin/restore.php:27
  -#: ../wiki.php:1441
  -msgid "File does not exists"
  -msgstr ""
  +#: ../wiki.php:1575
  +msgid "File does not exist"
  +msgstr "Erreur : l'archive n'existe pas"
   
   # ../wikilib.php:521
  -#: ../wiki.php:2410
  +#: ../wiki.php:2646 ../wiki.php:2657 ../wiki.php:4858
   msgid "Invalid ajax action."
   msgstr ""
   
   # ../wiki.php:1824
  -#: ../wiki.php:2668
  +#: ../wiki.php:3072
   #, c-format
   msgid "See %s"
   msgstr "Voir %s"
   
   # ../wiki.php:1824
  -#: ../wiki.php:2668
  +#: ../wiki.php:3072
   msgid "TwinPages"
   msgstr ""
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../wiki.php:2673
  +#: ../wiki.php:3077
   msgid "See [TwinPages]:"
   msgstr "Voir [TwinPages]: "
   
  -#: ../wiki.php:2978
  +#: ../wiki.php:3443
   msgid "edit"
   msgstr ""
   
  -#: ../wiki.php:3131
  +#: ../wiki.php:3616
   msgid "Sister Sites Index"
   msgstr ""
   
   # ../locale/dummy.php:6 ../wiki.php:2553
  -#: ../wiki.php:3422 ../locale/dummy.php:6
  +#: ../wiki.php:3968 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "ditionTexte"
   
   # ../wiki.php:2555
  -#: ../wiki.php:3424
  +#: ../wiki.php:3970
   msgid "NotEditable"
   msgstr "Pasditable"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wiki.php:3426 ../locale/dummy.php:6
  +#: ../wiki.php:3974 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "MontrePage"
   
   # ../locale/dummy.php:3 ../locale/dummy.php:5 ../wiki.php:2558
  -#: ../wiki.php:3427 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:3975 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "TrouvePage"
   
  -#: ../wiki.php:3762
  +#: ../wiki.php:4348
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:4068
  +#: ../wiki.php:4653
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:4079
  +#: ../wiki.php:4664
   msgid "You are blocked in this wiki"
   msgstr ""
   
   # ../wiki.php:2945 ../wiki.php:2948
  -#: ../wiki.php:4110 ../wiki.php:4113 ../wikilib.php:1128
  +#: ../wiki.php:4702 ../wiki.php:4711 ../wikilib.php:1277
   msgid "Create this page"
   msgstr "Crer cette page"
   
  +# ../wikilib.php:816
  +#: ../wiki.php:4713
  +#, c-format
  +msgid "%s has saved revisions"
  +msgstr "%s est sauvegard"
  +
   # ../wiki.php:2950
  -#: ../wiki.php:4116 ../wikilib.php:1130
  +#: ../wiki.php:4714 ../wiki.php:4721
   #, c-format
  -msgid " or click %s to fullsearch this page.\n"
  +msgid "%s or click %s to fullsearch this page.\n"
   msgstr ""
  -" ou cliquer sur %s pour faire une recherche en texte intgral de cette "
  -"page.\n"
   
   # ../wiki.php:2950
  -#: ../wiki.php:4116 ../wikilib.php:1130
  +#: ../wiki.php:4714 ../wiki.php:4721 ../wikilib.php:1279
   msgid "title"
   msgstr "titre"
   
  +#: ../wiki.php:4716
  +#, c-format
  +msgid "Old Revisions of the %s"
  +msgstr ""
  +
  +#: ../wiki.php:4719
  +#, c-format
  +msgid "%s is not found in this Wiki"
  +msgstr ""
  +
   # ../wiki.php:2956
  -#: ../wiki.php:4125
  -msgid " or alternativly, use one of these templates:\n"
  -msgstr " ou alternativement, utiliser un de ces modles de page :\n"
  +#: ../wiki.php:4731
  +#, c-format
  +msgid "%s or alternativly, use one of these templates:\n"
  +msgstr "%s ou alternativement, utiliser un de ces modles de page :\n"
   
  -#: ../wiki.php:4128
  +#: ../wiki.php:4734
   msgid "You have no templates"
   msgstr ""
   
   # ../wikilib.php:427
  -#: ../wiki.php:4130
  +#: ../wiki.php:4736
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
   
  -#: ../wiki.php:4141
  +#: ../wiki.php:4747
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
  +# ../wikilib.php:521
  +#: ../wiki.php:4860
  +msgid "Invalid macro action."
  +msgstr ""
  +
   # ../wiki.php:3009
  -#: ../wiki.php:4235
  +#: ../wiki.php:4870
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "Vous n'tes pas autoris  '%s'"
   
   # ../wiki.php:3021
  -#: ../wiki.php:4255
  +#: ../wiki.php:4890
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "Impossible de pouvoir \"%s\" !"
   
   # ../wiki.php:3024
  -#: ../wiki.php:4258
  +#: ../wiki.php:4893
   msgid "Please enter the valid password"
   msgstr "Merci d'entrer un mot de passe valide"
   
   # ../wikilib.php:368
  -#: ../wikilib.php:574
  +#: ../wikilib.php:629
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -1720,282 +1829,290 @@
   "deux colonnes ||;\n"
   "Les espaces aprs un tableau ou un titre ne sont pas autoriss.<br />\n"
   
  -#: ../wikilib.php:615
  +#: ../wikilib.php:670
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
   # ../wikilib.php:425
  -#: ../wikilib.php:698
  +#: ../wikilib.php:763
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   "Utiliser un des modles de pages qui suivent pour une premirecration :\n"
   
   # ../wikilib.php:427
  -#: ../wikilib.php:700
  +#: ../wikilib.php:765
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr ""
   
  -#: ../wikilib.php:704
  +#: ../wikilib.php:769
   msgid "Merge"
   msgstr ""
   
  -#: ../wikilib.php:705
  +#: ../wikilib.php:770
   msgid "Merge manually"
   msgstr ""
   
  -#: ../wikilib.php:706
  +#: ../wikilib.php:771
   msgid "Ignore conflicts"
   msgstr ""
   
   # ../wikilib.php:445
  -#: ../wikilib.php:731
  +#: ../wikilib.php:796
   msgid "ReduceEditor"
   msgstr "Rduirediteur"
   
  -#: ../wikilib.php:732
  +#: ../wikilib.php:797
   msgid "EnlargeEditor"
   msgstr ""
   
   # ../locale/dummy.php:6 ../wikilib.php:448
  -#: ../wikilib.php:736 ../locale/dummy.php:6
  +#: ../wikilib.php:801 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
   # ../wikilib.php:449
  -#: ../wikilib.php:738
  +#: ../wikilib.php:803
   msgid "HelpOnEditing"
   msgstr ""
   
   # ../wikilib.php:462
  -#: ../wikilib.php:765
  +#: ../wikilib.php:832
   #, c-format
   msgid "Describe %s here"
   msgstr "Dcrire %s ici"
   
   # ../wikilib.php:476
  -#: ../wikilib.php:782
  +#: ../wikilib.php:849
   msgid "--Select Category--"
   msgstr "-- Slectionner une catgorie"
   
  -#: ../wikilib.php:792
  +#: ../wikilib.php:859
   msgid "Minor edit"
   msgstr ""
   
   # ../wikilib.php:443
  -#: ../wikilib.php:800
  +#: ../wikilib.php:867
   msgid "Skip to preview"
   msgstr "Aller  la prvisualisation"
   
   # ../wikilib.php:483 ../wikilib.php:1079
  -#: ../wikilib.php:802 ../wikilib.php:1816 ../wikilib.php:1858
  +#: ../wikilib.php:874 ../wikilib.php:1979 ../wikilib.php:2033
   msgid "Save"
   msgstr "Sauvegarder"
   
   # ../wikilib.php:484
  -#: ../wikilib.php:803
  +#: ../wikilib.php:875
   msgid "Summary of Change"
   msgstr "Sommaire des modifications"
   
   # ../wikilib.php:517
  -#: ../wikilib.php:849
  +#: ../wikilib.php:948
   msgid "406 Not Acceptable"
   msgstr ""
   
   # ../wikilib.php:519
  -#: ../wikilib.php:854
  +#: ../wikilib.php:953
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s n'est pas une action valide"
   
   # ../wikilib.php:521
  -#: ../wikilib.php:856
  +#: ../wikilib.php:955
   msgid "Is it valid action ?"
   msgstr "Est-ce que c'est une action valide ?"
   
   # ../wikilib.php:540
  -#: ../wikilib.php:901
  +#: ../wikilib.php:1000
   #, c-format
   msgid "File '%s' is deleted"
   msgstr "Le fichier '%s' est effac"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:903
  +#: ../wikilib.php:1002
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr "Impossible d'effacer '%s'"
   
   # ../wikilib.php:545
  -#: ../wikilib.php:908
  +#: ../wikilib.php:1007
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr "Le rpertoire '%s' est effac"
   
   # ../wikilib.php:547
  -#: ../wikilib.php:910
  +#: ../wikilib.php:1009
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr "Impossible d'effacer le rpertoire '%s'"
   
   # ../wikilib.php:557 ../wikilib.php:559
  -#: ../wikilib.php:920 ../wikilib.php:940
  +#: ../wikilib.php:1019 ../wikilib.php:1039
   msgid "No files are selected !"
   msgstr "Aucun fichier n'est slectionn !"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:933
  +#: ../wikilib.php:1032
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
   # ../locale/dummy.php:5
  -#: ../wikilib.php:936
  +#: ../wikilib.php:1035
   msgid "Delete"
   msgstr ""
   
   # ../wikilib.php:550
  -#: ../wikilib.php:937
  +#: ../wikilib.php:1036
   msgid "Delete selected file"
   msgstr ""
   
   # ../wikilib.php:575
  -#: ../wikilib.php:958
  +#: ../wikilib.php:1057
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr "\"%s\" est effac !"
   
   # ../wikilib.php:581
  -#: ../wikilib.php:965
  +#: ../wikilib.php:1064
   msgid "Please delete this file manually."
   msgstr "Merci d'effacer ce fichier manuellement."
   
   # ../wikilib.php:583
  -#: ../wikilib.php:967
  +#: ../wikilib.php:1066
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "Effacer \"%s\" ?"
   
   # ../plugin/minilogin.php:30
  -#: ../wikilib.php:1017
  +#: ../wikilib.php:1116
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
  +# ../wiki.php:2950
  +#: ../wikilib.php:1279
  +#, c-format
  +msgid " or click %s to fullsearch this page.\n"
  +msgstr ""
  +" ou cliquer sur %s pour faire une recherche en texte intgral de cette "
  +"page.\n"
  +
   # ../wikilib.php:743
  -#: ../wikilib.php:1182 ../wikilib.php:1284
  +#: ../wikilib.php:1331 ../wikilib.php:1433
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "Quelqu'un a sauvegard la page tandis que vous ditiez %s"
   
  -#: ../wikilib.php:1188
  +#: ../wikilib.php:1337
   msgid "Section edit is not valid for non-exists page."
   msgstr ""
   
   # ../wikilib.php:803
  -#: ../wikilib.php:1221 ../wikilib.php:1397
  +#: ../wikilib.php:1370 ../wikilib.php:1547
   msgid "mail does not supported by default."
   msgstr "La messagerie n'est pas support par dfaut."
   
   # ../wikilib.php:807
  -#: ../wikilib.php:1225 ../wikilib.php:1401
  +#: ../wikilib.php:1374 ../wikilib.php:1551
   msgid "Sent notification mail."
   msgstr "Des notifications par messagerie ont t envoyes."
   
   # ../wikilib.php:809
  -#: ../wikilib.php:1227 ../wikilib.php:1403
  +#: ../wikilib.php:1376 ../wikilib.php:1553
   msgid "No subscribers found."
   msgstr "Aucun abonn trouv."
   
   # ../wikilib.php:814
  -#: ../wikilib.php:1232 ../wikilib.php:1408
  +#: ../wikilib.php:1381 ../wikilib.php:1558
   #, c-format
   msgid "%s is not editable"
   msgstr "%s n'est pas ditable"
   
   # ../wikilib.php:816
  -#: ../wikilib.php:1234 ../wikilib.php:1410
  +#: ../wikilib.php:1383 ../wikilib.php:1560
   #, c-format
   msgid "%s is saved"
   msgstr "%s est sauvegard"
   
   # ../wikilib.php:734
  -#: ../wikilib.php:1275
  +#: ../wikilib.php:1424
   msgid "Goto Editor"
   msgstr "Aller  l'diteur"
   
  -#: ../wikilib.php:1289
  +#: ../wikilib.php:1438
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr ""
   
   # ../plugin/Vote.php:109
  -#: ../wikilib.php:1290
  +#: ../wikilib.php:1439
   #, c-format
   msgid "%s is merged successfully"
   msgstr ""
   
  -#: ../wikilib.php:1294
  +#: ../wikilib.php:1443
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1295
  +#: ../wikilib.php:1444
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr ""
   
  -#: ../wikilib.php:1296
  +#: ../wikilib.php:1445
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1297
  +#: ../wikilib.php:1446
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1302
  +#: ../wikilib.php:1451
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr ""
   
   # ../wikilib.php:581
  -#: ../wikilib.php:1303
  +#: ../wikilib.php:1452
   msgid "Please resolve conflicts manually."
   msgstr ""
   
  -#: ../wikilib.php:1306
  +#: ../wikilib.php:1455
   #, c-format
   msgid "Force merging for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1307
  +#: ../wikilib.php:1456
   msgid "Please be careful, you could damage useful information."
   msgstr ""
   
   # ../wikilib.php:755
  -#: ../wikilib.php:1319
  +#: ../wikilib.php:1468
   msgid "Conflict error!"
   msgstr "Erreur de conflit !"
   
   # ../wikilib.php:748 ../wikilib.php:777
  -#: ../wikilib.php:1357
  +#: ../wikilib.php:1507
   #, c-format
   msgid "Preview of %s"
   msgstr "Prvisualisation de %s"
   
   # ../wikilib.php:838
  -#: ../wikilib.php:1442
  +#: ../wikilib.php:1592
   msgid "Nobody subscribed to this page."
   msgstr "Personne n'est abonn  cette page, aucun mail envoy"
   
   # ../wikilib.php:860
  -#: ../wikilib.php:1461
  +#: ../wikilib.php:1611
   #, c-format
   msgid "%s page is modified"
   msgstr "la page %s est modifi"
   
   # ../wikilib.php:870
  -#: ../wikilib.php:1490
  +#: ../wikilib.php:1640
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
  @@ -2006,93 +2123,101 @@
   "\n"
   
   # ../wikilib.php:883
  -#: ../wikilib.php:1503
  +#: ../wikilib.php:1653
   msgid "Send notification mails to all subscribers"
   msgstr "Envoyez un mail de notification  tous les abonns"
   
   # ../wikilib.php:887
  -#: ../wikilib.php:1508
  +#: ../wikilib.php:1658
   msgid "Mails are sent successfully"
   msgstr "Mail envoy avec succs"
   
   # ../wikilib.php:888
  -#: ../wikilib.php:1509
  +#: ../wikilib.php:1659
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr "un mail a t envoy  '%s'"
   
   # ../wiki.php:3021
  -#: ../wikilib.php:1511
  +#: ../wikilib.php:1661
   msgid "Fail to send mail"
   msgstr ""
   
   # ../wikilib.php:803
  -#: ../wikilib.php:1522
  +#: ../wikilib.php:1672
   msgid "This wiki does not support sendmail"
   msgstr ""
   
   # ../wikilib.php:1483
  -#: ../wikilib.php:1620
  +#: ../wikilib.php:1770
   msgid "Invalid regular expression !"
   msgstr ""
   
  -#: ../wikilib.php:1644
  +#: ../wikilib.php:1794
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:1647
  +#: ../wikilib.php:1797
   msgid "Infinite loop possible!"
   msgstr ""
   
   # ../plugin/login.php:26 ../wikilib.php:1051
  -#: ../wikilib.php:1774
  +#: ../wikilib.php:1916
   msgid "Login"
   msgstr "Se connecter"
   
  -#: ../wikilib.php:1775 ../wikilib.php:1875
  +#: ../wikilib.php:1917
  +msgid "OpenID"
  +msgstr ""
  +
  +#: ../wikilib.php:1929 ../wikilib.php:2051
   msgid "ID"
   msgstr ""
   
   # ../wikilib.php:1070
  -#: ../wikilib.php:1796 ../wikilib.php:1868
  +#: ../wikilib.php:1959 ../wikilib.php:2044
   msgid "Make profile"
   msgstr "Faire un profil"
   
   # ../wikilib.php:1071
  -#: ../wikilib.php:1798
  +#: ../wikilib.php:1961
   msgid "password again"
   msgstr "mot de passe de nouveau"
   
  -#: ../wikilib.php:1800 ../wikilib.php:1838
  +#: ../wikilib.php:1963 ../wikilib.php:2012
   msgid "Mail"
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../wikilib.php:1820
  +#: ../wikilib.php:1985
   msgid "New password"
   msgstr "Nouveau mot de passe"
   
  -#: ../wikilib.php:1839
  +#: ../wikilib.php:1990
  +msgid "Nickname"
  +msgstr ""
  +
  +#: ../wikilib.php:2013
   msgid "Time Zone"
   msgstr ""
   
   # ../wikilib.php:1088
  -#: ../wikilib.php:1847
  +#: ../wikilib.php:2022
   msgid "logout"
   msgstr "se dconnecter"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wikilib.php:2190
  +#: ../wikilib.php:2306
   msgid "Show all"
   msgstr ""
   
   # ../locale/dummy.php:4
  -#: ../wikilib.php:2332
  +#: ../wikilib.php:2448
   msgid "Contents"
   msgstr ""
   
   # ../wikilib.php:1479
  -#: ../wikilib.php:2443
  +#: ../wikilib.php:2559
   #, c-format
   msgid "Title search for \"%s\""
   msgstr "Recherche de titre pour \"%s\""
  
  
  
  1.23      +400 -279  moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- ko.po	22 Jul 2006 11:15:46 -0000	1.22
  +++ ko.po	15 Dec 2007 05:56:26 -0000	1.23
  @@ -4,8 +4,8 @@
   #
   msgid ""
   msgstr ""
  -"Project-Id-Version: MoniWiki 1.1\n"
  -"POT-Creation-Date: 2006-07-22 20:14+0900\n"
  +"Project-Id-Version: MoniWiki 1.1.3\n"
  +"POT-Creation-Date: 2007-12-15 14:20+0900\n"
   "PO-Revision-Date: 2003-04-29 19:00+0900\n"
   "Last-Translator: Won-kyu Park <wkpark@kldp.org>\n"
   "Language-Team: ko <ko@li.org>\n"
  @@ -13,16 +13,16 @@
   "Content-Type: text/plain; charset=EUC-KR\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  -#: ../plugin/Attachment.php:42 ../plugin/Attachment.php:129
  +#: ../plugin/Attachment.php:70 ../plugin/Attachment.php:232
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr ""
   
  -#: ../plugin/Attachment.php:126
  +#: ../plugin/Attachment.php:229
   msgid "or paste a new picture"
   msgstr "Ȥ  ׸ ̱"
   
  -#: ../plugin/Attachment.php:132
  +#: ../plugin/Attachment.php:235
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
  @@ -36,17 +36,17 @@
   msgid "Translate %s to %s"
   msgstr "%s %s() ϱ"
   
  -#: ../plugin/Blog.php:85
  +#: ../plugin/Blog.php:84
   #, c-format
   msgid "Blog cache of \"%s\" is refreshed"
   msgstr ""
   
  -#: ../plugin/Blog.php:109
  +#: ../plugin/Blog.php:108
   #, c-format
   msgid "\"%s\" is updated"
   msgstr "\"%s\"() ŵǾϴ"
   
  -#: ../plugin/Blog.php:114
  +#: ../plugin/Blog.php:113
   msgid "Add Blog"
   msgstr ""
   
  @@ -54,43 +54,56 @@
   msgid "Error: No blog entry found!"
   msgstr ""
   
  -#: ../plugin/Blog.php:162 ../plugin/Comment.php:144
  +#: ../plugin/Blog.php:164 ../plugin/Blog.php:166 ../plugin/Comment.php:157
   msgid "Error: Don't make a clone!"
   msgstr ":   !"
   
  -#: ../plugin/Blog.php:179
  +#: ../plugin/Blog.php:192
   #, c-format
   msgid "Comment added to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:182
  +#: ../plugin/Blog.php:195
   #, c-format
   msgid "Blog entry added to \"%s\""
   msgstr "α ׸ \"%s\" ϴ"
   
  -#: ../plugin/Blog.php:219
  +#: ../plugin/Blog.php:197
  +#, c-format
  +msgid "Blog entry \"%s\" added"
  +msgstr "α ׸ \"%s\" ϴ"
  +
  +#: ../plugin/Blog.php:199
  +msgid "Blog entry added"
  +msgstr "α ׸ ϴ"
  +
  +#: ../plugin/Blog.php:240
   #, c-format
   msgid "Add Comment to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:221
  +#: ../plugin/Blog.php:242
   #, c-format
   msgid "Add Blog entry to \"%s\""
   msgstr "\"%s\" α ׸ ϱ"
   
  -#: ../plugin/Blog.php:235 ../plugin/Blog.php:290
  +#: ../plugin/Blog.php:260 ../plugin/Blog.php:333
   msgid "Name"
   msgstr "̸"
   
  -#: ../plugin/Blog.php:239 ../plugin/Blog.php:291
  +#: ../plugin/Blog.php:262 ../plugin/Blog.php:334
   msgid "Title"
   msgstr ""
   
  -#: ../plugin/Blog.php:245 ../plugin/Comment.php:60
  +#: ../plugin/Blog.php:268 ../wikilib.php:869
  +msgid "GUI"
  +msgstr ""
  +
  +#: ../plugin/Blog.php:277 ../plugin/Comment.php:75
   msgid "Don't add a signature"
   msgstr " ʱ"
   
  -#: ../plugin/Blog.php:258
  +#: ../plugin/Blog.php:299
   msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
   msgstr "<b>μ</b> ---- α   ʽϴ."
   
  @@ -122,7 +135,7 @@
   msgid "%d comments"
   msgstr " %d"
   
  -#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:133
  +#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:146
   #: ../plugin/processor/blog.php:78
   msgid "Add comment"
   msgstr " ޱ"
  @@ -159,76 +172,76 @@
   msgid "Cut & Paste a Clipboard Image"
   msgstr "Ŭ ̹ ߸ ̱"
   
  -#: ../plugin/Comment.php:58
  -msgid "Username"
  -msgstr "̸"
  -
  -#: ../plugin/Comment.php:61
  +#: ../plugin/Comment.php:59
   msgid "Comment"
   msgstr " ޱ"
   
  -#: ../plugin/Comment.php:62 ../wikilib.php:798
  +#: ../plugin/Comment.php:60 ../wikilib.php:865
   msgid "Preview"
   msgstr "̸"
   
  -#: ../plugin/Comment.php:81
  +#: ../plugin/Comment.php:73
  +msgid "Username"
  +msgstr "̸"
  +
  +#: ../plugin/Comment.php:94
   msgid "Page is not writable"
   msgstr "  ϴ"
   
  -#: ../plugin/Comment.php:85
  +#: ../plugin/Comment.php:98
   msgid "You are not allowed to add a comment."
   msgstr "Comment  ʽϴ."
   
  -#: ../plugin/Comment.php:86 ../plugin/Keywords.php:333
  +#: ../plugin/Comment.php:99 ../plugin/Keywords.php:355
   msgid "Page does not exists"
   msgstr " ϴ"
   
  -#: ../plugin/Comment.php:119 ../plugin/Gallery.php:166 ../wikilib.php:1207
  -#: ../wikilib.php:1351
  +#: ../plugin/Comment.php:132 ../plugin/Gallery.php:171 ../wikilib.php:1356
  +#: ../wikilib.php:1501
   msgid ""
   "Sorry, can not save page because some messages are blocked in this wiki."
   msgstr "˼մϴ. Ư ޽ Ǿ    ϴ."
   
  -#: ../plugin/Comment.php:124
  +#: ../plugin/Comment.php:137
   msgid "Preview comment"
   msgstr "̸"
   
  -#: ../plugin/Comment.php:191
  +#: ../plugin/Comment.php:259
   #, c-format
   msgid "%s is commented successfully"
   msgstr "%s   ÷Ǿϴ"
   
  -#: ../plugin/Comment.php:192
  +#: ../plugin/Comment.php:260
   msgid "Comment added successfully"
   msgstr " ÷Ǿϴ"
   
  -#: ../plugin/Diff.php:177 ../plugin/Info.php:188
  +#: ../plugin/Diff.php:207 ../plugin/Info.php:203
   msgid "No older revisions available"
   msgstr "  ϴ"
   
  -#: ../plugin/Diff.php:182 ../plugin/Info.php:194
  +#: ../plugin/Diff.php:212 ../plugin/Info.php:209
   msgid "Version info is not available in this wiki"
   msgstr ""
   
  -#: ../plugin/Diff.php:193 ../wikilib.php:1338
  +#: ../plugin/Diff.php:223 ../wikilib.php:1488
   msgid "No difference found"
   msgstr "ȭ ϴ"
   
  -#: ../plugin/Diff.php:195
  +#: ../plugin/Diff.php:225
   msgid "Difference between versions"
   msgstr " "
   
  -#: ../plugin/Diff.php:197 ../plugin/Diff.php:320
  +#: ../plugin/Diff.php:227 ../plugin/Diff.php:346
   #, c-format
   msgid "Difference between r%s and r%s"
   msgstr "r%s r%s "
   
  -#: ../plugin/Diff.php:200 ../plugin/Diff.php:322
  +#: ../plugin/Diff.php:230 ../plugin/Diff.php:348
   #, c-format
   msgid "Difference between r%s and the current"
   msgstr "r%s   "
   
  -#: ../plugin/Diff.php:324
  +#: ../plugin/Diff.php:350
   msgid "latest changes"
   msgstr "ֱ ٲ"
   
  @@ -236,7 +249,7 @@
   msgid "Draw new picture"
   msgstr " ׸ "
   
  -#: ../plugin/Draw.php:81 ../plugin/UploadFile.php:154
  +#: ../plugin/Draw.php:81 ../plugin/UploadFile.php:212
   #, c-format
   msgid "Fail to copy \"%s\" to \"%s\""
   msgstr ""
  @@ -303,7 +316,7 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:44 ../plugin/VisualTour.php:104
  +#: ../plugin/FullSearch.php:44 ../plugin/VisualTour.php:124 ../wiki.php:3972
   msgid "Refresh"
   msgstr ""
   
  @@ -312,167 +325,175 @@
   msgid " (%s search results)"
   msgstr " (ġ  %s)"
   
  -#: ../plugin/FullSearch.php:123
  +#: ../plugin/FullSearch.php:129
   msgid "Empty expression"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:127 ../wikilib.php:2447
  +#: ../plugin/FullSearch.php:133 ../wikilib.php:2563
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "߸ ã ǥ \"%s\""
   
  -#: ../plugin/Gallery.php:235 ../plugin/UploadedFiles.php:200
  +#: ../plugin/Gallery.php:242 ../plugin/UploadedFiles.php:244
   msgid "No files found"
   msgstr " ϴ"
   
  -#: ../plugin/Gallery.php:314 ../plugin/Gallery.php:327
  +#: ../plugin/Gallery.php:333 ../plugin/Gallery.php:346
   msgid "add comment"
   msgstr " ޱ"
   
  -#: ../plugin/Gallery.php:324
  +#: ../plugin/Gallery.php:343
   msgid "show comments"
   msgstr " "
   
  -#: ../plugin/Gallery.php:366 ../plugin/Gallery.php:370 ../wikilib.php:1194
  -#: ../wikilib.php:1336
  +#: ../plugin/Gallery.php:392 ../plugin/Gallery.php:396 ../wikilib.php:1343
  +#: ../wikilib.php:1486
   #, c-format
   msgid "Go back or return to %s"
   msgstr "ڷ Ȥ %s() "
   
  -#: ../plugin/Gallery.php:367
  +#: ../plugin/Gallery.php:393
   msgid "Comments are edited"
   msgstr ""
   
  -#: ../plugin/Gallery.php:371
  +#: ../plugin/Gallery.php:397
   msgid "Comments is added"
   msgstr ""
   
  -#: ../plugin/ImportUrl.php:111
  +#: ../plugin/ImportUrl.php:132
   msgid "Import URL"
   msgstr ""
   
  -#: ../plugin/Info.php:28
  +#: ../plugin/Info.php:30
  +msgid "Diff"
  +msgstr ""
  +
  +#: ../plugin/Info.php:34
   msgid "Revision History"
   msgstr " 丮"
   
  -#: ../plugin/Info.php:51
  +#: ../plugin/Info.php:57
   msgid "Show all revisions"
   msgstr ""
   
  -#: ../plugin/Info.php:77
  +#: ../plugin/Info.php:83
   msgid "Yesterday"
   msgstr ""
   
  -#: ../plugin/Info.php:78
  +#: ../plugin/Info.php:84
   #, c-format
   msgid "%s days ago"
   msgstr ""
   
  -#: ../plugin/Info.php:80
  +#: ../plugin/Info.php:86
   #, c-format
   msgid "%s hours ago"
   msgstr ""
   
  -#: ../plugin/Info.php:82
  +#: ../plugin/Info.php:88
   #, c-format
   msgid "%s min ago"
   msgstr ""
   
  -#: ../plugin/Keywords.php:291
  +#: ../plugin/Info.php:149
  +msgid "diff"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:313
   msgid "hits"
   msgstr ""
   
  -#: ../plugin/Keywords.php:299
  +#: ../plugin/Keywords.php:321
   msgid "add keywords"
   msgstr "Ű ϱ"
   
  -#: ../plugin/Keywords.php:302
  +#: ../plugin/Keywords.php:324
   msgid "Update keywords"
   msgstr "Ű "
   
  -#: ../plugin/Keywords.php:304
  +#: ../plugin/Keywords.php:326
   msgid "Add keywords"
   msgstr "Ű ϱ"
   
  -#: ../plugin/Keywords.php:305
  +#: ../plugin/Keywords.php:327
   msgid "Add as common words"
   msgstr "Ϲ ܾ ߰"
   
  -#: ../plugin/Keywords.php:306
  +#: ../plugin/Keywords.php:328
   msgid "Unselect all"
   msgstr "  "
   
  -#: ../plugin/Keywords.php:307
  +#: ../plugin/Keywords.php:329
   msgid "Suggest new Keywords"
   msgstr " Ű "
   
  -#: ../plugin/Keywords.php:316
  +#: ../plugin/Keywords.php:338
   msgid "select language"
   msgstr ""
   
  -#: ../plugin/Keywords.php:332
  +#: ../plugin/Keywords.php:354
   msgid "You are not able to add keywords."
   msgstr "Ű带 ߰  ϴ."
   
  -#: ../plugin/Keywords.php:346
  +#: ../plugin/Keywords.php:368
   #, c-format
   msgid "%s is not found."
   msgstr "%s() ã  ϴ"
   
  -#: ../plugin/Keywords.php:462
  +#: ../plugin/Keywords.php:484
   msgid "Common words are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:509
  +#: ../plugin/Keywords.php:531
   #, c-format
   msgid "Keywords for %s are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:535
  +#: ../plugin/Keywords.php:557
   msgid "Keywords are updated"
   msgstr "Ű尡 ŵǾϴ"
   
  -#: ../plugin/Keywords.php:537
  +#: ../plugin/Keywords.php:559
   msgid "There are no changes found"
   msgstr "ȭ ϴ"
   
  -#: ../plugin/Keywords.php:550
  +#: ../plugin/Keywords.php:572
   msgid "Update with these Keywords"
   msgstr "Ű ϱ"
   
  -#: ../plugin/Keywords.php:570 ../plugin/Keywords.php:574
  +#: ../plugin/Keywords.php:592 ../plugin/Keywords.php:596
   msgid "alphabetically"
   msgstr ""
   
  -#: ../plugin/Keywords.php:571
  +#: ../plugin/Keywords.php:593
   msgid "by frequency"
   msgstr "󵵼"
   
  -#: ../plugin/Keywords.php:573
  +#: ../plugin/Keywords.php:595
   msgid "by size"
   msgstr "ũ"
   
  -#: ../plugin/Keywords.php:579
  +#: ../plugin/Keywords.php:601
   #, c-format
   msgid "Keywords list %s (or %s)"
   msgstr "%s Ű  (Ȥ %s)"
   
  -#: ../plugin/Keywords.php:584
  +#: ../plugin/Keywords.php:606
   #, c-format
   msgid "Select keywords for %s"
   msgstr "%s  Ű带 "
   
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1085 ../wikilib.php:2436
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1184 ../wikilib.php:2552
   msgid "Use more specific text"
   msgstr "  ڼ Էϼ"
   
   #: ../plugin/LikePages.php:109
   msgid "These pages share a similar word..."
  -msgstr ""
  +msgstr " ̸ κ Ե ..."
   
   #: ../plugin/LikePages.php:123
   msgid "These pages share an initial or final title word..."
  -msgstr ""
  +msgstr "ó κ ̸ Ե ..."
   
   #: ../plugin/LikePages.php:143
   msgid "If you can't find this page, "
  @@ -614,7 +635,7 @@
   msgid "TwinPages of %s"
   msgstr "%s ֵ "
   
  -#: ../plugin/TwinPages.php:19 ../wiki.php:4108
  +#: ../plugin/TwinPages.php:19 ../wiki.php:4700
   msgid "See [TwinPages]: "
   msgstr ""
   
  @@ -622,64 +643,81 @@
   msgid "No TwinPages found."
   msgstr "ֵ  ϴ"
   
  -#: ../plugin/UploadFile.php:78
  +#: ../plugin/UploadFile.php:131
   #, c-format
   msgid "%s is not allowed to upload"
   msgstr "%s() ε尡  ʽϴ"
   
  -#: ../plugin/UploadFile.php:127
  +#: ../plugin/UploadFile.php:180
   #, c-format
   msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
   msgstr ""
   
  -#: ../plugin/UploadFile.php:155
  +#: ../plugin/UploadFile.php:213
   msgid "Please check your php.ini setting"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:164
  +#: ../plugin/UploadFile.php:223
   #, c-format
   msgid "File \"%s\" is uploaded successfully"
   msgstr "\"%s\"  ö󰬽ϴ"
   
  -#: ../plugin/UploadFile.php:203
  +#: ../plugin/UploadFile.php:262
   msgid "Files are uploaded successfully"
   msgstr "  ö󰬽ϴ"
   
  -#: ../plugin/UploadFile.php:243
  -msgid ": Rename"
  +#: ../plugin/UploadFile.php:306
  +msgid "Replace original file"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:307
  +msgid "Rename if it already exist"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:236
  +#: ../plugin/UploadFile.php:312 ../plugin/rename.php:69
  +msgid "Rename"
  +msgstr "̸ٲٱ"
  +
  +#: ../plugin/UploadFile.php:320
  +#, c-format
  +msgid "or %s."
  +msgstr "Ȥ %s"
  +
  +#: ../plugin/UploadFile.php:320
  +msgid "Upload files"
  +msgstr " ø"
  +
  +#: ../plugin/UploadedFiles.php:281
   msgid "Next page &raquo;"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:238
  +#: ../plugin/UploadedFiles.php:283
   msgid "&laquo; First page"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:294
  +#: ../plugin/UploadedFiles.php:360
   #, c-format
   msgid "Total %d files"
   msgstr " %d  "
   
  -#: ../plugin/UploadedFiles.php:298 ../plugin/rename.php:77 ../wikilib.php:935
  -#: ../wikilib.php:1763
  +#: ../plugin/UploadedFiles.php:364 ../plugin/rename.php:77 ../wikilib.php:1034
  +#: ../wikilib.php:1900
   msgid "Password"
   msgstr "йȣ"
   
  -#: ../plugin/UploadedFiles.php:299 ../wikilib.php:913
  +#: ../plugin/UploadedFiles.php:365 ../wikilib.php:1012
   msgid "Delete selected files"
   msgstr "õ  "
   
  -#: ../plugin/VisualTour.php:98
  +#: ../plugin/VisualTour.php:118
   msgid "Normal"
   msgstr ""
   
  -#: ../plugin/VisualTour.php:100
  +#: ../plugin/VisualTour.php:120
   msgid "Wider"
   msgstr "а"
   
  -#: ../plugin/VisualTour.php:102
  +#: ../plugin/VisualTour.php:122
   msgid "Deeper"
   msgstr ""
   
  @@ -697,7 +735,7 @@
   msgid "Voted successfully"
   msgstr ""
   
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2189
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2305
   msgid "Others"
   msgstr ""
   
  @@ -800,11 +838,11 @@
   msgid "No manpage found"
   msgstr "Manpage ϴ"
   
  -#: ../plugin/man_get.php:104
  +#: ../plugin/man_get.php:112
   msgid "Edit"
   msgstr "ġ"
   
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1813
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1976
   msgid "Login or Join"
   msgstr ""
   
  @@ -826,15 +864,15 @@
   msgid "Fail to save translations."
   msgstr "  ߽ϴ"
   
  -#: ../plugin/new.php:11 ../plugin/new.php:18
  +#: ../plugin/new.php:13 ../plugin/new.php:28
   msgid "Create a new page"
   msgstr " "
   
  -#: ../plugin/new.php:16
  -msgid "Enter a page name"
  -msgstr " ̸ "
  +#: ../plugin/new.php:26
  +msgid "Page Name"
  +msgstr " ̸"
   
  -#: ../plugin/new.php:17
  +#: ../plugin/new.php:27
   msgid "Normalize this page name"
   msgstr "̸ ȭϱ"
   
  @@ -842,27 +880,31 @@
   msgid "First:"
   msgstr ""
   
  -#: ../plugin/print.php:20
  +#: ../plugin/print.php:24
   #, c-format
   msgid "Retrieved from %s"
   msgstr ""
   
  -#: ../plugin/print.php:25
  +#: ../plugin/print.php:29
   #, c-format
   msgid "last modified %s %s"
   msgstr ""
   
  -#: ../plugin/processor/vim.php:49
  +#: ../plugin/processor/blog.php:99
  +msgid "raw"
  +msgstr ""
  +
  +#: ../plugin/processor/vim.php:58
   msgid "Toggle line numbers"
   msgstr ""
   
   #: ../plugin/quicklinks.php:16 ../plugin/scrap.php:37
  -#: ../plugin/subscribe.php:25
  +#: ../plugin/subscribe.php:19 ../plugin/subscribe.php:55
   msgid "Please login or make your ID."
   msgstr "αϰų ID 弼"
   
   #: ../plugin/quicklinks.php:22 ../plugin/scrap.php:40
  -#: ../plugin/subscribe.php:31
  +#: ../plugin/subscribe.php:61
   msgid "Goto UserPreferences"
   msgstr "UserPreferences "
   
  @@ -956,10 +998,6 @@
   msgid "New name:"
   msgstr "̸:"
   
  -#: ../plugin/rename.php:69
  -msgid "Rename"
  -msgstr "̸ٲٱ"
  -
   #: ../plugin/rename.php:74
   msgid "Rename and fix Backlinks"
   msgstr "̸ ٲٰ  ũ "
  @@ -968,7 +1006,7 @@
   msgid "Only WikiMaster can rename this page"
   msgstr ""
   
  -#: ../plugin/rename.php:79 ../wikilib.php:973
  +#: ../plugin/rename.php:79 ../wikilib.php:1072
   msgid "with revision history"
   msgstr " 丮 Բ"
   
  @@ -1014,7 +1052,7 @@
   msgid "Select a tarball file to restore"
   msgstr ""
   
  -#: ../plugin/rss_rc.php:54
  +#: ../plugin/rss_rc.php:62
   msgid "show changes"
   msgstr ""
   
  @@ -1027,7 +1065,7 @@
   msgid "Do you want to scrap \"%s\" ?"
   msgstr "\"%s\"() ũϽðڽϱ ?"
   
  -#: ../plugin/security/acl.php:204 ../plugin/security/community.php:25
  +#: ../plugin/security/acl.php:222 ../plugin/security/community.php:25
   #: ../plugin/security/community.php:35 ../plugin/security/community.php:45
   #: ../plugin/security/mustlogin.php:28 ../plugin/security/mustlogin.php:39
   #: ../plugin/security/mustlogin.php:50 ../plugin/security/needtologin.php:28
  @@ -1036,7 +1074,7 @@
   msgid "You are not allowed to '%s' on this page"
   msgstr "'%s'   ׼Դϴ."
   
  -#: ../plugin/security/acl.php:205
  +#: ../plugin/security/acl.php:223
   msgid "Please contact WikiMasters :b"
   msgstr ""
   
  @@ -1084,11 +1122,19 @@
   msgid "Trackback sent"
   msgstr "Ʈ"
   
  -#: ../plugin/subscribe.php:12
  +#: ../plugin/subscribe.php:24 ../plugin/subscribe.php:28
  +msgid "You did'nt subscribed any pages yet."
  +msgstr ""
  +
  +#: ../plugin/subscribe.php:35
  +msgid "No subscribed pages found."
  +msgstr "  ϴ"
  +
  +#: ../plugin/subscribe.php:42
   msgid "EmailNotification is not activated"
   msgstr "EmailNotification Ȱȭ ʾҽϴ !"
   
  -#: ../plugin/subscribe.php:13
  +#: ../plugin/subscribe.php:43
   msgid ""
   "If you want to subscribe this page please contact the WikiMaster to activate "
   "the e-mail notification"
  @@ -1096,11 +1142,11 @@
   "  Ͻ÷ WikiMaster ڸ Ȱȭ Ű "
   "ϼ"
   
  -#: ../plugin/subscribe.php:23
  +#: ../plugin/subscribe.php:53
   msgid "Please enter your email address first."
   msgstr "̸ ּҸ  "
   
  -#: ../plugin/subscribe.php:32
  +#: ../plugin/subscribe.php:62
   msgid ""
   "If you want to subscribe this page, just make your ID and register your "
   "email address in the UserPreferences."
  @@ -1108,15 +1154,24 @@
   "  Ͻ÷, ID ϰ ڸ ּҸ UserPreferences "
   "ϼ"
   
  -#: ../plugin/subscribe.php:47
  +#: ../plugin/subscribe.php:77
   msgid "Subscribe lists updated."
   msgstr "  ŵǾϴ"
   
  -#: ../plugin/subscribe.php:59
  +#: ../plugin/subscribe.php:91
  +#, c-format
  +msgid "\"%s\" is already subscribed."
  +msgstr ""
  +
  +#: ../plugin/subscribe.php:100
   #, c-format
   msgid "Do you want to subscribe \"%s\" ?"
   msgstr "\"%s\"() Ͻðڽϱ ?"
   
  +#: ../plugin/subscribe.php:106
  +msgid "Subscribed pages"
  +msgstr " "
  +
   #: ../plugin/theme.php:29
   msgid "Theme cleared. Goto UserPreferences."
   msgstr "׸ . UserPreferences "
  @@ -1133,7 +1188,7 @@
   msgid "Theme disabled !"
   msgstr ""
   
  -#: ../plugin/theme.php:96
  +#: ../plugin/theme.php:97
   msgid "-- Select --"
   msgstr "--  --"
   
  @@ -1191,181 +1246,210 @@
   msgid "ID does not exists !"
   msgstr "̵  ʽϴ !"
   
  -#: ../plugin/userform.php:86 ../plugin/userform.php:273
  +#: ../plugin/userform.php:86 ../plugin/userform.php:275
   #, c-format
   msgid "Successfully login as '%s'"
   msgstr " '%s'() αεǾϴ"
   
  -#: ../plugin/userform.php:92 ../plugin/userform.php:278
  -#: ../plugin/userform.php:321
  +#: ../plugin/userform.php:93 ../plugin/userform.php:280
  +#: ../plugin/userform.php:323
   msgid "Invalid password !"
   msgstr "߸ йȣ !"
   
  -#: ../plugin/userform.php:96
  +#: ../plugin/userform.php:97
   #, c-format
   msgid "\"%s\" does not exists on this wiki !"
   msgstr ""
   
  -#: ../plugin/userform.php:98
  +#: ../plugin/userform.php:99
   msgid "Make new ID on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:104
  +#: ../plugin/userform.php:105
   msgid "Cookie deleted !"
   msgstr "Ű ϴ !"
   
  -#: ../plugin/userform.php:106 ../wikilib.php:1870
  +#: ../plugin/userform.php:108 ../wikilib.php:2046
   msgid "E-mail new password"
   msgstr " йȣ ޱ"
   
  -#: ../plugin/userform.php:117 ../plugin/userform.php:180
  -#: ../plugin/userform.php:203
  +#: ../plugin/userform.php:119 ../plugin/userform.php:182
  +#: ../plugin/userform.php:205
   msgid "Invalid ticket !"
   msgstr ""
   
  -#: ../plugin/userform.php:119 ../plugin/userform.php:205
  +#: ../plugin/userform.php:121 ../plugin/userform.php:207
   msgid "You need a ticket !"
   msgstr ""
   
  -#: ../plugin/userform.php:151
  +#: ../plugin/userform.php:153
   msgid "New password confirmation"
   msgstr " йȣ Ȯ"
   
  -#: ../plugin/userform.php:156
  +#: ../plugin/userform.php:158
   msgid "Please confirm your new password"
   msgstr " йȣ Ȯ ּ"
   
  -#: ../plugin/userform.php:158
  +#: ../plugin/userform.php:160
   #, c-format
   msgid "Your new password is %s"
   msgstr " йȣ %s"
   
  -#: ../plugin/userform.php:159 ../plugin/userform.php:265
  +#: ../plugin/userform.php:161 ../plugin/userform.php:267
   msgid "Please change your password later"
   msgstr "йȣ ٲּ"
   
  -#: ../plugin/userform.php:163 ../plugin/userform.php:171
  +#: ../plugin/userform.php:165 ../plugin/userform.php:173
   msgid "Fail to e-mail notification !"
   msgstr "̸ ˸  !"
   
  -#: ../plugin/userform.php:166
  +#: ../plugin/userform.php:168
   msgid "New password is sent to your e-mail !"
   msgstr " йȣ ̸Ϸ ۵Ǿϴ !"
   
  -#: ../plugin/userform.php:167
  +#: ../plugin/userform.php:169
   msgid "Please check your e-mail"
   msgstr "̸ Ȯ ּ"
   
  -#: ../plugin/userform.php:172
  +#: ../plugin/userform.php:174
   msgid "E-mail mismatch !"
   msgstr "̸  ʽϴ !"
   
  -#: ../plugin/userform.php:174
  +#: ../plugin/userform.php:176
   msgid "Invalid request"
   msgstr "߸ û !"
   
  -#: ../plugin/userform.php:175
  +#: ../plugin/userform.php:177
   msgid "Please confirm your e-mail address first !"
   msgstr "̸ ּҸ  Ȯ ּ !"
   
  -#: ../plugin/userform.php:182
  +#: ../plugin/userform.php:184
   msgid "ID and e-mail mismatch !"
   msgstr "̵ ̸ ּҰ  ʽϴ !"
   
  -#: ../plugin/userform.php:184
  +#: ../plugin/userform.php:186
   msgid "Please try again or make a new profile"
   msgstr "̸ ּ  ٽ ϼ"
   
  -#: ../plugin/userform.php:224 ../plugin/userform.php:309
  +#: ../plugin/userform.php:226 ../plugin/userform.php:311
   msgid "too short password!"
   msgstr "йȣ ªϴ"
   
  -#: ../plugin/userform.php:225
  +#: ../plugin/userform.php:227
   msgid "mismatch password!"
   msgstr "йȣ  ʽϴ!"
   
  -#: ../plugin/userform.php:226 ../plugin/userform.php:313
  +#: ../plugin/userform.php:228 ../plugin/userform.php:315
   msgid "not acceptable character found in the password!"
   msgstr ""
   
  -#: ../plugin/userform.php:229
  +#: ../plugin/userform.php:231
   msgid "Your password is too simple to use as a password !"
   msgstr ""
   
  -#: ../plugin/userform.php:235 ../plugin/userform.php:344
  +#: ../plugin/userform.php:237 ../plugin/userform.php:346
   msgid "Your email address is not valid"
   msgstr "̸ ּҰ ߸ Ǿϴ"
   
  -#: ../plugin/userform.php:240
  +#: ../plugin/userform.php:242 ../plugin/userform.php:407
   msgid "Fail to register"
   msgstr " ߽ϴ"
   
  -#: ../plugin/userform.php:241
  +#: ../plugin/userform.php:243 ../plugin/userform.php:408
   msgid "You are not allowed to register on this wiki"
   msgstr "Ű   ʾҽϴ"
   
  -#: ../plugin/userform.php:242 ../wiki.php:4069 ../wiki.php:4080
  +#: ../plugin/userform.php:244 ../plugin/userform.php:409 ../wiki.php:4654
  +#: ../wiki.php:4665
   msgid "Please contact WikiMasters"
   msgstr "Űڿ ϼ"
   
  -#: ../plugin/userform.php:246
  +#: ../plugin/userform.php:248
   msgid "Successfully added!"
   msgstr ""
   
  -#: ../plugin/userform.php:252
  +#: ../plugin/userform.php:254
   #, c-format
   msgid "Successfully added as '%s'"
   msgstr ""
   
  -#: ../plugin/userform.php:253
  +#: ../plugin/userform.php:255
   msgid "Please check your mailbox"
   msgstr "̸ Ȯ ּ"
   
  -#: ../plugin/userform.php:260 ../plugin/userform.php:338
  +#: ../plugin/userform.php:262 ../plugin/userform.php:340
   msgid "E-mail confirmation"
   msgstr "̸ Ȯ"
   
  -#: ../plugin/userform.php:262 ../plugin/userform.php:340
  +#: ../plugin/userform.php:264 ../plugin/userform.php:342
   msgid "Please confirm your email address"
   msgstr "̸ ּҸ Ȯ ּ"
   
  -#: ../plugin/userform.php:264
  +#: ../plugin/userform.php:266
   #, c-format
   msgid "Your initial password is %s"
   msgstr ""
   
  -#: ../plugin/userform.php:268
  +#: ../plugin/userform.php:270
   msgid "Confirmation E-mail sent"
   msgstr "Ȯ ̸ ϴ"
   
  -#: ../plugin/userform.php:283
  +#: ../plugin/userform.php:285
   msgid "Invalid username !"
   msgstr "߸ ̸ !"
   
  -#: ../plugin/userform.php:311
  +#: ../plugin/userform.php:313
   msgid "mismatch password !"
   msgstr "߸ йȣ !"
   
  -#: ../plugin/userform.php:314 ../plugin/userform.php:322
  +#: ../plugin/userform.php:316 ../plugin/userform.php:324
   msgid "Password is not changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:316
  +#: ../plugin/userform.php:318
   msgid "Password is changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:318
  +#: ../plugin/userform.php:320
   msgid "Password is too simple to use as a password !"
   msgstr "йȣ ⿡ ʹ ª йȣԴϴ !"
   
  -#: ../plugin/userform.php:342
  +#: ../plugin/userform.php:344
   msgid "E-mail confirmation mail sent"
   msgstr ""
   
  -#: ../plugin/userform.php:350
  +#: ../plugin/userform.php:355
  +msgid "Your Nickname already used as ID in this wiki"
  +msgstr ""
  +
  +#: ../plugin/userform.php:360
   msgid "Profiles are saved successfully !"
   msgstr "   Ǿϴ !"
   
  +#: ../plugin/userform.php:383 ../plugin/userform.php:429
  +#, c-format
  +msgid "Authentication request was failed: %s"
  +msgstr ""
  +
  +#: ../plugin/userform.php:402
  +#, c-format
  +msgid "Successfully login as '%s' via OpenID."
  +msgstr " ID '%s'() αεǾϴ"
  +
  +#: ../plugin/userform.php:416
  +#, c-format
  +msgid "Your Nickname %s already used as ID in this Wiki."
  +msgstr ""
  +
  +#: ../plugin/userform.php:424
  +#, c-format
  +msgid "OpenID Authentication successful and saved as %s."
  +msgstr ""
  +
  +#: ../plugin/userform.php:431
  +msgid "Invalid OpenID Authentication request"
  +msgstr ""
  +
   #: ../plugin/whois.php:119
   #, c-format
   msgid "Could not connect to %s server"
  @@ -1376,118 +1460,139 @@
   msgid "Whois search result for %s"
   msgstr "%s  Whois ġ "
   
  -#: ../wiki.php:1129
  +#: ../wiki.php:1204
   #, c-format
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1431
  +#: ../wiki.php:1565
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
  -#: ../wiki.php:1441
  -msgid "File does not exists"
  -msgstr ""
  +#: ../wiki.php:1575
  +msgid "File does not exist"
  +msgstr " ϴ"
   
  -#: ../wiki.php:2410
  +#: ../wiki.php:2646 ../wiki.php:2657 ../wiki.php:4858
   msgid "Invalid ajax action."
   msgstr "߸ ajax ׼."
   
  -#: ../wiki.php:2668
  +#: ../wiki.php:3072
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:2668
  +#: ../wiki.php:3072
   msgid "TwinPages"
   msgstr "TwinPages"
   
  -#: ../wiki.php:2673
  +#: ../wiki.php:3077
   msgid "See [TwinPages]:"
   msgstr ""
   
  -#: ../wiki.php:2978
  +#: ../wiki.php:3443
   msgid "edit"
   msgstr ""
   
  -#: ../wiki.php:3131
  +#: ../wiki.php:3616
   msgid "Sister Sites Index"
   msgstr ""
   
  -#: ../wiki.php:3422 ../locale/dummy.php:6
  +#: ../wiki.php:3968 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "ġ"
   
  -#: ../wiki.php:3424
  +#: ../wiki.php:3970
   msgid "NotEditable"
   msgstr "ĥ "
   
  -#: ../wiki.php:3426 ../locale/dummy.php:6
  +#: ../wiki.php:3974 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:3427 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:3975 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "ã"
   
  -#: ../wiki.php:3762
  +#: ../wiki.php:4348
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:4068
  +#: ../wiki.php:4653
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:4079
  +#: ../wiki.php:4664
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:4110 ../wiki.php:4113 ../wikilib.php:1128
  +#: ../wiki.php:4702 ../wiki.php:4711 ../wikilib.php:1277
   msgid "Create this page"
   msgstr " "
   
  -#: ../wiki.php:4116 ../wikilib.php:1130
  +#: ../wiki.php:4713
   #, c-format
  -msgid " or click %s to fullsearch this page.\n"
  -msgstr ""
  +msgid "%s has saved revisions"
  +msgstr "%s()   ֽϴ"
   
  -#: ../wiki.php:4116 ../wikilib.php:1130
  +#: ../wiki.php:4714 ../wiki.php:4721
  +#, c-format
  +msgid "%s or click %s to fullsearch this page.\n"
  +msgstr "%s  ų %s  ü ã⸦ غ.\n"
  +
  +#: ../wiki.php:4714 ../wiki.php:4721 ../wikilib.php:1279
   msgid "title"
   msgstr ""
   
  -#: ../wiki.php:4125
  -msgid " or alternativly, use one of these templates:\n"
  -msgstr " Ȥ Ʒ øƮ  ̿ϼ:\n"
  +#: ../wiki.php:4716
  +#, c-format
  +msgid "Old Revisions of the %s"
  +msgstr ""
  +
  +#: ../wiki.php:4719
  +#, c-format
  +msgid "%s is not found in this Wiki"
  +msgstr "%s  ̰ Ű ã  ϴ"
   
  -#: ../wiki.php:4128
  -msgid "You have no templates"
  +#: ../wiki.php:4731
  +#, c-format
  +msgid "%s or alternativly, use one of these templates:\n"
   msgstr ""
  +"%s  ų Ʒ øƮ  ̿   弼:\n"
  +
  +#: ../wiki.php:4734
  +msgid "You have no templates"
  +msgstr "øƮ ϴ"
   
  -#: ../wiki.php:4130
  +#: ../wiki.php:4736
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
  -msgstr "øƮ ÷ '%s'    弼.\n"
  +msgstr "øƮ ÷ '%s'  ̸   弼.\n"
   
  -#: ../wiki.php:4141
  +#: ../wiki.php:4747
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
  -#: ../wiki.php:4235
  +#: ../wiki.php:4860
  +msgid "Invalid macro action."
  +msgstr "߸ ũ ׼."
  +
  +#: ../wiki.php:4870
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "'%s'()  ʾҽϴ"
   
  -#: ../wiki.php:4255
  +#: ../wiki.php:4890
   #, c-format
   msgid "Fail to \"%s\" !"
  -msgstr ""
  +msgstr "\"%s\"() ߽ϴ !"
   
  -#: ../wiki.php:4258
  +#: ../wiki.php:4893
   msgid "Please enter the valid password"
   msgstr "Ȯ йȣ ־ּ"
   
  -#: ../wikilib.php:574
  +#: ../wikilib.php:629
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -1516,322 +1621,335 @@
   "<b>̺</b>: ||   |||| ĭ ģ  ||;<br />\n"
   "̺̳     ȵ˴ϴ.<br />\n"
   
  -#: ../wikilib.php:615
  +#: ../wikilib.php:670
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
  -#: ../wikilib.php:698
  +#: ../wikilib.php:763
   msgid "Use one of the following templates as an initial release :\n"
  -msgstr "ó   øƮ Ȱϼ :\n"
  +msgstr "   øƮ Ȱϼ :\n"
   
  -#: ../wikilib.php:700
  +#: ../wikilib.php:765
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr "øƮ ÷ '%s'  ̸  弼."
   
  -#: ../wikilib.php:704
  +#: ../wikilib.php:769
   msgid "Merge"
   msgstr ""
   
  -#: ../wikilib.php:705
  +#: ../wikilib.php:770
   msgid "Merge manually"
   msgstr " "
   
  -#: ../wikilib.php:706
  +#: ../wikilib.php:771
   msgid "Ignore conflicts"
   msgstr "浹 "
   
  -#: ../wikilib.php:731
  +#: ../wikilib.php:796
   msgid "ReduceEditor"
   msgstr "â ̱"
   
  -#: ../wikilib.php:732
  +#: ../wikilib.php:797
   msgid "EnlargeEditor"
   msgstr "â ̱"
   
  -#: ../wikilib.php:736 ../locale/dummy.php:6
  +#: ../wikilib.php:801 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr "Ű"
   
  -#: ../wikilib.php:738
  +#: ../wikilib.php:803
   msgid "HelpOnEditing"
   msgstr "ġ "
   
  -#: ../wikilib.php:765
  +#: ../wikilib.php:832
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:782
  +#: ../wikilib.php:849
   msgid "--Select Category--"
   msgstr "--īװ --"
   
  -#: ../wikilib.php:792
  +#: ../wikilib.php:859
   msgid "Minor edit"
   msgstr ""
   
  -#: ../wikilib.php:800
  +#: ../wikilib.php:867
   msgid "Skip to preview"
   msgstr "̸"
   
  -#: ../wikilib.php:802 ../wikilib.php:1816 ../wikilib.php:1858
  +#: ../wikilib.php:874 ../wikilib.php:1979 ../wikilib.php:2033
   msgid "Save"
   msgstr ""
   
  -#: ../wikilib.php:803
  +#: ../wikilib.php:875
   msgid "Summary of Change"
   msgstr "ٲ "
   
  -#: ../wikilib.php:849
  +#: ../wikilib.php:948
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:854
  +#: ../wikilib.php:953
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s() ȿ ׼ ƴմϴ"
   
  -#: ../wikilib.php:856
  +#: ../wikilib.php:955
   msgid "Is it valid action ?"
   msgstr "ùٸ ׼Դϱ ?"
   
  -#: ../wikilib.php:901
  +#: ../wikilib.php:1000
   #, c-format
   msgid "File '%s' is deleted"
   msgstr "'%s'  ϴ"
   
  -#: ../wikilib.php:903
  +#: ../wikilib.php:1002
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr "'%s' ⸦ ߽ϴ"
   
  -#: ../wikilib.php:908
  +#: ../wikilib.php:1007
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr "'%s' 丮 ϴ"
   
  -#: ../wikilib.php:910
  +#: ../wikilib.php:1009
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr "'%s' ⸦ ߽ϴ"
   
  -#: ../wikilib.php:920 ../wikilib.php:940
  +#: ../wikilib.php:1019 ../wikilib.php:1039
   msgid "No files are selected !"
   msgstr " õ ʾҽϴ !"
   
  -#: ../wikilib.php:933
  +#: ../wikilib.php:1032
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr " '%s'() ðڽϱ ?"
   
  -#: ../wikilib.php:936
  +#: ../wikilib.php:1035
   msgid "Delete"
   msgstr ""
   
  -#: ../wikilib.php:937
  +#: ../wikilib.php:1036
   msgid "Delete selected file"
   msgstr "õ  "
   
  -#: ../wikilib.php:958
  +#: ../wikilib.php:1057
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr ""
   
  -#: ../wikilib.php:965
  +#: ../wikilib.php:1064
   msgid "Please delete this file manually."
   msgstr ""
   
  -#: ../wikilib.php:967
  +#: ../wikilib.php:1066
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "\"%s\"()  ?"
   
  -#: ../wikilib.php:1017
  +#: ../wikilib.php:1116
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
  -#: ../wikilib.php:1182 ../wikilib.php:1284
  +#: ../wikilib.php:1279
  +#, c-format
  +msgid " or click %s to fullsearch this page.\n"
  +msgstr ""
  +
  +#: ../wikilib.php:1331 ../wikilib.php:1433
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "%s() ġ  ٸ    ߽ϴ"
   
  -#: ../wikilib.php:1188
  +#: ../wikilib.php:1337
   msgid "Section edit is not valid for non-exists page."
   msgstr "      ʽϴ"
   
  -#: ../wikilib.php:1221 ../wikilib.php:1397
  +#: ../wikilib.php:1370 ../wikilib.php:1547
   msgid "mail does not supported by default."
   msgstr "  ʽϴ"
   
  -#: ../wikilib.php:1225 ../wikilib.php:1401
  +#: ../wikilib.php:1374 ../wikilib.php:1551
   msgid "Sent notification mail."
   msgstr " ½ϴ"
   
  -#: ../wikilib.php:1227 ../wikilib.php:1403
  +#: ../wikilib.php:1376 ../wikilib.php:1553
   msgid "No subscribers found."
   msgstr "ڰ ϴ"
   
  -#: ../wikilib.php:1232 ../wikilib.php:1408
  +#: ../wikilib.php:1381 ../wikilib.php:1558
   #, c-format
   msgid "%s is not editable"
   msgstr "%s()   ϴ"
   
  -#: ../wikilib.php:1234 ../wikilib.php:1410
  +#: ../wikilib.php:1383 ../wikilib.php:1560
   #, c-format
   msgid "%s is saved"
   msgstr "%s() Ǿϴ"
   
  -#: ../wikilib.php:1275
  +#: ../wikilib.php:1424
   msgid "Goto Editor"
   msgstr " "
   
  -#: ../wikilib.php:1289
  +#: ../wikilib.php:1438
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr "%s  ֱ  յǾϴ."
   
  -#: ../wikilib.php:1290
  +#: ../wikilib.php:1439
   #, c-format
   msgid "%s is merged successfully"
   msgstr "%s()  յǾϴ"
   
  -#: ../wikilib.php:1294
  +#: ../wikilib.php:1443
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr "%s Ͽ  浹 ߰ߵǾϴ !"
   
  -#: ../wikilib.php:1295
  +#: ../wikilib.php:1444
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr "%   ҵǾϴ."
   
  -#: ../wikilib.php:1296
  +#: ../wikilib.php:1445
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1297
  +#: ../wikilib.php:1446
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1302
  +#: ../wikilib.php:1451
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr ""
   
  -#: ../wikilib.php:1303
  +#: ../wikilib.php:1452
   msgid "Please resolve conflicts manually."
   msgstr "浹  ذϽñ ٶϴ."
   
  -#: ../wikilib.php:1306
  +#: ../wikilib.php:1455
   #, c-format
   msgid "Force merging for %s !"
   msgstr "%s    Ǿϴ !"
   
  -#: ../wikilib.php:1307
  +#: ../wikilib.php:1456
   msgid "Please be careful, you could damage useful information."
   msgstr "Ͻñ ٶϴ. ߿  Ҿ  ֽϴ."
   
  -#: ../wikilib.php:1319
  +#: ../wikilib.php:1468
   msgid "Conflict error!"
   msgstr "浹 !"
   
  -#: ../wikilib.php:1357
  +#: ../wikilib.php:1507
   #, c-format
   msgid "Preview of %s"
   msgstr "%s ̸"
   
  -#: ../wikilib.php:1442
  +#: ../wikilib.php:1592
   msgid "Nobody subscribed to this page."
   msgstr "ƹ   ʰֽϴ."
   
  -#: ../wikilib.php:1461
  +#: ../wikilib.php:1611
   #, c-format
   msgid "%s page is modified"
   msgstr "%s  Ǿϴ"
   
  -#: ../wikilib.php:1490
  +#: ../wikilib.php:1640
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:1503
  +#: ../wikilib.php:1653
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:1508
  +#: ../wikilib.php:1658
   msgid "Mails are sent successfully"
   msgstr "  ½ϴ"
   
  -#: ../wikilib.php:1509
  +#: ../wikilib.php:1659
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr "'%s'  ½ϴ"
   
  -#: ../wikilib.php:1511
  +#: ../wikilib.php:1661
   msgid "Fail to send mail"
   msgstr "  ߽ϴ"
   
  -#: ../wikilib.php:1522
  +#: ../wikilib.php:1672
   msgid "This wiki does not support sendmail"
   msgstr "Ű sendmail  մϴ"
   
  -#: ../wikilib.php:1620
  +#: ../wikilib.php:1770
   msgid "Invalid regular expression !"
   msgstr "߸ Խ !"
   
  -#: ../wikilib.php:1644
  +#: ../wikilib.php:1794
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:1647
  +#: ../wikilib.php:1797
   msgid "Infinite loop possible!"
   msgstr "  !"
   
  -#: ../wikilib.php:1774
  +#: ../wikilib.php:1916
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:1775 ../wikilib.php:1875
  +#: ../wikilib.php:1917
  +msgid "OpenID"
  +msgstr ""
  +
  +#: ../wikilib.php:1929 ../wikilib.php:2051
   msgid "ID"
   msgstr "̵"
   
  -#: ../wikilib.php:1796 ../wikilib.php:1868
  +#: ../wikilib.php:1959 ../wikilib.php:2044
   msgid "Make profile"
   msgstr " "
   
  -#: ../wikilib.php:1798
  +#: ../wikilib.php:1961
   msgid "password again"
   msgstr "йȣ Է"
   
  -#: ../wikilib.php:1800 ../wikilib.php:1838
  +#: ../wikilib.php:1963 ../wikilib.php:2012
   msgid "Mail"
   msgstr ""
   
  -#: ../wikilib.php:1820
  +#: ../wikilib.php:1985
   msgid "New password"
   msgstr " йȣ"
   
  -#: ../wikilib.php:1839
  +#: ../wikilib.php:1990
  +msgid "Nickname"
  +msgstr ""
  +
  +#: ../wikilib.php:2013
   msgid "Time Zone"
   msgstr "ð"
   
  -#: ../wikilib.php:1847
  +#: ../wikilib.php:2022
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:2190
  +#: ../wikilib.php:2306
   msgid "Show all"
   msgstr " "
   
  -#: ../wikilib.php:2332
  +#: ../wikilib.php:2448
   msgid "Contents"
   msgstr ""
   
  -#: ../wikilib.php:2443
  +#: ../wikilib.php:2559
   #, c-format
   msgid "Title search for \"%s\""
   msgstr "\"%s\"   ã"
  @@ -1876,5 +1994,8 @@
   msgid "TrackBack"
   msgstr "Ʈ"
   
  +#~ msgid "Enter a page name"
  +#~ msgstr " ̸ "
  +
   #~ msgid "Info. for %s"
   #~ msgstr "%s "
  
  
  
  1.18      +385 -268  moniwiki/locale/po/moniwiki.pot
  
  Index: moniwiki.pot
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/moniwiki.pot,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- moniwiki.pot	22 Jul 2006 11:15:46 -0000	1.17
  +++ moniwiki.pot	15 Dec 2007 05:56:26 -0000	1.18
  @@ -6,7 +6,7 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: PACKAGE VERSION\n"
  -"POT-Creation-Date: 2006-07-22 20:14+0900\n"
  +"POT-Creation-Date: 2007-12-15 14:20+0900\n"
   "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
   "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
   "Language-Team: LANGUAGE <LL@li.org>\n"
  @@ -14,16 +14,16 @@
   "Content-Type: text/plain; charset=CHARSET\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  -#: ../plugin/Attachment.php:42 ../plugin/Attachment.php:129
  +#: ../plugin/Attachment.php:70 ../plugin/Attachment.php:232
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr ""
   
  -#: ../plugin/Attachment.php:126
  +#: ../plugin/Attachment.php:229
   msgid "or paste a new picture"
   msgstr ""
   
  -#: ../plugin/Attachment.php:132
  +#: ../plugin/Attachment.php:235
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
  @@ -37,17 +37,17 @@
   msgid "Translate %s to %s"
   msgstr ""
   
  -#: ../plugin/Blog.php:85
  +#: ../plugin/Blog.php:84
   #, c-format
   msgid "Blog cache of \"%s\" is refreshed"
   msgstr ""
   
  -#: ../plugin/Blog.php:109
  +#: ../plugin/Blog.php:108
   #, c-format
   msgid "\"%s\" is updated"
   msgstr ""
   
  -#: ../plugin/Blog.php:114
  +#: ../plugin/Blog.php:113
   msgid "Add Blog"
   msgstr ""
   
  @@ -55,43 +55,56 @@
   msgid "Error: No blog entry found!"
   msgstr ""
   
  -#: ../plugin/Blog.php:162 ../plugin/Comment.php:144
  +#: ../plugin/Blog.php:164 ../plugin/Blog.php:166 ../plugin/Comment.php:157
   msgid "Error: Don't make a clone!"
   msgstr ""
   
  -#: ../plugin/Blog.php:179
  +#: ../plugin/Blog.php:192
   #, c-format
   msgid "Comment added to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:182
  +#: ../plugin/Blog.php:195
   #, c-format
   msgid "Blog entry added to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:219
  +#: ../plugin/Blog.php:197
  +#, c-format
  +msgid "Blog entry \"%s\" added"
  +msgstr ""
  +
  +#: ../plugin/Blog.php:199
  +msgid "Blog entry added"
  +msgstr ""
  +
  +#: ../plugin/Blog.php:240
   #, c-format
   msgid "Add Comment to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:221
  +#: ../plugin/Blog.php:242
   #, c-format
   msgid "Add Blog entry to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:235 ../plugin/Blog.php:290
  +#: ../plugin/Blog.php:260 ../plugin/Blog.php:333
   msgid "Name"
   msgstr ""
   
  -#: ../plugin/Blog.php:239 ../plugin/Blog.php:291
  +#: ../plugin/Blog.php:262 ../plugin/Blog.php:334
   msgid "Title"
   msgstr ""
   
  -#: ../plugin/Blog.php:245 ../plugin/Comment.php:60
  +#: ../plugin/Blog.php:268 ../wikilib.php:869
  +msgid "GUI"
  +msgstr ""
  +
  +#: ../plugin/Blog.php:277 ../plugin/Comment.php:75
   msgid "Don't add a signature"
   msgstr ""
   
  -#: ../plugin/Blog.php:258
  +#: ../plugin/Blog.php:299
   msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
   msgstr ""
   
  @@ -123,7 +136,7 @@
   msgid "%d comments"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:133
  +#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:146
   #: ../plugin/processor/blog.php:78
   msgid "Add comment"
   msgstr ""
  @@ -160,76 +173,76 @@
   msgid "Cut & Paste a Clipboard Image"
   msgstr ""
   
  -#: ../plugin/Comment.php:58
  -msgid "Username"
  -msgstr ""
  -
  -#: ../plugin/Comment.php:61
  +#: ../plugin/Comment.php:59
   msgid "Comment"
   msgstr ""
   
  -#: ../plugin/Comment.php:62 ../wikilib.php:798
  +#: ../plugin/Comment.php:60 ../wikilib.php:865
   msgid "Preview"
   msgstr ""
   
  -#: ../plugin/Comment.php:81
  +#: ../plugin/Comment.php:73
  +msgid "Username"
  +msgstr ""
  +
  +#: ../plugin/Comment.php:94
   msgid "Page is not writable"
   msgstr ""
   
  -#: ../plugin/Comment.php:85
  +#: ../plugin/Comment.php:98
   msgid "You are not allowed to add a comment."
   msgstr ""
   
  -#: ../plugin/Comment.php:86 ../plugin/Keywords.php:333
  +#: ../plugin/Comment.php:99 ../plugin/Keywords.php:355
   msgid "Page does not exists"
   msgstr ""
   
  -#: ../plugin/Comment.php:119 ../plugin/Gallery.php:166 ../wikilib.php:1207
  -#: ../wikilib.php:1351
  +#: ../plugin/Comment.php:132 ../plugin/Gallery.php:171 ../wikilib.php:1356
  +#: ../wikilib.php:1501
   msgid ""
   "Sorry, can not save page because some messages are blocked in this wiki."
   msgstr ""
   
  -#: ../plugin/Comment.php:124
  +#: ../plugin/Comment.php:137
   msgid "Preview comment"
   msgstr ""
   
  -#: ../plugin/Comment.php:191
  +#: ../plugin/Comment.php:259
   #, c-format
   msgid "%s is commented successfully"
   msgstr ""
   
  -#: ../plugin/Comment.php:192
  +#: ../plugin/Comment.php:260
   msgid "Comment added successfully"
   msgstr ""
   
  -#: ../plugin/Diff.php:177 ../plugin/Info.php:188
  +#: ../plugin/Diff.php:207 ../plugin/Info.php:203
   msgid "No older revisions available"
   msgstr ""
   
  -#: ../plugin/Diff.php:182 ../plugin/Info.php:194
  +#: ../plugin/Diff.php:212 ../plugin/Info.php:209
   msgid "Version info is not available in this wiki"
   msgstr ""
   
  -#: ../plugin/Diff.php:193 ../wikilib.php:1338
  +#: ../plugin/Diff.php:223 ../wikilib.php:1488
   msgid "No difference found"
   msgstr ""
   
  -#: ../plugin/Diff.php:195
  +#: ../plugin/Diff.php:225
   msgid "Difference between versions"
   msgstr ""
   
  -#: ../plugin/Diff.php:197 ../plugin/Diff.php:320
  +#: ../plugin/Diff.php:227 ../plugin/Diff.php:346
   #, c-format
   msgid "Difference between r%s and r%s"
   msgstr ""
   
  -#: ../plugin/Diff.php:200 ../plugin/Diff.php:322
  +#: ../plugin/Diff.php:230 ../plugin/Diff.php:348
   #, c-format
   msgid "Difference between r%s and the current"
   msgstr ""
   
  -#: ../plugin/Diff.php:324
  +#: ../plugin/Diff.php:350
   msgid "latest changes"
   msgstr ""
   
  @@ -237,7 +250,7 @@
   msgid "Draw new picture"
   msgstr ""
   
  -#: ../plugin/Draw.php:81 ../plugin/UploadFile.php:154
  +#: ../plugin/Draw.php:81 ../plugin/UploadFile.php:212
   #, c-format
   msgid "Fail to copy \"%s\" to \"%s\""
   msgstr ""
  @@ -304,7 +317,7 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:44 ../plugin/VisualTour.php:104
  +#: ../plugin/FullSearch.php:44 ../plugin/VisualTour.php:124 ../wiki.php:3972
   msgid "Refresh"
   msgstr ""
   
  @@ -313,157 +326,165 @@
   msgid " (%s search results)"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:123
  +#: ../plugin/FullSearch.php:129
   msgid "Empty expression"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:127 ../wikilib.php:2447
  +#: ../plugin/FullSearch.php:133 ../wikilib.php:2563
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr ""
   
  -#: ../plugin/Gallery.php:235 ../plugin/UploadedFiles.php:200
  +#: ../plugin/Gallery.php:242 ../plugin/UploadedFiles.php:244
   msgid "No files found"
   msgstr ""
   
  -#: ../plugin/Gallery.php:314 ../plugin/Gallery.php:327
  +#: ../plugin/Gallery.php:333 ../plugin/Gallery.php:346
   msgid "add comment"
   msgstr ""
   
  -#: ../plugin/Gallery.php:324
  +#: ../plugin/Gallery.php:343
   msgid "show comments"
   msgstr ""
   
  -#: ../plugin/Gallery.php:366 ../plugin/Gallery.php:370 ../wikilib.php:1194
  -#: ../wikilib.php:1336
  +#: ../plugin/Gallery.php:392 ../plugin/Gallery.php:396 ../wikilib.php:1343
  +#: ../wikilib.php:1486
   #, c-format
   msgid "Go back or return to %s"
   msgstr ""
   
  -#: ../plugin/Gallery.php:367
  +#: ../plugin/Gallery.php:393
   msgid "Comments are edited"
   msgstr ""
   
  -#: ../plugin/Gallery.php:371
  +#: ../plugin/Gallery.php:397
   msgid "Comments is added"
   msgstr ""
   
  -#: ../plugin/ImportUrl.php:111
  +#: ../plugin/ImportUrl.php:132
   msgid "Import URL"
   msgstr ""
   
  -#: ../plugin/Info.php:28
  +#: ../plugin/Info.php:30
  +msgid "Diff"
  +msgstr ""
  +
  +#: ../plugin/Info.php:34
   msgid "Revision History"
   msgstr ""
   
  -#: ../plugin/Info.php:51
  +#: ../plugin/Info.php:57
   msgid "Show all revisions"
   msgstr ""
   
  -#: ../plugin/Info.php:77
  +#: ../plugin/Info.php:83
   msgid "Yesterday"
   msgstr ""
   
  -#: ../plugin/Info.php:78
  +#: ../plugin/Info.php:84
   #, c-format
   msgid "%s days ago"
   msgstr ""
   
  -#: ../plugin/Info.php:80
  +#: ../plugin/Info.php:86
   #, c-format
   msgid "%s hours ago"
   msgstr ""
   
  -#: ../plugin/Info.php:82
  +#: ../plugin/Info.php:88
   #, c-format
   msgid "%s min ago"
   msgstr ""
   
  -#: ../plugin/Keywords.php:291
  +#: ../plugin/Info.php:149
  +msgid "diff"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:313
   msgid "hits"
   msgstr ""
   
  -#: ../plugin/Keywords.php:299
  +#: ../plugin/Keywords.php:321
   msgid "add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:302
  +#: ../plugin/Keywords.php:324
   msgid "Update keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:304
  +#: ../plugin/Keywords.php:326
   msgid "Add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:305
  +#: ../plugin/Keywords.php:327
   msgid "Add as common words"
   msgstr ""
   
  -#: ../plugin/Keywords.php:306
  +#: ../plugin/Keywords.php:328
   msgid "Unselect all"
   msgstr ""
   
  -#: ../plugin/Keywords.php:307
  +#: ../plugin/Keywords.php:329
   msgid "Suggest new Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:316
  +#: ../plugin/Keywords.php:338
   msgid "select language"
   msgstr ""
   
  -#: ../plugin/Keywords.php:332
  +#: ../plugin/Keywords.php:354
   msgid "You are not able to add keywords."
   msgstr ""
   
  -#: ../plugin/Keywords.php:346
  +#: ../plugin/Keywords.php:368
   #, c-format
   msgid "%s is not found."
   msgstr ""
   
  -#: ../plugin/Keywords.php:462
  +#: ../plugin/Keywords.php:484
   msgid "Common words are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:509
  +#: ../plugin/Keywords.php:531
   #, c-format
   msgid "Keywords for %s are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:535
  +#: ../plugin/Keywords.php:557
   msgid "Keywords are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:537
  +#: ../plugin/Keywords.php:559
   msgid "There are no changes found"
   msgstr ""
   
  -#: ../plugin/Keywords.php:550
  +#: ../plugin/Keywords.php:572
   msgid "Update with these Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:570 ../plugin/Keywords.php:574
  +#: ../plugin/Keywords.php:592 ../plugin/Keywords.php:596
   msgid "alphabetically"
   msgstr ""
   
  -#: ../plugin/Keywords.php:571
  +#: ../plugin/Keywords.php:593
   msgid "by frequency"
   msgstr ""
   
  -#: ../plugin/Keywords.php:573
  +#: ../plugin/Keywords.php:595
   msgid "by size"
   msgstr ""
   
  -#: ../plugin/Keywords.php:579
  +#: ../plugin/Keywords.php:601
   #, c-format
   msgid "Keywords list %s (or %s)"
   msgstr ""
   
  -#: ../plugin/Keywords.php:584
  +#: ../plugin/Keywords.php:606
   #, c-format
   msgid "Select keywords for %s"
   msgstr ""
   
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1085 ../wikilib.php:2436
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1184 ../wikilib.php:2552
   msgid "Use more specific text"
   msgstr ""
   
  @@ -615,7 +636,7 @@
   msgid "TwinPages of %s"
   msgstr ""
   
  -#: ../plugin/TwinPages.php:19 ../wiki.php:4108
  +#: ../plugin/TwinPages.php:19 ../wiki.php:4700
   msgid "See [TwinPages]: "
   msgstr ""
   
  @@ -623,64 +644,81 @@
   msgid "No TwinPages found."
   msgstr ""
   
  -#: ../plugin/UploadFile.php:78
  +#: ../plugin/UploadFile.php:131
   #, c-format
   msgid "%s is not allowed to upload"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:127
  +#: ../plugin/UploadFile.php:180
   #, c-format
   msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
   msgstr ""
   
  -#: ../plugin/UploadFile.php:155
  +#: ../plugin/UploadFile.php:213
   msgid "Please check your php.ini setting"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:164
  +#: ../plugin/UploadFile.php:223
   #, c-format
   msgid "File \"%s\" is uploaded successfully"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:203
  +#: ../plugin/UploadFile.php:262
   msgid "Files are uploaded successfully"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:243
  -msgid ": Rename"
  +#: ../plugin/UploadFile.php:306
  +msgid "Replace original file"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:307
  +msgid "Rename if it already exist"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:312 ../plugin/rename.php:69
  +msgid "Rename"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:236
  +#: ../plugin/UploadFile.php:320
  +#, c-format
  +msgid "or %s."
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:320
  +msgid "Upload files"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:281
   msgid "Next page &raquo;"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:238
  +#: ../plugin/UploadedFiles.php:283
   msgid "&laquo; First page"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:294
  +#: ../plugin/UploadedFiles.php:360
   #, c-format
   msgid "Total %d files"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:298 ../plugin/rename.php:77 ../wikilib.php:935
  -#: ../wikilib.php:1763
  +#: ../plugin/UploadedFiles.php:364 ../plugin/rename.php:77 ../wikilib.php:1034
  +#: ../wikilib.php:1900
   msgid "Password"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:299 ../wikilib.php:913
  +#: ../plugin/UploadedFiles.php:365 ../wikilib.php:1012
   msgid "Delete selected files"
   msgstr ""
   
  -#: ../plugin/VisualTour.php:98
  +#: ../plugin/VisualTour.php:118
   msgid "Normal"
   msgstr ""
   
  -#: ../plugin/VisualTour.php:100
  +#: ../plugin/VisualTour.php:120
   msgid "Wider"
   msgstr ""
   
  -#: ../plugin/VisualTour.php:102
  +#: ../plugin/VisualTour.php:122
   msgid "Deeper"
   msgstr ""
   
  @@ -698,7 +736,7 @@
   msgid "Voted successfully"
   msgstr ""
   
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2189
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2305
   msgid "Others"
   msgstr ""
   
  @@ -801,11 +839,11 @@
   msgid "No manpage found"
   msgstr ""
   
  -#: ../plugin/man_get.php:104
  +#: ../plugin/man_get.php:112
   msgid "Edit"
   msgstr ""
   
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1813
  +#: ../plugin/minilogin.php:22 ../wikilib.php:1976
   msgid "Login or Join"
   msgstr ""
   
  @@ -827,15 +865,15 @@
   msgid "Fail to save translations."
   msgstr ""
   
  -#: ../plugin/new.php:11 ../plugin/new.php:18
  +#: ../plugin/new.php:13 ../plugin/new.php:28
   msgid "Create a new page"
   msgstr ""
   
  -#: ../plugin/new.php:16
  -msgid "Enter a page name"
  +#: ../plugin/new.php:26
  +msgid "Page Name"
   msgstr ""
   
  -#: ../plugin/new.php:17
  +#: ../plugin/new.php:27
   msgid "Normalize this page name"
   msgstr ""
   
  @@ -843,27 +881,31 @@
   msgid "First:"
   msgstr ""
   
  -#: ../plugin/print.php:20
  +#: ../plugin/print.php:24
   #, c-format
   msgid "Retrieved from %s"
   msgstr ""
   
  -#: ../plugin/print.php:25
  +#: ../plugin/print.php:29
   #, c-format
   msgid "last modified %s %s"
   msgstr ""
   
  -#: ../plugin/processor/vim.php:49
  +#: ../plugin/processor/blog.php:99
  +msgid "raw"
  +msgstr ""
  +
  +#: ../plugin/processor/vim.php:58
   msgid "Toggle line numbers"
   msgstr ""
   
   #: ../plugin/quicklinks.php:16 ../plugin/scrap.php:37
  -#: ../plugin/subscribe.php:25
  +#: ../plugin/subscribe.php:19 ../plugin/subscribe.php:55
   msgid "Please login or make your ID."
   msgstr ""
   
   #: ../plugin/quicklinks.php:22 ../plugin/scrap.php:40
  -#: ../plugin/subscribe.php:31
  +#: ../plugin/subscribe.php:61
   msgid "Goto UserPreferences"
   msgstr ""
   
  @@ -956,10 +998,6 @@
   msgid "New name:"
   msgstr ""
   
  -#: ../plugin/rename.php:69
  -msgid "Rename"
  -msgstr ""
  -
   #: ../plugin/rename.php:74
   msgid "Rename and fix Backlinks"
   msgstr ""
  @@ -968,7 +1006,7 @@
   msgid "Only WikiMaster can rename this page"
   msgstr ""
   
  -#: ../plugin/rename.php:79 ../wikilib.php:973
  +#: ../plugin/rename.php:79 ../wikilib.php:1072
   msgid "with revision history"
   msgstr ""
   
  @@ -1014,7 +1052,7 @@
   msgid "Select a tarball file to restore"
   msgstr ""
   
  -#: ../plugin/rss_rc.php:54
  +#: ../plugin/rss_rc.php:62
   msgid "show changes"
   msgstr ""
   
  @@ -1027,7 +1065,7 @@
   msgid "Do you want to scrap \"%s\" ?"
   msgstr ""
   
  -#: ../plugin/security/acl.php:204 ../plugin/security/community.php:25
  +#: ../plugin/security/acl.php:222 ../plugin/security/community.php:25
   #: ../plugin/security/community.php:35 ../plugin/security/community.php:45
   #: ../plugin/security/mustlogin.php:28 ../plugin/security/mustlogin.php:39
   #: ../plugin/security/mustlogin.php:50 ../plugin/security/needtologin.php:28
  @@ -1036,7 +1074,7 @@
   msgid "You are not allowed to '%s' on this page"
   msgstr ""
   
  -#: ../plugin/security/acl.php:205
  +#: ../plugin/security/acl.php:223
   msgid "Please contact WikiMasters :b"
   msgstr ""
   
  @@ -1084,35 +1122,52 @@
   msgid "Trackback sent"
   msgstr ""
   
  -#: ../plugin/subscribe.php:12
  +#: ../plugin/subscribe.php:24 ../plugin/subscribe.php:28
  +msgid "You did'nt subscribed any pages yet."
  +msgstr ""
  +
  +#: ../plugin/subscribe.php:35
  +msgid "No subscribed pages found."
  +msgstr ""
  +
  +#: ../plugin/subscribe.php:42
   msgid "EmailNotification is not activated"
   msgstr ""
   
  -#: ../plugin/subscribe.php:13
  +#: ../plugin/subscribe.php:43
   msgid ""
   "If you want to subscribe this page please contact the WikiMaster to activate "
   "the e-mail notification"
   msgstr ""
   
  -#: ../plugin/subscribe.php:23
  +#: ../plugin/subscribe.php:53
   msgid "Please enter your email address first."
   msgstr ""
   
  -#: ../plugin/subscribe.php:32
  +#: ../plugin/subscribe.php:62
   msgid ""
   "If you want to subscribe this page, just make your ID and register your "
   "email address in the UserPreferences."
   msgstr ""
   
  -#: ../plugin/subscribe.php:47
  +#: ../plugin/subscribe.php:77
   msgid "Subscribe lists updated."
   msgstr ""
   
  -#: ../plugin/subscribe.php:59
  +#: ../plugin/subscribe.php:91
  +#, c-format
  +msgid "\"%s\" is already subscribed."
  +msgstr ""
  +
  +#: ../plugin/subscribe.php:100
   #, c-format
   msgid "Do you want to subscribe \"%s\" ?"
   msgstr ""
   
  +#: ../plugin/subscribe.php:106
  +msgid "Subscribed pages"
  +msgstr ""
  +
   #: ../plugin/theme.php:29
   msgid "Theme cleared. Goto UserPreferences."
   msgstr ""
  @@ -1129,7 +1184,7 @@
   msgid "Theme disabled !"
   msgstr ""
   
  -#: ../plugin/theme.php:96
  +#: ../plugin/theme.php:97
   msgid "-- Select --"
   msgstr ""
   
  @@ -1187,181 +1242,210 @@
   msgid "ID does not exists !"
   msgstr ""
   
  -#: ../plugin/userform.php:86 ../plugin/userform.php:273
  +#: ../plugin/userform.php:86 ../plugin/userform.php:275
   #, c-format
   msgid "Successfully login as '%s'"
   msgstr ""
   
  -#: ../plugin/userform.php:92 ../plugin/userform.php:278
  -#: ../plugin/userform.php:321
  +#: ../plugin/userform.php:93 ../plugin/userform.php:280
  +#: ../plugin/userform.php:323
   msgid "Invalid password !"
   msgstr ""
   
  -#: ../plugin/userform.php:96
  +#: ../plugin/userform.php:97
   #, c-format
   msgid "\"%s\" does not exists on this wiki !"
   msgstr ""
   
  -#: ../plugin/userform.php:98
  +#: ../plugin/userform.php:99
   msgid "Make new ID on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:104
  +#: ../plugin/userform.php:105
   msgid "Cookie deleted !"
   msgstr ""
   
  -#: ../plugin/userform.php:106 ../wikilib.php:1870
  +#: ../plugin/userform.php:108 ../wikilib.php:2046
   msgid "E-mail new password"
   msgstr ""
   
  -#: ../plugin/userform.php:117 ../plugin/userform.php:180
  -#: ../plugin/userform.php:203
  +#: ../plugin/userform.php:119 ../plugin/userform.php:182
  +#: ../plugin/userform.php:205
   msgid "Invalid ticket !"
   msgstr ""
   
  -#: ../plugin/userform.php:119 ../plugin/userform.php:205
  +#: ../plugin/userform.php:121 ../plugin/userform.php:207
   msgid "You need a ticket !"
   msgstr ""
   
  -#: ../plugin/userform.php:151
  +#: ../plugin/userform.php:153
   msgid "New password confirmation"
   msgstr ""
   
  -#: ../plugin/userform.php:156
  +#: ../plugin/userform.php:158
   msgid "Please confirm your new password"
   msgstr ""
   
  -#: ../plugin/userform.php:158
  +#: ../plugin/userform.php:160
   #, c-format
   msgid "Your new password is %s"
   msgstr ""
   
  -#: ../plugin/userform.php:159 ../plugin/userform.php:265
  +#: ../plugin/userform.php:161 ../plugin/userform.php:267
   msgid "Please change your password later"
   msgstr ""
   
  -#: ../plugin/userform.php:163 ../plugin/userform.php:171
  +#: ../plugin/userform.php:165 ../plugin/userform.php:173
   msgid "Fail to e-mail notification !"
   msgstr ""
   
  -#: ../plugin/userform.php:166
  +#: ../plugin/userform.php:168
   msgid "New password is sent to your e-mail !"
   msgstr ""
   
  -#: ../plugin/userform.php:167
  +#: ../plugin/userform.php:169
   msgid "Please check your e-mail"
   msgstr ""
   
  -#: ../plugin/userform.php:172
  +#: ../plugin/userform.php:174
   msgid "E-mail mismatch !"
   msgstr ""
   
  -#: ../plugin/userform.php:174
  +#: ../plugin/userform.php:176
   msgid "Invalid request"
   msgstr ""
   
  -#: ../plugin/userform.php:175
  +#: ../plugin/userform.php:177
   msgid "Please confirm your e-mail address first !"
   msgstr ""
   
  -#: ../plugin/userform.php:182
  +#: ../plugin/userform.php:184
   msgid "ID and e-mail mismatch !"
   msgstr ""
   
  -#: ../plugin/userform.php:184
  +#: ../plugin/userform.php:186
   msgid "Please try again or make a new profile"
   msgstr ""
   
  -#: ../plugin/userform.php:224 ../plugin/userform.php:309
  +#: ../plugin/userform.php:226 ../plugin/userform.php:311
   msgid "too short password!"
   msgstr ""
   
  -#: ../plugin/userform.php:225
  +#: ../plugin/userform.php:227
   msgid "mismatch password!"
   msgstr ""
   
  -#: ../plugin/userform.php:226 ../plugin/userform.php:313
  +#: ../plugin/userform.php:228 ../plugin/userform.php:315
   msgid "not acceptable character found in the password!"
   msgstr ""
   
  -#: ../plugin/userform.php:229
  +#: ../plugin/userform.php:231
   msgid "Your password is too simple to use as a password !"
   msgstr ""
   
  -#: ../plugin/userform.php:235 ../plugin/userform.php:344
  +#: ../plugin/userform.php:237 ../plugin/userform.php:346
   msgid "Your email address is not valid"
   msgstr ""
   
  -#: ../plugin/userform.php:240
  +#: ../plugin/userform.php:242 ../plugin/userform.php:407
   msgid "Fail to register"
   msgstr ""
   
  -#: ../plugin/userform.php:241
  +#: ../plugin/userform.php:243 ../plugin/userform.php:408
   msgid "You are not allowed to register on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:242 ../wiki.php:4069 ../wiki.php:4080
  +#: ../plugin/userform.php:244 ../plugin/userform.php:409 ../wiki.php:4654
  +#: ../wiki.php:4665
   msgid "Please contact WikiMasters"
   msgstr ""
   
  -#: ../plugin/userform.php:246
  +#: ../plugin/userform.php:248
   msgid "Successfully added!"
   msgstr ""
   
  -#: ../plugin/userform.php:252
  +#: ../plugin/userform.php:254
   #, c-format
   msgid "Successfully added as '%s'"
   msgstr ""
   
  -#: ../plugin/userform.php:253
  +#: ../plugin/userform.php:255
   msgid "Please check your mailbox"
   msgstr ""
   
  -#: ../plugin/userform.php:260 ../plugin/userform.php:338
  +#: ../plugin/userform.php:262 ../plugin/userform.php:340
   msgid "E-mail confirmation"
   msgstr ""
   
  -#: ../plugin/userform.php:262 ../plugin/userform.php:340
  +#: ../plugin/userform.php:264 ../plugin/userform.php:342
   msgid "Please confirm your email address"
   msgstr ""
   
  -#: ../plugin/userform.php:264
  +#: ../plugin/userform.php:266
   #, c-format
   msgid "Your initial password is %s"
   msgstr ""
   
  -#: ../plugin/userform.php:268
  +#: ../plugin/userform.php:270
   msgid "Confirmation E-mail sent"
   msgstr ""
   
  -#: ../plugin/userform.php:283
  +#: ../plugin/userform.php:285
   msgid "Invalid username !"
   msgstr ""
   
  -#: ../plugin/userform.php:311
  +#: ../plugin/userform.php:313
   msgid "mismatch password !"
   msgstr ""
   
  -#: ../plugin/userform.php:314 ../plugin/userform.php:322
  +#: ../plugin/userform.php:316 ../plugin/userform.php:324
   msgid "Password is not changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:316
  +#: ../plugin/userform.php:318
   msgid "Password is changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:318
  +#: ../plugin/userform.php:320
   msgid "Password is too simple to use as a password !"
   msgstr ""
   
  -#: ../plugin/userform.php:342
  +#: ../plugin/userform.php:344
   msgid "E-mail confirmation mail sent"
   msgstr ""
   
  -#: ../plugin/userform.php:350
  +#: ../plugin/userform.php:355
  +msgid "Your Nickname already used as ID in this wiki"
  +msgstr ""
  +
  +#: ../plugin/userform.php:360
   msgid "Profiles are saved successfully !"
   msgstr ""
   
  +#: ../plugin/userform.php:383 ../plugin/userform.php:429
  +#, c-format
  +msgid "Authentication request was failed: %s"
  +msgstr ""
  +
  +#: ../plugin/userform.php:402
  +#, c-format
  +msgid "Successfully login as '%s' via OpenID."
  +msgstr ""
  +
  +#: ../plugin/userform.php:416
  +#, c-format
  +msgid "Your Nickname %s already used as ID in this Wiki."
  +msgstr ""
  +
  +#: ../plugin/userform.php:424
  +#, c-format
  +msgid "OpenID Authentication successful and saved as %s."
  +msgstr ""
  +
  +#: ../plugin/userform.php:431
  +msgid "Invalid OpenID Authentication request"
  +msgstr ""
  +
   #: ../plugin/whois.php:119
   #, c-format
   msgid "Could not connect to %s server"
  @@ -1372,118 +1456,138 @@
   msgid "Whois search result for %s"
   msgstr ""
   
  -#: ../wiki.php:1129
  +#: ../wiki.php:1204
   #, c-format
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1431
  +#: ../wiki.php:1565
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
  -#: ../wiki.php:1441
  -msgid "File does not exists"
  +#: ../wiki.php:1575
  +msgid "File does not exist"
   msgstr ""
   
  -#: ../wiki.php:2410
  +#: ../wiki.php:2646 ../wiki.php:2657 ../wiki.php:4858
   msgid "Invalid ajax action."
   msgstr ""
   
  -#: ../wiki.php:2668
  +#: ../wiki.php:3072
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:2668
  +#: ../wiki.php:3072
   msgid "TwinPages"
   msgstr ""
   
  -#: ../wiki.php:2673
  +#: ../wiki.php:3077
   msgid "See [TwinPages]:"
   msgstr ""
   
  -#: ../wiki.php:2978
  +#: ../wiki.php:3443
   msgid "edit"
   msgstr ""
   
  -#: ../wiki.php:3131
  +#: ../wiki.php:3616
   msgid "Sister Sites Index"
   msgstr ""
   
  -#: ../wiki.php:3422 ../locale/dummy.php:6
  +#: ../wiki.php:3968 ../locale/dummy.php:6
   msgid "EditText"
   msgstr ""
   
  -#: ../wiki.php:3424
  +#: ../wiki.php:3970
   msgid "NotEditable"
   msgstr ""
   
  -#: ../wiki.php:3426 ../locale/dummy.php:6
  +#: ../wiki.php:3974 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:3427 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:3975 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr ""
   
  -#: ../wiki.php:3762
  +#: ../wiki.php:4348
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:4068
  +#: ../wiki.php:4653
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:4079
  +#: ../wiki.php:4664
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:4110 ../wiki.php:4113 ../wikilib.php:1128
  +#: ../wiki.php:4702 ../wiki.php:4711 ../wikilib.php:1277
   msgid "Create this page"
   msgstr ""
   
  -#: ../wiki.php:4116 ../wikilib.php:1130
  +#: ../wiki.php:4713
   #, c-format
  -msgid " or click %s to fullsearch this page.\n"
  +msgid "%s has saved revisions"
  +msgstr ""
  +
  +#: ../wiki.php:4714 ../wiki.php:4721
  +#, c-format
  +msgid "%s or click %s to fullsearch this page.\n"
   msgstr ""
   
  -#: ../wiki.php:4116 ../wikilib.php:1130
  +#: ../wiki.php:4714 ../wiki.php:4721 ../wikilib.php:1279
   msgid "title"
   msgstr ""
   
  -#: ../wiki.php:4125
  -msgid " or alternativly, use one of these templates:\n"
  +#: ../wiki.php:4716
  +#, c-format
  +msgid "Old Revisions of the %s"
  +msgstr ""
  +
  +#: ../wiki.php:4719
  +#, c-format
  +msgid "%s is not found in this Wiki"
  +msgstr ""
  +
  +#: ../wiki.php:4731
  +#, c-format
  +msgid "%s or alternativly, use one of these templates:\n"
   msgstr ""
   
  -#: ../wiki.php:4128
  +#: ../wiki.php:4734
   msgid "You have no templates"
   msgstr ""
   
  -#: ../wiki.php:4130
  +#: ../wiki.php:4736
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
   
  -#: ../wiki.php:4141
  +#: ../wiki.php:4747
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
  -#: ../wiki.php:4235
  +#: ../wiki.php:4860
  +msgid "Invalid macro action."
  +msgstr ""
  +
  +#: ../wiki.php:4870
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr ""
   
  -#: ../wiki.php:4255
  +#: ../wiki.php:4890
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:4258
  +#: ../wiki.php:4893
   msgid "Please enter the valid password"
   msgstr ""
   
  -#: ../wikilib.php:574
  +#: ../wikilib.php:629
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -1500,322 +1604,335 @@
   "no trailing white space allowed after tables or titles.<br />\n"
   msgstr ""
   
  -#: ../wikilib.php:615
  +#: ../wikilib.php:670
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
  -#: ../wikilib.php:698
  +#: ../wikilib.php:763
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   
  -#: ../wikilib.php:700
  +#: ../wikilib.php:765
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr ""
   
  -#: ../wikilib.php:704
  +#: ../wikilib.php:769
   msgid "Merge"
   msgstr ""
   
  -#: ../wikilib.php:705
  +#: ../wikilib.php:770
   msgid "Merge manually"
   msgstr ""
   
  -#: ../wikilib.php:706
  +#: ../wikilib.php:771
   msgid "Ignore conflicts"
   msgstr ""
   
  -#: ../wikilib.php:731
  +#: ../wikilib.php:796
   msgid "ReduceEditor"
   msgstr ""
   
  -#: ../wikilib.php:732
  +#: ../wikilib.php:797
   msgid "EnlargeEditor"
   msgstr ""
   
  -#: ../wikilib.php:736 ../locale/dummy.php:6
  +#: ../wikilib.php:801 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
  -#: ../wikilib.php:738
  +#: ../wikilib.php:803
   msgid "HelpOnEditing"
   msgstr ""
   
  -#: ../wikilib.php:765
  +#: ../wikilib.php:832
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:782
  +#: ../wikilib.php:849
   msgid "--Select Category--"
   msgstr ""
   
  -#: ../wikilib.php:792
  +#: ../wikilib.php:859
   msgid "Minor edit"
   msgstr ""
   
  -#: ../wikilib.php:800
  +#: ../wikilib.php:867
   msgid "Skip to preview"
   msgstr ""
   
  -#: ../wikilib.php:802 ../wikilib.php:1816 ../wikilib.php:1858
  +#: ../wikilib.php:874 ../wikilib.php:1979 ../wikilib.php:2033
   msgid "Save"
   msgstr ""
   
  -#: ../wikilib.php:803
  +#: ../wikilib.php:875
   msgid "Summary of Change"
   msgstr ""
   
  -#: ../wikilib.php:849
  +#: ../wikilib.php:948
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:854
  +#: ../wikilib.php:953
   #, c-format
   msgid "%s is not valid action"
   msgstr ""
   
  -#: ../wikilib.php:856
  +#: ../wikilib.php:955
   msgid "Is it valid action ?"
   msgstr ""
   
  -#: ../wikilib.php:901
  +#: ../wikilib.php:1000
   #, c-format
   msgid "File '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:903
  +#: ../wikilib.php:1002
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr ""
   
  -#: ../wikilib.php:908
  +#: ../wikilib.php:1007
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:910
  +#: ../wikilib.php:1009
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr ""
   
  -#: ../wikilib.php:920 ../wikilib.php:940
  +#: ../wikilib.php:1019 ../wikilib.php:1039
   msgid "No files are selected !"
   msgstr ""
   
  -#: ../wikilib.php:933
  +#: ../wikilib.php:1032
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
  -#: ../wikilib.php:936
  +#: ../wikilib.php:1035
   msgid "Delete"
   msgstr ""
   
  -#: ../wikilib.php:937
  +#: ../wikilib.php:1036
   msgid "Delete selected file"
   msgstr ""
   
  -#: ../wikilib.php:958
  +#: ../wikilib.php:1057
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr ""
   
  -#: ../wikilib.php:965
  +#: ../wikilib.php:1064
   msgid "Please delete this file manually."
   msgstr ""
   
  -#: ../wikilib.php:967
  +#: ../wikilib.php:1066
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr ""
   
  -#: ../wikilib.php:1017
  +#: ../wikilib.php:1116
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
  -#: ../wikilib.php:1182 ../wikilib.php:1284
  +#: ../wikilib.php:1279
  +#, c-format
  +msgid " or click %s to fullsearch this page.\n"
  +msgstr ""
  +
  +#: ../wikilib.php:1331 ../wikilib.php:1433
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr ""
   
  -#: ../wikilib.php:1188
  +#: ../wikilib.php:1337
   msgid "Section edit is not valid for non-exists page."
   msgstr ""
   
  -#: ../wikilib.php:1221 ../wikilib.php:1397
  +#: ../wikilib.php:1370 ../wikilib.php:1547
   msgid "mail does not supported by default."
   msgstr ""
   
  -#: ../wikilib.php:1225 ../wikilib.php:1401
  +#: ../wikilib.php:1374 ../wikilib.php:1551
   msgid "Sent notification mail."
   msgstr ""
   
  -#: ../wikilib.php:1227 ../wikilib.php:1403
  +#: ../wikilib.php:1376 ../wikilib.php:1553
   msgid "No subscribers found."
   msgstr ""
   
  -#: ../wikilib.php:1232 ../wikilib.php:1408
  +#: ../wikilib.php:1381 ../wikilib.php:1558
   #, c-format
   msgid "%s is not editable"
   msgstr ""
   
  -#: ../wikilib.php:1234 ../wikilib.php:1410
  +#: ../wikilib.php:1383 ../wikilib.php:1560
   #, c-format
   msgid "%s is saved"
   msgstr ""
   
  -#: ../wikilib.php:1275
  +#: ../wikilib.php:1424
   msgid "Goto Editor"
   msgstr ""
   
  -#: ../wikilib.php:1289
  +#: ../wikilib.php:1438
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr ""
   
  -#: ../wikilib.php:1290
  +#: ../wikilib.php:1439
   #, c-format
   msgid "%s is merged successfully"
   msgstr ""
   
  -#: ../wikilib.php:1294
  +#: ../wikilib.php:1443
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1295
  +#: ../wikilib.php:1444
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr ""
   
  -#: ../wikilib.php:1296
  +#: ../wikilib.php:1445
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1297
  +#: ../wikilib.php:1446
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1302
  +#: ../wikilib.php:1451
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr ""
   
  -#: ../wikilib.php:1303
  +#: ../wikilib.php:1452
   msgid "Please resolve conflicts manually."
   msgstr ""
   
  -#: ../wikilib.php:1306
  +#: ../wikilib.php:1455
   #, c-format
   msgid "Force merging for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1307
  +#: ../wikilib.php:1456
   msgid "Please be careful, you could damage useful information."
   msgstr ""
   
  -#: ../wikilib.php:1319
  +#: ../wikilib.php:1468
   msgid "Conflict error!"
   msgstr ""
   
  -#: ../wikilib.php:1357
  +#: ../wikilib.php:1507
   #, c-format
   msgid "Preview of %s"
   msgstr ""
   
  -#: ../wikilib.php:1442
  +#: ../wikilib.php:1592
   msgid "Nobody subscribed to this page."
   msgstr ""
   
  -#: ../wikilib.php:1461
  +#: ../wikilib.php:1611
   #, c-format
   msgid "%s page is modified"
   msgstr ""
   
  -#: ../wikilib.php:1490
  +#: ../wikilib.php:1640
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:1503
  +#: ../wikilib.php:1653
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:1508
  +#: ../wikilib.php:1658
   msgid "Mails are sent successfully"
   msgstr ""
   
  -#: ../wikilib.php:1509
  +#: ../wikilib.php:1659
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1511
  +#: ../wikilib.php:1661
   msgid "Fail to send mail"
   msgstr ""
   
  -#: ../wikilib.php:1522
  +#: ../wikilib.php:1672
   msgid "This wiki does not support sendmail"
   msgstr ""
   
  -#: ../wikilib.php:1620
  +#: ../wikilib.php:1770
   msgid "Invalid regular expression !"
   msgstr ""
   
  -#: ../wikilib.php:1644
  +#: ../wikilib.php:1794
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:1647
  +#: ../wikilib.php:1797
   msgid "Infinite loop possible!"
   msgstr ""
   
  -#: ../wikilib.php:1774
  +#: ../wikilib.php:1916
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:1775 ../wikilib.php:1875
  +#: ../wikilib.php:1917
  +msgid "OpenID"
  +msgstr ""
  +
  +#: ../wikilib.php:1929 ../wikilib.php:2051
   msgid "ID"
   msgstr ""
   
  -#: ../wikilib.php:1796 ../wikilib.php:1868
  +#: ../wikilib.php:1959 ../wikilib.php:2044
   msgid "Make profile"
   msgstr ""
   
  -#: ../wikilib.php:1798
  +#: ../wikilib.php:1961
   msgid "password again"
   msgstr ""
   
  -#: ../wikilib.php:1800 ../wikilib.php:1838
  +#: ../wikilib.php:1963 ../wikilib.php:2012
   msgid "Mail"
   msgstr ""
   
  -#: ../wikilib.php:1820
  +#: ../wikilib.php:1985
   msgid "New password"
   msgstr ""
   
  -#: ../wikilib.php:1839
  +#: ../wikilib.php:1990
  +msgid "Nickname"
  +msgstr ""
  +
  +#: ../wikilib.php:2013
   msgid "Time Zone"
   msgstr ""
   
  -#: ../wikilib.php:1847
  +#: ../wikilib.php:2022
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:2190
  +#: ../wikilib.php:2306
   msgid "Show all"
   msgstr ""
   
  -#: ../wikilib.php:2332
  +#: ../wikilib.php:2448
   msgid "Contents"
   msgstr ""
   
  -#: ../wikilib.php:2443
  +#: ../wikilib.php:2559
   #, c-format
   msgid "Title search for \"%s\""
   msgstr ""
  
  
  


wkpark      2007/12/30 00:46:41

  Modified:    .        wiki.php
  Log:
  fixed link_repl() for {{{+ font size}}} syntax
  
  Revision  Changes    Path
  1.370     +3 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.369
  retrieving revision 1.370
  diff -u -r1.369 -r1.370
  --- wiki.php	28 Nov 2007 15:55:59 -0000	1.369
  +++ wiki.php	29 Dec 2007 15:46:41 -0000	1.370
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.369 2007/11/28 15:55:59 wkpark Exp $
  +// $Id: wiki.php,v 1.370 2007/12/29 15:46:41 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.369 $',1,-1);
  +$_revision = substr('$Revision: 1.370 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2034,6 +2034,7 @@
             return "<span style='color:$col'>$url</span>";
           $url=$col.' '.$url;
         } else if (preg_match('/^((?:\+|\-)([1-6]?))(?=\s)(.*)$/',$url,$m)) {
  +        $m[3]=str_replace("&lt;","<",$m[3]);
           if ($m[2]=='') $m[1].='1';
           $fsz=array(
             '-5'=>'10%','-4'=>'20%','-3'=>'40%','-2'=>'60%','-1'=>'80%',
  
  
  


wkpark      2008/01/08 23:35:45

  Modified:    plugin/processor whtml.php
  Log:
  fix for smileies
  
  Revision  Changes    Path
  1.2       +2 -2      moniwiki/plugin/processor/whtml.php
  
  Index: whtml.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/whtml.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- whtml.php	9 Jan 2007 01:28:45 -0000	1.1
  +++ whtml.php	8 Jan 2008 14:35:45 -0000	1.2
  @@ -8,14 +8,14 @@
   // Name: WHTML Processor
   // Description: HTML with WikiLinks Processor
   // URL: MoniWiki:WikiHtmlProcessor
  -// Version: $Revision: 1.1 $
  +// Version: $Revision: 1.2 $
   // License: GPL
   //
   // Usage: {{{#!whtml
   // <h1>Hello world ! Hello [MoniWiki]</h1>
   // Hello World
   // }}}
  -// $Id: whtml.php,v 1.1 2007/01/09 01:28:45 wkpark Exp $
  +// $Id: whtml.php,v 1.2 2008/01/08 14:35:45 wkpark Exp $
   
   function processor_whtml($formatter,$value='',$options=array()) {
       if ($value[0]=='#' and $value[1]=='!')
  @@ -25,7 +25,7 @@
           list($tag,$args)=explode(' ',$line,2);
   
       $formatter->set_wordrule();
  -    $smiley_rule='/(?<=\s|^|>)('.$DBInfo->smiley_rule.')(?=\s|$|<)/e';
  +    $smiley_rule=$formatter->smiley_rule;
       $smiley_repl="\$formatter->smiley_repl('\\1')";
   
       $save=$formatter; // do not disturb $formatter
  
  
  


wkpark      2008/01/08 23:37:58

  Modified:    plugin/processor abc.php
  Log:
  update to use "embed" tag
  
  Revision  Changes    Path
  1.7       +2 -2      moniwiki/plugin/processor/abc.php
  
  Index: abc.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/abc.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- abc.php	7 Jul 2006 12:59:57 -0000	1.6
  +++ abc.php	8 Jan 2008 14:37:58 -0000	1.7
  @@ -6,7 +6,7 @@
   // Usage: {{{#!abc
   // blah blah
   // }}}
  -// $Id: abc.php,v 1.6 2006/07/07 12:59:57 wkpark Exp $
  +// $Id: abc.php,v 1.7 2008/01/08 14:37:58 wkpark Exp $
   
   function processor_abc($formatter="",$value="") {
     global $DBInfo;
  @@ -76,7 +76,7 @@
        if ($log)
           $log ="<pre style='background-color:black;color:gold'>$log</pre>\n";
     }
  -  return $log."<a href='$DBInfo->url_prefix/$cache_dir/$uniq.midi' alt='abc2midi'>abc2midi</a>";
  +  return $log."<embed src='$DBInfo->url_prefix/$cache_dir/$uniq.midi' height='20' />";
   }
   
   ?>
  
  
  


wkpark      2008/01/08 23:51:45

  Modified:    plugin   man_get.php
  Log:
  add a 'raw' option
  use a '//IGNORE' option for iconv()
  
  Revision  Changes    Path
  1.7       +13 -5     moniwiki/plugin/man_get.php
  
  Index: man_get.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/man_get.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- man_get.php	21 Jul 2006 09:26:23 -0000	1.6
  +++ man_get.php	8 Jan 2008 14:51:45 -0000	1.7
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a man_get action plugin for the MoniWiki
   //
  -// $Id: man_get.php,v 1.6 2006/07/21 09:26:23 wkpark Exp $
  +// $Id: man_get.php,v 1.7 2008/01/08 14:51:45 wkpark Exp $
   // vim:et:ts=2:
   
   function do_man_get($formatter,$options) {
  @@ -82,20 +82,28 @@
       }
       $options['msg']=implode(', ',$lnk);
     }
  -  $formatter->send_header("",$options);
  -  $formatter->send_title("","",$options);
  -
     if ($DBInfo->man_charset and
       $DBInfo->man_charset != $DBInfo->charset) {
       if (function_exists('iconv')) {
  -      $raw=iconv($DBInfo->man_charset,$DBInfo->charset,$raw);
  +      $ignore='//IGNORE'; // XXX
  +      $raw=iconv($DBInfo->man_charset,$DBInfo->charset.$ignore,$raw);
       }
     }
     $options['savetext']=$raw;
   
     if ($options['edit']) {
  +    $formatter->send_header("",$options);
  +    $formatter->send_title("","",$options);
  +
       print macro_EditText($formatter,$raw,$options);
  +  } else if ($options['raw']) {
  +    $formatter->send_header("content-type: text/plain",$options);
  +    print $raw;
  +    return;
     } else {
  +    $formatter->send_header("",$options);
  +    $formatter->send_title("","",$options);
  +
       print $formatter->processor_repl('man',$raw,$options);
       $extra='';
       if ($options['sec']) $extra='&amp;sec='.$options['sec'];
  
  
  


wkpark      2008/01/08 23:58:55

  Modified:    plugin   Attachment.php
  Log:
  add comments
  
  Revision  Changes    Path
  1.35      +5 -2      moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- Attachment.php	3 Dec 2007 14:50:28 -0000	1.34
  +++ Attachment.php	8 Jan 2008 14:58:55 -0000	1.35
  @@ -7,13 +7,13 @@
   // Name: Attachment
   // Description: Attachment Plugin
   // URL: MoniWiki:AttachmentPlugin
  -// Version: $Revision: 1.34 $
  +// Version: $Revision: 1.35 $
   // Depend: 1.1.3
   // License: GPL
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.34 2007/12/03 14:50:28 wkpark Exp $
  +// $Id: Attachment.php,v 1.35 2008/01/08 14:58:55 wkpark Exp $
   
   function macro_Attachment($formatter,$value,$options='') {
     global $DBInfo;
  @@ -41,6 +41,9 @@
       $ket= '</span>';
     }
   
  +#  if ($value[0]=='"' and ($p2=strpos(substr($value,1),'"')) !== false)
  +#    $value=substr($value,1,$p2); # attachment:"my image.png" => my image.png
  +# FIXME attachment:"hello.png" => error
     if (($p = strpos($value,' ')) !== false and (strpos(substr($value,0,$p),','))=== false) {
       // [[Attachment(my.png,width=100,height=200,caption="Hello(space)World")]]
       // [attachment:my.ext(space)hello]
  
  
  


wkpark      2008/01/09 00:01:19

  Added:       plugin   bts.php
  Log:
  new Bug Track System plugin added (Experimental)
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/bts.php
  
  Index: bts.php
  ===================================================================
  <?php
  // Copyright 2006 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a sample plugin for the MoniWiki
  //
  // Usage: [[Test]]
  //
  // $Id: bts.php,v 1.1 2008/01/08 15:01:19 wkpark Exp $
  
  include_once("lib/metadata.php");
  
  function _get_btsConfig($raw) {
      $meta='';
      $body=&$raw;
      while(true) {
          list($line,$body)=explode("\n",$body,2);
          if ($line[0]=='#') continue;
          if (strpos($line,':')===false or trim($line)=='') break;
          $meta.=$line."\n";
      }
  
      return getMetadata($meta,1);
  }
  
  function do_bts($formatter,$options) {
      global $DBInfo;
  
      $fields=array('Type','Priority','Product','Severity','Summary','Keywords','Submit');
  
      $basic=<<<EOF
   * Type: Bug,Enhancement,Task,Support
  EOF;
  
  #    if ($DBInfo->hasPage($options['page'])) {
  #        $p=new WikiPage($options['page']);
  #        $bts_raw=$p->get_raw_body();
  #        $meta=_get_btsConfig($bts_raw);
  #    }
      $bts_conf='BugTrack/Config';
      if ($DBInfo->hasPage($bts_conf)) {
          $p=new WikiPage($bts_conf);
          $config_raw=$p->get_raw_body();
          if (substr($basic,-1,1)!="\n") $basic.="\n";
          $confs=_get_btsConfig($basic.$config_raw);
          #print_r($confs);
      }
  
      $myform='';
      foreach ($fields as $field) {
          if (isset($confs[$field]))
              $myform.=':'.$field.':'.$confs[$field]."\n";
          else if ($field=='Submit') {
              $myform.="hidden:action:bts\n";
              $myform.="hidden:mode:write\n";
              $myform.='submit::'.$field."\n";
          } else
              $myform.='input:'.$field."\n";
      }
      #header("Content-Type:text/plain");
      #print '<pre>';
      #print $myform;
      #print '</pre>';
      $formatter->send_header('',$options);
  
      $formatter->send_title('','',$options);
      print $formatter->processor_repl('form',$myform,$options);
  
  #    # parse metadata
  #    $meta='';
  #    while(true) {
  #        list($line,$body)=explode("\n",$body,2);
  #        if ($line[0]=='#') continue;
  #        if (strpos($line,':')===false or !trim($line)) break;
  #        $meta.=$line."\n";
  #    }
  #    print "<pre>";
  #    print_r($options);
  #    print "</pre>";
  #
  #
  #    foreach ($meta as $k=>$v) {
  #        if (!empty($options[$k])) $meta[$k]=$options[$k];
  #    }
  #    print "<pre>";
  #    print_r($meta);
  #    print "</pre>";
  
  
      $formatter->send_footer('',$options);
      return;
  }
  
  // vim:et:sts=4:sw=4:
  ?>
  
  
  


wkpark      2008/01/09 00:10:02

  Modified:    local    md5.js
  Log:
  dos2unix
  
  Revision  Changes    Path
  1.2       +256 -256  moniwiki/local/md5.js
  
  Index: md5.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/md5.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- md5.js	3 Oct 2005 13:53:30 -0000	1.1
  +++ md5.js	8 Jan 2008 15:10:02 -0000	1.2
  @@ -1,256 +1,256 @@
  -/*
  - * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
  - * Digest Algorithm, as defined in RFC 1321.
  - * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
  - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
  - * Distributed under the BSD License
  - * See http://pajhome.org.uk/crypt/md5 for more info.
  - */
  -
  -/*
  - * Configurable variables. You may need to tweak these to be compatible with
  - * the server-side, but the defaults work in most cases.
  - */
  -var hexcase = 0;  /* hex output format. 0 - lowercase; 1 - uppercase        */
  -var b64pad  = ""; /* base-64 pad character. "=" for strict RFC compliance   */
  -var chrsz   = 8;  /* bits per input character. 8 - ASCII; 16 - Unicode      */
  -
  -/*
  - * These are the functions you'll usually want to call
  - * They take string arguments and return either hex or base-64 encoded strings
  - */
  -function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}
  -function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));}
  -function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * chrsz));}
  -function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); }
  -function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); }
  -function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); }
  -
  -/*
  - * Perform a simple self-test to see if the VM is working
  - */
  -function md5_vm_test()
  -{
  -  return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";
  -}
  -
  -/*
  - * Calculate the MD5 of an array of little-endian words, and a bit length
  - */
  -function core_md5(x, len)
  -{
  -  /* append padding */
  -  x[len >> 5] |= 0x80 << ((len) % 32);
  -  x[(((len + 64) >>> 9) << 4) + 14] = len;
  -
  -  var a =  1732584193;
  -  var b = -271733879;
  -  var c = -1732584194;
  -  var d =  271733878;
  -
  -  for(var i = 0; i < x.length; i += 16)
  -  {
  -    var olda = a;
  -    var oldb = b;
  -    var oldc = c;
  -    var oldd = d;
  -
  -    a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
  -    d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
  -    c = md5_ff(c, d, a, b, x[i+ 2], 17,  606105819);
  -    b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
  -    a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
  -    d = md5_ff(d, a, b, c, x[i+ 5], 12,  1200080426);
  -    c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
  -    b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
  -    a = md5_ff(a, b, c, d, x[i+ 8], 7 ,  1770035416);
  -    d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
  -    c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
  -    b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
  -    a = md5_ff(a, b, c, d, x[i+12], 7 ,  1804603682);
  -    d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
  -    c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
  -    b = md5_ff(b, c, d, a, x[i+15], 22,  1236535329);
  -
  -    a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
  -    d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
  -    c = md5_gg(c, d, a, b, x[i+11], 14,  643717713);
  -    b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
  -    a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
  -    d = md5_gg(d, a, b, c, x[i+10], 9 ,  38016083);
  -    c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
  -    b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
  -    a = md5_gg(a, b, c, d, x[i+ 9], 5 ,  568446438);
  -    d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
  -    c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
  -    b = md5_gg(b, c, d, a, x[i+ 8], 20,  1163531501);
  -    a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
  -    d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
  -    c = md5_gg(c, d, a, b, x[i+ 7], 14,  1735328473);
  -    b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
  -
  -    a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
  -    d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
  -    c = md5_hh(c, d, a, b, x[i+11], 16,  1839030562);
  -    b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
  -    a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
  -    d = md5_hh(d, a, b, c, x[i+ 4], 11,  1272893353);
  -    c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
  -    b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
  -    a = md5_hh(a, b, c, d, x[i+13], 4 ,  681279174);
  -    d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
  -    c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
  -    b = md5_hh(b, c, d, a, x[i+ 6], 23,  76029189);
  -    a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
  -    d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
  -    c = md5_hh(c, d, a, b, x[i+15], 16,  530742520);
  -    b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
  -
  -    a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
  -    d = md5_ii(d, a, b, c, x[i+ 7], 10,  1126891415);
  -    c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
  -    b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
  -    a = md5_ii(a, b, c, d, x[i+12], 6 ,  1700485571);
  -    d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
  -    c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
  -    b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
  -    a = md5_ii(a, b, c, d, x[i+ 8], 6 ,  1873313359);
  -    d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
  -    c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
  -    b = md5_ii(b, c, d, a, x[i+13], 21,  1309151649);
  -    a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
  -    d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
  -    c = md5_ii(c, d, a, b, x[i+ 2], 15,  718787259);
  -    b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
  -
  -    a = safe_add(a, olda);
  -    b = safe_add(b, oldb);
  -    c = safe_add(c, oldc);
  -    d = safe_add(d, oldd);
  -  }
  -  return Array(a, b, c, d);
  -
  -}
  -
  -/*
  - * These functions implement the four basic operations the algorithm uses.
  - */
  -function md5_cmn(q, a, b, x, s, t)
  -{
  -  return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
  -}
  -function md5_ff(a, b, c, d, x, s, t)
  -{
  -  return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
  -}
  -function md5_gg(a, b, c, d, x, s, t)
  -{
  -  return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
  -}
  -function md5_hh(a, b, c, d, x, s, t)
  -{
  -  return md5_cmn(b ^ c ^ d, a, b, x, s, t);
  -}
  -function md5_ii(a, b, c, d, x, s, t)
  -{
  -  return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
  -}
  -
  -/*
  - * Calculate the HMAC-MD5, of a key and some data
  - */
  -function core_hmac_md5(key, data)
  -{
  -  var bkey = str2binl(key);
  -  if(bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz);
  -
  -  var ipad = Array(16), opad = Array(16);
  -  for(var i = 0; i < 16; i++)
  -  {
  -    ipad[i] = bkey[i] ^ 0x36363636;
  -    opad[i] = bkey[i] ^ 0x5C5C5C5C;
  -  }
  -
  -  var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);
  -  return core_md5(opad.concat(hash), 512 + 128);
  -}
  -
  -/*
  - * Add integers, wrapping at 2^32. This uses 16-bit operations internally
  - * to work around bugs in some JS interpreters.
  - */
  -function safe_add(x, y)
  -{
  -  var lsw = (x & 0xFFFF) + (y & 0xFFFF);
  -  var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
  -  return (msw << 16) | (lsw & 0xFFFF);
  -}
  -
  -/*
  - * Bitwise rotate a 32-bit number to the left.
  - */
  -function bit_rol(num, cnt)
  -{
  -  return (num << cnt) | (num >>> (32 - cnt));
  -}
  -
  -/*
  - * Convert a string to an array of little-endian words
  - * If chrsz is ASCII, characters >255 have their hi-byte silently ignored.
  - */
  -function str2binl(str)
  -{
  -  var bin = Array();
  -  var mask = (1 << chrsz) - 1;
  -  for(var i = 0; i < str.length * chrsz; i += chrsz)
  -    bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32);
  -  return bin;
  -}
  -
  -/*
  - * Convert an array of little-endian words to a string
  - */
  -function binl2str(bin)
  -{
  -  var str = "";
  -  var mask = (1 << chrsz) - 1;
  -  for(var i = 0; i < bin.length * 32; i += chrsz)
  -    str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask);
  -  return str;
  -}
  -
  -/*
  - * Convert an array of little-endian words to a hex string.
  - */
  -function binl2hex(binarray)
  -{
  -  var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
  -  var str = "";
  -  for(var i = 0; i < binarray.length * 4; i++)
  -  {
  -    str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
  -           hex_tab.charAt((binarray[i>>2] >> ((i%4)*8  )) & 0xF);
  -  }
  -  return str;
  -}
  -
  -/*
  - * Convert an array of little-endian words to a base-64 string
  - */
  -function binl2b64(binarray)
  -{
  -  var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  -  var str = "";
  -  for(var i = 0; i < binarray.length * 4; i += 3)
  -  {
  -    var triplet = (((binarray[i   >> 2] >> 8 * ( i   %4)) & 0xFF) << 16)
  -                | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 )
  -                |  ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF);
  -    for(var j = 0; j < 4; j++)
  -    {
  -      if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;
  -      else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
  -    }
  -  }
  -  return str;
  -}
  +/*
  + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
  + * Digest Algorithm, as defined in RFC 1321.
  + * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
  + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
  + * Distributed under the BSD License
  + * See http://pajhome.org.uk/crypt/md5 for more info.
  + */
  +
  +/*
  + * Configurable variables. You may need to tweak these to be compatible with
  + * the server-side, but the defaults work in most cases.
  + */
  +var hexcase = 0;  /* hex output format. 0 - lowercase; 1 - uppercase        */
  +var b64pad  = ""; /* base-64 pad character. "=" for strict RFC compliance   */
  +var chrsz   = 8;  /* bits per input character. 8 - ASCII; 16 - Unicode      */
  +
  +/*
  + * These are the functions you'll usually want to call
  + * They take string arguments and return either hex or base-64 encoded strings
  + */
  +function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}
  +function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));}
  +function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * chrsz));}
  +function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); }
  +function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); }
  +function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); }
  +
  +/*
  + * Perform a simple self-test to see if the VM is working
  + */
  +function md5_vm_test()
  +{
  +  return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";
  +}
  +
  +/*
  + * Calculate the MD5 of an array of little-endian words, and a bit length
  + */
  +function core_md5(x, len)
  +{
  +  /* append padding */
  +  x[len >> 5] |= 0x80 << ((len) % 32);
  +  x[(((len + 64) >>> 9) << 4) + 14] = len;
  +
  +  var a =  1732584193;
  +  var b = -271733879;
  +  var c = -1732584194;
  +  var d =  271733878;
  +
  +  for(var i = 0; i < x.length; i += 16)
  +  {
  +    var olda = a;
  +    var oldb = b;
  +    var oldc = c;
  +    var oldd = d;
  +
  +    a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
  +    d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
  +    c = md5_ff(c, d, a, b, x[i+ 2], 17,  606105819);
  +    b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
  +    a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
  +    d = md5_ff(d, a, b, c, x[i+ 5], 12,  1200080426);
  +    c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
  +    b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
  +    a = md5_ff(a, b, c, d, x[i+ 8], 7 ,  1770035416);
  +    d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
  +    c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
  +    b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
  +    a = md5_ff(a, b, c, d, x[i+12], 7 ,  1804603682);
  +    d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
  +    c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
  +    b = md5_ff(b, c, d, a, x[i+15], 22,  1236535329);
  +
  +    a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
  +    d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
  +    c = md5_gg(c, d, a, b, x[i+11], 14,  643717713);
  +    b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
  +    a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
  +    d = md5_gg(d, a, b, c, x[i+10], 9 ,  38016083);
  +    c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
  +    b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
  +    a = md5_gg(a, b, c, d, x[i+ 9], 5 ,  568446438);
  +    d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
  +    c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
  +    b = md5_gg(b, c, d, a, x[i+ 8], 20,  1163531501);
  +    a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
  +    d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
  +    c = md5_gg(c, d, a, b, x[i+ 7], 14,  1735328473);
  +    b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
  +
  +    a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
  +    d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
  +    c = md5_hh(c, d, a, b, x[i+11], 16,  1839030562);
  +    b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
  +    a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
  +    d = md5_hh(d, a, b, c, x[i+ 4], 11,  1272893353);
  +    c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
  +    b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
  +    a = md5_hh(a, b, c, d, x[i+13], 4 ,  681279174);
  +    d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
  +    c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
  +    b = md5_hh(b, c, d, a, x[i+ 6], 23,  76029189);
  +    a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
  +    d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
  +    c = md5_hh(c, d, a, b, x[i+15], 16,  530742520);
  +    b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
  +
  +    a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
  +    d = md5_ii(d, a, b, c, x[i+ 7], 10,  1126891415);
  +    c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
  +    b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
  +    a = md5_ii(a, b, c, d, x[i+12], 6 ,  1700485571);
  +    d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
  +    c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
  +    b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
  +    a = md5_ii(a, b, c, d, x[i+ 8], 6 ,  1873313359);
  +    d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
  +    c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
  +    b = md5_ii(b, c, d, a, x[i+13], 21,  1309151649);
  +    a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
  +    d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
  +    c = md5_ii(c, d, a, b, x[i+ 2], 15,  718787259);
  +    b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
  +
  +    a = safe_add(a, olda);
  +    b = safe_add(b, oldb);
  +    c = safe_add(c, oldc);
  +    d = safe_add(d, oldd);
  +  }
  +  return Array(a, b, c, d);
  +
  +}
  +
  +/*
  + * These functions implement the four basic operations the algorithm uses.
  + */
  +function md5_cmn(q, a, b, x, s, t)
  +{
  +  return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
  +}
  +function md5_ff(a, b, c, d, x, s, t)
  +{
  +  return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
  +}
  +function md5_gg(a, b, c, d, x, s, t)
  +{
  +  return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
  +}
  +function md5_hh(a, b, c, d, x, s, t)
  +{
  +  return md5_cmn(b ^ c ^ d, a, b, x, s, t);
  +}
  +function md5_ii(a, b, c, d, x, s, t)
  +{
  +  return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
  +}
  +
  +/*
  + * Calculate the HMAC-MD5, of a key and some data
  + */
  +function core_hmac_md5(key, data)
  +{
  +  var bkey = str2binl(key);
  +  if(bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz);
  +
  +  var ipad = Array(16), opad = Array(16);
  +  for(var i = 0; i < 16; i++)
  +  {
  +    ipad[i] = bkey[i] ^ 0x36363636;
  +    opad[i] = bkey[i] ^ 0x5C5C5C5C;
  +  }
  +
  +  var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);
  +  return core_md5(opad.concat(hash), 512 + 128);
  +}
  +
  +/*
  + * Add integers, wrapping at 2^32. This uses 16-bit operations internally
  + * to work around bugs in some JS interpreters.
  + */
  +function safe_add(x, y)
  +{
  +  var lsw = (x & 0xFFFF) + (y & 0xFFFF);
  +  var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
  +  return (msw << 16) | (lsw & 0xFFFF);
  +}
  +
  +/*
  + * Bitwise rotate a 32-bit number to the left.
  + */
  +function bit_rol(num, cnt)
  +{
  +  return (num << cnt) | (num >>> (32 - cnt));
  +}
  +
  +/*
  + * Convert a string to an array of little-endian words
  + * If chrsz is ASCII, characters >255 have their hi-byte silently ignored.
  + */
  +function str2binl(str)
  +{
  +  var bin = Array();
  +  var mask = (1 << chrsz) - 1;
  +  for(var i = 0; i < str.length * chrsz; i += chrsz)
  +    bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32);
  +  return bin;
  +}
  +
  +/*
  + * Convert an array of little-endian words to a string
  + */
  +function binl2str(bin)
  +{
  +  var str = "";
  +  var mask = (1 << chrsz) - 1;
  +  for(var i = 0; i < bin.length * 32; i += chrsz)
  +    str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask);
  +  return str;
  +}
  +
  +/*
  + * Convert an array of little-endian words to a hex string.
  + */
  +function binl2hex(binarray)
  +{
  +  var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
  +  var str = "";
  +  for(var i = 0; i < binarray.length * 4; i++)
  +  {
  +    str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
  +           hex_tab.charAt((binarray[i>>2] >> ((i%4)*8  )) & 0xF);
  +  }
  +  return str;
  +}
  +
  +/*
  + * Convert an array of little-endian words to a base-64 string
  + */
  +function binl2b64(binarray)
  +{
  +  var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  +  var str = "";
  +  for(var i = 0; i < binarray.length * 4; i += 3)
  +  {
  +    var triplet = (((binarray[i   >> 2] >> 8 * ( i   %4)) & 0xFF) << 16)
  +                | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 )
  +                |  ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF);
  +    for(var j = 0; j < 4; j++)
  +    {
  +      if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;
  +      else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
  +    }
  +  }
  +  return str;
  +}
  
  
  


wkpark      2008/01/09 00:28:58

  Modified:    local    subindex.js
  Log:
  update
  
  Revision  Changes    Path
  1.4       +4 -4      moniwiki/local/subindex.js
  
  Index: subindex.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/subindex.js,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- subindex.js	15 Oct 2007 11:03:05 -0000	1.3
  +++ subindex.js	8 Jan 2008 15:28:58 -0000	1.4
  @@ -47,7 +47,7 @@
   	        new Effect.SlideDown(sub, { duration: 0.4,afterFinish: function() {Element.show(sub);} });
               } else { // mootools
                   var mySlide = new Fx.Slide(sub);
  -                mySlide.wrapper.setStyle('height',0);
  +                //mySlide.wrapper.setStyle('height',0);
   
                   icon.addEvent('click',function(e) {
                       e = new Event(e);
  @@ -60,10 +60,10 @@
           }
           if (icon) {
               var name=icon.getAttribute('class');
  -            if (name == 'close')
  -                icon.setAttribute('class','');
  -            else
  +            if (name != 'close')
                   icon.setAttribute('class','close');
  +            else
  +                icon.setAttribute('class','');
           }
       }
   }
  
  
  


wkpark      2008/01/09 00:29:50

  Modified:    local/js swfobject.js
  Log:
  revert ;;
  
  Revision  Changes    Path
  1.4       +1 -1      moniwiki/local/js/swfobject.js
  
  Index: swfobject.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/swfobject.js,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- swfobject.js	27 Sep 2007 08:48:09 -0000	1.3
  +++ swfobject.js	8 Jan 2008 15:29:50 -0000	1.4
  @@ -8,7 +8,7 @@
   if(typeof deconcept=="undefined"){var deconcept=new Object();}if(typeof deconcept.util=="undefined"){deconcept.util=new Object();}if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();}deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!document.getElementById){return;}this.DETECT_KEY=_a?_a:"detectflash";this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);this.params=new Object();this.variables=new Object();this.attributes=new Array();if(_1){this.setAttribute("swf",_1);}if(id){this.setAttribute("id",id);}if(w){this.setAttribute("width",w);}if(h){this.setAttribute("height",h);}if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=true;}if(c){this.addParam("bgcolor",c);}var q=_7?_7:"high";this.addParam("quality",q);this.setAttribute("useExpressInstall",false);this.setAttribute("doExpressInstall",false);var _c=(_8)?_8:window.location;this.setAttribute("xiRedirectUrl",_c);this.setAttribute("redirectUrl","");if(_9){this.setAttribute("redirectUrl",_9);}};deconcept.SWFObject.prototype={useExpressInstall:function(_d){this.xiSWFPath=!_d?"expressinstall.swf":_d;this.setAttribute("useExpressInstall",true);},setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=_12;},
   getParams:function(){return this.params;},
   addVariable:function(_13,_14){
  -_14=escape(_14);  // fix Firefox error with urlencoded variables
  +_14=_14;  // oops!!! fix Firefox error with urlencoded variables
   this.variables[_13]=_14;
   },
   getVariable:function(_15){return this.variables[_15];},
  
  
  


wkpark      2008/03/13 20:17:32

  Modified:    .        wiki.php wikilib.php
  Log:
  update mask_hostname()
  
  Revision  Changes    Path
  1.371     +3 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.370
  retrieving revision 1.371
  diff -u -r1.370 -r1.371
  --- wiki.php	29 Dec 2007 15:46:41 -0000	1.370
  +++ wiki.php	13 Mar 2008 11:17:32 -0000	1.371
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.370 2007/12/29 15:46:41 wkpark Exp $
  +// $Id: wiki.php,v 1.371 2008/03/13 11:17:32 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.370 $',1,-1);
  +$_revision = substr('$Revision: 1.371 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -488,6 +488,7 @@
       if (!$count) $count=0;
       $count++;
       dba_replace($pagename,$count,$this->counter);
  +    return $count;
     }
   
     function pageCounter($pagename) {
  
  
  
  1.236     +8 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.235
  retrieving revision 1.236
  diff -u -r1.235 -r1.236
  --- wikilib.php	27 Nov 2007 00:33:18 -0000	1.235
  +++ wikilib.php	13 Mar 2008 11:17:32 -0000	1.236
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.235 2007/11/27 00:33:18 wkpark Exp $
  +// $Id: wikilib.php,v 1.236 2008/03/13 11:17:32 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -183,11 +183,16 @@
     return preg_replace("/((?<=[a-z0-9]|[B-Z]{2})([A-Z][a-z]))/"," \\1",$title);
   }
   
  -function _mask_hostname($addr,$mask='&loz;') {
  +function _mask_hostname($addr,$opt=1,$mask='&loz;') {
     $tmp=explode('.',$addr);
     switch($sz=sizeof($tmp)) {
     case 4:
  -    $tmp[$sz-1]=str_repeat($mask,strlen($tmp[$sz-1]));
  +    if ($opt >= 1)
  +      $tmp[$sz-1]=str_repeat($mask,strlen($tmp[$sz-1]));
  +    if ($opt == 2)
  +      $tmp[$sz-2]=str_repeat($mask,strlen($tmp[$sz-2]));
  +    else if ($opt == 3)
  +      $tmp[$sz-3]=str_repeat($mask,strlen($tmp[$sz-3]));
       break;
     default:
       $tmp[0]=str_repeat($mask,strlen($tmp[0]));
  
  
  


wkpark      2008/03/22 11:29:40

  Modified:    plugin   Info.php
  Log:
  add a "wikiInfo" class for info pages
  
  Revision  Changes    Path
  1.15      +3 -3      moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Info.php,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- Info.php	20 Nov 2007 09:00:38 -0000	1.14
  +++ Info.php	22 Mar 2008 02:29:40 -0000	1.15
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Info plugin for the MoniWiki
   //
  -// $Id: Info.php,v 1.14 2007/11/20 09:00:38 wkpark Exp $
  +// $Id: Info.php,v 1.15 2008/03/22 02:29:40 wkpark Exp $
   
   function _parse_rlog($formatter,$log,$options=array()) {
     global $DBInfo;
  @@ -31,7 +31,7 @@
     if ($options['title'])
       $out=$options['title'];
     else
  -    $out="<h2>"._("Revision History")."</h2>\n";
  +    $out="<div class='wikiInfo'><h2>"._("Revision History")."</h2>\n";
     $out.="<form id='infoform' method='post' action='$url'>";
     $out.="<table class='info' cellpadding='3' cellspacing='2'><tr>\n";
     $out.="<th class='info'>ver.</th><th class='info'>Date and Changes</th>".
  @@ -176,7 +176,7 @@
     $out.="<input type='submit' name='rcspurge' value='purge'></td></tr>";
     endif;
     $out.="<input type='hidden' name='action' value='diff'/></form></table>\n";
  -  $out.="<script type='text/javascript' src='$DBInfo->url_prefix/local/checkbox.js'></script>\n";
  +  $out.="<script type='text/javascript' src='$DBInfo->url_prefix/local/checkbox.js'></script></div>\n";
     return $out; 
   }
   
  
  
  


wkpark      2008/03/22 11:30:27

  Modified:    plugin   Comment.php
  Log:
  quick hack for the BBS plugin
  
  Revision  Changes    Path
  1.28      +25 -6     moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- Comment.php	19 Nov 2007 16:04:22 -0000	1.27
  +++ Comment.php	22 Mar 2008 02:30:27 -0000	1.28
  @@ -6,11 +6,19 @@
   // Usage: [[Comment]], ?action=comment
   //
   //
  -// $Id: Comment.php,v 1.27 2007/11/19 16:04:22 wkpark Exp $
  +// $Id: Comment.php,v 1.28 2008/03/22 02:30:27 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $DBInfo;
     if (!$options['page']) $options['page']=$formatter->page->name;
  +  if (!$options['action']) $action='comment';
  +  else $action=$options['action'];
  +  if ($options['mode'])
  +    $hidden.="<input type='hidden' name='mode' value='".$options['mode']."' />\n";
  +  if ($options['no'])
  +    $hidden.="<input type='hidden' name='no' value='".$options['no']."' />\n";
  +  if ($options['p'])
  +    $hidden.="<input type='hidden' name='p' value='".$options['p']."' />\n";
   
     if ($value) {
       $args=explode(',',$value);
  @@ -19,7 +27,7 @@
     }
   
     if ($options['usemeta'] or $use_meta) {
  -    $hidden="<input type='hidden' name='usemeta' value=1 />\n";
  +    $hidden.="<input type='hidden' name='usemeta' value=1 />\n";
     }
     if ($options['nocomment']) return '';
     if (!$DBInfo->security->writable($options)) return '';
  @@ -63,6 +71,7 @@
   <input class='wiki' size='$cols' name="savetext" value="$savetext" />&nbsp;
   FORM;
     } else {
  +    if (!$options['nopreview'])
       $preview='<input type="submit" name="button_preview" value="'.$preview_btn.'" />';
       $form.= <<<FORM
   <textarea class="wiki" name="savetext"
  @@ -76,7 +85,7 @@
     $form.= <<<FORM2
   $hidden
   $sig
  -<input type="hidden" name="action" value="comment" />
  +<input type="hidden" name="action" value="$action" />
   <input type="hidden" name="datestamp" value="$datestamp" />
   <input type="submit" value="$comment" />
   $preview
  @@ -133,6 +142,7 @@
       }
     }
     if ($button_preview && $options['savetext']) {
  +    if (!$options['saveonly']) {
       $formatter->send_header("",$options);
       $formatter->send_title(_("Preview comment"),"",$options);
       $formatter->send_page($savetext."\n----");
  @@ -140,23 +150,28 @@
       print macro_Comment($formatter,'',$options);
       print $formatter->macro_repl('EditHints');
       $formatter->send_footer("",$options);
  +    }
       return;
     } else if (!$savetext) {
  +    if (!$options['saveonly']) {
       $formatter->send_header("",$options);
       $formatter->send_title(_("Add comment"),"",$options);
       print macro_Comment($formatter,'',$options);
       print $formatter->macro_repl('EditHints');
       $formatter->send_footer("",$options);
  +    }
       return;
     }
   
     $datestamp= $options['datestamp'];
     if ($formatter->page->mtime() > $datestamp) {
       $options['msg']='';
  +    if (!$options['saveonly']) {
       $formatter->send_header('',$options);
       $formatter->send_title(_("Error: Don't make a clone!"),'',$options);
       $formatter->send_footer('',$options);
  -    return;
  +    }
  +    return false;
     }
   
     $body=$formatter->page->get_raw_body();
  @@ -168,9 +183,11 @@
   
     if ($use_meta) {
       $date=gmdate('Y-m-d H:i:s').' GMT';
  +    $savetext=rtrim($savetext)."\n";
  +    $boundary= strtoupper(md5("COMMENT")); # XXX
   
       $idx=1;
  -    if (preg_match_all('/-{4,}\nComment-Id:\s*(\d+)\n/m',$body,$m)) {
  +    if (preg_match_all('/-{4}(?:'.$boundary.')?\nComment-Id:\s*(\d+)\n/m',$body,$m)) {
         $idx=$m[1][sizeof($m[1])-1]+1;
       }
   
  @@ -180,7 +197,7 @@
   From: $id
   Date: $date
   META;
  -    $savetext="----\n$meta\n\n$savetext\n";
  +    $savetext="----".$boundary."\n$meta\n\n$savetext\n";
     } else {
       if ($options['nosig']) $savetext="----\n$savetext\n";
       else if($options['id']=='Anonymous')
  @@ -256,6 +273,8 @@
   
     $formatter->page->write($body);
     $DBInfo->savePage($formatter->page,"Comment added",$options);
  +  if ($options['saveonly']) return true;
  +
     $options['msg']=sprintf(_("%s is commented successfully"),$formatter->link_tag($formatter->page->urlname,"?action=show",$options['page']));
     $title=_("Comment added successfully");
   
  
  
  


wkpark      2008/03/22 11:38:30

  Modified:    .        wiki.php wikilib.php
  Log:
  quick hack for the BBS plugin.
  fixed _urlencode() _rawurlencode()
  add a get_frontpage() for the multi language feature.
  add a new NameSpace schema MyPage::SubPage.
  fixed get_instruction() (subpage,Namespace detection etc.)
  low level IO fix for the BBS plugin (_savePage(), _ci())
  
  Revision  Changes    Path
  1.372     +134 -59   moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.371
  retrieving revision 1.372
  diff -u -r1.371 -r1.372
  --- wiki.php	13 Mar 2008 11:17:32 -0000	1.371
  +++ wiki.php	22 Mar 2008 02:38:30 -0000	1.372
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.371 2008/03/13 11:17:32 wkpark Exp $
  +// $Id: wiki.php,v 1.372 2008/03/22 02:38:30 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.371 $',1,-1);
  +$_revision = substr('$Revision: 1.372 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -864,26 +864,34 @@
       #$name=preg_replace("/%([a-f0-9]{2})/ie","'_'.strtolower('\\1')",$name);
       #$name=preg_replace(".","_2e",$name);
   
  -    $name=preg_replace("/([^a-z0-9]{1})/ie","'_'.strtolower(dechex(ord(substr('\\1',-1))))",$pagename);
  +    // clean up ':' like as the dokuwiki
  +    $pn= preg_replace('#:+#',':',$pagename);
  +    $pn= trim($pn,':._-');
  +    $pn= preg_replace('#:[:\._\-]+#',':',$pn);
  +
  +    $pn= preg_replace("/([^a-z0-9:]{1})/ie","'_'.strtolower(dechex(ord(substr('\\1',-1))))",$pn);
  +    $name=preg_replace('#:#','.d/',$pn);
       #$name=preg_replace("/([^a-z0-9]{1})/ie","'_'.strtolower(dechex(ord('\\1')))",$pagename);
       return $name;
     }
   
     function getPageKey($pagename) {
       #$name=preg_replace("/([^a-z0-9]{1})/ie","'_'.strtolower(dechex(ord('\\1')))",$pagename);
  -    $name=preg_replace("/([^a-z0-9]{1})/ie","'_'.strtolower(dechex(ord(substr('\\1',-1))))",$pagename);
  +    $name=$this->_getPageKey($pagename);
  +    #$name=preg_replace("/([^a-z0-9]{1})/ie","'_'.strtolower(dechex(ord(substr('\\1',-1))))",$pagename);
       return $this->text_dir . '/' . $name;
     }
   
     function pageToKeyname($pagename) {
  -    return preg_replace("/([^a-z0-9]{1})/ie","'_'.strtolower(dechex(ord(substr('\\1',-1))))",$pagename);
  +    return $this->_getPageKey($pagename);
  +    #return preg_replace("/([^a-z0-9]{1})/ie","'_'.strtolower(dechex(ord(substr('\\1',-1))))",$pagename);
       #return preg_replace("/([^a-z0-9]{1})/ie","'_'.strtolower(dechex(ord('\\1')))",$pagename);
     }
   
     function hasPage($pagename) {
       if (!$pagename) return false;
       $name=$this->getPageKey($pagename);
  -    return @file_exists($name); 
  +    return @file_exists($name);
     }
   
     function getPage($pagename,$options="") {
  @@ -894,7 +902,10 @@
     #  return preg_replace("/_([a-f0-9]{2})/e","chr(hexdec('\\1'))",$key);
     #  $pagename=preg_replace("/_([a-f0-9]{2})/","%\\1",$key);
     #  $pagename=str_replace("_","%",$key);
  -    $pagename=strtr($key,'_','%');
  +
  +    $pagename=preg_replace('%\.d/%',':',$key);
  +
  +    $pagename=strtr($pagename,'_','%');
       return rawurldecode($pagename);
     }
   
  @@ -1031,6 +1042,7 @@
           if ($rlen != 1024) $l="\n".$l; // hack, for the first log entry.
           while(($p=strrpos($l,"\n"))!==false) {
             $line=substr($l,$p+1).$last;
  +          $last='';
             $l=substr($l,0,$p);
             $dumm=explode("\t",$line,4);
             $check=$dumm[2];
  @@ -1089,6 +1101,30 @@
       return $body;
     }
   
  +  function _savePage($filename,$body,$options=array()) {
  +    $dir=dirname($filename);
  +    if (!is_dir($dir)) {
  +      $om=umask(000);
  +      _mkdir_p($dir, 0777);
  +      umask($om);
  +    }
  +
  +    $fp=fopen($filename,"w");
  +    if (!$fp)
  +       return -1;
  +    flock($fp,LOCK_EX);
  +    fwrite($fp, $body);
  +    flock($fp,LOCK_UN);
  +    fclose($fp);
  +
  +    if ($this->version_class) {
  +      $class=getModule('Version',$this->version_class);
  +      $version=new $class ($this);
  +      $ret=$version->_ci($filename,$options['log']);
  +    }
  +    return 0;
  +  }
  +
     function savePage(&$page,$comment="",$options=array()) {
       $user=new User();
       if ($user->id != 'Anonymous') {
  @@ -1100,32 +1136,25 @@
       $REMOTE_ADDR=$_SERVER['REMOTE_ADDR'];
       $comment=escapeshellcmd($comment);
   
  -    $keyname=$this->_getPageKey($page->name);
  -    $key=$this->text_dir."/$keyname";
  -
       $myid=$user->id;
       if ($user->info['nick']) {
         $myid.=' '.$user->info['nick'];
         $options['nick']=$user->info['nick'];
       }
  -
       $options['myid']=$myid;
  -    $fp=fopen($key,"w");
  -    if (!$fp)
  -       return -1;
  -    flock($fp,LOCK_EX);
  +
  +    $keyname=$this->_getPageKey($page->name);
  +    $key=$this->text_dir."/$keyname";
  +
       $body=$this->_replace_variables($page->body,$options);
  +    $log=$REMOTE_ADDR.';;'.$myid.';;'.$comment;
  +    $options['log']=$log;
  +    $options['pagename']=$page->name;
  +    $ret=$this->_savePage($key,$body,$options);
  +    if ($ret == -1) return -1;
  +    #
       $page->write($body);
  -    fwrite($fp, $body);
  -    flock($fp,LOCK_UN);
  -    fclose($fp);
   
  -    $log=$REMOTE_ADDR.';;'.$myid.';;'.$comment;
  -    if ($this->version_class) {
  -      $class=getModule('Version',$this->version_class);
  -      $version=new $class ($this);
  -      $ret=$version->ci($page->name,$log);
  -    }
       # check minor edits XXX
       $minor=0;
       if ($this->use_minorcheck or $options['minorcheck']) {
  @@ -1209,6 +1238,9 @@
   
     function _isWritable($pagename) {
       $key=$this->getPageKey($pagename);
  +    $dir=dirname($key);
  +    # global lock
  +    if (@file_exists($dir.'/.lock')) return false;
       # True if page can be changed
       return @is_writable($key) or !@file_exists($key);
     }
  @@ -1271,8 +1303,18 @@
   
     function ci($pagename,$log) {
       $key=$this->_filename($pagename);
  -    $pagename=escapeshellcmd($pagename);
  -    $fp=@popen("ci -l -x,v/ -q -t-\"".$pagename."\" -m\"".$log."\" ".$key.$this->NULL,"r");
  +    $pgname=escapeshellcmd($pagename);
  +    $this->_ci($key,$log);
  +  }
  +
  +  function _ci($key,$log) {
  +    $dir=dirname($key);
  +    if (!is_dir($dir.'/RCS')) {
  +      $om=umask(000);
  +      _mkdir_p($dir.'/RCS', 2777);
  +      umask($om);
  +    }
  +    $fp=@popen("ci -l -x,v/ -q -t-\"".$key."\" -m\"".$log."\" ".$key.$this->NULL,"r");
       if (is_resource($fp)) pclose($fp);
     }
   
  @@ -1514,6 +1556,7 @@
         $this->rev=0; # current rev.
       $this->name= $name;
       $this->filename= $this->_filename($name);
  +
       $this->urlname= _rawurlencode($name);
       $this->body= "";
       $this->title=get_title($name);
  @@ -1701,6 +1744,7 @@
       $this->postfilters=$DBInfo->postfilters;
       $this->use_rating=$DBInfo->use_rating;
       $this->use_etable=$DBInfo->use_etable;
  +    $this->use_metadata=$DBInfo->use_metadata;
       $this->udb=$DBInfo->udb;
       $this->check_openid_url=$DBInfo->check_openid_url;
       $this->register_javascripts($DBInfo->javascripts);
  @@ -1804,7 +1848,7 @@
       #"\b(".$DBInfo->interwikirule."):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
       #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
       #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+[^\(\)<>\s\',\.:\?\!]+)|".
  -    "(\b|\^?)([A-Z][a-zA-Z]+):([^\(\)<>\s\']?[^\(\)<>\s\'\",:\?\!\010\006]*(\s(?![\x21-\x7e]))?)";
  +    "(\b|\^?)([A-Z][a-zA-Z]+):([^:\(\)<>\s\']?[^\(\)<>\s\'\",:\?\!\010\006]*(\s(?![\x21-\x7e]))?)";
   
       if ($camelcase)
         $this->wordrule.='|'.
  @@ -1832,7 +1876,7 @@
   
       if ($sbracket)
         # single bracketed name [Hello World]
  -      $this->wordrule.= "|(?<!\[)\!?\[([^\[,<\s'][^\[:,>]{1,255})\](?!\])";
  +      $this->wordrule.= "|(?<!\[)\!?\[([^\[,<\s'][^\[,>]{1,255})\](?!\])";
       else
         # only anchor [#hello], footnote [* note] allowed 
         $this->wordrule.= "|(?<!\[)\!?\[([#\*\+][^\[:,>]{1,255})\](?!\])";
  @@ -1912,12 +1956,19 @@
       $pi=array();
   
       $format='';
  -    if (!$body and !$this->pi['#format']) { # XXX
  -      $pos=strpos($this->page->name,'/') ? 1:0;
  -      $key=strtok($this->page->name,'/');
  +    if (!$this->pi['#format']) { # set default page type. # XXX !$body ? v1.134 ?
  +      preg_match('%(:|/)%',$this->page->name,$sep);
  +      $key=strtok($this->page->name,':/');
         if (isset($Config['pagetype'][$key]) and $f=$Config['pagetype'][$key]) {
  -        $temp=explode("/",$f);
  -        $format=$temp[$pos];
  +        $p=preg_split('%(:|/)%',$f);
  +        $p2=strlen($p[0].$p[1])+1;
  +        $p[1]=$p[1] ? $f{strlen($p[0])}.$p[1]:'';
  +        $p[2]=$p[2] ? $f{$p2}.$p[2]:'';
  +        $format=$p[0];
  +        if ($sep[1]) { # have : or /
  +          $format = ($sep[1]==$p[1]{0}) ? substr($p[1],1):
  +                    (($sep[1]==$p[2]{0}) ? substr($p[2],1):'plain');
  +        }
         } else if (isset($Config['pagetype']['*']))
           $format=$Config['pagetype']['*']; // default page type
       }
  @@ -1929,6 +1980,12 @@
         $update_body=1;
       }
   
  +    if ($this->use_metadata) {
  +      include_once('lib/metadata.php');
  +      list($this->metas,$nbody)=_get_metadata($body);
  +      if ($nbody!=null) $body=$nbody;
  +    }
  +
       if (!$format and $body[0] == '<') {
         list($line, $dummy)= explode("\n", $body,2);
         if (substr($line,0,6) == '<?xml ')
  @@ -1968,7 +2025,7 @@
         if (isset($pi['#nosinglebracket'])) $pi['#singlebracket']=0;
       }
   
  -    if (!empty($format)) $pi['#format']=$format; // override default
  +    if (empty($pi['#format']) and !empty($format)) $pi['#format']=$format; // override default
       if (!isset($pi['#format'])) $pi['#format']= $Config['default_markup'];
   
       list($pi['#format'],$pi['args'])=explode(' ',$pi['#format'],2);
  @@ -2073,7 +2130,7 @@
         break;
       }
   
  -    if (strpos($url,':') !== false) {
  +    if (($p=strpos($url,':')) !== false and $url{$p+1}!=':') {
         if ($url[0]=='a') # attachment:
           return $this->macro_repl('attachment',substr($url,11));
   
  @@ -2211,8 +2268,9 @@
       $url=$DBInfo->interwiki[$wiki];
       # invalid InterWiki name
       if (!$url) {
  -      $dum0=preg_replace("/(".$this->wordrule.")/e","\$this->link_repl('\\1')",$wiki);
  -      return $dum0.':'.($page?$this->link_repl($page,$text):'');
  +      #$dum0=preg_replace("/(".$this->wordrule.")/e","\$this->link_repl('\\1')",$wiki);
  +      #return $dum0.':'.($page?$this->link_repl($page,$text):'');
  +      return $this->word_repl("$wiki:$page",$text.$extra,$attr,1);
       }
   
       if ($page=='/') $page='';
  @@ -2678,7 +2736,18 @@
       global $DBInfo;
       $sep=$DBInfo->query_prefix;
   
  -    if (!$query_string and $this->query_string) $query_string=$this->query_string;
  +    if (!$query_string) {
  +      if ($this->query_string) $query_string=$this->query_string;
  +    } else if ($query_string and $query_string{0}=='#') {
  +      $query_string= $this->self_query.$query_string;
  +    }
  +    #{
  +    #    $query_string = $this->query_string;
  +    #  } else if ($query_string[0]=='?') {
  +    #    $query_string= $this->query_string.'&amp;'.substr($query_string,1);
  +    #  } else {
  +    #  }
  +    #}
   
       if ($sep == '?') {
         if ($pageurl && $query_string[0]=='?')
  @@ -2706,6 +2775,7 @@
     function link_to($query_string="",$text="",$attr="") {
       if (!$text)
         $text=htmlspecialchars($this->page->name);
  +
       return $this->link_tag($this->page->urlname,$query_string,$text,$attr);
     }
   
  @@ -3789,14 +3859,16 @@
   
       if (!$plain) {
         # find upper page
  -      $pos=strrpos($this->page->name,"/");
  +      $pos=0;
  +      preg_match('/(\:|\/)/',$this->page->name,$sep); # NameSpace/SubPage or NameSpace:SubNameSpacePage
  +      if ($sep[1]) $pos=strrpos($this->page->name,$sep);
         if ($pos > 0) $upper=substr($this->page->urlname,0,$pos);
         else if ($this->group) $upper=_urlencode(substr($this->page->name,strlen($this->group)));
         if ($this->pi['#keywords'])
           $keywords='<meta name="keywords" content="'.$this->pi['#keywords'].'" />';
         else if ($DBInfo->use_keywords) {
           $keywords=strip_tags($this->page->title);
  -        $keywords=str_replace(" ",", ",$keywords);
  +        $keywords=str_replace(" ",", ",$keywords); # XXX
           $keywords=htmlspecialchars($keywords);
           $keywords="<meta name=\"keywords\" content=\"$keywords\" />";
         }
  @@ -4074,7 +4146,9 @@
       $saved_pagelinks = $this->pagelinks;
   
       # find upper page
  -    $pos=strrpos($name,"/");
  +    $pos=0;
  +    preg_match('/(\:|\/)/',$name,$sep); # NameSpace/SubPage or NameSpace:SubNameSpacePage
  +    if ($sep[1]) $pos=strrpos($name,$sep[1]);
       $mypgname=$this->page->name;
       if ($pos > 0) {
         $upper=substr($name,0,$pos);
  @@ -4494,39 +4568,32 @@
   
   # get the pagename
   function get_pagename() {
  -  global $Config;
     // $_SERVER["PATH_INFO"] has bad value under CGI mode
     // set 'cgi.fix_pathinfo=1' in the php.ini under
     // apache 2.0.x + php4.2.x Win32
     if (!empty($_SERVER['PATH_INFO'])) {
       if ($_SERVER['PATH_INFO'][0] == '/')
         $pagename=substr($_SERVER['PATH_INFO'],1);
  -    if (!$pagename) {
  -      $pagename = $Config['frontpage'];
  -    }
  -    $pagename=_stripslashes($pagename);
     } else if (!empty($_SERVER['QUERY_STRING'])) {
       if (isset($goto)) $pagename=$goto;
       else {
         $pagename = $_SERVER['QUERY_STRING'];
         $temp = strtok($pagename,"&");
   
  -      if ($temp and strpos($temp,"="))
  -        $pagename = $Config['frontpage'];
  -      else
  -        $result = preg_match('/^([^&=]+)/',$pagename,$matches);
  -      if ($result) {
  -        $pagename = urldecode($matches[1]);
  -        $_SERVER['QUERY_STRING']=substr($_SERVER['QUERY_STRING'],strlen($pagename));
  +      if (!$temp or strpos($temp,"=")===false) {
  +        if (preg_match('/^([^&=]+)/',$pagename,$matches)) {
  +          $pagename = urldecode($matches[1]);
  +          $_SERVER['QUERY_STRING']=substr($_SERVER['QUERY_STRING'],strlen($pagename));
  +        }
         }
       }
  -    if (!$pagename) $pagename= $Config['frontpage'];
  -  } else {
  -    $pagename = $Config['frontpage'];
     }
  +  if ($pagename) {
  +    $pagename=_stripslashes($pagename);
   
  -  if ($pagename[0]=='~' and ($p=strpos($pagename,"/")))
  -    $pagename=substr($pagename,1,$p-1)."~".substr($pagename,$p+1);
  +    if ($pagename[0]=='~' and ($p=strpos($pagename,"/")))
  +      $pagename=substr($pagename,1,$p-1)."~".substr($pagename,$p+1);
  +  }
     return $pagename;
   }
   
  @@ -4595,9 +4662,16 @@
   
   }
   
  +function get_frontpage($lang) {
  +  global $Config;
  +
  +  $lcid=substr(strtok($lang,'_'),0,2);
  +  return $Config['frontpages'][$lcid] ? $Config['frontpages'][$lcid]:$Config['frontpage'];
  +}
  +
   function wiki_main($options) {
     global $DBInfo,$Config;
  -  $pagename=$options['pagename'];
  +  $pagename=$options['pagename'] ? $options['pagename']: $DBInfo->frontpage;
     
     # get primary variables
     if ($_SERVER['REQUEST_METHOD']=="POST") {
  @@ -4955,6 +5029,7 @@
   $lang= set_locale($DBInfo->lang,$DBInfo->charset);
   init_locale($lang);
   init_requests($options);
  +if (!$options['pagename']) $options['pagename']= get_frontpage($lang);
   $DBInfo->lang=$lang;
   
   if (session_id()== '' && !$DBInfo->nosession){
  
  
  
  1.237     +31 -10    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.236
  retrieving revision 1.237
  diff -u -r1.236 -r1.237
  --- wikilib.php	13 Mar 2008 11:17:32 -0000	1.236
  +++ wikilib.php	22 Mar 2008 02:38:30 -0000	1.237
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.236 2008/03/13 11:17:32 wkpark Exp $
  +// $Id: wikilib.php,v 1.237 2008/03/22 02:38:30 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -41,11 +41,13 @@
   
   function _rawurlencode($url) {
     $name=rawurlencode($url);
  -  $urlname=preg_replace(array('/%2F/i','/%7E/i'),array('/','~'),$name);
  +  $urlname=preg_replace('/%(2F|7E|3A|2B)/ei',"chr(hexdec('\\1'))",$name);
  +  $urlname= preg_replace('#:+#',':',$urlname);
     return $urlname;
   }
   
   function _urlencode($url) {
  +  $url= preg_replace('#:+#',':',$url);
     $t= preg_replace("/([^a-z0-9\/\?\.\+~#&:;=%\-_]{1})/ie","'%'.strtoupper(dechex(ord(substr('\\1',-1))))",$url);
     return preg_replace("/(%)(?![a-f0-9]{2})/i","%25",$t);
   }
  @@ -638,7 +640,9 @@
   
   function macro_EditText($formatter,$value,$options='') {
     global $DBInfo;
  -  if (!$options['simple'] and $DBInfo->hasPage('EditTextForm')) {
  +
  +  # simple == 1 : do not use EditTextForm, simple == 2 : do not use GUI/Preview
  +  if (!$options['simple']!=1 and $DBInfo->hasPage('EditTextForm')) {
       $p=$DBInfo->getPage('EditTextForm');
       $form=$p->get_raw_body();
       $f=new Formatter($p);
  @@ -666,6 +670,7 @@
     global $DBInfo;
     if (!$DBInfo->security->writable($options)) {
       $formatter->preview=0;
  +    $options['err']="#format wiki\n== "._("You are not allowed to edit this page !").' =='; # XXX
       do_invalid($formatter,$options);
       return;
     }
  @@ -761,7 +766,14 @@
   
     $preview= $options['preview'];
   
  -  if (!$formatter->page->exists() and !$preview) {
  +  if ($options['action']=='edit') $saveaction='savepage';
  +  else $saveaction=$options['action'];
  +
  +  $extraform=$formatter->_extra_form ? $formatter->_extra_form:'';
  +
  +  $options['notmpl']=isset($options['notmpl']) ? $options['notmpl']:0;
  +
  +  if (!$options['notmpl'] and ($options['template'] or !$formatter->page->exists()) and !$preview) {
       $options['linkto']="?action=edit&amp;template=";
       $tmpls= macro_TitleSearch($formatter,$DBInfo->template_regex,$options);
       if ($tmpls) {
  @@ -785,6 +797,8 @@
     if ($options['section'])
       $hidden='<input type="hidden" name="section" value="'.$options['section'].
               '" />';
  +  if ($options['mode'])
  +    $hidden='<input type="hidden" name="mode" value="'.$options['mode'].'" />';
   
     # make a edit form
     if (!$options['simple'])
  @@ -818,7 +832,13 @@
       $previewurl);
     if ($text) {
       $raw_body = preg_replace("/\r\n|\r/", "\n", $text);
  -  } else if ($formatter->page->exists()) {
  +  } else if ($options['template']) {
  +    $p= new WikiPage($options['template']);
  +    $raw_body = preg_replace("/\r\n|\r/", "\n", $p->get_raw_body());
  +  } else if (isset($formatter->_raw_body)) {
  +    # low level XXX
  +    $raw_body = preg_replace("/\r\n|\r/", "\n", $formatter->_raw_body);
  +  } else if ($options['mode']!='edit' and $formatter->page->exists()) {
       $raw_body = preg_replace("/\r\n|\r/", "\n", $formatter->page->_get_raw_body());
       if (isset($options['section'])) {
         $sections= _get_sections($raw_body);
  @@ -826,9 +846,6 @@
           $raw_body = $sections[$options['section']];
         #else ignore
       }
  -  } else if ($options['template']) {
  -    $p= new WikiPage($options['template']);
  -    $raw_body = preg_replace("/\r\n|\r/", "\n", $p->get_raw_body());
     } else {
       if (strpos($options['page'],' ') > 0) {
         $raw_body="#title $options[page]\n";
  @@ -841,6 +858,9 @@
     # for conflict check
     if ($options['datestamp'])
        $datestamp= $options['datestamp'];
  +  else if ($formatter->_mtime)
  +     # low level control XXX
  +     $datestamp= $formatter->_mtime;
     else
        $datestamp= $formatter->page->mtime();
   
  @@ -858,7 +878,7 @@
       }
     }
   
  -  if ($DBInfo->use_minoredit) {
  +  if (!$options['minor'] and $DBInfo->use_minoredit) {
       $user=new User(); # get from COOKIE VARS
       if ($DBInfo->owners and in_array($user->id,$DBInfo->owners)) {
         $extra_check=' '._("Minor edit")."<input type='checkbox' tabindex='3' name='minor' />";
  @@ -918,9 +938,10 @@
   <textarea id="content" wrap="virtual" name="savetext" tabindex="1"
    rows="$rows" cols="$cols" class="wiki resizable">$raw_body</textarea>
   </div>
  +$extraform
   <div>
   $summary_msg: <input name="comment" value="$editlog" size="70" maxlength="70" style="width:80%" tabindex="2" />$extra_check<br />
  -<input type="hidden" name="action" value="savepage" />
  +<input type="hidden" name="action" value="$saveaction" />
   <input type="hidden" name="datestamp" value="$datestamp" />
   $hidden$select_category
   <input type="submit" tabindex="5" value="$save_msg" />
  
  
  


wkpark      2008/03/22 11:39:11

  Modified:    lib      metadata.php
  Log:
  add a _get_metadata(). Please refactor me :>
  
  Revision  Changes    Path
  1.2       +28 -1     moniwiki/lib/metadata.php
  
  Index: metadata.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/metadata.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- metadata.php	29 Nov 2007 17:14:00 -0000	1.1
  +++ metadata.php	22 Mar 2008 02:39:11 -0000	1.2
  @@ -2,7 +2,7 @@
   //
   // Metadata module for MoniWiki
   //
  -// $Id: metadata.php,v 1.1 2007/11/29 17:14:00 wkpark Exp $
  +// $Id: metadata.php,v 1.2 2008/03/22 02:39:11 wkpark Exp $
   
   function getMetadata($raw,$mode=1,$opts=array()) {
   
  @@ -47,5 +47,32 @@
       return ($meta);
   }
   
  +
  +function _get_metadata($body) {
  +    $key='';
  +    $val='';
  +    $meta=array();
  +    $metaok=0;
  +    while($body) {
  +        list($line, $body)= split("\n", $body,2);
  +        if ($key and ($line{0}==' ' or $line{0}=="\t")) { $meta[$key].=$line."\n";continue;}
  +        if ($line=="") {
  +            $metaok=1;
  +            break;
  +        }
  +        $key=strtok($line,' ');
  +        $val=strtok('');
  +        if ($key=='From') { # mail type
  +            if (empty($meta['magic'])) {
  +                $meta['magic']=$line; continue;
  +            } else break;
  +        }
  +        if (preg_match('/(^[a-zA-Z0-9\-\_]+):/',$key,$m)) $meta[$m[1]]=$val;
  +        else break;
  +    }
  +    if ($metaok) return array($meta,$body);
  +    return array(null,null);
  +}
  +
   // vim:et:sts=4:sw=4:
   ?>
  
  
  


wkpark      2008/03/22 11:40:08

  Modified:    css      _extra.css _base.css print.css
  Log:
  update
  
  Revision  Changes    Path
  1.13      +206 -0    moniwiki/css/_extra.css
  
  Index: _extra.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_extra.css,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- _extra.css	29 Nov 2007 14:22:30 -0000	1.12
  +++ _extra.css	22 Mar 2008 02:40:08 -0000	1.13
  @@ -262,6 +262,50 @@
     cursor:pointer;
   }
   
  +/* mootools r1.11 autocompleter */
  +ul.autocompleter-choices
  +{
  +  position: absolute;
  +  margin: 0;
  +  padding: 0;
  +  list-style: none;
  +  border: 1px solid #eee;
  +  background-color: white;
  +  border-right-color: #ddd;
  +  border-bottom-color: #ddd;
  +  text-align: left;
  +  font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
  +  z-index: 50;
  +}
  +
  +ul.autocompleter-choices li
  +{
  +  position: relative;
  +  padding: 0.1em 1.5em 0.1em 1em;
  +  cursor: pointer;
  +  font-weight: normal;
  +  font-size: 1em;
  +
  +  padding-left:0px;
  +}
  +
  +ul.autocompleter-choices li.autocompleter-selected
  +{
  +  background-color: #444;
  +  color: #fff;
  +}
  +
  +ul.autocompleter-choices span.autocompleter-queried
  +{
  +  font-weight: bold;
  +}
  +
  +ul.autocompleter-choices li.autocompleter-selected span.autocompleter-queried
  +{
  +  color: #9FCFFF;
  +}
  +
  +/* TeX */
   .previewTex {
     vertical-align:middle;
   }
  @@ -315,3 +359,165 @@
   }
   
   .imgAttach {}
  +
  +/* Moniwiki Board plugin */
  +table.bbs { width:100%;}
  +
  +table.bbs thead {
  +  background:url(../imgs/plugin/Board/titlebg.png) repeat-x;
  +  color:#000000;
  +  font-family:Trebuchet MS,Sans-serif;
  +}
  +
  +table.bbs tbody tr:hover {
  +  background-color:#eeeeee;
  +}
  +
  +table.bbs tbody td {
  +  font-family:Trebuchet MS,Sans-serif;
  +}
  +
  +div.bbsArticle {
  +  margin-bottom:0.5em;
  +}
  +
  +div.bbsArticle .msg {
  +  padding:0.5em;
  +}
  +
  +.bbsArticle .head h2 { /* heading */
  +  background-color:#6DC0F1;
  +  border-bottom:0px;
  +  margin-top:0.0em;
  +  padding:5px;
  +  font-size:1.2em;
  +  color:black;
  +  background:url(../imgs/plugin/Board/titlebg.png) repeat-x;
  +}
  +
  +.bbsArticle h3 { /* heading */
  +  text-align:right;
  +  border-bottom:0px;
  +  margin-top:0.0em;
  +  font-size:1.1em;
  +  font-weight:normal;
  +}
  +
  +.bbsBtn {
  +  text-align:right;
  +}
  +
  +.bbsArticleBtn {
  +  text-align:center;
  +}
  +
  +.bbsAdminBtn {
  +}
  +
  +td.hit { text-align:center; }
  +td.date { text-align:center; }
  +td.no { text-align:center; }
  +td.title { padding-left:0.5em; }
  +td.name { padding-left:0.5em; }
  +
  +/* from the zeroboard */
  +a.button, span.button, del.button, a.button span, span.button button, span.button input, del.button span {
  +  background-image:url(../imgs/plugin/Board/form_btns.png);
  +}
  +
  +a.button, span.button, del.button {
  +  background-position:0px 0px; /* XXX */
  +  background-repeat:no-repeat;
  +  border:medium none;
  +  color:#2E523B;
  +  cursor:pointer;
  +  display:-moz-inline-box;
  +  font-style:normal;
  +  height:30px;
  +  line-height:0pt;
  +  margin:0pt 6px 0px 0pt;
  +  padding:0pt 10px 0pt 0pt;
  +  vertical-align:middle;
  +}
  +
  +*:first-child + html a.button, *:first-child + html span.button, *:first-child + html del.button {
  +  position:relative;
  +  top:-4px;
  +}
  +
  +a.button span, span.button button, span.button input, del.button span {
  +  background-color:transparent;
  +  background-position:100% 0pt;
  +  background-repeat:no-repeat;
  +  border:medium none;
  +  color:#222222;
  +  cursor:pointer;
  +  display:-moz-inline-box;
  +  font-size:12px !important;
  +  font-style:normal;
  +  height:30px;
  +  letter-spacing:0pt !important;
  +  margin:0pt -16px 0pt 10px;
  +  padding:8px 20px 0pt 10px;
  +  white-space:nowrap;
  +}
  +span.button button {
  +  line-height:2.5;
  +}
  +html.safari a.button span, html.safari del.button span {
  +  line-height:1.3;
  +}
  +html.safari span.button button {
  +  line-height:2.6;
  +}
  +html.safari a.button:focus, html.safari span.button button:focus {
  +  outline-color:invert;
  +  outline-style:none;
  +  outline-width:medium;
  +}
  +del.button {
  +  background-position:0pt -120px;
  +}
  +del.button span {
  +  background-position:100% -120px;
  +  color:#AAAAAA !important;
  +  cursor:default;
  +}
  +span.button button, span.button input {
  +line-height:2.5;
  +padding-top:0px;
  +}
  +a.button:hover, span.button:hover, a.button:focus, a.dom-button-focus, span.button-behavior-hover {
  +  background-position:0pt -60px;
  +  color:#222222;
  +  text-decoration:none;
  +}
  +a.button:hover span, span.button:hover button, span.button:hover input, a.button:focus span, span.button-behavior-hover button, span.button-behavior-hover input {
  +  background-position:100% -60px;
  +}
  +a.button:active, a.button:focus span {
  +  color:#444444;
  +}
  +del.button-behavior-hover, del.button:hover {
  +  background-position:0pt -180px;
  +}
  +del.button-behavior-hover span, del.button:hover span {
  +  background-position:100% -180px;
  +}
  +span.button button, del.button span, span.button input {
  +}
  +
  +/* */
  +.pnut {
  +  text-align:center;
  +}
  +
  +.deleteDialog {
  +  text-align:center;
  +}
  +
  +.deleteDialog table {
  +  text-align:center;
  +  margin-left:auto; /* Moz */
  +  margin-right:auto; /* Moz */
  +}
  
  
  
  1.19      +14 -2     moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- _base.css	5 Nov 2007 11:07:08 -0000	1.18
  +++ _base.css	22 Mar 2008 02:40:08 -0000	1.19
  @@ -93,6 +93,11 @@
     cursor: s-resize;
   }
   
  +.resizable-textarea {
  +  width:100% !important;
  +  width:98%; /* for IE */
  +}
  +
   th.info {
     background-color:#E2ECE2;
   /*  border-collapse: collapse; */
  @@ -183,7 +188,7 @@
   }
   
   #wikiHeader {
  -  margin-bottom:5px;
  +  margin-bottom:3px;
   }
   #wikiHeader a:link {color:black;}
   #wikiHeader a:visited {color:#505050;}
  @@ -201,6 +206,7 @@
   
   .clear {
     clear:both;
  +  height:1px; /* */
   }
   
   /* HierarchicalWiki */
  @@ -240,7 +246,6 @@
   }
   
   #wikiIcon {
  -  visibility:hidden;
     float:right;
     padding: 3px 10px;
     text-align: right;
  @@ -420,6 +425,8 @@
     background-color:#ffff00;
     border-left:2px solid #F5E238;
     border-right:2px solid #F5E238;
  +  border-top:2px dotted #F5E238;
  +  border-bottom:2px dotted #F5E238;
   }
   
   .wikiMarkupEdit pre, .wikiMarkupEdit span {
  @@ -512,3 +519,8 @@
   .addLabel {
     text-align:right;
   }
  +
  +.subscribePages ol {
  +  list-style:circle;
  +}
  +
  
  
  
  1.12      +8 -0      moniwiki/css/print.css
  
  Index: print.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/print.css,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- print.css	2 Jun 2006 15:55:02 -0000	1.11
  +++ print.css	22 Mar 2008 02:40:08 -0000	1.12
  @@ -246,3 +246,11 @@
   pre.wikiSyntax {
     border-left: 3px solid #c0c0c0;
   }
  +
  +.login {
  +  display:none;
  +}
  +
  +#goForm {
  +  display:none;
  +}
  
  
  


wkpark      2008/03/22 11:42:11

  Added:       plugin   bbs.php
  Log:
  new BBS plugin! hack hack :)
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/bbs.php
  
  Index: bbs.php
  ===================================================================
  <?php
  // Copyright 2008 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a BBS plugin for the MoniWiki
  //
  // Usage: [[BBS(pagename,count,mode)]]
  //
  // $Id: bbs.php,v 1.1 2008/03/22 02:42:11 wkpark Exp $
  
  function _get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
  
    if ($curpage >=0)
      if ($curpage > $pages)
        $curpage=$pages;
    if ($curpage <= 0)
      $curpage=1;
  
    $startpage=intval(($curpage-1) / $listcount)*$listcount +1;
  
    $pnut="";
    if ($startpage > 1) {
      $prevref=$startpage-1;
      if (!$first) {
        $prev_l=$formatter->link_tag('',$action.$prevref,$prev);
        $prev_1=$formatter->link_tag('',$action."1","1");
        $pnut="$prev_l".$bra.$prev_1.$cat.$ellip.$bar;
      }
    } else {
      $pnut=$prev.$bra."";
    }
  
    for ($i=$startpage;$i < ($startpage + $listcount) && $i <=$pages; $i++) {
      if ($i != $startpage)
        $pnut.=$sep;
      if ($i != $curpage) {
        $link=$formatter->link_tag('',$action.$i,$i);
        $pnut.=$link;
      } else
        $pnut.="<b>$i</b>";
    }
  
    if ($i <= $pages) {
      if (!$last) {
        $next_l=$formatter->link_tag('',$action.$pages,$pages);
        $next_i=$formatter->link_tag('',$action.$i,$next);
  
        $pnut.=$cat.$ellip.$bra.$next_l.$cat.$next_i;
      }
    } else {
      $pnut.="".$cat.$next;
    }
    return $pnut;
  }
  
  class BBS_text {
      function BBS_text($name,$conf) {
          # $conf['data_dir'] from DBInfo.
          $this->bbsname=$name;
  
          # XXX
          $this->text_dir=$conf['data_dir'].'/text/'.$name.'.d';
  
          # XXX
          $this->data_dir=$conf['data_dir'].'/bbs/'.$name;
          $this->cache_dir=$this->data_dir.'/cache';
          $this->dba_type=$conf['dba_type'];
  
          # XXX
          $this->index=$this->data_dir.'/.index';
          $this->current=$this->data_dir.'/.current';
          $this->count=$this->data_dir.'/.count';
  
          # XXX
          if ($conf['use_counter'])
              $this->counter=new Counter_dba($this);
          if (!$this->counter->counter)
              $this->counter=new Counter();
  
          if (!file_exists($this->index)) {
              umask(000);
              @mkdir($this->data_dir,0777); // XXX
              @mkdir($this->text_dir,0777); // XXX
              @mkdir($this->text_dir,0777); // XXX
              umask(022);
              touch($this->index);
              touch($this->count);
              # XXX global lock.
              touch($this->text_dir.'/.lock');
              $fp=fopen($this->current,'w');
              if ($fp) {
                  fwrite($fp,'1');
                  fclose($fp);
              }
          }
      }
  
      function getPageKey($id) {
          return $this->text_dir.'/'.$id;
      }
  
      function hasPage($id) {
          if (!$id) return 0;
          return @file_exists($this->getPageKey($id));
      }
  
      function exists($id) {
          if (!$id) return 0;
          return @file_exists($this->getPageKey($id));
      }
  
      function getPage($id) {
          $k=$this->getPageKey($id);
          $fp=fopen($k,'r');
          if ($fp) {
              $fsize=filesize($k);
              if ($fsize > 0)
                  $body=fread($fp,$fsize);
              fclose($fp);
          } else
              return null;
          return $body;
      }
  
      function incCurrent() {
          list($cur,$dum)=file($this->current);
          $fp=fopen($this->current,'w');
          if ($fp) {
              $id=$cur+1;
              fwrite($fp,"$id");
              fclose($fp);
          }
          return $cur;
      }
  
      function incCount() {
          list($cur,$dum)=file($this->count);
          $fp=fopen($this->count,'w');
          if ($fp) {
              $id=$cur+1;
              fwrite($fp,"$id");
              fclose($fp);
          }
          return $cur;
      }
  
      function getCount() {
          list($cur,$dum)=file($this->count);
          return $cur;
      }
  
      function setCount($num) {
          $fp=fopen($this->count,'w');
          if ($fp) {
              fwrite($fp,"$num");
              fclose($fp);
          }
          return $cur;
      }
  
      function decCount() {
          list($cur,$dum)=file($this->count);
          $fp=fopen($this->count,'w');
          if ($fp) {
              $id=$cur-1;
              fwrite($fp,"$id");
              fclose($fp);
              print $id;
          }
          return $id;
      }
  
      function savePage($data,$options=array()) {
          global $DBInfo;
  
          $time=time();
          $date=gmdate('Y-m-d H:i:s',$time);
          $ip=$_SERVER['REMOTE_ADDR'];
  
          $info="$ip,$time,$data[name],$data[pass],$data[email],$data[home],$data[subject],";
          $info.="\"$data[categories]\",\"$data[files]\",\"$data[summary]\"";
  
          if ($data['no']) {
              # check password
              $id=&$data['no'];
              $body=$this->getPage($id);
              $comments='';
              if ($body != null) {
                  include_once('lib/metadata.php');
                  #list($meta,$body)=explode("\n\n",$body,2);
                  #$metas=getMetadata($meta,1);
                  list($metas,$nbody)=_get_metadata($body);
                  if ($nbody) $body=$nbody;
                  $data['name']=$metas['Name'];
                  $updated="\nUpdated: ".gmdate('Y-m-d H:i:s',time());
                  $boundary= strtoupper(md5("COMMENT")); # XXX
                  list($body,$comments)=explode('----'.$boundary."\n",$body,2); # XXX
              } else {
                  return false;
              }
          } else {
              $id=$this->incCurrent();
              $this->incCount();
              $this->counter->incCounter($id,$options);
              $this->updateIndex($id,$info);
          }
  
          $message=<<<EOF
  Name: $data[name]
  Subject: $data[subject]
  Date: $date$updated
  Email: $data[email]
  HomePage: $data[home]
  IP: $ip
  
  $data[text]
  EOF;
  
          if ($comments) $message.='----'.$boundary."\n".$comments;
  
          $log=$_SERVER['REMOTE_ADDR'].';;'.$data['name'].';;'.$comment;
          $options['log']=$log;
          $options['pagename']=$this->bbsname.':'.$data['no'];
          $ret=$DBInfo->_savePage($this->getPageKey($id),$message,$options);
  
          return true;
      }
  
      function deletePage($id) {
          $filename =$this->getPageKey($id);
          unlink($filename);
          $this->deleteIndex($id);
          $this->setCount($this->getCount()-1);
      }
  
      function deleteIndex($id) {
          $check=0;
          $fp= fopen($this->index, 'r+');
          while (is_resource($fp) and ($fz=filesize($this->index))>0){
              fseek($fp,0,SEEK_END);
              if ($fz <= 1024) {
                  fseek($fp,0);
                  $ll=rtrim(fread($fp,1024));
                  $lines=explode("\n",$ll);
                  for ($i=sizeof($lines);$i>=0;$i--) {
                      if (preg_match('/^'.$id.',/',$lines[$i]))
                          unset($lines[$i]);break;
                  }
                  $all=implode("\n",$lines)."\n";
                  fseek($fp,0);
                  fwrite($fp,$all);
                  ftruncate($fp,strlen($all));
                  fclose($fp);
                  # XXX not tested
                  break;
              }
              $a=-1; // hack, don't read last \n char.
              $last='';
              fseek($fp,0,SEEK_END);
              #while($check_from < $check and !feof($fp)){
              while($check != -1 and !feof($fp)){
                  $rlen=$fz + $a;
                  if ($rlen > 1024) { $rlen=1024;}
                  else if ($rlen <= 0) break;
                  $a-=$rlen;
                  fseek($fp,$a,SEEK_END);
                  $l=fread($fp,$rlen);
                  if ($rlen != 1024) $l="\n".$l; // hack, for the first log entry.
                  while(($p=strrpos($l,"\n"))!==false) {
                      $line=substr($l,$p+1).$last;
                      $last='';
                      $nline++;
                      $l=substr($l,0,$p);
                      $dumm=explode(",",$line,4);
                      $check=$dumm[0];
                      if ($id<$check) continue;
                      else if ($id==$check) {
                          # XXX
                          #print 'WOW'.$a."/".$p."<br />";
  
                          fseek($fp,$a+$p+1,SEEK_END);
                          $ll=fread($fp,strlen($line));
                          #print '<pre>'.$line."</pre>";
                          #print '<pre>'.$last."</pre>";
                          #print '<pre>'.$ll."</pre>";
  
                          $pp=$a+$p+1+strlen($line)+1;
                          fseek($fp,$pp,SEEK_END);
  
                          if ($pp < 0) {
                              $lastall=fread($fp,-$pp);
                              fseek($fp,$a+$p+1,SEEK_END);
                              $r=fwrite($fp,$lastall);
                              #print $r.'OK';
                          }
                          $nfz=$fz-strlen($line)-1;
                          #print $fz."/".$nfz."<br />";
                          #print '<pre>'.$lastall."</pre>";
                          ftruncate($fp,$nfz);
                          
                          $check=-1; break;
                          $lines[]=$line;
                          if (sizeof($lines) >= $itemnum) { $check=-1; break; }
                      }
                      $last='';
                  }
                  $last=$l.$last;
              }
              fclose($fp);
              break;
          }
      }
  
      function updateIndex($cur,$info) {
          $fp=fopen($this->index,'a');
  
          if ($fp) {
              fwrite($fp,$cur.','.$info."\n");
              fclose($fp);
              return true;
          }
          return false;
      }
  
      function _get_raw_list($items,$opts=array()) {
          $lines=array();
   
          if ($opts['no']) { /* id option */
              $check = 0;
              $check_from=$opts['no'];
              $check_to=$opts['no'];
              $check_field=0;
          } else if (1 or $opts['p']) { /* page option XXX */
              $p=$opts['p'] > 0 ? $opts['p']:1;
  
              $perpage=$opts['perpage'] ? $opts['perpage']:20;
              
              $check_from=($p-1)*$perpage+1;
              $check_to=$check_from+$perpage;
              $check = 0;
  
              $check_field=-1;
          } else {
              $time_current= time();
              $secs_per_day= 24*60*60;
  
              $days= $opts['days'] > 0 ? $opts['days']:30;
              $items= $opts['items'] > 0 ? $opts['items']:$items;
    
              if ($opts['ago']) {
                  $check_from= $time_current - ($opts['ago'] * $secs_per_day);
                  $check_to= $check_from + ($days * $secs_per_day);
              } else {
                  if ($items) {
                      $check_from= $time_current - (365 * $secs_per_day);
                  } else {
                      $check_from= $time_current - ($days * $secs_per_day);
                  }
                  $check_to= $time_current;
              }
  
              $check=$check_to;
              $check_field=2;
          }
  
          $itemnum=$items ? $items:200;
  
          $fp= fopen($this->index, 'r');
          $nline=0;
          while (is_resource($fp) and ($fz=filesize($this->index))>0){
              fseek($fp,0,SEEK_END);
              if ($fz <= 1024) {
                  print '='.$nline.','.$check_to.'<br />';
                  fseek($fp,0);
                  $ll=rtrim(fread($fp,1024));
                  $lines=array_reverse(explode("\n",$ll));
                  break;
              }
              $a=-1; // hack, don't read last \n char.
              $last='';
              fseek($fp,0,SEEK_END);
              while($check != -1 and !feof($fp)){
              #while($check_from < $check and !feof($fp)){
                  $rlen=$fz + $a;
                  if ($rlen > 1024) { $rlen=1024;}
                  else if ($rlen <= 0) break;
                  $a-=$rlen;
                  fseek($fp,$a,SEEK_END);
                  $l=fread($fp,$rlen);
                  if ($rlen != 1024) $l="\n".$l; // hack, for the first log entry.
                  # print '=>'.$check_from.', '.$check_to.', '.$check.'<br />';
                  while(($p=strrpos($l,"\n"))!==false) {
                      $line=substr($l,$p+1).$last;
                      $nline++;
                      $l=substr($l,0,$p);
                      $dumm=explode(",",$line,4);
                      $check=$check_field >= 0 ? $dumm[$check_field]:$nline;
                      if ($check_from>$check) continue;
                      else if ($check_to>=$check) {
                          $lines[]=$line;
                          if (sizeof($lines) >= $itemnum) { $check=-1; break; }
                      }
                      $last='';
                  }
                  $last=$l.$last;
              }
              #print $a;
              #print sizeof($lines);
              #print_r($lines);
              fclose($fp);
              break;
          }
  
          return $lines;
      }
  
      function getList($count,$opts=array()) {
          $list=array();
          $lines=$this->_get_raw_list($count,$opts);
          $expr='/,(?=(?:[^"]*"[^"]*")*(?![^"]*"))/';
          foreach ($lines as $line) {
              $results=preg_split($expr,trim($line));
              $results=preg_replace("/^\"(.*)\"$/","$1",$results);
              $list[]=$results;
          }
          return $list;
      }
  }
  
  function macro_BBS($formatter,$value,$options=array()) {
      global $DBInfo;
  
      # set defaults
      $ncount=20;
      $bname=$formatter->page->name;
  
      $nid='';
      # check options
      $args=preg_split('/\s*,\s*/',$value);
      foreach ($args as $arg) {
          $arg=trim($arg);
          if ($arg == '') continue;
          if (($p=strpos($arg,'='))!==false) {
              $k=substr($arg,0,$p);
              $v=substr($arg,$p+1);
              if ($k=='no') $nid=$v;
          } else if ($arg == 'mode') {}
          else if ($arg == (int) $arg) { $ncount=$arg; }
          else {
              $bname=$arg;
          }
      }
      $nid= $_GET['no'] ? $_GET['no']:$nid;
  
      $nids=preg_split('/\s+/',$nid);
      rsort($nids);
  
      $options['p']= ($_GET['p'] > 0) ? $_GET['p']:1;
  
      # is it exists ?
      if (!$DBInfo->hasPage($bname)) {
          return _("This bbs does not exists yet. Please save this page first");
      }
  
      # load a config file
      if (file_exists('config/bbs'.$bname.'.php')) {
          $confname='bbs.'.$bname.'.php';
      } else {
          $confname='bbs.default.php';
      }
  
      $conf=_load_php_vars('config/'.$confname);
      $conf['data_dir']=$DBInfo->data_dir;
      $conf['dba_type']=$DBInfo->dba_type;
  
      $MyBBS=new BBS_text($bname,$conf); // XXX
      if ($options['new']) return $MyBBS;
  
      $msg='';
      $btn=array();
      # read messages
              #
      $formatter->baserule[]="/^((-=)+-?$)/";
      $formatter->baserule[]="/ comment #(\d+)\b/";
      $formatter->baserule[]="/\[reply (\d+)\]/";
  
      $formatter->baserepl[]="<hr />\n";
      $formatter->baserepl[]=" comment [#c\\1 #\\1]";
      $formatter->baserepl[]="<script type='text/javascript'><!--\n".
          " addReplyLink(\\1); //--></script>";
      $msg='';
      $narticle=sizeof($nids);
      foreach($nids as $nid) {
          if (!$nid or !$MyBBS->hasPage($nid)) continue;
          $fields=array('Name','Subject','Date','Email','HomePage','IP','Keywords');
          include_once('lib/metadata.php');
  #Name: wkpark
  #Subject: Oh well
  #Date: 2006-04-29 42:04:39
  #Email: wkpark@gmail.com
  #HomePage: 
  #IP: 2xx.xxx.xxx.x
  
          $body=$MyBBS->getPage($nid);
          if ($body != null) {
              $options['nosisters']=1;
  
              $MyBBS->counter->incCounter($nid,$options);
              list($metas,$body)=_get_metadata($body);
  
              $boundary= strtoupper(md5("COMMENT")); # XXX
  
              $copy=$body;
              list($comment,$copy)=explode("----".$boundary."\n",$copy,2);
              while(!empty($comment)) {
                  list($comment,$copy)=explode("----".$boundary."\n",$copy,2);
                  if (preg_match('/^Comment-Id:\s*(\d+)/i',$comment,$m)) {
                      list($myhead,$my)=explode("\n\n",$comment,2);
                      $hidden.='<pre style="display:none;" id="comment_text_'.$m[1].'">'.htmlspecialchars($my).'</pre>';
                  }
              }
              ob_start();
  
              # add some basic rule/repl for bts
              $rule="/-{4}(?:".$boundary .")?\nComment-Id:\s*(\d+)\n".
                  "From:\s*([^\n]+)\nDate:\s*([^\n]+)\n\n/im";
              $repl="----\n'''Comment-Id:''' [#c\\1][#c\\1 #\\1] by \\2 on [[DateTime(\\3)]] [reply \\1]\n\n";
              $body=preg_replace($rule,$repl,$body);
  
              $formatter->quote_style='bbs-comment';
              $options['usemeta']=1;
  
  
              #
              $q_save=$formatter->self_query;
              $query='?no='.$nid.'&amp;p='.$options['p'];
              $formatter->self_query=$query;
  
              $save=$formatter->preview;
              $formatter->preview=1;
              ob_start();
              $formatter->send_page($body,$options);
              $body= ob_get_contents();
              ob_end_clean();
              $formatter->self_query=$q_save;
  
              $msg.="<div class='bbsArticle'>".
              '<div class="head"><h2>'._("No").' '.$nid.': '.$metas['Subject'].'</h2>'.
              '<div class="user"><h3>'.$metas['Name'].
              ' @ '.$metas['Date'].' ('._mask_hostname($metas['IP'],3).')'.
              '</h3></div></div>'.
              '<div class="article">'.$body.
              "</div>\n</div>";
              $snid=$nid;
              $btn['edit']=$formatter->link_to("?action=bbs&amp;mode=edit&amp;no=".$nid,
                  '<span>'._("Edit").'</span>','class="button"');
              $btn['delete']=$formatter->link_to("?action=bbs&amp;mode=delete&amp;no=".$nid,
                  '<span>'._("Delete").'</span>','class="button"');
              if ($narticle == 1 and $conf['use_comment']) {
                  $opts['action']='bbs';
                  $opts['no']=$nid;
                  $opts['p']=$options['p'];
                  $opts['mode']='comment';
                  $opts['nopreview']=1;
  
                  $p=new WikiPage($bname.':'.$opts['no'],$options);
                  $opts['datestamp']=$p->mtime();
                  $comment=$formatter->macro_repl('Comment','usemeta',$opts);
                  unset($opts['no']); # XXX
              }
              $msg.=$comment.'<div class="bbsArticleBtn">'.implode(" ",$btn).'</div>';
              unset($btn['delete']);
              unset($btn['edit']);
          }
      }
      if (!empty($msg) and ! $_GET['p']) return $msg;
  
      if (1) { # XXX
          $nochk=_("Please check article numbers.");
          $js=<<<JS
  <script language='javascript'>
  /*<![CDATA[*/
    function send_list(obj,mode) {
      var tmp="";
      var i, chk=false;
  
      form=obj.parentNode.parentNode;
  
      for(i=0;i< form.length;i++) {
         if(form[i].type!="checkbox") continue;
         if(form[i].checked) {
            tmp+=form[i].value+" ";
            chk=true;
         }
      }
      if(chk==true) {
         form.no.value = tmp.substr(0,tmp.length-1);
         if (mode!=undefined) {
           form.elements.action.value = 'bbs';
           form.elements.mode.value = mode;
         } else {
           form.removeChild(form.elements.mode);
           form.removeChild(form.elements.action);
         }
         form.submit();
         return false;
      }
      alert ("$nochk");
      return false;
    }
  /*]]>*/
  </script>
  
  JS;
  
      }
  
      # get list
      $options['perpage']=$ncount;
      $list=$MyBBS->getList($ncount,$options);
      # get total number of articles
      $tot=$MyBBS->getCount();
  
      $pages= intval($tot / $ncount);
      if ($tot % $ncount) $pages++;
  
      if ($pages > 1)
        $pnut=_get_pagelist($formatter,$pages,
          '?'.$extra.
          '&amp;p=',$options['p'],$ncount);
  
      $extra=$options['p'] ? '&amp;p='.$options['p']:'';
  
      $head=array(_("no"),'C',_("Title"),_("Name"),_("Date"),_("Hit"));
      $out.="<col width='3%' class='num' /><col width='1%' class='check' /><col width='63%' class='title' /><col width='14%' /><col width='13%' /><col width='7%' class='hit' />\n";
      $out.='<thead><tr><th>'.implode("</th><th>",$head)."</th></tr><thead>\n";
      $out.="<tbody>\n";
      foreach ($list as $l) {
          $nid=&$l[0];
          $ip=&$l[1];
          $date=date("Y-m-d",$l[2]);
          $user=$l[3];
          $subject=$formatter->link_to("?no=$nid".$extra,$l[7]);
          $hit=$MyBBS->counter->pageCounter($nid);
          $chk='<input type="checkbox" value="'.$nid.'">';
          $item=array(in_array($nid,$nids) ? '<strong>&raquo;</strong>':$nid,$chk,$subject,$user,$date,$hit);
          #$tmp='<tr><td>'.implode("</td><td>",$item)."</td></tr>\n";
          $tmp="<tr><td class='no'>$item[0]</td><td class='check'>$item[1]</td>".
              "<td class='title'>$item[2]</td><td class='name'>$item[3]</td>".
              "<td class='date'>$item[4]</td><td class='hit'>$item[5]</td>".
              "</tr>\n";
          $out.=$tmp; 
      }
      $out.="</tbody>\n";
  
      $btn['new']=$formatter->link_to("?action=bbs&amp;mode=edit",'<span>'._("New").'</span>','class="button"');
      unset($btn['edit']);
      $bn['view']=$formatter->link_to("",'<span>'._("Read").'</span>',
          'onclick="return send_list(this)" onfocus="blur()" class="button"');
      $bn['delete']=$formatter->link_to("",'<span>'._("Delete").'</span>',
          'onclick="return send_list(this,\'delete\')" onfocus="blur()" class="button"');
      $del="<div class='bbsAdminBtn'>".implode(" ",$bn)."</div>\n";
      $btns="<div class='bbsBtn'>".implode(" ",$btn)."</div>\n";
  
      $lnk=$formatter->link_url($formatter->page->urlname,'?action=bbs');
      $form0="<form method='get' action='$lnk'>\n";
      $form1='<input type="hidden" name="no" />';
      if ($options['p'])
          $form1.='<input type="hidden" name="p" value="'.$options['p']."\" />\n";
      $form1.='<input type="hidden" name="mode" />'.
             '<input type="hidden" name="action" />';
      $form1.="</form>\n";
      $pnut= "<div class='pnut'>$pnut</div>";
      return $pnut."$msg$js$form0<table class='bbs' cellspacing='1' cellpadding='2'>".$out.'</table>'.$del.$form1.$pnut.$btns;
  }
  
  function do_bbs($formatter,$options=array()) {
      global $DBInfo;
  
      $err='';
      $args=array();
  
      # password check
      while ($options['no'] and
          ($options['mode']=='delete' or $options['mode']=='edit') and $_SERVER['REQUEST_METHOD']=="POST") {
          # check admin(WikiMaster) password
          if ($DBInfo->admin_passwd)
              $check_pass=$DBInfo->admin_passwd==crypt($options['pass'],$DBInfo->admin_passwd);
          else
              $check_pass=0;
  
          # check admin(BBSMaster) password
          if (!$check_pass) {
              # load a config file
              if (file_exists('config/bbs'.$bname.'.php')) {
                  $confname='bbs.'.$bname.'.php';
              } else {
                  $confname='bbs.default.php';
              }
              $conf=_load_php_vars('config/'.$confname);
              if ($conf['admin_passwd']) {
                  $check_pass=$conf['admin_passwd']==crypt($options['pass'],$conf['admin_passwd']);
              } else {
                  $check_pass=0;
              }
          }
          while ($check_pass and $options['mode']== 'delete') {
              $MyBBS=macro_BBS($formatter,'',array('new'=>1));
          
              if (($p=strpos($options['no'],' '))!==false)
                  $nids=explode(" ",$options['no']);
              else
                  $nids=array($options['no']);
  
              for ($i=0,$sz=sizeof($nids);$i<$sz;$i++) {
                  if ($MyBBS->hasPage($nids[$i])) {
                      $MyBBS->deletePage($nids[$i]);
                  }
              }
  
              $query=$options['p'] ? '&p='.$options['p']:'';
              $myrefresh='';
              if ($DBInfo->use_save_refresh) {
                  $sec=$DBInfo->use_save_refresh - 1;
                  $lnk=$formatter->link_url($formatter->page->urlname,'?'.($query ? $query:'action=show'));
                  $myrefresh='Refresh: '.$sec.'; url='.qualifiedURL($lnk);
              }
              $header=array("Expires: " . gmdate("D, d M Y H:i:s", 0) . " GMT"); 
              if ($myrefresh) $header[]=$myrefresh;
              $formatter->send_header($header,$options);
              $formatter->send_title("","",$options);
              $formatter->send_footer("",$options);
              return;
          }
          break;
      }
      while ($options['mode']=='comment' and $options['savetext'] and $_SERVER['REQUEST_METHOD']=="POST") {
  
          $query='no='.$options['no'].($options['p'] ? '&p='.$options['p']:'');
          $myrefresh='';
          if ($DBInfo->use_save_refresh) {
              $sec=$DBInfo->use_save_refresh - 1;
              $lnk=$formatter->link_url($formatter->page->urlname,'?'.$query);
              $myrefresh='Refresh: '.$sec.'; url='.qualifiedURL($lnk);
          }
          $header=array("Expires: " . gmdate("D, d M Y H:i:s", 0) . " GMT"); 
          if ($myrefresh) $header[]=$myrefresh;
          $formatter->send_header($header,$options);
          $formatter->send_title("","",$options);
  
          $p=new WikiPage($options['page'].':'.$options['no'],$options);
          $formatter->page=$p;
          $options['page']=$options['page'].':'.$options['no'];
          $options['saveonly']=1;
          $options['minor']=1; # do not log
          $formatter->ajax_repl('comment',$options);
  
          $formatter->send_footer("",$options);
          return;
          break;
      }
      if ($options['mode'] == 'delete') {
  
          $msg=sprintf(_("The article %s will be deleted."),$options['no']);
          $url=$formatter->link_url($formatter->page->urlname,'');
          $header=array("Expires: " . gmdate("D, d M Y H:i:s", 0) . " GMT"); 
          $formatter->send_header($header,$options);
          $formatter->send_title("","",$options);
          print <<<EOF
  <div class='deleteDialog'>
  <form method='post' action='$url' >
  <strong>$msg</strong>
  <table border='0' width='20%'>
  <tbody>
  <tr><th>Password:</th><td><input type='password' style="width:200px" name='pass' /></td></tr>
  </tbody>
  </table>
  <input type='hidden' name='no' value='$options[no]' />
  <input type='hidden' name='p' value='$options[p]' />
  <input type='hidden' name='action' value='bbs' />
  <input type='hidden' name='mode' value='delete' />
  </form>
  </div>
  EOF;
          $formatter->send_footer("",$options);
          return;
      } else if ($options['mode'] == 'edit') {
          $button_preview=$options['button_preview'];
          while ($_SERVER['REQUEST_METHOD']=="POST") {
              $savetext=$options['savetext'];
              $datestamp=$options['datestamp'];
              $subject=$options['subject'];
              $args['subject']=_stripslashes($subject);
              if ($options['id']=='Anonymous') {
                  $name=$options['name'];
                  $pass=$options['pass'];
                  $home=$options['homepage'];
                  $email=$options['email'];
  
                  $args['name']=_stripslashes($name);
                  $args['pass']=_stripslashes($pass);
                  $args['home']=_stripslashes($home);
                  $args['email']=_stripslashes($email);
                  if (!$name) break;
              } else {
                  $args['name']=$options['id'];
              }
  
              $args['no']=$options['no'] ? $options['no']:0;
  
              if ($options['no'] and !$check_pass) break; # edit mode
  
              if (!$args['subject'] or !$savetext) break;
              if ($button_preview) break;
  
              $savetext=preg_replace("/\r\n|\r/", "\n", $savetext);
  
              if ($savetext and $DBInfo->spam_filter) {
                  $text=$savetext;
                  $fts=preg_split('/(\||,)/',$DBInfo->spam_filter);
                  foreach ($fts as $ft) {
                      $text=$formatter->filter_repl($ft,$text,$options);
                  }
                  if ($text != $savetext) {
                      $options['msg'] = _("Sorry, can not save page because some messages are blocked in this wiki.");
                      break;
                  }
              }
  
              $savetext=rtrim($savetext)."\n";
              $args['text']=_stripslashes($savetext);
  
              $MyBBS=macro_BBS($formatter,'',array('new'=>1));
              $myrefresh='';
              if ($DBInfo->use_save_refresh) {
                  $sec=$DBInfo->use_save_refresh - 1;
                  $lnk=$formatter->link_url($formatter->page->urlname,"?action=show");
                  $myrefresh='Refresh: '.$sec.'; url='.qualifiedURL($lnk);
              }
              $header=array("Expires: " . gmdate("D, d M Y H:i:s", 0) . " GMT"); 
              if ($myrefresh) $header[]=$myrefresh;
              $formatter->send_header($header,$options);
              $formatter->send_title("","",$options);
  
              $MyBBS->savePage($args);
              $formatter->send_footer("",$options);
              return;
          }
          #print _bbs_edit_form();
          #print macro_BBSForm($formatter);
          $formatter->send_header("",$options);
          $formatter->send_title("","",$options);
          if ($options['savetext']) {
              $formatter->_raw_body=$options['savetext'];
              if ($options['no'])
                  $hidden="<input type='hidden' name='no' value='$options[no]' />\n".
                          "<input type='hidden' name='p' value='$options[p]' />";
              
          } else if ($options['no']) {
              $MyBBS=macro_BBS($formatter,'',array('new'=>1));
              $nid=$options['no'];
              if ($nid and $MyBBS->hasPage($nid)) {
                  $fields=array('Name','Subject','Date','Email','HomePage','IP','Keywords');
                  include_once('lib/metadata.php');
                  $body=$MyBBS->getPage($nid);
  
                  $boundary= strtoupper(md5("COMMENT")); # XXX
                  list($body,$comments)=explode('----'.$boundary."\n",$body,2); # XXX
                  if ($body != null) {
                      list($metas,$nbody)=_get_metadata($body);
                      if ($nbody) $body=$nbody;
                      $args['name']=$metas['Name'];
                      $args['subject']=$metas['Subject'];
                      $args['home']=$metas['HomePage'];
                      $args['email']=$metas['Email'];
                      $args['text']=$body;
                      $formatter->_raw_body=$body;
                      $hidden="<input type='hidden' name='no' value='$nid' />\n".
                              "<input type='hidden' name='p' value='$options[p]' />";
                  }
              }
          } else
              $formatter->_raw_body="";
  
          if ($options['id']=='Anonymous')
              $formatter->_extra_form=<<<EOF
  <div>
  <table border='0' width='100%'>
  <col width='10%' /><col width='10%' /><col width='10%' /><col width='70%' />
  <tbody>
  <tr><th>Subject:</th><td colspan='3'><input type='text' style="width:80%" name='subject' value='$args[subject]' /></td></tr>
  <tr><th>Name:</th><td><input type='text' name='name' value='$args[name]' /></td>
      <th>Password:</th><td><input type='password' name='pass' /></td></tr>
  <tr><th>Email:</th><td colspan='3'><input type='text' style="width:50%" name='email' value='$args[email]' /></td></tr>
  <tr><th>HomePage:</th><td colspan='3'><input type='text'style="width:50%" name='homepage' value='$args[home]' /></td></tr>
  </tbody>
  </table>
  $hidden
  </div>
  EOF;
          else
              $formatter->_extra_form=<<<EOF
  <table border='0' width='100%'>
  <col width='20%' /><col width='80%' />
  <tbody>
  <tr><th>Subject:</th><td><input type='text' style="width:80%" name='subject' value='$args[subject]' /></td></tr>
  </tbody>
  </table>
  EOF;
          $formatter->_mtime=0;
          $options['simple']=2;
          $options['minor']=1; # do not show a minor checkbox
          print macro_EditText($formatter,$value,$options);
          $formatter->_raw_body=null;
          $formatter->_extra_form=null;
      } else {
          print macro_BBS($formatter,'no='.$options['no']);
      }
  
      $formatter->send_footer("",$options);
      return;
  }
  
  // vim:et:sts=4:sw=4:
  ?>
  
  
  


wkpark      2008/03/22 11:44:51

  moniwiki/imgs/plugin/BBS - New directory

wkpark      2008/03/22 11:45:47

  Added:       imgs/plugin/BBS form_btns.png titlebg.png
  Log:
  add images for the BBS plugin
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/plugin/BBS/form_btns.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/BBS/titlebg.png
  
  	<<Binary file>>
  
  


wkpark      2008/03/22 23:25:02

  Modified:    plugin   bbs.php
  Log:
  fixed get_raw_list() bug.
  css styling.
  add a $use_bbs config option
  
  Revision  Changes    Path
  1.2       +15 -8     moniwiki/plugin/bbs.php
  
  Index: bbs.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/bbs.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- bbs.php	22 Mar 2008 02:42:11 -0000	1.1
  +++ bbs.php	22 Mar 2008 14:25:02 -0000	1.2
  @@ -5,7 +5,7 @@
   //
   // Usage: [[BBS(pagename,count,mode)]]
   //
  -// $Id: bbs.php,v 1.1 2008/03/22 02:42:11 wkpark Exp $
  +// $Id: bbs.php,v 1.2 2008/03/22 14:25:02 wkpark Exp $
   
   function _get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -390,6 +390,7 @@
                   # print '=>'.$check_from.', '.$check_to.', '.$check.'<br />';
                   while(($p=strrpos($l,"\n"))!==false) {
                       $line=substr($l,$p+1).$last;
  +                    $last='';
                       $nline++;
                       $l=substr($l,0,$p);
                       $dumm=explode(",",$line,4);
  @@ -472,8 +473,13 @@
       $conf['data_dir']=$DBInfo->data_dir;
       $conf['dba_type']=$DBInfo->dba_type;
   
  +    if (!$DBInfo->use_bbs) return '[[BBS]]';
  +    #if ($DBInfo->use_bbs == 1);
  +    #if ($DBInfo->use_bbs == 2);
       $MyBBS=new BBS_text($bname,$conf); // XXX
  -    if ($options['new']) return $MyBBS;
  +    if ($options['new'] and $MyBBS) return $MyBBS;
  +
  +    if (!$MyBBS) return '[[BBS]]';
   
       $msg='';
       $btn=array();
  @@ -544,12 +550,13 @@
               $formatter->self_query=$q_save;
   
               $msg.="<div class='bbsArticle'>".
  -            '<div class="head"><h2>'._("No").' '.$nid.': '.$metas['Subject'].'</h2>'.
  -            '<div class="user"><h3>'.$metas['Name'].
  -            ' @ '.$metas['Date'].' ('._mask_hostname($metas['IP'],3).')'.
  -            '</h3></div></div>'.
  +            '<div class="head"><h2>'._("No").' '.$nid.': '.$metas['Subject'].'</h2></div>'.
  +            '<div class="body">'.
  +            '<div class="extra"> @ '.$metas['Date'].' ('._mask_hostname($metas['IP'],3).')</div>'.
  +            '<div class="user"><h3>'.$metas['Name'].'</h3></div>'.
               '<div class="article">'.$body.
  -            "</div>\n</div>";
  +            "</div>\n</div>\n".
  +            '<div class="foot"><div></div></div>'."</div>\n";
               $snid=$nid;
               $btn['edit']=$formatter->link_to("?action=bbs&amp;mode=edit&amp;no=".$nid,
                   '<span>'._("Edit").'</span>','class="button"');
  @@ -567,7 +574,7 @@
                   $comment=$formatter->macro_repl('Comment','usemeta',$opts);
                   unset($opts['no']); # XXX
               }
  -            $msg.=$comment.'<div class="bbsArticleBtn">'.implode(" ",$btn).'</div>';
  +            $msg.='<div class="bbsComment">'.$comment.'</div><div class="bbsArticleBtn">'.implode(" ",$btn).'</div>';
               unset($btn['delete']);
               unset($btn['edit']);
           }
  
  
  


wkpark      2008/03/22 23:25:45

  Modified:    css      _extra.css
  Log:
  some styling added
  
  Revision  Changes    Path
  1.14      +54 -13    moniwiki/css/_extra.css
  
  Index: _extra.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_extra.css,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- _extra.css	22 Mar 2008 02:40:08 -0000	1.13
  +++ _extra.css	22 Mar 2008 14:25:44 -0000	1.14
  @@ -360,11 +360,11 @@
   
   .imgAttach {}
   
  -/* Moniwiki Board plugin */
  +/* Moniwiki BBS plugin */
   table.bbs { width:100%;}
   
   table.bbs thead {
  -  background:url(../imgs/plugin/Board/titlebg.png) repeat-x;
  +  background:url(../imgs/plugin/BBS/titlebg.png) repeat-x;
     color:#000000;
     font-family:Trebuchet MS,Sans-serif;
   }
  @@ -385,24 +385,64 @@
     padding:0.5em;
   }
   
  -.bbsArticle .head h2 { /* heading */
  +.bbsArticle .head, .bbsArticle .head h2 { /* heading */
     background-color:#6DC0F1;
     border-bottom:0px;
     margin-top:0.0em;
  -  padding:5px;
  +  margin-bottom:0.0em;
     font-size:1.2em;
     color:black;
  -  background:url(../imgs/plugin/Board/titlebg.png) repeat-x;
  +  background:url(../imgs/plugin/BBS/articlebg.png) no-repeat;
  +}
  +
  +.bbsArticle .user {
  +}
  +
  +.bbsArticle, .bbsArticle .body {
  +  background:url(../imgs/plugin/BBS/articlebodybg.png) repeat-y;
  +  margin-left:5px;
  +}
  +
  +.bbsArticle .body {
  +  background-position:100% 0pt;
  +  padding-right:15px;
  +  padding-left:5px;
  +}
  +
  +.bbsArticle .foot, .bbsArticle .foot div {
  +  height:15px;
  +  background:url(../imgs/plugin/BBS/articlefootbg.png) no-repeat;
  +}
  +.bbsArticle .foot {
  +  background-position:0px 0px;
  +}
  +.bbsArticle .foot div {
  +  margin-left:15px;
  +  background-position:100% 0px;
  +}
  +
  +.bbsArticle .extra {
  +  float: right;
  +  font-family: Trebuchet MS,Sans-serif;
  +}
  +
  +.bbsArticle .head h2 {
  +  padding:5px;
  +  margin-left:15px;
  +  background-position:100% 0pt;
   }
   
   .bbsArticle h3 { /* heading */
  -  text-align:right;
     border-bottom:0px;
     margin-top:0.0em;
     font-size:1.1em;
     font-weight:normal;
   }
   
  +.bbsComment {
  +  padding:5px;
  +}
  +
   .bbsBtn {
     text-align:right;
   }
  @@ -421,9 +461,6 @@
   td.name { padding-left:0.5em; }
   
   /* from the zeroboard */
  -a.button, span.button, del.button, a.button span, span.button button, span.button input, del.button span {
  -  background-image:url(../imgs/plugin/Board/form_btns.png);
  -}
   
   a.button, span.button, del.button {
     background-position:0px 0px; /* XXX */
  @@ -439,12 +476,13 @@
     padding:0pt 10px 0pt 0pt;
     vertical-align:middle;
   }
  -
   *:first-child + html a.button, *:first-child + html span.button, *:first-child + html del.button {
     position:relative;
     top:-4px;
   }
  -
  +a.button, span.button, del.button, a.button span, span.button button, span.button input, del.button span {
  +  background-image:url(../imgs/plugin/BBS/form_btns.png);
  +}
   a.button span, span.button button, span.button input, del.button span {
     background-color:transparent;
     background-position:100% 0pt;
  @@ -453,12 +491,15 @@
     color:#222222;
     cursor:pointer;
     display:-moz-inline-box;
  +  font-size:0pt; 
     font-size:12px !important;
     font-style:normal;
     height:30px;
     letter-spacing:0pt !important;
  +  line-height:1;
     margin:0pt -16px 0pt 10px;
     padding:8px 20px 0pt 10px;
  +  text-decoration:none;
     white-space:nowrap;
   }
   span.button button {
  @@ -484,8 +525,8 @@
     cursor:default;
   }
   span.button button, span.button input {
  -line-height:2.5;
  -padding-top:0px;
  +  line-height:2.5;
  +  padding-top:0px;
   }
   a.button:hover, span.button:hover, a.button:focus, a.dom-button-focus, span.button-behavior-hover {
     background-position:0pt -60px;
  
  
  


wkpark      2008/03/26 18:21:28

  Modified:    plugin   Comment.php
  Log:
  support captcha
  
  Revision  Changes    Path
  1.29      +52 -2     moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- Comment.php	22 Mar 2008 02:30:27 -0000	1.28
  +++ Comment.php	26 Mar 2008 09:21:28 -0000	1.29
  @@ -1,15 +1,35 @@
   <?php
  -// Copyright 2004-2007 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2004-2008 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a Wiki comment plugin for the MoniWiki
   //
   // Usage: [[Comment]], ?action=comment
   //
   //
  -// $Id: Comment.php,v 1.28 2008/03/22 02:30:27 wkpark Exp $
  +// $Id: Comment.php,v 1.29 2008/03/26 09:21:28 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $DBInfo;
  +
  +  $use_any=0;
  +  if ($DBInfo->use_textbrowsers) {
  +    if (is_string($DBInfo->use_textbrowsers))
  +      $use_any= preg_match('/'.$DBInfo->use_textbrowsers.'/',
  +        $_SERVER['HTTP_USER_AGENT']) ? 1:0;
  +    else
  +      $use_any= preg_match('/Lynx|w3m|links/',
  +        $_SERVER['HTTP_USER_AGENT']) ? 1:0;
  +  }
  +  $captcha='';
  +  if (!$use_any and $DBInfo->use_ticket) {
  +     $seed=md5(base64_encode(time()));
  +     $ticketimg=$formatter->link_url($formatter->page->name,'?action=ticket&amp;__seed='.$seed);
  +     $captcha=<<<EXTRA
  +  <div class='captcha'><span class='captchaImg'><img src="$ticketimg" alt="captcha" /></span><input type="text" size="10" name="check" />
  +<input type="hidden" name="__seed" value="$seed" /></div>
  +EXTRA;
  +  }
  +
     if (!$options['page']) $options['page']=$formatter->page->name;
     if (!$options['action']) $action='comment';
     else $action=$options['action'];
  @@ -84,6 +104,7 @@
       $sig="<input name='nosig' type='checkbox' />"._("Don't add a signature");
     $form.= <<<FORM2
   $hidden
  +$captcha
   $sig
   <input type="hidden" name="action" value="$action" />
   <input type="hidden" name="datestamp" value="$datestamp" />
  @@ -123,6 +144,35 @@
   
     $button_preview=$options['button_preview'];
   
  +
  +  $use_any=0;
  +  if ($DBInfo->use_textbrowsers) {
  +    if (is_string($DBInfo->use_textbrowsers))
  +      $use_any= preg_match('/'.$DBInfo->use_textbrowsers.'/',
  +        $_SERVER['HTTP_USER_AGENT']) ? 1:0;
  +    else
  +      $use_any= preg_match('/Lynx|w3m|links/',
  +        $_SERVER['HTTP_USER_AGENT']) ? 1:0;
  +  }
  +
  +  $ok_ticket=0;
  +  if (!$use_any and $DBInfo->use_ticket) {
  +    if ($options['__seed'] and $options['check']) {
  +      $mycheck=getTicket($options['__seed'],$_SERVER['REMOTE_ADDR'],4);
  +      if ($mycheck==$options['check'])
  +        $ok_ticket=1;
  +      else {
  +        $options['msg']= _("Invalid ticket !");
  +        $button_preview=1;
  +      }
  +    } else {
  +      $options['msg']= _("You need a ticket !");
  +      $button_preview=1;
  +    }
  +  } else {
  +    $ok_ticket=1;
  +  }
  +
     if ($options['savetext']) {
       $savetext=_stripslashes($options['savetext']);
       $savetext=str_replace("\r","",$savetext);
  
  
  


wkpark      2008/03/26 18:21:53

  Modified:    plugin   userform.php
  Log:
  fixed textbrowser related bug.
  
  Revision  Changes    Path
  1.25      +4 -4      moniwiki/plugin/userform.php
  
  Index: userform.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/userform.php,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- userform.php	20 Nov 2007 09:00:07 -0000	1.24
  +++ userform.php	26 Mar 2008 09:21:53 -0000	1.25
  @@ -1,10 +1,10 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2008 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a userform action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: userform.php,v 1.24 2007/11/20 09:00:07 wkpark Exp $
  +// $Id: userform.php,v 1.25 2008/03/26 09:21:53 wkpark Exp $
   
   function do_userform($formatter,$options) {
     global $DBInfo;
  @@ -20,10 +20,10 @@
     if ($DBInfo->use_textbrowsers) {
       if (is_string($DBInfo->use_textbrowsers))
         $use_any= preg_match('/'.$DBInfo->use_textbrowsers.'/',
  -        $_SERVER['HTTP_USER_AGENT']) ? 0:1;
  +        $_SERVER['HTTP_USER_AGENT']) ? 1:0;
       else
         $use_any= preg_match('/Lynx|w3m|links/',
  -        $_SERVER['HTTP_USER_AGENT']) ? 0:1;
  +        $_SERVER['HTTP_USER_AGENT']) ? 1:0;
     }
   
     # e-mail conformation
  
  
  


wkpark      2008/03/26 18:22:34

  Modified:    .        wikilib.php
  Log:
  use "fresh" on do_deletepage()
  
  Revision  Changes    Path
  1.238     +10 -2     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.237
  retrieving revision 1.238
  diff -u -r1.237 -r1.238
  --- wikilib.php	22 Mar 2008 02:38:30 -0000	1.237
  +++ wikilib.php	26 Mar 2008 09:22:33 -0000	1.238
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.237 2008/03/22 02:38:30 wkpark Exp $
  +// $Id: wikilib.php,v 1.238 2008/03/26 09:22:33 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1081,7 +1081,15 @@
     if ($options['name'] == $options['page']) {
       $DBInfo->deletePage($page,$options);
       $title = sprintf(_("\"%s\" is deleted !"), $page->name);
  -    $formatter->send_header("",$options);
  +
  +    $myrefresh='';
  +    if ($DBInfo->use_save_refresh) {
  +      $sec=$DBInfo->use_save_refresh - 1;
  +      $lnk=$formatter->link_url($formatter->page->urlname,"?action=show");
  +      $myrefresh='Refresh: '.$sec.'; url='.qualifiedURL($lnk);
  +    }
  +    $formatter->send_header($myrefresh,$options);
  +
       $formatter->send_title($title,"",$options);
       $formatter->send_footer('',$options);
       return;
  
  
  


wkpark      2008/03/26 19:11:22

  Modified:    css      _extra.css
  Log:
  update for captcha imgs
  
  Revision  Changes    Path
  1.15      +7 -0      moniwiki/css/_extra.css
  
  Index: _extra.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_extra.css,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- _extra.css	22 Mar 2008 14:25:44 -0000	1.14
  +++ _extra.css	26 Mar 2008 10:11:22 -0000	1.15
  @@ -562,3 +562,10 @@
     margin-left:auto; /* Moz */
     margin-right:auto; /* Moz */
   }
  +
  +.captcha { vertical-align:middle; }
  +.captcha input { height:20px; vertical-align:middle; }
  +
  +.captcha img {
  +  vertical-align: middle;
  +}
  
  
  


wkpark      2008/03/29 15:26:25

  Added:       lib      Template_.compiler.php
  Log:
  Template_ engine added
  
  Revision  Changes    Path
  1.1                  moniwiki/lib/Template_.compiler.php
  
  Index: Template_.compiler.php
  ===================================================================
  <?php
  
  /*---------------------------------------------------------------------------
  
    Program  : Template_
    Version  : 2.2.4
    Date     : 2008-03-15
    Author   : Hyeong-Gil Park
    Homepage : http://www.xtac.net
    License  : LGPL (Freeware)
  
    Idea of "PHP document templating system" is from "FastTemplate".
    Idea of "compiling PHP template and template plugin" is from "Smarty".
    Idea of "caching" is from "Smarty, PEAR Cache, and CachedFastTemplate".
  
    Special thanks to Seung-Min Kwon, Jun-Sung Lee, Jin-Wook Cho,
    Soo-Kyeong Hong, Yo-Han Kim, Weon-Soon Lee, Jae-Gyun Yu, Sang-Wook Kang,
    Jae-Sik Kim, Myung-Soo Kim, Jang-Sik Kim, Sam-Goo Lee, Yo-Han Yang,
    Yeong-Gyu Jeon, Byeong-Hoon Kang, and Neotec(Ltd)
    for good suggestion and feedback.
  
   ----------------------------------------------------------------------------
  
    Template_ : PHP document templating system
    Copyright (C) 2003-2008 Hyeong-Gil Park
  
    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public
    License as published by the Free Software Foundation; either
    version 2 of the License, or (at your option) any later version.
  
    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Library General Public License for more details.
  
    - http://www.gnu.org/copyleft/lgpl.html
  
    ---------------------------------------------------------------------------
  
    FastTemplate
      - http://www.thewebmasters.net/
    Smarty
      - http://smarty.php.net/
    Beyond Template Engine (using PHP as template language)
      - http://www.sitepoint.com/article/1218/
    BearTemplate
      - http://template.ze.to/
    Phemplate
      - http://pukomuko.esu.lt/phemplate/
    ASP.NET
      - http://www.asp.net/Tutorials/quickstart.aspx
    JSTL
      - http://java.sun.com/developer/technicalArticles/javaserverpages/faster/
    XSLT
      - http://www.w3.org/TR/xslt
    Velocity
      - http://jakarta.apache.org/velocity/user-guide.html
  
    ---------------------------------------------------------------------------*/
  
  class Template_Compiler_
  {
  	function _compile_template(&$tpl, $tpl_path, $cpl_base, $cpl_head)
  	{
  		$this->compile_dir   =$tpl->compile_dir;
  		$this->compile_ext   =$tpl->compile_ext;
  		$this->skin          =$tpl->skin;
  		$this->template_dir  =$tpl->template_dir;
  		$this->permission    =$tpl->permission or $this->permission = 0777;
  		$this->prefilter     =$tpl->prefilter;
  		$this->postfilter    =$tpl->postfilter;
  		$this->prefilters    =array();
  		$this->postfilters   =array();
  		$this->safe_mode     =$tpl->safe_mode;
  		$this->auto_constant =empty($tpl->auto_constant) ? false : $tpl->auto_constant;
  		$this->tpl_path      =$tpl_path;
  		$this->plugins       =array();
  		$this->func_plugins  =array();
  		$this->obj_plugins   =array();
  		$this->func_list     =array(''=>array());
  		$this->obj_list      =array(''=>array());
  		$this->method_list   =array();
  		$this->rsv_words     =array('index_', 'size_', 'key_', 'value_');
  		$this->key_words     =array('true','false','null');
  		$this->auto_globals  =array('_SERVER','_ENV','_COOKIE','_GET','_POST','_FILES','_REQUEST','_SESSION');
  		$this->constants     =array_keys(get_defined_constants());
  		$this->plugin_dir    =dirname(__FILE__) . '/tpl_plugin';
  		$this->quoted_str	 ='(?:"(?:\\\\.|[^"])*")|(?:\'(?:\\\\.|[^\'])*\')';
  		$this->on_ms		 =substr(__FILE__,0,1)!=='/';
  		$functions           =get_defined_functions();
  		$this->all_functions =array_merge(
  			$functions['internal'],
  			$functions['user'],
  			array('isset','empty','eval','list','array','include','require','include_once','require_once')
  		);
  
  
  	// make compile directory
  
  		if ($this->on_ms) {
  			$cpl_base =  preg_replace('@\\\\+@', '/', $cpl_base);
  			$this->compile_dir =  preg_replace('@\\\\+@', '/', $this->compile_dir);
  		}
  
  		$cpl_path	= $cpl_base.'.'.$this->compile_ext;	// absolute or relative path
  
  		if (!@is_file($cpl_path)) {
  
  			$cpl_rel_path	= substr($cpl_path, strlen($this->compile_dir)+1);
  			$dirs = explode('/', $cpl_rel_path);
  			
  			$path = $this->compile_dir;
  			$once_checked = false;
  			
  			for ($i=0, $s = count($dirs)-1; $i<$s; $i++) {
  				
  				$path .= '/'.$dirs[$i];
  				
  				if ($once_checked or !is_dir($path) and $once_checked=true) {
  
  					if (false === mkdir($path, $this->permission)) {
  						$this->report('Error #1', 'cannot create compile directory <b>'.$path.'</b>');
  						$this->exit_();
  					}
  					if (!$this->on_ms) {
  						@chmod($path, $this->permission);
  					}
  				}
  			}
  		}
  
  	// get plugin file info
  		$plugins = array();
  		$match = array();
  		$d = dir($this->plugin_dir);
  		if (false === $d) {
  			$this->report('Error #2', 'cannot access plugin directory <b>'.$this->plugin_dir.'</b>');
  			$this->exit_();
  		}
  		while ($plugin_file = $d->read()) {
  			$plugin_path = $this->plugin_dir .'/'. $plugin_file;
  			if (!is_file($plugin_path) || !preg_match('/^(object|function|prefilter|postfilter)\.([^.]+)\.php$/i', $plugin_file, $match)) continue;
  			$plugin =strtolower($match[2]);
  			if ($match[1] === 'object') {
  				if (in_array($plugin, $this->obj_plugins)) {
  					$this->report('Error #3', 'plugin file <b>object.'.$match[2].'.php</b> is overlapped');
  					$this->exit_();
  				}
  				$this->obj_plugins[$match[2]] = $plugin;
  			} else {
  				switch ($match[1]) {
  				case 'function'  : $this->func_plugins[$match[2]]=$plugin; break;
  				case 'prefilter' : $this->prefilters[$match[2]]  =$plugin; break;
  				case 'postfilter': $this->postfilters[$match[2]] =$plugin; break;
  				}
  				if (in_array($plugin, $plugins)) {
  					$this->report('Error #4', 'plugin function <b>'.$plugin.'</b> is overlapped');
  					$this->exit_();
  				}
  				$plugins[]=$plugin;
  			}
  		}
  		$this->obj_plugins_flip = array_flip($this->obj_plugins);
  		$this->func_plugins_flip= array_flip($this->func_plugins);
  		$this->prefilters_flip  = array_flip($this->prefilters);
  		$this->postfilters_flip = array_flip($this->postfilters);
  
  	// get safe mode functions
  		if ($this->safe_mode) {
  			$safe_list_file = $this->plugin_dir.'/functions.safe_mode.ini';
  			if (@is_file($safe_list_file)) {
  				$fp=fopen($safe_list_file, 'rb');
  				$fc=fread($fp, filesize($safe_list_file));
  				fclose($fp);
  				$this->safe_mode_functions=preg_split('/\s+/', trim(strtolower(preg_replace('/;[^\n\r]*/','',$fc))));
  			} else {
  				$this->report('Warning #1', 'safe mode : cannot find safe function list file <b>'.$safe_list_file.'</b>', false, false);
  			}
  		}
  
  	// get template
  		$source = '';
  		if ($source_size = filesize($tpl_path)) {
  			$fp_tpl=fopen($tpl_path,'rb');
  			$source=fread($fp_tpl,$source_size);
  			fclose($fp_tpl);
  		}
  	
  	// remove UTF-8 BOM
  
  		$source = preg_replace('/^\xEF\xBB\xBF/', '', $source);
  
  	// disable php tag
  		if ($this->safe_mode) {
  			if (ini_get('short_open_tag')) $safe_map['/<\?/']='&lt;?';
  			else $safe_map['/<\?(php)/i']='&lt;?$1';
  			$safe_map['/(<script\s+language\s*=\s*)("php"|\'php\'|php)(\s*>)/i']='$1"SERVER-SIDE-SCRIPT-DISABLED"$3';
  			if (ini_get('asp_tags')) $safe_map['/<%/']='&lt;?';
  			$source=preg_replace(array_keys($safe_map),array_values($safe_map),$source);
  		}
  
  	// remove comments and get preprocessor
  		$nl_cnt=1;
  		$nl_del_sum=0;
  		$this->nl_del[0]=0;
  		$nl=preg_match('/\r\n|\n|\r/', $source, $match) ? $match[0] : "\r\n";
  		$escape_map=array('\\\\'=>'\\', "\\'"=>"'", '\\"'=>'"', '\\n'=>$nl, '\\t'=>"\t", '\\>'=>'>', '\\g'=>'>');
  		$split=preg_split('/(<!--{\*|\*}-->|{\*|\*})/', $source, -1, PREG_SPLIT_DELIM_CAPTURE);
  		for ($j=0,$i=0,$s=count($split); $i<$s; $i++) {
  			if (!($i%2)) {
  				$nl_cnt+=substr_count($split[$i], $nl);
  				continue;
  			}
  			switch ($split[$i]) {
  			case'<!--{*':
  			case    '{*':
  				if (substr($split[$i+1],0,1)=='\\') $split[$i+1]=substr($split[$i+1],1);
  				elseif (!$j) $j=$i;
  				break;
  			case '*}-->':
  			case '*}'   :
  				if (substr($split[$i-1],-1)==='\\')
  					$split[$i-1]=substr($split[$i-1],0,-1);
  				elseif ($j) {
  					if ($j===1) {
  						for ($def_area='',$k=2; $k<$i; $k++) $def_area.=$split[$k];
  						preg_match_all('@(?:(?:^|\r\n|\n|\r)[ \t]*)\#(prefilter|postfilter)[ \t]+
  							('.$this->quoted_str.'|(?:[^ \t\r\n]+))
  						@ix', $def_area, $match, PREG_PATTERN_ORDER);
  						for ($k=0,$t=count($match[0]); $k<$t; $k++) {
  							if ($this->safe_mode) $match[2][$k]=preg_replace('/<\?(php)/i', '&lt;?$1', $match[2][$k]);
  							if ($match[2][$k][0]==="'") $f_string=strtr(substr($match[2][$k],1,-1), $escape_map);
  							elseif ($match[2][$k][0]==='"') $f_string=strtr(substr($match[2][$k],1,-1), $escape_map);
  							else $f_string=$match[2][$k];
  							if (!trim($f_string)) {
  								$this->$match[1][$k]='';
  							} else {
  								$f_split=preg_split('@(?<!\\\\)\|@', $f_string);
  								if (!trim($f_split[0])) $this->$match[1][$k].=$f_string;
  								elseif (!trim($f_split[count($f_split)-1])) $this->$match[1][$k]=$f_string.$this->$match[1][$k];
  								else $this->$match[1][$k]=$f_string;
  							}
  						}
  						preg_match_all('@(?:(?:^|\r\n|\n|\r)[ \t]*)\#define[ \t]+
  							('.$this->quoted_str.'|(?:\S+))[ \t]+
  							('.$this->quoted_str.'|(?:\S+))
  						@ix', $def_area, $match, PREG_PATTERN_ORDER);
  						for ($k=0,$t=count($match[0]); $k<$t; $k++) {
  							if ($match[1][$k][0]==="'") $key = strtr(substr($match[1][$k],1,-1), $escape_map);
  							elseif ($match[1][$k][0]==='"') $key = strtr(substr($match[1][$k],1,-1), $escape_map);
  							else $key=strtr($match[1][$k], $escape_map);
  							if ($match[2][$k][0]==="'") $val = strtr(substr($match[2][$k],1,-1), $escape_map);
  							elseif ($match[2][$k][0]==='"') $val = strtr(substr($match[2][$k],1,-1), $escape_map);
  							else $val=strtr($match[2][$k], $escape_map);
  							$macro[$key]=$val;
  						}
  					}
  					for ($nl_sub_cnt=0,$k=$j; $k<=$i; $k++) {
  						$nl_sub_cnt += substr_count($split[$k], $nl);
  						$split[$k]='';
  					}
  					$split[$j-1]=preg_replace('/(^|\r\n|\n|\r)[ \t]*$/', '$1', $split[$j-1]);
  					if (preg_match('/^[ \t]*(\r\n|\n|\r)/', $split[$i+1])) {
  						$nl_del_sum++;
  						$split[$i+1]=preg_replace('/^[ \t]*(\r\n|\n|\r)/', '', $split[$i+1]);
  					}
  					$nl_del_sum += $nl_sub_cnt;
  					$nl_cnt -= $nl_sub_cnt;
  					$this->nl_del[$nl_cnt] = $nl_del_sum;
  					$j=0;
  				}
  			}
  		}
  		krsort($this->nl_del);
  		$source=implode('',$split);
  	
  	// apply macro
  		if (!empty($macro)) $source=strtr($source, $macro);
  	
  	// apply prefilter
  		if (trim($this->prefilter)) $source=$this->_filter($source, 'pre');
  	
  	// parse template
  		$this->_control_stack=array();
  		$this->_loop_depth=0;
  		$this->_loop_stack=array();
  		$this->_loop_info=array();
  		$this->_size_info=array();
  		$this->_size_prefix='';
  		$this->in_div ='';
  		$this->nl_cnt = 1;
  		$this->nl = preg_match('/\r\n|\n|\r/', $source, $match) ? $match[0] : "\r\n";
  	
  		$division=array();
  		$divnames=array();
  		$nl = $this->nl;
  		if ($this->safe_mode) {
  			$php_tag = '';
  		} else {
  			$php_tag = '<\?php|(?<!`)\?>';
  			if (ini_get('short_open_tag')) $php_tag .= '|<\?(?!`)';
  			if (ini_get('asp_tags'))  $php_tag .= '|<%(?!`)|(?<!`)%>';
  			$php_tag .= '|';
  			$php_quote_or_comment = '@"(\\\\.|[^"])*"|\'(\\\\.|[^\'])*\'|//[^\r\n]*[\r\n]|/\*.*?\*/@s';
  		}
  		$this->_split=preg_split('/('.$php_tag.'<!--{(?!`)|(?<!`)}-->|{(?!`)|(?<!`)})/i', $source, -1, PREG_SPLIT_DELIM_CAPTURE);
  		for ($this->mark_php=0,$mark_tpl=0,$this->_index=0,$s=count($this->_split); $this->_index<$s; $this->_index++) {
  			if (!($this->_index % 2)) {
  				$this->nl_cnt += substr_count($this->_split[$this->_index], $nl);
  				continue;
  			}
  			switch (strtolower($this->_split[$this->_index])) {
  			case'<?php':
  			case   '<?':
  			case   '<%':
  				if (!$this->mark_php) $this->mark_php = $this->_index;
  				break;
  			case   '?>':
  			case   '%>':
  				if ($this->mark_php) {
  					$phpcode=implode('', array_slice($this->_split, $this->mark_php+1, $this->_index-$this->mark_php-1));
  					if (!preg_match('/"|\'/', implode('',preg_split($php_quote_or_comment, $phpcode)))) {
  						$this->mark_php=0;
  					}
  				}
  				break;
  			case'<!--{':
  			case    '{':
  				$mark_tpl = $this->_index;
  				break;
  			case '}-->':
  			case '}'   :
  				if ($mark_tpl!==$this->_index-2) break;
  				if (!$result=$this->_compile_statement($this->_split[$this->_index-1])) break;
  				if (is_array($result)) {
  					
  					// 1:echo, 2:control, 4:include, 8:division, 16:escape
  					
  					if ($this->mark_php) {
  						if ($result[0]===1) {
  							$this->_split[$this->_index-1]=substr($result[1], 4);
  							$this->_split[$mark_tpl]='';
  							$this->_split[$this->_index]='';
  						} else {
  							$this->report('Error #5', 'template control statement <b>{'.$this->statement.'}</b> in php code is not available', true, true);
  						}
  					} elseif ($result[0]===8) {
  						if ($result[1]) {
  							if (in_array($result[1], $divnames)) {
  								$this->report('Error #6', 'template division id <b>'.$result[1].'</b> is overlapped', true, true);
  								$this->exit_();
  							}
  							$divnames[]=$result[1];
  							$num=count($division);
  							$division[$num]=array('name'=>$result[1],'start'=>$this->_index-1);
  							if ($num && !isset($division[--$num]['end'])) $division[$num]['end']=$this->_index-1;
  							$this->in_div=$result[1];
  							$this->func_list[$result[1]]=array();
  							$this->obj_list[$result[1]]=array();
  						} elseif ($num=count($division) and !isset($division[--$num]['end'])) {
  							$division[$num]['end']=$this->_index-1;
  							$this->in_div='';
  						}
  						$this->_split[$mark_tpl-1] = preg_replace('/\s*$/',  '', $this->_split[$mark_tpl-1]);
  						if (preg_match('/^\s*/', $this->_split[$this->_index+1], $match)) {
  							$this->nl_cnt += (substr_count($match[0], $nl)-1);
  							$this->_split[$this->_index+1] = preg_replace('/^\s*/', $nl, $this->_split[$this->_index+1]);	
  						}
  						$this->_split[$this->_index-1]='';
  						$this->_split[$mark_tpl]='';
  						$this->_split[$this->_index]='';
  					} elseif ($result[0]===16) {
  						$this->_split[$this->_index-1]=$result[1];
  					} else {
  						if ($result[0]&6) $this->_split[$mark_tpl-1] = preg_replace('/(\r\n|\n|\r)[ \t]+$/', '$1', $this->_split[$mark_tpl-1]);
  						if ($result[0]&5 and preg_match('/^[ \t]*(\r\n|\n|\r)/', $this->_split[$this->_index+1])) {
  							$this->nl_cnt--;
  							$this->_split[$this->_index+1] = preg_replace('/^[ \t]*(\r\n|\n|\r)/', '$1$1', $this->_split[$this->_index+1]);
  						}
  						if ($this->_size_prefix) {
  							$result[1] = $this->_size_prefix . $result[1];
  							$this->_size_prefix='';
  						}
  						$this->_split[$this->_index-1]='<?php '.$result[1].'?>';
  						$this->_split[$mark_tpl]='';
  						$this->_split[$this->_index]='';
  					}
  				} elseif ($result === -1) {
  					$erlist[]=array(htmlspecialchars($this->_split[$this->_index-1]), $this->nl_cnt);
  				} elseif ($result === -2 || $result === -3) {
  					if ($result === -2) $this->report('Error #7', 'unexpected directive "<b>/</b>"', true, true);
  					elseif ($result === -3) $this->report('Error #8', 'unexpected directive "<b>:</b>"', true, true);
  					if (!empty($erlist)) foreach ($erlist as $er) $this->report('Warning #2', '<b>{'.$er[0].'}</b> may be syntax error', true, $er[1]);
  					$this->exit_();
  				}
  			}
  		}
  		if (!empty($this->_control_stack)) {
  			$this->report('Error #9', 'template loop or branch is not properly closed by <b>{/}</b>', true);
  			$this->exit_();
  		}
  
  		$source=trim(implode('',$this->_split));
  		$plugins = $this->_get_function().$this->_get_class();
  		$size_of_top_loop = empty($this->_size_info[1]) ? '' : $this->_get_loop_size(1);
  
  		$this->_save_result($cpl_path, $cpl_head, ' */ '.$plugins.$size_of_top_loop.'?>'.$nl, $source);
  
  		if ($division) {
  			if (!isset($division[$num=count($division)-1]['end'])) {
  				$division[$num]['end']=$this->_index;
  			}
  			for ($i=0,$s=count($division); $i<$s; $i++) {
  				$div=&$division[$i];
  				$cpl_path = $cpl_base.'.'.$div['name'].'.'.$this->compile_ext;
  				
  				$source=($i?$nl:'').trim(implode('', array_slice($this->_split, $div['start'], $div['end']-$div['start'])));
  				$plugins = $this->_get_function($div['name']) . $this->_get_class($div['name']);
  				$size_of_top_loop = empty($this->_size_info[$div['name']]) ? '' : $this->_get_loop_size(1, $div['name']);
  
  				$this->_save_result($cpl_path, $cpl_head, ' */ '.$plugins.$size_of_top_loop.'?>'.$nl, $source);
  			}
  		}
  	}
  	function _save_result($cpl_path, $cpl_head, $init_code, $source)
  	{
  
  		if (trim($this->postfilter)) {
  			$source=$this->_filter($source, 'post');
  		}
  
  		$source_size = strlen($cpl_head)+strlen($init_code)+strlen($source) + 9;
  
  		$source = $cpl_head.str_pad($source_size, 9, '0', STR_PAD_LEFT).$init_code.$source;
  
  		$fp_cpl=fopen($cpl_path, 'wb');
  		if (false===$fp_cpl) {
  			$this->report('Error #10', 'cannot write compiled file "<b>'.$cpl_path.'</b>"');
  			$this->exit_();
  		}
  		fwrite($fp_cpl, $source);
  		fclose($fp_cpl);
  
  		if (filesize($cpl_path) != strlen($source)) {
  			
  			@unlink($cpl_path);
  
  			$this->report('Error #35', 'Problem by concurrent access. Just retry after some seconds. "<b>'.$cpl_path.'</b>"');
  			$this->exit_();
  		}
  
  		if (!$this->on_ms) @chmod($cpl_path, $this->permission&~0111);
  	}
  	function _compile_statement($statement)
  	{
  		$match=array();
  		preg_match('/^(\\\\*)\s*(:\?|[=#@?:\/+])?(.*)$/s', $statement, $match);
  		$src=preg_split('/('.$this->quoted_str.')/', $match[3], -1, PREG_SPLIT_DELIM_CAPTURE);
  		for ($i=0;$i<count($src);$i+=2) {
  			if (($comment=strpos($src[$i],'//'))!==false) {
  				$src[$i]=substr($src[$i], 0, $comment);
  				break;
  			}
  		}
  		$src=trim(implode('', array_slice($src, 0, $i+1)));
  		$this->statement=htmlspecialchars($statement);
  		if ($match[1]) {
  			switch ($match[2]) {
  			case '#': return preg_match('/^[A-Z_a-z\x7f-\xff][\w\x7f-\xff]*$/',$src) ? array(16, substr($statement,1)) : 0;
  			case '+': return !strlen($src)||preg_match('/^[A-Z_a-z\x7f-\xff][\w\x7f-\xff]*$/',$src) ? array(16, substr($statement,1)) : 0;
  			case '/': return !strlen($src) ? array(16, substr($statement,1)) : 0;
  			case '?': return $this->_compile_branch($src,1,0)!==0 ? array(16, substr($statement,1)) : 0;
  			case ':': return !strlen($src)||$this->_compile_branch($src,1,1)!==0 ? array(16, substr($statement,1)) : 0;
  			case '' : return $this->_compile_expression($src,1,1)!==0 ? array(16, substr($statement,1)) : 0;
  			default : return $this->_compile_expression($src,1,0)!==0 ? array(16, substr($statement,1)) : 0; // = @ :?
  			}
  		}
  		switch ($match[2]) {
  		case ''  : return (($xpr=$this->_compile_expression($src,0,1))===0) ? 0 : array(1, 'echo '.$xpr);
  		case '=' : return (($xpr=$this->_compile_expression($src,0,0))===0) ? 0 : array(1, 'echo '.$xpr);
  		case ':?': return (($xpr=$this->_compile_expression($src,0,0))===0) ? 0 : array(2, '}elseif('.$xpr.'){'); // deprecated
  		case '+' : return !strlen($src)||preg_match('/^[A-Z_a-z\x7f-\xff][\w\x7f-\xff]*$/', $src) ? array(8, $src) : 0;
  		case '#' : return preg_match('/^[A-Z_a-z\x7f-\xff][\w\x7f-\xff]*$/',$src) ? array(4, '$this->print_("'.$src.'",$TPL_SCP,1);') : 0;
  		case '@' :
  			$xpr = preg_match('/^[A-Z_a-z\x7f-\xff][\w\x7f-\xff]*$/', $src) ? '' : $this->_compile_expression($src,0,0);
  			if ($xpr===0) {
  				return -1;
  			}
  			$d = ++$this->_loop_depth;
  			$this->_control_stack[]='@';
  			$this->_loop_info[$d]=array('index'=>$this->_index-1, 'foreach_bit'=>0);
  			if ($xpr) {
  				$this->_loop_stack[]='*';
  				return array(2, 'if(is_array($TPL_R'.$d.'='.$xpr.')&&!empty($TPL_R'.$d.')){');
  			}
  			if ($d>1 && in_array($src, $this->_loop_stack)) {
  				$this->report('Error #11', 'id of nested loop "<b>'.$src.'</b> in <b>{'.$this->statement.'}</b>" cannot be same as parent loop id', true, true);
  				$this->exit_();
  			}
  			$this->_size_info[$d][$src] = 1;
  			if ($d===1 && $this->in_div) $this->_size_info[$this->in_div][$src] = 1;
  			$this->_loop_stack[]=$src;
  			$this->_loop_info[$src]=$d;
  			return array(2, 'if($TPL_'.$src.'_'.$d.'){');
  		case '?' :
  			if (($stt=$this->_compile_branch($src,0,0))===0) return -1;
  			$this->_control_stack[]= substr($stt,0,2)==='if' ? '?' : '$';
  			return array(2, $stt);
  		case ':' :
  			if (strlen($src)) {
  				if (($stt=$this->_compile_branch($src,0,1))===0) return 0;
  				if (empty($this->_control_stack)) return -3;
  				switch (array_pop($this->_control_stack)) {
  				case '?':
  					if (($xpr=$this->_compile_expression($src,0,0))===0) return 0;
  					$this->_control_stack[]='?';
  					return array(2, '}elseif('.$xpr.'){');
  				case '$':
  					$this->_control_stack[]='$';
  					return array(2, 'break;'.$stt);
  				case 'else':
  					$this->report('Error #12', 'elseif statement "<b>{'.$this->statement.'}</b>" after else statement "{:}" is not available', true, true);
  					$this->_control_stack[]='default';
  					$this->exit_();
  					break;
  				case 'default':
  					$this->report('Error #13', 'case statement "<b>{'.$this->statement.'}</b>" after default statement "{:}" is not available', true, true);
  					$this->_control_stack[]='default';
  					$this->exit_();
  					break;
  				case 'loopelse':
  					$this->report('Error #14', 'elseif statement "<b>{'.$this->statement.'}</b>" after loopelse statement "{:}" is not available', true, true);
  					$this->_control_stack[]='loopelse';
  					$this->exit_();
  					break;
  				default : // loop
  					$this->report('Error #15', '"<b>{'.$this->statement.'}</b>" is not in proper position', true, true);
  					$this->_control_stack[]='@';
  					$this->exit_();
  				}
  			} else {
  				if (empty($this->_control_stack)) return -3;
  				switch (array_pop($this->_control_stack)) {
  				case '?':
  					$this->_control_stack[]='else';
  					return array(2, '}else{');
  				case '$':
  					$this->_control_stack[]='default';
  					return array(2, 'break;default:');
  				case 'else':
  					$this->report('Error #16', 'else statement "<b>{'.$this->statement.'}</b>" after else statement "{:}" is not available', true, true);
  					$this->_control_stack[]='else';
  					$this->exit_();
  					break;
  				case 'default':
  					$this->report('Error #17', 'default statement "<b>{'.$this->statement.'}</b>" after default statement "{:}" is not available', true, true);
  					$this->_control_stack[]='default';
  					$this->exit_();
  					break;
  				case 'loopelse':
  					$this->report('Error #18', 'else statement "<b>{'.$this->statement.'}</b>" after loopelse statement "{:}" is not available', true, true);
  					$this->_control_stack[]='default';
  					$this->exit_();
  					break;
  				default : // loop
  					$this->_close_loop();
  					$this->_control_stack[]='loopelse';
  					return array(2, '}}else{');
  				}
  			}
  		case '/' :
  			if (strlen($src)) return 0;
  			if (empty($this->_control_stack)) return -2;
  			if ('@'===array_pop($this->_control_stack)) {
  				$this->_close_loop();
  				return array(2,'}}');
  			}
  			return array(2,'}');
  		}
  	}
  	function _compile_branch($source, $escape=0, $case=0)
  	{
  		$expression = $source;
  		$case_pos=false;
  		$split=preg_split('/('.$this->quoted_str.')/', $source, -1, PREG_SPLIT_DELIM_CAPTURE);
  		for ($i=0; $i<count($split); $i+=2) {
  			if (($case_pos=strpos($split[$i],':'))!==false) break;
  		}
  		if ($case_pos!==false) {
  			$expression = trim(implode('', array_slice($split, 0, $i))).substr($split[$i], 0, $case_pos);
  			$added_case = trim(substr($split[$i], $case_pos+1) . (count($split)>$i+1 ? trim(implode('', array_slice($split, $i+1))) : ''));
  		}
  		$xpr=$this->_compile_expression($expression, $escape, 0);
  		if ($xpr===0) return 0;
  		if ($case_pos!==false) {
  			$added_xpr=$this->_compile_branch($added_case, $escape, 1);
  			if ($added_xpr===0) return 0;
  			if ($escape) return 1;
  			return $case ? 'case '.$xpr.':'.$added_xpr : 'switch('.$xpr.'){'.$added_xpr;
  		}
  		if ($escape) return 1;
  		return $case ? 'case '.$xpr.':' : 'if('.$xpr.'){';
  	}
  	function _close_loop()
  	{
  		$loop_id = array_pop($this->_loop_stack);
  		$depth = $this->_loop_depth--;
  		$info = &$this->_loop_info[$depth];
  
  		// 1: key_, 2: value_, 4: index_, 8: size_
  		$_key = $info['foreach_bit']&1 ? '$TPL_K'.$depth.'=>' : '';
  		if ($info['foreach_bit']&4) {
  			$_idx1='$TPL_I'.$depth.'=-1;';
  			$_idx2='$TPL_I'.$depth.'++;';
  		} else {
  			$_idx1='';
  			$_idx2='';
  		}
  		$_sub_loop_size = empty($this->_size_info[$depth+1]) ? '' : $this->_get_loop_size($depth+1);
  		$split = &$this->_split[$info['index']];
  		$split = substr($split, 0, -2);
  		if ($loop_id==='*') {
  			$_size = $info['foreach_bit']&8 ? '$TPL_S'.$depth.'=count($TPL_R'.$depth.');' : '';
  			$split.= $_size.$_idx1.'foreach($TPL_R'.$depth.' as '.$_key.'$TPL_V'.$depth.'){'.$_idx2.$_sub_loop_size.'?>';
  		} else {
  			$split .= $_idx1.'foreach('.$this->_get_loop_array($loop_id, $depth).' as '.$_key.'$TPL_V'.$depth.'){'.$_idx2.$_sub_loop_size.'?>';
  		}
  		unset($this->_size_info[$depth+1], $this->_loop_info[$depth], $this->_loop_info[$loop_id]);
  	}
  	function _get_loop_size($depth, $div='')
  	{
  		$size  = '';
  		$array = $div ? $this->_size_info[$div] : $this->_size_info[$depth];
  		foreach ($array as $loop_id => $val) {
  			if (is_array($val)) {
  				// $this->report('Warning #3', '<b>'.$loop_id.'.size_</b> in <b>{'.$val[0].'}</b> has not corresponding loop', true, $val[1]);
  				// // For "size_" instead of count().
  			}
  			$loop_array = $this->_get_loop_array($loop_id, $depth);
  			$size .= $this->nl.'$TPL_'.$loop_id.'_'.$depth.'=empty('.$loop_array.')||!is_array('.$loop_array.')?0:count('.$loop_array.');';
  		}
  		return $size;
  	}
  	function _get_loop_array($loop_id, $depth)
  	{
  		if ($depth===1) {
  			if ($loop_id[0]==='_') {
  				if ($this->safe_mode) {
  					$this->report('Error #19', 'safe mode : global variable <b>'.$loop_id.'</b> in <b>{'.$this->statement.'}</b> is not available', true, true);
  					$this->exit_();
  				}
  				return in_array($loop_id, $this->auto_globals) ? '$'.$loop_id : '$GLOBALS["'.substr($loop_id, 1).'"]';
  			}
  			return '$TPL_VAR["'.$loop_id.'"]';
  		}
  		return '$TPL_V'.($depth-1).'["'.$loop_id.'"]';
  	}
  	function _compile_expression($expression, $escape=0, $no_directive=0)
  	{
  		if (!strlen($expression)) return 0;
  		$var_state=array(0,'');					// 0:
  		$par_stack=array();
  		$func_list=array();
  		$this->exp_object =array();
  		$this->exp_error  =array();
  		$this->exp_loopvar=array();
  		$this->_outer_size=array();
  		$number_used=0;
  		$prev_is_operand=0;
  		$prev_is_func=0;
  		$m=array();
  		for ($xpr='',$i=0; strlen($expression); $expression=substr($expression, strlen($m[0])),$i++) {	// 
  			if (!preg_match('/^
  				((?:\.\s*)+)
  				|(?:([A-Z_a-z\x7f-\xff][\w\x7f-\xff]*)\s*(\[|\.|\(|\-\>)?)
  				|(?:(\])\s*(\-\>|\.|\[)?)
  				|((?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+\-]?\d+)?)
  				|('.$this->quoted_str.')
  				|(===|!==|\+\+|--|\+\.|<<|>>|<=|>=|==|!=|&&|\|\||[,+\-*\/%&^~|<>()!])
  				|(\s+)
  				|(.+)
  			/ix', $expression, $m)) return 0;
  			if (!empty($m[10])) {	// (.+)
  				return 0;
  			} elseif ($m[1]) {		// ((?:\.\s*)+)         
  				if ($prev_is_operand || $var_state[0]) return 0;
  				$prev_is_operand = 1;
  				$var_state=array(1,preg_replace('/\s+/','',$m[1]));
  			} elseif ($m[2]) {		// ([A-Z_a-z\x7f-\xff][\w\x7f-\xff]*)
  				if (empty($m[3])) $m[3]='';		// (\[|\.|\(|\-\>)
  				switch ($m[3]) {
  				case ''  :
  					switch ($var_state[0]) {
  					case 0:
  						if ($prev_is_operand) return 0;
  						$prev_is_operand = 1;
  						if (in_array(strtolower($m[2]),$this->key_words) || $this->auto_constant && in_array($m[2], $this->constants)) {
  							$xpr.= $m[2];
  						} elseif ($m[2]==='this') {
  							$xpr.= '$this';
  						} elseif ($m[2]==='tpl_') {
  							$xpr.= '$TPL_TPL';
  						} elseif ($m[2][0]==='_') {
  							if ($this->safe_mode) $this->exp_error[]=array(4, $m[2]);
  							$xpr.= in_array($m[2], $this->auto_globals) ? '$'.$m[2] : '$GLOBALS["'.substr($m[2],1).'"]';
  						} else {
  							$xpr.= '$TPL_VAR["'.$m[2].'"]';
  						}
  						break;
  					case 1:
  						$xpr.=$this->_compile_array($var_state[1].$m[2], 'stop');
  						break;
  					case 2:
  						$xpr.= $var_state[1]==='obj' ? $m[2] : '["'.$m[2].'"]';
  						break;
  					}
  					$var_state=array(0,'');
  					break;
  				case '(' :
  					if ($var_state[0]) {
  						if ($var_state[1]!=='obj') return 0;
  					} else {
  						if ($no_directive) return 0;
  						$func = strtolower($m[2]);
  						if (in_array($func, $this->func_plugins)) {
  							$func_list[$func] = $this->nl_cnt;
  						} else {
  							if ($this->safe_mode) in_array($func, $this->safe_mode_functions) or $this->exp_error[]=array(5, $m[2]);
  							else in_array($func, $this->all_functions) or $this->exp_error[]=array(7, $m[2]);
  						}
  					}
  					$prev_is_operand=0;
  					$prev_is_func=1;
  					$par_stack[]='f';
  					$var_state=array(0,'');
  					$xpr.=$m[2].'(';
  					break;
  				case '[' :
  					switch ($var_state[0]) {
  					case 0:
  						if ($prev_is_operand) return 0;
  						$xpr.=$this->_compile_array($m[2]).'[';
  						break;
  					case 1:
  						$xpr.=$this->_compile_array($var_state[1].$m[2]).'[';
  						break;
  					case 2:
  						$xpr.= $var_state[1]==='obj' ? $m[2].'[' : '["'.$m[2].'"][';
  						break;
  					}
  					$par_stack[]='[';
  					$prev_is_operand=0;
  					$prev_is_func=0;
  					$var_state=array(0, '');
  					break;
  				case '.' :
  					switch ($var_state[0]) {
  					case 0:
  						if ($prev_is_operand) return 0;
  						$prev_is_operand=1;
  						$var_state=array(1, $m[2].'.');
  						break;
  					case 1:
  						$xpr.=$this->_compile_array($var_state[1].$m[2]);
  						$var_state=array(2, '');
  						break;
  					case 2:
  						$xpr.= $var_state[1]==='obj' ? $m[2] : '["'.$m[2].'"]';
  						break;
  					}
  					break;
  				case '->':
  					switch ($var_state[0]) {
  					case 0:
  						if ($prev_is_operand) return 0;
  						$prev_is_operand = 1;
  						if (in_array($m[2], $this->_loop_stack)) {
  							$xpr .= '$TPL_V'.$this->_loop_info[$m[2]].'->';
  							// need not check safe_mode.
  						} elseif ($m[2]==='this') {
  							if ($this->safe_mode) $this->exp_error[]=array(6, $m[2]);
  							$xpr .= '$this->';
  						} elseif ($m[2][0]==='_') {
  							if ($this->safe_mode) $this->exp_error[]=array(4, $m[2]);
  							$xpr .= '$GLOBALS["'.substr($m[2],1).'"]->';
  						} else {
  							$xpr .= '$TPL_VAR["'.$m[2].'"]->';
  						}
  						break;
  					case 1:
  						$xpr.=$this->_compile_array($var_state[1].$m[2], 'obj').'->';
  						break;
  					case 2:
  						$xpr.=($var_state[1]==='obj' ? $m[2] : '["'.$m[2].'"]').'->';
  						break;
  					}
  					$var_state=array(2,'obj');
  					break;
  				}
  			} elseif ($m[4]) {	//	(\])
  				if ($var_state[0] || !$prev_is_operand || empty($par_stack) || array_pop($par_stack)!=='[') return 0;
  				if (empty($m[5])) $m[5]='';
  				switch ($m[5]) {
  				case ''  :
  					$xpr.=']';
  					break;
  				case '->':
  					$xpr.=']->';
  					$var_state=array(2,'obj');
  					break;
  				case '.' :
  					$xpr.=']';
  					$var_state=array(2,'');
  					break;
  				case '[' :
  					$xpr.='][';
  					$par_stack[]='[';
  					$prev_is_operand=0;
  					$prev_is_func=0;
  					break;
  				}
  			} elseif ($m[6]||$m[6]==='0') {			// ((?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+\-]?\d+)?)
  				if ($prev_is_operand) return 0;
  				$xpr .= ' '.$m[6];
  				$prev_is_operand = 1;
  				$number_used = 1;
  			} elseif ($m[7]) {
  				if ($prev_is_operand||preg_match('/ [+\-]$/',$xpr)) return 0;
  				$xpr=preg_replace('/\+$/','.',$xpr) . strtr($m[7],array('``'=>'`', '{`'=>'{', '`}'=>'}', '<?`'=>'<?', '`?>'=>'?>', '<%`'=>'<%', '`%>'=>'%>'));
  				$prev_is_operand = 1;
  			} elseif ($m[8]) {
  				if ($var_state[0]) return 0;
  				switch ($m[8]) {
  				case'++':
  				case'--':
  					return 0;
  				case ',':
  					if (!$prev_is_operand || empty($par_stack) || $par_stack[count($par_stack)-1]!=='f') return 0;
  					$prev_is_operand=0;
  					break;
  				case '(':
  					if ($prev_is_operand) return 0;
  					$par_stack[]='p';
  					break;
  				case ')':
  					if (!$prev_is_operand && !$prev_is_func || empty($par_stack) || array_pop($par_stack)==='[') return 0;
  					$prev_is_operand=1;
  					break;
  				case '!':
  				case '~':
  					if ($prev_is_operand) return 0;
  					break;
  				case '-':
  					if ($prev_is_operand) $prev_is_operand=0;
  					else $m[8]=' -';
  					break;
  				case '+':
  					if (preg_match('/["\']$/', $xpr)) {
  						$m[8]='.';
  						$prev_is_operand=0;
  					} else {
  						if ($prev_is_operand) $prev_is_operand=0;
  						else $m[8]=' +';
  					}
  					break;
  				case '+.':
  					$m[8]='.';
  				default	:
  					if (!$prev_is_operand) return 0;
  					$prev_is_operand=0;
  				}
  				$xpr .= $m[8];
  				$prev_is_func=0;
  			} else {
  				continue;
  			}
  		}
  		if (!empty($par_stack) || !$prev_is_operand || $var_state[0] || $no_directive && $i===1 && $number_used) return 0;
  		if ($escape) return 1;
  		if (!empty($this->exp_error)) {
  			foreach ($this->exp_error as $error) {
  				switch ($error[0]) {
  				case 1:
  					$this->report('Error #20', '<b>p.</b> in <b>{'.$this->statement.'}</b> is reserved variable for accessing object plugins',true,true);
  					$this->exit_();
  					break;
  				case 2:
  					$this->report('Error #21', '<b>c.</b> in <b>{'.$this->statement.'}</b> is reserved variable for accessing constants',true,true);
  					$this->exit_();
  					break;
  				case 3:
  					$this->report('Warning #4', 'loop var <b>'.$error[1].'</b> in <b>{'.$this->statement.'}</b> is not in proper loop',true,true);
  					break;
  				case 4:
  					$this->report('Error #22', 'safe mode : global variable <b>'.$error[1].'</b> in <b>{'.$this->statement.'}</b> is not available',true,true);
  					$this->exit_();
  				case 5:
  					$this->report('Error #23', 'safe mode : function <b>'.$error[1].'()</b> in <b>{'.$this->statement.'}</b> is not registered',true,true); 
  					$this->exit_();
  				case 6:
  					$this->report('Error #24', 'safe mode : <b>this-></b> in <b>{'.$this->statement.'}</b> is not available',true,true);
  					$this->exit_();
  				case 7:
  					$this->report('Error #25', 'call to undefined function <b>'.$error[1].'</b> in <b>{'.$this->statement.'}</b>',true,true);
  					$this->exit_();
  				case 8:
  					$this->report('Error #26', 'cannot find plugin file for object <b>'.$error[1].'</b> in <b>{'.$this->statement.'}</b>',true,true);
  					$this->exit_();
  				}
  			}
  			return 0;
  		}
  		foreach ($this->_outer_size as $loop_id=>$depth) {
  			if ($depth===1 && $this->in_div) $this->_size_info[$this->in_div][$loop_id] = 1;
  			if (empty($this->_size_info[$depth][$loop_id])) {
  				$this->_size_info[$depth][$loop_id] = array($this->statement, $this->nl_cnt);
  			}
  		}
  		foreach ($this->exp_loopvar as $depth=>$set) {
  			$this->_loop_info[$depth]['foreach_bit'] |= $set;
  		}
  		if ($func_list) {
  			$this->_set_function($func_list);
  			if ($this->in_div) $this->_set_function($func_list, $this->in_div);
  		}
  		if ($this->exp_object) {
  			$this->_set_class($this->exp_object);
  			if ($this->in_div) $this->_set_class($this->exp_object, $this->in_div);
  		}
  		return $xpr;
  	}
  	function _compile_array($subject, $end='')
  	{
  		if (preg_match('/^\.+/', $subject, $match)) { // ..loop
  			$depth=strlen($match[0]);
  			if ($this->_loop_depth < $depth) {
  				$this->exp_error[]=array(3, $subject);
  				return '';
  			}
  			$id=$this->_loop_stack[$depth-1];
  			$var=substr($subject, $depth);
  			$el='["'.$var.'"]';
  		} else {
  			if ($D=strpos($subject,'.')) { // id.var
  				$id=substr($subject,0,$D);
  				$var=substr($subject,$D+1);
  				$el='["'.$var.'"]';
  				if ($id==='p' || $id==='P') { // p.object
  					if (!$end) {
  						$this->exp_error[]=array(1, $subject);
  						return '';
  					}
  					$obj = strtolower($var);
  					if (in_array($obj, $this->obj_plugins)) {
  						$this->exp_object[$obj] = $this->nl_cnt;
  					} else {
  						$this->exp_error[]=array(8, $subject);
  					}
  					return '$TPL_'.$obj.'_OBJ';
  				} elseif ($id==='c' || $id==='C') { // c.constant
  					if ($end!=='stop') $this->exp_error[]=array(2, $subject);
  					return $var;
  				} elseif (in_array($id, $this->_loop_stack)) { // loop.var
  					$depth=$this->_loop_info[$id];
  				} elseif ($var==='size_') { // outside.size_
  					if ($end!=='stop') $this->exp_error[]=array(-1,$subject);
  					$depth = $this->_loop_depth+1;
  					$this->_outer_size[$id] = $depth;
  					return '$TPL_'.$id.'_'.$depth;
  				} elseif (in_array($var, $this->rsv_words)) { // array.key_ , value_ , index_
  					$this->exp_error[]=array(3, $subject);
  					return '';
  				}
  			} else { // id[
  				$id=$subject;
  				$var='';
  				$el='';
  				if (in_array($id, $this->_loop_stack)) $depth=$this->_loop_info[$id];
  			}
  			if (empty($depth)) { // not loop
  				if ($id[0]==='_') {
  					if ($this->safe_mode) {
  						$this->exp_error[]=array(4, $subject);
  						return 0;
  					}
  					if (in_array($id, $this->auto_globals)) return '$'.$id.$el;
  					return '$GLOBALS["'.substr($id,1).'"]'.$el;
  				}
  				return '$TPL_VAR["'.$id.'"]'.$el;
  			}
  		}
  		switch ($var) {
  		case 'key_':
  			if ($end!=='stop') $this->exp_error[]=array(-1,$subject);
  			elseif (isset($this->exp_loopvar[$depth])) $this->exp_loopvar[$depth] |= 1;
  			else $this->exp_loopvar[$depth] = 1;
  			return '$TPL_K'.$depth;
  		case 'value_':
  			if (isset($this->exp_loopvar[$depth])) $this->exp_loopvar[$depth] |= 2;
  			else $this->exp_loopvar[$depth] = 2;
  			return '$TPL_V'.$depth;
  		case 'index_':
  			if ($end!=='stop') $this->exp_error[]=array(-1,$subject);
  			elseif (isset($this->exp_loopvar[$depth])) $this->exp_loopvar[$depth] |= 4;
  			else $this->exp_loopvar[$depth] = 4;
  			return '$TPL_I'.$depth;
  		case 'size_':
  			if ($end!=='stop') $this->exp_error[]=array(-1,$subject);
  			elseif (isset($this->exp_loopvar[$depth])) $this->exp_loopvar[$depth] |= 8;
  			else $this->exp_loopvar[$depth] = 8;
  			return $id==='*' ? '$TPL_S'.$depth : '$TPL_'.$id.'_'.$depth;
  		default :
  			return '$TPL_V'.$depth.$el;
  		}
  	}
  	function _set_function($func_list, $divname='')
  	{
  		$prev_list=array_keys($this->func_list[$divname]);
  		foreach ($func_list as $func => $line) {
  			if (!in_array($func, $prev_list)) $this->func_list[$divname][$func]=$line;
  		}
  	}
  	function _get_function($divname='')
  	{
  		$functions=array();
  		foreach ($this->func_list[$divname] as $func => $line) {
  			$func_name = $this->func_plugins_flip[$func];
  			if (!function_exists($func)) {
  				$func_path=$this->plugin_dir.'/function.'.$func_name.'.php';
  				if (false===include $func_path) {
  					$this->report('Error #27', 'error in plugin <b>'.$func_path.'</b>', true, $line);
  					$this->exit_();
  				} elseif (!function_exists($func)) {
  					$this->report('Error #28', 'cannot find function <b>'.$func.'()</b> in plugin <b>'.$func_path.'</b>', true, $line);
  					$this->exit_();
  				}
  			}
  			$functions[]='"'.$func_name.'"';
  		}
  		return $functions ? ' $this->include_('.implode(',',$functions).');' : '';
  	}
  	function _set_class($obj_list, $divname='')
  	{
  		$prev_list=array_keys($this->obj_list[$divname]);
  		foreach ($obj_list as $obj => $line) {
  			if (!in_array($obj, $prev_list)) $this->obj_list[$divname][$obj] = $line;
  		}
  	}
  	function _get_class($divname='')
  	{
  		$init_obj = '';
  		foreach ($this->obj_list[$divname] as $obj => $line) {
  			$obj_name=$this->obj_plugins_flip[$obj];
  			$class = 'tpl_object_'.$obj_name;
  			if (!class_exists($class, false)) {
  				$class_path = $this->plugin_dir.'/object.'.$obj_name.'.php';
  				if (false===include $class_path) {
  					$this->report('Error #27', 'error in plugin <b>'.$class_path.'</b>', true, $line);
  					$this->exit_();
  				} elseif (!class_exists($class, false)) {
  					$this->report('Error #29', 'cannot find class <b>'.$class.'()</b> in plugin <b>'.$class_path.'</b>', true, $line);
  					$this->exit_();
  				}
  			}
  			$init_obj .= '$TPL_'.$obj.'_OBJ=&$this->new_("'.$obj_name.'");';
  		}
  		return $init_obj;
  	}
  	function _filter($source, $type)
  	{
  		$func_split=preg_split('/\s*(?<!\\\\)\|\s*/', trim($this->{$type.'filter'}));
  		$func_sequence=array();
  		for ($i=0,$s=count($func_split); $i<$s; $i++) if ($func_split[$i]) $func_sequence[]=str_replace('\\|', '|', $func_split[$i]);
  		if (!empty($func_sequence)) {
  			for ($i=0,$s=count($func_sequence); $i<$s; $i++) {
  				$func_args=preg_split('/\s*(?<!\\\\)\&\s*/', $func_sequence[$i]);
  				for ($j=1,$k=count($func_args); $j<$k; $j++) {
  					$func_args[$j]=str_replace('\\&', '&', trim($func_args[$j]));
  				}
  				$func = strtolower(array_shift($func_args));
  				$func_name   = $this->{$type.'filters_flip'}[$func];
  				array_unshift($func_args, $source, $this);
  				$func_file = $this->plugin_dir.'/'.$type.'filter.'.$func_name.'.php';
  				if (!in_array($func, $this->{$type.'filters'})) {
  					$this->report('Error #30', 'cannot find '.$type.'filter file <b>'.$func_file.'</b>', true);
  					$this->exit_();
  				}
  				if (!function_exists($func_name)) {
  					if (false===include_once $func_file) {
  						$this->report('Error #31', 'error in '.$type.'filter <b>'.$func_file.'</b>', true);
  						$this->exit_();
  					} elseif (!function_exists($func_name)) {
  						$this->report('Error #32', 'filter function <b>'.$func_name.'()</b> is not found in <b>'.$func_file.'</b>');
  						$this->exit_();
  					}
  				}
  				$source=call_user_func_array($func_name, $func_args);
  			}
  		}
  		return $source;
  	}
  	function report($type, $msg, $file=false, $line=false)
  	{
  		$report = "<br />\n".'<span style="font:12px tahoma,arial;color:#0071DC;background:white">Template_ Compiler '.$type.': '.$msg;
  		if ($file) $report.=' in <b>'.(is_string($file)?$file:$this->tpl_path).'</b>';
  		if ($line) {
  			$line=is_int($line)?$line:$this->nl_cnt;
  			foreach ($this->nl_del as $key=>$val) if ($key<=$line) break;
  			$report.=' on line <b>'.($line+$val).'</b>';
  		}
  		echo $report."</span><br />\n";
  	}
  	function exit_()
  	{
  		// Write code for printing out when compile fails.
  		// e.g. echo "<input type=button value='go back' onClick='history.go(-1)'>";
  		exit;
  	}
  }
  ?>
  
  
  


wkpark      2008/03/29 15:27:20

  Modified:    lib      Template_.compiler.php
  Log:
  customize Template_ for MoniWiki
  
  Revision  Changes    Path
  1.2       +86 -128   moniwiki/lib/Template_.compiler.php
  
  Index: Template_.compiler.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/Template_.compiler.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Template_.compiler.php	29 Mar 2008 06:26:25 -0000	1.1
  +++ Template_.compiler.php	29 Mar 2008 06:27:19 -0000	1.2
  @@ -1,4 +1,19 @@
   <?php
  +// Copyright 2008 Won-Kyu Park <wkpark at kldp.org>
  +// All rights reserved. Distributable under GPL see COPYING
  +// A modified version of the Template_ for MoniWiki
  +//
  +// Date: 2008-03-28
  +// Name: A modified Template_ for MoniWiki
  +// Description: Template_ module (division syntax is disabled)
  +// URL: MoniWiki:Template_
  +// Version: $Revision: 1.2 $
  +// Depend: 1.1.3
  +// License: LGPL
  +//
  +// Usage: please see http://www.xtac.net
  +//
  +// $Id: Template_.compiler.php,v 1.2 2008/03/29 06:27:19 wkpark Exp $
   
   /*---------------------------------------------------------------------------
   
  @@ -59,14 +74,14 @@
   
     ---------------------------------------------------------------------------*/
   
  +define('__TEMPLATE_UNDERSCORE_VER__','2.2.4-mw');
  +
   class Template_Compiler_
   {
  -	function _compile_template(&$tpl, $tpl_path, $cpl_base, $cpl_head)
  +	function _compile_template(&$tpl, $source, $params=array())
   	{
   		$this->compile_dir   =$tpl->compile_dir;
   		$this->compile_ext   =$tpl->compile_ext;
  -		$this->skin          =$tpl->skin;
  -		$this->template_dir  =$tpl->template_dir;
   		$this->permission    =$tpl->permission or $this->permission = 0777;
   		$this->prefilter     =$tpl->prefilter;
   		$this->postfilter    =$tpl->postfilter;
  @@ -75,6 +90,9 @@
   		$this->safe_mode     =$tpl->safe_mode;
   		$this->auto_constant =empty($tpl->auto_constant) ? false : $tpl->auto_constant;
   		$this->tpl_path      =$tpl_path;
  +		$this->params        =$params;
  +		$this->data_dir      =$tpl->data_dir;
  +		$this->plugin_dir    =$tpl->plugin_dir;
   		$this->plugins       =array();
   		$this->func_plugins  =array();
   		$this->obj_plugins   =array();
  @@ -85,7 +103,6 @@
   		$this->key_words     =array('true','false','null');
   		$this->auto_globals  =array('_SERVER','_ENV','_COOKIE','_GET','_POST','_FILES','_REQUEST','_SESSION');
   		$this->constants     =array_keys(get_defined_constants());
  -		$this->plugin_dir    =dirname(__FILE__) . '/tpl_plugin';
   		$this->quoted_str	 ='(?:"(?:\\\\.|[^"])*")|(?:\'(?:\\\\.|[^\'])*\')';
   		$this->on_ms		 =substr(__FILE__,0,1)!=='/';
   		$functions           =get_defined_functions();
  @@ -130,45 +147,11 @@
   			}
   		}
   
  -	// get plugin file info
  -		$plugins = array();
  -		$match = array();
  -		$d = dir($this->plugin_dir);
  -		if (false === $d) {
  -			$this->report('Error #2', 'cannot access plugin directory <b>'.$this->plugin_dir.'</b>');
  -			$this->exit_();
  -		}
  -		while ($plugin_file = $d->read()) {
  -			$plugin_path = $this->plugin_dir .'/'. $plugin_file;
  -			if (!is_file($plugin_path) || !preg_match('/^(object|function|prefilter|postfilter)\.([^.]+)\.php$/i', $plugin_file, $match)) continue;
  -			$plugin =strtolower($match[2]);
  -			if ($match[1] === 'object') {
  -				if (in_array($plugin, $this->obj_plugins)) {
  -					$this->report('Error #3', 'plugin file <b>object.'.$match[2].'.php</b> is overlapped');
  -					$this->exit_();
  -				}
  -				$this->obj_plugins[$match[2]] = $plugin;
  -			} else {
  -				switch ($match[1]) {
  -				case 'function'  : $this->func_plugins[$match[2]]=$plugin; break;
  -				case 'prefilter' : $this->prefilters[$match[2]]  =$plugin; break;
  -				case 'postfilter': $this->postfilters[$match[2]] =$plugin; break;
  -				}
  -				if (in_array($plugin, $plugins)) {
  -					$this->report('Error #4', 'plugin function <b>'.$plugin.'</b> is overlapped');
  -					$this->exit_();
  -				}
  -				$plugins[]=$plugin;
  -			}
  -		}
  -		$this->obj_plugins_flip = array_flip($this->obj_plugins);
  -		$this->func_plugins_flip= array_flip($this->func_plugins);
  -		$this->prefilters_flip  = array_flip($this->prefilters);
  -		$this->postfilters_flip = array_flip($this->postfilters);
  +		$this->register_plugins_all();
   
   	// get safe mode functions
   		if ($this->safe_mode) {
  -			$safe_list_file = $this->plugin_dir.'/functions.safe_mode.ini';
  +			$safe_list_file = $this->plugin_dir.'/function/safe_mode.ini';
   			if (@is_file($safe_list_file)) {
   				$fp=fopen($safe_list_file, 'rb');
   				$fc=fread($fp, filesize($safe_list_file));
  @@ -180,12 +163,14 @@
   		}
   
   	// get template
  -		$source = '';
  -		if ($source_size = filesize($tpl_path)) {
  -			$fp_tpl=fopen($tpl_path,'rb');
  -			$source=fread($fp_tpl,$source_size);
  -			fclose($fp_tpl);
  -		}
  +		if (empty($source) and $params['path'] and file_exists($params['path'])) {
  +			$source = '';
  +			if ($source_size = filesize($params['path'])) {
  +                       		$fp=fopen($params['path'],'rb');
  +                       		$source=fread($fp,filesize($params['path']));
  +                       		fclose($fp);
  +			}
  +               	}
   	
   	// remove UTF-8 BOM
   
  @@ -288,11 +273,9 @@
   		$this->_loop_info=array();
   		$this->_size_info=array();
   		$this->_size_prefix='';
  -		$this->in_div ='';
   		$this->nl_cnt = 1;
   		$this->nl = preg_match('/\r\n|\n|\r/', $source, $match) ? $match[0] : "\r\n";
   	
  -		$division=array();
   		$divnames=array();
   		$nl = $this->nl;
   		if ($this->safe_mode) {
  @@ -346,30 +329,6 @@
   							$this->report('Error #5', 'template control statement <b>{'.$this->statement.'}</b> in php code is not available', true, true);
   						}
   					} elseif ($result[0]===8) {
  -						if ($result[1]) {
  -							if (in_array($result[1], $divnames)) {
  -								$this->report('Error #6', 'template division id <b>'.$result[1].'</b> is overlapped', true, true);
  -								$this->exit_();
  -							}
  -							$divnames[]=$result[1];
  -							$num=count($division);
  -							$division[$num]=array('name'=>$result[1],'start'=>$this->_index-1);
  -							if ($num && !isset($division[--$num]['end'])) $division[$num]['end']=$this->_index-1;
  -							$this->in_div=$result[1];
  -							$this->func_list[$result[1]]=array();
  -							$this->obj_list[$result[1]]=array();
  -						} elseif ($num=count($division) and !isset($division[--$num]['end'])) {
  -							$division[$num]['end']=$this->_index-1;
  -							$this->in_div='';
  -						}
  -						$this->_split[$mark_tpl-1] = preg_replace('/\s*$/',  '', $this->_split[$mark_tpl-1]);
  -						if (preg_match('/^\s*/', $this->_split[$this->_index+1], $match)) {
  -							$this->nl_cnt += (substr_count($match[0], $nl)-1);
  -							$this->_split[$this->_index+1] = preg_replace('/^\s*/', $nl, $this->_split[$this->_index+1]);	
  -						}
  -						$this->_split[$this->_index-1]='';
  -						$this->_split[$mark_tpl]='';
  -						$this->_split[$this->_index]='';
   					} elseif ($result[0]===16) {
   						$this->_split[$this->_index-1]=$result[1];
   					} else {
  @@ -405,53 +364,46 @@
   		$plugins = $this->_get_function().$this->_get_class();
   		$size_of_top_loop = empty($this->_size_info[1]) ? '' : $this->_get_loop_size(1);
   
  -		$this->_save_result($cpl_path, $cpl_head, ' */ '.$plugins.$size_of_top_loop.'?>'.$nl, $source);
  -
  -		if ($division) {
  -			if (!isset($division[$num=count($division)-1]['end'])) {
  -				$division[$num]['end']=$this->_index;
  -			}
  -			for ($i=0,$s=count($division); $i<$s; $i++) {
  -				$div=&$division[$i];
  -				$cpl_path = $cpl_base.'.'.$div['name'].'.'.$this->compile_ext;
  -				
  -				$source=($i?$nl:'').trim(implode('', array_slice($this->_split, $div['start'], $div['end']-$div['start'])));
  -				$plugins = $this->_get_function($div['name']) . $this->_get_class($div['name']);
  -				$size_of_top_loop = empty($this->_size_info[$div['name']]) ? '' : $this->_get_loop_size(1, $div['name']);
  -
  -				$this->_save_result($cpl_path, $cpl_head, ' */ '.$plugins.$size_of_top_loop.'?>'.$nl, $source);
  -			}
  -		}
  +		return '<'.'?php '.$params['cache_head'].$nl.$plugins.$size_of_top_loop.'?'.'>'.$nl.$source;
   	}
  -	function _save_result($cpl_path, $cpl_head, $init_code, $source)
  -	{
  -
  -		if (trim($this->postfilter)) {
  -			$source=$this->_filter($source, 'post');
  -		}
  -
  -		$source_size = strlen($cpl_head)+strlen($init_code)+strlen($source) + 9;
   
  -		$source = $cpl_head.str_pad($source_size, 9, '0', STR_PAD_LEFT).$init_code.$source;
  -
  -		$fp_cpl=fopen($cpl_path, 'wb');
  -		if (false===$fp_cpl) {
  -			$this->report('Error #10', 'cannot write compiled file "<b>'.$cpl_path.'</b>"');
  +	function register_plugins_all()
  +	{
  +	// get plugin file info
  +		$plugins = array();
  +		$match = array();
  +		$mydir=$this->plugin_dir.'/function';
  +		$d = dir($mydir);
  +		if (false === $d) {
  +			$this->report('Error #2', 'cannot access plugin directory <b>'.$this->plugin_dir.'</b>');
   			$this->exit_();
   		}
  -		fwrite($fp_cpl, $source);
  -		fclose($fp_cpl);
  -
  -		if (filesize($cpl_path) != strlen($source)) {
  -			
  -			@unlink($cpl_path);
  -
  -			$this->report('Error #35', 'Problem by concurrent access. Just retry after some seconds. "<b>'.$cpl_path.'</b>"');
  -			$this->exit_();
  +		while ($plugin_file = $d->read()) {
  +			$plugin_path = $mydir .'/'. $plugin_file;
  +			if (!is_file($plugin_path) || !preg_match('/^(object|function|prefilter|postfilter)?\.?([^.]+)\.php$/i', $plugin_file, $match)) continue;
  +			$plugin =strtolower($match[2]);
  +			if ($match[1] === 'object') {
  +				if (!empty($this->obj_plugins[$plugin])) {
  +					$this->report('Error #3', 'plugin file <b>object.'.$match[2].'.php</b> is overlapped');
  +					$this->exit_();
  +				}
  +				$this->obj_plugins[$plugin] = $match[2];
  +			} else {
  +				switch ($match[1]) {
  +				case 'function'  : $this->func_plugins[$plugin]=$match[2]; break;
  +				case 'prefilter' : $this->prefilters[$plugin]  =$match[2]; break;
  +				case 'postfilter': $this->postfilters[$plugin] =$match[2]; break;
  +				default          : $this->func_plugins[$plugin]=$match[2]; break;
  +				}
  +				if (in_array($plugin, $plugins)) {
  +					$this->report('Error #4', 'plugin function <b>'.$plugin.'</b> is overlapped');
  +					$this->exit_();
  +				}
  +				$plugins[]=$plugin;
  +			}
   		}
  -
  -		if (!$this->on_ms) @chmod($cpl_path, $this->permission&~0111);
   	}
  +
   	function _compile_statement($statement)
   	{
   		$match=array();
  @@ -480,7 +432,7 @@
   		case ''  : return (($xpr=$this->_compile_expression($src,0,1))===0) ? 0 : array(1, 'echo '.$xpr);
   		case '=' : return (($xpr=$this->_compile_expression($src,0,0))===0) ? 0 : array(1, 'echo '.$xpr);
   		case ':?': return (($xpr=$this->_compile_expression($src,0,0))===0) ? 0 : array(2, '}elseif('.$xpr.'){'); // deprecated
  -		case '+' : return !strlen($src)||preg_match('/^[A-Z_a-z\x7f-\xff][\w\x7f-\xff]*$/', $src) ? array(8, $src) : 0;
  +		#case '+' : return !strlen($src)||preg_match('/^[A-Z_a-z\x7f-\xff][\w\x7f-\xff]*$/', $src) ? array(8, $src) : 0;
   		case '#' : return preg_match('/^[A-Z_a-z\x7f-\xff][\w\x7f-\xff]*$/',$src) ? array(4, '$this->print_("'.$src.'",$TPL_SCP,1);') : 0;
   		case '@' :
   			$xpr = preg_match('/^[A-Z_a-z\x7f-\xff][\w\x7f-\xff]*$/', $src) ? '' : $this->_compile_expression($src,0,0);
  @@ -499,7 +451,6 @@
   				$this->exit_();
   			}
   			$this->_size_info[$d][$src] = 1;
  -			if ($d===1 && $this->in_div) $this->_size_info[$this->in_div][$src] = 1;
   			$this->_loop_stack[]=$src;
   			$this->_loop_info[$src]=$d;
   			return array(2, 'if($TPL_'.$src.'_'.$d.'){');
  @@ -718,23 +669,30 @@
   					$var_state=array(0,'');
   					break;
   				case '(' :
  +					$prefix='';
  +					$self='';
   					if ($var_state[0]) {
   						if ($var_state[1]!=='obj') return 0;
   					} else {
   						if ($no_directive) return 0;
   						$func = strtolower($m[2]);
  -						if (in_array($func, $this->func_plugins)) {
  +						if (!empty($this->func_plugins[$func])) {
   							$func_list[$func] = $this->nl_cnt;
   						} else {
   							if ($this->safe_mode) in_array($func, $this->safe_mode_functions) or $this->exp_error[]=array(5, $m[2]);
   							else in_array($func, $this->all_functions) or $this->exp_error[]=array(7, $m[2]);
   						}
  +						if (!in_array(strtolower($m[2]),$this->all_functions)) {
  +                                                       $prefix='function_';
  +                                                       $self='$formatter,';
  +                                        	}
  +
   					}
   					$prev_is_operand=0;
   					$prev_is_func=1;
   					$par_stack[]='f';
   					$var_state=array(0,'');
  -					$xpr.=$m[2].'(';
  +					$xpr.=$prefix.$m[2].'('.$self;
   					break;
   				case '[' :
   					switch ($var_state[0]) {
  @@ -844,6 +802,7 @@
   					$par_stack[]='p';
   					break;
   				case ')':
  +					$xpr=rtrim($xpr,',');
   					if (!$prev_is_operand && !$prev_is_func || empty($par_stack) || array_pop($par_stack)==='[') return 0;
   					$prev_is_operand=1;
   					break;
  @@ -912,7 +871,6 @@
   			return 0;
   		}
   		foreach ($this->_outer_size as $loop_id=>$depth) {
  -			if ($depth===1 && $this->in_div) $this->_size_info[$this->in_div][$loop_id] = 1;
   			if (empty($this->_size_info[$depth][$loop_id])) {
   				$this->_size_info[$depth][$loop_id] = array($this->statement, $this->nl_cnt);
   			}
  @@ -922,11 +880,9 @@
   		}
   		if ($func_list) {
   			$this->_set_function($func_list);
  -			if ($this->in_div) $this->_set_function($func_list, $this->in_div);
   		}
   		if ($this->exp_object) {
   			$this->_set_class($this->exp_object);
  -			if ($this->in_div) $this->_set_class($this->exp_object, $this->in_div);
   		}
   		return $xpr;
   	}
  @@ -952,7 +908,7 @@
   						return '';
   					}
   					$obj = strtolower($var);
  -					if (in_array($obj, $this->obj_plugins)) {
  +					if (!empty($this->obj_plugins[$obj])) {
   						$this->exp_object[$obj] = $this->nl_cnt;
   					} else {
   						$this->exp_error[]=array(8, $subject);
  @@ -980,6 +936,7 @@
   			}
   			if (empty($depth)) { // not loop
   				if ($id[0]==='_') {
  +					if ($id=='_config') return '$Config'.$el;
   					if ($this->safe_mode) {
   						$this->exp_error[]=array(4, $subject);
   						return 0;
  @@ -1025,20 +982,21 @@
   	{
   		$functions=array();
   		foreach ($this->func_list[$divname] as $func => $line) {
  -			$func_name = $this->func_plugins_flip[$func];
  +			$func_name = $this->func_plugins[$func];
   			if (!function_exists($func)) {
  -				$func_path=$this->plugin_dir.'/function.'.$func_name.'.php';
  +				$func_path=$this->plugin_dir.'/function/'.$func_name.'.php';
   				if (false===include $func_path) {
   					$this->report('Error #27', 'error in plugin <b>'.$func_path.'</b>', true, $line);
   					$this->exit_();
  -				} elseif (!function_exists($func)) {
  +				} elseif (!function_exists('function_'.$func)) {
   					$this->report('Error #28', 'cannot find function <b>'.$func.'()</b> in plugin <b>'.$func_path.'</b>', true, $line);
   					$this->exit_();
   				}
   			}
   			$functions[]='"'.$func_name.'"';
   		}
  -		return $functions ? ' $this->include_('.implode(',',$functions).');' : '';
  +		return $functions ? ' $formatter->include_functions('.implode(',',$functions).');' : '';
  +		#return $functions ? ' $this->include_('.implode(',',$functions).');' : '';
   	}
   	function _set_class($obj_list, $divname='')
   	{
  @@ -1051,7 +1009,7 @@
   	{
   		$init_obj = '';
   		foreach ($this->obj_list[$divname] as $obj => $line) {
  -			$obj_name=$this->obj_plugins_flip[$obj];
  +			$obj_name=$this->obj_plugins[$obj];
   			$class = 'tpl_object_'.$obj_name;
   			if (!class_exists($class, false)) {
   				$class_path = $this->plugin_dir.'/object.'.$obj_name.'.php';
  @@ -1079,7 +1037,7 @@
   					$func_args[$j]=str_replace('\\&', '&', trim($func_args[$j]));
   				}
   				$func = strtolower(array_shift($func_args));
  -				$func_name   = $this->{$type.'filters_flip'}[$func];
  +				$func_name   = $this->{$type.'filters'}[$func];
   				array_unshift($func_args, $source, $this);
   				$func_file = $this->plugin_dir.'/'.$type.'filter.'.$func_name.'.php';
   				if (!in_array($func, $this->{$type.'filters'})) {
  @@ -1103,7 +1061,7 @@
   	function report($type, $msg, $file=false, $line=false)
   	{
   		$report = "<br />\n".'<span style="font:12px tahoma,arial;color:#0071DC;background:white">Template_ Compiler '.$type.': '.$msg;
  -		if ($file) $report.=' in <b>'.(is_string($file)?$file:$this->tpl_path).'</b>';
  +		if ($file) $report.=' in <b>'.(is_string($file)?$file:$this->params['path']).'</b>';
   		if ($line) {
   			$line=is_int($line)?$line:$this->nl_cnt;
   			foreach ($this->nl_del as $key=>$val) if ($key<=$line) break;
  
  
  


wkpark      2008/03/29 15:28:30

  Modified:    .        wikilib.php
  Log:
  use $force_charset config var for do_raw()
  
  Revision  Changes    Path
  1.239     +6 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.238
  retrieving revision 1.239
  diff -u -r1.238 -r1.239
  --- wikilib.php	26 Mar 2008 09:22:33 -0000	1.238
  +++ wikilib.php	29 Mar 2008 06:28:30 -0000	1.239
  @@ -1,5 +1,5 @@
   <?php
  -// Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
  +// Copyright 2003-2008 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING
   //
   // many codes are imported from the MoinMoin
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.238 2008/03/26 09:22:33 wkpark Exp $
  +// $Id: wikilib.php,v 1.239 2008/03/29 06:28:30 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1128,11 +1128,14 @@
   }
   
   function do_raw($formatter,$options) {
  +  global $Config;
  +  if ($Config['force_charset'])
  +    $force_charset = '; charset='.$Config['charset'];
     $supported=array('text/plain','text/css','text/javascript');
     if ($options['mime'] and in_array($options['mime'],$supported)) {
       $formatter->send_header("Content-Type: $options[mime]",$options);
     } else
  -    $formatter->send_header("Content-Type: text/plain",$options);
  +    $formatter->send_header("Content-Type: text/plain".$force_charset,$options);
     $raw_body=$formatter->page->get_raw_body($options);
     if (isset($options['section'])) {
       $sections= _get_sections($raw_body);
  
  
  


wkpark      2008/03/29 15:33:30

  Modified:    .        wiki.php
  Log:
  fixed last modified getPageKey()
  support php caches for the Template_.
  include_functions() added for fucntion plugin
  a new member introduced _vars[] of the Formatter class for Template_
  
  Revision  Changes    Path
  1.373     +56 -11    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.372
  retrieving revision 1.373
  diff -u -r1.372 -r1.373
  --- wiki.php	22 Mar 2008 02:38:30 -0000	1.372
  +++ wiki.php	29 Mar 2008 06:33:30 -0000	1.373
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.372 2008/03/22 02:38:30 wkpark Exp $
  +// $Id: wiki.php,v 1.373 2008/03/29 06:33:30 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.372 $',1,-1);
  +$_revision = substr('$Revision: 1.373 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -866,7 +866,7 @@
   
       // clean up ':' like as the dokuwiki
       $pn= preg_replace('#:+#',':',$pagename);
  -    $pn= trim($pn,':._-');
  +    $pn= trim($pn,':-');
       $pn= preg_replace('#:[:\._\-]+#',':',$pn);
   
       $pn= preg_replace("/([^a-z0-9:]{1})/ie","'_'.strtolower(dechex(ord(substr('\\1',-1))))",$pn);
  @@ -1491,14 +1491,14 @@
       unlink($key);
     }
   
  -  function fetch($pagename,$mtime="") {
  +  function fetch($pagename,$mtime="",$params=array()) {
       $key=$this->getKey($pagename);
       if ($this->_exists($key)) {
          if (!$mtime) {
  -          return $this->_fetch($key);
  +          return $this->_fetch($key,$params);
          }
          else if ($this->_mtime($key) > $mtime)
  -          return $this->_fetch($key);
  +          return $this->_fetch($key,$params);
       }
       return false;
     }
  @@ -1512,13 +1512,44 @@
       return @file_exists($key);
     }
   
  -  function _fetch($key) {
  +  function _fetch($key,$params=array()) {
       $fp=fopen($key,"r");
  -    $content='';
  -    if (($size=filesize($key)) >0)
  -      $content=fread($fp,$size);
  +    if (!is_resource($fp)) return '';
  +
  +    $ret='';
  +    
  +    if (($size=filesize($key)) >0) {
  +      while ($params['uniq'] and empty($params['raw'])) { # include cache if it is a valid php cache
  +        # cache header : <,?,php /* Generator Version uniqid tpl_path(optional) */
  +        $check=fgets($fp);
  +        if ($check{0}=='<' and $check{1}=='?') {
  +          list($tag,$sep,$generator,$ver,$id,$path,$extra)=explode(' ',$check);
  +          $ok=1;
  +          if (!empty($params['uniq']) and $params['uniq'] != $id) $ok=0;
  +          if ($ok and !empty($params['path']) and $params['path'] != $path) $ok=0;
  +          if ($ok) {
  +            fclose($fp);
  +            global $Config;
  +            $TPL_VAR=&$params['_vars']; # builtin Template_ support
  +            if ($params['formatter']) $formatter=&$params['formatter']; # XXX
  +            if ($params['print']) {
  +              return include $key; // Do we need more secure method ?
  +            } else {
  +              ob_start();
  +              include $key;
  +              $fetch = ob_get_contents();
  +              ob_end_clean();
  +              return $fetch;
  +            }
  +          }
  +        }
  +        break;
  +      }
  +      $ret=fread($fp,$size);
  +    }
       fclose($fp);
  -    return $content;
  +    if ($params['print']) return print $ret;
  +    return $ret;
     }
   
     function _mtime($key) {
  @@ -2599,6 +2630,11 @@
       return "$close$open$edit<h$dep$attr><a id='s$prefix-$num'></a>$head$perma</h$dep>";
     }
   
  +  function include_functions()
  +  {
  +    foreach (func_get_args() as $f) function_exists($f) or include_once 'plugin/function/'.$f.'.php';
  +  }
  +
     function macro_repl($macro,$value='',$options='') {
       // macro ID
       $this->mid=!empty($this->mid) ? ++$this->mid:1;
  @@ -4342,6 +4378,12 @@
       }
   
       $rss_icon=$this->link_tag("RecentChanges","?action=rss_rc",$this->icon['rss'])." ";
  +    $this->_vars['rss_icon']=&$rss_icon;
  +    $this->_vars['icons']=&$icons;
  +    $this->_vars['title']=$title;
  +    $this->_vars['menu']=$menu;
  +    $this->_vars['upper_icon']=$upper_icon;
  +    $this->_vars['home']=$home;
   
       # print the title
       kbd_handler();
  @@ -4450,6 +4492,7 @@
         $origin=$DBInfo->home;
       }
       $this->origin=$origin;
  +    $this->_vars['origin']=&$this->origin;
     }
   
     function set_trailer($trailer="",$pagename,$size=5) {
  @@ -4468,6 +4511,8 @@
       $this->pagelinks=array(); # reset pagelinks
       $this->sister_on=$sister_save;
   
  +    $this->_vars['trail']=&$this->trail;
  +
       if (!in_array($pagename,$trails)) $trails[]=$pagename;
   
       $idx=count($trails) - $size;
  
  
  


wkpark      2008/03/29 15:34:54

  Modified:    plugin   Draw.php
  Log:
  mode='attach' is added to use Draw macro as the clipmacro
  
  Revision  Changes    Path
  1.5       +6 -3      moniwiki/plugin/Draw.php
  
  Index: Draw.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Draw.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Draw.php	22 Nov 2004 14:17:29 -0000	1.4
  +++ Draw.php	29 Mar 2008 06:34:54 -0000	1.5
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Draw(hello)]]
   //
  -// $Id: Draw.php,v 1.4 2004/11/22 14:17:29 wkpark Exp $
  +// $Id: Draw.php,v 1.5 2008/03/29 06:34:54 wkpark Exp $
   
   function macro_Draw($formatter,$value) {
     global $DBInfo;
  @@ -44,7 +44,7 @@
     return "$map<img src='$DBInfo->url_prefix/$_dir/$gifname' border='0' alt='hotdraw' $maptag /></a>\n".$editable;
   }
   
  -function do_post_Draw($formatter,$options) {
  +function do_post_Draw($formatter,$options=array()) {
     global $DBInfo;
   
     $enable_replace=1;
  @@ -114,7 +114,10 @@
       return;
     }
   
  -  $gifname='Draw_'._rawurlencode($name);
  +  $gifname=_rawurlencode($name);
  +  if ($_GET['mode'] != 'attach') {
  +    $gifname='Draw_'.$gifname;
  +  }
   
     $imgpath="$_dir/$gifname";
   
  
  
  


wkpark      2008/03/29 15:35:31

  Modified:    plugin   Attachment.php
  Log:
  use the Draw macro for gif attachment optionally
  
  Revision  Changes    Path
  1.36      +8 -3      moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- Attachment.php	8 Jan 2008 14:58:55 -0000	1.35
  +++ Attachment.php	29 Mar 2008 06:35:31 -0000	1.36
  @@ -7,13 +7,13 @@
   // Name: Attachment
   // Description: Attachment Plugin
   // URL: MoniWiki:AttachmentPlugin
  -// Version: $Revision: 1.35 $
  +// Version: $Revision: 1.36 $
   // Depend: 1.1.3
   // License: GPL
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.35 2008/01/08 14:58:55 wkpark Exp $
  +// $Id: Attachment.php,v 1.36 2008/03/29 06:35:31 wkpark Exp $
   
   function macro_Attachment($formatter,$value,$options='') {
     global $DBInfo;
  @@ -226,7 +226,12 @@
     if ($DBInfo->use_clipmacro and preg_match('/^(.*)\.png$/i',$file,$m)) {
       $now=time();
       $url=$formatter->link_url($pagename,"?action=clip&amp;value=$m[1]&amp;now=$now");
  -    $paste=" <a href='$url'>"._("or paste a new picture")."</a>";
  +    $paste=" <a href='$url'>"._("or paste a new png picture")."</a>";
  +  }
  +  if ($DBInfo->use_drawmacro and preg_match('/^(.*)\.gif$/i',$file,$m)) {
  +    $now=time();
  +    $url=$formatter->link_url($pagename,"?action=draw&amp;mode=attach&amp;value=$m[1]&amp;now=$now");
  +    $paste=" <a href='$url'>"._("or draw a new gif picture")."</a>";
     }
     if ($pagename == $formatter->page->name)
       return $bra.'<span class="attach">'.$formatter->link_to("?action=UploadFile&amp;rename=".urlencode($file),sprintf(_("Upload new Attachment \"%s\""),$file)).$paste.'</span>'.$ket;
  
  
  


wkpark      2008/03/29 15:35:53

  Modified:    plugin   bbs.php
  Log:
  initial support for Template_
  
  Revision  Changes    Path
  1.3       +78 -31    moniwiki/plugin/bbs.php
  
  Index: bbs.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/bbs.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- bbs.php	22 Mar 2008 14:25:02 -0000	1.2
  +++ bbs.php	29 Mar 2008 06:35:52 -0000	1.3
  @@ -5,7 +5,7 @@
   //
   // Usage: [[BBS(pagename,count,mode)]]
   //
  -// $Id: bbs.php,v 1.2 2008/03/22 14:25:02 wkpark Exp $
  +// $Id: bbs.php,v 1.3 2008/03/29 06:35:52 wkpark Exp $
   
   function _get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -36,7 +36,7 @@
         $link=$formatter->link_tag('',$action.$i,$i);
         $pnut.=$link;
       } else
  -      $pnut.="<b>$i</b>";
  +      $pnut.="<strong>$i</strong>";
     }
   
     if ($i <= $pages) {
  @@ -463,7 +463,7 @@
       }
   
       # load a config file
  -    if (file_exists('config/bbs'.$bname.'.php')) {
  +    if (file_exists('config/bbs.'.$bname.'.php')) {
           $confname='bbs.'.$bname.'.php';
       } else {
           $confname='bbs.default.php';
  @@ -630,6 +630,26 @@
       $pages= intval($tot / $ncount);
       if ($tot % $ncount) $pages++;
   
  +    if ($options['mode'] == 'rss') {
  +        $rss='<'.'?xml version="1.0" encoding="utf-8"?>'."\n".'<rss version="2.0">'."\n";
  +        $rss.="<channel>\n<title>".$DBInfo->sitename.": </title>\n";
  +        $rss.="<link>".qualifiedUrl($formatter->link_url($formatter->page->urlname))."</link>\n";
  +        $rss.="<description></description>\n";
  +        $rss.="<pubDate>".gmdate('D, j M Y H:i:s',time())." +0000</pubDate>\n";
  +        foreach ($list as $l) {
  +            $item="<item>\n";
  +            $item.="<title><![CDATA[".$l[7]."]]></title>\n";
  +            $item.="<link>".qualifiedUrl($formatter->link_url($formatter->page->urlname,"?no=$l[0]"))."</link>\n";
  +            $item.="<author><![CDATA[".$l[3]."]]></author>\n";
  +            $item.="<description><![CDATA[".$l[3]."]]></description>\n";
  +            $item.="<pubDate>".gmdate('D, j M Y H:i:s',$l[2])." +0000</pubDate>\n</item>\n";
  +            $rss.=$item;
  +        }
  +        $rss.="</channel>\n</rss>\n";
  +
  +        return $rss;
  +    }
  +
       if ($pages > 1)
         $pnut=_get_pagelist($formatter,$pages,
           '?'.$extra.
  @@ -641,6 +661,7 @@
       $out.="<col width='3%' class='num' /><col width='1%' class='check' /><col width='63%' class='title' /><col width='14%' /><col width='13%' /><col width='7%' class='hit' />\n";
       $out.='<thead><tr><th>'.implode("</th><th>",$head)."</th></tr><thead>\n";
       $out.="<tbody>\n";
  +    $item=array();
       foreach ($list as $l) {
           $nid=&$l[0];
           $ip=&$l[1];
  @@ -649,14 +670,20 @@
           $subject=$formatter->link_to("?no=$nid".$extra,$l[7]);
           $hit=$MyBBS->counter->pageCounter($nid);
           $chk='<input type="checkbox" value="'.$nid.'">';
  -        $item=array(in_array($nid,$nids) ? '<strong>&raquo;</strong>':$nid,$chk,$subject,$user,$date,$hit);
  -        #$tmp='<tr><td>'.implode("</td><td>",$item)."</td></tr>\n";
  -        $tmp="<tr><td class='no'>$item[0]</td><td class='check'>$item[1]</td>".
  -            "<td class='title'>$item[2]</td><td class='name'>$item[3]</td>".
  -            "<td class='date'>$item[4]</td><td class='hit'>$item[5]</td>".
  -            "</tr>\n";
  -        $out.=$tmp; 
  +        #$item=array(in_array($nid,$nids) ? '<strong>&raquo;</strong>':$nid,$chk,$subject,$user,$date,$hit);
  +        $item[]=array('num'=>in_array($nid,$nids) ? '<strong>&raquo;</strong>':$nid,'check'=>$chk,'subject'=>$subject,
  +           'name'=>$user,'date'=>$date,'hit'=>$hit);
  +        ##$tmp='<tr><td>'.implode("</td><td>",$item)."</td></tr>\n";
  +        #$tmp="<tr><td class='no'>$item[0]</td><td class='check'>$item[1]</td>".
  +        #    "<td class='title'>$item[2]</td><td class='name'>$item[3]</td>".
  +        #    "<td class='date'>$item[4]</td><td class='hit'>$item[5]</td>".
  +        #    "</tr>\n";
  +        #$out.=$tmp; 
       }
  +
  +    $formatter->_vars['item']=&$item;
  +    $out.= $formatter->processor_repl('tpl_','',array('path'=>'theme/plugin/BBS/blue_tpl/list.tpl'));
  +    #$out.= $formatter->processor_repl('tpl_','',array('path'=>'theme/plugin/BBS/blue_tpl/list.tpl','include'=>1));
       $out.="</tbody>\n";
   
       $btn['new']=$formatter->link_to("?action=bbs&amp;mode=edit",'<span>'._("New").'</span>','class="button"');
  @@ -677,7 +704,10 @@
              '<input type="hidden" name="action" />';
       $form1.="</form>\n";
       $pnut= "<div class='pnut'>$pnut</div>";
  -    return $pnut."$msg$js$form0<table class='bbs' cellspacing='1' cellpadding='2'>".$out.'</table>'.$del.$form1.$pnut.$btns;
  +    $info= '<div class="bbsRSS">'.sprintf(_("Total %s articles."),'<strong>'.$tot.'</strong>').' '.
  +    #    $formatter->link_to('?action=bbs&amp;mode=rss','<span>RSS</span>').'</div>';
  +        $formatter->link_to('?action=bbs&amp;mode=rss',$formatter->icon['rss']).'</div>';
  +    return $info.$pnut."$msg$js$form0<table class='bbs' cellspacing='1' cellpadding='2'>".$out.'</table>'.$del.$form1.$pnut.$btns;
   }
   
   function do_bbs($formatter,$options=array()) {
  @@ -686,31 +716,45 @@
       $err='';
       $args=array();
   
  +    if ($options['mode']=='rss') {
  +        #$formatter->send_header("Content-Type: text/xml",$options);
  +        header("Content-Type: application/xml");
  +        print macro_BBS($formatter,'',$options);
  +        return;
  +    }
  +    # load a config file
  +    $bname=$formatter->page->name;
  +    if (file_exists('config/bbs.'.$bname.'.php')) {
  +        $confname='bbs.'.$bname.'.php';
  +    } else {
  +        $confname='bbs.default.php';
  +    }
  +    $conf=_load_php_vars('config/'.$confname);
  +
  +    # check valid IP
  +    $check_ip=true;
  +    if ($conf['allowed_ip'] and in_array($options['mode'],array('edit','delete','new'))) {
  +        include_once 'lib/checkip.php';
  +        if (!check_ip($conf['allowed_ip'], $_SERVER['REMOTE_ADDR'])) {
  +            $options['title']=sprintf(_("Your IP address is not allowed to %s at this BBS"),$options["mode"]);
  +            $check_ip=false;
  +        }
  +    }
  +
       # password check
       while ($options['no'] and
           ($options['mode']=='delete' or $options['mode']=='edit') and $_SERVER['REQUEST_METHOD']=="POST") {
           # check admin(WikiMaster) password
  -        if ($DBInfo->admin_passwd)
  +        if ($DBInfo->admin_passwd) {
               $check_pass=$DBInfo->admin_passwd==crypt($options['pass'],$DBInfo->admin_passwd);
  -        else
  -            $check_pass=0;
  +        } else
  +            $check_pass=false;
   
           # check admin(BBSMaster) password
  -        if (!$check_pass) {
  -            # load a config file
  -            if (file_exists('config/bbs'.$bname.'.php')) {
  -                $confname='bbs.'.$bname.'.php';
  -            } else {
  -                $confname='bbs.default.php';
  -            }
  -            $conf=_load_php_vars('config/'.$confname);
  -            if ($conf['admin_passwd']) {
  -                $check_pass=$conf['admin_passwd']==crypt($options['pass'],$conf['admin_passwd']);
  -            } else {
  -                $check_pass=0;
  -            }
  -        }
  -        while ($check_pass and $options['mode']== 'delete') {
  +        if (!$check_pass and $conf['admin_passwd'])
  +            $check_pass=$conf['admin_passwd']==crypt($options['pass'],$conf['admin_passwd']);
  +
  +        while ($check_ip and $check_pass and $options['mode']== 'delete') {
               $MyBBS=macro_BBS($formatter,'',array('new'=>1));
           
               if (($p=strpos($options['no'],' '))!==false)
  @@ -807,7 +851,7 @@
                   $args['pass']=_stripslashes($pass);
                   $args['home']=_stripslashes($home);
                   $args['email']=_stripslashes($email);
  -                if (!$name) break;
  +                if (!$name) { $options['msg']=_("No Name error."); break; }
               } else {
                   $args['name']=$options['id'];
               }
  @@ -815,8 +859,9 @@
               $args['no']=$options['no'] ? $options['no']:0;
   
               if ($options['no'] and !$check_pass) break; # edit mode
  +            if (!$check_ip) break; # not allowed IPs
   
  -            if (!$args['subject'] or !$savetext) break;
  +            if (!$args['subject'] or !$savetext) { $options['msg']=_("No Subject error."); break; }
               if ($button_preview) break;
   
               $savetext=preg_replace("/\r\n|\r/", "\n", $savetext);
  @@ -920,6 +965,8 @@
           $formatter->_raw_body=null;
           $formatter->_extra_form=null;
       } else {
  +        $formatter->send_header("",$options);
  +        $formatter->send_title("","",$options);
           print macro_BBS($formatter,'no='.$options['no']);
       }
   
  
  
  


wkpark      2008/03/29 15:36:21

  Modified:    plugin   OeKaki.php
  Log:
  fixed msg.
  
  Revision  Changes    Path
  1.8       +3 -3      moniwiki/plugin/OeKaki.php
  
  Index: OeKaki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/OeKaki.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- OeKaki.php	3 Jun 2006 15:34:18 -0000	1.7
  +++ OeKaki.php	29 Mar 2008 06:36:21 -0000	1.8
  @@ -1,10 +1,10 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2008 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   //
   // Usage: [[OeKaki(hello)]]
   //
  -// $Id: OeKaki.php,v 1.7 2006/06/03 15:34:18 wkpark Exp $
  +// $Id: OeKaki.php,v 1.8 2008/03/29 06:36:21 wkpark Exp $
   // vim:et:ts=2:
   
   function macro_OeKaki($formatter,$value) {
  @@ -33,7 +33,7 @@
     $url=$formatter->link_url(_rawurlencode($formatter->page->name),"?action=OeKaki&amp;value=$name$size&amp;now=$now");
   
     if (!file_exists($oekaki_dir."/$pngname"))
  -    return "<a href='$url'>"._("Draw new picture")."</a>";
  +    return "<a href='$url'>"._("Draw a new picture")."</a>";
   
     return "<a href='$url'><img src='$DBInfo->url_prefix/$oekaki_dir/$pngname' alt='oekaki'></a>";
   }
  
  
  


wkpark      2008/03/29 15:37:13

  moniwiki/plugin/function - New directory

wkpark      2008/03/29 15:45:42

  Added:       config   bbs.default.php.sample safe_mode.ini
  Log:
  safe_mode.ini added for Template_
  bbs.default.php.sample added for BBS plugin
  
  Revision  Changes    Path
  1.1                  moniwiki/config/bbs.default.php.sample
  
  Index: bbs.default.php.sample
  ===================================================================
  <?php
  
  $umask=022;
  $use_counter=1;
  $use_comment=1;
  
  ?>
  
  
  
  1.1                  moniwiki/config/safe_mode.ini
  
  Index: safe_mode.ini
  ===================================================================
  ; This file is used when $safe_mode property is true.
  ; On Template_'s safe mode, only functions listed here operate.
  ; Functions can be separated by whitespaces (space, tab, newline).
  ; Line comments by ';' are available.
  
  
  ; string
  _
  empty
  isset
  addcslashes
  addslashes
  bin2hex
  chop
  chr
  chunk_split
  convert_cyr_string
  count_chars
  crc32
  crypt
  hebrev
  hebrevc
  html_entity_decode
  htmlentities
  htmlspecialchars
  implode
  join
  levenshtein
  ltrim
  md5
  metaphone
  money_format
  nl_langinfo
  nl2br
  number_format
  ord
  quoted_printable_decode
  quotemeta
  rtrim
  setlocale
  sha1
  similar_text
  soundex
  sprintf
  sscanf
  str_ireplace
  str_pad
  str_repeat
  str_replace
  str_rot13
  str_shuffle
  str_split
  str_word_count
  strcasecmp
  strchr
  strcmp
  strcoll
  strcspn
  strip_tags
  stripcslashes
  stripos
  stripslashes
  stristr
  strlen
  strnatcasecmp
  strnatcmp
  strncasecmp
  strncmp
  strpos
  strrchr
  strrev
  strripos
  strrpos
  strspn
  strstr
  strtok
  strtolower
  strtoupper
  strtr
  substr_count
  substr_replace
  substr
  trim
  ucfirst
  ucwords
  vsprintf
  wordwrap
  
  ; date & time
  
  checkdate
  date
  gmdate
  gmmktime
  gmstrftime
  microtime
  mktime
  strftime
  strtotime
  time
  
  ; regexp
  
  preg_match
  preg_quote
  preg_replace_callback
  preg_replace
  ereg_replace
  ereg
  eregi_replace
  eregi
  sql_regcase
  
  
  


wkpark      2008/03/29 15:50:54

  Modified:    lib      Template_.compiler.php
  Log:
  fixed safe_mode.ini location
  
  Revision  Changes    Path
  1.3       +4 -3      moniwiki/lib/Template_.compiler.php
  
  Index: Template_.compiler.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/Template_.compiler.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Template_.compiler.php	29 Mar 2008 06:27:19 -0000	1.2
  +++ Template_.compiler.php	29 Mar 2008 06:50:54 -0000	1.3
  @@ -7,13 +7,13 @@
   // Name: A modified Template_ for MoniWiki
   // Description: Template_ module (division syntax is disabled)
   // URL: MoniWiki:Template_
  -// Version: $Revision: 1.2 $
  +// Version: $Revision: 1.3 $
   // Depend: 1.1.3
   // License: LGPL
   //
   // Usage: please see http://www.xtac.net
   //
  -// $Id: Template_.compiler.php,v 1.2 2008/03/29 06:27:19 wkpark Exp $
  +// $Id: Template_.compiler.php,v 1.3 2008/03/29 06:50:54 wkpark Exp $
   
   /*---------------------------------------------------------------------------
   
  @@ -88,6 +88,7 @@
   		$this->prefilters    =array();
   		$this->postfilters   =array();
   		$this->safe_mode     =$tpl->safe_mode;
  +		$this->safe_mode_ini ='config/safe_mode.ini';
   		$this->auto_constant =empty($tpl->auto_constant) ? false : $tpl->auto_constant;
   		$this->tpl_path      =$tpl_path;
   		$this->params        =$params;
  @@ -151,7 +152,7 @@
   
   	// get safe mode functions
   		if ($this->safe_mode) {
  -			$safe_list_file = $this->plugin_dir.'/function/safe_mode.ini';
  +			$safe_list_file = $this->safe_mode_ini;
   			if (@is_file($safe_list_file)) {
   				$fp=fopen($safe_list_file, 'rb');
   				$fc=fread($fp, filesize($safe_list_file));
  
  
  


wkpark      2008/03/29 15:51:44

  Modified:    lib      version.RcsLite.php
  Log:
  add a lowlevel ci_() method
  
  Revision  Changes    Path
  1.6       +4 -1      moniwiki/lib/version.RcsLite.php
  
  Index: version.RcsLite.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/version.RcsLite.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- version.RcsLite.php	31 Aug 2005 10:04:40 -0000	1.5
  +++ version.RcsLite.php	29 Mar 2008 06:51:44 -0000	1.6
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RcsLite versioning plugin for the MoniWiki
   //
  -// $Id: version.RcsLite.php,v 1.5 2005/08/31 10:04:40 wkpark Exp $
  +// $Id: version.RcsLite.php,v 1.6 2008/03/29 06:51:44 wkpark Exp $
   
   class Version_RcsLite extends Version_RCS {
     var $DB;
  @@ -29,6 +29,9 @@
   
     function ci($pagename,$log) {
       $filename=$this->_filename($pagename);
  +    $this->_ci($filename,$log);
  +  }
  +  function _ci($filename,$log) {
       $this->rcs->_process($filename);
       $this->rcs->addRevisionPage($log);
     }
  
  
  


wkpark      2008/03/29 15:57:24

  Added:       plugin/processor tpl_.php
  Log:
  a Template_ processor
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/processor/tpl_.php
  
  Index: tpl_.php
  ===================================================================
  <?php
  // Copyright 2008 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a Template_ processor for the MoniWiki
  //
  // Author: Won-Kyu Park <wkpark@kldp.org>
  // Date: 2008-03-27
  // Name: A Template_ processor
  // Description: A Template_ Processor could process Template_ syntaxs
  // URL: MoniWiki:TemplateUnderscore
  // Version: $Revision: 1.1 $
  // License: LGPL
  //
  // Usage: {{{#!tpl_
  // {=date("Y-m-d h:i:s",time()) }
  // }}}
  //
  // $Id: tpl_.php,v 1.1 2008/03/29 06:57:24 wkpark Exp $
  
  include_once (dirname(__FILE__).'/../../lib/Template_.compiler.php');
  
  function processor_tpl_(&$formatter,$source,$params=array()) {
      global $Config;
      #if (!$Config['use_tpl']) return $source;
      $cache= new Cache_text("tpl_",'2');
  
      if (!empty($source)) {
          $id=md5($source); $mtime=$formatter->page->mtime();
      } else if ($params['path']) {
          $id=md5_file($params['path']); $mtime=filemtime($params['path']);
      }
      $params['uniq']=$id;
      $params['formatter']=&$formatter;
  
      $params['cache_head']='/* Template_ '.__TEMPLATE_UNDERSCORE_VER__.' '.$id.($params['path']? ' '.$params['path']:'').' */';
  
      $TPL_VAR=&$formatter->_vars;
  
      if (!$formatter->preview and $cache->exists($id) and $cache->mtime($id) > $mtime) {
          $params['_vars']=&$formatter->_vars;
          $ret = $cache->fetch($id,0,$params);
          if ($ret === true) return '';
          if ($params['print']) return eval('?'.'>'.$ret.'<'.'?php ');
          if ($params['raw']) return $ret;
          ob_start();
          eval('?'.'>'.$ret.'<'.'?php ');
          $fetch = ob_get_contents();
          ob_end_clean();
          return $fetch;
      }
  
      $formatter->plugin_dir='plugin'; #
      $formatter->safe_mode=1; # XXX
  
      $compiler=new Template_Compiler_;
  
      if ($source[0]=='#' and $source[1]=='!')
          list($line,$source)=explode("\n",$source,2);
      if ($line) list($tag,$args)=explode(' ',$line,2);
  
      $out=$compiler->_compile_template($formatter, $source, $params);
      if (!$formatter->preview)
          $cache->update($id,$out);
      if ($params['print']) return eval('?'.'>'.$out.'<'.'?php ');
      if ($params['raw']) return $out;
      #print '<pre>'.(preg_replace('/</','&lt;',$out)).'</pre>';
      ob_start();
      eval('?'.'>'.$out.'<'.'?php ');
      $fetch = ob_get_contents();
      ob_end_clean();
      return $fetch;
  }
  
  // vim:et:sts=4:sw=4:
  
  ?>
  
  
  


wkpark      2008/03/29 19:26:44

  Modified:    plugin/processor latex.php
  Log:
  fixed for new buggy version of the convert
  
  Revision  Changes    Path
  1.19      +28 -10    moniwiki/plugin/processor/latex.php
  
  Index: latex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/latex.php,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- latex.php	3 Nov 2007 18:25:32 -0000	1.18
  +++ latex.php	29 Mar 2008 10:26:44 -0000	1.19
  @@ -1,5 +1,5 @@
   <?php
  -// Copyright 2003-2007 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2008 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a latex processor plugin for the MoniWiki
   //
  @@ -12,7 +12,7 @@
   // $path='./bin;C:/Program Files/MiKTeX 2.5/miktex/bin;C:/Program Files/ImageMagick-6.3.6-Q16';
   // # ImagMagick and MikTeX are used in this setting.
   //
  -// $Id: latex.php,v 1.18 2007/11/03 18:25:32 wkpark Exp $
  +// $Id: latex.php,v 1.19 2008/03/29 10:26:44 wkpark Exp $
   
   function _latex_renumber($match,$tag='\\tag') {
     // XXX
  @@ -159,35 +159,52 @@
        $fp=popen($cmd.$formatter->NULL,'r');
        pclose($fp);
        $log=$formatter->get_errlog(1,1);
  +
        if ($log) {
          list($dum,$log,$dum2)=preg_split('/\n!/',$log,3);
  -       if ($log)
  +       if ($log) {
            $log="<pre class='errlog'>".$log."</pre>\n";
  +       }
        }
   
        if (!file_exists($uniq.".dvi")) {
          $log.="<pre class='errlog'><font color='red'>ERROR:</font> LaTeX does not work properly.</pre>";
  +       trigger_error ($log, E_USER_WARNING);
          chdir($cwd);
  -       return $log;
  +       return '';
        }
        #$formatter->errlog('DVIPS');
        $cmd= "$dvips -D 600 $uniq.dvi -o $uniq.ps";
  +     $formatter->errlog('DVI',$uniq.'.log');
        $fp=popen($cmd.$formatter->NULL,'r');
        pclose($fp);
  -     #$log2=$formatter->get_errlog();
  +     $log2=$formatter->get_errlog();
  +     if ($log2) trigger_error ($log2, E_USER_NOTICE);
        chdir($cwd);
   
  -     $cmd= "$convert -transparent white $latex_convert_options $vartmp_dir/$uniq.ps $outpath";
  +     #$cmd= "$convert -transparent white $latex_convert_options $vartmp_dir/$uniq.ps $outpath";
  +     chdir(dirname($outpath)); # XXX :(
  +     $cmd= "$convert -transparent white $latex_convert_options $vartmp_dir/$uniq.ps ".basename($outpath);
        # ImageMagick of the RedHat AS 4.x do not support -trim option correctly
        # http://kldp.net/forum/message.php?msg_id=12024
        #$cmd= "$convert -transparent white -trim -crop 0x0 -density 120x120 $vartmp_dir/$uniq.ps $outpath";
  -     $fp=popen($cmd.$formatter->NULL,'r');
  +     $formatter->errlog('CNV',$uniq.'.log');
  +     $fp=popen($cmd.$formatter->LOG,'r');
        pclose($fp);
  -
  +     $log2=$formatter->get_errlog(1,1);
  +     if ($log2) trigger_error ($log2, E_USER_WARNING);
  +     chdir($cwd);
   
        if ($DBInfo->latex_allinone) {
           $sz=sizeof($formatter->latex_uniq);
   
  +        if ($sz > 1) {
  +          $soutpath=preg_replace('/\.png/','',$outpath);
  +          if (file_exists($outpath.'.0')) # old convert behavior
  +            $soutpath="$soutpath.png.%d";
  +          else
  +            $soutpath="$soutpath-%d.png"; # new behavior :(
  +        }
           for ($i=0;$i<$sz;$i++) {
             $id=$formatter->latex_uniq[$i];
             if ($DBInfo->cache_public_dir) {
  @@ -198,8 +215,9 @@
             }
             if ($sz==1)
               rename($outpath,$img);
  -          else
  -            rename($outpath.'.'.$i,$img);
  +          else {
  +            rename(sprintf($soutpath,$i),$img);
  +          }
           }
           $formatter->latex_all='';
           $formatter->latex_uniq=array();
  
  
  


wkpark      2008/03/29 21:21:03

  moniwiki/theme/plugin - New directory

wkpark      2008/03/29 21:21:15

  moniwiki/theme/plugin/BBS - New directory

wkpark      2008/03/31 10:20:24

  Modified:    .        wikilib.php
  Log:
  fixed merge problem
  
  Revision  Changes    Path
  1.240     +5 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.239
  retrieving revision 1.240
  diff -u -r1.239 -r1.240
  --- wikilib.php	29 Mar 2008 06:28:30 -0000	1.239
  +++ wikilib.php	31 Mar 2008 01:20:23 -0000	1.240
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.239 2008/03/29 06:28:30 wkpark Exp $
  +// $Id: wikilib.php,v 1.240 2008/03/31 01:20:23 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1496,8 +1496,10 @@
   	} else {
             $options['conflict']=0; 
         	  #$options['datestamp']=$datestamp;
  -          #unset($options['datestamp']); 
  -          if ($merge) $savetext=$merge;
  +          if ($merge) {
  +            $savetext=$merge;
  +            unset($options['datestamp']); 
  +          }
           }
           $formatter->send_title("","",$options);
   
  
  
  


wkpark      2008/03/31 10:22:25

  Modified:    .        wiki.php
  Log:
  add error_handler to hide a path of caches
  
  Revision  Changes    Path
  1.374     +89 -4     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.373
  retrieving revision 1.374
  diff -u -r1.373 -r1.374
  --- wiki.php	29 Mar 2008 06:33:30 -0000	1.373
  +++ wiki.php	31 Mar 2008 01:22:25 -0000	1.374
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.373 2008/03/29 06:33:30 wkpark Exp $
  +// $Id: wiki.php,v 1.374 2008/03/31 01:22:25 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.373 $',1,-1);
  +$_revision = substr('$Revision: 1.374 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -1531,18 +1531,29 @@
               fclose($fp);
               global $Config;
               $TPL_VAR=&$params['_vars']; # builtin Template_ support
  -            if ($params['formatter']) $formatter=&$params['formatter']; # XXX
  +            $ehandle=false;
  +            if ($params['formatter']) {
  +              $formatter=&$params['formatter']; # XXX
  +              if (method_exists($formatter,'internal_errorhandler')) {
  +                set_error_handler(array($formatter,'internal_errorhandler'));
  +                $ehandle=true;
  +              }
  +            }
               if ($params['print']) {
  -              return include $key; // Do we need more secure method ?
  +              $ret= include $key; // Do we need more secure method ?
  +              if ($ehandle) restore_error_handler();
  +              return $ret;
               } else {
                 ob_start();
                 include $key;
  +              if ($ehandle) restore_error_handler();
                 $fetch = ob_get_contents();
                 ob_end_clean();
                 return $fetch;
               }
             }
           }
  +        rewind($fp);
           break;
         }
         $ret=fread($fp,$size);
  @@ -1969,6 +1980,44 @@
       }
     }
   
  +  function include_theme($theme,$file='default',$params=array()) {
  +    $theme=trim($theme,'.-_');
  +    $theme=preg_replace(array('/\/+/','/\.+/'),array('/',''),$theme);
  +    if (preg_match('/_tpl$/',$theme)) {
  +      $type='tpl';
  +    } else {
  +      $type='php';
  +    }
  +
  +    $theme_path='theme/'.$theme.'/'.$file.'.'.$type;
  +    if (!file_exists($theme_path)) {
  +      trigger_error(sprintf(_("File '%s' does not exist."),$file),E_USER_NOTICE);
  +      return '';
  +    }
  +    switch($type) {
  +    case 'tpl':
  +      $params['path']=$theme_path;
  +      $out= $this->processor_repl('tpl_','',$params);
  +      break;
  +    case 'php':
  +      global $Config;
  +      $TPL_VAR=&$this->_vars;
  +      if ($params['print']) {
  +        $out=include $theme_path;
  +      } else {
  +        ob_start();
  +        include $theme_path;
  +        $out=ob_get_contents();
  +        ob_end_clean();
  +      }
  +      break;
  +
  +    default:
  +      break;
  +    }
  +    return $out;
  +  }
  +
     function get_redirect() {
       $body=$this->page->get_raw_body();
       if ($body[0]=='#' and substr($body,0,10)=='#redirect ') {
  @@ -4566,6 +4615,42 @@
       }
       return '';
     }
  +
  +  function internal_errorhandler($errno, $errstr, $errfile, $errline) {
  +    $errfile=basename($errfile);
  +    switch ($errno) {
  +    case E_WARNING:
  +      echo "<div><b>WARNING</b> [$errno] $errstr<br />\n";
  +      echo " in cache $errfile($errline)<br /></div>\n";
  +      break;
  +    case E_NOTICE:
  +      #echo "<div><b>NOTICE</b> [$errno] $errstr<br />\n";
  +      #echo "  on line $errline in cache $errfile<br /></div>\n";
  +      break;
  +    case E_USER_ERROR:
  +      echo "<div><b>ERROR</b> [$errno] $errstr<br />\n";
  +      echo "  Fatal error in file $errfile($errline)";
  +      echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n";
  +      echo "Skip...<br /></div>\n";
  +      break;
  +  
  +    case E_USER_WARNING:
  +      echo "<b>MoniWiki WARNING</b> [$errno] $errstr<br />\n";
  +      break;
  +  
  +    case E_USER_NOTICE:
  +      echo "<b>MoniWiki NOTICE</b> [$errno] $errstr<br />\n";
  +      break;
  +  
  +    default:
  +      echo "Unknown error type: [$errno] $errstr<br />\n";
  +      break;
  +    }
  +  
  +    /* http://kr2.php.net/manual/en/function.set-error-handler.php */
  +    return true;
  +  }
  +
   } # end-of-Formatter
   
   # setup the locale like as the phpwiki style
  
  
  


wkpark      2008/03/31 10:25:58

  Modified:    plugin   bbs.php
  Log:
  add a new mode 'simple'.
  fix to work with given bbs name (replace link_to() with link_tag() etc.)
  merge confs with default config vals
  
  Revision  Changes    Path
  1.4       +51 -24    moniwiki/plugin/bbs.php
  
  Index: bbs.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/bbs.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- bbs.php	29 Mar 2008 06:35:52 -0000	1.3
  +++ bbs.php	31 Mar 2008 01:25:58 -0000	1.4
  @@ -5,7 +5,7 @@
   //
   // Usage: [[BBS(pagename,count,mode)]]
   //
  -// $Id: bbs.php,v 1.3 2008/03/29 06:35:52 wkpark Exp $
  +// $Id: bbs.php,v 1.4 2008/03/31 01:25:58 wkpark Exp $
   
   function _get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -431,7 +431,7 @@
       global $DBInfo;
   
       # set defaults
  -    $ncount=20;
  +    $ncount=20; # default
       $bname=$formatter->page->name;
   
       $nid='';
  @@ -444,18 +444,22 @@
               $k=substr($arg,0,$p);
               $v=substr($arg,$p+1);
               if ($k=='no') $nid=$v;
  -        } else if ($arg == 'mode') {}
  -        else if ($arg == (int) $arg) { $ncount=$arg; }
  +            else if ($k=='mode') $options['mode']=$v;
  +        } else if ($arg == 'mode') { }
  +        else if ($arg == ((int) $arg)."") { $ncount=$arg; }
           else {
               $bname=$arg;
           }
       }
  +
  +    $bpage=_rawurlencode($bname);
       $nid= $_GET['no'] ? $_GET['no']:$nid;
   
       $nids=preg_split('/\s+/',$nid);
       rsort($nids);
   
       $options['p']= ($_GET['p'] > 0) ? $_GET['p']:1;
  +    $options['c']= ($ncount != 20) ? $ncount:'';
   
       # is it exists ?
       if (!$DBInfo->hasPage($bname)) {
  @@ -558,9 +562,9 @@
               "</div>\n</div>\n".
               '<div class="foot"><div></div></div>'."</div>\n";
               $snid=$nid;
  -            $btn['edit']=$formatter->link_to("?action=bbs&amp;mode=edit&amp;no=".$nid,
  +            $btn['edit']=$formatter->link_tag($bpage,"?action=bbs&amp;mode=edit&amp;no=".$nid,
                   '<span>'._("Edit").'</span>','class="button"');
  -            $btn['delete']=$formatter->link_to("?action=bbs&amp;mode=delete&amp;no=".$nid,
  +            $btn['delete']=$formatter->link_tag($bpage,"?action=bbs&amp;mode=delete&amp;no=".$nid,
                   '<span>'._("Delete").'</span>','class="button"');
               if ($narticle == 1 and $conf['use_comment']) {
                   $opts['action']='bbs';
  @@ -633,13 +637,13 @@
       if ($options['mode'] == 'rss') {
           $rss='<'.'?xml version="1.0" encoding="utf-8"?>'."\n".'<rss version="2.0">'."\n";
           $rss.="<channel>\n<title>".$DBInfo->sitename.": </title>\n";
  -        $rss.="<link>".qualifiedUrl($formatter->link_url($formatter->page->urlname))."</link>\n";
  +        $rss.="<link>".qualifiedUrl($formatter->link_url($bpage))."</link>\n";
           $rss.="<description></description>\n";
           $rss.="<pubDate>".gmdate('D, j M Y H:i:s',time())." +0000</pubDate>\n";
           foreach ($list as $l) {
               $item="<item>\n";
               $item.="<title><![CDATA[".$l[7]."]]></title>\n";
  -            $item.="<link>".qualifiedUrl($formatter->link_url($formatter->page->urlname,"?no=$l[0]"))."</link>\n";
  +            $item.="<link>".qualifiedUrl($formatter->link_url($bpage,"?no=$l[0]"))."</link>\n";
               $item.="<author><![CDATA[".$l[3]."]]></author>\n";
               $item.="<description><![CDATA[".$l[3]."]]></description>\n";
               $item.="<pubDate>".gmdate('D, j M Y H:i:s',$l[2])." +0000</pubDate>\n</item>\n";
  @@ -648,26 +652,44 @@
           $rss.="</channel>\n</rss>\n";
   
           return $rss;
  +    } else 
  +    if ($options['mode'] == 'simple') {
  +        $simple="<div class='bbsSimple'><table class='bbsSimple'>\n";
  +        foreach ($list as $l) {
  +            $date=date("Y-m-d",$l[2]);
  +            $my=$l[7];
  +            $title='';
  +            if (function_exists('mb_strimwidth') and strlen($l[7]) > 60) {
  +                $title='title="'.$l[7].'"';
  +                $my=mb_strimwidth($l[7],0,40,'...',$DBInfo->charset);
  +            }
  +            $simple.="<tr><td class='date'>[".$date."]</td><td>".
  +                $formatter->link_tag($bpage,"?no=$l[0]".$extra,$my,$title).'</td></tr>';
  +        }
  +        $simple.="<tr><td colspan='2' class='more'>".$formatter->link_tag($bpage, "",_("More").'&#187;')."</td>\n</tr>\n";
  +        $simple.="</table>";
  +        
  +        return $simple;
       }
   
       if ($pages > 1)
         $pnut=_get_pagelist($formatter,$pages,
           '?'.$extra.
  -        '&amp;p=',$options['p'],$ncount);
  +        ($extra ?'&amp;p=':'p='),$options['p'],$ncount);
   
       $extra=$options['p'] ? '&amp;p='.$options['p']:'';
   
  -    $head=array(_("no"),'C',_("Title"),_("Name"),_("Date"),_("Hit"));
  -    $out.="<col width='3%' class='num' /><col width='1%' class='check' /><col width='63%' class='title' /><col width='14%' /><col width='13%' /><col width='7%' class='hit' />\n";
  -    $out.='<thead><tr><th>'.implode("</th><th>",$head)."</th></tr><thead>\n";
  -    $out.="<tbody>\n";
  +    #$head=array(_("no"),'C',_("Title"),_("Name"),_("Date"),_("Hit"));
  +    #$out.="<col width='3%' class='num' /><col width='1%' class='check' /><col width='63%' class='title' /><col width='14%' /><col width='13%' /><col width='7%' class='hit' />\n";
  +    #$out.='<thead><tr><th>'.implode("</th><th>",$head)."</th></tr><thead>\n";
  +    #$out.="<tbody>\n";
       $item=array();
       foreach ($list as $l) {
           $nid=&$l[0];
           $ip=&$l[1];
           $date=date("Y-m-d",$l[2]);
           $user=$l[3];
  -        $subject=$formatter->link_to("?no=$nid".$extra,$l[7]);
  +        $subject=$formatter->link_tag($bpage,"?no=$nid".$extra,$l[7]);
           $hit=$MyBBS->counter->pageCounter($nid);
           $chk='<input type="checkbox" value="'.$nid.'">';
           #$item=array(in_array($nid,$nids) ? '<strong>&raquo;</strong>':$nid,$chk,$subject,$user,$date,$hit);
  @@ -682,20 +704,21 @@
       }
   
       $formatter->_vars['item']=&$item;
  -    $out.= $formatter->processor_repl('tpl_','',array('path'=>'theme/plugin/BBS/blue_tpl/list.tpl'));
  -    #$out.= $formatter->processor_repl('tpl_','',array('path'=>'theme/plugin/BBS/blue_tpl/list.tpl','include'=>1));
  -    $out.="</tbody>\n";
  +    $out.= $formatter->include_theme('plugin/BBS/default','list',array());
  +    #$out.= $formatter->include_theme('plugin/BBS/blue_tpl','list',array());
  +    #$out.= $formatter->processor_repl('tpl_','',array('path'=>'theme/plugin/BBS/blue_tpl/list.tpl'));
  +    #$out.="</tbody>\n";
   
  -    $btn['new']=$formatter->link_to("?action=bbs&amp;mode=edit",'<span>'._("New").'</span>','class="button"');
  +    $btn['new']=$formatter->link_tag($bpage,"?action=bbs&amp;mode=edit",'<span>'._("New").'</span>','class="button"');
       unset($btn['edit']);
  -    $bn['view']=$formatter->link_to("",'<span>'._("Read").'</span>',
  +    $bn['view']=$formatter->link_tag($bpage,"",'<span>'._("Read").'</span>',
           'onclick="return send_list(this)" onfocus="blur()" class="button"');
  -    $bn['delete']=$formatter->link_to("",'<span>'._("Delete").'</span>',
  +    $bn['delete']=$formatter->link_tag($bpage,"",'<span>'._("Delete").'</span>',
           'onclick="return send_list(this,\'delete\')" onfocus="blur()" class="button"');
       $del="<div class='bbsAdminBtn'>".implode(" ",$bn)."</div>\n";
       $btns="<div class='bbsBtn'>".implode(" ",$btn)."</div>\n";
   
  -    $lnk=$formatter->link_url($formatter->page->urlname,'?action=bbs');
  +    $lnk=$formatter->link_url($bpage,'?action=bbs');
       $form0="<form method='get' action='$lnk'>\n";
       $form1='<input type="hidden" name="no" />';
       if ($options['p'])
  @@ -705,9 +728,9 @@
       $form1.="</form>\n";
       $pnut= "<div class='pnut'>$pnut</div>";
       $info= '<div class="bbsRSS">'.sprintf(_("Total %s articles."),'<strong>'.$tot.'</strong>').' '.
  -    #    $formatter->link_to('?action=bbs&amp;mode=rss','<span>RSS</span>').'</div>';
  -        $formatter->link_to('?action=bbs&amp;mode=rss',$formatter->icon['rss']).'</div>';
  -    return $info.$pnut."$msg$js$form0<table class='bbs' cellspacing='1' cellpadding='2'>".$out.'</table>'.$del.$form1.$pnut.$btns;
  +    #    $formatter->link_tag($bpage,'?action=bbs&amp;mode=rss','<span>RSS</span>').'</div>';
  +        $formatter->link_tag($bpage,'?action=bbs&amp;mode=rss',$formatter->icon['rss']).'</div>';
  +    return $info.$pnut.$msg.$js.$form0.$out.$del.$form1.$pnut.$btns;
   }
   
   function do_bbs($formatter,$options=array()) {
  @@ -724,13 +747,17 @@
       }
       # load a config file
       $bname=$formatter->page->name;
  +    $conf0=array();
       if (file_exists('config/bbs.'.$bname.'.php')) {
           $confname='bbs.'.$bname.'.php';
  +        $conf0=_load_php_vars('config/bbs.default.php');
       } else {
           $confname='bbs.default.php';
       }
       $conf=_load_php_vars('config/'.$confname);
   
  +    $conf=array_merge($conf0,$conf);
  +
       # check valid IP
       $check_ip=true;
       if ($conf['allowed_ip'] and in_array($options['mode'],array('edit','delete','new'))) {
  
  
  


wkpark      2008/03/31 10:26:42

  Modified:    plugin/processor tpl_.php
  Log:
  fetch() with mtime
  
  Revision  Changes    Path
  1.2       +2 -2      moniwiki/plugin/processor/tpl_.php
  
  Index: tpl_.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/tpl_.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- tpl_.php	29 Mar 2008 06:57:24 -0000	1.1
  +++ tpl_.php	31 Mar 2008 01:26:42 -0000	1.2
  @@ -8,14 +8,14 @@
   // Name: A Template_ processor
   // Description: A Template_ Processor could process Template_ syntaxs
   // URL: MoniWiki:TemplateUnderscore
  -// Version: $Revision: 1.1 $
  +// Version: $Revision: 1.2 $
   // License: LGPL
   //
   // Usage: {{{#!tpl_
   // {=date("Y-m-d h:i:s",time()) }
   // }}}
   //
  -// $Id: tpl_.php,v 1.1 2008/03/29 06:57:24 wkpark Exp $
  +// $Id: tpl_.php,v 1.2 2008/03/31 01:26:42 wkpark Exp $
   
   include_once (dirname(__FILE__).'/../../lib/Template_.compiler.php');
   
  @@ -38,7 +38,7 @@
   
       if (!$formatter->preview and $cache->exists($id) and $cache->mtime($id) > $mtime) {
           $params['_vars']=&$formatter->_vars;
  -        $ret = $cache->fetch($id,0,$params);
  +        $ret = $cache->fetch($id,$mtime,$params);
           if ($ret === true) return '';
           if ($params['print']) return eval('?'.'>'.$ret.'<'.'?php ');
           if ($params['raw']) return $ret;
  
  
  


wkpark      2008/03/31 20:47:15

  Modified:    .        wiki.php
  Log:
  support theme.php in a template_.
  backward compatibility with old theme files using extract()
  check pi[#format] correctly
  
  Revision  Changes    Path
  1.375     +16 -4     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.374
  retrieving revision 1.375
  diff -u -r1.374 -r1.375
  --- wiki.php	31 Mar 2008 01:22:25 -0000	1.374
  +++ wiki.php	31 Mar 2008 11:47:15 -0000	1.375
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.374 2008/03/31 01:22:25 wkpark Exp $
  +// $Id: wiki.php,v 1.375 2008/03/31 11:47:15 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.374 $',1,-1);
  +$_revision = substr('$Revision: 1.375 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -1531,6 +1531,8 @@
               fclose($fp);
               global $Config;
               $TPL_VAR=&$params['_vars']; # builtin Template_ support
  +            if (isset($TPL_VAR['_theme']) and is_array($TPL_VAR['_theme']) and $TPL_VAR['_theme']['compat'])
  +              extract($TPL_VAR['_theme']);
               $ehandle=false;
               if ($params['formatter']) {
                 $formatter=&$params['formatter']; # XXX
  @@ -1989,7 +1991,13 @@
         $type='php';
       }
   
  -    $theme_path='theme/'.$theme.'/'.$file.'.'.$type;
  +    $theme_dir='theme/'.$theme;
  +
  +    if (file_exists($theme_dir."/theme.php")) {
  +      $this->_vars['_theme']=_load_php_vars($theme_dir."/theme.php",$params);
  +    }
  +
  +    $theme_path=$theme_dir.'/'.$file.'.'.$type;
       if (!file_exists($theme_path)) {
         trigger_error(sprintf(_("File '%s' does not exist."),$file),E_USER_NOTICE);
         return '';
  @@ -2002,6 +2010,8 @@
       case 'php':
         global $Config;
         $TPL_VAR=&$this->_vars;
  +      if (isset($TPL_VAR['_theme']) and is_array($TPL_VAR['_theme']) and $TPL_VAR['_theme']['compat'])
  +        extract($TPL_VAR);
         if ($params['print']) {
           $out=include $theme_path;
         } else {
  @@ -2036,7 +2046,7 @@
       $pi=array();
   
       $format='';
  -    if (!$this->pi['#format']) { # set default page type. # XXX !$body ? v1.134 ?
  +    if (empty($this->pi['#format'])) { # set default page type. # XXX !$body ? v1.134 ?
         preg_match('%(:|/)%',$this->page->name,$sep);
         $key=strtok($this->page->name,':/');
         if (isset($Config['pagetype'][$key]) and $f=$Config['pagetype'][$key]) {
  @@ -2051,6 +2061,8 @@
           }
         } else if (isset($Config['pagetype']['*']))
           $format=$Config['pagetype']['*']; // default page type
  +    } else {
  +      $format=$this->pi['#format'];
       }
   
       if (!$body) {
  
  
  


wkpark      2008/04/05 02:35:20

  Modified:    plugin/processor jmol.php
  Log:
  support latest jmol features (MO,MEP) and hack hack.
  
  Revision  Changes    Path
  1.2       +131 -9    moniwiki/plugin/processor/jmol.php
  
  Index: jmol.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/jmol.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- jmol.php	26 Jan 2006 15:45:08 -0000	1.1
  +++ jmol.php	4 Apr 2008 17:35:20 -0000	1.2
  @@ -5,7 +5,7 @@
   //
   // http://jmol.sf.net
   //
  -// $Id: jmol.php,v 1.1 2006/01/26 15:45:08 wkpark Exp $
  +// $Id: jmol.php,v 1.2 2008/04/04 17:35:20 wkpark Exp $
   
   function processor_jmol($formatter,$value="") {
       $verbs=array('#sticks'=>'wireframe 0.25',
  @@ -16,7 +16,7 @@
                   '#black'=>'background [0,0,0]',
                   '#white'=>'background [255,255,255]',
                   );
  -    $default_size="width='200' height='200' ";
  +    $default_size="width='200' height='200'";
   
       if ($value[0]=='#' and $value[1]=='!')
         list($line,$value)=explode("\n",$value,2);
  @@ -33,6 +33,7 @@
       $script='set frank off; wireframe 0.18; spacefill 25%;';
       if ($DBInfo->jmol_script) $script.=$DBInfo->jmol_script;
   
  +
       while ($body and $body[0] == '#') {
           # extract first line
           list($line, $body) = explode("\n",$body, 2);
  @@ -51,9 +52,10 @@
       }
   
       if (!$args)
  -        $args.='<param name="style" value="sticks" />';
  +        $args.='<param name="style" value="sticks" />'."\n";
       if ($script)
  -        $args.='<param name="script" value="'.$script.'" />';
  +        $args.='<param name="script" value="'.$script.'" />'."\n";
  +    $args.='<param name="mayscript" value="true" />'."\n";
   
       if ($xsize) {
         if ($xsize > 640 or $xsize < 100) $xscale=0.5;
  @@ -62,22 +64,142 @@
       
         if (empty($yscale)) $yscale=$xscale/0.5*0.6;
   
  -      $size="width='$xsize' height='$ysize' ";
  +      $size="width='$xsize' height='$ysize'";
       } else $size=$default_size;
   
  -    $buff=str_replace("\n","|\n",$body)."\n";
  -    $molstring= trim($buff);
  +    $buff=str_replace("\n","\\n\"\n+\"",$body)."\n";
  +    $molstring= rtrim($buff);
  +
  +    $cid=&$GLOBALS['_transient']['jmol'];
  +    $id=$cid+0;
  +
  +    $js='';
  +    if ($id==0) {
  +        $jsize=str_replace(array(" ","'"),array(",",""),$size);
  +        $jsIE='';
  +        if (preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT'])) {
  +            $jsurl=qualifiedUrl($formatter->url_prefix.'/local/base64.js');
  +            $base64js="<script type='text/javascript' src='$jsurl'></script>";
  +            $base64url=$formatter->link_tag('/local/base64.js');
  +            $jsIE=<<<IEJS
  +<script type='text/javascript'>
  +/*<![CDATA[*/
  +function hello() {
  +    function fixBase64(img) {
  +        var myimg= img.cloneNode(true);
  +        alert(myimg.src.substr(0,10));
  +        var m=null;
  +        if (m=myimg.src.match(/^(data:.*;base64,)$/i)) {
  +            //img.src=decode64(m[1]);
  +            alert('w');
  +        }
  +    }
  +    for (var i = 0; i < document.images.length; i++)
  +       fixBase64(document.images[i]);
  +}
  +/*>*/
  +<\/script>
  +IEJS;
  +            $jsIE=preg_replace("/(\r\n|\n|\r)+/","\\\\n\"\n+\"",$jsIE);
  +        }
  +        $js=<<<JS
  +$base64js
  +<script type='text/javascript'>
  +/*<![CDATA[*/
  +        function open_image(base64) {
  +            base64=base64.replace(/\ \|\ /g, "").replace(/\s/g, "");
  +            var img = eval("("+base64+")").image;
  +            var imgsrc = "data:image/jpeg;base64,"+img;
  +
  +            var open=window.open('','_blank',"$jsize,menubar=1,toolbar=1,scrollbars=1,status=1,resizable=1");
  +            //var open=window.open('','_blank',"$jsize,menubar=0,toolbar=0,scrollbars=0,status=0");
  +            //var open=window.open(imgsrc,'_blank',"$jsize,menubar=0,toolbar=0,scrollbars=0,status=0");
  +            open.document.writeln(
  +                '<html><head><title>Image/JPEG</title><style>body {margin:0}</style>'
  +                +"$jsIE"
  +                +'</head><body>'
  +                +"<img src='" + imgsrc +"'" + " />"
  +                +'</body></html>');
  +            open.document.close();
  +            open.focus();
  +        }
  +/*>*/
  +</script>\n
  +JS;
  +    }
  +
  +    $cid++;
  +    $js.=<<<JS
  +<script type='text/javascript'>
  +/*<![CDATA[*/
  +addLoadEvent(function() {
  +    setTimeout(function() {
  +        var applet=document.getElementById("jmolApplet$id");
  +        if (applet && applet.isActive()) {
  +            var model="$molstring";
  +            applet.loadInline(model);
  +            applet.script("$script");
  +            applet.script("mo fill nomesh;mo TITLEFORMAT \"Model %M, MO %I/%N |E = %E %U |?Symm = %S |?Occ = %O\"");
  +
  +            var s=applet.getPropertyAsJSON('atomInfo') + "";
  +            var btns=document.getElementById('jmolButton$id');
  +            var A = eval("("+s+")");
  +            if (A.atomInfo != undefined && A.atomInfo[0].partialCharge) {
  +                var btn = document.createElement('button');
  +                var text = document.createTextNode('MEP');
  +                btn.appendChild(text);
  +                btn.onclick=function() {
  +                    document.jmolApplet$id.script('isosurface delete resolution 0 molecular map MEP translucent');
  +                };
  +                btns.appendChild(btn);
  +            }
  +
  +            s=applet.getPropertyAsJSON('auxiliaryInfo') + "";
  +            A = eval("("+s+")");
  +            if (A.auxiliaryInfo.models && A.auxiliaryInfo.models[0].moData) {
  +                var mos=A.auxiliaryInfo.models[0].moData.mos
  +                var len=mos.length;
  +                var sel = document.createElement('select');
  +                var opt = document.createElement('option');
  +                var text = document.createTextNode('-- MO --');
  +                sel.onchange=function() { document.jmolApplet$id.script(this.value); };
  +                sel.appendChild(opt);
  +                opt.appendChild(text);
  +                for (var i=len;i>0;i--) {
  +                    opt = document.createElement('option');
  +                    text = document.createTextNode('#' + i + ' E:' + mos[i-1].energy);
  +                    opt.appendChild(text);
  +                    sel.appendChild(opt);
  +                    opt.value= 'mo ' + i;
  +                }
  +                btns.appendChild(sel);
  +            }
  +        }
  +    } ,1000);
  +});
  +/*>*/
  +</script>\n
  +JS;
  +    $molstring=str_replace("\n","|\n",$body);
   
       $pubpath = $formatter->url_prefix.'/applets/JmolPlugin';
   
       return <<<APP
  -<applet code='JmolApplet.class' $size archive='$pubpath/JmolApplet.jar' codebase='$pubpath'>
  +<div>
  +<applet name='jmolApplet$id' id='jmolApplet$id' code='JmolApplet.class' $size archive='$pubpath/JmolApplet.jar' codebase='$pubpath' mayscript='mayscript'>
           $args
  -        <param name='inline' value='$molstring' />
       Loading a JmolApplet object.
   </applet>
  +$js
  +<div>
  +<button onclick="javascript:open_image(document.jmolApplet$id.getPropertyAsJSON('image'))">JPEG</button>
  +<span id='jmolButton$id'>
  +</span>
  +</div>
  +</div>
   APP;
   }
   
  +        //<param name='loadinline' value='$molstring' />
   // vim:et:sts=4:sw=4:
   ?>
  
  
  


wkpark      2008/04/05 22:47:33

  Modified:    plugin/processor jmol.php
  Log:
  more fixes
  
  Revision  Changes    Path
  1.3       +7 -6      moniwiki/plugin/processor/jmol.php
  
  Index: jmol.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/jmol.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- jmol.php	4 Apr 2008 17:35:20 -0000	1.2
  +++ jmol.php	5 Apr 2008 13:47:33 -0000	1.3
  @@ -5,7 +5,7 @@
   //
   // http://jmol.sf.net
   //
  -// $Id: jmol.php,v 1.2 2008/04/04 17:35:20 wkpark Exp $
  +// $Id: jmol.php,v 1.3 2008/04/05 13:47:33 wkpark Exp $
   
   function processor_jmol($formatter,$value="") {
       $verbs=array('#sticks'=>'wireframe 0.25',
  @@ -133,9 +133,9 @@
   <script type='text/javascript'>
   /*<![CDATA[*/
   addLoadEvent(function() {
  -    setTimeout(function() {
  +    this.timer=setTimeout(function() {
           var applet=document.getElementById("jmolApplet$id");
  -        if (applet && applet.isActive()) {
  +        if (applet && applet.isActive != undefined) {
               var model="$molstring";
               applet.loadInline(model);
               applet.script("$script");
  @@ -149,7 +149,7 @@
                   var text = document.createTextNode('MEP');
                   btn.appendChild(text);
                   btn.onclick=function() {
  -                    document.jmolApplet$id.script('isosurface delete resolution 0 molecular map MEP translucent');
  +                    applet.script('isosurface delete resolution 0 molecular map MEP translucent');
                   };
                   btns.appendChild(btn);
               }
  @@ -162,7 +162,7 @@
                   var sel = document.createElement('select');
                   var opt = document.createElement('option');
                   var text = document.createTextNode('-- MO --');
  -                sel.onchange=function() { document.jmolApplet$id.script(this.value); };
  +                sel.onchange=function() { applet.script(this.value); };
                   sel.appendChild(opt);
                   opt.appendChild(text);
                   for (var i=len;i>0;i--) {
  @@ -174,8 +174,9 @@
                   }
                   btns.appendChild(sel);
               }
  +            clearTimeout(this.timer);
           }
  -    } ,1000);
  +    } ,500);
   });
   /*>*/
   </script>\n
  
  
  


wkpark      2008/04/08 01:23:55

  moniwiki/theme/plugin/BBS/default - New directory

wkpark      2008/04/08 01:23:55

  moniwiki/theme/plugin/BBS/default_tpl - New directory

wkpark      2008/04/08 01:24:33

  Added:       theme/plugin/BBS/default list.php theme.php
  Log:
  add missing files
  
  Revision  Changes    Path
  1.1                  moniwiki/theme/plugin/BBS/default/list.php
  
  Index: list.php
  ===================================================================
  <table class='bbs' cellspacing='1' cellpadding='2'>
  <col width='3%' class='num' /><col width='1%' class='check' /><col width='63%' class='title' /><col width='14%' /><col width='13%' /><col width='7%' class='hit' />
  <thead><tr><th><?php echo _("no")?></th><th>C</th><th><?php echo _("Title")?></th><th><?php echo _("Name")?></th><th><?php echo _("Date")?></th><th><?php echo _("Hit")?></th></tr><thead>
  <tbody>
  <?php if(!empty($item)):foreach($item as $i):?>
  <tr><td> <?php echo $i["num"]?> </td><td> <?php echo $i["check"]?> </td> <td><?php echo $i["subject"]?> </td><td><?php echo $i["name"]?></td><td><?php echo $i["date"]?></td><td><?php echo $i["hit"]?></td></tr>
  <?php endforeach;endif;?>
  </tbody>
  </table>
  
  
  
  1.1                  moniwiki/theme/plugin/BBS/default/theme.php
  
  Index: theme.php
  ===================================================================
  <?php
  $compat=1;
  ?>
  
  
  


wkpark      2008/04/08 01:24:33

  Added:       theme/plugin/BBS/default_tpl list.tpl
  Log:
  add missing files
  
  Revision  Changes    Path
  1.1                  moniwiki/theme/plugin/BBS/default_tpl/list.tpl
  
  Index: list.tpl
  ===================================================================
  <table class='bbs' cellspacing='1' cellpadding='2'>
  <col width='3%' class='num' /><col width='1%' class='check' /><col width='63%' class='title' /><col width='14%' /><col width='13%' /><col width='7%' class='hit' />
  <thead><tr><th>{=_("no")}</th><th>C</th><th>{=_("Title")}</th><th>{=_("Name")}</th><th>{=_("Date")}</th><th>{=_("Hit")}</th></tr><thead>
  <tbody>
  <!--{@ item}-->
  <tr><td> {item.num} </td><td> {item.check} </td> <td>{item.subject} </td><td>{item.name}</td><td>{item.date}</td><td>{item.hit}</td></tr>
  <!--{/}-->
  </tbody>
  </table>
  
  
  


wkpark      2008/04/08 01:25:17

  Modified:    plugin/processor jmol.php
  Log:
  more update
  
  Revision  Changes    Path
  1.4       +9 -8      moniwiki/plugin/processor/jmol.php
  
  Index: jmol.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/jmol.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- jmol.php	5 Apr 2008 13:47:33 -0000	1.3
  +++ jmol.php	7 Apr 2008 16:25:17 -0000	1.4
  @@ -5,14 +5,14 @@
   //
   // http://jmol.sf.net
   //
  -// $Id: jmol.php,v 1.3 2008/04/05 13:47:33 wkpark Exp $
  +// $Id: jmol.php,v 1.4 2008/04/07 16:25:17 wkpark Exp $
   
   function processor_jmol($formatter,$value="") {
       $verbs=array('#sticks'=>'wireframe 0.25',
                   '#ball&stick'=>'wireframe 0.18; spacefill 25%',
                   '#wireframe'=>'wireframe 0.1',
  -                '#cpk'=>'cpk 80%',
  -                '#spacefill'=>'cpk %80',
  +                '#cpk'=>'spacefill 80%',
  +                '#spacefill'=>'spacefill %80',
                   '#black'=>'background [0,0,0]',
                   '#white'=>'background [255,255,255]',
                   );
  @@ -27,7 +27,7 @@
       }
   
       $body = $value;
  -    $args='<param name="emulate" value="chime" />';
  +    //$args='<param name="emulate" value="chime" />';
       $args.='<param name="progressbar" value="true" />';
   
       $script='set frank off; wireframe 0.18; spacefill 25%;';
  @@ -134,17 +134,16 @@
   /*<![CDATA[*/
   addLoadEvent(function() {
       this.timer=setTimeout(function() {
  -        var applet=document.getElementById("jmolApplet$id");
  +        applet=document.getElementById("jmolApplet$id");
           if (applet && applet.isActive != undefined) {
               var model="$molstring";
               applet.loadInline(model);
               applet.script("$script");
  -            applet.script("mo fill nomesh;mo TITLEFORMAT \"Model %M, MO %I/%N |E = %E %U |?Symm = %S |?Occ = %O\"");
   
               var s=applet.getPropertyAsJSON('atomInfo') + "";
               var btns=document.getElementById('jmolButton$id');
               var A = eval("("+s+")");
  -            if (A.atomInfo != undefined && A.atomInfo[0].partialCharge) {
  +            if (A && A.atomInfo != undefined && A.atomInfo[0].partialCharge) {
                   var btn = document.createElement('button');
                   var text = document.createTextNode('MEP');
                   btn.appendChild(text);
  @@ -156,7 +155,8 @@
   
               s=applet.getPropertyAsJSON('auxiliaryInfo') + "";
               A = eval("("+s+")");
  -            if (A.auxiliaryInfo.models && A.auxiliaryInfo.models[0].moData) {
  +            if (A && A.auxiliaryInfo.models && A.auxiliaryInfo.models[0].moData) {
  +                applet.script("mo fill nomesh;mo TITLEFORMAT \"Model %M, MO %I/%N |E = %E %U |?Symm = %S |?Occ = %O\"");
                   var mos=A.auxiliaryInfo.models[0].moData.mos
                   var len=mos.length;
                   var sel = document.createElement('select');
  @@ -194,6 +194,7 @@
   $js
   <div>
   <button onclick="javascript:open_image(document.jmolApplet$id.getPropertyAsJSON('image'))">JPEG</button>
  +<button onclick="javascript:open_image(document.jmolApplet$id.script('set minimizationSteps 10;set minimizationRefresh true;set minimizationCriterion 0.001; set loglevel 6;select *;minimize'))">MM</button>
   <span id='jmolButton$id'>
   </span>
   </div>
  
  
  


wkpark      2008/04/08 01:26:32

  Modified:    plugin   bbs.php
  Log:
  protect some html tags
  
  Revision  Changes    Path
  1.5       +25 -2     moniwiki/plugin/bbs.php
  
  Index: bbs.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/bbs.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- bbs.php	31 Mar 2008 01:25:58 -0000	1.4
  +++ bbs.php	7 Apr 2008 16:26:32 -0000	1.5
  @@ -5,7 +5,7 @@
   //
   // Usage: [[BBS(pagename,count,mode)]]
   //
  -// $Id: bbs.php,v 1.4 2008/03/31 01:25:58 wkpark Exp $
  +// $Id: bbs.php,v 1.5 2008/04/07 16:26:32 wkpark Exp $
   
   function _get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -469,11 +469,14 @@
       # load a config file
       if (file_exists('config/bbs.'.$bname.'.php')) {
           $confname='bbs.'.$bname.'.php';
  +        $conf0=_load_php_vars('config/bbs.default.php');
       } else {
           $confname='bbs.default.php';
       }
  -
       $conf=_load_php_vars('config/'.$confname);
  +
  +    $conf=array_merge($conf0,$conf);
  +
       $conf['data_dir']=$DBInfo->data_dir;
       $conf['dba_type']=$DBInfo->dba_type;
   
  @@ -547,10 +550,15 @@
   
               $save=$formatter->preview;
               $formatter->preview=1;
  +            $save_markup=$formatter->format;
               ob_start();
  +            if ($conf['default_markup']) {
  +                $formatter->pi['#format']=$conf['default_markup'];
  +            }
               $formatter->send_page($body,$options);
               $body= ob_get_contents();
               ob_end_clean();
  +            $formatter->pi['#format']= $save_markup;
               $formatter->self_query=$q_save;
   
               $msg.="<div class='bbsArticle'>".
  @@ -867,11 +875,26 @@
               $savetext=$options['savetext'];
               $datestamp=$options['datestamp'];
               $subject=$options['subject'];
  +            # strip some tags from the subject
  +            $subject=
  +                preg_replace("%</?(marquee|embed|object|script|form|frame|iframe|img|a|)[^>]*>%",
  +                    '',$subject);
               $args['subject']=_stripslashes($subject);
               if ($options['id']=='Anonymous') {
                   $name=$options['name'];
  +                $name=strip_tags($name);
                   $pass=$options['pass'];
                   $home=$options['homepage'];
  +                # check a homepage address
  +                if (!empty($home)) {
  +                    if (!preg_match('/^((ftp|http|news):\/\/)[a-z0-9][a-z0-9_\-]+\.[a-z0-9\-\.]+.*/',$home)) {
  +                        $options['msg']=_("Invalid HomePage address.");
  +                        break;   
  +                    } else if (!eregi("^(ftp|http|news):\/\/",$home)) {
  +                        $home="http://".$home;
  +                    }
  +                }
  +                # check email address
                   $email=$options['email'];
   
                   $args['name']=_stripslashes($name);
  
  
  


wkpark      2008/04/08 01:26:55

  Modified:    plugin   cacheadmin.php
  Log:
  add a warn message
  
  Revision  Changes    Path
  1.2       +7 -4      moniwiki/plugin/cacheadmin.php
  
  Index: cacheadmin.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/cacheadmin.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- cacheadmin.php	6 Aug 2006 15:53:34 -0000	1.1
  +++ cacheadmin.php	7 Apr 2008 16:26:54 -0000	1.2
  @@ -5,7 +5,7 @@
   //
   // Usage: ?action=cacheadmin
   //
  -// $Id: cacheadmin.php,v 1.1 2006/08/06 15:53:34 wkpark Exp $
  +// $Id: cacheadmin.php,v 1.2 2008/04/07 16:26:54 wkpark Exp $
   
   function info_CacheAdmin() {
       return array(
  @@ -14,7 +14,7 @@
           'name'    => 'CacheAdmin',
           'desc'    => 'CacheAdmin Plugin',
           'url'     => 'MoniWiki:CacheAdminPlugin',
  -        'version' => substr('$Revision: 1.1 $',1,-1),
  +        'version' => substr('$Revision: 1.2 $',1,-1),
           'depend'  => '1.1.1',
           'license' => 'GPL',
        );
  @@ -102,8 +102,11 @@
   
   function do_cacheadmin($formatter,$options) {
       global $Config;
  -    if (in_array($options['id'],$Config['owners']) and
  -        is_array($options['val'])) {
  +    while ($_SERVER['REQUEST_METHOD']=='POST') {
  +        if (!in_array($options['id'],$Config['owners']) or !is_array($options['val'])) {
  +            $options['title']=_("You are not WikiMaster!!"); 
  +            break;
  +        }
   
           if ($options['type']!='public') $dir=$Config['cache_dir'];
           else $dir=$Config['cache_public_dir'];
  @@ -116,7 +119,7 @@
           }
           return;
       }
  -    $options['title']=_("Clear cache dirs"); 
  +    $options['title']=$options['title'] ? $options['title']:_("Clear cache dirs"); 
       $formatter->send_header('',$options);
       $formatter->send_title('','',$options);
       $ret= macro_CacheAdmin($formatter,$options['value'],$options);
  
  
  


wkpark      2008/04/08 01:29:59

  Modified:    plugin   Draw.php
  Log:
  add some info. use _mkdir_p if needed
  
  Revision  Changes    Path
  1.6       +14 -3     moniwiki/plugin/Draw.php
  
  Index: Draw.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Draw.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Draw.php	29 Mar 2008 06:34:54 -0000	1.5
  +++ Draw.php	7 Apr 2008 16:29:59 -0000	1.6
  @@ -1,11 +1,18 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2008 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // Draw plugin with the JHotDraw for the MoniWiki
   //
  -// Usage: [[Draw(hello)]]
  +// Author: Won-Kyu Park <wkpark@kldp.org>
  +// Date: 2003-01-01
  +// Name: Draw Plugin
  +// Description: Draw gif drawing using the TWiki Draw plugin 
  +// URL: MoniWiki:DrawPlugin
  +// Version: $Revision: 1.6 $
  +// License: GPL
  +// Usage: [[Draw(hello)]] without a gif extention.
   //
  -// $Id: Draw.php,v 1.5 2008/03/29 06:34:54 wkpark Exp $
  +// $Id: Draw.php,v 1.6 2008/04/07 16:29:59 wkpark Exp $
   
   function macro_Draw($formatter,$value) {
     global $DBInfo;
  @@ -53,6 +60,10 @@
     $_dir=str_replace("./",'',$DBInfo->upload_dir.'/'.$keyname);
     $pagename=$options['page'];
   
  +  umask(000);
  +  if (!file_exists($_dir))
  +    mkdir($_dir, 0777);
  +
     $name=$options['value'];
   
     if ($_FILES['filepath']) {
  
  
  


wkpark      2008/04/08 01:32:13

  Added:       plugin/function returnHello.php
  Log:
  add a simple function plugin for Templete_
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/function/returnHello.php
  
  Index: returnHello.php
  ===================================================================
  <?php
  // Copyright 2008 Your name <foobar at foo.bar>
  // All rights reserved. Distributable under GPL see COPYING
  // a sample function plugin for the MoniWiki
  //
  // Author: Your name <foobar@foo.bar>
  // Date: 2008-01-01
  // Name: Hello world
  // Description: Hello world function plugin
  // URL: to_plugin url/interwiki name etc.
  // Version: $Revision: 1.1 $
  // License: GPL
  //
  // Usage: can be used in template files {=returnHello("foo")}
  //
  // $Id: returnHello.php,v 1.1 2008/04/07 16:32:13 wkpark Exp $
  
  function function_returnHello($formatter,$user='world')
  {
      return 'hello '.$user;
  }
  
  // vim:et:sts=4:sw=4:
  ?>
  
  
  


wkpark      2008/04/09 20:19:10

  Modified:    css      _extra.css
  Log:
  update
  
  Revision  Changes    Path
  1.16      +6 -0      moniwiki/css/_extra.css
  
  Index: _extra.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_extra.css,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- _extra.css	26 Mar 2008 10:11:22 -0000	1.15
  +++ _extra.css	9 Apr 2008 11:19:09 -0000	1.16
  @@ -362,6 +362,8 @@
   
   /* Moniwiki BBS plugin */
   table.bbs { width:100%;}
  +.bbsSimple .date { font-family: Trebuchet MS,Sans-serif;}
  +.bbsSimple .more { text-align:right;}
   
   table.bbs thead {
     background:url(../imgs/plugin/BBS/titlebg.png) repeat-x;
  @@ -454,6 +456,10 @@
   .bbsAdminBtn {
   }
   
  +.bbsRSS {
  +  float:right;
  +}
  +
   td.hit { text-align:center; }
   td.date { text-align:center; }
   td.no { text-align:center; }
  
  
  


wkpark      2008/04/10 18:33:02

  Modified:    .        wiki.php
  Log:
  fixed up heading bug with dummy chars.
  
  Revision  Changes    Path
  1.376     +3 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.375
  retrieving revision 1.376
  diff -u -r1.375 -r1.376
  --- wiki.php	31 Mar 2008 11:47:15 -0000	1.375
  +++ wiki.php	10 Apr 2008 09:33:02 -0000	1.376
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.375 2008/03/31 11:47:15 wkpark Exp $
  +// $Id: wiki.php,v 1.376 2008/04/10 09:33:02 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.375 $',1,-1);
  +$_revision = substr('$Revision: 1.376 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -3622,6 +3622,7 @@
           }
   
           $line=$anchor.$edit.$this->head_repl(strlen($m[1]),$m[2],$attr);
  +        $dummy='';
           $line.=$this->_div(1,$in_div,$dummy,' id="sc-'.$this->sect_num.'"'); // for folding
           $edit='';$anchor='';
         }
  
  
  


wkpark      2008/04/10 18:34:50

  Modified:    plugin/processor jmol.php
  Log:
  fixup and workaround to preserve spaces with a loadinline param
  
  Revision  Changes    Path
  1.5       +56 -34    moniwiki/plugin/processor/jmol.php
  
  Index: jmol.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/jmol.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- jmol.php	7 Apr 2008 16:25:17 -0000	1.4
  +++ jmol.php	10 Apr 2008 09:34:50 -0000	1.5
  @@ -1,23 +1,25 @@
   <?php
  -// Copyright 2004 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2004-2008 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a Jmol plugin for the MoniWiki
   //
   // http://jmol.sf.net
   //
  -// $Id: jmol.php,v 1.4 2008/04/07 16:25:17 wkpark Exp $
  +// $Id: jmol.php,v 1.5 2008/04/10 09:34:50 wkpark Exp $
   
   function processor_jmol($formatter,$value="") {
       $verbs=array('#sticks'=>'wireframe 0.25',
                   '#ball&stick'=>'wireframe 0.18; spacefill 25%',
                   '#wireframe'=>'wireframe 0.1',
                   '#cpk'=>'spacefill 80%',
  -                '#spacefill'=>'spacefill %80',
  +                '#spacefill'=>'spacefill 80%',
                   '#black'=>'background [0,0,0]',
                   '#white'=>'background [255,255,255]',
                   );
       $default_size="width='200' height='200'";
   
  +    $use_inline=1; // MOPAC format does not recognized with a param "loadInline"
  +
       if ($value[0]=='#' and $value[1]=='!')
         list($line,$value)=explode("\n",$value,2);
       list($dum,$szarg)=explode(' ',$line);
  @@ -30,7 +32,8 @@
       //$args='<param name="emulate" value="chime" />';
       $args.='<param name="progressbar" value="true" />';
   
  -    $script='set frank off; wireframe 0.18; spacefill 25%;';
  +    $script='set defaultColors Rasmol;set frank off;wireframe 0.18;spacefill 25%;';
  +    //$script='set frank off;wireframe 0.18;spacefill 25%;';
       if ($DBInfo->jmol_script) $script.=$DBInfo->jmol_script;
   
   
  @@ -67,8 +70,13 @@
         $size="width='$xsize' height='$ysize'";
       } else $size=$default_size;
   
  -    $buff=str_replace("\n","\\n\"\n+\"",$body)."\n";
  -    $molstring= rtrim($buff);
  +    $molstring='';
  +    $molscript='';
  +    if ($use_inline == 0) {
  +        $buff=str_replace("\n","\\n\"\n+\"",$body)."\n";
  +        $molstring= rtrim($buff);
  +        $molscript=&$script;
  +    }
   
       $cid=&$GLOBALS['_transient']['jmol'];
       $id=$cid+0;
  @@ -123,46 +131,32 @@
               open.document.close();
               open.focus();
           }
  -/*>*/
  -</script>\n
  -JS;
  -    }
  -
  -    $cid++;
  -    $js.=<<<JS
  -<script type='text/javascript'>
  -/*<![CDATA[*/
  -addLoadEvent(function() {
  -    this.timer=setTimeout(function() {
  -        applet=document.getElementById("jmolApplet$id");
  -        if (applet && applet.isActive != undefined) {
  -            var model="$molstring";
  -            applet.loadInline(model);
  -            applet.script("$script");
   
  -            var s=applet.getPropertyAsJSON('atomInfo') + "";
  -            var btns=document.getElementById('jmolButton$id');
  +        function addJmolBtns(applet,btns) {
  +            this.applet=applet;
  +            var self=this;
  +            var s=this.applet.getPropertyAsJSON('atomInfo') + "";
               var A = eval("("+s+")");
  -            if (A && A.atomInfo != undefined && A.atomInfo[0].partialCharge) {
  +            if (A && A.atomInfo[0] != undefined && A.atomInfo[0].partialCharge) {
                   var btn = document.createElement('button');
                   var text = document.createTextNode('MEP');
                   btn.appendChild(text);
                   btn.onclick=function() {
  -                    applet.script('isosurface delete resolution 0 molecular map MEP translucent');
  +                    self.applet.script('isosurface delete resolution 0 molecular map MEP translucent');
                   };
                   btns.appendChild(btn);
               }
   
  -            s=applet.getPropertyAsJSON('auxiliaryInfo') + "";
  +            s=this.applet.getPropertyAsJSON('auxiliaryInfo') + "";
               A = eval("("+s+")");
  -            if (A && A.auxiliaryInfo.models && A.auxiliaryInfo.models[0].moData) {
  -                applet.script("mo fill nomesh;mo TITLEFORMAT \"Model %M, MO %I/%N |E = %E %U |?Symm = %S |?Occ = %O\"");
  +            if (A != undefined && A.auxiliaryInfo.models && A.auxiliaryInfo.models[0].moData) {
  +                this.applet.script("mo fill nomesh;mo TITLEFORMAT \"Model %M, MO %I/%N |E = %E %U |?Symm = %S |?Occ = %O\"");
                   var mos=A.auxiliaryInfo.models[0].moData.mos
                   var len=mos.length;
                   var sel = document.createElement('select');
                   var opt = document.createElement('option');
                   var text = document.createTextNode('-- MO --');
  -                sel.onchange=function() { applet.script(this.value); };
  +                sel.onchange=function() { self.applet.script(this.value); };
                   sel.appendChild(opt);
                   opt.appendChild(text);
                   for (var i=len;i>0;i--) {
  @@ -174,17 +168,46 @@
                   }
                   btns.appendChild(sel);
               }
  -            clearTimeout(this.timer);
  +        }
  +
  +var _jmolTimer=new Array();
  +/*>*/
  +</script>\n
  +JS;
  +    }
  +
  +    $cid++;
  +    $js.=<<<JS
  +<script type='text/javascript'>
  +/*<![CDATA[*/
  +addLoadEvent(function() {
  +    _jmolTimer[$id]=setInterval(function() {
  +        var model="$molstring";
  +        var script="$molscript";
  +        var applet=document.getElementById("jmolApplet$id");
  +        if (applet && applet.isActive != undefined) {
  +            if (model.length > 0 ) applet.loadInline(model);
  +            if (script.length > 0 ) applet.script(script);
  +
  +            var btns=document.getElementById('jmolButton$id');
  +
  +            addJmolBtns(applet,btns);
  +            clearInterval(_jmolTimer[$id]);
           }
       } ,500);
   });
   /*>*/
   </script>\n
   JS;
  -    $molstring=str_replace("\n","|\n",$body);
   
       $pubpath = $formatter->url_prefix.'/applets/JmolPlugin';
   
  +    if ($use_inline) {
  +        $molstring=str_replace("\n","|\n",$body);
  +        if ($molstring{0} == ' ') $molstring="|\n".$molstring;
  +        $args.="<param name='loadinline' value='$molstring' />";
  +    }
  +
       return <<<APP
   <div>
   <applet name='jmolApplet$id' id='jmolApplet$id' code='JmolApplet.class' $size archive='$pubpath/JmolApplet.jar' codebase='$pubpath' mayscript='mayscript'>
  @@ -194,7 +217,7 @@
   $js
   <div>
   <button onclick="javascript:open_image(document.jmolApplet$id.getPropertyAsJSON('image'))">JPEG</button>
  -<button onclick="javascript:open_image(document.jmolApplet$id.script('set minimizationSteps 10;set minimizationRefresh true;set minimizationCriterion 0.001; set loglevel 6;select *;minimize'))">MM</button>
  +<button onclick="javascript:document.jmolApplet$id.script('set minimizationSteps 10;set minimizationRefresh true;set minimizationCriterion 0.001; set loglevel 6;select *;minimize')">MM</button>
   <span id='jmolButton$id'>
   </span>
   </div>
  @@ -202,6 +225,5 @@
   APP;
   }
   
  -        //<param name='loadinline' value='$molstring' />
   // vim:et:sts=4:sw=4:
   ?>
  
  
  


wkpark      2008/04/10 18:35:20

  Modified:    plugin/processor pic.php
  Log:
  enalbe public cache
  
  Revision  Changes    Path
  1.5       +21 -8     moniwiki/plugin/processor/pic.php
  
  Index: pic.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/pic.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- pic.php	7 Jul 2006 12:59:57 -0000	1.4
  +++ pic.php	10 Apr 2008 09:35:20 -0000	1.5
  @@ -1,9 +1,9 @@
   <?php
  -// Copyright 2003-2006 Kim Jeong Yeon <see2002 at new-type.com>
  +// Copyright 2003-2008 Kim Jeong Yeon <see2002 at new-type.com>
   // All rights reserved. Distributable under GPL see COPYING
   // a PIC plugin for the MoniWiki
   //
  -// $Id: pic.php,v 1.4 2006/07/07 12:59:57 wkpark Exp $
  +// $Id: pic.php,v 1.5 2008/04/10 09:35:20 wkpark Exp $
   // Usage: {{{#!pic
   // some codes
   // }}}
  @@ -16,6 +16,8 @@
   
     $vartmp_dir=&$DBInfo->vartmp_dir;
     $cache_dir=$DBInfo->upload_dir."/PIC";
  +  $cache_url=$DBInfo->upload_url ? $DBInfo->upload_url.'/PIC':
  +    $DBInfo->url_prefix.'/'.$cache_dir;
   
     if ($value[0]=='#' and $value[1]=='!')
       list($line,$value)=explode("\n",$value,2);
  @@ -25,18 +27,29 @@
     # print "<pre>$pic_script</pre>";
   
     $uniq=md5($pic_script);
  +  if ($DBInfo->cache_public_dir) {
  +    $fc=new Cache_text('pic',2,'png',$DBInfo->cache_public_dir);
  +    $pngname=$fc->_getKey($uniq,0);
  +    $outpath_png= $DBInfo->cache_public_dir.'/'.$pngname;
  +
  +    $png_url=
  +      $DBInfo->cache_public_url ? $DBInfo->cache_public_url.'/'.$pngname:
  +      $DBInfo->url_prefix.'/'.$png;
  +  } else {
  +    $outpath_png=$cache_dir.'/'.$uniq.'.png';
  +    $png_url=$cache_url.'/'.$uniq.'.png';
  +
  +  }
     $outpath_pic="$vartmp_dir/$uniq.pic";
     $outpath_ps="$vartmp_dir/$uniq.ps";
  -  $outpath_png="$cache_dir/$uniq.png";
  -
   
  -  if (!file_exists($cache_dir)) {
  +  if (!file_exists(dirname($outpath_png))) {
       umask(000);
  -    mkdir($cache_dir,0777);
  +    _mkdir_p(dirname($outpath_png),0777);
       umask(022);
     }
   
  -  if ($formatter->refresh || !file_exists("$cache_dir/$uniq.png")) {
  +  if ($formatter->refresh || !file_exists($outpath_png)) {
       # write to pic script file
       $ifp=fopen("$outpath_pic","w");
       fwrite($ifp,$pic_script);
  @@ -52,7 +65,7 @@
       unlink($outpath_ps);
       unlink($outpath_pic);
     }
  -  return "<img class='tex' src='$DBInfo->url_prefix/$cache_dir/$uniq.png' alt='pic' />";
  +  return "<img class='tex' src='$png_url' alt='pic' />";
   }
   
   ?>
  
  
  


wkpark      2008/04/10 18:36:16

  Modified:    plugin   man_get.php
  Log:
  add some language support
  
  Revision  Changes    Path
  1.8       +7 -4      moniwiki/plugin/man_get.php
  
  Index: man_get.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/man_get.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- man_get.php	8 Jan 2008 14:51:45 -0000	1.7
  +++ man_get.php	10 Apr 2008 09:36:16 -0000	1.8
  @@ -1,14 +1,17 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2008 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a man_get action plugin for the MoniWiki
   //
  -// $Id: man_get.php,v 1.7 2008/01/08 14:51:45 wkpark Exp $
  -// vim:et:ts=2:
  +// $Id: man_get.php,v 1.8 2008/04/10 09:36:16 wkpark Exp $
  +// vim:et:sts=2:sw=2
   
   function do_man_get($formatter,$options) {
     global $DBInfo;
  -  $supported=array('ko','ja','fr','C','en');
  +  $supported=array('C',
  +    'bg','de','en','fr','hu','ja','pt','ru','sr',
  +    'cs','de_DE', 'es','fr_FR','id','ko','nl','pt_BR','sk','sv',
  +    'da','el','fi','hr','it','pl','ro','sl');
   
     if (!$options['man']) {
       $options['title']=_("No manpage selected");
  
  
  


wkpark      2008/04/10 18:37:06

  Modified:    plugin   Keywords.php
  Log:
  slightly modify to check the mtime of cache of keywords
  
  Revision  Changes    Path
  1.25      +2 -2      moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- Keywords.php	26 Nov 2007 06:52:42 -0000	1.24
  +++ Keywords.php	10 Apr 2008 09:37:06 -0000	1.25
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a 'Keywords' plugin for the MoniWiki
   //
  -// $Id: Keywords.php,v 1.24 2007/11/26 06:52:42 wkpark Exp $
  +// $Id: Keywords.php,v 1.25 2008/04/10 09:37:06 wkpark Exp $
   
   define(LOCAL_KEYWORDS,'LocalKeywords');
   
  @@ -67,7 +67,7 @@
           $cmt=$mc->mtime($mkey);
   
           # check update or not
  -        $dmt=filemtime($DBInfo->text_dir.'/.');
  +        $dmt=filemtime($DBInfo->cache_dir.'/keywords/.');
           if ($dmt > $cmt) { # XXX crude method
               $mykeys=array();
           } else {
  
  
  


wkpark      2008/04/11 22:54:22

  Modified:    .        wiki.php
  Log:
  rcsdiff with "--minimal" option
  
  Revision  Changes    Path
  1.377     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.376
  retrieving revision 1.377
  diff -u -r1.376 -r1.377
  --- wiki.php	10 Apr 2008 09:33:02 -0000	1.376
  +++ wiki.php	11 Apr 2008 13:54:22 -0000	1.377
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.376 2008/04/10 09:33:02 wkpark Exp $
  +// $Id: wiki.php,v 1.377 2008/04/11 13:54:22 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.376 $',1,-1);
  +$_revision = substr('$Revision: 1.377 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -1339,7 +1339,7 @@
       if ($rev2) $option.="-r$rev2 ";
   
       $filename=$this->_filename($pagename);
  -    $fp=popen("rcsdiff -x,v/ -u $option ".$filename.$this->NULL,'r');
  +    $fp=popen("rcsdiff -x,v/ --minimal -u $option ".$filename.$this->NULL,'r');
       if (!is_resource($fp)) return '';
       while (!feof($fp)) {
         # trashing first two lines
  
  
  


wkpark      2008/04/12 00:18:37

  Modified:    local    moniwyg.js
  Log:
  use markup/ajax instead of markup
  
  Revision  Changes    Path
  1.40      +6 -6      moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.39
  retrieving revision 1.40
  diff -u -r1.39 -r1.40
  --- moniwyg.js	1 Dec 2007 02:11:51 -0000	1.39
  +++ moniwyg.js	11 Apr 2008 15:18:37 -0000	1.40
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.39 2007/12/01 02:11:51 wkpark Exp $
  +// $Id: moniwyg.js,v 1.40 2008/04/11 15:18:37 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -190,7 +190,7 @@
                           .replace(/&lt;/g,'<')
                           .replace(/&amp;/g,'&')
                           ;
  -        var postdata = 'action=markup&value=' + encodeURIComponent(myText);
  +        var postdata = 'action=markup/ajax&value=' + encodeURIComponent(myText);
           var myhtml= HTTPPost(top.location, postdata);
   
           // hack hack
  @@ -463,7 +463,7 @@
       var form=HTTPPost(location,toSend);
       if (form.substring(0,4) == 'true') {
           // get section
  -        var toSend = 'action=markup&all=1';
  +        var toSend = 'action=markup/ajax&all=1';
           if (section)
               toSend += '&section=' + section;
           form=HTTPPost(location,toSend);
  @@ -909,7 +909,7 @@
           var myhtml = '<'+tag+'>' + m[2] + '</'+ tag +'>';
           this.exec_command('inserthtml', myhtml);
       } else if (selection.match(/^\[\[.*\]\]$/)) { // macro or links XXX FIXME
  -        var postdata = 'action=markup&value=' + encodeURIComponent(selection);
  +        var postdata = 'action=markup/ajax&value=' + encodeURIComponent(selection);
           var myhtml= HTTPPost(top.location, postdata);
   
           var myhtml = myhtml.replace(/^(.|\n)*<div>(\s|\n)*(<span)/i,'$3')
  @@ -2351,7 +2351,7 @@
   }
   
   proto.convertWikitextToHtml = function(wikitext, func) {
  -    var postdata = 'action=markup&value=' + encodeURIComponent(wikitext);
  +    var postdata = 'action=markup/ajax&value=' + encodeURIComponent(wikitext);
   
       HTTPPost(
           self.location,
  @@ -2360,7 +2360,7 @@
   }
   
   proto.convertWikitextToHtmlAll = function(wikitext, func) {
  -    var postdata = 'action=markup&all=1&value=' + encodeURIComponent(wikitext);
  +    var postdata = 'action=markup/ajax&all=1&value=' + encodeURIComponent(wikitext);
       HTTPPost(
           self.location,
           postdata,
  
  
  


wkpark      2008/04/12 00:20:40

  Modified:    config   acl.default.php.sample
  Log:
  add markup and pagelist/ajax by default
  
  Revision  Changes    Path
  1.3       +2 -2      moniwiki/config/acl.default.php.sample
  
  Index: acl.default.php.sample
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config/acl.default.php.sample,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- acl.default.php.sample	12 Jan 2007 16:26:03 -0000	1.2
  +++ acl.default.php.sample	11 Apr 2008 15:20:40 -0000	1.3
  @@ -4,10 +4,10 @@
   #
   # A sample Access Control Lists file for Moniwiki
   #
  -# $Id: acl.default.php.sample,v 1.2 2007/01/12 16:26:03 wkpark Exp $
  +# $Id: acl.default.php.sample,v 1.3 2008/04/11 15:20:40 wkpark Exp $
   @Guest	Anonymous
   *	@ALL		deny	*
  -*	@ALL		allow	edit,ticket,savepage,titleindex,bookmark
  +*	@ALL		allow	edit,markup,ticket,savepage,titleindex,bookmark,pagelist,pagelist/ajax
   *	@User		allow	*
   # some pages are allowed to edit
   WikiSandBox	@Guest	allow	edit,info,diff
  
  
  


wkpark      2008/04/12 11:39:57

  Modified:    local    moniwyg.js
  Log:
  fixed multilines cell in the table and Wikiwyg fix
  
  Revision  Changes    Path
  1.41      +2 -2      moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- moniwyg.js	11 Apr 2008 15:18:37 -0000	1.40
  +++ moniwyg.js	12 Apr 2008 02:39:57 -0000	1.41
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.40 2008/04/11 15:18:37 wkpark Exp $
  +// $Id: moniwyg.js,v 1.41 2008/04/12 02:39:57 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -1508,7 +1508,7 @@
           }
       }
       if (string) {
  -        string = string.replace(/[\r\n]+$/, '');
  +        string = string.replace(/&?[\r\n]+$/, '');
           if (string != '') this.appendOutput(string); // MY
       }
   }
  
  
  


wkpark      2008/04/12 11:39:58

  Modified:    .        wiki.php
  Log:
  fixed multilines cell in the table and Wikiwyg fix
  
  Revision  Changes    Path
  1.378     +12 -5     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.377
  retrieving revision 1.378
  diff -u -r1.377 -r1.378
  --- wiki.php	11 Apr 2008 13:54:22 -0000	1.377
  +++ wiki.php	12 Apr 2008 02:39:57 -0000	1.378
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.377 2008/04/11 13:54:22 wkpark Exp $
  +// $Id: wiki.php,v 1.378 2008/04/12 02:39:57 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.377 $',1,-1);
  +$_revision = substr('$Revision: 1.378 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -1788,6 +1788,7 @@
       $this->postfilters=$DBInfo->postfilters;
       $this->use_rating=$DBInfo->use_rating;
       $this->use_etable=$DBInfo->use_etable;
  +    $this->use_enhanced=$DBInfo->use_enhanced;
       $this->use_metadata=$DBInfo->use_metadata;
       $this->udb=$DBInfo->udb;
       $this->check_openid_url=$DBInfo->check_openid_url;
  @@ -2997,7 +2998,10 @@
         preg_match('/^((&lt;[^>]+>)?)(\s?)(.*)(?<!\s)(\s*)?$/s',
           $cells[$i+1],$m);
         $cell=$m[3].$m[4].$m[5];
  -      $cell=str_replace("\n","<br />\n",$cell); // XXX
  +      if ($this->use_enhanced)
  +        $cell=$this->processor_repl('monimarkup',$cell);
  +      else
  +        $cell=str_replace("\n","<br />\n",$cell);
         if ($m[3] and $m[5]) $align='center';
         else if (!$m[3]) $align='';
         else if (!$m[5]) $align='right';
  @@ -3279,7 +3283,7 @@
   
       foreach ($lines as $line) {
         # empty line
  -      if (!strlen($line)) {
  +      if (!strlen($line) and empty($oline)) {
           if ($in_pre) { $this->pre_line.="\n";continue;}
           if ($in_li) {
             if ($in_table) {
  @@ -3329,6 +3333,9 @@
         if ($line[$ll-1]=='&') {
           $oline.=substr($line,0,-1)."\n";
           continue;
  +      } else if ($in_table and !preg_match('/\|\|$/',$line)) {
  +        $oline.=$line."\n";
  +        continue;
         } else {
           $line=$oline.$line;
           $oline='';
  @@ -3525,7 +3532,7 @@
             continue;
           }
         } elseif ($in_table && ($line[0]!='|' or
  -              !preg_match("/^\|{2}.*\|{2}$/",$line))) {
  +              !preg_match("/^\|{2}.*\|{2}$/s",$line))) {
           if ($this->use_etable && $in_table && preg_match('/^\|\|/',$line)) {
             $this->table_line.=substr($line,2)."\n";
             continue;
  
  
  


wkpark      2008/04/12 11:41:31

  Modified:    lib      metadata.php
  Log:
  metadata fix under win32
  fixed bbs macro plugin. get_raw_lines() etc.
  
  Revision  Changes    Path
  1.3       +3 -3      moniwiki/lib/metadata.php
  
  Index: metadata.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/metadata.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- metadata.php	22 Mar 2008 02:39:11 -0000	1.2
  +++ metadata.php	12 Apr 2008 02:41:30 -0000	1.3
  @@ -2,7 +2,7 @@
   //
   // Metadata module for MoniWiki
   //
  -// $Id: metadata.php,v 1.2 2008/03/22 02:39:11 wkpark Exp $
  +// $Id: metadata.php,v 1.3 2008/04/12 02:41:30 wkpark Exp $
   
   function getMetadata($raw,$mode=1,$opts=array()) {
   
  @@ -53,10 +53,10 @@
       $val='';
       $meta=array();
       $metaok=0;
  -    while($body) {
  +    while(!empty($body)) {
           list($line, $body)= split("\n", $body,2);
           if ($key and ($line{0}==' ' or $line{0}=="\t")) { $meta[$key].=$line."\n";continue;}
  -        if ($line=="") {
  +        if (!trim($line)) {
               $metaok=1;
               break;
           }
  
  
  


wkpark      2008/04/12 11:41:31

  Modified:    plugin   bbs.php
  Log:
  metadata fix under win32
  fixed bbs macro plugin. get_raw_lines() etc.
  
  Revision  Changes    Path
  1.6       +22 -11    moniwiki/plugin/bbs.php
  
  Index: bbs.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/bbs.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- bbs.php	7 Apr 2008 16:26:32 -0000	1.5
  +++ bbs.php	12 Apr 2008 02:41:31 -0000	1.6
  @@ -5,7 +5,7 @@
   //
   // Usage: [[BBS(pagename,count,mode)]]
   //
  -// $Id: bbs.php,v 1.5 2008/04/07 16:26:32 wkpark Exp $
  +// $Id: bbs.php,v 1.6 2008/04/12 02:41:31 wkpark Exp $
   
   function _get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -78,7 +78,7 @@
   
           if (!file_exists($this->index)) {
               umask(000);
  -            @mkdir($this->data_dir,0777); // XXX
  +            _mkdir_p($this->data_dir,0777); // XXX
               @mkdir($this->text_dir,0777); // XXX
               @mkdir($this->text_dir,0777); // XXX
               umask(022);
  @@ -234,23 +234,25 @@
   
       function deleteIndex($id) {
           $check=0;
  +        $id=trim($id);
           $fp= fopen($this->index, 'r+');
  -        while (is_resource($fp) and ($fz=filesize($this->index))>0){
  +        while (isset($id) and is_resource($fp) and ($fz=filesize($this->index))>0){
               fseek($fp,0,SEEK_END);
               if ($fz <= 1024) {
                   fseek($fp,0);
                   $ll=rtrim(fread($fp,1024));
                   $lines=explode("\n",$ll);
  -                for ($i=sizeof($lines);$i>=0;$i--) {
  -                    if (preg_match('/^'.$id.',/',$lines[$i]))
  +                for ($i=0,$sz=sizeof($lines);$i<$sz;$i++) {
  +                    if (preg_match('/^'.$id.',/',$lines[$i])) {
                           unset($lines[$i]);break;
  +                    }
                   }
  -                $all=implode("\n",$lines)."\n";
  +                $all='';
  +                if (sizeof($lines)) $all=implode("\n",$lines)."\n";
                   fseek($fp,0);
                   fwrite($fp,$all);
                   ftruncate($fp,strlen($all));
                   fclose($fp);
  -                # XXX not tested
                   break;
               }
               $a=-1; // hack, don't read last \n char.
  @@ -369,10 +371,12 @@
           while (is_resource($fp) and ($fz=filesize($this->index))>0){
               fseek($fp,0,SEEK_END);
               if ($fz <= 1024) {
  -                print '='.$nline.','.$check_to.'<br />';
                   fseek($fp,0);
                   $ll=rtrim(fread($fp,1024));
  -                $lines=array_reverse(explode("\n",$ll));
  +                if (trim($ll))
  +                    $lines=array_reverse(explode("\n",$ll));
  +                else
  +                    $lines=array();
                   break;
               }
               $a=-1; // hack, don't read last \n char.
  @@ -467,6 +471,7 @@
       }
   
       # load a config file
  +    $conf0=array();
       if (file_exists('config/bbs.'.$bname.'.php')) {
           $confname='bbs.'.$bname.'.php';
           $conf0=_load_php_vars('config/bbs.default.php');
  @@ -502,6 +507,7 @@
           " addReplyLink(\\1); //--></script>";
       $msg='';
       $narticle=sizeof($nids);
  +
       foreach($nids as $nid) {
           if (!$nid or !$MyBBS->hasPage($nid)) continue;
           $fields=array('Name','Subject','Date','Email','HomePage','IP','Keywords');
  @@ -512,7 +518,6 @@
   #Email: wkpark@gmail.com
   #HomePage: 
   #IP: 2xx.xxx.xxx.x
  -
           $body=$MyBBS->getPage($nid);
           if ($body != null) {
               $options['nosisters']=1;
  @@ -800,6 +805,8 @@
               for ($i=0,$sz=sizeof($nids);$i<$sz;$i++) {
                   if ($MyBBS->hasPage($nids[$i])) {
                       $MyBBS->deletePage($nids[$i]);
  +                } else {
  +                    $MyBBS->deleteIndex($nids[$i]);
                   }
               }
   
  @@ -810,6 +817,7 @@
                   $lnk=$formatter->link_url($formatter->page->urlname,'?'.($query ? $query:'action=show'));
                   $myrefresh='Refresh: '.$sec.'; url='.qualifiedURL($lnk);
               }
  +            $options['msg']=_("Successfully deleted.");
               $header=array("Expires: " . gmdate("D, d M Y H:i:s", 0) . " GMT"); 
               if ($myrefresh) $header[]=$myrefresh;
               $formatter->send_header($header,$options);
  @@ -938,7 +946,9 @@
                   $lnk=$formatter->link_url($formatter->page->urlname,"?action=show");
                   $myrefresh='Refresh: '.$sec.'; url='.qualifiedURL($lnk);
               }
  -            $header=array("Expires: " . gmdate("D, d M Y H:i:s", 0) . " GMT"); 
  +            $header=array("Expires: " . gmdate("D, d M Y H:i:s", 0) . " GMT");
  +            $options['msg']=_("New post added successfully");
  +
               if ($myrefresh) $header[]=$myrefresh;
               $formatter->send_header($header,$options);
               $formatter->send_title("","",$options);
  @@ -1010,6 +1020,7 @@
   EOF;
           $formatter->_mtime=0;
           $options['simple']=2;
  +        $options['nocategories']=1;
           $options['minor']=1; # do not show a minor checkbox
           print macro_EditText($formatter,$value,$options);
           $formatter->_raw_body=null;
  
  
  


wkpark      2008/04/13 08:19:18

  Modified:    .        wiki.php
  Log:
  oops! fixed last changes for multiline table cell
  
  Revision  Changes    Path
  1.379     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.378
  retrieving revision 1.379
  diff -u -r1.378 -r1.379
  --- wiki.php	12 Apr 2008 02:39:57 -0000	1.378
  +++ wiki.php	12 Apr 2008 23:19:18 -0000	1.379
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.378 2008/04/12 02:39:57 wkpark Exp $
  +// $Id: wiki.php,v 1.379 2008/04/12 23:19:18 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.378 $',1,-1);
  +$_revision = substr('$Revision: 1.379 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2998,7 +2998,7 @@
         preg_match('/^((&lt;[^>]+>)?)(\s?)(.*)(?<!\s)(\s*)?$/s',
           $cells[$i+1],$m);
         $cell=$m[3].$m[4].$m[5];
  -      if ($this->use_enhanced)
  +      if ($this->use_enhanced and strpos($cell,"\n") !== false)
           $cell=$this->processor_repl('monimarkup',$cell);
         else
           $cell=str_replace("\n","<br />\n",$cell);
  @@ -3333,7 +3333,7 @@
         if ($line[$ll-1]=='&') {
           $oline.=substr($line,0,-1)."\n";
           continue;
  -      } else if ($in_table and !preg_match('/\|\|$/',$line)) {
  +      } else if (($in_table or preg_match('/^\s*\|\|/',$oline)) and !empty($oline) and !preg_match('/\|\|$/',$line)) {
           $oline.=$line."\n";
           continue;
         } else {
  
  
  


wkpark      2008/04/13 23:51:39

  Modified:    plugin   Info.php
  Log:
  use explode() instead of strtok()
  
  Revision  Changes    Path
  1.16      +2 -2      moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Info.php,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- Info.php	22 Mar 2008 02:29:40 -0000	1.15
  +++ Info.php	13 Apr 2008 14:51:39 -0000	1.16
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Info plugin for the MoniWiki
   //
  -// $Id: Info.php,v 1.15 2008/03/22 02:29:40 wkpark Exp $
  +// $Id: Info.php,v 1.16 2008/04/13 14:51:39 wkpark Exp $
   
   function _parse_rlog($formatter,$log,$options=array()) {
     global $DBInfo;
  @@ -48,7 +48,7 @@
     #foreach ($lines as $line) {
     $count=0;
     $showcount=($options['count']>5) ? $options['count']: 10;
  -  for($line = strtok($log, "\n"); $line !== false; $line = strtok("\n")) {
  +  for(; !empty($line) or !empty($log); list($line,$log) = explode("\n",$log,2)) {
       if (!$state) {
         if (!preg_match("/^---/",$line)) { continue;}
         else {$state=1; continue;}
  
  
  


wkpark      2008/04/13 23:52:45

  Modified:    plugin   bbs.php
  Log:
  set the document.title
  
  Revision  Changes    Path
  1.7       +14 -3     moniwiki/plugin/bbs.php
  
  Index: bbs.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/bbs.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- bbs.php	12 Apr 2008 02:41:31 -0000	1.6
  +++ bbs.php	13 Apr 2008 14:52:45 -0000	1.7
  @@ -5,7 +5,7 @@
   //
   // Usage: [[BBS(pagename,count,mode)]]
   //
  -// $Id: bbs.php,v 1.6 2008/04/12 02:41:31 wkpark Exp $
  +// $Id: bbs.php,v 1.7 2008/04/13 14:52:45 wkpark Exp $
   
   function _get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -507,6 +507,7 @@
           " addReplyLink(\\1); //--></script>";
       $msg='';
       $narticle=sizeof($nids);
  +    $js='';
   
       foreach($nids as $nid) {
           if (!$nid or !$MyBBS->hasPage($nid)) continue;
  @@ -594,14 +595,22 @@
               $msg.='<div class="bbsComment">'.$comment.'</div><div class="bbsArticleBtn">'.implode(" ",$btn).'</div>';
               unset($btn['delete']);
               unset($btn['edit']);
  +            $title=str_replace('"','\"',$metas['Subject']);
  +            $js.=<<<JS
  +<script type="text/javascript">
  +/*<![CDATA[*/
  +document.title+=" [" + $snid + "] - " + "$title";
  +/*]]>*/
  +</script>
  +JS;
           }
       }
       if (!empty($msg) and ! $_GET['p']) return $msg;
   
       if (1) { # XXX
           $nochk=_("Please check article numbers.");
  -        $js=<<<JS
  -<script language='javascript'>
  +        $js.=<<<JS
  +<script type='text/javascript'>
   /*<![CDATA[*/
     function send_list(obj,mode) {
       var tmp="";
  @@ -689,6 +698,8 @@
         $pnut=_get_pagelist($formatter,$pages,
           '?'.$extra.
           ($extra ?'&amp;p=':'p='),$options['p'],$ncount);
  +    else
  +      $pnut="<div class='clear'></div>";
   
       $extra=$options['p'] ? '&amp;p='.$options['p']:'';
   
  
  
  


wkpark      2008/04/14 21:51:17

  Modified:    plugin/processor monimarkup.php
  Log:
  support multiline table cell for the new moniwiki formatter
  
  Revision  Changes    Path
  1.4       +22 -4     moniwiki/plugin/processor/monimarkup.php
  
  Index: monimarkup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/monimarkup.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- monimarkup.php	26 Oct 2007 11:51:09 -0000	1.3
  +++ monimarkup.php	14 Apr 2008 12:51:17 -0000	1.4
  @@ -3,12 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a moniwiki formatting processor for the MoniWiki
   //
  -// $Id: monimarkup.php,v 1.3 2007/10/26 11:51:09 wkpark Exp $
  +// $Id: monimarkup.php,v 1.4 2008/04/14 12:51:17 wkpark Exp $
   /**
    * @date    2006-08-09
    * @name    Moniwiki Processor
    * @desc    Moniwiki default processor
  - * @version $Revision: 1.3 $
  + * @version $Revision: 1.4 $
    * @depend  1.1.3
    * @license GPL
    */
  @@ -130,6 +130,12 @@
           $_eop=0; // end of paragraph
           $oline=null;
           foreach ($lines as $line) {
  +            if (substr($line,-1) == '&') { $oline.="\n".$line; continue; }
  +            if (!empty($oline) and preg_match('/^\s*\|\|/',$oline)) {
  +                if ( !preg_match('/\|\|$/',$oline)) {
  +                    $oline.="\n".$line; continue;
  +                }
  +            }
               if (!trim($line)) {
                   if ($_in_li) $oline.="\n".$line;
                   else {
  @@ -290,13 +296,23 @@
           $_in_table=0;
           $lines=explode("\n",$text);
           $tout='';
  +        $oline='';
           foreach ($lines as $line) {
  +            if (substr($line,-1) == '&') { $oline.=substr($line,0,-1)."\n"; continue; }
  +            if (!empty($oline) and ($_in_table or preg_match('/^\s*\|\|/',$oline))) {
  +                if (!preg_match('/\|\|$/',$line)) {
  +                    $oline.=$line."\n"; continue;
  +                } else {
  +                    $line=$oline.$line; $oline='';
  +                }
  +            }
               if (!trim($line)) {
                   if ($_in_table) {
                       $tout.=$formatter->_table(0,$dumm);
                       $_in_table=0;
                   }
                   $tout.=$line."\n";
  +                #$tout.=$line."<br />\n";
                   continue;
               }
               $tr_diff='';
  @@ -305,10 +321,11 @@
                   $line=substr($line,1,-1);
               }
               if (!$_in_table and $line[0]=='|' and
  -                preg_match("/^(\|([^\|]+)?\|((\|\|)*))(&lt;[^>\|]*>)?(.*)(\|\|)$/s",$line,$m)) {
  +                preg_match("/^(\|([^\|]+)?\|((\|\|)*))(&lt;[^>\|]*>)?(.*)(\|\|)?$/s",$line,$m)) {
  +                #print "<pre>"; print_r($m); print "</pre>";
                   $open.=$formatter->_table(1,$m[5]);
                   if ($m[2]) $open.='<caption>'.$m[2].'</caption>';
  -                if (!$m[5]) $line='||'.$m[3].$m[6].'||';
  +                if (!$m[5]) $line='||'.$m[3].$m[6].$m[7];
                   $_in_table=1;
               } elseif ($_in_table and $line[0]!='|') {
                   $close=$formatter->_table(0,$dumm).$close;
  @@ -399,6 +416,7 @@
           # 2-pass
           $chunk=$this->_pass2($body);
   
  +        #print "<pre>";print_r($chunk);print "</pre>";
           $hr_func=$Config['hr_type'].'_hr';
   
           $_lidep=array(0);
  
  
  


wkpark      2008/04/14 21:52:49

  Modified:    .        wiki.php
  Log:
  more fix to last changes for multiline table cell
  
  Revision  Changes    Path
  1.380     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.379
  retrieving revision 1.380
  diff -u -r1.379 -r1.380
  --- wiki.php	12 Apr 2008 23:19:18 -0000	1.379
  +++ wiki.php	14 Apr 2008 12:52:49 -0000	1.380
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.379 2008/04/12 23:19:18 wkpark Exp $
  +// $Id: wiki.php,v 1.380 2008/04/14 12:52:49 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.379 $',1,-1);
  +$_revision = substr('$Revision: 1.380 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -3333,7 +3333,7 @@
         if ($line[$ll-1]=='&') {
           $oline.=substr($line,0,-1)."\n";
           continue;
  -      } else if (($in_table or preg_match('/^\s*\|\|/',$oline)) and !empty($oline) and !preg_match('/\|\|$/',$line)) {
  +      } else if (!empty($oline) and ($in_table or preg_match('/^\s*\|\|/',$oline)) and !preg_match('/\|\|$/',$line)) {
           $oline.=$line."\n";
           continue;
         } else {
  
  
  


wkpark      2008/04/15 12:13:38

  Modified:    plugin   Comment.php
  Log:
  fix the image url of a ticket image
  
  Revision  Changes    Path
  1.30      +4 -6      moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- Comment.php	26 Mar 2008 09:21:28 -0000	1.29
  +++ Comment.php	15 Apr 2008 03:13:38 -0000	1.30
  @@ -6,7 +6,7 @@
   // Usage: [[Comment]], ?action=comment
   //
   //
  -// $Id: Comment.php,v 1.29 2008/03/26 09:21:28 wkpark Exp $
  +// $Id: Comment.php,v 1.30 2008/04/15 03:13:38 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $DBInfo;
  @@ -23,7 +23,7 @@
     $captcha='';
     if (!$use_any and $DBInfo->use_ticket) {
        $seed=md5(base64_encode(time()));
  -     $ticketimg=$formatter->link_url($formatter->page->name,'?action=ticket&amp;__seed='.$seed);
  +     $ticketimg=$formatter->link_url($formatter->page->urlname,'?action=ticket&amp;__seed='.$seed);
        $captcha=<<<EXTRA
     <div class='captcha'><span class='captchaImg'><img src="$ticketimg" alt="captcha" /></span><input type="text" size="10" name="check" />
   <input type="hidden" name="__seed" value="$seed" /></div>
  @@ -122,13 +122,11 @@
     if (!$DBInfo->security->writable($options)) {
       $formatter->preview=1;
       $options['title']=_("Page is not writable");
  -    do_invalid($formatter,$options);
  -    return;
  +    return do_invalid($formatter,$options);
     } else if (!$DBInfo->hasPage($options['page'])) {
       $options['err']=_("You are not allowed to add a comment.");
       $options['title']=_("Page does not exists");
  -    do_invalid($formatter,$options);
  -    return;
  +    return do_invalid($formatter,$options);
     }
   
     if ($options['usemeta']) $use_meta=1;
  
  
  


wkpark      2008/04/15 12:15:25

  Modified:    plugin   bbs.php
  Log:
  fixed ajax_*() behavior with a error handling
  
  Revision  Changes    Path
  1.8       +10 -4     moniwiki/plugin/bbs.php
  
  Index: bbs.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/bbs.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- bbs.php	13 Apr 2008 14:52:45 -0000	1.7
  +++ bbs.php	15 Apr 2008 03:15:25 -0000	1.8
  @@ -5,7 +5,7 @@
   //
   // Usage: [[BBS(pagename,count,mode)]]
   //
  -// $Id: bbs.php,v 1.7 2008/04/13 14:52:45 wkpark Exp $
  +// $Id: bbs.php,v 1.8 2008/04/15 03:15:25 wkpark Exp $
   
   function _get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -849,15 +849,21 @@
           }
           $header=array("Expires: " . gmdate("D, d M Y H:i:s", 0) . " GMT"); 
           if ($myrefresh) $header[]=$myrefresh;
  -        $formatter->send_header($header,$options);
  -        $formatter->send_title("","",$options);
   
           $p=new WikiPage($options['page'].':'.$options['no'],$options);
           $formatter->page=$p;
           $options['page']=$options['page'].':'.$options['no'];
           $options['saveonly']=1;
           $options['minor']=1; # do not log
  -        $formatter->ajax_repl('comment',$options);
  +
  +        $formatter->send_header($header,$options);
  +        $options['action_mode']='ajax';
  +        $options['call']=1;
  +        $ret=$formatter->ajax_repl('comment',$options);
  +        if ($ret == false)
  +            $options['msg']=_("Fail to post comment.");
  +        unset($options['action_mode']);
  +        $formatter->send_title("","",$options);
   
           $formatter->send_footer("",$options);
           return;
  
  
  


wkpark      2008/04/15 12:16:43

  Modified:    .        wikilib.php
  Log:
  fixed ajax_invalid() behavior with a error handling
  
  Revision  Changes    Path
  1.241     +5 -4      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.240
  retrieving revision 1.241
  diff -u -r1.240 -r1.241
  --- wikilib.php	31 Mar 2008 01:20:23 -0000	1.240
  +++ wikilib.php	15 Apr 2008 03:16:43 -0000	1.241
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.240 2008/03/31 01:20:23 wkpark Exp $
  +// $Id: wikilib.php,v 1.241 2008/04/15 03:16:43 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -963,8 +963,7 @@
   function do_invalid($formatter,$options) {
   
     if ($options['action_mode'] == 'ajax') {
  -    ajax_invalid($formatter,$options);
  -    return;
  +    return ajax_invalid($formatter,$options);
     }
   
     $formatter->send_header("Status: 406 Not Acceptable",$options);
  @@ -982,13 +981,15 @@
     }
   
     $formatter->send_footer("",$options);
  +  return false;
   }
   
   function ajax_invalid($formatter,$options) {
  +  if ($options['call']) return false;
     $formatter->send_header(array("Content-Type: text/plain",
   			"Status: 406 Not Acceptable"),$options);
     print "false\n";
  -  return;
  +  return false;
   }
   
   function do_post_DeleteFile($formatter,$options) {
  
  
  


wkpark      2008/04/15 18:43:14

  Modified:    plugin   Keywords.php
  Log:
  fixed usage of cache of macros
  
  Revision  Changes    Path
  1.26      +2 -2      moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- Keywords.php	10 Apr 2008 09:37:06 -0000	1.25
  +++ Keywords.php	15 Apr 2008 09:43:14 -0000	1.26
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a 'Keywords' plugin for the MoniWiki
   //
  -// $Id: Keywords.php,v 1.25 2008/04/10 09:37:06 wkpark Exp $
  +// $Id: Keywords.php,v 1.26 2008/04/15 09:43:14 wkpark Exp $
   
   define(LOCAL_KEYWORDS,'LocalKeywords');
   
  @@ -59,7 +59,7 @@
       if (!$pagename) $pagename=$formatter->page->name;
   
       $mc=new Cache_text('macro');
  -    $mkey='Keywords.'.md5($value);
  +    $mkey='Keywords.'.md5($pagename.$value);
       $mykeys=array();
   
       if (!$formatter->refresh and $mc->exists($mkey)) {
  
  
  


wkpark      2008/04/15 19:08:02

  Modified:    .        wiki.php
  Log:
  check $use_tagging properly
  
  Revision  Changes    Path
  1.381     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.380
  retrieving revision 1.381
  diff -u -r1.380 -r1.381
  --- wiki.php	14 Apr 2008 12:52:49 -0000	1.380
  +++ wiki.php	15 Apr 2008 10:08:01 -0000	1.381
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.380 2008/04/14 12:52:49 wkpark Exp $
  +// $Id: wiki.php,v 1.381 2008/04/15 10:08:01 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.380 $',1,-1);
  +$_revision = substr('$Revision: 1.381 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -3214,7 +3214,7 @@
             if (is_string($DBInfo->use_tagging))
               $tmp.=$DBInfo->use_tagging;
             else
  -            $tmp.="Tags: [[Keywords]]";
  +            $tmp.=_("Tags:")." [[Keywords]]";
             $this->send_page($tmp); // XXX
           }
           //$this->store_pagelinks(); // XXX
  @@ -4997,7 +4997,7 @@
         if (!$tcache->exists($pagename) or $_GET['update_title'])
           $tcache->update($pagename,$formatter->pi['#title']);
       }
  -    if ($DBInfo->use_keywords or $_GET['update_keywords']) {
  +    if ($DBInfo->use_keywords or $DBInfo->use_tagging or $_GET['update_keywords']) {
         $tcache=new Cache_text('keywords');
         if (!$formatter->pi['#keywords']) {
           $tcache->remove($pagename);
  
  
  


wkpark      2008/04/17 00:45:50

  Modified:    .        wiki.php
  Log:
  builtin php detection
  fixed auto SixSingleQuotes
  fixed smileyrule for new moniwiki markup processor
  
  Revision  Changes    Path
  1.382     +12 -7     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.381
  retrieving revision 1.382
  diff -u -r1.381 -r1.382
  --- wiki.php	15 Apr 2008 10:08:01 -0000	1.381
  +++ wiki.php	16 Apr 2008 15:45:50 -0000	1.382
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.381 2008/04/15 10:08:01 wkpark Exp $
  +// $Id: wiki.php,v 1.382 2008/04/16 15:45:50 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.381 $',1,-1);
  +$_revision = substr('$Revision: 1.382 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -1707,7 +1707,7 @@
         $version=new $class ($DBInfo);
         $rev= $version->get_rev($this->name,$mtime,$last);
   
  -      if ($rev > 1.0)
  +      if ($rev >= 1.0)
           return $rev;
       }
       return '';
  @@ -1853,7 +1853,7 @@
       
       # set smily_rule,_repl
       if ($DBInfo->smileys) {
  -      $this->smiley_rule='/(?<=\s|^|>)('.$DBInfo->smiley_rule.')(?=\s|$)/e';
  +      $this->smiley_rule='/(?<=\s|^|>)('.$DBInfo->smiley_rule.')(?=\s|<|$)/e';
         $this->smiley_repl="\$formatter->smiley_repl('\\1')";
   
         #$this->baserule[]=$smiley_rule;
  @@ -2084,6 +2084,8 @@
         if (substr($line,0,6) == '<?xml ')
           #$format='xslt';
           $format='xsltproc';
  +      elseif (preg_match('/^<\?php(\s|\b)/',$line))
  +        $format='php'; # builtin php detect
       } else {
         if ($body[0] == '#' and $body[1] =='!') {
           list($line, $body)= explode("\n", $body,2);
  @@ -2343,7 +2345,7 @@
       } else if (($p=strpos($url,' '))!==false) {
         $dummy=substr($url,0,$p);
         $text=substr($url,$p+1);
  -      $url=$dummy;
  +      if (!empty($text)) $url=$dummy;
       }
   
       if ($wiki== '') {
  @@ -2367,8 +2369,11 @@
       }
   
       if ($page=='/') $page='';
  -    if (substr($page,-1)==' ') $sep='<b></b>'; // auto append SixSingleQuotes
  -    $urlpage=_urlencode(trim($page));
  +    if (substr($page,-1)==' ') {
  +      $sep='<b></b>'; // auto append SixSingleQuotes
  +      $page=rtrim($page);
  +    }
  +    $urlpage=_urlencode($page);
       #$urlpage=trim($page);
       if (strpos($url,'$PAGE') === false)
         $url.=$urlpage;
  
  
  


wkpark      2008/04/17 02:54:01

  Modified:    .        wiki.php
  Log:
  fixed maro_repl()
  
  Revision  Changes    Path
  1.383     +3 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.382
  retrieving revision 1.383
  diff -u -r1.382 -r1.383
  --- wiki.php	16 Apr 2008 15:45:50 -0000	1.382
  +++ wiki.php	16 Apr 2008 17:54:01 -0000	1.383
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.382 2008/04/16 15:45:50 wkpark Exp $
  +// $Id: wiki.php,v 1.383 2008/04/16 17:54:01 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.382 $',1,-1);
  +$_revision = substr('$Revision: 1.383 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2731,6 +2731,7 @@
       }
   
       $ret=call_user_func_array("macro_$plugin",array(&$this,$args,$options));
  +    if (is_array($ret)) return $ret;
       return $bra.$ret.$ket;
     }
   
  
  
  


wkpark      2008/04/17 02:55:12

  Added:       plugin   Attachments.php
  Log:
  add a new "Attachments" plugin to get the list of attachments of given page.
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/Attachments.php
  
  Index: Attachments.php
  ===================================================================
  <?php
  // Copyright 2008 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a attachment list plugin for the MoniWiki
  //
  // Author: Won-Kyu Park <wkpark@kldp.org>
  // Date: 2008-04-16
  // Name: AttachmentsPlugin
  // Description: make a list of attachments for a given page.
  // URL: MoniWiki:AttachmentsPlugin
  // Version: $Revision: 1.1 $
  // License: GPL
  //
  // Usage: [[Attachments(PageName)]]
  //
  // $Id: Attachments.php,v 1.1 2008/04/16 17:55:12 wkpark Exp $
  
  function macro_Attachments($formatter,$value,$params=array()) {
      if ($value and $DBInfo->hasPage($value)) {
          $p=$DBInfo->getPage($value);
          $body=$p->get_raw_body();
          $baseurl=$formatter->link_url(_urlencode($value));
          $formatter->page=&$p;
      } else if ($params['text']) {
          $body=$params['text'];
      } else {
          $body=$formatter->page->get_raw_body();
      }
  
      // from wiki.php
      $punct="<\'}\]\|\.\!"; # , is omitted for the WikiPedia
      $url='attachment';
      $urlrule="((?:$url):\"[^\"]+\"[^\s$punct]*|(?:$url):([^\s$punct]|(\.?[^\s$punct]))+|\[\[Attachment\([^\)]+\)\]\])";
      // do not include pre block
      $body=preg_replace("/\{\{\{.+?\}\}\}/s",'',$body);
  
      $my=array();
      $lines=explode("\n",$body);
      foreach ($lines as $line) {
          preg_match_all("/$urlrule/i",$line,$match);
  
          if (!$match) continue;
          $my=array_merge($my,$match[0]);
      }
      $my=array_unique($my);
  
      if ($params['call']) return $my;
  
      return " * ".implode("\n * ",$my);
  }
  
  function do_attachments($formatter,$options) {
      $formatter->send_header('',$options);
      $formatter->send_title('','',$options);
      $ret= macro_Attachments($formatter,$options['value']);
      $formatter->send_page($ret);
      $formatter->send_footer('',$options);
      return;
  }
  
  // vim:et:sts=4:sw=4:
  ?>
  
  
  
  


wkpark      2008/04/17 02:58:17

  Modified:    plugin   bbs.php
  Log:
  use flock()
  $use_attach to cache the list of attachments using Attachments macro.
  do not check password for a valid user.
  
  Revision  Changes    Path
  1.9       +80 -7     moniwiki/plugin/bbs.php
  
  Index: bbs.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/bbs.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- bbs.php	15 Apr 2008 03:15:25 -0000	1.8
  +++ bbs.php	16 Apr 2008 17:58:16 -0000	1.9
  @@ -5,7 +5,7 @@
   //
   // Usage: [[BBS(pagename,count,mode)]]
   //
  -// $Id: bbs.php,v 1.8 2008/04/15 03:15:25 wkpark Exp $
  +// $Id: bbs.php,v 1.9 2008/04/16 17:58:16 wkpark Exp $
   
   function _get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -64,6 +64,7 @@
           $this->data_dir=$conf['data_dir'].'/bbs/'.$name;
           $this->cache_dir=$this->data_dir.'/cache';
           $this->dba_type=$conf['dba_type'];
  +        $this->use_attach=$conf['use_attach'];
   
           # XXX
           $this->index=$this->data_dir.'/.index';
  @@ -126,7 +127,9 @@
           $fp=fopen($this->current,'w');
           if ($fp) {
               $id=$cur+1;
  +            flock($fp,LOCK_EX);
               fwrite($fp,"$id");
  +            flock($fp,LOCK_UN);
               fclose($fp);
           }
           return $cur;
  @@ -137,7 +140,9 @@
           $fp=fopen($this->count,'w');
           if ($fp) {
               $id=$cur+1;
  +            flock($fp,LOCK_EX);
               fwrite($fp,"$id");
  +            flock($fp,LOCK_UN);
               fclose($fp);
           }
           return $cur;
  @@ -151,7 +156,9 @@
       function setCount($num) {
           $fp=fopen($this->count,'w');
           if ($fp) {
  +            flock($fp,LOCK_EX);
               fwrite($fp,"$num");
  +            flock($fp,LOCK_UN);
               fclose($fp);
           }
           return $cur;
  @@ -162,7 +169,9 @@
           $fp=fopen($this->count,'w');
           if ($fp) {
               $id=$cur-1;
  +            flock($fp,LOCK_EX);
               fwrite($fp,"$id");
  +            flock($fp,LOCK_UN);
               fclose($fp);
               print $id;
           }
  @@ -222,6 +231,11 @@
           $options['pagename']=$this->bbsname.':'.$data['no'];
           $ret=$DBInfo->_savePage($this->getPageKey($id),$message,$options);
   
  +        if (!empty($data['attach'])) {
  +            $cache=new Cache_Text('attachments');
  +            $cache->update($options['pagename'],serialize($data['attach']));
  +        }
  +
           return true;
       }
   
  @@ -250,8 +264,10 @@
                   $all='';
                   if (sizeof($lines)) $all=implode("\n",$lines)."\n";
                   fseek($fp,0);
  +                flock($fp,LOCK_EX);
                   fwrite($fp,$all);
                   ftruncate($fp,strlen($all));
  +                flock($fp,LOCK_UN);
                   fclose($fp);
                   break;
               }
  @@ -288,6 +304,7 @@
                           $pp=$a+$p+1+strlen($line)+1;
                           fseek($fp,$pp,SEEK_END);
   
  +                        flock($fp,LOCK_EX);
                           if ($pp < 0) {
                               $lastall=fread($fp,-$pp);
                               fseek($fp,$a+$p+1,SEEK_END);
  @@ -298,6 +315,7 @@
                           #print $fz."/".$nfz."<br />";
                           #print '<pre>'.$lastall."</pre>";
                           ftruncate($fp,$nfz);
  +                        flock($fp,LOCK_UN);
                           
                           $check=-1; break;
                           $lines[]=$line;
  @@ -316,7 +334,9 @@
           $fp=fopen($this->index,'a');
   
           if ($fp) {
  +            flock($fp,LOCK_EX);
               fwrite($fp,$cur.','.$info."\n");
  +            flock($fp,LOCK_UN);
               fclose($fp);
               return true;
           }
  @@ -509,6 +529,29 @@
       $narticle=sizeof($nids);
       $js='';
   
  +    if ($narticle == 1 and $options['mode'] == 'simple') {
  +        $nid=$nids[0];
  +        if (!$nid or !$MyBBS->hasPage($nid)) return '[[BBS(error)]]';
  +        include_once('lib/metadata.php');
  +        $body=$MyBBS->getPage($nid);
  +        list($metas,$body)=_get_metadata($body);
  +        $img='';
  +        if ($MyBBS->use_attach) {
  +            $cache=new Cache_text('attachments');
  +            $attachs=unserialize($cache->fetch($MyBBS->bbsname.':'.$nid));
  +            if (preg_match('/^attachment:([^\?]+)(\?.*)?$/',$attachs[0],$m)) {
  +                $img=$formatter->macro_repl('Attachment',$m[1].'?width=100');
  +            }
  +            $subject=$formatter->link_tag($bpage,"?no=$nid",$metas['Subject']);
  +        }
  +
  +        $out="<table>\n".
  +            "<tr><td>".$img.'</td><td>'.$subject.'</td></tr>'.
  +            "<tr><td colspan='2'></td>\n</tr></table>";
  +
  +        return $out;
  +    }
  +
       foreach($nids as $nid) {
           if (!$nid or !$MyBBS->hasPage($nid)) continue;
           $fields=array('Name','Subject','Date','Email','HomePage','IP','Keywords');
  @@ -792,21 +835,34 @@
           }
       }
   
  +    $check_pass=false;
  +    $MyBBS=macro_BBS($formatter,'',array('new'=>1));
  +    if ($options['id'] != 'Anonymous' and $options['mode']=='edit' and $options['no']) {
  +        $body=$MyBBS->getPage($options['no']);
  +        if ($body != null) {
  +            include_once('lib/metadata.php');
  +            list($metas,$dummy)=_get_metadata($body);
  +            if ($metas['Name'] == $options['id']) # XXX
  +                $check_pass=true;
  +        }
  +    }
       # password check
       while ($options['no'] and
           ($options['mode']=='delete' or $options['mode']=='edit') and $_SERVER['REQUEST_METHOD']=="POST") {
           # check admin(WikiMaster) password
  -        if ($DBInfo->admin_passwd) {
  -            $check_pass=$DBInfo->admin_passwd==crypt($options['pass'],$DBInfo->admin_passwd);
  -        } else
  -            $check_pass=false;
  +        if (!$check_pass) {
  +            if ($DBInfo->admin_passwd) {
  +                $check_pass=$DBInfo->admin_passwd==crypt($options['pass'],$DBInfo->admin_passwd);
  +            } else
  +                $check_pass=false;
  +        }
   
           # check admin(BBSMaster) password
           if (!$check_pass and $conf['admin_passwd'])
               $check_pass=$conf['admin_passwd']==crypt($options['pass'],$conf['admin_passwd']);
   
  +
           while ($check_ip and $check_pass and $options['mode']== 'delete') {
  -            $MyBBS=macro_BBS($formatter,'',array('new'=>1));
           
               if (($p=strpos($options['no'],' '))!==false)
                   $nids=explode(" ",$options['no']);
  @@ -970,7 +1026,16 @@
               $formatter->send_header($header,$options);
               $formatter->send_title("","",$options);
   
  +            if ($MyBBS->use_attach) { # XXX
  +                $args['call']=1;
  +                $lists=array();
  +                $lists=$formatter->macro_repl('Attachments','',$args);
  +
  +                unset($args['call']);
  +                if (!empty($lists)) $args['attach']=$lists;
  +            }
               $MyBBS->savePage($args);
  +
               $formatter->send_footer("",$options);
               return;
           }
  @@ -1026,15 +1091,23 @@
   $hidden
   </div>
   EOF;
  -        else
  +        else {
  +            if (!$check_pass and $options['mode']=='edit')
  +                $pass_form=
  +    "<tr><th>Password:</th><td><input type='password' name='pass' /></td></tr>";
               $formatter->_extra_form=<<<EOF
  +<div>
   <table border='0' width='100%'>
   <col width='20%' /><col width='80%' />
   <tbody>
   <tr><th>Subject:</th><td><input type='text' style="width:80%" name='subject' value='$args[subject]' /></td></tr>
  +$pass_form
   </tbody>
   </table>
  +$hidden
  +</div>
   EOF;
  +        }
           $formatter->_mtime=0;
           $options['simple']=2;
           $options['nocategories']=1;
  
  
  


wkpark      2008/04/17 11:43:59

  Modified:    plugin   Attachment.php
  Log:
  support thumbnails. (thumbwidth=100 param added)
  
  Revision  Changes    Path
  1.37      +65 -10    moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- Attachment.php	29 Mar 2008 06:35:31 -0000	1.36
  +++ Attachment.php	17 Apr 2008 02:43:59 -0000	1.37
  @@ -7,13 +7,13 @@
   // Name: Attachment
   // Description: Attachment Plugin
   // URL: MoniWiki:AttachmentPlugin
  -// Version: $Revision: 1.36 $
  +// Version: $Revision: 1.37 $
   // Depend: 1.1.3
   // License: GPL
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.36 2008/03/29 06:35:31 wkpark Exp $
  +// $Id: Attachment.php,v 1.37 2008/04/17 02:43:59 wkpark Exp $
   
   function macro_Attachment($formatter,$value,$options='') {
     global $DBInfo;
  @@ -94,9 +94,12 @@
           if ($val == 'deletefile') $extra_action=$val;
           else $mydownload=$val;
         } else {
  -        $attr.="$name=\"$val\" ";
  -        if (in_array($name,array('width','height')) and $DBInfo->use_lightbox) {
  -          $lightbox_attr=' rel="lightbox" ';
  +        if (in_array($name,array('width','height'))) {
  +          $attr.="$name=\"$val\" ";
  +          if ($DBInfo->use_lightbox) $lightbox_attr=' rel="lightbox" ';
  +        } else if (in_array($name,array('thumb','thumbwidth','thumbheight'))){
  +          $use_thumb=1;
  +          $thumb[$name]=$val;
           }
         }
       }
  @@ -105,6 +108,7 @@
     }
   
     if (preg_match('/^data:image\/(png|jpg|jpeg);base64,/',$value)) {
  +    // need to hack for IE ?
       return "<img src='".$value."' $attr />";
     }
   
  @@ -121,9 +125,13 @@
           } else if ($k=='align') {
             $imgalign='img'.ucfirst($v);
             $align='class="'.$imgalign.'" ';
  -        } else if ($k=='caption') {
  +        } else if (in_array($k,array('caption','alt','title'))) {
  +          // XXX
             $caption=preg_replace("/^([\"'])([^\\1]+)\\1$/","\\2",trim($v));
             #$caption=preg_replace('/^"([^"]*)"$/',"\\1",trim($v));
  +        } else if (in_array($k,array('thumb','thumbwidth','thumbheight'))){
  +          $use_thumb=1;
  +          $thumb[$k]=$v;
           }
         }
       }
  @@ -154,6 +162,7 @@
   
     $upload_file=$dir.'/'.$file;
     if ($options['link'] == 1) return $upload_file;
  +
     if (!$text) $text=$file;
   
     $_l_file=_l_filename($file);
  @@ -196,11 +205,57 @@
         $formatter->actions[]='UploadedFiles';
   
       if (!$img_link && preg_match("/\.(png|gif|jpeg|jpg)$/i",$upload_file)) {
  +      // thumbnail
  +      if ($DBInfo->use_convert_thumbs and $use_thumb) {
  +        $thumb_width=$thumb['thumbwidth'] ? $thumb['thumbwidth']:150;
  +        if (!file_exists($dir."/thumbnails/".$_l_file)) {
  +          if (!file_exists($dir."/thumbnails")) @mkdir($dir."/thumbnails",0777);
  +          if (function_exists('gd_info')) {
  +            $fname=$dir.'/'.$_l_file;
  +            list($w, $h) = getimagesize($fname);
  +            //print $w.'x'.$h;
  +            if ($w > $thumb_width) {
  +              $nh=intval($thumb_width*$h/$w);
  +              $thumb= imagecreatetruecolor($thumb_width,$nh);
  +              if (preg_match("/\.(jpg|jpeg)$/i",$file))
  +                $imgtype= 'jpeg';
  +              else if (preg_match("/\.png$/i",$file))
  +                $imgtype= 'png';
  +              else if (preg_match("/\.gif$/i",$file))
  +                $imgtype= 'gif';
  +
  +              $myfunc='imagecreatefrom'.$imgtype;
  +              $source= $myfunc($fname);
  +              //imagecopyresized($thumb, $source, 0,0,0,0, $thumb_width, $nh, $w, $h);
  +              imagecopyresampled($thumb, $source, 0,0,0,0, $thumb_width, $nh, $w, $h);
  +              $myfunc='image'.$imgtype;
  +              $myfunc($thumb, $dir.'/thumbnails/'.$_l_file);
  +            }
  +          } else {
  +            $fp=popen("convert -scale ".$thumb_width." ".$dir."/".$_l_file." ".
  +              $dir."/thumbnails/".$_l_file.
  +            $formatter->NULL,'r');
  +            @pclose($fp);
  +          }
  +        }
  +      }
  +
         $alt=$alt ? $alt:$file;
  -      if ($key != $pagename || $force_download)
  -        $url=$formatter->link_url(_urlencode($pagename),"?action=$mydownload&amp;value=".urlencode($value));
  -      else
  -        $url=$DBInfo->url_prefix."/"._urlencode($upload_file);
  +      if ($key != $pagename || $force_download) {
  +        $val=_urlencode($value);
  +        if ($use_thumb) {
  +          $thumbdir='thumbnails/';
  +          if (($p=strrpos($val,'/')) !== false)
  +            $val=substr($val,0,$p).'/thumbnails'.substr($val,$p);
  +          $extra_action='download';
  +        }
  +        $url=$formatter->link_url(_urlencode($pagename),"?action=$mydownload&amp;value=".$val);
  +      } else {
  +        if ($use_thumb)
  +          $url=$DBInfo->url_prefix."/thumbnails/"._urlencode($upload_file);
  +        else
  +          $url=$DBInfo->url_prefix."/"._urlencode($upload_file);
  +      }
   
         $img="<img src='$url' title='$alt' alt='$alt' style='border:0' $attr/>";
   
  
  
  


wkpark      2008/04/17 11:46:49

  Modified:    plugin   Gallery.php
  Log:
  use imageresampled() and use $thumb_width
  
  Revision  Changes    Path
  1.35      +5 -4      moniwiki/plugin/Gallery.php
  
  Index: Gallery.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Gallery.php,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- Gallery.php	2 Jan 2007 06:57:38 -0000	1.34
  +++ Gallery.php	17 Apr 2008 02:46:48 -0000	1.35
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Gallery]]
   //
  -// $Id: Gallery.php,v 1.34 2007/01/02 06:57:38 wkpark Exp $
  +// $Id: Gallery.php,v 1.35 2008/04/17 02:46:48 wkpark Exp $
   
   function get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -275,9 +275,9 @@
           if (function_exists('gd_info')) {
             $fname=$dir.'/'.$file;
             list($w, $h) = getimagesize($fname);
  -          if ($w > $width) {
  +          if ($w > $thumb_width) {
               $nh=$width*$h/$w;
  -            $thumb= imagecreatetruecolor($width,$nh);
  +            $thumb= imagecreatetruecolor($thumb_width,$nh);
               // XXX only jpeg for testing now.
               if (preg_match("/\.(jpg|jpeg)$/i",$file))
                 $imgtype= 'jpeg';
  @@ -288,7 +288,8 @@
   
               $myfunc='imagecreatefrom'.$imgtype;
               $source= $myfunc($fname);
  -            imagecopyresized($thumb, $source, 0,0,0,0, $thumb_width, $nh, $w, $h);
  +            imagecopyresampled($thumb, $source, 0,0,0,0, $thumb_width, $nh, $w, $h);
  +            #imagecopyresized($thumb, $source, 0,0,0,0, $thumb_width, $nh, $w, $h);
               $myfunc='image'.$imgtype;
               $myfunc($thumb, $dir.'/thumbnails/'.$file);
             }
  
  
  


wkpark      2008/04/17 11:53:18

  Modified:    plugin   bbs.php
  Log:
  fixed last change to use a thumbwidth param
  
  Revision  Changes    Path
  1.10      +6 -6      moniwiki/plugin/bbs.php
  
  Index: bbs.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/bbs.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- bbs.php	16 Apr 2008 17:58:16 -0000	1.9
  +++ bbs.php	17 Apr 2008 02:53:18 -0000	1.10
  @@ -5,7 +5,7 @@
   //
   // Usage: [[BBS(pagename,count,mode)]]
   //
  -// $Id: bbs.php,v 1.9 2008/04/16 17:58:16 wkpark Exp $
  +// $Id: bbs.php,v 1.10 2008/04/17 02:53:18 wkpark Exp $
   
   function _get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -477,7 +477,7 @@
       }
   
       $bpage=_rawurlencode($bname);
  -    $nid= $_GET['no'] ? $_GET['no']:$nid;
  +    $nid= $nid ? $nid:$_GET['no'];
   
       $nids=preg_split('/\s+/',$nid);
       rsort($nids);
  @@ -540,14 +540,14 @@
               $cache=new Cache_text('attachments');
               $attachs=unserialize($cache->fetch($MyBBS->bbsname.':'.$nid));
               if (preg_match('/^attachment:([^\?]+)(\?.*)?$/',$attachs[0],$m)) {
  -                $img=$formatter->macro_repl('Attachment',$m[1].'?width=100');
  +                $img=$formatter->macro_repl('Attachment',$m[1].'?thumbwidth=100');
               }
               $subject=$formatter->link_tag($bpage,"?no=$nid",$metas['Subject']);
           }
   
  -        $out="<table>\n".
  -            "<tr><td>".$img.'</td><td>'.$subject.'</td></tr>'.
  -            "<tr><td colspan='2'></td>\n</tr></table>";
  +        $out="<div class='simpleView'><table>\n".
  +            "<tr><td class='img'>".$img."</td><td class='subject'>".$subject.'</td></tr>'.
  +            "<tr><td colspan='2'></td>\n</tr></table></div>";
   
           return $out;
       }
  
  
  


wkpark      2008/04/17 18:47:17

  Modified:    plugin/processor pic.php
  Log:
  fixed last change
  
  Revision  Changes    Path
  1.6       +2 -2      moniwiki/plugin/processor/pic.php
  
  Index: pic.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/pic.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- pic.php	10 Apr 2008 09:35:20 -0000	1.5
  +++ pic.php	17 Apr 2008 09:47:16 -0000	1.6
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a PIC plugin for the MoniWiki
   //
  -// $Id: pic.php,v 1.5 2008/04/10 09:35:20 wkpark Exp $
  +// $Id: pic.php,v 1.6 2008/04/17 09:47:16 wkpark Exp $
   // Usage: {{{#!pic
   // some codes
   // }}}
  @@ -34,7 +34,7 @@
   
       $png_url=
         $DBInfo->cache_public_url ? $DBInfo->cache_public_url.'/'.$pngname:
  -      $DBInfo->url_prefix.'/'.$png;
  +      $DBInfo->url_prefix.'/'.$outpath_png;
     } else {
       $outpath_png=$cache_dir.'/'.$uniq.'.png';
       $png_url=$cache_url.'/'.$uniq.'.png';
  
  
  


wkpark      2008/04/17 18:47:39

  Modified:    plugin   markup.php
  Log:
  use send_header()
  
  Revision  Changes    Path
  1.9       +2 -1      moniwiki/plugin/markup.php
  
  Index: markup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/markup.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- markup.php	6 Nov 2007 12:38:26 -0000	1.8
  +++ markup.php	17 Apr 2008 09:47:39 -0000	1.9
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a markup plugin for the MoniWiki
   //
  -// $Id: markup.php,v 1.8 2007/11/06 12:38:26 wkpark Exp $
  +// $Id: markup.php,v 1.9 2008/04/17 09:47:39 wkpark Exp $
   
   function do_markup($formatter,$options) {
       $formatter->section_edit=0;
  @@ -13,6 +13,7 @@
       $formatter->get_javascripts(); // trash default javascripts
   
       //$options['fixpath']=1;
  +    $formatter->send_header("",$options);
       $formatter->postfilters=array('fiximgpath');
       if (!$options['all']) $formatter->wikimarkup=1;
       if ($options['value']) {
  
  
  


wkpark      2008/04/17 18:49:02

  Added:       plugin   TTFText.php
  Log:
  a new TTFText plugin added using imageTtfText()
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/TTFText.php
  
  Index: TTFText.php
  ===================================================================
  <?php
  // Copyright 2008 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a TTF Text plugin for the MoniWiki
  //
  // Author: Won-Kyu Park <wkpark@kldp.org>
  // Date: 2008-04-17
  // Name: TTFText
  // Description: TTF Text plugin with Background image technic.
  // URL: MoniWiki:TTFTextPlugin
  // Version: $Revision: 1.1 $
  // License: GPL
  //
  // Usage: [[TTFText(text,fontname=Eunjin,fontsize=12,float=left)]]
  //
  // $Id: TTFText.php,v 1.1 2008/04/17 09:49:02 wkpark Exp $
  
  function macro_TTFText($formatter,$value,$params=array()) {
      global $DBInfo;
  
      $pc=array(0,0,0);
      if ($DBInfo->gdfontpath)
          putenv('GDFONTPATH='.$DBInfo->gdfontpath);
      else
          putenv('GDFONTPATH='.getcwd().'/data');
  
      $args=explode(',',$value);
  
      $text=array_shift($args);
  
      $float='';
      $args= empty($args) ? array():($args);
      foreach ($args as $arg) {
          list($k,$v)=split('=',trim($arg),2);
          if ($k == 'font') {
              $font=$v;
              if ($font{0}!='/') {
                  $real=getcwd().'/data/'.$font; # XXX
                  if (!preg_match('/\.ttf$/i',$real))
                      $real.='.ttf';
                  if (file_exists($real)) $font=$real;
              }
          } else if ($k == 'font-size' or $k == 'fontsize') {
              $fontsize=intval($v);
          } else if ($k == 'dropcap' and (empty($v) or $v == 1)) {
              $float="float:left;";
          } else if ($k == 'float' and in_array($v, array('left','middle','right'))) {
              $float="float:$v;";
          } else if ($k == 'color' and preg_match('/^#[0-9a-f]{6}$/',$v)) {
              $pc=sscanf($v, '#%2x%2x%2x');
          }
      }
  
      $font=$font ? $font : realpath('./data/Eunjin.ttf');
  
      $pointsize=$fontsize ? $fontsize:15;
  
      $uniq=md5($value);
      $vartmp_dir=&$DBInfo->vartmp_dir;
      $cache_dir=$DBInfo->upload_dir."/TTFText";
      $cache_url=$DBInfo->upload_url ? $DBInfo->upload_url.'/TTFText':
          $DBInfo->url_prefix.'/'.$cache_dir;
  
      if ($DBInfo->cache_public_dir) {
          $fc=new Cache_text('ttftext',2,'png',$DBInfo->cache_public_dir);
          $pngname=$fc->_getKey($uniq,0);
          $outpath_png= $DBInfo->cache_public_dir.'/'.$pngname;
          
          $png_url=
              $DBInfo->cache_public_url ? $DBInfo->cache_public_url.'/'.$pngname:
              $DBInfo->url_prefix.'/'.$outpath_png;
      } else {
          $outpath_png=$cache_dir.'/'.$uniq.'.png';
          $png_url=$cache_url.'/'.$uniq.'.png';
      }
  
      $bbox= imageTtfBBox($pointsize, 0,$font,$text);
      $h = $bbox[3] - $bbox[5];
      $w = $bbox[2] - $bbox[0];
  
      /*
      $w= mb_strlen($text,$DBInfo->charset)*$pointsize;
      print "$w x $h<br />";
       */
  
      $margin=4; // XXX
      $w= $w + 2*$margin;
      $h= $h + $margin;
  
      if ($formatter->refresh || !file_exists($outpath_png)) {
          if (!file_exists(dirname($outpath_png))) {
              umask(000);
              _mkdir_p(dirname($outpath_png),0777);
              umask(022);
          }
  
          $sx = 0;
          $sy = $h;
  
          $im= ImageCreateTruecolor($w,$h);
          $white = imagecolorallocate($im, 255, 255, 255);
          $black = imagecolorallocate($im, 0, 0, 0);
          $pen = imagecolorallocate($im, $pc[0], $pc[1], $pc[2]);
          imagefill ($im, 0, 0, $white );
  
          $sx=$margin;    
          $sy=$margin/2+$pointsize;    
          ImageTtfText($im,$pointsize, 0, $sx, $sy, $pen ? $pen:$black, $font, $text);
          #ImageftText($im,$pointsize, 0, $sx, $sy, $pen ? $pen:$black, $font, $text);
  
          imagePng($im,$outpath_png);
      }
      $png_url=qualifiedUrl($png_url);
  
      return "<span style='display:block;$float".
          "background:url(\"$png_url\") no-repeat;width:${w}px;height:${h}px;' />".
          "<span style='display:none'>".$text."</span></span>";
  }
  
  // vim:et:sts=4:sw=4
  ?>
  
  
  


wkpark      2008/04/17 18:51:37

  Modified:    lib      metadata.php
  Log:
  slightly modified for some conflict situation with normal contents
  
  Revision  Changes    Path
  1.4       +4 -3      moniwiki/lib/metadata.php
  
  Index: metadata.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/metadata.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- metadata.php	12 Apr 2008 02:41:30 -0000	1.3
  +++ metadata.php	17 Apr 2008 09:51:37 -0000	1.4
  @@ -2,7 +2,7 @@
   //
   // Metadata module for MoniWiki
   //
  -// $Id: metadata.php,v 1.3 2008/04/12 02:41:30 wkpark Exp $
  +// $Id: metadata.php,v 1.4 2008/04/17 09:51:37 wkpark Exp $
   
   function getMetadata($raw,$mode=1,$opts=array()) {
   
  @@ -61,13 +61,14 @@
               break;
           }
           $key=strtok($line,' ');
  -        $val=strtok('');
  +        $val=rtrim(strtok(''));
           if ($key=='From') { # mail type
               if (empty($meta['magic'])) {
                   $meta['magic']=$line; continue;
               } else break;
           }
  -        if (preg_match('/(^[a-zA-Z0-9\-\_]+):/',$key,$m)) $meta[$m[1]]=$val;
  +        if (preg_match('/(^[A-Z][a-zA-Z0-9\-]+):\s/',$key,$m))
  +            $meta[$m[1]]=$val;
           else break;
       }
       if ($metaok) return array($meta,$body);
  
  
  


wkpark      2008/04/17 18:55:56

  Added:       lib      version.Git.php
  Log:
  Version control class for Git.
  EXPERIMENTAL!!
  Info is not working now
  
  Revision  Changes    Path
  1.1                  moniwiki/lib/version.Git.php
  
  Index: version.Git.php
  ===================================================================
  <?php
  // Copyright 2008 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a Git versioning plugin for the MoniWiki
  //
  // $Id: version.Git.php,v 1.1 2008/04/17 09:55:56 wkpark Exp $
  // WARNING: experimental
  //
  
  class Version_Git extends Version_RCS {
    var $DB;
  
    function Version_Git($DB) {
      $this->DB=$DB;
  
      $this->cwd=getcwd();
  
      $this->NULL='';
      $this->pmark='^';
      if(getenv("OS")=="Windows_NT") {
        # "^^" under the Win32
        $this->pmark='^^';
      } else {
        $this->NULL=' 2>/dev/null';
      }
      if ($DB->rcs_error_log) $this->NULL='';
  
      $this->git_user=$DB->git_user;
  
      // init
      if (!is_dir($this->DB->text_dir.'/.git'))
        $log = $this->_init();
    }
  
    function _init() {
      chdir($this->DB->text_dir);
      $fp=popen("git-init",'r');
  
      $out='';
      if ($fp) {
        while (!feof($fp)) {
          $line=fgets($fp,2048);
          $out.= $line;
        }
        pclose($fp);
      }
      chdir($this->cwd);
      return $out;
    }
  
    function _filename($pagename) {
      # Return filename where this word/page should be stored.
      return $this->DB->_getPageKey($pagename);
    }
  
    function co($pagename,$rev='',$opt='') {
      # XXX
      $filename= $this->_filename($pagename);
  
      if ($rev) $rev=':'.$rev;
  
      chdir($this->DB->text_dir);
      $fp=@popen("git co $rev ".$filename,"r");
      chdir($this->cwd);
      $out='';
      if ($fp) {
        while (!feof($fp)) {
          $line=fgets($fp,2048);
          $out.= $line;
        }
        pclose($fp);
      }
      return $out;
    }
  
    function ci($pagename,$log) {
      $key=$this->_filename($pagename);
      chdir($this->DB->text_dir);
      $ret=system("git-add ".$key." ".$this->NULL);
      $ret=system("git-commit -m\"".$log."\" ".$key.$this->NULL);
      chdir($this->cwd);
    }
  
    function _ci($filename,$log) {
      $key=basename($filename); # XXX
      chdir($this->DB->text_dir);
      $fp=popen("git-add ".$key.$this->NULL,"r");
      if ($fp) pclose($fp);
      $fp=popen("git-commit -m\"".$log."\" ".$key.$this->NULL,"r");
      if ($fp) pclose($fp);
  
      chdir($this->cwd);
    }
  
    function _add($pagename,$log) {
      $key=$this->_filename($pagename);
      chdir($this->DB->text_dir);
      $ret=system("git-add ".$key.$this->NULL);
      chdir($this->cwd);
    }
  
    function rlog($pagename,$rev='',$opt='',$oldopt='') {
      // oldopts are incompatible options only supported by the rlog in the rcs
      if ($rev)
        $rev = ":$rev";
      $filename=$this->_filename($pagename);
  
      chdir($this->DB->text_dir);
      $fp= popen("git-log $opt $rev ".$filename.$this->NULL,"r");
      chdir($this->cwd);
      $out='';
      if ($fp) {
        while (!feof($fp)) {
          $line=fgets($fp,1024);
          $out .= $line;
        }
        pclose($fp);
      }
      return $out;
    }
  
    function diff($pagename,$rev='',$rev2='') {
      # XXX
      $filename=$this->_filename($pagename);
      chdir($this->DB->text_dir);
      $fp= popen("git-diff --no-color ".
        "HEAD".$this->pmark."$rev HEAD ".$filename,'r');
  
      chdir($this->cwd);
  
      if (!$fp) return '';
      while (!feof($fp)) {
        # trashing first two lines XXX
        $line=fgets($fp,1024);
        if (preg_match('/^--- /',$line)) {
          $line=fgets($fp,1024);
          break;
        }
      }
      while (!feof($fp)) {
        $line=fgets($fp,1024);
        $out.= $line;
      }
      pclose($fp);
      return $out;
    }
  
    function get_rev($pagename,$mtime,$last=0) {
      # FIXME
      if ($last==1) {
        $tag='head:';
        $opt='-h';
      } else $tag='revision';
      if ($mtime) {
        $date=gmdate('Y/m/d H:i:s',$mtime);
        if ($date) {
          $opt="-d\<'$date'";
          $tag='revision';
        }
      }
  
      return '1';
    }
  
    function purge($pagename,$rev) {
    }
  
    function delete($pagename) {
      $filename=$this->_filename($pagename);
      chdir($this->DB->text_dir);
      system("git rm ".$filename);
      chdir($this->cwd);
    }
  
    function rename($pagename,$new) {
      $keyname=$this->DB->_getPageKey($new);
      chdir($this->DB->text_dir);
      system("git mv ".$filename);
      chdir($this->cwd);
    }
  }
  
  // vim:et:ts=8:sts=2:sw=2
  ?>
  
  
  


wkpark      2008/04/17 18:58:32

  Modified:    lib      version.CVS.php
  Log:
  _ci() added but not tested.
  
  Revision  Changes    Path
  1.2       +7 -1      moniwiki/lib/version.CVS.php
  
  Index: version.CVS.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/version.CVS.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- version.CVS.php	8 Aug 2005 07:31:54 -0000	1.1
  +++ version.CVS.php	17 Apr 2008 09:58:32 -0000	1.2
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a CVS versioning plugin for the MoniWiki
   //
  -// $Id: version.CVS.php,v 1.1 2005/08/08 07:31:54 wkpark Exp $
  +// $Id: version.CVS.php,v 1.2 2008/04/17 09:58:32 wkpark Exp $
   // WARNING: experimental
   //
   
  @@ -89,6 +89,12 @@
   
     function ci($pagename,$log) {
       $key=$this->_filename($pagename);
  +
  +    $this->_ci($filename,$log);
  +  }
  +
  +  function _ci($filename,$log) {
  +    $key=basename($filename); // XXX
       chdir($this->DB->text_dir);
       //$ret=system("cvs commit -q -t-\"".$pagename."\" -m\"".$log."\" ".$key);
       if (!file_exists($this->cvs_root."/".$this->modname."/".$key.",v"))
  
  
  


wkpark      2008/04/18 00:15:53

  Modified:    lib      metadata.php
  Log:
  oops!! fix last change
  
  Revision  Changes    Path
  1.5       +2 -2      moniwiki/lib/metadata.php
  
  Index: metadata.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/metadata.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- metadata.php	17 Apr 2008 09:51:37 -0000	1.4
  +++ metadata.php	17 Apr 2008 15:15:53 -0000	1.5
  @@ -2,7 +2,7 @@
   //
   // Metadata module for MoniWiki
   //
  -// $Id: metadata.php,v 1.4 2008/04/17 09:51:37 wkpark Exp $
  +// $Id: metadata.php,v 1.5 2008/04/17 15:15:53 wkpark Exp $
   
   function getMetadata($raw,$mode=1,$opts=array()) {
   
  @@ -67,7 +67,7 @@
                   $meta['magic']=$line; continue;
               } else break;
           }
  -        if (preg_match('/(^[A-Z][a-zA-Z0-9\-]+):\s/',$key,$m))
  +        if (preg_match('/(^[A-Z][a-zA-Z0-9\-]+):$/',$key,$m))
               $meta[$m[1]]=$val;
           else break;
       }
  
  
  


wkpark      2008/04/18 00:42:50

  Modified:    plugin   bbs.php
  Log:
  more fixes
  
  Revision  Changes    Path
  1.11      +7 -4      moniwiki/plugin/bbs.php
  
  Index: bbs.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/bbs.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- bbs.php	17 Apr 2008 02:53:18 -0000	1.10
  +++ bbs.php	17 Apr 2008 15:42:50 -0000	1.11
  @@ -5,7 +5,7 @@
   //
   // Usage: [[BBS(pagename,count,mode)]]
   //
  -// $Id: bbs.php,v 1.10 2008/04/17 02:53:18 wkpark Exp $
  +// $Id: bbs.php,v 1.11 2008/04/17 15:42:50 wkpark Exp $
   
   function _get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -479,8 +479,11 @@
       $bpage=_rawurlencode($bname);
       $nid= $nid ? $nid:$_GET['no'];
   
  -    $nids=preg_split('/\s+/',$nid);
  -    rsort($nids);
  +    $nids=array();
  +    if ($nid) {
  +        $nids=preg_split('/\s+/',$nid);
  +        rsort($nids);
  +    }
   
       $options['p']= ($_GET['p'] > 0) ? $_GET['p']:1;
       $options['c']= ($ncount != 20) ? $ncount:'';
  @@ -529,7 +532,7 @@
       $narticle=sizeof($nids);
       $js='';
   
  -    if ($narticle == 1 and $options['mode'] == 'simple') {
  +    if ($nid and $narticle == 1 and $options['mode'] == 'simple') {
           $nid=$nids[0];
           if (!$nid or !$MyBBS->hasPage($nid)) return '[[BBS(error)]]';
           include_once('lib/metadata.php');
  
  
  


wkpark      2008/04/18 23:16:30

  Modified:    lib      unicode.php
  Log:
  add a hangul jamo routines from nabi :>
  
  Revision  Changes    Path
  1.2       +158 -2    moniwiki/lib/unicode.php
  
  Index: unicode.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/unicode.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- unicode.php	19 Dec 2006 02:01:38 -0000	1.1
  +++ unicode.php	18 Apr 2008 14:16:30 -0000	1.2
  @@ -1,9 +1,9 @@
   <?php
  -// Copyright 2005-2006 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2005-2008 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a unicode module for the MoniWiki
   //
  -// $Id: unicode.php,v 1.1 2006/12/19 02:01:38 wkpark Exp $
  +// $Id: unicode.php,v 1.2 2008/04/18 14:16:30 wkpark Exp $
   //
   // from http://www.randomchaos.com/document.php?source=php_and_unicode
   // with some modifications
  @@ -76,6 +76,7 @@
   
   function unicode_to_utf8( $str ) {
       $utf8 = '';
  +    if (!is_array($str)) $str= array($str);
       foreach( $str as $unicode ) {
           if ( $unicode < 128 ) {
               $utf8.= chr( $unicode );
  @@ -148,6 +149,7 @@
           0x3163=>0x1175,
       );
       $jamo=array();
  +    if (!is_array($unicode)) $unicode=array($unicode);
       //$unicode=utf8_to_unicode($str);
       foreach ($unicode as $u) {
           if ($u >= 0xac00 and $u <=0xd7af) {
  @@ -212,6 +214,160 @@
       return $ch;
   }
   
  +function hangul_jamo_to_cjamo($jamo) {
  +    if ($jamo >= 0x1100 && $jamo <= 0x1112)
  +        return hangul_choseong_to_cjamo($jamo);
  +    if ($jamo >= 0x1161 && $jamo <= 0x1175)
  +        return hangul_jungseong_to_cjamo($jamo);
  +    if ($jamo >= 0x11a7 && $jamo <= 0x11c2)
  +        return hangul_jongseong_to_cjamo($jamo);
  +    // else
  +    return $jamo;
  +}
  +
  +function hangul_choseong_to_cjamo($ch)
  +{
  +    static $table = array(
  +    0x3131,     /* 0x1100 */
  +    0x3132,     /* 0x1101 */
  +    0x3134,     /* 0x1102 */
  +    0x3137,     /* 0x1103 */
  +    0x3138,     /* 0x1104 */
  +    0x3139,     /* 0x1105 */
  +    0x3141,     /* 0x1106 */
  +    0x3142,     /* 0x1107 */
  +    0x3143,     /* 0x1108 */
  +    0x3145,     /* 0x1109 */
  +    0x3146,     /* 0x110a */
  +    0x3147,     /* 0x110b */
  +    0x3148,     /* 0x110c */
  +    0x3149,     /* 0x110d */
  +    0x314a,     /* 0x110e */
  +    0x314b,     /* 0x110f */
  +    0x314c,     /* 0x1110 */
  +    0x314d,     /* 0x1111 */
  +    0x314e      /* 0x1112 */
  +    );
  +    if ($ch < 0x1100 || $ch > 0x1112)
  +    {
  +        if ($ch == 0x1140)
  +            return 0x317f;
  +        else if ($ch == 0x114C)
  +            return 0x3181;
  +        else if ($ch == 0x1159)
  +            return 0x3186;
  +    return 0;
  +    }
  +    return $table[$ch - 0x1100];
  +}
  +
  +
  +function hangul_jungseong_to_cjamo($ch)
  +{
  +    static $table = array(
  +    0x314f,     /* 0x1161 */
  +    0x3150,     /* 0x1162 */
  +    0x3151,     /* 0x1163 */
  +    0x3152,     /* 0x1164 */
  +    0x3153,     /* 0x1165 */
  +    0x3154,     /* 0x1166 */
  +    0x3155,     /* 0x1167 */
  +    0x3156,     /* 0x1168 */
  +    0x3157,     /* 0x1169 */
  +    0x3158,     /* 0x116a */
  +    0x3159,     /* 0x116b */
  +    0x315a,     /* 0x116c */
  +    0x315b,     /* 0x116d */
  +    0x315c,     /* 0x116e */
  +    0x315d,     /* 0x116f */
  +    0x315e,     /* 0x1170 */
  +    0x315f,     /* 0x1171 */
  +    0x3160,     /* 0x1172 */
  +    0x3161,     /* 0x1173 */
  +    0x3162,     /* 0x1174 */
  +    0x3163      /* 0x1175 */
  +    );
  +    if ($ch < 0x1161 || $ch > 0x1175)
  +    {
  +        if ($ch == 0x119E)
  +            return 0x318D;
  +    return 0;
  +    }
  +    return $table[$ch - 0x1161];
  +}
  +
  +function hangul_jongseong_to_cjamo($ch)
  +{
  +    static $table = array(
  +    0x3131,     /* 0x11a8 */
  +    0x3132,     /* 0x11a9 */
  +    0x3133,     /* 0x11aa */
  +    0x3134,     /* 0x11ab */
  +    0x3135,     /* 0x11ac */
  +    0x3136,     /* 0x11ad */
  +    0x3137,     /* 0x11ae */
  +    0x3139,     /* 0x11af */
  +    0x313a,     /* 0x11b0 */
  +    0x313b,     /* 0x11b1 */
  +    0x313c,     /* 0x11b2 */
  +    0x313d,     /* 0x11b3 */
  +    0x313e,     /* 0x11b4 */
  +    0x313f,     /* 0x11b5 */
  +    0x3140,     /* 0x11b6 */
  +    0x3141,     /* 0x11b7 */
  +    0x3142,     /* 0x11b8 */
  +    0x3144,     /* 0x11b9 */
  +    0x3145,     /* 0x11ba */
  +    0x3146,     /* 0x11bb */
  +    0x3147,     /* 0x11bc */
  +    0x3148,     /* 0x11bd */
  +    0x314a,     /* 0x11be */
  +    0x314b,     /* 0x11bf */
  +    0x314c,     /* 0x11c0 */
  +    0x314d,     /* 0x11c1 */
  +    0x314e      /* 0x11c2 */
  +    );
  +    if ($ch < 0x11a8 || $ch > 0x11c2) {
  +        if ($ch == 0x11EB)
  +            return 0x317f;
  +        else if ($ch == 0x11F0)
  +            return 0x3181;
  +        else if ($ch == 0x11F9)
  +            return 0x3186;
  +        return 0;
  +    }
  +    return $table[$ch - 0x11a8];
  +}
  +
  +
  +function hangul_choseong_to_jongseong($ch)
  +{
  +    static $table = array(
  +      0x11a8,  /* choseong kiyeok      -> jongseong kiyeok      */
  +      0x11a9,  /* choseong ssangkiyeok -> jongseong ssangkiyeok */
  +      0x11ab,  /* choseong nieun       -> jongseong nieun       */
  +      0x11ae,  /* choseong tikeut      -> jongseong tikeut      */
  +      0x0,     /* choseong ssangtikeut -> jongseong tikeut      */
  +      0x11af,  /* choseong rieul       -> jongseong rieul       */
  +      0x11b7,  /* choseong mieum       -> jongseong mieum       */
  +      0x11b8,  /* choseong pieup       -> jongseong pieup       */
  +      0x0,     /* choseong ssangpieup  -> jongseong pieup       */
  +      0x11ba,  /* choseong sios        -> jongseong sios        */
  +      0x11bb,  /* choseong ssangsios   -> jongseong ssangsios   */
  +      0x11bc,  /* choseong ieung       -> jongseong ieung       */
  +      0x11bd,  /* choseong cieuc       -> jongseong cieuc       */
  +      0x0,     /* choseong ssangcieuc  -> jongseong cieuc       */
  +      0x11be,  /* choseong chieuch     -> jongseong chieuch     */
  +      0x11bf,  /* choseong khieukh     -> jongseong khieukh     */
  +      0x11c0,  /* choseong thieuth     -> jongseong thieuth     */
  +      0x11c1,  /* choseong phieuph     -> jongseong phieuph     */
  +      0x11c2   /* choseong hieuh       -> jongseong hieuh       */
  +    );
  +    if ($ch < 0x1100 || $ch > 0x1112)
  +    return 0;
  +    return $table[$ch - 0x1100];
  +}
  +
   // make a UTF-8 regular expression for Hangul
   function utf8_hangul_getSearchRule($str,$lastchar=1) {
       $rule='';
  
  
  


wkpark      2008/04/18 23:18:03

  Added:       lib      indexer.ko.php
  Log:
  add a Korean Indexer
  
  Revision  Changes    Path
  1.1                  moniwiki/lib/indexer.ko.php
  
  Index: indexer.ko.php
  ===================================================================
  <?php
  // Copyright 2005-2006 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a KoreanIndexer class for the MoniWiki
  //
  // $Id: indexer.ko.php,v 1.1 2008/04/18 14:18:03 wkpark Exp $
  //
  // EXPERIMENTAL !!
  
  class KoreanIndexer {
      function KoreanIndexer() {
          include_once(dirname(__FILE__).'/compat.php');
          include_once(dirname(__FILE__).'/unicode.php');
          $this->_eomiDic();
          $this->_josaDic();
          $this->_wordDic();
      }
  
      function _wordDic() {
          global $DBInfo;
  
          $lines=file(dirname(__FILE__).'/indexer/word.txt.utf-8');
          foreach ($lines as $l) $this->_word[]=trim($l);
          $this->_word_rule=implode('|',$this->_word);
          #print $this->_eomi_rule;
      }
  
      function _eomiDic() {
          global $DBInfo;
  
          #ㄱ,ㄴ,ㄹ,ㅁ
          #$jos=array('x3134','x3139','x3141','x3142');
  
          $lines=file(dirname(__FILE__).'/indexer/eomi.txt.utf-8');
          foreach ($lines as $l) {
              $l=strtr($l,"*","?");
              $l=preg_replace('/^(.*)\?/','(\\1)?',$l);
              $this->_eomi[]=trim($l);
              #$v=mb_encode_numericentity($v,$DBInfo->convmap,'utf-8');
              #$v=utf8_mb_encode(trim($l));
              #$n=strtok(substr($v,2),';');
              #if (in_array($n,$jos)) print '&#'.$n.';';
          }
          $this->_eomi_rule=implode('|',$this->_eomi);
          #print $this->_eomi_rule;
      }
  
      function _josaDic() {
          $lines=file(dirname(__FILE__).'/indexer/josa.txt.utf-8');
          foreach ($lines as $l) {
              $l=strtr($l,"*","?");
              $l=preg_replace('/^(.*\?)/','(\\1)',$l);
              $this->_josa[]=trim($l);
          }
  
          $this->_josa_rule=implode('|',$this->_josa);
          #print $this->_josa_rule;
      }
  
      function getWordRule($word,$lastchar=1) {
          $rule=$word;
          $val=utf8_to_unicode($word);
          $len=sizeof($val);
          #print $word.':'.$len;
          if ($len >= 1) { // make a regex using with the last char
              $ch=array_pop($val);
              if (($ch >=0xac00 and $ch <=0xd7a3) or ($ch >=0x3130 and $ch <=0x318f)) {
                  $jamo=hangul_to_jamo(array($ch));
  
                  $wlen=sizeof($jamo);
                  if ($wlen >=3) {
                      if (in_array($jamo[2],array(0x11ab,0x11af,0x11b7,0x11b8,0x11bb)) ) {
                          $rule=unicode_to_utf8($val);
                          if ($lastchar == 1) {
                              $rule.=unicode_to_utf8(jamo_to_syllable(array($jamo[0],$jamo[1])));
                          } else {
                              $rule.=unicode_to_utf8(array(hangul_choseong_to_cjamo($jamo[0])));
                              $rule.=unicode_to_utf8(array(hangul_jungseong_to_cjamo($jamo[1])));
                          }
                          $rule.=unicode_to_utf8(array(hangul_jongseong_to_cjamo($jamo[2])));
                      }
                  }
              }
          }
          return $rule;
      }
  
      function isWord($word) {
          preg_match('/^('.$this->_word_rule.')$/S',$word,$match);
          if ($match[1]) return true;
          return false;
      }
  
      function getStem($word,&$match,&$type) {
          $type=1;
          if ($this->isWord($word)) return $word;
          $stem=$this->getNoun($word,$match);
          if ($stem and $this->isWord($stem)) return $stem;
          $verb=$this->getVerb($word,$vmatch);
          if ($stem or $verb) {
  
              if (strlen($match[1]) < strlen($vmatch[1])) {
                  $type=2;
                  $match=$vmatch;
                  $stem=$verb;
              }
              return $stem;
          }
          $type=0;
          return false;
      }
  
      function getNoun($word,&$match) {
          # remove josa
          preg_match('/('.$this->_josa_rule.')$/S',$word,$match);
          if (!empty($match[1])) {
              $pword=substr($word,0,-strlen($match[1]));
              if ($pword and $this->isWord($pword)) return $pword;
              $pword=$this->getWordRule($pword).$match[1];
              preg_match('/('.$this->_josa_rule.')$/S',$pword,$nmatch);
          } else {
              $word=$this->getWordRule($word);
              preg_match('/('.$this->_josa_rule.')$/S',$word,$match);
          }
          if ($match[1] and $nmatch[1] and (strlen($match[1]) < strlen($nmatch[1]))) {
              $match=$nmatch;
              $word=$pword;
          }
          if ($match) {
              #print "<pre>";
              #print_r($match);
              #print "</pre>";
              $stem=substr($word,0,-strlen($match[1]));
              return $stem;
          }
          return false;
      }
  
      function isHangul($ch) {
          if (($ch >=0xac00 and $ch <=0xd7a3) or ($ch >=0x3130 and $ch <=0x318f))
              return true;
          return false;
      }
  
      function getVerb($word,&$match) {
          # remove eomi
          $save='';
          preg_match('/('.$this->_eomi_rule.')$/S',$word,$match);
          if (!empty($match[1])) {
              $pword=substr($word,0,-strlen($match[1]));
              $pword=$this->getWordRule($pword).$match[1];
              preg_match('/('.$this->_eomi_rule.')$/S',$pword,$nmatch);
          } else {
              $word=$this->getWordRule($word);
              preg_match('/('.$this->_eomi_rule.')$/S',$word,$match);
          }
  
          if ($match[1] and $nmatch[1] and (strlen($match[1]) < strlen($nmatch[1]))) {
              $match=$nmatch;
              $word=$pword;
          }
          if ($match) {
              #print $word."==".$match[1];
              $stem=substr($word,0,-strlen($match[1]));
          } else {
              $stem= $word;
          }
  
          {
          # 각종 규칙 불규칙 처리
              $ustem= utf8_to_unicode($stem);
              $ch= array_pop($ustem);
              if ($this->isHangul($ch)) {
                  $j= hangul_to_jamo($ch);
                  if (sizeof($j) == 3 and $j[2] == 0x11bb /* ㅆ */ ) {
                      if (
                      #if (in_array($j[0], array(0x1100,0x110b,0x110c) ) and
                          in_array($j[1],array(0x1165, 0x1166,0x1167)) /* ㅓ,ㅔ,ㅕ */ ) {
                          if (in_array($j[0], array(0x1100,0x110b,0x110c)) ) {
                              # 어 여 저 져 게
                              $match[1]=unicode_to_utf8($ch).$match[1];
                              unset($ch);
                          } else if ($j[1] == 0x1167
                              and in_array($j[0],array(0x1101,0x1102,0x1103,0x1105,0x1106,0x1107,
                                                       0x1109,0x110c,0x110e,0x110f,0x1110,0x1111,0x1112)) ) {
                              # 여 변환
                              // 혔 -> ㅎ+었 -> 히+었
                              $j[1]=0x1165;
                              $syll=jamo_to_syllable(array(0x110b,$j[1],$j[2]));
                              $match[1]=unicode_to_utf8($syll).$match[1];
  
                              /* 혔 -> 히+었, 폈 -> 피+었 */
                              $j[1]=0x1175;
  
                              $syll=jamo_to_syllable(array($j[0],$j[1])); /* 쓰 */
                              $ch=$syll[0];
                          } else if (in_array($j[0],array(0x1101,0x1104,0x110a,0x1111,0x1112)) ) {
                              # 우 불규칙
                              /* 떴 -> ㄸ + 었 */
                              $syll=jamo_to_syllable(array(0x110b,$j[1],$j[2]));
                              $match[1]=unicode_to_utf8($syll).$match[1];
  
                              /* ㄸ -> 뜨 */
                              $j[1]=0x1173; /* ㅡ */
                              if ($j[0]== 0x1111) $j[1]=0x116e; /* 펐 푸+었 */
                              $syll=jamo_to_syllable(array($j[0],$j[1])); /* 쓰 */
                              $ch=$syll[0];
                          } else if (in_array($j[0],array(0x1101,0x1104,0x110a,0x1111,0x1112)) ) {
                          }
                      } else if ($j[0]==0x1112 /* ㅎ */ and in_array($j[1],array(0x1162)) /* ㅐ */ ) {
                          array_push($ustem, 0xd558); /* 하 */;
                          $syll=jamo_to_syllable(array(0x110b,0x1167,0x11bb));
                          $match[1]=unicode_to_utf8($syll).$match[1];
                          #$match[1]='여'.$match[1]; /* 해 -> 하 + 여 */
                          unset($ch);
                      } else { /* ㅆ를 떼어낸다. */
                          #print '~~'.$stem.'~~';
                          $syll=jamo_to_syllable(array($j[0],$j[1]));
                          $match[1]=unicode_to_utf8(hangul_jongseong_to_cjamo($j[2])).$match[1];
                          $ch=$syll[0];
                          unset($j[2]);
                          #unset($ch);
                      }
                      if (!$ch) {
                          $ch= array_pop($ustem);
                          $j= hangul_to_jamo($ch);
                      }
                  }
                  
                  if (sizeof($j) == 2) {
                      if (in_array($j[0],array(0x110c) /* ㅈ */ )
                          and in_array($j[1],array(0x116e,0x1175)) /* ㅜ,ㅣ */ ) {
                          /* 주, 지 */
                          $match[1]=unicode_to_utf8($ch).$match[1];
                          unset($ch);
                          $ch= array_pop($ustem);
                          $j= hangul_to_jamo($ch);
                      }
                      if ($j[1]==0x1165 /* ㅓ */ and in_array($j[0],array(0x1101,0x1104,0x110a,0x1111)) ) {
                          /* 꺼,떠,써,퍼 */
                          $syll=jamo_to_syllable(array(0x110b,0x1165)); /* 어 */
                          $match[1]=unicode_to_utf8($syll).$match[1];
                          if ($j[0] == 0x1111)
                              $syll=jamo_to_syllable(array($j[0],0x116e)); /* 푸 */
                          else
                              $syll=jamo_to_syllable(array($j[0],0x1173)); /* 쓰 */
                          array_push($ustem,$syll[0]);
                          unset($ch);
                          $ch= array_pop($ustem);
                          $j= hangul_to_jamo($ch);
                      }
                  }
  
                  while (sizeof($j) == 2 and $j[0] == 0x110b
                      and in_array($j[1],array(0x116a,0x116e,0x116f)) ) {
                      # /* 와 우 워 */
                      $ch1=array_pop($ustem);
                      $jamo=hangul_to_jamo($ch1);
                      if (sizeof($jamo)==2) {
                          $syll=jamo_to_syllable(array($jamo[0],$jamo[1],0x11b8));
                          array_push($ustem,$syll[0]);
                          /* add ㅂ */
                          $match[1]=unicode_to_utf8(array($ch)).$match[1];
                          unset($ch);
                      } else {
                          array_push($ustem,$ch1);
                      }
  
  
                      break;
                  }
  
  
                  if ($ch) array_push($ustem,$ch);
                  return unicode_to_utf8($ustem);
              }
  
              #print "<pre>";
              #print($word.'-'.$match[1]);
              #print_r($match);
              #print "</pre>";
              #$stem=substr($word,0,-strlen($match[1]));
              $match[1]=$save.$match[1];
              return $stem;
          }
          return false;
      }
  }
  
  // vim:et:sts=4:sw=4:
  
  
  


wkpark      2008/04/19 06:43:20

  Modified:    lib      indexer.ko.php
  Log:
  more update
  
  Revision  Changes    Path
  1.2       +30 -13    moniwiki/lib/indexer.ko.php
  
  Index: indexer.ko.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/indexer.ko.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- indexer.ko.php	18 Apr 2008 14:18:03 -0000	1.1
  +++ indexer.ko.php	18 Apr 2008 21:43:20 -0000	1.2
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a KoreanIndexer class for the MoniWiki
   //
  -// $Id: indexer.ko.php,v 1.1 2008/04/18 14:18:03 wkpark Exp $
  +// $Id: indexer.ko.php,v 1.2 2008/04/18 21:43:20 wkpark Exp $
   //
   // EXPERIMENTAL !!
   
  @@ -19,7 +19,7 @@
       function _wordDic() {
           global $DBInfo;
   
  -        $lines=file(dirname(__FILE__).'/indexer/word.txt.utf-8');
  +        $lines=file(dirname(__FILE__).'/../data/dict/word.txt.utf-8');
           foreach ($lines as $l) $this->_word[]=trim($l);
           $this->_word_rule=implode('|',$this->_word);
           #print $this->_eomi_rule;
  @@ -31,7 +31,7 @@
           #ㄱ,ㄴ,ㄹ,ㅁ
           #$jos=array('x3134','x3139','x3141','x3142');
   
  -        $lines=file(dirname(__FILE__).'/indexer/eomi.txt.utf-8');
  +        $lines=file(dirname(__FILE__).'/../data/dict/eomi.txt.utf-8');
           foreach ($lines as $l) {
               $l=strtr($l,"*","?");
               $l=preg_replace('/^(.*)\?/','(\\1)?',$l);
  @@ -46,7 +46,7 @@
       }
   
       function _josaDic() {
  -        $lines=file(dirname(__FILE__).'/indexer/josa.txt.utf-8');
  +        $lines=file(dirname(__FILE__).'/../data/dict/josa.txt.utf-8');
           foreach ($lines as $l) {
               $l=strtr($l,"*","?");
               $l=preg_replace('/^(.*\?)/','(\\1)',$l);
  @@ -99,7 +99,7 @@
           $verb=$this->getVerb($word,$vmatch);
           if ($stem or $verb) {
   
  -            if (strlen($match[1]) < strlen($vmatch[1])) {
  +            if (strlen($match[1]) <= strlen($vmatch[1])) {
                   $type=2;
                   $match=$vmatch;
                   $stem=$verb;
  @@ -146,18 +146,27 @@
           # remove eomi
           $save='';
           preg_match('/('.$this->_eomi_rule.')$/S',$word,$match);
  -        if (!empty($match[1])) {
  +        $word1=$this->getWordRule($word);
  +        preg_match('/('.$this->_eomi_rule.')$/S',$word1,$match1);
  +        if ($match[1] and $match1[1]) {
  +            if ((strlen($match[1]) <= strlen($match1[1])) ) {
  +                $match=$match1;
  +                $word=$word1;
  +            }
  +        } else if (!empty($match[1])) {
               $pword=substr($word,0,-strlen($match[1]));
               $pword=$this->getWordRule($pword).$match[1];
               preg_match('/('.$this->_eomi_rule.')$/S',$pword,$nmatch);
  -        } else {
  -            $word=$this->getWordRule($word);
  -            preg_match('/('.$this->_eomi_rule.')$/S',$word,$match);
  -        }
   
  -        if ($match[1] and $nmatch[1] and (strlen($match[1]) < strlen($nmatch[1]))) {
  -            $match=$nmatch;
  -            $word=$pword;
  +            if ($match[1] and $nmatch[1]) {
  +                if (strlen($match[1]) <= strlen($nmatch[1])) {
  +                    $match=$nmatch;
  +                    $word=$pword;
  +                }
  +            }
  +        } else if (!empty($match1[1])) {
  +            $match=$match1;
  +            $word=$word1;
           }
           if ($match) {
               #print $word."==".$match[1];
  @@ -249,6 +258,14 @@
                           $ch= array_pop($ustem);
                           $j= hangul_to_jamo($ch);
                       }
  +                    if (in_array($j[0],array(0x1105) /* ㄹ */ )
  +                        and in_array($j[1],array(0x1161,0x1165)) /* 라,러 */ ) {
  +
  +                        $syll=jamo_to_syllable(array($j[0],$j[1],0x11c2)); /* 랗,렇 */
  +                        array_push($ustem,$syll[0]);
  +                        unset($ch);
  +                        unset($j);
  +                    }
                   }
   
                   while (sizeof($j) == 2 and $j[0] == 0x110b
  
  
  


wkpark      2008/04/19 06:43:29

  moniwiki/data/dict - New directory

wkpark      2008/04/19 06:46:16

  Added:       data/dict eomi.txt.utf-8 josa.txt.utf-8 word.txt.utf-8
  Log:
  add missing files
  
  Revision  Changes    Path
  1.1                  moniwiki/data/dict/eomi.txt.utf-8
  
  Index: eomi.txt.utf-8
  ===================================================================
  ㄴ
  ㄴ*가
  ㄴ*감
  ㄴ*걸
  ㄴ*고
  ㄴ*다
  ㄴ*다고
  ㄴ*다느니
  ㄴ*다니
  ㄴ*다니까
  ㄴ*다마는
  ㄴ*다마다
  ㄴ*다만
  ㄴ*다며
  ㄴ*다면
  ㄴ*다면서
  ㄴ*다손
  ㄴ*단다
  ㄴ*담
  ㄴ*답시고
  ㄴ*대
  ㄴ*댄
  ㄴ*댜
  ㄴ*데
  ㄴ*뎌
  ㄴ*뎌이고
  ㄴ*들
  ㄴ*바
  ㄴ*져이고
  ㄴ*즉
  ㄴ*지
  ㄴ*지고
  ㄴ*지라
  ㄹ
  ㄹ*거나
  ㄹ*걸
  ㄹ*게
  ㄹ*까
  ㄹ*꼬
  ㄹ*낫다
  ㄹ*는지
  ㄹ*다
  ㄹ*띠니라
  ㄹ*띠라
  ㄹ*라
  ㄹ*라고
  ㄹ*라치면
  ㄹ*락
  ㄹ*랏다
  ㄹ*래
  ㄹ*러니
  ㄹ*러라
  ㄹ*런가
  ㄹ*런고
  ㄹ*럿다
  ㄹ*레
  ㄹ*레라
  ㄹ*로다
  ㄹ*만뎡
  ㄹ*만졍
  ㄹ*망정
  ㄹ*밖에
  ㄹ*뿐더러
  ㄹ*새
  ㄹ*샤
  ㄹ*세
  ㄹ*세라
  ㄹ*세말이지
  ㄹ*셔
  ㄹ*션
  ㄹ*셰라
  ㄹ*소냐
  ㄹ*쇠
  ㄹ*수록
  ㄹ*슨
  ㄹ*시
  ㄹ*쏘냐
  ㄹ*쏜
  ㄹ*쏜가
  ㄹ*쐬
  ㄹ*씨고
  ㄹ*작시면
  ㄹ*지
  ㄹ*지나
  ㄹ*지니
  ㄹ*지니라
  ㄹ*지라
  ㄹ*지라도
  ㄹ*지어다
  ㄹ*지언정
  ㄹ*진대
  ㄹ*진댄
  ㄹ*진저
  ㅁ
  ㅁ*세
  ㅁ*에도
  ㅁ*에랴
  ㅂ*늰다
  ㅂ*니까
  ㅂ*니다
  ㅂ*디까
  ㅂ*디다
  ㅂ*딘다
  ㅂ*쇼
  ㅂ*시다
  ㅂ*시오
  가뇨
  가니
  간마
  거
  거나
  거뇨
  거늘
  거니
  거니와
  거드란
  거드면
  거든
  거라
  거시
  거시늘
  거시니
  거시니와
  거시든
  거시아
  거신
  거신디
  거신마
  거야
  거이고
  건대
  건댄
  건디
  건마
  건마는
  건만
  건이
  걸랑
  것다
  게
  게끔
  게나
  게라
  게시리
  게콰라
  고나
  고는
  고라
  고라쟈
  고려
  고말고
  고서
  고시라
  고신
  고야
  고자
  고쟈
  고저
  고져
  곡
  곤
  과뎌
  과라
  과저
  관
  관데
  괘라
  괴야
  구나
  구려
  구료
  구먼
  구면
  기로
  기로서
  기로서니
  기로선들
  기에
  기에망정이지
  길래
  나마
  나마나
  나시
  나시든
  나이까
  나이다
  냐
  냐고
  너라
  네
  노니
  노닛가
  노다
  노라
  노라고
  노라니
  노라면
  노매라
  노소니
  노소라
  노이다
  논
  논가
  놋다
  뇨
  느냐
  느냐고
  느뇨
  느니
  느니라
  느라
  느라고
  는
  는가
  는감
  는걸
  는고
  는고야
  는구나
  는구려
  는구료
  는구먼
  는구면
  는군
  는군요
  는다
  는다고
  는다느니
  는다니
  는다니까
  는다마는
  는다만
  는다며
  는다면서
  는다손
  는단다
  는담
  는답시고
  는데
  는바
  는지
  는지고
  는지라
  니
  니가
  니고
  니까
  니까는
  니깐
  니다
  니라
  닌댄
  다
  다가
  다가는
  다간
  다고
  다느냐
  다느니
  다니
  다니까
  다라
  다마는
  다마다
  다만
  다며
  다면
  다면서
  다소니
  다소라
  다손
  다시피
  다오
  단다
  단디면
  달
  답니까
  답니다
  답시고
  더구나
  더구려
  더구료
  더구먼
  더구면
  더군
  더군요
  더냐
  더니
  더니가
  더니라
  더니마는
  더니만
  더니이까
  더니이다
  더다
  더든
  더라
  더라도
  더라면
  더라손
  더면
  더시니
  더시다
  더신
  더신가
  더이까
  더이다
  던
  던가
  던걸
  던고
  던다
  던데
  던덴
  던들
  던바
  던지
  데
  도록
  도소니
  도소다
  되
  든
  든지
  듯
  듯이
  디
  디록
  디외
  디위
  ㄹ*리
  라
  라고
  라느니
  라니
  라니까
  라니까는
  라니깐
  라도
  라든지
  라며
  라면서
  라서
  라야
  라야만
  라오
  라지
  락
  란
  란다
  람
  랍니다
  랍시고
  래
  랴
  러니
  러니라
  러니이까
  러니이다
  러시니
  러이까
  러이다
  런가
  런고
  런들
  런마
  려
  려거든
  려고
  려나
  려니
  려니와
  려며는
  려면
  려무나
  련마는
  련만
  렴
  렵니까
  렵니다
  렷다
  로고
  로구나
  로구려
  로구료
  로구먼
  로구면
  로군
  로다
  로되
  로라
  로섀라
  로세
  로소니
  로소이다
  로쇠
  롸
  리
  리가
  리고
  리까
  리니
  리니라
  리다
  리라
  리랏다
  리로다
  리로소냐
  리로소녀
  리로소다
  리만치
  리만큼
  리며
  리여
  리오
  리이다
  리잇고
  릴
  마르는
  마른
  마리
  매
  며
  면
  면서
  므로
  사오이다
  사옵니까
  사옵니다
  사옵디까
  사옵디다
  사외다
  사이다
  샨
  샬
  샷다
  세요
  셔요
  셰라
  소서
  소이다
  쇠다
  스라
  습늰다
  습니까
  습니다
  습디까
  습디다
  습딘다
  아
  아니와
  아도
  아리여
  아서
  아시
  아시든
  아야
  아야만
  아야지
  아요
  야
  야시
  야시늘
  야지
  얀마
  어
  어나
  어뇨
  어늘
  어니
  어니와
  어도
  어든
  어라
  어서
  어시
  어시늘
  어시니
  어시든
  어신
  어신마
  어야
  어야만
  어야지
  어요
  언
  언마
  언마는
  언만
  에
  에라
  에요
  여늘
  여든
  여라
  여려
  여서
  여시
  여시늘
  여야
  옛다
  오니까
  오도
  오리까
  오리다
  오리이까
  오리이다
  오시니
  오이다
  오져
  올습니다
  올시다
  옵니까
  옵니다
  옵디까
  옵디다
  와뎌
  완
  외다
  으*나
  으*나마
  으*나마나
  으*냐
  으*냐고
  으*니
  으*니까
  으*니까는
  으*니깐
  으*니라
  으*되
  으*라
  으*라고
  으*라느니
  으*라니
  으*라니까
  으*라든지
  으*라며
  으*라면서
  으*라지
  으*락
  으*람
  으*랴
  으*러
  으*려
  으*려거든
  으*려고
  으*려나
  으*려니
  으*려니와
  으*려며는
  으*려면
  으*려무나
  으*련마는
  으*련만
  으*렴
  으*렵니까
  으*렵니다
  으*렷다
  으*리
  으*리까
  으*리니
  으*리니라
  으*리다
  으*리라
  으*리로다
  으*리만큼
  으*리오
  으*마
  으*매
  으*며
  으*면
  으*면서
  으*면서도
  으*므로
  으*사이다
  으*세요
  으*셔요
  으*소서
  으*오
  으*오니까
  으*오리까
  으*오리다
  으*오리이까
  으*오리이다
  으*오이다
  으*옵니까
  으*옵니다
  으*옵디까
  으*옵디다
  으*외다
  으*이
  은
  은가
  은감
  은걸
  은고
  은데
  은들
  은바
  은즉
  은즉슨
  은지
  은지고
  은지라
  을
  을거나
  을걸
  을게
  을까
  을꼬
  을는지
  을라
  을라고
  을라치면
  을락
  을래
  을러니
  을러라
  을런가
  을런고
  을레
  을레라
  을망정
  을밖에
  을뿐더러
  을새
  을세라
  을세말이지
  을수록
  을쏘냐
  을씨고
  을이만큼
  을작시면
  을지
  을지나
  을지니
  을지니라
  을지라
  을지라도
  을지어다
  을지언정
  을진대
  을진댄
  을진저
  음
  음세
  음에도
  음에랴
  읍늰다
  읍니까
  읍니다
  읍디까
  읍디다
  읍딘다
  읍시다
  의
  이
  입니다
  자마자
  쟈라
  쟉시면
  져
  지
  지마는
  지만
  지요
  칸마
  커시
  커시니
  커신마
  컨대
  컨댄
  콰뎌
  호라
  홉다
  
  
  
  1.1                  moniwiki/data/dict/josa.txt.utf-8
  
  Index: josa.txt.utf-8
  ===================================================================
  가
  같이
  같이나
  같이는
  같이는야
  같이는커녕
  같이도
  같이만
  같인
  고
  과
  과는
  과는커녕
  과도
  과를
  과만
  과만은
  과의
  까지
  까지가
  까지나
  까지나마
  까지는
  까지는야
  까지는커녕
  까지도
  까지든지
  까지라고
  까지라고는
  까지라고만은
  까지라도
  까지로
  까지로나
  까지로나마
  까지로는
  까지로는야
  까지로는커녕
  까지로도
  까지로든
  까지로든지
  까지로라서
  까지로라야
  까지로만
  까지로만은
  까지로서
  까지로써
  까지를
  까지만
  까지만은
  까지만이라도
  까지야
  까지야말로
  까지에
  까지와
  까지의
  까지조차
  까지조차도
  까진
  께옵서
  께옵서는
  께옵서는야
  께옵서는커녕
  께옵서도
  께옵서만
  께옵서만은
  께옵서만이
  께옵선
  나
  나마
  는
  는야
  는커녕
  니
  다
  다가
  다가는
  다가도
  다간
  대로
  대로가
  대로는
  대로의
  더러
  더러는
  더러만은
  도
  든
  든지
  라
  라고
  라고까지
  라고까지는
  라고는
  라는
  라고만은
  라곤
  라도
  라든지
  라서
  라야
  라야만
  라오
  라지
  라지요
  랑
  랑은
  로고
  로구나
  로구려
  로구먼
  로군
  로군요
  로다
  로되
  로세
  를
  마다
  마다라도
  마다를
  마다에게
  마다의
  마따나
  마저
  마저나마라도
  마저도
  마저라도
  마저야
  만
  만도
  만에
  만으로
  만으로는
  만으로도
  만으로라도
  만으로써
  만으론
  만은
  만을
  만의
  만이
  만이라도
  만치
  만큼
  만큼도
  만큼만
  만큼씩
  만큼은
  만큼의
  만큼이나
  만큼이라도
  만큼이야
  말고
  말고는
  말고도
  며
  밖에
  밖에는
  밖에도
  밖엔
  보고
  보고는
  보고도
  보고만
  보고만은
  보고만이라도
  보곤
  보다
  보다는
  보다는야
  보다도
  보다만
  보다야
  보단
  부터
  부터가
  부터나마
  부터는
  부터도
  부터라도
  부터를
  부터만
  부터만은
  부터서는
  부터야말로
  부터의
  부턴
  아
  야
  야말로
  에
  에게
  에게가
  에게까지
  에게까지는
  에게까지는커녕
  에게까지도
  에게까지만
  에게까지만은
  에게나
  에게는
  에게는커녕
  에게다
  에게도
  에게든
  에게든지
  에게라도
  에게로
  에게로는
  에게마다
  에게만
  에게며
  에게보다
  에게보다는
  에게부터
  에게서
  에게서가
  에게서까지
  에게서나
  에게서는
  에게서도
  에게서든지
  에게서라도
  에게서만
  에게서보다
  에게서부터
  에게서야
  에게서와
  에게서의
  에게서처럼
  에게선
  에게야
  에게와
  에게의
  에게처럼
  에게하고
  에게하며
  에겐
  에까지
  에까지는
  에까지도
  에까지든지
  에까지라도
  에까지만
  에까지만은
  에까진
  에나
  에는
  에다
  에다가
  에다가는
  에다간
  에도
  에든
  에든지
  에라도
  에로
  에로의
  에를
  에만
  에만은
  에부터
  에서
  에서가
  에서까지
  에서까지도
  에서나
  에서나마
  에서는
  에서도
  에서든지
  에서라도
  에서만
  에서만도
  에서만이
  에서만큼
  에서만큼은
  에서보다
  에서부터
  에서부터는
  에서부터도
  에서부터라도
  에서부터만
  에서부터만은
  에서야
  에서와
  에서와는
  에서와의
  에서의
  에서조차
  에서처럼
  에선
  에야
  에의
  에조차도
  에하며
  엔
  엔들
  엘
  엘랑
  여
  와
  와는
  와도
  와라도
  와를
  와만
  와만은
  와에만
  와의
  와처럼
  와한테
  요
  으로
  으로가
  으로까지
  으로까지만은
  으로나
  으로나든지
  으로는
  으로도
  으로든지
  으로라도
  으로랑
  으로만
  으로만은
  으로부터
  으로부터는
  으로부터는커녕
  으로부터도
  으로부터만
  으로부터만은
  으로부터서는
  으로부터서도
  으로부터서만
  으로부터의
  으로서
  으로서가
  으로서나
  으로서는
  으로서도
  으로서든지
  으로서라도
  으로서만
  으로서만도
  으로서만은
  으로서야
  으로서의
  으로선
  으로써
  으로써나
  으로써는
  으로써라도
  으로써만
  으로써야
  으로야
  으로의
  으론
  은
  은커녕
  을
  의
  이
  이*고
  이*나
  이*나마
  이*니
  이다
  이든
  이*든지
  이라
  이*라고
  이*라고는
  이*라고도
  이*라고만은
  이*라곤
  이*라는
  이*라도
  이*라든지
  이*라서
  이*라야
  이*라야만
  이*랑
  이*랑은
  이*며
  이*며에게
  이*며조차도
  이*야
  이*야말로
  이여
  인
  인들
  인즉
  인즉슨
  일랑
  일랑은
  조차
  조차가
  조차도
  조차를
  조차의
  처럼
  처럼과
  처럼도
  처럼만
  처럼만은
  처럼은
  처럼이라도
  처럼이야
  치고
  치고는
  커녕
  커녕은
  커니와
  토록
  하고
  하고가
  하고는
  하고는커녕
  하고도
  하고라도
  하고마저
  하고만
  하고만은
  하고야
  하고에게
  하고의
  하고조차
  하고조차도
  하곤
  
  
  
  1.1                  moniwiki/data/dict/word.txt.utf-8
  
  Index: word.txt.utf-8
  ===================================================================
  가면
  공생설
  다음
  당시
  동안
  라면
  무언가
  문
  물론
  버리
  벼리
  별
  본
  불변
  빠르게
  사람
  사실
  살
  새로운
  생물
  선
  수천년간
  순간
  쓸거리
  약간
  얼마
  여러
  역시
  온
  왜냐하면
  왠
  요즘
  원래
  이성간
  이순간
  인간
  일
  자꾸만
  자신
  자연
  잘
  적어도
  점
  정도
  제대로
  제도
  조금
  좀
  주변
  차원
  참
  처음
  초기
  최신판
  친척간
  학설
  혹시
  
  
  


wkpark      2008/04/19 12:47:42

  Added:       plugin/filter indexer_ko.php
  Log:
  a sample indexer filter for Korean indexer
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/filter/indexer_ko.php
  
  Index: indexer_ko.php
  ===================================================================
  <?php
  // Copyright 2008 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a korean indexer filter plugin for the MoniWiki
  //
  // $Id: indexer_ko.php,v 1.1 2008/04/19 03:47:42 wkpark Exp $
  //
  
  include_once(dirname(__FILE__).'/../../lib/indexer.ko.php');
  
  function filter_indexer_ko($formatter,$value,&$options) {
      $more_specific_len=1;
      $indexer=new KoreanIndexer();
  
      $delims=",.\|\n\r\s\(\)\[\]{}!@#\$%\^&\*\-_\+=~`';:'\"\?<>\/";
  
      # un-wikify CamelCase, change "WikiName" to "Wiki Name"
      $value=preg_replace("/((?<=[a-z0-9]|[B-Z]{2})([A-Z][a-z]))/"," \\1",$value);
      # separate alphanumeric and local characters
      $value=preg_replace("/((?<=[a-z0-9])([^a-z0-9]+))/i"," \\1",$value);
  
      $keys=preg_split("/[$delims]+/",$value);
      # must be longer than $more_specific_len.
      if ($more_specific_len > 0) {
          for ($i=0,$s=sizeof($keys);$i<$s;$i++)
              if (strlen($keys[$i])<=$more_specific_len) unset($keys[$i]);
      }
  
      sort($keys);$keys=array_unique($keys);
      $log='';
      $tag=array('+','-');
      foreach ($keys as $i=>$key) {
          if ($stem=$indexer->getStem(trim($key),$match,$type)) {
              $log.= $key.'=>'.$stem.$tag[$type-1].'/'.$match[1]."\n";
              if ($type==1)
                  $keys[$i]=$stem;
              else
                  unset($keys[$i]);
          } else {
              $log.= '='.$keys[$i]."\n";
              $keys[$i]=$keys[$i];
          }
      }
      if ($options['debug']) {
          $options['timer']->Check("indexer");
          return $log."\n".$options['timer']->Write();
      }
      return implode("\n",array_unique($keys));
  }
  
  // vim:et:sts=4:sw=4:
  ?>
  
  
  


wkpark      2008/04/19 23:23:12

  Modified:    .        wiki.php wikilib.php
  Log:
  add a comment about PR #301713
  fixed interwikimap bug
  
  Revision  Changes    Path
  1.384     +4 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.383
  retrieving revision 1.384
  diff -u -r1.383 -r1.384
  --- wiki.php	16 Apr 2008 17:54:01 -0000	1.383
  +++ wiki.php	19 Apr 2008 14:23:11 -0000	1.384
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.383 2008/04/16 17:54:01 wkpark Exp $
  +// $Id: wiki.php,v 1.384 2008/04/19 14:23:11 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.383 $',1,-1);
  +$_revision = substr('$Revision: 1.384 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -1894,6 +1894,8 @@
       #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
       #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+[^\(\)<>\s\',\.:\?\!]+)|".
       "(\b|\^?)([A-Z][a-zA-Z]+):([^:\(\)<>\s\']?[^\(\)<>\s\'\",:\?\!\010\006]*(\s(?![\x21-\x7e]))?)";
  +    #"(\b|\^?)([A-Z][a-zA-Z]+):([^:\(\)<>\s\']?[^<>\s\'\",:\?\!\010\006]*(\s(?![\x21-\x7e]))?)";
  +    # for PR #301713
   
       if ($camelcase)
         $this->wordrule.='|'.
  
  
  
  1.242     +8 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.241
  retrieving revision 1.242
  diff -u -r1.241 -r1.242
  --- wikilib.php	15 Apr 2008 03:16:43 -0000	1.241
  +++ wikilib.php	19 Apr 2008 14:23:11 -0000	1.242
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.241 2008/04/15 03:16:43 wkpark Exp $
  +// $Id: wikilib.php,v 1.242 2008/04/19 14:23:11 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1245,7 +1245,6 @@
         if (!$val) break;
           
         $rule=utf8_hangul_getSearchRule($val);
  -      //print $rule;
   
         $test=@preg_match("/^$rule/",'');
         if ($test === false) $rule=$options['q'];
  @@ -1278,6 +1277,7 @@
         $val=iconv('UTF-8',$DBInfo->charset,$ret);
         if ($val) { print $val; return; }
       }
  +    #print 'x'.$rule;
       print $ret;
       return;
     } else if ($options['sec'] =='') {
  @@ -2119,7 +2119,12 @@
   
     while (!isset($DBInfo->interwiki) or $options['init']) {
       $cf=new Cache_text('settings');
  -    if (!$formatter->refresh and $cf->exists('interwiki')) {
  +
  +    $force_init=0;
  +    if ($DBInfo->shared_intermap and $cf->mtime('interwiki') < filemtime($DBInfo->shared_intermap) ) {
  +      $force_init=1;
  +    }
  +    if (!$formatter->refresh and $cf->exists('interwiki') and !$force_init) {
         $info=unserialize($cf->fetch('interwiki'));
         $DBInfo->interwiki=$info['interwiki'];
         $DBInfo->interwikirule=$info['interwikirule'];
  
  
  


wkpark      2008/04/20 00:58:07

  Modified:    plugin   Comment.php
  Log:
  remove the saveonly option
  
  Revision  Changes    Path
  1.31      +22 -22    moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- Comment.php	15 Apr 2008 03:13:38 -0000	1.30
  +++ Comment.php	19 Apr 2008 15:58:07 -0000	1.31
  @@ -6,7 +6,7 @@
   // Usage: [[Comment]], ?action=comment
   //
   //
  -// $Id: Comment.php,v 1.30 2008/04/15 03:13:38 wkpark Exp $
  +// $Id: Comment.php,v 1.31 2008/04/19 15:58:07 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $DBInfo;
  @@ -190,34 +190,34 @@
       }
     }
     if ($button_preview && $options['savetext']) {
  -    if (!$options['saveonly']) {
  -    $formatter->send_header("",$options);
  -    $formatter->send_title(_("Preview comment"),"",$options);
  -    $formatter->send_page($savetext."\n----");
  -    $options['savetext']=$savetext;
  -    print macro_Comment($formatter,'',$options);
  -    print $formatter->macro_repl('EditHints');
  -    $formatter->send_footer("",$options);
  +    if ($options['action_mode'] != 'ajax') {
  +      $formatter->send_header("",$options);
  +      $formatter->send_title(_("Preview comment"),"",$options);
  +      $formatter->send_page($savetext."\n----");
  +      $options['savetext']=$savetext;
  +      print macro_Comment($formatter,'',$options);
  +      print $formatter->macro_repl('EditHints');
  +      $formatter->send_footer("",$options);
       }
  -    return;
  +    return false;
     } else if (!$savetext) {
  -    if (!$options['saveonly']) {
  -    $formatter->send_header("",$options);
  -    $formatter->send_title(_("Add comment"),"",$options);
  -    print macro_Comment($formatter,'',$options);
  -    print $formatter->macro_repl('EditHints');
  -    $formatter->send_footer("",$options);
  +    if ($options['action_mode'] != 'ajax') {
  +      $formatter->send_header("",$options);
  +      $formatter->send_title(_("Add comment"),"",$options);
  +      print macro_Comment($formatter,'',$options);
  +      print $formatter->macro_repl('EditHints');
  +      $formatter->send_footer("",$options);
       }
  -    return;
  +    return false;
     }
   
     $datestamp= $options['datestamp'];
     if ($formatter->page->mtime() > $datestamp) {
       $options['msg']='';
  -    if (!$options['saveonly']) {
  -    $formatter->send_header('',$options);
  -    $formatter->send_title(_("Error: Don't make a clone!"),'',$options);
  -    $formatter->send_footer('',$options);
  +    if (!$options['action_mode'] != 'ajax') {
  +      $formatter->send_header('',$options);
  +      $formatter->send_title(_("Error: Don't make a clone!"),'',$options);
  +      $formatter->send_footer('',$options);
       }
       return false;
     }
  @@ -321,7 +321,7 @@
   
     $formatter->page->write($body);
     $DBInfo->savePage($formatter->page,"Comment added",$options);
  -  if ($options['saveonly']) return true;
  +  if ($options['action_mode'] == 'ajax') return true;
   
     $options['msg']=sprintf(_("%s is commented successfully"),$formatter->link_tag($formatter->page->urlname,"?action=show",$options['page']));
     $title=_("Comment added successfully");
  
  
  


wkpark      2008/04/20 01:03:00

  Modified:    plugin   bbs.php
  Log:
  fixed comment
  remove saveonly option
  
  Revision  Changes    Path
  1.12      +2 -3      moniwiki/plugin/bbs.php
  
  Index: bbs.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/bbs.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- bbs.php	17 Apr 2008 15:42:50 -0000	1.11
  +++ bbs.php	19 Apr 2008 16:03:00 -0000	1.12
  @@ -5,7 +5,7 @@
   //
   // Usage: [[BBS(pagename,count,mode)]]
   //
  -// $Id: bbs.php,v 1.11 2008/04/17 15:42:50 wkpark Exp $
  +// $Id: bbs.php,v 1.12 2008/04/19 16:03:00 wkpark Exp $
   
   function _get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -775,7 +775,7 @@
   
       $formatter->_vars['item']=&$item;
       $out.= $formatter->include_theme('plugin/BBS/default','list',array());
  -    #$out.= $formatter->include_theme('plugin/BBS/blue_tpl','list',array());
  +    #$out.= $formatter->include_theme('plugin/BBS/default_tpl','list',array());
       #$out.= $formatter->processor_repl('tpl_','',array('path'=>'theme/plugin/BBS/blue_tpl/list.tpl'));
       #$out.="</tbody>\n";
   
  @@ -912,7 +912,6 @@
           $p=new WikiPage($options['page'].':'.$options['no'],$options);
           $formatter->page=$p;
           $options['page']=$options['page'].':'.$options['no'];
  -        $options['saveonly']=1;
           $options['minor']=1; # do not log
   
           $formatter->send_header($header,$options);
  
  
  


wkpark      2008/04/21 00:39:31

  Modified:    .        wiki.php
  Log:
  check if it strore_pagelinks() or not
  
  Revision  Changes    Path
  1.385     +12 -3     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.384
  retrieving revision 1.385
  diff -u -r1.384 -r1.385
  --- wiki.php	19 Apr 2008 14:23:11 -0000	1.384
  +++ wiki.php	20 Apr 2008 15:39:31 -0000	1.385
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.384 2008/04/19 14:23:11 wkpark Exp $
  +// $Id: wiki.php,v 1.385 2008/04/20 15:39:31 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.384 $',1,-1);
  +$_revision = substr('$Revision: 1.385 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -1863,6 +1863,7 @@
   
       $this->cache= new Cache_text("pagelinks");
       $this->bcache= new Cache_text("backlinks");
  +    # XXX
     }
   
     function set_wordrule($pis=array()) {
  @@ -3183,6 +3184,14 @@
         }
         $lines=explode("\n",$body);
       } else {
  +      # XXX need to redesign pagelink method ?
  +      if (!$DBInfo->without_pagelinks_cache) {
  +        $dmt=filemtime($DBInfo->text_dir.'/.');
  +        $this->update_pagelinks= $dmt > $this->cache->mtime($this->page->name);
  +        #like as..
  +        #if (!$this->update_pagelinks) $this->pagelinks=$this->get_pagelinks();
  +      }
  +
         if ($options['rev']) {
           $body=$this->page->get_raw_body($options);
           $pi=$this->get_instructions($body);
  @@ -3829,7 +3838,7 @@
       if ($this->foots)
         print $this->macro_repl('FootNote','',$options);
   
  -    if ($options['pagelinks']) $this->store_pagelinks();
  +    if ($this->update_pagelinks and $options['pagelinks']) $this->store_pagelinks();
     }
   
     function register_javascripts($js) {
  
  
  


wkpark      2008/04/21 11:45:30

  Modified:    lib      indexer.ko.php
  Log:
  simplified and add some verb irregular pattern
  
  Revision  Changes    Path
  1.3       +142 -117  moniwiki/lib/indexer.ko.php
  
  Index: indexer.ko.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/indexer.ko.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- indexer.ko.php	18 Apr 2008 21:43:20 -0000	1.2
  +++ indexer.ko.php	21 Apr 2008 02:45:29 -0000	1.3
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a KoreanIndexer class for the MoniWiki
   //
  -// $Id: indexer.ko.php,v 1.2 2008/04/18 21:43:20 wkpark Exp $
  +// $Id: indexer.ko.php,v 1.3 2008/04/21 02:45:29 wkpark Exp $
   //
   // EXPERIMENTAL !!
   
  @@ -11,8 +11,8 @@
       function KoreanIndexer() {
           include_once(dirname(__FILE__).'/compat.php');
           include_once(dirname(__FILE__).'/unicode.php');
  -        $this->_eomiDic();
  -        $this->_josaDic();
  +        $this->_eomiRule();
  +        $this->_josaRule();
           $this->_wordDic();
       }
   
  @@ -25,7 +25,7 @@
           #print $this->_eomi_rule;
       }
   
  -    function _eomiDic() {
  +    function _eomiRule() {
           global $DBInfo;
   
           #ㄱ,ㄴ,ㄹ,ㅁ
  @@ -45,7 +45,7 @@
           #print $this->_eomi_rule;
       }
   
  -    function _josaDic() {
  +    function _josaRule() {
           $lines=file(dirname(__FILE__).'/../data/dict/josa.txt.utf-8');
           foreach ($lines as $l) {
               $l=strtr($l,"*","?");
  @@ -86,12 +86,14 @@
       }
   
       function isWord($word) {
  +        // XXX
           preg_match('/^('.$this->_word_rule.')$/S',$word,$match);
           if ($match[1]) return true;
           return false;
       }
   
       function getStem($word,&$match,&$type) {
  +        // XXX
           $type=1;
           if ($this->isWord($word)) return $word;
           $stem=$this->getNoun($word,$match);
  @@ -111,6 +113,7 @@
       }
   
       function getNoun($word,&$match) {
  +        // XXX
           # remove josa
           preg_match('/('.$this->_josa_rule.')$/S',$word,$match);
           if (!empty($match[1])) {
  @@ -175,132 +178,154 @@
               $stem= $word;
           }
   
  -        {
  +        return $this->verbIrr($stem,$match);
  +    }
  +
  +    function verbIrr($stem,&$match) {
           # 각종 규칙 불규칙 처리
  -            $ustem= utf8_to_unicode($stem);
  -            $ch= array_pop($ustem);
  -            if ($this->isHangul($ch)) {
  -                $j= hangul_to_jamo($ch);
  -                if (sizeof($j) == 3 and $j[2] == 0x11bb /* ㅆ */ ) {
  -                    if (
  -                    #if (in_array($j[0], array(0x1100,0x110b,0x110c) ) and
  -                        in_array($j[1],array(0x1165, 0x1166,0x1167)) /* ㅓ,ㅔ,ㅕ */ ) {
  -                        if (in_array($j[0], array(0x1100,0x110b,0x110c)) ) {
  -                            # 어 여 저 져 게
  -                            $match[1]=unicode_to_utf8($ch).$match[1];
  -                            unset($ch);
  -                        } else if ($j[1] == 0x1167
  -                            and in_array($j[0],array(0x1101,0x1102,0x1103,0x1105,0x1106,0x1107,
  -                                                     0x1109,0x110c,0x110e,0x110f,0x1110,0x1111,0x1112)) ) {
  -                            # 여 변환
  -                            // 혔 -> ㅎ+었 -> 히+었
  -                            $j[1]=0x1165;
  -                            $syll=jamo_to_syllable(array(0x110b,$j[1],$j[2]));
  -                            $match[1]=unicode_to_utf8($syll).$match[1];
  -
  -                            /* 혔 -> 히+었, 폈 -> 피+었 */
  -                            $j[1]=0x1175;
  -
  -                            $syll=jamo_to_syllable(array($j[0],$j[1])); /* 쓰 */
  -                            $ch=$syll[0];
  -                        } else if (in_array($j[0],array(0x1101,0x1104,0x110a,0x1111,0x1112)) ) {
  -                            # 우 불규칙
  -                            /* 떴 -> ㄸ + 었 */
  -                            $syll=jamo_to_syllable(array(0x110b,$j[1],$j[2]));
  -                            $match[1]=unicode_to_utf8($syll).$match[1];
  -
  -                            /* ㄸ -> 뜨 */
  -                            $j[1]=0x1173; /* ㅡ */
  -                            if ($j[0]== 0x1111) $j[1]=0x116e; /* 펐 푸+었 */
  -                            $syll=jamo_to_syllable(array($j[0],$j[1])); /* 쓰 */
  -                            $ch=$syll[0];
  -                        } else if (in_array($j[0],array(0x1101,0x1104,0x110a,0x1111,0x1112)) ) {
  -                        }
  -                    } else if ($j[0]==0x1112 /* ㅎ */ and in_array($j[1],array(0x1162)) /* ㅐ */ ) {
  -                        array_push($ustem, 0xd558); /* 하 */;
  -                        $syll=jamo_to_syllable(array(0x110b,0x1167,0x11bb));
  -                        $match[1]=unicode_to_utf8($syll).$match[1];
  -                        #$match[1]='여'.$match[1]; /* 해 -> 하 + 여 */
  +        $ustem= utf8_to_unicode($stem);
  +        $uend= utf8_to_unicode($match[1]);
  +        $ch= array_pop($ustem);
  +        $ed= $uend[0];
  +
  +        if ($this->isHangul($ch)) {
  +            $j= hangul_to_jamo($ch);
  +            $ej= hangul_to_jamo($ed);
  +
  +            $sj= sizeof($j);
  +
  +            if ($sj == 3 and $j[2] == 0x11bb /* ㅆ */ ) {
  +                if (
  +                #if (in_array($j[0], array(0x1100,0x110b,0x110c) ) and
  +                    in_array($j[1],array(0x1165, 0x1166,0x1167)) /* ㅓ,ㅔ,ㅕ */ ) {
  +                    if (in_array($j[0], array(0x1100,0x110b,0x110c)) ) {
  +                        # 어 여 저 져 게
  +                        array_unshift($uend,$ch);
                           unset($ch);
  -                    } else { /* ㅆ를 떼어낸다. */
  -                        #print '~~'.$stem.'~~';
  -                        $syll=jamo_to_syllable(array($j[0],$j[1]));
  -                        $match[1]=unicode_to_utf8(hangul_jongseong_to_cjamo($j[2])).$match[1];
  +                    } else if ($j[1] == 0x1167
  +                        and in_array($j[0],array(0x1101,0x1102,0x1103,0x1105,0x1106,0x1107,
  +                                                 0x1109,0x110c,0x110e,0x110f,0x1110,0x1111,0x1112)) ) {
  +                        # 여 변환
  +                        // 혔 -> ㅎ+었 -> 히+었
  +                        $j[1]=0x1165;
  +                        $syll=jamo_to_syllable(array(0x110b,$j[1],$j[2]));
  +                        array_unshift($uend,$syll[0]);
  +
  +                        /* 혔 -> 히+었, 폈 -> 피+었 */
  +                        $j[1]=0x1175;
  +
  +                        $syll=jamo_to_syllable(array($j[0],$j[1])); /* 쓰 */
                           $ch=$syll[0];
  -                        unset($j[2]);
  -                        #unset($ch);
  -                    }
  -                    if (!$ch) {
  -                        $ch= array_pop($ustem);
  -                        $j= hangul_to_jamo($ch);
  +                    } else if (in_array($j[0],array(0x1101,0x1104,0x110a,0x1111,0x1112)) ) {
  +                        # 우 불규칙
  +                        /* 떴 -> ㄸ + 었 */
  +                        $syll=jamo_to_syllable(array(0x110b,$j[1],$j[2]));
  +                        array_unshift($uend,$syll[0]);
  +
  +                        /* ㄸ -> 뜨 */
  +                        $j[1]=0x1173; /* ㅡ */
  +                        if ($j[0]== 0x1111) $j[1]=0x116e; /* 펐 푸+었 */
  +                        jamo_to_syllable(array($j[0],$j[1])); /* 쓰 */
  +                        $ch=$syll[0];
  +                    } else if (in_array($j[0],array(0x1101,0x1104,0x110a,0x1111,0x1112)) ) {
                       }
  +                } else if ($j[0]==0x1112 /* ㅎ */ and in_array($j[1],array(0x1162)) /* ㅐ */ ) {
  +                    array_push($ustem, 0xd558); /* 하 */;
  +                    $syll=jamo_to_syllable(array(0x110b,0x1167,0x11bb));
  +                    array_unshift($uend,$syll[0]);
  +                    #$match[1]='여'.$match[1]; /* 해 -> 하 + 여 */
  +                    unset($ch);
  +                } else { /* ㅆ를 떼어낸다. */
  +                    #print '~~'.$stem.'~~';
  +                    $syll=jamo_to_syllable(array($j[0],$j[1]));
  +                    array_unshift($uend,hangul_jongseong_to_cjamo($j[2]));
  +                    $ch=$syll[0];
  +                    unset($j[2]);
  +                    #unset($ch);
                   }
  -                
  -                if (sizeof($j) == 2) {
  -                    if (in_array($j[0],array(0x110c) /* ㅈ */ )
  -                        and in_array($j[1],array(0x116e,0x1175)) /* ㅜ,ㅣ */ ) {
  -                        /* 주, 지 */
  -                        $match[1]=unicode_to_utf8($ch).$match[1];
  -                        unset($ch);
  -                        $ch= array_pop($ustem);
  -                        $j= hangul_to_jamo($ch);
  -                    }
  -                    if ($j[1]==0x1165 /* ㅓ */ and in_array($j[0],array(0x1101,0x1104,0x110a,0x1111)) ) {
  -                        /* 꺼,떠,써,퍼 */
  -                        $syll=jamo_to_syllable(array(0x110b,0x1165)); /* 어 */
  -                        $match[1]=unicode_to_utf8($syll).$match[1];
  -                        if ($j[0] == 0x1111)
  -                            $syll=jamo_to_syllable(array($j[0],0x116e)); /* 푸 */
  -                        else
  -                            $syll=jamo_to_syllable(array($j[0],0x1173)); /* 쓰 */
  -                        array_push($ustem,$syll[0]);
  -                        unset($ch);
  -                        $ch= array_pop($ustem);
  -                        $j= hangul_to_jamo($ch);
  -                    }
  -                    if (in_array($j[0],array(0x1105) /* ㄹ */ )
  -                        and in_array($j[1],array(0x1161,0x1165)) /* 라,러 */ ) {
  -
  -                        $syll=jamo_to_syllable(array($j[0],$j[1],0x11c2)); /* 랗,렇 */
  -                        array_push($ustem,$syll[0]);
  -                        unset($ch);
  -                        unset($j);
  -                    }
  +                if (!$ch) {
  +                    $ch= array_pop($ustem);
  +                    $j= hangul_to_jamo($ch);
                   }
  +                $ed= $uend[0];
  +                $ej= hangul_to_jamo($ed);
  +            }
  +            
  +            // ㄷ 불규칙 들어 -> 듣다
  +            $sj=sizeof($j);
  +            if ($sj == 3 and $j[2] == 0x11af and in_array($ej[0],array(0x110b,0x1105) /* ㅇ,ㄹ*/)) {
  +                while (in_array($ej[1],array(0x1161,0x1165,0x1173)) /* ㅏㅓㅡ */ ) {
  +                    // 아어으
  +                    // 러러르
  +                    if ($ej[1]==0x1173 and sizeof($ej)==3 and !in_array($ej[2],0x11ab,0x11af)) break;
  +                    // 은을
  +                    $syll=jamo_to_syllable(array($j[0],$j[1],0x11ae));
  +                    $ch=$syll[0];
  +                    break;
  +                }
  +            }
   
  -                while (sizeof($j) == 2 and $j[0] == 0x110b
  -                    and in_array($j[1],array(0x116a,0x116e,0x116f)) ) {
  -                    # /* 와 우 워 */
  -                    $ch1=array_pop($ustem);
  -                    $jamo=hangul_to_jamo($ch1);
  -                    if (sizeof($jamo)==2) {
  -                        $syll=jamo_to_syllable(array($jamo[0],$jamo[1],0x11b8));
  -                        array_push($ustem,$syll[0]);
  -                        /* add ㅂ */
  -                        $match[1]=unicode_to_utf8(array($ch)).$match[1];
  -                        unset($ch);
  -                    } else {
  -                        array_push($ustem,$ch1);
  -                    }
  -
  +            if ($sj == 2) {
  +                if (in_array($j[0],array(0x110c) /* ㅈ */ )
  +                    and in_array($j[1],array(0x116e,0x1175)) /* ㅜ,ㅣ */ ) {
  +                    /* 주, 지 */
  +                    array_unshift($uend,$ch);
  +                    unset($ch);
  +                    $ch= array_pop($ustem);
  +                    $j= hangul_to_jamo($ch);
  +                }
  +                if ($j[1]==0x1165 /* ㅓ */ and in_array($j[0],array(0x1101,0x1104,0x110a,0x1111)) ) {
  +                    /* 꺼,떠,써,퍼 */
  +                    $syll=jamo_to_syllable(array(0x110b,0x1165)); /* 어 */
  +                    array_unshift($uend,$syll[0]);
  +                    if ($j[0] == 0x1111)
  +                        $syll=jamo_to_syllable(array($j[0],0x116e)); /* 푸 */
  +                    else
  +                        $syll=jamo_to_syllable(array($j[0],0x1173)); /* 쓰 */
  +                    array_push($ustem,$syll[0]);
  +                    unset($ch);
  +                    $ch= array_pop($ustem);
  +                    $j= hangul_to_jamo($ch);
  +                }
  +                if (in_array($j[0],array(0x1105) /* ㄹ */ )
  +                    and in_array($j[1],array(0x1161,0x1165)) /* 라,러 */ ) {
   
  -                    break;
  +                    $syll=jamo_to_syllable(array($j[0],$j[1],0x11c2)); /* 랗,렇 */
  +                    array_push($ustem,$syll[0]);
  +                    unset($ch);
  +                    unset($j);
                   }
  +            }
   
  +            while ($sj == 2 and $j[0] == 0x110b
  +                and in_array($j[1],array(0x116a,0x116e,0x116f)) and sizeof($ustem)>=1 ) {
  +                # /* 와 우 워 */
  +                $ch1=array_pop($ustem);
  +                $jamo=hangul_to_jamo($ch1);
  +                if (sizeof($jamo)==2) {
  +                    $syll=jamo_to_syllable(array($jamo[0],$jamo[1],0x11b8));
  +                    array_push($ustem,$syll[0]);
  +                    /* add ㅂ */
  +                    array_unshift($uend,$ch);
  +                    unset($ch);
  +                } else {
  +                    array_push($ustem,$ch1);
  +                }
   
  -                if ($ch) array_push($ustem,$ch);
  -                return unicode_to_utf8($ustem);
  +                break;
               }
   
  -            #print "<pre>";
  -            #print($word.'-'.$match[1]);
  -            #print_r($match);
  -            #print "</pre>";
  -            #$stem=substr($word,0,-strlen($match[1]));
  -            $match[1]=$save.$match[1];
  -            return $stem;
  +            if ($ch) array_push($ustem,$ch);
  +            $match[1]= unicode_to_utf8($uend);
  +            return unicode_to_utf8($ustem);
           }
  -        return false;
  +
  +        $match[1]=$save.$match[1];
  +        return $stem;
  +
  +        #print "<pre>";
  +        #print($word.'-'.$match[1]);
  +        #print_r($match);
       }
   }
   
  
  
  


wkpark      2008/04/21 12:51:45

  Modified:    .        wiki.php
  Log:
  oops!!
  
  fixed get_instruction() bug
  
  Revision  Changes    Path
  1.386     +6 -5      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.385
  retrieving revision 1.386
  diff -u -r1.385 -r1.386
  --- wiki.php	20 Apr 2008 15:39:31 -0000	1.385
  +++ wiki.php	21 Apr 2008 03:51:45 -0000	1.386
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.385 2008/04/20 15:39:31 wkpark Exp $
  +// $Id: wiki.php,v 1.386 2008/04/21 03:51:45 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.385 $',1,-1);
  +$_revision = substr('$Revision: 1.386 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2050,7 +2050,7 @@
       $pi=array();
   
       $format='';
  -    if (empty($this->pi['#format'])) { # set default page type. # XXX !$body ? v1.134 ?
  +    if ( empty($this->pi['#format'])) {
         preg_match('%(:|/)%',$this->page->name,$sep);
         $key=strtok($this->page->name,':/');
         if (isset($Config['pagetype'][$key]) and $f=$Config['pagetype'][$key]) {
  @@ -2066,10 +2066,11 @@
         } else if (isset($Config['pagetype']['*']))
           $format=$Config['pagetype']['*']; // default page type
       } else {
  -      $format=$this->pi['#format'];
  +      if (empty($body) and !empty($this->pi['#format']))
  +        $format=$this->pi['#format'];
       }
   
  -    if (!$body) {
  +    if (empty($body)) {
         if (!$this->page->exists()) return array();
         if ($this->pi) return $this->pi;
         $body=$this->page->get_raw_body();
  
  
  


wkpark      2008/04/23 12:28:43

  Modified:    .        wiki.php
  Log:
  dynamic macro caching
  
  Revision  Changes    Path
  1.387     +33 -6     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.386
  retrieving revision 1.387
  diff -u -r1.386 -r1.387
  --- wiki.php	21 Apr 2008 03:51:45 -0000	1.386
  +++ wiki.php	23 Apr 2008 03:28:42 -0000	1.387
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.386 2008/04/21 03:51:45 wkpark Exp $
  +// $Id: wiki.php,v 1.387 2008/04/23 03:28:42 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.386 $',1,-1);
  +$_revision = substr('$Revision: 1.387 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -1793,6 +1793,7 @@
       $this->udb=$DBInfo->udb;
       $this->check_openid_url=$DBInfo->check_openid_url;
       $this->register_javascripts($DBInfo->javascripts);
  +    $this->dynamic_macros=$DBInfo->dynamic_macros;
   
       if (($p=strpos($page->name,"~")))
         $this->group=substr($page->name,0,$p+1);
  @@ -2317,6 +2318,7 @@
             return "<img alt='$link' $attr src='$url' />";
           }
         }
  +      $url=urldecode($url);
         return "<a class='externalLink' $attr href='$link' $this->external_target>$url</a>";
       } else {
         if ($url[0]=="?") $url=substr($url,1);
  @@ -2734,6 +2736,12 @@
         if (!function_exists ("macro_".$plugin)) return '[['.$macro.']]';
       }
   
  +    if ($this->_macrocache and empty($options['call']) and isset($this->dynamic_macros[$plugin])) {
  +      $md5sum= md5($macro);
  +      $this->_macros[$md5sum]=$macro;
  +      return '[['.$md5sum.']]';
  +    }
  +
       $ret=call_user_func_array("macro_$plugin",array(&$this,$args,$options));
       if (is_array($ret)) return $ret;
       return $bra.$ret.$ket;
  @@ -5035,25 +5043,44 @@
       $options['pagelinks']=1;
       if ($Config['cachetime'] > 0 and !$formatter->pi['#nocache']) {
         $cache=new Cache_text('pages',2,'html');
  +      $mcache=new Cache_text('dynamicmacros',2);
         $mtime=$cache->mtime($pagename);
         $dtime=filemtime($Config['data_dir'].'/text/.'); // XXX
         $now=time();
         $check=$now-$mtime;
  +      $extra_out='';
  +      $_macros=null;
        
         if (!$formatter->refresh and (($mtime > $dtime) and ($check < $Config['cachetime']))) {
  -        print $cache->fetch($pagename);
  +        $_macros= unserialize($mcache->fetch($pagename));
  +        $out= $cache->fetch($pagename);
           $mytime=gmdate("Y-m-d H:i:s",$mtime+$options['tz_offset']);
  -        print "<!-- Cached at $mytime -->";
  +        $extra_out= "<!-- Cached at $mytime -->";
         } else {
  +        $formatter->_macrocache=1;
           ob_start();
           $formatter->send_page('',$options);
           flush();
           $out=ob_get_contents();
           ob_end_clean();
  -        print $out;
  -        if (!$formatter->pi['#nocache'])
  +        $formatter->_macrocache=0;
  +        $_macros=&$formatter->_macros;
  +        if (!$formatter->pi['#nocache']) {
             $cache->update($pagename,$out);
  +          if (isset($_macros))
  +            $mcache->update($pagename,serialize($_macros));
  +        }
  +      }
  +      if ($_macros) {
  +        $mrule=array();
  +        $mrepl=array();
  +        foreach ($_macros as $k=>$v) {
  +          $mrule[]='[['.$k.']]';
  +          $mrepl[]=$formatter->macro_repl($v,'',$options); // XXX
  +        }
  +        $out=str_replace($mrule,$mrepl,$out);
         }
  +      print $out.$extra_out;
         $args['refresh']=1; // add refresh menu
       } else {
         $formatter->send_page('',$options);
  
  
  


wkpark      2008/04/23 13:36:12

  Modified:    .        wiki.php
  Log:
  more fix for dynamic macro caching
  
  Revision  Changes    Path
  1.388     +8 -5      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.387
  retrieving revision 1.388
  diff -u -r1.387 -r1.388
  --- wiki.php	23 Apr 2008 03:28:42 -0000	1.387
  +++ wiki.php	23 Apr 2008 04:36:12 -0000	1.388
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.387 2008/04/23 03:28:42 wkpark Exp $
  +// $Id: wiki.php,v 1.388 2008/04/23 04:36:12 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.387 $',1,-1);
  +$_revision = substr('$Revision: 1.388 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2710,7 +2710,8 @@
   
     function macro_repl($macro,$value='',$options='') {
       // macro ID
  -    $this->mid=!empty($this->mid) ? ++$this->mid:1;
  +    $this->mid=$options['mid'] ? $options['mid']:
  +      (!empty($this->mid) ? ++$this->mid:1);
   
       preg_match("/^([A-Za-z]+)(\((.*)\))?$/",$macro,$match);
       if (!$match) return $this->word_repl($macro);
  @@ -2737,8 +2738,9 @@
       }
   
       if ($this->_macrocache and empty($options['call']) and isset($this->dynamic_macros[$plugin])) {
  +      $macro=$plugin. ($args ? '('.$args.')':'');
         $md5sum= md5($macro);
  -      $this->_macros[$md5sum]=$macro;
  +      $this->_macros[$md5sum]=array($macro,$mid);
         return '[['.$md5sum.']]';
       }
   
  @@ -5076,7 +5078,8 @@
           $mrepl=array();
           foreach ($_macros as $k=>$v) {
             $mrule[]='[['.$k.']]';
  -          $mrepl[]=$formatter->macro_repl($v,'',$options); // XXX
  +          $options['mid']=$v[1];
  +          $mrepl[]=$formatter->macro_repl($v[0],'',$options); // XXX
           }
           $out=str_replace($mrule,$mrepl,$out);
         }
  
  
  


wkpark      2008/04/23 19:20:27

  Modified:    lib      version.Git.php
  Log:
  support Info()
  
  Revision  Changes    Path
  1.2       +21 -8     moniwiki/lib/version.Git.php
  
  Index: version.Git.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/version.Git.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- version.Git.php	17 Apr 2008 09:55:56 -0000	1.1
  +++ version.Git.php	23 Apr 2008 10:20:27 -0000	1.2
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Git versioning plugin for the MoniWiki
   //
  -// $Id: version.Git.php,v 1.1 2008/04/17 09:55:56 wkpark Exp $
  +// $Id: version.Git.php,v 1.2 2008/04/23 10:20:27 wkpark Exp $
   // WARNING: experimental
   //
   
  @@ -57,10 +57,10 @@
       # XXX
       $filename= $this->_filename($pagename);
   
  -    if ($rev) $rev=':'.$rev;
  +    #if ($rev) $rev=':'.$rev;
   
       chdir($this->DB->text_dir);
  -    $fp=@popen("git co $rev ".$filename,"r");
  +    $fp=@popen("git-show $rev:".$filename,"r");
       chdir($this->cwd);
       $out='';
       if ($fp) {
  @@ -105,8 +105,12 @@
         $rev = ":$rev";
       $filename=$this->_filename($pagename);
   
  +    $sep=str_repeat('-',28);
  +    $sep2=str_repeat('=',77);
  +    $rlog_format="--pretty=format:\"$sep%nrevision %H%ndate: %at%n%s%b\"";
  +
       chdir($this->DB->text_dir);
  -    $fp= popen("git-log $opt $rev ".$filename.$this->NULL,"r");
  +    $fp= popen("git-log $rlog_format $opt $rev ".$filename.$this->NULL,"r");
       chdir($this->cwd);
       $out='';
       if ($fp) {
  @@ -116,15 +120,24 @@
         }
         pclose($fp);
       }
  -    return $out;
  +
  +    return $out."\n$sep2\n";
     }
   
     function diff($pagename,$rev='',$rev2='') {
       # XXX
       $filename=$this->_filename($pagename);
       chdir($this->DB->text_dir);
  -    $fp= popen("git-diff --no-color ".
  -      "HEAD".$this->pmark."$rev HEAD ".$filename,'r');
  +
  +    if ($rev and $rev2)
  +      $revs="$rev $rev2 ";
  +    else if ($rev)
  +      $revs="$rev ";
  +    else
  +      "HEAD".$this->pmark."$rev HEAD ";
  +
  +    print $revs;
  +    $fp= popen("git-diff --no-color ".$revs.$filename,'r');
   
       chdir($this->cwd);
   
  @@ -159,7 +172,7 @@
         }
       }
   
  -    return '1';
  +    return $tag;
     }
   
     function purge($pagename,$rev) {
  
  
  


wkpark      2008/04/23 19:21:18

  Modified:    plugin   Info.php
  Log:
  support Git
  
  Revision  Changes    Path
  1.17      +26 -9     moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Info.php,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- Info.php	13 Apr 2008 14:51:39 -0000	1.16
  +++ Info.php	23 Apr 2008 10:21:17 -0000	1.17
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Info plugin for the MoniWiki
   //
  -// $Id: Info.php,v 1.16 2008/04/13 14:51:39 wkpark Exp $
  +// $Id: Info.php,v 1.17 2008/04/23 10:21:17 wkpark Exp $
   
   function _parse_rlog($formatter,$log,$options=array()) {
     global $DBInfo;
  @@ -44,6 +44,7 @@
     $out.= "</tr>\n";
   
     $users=array();
  +  $rr=0;
    
     #foreach ($lines as $line) {
     $count=0;
  @@ -61,7 +62,8 @@
       
       switch($state) {
         case 1:
  -         preg_match("/^revision ([0-9]\.([0-9\.]+))\s*/",$line,$match);
  +         $rr++;
  +         preg_match("/^revision ([0-9a-f\.]+)\s*/",$line,$match);
            $rev=$match[1];
            if (preg_match("/\./",$match[2])) {
               $state=0;
  @@ -70,11 +72,17 @@
            $state=2;
            break;
         case 2:
  -         $inf=preg_replace("/date:\s(.*);\s+author:.*;\s+state:.*;/","\\1",$line);
  +         $inf=preg_replace("/date:\s([0-9\/:\s]+)(;\s+author:.*;\s+state:.*;)?/","\\1",$line);
            list($inf,$change)=explode('lines:',$inf,2);
   
            if ($options['ago']) {
  -           $ed_time=strtotime($inf.' GMT');
  +           if (preg_match('/^[0-9]+$/',$inf)) {
  +             $rrev='#'.$rr;
  +             $ed_time=$inf;
  +             $inf=gmdate("Y-m-d H:i:s",$ed_time+$tz_offset);
  +           } else {
  +             $ed_time=strtotime($inf.' GMT');
  +           }
              $time_diff=(int)($time_current - $ed_time)/60;
              if ($time_diff > 1440*31) {
                $inf=gmdate("Y-m-d H:i:s",strtotime($inf.' GMT')+$tz_offset);
  @@ -89,10 +97,16 @@
              }
   
            } else {
  -           if ($tz_offset !='')
  -             $inf=gmdate("Y-m-d H:i:s",strtotime($inf.' GMT')+$tz_offset);
  -           else
  -             $inf=date("Y-m-d H:i:s",strtotime($inf)); // localtime
  +           if (preg_match('/^[0-9]+$/',$inf)) {
  +             $rrev='#'.$rr;
  +             $ed_time=$inf;
  +             $inf=gmdate("Y-m-d H:i:s",$inf+$tz_offset);
  +           } else {
  +             if ($tz_offset !='')
  +               $inf=gmdate("Y-m-d H:i:s",strtotime($inf.' GMT')+$tz_offset);
  +             else
  +               $inf=date("Y-m-d H:i:s",strtotime($inf)); // localtime
  +           }
            }
            $inf=$formatter->link_to("?action=recall&rev=$rev",$inf);
   
  @@ -127,8 +141,11 @@
            if (!$rev) break;
            $rowspan=1;
            if (!$simple and $comment) $rowspan=2;
  +
  +         $rrev= $rrev ? $rrev:$rev;
            $out.="<tr>\n";
  -         $out.="<th valign='top' rowspan=$rowspan>$rev</th><td nowrap='nowrap'>$inf $change</td><td>$ip&nbsp;</td>";
  +         $out.="<th valign='top' rowspan=$rowspan>$rrev</th><td nowrap='nowrap'>$inf $change</td><td>$ip&nbsp;</td>";
  +         $rrev='';
            $achecked="";
            $bchecked="";
            if ($flag==1)
  
  
  


wkpark      2008/04/23 23:14:06

  Modified:    lib      version.Git.php
  Log:
  fix to support Git.
  
  Revision  Changes    Path
  1.3       +24 -16    moniwiki/lib/version.Git.php
  
  Index: version.Git.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/version.Git.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- version.Git.php	23 Apr 2008 10:20:27 -0000	1.2
  +++ version.Git.php	23 Apr 2008 14:14:06 -0000	1.3
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Git versioning plugin for the MoniWiki
   //
  -// $Id: version.Git.php,v 1.2 2008/04/23 10:20:27 wkpark Exp $
  +// $Id: version.Git.php,v 1.3 2008/04/23 14:14:06 wkpark Exp $
   // WARNING: experimental
   //
   
  @@ -16,13 +16,9 @@
       $this->cwd=getcwd();
   
       $this->NULL='';
  -    $this->pmark='^';
  -    if(getenv("OS")=="Windows_NT") {
  -      # "^^" under the Win32
  -      $this->pmark='^^';
  -    } else {
  +    if(getenv("OS")!="Windows_NT")
         $this->NULL=' 2>/dev/null';
  -    }
  +
       if ($DB->rcs_error_log) $this->NULL='';
   
       $this->git_user=$DB->git_user;
  @@ -131,12 +127,9 @@
   
       if ($rev and $rev2)
         $revs="$rev $rev2 ";
  -    else if ($rev)
  -      $revs="$rev ";
  -    else
  -      "HEAD".$this->pmark."$rev HEAD ";
  +    else if ($rev or $rev2)
  +      $revs="$rev$rev2 HEAD ";
   
  -    print $revs;
       $fp= popen("git-diff --no-color ".$revs.$filename,'r');
   
       chdir($this->cwd);
  @@ -154,6 +147,7 @@
         $line=fgets($fp,1024);
         $out.= $line;
       }
  +
       pclose($fp);
       return $out;
     }
  @@ -163,12 +157,26 @@
       if ($last==1) {
         $tag='head:';
         $opt='-h';
  -    } else $tag='revision';
  +    } else $tag='HEAD~1';
       if ($mtime) {
  -      $date=gmdate('Y/m/d H:i:s',$mtime);
  +      $date=gmdate('Y-m-d H:i:s',$mtime);
         if ($date) {
  -        $opt="-d\<'$date'";
  -        $tag='revision';
  +        chdir($this->DB->text_dir);
  +        $filename=$this->_filename($pagename);
  +
  +        $opt="--reverse --all --since=\"$date\" ";
  +        $fp= popen("git-rev-list ".$opt.$filename,'r');
  +
  +        chdir($this->cwd);
  +        if (!$fp) return '';
  +        $out='';
  +        if (!feof($fp)) {
  +          # trashing first two lines XXX
  +          $line=fgets($fp,1024);
  +          $out.= $line;
  +        }
  +        $tag=rtrim($line);
  +        pclose($fp);
         }
       }
   
  
  
  


wkpark      2008/04/23 23:14:07

  Modified:    plugin   Diff.php
  Log:
  fix to support Git.
  
  Revision  Changes    Path
  1.15      +7 -3      moniwiki/plugin/Diff.php
  
  Index: Diff.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Diff.php,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- Diff.php	2 Jan 2007 06:56:02 -0000	1.14
  +++ Diff.php	23 Apr 2008 14:14:07 -0000	1.15
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a diff plugin for the MoniWiki
   //
  -// $Id: Diff.php,v 1.14 2007/01/02 06:56:02 wkpark Exp $
  +// $Id: Diff.php,v 1.15 2008/04/23 14:14:07 wkpark Exp $
   
   function simple_diff($diff) {
     $diff=str_replace("<","&lt;",$diff);
  @@ -200,8 +200,8 @@
       $rev1=$formatter->page->get_rev($rev1); // date
     } else if ($rev1==$rev2) $rev2='';
   
  -  if ($rev1) $option="-r$rev1 ";
  -  if ($rev2) $option.="-r$rev2 ";
  +  #if ($rev1) $option="-r$rev1 ";
  +  #if ($rev2) $option.="-r$rev2 ";
   
     if (!$rev1 && !$rev2) {
       $msg= _("No older revisions available");
  @@ -222,6 +222,8 @@
     if (!$out) {
       $msg= _("No difference found");
     } else {
  +    #$rev1=substr($rev1,0,5);
  +    #$rev2=substr($rev2,0,5);
       if ($rev1==$rev2) $ret.= "<h2>"._("Difference between versions")."</h2>";
       else if ($rev1 and $rev2) {
         $msg= sprintf(_("Difference between r%s and r%s"),$rev1,$rev2);
  @@ -342,6 +344,8 @@
   
     $title='';
     if ($DBInfo->use_smartdiff) {
  +    $rev=substr($rev,0,5);
  +    $rev2=substr($rev2,0,5);
       if ($rev and $rev2)
         $msg= sprintf(_("Difference between r%s and r%s"),$rev,$rev2);
       else if ($rev)
  
  
  


wkpark      2008/04/23 23:14:07

  Modified:    .        wiki.php
  Log:
  fix to support Git.
  
  Revision  Changes    Path
  1.389     +3 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.388
  retrieving revision 1.389
  diff -u -r1.388 -r1.389
  --- wiki.php	23 Apr 2008 04:36:12 -0000	1.388
  +++ wiki.php	23 Apr 2008 14:14:07 -0000	1.389
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.388 2008/04/23 04:36:12 wkpark Exp $
  +// $Id: wiki.php,v 1.389 2008/04/23 14:14:07 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.388 $',1,-1);
  +$_revision = substr('$Revision: 1.389 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -1707,8 +1707,7 @@
         $version=new $class ($DBInfo);
         $rev= $version->get_rev($this->name,$mtime,$last);
   
  -      if ($rev >= 1.0)
  -        return $rev;
  +      if ($rev) return $rev;
       }
       return '';
     }
  
  
  


wkpark      2008/04/24 08:20:44

  Modified:    plugin   bbs.php
  Log:
  fixed bbs editform
  
  Revision  Changes    Path
  1.13      +2 -2      moniwiki/plugin/bbs.php
  
  Index: bbs.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/bbs.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- bbs.php	19 Apr 2008 16:03:00 -0000	1.12
  +++ bbs.php	23 Apr 2008 23:20:44 -0000	1.13
  @@ -5,7 +5,7 @@
   //
   // Usage: [[BBS(pagename,count,mode)]]
   //
  -// $Id: bbs.php,v 1.12 2008/04/19 16:03:00 wkpark Exp $
  +// $Id: bbs.php,v 1.13 2008/04/23 23:20:44 wkpark Exp $
   
   function _get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -1094,7 +1094,7 @@
   </div>
   EOF;
           else {
  -            if (!$check_pass and $options['mode']=='edit')
  +            if (!$check_pass and !empty($options['no']) and $options['mode']=='edit')
                   $pass_form=
       "<tr><th>Password:</th><td><input type='password' name='pass' /></td></tr>";
               $formatter->_extra_form=<<<EOF
  
  
  


wkpark      2008/04/24 08:20:45

  Modified:    .        wikilib.php
  Log:
  fixed bbs editform
  
  Revision  Changes    Path
  1.243     +7 -4      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.242
  retrieving revision 1.243
  diff -u -r1.242 -r1.243
  --- wikilib.php	19 Apr 2008 14:23:11 -0000	1.242
  +++ wikilib.php	23 Apr 2008 23:20:45 -0000	1.243
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.242 2008/04/19 14:23:11 wkpark Exp $
  +// $Id: wikilib.php,v 1.243 2008/04/23 23:20:45 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -642,7 +642,7 @@
     global $DBInfo;
   
     # simple == 1 : do not use EditTextForm, simple == 2 : do not use GUI/Preview
  -  if (!$options['simple']!=1 and $DBInfo->hasPage('EditTextForm')) {
  +  if ($options['simple']!=1 and $DBInfo->hasPage('EditTextForm')) {
       $p=$DBInfo->getPage('EditTextForm');
       $form=$p->get_raw_body();
       $f=new Formatter($p);
  @@ -885,6 +885,7 @@
       }
     }
   
  +  $summary_msg=_("Summary of Change");
     if (!$options['simple']) {
       $preview_btn='<input type="submit" tabindex="6" name="button_preview" '.
         'value="'._("Preview").'" />';
  @@ -895,9 +896,11 @@
         $wysiwyg_btn.='&nbsp;<input type="button" tabindex="7" value="'.$wysiwyg_msg.
           '" onclick="javascript:sectionEdit(null,null,null)" />';
       }
  +    $summary=<<<EOS
  +$summary_msg: <input name="comment" value="$editlog" size="70" maxlength="70" style="width:80%" tabindex="2" />$extra_check<br />
  +EOS;
     }
     $save_msg=_("Save");
  -  $summary_msg=_("Summary of Change");
     if ($use_js and $DBInfo->use_resizer) {
       if ($DBInfo->use_resizer==1) {
         $resizer=<<<EOS
  @@ -940,7 +943,7 @@
   </div>
   $extraform
   <div>
  -$summary_msg: <input name="comment" value="$editlog" size="70" maxlength="70" style="width:80%" tabindex="2" />$extra_check<br />
  +$summary
   <input type="hidden" name="action" value="$saveaction" />
   <input type="hidden" name="datestamp" value="$datestamp" />
   $hidden$select_category
  
  
  


wkpark      2008/04/25 18:59:18

  Modified:    local    moniwyg.js
  Log:
  
  
  Revision  Changes    Path
  1.42      +5 -5      moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.41
  retrieving revision 1.42
  diff -u -r1.41 -r1.42
  --- moniwyg.js	12 Apr 2008 02:39:57 -0000	1.41
  +++ moniwyg.js	25 Apr 2008 09:59:18 -0000	1.42
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.41 2008/04/12 02:39:57 wkpark Exp $
  +// $Id: moniwyg.js,v 1.42 2008/04/25 09:59:18 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -924,7 +924,7 @@
           if (match) {
               if (match[1] || match[3]) return null;
               url = match[2];
  -        } else if (selection.match(/^\[.*\]$/)) {
  +        } else if (selection.match(/^\[.+\]$/)) {
               urltext = selection.substr(1,selection.length-2);
               url = '/' + escape(urltext);
           }
  @@ -1098,8 +1098,9 @@
       // remove interwiki icons
       html =
           html.replace(/<a class=.?interwiki.?[^>]+><img [^>]+><\/a><a [^>]*title=(\'|\")?([^\'\" ]+)\1?[^>]*>[^<]+<\/a>/ig, "$2");
  -    html =
  -        html.replace(/<img class=.?(url|externalLink).?[^>]+>/ig, '');
  +    html = html.replace(/<img class=.?(url|externalLink).?[^>]+>/ig, '');
  +    // remove upper icons
  +    html = html.replace(/<a[^>]+class=.?main.?[^>]+><img [^>]+><\/a>/ig, '');
       // smiley/inline tex etc.
       //html =
       //    html.replace(/<img [^>]*class=.?(tex|interwiki|smiley|external).?[^>]* alt=(\'|\")?([^\'\" ]+)\2?[^>]+>/ig, "$3");
  @@ -1227,7 +1228,6 @@
                   var alt=element.getAttribute('alt');
                   if (!alt.match(/attachment:/)) {
                       this.appendOutput(alt);
  -                    this.appendOutput(' ');
                       return;
                   }
                   uri=alt;
  
  
  


wkpark      2008/04/25 18:59:18

  Modified:    .        wiki.php
  Log:
  
  
  Revision  Changes    Path
  1.390     +5 -5      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.389
  retrieving revision 1.390
  diff -u -r1.389 -r1.390
  --- wiki.php	23 Apr 2008 14:14:07 -0000	1.389
  +++ wiki.php	25 Apr 2008 09:59:18 -0000	1.390
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.389 2008/04/23 14:14:07 wkpark Exp $
  +// $Id: wiki.php,v 1.390 2008/04/25 09:59:18 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.389 $',1,-1);
  +$_revision = substr('$Revision: 1.390 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2541,7 +2541,7 @@
               "<tt class='sister'><a href='$url'>&#x203a;</a></tt>";
           case -3:
             #$url=$this->link_url(_rawurlencode($gpage));
  -          return $this->link_tag(_rawurlencode($gpage),'',$this->icon['main']).
  +          return $this->link_tag(_rawurlencode($gpage),'',$this->icon['main'],'class="main"').
               "<a href='$url' $attr>$word</a>";
           default:
             return "<a href='$url' $attr>$word</a>".
  @@ -2554,7 +2554,7 @@
         if ($gpage and $DBInfo->hasPage($gpage)) {
           $this->pagelinks[$page]=-3;
           #$url=$this->link_url(_rawurlencode($gpage));
  -        return $this->link_tag(_rawurlencode($gpage),'',$this->icon['main']).
  +        return $this->link_tag(_rawurlencode($gpage),'',$this->icon['main'],'class="main"').
             "<a href='$url' $attr>$word</a>";
         }
         if ($this->aliases[$page]) return $this->aliases[$page];
  @@ -2736,7 +2736,7 @@
         if (!function_exists ("macro_".$plugin)) return '[['.$macro.']]';
       }
   
  -    if ($this->_macrocache and empty($options['call']) and isset($this->dynamic_macros[$plugin])) {
  +    if ($this->_macrocache and empty($options['call']) and isset($this->dynamic_macros[strtolower($plugin)])) {
         $macro=$plugin. ($args ? '('.$args.')':'');
         $md5sum= md5($macro);
         $this->_macros[$md5sum]=array($macro,$mid);
  
  
  


wkpark      2008/04/25 19:29:04

  Modified:    local    googlehi.js
  Log:
  check query string
  
  Revision  Changes    Path
  1.3       +1 -0      moniwiki/local/googlehi.js
  
  Index: googlehi.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/googlehi.js,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- googlehi.js	3 Nov 2007 03:50:30 -0000	1.2
  +++ googlehi.js	25 Apr 2008 10:29:04 -0000	1.3
  @@ -14,6 +14,7 @@
         var param = params[i].split('=');
         if (param.length < 2) continue;
         if (param[0] == 'q' || param[0] == 'p') { // q= for Google, p= for Yahoo
  +        if (param[1].match(/^\d+$/)) continue;
           var query = decodeURIComponent(param[1].replace(/\+/g, ' '));
           if (query[0] == '!') query = query.slice(1);
           words = query.split(/(".*?")|('.*?')|(\s+)/);
  
  
  


wkpark      2008/04/25 20:26:17

  Modified:    plugin   UploadedFiles.php
  Log:
  fix for section editing with WikiWyg
  
  Revision  Changes    Path
  1.27      +2 -2      moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- UploadedFiles.php	21 Nov 2007 13:40:58 -0000	1.26
  +++ UploadedFiles.php	25 Apr 2008 11:26:17 -0000	1.27
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadedFiles plugin for the MoniWiki
   //
  -// $Id: UploadedFiles.php,v 1.26 2007/11/21 13:40:58 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.27 2008/04/25 11:26:17 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     $list=macro_UploadedFiles($formatter,$options['page'],$options);
  @@ -92,7 +92,7 @@
           }
   
           var my=opener.document.getElementById('editor_area');
  -        while (my.style.display == 'none') { // wikiwyg hack
  +        while (my == null || my.style.display == 'none') { // wikiwyg hack
               txtarea = opener.document.getElementById('wikiwyg_wikitext_textarea');
   
               // get iframe and check visibility.
  
  
  


wkpark      2008/04/25 20:28:39

  Modified:    local    moniwyg.js
  Log:
  show dialog to continue to edit with current text or not.
  
  Revision  Changes    Path
  1.43      +14 -12    moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.42
  retrieving revision 1.43
  diff -u -r1.42 -r1.43
  --- moniwyg.js	25 Apr 2008 09:59:18 -0000	1.42
  +++ moniwyg.js	25 Apr 2008 11:28:39 -0000	1.43
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.42 2008/04/25 09:59:18 wkpark Exp $
  +// $Id: moniwyg.js,v 1.43 2008/04/25 11:28:39 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -491,12 +491,6 @@
       var myWikiwyg = new Wikiwyg.Wikitext();
       var wikitext;
   
  -    var toolbar=document.getElementById('toolbar');
  -    if (toolbar) { // show toolbar
  -        if (Wikiwyg.is_ie) toolbar.style.display='';
  -        else toolbar.setAttribute('style','');
  -    }
  -
       var area=document.getElementById('editor_area');
       if (area) {
           var textarea=area.getElementsByTagName('textarea')[0];
  @@ -513,8 +507,14 @@
               wikitext = this.current_mode.textarea.value;
           }
   
  -        //if (textarea)
  -        //    textarea.value=wikitext; // XXX
  +        if (textarea && confirm('Continue to edit current text ?') )
  +            textarea.value=wikitext;
  +    }
  +
  +    var toolbar=document.getElementById('toolbar');
  +    if (toolbar) { // show toolbar
  +        if (Wikiwyg.is_ie) toolbar.style.display='';
  +        else toolbar.setAttribute('style','');
       }
       this.displayMode();
   }
  @@ -2442,6 +2442,9 @@
           var textarea=area.getElementsByTagName('textarea')[0].value;
           form=area.innerHTML;
   
  +        if (confirm('Continue to edit current text ?') )
  +            text=textarea;
  +
           var toolbar=document.getElementById('toolbar');
           if (toolbar) { // hide toolbar
               if (Wikiwyg.is_ie) toolbar.style.display='none';
  @@ -2458,10 +2461,9 @@
          
           var mycheck= x.getAttribute('id');
           if (mycheck && mycheck.match(/WikiWygArea/)) {
  -            var tmp = mycheck.split(/_/); // get already loaded WikiWygArea
  +            var tmp = mycheck.split(/_/); // get already loaded WikiWygArea XXX hack
   
  -            wikiwygs[tmp[1]].toolbarObject.resetModeSelector();
  -            wikiwygs[tmp[1]].current_mode.enableThis();
  +            wikiwygs[tmp[1]].editMode(form,text);
               return;
           }
           break;
  
  
  


wkpark      2008/04/25 22:39:45

  Modified:    .        wiki.php
  Log:
  wikiwyg fix
  
  Revision  Changes    Path
  1.391     +8 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.390
  retrieving revision 1.391
  diff -u -r1.390 -r1.391
  --- wiki.php	25 Apr 2008 09:59:18 -0000	1.390
  +++ wiki.php	25 Apr 2008 13:39:45 -0000	1.391
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.390 2008/04/25 09:59:18 wkpark Exp $
  +// $Id: wiki.php,v 1.391 2008/04/25 13:39:45 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.390 $',1,-1);
  +$_revision = substr('$Revision: 1.391 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2755,9 +2755,11 @@
           $markups=str_replace(array('=','-','&','<'),array('==','-=','&amp;','&lt;'),$value);
           $bra= "<span class='wikiMarkup' style='display:inline'><!-- wiki:\n".$markups."\n-->";
         } else {
  +        if ($processor == $this->pi['#format']) { $btag='';$etag=''; }
  +        else { $btag='{{{';$etag='}}}'; }
           if ($value{0}!='#' and $value{1}!='!') $notag="\n";
           $markups=str_replace(array('=','-','&','<'),array('==','-=','&amp;','&lt;'),$value);
  -        $bra= "<span class='wikiMarkup'><!-- wiki:\n{{{".$notag.$markups."}}}\n-->";
  +        $bra= "<span class='wikiMarkup'><!-- wiki:\n".$btag.$notag.$markups.$etag."\n-->";
         }
         $ket= '</span>';
       }
  @@ -3174,8 +3176,11 @@
         }
         if ($pi['#format'] != 'wiki') {
           if ($pi['args']) $pi_line="#!".$pi['#format']." $pi[args]\n";
  +        $savepi=$this->pi; // hack;;
  +        $this->pi=$pi;
           $text= $this->processor_repl($pi['#format'],
             $pi_line.$body,$options);
  +        $this->pi=$savepi;
           if ($this->use_smartdiff)
             $text= preg_replace_callback(array("/(\006|\010)(.*)\\1/sU"),
               array(&$this,'_diff_repl'),$text);
  
  
  


wkpark      2008/04/25 22:53:16

  Modified:    plugin   Diff.php
  Log:
  str_replace("<","&lt;") with a raw option
  
  Revision  Changes    Path
  1.16      +4 -2      moniwiki/plugin/Diff.php
  
  Index: Diff.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Diff.php,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- Diff.php	23 Apr 2008 14:14:07 -0000	1.15
  +++ Diff.php	25 Apr 2008 13:53:16 -0000	1.16
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a diff plugin for the MoniWiki
   //
  -// $Id: Diff.php,v 1.15 2008/04/23 14:14:07 wkpark Exp $
  +// $Id: Diff.php,v 1.16 2008/04/25 13:53:16 wkpark Exp $
   
   function simple_diff($diff) {
     $diff=str_replace("<","&lt;",$diff);
  @@ -304,8 +304,10 @@
           return;
         }
       }
  -    else
  +    else {
  +      $out=str_replace('<','&lt;',$out);
         $ret="<pre>$out</pre>\n";
  +    }
     }
     if ($options['nomsg']) return $ret;
     return "<h2>$msg</h2>\n$ret";
  
  
  


wkpark      2008/04/26 12:46:48

  Modified:    local/SWFUpload moni.js
  Log:
  SWFUpload fix (mkdir subdir correctly)
  do not use GUI editor by default for a non-wiki markup page
  
  Revision  Changes    Path
  1.4       +1 -1      moniwiki/local/SWFUpload/moni.js
  
  Index: moni.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/SWFUpload/moni.js,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- moni.js	16 Dec 2006 00:08:36 -0000	1.3
  +++ moni.js	26 Apr 2008 03:46:48 -0000	1.4
  @@ -168,7 +168,7 @@
               myAlign="<div id='previewAlign'>";
               myAlign+=" <img src='" + img_dir + "/normal.png' class='alignImg' onclick='javascript:alignImg(this,\"normal\")' />";
               myAlign+=" <img src='" + img_dir + "/left.png'  class='alignImg' onclick='javascript:alignImg(this,\"left\")' />";
  -            myAlign+=" <img src='" + img_dir + "/right.png'  class='alignImg' onclick='javascript:alignImg(this,\"light\")' />";
  +            myAlign+=" <img src='" + img_dir + "/right.png'  class='alignImg' onclick='javascript:alignImg(this,\"right\")' />";
               myAlign+="</div>";
           }
       } else {
  
  
  


wkpark      2008/04/26 12:46:48

  Modified:    local    moniwyg.js
  Log:
  SWFUpload fix (mkdir subdir correctly)
  do not use GUI editor by default for a non-wiki markup page
  
  Revision  Changes    Path
  1.44      +2 -2      moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.43
  retrieving revision 1.44
  diff -u -r1.43 -r1.44
  --- moniwyg.js	25 Apr 2008 11:28:39 -0000	1.43
  +++ moniwyg.js	26 Apr 2008 03:46:48 -0000	1.44
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.43 2008/04/25 11:28:39 wkpark Exp $
  +// $Id: moniwyg.js,v 1.44 2008/04/26 03:46:48 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -2442,7 +2442,7 @@
           var textarea=area.getElementsByTagName('textarea')[0].value;
           form=area.innerHTML;
   
  -        if (confirm('Continue to edit current text ?') )
  +        if (obj == null && confirm('Continue to edit current text ?') )
               text=textarea;
   
           var toolbar=document.getElementById('toolbar');
  
  
  


wkpark      2008/04/26 12:46:49

  Modified:    plugin   SWFUpload.php
  Log:
  SWFUpload fix (mkdir subdir correctly)
  do not use GUI editor by default for a non-wiki markup page
  
  Revision  Changes    Path
  1.8       +9 -6      moniwiki/plugin/SWFUpload.php
  
  Index: SWFUpload.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SWFUpload.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SWFUpload.php	13 Oct 2007 00:29:39 -0000	1.7
  +++ SWFUpload.php	26 Apr 2008 03:46:48 -0000	1.8
  @@ -8,12 +8,12 @@
   // Name: SWF Upload
   // Description: SWF Upload Plugin
   // URL: http://labb.dev.mammon.se/swfupload/ MoniWikiDev:SWFUpload
  -// Version: $Revision: 1.7 $
  +// Version: $Revision: 1.8 $
   // License: GPL
   //
   // Usage: [[SWFUpload]]
   //
  -// $Id: SWFUpload.php,v 1.7 2007/10/13 00:29:39 wkpark Exp $
  +// $Id: SWFUpload.php,v 1.8 2008/04/26 03:46:48 wkpark Exp $
   
   function macro_SWFUpload($formatter,$value) {
       global $DBInfo;
  @@ -36,6 +36,8 @@
   
       if ($DBInfo->use_lightbox) {
           $myoptions.="\n<input type='hidden' name='use_lightbox' value='1' />";
  +    } else {
  +        $myoptions.="\n<input type='hidden' name='use_lightbox' value='0' />";
       }
   
       if ($formatter->preview) {
  @@ -174,13 +176,13 @@
       }
   
       // debug
  -    //$fp=fopen('/var/tmp/swflog.txt','w+');
  +    //$fp=fopen($swfupload_dir.'/swflog.txt','w+');
       //foreach ($options as $k=>$v) {
  -    //    fwrite($fp,sprintf("%s=>%s\n",$k,$v));
  +    //    if (is_string($v))
  +    //         fwrite($fp,sprintf("%s=>%s\n",$k,$v));
       //}
  -    //fclose($fp);
       // set the personal subdir
  -    if ($options['value'] and preg_match('/^[a-f0-9\/]+$/i',$options['value'])) {
  +    if ($options['value'] and preg_match('/^[a-z0-9\/]+$/i',$options['value'])) {
           $mysubdir=$options['value'];
   
           list($dum,$myval,$dum2)=explode('/',$options['value'],3); // XXX
  @@ -190,6 +192,7 @@
               umask($om);
           }
       }
  +    //fclose($fp);
   
   
       //move the uploaded file
  
  
  


wkpark      2008/04/26 12:46:49

  Modified:    .        wikilib.php
  Log:
  SWFUpload fix (mkdir subdir correctly)
  do not use GUI editor by default for a non-wiki markup page
  
  Revision  Changes    Path
  1.244     +7 -4      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.243
  retrieving revision 1.244
  diff -u -r1.243 -r1.244
  --- wikilib.php	23 Apr 2008 23:20:45 -0000	1.243
  +++ wikilib.php	26 Apr 2008 03:46:49 -0000	1.244
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.243 2008/04/23 23:20:45 wkpark Exp $
  +// $Id: wikilib.php,v 1.244 2008/04/26 03:46:49 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -680,14 +680,17 @@
     $formatter->send_title(sprintf(_("Edit %s"),$options['page']).$sec,"",$options);
     //print '<div id="editor_area">'.macro_EditText($formatter,$value,$options).'</div>';
     print macro_EditText($formatter,$value,$options);
  -  if ($DBInfo->use_wikiwyg>=2)
  -    print <<<JS
  +  if ($DBInfo->use_wikiwyg>=2) {
  +    $pi=$formatter->get_instructions($dum);
  +    if (in_array($pi['#format'],array('wiki','monimarkup')) )
  +      print <<<JS
   <script type='text/javascript'>
   /*<![CDATA[*/
  -sectionEdit(null,null,null);
  +sectionEdit(null,true,null);
   /*]]>*/
   </script>
   JS;
  +  }
     $formatter->send_footer($args,$options);
   }
   
  
  
  


wkpark      2008/04/26 13:13:43

  Modified:    .        wiki.php
  Log:
  check $use_folding properly
  
  Revision  Changes    Path
  1.392     +8 -6      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.391
  retrieving revision 1.392
  diff -u -r1.391 -r1.392
  --- wiki.php	25 Apr 2008 13:39:45 -0000	1.391
  +++ wiki.php	26 Apr 2008 04:13:42 -0000	1.392
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.391 2008/04/25 13:39:45 wkpark Exp $
  +// $Id: wiki.php,v 1.392 2008/04/26 04:13:42 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.391 $',1,-1);
  +$_revision = substr('$Revision: 1.392 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -3654,10 +3654,12 @@
             $anchor="<a id='$anchor_id'></a>";
           }
           $attr='';
  -        if ($DBInfo->use_folding == 1) {
  -          $attr=" onclick=\"document.getElementById('sc-$this->sect_num').style.display=document.getElementById('sc-$this->sect_num').style.display!='none'? 'none':'block';\"";
  -        } else {
  -          $attr=" onclick=\"foldingSection(this,'sc-$this->sect_num');\"";
  +        if ($DBInfo->use_folding) {
  +          if ($DBInfo->use_folding == 1) {
  +            $attr=" onclick=\"document.getElementById('sc-$this->sect_num').style.display=document.getElementById('sc-$this->sect_num').style.display!='none'? 'none':'block';\"";
  +          } else {
  +            $attr=" onclick=\"foldingSection(this,'sc-$this->sect_num');\"";
  +          }
           }
   
           $line=$anchor.$edit.$this->head_repl(strlen($m[1]),$m[2],$attr);
  
  
  


wkpark      2008/04/26 23:33:16

  Modified:    plugin   UploadedFiles.php
  Log:
  fix to integrate with WikiWyg.
  simplified preview mode.
  add css class
  
  Revision  Changes    Path
  1.28      +74 -22    moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- UploadedFiles.php	25 Apr 2008 11:26:17 -0000	1.27
  +++ UploadedFiles.php	26 Apr 2008 14:33:16 -0000	1.28
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadedFiles plugin for the MoniWiki
   //
  -// $Id: UploadedFiles.php,v 1.27 2008/04/25 11:26:17 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.28 2008/04/26 14:33:16 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     $list=macro_UploadedFiles($formatter,$options['page'],$options);
  @@ -11,7 +11,7 @@
     $formatter->send_header("",$options);
     $formatter->send_title("","",$options);
   
  -  print $list;
  +  print "<div class='fileList'>".$list."</div>";
     $args['editable']=0;
     if (!in_array('UploadFile',$formatter->actions))
       $formatter->actions[]='UploadFile';
  @@ -27,6 +27,8 @@
      $preview_width=64;
   
      #$use_preview=0;
  +   $use_admin=1;
  +   $use_fileinfo=1;
      $js_tag=0;
      $js_script='';
      $uploader='';
  @@ -37,17 +39,28 @@
      $args=explode(',',$value);
      $value='';
   
  +   $default_column=8;
  +   $col=$options['col'] > 0 ? (int)$options['col']:$default_column;
  +
      if ($formatter->preview) {
        $js_tag=1;$use_preview=1;
        $uploader='UploadForm';
  +     $use_admin=0;
  +     $use_fileinfo=0;
      } else if ($options['preview']) {
        $use_preview=1;
  +     $use_admin=0;
  +     $use_fileinfo=0;
      }
   
      if ($options['tag']) { # javascript tag mode
        $js_tag=1;$use_preview=1;
  +     $use_admin=0;
  +     $use_fileinfo=0;
      }
   
  +   if ($use_fileinfo) $col=1;
  +
      if ($DBInfo->use_lightbox and !$js_tag)
        $href_attr=' rel="lightbox[upload]" ';
   
  @@ -99,7 +112,7 @@
               var myframe = opener.document.getElementsByTagName('iframe')[0];
               if (myframe.style.display == 'none' || myframe.parentNode.style.display == 'none') break;
   
  -            var postdata = 'action=markup&value=' + encodeURIComponent(tagOpen + myText + tagClose);
  +            var postdata = 'action=markup/ajax&value=' + encodeURIComponent(tagOpen + myText + tagClose);
               var myhtml='';
               myhtml= HTTPPost(self.location, postdata);
   
  @@ -249,13 +262,22 @@
      $out.="<input type='hidden' name='action' value='DeleteFile' />\n";
      if ($key)
        $out.="<input type='hidden' name='value' value='$value' />\n";
  +
  +
      $out.="<table style='border:0' cellpadding='2'>\n";
  -   $out.="<tr><th colspan='2'>File name</th><th>Size</th><th>Date</th></tr>\n";
  +   $colspan='';
  +   if ($use_admin) $colspan=" colspan='2'";
  +   if ($use_fileinfo) {
  +     $mname=_("File name");
  +     $msize=_("Size");
  +     $mdate=_("Date");
  +     $out.="<tr><th$colspan>$mname</th><th>$msize</th><th>$mdate</th></tr>\n";
  +   }
      $idx=1;
   
      if ($js_tag) {
  -     $attr=' target="_blank"';
  -     $extra='&amp;tag=1';
  +     #$attr=' target="_blank"';
  +     $extra='&amp;popup=1&amp;tag=1';
      } else {
        $attr='';
        $extra='';
  @@ -263,19 +285,32 @@
      foreach ($dirs as $file) {
         $link=$formatter->link_url($file,"?action=uploadedfiles$extra",$file,$attr);
         $date=date("Y-m-d",filemtime($dir."/".$DBInfo->pageToKeyname($file)));
  -      $out.="<tr><td class='wiki'><input type='$checkbox' name='files[$idx]' value='$file' /></td><td class='wiki'><a href='$link'>$file/</a></td><td align='right' class='wiki'>&nbsp;</td><td class='wiki'>$date</td></tr>\n";
  +      $out.="<tr>";
  +      if ($use_admin)
  +        $out.="<td class='wiki'><input type='$checkbox' name='files[$idx]' value='$file' /></td>";
  +
  +      $out.="<td class='wiki'><a href='$link'>$file/</a></td>";
  +      if ($use_fileinfo)
  +        $out.="<td align='right' class='wiki'>&nbsp;</td><td class='wiki'>$date</td>";
  +      $out.="</tr>\n";
         $idx++;
      }
   
      if (!$options['nodir'] and !$dirs) {
         if ($js_tag) {
  -        $attr=' target="_blank"';
  +        #$attr=' target="_blank"';
           $extra='&amp;popup=1&amp;tag=1';
         }
         $link=$formatter->link_tag('UploadFile',"?action=uploadedfiles&amp;value=top$extra",
           "<img src='".$icon_dir."/32/up.png' style='border:0' class='upper' alt='..' />",$attr);
  -      $date=date("Y-m-d",filemtime($dir."/.."));
  -      $out.="<tr><td class='wiki'>&nbsp;</td><td class='wiki'>$link</td><td align='right' class='wiki'>&nbsp;</td><td class='wiki'>$date</td></tr>\n";
  +      $out.="<tr>";
  +      if ($use_admin) $out.="<td class='wiki'>&nbsp;</td>";
  +      $out.="<td class='wiki'>$link</td>";
  +      if ($use_fileinfo) {
  +        $date=date("Y-m-d",filemtime($dir."/.."));
  +        $out.="<td align='right' class='wiki'>&nbsp;</td><td class='wiki'>$date</td>";
  +      }
  +      $out.="</tr>\n";
      }
      if ($plink)
         $plink=$formatter->link_tag('',"?action=uploadedfiles$extra&amp;p=".($p+1),_("Next page &raquo;"),$attr);
  @@ -288,10 +323,12 @@
   
      $down_mode=(strpos($prefix,';value=') !== false);
      $mywidth=$preview_width;
  +
  +   $iidx=1;
      foreach ($upfiles as $file) {
         $_l_file=_l_filename($file);
         if ($down_mode)
  -        $link=str_replace("value=","value=".rawurlencode($file),$prefix);
  +        $link=str_replace(";value=",";value=".rawurlencode($file),$prefix);
         else
           $link=$prefix.rawurlencode($file); // XXX
   
  @@ -316,15 +353,17 @@
           }
         }
   
  -      $i=0;
  -      for (;$i<4;$i++) {
  -         if ($size <= 1024) {
  +      if ($use_fileinfo) {
  +        $i=0;
  +        for (;$i<4;$i++) {
  +          if ($size <= 1024) {
               #$size= round($size,2).' '.$unit[$i];
               break;
  -         }
  -         $size=$size/1024;
  +          }
  +          $size=$size/1024;
  +        }
  +        $size=round($size,2).' '.$unit[$i];
         }
  -      $size=round($size,2).' '.$unit[$i];
   
         $date=date('Y-m-d',filemtime($dir.'/'.$_l_file));
         $fname=$file;
  @@ -353,16 +392,29 @@
             $link="javascript:$tag";
           }
         }
  -      $out.="<tr><td class='wiki'><input type='$checkbox' name='files[$idx]' value='$file' /></td><td class='wiki'><a href=\"$link\"$attr>$fname</a></td><td align='right' class='wiki'>$size</td><td class='wiki'>$date</td></tr>\n";
  +      if ($iidx % $col == 1)
  +      $out.="<tr>";
  +      if ($use_admin)
  +        $out.="<td class='wiki'><input type='$checkbox' name='files[$idx]' value='$file' /></td>";
  +      $out.="<td class='wiki'><a href=\"$link\"$attr>$fname</a></td>";
  +      if ($use_fileinfo) {
  +        $out.="<td align='right' class='wiki'>$size</td><td class='wiki'>$date</td>";
  +      }
  +      if ($iidx % $col == 0)
  +      $out.="</tr>\n";
         $idx++;
  +      $iidx++;
      }
      $idx--;
      $msg=sprintf(_("Total %d files"),$idx);
      $out.="<tr><th colspan='2'>$msg</th><th colspan='2'>$plink</th></tr>\n";
      $out.="</table>\n";
  -   if ($DBInfo->security->is_protected("deletefile",$options))
  -     $out.=_("Password").": <input type='password' name='passwd' size='10' />\n";
  -   $out.="<input type='submit' value='"._("Delete selected files")."' /></form>\n";
  +   if ($use_admin) {
  +     if ($DBInfo->security->is_protected("deletefile",$options))
  +       $out.=_("Password").": <input type='password' name='passwd' size='10' />\n";
  +     $out.="<input type='submit' value='"._("Delete selected files")."' />";
  +   }
  +   $out.="</form>\n";
   
      if (!$value and !in_array('UploadFile',$formatter->actions))
        $formatter->actions[]='UploadFile';
  @@ -373,5 +425,5 @@
      return $js_script.$out;
   }
   
  -// vim:et:sw:sts=4:
  +// vim:et:sw=4:sts=4:
   ?>
  
  
  


wkpark      2008/04/26 23:34:17

  Modified:    css      _extra.css
  Log:
  more fix for WikiWyg
  
  Revision  Changes    Path
  1.17      +5 -1      moniwiki/css/_extra.css
  
  Index: _extra.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_extra.css,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- _extra.css	9 Apr 2008 11:19:09 -0000	1.16
  +++ _extra.css	26 Apr 2008 14:34:17 -0000	1.17
  @@ -20,6 +20,10 @@
     visibility:visible;
   }
   
  +.fileList {
  +  overflow-x:auto;
  +}
  +
   .gallery-img {
     /* float:left; */
   }
  @@ -372,7 +376,7 @@
   }
   
   table.bbs tbody tr:hover {
  -  background-color:#eeeeee;
  +  background:url(../imgs/plugin/BBS/selbg.png) repeat-x;
   }
   
   table.bbs tbody td {
  
  
  


wkpark      2008/04/26 23:34:17

  Modified:    local    moniwyg.js
  Log:
  more fix for WikiWyg
  
  Revision  Changes    Path
  1.45      +8 -1      moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.44
  retrieving revision 1.45
  diff -u -r1.44 -r1.45
  --- moniwyg.js	26 Apr 2008 03:46:48 -0000	1.44
  +++ moniwyg.js	26 Apr 2008 14:34:17 -0000	1.45
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.44 2008/04/26 03:46:48 wkpark Exp $
  +// $Id: moniwyg.js,v 1.45 2008/04/26 14:34:17 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -898,6 +898,13 @@
   */
   }
   
  +proto.process_command = function(command) {
  +    if (this['do_' + command])
  +        this['do_' + command](command);
  +    if (! Wikiwyg.is_ie && command != 'image' && command != 'media') // hack for open.window
  +        this.get_edit_window().focus();
  +}
  +
   proto.do_link = function() {
       var selection = this.get_link_selection_text();
       if (! selection) return;
  
  
  


wkpark      2008/04/26 23:34:18

  Modified:    .        wiki.php wikilib.php
  Log:
  more fix for WikiWyg
  
  Revision  Changes    Path
  1.393     +7 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.392
  retrieving revision 1.393
  diff -u -r1.392 -r1.393
  --- wiki.php	26 Apr 2008 04:13:42 -0000	1.392
  +++ wiki.php	26 Apr 2008 14:34:17 -0000	1.393
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.392 2008/04/26 04:13:42 wkpark Exp $
  +// $Id: wiki.php,v 1.393 2008/04/26 14:34:17 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.392 $',1,-1);
  +$_revision = substr('$Revision: 1.393 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -4209,7 +4209,11 @@
       print $DBInfo->hr;
       if ($args['editable'] and !$DBInfo->security->writable($options))
         $args['editable']=-1;
  -    
  +
  +    $key=$DBInfo->pageToKeyname($options['page']);
  +    if (!in_array('UploadedFiles',$this->actions) and is_dir($DBInfo->upload_dir."/$key"))
  +      $this->actions[]='UploadedFiles';
  +
       $menus=$this->get_actions($args,$options);
   
       $hide_actions= $this->popup + $DBInfo->hide_actions;
  
  
  
  1.245     +8 -4      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.244
  retrieving revision 1.245
  diff -u -r1.244 -r1.245
  --- wikilib.php	26 Apr 2008 03:46:49 -0000	1.244
  +++ wikilib.php	26 Apr 2008 14:34:17 -0000	1.245
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.244 2008/04/26 03:46:49 wkpark Exp $
  +// $Id: wikilib.php,v 1.245 2008/04/26 14:34:17 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -681,15 +681,19 @@
     //print '<div id="editor_area">'.macro_EditText($formatter,$value,$options).'</div>';
     print macro_EditText($formatter,$value,$options);
     if ($DBInfo->use_wikiwyg>=2) {
  -    $pi=$formatter->get_instructions($dum);
  -    if (in_array($pi['#format'],array('wiki','monimarkup')) )
  -      print <<<JS
  +    $js=<<<JS
   <script type='text/javascript'>
   /*<![CDATA[*/
   sectionEdit(null,true,null);
   /*]]>*/
   </script>
   JS;
  +    if (!$DBInfo->hasPage($options['page'])) print $js;
  +    else {
  +      $pi=$formatter->get_instructions($dum);
  +      if (in_array($pi['#format'],array('wiki','monimarkup')) )
  +	print $js;
  +    }
     }
     $formatter->send_footer($args,$options);
   }
  
  
  


wkpark      2008/04/26 23:37:08

  Modified:    doc      footer.php.sample header.php.sample
                        theme.php.sample
  Log:
  update
  
  Revision  Changes    Path
  1.2       +1 -1      moniwiki/doc/footer.php.sample
  
  Index: footer.php.sample
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/doc/footer.php.sample,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- footer.php.sample	10 Aug 2003 12:03:57 -0000	1.1
  +++ footer.php.sample	26 Apr 2008 14:37:07 -0000	1.2
  @@ -1,5 +1,5 @@
   <div id='wikiFooter'>
  -<?
  +<?php
     if ($lastedit)
       print "last modified $lastedit $lasttime<br />";
     print $menu.$banner."<br />". $timer;
  
  
  
  1.2       +4 -4      moniwiki/doc/header.php.sample
  
  Index: header.php.sample
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/doc/header.php.sample,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- header.php.sample	10 Aug 2003 12:03:57 -0000	1.1
  +++ header.php.sample	26 Apr 2008 14:37:07 -0000	1.2
  @@ -1,11 +1,11 @@
  -<?
  +<?php
   # $title, $logo
   # $menu, $icon, $upper_icon, $rss_icon, $user_link
   # $msg
   ?>
   <table border='0'><tr>
   <td colspan='2'><?=$title?></td><td align='right'><?=$logo?></td></tr>
  -<tr><td><?=$goto_form?></td></tr>
  -<tr><td><?=$menu?></td><td><?=$icons?><?=$rss_icon?></td><td><?=$user_link?></td></tr>
  +<tr><td><?php echo $goto_form?></td></tr>
  +<tr><td><?php echo $menu?></td><td><?php echo $icons?><?php echo $rss_icon?></td><td><?php echo $user_link?></td></tr>
   </table>
  -<?=$msg?>
  +<?php echo $msg?>
  
  
  
  1.4       +18 -18    moniwiki/doc/theme.php.sample
  
  Index: theme.php.sample
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/doc/theme.php.sample,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- theme.php.sample	13 Aug 2004 09:22:35 -0000	1.3
  +++ theme.php.sample	26 Apr 2008 14:37:07 -0000	1.4
  @@ -1,25 +1,25 @@
   <?php
   $iconset='moni';
   $imgdir=$themeurl."/imgs";
  -$icon['upper']="<img src='$imgdir/$iconset-upper.gif' alt='U' align='middle' border='0' />";
  -$icon['edit']="<img src='$imgdir/$iconset-edit.gif' alt='E' align='middle' border='0' />";
  -$icon['diff']="<img src='$imgdir/$iconset-diff.gif' alt='D' align='middle' border='0' />";
  -$icon['del']="<img src='$imgdir/$iconset-deleted.gif' alt='(del)' align='middle' border='0' />";
  -$icon['info']="<img src='$imgdir/$iconset-info.gif' alt='I' align='middle' border='0' />";
  -$icon['rss']="<img src='$imgdir/$iconset-rss.gif' alt='RSS' align='middle' border='0' />";
  -$icon['show']="<img src='$imgdir/$iconset-show.gif' alt='R' align='middle' border='0' />";
  -$icon['find']="<img src='$imgdir/$iconset-search.gif' alt='S' align='middle' border='0' />";
  -$icon['help']="<img src='$imgdir/$iconset-help.gif' alt='H' align='middle' border='0' />";
  -$icon['www']="<img src='$imgdir/$iconset-www.gif' alt='www' align='middle' border='0' />";
  -$icon['mailto']="<img src='$imgdir/$iconset-email.gif' alt='M' align='middle' border='0' />";
  -$icon['create']="<img src='$imgdir/$iconset-create.gif' alt='N' align='middle' border='0' />";
  -$icon['new']="<img src='$imgdir/$iconset-new.gif' alt='U' align='middle' border='0' />";
  -$icon['updated']="<img src='$imgdir/$iconset-updated.gif' alt='U' align='middle' border='0' />";
  +$icon['upper']="<img src='$imgdir/$iconset/upper.gif' alt='U' align='middle' border='0' />";
  +$icon['edit']="<img src='$imgdir/$iconset/edit.gif' alt='E' align='middle' border='0' />";
  +$icon['diff']="<img src='$imgdir/$iconset/diff.gif' alt='D' align='middle' border='0' />";
  +$icon['del']="<img src='$imgdir/$iconset/deleted.gif' alt='(del)' align='middle' border='0' />";
  +$icon['info']="<img src='$imgdir/$iconset/info.gif' alt='I' align='middle' border='0' />";
  +$icon['rss']="<img src='$imgdir/$iconset/rss.gif' alt='RSS' align='middle' border='0' />";
  +$icon['show']="<img src='$imgdir/$iconset/show.gif' alt='R' align='middle' border='0' />";
  +$icon['find']="<img src='$imgdir/$iconset/search.gif' alt='S' align='middle' border='0' />";
  +$icon['help']="<img src='$imgdir/$iconset/help.gif' alt='H' align='middle' border='0' />";
  +$icon['www']="<img src='$imgdir/$iconset/www.gif' alt='www' align='middle' border='0' />";
  +$icon['mailto']="<img src='$imgdir/$iconset/email.gif' alt='M' align='middle' border='0' />";
  +$icon['create']="<img src='$imgdir/$iconset/create.gif' alt='N' align='middle' border='0' />";
  +$icon['new']="<img src='$imgdir/$iconset/new.gif' alt='U' align='middle' border='0' />";
  +$icon['updated']="<img src='$imgdir/$iconset/updated.gif' alt='U' align='middle' border='0' />";
   $icon['user']="UserPreferences";
  -$icon['home']="<img src='$imgdir/$iconset-home.gif' alt='M' align='middle' border='0' />";
  -$icon['xml']="<img src='$imgdir/$iconset-xml.gif' alt='X' align='middle' border='0' />";
  -$icon['print']="<img src='$imgdir/$iconset-print.gif' alt='P' align='middle' border='0' />";
  -$icon['attach']="<img src='$imgdir/$iconset-attach.gif' alt='@' align='middle' border='0' />";
  +$icon['home']="<img src='$imgdir/$iconset/home.gif' alt='M' align='middle' border='0' />";
  +$icon['xml']="<img src='$imgdir/$iconset/xml.gif' alt='X' align='middle' border='0' />";
  +$icon['print']="<img src='$imgdir/$iconset/print.gif' alt='P' align='middle' border='0' />";
  +$icon['attach']="<img src='$imgdir/$iconset/attach.gif' alt='@' align='middle' border='0' />";
   
   $icon_sep=' ';
   $icon_cat=' ';
  
  
  


wkpark      2008/04/26 23:37:36

  Modified:    imgs/interwiki uploads-16.png
  Log:
  update
  
  Revision  Changes    Path
  1.2       +2 -3      moniwiki/imgs/interwiki/uploads-16.png
  
  	<<Binary file>>
  
  


wkpark      2008/04/26 23:37:36

  Modified:    imgs/moni2 deleted.png
  Log:
  update
  
  Revision  Changes    Path
  1.2       +4 -2      moniwiki/imgs/moni2/deleted.png
  
  	<<Binary file>>
  
  


wkpark      2008/04/26 23:38:51

  Modified:    plugin   rss_rc.php revert.php Calendar.php
  Log:
  minor fixes
  
  Revision  Changes    Path
  1.15      +2 -1      moniwiki/plugin/rss_rc.php
  
  Index: rss_rc.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rss_rc.php,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- rss_rc.php	6 Nov 2007 16:31:54 -0000	1.14
  +++ rss_rc.php	26 Apr 2008 14:38:50 -0000	1.15
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // rss_rc action plugin for the MoniWiki
   //
  -// $Id: rss_rc.php,v 1.14 2007/11/06 16:31:54 wkpark Exp $
  +// $Id: rss_rc.php,v 1.15 2008/04/26 14:38:50 wkpark Exp $
   
   function do_rss_rc($formatter,$options) {
     global $DBInfo;
  @@ -168,6 +168,7 @@
   	xmlns:dc="http://purl.org/dc/elements/1.1/">
   <!--
       Add "diffs=1" to add change diffs to the description of each items.
  +    Add "summary=1" to add summary to the description of each items.
       Add "oe=utf-8" to convert the charset of this rss to UTF-8.
   -->\n
   HEAD;
  
  
  
  1.3       +3 -3      moniwiki/plugin/revert.php
  
  Index: revert.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/revert.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- revert.php	9 Jan 2007 04:29:02 -0000	1.2
  +++ revert.php	26 Apr 2008 14:38:50 -0000	1.3
  @@ -10,13 +10,13 @@
   // PluginType: macro,action
   // ActionType: protected
   // URL: to_plugin url/interwiki name etc.
  -// Version: $Revision: 1.2 $
  +// Version: $Revision: 1.3 $
   // Depend: 1.1.3
   // License: GPL
   //
   // Usage: ?action=revert&rev=1.1
   //
  -// $Id: revert.php,v 1.2 2007/01/09 04:29:02 wkpark Exp $
  +// $Id: revert.php,v 1.3 2008/04/26 14:38:50 wkpark Exp $
   
   function macro_Revert($formatter,$value,$options=array()) {
       $options['info_actions']=array('recall'=>'view','revert'=>'revert');
  @@ -50,7 +50,7 @@
   
               $class=getModule('Version',$DBInfo->version_class);
               $version=new $class ($DBInfo);
  -            if ($force) unlink($key); // try to delete
  +            if ($force) @unlink($key); // try to delete
               $ret=$version->co($formatter->page->name,$_POST['rev'],array('stdout'=>1));
               chmod($key,0666);
   
  
  
  
  1.16      +4 -2      moniwiki/plugin/Calendar.php
  
  Index: Calendar.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Calendar.php,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- Calendar.php	15 Jul 2006 19:09:34 -0000	1.15
  +++ Calendar.php	26 Apr 2008 14:38:50 -0000	1.16
  @@ -7,7 +7,7 @@
   #-----usage: generate_calendar(2001, 11, $day_func, 2);-------------------------
   #------(last two arguments are optional)----------------------------------------
   #-------------------------------------------------------------------------------
  -# $Id: Calendar.php,v 1.15 2006/07/15 19:09:34 wkpark Exp $
  +# $Id: Calendar.php,v 1.16 2008/04/26 14:38:50 wkpark Exp $
   
   function calendar_get_dates($formatter,$date='',$page='') {
     global $DBInfo;
  @@ -79,6 +79,7 @@
   	if ($match[7]) {
   		$args=explode(",",$match[7]);
   
  +		if (in_array ("nolink", $args)) $nolink=1;
   		if (in_array ("blog", $args)) $mode='blog';
   		if (in_array ("noweek", $args)) $day_heading_length=0;
   		if (in_array ("center", $args)) $attr=' align="center"';
  @@ -168,6 +169,7 @@
   	} else if ($mode) {
   		$link=$urlpagename;
   	}
  +
   	while ($day <= $maxdays){
   		if($weekday == 7){ #start a new week
   			$calendar .= "</tr>\n<tr>";
  @@ -185,7 +187,7 @@
   			$classes=$nonexists;
   		}
   
  -		if (!$mode) {
  +		if (!$mode and !isset($nolink)) {
   			$link=$urlpagename."/".$link_prefix."-".sprintf("%02d",$day);
   			if ($DBInfo->hasPage($link))
   				$classes=$exists;
  
  
  


wkpark      2008/04/27 00:23:23

  Modified:    local    moniwyg.js
  Log:
  minor fix
  
  Revision  Changes    Path
  1.46      +5 -5      moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.45
  retrieving revision 1.46
  diff -u -r1.45 -r1.46
  --- moniwyg.js	26 Apr 2008 14:34:17 -0000	1.45
  +++ moniwyg.js	26 Apr 2008 15:23:23 -0000	1.46
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.45 2008/04/26 14:34:17 wkpark Exp $
  +// $Id: moniwyg.js,v 1.46 2008/04/26 15:23:23 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -1160,10 +1160,10 @@
       // add final whitespace
       this.assert_new_line();
   
  -    for (var i=0;i<this.output.length;i++) {
  -        if (this.output[i].length)
  -        this.output[i]=this.output[i].replace(/\\n/,"\n");
  -    }
  +    //for (var i=0;i<this.output.length;i++) {
  +    //    if (this.output[i].length)
  +    //    this.output[i]=this.output[i].replace(/\\n/,"\n");
  +    //} XXX
   
       return this.join_output(this.output);
   }
  
  
  


wkpark      2008/04/27 18:32:00

  Modified:    plugin   rss_rc.php
  Log:
  fixed CDATA bug
  
  Revision  Changes    Path
  1.16      +4 -3      moniwiki/plugin/rss_rc.php
  
  Index: rss_rc.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rss_rc.php,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- rss_rc.php	26 Apr 2008 14:38:50 -0000	1.15
  +++ rss_rc.php	27 Apr 2008 09:32:00 -0000	1.16
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // rss_rc action plugin for the MoniWiki
   //
  -// $Id: rss_rc.php,v 1.15 2008/04/26 14:38:50 wkpark Exp $
  +// $Id: rss_rc.php,v 1.16 2008/04/27 09:32:00 wkpark Exp $
   
   function do_rss_rc($formatter,$options) {
     global $DBInfo;
  @@ -79,6 +79,7 @@
             ob_end_clean();
             $extra='';
           }
  +    	$html=str_replace(']','&#93;',$html);
           $html="<![CDATA[".$html.$extra."]]>";
           #$html=strtr($html.$extra,array('&'=>'&amp;','<'=>'&lt;'));
         } else if ($options['summary']) {
  @@ -100,8 +101,8 @@
           $chunks= preg_split('/<!-- break -->/',$html); # <!-- break -->
           if ($chunks[0]) $html=$chunks[0];
   
  -        $extra='';
  -        $html="<![CDATA[".$html.$extra."]]>";
  +    	$html=str_replace(']','&#93;',$html);
  +        $html="<![CDATA[".$html."]]>";
         } else {
       	$html=str_replace('&','&amp;',$log);
         }
  
  
  


wkpark      2008/04/27 18:32:33

  Modified:    plugin   SmileyChooser.php
  Log:
  do_smileychooser() action added
  
  Revision  Changes    Path
  1.13      +18 -3     moniwiki/plugin/SmileyChooser.php
  
  Index: SmileyChooser.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SmileyChooser.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- SmileyChooser.php	21 Nov 2007 09:49:33 -0000	1.12
  +++ SmileyChooser.php	27 Apr 2008 09:32:33 -0000	1.13
  @@ -5,7 +5,22 @@
   //
   // Usage: [[SmileyChooser]]
   //
  -// $Id: SmileyChooser.php,v 1.12 2007/11/21 09:49:33 wkpark Exp $
  +// $Id: SmileyChooser.php,v 1.13 2008/04/27 09:32:33 wkpark Exp $
  +
  +function do_smileychooser($formatter,$params=array()) {
  +  $list=macro_SmileyChooser($formatter,$params['page'],$params);
  +
  +  $formatter->send_header("",$params);
  +  $formatter->send_title("","",$params);
  +
  +  print $list;
  +  $args['editable']=0;
  +  if (!in_array('UploadFile',$formatter->actions))
  +    $formatter->actions[]='UploadFile';
  +
  +  $formatter->send_footer($args,$params);
  +  return;
  +}
   
   function macro_SmileyChooser($formatter,$value) {
     global $DBInfo;
  @@ -39,7 +54,7 @@
       // hack. check wrapper also
       if (myframe.style.display == 'none' || myframe.parentNode.style.display == 'none') break;
   
  -    var postdata = 'action=markup&value=' + encodeURIComponent(myText);
  +    var postdata = 'action=markup/ajax&value=' + encodeURIComponent(myText);
       var myhtml='';
       myhtml= HTTPPost(self.location, postdata);
   
  @@ -108,5 +123,5 @@
     return $chooser;
   }
   
  -// vim:et:sts=2:
  +// vim:et:sts=2:sw=2:
   ?>
  
  
  


wkpark      2008/04/27 18:33:29

  Modified:    .        wikilib.php
  Log:
  return do_invalid() instead
  
  Revision  Changes    Path
  1.246     +5 -9      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.245
  retrieving revision 1.246
  diff -u -r1.245 -r1.246
  --- wikilib.php	26 Apr 2008 14:34:17 -0000	1.245
  +++ wikilib.php	27 Apr 2008 09:33:29 -0000	1.246
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.245 2008/04/26 14:34:17 wkpark Exp $
  +// $Id: wikilib.php,v 1.246 2008/04/27 09:33:29 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -671,8 +671,7 @@
     if (!$DBInfo->security->writable($options)) {
       $formatter->preview=0;
       $options['err']="#format wiki\n== "._("You are not allowed to edit this page !").' =='; # XXX
  -    do_invalid($formatter,$options);
  -    return;
  +    return do_invalid($formatter,$options);
     }
     $formatter->send_header("",$options);
     if ($options['section'])
  @@ -702,8 +701,7 @@
     global $DBInfo;
     if (!$DBInfo->security->writable($options)) {
       $formatter->preview=0;
  -    ajax_invalid($formatter,$options);
  -    return;
  +    return ajax_invalid($formatter,$options);
     }
     if ($options['section'])
       $sec=' (Section)';
  @@ -1343,8 +1341,7 @@
     global $DBInfo;
     if ($_SERVER['REQUEST_METHOD']!="POST" or
       !$DBInfo->security->writable($options)) {
  -    ajax_invalid($formatter,$options);
  -    return;
  +    return ajax_invalid($formatter,$options);
     }
     $savetext=$options['savetext'];
     $datestamp=$options['datestamp'];
  @@ -1438,8 +1435,7 @@
   function do_post_savepage($formatter,$options) {
     global $DBInfo;
     if (!$DBInfo->security->writable($options)) {
  -    do_invalid($formatter,$options);
  -    return;
  +    return do_invalid($formatter,$options);
     }
   
     $savetext=$options['savetext'];
  
  
  


wkpark      2008/04/27 18:34:35

  Modified:    .        wiki.php
  Log:
  $delayindex feature added imported from dokuwiki
  
  Revision  Changes    Path
  1.394     +16 -9     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.393
  retrieving revision 1.394
  diff -u -r1.393 -r1.394
  --- wiki.php	26 Apr 2008 14:34:17 -0000	1.393
  +++ wiki.php	27 Apr 2008 09:34:34 -0000	1.394
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.393 2008/04/26 14:34:17 wkpark Exp $
  +// $Id: wiki.php,v 1.394 2008/04/27 09:34:34 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.393 $',1,-1);
  +$_revision = substr('$Revision: 1.394 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -3987,6 +3987,18 @@
         else {
           $metatags=$DBInfo->metatags;
         }
  +
  +      $mtime=$this->page->mtime(); // delay indexing from dokuwiki
  +      if ($DBInfo->delayindex and ((time() - $mtime) < $DBInfo->delayindex)) {
  +        if (preg_match("/<meta\s+name=('|\")?robots\\1[^>]+>/i",
  +          $metatags)) {
  +          $metatags=preg_replace("/<meta\s+name=('|\")?robots\\1[^>]+>/i",
  +            '<meta name="Robots" content="noindex,nofollow" />',
  +            $metatags);
  +        } else {
  +          $metatags.='<meta name="robots" content="noindex,nofollow" />'."\n";
  +        }
  +      }
       }
   
       $js=$DBInfo->js;
  @@ -4230,13 +4242,8 @@
       }
   
       if ($mtime=$this->page->mtime()) {
  -      if ($options['tz_offset'] != '') {
  -        $lastedit=gmdate("Y-m-d",$mtime+$options['tz_offset']);
  -        $lasttime=gmdate("H:i:s",$mtime+$options['tz_offset']);
  -      } else {
  -        $lastedit=date("Y-m-d",$mtime);
  -        $lasttime=date("H:i:s",$mtime);
  -      }
  +      $lastedit=gmdate("Y-m-d",$mtime+$options['tz_offset']);
  +      $lasttime=gmdate("H:i:s",$mtime+$options['tz_offset']);
       }
   
       $validator_xhtml=$DBInfo->validator_xhtml ? $DBInfo->validator_xhtml:'http://validator.w3.org/check/referer';
  
  
  


wkpark      2008/04/27 19:12:53

  Modified:    plugin/processor monimarkup.php
  Log:
  use <p class="para"> tag instead of <div class="para">
  
  Revision  Changes    Path
  1.5       +13 -4     moniwiki/plugin/processor/monimarkup.php
  
  Index: monimarkup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/monimarkup.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- monimarkup.php	14 Apr 2008 12:51:17 -0000	1.4
  +++ monimarkup.php	27 Apr 2008 10:12:53 -0000	1.5
  @@ -1,14 +1,14 @@
   <?php
  -// Copyright 2006-2007 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2006-2008 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a moniwiki formatting processor for the MoniWiki
   //
  -// $Id: monimarkup.php,v 1.4 2008/04/14 12:51:17 wkpark Exp $
  +// $Id: monimarkup.php,v 1.5 2008/04/27 10:12:53 wkpark Exp $
   /**
    * @date    2006-08-09
    * @name    Moniwiki Processor
    * @desc    Moniwiki default processor
  - * @version $Revision: 1.4 $
  + * @version $Revision: 1.5 $
    * @depend  1.1.3
    * @license GPL
    */
  @@ -564,7 +564,10 @@
                       --$_li;
                   }
   
  -                $out.= $this->_div(1,' class="para"',$sty[4]).$c.$this->_div(0);
  +                if (preg_match('/<div[^>]*>/',$c))
  +                    $out.= $this->_div(1,' class="para"',$sty[4]).$c.$this->_div(0);
  +                else
  +                    $out.= $this->_p(1,' class="para"',$sty[4]).$c.$this->_p(0);
               }
           }
           while($_li>0 and $_lidep[$_li] > 0) {
  @@ -631,6 +634,12 @@
           $tag=array("</div>\n","<div$attr$sty>");
           return $tag[$on].$close;
       }
  +
  +    function _p($on,$attr='',$sty='') {
  +        if ($sty) $sty=' style="'.$sty.'"';
  +        $tag=array("</p>\n","<p$attr$sty>");
  +        return $tag[$on].$close;
  +    }
   }
   
   if (basename($_SERVER['argv'][0]) == basename(__FILE__)) {
  
  
  


wkpark      2008/04/27 20:44:01

  Modified:    local    moniwyg.js
  Log:
  format_tt() added for `` syntax
  fixed update_wikimarkup() for the monimarkup processor
  remove alert()
  
  Revision  Changes    Path
  1.47      +14 -6     moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.46
  retrieving revision 1.47
  diff -u -r1.46 -r1.47
  --- moniwyg.js	26 Apr 2008 15:23:23 -0000	1.46
  +++ moniwyg.js	27 Apr 2008 11:44:01 -0000	1.47
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.46 2008/04/26 15:23:23 wkpark Exp $
  +// $Id: moniwyg.js,v 1.47 2008/04/27 11:44:01 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -194,10 +194,12 @@
           var myhtml= HTTPPost(top.location, postdata);
   
           // hack hack
  -        var chunks = myhtml.split(/<div>/i);
  -        myhtml = (chunks[1] ? chunks[1]:chunks[0])
  -            .replace(/^(.*)<div>(\s|\n)*(<span)/i,'$3')
  -            .replace(/<\/span>(\s|\n)*<\/?div>(\s)*$/i,'</span>');
  +        //var chunks = myhtml.split(/^\s*<div>/i);
  +        //myhtml = (chunks[1] ? chunks[1]:chunks[0])
  +        var chunks = myhtml.replace(/\s*<(div|p[^>]*)>/i,'');
  +        myhtml = chunks
  +            .replace(/^(.*)<(?:div|p[^>]*)>(\s|\n)*(<span)/i,'$4')
  +            .replace(/<\/span>(\s|\n)*<\/?(?:div|p)>(\s)*$/i,'</span>');
   
           var div=document.createElement('div');
           if (Wikiwyg.is_ie) {
  @@ -1411,6 +1413,12 @@
       }
   }
   
  +proto.format_tt = function(element) {
  +    this.appendOutput('`');
  +    this.walk(element);
  +    this.appendOutput('`');
  +}
  +
   proto.assert_blank_line = function() {
       if (! this.should_whitespace()) return;
       this.chomp_n(); // FIX
  @@ -2326,7 +2334,7 @@
               this.appendOutput("\n");
           else
           if (! str.whitespace && ! str.match(/(\s+|[>\|\"\':])$/)) {
  -            alert(str);
  +            //alert(str);
               this.appendOutput(' ');
           }
       }
  
  
  


wkpark      2008/04/28 00:26:45

  Modified:    local    moniwyg.js
  Log:
  support {{{{color:red}Hello}}} syntax
  IE/Opera fix
  
  Revision  Changes    Path
  1.48      +54 -6     moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.47
  retrieving revision 1.48
  diff -u -r1.47 -r1.48
  --- moniwyg.js	27 Apr 2008 11:44:01 -0000	1.47
  +++ moniwyg.js	27 Apr 2008 15:26:45 -0000	1.48
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.47 2008/04/27 11:44:01 wkpark Exp $
  +// $Id: moniwyg.js,v 1.48 2008/04/27 15:26:45 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -1383,7 +1383,8 @@
       }
       this.walk(element);
       this.chomp();
  -    this.appendOutput("\n");
  +    //this.appendOutput("\n");
  +    this.smart_trailing_space_n(element);
       //this.assert_blank_line();
   }
   
  @@ -1419,6 +1420,38 @@
       this.appendOutput('`');
   }
   
  +proto.format_span = function(element) {
  +    if (this.is_opaque(element)) {
  +        this.handle_opaque_phrase(element);
  +        return;
  +    }
  +
  +    var style = element.getAttribute('style');
  +    if (!style) {
  +        this.pass(element);
  +        return;
  +    }
  +
  +    if (   ! this.element_has_text_content(element)
  +        && ! this.element_has_only_image_content(element)) return;
  +
  +    if (typeof style == 'object') style= style.cssText.toLowerCase();
  +    if (style.match(/font-size|color/i)) {
  +        this.appendOutput('{{{{'+style+'}');
  +        this.walk(element);
  +        this.appendOutput('}}}');
  +        this.smart_trailing_space_n(element);
  +        return;
  +    }
  +    var attributes = [ 'line-through', 'bold', 'italic', 'underline' ];
  +    for (var i = 0; i < attributes.length; i++)
  +        this.check_style_and_maybe_mark_up(style, attributes[i], 1);
  +    this.no_following_whitespace();
  +    this.walk(element);
  +    for (var i = attributes.length; i >= 0; i--)
  +        this.check_style_and_maybe_mark_up(style, attributes[i], 2);
  +}
  +
   proto.assert_blank_line = function() {
       if (! this.should_whitespace()) return;
       this.chomp_n(); // FIX
  @@ -1522,9 +1555,11 @@
               break;
           }
       }
  +
       if (string) {
  -        string = string.replace(/&?[\r\n]+$/, '');
  -        if (string != '') this.appendOutput(string); // MY
  +        var str = string.replace(/&?[\r\n]+/, '');
  +        if (str) this.appendOutput(str);
  +        //if (string != str) this.appendOutput("\n"); // FIXME !!!
       }
   }
   
  @@ -1983,7 +2018,7 @@
                       return node;
                   }
               }
  -            else if (node.data.match(/&lt;object/i) || node.data.match(/wiki:\n{{{#![^ ]+/)) {
  +            else if (node.data.match(/&lt;object/i) || node.data.match(/ wiki:\n\{\{\{#\![^ ]+/)) {
                   var n=node.nextSibling;
                   if (n.tagName != 'IMG') {
                       var n=n.firstChild;
  @@ -2058,7 +2093,8 @@
               }
           }
           else {
  -            this.appendOutput('\n'); // for comments and PIs
  +            if (next.nodeName != 'SPAN')
  +                this.appendOutput('\n'); // for comments and PIs FIXME
           }
       }
       else if (next.nodeType == 3) {
  @@ -2136,6 +2172,18 @@
                       this.appendOutput(str);
                   }
               }
  +            else if (part.nodeValue.match(/^[ ]*$/)) {
  +                this.appendOutput(part.nodeValue);
  +            }
  +            else if (part.nodeValue.match(/[^\n]/)) {
  +                var str = part.nodeValue.replace(/^\n/,'');
  +                if (this.no_collapse_text) {
  +                    this.appendOutput(str);
  +                }
  +                else {
  +                    this.appendOutput(this.collapse(str));
  +                }
  +            }
           }
       }
   }
  
  
  


wkpark      2008/04/28 23:06:30

  Modified:    css      _extra.css
  Log:
  oops! revert css for BBS
  
  Revision  Changes    Path
  1.18      +2 -1      moniwiki/css/_extra.css
  
  Index: _extra.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_extra.css,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- _extra.css	26 Apr 2008 14:34:17 -0000	1.17
  +++ _extra.css	28 Apr 2008 14:06:30 -0000	1.18
  @@ -376,7 +376,8 @@
   }
   
   table.bbs tbody tr:hover {
  -  background:url(../imgs/plugin/BBS/selbg.png) repeat-x;
  +  /* background:url(../imgs/plugin/BBS/titlebg.png) repeat-x; */
  +  background:#f8f8f8;
   }
   
   table.bbs tbody td {
  
  
  


wkpark      2008/04/28 23:16:31

  Added:       imgs/plugin/BBS articlebodybg.png articlefootbg.png
  Log:
  add missing files
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/plugin/BBS/articlebodybg.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/BBS/articlefootbg.png
  
  	<<Binary file>>
  
  


wkpark      2008/04/28 23:21:38

  Modified:    css      _extra.css
  Log:
  rename title bg image
  
  Revision  Changes    Path
  1.19      +1 -1      moniwiki/css/_extra.css
  
  Index: _extra.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_extra.css,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- _extra.css	28 Apr 2008 14:06:30 -0000	1.18
  +++ _extra.css	28 Apr 2008 14:21:38 -0000	1.19
  @@ -399,7 +399,7 @@
     margin-bottom:0.0em;
     font-size:1.2em;
     color:black;
  -  background:url(../imgs/plugin/BBS/articlebg.png) no-repeat;
  +  background:url(../imgs/plugin/BBS/articleheadbg.png) no-repeat;
   }
   
   .bbsArticle .user {
  
  
  


wkpark      2008/04/28 23:22:24

  Added:       imgs/plugin/BBS articleheadbg.png
  Log:
  add a missing img file
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/plugin/BBS/articleheadbg.png
  
  	<<Binary file>>
  
  


wkpark      2008/04/28 23:30:22

  Modified:    imgs/plugin/BBS articleheadbg.png
  Log:
  change the bg image of headings
  
  Revision  Changes    Path
  1.2       +3 -4      moniwiki/imgs/plugin/BBS/articleheadbg.png
  
  	<<Binary file>>
  
  


wkpark      2008/04/30 17:00:46

  Modified:    local    moniwyg.js
  Log:
  fixed section-edit bug
  fixed named internal links
  
  Revision  Changes    Path
  1.49      +34 -2     moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.48
  retrieving revision 1.49
  diff -u -r1.48 -r1.49
  --- moniwyg.js	27 Apr 2008 15:26:45 -0000	1.48
  +++ moniwyg.js	30 Apr 2008 08:00:46 -0000	1.49
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.48 2008/04/27 15:26:45 wkpark Exp $
  +// $Id: moniwyg.js,v 1.49 2008/04/30 08:00:46 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -452,7 +452,8 @@
       }
   
       // save section
  -    var toSend = 'action=' + myaction + '/ajax' +
  +    myaction=myaction.replace(/edit\//,'savepage/');
  +    var toSend = 'action=' + myaction +
       '&savetext=' + encodeURIComponent(wikitext) +
       '&datestamp=' + datestamp;
   
  @@ -1420,6 +1421,37 @@
       this.appendOutput('`');
   }
   
  +proto.make_wikitext_link = function(label, href, element) {
  +    var before = this.config.markupRules.link[1];
  +    var after  = this.config.markupRules.link[2];
  +
  +	// handle external links
  +	if (this.looks_like_a_url(href)) {
  +		before = this.config.markupRules.www[1];
  +		after = this.config.markupRules.www[2];
  +	}
  +	
  +    this.assert_space_or_newline();
  +    if (! href) {
  +        this.appendOutput(label);
  +    }
  +    else if (href == label) {
  +        this.appendOutput(href);
  +    }
  +    else if (this.href_is_wiki_link(href)) {
  +        var title = element.getAttribute('title');
  +        if (title && title != label) {
  +            this.appendOutput(before + ':' + title + ' ' + label + after);
  +        } else if (this.camel_case_link(label))
  +            this.appendOutput(label);
  +        else
  +            this.appendOutput(before + label + after);
  +    }
  +    else {
  +        this.appendOutput(before + href + ' ' + label + after);
  +    }
  +}
  +
   proto.format_span = function(element) {
       if (this.is_opaque(element)) {
           this.handle_opaque_phrase(element);
  
  
  


wkpark      2008/04/30 17:04:09

  Modified:    .        wiki.php
  Log:
  fixed WikiWyg bug with named internal links
  fixed regex rule for interwiki links (do not include the last ",.)" punct marks.)
  
  Revision  Changes    Path
  1.395     +15 -10    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.394
  retrieving revision 1.395
  diff -u -r1.394 -r1.395
  --- wiki.php	27 Apr 2008 09:34:34 -0000	1.394
  +++ wiki.php	30 Apr 2008 08:04:08 -0000	1.395
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.394 2008/04/27 09:34:34 wkpark Exp $
  +// $Id: wiki.php,v 1.395 2008/04/30 08:04:08 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.394 $',1,-1);
  +$_revision = substr('$Revision: 1.395 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -1881,7 +1881,7 @@
       $url="wiki|http|https|ftp|nntp|news|irc|telnet|mailto|file|attachment";
       if ($DBInfo->url_schemas) $url.='|'.$DBInfo->url_schemas;
       $this->urls=$url;
  -    $urlrule="((?:$url):\"[^\"]+\"[^\s$punct]*|(?:$url):([^\s$punct]|(\.?[^\s$punct]))+)";
  +    $urlrule="((?:$url):\"[^\"]+\"[^\s$punct]*|(?:$url):([^\s$punct]|(\.?[^\s$punct]))+(?<![,\.\):;\"\'>]))";
       #$urlrule="((?:$url):(\.?[^\s$punct])+)";
       #$urlrule="((?:$url):[^\s$punct]+(\.?[^\s$punct]+)+\s?)";
       # solw slow slow
  @@ -1894,7 +1894,7 @@
       #"\b(".$DBInfo->interwikirule."):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
       #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
       #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+[^\(\)<>\s\',\.:\?\!]+)|".
  -    "(\b|\^?)([A-Z][a-zA-Z]+):([^:\(\)<>\s\']?[^\(\)<>\s\'\",:\?\!\010\006]*(\s(?![\x21-\x7e]))?)";
  +    "(\b|\^?)([A-Z][a-zA-Z]+):([^:\(\)<>\s\']?[^\s<\'\",:\?\!\010\006]*(\s(?![\x21-\x7e]))?(?<![,\.\)>]))";
       #"(\b|\^?)([A-Z][a-zA-Z]+):([^:\(\)<>\s\']?[^<>\s\'\",:\?\!\010\006]*(\s(?![\x21-\x7e]))?)";
       # for PR #301713
   
  @@ -2187,6 +2187,8 @@
         }
         if ($url[0]=='#' and ($p=strpos($url,' '))) {
           $col=strtok($url,' '); $url=strtok('');
  +        #if (!preg_match('/^#[0-9a-f]{6}$/',$col)) $col=substr($col,1);
  +        #return "<span style='color:$col'>$url</span>";
           if (preg_match('/^#[0-9a-f]{6}$/',$col))
             return "<span style='color:$col'>$url</span>";
           $url=$col.' '.$url;
  @@ -2533,9 +2535,10 @@
         switch($idx) {
           case 0:
             #return "<a class='nonexistent' href='$url'>?</a>$word";
  -          return call_user_func(array(&$this,$nonexists),$word,$url);
  +          return call_user_func(array(&$this,$nonexists),$word,$url,$page);
           case -1:
  -          return "<a href='$url' $attr>$word</a>";
  +          if ($page != $word) $title="title=\"$page\" ";
  +          return "<a href='$url' $title$attr>$word</a>";
           case -2:
             return "<a href='$url' $attr>$word</a>".
               "<tt class='sister'><a href='$url'>&#x203a;</a></tt>";
  @@ -2549,7 +2552,8 @@
         }
       } else if ($DBInfo->hasPage($page)) {
         $this->pagelinks[$page]=-1;
  -      return "<a href='$url' $attr>$word</a>";
  +      if ($page != $word) $title="title=\"$page\" ";
  +      return "<a href='$url' $title$attr>$word</a>";
       } else {
         if ($gpage and $DBInfo->hasPage($gpage)) {
           $this->pagelinks[$page]=-3;
  @@ -2590,7 +2594,7 @@
         }
         $this->pagelinks[$page]=0;
         #return "<a class='nonexistent' href='$url'>?</a>$word";
  -      return call_user_func(array(&$this,$nonexists),$word,$url);
  +      return call_user_func(array(&$this,$nonexists),$word,$url,$page);
       }
     }
   
  @@ -2602,8 +2606,9 @@
       return "$word";
     }
   
  -  function nonexists_always($word,$url) {
  -    return "<a href='$url'>$word</a>";
  +  function nonexists_always($word,$url,$page) {
  +    if ($page != $word) $title="title=\"$page\" ";
  +    return "<a href='$url' $title>$word</a>";
     }
   
     function nonexists_forcelink($word,$url) {
  
  
  


wkpark      2008/05/01 11:31:59

  Modified:    plugin/processor vim.php
  Log:
  fix for 2html.vim bug with vim 7.x
  
  Revision  Changes    Path
  1.37      +5 -12     moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- vim.php	22 Oct 2007 02:55:40 -0000	1.36
  +++ vim.php	1 May 2008 02:31:59 -0000	1.37
  @@ -10,7 +10,7 @@
   // Win32 note:
   //  add $path="/bin;/Program Files/Vim/VimXX"; in the config.php
   //
  -// $Id: vim.php,v 1.36 2007/10/22 02:55:40 wkpark Exp $
  +// $Id: vim.php,v 1.37 2008/05/01 02:31:59 wkpark Exp $
   
   function processor_vim($formatter,$value,$options) {
     global $DBInfo;
  @@ -87,25 +87,18 @@
       return '<div>'.$script."<pre class='wiki' id='PRE-$uniq'>\n$src</pre></div>\n";
     }
   
  -  if(getenv("OS")=="Windows_NT") {
  +  $tohtml= $DBInfo->vim_2html ? $DBInfo->vim_2html:
       $tohtml='$VIMRUNTIME/syntax/2html.vim';
  +  #$tohtml= realpath($DBInfo->data_dir).'/2html.vim';
  +  if(getenv("OS")=="Windows_NT") {
       $vim="gvim"; # Win32
       $fout=tempnam($vartmp_dir,"OUT");
     } else {
  -    $tohtml='\$VIMRUNTIME/syntax/2html.vim';
  +    $tohtml='\\'.$tohtml;
       $vim="vim";
       $fout="/dev/stdout";
     }  
   
  -# simple sample
  -#$type='c';
  -#$src='
  -#void main() {
  -#printf("Hello World!");
  -#
  -#}
  -#';
  -
     $tmpf=tempnam($vartmp_dir,"FOO");
     $fp= fopen($tmpf, "w");
     fwrite($fp, $src);
  
  
  


wkpark      2008/05/01 11:57:24

  Modified:    plugin/processor vim.php
  Log:
  fixed caching bug with the same content but different types
  
  Revision  Changes    Path
  1.38      +2 -2      moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- vim.php	1 May 2008 02:31:59 -0000	1.37
  +++ vim.php	1 May 2008 02:57:23 -0000	1.38
  @@ -10,7 +10,7 @@
   // Win32 note:
   //  add $path="/bin;/Program Files/Vim/VimXX"; in the config.php
   //
  -// $Id: vim.php,v 1.37 2008/05/01 02:31:59 wkpark Exp $
  +// $Id: vim.php,v 1.38 2008/05/01 02:57:23 wkpark Exp $
   
   function processor_vim($formatter,$value,$options) {
     global $DBInfo;
  @@ -42,7 +42,7 @@
     if ($DBInfo->vim_options)
       $option.=$DBInfo->vim_options.' ';
   
  -  $uniq=md5($option.$src);
  +  $uniq=md5($option.$type.$src);
   
     if ($DBInfo->cache_public_dir) {
       $fc=new Cache_text('vim',2,'html',$DBInfo->cache_public_dir);
  
  
  


wkpark      2008/05/01 18:27:26

  Modified:    plugin   msgfmt.php
  Log:
  fixed po processor
  
  Revision  Changes    Path
  1.3       +8 -7      moniwiki/plugin/msgfmt.php
  
  Index: msgfmt.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/msgfmt.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- msgfmt.php	19 Jan 2006 08:28:03 -0000	1.2
  +++ msgfmt.php	1 May 2008 09:27:26 -0000	1.3
  @@ -3,9 +3,9 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a msgfmt plugin for the MoniWiki
   //
  -// $Id: msgfmt.php,v 1.2 2006/01/19 08:28:03 wkpark Exp $
  +// $Id: msgfmt.php,v 1.3 2008/05/01 09:27:26 wkpark Exp $
   
  -function _pocheck($po,$showpo=0) {
  +function _pocheck($po) {
       global $DBInfo;
       include_once 'lib/Gettext/PO.php';
   
  @@ -27,10 +27,8 @@
       }
       unset($myPO, $myMO);
       chmod($tmp,0644);
  -    unlink($tmp);
  +    //unlink($tmp);
   
  -    print "OK\n";
  -    if ($showpo) print $po;
       return true;
   }
   
  @@ -39,7 +37,7 @@
   
       $po='';
       $domain='PoHello';
  -    if ($options['msgid'] and $options['msgstr']) {
  +    if (isset($options['msgid']) or isset($options['msgstr'])) {
           # just check a single msgstr
           header("Content-type: text/plain");
           $date=date('Y-m-d h:i+0900');
  @@ -65,7 +63,10 @@
           $msg=_stripslashes($options['msgstr']);
           $po.= 'msgstr '.$msg."\n";
           $po.= "\n\n";
  -        _pocheck($po,1);
  +        $ret=_pocheck($po,1);
  +        if ($ret == true) {
  +            print "true\n".$po;
  +        }
           return;
       }
   
  
  
  


wkpark      2008/05/01 18:27:27

  Modified:    plugin/processor po.php
  Log:
  fixed po processor
  
  Revision  Changes    Path
  1.3       +10 -8     moniwiki/plugin/processor/po.php
  
  Index: po.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/po.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- po.php	19 Jan 2006 08:28:03 -0000	1.2
  +++ po.php	1 May 2008 09:27:26 -0000	1.3
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a po processor for the MoniWiki
   //
  -// $Id: po.php,v 1.2 2006/01/19 08:28:03 wkpark Exp $
  +// $Id: po.php,v 1.3 2008/05/01 09:27:26 wkpark Exp $
   
   function processor_po($formatter,$value='') {
       if ($value[0]=='#' and $value[1]=='!')
  @@ -19,7 +19,7 @@
       $msgid=array();
   
       $js=<<<JS
  -<script language="javascript">
  +<script type="text/javascript">
   /*<![CDATA[*/
   function checkmsg(obj) {
       var tok=obj.name.split("-");
  @@ -27,14 +27,16 @@
   
       var msgid=document.getElementsByName('msgid' + '-' + id)[0];
       var msgstr=document.getElementsByName('msgstr' + '-' + id)[0];
  -    //alert(msgid.value + "\\n" + msgstr.value);
   
  -    var url=self.location;
  -    url = url + '?action=msgfmt&msgid=' +
  -        msgid.value + '&msgstr=' + msgstr.value;
  +    var postdata = 'action=msgfmt/ajax&msgid=' +
  +        encodeURIComponent(msgid.value) + '&msgstr=' + encodeURIComponent(msgstr.value);
   
  -    var msg=HTTPGet(url);
  -    alert ('*** AJAX msgfmt checker ***\\n' + msg);
  +    var msg= HTTPPost(self.location, postdata);
  +    if (msg.substr(0,4) == 'true') {
  +        alert('OK\\n' + msg);
  +    } else {
  +        alert ('*** Error: AJAX msgfmt checker ***\\n' + msg);
  +    }
   }
   /*]]>*/
   </script>
  
  
  


wkpark      2008/05/01 19:26:51

  Modified:    plugin/processor vim.php
  Log:
  auto detect bgcolor/fgcolor of the html output
  
  Revision  Changes    Path
  1.39      +10 -2     moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- vim.php	1 May 2008 02:57:23 -0000	1.38
  +++ vim.php	1 May 2008 10:26:51 -0000	1.39
  @@ -10,7 +10,7 @@
   // Win32 note:
   //  add $path="/bin;/Program Files/Vim/VimXX"; in the config.php
   //
  -// $Id: vim.php,v 1.38 2008/05/01 02:57:23 wkpark Exp $
  +// $Id: vim.php,v 1.39 2008/05/01 10:26:51 wkpark Exp $
   
   function processor_vim($formatter,$value,$options) {
     global $DBInfo;
  @@ -129,6 +129,14 @@
     $out=str_replace("\r\n","\n",$out); # for Win32
     #$out=preg_replace("/(^(\s|\S)*<pre>\n|\n<\/pre>(\s|\S)*$)/","",$out); # XXX segfault sometime
   
  +  preg_match("/<body\s+bgcolor=(\"|')([^\\1]+)\\1\s+text=\\1([^\\1]+)\\1/U",
  +    $out,$match);
  +  $bgcolor='#000000';
  +  $fgcolor='#c0c0c0';
  +  if ($match) {
  +    $bgcolor=$match[2];
  +    $fgcolor=$match[3];
  +  }
     $myspan='pre';
     $fpos=strpos($out,'<pre>');
     if ($fpos === false) {
  @@ -141,7 +149,7 @@
       $tpos=strpos($out,'</pre>');
       $out=substr($out,$fpos+6,$tpos-$fpos-7);
     }
  -  $stag="<$myspan class='wikiSyntax' id='PRE-$uniq' style='font-family:FixedSys,monospace;color:#c0c0c0;background-color:black'>\n";
  +  $stag="<$myspan class='wikiSyntax' id='PRE-$uniq' style='font-family:FixedSys,monospace;color:$fgcolor;background-color:$bgcolor'>\n";
     $etag="</$myspan>\n";
   
   
  
  
  


wkpark      2008/05/01 19:30:23

  Modified:    theme/azblue/css default.css
  Log:
  fixed wikiSyntax class
  
  Revision  Changes    Path
  1.16      +1 -5      moniwiki/theme/azblue/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/azblue/css/default.css,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- default.css	19 Oct 2007 12:55:56 -0000	1.15
  +++ default.css	1 May 2008 10:30:22 -0000	1.16
  @@ -239,15 +239,11 @@
     background-color: #E9ECEF;
   }
   
  -pre.wikiSyntax {
  +.wikiSyntax {
     font-family:"Bitstream Vera Sans Mono", Courier, GulimChe, monospace !important;
  -  background-color: #f5f5f5 !important;
  -  color: black !important;
     border:1px solid #cccc99;
     border-left:10px solid #cccc99;
     padding:10px;
  -  white-space:pre;
  -  white-space: -moz-pre-wrap;
   }
   
   table.wiki {
  
  
  


wkpark      2008/05/01 20:40:14

  Modified:    plugin   UploadFile.php
  Log:
  more flexible uploading
  - $upload_master can upload not protected files
  - bug fixed $use_type check.
  - check *safe* extensions and do not append any extra ext for mod_mime.
  
  Revision  Changes    Path
  1.38      +36 -15    moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- UploadFile.php	21 Nov 2007 16:14:18 -0000	1.37
  +++ UploadFile.php	1 May 2008 11:40:14 -0000	1.38
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.37 2007/11/21 16:14:18 wkpark Exp $
  +// $Id: UploadFile.php,v 1.38 2008/05/01 11:40:14 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -98,7 +98,21 @@
     $log_entry='';
   
     $protected_exts=$DBInfo->pds_protected ? $DBInfo->pds_protected :"pl|cgi|php";
  +  $safe_exts=$DBInfo->pds_safe ? $DBInfo->pds_safe :"txt|gif|png|jpg|jpeg";
     $protected=explode('|',$protected_exts);
  +  $safe=explode('|',$safe_exts);
  +
  +  # upload file protection
  +  if ($DBInfo->pds_allowed)
  +    $pds_exts=$DBInfo->pds_allowed;
  +  else
  +    $pds_exts="png|jpg|jpeg|gif|mp3|zip|tgz|gz|txt|css|exe|pdf|hwp";
  +
  +  if (isset($DBInfo->upload_masters) and in_array($options['id'],$DBInfo->upload_masters)) {
  +    // XXX WARN!!
  +    $pds_exts='.*';
  +  }
  +  $safe_types=array('text','media','image','audio');
   
     for ($j=0;$j<$count;$j++) {
   
  @@ -117,26 +131,33 @@
       $no_ext=1;
       $fname[1]=$upfilename;
       $fname[2]='';
  -    // XXX
  -    if ($DBInfo->use_filetype) $type=$files['upfile']['type'] ? $files['upfile']['type']:'text/plain';
  -    else $fname[2]='txt'; // XXX
     }
  -
  -  # upload file protection
  -  if ($DBInfo->pds_allowed)
  -     $pds_exts=$DBInfo->pds_allowed;
  -  else
  -     $pds_exts="png|jpg|jpeg|gif|mp3|zip|tgz|gz|txt|css|exe|pdf|hwp";
  -  if (!$no_ext and !preg_match("/(".$pds_exts.")$/i",$fname[2])) {
  -     $msg.=sprintf(_("%s is not allowed to upload"),$upfilename)."<br/>\n";
  -     continue;
  +  // XXX
  +  if ($DBInfo->use_filetype) $type=$files['upfile']['type'][$j] ? $files['upfile']['type'][$j]:'text/plain';
  +  else $fname[2]=$fname[2] ? $fname[2]:'txt';
  +
  +  if ($DBInfo->use_filetype and !empty($type)) {
  +    list($mtype,$xtype)=explode('/',$type);
  +    if (empty($mtype) or !in_array($mtype,$safe_types)) {
  +      $msg.=sprintf(_("%s is not allowed type upload"),$type)."<br/>\n";
  +      continue;
  +    }
  +    $upfilename=$fname[1].'.'.$fname[2];
  +  } else if (!$no_ext and !preg_match("/(".$pds_exts.")$/i",$fname[2])) {
  +    $msg.=sprintf(_("%s is not allowed to upload"),$upfilename)."<br/>\n";
  +    continue;
  +  } else if ($fname[2] and in_array(strtolower($fname[2]),$safe)) {
  +    $upfilename=$fname[1].'.'.$fname[2];
     } else {
       # check extra extentions for the mod_mime
       $exts=explode('.',$fname[1]);
       $ok=0;
       for ($i=sizeof($exts);$i>0;$i--) {
  -      if (in_array(strtolower($exts[$i]),$protected)) {
  -        $exts[$i].='.txt';
  +      if (in_array(strtolower($exts[$i]),$safe)) {
  +        $ok=1;
  +        break;
  +      } else if (in_array(strtolower($exts[$i]),$protected)) {
  +        $exts[$i].='.txt'; # extra check for mod_mime: append 'txt' extension: my.pl.hwp => my.pl.txt.hwp
           $ok=1;
           break;
         }
  
  
  


wkpark      2008/05/01 21:54:31

  Modified:    plugin   UploadFile.php
  Log:
  fix last changes
  
  Revision  Changes    Path
  1.39      +40 -25    moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- UploadFile.php	1 May 2008 11:40:14 -0000	1.38
  +++ UploadFile.php	1 May 2008 12:54:30 -0000	1.39
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.38 2008/05/01 11:40:14 wkpark Exp $
  +// $Id: UploadFile.php,v 1.39 2008/05/01 12:54:30 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -134,37 +134,52 @@
     }
     // XXX
     if ($DBInfo->use_filetype) $type=$files['upfile']['type'][$j] ? $files['upfile']['type'][$j]:'text/plain';
  -  else $fname[2]=$fname[2] ? $fname[2]:'txt';
  +  else {
  +    $fname[2]=$fname[2] ? $fname[2]:'txt';
  +    $no_ext=0;
  +  }
   
  +  $allowed=0;
     if ($DBInfo->use_filetype and !empty($type)) {
       list($mtype,$xtype)=explode('/',$type);
  -    if (empty($mtype) or !in_array($mtype,$safe_types)) {
  -      $msg.=sprintf(_("%s is not allowed type upload"),$type)."<br/>\n";
  +    if (!empty($mtype) and in_array($mtype,$safe_types)) {
  +      $allowed=1;
  +    } else if ($no_ext) {
  +      $msg.=sprintf(_("The %s type of %s is not allowed to upload"),$type,$upfilename)."<br/>\n";
         continue;
       }
  -    $upfilename=$fname[1].'.'.$fname[2];
  -  } else if (!$no_ext and !preg_match("/(".$pds_exts.")$/i",$fname[2])) {
  -    $msg.=sprintf(_("%s is not allowed to upload"),$upfilename)."<br/>\n";
  -    continue;
  -  } else if ($fname[2] and in_array(strtolower($fname[2]),$safe)) {
  -    $upfilename=$fname[1].'.'.$fname[2];
  +  }
  +
  +  if ($allowed) {
  +    array_shift($fname);
  +    $upfilename=implode('.',$fname);
     } else {
  -    # check extra extentions for the mod_mime
  -    $exts=explode('.',$fname[1]);
  -    $ok=0;
  -    for ($i=sizeof($exts);$i>0;$i--) {
  -      if (in_array(strtolower($exts[$i]),$safe)) {
  -        $ok=1;
  -        break;
  -      } else if (in_array(strtolower($exts[$i]),$protected)) {
  -        $exts[$i].='.txt'; # extra check for mod_mime: append 'txt' extension: my.pl.hwp => my.pl.txt.hwp
  -        $ok=1;
  -        break;
  -      }
  -    }
  -    if ($ok) {
  -      $fname[1]=implode('.',$exts);
  +    if (!$no_ext and !preg_match("/(".$pds_exts.")$/i",$fname[2])) {
  +      if ($DBInfo->use_filetype and !empty($type))
  +        $msg.=sprintf(_("The %s type of %s is not allowed to upload"),$type,$upfilename)."<br/>\n";
  +      else
  +        $msg.=sprintf(_("%s is not allowed to upload"),$upfilename)."<br/>\n";
  +      continue;
  +    } else if ($fname[2] and in_array(strtolower($fname[2]),$safe)) {
         $upfilename=$fname[1].'.'.$fname[2];
  +    } else {
  +      # check extra extentions for the mod_mime
  +      $exts=explode('.',$fname[1]);
  +      $ok=0;
  +      for ($i=sizeof($exts);$i>0;$i--) {
  +        if (in_array(strtolower($exts[$i]),$safe)) {
  +          $ok=1;
  +          break;
  +        } else if (in_array(strtolower($exts[$i]),$protected)) {
  +          $exts[$i].='.txt'; # extra check for mod_mime: append 'txt' extension: my.pl.hwp => my.pl.txt.hwp
  +          $ok=1;
  +          break;
  +        }
  +      }
  +      if ($ok) {
  +        $fname[1]=implode('.',$exts);
  +        $upfilename=$fname[1].'.'.$fname[2];
  +      }
       }
     }
   
  
  
  


wkpark      2008/05/04 19:20:24

  Modified:    lib      indexer.ko.php
  Log:
  minor update
  
  Revision  Changes    Path
  1.4       +114 -18   moniwiki/lib/indexer.ko.php
  
  Index: indexer.ko.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/indexer.ko.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- indexer.ko.php	21 Apr 2008 02:45:29 -0000	1.3
  +++ indexer.ko.php	4 May 2008 10:20:24 -0000	1.4
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a KoreanIndexer class for the MoniWiki
   //
  -// $Id: indexer.ko.php,v 1.3 2008/04/21 02:45:29 wkpark Exp $
  +// $Id: indexer.ko.php,v 1.4 2008/05/04 10:20:24 wkpark Exp $
   //
   // EXPERIMENTAL !!
   
  @@ -195,14 +195,19 @@
               $sj= sizeof($j);
   
               if ($sj == 3 and $j[2] == 0x11bb /* ㅆ */ ) {
  -                if (
  -                #if (in_array($j[0], array(0x1100,0x110b,0x110c) ) and
  -                    in_array($j[1],array(0x1165, 0x1166,0x1167)) /* ㅓ,ㅔ,ㅕ */ ) {
  -                    if (in_array($j[0], array(0x1100,0x110b,0x110c)) ) {
  -                        # 어 여 저 져 게
  +                // 랐-다, 었-다, 겠-다, 였-다
  +                if (in_array($j[1],array(0x1161,0x1165,0x1166,0x1167)) /* ㅏ,ㅓ,ㅔ,ㅕ */ ) {
  +                    if ($j[0] == 0x1105 and in_array($j[1],array(0x1161,0x1165,0x1167)) ) {
  +                        // 랐,렀,렸
  +                        // 갈렸-다
  +
  +
  +
  +                    } else if (in_array($j[0], array(0x1100,0x110b,0x110c)) ) {
  +                        # 겠,았
                           array_unshift($uend,$ch);
                           unset($ch);
  -                    } else if ($j[1] == 0x1167
  +                    } else if ($j[1] == 0x1167 /* ㅕ */
                           and in_array($j[0],array(0x1101,0x1102,0x1103,0x1105,0x1106,0x1107,
                                                    0x1109,0x110c,0x110e,0x110f,0x1110,0x1111,0x1112)) ) {
                           # 여 변환
  @@ -214,7 +219,7 @@
                           /* 혔 -> 히+었, 폈 -> 피+었 */
                           $j[1]=0x1175;
   
  -                        $syll=jamo_to_syllable(array($j[0],$j[1])); /* 쓰 */
  +                        $syll=jamo_to_syllable(array($j[0],$j[1]));
                           $ch=$syll[0];
                       } else if (in_array($j[0],array(0x1101,0x1104,0x110a,0x1111,0x1112)) ) {
                           # 우 불규칙
  @@ -238,7 +243,8 @@
                   } else { /* ㅆ를 떼어낸다. */
                       #print '~~'.$stem.'~~';
                       $syll=jamo_to_syllable(array($j[0],$j[1]));
  -                    array_unshift($uend,hangul_jongseong_to_cjamo($j[2]));
  +                    array_unshift($uend,$j[2]);
  +                    #array_unshift($uend,hangul_jongseong_to_cjamo($j[2]));
                       $ch=$syll[0];
                       unset($j[2]);
                       #unset($ch);
  @@ -249,22 +255,62 @@
                   }
                   $ed= $uend[0];
                   $ej= hangul_to_jamo($ed);
  +            } else if (in_array($j[2],array(0x11ab, 0x11af,0x11b8)) /* ㄴ,ㄹ,ㅂ */ ) {
  +                // 합-시다   갑-시다   갈-래
  +                // 하-ㅂ시다 가-ㅂ시다 가-ㄹ래
  +                //
  +                if ($j[2]== 0x11af and $ej[0]==0x1105) {
  +                //if ($j[1] == 0x1173 and $j[2]== 0x11af and $ej[0]==0x1105) {
  +                    // 르 불규칙
  +                    // 흘-러:흐르+러
  +                    unset($j[2]);
  +                    $syll=jamo_to_syllable($j);
  +                    array_push($ustem,$syll[0]); /* 흐 */
  +                    $j[0]=$ej[0];
  +                    $j[1]=0x1173;
  +                    $syll=jamo_to_syllable($j); /* 르 */
  +                    $ch=$syll[0];
  +                } else {
  +                    array_unshift($uend,$j[2]);
  +                    $syll=jamo_to_syllable(array($j[0],$j[1]));
  +                    $ch=$syll[0];
  +                    $ed=$j[2];
  +                    unset($j[2]);
  +                }
               }
               
  -            // ㄷ 불규칙 들어 -> 듣다
  +            // ㄷ 불규칙
  +            // 들-어 -> 듣-다
               $sj=sizeof($j);
               if ($sj == 3 and $j[2] == 0x11af and in_array($ej[0],array(0x110b,0x1105) /* ㅇ,ㄹ*/)) {
                   while (in_array($ej[1],array(0x1161,0x1165,0x1173)) /* ㅏㅓㅡ */ ) {
                       // 아어으
  -                    // 러러르
  -                    if ($ej[1]==0x1173 and sizeof($ej)==3 and !in_array($ej[2],0x11ab,0x11af)) break;
  -                    // 은을
  +                    // 라러르
  +                    $se=sizeof($ej);
  +                    if ($se==3) {
  +                        if ($ej[1]==0x1173 and !in_array($ej[2],0x11ab,0x11af)) break;
  +                        // 은을
  +                    } else {
  +                        if ($j[2]==0x11af and sizeof($ej)==2 and $ej[0] == 0x1105) break;
  +                    }
                       $syll=jamo_to_syllable(array($j[0],$j[1],0x11ae));
                       $ch=$syll[0];
                       break;
                   }
               }
   
  +            // ㅅ 불규칙
  +            // * 지-어:짓-어
  +            // * 이-어:잇-어
  +            if (sizeof($ej) ==2) {
  +                if ($ej[0]==0x110b /* ㅓ */) {
  +                    $j[2]=0x11ba;
  +                    $syll=jamo_to_syllable($j); /* +ㅅ */
  +                    $ch=$syll[0];
  +                    $sj=3;
  +                }
  +            }
  +
               if ($sj == 2) {
                   if (in_array($j[0],array(0x110c) /* ㅈ */ )
                       and in_array($j[1],array(0x116e,0x1175)) /* ㅜ,ㅣ */ ) {
  @@ -287,9 +333,53 @@
                       $ch= array_pop($ustem);
                       $j= hangul_to_jamo($ch);
                   }
  -                if (in_array($j[0],array(0x1105) /* ㄹ */ )
  -                    and in_array($j[1],array(0x1161,0x1165)) /* 라,러 */ ) {
   
  +                // 음운 축약
  +                if (in_array($j[0],array(0x1105, 0x1112)) and $j[1]==0x1162) {
  +                    // ㅎ 불규칙(어미) 파랗+아서 -> 파라+아서 -> 파래서
  +                    /* 파래-서 -> 파라-아서 */
  +                    $j[1]=0x1161;
  +                    $syll=jamo_to_syllable($j); /* 래 -> 라+ 아 */
  +                    $ch=$syll[0];
  +                    $syll=jamo_to_syllable(array(0x110b,0x1161)); /* 아 */
  +                    $ed=$syll[0];
  +                    array_unshift($uend,$ed);
  +                    $ej[0]=0x110b;
  +                    $ej[0]=0x1161;
  +                } else if ($j[0]==0x1112 /* ㅎ */ and in_array($j[1],array(0x1162)) /* ㅐ */ ) {
  +                    // 해-서 = 하-여서
  +                    $j[1]=0x1161;
  +                    $syll=jamo_to_syllable($j); /* 해 -> 하 + 여 */
  +                    $ch=$syll[0];
  +                    $syll=jamo_to_syllable(array(0x110b,0x1167)); /* 여 */
  +                    $ed=$syll[0];
  +                    array_unshift($uend,$ed);
  +                    $ej[0]=0x110b;
  +                    $ej[0]=0x1167;
  +                } else if (in_array($j[0],array(0x1105,0x1109)) /* ㄹ,ㅅ */
  +                    and in_array($j[1],array(0x1167)) /* ㅕ */ ) {
  +                        // 하셔-서 = 하시-어서
  +                        // 가려-서 = 가리-어서
  +                    $j[1]=0x1175; /* ㅣ */
  +                    $syll=jamo_to_syllable($j); /* ㅕ -> 이-어 */
  +                    $ch=$syll[0];
  +                    $syll=jamo_to_syllable(array(0x110b,0x1165)); /* 어 */
  +                    $ed=$syll[0];
  +                    array_unshift($uend,$ed);
  +                    $ej[0]=0x110b;
  +                    $ej[0]=0x1165;
  +                }
  +
  +                if ($j[0]== 0x1109 and $j[1]==0x1175) { /* 시: 존칭처리 */
  +                    array_unshift($uend,$ch);
  +                    $ej= $j;
  +                    $ch= array_pop($ustem);
  +                    $j= hangul_to_jamo($ch);
  +                }
  +
  +                // ㅎ 불규칙
  +                if (in_array($j[0],array(0x1105,0x1106) /* ㄹ,ㅁ */ )
  +                    and in_array($j[1],array(0x1161,0x1165)) /* 라,러 */ ) {
                       $syll=jamo_to_syllable(array($j[0],$j[1],0x11c2)); /* 랗,렇 */
                       array_push($ustem,$syll[0]);
                       unset($ch);
  @@ -299,13 +389,19 @@
   
               while ($sj == 2 and $j[0] == 0x110b
                   and in_array($j[1],array(0x116a,0x116e,0x116f)) and sizeof($ustem)>=1 ) {
  +                    // XXX
  +                // 그리워: 그리우+어 -> 그립+워
                   # /* 와 우 워 */
                   $ch1=array_pop($ustem);
                   $jamo=hangul_to_jamo($ch1);
                   if (sizeof($jamo)==2) {
  -                    $syll=jamo_to_syllable(array($jamo[0],$jamo[1],0x11b8));
  -                    array_push($ustem,$syll[0]);
  -                    /* add ㅂ */
  +                    if ($jamo[1] != 0x1175) {
  +                        $syll=jamo_to_syllable(array($jamo[0],$jamo[1],0x11b8));
  +                        array_push($ustem,$syll[0]);
  +                        /* add ㅂ */
  +                    } else {
  +                        array_push($ustem,$ch1);
  +                    }
                       array_unshift($uend,$ch);
                       unset($ch);
                   } else {
  
  
  


wkpark      2008/05/04 19:52:50

  Added:       lib      dict.text.php
  Log:
  add Text based Dict module
  
  Revision  Changes    Path
  1.1                  moniwiki/lib/dict.text.php
  
  Index: dict.text.php
  ===================================================================
  <?php
  // Copyright 2008 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a simple textfile dictionary module for the MoniWiki
  //
  // Author: Won-Kyu Park <wkpark@kldp.org>
  // Date: 2008-05-03
  // Name: TextDictModule
  // Description: A Simple Text-based Dictionary Module
  // URL: MoniWiki:TextDictModule etc.
  // Version: $Revision: 1.1 $
  // License: GPL
  //
  // $Id: dict.text.php,v 1.1 2008/05/04 10:52:50 wkpark Exp $
  //
  
  function _fuzzy_bsearch_file($fp, $key, $seek, $fuzzyoffset=0, $klen=0,$fz=0,$encoding='UTF-8') {
      # adjustable parameters
      $_fuzzy_factor = 0.65; # mid parameter: in case of binary-search: 0.5
      $_chunk_size = 40; # average strlen parameter of lines.
      $_howmany = 20; # this is not exact the bsearch then limit the search counter.
      $_debug = 1; # show debug info or not
  
      if (empty($key)) return null;
      if ($fz == 0) return null;
      if ($klen == 0) $klen = mb_strlen($key,$encoding);
  
      $ki=0;
      $pkey=mb_substr($key,0,$klen,$encoding);
  
      $offset = $fuzzyoffset;
      $myseek = $seek;
  
      $upper = $fz;
      $lower = 0;
  
      $f_offset = $min_offset = abs($offset);
  
      $scount = 0;
      while($scount < $_howmany) {
          $scount++;
  
          # check boundary
          $myseek += $offset;
          $myseek = $myseek > $fz ? $fz:($myseek < 0 ? 0:$myseek);
          fseek($fp,$myseek);
  
          if ($rlen > 1024) { $rlen=1024;}
  
          $ll=fgets($fp,1024);
          $l=fgets($fp,1024);
  
          $mykey= strtok($l,' \t\n,:');
          $llen= mb_strlen($mykey,$encoding);
  
          $lz=strlen($l.$ll);
  
          $myseek+=$lz;
  
          if ($llen < $ki) {
              if ($match) {
                  if ($_debug) print '**--<br />';
                  $lower = $myseek - strlen($l);
                  break;
              }
              continue;
          }
  
          $len = $llen >= $klen ? $klen:$llen;
          $pmykey=mb_substr($mykey,0,$len,$encoding);
  
          $test= strcasecmp($pkey,$pmykey);
          if ($test == 0) {
              $test = 1;
              // very similar pattern can use smaller factor
              $_fuzzy_factor=0.5*0.8/$klen;
              if ($klen <= $llen) $test = -1;
          }
  
          if ($test > 0) {
              //print "&gt;".$l;
              $sign = 1;
              $lower = $myseek - strlen($l);
          } else {
              //print "&lt;".$l;
              $sign = -1;
              $upper = $myseek;
          }
  
          $n_offset = intval(($upper - $lower) * $_fuzzy_factor);
          $f_offset = min($n_offset,$f_offset);
  
          if ($_debug > 50) print ' * '.($sign*$f_offset)."<br />\n";
          if ($f_offset > $min_offset * 1.2) break;
          $min_offset = min($min_offset, $f_offset);
          if ($f_offset < $_chunk_size) $f_offset = $_chunk_size;
  
          $offset = $sign * $f_offset;
      }
      if ($_debug) print "key=".$key.'/seek='.$lower.'/offset='.($upper - $lower).'<br />';
      fseek($fp,$lower);
      if ($_debug) print "<pre>==== chunk ====\n".fread($fp,$upper - $lower).'</pre>';
      return array($l,$lower,$upper,$scount);
  }
  
  function _file_match($fp,$key,$lower,$upper,$fsize,$klen=1,$match_prefix=true,$encoding='UTF-8') {
      static $cseek=0;
      $_debug=1;
  
      $count=0;
  
      if ($klen == 0)
          $klen = mb_strlen($key,$encoding);
  
      if ($klen == 1) $match_prefix=false;
  
      if (empty($key)) return '';
      #print $klen.':'.$lower.'/'.$upper.'<br />';
      //if ($lower > $upper) print 'bbbbbboooo';
  
      $ki=0;
      $ckey=mb_substr($key,$ki,1,$encoding);
      $pkey='';
      $pmykey=null;
  
      $buf='';
      $l='';
      $seek=$lower;
      fseek($fp,$seek);
      $match=0;
      $n=$nn=0;
      while(($seek < $upper or $match) and !feof($fp) and $ki <= $klen) {
          $n++;
          $last = $l;
          $l = fgets($fp,1024);
          $seek +=strlen($l);
  
          if ($l{0} == '#') continue;
          $mykey= strtok($l,' \t\n,:');
          $llen= mb_strlen($mykey,$encoding);
          if ($llen < $ki) {
              print '*pkey='.$pkey.'<br />';
              if ($match) break;
              continue;
          }
          if ($ki > 0) $pmykey=mb_substr($mykey,0,$ki,$encoding);
          $cmykey=mb_substr($mykey,$ki,1,$encoding);
  
          if ($ki == $klen and $pkey == $pmykey) {
              if (!$match_prefix and $llen > $klen) break;
              //print '+'.$ki.'<br />';
              $buf.=$l;
              $count++;
          } else if ($ckey == $cmykey and $pkey == $pmykey) {
              if ($ki < $klen) {
                  $ki++;
                  $pkey.=$ckey;
                  //print 'pkey='.$pkey.'<br />';
                  for ($ckey=mb_substr($key,$ki,1,$encoding);$ki<=$klen;$ckey=mb_substr($key,++$ki,1,$encoding)) {
                      if ($llen > $ki) {
                          $cmykey=mb_substr($mykey,$ki,1,$encoding);
                          if ($ckey == $cmykey) {
                              $pkey.=$ckey;
                              //print '++pkey='.$pkey.'<br />';
                              continue;
                          }
                      }
                      break;
                  }
                  //print 'pkey='.$pkey.'<br />';
                  if ($ki == $klen) {
                      $match=1;
                      $buf.=$l;
                      $count++;
                  }
                  continue;
              }
              if ($ki == $klen) $match = true;
              print '+pkey='.$pkey.'<br />';
              if ($ki == $klen) $buf.=$l;
          } else if ($pkey != $pmykey) {
              break;
          } else if ($ckey > $cmykey) {
              $nn++;
              continue;
          } else {
              break;
          }
      }
      $cseek+=$n;
      if ($n>100) $n='<span style="color:red">'.$n.'</span>';
      if ($_debug) print 'fgets='.$key.'/'.$nn.'/'.$n.'/'.$cseek."<br />";
      if ($count == 0 and !empty($pkey))
          return array ($count, $pkey, $last);
      return array ($count, $buf, null);
  }
  
  // vim:et:sts=4:sw=4:
  ?>
  
  
  


wkpark      2008/05/04 19:52:51

  Added:       plugin   TextDict.php
  Log:
  add Text based Dict module
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/TextDict.php
  
  Index: TextDict.php
  ===================================================================
  <?php
  // Copyright 2008 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a sample plugin for the MoniWiki
  //
  // Author: Won-Kyu Park <wkpark@kldp.org>
  // Date: 2008-05-02
  // Name: TextDict
  // Description: A Simple Text-Dictionary search plugin
  // URL: MoniWiki:TextDict etc.
  // Version: $Revision: 1.1 $
  // License: GPL
  //
  // Usage: [[TextDict(word)]]
  //
  // $Id: TextDict.php,v 1.1 2008/05/04 10:52:51 wkpark Exp $
  //
  
  include_once(dirname(__FILE__).'/../lib/dict.text.php');
  
  function macro_TextDict($formatter,$value,$params=array()) {
      global $Config;
      define('TEXT_DICT',realpath($Config['data_dir']).'/dict/hanja.txt');
  
      $fp=fopen(TEXT_DICT,'r');
      if (!is_resource($fp)) return '';
      $fs=fstat($fp);
      $fz=$fs['size'];
  
      $klen=0;
  
      list($l,$min_seek,$max_seek,$scount)=
          _fuzzy_bsearch_file($fp,$value,0,$fz/2,$klen,$fz);
  
      list($c,$buf,$last)=
          _file_match($fp,$value,$min_seek,$max_seek,$fz,$klen,false,'UTF-8');
      fclose($fp);
      #print 'scount='.$scount;
      #print $buf;
      return $buf;
  }
  
  function do_textdict($formatter,$options) {
      global $Config;
  
      $_debug=$options['debug'] ? $options['debug']:0;
  
      define('TEXT_DICT',realpath($Config['data_dir']).'/dict/hanja.txt');
      $formatter->send_header('',$options);
      $formatter->send_title('','',$options);
  
      if ($options['value'])
          $value=$options['value'];
      else
          $value=$formatter->page->get_raw_body($options);
  
      $delims=",.\|\n\r\s\(\)\[\]{}!@#\$%\^&\*\-_\+=~`';:'\"\?<>\/";
  
      # un-wikify CamelCase, change "WikiName" to "Wiki Name"
      $value=preg_replace("/((?<=[a-z0-9]|[B-Z]{2})([A-Z][a-z]))/"," \\1",$value);
      # separate alphanumeric and local characters
      $value=preg_replace("/((?<=[a-z0-9])([^a-z0-9]+))/i"," \\1",$value);
  
      $keys=preg_split("/[$delims]+/",$value);
      # must be longer than $more_specific_len.
      if ($more_specific_len > 0) {
          for ($i=0,$s=sizeof($keys);$i<$s;$i++)
              if (strlen($keys[$i])<=$more_specific_len) unset($keys[$i]);
      }
  
      sort($keys);$keys=array_unique($keys);
  
      $fp=fopen(TEXT_DICT,'r');
      if (!is_resource($fp)) return '';
      $fs=fstat($fp);
      $fz=$fs['size'];
  
      foreach ($keys as $i=>$key) {
          list($l,$min_seek,$max_seek,$scount)= _fuzzy_bsearch_file($fp,$key,0,$fz/3,0,$fz);
          list($c,$buf,$last)=
              _file_match($fp,$key,$min_seek,$max_seek,$fz,0,true,'UTF-8');
          if ($_debug) {
              print 'found='.$c."<br />\n";
              print 'scount='.$scount."<br />\n";
              if ($last) print 'last='.$last."<br />\n";
          }
          if (!empty($buf)) print $buf."<br />\n";
      }
      fclose($fp);
  
      if ($_debug) {
          $options['timer']->Check("dict");
          print "<pre>";
          print $options['timer']->Write();
          print "</pre>";
      }
      $formatter->send_footer('',$options);
      return;
  }
  
  // vim:et:sts=4:sw=4:
  ?>
  
  
  


wkpark      2008/05/05 16:12:53

  Modified:    lib      difflib.php
  Log:
  assert fix
  add a sample diff formatter
  
  Revision  Changes    Path
  1.11      +49 -4     moniwiki/lib/difflib.php
  
  Index: difflib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/difflib.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- difflib.php	18 Jan 2006 16:04:26 -0000	1.10
  +++ difflib.php	5 May 2008 07:12:53 -0000	1.11
  @@ -11,7 +11,7 @@
   //
   // FIXME: possibly remove assert()'s for production version?
   //
  -// $Id: difflib.php,v 1.10 2006/01/18 16:04:26 wkpark Exp $
  +// $Id: difflib.php,v 1.11 2008/05/05 07:12:53 wkpark Exp $
   // original Id: difflib.php,v 1.5 2002/01/21 06:55:47 dairiki Exp
   // PHP3 does not have assert()
   define('USE_ASSERTS', function_exists('assert'));
  @@ -661,8 +661,8 @@
       function MappedDiff($from_lines, $to_lines,
                           $mapped_from_lines, $mapped_to_lines) {
   
  -        assert(sizeof($from_lines) == sizeof($mapped_from_lines));
  -        assert(sizeof($to_lines) == sizeof($mapped_to_lines));
  +        USE_ASSERTS && assert(sizeof($from_lines) == sizeof($mapped_from_lines));
  +        USE_ASSERTS && assert(sizeof($to_lines) == sizeof($mapped_to_lines));
           
           $this->Diff($mapped_from_lines, $mapped_to_lines);
   
  @@ -895,7 +895,7 @@
                   $this->_flushLine($tag);
                   $word = substr($word, 1);
               }
  -            assert(!strstr($word, "\n"));
  +            //USE_ASSERTS && assert(!strstr($word, "\n"));
               $this->_group .= $word;
           }
       }
  @@ -1041,5 +1041,50 @@
       }
   }
   
  +/**
  + * a Plain Diff formatter.
  + */
  +class PlainDiffFormatter
  +{
  +    var $trailing_cr = "\n";
  +
  +    function PlainDiffFormatter() {
  +    }
  +
  +    function _lines($lines, $prefix = '') {
  +        foreach ($lines as $line)
  +            echo "$prefix$line".$this->trailing_cr;
  +    }
  +
  +    function _added($lines) {
  +        $this->_lines($lines, "+");
  +    }
  +    function _deleted($lines) {
  +        $this->_lines($lines, "-");
  +    }
  +    function _changed($orig, $_final) {
  +        $this->_deleted($orig);
  +        $this->_added($_final);
  +    }
  +
  +    function _context($lines) {
  +        $this->_lines($lines);
  +    }
  +
  +    function format($diff) {
  +        foreach ($diff->edits as $edit) {
  +            if ($edit->type == 'copy')
  +                $this->_context($edit->orig);
  +            elseif ($edit->type == 'add')
  +                $this->_added($edit->_final);
  +            elseif ($edit->type == 'delete')
  +                $this->_deleted($edit->orig);
  +            elseif ($edit->type == 'change')
  +                $this->_changed($edit->orig, $edit->_final);
  +            else
  +                trigger_error("Unknown edit type", E_USER_ERROR);
  +        }
  +    }   
  +}
   // vim:et:sts=4:
   ?>
  
  
  


wkpark      2008/05/05 16:50:02

  Modified:    plugin   Diff.php
  Log:
  cleanup
  fixed smart_diff() bug
  
  Revision  Changes    Path
  1.17      +12 -24    moniwiki/plugin/Diff.php
  
  Index: Diff.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Diff.php,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- Diff.php	25 Apr 2008 13:53:16 -0000	1.16
  +++ Diff.php	5 May 2008 07:50:02 -0000	1.17
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a diff plugin for the MoniWiki
   //
  -// $Id: Diff.php,v 1.16 2008/04/25 13:53:16 wkpark Exp $
  +// $Id: Diff.php,v 1.17 2008/05/05 07:50:02 wkpark Exp $
   
   function simple_diff($diff) {
     $diff=str_replace("<","&lt;",$diff);
  @@ -16,7 +16,8 @@
       if ($marker=="@") $line='<div class="diff-sep">@'."$line</div>";
       else if ($marker=="-") $line='<div class="diff-removed">'."$line</div>";
       else if ($marker=="+") $line='<div class="diff-added">'."$line</div>";
  -    else if ($marker=="\\" && $line==" No newline at end of file") continue;
  +    else if ($marker=="\\") continue;
  +    #else if ($marker=="\\" && $line==" No newline at end of file") continue;
       else $line.="<br />";
       $out.=$line."\n";
     }
  @@ -39,10 +40,10 @@
       if ($marker=="@") $line='<div class="diff-sep">@'."$line</div>";
       else if ($marker=="-") {
         $omarker=1; $orig[]=$line; continue;
  -    }
  -    else if ($marker=="+") {
  +    } else if ($marker=="+") {
         $omarker=1; $new[]=$line; continue;
  -    }
  +    } else if ($marker=="\\") continue;
  +    #} else if ($marker=="\\" && $line==" No newline at end of file") continue;
       else if ($omarker) {
         $omarker=0;
         $buf="";
  @@ -61,7 +62,6 @@
       }
       else if ($marker==" " and !$omarker)
         $line.="<br />";
  -    else if ($marker=="\\" && $line==" No newline at end of file") continue;
       else $line.="<br />";
       $out.=$line."\n";
     }
  @@ -91,10 +91,10 @@
         $lp=$mat[2]; $lm=$mat[1];
       } else if ($marker=='-') {
         $omarker=1; $orig[]=$line; continue;
  -    }
  -    else if ($marker=='+') {
  +    } else if ($marker=='+') {
         $omarker=2; $new[]=$line; continue;
  -    }
  +    } else if ($marker=="\\") continue;
  +    #} else if ($marker=="\\" && $line==' No newline at end of file') continue;
       else if ($omarker) {
         $count=sizeof($new);
         $ocount=sizeof($orig);
  @@ -115,8 +115,8 @@
           for ($i=0;$i<$count-1;$i++) $news[$lp+$i]=null;
           #for ($i=$count-1;$i>0;$i--) $news[$lp+$i-1]=null;
         } else if ($ocount != 0) {
  -        $dels[$lm-1]=$buf;
  -        for ($i=0;$i<$ocount-1;$i++) $dels[$lm+$i]=null;
  +        $dels[$lp-1]=$buf;
  +        for ($i=0;$i<$ocount-1;$i++) $dels[$lp+$i]=null;
         }
         if ($marker==' ') {
           $lp+=$count+1;
  @@ -127,7 +127,6 @@
         $lp++;
         $lm++;
       }
  -    else if ($marker=="\\" && $line==' No newline at end of file') continue;
     }
   
     #print "<pre style='color:black;background-color:#93FF93'>";
  @@ -232,17 +231,12 @@
         $msg=sprintf(_("Difference between r%s and the current"),$rev1.$rev2);
       }
       if (!$options['raw']) {
  -      #print "<pre>$out</pre>";
         $ret= call_user_func($type,$out);
         if (is_array($ret)) { // for smart_diff
  -        #print "<pre>";
  -        #print_r($ret);
           $dels=$ret[1]; $ret=$ret[0];
           $rev=($rev2 and $rev2) ? $rev2:''; // get newest rev.
           $current=$formatter->page->_get_raw_body(array('rev'=>$rev));
           $lines=explode("\n",$current);
  -        #print_r($lines);
  -        #print_r($ret);
           $nret=$ret;
           foreach ($ret as $k => $v) {
             if ($v=="") continue;
  @@ -252,22 +246,16 @@
             for ($kk=0;$kk<sizeof($tmp);$kk++)
             $nret[$k+$kk] = $tmp[$kk];
           }
  -        #print_r($nret);
           foreach ($nret as $k => $v) {
             $lines[$k] = $v;
           }
  -        #ksort($lines);
   
           # insert deleted lines
           if ($dels) {
  -          #print_r($dels);
             foreach ($dels as $k => $v) {
               $lines[$k]=$v."\n".$lines[$k];
  -            #$lines[$k]=$v;
             }
           }
  -        #print_r($lines);
  -        #print "</pre>";
           $diffed=implode("\n",$lines);
           # change for headings
           $diffed=preg_replace("/^(\006|\010)(={1,5})\s(.*)\s\\2\\1$/m",
  @@ -371,5 +359,5 @@
     return;
   }
   
  -// vim:et:sts=2:
  +// vim:et:sts=2:sw=2:
   ?>
  
  
  


wkpark      2008/05/06 00:55:15

  Modified:    lib      indexer.ko.php
  Log:
  fix to use dict.text.php module
  
  Revision  Changes    Path
  1.5       +19 -12    moniwiki/lib/indexer.ko.php
  
  Index: indexer.ko.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/indexer.ko.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- indexer.ko.php	4 May 2008 10:20:24 -0000	1.4
  +++ indexer.ko.php	5 May 2008 15:55:15 -0000	1.5
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a KoreanIndexer class for the MoniWiki
   //
  -// $Id: indexer.ko.php,v 1.4 2008/05/04 10:20:24 wkpark Exp $
  +// $Id: indexer.ko.php,v 1.5 2008/05/05 15:55:15 wkpark Exp $
   //
   // EXPERIMENTAL !!
   
  @@ -13,16 +13,14 @@
           include_once(dirname(__FILE__).'/unicode.php');
           $this->_eomiRule();
           $this->_josaRule();
  -        $this->_wordDic();
  -    }
  -
  -    function _wordDic() {
  -        global $DBInfo;
   
  -        $lines=file(dirname(__FILE__).'/../data/dict/word.txt.utf-8');
  -        foreach ($lines as $l) $this->_word[]=trim($l);
  -        $this->_word_rule=implode('|',$this->_word);
  -        #print $this->_eomi_rule;
  +        $fp = fopen(dirname(__FILE__).'/../data/dict/word.txt.utf-8','r');
  +        if (!is_resource($fp)) $fp = null;
  +        else
  +            include_once(dirname(__FILE__).'/dict.text.php');
  +        $this->_dict = &$fp;
  +        $fs=fstat($fp);
  +        $this->_dict_size=$fs['size'];
       }
   
       function _eomiRule() {
  @@ -87,8 +85,13 @@
   
       function isWord($word) {
           // XXX
  -        preg_match('/^('.$this->_word_rule.')$/S',$word,$match);
  -        if ($match[1]) return true;
  +        
  +        list($l,$min_seek,$max_seek,$scount)=
  +            _fuzzy_bsearch_file($this->_dict,$word,0,$this->_dict_size/2,0,$this->_dict_size);
  +        list($c,$buf,$last)=
  +            _file_match($this->_dict,$word,$min_seek,$max_seek,$this->_dict_size,0,false,'UTF-8');
  +        
  +        if (!empty($buf)) return true;
           return false;
       }
   
  @@ -423,6 +426,10 @@
           #print($word.'-'.$match[1]);
           #print_r($match);
       }
  +
  +    function close() {
  +        fclose($this->_dict);
  +    }
   }
   
   // vim:et:sts=4:sw=4:
  
  
  


wkpark      2008/05/06 00:55:43

  Modified:    plugin   filter.php
  Log:
  emit header properly
  
  Revision  Changes    Path
  1.2       +3 -2      moniwiki/plugin/filter.php
  
  Index: filter.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/filter.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- filter.php	12 Apr 2005 13:31:07 -0000	1.1
  +++ filter.php	5 May 2008 15:55:43 -0000	1.2
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Test]]
   //
  -// $Id: filter.php,v 1.1 2005/04/12 13:31:07 wkpark Exp $
  +// $Id: filter.php,v 1.2 2008/05/05 15:55:43 wkpark Exp $
   
   function macro_Filter($formatter,$value) {
       return "HelloWorld !\n";
  @@ -18,11 +18,12 @@
       }
       $body=$formatter->page->get_raw_body($options);
       $filters=preg_split("/(\||,)/",$options['filter']);
  +    if ($options['raw']) 
  +        $formatter->send_header('Content-Type: text/plain');
       foreach ($filters as $ft)
           $body=$formatter->filter_repl(trim($ft),$body,$options);
   
       if ($options['raw']) {
  -        $formatter->send_header('Content-Type: text/plain');
           print $body;
           return;
       }
  
  
  


wkpark      2008/05/06 01:02:27

  Modified:    data/dict word.txt.utf-8
  Log:
  see http://lists.kldp.net/pipermail/hangul-hackers/2006-October/000184.html
  
  Revision  Changes    Path
  1.2       +58431 -57 moniwiki/data/dict/word.txt.utf-8
  
  Index: word.txt.utf-8
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/data/dict/word.txt.utf-8,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- word.txt.utf-8	18 Apr 2008 21:46:16 -0000	1.1
  +++ word.txt.utf-8	5 May 2008 16:02:27 -0000	1.2
  @@ -1,57 +1,58431 @@
  -가면
  -공생설
  -다음
  -당시
  -동안
  -라면
  -무언가
  -문
  -물론
  -버리
  -벼리
  -별
  -본
  -불변
  -빠르게
  -사람
  -사실
  -살
  -새로운
  -생물
  -선
  -수천년간
  -순간
  -쓸거리
  -약간
  -얼마
  -여러
  -역시
  -온
  -왜냐하면
  -왠
  -요즘
  -원래
  -이성간
  -이순간
  -인간
  -일
  -자꾸만
  -자신
  -자연
  -잘
  -적어도
  -점
  -정도
  -제대로
  -제도
  -조금
  -좀
  -주변
  -차원
  -참
  -처음
  -초기
  -최신판
  -친척간
  -학설
  -혹시
  +#
  +# Copyright 2008 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
  +# distributable under GPL see COPYING
  +#
  +# Please see http://lists.kldp.net/pipermail/hangul-hackers/2006-October/000184.html
  +#
  +가:명:1
  +가:명:13
  +가:명:13
  +가가:명:3
  +가가대소:명:2
  +가가대소하다:동:1
  +가가소소하다:형:1
  +가가호호:부:2
  +가감:명:4
  +가객:명:1
  +가갸거겨:부:1
  +가갸날:명:1
  +가거주:명:1
  +가건물:명:4
  +가검물:명:2
  +가게:명:192
  +가겟방:명:6
  +가격:명:250
  +가격하다:동:3
  +가결하다:동:2
  +가계:명:15
  +가계:명:9
  +가계부:명:2
  +가계비:명:1
  +가계성:명:2
  +가계약:명:4
  +가계약서:명:1
  +가곡:명:5
  +가곡집:명:1
  +가공:명:2
  +가공:명:31
  +가공과:명:1
  +가공되다:동:3
  +가공법:명:1
  +가공성:명:1
  +가공업:명:4
  +가공인물:명:1
  +가공적:명:1
  +가공품:명:1
  +가공하다:동:12
  +가공하다:형:10
  +가공학과:명:1
  +가공형적:관:2
  +가관:명:10
  +가교:명:3
  +가교적:관:1
  +가구:명:22
  +가구:명:69
  +가구상:명:1
  +가구업체:명:1
  +가극:명:2
  +가근방:명:1
  +가급받다:동:1
  +가급적:명:4
  +가급적:부:21
  +가까스로:부:40
  +가까워지다:동:37
  +가까이:명:56
  +가까이:부:133
  +가까이하다:동:8
  +가깝다:형:336
  +가꾸다:동:128
  +가꾸어지다:동:1
  +가꿔지다:동:1
  +가끔:부:260
  +가끔가다:부:4
  +가나다라:명:1
  +가난:명:36
  +가난뱅이:명:4
  +가난하다:형:131
  +가난해지다:동:2
  +가내:명:13
  +가내적:관:2
  +가내적:명:1
  +가냘프다:형:12
  +가녀리다:형:6
  +가누다:동:8
  +가느다랗다:형:14
  +가느다래지다:동:1
  +가는귀:명:1
  +가는귀먹다:동:5
  +가는쑥부쟁이:명:2
  +가늘다:형:76
  +가늘어지다:동:1
  +가늠:명:1
  +가늠되다:동:3
  +가늠자:명:2
  +가늠하다:동:25
  +가능:명:24
  +가능성:명:428
  +가능액:명:1
  +가능하다:형:417
  +가능해지다:동:29
  +가다:동:4,670
  +가다:보:1,191
  +가다:부:1
  +가다가:부:1
  +가다듬다:동:18
  +가다듬어지다:동:3
  +가닥:명:38
  +가닥가닥:부:1
  +가담:명:3
  +가담자:명:2
  +가담하다:동:13
  +가당하다:형:3
  +가닿다:동:2
  +가도:명:5
  +가독성:명:3
  +가동:명:13
  +가동:명:2
  +가동되다:동:10
  +가동률:명:6
  +가동비:명:2
  +가동성:명:2
  +가동시키다:동:2
  +가동하다:동:12
  +가두:명:5
  +가두다:동:38
  +가두리:명:2
  +가두어지다:동:1
  +가드락:명:1
  +가드레일:명:2
  +가득:부:192
  +가득가득:부:2
  +가득하다:형:56
  +가득히:부:20
  +가든그리다:동:1
  +가디간:명:2
  +가뜩이나:부:24
  +가라사대:동:2
  +가라앉다:동:64
  +가라앉히다:동:18
  +가라오케:명:3
  +가락:명:2
  +가락:명:5
  +가락지:명:2
  +가랑비:명:5
  +가랑이:명:7
  +가랑잎:명:2
  +가래:명:3
  +가래:명:7
  +가래떡:명:2
  +가래침:명:6
  +가량:명:2
  +가려내다:동:22
  +가려움증:명:3
  +가려지다:동:28
  +가련하다:형:5
  +가렴주구:명:2
  +가렵다:형:13
  +가령:부:112
  +가례:명:2
  +가로:명:17
  +가로:명:9
  +가로거치다:동:1
  +가로계:명:3
  +가로놓이다:동:3
  +가로눕다:동:3
  +가로대:명:1
  +가로등:명:34
  +가로띠:명:1
  +가로림만:명:1
  +가로막다:동:41
  +가로막히다:동:2
  +가로망:명:1
  +가로맡다:동:1
  +가로무늬:명:3
  +가로보이다:동:1
  +가로세로:명:2
  +가로수:명:19
  +가로젓다:동:15
  +가로줄:명:1
  +가로지르다:동:29
  +가로채다:동:15
  +가루:명:75
  +가르다:동:46
  +가르랑거리다:동:1
  +가르쳐지다:동:1
  +가르치다:동:313
  +가르침:명:72
  +가름:명:2
  +가름대:명:1
  +가름하다:동:10
  +가리나무:명:1
  +가리다:동:20
  +가리다:동:71
  +가리다:동:93
  +가리비:명:3
  +가리어지다:동:1
  +가리우다:동:3
  +가리키다:동:1
  +가리키다:동:167
  +가마:명:10
  +가마:명:2
  +가마:명:3
  +가마:명:3
  +가마니:명:5
  +가마니틀:명:1
  +가마때기:명:2
  +가마분:명:1
  +가마솥:명:13
  +가마우지:명:1
  +가막살나무:명:1
  +가만:감:5
  +가만:부:15
  +가만가만:부:1
  +가만두다:동:2
  +가만있다:동:23
  +가만히:부:132
  +가망:명:9
  +가매장:명:1
  +가맹사:명:1
  +가맹점:명:2
  +가면:명:19
  +가면관:명:1
  +가면극:명:1
  +가면무:명:1
  +가명:명:26
  +가명제:명:2
  +가무:명:6
  +가무단:명:1
  +가무잡잡하다:형:8
  +가무하다:동:1
  +가문:명:27
  +가물:명:1
  +가물가물:부:5
  +가물가물하다:동:1
  +가물거리다:동:4
  +가물다:동:5
  +가물치:명:6
  +가뭄:명:39
  +가뭇가뭇하다:형:1
  +가뭇없다:형:1
  +가뭇없이:부:1
  +가미:명:1
  +가미되다:동:7
  +가미하다:동:7
  +가반:명:1
  +가발:명:14
  +가방:명:1
  +가방:명:149
  +가벌성:명:1
  +가벼워지다:동:12
  +가벼이:부:3
  +가변선:명:3
  +가변성:명:1
  +가변식:명:1
  +가변적:명:1
  +가볍다:형:193
  +가보:명:1
  +가보간:명:1
  +가봉하다:동:1
  +가부:명:2
  +가부장:명:9
  +가부장적:관:18
  +가부장적:명:2
  +가부장제:명:15
  +가부장제적:관:1
  +가부좌:명:3
  +가빠지다:동:3
  +가뿐하다:형:2
  +가뿐해지다:동:1
  +가뿐히:부:2
  +가쁘다:형:18
  +가사:명:1
  +가사:명:18
  +가사:명:2
  +가사:명:2
  +가사:명:42
  +가사:명:6
  +가사일:명:4
  +가산:명:1
  +가산:명:3
  +가산되다:동:1
  +가산율:명:2
  +가산점:명:1
  +가산하다:동:1
  +가상:명:17
  +가상:명:2
  +가상:명:52
  +가상되다:동:1
  +가상적:관:1
  +가상하다:동:2
  +가상하다:동:4
  +가새잎머루:명:1
  +가새지르다:동:1
  +가석방:명:1
  +가석방되다:동:3
  +가설:명:28
  +가설:명:3
  +가설무대:명:5
  +가설적:관:3
  +가설하다:동:3
  +가성:명:1
  +가세:명:1
  +가세:명:5
  +가세하다:동:12
  +가셔지다:동:1
  +가소롭다:형:1
  +가속:명:4
  +가속기:명:6
  +가속도:명:14
  +가속되다:동:5
  +가속시키다:동:2
  +가속적:명:1
  +가속하다:동:1
  +가속화:명:4
  +가속화되다:동:11
  +가속화시키다:동:5
  +가속화하다:동:4
  +가솔린:명:1
  +가수:명:109
  +가수면:명:2
  +가수요:명:3
  +가스:명:106
  +가스관:명:3
  +가스레인지:명:9
  +가스보일러:명:1
  +가스실:명:1
  +가스업:명:1
  +가스통:명:1
  +가슬가슬하다:형:2
  +가슴:명:510
  +가슴둘레:명:5
  +가슴벽:명:2
  +가슴살:명:1
  +가슴속:명:50
  +가슴앓이:명:1
  +가슴팍:명:11
  +가습기:명:2
  +가시:명:14
  +가시거리:명:2
  +가시관:명:1
  +가시권:명:1
  +가시나:명:1
  +가시나무:명:3
  +가시다:동:33
  +가시밭길:명:2
  +가시버시:명:1
  +가시적:관:2
  +가시적:명:20
  +가시화:명:2
  +가시화되다:동:3
  +가시화시키다:동:1
  +가시화하다:동:3
  +가식:명:1
  +가식:명:1
  +가식적:명:4
  +가신:명:16
  +가심:명:1
  +가십:명:1
  +가십거리:명:1
  +가십성:명:1
  +가압장:명:1
  +가액:명:1
  +가야금:명:13
  +가업:명:1
  +가연성:명:1
  +가열되다:동:2
  +가열하다:동:10
  +가열하다:형:1
  +가열화:명:1
  +가열화하다:동:1
  +가엽다:형:7
  +가엾다:형:18
  +가엾어지다:동:2
  +가오리:명:1
  +가옥:명:1
  +가옥:명:22
  +가옥대장:명:1
  +가외:명:2
  +가욋돈:명:1
  +가요:명:26
  +가요계:명:8
  +가요사:명:1
  +가요제:명:1
  +가용:명:1
  +가운:명:20
  +가운데:명:722
  +가운뎃손가락:명:5
  +가위:명:1
  +가위:명:28
  +가위:부:5
  +가위눌리다:동:6
  +가위바위보:명:4
  +가위표:명:1
  +가윗날:명:1
  +가을:명:181
  +가을걷이:명:4
  +가을걷이하다:동:2
  +가을날:명:2
  +가을맞이:명:3
  +가을바람:명:5
  +가을밤:명:2
  +가을배추:명:1
  +가을볕:명:2
  +가을비:명:3
  +가을빛:명:2
  +가을철:명:7
  +가이드:명:35
  +가이드라인:명:3
  +가이색귀:명:1
  +가이없다:형:1
  +가일층:부:2
  +가입:명:43
  +가입되다:동:2
  +가입비:명:2
  +가입서:명:1
  +가입순:명:1
  +가입안:명:1
  +가입자:명:42
  +가입하다:동:35
  +가자미:명:1
  +가작:명:1
  +가장:명:58
  +가장:부:1,278
  +가장이:명:1
  +가장자리:명:38
  +가장하다:동:8
  +가장행렬:명:2
  +가재:명:7
  +가재도구:명:4
  +가전:명:9
  +가전사:명:1
  +가전속:명:2
  +가전업계:명:2
  +가전용품:명:1
  +가전제품:명:11
  +가정:명:1
  +가정:명:304
  +가정:명:43
  +가정과:명:3
  +가정교사:명:27
  +가정교육:명:11
  +가정되다:동:1
  +가정법:명:1
  +가정부:명:7
  +가정부인:명:1
  +가정불화:명:4
  +가정생활:명:6
  +가정용품:명:1
  +가정의:명:3
  +가정의례:명:2
  +가정적:관:1
  +가정적:명:3
  +가정주부:명:6
  +가정집:명:2
  +가정하다:동:27
  +가정학:명:1
  +가정학과:명:1
  +가정환경:명:4
  +가제:명:2
  +가져가다:동:57
  +가져다주다:동:31
  +가져오다:동:212
  +가족:명:485
  +가족계획:명:5
  +가족도:명:1
  +가족사진:명:2
  +가족애:명:1
  +가족적:명:2
  +가족학:명:1
  +가족회의:명:1
  +가주제:명:2
  +가죽:명:36
  +가죽나무:명:2
  +가죽신:명:1
  +가죽점퍼:명:2
  +가중:명:1
  +가중되다:동:16
  +가중시키다:동:10
  +가증스럽다:형:2
  +가지:명:102
  +가지:명:8
  +가지:의:1,272
  +가지가지:명:3
  +가지각색:명:3
  +가지급금:명:1
  +가지나물:명:2
  +가지다:동:1,512
  +가지다:보:411
  +가지런하다:형:4
  +가지런히:부:36
  +가지치기:명:7
  +가지치기하다:동:1
  +가직하다:형:1
  +가집:명:1
  +가짓빛:명:1
  +가짓수:명:6
  +가짜:명:40
  +가짜배기:명:1
  +가차:명:12
  +가창력:명:1
  +가책:명:5
  +가처분:명:3
  +가체:명:1
  +가축:명:23
  +가축병원:명:1
  +가축적:명:1
  +가출:명:18
  +가출하다:동:6
  +가치:명:2
  +가치:명:386
  +가치관:명:67
  +가치세:명:3
  +가치적:명:1
  +가치중립:명:1
  +가치화:명:1
  +가칭:명:6
  +가타부타:명:1
  +가택:명:9
  +가톨릭:명:18
  +가톨릭교회:명:8
  +가투:명:3
  +가파르다:형:10
  +가판대:명:1
  +가풍:명:2
  +가필되다:동:1
  +가하다:동:66
  +가학:명:1
  +가학적:명:1
  +가해:명:3
  +가해자:명:19
  +가해지다:동:19
  +가해하다:동:1
  +가행궁:명:1
  +가호:명:3
  +가호자:명:1
  +가혹:명:7
  +가혹하다:형:25
  +가혹해지다:동:1
  +가화:명:1
  +가히:부:15
  +각:관:475
  +각:명:14
  +각각:명:46
  +각각:부:287
  +각개:명:2
  +각거성:명:1
  +각계:명:20
  +각계각층:명:7
  +각고:명:5
  +각광:명:17
  +각광받다:동:9
  +각국:명:72
  +각국어:명:1
  +각급:명:18
  +각기:부:63
  +각기병:명:1
  +각다귀:명:1
  +각도:명:31
  +각도기:명:1
  +각론:명:2
  +각론적:관:1
  +각료:명:28
  +각막:명:2
  +각막염:명:1
  +각목:명:10
  +각박하다:형:11
  +각반:명:1
  +각배:명:1
  +각별하다:형:16
  +각별히:부:12
  +각본:명:17
  +각본난:명:2
  +각부:명:2
  +각색:명:1
  +각색:명:5
  +각색되다:동:1
  +각색자:명:1
  +각색하다:동:5
  +각서:명:20
  +각서설:명:3
  +각서화하다:동:1
  +각선미:명:1
  +각설이:명:1
  +각설탕:명:1
  +각성:명:24
  +각성되다:동:4
  +각성시키다:동:1
  +각성하다:동:7
  +각시:명:8
  +각양:명:2
  +각양각색:명:8
  +각오:명:31
  +각오하다:동:10
  +각의:명:2
  +각인:명:2
  +각인되다:동:10
  +각인시키다:동:1
  +각자:명:52
  +각자:부:56
  +각자각자:명:1
  +각종:명:270
  +각주:명:1
  +각지:명:27
  +각지다:형:2
  +각지불이:명:2
  +각질:명:6
  +각처:명:7
  +각첨:명:1
  +각축:명:5
  +각축전:명:5
  +각층:명:3
  +각통:명:1
  +각하:명:1
  +각하:명:10
  +각하하다:동:3
  +각형:명:2
  +각화형:명:1
  +간:명:5
  +간:명:50
  +간:명:55
  +간:의:2
  +간:의:580
  +간간이:부:30
  +간간하다:형:2
  +간격:명:46
  +간결하다:형:12
  +간경변증:명:1
  +간계:명:1
  +간고등어:명:2
  +간곡하다:형:7
  +간곡히:부:4
  +간과되다:동:6
  +간과하다:동:35
  +간교:명:1
  +간교하다:형:1
  +간구하다:동:1
  +간구하다:동:1
  +간극:명:4
  +간뇌:명:2
  +간단명료하다:형:5
  +간단없이:부:1
  +간단하다:형:172
  +간단히:부:69
  +간담회:명:26
  +간덩이:명:1
  +간데없다:형:2
  +간드러지다:형:4
  +간략하다:동:2
  +간략하다:형:7
  +간략히:부:8
  +간만:명:2
  +간만:명:8
  +간맥:명:1
  +간명하다:형:3
  +간물:명:5
  +간발:명:1
  +간밤:명:18
  +간병인:명:1
  +간부:명:99
  +간부급:명:2
  +간부화:명:1
  +간부회:명:3
  +간빙기:명:1
  +간사:명:38
  +간사국:명:1
  +간사장:명:3
  +간사하다:형:3
  +간사하다:형:3
  +간석기:명:1
  +간석지:명:8
  +간선:명:5
  +간선망:명:1
  +간섭:명:41
  +간섭기:명:1
  +간섭하다:동:11
  +간성:명:1
  +간소하다:형:4
  +간소화:명:10
  +간소화되다:동:3
  +간소화하다:동:3
  +간수하다:동:3
  +간스메:명:1
  +간식:명:19
  +간식거리:명:1
  +간신배:명:1
  +간신히:부:48
  +간악하다:형:3
  +간암:명:3
  +간여:명:2
  +간여하다:동:2
  +간염:명:37
  +간음죄:명:1
  +간이:명:22
  +간이식당:명:1
  +간이역:명:7
  +간인:명:1
  +간장:명:2
  +간장:명:2
  +간장:명:66
  +간절하다:형:28
  +간절히:부:8
  +간접:명:39
  +간접세:명:3
  +간접적:관:4
  +간접적:명:25
  +간접흡연:명:3
  +간주:명:1
  +간주관적:관:1
  +간주되다:동:18
  +간주하다:동:28
  +간증:명:1
  +간지:명:1
  +간지:명:1
  +간지다:형:2
  +간지럽다:형:1
  +간지럽히다:동:6
  +간직되다:동:5
  +간직하다:동:53
  +간질:명:12
  +간질간질:부:1
  +간질이다:동:5
  +간척:명:26
  +간척지:명:16
  +간척하다:동:1
  +간첩:명:29
  +간첩단:명:3
  +간첩질하다:동:1
  +간청:명:4
  +간청하다:동:5
  +간체자화되다:동:1
  +간추려지다:동:1
  +간추리다:동:8
  +간취되다:동:1
  +간취하다:동:1
  +간친회:명:1
  +간택:명:2
  +간택하다:동:1
  +간파:명:11
  +간파하다:동:12
  +간판:명:50
  +간판스타:명:4
  +간편:명:2
  +간편성:명:2
  +간편식:명:1
  +간편하다:형:23
  +간편히:부:1
  +간하다:동:19
  +간행:명:5
  +간행되다:동:7
  +간행물:명:7
  +간행하다:동:5
  +간헐적:명:4
  +간호:명:20
  +간호대:명:1
  +간호대학:명:1
  +간호복:명:1
  +간호부:명:2
  +간호부장:명:2
  +간호사:명:22
  +간호실:명:9
  +간호원:명:2
  +간호하다:동:6
  +간호학과:명:1
  +간혹:부:52
  +갇히다:동:55
  +갈:명:2
  +갈가리:부:9
  +갈겨니:명:3
  +갈겨지다:동:1
  +갈고닦다:동:6
  +갈고리:명:1
  +갈구:명:1
  +갈구다:동:4
  +갈구하다:동:6
  +갈급하다:형:1
  +갈기:명:2
  +갈기갈기:부:4
  +갈기다:동:12
  +갈까마귀:명:2
  +갈꽃:명:13
  +갈다:동:25
  +갈다:동:7
  +갈다:동:89
  +갈대:명:11
  +갈대밭:명:1
  +갈대숲:명:1
  +갈등:명:220
  +갈등론적:관:1
  +갈등하다:동:8
  +갈등형:명:1
  +갈라놓다:동:6
  +갈라서다:동:5
  +갈라지다:동:55
  +갈래:명:26
  +갈래갈래:부:4
  +갈려지다:동:1
  +갈륨아세나이트:명:1
  +갈리다:동:1
  +갈리다:동:1
  +갈리다:동:5
  +갈릭:명:1
  +갈림길:명:19
  +갈망:명:5
  +갈망하다:동:1
  +갈망하다:동:12
  +갈매기:명:85
  +갈모:명:2
  +갈무리되다:동:1
  +갈무리하다:동:2
  +갈밭:명:4
  +갈밭머리:명:6
  +갈보:명:5
  +갈비:명:11
  +갈비구이:명:3
  +갈비뼈:명:14
  +갈비탕:명:1
  +갈색:명:60
  +갈수기:명:2
  +갈수록:부:53
  +갈숲:명:1
  +갈아대다:동:1
  +갈아엎다:동:1
  +갈아입다:동:48
  +갈아입히다:동:2
  +갈아타다:동:17
  +갈애:명:2
  +갈이:명:2
  +갈이:명:2
  +갈자리:명:3
  +갈증:명:41
  +갈지자:명:1
  +갈지자걸음:명:1
  +갈참나무:명:1
  +갈채:명:7
  +갈취하다:동:2
  +갈취형:명:1
  +갈치:명:6
  +갈치구이:명:1
  +갈치조림:명:1
  +갈퀴:명:3
  +갈퀴꼭두서니:명:1
  +갈퀴질:명:1
  +갈탄:명:1
  +갈파하다:동:4
  +갈팡질팡:부:2
  +갈팡질팡하다:동:1
  +갈포:명:1
  +갈피:명:10
  +갉다:동:2
  +갉아먹다:동:6
  +감:명:19
  +감:명:34
  +감:명:8
  +감가상각비:명:2
  +감가하다:동:1
  +감각:명:185
  +감각적:관:31
  +감각적:명:18
  +감각하다:동:1
  +감감:부:1
  +감감하다:형:1
  +감개:명:1
  +감개무량하다:형:2
  +감격:명:25
  +감격스럽다:형:7
  +감격적:명:5
  +감격하다:동:11
  +감경:명:1
  +감광지:명:4
  +감광판:명:1
  +감군:명:2
  +감귤:명:2
  +감귤나무:명:1
  +감금:명:9
  +감금당하다:동:1
  +감금되다:동:3
  +감금죄:명:5
  +감금하다:동:7
  +감기:명:60
  +감기다:동:1
  +감기다:동:1
  +감기다:동:5
  +감기다:동:8
  +감기약:명:8
  +감꽃:명:3
  +감나무:명:25
  +감내하다:동:4
  +감다:동:102
  +감다:동:14
  +감다:동:48
  +감당:명:1
  +감당하다:동:41
  +감독:명:1
  +감독:명:324
  +감독관:명:11
  +감독권:명:1
  +감독론:명:1
  +감독상:명:2
  +감독원:명:11
  +감독자:명:1
  +감독직:명:1
  +감독하다:동:14
  +감돌다:동:22
  +감동:명:88
  +감동받다:동:1
  +감동스럽다:형:1
  +감동시키다:동:5
  +감동적:명:23
  +감동하다:동:12
  +감때:명:1
  +감량:명:11
  +감량시키다:동:1
  +감리자:명:1
  +감마나이프:명:2
  +감마선:명:3
  +감면:명:10
  +감면하다:동:3
  +감명:명:12
  +감명받다:동:1
  +감미롭다:형:15
  +감미료:명:1
  +감방:명:1
  +감방:명:14
  +감별:명:8
  +감별력:명:1
  +감별하다:동:2
  +감복하다:동:1
  +감봉:명:1
  +감사:명:1
  +감사:명:2
  +감사:명:27
  +감사:명:4
  +감사:명:91
  +감사관:명:2
  +감사권:명:1
  +감사드리다:동:10
  +감사반:명:2
  +감사반원:명:10
  +감사실:명:3
  +감사원:명:1
  +감사절:명:1
  +감사하다:동:3
  +감사하다:동:37
  +감사하다:형:51
  +감상:명:26
  +감상:명:5
  +감상:명:8
  +감상되다:동:1
  +감상문:명:6
  +감상실:명:4
  +감상자:명:2
  +감상적:관:5
  +감상적:명:6
  +감상주의:명:3
  +감상하다:동:44
  +감상회:명:2
  +감색:명:1
  +감색:명:1
  +감색:명:11
  +감성:명:25
  +감성적:관:4
  +감성적:명:11
  +감성화하다:동:1
  +감소:명:35
  +감소되다:동:16
  +감소분:명:1
  +감소세:명:1
  +감소시키다:동:7
  +감소율:명:2
  +감소치:명:2
  +감소하다:동:42
  +감속:명:1
  +감속하다:동:1
  +감수:명:1
  +감수:명:1
  +감수력:명:1
  +감수성:명:33
  +감수하다:동:27
  +감시:명:58
  +감시관:명:1
  +감시권:명:1
  +감시대:명:1
  +감시망:명:2
  +감시원:명:2
  +감시자:명:8
  +감시탑:명:1
  +감시하다:동:26
  +감식:명:2
  +감싸다:동:64
  +감싸이다:동:1
  +감아올리다:동:1
  +감아쥐다:동:4
  +감안:명:8
  +감안하다:동:72
  +감액하다:동:1
  +감언이설:명:2
  +감염:명:14
  +감염되다:동:9
  +감염자:명:1
  +감영:명:1
  +감옥:명:59
  +감옥살이:명:4
  +감옥선:명:1
  +감옥소:명:4
  +감원:명:10
  +감원하다:동:1
  +감읍:명:1
  +감읍하다:동:1
  +감응:명:1
  +감응력:명:1
  +감응하다:동:2
  +감자:명:1
  +감자:명:57
  +감자밥:명:1
  +감자빈대떡:명:1
  +감자튀김:명:1
  +감잣고개:명:2
  +감잣국:명:1
  +감전:명:1
  +감전당하다:동:1
  +감전되다:동:2
  +감점:명:1
  +감정:명:10
  +감정:명:20
  +감정:명:262
  +감정성:명:1
  +감정인:명:7
  +감정적:관:1
  +감정적:관:7
  +감정적:명:15
  +감정적:명:2
  +감정하다:동:2
  +감지:명:7
  +감지기:명:16
  +감지덕지:부:4
  +감지되다:동:8
  +감지력:명:1
  +감지하다:동:26
  +감지형:명:4
  +감질나다:형:1
  +감쪽같다:형:4
  +감쪽같이:부:9
  +감찰:명:4
  +감찰반:명:1
  +감천:명:1
  +감청:명:2
  +감초:명:6
  +감촉:명:10
  +감촉하다:동:1
  +감추다:동:104
  +감추어지다:동:14
  +감축:명:21
  +감축되다:동:1
  +감축시키다:동:1
  +감축안:명:2
  +감축하다:동:7
  +감춰지다:동:2
  +감치:명:3
  +감칠맛:명:10
  +감탄:명:9
  +감탄사:명:2
  +감탄스럽다:형:1
  +감탄하다:동:23
  +감퇴:명:1
  +감퇴되다:동:2
  +감퇴시키다:동:2
  +감투:명:1
  +감투:명:11
  +감하다:동:1
  +감행:명:1
  +감행하다:동:17
  +감형:명:3
  +감형되다:동:1
  +감형하다:동:1
  +감호:명:1
  +감호소:명:1
  +감화:명:1
  +감화되다:동:1
  +감화시키다:동:1
  +감화원:명:1
  +감화하다:동:2
  +감회:명:6
  +감흥:명:10
  +감히:부:56
  +갑:명:1
  +갑:명:20
  +갑:명:29
  +갑갑하다:형:7
  +갑골:명:7
  +갑다:형:1
  +갑문:명:6
  +갑부:명:2
  +갑사:명:6
  +갑상선:명:3
  +갑석:명:1
  +갑술:명:1
  +갑오:명:5
  +갑오개혁:명:8
  +갑오경장:명:4
  +갑오징어:명:1
  +갑옷:명:2
  +갑자:명:4
  +갑자기:부:433
  +갑작스럽다:형:41
  +갑작스레:부:2
  +갑절:명:5
  +갑족:명:1
  +갑종:명:2
  +갑판:명:24
  +갑판부:명:3
  +갑판부원:명:1
  +갑판장:명:4
  +갑호:명:1
  +값:명:278
  +값나가다:동:2
  +값비싸다:형:11
  +값싸다:형:24
  +값어치:명:2
  +값있다:형:1
  +값지다:형:17
  +값하다:동:8
  +갓:명:18
  +갓:부:48
  +갓길:명:3
  +갓김치:명:1
  +갓난아기:명:9
  +갓난아이:명:3
  +갓난애:명:1
  +갓난쟁이:명:1
  +갓모:명:7
  +강:명:122
  +강:의:23
  +강가:명:11
  +강간:명:53
  +강간당하다:동:3
  +강간범:명:2
  +강간하다:동:6
  +강강수월래:명:1
  +강강술래:명:1
  +강건하다:형:1
  +강경:명:33
  +강경론:명:2
  +강경론자:명:1
  +강경책:명:5
  +강경파:명:7
  +강경하다:형:7
  +강경해지다:동:1
  +강고성:명:1
  +강고하다:형:4
  +강공:명:2
  +강관:명:1
  +강구:명:13
  +강구:명:8
  +강구되다:동:6
  +강구하다:동:15
  +강국:명:12
  +강군:명:2
  +강권:명:2
  +강권하다:동:3
  +강기슭:명:1
  +강남:명:60
  +강낭콩:명:4
  +강냉이:명:4
  +강녕:명:1
  +강녕하다:형:1
  +강다짐:명:1
  +강단:명:13
  +강당:명:18
  +강대국:명:14
  +강도:명:37
  +강도:명:4
  +강도:명:40
  +강도단:명:1
  +강도범:명:1
  +강독:명:1
  +강독용:명:2
  +강둑:명:4
  +강등시키다:동:1
  +강등하다:동:1
  +강력:명:2
  +강력:명:25
  +강력반:명:1
  +강력범:명:1
  +강력부:명:2
  +강력하다:형:129
  +강력해지다:동:2
  +강력히:부:39
  +강렬하다:형:57
  +강렬해지다:동:2
  +강렬화:명:1
  +강렬히:부:1
  +강령:명:10
  +강론:명:2
  +강론하다:동:1
  +강림:명:1
  +강물:명:69
  +강바닥:명:1
  +강박:명:12
  +강박감:명:2
  +강박적:관:2
  +강박적:명:1
  +강박증:명:2
  +강변:명:16
  +강변:명:2
  +강변가:명:1
  +강변길:명:1
  +강변도로:명:6
  +강변하다:동:5
  +강보합:명:1
  +강보합세:명:1
  +강북:명:15
  +강사:명:1
  +강사:명:32
  +강사진:명:1
  +강산:명:8
  +강산성:명:1
  +강상무덤:명:3
  +강샘:명:1
  +강설:명:1
  +강설:명:3
  +강설하다:동:2
  +강성:명:2
  +강성해지다:동:3
  +강세:명:14
  +강소주:명:1
  +강속구:명:1
  +강수:명:1
  +강수량:명:32
  +강술:명:1
  +강습:명:6
  +강습받다:동:1
  +강습소:명:2
  +강습회:명:2
  +강신무:명:1
  +강심:명:4
  +강아지:명:9
  +강아지버들:명:1
  +강아지풀:명:1
  +강안:명:3
  +강알칼리성:명:1
  +강압:명:5
  +강압적:관:1
  +강압적:명:9
  +강약:명:4
  +강역:명:1
  +강연:명:19
  +강연회:명:12
  +강요:명:18
  +강요당하다:동:6
  +강요되다:동:16
  +강요받다:동:8
  +강요하다:동:56
  +강우:명:2
  +강우량:명:4
  +강의:명:66
  +강의되다:동:1
  +강의록:명:2
  +강의실:명:6
  +강의하다:동:14
  +강인성:명:1
  +강인하다:형:13
  +강자:명:3
  +강장고:명:1
  +강장제:명:4
  +강적:명:2
  +강전:의:7
  +강점:명:20
  +강점:명:3
  +강점기:명:4
  +강정:명:4
  +강제:명:94
  +강제되다:동:2
  +강제력:명:8
  +강제성:명:6
  +강제적:명:17
  +강제하다:동:10
  +강조:명:21
  +강조되다:동:19
  +강조하다:동:343
  +강좌:명:23
  +강줄기:명:1
  +강중강중:부:1
  +강직하다:형:2
  +강짜:명:1
  +강짜하다:동:1
  +강철:명:3
  +강추위:명:2
  +강추위:명:3
  +강타자:명:1
  +강타하다:동:4
  +강탈하다:동:1
  +강태공:명:2
  +강팀:명:3
  +강판:명:2
  +강판:명:3
  +강퍅하다:형:1
  +강포:명:1
  +강풍:명:8
  +강하다:형:363
  +강하다:형:6
  +강해지다:동:13
  +강행:명:8
  +강행군:명:4
  +강행군하다:동:1
  +강행하다:동:15
  +강호:명:3
  +강화:명:1
  +강화:명:112
  +강화되다:동:49
  +강화시키다:동:29
  +강화책:명:2
  +강화하다:동:101
  +갖가지:명:53
  +갖다:동:1,008
  +갖다:보:57
  +갖은:관:25
  +갖추다:동:279
  +갖추어지다:동:21
  +갖춰지다:동:14
  +같다:형:5,199
  +같아지다:동:6
  +같이:부:952
  +같이하다:동:48
  +같잖다:형:4
  +갚다:동:59
  +개:명:1
  +개:명:1
  +개:명:145
  +개:의:1,622
  +개가:명:5
  +개가:명:9
  +개가식:명:2
  +개가하다:동:1
  +개각:명:5
  +개각설:명:2
  +개간:명:14
  +개간되다:동:1
  +개간하다:동:4
  +개강하다:동:1
  +개개:명:11
  +개개비:명:2
  +개개인:명:34
  +개고기:명:11
  +개골창:명:2
  +개과천선하다:동:1
  +개관:명:1
  +개관:명:16
  +개관되다:동:8
  +개관식:명:3
  +개관일:명:2
  +개관하다:동:3
  +개관하다:동:5
  +개괄적:관:1
  +개괄적:명:4
  +개교:명:2
  +개교:의:10
  +개교기념일:명:2
  +개교회:명:2
  +개구리:명:42
  +개구멍:명:3
  +개구쟁이:명:6
  +개구즉착:명:1
  +개국:명:3
  +개국:명:5
  +개국:의:71
  +개국되다:동:1
  +개국하다:동:3
  +개국하다:동:4
  +개굴개굴:부:1
  +개그:명:6
  +개그맨:명:7
  +개그우먼:명:5
  +개기다:동:1
  +개기름:명:2
  +개꿈:명:1
  +개나리:명:22
  +개나리꽃:명:1
  +개나리나무:명:1
  +개나발:명:1
  +개년:의:9
  +개념:명:458
  +개념적:관:8
  +개념적:명:3
  +개념화:명:2
  +개념화되다:동:8
  +개념화하다:동:13
  +개놈:명:1
  +개다:동:19
  +개다:동:5
  +개다:동:6
  +개다리소반:명:2
  +개도국:명:10
  +개떡:명:2
  +개똥:명:2
  +개똥지빠귀:명:3
  +개띠:명:2
  +개략적:관:1
  +개략적:명:2
  +개량:명:9
  +개량되다:동:3
  +개량적:관:1
  +개량적:명:1
  +개량종:명:1
  +개량주의:명:2
  +개량하다:동:7
  +개량형:명:3
  +개량화:명:2
  +개런티:명:3
  +개력:명:1
  +개막:명:30
  +개막되다:동:15
  +개막식:명:7
  +개막일:명:1
  +개막작:명:1
  +개막전:명:1
  +개망초:명:1
  +개머리판:명:1
  +개명:명:2
  +개명되다:동:2
  +개명화:명:1
  +개문되다:동:1
  +개미:명:56
  +개미집:명:3
  +개발:명:413
  +개발나무:명:1
  +개발단:명:1
  +개발도상국:명:10
  +개발되다:동:83
  +개발부:명:1
  +개발부장:명:1
  +개발비:명:6
  +개발사:명:1
  +개발서:명:1
  +개발설:명:2
  +개발시키다:동:1
  +개발실장:명:1
  +개발업:명:1
  +개발원:명:3
  +개발자:명:8
  +개발하다:동:181
  +개발학과:명:1
  +개밥:명:8
  +개방:명:1
  +개방:명:178
  +개방계:명:1
  +개방되다:동:31
  +개방론:명:8
  +개방론자:명:1
  +개방률:명:1
  +개방미:명:1
  +개방성:명:5
  +개방적:관:2
  +개방적:명:15
  +개방하다:동:52
  +개방형:명:1
  +개방화:명:18
  +개방화되다:동:1
  +개벽:명:74
  +개벽시키다:동:2
  +개벽하다:동:2
  +개별:명:44
  +개별성:명:4
  +개별자:명:1
  +개별적:관:11
  +개별적:명:18
  +개별체:명:1
  +개별화:명:1
  +개별화되다:동:3
  +개별화하다:동:1
  +개봉:명:9
  +개봉관:명:2
  +개봉되다:동:4
  +개봉작:명:1
  +개봉하다:동:4
  +개비:명:25
  +개뿐해지다:동:1
  +개뿔:명:1
  +개사:명:1
  +개사:의:23
  +개살구:명:3
  +개새끼:명:4
  +개선:명:146
  +개선되다:동:39
  +개선시키다:동:1
  +개선안:명:14
  +개선책:명:8
  +개선하다:동:1
  +개선하다:동:65
  +개설:명:29
  +개설되다:동:12
  +개설서:명:5
  +개설적:명:1
  +개설하다:동:23
  +개성:명:124
  +개성껏:부:1
  +개성미:명:1
  +개성적:관:4
  +개성적:명:15
  +개성파:명:8
  +개성화:명:8
  +개소:의:31
  +개솔새:명:1
  +개수:명:7
  +개수:명:8
  +개숫물:명:1
  +개시:명:1
  +개시:명:7
  +개시기:명:1
  +개시되다:동:1
  +개시론:명:1
  +개시일:명:1
  +개시하다:동:1
  +개시하다:동:5
  +개식형:명:1
  +개신교:명:2
  +개신교계:명:1
  +개심:명:4
  +개아:명:2
  +개악:명:1
  +개안:명:3
  +개안시키다:동:1
  +개않다:형:1
  +개암나무:명:5
  +개암취:명:1
  +개업:명:3
  +개업하다:동:3
  +개여뀌:명:2
  +개연:명:1
  +개연성:명:14
  +개연적:명:1
  +개옻나무:명:1
  +개요:명:14
  +개요란:명:1
  +개운하다:형:17
  +개울:명:26
  +개울가:명:17
  +개울물:명:6
  +개웅:명:1
  +개원:명:4
  +개원되다:동:3
  +개원하다:동:1
  +개월:의:275
  +개의하다:동:13
  +개이다:동:1
  +개인:명:380
  +개인기:명:3
  +개인별:명:6
  +개인사:명:4
  +개인용품:명:1
  +개인적:관:46
  +개인적:명:76
  +개인전:명:12
  +개인전:명:8
  +개인주의:명:13
  +개인주의적:관:4
  +개인주의적:명:3
  +개인차:명:3
  +개인택시:명:2
  +개인플레이:명:1
  +개인화:명:2
  +개입:명:52
  +개입되다:동:14
  +개입설:명:1
  +개입시키다:동:2
  +개입하다:동:36
  +개자식:명:3
  +개작:명:4
  +개작권:명:1
  +개작하다:동:4
  +개장:명:13
  +개장국:명:1
  +개장되다:동:3
  +개장하다:동:3
  +개재되다:동:2
  +개재하다:동:2
  +개전:명:1
  +개전:명:6
  +개절:명:3
  +개점:명:5
  +개점하다:동:1
  +개정:명:2
  +개정:명:30
  +개정:명:51
  +개정권:명:1
  +개정되다:동:8
  +개정되다:동:9
  +개정안:명:44
  +개정판:명:1
  +개정하다:동:20
  +개정하다:동:5
  +개져오다:동:2
  +개조:명:10
  +개조:명:2
  +개조:의:1
  +개조되다:동:5
  +개조시키다:동:1
  +개조하다:동:18
  +개종시키다:동:1
  +개종하다:동:1
  +개죽음당하다:동:1
  +개중:명:6
  +개지다:보:1
  +개진:명:2
  +개진되다:동:1
  +개진되다:동:5
  +개진하다:동:4
  +개찰:명:5
  +개찰구:명:13
  +개창:명:1
  +개창하다:동:1
  +개척:명:7
  +개척되다:동:4
  +개척자:명:14
  +개척적:관:1
  +개척적:명:1
  +개척하다:동:25
  +개천:명:9
  +개천가:명:2
  +개천절:명:3
  +개체:명:1
  +개체:명:71
  +개체성:명:1
  +개체적:관:8
  +개체적:명:6
  +개체화:명:5
  +개체화하다:동:3
  +개촌:명:1
  +개최:명:18
  +개최되다:동:25
  +개최지:명:1
  +개최하다:동:35
  +개축:명:3
  +개축하다:동:2
  +개칭:명:1
  +개칭되다:동:1
  +개칭하다:동:1
  +개켜지다:동:1
  +개키다:동:2
  +개탄:명:2
  +개탄스럽다:형:2
  +개탄조:명:1
  +개탄하다:동:5
  +개털:명:1
  +개통:명:4
  +개통되다:동:6
  +개통시키다:동:1
  +개통식:명:1
  +개통하다:동:1
  +개판:명:2
  +개패:명:1
  +개펄:명:11
  +개편:명:99
  +개편되다:동:10
  +개편안:명:8
  +개편하다:동:12
  +개평:명:1
  +개폐:명:1
  +개폐:명:6
  +개폐되다:동:1
  +개폐식:명:3
  +개표:명:9
  +개피떡:명:1
  +개하사:명:1
  +개학:명:2
  +개학하다:동:2
  +개항:명:3
  +개항하다:동:1
  +개헌:명:9
  +개헌선:명:1
  +개헌안:명:2
  +개헤엄:명:1
  +개혁:명:369
  +개혁가:명:2
  +개혁되다:동:1
  +개혁론:명:1
  +개혁안:명:8
  +개혁자:명:1
  +개혁적:관:1
  +개혁적:명:1
  +개혁파:명:9
  +개혁풍:명:1
  +개혁하다:동:8
  +개화:명:1
  +개화:명:8
  +개화기:명:5
  +개화되다:동:3
  +개화시키다:동:2
  +개화파:명:1
  +개화하다:동:2
  +개화하다:동:2
  +개활:명:5
  +개활지:명:2
  +개회:명:2
  +개회사:명:1
  +개회식:명:2
  +개흙:명:1
  +객:명:7
  +객관:명:4
  +객관성:명:17
  +객관식:명:3
  +객관적:관:59
  +객관적:명:86
  +객관주의:명:7
  +객관화:명:1
  +객관화되다:동:2
  +객관화하다:동:3
  +객기:명:2
  +객사하다:동:1
  +객석:명:14
  +객실:명:9
  +객원:명:5
  +객장:명:4
  +객주:명:1
  +객지:명:9
  +객쩍다:형:1
  +객차:명:7
  +객체:명:11
  +객체적:명:1
  +객체화하다:동:1
  +갤러리:명:7
  +갤런:의:1
  +갭:명:10
  +갯가:명:13
  +갯골:명:6
  +갯마을:명:3
  +갯머리:명:7
  +갯바람:명:2
  +갯버들:명:2
  +갯벌:명:18
  +갱:명:1
  +갱:명:2
  +갱년기:명:1
  +갱단:명:1
  +갱목:명:5
  +갱생:명:1
  +갱신:명:9
  +갱신되다:동:2
  +갱신하다:동:2
  +갱찰:명:3
  +갸:불:1
  +갸륵하다:형:7
  +갸름하다:형:18
  +갸름해지다:동:3
  +갸우뚱:부:4
  +갸우뚱거리다:동:9
  +갸우뚱하다:동:17
  +갸웃:부:1
  +갸웃갸웃하다:동:1
  +갸웃거려지다:동:1
  +갸웃거리다:동:15
  +갸웃하다:동:5
  +갹출:명:1
  +걀걀:부:2
  +걔:불:187
  +거:대:6
  +거:대:66
  +거:의:5,678
  +거간:명:1
  +거개:명:2
  +거구:명:15
  +거국적:관:3
  +거국적:명:1
  +거금:명:8
  +거기:대:644
  +거꾸러지다:동:3
  +거꾸로:부:69
  +거꾸로오르기:명:3
  +거나하다:형:5
  +거나해지다:동:2
  +거느리다:동:24
  +거닐다:동:17
  +거대:명:11
  +거대하다:형:112
  +거대화:명:2
  +거대화되다:동:1
  +거덜:명:2
  +거동:명:9
  +거두다:동:144
  +거두어들이다:동:8
  +거둬들이다:동:10
  +거드럭거리다:동:1
  +거드름:명:4
  +거들:명:3
  +거들다:동:33
  +거들떠보다:동:8
  +거들먹거리다:동:4
  +거들먹대다:동:1
  +거듭:부:61
  +거듭나다:동:8
  +거듭되다:동:12
  +거듭하다:동:58
  +거뜬:명:1
  +거뜬하다:형:3
  +거뜬히:부:6
  +거래:명:182
  +거래되다:동:13
  +거래량:명:3
  +거래선:명:5
  +거래세:명:1
  +거래액:명:1
  +거래자:명:6
  +거래점:명:5
  +거래제:명:1
  +거래처:명:2
  +거래하다:동:9
  +거렁뱅이:명:1
  +거론되다:동:31
  +거론하다:동:27
  +거룩하다:형:22
  +거룻배:명:5
  +거르다:동:16
  +거르다:동:25
  +거름:명:21
  +거름망:명:1
  +거름잔:명:1
  +거름주기:명:1
  +거름흙:명:11
  +거리:명:182
  +거리:명:199
  +거리:의:15
  +거리감:명:14
  +거리끼다:동:2
  +거리낌:명:14
  +거만스럽다:형:2
  +거만하다:형:5
  +거만해지다:동:2
  +거머리:명:14
  +거머잡다:동:1
  +거머쥐다:동:17
  +거멓다:형:4
  +거명:명:1
  +거명되다:동:2
  +거명하다:동:2
  +거목:명:3
  +거무레하다:형:1
  +거무스레하다:형:1
  +거무스름하다:형:1
  +거무죽죽하다:형:1
  +거무칙칙하다:형:1
  +거무튀튀하다:형:3
  +거문고:명:12
  +거물:명:8
  +거뭇거뭇하다:형:4
  +거뭇하다:형:1
  +거미:명:5
  +거미줄:명:24
  +거봉:명:1
  +거봐:감:4
  +거부:명:2
  +거부:명:39
  +거부감:명:10
  +거부권:명:2
  +거부당하다:동:5
  +거부되다:동:8
  +거부하다:동:118
  +거북:명:3
  +거북스러워하다:동:1
  +거북스럽다:형:1
  +거북이:명:5
  +거북하다:형:7
  +거사:명:2
  +거사:명:2
  +거산:명:1
  +거상:명:1
  +거서간:명:1
  +거석:명:1
  +거선:명:1
  +거성:명:1
  +거세:명:2
  +거세다:형:35
  +거세당하다:동:1
  +거세되다:동:2
  +거세어지다:동:2
  +거세지다:동:7
  +거소:명:2
  +거수:명:1
  +거수:명:1
  +거수:명:4
  +거수경례:명:5
  +거수하다:동:2
  +거스르다:동:2
  +거스르다:동:36
  +거스름돈:명:6
  +거슬리다:동:17
  +거슴츠레하다:형:2
  +거슴츠레해지다:동:1
  +거시:명:1
  +거시:명:14
  +거시기:감:3
  +거시기:대:4
  +거시적:관:2
  +거시적:명:3
  +거식증:명:1
  +거실:명:79
  +거액:명:49
  +거여:명:3
  +거역하다:동:17
  +거울:명:103
  +거울삼다:동:1
  +거웃:명:1
  +거위:명:1
  +거의:명:13
  +거의:부:623
  +거인:명:11
  +거인국:명:4
  +거장:명:6
  +거저:부:16
  +거적때기:명:6
  +거절:명:10
  +거절당하다:동:2
  +거절되다:동:1
  +거절하다:동:53
  +거점:명:12
  +거정:명:1
  +거주:명:20
  +거주구:명:1
  +거주민:명:1
  +거주자:명:1
  +거주지:명:10
  +거주하다:동:16
  +거죽:명:6
  +거즈:명:1
  +거지:명:1
  +거지:명:35
  +거지반:부:1
  +거진:명:1
  +거진:부:6
  +거짓:명:48
  +거짓되다:형:3
  +거짓말:명:96
  +거짓말쟁이:명:6
  +거짓말하다:동:11
  +거짓부렁:명:1
  +거짓뿌렁하다:동:1
  +거참:감:7
  +거창하다:형:32
  +거처:명:8
  +거처하다:동:4
  +거추장스럽다:형:8
  +거취:명:5
  +거치다:동:269
  +거칠거칠하다:형:1
  +거칠다:형:93
  +거칠어지다:동:13
  +거침없다:형:4
  +거침없이:부:9
  +거푸:부:5
  +거푸수수하다:형:1
  +거품:명:48
  +거품기:명:7
  +거하다:동:1
  +거하다:형:1
  +거행:명:1
  +거행되다:동:3
  +거행하다:동:10
  +걱정:명:202
  +걱정거리:명:7
  +걱정걱정하다:동:1
  +걱정되다:동:14
  +걱정스러워지다:동:1
  +걱정스럽다:형:30
  +걱정스레:부:1
  +걱정하다:동:86
  +건:명:1
  +건:명:20
  +건:불:2
  +건:의:132
  +건각:명:1
  +건강:명:337
  +건강관리:명:9
  +건강미:명:3
  +건강성:명:3
  +건강식:명:1
  +건강식품:명:13
  +건강체:명:1
  +건강하다:형:178
  +건강학:명:1
  +건강해지다:동:10
  +건강히:부:2
  +건계:명:2
  +건과:명:3
  +건구역질:명:1
  +건국:명:43
  +건국되다:동:2
  +건국자:명:1
  +건국하다:동:6
  +건군:명:3
  +건냉소:명:1
  +건너:명:20
  +건너가다:동:45
  +건너다:동:94
  +건너다니다:동:1
  +건너다보다:동:22
  +건너다보이다:동:2
  +건너뛰다:동:16
  +건너뛰어지다:동:1
  +건너오다:동:23
  +건너편:명:33
  +건넌방:명:17
  +건널목:명:7
  +건넛집:명:1
  +건네다:동:39
  +건네받다:동:11
  +건네주다:동:47
  +건네지다:동:4
  +건뇌제:명:2
  +건달:명:13
  +건답법:명:1
  +건더기:명:3
  +건덕지:명:3
  +건둥건둥:부:1
  +건드리다:동:50
  +건들거리다:동:3
  +건들다:동:2
  +건듯:부:1
  +건립:명:27
  +건립되다:동:6
  +건립하다:동:3
  +건망증:명:4
  +건물:명:336
  +건물주:명:1
  +건반:명:2
  +건방:명:1
  +건방지다:형:5
  +건배:명:2
  +건배하다:동:2
  +건사:명:1
  +건설:명:277
  +건설기적:관:1
  +건설되다:동:30
  +건설비:명:8
  +건설업:명:7
  +건설업계:명:3
  +건설업자:명:6
  +건설업체:명:3
  +건설자:명:3
  +건설적:명:4
  +건설처장:명:2
  +건설하다:동:95
  +건성:명:16
  +건성:명:9
  +건성건성:부:1
  +건수:명:14
  +건식:명:1
  +건실하다:형:3
  +건어물:명:2
  +건의:명:16
  +건의되다:동:1
  +건의문:명:5
  +건의하다:동:19
  +건장하다:형:12
  +건재:명:2
  +건재:명:3
  +건재하다:형:5
  +건전:명:6
  +건전도:명:2
  +건전성:명:4
  +건전지:명:2
  +건전하다:형:59
  +건조:명:51
  +건조기:명:1
  +건조되다:동:4
  +건조물:명:1
  +건조시키다:동:3
  +건조실:명:6
  +건조증:명:9
  +건조지:명:1
  +건조하다:동:2
  +건조하다:형:18
  +건조해지다:동:3
  +건준:명:4
  +건중탕:명:2
  +건지:명:2
  +건지다:동:75
  +건지황:명:2
  +건초:명:1
  +건추절:명:1
  +건축:명:81
  +건축가:명:13
  +건축계:명:6
  +건축관:명:2
  +건축되다:동:1
  +건축물:명:21
  +건축미:명:1
  +건축법:명:3
  +건축비:명:2
  +건축사:명:1
  +건축사학:명:5
  +건축사학자:명:1
  +건축업:명:4
  +건축인:명:1
  +건축적:명:3
  +건축주:명:4
  +건축하다:동:3
  +건축학:명:5
  +건축학계:명:2
  +건축학과:명:4
  +건치:명:5
  +건투:명:1
  +건평:명:1
  +건포도:명:5
  +건필:명:1
  +건하다:형:1
  +걷기:명:18
  +걷다:동:2
  +걷다:동:20
  +걷다:동:34
  +걷다:동:388
  +걷어붙이다:동:3
  +걷어차다:동:12
  +걷어차이다:동:2
  +걷어치우다:동:1
  +걷잡다:동:7
  +걷지르다:동:1
  +걷히다:동:1
  +걷히다:동:14
  +걷히다:동:7
  +걸:명:1
  +걸:명:1
  +걸개:명:2
  +걸걸하다:형:2
  +걸다:동:1
  +걸다:동:303
  +걸러지다:동:3
  +걸레:명:13
  +걸레질:명:6
  +걸레질하다:동:1
  +걸레짝:명:1
  +걸레쪽:명:1
  +걸려들다:동:11
  +걸려지다:동:1
  +걸리다:동:2
  +걸리다:동:515
  +걸리적거리다:동:1
  +걸림돌:명:16
  +걸맞다:형:38
  +걸매어지다:동:1
  +걸머지다:동:1
  +걸상:명:6
  +걸신들리다:동:1
  +걸어가다:동:111
  +걸어오다:동:14
  +걸어오다:동:48
  +걸음:명:137
  +걸음걸음:명:1
  +걸음걸이:명:16
  +걸음마:명:10
  +걸음질:명:1
  +걸인:명:3
  +걸작:명:19
  +걸작품:명:2
  +걸직하다:형:1
  +걸쭉하다:형:3
  +걸쳐지다:동:6
  +걸출하다:형:5
  +걸치다:동:264
  +걸터앉다:동:23
  +걸터타다:동:1
  +걸프:명:20
  +걸프전:명:8
  +걸핏하면:부:26
  +검:명:1
  +검:불:3
  +검객:명:2
  +검거:명:17
  +검거되다:동:7
  +검거망:명:1
  +검거하다:동:8
  +검검청:명:1
  +검경:명:9
  +검다:형:143
  +검댕:명:3
  +검도부:명:1
  +검둥이:명:3
  +검무:명:3
  +검문:명:48
  +검문검색:명:1
  +검문소:명:1
  +검문하다:동:1
  +검버섯:명:1
  +검부락지:명:2
  +검붉다:형:9
  +검사:명:150
  +검사:명:68
  +검사공:명:2
  +검사기:명:10
  +검사대:명:1
  +검사물:명:2
  +검사받다:동:2
  +검사법:명:9
  +검사비:명:1
  +검사소:명:1
  +검사실:명:4
  +검사역:명:1
  +검사장:명:3
  +검사제:명:6
  +검사청장:명:1
  +검사하다:동:9
  +검산하다:동:2
  +검색:명:16
  +검색기:명:1
  +검색당하다:동:1
  +검색대:명:1
  +검색원:명:3
  +검색하다:동:8
  +검소하다:형:12
  +검속하다:동:1
  +검식관:명:11
  +검실검실하다:형:1
  +검역:명:16
  +검역소:명:9
  +검열:명:2
  +검열난:명:1
  +검은개:명:1
  +검은깨:명:3
  +검은댕기해오라비:명:2
  +검은돈:명:8
  +검은머리방울새:명:5
  +검은빛:명:1
  +검은색:명:67
  +검정:명:23
  +검정:명:5
  +검정고시:명:1
  +검정색:명:1
  +검정콩:명:5
  +검정하다:동:1
  +검증:명:26
  +검증되다:동:4
  +검증받다:동:2
  +검증하다:동:10
  +검지:명:12
  +검진:명:9
  +검진하다:동:3
  +검찰:명:243
  +검찰권:명:1
  +검찰력:명:1
  +검찰부:명:1
  +검찰청:명:1
  +검출:명:1
  +검출되다:동:13
  +검출하다:동:10
  +검토:명:73
  +검토되다:동:13
  +검토자:명:1
  +검토하다:동:122
  +검투사:명:1
  +검표:명:2
  +검푸르다:형:5
  +겁:명:80
  +겁나다:동:20
  +겁내다:동:9
  +겁대가리:명:1
  +겁먹다:동:12
  +겁쟁이:명:5
  +겁주다:동:3
  +겁탈:명:2
  +겁탈당하다:동:3
  +겁탈하다:동:1
  +것:의:25,567
  +것투성이:의:1
  +겅성드뭇하다:형:1
  +겅중겅중:부:1
  +겆다:동:1
  +겉:명:76
  +겉감:명:3
  +겉껍질:명:2
  +겉넓이:명:1
  +겉늙다:동:1
  +겉다:형:1
  +겉돌다:동:7
  +겉말:명:1
  +겉면:명:2
  +겉모습:명:10
  +겉모양:명:9
  +겉보기:명:13
  +겉보리:명:4
  +겉봉:명:5
  +겉옷:명:8
  +겉유식쟁이:명:1
  +겉잎:명:1
  +겉장:명:1
  +겉절이:명:2
  +겉쪽:명:2
  +겉치레:명:4
  +겉치마:명:1
  +겉핥다:동:2
  +겉흙:명:5
  +게:대:7
  +게:명:39
  +게:의:6
  +게다:부:1
  +게다가:부:161
  +게딱지:명:2
  +게르마늄:명:1
  +게릴라:명:6
  +게맛살:명:5
  +게발트:명:1
  +게살:명:1
  +게서:불:2
  +게슈탈트:명:3
  +게스트:명:1
  +게슴츠레:부:1
  +게시판:명:21
  +게시하다:동:2
  +게양대:명:3
  +게양하다:동:2
  +게으르다:형:10
  +게으름:명:10
  +게으름뱅이:명:3
  +게을러지다:동:1
  +게을리:부:15
  +게이샤:명:1
  +게이트:명:6
  +게임:명:255
  +게임계:명:1
  +게임광:명:1
  +게임기:명:21
  +게임하다:동:1
  +게임화하다:동:2
  +게자리:명:1
  +게재:명:4
  +게재되다:동:13
  +게재하다:동:9
  +게좌:명:1
  +게터:명:7
  +겨:명:3
  +겨:불:7
  +겨냥:명:5
  +겨냥하다:동:32
  +겨누다:동:3
  +겨드랑:명:3
  +겨드랑이:명:23
  +겨레:명:33
  +겨루다:동:22
  +겨룸:명:1
  +겨를:의:28
  +겨우:부:137
  +겨우겨우:부:4
  +겨우내:부:10
  +겨우살이:명:2
  +겨울:명:244
  +겨울나무:명:1
  +겨울날:명:2
  +겨울눈:명:3
  +겨울바람:명:2
  +겨울밤:명:8
  +겨울비:명:1
  +겨울새:명:13
  +겨울옷:명:1
  +겨울용품:명:2
  +겨울잠:명:2
  +겨울철:명:29
  +겨울털:명:4
  +겨자:명:31
  +격:명:12
  +격:의:35
  +격감:명:2
  +격감되다:동:1
  +격감하다:동:6
  +격구:명:2
  +격년:명:1
  +격년제:명:2
  +격노:명:1
  +격돌:명:5
  +격돌하다:동:3
  +격동:명:9
  +격동기:명:3
  +격동하다:동:1
  +격랑:명:2
  +격려:명:21
  +격려금:명:5
  +격려받다:동:2
  +격려사:명:1
  +격려하다:동:18
  +격렬하다:형:30
  +격렬해지다:동:2
  +격론:명:1
  +격류:명:1
  +격리:명:6
  +격리감:명:2
  +격리되다:동:7
  +격리성:명:1
  +격리시키다:동:2
  +격리하다:동:1
  +격멸하다:동:1
  +격무:명:2
  +격문:명:2
  +격변:명:5
  +격변기:명:1
  +격분하다:동:3
  +격상:명:1
  +격상되다:동:1
  +격상시키다:동:3
  +격세지감:명:2
  +격식:명:7
  +격식화:명:1
  +격심하다:형:4
  +격심해지다:동:2
  +격앙되다:동:4
  +격언:명:2
  +격월:명:1
  +격월간:명:2
  +격의:명:2
  +격일제:명:3
  +격자형:명:1
  +격전:명:2
  +격전지:명:2
  +격정:명:8
  +격정적:명:6
  +격조:명:2
  +격조하다:동:1
  +격차:명:39
  +격찬:명:1
  +격찬받다:동:1
  +격추:명:1
  +격추되다:동:1
  +격추시키다:동:2
  +격추하다:동:1
  +격침시키다:동:2
  +격투:명:3
  +격투기:명:1
  +격파:명:1
  +격파하다:동:5
  +격하다:형:7
  +격하시키다:동:3
  +격해지다:동:1
  +격화:명:1
  +격화되다:동:7
  +격화시키다:동:1
  +격화하다:동:1
  +겪다:동:264
  +겪어지다:동:1
  +견:명:12
  +견갑골:명:1
  +견결하다:형:1
  +견고:명:1
  +견고하다:형:8
  +견공:명:3
  +견과:명:1
  +견뎌하다:동:1
  +견디다:동:171
  +견명:명:1
  +견문:명:6
  +견문하다:동:1
  +견물생심:명:1
  +견본:명:2
  +견본시:명:2
  +견비통:명:1
  +견사:명:1
  +견사:명:1
  +견성성불:명:1
  +견습:명:1
  +견습공:명:1
  +견습원:명:13
  +견인:명:1
  +견인차:명:3
  +견인하다:동:1
  +견장:명:1
  +견적:명:5
  +견적서:명:1
  +견전제:명:1
  +견제:명:17
  +견제력:명:2
  +견제하다:동:10
  +견주다:동:19
  +견지:명:5
  +견지되다:동:2
  +견지하다:동:22
  +견직:명:1
  +견직물:명:15
  +견진:명:2
  +견책:명:1
  +견포:명:1
  +견학:명:12
  +견학시키다:동:2
  +견학하다:동:19
  +견해:명:155
  +견해차:명:2
  +겯고틀다:동:1
  +겯다:동:1
  +결:명:1
  +결:명:20
  +결:의:4
  +결:의:4
  +결각:명:1
  +결각상:명:1
  +결강하다:동:1
  +결격:명:2
  +결계:명:1
  +결곤:명:1
  +결과:명:1
  +결과:명:902
  +결과론:명:1
  +결과론적:관:1
  +결과론적:명:2
  +결과물:명:8
  +결과적:관:1
  +결과적:명:42
  +결국:명:551
  +결근:명:3
  +결근하다:동:2
  +결기:명:1
  +결단:명:40
  +결단되다:동:1
  +결단력:명:4
  +결단코:부:1
  +결단하다:동:2
  +결딴:명:2
  +결딴나다:동:1
  +결렬:명:8
  +결렬되다:동:6
  +결례:명:5
  +결론:명:150
  +결론적:명:9
  +결론짓다:동:11
  +결리다:동:6
  +결막염:명:1
  +결말:명:18
  +결말부:명:4
  +결박:명:1
  +결백:명:3
  +결백하다:형:3
  +결벽:명:1
  +결벽증:명:6
  +결별:명:4
  +결별하다:동:3
  +결부:명:1
  +결부되다:동:9
  +결부시키다:동:7
  +결빙:명:1
  +결빙되다:동:2
  +결사:명:13
  +결사:명:3
  +결사문:명:1
  +결사반대:명:3
  +결사적:명:2
  +결산:명:16
  +결산서:명:13
  +결산하다:동:1
  +결석:명:7
  +결석계:명:1
  +결석생:명:1
  +결석자:명:1
  +결석하다:동:3
  +결선:명:6
  +결성:명:20
  +결성되다:동:11
  +결성식:명:1
  +결성하다:동:16
  +결속:명:5
  +결속되다:동:1
  +결속력:명:2
  +결속체:명:1
  +결속하다:동:4
  +결손:명:5
  +결손증:명:2
  +결승:명:47
  +결승선:명:1
  +결승전:명:4
  +결승점:명:3
  +결식아동:명:2
  +결실:명:33
  +결실되다:동:1
  +결실하다:동:1
  +결심:명:2
  +결심:명:39
  +결심하다:동:55
  +결안:명:1
  +결여:명:15
  +결여되다:동:18
  +결여론:명:2
  +결여론자:명:1
  +결여설:명:3
  +결여하다:동:6
  +결연:명:1
  +결연하다:형:6
  +결연히:부:3
  +결원:명:1
  +결의:명:29
  +결의:명:7
  +결의문:명:14
  +결의서:명:1
  +결의안:명:6
  +결의하다:동:1
  +결의하다:동:11
  +결의하다:동:7
  +결자해지:명:2
  +결장:명:3
  +결장하다:동:1
  +결재:명:2
  +결재란:명:2
  +결재하다:동:1
  +결전:명:5
  +결절점:명:1
  +결점:명:9
  +결정:명:208
  +결정:명:5
  +결정권:명:11
  +결정되다:동:110
  +결정력:명:4
  +결정론:명:15
  +결정론자:명:1
  +결정론적:관:3
  +결정론적:명:1
  +결정문:명:3
  +결정시키다:동:1
  +결정자:명:1
  +결정적:관:23
  +결정적:명:75
  +결정전:명:17
  +결정지어지다:동:3
  +결정짓다:동:11
  +결정체:명:1
  +결정하다:동:216
  +결제:명:5
  +결제하다:동:2
  +결집:명:3
  +결집력:명:5
  +결집체:명:1
  +결처:명:1
  +결코:부:287
  +결탁:명:6
  +결탁하다:동:11
  +결투:명:1
  +결판:명:6
  +결판나다:동:1
  +결핍:명:10
  +결핍되다:동:4
  +결핍증:명:8
  +결함:명:29
  +결합:명:45
  +결합되다:동:28
  +결합력:명:1
  +결합시키다:동:12
  +결합하다:동:33
  +결항:명:1
  +결항되다:동:1
  +결핵:명:4
  +결핵균:명:1
  +결핵병:명:1
  +결혼:명:354
  +결혼관:명:2
  +결혼기념일:명:4
  +결혼설:명:1
  +결혼시키다:동:3
  +결혼식:명:59
  +결혼식장:명:11
  +결혼하다:동:202
  +겸:의:58
  +겸병:명:2
  +겸비하다:동:4
  +겸사:명:1
  +겸상:명:3
  +겸상하다:동:1
  +겸손:명:13
  +겸손하다:형:19
  +겸양:명:2
  +겸양하다:동:1
  +겸업:명:3
  +겸업하다:동:2
  +겸연쩍다:형:6
  +겸연쩍어하다:동:4
  +겸용:명:1
  +겸용선:명:2
  +겸유하다:동:1
  +겸임:명:3
  +겸임하다:동:2
  +겸직:명:3
  +겸하다:동:30
  +겸허:명:4
  +겸허감:명:1
  +겸허하다:형:18
  +겸허히:부:4
  +겹:명:23
  +겹겹:명:5
  +겹겹이:부:13
  +겹경사:명:1
  +겹다:형:11
  +겹두루마기:명:1
  +겹저고리:명:5
  +겹집:명:1
  +겹쳐지다:동:13
  +겹치다:동:52
  +경:명:1
  +경:명:1
  +경:명:2
  +경:명:3
  +경:명:5
  +경:명:5
  +경각:명:1
  +경각심:명:9
  +경감:명:3
  +경감:명:4
  +경감되다:동:2
  +경감시키다:동:2
  +경개:명:1
  +경건:명:1
  +경건하다:형:7
  +경건히:부:1
  +경결:명:6
  +경계:명:1
  +경계:명:20
  +경계:명:87
  +경계경보:명:1
  +경계되다:동:1
  +경계령:명:1
  +경계론:명:1
  +경계망:명:1
  +경계부:명:1
  +경계선:명:20
  +경계심:명:4
  +경계하다:동:39
  +경고:명:1
  +경고:명:78
  +경고문:명:1
  +경고받다:동:1
  +경고성:명:2
  +경고하다:동:31
  +경공업:명:8
  +경과:명:18
  +경과하다:동:6
  +경관:명:43
  +경관:명:7
  +경관화:명:1
  +경구:명:3
  +경구금:명:1
  +경금:명:1
  +경기:명:293
  +경기:명:5
  +경기:명:84
  +경기관총:명:1
  +경기력:명:3
  +경기상:명:1
  +경기장:명:55
  +경기하다:동:3
  +경기화되다:동:2
  +경난꾼:명:1
  +경내:명:21
  +경단:명:7
  +경대:명:10
  +경대부:명:1
  +경도:명:1
  +경도:명:2
  +경도:명:3
  +경도되다:동:1
  +경도력:명:1
  +경동:명:1
  +경락:명:3
  +경락:명:5
  +경락받다:동:1
  +경량화:명:2
  +경력:명:54
  +경력자:명:2
  +경련:명:13
  +경련성:명:4
  +경례:감:1
  +경례:명:19
  +경례하다:동:2
  +경로:명:1
  +경로:명:51
  +경로당:명:3
  +경로도:명:1
  +경로사상:명:2
  +경로잔치:명:2
  +경루:명:1
  +경륜:명:12
  +경리:명:1
  +경리:명:14
  +경리과:명:1
  +경리부:명:2
  +경리실:명:1
  +경마:명:1
  +경마:명:1
  +경마잡이:명:1
  +경마장:명:4
  +경망:명:1
  +경매:명:6
  +경매장:명:2
  +경매제:명:6
  +경면:명:1
  +경멸:명:7
  +경멸스럽다:형:1
  +경멸적:명:1
  +경멸하다:동:9
  +경무과장:명:1
  +경물:명:2
  +경미:명:3
  +경미하다:형:7
  +경박단소:명:1
  +경박스럽다:형:1
  +경박하다:형:5
  +경배:명:2
  +경배하다:동:3
  +경변:명:3
  +경보:명:14
  +경보기:명:6
  +경보음:명:3
  +경보장치:명:2
  +경비:명:23
  +경비:명:37
  +경비단:명:3
  +경비단장:명:1
  +경비대:명:3
  +경비망:명:2
  +경비병:명:3
  +경비실:명:6
  +경비원:명:8
  +경비하다:동:3
  +경비행기:명:4
  +경사:명:13
  +경사:명:2
  +경사:명:6
  +경사:명:9
  +경사로:명:2
  +경사스럽다:형:3
  +경사지다:동:4
  +경상:명:1
  +경상:명:4
  +경상계:명:1
  +경상도:명:1
  +경상비:명:1
  +경상자:명:1
  +경상차:명:2
  +경색:명:6
  +경색되다:동:2
  +경선:명:11
  +경선론자:명:1
  +경선자:명:1
  +경솔하다:형:3
  +경솔히:부:1
  +경수:명:1
  +경수로:명:17
  +경수로형:명:2
  +경술국치:명:2
  +경승:명:1
  +경시:명:13
  +경시:명:2
  +경시되다:동:1
  +경시하다:동:4
  +경신하다:동:2
  +경악:명:7
  +경악하다:동:9
  +경애:명:1
  +경양식:명:4
  +경어:명:1
  +경어법:명:1
  +경연:명:7
  +경연장:명:2
  +경영:명:216
  +경영권:명:13
  +경영난:명:5
  +경영대:명:2
  +경영되다:동:2
  +경영론:명:1
  +경영인:명:13
  +경영자:명:16
  +경영주:명:2
  +경영진:명:11
  +경영체:명:1
  +경영하다:동:25
  +경영학:명:9
  +경영학과:명:18
  +경외:명:1
  +경외감:명:1
  +경외하다:동:1
  +경용:명:1
  +경우:명:1,976
  +경원하다:동:1
  +경위:명:1
  +경위:명:2
  +경위:명:23
  +경위서:명:1
  +경유:명:1
  +경유:명:2
  +경유지:명:1
  +경유하다:동:7
  +경음악:명:1
  +경의:명:7
  +경이:명:1
  +경이감:명:1
  +경이롭다:형:6
  +경이적:관:1
  +경이적:명:3
  +경작:명:5
  +경작권:명:1
  +경작자:명:10
  +경작지:명:8
  +경작하다:동:9
  +경장:명:30
  +경쟁:명:284
  +경쟁국:명:1
  +경쟁기:명:7
  +경쟁력:명:95
  +경쟁률:명:16
  +경쟁사:명:24
  +경쟁시키다:동:1
  +경쟁심:명:4
  +경쟁의식:명:2
  +경쟁자:명:20
  +경쟁적:관:3
  +경쟁적:명:20
  +경쟁하다:동:26
  +경적:명:7
  +경전:명:39
  +경전철:명:5
  +경전투:명:1
  +경정하다:동:1
  +경제:명:1
  +경제:명:956
  +경제계:명:14
  +경제관:명:2
  +경제관념:명:1
  +경제국:명:1
  +경제국장:명:2
  +경제권:명:2
  +경제권:명:3
  +경제난:명:9
  +경제력:명:37
  +경제론:명:1
  +경제사:명:23
  +경제사가:명:1
  +경제사적:관:1
  +경제사적:명:2
  +경제사학:명:3
  +경제사학계:명:2
  +경제사학자:명:1
  +경제생활:명:4
  +경제성:명:10
  +경제인:명:5
  +경제적:관:154
  +경제적:명:86
  +경제주의:명:3
  +경제특구:명:10
  +경제하다:동:1
  +경제학:명:31
  +경제학계:명:1
  +경제학과:명:6
  +경제학부:명:2
  +경제학자:명:8
  +경제학적:관:8
  +경조사:명:2
  +경조사비:명:1
  +경종:명:2
  +경좌차:명:2
  +경주:명:10
  +경주장:명:1
  +경주하다:동:1
  +경중:명:1
  +경지:명:12
  +경지:명:54
  +경지율:명:1
  +경직되다:동:17
  +경직성:명:7
  +경진:명:4
  +경질:명:3
  +경질되다:동:2
  +경질하다:동:1
  +경차:명:1
  +경찰:명:343
  +경찰관:명:92
  +경찰력:명:2
  +경찰봉:명:1
  +경찰서:명:63
  +경찰서장:명:2
  +경찰차:명:1
  +경찰청:명:5
  +경찰청장:명:1
  +경창:명:1
  +경책:명:1
  +경청:명:5
  +경청하다:동:12
  +경추:명:4
  +경축:명:1
  +경치:명:33
  +경치다:동:3
  +경칩:명:2
  +경쾌하다:형:25
  +경쾌해지다:동:1
  +경탄:명:3
  +경탄스럽다:형:1
  +경탄하다:동:1
  +경편:명:1
  +경품:명:3
  +경품부:명:1
  +경합:명:5
  +경합자:명:2
  +경향:명:2
  +경향:명:208
  +경향극:명:4
  +경험:명:362
  +경험담:명:5
  +경험되다:동:2
  +경험률:명:2
  +경험시키다:동:1
  +경험자:명:3
  +경험적:관:23
  +경험적:명:9
  +경험주의적:명:1
  +경험칙:명:1
  +경험하다:동:100
  +경혈:명:1
  +경협:명:13
  +경호:명:19
  +경호관:명:2
  +경호실:명:24
  +경호실장:명:15
  +경호원:명:17
  +경호처장:명:1
  +경호하다:동:1
  +경화:명:1
  +경화:명:3
  +경화시키다:동:1
  +경화증:명:2
  +경황:명:3
  +경황:명:4
  +곁:명:143
  +곁가지:명:2
  +곁길:명:4
  +곁눈:명:1
  +곁눈질:명:5
  +곁눈질하다:동:1
  +곁들여지다:동:7
  +곁들이다:동:60
  +계:명:1
  +계:명:1
  +계:명:1
  +계:명:1
  +계:명:15
  +계간:명:3
  +계고:명:2
  +계고받다:동:1
  +계고장:명:2
  +계곡:명:84
  +계급:명:306
  +계급성:명:3
  +계급장:명:14
  +계급적:관:33
  +계급적:명:5
  +계급투쟁:명:11
  +계급화:명:1
  +계기:명:202
  +계기:명:3
  +계기성:명:1
  +계기적:관:3
  +계기적:명:4
  +계기하다:동:1
  +계단:명:98
  +계단식:명:4
  +계단투성이:명:1
  +계도:명:1
  +계도시키다:동:1
  +계도적:관:1
  +계도하다:동:2
  +계란:명:24
  +계란말이:명:1
  +계란형:명:1
  +계략:명:6
  +계량:명:1
  +계량기:명:1
  +계량스푼:명:1
  +계량컵:명:2
  +계량하다:동:1
  +계류:명:1
  +계류:명:7
  +계류형:명:1
  +계면조:명:1
  +계면쩍다:형:3
  +계면쩍어하다:동:1
  +계명:명:1
  +계모:명:4
  +계몽:명:24
  +계몽되다:동:1
  +계몽사상:명:8
  +계몽사상가:명:3
  +계몽시키다:동:2
  +계몽주의:명:8
  +계몽주의자:명:1
  +계몽주의적:명:1
  +계몽하다:동:5
  +계박:명:1
  +계발:명:3
  +계발되다:동:4
  +계발하다:동:10
  +계보:명:10
  +계산:명:121
  +계산기:명:59
  +계산대:명:7
  +계산되다:동:17
  +계산서:명:3
  +계산소:명:2
  +계산소장:명:1
  +계산적:명:1
  +계산표:명:1
  +계산하다:동:71
  +계상:명:1
  +계상:명:2
  +계상하다:동:1
  +계서적:관:2
  +계서적:명:5
  +계서화하다:동:1
  +계속:명:10
  +계속:부:488
  +계속되다:동:210
  +계속시키다:동:1
  +계속적:명:15
  +계속하다:동:1
  +계속하다:동:199
  +계수:명:1
  +계수기:명:1
  +계수배:명:1
  +계승:명:30
  +계승권:명:4
  +계승되다:동:9
  +계승시키다:동:2
  +계승자:명:2
  +계승적:명:1
  +계승하다:동:30
  +계시:명:4
  +계시다:동:197
  +계시다:보:159
  +계약:명:91
  +계약고:명:2
  +계약금:명:10
  +계약서:명:3
  +계약자:명:4
  +계약제:명:1
  +계약하다:동:5
  +계엄:명:10
  +계엄군:명:3
  +계엄령:명:10
  +계열:명:58
  +계열사:명:42
  +계열형:명:1
  +계열화:명:1
  +계열화되다:동:1
  +계원:명:8
  +계위:명:1
  +계유년:명:1
  +계율:명:13
  +계장:명:1
  +계장:명:9
  +계절:명:85
  +계절병:명:1
  +계절성:명:1
  +계절적:관:3
  +계절적:명:3
  +계절풍:명:10
  +계정:명:15
  +계제:명:7
  +계좌:명:65
  +계좌설:명:1
  +계주:명:1
  +계집:명:8
  +계집년:명:1
  +계집아이:명:13
  +계집애:명:33
  +계집종:명:4
  +계집질:명:1
  +계체량:명:1
  +계축:명:1
  +계측:명:1
  +계층:명:106
  +계층론:명:1
  +계층적:관:4
  +계층화:명:2
  +계층화되다:동:2
  +계층화하다:동:2
  +계통:명:33
  +계파:명:21
  +계파적:관:1
  +계피:명:2
  +계핏가루:명:1
  +계회:명:2
  +계획:명:490
  +계획과:명:1
  +계획되다:동:11
  +계획서:명:3
  +계획성:명:1
  +계획안:명:2
  +계획자:명:1
  +계획적:관:1
  +계획적:명:11
  +계획지:명:1
  +계획표:명:11
  +계획하다:동:38
  +계획학:명:1
  +곗돈:명:4
  +고:관:14
  +고:관:20
  +고:명:1
  +고:명:1
  +고:명:1
  +고:명:43
  +고가:명:1
  +고가:명:16
  +고가격:명:3
  +고가구:명:2
  +고가품:명:2
  +고가화:명:1
  +고갈:명:7
  +고갈되다:동:4
  +고갈시키다:동:2
  +고감도:명:3
  +고강도:명:3
  +고개:명:30
  +고개:명:489
  +고객:명:131
  +고객층:명:1
  +고갯길:명:9
  +고갯마루:명:5
  +고갯짓:명:3
  +고갯짓하다:동:1
  +고거:대:13
  +고것:대:5
  +고견:명:2
  +고결하다:형:8
  +고경:명:1
  +고고:명:2
  +고고:명:5
  +고고하다:형:6
  +고고학:명:10
  +고고학계:명:1
  +고고학자:명:4
  +고고학적:관:20
  +고고학적:명:3
  +고공:명:5
  +고공비행:명:2
  +고과:명:3
  +고관:명:3
  +고관대작:명:3
  +고광나무:명:4
  +고교:명:49
  +고교생:명:10
  +고구마:명:20
  +고국:명:17
  +고군분투:명:1
  +고궁:명:12
  +고귀하다:형:19
  +고금:명:2
  +고금동서:명:1
  +고금리:명:5
  +고급:명:114
  +고급문화:명:20
  +고급반:명:1
  +고급스럽다:형:19
  +고급적:명:1
  +고급품:명:2
  +고급하다:형:1
  +고급화:명:5
  +고급화되다:동:1
  +고급화시키다:동:1
  +고기:대:1
  +고기:명:213
  +고기능:명:3
  +고기소:명:1
  +고기압:명:3
  +고기압권:명:1
  +고기압부:명:1
  +고기잡이:명:7
  +고기잡이배:명:1
  +고기회:명:1
  +고길상사:명:1
  +고깃간:명:1
  +고깃국:명:4
  +고깃덩어리:명:1
  +고깃덩이:명:2
  +고깃배:명:1
  +고깝다:형:1
  +고꾸라지다:동:8
  +고난:명:20
  +고난도:명:2
  +고난받다:동:1
  +고년:대:1
  +고놈:대:1
  +고뇌:명:34
  +고뇌하다:동:9
  +고니오톡신:명:1
  +고다:동:8
  +고단백:명:1
  +고단백질:명:1
  +고단수:명:1
  +고단하다:형:10
  +고달파하다:동:1
  +고달프다:형:18
  +고답적:관:2
  +고답적:명:2
  +고대:명:352
  +고대:부:2
  +고대로:부:2
  +고대사:명:13
  +고대사학계:명:1
  +고대인:명:8
  +고대적:관:3
  +고대적:명:8
  +고대하다:동:10
  +고도:명:1
  +고도:명:3
  +고도:명:66
  +고도화:명:1
  +고독:명:24
  +고독감:명:4
  +고독하다:형:13
  +고독해지다:동:3
  +고동:명:1
  +고동:명:2
  +고동색:명:3
  +고동치다:동:1
  +고되다:형:21
  +고두밥:명:1
  +고두배:명:1
  +고둥:명:1
  +고드름:명:3
  +고득점자:명:1
  +고등:명:29
  +고등계:명:2
  +고등부:명:1
  +고등어:명:4
  +고등어자반:명:1
  +고등중학교:명:1
  +고등학교:명:172
  +고등학생:명:22
  +고딕:명:6
  +고딕체:명:5
  +고딩:명:2
  +고때고때:부:1
  +고락:명:4
  +고랑:명:1
  +고래:명:15
  +고래고래:부:10
  +고래논:명:3
  +고래답:명:1
  +고래서:불:1
  +고래실:명:1
  +고래잡이:명:1
  +고래희:명:1
  +고랭지:명:5
  +고량:명:2
  +고런:관:9
  +고렇다:형:4
  +고려:명:19
  +고려되다:동:13
  +고려되어지다:동:1
  +고려자기:명:1
  +고려장:명:2
  +고려조:명:4
  +고려청자:명:5
  +고려하다:동:153
  +고려하다:동:3
  +고령:명:8
  +고령자:명:1
  +고령지:명:1
  +고령층:명:1
  +고령토:명:1
  +고령화:명:1
  +고령화되다:동:1
  +고로:접:5
  +고로쇠나무:명:1
  +고료:명:1
  +고루:부:30
  +고루고루:부:5
  +고루하다:형:4
  +고르다:동:11
  +고르다:동:152
  +고르다:형:35
  +고름:명:3
  +고름:명:3
  +고름증:명:1
  +고리:명:31
  +고리고리하다:형:1
  +고리타분하다:형:1
  +고릴라:명:1
  +고립:명:7
  +고립감:명:4
  +고립되다:동:14
  +고립무원해지다:동:1
  +고립성:명:1
  +고립시키다:동:3
  +고립주의:명:1
  +고립화:명:4
  +고마움:명:14
  +고마워하다:동:8
  +고막:명:10
  +고만:부:7
  +고만고만하다:형:3
  +고만두다:동:1
  +고맙다:형:259
  +고매하다:형:5
  +고명:명:3
  +고명딸:명:3
  +고명해지다:동:1
  +고모:명:119
  +고모님:명:2
  +고모부:명:18
  +고목:명:1
  +고목:명:6
  +고목나무:명:1
  +고무:명:1
  +고무:명:24
  +고무공:명:1
  +고무나무:명:1
  +고무도장:명:1
  +고무되다:동:5
  +고무바퀴:명:1
  +고무신:명:15
  +고무신점:명:1
  +고무장갑:명:1
  +고무적:명:5
  +고무줄:명:16
  +고무줄놀이:명:4
  +고무총:명:3
  +고무풍선:명:7
  +고무하다:동:2
  +고문:명:13
  +고문:명:44
  +고문관:명:5
  +고문당하다:동:2
  +고문자:명:1
  +고문하다:동:3
  +고물:명:1
  +고물:명:6
  +고물가:명:3
  +고물고물하다:동:1
  +고물류:명:1
  +고물상:명:8
  +고민:명:128
  +고민거리:명:4
  +고민녀:명:1
  +고민되다:동:1
  +고민하다:동:66
  +고밀도:명:2
  +고발:명:53
  +고발되다:동:5
  +고발인:명:10
  +고발자:명:1
  +고발장:명:6
  +고발하다:동:24
  +고배:명:1
  +고백:명:26
  +고백적:명:1
  +고백하다:동:29
  +고법:명:9
  +고변:명:2
  +고변하다:동:1
  +고별:명:2
  +고별사:명:1
  +고보:명:1
  +고봉:명:1
  +고부:명:1
  +고부가:명:7
  +고부간:명:6
  +고분:명:17
  +고분고분:부:6
  +고분군:명:2
  +고비:명:1
  +고비:명:31
  +고비용:명:5
  +고뿔:명:1
  +고삐:명:17
  +고삐리:명:1
  +고사:명:1
  +고사:명:1
  +고사:명:1
  +고사:명:2
  +고사:명:4
  +고사:명:45
  +고사리:명:15
  +고사실:명:1
  +고사장:명:3
  +고사포:명:2
  +고사포병:명:2
  +고사하고:부:15
  +고사하다:동:2
  +고사하다:동:4
  +고산:명:5
  +고산대:명:1
  +고상짜:명:1
  +고상하다:형:18
  +고샅:명:1
  +고샅길:명:1
  +고색창연하다:형:3
  +고생:명:114
  +고생고생하다:동:1
  +고생길:명:1
  +고생대:명:1
  +고생물학자:명:1
  +고생물학적:명:1
  +고생바가지:명:2
  +고생스럽다:형:3
  +고생시키다:동:2
  +고생하다:동:67
  +고서:명:3
  +고성:명:1
  +고성능:명:7
  +고성장:명:1
  +고성제:명:2
  +고소:명:36
  +고소권자:명:1
  +고소득:명:4
  +고소원:명:1
  +고소인:명:10
  +고소자:명:1
  +고소장:명:1
  +고소하다:동:1
  +고소하다:동:12
  +고소하다:형:19
  +고속:명:1
  +고속:명:28
  +고속도:명:1
  +고속도:명:2
  +고속도로:명:35
  +고속버스:명:12
  +고속화:명:2
  +고수:명:1
  +고수:명:1
  +고수:명:8
  +고수:명:9
  +고수머리:명:2
  +고수부지:명:8
  +고수시키다:동:1
  +고수익:명:3
  +고수하다:동:37
  +고순도:명:1
  +고스란히:부:28
  +고스톱:명:2
  +고스트:명:1
  +고슬고슬하다:형:1
  +고슴도치:명:2
  +고승:명:33
  +고시:명:16
  +고시:명:2
  +고시:명:2
  +고시되다:동:1
  +고시생:명:2
  +고시원:명:1
  +고시율:명:1
  +고시하다:동:3
  +고식적:명:4
  +고심:명:8
  +고심하다:동:21
  +고싱아:명:1
  +고싸움:명:1
  +고아:명:11
  +고아원:명:8
  +고아적:관:1
  +고안:명:2
  +고안되다:동:6
  +고안하다:동:13
  +고압:명:2
  +고압선:명:5
  +고압적:관:2
  +고압적:명:1
  +고액:명:6
  +고약하다:형:14
  +고얀:관:2
  +고양:명:7
  +고양감:명:1
  +고양되다:동:7
  +고양시키다:동:9
  +고양이:명:110
  +고양하다:동:3
  +고양화:명:3
  +고어:명:1
  +고에너지:명:1
  +고역:명:9
  +고역스럽다:형:1
  +고열:명:7
  +고엽제:명:4
  +고영양식:명:1
  +고온:명:8
  +고왕:명:1
  +고요:명:8
  +고요하다:형:51
  +고요해지다:동:4
  +고요히:부:8
  +고용:명:21
  +고용:명:27
  +고용되다:동:4
  +고용인:명:2
  +고용자:명:1
  +고용주:명:4
  +고용하다:동:17
  +고원:명:7
  +고위:명:74
  +고위급:명:11
  +고위도:명:1
  +고위직:명:4
  +고위층:명:9
  +고위험:명:1
  +고유:명:50
  +고유성:명:3
  +고유어:명:2
  +고유종:명:5
  +고유하다:형:37
  +고육지책:명:1
  +고육책:명:3
  +고율:명:6
  +고을:명:22
  +고음:명:2
  +고음계:명:1
  +고읍:명:2
  +고의:명:1
  +고의:명:11
  +고의적:관:1
  +고의적:명:12
  +고이:부:9
  +고이다:동:26
  +고인:명:1
  +고인:명:14
  +고인돌:명:2
  +고인쇄:명:1
  +고인플레:명:1
  +고임:명:5
  +고임국:명:1
  +고임금:명:7
  +고입:명:10
  +고자세:명:1
  +고자질:명:4
  +고자질하다:동:3
  +고작:부:64
  +고장:명:154
  +고장:명:55
  +고쟁이:명:1
  +고저:명:1
  +고적:명:2
  +고적감:명:3
  +고적지:명:1
  +고적하다:동:2
  +고전:명:77
  +고전:명:8
  +고전극:명:4
  +고전기:명:2
  +고전물:명:1
  +고전미:명:1
  +고전적:관:24
  +고전적:명:19
  +고전주의:명:31
  +고전주의자:명:3
  +고전주의적:관:7
  +고전주의적:명:4
  +고전하다:동:4
  +고전학파:명:1
  +고정:명:13
  +고정간첩:명:2
  +고정관념:명:35
  +고정급화되다:동:1
  +고정되다:동:39
  +고정밀도:명:1
  +고정불변:명:2
  +고정불변하다:형:2
  +고정선:명:3
  +고정시키다:동:17
  +고정적:명:3
  +고정하다:동:1
  +고정하다:동:7
  +고정화:명:1
  +고조:명:5
  +고조:명:7
  +고조되다:동:27
  +고조시키다:동:7
  +고졸:명:15
  +고종:명:2
  +고종명:명:1
  +고주망태:명:1
  +고준위:명:1
  +고즈넉이:부:2
  +고즈넉하다:형:6
  +고증:명:3
  +고증하다:동:4
  +고증학적:명:1
  +고지:명:1
  +고지:명:2
  +고지:명:30
  +고지:명:6
  +고지가:명:2
  +고지대:명:3
  +고지되다:동:1
  +고지방질:명:1
  +고지서:명:5
  +고지식:명:1
  +고지식하다:형:8
  +고지하다:동:2
  +고지혈증:명:2
  +고질:명:3
  +고질스럽다:형:1
  +고질적:관:3
  +고질적:명:15
  +고질화되다:동:1
  +고집:명:34
  +고집멸도:명:1
  +고집불통:명:2
  +고집스럽다:형:6
  +고집스레:부:1
  +고집쟁이:명:1
  +고집하다:동:49
  +고집형:명:1
  +고차원:명:2
  +고차원적:관:1
  +고차원적:명:1
  +고차적:명:1
  +고착:명:2
  +고착되다:동:2
  +고착시키다:동:1
  +고찰:명:24
  +고찰되다:동:3
  +고찰하다:동:19
  +고참:명:11
  +고창:명:1
  +고창기:명:1
  +고창되다:동:1
  +고철:명:12
  +고체:명:7
  +고쳐먹다:동:5
  +고쳐지다:동:13
  +고초:명:6
  +고초일:명:2
  +고촉:명:1
  +고촉등:명:1
  +고추:명:102
  +고추기름:명:1
  +고추나무:명:1
  +고추냉이:명:4
  +고추잠자리:명:1
  +고추장:명:29
  +고추장무침:명:1
  +고추장볶이:명:2
  +고출력:명:1
  +고춧가루:명:15
  +고충:명:18
  +고취시키다:동:3
  +고취하다:동:1
  +고층:명:17
  +고치다:동:151
  +고칼슘:명:2
  +고탄수화물:명:1
  +고통:명:225
  +고통받다:동:14
  +고통스러워하다:동:2
  +고통스럽다:형:54
  +고투:명:1
  +고파지다:동:1
  +고품위:명:1
  +고품질:명:9
  +고풍스럽다:형:2
  +고프다:형:30
  +고하:명:5
  +고하다:동:11
  +고학:명:1
  +고학년:명:3
  +고학력:명:7
  +고학력자:명:2
  +고학생:명:3
  +고함:명:46
  +고해:명:3
  +고해:명:4
  +고해바치다:동:1
  +고해상도:명:1
  +고행:명:8
  +고향:명:356
  +고혈압:명:14
  +고형:명:2
  +고혹적:명:2
  +고혼:명:1
  +고화질:명:1
  +고환:명:5
  +고효율:명:1
  +고효율화:명:1
  +고희:명:2
  +곡:명:1
  +곡:명:58
  +곡괭이:명:4
  +곡령:명:1
  +곡류:명:2
  +곡류:명:5
  +곡류천:명:1
  +곡률:명:1
  +곡목:명:1
  +곡물:명:34
  +곡생초:명:2
  +곡선:명:37
  +곡성:명:2
  +곡식:명:58
  +곡예:명:4
  +곡우:명:2
  +곡절:명:1
  +곡절:명:2
  +곡조:명:4
  +곡창:명:5
  +곡하다:동:1
  +곡해되다:동:1
  +곡해하다:동:1
  +곤경:명:12
  +곤고하다:형:3
  +곤곤히:부:1
  +곤궁:명:2
  +곤두박질:명:2
  +곤두박질치다:동:5
  +곤두박질하다:동:2
  +곤두서다:동:6
  +곤두세우다:동:22
  +곤드레만드레:부:2
  +곤란:명:12
  +곤란성:명:1
  +곤란하다:형:54
  +곤란해지다:동:7
  +곤로:명:2
  +곤룡포:명:1
  +곤봉:명:27
  +곤비:명:1
  +곤색:명:11
  +곤욕:명:10
  +곤욕스럽다:형:1
  +곤장:명:3
  +곤조통:명:1
  +곤죽:명:1
  +곤줄박이:명:3
  +곤지:명:1
  +곤지곤지:명:1
  +곤충:명:16
  +곤충학자:명:1
  +곤핍하다:형:1
  +곤하다:형:2
  +곤혹:명:2
  +곤혹스러워하다:동:4
  +곤혹스럽다:형:20
  +곤히:부:4
  +곧:접:623
  +곧다:형:28
  +곧바로:부:63
  +곧은길:명:1
  +곧이곧대로:부:10
  +곧이듣기다:동:1
  +곧이듣다:동:1
  +곧이어:부:17
  +곧잘:부:49
  +곧장:부:39
  +곧추:부:1
  +곧추서다:동:1
  +곧추세우다:동:1
  +골:명:1
  +골:명:1
  +골:명:15
  +골:명:209
  +골:명:4
  +골:명:5
  +골격:명:19
  +골격계:명:1
  +골고루:부:45
  +골나다:동:1
  +골네트:명:2
  +골다:동:23
  +골다공증:명:3
  +골대:명:7
  +골동:명:1
  +골동품:명:13
  +골동품계:명:1
  +골동품점:명:1
  +골드:명:1
  +골드브라운:명:1
  +골드펄:명:1
  +골든글러브:명:4
  +골든아워:명:1
  +골똘하다:형:1
  +골똘히:부:8
  +골라내다:동:8
  +골라잡다:동:1
  +골리다:동:2
  +골마루:명:1
  +골마지:명:1
  +골막:명:1
  +골머리:명:6
  +골목:명:74
  +골목골목:명:1
  +골목길:명:22
  +골목집:명:3
  +골몰:명:1
  +골몰하다:동:7
  +골문:명:12
  +골반:명:16
  +골방:명:7
  +골백번:명:1
  +골뱅이:명:2
  +골병:명:2
  +골사:명:1
  +골샌님:명:1
  +골속:명:1
  +골수:명:5
  +골싸다:동:1
  +골인:명:11
  +골인하다:동:4
  +골자:명:12
  +골잡이:명:7
  +골재:명:2
  +골절:명:3
  +골절상:명:1
  +골조:명:2
  +골짜구니:명:3
  +골짜기:명:49
  +골짝:명:2
  +골초:명:2
  +골초형:명:1
  +골치:명:28
  +골칫거리:명:5
  +골칫덩이:명:1
  +골키퍼:명:34
  +골키핑:명:2
  +골탕:명:2
  +골통:명:6
  +골판지:명:2
  +골퍼:명:1
  +골포스트:명:1
  +골품:명:7
  +골품제:명:8
  +골품제적:명:1
  +골프:명:31
  +골프공:명:2
  +골프복:명:1
  +골프용품:명:1
  +골프장:명:29
  +골프채:명:1
  +곪다:동:5
  +곬:명:1
  +곯다:동:2
  +곯아떨어지다:동:5
  +곰:명:40
  +곰곰:부:6
  +곰곰이:부:19
  +곰돌이:명:1
  +곰방대:명:3
  +곰보:명:3
  +곰살궂다:형:2
  +곰장어:명:1
  +곰지락곰지락:부:1
  +곰탕:명:2
  +곰팡냄새:명:1
  +곰팡이:명:8
  +곰팡이균:명:2
  +곱:명:4
  +곱다:형:1
  +곱다:형:173
  +곱디곱다:형:2
  +곱빼기:명:1
  +곱사등이:명:4
  +곱상하다:형:3
  +곱셈:명:7
  +곱송그리다:동:1
  +곱씹다:동:12
  +곱자:명:9
  +곱절:명:5
  +곱접다:동:1
  +곱창:명:1
  +곱창전골:명:5
  +곱하다:동:4
  +곳:명:1,354
  +곳간:명:6
  +곳곳:명:82
  +곳곳이:부:2
  +공:관:4
  +공:명:135
  +공:명:224
  +공:명:29
  +공:명:4
  +공:명:9
  +공:수:2
  +공가:명:1
  +공가:명:1
  +공간:명:346
  +공간감:명:4
  +공간대:명:1
  +공간적:관:5
  +공간적:명:2
  +공갈:명:7
  +공갈단:명:1
  +공갈치다:동:2
  +공감:명:27
  +공감대:명:18
  +공감하다:동:27
  +공강:명:4
  +공개:명:172
  +공개강좌:명:1
  +공개경쟁:명:1
  +공개념:명:8
  +공개도:명:1
  +공개되다:동:31
  +공개론자:명:1
  +공개리:명:1
  +공개적:관:1
  +공개적:명:17
  +공개하다:동:78
  +공개화되다:동:1
  +공격:명:110
  +공격력:명:3
  +공격받다:동:2
  +공격성:명:11
  +공격수:명:9
  +공격자:명:1
  +공격적:관:3
  +공격적:명:12
  +공격하다:동:46
  +공격형:명:9
  +공경:명:15
  +공경되다:동:2
  +공경스럽다:형:1
  +공경하다:동:32
  +공계:명:1
  +공고:명:15
  +공고:명:2
  +공고되다:동:1
  +공고일:명:2
  +공고하다:동:1
  +공고하다:형:4
  +공고해지다:동:1
  +공고히:부:3
  +공공:명:47
  +공공건물:명:2
  +공공복리:명:1
  +공공성:명:4
  +공공시설:명:5
  +공공연하다:형:16
  +공공연히:부:13
  +공공요금:명:4
  +공공용:명:1
  +공공용지:명:1
  +공공장소:명:10
  +공공적:관:1
  +공공질서:명:2
  +공과:명:1
  +공과:명:3
  +공과:명:9
  +공과금:명:1
  +공관:명:16
  +공관원:명:1
  +공교롭다:형:17
  +공교육:명:2
  +공교육비:명:2
  +공구:명:20
  +공군:명:48
  +공권력:명:28
  +공금:명:1
  +공금리:명:1
  +공급:명:126
  +공급관:명:5
  +공급기:명:1
  +공급난:명:1
  +공급되다:동:11
  +공급량:명:3
  +공급받다:동:4
  +공급분:명:1
  +공급원:명:3
  +공급자:명:3
  +공급책:명:1
  +공급하다:동:52
  +공기:명:159
  +공기:명:17
  +공기:명:4
  +공기놀이:명:1
  +공기놀이하다:동:1
  +공기업:명:17
  +공기업적:관:1
  +공기업체:명:2
  +공기주머니:명:1
  +공기총:명:4
  +공깃돌:명:2
  +공납:명:8
  +공납금:명:3
  +공납적:명:1
  +공납제:명:1
  +공납제적:관:1
  +공납제적:명:1
  +공놀이:명:6
  +공다루기:명:1
  +공단:명:4
  +공단:명:5
  +공단:명:53
  +공대:명:10
  +공대:명:2
  +공대공:명:1
  +공덕:명:1
  +공돌이:명:1
  +공동:명:1
  +공동:명:234
  +공동묘지:명:2
  +공동생활:명:5
  +공동적:명:1
  +공동체:명:231
  +공동체론:명:1
  +공동체원:명:1
  +공동체적:관:20
  +공동체적:명:13
  +공동체화하다:동:1
  +공동화:명:6
  +공들다:동:2
  +공들이다:동:4
  +공람:명:1
  +공람하다:동:1
  +공략:명:1
  +공략:명:10
  +공략하다:동:12
  +공력:명:1
  +공로:명:12
  +공론:명:1
  +공론:명:1
  +공론화:명:1
  +공론화되다:동:1
  +공론화하다:동:1
  +공룡:명:7
  +공리:명:1
  +공리:명:1
  +공리:명:2
  +공리공론:명:1
  +공리적:관:2
  +공립:명:4
  +공립학교:명:1
  +공명:명:2
  +공명:명:7
  +공명선거:명:23
  +공명정대하다:형:3
  +공명정대히:부:1
  +공명하다:동:1
  +공명하다:동:3
  +공명하다:형:3
  +공모:명:16
  +공모:명:4
  +공모전:명:3
  +공모주:명:5
  +공모하다:동:3
  +공모하다:동:4
  +공무:명:26
  +공무원:명:118
  +공무원제:명:1
  +공문:명:16
  +공문서:명:4
  +공문서식:명:1
  +공문화되다:동:1
  +공물:명:1
  +공민:명:1
  +공박하다:동:1
  +공방:명:11
  +공방전:명:6
  +공백:명:16
  +공백기:명:2
  +공범:명:9
  +공범자:명:2
  +공법:명:1
  +공법:명:8
  +공법학자:명:1
  +공병:명:2
  +공보:명:22
  +공보관:명:3
  +공보실:명:1
  +공보실장:명:1
  +공복:명:1
  +공복:명:2
  +공복:명:2
  +공복감:명:1
  +공부:명:423
  +공부:명:5
  +공부되다:동:1
  +공부반:명:1
  +공부방:명:8
  +공부시키다:동:11
  +공부하다:동:273
  +공분:명:3
  +공붓벌레:명:2
  +공비:명:34
  +공사:명:1
  +공사:명:1
  +공사:명:166
  +공사:명:2
  +공사:명:6
  +공사립:명:1
  +공사비:명:12
  +공사장:명:27
  +공사채형:명:1
  +공사판:명:3
  +공사하다:동:4
  +공산:명:21
  +공산:명:6
  +공산군:명:1
  +공산권:명:11
  +공산당:명:79
  +공산물:명:1
  +공산제:명:1
  +공산주의:명:38
  +공산주의자:명:8
  +공산품:명:17
  +공산화:명:1
  +공산화되다:동:2
  +공상:명:16
  +공상적:관:2
  +공상하다:동:1
  +공생:명:16
  +공생균:명:1
  +공생하다:동:4
  +공석:명:1
  +공석:명:1
  +공선:명:2
  +공설:명:1
  +공세:명:1
  +공세:명:35
  +공세식:명:1
  +공세형:명:1
  +공세화하다:동:1
  +공소:명:15
  +공소장:명:1
  +공손하다:형:20
  +공손히:부:11
  +공수:명:1
  +공수:명:1
  +공수:명:5
  +공수:명:7
  +공수단:명:1
  +공수래공수거:명:1
  +공수배:명:1
  +공수복:명:1
  +공수하다:동:2
  +공수형:명:1
  +공순이:명:1
  +공술:명:1
  +공습:명:6
  +공습경보:명:3
  +공습하다:동:1
  +공시:명:1
  +공시:명:13
  +공시되다:동:1
  +공시적:명:2
  +공식:명:1
  +공식:명:1
  +공식:명:87
  +공식적:관:3
  +공식적:명:44
  +공식형:명:1
  +공식화:명:2
  +공식화하다:동:3
  +공신:명:10
  +공신력:명:6
  +공심돈:명:1
  +공안:명:23
  +공안부:명:2
  +공약:명:1
  +공약:명:73
  +공약수:명:1
  +공약하다:동:6
  +공양:명:2
  +공양목:명:1
  +공양사:명:1
  +공언:명:4
  +공언하다:동:19
  +공업:명:209
  +공업계:명:1
  +공업국:명:9
  +공업부:명:1
  +공업용:명:1
  +공업용수:명:5
  +공업적:관:1
  +공업체:명:1
  +공업품:명:1
  +공업학교:명:1
  +공업화:명:1
  +공업화되다:동:1
  +공여:명:6
  +공여되다:동:1
  +공여하다:동:1
  +공역:명:1
  +공역:명:2
  +공연:명:211
  +공연단:명:4
  +공연되다:동:16
  +공연물:명:1
  +공연성:명:1
  +공연장:명:38
  +공연하다:동:14
  +공연하다:동:2
  +공연하다:형:2
  +공연하다:형:4
  +공연히:부:1
  +공연히:부:29
  +공염불:명:1
  +공영:명:24
  +공영제:명:2
  +공영하다:동:1
  +공예:명:5
  +공예관:명:1
  +공예실:명:1
  +공예품:명:5
  +공용:명:3
  +공원:명:4
  +공원:명:70
  +공원묘지:명:1
  +공원수:명:1
  +공원화:명:1
  +공유:명:16
  +공유:명:2
  +공유되다:동:8
  +공유물:명:1
  +공유하다:동:34
  +공유화되다:동:1
  +공음전시:명:1
  +공익:명:14
  +공익:명:2
  +공익사업:명:1
  +공익성:명:3
  +공익적:명:1
  +공인:명:16
  +공인:명:5
  +공인되다:동:2
  +공인되다:동:5
  +공인하다:동:3
  +공인하다:동:3
  +공일:명:1
  +공자:명:2
  +공작:명:12
  +공작:명:2
  +공작:명:3
  +공작원:명:1
  +공작하다:동:2
  +공장:명:319
  +공장살이:명:1
  +공장장:명:12
  +공장터:명:8
  +공저:명:2
  +공적:관:1
  +공적:관:2
  +공적:명:10
  +공적:명:3
  +공전:명:11
  +공전:명:2
  +공전:명:2
  +공전:명:5
  +공전론:명:1
  +공전제:명:2
  +공전하다:동:1
  +공전하다:동:1
  +공정:명:12
  +공정:명:2
  +공정:명:31
  +공정성:명:15
  +공정하다:형:38
  +공정해지다:동:1
  +공제:명:8
  +공제당하다:동:1
  +공제하다:동:1
  +공조:명:1
  +공조:명:28
  +공조하다:동:1
  +공존:명:11
  +공존하다:동:12
  +공주:명:19
  +공주병:명:10
  +공중:명:11
  +공중:명:54
  +공중도덕:명:3
  +공중도덕심:명:4
  +공중목욕탕:명:1
  +공중변소:명:1
  +공중분해되다:동:1
  +공중위생:명:3
  +공중전:명:4
  +공중전화:명:18
  +공중제비:명:2
  +공중파:명:2
  +공증인:명:1
  +공지:명:1
  +공지:명:2
  +공직:명:20
  +공직자:명:40
  +공짜:명:26
  +공짜배기:명:2
  +공차기:명:3
  +공찰:명:1
  +공참:명:1
  +공채:명:13
  +공채:명:6
  +공채하다:동:2
  +공책:명:35
  +공처가:명:2
  +공천:명:68
  +공천되다:동:1
  +공천받다:동:1
  +공천설:명:1
  +공천자:명:6
  +공천하다:동:2
  +공청:명:1
  +공청회:명:19
  +공체:명:1
  +공초:명:3
  +공초받다:동:2
  +공출:명:9
  +공치기:명:2
  +공치사:명:2
  +공탁:명:1
  +공터:명:17
  +공통:명:18
  +공통되다:동:26
  +공통분모:명:3
  +공통성:명:3
  +공통어:명:1
  +공통적:관:3
  +공통적:명:27
  +공통점:명:21
  +공판:명:23
  +공판부:명:1
  +공판하다:동:1
  +공평:명:2
  +공평무사하다:형:1
  +공평하다:형:23
  +공평히:부:1
  +공포:명:101
  +공포감:명:14
  +공포되다:동:5
  +공포물:명:1
  +공포심:명:4
  +공포적:관:1
  +공포증:명:2
  +공포하다:동:4
  +공표:명:4
  +공표권:명:1
  +공표되다:동:3
  +공표죄:명:1
  +공표하다:동:10
  +공학:명:1
  +공학:명:24
  +공학과:명:16
  +공학자:명:3
  +공학적:관:2
  +공학적:명:3
  +공한:명:1
  +공항:명:88
  +공항버스:명:5
  +공해:명:4
  +공해:명:54
  +공해병:명:1
  +공해전:명:1
  +공허:명:3
  +공허감:명:1
  +공허하다:형:24
  +공허해지다:동:2
  +공허해하다:동:1
  +공헌:명:13
  +공헌도:명:1
  +공헌론:명:1
  +공헌하다:동:12
  +공화국:명:49
  +공화정:명:4
  +공화제:명:1
  +공황:명:4
  +공황증:명:1
  +공회:명:2
  +공회전시키다:동:1
  +공훈전:명:3
  +공휴일:명:16
  +공히:부:10
  +곶:명:1
  +곶감:명:6
  +과:명:222
  +과:명:66
  +과:의:1
  +과감하다:형:39
  +과감히:부:21
  +과객:명:1
  +과거:명:18
  +과거:명:387
  +과거사:명:3
  +과거식:명:1
  +과거제:명:3
  +과거지사:명:4
  +과거형:명:1
  +과격:명:16
  +과격파:명:1
  +과격하다:형:18
  +과기:명:1
  +과꽃:명:1
  +과남풀꽃:명:1
  +과녁:명:7
  +과녁판:명:1
  +과년하다:형:3
  +과다:명:22
  +과다하다:형:16
  +과단성:명:1
  +과당:명:6
  +과대:명:8
  +과대망상적:명:1
  +과대평가:명:1
  +과대평가하다:동:4
  +과대하다:동:1
  +과대하다:형:2
  +과도:명:1
  +과도:명:10
  +과도:명:2
  +과도기:명:11
  +과도기적:관:6
  +과도적:관:2
  +과도적:명:1
  +과도하다:형:26
  +과도히:부:2
  +과람하다:형:1
  +과량:명:1
  +과로:명:5
  +과로하다:동:2
  +과료:명:1
  +과립:명:1
  +과립형:명:3
  +과립화하다:동:1
  +과목:명:78
  +과목주의:명:1
  +과묵해지다:동:1
  +과묵형:명:1
  +과문하다:형:3
  +과민:명:7
  +과민성:명:4
  +과민하다:형:2
  +과밀:명:3
  +과밀하다:형:1
  +과반:명:2
  +과반수:명:21
  +과보호:명:2
  +과부:명:25
  +과부댁:명:2
  +과분하다:형:4
  +과분해하다:동:1
  +과사:명:1
  +과산화:명:2
  +과세:명:22
  +과세되다:동:1
  +과세하다:동:3
  +과소비:명:21
  +과소평가되다:동:2
  +과소평가하다:동:3
  +과속:명:2
  +과수:명:11
  +과수댁:명:3
  +과수원:명:21
  +과시:명:10
  +과시하다:동:53
  +과식:명:4
  +과신:명:1
  +과실:명:2
  +과실:명:4
  +과실상규:명:1
  +과실음료:명:1
  +과언:명:25
  +과업:명:16
  +과연:부:258
  +과열:명:20
  +과열되다:동:1
  +과열시키다:동:1
  +과오:명:12
  +과외:명:21
  +과외비:명:1
  +과외시키다:동:3
  +과욕:명:5
  +과용:명:1
  +과용하다:동:1
  +과원:명:1
  +과월:명:1
  +과유불급:명:1
  +과음:명:2
  +과음하다:동:1
  +과일:명:153
  +과일나무:명:1
  +과일주:명:1
  +과일즙:명:2
  +과잉:명:55
  +과잉보호:명:1
  +과잉보호하다:동:1
  +과자:명:43
  +과장:명:1
  +과장:명:12
  +과장:명:22
  +과장:명:91
  +과장되다:동:26
  +과장적:관:1
  +과장하다:동:17
  +과점:명:2
  +과점적:관:3
  +과점하다:동:1
  +과정:명:1,014
  +과정:명:29
  +과정:명:3
  +과정론적:명:1
  +과정적:관:1
  +과제:명:1
  +과제:명:182
  +과제물:명:4
  +과줄:명:1
  +과중:명:1
  +과중하다:형:16
  +과중해지다:동:1
  +과즙:명:10
  +과채류:명:1
  +과태료:명:1
  +과표:명:7
  +과하다:형:5
  +과학:명:559
  +과학계:명:5
  +과학과:명:1
  +과학관:명:1
  +과학도:명:3
  +과학물:명:1
  +과학사:명:2
  +과학사가:명:2
  +과학성:명:3
  +과학실:명:4
  +과학자:명:131
  +과학적:관:80
  +과학적:명:77
  +과학주의:명:5
  +과학주의적:관:1
  +과학화:명:6
  +과학화되다:동:1
  +과학화하다:동:1
  +과형:명:1
  +과히:부:7
  +곽:명:1
  +관:명:1
  +관:명:10
  +관:명:3
  +관:명:30
  +관:의:2
  +관가:명:11
  +관개:명:12
  +관객:명:122
  +관객석:명:6
  +관객층:명:2
  +관건:명:11
  +관계:명:1
  +관계:명:1
  +관계:명:1
  +관계:명:1,175
  +관계:명:26
  +관계국:명:2
  +관계되다:동:52
  +관계망:명:1
  +관계법:명:3
  +관계사:명:6
  +관계없다:형:12
  +관계없이:부:36
  +관계인:명:1
  +관계있다:형:3
  +관계자:명:230
  +관계적:관:5
  +관계하다:동:21
  +관곡:명:1
  +관공서:명:8
  +관광:명:131
  +관광객:명:53
  +관광단:명:1
  +관광단지:명:4
  +관광버스:명:5
  +관광업계:명:1
  +관광업체:명:2
  +관광전:명:7
  +관광지:명:23
  +관광지화되다:동:1
  +관광하다:동:2
  +관광학과:명:1
  +관광호텔:명:3
  +관군:명:4
  +관권:명:8
  +관극:명:5
  +관극하다:동:1
  +관급:명:4
  +관내:명:8
  +관념:명:99
  +관념되다:동:1
  +관념론:명:6
  +관념론자:명:1
  +관념성:명:1
  +관념적:관:7
  +관념적:명:12
  +관념주의:명:1
  +관노:명:6
  +관능:명:3
  +관능미:명:1
  +관능성:명:1
  +관능적:관:3
  +관능적:명:4
  +관능주의:명:3
  +관대:명:1
  +관대하다:동:1
  +관대하다:동:1
  +관대하다:형:11
  +관대해지다:동:2
  +관동:명:15
  +관두다:동:8
  +관두형:명:1
  +관등:명:3
  +관람:명:15
  +관람객:명:22
  +관람료:명:2
  +관람자:명:2
  +관람자적:관:1
  +관람하다:동:14
  +관련:명:478
  +관련국:명:1
  +관련되다:동:179
  +관련설:명:1
  +관련성:명:5
  +관련세:명:2
  +관련시키다:동:7
  +관련업:명:1
  +관련자:명:28
  +관련지우다:동:2
  +관련짓다:동:3
  +관련하다:동:154
  +관례:명:1
  +관례:명:30
  +관례화되다:동:1
  +관록:명:5
  +관료:명:59
  +관료배:명:1
  +관료의식:명:1
  +관료적:관:9
  +관료전:명:9
  +관료전제:명:3
  +관료제:명:2
  +관료주의:명:2
  +관료주의적:관:1
  +관료주의적:명:2
  +관료층:명:1
  +관료화:명:3
  +관료화하다:동:3
  +관류되다:동:1
  +관류율:명:1
  +관류하다:동:9
  +관리:명:259
  +관리:명:80
  +관리계:명:2
  +관리계장:명:1
  +관리과:명:6
  +관리과장:명:2
  +관리관:명:2
  +관리국장:명:2
  +관리되다:동:6
  +관리령:명:1
  +관리법:명:1
  +관리부:명:1
  +관리부장:명:1
  +관리비:명:11
  +관리사:명:1
  +관리소:명:4
  +관리실:명:4
  +관리실장:명:4
  +관리원:명:1
  +관리인:명:4
  +관리자:명:7
  +관리직:명:13
  +관리책:명:1
  +관리하다:동:50
  +관리학과:명:1
  +관망:명:2
  +관망적:명:1
  +관망하다:동:7
  +관명:명:1
  +관모:명:12
  +관목:명:23
  +관목림:명:2
  +관문:명:13
  +관민:명:1
  +관박쥐:명:1
  +관변:명:2
  +관복:명:1
  +관복:명:5
  +관부:명:7
  +관북:명:12
  +관비:명:4
  +관사:명:1
  +관사:명:15
  +관사:명:3
  +관산:명:3
  +관상:명:1
  +관상수:명:2
  +관상용:명:1
  +관서:명:10
  +관서:명:22
  +관서장:명:3
  +관선:명:1
  +관성:명:14
  +관세:명:16
  +관세국장:명:1
  +관세율:명:3
  +관세음보살:명:1
  +관세화:명:1
  +관세화하다:동:1
  +관속:명:2
  +관습:명:56
  +관습법:명:1
  +관습적:명:6
  +관습화되다:동:3
  +관식:명:1
  +관심:명:619
  +관심거리:명:9
  +관심권:명:2
  +관심도:명:4
  +관심사:명:31
  +관심자:명:1
  +관아:명:18
  +관악기:명:6
  +관여:명:1
  +관여하다:동:31
  +관엽:명:3
  +관영:명:1
  +관영:명:16
  +관왕:의:7
  +관외:명:1
  +관용:명:1
  +관용:명:5
  +관용어:명:3
  +관용적:명:2
  +관용하다:동:1
  +관용화되다:동:1
  +관원:명:3
  +관음적:관:1
  +관인화되다:동:1
  +관인화시키다:동:1
  +관인화하다:동:1
  +관자놀이:명:8
  +관작:명:1
  +관장:명:2
  +관장:명:3
  +관장:명:7
  +관장하다:동:13
  +관재:명:1
  +관저:명:13
  +관전:명:1
  +관전평:명:1
  +관전하다:동:3
  +관절:명:20
  +관절염:명:3
  +관점:명:264
  +관제:명:1
  +관제:명:12
  +관제:명:4
  +관제사:명:5
  +관제탑:명:15
  +관조:명:6
  +관조자:명:1
  +관조하다:동:4
  +관존민비:명:1
  +관중:명:14
  +관중:명:4
  +관직:명:14
  +관직명:명:1
  +관직자:명:1
  +관찬:명:1
  +관찰:명:63
  +관찰국:명:1
  +관찰기:명:1
  +관찰되다:동:14
  +관찰력:명:7
  +관찰사:명:1
  +관찰자:명:12
  +관찰하다:동:105
  +관철:명:5
  +관철되다:동:14
  +관철시키다:동:12
  +관철하다:동:11
  +관철하다:동:2
  +관청:명:26
  +관청가:명:1
  +관측:명:30
  +관측기:명:1
  +관측되다:동:10
  +관측소:명:4
  +관측자:명:2
  +관측치:명:1
  +관측통:명:2
  +관측하다:동:9
  +관치:명:1
  +관통:명:3
  +관통하다:동:7
  +관통형:명:2
  +관포지교:명:4
  +관품제:명:1
  +관하다:동:3
  +관하다:동:630
  +관학자:명:1
  +관할:명:16
  +관할권:명:8
  +관할하다:동:6
  +관행:명:66
  +관행되다:동:2
  +관행화되다:동:1
  +관헌:명:1
  +관현악과:명:2
  +관혼상제:명:3
  +관활하다:형:10
  +괄다:형:1
  +괄목하다:동:11
  +괄시하다:동:1
  +괄약근:명:1
  +괄호:명:20
  +광:명:10
  +광:명:8
  +광경:명:56
  +광고:명:613
  +광고계:명:3
  +광고란:명:2
  +광고량:명:2
  +광고문:명:1
  +광고물:명:3
  +광고비:명:33
  +광고업계:명:6
  +광고업체:명:1
  +광고인:명:1
  +광고전:명:3
  +광고주:명:6
  +광고탑:명:2
  +광고판:명:3
  +광고하다:동:8
  +광공업:명:1
  +광과민성:명:3
  +광궤:명:1
  +광기:명:26
  +광내다:동:1
  +광년:의:20
  +광대:명:13
  +광대무변하다:형:1
  +광대뼈:명:8
  +광대싸리:명:2
  +광대하다:형:4
  +광도:명:1
  +광독성:명:1
  +광둥어:명:1
  +광란:명:3
  +광란적:명:2
  +광막하다:형:4
  +광망:명:1
  +광명:명:8
  +광명하다:형:1
  +광목:명:12
  +광문:명:2
  +광물:명:15
  +광물질:명:1
  +광범위성:명:1
  +광범위하다:형:37
  +광범하다:형:8
  +광변:명:1
  +광복:명:20
  +광복절:명:4
  +광부:명:6
  +광분하다:동:2
  +광사:명:1
  +광산:명:12
  +광산쟁이:명:3
  +광산촌:명:1
  +광석:명:5
  +광선:명:10
  +광속:명:10
  +광수:명:1
  +광신:명:1
  +광신도:명:1
  +광신론:명:1
  +광신자:명:1
  +광야:명:2
  +광업:명:11
  +광업권:명:1
  +광업소:명:3
  +광역:명:12
  +광역권:명:1
  +광역시:명:2
  +광역화되다:동:1
  +광원:명:4
  +광의:명:3
  +광인:명:1
  +광장:명:59
  +광적:명:4
  +광전지:명:1
  +광제창생:명:1
  +광주리:명:15
  +광채:명:7
  +광초:명:1
  +광케이블:명:4
  +광케이블망:명:1
  +광태:명:3
  +광태증:명:1
  +광택:명:13
  +광파:명:5
  +광포하다:형:3
  +광학:명:6
  +광학적:관:1
  +광합성:명:2
  +광활성:명:1
  +광활하다:형:20
  +광휘:명:1
  +광휘롭다:형:1
  +괘:명:6
  +괘념하다:동:3
  +괘씸하다:형:8
  +괘종시계:명:5
  +괘포형:명:1
  +괜스레:부:6
  +괜찮다:형:271
  +괜찮아지다:동:3
  +괜하다:형:10
  +괜히:부:105
  +괭이:명:7
  +괭이갈매기:명:2
  +괴:명:3
  +괴괴하다:형:1
  +괴기하다:형:2
  +괴다:동:15
  +괴다:동:6
  +괴력:명:1
  +괴로움:명:50
  +괴로워하다:동:16
  +괴롭다:형:57
  +괴롭히다:동:42
  +괴뢰:명:1
  +괴뢰군:명:1
  +괴리:명:6
  +괴리감:명:2
  +괴리되다:동:2
  +괴멸되다:동:1
  +괴멸적:관:1
  +괴물:명:23
  +괴변:명:3
  +괴사하다:동:1
  +괴상망측하다:형:2
  +괴상하다:형:11
  +괴성:명:8
  +괴수:명:2
  +괴어오르다:동:1
  +괴오르다:동:1
  +괴음:명:2
  +괴이하다:형:2
  +괴짜:명:5
  +괴팍하다:형:4
  +괴한:명:2
  +괴혈병:명:1
  +괴화나무:명:4
  +굉음:명:4
  +굉장하다:형:17
  +굉장히:부:99
  +교:명:1
  +교:명:11
  +교가:명:5
  +교각:명:1
  +교각:명:1
  +교감:명:28
  +교감:명:4
  +교감하다:동:8
  +교과:명:1
  +교과:명:20
  +교과목:명:2
  +교과서:명:72
  +교과서적:관:3
  +교과서적:명:2
  +교관:명:1
  +교관:명:9
  +교교해지다:동:1
  +교구:명:2
  +교구비:명:1
  +교구장:명:1
  +교군:명:1
  +교군꾼:명:2
  +교권:명:4
  +교내:명:21
  +교단:명:12
  +교단:명:15
  +교단생활:명:1
  +교대:명:2
  +교대:명:32
  +교대되다:동:1
  +교대자:명:6
  +교대하다:동:3
  +교도:명:1
  +교도:명:3
  +교도관:명:7
  +교도소:명:29
  +교도소장:명:2
  +교두보:명:5
  +교란:명:7
  +교란되다:동:2
  +교란시키다:동:1
  +교란하다:동:1
  +교량:명:11
  +교량하다:동:1
  +교련:명:14
  +교련화:명:1
  +교류:명:89
  +교류되다:동:3
  +교류하다:동:7
  +교리:명:21
  +교리적:관:1
  +교만:명:2
  +교만스럽다:형:1
  +교만심:명:1
  +교만하다:형:4
  +교목:명:1
  +교목:명:10
  +교목실장:명:1
  +교묘하다:형:20
  +교묘해지다:동:2
  +교묘히:부:3
  +교무:명:2
  +교무:명:30
  +교무과:명:1
  +교무과장:명:1
  +교무실:명:38
  +교무처:명:2
  +교무처장:명:5
  +교문:명:24
  +교민:명:18
  +교민회:명:1
  +교범:명:2
  +교변:명:1
  +교복:명:23
  +교본:명:2
  +교부:명:3
  +교부율:명:3
  +교부하다:동:3
  +교분:명:3
  +교사:명:1
  +교사:명:1
  +교사:명:434
  +교사제:명:14
  +교사회:명:4
  +교생:명:1
  +교서:명:1
  +교선:명:7
  +교설:명:1
  +교섭:명:36
  +교섭권:명:1
  +교섭사:명:1
  +교섭하다:동:3
  +교성:명:3
  +교세:명:1
  +교수:명:525
  +교수대:명:1
  +교수법:명:1
  +교수실:명:1
  +교수직:명:2
  +교수진:명:2
  +교수형:명:1
  +교술시:명:1
  +교습:명:4
  +교시:명:5
  +교시:의:16
  +교시하다:동:3
  +교신되다:동:1
  +교신하다:동:3
  +교실:명:172
  +교양:명:47
  +교양과:명:1
  +교양서:명:3
  +교양인:명:5
  +교언:명:1
  +교역:명:29
  +교역국:명:1
  +교역량:명:5
  +교역전:명:3
  +교역하다:동:2
  +교열부:명:1
  +교외:명:15
  +교외:명:3
  +교외별전:명:1
  +교우:명:1
  +교우:명:2
  +교우:명:2
  +교우회지:명:1
  +교원:명:41
  +교위:명:3
  +교유:명:1
  +교육:명:967
  +교육감:명:17
  +교육계:명:12
  +교육과:명:5
  +교육관:명:5
  +교육권:명:1
  +교육되다:동:2
  +교육령:명:1
  +교육받다:동:5
  +교육법:명:1
  +교육부장:명:2
  +교육비:명:15
  +교육서:명:1
  +교육성:명:2
  +교육세:명:8
  +교육세율:명:3
  +교육시키다:동:6
  +교육실:명:2
  +교육열:명:10
  +교육원:명:4
  +교육자:명:27
  +교육자적:관:1
  +교육장:명:10
  +교육장:명:2
  +교육적:관:11
  +교육적:명:6
  +교육지:명:1
  +교육청:명:33
  +교육하다:동:13
  +교육학:명:4
  +교육학과:명:7
  +교육학자:명:2
  +교의:명:7
  +교인:명:8
  +교자:명:1
  +교장:명:2
  +교장:명:207
  +교장단:명:1
  +교장도감:명:1
  +교장론:명:1
  +교장실:명:19
  +교장직:명:1
  +교재:명:27
  +교재원:명:1
  +교전:명:1
  +교정:명:1
  +교정:명:10
  +교정:명:15
  +교정:명:2
  +교정되다:동:3
  +교정하다:동:5
  +교제:명:11
  +교제비:명:3
  +교제하다:동:2
  +교조:명:4
  +교조적:관:1
  +교조적:명:2
  +교조주의:명:2
  +교조주의자:명:1
  +교조주의적:관:1
  +교종:명:36
  +교주:명:4
  +교지:명:2
  +교지:명:3
  +교직:명:39
  +교직원:명:4
  +교차:명:5
  +교차되다:동:7
  +교차로:명:4
  +교차시키다:동:1
  +교차점:명:1
  +교차하다:동:12
  +교착:명:1
  +교착:명:1
  +교착되다:동:1
  +교체:명:43
  +교체기:명:2
  +교체되다:동:9
  +교체설:명:1
  +교체하다:동:14
  +교칙:명:1
  +교탁:명:5
  +교태:명:2
  +교태스럽다:형:1
  +교통:명:183
  +교통경찰:명:11
  +교통난:명:7
  +교통량:명:11
  +교통로:명:8
  +교통망:명:3
  +교통비:명:6
  +교통사고:명:57
  +교통사고율:명:1
  +교통수단:명:6
  +교통순경:명:1
  +교통안전:명:7
  +교통정리:명:3
  +교통지옥:명:2
  +교통질서:명:1
  +교통편:명:2
  +교통하다:동:1
  +교파:명:1
  +교편:명:8
  +교포:명:23
  +교학:명:1
  +교학처장:명:3
  +교합:명:1
  +교향곡:명:7
  +교향악단:명:12
  +교협:명:1
  +교호:명:1
  +교화:명:1
  +교화:명:9
  +교화력:명:1
  +교화시키다:동:2
  +교화하다:동:5
  +교환:명:66
  +교환기:명:7
  +교환대:명:1
  +교환받다:동:1
  +교환소:명:6
  +교환원:명:1
  +교환전:명:1
  +교환하다:동:41
  +교활하다:형:6
  +교황:명:14
  +교회:명:132
  +교회당:명:1
  +교회사:명:1
  +교회사가:명:1
  +교훈:명:4
  +교훈:명:49
  +교훈적:관:1
  +교훈적:명:4
  +구:관:28
  +구:명:1
  +구:명:1
  +구:명:1
  +구:명:21
  +구:수:13
  +구:의:1
  +구가하다:동:8
  +구간:명:19
  +구강:명:3
  +구걸:명:2
  +구걸하다:동:5
  +구겨지다:동:10
  +구경:명:1
  +구경:명:3
  +구경:명:78
  +구경각:명:1
  +구경거리:명:5
  +구경꾼:명:12
  +구경나다:동:1
  +구경하다:동:64
  +구관:명:1
  +구교:명:1
  +구구:부:1
  +구구단:명:2
  +구구절절:명:1
  +구구절절하다:형:1
  +구구하다:형:2
  +구구해지다:동:1
  +구국:명:7
  +구군복:명:1
  +구극적:명:3
  +구금:명:29
  +구금당하다:동:2
  +구금되다:동:3
  +구금시키다:동:1
  +구금자:명:3
  +구금죄:명:1
  +구금하다:동:2
  +구급:명:9
  +구급약:명:1
  +구급차:명:1
  +구기:명:2
  +구기다:동:7
  +구기박질러지다:동:1
  +구김살:명:1
  +구깃구깃하다:형:1
  +구내:명:13
  +구내매점:명:2
  +구내방송:명:1
  +구내식당:명:5
  +구내전화:명:1
  +구녁:명:1
  +구닥다리:명:3
  +구단:명:35
  +구단주:명:3
  +구단협:명:1
  +구더기:명:9
  +구덩이:명:15
  +구도:명:56
  +구도:명:8
  +구도독부:명:1
  +구도자:명:8
  +구도적:관:2
  +구독:명:2
  +구독료:명:2
  +구독자:명:1
  +구동:명:2
  +구두:명:2
  +구두:명:63
  +구두닦이:명:7
  +구두덜대다:동:1
  +구두쇠:명:18
  +구두점:명:1
  +구두점:명:8
  +구두코:명:4
  +구둣발:명:5
  +구득난:명:1
  +구들목:명:4
  +구들장:명:2
  +구락부:명:1
  +구랍:명:8
  +구럭:명:3
  +구렁:명:1
  +구렁이:명:9
  +구렁텅:명:1
  +구렁텅이:명:4
  +구레나룻:명:6
  +구령:명:6
  +구루마:명:1
  +구류:명:1
  +구류:명:2
  +구류형:명:1
  +구르기:명:18
  +구르다:동:18
  +구르다:동:49
  +구륵:명:1
  +구름:명:86
  +구름장:명:5
  +구름층:명:1
  +구름판:명:6
  +구릉:명:20
  +구릉성:명:2
  +구릉지:명:3
  +구릉지대:명:3
  +구리:명:10
  +구리다:형:3
  +구리칙칙하다:형:1
  +구린내:명:3
  +구릿빛:명:1
  +구만:관:1
  +구매:명:48
  +구매되다:동:1
  +구매력:명:2
  +구매사:명:1
  +구매선:명:3
  +구매설:명:1
  +구매자:명:6
  +구매하다:동:12
  +구멍:명:106
  +구멍가게:명:11
  +구멍새:명:1
  +구멍창:명:1
  +구메밥:명:1
  +구면:명:2
  +구면지기:명:1
  +구명:명:4
  +구명대:명:1
  +구명선:명:1
  +구명정:명:3
  +구문:명:1
  +구미:명:11
  +구미:명:12
  +구민:명:8
  +구박:명:9
  +구박받다:동:2
  +구박하다:동:3
  +구백팔십:관:2
  +구법:명:1
  +구별:명:42
  +구별되다:동:31
  +구별시키다:동:1
  +구별하다:동:53
  +구보:명:4
  +구보하다:동:1
  +구부득고:명:1
  +구부러지다:동:5
  +구부리다:동:18
  +구부정:부:1
  +구부정하다:형:1
  +구부정해지다:동:1
  +구북구:명:16
  +구분:명:82
  +구분되다:동:35
  +구분론:명:4
  +구분법:명:4
  +구분적:관:1
  +구분하다:동:77
  +구불구불:부:2
  +구불구불하다:형:3
  +구비:명:1
  +구비:명:4
  +구비되다:동:7
  +구비하다:동:7
  +구빨치산:명:1
  +구사:명:6
  +구사대:명:3
  +구사되다:동:2
  +구사력:명:2
  +구사일생:명:1
  +구사하다:동:20
  +구사회주의:명:2
  +구산:명:2
  +구산선문:명:1
  +구상:명:1
  +구상:명:42
  +구상도:명:3
  +구상되다:동:2
  +구상류층:명:1
  +구상안:명:8
  +구상하다:동:16
  +구색:명:3
  +구서당:명:1
  +구석:명:86
  +구석구석:명:45
  +구석기:명:11
  +구석기인:명:5
  +구석방:명:1
  +구석빼기:명:1
  +구석지다:형:5
  +구설:명:1
  +구설수:명:9
  +구성:명:260
  +구성극:명:1
  +구성되다:동:163
  +구성력:명:2
  +구성물:명:6
  +구성법:명:1
  +구성비:명:2
  +구성선:명:5
  +구성시키다:동:1
  +구성원:명:63
  +구성적:관:8
  +구성적:명:4
  +구성지다:형:1
  +구성체:명:67
  +구성체론:명:9
  +구성체적:관:1
  +구성체적:명:1
  +구성하다:동:134
  +구세계:명:1
  +구세대:명:6
  +구세주:명:1
  +구속:명:1
  +구속:명:170
  +구속당하다:동:5
  +구속되다:동:60
  +구속력:명:7
  +구속받다:동:1
  +구속성:명:1
  +구속시키다:동:4
  +구속자:명:7
  +구속하다:동:39
  +구수하다:형:21
  +구술:명:2
  +구술시험:명:1
  +구술하다:동:3
  +구슬:명:7
  +구슬리다:동:3
  +구슬프다:형:3
  +구슬피:부:1
  +구습:명:2
  +구시대:명:6
  +구시대적:관:2
  +구시대적:명:2
  +구시렁거리다:동:1
  +구시렁대다:동:1
  +구식:명:8
  +구실:명:48
  +구실:명:8
  +구심:명:2
  +구심성:명:1
  +구심적:명:1
  +구심점:명:5
  +구심체:명:2
  +구십:관:3
  +구십구:수:2
  +구십사:수:1
  +구십삼:관:1
  +구십오:관:4
  +구십육:관:1
  +구십일:관:1
  +구십칠:관:3
  +구아슈:명:1
  +구애:명:1
  +구애:명:4
  +구애되다:동:1
  +구애받다:동:11
  +구애하다:동:1
  +구약:명:6
  +구어:명:1
  +구어체:명:2
  +구역:명:107
  +구역제:명:1
  +구역질:명:12
  +구연:명:1
  +구연:명:1
  +구연동화:명:1
  +구연산나트륨:명:1
  +구워삶다:동:1
  +구원:명:19
  +구원되다:동:2
  +구원받다:동:7
  +구원자:명:1
  +구원하다:동:9
  +구월:명:210
  +구읍:명:1
  +구이:명:14
  +구인:명:1
  +구인:명:12
  +구인하다:동:1
  +구입:명:35
  +구입난:명:2
  +구입되다:동:1
  +구입비:명:3
  +구입자:명:1
  +구입처:명:2
  +구입품:명:1
  +구입하다:동:97
  +구장:명:12
  +구장:명:2
  +구전:명:4
  +구전되다:동:1
  +구절:명:40
  +구절초:명:4
  +구접스럽다:형:1
  +구접스레:부:1
  +구정:명:1
  +구정물:명:1
  +구정치인:명:3
  +구제:명:1
  +구제:명:23
  +구제되다:동:1
  +구제받다:동:1
  +구제책:명:1
  +구제품:명:1
  +구제하다:동:13
  +구제하다:동:2
  +구조:명:11
  +구조:명:552
  +구조되다:동:1
  +구조론:명:6
  +구조론적:명:1
  +구조물:명:12
  +구조적:관:55
  +구조적:명:25
  +구조주의:명:5
  +구조주의자:명:1
  +구조주의적:관:9
  +구조하다:동:2
  +구조학:명:1
  +구조화:명:2
  +구조화되다:동:13
  +구족계:명:1
  +구좌:명:1
  +구주:명:1
  +구주:명:1
  +구중궁궐:명:1
  +구직:명:4
  +구직자:명:1
  +구질:명:2
  +구질구질하다:형:3
  +구차스럽다:형:6
  +구차하다:형:3
  +구차히:부:1
  +구찮다:형:1
  +구천:관:1
  +구천:명:2
  +구첩반상:명:1
  +구청:명:32
  +구청장:명:3
  +구청장실:명:1
  +구체:명:7
  +구체성:명:19
  +구체적:관:96
  +구체적:명:282
  +구체제:명:1
  +구체화:명:1
  +구체화되다:동:17
  +구체화시키다:동:3
  +구체화하다:동:13
  +구축:명:37
  +구축되다:동:7
  +구축업:명:1
  +구축하다:동:57
  +구출하다:동:5
  +구치소:명:9
  +구치소장:명:2
  +구타:명:10
  +구타하다:동:3
  +구태:명:4
  +구태여:부:10
  +구태의연하다:형:7
  +구태하다:동:1
  +구태해지다:동:1
  +구토:명:9
  +구토증:명:9
  +구판장:명:1
  +구팽:명:2
  +구푸리다:동:2
  +구필:명:1
  +구하다:동:203
  +구하다:동:28
  +구한말:명:3
  +구해지다:동:1
  +구헌법:명:1
  +구현:명:14
  +구현되다:동:10
  +구현하다:동:17
  +구형:명:3
  +구형:명:4
  +구형되다:동:4
  +구형량:명:1
  +구형받다:동:1
  +구형하다:동:5
  +구호:명:22
  +구호:명:56
  +구호물자:명:1
  +구호미:명:3
  +구호성:명:1
  +구호품:명:1
  +구혼장:명:2
  +구화:명:1
  +구황:명:2
  +구획:명:6
  +구획되어지다:동:1
  +구휼:명:1
  +국:명:1
  +국:명:10
  +국:명:3
  +국:명:5
  +국:명:53
  +국:의:1
  +국가:명:1,231
  +국가계획:명:1
  +국가고시:명:1
  +국가론:명:13
  +국가사:명:1
  +국가사상:명:1
  +국가사업:명:2
  +국가설:명:16
  +국가수반:명:1
  +국가적:관:40
  +국가적:명:18
  +국가주석:명:2
  +국가주석직:명:1
  +국가주의:명:1
  +국가학설:명:1
  +국거리:명:1
  +국경:명:42
  +국경선:명:7
  +국경일:명:4
  +국고:명:13
  +국공립:명:4
  +국교:명:4
  +국교:명:5
  +국교생:명:1
  +국군:명:26
  +국권:명:2
  +국그릇:명:1
  +국기:명:2
  +국기:명:20
  +국난:명:4
  +국내:명:454
  +국내계:명:5
  +국내법:명:1
  +국내법적:명:1
  +국내산:명:3
  +국내선:명:6
  +국내외:명:32
  +국내외적:명:3
  +국내인:명:2
  +국내적:명:2
  +국내파:명:2
  +국도:명:9
  +국량:명:1
  +국력:명:19
  +국록:명:3
  +국론:명:4
  +국리민복:명:2
  +국리민복적:명:1
  +국립:명:15
  +국립공원:명:12
  +국립대:명:2
  +국립대학:명:1
  +국면:명:56
  +국명:명:1
  +국명:명:1
  +국모:명:3
  +국무:명:38
  +국무총리:명:33
  +국무총리상:명:1
  +국무총리실:명:3
  +국문:명:9
  +국문과:명:17
  +국문학:명:3
  +국문학계:명:1
  +국문학자:명:5
  +국물:명:64
  +국민:명:829
  +국민감정:명:2
  +국민성:명:2
  +국민운동:명:2
  +국민장:명:1
  +국민장:명:1
  +국민적:관:41
  +국민적:명:8
  +국민주:명:3
  +국민학교:명:144
  +국민학교생:명:2
  +국민학교장:명:1
  +국민학생:명:9
  +국밥:명:9
  +국방:명:45
  +국방군:명:3
  +국방력:명:1
  +국방비:명:5
  +국번:명:2
  +국법:명:1
  +국보:명:12
  +국부:명:1
  +국부:명:1
  +국부적:관:1
  +국부적:명:1
  +국부화:명:1
  +국사:명:1
  +국사:명:1
  +국사:명:31
  +국사:명:5
  +국산:명:52
  +국산품:명:4
  +국산화:명:7
  +국산화되다:동:1
  +국산화율:명:1
  +국산화하다:동:1
  +국상:명:1
  +국상:명:2
  +국선:명:15
  +국세:명:2
  +국소:명:5
  +국수:명:29
  +국수나무:명:2
  +국수적:명:1
  +국수주의:명:10
  +국수주의자:명:1
  +국수주의적:관:2
  +국숫집:명:2
  +국시:명:5
  +국악:명:5
  +국악과:명:3
  +국악단:명:1
  +국악풍:명:1
  +국어:명:66
  +국어과:명:3
  +국어사전:명:9
  +국어학:명:3
  +국어학계:명:1
  +국어학자:명:1
  +국역:명:1
  +국역:명:2
  +국영:명:8
  +국영화:명:1
  +국왕:명:47
  +국외:명:12
  +국외자:명:1
  +국외적:명:1
  +국운:명:2
  +국위:명:3
  +국유:명:2
  +국유론:명:8
  +국유론자:명:1
  +국유제:명:8
  +국유제론:명:1
  +국유제적:관:2
  +국유화:명:1
  +국유화론:명:2
  +국유화시키다:동:1
  +국유화하다:동:1
  +국으로:부:1
  +국읍:명:3
  +국익:명:10
  +국자:명:7
  +국장:명:39
  +국적:명:38
  +국적선:명:2
  +국전:명:1
  +국정:명:2
  +국정:명:2
  +국정:명:38
  +국제:명:255
  +국제간:명:3
  +국제공항:명:3
  +국제관:명:1
  +국제기구:명:5
  +국제무대:명:1
  +국제법:명:1
  +국제법적:명:1
  +국제부:명:1
  +국제선:명:8
  +국제인:명:1
  +국제적:관:21
  +국제적:명:29
  +국제전:명:2
  +국제주의적:관:1
  +국제파:명:1
  +국제화:명:80
  +국제화시키다:동:1
  +국제화하다:동:2
  +국제회의:명:2
  +국제회의실:명:1
  +국제회의장:명:2
  +국조:명:1
  +국조권:명:4
  +국조신:명:1
  +국졸:명:1
  +국중:명:1
  +국지:명:1
  +국지:명:1
  +국지적:명:2
  +국지전:명:2
  +국채:명:4
  +국책:명:6
  +국태민안:명:2
  +국토:명:54
  +국풍:명:1
  +국풍파:명:2
  +국한되다:동:34
  +국한문:명:1
  +국한시키다:동:5
  +국한하다:동:3
  +국호:명:8
  +국혼:명:1
  +국혼:명:1
  +국화:명:3
  +국화:명:6
  +국화과:명:1
  +국화꽃:명:6
  +국화빵:명:1
  +국회:명:203
  +국회의원:명:84
  +국회의원직:명:1
  +국회직:명:4
  +군:명:1
  +군:명:1
  +군:명:1
  +군:명:329
  +군:명:36
  +군:명:9
  +군:명:9
  +군:의:127
  +군가:명:6
  +군것질:명:4
  +군견병:명:4
  +군경:명:2
  +군계:명:1
  +군고구마:명:8
  +군관:명:1
  +군교:명:1
  +군구:명:1
  +군국:명:1
  +군국:명:4
  +군국주의:명:7
  +군국주의화:명:1
  +군권:명:2
  +군기:명:2
  +군기:명:3
  +군기인호정전:명:2
  +군납업:명:2
  +군내:명:2
  +군단:명:3
  +군단:명:4
  +군단장:명:1
  +군대:명:149
  +군대식:명:4
  +군더더기:명:4
  +군던지럽다:형:1
  +군데:의:57
  +군데군데:명:3
  +군데군데:부:11
  +군도:명:3
  +군도:명:3
  +군둥내:명:1
  +군락:명:6
  +군락상:명:1
  +군란:명:1
  +군량:명:1
  +군량미:명:1
  +군령:명:1
  +군림자:명:1
  +군림하다:동:28
  +군말:명:2
  +군명:명:1
  +군무:명:2
  +군무원:명:6
  +군문:명:1
  +군민:명:3
  +군바리:명:4
  +군밤:명:2
  +군번:명:6
  +군벌:명:3
  +군별:명:1
  +군보포:명:1
  +군복:명:7
  +군부:명:1
  +군부:명:36
  +군부대:명:18
  +군불:명:4
  +군비:명:11
  +군사:명:1
  +군사:명:140
  +군사:명:63
  +군사력:명:24
  +군사령관:명:2
  +군사령부:명:3
  +군사범:명:1
  +군사부일체:명:2
  +군사비:명:3
  +군사적:관:41
  +군사적:명:10
  +군사주의:명:1
  +군사화:명:1
  +군산:명:2
  +군살:명:4
  +군상:명:4
  +군소:명:5
  +군소리:명:1
  +군수:명:15
  +군수:명:9
  +군수과장:명:1
  +군수실:명:1
  +군수용:명:1
  +군수품:명:1
  +군시럽다:형:1
  +군시렁거리다:동:1
  +군식구:명:2
  +군신:명:3
  +군신유의:명:2
  +군역:명:2
  +군영:명:1
  +군왕:명:1
  +군왕:명:1
  +군용:명:11
  +군용기:명:1
  +군용물:명:1
  +군용지:명:1
  +군용차:명:2
  +군의관:명:10
  +군의회:명:2
  +군인:명:88
  +군인전:명:4
  +군입거리:명:1
  +군자:명:14
  +군자국:명:6
  +군자삼락:명:1
  +군장:명:2
  +군장:명:36
  +군장국:명:1
  +군정:명:1
  +군정:명:17
  +군정관:명:2
  +군정청:명:3
  +군제:명:1
  +군졸:명:2
  +군종:명:1
  +군주:명:15
  +군중:명:17
  +군중대회:명:1
  +군중집회하다:동:1
  +군지:명:1
  +군집:명:2
  +군집하다:동:2
  +군청:명:21
  +군청색:명:2
  +군축:명:12
  +군축국장:명:4
  +군치소:명:1
  +군침:명:5
  +군포:명:1
  +군필:관:1
  +군함:명:3
  +군항:명:1
  +군항제:명:7
  +군현:명:25
  +군현제:명:30
  +군현제적:관:1
  +군혼:명:3
  +군화:명:3
  +군홧발:명:3
  +굳건하다:형:3
  +굳건해지다:동:2
  +굳건히:부:5
  +굳기름:명:2
  +굳다:동:18
  +굳다:형:62
  +굳세다:형:6
  +굳어지다:동:62
  +굳은살:명:3
  +굳이:부:88
  +굳혀지다:동:2
  +굳히다:동:31
  +굴:명:15
  +굴:명:16
  +굴곡:명:12
  +굴곡하다:형:1
  +굴다:동:29
  +굴다리:명:1
  +굴뚝:명:14
  +굴뚝같다:형:1
  +굴뚝새:명:9
  +굴러가다:동:7
  +굴러다니다:동:8
  +굴렁쇠:명:4
  +굴레:명:13
  +굴리다:동:41
  +굴복:명:1
  +굴복당하다:동:1
  +굴복시키다:동:1
  +굴복하다:동:1
  +굴복하다:동:10
  +굴비:명:3
  +굴삭기:명:2
  +굴속:명:7
  +굴욕:명:2
  +굴욕사:명:1
  +굴욕스럽다:형:1
  +굴욕적:명:2
  +굴절:명:3
  +굴절되다:동:2
  +굴절력:명:2
  +굴종적:관:1
  +굴종하다:동:1
  +굴지:명:4
  +굴착:명:2
  +굴착기:명:1
  +굴참나무:명:4
  +굴하다:동:2
  +굵다:형:113
  +굵다랗다:형:1
  +굵어지다:동:13
  +굵직굵직하다:형:2
  +굵직하다:형:4
  +굶다:동:62
  +굶주리다:동:20
  +굶주림:명:10
  +굼뜨다:형:5
  +굼벵이:명:2
  +굼실굼실:부:1
  +굽:명:13
  +굽다:동:116
  +굽다:동:3
  +굽다:형:11
  +굽슬굽슬하다:형:1
  +굽실거리다:동:4
  +굽실대다:동:1
  +굽실하다:동:1
  +굽어보다:동:7
  +굽어보이다:동:3
  +굽어지다:동:3
  +굽이:명:2
  +굽이굽이:부:1
  +굽이치다:동:6
  +굽죄다:동:1
  +굽히기:명:1
  +굽히다:동:76
  +굿:명:36
  +굿판:명:9
  +궁:명:7
  +궁고:명:1
  +궁구하다:동:3
  +궁궐:명:22
  +궁극:명:1
  +궁극적:관:15
  +궁극적:명:69
  +궁극점:명:1
  +궁금:명:2
  +궁금증:명:17
  +궁금하다:형:119
  +궁금해지다:동:9
  +궁금해하다:동:13
  +궁기:명:3
  +궁내:명:5
  +궁내수:명:3
  +궁내천:명:1
  +궁녀:명:2
  +궁둥이:명:8
  +궁리:명:16
  +궁리하다:동:10
  +궁상:명:1
  +궁상떨다:동:1
  +궁색스럽다:형:1
  +궁색하다:형:3
  +궁서:명:2
  +궁성:명:5
  +궁시렁거리다:동:2
  +궁싯거리다:동:1
  +궁여지책:명:2
  +궁원:명:1
  +궁을:명:2
  +궁전:명:9
  +궁정:명:1
  +궁중:명:27
  +궁중무:명:1
  +궁지:명:7
  +궁초:명:2
  +궁초댕기:명:1
  +궁핍:명:4
  +궁핍하다:형:8
  +궁하다:형:2
  +궁합:명:10
  +궁해지다:동:1
  +궁형:명:5
  +궂다:형:4
  +궂은비:명:3
  +궂은일:명:2
  +궂은일하다:동:1
  +권:의:135
  +권격:명:1
  +권고:명:12
  +권고안:명:6
  +권고하다:동:5
  +권농:명:1
  +권능:명:6
  +권두:명:2
  +권력:명:259
  +권력관계:명:7
  +권력자:명:8
  +권력적:명:1
  +권력체:명:1
  +권력층:명:3
  +권력형:명:1
  +권리:명:157
  +권리금:명:2
  +권문:명:1
  +권문세족:명:2
  +권법:명:1
  +권부:명:2
  +권사:명:8
  +권선:명:1
  +권선징악:명:1
  +권세:명:6
  +권업:명:1
  +권역:명:14
  +권연초:명:1
  +권위:명:101
  +권위자:명:5
  +권위적:명:2
  +권위주의:명:22
  +권위주의적:관:7
  +권위주의적:명:4
  +권위주의화되다:동:1
  +권위지:명:1
  +권위화:명:1
  +권유:명:11
  +권유하다:동:13
  +권유하다:동:2
  +권익:명:14
  +권장:명:2
  +권장되다:동:4
  +권장량:명:1
  +권장하다:동:22
  +권좌:명:5
  +권총:명:26
  +권총식:명:1
  +권태:명:7
  +권태감:명:1
  +권태기:명:1
  +권태롭다:형:1
  +권태스럽다:형:1
  +권토중래:명:1
  +권투:명:24
  +권하다:동:92
  +권한:명:50
  +궐기:명:3
  +궐기하다:동:1
  +궐내:명:2
  +궐석:명:1
  +궤:명:2
  +궤:명:2
  +궤도:명:34
  +궤도선:명:3
  +궤멸시키다:동:1
  +궤멸하다:동:1
  +궤변:명:3
  +궤양:명:4
  +궤적:명:3
  +궤짝:명:4
  +귀:명:2
  +귀:명:264
  +귀가:명:22
  +귀가시키다:동:1
  +귀가하다:동:23
  +귀감:명:5
  +귀갓길:명:1
  +귀걸이:명:5
  +귀결:명:4
  +귀결되다:동:11
  +귀경:명:3
  +귀고리:명:9
  +귀곡성:명:1
  +귀공자:명:1
  +귀공자풍:명:3
  +귀공자형:명:1
  +귀교:명:1
  +귀국:명:31
  +귀국시키다:동:1
  +귀국하다:동:61
  +귀금속:명:9
  +귀깃:명:1
  +귀납:명:1
  +귀납적:명:2
  +귀납하다:동:2
  +귀담다:동:6
  +귀담아듣다:동:6
  +귀대:명:2
  +귀동냥:명:2
  +귀동냥하다:동:1
  +귀띔:명:6
  +귀띔하다:동:10
  +귀로:명:2
  +귀룽나무:명:1
  +귀머거리:명:2
  +귀먹다:동:3
  +귀면:명:4
  +귀물:명:2
  +귀밑:명:3
  +귀밑털:명:2
  +귀법:명:1
  +귀부인:명:1
  +귀빈:명:8
  +귀빈관:명:1
  +귀빈실:명:1
  +귀뺨:명:1
  +귀뿌리:명:1
  +귀살쩍다:형:1
  +귀선:명:2
  +귀선하다:동:3
  +귀성:명:7
  +귀성객:명:4
  +귀성하다:동:2
  +귀소:명:1
  +귀소형:명:1
  +귀속되다:동:5
  +귀속시키다:동:3
  +귀속하다:동:2
  +귀솟음:명:1
  +귀순:명:4
  +귀순자:명:2
  +귀순하다:동:3
  +귀신:명:63
  +귀신같이:부:3
  +귀싸대기:명:2
  +귀얄:명:4
  +귀양:명:6
  +귀양살이:명:3
  +귀양지:명:1
  +귀엣말:명:2
  +귀여워지다:동:1
  +귀여워하다:동:7
  +귀염:명:1
  +귀염둥이:명:1
  +귀염성:명:4
  +귀염성스럽다:형:1
  +귀엽다:형:81
  +귀와:명:1
  +귀울림:명:1
  +귀의:명:2
  +귀의시키다:동:1
  +귀의하다:동:11
  +귀인:명:8
  +귀일하다:동:1
  +귀재:명:2
  +귀제비:명:11
  +귀족:명:264
  +귀족적:관:3
  +귀족적:명:13
  +귀족주의:명:1
  +귀족주의적:관:2
  +귀족주의적:명:1
  +귀족층:명:5
  +귀족화되다:동:1
  +귀족화하다:동:1
  +귀중품:명:4
  +귀중하다:형:39
  +귀중히:부:1
  +귀착되다:동:6
  +귀착하다:동:2
  +귀찮다:형:54
  +귀찮아지다:동:2
  +귀찮아하다:동:6
  +귀책:명:1
  +귀천:명:1
  +귀청:명:8
  +귀추:명:8
  +귀축:명:1
  +귀퉁이:명:21
  +귀티:명:1
  +귀하:대:4
  +귀하다:형:63
  +귀항:명:1
  +귀항지:명:1
  +귀항하다:동:3
  +귀해지다:동:1
  +귀향:명:16
  +귀향객:명:1
  +귀향기:명:3
  +귀향길:명:2
  +귀향하다:동:4
  +귀향형:명:1
  +귀화:명:2
  +귀화하다:동:1
  +귀환:명:8
  +귀환하다:동:4
  +귀히:부:4
  +귓가:명:7
  +귓결:명:2
  +귓구멍:명:3
  +귓등:명:3
  +귓바퀴:명:16
  +귓밥:명:1
  +귓방망이:명:1
  +귓병:명:2
  +귓불:명:11
  +귓속:명:18
  +귓속말:명:5
  +귓속말하다:동:1
  +귓전:명:6
  +규격:명:26
  +규격성:명:2
  +규격안:명:1
  +규격적:명:1
  +규격화되다:동:4
  +규격화하다:동:1
  +규명:명:49
  +규명되다:동:4
  +규명론:명:1
  +규명하다:동:37
  +규모:명:280
  +규모망:명:1
  +규범:명:52
  +규범성:명:1
  +규범적:관:1
  +규범적:명:3
  +규범화:명:1
  +규소:명:3
  +규수:명:3
  +규약:명:17
  +규율:명:7
  +규율하다:동:2
  +규정:명:11
  +규정:명:147
  +규정되다:동:71
  +규정력:명:1
  +규정적:관:1
  +규정지어지다:동:1
  +규정짓다:동:4
  +규정하다:동:1
  +규정하다:동:170
  +규정화하다:동:1
  +규제:명:113
  +규제되다:동:3
  +규제력:명:1
  +규제받다:동:1
  +규제법:명:1
  +규제책:명:1
  +규제하다:동:21
  +규찰대:명:2
  +규칙:명:1
  +규칙:명:102
  +규칙성:명:7
  +규칙적:관:1
  +규칙적:명:47
  +규칙화되다:동:1
  +규탄:명:10
  +규탄되다:동:2
  +규탄하다:동:7
  +규합하다:동:1
  +균:명:4
  +균근:명:2
  +균등:명:3
  +균등하다:형:4
  +균등히:부:2
  +균분:명:2
  +균열:명:11
  +균열되다:동:1
  +균일가:명:3
  +균일성:명:1
  +균일하다:형:5
  +균전제:명:1
  +균점되다:동:1
  +균점하다:동:1
  +균제성:명:1
  +균질화되다:동:1
  +균형:명:125
  +균형되다:동:2
  +균형미:명:1
  +균형잡기:명:3
  +균형적:관:1
  +균형적:명:3
  +귤:명:14
  +귤색:명:1
  +그:감:197
  +그:관:9,413
  +그:대:6,305
  +그간:명:31
  +그간:부:4
  +그같이:부:2
  +그거:대:1,237
  +그것:대:2,542
  +그것참:감:4
  +그곳:대:259
  +그그:대:1
  +그기:대:1
  +그길로:부:6
  +그까:접:99
  +그까짓:관:24
  +그깟:관:6
  +그나마:부:93
  +그나저나:부:16
  +그날:명:324
  +그날그날:명:4
  +그날그날:부:4
  +그냥:부:628
  +그냥저냥:부:3
  +그네:대:3
  +그네:명:6
  +그네뛰기:명:7
  +그녀:대:1,884
  +그년:대:2
  +그노시스파:명:1
  +그놈:대:46
  +그늘:명:88
  +그늘나무:명:1
  +그늘지다:동:8
  +그니까:접:185
  +그다음:명:73
  +그다지:부:87
  +그닥:부:3
  +그달:명:4
  +그달치:명:1
  +그담:명:5
  +그대:대:51
  +그대로:부:565
  +그동안:명:435
  +그득:부:1
  +그득하다:형:5
  +그들먹이:부:1
  +그따우:관:1
  +그따위:관:3
  +그따위:대:1
  +그딴:관:2
  +그때:명:1,023
  +그때그때:명:13
  +그때그때:부:28
  +그라:감:1
  +그라고:접:1
  +그라다:동:6
  +그라마:접:1
  +그라모:접:1
  +그라문:접:2
  +그라믄:접:1
  +그라운드:명:5
  +그라탱:명:2
  +그람:접:1
  +그랑프리:명:3
  +그랑프리상:명:1
  +그래:감:589
  +그래:부:1
  +그래:불:187
  +그래그래:감:9
  +그래도:불:315
  +그래두:불:1
  +그래라:불:2
  +그래서:불:17
  +그래서:접:1,254
  +그래야:불:41
  +그래야만:불:9
  +그래야지:불:11
  +그래요:불:70
  +그래유:불:1
  +그래지다:동:1
  +그래프:명:9
  +그래픽:명:18
  +그래픽스:명:3
  +그래픽체:명:1
  +그랜드:명:1
  +그램:의:147
  +그램비언:명:1
  +그랬:불:384
  +그랴:감:1
  +그러게:감:6
  +그러게:부:6
  +그러그러하다:형:1
  +그러나:접:3,457
  +그러니까:접:279
  +그러다:동:1,662
  +그러데이션:명:1
  +그러데이션되다:동:1
  +그러데이션시키다:동:2
  +그러데이션하다:동:2
  +그러면:접:342
  +그러모으다:동:1
  +그러므로:접:203
  +그러안다:동:1
  +그러쥐다:동:2
  +그러지룩:명:1
  +그러하다:형:467
  +그럭저럭:부:12
  +그런:관:2,353
  +그런께:접:1
  +그런대로:부:44
  +그런데:접:1,227
  +그런디:접:1
  +그런저런:관:6
  +그럴듯하다:형:31
  +그럴싸하다:형:11
  +그럼:감:77
  +그럼:접:445
  +그렁그렁:부:1
  +그렁그렁:부:2
  +그렁그렁하다:형:1
  +그렇다:형:2,905
  +그렇지:감:59
  +그렇지만:접:204
  +그레고리력:명:5
  +그레이:명:6
  +그레이카키:명:2
  +그레이프:명:1
  +그레이프프루츠:명:2
  +그려:감:1
  +그려도:불:1
  +그려유:불:1
  +그려지다:동:72
  +그령:명:1
  +그로기:명:1
  +그로코롬:부:1
  +그로테스크하다:형:3
  +그루:명:2
  +그루:의:29
  +그루갈이:명:4
  +그루터기:명:3
  +그룹:명:255
  +그룹사:명:1
  +그르다:형:35
  +그르치다:동:7
  +그릇:명:146
  +그릇되다:동:32
  +그리:부:164
  +그리:부:8
  +그리고:접:2,384
  +그리구:접:2
  +그리다:동:457
  +그리다:동:9
  +그리도:부:13
  +그리되다:동:5
  +그리로:부:16
  +그리스:명:1
  +그리스도교:명:1
  +그리스도교적:관:5
  +그리스어:명:3
  +그리스적:관:1
  +그리움:명:25
  +그리워지다:동:5
  +그리워하다:동:22
  +그리위벽:명:1
  +그리하다:동:8
  +그리하여:접:194
  +그린:명:6
  +그린벨트:명:42
  +그릴:명:2
  +그림:명:533
  +그림비:명:1
  +그림엽서:명:1
  +그림일기:명:5
  +그림자:명:151
  +그림자놀이:명:1
  +그림쟁이:명:1
  +그림지도:명:25
  +그림책:명:14
  +그림판:명:1
  +그립:명:5
  +그립다:형:51
  +그마:부:1
  +그만:부:290
  +그만:부:5
  +그만그만하다:형:2
  +그만두다:동:118
  +그만큼:명:7
  +그만큼:부:149
  +그만하다:형:26
  +그맘때:명:1
  +그면:접:11
  +그물:명:17
  +그물망:명:1
  +그물주머니:명:1
  +그믐:명:3
  +그믐날:명:3
  +그믐달:명:21
  +그분:대:78
  +그사이:명:25
  +그새:명:6
  +그슬리다:동:2
  +그야:부:17
  +그야말로:부:93
  +그어지다:동:4
  +그예:부:1
  +그윽하다:형:24
  +그윽히:부:1
  +그을다:동:7
  +그을리다:동:6
  +그을리다:동:7
  +그을음:명:2
  +그이:대:100
  +그자:대:5
  +그저:부:192
  +그저께:명:5
  +그저께:부:5
  +그전:명:29
  +그제:명:2
  +그제:부:1
  +그제서야:부:45
  +그제야:부:30
  +그죠:불:1
  +그중:명:209
  +그즈음:명:10
  +그지:불:10
  +그지없다:형:15
  +그지없이:부:6
  +그쪽:대:68
  +그쯤:명:1
  +그쯤:부:4
  +그쯤하다:형:1
  +그치:감:28
  +그치:대:2
  +그치:불:2
  +그치다:동:199
  +그치만:접:2
  +그케:불:10
  +그토록:부:63
  +그해:명:52
  +극:명:27
  +극:명:91
  +극구:부:3
  +극기:명:3
  +극놀이:명:1
  +극단:명:3
  +극단:명:38
  +극단론:명:1
  +극단적:관:7
  +극단적:명:29
  +극단화되다:동:2
  +극대화:명:6
  +극대화되다:동:4
  +극대화시키다:동:5
  +극대화하다:동:7
  +극도:명:22
  +극독물:명:1
  +극돌기:명:5
  +극동:명:3
  +극락:명:5
  +극락세계:명:1
  +극락왕생하다:동:1
  +극락전:명:5
  +극락정토:명:1
  +극력:명:1
  +극렬:명:3
  +극렬분자:명:2
  +극렬하다:형:1
  +극명하다:형:12
  +극명히:부:1
  +극목:명:1
  +극미:명:2
  +극미량:명:2
  +극복:명:1
  +극복:명:47
  +극복되다:동:11
  +극복시키다:동:1
  +극복하다:동:1
  +극복하다:동:169
  +극본:명:6
  +극비:명:2
  +극빈자:명:1
  +극빈층:명:1
  +극빈하다:형:1
  +극성:명:13
  +극성맞다:형:1
  +극성스럽다:형:8
  +극성파:명:1
  +극성하다:형:1
  +극소국가:명:1
  +극소수:명:6
  +극소화:명:1
  +극소화시키다:동:1
  +극소화하다:동:1
  +극심하다:형:30
  +극심해지다:동:1
  +극악하다:형:2
  +극약:명:5
  +극언:명:1
  +극영화:명:4
  +극우:명:5
  +극우파:명:1
  +극의:명:1
  +극작:명:7
  +극작가:명:31
  +극작술:명:6
  +극장:명:92
  +극장가:명:2
  +극장난:명:1
  +극장용:명:1
  +극장제:명:1
  +극적:관:29
  +극적:명:27
  +극점:명:2
  +극좌:명:1
  +극중극:명:4
  +극지방:명:1
  +극진하다:형:6
  +극진히:부:2
  +극초단파:명:2
  +극치:명:14
  +극한:명:11
  +극한적:관:1
  +극한적:명:1
  +극형:명:3
  +극화:명:1
  +극화:명:2
  +극화하다:동:5
  +극히:부:69
  +근:관:15
  +근:명:1
  +근:의:20
  +근간:명:13
  +근거:명:182
  +근거리:명:3
  +근거지:명:3
  +근거하다:동:50
  +근검:명:1
  +근검절약:명:2
  +근검절약하다:동:1
  +근경:명:1
  +근고하다:동:1
  +근교:명:18
  +근근:부:1
  +근근이:부:3
  +근근하다:형:1
  +근기:명:1
  +근까:접:5
  +근년:명:12
  +근농군:명:1
  +근니까:접:1
  +근대:명:108
  +근대극:명:2
  +근대사:명:4
  +근대성:명:2
  +근대식:명:1
  +근대인:명:1
  +근대적:관:16
  +근대적:명:10
  +근대주의적:관:1
  +근대화:명:9
  +근대화되다:동:2
  +근데:접:380
  +근동:명:3
  +근두운:명:1
  +근디:접:7
  +근래:명:38
  +근력:명:18
  +근로:명:55
  +근로자:명:111
  +근로제:명:3
  +근린:명:1
  +근막:명:1
  +근막통:명:6
  +근면:명:4
  +근면성:명:2
  +근면하다:형:5
  +근무:명:78
  +근무소:명:1
  +근무자:명:4
  +근무조:명:2
  +근무지:명:3
  +근무처:명:2
  +근무하다:동:76
  +근방:명:9
  +근본:명:90
  +근본스럽다:형:1
  +근본적:관:20
  +근본적:명:143
  +근본주의:명:1
  +근본주의적:관:1
  +근본책:명:1
  +근사치:명:1
  +근사하다:형:21
  +근성:명:7
  +근세:명:1
  +근세:명:6
  +근세사:명:3
  +근소세:명:3
  +근소하다:형:2
  +근속:명:6
  +근속하다:동:1
  +근시안:명:1
  +근시안적:관:1
  +근시안적:명:4
  +근신:명:4
  +근신하다:동:3
  +근실히:부:1
  +근심:명:21
  +근심덩어리:명:1
  +근심스럽다:형:4
  +근심하다:동:4
  +근엄하다:형:5
  +근엄화:명:1
  +근연종:명:1
  +근왕주의:명:1
  +근원:명:71
  +근원적:관:9
  +근원적:명:36
  +근위축증:명:1
  +근육:명:80
  +근육계:명:1
  +근육질:명:7
  +근육통:명:2
  +근자:명:6
  +근저:명:3
  +근절:명:10
  +근절되다:동:3
  +근절시키다:동:2
  +근절안:명:1
  +근절책:명:1
  +근절하다:동:5
  +근접:명:4
  +근접하다:동:17
  +근중:명:1
  +근지구력:명:3
  +근지럽다:형:1
  +근질거리다:동:3
  +근질근질하다:형:1
  +근처:명:199
  +근친:명:1
  +근친상간적:관:1
  +근해:명:11
  +근황:명:3
  +글:명:768
  +글감:명:5
  +글거리:명:1
  +글고:접:1
  +글공부:명:2
  +글귀:명:6
  +글라디올러스:명:2
  +글라스:명:7
  +글래머:명:2
  +글러브:명:1
  +글로:부:2
  +글로리:명:2
  +글루타민:명:3
  +글머리:명:6
  +글메:감:1
  +글방:명:4
  +글쇠:명:3
  +글쇠식:명:1
  +글썽거려지다:동:1
  +글썽거리다:동:6
  +글썽글썽하다:동:1
  +글썽이다:동:4
  +글썽하다:동:3
  +글썽하다:형:1
  +글썽해지다:동:3
  +글쎄:감:111
  +글쎄다:감:2
  +글쎄요:감:47
  +글쓰기:명:89
  +글쓴이:명:5
  +글씨:감:2
  +글씨:명:49
  +글씨체:명:2
  +글자:명:146
  +글자쇠:명:1
  +글자체:명:1
  +글자판:명:1
  +글재주:명:4
  +글쟁이:명:1
  +글줄:명:1
  +글짓기:명:10
  +글피:명:1
  +긁다:동:39
  +긁어내다:동:6
  +긁어모으다:동:2
  +긁적거리다:동:4
  +긁적긁적:부:1
  +긁적대다:동:1
  +긁적이다:동:1
  +긁히다:동:5
  +금:명:1
  +금:명:15
  +금:명:34
  +금:명:5
  +금:명:8
  +금가락지:명:6
  +금값:명:2
  +금강석:명:1
  +금강좌:명:4
  +금강초롱:명:13
  +금견:명:1
  +금계포란형:명:1
  +금고:명:29
  +금고:명:5
  +금과옥조:명:3
  +금관:명:4
  +금광:명:1
  +금권:명:11
  +금귀고리:명:3
  +금기:명:27
  +금기담:명:11
  +금기라:명:1
  +금기시하다:동:2
  +금남:명:2
  +금녀:명:2
  +금년:명:62
  +금년도:명:5
  +금니:명:5
  +금단:명:1
  +금당:명:3
  +금도:명:1
  +금도금되다:동:1
  +금동:명:4
  +금력:명:1
  +금리:명:77
  +금맥:명:1
  +금메달:명:20
  +금메달리스트:명:3
  +금명간:명:1
  +금목수화토:명:1
  +금물:명:10
  +금박:명:1
  +금반지:명:1
  +금발:명:1
  +금방:부:142
  +금방금방:부:1
  +금배:명:9
  +금배지:명:2
  +금번:명:1
  +금부도사:명:2
  +금비:명:2
  +금빛:명:9
  +금사:명:2
  +금상첨화:명:6
  +금새우난:명:1
  +금색:명:4
  +금서:명:2
  +금석문:명:3
  +금석학:명:1
  +금성:명:4
  +금세:부:56
  +금세기:명:4
  +금세기인:명:1
  +금속:명:27
  +금속기:명:1
  +금속성:명:5
  +금속판:명:1
  +금송령:명:3
  +금송아지:명:1
  +금수:명:1
  +금수:명:2
  +금수강산:명:2
  +금슬:명:5
  +금시:명:2
  +금시계:명:1
  +금시초문:명:3
  +금식:명:1
  +금실:명:1
  +금실:명:1
  +금싸라기:명:3
  +금액:명:50
  +금어:명:1
  +금언:명:1
  +금연:명:30
  +금연법:명:1
  +금연하다:동:1
  +금요일:명:21
  +금욕:명:2
  +금욕적:명:1
  +금융:명:401
  +금융가:명:4
  +금융계:명:15
  +금융국장:명:2
  +금융권:명:50
  +금융사:명:2
  +금융업:명:4
  +금융업계:명:1
  +금융인:명:3
  +금융적:관:1
  +금은방:명:4
  +금의환향하다:동:1
  +금이빨:명:5
  +금일:명:1
  +금일봉:명:1
  +금자탑:명:1
  +금잔디:명:1
  +금장:명:3
  +금전:명:1
  +금전:명:38
  +금전만능:명:1
  +금전적:관:4
  +금제:명:2
  +금종이:명:1
  +금주:명:5
  +금주주의:명:1
  +금지:명:82
  +금지곡:명:1
  +금지당하다:동:2
  +금지되다:동:32
  +금지령:명:2
  +금지법:명:2
  +금지시키다:동:5
  +금지안:명:1
  +금지옥엽:명:2
  +금지하다:동:39
  +금쪽같다:형:4
  +금치산자:명:1
  +금테:명:5
  +금팔찌:명:1
  +금패:명:1
  +금표비:명:1
  +금품:명:30
  +금하다:동:37
  +금형:명:1
  +금후:명:2
  +급:명:179
  +급:부:2
  +급강하하다:동:2
  +급격하다:형:40
  +급격히:부:34
  +급경사:명:2
  +급급하다:형:22
  +급기야:부:31
  +급등:명:10
  +급등세:명:2
  +급등하다:동:11
  +급락:명:1
  +급락하다:동:3
  +급료:명:4
  +급류:명:4
  +급매물:명:1
  +급모:명:1
  +급무:명:1
  +급박하다:형:4
  +급박해지다:동:2
  +급반등세:명:1
  +급반등하다:동:1
  +급배수:명:1
  +급변:명:1
  +급변하다:동:7
  +급부상하다:동:2
  +급브레이크:명:1
  +급사:명:1
  +급사:명:1
  +급사면:명:1
  +급사하다:동:1
  +급상승하다:동:3
  +급선:명:1
  +급선무:명:9
  +급선회하다:동:1
  +급성:명:11
  +급성장:명:3
  +급성장하다:동:5
  +급소:명:5
  +급속:명:3
  +급속도:명:8
  +급속하다:형:20
  +급속히:부:33
  +급수:명:10
  +급수:명:2
  +급수되다:동:1
  +급습:명:2
  +급습하다:동:1
  +급식:명:1
  +급식하다:동:1
  +급신장하다:동:1
  +급여:명:14
  +급우:명:8
  +급유:명:2
  +급유하다:동:1
  +급자기:부:1
  +급작스럽다:형:3
  +급전:명:1
  +급정거하다:동:3
  +급제:명:2
  +급제동:명:1
  +급제하다:동:9
  +급조:명:2
  +급조되다:동:3
  +급조하다:동:2
  +급증:명:14
  +급증가하다:동:1
  +급증하다:동:33
  +급지:명:3
  +급진:명:4
  +급진적:관:2
  +급진적:명:6
  +급진전:명:1
  +급진전되다:동:1
  +급진주의:명:1
  +급진주의자:명:1
  +급체:명:1
  +급커브:명:6
  +급탕비:명:1
  +급파:명:1
  +급파하다:동:1
  +급팽창:명:2
  +급팽창론:명:1
  +급하다:형:88
  +급해지다:동:1
  +급행열차:명:1
  +급화:명:1
  +급회전:명:1
  +급히:부:40
  +긋다:동:4
  +긋다:동:51
  +긍구하다:동:1
  +긍정:명:8
  +긍정론:명:12
  +긍정적:관:11
  +긍정적:명:70
  +긍정하다:동:10
  +긍지:명:24
  +기:관:1
  +기:명:1
  +기:명:1
  +기:명:1
  +기:명:11
  +기:명:141
  +기:명:31
  +기:명:44
  +기:의:13
  +기:의:2
  +기:의:2
  +기가:명:4
  +기가바이트:의:2
  +기각:명:3
  +기각되다:동:1
  +기각하다:동:4
  +기간:명:25
  +기간:명:322
  +기간:명:7
  +기간병:명:10
  +기간산업:명:4
  +기간산업체:명:1
  +기갈:명:2
  +기강:명:25
  +기개:명:10
  +기거:대:6
  +기거하다:동:1
  +기거하다:동:7
  +기겁:명:3
  +기겁하다:동:1
  +기견:명:1
  +기계:명:12
  +기계:명:247
  +기계과:명:3
  +기계관:명:1
  +기계론적:관:14
  +기계론적:명:6
  +기계식:명:13
  +기계어:명:1
  +기계적:관:21
  +기계적:명:24
  +기계주의:명:1
  +기계총:명:1
  +기계화:명:12
  +기계화되다:동:2
  +기계화하다:동:2
  +기고:명:3
  +기고가:명:6
  +기고만장하다:동:2
  +기고하다:동:1
  +기고하다:동:10
  +기골:명:2
  +기공:명:1
  +기공:명:1
  +기공물:명:1
  +기공식:명:1
  +기관:명:1
  +기관:명:42
  +기관:명:453
  +기관부:명:4
  +기관부원:명:1
  +기관사:명:19
  +기관실:명:22
  +기관원:명:1
  +기관장:명:23
  +기관지:명:14
  +기관지:명:2
  +기관지:명:2
  +기관지염:명:2
  +기관차:명:6
  +기관총:명:1
  +기관화:명:1
  +기괴하다:형:6
  +기교:명:14
  +기교적:관:1
  +기교적:명:2
  +기교주의:명:1
  +기교파:명:1
  +기구:명:183
  +기구:명:2
  +기구:명:64
  +기구업:명:1
  +기구업자:명:1
  +기구하다:동:1
  +기구하다:형:5
  +기구화:명:1
  +기구화하다:동:1
  +기군망상하다:동:1
  +기권:명:2
  +기권:명:5
  +기권하다:동:1
  +기근:명:7
  +기금:명:1
  +기금:명:46
  +기기:명:62
  +기기묘묘하다:형:1
  +기꺼워하다:동:1
  +기꺼이:부:26
  +기껍다:형:1
  +기껏:부:21
  +기껏해야:부:23
  +기나길다:형:10
  +기내:명:5
  +기내식:명:1
  +기념:명:40
  +기념관:명:16
  +기념되다:동:2
  +기념물:명:5
  +기념비:명:10
  +기념비적:관:4
  +기념비적:명:2
  +기념사:명:2
  +기념사업:명:4
  +기념사업회:명:3
  +기념사진:명:6
  +기념식:명:7
  +기념식장:명:1
  +기념엽서:명:2
  +기념일:명:3
  +기념주화:명:2
  +기념탑:명:3
  +기념품:명:10
  +기념품점:명:1
  +기념하다:동:25
  +기념행사:명:10
  +기념호:명:1
  +기념회:명:5
  +기눔:대:2
  +기능:명:34
  +기능:명:399
  +기능공:명:9
  +기능사:명:3
  +기능성:명:16
  +기능신:명:1
  +기능인:명:5
  +기능적:관:4
  +기능적:명:23
  +기능주의:명:6
  +기능주의적:관:16
  +기능직:명:2
  +기능하다:동:17
  +기다:동:36
  +기다:형:1
  +기다랗다:형:21
  +기다려지다:동:6
  +기다리다:동:635
  +기단:명:3
  +기단부:명:2
  +기대:명:158
  +기대감:명:16
  +기대다:동:1
  +기대다:동:54
  +기대되다:동:37
  +기대서다:동:1
  +기대앉다:동:3
  +기대주:명:1
  +기대치:명:3
  +기대하다:동:177
  +기도:명:16
  +기도:명:25
  +기도:명:5
  +기도되다:동:1
  +기도드리다:동:3
  +기도문:명:1
  +기도원:명:12
  +기도하다:동:12
  +기도하다:동:32
  +기도회:명:3
  +기독:명:4
  +기독교:명:44
  +기독교도:명:2
  +기독교식:명:1
  +기독교인:명:9
  +기독교적:관:3
  +기독교적:명:2
  +기독교회:명:2
  +기동:명:6
  +기동대:명:1
  +기동력:명:5
  +기동성:명:1
  +기동하다:동:2
  +기두발:명:1
  +기둘리다:동:2
  +기둥:명:51
  +기둥뿌리:명:1
  +기득권:명:37
  +기득권자:명:1
  +기득권적:관:1
  +기득권층:명:16
  +기따우:관:1
  +기때:명:2
  +기똥차다:형:1
  +기라성:명:2
  +기래:불:1
  +기량:명:1
  +기량:명:16
  +기량:명:3
  +기러기:명:9
  +기러니까:접:1
  +기러니까니:접:1
  +기러다:동:1
  +기런:관:1
  +기런데:접:1
  +기럼:감:3
  +기럼:부:1
  +기렇다:형:1
  +기력:명:9
  +기로:명:5
  +기록:명:208
  +기록되다:동:46
  +기록물:명:2
  +기록부:명:3
  +기록실:명:7
  +기록적:명:1
  +기록하다:동:182
  +기록화:명:5
  +기론:명:3
  +기류:명:80
  +기르다:동:254
  +기름:명:116
  +기름기:명:14
  +기름나물:명:1
  +기름때:명:3
  +기름병:명:3
  +기름보일러:명:1
  +기름종이:명:1
  +기름지다:형:10
  +기름칠:명:1
  +기름칠하다:동:1
  +기름투성이:명:2
  +기리고:접:2
  +기리다:동:23
  +기린:명:2
  +기마:명:7
  +기마이:명:1
  +기마전:명:1
  +기막히다:형:34
  +기만:관:1
  +기만:명:6
  +기만적:관:4
  +기만책:명:1
  +기만하다:동:4
  +기말:명:11
  +기명:명:1
  +기모:명:1
  +기묘하다:형:20
  +기무:명:6
  +기무사:명:15
  +기물:명:2
  +기미:명:1
  +기미:명:28
  +기미:명:3
  +기민:명:1
  +기민하다:형:6
  +기밀:명:43
  +기밀문서:명:2
  +기반:명:150
  +기반암:명:1
  +기반하다:동:6
  +기발:명:1
  +기발하다:형:19
  +기방:명:2
  +기법:명:73
  +기법적:명:1
  +기벽:명:1
  +기별:명:6
  +기병:명:1
  +기병하다:동:2
  +기복:명:1
  +기복:명:3
  +기복:명:3
  +기복량:명:1
  +기복성:명:1
  +기복하다:동:1
  +기본:명:264
  +기본권:명:64
  +기본급:명:2
  +기본기:명:1
  +기본료:명:1
  +기본법:명:4
  +기본선:명:1
  +기본예절:명:1
  +기본요금:명:2
  +기본적:관:25
  +기본적:명:125
  +기본형:명:2
  +기부:명:4
  +기부:명:5
  +기부금:명:11
  +기부되다:동:1
  +기부하다:동:2
  +기분:명:402
  +기뻐하다:동:61
  +기쁘다:형:139
  +기쁨:명:138
  +기사:명:171
  +기사:명:39
  +기사:명:4
  +기사:명:4
  +기사:명:9
  +기사감:명:2
  +기사화되다:동:1
  +기사화시키다:동:1
  +기사화하다:동:1
  +기사회생:명:3
  +기산일:명:1
  +기산점:명:1
  +기삿거리:명:4
  +기상:명:16
  +기상:명:23
  +기상:명:6
  +기상대:명:6
  +기상도:명:1
  +기상천외:명:2
  +기상천외하다:형:3
  +기상하다:동:2
  +기색:명:31
  +기생:명:4
  +기생:명:9
  +기생:의:4
  +기생적:명:1
  +기생집:명:1
  +기생충:명:1
  +기생충적:관:1
  +기생하다:동:5
  +기선:명:1
  +기선:명:1
  +기설과:명:1
  +기성:명:1
  +기성:명:32
  +기성세대:명:30
  +기성품:명:1
  +기세:명:27
  +기세등등하다:형:2
  +기세등등해지다:동:1
  +기소:명:29
  +기소되다:동:26
  +기소장:명:1
  +기소하다:동:14
  +기속하다:동:1
  +기수:명:1
  +기수:명:7
  +기숙사:명:39
  +기숙하다:동:1
  +기술:명:12
  +기술:명:591
  +기술계:명:1
  +기술공:명:1
  +기술과:명:1
  +기술껏:부:1
  +기술되다:동:5
  +기술력:명:1
  +기술서:명:2
  +기술자:명:48
  +기술적:관:1
  +기술적:관:21
  +기술적:명:10
  +기술주의:명:1
  +기술지:명:1
  +기술직:명:4
  +기술진:명:2
  +기술하다:동:30
  +기슭:명:27
  +기습:명:13
  +기습당하다:동:1
  +기습용:명:1
  +기습적:명:2
  +기습하다:동:3
  +기승:명:14
  +기시다:동:1
  +기시다:보:3
  +기식하다:동:1
  +기신:명:1
  +기실:명:1
  +기실:부:6
  +기십만:관:1
  +기아:명:8
  +기아국:명:1
  +기아종:명:1
  +기악과:명:1
  +기암괴석:명:2
  +기암절벽:명:1
  +기압:명:4
  +기압골:명:2
  +기약:명:1
  +기약하다:동:3
  +기어:명:5
  +기어가다:동:7
  +기어들다:동:18
  +기어오르다:동:7
  +기어이:부:28
  +기어코:부:9
  +기억:명:262
  +기억나다:동:22
  +기억되다:동:15
  +기억력:명:9
  +기억시키다:동:1
  +기억하다:동:115
  +기업:명:1
  +기업:명:650
  +기업가:명:9
  +기업군:명:4
  +기업명:명:1
  +기업소:명:4
  +기업인:명:17
  +기업자:명:1
  +기업적:명:1
  +기업주:명:4
  +기업체:명:16
  +기업화되다:동:1
  +기업화하다:동:1
  +기여:명:35
  +기여하다:동:69
  +기역:명:3
  +기염:명:7
  +기예:명:2
  +기온:명:90
  +기온차:명:4
  +기와:명:15
  +기와집:명:13
  +기왓장:명:5
  +기왕:명:13
  +기왕:부:7
  +기왕에:부:8
  +기왕이면:부:1
  +기용:명:4
  +기용되다:동:6
  +기용하다:동:16
  +기우:명:8
  +기우듬하다:형:1
  +기우뚱:부:1
  +기우뚱거리다:동:3
  +기우뚱하다:동:2
  +기우제:명:1
  +기운:명:5
  +기운:명:74
  +기운차다:형:3
  +기울기:명:4
  +기울다:동:31
  +기울어지다:동:21
  +기울여지다:동:1
  +기울이다:동:180
  +기웃거리다:동:23
  +기웃기웃:부:2
  +기원:명:1
  +기원:명:2
  +기원:명:41
  +기원:명:5
  +기원론:명:2
  +기원설:명:2
  +기원전:명:67
  +기원하다:동:2
  +기원하다:동:20
  +기원후:명:6
  +기율:명:10
  +기이하다:형:11
  +기인:명:2
  +기인:명:3
  +기인되다:동:1
  +기인역:명:1
  +기인전:명:2
  +기인제:명:1
  +기인하다:동:37
  +기일:명:3
  +기일:명:9
  +기일원론:명:1
  +기입:명:1
  +기입되다:동:1
  +기입장:명:22
  +기입하다:동:3
  +기자:명:342
  +기자단:명:1
  +기자상:명:1
  +기자실:명:5
  +기자재:명:3
  +기자직:명:1
  +기장:명:1
  +기장:명:2
  +기장:명:2
  +기재:명:3
  +기재되다:동:9
  +기재하다:동:17
  +기저:명:5
  +기저귀:명:33
  +기저면:명:3
  +기저적:관:1
  +기적:명:12
  +기적:명:31
  +기적적:명:2
  +기전:명:1
  +기전부장:명:1
  +기전체:명:2
  +기절:명:2
  +기절초풍:명:3
  +기절초풍하다:동:1
  +기절하다:동:6
  +기점:명:23
  +기정사실:명:7
  +기정사실화되다:동:2
  +기정사실화하다:동:4
  +기제:명:4
  +기조:명:17
  +기조실장:명:8
  +기조연설:명:1
  +기존:명:242
  +기존하다:동:1
  +기종:명:12
  +기죽다:동:8
  +기죽이다:동:1
  +기준:명:280
  +기준계:명:1
  +기준선:명:1
  +기준치:명:7
  +기중:명:1
  +기중기:명:2
  +기중력:명:1
  +기증:명:24
  +기증받다:명:1
  +기증자:명:1
  +기증하다:동:23
  +기지:명:53
  +기지:명:6
  +기지개:명:6
  +기지국:명:2
  +기지촌:명:14
  +기진:명:1
  +기진맥진:명:1
  +기진맥진하다:동:2
  +기진장:명:1
  +기진하다:동:1
  +기진해지다:동:1
  +기질:명:23
  +기질:명:5
  +기질성:명:2
  +기질적:관:4
  +기차:명:71
  +기차간:명:1
  +기차놀이:명:2
  +기차역:명:4
  +기착지:명:2
  +기찰하다:동:1
  +기찻길:명:2
  +기척:명:14
  +기천:관:1
  +기체:명:1
  +기체:명:1
  +기체:명:14
  +기초:명:186
  +기초:명:2
  +기초되다:동:1
  +기초반:명:2
  +기초식품:명:1
  +기초적:관:4
  +기초적:명:18
  +기초하다:동:63
  +기초화장:명:1
  +기총:명:1
  +기축:명:1
  +기축:명:1
  +기층:명:4
  +기층문화:명:1
  +기치:명:6
  +기침:명:22
  +기침감기:명:1
  +기침하다:동:2
  +기타:명:27
  +기타:명:67
  +기탁금:명:2
  +기탁되다:동:1
  +기탁하다:동:5
  +기탄:명:1
  +기탄없이:부:2
  +기특하다:형:8
  +기특해하다:동:1
  +기틀:명:22
  +기판:명:3
  +기포:명:1
  +기포화되다:동:1
  +기폭:명:1
  +기폭시키다:동:1
  +기폭제:명:2
  +기표소:명:1
  +기품:명:1
  +기품:명:8
  +기풍:명:2
  +기풍제:명:1
  +기피:명:12
  +기피성:명:1
  +기피증:명:2
  +기피하다:동:36
  +기필코:부:9
  +기하:명:1
  +기하급수:명:2
  +기하급수적:명:5
  +기하다:동:27
  +기하다:동:4
  +기하학:명:6
  +기하학적:관:22
  +기하학적:명:9
  +기학:명:2
  +기한:명:11
  +기한부:명:3
  +기합:명:3
  +기항지:명:2
  +기항하다:동:1
  +기해:명:2
  +기행:명:2
  +기행:명:8
  +기행문:명:3
  +기현상:명:2
  +기혈:명:1
  +기형:명:8
  +기형아:명:6
  +기형적:명:2
  +기형화:명:1
  +기형화되다:동:1
  +기호:명:35
  +기호:명:40
  +기호론적:관:2
  +기호물:명:1
  +기호성:명:1
  +기호품:명:7
  +기호학:명:2
  +기호학적:관:2
  +기호학파:명:2
  +기호화하다:동:1
  +기혼:명:11
  +기혼자:명:1
  +기화:명:1
  +기화:명:2
  +기화신령:명:4
  +기화지신:명:2
  +기회:명:282
  +기회균등:명:2
  +기회주의:명:4
  +기회주의자:명:2
  +기회주의적:관:1
  +기회주의적:명:3
  +기획:명:74
  +기획과:명:1
  +기획국:명:1
  +기획국장:명:2
  +기획단:명:1
  +기획되다:동:1
  +기획력:명:3
  +기획사:명:1
  +기획서:명:1
  +기획실:명:6
  +기획실장:명:4
  +기획원:명:8
  +기획자:명:5
  +기획하다:동:15
  +기후:명:89
  +기후구:명:1
  +기후적:관:1
  +기후학자:명:1
  +긴가민가:명:1
  +긴가민가하다:형:1
  +긴급:명:67
  +긴급하다:형:9
  +긴급회의:명:3
  +긴급히:부:3
  +긴긴:관:3
  +긴긴밤:명:2
  +긴데:접:1
  +긴말:명:1
  +긴말하다:동:1
  +긴밀감:명:1
  +긴밀하다:형:14
  +긴밀해지다:동:2
  +긴밀화:명:1
  +긴밀히:부:1
  +긴박감:명:1
  +긴박되다:동:1
  +긴박성:명:2
  +긴박시키다:동:1
  +긴박하다:형:11
  +긴소매:명:1
  +긴요성:명:1
  +긴요하다:형:6
  +긴요해지다:동:1
  +긴잎회양목:명:3
  +긴장:명:87
  +긴장감:명:24
  +긴장되다:동:17
  +긴장미:명:1
  +긴장성:명:3
  +긴장시키다:동:3
  +긴장하다:동:51
  +긴차쿠:명:1
  +긴축:명:2
  +긴치마:명:1
  +긴팔:명:1
  +긴하다:형:2
  +긴히:부:3
  +긷다:동:11
  +길:명:1
  +길:명:1
  +길:명:1,099
  +길:명:3
  +길:명:5
  +길:의:6
  +길가:명:41
  +길갓집:명:1
  +길거리:명:25
  +길괘:명:1
  +길기:명:2
  +길길이:부:2
  +길놀이:명:1
  +길눈:명:1
  +길다:동:2
  +길다:형:509
  +길더:의:11
  +길동무:명:1
  +길드:명:1
  +길들다:동:4
  +길들여지다:동:20
  +길들이다:동:12
  +길라잡이:명:1
  +길러지다:동:15
  +길룡:명:2
  +길마:명:1
  +길모퉁이:명:2
  +길목:명:16
  +길바닥:명:11
  +길복:명:1
  +길상:명:2
  +길상사:명:1
  +길섶:명:2
  +길손:명:5
  +길쌈:명:1
  +길어지다:동:27
  +길옆:명:5
  +길운:명:1
  +길이:명:180
  +길이:부:5
  +길이길이:부:1
  +길인:명:1
  +길일:명:38
  +길잡이:명:23
  +길조:명:3
  +길지:명:6
  +길지성:명:3
  +길쭉길쭉하다:형:1
  +길쭉하다:형:7
  +길차다:형:1
  +길하다:형:4
  +길흉:명:1
  +길흉사:명:1
  +길흉화복:명:4
  +김:명:24
  +김:명:3
  +김:명:43
  +김:의:26
  +김매기:명:2
  +김매다:동:2
  +김발:명:5
  +김밥:명:21
  +김새다:동:3
  +김장:명:5
  +김장거리:명:2
  +김장밭:명:1
  +김장철:명:3
  +김초밥:명:1
  +김치:명:98
  +김치볶음:명:2
  +김치찌개:명:7
  +김칫거리:명:1
  +김칫국:명:5
  +김칫독:명:5
  +깁다:동:7
  +깁스:명:5
  +깁스하다:동:1
  +깃:명:22
  +깃:명:8
  +깃들다:동:24
  +깃들이다:동:5
  +깃발:명:24
  +깃봉:명:1
  +깃털:명:16
  +깊다:형:443
  +깊디깊다:형:1
  +깊숙이:부:37
  +깊숙하다:형:10
  +깊어지다:동:17
  +깊이:명:63
  +깊이:부:138
  +깊이깊이:부:1
  +까까머리:명:1
  +까꿍:감:1
  +까놓다:동:4
  +까다:동:15
  +까다로워지다:동:1
  +까다롭다:형:43
  +까닥거리다:동:1
  +까닥까닥:부:1
  +까닥이다:동:1
  +까닥하다:동:1
  +까닭:명:234
  +까뒤집다:동:1
  +까딱:부:2
  +까딱없다:형:2
  +까딱하다:동:4
  +까딱하면:부:3
  +까라지다:동:1
  +까르르:부:7
  +까르륵:부:2
  +까마귀:명:6
  +까마득하다:형:17
  +까마득허다:형:1
  +까마득히:부:3
  +까마중:명:1
  +까막눈:명:1
  +까만색:명:3
  +까맣다:형:62
  +까매지다:동:1
  +까먹다:동:16
  +까무느다:동:4
  +까무룩:부:2
  +까무잡잡하다:형:4
  +까묵다:동:1
  +까물까물:부:1
  +까발리다:동:5
  +까밝히다:동:1
  +까불거리다:동:1
  +까불다:동:1
  +까불다:동:8
  +까스르다:동:1
  +까슬까슬하다:형:2
  +까이다:동:1
  +까지르다:동:1
  +까짓:감:1
  +까짓:관:3
  +까짓것:감:3
  +까치:명:30
  +까치박달:명:2
  +까치발:명:2
  +까치밥:명:1
  +까치수염:명:3
  +까치집:명:2
  +까칠하다:형:4
  +까탈:명:1
  +까탈스럽다:형:1
  +까투리:명:9
  +깍깍:부:16
  +깍둑깍둑:부:1
  +깍둑썰기:명:1
  +깍듯이:부:14
  +깍듯하다:형:4
  +깍쟁이:명:1
  +깍지:명:2
  +깍지:명:3
  +깎다:동:87
  +깎아내리다:동:3
  +깎아지르다:형:2
  +깎여지다:동:1
  +깎이다:동:6
  +깐:명:2
  +깐깐하다:형:4
  +깐깐히:부:1
  +깔기다:동:1
  +깔깔:부:11
  +깔깔거리다:동:7
  +깔깔대다:동:6
  +깔깔이:명:1
  +깔깔해지다:동:1
  +깔끔:명:1
  +깔끔하다:형:33
  +깔다:동:64
  +깔딱:부:1
  +깔리다:동:80
  +깔보다:동:12
  +깔아뭉개다:동:1
  +깜깜하다:형:8
  +깜깜해지다:동:1
  +깜냥:명:1
  +깜냥껏:부:1
  +깜박:부:9
  +깜박거리다:동:13
  +깜박깜박:부:1
  +깜박등:명:1
  +깜박이다:동:6
  +깜박하다:동:5
  +깜밥:명:2
  +깜빡:부:16
  +깜빡거리다:동:2
  +깜빡이:명:2
  +깜빡이다:동:1
  +깜빡하다:동:4
  +깜뿍거리다:동:1
  +깜서방:명:6
  +깜시:명:1
  +깜장:명:1
  +깜짝:부:1
  +깜짝:부:76
  +깜짝깜짝:부:3
  +깜짝이야:감:2
  +깜짝하다:동:5
  +깜찍하다:형:3
  +깝죽대다:동:1
  +깡:명:1
  +깡그리:부:6
  +깡깡:부:1
  +깡깡이:명:1
  +깡다구:명:1
  +깡마르다:형:5
  +깡보리밥:명:1
  +깡충거리다:동:1
  +깡충깡충:부:1
  +깡통:명:39
  +깡패:명:16
  +깨:명:3
  +깨금깨금:부:1
  +깨끗:명:4
  +깨끗이:부:113
  +깨끗하다:형:155
  +깨끗해지다:동:17
  +깨나다:동:1
  +깨다:동:1
  +깨다:동:59
  +깨다:동:94
  +깨닫다:동:200
  +깨달아지다:동:1
  +깨달음:명:44
  +깨뜨려지다:동:1
  +깨뜨리다:동:32
  +깨물다:동:20
  +깨부수다:동:2
  +깨소금:명:27
  +깨알:명:4
  +깨어나다:동:54
  +깨어지다:동:19
  +깨우다:동:42
  +깨우치다:동:37
  +깨지다:동:75
  +깨춤:명:1
  +깨치다:동:15
  +깻버럭지:명:2
  +깻잎:명:8
  +깽깽:부:1
  +깽깽이:명:3
  +꺄꺄껴껴:부:1
  +꺅:부:1
  +꺼내다:동:277
  +꺼내지다:동:1
  +꺼당기다:동:1
  +꺼들다:동:1
  +꺼뜨리다:동:2
  +꺼려지다:동:2
  +꺼려하다:동:9
  +꺼리다:동:31
  +꺼림칙하다:형:6
  +꺼먹초림:명:1
  +꺼멓다:형:7
  +꺼벙이:명:2
  +꺼뻑:부:1
  +꺼이꺼이:부:1
  +꺼지다:동:11
  +꺼지다:동:52
  +꺼칠꺼칠하다:형:1
  +꺼칠하다:형:1
  +꺼칠해지다:동:1
  +꺼풀:명:6
  +꺽꺽:부:1
  +꺽실히:부:1
  +꺾기:명:1
  +꺾다:동:67
  +꺾쇠:명:4
  +꺾어지다:동:3
  +꺾은선:명:1
  +꺾이다:동:24
  +꺾임선:명:1
  +껄껄:부:11
  +껄껄거리다:동:1
  +껄껄대다:동:1
  +껄껄하다:형:1
  +껄끄러워하다:동:1
  +껄끄럽다:형:7
  +껄떡거리다:동:1
  +껄렁패:명:2
  +껄렁하다:형:1
  +껌:명:45
  +껌껌하다:형:1
  +껌벅거리다:동:4
  +껌벅이다:동:4
  +껌뻑이:명:1
  +껍데기:명:14
  +껍질:명:93
  +껑더리:명:1
  +껑충:부:5
  +껑충거리다:동:2
  +껑충껑충:부:2
  +께:의:1
  +께름칙하다:형:5
  +껴안다:동:27
  +껴입다:동:8
  +껴입히다:동:1
  +꼬깃꼬깃:부:1
  +꼬꼬:명:1
  +꼬꼬:부:3
  +꼬꼬댁:부:1
  +꼬끼오:부:3
  +꼬느다:동:3
  +꼬다:동:24
  +꼬다리:명:1
  +꼬드기다:동:4
  +꼬들꼬들하다:형:1
  +꼬들꼬들해지다:동:1
  +꼬라비:명:2
  +꼬라지:명:1
  +꼬락서니:명:4
  +꼬랑지:명:1
  +꼬르륵:부:2
  +꼬리:명:121
  +꼬리깃:명:5
  +꼬리뼈:명:1
  +꼬리표:명:5
  +꼬마:명:43
  +꼬마물떼새:명:1
  +꼬마전구:명:4
  +꼬막:명:3
  +꼬막집:명:1
  +꼬매다:동:4
  +꼬맹이:명:4
  +꼬물거리다:동:1
  +꼬물꼬물:부:1
  +꼬물락거리다:동:1
  +꼬박:부:26
  +꼬박꼬박:부:12
  +꼬부라지다:동:8
  +꼬부랑:명:1
  +꼬불꼬불:부:1
  +꼬불꼬불하다:형:1
  +꼬불치다:동:1
  +꼬불탕하다:형:1
  +꼬빡:부:1
  +꼬이다:동:8
  +꼬이다:동:9
  +꼬이다:동:9
  +꼬임:명:1
  +꼬장꼬장하다:형:2
  +꼬질꼬질하다:형:2
  +꼬집다:동:27
  +꼬집히다:동:1
  +꼬챙이:명:2
  +꼬치:명:11
  +꼬치구이:명:2
  +꼬치꼬치:부:4
  +꼬투리:명:16
  +꼭:부:493
  +꼭:부:69
  +꼭꼭:부:12
  +꼭꼭:부:18
  +꼭대기:명:52
  +꼭두각시:명:2
  +꼭두각시놀음:명:1
  +꼭두극:명:1
  +꼭두새벽:명:2
  +꼭뒤:명:1
  +꼭지:명:17
  +꼴:명:195
  +꼴:명:5
  +꼴값:명:1
  +꼴같잖다:형:1
  +꼴깍:부:4
  +꼴깍하다:동:1
  +꼴내기:명:1
  +꼴딱:부:1
  +꼴리다:동:4
  +꼴머슴:명:1
  +꼴사납다:형:1
  +꼴아박다:동:1
  +꼴찌:명:6
  +꼼꼼:부:1
  +꼼꼼하다:형:33
  +꼼꼼히:부:12
  +꼼장어:명:7
  +꼼지락거리다:동:3
  +꼼짝:부:32
  +꼼짝없이:부:11
  +꼼짝하다:동:7
  +꼼틀꼼틀:부:1
  +꼽다:동:58
  +꼽추:명:2
  +꼽히다:동:54
  +꼿꼿이:부:5
  +꼿꼿하다:형:11
  +꽁꽁:부:14
  +꽁무니:명:12
  +꽁바기:명:1
  +꽁보리밥:명:3
  +꽁생원:명:2
  +꽁지:명:2
  +꽁초:명:9
  +꽁치:명:3
  +꽁치잡이:명:1
  +꽁하다:동:1
  +꽂다:동:58
  +꽂히다:동:23
  +꽃:명:436
  +꽃가루:명:1
  +꽃가루받이:명:1
  +꽃가마:명:1
  +꽃가위:명:3
  +꽃가지:명:6
  +꽃게:명:1
  +꽃길:명:3
  +꽃꽂이:명:8
  +꽃꽂이하다:동:9
  +꽃나무:명:5
  +꽃눈:명:1
  +꽃다발:명:11
  +꽃다지:명:1
  +꽃답다:형:6
  +꽃대:명:6
  +꽃등:명:2
  +꽃망울:명:3
  +꽃며느리밥풀:명:1
  +꽃목걸이:명:1
  +꽃무늬:명:7
  +꽃묶음:명:6
  +꽃물결:명:1
  +꽃반지:명:3
  +꽃받침:명:2
  +꽃밭:명:21
  +꽃병:명:9
  +꽃봉오리:명:5
  +꽃비:명:3
  +꽃사슴:명:1
  +꽃살문:명:8
  +꽃삽:명:5
  +꽃상여:명:1
  +꽃샘바람:명:2
  +꽃샘추위:명:2
  +꽃송이:명:8
  +꽃술:명:1
  +꽃신:명:1
  +꽃씨:명:15
  +꽃잎:명:25
  +꽃줄기:명:1
  +꽃집:명:6
  +꽃판:명:2
  +꽃피다:동:8
  +꽃피우다:동:8
  +꽃향기:명:4
  +꽃향유:명:1
  +꽈리:명:1
  +꽈리고추:명:2
  +꽈배기:명:1
  +꽉:부:59
  +꽉꽉:부:3
  +꽝:명:5
  +꽝:부:4
  +꽝꽝:부:1
  +꽤:부:141
  +꽥:부:3
  +꽥꽥:부:9
  +꾀:명:17
  +꾀꼬리:명:7
  +꾀다:동:1
  +꾀다:동:3
  +꾀병:명:5
  +꾀부리다:동:2
  +꾀음꾀음:부:1
  +꾀죄죄하다:형:7
  +꾀하다:동:45
  +꾐:명:5
  +꾸다:동:16
  +꾸다:동:68
  +꾸덕꾸덕해지다:동:2
  +꾸러기:명:1
  +꾸러미:명:14
  +꾸렁내:명:1
  +꾸려지다:동:2
  +꾸르륵거리다:동:1
  +꾸리다:동:35
  +꾸며지다:동:14
  +꾸물거리다:동:3
  +꾸미기:명:3
  +꾸미다:동:138
  +꾸밈:명:4
  +꾸밈새:명:1
  +꾸밈없다:형:1
  +꾸밈없이:부:1
  +꾸벅:부:4
  +꾸벅꾸벅:부:2
  +꾸벅하다:동:1
  +꾸부정하다:형:1
  +꾸뻑:부:1
  +꾸역꾸역:부:6
  +꾸준하다:형:15
  +꾸준히:부:72
  +꾸중:명:29
  +꾸중하다:동:3
  +꾸지람:명:13
  +꾸짖다:동:26
  +꾹:부:12
  +꾹꾸:부:2
  +꾹꾹:부:1
  +꾹꾹:부:10
  +꿀:명:37
  +꿀꺽:부:5
  +꿀꺽꿀꺽:부:4
  +꿀꿀거리다:동:1
  +꿀꿀이:명:1
  +꿀단지:명:4
  +꿀럭거리다:동:1
  +꿀리다:동:3
  +꿀맛:명:2
  +꿀물:명:3
  +꿀밤:명:1
  +꿀밤:명:3
  +꿀벌:명:12
  +꿀주머니:명:1
  +꿇다:동:27
  +꿇리다:동:1
  +꿇리다:동:1
  +꿇어앉다:동:8
  +꿈:명:397
  +꿈결:명:4
  +꿈길:명:2
  +꿈꾸다:동:67
  +꿈나무:명:10
  +꿈속:명:30
  +꿈자리:명:2
  +꿈쩍:부:3
  +꿈쩍하다:동:2
  +꿈틀거리다:동:21
  +꿈틀꿈틀:부:2
  +꿈틀대다:동:7
  +꿈틀하다:동:3
  +꿋꿋이:부:1
  +꿋꿋하다:형:14
  +꿍꿍이속:명:1
  +꿍치다:동:1
  +꿍하다:동:1
  +꿩:명:9
  +꿩의다리:명:1
  +꿰다:동:32
  +꿰뚫다:동:24
  +꿰맞추다:동:1
  +꿰매다:동:10
  +꿰미:명:1
  +꿰이다:동:3
  +꿰차다:동:3
  +뀌다:동:4
  +끄나풀:명:1
  +끄다:동:86
  +끄덕:부:3
  +끄덕거리다:동:26
  +끄덕끄덕:부:1
  +끄덕끄덕하다:동:1
  +끄덕여지다:동:1
  +끄덕이다:동:98
  +끄덕하다:동:2
  +끄떡:부:3
  +끄떡없다:형:4
  +끄르다:동:7
  +끄먹거리다:동:3
  +끄집다:동:1
  +끄집어내다:동:21
  +끄트머리:명:9
  +끈:명:42
  +끈기:명:10
  +끈끈막:명:3
  +끈끈이:명:4
  +끈끈하다:형:12
  +끈끈히:부:1
  +끈덕지다:형:5
  +끈적거리다:동:3
  +끈적이다:동:2
  +끈적하다:동:1
  +끈질기다:형:35
  +끊기다:동:42
  +끊다:동:140
  +끊어지다:동:52
  +끊이다:동:21
  +끊임없다:형:42
  +끊임없이:부:120
  +끌:명:3
  +끌끌:부:1
  +끌끌:부:9
  +끌다:동:375
  +끌려가다:동:31
  +끌려들다:동:1
  +끌려오다:동:3
  +끌리다:동:31
  +끌어가다:동:1
  +끌어내다:동:22
  +끌어내리다:동:2
  +끌어당기다:동:29
  +끌어대다:동:1
  +끌어들이다:동:28
  +끌어안다:동:42
  +끌어올리다:동:22
  +끌칼:명:1
  +끌탕:명:4
  +끓다:동:73
  +끓어넘치다:동:1
  +끓어오르다:동:16
  +끓여지다:동:1
  +끓이다:동:161
  +끔뻑거리다:동:1
  +끔뻑끔뻑하다:동:1
  +끔직하다:형:3
  +끔찍끔찍하다:형:2
  +끔찍이:부:2
  +끔찍하다:형:24
  +끗발:명:2
  +끙:부:8
  +끙끙:부:5
  +끙끙거리다:동:1
  +끙끙대다:동:2
  +끝:명:582
  +끝끝내:부:3
  +끝나다:동:517
  +끝내:부:92
  +끝내기:명:1
  +끝내다:동:157
  +끝닿다:동:4
  +끝마무리:명:2
  +끝마치다:동:6
  +끝맺다:동:7
  +끝머리:명:6
  +끝물:명:1
  +끝선:명:1
  +끝없다:형:46
  +끝없이:부:43
  +끝자리:명:4
  +끝장:명:7
  +끝장나다:동:7
  +끝장내다:동:3
  +끝판:명:1
  +끼:명:11
  +끼:명:29
  +끼:의:2
  +끼니:명:8
  +끼니때:명:1
  +끼다:동:105
  +끼다:동:44
  +끼다:동:44
  +끼리끼리:부:4
  +끼무릇:명:1
  +끼어들기:명:1
  +끼어들다:동:46
  +끼얹다:동:23
  +끼얹어지다:동:1
  +끼얹혀지다:동:2
  +끼우다:동:59
  +끼워지다:동:10
  +끼이다:동:26
  +끼익:부:2
  +끼적거리다:동:4
  +끼적이다:동:1
  +끼치다:동:124
  +끼치다:동:18
  +끽:부:1
  +끽긴하다:형:1
  +끽미:명:1
  +끽소리:명:1
  +끽연:명:3
  +낄낄:부:1
  +낄낄거리다:동:8
  +낄낄대다:동:4
  +낌새:명:8
  +낑낑거리다:동:6
  +낑낑대다:동:2
  +나:대:10,564
  +나:명:110
  +나:명:9
  +나가다:동:977
  +나가다:보:528
  +나가떨어지다:동:5
  +나가리:명:2
  +나견:명:1
  +나귀:명:24
  +나그네:명:28
  +나그네새:명:20
  +나긋나긋하다:형:4
  +나꾸다:동:2
  +나나니벌:명:1
  +나날:명:26
  +나날이:부:9
  +나누다:동:626
  +나누어지다:동:34
  +나눗셈:명:6
  +나눠지다:동:1
  +나뉘다:동:38
  +나뉘어지다:동:12
  +나다:동:1,451
  +나다:보:610
  +나다니다:동:7
  +나대다:동:1
  +나돌다:동:45
  +나동그라지다:동:1
  +나둥그러지다:동:1
  +나뒹굴다:동:9
  +나들이:명:26
  +나들이옷:명:5
  +나들이하다:동:1
  +나라:명:858
  +나라꽃:명:2
  +나라님:명:3
  +나라말:명:1
  +나락:명:3
  +나락:명:5
  +나란하다:형:3
  +나란히:부:91
  +나랏일:명:6
  +나래:명:2
  +나루:명:10
  +나루터:명:6
  +나룻:명:2
  +나룻배:명:15
  +나르다:동:43
  +나른나른하다:형:1
  +나른하다:형:15
  +나른해지다:동:1
  +나름:의:208
  +나리:명:10
  +나리꽃:명:1
  +나리난초:명:2
  +나리다:동:1
  +나막신:명:2
  +나말:명:2
  +나머지:명:179
  +나무:명:395
  +나무껍질:명:11
  +나무꾼:명:4
  +나무둥치:명:1
  +나무라다:동:26
  +나무배:명:1
  +나무뿌리:명:4
  +나무숲:명:3
  +나무저:명:1
  +나무젓가락:명:5
  +나무줄기:명:4
  +나무총:명:1
  +나무토막:명:5
  +나무통:명:1
  +나무틀:명:1
  +나무판:명:1
  +나물:명:48
  +나물국:명:2
  +나뭇가지:명:63
  +나뭇결:명:3
  +나뭇광:명:1
  +나뭇단:명:1
  +나뭇잎:명:39
  +나뭇조각:명:1
  +나박김치:명:3
  +나박나박:부:2
  +나발:명:9
  +나방:명:1
  +나병:명:4
  +나부끼다:동:8
  +나부랭이:명:8
  +나불나불:부:1
  +나불대다:동:1
  +나붕이:명:1
  +나붙다:동:5
  +나비:명:30
  +나비국수나무:명:1
  +나비나물:명:1
  +나비넥타이:명:2
  +나빠지다:동:27
  +나빠하다:동:1
  +나쁘다:형:256
  +나사:명:1
  +나사:명:3
  +나사못:명:8
  +나사지다:동:1
  +나서다:동:445
  +나선:명:2
  +나선적:관:1
  +나선형:명:3
  +나시:명:2
  +나시티:명:1
  +나신:명:2
  +나아가다:동:269
  +나아가서:부:2
  +나아지다:동:40
  +나앉다:동:4
  +나약하다:형:15
  +나열:명:1
  +나열하다:동:15
  +나염:명:1
  +나오다:동:2,435
  +나와바리:명:1
  +나왕:명:2
  +나위:의:35
  +나이:명:462
  +나이대접:명:1
  +나이층:명:1
  +나이테:명:1
  +나이트:명:1
  +나이트클럽:명:30
  +나이트파:명:1
  +나이프:명:21
  +나일론:명:2
  +나잇값:명:3
  +나자빠지다:동:4
  +나전:명:1
  +나절:의:3
  +나중:명:219
  +나지다:동:1
  +나지막이:부:4
  +나지막하다:형:14
  +나직이:부:8
  +나직하다:형:18
  +나체:명:5
  +나체화:명:1
  +나치주의자:명:1
  +나치즘:명:1
  +나침반:명:62
  +나타나다:동:1,136
  +나타내다:동:360
  +나태:명:3
  +나태심:명:1
  +나태하다:형:3
  +나태해지다:동:3
  +나트륨:명:5
  +나팔:명:10
  +나팔관:명:1
  +나팔바지:명:2
  +나팔수:명:2
  +나풀거리다:동:4
  +나풀나풀:부:2
  +나풀대다:동:1
  +나프타:명:4
  +나프탈렌:명:2
  +나흘:명:13
  +낙:명:10
  +낙:의:2
  +낙관:명:2
  +낙관론:명:3
  +낙관성:명:2
  +낙관적:관:1
  +낙관적:명:6
  +낙관주의:명:3
  +낙관하다:동:9
  +낙농:명:3
  +낙농업:명:5
  +낙담하다:동:1
  +낙도:명:1
  +낙락장송:명:1
  +낙망:명:1
  +낙망하다:동:3
  +낙방:명:4
  +낙방하다:동:4
  +낙백하다:동:1
  +낙상:명:4
  +낙서:명:10
  +낙서장:명:2
  +낙서투성이:명:1
  +낙서하다:동:2
  +낙선:명:6
  +낙선되다:동:1
  +낙선자:명:2
  +낙선하다:동:4
  +낙성:명:3
  +낙승:명:2
  +낙승하다:동:1
  +낙심:명:1
  +낙심하다:동:4
  +낙엽:명:34
  +낙엽송:명:3
  +낙오되다:동:3
  +낙오자:명:6
  +낙오하다:동:3
  +낙원:명:9
  +낙인:명:11
  +낙인찍다:동:3
  +낙인찍히다:동:8
  +낙장:명:1
  +낙점:명:3
  +낙점설:명:1
  +낙제:명:1
  +낙제점:명:1
  +낙조:명:2
  +낙조어:명:1
  +낙지:명:6
  +낙차:명:1
  +낙착되다:동:2
  +낙찰:명:4
  +낙찰되다:동:1
  +낙찰자:명:1
  +낙천적:명:5
  +낙타:명:25
  +낙타초:명:1
  +낙태:명:53
  +낙태죄:명:9
  +낙토:명:1
  +낙폭:명:10
  +낙하:명:3
  +낙하산:명:20
  +낙하산병:명:1
  +낙하산식:명:1
  +낙하하다:동:6
  +낙향:명:11
  +낙향하다:동:6
  +낙화:명:2
  +낙화생:명:1
  +낙후:명:2
  +낙후되다:동:7
  +낙후하다:동:1
  +낙후해지다:동:1
  +낚다:동:20
  +낚시:명:94
  +낚시관:명:1
  +낚시광:명:2
  +낚시꾼:명:16
  +낚시복:명:1
  +낚시용품:명:1
  +낚시제비꽃:명:1
  +낚시질:명:4
  +낚시질하다:동:1
  +낚시터:명:14
  +낚시하다:동:3
  +낚시회:명:1
  +낚싯거루:명:1
  +낚싯대:명:17
  +낚싯바늘:명:8
  +낚싯밥:명:1
  +낚싯줄:명:16
  +낚아채다:동:16
  +낚아채이다:동:1
  +낚이다:동:1
  +난:명:16
  +난:명:20
  +난:명:8
  +난간:명:14
  +난감하다:형:22
  +난감해지다:동:2
  +난감해하다:동:5
  +난경:명:1
  +난공불락:명:1
  +난관:명:11
  +난관:명:4
  +난국:명:2
  +난국:명:5
  +난기류:명:2
  +난대성:명:4
  +난데없다:형:2
  +난데없이:부:8
  +난도:명:1
  +난도질:명:2
  +난도질하다:동:2
  +난동:명:5
  +난동:명:6
  +난로:명:9
  +난롯가:명:3
  +난류:명:4
  +난류:명:8
  +난륜:명:1
  +난리:명:41
  +난립:명:9
  +난립상:명:1
  +난립하다:동:2
  +난만하다:형:1
  +난맥상:명:1
  +난무:명:2
  +난무하다:동:19
  +난문제:명:2
  +난민:명:7
  +난민촌:명:5
  +난방:명:15
  +난방법:명:1
  +난방비:명:1
  +난봉꾼:명:2
  +난비하다:동:1
  +난산:명:14
  +난산하다:동:4
  +난삽하다:형:1
  +난상:명:1
  +난색:명:1
  +난색:명:7
  +난생:명:4
  +난생:부:7
  +난생처음:명:3
  +난세:명:2
  +난센스:명:4
  +난소:명:6
  +난숙하다:동:1
  +난시청:명:1
  +난연성:명:1
  +난이도:명:8
  +난입:명:1
  +난자:명:2
  +난자:명:6
  +난자완스:명:1
  +난잡하다:형:1
  +난장:명:1
  +난장:명:2
  +난장이:명:1
  +난장판:명:6
  +난쟁이:명:2
  +난적:명:4
  +난점:명:4
  +난제:명:6
  +난처하다:형:10
  +난처해지다:동:3
  +난처해하다:동:2
  +난초:명:5
  +난초꽃:명:1
  +난타:명:1
  +난타되다:동:1
  +난타전:명:2
  +난타하다:동:2
  +난투극:명:3
  +난파선:명:2
  +난파시키다:동:1
  +난폭하다:형:8
  +난폭해지다:동:1
  +난하다:형:1
  +난항:명:1
  +난해하다:형:14
  +난행:명:4
  +낟:명:4
  +낟가리:명:1
  +낟알:명:6
  +날:명:1,223
  +날:명:11
  +날:의:2
  +날개:명:105
  +날개깃:명:3
  +날개끝:명:1
  +날갯죽지:명:1
  +날갯짓:명:10
  +날건달:명:1
  +날것:명:2
  +날고기:명:1
  +날다:동:97
  +날뛰다:동:12
  +날라리:명:4
  +날라지다:동:4
  +날래:부:1
  +날래다:형:1
  +날렵하다:형:12
  +날렵히:부:1
  +날로:부:1
  +날로:부:25
  +날름:부:4
  +날름거리다:동:2
  +날리다:동:17
  +날리다:동:61
  +날림:명:1
  +날벼락:명:3
  +날보리:명:1
  +날쌔다:형:6
  +날씨:명:179
  +날씬하다:형:12
  +날씬해지다:동:1
  +날아가다:동:90
  +날아다니다:동:23
  +날아들다:동:10
  +날아오다:동:73
  +날아오르다:동:16
  +날염:명:4
  +날인:명:4
  +날인하다:동:3
  +날조:명:1
  +날조하다:동:1
  +날짐승:명:2
  +날짜:명:69
  +날치:명:5
  +날치기:명:1
  +날치기하다:동:2
  +날카로워지다:동:5
  +날카롭다:형:51
  +날티:명:1
  +날품:명:1
  +날품팔이:명:7
  +낡다:형:113
  +낡아지다:동:2
  +남:명:19
  +남:명:27
  +남:명:538
  +남겨지다:동:12
  +남고부:명:4
  +남고생:명:1
  +남구:명:3
  +남국:명:32
  +남국적:명:1
  +남근:명:2
  +남기다:동:213
  +남김없이:부:12
  +남남동:명:1
  +남남서:명:4
  +남녀:명:211
  +남녀관:명:1
  +남녀노소:명:8
  +남녀동등:명:3
  +남녀별:명:1
  +남녀유별:명:2
  +남녀칠세부동석:명:3
  +남녀평등:명:13
  +남녀평등관:명:1
  +남녘:명:2
  +남녘땅:명:1
  +남노인:명:1
  +남다:동:652
  +남다르다:형:32
  +남단:명:4
  +남달리:부:11
  +남대:명:1
  +남대부:명:2
  +남도:명:1
  +남동:명:11
  +남동류하다:동:1
  +남동부:명:2
  +남동생:명:17
  +남동쪽:명:9
  +남록:명:1
  +남루:명:1
  +남루하다:형:3
  +남류하다:동:1
  +남매:명:41
  +남매간:명:15
  +남모르다:형:3
  +남몰래:부:9
  +남문:명:17
  +남반구:명:3
  +남발:명:3
  +남발되다:동:3
  +남발하다:동:2
  +남방:명:1
  +남방:명:5
  +남방셔츠:명:1
  +남벌하다:동:1
  +남부:명:1
  +남부:명:93
  +남부권:명:2
  +남부끄럽다:형:3
  +남부럽다:형:4
  +남북:명:30
  +남북국:명:3
  +남북국론:명:2
  +남북문제:명:4
  +남북조:명:6
  +남북통일:명:3
  +남산:명:5
  +남산제비꽃:명:1
  +남상:명:1
  +남새밭:명:1
  +남색:명:8
  +남생이:명:2
  +남서:명:8
  +남서부:명:3
  +남서쪽:명:14
  +남성:명:2
  +남성:명:292
  +남성기:명:1
  +남성미:명:1
  +남성복:명:1
  +남성적:명:7
  +남성화하다:동:1
  +남순:명:1
  +남싹:부:1
  +남아:명:15
  +남아나다:동:4
  +남아돌다:동:13
  +남아돌아가다:동:1
  +남안:명:3
  +남왜북로:명:1
  +남용:명:16
  +남용되다:동:5
  +남용죄:명:1
  +남용하다:동:2
  +남우:명:1
  +남우세스럽다:형:1
  +남의눈:명:1
  +남자:명:1,160
  +남자관계:명:1
  +남자부:명:14
  +남작:명:1
  +남정네:명:12
  +남조:명:4
  +남존여비:명:5
  +남주작:명:2
  +남진:명:4
  +남진하다:동:2
  +남짓:의:24
  +남짓하다:형:16
  +남쪽:명:142
  +남침:명:4
  +남침시키다:동:1
  +남탕:명:11
  +남파:명:4
  +남파하다:동:3
  +남편:명:741
  +남편감:명:1
  +남포등:명:3
  +남폿불:명:6
  +남풍:명:3
  +남하:명:2
  +남하하다:동:2
  +남학교:명:2
  +남학생:명:32
  +남해안:명:2
  +남행하다:동:5
  +남향:명:10
  +남향집:명:1
  +남획되다:동:1
  +납:명:1
  +납:명:7
  +납기:명:6
  +납득:명:16
  +납득되다:동:2
  +납득시키다:동:2
  +납득하다:동:30
  +납막:명:1
  +납부:명:7
  +납부되다:동:1
  +납부하다:동:18
  +납북:명:6
  +납북당하다:동:1
  +납북되다:동:3
  +납빛:명:3
  +납세:명:1
  +납세자:명:11
  +납시다:동:3
  +납월:명:2
  +납입:명:1
  +납입금:명:5
  +납입하다:동:6
  +납자:명:2
  +납자루:명:1
  +납작코:명:1
  +납작하다:형:8
  +납작해지다:동:1
  +납축전지:명:1
  +납치:명:12
  +납치당하다:동:3
  +납치되다:동:1
  +납치범:명:5
  +납치하다:동:11
  +납품:명:11
  +납품되다:동:1
  +납향:명:1
  +낫:명:10
  +낫다:동:63
  +낫다:형:133
  +낫질:명:1
  +낭:명:1
  +낭가:명:2
  +낭대나무:명:3
  +낭독:명:2
  +낭독되다:동:1
  +낭독하다:동:19
  +낭독회:명:2
  +낭떠러지:명:11
  +낭랑하다:형:1
  +낭만:명:14
  +낭만성:명:2
  +낭만적:관:8
  +낭만적:명:13
  +낭만주의:명:59
  +낭만주의자:명:13
  +낭만주의적:관:3
  +낭만주의적:명:3
  +낭만파:명:10
  +낭불:명:2
  +낭비:명:35
  +낭비되다:동:3
  +낭비벽:명:1
  +낭비적:관:2
  +낭비적:명:2
  +낭비하다:동:11
  +낭설:명:3
  +낭송:명:2
  +낭송되다:동:1
  +낭송하다:동:2
  +낭송회:명:1
  +낭인:명:1
  +낭자:명:2
  +낭자:명:8
  +낭자머리:명:1
  +낭자하다:형:1
  +낭종:명:2
  +낭탁:명:1
  +낭패:명:10
  +낭패감:명:3
  +낭패스럽다:형:3
  +낭패하다:동:6
  +낮:명:194
  +낮다:형:228
  +낮달:명:1
  +낮닭:명:1
  +낮도깨비:명:3
  +낮말:명:1
  +낮술:명:4
  +낮아지다:동:33
  +낮잠:명:14
  +낮전:명:1
  +낮추다:동:56
  +낮춤말:명:2
  +낯:명:21
  +낯가림:명:2
  +낯나다:동:2
  +낯모르다:동:4
  +낯부끄럽다:형:1
  +낯빛:명:10
  +낯색:명:1
  +낯설다:형:98
  +낯설어지다:동:1
  +낯설어하다:동:1
  +낯익다:형:25
  +낯짝:명:4
  +낱:명:1
  +낱개:명:1
  +낱낱:명:2
  +낱낱이:부:17
  +낱말:명:38
  +낱알:명:2
  +낱잔:명:1
  +낱장:명:1
  +낳다:동:460
  +내:대:4
  +내:대:7
  +내:명:1
  +내:명:6
  +내:의:440
  +내가다:동:4
  +내각:명:1
  +내각:명:18
  +내각제:명:5
  +내갈기다:동:3
  +내걸다:동:43
  +내걸리다:동:1
  +내공:명:1
  +내과:명:14
  +내구:명:4
  +내구성:명:4
  +내국:명:1
  +내국세:명:1
  +내국인:명:5
  +내규:명:1
  +내기:명:11
  +내기하다:동:2
  +내내:부:89
  +내년:명:113
  +내년도:명:7
  +내놓다:동:211
  +내놓아지다:동:1
  +내다:동:1,122
  +내다:보:1,045
  +내다:보:12
  +내다보다:동:75
  +내다보이다:동:6
  +내닫다:동:3
  +내달:명:28
  +내달리다:동:9
  +내당:명:6
  +내던져지다:동:8
  +내던지다:동:19
  +내돌리다:동:2
  +내동댕이:명:2
  +내동댕이쳐지다:동:5
  +내동댕이치다:동:4
  +내두르다:동:8
  +내둥:부:1
  +내드리다:동:1
  +내디디다:동:9
  +내딛다:동:15
  +내뜨리다:동:1
  +내락:명:1
  +내란:명:5
  +내려가다:동:215
  +내려놓다:동:61
  +내려다보다:동:68
  +내려다보이다:동:12
  +내려다뵈다:동:1
  +내려뜨리다:동:1
  +내려서다:동:21
  +내려앉다:동:28
  +내려오다:동:251
  +내려지다:동:47
  +내려찍다:동:1
  +내려치다:동:3
  +내력:명:20
  +내력담:명:1
  +내로라하다:동:6
  +내륙:명:28
  +내리:부:7
  +내리깔다:동:7
  +내리꽂히다:동:2
  +내리누르다:동:5
  +내리다:동:803
  +내리막:명:1
  +내리막길:명:6
  +내리붓다:동:2
  +내리사랑:명:3
  +내리지르다:동:1
  +내리쪼이다:동:1
  +내리쬐다:동:2
  +내리찍다:동:1
  +내리치다:동:15
  +내림:명:2
  +내림굿:명:12
  +내림마장조:명:1
  +내림세:명:8
  +내막:명:1
  +내막:명:9
  +내막증:명:2
  +내맡기다:동:6
  +내맺히다:동:1
  +내먹다:동:1
  +내면:명:56
  +내면세계:명:4
  +내면적:관:18
  +내면적:명:15
  +내면화:명:8
  +내면화되다:동:5
  +내면화시키다:동:1
  +내면화하다:동:9
  +내몰다:동:16
  +내몰리다:동:3
  +내무:명:2
  +내무과:명:1
  +내무과장:명:1
  +내무반:명:8
  +내무실:명:1
  +내밀다:동:148
  +내밀어지다:동:1
  +내밀하다:형:2
  +내방:명:1
  +내방자:명:1
  +내뱉다:동:35
  +내버리다:동:41
  +내벽:명:2
  +내보내다:동:31
  +내보이다:동:20
  +내보이다:동:5
  +내복:명:2
  +내복약:명:1
  +내부:명:193
  +내부자:명:4
  +내부적:관:6
  +내부적:명:9
  +내분:명:9
  +내분비:명:1
  +내비치다:동:23
  +내빼다:동:7
  +내뻔지다:동:1
  +내뻗다:동:3
  +내뿜다:동:11
  +내사:명:10
  +내사받다:동:1
  +내사하다:동:3
  +내색:명:11
  +내색하다:동:2
  +내성:명:1
  +내성:명:1
  +내성:명:7
  +내성외왕:명:1
  +내성적:명:6
  +내성종:명:4
  +내세:명:7
  +내세관:명:2
  +내세우다:동:130
  +내세워지다:동:1
  +내수:명:12
  +내수:명:2
  +내수도문:명:10
  +내수성:명:1
  +내숭:명:11
  +내쉬다:동:39
  +내습:명:1
  +내시경:명:5
  +내신:명:18
  +내실:명:3
  +내실:명:7
  +내실화:명:3
  +내심:명:24
  +내쏘다:동:2
  +내압:명:2
  +내야진:명:1
  +내역:명:14
  +내역서:명:1
  +내연:명:1
  +내연하다:동:2
  +내열:명:2
  +내오다:동:8
  +내왕:명:1
  +내외:명:35
  +내외:명:38
  +내외국:명:1
  +내외분:명:6
  +내외신:명:1
  +내용:명:896
  +내용물:명:15
  +내용성:명:1
  +내용적:관:1
  +내용적:명:2
  +내우:명:1
  +내우:명:2
  +내우외환:명:1
  +내원하다:동:1
  +내음:명:15
  +내음새:명:1
  +내의:명:11
  +내의적:명:1
  +내인가:명:1
  +내일:명:181
  +내일:부:57
  +내일모레:명:8
  +내자:명:3
  +내장:명:2
  +내장:명:27
  +내장:명:4
  +내장객:명:1
  +내장되다:동:2
  +내장되다:동:4
  +내장재:명:1
  +내장하다:동:3
  +내장형:명:1
  +내재:명:1
  +내재되다:동:12
  +내재적:관:4
  +내재적:명:4
  +내재하다:동:13
  +내재화되다:동:1
  +내재화하다:동:1
  +내적:관:37
  +내적:명:21
  +내전:명:1
  +내전:명:12
  +내전근:명:1
  +내전적:명:1
  +내젓다:동:10
  +내정:명:1
  +내정:명:7
  +내정:명:8
  +내정되다:동:11
  +내정설:명:2
  +내정자:명:11
  +내정하다:동:2
  +내조:명:6
  +내조하다:동:1
  +내주:명:2
  +내주다:동:56
  +내지:부:34
  +내지:접:82
  +내지르다:동:10
  +내쫓기다:동:1
  +내쫓다:동:8
  +내처:부:2
  +내추럴풍:명:1
  +내추럴하다:동:1
  +내치다:동:4
  +내칙:명:9
  +내친김:명:10
  +내키다:동:30
  +내통하다:동:3
  +내투:명:1
  +내투하다:동:1
  +내팽개치다:동:6
  +내편:명:1
  +내포되다:동:15
  +내포하다:동:25
  +내핍:명:1
  +내한:명:6
  +내한하다:동:5
  +내항:명:1
  +내향:명:1
  +내향적:관:1
  +내향적:명:1
  +내후년:명:3
  +내훈서:명:1
  +낸드:명:1
  +낼:명:4
  +낼:부:6
  +낼모레:명:3
  +냄비:명:38
  +냄비형:명:1
  +냄새:명:212
  +냄새나다:동:3
  +냄시:명:1
  +냅다:부:5
  +냅킨:명:12
  +냇가:명:13
  +냇둑:명:4
  +냇물:명:17
  +냇바닥:명:3
  +냉:명:4
  +냉가슴:명:1
  +냉각:명:4
  +냉각되다:동:4
  +냉각수:명:4
  +냉각시키다:동:1
  +냉각하다:동:1
  +냉갈령:명:1
  +냉과리:명:1
  +냉기:명:14
  +냉기류:명:2
  +냉난방:명:1
  +냉담:명:1
  +냉담하다:형:6
  +냉대:명:1
  +냉대:명:2
  +냉대하다:동:1
  +냉돌:명:1
  +냉동:명:47
  +냉동량:명:1
  +냉동선:명:9
  +냉동시키다:동:2
  +냉동실:명:6
  +냉동하다:동:11
  +냉랭하다:형:9
  +냉랭히:부:1
  +냉량하다:형:1
  +냉매:명:1
  +냉면:명:10
  +냉방:명:5
  +냉방병:명:1
  +냉병:명:1
  +냉소:명:8
  +냉소적:관:1
  +냉소적:명:5
  +냉소주의:명:4
  +냉소하다:동:1
  +냉수:명:6
  +냉습하다:형:1
  +냉식:명:1
  +냉엄하다:형:3
  +냉연:명:1
  +냉온방기:명:1
  +냉온풍기:명:1
  +냉우유:명:1
  +냉이:명:3
  +냉이무침:명:1
  +냉잇국:명:1
  +냉장:명:5
  +냉장고:명:61
  +냉전:명:33
  +냉정:명:1
  +냉정하다:형:11
  +냉정하다:형:12
  +냉정히:부:4
  +냉증:명:75
  +냉찜질:명:1
  +냉철하다:형:10
  +냉철히:부:2
  +냉커피:명:2
  +냉큼:부:8
  +냉탕:명:1
  +냉탕식:명:1
  +냉하다:형:5
  +냉해:명:1
  +냉해지다:동:2
  +냉혹하다:형:8
  +냉혹히:부:1
  +냠냠:부:2
  +냥:의:5
  +너:대:1,489
  +너구리:명:6
  +너그러워지다:동:1
  +너그러이:부:2
  +너그럽다:형:20
  +너끈히:부:8
  +너나없이:부:6
  +너덜거리다:동:1
  +너덜겅:명:2
  +너덜너덜하다:형:3
  +너덜대다:동:1
  +너덧:관:1
  +너도나도:부:10
  +너르다:형:5
  +너머:명:97
  +너무:부:859
  +너무나:부:199
  +너무너무:부:7
  +너무하다:동:7
  +너무하다:형:10
  +너벅선:명:1
  +너부대대:명:2
  +너부죽이:부:2
  +너비:명:11
  +너스레:명:5
  +너울가지:명:1
  +너울거리다:동:3
  +너울너울:부:1
  +너저분하다:형:3
  +너절하다:형:1
  +너털거리다:동:2
  +너털웃음:명:2
  +너트:명:3
  +너트:명:8
  +너풀거리다:동:1
  +너풀대다:동:1
  +너희:대:143
  +넉:관:4
  +넉넉잡다:동:1
  +넉넉하다:형:42
  +넉넉히:부:19
  +넉살:명:4
  +넋:명:46
  +넋두리:명:12
  +넌지시:부:6
  +널:명:2
  +널길:명:1
  +널널하다:형:1
  +널다:동:9
  +널따랗다:형:5
  +널뛰기:명:3
  +널뛰다:동:1
  +널리:부:153
  +널리다:동:30
  +널무덤:명:1
  +널방:명:2
  +널브러지다:동:6
  +널빤지:명:5
  +널어놓다:동:2
  +널어지다:동:1
  +널쪽:명:1
  +널찍하다:형:8
  +널푸르다:형:1
  +넓다:형:342
  +넓다듬이:명:2
  +넓어지다:동:39
  +넓이:명:13
  +넓적하다:형:8
  +넓혀지다:동:2
  +넓히다:동:76
  +넘겨다보다:동:4
  +넘겨받다:동:6
  +넘겨주다:동:34
  +넘겨지다:동:2
  +넘겨짚다:동:1
  +넘기다:동:156
  +넘나다:동:1
  +넘나들다:동:18
  +넘다:동:433
  +넘보다:동:12
  +넘실거리다:동:1
  +넘실넘실:부:1
  +넘실대다:동:1
  +넘어가다:동:140
  +넘어뜨리다:동:37
  +넘어서다:동:133
  +넘어오다:동:40
  +넘어지다:동:44
  +넘쳐흐르다:동:8
  +넘치다:동:100
  +넙죽:부:2
  +넝마:명:1
  +넝쿨:명:5
  +넣다:동:874
  +넣어지다:동:1
  +네:감:541
  +네:관:177
  +네거리:명:19
  +네거티브:명:1
  +네그엔트로피:명:1
  +네까짓:관:1
  +네깐:관:1
  +네깟:관:1
  +네년:대:1
  +네놈:대:5
  +네다바이:명:2
  +네다섯:관:2
  +네댓:관:9
  +네댓:수:1
  +네모:명:2
  +네모꼴:명:4
  +네모나다:형:10
  +네모반듯하다:형:1
  +네모지다:형:6
  +네모형:명:1
  +네발:명:1
  +네발짐승:명:1
  +네안데르탈인:명:2
  +네오리얼리즘:명:1
  +네온:명:6
  +네온사인:명:7
  +네트:명:8
  +네트워크:명:10
  +네트워크적:관:1
  +네트워킹:명:1
  +네티즌:명:10
  +넥시아리스트:명:2
  +넥시아리즘:명:1
  +넥타이:명:25
  +넨장칠:관:1
  +넷:수:24
  +넷이:명:1
  +넷째:관:14
  +넷째:수:28
  +녀:명:4
  +녀석:의:105
  +녁:의:1
  +년:의:28
  +년:의:4,630
  +년기:명:4
  +년대:의:561
  +년대생:의:1
  +년대적:관:4
  +년대적:명:1
  +년도:의:72
  +년분:의:1
  +년사:의:2
  +년산:의:3
  +년생:의:48
  +년식:의:1
  +년제:의:3
  +년제:의:7
  +년판:의:35
  +년형:의:2
  +녘:의:7
  +노:명:5
  +노:명:5
  +노가다:명:4
  +노가다거리:명:1
  +노가리:명:2
  +노가바하다:동:1
  +노간주나무:명:1
  +노거수:명:4
  +노계:명:1
  +노고:명:14
  +노고지리:명:1
  +노곤하다:형:1
  +노골노골:부:1
  +노골적:관:1
  +노골적:명:33
  +노골화되다:동:4
  +노골화하다:동:1
  +노교수:명:4
  +노구:명:1
  +노글노글하다:형:1
  +노기:명:3
  +노끈:명:2
  +노년:명:6
  +노년기:명:4
  +노년자:명:1
  +노년층:명:2
  +노닐다:동:4
  +노다지:명:1
  +노닥거리다:동:4
  +노대감:명:1
  +노대감마님:명:1
  +노도:명:1
  +노동:명:388
  +노동계:명:22
  +노동관:명:1
  +노동국:명:1
  +노동권:명:1
  +노동권:명:2
  +노동량:명:1
  +노동력:명:62
  +노동요:명:1
  +노동일:명:1
  +노동자:명:277
  +노동자회:명:1
  +노동장:명:1
  +노동절:명:2
  +노동조합:명:33
  +노동조합주의:명:1
  +노동하다:동:14
  +노란색:명:19
  +노랑:명:10
  +노랑꽃:명:1
  +노랑때까치:명:1
  +노랑무늬인동덩굴:명:1
  +노랑물봉선:명:2
  +노랑이:명:2
  +노랑지빠귀:명:1
  +노랑턱멧새:명:1
  +노랑할미새:명:1
  +노랗다:형:66
  +노래:명:424
  +노래극:명:3
  +노래기:명:1
  +노래방:명:49
  +노래비:명:28
  +노래자랑:명:1
  +노래지다:동:4
  +노래집:명:1
  +노래패:명:2
  +노래하다:동:59
  +노랫가락:명:2
  +노랫말:명:6
  +노랫소리:명:22
  +노략질:명:4
  +노략질당하다:동:1
  +노려보다:동:56
  +노력:명:2
  +노력:명:420
  +노력비:명:1
  +노력하다:동:237
  +노련하다:형:11
  +노령:명:1
  +노령자:명:1
  +노령층:명:1
  +노령화:명:3
  +노령화되다:동:1
  +노루목:명:13
  +노루발풀:명:2
  +노루삼:명:1
  +노루잠:명:1
  +노르께하다:형:1
  +노르스름하다:형:1
  +노른자:명:1
  +노른자위:명:4
  +노름:명:8
  +노름꾼:명:2
  +노름방:명:1
  +노름빚:명:2
  +노름판:명:4
  +노름하다:동:1
  +노릇:명:108
  +노릇노릇하다:형:5
  +노릇하다:형:12
  +노릇해지다:동:2
  +노리개:명:4
  +노리갯감:명:2
  +노리다:동:49
  +노린내:명:1
  +노린재나무:명:2
  +노림수:명:2
  +노망:명:7
  +노망기:명:2
  +노망하다:동:1
  +노면:명:2
  +노모:명:13
  +노무:명:9
  +노무비:명:1
  +노무사:명:4
  +노무직:명:3
  +노문학:명:1
  +노문학계:명:1
  +노미네이트되다:동:1
  +노방:명:4
  +노방주:명:2
  +노복:명:3
  +노부모:명:5
  +노부부:명:10
  +노부인:명:6
  +노비:명:30
  +노사:명:1
  +노사:명:106
  +노사정:명:3
  +노산:명:1
  +노상:명:2
  +노상:부:12
  +노상강도:명:1
  +노선:명:46
  +노소:명:1
  +노송:명:1
  +노쇠:명:1
  +노쇠하다:형:1
  +노수:명:1
  +노숙:명:2
  +노숙자:명:2
  +노스탤지어:명:1
  +노시인:명:1
  +노신사:명:1
  +노심초사:명:1
  +노심초사하다:동:5
  +노약자:명:3
  +노어:명:1
  +노여움:명:13
  +노여워하다:동:2
  +노역:명:4
  +노엽다:형:1
  +노예:명:136
  +노예군:명:1
  +노예론자:명:6
  +노예적:관:9
  +노예적:명:2
  +노예제:명:77
  +노예제론자:명:3
  +노예제설:명:2
  +노예제적:관:1
  +노예주:명:1
  +노예화시키다:동:1
  +노운전기사:명:1
  +노웨어:명:2
  +노을:명:12
  +노을빛:명:4
  +노이로제:명:11
  +노인:명:209
  +노인네:명:16
  +노인장:명:1
  +노인정:명:2
  +노인촌:명:1
  +노인층:명:2
  +노인회:명:1
  +노임:명:8
  +노자:명:1
  +노자:명:4
  +노작:명:1
  +노잣돈:명:2
  +노장:명:1
  +노장:명:12
  +노장:명:2
  +노점:명:7
  +노점상:명:23
  +노정:명:2
  +노제:명:5
  +노조:명:145
  +노조원:명:8
  +노처녀:명:6
  +노천:명:2
  +노천카페:명:1
  +노총각:명:3
  +노추:명:1
  +노출:명:35
  +노출되다:동:23
  +노출미:명:2
  +노출시키다:동:9
  +노출하다:동:4
  +노출형:명:1
  +노코멘트:명:1
  +노크:명:13
  +노크하다:동:3
  +노터치:명:1
  +노트:명:20
  +노트:의:1
  +노트북:명:2
  +노파:명:26
  +노폐물:명:5
  +노포:명:1
  +노폭:명:1
  +노하다:동:5
  +노하우:명:10
  +노형:대:6
  +노화:명:11
  +노화되다:동:1
  +노화하다:동:1
  +노회하다:형:1
  +노후:명:6
  +노후:명:7
  +노후관:명:1
  +노후되다:동:1
  +녹:명:1
  +녹:명:8
  +녹각:명:3
  +녹각교탕:명:4
  +녹과전:명:1
  +녹금:명:1
  +녹내장:명:4
  +녹다:동:47
  +녹두:명:3
  +녹라:명:1
  +녹록하다:형:2
  +녹말:명:9
  +녹말가루:명:8
  +녹말기:명:1
  +녹봉:명:1
  +녹색:명:45
  +녹색등:명:1
  +녹수:명:1
  +녹슬다:동:13
  +녹신녹신하다:형:1
  +녹아내리다:동:1
  +녹아들다:동:9
  +녹용:명:2
  +녹원:명:1
  +녹음:명:18
  +녹음:명:4
  +녹음기:명:7
  +녹음되다:동:7
  +녹음테이프:명:3
  +녹음하다:동:19
  +녹읍:명:21
  +녹읍민:명:1
  +녹읍제:명:2
  +녹이다:동:26
  +녹즙:명:1
  +녹즙기:명:5
  +녹지:명:5
  +녹지과:명:1
  +녹차:명:7
  +녹청색:명:2
  +녹초:명:3
  +녹화:명:1
  +녹화:명:15
  +녹화시키다:동:1
  +녹화장:명:5
  +녹화하다:동:2
  +녹황색:명:1
  +녹회색:명:2
  +논:명:1
  +논:명:2
  +논:명:79
  +논가:명:1
  +논거:명:4
  +논고:명:1
  +논고문:명:2
  +논고하다:동:1
  +논공행상:명:1
  +논구하다:동:1
  +논길:명:1
  +논난:명:1
  +논농사:명:7
  +논단:명:3
  +논두렁:명:1
  +논두렁:명:6
  +논두렁길:명:3
  +논둑:명:1
  +논둑길:명:3
  +논뙈기:명:1
  +논란:명:51
  +논란거리:명:2
  +논리:명:186
  +논리성:명:1
  +논리적:관:13
  +논리적:명:34
  +논리학:명:12
  +논문:명:161
  +논문성:명:1
  +논문적:명:1
  +논문집:명:1
  +논물:명:3
  +논바닥:명:8
  +논박:명:1
  +논박하다:동:1
  +논밭:명:21
  +논배미:명:1
  +논법:명:7
  +논병아리:명:2
  +논설:명:2
  +논설문:명:4
  +논설위원:명:2
  +논술:명:7
  +논술하다:동:1
  +논스톱:명:2
  +논외:명:7
  +논의:명:12
  +논의:명:188
  +논의되다:동:48
  +논의하다:동:70
  +논일:명:3
  +논임자:명:1
  +논자:명:6
  +논쟁:명:78
  +논쟁거리:명:3
  +논쟁적:명:2
  +논쟁점:명:2
  +논쟁하다:동:3
  +논저:명:1
  +논전:명:1
  +논점:명:8
  +논제:명:1
  +논조:명:3
  +논증:명:5
  +논증하다:동:2
  +논지:명:7
  +논지하다:동:1
  +논틀:명:1
  +논파하다:동:2
  +논평:명:15
  +논평하다:동:5
  +논픽션:명:1
  +논하다:동:51
  +논흙:명:1
  +놀:명:1
  +놀고먹다:동:1
  +놀놀하다:형:1
  +놀다:동:480
  +놀뛰다:동:1
  +놀라다:동:356
  +놀라움:명:10
  +놀라워하다:동:6
  +놀람:명:3
  +놀람기:명:1
  +놀랍다:형:121
  +놀래다:동:5
  +놀리다:동:19
  +놀리다:동:43
  +놀림:명:2
  +놀림:명:3
  +놀림감:명:4
  +놀아나다:동:7
  +놀아먹다:동:1
  +놀음:명:9
  +놀이:명:195
  +놀이마당:명:3
  +놀이방:명:6
  +놀이성:명:3
  +놀이적:관:7
  +놀이적:명:1
  +놀이터:명:21
  +놀이하다:동:1
  +놀이화하다:동:2
  +놀잇감:명:2
  +놈:명:1
  +놈:명:7
  +놈:의:262
  +놈팡이:명:1
  +놉:명:1
  +놋:명:3
  +놋그릇:명:1
  +놋대야:명:2
  +놋쇠:명:1
  +놋숟가락:명:1
  +농:명:4
  +농가:명:47
  +농간:명:1
  +농경:명:44
  +농경문화:명:5
  +농경민족:명:1
  +농경적:관:1
  +농경제:명:1
  +농경지:명:21
  +농고:명:1
  +농공:명:7
  +농과:명:4
  +농구:명:15
  +농구공:명:2
  +농군:명:2
  +농기계:명:8
  +농기구:명:15
  +농노:명:8
  +농노적:관:6
  +농노제:명:4
  +농노제설:명:1
  +농노제적:관:1
  +농담:명:2
  +농담:명:73
  +농담거리:명:1
  +농담스럽다:형:1
  +농담하다:동:3
  +농대:명:2
  +농도:명:42
  +농락:명:1
  +농락하다:동:2
  +농량:명:1
  +농림:명:6
  +농막:명:1
  +농목:명:1
  +농목업:명:3
  +농묵:명:1
  +농민:명:355
  +농민극:명:2
  +농민시장:명:6
  +농민층:명:17
  +농민회:명:18
  +농민회원:명:1
  +농번기:명:6
  +농법:명:18
  +농본:명:1
  +농부:명:62
  +농사:명:155
  +농사거리:명:3
  +농사꾼:명:8
  +농사법:명:1
  +농사일:명:32
  +농사일하다:동:2
  +농사짓다:동:37
  +농사철:명:8
  +농산물:명:113
  +농산품:명:7
  +농삿집:명:1
  +농성:명:22
  +농성장:명:1
  +농성하다:동:2
  +농수산:명:2
  +농수산물:명:5
  +농아:명:1
  +농아:명:2
  +농악:명:3
  +농악대:명:1
  +농약:명:60
  +농어가:명:1
  +농어민:명:7
  +농어촌:명:20
  +농업:명:298
  +농업국:명:2
  +농업용수:명:4
  +농업자:명:1
  +농외소득:명:18
  +농요:명:1
  +농우:명:1
  +농원:명:1
  +농자:명:1
  +농자재:명:1
  +농작물:명:26
  +농작업:명:1
  +농잠:명:1
  +농장:명:32
  +농장:명:6
  +농장주:명:1
  +농정:명:5
  +농주:명:2
  +농지:명:34
  +농지거리:명:3
  +농짝:명:1
  +농채:명:1
  +농촌:명:153
  +농축:명:5
  +농축되다:동:3
  +농축산물:명:6
  +농축시키다:동:1
  +농토:명:19
  +농투성이:명:1
  +농하다:동:1
  +농한기:명:8
  +농호:명:2
  +농활:명:1
  +높낮이:명:5
  +높다:형:691
  +높다랗다:형:6
  +높새:명:2
  +높새바람:명:2
  +높아지다:동:136
  +높이:명:98
  +높이:부:83
  +높이다:동:199
  +높이뛰기:명:7
  +높임말:명:6
  +높푸르다:형:1
  +놓다:동:3
  +놓다:동:481
  +놓다:보:1,181
  +놓아두다:동:27
  +놓아먹이다:동:1
  +놓아주다:동:6
  +놓여나다:동:2
  +놓여지다:동:14
  +놓이다:동:174
  +놓쳐지다:동:2
  +놓치다:동:100
  +놔두다:동:28
  +놔주다:동:6
  +뇌:명:77
  +뇌과:명:1
  +뇌관:명:1
  +뇌까리다:동:7
  +뇌다:동:2
  +뇌대장소:명:1
  +뇌리:명:12
  +뇌물:명:78
  +뇌물성:명:2
  +뇌물죄:명:1
  +뇌병원:명:1
  +뇌빈혈:명:4
  +뇌사:명:6
  +뇌사자:명:6
  +뇌성:명:2
  +뇌성:명:4
  +뇌세포:명:1
  +뇌쇄:명:1
  +뇌쇄시키다:동:1
  +뇌수:명:3
  +뇌신경:명:3
  +뇌신경외과:명:1
  +뇌염:명:3
  +뇌졸중:명:3
  +뇌종양:명:5
  +뇌출혈:명:2
  +뇌파:명:2
  +뇌하수체:명:4
  +누:대:1
  +누:명:2
  +누가:명:2
  +누각:명:8
  +누계:명:2
  +누관:명:2
  +누구:대:1,384
  +누구누구:대:11
  +누그러뜨리다:동:2
  +누그러지다:동:14
  +누나:명:200
  +누누이:부:9
  +누님:명:7
  +누다:동:25
  +누대:명:1
  +누더기:명:8
  +누드:명:3
  +누들:명:1
  +누락:명:2
  +누락되다:동:4
  +누락분:명:1
  +누락시키다:동:3
  +누락하다:동:1
  +누란:명:1
  +누럭누럭:부:1
  +누런색:명:2
  +누렁:명:2
  +누렁이:명:1
  +누렇다:형:27
  +누레지다:동:2
  +누룩:명:1
  +누룽지:명:27
  +누르다:동:142
  +누르다:형:1
  +누르스름하다:형:2
  +누름단추:명:1
  +누름적:명:1
  +누릇누릇:부:1
  +누리:명:1
  +누리다:동:104
  +누리다:형:1
  +누리장나무:명:1
  +누린내:명:5
  +누린내풀:명:1
  +누릿하다:형:1
  +누명:명:3
  +누문:명:5
  +누벨바그:명:2
  +누비:명:2
  +누비다:동:23
  +누상:명:1
  +누상무덤:명:1
  +누설:명:9
  +누설되다:동:4
  +누설량:명:1
  +누설하다:동:7
  +누수:명:16
  +누에:명:7
  +누에고치:명:1
  +누이:명:26
  +누이다:동:3
  +누이동생:명:4
  +누적:명:11
  +누적되다:동:11
  +누적시키다:동:1
  +누적적:관:1
  +누전되다:동:1
  +누증:명:4
  +누진:명:2
  +누진세:명:3
  +누진제:명:1
  +누추하다:형:7
  +누추해지다:동:1
  +누출:명:4
  +누출되다:동:3
  +눅눅하다:형:4
  +눅눅해지다:동:1
  +눈:명:1
  +눈:명:1,425
  +눈:명:151
  +눈가:명:26
  +눈가래:명:1
  +눈가루:명:1
  +눈가리개:명:2
  +눈가림:명:5
  +눈감다:동:20
  +눈곱:명:12
  +눈구덩이:명:1
  +눈금:명:4
  +눈길:명:154
  +눈길:명:2
  +눈깔:명:2
  +눈깔사탕:명:3
  +눈꺼풀:명:10
  +눈꼴:명:1
  +눈꼴시리다:형:1
  +눈높이:명:3
  +눈대중:명:2
  +눈덤북:명:1
  +눈덩이:명:1
  +눈독:명:5
  +눈동자:명:55
  +눈두덩:명:10
  +눈두덩이:명:1
  +눈때:명:1
  +눈뜨다:동:20
  +눈망울:명:6
  +눈매:명:16
  +눈맵시:명:1
  +눈머리:명:2
  +눈멀다:동:11
  +눈목:명:1
  +눈물:명:271
  +눈물겹다:형:10
  +눈물기:명:1
  +눈물바다:명:1
  +눈물방울:명:2
  +눈물샘:명:7
  +눈물짓다:동:3
  +눈발:명:19
  +눈방울:명:1
  +눈밭:명:4
  +눈병:명:5
  +눈보라:명:9
  +눈부시다:형:44
  +눈부처:명:1
  +눈비:명:2
  +눈빛:명:105
  +눈빛:명:3
  +눈사태:명:1
  +눈살:명:12
  +눈서리:명:1
  +눈세계:명:1
  +눈속임:명:4
  +눈송이:명:2
  +눈시울:명:10
  +눈싸움:명:1
  +눈싸움:명:2
  +눈쌀:명:1
  +눈썰매장:명:6
  +눈썰미:명:2
  +눈썹:명:68
  +눈알:명:14
  +눈앞:명:113
  +눈여겨보다:동:21
  +눈여겨지다:동:1
  +눈여기다:동:3
  +눈요기:명:1
  +눈요깃감:명:1
  +눈웃음:명:4
  +눈인사:명:6
  +눈자위:명:13
  +눈짓:명:15
  +눈짓하다:동:4
  +눈초리:명:34
  +눈총:명:12
  +눈치:명:198
  +눈치껏:부:2
  +눈치코치:명:1
  +눈코:명:5
  +눈테:명:2
  +눋다:동:2
  +눌러놓다:동:1
  +눌러쓰다:동:3
  +눌러앉다:동:4
  +눌려지다:동:2
  +눌리다:동:1
  +눌리다:동:14
  +눌리우다:동:1
  +눌어붙다:동:6
  +눌은밥:명:1
  +눔:의:6
  +눕다:동:226
  +눕혀지다:동:2
  +눕히다:동:19
  +눙치다:동:2
  +뉘:명:1
  +뉘다:동:21
  +뉘앙스:명:8
  +뉘어지다:동:1
  +뉘엿거리다:동:1
  +뉘엿뉘엿:부:5
  +뉘우치다:동:15
  +뉴:명:2
  +뉴리더:명:1
  +뉴미디어:명:1
  +뉴스:명:246
  +뉴스거리:명:1
  +뉴스성:명:1
  +느그:대:8
  +느글느글하다:형:1
  +느긋이:부:2
  +느긋하다:형:14
  +느긋해지다:동:1
  +느긋해하다:동:1
  +느껍다:형:1
  +느껴지다:동:220
  +느끼다:동:3
  +느끼다:동:867
  +느끼하다:형:6
  +느낌:명:490
  +느닷없다:형:7
  +느닷없이:부:41
  +느럭느럭:부:1
  +느려지다:동:8
  +느리다:형:51
  +느리터분하다:형:1
  +느림보:명:4
  +느릿느릿:부:8
  +느릿느릿하다:형:1
  +느릿하다:형:2
  +느물거리다:동:1
  +느슨하다:형:11
  +느슨해지다:동:4
  +느슨히:부:1
  +느지막이:부:1
  +느타리버섯:명:9
  +느티나무:명:29
  +늑골:명:1
  +늑대:명:38
  +늑막:명:1
  +늑막염:명:3
  +늑장:명:9
  +는적이다:동:1
  +늘:부:308
  +늘그막:명:1
  +늘다:동:160
  +늘리다:동:138
  +늘상:부:10
  +늘씬하다:형:1
  +늘씬하다:형:7
  +늘어나다:동:272
  +늘어놓다:동:43
  +늘어뜨리다:동:8
  +늘어서다:동:38
  +늘어세우다:동:1
  +늘어지다:동:39
  +늘이다:동:3
  +늘이다:동:5
  +늘임봉:명:1
  +늘쩡하다:형:1
  +늙다:동:136
  +늙다리:명:1
  +늙수그레하다:형:1
  +늙어지다:동:3
  +늙은네:명:1
  +늙은이:명:12
  +늠름하다:형:10
  +능:명:4
  +능:명:5
  +능가:명:1
  +능가하다:동:13
  +능글:명:1
  +능글거리다:동:1
  +능글맞다:형:2
  +능글스럽다:형:1
  +능금:명:1
  +능놀다:동:1
  +능동:명:1
  +능동성:명:2
  +능동적:관:15
  +능동적:명:29
  +능란하다:형:3
  +능력:명:417
  +능력껏:부:1
  +능률:명:5
  +능률성:명:1
  +능률적:관:1
  +능률적:명:4
  +능멸:명:1
  +능멸하다:동:2
  +능사:명:7
  +능선:명:15
  +능선부:명:2
  +능수능란하다:형:1
  +능숙하다:형:12
  +능숙해지다:동:1
  +능욕:명:1
  +능지능문능:명:1
  +능지부문능:명:1
  +능직:명:2
  +능참봉:명:3
  +능청:명:4
  +능청능청하다:동:1
  +능청맞다:형:1
  +능청스럽다:형:3
  +능통하다:형:2
  +능하다:형:3
  +능행:명:1
  +능히:부:10
  +늦가을:명:13
  +늦깎이:명:1
  +늦다:동:55
  +늦다:형:235
  +늦더위:명:2
  +늦발동:명:1
  +늦봄:명:2
  +늦어지다:동:28
  +늦여름:명:2
  +늦잠:명:11
  +늦장가:명:1
  +늦장마:명:1
  +늦추다:동:24
  +늦추어지다:동:1
  +늦춰지다:동:1
  +늪:명:18
  +늪가:명:1
  +늴리리야:명:1
  +니:대:8
  +니글거리다:동:1
  +니기미:감:1
  +니나노:감:1
  +니년:대:1
  +니눔:대:1
  +니르바나:명:3
  +니스:명:8
  +니은:명:1
  +니코틴:명:2
  +니트:명:3
  +니트로소아민:명:1
  +니퍼:명:2
  +니퍼형:명:1
  +닉네임:명:4
  +님:의:2
  +닢:의:5
  +다:명:45
  +다:부:1,564
  +다가가다:동:94
  +다가들다:동:3
  +다가서다:동:34
  +다가앉다:동:5
  +다가오다:동:182
  +다각도:명:3
  +다각도로:부:1
  +다각적:명:7
  +다각화:명:4
  +다각화시키다:동:1
  +다갈:명:1
  +다갈색:명:1
  +다감하다:형:3
  +다강조성:명:1
  +다과:명:4
  +다과:명:4
  +다과점:명:2
  +다관:명:3
  +다구:명:1
  +다국:명:1
  +다국어:명:2
  +다국적:명:20
  +다국적군:명:11
  +다규제:명:1
  +다그치다:동:20
  +다급하다:형:21
  +다급해지다:동:9
  +다급히:부:3
  +다기:명:1
  +다난하다:형:1
  +다녀가다:동:21
  +다녀오다:동:117
  +다년간:명:1
  +다년생:명:3
  +다년초:명:2
  +다니다:동:668
  +다다르다:동:23
  +다다미:명:2
  +다다음:명:1
  +다다익선:명:3
  +다다익선조:명:1
  +다닥다닥:부:6
  +다단:명:1
  +다단계:명:1
  +다단계적:관:1
  +다달이:부:3
  +다당제:명:6
  +다대일:명:1
  +다도실:명:1
  +다도해:명:3
  +다독:명:1
  +다독거리다:동:6
  +다독이다:동:2
  +다득점:명:1
  +다듬다:동:59
  +다듬새:명:1
  +다듬어지다:동:19
  +다듬이:명:15
  +다듬이질:명:1
  +다듬이질하다:동:2
  +다듬잇돌:명:1
  +다듬잇방망이:명:1
  +다듬질:명:5
  +다듬질하다:동:1
  +다디달다:형:4
  +다라이:명:5
  +다락방:명:2
  +다람쥐:명:11
  +다랑귀:명:1
  +다랑어:명:1
  +다랑이:명:1
  +다래:명:4
  +다래끼:명:1
  +다량:명:15
  +다려지다:동:1
  +다루다:동:205
  +다루어지다:동:7
  +다르다:형:1,132
  +다른:관:1,653
  +다름없다:형:59
  +다름없이:부:4
  +다릅나무:명:2
  +다리:명:288
  +다리:명:87
  +다리다:동:6
  +다리목:명:1
  +다리몽둥이:명:1
  +다리미:명:5
  +다리미질:명:1
  +다리뼈:명:2
  +다리품:명:1
  +다림질:명:1
  +다릿널:명:1
  +다마:명:3
  +다마네기:명:1
  +다만:접:305
  +다망하다:형:1
  +다매체:명:1
  +다면적:관:1
  +다면적:명:2
  +다목적:명:9
  +다문다문:부:1
  +다물다:동:46
  +다물어지다:동:1
  +다박머리:명:1
  +다반사:명:1
  +다발:명:13
  +다발:명:2
  +다발적:명:3
  +다발형:명:1
  +다방:명:91
  +다방면:명:7
  +다변:명:2
  +다변하다:형:1
  +다변화:명:3
  +다복솔:명:1
  +다부지다:형:8
  +다분하다:형:2
  +다분히:부:33
  +다비:명:1
  +다사롭다:형:2
  +다산:명:1
  +다산성:명:2
  +다산형:명:1
  +다선:명:1
  +다선적:관:1
  +다섯:관:141
  +다섯:수:22
  +다섯모형:명:1
  +다섯째:관:5
  +다섯째:수:8
  +다세대:명:1
  +다소:명:15
  +다소:부:193
  +다소간:명:3
  +다소간:부:1
  +다소곳이:부:9
  +다소곳하다:형:7
  +다수:명:72
  +다수결:명:6
  +다수당:명:2
  +다수인:명:2
  +다수확:명:1
  +다스려지다:동:5
  +다스리다:동:63
  +다습하다:형:4
  +다시:명:2
  +다시:명:5
  +다시:부:1,659
  +다시금:부:26
  +다시다:동:8
  +다시마:명:12
  +다시없다:형:1
  +다신교:명:1
  +다신론적:명:1
  +다실:명:1
  +다양:명:5
  +다양성:명:18
  +다양하다:형:356
  +다양해지다:동:16
  +다양화:명:13
  +다양화되다:동:4
  +다양화하다:동:2
  +다연발탄:명:1
  +다연장:명:1
  +다용도:명:1
  +다우:명:1
  +다우지:명:1
  +다우하다:형:1
  +다운:명:10
  +다운되다:동:2
  +다운받다:동:2
  +다운타운:명:2
  +다원:명:1
  +다원론적:관:1
  +다원적:관:5
  +다원적:명:3
  +다원주의:명:1
  +다원주의:명:4
  +다원주의적:관:2
  +다원주의적:명:1
  +다원화:명:3
  +다음:명:1,386
  +다음가다:동:3
  +다음날:명:1
  +다음다음:명:5
  +다음번:명:4
  +다이:명:1
  +다이내믹하다:형:2
  +다이너스티:명:1
  +다이버:명:2
  +다이빙:명:5
  +다이빙대:명:1
  +다이아몬드:명:8
  +다이어리:명:2
  +다이어트:명:13
  +다이얼:명:5
  +다이얼링:명:1
  +다이오드:명:1
  +다이제스트:명:1
  +다자:명:2
  +다자간:명:5
  +다잡다:동:14
  +다재다능하다:형:1
  +다정:명:1
  +다정다감하다:형:5
  +다정스럽다:형:5
  +다정스레:부:2
  +다정하다:형:38
  +다정히:부:9
  +다져지다:동:6
  +다종다양하다:형:1
  +다주택:명:3
  +다중:명:1
  +다중:명:7
  +다중적:관:1
  +다지기:명:1
  +다지다:동:168
  +다지르다:동:1
  +다짐:명:27
  +다짐받다:동:2
  +다짐하다:동:64
  +다짜고짜:부:8
  +다짜고짜로:부:3
  +다차원적:관:1
  +다채:명:2
  +다채로워지다:동:1
  +다채롭다:형:21
  +다축:명:1
  +다층적:관:1
  +다치다:동:66
  +다큐:명:5
  +다큐멘터리:명:13
  +다큐멘터리적:관:1
  +다큐멘터리적:명:1
  +다크:명:1
  +다크브라운:명:1
  +다크호스:명:1
  +다탁:명:2
  +다태아:명:1
  +다투다:동:84
  +다툼:명:36
  +다툼질:명:1
  +다품종:명:6
  +다하다:동:151
  +다행:명:53
  +다행스럽다:형:12
  +다행하다:형:13
  +다행히:부:50
  +다혈질:명:2
  +다혈질적:명:1
  +다홍치마:명:1
  +닥나무:명:1
  +닥지닥지:부:1
  +닥쳐오다:동:10
  +닥치다:동:4
  +닥치다:동:55
  +닥터:명:37
  +닦다:동:272
  +닦달:명:3
  +닦달질하다:동:1
  +닦달하다:동:2
  +닦아지다:동:1
  +닦여지다:동:1
  +닦이다:동:5
  +단:관:109
  +단:명:11
  +단:명:2
  +단:명:2
  +단:명:30
  +단:명:6
  +단:접:20
  +단가:명:8
  +단감:명:1
  +단거리:명:14
  +단검:명:1
  +단것:명:5
  +단견:명:2
  +단결:명:12
  +단결권:명:2
  +단결력:명:2
  +단결심:명:1
  +단결에:부:1
  +단결정:명:8
  +단결체:명:1
  +단결하다:동:5
  +단계:명:436
  +단계론:명:8
  +단계설:명:3
  +단계적:관:12
  +단계적:명:26
  +단계화하다:동:1
  +단골:명:17
  +단골손님:명:3
  +단골집:명:2
  +단과:명:3
  +단과대:명:2
  +단교하다:동:1
  +단기:명:17
  +단기:명:3
  +단기간:명:5
  +단기성:명:1
  +단기일:명:1
  +단기적:관:1
  +단기적:명:13
  +단기전:명:4
  +단김에:부:1
  +단내:명:1
  +단내:명:1
  +단너삼:명:5
  +단념하다:동:7
  +단단하다:형:37
  +단단해지다:동:2
  +단단히:부:41
  +단대:명:1
  +단도리하다:동:1
  +단도직입적:명:1
  +단독:명:39
  +단독정부:명:5
  +단독형:명:2
  +단돈:명:11
  +단두대:명:1
  +단둘:명:6
  +단둘이:명:2
  +단락:명:1
  +단란하다:형:1
  +단련:명:12
  +단련되다:동:4
  +단련하다:동:3
  +단령:명:6
  +단막:명:1
  +단막극:명:3
  +단말기:명:8
  +단말마:명:1
  +단말마적:명:1
  +단맛:명:17
  +단매:명:1
  +단면:명:32
  +단면도:명:1
  +단면적:명:1
  +단면적:명:2
  +단명:명:2
  +단명하다:형:3
  +단무지:명:6
  +단물:명:4
  +단박:명:6
  +단발:명:4
  +단발:명:5
  +단발령:명:12
  +단발머리:명:9
  +단발사격:명:1
  +단발성:명:1
  +단방약:명:2
  +단백질:명:39
  +단번에:부:10
  +단벌:명:1
  +단비:명:3
  +단산:명:2
  +단상:명:2
  +단상:명:5
  +단서:명:11
  +단서:명:28
  +단선:명:2
  +단선단정:명:1
  +단선적:관:4
  +단선적:명:5
  +단성일:명:1
  +단세포:명:1
  +단세포적:관:2
  +단소:명:1
  +단속:명:1
  +단속:명:57
  +단속곳:명:2
  +단속되다:동:1
  +단속반:명:2
  +단속반원:명:7
  +단속하다:동:15
  +단수:명:2
  +단수:명:2
  +단수적:관:1
  +단순:명:33
  +단순성:명:2
  +단순하다:형:188
  +단순해지다:동:3
  +단순화:명:8
  +단순화되다:동:2
  +단순화시키다:동:2
  +단순화하다:동:7
  +단순히:부:123
  +단숨에:부:18
  +단시간:명:2
  +단시일:명:5
  +단식:명:3
  +단식:명:8
  +단신:명:1
  +단신:명:1
  +단신:명:1
  +단아하다:형:18
  +단안:명:3
  +단어:명:99
  +단어적:관:1
  +단언:명:1
  +단언하다:동:13
  +단역:명:7
  +단연:부:17
  +단연코:부:2
  +단열:명:1
  +단열시키다:동:1
  +단열재:명:5
  +단오:명:4
  +단오절:명:3
  +단옷날:명:5
  +단원:명:22
  +단원:명:9
  +단위:명:136
  +단위체:명:1
  +단음계권:명:1
  +단일:명:16
  +단일하다:형:9
  +단일화:명:7
  +단일화하다:동:1
  +단임:명:1
  +단자:명:1
  +단자:명:14
  +단자:명:4
  +단자사:명:5
  +단잠:명:3
  +단장:명:15
  +단장:명:3
  +단장되다:동:4
  +단장실:명:3
  +단장하다:동:4
  +단장형:명:1
  +단적:명:25
  +단전:명:5
  +단전호흡:명:13
  +단전호흡법:명:1
  +단절:명:18
  +단절되다:동:24
  +단절시키다:동:2
  +단절적:명:1
  +단절하다:동:2
  +단점:명:44
  +단정:명:8
  +단정론:명:1
  +단정미:명:1
  +단정적:명:2
  +단정하다:동:10
  +단정하다:형:26
  +단정학:명:3
  +단정히:부:3
  +단조롭다:형:24
  +단죄:명:5
  +단죄되다:동:2
  +단죄하다:동:3
  +단지:명:105
  +단지:명:6
  +단지:접:165
  +단짝:명:9
  +단청:명:3
  +단체:명:418
  +단체장:명:20
  +단체적:관:1
  +단체적:명:1
  +단체전:명:13
  +단체정신:명:1
  +단초:명:3
  +단초적:명:1
  +단촐하다:형:2
  +단추:명:12
  +단축:명:11
  +단축되다:동:4
  +단축법:명:1
  +단축시키다:동:8
  +단축하다:동:6
  +단출하다:형:3
  +단춧구멍:명:2
  +단층:명:11
  +단칸:명:2
  +단칸방:명:4
  +단칼:명:2
  +단파:명:4
  +단팥:명:5
  +단편:명:3
  +단편:명:49
  +단편성:명:1
  +단편적:관:7
  +단편적:명:16
  +단편집:명:1
  +단편화:명:2
  +단편화되다:동:5
  +단편화하다:동:1
  +단품:명:1
  +단풍:명:10
  +단풍나무:명:3
  +단풍마:명:4
  +단풍잎:명:4
  +단풍취:명:2
  +단학:명:1
  +단합:명:10
  +단합되다:동:1
  +단합시키다:동:1
  +단행:명:1
  +단행:명:1
  +단행되다:동:7
  +단행본:명:9
  +단행하다:동:31
  +단호:명:1
  +단호박:명:3
  +단호하다:형:40
  +단호해지다:동:1
  +단호히:부:12
  +단화:명:2
  +닫다:동:112
  +닫아걸다:동:7
  +닫치다:동:1
  +닫혀지다:동:2
  +닫히다:동:43
  +달:명:205
  +달:의:348
  +달가워하다:동:1
  +달갑다:형:11
  +달갑잖다:형:1
  +달걀:명:88
  +달걀귀신:명:2
  +달걀노른자:명:3
  +달걀덮밥:명:1
  +달걀말이:명:9
  +달걀죽:명:1
  +달걀형:명:1
  +달걀흰자:명:2
  +달거리:명:1
  +달관스럽다:형:1
  +달관하다:동:2
  +달구경:명:1
  +달구다:동:27
  +달구어지다:동:8
  +달구지:명:5
  +달구질:명:3
  +달궈지다:동:2
  +달그락:부:9
  +달그락거리다:동:4
  +달나라:명:2
  +달님:명:11
  +달다:동:117
  +달다:동:15
  +달다:동:49
  +달다:동:5
  +달다:보:259
  +달다:형:38
  +달달:부:5
  +달달:부:6
  +달달거리다:동:1
  +달도:명:1
  +달동네:명:6
  +달뜨다:동:3
  +달라붙다:동:25
  +달라지다:동:250
  +달랑:부:11
  +달랑달랑:부:1
  +달래:명:2
  +달래다:동:50
  +달래무침:명:1
  +달래지다:동:1
  +달러:명:19
  +달러:의:284
  +달러화:명:5
  +달려가다:동:123
  +달려들다:동:38
  +달려오다:동:82
  +달력:명:36
  +달리:부:310
  +달리기:명:48
  +달리다:동:124
  +달리다:동:257
  +달리다:동:9
  +달리아:명:1
  +달리하다:동:41
  +달링:명:1
  +달맞이:명:4
  +달무리:명:1
  +달밤:명:10
  +달변:명:2
  +달빛:명:29
  +달뿌리풀:명:2
  +달성:명:13
  +달성되다:동:17
  +달성시키다:동:1
  +달성하다:동:39
  +달수:명:1
  +달싹거리다:동:1
  +달싹이다:동:1
  +달아나다:동:78
  +달아매다:동:2
  +달아오르다:동:34
  +달아지다:동:1
  +달음:명:2
  +달음박질:명:1
  +달음질:명:3
  +달음질치다:동:1
  +달이다:동:19
  +달인:명:3
  +달짝지근하다:형:1
  +달착지근하다:형:1
  +달콤하다:형:20
  +달큰하다:형:1
  +달팽이:명:8
  +달팽이관:명:1
  +달포:명:2
  +달하다:동:108
  +닭:명:73
  +닭강정:명:1
  +닭고기:명:22
  +닭똥:명:1
  +닭똥집:명:1
  +닭띠:명:2
  +닭발:명:1
  +닭살:명:1
  +닭의장풀:명:2
  +닭장:명:3
  +닭장차:명:2
  +닭죽:명:3
  +닭형:명:1
  +닮다:동:98
  +닮은꼴:명:5
  +닳다:동:17
  +닳아지다:동:3
  +담:명:1
  +담:명:3
  +담:명:31
  +담가:명:1
  +담갈색:명:2
  +담겨지다:동:17
  +담그다:동:71
  +담기다:동:1
  +담기다:동:140
  +담나색:명:1
  +담녹색:명:1
  +담다:동:352
  +담담하다:형:10
  +담담히:부:4
  +담당:명:106
  +담당관:명:5
  +담당관실:명:1
  +담당자:명:37
  +담당층:명:1
  +담당하다:동:86
  +담대하다:형:1
  +담력:명:2
  +담론:명:65
  +담론적:관:2
  +담배:명:322
  +담배꽁초:명:13
  +담배쌈지:명:3
  +담배통:명:1
  +담백하다:형:22
  +담백해지다:동:1
  +담뱃갑:명:16
  +담뱃값:명:1
  +담뱃대:명:4
  +담뱃불:명:10
  +담벼락:명:19
  +담벽:명:3
  +담보:명:15
  +담보되다:동:2
  +담보물:명:1
  +담보하다:동:16
  +담뿍:부:5
  +담색:명:4
  +담세층:명:1
  +담소:명:4
  +담소하다:동:2
  +담수:명:1
  +담수:명:4
  +담수어:명:28
  +담시:명:1
  +담쌓다:동:1
  +담아내다:동:14
  +담아지다:동:1
  +담요:명:17
  +담임:명:73
  +담임교사:명:5
  +담임선생:명:10
  +담임하다:동:2
  +담장:명:29
  +담쟁이:명:2
  +담쟁이덩굴:명:1
  +담지자:명:15
  +담지체:명:1
  +담지하다:동:6
  +담천:명:2
  +담치기:명:1
  +담치기하다:동:1
  +담판:명:5
  +담합:명:11
  +담합하다:동:2
  +담화:명:13
  +담화문:명:2
  +담황색:명:1
  +담황적갈색:명:1
  +담회갈색:명:1
  +답:명:46
  +답답하다:형:81
  +답답해지다:동:3
  +답례:명:3
  +답례품:명:1
  +답례하다:동:3
  +답방:명:2
  +답배:명:2
  +답배하다:동:4
  +답변:명:37
  +답변하다:동:13
  +답보:명:1
  +답사:명:13
  +답사하다:동:7
  +답습:명:1
  +답습하다:동:6
  +답신:명:1
  +답쌓이다:동:1
  +답쌔기:명:1
  +답쌔다:동:1
  +답안:명:5
  +답안지:명:12
  +답장:명:21
  +답장하다:동:3
  +답전:명:1
  +답하다:동:63
  +답해지다:동:1
  +닷새:명:9
  +당:관:1
  +당:명:1
  +당:명:235
  +당:의:2
  +당겨지다:동:4
  +당고모:명:3
  +당구:명:10
  +당구공:명:1
  +당구장:명:3
  +당국:명:179
  +당국:명:38
  +당국자:명:46
  +당굿:명:1
  +당권:명:4
  +당귀:명:2
  +당규:명:1
  +당근:명:61
  +당글당글:부:1
  +당기:명:1
  +당기다:동:65
  +당기위:명:1
  +당나귀:명:1
  +당내:명:11
  +당뇨:명:4
  +당뇨병:명:12
  +당뇨병성:명:1
  +당단풍:명:4
  +당당:부:3
  +당당하다:형:59
  +당당히:부:21
  +당대:명:58
  +당대인:명:1
  +당대적:관:3
  +당대적:명:1
  +당대회:명:12
  +당도:명:1
  +당도:명:2
  +당도리:명:2
  +당도하다:동:12
  +당돌하다:형:13
  +당락:명:4
  +당략:명:2
  +당론:명:1
  +당료:명:3
  +당류:명:1
  +당리당략:명:2
  +당리적:명:1
  +당면:명:20
  +당면하다:동:23
  +당명:명:2
  +당무:명:17
  +당반:명:1
  +당번:명:15
  +당부:명:1
  +당부:명:15
  +당부하다:동:28
  +당분:명:4
  +당분간:명:6
  +당분간:부:29
  +당비:명:7
  +당비서:명:4
  +당사:명:20
  +당사:명:5
  +당사국:명:8
  +당사자:명:55
  +당사주:명:1
  +당산나무:명:5
  +당산돌:명:1
  +당산목:명:3
  +당삼채:명:1
  +당상:명:2
  +당상관:명:2
  +당색:명:1
  +당선:명:36
  +당선권:명:1
  +당선되다:동:26
  +당선시키다:동:3
  +당선자:명:21
  +당선작:명:3
  +당세:명:3
  +당수:명:8
  +당숙:명:6
  +당숙모:명:1
  +당시:명:2
  +당시:명:707
  +당신:대:878
  +당악:명:1
  +당연:명:2
  +당연시되다:동:3
  +당연시하다:동:4
  +당연지사:명:3
  +당연하다:형:175
  +당연히:부:83
  +당원:명:18
  +당위:명:1
  +당위론적:관:1
  +당위론적:명:1
  +당위성:명:4
  +당의:명:2
  +당의정:명:1
  +당일:명:14
  +당일권:명:3
  +당자:명:2
  +당장:명:1
  +당장:명:174
  +당장:명:2
  +당쟁:명:1
  +당적:명:1
  +당정:명:1
  +당정:명:29
  +당제:명:4
  +당조짐:명:1
  +당좌:명:4
  +당주:명:1
  +당중앙:명:5
  +당중앙위원회:명:1
  +당직:명:35
  +당직:명:9
  +당직자:명:20
  +당직자:명:6
  +당질:명:2
  +당질대사:명:1
  +당차다:형:5
  +당첨:명:12
  +당첨되다:동:2
  +당첨자:명:4
  +당초:명:68
  +당최:부:5
  +당파:명:4
  +당파성:명:4
  +당파적:관:3
  +당파적:명:1
  +당하다:동:323
  +당하다:형:6
  +당학:명:1
  +당해:명:11
  +당해인:명:11
  +당헌:명:2
  +당혹:명:1
  +당혹감:명:9
  +당혹스러워지다:동:1
  +당혹스러워하다:동:2
  +당혹스럽다:형:10
  +당혹하다:동:4
  +당혹해하다:동:1
  +당황:명:5
  +당황스럽다:형:8
  +당황하다:동:81
  +당황해하다:동:4
  +당황히:부:3
  +닻:명:6
  +닻줄:명:1
  +닿다:동:159
  +닿소리:명:2
  +대:명:15
  +대:명:17
  +대:명:21
  +대:명:5
  +대:명:87
  +대:명:9
  +대:의:106
  +대:의:190
  +대:의:36
  +대:의:401
  +대:의:76
  +대가:명:22
  +대가:명:63
  +대가리:명:19
  +대가부장적:관:1
  +대가족:명:9
  +대각:명:2
  +대각선:명:3
  +대갈장군:명:1
  +대갈통:명:1
  +대감:명:58
  +대감마님:명:9
  +대감층:명:2
  +대강:명:4
  +대강:부:25
  +대강당:명:5
  +대강대강:부:1
  +대강이:명:2
  +대개:명:47
  +대개:부:132
  +대개벽:명:1
  +대개편:명:1
  +대거:부:34
  +대거리:명:6
  +대걸레:명:1
  +대걸레질하다:동:1
  +대게:명:1
  +대견스러워하다:동:2
  +대견스럽다:형:7
  +대견하다:형:14
  +대견해하다:동:2
  +대결:명:50
  +대결사:명:1
  +대결산:명:1
  +대결상:명:1
  +대결장:명:1
  +대결하다:동:7
  +대계:명:3
  +대고모:명:1
  +대공:명:1
  +대공:명:9
  +대공망:명:1
  +대공사:명:1
  +대공원:명:2
  +대공장:명:1
  +대과:명:1
  +대과업:명:1
  +대관절:부:5
  +대관측가:명:1
  +대광장:명:1
  +대교:명:1
  +대구:명:2
  +대구고:명:1
  +대국:명:36
  +대국적:명:1
  +대국화:명:1
  +대군:명:4
  +대군:명:8
  +대굴대굴:부:1
  +대굿국:명:1
  +대궁:명:2
  +대궁밥:명:1
  +대궁이:명:2
  +대권:명:38
  +대권자:명:1
  +대궐:명:6
  +대규모:명:117
  +대규모적:명:1
  +대그룹:명:4
  +대극:명:1
  +대극:명:1
  +대극장:명:6
  +대금:명:22
  +대금:명:3
  +대기:명:100
  +대기:명:25
  +대기권:명:3
  +대기록:명:1
  +대기론자:명:1
  +대기붕:명:1
  +대기시키다:동:1
  +대기실:명:9
  +대기업:명:89
  +대기업체:명:1
  +대기자:명:1
  +대기질:명:2
  +대기층:명:1
  +대기하다:동:34
  +대길:명:1
  +대길하다:형:1
  +대꾸:명:38
  +대꾸하다:동:25
  +대꾼하다:형:2
  +대끼다:동:1
  +대나무:명:16
  +대남:명:10
  +대남관:명:1
  +대납:명:3
  +대납제:명:1
  +대납하다:동:3
  +대낮:명:36
  +대내:명:2
  +대내외:명:2
  +대내외적:관:2
  +대내외적:명:4
  +대내적:관:5
  +대내적:명:7
  +대농:명:1
  +대농가:명:1
  +대농장주:명:1
  +대놓고:부:1
  +대뇌:명:6
  +대님:명:2
  +대다:동:298
  +대다:보:279
  +대다수:명:54
  +대단결:명:1
  +대단스레:부:1
  +대단원:명:3
  +대단위:명:3
  +대단하다:형:96
  +대단히:부:96
  +대담:명:7
  +대담성:명:2
  +대담하다:동:1
  +대담하다:형:13
  +대담해지다:동:4
  +대답:명:157
  +대답하다:동:208
  +대대:명:1
  +대대:명:7
  +대대로:명:2
  +대대로:부:14
  +대대로제:명:1
  +대대장:명:5
  +대대적:관:4
  +대대적:명:30
  +대덕:명:1
  +대도:명:5
  +대도시:명:48
  +대동:명:3
  +대동계:명:1
  +대동계:명:1
  +대동단결하다:동:1
  +대동소이하다:형:3
  +대동하다:동:8
  +대두:명:1
  +대두:명:9
  +대두되다:동:19
  +대두시키다:동:1
  +대두하다:동:13
  +대들다:동:17
  +대들보:명:5
  +대등하다:형:10
  +대뜸:부:22
  +대란:명:4
  +대략:명:2
  +대략:부:35
  +대략적:관:1
  +대략적:명:1
  +대량:명:75
  +대량적:관:1
  +대량적:명:1
  +대량화:명:1
  +대령:명:18
  +대령하다:동:3
  +대례:명:1
  +대례식:명:2
  +대로:명:11
  +대로:의:374
  +대로변:명:2
  +대롱:명:3
  +대롱거리다:동:1
  +대롱대롱:부:3
  +대롱대롱하다:동:1
  +대류:명:2
  +대류성:명:1
  +대륙:명:69
  +대륙성:명:4
  +대륙식:명:1
  +대륙적:관:2
  +대리:명:64
  +대리석:명:6
  +대리암:명:9
  +대리인:명:7
  +대리자:명:3
  +대리전:명:2
  +대리점:명:41
  +대립:명:85
  +대립기:명:1
  +대립되다:동:13
  +대립시키다:동:1
  +대립적:관:2
  +대립적:명:7
  +대립하다:동:26
  +대마:명:1
  +대마초:명:4
  +대만원:명:1
  +대망:명:1
  +대망되다:동:1
  +대망론:명:1
  +대망하다:동:1
  +대매출:명:2
  +대머리:명:9
  +대면:명:6
  +대면하다:동:9
  +대명사:명:19
  +대명사적:관:1
  +대명천지:명:2
  +대모:명:1
  +대모집:명:1
  +대목:명:2
  +대목:명:91
  +대문:명:1
  +대문:명:92
  +대문간:명:4
  +대문라:명:1
  +대문자:명:1
  +대문짝:명:2
  +대문짝만하다:형:3
  +대물리다:동:2
  +대물림:명:1
  +대물림되다:동:1
  +대물림하다:동:1
  +대미:명:22
  +대미:명:4
  +대민:명:9
  +대바구니:명:1
  +대바늘:명:1
  +대반격:명:1
  +대밭:명:5
  +대배우:명:2
  +대번:부:1
  +대번에:부:8
  +대범하다:형:5
  +대법관:명:4
  +대법원장:명:13
  +대변:명:2
  +대변:명:6
  +대변되다:동:4
  +대변신:명:3
  +대변인:명:50
  +대변인단:명:1
  +대변자:명:3
  +대변칙:명:1
  +대변하다:동:28
  +대변혁:명:3
  +대변환:명:1
  +대별:명:2
  +대별되다:동:5
  +대별시키다:동:1
  +대별하다:동:4
  +대보:명:1
  +대보다:동:1
  +대보름:명:3
  +대보름날:명:2
  +대본:명:16
  +대본소:명:1
  +대본영:명:1
  +대부:명:1
  +대부:명:2
  +대부:명:7
  +대부계:명:1
  +대부금:명:1
  +대부대:명:1
  +대부분:명:501
  +대부하다:동:2
  +대북:명:47
  +대분:의:3
  +대분류:명:2
  +대붕:명:1
  +대비:명:37
  +대비:명:41
  +대비:명:8
  +대비기:명:4
  +대비되다:동:8
  +대비시키다:동:3
  +대비적:관:2
  +대비책:명:13
  +대비하다:동:6
  +대비하다:동:83
  +대빵:부:2
  +대사:명:2
  +대사:명:3
  +대사:명:33
  +대사:명:46
  +대사:명:9
  +대사건:명:3
  +대사관:명:30
  +대사관원:명:1
  +대사량:명:3
  +대사령:명:1
  +대사면:명:2
  +대사법:명:1
  +대사상가:명:1
  +대사성:명:1
  +대사전:명:1
  +대사직:명:1
  +대사찰:명:1
  +대사초:명:2
  +대사헌:명:1
  +대상:명:1
  +대상:명:24
  +대상:명:552
  +대상국:명:7
  +대상물:명:4
  +대상성:명:1
  +대상신:명:2
  +대상자:명:18
  +대상작:명:1
  +대상적:관:3
  +대상지:명:1
  +대상층:명:1
  +대상화:명:1
  +대상화되다:동:3
  +대상화하다:동:1
  +대생하다:동:2
  +대서:명:2
  +대서사시:명:1
  +대서특필되다:동:1
  +대서특필하다:동:2
  +대선:명:109
  +대선거구제:명:2
  +대선배:명:2
  +대설:명:1
  +대설:명:2
  +대섬멸전:명:1
  +대성:명:1
  +대성:명:1
  +대성공:명:1
  +대성당:명:2
  +대성시키다:동:1
  +대성악:명:1
  +대성전:명:3
  +대성통곡:명:2
  +대성통곡하다:동:1
  +대성하다:동:1
  +대성황:명:2
  +대세:명:13
  +대세론:명:2
  +대소:명:4
  +대소변:명:3
  +대소사:명:4
  +대소설가:명:1
  +대손:의:1
  +대수:명:1
  +대수:명:2
  +대수:명:4
  +대수:명:5
  +대수롭다:형:15
  +대수술:명:1
  +대수학자:명:1
  +대순환:명:2
  +대숲:명:3
  +대승:명:9
  +대승리:명:1
  +대승적:관:4
  +대시:명:1
  +대시하다:동:1
  +대식:명:1
  +대식구:명:2
  +대신:명:11
  +대신:명:333
  +대신되다:동:1
  +대신하다:동:68
  +대아:명:1
  +대악:명:1
  +대안:명:28
  +대안:명:34
  +대안적:관:6
  +대안적:명:1
  +대야:명:16
  +대야합:명:1
  +대양:명:9
  +대어:명:4
  +대어지다:동:2
  +대업:명:2
  +대여:명:18
  +대여금:명:2
  +대여당:명:1
  +대여되다:동:1
  +대여료:명:5
  +대여받다:동:1
  +대여섯:관:19
  +대여섯:수:2
  +대여업:명:2
  +대여업소:명:2
  +대여하다:동:4
  +대역:명:1
  +대역:명:4
  +대역:명:7
  +대역사:명:1
  +대역사:명:4
  +대역전극:명:1
  +대연합:명:3
  +대열:명:35
  +대엿새:명:1
  +대오:명:2
  +대오:명:4
  +대오리:명:1
  +대왕:명:52
  +대왕제:명:1
  +대외:명:77
  +대외비:명:2
  +대외수:명:1
  +대외적:관:6
  +대외적:명:13
  +대외전:명:1
  +대용:명:8
  +대용량:명:2
  +대용품:명:1
  +대우:명:50
  +대우받다:동:6
  +대우주:명:1
  +대우하다:동:4
  +대웅보전:명:2
  +대웅전:명:29
  +대원:명:7
  +대원수:명:2
  +대원칙:명:3
  +대위:명:2
  +대유행:명:4
  +대유행하다:동:1
  +대읍:명:1
  +대응:명:107
  +대응되다:동:3
  +대응물:명:2
  +대응책:명:16
  +대응하다:동:89
  +대의:명:3
  +대의:명:7
  +대의명분:명:1
  +대의원:명:16
  +대이동:명:5
  +대인:명:2
  +대인:명:24
  +대인적:명:1
  +대일:명:9
  +대일변:명:1
  +대입:명:20
  +대자:명:1
  +대자대비:명:2
  +대자보:명:14
  +대자연:명:11
  +대작:명:1
  +대작:명:8
  +대작가:명:1
  +대작물:명:2
  +대작전:명:6
  +대작하다:동:1
  +대잔치:명:1
  +대잠:명:1
  +대장:명:10
  +대장:명:3
  +대장:명:7
  +대장간:명:5
  +대장경:명:6
  +대장경판:명:2
  +대장군:명:3
  +대장균:명:1
  +대장부:명:9
  +대장부감:명:1
  +대장상:명:2
  +대장암:명:4
  +대장염:명:2
  +대장장이:명:6
  +대장정:명:2
  +대재벌:명:1
  +대저:부:2
  +대저택:명:1
  +대적하다:동:1
  +대전:명:1
  +대전:명:1
  +대전:명:35
  +대전:명:4
  +대전시실:명:1
  +대전제:명:2
  +대전향:명:1
  +대전환:명:6
  +대전환하다:동:2
  +대절하다:동:1
  +대접:명:3
  +대접:명:34
  +대접받다:동:10
  +대접전:명:1
  +대접하다:동:27
  +대정사:명:1
  +대정치가:명:1
  +대제:명:2
  +대제국:명:3
  +대제전:명:1
  +대제학:명:1
  +대조:명:22
  +대조되다:동:3
  +대조사:명:1
  +대조적:명:23
  +대조표:명:2
  +대조하다:동:8
  +대조화:명:1
  +대졸:명:8
  +대졸자:명:3
  +대종:명:3
  +대종회:명:1
  +대좌:명:3
  +대좌:명:6
  +대좌하다:동:1
  +대주:명:2
  +대주주:명:23
  +대중:명:2
  +대중:명:273
  +대중가요:명:8
  +대중교통:명:16
  +대중극:명:4
  +대중론:명:1
  +대중목욕탕:명:3
  +대중문화:명:88
  +대중문화론:명:3
  +대중문화적:관:1
  +대중문화화:명:1
  +대중서:명:1
  +대중성:명:5
  +대중오락:명:1
  +대중음악:명:11
  +대중음악가:명:2
  +대중음악인:명:5
  +대중적:관:27
  +대중적:명:12
  +대중주:명:1
  +대중지:명:2
  +대중탕:명:2
  +대중화:명:18
  +대중화되다:동:8
  +대중화시키다:동:1
  +대중화주의:명:1
  +대증:명:2
  +대지:명:4
  +대지:명:4
  +대지:명:43
  +대지진:명:2
  +대지휘자:명:1
  +대진표:명:2
  +대질:명:4
  +대집단:명:1
  +대집행:명:1
  +대쪽:명:2
  +대차:명:1
  +대차:명:2
  +대차다:형:1
  +대참사:명:1
  +대창:명:1
  +대책:명:291
  +대책반:명:7
  +대책안:명:3
  +대책위:명:1
  +대처:명:17
  +대처:명:5
  +대처하다:동:49
  +대척적:명:1
  +대천지원수:명:1
  +대첩:명:6
  +대청:명:1
  +대청소:명:8
  +대체:명:22
  +대체:부:37
  +대체되다:동:8
  +대체로:부:134
  +대체물:명:2
  +대체시키다:동:1
  +대체적:관:4
  +대체적:명:14
  +대체하다:동:23
  +대추:명:25
  +대추꿀차:명:1
  +대추나무:명:3
  +대추벌:명:1
  +대추채:명:2
  +대축제:명:2
  +대축척:명:6
  +대출:명:70
  +대출금:명:5
  +대출되다:동:1
  +대출력:명:1
  +대출받다:동:4
  +대출분:명:1
  +대출액:명:1
  +대출자:명:1
  +대출하다:동:10
  +대충:부:74
  +대충대충:부:5
  +대취락:명:2
  +대층:명:1
  +대치:명:11
  +대치되다:동:4
  +대치물:명:1
  +대치하다:동:4
  +대치하다:동:6
  +대침:명:1
  +대칭:명:7
  +대칭성:명:4
  +대칭적:명:1
  +대타:명:1
  +대타론:명:1
  +대탄압:명:1
  +대탈출:명:1
  +대토론회:명:3
  +대토지:명:17
  +대통력:명:1
  +대통령:명:1,273
  +대통령령:명:2
  +대통령상:명:3
  +대통령제:명:8
  +대통령직:명:10
  +대통령학:명:1
  +대투매:명:1
  +대투쟁:명:2
  +대파:명:2
  +대파:명:36
  +대파하다:동:2
  +대판:명:5
  +대패:명:7
  +대패하다:동:1
  +대팽창기:명:1
  +대평원:명:1
  +대포:명:22
  +대포꾼:명:1
  +대포쟁이:명:1
  +대폭:부:84
  +대폭발:명:11
  +대폭발하다:동:1
  +대폭적:관:1
  +대폭적:명:9
  +대폿잔:명:2
  +대폿집:명:2
  +대표:명:429
  +대표곡:명:2
  +대표권:명:2
  +대표단:명:30
  +대표되다:동:5
  +대표부:명:9
  +대표성:명:4
  +대표자:명:13
  +대표작:명:18
  +대표적:관:52
  +대표적:명:127
  +대표제:명:2
  +대표직:명:2
  +대표하다:동:43
  +대피:명:3
  +대피소:명:5
  +대피시키다:동:1
  +대피하다:동:1
  +대필:명:2
  +대필생:명:1
  +대필하다:동:1
  +대하:명:1
  +대하:명:4
  +대하다:동:4,871
  +대하드라마:명:3
  +대하증:명:7
  +대학:명:732
  +대학가:명:11
  +대학교:명:43
  +대학교수:명:22
  +대학로:명:1
  +대학살:명:2
  +대학생:명:113
  +대학원:명:62
  +대학원생:명:8
  +대한:명:1
  +대한:명:2
  +대할인:명:1
  +대합:명:3
  +대합실:명:64
  +대항:명:9
  +대항적:관:14
  +대항적:명:2
  +대항전:명:2
  +대항하다:동:33
  +대해:명:1
  +대행:명:9
  +대행기:명:2
  +대행사:명:4
  +대행시키다:동:1
  +대행업:명:1
  +대행업체:명:5
  +대행자:명:1
  +대행진:명:1
  +대행하다:동:3
  +대향로:명:1
  +대혁명:명:4
  +대혈:명:1
  +대혈전:명:1
  +대혈투:명:1
  +대형:명:143
  +대형선:명:2
  +대형차:명:3
  +대형화:명:3
  +대형화하다:동:1
  +대호:명:1
  +대호족:명:2
  +대호황:명:1
  +대혼란:명:2
  +대홍면포:명:1
  +대홍수:명:1
  +대화:명:313
  +대화방:명:2
  +대화법:명:2
  +대화어아금:명:1
  +대화자:명:1
  +대화재:명:2
  +대화체:명:1
  +대화하다:동:20
  +대화합:명:2
  +대화해:명:2
  +대화형:명:1
  +대회:명:425
  +대회신:명:1
  +대회의실:명:3
  +대회장:명:9
  +대회전:명:1
  +대훈장:명:1
  +대흉근:명:1
  +대흉년:명:1
  +대흑갈색:명:1
  +대흑회색:명:1
  +대히트하다:동:1
  +댁:대:11
  +댁:명:118
  +댄스:명:14
  +댄스곡:명:1
  +댄싱:명:2
  +댐:명:59
  +댓:관:2
  +댓돌:명:4
  +댓바람:명:1
  +댓병:명:1
  +댕그랗다:형:1
  +댕기:명:11
  +댕기다:동:13
  +댕기다:동:8
  +더:부:2,567
  +더구나:부:155
  +더군다나:부:18
  +더그아웃:명:1
  +더께더께:부:1
  +더넘스레:부:1
  +더더구나:부:3
  +더더군다나:부:2
  +더더욱:부:23
  +더덕:명:1
  +더덕더덕:부:4
  +더덕더덕하다:형:1
  +더덕주:명:1
  +더덕차:명:1
  +더뎌지다:동:1
  +더듬거리다:동:11
  +더듬다:동:42
  +더듬대다:동:1
  +더듬더듬:부:1
  +더듬이:명:2
  +더디:부:2
  +더디다:형:12
  +더러:부:45
  +더러움:명:14
  +더러워지다:동:17
  +더럭:부:6
  +더럽다:형:62
  +더럽혀지다:동:7
  +더럽히다:동:19
  +더미:명:28
  +더벅머리:명:3
  +더부룩하다:형:2
  +더부룩하다:형:2
  +더부룩해지다:동:3
  +더불다:동:179
  +더블:명:8
  +더블백:명:5
  +더블유:명:1
  +더빙:명:1
  +더없다:형:3
  +더없이:부:26
  +더욱:부:700
  +더욱더:부:37
  +더욱더욱:부:3
  +더욱이:부:92
  +더운물:명:7
  +더워지다:동:7
  +더위:명:63
  +더티플레이:명:2
  +더하다:동:124
  +더하다:형:11
  +더하여지다:동:1
  +더한층:부:4
  +더해지다:동:11
  +덕:명:70
  +덕담:명:17
  +덕망:명:1
  +덕망가:명:1
  +덕목:명:17
  +덕분:명:72
  +덕성:명:4
  +덕스럽다:형:1
  +덕업:명:5
  +덕업상권:명:1
  +덕육:명:1
  +덕지덕지:부:5
  +덕택:명:12
  +덕트:명:2
  +덕판:명:1
  +덕행:명:2
  +던져두다:동:2
  +던져지다:동:7
  +던지기:명:13
  +던지다:동:347
  +덜:부:101
  +덜거덕거리다:동:1
  +덜그럭거리다:동:1
  +덜꿩나무:명:2
  +덜다:동:61
  +덜덜:부:6
  +덜덜거리다:동:1
  +덜되다:형:1
  +덜떨어지다:형:2
  +덜렁거리다:동:2
  +덜렁대다:동:1
  +덜렁덜렁:부:2
  +덜미:명:6
  +덜어드리다:동:1
  +덜어지다:동:1
  +덜커덕:부:1
  +덜컥:부:14
  +덜컥덜컥:부:1
  +덜컹:부:2
  +덜컹거리다:동:1
  +덜컹이다:동:1
  +덜컹하다:동:1
  +덜하다:형:11
  +덤:명:5
  +덤덤:명:1
  +덤덤하다:형:3
  +덤덤해하다:동:1
  +덤벙대다:동:1
  +덤벼들다:동:17
  +덤불:명:2
  +덤비다:동:17
  +덤프트럭:명:1
  +덤핑:명:8
  +덥다:형:79
  +덥석:부:14
  +덥석덥석:부:1
  +덥히다:동:3
  +덧:명:3
  +덧게비:명:1
  +덧나다:동:1
  +덧니:명:2
  +덧대다:동:3
  +덧마루:명:1
  +덧문:명:4
  +덧바르다:동:2
  +덧발라지다:동:1
  +덧보태다:동:2
  +덧붙여지다:동:5
  +덧붙이다:동:103
  +덧세우다:동:2
  +덧셈:명:5
  +덧씌워지다:동:1
  +덧없다:형:12
  +덧없이:부:11
  +덧입다:동:2
  +덧칠:명:3
  +덧칠하다:동:2
  +덧칠해지다:동:1
  +덩굴:명:23
  +덩굴성:명:2
  +덩굴손:명:1
  +덩그렇다:형:5
  +덩그맣다:형:1
  +덩달다:동:17
  +덩실하다:형:1
  +덩어리:명:59
  +덩어리지다:동:2
  +덩이:명:23
  +덩치:명:34
  +덩크:명:1
  +덫:명:13
  +덮개:명:10
  +덮개돌:명:1
  +덮깃:명:4
  +덮다:동:99
  +덮밥:명:11
  +덮어놓다:동:10
  +덮어쓰다:동:6
  +덮어씌우다:동:9
  +덮여지다:동:1
  +덮이다:동:35
  +덮쳐누르다:동:1
  +덮치다:동:16
  +데:의:2,104
  +데굴데굴:부:4
  +데꼬:불:2
  +데나리온:의:1
  +데다:동:4
  +데려가다:동:36
  +데려오다:동:16
  +데리다:동:196
  +데릴사위:명:1
  +데면데면하다:형:1
  +데모:명:30
  +데모대:명:2
  +데모하다:동:5
  +데몬스트레이션:명:1
  +데뷔:명:24
  +데뷔곡:명:1
  +데뷔상:명:2
  +데뷔작:명:14
  +데뷔전:명:4
  +데뷔탕트:명:1
  +데뷔하다:동:23
  +데생:명:1
  +데스크:명:9
  +데시리터:의:8
  +데시벨:의:2
  +데우다:동:17
  +데워지다:동:2
  +데이:명:1
  +데이다:동:1
  +데이터:명:15
  +데이터베이스:명:29
  +데이트:명:32
  +데이트법:명:1
  +데이트하다:동:6
  +데치다:동:27
  +데카당스:명:7
  +델리키하다:형:1
  +델타선:명:1
  +뎅겅:부:1
  +뎌:대:1
  +도:명:1
  +도:명:4
  +도:명:52
  +도:명:6
  +도:명:65
  +도:명:8
  +도:의:192
  +도:의:2
  +도가:명:3
  +도가:명:5
  +도가니:명:3
  +도가니탕:명:1
  +도감:명:1
  +도감:명:2
  +도강:명:1
  +도강하다:동:1
  +도경:명:2
  +도교:명:19
  +도교적:명:1
  +도구:명:89
  +도구적:관:4
  +도구적:명:1
  +도굴:명:1
  +도굴꾼:명:2
  +도굴되다:동:2
  +도굴하다:동:1
  +도그마:명:5
  +도금:명:5
  +도급:명:3
  +도깨비:명:27
  +도깨비감투:명:8
  +도깨비바늘:명:1
  +도깨비방망이:명:1
  +도깨비불:명:7
  +도끼:명:11
  +도끼날:명:1
  +도끼눈:명:2
  +도끼질:명:1
  +도나캐나:부:1
  +도난:명:8
  +도난당하다:동:4
  +도난품:명:2
  +도내:명:5
  +도넛:명:2
  +도농:명:5
  +도닥거리다:동:1
  +도달:명:4
  +도달되다:동:3
  +도달하다:동:62
  +도당:명:1
  +도당:명:1
  +도당:명:2
  +도대체:부:198
  +도덕:명:51
  +도덕군자연하다:동:1
  +도덕규범:명:1
  +도덕성:명:46
  +도덕심:명:1
  +도덕인:명:1
  +도덕적:관:57
  +도덕적:명:28
  +도덕주의:명:3
  +도덕주의자:명:1
  +도덕주의적:관:1
  +도도:명:1
  +도도하다:형:2
  +도도하다:형:4
  +도도해지다:동:1
  +도도히:부:1
  +도독:명:6
  +도둑:명:48
  +도둑놈:명:8
  +도둑놈촌:명:2
  +도둑맞다:동:5
  +도둑질:명:13
  +도둑질하다:동:2
  +도둑촌:명:1
  +도드라지다:동:3
  +도드라지다:형:1
  +도들림:명:1
  +도떼기:명:1
  +도떼기시장:명:1
  +도라이:명:2
  +도라지:명:17
  +도라지꽃:명:6
  +도라지나물:명:1
  +도란도란:부:2
  +도랑:명:14
  +도래:명:9
  +도래인:명:1
  +도래하다:동:10
  +도래하다:동:8
  +도량:명:1
  +도량형:명:1
  +도려내다:동:6
  +도련:명:5
  +도련님:명:24
  +도련선:명:3
  +도령:명:3
  +도로:명:126
  +도로:부:43
  +도로국장:명:2
  +도로꼬:명:22
  +도로꼬꾼:명:1
  +도로꼬반:명:1
  +도로망:명:1
  +도로변:명:9
  +도롱뇽:명:1
  +도롱이:명:2
  +도루:명:9
  +도루:부:2
  +도루묵:명:1
  +도루왕:명:1
  +도류단:명:2
  +도륙:명:1
  +도르르:부:5
  +도리:명:3
  +도리:명:61
  +도리깨:명:2
  +도리사:명:2
  +도리어:부:35
  +도리질:명:8
  +도립:명:2
  +도마:명:20
  +도마뱀:명:2
  +도막:명:2
  +도망:명:26
  +도망가다:동:28
  +도망자:명:3
  +도망질:명:1
  +도망치다:동:46
  +도망하다:동:2
  +도맡다:동:12
  +도맡아하다:동:1
  +도매:명:5
  +도매상:명:2
  +도매업:명:2
  +도매업자:명:1
  +도메인:명:1
  +도면:명:7
  +도명:명:2
  +도모:명:1
  +도모되다:동:1
  +도모하다:동:40
  +도목수:명:1
  +도무지:부:48
  +도미:명:3
  +도미:명:4
  +도민:명:3
  +도박:명:8
  +도박꾼:명:1
  +도박장:명:3
  +도박판:명:1
  +도발:명:31
  +도발적:관:2
  +도발하다:동:1
  +도배:명:6
  +도배지:명:1
  +도배질하다:동:1
  +도벽:명:3
  +도보:명:1
  +도부:명:1
  +도사:명:1
  +도사:명:6
  +도사견:명:1
  +도사리다:동:21
  +도산:명:6
  +도산하다:동:1
  +도상:명:2
  +도상적:관:1
  +도색:명:1
  +도색:명:2
  +도색하다:동:1
  +도생주의:명:1
  +도서:명:25
  +도서:명:7
  +도서관:명:130
  +도서관장:명:8
  +도서관장실:명:1
  +도서관학과:명:1
  +도서실:명:5
  +도선:명:1
  +도선장:명:4
  +도설:명:1
  +도성:명:7
  +도성제:명:3
  +도세:명:1
  +도솔천:명:1
  +도수:명:1
  +도수:명:7
  +도스:명:23
  +도시:명:474
  +도시:부:3
  +도시:의:14
  +도시가스:명:19
  +도시가스관:명:4
  +도시공원:명:3
  +도시과:명:1
  +도시국장:명:1
  +도시극:명:1
  +도시락:명:55
  +도시인:명:6
  +도시적:명:5
  +도시형:명:2
  +도시화:명:7
  +도시화되다:동:2
  +도식:명:12
  +도식성:명:1
  +도식적:관:3
  +도식적:명:4
  +도식화하다:동:1
  +도심:명:1
  +도심:명:37
  +도심지:명:3
  +도심형:명:2
  +도안:명:1
  +도안적:명:1
  +도야:명:8
  +도야하다:동:6
  +도약:명:9
  +도약기:명:1
  +도약력:명:2
  +도약시키다:동:2
  +도약하다:동:5
  +도열:명:1
  +도열하다:동:2
  +도예가:명:2
  +도예과:명:1
  +도와주다:동:99
  +도외시되다:동:1
  +도외시하다:동:11
  +도요새:명:1
  +도용:명:1
  +도용하다:동:4
  +도움:명:305
  +도움닫기:명:16
  +도움말:명:29
  +도움받다:동:2
  +도움책:명:1
  +도읍:명:18
  +도읍지:명:40
  +도읍하다:동:2
  +도의:명:2
  +도의원:명:2
  +도의적:관:2
  +도의적:명:2
  +도의회:명:1
  +도인:명:3
  +도입:명:99
  +도입기:명:9
  +도입되다:동:32
  +도입부:명:6
  +도입선:명:1
  +도입하다:동:80
  +도자:명:1
  +도자기:명:36
  +도장:명:11
  +도장:명:2
  +도장:명:8
  +도저히:부:84
  +도적:명:7
  +도적질하다:동:1
  +도전:명:48
  +도전감:명:1
  +도전력:명:2
  +도전받다:동:1
  +도전성:명:1
  +도전자:명:1
  +도전작:명:1
  +도전장:명:1
  +도전적:관:2
  +도전적:명:10
  +도전하다:동:56
  +도정:명:2
  +도정하다:동:3
  +도제:명:1
  +도조:명:10
  +도주:명:6
  +도주하다:동:2
  +도중:명:73
  +도중하차하다:동:2
  +도지개:명:1
  +도지다:동:4
  +도지사:명:10
  +도지사실:명:1
  +도착:명:1
  +도착:명:17
  +도착되다:동:1
  +도착적:관:1
  +도착적:명:1
  +도착하다:동:177
  +도참설:명:3
  +도처:명:28
  +도첩:명:1
  +도청:명:10
  +도청:명:21
  +도출:명:3
  +도출되다:동:6
  +도출하다:동:15
  +도취:명:4
  +도취경:명:1
  +도취되다:동:3
  +도취적:명:1
  +도취하다:동:1
  +도치법:명:1
  +도탄:명:1
  +도탑다:형:1
  +도태:명:8
  +도태되다:동:8
  +도태시키다:동:1
  +도토리:명:12
  +도토리묵:명:2
  +도톰하다:형:4
  +도통:명:3
  +도통:부:8
  +도통하다:동:4
  +도트:명:6
  +도편수:명:14
  +도포:명:8
  +도표:명:6
  +도표화하다:동:1
  +도피:명:22
  +도피구:명:1
  +도피성:명:1
  +도피시키다:동:1
  +도피적:관:1
  +도피주의:명:1
  +도피처:명:8
  +도피하다:동:5
  +도하:명:1
  +도학:명:1
  +도합:명:8
  +도해:명:1
  +도해하다:동:1
  +도형:명:11
  +도호:명:1
  +도호부:명:2
  +도화살:명:1
  +도화선:명:2
  +도화지:명:1
  +도회적:명:1
  +독:명:20
  +독:명:6
  +독:명:8
  +독감:명:7
  +독경:명:2
  +독경하다:동:1
  +독과점:명:8
  +독과점되다:동:1
  +독극물:명:1
  +독기:명:2
  +독단:명:5
  +독단적:관:2
  +독대:명:2
  +독대하다:동:1
  +독도법:명:1
  +독돌이:명:1
  +독려:명:2
  +독려하다:동:7
  +독력:명:1
  +독림가:명:2
  +독립:명:100
  +독립국:명:2
  +독립군:명:3
  +독립당:명:1
  +독립되다:동:23
  +독립성:명:8
  +독립시키다:동:2
  +독립심:명:3
  +독립적:관:2
  +독립적:명:26
  +독립파:명:1
  +독립하다:동:25
  +독맥:명:2
  +독무:명:2
  +독무대:명:3
  +독문과:명:1
  +독문학:명:1
  +독문학과:명:1
  +독방:명:6
  +독백:명:5
  +독백체:명:1
  +독버섯:명:6
  +독법:명:7
  +독보:명:1
  +독보적:관:1
  +독보적:명:5
  +독본:명:2
  +독불장군식:명:1
  +독사:명:7
  +독사진:명:1
  +독살:명:6
  +독살스럽다:형:1
  +독상:명:6
  +독새:명:1
  +독서:명:46
  +독서계:명:2
  +독서광:명:1
  +독서량:명:3
  +독서삼품과:명:3
  +독서실:명:2
  +독서인:명:1
  +독서층:명:1
  +독서파:명:1
  +독서하다:동:2
  +독선:명:5
  +독선생:명:1
  +독선적:관:2
  +독선적:명:2
  +독설:명:1
  +독설장:명:1
  +독성:명:8
  +독소:명:15
  +독소량:명:1
  +독수리:명:23
  +독식:명:2
  +독식론:명:2
  +독식하다:동:1
  +독신:명:1
  +독신:명:4
  +독신주의:명:1
  +독신주의자:명:2
  +독실하다:형:5
  +독약:명:1
  +독어:명:1
  +독일어:명:10
  +독자:명:184
  +독자:명:5
  +독자:명:6
  +독자란:명:1
  +독자성:명:5
  +독자적:관:12
  +독자적:명:58
  +독자층:명:4
  +독재:명:48
  +독재자:명:7
  +독재적:명:1
  +독재화:명:1
  +독전:명:1
  +독전하다:동:1
  +독점:명:56
  +독점권:명:1
  +독점기:명:3
  +독점되다:동:3
  +독점욕:명:2
  +독점적:관:5
  +독점적:명:4
  +독점하다:동:19
  +독점화:관:1
  +독점화:명:1
  +독점화되다:동:1
  +독종:명:4
  +독주:명:1
  +독주:명:1
  +독주:명:3
  +독주하다:동:2
  +독주회:명:7
  +독지:명:1
  +독지가:명:1
  +독직:명:2
  +독차지하다:동:4
  +독창:명:2
  +독창성:명:9
  +독창적:관:3
  +독창적:명:30
  +독초:명:1
  +독촉:명:2
  +독촉장:명:1
  +독촉하다:동:2
  +독충:명:1
  +독침:명:2
  +독특하다:형:163
  +독파하다:동:1
  +독하다:형:28
  +독해:명:1
  +독화살:명:1
  +독후감:명:3
  +돈:명:1,232
  +돈:의:2
  +돈가스:명:7
  +돈거래:명:6
  +돈궤:명:1
  +돈놀이:명:1
  +돈다발:명:1
  +돈대:명:3
  +돈독하다:형:2
  +돈독해지다:동:2
  +돈독히:부:1
  +돈뭉치:명:2
  +돈방석:명:1
  +돈벌이:명:10
  +돈벌이되다:동:1
  +돈사:명:1
  +돈세탁:명:2
  +돈수배:명:1
  +돈오:명:15
  +돈오하다:동:1
  +돈장사:명:1
  +돈주머니:명:3
  +돈줄:명:8
  +돈치기:명:1
  +돈타령:명:1
  +돋다:동:22
  +돋보기:명:7
  +돋보기안경:명:1
  +돋보이다:동:54
  +돋아나다:동:21
  +돋우다:동:26
  +돋움체:명:2
  +돋을새김:명:5
  +돋치다:동:6
  +돌:명:166
  +돌:명:3
  +돌:의:11
  +돌격대:명:1
  +돌계단:명:6
  +돌고래:명:22
  +돌기:명:1
  +돌기:명:16
  +돌기둥:명:7
  +돌날:명:2
  +돌널무덤:명:1
  +돌다:동:242
  +돌다리:명:4
  +돌단:명:1
  +돌단풍:명:2
  +돌담:명:6
  +돌대가리:명:1
  +돌덩어리:명:2
  +돌덩이:명:8
  +돌도끼:명:2
  +돌돌:부:10
  +돌려나다:동:2
  +돌려놓다:동:9
  +돌려받다:동:10
  +돌려보내다:동:14
  +돌려세우다:동:2
  +돌려주다:동:25
  +돌려지다:동:6
  +돌리다:동:4
  +돌리다:동:415
  +돌림:명:1
  +돌림자:명:1
  +돌막:명:1
  +돌멩이:명:36
  +돌멩이질:명:1
  +돌무덤:명:5
  +돌발:명:6
  +돌발적:관:1
  +돌발적:명:2
  +돌발하다:동:1
  +돌밭:명:3
  +돌배:명:1
  +돌배나무:명:5
  +돌법사:명:3
  +돌변:명:1
  +돌변하다:동:4
  +돌보다:동:70
  +돌복:명:1
  +돌부리:명:3
  +돌부처:명:4
  +돌사자:명:1
  +돌산:명:1
  +돌상:명:1
  +돌상:명:1
  +돌소금:명:1
  +돌솥:명:7
  +돌실이:명:5
  +돌실이꾼:명:1
  +돌실이하다:동:1
  +돌아가다:동:405
  +돌아내리다:동:1
  +돌아눕다:동:8
  +돌아다니다:동:60
  +돌아다보다:동:27
  +돌아댕기다:동:1
  +돌아들다:동:2
  +돌아보다:동:100
  +돌아서다:동:74
  +돌아앉다:동:7
  +돌아오다:동:517
  +돌양지꽃:명:1
  +돌연:부:10
  +돌연변이:명:6
  +돌연사:명:8
  +돌연사하다:동:1
  +돌연하다:형:3
  +돌연히:부:1
  +돌이:의:6
  +돌이켜지다:동:2
  +돌이키다:동:53
  +돌입:명:4
  +돌입하다:동:18
  +돌자갈:명:1
  +돌잔치:명:2
  +돌절구:명:1
  +돌조각:명:1
  +돌주먹:명:1
  +돌진하다:동:9
  +돌창:명:1
  +돌출:명:6
  +돌출되다:동:6
  +돌출물:명:1
  +돌출하다:동:4
  +돌층계:명:4
  +돌파:명:11
  +돌파구:명:9
  +돌파력:명:3
  +돌파하다:동:5
  +돌팍:명:1
  +돌팔매:명:1
  +돌팔매질:명:1
  +돌팔이:명:1
  +돌풍:명:13
  +돕다:동:206
  +돗바늘:명:1
  +돗자리:명:4
  +동:관:117
  +동:명:12
  +동:명:13
  +동:명:2
  +동:명:4
  +동:의:46
  +동감:명:8
  +동감하다:동:3
  +동갑:명:5
  +동갑내기:명:4
  +동강:명:2
  +동강:부:1
  +동거:명:7
  +동거인:명:5
  +동거하다:동:3
  +동격화:명:1
  +동결:명:18
  +동결되다:동:1
  +동결시키다:동:1
  +동결하다:동:13
  +동경:명:3
  +동경:명:5
  +동경:명:9
  +동경심:명:3
  +동경하다:동:4
  +동계:명:1
  +동계:명:7
  +동고서저:명:2
  +동곳:명:1
  +동공:명:3
  +동공:명:5
  +동구:명:17
  +동구:명:6
  +동구권:명:9
  +동구길:명:1
  +동국:명:2
  +동굴:명:39
  +동굴성:명:4
  +동궁제:명:1
  +동귀:명:1
  +동그라미:명:18
  +동그랗다:형:17
  +동그래지다:동:4
  +동그레깃:명:1
  +동그마하다:형:1
  +동그맣다:형:2
  +동그스름하다:형:1
  +동글납작하다:형:12
  +동글다:형:3
  +동글동글:부:1
  +동글동글하다:동:1
  +동기:명:26
  +동기:명:97
  +동기간:명:2
  +동기생:명:8
  +동기적:관:3
  +동나다:동:1
  +동남부:명:7
  +동남쪽:명:3
  +동내의:명:1
  +동냥:명:1
  +동냥아치:명:2
  +동네:명:276
  +동네방네:명:19
  +동네북:명:1
  +동년배:명:4
  +동녘:명:1
  +동단:명:2
  +동댕이치다:동:1
  +동동:부:5
  +동동:부:8
  +동동거리다:동:1
  +동동주:명:1
  +동등:명:1
  +동등하다:형:29
  +동등해지다:동:1
  +동떨어지다:형:21
  +동란:명:7
  +동량:명:2
  +동력:명:31
  +동력원:명:2
  +동렬:명:1
  +동렬하다:동:1
  +동료:명:126
  +동료애:명:2
  +동루:명:1
  +동류의식:명:1
  +동률:명:1
  +동리:명:2
  +동맥:명:6
  +동맹:명:27
  +동맹:명:4
  +동맹국:명:3
  +동맹군:명:1
  +동맹하다:동:1
  +동메달:명:10
  +동면:명:2
  +동면하다:동:1
  +동명:명:1
  +동명:명:3
  +동명이인:명:1
  +동모:명:1
  +동무:명:40
  +동문:명:1
  +동문:명:16
  +동문수학하다:동:1
  +동문회:명:11
  +동문회장:명:2
  +동물:명:179
  +동물상:명:1
  +동물성:명:7
  +동물원:명:11
  +동물적:관:3
  +동물적:명:2
  +동물학:명:5
  +동물학적:명:1
  +동박새:명:1
  +동반:명:1
  +동반:명:18
  +동반되다:동:4
  +동반부:명:2
  +동반자:명:24
  +동반하다:동:32
  +동발:명:1
  +동방:명:21
  +동방:명:3
  +동방국:명:1
  +동방형:명:3
  +동백:명:1
  +동백기름:명:1
  +동백꽃:명:4
  +동백나무:명:10
  +동법:명:18
  +동병상련:명:4
  +동복:명:1
  +동부:명:51
  +동부권:명:1
  +동북:명:21
  +동북부:명:8
  +동북쪽:명:2
  +동북향:명:1
  +동분서주하다:동:3
  +동사:명:1
  +동사:명:1
  +동사무소:명:11
  +동사시키다:동:1
  +동사자:명:1
  +동산:명:19
  +동산:명:3
  +동산:명:6
  +동상:명:12
  +동상이몽:명:1
  +동생:명:354
  +동서:명:31
  +동서:명:9
  +동서고금:명:12
  +동서남북:명:9
  +동서반:명:1
  +동서부권:명:1
  +동서양:명:11
  +동석하다:동:2
  +동선:명:1
  +동성:명:1
  +동성:명:2
  +동성애:명:6
  +동성애자:명:2
  +동성연애:명:2
  +동성연애자:명:1
  +동세:명:4
  +동수:명:2
  +동승:명:2
  +동승:명:2
  +동승하다:동:4
  +동시:명:1
  +동시:명:400
  +동시대:명:9
  +동시대성:명:1
  +동시대인:명:2
  +동시대적:관:1
  +동시성:명:8
  +동시적:관:1
  +동시적:명:6
  +동시통역:명:1
  +동식물:명:20
  +동실제:명:1
  +동심:명:9
  +동심원:명:1
  +동아리:명:50
  +동아줄:명:7
  +동안:명:1
  +동안:명:886
  +동양:명:66
  +동양권:명:3
  +동양란:명:1
  +동양사:명:4
  +동양사학과:명:1
  +동양식:명:2
  +동양인:명:8
  +동양적:관:4
  +동양적:명:5
  +동양학:명:2
  +동양화:명:3
  +동양화가:명:1
  +동어:명:4
  +동업:명:3
  +동업자:명:1
  +동여매다:동:5
  +동영상:명:5
  +동요:명:14
  +동요:명:8
  +동요되다:동:1
  +동요시키다:동:3
  +동요하다:동:3
  +동우회:명:4
  +동우회장:명:1
  +동원:명:32
  +동원되다:동:29
  +동원력:명:1
  +동원령:명:1
  +동원하다:동:68
  +동위:명:4
  +동의:명:1
  +동의:명:2
  +동의:명:53
  +동의권:명:2
  +동의받다:동:1
  +동의서:명:1
  +동의안:명:2
  +동의어:명:4
  +동의제:명:4
  +동의하다:동:46
  +동의학:명:2
  +동이다:동:2
  +동인:명:20
  +동인:명:6
  +동인회:명:2
  +동일:명:14
  +동일계:명:1
  +동일성:명:5
  +동일시되다:동:1
  +동일시하다:동:8
  +동일인:명:1
  +동일체:명:1
  +동일하다:형:81
  +동일화:명:1
  +동자:명:1
  +동자:명:1
  +동자갯과:명:1
  +동자승:명:1
  +동자주:명:1
  +동작:명:122
  +동작하다:동:2
  +동장:명:4
  +동적:관:9
  +동적:명:1
  +동전:명:42
  +동점:명:12
  +동접:명:3
  +동접하다:동:1
  +동정:명:10
  +동정:명:3
  +동정:명:4
  +동정:명:7
  +동정남:명:2
  +동정론:명:1
  +동정심:명:3
  +동정적:명:1
  +동정표:명:1
  +동정하다:동:7
  +동정해하다:동:1
  +동조:명:3
  +동조자:명:1
  +동조하다:동:7
  +동족:명:7
  +동족상잔:명:1
  +동종:명:1
  +동종:명:4
  +동죽:명:1
  +동지:명:25
  +동지:명:38
  +동지가:명:1
  +동지사:명:2
  +동지애:명:1
  +동지적:관:1
  +동진하다:동:1
  +동질:명:1
  +동질감:명:3
  +동질성:명:9
  +동질적:관:1
  +동질적:명:7
  +동질화:명:1
  +동질화되다:동:2
  +동짓날:명:2
  +동짓달:명:4
  +동쪽:명:83
  +동참:명:4
  +동참시키다:동:1
  +동참하다:동:20
  +동창:명:2
  +동창:명:34
  +동창생:명:6
  +동창회:명:9
  +동창회장:명:2
  +동체:명:1
  +동체:명:8
  +동초:명:1
  +동치미:명:1
  +동침:명:2
  +동침하다:동:4
  +동태:명:1
  +동태:명:4
  +동토:명:1
  +동토대:명:1
  +동트다:동:5
  +동티:명:1
  +동판:명:4
  +동판:명:7
  +동편:명:8
  +동포:명:66
  +동포애:명:4
  +동풍:명:1
  +동하다:동:9
  +동학:명:1
  +동행:명:75
  +동행되다:동:4
  +동행시키다:동:1
  +동행인:명:1
  +동행하다:동:28
  +동향:명:2
  +동향:명:36
  +동향:명:5
  +동헌:명:5
  +동호인:명:4
  +동호회:명:6
  +동화:명:1
  +동화:명:74
  +동화되다:동:12
  +동화시키다:동:1
  +동화적:관:2
  +동화집:명:2
  +동화책:명:20
  +동화하다:동:1
  +돛:명:1
  +돛단배:명:4
  +돛대:명:1
  +돛배:명:2
  +돼먹다:동:1
  +돼지:명:72
  +돼지고기:명:43
  +돼지기름:명:1
  +돼지꿈:명:2
  +돼지띠:명:2
  +돼지비계:명:1
  +돼지우리:명:4
  +돼지풀:명:2
  +되:의:14
  +되가꾸다:동:1
  +되가지다:동:1
  +되감기다:동:1
  +되갚다:동:1
  +되거래:명:1
  +되게:부:69
  +되넘기다:동:1
  +되놈:명:2
  +되뇌다:동:13
  +되뇌이다:동:4
  +되는대로:부:4
  +되다:동:1
  +되다:동:11,506
  +되다:형:4
  +되도록:부:27
  +되돌다:동:3
  +되돌려받다:동:1
  +되돌리다:동:40
  +되돌아가다:동:32
  +되돌아보다:동:19
  +되돌아오다:동:36
  +되들어가다:동:1
  +되들이:명:2
  +되레:부:10
  +되맞아들이다:동:1
  +되묻다:동:22
  +되바라지다:동:3
  +되받다:동:6
  +되받아치다:동:2
  +되비추다:동:1
  +되비치다:동:2
  +되살다:동:2
  +되살리다:동:29
  +되살아나다:동:25
  +되새:명:5
  +되새겨지다:동:1
  +되새기다:동:3
  +되새기다:동:35
  +되새김질하다:동:1
  +되세우다:동:1
  +되쏘다:동:3
  +되씹다:동:6
  +되어지다:동:1
  +되울리다:동:2
  +되작이다:동:1
  +되잖다:형:1
  +되직하다:형:2
  +되짚다:동:8
  +되찾다:동:63
  +되치기:명:2
  +되치다:동:1
  +되팔다:동:7
  +되풀이:명:10
  +되풀이되다:동:30
  +되풀이하다:동:57
  +된밥:명:1
  +된비알:명:1
  +된서리:명:2
  +된소리:명:1
  +된장:명:37
  +된장국:명:11
  +된장찌개:명:14
  +된통:부:3
  +될성부르다:형:2
  +됨됨이:명:1
  +됫박:명:1
  +됫병:명:2
  +두:관:2,082
  +두:의:1
  +두각:명:5
  +두개골:명:3
  +두견새:명:1
  +두견이:명:1
  +두고두고:부:17
  +두관:명:1
  +두규음:명:1
  +두근거리다:동:13
  +두근두근:부:2
  +두근두근하다:동:1
  +두꺼비:명:5
  +두꺼워지다:동:1
  +두껍:명:4
  +두껍다:형:74
  +두께:명:36
  +두냉증:명:1
  +두뇌:명:59
  +두뇌적:관:1
  +두뇌적:명:1
  +두다:동:717
  +두다:보:5
  +두다:보:593
  +두더지:명:8
  +두두룩하다:형:2
  +두두룩해지다:동:1
  +두둑하다:형:5
  +두둔하다:동:6
  +두둥실:부:3
  +두드러기:명:8
  +두드러지다:동:16
  +두드러지다:형:73
  +두드리다:동:72
  +두들겨지다:동:1
  +두들기다:동:53
  +두런거리다:동:2
  +두런두런:부:1
  +두런두런하다:동:1
  +두레:명:2
  +두레박:명:6
  +두레박질하다:동:1
  +두려움:명:58
  +두려워하다:동:43
  +두렵다:형:68
  +두령:명:1
  +두루:부:42
  +두루두루:부:1
  +두루루:부:1
  +두루마기:명:16
  +두루마리:명:1
  +두루뭉술하다:형:5
  +두루미:명:1
  +두루미천남성:명:2
  +두루주머니:명:1
  +두르다:동:105
  +두름:명:3
  +두름:의:1
  +두릅:명:1
  +두릅나무:명:1
  +두리번:명:1
  +두리번거리다:동:34
  +두리벙해지다:동:1
  +두말:명:3
  +두말없이:부:1
  +두말하다:동:22
  +두메:명:9
  +두메산골:명:4
  +두목:명:13
  +두문:명:1
  +두문불출하다:동:1
  +두반장:명:2
  +두발:명:1
  +두벌자식:명:2
  +두부:명:32
  +두부김치:명:1
  +두부모:명:2
  +두부빈대떡:명:1
  +두부찌개:명:2
  +두상:명:1
  +두서:명:1
  +두서너:관:3
  +두서넛:수:1
  +두서없이:부:4
  +두세:관:33
  +두셋:수:4
  +두식:명:1
  +두앙선:명:1
  +두어:관:42
  +두어라:감:1
  +두어지다:동:3
  +두억시니:명:1
  +두엄:명:3
  +두엇:수:4
  +두절:명:2
  +두절되다:동:3
  +두터워지다:동:4
  +두터이:부:2
  +두텁다:형:7
  +두통:명:27
  +두툼하다:형:18
  +두품:명:3
  +둑:명:39
  +둑길:명:4
  +둑다:동:1
  +둔감성:명:1
  +둔감하다:형:5
  +둔감해지다:동:1
  +둔갑:명:3
  +둔갑시키다:동:3
  +둔갑하다:동:11
  +둔강하다:동:1
  +둔기:명:2
  +둔덕:명:4
  +둔부:명:1
  +둔사:명:1
  +둔전:명:1
  +둔중하다:형:1
  +둔탁하다:형:3
  +둔턱:명:1
  +둔하다:형:8
  +둔해지다:동:4
  +둔화:명:4
  +둔화되다:동:11
  +둔화시키다:동:2
  +둘:수:369
  +둘:의:1
  +둘둘:부:3
  +둘러대다:동:7
  +둘러메다:동:2
  +둘러보다:동:82
  +둘러서다:동:12
  +둘러싸다:동:119
  +둘러싸이다:동:37
  +둘러쓰다:동:5
  +둘러앉다:동:22
  +둘러지다:동:3
  +둘러쳐지다:동:1
  +둘러치다:동:3
  +둘레:명:27
  +둘려지다:동:1
  +둘리다:동:1
  +둘리우다:동:1
  +둘암소:명:1
  +둘이:명:12
  +둘째:관:79
  +둘째:명:2
  +둘째:수:136
  +둘째가다:동:2
  +둥:의:27
  +둥굴레:명:2
  +둥그러지다:동:1
  +둥그렇다:형:12
  +둥그레지다:동:1
  +둥그스름하다:형:2
  +둥근달:명:1
  +둥글납작하다:형:2
  +둥글다:형:101
  +둥둥:부:11
  +둥실:부:2
  +둥우리:명:1
  +둥지:명:86
  +둥치:명:8
  +뒈지다:동:9
  +뒤:명:1,608
  +뒤꼍:명:4
  +뒤꼭지:명:3
  +뒤꽁무니:명:1
  +뒤꿈치:명:8
  +뒤끝:명:8
  +뒤넘이:명:1
  +뒤늦다:형:62
  +뒤다:동:1
  +뒤덮다:동:23
  +뒤덮이다:동:18
  +뒤돌다:동:2
  +뒤돌아보다:동:13
  +뒤돌아서다:동:6
  +뒤따라가다:동:5
  +뒤따라오다:동:6
  +뒤따르다:동:69
  +뒤떨어지다:동:22
  +뒤뚱거리다:동:2
  +뒤뚱뒤뚱:부:4
  +뒤뜰:명:7
  +뒤란:명:6
  +뒤로돌아:감:1
  +뒤로하다:동:4
  +뒤미처:부:1
  +뒤바꾸다:동:4
  +뒤바뀌다:동:10
  +뒤바뀌어지다:동:1
  +뒤밟다:동:1
  +뒤범벅:명:6
  +뒤범벅되다:동:1
  +뒤범벅하다:동:1
  +뒤서다:동:8
  +뒤섞다:동:4
  +뒤섞이다:동:18
  +뒤숭숭:부:1
  +뒤숭숭하다:형:5
  +뒤숭숭해지다:동:1
  +뒤스르다:동:1
  +뒤안:명:1
  +뒤안길:명:6
  +뒤얽히다:동:2
  +뒤엉키다:동:11
  +뒤엎다:동:12
  +뒤엎어지다:동:2
  +뒤웅박:명:3
  +뒤잇다:동:14
  +뒤적거리다:동:6
  +뒤적뒤적:부:1
  +뒤적이다:동:19
  +뒤져내다:동:2
  +뒤주:명:1
  +뒤죽박죽:명:10
  +뒤지다:동:28
  +뒤지다:동:62
  +뒤집기:명:1
  +뒤집다:동:70
  +뒤집어쓰다:동:26
  +뒤집어씌우다:동:4
  +뒤집어지다:동:9
  +뒤집혀지다:동:2
  +뒤집히다:동:4
  +뒤쪽:명:36
  +뒤쫓다:동:19
  +뒤채:명:3
  +뒤채다:동:1
  +뒤처리:명:7
  +뒤처지다:동:13
  +뒤척:부:3
  +뒤척거리다:동:4
  +뒤척이다:동:13
  +뒤치다:동:3
  +뒤치다꺼리:명:4
  +뒤치다꺼리하다:동:1
  +뒤통수:명:15
  +뒤트임:명:1
  +뒤틀다:동:3
  +뒤틀리다:동:15
  +뒤틀림:명:1
  +뒤판:명:1
  +뒤편:명:24
  +뒤표지:명:2
  +뒤풀이:명:2
  +뒤흔들다:동:22
  +뒤흔들리다:동:1
  +뒷간:명:10
  +뒷감당:명:2
  +뒷거래:명:4
  +뒷걸음:명:1
  +뒷걸음질:명:6
  +뒷걸음질치다:동:1
  +뒷걸음질하다:동:1
  +뒷걸음치다:동:1
  +뒷것음질:명:1
  +뒷골:명:1
  +뒷골목:명:15
  +뒷구멍:명:3
  +뒷그루:명:1
  +뒷길:명:1
  +뒷나다:동:1
  +뒷날:명:12
  +뒷다리:명:3
  +뒷담:명:3
  +뒷덜미:명:1
  +뒷돈:명:1
  +뒷동산:명:4
  +뒷등:명:1
  +뒷마당:명:3
  +뒷마무리:명:2
  +뒷말:명:7
  +뒷맛:명:6
  +뒷머리:명:13
  +뒷면:명:11
  +뒷모습:명:51
  +뒷모양:명:1
  +뒷목:명:6
  +뒷몸:명:1
  +뒷무릎:명:1
  +뒷무릎치기:명:1
  +뒷문:명:22
  +뒷바라지:명:11
  +뒷바라지하다:동:2
  +뒷바람:명:1
  +뒷바퀴:명:1
  +뒷받침:명:12
  +뒷받침되다:동:9
  +뒷받침하다:동:44
  +뒷발:명:24
  +뒷방:명:5
  +뒷밭:명:1
  +뒷부분:명:5
  +뒷북치다:동:2
  +뒷산:명:29
  +뒷설거지:명:1
  +뒷소문:명:1
  +뒷수습:명:1
  +뒷심:명:2
  +뒷얘기:명:4
  +뒷이야기:명:3
  +뒷일:명:1
  +뒷자락:명:2
  +뒷자리:명:5
  +뒷장:명:4
  +뒷전:명:9
  +뒷정리:명:4
  +뒷정리하다:동:1
  +뒷조사:명:3
  +뒷주머니:명:3
  +뒷줄:명:3
  +뒷짐:명:6
  +뒷집:명:2
  +뒹굴다:동:21
  +듀스:명:1
  +듀엣:명:1
  +듀오:명:1
  +듀오:명:1
  +듀플렉스:명:3
  +드나들다:동:46
  +드난살이:명:1
  +드날리다:동:1
  +드넓다:형:13
  +드높다:형:13
  +드높아지다:동:2
  +드높이:부:2
  +드높이다:동:5
  +드디어:부:105
  +드라마:명:186
  +드라마광:명:1
  +드라마적:관:1
  +드라마투르기:명:1
  +드라마틱하다:형:1
  +드라마화되다:동:1
  +드라이:명:4
  +드라이기:명:1
  +드라이버:명:9
  +드라이브:명:4
  +드라이브:명:4
  +드라이브:명:7
  +드라이브형:명:1
  +드라이아이스:명:2
  +드라이어:명:2
  +드라이클리닝:명:4
  +드라이하다:동:2
  +드래그:명:1
  +드래프트:명:4
  +드러나다:동:355
  +드러내다:동:216
  +드러눕다:동:23
  +드럼:명:9
  +드럼통:명:1
  +드럽다:형:1
  +드레서:명:1
  +드레스:명:4
  +드레싱:명:3
  +드레인:명:1
  +드로잉:명:3
  +드롭:명:1
  +드르렁:부:1
  +드르르:부:1
  +드르륵:부:1
  +드르릉:부:2
  +드륵드륵:부:1
  +드리다:동:1
  +드리다:동:156
  +드리다:동:3
  +드리다:보:266
  +드리블:명:9
  +드리블하다:동:1
  +드리우다:동:14
  +드리워지다:동:17
  +드리프터:명:1
  +드릴:명:6
  +드림:명:2
  +드링크:명:13
  +드문드문:부:5
  +드물다:형:112
  +드세다:형:2
  +드세지다:동:2
  +드잡이:명:1
  +득:명:8
  +득남:명:1
  +득달같이:부:1
  +득도:명:1
  +득도하다:동:1
  +득득:부:1
  +득세:명:2
  +득세하다:동:3
  +득수:명:12
  +득시글거리다:동:2
  +득실:명:7
  +득실거리다:동:6
  +득실대다:동:2
  +득의:명:1
  +득의만만하다:형:4
  +득의만면:명:1
  +득의만면하다:형:1
  +득점:명:15
  +득점력:명:3
  +득점상:명:1
  +득점왕:명:11
  +득점원:명:1
  +득점포:명:4
  +득표:명:8
  +득표력:명:2
  +득표율:명:9
  +득표자:명:1
  +득표전:명:1
  +든든하다:형:30
  +든든해지다:동:1
  +듣기:명:1
  +듣다:동:1,593
  +듣다:동:5
  +듣잡다:동:1
  +들:명:75
  +들:의:14
  +들개:명:2
  +들것:명:4
  +들고양이:명:1
  +들고일어나다:동:2
  +들국화:명:2
  +들기:명:1
  +들기법:명:2
  +들기술:명:2
  +들길:명:6
  +들까불다:동:2
  +들깨:명:4
  +들깨풀:명:1
  +들꽃:명:1
  +들끓다:동:11
  +들나물:명:2
  +들녘:명:10
  +들놀이:명:1
  +들다:동:1,272
  +들다:동:1,535
  +들다:보:65
  +들독:명:5
  +들독거리:명:1
  +들들:부:2
  +들뛰다:동:2
  +들뜨다:동:27
  +들락거리다:동:18
  +들락날락거리다:동:2
  +들락날락하다:동:2
  +들락이다:동:1
  +들랑거리다:동:1
  +들러리:명:3
  +들러붙다:동:1
  +들려오다:동:130
  +들려주다:동:44
  +들려지다:동:3
  +들르다:동:112
  +들리다:동:17
  +들리다:동:2
  +들리다:동:258
  +들리다:동:3
  +들리다:동:5
  +들머리:명:1
  +들먹:명:1
  +들먹거리다:동:5
  +들먹들먹하다:동:1
  +들먹여지다:동:1
  +들먹이다:동:20
  +들보:명:1
  +들볶다:동:5
  +들소:명:23
  +들썩:부:1
  +들썩거리다:동:4
  +들썩들썩:부:1
  +들썩이다:동:5
  +들썩하다:동:2
  +들썩하다:형:1
  +들썽거려지다:동:1
  +들썽거리다:동:1
  +들쑤시다:동:2
  +들쑥날쑥하다:형:1
  +들앉다:동:1
  +들어가다:동:1,142
  +들어내다:동:8
  +들어맞다:동:6
  +들어먹다:동:1
  +들어서다:동:338
  +들어앉다:동:17
  +들어앉히다:동:1
  +들어오다:동:739
  +들어주다:동:15
  +들어지다:동:2
  +들어차다:동:14
  +들여가다:동:1
  +들여놓다:동:31
  +들여다보다:동:129
  +들여다보이다:동:6
  +들여다뵈다:동:2
  +들여보내다:동:11
  +들여오다:동:19
  +들여지다:동:1
  +들오다:동:4
  +들오리:명:1
  +들이다:동:150
  +들이닥치다:동:16
  +들이당짝:부:1
  +들이대다:동:1
  +들이대다:동:26
  +들이마시다:동:2
  +들이마시다:동:25
  +들이밀다:동:19
  +들이밀어지다:동:1
  +들이박다:동:1
  +들이받다:동:3
  +들이붓다:동:2
  +들이쉬다:동:9
  +들이켜다:동:32
  +들일:명:4
  +들입다:부:5
  +들쥐:명:18
  +들짐승:명:2
  +들쭉날쭉:부:2
  +들쭉날쭉하다:형:2
  +들창문:명:3
  +들창코:명:2
  +들척지근하다:형:1
  +들쳐업다:동:2
  +들추다:동:16
  +들추어내다:동:4
  +들추어지다:동:2
  +들춰내다:동:1
  +들치다:동:1
  +들키다:동:19
  +들통:명:4
  +들판:명:39
  +들풀:명:1
  +듬뿍:부:22
  +듬성듬성:부:8
  +듬성듬성하다:형:2
  +듬직하다:형:2
  +듯:의:579
  +듯싶다:보:54
  +듯이:의:224
  +듯하다:보:555
  +등:명:12
  +등:명:219
  +등:의:5,967
  +등:의:59
  +등가:명:3
  +등가구:명:2
  +등거리:명:1
  +등걸:명:1
  +등고선:명:7
  +등골:명:7
  +등골나무:명:1
  +등골나물:명:1
  +등공예:명:1
  +등과시키다:동:1
  +등교:명:8
  +등교하다:동:9
  +등굣길:명:4
  +등극:명:1
  +등극하다:동:1
  +등급:명:10
  +등급제:명:4
  +등기:명:11
  +등기부:명:2
  +등기소:명:1
  +등기하다:동:2
  +등꽃:명:2
  +등나무:명:5
  +등단:명:5
  +등단하다:동:6
  +등대:명:14
  +등댓불:명:1
  +등덜미:명:1
  +등돌:명:1
  +등등:의:60
  +등등하다:형:2
  +등등해지다:동:1
  +등딱지:명:2
  +등락:명:2
  +등록:명:62
  +등록금:명:23
  +등록되다:동:14
  +등록료:명:5
  +등록부:명:1
  +등록비:명:1
  +등록시키다:동:1
  +등록인:명:2
  +등록자:명:1
  +등록제:명:2
  +등록증:명:45
  +등록지:명:1
  +등록하다:동:16
  +등바대:명:1
  +등반:명:5
  +등반가:명:1
  +등받이:명:8
  +등벽:명:8
  +등본:명:7
  +등분:명:3
  +등분하다:동:3
  +등불:명:23
  +등뼈:명:9
  +등사판:명:2
  +등산:명:37
  +등산가:명:2
  +등산객:명:5
  +등산로:명:19
  +등산모:명:2
  +등산복:명:1
  +등산인:명:1
  +등산지:명:1
  +등산하다:동:3
  +등산화:명:2
  +등성:의:1
  +등성이:명:6
  +등속:명:4
  +등속:의:2
  +등수:명:4
  +등식:명:10
  +등신:명:2
  +등심:명:6
  +등쌀:명:3
  +등용:명:1
  +등용되다:동:2
  +등용문:명:2
  +등용하다:동:9
  +등유:명:1
  +등의자:명:3
  +등잔:명:11
  +등잔불:명:7
  +등장:명:68
  +등장되다:동:1
  +등장시키다:동:8
  +등장인물:명:16
  +등장하다:동:225
  +등재되다:동:1
  +등정:명:1
  +등정:명:4
  +등정로:명:1
  +등정하다:동:2
  +등줄기:명:9
  +등줄쥐:명:2
  +등지:의:72
  +등지다:동:22
  +등짐:명:1
  +등짐장수:명:1
  +등짝:명:9
  +등차:명:1
  +등치다:동:1
  +등퇴장:명:2
  +등판:명:1
  +등판:명:1
  +등판하다:동:2
  +등학로:명:1
  +등한시되다:동:2
  +등한시하다:동:6
  +등허리:명:4
  +디:명:7
  +디:의:1
  +디너:명:3
  +디데이:명:2
  +디디다:동:23
  +디디티:명:12
  +디딜방아:명:2
  +디딤돌:명:2
  +디딤새:명:1
  +디램:명:1
  +디렉터리:명:7
  +디리다:동:1
  +디밀다:동:9
  +디밀어지다:동:3
  +디비:명:27
  +디스켓:명:12
  +디스코:명:9
  +디스코걸:명:2
  +디스코텍:명:9
  +디스크:명:62
  +디스크자키:명:1
  +디스토마:명:13
  +디스토피아:명:2
  +디스토피아적:관:1
  +디스플레이:명:1
  +디엔에이:명:6
  +디엠제트:명:3
  +디자이너:명:15
  +디자인:명:68
  +디자인과:명:3
  +디자인되다:동:1
  +디자인상:명:1
  +디자인실:명:1
  +디자인업체:명:1
  +디자인하다:동:10
  +디장조:명:2
  +디저트:명:4
  +디제이:명:9
  +디젤:명:12
  +디지털:명:8
  +디테일:명:1
  +디피아이:의:1
  +디피점:명:1
  +딛다:동:26
  +딜러:명:1
  +딜레마:명:7
  +딥:명:1
  +딥:명:1
  +딩댕동:부:1
  +딩동:부:4
  +딩동딩동:부:1
  +따갑다:형:36
  +따개비:명:1
  +따귀:명:5
  +따끈거리다:동:2
  +따끈따끈:부:2
  +따끈따끈하다:형:2
  +따끈하다:형:4
  +따끈히:부:1
  +따끔:부:1
  +따끔거리다:동:1
  +따끔따끔:부:2
  +따끔따끔하다:형:1
  +따끔하다:형:6
  +따님:명:3
  +따다:동:143
  +따돌리다:동:20
  +따듯이:부:1
  +따듯하다:형:2
  +따따당:감:1
  +따따따따:부:2
  +따따부따:부:1
  +따땃해지다:동:1
  +따뜻이:부:1
  +따뜻하다:형:175
  +따뜻해지다:동:8
  +따라가다:동:87
  +따라나서다:동:13
  +따라다니다:동:32
  +따라붙다:동:10
  +따라서:접:712
  +따라오다:동:50
  +따라잡다:동:16
  +따로:부:175
  +따로국밥:명:2
  +따로따로:부:15
  +따로이:부:3
  +따루미얀나무:명:1
  +따르다:동:2,388
  +따르다:동:65
  +따르르:부:1
  +따르릉:부:9
  +따름:의:33
  +따먹다:동:9
  +따발총:명:2
  +따분하다:형:5
  +따분해지다:동:1
  +따비:명:2
  +따사롭다:형:7
  +따스하다:형:31
  +따습다:형:2
  +따시다:형:2
  +따오다:동:11
  +따우:감:1
  +따위:의:171
  +따지다:동:183
  +딱:부:119
  +딱:부:57
  +딱:부:9
  +딱따기:명:1
  +딱딱:부:3
  +딱딱:부:4
  +딱딱:부:5
  +딱딱거리다:동:1
  +딱딱거리다:동:1
  +딱딱하다:형:46
  +딱딱해지다:동:2
  +딱새:명:1
  +딱쥐:명:1
  +딱지:명:19
  +딱지:명:3
  +딱지치기:명:1
  +딱하다:형:17
  +딱히:부:11
  +딴:관:103
  +딴:의:8
  +딴것:명:1
  +딴따라:명:2
  +딴마음:명:1
  +딴사람:명:1
  +딴살림:명:1
  +딴생각:명:3
  +딴생각하다:동:3
  +딴소리:명:2
  +딴은:부:2
  +딴전:명:3
  +딴청:명:4
  +딴판:명:12
  +딸:명:345
  +딸각:부:2
  +딸기:명:20
  +딸기코:명:1
  +딸깍:부:2
  +딸꾹:부:7
  +딸꾹질:명:9
  +딸내미:명:3
  +딸년:명:10
  +딸딸이:명:1
  +딸랑:부:1
  +딸랑거리다:동:2
  +딸랑딸랑:부:2
  +딸랑딸랑거리다:동:1
  +딸리다:동:2
  +딸리다:동:7
  +딸부자:명:1
  +딸아이:명:22
  +딸애:명:8
  +딸자식:명:4
  +땀:명:163
  +땀내:명:2
  +땀띠:명:2
  +땀방울:명:5
  +땀시:부:2
  +땀자국:명:1
  +땀투성이:명:1
  +땃쥐:명:5
  +땅:명:602
  +땅값:명:17
  +땅강아지:명:2
  +땅개미:명:1
  +땅거미:명:9
  +땅고르기:명:2
  +땅굴:명:18
  +땅기다:동:8
  +땅꾼:명:1
  +땅덩어리:명:8
  +땅따먹기:명:1
  +땅딸막하다:형:4
  +땅딸보:명:1
  +땅뙈기:명:1
  +땅마지기:명:1
  +땅문서:명:1
  +땅바닥:명:20
  +땅벌:명:1
  +땅별:명:1
  +땅볼:명:9
  +땅비싸리:명:2
  +땅속:명:46
  +땅임자:명:1
  +땅콩:명:28
  +땅콩죽:명:1
  +땋다:동:6
  +때:명:33
  +때:명:5,813
  +때까치:명:4
  +때깔:명:3
  +때늦다:형:5
  +때다:동:22
  +때때로:부:21
  +때때옷:명:2
  +때래잡다:동:1
  +때려눕히다:동:2
  +때려뉘다:동:1
  +때려잡다:동:2
  +때려죽이다:동:3
  +때려치다:동:1
  +때려치우다:동:12
  +때로:부:170
  +때리다:동:134
  +때마침:부:16
  +때맞추다:동:6
  +때문:의:3,889
  +때밀이:명:3
  +때우다:동:21
  +때죽나무:명:6
  +땔감:명:7
  +땔나무:명:2
  +땜:의:29
  +땜시:부:2
  +땜질:명:2
  +땜질식:명:1
  +땜통:명:4
  +땟국:명:3
  +땡:부:9
  +땡땡이:명:1
  +땡땡이치다:동:3
  +땡볕:명:2
  +땡비:명:6
  +땡전:명:1
  +떠가다:동:3
  +떠나가다:동:30
  +떠나다:동:592
  +떠나보내다:동:7
  +떠나오다:동:18
  +떠내다:동:2
  +떠내려가다:동:17
  +떠넘기다:동:6
  +떠다니다:동:9
  +떠다밀다:동:4
  +떠돌다:동:52
  +떠돌아다니다:동:10
  +떠돌이:명:2
  +떠들다:동:1
  +떠들다:동:76
  +떠들썩:부:1
  +떠들썩하다:동:1
  +떠들썩하다:형:1
  +떠들썩하다:형:30
  +떠들치다:동:2
  +떠듬거리다:동:1
  +떠듬떠듬:부:1
  +떠맡겨지다:동:1
  +떠맡기다:동:6
  +떠맡다:동:22
  +떠먹다:동:8
  +떠먹이다:동:1
  +떠메다:동:1
  +떠밀다:동:2
  +떠밀리다:동:19
  +떠받들다:동:6
  +떠받들어지다:동:2
  +떠받치다:동:12
  +떠벌떠벌:부:1
  +떠벌리다:동:21
  +떠보다:동:3
  +떠안다:동:3
  +떠오다:동:1
  +떠오르다:동:215
  +떠올라지다:동:1
  +떠올려지다:동:2
  +떠올리다:동:128
  +떠지다:동:1
  +떡:명:158
  +떡:부:3
  +떡갈나무:명:8
  +떡고물:명:2
  +떡국:명:6
  +떡니:명:2
  +떡메:명:1
  +떡메주:명:1
  +떡밥:명:3
  +떡방아:명:1
  +떡버들:명:1
  +떡볶이:명:10
  +떡비:명:2
  +떡살:명:1
  +떡시루:명:14
  +떡쌀:명:1
  +떡잎:명:4
  +떡조개:명:1
  +떡하니:부:2
  +떨:명:1
  +떨거지:명:3
  +떨구다:동:40
  +떨구어지다:동:1
  +떨기나무:명:1
  +떨꺽:부:1
  +떨다:동:181
  +떨떠름:명:1
  +떨떠름하다:형:2
  +떨떠름해하다:동:1
  +떨렁:부:2
  +떨리다:동:1
  +떨리다:동:83
  +떨어내다:동:3
  +떨어뜨리다:동:81
  +떨어지다:동:634
  +떨어트리다:동:4
  +떨이:명:2
  +떨쳐지다:동:1
  +떨치다:동:17
  +떨치다:동:29
  +떫다:형:1
  +떫은맛:명:4
  +떳떳이:부:9
  +떳떳하다:형:28
  +떳떳해지다:동:1
  +떵떵:부:1
  +떵떵거리다:동:6
  +떼:명:1
  +떼:명:2
  +떼:명:3
  +떼:명:3
  +떼:명:75
  +떼거지:명:3
  +떼끼놈:감:1
  +떼다:동:211
  +떼돈:명:2
  +떼르르:부:1
  +떼먹다:동:1
  +떼멕이다:동:1
  +떼밀다:동:2
  +떼부자:명:5
  +떼쓰다:동:1
  +떼어먹다:동:1
  +떼어지다:동:1
  +떼이다:동:1
  +떼잠:명:1
  +떼쟁이:명:1
  +떼죽음:명:2
  +떼치다:동:1
  +떽:감:1
  +떽떼굴:부:1
  +뗀석기:명:1
  +뗏목:명:6
  +뗑깡:명:1
  +또:접:2,814
  +또각:부:3
  +또는:접:778
  +또다시:부:100
  +또랑또랑하다:형:1
  +또래:명:41
  +또렷이:부:5
  +또렷하다:형:12
  +또렷해지다:동:1
  +또록또록:부:1
  +또르르:부:1
  +또르르:부:1
  +또릿또릿하다:형:1
  +또박또박:부:2
  +또박또박:부:5
  +또박또박하다:형:1
  +또아리:명:4
  +또한:접:788
  +똑:부:1
  +똑:부:5
  +똑같다:형:166
  +똑같아지다:동:3
  +똑같이:부:81
  +똑딱:부:2
  +똑딱똑딱:부:2
  +똑딱똑딱하다:동:1
  +똑똑:부:11
  +똑똑하다:형:51
  +똑똑히:부:13
  +똑바로:부:35
  +똑바르다:형:1
  +똔또니:명:1
  +똘똘:부:7
  +똘똘하다:형:1
  +똘마니:명:1
  +똥:명:53
  +똥간:명:1
  +똥값:명:2
  +똥강아지:명:1
  +똥개:명:1
  +똥구덕:명:1
  +똥구덩:명:7
  +똥구덩이:명:2
  +똥구멍:명:2
  +똥그랗다:형:2
  +똥그래지다:동:1
  +똥금:명:2
  +똥독:명:1
  +똥똥하다:형:1
  +똥물:명:2
  +똥배:명:4
  +똥보:명:2
  +똥오줌:명:2
  +똥지게:명:1
  +똥칠:명:1
  +똥칠하다:동:1
  +똥탕:명:1
  +똥통:명:2
  +똬리:명:1
  +뙈기:명:12
  +뙈기밭:명:1
  +뚜:부:8
  +뚜껑:명:44
  +뚜딜기다:동:1
  +뚜렷이:부:18
  +뚜렷하다:형:108
  +뚜렷해지다:동:6
  +뚜르르:부:1
  +뚜벅거리다:동:1
  +뚜벅뚜벅:부:5
  +뚜우부:감:1
  +뚝:부:10
  +뚝:부:18
  +뚝딱:부:1
  +뚝딱뚝딱:부:1
  +뚝뚝:부:1
  +뚝뚝:부:15
  +뚝뚝하다:형:2
  +뚝방:명:5
  +뚝배기:명:8
  +뚝심:명:4
  +뚝하다:형:1
  +뚝해지다:동:1
  +뚫다:동:66
  +뚫리다:동:28
  +뚫어지다:동:7
  +뚱기다:동:2
  +뚱딴지:명:4
  +뚱뚱보:명:1
  +뚱뚱이:명:2
  +뚱뚱하다:형:12
  +뚱뚱해지다:동:1
  +뚱보:명:2
  +뚱하다:형:3
  +뛰기:명:9
  +뛰놀다:동:16
  +뛰다:동:119
  +뛰다:동:139
  +뛰어가다:동:41
  +뛰어나가다:동:15
  +뛰어나다:형:136
  +뛰어나오다:동:17
  +뛰어내리다:동:27
  +뛰어넘다:동:61
  +뛰어놀다:동:15
  +뛰어다니다:동:23
  +뛰어들다:동:94
  +뛰어오다:동:16
  +뛰어오르다:동:25
  +뛰쳐나가다:동:14
  +뛰쳐나오다:동:21
  +뜀뛰기:명:5
  +뜀박질하다:동:1
  +뜀질:명:1
  +뜀틀:명:8
  +뜨개질:명:2
  +뜨거워지다:동:14
  +뜨겁다:형:195
  +뜨끈뜨끈하다:형:3
  +뜨끈하다:형:2
  +뜨끔거리다:동:1
  +뜨끔뜨끔:부:1
  +뜨끔하다:형:3
  +뜨끔해하다:동:1
  +뜨내기:명:3
  +뜨다:동:1
  +뜨다:동:135
  +뜨다:동:164
  +뜨다:동:2
  +뜨다:동:2
  +뜨다:동:2
  +뜨다:동:21
  +뜨다:동:48
  +뜨다:형:1
  +뜨듯해지다:동:1
  +뜨뜻하다:형:2
  +뜨락:명:16
  +뜨리다:동:1
  +뜨물:명:2
  +뜨아:감:4
  +뜨악하다:형:4
  +뜨이다:동:13
  +뜬구름:명:2
  +뜬금없다:형:1
  +뜬금없어하다:동:2
  +뜬금없이:부:4
  +뜬눈:명:2
  +뜬소문:명:1
  +뜯기다:동:1
  +뜯기다:동:6
  +뜯다:동:55
  +뜯어고쳐지다:동:1
  +뜯어고치다:동:3
  +뜯어내다:동:7
  +뜯어말리다:동:6
  +뜯어먹다:동:2
  +뜯어보다:동:13
  +뜯어지다:동:5
  +뜰:명:28
  +뜸:명:18
  +뜸하다:형:9
  +뜸해지다:동:5
  +뜻:명:639
  +뜻글자:명:1
  +뜻대로:부:30
  +뜻밖:명:43
  +뜻밖에:부:28
  +뜻있다:형:15
  +뜻풀이:명:1
  +뜻풀이하다:동:1
  +뜻하다:동:122
  +띄다:동:1
  +띄다:동:124
  +띄엄띄엄:부:8
  +띄우다:동:2
  +띄우다:동:40
  +띄우다:동:5
  +띠:명:2
  +띠:명:27
  +띠다:동:201
  +띠띠와:감:1
  +띠얏:감:3
  +띵:부:2
  +띵해지다:동:1
  +라:명:2
  +라듐:명:7
  +라디에이터:명:15
  +라디오:명:145
  +라마승:명:1
  +라마즈:명:2
  +라면:명:81
  +라면가:명:1
  +라벨:명:8
  +라벨링:명:1
  +라스트:명:3
  +라우겐:명:3
  +라운드:명:32
  +라운지:명:1
  +라이너:명:1
  +라이너:명:10
  +라이따이한:명:2
  +라이벌:명:15
  +라이벌전:명:1
  +라이브:명:13
  +라이브러리:명:1
  +라이선스:명:2
  +라이스:명:4
  +라이터:명:25
  +라이트:명:1
  +라이프:명:1
  +라인:명:35
  +라일락:명:4
  +라켓:명:16
  +라켓볼장:명:2
  +라테라이트:명:1
  +라텍스:명:1
  +란:명:10
  +란제리:명:2
  +람바다:명:2
  +람프라소스:명:1
  +래드치커리:명:1
  +래디컬하다:동:1
  +래커:명:2
  +랜드:명:3
  +랜딩:명:1
  +랜턴:명:4
  +랠리:명:3
  +램:명:2
  +램프:명:1
  +랩:명:2
  +랩:명:21
  +랩:명:8
  +랩뮤직:명:1
  +랩탑형:명:1
  +랬:불:1
  +랭귀지:명:1
  +랭크되다:동:3
  +랭킹:명:11
  +량:의:6
  +러너:명:1
  +러닝:명:11
  +러닝샤쓰:명:3
  +러닝셔츠:명:4
  +러미나:명:1
  +러브:명:1
  +러브신:명:2
  +러브호텔:명:1
  +러시:명:1
  +러시아어:명:3
  +러시아워:명:2
  +러시안룰렛:명:2
  +러키:명:1
  +럭비:명:1
  +럭비공:명:1
  +럭비부:명:1
  +런닝구:명:3
  +런치:명:1
  +럼:명:1
  +레:명:2
  +레게:명:76
  +레게스럽다:형:1
  +레깅스:명:1
  +레닌주의:명:2
  +레드카드:명:1
  +레모네이드:명:1
  +레몬:명:22
  +레몬꿀차:명:1
  +레몬밤:명:1
  +레몬주스:명:1
  +레몬티:명:1
  +레미콘:명:2
  +레벨:명:4
  +레볼루션:명:1
  +레블루션:명:1
  +레스토랑:명:30
  +레슨:명:9
  +레슨받다:동:1
  +레슨비:명:7
  +레슨하다:동:2
  +레슬링:명:11
  +레이더:명:5
  +레이더실:명:4
  +레이디:명:28
  +레이스:명:3
  +레이스:명:9
  +레이싱:명:1
  +레이아웃:명:2
  +레이온:명:1
  +레이저:명:18
  +레이크:명:3
  +레일:명:6
  +레일로드:명:1
  +레임덕:명:1
  +레저:명:17
  +레저업:명:1
  +레지:명:8
  +레지던트:명:3
  +레지스터:명:15
  +레코드:명:7
  +레코드판:명:3
  +레크리에이션:명:3
  +레테르:명:2
  +레토릭:명:1
  +레트:명:2
  +레티놀:명:2
  +레퍼토리:명:7
  +레포츠:명:9
  +렌즈:명:35
  +렌트:명:2
  +렌트하다:동:1
  +렌틀:명:1
  +로고:명:1
  +로고스:명:2
  +로그:명:1
  +로드:명:2
  +로드:명:8
  +로드되다:동:1
  +로마법:명:1
  +로마자화:명:1
  +로만포르노:명:1
  +로맨스:명:1
  +로맨스그레이:명:2
  +로맨틱하다:형:4
  +로봇:명:30
  +로비:명:38
  +로비설:명:1
  +로비전:명:3
  +로션:명:3
  +로스구이:명:4
  +로스트:명:4
  +로스트비프:명:1
  +로열박스:명:1
  +로열티:명:4
  +로열패밀리:명:2
  +로제트:명:1
  +로즈메리:명:2
  +로커:명:1
  +로커:명:9
  +로케이션:명:2
  +로켓:명:18
  +로큰롤:명:1
  +로킹체어:명:1
  +로터리:명:17
  +로프:명:6
  +록:명:14
  +록카페:명:24
  +롤:명:7
  +롤러:명:3
  +롤러스케이트:명:3
  +롤러스케이트장:명:2
  +롤링:명:12
  +롤플레잉:명:2
  +롬:명:4
  +롬팩:명:1
  +롱다리:명:1
  +롱스커트:명:1
  +롱테이크:명:2
  +루마니아어과:명:1
  +루머:명:6
  +루블:의:4
  +루블화:명:1
  +루비:명:1
  +루주:명:4
  +루키:명:2
  +루트:명:3
  +루프:명:2
  +루핑:명:2
  +룩앤필:명:1
  +룰:명:8
  +룸:명:48
  +룸메이트:명:6
  +룸살롱:명:18
  +룸펜:명:1
  +류머티즘:명:1
  +륙색:명:2
  +르네상스:명:42
  +르네상스기:명:3
  +르네상스적:관:1
  +리:의:1
  +리:의:108
  +리:의:2
  +리:의:57
  +리그:명:52
  +리그전:명:1
  +리기다소나무:명:1
  +리니어:명:16
  +리더:명:4
  +리더십:명:8
  +리드:명:3
  +리드미컬하다:형:2
  +리드하다:동:2
  +리듬:명:69
  +리듬감:명:2
  +리듬성:명:1
  +리듬적:관:1
  +리메이크:명:1
  +리모컨:명:1
  +리모트컨트롤러:명:1
  +리무버:명:6
  +리무진:명:2
  +리바이벌하다:동:1
  +리버럴리스트:명:7
  +리버럴하다:형:2
  +리베로:명:2
  +리본:명:6
  +리볼버:명:3
  +리볼버형:명:1
  +리뷰:명:1
  +리비도:명:5
  +리사이틀:명:1
  +리셉션:명:6
  +리스:명:3
  +리스크:명:1
  +리스트:명:5
  +리스팅:명:1
  +리시버:명:7
  +리시브:명:5
  +리시브하다:동:1
  +리아스식:명:3
  +리어액슬:명:1
  +리어카:명:32
  +리얼:명:1
  +리얼리스트:명:5
  +리얼리즘:명:215
  +리얼리즘론:명:24
  +리얼리즘적:관:7
  +리얼리티:명:3
  +리코딩:명:1
  +리콜제:명:1
  +리큐어:명:1
  +리터:의:16
  +리튬:명:1
  +리트로바이러스:명:1
  +리트머스:명:8
  +리포좀:명:1
  +리포터:명:12
  +리포트:명:18
  +리프:명:1
  +리프:명:1
  +리프트:명:2
  +리플레이스:명:1
  +리필라:명:1
  +리허설:명:1
  +린스:명:2
  +린치:명:1
  +린치하다:동:1
  +릴:명:4
  +릴낚시:명:2
  +릴낚싯대:명:1
  +릴레이:명:3
  +림프선:명:1
  +림프종:명:1
  +립:명:10
  +립글로스:명:1
  +립스틱:명:11
  +링:명:12
  +링거:명:1
  +링크하다:동:1
  +마:감:7
  +마:명:1
  +마:명:1
  +마:명:10
  +마:명:2
  +마:부:4
  +마:의:7
  +마감:명:12
  +마감되다:동:10
  +마감일:명:3
  +마감하다:동:17
  +마개:명:5
  +마고자:명:1
  +마구:명:1
  +마구:부:83
  +마구간:명:5
  +마구로:명:2
  +마구리:명:1
  +마구마구:부:2
  +마구잡이:명:6
  +마구잡이식:명:1
  +마귀:명:3
  +마그네사이트:명:1
  +마그네슘:명:3
  +마그네틱:명:7
  +마그네틱테이프:명:1
  +마그마:명:5
  +마나님:명:15
  +마냥:부:36
  +마네킹:명:6
  +마누라:명:61
  +마누라쟁이:명:1
  +마늘:명:129
  +마늘쪽:명:1
  +마니:명:1
  +마니아:명:5
  +마님:명:11
  +마다:명:3
  +마다하다:동:9
  +마담:명:21
  +마담뚜:명:1
  +마당:명:140
  +마당:의:39
  +마당가:명:1
  +마당굿:명:2
  +마당극:명:12
  +마당극적:관:1
  +마당놀이:명:1
  +마당발:명:1
  +마대:명:2
  +마더:명:1
  +마돈나:명:1
  +마디:명:68
  +마디마디:명:6
  +마디풀:명:1
  +마땅:명:5
  +마땅찮다:형:6
  +마땅하다:형:75
  +마땅히:부:42
  +마뜩찮다:형:2
  +마라톤:명:21
  +마려워지다:동:1
  +마력:명:6
  +마력:의:4
  +마련:명:97
  +마련:의:145
  +마련되다:동:88
  +마련하다:동:265
  +마렵다:형:6
  +마루:명:2
  +마루:명:88
  +마루문:명:7
  +마루턱:명:4
  +마루폭:명:1
  +마룻바닥:명:11
  +마르다:동:137
  +마르모트:명:1
  +마르크:의:7
  +마르크스주의:명:31
  +마르크스주의자:명:3
  +마르크스주의적:관:1
  +마르크시즘:명:2
  +마르크화:명:1
  +마른반찬:명:1
  +마른번개:명:1
  +마른오징어:명:2
  +마른입:명:1
  +마른침:명:3
  +마른풀:명:4
  +마른행주:명:5
  +마름:명:5
  +마름모:명:1
  +마름질:명:8
  +마름질하다:동:1
  +마름질하다:동:1
  +마리:의:196
  +마리전:명:1
  +마리화나:명:2
  +마립간:명:1
  +마릿수:명:1
  +마마:명:3
  +마멀레이드:명:1
  +마모:명:1
  +마모되다:동:2
  +마무리:명:53
  +마무리되다:동:18
  +마무리하다:동:21
  +마바리:명:1
  +마법:명:4
  +마법사:명:6
  +마부:명:2
  +마분지:명:1
  +마비:명:26
  +마비되다:동:15
  +마비성:명:5
  +마비시키다:동:10
  +마빡:명:1
  +마사지:명:19
  +마사지걸:명:1
  +마사지하다:동:9
  +마사크:명:1
  +마상의:명:1
  +마상재:명:2
  +마섬유:명:3
  +마성적:명:1
  +마세:명:2
  +마수:명:2
  +마수걸이하다:동:1
  +마술:명:6
  +마술사:명:9
  +마술적:관:1
  +마술적:명:3
  +마스카라:명:9
  +마스카트:명:1
  +마스코트:명:1
  +마스크:명:3
  +마스터:명:4
  +마스터베이션:명:1
  +마스터스:명:4
  +마스터플랜:명:5
  +마스트:명:2
  +마시다:동:532
  +마실:명:2
  +마약:명:42
  +마약상:명:1
  +마약적:명:1
  +마오이즘:명:1
  +마왕:명:1
  +마요네즈:명:16
  +마우스:명:12
  +마우스:명:3
  +마운드:명:2
  +마을:명:430
  +마을굿:명:4
  +마음:명:1,206
  +마음가짐:명:32
  +마음고생:명:2
  +마음껏:부:39
  +마음대로:부:71
  +마음먹다:동:44
  +마음속:명:98
  +마음씨:명:23
  +마음잡다:동:3
  +마이너스:명:7
  +마이동풍:명:1
  +마이컴:명:1
  +마이크:명:52
  +마이크로:명:6
  +마이크로그램:의:2
  +마이크로칩:명:1
  +마이크로컴퓨터:명:4
  +마이크로코드:명:1
  +마이크로프로그래밍:명:2
  +마이크로프로세서:명:10
  +마인드:명:8
  +마일:의:10
  +마장:의:2
  +마저:부:11
  +마적단:명:3
  +마전:명:2
  +마주:부:96
  +마주치다:동:53
  +마주하다:동:12
  +마중:명:18
  +마중객:명:2
  +마중하다:동:2
  +마지기:의:10
  +마지막:명:345
  +마지못하다:형:20
  +마지않다:보:6
  +마직물:명:7
  +마진:명:4
  +마진율:명:1
  +마차:명:12
  +마찬가지:명:389
  +마찰:명:37
  +마찰력:명:7
  +마찰적:명:1
  +마천루:명:4
  +마취:명:10
  +마취과:명:2
  +마취제:명:2
  +마치:명:2
  +마치:부:367
  +마치다:동:306
  +마침:부:95
  +마침내:부:151
  +마침표:명:5
  +마카로니:명:1
  +마카로니웨스턴:명:5
  +마케터:명:2
  +마케팅:명:109
  +마케팅부:명:1
  +마케팅실:명:1
  +마케팅실장:명:1
  +마켓:명:10
  +마크:명:37
  +마크제:명:1
  +마크하다:동:9
  +마키:명:1
  +마타리:명:2
  +마타리꽃:명:4
  +마트:명:1
  +마파두부:명:1
  +마포:명:2
  +마피아:명:5
  +마후라:명:1
  +마흔:관:4
  +마흔:수:16
  +마흔넷:수:1
  +마흔다섯:관:1
  +마흔다섯:수:1
  +마흔둘:수:1
  +마흔아홉:관:1
  +마흔여섯:수:1
  +마흔일곱:수:1
  +막:명:10
  +막:명:42
  +막:부:122
  +막:부:198
  +막:부:2
  +막:의:15
  +막가다:동:2
  +막강:명:2
  +막강하다:형:25
  +막걸리:명:43
  +막내:명:45
  +막내둥이:명:1
  +막내딸:명:6
  +막내아들:명:5
  +막냇삼촌:명:4
  +막노동:명:1
  +막노동자:명:1
  +막노동하다:동:1
  +막다:동:312
  +막다르다:형:8
  +막대:명:22
  +막대그래프:명:1
  +막대기:명:12
  +막대기비:명:1
  +막대기형:명:1
  +막대자석:명:3
  +막대치:명:1
  +막대하다:형:45
  +막돼먹다:형:3
  +막둥이:명:3
  +막론하다:동:25
  +막료:명:1
  +막막하다:형:1
  +막막하다:형:24
  +막막해지다:동:7
  +막말:명:6
  +막말하다:동:2
  +막무가내:명:14
  +막바지:명:13
  +막벗하다:동:1
  +막사:명:8
  +막상:부:53
  +막상막하:명:1
  +막아서다:동:9
  +막역하다:형:1
  +막연하다:형:41
  +막연히:부:7
  +막일:명:8
  +막일꾼:명:1
  +막중하다:형:13
  +막집:명:1
  +막차:명:3
  +막창자:명:1
  +막판:명:30
  +막하:명:1
  +막혀하다:동:1
  +막후:명:3
  +막히다:동:171
  +막힘없이:부:1
  +만:관:23
  +만:관:51
  +만:명:5
  +만:수:19
  +만:의:272
  +만:의:28
  +만가닥버섯:명:1
  +만각:명:1
  +만감:명:6
  +만개되다:동:1
  +만개시키다:동:1
  +만개하다:동:1
  +만개형:명:1
  +만고:명:1
  +만국:명:2
  +만군:명:1
  +만근:명:2
  +만기:명:20
  +만기일:명:1
  +만끽시키다:동:1
  +만끽하다:동:17
  +만나다:동:1,126
  +만나지다:동:1
  +만날:부:42
  +만날만날:부:2
  +만남:명:83
  +만년:명:2
  +만년:명:6
  +만년필:명:11
  +만능:명:17
  +만능인:명:1
  +만능주의:명:1
  +만다린:명:1
  +만당:명:1
  +만돌린:명:1
  +만두:명:7
  +만두소:명:2
  +만둣국:명:2
  +만들다:동:2,151
  +만들어지다:동:211
  +만땅:명:1
  +만료:명:4
  +만료되다:동:7
  +만류:명:6
  +만류하다:동:6
  +만리타국:명:1
  +만리타향:명:1
  +만만세:감:1
  +만만찮다:형:5
  +만만하다:형:1
  +만만하다:형:51
  +만만히:부:1
  +만면:명:4
  +만면하다:형:2
  +만무:명:2
  +만무하다:형:9
  +만물:명:40
  +만물박사:명:2
  +만물상:명:2
  +만민:명:1
  +만반:명:3
  +만발:명:1
  +만발하다:동:6
  +만방:명:1
  +만방:명:2
  +만병:명:3
  +만병통치:명:2
  +만병통치약:명:1
  +만사:명:10
  +만사천:관:1
  +만사형통:명:3
  +만삭:명:6
  +만삼천:관:2
  +만삼천팔백:관:1
  +만상:명:2
  +만석:명:1
  +만선:명:1
  +만선:명:3
  +만선하다:동:1
  +만성:명:30
  +만성적:관:1
  +만성적:명:6
  +만성화되다:동:3
  +만세:감:2
  +만세:명:16
  +만수위:명:1
  +만숙형:명:1
  +만시지탄:명:2
  +만신:명:1
  +만신:명:2
  +만신창이:명:3
  +만약:명:201
  +만연:명:2
  +만연되다:동:12
  +만연체형:명:1
  +만연하다:동:12
  +만오천:관:3
  +만용:명:3
  +만우절:명:3
  +만원:명:8
  +만월:명:4
  +만유인력:명:2
  +만육천:관:1
  +만인:명:7
  +만일:명:127
  +만입부:명:2
  +만장:명:1
  +만장:명:1
  +만장일치:명:4
  +만재하다:동:1
  +만적이다:동:2
  +만전:명:4
  +만점:명:30
  +만져지다:동:5
  +만조:명:3
  +만족:명:37
  +만족감:명:11
  +만족도:명:12
  +만족되다:동:1
  +만족스러워하다:동:1
  +만족스럽다:형:22
  +만족스레:부:1
  +만족시키다:동:16
  +만족하다:동:29
  +만족하다:형:52
  +만족해하다:동:5
  +만좌중:명:1
  +만지다:동:85
  +만지작거리다:동:15
  +만지작이다:동:1
  +만찬:명:10
  +만찬석:명:1
  +만찬석상:명:1
  +만찬장:명:1
  +만천하:명:4
  +만취:명:3
  +만취되다:동:2
  +만취하다:동:3
  +만치:의:2
  +만큼:의:457
  +만평:명:1
  +만평집:명:1
  +만하다:보:451
  +만해지다:동:2
  +만행:명:4
  +만호:명:2
  +만화:명:106
  +만화가:명:16
  +만화경:명:1
  +만화경적:명:1
  +만화방:명:3
  +만화지:명:1
  +만화책:명:7
  +만홧가게:명:6
  +만회:명:3
  +만회하다:동:9
  +많다:형:2,697
  +많아지다:동:90
  +많이:부:1,491
  +맏딸:명:12
  +맏며느리:명:4
  +맏사위:명:2
  +맏손자:명:1
  +맏아들:명:5
  +맏이:명:7
  +맏자식:명:1
  +맏형:명:2
  +말:명:1
  +말:명:4,286
  +말:명:81
  +말:의:15
  +말:의:280
  +말갈기:명:1
  +말갛다:형:2
  +말개지다:동:1
  +말경:명:1
  +말고기:명:2
  +말고삐:명:2
  +말괄량이:명:1
  +말굽파개:명:1
  +말굽형:명:1
  +말귀:명:4
  +말기:명:65
  +말기적:관:1
  +말꼬리:명:7
  +말끄러미:부:3
  +말끔:부:1
  +말끔:부:3
  +말끔하다:형:5
  +말끔해지다:동:1
  +말끔히:부:20
  +말끝:명:22
  +말년:명:7
  +말다:동:34
  +말다:동:369
  +말다:동:5
  +말다:보:1,135
  +말다툼:명:4
  +말단:명:15
  +말단적:명:1
  +말대꾸:명:1
  +말대꾸하다:동:1
  +말대답:명:1
  +말똥가리:명:2
  +말똥거리다:동:2
  +말똥말똥:부:2
  +말똥말똥해지다:동:1
  +말뚝:명:17
  +말뜻:명:12
  +말띠:명:2
  +말라깽이:명:1
  +말라리아:명:2
  +말라붙다:동:3
  +말랑말랑:부:1
  +말려들다:동:14
  +말로:명:1
  +말리다:동:50
  +말리다:동:63
  +말리다:동:7
  +말리우다:동:1
  +말머리:명:1
  +말목:명:2
  +말문:명:18
  +말미:명:4
  +말미:명:6
  +말미암다:동:45
  +말발:명:1
  +말발굽:명:3
  +말발도리:명:1
  +말버릇:명:5
  +말번:명:1
  +말법:명:1
  +말벗:명:3
  +말복:명:1
  +말본:명:1
  +말사:명:1
  +말살:명:2
  +말살되다:동:1
  +말살시키다:동:1
  +말살하다:동:3
  +말상:명:2
  +말석:명:1
  +말세:명:7
  +말소:명:2
  +말소되다:동:2
  +말소리:명:10
  +말속:명:3
  +말솜씨:명:3
  +말수:명:3
  +말실수:명:4
  +말싸움:명:4
  +말썽:명:40
  +말썽꾸러기:명:3
  +말쑥하다:형:5
  +말씀:명:272
  +말씀드리다:동:64
  +말씀하다:동:165
  +말씨:명:17
  +말아먹다:동:3
  +말없이:부:65
  +말엽:명:8
  +말이:명:5
  +말일:명:1
  +말장난:명:6
  +말장난하다:동:1
  +말재주:명:2
  +말조심:명:3
  +말조심하다:동:3
  +말종:명:1
  +말짝:명:1
  +말짱:부:8
  +말짱하다:형:6
  +말초:명:8
  +말초적:명:3
  +말총:명:1
  +말투:명:31
  +말투성이:명:2
  +말품:명:1
  +말하다:동:3,738
  +말하여지다:동:3
  +말해지다:동:5
  +말허리:명:1
  +맑다:형:210
  +맑아지다:동:10
  +맑은대쑥:명:2
  +맘:명:50
  +맘고생시키다:동:1
  +맘껏:부:8
  +맘대로:부:16
  +맘먹다:동:2
  +맘모스:명:1
  +맘보:명:1
  +맘보바지:명:1
  +맘씨:명:3
  +맙소사:감:4
  +맛:명:503
  +맛깔:명:1
  +맛깔스럽다:형:2
  +맛깔스레:부:1
  +맛나다:형:5
  +맛보기:명:2
  +맛보다:동:62
  +맛봉오리:명:1
  +맛살:명:1
  +맛술:명:1
  +맛없다:형:8
  +맛있다:형:219
  +맛있어지다:동:1
  +맛조개:명:2
  +망:명:13
  +망:명:3
  +망가뜨리다:동:14
  +망가적:관:1
  +망가지다:동:23
  +망각:명:7
  +망각되다:동:2
  +망각적:명:1
  +망각하다:동:12
  +망간:명:2
  +망개:명:2
  +망건:명:1
  +망건짜리:명:1
  +망국:명:5
  +망국적:관:5
  +망국적:명:2
  +망그러지다:동:2
  +망극하다:형:1
  +망나니:명:1
  +망나니짓:명:1
  +망념:명:2
  +망동:명:5
  +망둑엇과:명:2
  +망라하다:동:18
  +망령:명:27
  +망령:명:4
  +망령되이:부:1
  +망루:명:5
  +망막:명:1
  +망막증:명:1
  +망망대해:명:4
  +망망하다:형:5
  +망명:명:10
  +망명시키다:동:1
  +망명자:명:1
  +망명지:명:1
  +망명하다:동:7
  +망발:명:15
  +망부석:명:1
  +망사:명:1
  +망사:명:1
  +망상:명:14
  +망상가:명:1
  +망새:명:3
  +망설여지다:동:2
  +망설이다:동:58
  +망설임:명:7
  +망성:명:1
  +망신:명:10
  +망신당하다:동:1
  +망신스럽다:형:3
  +망신시키다:동:2
  +망신하다:동:1
  +망아지:명:7
  +망언:명:6
  +망연자실:명:2
  +망연자실하다:동:5
  +망연하다:형:2
  +망연히:부:6
  +망원경:명:38
  +망자:명:3
  +망정:의:20
  +망조:명:1
  +망종:명:1
  +망종:명:2
  +망중한:명:1
  +망창히:부:1
  +망처:명:1
  +망쳐지다:동:1
  +망초:명:4
  +망치:명:11
  +망치다:동:37
  +망태:명:7
  +망태기:명:3
  +망토:명:1
  +망퉁:명:1
  +망하다:동:65
  +망향:명:3
  +맞고소:명:1
  +맞고함:명:1
  +맞교대:명:1
  +맞다:동:148
  +맞다:동:275
  +맞다:동:517
  +맞닥뜨리다:동:9
  +맞닿다:동:8
  +맞대거리:명:3
  +맞대결:명:2
  +맞대다:동:15
  +맞대응:명:1
  +맞대응하다:동:2
  +맞대질:명:2
  +맞들다:동:3
  +맞먹다:동:21
  +맞물리다:동:31
  +맞바꾸다:동:1
  +맞바꾸어지다:동:1
  +맞바람:명:3
  +맞받다:동:3
  +맞받아치다:동:2
  +맞버티다:동:1
  +맞벌이:명:12
  +맞벌이하다:동:1
  +맞부닥치다:동:1
  +맞부딪다:동:1
  +맞부딪치다:동:5
  +맞부딪히다:동:2
  +맞불:명:1
  +맞붙다:동:7
  +맞붙이다:동:1
  +맞비비다:동:1
  +맞서다:동:74
  +맞선:명:2
  +맞소리:명:1
  +맞수:명:5
  +맞아들이다:동:5
  +맞아떨어지다:동:9
  +맞은쪽:명:1
  +맞은편:명:34
  +맞이하다:동:61
  +맞잡다:동:5
  +맞장구:명:10
  +맞장구치다:동:1
  +맞절:명:2
  +맞체결:명:1
  +맞체결되다:동:1
  +맞추다:동:314
  +맞추어지다:동:5
  +맞춤:명:4
  +맞춤법:명:5
  +맞춤하다:형:1
  +맞춰지다:동:4
  +맞통하다:동:1
  +맞히다:동:4
  +맞히다:동:9
  +맡:의:1
  +맡겨지다:동:13
  +맡기다:동:150
  +맡다:동:343
  +맡다:동:43
  +맡아보다:동:3
  +맡아하다:동:3
  +매:관:10
  +매:명:33
  +매:의:2
  +매가리:명:1
  +매가릿간:명:1
  +매각:명:55
  +매각되다:동:1
  +매각설:명:2
  +매각하다:동:20
  +매개:명:35
  +매개되다:동:8
  +매개적:관:2
  +매개체:명:4
  +매개충:명:1
  +매개하다:동:4
  +매겨지다:동:9
  +매관매직:명:1
  +매국:명:1
  +매국노:명:5
  +매기:명:1
  +매기다:동:34
  +매끄러워지다:동:1
  +매끄럽다:형:17
  +매끈하다:형:5
  +매끈해지다:동:1
  +매끼:명:1
  +매끼:부:1
  +매너:명:40
  +매년:명:1
  +매년:부:76
  +매뉴얼:명:3
  +매뉴팩처:명:1
  +매뉴팩처적:명:1
  +매니저:명:7
  +매니지먼트:명:2
  +매니큐어:명:2
  +매다:동:49
  +매다:동:8
  +매달:부:30
  +매달다:동:24
  +매달리다:동:112
  +매도:명:1
  +매도:명:3
  +매도금:명:1
  +매도당하다:동:1
  +매도설:명:1
  +매도자:명:1
  +매도하다:동:1
  +매도하다:동:10
  +매독:명:1
  +매듭:명:8
  +매듭지어지다:동:6
  +매듭짓다:동:13
  +매력:명:89
  +매력적:관:1
  +매력적:명:9
  +매료되다:동:6
  +매료시키다:동:1
  +매립:명:2
  +매립장:명:5
  +매립지:명:2
  +매만지다:동:2
  +매맛:명:1
  +매매:명:15
  +매매되다:동:2
  +매매춘:명:69
  +매매하다:동:3
  +매머드:명:6
  +매명하다:동:1
  +매몰:명:1
  +매몰되다:동:10
  +매몰시키다:동:1
  +매몰자:명:1
  +매몰차다:형:1
  +매무새:명:3
  +매물:명:27
  +매미:명:10
  +매번:부:15
  +매복:명:1
  +매부:명:3
  +매사:명:19
  +매사:부:1
  +매상:명:6
  +매석:명:2
  +매설:명:5
  +매설관:명:1
  +매설물:명:4
  +매설하다:동:1
  +매섭다:형:12
  +매수:명:1
  +매수:명:14
  +매수당하다:동:2
  +매수량:명:1
  +매수설:명:1
  +매수세:명:3
  +매수하다:동:7
  +매스:명:17
  +매스컴:명:21
  +매시간:명:1
  +매시간:부:1
  +매식:명:1
  +매실:명:3
  +매양:부:1
  +매여지다:동:1
  +매연:명:16
  +매우:부:500
  +매운맛:명:3
  +매운탕:명:10
  +매워지다:동:1
  +매월:부:14
  +매음굴:명:1
  +매이다:동:15
  +매일:명:25
  +매일:부:181
  +매일매일:명:6
  +매일매일:부:9
  +매일반:명:3
  +매입:명:37
  +매입비:명:1
  +매입자:명:2
  +매입하다:동:22
  +매작지근하다:형:1
  +매장:명:1
  +매장:명:64
  +매장되다:동:7
  +매장량:명:4
  +매장시키다:동:2
  +매장하다:동:1
  +매재:명:1
  +매점:명:2
  +매점:명:8
  +매정하다:형:1
  +매제:명:1
  +매주:명:2
  +매주:부:24
  +매지구름:명:1
  +매지근하다:형:1
  +매직:명:1
  +매직:명:2
  +매직펜:명:1
  +매진하다:동:1
  +매진하다:동:6
  +매질:명:4
  +매질:명:7
  +매질하다:동:1
  +매체:명:171
  +매체적:관:4
  +매초:부:1
  +매춘:명:119
  +매춘:명:2
  +매춘하다:동:1
  +매출:명:38
  +매출량:명:1
  +매출액:명:32
  +매치:명:2
  +매치법:명:1
  +매캐하다:형:5
  +매콤:명:1
  +매콤하다:형:4
  +매크로:명:1
  +매타작:명:1
  +매트:명:5
  +매트리스:명:2
  +매판:명:6
  +매판성:명:1
  +매판화:명:2
  +매표:명:1
  +매표:명:6
  +매표구:명:3
  +매표소:명:9
  +매표창구:명:2
  +매한가지:명:2
  +매형:명:3
  +매혹:명:3
  +매혹되다:동:3
  +매혹적:명:3
  +매혹하다:동:2
  +매화:명:4
  +매화꽃:명:1
  +매화나무:명:2
  +매화말발도리:명:3
  +매화말발도리나무:명:1
  +매회:부:1
  +맥:명:35
  +맥동:명:1
  +맥락:명:71
  +맥박:명:8
  +맥반석:명:2
  +맥상:명:2
  +맥시:명:3
  +맥없다:형:2
  +맥없이:부:1
  +맥없이:부:9
  +맥주:명:73
  +맥주병:명:13
  +맥주홀:명:2
  +맥줏집:명:4
  +맥진:명:1
  +맥진하다:동:1
  +맨:관:128
  +맨:명:4
  +맨:부:2
  +맨돈:명:1
  +맨드라미:명:6
  +맨들다:동:2
  +맨들맨들하다:형:1
  +맨땅:명:2
  +맨몸:명:2
  +맨몸뚱이:명:1
  +맨바닥:명:1
  +맨발:명:12
  +맨살:명:3
  +맨상투:명:1
  +맨션:명:1
  +맨션아파트:명:1
  +맨소주:명:2
  +맨손:명:10
  +맨송맨송하다:형:4
  +맨입:명:1
  +맨주먹:명:2
  +맨틀:명:6
  +맨홀:명:2
  +맴:명:5
  +맴돌다:동:23
  +맴맴:부:3
  +맵다:형:29
  +맵디맵다:형:1
  +맵시:명:7
  +맵짜다:형:2
  +맷돌:명:18
  +맷방석:명:1
  +맹글다:동:2
  +맹꽁이:명:1
  +맹독:명:3
  +맹독성:명:1
  +맹랑하다:형:3
  +맹렬:명:1
  +맹렬하다:형:6
  +맹렬해지다:동:1
  +맹렬히:부:5
  +맹모삼천:명:1
  +맹목:명:4
  +맹목적:관:3
  +맹목적:명:20
  +맹물:명:2
  +맹비난하다:동:1
  +맹세:명:3
  +맹세코:부:4
  +맹세하다:동:7
  +맹수:명:5
  +맹신하다:동:4
  +맹아:명:1
  +맹아:명:2
  +맹아론:명:1
  +맹아적:관:1
  +맹원:명:1
  +맹위:명:2
  +맹인:명:4
  +맹장:명:1
  +맹장염:명:2
  +맹점:명:3
  +맹종하다:동:4
  +맹주:명:1
  +맹주국:명:1
  +맹추:명:3
  +맹추격:명:1
  +맹탕:명:1
  +맹탕:부:2
  +맹폭하다:동:1
  +맹호:명:1
  +맹호출림형:명:1
  +맹호형:명:1
  +맹활약:명:1
  +맹활약상:명:1
  +맹휴:명:1
  +맺다:동:135
  +맺어지다:동:14
  +맺음말:명:2
  +맺히다:동:33
  +먈갛다:형:1
  +머:감:2
  +머:대:3
  +머그잔:명:1
  +머금다:동:30
  +머나멀다:형:12
  +머루:명:1
  +머리:명:657
  +머리글자:명:1
  +머리기사:명:5
  +머리꼭지:명:1
  +머리끄덩이:명:1
  +머리끝:명:11
  +머리띠:명:2
  +머리말:명:16
  +머리맡:명:17
  +머리뼈:명:4
  +머리숱:명:2
  +머리채:명:9
  +머리카락:명:49
  +머리칼:명:32
  +머리털:명:9
  +머리통:명:8
  +머리핀:명:1
  +머리하다:동:1
  +머릿결:명:2
  +머릿기름:명:3
  +머릿돌:명:4
  +머릿속:명:100
  +머릿수:명:4
  +머릿수건:명:2
  +머무르다:동:104
  +머물다:동:87
  +머뭇거리다:동:25
  +머뭇머뭇거리다:동:1
  +머뭇머뭇하다:동:1
  +머뭇하다:동:1
  +머스터드:명:1
  +머스터드소스:명:5
  +머슴:명:14
  +머슴살이:명:4
  +머슴애:명:1
  +머시기:대:1
  +머신:명:3
  +머쓱하다:형:4
  +머쓱해지다:동:4
  +머위:명:1
  +머저리:명:2
  +머지:명:18
  +머지않다:형:26
  +머지하다:동:6
  +머큐로크롬:명:2
  +머핀:명:1
  +먹:명:10
  +먹거리:명:26
  +먹고살다:동:33
  +먹구름:명:8
  +먹구름장:명:1
  +먹다:동:1,874
  +먹다:동:15
  +먹다:보:50
  +먹먹하다:형:4
  +먹먹해지다:동:1
  +먹물:명:7
  +먹새:명:1
  +먹선:명:1
  +먹성딸기:명:1
  +먹을거리:명:1
  +먹음직스럽다:형:10
  +먹음직하다:형:1
  +먹이:명:54
  +먹이다:동:106
  +먹이저장:명:1
  +먹자골목:명:2
  +먹자판:명:1
  +먹장구름:명:5
  +먹칠:명:1
  +먹칠하다:동:2
  +먹통:명:2
  +먹혀들다:동:7
  +먹히다:동:19
  +먼눈:명:1
  +먼동:명:3
  +먼발치:명:4
  +먼빛:명:1
  +먼산바라기:명:1
  +먼저:명:10
  +먼저:부:669
  +먼젓번:명:5
  +먼지:명:70
  +먼지떨이:명:1
  +먼지투성이:명:1
  +멀거니:부:3
  +멀겋다:형:4
  +멀게지다:동:1
  +멀다:동:10
  +멀다:형:301
  +멀뚱거리다:동:1
  +멀뚱멀뚱:부:3
  +멀뚱멀뚱하다:형:1
  +멀뚱멀뚱히:부:1
  +멀뚱하다:형:3
  +멀뚱히:부:4
  +멀리:부:222
  +멀리뛰기:명:10
  +멀리멀리:부:2
  +멀리하다:동:14
  +멀미:명:4
  +멀쑥하다:형:4
  +멀어지다:동:64
  +멀쩡하다:형:23
  +멀쩡히:부:1
  +멀찌감치:부:15
  +멀찍이:부:8
  +멀찍하다:형:1
  +멀칭:명:3
  +멀티:명:2
  +멀티미디어:명:6
  +멀티미디어화:명:1
  +멈추다:동:161
  +멈추어지다:동:1
  +멈칫:부:23
  +멈칫거리다:동:4
  +멈칫하다:동:18
  +멋:명:34
  +멋대가리:명:1
  +멋대로:부:11
  +멋모르다:동:2
  +멋스럽다:형:2
  +멋없다:형:1
  +멋있다:형:35
  +멋쟁이:명:10
  +멋지다:형:60
  +멋쩍다:형:12
  +멋쩍어지다:동:1
  +멋쩍어하다:동:2
  +멍:명:8
  +멍게:명:2
  +멍군:명:1
  +멍들다:동:6
  +멍멍:부:2
  +멍멍탕:명:1
  +멍멍하다:형:2
  +멍석:명:4
  +멍에:명:1
  +멍에:명:4
  +멍울:명:1
  +멍울멍울:부:1
  +멍청:명:1
  +멍청이:명:7
  +멍청하다:형:20
  +멍청해지다:동:2
  +멍청히:부:9
  +멍텅구리:명:20
  +멍하니:부:21
  +멍하다:형:12
  +멍해지다:동:5
  +멍히:부:2
  +멎다:동:33
  +메:대:1
  +메가:의:3
  +메가바이트:의:5
  +메가비피에스:의:2
  +메가와트:의:5
  +메가폰:명:3
  +메가헤르츠:의:10
  +메기:명:4
  +메뉴:명:37
  +메뉴판:명:4
  +메다:동:29
  +메다:동:7
  +메다꽂다:동:1
  +메다꽂히다:동:1
  +메달:명:8
  +메달리스트:명:1
  +메디컬:명:1
  +메뚜기:명:12
  +메롱:감:1
  +메리지:명:1
  +메리트:명:2
  +메마르다:형:22
  +메모:명:23
  +메모리:명:9
  +메모지:명:4
  +메모하다:동:5
  +메밀:명:7
  +메밀국수:명:1
  +메밀껍질:명:1
  +메밀꽃:명:9
  +메밀나물:명:1
  +메밀묵:명:8
  +메밀밭:명:4
  +메밥:명:2
  +메세나:명:3
  +메수수:명:1
  +메스:명:4
  +메스껍다:형:2
  +메슥거리다:동:1
  +메시아:명:12
  +메시아니즘:명:1
  +메시지:명:57
  +메시포테이토:명:2
  +메아리:명:8
  +메아리치다:동:2
  +메어붙이다:동:1
  +메어지다:동:1
  +메우다:동:52
  +메워지다:동:2
  +메이다:동:2
  +메이저:명:5
  +메이커:명:14
  +메이크업:명:22
  +메이크업베이스:명:2
  +메이킹:명:1
  +메인:명:7
  +메인스타디움:명:1
  +메인프레임:명:1
  +메일:명:4
  +메주:명:12
  +메주콩:명:1
  +메줏가루:명:1
  +메질꾼:명:3
  +메치다:동:1
  +메카:명:1
  +메커니즘:명:23
  +메탄:명:4
  +메탄가스:명:3
  +메탄올:명:1
  +메탈:명:4
  +메토끼:명:3
  +멕이다:동:1
  +멕히다:동:1
  +멘트:명:12
  +멘트하다:동:1
  +멜라닌:명:1
  +멜랑콜리:명:1
  +멜로:명:1
  +멜로드라마:명:2
  +멜로드라마적:명:1
  +멜로디:명:11
  +멜론:명:4
  +멜빵:명:1
  +멜빵바지:명:2
  +멤버:명:33
  +멤버십:명:2
  +멥쌀:명:4
  +멧돼지:명:1
  +멧밭쥐:명:1
  +멧비둘기:명:3
  +멧새:명:2
  +며느리:명:71
  +며느릿감:명:3
  +며칠:명:219
  +멱:명:1
  +멱:명:22
  +멱살:명:27
  +멱살잡이허다:동:1
  +멱서리:명:1
  +멱아지:명:1
  +면:명:339
  +면:명:34
  +면:명:4
  +면:명:48
  +면구스럽다:형:2
  +면담:명:33
  +면담하다:동:6
  +면도:명:2
  +면도날:명:2
  +면도사:명:1
  +면도칼:명:1
  +면류관:명:1
  +면리:명:2
  +면면:명:7
  +면면히:부:8
  +면모:명:24
  +면목:명:9
  +면민:명:1
  +면밀하다:형:10
  +면밀히:부:10
  +면바지:명:2
  +면박:명:6
  +면박하다:동:1
  +면발:명:1
  +면복:명:1
  +면봉:명:5
  +면사무소:명:4
  +면사포:명:3
  +면상:명:1
  +면섬유:명:2
  +면세:명:3
  +면세점:명:2
  +면세점:명:3
  +면세품:명:7
  +면수:명:2
  +면역:명:9
  +면역되다:동:2
  +면역성:명:2
  +면역시키다:동:1
  +면역증:명:2
  +면장:명:5
  +면재:명:2
  +면적:명:52
  +면적률:명:1
  +면전:명:1
  +면접:명:16
  +면접시험:명:1
  +면접하다:동:1
  +면제:명:15
  +면제되다:동:4
  +면제받다:동:4
  +면제자:명:1
  +면제하다:동:5
  +면조:명:2
  +면조권:명:2
  +면조권론:명:1
  +면조권설:명:1
  +면조받다:동:1
  +면종복배:명:1
  +면죄부:명:6
  +면주:명:1
  +면직:명:5
  +면직물:명:8
  +면찬:명:1
  +면책:명:5
  +면책금:명:1
  +면책되다:동:1
  +면천:명:3
  +면청:명:1
  +면포:명:8
  +면하다:동:1
  +면하다:동:57
  +면학:명:1
  +면허:명:10
  +면허증:명:7
  +면화:명:7
  +면회:명:21
  +면회객:명:1
  +면회실:명:1
  +면회하다:동:3
  +멸:명:1
  +멸망:명:10
  +멸망당하다:동:1
  +멸망시키다:동:6
  +멸망하다:동:15
  +멸문지화:명:1
  +멸사:명:1
  +멸사봉공하다:동:1
  +멸성제:명:3
  +멸시:명:6
  +멸시당하다:동:1
  +멸시받다:동:1
  +멸시하다:동:5
  +멸실:명:1
  +멸실되다:동:1
  +멸종:명:5
  +멸종되다:동:1
  +멸종시키다:동:1
  +멸종하다:동:1
  +멸치:명:35
  +멸치조림:명:1
  +멸하다:동:5
  +몃:수:1
  +명:명:14
  +명:명:3
  +명:명:9
  +명:의:1,743
  +명감독:명:1
  +명강의:명:1
  +명건축:명:1
  +명경:명:1
  +명곡:명:2
  +명관:명:1
  +명궁:명:1
  +명기되다:동:1
  +명기하다:동:2
  +명단:명:28
  +명당:명:24
  +명도:명:2
  +명동:명:1
  +명란:명:1
  +명란젓:명:5
  +명랑:명:2
  +명랑하다:형:21
  +명랑해지다:동:2
  +명령:명:93
  +명령되다:동:1
  +명령서:명:1
  +명령어:명:31
  +명령제:명:1
  +명령하다:동:11
  +명료하다:형:17
  +명료화:명:1
  +명륜당:명:1
  +명리:명:4
  +명망가:명:1
  +명맥:명:4
  +명멸하다:동:3
  +명명되다:동:5
  +명명하다:동:6
  +명목:명:36
  +명문:명:16
  +명문:명:2
  +명문거족:명:2
  +명문고:명:2
  +명문대:명:5
  +명문대가:명:1
  +명문대생:명:1
  +명문장가:명:1
  +명문화:명:1
  +명물:명:7
  +명민하다:형:1
  +명백하다:형:50
  +명백해지다:동:3
  +명백히:부:33
  +명복:명:4
  +명부:명:1
  +명부:명:5
  +명부식:명:1
  +명부전:명:1
  +명분:명:52
  +명사:명:2
  +명사:명:21
  +명사적:명:1
  +명산:명:5
  +명산지:명:2
  +명상:명:10
  +명상기:명:2
  +명상록:명:1
  +명상적:관:1
  +명상하다:동:2
  +명색:명:1
  +명색:명:15
  +명석하다:형:4
  +명석화:명:1
  +명선수:명:1
  +명성:명:35
  +명세:명:4
  +명세서:명:4
  +명소:명:13
  +명수:명:2
  +명수필:명:1
  +명승:명:1
  +명승부:명:2
  +명승지:명:1
  +명시:명:1
  +명시:명:2
  +명시도:명:1
  +명시되다:동:7
  +명시적:명:1
  +명시하다:동:8
  +명실:명:7
  +명실공히:부:1
  +명실상부하다:형:6
  +명심:명:1
  +명심시키다:동:1
  +명심하다:동:32
  +명아주:명:3
  +명암:명:2
  +명약:명:2
  +명언:명:6
  +명연설가:명:1
  +명예:명:87
  +명예롭다:형:3
  +명예박사:명:1
  +명예심:명:1
  +명예욕:명:1
  +명예퇴직:명:1
  +명왕성:명:7
  +명의:명:5
  +명의:명:56
  +명의자:명:2
  +명인:명:4
  +명일:명:1
  +명작:명:19
  +명작극:명:1
  +명장:명:1
  +명장:명:6
  +명저:명:1
  +명절:명:50
  +명절날:명:3
  +명정:명:1
  +명정:명:1
  +명제:명:32
  +명조:명:10
  +명조체:명:3
  +명주:명:1
  +명주:명:1
  +명주:명:18
  +명주옷:명:1
  +명중:명:2
  +명중시키다:동:8
  +명증성:명:2
  +명진행자:명:1
  +명차:명:1
  +명찰:명:7
  +명창:명:2
  +명철하다:형:1
  +명치:명:7
  +명치끝:명:4
  +명칭:명:64
  +명칼럼니스트:명:1
  +명콤비:명:4
  +명쾌하다:형:20
  +명쾌히:부:2
  +명태:명:9
  +명태잡이:명:2
  +명토:명:1
  +명패:명:6
  +명포:명:1
  +명품:명:1
  +명품관:명:1
  +명품점:명:1
  +명하다:동:3
  +명함:명:16
  +명해지다:동:1
  +명화:명:5
  +명확하다:형:49
  +명확히:부:23
  +몇:관:1,024
  +몇:수:53
  +몇만:관:7
  +몇몇:관:103
  +몇몇:수:13
  +몇백:관:13
  +몇백만:관:2
  +몇백억:수:2
  +몇십:관:23
  +몇십만:관:5
  +몇십억:관:2
  +몇억:관:1
  +몇억:수:1
  +몇억만:관:1
  +몇억천만:관:1
  +몇천:관:8
  +몇천만:관:2
  +몇천억:관:4
  +모:관:32
  +모:대:104
  +모:명:1
  +모:명:1
  +모:명:12
  +모:명:12
  +모가지:명:6
  +모계:명:8
  +모계제:명:1
  +모골:명:1
  +모공:명:24
  +모과:명:1
  +모관:명:1
  +모교:명:10
  +모국:명:1
  +모국어:명:5
  +모권제:명:1
  +모금:명:12
  +모금:의:37
  +모금되다:동:1
  +모금하다:동:2
  +모기:명:26
  +모기구:명:1
  +모기떼:명:1
  +모기약:명:3
  +모기업:명:6
  +모기장:명:5
  +모기향:명:3
  +모깃불:명:9
  +모나다:형:6
  +모내기:명:3
  +모내다:동:1
  +모냥:명:2
  +모녀:명:13
  +모노드라마:명:3
  +모노크롬:명:1
  +모노크리스털:명:1
  +모뉴먼트:명:1
  +모니터:명:69
  +모니터하다:동:1
  +모닝:명:4
  +모닝커피:명:1
  +모다:부:3
  +모닥불:명:6
  +모닥불가:명:1
  +모더니스트:명:2
  +모더니즘:명:66
  +모더니즘론:명:1
  +모더니티:명:3
  +모던:명:2
  +모던하다:형:2
  +모데라토:명:1
  +모델:명:120
  +모델료:명:3
  +모델링:명:3
  +모뎀:명:3
  +모독:명:4
  +모독하다:동:3
  +모두:명:307
  +모두:부:1,215
  +모두모두:명:1
  +모두모두:부:2
  +모두스비벤디:명:4
  +모두어지다:동:1
  +모둠발:명:4
  +모듈:명:3
  +모든:관:1,239
  +모듬:명:3
  +모듬살이:명:2
  +모듬전:명:1
  +모디파이:명:1
  +모락모락:부:5
  +모란:명:1
  +모래:명:73
  +모래땅:명:3
  +모래무지:명:1
  +모래밭:명:13
  +모래사장:명:10
  +모래성:명:3
  +모래알:명:12
  +모래주머니:명:1
  +모래찜질:명:1
  +모래층:명:1
  +모래톱:명:1
  +모래판:명:1
  +모래펄:명:2
  +모래흙:명:1
  +모랫벌:명:2
  +모략:명:3
  +모략중상:명:1
  +모략하다:동:1
  +모럴:명:1
  +모레:명:11
  +모레:부:4
  +모로:부:14
  +모루:명:7
  +모르다:동:2,218
  +모르쇠:명:1
  +모르핀:명:1
  +모름지기:부:9
  +모리배:명:3
  +모면:명:1
  +모면하다:동:9
  +모멸:명:1
  +모멸감:명:6
  +모밀잣나무:명:1
  +모반:명:1
  +모발:명:1
  +모방:명:33
  +모방도:명:1
  +모방되다:동:3
  +모방자:명:2
  +모방적:관:1
  +모방하다:동:17
  +모범:명:38
  +모범생:명:9
  +모범수:명:1
  +모범적:관:1
  +모범적:명:9
  +모본단:명:2
  +모빌:명:11
  +모사:명:1
  +모사론:명:3
  +모사론적:명:1
  +모사하다:동:3
  +모색:명:33
  +모색기:명:1
  +모색되다:동:8
  +모색하다:동:57
  +모서리:명:22
  +모성:명:10
  +모성애:명:3
  +모세:명:2
  +모셔지다:동:6
  +모션:명:5
  +모순:명:140
  +모순덩어리:명:1
  +모순되다:동:23
  +모순율:명:4
  +모순적:관:1
  +모순점:명:2
  +모순투성이:명:2
  +모습:명:1,132
  +모시:명:24
  +모시개떡:명:1
  +모시다:동:167
  +모시옷:명:1
  +모시조개:명:6
  +모신:명:2
  +모심기:명:1
  +모싯대:명:1
  +모아들이다:동:1
  +모아쓰다:동:1
  +모아지다:동:23
  +모암:명:1
  +모양:명:440
  +모양:의:1
  +모양:의:247
  +모양내다:동:1
  +모양새:명:12
  +모여들다:동:30
  +모여지다:동:4
  +모욕:명:7
  +모욕감:명:4
  +모욕당하다:동:1
  +모욕적:명:4
  +모욕죄:명:3
  +모욕하다:동:2
  +모월:명:2
  +모유:명:8
  +모으다:동:414
  +모음:명:8
  +모음집:명:1
  +모의:명:1
  +모의:명:5
  +모의고사:명:6
  +모의실험:명:3
  +모의하다:동:3
  +모이:명:1
  +모이다:동:352
  +모이통:명:3
  +모일:명:3
  +모임:명:248
  +모임원:명:7
  +모자:명:10
  +모자:명:48
  +모자간:명:1
  +모자라다:동:74
  +모자람:명:3
  +모자이크:명:1
  +모자챙:명:1
  +모작:명:3
  +모작품:명:1
  +모작하다:동:1
  +모전:명:1
  +모정:명:4
  +모조리:부:36
  +모조품:명:5
  +모종:명:11
  +모종삽:명:2
  +모주:명:2
  +모직:명:1
  +모직물:명:1
  +모질다:형:30
  +모집:명:33
  +모집인:명:1
  +모집하다:동:20
  +모쪼록:부:1
  +모찌:명:2
  +모차렐라:명:6
  +모처:명:1
  +모처럼:부:59
  +모체:명:62
  +모초:명:1
  +모친:명:10
  +모태:명:13
  +모터:명:24
  +모터보트:명:2
  +모텔:명:4
  +모텔비:명:1
  +모토:명:1
  +모퉁이:명:33
  +모티프:명:15
  +모포:명:3
  +모피:명:3
  +모함받다:동:1
  +모함하다:동:1
  +모험:명:26
  +모험가:명:1
  +모험담:명:1
  +모험성:명:1
  +모험심:명:3
  +모험적:명:2
  +모험주의자:명:1
  +모형:명:1
  +모형:명:37
  +모형도:명:1
  +모형실험:명:1
  +모호하다:형:23
  +모호해지다:동:2
  +모회사:명:4
  +목:명:1
  +목:명:187
  +목:명:3
  +목:명:7
  +목가적:명:1
  +목각:명:6
  +목각상:명:1
  +목간:명:1
  +목감기:명:1
  +목걸이:명:14
  +목격담:명:2
  +목격되다:동:9
  +목격자:명:7
  +목격하다:동:27
  +목공:명:9
  +목공예품:명:1
  +목공품:명:1
  +목구멍:명:14
  +목구멍소리:명:1
  +목기:명:5
  +목덜미:명:24
  +목도:명:1
  +목도리:명:2
  +목도릿감:명:1
  +목도하다:동:1
  +목돈:명:14
  +목동:명:2
  +목둘레:명:4
  +목련:명:3
  +목련꽃:명:3
  +목련나무:명:1
  +목례:명:4
  +목례하다:동:3
  +목로:명:1
  +목록:명:44
  +목마:명:3
  +목마르다:형:9
  +목마름:명:5
  +목말라하다:동:1
  +목매다:동:1
  +목매달다:동:2
  +목메다:동:4
  +목면:명:2
  +목발:명:11
  +목백일홍나무:명:1
  +목별:명:1
  +목병:명:1
  +목본:명:2
  +목불인견:명:1
  +목뼈:명:1
  +목사:명:1
  +목사:명:85
  +목사티:명:1
  +목석:명:3
  +목선:명:2
  +목성:명:2
  +목성판:명:1
  +목소리:명:425
  +목수:명:25
  +목숨:명:111
  +목쉬다:동:3
  +목심:명:2
  +목양장:명:1
  +목요:명:1
  +목요일:명:13
  +목욕:명:52
  +목욕료:명:9
  +목욕물:명:1
  +목욕장:명:1
  +목욕재계:명:1
  +목욕재계하다:동:1
  +목욕탕:명:31
  +목욕하다:동:11
  +목울대:명:3
  +목이버섯:명:4
  +목장:명:1
  +목장승:명:12
  +목재:명:41
  +목재품:명:1
  +목적:명:293
  +목적론적:관:3
  +목적법화:명:1
  +목적어:명:1
  +목적의식:명:2
  +목적의식적:명:2
  +목적지:명:12
  +목적하다:동:1
  +목적항:명:1
  +목전:명:4
  +목젖:명:10
  +목제:명:2
  +목제품:명:8
  +목조:명:1
  +목조:명:4
  +목조부:명:1
  +목줄기:명:1
  +목차:명:10
  +목청:명:18
  +목청껏:부:4
  +목초지:명:1
  +목축:명:9
  +목축업:명:10
  +목침:명:3
  +목탁:명:2
  +목탄:명:1
  +목탑:명:3
  +목판:명:4
  +목판:명:6
  +목판깃:명:1
  +목판화:명:1
  +목표:명:216
  +목표량:명:2
  +목표선:명:1
  +목표액:명:3
  +목표점:명:2
  +목표하다:동:1
  +목하:부:1
  +목화:명:5
  +목화솜:명:1
  +목화씨:명:2
  +목회:명:1
  +목회자:명:3
  +목회학:명:1
  +몫:명:114
  +몬순:명:1
  +몰개성화되다:동:1
  +몰골:명:20
  +몰다:동:99
  +몰도덕성:명:1
  +몰두:명:4
  +몰두하다:동:46
  +몰라보다:동:13
  +몰라주다:동:3
  +몰락:명:20
  +몰락기:명:1
  +몰락하다:동:15
  +몰래:부:93
  +몰래바이트:명:1
  +몰려가다:동:14
  +몰려나오다:동:5
  +몰려다니다:동:7
  +몰려들다:동:39
  +몰려오다:동:29
  +몰리다:동:84
  +몰매:명:2
  +몰살하다:동:1
  +몰상식:명:1
  +몰상식하다:형:3
  +몰수:명:4
  +몰수하다:동:2
  +몰아가다:동:13
  +몰아내다:동:18
  +몰아넣다:동:19
  +몰아닥치다:동:5
  +몰아붙여지다:동:1
  +몰아붙이다:동:14
  +몰아세우다:동:7
  +몰아쉬다:동:5
  +몰아오다:동:2
  +몰아주다:동:2
  +몰아치다:동:21
  +몰역사적:관:1
  +몰염치:명:5
  +몰염치하다:형:6
  +몰이꾼:명:2
  +몰이식:명:1
  +몰이해:명:2
  +몰이해하다:형:1
  +몰입:명:2
  +몰입되다:동:2
  +몰입시키다:동:5
  +몰입하다:동:11
  +몰지각하다:형:3
  +몰키다:동:1
  +몰표:명:2
  +몰풍스럽다:형:1
  +몸:명:1,147
  +몸가짐:명:14
  +몸값:명:8
  +몸결:명:1
  +몸놀림:명:10
  +몸단장:명:3
  +몸담다:동:21
  +몸돌:명:1
  +몸동작:명:1
  +몸뚱어리:명:1
  +몸뚱이:명:11
  +몸띵이:명:5
  +몸매:명:23
  +몸무게:명:23
  +몸보신:명:1
  +몸부림:명:13
  +몸부림치다:동:13
  +몸빛:명:1
  +몸뻬:명:4
  +몸살:명:19
  +몸살감기:명:1
  +몸살기:명:1
  +몸서리:명:6
  +몸서리나다:동:1
  +몸서리치다:동:3
  +몸성히:부:1
  +몸소:부:9
  +몸속:명:16
  +몸싸움:명:4
  +몸져눕다:동:3
  +몸조리:명:3
  +몸조심:명:1
  +몸조심하다:동:5
  +몸종:명:8
  +몸집:명:25
  +몸짓:명:55
  +몸차림:명:1
  +몸채:명:2
  +몸체:명:9
  +몸태질:명:1
  +몸통:명:53
  +몸피:명:1
  +몹시:부:134
  +몹쓸:관:16
  +못:명:11
  +못:명:3
  +못:명:53
  +못:부:931
  +못가:명:7
  +못나다:형:19
  +못난이:명:3
  +못내:부:11
  +못다:부:12
  +못되다:형:51
  +못마땅하다:형:19
  +못마땅해하다:동:5
  +못마땅히:부:2
  +못살다:동:7
  +못생기다:형:13
  +못쓰다:동:13
  +못자리:명:1
  +못잖다:형:4
  +못지않다:형:98
  +못질:명:1
  +못하다:동:420
  +못하다:보:2,249
  +못하다:형:50
  +못허다:동:5
  +몽골리즘:명:1
  +몽글몽글하다:형:2
  +몽글하다:형:1
  +몽달귀신:명:1
  +몽당비:명:1
  +몽당연필:명:8
  +몽둥이:명:21
  +몽둥이질:명:1
  +몽둥이찜질:명:2
  +몽땅:부:28
  +몽롱하다:형:4
  +몽롱해지다:동:1
  +몽매:명:1
  +몽매주의:명:1
  +몽매하다:형:2
  +몽상:명:6
  +몽상가:명:1
  +몽상적:명:1
  +몽유:명:1
  +몽유병:명:2
  +몽정:명:2
  +몽타주:명:7
  +몽환성:명:1
  +묏등:명:1
  +묏자리:명:2
  +묘:명:1
  +묘:명:11
  +묘:명:9
  +묘기:명:4
  +묘기성:명:1
  +묘망하다:형:1
  +묘목:명:17
  +묘미:명:10
  +묘법:명:1
  +묘비명:명:1
  +묘사:명:37
  +묘사되다:동:17
  +묘사하다:동:53
  +묘소:명:15
  +묘수:명:2
  +묘안:명:2
  +묘약:명:1
  +묘역:명:6
  +묘연하다:형:1
  +묘유:명:3
  +묘자리:명:1
  +묘제:명:2
  +묘지:명:6
  +묘책:명:3
  +묘처:명:1
  +묘출하다:동:1
  +묘파하다:동:2
  +묘하다:형:40
  +묘합:명:1
  +무:대:1
  +무:명:10
  +무:명:21
  +무:명:54
  +무:명:9
  +무:의:15
  +무가치하다:형:1
  +무감각:명:2
  +무감각하다:형:1
  +무감각해지다:동:2
  +무개성:명:1
  +무개성적:명:1
  +무개차:명:2
  +무거워지다:동:10
  +무겁다:형:136
  +무게:명:88
  +무게감:명:2
  +무계획:명:2
  +무계획성:명:1
  +무고:명:1
  +무고하다:형:1
  +무고하다:형:8
  +무공해:명:13
  +무관:명:1
  +무관:명:1
  +무관계하다:형:1
  +무관심:명:23
  +무관심하다:형:15
  +무관하다:형:53
  +무구:명:2
  +무구하다:형:1
  +무국적:명:1
  +무궁:명:1
  +무궁무궁하다:형:2
  +무궁무진하다:형:7
  +무궁하다:형:16
  +무궁화:명:27
  +무권리:명:1
  +무규정적:명:1
  +무극:명:3
  +무급:명:2
  +무기:명:10
  +무기:명:103
  +무기고:명:2
  +무기력:명:9
  +무기력증:명:4
  +무기력하다:형:10
  +무기력해지다:동:1
  +무기력화되다:동:1
  +무기명:명:5
  +무기물:명:30
  +무기상:명:1
  +무기정학:명:2
  +무기질:명:9
  +무기한:명:3
  +무기형:명:1
  +무기화:명:4
  +무기화되다:동:1
  +무김치:명:1
  +무난:명:2
  +무난하다:형:10
  +무난히:부:6
  +무남독녀:명:2
  +무너뜨리다:동:21
  +무너지다:동:124
  +무념:명:1
  +무노동:명:12
  +무논:명:1
  +무농약:명:1
  +무뇌아:명:1
  +무능:명:9
  +무능력자:명:3
  +무능력하다:형:3
  +무능인:명:1
  +무능하다:형:9
  +무늬:명:62
  +무단:명:15
  +무단가출:명:1
  +무단결근:명:1
  +무당:명:14
  +무대:명:297
  +무대극:명:1
  +무대하다:형:1
  +무대화:명:2
  +무대화되다:동:2
  +무대화하다:동:3
  +무더기:명:29
  +무더위:명:19
  +무던하다:형:2
  +무던히:부:6
  +무덤:명:63
  +무덤덤하다:형:3
  +무덥다:형:17
  +무뎌지다:동:5
  +무도:명:2
  +무도하다:형:2
  +무도회:명:11
  +무도회장:명:1
  +무동작:명:2
  +무두:명:1
  +무드:명:6
  +무등:명:1
  +무디다:형:2
  +무뚝뚝하다:형:13
  +무뚝하다:형:1
  +무량하다:형:2
  +무럭무럭:부:7
  +무려:부:67
  +무력:명:1
  +무력:명:32
  +무력감:명:10
  +무력부:명:1
  +무력시위:명:12
  +무력하다:형:9
  +무력해지다:동:2
  +무력행사:명:1
  +무력화:명:4
  +무력화시키다:동:3
  +무력화하다:동:2
  +무렵:의:174
  +무례:명:6
  +무례하다:형:15
  +무료:명:2
  +무료:명:54
  +무료입장:명:1
  +무료하다:형:13
  +무료해지다:동:2
  +무르녹다:동:1
  +무르다:동:1
  +무르다:동:2
  +무르다:형:3
  +무르익다:동:16
  +무르춤하다:동:1
  +무르춤해지다:동:3
  +무르팍:명:5
  +무른모:명:1
  +무릅쓰다:동:18
  +무릇:부:6
  +무릎:명:138
  +무릎맞춤하다:동:1
  +무리:명:58
  +무리:명:72
  +무리수:명:2
  +무리하다:동:6
  +무리하다:형:38
  +무마:명:2
  +무마하다:동:12
  +무망하다:형:1
  +무면허:명:1
  +무명:명:12
  +무명:명:25
  +무명:명:6
  +무명옷:명:1
  +무모하다:형:27
  +무문화촌:명:3
  +무미:명:1
  +무미건조:명:1
  +무미건조하다:형:10
  +무미건조해지다:동:1
  +무미하다:형:1
  +무반동총:명:1
  +무방:명:4
  +무방비:명:8
  +무방하다:형:9
  +무방향:명:1
  +무배란성:명:1
  +무법:명:1
  +무법자:명:1
  +무변:명:1
  +무변하다:형:1
  +무병:명:2
  +무병하다:형:1
  +무보:명:2
  +무분별하다:형:22
  +무비:명:2
  +무비자:명:1
  +무비판적:명:4
  +무사:명:1
  +무사:명:1
  +무사:명:1
  +무사:명:8
  +무사도:명:2
  +무사통과:명:1
  +무사풍:명:1
  +무사하다:형:15
  +무사히:부:27
  +무산:명:2
  +무산:명:4
  +무산되다:동:11
  +무산시키다:동:1
  +무삼하다:동:1
  +무상:명:1
  +무상:명:1
  +무상:명:3
  +무상:명:7
  +무상하다:형:12
  +무색무취:명:1
  +무색하다:형:10
  +무생물:명:2
  +무서리:명:2
  +무서움:명:13
  +무서워지다:동:4
  +무서워하다:동:14
  +무선:명:14
  +무선국:명:1
  +무섭다:형:214
  +무성:명:1
  +무성:명:1
  +무성격적:명:1
  +무성의:명:2
  +무성의하다:형:3
  +무성하다:형:31
  +무성해지다:동:1
  +무성히:부:2
  +무소득:명:2
  +무소불능:명:2
  +무소불위:명:5
  +무소불위하다:형:1
  +무소속:명:26
  +무소식:명:2
  +무소신:명:1
  +무소용:명:1
  +무소유:명:1
  +무속:명:8
  +무속적:관:1
  +무쇠:명:5
  +무수하다:형:23
  +무수히:부:17
  +무순:명:5
  +무술:명:19
  +무술인:명:2
  +무스:명:2
  +무스탕:명:2
  +무슨:관:869
  +무승부:명:3
  +무시:명:7
  +무시간:명:1
  +무시기:대:1
  +무시당하다:동:4
  +무시되다:동:14
  +무시로:부:3
  +무시무시하다:형:13
  +무시하다:동:106
  +무시험:명:11
  +무식:명:1
  +무식자:명:1
  +무식하다:형:11
  +무신:관:5
  +무신:명:10
  +무신경:명:1
  +무신경해지다:동:1
  +무신론자:명:3
  +무실점:명:3
  +무심:명:4
  +무심결:명:3
  +무심지도극:명:2
  +무심코:부:22
  +무심하다:형:27
  +무심히:부:17
  +무아:명:4
  +무아경:명:1
  +무아성:명:1
  +무아지경:명:2
  +무악도:명:1
  +무안:명:3
  +무안당하다:동:1
  +무안하다:형:10
  +무안해지다:동:3
  +무안해하다:동:1
  +무애:명:3
  +무애박:명:3
  +무양식:명:1
  +무어:감:1
  +무어:대:149
  +무언:명:6
  +무언극:명:1
  +무언중:명:1
  +무엄하다:형:2
  +무엇:대:1,249
  +무엇무엇:대:5
  +무엇하다:형:3
  +무역:명:191
  +무역국:명:1
  +무역량:명:3
  +무역로:명:2
  +무역선:명:1
  +무역업:명:4
  +무역업자:명:1
  +무역품:명:2
  +무역학과:명:1
  +무역항:명:3
  +무연탄:명:9
  +무연히:부:1
  +무연히:부:1
  +무염치:명:3
  +무영륜:명:1
  +무예:명:10
  +무예인:명:1
  +무오염:명:2
  +무욕:명:2
  +무욕망:명:1
  +무용:명:165
  +무용가:명:19
  +무용계:명:17
  +무용과:명:12
  +무용극:명:8
  +무용극적:명:1
  +무용단:명:14
  +무용담:명:3
  +무용도:명:2
  +무용론:명:2
  +무용복:명:2
  +무용성:명:1
  +무용수:명:3
  +무용인:명:3
  +무용제:명:2
  +무용지물:명:5
  +무용하다:동:1
  +무용하다:형:2
  +무용학:명:2
  +무용학과:명:1
  +무원칙하다:형:3
  +무위:명:11
  +무위롭다:형:1
  +무위이화:명:3
  +무위자연:명:2
  +무응답:명:1
  +무의미:명:1
  +무의미성:명:1
  +무의미하다:형:28
  +무의미해지다:동:4
  +무의미화:명:1
  +무의식:명:101
  +무의식적:관:2
  +무의식적:명:16
  +무의식중:명:3
  +무의지성:명:1
  +무의촌:명:2
  +무의탁:명:5
  +무이론적:관:1
  +무이자:명:6
  +무익하다:형:1
  +무인:명:17
  +무인:명:6
  +무인도:명:8
  +무인점포:명:1
  +무인지경:명:1
  +무인화:명:1
  +무일푼:명:3
  +무임:명:1
  +무임금:명:9
  +무임소:명:1
  +무임승차:명:1
  +무자격:명:2
  +무자료:명:2
  +무자비:명:2
  +무자비하다:형:14
  +무작위:명:2
  +무작위적:명:1
  +무작정:명:36
  +무장:명:3
  +무장:명:40
  +무장되다:동:4
  +무장력:명:1
  +무장봉기:명:1
  +무장시키다:동:1
  +무장하다:동:15
  +무장화:명:1
  +무저항:명:2
  +무적:명:1
  +무적:명:2
  +무전:명:1
  +무전:명:1
  +무전기:명:10
  +무절제:명:1
  +무절제하다:형:2
  +무접촉:명:1
  +무정부:명:1
  +무정자:명:1
  +무정하다:형:4
  +무정형:명:2
  +무정형성:명:1
  +무정형하다:형:1
  +무제한:명:5
  +무제한급:명:2
  +무제한적:명:1
  +무조건:명:1
  +무조건:부:93
  +무조건적:명:5
  +무좀:명:35
  +무좀균:명:1
  +무죄:명:18
  +무주견:명:1
  +무주택:명:5
  +무주택자:명:7
  +무중력:명:4
  +무지:명:1
  +무지:명:10
  +무지:부:8
  +무지개:명:14
  +무지근하다:형:1
  +무지렁이:명:1
  +무지르다:동:1
  +무지막지하다:형:2
  +무지무지:부:1
  +무지무지하다:형:3
  +무지스럽다:형:1
  +무지외반증:명:3
  +무지하다:형:11
  +무지하다:형:3
  +무직:명:18
  +무직자:명:1
  +무진:부:8
  +무진장:명:2
  +무질서:명:10
  +무질서하다:형:3
  +무질서해지다:동:1
  +무찌르다:동:9
  +무차별:명:8
  +무차별적:관:2
  +무차별적:명:7
  +무차별하다:형:1
  +무참하다:형:2
  +무참히:부:8
  +무채:명:1
  +무책:명:2
  +무책임:명:2
  +무책임하다:형:16
  +무척:부:196
  +무척추동물:명:1
  +무천:명:1
  +무청:명:1
  +무취:명:5
  +무치:명:1
  +무치다:동:17
  +무침:명:1
  +무크지:명:1
  +무타:명:4
  +무턱대고:부:14
  +무통:명:10
  +무투표:명:2
  +무패:명:4
  +무표정:명:1
  +무표정하다:형:10
  +무풍:명:1
  +무한:명:18
  +무한궤도적:명:1
  +무한대:명:1
  +무한량:명:1
  +무한성:명:3
  +무한정:명:7
  +무한정하다:형:1
  +무한하다:형:47
  +무한히:부:9
  +무해하다:형:3
  +무허가:명:1
  +무혈:명:1
  +무혐의:명:7
  +무협지:명:4
  +무형:명:16
  +무호흡:명:2
  +무호흡증:명:5
  +무화:명:1
  +무화과:명:1
  +무화되다:동:1
  +무화시키다:동:1
  +무화하다:동:1
  +무효:명:37
  +무효론:명:1
  +무효화:명:2
  +무효화하다:동:1
  +무휴:명:1
  +무희:명:2
  +묵:명:3
  +묵가:명:1
  +묵계:명:3
  +묵과하다:동:9
  +묵념:명:4
  +묵념하다:동:1
  +묵다:동:21
  +묵다:동:30
  +묵다:동:6
  +묵묵부답:명:7
  +묵묵히:부:25
  +묵비권:명:6
  +묵비하다:동:1
  +묵사발:명:3
  +묵살당하다:동:1
  +묵살되다:동:1
  +묵살하다:동:8
  +묵상:명:3
  +묵숨:명:1
  +묵시론적:명:1
  +묵시적:관:1
  +묵시적:명:3
  +묵언:명:3
  +묵은밥:명:1
  +묵이다:동:1
  +묵인:명:9
  +묵인되다:동:1
  +묵인하다:동:15
  +묵적:명:1
  +묵주:명:1
  +묵중하다:형:1
  +묵직하다:형:13
  +묵청색:명:1
  +묵향:명:1
  +묵화:명:1
  +묵히다:동:4
  +묶다:동:78
  +묶여지다:동:2
  +묶음:명:8
  +묶이다:동:38
  +문:명:1
  +문:명:1
  +문:명:1
  +문:명:1
  +문:명:2
  +문:명:438
  +문:의:1
  +문간:명:2
  +문간방:명:12
  +문갑:명:4
  +문건:명:6
  +문경:명:2
  +문경지교:명:1
  +문고:명:15
  +문고리:명:7
  +문고본:명:1
  +문고판:명:2
  +문교:명:2
  +문구:명:28
  +문구:명:6
  +문구멍:명:2
  +문구점:명:1
  +문권:명:3
  +문궤:명:1
  +문기둥:명:1
  +문다:동:1
  +문단:명:1
  +문단:명:12
  +문단:명:16
  +문단속:명:1
  +문답:명:3
  +문답식:명:1
  +문대다:동:1
  +문덕:명:1
  +문둥병:명:2
  +문둥병자:명:1
  +문둥이:명:6
  +문드러지다:동:2
  +문득:부:134
  +문득문득:부:2
  +문디이:명:1
  +문뜩문뜩:부:1
  +문란:명:2
  +문란스러워지다:동:1
  +문란하다:형:4
  +문란해지다:동:3
  +문리:명:1
  +문리대:명:1
  +문맥:명:22
  +문맹:명:8
  +문맹률:명:1
  +문명:명:197
  +문명:명:2
  +문명국가:명:1
  +문명권:명:1
  +문명론적:관:1
  +문명사:명:11
  +문명사회:명:10
  +문명인:명:2
  +문명적:관:1
  +문명적:명:3
  +문명하다:형:1
  +문명화되다:동:1
  +문명화시키다:동:1
  +문묘:명:2
  +문무:명:10
  +문무대:명:1
  +문물:명:15
  +문민:명:33
  +문민정부:명:45
  +문민정치:명:1
  +문민화:명:3
  +문밖:명:25
  +문방구:명:9
  +문방구점:명:1
  +문벌:명:10
  +문법:명:14
  +문법서:명:1
  +문법성:명:1
  +문법적:관:1
  +문법적:명:2
  +문병:명:4
  +문살:명:1
  +문상:명:6
  +문상객:명:3
  +문서:명:65
  +문서함:명:1
  +문서화하다:동:1
  +문설주:명:1
  +문신:명:3
  +문신:명:4
  +문안:명:5
  +문안:명:6
  +문안가:명:1
  +문안드리다:동:4
  +문양:명:20
  +문어:명:1
  +문어발식:명:5
  +문언:명:1
  +문예:명:25
  +문예란:명:1
  +문예물:명:2
  +문예비:명:1
  +문예지:명:2
  +문외한:명:11
  +문우:명:1
  +문의:명:16
  +문의하다:동:5
  +문인:명:14
  +문인화:명:1
  +문자:명:1
  +문자:명:94
  +문자적:관:10
  +문자적:명:1
  +문자판:명:8
  +문자화되다:동:1
  +문자화하다:동:1
  +문장:명:1
  +문장:명:62
  +문장가:명:4
  +문장력:명:1
  +문재:명:1
  +문전:명:3
  +문전성시:명:1
  +문제:명:2,370
  +문제극:명:3
  +문제되다:동:24
  +문제성:명:2
  +문제시되다:동:5
  +문제시하다:동:1
  +문제아:명:6
  +문제없다:형:9
  +문제없이:부:4
  +문제의식:명:21
  +문제작:명:13
  +문제적:관:1
  +문제적:명:2
  +문제점:명:143
  +문제점투성이:명:3
  +문제지:명:8
  +문제집:명:8
  +문제투성이:명:1
  +문제화하다:동:1
  +문젯거리:명:3
  +문주:명:1
  +문중:명:8
  +문지기:명:10
  +문지르다:동:42
  +문지방:명:2
  +문직:명:1
  +문직물:명:1
  +문진:명:1
  +문질빈빈:명:1
  +문집:명:5
  +문짝:명:12
  +문채:명:1
  +문책:명:25
  +문책론:명:3
  +문책하다:동:5
  +문체:명:6
  +문초하다:동:1
  +문치주의:명:2
  +문턱:명:23
  +문토불이:명:1
  +문틀:명:2
  +문틈:명:7
  +문패:명:5
  +문필가:명:1
  +문하:명:7
  +문하생:명:4
  +문하시중:명:1
  +문학:명:703
  +문학가:명:5
  +문학계:명:1
  +문학관:명:2
  +문학도:명:2
  +문학론:명:31
  +문학론자:명:1
  +문학사:명:20
  +문학사가:명:1
  +문학사적:관:2
  +문학상:명:5
  +문학서:명:2
  +문학성:명:1
  +문학소녀:명:5
  +문학예술:명:1
  +문학인:명:9
  +문학자:명:1
  +문학적:관:49
  +문학적:명:10
  +문학지:명:2
  +문학청년:명:1
  +문학파:명:1
  +문학하다:동:1
  +문항:명:8
  +문헌:명:30
  +문호:명:6
  +문화:명:1,790
  +문화가:명:4
  +문화계:명:6
  +문화관:명:4
  +문화국:명:2
  +문화권:명:28
  +문화대:명:3
  +문화론:명:13
  +문화론자:명:1
  +문화론적:관:39
  +문화면:명:1
  +문화부:명:4
  +문화사:명:5
  +문화사적:관:1
  +문화생활:명:9
  +문화생활비:명:1
  +문화어:명:2
  +문화원:명:21
  +문화원장:명:1
  +문화유산:명:25
  +문화인:명:15
  +문화인촌:명:1
  +문화인화:명:3
  +문화재:명:164
  +문화재적:관:1
  +문화적:관:245
  +문화적:명:37
  +문화제:명:1
  +문화주의:명:1
  +문화촌:명:3
  +문화화:명:4
  +문화화하다:동:1
  +묻다:동:62
  +묻다:동:655
  +묻다:동:94
  +묻어가다:동:1
  +묻어나다:동:10
  +묻어오다:동:1
  +묻혀지다:동:6
  +묻히다:동:37
  +묻히다:동:67
  +물:명:1
  +물:명:1,129
  +물:명:14
  +물:명:2
  +물가:명:110
  +물가:명:8
  +물가고:명:1
  +물가국:명:1
  +물갈이:명:6
  +물갈이론:명:1
  +물갈이하다:동:4
  +물감:명:24
  +물감투성이:명:1
  +물개:명:5
  +물개암:명:1
  +물개암나무:명:1
  +물갬나무:명:1
  +물거품:명:7
  +물건:명:381
  +물건짝:명:1
  +물걸레:명:2
  +물격화하다:동:1
  +물결:명:63
  +물결무늬:명:1
  +물결치다:동:5
  +물겹저고리:명:1
  +물경:부:1
  +물고:명:2
  +물고기:명:56
  +물고기밥:명:1
  +물고기자리:명:1
  +물고기좌:명:1
  +물고문:명:2
  +물고문하다:동:1
  +물구나무:명:1
  +물구나무서기:명:12
  +물구하다:동:1
  +물국수:명:2
  +물귀신:명:7
  +물그릇:명:4
  +물기:명:88
  +물기둥:명:1
  +물길:명:9
  +물깃:명:1
  +물꼬:명:8
  +물끄러미:부:22
  +물난리:명:5
  +물놀이:명:6
  +물누룽지:명:3
  +물다:동:108
  +물다:동:12
  +물동량:명:1
  +물동이:명:5
  +물돼지:명:3
  +물들다:동:27
  +물들어지다:동:1
  +물들여지다:동:3
  +물들이다:동:7
  +물때:명:1
  +물떼새:명:1
  +물량:명:31
  +물러가다:동:24
  +물러나다:동:56
  +물러서다:동:25
  +물러앉다:동:3
  +물러지다:동:6
  +물렁물렁하다:형:1
  +물렁뼈:명:2
  +물레방아:명:2
  +물려두다:동:1
  +물려받다:동:14
  +물려주다:동:20
  +물론:명:159
  +물론:부:894
  +물류:명:2
  +물류비:명:1
  +물류비용:명:1
  +물리:명:24
  +물리다:동:10
  +물리다:동:11
  +물리다:동:12
  +물리다:동:13
  +물리다:동:4
  +물리력:명:3
  +물리적:관:28
  +물리적:명:14
  +물리치다:동:39
  +물리학:명:59
  +물리학계:명:1
  +물리학과:명:4
  +물리학자:명:17
  +물리학적:관:4
  +물리학회:명:1
  +물마루:명:1
  +물맛:명:4
  +물망:명:2
  +물먹다:동:6
  +물먹이다:동:1
  +물물:명:3
  +물물이:부:1
  +물밀다:동:3
  +물밑:명:6
  +물바가지:명:1
  +물바다:명:4
  +물바람:명:1
  +물받이:명:5
  +물방개:명:1
  +물방아:명:1
  +물방울:명:15
  +물뱀:명:1
  +물버들:명:1
  +물벼룩:명:3
  +물병자리:명:1
  +물보라:명:6
  +물봉선:명:1
  +물봉선화:명:1
  +물부리:명:3
  +물불:명:2
  +물비누:명:1
  +물비린내:명:1
  +물빛:명:4
  +물빼기:명:2
  +물뿌리개:명:7
  +물산:명:1
  +물살:명:13
  +물상:명:1
  +물상:명:3
  +물상객주:명:2
  +물새:명:6
  +물색:명:3
  +물색하다:동:4
  +물샐틈없다:형:3
  +물설다:동:1
  +물성:명:2
  +물세탁:명:1
  +물소:명:1
  +물소리:명:9
  +물속:명:105
  +물수건:명:3
  +물시계:명:2
  +물신:명:3
  +물신성:명:1
  +물신적:관:4
  +물신주의:명:6
  +물신화:명:2
  +물실하다:동:1
  +물심양면:명:3
  +물싸움:명:1
  +물씬:부:4
  +물씬거리다:동:1
  +물씬물씬:부:1
  +물씬하다:형:1
  +물아일체:명:1
  +물안개:명:2
  +물안경:명:4
  +물약:명:1
  +물어내다:동:2
  +물어뜯기다:동:2
  +물어뜯다:동:7
  +물어보다:동:154
  +물억새:명:1
  +물역:명:1
  +물엿:명:13
  +물오르다:동:1
  +물오리:명:1
  +물오리나무:명:2
  +물오징어:명:3
  +물욕적:명:1
  +물웅덩이:명:1
  +물윗수염박쥐:명:3
  +물음:명:72
  +물음당하다:동:1
  +물음표:명:4
  +물음표투성이:명:1
  +물의:명:34
  +물자:명:24
  +물자체:명:2
  +물장난:명:8
  +물장사하다:동:1
  +물적:관:19
  +물적:명:2
  +물정:명:3
  +물주머니:명:1
  +물줄기:명:21
  +물증:명:9
  +물지게:명:1
  +물질:명:247
  +물질계:명:1
  +물질관:명:1
  +물질문명:명:6
  +물질문화:명:2
  +물질생활:명:2
  +물질성:명:7
  +물질세계:명:7
  +물질적:관:73
  +물질적:명:29
  +물질주의:명:2
  +물질주의적:관:1
  +물질학:명:1
  +물질화되다:동:5
  +물집:명:7
  +물체:명:156
  +물총:명:3
  +물총새:명:1
  +물커덩하다:형:1
  +물컹거리다:동:1
  +물코:명:2
  +물큰:부:1
  +물타기:명:3
  +물탱크:명:2
  +물통:명:8
  +물파스:명:2
  +물팍:명:1
  +물푸레나무:명:2
  +물풀:명:2
  +물품:명:23
  +물형:명:2
  +물화:명:6
  +물화되다:동:6
  +물화시키다:동:1
  +물화적:관:1
  +묽다:형:29
  +묽어지다:동:1
  +뭇:관:7
  +뭇국:명:2
  +뭇매:명:1
  +뭇별:명:1
  +뭇사람:명:7
  +뭇짐승:명:1
  +뭉개다:동:3
  +뭉개다:동:5
  +뭉개지다:동:4
  +뭉거지다:동:1
  +뭉게뭉게:부:1
  +뭉그적거리다:동:1
  +뭉그적뭉그적:부:1
  +뭉근하다:형:2
  +뭉글뭉글:부:2
  +뭉긋뭉긋:부:1
  +뭉떵하다:형:1
  +뭉뚝해지다:동:1
  +뭉뚱그리다:동:4
  +뭉실뭉실:부:1
  +뭉쳐지다:동:5
  +뭉치:명:13
  +뭉치다:동:43
  +뭉칫돈:명:1
  +뭉클뭉클:부:1
  +뭉클하다:형:10
  +뭉클해지다:동:3
  +뭉텅:부:1
  +뭉텅뭉텅:부:1
  +뭉텅이:명:1
  +뭉툭하다:형:2
  +뭉툭해지다:동:1
  +뭍:명:6
  +뭍사람:명:1
  +뭐:감:573
  +뭐:대:1,420
  +뭐뭐:대:8
  +뭐하다:형:3
  +뭘:감:17
  +뭣:대:28
  +뭣하다:형:2
  +뭣해하다:동:1
  +뮤지션:명:2
  +뮤지엄:명:1
  +뮤지컬:명:13
  +뮤직:명:24
  +뮤직박스:명:1
  +미:명:2
  +미:명:218
  +미:명:3
  +미각:명:5
  +미간:명:6
  +미감:명:3
  +미개:명:2
  +미개봉:명:1
  +미개인:명:2
  +미개지:명:2
  +미개척:명:2
  +미건설:명:1
  +미결:명:6
  +미곡:명:1
  +미골:명:1
  +미공개:명:1
  +미관:명:7
  +미구:명:2
  +미국개기장:명:2
  +미국자리공:명:2
  +미궁:명:7
  +미기입:명:4
  +미꾸라지:명:13
  +미꾸리:명:5
  +미꾸릿과:명:4
  +미끄러지다:동:31
  +미끄럼:명:6
  +미끄럼틀:명:11
  +미끄럼판:명:1
  +미끄럽다:형:10
  +미끈:명:1
  +미끈거리다:동:2
  +미끈덩:부:1
  +미끈둥하다:형:1
  +미끈미끈하다:형:1
  +미끈액:명:2
  +미끈하다:형:6
  +미끌리다:동:1
  +미끌어지다:동:1
  +미끼:명:19
  +미나리:명:13
  +미나리꽝:명:3
  +미나리논:명:1
  +미나리아재비:명:1
  +미나리전:명:1
  +미나리채:명:1
  +미남:명:6
  +미납금:명:1
  +미네랄:명:5
  +미네랄워터:명:1
  +미녀:명:7
  +미니:명:26
  +미니멀:명:1
  +미니멀하다:형:1
  +미니스커트:명:6
  +미니컴퓨터:명:9
  +미닫이:명:3
  +미닫이문:명:8
  +미달:명:17
  +미달되다:동:5
  +미달하다:동:9
  +미담:명:6
  +미대:명:4
  +미덕:명:28
  +미덥다:형:4
  +미동:명:1
  +미드컨트리:명:1
  +미드필더:명:9
  +미드필드:명:3
  +미들급:명:1
  +미들스쿨:명:1
  +미등:명:1
  +미등기:명:1
  +미등록:명:1
  +미디어:명:83
  +미디어적:관:1
  +미디엄:명:1
  +미라:명:6
  +미래:명:178
  +미래불:명:1
  +미래상:명:3
  +미래적:관:2
  +미래학자:명:1
  +미래학적:관:1
  +미래형:명:3
  +미량:명:2
  +미려하다:형:2
  +미력:명:1
  +미련:명:10
  +미련스럽다:형:1
  +미련하다:형:3
  +미로:명:6
  +미로형:명:1
  +미루나무:명:4
  +미루다:동:101
  +미루어지다:동:3
  +미뤄지다:동:2
  +미르꾸:명:2
  +미륵:명:3
  +미륵당:명:1
  +미륵불:명:1
  +미리:부:185
  +미리미리:부:9
  +미립:명:1
  +미만:명:28
  +미망:명:1
  +미망:명:2
  +미망인:명:3
  +미명:명:1
  +미명:명:9
  +미모:명:26
  +미몽:명:1
  +미묘:명:1
  +미묘하다:형:27
  +미묘히:부:1
  +미문:명:1
  +미물:명:4
  +미미하다:형:8
  +미백:명:1
  +미복:명:1
  +미복학:명:1
  +미봉적:관:3
  +미봉책:명:1
  +미분:명:2
  +미분기:명:1
  +미분양:명:1
  +미분화:명:1
  +미분화되다:동:5
  +미비:명:4
  +미비되다:형:1
  +미비점:명:2
  +미비하다:형:2
  +미사:명:9
  +미사여구:명:1
  +미사일:명:41
  +미사포:명:2
  +미상:명:1
  +미색:명:5
  +미생마:명:1
  +미생물:명:14
  +미생물학:명:3
  +미서명:명:1
  +미성:명:1
  +미성년:명:6
  +미성년자:명:6
  +미성숙:명:1
  +미성숙론:명:1
  +미성숙성:명:1
  +미성숙하다:형:2
  +미세:명:6
  +미세하다:형:9
  +미션:명:3
  +미소:명:164
  +미소하다:형:1
  +미수:명:1
  +미수:명:2
  +미수:명:6
  +미수금:명:4
  +미숙:명:7
  +미숙성:명:5
  +미숙성론:명:1
  +미숙아:명:2
  +미숙하다:형:15
  +미술:명:142
  +미술가:명:7
  +미술가론:명:1
  +미술계:명:5
  +미술과:명:1
  +미술관:명:53
  +미술반:명:1
  +미술사:명:16
  +미술사가:명:3
  +미술사적:관:1
  +미술사적:명:1
  +미술사학:명:3
  +미술사학과:명:1
  +미술상:명:1
  +미술상:명:1
  +미술실:명:1
  +미술인:명:1
  +미술적:관:2
  +미술지:명:3
  +미술품:명:11
  +미술학과:명:2
  +미스:명:2
  +미스:명:43
  +미스라이즘:명:1
  +미스터:명:12
  +미스터리:명:1
  +미시:명:1
  +미시:명:13
  +미시적:관:2
  +미시적:명:1
  +미시족:명:1
  +미시즈:명:6
  +미식:명:7
  +미식가:명:4
  +미식축구:명:3
  +미신:명:17
  +미신고:명:1
  +미신고자:명:1
  +미신적:명:1
  +미심쩍다:형:2
  +미싱:명:3
  +미싱공:명:1
  +미아:명:4
  +미아보호소:명:1
  +미안:명:4
  +미안감:명:1
  +미안수:명:2
  +미안스럽다:형:1
  +미안하다:형:154
  +미안해하다:동:7
  +미안허다:형:3
  +미약하다:형:20
  +미어지다:동:7
  +미어터지다:동:1
  +미역:명:12
  +미역국:명:13
  +미역줄나무:명:1
  +미역취:명:2
  +미연:명:1
  +미열:명:5
  +미온적:관:1
  +미온적:명:4
  +미완:명:6
  +미완성:명:5
  +미용:명:7
  +미용실:명:1
  +미움:명:22
  +미움받다:동:1
  +미워지다:동:3
  +미워하다:동:20
  +미음:명:1
  +미의식:명:24
  +미인:명:29
  +미인계:명:4
  +미인도:명:1
  +미인박명:명:1
  +미인상:명:1
  +미인형:명:1
  +미장센:명:1
  +미장원:명:10
  +미장이:명:2
  +미적:관:145
  +미적:명:19
  +미적거리다:동:1
  +미적대다:동:1
  +미적미적:부:1
  +미적미적거리다:동:1
  +미적미적대다:동:1
  +미적분학:명:2
  +미적지근하다:형:1
  +미전향:명:1
  +미정:명:3
  +미제:명:5
  +미제:명:9
  +미조직:명:1
  +미주알고주알:부:3
  +미증유:명:2
  +미지:명:13
  +미지근하다:형:12
  +미지수:명:6
  +미진하다:형:8
  +미처:부:68
  +미천하다:형:1
  +미추:명:2
  +미치광이:명:3
  +미치다:동:114
  +미치다:동:215
  +미친개:명:1
  +미친년:명:3
  +미친놈:명:6
  +미터:의:264
  +미터기:명:1
  +미터퍼세크:의:2
  +미토마이신:명:3
  +미투리:명:2
  +미트:명:2
  +미트로프:명:4
  +미트볼:명:1
  +미팅:명:39
  +미팅하다:동:2
  +미풍:명:2
  +미풍:명:4
  +미풍양속:명:7
  +미필:명:1
  +미학:명:24
  +미학과:명:1
  +미학사:명:3
  +미학적:관:11
  +미학적:명:2
  +미해결:명:1
  +미행:명:8
  +미행하다:동:8
  +미혹되다:동:2
  +미혹하다:동:2
  +미혼:명:37
  +미혼모:명:2
  +미혼자:명:3
  +미화:명:4
  +미화:명:8
  +미화되다:동:2
  +미화반:명:1
  +미화시키다:동:2
  +미화원:명:19
  +미화하다:동:8
  +미확인:명:1
  +미확정:명:1
  +미흡:명:11
  +미흡하다:형:28
  +믹서:명:3
  +믹서기:명:2
  +믹스:명:4
  +믹스되다:동:1
  +믹스하다:동:2
  +민:명:80
  +민가:명:4
  +민간:명:117
  +민간단체:명:10
  +민간약:명:2
  +민간요법:명:3
  +민간용:명:1
  +민간인:명:12
  +민간전승:명:1
  +민감성:명:5
  +민감하다:형:47
  +민감해지다:동:4
  +민관:명:1
  +민국:명:1
  +민권:명:6
  +민기적거리다:동:2
  +민달팽이:명:1
  +민담:명:3
  +민둥산:명:1
  +민들레:명:5
  +민들레꽃:명:1
  +민란:명:2
  +민망스럽다:형:2
  +민망하다:형:26
  +민망해지다:동:1
  +민망해하다:동:3
  +민물:명:1
  +민박:명:1
  +민박하다:동:1
  +민방:명:9
  +민방론:명:1
  +민방업계:명:2
  +민방위:명:9
  +민방위과:명:3
  +민법:명:2
  +민병대:명:2
  +민복:명:1
  +민본:명:2
  +민본론:명:1
  +민본주의적:관:1
  +민사:명:29
  +민생:명:14
  +민선:명:2
  +민속:명:40
  +민속극:명:1
  +민속놀이:명:7
  +민속복:명:1
  +민속자료:명:1
  +민속제:명:1
  +민속촌:명:8
  +민속품:명:3
  +민속학:명:3
  +민속학자:명:3
  +민속화:명:1
  +민심:명:17
  +민심처:명:1
  +민쑥부쟁이:명:1
  +민어:명:2
  +민영:명:14
  +민영화:명:13
  +민영화하다:동:2
  +민예:명:1
  +민완:명:1
  +민요:명:20
  +민요조:명:1
  +민원:명:23
  +민원실:명:2
  +민원인:명:5
  +민의:명:11
  +민의원:명:2
  +민자:명:1
  +민전:명:9
  +민정:명:13
  +민족:명:582
  +민족극:명:4
  +민족복:명:4
  +민족사:명:8
  +민족사적:관:2
  +민족성:명:4
  +민족의상:명:1
  +민족의식:명:8
  +민족적:관:26
  +민족적:명:3
  +민족정기:명:1
  +민족정신:명:3
  +민족주의:명:40
  +민족주의자:명:4
  +민족주의적:관:5
  +민족주의적:명:3
  +민족중흥:명:2
  +민족진영:명:1
  +민족혼:명:2
  +민주:명:105
  +민주개혁:명:2
  +민주성:명:4
  +민주적:관:17
  +민주적:명:12
  +민주주의:명:110
  +민주주의적:관:9
  +민주주의적:명:1
  +민주주의혁명:명:1
  +민주화:명:119
  +민주화되다:동:5
  +민중:명:485
  +민중가요:명:1
  +민중극적:관:1
  +민중어:명:1
  +민중적:관:8
  +민중적:명:5
  +민첩성:명:5
  +민첩하다:형:6
  +민치:명:1
  +민통선:명:2
  +민트:명:2
  +민폐:명:4
  +민형사:명:1
  +민호:명:2
  +민화:명:1
  +민화:명:4
  +민화적:관:1
  +민화투:명:1
  +민활하다:형:1
  +믿기다:동:16
  +믿다:동:461
  +믿어지다:동:29
  +믿음:명:71
  +믿음성:명:2
  +믿음직스럽다:형:5
  +믿음직하다:형:4
  +밀:명:17
  +밀가루:명:81
  +밀교:명:5
  +밀기울:명:3
  +밀꾼:명:2
  +밀다:동:154
  +밀담:명:1
  +밀대:명:2
  +밀도:명:17
  +밀랍:명:4
  +밀려가다:동:7
  +밀려나다:동:22
  +밀려다니다:동:2
  +밀려들다:동:14
  +밀려오다:동:24
  +밀리:의:6
  +밀리그램:의:13
  +밀리다:동:43
  +밀리다:동:51
  +밀리리터:의:2
  +밀리리터들이:의:1
  +밀리몰:의:2
  +밀리미터:의:122
  +밀림:명:7
  +밀링:명:1
  +밀매:명:5
  +밀물:명:17
  +밀반입:명:1
  +밀반입되다:동:1
  +밀반출:명:2
  +밀반출되다:동:1
  +밀봉:명:3
  +밀봉되다:동:1
  +밀봉시키다:동:1
  +밀봉하다:동:3
  +밀사:명:2
  +밀생하다:동:3
  +밀수:명:4
  +밀수업자:명:1
  +밀수하다:동:1
  +밀실:명:13
  +밀약:명:1
  +밀어:명:1
  +밀어:명:2
  +밀어내다:동:23
  +밀어닥치다:동:2
  +밀어붙이다:동:20
  +밀어젖히다:동:2
  +밀어주다:동:3
  +밀영:명:1
  +밀원:명:1
  +밀입북:명:2
  +밀입북하다:동:1
  +밀전병:명:1
  +밀접성:명:1
  +밀접하다:형:56
  +밀접히:부:3
  +밀지:명:1
  +밀집:명:10
  +밀집되다:동:4
  +밀집하다:동:8
  +밀짚:명:4
  +밀짚모자:명:1
  +밀착:명:8
  +밀착되다:동:6
  +밀착시키다:동:2
  +밀착하다:동:7
  +밀착형:명:1
  +밀쳐놓다:동:1
  +밀치다:동:14
  +밀크:명:5
  +밀크캐러멜:명:2
  +밀크커피:명:2
  +밀폐:명:10
  +밀폐되다:동:3
  +밀항:명:1
  +밀항자:명:1
  +밀회:명:2
  +밉다:형:54
  +밉살스럽다:형:1
  +밉상:명:1
  +밋밋하다:형:5
  +밍밍하다:형:1
  +및:접:792
  +밑:명:334
  +밑간:명:5
  +밑간하다:동:4
  +밑거름:명:10
  +밑구멍:명:3
  +밑그림:명:4
  +밑단:명:9
  +밑돌다:동:9
  +밑동:명:11
  +밑둥치:명:1
  +밑면:명:2
  +밑바닥:명:42
  +밑바탕:명:5
  +밑반찬:명:3
  +밑받침:명:1
  +밑받침되다:동:1
  +밑받침하다:동:3
  +밑변:명:1
  +밑뿌리:명:3
  +밑줄:명:5
  +밑지다:동:5
  +밑창:명:1
  +밑천:명:10
  +밑판:명:12
  +바:명:1
  +바:명:39
  +바:의:460
  +바가지:명:22
  +바가지요금:명:1
  +바게트:명:14
  +바겐세일:명:2
  +바구니:명:33
  +바구미:명:3
  +바깥:명:81
  +바깥꼬리깃:명:8
  +바깥바람:명:3
  +바깥벽:명:1
  +바깥세상:명:6
  +바깥일:명:6
  +바깥쪽:명:30
  +바깥채:명:1
  +바깥출입:명:2
  +바께쓰:명:2
  +바꾸다:동:461
  +바꾸어지다:동:3
  +바꿔치다:동:7
  +바뀌다:동:285
  +바뀌어지다:동:7
  +바나나:명:21
  +바느질:명:9
  +바느질감:명:2
  +바느질거리:명:1
  +바느질되다:동:1
  +바느질집:명:1
  +바느질하다:동:2
  +바늘:명:85
  +바늘구멍:명:6
  +바늘귀:명:2
  +바늘방석:명:1
  +바다:명:424
  +바다가재:명:7
  +바다거북이:명:1
  +바다낚시:명:7
  +바다오리:명:1
  +바다표범:명:1
  +바닥:명:173
  +바닥권:명:4
  +바닥나다:동:3
  +바닥쇠:명:3
  +바닥재:명:1
  +바닷가:명:70
  +바닷고기:명:2
  +바닷길:명:1
  +바닷물:명:31
  +바닷바람:명:10
  +바닷사람:명:5
  +바닷새:명:2
  +바닷장어:명:1
  +바돌:명:1
  +바동거리다:동:2
  +바동대다:동:1
  +바둑:명:19
  +바둑알:명:3
  +바둑판:명:2
  +바드득바드득:부:1
  +바득바득:부:1
  +바들바들:부:3
  +바라다:동:365
  +바라다보다:동:13
  +바라다보이다:동:3
  +바라문:명:1
  +바라보다:동:507
  +바라보여지다:동:1
  +바라보이다:동:2
  +바라뵈다:동:1
  +바라지다:동:2
  +바라크:명:1
  +바락:부:1
  +바락바락:부:1
  +바람:명:35
  +바람:명:432
  +바람:의:136
  +바람개비:명:2
  +바람결:명:3
  +바람기:명:3
  +바람나다:동:6
  +바람둥이:명:6
  +바람떡:명:1
  +바람맞다:동:2
  +바람맞이:명:2
  +바람벽:명:8
  +바람잡이:명:1
  +바람직:명:4
  +바람직스럽다:형:6
  +바람직하다:형:146
  +바람피우다:동:4
  +바랑:명:3
  +바랑이풀:명:2
  +바래다:동:16
  +바래다주다:동:13
  +바래어지다:동:1
  +바래지다:동:1
  +바랭이:명:2
  +바로:부:1,260
  +바로미터:명:1
  +바로바로:부:3
  +바로잡다:동:75
  +바로잡아지다:동:1
  +바로잡혀지다:동:1
  +바로잡히다:동:1
  +바로크:명:1
  +바르다:동:1
  +바르다:동:152
  +바르다:형:201
  +바르르:부:2
  +바른대로:부:7
  +바른말:명:2
  +바른생활:명:5
  +바른손:명:1
  +바른쪽:명:3
  +바른편:명:1
  +바리때:명:1
  +바리바리:명:1
  +바리케이드:명:7
  +바리톤:명:3
  +바바리:명:2
  +바바리코트:명:3
  +바벨:명:1
  +바보:명:79
  +바보상자:명:1
  +바보스럽다:형:4
  +바보짓:명:2
  +바비큐:명:2
  +바빠지다:동:9
  +바쁘다:형:257
  +바삐:부:13
  +바삭바삭하다:형:1
  +바삭하다:형:5
  +바소쿠리:명:1
  +바스락거리다:동:2
  +바스러지다:동:3
  +바싹:부:33
  +바싹바싹:부:1
  +바야흐로:부:12
  +바운드:명:1
  +바울루우:명:2
  +바위:명:90
  +바위박이:명:2
  +바위벼랑:명:2
  +바위산:명:5
  +바위채송화:명:2
  +바위틈:명:5
  +바윗돌:명:3
  +바이:부:1
  +바이러니즘:명:1
  +바이러스:명:27
  +바이러스성:명:2
  +바이블:명:1
  +바이아우트:명:1
  +바이어:명:8
  +바이어스:명:3
  +바이오:명:5
  +바이오테크놀로지:명:1
  +바이올리니스트:명:3
  +바이올린:명:50
  +바이트:명:2
  +바이트:의:13
  +바자회:명:2
  +바작지게꾼:명:1
  +바지:명:4
  +바지:명:81
  +바지게:명:1
  +바지락:명:1
  +바지랑대:명:2
  +바지런하다:형:1
  +바지저고리:명:3
  +바지직:부:1
  +바지춤:명:4
  +바지통:명:2
  +바질:명:6
  +바짓가랑이:명:6
  +바짝:부:40
  +바짝바짝:부:3
  +바쳐지다:동:2
  +바치다:동:1
  +바치다:동:70
  +바캉스:명:5
  +바퀴:명:32
  +바퀴:명:9
  +바퀴:의:39
  +바퀴살:명:2
  +바퀴식:명:1
  +바탕:명:1
  +바탕:명:221
  +바탕색:명:3
  +바탕체:명:2
  +바탕하다:동:7
  +바탱이:명:1
  +바텐더:명:1
  +바통:명:2
  +바투:부:6
  +박:명:2
  +박:의:34
  +박가오나무:명:1
  +박격포:명:1
  +박고지:명:3
  +박고지조림:명:1
  +박과:명:1
  +박꽃:명:6
  +박다:동:74
  +박달나무:명:2
  +박대:명:1
  +박대하다:동:1
  +박동:명:8
  +박람회:명:7
  +박람회장:명:3
  +박래품:명:2
  +박력:명:3
  +박리성:명:1
  +박막:명:1
  +박멸하다:동:1
  +박물관:명:150
  +박물관장:명:1
  +박물원:명:2
  +박물학:명:1
  +박물학자:명:1
  +박박:부:10
  +박복하다:형:1
  +박봉:명:1
  +박빙:명:3
  +박사:명:166
  +박살:명:12
  +박새:명:9
  +박수:명:65
  +박수갈채:명:2
  +박수하다:동:1
  +박스:명:19
  +박식하다:형:2
  +박애:명:1
  +박약하다:형:1
  +박음질:명:1
  +박이다:동:1
  +박자:명:8
  +박장대소:명:1
  +박장대소하다:동:1
  +박정하다:형:1
  +박제:명:2
  +박제되다:동:2
  +박제화:명:1
  +박제화되다:동:1
  +박쥐:명:7
  +박쥐나무:명:1
  +박지르다:동:1
  +박진감:명:2
  +박진성:명:1
  +박진적:명:1
  +박차:명:7
  +박차다:동:19
  +박치기:명:1
  +박탈:명:1
  +박탈감:명:1
  +박탈당하다:동:5
  +박탈되다:동:6
  +박탈하다:동:10
  +박테리아:명:1
  +박통:명:1
  +박하:명:1
  +박하다:형:1
  +박하사탕:명:1
  +박학:명:1
  +박학다식:명:1
  +박해:명:3
  +박혀지다:동:2
  +박히다:동:75
  +밖:명:739
  +반:명:241
  +반:명:265
  +반가부좌:명:1
  +반가움:명:7
  +반가워하다:동:3
  +반가이:부:1
  +반감:명:5
  +반감기:명:1
  +반감되다:동:2
  +반감되어지다:동:1
  +반감시키다:동:1
  +반감하다:동:1
  +반갑다:형:118
  +반값:명:3
  +반강제:명:2
  +반강제적:명:1
  +반거들충이:명:1
  +반격:명:11
  +반격론:명:1
  +반격하다:동:3
  +반경:명:4
  +반경례:명:1
  +반고전주의적:관:2
  +반고전주의적:명:2
  +반공:명:14
  +반공주의:명:1
  +반과학적:명:1
  +반구상적:명:1
  +반구형:명:1
  +반국가:명:4
  +반국가적:명:1
  +반군:명:14
  +반군부:명:3
  +반기:명:6
  +반기다:동:19
  +반나마:부:2
  +반나절:명:5
  +반납:명:2
  +반납되다:동:3
  +반납하다:동:4
  +반내성주의:명:1
  +반년:명:11
  +반노예적:명:1
  +반농담:명:1
  +반농민적:관:3
  +반달:명:8
  +반달곰:명:9
  +반당적:관:1
  +반대:명:188
  +반대급부:명:5
  +반대기:명:4
  +반대되다:동:8
  +반대론:명:1
  +반대론자:명:2
  +반대말:명:2
  +반대자:명:2
  +반대중성:명:1
  +반대쪽:명:7
  +반대파:명:3
  +반대편:명:17
  +반대하다:동:107
  +반덤핑:명:6
  +반도:명:9
  +반도체:명:13
  +반독재:명:4
  +반독점:명:2
  +반동:명:38
  +반동분자:명:1
  +반동성:명:2
  +반동적:관:1
  +반동적:명:3
  +반드시:부:280
  +반들거리다:동:1
  +반들반들:부:1
  +반들반들하다:형:1
  +반듯이:부:1
  +반듯하다:형:15
  +반등:명:3
  +반등하다:동:1
  +반딧불:명:3
  +반라:명:2
  +반란:명:32
  +반란군:명:1
  +반란죄:명:1
  +반려:명:2
  +반려:명:3
  +반려되다:동:4
  +반려시키다:동:1
  +반려자:명:1
  +반려하다:동:4
  +반론:명:18
  +반리얼리즘:명:3
  +반리얼리즘론:명:1
  +반리얼리즘적:관:4
  +반리얼리즘적:명:3
  +반만년:명:3
  +반말:명:12
  +반면:명:208
  +반면교사:명:1
  +반명제:명:1
  +반명함판:명:1
  +반목:명:8
  +반목하다:동:1
  +반문:명:11
  +반문:명:7
  +반문명:명:1
  +반문하다:동:24
  +반문화:명:1
  +반문화적:관:2
  +반미:명:7
  +반민:명:1
  +반민족:명:1
  +반민족적:관:2
  +반민주:명:14
  +반민주성:명:2
  +반민주적:관:3
  +반민주적:명:2
  +반민주주의적:명:1
  +반민중성:명:2
  +반민중적:관:2
  +반민중적:명:6
  +반바지:명:9
  +반박:명:6
  +반박문:명:7
  +반박하다:동:19
  +반반:명:5
  +반반하다:형:3
  +반발:명:60
  +반발력:명:2
  +반발심:명:1
  +반발하다:동:24
  +반배:명:2
  +반벌거숭이:명:1
  +반변증법적:명:1
  +반병:명:1
  +반병신:명:2
  +반보:명:1
  +반복:명:18
  +반복되다:동:45
  +반복적:관:1
  +반복적:명:7
  +반복하다:동:44
  +반볼셰비즘:명:1
  +반봉건:명:1
  +반봉건:명:6
  +반봉건적:관:1
  +반봉건적:명:1
  +반분하다:동:1
  +반비:명:3
  +반비례하다:동:1
  +반비판:명:2
  +반비판하다:동:1
  +반사:명:10
  +반사각:명:1
  +반사되다:동:13
  +반사등:명:1
  +반사막:명:1
  +반사시키다:동:7
  +반사식:명:1
  +반사실주의적:명:1
  +반사적:명:15
  +반사회적:관:1
  +반사회적:명:2
  +반상:명:2
  +반상:명:2
  +반상회:명:3
  +반색:명:4
  +반색하다:동:4
  +반생:명:1
  +반생명:명:8
  +반생명성:명:1
  +반생명적:명:8
  +반석:명:2
  +반성:명:52
  +반성문:명:1
  +반성적:관:8
  +반성적:명:1
  +반성하다:동:44
  +반세기:명:9
  +반송하다:동:1
  +반수:명:1
  +반수:명:5
  +반숙:명:4
  +반식민:명:11
  +반식민적:관:1
  +반식민지:명:1
  +반식민지적:관:1
  +반신:명:2
  +반신반의하다:동:4
  +반신반인:명:1
  +반신불수:명:2
  +반신욕:명:1
  +반실성하다:동:1
  +반실증주의적:관:1
  +반야:명:2
  +반야나무:명:5
  +반야바라밀:명:1
  +반역:명:1
  +반역사성:명:1
  +반역자:명:5
  +반열:명:6
  +반영:명:21
  +반영구적:명:3
  +반영되다:동:28
  +반영론적:관:1
  +반영시키다:동:3
  +반영하다:동:98
  +반올림:명:3
  +반올림하다:동:3
  +반왕조:명:1
  +반외세:명:1
  +반원자력:명:1
  +반원형:명:1
  +반윤리적:관:1
  +반응:명:176
  +반응되다:동:1
  +반응성:명:1
  +반응시키다:동:1
  +반응하다:동:28
  +반의사:명:1
  +반인간:명:7
  +반인간적:명:1
  +반인권적:명:1
  +반인륜:명:2
  +반인륜성:명:1
  +반인륜적:관:1
  +반인륜적:명:1
  +반인종:명:1
  +반일:명:2
  +반입:명:3
  +반입되다:동:2
  +반입하다:동:2
  +반자연주의적:관:3
  +반작용:명:8
  +반작용력:명:5
  +반장:명:93
  +반전:명:3
  +반전:명:8
  +반전되다:동:4
  +반전시키다:동:1
  +반절:명:8
  +반절기:명:3
  +반점:명:34
  +반정:명:1
  +반정부:명:18
  +반정부적:관:1
  +반정부적:명:1
  +반정신병자:명:1
  +반정의:명:1
  +반제:명:2
  +반주:명:1
  +반주:명:12
  +반죽:명:29
  +반죽가:명:1
  +반죽기:명:1
  +반죽하다:동:8
  +반증:명:7
  +반증되다:동:1
  +반증하다:동:8
  +반지:명:29
  +반지르르:부:1
  +반지르르하다:형:1
  +반지름:명:6
  +반진골적:관:1
  +반질거리다:동:1
  +반질반질:부:1
  +반질반질하다:형:1
  +반집:명:2
  +반짝:부:12
  +반짝:부:2
  +반짝거리다:동:16
  +반짝반짝:부:6
  +반짝반짝거리다:동:1
  +반짝반짝하다:형:1
  +반짝이다:동:23
  +반짝하다:동:3
  +반쪽:명:9
  +반쪽이:명:1
  +반찬:명:60
  +반찬거리:명:2
  +반체제:명:8
  +반추상적:명:1
  +반추하다:동:2
  +반출:명:2
  +반출입:명:1
  +반출증:명:6
  +반칙:명:7
  +반통일:명:2
  +반투명:명:2
  +반투명하다:형:1
  +반파:명:1
  +반파쇼:명:1
  +반팔:명:3
  +반평생:명:2
  +반포:명:4
  +반포되다:동:3
  +반포하다:동:1
  +반폭:명:1
  +반하다:동:15
  +반하다:동:70
  +반학교:명:4
  +반항:명:10
  +반항기:명:1
  +반항심:명:2
  +반항아:명:1
  +반항적:관:2
  +반항적:명:5
  +반항하다:동:5
  +반핵:명:3
  +반향:명:6
  +반혁명:명:1
  +반환:명:11
  +반환되다:동:2
  +반환받다:동:2
  +반환일:명:1
  +반환점:명:8
  +반환하다:동:1
  +반희곡적:관:1
  +반히:부:1
  +받다:동:2,566
  +받다:동:5
  +받들다:동:21
  +받아들여지다:동:65
  +받아들이다:동:279
  +받아먹다:동:9
  +받아쓰기:명:3
  +받아쓰다:동:1
  +받아지다:동:1
  +받아치다:동:1
  +받이:명:1
  +받치다:동:44
  +받치다:동:6
  +받침:명:24
  +받침대:명:1
  +받침돌:명:1
  +받침점:명:3
  +받히다:동:2
  +발:명:1
  +발:명:1
  +발:명:380
  +발:명:4
  +발:의:10
  +발:의:3
  +발가락:명:41
  +발가벗겨지다:동:2
  +발가벗기다:동:2
  +발가벗다:동:2
  +발각되다:동:13
  +발간:명:12
  +발간되다:동:9
  +발간사:명:2
  +발간하다:동:12
  +발갛다:형:6
  +발걸음:명:49
  +발걸이:명:1
  +발견:명:71
  +발견되다:동:138
  +발견하다:동:267
  +발고아:명:1
  +발고하다:동:1
  +발광:명:4
  +발광:명:9
  +발광하다:동:1
  +발군:명:3
  +발굴:명:22
  +발굴되다:동:9
  +발굴물:명:1
  +발굴지:명:1
  +발굴하다:동:22
  +발그대대하다:형:1
  +발그레:부:1
  +발그스레:부:3
  +발그스름하다:형:1
  +발급:명:7
  +발급되다:동:1
  +발급받다:동:9
  +발급식:명:1
  +발급하다:동:7
  +발기:명:1
  +발기되다:동:1
  +발기력:명:1
  +발길:명:49
  +발길질:명:9
  +발꿈치:명:2
  +발끈하다:동:6
  +발끝:명:22
  +발놀림:명:1
  +발단:명:8
  +발달:명:167
  +발달되다:동:33
  +발달사:명:3
  +발달시키다:동:18
  +발달하다:동:226
  +발대식:명:1
  +발돋움:명:6
  +발돋움하다:동:12
  +발동:명:7
  +발동기:명:3
  +발동되다:동:2
  +발동선:명:3
  +발동하다:동:10
  +발뒤꿈치:명:14
  +발등:명:21
  +발딱:부:3
  +발라내다:동:1
  +발라당:부:1
  +발라드:명:6
  +발라지다:동:3
  +발랄하다:형:10
  +발랄해지다:동:1
  +발레:명:54
  +발레가:명:1
  +발레계:명:1
  +발레단:명:4
  +발레리나:명:2
  +발령:명:9
  +발령되다:동:1
  +발령받다:동:2
  +발령하다:동:6
  +발로:명:5
  +발로되다:동:1
  +발리다:동:7
  +발림:명:1
  +발맞추다:동:9
  +발매:명:7
  +발매기:명:2
  +발매되다:동:3
  +발매식:명:1
  +발매하다:동:2
  +발명:명:2
  +발명:명:22
  +발명가:명:2
  +발명되다:동:13
  +발명자:명:2
  +발명품:명:7
  +발명하다:동:23
  +발모:명:1
  +발목:명:35
  +발문:명:1
  +발밑:명:7
  +발바닥:명:17
  +발발:명:1
  +발발하다:동:2
  +발버둥:명:13
  +발병:명:3
  +발병되다:동:1
  +발병률:명:3
  +발병하다:동:7
  +발본색원:명:1
  +발부:명:6
  +발부되다:동:15
  +발부받다:동:11
  +발부하다:동:5
  +발붙이다:동:6
  +발뺌:명:6
  +발뺌하다:동:2
  +발사:명:9
  +발사대:명:11
  +발사되다:동:4
  +발사음:명:1
  +발사하다:동:4
  +발산:명:1
  +발산되다:동:3
  +발산하다:동:8
  +발상:명:67
  +발상되다:동:1
  +발상법:명:3
  +발상지:명:5
  +발생:명:76
  +발생되다:동:7
  +발생량:명:9
  +발생론:명:1
  +발생률:명:2
  +발생시키다:동:4
  +발생원:명:1
  +발생적:관:1
  +발생적:명:7
  +발생지:명:2
  +발생하다:동:289
  +발생형:명:1
  +발선:명:1
  +발설:명:2
  +발설되다:동:1
  +발설자:명:2
  +발설하다:동:1
  +발성:명:1
  +발소리:명:7
  +발송:명:4
  +발송되다:동:1
  +발송하다:동:8
  +발순하다:동:1
  +발신:명:2
  +발신인:명:2
  +발신자:명:1
  +발싸심:명:2
  +발아래:명:1
  +발악:명:5
  +발악하다:동:1
  +발암:명:4
  +발암성:명:2
  +발언:명:115
  +발언권:명:4
  +발언대:명:1
  +발언하다:동:5
  +발열:명:5
  +발원:명:1
  +발원지:명:20
  +발원하다:동:32
  +발육:명:29
  +발육되다:동:1
  +발육하다:동:3
  +발음:명:33
  +발음하다:동:7
  +발의:명:1
  +발인:명:2
  +발인식:명:1
  +발자국:명:39
  +발자취:명:7
  +발작:명:11
  +발작적:명:3
  +발장:명:6
  +발재간:명:3
  +발적:명:1
  +발전:명:45
  +발전:명:481
  +발전기:명:16
  +발전기:명:4
  +발전되다:동:37
  +발전사:명:2
  +발전상:명:1
  +발전성:명:1
  +발전소:명:58
  +발전시켜지다:동:1
  +발전시키다:동:86
  +발전안:명:1
  +발전적:관:3
  +발전적:명:5
  +발전하다:동:226
  +발제자:명:2
  +발족:명:10
  +발족되다:동:5
  +발족시키다:동:10
  +발족식:명:2
  +발족하다:동:4
  +발주:명:5
  +발주가리:명:1
  +발주하다:동:3
  +발진:명:1
  +발진하다:동:2
  +발질:명:1
  +발짓:명:3
  +발짝:의:26
  +발찌:명:2
  +발착:명:1
  +발채:명:1
  +발출:명:3
  +발출하다:동:4
  +발췌:명:2
  +발췌하다:동:1
  +발치:명:3
  +발칵:부:7
  +발코니:명:3
  +발탁:명:4
  +발탁되다:동:7
  +발탁하다:동:4
  +발톱:명:17
  +발파:명:1
  +발판:명:27
  +발포:명:15
  +발포기:명:1
  +발포물:명:1
  +발표:명:187
  +발표되다:동:70
  +발표력:명:1
  +발표문:명:14
  +발표설:명:1
  +발표자:명:9
  +발표하다:동:265
  +발표회:명:7
  +발하다:동:17
  +발한:명:1
  +발행:명:1
  +발행:명:36
  +발행가:명:1
  +발행권:명:1
  +발행되다:동:19
  +발행사:명:1
  +발행인:명:6
  +발행자:명:3
  +발행하다:동:21
  +발현:명:6
  +발현되다:동:8
  +발현시키다:동:3
  +발호:명:1
  +발화:명:1
  +발효:명:10
  +발효:명:9
  +발효되다:동:1
  +발효되다:동:8
  +발효법:명:1
  +발효시키다:동:3
  +발효일:명:1
  +발효하다:동:1
  +발효하다:동:3
  +발휘:명:6
  +발휘되다:동:15
  +발휘하다:동:107
  +발흥:명:1
  +발흥하다:동:1
  +발흥하다:동:1
  +밝기:명:1
  +밝다:동:18
  +밝다:형:174
  +밝아지다:동:17
  +밝이:명:1
  +밝혀내다:동:50
  +밝혀지다:동:168
  +밝히다:동:846
  +밟다:동:114
  +밟히다:동:8
  +밤:명:29
  +밤:명:694
  +밤거리:명:10
  +밤공기:명:2
  +밤글:명:1
  +밤기운:명:2
  +밤길:명:9
  +밤나무:명:20
  +밤낮:명:15
  +밤낮:부:13
  +밤낮없이:부:2
  +밤늦다:형:35
  +밤무대:명:5
  +밤바다:명:2
  +밤바람:명:5
  +밤배:명:1
  +밤사이:명:1
  +밤새:명:21
  +밤새껏:부:2
  +밤새다:동:17
  +밤새우다:동:16
  +밤색:명:20
  +밤샘:명:19
  +밤샘하다:동:2
  +밤송이:명:5
  +밤안개:명:6
  +밤알:명:5
  +밤이슬:명:4
  +밤일:명:5
  +밤일하다:동:1
  +밤잠:명:14
  +밤중:명:18
  +밤차:명:1
  +밤참:명:2
  +밤콩:명:6
  +밤톨:명:1
  +밤하늘:명:34
  +밥:명:1
  +밥:명:550
  +밥값:명:7
  +밥거리:명:1
  +밥그릇:명:43
  +밥내:명:1
  +밥맛:명:20
  +밥물:명:8
  +밥반찬:명:1
  +밥벌이:명:5
  +밥상:명:63
  +밥상머리:명:2
  +밥솥:명:19
  +밥숟가락:명:1
  +밥숟갈:명:1
  +밥알:명:11
  +밥주걱:명:1
  +밥주발:명:1
  +밥줄:명:6
  +밥집:명:1
  +밥집:명:3
  +밥터:명:1
  +밥통:명:13
  +밥풀:명:2
  +밥풀떼기:명:9
  +밥하다:동:7
  +밧데리:명:2
  +밧줄:명:12
  +방:명:2
  +방:명:608
  +방:의:9
  +방갓:명:1
  +방게:명:1
  +방계:명:6
  +방고래:명:1
  +방곡령:명:2
  +방공호:명:4
  +방과:명:5
  +방관적:관:1
  +방관하다:동:7
  +방구들:명:1
  +방구리:명:6
  +방구석:명:3
  +방귀:명:28
  +방귀론:명:1
  +방귀쟁이:명:1
  +방글방글:부:2
  +방금:명:13
  +방금:부:75
  +방긋:부:3
  +방기하다:동:5
  +방뇨:명:2
  +방뇨하다:동:1
  +방대하다:형:17
  +방도:명:11
  +방동사니:명:1
  +방랑:명:7
  +방랑벽:명:2
  +방랑인:명:2
  +방랑자:명:9
  +방랑하다:동:2
  +방량:명:2
  +방량하다:동:1
  +방러:명:1
  +방류:명:3
  +방류되다:동:2
  +방류하다:동:6
  +방만:명:1
  +방만하다:형:2
  +방망이:명:10
  +방망이질:명:4
  +방망이질하다:동:2
  +방면:명:1
  +방면:명:26
  +방면되다:동:1
  +방명:명:1
  +방문:명:123
  +방문:명:43
  +방문객:명:6
  +방문자:명:1
  +방문턱:명:1
  +방문하다:동:113
  +방미:명:5
  +방미설:명:1
  +방바닥:명:27
  +방방:부:3
  +방방곡곡:명:9
  +방방이:부:1
  +방벌적:관:1
  +방범:명:11
  +방범대원:명:1
  +방범등:명:1
  +방범망:명:1
  +방법:명:1,061
  +방법론:명:28
  +방법론적:관:8
  +방법론적:명:7
  +방법적:관:2
  +방법적:명:1
  +방벽:명:4
  +방부되다:동:1
  +방부성:명:1
  +방부제:명:6
  +방부하다:동:1
  +방북:명:10
  +방북설:명:1
  +방북하다:동:1
  +방불하다:형:15
  +방비:명:2
  +방비대:명:1
  +방사기:명:2
  +방사능:명:4
  +방사선:명:9
  +방사선과:명:1
  +방사선형:명:1
  +방사성:명:25
  +방사주:명:1
  +방사하다:동:2
  +방사형:명:1
  +방석:명:6
  +방선:명:1
  +방선하다:동:3
  +방성대곡:명:1
  +방세:명:2
  +방손:명:2
  +방송:명:396
  +방송가:명:19
  +방송계:명:9
  +방송관:명:2
  +방송국:명:109
  +방송권:명:1
  +방송극:명:3
  +방송되다:동:13
  +방송량:명:2
  +방송망:명:1
  +방송명:명:1
  +방송사:명:37
  +방송업체:명:1
  +방송인:명:6
  +방송장이:명:1
  +방송하다:동:25
  +방송학과:명:1
  +방수:명:6
  +방수되다:동:1
  +방수량:명:1
  +방수성:명:1
  +방습:명:1
  +방식:명:1
  +방식:명:448
  +방실방실:부:1
  +방심:명:6
  +방심하다:동:6
  +방아:명:4
  +방아깨비:명:3
  +방아쇠:명:8
  +방아쇠울:명:1
  +방아쇠점:명:1
  +방아풀:명:1
  +방아품:명:1
  +방안:명:234
  +방앗간:명:8
  +방어:명:38
  +방어되다:동:1
  +방어벽:명:2
  +방어용:명:1
  +방어율:명:4
  +방어율왕:명:1
  +방어자:명:2
  +방어적:관:4
  +방어적:명:1
  +방어하다:동:12
  +방언:명:3
  +방열:명:1
  +방열하다:동:1
  +방영:명:19
  +방영되다:동:28
  +방영분:명:2
  +방영하다:동:12
  +방울:명:33
  +방울:명:35
  +방울방울:명:1
  +방울뱀:명:13
  +방울새:명:1
  +방울토마토:명:1
  +방위:명:17
  +방위:명:38
  +방위력:명:1
  +방위비:명:1
  +방위성금:명:1
  +방위세:명:3
  +방유벽:명:1
  +방음:명:1
  +방음문:명:1
  +방음벽:명:8
  +방일:명:14
  +방자하다:형:5
  +방장:명:12
  +방장:명:3
  +방장:명:3
  +방적:명:1
  +방적기:명:2
  +방점:명:2
  +방정:명:2
  +방정맞다:형:4
  +방정맞아지다:동:1
  +방정식:명:5
  +방정하다:형:1
  +방제:명:1
  +방조:명:2
  +방조자:명:1
  +방조제:명:5
  +방조하다:동:2
  +방종:명:3
  +방주:명:5
  +방죽:명:9
  +방중:명:4
  +방증하다:동:1
  +방지:명:60
  +방지되다:동:3
  +방지책:명:2
  +방지하다:동:37
  +방직:명:5
  +방차:명:2
  +방책:명:3
  +방천:명:9
  +방천둑:명:1
  +방청객:명:4
  +방청석:명:8
  +방청하다:동:1
  +방축:명:1
  +방출:명:13
  +방출되다:동:25
  +방출량:명:6
  +방출하다:동:13
  +방충제:명:4
  +방치:명:11
  +방치되다:동:26
  +방치하다:동:28
  +방침:명:220
  +방탄복:명:1
  +방탕아:명:1
  +방탕자:명:1
  +방탕하다:형:3
  +방파제:명:18
  +방판:명:1
  +방패:명:11
  +방패막이:명:2
  +방편:명:35
  +방풍:명:2
  +방풍림:명:1
  +방하하다:동:1
  +방학:명:144
  +방학식:명:1
  +방한:명:3
  +방한:명:37
  +방한모:명:2
  +방한복:명:2
  +방한하다:동:7
  +방해:명:45
  +방해꾼:명:1
  +방해당하다:동:1
  +방해되다:동:2
  +방해물:명:3
  +방해받다:동:6
  +방해죄:명:12
  +방해하다:동:38
  +방향:명:426
  +방향성:명:4
  +방향안:명:2
  +방호:명:1
  +방호벽:명:3
  +방호복:명:1
  +방화:명:17
  +방화:명:2
  +방화범:명:1
  +방화벽:명:1
  +방황:명:11
  +방황하다:동:20
  +밭:명:147
  +밭갈이:명:1
  +밭고랑:명:1
  +밭농사:명:16
  +밭다:동:2
  +밭다리:명:1
  +밭두둑:명:1
  +밭두렁:명:3
  +밭둑:명:2
  +밭둔덕:명:1
  +밭떼기:명:1
  +밭머리:명:2
  +밭문서:명:1
  +밭언덕:명:1
  +밭이랑:명:1
  +밭일:명:3
  +밭일하다:동:1
  +밭작물:명:3
  +밭치다:동:5
  +밭틀:명:1
  +배:명:1
  +배:명:245
  +배:명:261
  +배:명:35
  +배:명:443
  +배:의:24
  +배가:명:1
  +배가되다:동:2
  +배가시키다:동:2
  +배가하다:동:1
  +배격:명:1
  +배격되다:동:1
  +배격하다:동:11
  +배경:명:189
  +배고프다:형:30
  +배고픔:명:7
  +배곯다:동:1
  +배관:명:6
  +배관공:명:2
  +배구:명:15
  +배구공:명:2
  +배금주의:명:3
  +배급:명:12
  +배급되다:동:5
  +배급량:명:1
  +배급받다:동:1
  +배급사:명:1
  +배급소:명:1
  +배급제:명:3
  +배급품:명:1
  +배급하다:동:3
  +배기:명:1
  +배기:명:2
  +배기가스:명:15
  +배기다:동:6
  +배기량:명:3
  +배꼽:명:22
  +배꽃:명:6
  +배나무:명:11
  +배낭:명:14
  +배낭여행:명:13
  +배낭족:명:1
  +배냉:명:1
  +배뇨량:명:1
  +배다:동:23
  +배다:동:60
  +배다:형:1
  +배다르다:형:2
  +배달:명:23
  +배달꾼:명:1
  +배달되다:동:9
  +배달시키다:동:1
  +배달업:명:1
  +배달원:명:4
  +배달하다:동:12
  +배당:명:1
  +배당:명:10
  +배당금:명:5
  +배당되다:동:4
  +배당률:명:6
  +배당받다:명:1
  +배당하다:동:3
  +배드민턴:명:18
  +배란:명:4
  +배란기:명:2
  +배란되다:동:1
  +배란일:명:11
  +배래:명:6
  +배럴:의:2
  +배려:명:42
  +배려되다:동:2
  +배려하다:동:12
  +배력:명:1
  +배리다:동:1
  +배면:명:6
  +배미:명:1
  +배반:명:2
  +배반자:명:1
  +배반하다:동:11
  +배배:부:2
  +배변:명:2
  +배부르다:형:18
  +배부하다:동:2
  +배분:명:19
  +배분되다:동:1
  +배분하다:동:4
  +배불:명:1
  +배불뚝이:명:2
  +배불론:명:1
  +배불리:부:9
  +배산:명:1
  +배산임수:명:3
  +배상:명:27
  +배상금:명:2
  +배상하다:동:8
  +배색:명:5
  +배석하다:동:3
  +배설:명:8
  +배설되다:동:6
  +배설물:명:7
  +배설시키다:동:1
  +배설하다:동:3
  +배속:의:1
  +배속되다:동:4
  +배속받다:동:1
  +배수:명:1
  +배수:명:1
  +배수:명:1
  +배수:명:6
  +배수구:명:3
  +배수진:명:1
  +배수하다:동:1
  +배스:명:1
  +배시시:부:7
  +배신:명:1
  +배신:명:28
  +배신감:명:8
  +배신당하다:동:3
  +배신자:명:3
  +배신적:명:1
  +배신하다:동:6
  +배심원:명:2
  +배알:명:1
  +배알하다:동:1
  +배양:명:5
  +배양되다:동:1
  +배양하다:동:2
  +배어나다:동:6
  +배어들다:동:9
  +배어머신:명:1
  +배역:명:25
  +배역되다:동:1
  +배역진:명:3
  +배열:명:15
  +배열되다:동:7
  +배열하다:동:8
  +배영:명:6
  +배우:명:99
  +배우난:명:1
  +배우다:동:457
  +배우자:명:20
  +배우적:관:1
  +배움터:명:1
  +배웅:명:1
  +배웅하다:동:14
  +배이다:동:3
  +배임:명:8
  +배임수재:명:2
  +배재기:명:6
  +배전:명:1
  +배전:명:3
  +배점:명:1
  +배정:명:5
  +배정되다:동:9
  +배정받다:동:1
  +배정하다:동:10
  +배제:명:4
  +배제되다:동:28
  +배제법:명:2
  +배제시키다:동:5
  +배제하다:동:47
  +배중률:명:5
  +배지:명:6
  +배지기:명:1
  +배짱:명:10
  +배차:명:11
  +배창자:명:1
  +배척:명:4
  +배척당하다:동:2
  +배척하다:동:11
  +배추:명:47
  +배추김치:명:5
  +배추벌레:명:1
  +배출:명:24
  +배출구:명:2
  +배출되다:동:20
  +배출되다:동:3
  +배출량:명:6
  +배출로:명:1
  +배출시키다:동:2
  +배출하다:동:15
  +배출하다:동:16
  +배치:명:29
  +배치:명:9
  +배치군:명:2
  +배치되다:동:2
  +배치되다:동:25
  +배치되다:동:6
  +배치하다:동:25
  +배치하다:동:7
  +배타성:명:1
  +배타적:관:5
  +배타적:명:16
  +배타주의:명:2
  +배탈:명:3
  +배태되다:동:4
  +배태하다:동:4
  +배터리:명:5
  +배턴:명:14
  +배통:명:2
  +배편:명:2
  +배포:명:1
  +배포:명:7
  +배포권:명:1
  +배포되다:동:3
  +배포하다:동:13
  +배합:명:8
  +배합되다:동:3
  +배합토:명:5
  +배합하다:동:2
  +배회:명:1
  +배회하다:동:11
  +배후:명:32
  +배후지:명:1
  +백:관:89
  +백:명:13
  +백:명:4
  +백:명:5
  +백:수:8
  +백가:명:1
  +백가쟁명:명:1
  +백견:명:1
  +백경채:명:1
  +백곡:명:1
  +백골:명:1
  +백골단:명:16
  +백과:명:3
  +백과사전:명:2
  +백구두:명:1
  +백군:명:2
  +백기:명:5
  +백날:부:1
  +백내장:명:10
  +백년가약:명:3
  +백년대계:명:2
  +백년손:명:1
  +백년지대계:명:1
  +백년해로:명:2
  +백단나무:명:1
  +백답:명:1
  +백댄싱:명:1
  +백댄싱하다:동:1
  +백도라지꽃:명:1
  +백두:관:1
  +백두:명:2
  +백두옹:명:1
  +백라:명:2
  +백란과:명:2
  +백로:명:1
  +백로:명:2
  +백마:명:17
  +백만:관:20
  +백만장자:명:3
  +백면귀:명:1
  +백면서생:명:2
  +백면포:명:2
  +백모:명:1
  +백무문능:명:1
  +백문:명:1
  +백미:명:1
  +백미:명:4
  +백미러:명:2
  +백바가지:명:1
  +백반:명:1
  +백발:명:1
  +백발:명:7
  +백발백중:명:1
  +백방:명:5
  +백번:부:10
  +백분:부:1
  +백사:명:1
  +백사:명:1
  +백사십:수:1
  +백사장:명:9
  +백삼십:수:1
  +백색:명:28
  +백서:명:3
  +백선:명:3
  +백선균:명:1
  +백설:명:1
  +백설탕:명:3
  +백성:명:142
  +백세목:명:1
  +백수:명:2
  +백수십:관:3
  +백스윙:명:2
  +백신:명:1
  +백십:수:3
  +백십육:수:3
  +백십이:수:2
  +백안시하다:동:4
  +백약:명:1
  +백양나무:명:7
  +백억:수:1
  +백여시:명:2
  +백열:명:1
  +백열등:명:2
  +백열전등:명:1
  +백오:관:1
  +백오:수:2
  +백오십:관:1
  +백오십:수:2
  +백오십만:관:1
  +백오십오:관:1
  +백옥:명:1
  +백육:수:1
  +백육십:수:1
  +백육십칠:수:3
  +백은:명:1
  +백의:명:3
  +백의민족:명:3
  +백이십:관:4
  +백이십팔:관:1
  +백이십팔:수:2
  +백인:명:29
  +백일:명:3
  +백일몽:명:3
  +백일장:명:3
  +백일청천:명:1
  +백일하:명:1
  +백자:명:16
  +백저:명:1
  +백저포:명:1
  +백정:명:2
  +백정층:명:18
  +백조:명:6
  +백주:명:1
  +백중:명:1
  +백중:명:2
  +백중날:명:1
  +백중세:명:1
  +백중절:명:1
  +백지:명:8
  +백지도:명:1
  +백지상태:명:1
  +백지장:명:6
  +백지화:명:2
  +백지화되다:동:2
  +백지화시키다:동:1
  +백지화하다:동:4
  +백질:명:1
  +백차:명:15
  +백천만:관:1
  +백체:명:1
  +백출하다:동:1
  +백치:명:4
  +백칠십:관:1
  +백칠십오:관:1
  +백칠십오:수:1
  +백칠십이:수:1
  +백태:명:2
  +백팔:수:1
  +백팔십:관:1
  +백팔십도:명:4
  +백팔십도제:명:1
  +백팔십삼:수:1
  +백포도주:명:1
  +백한:관:2
  +백합:명:2
  +백합:명:2
  +백합과:명:1
  +백합화:명:1
  +백해무익:명:1
  +백핸드:명:1
  +백혈병:명:6
  +백호:명:7
  +백호수:명:2
  +백화:명:1
  +백화점:명:111
  +백화점식:명:1
  +백화제방:명:1
  +백회:명:1
  +밴:명:3
  +밴댕이:명:1
  +밴댕이젓:명:1
  +밴드:명:7
  +밴드:명:7
  +밴드위스:명:2
  +밴텀급:명:2
  +밸:명:2
  +밸러스트:명:1
  +밸런스:명:2
  +밸브:명:2
  +뱀:명:38
  +뱀띠:명:2
  +뱀장어:명:2
  +뱀탕:명:1
  +뱀파이어:명:2
  +뱃가죽:명:4
  +뱃고동:명:1
  +뱃구레:명:2
  +뱃길:명:3
  +뱃놈:명:15
  +뱃말:명:1
  +뱃머리:명:4
  +뱃멀미:명:1
  +뱃사공:명:2
  +뱃사람:명:87
  +뱃삯:명:2
  +뱃살:명:3
  +뱃속:명:3
  +뱃전:명:19
  +뱅뱅:부:1
  +뱅크:명:4
  +뱅킹:명:3
  +뱉다:동:39
  +뱉어지다:동:1
  +버거:명:4
  +버겁다:형:9
  +버그:명:1
  +버금가다:동:9
  +버너:명:4
  +버둥거리다:동:3
  +버둥대다:동:1
  +버드나무:명:12
  +버드나뭇과:명:1
  +버드러지다:동:1
  +버드쟁이나물:명:1
  +버들:명:1
  +버들개지:명:1
  +버들잎:명:1
  +버들치:명:13
  +버러지:명:2
  +버럭:부:21
  +버럭버럭:부:3
  +버려두다:동:6
  +버려지다:동:40
  +버력:명:3
  +버르집다:동:1
  +버릇:명:90
  +버릇없다:형:10
  +버릇없이:부:1
  +버릇하다:보:2
  +버리다:동:310
  +버리다:보:1,330
  +버림받다:동:10
  +버마재비:명:1
  +버무리다:동:13
  +버물리다:동:1
  +버버린:명:2
  +버벅거리다:동:1
  +버블:명:1
  +버석거리다:동:1
  +버석버석하다:형:1
  +버선:명:5
  +버섯:명:30
  +버섯구름:명:2
  +버스:명:300
  +버스료:명:1
  +버스비:명:1
  +버스업계:명:2
  +버스업자:명:2
  +버스표:명:1
  +버전:명:9
  +버젓이:부:25
  +버젓하다:형:5
  +버짐:명:1
  +버찌:명:1
  +버캐:명:1
  +버클:명:3
  +버터:명:58
  +버터볼:명:1
  +버튼:명:18
  +버튼식:명:1
  +버튼형:명:1
  +버티다:동:85
  +버티어지다:동:1
  +버팀기둥:명:1
  +버팀대:명:1
  +버팀목:명:4
  +벅벅:부:3
  +벅수:명:2
  +벅차다:형:29
  +벅차오르다:동:1
  +번:의:1,239
  +번갈다:동:41
  +번개:명:32
  +번갯불:명:5
  +번거롭다:형:27
  +번견:명:1
  +번뇌:명:10
  +번뇌하다:동:2
  +번다스럽다:형:1
  +번데기:명:2
  +번득이다:동:6
  +번들거리다:동:14
  +번들대다:동:1
  +번들번들:부:1
  +번들번들해지다:동:1
  +번듯이:부:2
  +번듯하다:형:7
  +번뜩:부:3
  +번뜩거리다:동:1
  +번뜩번뜩:부:1
  +번뜩이다:동:4
  +번민:명:8
  +번민하다:동:2
  +번번이:부:15
  +번복:명:2
  +번복되다:동:1
  +번복하다:동:4
  +번성:명:4
  +번성하다:동:7
  +번성하다:형:1
  +번식:명:18
  +번식기:명:2
  +번식력:명:5
  +번식종:명:5
  +번식지:명:5
  +번식하다:동:54
  +번안곡:명:1
  +번안극:명:1
  +번역:명:23
  +번역가:명:1
  +번역거리:명:2
  +번역권:명:2
  +번역극:명:1
  +번역기:명:3
  +번역되다:동:15
  +번역료:명:1
  +번역문:명:1
  +번역본:명:1
  +번역서:명:2
  +번역어:명:2
  +번역자:명:2
  +번역진:명:1
  +번역하다:동:15
  +번연히:부:1
  +번영:명:15
  +번영하다:동:1
  +번잡:명:1
  +번잡스럽다:형:2
  +번잡하다:형:8
  +번지:명:16
  +번지다:동:60
  +번지다:보:1
  +번지레하다:형:1
  +번지르르하다:형:2
  +번지수:명:6
  +번째:의:281
  +번쩍:부:11
  +번쩍:부:24
  +번쩍거리다:동:6
  +번쩍번쩍하다:동:1
  +번쩍번쩍하다:형:1
  +번쩍이다:동:12
  +번쩍하다:동:13
  +번창:명:1
  +번창하다:동:7
  +번하다:형:1
  +번호:명:45
  +번호판:명:3
  +번화:명:1
  +번화가:명:9
  +번화하다:형:1
  +벋다:동:2
  +벋다:형:1
  +벌:명:35
  +벌:명:59
  +벌:명:7
  +벌:의:38
  +벌거벗기우다:동:1
  +벌거벗다:동:13
  +벌거숭이:명:4
  +벌겋다:형:14
  +벌게지다:동:3
  +벌과금:명:1
  +벌금:명:46
  +벌금형:명:5
  +벌다:동:1
  +벌다:동:209
  +벌독:명:1
  +벌떡:부:52
  +벌떡거리다:동:3
  +벌떡벌떡:부:1
  +벌렁:부:7
  +벌레:명:49
  +벌름거리다:동:2
  +벌리다:동:1
  +벌리다:동:81
  +벌목:명:2
  +벌목공:명:3
  +벌목꾼:명:1
  +벌바람:명:1
  +벌벌:부:9
  +벌서다:동:7
  +벌식:의:44
  +벌써:부:319
  +벌써리:부:1
  +벌어들이다:동:4
  +벌어지다:동:152
  +벌어지다:동:39
  +벌이:명:9
  +벌이다:동:345
  +벌주다:동:1
  +벌집:명:4
  +벌창:명:1
  +벌채:명:3
  +벌채되다:동:2
  +벌채업:명:1
  +벌채하다:동:3
  +벌초:명:1
  +벌충하다:동:1
  +벌칙:명:3
  +벌침:명:1
  +벌컥:부:10
  +벌컥벌컥:부:1
  +벌컥벌컥:부:11
  +벌크:명:2
  +벌크선:명:1
  +벌판:명:17
  +범:명:10
  +범개혁:명:1
  +범국민:명:7
  +범국민적:관:1
  +범국민적:명:5
  +범띠:명:3
  +범람:명:9
  +범람하다:동:6
  +범민족:명:1
  +범벅:명:13
  +범법:명:8
  +범법자:명:2
  +범부:명:2
  +범상성:명:1
  +범상하다:형:3
  +범선:명:2
  +범세계적:관:3
  +범세계적:명:2
  +범속:명:5
  +범속성:명:2
  +범속하다:형:5
  +범시민:명:1
  +범신론적:관:1
  +범야권:명:1
  +범위:명:144
  +범의귀:명:1
  +범인:명:6
  +범인:명:69
  +범정부:명:1
  +범정부적:관:1
  +범죄:명:187
  +범죄성:명:1
  +범죄인:명:4
  +범죄자:명:9
  +범죄적:명:1
  +범죄형:명:2
  +범주:명:98
  +범주적:관:2
  +범주적:명:3
  +범지역:명:1
  +범퍼:명:3
  +범하다:동:30
  +범하여지다:동:1
  +범행:명:36
  +법:명:1
  +법:명:354
  +법:의:183
  +법가:명:3
  +법계:명:4
  +법과:명:11
  +법과대:명:1
  +법관:명:19
  +법권:명:1
  +법규:명:18
  +법단:명:2
  +법당:명:13
  +법대:명:1
  +법대:명:14
  +법도:명:1
  +법도:명:11
  +법랍:명:1
  +법령:명:12
  +법령안:명:1
  +법령화하다:동:1
  +법류:명:1
  +법륜:명:1
  +법률:명:128
  +법률가:명:1
  +법률관계:명:1
  +법률안:명:1
  +법률적:관:13
  +법률적:명:5
  +법리:명:5
  +법망:명:2
  +법명:명:2
  +법무:명:1
  +법무관:명:1
  +법문:명:1
  +법문:명:1
  +법복:명:1
  +법사:명:4
  +법사:명:5
  +법상:명:3
  +법상종:명:1
  +법석:명:7
  +법석거리다:동:1
  +법석이다:동:4
  +법성:명:2
  +법신:명:1
  +법안:명:29
  +법안:명:8
  +법열:명:6
  +법원:명:117
  +법인:명:1
  +법인:명:3
  +법인:명:66
  +법인세:명:17
  +법인체:명:2
  +법적:관:53
  +법적:명:26
  +법전:명:2
  +법정:명:19
  +법정:명:38
  +법정극:명:1
  +법정주의:명:5
  +법정형:명:3
  +법제:명:3
  +법제적:관:2
  +법제적:명:1
  +법제화하다:동:3
  +법조:명:4
  +법조계:명:6
  +법조문:명:1
  +법조인:명:2
  +법질서:명:3
  +법체계:명:6
  +법치:명:8
  +법치주의:명:12
  +법칙:명:188
  +법칙성:명:5
  +법칙적:관:2
  +법칙적:명:1
  +법통:명:1
  +법통:명:3
  +법하다:보:16
  +법학:명:18
  +법학사:명:1
  +법회:명:1
  +벗:명:23
  +벗:명:30
  +벗겨지다:동:15
  +벗기다:동:86
  +벗다:동:207
  +벗어나다:동:357
  +벗어던지다:동:5
  +벗어부치다:동:1
  +벗어제끼다:동:1
  +벗어지다:동:4
  +벗하다:동:1
  +벙글거리다:동:1
  +벙글다:동:1
  +벙글벙글:부:2
  +벙긋:부:1
  +벙벙하다:형:4
  +벙벙해지다:동:10
  +벙시레:부:1
  +벙어리:명:11
  +벙어리뻐꾸기:명:2
  +벙커:명:2
  +벙하다:형:1
  +벚꽃:명:14
  +벚나무:명:3
  +베:명:12
  +베개:명:19
  +베갯머리:명:1
  +베갯잇:명:1
  +베고니아과:명:1
  +베끼다:동:16
  +베니어:명:2
  +베다:동:53
  +베다:동:7
  +베드:명:1
  +베드타운:명:2
  +베란다:명:10
  +베스트:명:10
  +베스트셀러:명:14
  +베어지다:동:1
  +베옷:명:4
  +베이글:명:5
  +베이다:동:8
  +베이비시터:명:1
  +베이스:명:5
  +베이스점핑:명:1
  +베이스캠프:명:2
  +베이식:명:6
  +베이지:명:5
  +베이징인:명:1
  +베이커리:명:1
  +베이컨:명:21
  +베이킹파우더:명:4
  +베일:명:9
  +베적삼:명:1
  +베테랑:명:13
  +베팅:명:1
  +베풀다:동:43
  +베풀어지다:동:3
  +벡터:명:4
  +벤또:명:1
  +벤자인:명:1
  +벤젠:명:1
  +벤조피렌:명:1
  +벤처:명:1
  +벤치:명:26
  +벨:명:13
  +벨벳:명:1
  +벨트:명:19
  +벱:의:1
  +벵갈어:명:1
  +벼:명:45
  +벼농사:명:21
  +벼락:명:38
  +벼락공부:명:1
  +벼락부자:명:3
  +벼락치기:명:1
  +벼랑:명:26
  +벼랑머리:명:3
  +벼루:명:6
  +벼룩:명:4
  +벼룩시장:명:7
  +벼르다:동:21
  +벼멸구:명:2
  +벼슬:명:1
  +벼슬:명:17
  +벼슬길:명:5
  +벼슬자리:명:1
  +벼슬하다:동:1
  +벽:명:192
  +벽걸이:명:2
  +벽난로:명:10
  +벽돌:명:24
  +벽돌공:명:1
  +벽돌담:명:2
  +벽돌장:명:1
  +벽돌집:명:1
  +벽두:명:4
  +벽력:명:2
  +벽류:명:1
  +벽면:명:21
  +벽보:명:2
  +벽사:명:1
  +벽시계:명:8
  +벽안:명:3
  +벽장:명:3
  +벽지:명:1
  +벽지:명:8
  +벽체:명:3
  +벽촌:명:3
  +벽화:명:41
  +변:명:1
  +변:명:1
  +변:명:1
  +변:명:2
  +변:명:27
  +변강쇠:명:1
  +변개되다:동:1
  +변경:명:2
  +변경:명:36
  +변경되다:동:6
  +변경선:명:7
  +변경시키다:동:2
  +변경식:명:2
  +변경하다:동:20
  +변괴:명:1
  +변기:명:9
  +변덕:명:5
  +변덕스럽다:형:10
  +변덕쟁이:명:1
  +변돈:명:6
  +변동:명:69
  +변동기적:관:1
  +변동되다:동:2
  +변동시키다:동:1
  +변동하다:동:6
  +변두리:명:13
  +변란:명:2
  +변론:명:2
  +변론권:명:1
  +변론문:명:1
  +변론하다:동:2
  +변명:명:34
  +변명하다:동:17
  +변모:명:6
  +변모시키다:동:1
  +변모하다:동:15
  +변방:명:4
  +변변하다:형:11
  +변변히:부:7
  +변별되다:동:1
  +변별적:관:1
  +변별하다:동:1
  +변복:명:1
  +변비:명:29
  +변사:명:3
  +변사체:명:3
  +변상하다:동:1
  +변색:명:1
  +변색되다:동:1
  +변색하다:동:1
  +변성:명:4
  +변성기:명:2
  +변성암:명:1
  +변소:명:20
  +변소간:명:1
  +변수:명:26
  +변시체:명:1
  +변신:명:31
  +변신술:명:1
  +변신시키다:동:2
  +변신하다:동:15
  +변심:명:2
  +변용:명:4
  +변용하다:동:2
  +변의:명:1
  +변이:명:2
  +변인:명:6
  +변장:명:1
  +변장하다:동:1
  +변전소:명:1
  +변절:명:2
  +변절자:명:1
  +변절하다:동:1
  +변제:명:2
  +변조:명:1
  +변조:명:1
  +변조:명:9
  +변조단:명:1
  +변조되다:동:1
  +변조시키다:동:1
  +변조하다:동:1
  +변조하다:동:1
  +변주:명:1
  +변주곡:명:4
  +변죽:명:1
  +변증법:명:12
  +변증법적:관:24
  +변증법적:명:10
  +변질:명:12
  +변질되다:동:9
  +변질시키다:동:3
  +변천:명:18
  +변천사:명:4
  +변천하다:동:1
  +변칙:명:5
  +변칙적:관:2
  +변칙적:명:6
  +변태:명:2
  +변태적:명:2
  +변통:명:1
  +변통하다:동:1
  +변하다:동:317
  +변함없다:형:3
  +변함없이:부:12
  +변해지다:동:2
  +변혁:명:40
  +변혁기:명:5
  +변혁하다:동:4
  +변형:명:11
  +변형되다:동:8
  +변형시키다:동:15
  +변형하다:동:2
  +변호:명:6
  +변호사:명:62
  +변호사계:명:1
  +변호인:명:28
  +변호인단:명:3
  +변호인제:명:3
  +변호제:명:3
  +변호하다:동:10
  +변화:명:642
  +변화감:명:4
  +변화구:명:2
  +변화되다:동:32
  +변화무쌍:명:1
  +변화무쌍하다:형:5
  +변화성:명:1
  +변화스럽다:형:2
  +변화시키다:동:45
  +변화하다:동:111
  +변환:명:8
  +변환되다:동:4
  +변환시키다:동:5
  +변환하다:동:1
  +별:관:79
  +별:명:171
  +별감:명:27
  +별개:명:38
  +별거:명:10
  +별거:명:2
  +별거하다:동:1
  +별것:명:18
  +별관:명:4
  +별금방:명:1
  +별나다:형:6
  +별나라:명:1
  +별다르다:형:58
  +별달리:부:2
  +별당:명:5
  +별도:명:92
  +별도리:명:2
  +별동대:명:5
  +별똥:명:2
  +별로:부:275
  +별리:명:1
  +별말:명:1
  +별말씀:명:5
  +별맛:명:2
  +별매:명:1
  +별명:명:44
  +별무:명:1
  +별문단:명:1
  +별문영초:명:2
  +별문제:명:15
  +별미:명:13
  +별반:부:8
  +별별:관:7
  +별빛:명:9
  +별생각:명:5
  +별세:명:1
  +별세계:명:4
  +별세하다:동:3
  +별소리:명:1
  +별수:명:8
  +별순검:명:1
  +별스럽다:형:1
  +별시:명:1
  +별식:명:4
  +별안간:명:14
  +별읍:명:2
  +별의별:관:6
  +별일:명:21
  +별입시:명:1
  +별자리:명:9
  +별장:명:8
  +별재:명:1
  +별점:명:1
  +별정직:명:1
  +별지장:명:2
  +별쭝나다:형:1
  +별차:명:1
  +별채:명:4
  +별책:명:1
  +별천지:명:2
  +별칭:명:5
  +별표:명:2
  +별호:명:1
  +볍씨:명:1
  +볏단:명:2
  +볏모:명:1
  +볏짚:명:7
  +병:명:1
  +병:명:111
  +병:명:177
  +병:명:2
  +병가:명:1
  +병간호:명:1
  +병고:명:3
  +병과:명:9
  +병과하다:동:1
  +병구완:명:1
  +병균:명:5
  +병기:명:7
  +병꽃나무:명:4
  +병나다:동:4
  +병동:명:5
  +병들다:동:43
  +병뚜껑:명:1
  +병력:명:36
  +병력:명:7
  +병력자:명:2
  +병렬:명:1
  +병렬적:명:1
  +병리:명:7
  +병리과:명:1
  +병리사:명:1
  +병리학:명:2
  +병리학과:명:1
  +병리학적:관:1
  +병립제:명:1
  +병립하다:동:1
  +병마:명:2
  +병맥주:명:1
  +병명:명:7
  +병목:명:4
  +병무:명:2
  +병문안:명:4
  +병반:명:1
  +병법:명:1
  +병변:명:3
  +병사:명:1
  +병사:명:62
  +병사하다:동:1
  +병상:명:7
  +병색:명:1
  +병서:명:1
  +병설:명:1
  +병설하다:동:1
  +병세:명:3
  +병소:명:1
  +병수:명:1
  +병술:명:1
  +병신:명:14
  +병신년:명:4
  +병실:명:22
  +병아리:명:15
  +병약하다:형:3
  +병역:명:30
  +병영:명:3
  +병용하다:동:1
  +병원:명:344
  +병원성:명:2
  +병원장:명:5
  +병인:명:1
  +병인:명:2
  +병인양요:명:1
  +병자:명:1
  +병자:명:5
  +병자생:명:1
  +병자호란:명:5
  +병작제:명:1
  +병장:명:47
  +병적:관:4
  +병적:명:8
  +병정:명:2
  +병조림:명:1
  +병조회풀:명:2
  +병존:명:2
  +병존하다:동:4
  +병중:명:2
  +병참:명:1
  +병충해:명:5
  +병치레:명:5
  +병치레하다:동:1
  +병탈:명:1
  +병폐:명:9
  +병풍:명:7
  +병합:명:5
  +병합되다:동:1
  +병합하다:동:4
  +병해충:명:3
  +병행:명:6
  +병행되다:동:12
  +병행시키다:동:2
  +병행하다:동:28
  +병환:명:4
  +병후:명:2
  +볕:명:16
  +보:명:1
  +보:명:1
  +보:명:1
  +보:명:2
  +보:의:6
  +보강:명:2
  +보강:명:9
  +보강되다:동:2
  +보강하다:동:14
  +보건:명:26
  +보건과:명:1
  +보건소:명:4
  +보건소장:명:1
  +보검:명:1
  +보결:명:1
  +보고:명:6
  +보고:명:71
  +보고대회:명:1
  +보고되다:동:9
  +보고드리다:동:1
  +보고받다:동:6
  +보고서:명:81
  +보고하다:동:51
  +보고회:명:17
  +보골:명:2
  +보관:명:35
  +보관되다:동:7
  +보관법:명:3
  +보관소:명:10
  +보관시키다:동:1
  +보관하다:동:81
  +보관함:명:1
  +보국대:명:1
  +보국안민:명:1
  +보궁:명:2
  +보궐:명:17
  +보균자:명:1
  +보글거리다:동:1
  +보글보글:부:4
  +보금자리:명:18
  +보급:명:38
  +보급:명:6
  +보급대:명:1
  +보급되다:동:41
  +보급되다:동:8
  +보급로:명:3
  +보급률:명:3
  +보급소:명:2
  +보급시키다:동:3
  +보급하다:동:18
  +보급하다:동:4
  +보기:명:12
  +보내다:동:719
  +보내오다:동:21
  +보내지다:동:4
  +보너스:명:39
  +보닛:명:1
  +보다:동:6,045
  +보다:보:5,231
  +보다:부:259
  +보답:명:3
  +보답하다:동:16
  +보도:명:1
  +보도:명:1
  +보도:명:10
  +보도:명:119
  +보도:명:2
  +보도국:명:1
  +보도국장:명:2
  +보도되다:동:42
  +보도블록:명:1
  +보도진:명:3
  +보도하다:동:106
  +보드:명:1
  +보드랍다:형:7
  +보드카:명:6
  +보들녹진하다:형:1
  +보듬다:동:7
  +보디빌더:명:3
  +보디빌딩:명:7
  +보디워크:명:1
  +보따리:명:30
  +보라:명:5
  +보라매:명:1
  +보라색:명:7
  +보람:명:79
  +보람되다:형:2
  +보랏빛:명:12
  +보루:명:9
  +보루:의:1
  +보류:명:6
  +보류되다:동:1
  +보류하다:동:7
  +보르꼬:명:1
  +보름:명:33
  +보름날:명:3
  +보름달:명:5
  +보름치:명:1
  +보리:명:1
  +보리:명:42
  +보리누름하다:동:1
  +보리둑나무:명:3
  +보리밥:명:8
  +보리방아:명:1
  +보리밭:명:10
  +보리새우:명:2
  +보리수:명:2
  +보리수나무:명:1
  +보리쌀:명:5
  +보리장:명:1
  +보리차:명:4
  +보리피리:명:1
  +보릿고개:명:4
  +보릿자루:명:1
  +보릿짚:명:2
  +보모:명:15
  +보무:명:1
  +보무당당하다:형:1
  +보물:명:17
  +보물단지:명:1
  +보물섬:명:1
  +보물찾기:명:3
  +보바리적:관:1
  +보배:명:4
  +보배롭다:형:1
  +보병:명:8
  +보복:명:41
  +보복성:명:1
  +보복적:관:1
  +보복적:명:3
  +보복하다:동:2
  +보부상:명:7
  +보사:명:1
  +보살:명:18
  +보살님:명:1
  +보살상:명:2
  +보살피다:동:35
  +보살핌:명:6
  +보살행:명:1
  +보상:명:23
  +보상:명:3
  +보상:명:52
  +보상과:명:1
  +보상금:명:2
  +보상금:명:5
  +보상되다:동:2
  +보상받다:동:10
  +보상비:명:2
  +보상성:명:3
  +보상액:명:1
  +보상적:관:2
  +보상적:명:1
  +보상제:명:2
  +보상하다:동:4
  +보상하다:동:4
  +보색:명:2
  +보석:명:12
  +보석상:명:3
  +보선:명:1
  +보송보송:부:1
  +보송보송하다:형:5
  +보수:명:11
  +보수:명:26
  +보수:명:30
  +보수계:명:1
  +보수성:명:2
  +보수적:관:12
  +보수적:명:18
  +보수주의:명:11
  +보수주의자:명:5
  +보수파:명:4
  +보수하다:동:2
  +보스:명:3
  +보슬보슬:부:1
  +보슬보슬하다:형:2
  +보슬보슬해지다:동:1
  +보습:명:5
  +보시:명:2
  +보신:명:1
  +보신:명:1
  +보신용:명:1
  +보신주의:명:2
  +보신탕:명:6
  +보아주다:동:5
  +보아지다:동:4
  +보안:명:30
  +보안관:명:3
  +보안대:명:5
  +보안등:명:1
  +보안사:명:4
  +보안서원:명:1
  +보안원:명:1
  +보약:명:14
  +보양:명:1
  +보얗다:형:6
  +보여지다:동:26
  +보온:명:13
  +보온밥통:명:3
  +보온병:명:5
  +보온하다:동:2
  +보완:명:22
  +보완되다:동:8
  +보완적:관:1
  +보완적:명:7
  +보완책:명:2
  +보완하다:동:35
  +보위:명:3
  +보위:명:5
  +보위부:명:2
  +보위부장:명:1
  +보위원:명:4
  +보위하다:동:3
  +보유:명:40
  +보유국:명:1
  +보유되다:동:1
  +보유량:명:2
  +보유설:명:1
  +보유액:명:1
  +보유율:명:1
  +보유자:명:2
  +보유주:명:1
  +보유하다:동:2
  +보유하다:동:46
  +보육원:명:3
  +보육하다:동:1
  +보은:명:3
  +보음제:명:1
  +보이:명:2
  +보이다:동:1,121
  +보이다:동:1,522
  +보이콧:명:8
  +보이콧하다:동:6
  +보인:명:2
  +보일러:명:4
  +보일러공:명:1
  +보자기:명:34
  +보잘것없다:형:20
  +보장:명:60
  +보장금:명:1
  +보장되다:동:1
  +보장되다:동:53
  +보장받다:동:8
  +보장적:관:2
  +보장하다:동:63
  +보장허다:동:1
  +보전:명:44
  +보전되다:동:1
  +보전하다:동:12
  +보전하다:동:3
  +보정:명:2
  +보조:명:48
  +보조:명:5
  +보조개:명:15
  +보조금:명:11
  +보조물:명:1
  +보조받다:동:3
  +보조액:명:1
  +보조원:명:1
  +보조율:명:1
  +보조적:관:1
  +보조적:명:2
  +보조하다:동:3
  +보존:명:41
  +보존되다:동:18
  +보존법:명:1
  +보존자:명:1
  +보존하다:동:35
  +보존회:명:1
  +보좌:명:11
  +보좌관:명:21
  +보좌관실:명:1
  +보좌역:명:1
  +보좌진:명:1
  +보좌하다:동:7
  +보주:명:1
  +보증:명:44
  +보증과:명:2
  +보증금:명:9
  +보증되다:동:1
  +보증서:명:9
  +보증인:명:13
  +보증하다:동:2
  +보직:명:17
  +보직자:명:1
  +보채다:동:8
  +보초:명:6
  +보충:명:27
  +보충되다:동:2
  +보충역:명:6
  +보충적:명:2
  +보충제:명:1
  +보충하다:동:25
  +보컬:명:2
  +보태다:동:35
  +보태지다:동:5
  +보택이:명:1
  +보탬:명:15
  +보통:명:164
  +보통:부:124
  +보통례:명:1
  +보통학교:명:9
  +보퉁이:명:4
  +보트:명:2
  +보트:명:9
  +보편:명:6
  +보편성:명:19
  +보편적:관:33
  +보편적:명:58
  +보편주의:명:3
  +보편타당하다:형:2
  +보편화:명:3
  +보편화되다:동:23
  +보편화하다:동:3
  +보폭:명:2
  +보필하다:동:1
  +보하다:동:2
  +보학:명:2
  +보합권:명:1
  +보행:명:7
  +보행자:명:7
  +보행하다:동:1
  +보험:명:89
  +보험금:명:4
  +보험료:명:7
  +보험사:명:8
  +보험업:명:4
  +보험업계:명:3
  +보험업체:명:1
  +보험적:명:2
  +보험제:명:1
  +보험증:명:1
  +보헤미안:명:3
  +보혁:명:2
  +보혈:명:2
  +보호:명:237
  +보호되다:동:41
  +보호받다:동:8
  +보호법:명:1
  +보호석:명:1
  +보호설:명:1
  +보호소:명:2
  +보호실:명:17
  +보호자:명:10
  +보호주의:명:1
  +보호직:명:1
  +보호책:명:4
  +보호하다:동:138
  +보화:명:1
  +보훈:명:1
  +복:명:46
  +복강:명:1
  +복강경:명:3
  +복개:명:3
  +복개되다:동:2
  +복고:명:3
  +복고적:관:1
  +복고주의:명:5
  +복고풍:명:1
  +복공판:명:1
  +복구:명:1
  +복구:명:17
  +복구공사:명:1
  +복구되다:동:1
  +복구하다:동:4
  +복권:명:12
  +복권:명:6
  +복권되다:동:1
  +복권시키다:동:1
  +복권주의자:명:1
  +복귀:명:10
  +복귀되다:동:1
  +복귀시키다:동:3
  +복귀하다:동:18
  +복날:명:2
  +복냉:명:1
  +복덕방:명:5
  +복도:명:83
  +복되다:형:10
  +복락:명:1
  +복리:명:3
  +복마:명:1
  +복막염:명:1
  +복면:명:1
  +복명서:명:1
  +복모음:명:2
  +복무:명:26
  +복무규정:명:1
  +복무자:명:1
  +복무하다:동:5
  +복받치다:동:10
  +복부:명:3
  +복사:명:1
  +복사:명:20
  +복사:명:4
  +복사기:명:4
  +복사무:명:1
  +복사본:명:1
  +복사뼈:명:2
  +복사실:명:1
  +복사판:명:1
  +복사하다:동:19
  +복상사:명:1
  +복색:명:3
  +복서:명:3
  +복선:명:1
  +복선화되다:동:1
  +복속:명:1
  +복속되다:동:2
  +복속시키다:동:1
  +복수:명:1
  +복수:명:20
  +복수:명:26
  +복수심:명:2
  +복수안:명:1
  +복수초:명:5
  +복수하다:동:4
  +복수화:명:1
  +복숭아:명:10
  +복숭아뼈:명:1
  +복스럽다:형:4
  +복습:명:6
  +복습하다:동:7
  +복식:명:150
  +복식:명:20
  +복식:명:5
  +복식미:명:31
  +복식사:명:4
  +복식조:명:1
  +복싱:명:12
  +복싱계:명:2
  +복아탈구:명:1
  +복안:명:7
  +복어:명:20
  +복어잡이:명:5
  +복역:명:1
  +복역하다:동:3
  +복엽:명:1
  +복용:명:7
  +복용시키다:동:1
  +복용하다:동:17
  +복원:명:30
  +복원되다:동:5
  +복원시키다:동:1
  +복원하다:동:11
  +복음:명:3
  +복음주의:명:1
  +복잡:명:3
  +복잡다기하다:형:3
  +복잡다단하다:형:3
  +복잡성:명:4
  +복잡이:명:1
  +복잡하다:형:171
  +복잡해지다:동:11
  +복잡화:명:2
  +복잡화하다:동:1
  +복장:명:1
  +복장:명:13
  +복장미:명:1
  +복적:명:5
  +복제:명:34
  +복제권:명:1
  +복제되다:동:3
  +복제물:명:1
  +복제판:명:1
  +복제하다:동:10
  +복종:명:15
  +복종시키다:동:2
  +복종하다:동:12
  +복중:명:2
  +복지:명:2
  +복지:명:49
  +복지과:명:2
  +복지관:명:2
  +복지원:명:1
  +복지학:명:1
  +복지학과:명:1
  +복직:명:17
  +복직근:명:1
  +복직되다:동:2
  +복직시키다:동:1
  +복직하다:동:1
  +복진:명:1
  +복창:명:3
  +복창하다:동:1
  +복토:명:1
  +복통:명:4
  +복통하다:형:1
  +복판:명:3
  +복학:명:20
  +복학생:명:5
  +복학시키다:동:2
  +복학하다:동:5
  +복합:명:19
  +복합되다:동:2
  +복합성:명:3
  +복합적:관:11
  +복합적:명:26
  +복합체:명:7
  +복합하다:동:2
  +볶다:동:133
  +볶아지다:동:1
  +볶음:명:14
  +볶음밥:명:20
  +볶이다:동:1
  +본:관:29
  +본:명:4
  +본:의:1
  +본가:명:10
  +본거지:명:3
  +본건:명:1
  +본격:명:33
  +본격적:관:2
  +본격적:명:143
  +본격화:명:1
  +본격화되다:동:11
  +본격화하다:동:9
  +본고:명:2
  +본고사:명:10
  +본고장:명:4
  +본과:명:1
  +본관:명:25
  +본관:명:5
  +본관제:명:13
  +본교:명:5
  +본국:명:4
  +본궁:명:4
  +본궤도:명:3
  +본기:명:6
  +본능:명:19
  +본능적:관:4
  +본능적:명:15
  +본당:명:4
  +본대:명:1
  +본드:명:4
  +본디:명:13
  +본때:명:2
  +본뜨다:동:26
  +본뜻:명:3
  +본래:명:101
  +본래적:관:1
  +본래적:명:3
  +본령:명:2
  +본론:명:2
  +본류:명:5
  +본마음:명:7
  +본말:명:3
  +본말체:명:1
  +본명:명:10
  +본모습:명:4
  +본문:명:14
  +본문체:명:7
  +본바탕:명:4
  +본받다:동:34
  +본뱃사람:명:6
  +본변:명:1
  +본보:명:1
  +본보기:명:15
  +본봉:명:2
  +본부:명:42
  +본부장:명:10
  +본분:명:4
  +본사:명:29
  +본사:명:3
  +본산:명:3
  +본새:명:1
  +본색:명:4
  +본서:명:2
  +본선:명:19
  +본성:명:74
  +본성적:명:3
  +본시:명:8
  +본심:명:1
  +본안:명:2
  +본업:명:4
  +본연:명:24
  +본원적:관:1
  +본원적:명:4
  +본위:명:2
  +본의:명:25
  +본이름:명:1
  +본인:대:1
  +본인:명:45
  +본적:명:5
  +본적지:명:4
  +본전:명:2
  +본전치기:명:1
  +본점:명:12
  +본존:명:1
  +본존불:명:2
  +본줄기:명:1
  +본지:명:5
  +본지:명:5
  +본질:명:102
  +본질론:명:1
  +본질적:관:27
  +본질적:명:59
  +본차이나:명:1
  +본처:명:5
  +본청:명:4
  +본체:명:22
  +본체만체하다:동:1
  +본체적:명:1
  +본토:명:4
  +본향:명:1
  +본회의:명:3
  +볼:명:15
  +볼:명:25
  +볼:명:3
  +볼:명:53
  +볼거리:명:11
  +볼기:명:2
  +볼때기:명:1
  +볼록:부:12
  +볼록하다:형:6
  +볼륨:명:5
  +볼륨감:명:3
  +볼링:명:14
  +볼링공:명:1
  +볼메다:형:2
  +볼멘소리:명:9
  +볼모:명:3
  +볼써:부:1
  +볼썽사납다:형:5
  +볼일:명:26
  +볼트:명:4
  +볼트:의:3
  +볼펜:명:16
  +볼품:명:3
  +볼품없다:형:7
  +봄:명:229
  +봄가을:명:3
  +봄기운:명:2
  +봄꽃:명:1
  +봄나물:명:4
  +봄날:명:13
  +봄노래:명:1
  +봄맞이:명:1
  +봄물:명:1
  +봄바람:명:12
  +봄밤:명:3
  +봄배추:명:2
  +봄볕:명:3
  +봄비:명:6
  +봄빛:명:1
  +봄소식:명:3
  +봄앓이:명:1
  +봄여뀌:명:1
  +봄철:명:9
  +봅슬레이:명:2
  +봇도랑:명:4
  +봇둑:명:1
  +봇물:명:4
  +봇짐:명:4
  +봇짐장수:명:1
  +봉:명:1
  +봉:명:2
  +봉:명:6
  +봉:명:9
  +봉건:명:55
  +봉건론자:명:4
  +봉건성:명:1
  +봉건적:관:19
  +봉건적:명:4
  +봉건제:명:26
  +봉건제론자:명:4
  +봉건제적:관:2
  +봉건제적:명:1
  +봉건파적:관:1
  +봉걸레:명:2
  +봉공:명:1
  +봉급:명:18
  +봉급날:명:1
  +봉급받다:동:1
  +봉급생활자:명:4
  +봉급자:명:8
  +봉긋:부:1
  +봉긋하다:형:1
  +봉기:명:7
  +봉기하다:동:1
  +봉다리:명:1
  +봉당:명:2
  +봉독:명:1
  +봉독하다:동:1
  +봉변:명:7
  +봉분:명:1
  +봉사:명:1
  +봉사:명:3
  +봉사:명:46
  +봉사관:명:1
  +봉사단:명:3
  +봉사원:명:1
  +봉사자:명:9
  +봉사하다:동:22
  +봉선화:명:3
  +봉쇄:명:11
  +봉쇄되다:동:8
  +봉쇄령:명:1
  +봉쇄망:명:1
  +봉쇄하다:동:8
  +봉수대:명:1
  +봉숭:명:1
  +봉숭아:명:12
  +봉안되다:동:3
  +봉안하다:동:2
  +봉양:명:3
  +봉양하다:동:2
  +봉오리:명:1
  +봉우리:명:24
  +봉인:명:6
  +봉인되다:동:1
  +봉인하다:동:5
  +봉제:명:3
  +봉제공:명:1
  +봉제업:명:1
  +봉지:명:33
  +봉직:명:2
  +봉직하다:동:1
  +봉착:명:1
  +봉착하다:동:5
  +봉창:명:1
  +봉창:명:2
  +봉투:명:77
  +봉하다:동:2
  +봉하다:동:2
  +봉함하다:동:1
  +봉합:명:1
  +봉합:명:2
  +봉합선:명:1
  +봉합하다:동:2
  +봉행하다:동:2
  +봉화:명:3
  +봉화대:명:5
  +봉환:명:11
  +봉환단:명:1
  +봉환되다:동:1
  +봉환하다:동:6
  +봉황:명:3
  +봐주다:동:11
  +뵈다:동:30
  +뵈다:동:38
  +뵙다:동:41
  +부:명:1
  +부:명:30
  +부:명:4
  +부:명:42
  +부:의:1
  +부:의:1
  +부:의:85
  +부가:명:13
  +부가세:명:5
  +부가적:명:2
  +부각:명:6
  +부각되다:동:15
  +부각시키다:동:23
  +부각하다:동:5
  +부감법:명:1
  +부강:명:1
  +부검:명:12
  +부검하다:동:1
  +부결시키다:동:1
  +부계:명:6
  +부고:명:6
  +부곡:명:7
  +부곡민:명:4
  +부곡제:명:14
  +부과:명:16
  +부과되다:동:8
  +부과받다:동:1
  +부과율:명:2
  +부과하다:동:22
  +부관:명:1
  +부교감:명:1
  +부교수:명:5
  +부교재:명:1
  +부국:명:1
  +부국강병:명:3
  +부국강병책:명:1
  +부국장:명:2
  +부군:명:2
  +부권:명:3
  +부귀:명:7
  +부귀다남:명:1
  +부귀영화:명:2
  +부근:명:93
  +부글부글:부:7
  +부금:명:12
  +부기:명:1
  +부기:명:2
  +부기장:명:1
  +부꾸미:명:3
  +부끄러움:명:26
  +부끄러워지다:동:6
  +부끄러워하다:동:11
  +부끄럼:명:1
  +부끄럽다:형:91
  +부나비:명:1
  +부내:명:1
  +부내:명:1
  +부녀:명:2
  +부녀:명:8
  +부녀자:명:9
  +부녀화되다:동:1
  +부녀회:명:19
  +부녀회원:명:3
  +부녀회장:명:8
  +부닥치다:동:10
  +부단장:명:1
  +부단하다:형:5
  +부단히:부:9
  +부담:명:191
  +부담감:명:15
  +부담금:명:18
  +부담되다:동:6
  +부담률:명:1
  +부담스러워하다:동:2
  +부담스럽다:형:20
  +부담시키다:동:3
  +부담액:명:9
  +부담자:명:1
  +부담자층:명:1
  +부담층:명:3
  +부담하다:동:55
  +부당:명:23
  +부당성:명:3
  +부당하다:형:55
  +부대:명:12
  +부대:명:4
  +부대:명:86
  +부대끼다:동:10
  +부대변인:명:5
  +부대설비:명:1
  +부대시설:명:6
  +부대원:명:3
  +부대장:명:9
  +부대표:명:1
  +부덕:명:1
  +부덕:명:4
  +부덕하다:형:1
  +부도:명:1
  +부도:명:16
  +부도:명:2
  +부도나다:동:1
  +부도덕:명:3
  +부도덕성:명:3
  +부도덕하다:형:14
  +부도심:명:3
  +부도율:명:5
  +부동:명:1
  +부동:명:1
  +부동산:명:145
  +부동산업:명:1
  +부동산업계:명:2
  +부동산업자:명:1
  +부동자세:명:4
  +부동표:명:1
  +부동화하다:동:1
  +부두:명:33
  +부두목:명:3
  +부둣가:명:6
  +부둥켜안다:동:12
  +부드러워지다:동:10
  +부드럽다:형:212
  +부득:부:1
  +부득부득:부:2
  +부득불:부:3
  +부득이:부:7
  +부득이하다:형:5
  +부들:명:1
  +부들대다:동:1
  +부들부들:부:10
  +부디:부:18
  +부디스트:명:5
  +부딪기다:동:1
  +부딪다:동:3
  +부딪치다:동:81
  +부딪히다:동:33
  +부뚜막:명:4
  +부라리다:동:9
  +부락:명:21
  +부랑아:명:2
  +부랑자:명:2
  +부랑하다:동:1
  +부랴부랴:부:10
  +부랴사랴:부:1
  +부러뜨리다:동:5
  +부러워하다:동:32
  +부러지다:동:43
  +부럼:명:7
  +부럽다:형:89
  +부레옥잠:명:2
  +부력:명:10
  +부록:명:9
  +부류:명:18
  +부르걷다:동:1
  +부르다:동:858
  +부르다:형:29
  +부르르:부:7
  +부르릉거리다:동:1
  +부르주아:명:22
  +부르주아적:명:1
  +부르주아지:명:4
  +부르쥐다:동:1
  +부르짖다:동:16
  +부르트다:동:8
  +부름:명:1
  +부릅뜨다:동:13
  +부리:명:21
  +부리나케:부:9
  +부리다:동:138
  +부리다:동:22
  +부리다:보:2
  +부리방제:명:1
  +부리부리하다:형:1
  +부메랑:명:1
  +부면:명:2
  +부모:명:327
  +부모님:명:198
  +부문:명:148
  +부문분:명:1
  +부뭇부뭇:부:2
  +부뭇사뭇:부:1
  +부민:명:1
  +부반장:명:7
  +부병제:명:2
  +부복하다:동:1
  +부부:명:227
  +부부간:명:5
  +부부대변인:명:1
  +부부애:명:2
  +부부유별:명:5
  +부부장:명:3
  +부분:명:652
  +부분부분:부:1
  +부분성:명:2
  +부분적:관:6
  +부분적:명:53
  +부분전:명:1
  +부분품:명:2
  +부분화:명:1
  +부분화되다:동:1
  +부비부비:부:1
  +부사:명:1
  +부사:명:3
  +부사:명:3
  +부사령관:명:1
  +부사무장:명:1
  +부사장:명:25
  +부산:명:1
  +부산물:명:7
  +부산붓꽃:명:1
  +부산스럽다:형:1
  +부산스레:부:1
  +부산하다:형:8
  +부삽:명:1
  +부상:명:1
  +부상:명:16
  +부상:명:2
  +부상:명:3
  +부상:명:34
  +부상당하다:동:6
  +부상되다:동:4
  +부상시키다:동:1
  +부상자:명:6
  +부상적:관:1
  +부상하다:동:20
  +부상하다:동:7
  +부서:명:46
  +부서기:명:1
  +부서뜨리다:동:1
  +부서명:명:2
  +부서장:명:2
  +부서지다:동:50
  +부석:명:1
  +부석부석하다:형:3
  +부설:명:11
  +부성애적:관:1
  +부세:명:6
  +부소장:명:1
  +부속:명:7
  +부속물:명:2
  +부속사:명:1
  +부속실:명:3
  +부속실장:명:7
  +부속실장실:명:1
  +부속지:명:1
  +부속품:명:3
  +부송하다:동:1
  +부수:명:3
  +부수:명:5
  +부수다:동:33
  +부수되다:동:2
  +부수상:명:3
  +부수적:관:1
  +부수적:명:8
  +부스:명:17
  +부스러기:명:6
  +부스러뜨리다:동:1
  +부스러지다:동:2
  +부스럭거리다:동:2
  +부스럭부스럭:부:3
  +부스럼:명:2
  +부스스:부:4
  +부스스하다:형:4
  +부스터:명:1
  +부슬부슬:부:3
  +부시:명:1
  +부시다:동:1
  +부시다:형:9
  +부시솝:명:1
  +부시시:부:2
  +부식:명:14
  +부식거리:명:2
  +부식되다:동:6
  +부식비:명:3
  +부식시키다:동:1
  +부식적:관:1
  +부식질:명:2
  +부신:명:1
  +부실:명:16
  +부실시공:명:1
  +부실하다:형:25
  +부실화되다:동:1
  +부심:명:4
  +부심:명:4
  +부심하다:동:3
  +부싯돌:명:4
  +부아:명:6
  +부양:명:12
  +부양:명:7
  +부양비:명:1
  +부양시키다:동:2
  +부양자:명:3
  +부양책:명:7
  +부양하다:동:1
  +부양하다:동:8
  +부어오르다:동:6
  +부어지다:동:2
  +부업:명:10
  +부엉새:명:1
  +부엉이:명:1
  +부엌:명:101
  +부엌간:명:3
  +부엌데기:명:3
  +부엌문:명:2
  +부엌방:명:1
  +부엌일:명:7
  +부여:명:1
  +부여:명:18
  +부여되다:동:11
  +부여받다:동:11
  +부여안다:동:3
  +부여잡다:동:7
  +부여하다:동:84
  +부역:명:3
  +부역:명:3
  +부역장:명:1
  +부역장:명:1
  +부연:명:1
  +부연구:명:1
  +부연하다:동:1
  +부영양화:명:13
  +부영양화되다:동:1
  +부영양화시키다:동:1
  +부옇다:형:6
  +부예지다:동:2
  +부왕:명:6
  +부용꽃:명:1
  +부원:명:1
  +부원수:명:1
  +부원장:명:16
  +부위:명:104
  +부위원장:명:11
  +부유:명:1
  +부유스름하다:형:2
  +부유층:명:9
  +부유하다:동:1
  +부유하다:형:1
  +부유하다:형:13
  +부유해지다:동:1
  +부윤:명:4
  +부음:명:2
  +부응하다:동:28
  +부의:명:1
  +부의금:명:1
  +부의장:명:4
  +부이:명:2
  +부익부:명:5
  +부인:명:14
  +부인:명:140
  +부인:명:23
  +부인과:명:1
  +부인복:명:1
  +부인하다:동:57
  +부임:명:7
  +부임되다:동:1
  +부임지:명:1
  +부임하다:동:22
  +부자:명:4
  +부자:명:65
  +부자:명:9
  +부자간:명:2
  +부자연스럽다:형:11
  +부자유:명:3
  +부자유스럽다:형:2
  +부자유자:명:3
  +부자유친:명:2
  +부자유하다:형:1
  +부자지간:명:1
  +부작:의:6
  +부작용:명:79
  +부작위:명:1
  +부잣집:명:17
  +부장:명:1
  +부장:명:89
  +부재:명:1
  +부재:명:32
  +부재료:명:2
  +부재자:명:12
  +부재중:명:2
  +부재하다:동:10
  +부쟁이:명:1
  +부적:명:1
  +부적격:명:1
  +부적격자:명:2
  +부적당하다:형:5
  +부적응:명:1
  +부적응증:명:9
  +부적절하다:형:6
  +부적정:명:2
  +부적합:명:1
  +부적합성:명:1
  +부적합하다:형:6
  +부전공:명:4
  +부전자전:명:1
  +부전증:명:1
  +부정:명:1
  +부정:명:199
  +부정:명:2
  +부정:명:24
  +부정:명:3
  +부정기적:명:3
  +부정되다:동:9
  +부정론:명:7
  +부정문:명:1
  +부정부패:명:28
  +부정사:명:1
  +부정적:관:29
  +부정적:명:59
  +부정직하다:형:1
  +부정하다:동:70
  +부정하다:형:2
  +부정하다:형:3
  +부정하다:형:7
  +부정행위:명:2
  +부정확하다:형:6
  +부제:명:1
  +부제:명:5
  +부조:명:2
  +부조:명:5
  +부조되다:동:2
  +부조리:명:25
  +부조리극풍:명:2
  +부조리하다:형:1
  +부조실:명:1
  +부조하다:동:1
  +부조화:명:7
  +부족:명:118
  +부족:명:125
  +부족국가:명:1
  +부족분:명:1
  +부족신적:명:1
  +부족액:명:1
  +부족장:명:1
  +부족적:명:1
  +부족제:명:2
  +부족하다:형:185
  +부족해지다:동:1
  +부존:명:1
  +부존자원:명:1
  +부종:명:3
  +부주석:명:1
  +부주의:명:10
  +부중:명:3
  +부지:명:16
  +부지기수:명:8
  +부지깽이:명:3
  +부지런:명:2
  +부지런하다:형:15
  +부지런해지다:동:1
  +부지런히:부:36
  +부지부장:명:1
  +부지불식간:명:7
  +부지중:명:1
  +부지하다:동:4
  +부직포:명:3
  +부진:명:43
  +부진하다:형:9
  +부진해지다:동:2
  +부질없다:형:9
  +부쩍:부:23
  +부차관보:명:1
  +부차장:명:3
  +부차적:관:1
  +부차적:명:9
  +부착:명:4
  +부착되다:동:7
  +부착시키다:동:3
  +부착하다:동:8
  +부채:명:15
  +부채:명:21
  +부채꼴:명:1
  +부채질:명:3
  +부채질하다:동:8
  +부채춤:명:2
  +부챗살:명:7
  +부처:명:1
  +부처:명:87
  +부처장:명:1
  +부천계:명:3
  +부청장:명:2
  +부쳐지다:동:4
  +부총리:명:40
  +부총장:명:6
  +부총재:명:3
  +부추:명:9
  +부추기다:동:41
  +부추잡채:명:1
  +부추전:명:1
  +부축:명:3
  +부축하다:동:7
  +부치다:동:1
  +부치다:동:4
  +부치다:동:41
  +부치다:동:5
  +부치다:동:8
  +부칙:명:2
  +부친:명:31
  +부친상:명:1
  +부침:명:7
  +부침땅:명:1
  +부킹:명:1
  +부탁:명:56
  +부탁드리다:동:7
  +부탁받다:동:3
  +부탁하다:동:71
  +부탄가스:명:4
  +부탄디올:명:1
  +부통령:명:3
  +부통령제:명:1
  +부팅:명:2
  +부패:명:24
  +부패당하다:동:1
  +부패되다:동:1
  +부패상:명:1
  +부패시키다:동:2
  +부패하다:동:30
  +부표:명:3
  +부표하다:동:1
  +부풀다:동:35
  +부풀려지다:동:2
  +부풀리다:동:13
  +부품:명:58
  +부품도:명:7
  +부품화하다:동:1
  +부피:명:15
  +부하:명:1
  +부하:명:17
  +부하다:동:1
  +부하다:형:1
  +부하여지다:동:1
  +부합되다:동:10
  +부합하다:동:13
  +부항:명:1
  +부호:명:1
  +부호:명:8
  +부호화:명:1
  +부호화되다:동:1
  +부호화하다:동:1
  +부화:명:3
  +부화기:명:1
  +부화율:명:1
  +부화장:명:1
  +부화하다:동:3
  +부활:명:19
  +부활되다:동:12
  +부활시키다:동:10
  +부활전:명:1
  +부활절:명:3
  +부활제:명:1
  +부활하다:동:9
  +부황:명:4
  +부회장:명:55
  +부회장직:명:1
  +부흥:명:13
  +부흥군:명:3
  +부흥기:명:5
  +부흥시키다:동:3
  +부흥하다:동:1
  +북:명:13
  +북:명:2
  +북:명:24
  +북가시나무:명:2
  +북괴:명:1
  +북구:명:2
  +북국:명:32
  +북군:명:1
  +북극권:명:2
  +북녘:명:1
  +북단:명:2
  +북돋다:동:5
  +북돋우다:동:7
  +북동:명:4
  +북동부:명:4
  +북동쪽:명:11
  +북두칠성:명:6
  +북록:명:1
  +북문:명:11
  +북반구:명:6
  +북반부:명:1
  +북받치다:동:4
  +북방:명:34
  +북방계:명:4
  +북방애기박쥐:명:1
  +북벌:명:3
  +북벌론:명:6
  +북벌론자:명:4
  +북부:명:1
  +북부:명:59
  +북북:부:2
  +북북동:명:1
  +북산:명:5
  +북상:명:4
  +북상하다:동:2
  +북새통:명:7
  +북서:명:8
  +북서류하다:동:2
  +북서쪽:명:14
  +북서풍:명:2
  +북소리:명:4
  +북송:명:1
  +북안:명:6
  +북어:명:18
  +북어포:명:1
  +북엇국:명:1
  +북위:명:22
  +북적거리다:동:6
  +북적대다:동:5
  +북적이다:동:2
  +북조:명:3
  +북진:명:2
  +북진하다:동:2
  +북쪽:명:100
  +북춤:명:1
  +북측:명:1
  +북침설:명:1
  +북카페:명:1
  +북포:명:1
  +북풍:명:5
  +북풍한설:명:1
  +북한강변:명:1
  +북한어:명:1
  +북향:명:3
  +북현무:명:2
  +분:명:10
  +분:명:12
  +분:명:4
  +분:명:4
  +분:의:418
  +분:의:630
  +분가:명:3
  +분가루:명:1
  +분가하다:동:4
  +분간:명:5
  +분간하다:동:11
  +분갈이:명:9
  +분갈이하다:동:4
  +분개하다:동:8
  +분계선:명:6
  +분과:명:14
  +분과:명:8
  +분과위:명:5
  +분광:명:1
  +분광기:명:1
  +분광학적:관:1
  +분교:명:4
  +분국장:명:1
  +분권화:명:3
  +분규:명:58
  +분급:명:9
  +분급되다:동:5
  +분급받다:동:2
  +분급제:명:4
  +분급하다:동:2
  +분기:명:1
  +분기:명:26
  +분기점:명:6
  +분기탱천:명:1
  +분기탱천하다:동:1
  +분꽃:명:1
  +분네:의:2
  +분노:명:82
  +분노감:명:1
  +분노하다:동:15
  +분뇨:명:5
  +분단:명:24
  +분단:명:50
  +분단당하다:동:2
  +분단되다:동:3
  +분단장:명:1
  +분단하다:동:2
  +분담:명:34
  +분담금:명:5
  +분담론:명:7
  +분담률:명:1
  +분담하다:동:13
  +분당:명:1
  +분대:명:1
  +분대원:명:1
  +분대장:명:2
  +분도:명:1
  +분란:명:1
  +분량:명:56
  +분루:명:1
  +분류:명:1
  +분류:명:22
  +분류되다:동:31
  +분류사:명:1
  +분류표:명:1
  +분류하다:동:43
  +분리:명:59
  +분리되다:동:52
  +분리론:명:1
  +분리수거:명:13
  +분리수거되다:동:1
  +분리수거하다:동:1
  +분리시키다:동:14
  +분리적:명:2
  +분리주의:명:3
  +분리하다:동:34
  +분립:명:6
  +분립적:관:1
  +분마기:명:1
  +분만:명:27
  +분만법:명:1
  +분만실:명:4
  +분만하다:동:10
  +분말:명:1
  +분말:명:4
  +분말기:명:4
  +분명:부:77
  +분명하다:형:233
  +분명해지다:동:17
  +분명히:부:156
  +분묘:명:2
  +분무:명:8
  +분무기:명:6
  +분발:명:4
  +분발하다:동:3
  +분방하다:형:2
  +분배:명:16
  +분배되다:동:3
  +분배망:명:1
  +분배받다:동:2
  +분배율:명:1
  +분배하다:동:6
  +분별:명:11
  +분별되다:동:1
  +분별력:명:2
  +분별없다:형:2
  +분별없이:부:2
  +분별지:명:9
  +분별하다:동:9
  +분봉:명:2
  +분부:명:3
  +분분하다:형:6
  +분분히:부:2
  +분비:명:16
  +분비되다:동:5
  +분비물:명:1
  +분비샘:명:1
  +분사제:명:1
  +분사하다:동:2
  +분산:명:18
  +분산되다:동:7
  +분산성:명:2
  +분산시키다:동:7
  +분산적:명:1
  +분산지:명:1
  +분산하다:동:5
  +분산화:명:1
  +분석:명:233
  +분석가:명:1
  +분석기:명:1
  +분석되다:동:27
  +분석력:명:2
  +분석률:명:1
  +분석원:명:1
  +분석적:관:10
  +분석적:명:5
  +분석표:명:1
  +분석하다:동:147
  +분석학:명:5
  +분석학자:명:2
  +분석학적:관:4
  +분석학적:명:3
  +분쇄:명:7
  +분쇄기:명:1
  +분쇄하다:동:3
  +분수:명:1
  +분수:명:15
  +분수:명:5
  +분수계:명:2
  +분수대:명:9
  +분수령:명:6
  +분식:명:1
  +분식:명:3
  +분식:명:3
  +분식되다:동:1
  +분식점:명:1
  +분식집:명:6
  +분식하다:동:1
  +분신:명:8
  +분신:명:8
  +분신자살:명:2
  +분신자살하다:동:1
  +분신하다:동:3
  +분실:명:10
  +분실:명:2
  +분실되다:동:1
  +분실물:명:1
  +분실하다:동:1
  +분야:명:407
  +분양:명:32
  +분양가:명:5
  +분양되다:동:1
  +분양받다:동:5
  +분양하다:동:5
  +분업:명:14
  +분업화:명:4
  +분업화되다:동:1
  +분업화시키다:동:1
  +분연히:부:1
  +분열:명:55
  +분열되다:동:25
  +분열론:명:1
  +분열시키다:동:4
  +분열증:명:2
  +분열하다:동:2
  +분위기:명:472
  +분유:명:7
  +분임:명:4
  +분자:명:27
  +분자시계:명:2
  +분장:명:19
  +분장사:명:16
  +분장실:명:11
  +분장하다:동:1
  +분장하다:동:3
  +분재:명:4
  +분재원:명:1
  +분쟁:명:2
  +분쟁:명:46
  +분쟁거리:명:1
  +분전하다:동:1
  +분정받다:동:1
  +분조장:명:1
  +분주하다:동:3
  +분주하다:형:23
  +분주해지다:동:1
  +분주히:부:7
  +분지:명:20
  +분지다:보:1
  +분지르다:동:4
  +분지화:명:1
  +분진:명:10
  +분청사기:명:1
  +분출:명:8
  +분출되다:동:1
  +분출물:명:1
  +분출시키다:동:2
  +분출적:명:1
  +분출하다:동:16
  +분칠:명:1
  +분침:명:2
  +분탕질:명:3
  +분탕질되다:동:1
  +분통:명:9
  +분투하다:동:1
  +분파:명:3
  +분파주의자:명:1
  +분패하다:동:1
  +분포:명:40
  +분포권:명:1
  +분포도:명:1
  +분포되다:동:11
  +분포암:명:2
  +분포하다:동:85
  +분풀이:명:4
  +분필:명:2
  +분하다:동:6
  +분하다:형:14
  +분할:명:22
  +분할:명:4
  +분할되다:동:5
  +분할미:명:1
  +분할받다:동:1
  +분할선:명:3
  +분할시키다:동:2
  +분할하다:동:1
  +분할하다:동:9
  +분합:명:2
  +분합수:명:1
  +분해:명:16
  +분해되다:동:17
  +분해자:명:1
  +분해하다:동:9
  +분향하다:동:1
  +분홍:명:12
  +분홍빛:명:5
  +분홍색:명:12
  +분화:명:16
  +분화구:명:4
  +분화되다:동:6
  +분화적:관:2
  +분화하다:동:8
  +붇다:동:12
  +불:명:1
  +불:명:10
  +불:명:415
  +불:명:8
  +불:의:10
  +불가:명:11
  +불가:명:3
  +불가:명:4
  +불가결:명:1
  +불가결하다:형:10
  +불가능:명:12
  +불가능하다:형:143
  +불가능하여지다:동:1
  +불가능해지다:동:4
  +불가분:명:10
  +불가불:부:3
  +불가사리:명:1
  +불가사의:명:1
  +불가사의론:명:1
  +불가사의하다:형:7
  +불가입성:명:1
  +불가지론:명:1
  +불가침:명:4
  +불가침성:명:1
  +불가피:명:5
  +불가피성:명:2
  +불가피하다:형:69
  +불가피해지다:동:3
  +불가항력:명:2
  +불가항력적:명:2
  +불가해하다:형:2
  +불간섭:명:3
  +불갈비:명:1
  +불감증:명:18
  +불감청:명:1
  +불같다:형:2
  +불같이:부:2
  +불개미:명:3
  +불개입:명:1
  +불거지다:동:14
  +불건강:명:4
  +불건강하다:형:2
  +불건전하다:형:1
  +불결감:명:1
  +불결하다:형:6
  +불경:명:12
  +불경기:명:3
  +불경스럽다:형:3
  +불경죄:명:1
  +불계:명:1
  +불계패:명:1
  +불고기:명:53
  +불고지죄:명:1
  +불공정:명:16
  +불공정성:명:1
  +불공정하다:형:3
  +불공평:명:2
  +불공평하다:형:4
  +불과:부:56
  +불과하다:형:241
  +불교:명:376
  +불교계:명:16
  +불교관:명:2
  +불교도:명:2
  +불교사:명:4
  +불교식:명:2
  +불교적:관:13
  +불교적:명:2
  +불구:명:15
  +불구:명:4
  +불구경꾼:명:1
  +불구경하다:동:1
  +불구내:명:1
  +불구대천:명:1
  +불구덩이:명:3
  +불구속:명:20
  +불구자:명:3
  +불구하다:동:256
  +불구화시키다:동:1
  +불국:명:1
  +불굴:명:1
  +불귀:명:3
  +불규칙:명:1
  +불규칙성:명:1
  +불규칙적:명:7
  +불규칙하다:형:9
  +불규칙해지다:동:1
  +불균등:명:2
  +불균등성:명:1
  +불균등하다:형:2
  +불균일성:명:1
  +불균형:명:23
  +불균형스럽다:형:1
  +불균형적:명:1
  +불그림자:명:1
  +불그스레하다:형:2
  +불그죽죽하다:형:2
  +불기:명:2
  +불기둥:명:3
  +불기소:명:21
  +불기소하다:동:2
  +불기운:명:2
  +불길:명:1
  +불길:명:23
  +불길하다:형:24
  +불길해하다:동:1
  +불꽃:명:43
  +불꽃놀이하다:동:2
  +불끈:부:9
  +불나다:동:4
  +불내:명:2
  +불내증:명:1
  +불능:명:10
  +불능하다:형:1
  +불다:동:182
  +불덩이:명:4
  +불도:명:5
  +불도그:명:1
  +불도저:명:8
  +불땀:명:1
  +불똥:명:6
  +불량:명:28
  +불량률:명:1
  +불량배:명:5
  +불량스럽다:형:3
  +불량품:명:3
  +불량하다:형:5
  +불량해지다:동:1
  +불러내다:동:10
  +불러들이다:동:12
  +불러오다:동:11
  +불러올리다:동:1
  +불러일으키다:동:70
  +불러지다:동:1
  +불려지다:동:13
  +불로:명:12
  +불로장생:명:3
  +불룩:부:1
  +불룩하다:형:9
  +불륜:명:4
  +불르다:동:1
  +불리:명:4
  +불리다:동:165
  +불리다:동:2
  +불리다:동:3
  +불리다:동:53
  +불리어지다:동:2
  +불리우다:동:6
  +불리하다:형:48
  +불리해지다:동:2
  +불립:명:1
  +불만:명:123
  +불만기:명:1
  +불만스러워하다:동:1
  +불만스럽다:형:10
  +불만스레:부:1
  +불만족:명:1
  +불매:명:1
  +불면:명:6
  +불면증:명:28
  +불멸:명:1
  +불멸하다:동:2
  +불명:명:7
  +불명예:명:2
  +불명예스럽다:형:3
  +불명예제대:명:1
  +불명확하다:형:2
  +불모:명:2
  +불모성:명:3
  +불모지:명:2
  +불목하니:명:1
  +불문:명:5
  +불문가지:명:1
  +불문곡직:명:1
  +불문곡직하다:동:1
  +불문과:명:10
  +불문율:명:6
  +불문하다:동:5
  +불문학:명:1
  +불미스럽다:형:4
  +불바다:명:3
  +불바람:명:1
  +불발:명:4
  +불발되다:동:1
  +불발탄:명:1
  +불벌죄:명:1
  +불법:명:169
  +불법:명:21
  +불법성:명:1
  +불법적:관:2
  +불법적:명:19
  +불법하다:형:6
  +불법화:명:2
  +불법화되다:동:1
  +불법화하다:동:2
  +불벼락:명:1
  +불변:명:8
  +불변성:명:1
  +불변적:명:1
  +불변하다:동:2
  +불볕:명:2
  +불볕더위:명:4
  +불보:명:2
  +불복:명:4
  +불복하다:동:4
  +불분명하다:형:4
  +불붙다:동:7
  +불비:명:1
  +불빛:명:86
  +불사르다:동:6
  +불사하다:동:9
  +불상:명:49
  +불상놈:명:2
  +불상사:명:7
  +불상용:명:1
  +불성:명:13
  +불성실:명:2
  +불성실하다:형:2
  +불소:명:1
  +불손하다:형:9
  +불순:명:3
  +불순:명:4
  +불순물:명:6
  +불순분자:명:5
  +불순하다:형:12
  +불순해지다:동:1
  +불시:명:7
  +불시착:명:1
  +불시착하다:동:2
  +불식시키다:동:2
  +불신:명:46
  +불신감:명:9
  +불신론:명:1
  +불신자:명:1
  +불신하다:동:6
  +불심:명:42
  +불쌍하다:형:64
  +불쌍해지다:동:1
  +불쌍해하다:동:1
  +불쌍히:부:2
  +불쑥:부:42
  +불쑥불쑥:부:4
  +불씨:명:15
  +불안:명:110
  +불안:명:2
  +불안감:명:28
  +불안스럽다:형:3
  +불안스레:부:1
  +불안정:명:9
  +불안정되다:동:1
  +불안정하다:형:27
  +불안정해지다:동:1
  +불안증:명:1
  +불안투성이:명:1
  +불안하다:형:100
  +불안해지다:동:8
  +불안해하다:동:9
  +불알:명:2
  +불야성:명:4
  +불어:명:13
  +불어과:명:3
  +불어나다:동:25
  +불어넣다:동:25
  +불어오다:동:44
  +불어제치다:동:1
  +불언:명:3
  +불여우:명:1
  +불여일견:명:1
  +불연기연:명:4
  +불연성:명:1
  +불연속:명:1
  +불연속적:관:2
  +불연속적:명:2
  +불온:명:3
  +불온시되다:동:1
  +불온하다:형:2
  +불완전하다:형:25
  +불요구:명:1
  +불요불급:명:1
  +불요불급하다:형:2
  +불우:명:20
  +불우자:명:1
  +불우하다:형:11
  +불운:명:4
  +불운하다:형:2
  +불유쾌하다:형:2
  +불응:명:3
  +불응하다:동:9
  +불의:명:13
  +불의:명:7
  +불의하다:형:1
  +불이농촌:명:1
  +불이익:명:24
  +불이행:명:1
  +불인:명:1
  +불인도:명:1
  +불인정:명:2
  +불일치:명:3
  +불임:명:11
  +불임증:명:3
  +불입:명:1
  +불입되다:동:1
  +불입액:명:1
  +불입하다:동:13
  +불장난:명:2
  +불전:명:1
  +불전:명:9
  +불조심:명:1
  +불조심하다:동:1
  +불지:명:1
  +불질:명:2
  +불참:명:7
  +불참여:명:1
  +불참자:명:1
  +불참하다:동:5
  +불처벌:명:1
  +불철저하다:형:1
  +불철주야:명:1
  +불청객:명:4
  +불체포:명:1
  +불출:명:1
  +불충분:명:2
  +불충분하다:형:7
  +불충하다:형:1
  +불측하다:형:1
  +불치:명:1
  +불치병:명:2
  +불친절:명:6
  +불친절하다:형:5
  +불침번:명:2
  +불콰하다:형:2
  +불쾌:명:1
  +불쾌감:명:11
  +불쾌지수:명:2
  +불쾌하다:형:21
  +불쾌해지다:동:1
  +불쾌해하다:동:3
  +불타다:동:27
  +불타오르다:동:3
  +불탑:명:1
  +불태우다:동:10
  +불태워지다:동:2
  +불통:명:1
  +불통되다:동:2
  +불퇴전:명:1
  +불투명:명:2
  +불투명하다:형:26
  +불투명해지다:동:3
  +불퉁거리다:동:2
  +불특정:명:1
  +불특정인:명:1
  +불티:명:2
  +불티나다:동:1
  +불판:명:2
  +불패:명:1
  +불편:명:48
  +불편부당:명:1
  +불편부당하다:형:2
  +불편스럽다:형:1
  +불편하다:형:123
  +불편해지다:동:1
  +불편해하다:동:1
  +불평:명:1
  +불평:명:25
  +불평등:명:39
  +불평등하다:형:29
  +불평불만:명:1
  +불평스럽다:형:1
  +불평하다:동:5
  +불필요론:명:1
  +불필요하다:형:24
  +불하:명:1
  +불하:명:1
  +불하받다:동:4
  +불학:명:1
  +불한당:명:1
  +불합격:명:2
  +불합격되다:동:2
  +불합격시키다:동:1
  +불합격하다:동:2
  +불합리:명:1
  +불합리성:명:2
  +불합리하다:형:11
  +불행:명:53
  +불행사:명:4
  +불행하다:형:61
  +불행해지다:동:4
  +불행히:부:6
  +불허:명:11
  +불허되다:동:2
  +불허하다:동:4
  +불현듯:부:14
  +불협화:명:5
  +불협화음:명:7
  +불협화하다:동:1
  +불혹:명:4
  +불혹지년:명:1
  +불화:명:1
  +불화:명:11
  +불화롭다:형:1
  +불화살:명:2
  +불화설:명:1
  +불화성:명:1
  +불확실성:명:6
  +불확실하다:형:18
  +불확실해지다:명:1
  +불확정성:명:4
  +불황:명:25
  +불황기:명:2
  +불효:명:1
  +불효막심하다:형:1
  +불효자:명:2
  +불효하다:동:1
  +불효하다:형:1
  +불후:명:3
  +붉나무:명:2
  +붉다:동:5
  +붉다:형:113
  +붉덩물:명:1
  +붉디붉다:형:3
  +붉어지다:동:21
  +붉으락푸르락:부:1
  +붉으락푸르락해지다:동:1
  +붉은머리오목눈이:명:5
  +붉은박쥐:명:1
  +붉은배새매:명:1
  +붉은부리문조:명:1
  +붉은빛:명:5
  +붉은색:명:11
  +붉은서나물:명:1
  +붉히다:동:18
  +붐:명:28
  +붐비다:동:25
  +붓:명:23
  +붓글씨:명:3
  +붓꽃:명:8
  +붓끝:명:2
  +붓놀림:명:1
  +붓다:동:120
  +붓다:동:19
  +붓방아:명:1
  +붓질:명:1
  +붕:부:5
  +붕괴:명:58
  +붕괴되다:동:21
  +붕괴설:명:1
  +붕괴하다:동:9
  +붕대:명:11
  +붕대법:명:2
  +붕락:명:1
  +붕붕:부:1
  +붕붕거리다:동:1
  +붕알:명:1
  +붕어:명:16
  +붕우유신:명:3
  +붙다:동:294
  +붙들다:동:34
  +붙들리다:동:11
  +붙박이:명:6
  +붙박이다:동:2
  +붙어살다:동:1
  +붙여지다:동:15
  +붙이다:동:310
  +붙임성:명:1
  +붙잡다:동:57
  +붙잡히다:동:31
  +뷔페:명:3
  +뷔페식:명:3
  +뷔페식당:명:1
  +뷔페제:명:1
  +뷰러:명:1
  +뷰박스:명:1
  +브라만:명:7
  +브라만교:명:4
  +브라우저:명:3
  +브라운:명:5
  +브라운관:명:14
  +브래지어:명:2
  +브랜드:명:31
  +브랜디:명:22
  +브러시:명:4
  +브레이크:명:5
  +브레인:명:1
  +브로커:명:15
  +브로콜리:명:10
  +브리:명:3
  +브리지:명:16
  +브리핑:명:3
  +브이디오:명:1
  +브이시아르:명:5
  +브이아이피:명:2
  +브이에이티:명:1
  +브이티아르:명:6
  +브이형:명:1
  +블라우스:명:21
  +블라인드:명:4
  +블랙:명:6
  +블랙리스트:명:4
  +블랙존:명:1
  +블랙진:명:1
  +블랙커피:명:4
  +블랙헤드:명:5
  +블랙홀:명:1
  +블로킹:명:3
  +블록:명:12
  +블록:명:6
  +블록버스터:명:1
  +블록화:명:2
  +블록화하다:동:1
  +블루:명:1
  +블루길:명:1
  +블루스:명:4
  +블루진:명:2
  +비:명:10
  +비:명:12
  +비:명:19
  +비:명:2
  +비:명:3
  +비:명:357
  +비:명:5
  +비가시적:명:1
  +비가열:명:1
  +비가입국:명:1
  +비각:명:1
  +비감스럽다:형:1
  +비감정화:명:1
  +비거덕거리다:동:3
  +비겁하다:형:12
  +비견되다:동:4
  +비견하다:동:1
  +비결:명:29
  +비결정론적:관:5
  +비결정론적:명:2
  +비경쟁:명:1
  +비경제:명:1
  +비계:명:3
  +비계공:명:1
  +비계열:명:3
  +비곗덩어리:명:2
  +비고전성:명:1
  +비고전적:관:1
  +비고전적:명:1
  +비고전주의적:명:1
  +비공개:명:5
  +비공개성:명:1
  +비공격적:명:1
  +비공산당:명:1
  +비공식:명:9
  +비공식적:명:5
  +비공식화되다:동:1
  +비공인:명:1
  +비과세:명:1
  +비과학:명:7
  +비과학적:관:1
  +비과학적:명:5
  +비관:명:5
  +비관론:명:1
  +비관적:관:2
  +비관적:명:4
  +비관하다:동:5
  +비교:명:82
  +비교당하다:동:1
  +비교되다:동:9
  +비교사:명:2
  +비교육적:관:3
  +비교육적:명:1
  +비교적:관:1
  +비교적:부:137
  +비교표:명:1
  +비교하다:동:151
  +비구:명:2
  +비구니:명:1
  +비구름:명:3
  +비구상적:명:1
  +비굴하다:형:8
  +비극:명:92
  +비극미:명:2
  +비극적:관:16
  +비극적:명:16
  +비근하다:형:3
  +비금속:명:3
  +비기다:동:15
  +비껴가다:동:2
  +비껴들다:동:1
  +비꼬다:동:13
  +비꼬이다:동:1
  +비끼다:동:14
  +비난:명:79
  +비난받다:동:17
  +비난적:명:1
  +비난조:명:2
  +비난하다:동:54
  +비녀:명:3
  +비노예적:관:1
  +비논리:명:1
  +비농민:명:1
  +비농업:명:1
  +비뇨기:명:1
  +비뇨기과:명:1
  +비누:명:26
  +비눗기:명:1
  +비눗물:명:4
  +비눗방울:명:1
  +비늘:명:13
  +비늘구름:명:1
  +비능률:명:3
  +비능률성:명:1
  +비닐:명:68
  +비닐봉지:명:23
  +비닐우산:명:6
  +비닐종이:명:1
  +비닐하우스:명:17
  +비다:동:1
  +비다:동:250
  +비단:명:24
  +비단:부:29
  +비단결:명:2
  +비단옷:명:3
  +비단잉어:명:5
  +비단조:명:1
  +비단조개:명:2
  +비당원:명:2
  +비대:명:2
  +비대중화:명:1
  +비대칭:명:3
  +비대하다:형:3
  +비대해지다:동:9
  +비대화:명:1
  +비대화되다:동:1
  +비도:명:1
  +비도덕성:명:1
  +비도덕적:관:1
  +비도덕적:명:3
  +비동맹국:명:1
  +비동시적:명:1
  +비동의:명:1
  +비둘기:명:14
  +비드라마적:명:2
  +비등점:명:1
  +비등하다:동:1
  +비등하다:동:3
  +비디오:명:117
  +비디오광:명:2
  +비디오물:명:1
  +비디오카메라:명:4
  +비디오테이프:명:7
  +비디오텍스:명:2
  +비디오폰:명:1
  +비디오플레이어:명:2
  +비뚜로:부:1
  +비뚤배뚤해지다:동:1
  +비뚤어지다:동:21
  +비련:명:1
  +비례:명:32
  +비례적:명:1
  +비례하다:동:20
  +비로드:명:2
  +비로소:부:149
  +비로전:명:3
  +비록:부:202
  +비롯:명:62
  +비롯되다:동:94
  +비롯하다:동:259
  +비료:명:46
  +비룡:명:2
  +비루:명:1
  +비르집다:동:1
  +비리:명:149
  +비리다:보:1
  +비리다:형:2
  +비린내:명:3
  +비릿하다:형:6
  +비만:명:18
  +비만도:명:1
  +비만자:명:1
  +비만증:명:4
  +비만하다:형:1
  +비만해지다:동:4
  +비망록:명:2
  +비명:명:1
  +비명:명:2
  +비명:명:53
  +비명횡사하다:동:3
  +비몽사몽:명:1
  +비무장:명:15
  +비문:명:8
  +비문명적:명:1
  +비문자적:관:2
  +비문화적:관:1
  +비문화적:명:2
  +비물질계:명:1
  +비민족적:명:1
  +비민주:명:1
  +비민주적:관:4
  +비민주적:명:4
  +비밀:명:169
  +비밀경찰:명:4
  +비밀리:명:4
  +비밀문서:명:1
  +비밀스럽다:형:5
  +비밀주의:명:1
  +비바람:명:28
  +비방:명:1
  +비방:명:4
  +비방전:명:1
  +비방하다:동:5
  +비범하다:형:1
  +비법:명:15
  +비보:명:3
  +비보:명:5
  +비본질적:명:1
  +비분강개:명:1
  +비분강개하다:동:1
  +비분강개해하다:동:1
  +비비:부:2
  +비비다:동:48
  +비빈:명:1
  +비빔밥:명:10
  +비사실적:관:1
  +비사실주의적:관:1
  +비사용자:명:1
  +비산:명:1
  +비산비야:명:1
  +비상:명:1
  +비상:명:1
  +비상:명:3
  +비상:명:33
  +비상경계령:명:2
  +비상경보:명:1
  +비상계엄:명:3
  +비상계엄령:명:4
  +비상구:명:2
  +비상근무:명:2
  +비상근무령:명:1
  +비상근무하다:동:1
  +비상령:명:1
  +비상벨:명:1
  +비상사태:명:10
  +비상시:명:3
  +비상시국:명:2
  +비상식적:명:4
  +비상업적:명:1
  +비상용:명:3
  +비상임:명:1
  +비상장:명:2
  +비상조치:명:2
  +비상종:명:1
  +비상책:명:1
  +비상하다:동:1
  +비상하다:동:2
  +비상하다:형:12
  +비색:명:1
  +비생물:명:1
  +비생물적:관:2
  +비생산성:명:1
  +비생산적:명:4
  +비서:명:33
  +비서관:명:92
  +비서관실:명:10
  +비서실:명:37
  +비서실장:명:23
  +비서장:명:2
  +비서진:명:3
  +비석:명:11
  +비선호도:명:2
  +비소설:명:1
  +비속:명:2
  +비속어:명:1
  +비속하다:형:1
  +비수:명:4
  +비수기:명:3
  +비스듬하다:형:4
  +비스듬히:부:24
  +비스르다:동:1
  +비스킷:명:5
  +비슷비슷하다:형:7
  +비슷이:부:1
  +비슷하다:형:285
  +비슷해지다:동:3
  +비시:명:20
  +비시적:관:1
  +비시적:명:1
  +비식민지화:명:1
  +비신:명:1
  +비실거리다:동:1
  +비실명:명:7
  +비실비실:부:4
  +비실비실하다:동:1
  +비실용성:명:1
  +비싸다:형:122
  +비싸지다:동:4
  +비아나운서:명:1
  +비아냥:명:3
  +비아냥거리다:동:12
  +비아냥대다:동:2
  +비안개:명:2
  +비애:명:7
  +비약:명:8
  +비약되다:동:1
  +비약상:명:1
  +비약적:관:1
  +비약적:명:19
  +비약하다:동:3
  +비양심적:관:1
  +비어지다:동:2
  +비어지다:동:7
  +비언어적:관:1
  +비업무:명:17
  +비엑스:명:1
  +비엔나소시지:명:2
  +비엔나커피:명:2
  +비엔날레:명:2
  +비역사적:관:1
  +비연고지:명:1
  +비열:명:1
  +비열하다:형:7
  +비염:명:1
  +비엽:명:2
  +비영리:명:3
  +비영리적:명:1
  +비예술:명:1
  +비예술적:관:1
  +비오디:명:2
  +비옥하다:형:10
  +비옥해지다:동:1
  +비올라:명:4
  +비옷:명:1
  +비용:명:196
  +비우다:동:104
  +비운:명:5
  +비웃다:동:30
  +비웃음:명:10
  +비워지다:동:6
  +비위:명:1
  +비위:명:1
  +비위:명:18
  +비위생적:명:3
  +비위짱:명:1
  +비유:명:19
  +비유되다:동:4
  +비유법:명:2
  +비유적:관:2
  +비유적:명:1
  +비유하다:동:24
  +비윤리적:명:1
  +비율:명:68
  +비의도적:관:1
  +비의류:명:1
  +비의적:명:1
  +비의지적:명:1
  +비이상주의적:명:1
  +비이성적:명:4
  +비이중적:관:1
  +비인간성:명:2
  +비인간적:관:2
  +비인간적:명:4
  +비인간화:명:6
  +비인간화되다:동:1
  +비인기:명:2
  +비인도적:관:2
  +비인도적:명:2
  +비인문학적:관:1
  +비인성적:명:1
  +비인플레적:관:1
  +비인플레적:명:1
  +비일비재하다:형:5
  +비일상적:명:2
  +비자:명:11
  +비자금:명:36
  +비자생적:관:1
  +비자연적:명:1
  +비자연주의적:관:1
  +비장:명:1
  +비장:명:6
  +비장미:명:1
  +비장비:명:1
  +비장하다:동:1
  +비장하다:형:5
  +비적대적:명:1
  +비전:명:1
  +비전:명:14
  +비전문가:명:1
  +비전문성:명:1
  +비전문적:관:1
  +비정:명:3
  +비정기적:명:2
  +비정부적:관:1
  +비정상:명:9
  +비정상성:명:5
  +비정상인:명:1
  +비정상적:관:9
  +비정상적:명:16
  +비정치성:명:1
  +비정치인:명:1
  +비정치적:명:3
  +비정하다:형:5
  +비정한:명:1
  +비정형적:명:1
  +비제도권:명:1
  +비제조:명:1
  +비제조업:명:1
  +비조객:명:1
  +비좁다:형:13
  +비주류:명:3
  +비죽:부:1
  +비죽거리다:동:2
  +비죽비죽:부:1
  +비죽이:부:1
  +비죽이:부:2
  +비죽이다:동:1
  +비준:명:3
  +비준서:명:1
  +비중:명:85
  +비즈니스:명:9
  +비지:명:1
  +비지:명:3
  +비지땀:명:3
  +비지떡:명:2
  +비진흥:명:1
  +비질:명:3
  +비질하다:동:1
  +비집다:동:21
  +비짜루:명:1
  +비쩍:부:2
  +비쭉:부:1
  +비쭉거리다:동:1
  +비쭉비쭉하다:동:1
  +비참여:명:1
  +비참하다:형:20
  +비참해지다:동:1
  +비책:명:1
  +비천상:명:2
  +비천하다:형:1
  +비천하다:형:2
  +비철:명:1
  +비쳐지다:동:11
  +비추다:동:99
  +비추어지다:동:7
  +비축:명:11
  +비축미:명:1
  +비축하다:동:5
  +비춰지다:동:5
  +비취:명:1
  +비치:명:1
  +비치:명:2
  +비치다:동:102
  +비치되다:동:5
  +비치이다:동:1
  +비치파라솔:명:1
  +비치파라솔형:명:1
  +비치하다:동:4
  +비칠거리다:동:1
  +비칠비칠:부:2
  +비커:명:2
  +비켜나다:동:2
  +비켜서다:동:11
  +비키니:명:1
  +비키다:동:30
  +비타민:명:29
  +비타협적:관:1
  +비탄:명:2
  +비탄자:명:1
  +비탄해하다:동:1
  +비탈:명:5
  +비탈길:명:4
  +비탈밭:명:1
  +비탈지다:형:6
  +비통:명:1
  +비통신:명:1
  +비통치:명:1
  +비통하다:형:5
  +비트:의:27
  +비트플레인:의:2
  +비틀거리다:동:11
  +비틀걸음:명:1
  +비틀다:동:18
  +비틀리다:동:2
  +비틀비틀:부:4
  +비틀어지다:동:2
  +비틀하다:동:1
  +비파:명:2
  +비파괴성:명:1
  +비파사나:명:1
  +비파형:명:1
  +비판:명:175
  +비판되다:동:3
  +비판력:명:2
  +비판론:명:8
  +비판론자:명:1
  +비판받다:동:4
  +비판자:명:3
  +비판적:관:34
  +비판적:명:23
  +비판하다:동:90
  +비퍼:명:1
  +비평:명:28
  +비평가:명:16
  +비평계:명:1
  +비평문:명:1
  +비평서:명:2
  +비평자:명:1
  +비평적:관:5
  +비평준화:명:5
  +비평하다:동:3
  +비평형:명:1
  +비포장길:명:1
  +비포장도로:명:1
  +비폭력:명:2
  +비품:명:5
  +비프스테이크:명:4
  +비피에스:의:4
  +비하:명:7
  +비하다:동:454
  +비하하다:동:3
  +비합리성:명:2
  +비합리적:관:1
  +비합리적:명:2
  +비합법화시키다:동:1
  +비핵:명:3
  +비핵화:명:9
  +비핵화하다:동:1
  +비행:명:1
  +비행:명:26
  +비행:명:50
  +비행기:명:196
  +비행기구:명:1
  +비행사:명:23
  +비행선:명:1
  +비행아:명:1
  +비행운:명:1
  +비행장:명:22
  +비행접시:명:1
  +비행체:명:1
  +비행하다:동:7
  +비현실:명:3
  +비현실감:명:2
  +비현실성:명:1
  +비현실적:관:1
  +비현실적:명:14
  +비혈연적:관:1
  +비협조:명:1
  +비형:명:3
  +비호:명:9
  +비호같이:부:1
  +비호남:명:1
  +비호받다:동:1
  +비호자:명:1
  +비호하다:동:4
  +비화:명:3
  +비화:명:7
  +비화되다:동:6
  +비화하다:동:2
  +비회원:명:1
  +비효율:명:6
  +비효율성:명:5
  +비효율적:관:3
  +비효율적:명:8
  +비흡연자:명:1
  +빅:명:2
  +빅뱅:명:12
  +빅월:명:1
  +빅토리:명:2
  +빈:명:3
  +빈곤:명:19
  +빈곤자:명:1
  +빈곤하다:형:4
  +빈곤해지다:동:2
  +빈곤화:명:1
  +빈공과:명:1
  +빈국:명:1
  +빈궁:명:1
  +빈껍데기:명:1
  +빈농:명:1
  +빈농군:명:1
  +빈대:명:1
  +빈대떡:명:10
  +빈도:명:13
  +빈둥거리다:동:7
  +빈둥빈둥:부:2
  +빈둥빈둥하다:동:1
  +빈들거리다:동:2
  +빈말:명:1
  +빈민:명:4
  +빈민가:명:5
  +빈민굴:명:2
  +빈민층:명:1
  +빈발하다:동:6
  +빈방:명:5
  +빈번하다:형:20
  +빈번해지다:동:1
  +빈번히:부:6
  +빈부:명:14
  +빈부귀천:명:3
  +빈사:명:1
  +빈소:명:2
  +빈속:명:4
  +빈손:명:8
  +빈약하다:형:18
  +빈약해지다:동:2
  +빈익빈:명:6
  +빈자리:명:9
  +빈정거리다:동:6
  +빈정대다:동:3
  +빈집:명:7
  +빈천:명:1
  +빈축:명:5
  +빈칸:명:11
  +빈털터리:명:3
  +빈틈:명:3
  +빈틈없다:형:5
  +빈틈없이:부:3
  +빈한하다:형:1
  +빈혈:명:12
  +빈혈증:명:1
  +빌다:동:13
  +빌다:동:72
  +빌다:동:8
  +빌딩:명:29
  +빌라:명:7
  +빌려쓰다:동:2
  +빌리다:동:175
  +빌미:명:12
  +빌붙다:동:6
  +빌빌거리다:동:3
  +빌빌대다:동:1
  +빌어먹다:동:3
  +빌어먹을:감:4
  +빌어먹을:관:4
  +빔:명:1
  +빗:명:4
  +빗금:명:5
  +빗기:명:1
  +빗기다:동:2
  +빗길:명:5
  +빗나가다:동:19
  +빗다:동:6
  +빗대다:동:14
  +빗물:명:40
  +빗발치다:동:9
  +빗방울:명:18
  +빗살:명:2
  +빗소리:명:6
  +빗속:명:6
  +빗자루:명:13
  +빗장:명:10
  +빗줄기:명:26
  +빗질:명:3
  +빗질하다:동:1
  +빙:부:15
  +빙과:명:1
  +빙그레:부:15
  +빙그르르:부:3
  +빙그르르:부:4
  +빙글:부:2
  +빙글거리다:동:3
  +빙글빙글:부:2
  +빙글빙글:부:2
  +빙긋:부:6
  +빙긋이:부:7
  +빙기림:명:1
  +빙벽:명:3
  +빙빙:부:7
  +빙산:명:5
  +빙상:명:1
  +빙수:명:5
  +빙수기:명:3
  +빙신:명:3
  +빙어:명:1
  +빙자하다:동:9
  +빙점:명:2
  +빙초산:명:5
  +빙치린:명:2
  +빙판:명:2
  +빙하:명:1
  +빙하:명:3
  +빙하기:명:1
  +빚:명:52
  +빚다:동:79
  +빚더미:명:1
  +빚어내다:동:22
  +빚어지다:동:38
  +빚쟁이:명:3
  +빚지다:동:10
  +빛:명:270
  +빛깔:명:57
  +빛나다:동:109
  +빛내다:동:15
  +빛바래다:형:6
  +빛살:명:11
  +빠개다:동:2
  +빠구리:명:1
  +빠꼼히:부:1
  +빠끔히:부:5
  +빠듯하다:형:7
  +빠디다:보:2
  +빠뜨리다:동:29
  +빠루:명:1
  +빠르다:형:351
  +빠른우편:명:1
  +빠리꾼:명:1
  +빠바박:부:1
  +빠빠라빠빠:감:1
  +빠빠빠:감:3
  +빠에야:명:1
  +빠이빠이:감:2
  +빠자작:부:1
  +빠작빠작:부:3
  +빠져나가다:동:111
  +빠져나오다:동:60
  +빠져버리다:동:1
  +빠지다:동:188
  +빠지다:동:303
  +빠지다:보:14
  +빠짐없이:부:14
  +빡빡하다:형:5
  +빤들거리다:동:1
  +빤빤하다:형:1
  +빤쓰:명:4
  +빤작빤작:부:1
  +빤짝거리다:동:1
  +빤하다:형:4
  +빤히:부:21
  +빨가벗겨지다:동:1
  +빨가벗다:동:2
  +빨간색:명:16
  +빨간집모기:명:1
  +빨강:명:18
  +빨갛다:형:90
  +빨개지다:동:13
  +빨갱이:명:2
  +빨다:동:31
  +빨다:동:35
  +빨다:형:1
  +빨대:명:3
  +빨라지다:동:25
  +빨랑:부:2
  +빨래:명:81
  +빨래비:명:1
  +빨래터:명:1
  +빨래하다:동:10
  +빨랫비누:명:2
  +빨랫줄:명:8
  +빨려들다:동:1
  +빨리:부:371
  +빨리다:동:1
  +빨리다:동:16
  +빨리빨리:부:14
  +빨리하다:동:7
  +빨아내다:동:1
  +빨아들이다:동:16
  +빨아먹다:동:3
  +빨치산:명:10
  +빳빳이:부:3
  +빳빳하다:형:9
  +빵:명:102
  +빵:부:2
  +빵가루:명:4
  +빵게:명:3
  +빵꾸:명:3
  +빵모자:명:1
  +빵빵:부:1
  +빵빵:부:3
  +빵빵하다:형:4
  +빵집:명:3
  +빵틀:명:3
  +빻다:동:4
  +빼곡하다:형:2
  +빼곡히:부:2
  +빼꼭하다:형:1
  +빼꼼히:부:1
  +빼내다:동:36
  +빼놓다:동:35
  +빼다:동:2
  +빼다:동:2
  +빼다:동:222
  +빼닮다:동:2
  +빼돌려지다:동:1
  +빼돌리다:동:15
  +빼뚤하다:형:1
  +빼먹다:동:19
  +빼물다:동:2
  +빼박다:동:3
  +빼빼:부:1
  +빼빼하다:형:1
  +빼앗기다:동:49
  +빼앗다:동:55
  +빼어나다:형:14
  +빽:부:2
  +빽빽:부:1
  +빽빽이:부:9
  +빽빽하다:형:11
  +뺄셈:명:2
  +뺏기다:동:15
  +뺏다:동:23
  +뺑:부:1
  +뺑소니:명:2
  +뺑코잡이:명:1
  +뺨:명:57
  +뺨따귀:명:2
  +뺨치다:동:7
  +뻐국새:명:1
  +뻐근하다:형:5
  +뻐근히:부:1
  +뻐기다:동:3
  +뻐꾸기:명:12
  +뻐꾹:부:6
  +뻐꾹새:명:1
  +뻐꾹새천남성:명:1
  +뻐끔거리다:동:1
  +뻐끔뻐끔:부:2
  +뻐드렁니:명:4
  +뻑:명:1
  +뻑뻑:부:1
  +뻑뻑하다:형:3
  +뻔:명:1
  +뻔:의:2
  +뻔뻔스럽다:형:11
  +뻔뻔하다:형:2
  +뻔지다:보:4
  +뻔질나다:형:2
  +뻔하다:보:56
  +뻔하다:형:58
  +뻔히:부:18
  +뻗다:동:84
  +뻗대다:동:1
  +뻗어지다:동:1
  +뻗정다리:명:1
  +뻗쳐오르다:동:1
  +뻗치다:동:25
  +뻗히다:동:3
  +뻘:명:2
  +뻘겋다:형:8
  +뻘뻘:부:4
  +뻣뻣이:부:3
  +뻣뻣하다:형:3
  +뻣뻣해지다:동:4
  +뻥:부:3
  +뻥끗:부:2
  +뻥뻥:부:2
  +뻥하다:형:1
  +뼁기통:명:1
  +뼈:명:98
  +뼈끝:명:1
  +뼈다귀:명:3
  +뼈대:명:11
  +뼈마디:명:7
  +뼈아프다:형:5
  +뼈저리다:형:7
  +뼈품:명:1
  +뼘:명:2
  +뼘:의:9
  +뼛가루:명:2
  +뼛속:명:5
  +뼛조각:명:3
  +뽀글이:명:1
  +뽀독하다:형:1
  +뽀드득뽀드득:부:1
  +뽀로통하다:형:1
  +뽀록:명:2
  +뽀르르:부:3
  +뽀뽀:명:6
  +뽀뽀하다:동:3
  +뽀송뽀송하다:형:1
  +뽀얗다:형:12
  +뽁뽁:부:1
  +뽐내다:동:18
  +뽑다:동:186
  +뽑뽑하다:형:1
  +뽑아내다:동:23
  +뽑히다:동:58
  +뽕:부:1
  +뽕나무:명:4
  +뽕뽕:부:1
  +뽕짝:명:2
  +뾰로통하다:형:2
  +뾰로통해지다:동:1
  +뾰족:부:2
  +뾰족뾰족:부:1
  +뾰족뾰족하다:형:1
  +뾰족이:부:1
  +뾰족탑:명:1
  +뾰족하다:형:24
  +뾰쪽:부:1
  +뾰쪽하다:형:3
  +뿌다:보:1
  +뿌다구니:명:3
  +뿌드득뿌드득:부:1
  +뿌듯하다:형:12
  +뿌듯해지다:동:3
  +뿌려지다:동:10
  +뿌루퉁:명:1
  +뿌리:명:195
  +뿌리내리다:동:9
  +뿌리다:동:171
  +뿌리다:보:6
  +뿌리박다:동:6
  +뿌리박히다:동:6
  +뿌리치다:동:33
  +뿌옇다:형:18
  +뿌지직:부:1
  +뿐:의:1,066
  +뿔:명:14
  +뿔:명:3
  +뿔뿔이:부:8
  +뿔테:명:2
  +뿜다:동:23
  +뿜어내다:동:6
  +뿜어지다:동:1
  +뿡뿡:부:1
  +쀼루퉁:부:1
  +삐:부:1
  +삐거덕:부:4
  +삐거덕거리다:동:2
  +삐걱:부:1
  +삐걱거리다:동:8
  +삐그덕:부:1
  +삐그덕거리다:동:1
  +삐그덕삐그덕:부:1
  +삐꺽:부:1
  +삐꼼히:부:2
  +삐끗:부:1
  +삐끗하다:동:4
  +삐끼:명:5
  +삐다:동:1
  +삐다:동:5
  +삐딱하다:형:3
  +삐뚤어지다:동:5
  +삐뜩그다:동:1
  +삐라:명:2
  +삐리다:보:3
  +삐삐:명:13
  +삐삐:부:1
  +삐삐:부:10
  +삐삐꽃:명:1
  +삐삐새:명:6
  +삐용삐용:부:1
  +삐져나오다:동:1
  +삐죽삐죽:부:2
  +삐죽이:부:1
  +삐죽하다:형:1
  +삐질삐질:부:1
  +삐쩍:부:7
  +삐쭉삐쭉:부:1
  +삐쭉하다:동:1
  +삐치다:동:1
  +삐치다:동:2
  +삑:부:2
  +삥:부:1
  +사:관:42
  +사:명:2
  +사:명:50
  +사:명:6
  +사:명:6
  +사:명:6
  +사:명:6
  +사:명:9
  +사:수:12
  +사:의:1
  +사가:명:1
  +사가:명:4
  +사각:명:10
  +사각:명:8
  +사각거리다:동:2
  +사각사각:부:1
  +사각사각하다:동:3
  +사각이다:동:1
  +사각지대:명:4
  +사각형:명:11
  +사감:명:1
  +사감:명:2
  +사거리:명:3
  +사건:명:1
  +사건:명:801
  +사격:명:37
  +사격하다:동:1
  +사견:명:1
  +사견:명:1
  +사경:명:1
  +사계:명:2
  +사계절:명:19
  +사고:명:1
  +사고:명:1
  +사고:명:113
  +사고:명:316
  +사고:명:4
  +사고가:명:1
  +사고관:명:1
  +사고력:명:6
  +사고방식:명:56
  +사고율:명:1
  +사고터:명:1
  +사고팔다:동:8
  +사고하다:동:4
  +사곡:명:1
  +사골:명:1
  +사공:명:6
  +사과:명:3
  +사과:명:48
  +사과:명:63
  +사과나무:명:1
  +사과드리다:동:1
  +사과문:명:1
  +사과받다:동:1
  +사과탄:명:5
  +사과하다:동:19
  +사관:명:12
  +사관:명:12
  +사관:명:4
  +사관생도:명:1
  +사관학교:명:10
  +사관후보생:명:5
  +사교:명:1
  +사교:명:5
  +사교계:명:5
  +사교댄스:명:1
  +사교성:명:1
  +사교술:명:1
  +사교육비:명:1
  +사교적:명:3
  +사교하다:동:1
  +사구:명:1
  +사구:명:1
  +사권화:명:1
  +사귀다:동:63
  +사그라지다:동:3
  +사극:명:16
  +사근히:부:1
  +사글세:명:2
  +사금:명:5
  +사금파리:명:2
  +사기:명:2
  +사기:명:20
  +사기:명:28
  +사기극:명:4
  +사기꾼:명:11
  +사기단:명:1
  +사기당하다:동:1
  +사기범:명:2
  +사기적:관:1
  +사기충천:명:1
  +사까닥질:명:3
  +사까닥질하다:동:3
  +사나:명:2
  +사나워지다:동:5
  +사나이:명:30
  +사나흘:명:4
  +사납다:형:26
  +사내:명:1
  +사내:명:16
  +사내:명:253
  +사내대장부:명:2
  +사내새끼:명:1
  +사내아이:명:21
  +사내애:명:3
  +사내자식:명:1
  +사내종:명:1
  +사냥:명:27
  +사냥감:명:3
  +사냥개:명:3
  +사냥꾼:명:3
  +사냥새:명:2
  +사냥하다:동:5
  +사념:명:1
  +사농공상:명:2
  +사다:동:957
  +사다리:명:7
  +사단:명:1
  +사단:명:1
  +사단:명:16
  +사단:명:23
  +사단설:명:1
  +사단장:명:4
  +사당:명:15
  +사당적:명:1
  +사대:명:1
  +사대:명:2
  +사대:명:2
  +사대당:명:1
  +사대문:명:5
  +사대부:명:22
  +사대부가:명:1
  +사대사상:명:1
  +사대생:명:1
  +사대성:명:2
  +사대육신:명:1
  +사대주의:명:11
  +사대주의자:명:1
  +사대주의적:관:3
  +사도:명:14
  +사돈:명:14
  +사돈어른:명:3
  +사동:명:1
  +사두품:명:1
  +사들이다:동:34
  +사디스트적:명:1
  +사또:명:6
  +사라:명:1
  +사라수:명:1
  +사라지다:동:263
  +사람:명:7,004
  +사람됨:명:5
  +사랑:명:521
  +사랑:명:8
  +사랑받다:동:7
  +사랑방:명:13
  +사랑법:명:2
  +사랑스럽다:형:22
  +사랑싸움:명:1
  +사랑채:명:12
  +사랑하다:동:284
  +사래:명:1
  +사레:명:3
  +사려:명:7
  +사력:명:3
  +사력지:명:1
  +사령:명:3
  +사령관:명:44
  +사령기:명:1
  +사령대:명:1
  +사령부:명:22
  +사령탑:명:8
  +사례:명:163
  +사례:명:3
  +사례비:명:2
  +사례품:명:1
  +사례하다:동:2
  +사로자다:동:1
  +사로잡다:동:19
  +사로잡히다:동:68
  +사롱:명:1
  +사료:명:30
  +사료:명:8
  +사료관:명:2
  +사료되다:동:3
  +사료적:관:2
  +사료적:명:1
  +사료하다:동:1
  +사륜:명:1
  +사르다:동:5
  +사르륵:부:1
  +사르륵사르륵:부:1
  +사리:명:1
  +사리:명:7
  +사리:명:7
  +사리다:동:3
  +사리물다:동:1
  +사리사욕:명:1
  +사리탑:명:5
  +사립:명:16
  +사립대:명:3
  +사립대학:명:1
  +사립문:명:5
  +사립학교:명:13
  +사마귀:명:1
  +사마귀:명:3
  +사막:명:39
  +사막화하다:동:1
  +사만:관:1
  +사만팔천:관:1
  +사망:명:32
  +사망률:명:4
  +사망자:명:8
  +사망하다:동:28
  +사면:명:1
  +사면:명:17
  +사면:명:3
  +사면:명:6
  +사면되다:동:1
  +사면령:명:1
  +사면하다:동:1
  +사멸:명:1
  +사멸되다:동:1
  +사멸하다:동:4
  +사명:명:26
  +사명감:명:9
  +사모관대:명:3
  +사모님:명:30
  +사모턱:명:2
  +사모하다:동:7
  +사목:명:1
  +사무:명:1
  +사무:명:1
  +사무:명:31
  +사무과장:명:1
  +사무관:명:1
  +사무국:명:4
  +사무국장:명:10
  +사무라이:명:3
  +사무소:명:51
  +사무소장:명:1
  +사무실:명:125
  +사무원:명:4
  +사무장:명:17
  +사무적:명:5
  +사무직:명:28
  +사무직원:명:1
  +사무처:명:8
  +사무처장:명:6
  +사무총장:명:41
  +사무총장직:명:3
  +사무치다:동:8
  +사문:명:3
  +사문:명:5
  +사문조직:명:1
  +사문직:명:1
  +사문화되다:동:2
  +사물:명:174
  +사물놀이:명:3
  +사물적:명:1
  +사물화하다:동:1
  +사뭇:부:24
  +사미승:명:1
  +사민주의자:명:1
  +사바세계:명:1
  +사바스:명:3
  +사반세기:명:5
  +사발:명:13
  +사발시계:명:7
  +사방:명:57
  +사방오리:명:1
  +사방오리나무:명:2
  +사방치기하다:동:1
  +사방팔방:명:5
  +사백:관:2
  +사백몇:관:1
  +사백육:관:1
  +사범:명:49
  +사범:명:6
  +사범대:명:1
  +사범학교:명:3
  +사법:명:36
  +사법계:명:1
  +사법계:명:3
  +사법권:명:2
  +사법부:명:10
  +사법적:관:2
  +사변:명:2
  +사변:명:3
  +사변적:명:3
  +사별:명:2
  +사별하다:동:11
  +사병:명:9
  +사보:명:4
  +사복:명:7
  +사본:명:4
  +사부:명:1
  +사부:명:1
  +사부:명:9
  +사분기:명:1
  +사분오열되다:동:1
  +사비:명:1
  +사뿐사뿐:부:3
  +사뿐히:부:6
  +사사:명:1
  +사사건건:부:6
  +사사로이:부:1
  +사사롭다:형:5
  +사사무애법계:명:1
  +사사분기:명:1
  +사사오입하다:동:1
  +사사하다:동:4
  +사산:명:10
  +사산:명:3
  +사산율:명:1
  +사살되다:동:3
  +사살하다:동:2
  +사상:명:1
  +사상:명:1
  +사상:명:1
  +사상:명:1
  +사상:명:35
  +사상:명:484
  +사상가:명:26
  +사상계:명:7
  +사상누각:명:3
  +사상되다:동:1
  +사상사:명:5
  +사상사적:관:1
  +사상서:명:2
  +사상자:명:1
  +사상자:명:7
  +사상적:관:14
  +사상적:명:6
  +사상집:명:1
  +사상하다:동:3
  +사색:명:1
  +사색:명:10
  +사색:명:2
  +사색가:명:1
  +사색당쟁:명:1
  +사색시키다:동:1
  +사색적:명:1
  +사색하다:동:3
  +사생:명:1
  +사생결단:명:3
  +사생아:명:2
  +사생활:명:16
  +사서:명:3
  +사서:명:3
  +사서오경:명:2
  +사서함:명:3
  +사석:명:2
  +사선:명:1
  +사선:명:12
  +사선:명:5
  +사선미:명:1
  +사설:명:11
  +사설:명:2
  +사설:명:77
  +사설란:명:1
  +사설조:명:2
  +사섭법:명:2
  +사성제:명:6
  +사세:명:1
  +사소하다:형:31
  +사수:명:1
  +사수:명:2
  +사수대:명:4
  +사수자리:명:1
  +사수좌:명:1
  +사수하다:동:1
  +사슬:명:17
  +사슴:명:36
  +사슴뿔:명:1
  +사시:명:1
  +사시:명:1
  +사시나무:명:1
  +사시도:명:1
  +사시미:명:2
  +사시사철:명:1
  +사시장철:명:1
  +사시톡신:명:2
  +사식기:명:6
  +사신:명:16
  +사신사:명:9
  +사신하다:동:1
  +사실:명:1,459
  +사실:명:2
  +사실:명:3
  +사실:부:324
  +사실감:명:3
  +사실무근:명:4
  +사실상:명:13
  +사실상:부:117
  +사실성:명:14
  +사실성:명:4
  +사실적:관:10
  +사실적:관:3
  +사실적:명:5
  +사실적:명:7
  +사실주의:명:22
  +사실주의자:명:1
  +사실주의적:관:2
  +사실주의적:명:4
  +사십:관:25
  +사십:수:8
  +사십구:관:1
  +사십만:관:2
  +사십사:관:2
  +사십삼:관:1
  +사십오:관:2
  +사십오만:관:1
  +사십이:관:1
  +사악하다:형:10
  +사안:명:34
  +사암:명:5
  +사약:명:1
  +사양:명:2
  +사양:명:4
  +사양:명:5
  +사양길:명:1
  +사양서:명:1
  +사양지심:명:1
  +사양하다:동:27
  +사양화:명:1
  +사양화시키다:명:1
  +사어:명:1
  +사업:명:405
  +사업가:명:21
  +사업과장:명:1
  +사업관:명:4
  +사업권:명:2
  +사업단:명:2
  +사업부:명:7
  +사업부장:명:1
  +사업부제:명:1
  +사업비:명:4
  +사업소:명:1
  +사업자:명:33
  +사업작풍:명:1
  +사업장:명:13
  +사업주:명:1
  +사업체:명:6
  +사업하다:동:4
  +사업화:명:1
  +사업회:명:1
  +사여하다:동:1
  +사역:명:3
  +사역시키다:동:1
  +사연:명:2
  +사연:명:41
  +사연:명:5
  +사열:명:2
  +사열식:명:1
  +사오:관:1
  +사오백:수:1
  +사오십:관:1
  +사옥:명:7
  +사온:명:1
  +사외:명:4
  +사외보:명:1
  +사용:명:1
  +사용:명:218
  +사용감:명:2
  +사용권:명:2
  +사용되다:동:161
  +사용량:명:12
  +사용료:명:10
  +사용률:명:3
  +사용법:명:14
  +사용비:명:1
  +사용성:명:1
  +사용자:명:71
  +사용자층:명:1
  +사용주:명:2
  +사용처:명:2
  +사용하다:동:759
  +사우나:명:3
  +사운드:명:16
  +사원:명:1
  +사원:명:1
  +사원:명:12
  +사원:명:70
  +사원지:명:1
  +사월:명:221
  +사위:명:1
  +사위:명:3
  +사위:명:40
  +사위다:동:3
  +사윗감:명:4
  +사유:명:10
  +사유:명:28
  +사유:명:34
  +사유권:명:1
  +사유론:명:7
  +사유서:명:1
  +사유적:명:1
  +사유제:명:2
  +사유지:명:3
  +사유하다:동:2
  +사육:명:6
  +사육되다:동:3
  +사육신:명:2
  +사육하다:동:7
  +사은품:명:1
  +사의:명:1
  +사의:명:7
  +사이:명:1,064
  +사이다:명:10
  +사이드:명:4
  +사이렌:명:8
  +사이버:명:4
  +사이비:명:13
  +사이사이:명:16
  +사이좋다:형:21
  +사이즈:명:6
  +사이코드라마:명:36
  +사이클:명:7
  +사이클링:명:1
  +사이클복:명:1
  +사이키:명:1
  +사이트:명:27
  +사이펀:명:2
  +사인:명:1
  +사인:명:19
  +사인:명:6
  +사인보드:명:12
  +사인볼:명:2
  +사인여천:명:2
  +사인펜:명:4
  +사인하다:동:2
  +사일구:명:14
  +사일로:명:3
  +사임:명:3
  +사임하다:동:3
  +사잇문:명:2
  +사자:명:16
  +사자:명:2
  +사자:명:5
  +사자자리:명:1
  +사자좌:명:1
  +사잣밥:명:2
  +사장:명:1
  +사장:명:205
  +사장단:명:3
  +사장되다:동:4
  +사장시키다:동:1
  +사장직:명:2
  +사장하다:동:1
  +사재:명:2
  +사재기:명:2
  +사저:명:3
  +사적:관:1
  +사적:관:11
  +사적:관:22
  +사적:명:1
  +사적:명:1
  +사적:명:3
  +사적:명:43
  +사전:명:1
  +사전:명:1
  +사전:명:10
  +사전:명:2
  +사전:명:23
  +사전:명:80
  +사전식:명:1
  +사전적:관:1
  +사전적:관:2
  +사절:명:1
  +사절:명:5
  +사절기:명:1
  +사절단:명:10
  +사절단장:명:2
  +사절하다:동:1
  +사정:명:1
  +사정:명:199
  +사정:명:21
  +사정:명:22
  +사정:명:22
  +사정거리:명:3
  +사정거리권:명:1
  +사정권:명:3
  +사정사정:명:2
  +사정사정하다:동:1
  +사정없이:부:12
  +사정하다:동:5
  +사제:명:10
  +사제:명:2
  +사제:명:5
  +사제단:명:1
  +사제복:명:1
  +사제장:명:1
  +사제지간:명:2
  +사제직:명:1
  +사조:명:9
  +사족:명:3
  +사족:명:3
  +사죄:명:15
  +사죄하다:동:7
  +사주:명:10
  +사주:명:2
  +사주:명:5
  +사주단자:명:6
  +사주팔자:명:6
  +사주하다:동:4
  +사중:명:2
  +사증:명:1
  +사지:명:2
  +사지:명:2
  +사지:명:4
  +사직:명:1
  +사직:명:1
  +사직:명:6
  +사직단:명:1
  +사직서:명:11
  +사직원:명:1
  +사진:명:297
  +사진관:명:12
  +사진기:명:17
  +사진반:명:1
  +사진반원:명:2
  +사진부:명:2
  +사진작가:명:3
  +사진전:명:4
  +사진집:명:5
  +사진첩:명:9
  +사진틀:명:4
  +사진학:명:1
  +사질:명:4
  +사차원:명:3
  +사차원적:관:1
  +사찰:명:1
  +사찰:명:36
  +사찰:명:48
  +사찰과장:명:1
  +사찰단:명:1
  +사찰받다:동:1
  +사찰하다:동:1
  +사창:명:1
  +사창가:명:6
  +사채:명:12
  +사채:명:16
  +사채업자:명:3
  +사천삼십:관:1
  +사천왕:명:1
  +사천이백구십일:관:1
  +사철:명:5
  +사초:명:1
  +사초과:명:2
  +사촌:명:51
  +사추리:명:1
  +사춘기:명:35
  +사출:명:1
  +사출물:명:1
  +사치:명:25
  +사치성:명:3
  +사치스럽다:형:10
  +사치품:명:7
  +사치하다:동:2
  +사칙:명:3
  +사칭하다:동:2
  +사쿠라:명:1
  +사타구니:명:7
  +사탄:명:3
  +사탑:명:1
  +사탕:명:5
  +사탕무:명:1
  +사탕발림:명:2
  +사탕수수:명:1
  +사태:명:1
  +사태:명:256
  +사택:명:1
  +사퇴:명:41
  +사퇴서:명:10
  +사퇴하다:동:12
  +사투:명:1
  +사투:명:4
  +사투리:명:19
  +사파리:명:6
  +사파이어:명:1
  +사패:명:1
  +사포:명:1
  +사포:명:4
  +사포닌:명:1
  +사포질하다:동:1
  +사폭:명:1
  +사표:명:37
  +사풍:명:1
  +사피엔스:명:3
  +사필귀정:명:1
  +사하:명:1
  +사하다:동:1
  +사학:명:1
  +사학:명:23
  +사학:명:33
  +사학계:명:1
  +사학과:명:2
  +사학론:명:10
  +사학사적:명:1
  +사학자:명:12
  +사항:명:173
  +사해:명:1
  +사해동포:명:1
  +사형:명:16
  +사형당하다:동:2
  +사형수:명:3
  +사환:명:1
  +사활:명:11
  +사회:명:18
  +사회:명:2,770
  +사회과:명:2
  +사회관:명:1
  +사회관계:명:20
  +사회극:명:1
  +사회단체:명:17
  +사회론:명:37
  +사회론자:명:1
  +사회면:명:9
  +사회봉사:명:2
  +사회부:명:3
  +사회부장:명:1
  +사회사:명:1
  +사회사가:명:1
  +사회사상:명:1
  +사회사업:명:2
  +사회사업과:명:1
  +사회사업학과:명:3
  +사회사적:관:1
  +사회사적:명:3
  +사회상:명:10
  +사회생활:명:27
  +사회설:명:10
  +사회성:명:10
  +사회악:명:1
  +사회안전원:명:1
  +사회의식:명:6
  +사회의식적:명:1
  +사회인:명:8
  +사회자:명:18
  +사회적:관:393
  +사회적:명:127
  +사회주의:명:71
  +사회주의권:명:2
  +사회주의자:명:6
  +사회주의적:관:8
  +사회주의적:명:1
  +사회체:명:1
  +사회층:명:1
  +사회학:명:26
  +사회학과:명:6
  +사회학도:명:1
  +사회학자:명:6
  +사회학적:관:11
  +사회학적:명:4
  +사회화:명:4
  +사회화되다:동:1
  +사후:명:10
  +사후:명:30
  +사흘:명:65
  +삭:명:1
  +삭:의:1
  +삭감:명:9
  +삭감되다:동:4
  +삭감하다:동:3
  +삭다:동:10
  +삭막하다:형:19
  +삭막해지다:동:3
  +삭발:명:3
  +삭발위승:명:1
  +삭발위승하다:동:1
  +삭발하다:동:5
  +삭이다:동:10
  +삭정이:명:6
  +삭제:명:3
  +삭제되다:동:4
  +삭제시키다:동:1
  +삭제하다:동:9
  +삭히다:동:5
  +삯:명:2
  +삯빨래질:명:1
  +삯일:명:1
  +삯일꾼:명:1
  +삯전:명:2
  +산:명:3
  +산:명:440
  +산가막살나무:명:1
  +산간:명:1
  +산간:명:15
  +산간벽지:명:3
  +산개나리:명:4
  +산경:명:1
  +산고:명:1
  +산골:명:15
  +산골:명:24
  +산골길:명:1
  +산골무꽃:명:2
  +산골짜기:명:13
  +산골짝:명:1
  +산골터:명:1
  +산관:명:3
  +산괴:명:1
  +산괴형:명:2
  +산구절초:명:4
  +산국:명:1
  +산굼부리:명:3
  +산굽이:명:1
  +산그늘:명:1
  +산기:명:2
  +산기슭:명:9
  +산길:명:17
  +산꼭대기:명:4
  +산꿩의다리:명:1
  +산나물:명:10
  +산남수북:명:1
  +산더미:명:16
  +산도:명:7
  +산동:명:1
  +산동네:명:6
  +산돼지:명:3
  +산들바람:명:1
  +산들산들:부:1
  +산등성이:명:8
  +산딸기:명:9
  +산딸나무:명:1
  +산뜻하다:형:14
  +산란기:명:4
  +산란율:명:1
  +산란하다:동:1
  +산란하다:형:4
  +산록:명:17
  +산록부:명:5
  +산림:명:38
  +산림처사:명:1
  +산마루:명:7
  +산마루터기:명:1
  +산마을:명:1
  +산만하다:형:4
  +산만해지다:동:4
  +산매업:명:1
  +산매점:명:1
  +산맥:명:32
  +산맥형:명:1
  +산머루:명:2
  +산모:명:20
  +산모롱이:명:1
  +산모퉁이:명:8
  +산문:명:14
  +산문:명:4
  +산문가:명:1
  +산문극:명:5
  +산문부:명:1
  +산문시:명:2
  +산문집:명:1
  +산물:명:44
  +산미료:명:1
  +산바람:명:3
  +산발적:명:5
  +산발치:명:1
  +산발하다:동:1
  +산발하다:동:4
  +산밭:명:1
  +산벚꽃나무:명:1
  +산별:명:1
  +산보:명:3
  +산보길:명:1
  +산보하다:동:3
  +산복:명:1
  +산봉:명:2
  +산봉우리:명:10
  +산부인과:명:24
  +산불:명:13
  +산비둘기:명:1
  +산비탈:명:6
  +산뽕나무:명:1
  +산사:명:2
  +산사:명:4
  +산사:명:8
  +산사나무:명:2
  +산사태:명:7
  +산산이:부:6
  +산산조각:명:8
  +산삼:명:5
  +산새:명:9
  +산서:명:1
  +산성:명:37
  +산성:명:7
  +산성도:명:1
  +산성비:명:16
  +산성화:명:3
  +산성화되다:동:1
  +산성화하다:동:1
  +산세:명:4
  +산소:명:1
  +산소:명:80
  +산속:명:29
  +산솔새:명:1
  +산송장:명:2
  +산수:명:10
  +산수:명:7
  +산수소:명:1
  +산수화:명:2
  +산술:명:6
  +산술급수적:명:1
  +산술법:명:1
  +산술식:명:3
  +산술적:관:1
  +산술적:명:2
  +산신:명:1
  +산신령:명:3
  +산실:명:3
  +산씀바귀:명:1
  +산아:명:3
  +산악:명:7
  +산악회:명:1
  +산악회원:명:1
  +산안개:명:1
  +산앵두나무:명:7
  +산야:명:4
  +산양자리:명:1
  +산양좌:명:1
  +산언덕:명:4
  +산업:명:501
  +산업계:명:7
  +산업과장:명:1
  +산업국:명:1
  +산업군:명:1
  +산업로:명:1
  +산업론:명:2
  +산업별:명:4
  +산업용:명:6
  +산업적:관:5
  +산업주의:명:7
  +산업체:명:12
  +산업형:명:3
  +산업화:명:45
  +산업화되다:동:2
  +산업화하다:동:2
  +산여뀌:명:2
  +산열매:명:2
  +산울림:명:2
  +산울타리:명:1
  +산유국:명:1
  +산일엽초:명:1
  +산입되다:동:3
  +산자락:명:6
  +산장:명:7
  +산재:명:10
  +산재하다:동:11
  +산적:명:3
  +산적하다:형:7
  +산전:명:1
  +산전수전:명:3
  +산점상:명:1
  +산정:명:2
  +산정:명:9
  +산정하다:동:4
  +산조:명:7
  +산줄기:명:8
  +산중:명:14
  +산증인:명:5
  +산지:명:10
  +산지:명:42
  +산짐승:명:1
  +산채:명:1
  +산채:명:5
  +산책:명:39
  +산책로:명:5
  +산책하다:동:8
  +산천:명:13
  +산천초목:명:1
  +산철쭉:명:2
  +산체:명:1
  +산초나무:명:3
  +산촌:명:4
  +산출:명:2
  +산출:명:8
  +산출되다:동:4
  +산출하다:동:7
  +산출하다:동:9
  +산타클로스:명:1
  +산토끼:명:3
  +산파:명:1
  +산파역:명:1
  +산판:명:2
  +산하:명:2
  +산하:명:43
  +산학:명:1
  +산해진미:명:3
  +산행:명:3
  +산행하다:동:1
  +산허리:명:9
  +산협:명:1
  +산형:명:2
  +산형과:명:1
  +산화:명:4
  +산화되다:동:1
  +산화물:명:7
  +산화하다:동:2
  +산후:명:8
  +산후병:명:1
  +산후열:명:1
  +살:명:3
  +살:명:97
  +살:의:366
  +살갑다:형:1
  +살갗:명:17
  +살결:명:4
  +살구:명:1
  +살구나무:명:1
  +살구색:명:1
  +살균시키다:동:1
  +살그머니:부:8
  +살금살금:부:7
  +살기:명:3
  +살길:명:3
  +살날:명:2
  +살농:명:1
  +살다:동:2,297
  +살대:명:6
  +살덩이:명:5
  +살뜰하다:형:3
  +살랑:부:1
  +살랑거리다:동:3
  +살랑살랑:부:4
  +살랑이다:동:2
  +살래살래:부:2
  +살롱:명:2
  +살롱전:명:1
  +살름살름:부:1
  +살리다:동:209
  +살림:명:57
  +살림방:명:1
  +살림살이:명:25
  +살림집:명:6
  +살림하다:동:2
  +살맛:명:12
  +살며시:부:17
  +살모넬라균:명:1
  +살모사:명:19
  +살무사:명:1
  +살배기:명:2
  +살벌하다:형:16
  +살벌해지다:동:1
  +살별:명:1
  +살사:명:1
  +살살:부:1
  +살살:부:13
  +살살거리다:동:2
  +살상:명:13
  +살색:명:3
  +살아가다:동:246
  +살아나다:동:48
  +살아남다:동:73
  +살아생전:명:8
  +살아오다:동:131
  +살아지다:동:3
  +살얼음:명:3
  +살얼음판:명:2
  +살육:명:3
  +살의:명:3
  +살인:명:73
  +살인마:명:1
  +살인범:명:3
  +살인자:명:14
  +살인적:명:2
  +살인죄:명:2
  +살인하다:동:2
  +살점:명:3
  +살조개:명:2
  +살집:명:1
  +살짝:부:106
  +살짝이:부:1
  +살찌다:동:12
  +살찌우다:동:5
  +살충제:명:1
  +살쾡이:명:1
  +살펴보다:동:384
  +살펴보아지다:동:1
  +살포:명:9
  +살포되다:동:2
  +살포시:부:6
  +살포하다:동:1
  +살풀이:명:3
  +살풋:부:2
  +살피다:동:119
  +살해:명:23
  +살해당하다:동:5
  +살해되다:동:10
  +살해범:명:3
  +살해하다:동:19
  +삶:명:1,013
  +삶기다:동:1
  +삶다:동:69
  +삶아지다:동:1
  +삶앎:명:1
  +삼:관:204
  +삼:명:1
  +삼:명:3
  +삼:수:30
  +삼가:부:1
  +삼가다:동:37
  +삼가하다:동:2
  +삼각:명:16
  +삼각관계:명:3
  +삼각근:명:1
  +삼각뿔:명:1
  +삼각선:명:3
  +삼각자:명:1
  +삼각주:명:2
  +삼각형:명:13
  +삼강:명:2
  +삼강오륜:명:2
  +삼거리:명:6
  +삼겹살:명:1
  +삼경:명:5
  +삼계탕:명:11
  +삼고초려:명:1
  +삼관:명:2
  +삼교:명:7
  +삼국:명:250
  +삼국사:명:1
  +삼군:명:2
  +삼권:명:2
  +삼권:명:7
  +삼남:명:1
  +삼년:명:1
  +삼년상:명:1
  +삼다:동:1
  +삼다:동:323
  +삼다도:명:2
  +삼단:명:1
  +삼대:명:12
  +삼대:명:3
  +삼대기:명:1
  +삼동:명:2
  +삼두근:명:1
  +삼두박근:명:1
  +삼등:명:10
  +삼등분되다:동:1
  +삼등분하다:동:2
  +삼디:명:8
  +삼라만상:명:14
  +삼락:명:1
  +삼루:명:2
  +삼루수:명:2
  +삼류:명:5
  +삼륜차:명:1
  +삼림:명:20
  +삼림토:명:2
  +삼만:관:4
  +삼만이천:관:1
  +삼매:명:3
  +삼면:명:6
  +삼문:명:2
  +삼바:명:1
  +삼박자:명:1
  +삼배구고두:명:1
  +삼배초:명:4
  +삼백:관:5
  +삼백:수:2
  +삼백만:관:5
  +삼백육십:관:1
  +삼백이:관:1
  +삼법인:명:5
  +삼베:명:4
  +삼보:명:1
  +삼보정재:명:1
  +삼복:명:2
  +삼복더위:명:2
  +삼부:명:1
  +삼부:명:1
  +삼사:관:4
  +삼사십:관:1
  +삼삼오오:명:8
  +삼삼하다:형:3
  +삼색:명:1
  +삼선:명:3
  +삼성:명:2
  +삼세:명:2
  +삼세:명:4
  +삼수:명:2
  +삼수하다:동:2
  +삼순구식:명:1
  +삼시:명:5
  +삼신:명:1
  +삼신할머니:명:1
  +삼십:관:79
  +삼십:수:6
  +삼십구:관:5
  +삼십만:관:1
  +삼십만:수:1
  +삼십사:관:1
  +삼십삼인:명:1
  +삼십삼천:명:1
  +삼십억:수:1
  +삼십오:관:2
  +삼십육계:명:3
  +삼십일:관:1
  +삼십조:관:2
  +삼십팔도선:명:1
  +삼억:수:1
  +삼엄하다:형:2
  +삼엄해지다:동:1
  +삼역:명:1
  +삼오:관:1
  +삼원색:명:1
  +삼월:명:205
  +삼월생:명:1
  +삼위일체:명:3
  +삼육:명:1
  +삼인무:명:1
  +삼일:명:5
  +삼일절:명:12
  +삼자:명:4
  +삼자세:명:1
  +삼재:명:1
  +삼종지도:명:5
  +삼종지의:명:1
  +삼줄:명:1
  +삼중:명:7
  +삼중고:명:2
  +삼지구엽초:명:1
  +삼지창:명:1
  +삼짇날:명:1
  +삼차원:명:2
  +삼차원적:관:1
  +삼차원적:명:1
  +삼창:명:1
  +삼창하다:동:1
  +삼척동자:명:1
  +삼천:관:10
  +삼천:명:2
  +삼천:수:1
  +삼천갑자:명:2
  +삼천리:명:2
  +삼천리강산:명:1
  +삼천만:관:1
  +삼천만:명:1
  +삼천오백:관:1
  +삼첩반상:명:1
  +삼체:명:3
  +삼촌:명:36
  +삼총사:명:3
  +삼최:명:1
  +삼층집:명:1
  +삼칠일:명:1
  +삼켜지다:동:3
  +삼키다:동:55
  +삼태기:명:2
  +삼투:명:3
  +삼투성:명:1
  +삼투압:명:5
  +삼파전:명:2
  +삼팔:명:2
  +삼팔:명:2
  +삼팔선:명:12
  +삼팔주:명:2
  +삼한:명:1
  +삼현:명:1
  +삽:명:18
  +삽날:명:1
  +삽살개:명:2
  +삽시:명:1
  +삽시간:명:8
  +삽입:명:6
  +삽입되다:동:4
  +삽입술:명:1
  +삽입시키다:동:1
  +삽입하다:동:5
  +삽자루:명:3
  +삽주:명:2
  +삽짝:명:1
  +삽화:명:3
  +삽화:명:9
  +삿갓:명:1
  +삿갓나물:명:2
  +삿대:명:1
  +삿대질:명:3
  +상:명:1
  +상:명:1
  +상:명:21
  +상:명:31
  +상:명:51
  +상:명:62
  +상:명:66
  +상가:명:13
  +상가:명:19
  +상가:명:4
  +상감:명:2
  +상감:명:6
  +상강:명:1
  +상거:명:2
  +상거래:명:1
  +상거하다:동:1
  +상거하다:동:1
  +상것:명:1
  +상견:명:1
  +상견례:명:5
  +상경:명:2
  +상경:명:3
  +상경:명:3
  +상경대:명:1
  +상경하다:동:6
  +상경화:명:1
  +상계:명:1
  +상고:명:1
  +상고:명:5
  +상고머리:명:1
  +상고사:명:2
  +상고선:명:3
  +상고심:명:2
  +상고하다:동:3
  +상공:명:20
  +상공:명:9
  +상공업:명:3
  +상공업자:명:1
  +상공인:명:1
  +상과:명:1
  +상관:명:2
  +상관:명:41
  +상관관계:명:16
  +상관성:명:1
  +상관없다:형:50
  +상관없이:부:34
  +상관있다:형:1
  +상관하다:동:10
  +상국:명:1
  +상궁:명:1
  +상권:명:1
  +상권:명:1
  +상권:명:3
  +상극:명:2
  +상극적:관:1
  +상극적:명:1
  +상근:명:3
  +상금:명:19
  +상급:명:9
  +상급반:명:1
  +상급생:명:3
  +상급자:명:3
  +상긋상긋:부:1
  +상기:명:1
  +상기:명:2
  +상기:명:4
  +상기되다:동:13
  +상기되다:동:2
  +상기시키다:동:7
  +상기율:명:3
  +상기하다:동:31
  +상납:명:3
  +상납받다:동:1
  +상납하다:동:4
  +상냥스럽다:형:2
  +상냥하다:형:13
  +상냥해지다:동:2
  +상념:명:13
  +상노:명:2
  +상놈:명:3
  +상다리:명:4
  +상단:명:1
  +상단:명:4
  +상담:명:58
  +상담계:명:1
  +상담료:명:1
  +상담소:명:4
  +상담실:명:5
  +상담역:명:2
  +상담원:명:11
  +상담자:명:20
  +상담하다:동:8
  +상당:명:59
  +상당량:명:1
  +상당성:명:1
  +상당수:명:36
  +상당액:명:5
  +상당하다:형:114
  +상당히:부:142
  +상대:명:1
  +상대:명:193
  +상대:명:5
  +상대국:명:3
  +상대되다:동:1
  +상대등:명:5
  +상대등제:명:1
  +상대론:명:1
  +상대방:명:149
  +상대사:명:2
  +상대성:명:43
  +상대역:명:5
  +상대자:명:7
  +상대적:관:26
  +상대적:명:131
  +상대주의:명:4
  +상대주의적:관:1
  +상대주의적:명:1
  +상대편:명:33
  +상대하다:동:9
  +상대화:명:3
  +상대화되다:동:1
  +상대화하다:동:2
  +상도:명:1
  +상동:명:3
  +상동성:명:1
  +상두:명:2
  +상등:명:1
  +상등품:명:1
  +상량:명:2
  +상량문:명:1
  +상량식:명:1
  +상례:명:2
  +상록:명:1
  +상록수:명:2
  +상류:명:38
  +상류층:명:5
  +상륙:명:19
  +상륙시키다:동:1
  +상륙자:명:1
  +상륙정:명:1
  +상륙하다:동:10
  +상말:명:2
  +상머슴:명:2
  +상면:명:1
  +상면하다:동:1
  +상명:명:2
  +상무:명:1
  +상무:명:49
  +상무위원:명:1
  +상무이사:명:1
  +상민:명:1
  +상반:명:1
  +상반기:명:35
  +상반되다:동:16
  +상반신:명:3
  +상방:명:1
  +상벌:명:1
  +상병:명:1
  +상병:명:8
  +상보:명:1
  +상보:명:4
  +상보적:관:2
  +상보적:명:1
  +상복:명:1
  +상복:명:1
  +상복:명:8
  +상복착:명:1
  +상봉:명:6
  +상봉하다:동:1
  +상부:명:51
  +상부상조:명:6
  +상부상조적:명:1
  +상부상조하다:동:1
  +상부하다:동:1
  +상비군:명:9
  +상비약:명:1
  +상사:명:14
  +상사:명:2
  +상사:명:9
  +상사람:명:1
  +상사원:명:1
  +상상:명:136
  +상상력:명:62
  +상상적:관:12
  +상상적:명:8
  +상상하다:동:74
  +상생:명:1
  +상생적:관:1
  +상서롭다:형:5
  +상석:명:1
  +상선:명:1
  +상설:명:19
  +상설관:명:1
  +상설화되다:동:1
  +상세:명:1
  +상세하다:형:13
  +상세히:부:14
  +상소:명:4
  +상소리:명:1
  +상소문:명:8
  +상소자:명:1
  +상소하다:동:2
  +상속:명:13
  +상속되다:동:5
  +상속론:명:2
  +상속분:명:1
  +상속세:명:13
  +상속인:명:3
  +상속자:명:1
  +상속하다:동:1
  +상쇄되다:동:2
  +상쇄시키다:동:1
  +상쇄하다:동:1
  +상수도:명:8
  +상수리:명:1
  +상수리나무:명:5
  +상수원:명:16
  +상순:명:1
  +상술:명:2
  +상술하다:동:1
  +상스럽다:형:5
  +상습:명:2
  +상습적:명:3
  +상습화되다:동:1
  +상승:명:64
  +상승기:명:1
  +상승되다:동:5
  +상승률:명:7
  +상승세:명:10
  +상승시키다:동:5
  +상승하다:동:26
  +상승효과:명:2
  +상시:명:9
  +상식:명:1
  +상식:명:120
  +상식선:명:2
  +상식적:관:2
  +상식적:명:24
  +상식하다:동:2
  +상식화:명:1
  +상식화되다:동:1
  +상실:명:30
  +상실감:명:4
  +상실되다:동:12
  +상실시키다:동:1
  +상실자:명:1
  +상실증:명:2
  +상실하다:동:35
  +상심하다:동:3
  +상아:명:1
  +상아색:명:1
  +상아탑:명:1
  +상어:명:4
  +상업:명:64
  +상업계:명:1
  +상업극:명:1
  +상업성:명:1
  +상업적:관:9
  +상업적:명:4
  +상업주의:명:8
  +상업주의화:명:1
  +상업학교:명:1
  +상업화:명:1
  +상업화되다:동:1
  +상여:명:5
  +상여금:명:3
  +상여꾼:명:1
  +상연되다:동:2
  +상연하다:동:1
  +상엿집:명:1
  +상영:명:15
  +상영관:명:1
  +상영되다:동:11
  +상영실:명:1
  +상영작:명:2
  +상영하다:동:5
  +상오:명:8
  +상온:명:1
  +상용:명:6
  +상용되다:동:1
  +상용차:명:4
  +상용하다:동:1
  +상용한자:명:1
  +상용화하다:동:1
  +상원:명:10
  +상위:명:23
  +상위권:명:7
  +상위직:명:2
  +상읍례:명:1
  +상응:명:1
  +상응하다:동:14
  +상의:명:1
  +상의:명:4
  +상의:명:5
  +상의드리다:동:1
  +상의하다:동:11
  +상의하상:명:1
  +상이:명:1
  +상이용사:명:2
  +상이점:명:2
  +상이하다:형:12
  +상인:명:51
  +상임:명:31
  +상자:명:1
  +상자:명:56
  +상자화되다:동:1
  +상장:명:1
  +상장:명:1
  +상장:명:19
  +상장:명:7
  +상장사:명:1
  +상전:명:9
  +상점:명:45
  +상접하다:동:1
  +상정:명:3
  +상정되다:동:1
  +상정되다:동:4
  +상정하다:동:13
  +상정하다:동:6
  +상제:명:3
  +상제:명:6
  +상조:명:1
  +상조회:명:1
  +상존하다:동:2
  +상존하다:동:3
  +상종:명:2
  +상종하다:동:1
  +상좌:명:1
  +상좌평:명:1
  +상좌평제:명:1
  +상주:명:2
  +상주:명:3
  +상주시키다:동:1
  +상주인구:명:1
  +상주하다:동:6
  +상중하:명:1
  +상징:명:85
  +상징계:명:1
  +상징되다:동:12
  +상징물:명:8
  +상징성:명:17
  +상징적:관:18
  +상징적:명:30
  +상징주의:명:3
  +상징체계:명:10
  +상징하다:동:54
  +상징화:명:6
  +상징화되다:동:1
  +상징화시키다:동:1
  +상징화하다:동:2
  +상책:명:4
  +상처:명:128
  +상처:명:3
  +상처당하다:동:1
  +상처받다:동:12
  +상처투성이:명:5
  +상처하다:동:2
  +상체:명:18
  +상추:명:17
  +상추쌈:명:1
  +상춘:명:1
  +상춘객:명:2
  +상충:명:2
  +상충되다:동:4
  +상충하다:동:2
  +상층:명:7
  +상층권:명:1
  +상층부:명:3
  +상쾌:명:3
  +상쾌하다:형:31
  +상쾌해지다:동:6
  +상큼하다:형:1
  +상큼하다:형:14
  +상태:명:4
  +상태:명:711
  +상통하다:동:2
  +상투:명:22
  +상투어:명:3
  +상투적:명:16
  +상투형:명:1
  +상투화되다:동:1
  +상판대기:명:1
  +상팔자:명:2
  +상패:명:2
  +상포:명:1
  +상표:명:120
  +상표권:명:2
  +상표권자:명:3
  +상표력:명:2
  +상표명:명:21
  +상표율:명:1
  +상품:명:1
  +상품:명:232
  +상품:명:6
  +상품화:명:5
  +상품화권자:명:1
  +상품화되다:동:7
  +상품화하다:동:6
  +상하:명:15
  +상하다:동:81
  +상하수도:명:4
  +상한:명:1
  +상한:명:6
  +상한가:명:7
  +상한제:명:2
  +상해:명:9
  +상행:명:1
  +상행선:명:5
  +상행위:명:2
  +상향:명:7
  +상허다:동:1
  +상현:명:1
  +상형:명:3
  +상호:명:1
  +상호:명:128
  +상호:명:8
  +상호:부:34
  +상호적:관:1
  +상호적:명:1
  +상호주의:명:1
  +상혼:명:1
  +상환:명:9
  +상환하다:동:1
  +상황:명:723
  +상황극:명:1
  +상황성:명:1
  +상황실:명:2
  +상황적:관:4
  +상황판:명:1
  +상회:명:7
  +상회하다:동:6
  +상흔:명:1
  +샅바:명:8
  +샅샅이:부:13
  +새:관:440
  +새:명:2
  +새:명:209
  +새:명:66
  +새것:명:12
  +새겨지다:동:28
  +새근새근:부:1
  +새금하다:형:1
  +새기다:동:1
  +새기다:동:52
  +새김:명:1
  +새까맣다:형:14
  +새까매지다:동:1
  +새끼:명:16
  +새끼:명:173
  +새끼발가락:명:1
  +새끼손가락:명:6
  +새끼줄:명:13
  +새날:명:3
  +새내기:명:4
  +새내기티:명:1
  +새다:동:1
  +새다:동:12
  +새다:동:60
  +새달:명:1
  +새대가리:명:2
  +새댁:명:17
  +새되다:형:1
  +새로:부:230
  +새로워지다:동:6
  +새로이:부:29
  +새록새록:부:4
  +새롭다:형:1,061
  +새마을:명:25
  +새말:명:3
  +새매:명:1
  +새바람:명:10
  +새벽:명:215
  +새벽같이:부:2
  +새벽길:명:1
  +새벽녘:명:13
  +새벽닭:명:2
  +새벽바람:명:1
  +새벽밥:명:2
  +새벽별:명:1
  +새벽빛:명:6
  +새벽안개:명:1
  +새벽이슬:명:2
  +새벽잠:명:5
  +새벽종:명:1
  +새벽차:명:1
  +새봄:명:3
  +새빠지다:동:1
  +새빨갛다:형:6
  +새사람:명:1
  +새살림:명:1
  +새삼:명:1
  +새삼:부:53
  +새삼스럽다:형:19
  +새삼스레:부:17
  +새색시:명:4
  +새소리:명:16
  +새순:명:2
  +새시:명:2
  +새신랑:명:1
  +새싹:명:12
  +새아기:명:1
  +새알:명:5
  +새어머니:명:1
  +새엄마:명:3
  +새우:명:34
  +새우다:동:24
  +새우잡이:명:1
  +새우젓:명:20
  +새우튀김:명:3
  +새잎:명:4
  +새장:명:4
  +새장가:명:6
  +새집:명:2
  +새집:명:8
  +새참:명:2
  +새청맞다:형:1
  +새총:명:1
  +새치:명:3
  +새치기:명:4
  +새치름하다:형:1
  +새침:명:1
  +새침데기:명:3
  +새침스럽다:형:1
  +새침하다:형:1
  +새침해지다:동:1
  +새카맣다:형:3
  +새콤달콤하다:형:1
  +새콤하다:형:1
  +새털:명:1
  +새털구름:명:1
  +새파랗다:형:16
  +새푸르다:형:1
  +새하얗다:형:7
  +새하얘지다:동:1
  +새해:명:56
  +색:명:1
  +색:명:169
  +색감:명:2
  +색견:명:1
  +색광증:명:1
  +색깔:명:142
  +색다르다:형:30
  +색동:명:4
  +색등:명:3
  +색마:명:1
  +색맹:명:1
  +색사:명:1
  +색상:명:19
  +색색:명:2
  +색색깔:명:1
  +색소:명:2
  +색소폰:명:4
  +색수상행식:명:1
  +색스럽다:형:2
  +색시:명:14
  +색싯감:명:1
  +색안경:명:2
  +색연필:명:5
  +색위:명:1
  +색인:명:1
  +색조:명:5
  +색조명:명:1
  +색종이:명:7
  +색지:명:1
  +색채:명:30
  +색채감:명:1
  +색출:명:4
  +색출하다:동:1
  +색칠:명:6
  +색칠되다:동:1
  +색칠하다:동:2
  +샌님:명:3
  +샌드백:명:5
  +샌드위치:명:69
  +샌드페이퍼:명:1
  +샌들:명:1
  +샐러드:명:12
  +샐러드유:명:3
  +샐러리맨:명:8
  +샐비어:명:6
  +샐샐:부:3
  +샐쭉거리다:동:1
  +샘:명:11
  +샘:명:6
  +샘내다:동:1
  +샘물:명:8
  +샘솟다:동:2
  +샘터:명:6
  +샘플:명:4
  +샘플러:명:2
  +샘플사:명:1
  +샛골:명:1
  +샛길:명:13
  +샛문:명:4
  +샛바람:명:1
  +생:명:32
  +생가:명:2
  +생가슴:명:1
  +생각:명:1,750
  +생각나다:동:106
  +생각되다:동:173
  +생각되어지다:동:1
  +생각하다:동:2,237
  +생각해지다:동:1
  +생간건비탕:명:1
  +생감자:명:1
  +생강:명:20
  +생강나무:명:5
  +생강즙:명:6
  +생겨나다:동:127
  +생견:명:1
  +생경광주:명:1
  +생경하다:형:6
  +생경험:명:1
  +생계:명:44
  +생계란:명:1
  +생계비:명:1
  +생고무:명:2
  +생고사:명:3
  +생관사:명:2
  +생광:명:1
  +생광목:명:2
  +생구:명:1
  +생글거리다:동:4
  +생글생글:부:3
  +생급스럽다:형:1
  +생긋:부:1
  +생기:명:39
  +생기다:동:761
  +생기다:보:4
  +생기롭다:형:1
  +생김새:명:25
  +생김생김:명:1
  +생나물:명:2
  +생난리:명:1
  +생년:명:2
  +생년월일:명:7
  +생대:명:1
  +생도:명:4
  +생동:명:1
  +생동감:명:9
  +생동성:명:1
  +생동하다:동:48
  +생두부:명:1
  +생득적:명:1
  +생때같다:형:5
  +생떼:명:7
  +생라면:명:1
  +생래적:명:1
  +생략:명:3
  +생략되다:동:8
  +생략하다:동:13
  +생력화:명:1
  +생령:명:1
  +생로병사:명:2
  +생리:명:1
  +생리:명:40
  +생리대:명:3
  +생리적:관:8
  +생리적:명:9
  +생리통:명:1
  +생리학자:명:1
  +생리학적:관:1
  +생리학적:명:1
  +생매장당하다:동:1
  +생매장되다:동:2
  +생맥주:명:1
  +생머리:명:8
  +생면부지:명:4
  +생멸하다:동:1
  +생명:명:826
  +생명감:명:1
  +생명계:명:6
  +생명관:명:2
  +생명권:명:2
  +생명력:명:48
  +생명론:명:1
  +생명수:명:1
  +생명원:명:1
  +생명적:관:2
  +생명적:명:1
  +생명주:명:2
  +생명체:명:63
  +생모:명:6
  +생목:명:1
  +생목:명:1
  +생문화:명:1
  +생물:명:68
  +생물계:명:1
  +생물구이:명:1
  +생물권:명:2
  +생물적:관:2
  +생물적:명:1
  +생물체:명:7
  +생물학:명:16
  +생물학과:명:1
  +생물학자:명:7
  +생물학적:관:27
  +생물학적:명:10
  +생물화학적:관:1
  +생방:명:1
  +생방송:명:37
  +생방송하다:동:2
  +생보사:명:2
  +생보업계:명:4
  +생사:명:15
  +생사람:명:2
  +생사실:명:1
  +생사화복:명:3
  +생산:명:366
  +생산고:명:1
  +생산관계:명:60
  +생산되다:동:64
  +생산량:명:22
  +생산력:명:74
  +생산력적:관:1
  +생산물:명:29
  +생산비:명:7
  +생산성:명:37
  +생산업계:명:1
  +생산업자:명:1
  +생산업체:명:11
  +생산자:명:49
  +생산자층:명:5
  +생산적:관:9
  +생산적:명:9
  +생산지:명:4
  +생산직:명:24
  +생산품:명:2
  +생산하다:동:133
  +생살:명:2
  +생새우:명:1
  +생색:명:8
  +생색나다:동:1
  +생색내다:동:2
  +생생:명:1
  +생생하다:형:37
  +생생히:부:9
  +생선:명:75
  +생선조림:명:1
  +생선찌개:명:2
  +생선회:명:5
  +생성:명:28
  +생성되다:동:29
  +생성시키다:동:2
  +생성하다:동:12
  +생세목:명:1
  +생소하다:형:22
  +생솔가지:명:4
  +생수:명:1
  +생수:명:11
  +생수받이:명:1
  +생시:명:4
  +생식:명:5
  +생식기:명:6
  +생식샘:명:1
  +생신:명:11
  +생쌀:명:1
  +생애:명:25
  +생야채:명:1
  +생약:명:4
  +생업:명:8
  +생업터:명:2
  +생엽:명:1
  +생월:명:1
  +생유리:명:1
  +생육:명:7
  +생육신:명:1
  +생육하다:동:2
  +생으로:부:2
  +생이별:명:2
  +생일:명:112
  +생일날:명:7
  +생일잔치:명:2
  +생자리:명:1
  +생장:명:1
  +생장력:명:2
  +생전:명:22
  +생조개:명:3
  +생존:명:119
  +생존권:명:7
  +생존권적:관:1
  +생존율:명:3
  +생존자:명:2
  +생존하다:동:11
  +생졸:명:1
  +생주:명:1
  +생중계:명:3
  +생중계하다:동:1
  +생쥐:명:12
  +생즙:명:1
  +생지:명:1
  +생지옥:명:1
  +생지황:명:1
  +생채기:명:6
  +생채기투성이:명:1
  +생채식:명:1
  +생체:명:15
  +생체막:명:1
  +생초:명:1
  +생침:명:2
  +생크림:명:20
  +생태:명:9
  +생태계:명:50
  +생태계적:명:2
  +생태성:명:1
  +생태적:관:9
  +생태주의:명:1
  +생태학:명:4
  +생태학자:명:1
  +생태학적:관:1
  +생판:부:6
  +생포:명:1
  +생포되다:동:1
  +생포하다:동:2
  +생표고버섯:명:2
  +생필품:명:5
  +생항라:명:1
  +생화학:명:4
  +생화학과:명:1
  +생화학적:관:1
  +생환하다:동:1
  +생활:명:1,094
  +생활고:명:5
  +생활공간:명:3
  +생활권:명:2
  +생활난:명:1
  +생활력:명:2
  +생활면:명:3
  +생활복:명:1
  +생활부:명:1
  +생활부장:명:1
  +생활비:명:14
  +생활사:명:2
  +생활상:명:9
  +생활수준:명:16
  +생활시간:명:1
  +생활신조:명:2
  +생활양식:명:17
  +생활용수:명:1
  +생활용품:명:15
  +생활인:명:9
  +생활자:명:2
  +생활적:명:1
  +생활체:명:1
  +생활필수품:명:4
  +생활하다:동:84
  +생활하수:명:5
  +생활화:명:5
  +생활화되다:동:5
  +생활화하다:동:3
  +생활환경:명:25
  +생후:명:11
  +샤머니즘:명:5
  +샤먼:명:2
  +샤미센:명:1
  +샤부샤부:명:1
  +샤쓰:명:1
  +샤워:명:18
  +샤워기:명:1
  +샤워실:명:1
  +샤워장:명:2
  +샤워하다:동:1
  +샤프하다:형:2
  +샬레:명:2
  +샴페인:명:8
  +샴푸:명:9
  +샴푸액:명:1
  +샴푸하다:동:2
  +샷:명:5
  +샷잔:명:2
  +샹들리에:명:13
  +샹송:명:1
  +섀도:명:2
  +서:관:4
  +서:명:1
  +서:명:14
  +서:명:6
  +서:명:8
  +서가:명:1
  +서간체:명:2
  +서거:명:1
  +서거하다:동:1
  +서걱서걱:부:1
  +서걱이다:동:1
  +서곡:명:2
  +서구:명:149
  +서구식:명:9
  +서구어:명:2
  +서구인:명:8
  +서구적:관:5
  +서구적:명:6
  +서구형:명:1
  +서구화:명:4
  +서구화되다:동:5
  +서글서글하다:형:3
  +서글퍼지다:동:3
  +서글프다:형:18
  +서글픔:명:2
  +서글하다:형:1
  +서기:명:13
  +서기:명:14
  +서기관:명:4
  +서기장:명:12
  +서까래:명:8
  +서남:명:2
  +서남단:명:1
  +서남부:명:1
  +서남서:명:1
  +서남쪽:명:4
  +서낭당:명:1
  +서너:관:63
  +서넛:수:6
  +서녘:명:2
  +서늘하다:형:32
  +서늘해지다:동:1
  +서다:동:944
  +서단:명:1
  +서당:명:66
  +서당식:명:1
  +서도:명:1
  +서두:명:1
  +서두:명:11
  +서두르다:동:140
  +서둘다:동:5
  +서랍:명:23
  +서랍장:명:1
  +서러움:명:8
  +서러워지다:동:1
  +서러워하다:동:5
  +서럽다:형:20
  +서력:명:2
  +서로:명:141
  +서로:부:620
  +서로서로:명:2
  +서로서로:부:9
  +서론:명:4
  +서루:명:1
  +서루:부:1
  +서류:명:69
  +서른:관:27
  +서른:수:11
  +서른네:관:1
  +서른넷:수:2
  +서른다섯:관:2
  +서른다섯:수:4
  +서른대여섯:수:1
  +서른두:관:6
  +서른둘:수:3
  +서른서너:관:1
  +서른세:관:2
  +서른아홉:수:5
  +서른여덟:관:1
  +서른일곱:수:1
  +서른한:관:4
  +서름하다:형:1
  +서리:명:1
  +서리:명:1
  +서리:명:13
  +서리다:동:25
  +서리서리:부:1
  +서릿발:명:5
  +서막:명:5
  +서먹서먹하다:형:3
  +서먹서먹해지다:동:2
  +서먹서먹해하다:동:1
  +서먹하다:형:5
  +서먹해지다:동:1
  +서면:명:1
  +서면:명:12
  +서명:명:25
  +서명되다:동:2
  +서명서:명:1
  +서명식:명:2
  +서명하다:동:24
  +서무과:명:1
  +서무과장:명:2
  +서문:명:15
  +서문:명:7
  +서민:명:52
  +서민적:관:4
  +서민적:명:2
  +서민층:명:2
  +서민형:명:1
  +서반:명:1
  +서반부:명:1
  +서반아어:명:1
  +서방:명:39
  +서방:명:69
  +서방님:명:20
  +서베이:명:1
  +서변:명:1
  +서부:명:58
  +서부권:명:1
  +서부극:명:7
  +서북:명:7
  +서북부:명:1
  +서북쪽:명:1
  +서불한:명:1
  +서브:명:13
  +서브노트:명:2
  +서브루틴:명:9
  +서브시스템:명:1
  +서브하다:동:1
  +서비스:명:173
  +서비스료:명:2
  +서비스맨:명:1
  +서비스받다:동:1
  +서비스업:명:15
  +서비스업종:명:1
  +서비스하다:동:1
  +서빙하다:동:1
  +서사:명:7
  +서사극:명:9
  +서사극론:명:1
  +서사성:명:1
  +서사시:명:10
  +서사적:관:5
  +서사적:명:4
  +서산:명:5
  +서생원:명:1
  +서서히:부:102
  +서설:명:1
  +서설:명:5
  +서성거려지다:동:1
  +서성거리다:동:17
  +서성대다:동:1
  +서성이다:동:11
  +서세동점:명:1
  +서술:명:36
  +서술되다:동:5
  +서술서:명:1
  +서술자:명:1
  +서술하다:동:47
  +서스펜스:명:4
  +서슬:명:11
  +서슴다:동:24
  +서슴없이:부:11
  +서식:명:1
  +서식:명:23
  +서식시키다:동:1
  +서식지:명:2
  +서식처:명:2
  +서식하다:동:76
  +서신:명:5
  +서안:명:1
  +서암뜸:명:6
  +서약:명:2
  +서약서:명:3
  +서약하다:동:1
  +서양:명:213
  +서양고추:명:1
  +서양목:명:2
  +서양사:명:1
  +서양식:명:12
  +서양인:명:29
  +서양적:관:2
  +서양화:명:1
  +서양화:명:3
  +서양화되다:동:1
  +서어나무:명:1
  +서역:명:9
  +서열:명:18
  +서열식:명:1
  +서열화:명:1
  +서열화되다:동:1
  +서열화하다:동:2
  +서예:명:8
  +서예관:명:1
  +서예인:명:1
  +서옥:명:3
  +서운하다:형:12
  +서울:명:7
  +서울내기:명:1
  +서울말:명:2
  +서원:명:1
  +서원:명:1
  +서자:명:9
  +서장:명:3
  +서장대:명:2
  +서재:명:13
  +서적:명:39
  +서점:명:35
  +서점가:명:4
  +서정:명:2
  +서정미:명:2
  +서정성:명:5
  +서정시:명:4
  +서정적:관:2
  +서정적:명:2
  +서정화되다:동:1
  +서지학:명:1
  +서진하다:동:1
  +서쪽:명:65
  +서찰:명:2
  +서체:명:27
  +서치:명:4
  +서캐:명:3
  +서커스:명:1
  +서커스단:명:4
  +서클:명:86
  +서클원:명:1
  +서킷:명:9
  +서탁:명:1
  +서투르다:형:18
  +서툴다:형:16
  +서편:명:5
  +서평:명:1
  +서포터스:명:1
  +서푼:명:2
  +서풍:명:5
  +서핑:명:3
  +서학:명:1
  +서한:명:5
  +서행:명:1
  +서행:명:1
  +서화:명:4
  +서화전:명:4
  +석:관:38
  +석:의:4
  +석:의:52
  +석간:명:4
  +석간수:명:1
  +석간신문:명:1
  +석고:명:3
  +석고상:명:2
  +석고실:명:1
  +석공:명:1
  +석괴:명:1
  +석굴:명:6
  +석궁:명:16
  +석권:명:2
  +석권하다:동:5
  +석기:명:8
  +석기관:명:1
  +석대:명:1
  +석등:명:5
  +석류:명:6
  +석면:명:4
  +석명:명:1
  +석방:명:14
  +석방되다:동:8
  +석방하다:동:6
  +석벽:명:1
  +석불:명:3
  +석사:명:16
  +석산:명:1
  +석상:명:11
  +석상:명:4
  +석쇠:명:2
  +석수:명:1
  +석수:명:4
  +석식:명:1
  +석양:명:6
  +석양빛:명:2
  +석연하다:형:14
  +석영:명:4
  +석유:명:80
  +석유곤로:명:2
  +석유난로:명:3
  +석유환산톤:의:1
  +석장승:명:2
  +석재:명:4
  +석조:명:4
  +석지기:의:3
  +석차:명:16
  +석축:명:4
  +석축물:명:1
  +석탄:명:26
  +석탄일:명:1
  +석탄층:명:2
  +석탑:명:13
  +석판:명:3
  +석학:명:1
  +석화:명:3
  +석회:명:10
  +석회분:명:2
  +석회석:명:7
  +석회암:명:4
  +석회질:명:1
  +석회층:명:1
  +섞다:동:114
  +섞이다:동:89
  +섟:명:1
  +선:명:1
  +선:명:1
  +선:명:10
  +선:명:267
  +선:명:27
  +선:명:42
  +선:의:4
  +선가:명:1
  +선가:명:1
  +선각자:명:10
  +선거:명:631
  +선거구:명:11
  +선거권:명:5
  +선거꾼:명:1
  +선거사:명:1
  +선거인:명:2
  +선거인단:명:1
  +선거일:명:4
  +선거전:명:11
  +선거철:명:15
  +선거하다:동:1
  +선걸음:명:1
  +선견자:명:1
  +선결:명:2
  +선결하다:동:1
  +선경험자:명:1
  +선고:명:22
  +선고되다:동:4
  +선고받다:동:7
  +선고심:명:1
  +선고하다:동:9
  +선관:명:1
  +선관:명:2
  +선교:명:10
  +선교:명:5
  +선교론:명:2
  +선교사:명:8
  +선교용:명:1
  +선교회:명:7
  +선구:명:1
  +선구:명:3
  +선구자:명:13
  +선구적:관:2
  +선구적:명:5
  +선구하다:동:1
  +선글라스:명:8
  +선금:명:2
  +선금제:명:2
  +선기준:명:1
  +선남선녀:명:2
  +선납:명:1
  +선내:명:8
  +선녀:명:6
  +선달:명:9
  +선대:명:1
  +선대:명:2
  +선대:의:1
  +선도:명:11
  +선도:명:8
  +선도되다:동:1
  +선도부:명:2
  +선도부원:명:1
  +선도자:명:14
  +선도적:명:1
  +선도하다:동:13
  +선도하다:동:2
  +선돌:명:5
  +선동:명:8
  +선동가:명:1
  +선동부:명:1
  +선동적:관:1
  +선동적:명:1
  +선동하다:동:11
  +선두:명:2
  +선두:명:38
  +선두마:명:1
  +선두적:명:1
  +선득선득:부:1
  +선득하다:형:1
  +선들바람:명:1
  +선떡:명:1
  +선뜩선뜩하다:형:3
  +선뜩하다:형:2
  +선뜻:부:48
  +선량:명:2
  +선량하다:형:7
  +선례:명:9
  +선로:명:4
  +선리스트:명:1
  +선린:명:1
  +선망:명:14
  +선망하다:동:1
  +선명력:명:4
  +선명성:명:1
  +선명하다:형:38
  +선명히:부:4
  +선묘:명:1
  +선묘룡:명:1
  +선문:명:2
  +선문답:명:1
  +선문답식:명:1
  +선물:명:1
  +선물:명:129
  +선물받다:동:1
  +선물전:명:1
  +선물하다:동:9
  +선미:명:3
  +선민:명:1
  +선민사상:명:1
  +선민의식:명:2
  +선박:명:45
  +선반:명:1
  +선반:명:7
  +선반장:명:1
  +선발:명:22
  +선발:명:8
  +선발권:명:4
  +선발대:명:5
  +선발되다:동:10
  +선발팀:명:1
  +선발하다:동:10
  +선방:명:2
  +선방:명:3
  +선배:명:204
  +선별:명:4
  +선별적:명:1
  +선별하다:동:2
  +선보다:동:2
  +선보이다:동:57
  +선봉:명:3
  +선봉대:명:5
  +선봉장:명:2
  +선불:명:5
  +선불받다:동:2
  +선불하다:동:1
  +선비:명:92
  +선사:명:1
  +선사:명:1
  +선사:명:12
  +선사:명:6
  +선사받다:동:2
  +선사하다:동:13
  +선산:명:1
  +선상:명:1
  +선상:명:5
  +선상:명:5
  +선생:명:406
  +선생님:명:951
  +선생실:명:1
  +선생질:명:1
  +선서:명:1
  +선서하다:동:2
  +선선해지다:동:1
  +선선히:부:2
  +선소리:명:1
  +선소리:명:1
  +선수:명:1
  +선수:명:10
  +선수:명:266
  +선수권:명:46
  +선수권자:명:1
  +선수단:명:18
  +선수제:명:1
  +선수촌:명:2
  +선순환:명:1
  +선술집:명:3
  +선승:명:9
  +선승제:명:1
  +선시험:명:1
  +선실:명:3
  +선심:명:15
  +선심:명:3
  +선심성:명:14
  +선악:명:4
  +선악과:명:3
  +선약:명:3
  +선양:명:1
  +선양:명:2
  +선양하다:동:1
  +선양하다:동:2
  +선언:명:82
  +선언되다:동:2
  +선언문:명:9
  +선언서:명:1
  +선언자:명:1
  +선언적:관:2
  +선언하다:동:51
  +선연하다:형:4
  +선연히:부:2
  +선열:명:1
  +선왕:명:2
  +선용:명:3
  +선용품:명:1
  +선용하다:동:1
  +선우:명:1
  +선원:명:34
  +선유:명:2
  +선율:명:16
  +선의:명:24
  +선의지:명:2
  +선인:명:1
  +선인:명:6
  +선인수:명:1
  +선인장:명:6
  +선임:명:4
  +선임:명:8
  +선임권:명:1
  +선임되다:동:6
  +선임하다:동:9
  +선입감:명:1
  +선입견:명:10
  +선입관:명:9
  +선자유화:명:1
  +선장:명:97
  +선장실:명:1
  +선재:명:2
  +선적:명:1
  +선적:명:2
  +선적분:명:1
  +선전:명:35
  +선전:명:5
  +선전:명:6
  +선전되다:동:2
  +선전문:명:2
  +선전물:명:1
  +선전실:명:1
  +선전용:명:2
  +선전장:명:1
  +선전전:명:1
  +선전하다:동:17
  +선전하다:동:6
  +선점:명:7
  +선점기:명:1
  +선점하다:동:4
  +선정:명:10
  +선정:명:59
  +선정되다:동:13
  +선정성:명:1
  +선정작:명:3
  +선정적:관:2
  +선정적:명:2
  +선정주의:명:1
  +선정하다:동:52
  +선제:명:9
  +선조:명:17
  +선조사:명:1
  +선조업:명:1
  +선종:명:1
  +선주:명:22
  +선주민:명:2
  +선지:명:1
  +선지자:명:1
  +선진:명:49
  +선진국:명:108
  +선진국형:명:2
  +선진성:명:4
  +선진적:관:3
  +선진적:명:13
  +선진화:명:15
  +선진화되다:동:5
  +선진화시키다:동:1
  +선집:명:9
  +선차적:명:1
  +선착:명:1
  +선착순:명:5
  +선착장:명:8
  +선창:명:1
  +선창:명:10
  +선창:명:3
  +선창:명:30
  +선창가:명:2
  +선창머리:명:3
  +선창하다:동:1
  +선처:명:6
  +선천:명:20
  +선천성:명:7
  +선천적:명:12
  +선체:명:9
  +선초:명:1
  +선추:명:1
  +선출:명:15
  +선출되다:동:19
  +선출하다:동:19
  +선취:명:1
  +선취:명:5
  +선친:명:7
  +선탄:명:2
  +선탄:명:3
  +선탄장:명:1
  +선태류:명:1
  +선택:명:93
  +선택권:명:1
  +선택되다:동:14
  +선택받다:동:6
  +선택법:명:3
  +선택적:관:2
  +선택적:명:3
  +선택하다:동:173
  +선탠:명:2
  +선탠하다:동:2
  +선통:명:2
  +선통하다:동:1
  +선팅:명:5
  +선포:명:8
  +선포권:명:4
  +선포되다:동:7
  +선포안:명:1
  +선포하다:동:9
  +선풍:명:1
  +선풍:명:2
  +선풍기:명:15
  +선풍적:관:1
  +선풍적:명:5
  +선하다:형:10
  +선하다:형:26
  +선학:명:2
  +선행:명:3
  +선행:명:8
  +선행되다:동:12
  +선행하다:동:7
  +선험:명:3
  +선험적:관:5
  +선험적:명:4
  +선현:명:1
  +선혈:명:2
  +선형:명:3
  +선호:명:24
  +선호도:명:13
  +선호되다:동:15
  +선호층:명:1
  +선호하다:동:38
  +선홍색:명:1
  +선화적:관:1
  +선회하다:동:10
  +선후:명:2
  +선후배:명:13
  +선후지책:명:1
  +섣달:명:3
  +섣부르다:형:5
  +섣불리:부:13
  +설:명:22
  +설:명:27
  +설거지:명:27
  +설거지물:명:1
  +설거지조:명:1
  +설거지하다:동:5
  +설계:명:105
  +설계도:명:14
  +설계되다:동:4
  +설계비:명:1
  +설계사:명:4
  +설계안:명:1
  +설계자:명:9
  +설계하다:동:28
  +설교:명:8
  +설교하다:동:2
  +설날:명:40
  +설다:동:1
  +설다:형:6
  +설도하다:동:1
  +설득:명:18
  +설득되다:동:1
  +설득력:명:52
  +설득시키다:동:8
  +설득하다:동:40
  +설렁설렁:부:1
  +설렁탕:명:4
  +설레다:동:17
  +설레발:명:1
  +설레설레:부:4
  +설령:부:27
  +설립:명:1
  +설립:명:62
  +설립되다:동:18
  +설립자:명:2
  +설립하다:동:35
  +설마:부:21
  +설마설마:부:2
  +설마하니:부:2
  +설맞이:명:2
  +설명:명:231
  +설명되다:동:41
  +설명문:명:3
  +설명서:명:4
  +설명자:명:1
  +설명적:명:2
  +설명하다:동:369
  +설명회:명:3
  +설문:명:2
  +설문:명:43
  +설문지:명:14
  +설법:명:7
  +설법하다:동:8
  +설비:명:48
  +설비되다:동:2
  +설비업:명:1
  +설빔:명:2
  +설사:명:14
  +설사:부:34
  +설사병:명:1
  +설사약:명:1
  +설사하다:동:1
  +설산:명:2
  +설삶다:동:2
  +설상가상:명:4
  +설상화:명:1
  +설설:부:3
  +설욕전:명:1
  +설움:명:24
  +설원:명:1
  +설익다:동:11
  +설정:명:32
  +설정되다:동:21
  +설정하다:동:93
  +설치:명:81
  +설치다:동:14
  +설치다:동:18
  +설치되다:동:71
  +설치물:명:2
  +설치비:명:3
  +설치하다:동:104
  +설탕:명:97
  +설탕물:명:1
  +설파하다:동:3
  +설퍼나마이드:명:1
  +설핏:부:5
  +설핏하다:형:1
  +설하다:동:2
  +설혹:부:15
  +설화:명:18
  +설화감:명:1
  +설화적:관:2
  +섬:명:112
  +섬:부:1
  +섬:의:7
  +섬겨지다:동:2
  +섬광:명:5
  +섬기다:동:20
  +섬나라:명:1
  +섬돌:명:4
  +섬뜩:부:1
  +섬뜩하다:형:18
  +섬망:명:1
  +섬세성:명:2
  +섬세하다:형:52
  +섬약하다:형:1
  +섬유:명:55
  +섬유소:명:1
  +섬유적:명:1
  +섬유질:명:6
  +섬쩍지근하다:형:2
  +섬찟하다:형:2
  +섭렵:명:2
  +섭렵하다:동:10
  +섭리:명:17
  +섭생:명:2
  +섭섭하다:형:41
  +섭섭해하다:동:4
  +섭섭히:부:1
  +섭씨:명:17
  +섭외:명:9
  +섭외국장:명:3
  +섭외받다:동:1
  +섭외하다:동:5
  +섭정:명:1
  +섭취:명:19
  +섭취되다:동:1
  +섭취량:명:6
  +섭취하다:동:49
  +섭하다:형:1
  +섯뒤집다:동:1
  +섰다:명:2
  +섰다판:명:1
  +성:관:1
  +성:명:1
  +성:명:1
  +성:명:166
  +성:명:31
  +성:명:4
  +성:명:46
  +성:명:5
  +성:명:6
  +성가:명:1
  +성가:명:3
  +성가시다:형:15
  +성게:명:1
  +성격:명:489
  +성격적:명:2
  +성격파:명:1
  +성격화:명:2
  +성결:명:1
  +성경:명:32
  +성경반:명:1
  +성경전서:명:1
  +성골:명:1
  +성공:명:91
  +성공담:명:1
  +성공되다:동:1
  +성공률:명:2
  +성공리:명:3
  +성공법:명:1
  +성공시키다:동:7
  +성공작:명:2
  +성공적:관:4
  +성공적:명:38
  +성공하다:동:105
  +성공학:명:1
  +성과:명:183
  +성과물:명:3
  +성곽:명:21
  +성관:명:1
  +성교:명:10
  +성교육:명:19
  +성글다:형:2
  +성금:명:12
  +성급:명:1
  +성급하다:형:27
  +성급히:부:3
  +성기:명:9
  +성기다:형:4
  +성깔:명:4
  +성깔머리:명:1
  +성나다:동:14
  +성내:명:1
  +성내다:동:2
  +성냥:명:11
  +성냥갑:명:3
  +성냥개비:명:1
  +성냥불:명:4
  +성녀:명:1
  +성년:명:6
  +성능:명:27
  +성당:명:1
  +성당:명:16
  +성대:명:2
  +성대모사:명:2
  +성대하다:형:8
  +성대히:부:1
  +성도덕:명:1
  +성령:명:1
  +성령화:명:1
  +성리학:명:9
  +성립:명:76
  +성립기:명:3
  +성립되다:동:65
  +성립설:명:1
  +성립시키다:동:9
  +성립하다:동:50
  +성마르다:형:1
  +성명:명:5
  +성명:명:78
  +성명서:명:8
  +성목요일:명:1
  +성묘:명:6
  +성묘객:명:1
  +성무:명:2
  +성문:명:4
  +성문법:명:2
  +성물:명:2
  +성미:명:9
  +성범죄:명:6
  +성벽:명:5
  +성별:명:20
  +성병:명:7
  +성부르다:보:1
  +성분:명:61
  +성불:명:1
  +성비:명:4
  +성사:명:3
  +성사:명:4
  +성사되다:동:10
  +성사시키다:동:6
  +성상모:명:1
  +성생활:명:6
  +성서:명:20
  +성서적:명:1
  +성선설:명:3
  +성성이:명:1
  +성성하다:형:1
  +성쇠:명:1
  +성수기:명:2
  +성숙:명:17
  +성숙기:명:4
  +성숙도:명:1
  +성숙되다:동:14
  +성숙미:명:1
  +성숙시키다:동:3
  +성숙하다:동:42
  +성숙해지다:동:8
  +성스럽다:형:19
  +성시:명:1
  +성실:명:4
  +성실도:명:3
  +성실성:명:5
  +성실하다:형:55
  +성실해지다:동:1
  +성실히:부:10
  +성심:명:1
  +성심성의껏:부:2
  +성싶다:보:10
  +성씨:명:6
  +성악:명:4
  +성악가:명:2
  +성악과:명:1
  +성안:명:5
  +성애:명:2
  +성어:명:2
  +성업:명:6
  +성업하다:동:1
  +성역:명:1
  +성역:명:16
  +성역화:명:3
  +성역화되다:동:1
  +성역화하다:동:1
  +성욕:명:10
  +성욕자:명:1
  +성우:명:7
  +성운:명:3
  +성원:명:18
  +성원:명:5
  +성원하다:동:1
  +성은:명:1
  +성읍:명:39
  +성의:명:19
  +성의껏:부:2
  +성인:명:49
  +성인:명:8
  +성인군자:명:2
  +성인기:명:2
  +성인병:명:6
  +성인식:명:2
  +성인화:명:1
  +성인화시키다:동:1
  +성자:명:2
  +성자:명:8
  +성장:명:216
  +성장기:명:7
  +성장되다:동:1
  +성장력:명:2
  +성장률:명:29
  +성장세:명:6
  +성장시키다:동:3
  +성장주:명:1
  +성장지:명:1
  +성장하다:동:98
  +성적:관:21
  +성적:명:26
  +성적:명:7
  +성적:명:88
  +성적순:명:1
  +성적표:명:13
  +성전:명:1
  +성전:명:1
  +성전:명:5
  +성정:명:1
  +성조:명:2
  +성좌:명:1
  +성주:명:4
  +성지:명:14
  +성지성:명:2
  +성직:명:2
  +성직자:명:22
  +성질:명:73
  +성질나다:동:1
  +성징:명:3
  +성찬:명:1
  +성찰:명:22
  +성찰하다:동:4
  +성채:명:3
  +성체:명:1
  +성총:명:1
  +성추행:명:1
  +성취:명:23
  +성취감:명:7
  +성취동기:명:2
  +성취되다:동:7
  +성취시키다:동:5
  +성취욕:명:1
  +성취하다:동:21
  +성층권:명:3
  +성층화하다:동:1
  +성큼:부:14
  +성큼성큼:부:10
  +성탄:명:1
  +성탄나무:명:1
  +성탄절:명:1
  +성터:명:6
  +성토하다:동:2
  +성패:명:12
  +성폭력:명:32
  +성폭행:명:25
  +성폭행당하다:동:3
  +성폭행하다:동:3
  +성품:명:22
  +성하다:형:20
  +성하다:형:4
  +성함:명:6
  +성행:명:1
  +성행:명:2
  +성행위:명:18
  +성행하다:동:18
  +성향:명:48
  +성현:명:3
  +성형:명:1
  +성형:명:6
  +성형술:명:1
  +성형외과:명:4
  +성형외과의:명:4
  +성형외과학:명:2
  +성형의:명:1
  +성형하다:동:2
  +성형학적:명:3
  +성호르몬:명:3
  +성혼식:명:1
  +성화:명:2
  +성화:명:9
  +성화되다:동:2
  +성화하다:동:1
  +성황:명:4
  +성황당:명:1
  +성황리:명:2
  +성희롱:명:1
  +섶:명:6
  +섶:명:9
  +섶선:명:1
  +섶코:명:1
  +세:관:482
  +세:명:10
  +세:명:21
  +세:명:8
  +세:의:230
  +세:의:41
  +세가:명:2
  +세간:명:6
  +세간:명:9
  +세간살이:명:1
  +세계:명:1
  +세계:명:1,345
  +세계관:명:96
  +세계관적:관:3
  +세계관적:명:1
  +세계무대:명:1
  +세계사:명:16
  +세계사적:관:6
  +세계사적:명:1
  +세계상:명:3
  +세계인:명:14
  +세계적:관:26
  +세계적:명:103
  +세계정세:명:2
  +세계주의:명:4
  +세계화:명:9
  +세계화시키다:동:1
  +세계화하다:동:1
  +세고:명:1
  +세곡:명:1
  +세공:명:2
  +세공품:명:2
  +세관:명:18
  +세관원:명:30
  +세균:명:14
  +세금:명:101
  +세기:명:15
  +세기:명:488
  +세기말:명:3
  +세기말적:관:1
  +세기적:명:1
  +세기형:명:1
  +세끼:명:4
  +세내다:동:1
  +세뇌:명:10
  +세뇌당하다:동:1
  +세뇌되다:동:1
  +세뇌받다:동:3
  +세뇌자:명:1
  +세뇌하다:동:3
  +세다:동:3
  +세다:동:52
  +세다:형:59
  +세대:명:10
  +세대:명:175
  +세대교체:명:4
  +세대교체론:명:1
  +세대론:명:2
  +세대론적:관:1
  +세대주:명:1
  +세대표:명:1
  +세도:명:2
  +세도가:명:2
  +세때:명:2
  +세라믹:명:5
  +세라복:명:1
  +세레나데:명:5
  +세력:명:482
  +세력가:명:1
  +세력권:명:4
  +세력론:명:22
  +세력사:명:1
  +세력체:명:1
  +세력화:명:4
  +세력화하다:동:2
  +세련:명:8
  +세련되다:형:41
  +세련미:명:3
  +세례:명:16
  +세례명:명:1
  +세례받다:동:1
  +세례식:명:2
  +세로:명:15
  +세로무늬:명:4
  +세로줄:명:1
  +세립질:명:2
  +세말:명:2
  +세면:명:2
  +세면기:명:1
  +세면대:명:2
  +세면도구:명:1
  +세면실:명:2
  +세면장:명:7
  +세명:명:1
  +세모:명:2
  +세모꼴:명:1
  +세모나다:형:2
  +세모시:명:1
  +세목:명:1
  +세목:명:2
  +세무:명:2
  +세무:명:40
  +세무사:명:1
  +세무서:명:12
  +세무직:명:2
  +세물:명:1
  +세미나:명:30
  +세미나식:명:2
  +세미트리:명:1
  +세밀하다:형:11
  +세밀히:부:1
  +세발자전거:명:1
  +세배:명:11
  +세배드리다:동:1
  +세배하다:동:1
  +세뱃돈:명:2
  +세법:명:4
  +세부:명:10
  +세부적:관:2
  +세부적:명:2
  +세분:명:8
  +세분되다:동:3
  +세분하다:동:5
  +세분화:명:6
  +세분화되다:동:6
  +세분화시키다:동:1
  +세분화하다:동:6
  +세븐브리지:명:1
  +세뿔여뀌:명:2
  +세사:명:1
  +세상:명:738
  +세상만사:명:1
  +세상사:명:6
  +세상살이:명:2
  +세상에:감:21
  +세상일:명:5
  +세세하다:형:6
  +세세히:부:1
  +세션:명:1
  +세속:명:21
  +세속사:명:1
  +세속성:명:1
  +세속적:관:2
  +세속적:명:12
  +세속화:명:3
  +세손:명:1
  +세수:명:2
  +세수:명:26
  +세수:명:6
  +세수법:명:1
  +세수하다:동:7
  +세숫대야:명:4
  +세숫비누:명:3
  +세습:명:2
  +세습적:명:2
  +세습제:명:1
  +세습하다:동:1
  +세습화:명:1
  +세시:명:4
  +세심하다:형:23
  +세심히:부:1
  +세안:명:21
  +세안법:명:3
  +세안제:명:5
  +세안하다:동:10
  +세액:명:3
  +세어지다:동:2
  +세역:명:1
  +세우다:동:488
  +세워지다:동:90
  +세원:명:4
  +세월:명:201
  +세율:명:25
  +세이브:명:1
  +세인:명:12
  +세일:명:6
  +세일즈:명:1
  +세일즈맨:명:4
  +세입인:명:1
  +세입자:명:4
  +세자:명:3
  +세저:명:1
  +세전:명:2
  +세정:명:1
  +세정:명:2
  +세정력:명:2
  +세정제:명:1
  +세제:명:26
  +세제:명:30
  +세제곱:명:1
  +세제곱미터:의:6
  +세제곱센티미터:의:1
  +세제실장:명:1
  +세조:명:3
  +세주:명:1
  +세중마포:명:1
  +세차:명:1
  +세차다:형:19
  +세찬대:명:1
  +세척:명:4
  +세척제:명:2
  +세출:명:1
  +세칙:명:1
  +세침:명:8
  +세칭:명:4
  +세탁:명:20
  +세탁기:명:18
  +세탁물:명:5
  +세탁비누:명:1
  +세탁성:명:1
  +세탁소:명:6
  +세탁하다:동:10
  +세태:명:14
  +세트:명:33
  +세팅:명:4
  +세팅하다:동:1
  +세파:명:2
  +세평:명:1
  +세포:명:1
  +세포:명:101
  +세포막:명:2
  +세포체:명:1
  +세필:명:2
  +세형동검:명:1
  +섹스:명:45
  +섹스하다:동:1
  +섹시:명:1
  +섹시하다:형:15
  +섹시해지다:동:1
  +섹터:명:1
  +센바람:명:1
  +센서:명:7
  +센서스:명:1
  +센세이셔널하다:형:1
  +센스:명:7
  +센터:명:47
  +센터링:명:5
  +센트:의:10
  +센티:의:12
  +센티멘탈리즘:명:1
  +센티미터:의:234
  +셀:명:2
  +셀:명:3
  +셀러리:명:10
  +셀로판지:명:1
  +셀프서비스:명:2
  +셈:명:14
  +셈:의:280
  +셈법:명:1
  +셈하다:동:3
  +셋:수:76
  +셋방:명:3
  +셋이:명:6
  +셋째:관:37
  +셋째:명:8
  +셋째:수:74
  +셔벗기:명:3
  +셔츠:명:6
  +셔터:명:7
  +셔틀콕:명:3
  +셔틀퀸:명:1
  +셰리:명:1
  +셰이크핸드:명:2
  +셰일:명:5
  +소:명:11
  +소:명:13
  +소:명:2
  +소:명:2
  +소:명:6
  +소:명:89
  +소가:명:1
  +소가죽:명:1
  +소각:명:2
  +소각로:명:1
  +소각장:명:1
  +소각하다:동:2
  +소감:명:19
  +소개:명:2
  +소개:명:59
  +소개되다:동:60
  +소개령:명:1
  +소개말:명:2
  +소개받다:동:5
  +소개서:명:6
  +소개시키다:동:2
  +소개팅:명:1
  +소개하다:동:1
  +소개하다:동:163
  +소격:명:1
  +소견:명:9
  +소견머리:명:1
  +소견서:명:5
  +소경:명:2
  +소경전:명:1
  +소계보:명:1
  +소고:명:1
  +소고기:명:3
  +소고삐:명:1
  +소곡:명:1
  +소곤거리다:동:2
  +소곤대다:동:2
  +소공동체:명:1
  +소공연:명:1
  +소공원:명:5
  +소관:명:3
  +소관:명:9
  +소광장:명:1
  +소구:명:1
  +소구경:명:1
  +소구되다:동:2
  +소구력:명:1
  +소구리:명:4
  +소구시키다:동:1
  +소구하다:동:5
  +소국:명:1
  +소국:명:58
  +소국가:명:2
  +소국적:관:2
  +소굴:명:5
  +소규모:명:38
  +소규모적:명:1
  +소극:명:2
  +소극성:명:1
  +소극성:명:1
  +소극장:명:19
  +소극적:관:3
  +소극적:관:4
  +소극적:명:1
  +소극적:명:42
  +소금:명:188
  +소금국:명:1
  +소금기:명:1
  +소금막:명:1
  +소금물:명:14
  +소금밭:명:2
  +소금장이:명:1
  +소급:명:4
  +소급하다:동:5
  +소기:명:4
  +소기업:명:6
  +소꼬리:명:1
  +소꿉:명:1
  +소꿉놀이:명:3
  +소꿉장난:명:5
  +소꿉장난하다:동:1
  +소나기:명:23
  +소나무:명:105
  +소나타:명:4
  +소낙비:명:2
  +소네트:명:2
  +소녀:명:233
  +소녀티:명:1
  +소년:명:210
  +소년기:명:2
  +소년병:명:1
  +소년부:명:1
  +소년원:명:1
  +소농민:명:10
  +소농민적:관:1
  +소농적:관:1
  +소뇌:명:1
  +소다:명:3
  +소다수:명:1
  +소단원:명:1
  +소달구지:명:3
  +소담:명:1
  +소담스럽다:형:1
  +소담스레:부:1
  +소담하다:형:1
  +소대:명:2
  +소대원:명:1
  +소대장:명:7
  +소댕:명:1
  +소도:명:6
  +소도구:명:3
  +소도둑:명:3
  +소도시:명:3
  +소독:명:4
  +소독내:명:1
  +소독비:명:1
  +소독약:명:1
  +소독제:명:1
  +소독포:명:1
  +소독하다:동:4
  +소동:명:36
  +소두:명:3
  +소득:명:136
  +소득세:명:35
  +소득세액:명:1
  +소득세율:명:1
  +소득자:명:1
  +소득적:관:1
  +소똥:명:1
  +소띠:명:4
  +소라:명:7
  +소란:명:13
  +소란스러워지다:동:2
  +소란스럽다:형:10
  +소란하다:형:7
  +소란해지다:동:2
  +소량:명:9
  +소령:명:9
  +소로:명:1
  +소로:명:1
  +소로시:부:1
  +소록이:부:1
  +소론:명:1
  +소롯이:부:1
  +소류지:명:1
  +소름:명:15
  +소리:명:1,660
  +소리굽쇠:명:1
  +소리글자:명:1
  +소리껏:부:1
  +소리꾼:명:5
  +소리치다:동:80
  +소림:명:11
  +소립자:명:10
  +소릿결:명:1
  +소릿기:명:1
  +소만:명:1
  +소망:명:33
  +소망스럽다:형:2
  +소망하다:동:6
  +소매:명:1
  +소매:명:4
  +소매:명:49
  +소매가:명:1
  +소매상:명:4
  +소매업:명:1
  +소매업자:명:1
  +소매점:명:4
  +소매치기:명:5
  +소매치기하다:동:1
  +소매통:명:2
  +소맷부리:명:2
  +소맷자락:명:2
  +소멸:명:9
  +소멸되다:동:18
  +소멸시키다:동:2
  +소멸하다:동:12
  +소명:명:4
  +소명하다:동:1
  +소모:명:10
  +소모되다:동:7
  +소모량:명:1
  +소모성:명:3
  +소모임:명:6
  +소모적:명:3
  +소모전:명:2
  +소모품:명:2
  +소모품화하다:동:1
  +소모하다:동:9
  +소목:명:1
  +소묘전:명:1
  +소무탈:명:1
  +소문:명:150
  +소문나다:동:20
  +소문내다:동:1
  +소문능:명:1
  +소문자:명:1
  +소박:명:1
  +소박당하다:동:1
  +소박맞다:동:2
  +소박하다:형:56
  +소반:명:3
  +소방:명:7
  +소방관:명:1
  +소방교:명:1
  +소방서:명:5
  +소방수:명:1
  +소방장:명:1
  +소방전:명:1
  +소방차:명:7
  +소백하다:형:1
  +소변:명:15
  +소변량:명:1
  +소변보다:동:1
  +소보루:명:2
  +소복:명:6
  +소복이:부:1
  +소부르주아:명:6
  +소부족:명:2
  +소분류:명:2
  +소비:명:107
  +소비되다:동:7
  +소비량:명:15
  +소비력:명:1
  +소비문화:명:9
  +소비성:명:2
  +소비세:명:4
  +소비에트:명:2
  +소비자:명:281
  +소비자층:명:2
  +소비재:명:7
  +소비적:관:1
  +소비적:명:2
  +소비제:명:1
  +소비주의:명:2
  +소비주의적:관:2
  +소비지:명:2
  +소비층:명:2
  +소비하다:동:15
  +소비형:명:1
  +소빙하기:명:1
  +소사:명:1
  +소사:명:1
  +소사나무:명:4
  +소사전:명:2
  +소산:명:23
  +소산물:명:1
  +소살하다:동:1
  +소상인:명:1
  +소상품:명:1
  +소상하다:형:4
  +소상히:부:1
  +소색:명:2
  +소생:명:2
  +소생시키다:동:1
  +소생하다:동:3
  +소서:명:1
  +소선거구:명:2
  +소선거구제:명:1
  +소설:명:1
  +소설:명:354
  +소설가:명:43
  +소설론:명:2
  +소설적:관:2
  +소설적:명:2
  +소설집:명:3
  +소설책:명:10
  +소설화하다:동:3
  +소셜:명:1
  +소소하다:형:3
  +소속:명:98
  +소속감:명:3
  +소속되다:동:12
  +소속원:명:3
  +소속하다:동:3
  +소송:명:66
  +소수:명:52
  +소수인:명:1
  +소수점:명:1
  +소수층:명:2
  +소수파:명:2
  +소스:명:6
  +소스:명:78
  +소스라치다:동:16
  +소슬바람:명:1
  +소슬하다:형:2
  +소승:대:1
  +소승:명:5
  +소승적:관:1
  +소승적:명:1
  +소시민:명:10
  +소시민적:관:2
  +소시민적:명:1
  +소시지:명:17
  +소시호탕:명:1
  +소식:명:1
  +소식:명:210
  +소식주의자:명:1
  +소식지:명:4
  +소식통:명:19
  +소식하다:동:1
  +소신:대:1
  +소신:명:22
  +소신껏:부:2
  +소실:명:3
  +소실되다:동:1
  +소심증:명:1
  +소심하다:형:4
  +소아:명:5
  +소아과:명:5
  +소아마비:명:5
  +소아적:명:1
  +소액:명:6
  +소야곡:명:1
  +소양:명:7
  +소연하다:형:1
  +소연해지다:동:1
  +소엽:명:2
  +소영웅주의:명:1
  +소외:명:48
  +소외감:명:16
  +소외당하다:동:1
  +소외되다:동:31
  +소외받다:동:3
  +소외수:명:1
  +소외시키다:동:1
  +소요:명:19
  +소요:명:7
  +소요되다:동:32
  +소요하다:동:2
  +소용:명:4
  +소용:명:42
  +소용돌이:명:28
  +소용돌이치다:동:8
  +소용되다:동:2
  +소용없다:형:20
  +소우주:명:3
  +소운동회:명:1
  +소원:명:1
  +소원:명:51
  +소원:명:8
  +소원하다:동:1
  +소원하다:동:2
  +소원하다:형:1
  +소원해지다:동:1
  +소위:명:1
  +소위:명:8
  +소위:부:82
  +소위원회:명:3
  +소유:명:149
  +소유관계:명:4
  +소유권:명:31
  +소유권자:명:1
  +소유되다:동:1
  +소유론:명:20
  +소유욕:명:3
  +소유자:명:70
  +소유자적:관:9
  +소유자층:명:17
  +소유적:관:1
  +소유제:명:2
  +소유주:명:5
  +소유지:명:15
  +소유층:명:1
  +소유하다:동:44
  +소유화:명:2
  +소음:명:68
  +소음도:명:2
  +소읍:명:1
  +소인:대:5
  +소인:명:1
  +소인:명:4
  +소인국:명:3
  +소일거리:명:3
  +소일변:명:1
  +소일하다:동:2
  +소임:명:4
  +소자:대:2
  +소자:명:3
  +소자보:명:1
  +소작:명:5
  +소작권:명:1
  +소작농:명:2
  +소작료:명:4
  +소작인:명:1
  +소작제:명:4
  +소장:명:1
  +소장:명:15
  +소장:명:2
  +소장:명:2
  +소장:명:27
  +소장:명:4
  +소장되다:동:3
  +소장품:명:4
  +소장하다:동:4
  +소재:명:152
  +소재:명:24
  +소재벌:명:1
  +소재적:관:2
  +소재적:명:1
  +소재지:명:28
  +소재하다:동:1
  +소전:명:1
  +소절:명:3
  +소정:명:2
  +소젖:명:1
  +소제:명:8
  +소제하다:동:3
  +소조:명:7
  +소조산:명:1
  +소주:명:76
  +소주병:명:12
  +소주잔:명:11
  +소주제:명:12
  +소죽:명:1
  +소중하다:형:110
  +소중히:부:23
  +소지:명:47
  +소지:명:5
  +소지류:명:1
  +소지역:명:1
  +소지인:명:1
  +소지자:명:5
  +소지죄:명:1
  +소지품:명:29
  +소지하다:동:9
  +소직:대:1
  +소진되다:동:2
  +소진되다:동:2
  +소진하다:동:2
  +소질:명:28
  +소집:명:16
  +소집단:명:4
  +소집단적:명:1
  +소집되다:동:3
  +소집처:명:1
  +소집하다:동:10
  +소쩍:부:10
  +소쩍다:부:5
  +소쩍새:명:8
  +소쩍이:명:2
  +소책자:명:3
  +소총:명:5
  +소추:명:7
  +소추권:명:1
  +소추하다:동:1
  +소축적:명:1
  +소축척:명:1
  +소출:명:4
  +소출하다:동:1
  +소치:명:3
  +소칠판:명:1
  +소쿠리:명:16
  +소탈하다:형:2
  +소탕:명:2
  +소탕령:명:1
  +소탕하다:동:5
  +소태:명:1
  +소태나무:명:1
  +소택지:명:1
  +소털:명:1
  +소통:명:17
  +소통되다:동:1
  +소통시키다:동:1
  +소통하다:동:2
  +소트:명:2
  +소파:명:48
  +소포:명:12
  +소포장되다:동:1
  +소폭:명:9
  +소폭:부:6
  +소폭화:명:1
  +소품:명:19
  +소풍:명:36
  +소풍날:명:8
  +소프라노:명:2
  +소프터웨어:명:1
  +소프트:명:2
  +소프트볼:명:1
  +소프트웨어:명:177
  +소피:명:1
  +소피보다:동:1
  +소피스트:명:2
  +소필지:명:1
  +소학교:명:4
  +소한:명:4
  +소행:명:10
  +소형:명:1
  +소형:명:46
  +소형선:명:1
  +소형차:명:4
  +소호:명:1
  +소홀:명:5
  +소홀하다:형:21
  +소홀히:부:37
  +소화:명:1
  +소화:명:39
  +소화금:명:1
  +소화기:명:2
  +소화기:명:4
  +소화되다:동:2
  +소화물:명:3
  +소화성:명:1
  +소화시키다:동:2
  +소화어아금:명:1
  +소화전:명:2
  +소화제:명:6
  +소화하다:동:32
  +소환:명:34
  +소환하다:동:4
  +소회:명:2
  +소회의실:명:1
  +속:명:12
  +속:명:14
  +속:명:2,168
  +속가:명:1
  +속개하다:동:2
  +속결:명:1
  +속곳:명:1
  +속공:명:1
  +속궁합:명:1
  +속기:명:1
  +속기록:명:1
  +속기사:명:3
  +속껍질:명:2
  +속내:명:7
  +속내평:명:1
  +속눈썹:명:12
  +속다:동:25
  +속닥거리다:동:1
  +속단하다:동:4
  +속달:명:1
  +속담:명:58
  +속도:명:211
  +속도감:명:2
  +속도계:명:2
  +속도비:명:2
  +속도전:명:1
  +속독하다:동:1
  +속되다:형:15
  +속뜻:명:4
  +속락:명:1
  +속량되다:동:1
  +속력:명:2
  +속마음:명:16
  +속말:명:2
  +속명:명:1
  +속물:명:5
  +속물스럽다:형:2
  +속물적:관:2
  +속물화되다:동:1
  +속바지:명:3
  +속박:명:7
  +속박당하다:동:1
  +속박되다:동:2
  +속박하다:동:3
  +속병:명:2
  +속보:명:14
  +속사정:명:3
  +속삭거리다:동:1
  +속삭이다:동:30
  +속삭임:명:2
  +속살:명:5
  +속살대다:동:1
  +속상하다:형:20
  +속상해하다:동:3
  +속설:명:4
  +속성:명:1
  +속성:명:2
  +속성:명:45
  +속세:명:14
  +속셈:명:17
  +속속:부:17
  +속속들이:부:12
  +속수무책:명:13
  +속스럽다:형:1
  +속식:명:1
  +속앓이:명:1
  +속어:명:1
  +속언:명:2
  +속없다:형:1
  +속옷:명:36
  +속음:명:1
  +속이다:동:48
  +속인:명:4
  +속임낚시:명:1
  +속임수:명:9
  +속잎:명:1
  +속저고리:명:1
  +속적삼:명:1
  +속전속결:명:2
  +속절없다:형:3
  +속절없이:부:2
  +속죄:명:3
  +속죄양:명:1
  +속죄하다:동:2
  +속주머니:명:2
  +속출:명:3
  +속출하다:동:14
  +속치마:명:3
  +속칭:명:10
  +속편:명:1
  +속편:명:7
  +속하다:동:159
  +속해지다:동:1
  +속행:명:1
  +속현:명:7
  +속회:명:2
  +속흙:명:5
  +속히:부:6
  +솎다:동:7
  +솎음배추:명:1
  +손:명:1,025
  +손:명:2
  +손:명:3
  +손:명:3
  +손:의:1
  +손가락:명:181
  +손가락질:명:10
  +손가락질받다:동:2
  +손가락질하다:동:5
  +손가방:명:5
  +손길:명:31
  +손깍지:명:2
  +손꼽다:동:14
  +손꼽아지다:동:1
  +손꼽히다:동:16
  +손끝:명:24
  +손나발:명:2
  +손녀:명:12
  +손녀딸:명:1
  +손놀림:명:15
  +손님:명:250
  +손님맞이:명:1
  +손님층:명:1
  +손대다:동:11
  +손도:명:2
  +손도끼:명:1
  +손들다:동:7
  +손등:명:25
  +손때:명:11
  +손마디:명:2
  +손맛:명:3
  +손목:명:36
  +손목시계:명:14
  +손바닥:명:76
  +손발:명:37
  +손배소:명:1
  +손보다:동:8
  +손보사:명:2
  +손비:명:1
  +손빨래:명:1
  +손뼉:명:18
  +손사래:명:1
  +손상:명:27
  +손상되다:동:12
  +손상받다:동:1
  +손상시키다:동:2
  +손상하다:동:4
  +손색:명:10
  +손색없다:형:2
  +손색없이:부:1
  +손세탁하다:동:4
  +손수:부:18
  +손수건:명:20
  +손수레:명:6
  +손쉽다:형:41
  +손실:명:36
  +손실량:명:1
  +손실액:명:1
  +손쓰다:동:2
  +손아귀:명:21
  +손아래:명:2
  +손안:명:6
  +손위:명:1
  +손윗사람:명:2
  +손익:명:2
  +손자:명:65
  +손잡다:동:16
  +손잡이:명:23
  +손잡이형:명:1
  +손재:명:1
  +손재수:명:1
  +손재주:명:6
  +손전등:명:7
  +손주:명:1
  +손지갑:명:4
  +손질:명:40
  +손질되다:동:3
  +손질받다:동:1
  +손질법:명:1
  +손질하다:동:42
  +손짓:명:17
  +손짓하다:동:4
  +손찌검:명:3
  +손톱:명:40
  +손해:명:69
  +손해나다:동:1
  +손해액:명:2
  +솔:명:1
  +솔:명:1
  +솔:명:13
  +솔:명:2
  +솔가리나무:명:1
  +솔가지:명:3
  +솔개:명:6
  +솔개구이:명:1
  +솔기:명:5
  +솔깃하다:형:2
  +솔깃해지다:동:3
  +솔깃해하다:동:2
  +솔나무:명:1
  +솔로:명:1
  +솔바람:명:4
  +솔방울:명:2
  +솔밭:명:16
  +솔새:명:1
  +솔새:명:1
  +솔선수범:명:4
  +솔선수범하다:동:1
  +솔선하다:동:5
  +솔솔:부:7
  +솔송나무:명:1
  +솔숲:명:5
  +솔잎:명:7
  +솔직하다:형:84
  +솔직해지다:동:11
  +솔직히:부:88
  +솔찬히:부:1
  +솜:명:28
  +솜두루마기:명:2
  +솜뭉치:명:1
  +솜바지:명:1
  +솜방망이:명:1
  +솜사탕:명:3
  +솜씨:명:92
  +솜옷:명:3
  +솜이불:명:1
  +솜저고리:명:1
  +솜털:명:9
  +솟구치다:동:38
  +솟다:동:63
  +솟아나다:동:15
  +솟아오르다:동:22
  +송:명:1
  +송:명:3
  +송고:명:1
  +송골송골:부:1
  +송곳:명:7
  +송곳니:명:2
  +송구스럽다:형:6
  +송구하다:형:2
  +송글송글:부:1
  +송금:명:6
  +송금되다:동:1
  +송금받다:동:1
  +송금하다:동:7
  +송기:명:1
  +송달:명:1
  +송달하다:동:2
  +송덕비:명:2
  +송두리:명:1
  +송두리째:부:9
  +송림:명:2
  +송별:명:2
  +송별회:명:3
  +송사:명:1
  +송사리:명:6
  +송사릿과:명:1
  +송송:부:15
  +송수관:명:1
  +송수신:명:1
  +송수신자:명:1
  +송수화기:명:1
  +송신:명:1
  +송신기:명:1
  +송신소:명:3
  +송신하다:동:2
  +송아지:명:20
  +송알송알:부:1
  +송연하다:형:1
  +송유:명:1
  +송유관:명:2
  +송이:명:29
  +송장:명:9
  +송장메뚜기:명:1
  +송전:명:1
  +송조:명:1
  +송죽:명:1
  +송진:명:3
  +송차:명:1
  +송충이:명:3
  +송치:명:1
  +송치받다:동:1
  +송치하다:동:1
  +송판:명:3
  +송편:명:18
  +송풍:명:1
  +송풍구:명:1
  +송풍기:명:2
  +송학:명:1
  +송화:명:1
  +송화색별문능:명:1
  +송환:명:10
  +송환되다:동:1
  +송환하다:동:3
  +솥:명:17
  +솥다리:명:2
  +솥단지:명:1
  +솥뚜껑:명:7
  +쇄도:명:1
  +쇄도하다:동:2
  +쇄신:명:12
  +쇄신하다:동:2
  +쇠:명:29
  +쇠고기:명:100
  +쇠고기볶음:명:1
  +쇠고랑:명:4
  +쇠굽파개:명:1
  +쇠귀:명:1
  +쇠다:동:6
  +쇠똥:명:6
  +쇠뚜껑:명:1
  +쇠락:명:1
  +쇠막대기:명:1
  +쇠망치:명:1
  +쇠무릎:명:1
  +쇠뭉치:명:1
  +쇠발굽:명:1
  +쇠붙이:명:4
  +쇠비름:명:1
  +쇠뿔:명:1
  +쇠사슬:명:6
  +쇠솔딱새:명:1
  +쇠솔새:명:2
  +쇠스랑:명:5
  +쇠약:명:2
  +쇠약하다:형:9
  +쇠약해지다:동:3
  +쇠잔등:명:2
  +쇠잔하다:동:2
  +쇠전거리:명:1
  +쇠죽:명:1
  +쇠줄:명:2
  +쇠창살:명:7
  +쇠칼:명:1
  +쇠톱:명:2
  +쇠퇴:명:16
  +쇠퇴기:명:1
  +쇠퇴하다:동:28
  +쇠파리:명:3
  +쇤네:대:11
  +쇳대:명:3
  +쇳덩어리:명:2
  +쇳덩이:명:2
  +쇳소리:명:6
  +쇳조각:명:2
  +쇼:명:52
  +쇼부:명:1
  +쇼비니스트:명:1
  +쇼윈도:명:1
  +쇼크:명:9
  +쇼킹:명:1
  +쇼킹하다:형:4
  +쇼트:명:2
  +쇼핑:명:17
  +쇼핑광:명:1
  +쇼핑백:명:4
  +쇼핑센터:명:1
  +쇼핑하다:동:1
  +쇼하다:동:1
  +숄:명:1
  +숄더:명:2
  +숄더백:명:2
  +숍:명:7
  +숏:명:1
  +숏다리:명:2
  +수:관:11
  +수:명:1
  +수:명:1
  +수:명:1
  +수:명:1
  +수:명:2
  +수:명:24
  +수:명:248
  +수:명:3
  +수:명:3
  +수:명:5
  +수:명:5
  +수:명:7
  +수:명:7
  +수:의:10,915
  +수:의:2
  +수:의:7
  +수가:명:4
  +수감:명:7
  +수감되다:동:2
  +수감자:명:2
  +수감하다:동:2
  +수갑:명:16
  +수강:명:8
  +수강료:명:2
  +수강생:명:5
  +수강자:명:3
  +수강증:명:1
  +수강하다:동:1
  +수개월:명:5
  +수거:명:31
  +수거되다:동:4
  +수거량:명:2
  +수거비:명:1
  +수거장:명:1
  +수거하다:동:15
  +수거함:명:1
  +수건:명:42
  +수결:명:4
  +수계:명:1
  +수계:명:23
  +수고:명:21
  +수고:명:7
  +수고로이:부:1
  +수고하다:동:24
  +수공:명:12
  +수공:명:2
  +수공업:명:28
  +수공업자:명:2
  +수공예품:명:1
  +수공품:명:1
  +수관:명:2
  +수광:명:1
  +수괴:명:1
  +수교:명:12
  +수교하다:동:1
  +수구:명:1
  +수구:명:3
  +수구:명:6
  +수구적:관:2
  +수군:명:7
  +수군거리다:동:6
  +수군수군:부:2
  +수권:명:1
  +수권:명:2
  +수그러들다:동:3
  +수그러지다:동:5
  +수그리다:동:2
  +수금:명:2
  +수금하다:동:2
  +수급:명:1
  +수급:명:19
  +수급되다:동:1
  +수긍:명:7
  +수긍되다:동:1
  +수긍하다:동:11
  +수기:명:3
  +수기집:명:1
  +수기치인:명:1
  +수꿀하다:형:1
  +수나무:명:2
  +수난:명:19
  +수난사:명:1
  +수납:명:1
  +수납장:명:2
  +수납함:명:2
  +수녀:명:25
  +수년:명:27
  +수놈:명:3
  +수놓다:동:7
  +수놓아지다:동:1
  +수놓이다:동:2
  +수뇌:명:6
  +수뇌부:명:15
  +수능:명:4
  +수능식:명:3
  +수다:명:20
  +수다스럽다:형:1
  +수다쟁이:명:1
  +수단:명:181
  +수단화하다:동:1
  +수달피:명:1
  +수당:명:17
  +수더분하다:형:2
  +수도:명:1
  +수도:명:136
  +수도:명:4
  +수도:명:7
  +수도관:명:1
  +수도권:명:71
  +수도꼭지:명:23
  +수도성:명:1
  +수도세:명:1
  +수도승:명:13
  +수도원:명:3
  +수도자:명:3
  +수도터:명:4
  +수도회:명:1
  +수독수리:명:1
  +수돗가:명:7
  +수돗물:명:20
  +수동:명:1
  +수동:명:5
  +수동:명:5
  +수동성:명:4
  +수동식:명:6
  +수동적:관:7
  +수동적:명:33
  +수동화:명:1
  +수동화되다:동:3
  +수두룩:부:1
  +수두룩하다:형:9
  +수떨판이:명:1
  +수라장:명:2
  +수락:명:6
  +수락하다:동:10
  +수량:명:9
  +수런거리다:동:3
  +수렁:명:3
  +수레:명:20
  +수레바퀴:명:4
  +수려하다:형:7
  +수력:명:7
  +수련:명:1
  +수련:명:13
  +수련원:명:1
  +수련의:명:2
  +수련장:명:1
  +수련장:명:6
  +수련하다:동:3
  +수련회:명:6
  +수렴:명:14
  +수렴되다:동:8
  +수렴주의:명:1
  +수렴하다:동:17
  +수렵:명:16
  +수렵군:명:2
  +수렵도:명:9
  +수렵무:명:7
  +수렵민:명:1
  +수렵자:명:1
  +수렵하다:동:1
  +수령:명:1
  +수령:명:2
  +수령:명:5
  +수령:명:6
  +수령액:명:2
  +수령인:명:1
  +수령하다:동:2
  +수로:명:11
  +수록:명:3
  +수록되다:동:18
  +수록하다:동:12
  +수뢰:명:4
  +수뢰설:명:1
  +수뢰하다:동:1
  +수료:명:3
  +수료생:명:1
  +수료하다:동:2
  +수류탄:명:2
  +수륙:명:3
  +수리:명:13
  +수리:명:2
  +수리:명:2
  +수리:명:2
  +수리공:명:2
  +수리되다:동:1
  +수리비:명:4
  +수리수리:부:2
  +수리적:관:2
  +수리점:명:2
  +수리취:명:2
  +수리하다:동:15
  +수리하다:동:4
  +수리학:명:1
  +수리학자:명:1
  +수림:명:2
  +수립:명:35
  +수립되다:동:14
  +수립하다:동:57
  +수마:명:1
  +수만:관:20
  +수만:수:2
  +수많다:형:167
  +수말:명:1
  +수매:명:12
  +수매가:명:2
  +수매량:명:4
  +수매하다:동:1
  +수면:명:28
  +수면:명:48
  +수면권:명:1
  +수면제:명:11
  +수명:명:50
  +수모:명:7
  +수목:명:11
  +수목원:명:1
  +수몰되다:동:1
  +수묵:명:2
  +수묵화:명:5
  +수문:명:5
  +수문장:명:2
  +수미:명:1
  +수밀비:명:1
  +수박:명:2
  +수박:명:44
  +수반:명:1
  +수반:명:3
  +수반되다:동:7
  +수반하다:동:13
  +수발:명:1
  +수발:명:3
  +수배:명:29
  +수배되다:동:2
  +수배자:명:6
  +수배하다:동:8
  +수백:관:45
  +수백:수:2
  +수백만:관:7
  +수백만:수:2
  +수백억:관:2
  +수백억:수:1
  +수범:명:3
  +수범하다:동:1
  +수법:명:25
  +수병좌:명:1
  +수복:명:2
  +수복되다:동:1
  +수북수북:부:1
  +수북이:부:8
  +수북하다:형:6
  +수분:명:4
  +수분:명:43
  +수분량:명:2
  +수비:명:21
  +수비대:명:3
  +수비대원:명:1
  +수비력:명:2
  +수비벽:명:2
  +수비수:명:12
  +수비진:명:3
  +수비하다:동:1
  +수사:명:11
  +수사:명:344
  +수사:명:6
  +수사과:명:4
  +수사과장:명:2
  +수사관:명:24
  +수사국:명:2
  +수사권:명:7
  +수사대:명:3
  +수사력:명:7
  +수사반:명:3
  +수사법:명:3
  +수사본부:명:3
  +수사부:명:1
  +수사설:명:1
  +수사하다:동:15
  +수사학:명:2
  +수산:명:14
  +수산고:명:1
  +수산물:명:24
  +수산업:명:17
  +수산화:명:1
  +수산화나트륨:명:7
  +수삼:관:1
  +수삼:명:5
  +수상:명:17
  +수상:명:4
  +수상:명:83
  +수상감:명:1
  +수상기:명:5
  +수상록:명:2
  +수상실:명:2
  +수상자:명:5
  +수상작:명:8
  +수상쩍다:형:5
  +수상하다:동:20
  +수상하다:형:17
  +수상히:부:2
  +수색:명:19
  +수색대:명:2
  +수색하다:동:3
  +수서과:명:5
  +수서과장:명:2
  +수석:명:114
  +수석:명:6
  +수석대표:명:6
  +수석실:명:22
  +수선:명:3
  +수선:명:3
  +수선거리다:동:1
  +수선하다:동:1
  +수성:명:1
  +수성:명:1
  +수성:명:2
  +수성:명:3
  +수성암:명:5
  +수세:명:3
  +수세미:명:9
  +수세식:명:4
  +수세적:관:1
  +수세적:명:1
  +수소:명:1
  +수소:명:10
  +수소문:명:2
  +수소문하다:동:5
  +수소염화플루오르화탄소:명:1
  +수소플루오르화탄소:명:1
  +수속:명:14
  +수송:명:27
  +수송기:명:1
  +수송대장:명:1
  +수송량:명:1
  +수송부:명:1
  +수송선:명:1
  +수송차:명:6
  +수송하다:동:5
  +수송함:명:1
  +수수:명:31
  +수수:명:37
  +수수깡:명:1
  +수수께끼:명:13
  +수수료:명:10
  +수수료율:명:3
  +수수밥:명:1
  +수수방관하다:동:3
  +수수하다:형:1
  +수수하다:형:4
  +수순:명:6
  +수술:명:1
  +수술:명:131
  +수술대:명:1
  +수술료:명:1
  +수술률:명:1
  +수술법:명:4
  +수술비:명:4
  +수술시키다:동:1
  +수술실:명:2
  +수술진:명:1
  +수술하다:동:11
  +수숫대:명:1
  +수습:명:10
  +수습:명:11
  +수습기자:명:1
  +수습사원:명:1
  +수습제:명:1
  +수습책:명:2
  +수습하다:동:20
  +수시:명:4
  +수시력:명:1
  +수시로:부:38
  +수식:명:2
  +수식:명:4
  +수식어:명:2
  +수식하다:동:2
  +수신:명:6
  +수신:명:7
  +수신고:명:3
  +수신기:명:1
  +수신되다:동:2
  +수신반:명:1
  +수신인:명:5
  +수신자:명:1
  +수신하다:동:3
  +수실:명:2
  +수심:명:14
  +수심:명:2
  +수심:명:4
  +수십:관:78
  +수십만:관:6
  +수십만:수:1
  +수십억:관:10
  +수십억:수:1
  +수압:명:3
  +수액:명:1
  +수액:명:2
  +수양:명:14
  +수양딸:명:2
  +수양버들:명:2
  +수양법:명:1
  +수양하다:동:3
  +수어:명:2
  +수억:관:10
  +수억만:관:2
  +수업:명:17
  +수업:명:245
  +수업:명:4
  +수업료:명:4
  +수업하다:동:3
  +수없다:형:2
  +수없이:부:56
  +수여:명:4
  +수여되다:동:1
  +수여자:명:1
  +수여하다:동:6
  +수역:명:6
  +수염:명:47
  +수염발:명:1
  +수염투성이:명:2
  +수영:명:72
  +수영복:명:3
  +수영장:명:12
  +수영하다:동:6
  +수예품:명:1
  +수오지심:명:1
  +수온:명:4
  +수완:명:3
  +수요:명:135
  +수요력:명:1
  +수요일:명:21
  +수요자:명:4
  +수요자층:명:1
  +수요처:명:1
  +수요층:명:1
  +수용:명:1
  +수용:명:18
  +수용:명:45
  +수용당하다:동:1
  +수용도:명:1
  +수용되다:동:1
  +수용되다:동:19
  +수용되다:동:4
  +수용성:명:1
  +수용소:명:21
  +수용소식:명:2
  +수용자:명:49
  +수용적:명:1
  +수용하다:동:1
  +수용하다:동:73
  +수용하다:동:8
  +수운:명:3
  +수원잔대:명:4
  +수원지:명:1
  +수원지:명:1
  +수월하다:형:15
  +수월해지다:동:3
  +수월히:부:1
  +수위:명:13
  +수위:명:13
  +수위:명:2
  +수위실:명:1
  +수유:명:4
  +수유아:명:3
  +수육:명:1
  +수은:명:5
  +수은등:명:4
  +수은제:명:1
  +수은주:명:3
  +수의:명:1
  +수의:명:3
  +수의:명:9
  +수의사:명:3
  +수익:명:40
  +수익금:명:3
  +수익률:명:8
  +수익성:명:7
  +수익액:명:1
  +수익자:명:1
  +수인:명:1
  +수일:명:3
  +수임:명:2
  +수임료:명:2
  +수임위:명:1
  +수입:명:195
  +수입:명:85
  +수입국:명:4
  +수입되다:동:20
  +수입량:명:6
  +수입물:명:1
  +수입산:명:2
  +수입액:명:3
  +수입액:명:4
  +수입원:명:1
  +수입자:명:1
  +수입품:명:20
  +수입하다:동:51
  +수자상:명:1
  +수자원:명:5
  +수자폰:명:1
  +수작:명:14
  +수작:명:2
  +수작업:명:1
  +수작하다:동:1
  +수장:명:1
  +수장:명:27
  +수장국:명:1
  +수장시키다:동:2
  +수장하다:동:1
  +수장하다:동:1
  +수재:명:1
  +수재:명:5
  +수재민:명:3
  +수재죄:명:2
  +수저:명:19
  +수저통:명:1
  +수적:관:5
  +수적:명:3
  +수전증:명:1
  +수절:명:8
  +수절하다:동:1
  +수정:명:1
  +수정:명:28
  +수정:명:3
  +수정:명:3
  +수정되다:동:2
  +수정되다:동:6
  +수정란:명:10
  +수정안:명:2
  +수정주의:명:1
  +수정주의자:명:1
  +수정체:명:7
  +수정하다:동:1
  +수정하다:동:1
  +수정하다:동:16
  +수제비:명:21
  +수제자:명:4
  +수조:관:2
  +수조:명:6
  +수조권:명:9
  +수조권론:명:1
  +수조권설:명:1
  +수조권자:명:1
  +수조권적:명:3
  +수조론:명:2
  +수조지:명:5
  +수조하다:동:2
  +수족:명:11
  +수족관:명:1
  +수족궐냉:명:2
  +수종:명:14
  +수주:명:1
  +수주:명:15
  +수주액:명:1
  +수주전:명:2
  +수주하다:동:5
  +수준:명:404
  +수준급:명:5
  +수준작:명:1
  +수줍다:형:13
  +수줍어하다:동:5
  +수줍음:명:3
  +수중:명:10
  +수중:명:5
  +수중고혼:명:2
  +수중다리:명:1
  +수중전:명:3
  +수증기:명:4
  +수지:명:1
  +수지:명:1
  +수지:명:32
  +수지맞다:동:1
  +수지침:명:5
  +수직:명:27
  +수직선:명:6
  +수직적:관:4
  +수직적:명:3
  +수직주의:명:1
  +수직형:명:1
  +수질:명:34
  +수집:명:23
  +수집:명:35
  +수집가:명:2
  +수집광:명:1
  +수집되다:동:2
  +수집되다:동:5
  +수집량:명:1
  +수집상:명:1
  +수집소:명:1
  +수집인:명:1
  +수집하다:동:14
  +수집하다:동:47
  +수차:명:4
  +수차례:명:15
  +수채:명:3
  +수채화:명:11
  +수척하다:형:4
  +수척해지다:동:2
  +수천:관:48
  +수천:수:3
  +수천만:관:5
  +수천만:수:1
  +수천수만:관:1
  +수천수만:수:2
  +수천억:관:2
  +수천억:수:1
  +수첩:명:13
  +수초:명:6
  +수축:명:19
  +수축감:명:1
  +수축되다:동:4
  +수축시키다:동:7
  +수축하다:동:2
  +수출:명:198
  +수출과:명:1
  +수출국:명:4
  +수출되다:동:3
  +수출량:명:3
  +수출액:명:4
  +수출업체:명:1
  +수출입:명:4
  +수출품:명:1
  +수출하다:동:27
  +수취:명:2
  +수취:명:20
  +수취:명:5
  +수취권:명:1
  +수취인:명:8
  +수취자:명:1
  +수취제:명:1
  +수취하다:동:3
  +수치:명:32
  +수치:명:4
  +수치스럽다:형:8
  +수치심:명:4
  +수칙:명:6
  +수컷:명:29
  +수탁고:명:1
  +수탈:명:26
  +수탈당하다:동:3
  +수탈론:명:1
  +수탈자:명:1
  +수탈적:명:1
  +수탈하다:동:2
  +수탉:명:6
  +수태:명:7
  +수태일:명:1
  +수태하다:동:8
  +수통:명:9
  +수틀리다:동:1
  +수평:명:26
  +수평면:명:3
  +수평선:명:22
  +수평적:관:1
  +수평적:명:2
  +수평주의:명:1
  +수포:명:2
  +수포성:명:2
  +수포형:명:1
  +수폭:명:2
  +수표:명:67
  +수풀:명:4
  +수프:명:8
  +수필:명:35
  +수필가:명:3
  +수필계:명:1
  +수필집:명:2
  +수하:명:1
  +수학:명:24
  +수학:명:52
  +수학여행:명:11
  +수학여행지:명:1
  +수학자:명:6
  +수학적:관:18
  +수학적:명:8
  +수학하다:동:1
  +수해:명:11
  +수행:명:12
  +수행:명:15
  +수행:명:48
  +수행과장:명:3
  +수행되다:동:13
  +수행법:명:1
  +수행시키다:동:3
  +수행실장:명:11
  +수행실장실:명:1
  +수행원:명:2
  +수행자:명:4
  +수행하다:동:3
  +수행하다:동:5
  +수행하다:동:91
  +수험:명:5
  +수험생:명:39
  +수험표:명:2
  +수혈:명:9
  +수혈받다:동:1
  +수혜:명:6
  +수혜자:명:6
  +수호:명:10
  +수호되다:동:1
  +수호신:명:6
  +수호자:명:2
  +수호초:명:1
  +수호하다:동:7
  +수화:명:4
  +수화기:명:59
  +수확:명:17
  +수확고:명:1
  +수확기:명:1
  +수확량:명:6
  +수확물:명:1
  +수확분:명:1
  +수확제:명:1
  +수확하다:동:10
  +수회:명:1
  +수효:명:5
  +수훈:명:1
  +수훈:명:3
  +숙견:명:1
  +숙고:명:2
  +숙고사:명:3
  +숙고하다:동:1
  +숙과:명:2
  +숙녀:명:16
  +숙녀복:명:6
  +숙단:명:1
  +숙달되다:동:2
  +숙독하다:동:1
  +숙련가:명:1
  +숙련공:명:5
  +숙련도:명:1
  +숙련되다:동:3
  +숙련자:명:1
  +숙맥:명:3
  +숙면:명:2
  +숙명:명:13
  +숙명론적:관:1
  +숙명성:명:1
  +숙명적:관:2
  +숙명적:명:8
  +숙명주:명:1
  +숙박:명:9
  +숙박료:명:1
  +숙박비:명:3
  +숙박업소:명:4
  +숙배:명:1
  +숙변:명:1
  +숙부:명:26
  +숙부님:명:9
  +숙성:명:3
  +숙성시키다:동:1
  +숙소:명:27
  +숙수:명:1
  +숙수:명:1
  +숙식:명:5
  +숙식비:명:2
  +숙어:명:3
  +숙여지다:동:3
  +숙연하다:형:3
  +숙연해지다:동:1
  +숙원:명:5
  +숙위:명:1
  +숙의:명:5
  +숙의하다:동:1
  +숙이다:동:87
  +숙적:명:1
  +숙정:명:3
  +숙정하다:동:1
  +숙제:명:139
  +숙제물:명:4
  +숙주:명:1
  +숙주:명:4
  +숙지하다:동:1
  +숙직:명:20
  +숙직실:명:10
  +숙직자:명:1
  +숙직하다:동:3
  +숙질:명:1
  +숙청:명:5
  +숙청당하다:동:1
  +숙청하다:동:3
  +숙초:명:1
  +숙취:명:1
  +숙항라:명:1
  +숙환:명:1
  +순:관:11
  +순:명:3
  +순:명:3
  +순:부:8
  +순간:명:399
  +순간순간:명:8
  +순간순간:부:4
  +순간적:관:2
  +순간적:명:32
  +순검:명:20
  +순검청:명:7
  +순결:명:23
  +순결하다:형:17
  +순경:명:66
  +순교:명:3
  +순교자:명:10
  +순국:명:1
  +순금제:명:1
  +순기능:명:2
  +순대:명:2
  +순두부:명:5
  +순례:명:6
  +순례자:명:1
  +순리:명:14
  +순리적:명:3
  +순림:명:1
  +순무대장:명:2
  +순박:명:1
  +순박하다:형:24
  +순발력:명:10
  +순방:명:8
  +순방하다:동:5
  +순배:명:2
  +순백:명:5
  +순백색:명:3
  +순백자:명:1
  +순번:명:2
  +순번제:명:2
  +순사:명:6
  +순사보:명:1
  +순산:명:7
  +순산하다:동:17
  +순서:명:113
  +순서도:명:1
  +순수:명:53
  +순수성:명:12
  +순수시:명:1
  +순수익:명:1
  +순수입:명:1
  +순수주의:명:2
  +순수주의적:명:1
  +순수하다:형:97
  +순수해지다:동:2
  +순순하다:형:1
  +순순히:부:15
  +순시:명:6
  +순시선:명:1
  +순식간:명:42
  +순애보적:명:1
  +순연하다:동:1
  +순위:명:31
  +순위권:명:1
  +순위자:명:1
  +순위표:명:1
  +순은:명:1
  +순응:명:4
  +순응시키다:동:1
  +순응적:관:1
  +순응적:명:2
  +순응주의:명:3
  +순응하다:동:21
  +순이익:명:4
  +순이익률:명:2
  +순익:명:5
  +순인:명:1
  +순일주의:명:1
  +순장:명:7
  +순장제:명:2
  +순전하다:형:3
  +순전히:부:26
  +순정:명:6
  +순정적:관:2
  +순정하다:형:1
  +순조로이:부:1
  +순조롭다:형:18
  +순종:명:1
  +순종:명:9
  +순종적:명:9
  +순종하다:동:11
  +순지르기:명:2
  +순진성:명:2
  +순진하다:형:26
  +순차적:명:2
  +순찰:명:16
  +순찰차:명:9
  +순찰하다:동:5
  +순치:명:1
  +순치되다:동:1
  +순탄:명:1
  +순탄하다:형:7
  +순하다:형:16
  +순하디순하다:형:1
  +순항:명:2
  +순항하다:동:1
  +순행:명:1
  +순화:명:14
  +순화:명:3
  +순화되다:동:1
  +순화되다:동:2
  +순화미:명:1
  +순화시키다:동:2
  +순화안:명:6
  +순화하다:동:10
  +순화하다:동:3
  +순환:명:59
  +순환계:명:1
  +순환기:명:1
  +순환적:명:1
  +순환하다:동:14
  +순회:명:1
  +순회공연:명:5
  +순회공연단:명:2
  +순회단:명:1
  +순회하다:동:5
  +숟가락:명:22
  +숟가락질:명:3
  +숟갈:명:3
  +숟갈질하다:동:1
  +술:명:524
  +술:의:260
  +술값:명:9
  +술고래:명:1
  +술국:명:1
  +술기운:명:7
  +술김:명:1
  +술꾼:명:8
  +술난리:명:1
  +술도가:명:1
  +술독:명:2
  +술래잡기:명:1
  +술래잡기하다:동:1
  +술렁거리다:동:8
  +술렁이다:동:2
  +술버릇:명:1
  +술병:명:22
  +술사:명:1
  +술상:명:12
  +술손님:명:2
  +술수:명:3
  +술술:부:3
  +술심부름:명:3
  +술안주:명:3
  +술어:명:1
  +술어:명:1
  +술어학:명:1
  +술자리:명:20
  +술잔:명:33
  +술장사:명:1
  +술좌석:명:6
  +술주정:명:3
  +술주정뱅이:명:1
  +술지게미:명:1
  +술집:명:90
  +술책:명:2
  +술청:명:3
  +술타령:명:1
  +술타령하다:동:1
  +술판:명:6
  +술패랭이꽃:명:1
  +술회:명:2
  +술회하다:동:3
  +숨:명:201
  +숨겨지다:동:19
  +숨결:명:19
  +숨골:명:5
  +숨구멍:명:1
  +숨기다:동:64
  +숨김없이:부:4
  +숨넘어가다:동:2
  +숨다:동:109
  +숨두부:명:5
  +숨바꼭질:명:5
  +숨소리:명:18
  +숨쉬기:명:4
  +숨어들다:동:8
  +숨죽이다:동:5
  +숨지다:동:69
  +숨차다:형:1
  +숨통:명:10
  +숫감:명:2
  +숫기:명:1
  +숫독수리:명:1
  +숫되다:형:1
  +숫보기:명:1
  +숫자:명:122
  +숫자판:명:1
  +숫접다:형:1
  +숫제:부:4
  +숫처녀:명:5
  +숫총각:명:3
  +숭고:명:2
  +숭고감:명:1
  +숭고하다:형:12
  +숭굴숭굴하다:형:1
  +숭늉:명:17
  +숭배:명:11
  +숭배되다:동:1
  +숭배적:명:1
  +숭배하다:동:12
  +숭상하다:동:14
  +숭숭:부:6
  +숭앙:명:2
  +숭앙되다:동:1
  +숭앙받다:동:3
  +숭어:명:4
  +숭어회:명:1
  +숭얼숭얼:부:1
  +숭유:명:2
  +숭조:명:1
  +숯:명:23
  +숯덩이:명:6
  +숯불:명:5
  +숱:명:4
  +숱하다:형:33
  +숲:명:216
  +숲가:명:2
  +숲길:명:2
  +숲머리:명:1
  +숲새:명:2
  +쉐어웨어:명:1
  +쉬:명:1
  +쉬:명:1
  +쉬:부:6
  +쉬다:동:1
  +쉬다:동:223
  +쉬다:동:9
  +쉬다:동:90
  +쉬쉬:부:5
  +쉬쉬하다:동:3
  +쉬어지다:동:1
  +쉬엄쉬엄:부:1
  +쉬워지다:동:6
  +쉬이:부:2
  +쉬이다:동:1
  +쉬하다:동:1
  +쉭쉭:부:1
  +쉰:관:8
  +쉰:수:3
  +쉰넷:수:2
  +쉰다섯:관:1
  +쉰다섯:수:1
  +쉰둘:수:1
  +쉰둥이:명:1
  +쉰세:관:1
  +쉰셋:수:1
  +쉰아홉:관:1
  +쉰일곱:관:1
  +쉰일곱:수:1
  +쉼터:명:6
  +쉼표:명:3
  +쉽다:형:790
  +쉽사리:부:20
  +슈크림:명:1
  +슈터:명:2
  +슈팅:명:8
  +슈팅력:명:1
  +슈퍼:명:11
  +슈퍼:명:7
  +슈퍼마켓:명:27
  +슈퍼맨:명:1
  +슈퍼바이저:명:1
  +슈퍼스타:명:4
  +슈퍼알로이:명:1
  +슈퍼에고:명:1
  +슈퍼우먼:명:3
  +슈퍼컴퓨터:명:9
  +슛:명:31
  +슛하다:동:6
  +스낵:명:1
  +스냅:명:8
  +스노:명:1
  +스니커:명:1
  +스니프터:명:5
  +스님:명:72
  +스란치마:명:1
  +스러지다:동:8
  +스로인:명:1
  +스르르:부:4
  +스르륵:부:1
  +스리지:명:2
  +스리쿼터:명:1
  +스릴:명:5
  +스릴러:명:3
  +스마일:명:1
  +스마트하다:형:2
  +스매시:명:1
  +스매싱:명:1
  +스멀거리다:동:2
  +스멀스멀:부:5
  +스멀스멀거리다:동:1
  +스며들다:동:43
  +스모그:명:9
  +스무:관:48
  +스무남은:관:1
  +스무남은:명:1
  +스물:수:15
  +스물네:관:6
  +스물넷:수:3
  +스물다섯:관:1
  +스물다섯:수:4
  +스물두:관:9
  +스물두셋:수:1
  +스물둘:수:3
  +스물서너:관:1
  +스물세:관:4
  +스물셋:수:6
  +스물셋넷:수:1
  +스물아홉:관:2
  +스물아홉:수:3
  +스물여덟:관:3
  +스물여덟:수:3
  +스물여섯:관:1
  +스물여섯:수:1
  +스물일곱:관:5
  +스물일곱:수:3
  +스물하나:수:2
  +스물한:관:10
  +스물한두:관:2
  +스미다:동:25
  +스산하다:형:9
  +스스럼없다:형:2
  +스스럼없어지다:동:1
  +스스럼없이:부:9
  +스스로:명:172
  +스스로:부:351
  +스스슥:부:1
  +스승:명:102
  +스승님:명:5
  +스웨터:명:26
  +스위밍:명:1
  +스위치:명:44
  +스위퍼:명:1
  +스윙:명:1
  +스쵸티:명:1
  +스치다:동:82
  +스카시:명:1
  +스카우트:명:18
  +스카우트되다:동:2
  +스카우트비:명:1
  +스카우트하다:동:4
  +스카이라운지:명:1
  +스카치테이프:명:1
  +스카프:명:5
  +스캐너:명:4
  +스캔들:명:2
  +스커트:명:13
  +스컬:명:2
  +스케이트:명:7
  +스케이트보드:명:1
  +스케이팅:명:22
  +스케일:명:4
  +스케일링:명:1
  +스케줄:명:17
  +스케치:명:7
  +스케치북:명:2
  +스케치하다:동:4
  +스코어:명:1
  +스콜:명:4
  +스쿠버:명:2
  +스쿨:명:6
  +스쿨버스:명:5
  +스크랩:명:14
  +스크랩북:명:1
  +스크랩하다:동:2
  +스크럼:명:2
  +스크럽:명:4
  +스크루:명:3
  +스크린:명:24
  +스크린플레이:명:1
  +스크립터:명:1
  +스키:명:17
  +스키장:명:14
  +스키트:명:1
  +스키화:명:1
  +스킨:명:2
  +스킨스쿠버:명:1
  +스킨케어:명:3
  +스킨케어법:명:1
  +스타:명:135
  +스타덤:명:17
  +스타디움:명:2
  +스타일:명:97
  +스타킹:명:7
  +스타트:명:9
  +스타팅:명:2
  +스타플레이어:명:2
  +스탈린주의:명:1
  +스태그플레이션:명:2
  +스태미나:명:2
  +스태미나식:명:1
  +스태프:명:31
  +스태프진:명:2
  +스택:명:1
  +스탠더드:명:4
  +스탠드:명:5
  +스탠드바:명:2
  +스탠딩:명:4
  +스탠바이:명:1
  +스터디:명:1
  +스테디셀러:명:1
  +스테레오:명:2
  +스테로이드:명:1
  +스테이션:명:1
  +스테이지:명:5
  +스테이크:명:12
  +스테인리스:명:4
  +스텐:명:2
  +스텐트:명:1
  +스템:명:2
  +스텝:명:10
  +스토리:명:28
  +스토브:명:1
  +스토퍼:명:3
  +스톱:명:3
  +스톱되다:동:1
  +스톱하다:동:1
  +스튜던트:명:1
  +스튜디오:명:55
  +스튜어디스:명:8
  +스트라이커:명:11
  +스트라이크:명:3
  +스트라케이션:명:1
  +스트레스:명:154
  +스트레스성:명:1
  +스트레칭:명:1
  +스트로크:명:4
  +스트리트:명:1
  +스트립쇼:명:1
  +스티로폼:명:16
  +스틱:명:6
  +스팀:명:5
  +스파게티:명:9
  +스파이:명:12
  +스파이크:명:1
  +스펀지:명:4
  +스페셜:명:3
  +스페어:명:1
  +스페이스:명:1
  +스페인어:명:3
  +스펙터클:명:1
  +스펙트럼:명:6
  +스포이트:명:3
  +스포츠:명:134
  +스포츠권:명:1
  +스포츠맨:명:4
  +스포츠면:명:1
  +스포츠용품:명:1
  +스포츠적:명:1
  +스포츠카:명:1
  +스포츠하다:동:1
  +스포츠형:명:1
  +스포트라이트:명:1
  +스폰서:명:8
  +스폰지:명:1
  +스폿:명:3
  +스푼:명:7
  +스프레드:명:13
  +스프레드시트:명:4
  +스프레이:명:7
  +스프레이하다:동:1
  +스프링:명:2
  +스피드:명:11
  +스피릿:명:4
  +스피아:명:1
  +스피치:명:1
  +스피커:명:8
  +스피커폰:명:4
  +슬그머니:부:33
  +슬금슬금:부:9
  +슬기:명:20
  +슬기롭다:형:17
  +슬다:동:1
  +슬다:동:7
  +슬라이드:명:5
  +슬라이딩하다:동:1
  +슬라이스:명:5
  +슬라이스하다:동:1
  +슬래브:명:1
  +슬래셔:명:2
  +슬랭:명:1
  +슬럼가:명:1
  +슬럼프:명:3
  +슬렁슬렁:부:1
  +슬레이트:명:3
  +슬로:명:1
  +슬로건:명:11
  +슬롯:명:1
  +슬리브리스:명:1
  +슬리퍼:명:3
  +슬립:명:3
  +슬며시:부:17
  +슬슬:부:20
  +슬쩍:부:36
  +슬쩍슬쩍:부:1
  +슬쩍하다:동:1
  +슬퍼지다:동:2
  +슬퍼하다:동:21
  +슬프다:형:94
  +슬픔:명:75
  +슬피:부:2
  +슬하:명:5
  +슴벅거리다:동:1
  +습격:명:6
  +습격당하다:동:2
  +습격하다:동:5
  +습관:명:129
  +습관성:명:8
  +습관적:관:3
  +습관적:명:8
  +습관화하다:동:1
  +습기:명:1
  +습기:명:22
  +습도:명:8
  +습득:명:7
  +습득되다:동:1
  +습득시키다:동:1
  +습득하다:동:1
  +습득하다:동:11
  +습생:명:1
  +습성:명:11
  +습성화되다:동:1
  +습속:명:8
  +습식:명:1
  +습윤성:명:1
  +습자:명:1
  +습작:명:1
  +습작기:명:2
  +습작하다:동:2
  +습지:명:3
  +습지성:명:1
  +습하다:형:11
  +습합:명:1
  +승:명:1
  +승:명:1
  +승:명:5
  +승:의:4
  +승:의:45
  +승가:명:5
  +승감:명:17
  +승강기:명:3
  +승강대:명:1
  +승강이하다:동:1
  +승강장:명:3
  +승객:명:47
  +승격:명:5
  +승격되다:동:4
  +승격시키다:동:2
  +승격하다:동:1
  +승계:명:22
  +승계권:명:1
  +승계되다:동:2
  +승계설:명:3
  +승계하다:동:9
  +승과:명:2
  +승교:명:6
  +승교바탕:명:3
  +승급:명:4
  +승급분:명:3
  +승낙:명:11
  +승낙하다:동:4
  +승냥이:명:2
  +승려:명:42
  +승려군:명:1
  +승률:명:2
  +승리:명:77
  +승리자:명:7
  +승리하다:동:29
  +승마:명:1
  +승마:명:1
  +승무:명:1
  +승무:명:4
  +승무원:명:6
  +승병:명:5
  +승복:명:3
  +승복하다:동:2
  +승부:명:48
  +승부수:명:3
  +승부욕:명:1
  +승부차기:명:8
  +승부처:명:2
  +승부하다:동:1
  +승산:명:1
  +승상:명:1
  +승선:명:16
  +승선하다:동:30
  +승소:명:24
  +승소하다:동:3
  +승수:명:1
  +승승장구하다:동:3
  +승압기:명:1
  +승용차:명:76
  +승원부:명:1
  +승인:명:27
  +승인:명:3
  +승인서:명:1
  +승인하다:동:12
  +승자:명:12
  +승전가:명:1
  +승전지:명:1
  +승점:명:13
  +승조원:명:23
  +승진:명:56
  +승진되다:동:1
  +승진시키다:동:1
  +승진하다:동:11
  +승차:명:6
  +승차감:명:1
  +승차권:명:1
  +승차하다:동:6
  +승천:명:2
  +승천하다:동:3
  +승통:명:2
  +승패:명:5
  +승하:명:1
  +승하다:형:3
  +승하차:명:1
  +승하하다:동:2
  +승합차:명:2
  +승화:명:14
  +승화되다:동:6
  +승화시키다:동:5
  +승화하다:동:2
  +승희:명:1
  +시:감:3
  +시:명:1
  +시:명:18
  +시:명:2
  +시:명:2
  +시:명:2
  +시:명:3
  +시:명:4
  +시:명:457
  +시:명:80
  +시:의:3
  +시:의:994
  +시가:명:1
  +시가:명:2
  +시가:명:2
  +시가:명:2
  +시가:명:20
  +시가:명:4
  +시가:명:8
  +시가액:명:1
  +시가전:명:4
  +시가지:명:7
  +시가행진:명:1
  +시각:명:182
  +시각:명:20
  +시각:명:53
  +시각적:관:14
  +시각적:명:9
  +시각차:명:4
  +시각화하다:동:6
  +시간:명:1,491
  +시간:의:385
  +시간대:명:24
  +시간론:명:2
  +시간문제:명:6
  +시간성:명:1
  +시간적:관:15
  +시간적:명:9
  +시간제:명:5
  +시간주의적:명:1
  +시간표:명:9
  +시건방:명:1
  +시건방지다:형:3
  +시경:명:3
  +시계:명:135
  +시계:명:3
  +시계:명:6
  +시계추:명:2
  +시계탑:명:1
  +시곗바늘:명:2
  +시골:명:149
  +시골뜨기:명:1
  +시골집:명:9
  +시공:명:18
  +시공:명:26
  +시공간:명:4
  +시공간적:명:1
  +시공권:명:2
  +시공사:명:1
  +시공하다:동:3
  +시구:명:11
  +시국:명:37
  +시궁창:명:1
  +시그널:명:1
  +시극:명:2
  +시극론:명:1
  +시극적:관:1
  +시근벌떡거리다:동:1
  +시금석:명:3
  +시금치:명:21
  +시금치나물:명:1
  +시급:명:10
  +시급하다:형:49
  +시급해지다:동:2
  +시급히:부:17
  +시기:명:368
  +시기:명:48
  +시기:명:7
  +시기:명:9
  +시기다:동:1
  +시기상조:명:11
  +시기상조론:명:1
  +시기심:명:3
  +시기적:명:9
  +시기적절하다:형:1
  +시기하다:동:2
  +시꺼멓다:형:11
  +시끄러워지다:동:2
  +시끄럽다:형:39
  +시끌벅적하다:형:1
  +시끌벅적해지다:동:2
  +시끌시끌하다:형:1
  +시나리오:명:36
  +시나몬:명:6
  +시나브로:부:1
  +시난고난:부:1
  +시내:명:4
  +시내:명:92
  +시내버스:명:11
  +시냇가:명:5
  +시냇물:명:7
  +시너:명:1
  +시네루:명:1
  +시녀:명:9
  +시누:명:1
  +시누이:명:7
  +시늉:명:17
  +시늉하다:동:1
  +시니어:명:1
  +시다:명:3
  +시다:형:13
  +시단:명:12
  +시달:명:2
  +시달되다:동:1
  +시달리다:동:108
  +시달림:명:6
  +시달림하다:동:1
  +시달하다:동:4
  +시답잖다:형:3
  +시대:명:1
  +시대:명:1,396
  +시대극:명:12
  +시대론:명:4
  +시대병:명:1
  +시대사:명:4
  +시대상:명:4
  +시대성:명:1
  +시대적:관:30
  +시대적:명:14
  +시대정신:명:2
  +시대착오:명:1
  +시대착오적:관:3
  +시대착오적:명:7
  +시댁:명:16
  +시도:명:1
  +시도:명:16
  +시도:명:42
  +시도관:명:2
  +시도되다:동:15
  +시도하다:동:88
  +시동:명:9
  +시들:명:1
  +시들다:동:18
  +시들어지다:동:2
  +시들하다:형:2
  +시들해지다:동:7
  +시디:명:1
  +시디:명:18
  +시디:명:4
  +시디롬:명:28
  +시디롬화:명:1
  +시디플레이어:명:1
  +시래기:명:9
  +시래깃국:명:1
  +시러베:명:1
  +시럽:명:9
  +시렁:명:3
  +시레이션:명:2
  +시력:명:1
  +시력:명:13
  +시련:명:42
  +시론:명:3
  +시론:명:3
  +시론적:관:2
  +시론적:명:1
  +시루:명:2
  +시루떡:명:10
  +시류:명:3
  +시르죽다:동:1
  +시름:명:7
  +시름시름:부:2
  +시리다:형:33
  +시리즈:명:148
  +시리즈물:명:2
  +시리즈식:명:1
  +시립:명:13
  +시멘트:명:49
  +시묘살이:명:2
  +시무룩:부:2
  +시무룩하다:형:7
  +시무룩해지다:동:3
  +시무식:명:4
  +시무책:명:1
  +시문:명:3
  +시뮬레이션:명:7
  +시뮬레이터:명:1
  +시민:명:352
  +시민권:명:14
  +시민상:명:1
  +시민성:명:2
  +시민운동:명:2
  +시민적:관:6
  +시발:명:7
  +시발되다:동:1
  +시발역:명:2
  +시발점:명:11
  +시발하다:동:1
  +시방:명:1
  +시방:명:2
  +시방:부:8
  +시범:명:26
  +시범적:명:4
  +시범학교:명:1
  +시보:명:3
  +시부렁대다:동:1
  +시부모:명:16
  +시부모님:명:11
  +시비:명:1
  +시비:명:2
  +시비:명:65
  +시비법:명:1
  +시비지심:명:1
  +시비하다:동:2
  +시빗거리:명:3
  +시뻘겋다:형:7
  +시뻘게지다:동:1
  +시사:명:1
  +시사:명:1
  +시사:명:12
  +시사:명:5
  +시사되다:동:3
  +시사받다:동:1
  +시사성:명:3
  +시사실:명:1
  +시사적:명:4
  +시사점:명:1
  +시사하다:동:66
  +시사회:명:2
  +시사회장:명:1
  +시상:명:1
  +시상:명:2
  +시상:명:4
  +시상식:명:11
  +시상식장:명:1
  +시상하다:동:3
  +시샘:명:3
  +시샘하다:동:3
  +시생대:명:1
  +시선:명:218
  +시설:명:336
  +시설물:명:15
  +시설비:명:2
  +시설하다:동:1
  +시세:명:13
  +시소:명:1
  +시속:명:8
  +시쇄본:명:1
  +시숙:명:1
  +시술:명:17
  +시술가:명:1
  +시술되다:동:1
  +시술법:명:1
  +시술소:명:1
  +시술적:관:1
  +시술하다:동:3
  +시스루:명:1
  +시스템:명:138
  +시시:의:10
  +시시각각:명:6
  +시시껄렁하다:형:1
  +시시닥거리다:동:1
  +시시덕거리다:동:4
  +시시디:명:1
  +시시비비:명:1
  +시시콜콜:부:3
  +시시콜콜하다:형:4
  +시시하다:형:9
  +시식하다:동:2
  +시식회:명:1
  +시신:명:19
  +시신경:명:2
  +시심:명:1
  +시아버님:명:2
  +시아버지:명:3
  +시아이:명:7
  +시안:명:10
  +시앗:명:1
  +시야:명:38
  +시어:명:1
  +시어른:명:2
  +시어머니:명:52
  +시어머님:명:3
  +시어미:명:6
  +시에이:명:2
  +시에이:명:8
  +시에프:명:48
  +시에프계:명:4
  +시엠:명:7
  +시엠에이:명:1
  +시역:명:1
  +시연회:명:1
  +시영:명:2
  +시오디:명:1
  +시왕전:명:1
  +시외:명:17
  +시외버스:명:6
  +시용:명:1
  +시운:명:1
  +시울:명:3
  +시원:명:4
  +시원스럽다:형:12
  +시원스레:부:4
  +시원시원하다:형:5
  +시원적:관:2
  +시원찮다:형:4
  +시원하다:형:120
  +시원해지다:동:6
  +시원해하다:동:1
  +시원히:부:2
  +시월:명:151
  +시위:명:156
  +시위:명:3
  +시위꾼:명:1
  +시위대:명:22
  +시위운동:명:1
  +시위자:명:1
  +시위하다:동:1
  +시음:명:5
  +시음하다:동:1
  +시의:명:6
  +시의성:명:1
  +시의회:명:5
  +시이모:명:1
  +시인:명:252
  +시인:명:4
  +시인적:관:1
  +시인하다:동:18
  +시일:명:30
  +시작:명:157
  +시작:명:3
  +시작되다:동:371
  +시작점:명:4
  +시작종:명:4
  +시작하다:동:1,264
  +시작히다:동:2
  +시장:명:33
  +시장:명:876
  +시장기:명:3
  +시장바구니:명:8
  +시장실:명:1
  +시장적:관:1
  +시장통:명:2
  +시장하다:형:7
  +시장화:명:1
  +시적:관:1
  +시적:관:16
  +시적:명:4
  +시적시적:부:1
  +시전:명:2
  +시전:명:3
  +시절:명:382
  +시점:명:10
  +시점:명:97
  +시접:명:1
  +시정:명:1
  +시정:명:1
  +시정:명:17
  +시정:명:2
  +시정되다:동:4
  +시정신:명:1
  +시정하다:동:19
  +시제품:명:6
  +시조:명:10
  +시조:명:37
  +시조비:명:3
  +시조신:명:3
  +시조제:명:1
  +시종:명:1
  +시종:명:1
  +시종:부:12
  +시종일관:명:10
  +시종하다:동:1
  +시줏돈:명:1
  +시중:명:58
  +시중:명:6
  +시중가:명:2
  +시중들다:동:1
  +시즌:명:50
  +시지:명:1
  +시지:명:4
  +시지각:명:3
  +시지각적:관:1
  +시집:명:42
  +시집:명:52
  +시집가다:동:32
  +시집보내다:동:8
  +시집살이:명:6
  +시집살이시키다:동:2
  +시집살이하다:동:1
  +시집오다:동:11
  +시차:명:13
  +시찰:명:7
  +시찰하다:동:2
  +시책:명:1
  +시책:명:35
  +시천주:명:9
  +시청:명:10
  +시청:명:32
  +시청각:명:8
  +시청각적:관:2
  +시청각적:명:1
  +시청률:명:33
  +시청자:명:86
  +시청층:명:2
  +시청하다:동:10
  +시체:명:40
  +시체실:명:2
  +시쳇말:명:1
  +시쳇소리:명:1
  +시초:명:1
  +시초:명:9
  +시추:명:2
  +시추에이션:명:2
  +시치다:동:1
  +시치미:명:11
  +시침:명:3
  +시침:명:7
  +시커머티티하다:형:1
  +시커멓다:형:23
  +시퀀서:명:1
  +시크:명:1
  +시크하다:형:1
  +시큰거리다:동:1
  +시큰둥하다:형:12
  +시큰시큰:부:1
  +시큰하다:형:2
  +시큼하다:형:1
  +시키다:동:256
  +시테크:명:1
  +시트:명:13
  +시트커버:명:1
  +시트콤:명:2
  +시티:명:1
  +시티아이덴티티:명:1
  +시판:명:14
  +시판되다:동:8
  +시판하다:동:4
  +시퍼렇다:형:14
  +시편:명:1
  +시푸드:명:1
  +시푸르다:형:1
  +시피엠:명:1
  +시피유:명:7
  +시한:명:15
  +시한부:명:5
  +시한폭탄:명:4
  +시합:명:30
  +시합하다:동:8
  +시해:명:3
  +시해되다:동:2
  +시해하다:동:1
  +시행:명:1
  +시행:명:43
  +시행되다:동:41
  +시행령:명:13
  +시행령안:명:1
  +시행일:명:1
  +시행자:명:2
  +시행착오:명:16
  +시행하다:동:58
  +시헌력:명:1
  +시험:명:342
  +시험공부:명:4
  +시험관:명:10
  +시험대:명:1
  +시험되다:동:1
  +시험받다:동:1
  +시험소:명:1
  +시험장:명:4
  +시험적:관:1
  +시험적:명:2
  +시험지:명:11
  +시험하다:동:7
  +시현:명:1
  +시혜:명:2
  +시호:명:1
  +시호:명:2
  +시화:명:1
  +시화:명:1
  +시화전:명:1
  +시황:명:12
  +시효:명:12
  +시효일:명:1
  +식:명:1
  +식:명:1
  +식:명:27
  +식:의:298
  +식견:명:1
  +식견:명:5
  +식곤증:명:1
  +식구:명:147
  +식기:명:20
  +식다:동:51
  +식단:명:16
  +식당:명:164
  +식당가:명:2
  +식도:명:23
  +식도락:명:4
  +식도락가:명:2
  +식도성:명:2
  +식도암:명:2
  +식량:명:1
  +식량:명:115
  +식량난:명:8
  +식록:명:1
  +식료:명:1
  +식료품:명:15
  +식료품비:명:1
  +식료품점:명:2
  +식모:명:8
  +식목일:명:2
  +식문화:명:2
  +식물:명:1
  +식물:명:158
  +식물상:명:5
  +식물성:명:9
  +식물원:명:3
  +식물인간:명:1
  +식물체:명:1
  +식물학:명:1
  +식민:명:30
  +식민성:명:1
  +식민주의:명:4
  +식민지:명:70
  +식민지적:관:3
  +식민지주의:명:2
  +식반:명:29
  +식별:명:3
  +식별되다:동:2
  +식별하다:동:11
  +식부:명:1
  +식부:명:1
  +식비:명:1
  +식빵:명:40
  +식사:명:242
  +식사대:명:1
  +식사량:명:2
  +식사법:명:1
  +식사비:명:2
  +식사하다:동:31
  +식상하다:동:8
  +식생:명:12
  +식생활:명:28
  +식성:명:9
  +식소다:명:1
  +식솔:명:1
  +식수:명:21
  +식수난:명:2
  +식수대:명:1
  +식수원:명:5
  +식순:명:1
  +식습관:명:1
  +식식거리다:동:3
  +식염:명:1
  +식염수:명:4
  +식욕:명:19
  +식용:명:4
  +식용유:명:81
  +식은땀:명:9
  +식음:명:2
  +식음료:명:1
  +식음료부:명:1
  +식읍:명:4
  +식이:명:6
  +식인:명:3
  +식인종:명:1
  +식자기:명:4
  +식장:명:11
  +식장업체:명:1
  +식재:명:2
  +식재되다:동:2
  +식재료:명:2
  +식재하다:동:1
  +식전:명:1
  +식전:명:6
  +식중:명:2
  +식중독:명:12
  +식체험기:명:1
  +식초:명:29
  +식충:명:1
  +식칼:명:5
  +식탁:명:71
  +식판:명:3
  +식품:명:131
  +식품업계:명:3
  +식품점:명:3
  +식품화하다:동:1
  +식혜:명:2
  +식후:명:5
  +식후경:명:3
  +식후행:명:1
  +식히다:동:15
  +신:대:4
  +신:명:1
  +신:명:200
  +신:명:30
  +신:명:4
  +신:명:6
  +신:명:92
  +신간:명:4
  +신갈나무:명:8
  +신개발:명:2
  +신개지:명:1
  +신검:명:2
  +신격:명:1
  +신격화:명:1
  +신격화하다:동:2
  +신경:명:219
  +신경계:명:17
  +신경성:명:5
  +신경외과:명:1
  +신경전:명:10
  +신경제:명:19
  +신경증:명:3
  +신경질:명:10
  +신경질적:명:20
  +신경통:명:10
  +신계몽주의:명:1
  +신고:명:79
  +신고되다:동:4
  +신고받다:동:1
  +신고서:명:11
  +신고식:명:1
  +신고전주의:명:25
  +신고전주의적:관:2
  +신고제:명:2
  +신고증:명:1
  +신고하다:동:61
  +신곡:명:2
  +신공:명:1
  +신공법:명:1
  +신공안:명:1
  +신공안파:명:1
  +신공업:명:1
  +신과학:명:1
  +신관:명:3
  +신교:명:1
  +신교대:명:1
  +신교육:명:4
  +신구:명:2
  +신국제:명:2
  +신군부:명:4
  +신궁:명:2
  +신규:명:49
  +신규성:명:3
  +신그래픽:명:1
  +신극:명:5
  +신극사:명:15
  +신금:명:2
  +신기:명:1
  +신기:명:1
  +신기:명:2
  +신기:명:4
  +신기다:동:2
  +신기록:명:4
  +신기루:명:2
  +신기술:명:9
  +신기원:명:2
  +신기전:명:1
  +신기하다:형:35
  +신기하다:형:50
  +신기해하다:동:4
  +신년:명:8
  +신년맞이:명:1
  +신년사:명:16
  +신념:명:48
  +신노정:명:1
  +신농정:명:1
  +신다:동:78
  +신다위니즘:명:1
  +신당:명:8
  +신당론:명:1
  +신대:명:1
  +신대륙:명:3
  +신데렐라:명:3
  +신도:명:17
  +신도시:명:33
  +신돌:명:1
  +신동:명:2
  +신드롬:명:4
  +신들리다:동:2
  +신들메:명:1
  +신딸:명:1
  +신랄하다:형:4
  +신랄히:부:1
  +신랑:명:65
  +신랑감:명:4
  +신령:명:6
  +신령스럽다:형:6
  +신령하다:형:20
  +신록:명:3
  +신뢰:명:43
  +신뢰감:명:11
  +신뢰도:명:17
  +신뢰받다:동:3
  +신뢰성:명:16
  +신뢰하다:동:21
  +신르네상스:명:1
  +신마르크스주의:명:1
  +신마르크스주의적:관:8
  +신맛:명:6
  +신망:명:3
  +신망도:명:1
  +신명:명:1
  +신명:명:1
  +신명:명:2
  +신명:명:20
  +신모델:명:1
  +신무용:명:17
  +신무용사:명:1
  +신문:명:21
  +신문:명:412
  +신문고:명:1
  +신문고:명:4
  +신문국장:명:1
  +신문명:명:1
  +신문명:명:1
  +신문물:명:1
  +신문사:명:33
  +신문업계:명:1
  +신문용지:명:1
  +신문장이:명:1
  +신문지:명:36
  +신문하다:동:2
  +신문학:명:10
  +신문화:명:1
  +신물:명:4
  +신물질:명:2
  +신미술:명:1
  +신미양요:명:1
  +신민속:명:1
  +신민족주의:명:4
  +신바람:명:15
  +신발:명:99
  +신발명:명:1
  +신발장:명:4
  +신발짝:명:1
  +신방:명:1
  +신법:명:1
  +신변:명:14
  +신변잡기:명:2
  +신병:명:1
  +신병:명:1
  +신병:명:14
  +신병:명:4
  +신병:명:5
  +신보수주의:명:1
  +신보수주의적:관:1
  +신봉:명:1
  +신봉되다:동:3
  +신봉자:명:1
  +신봉하다:동:12
  +신부:명:24
  +신부:명:94
  +신북구:명:1
  +신분:명:102
  +신분관:명:1
  +신분적:관:4
  +신분적:명:3
  +신분제:명:11
  +신분증:명:12
  +신붓감:명:3
  +신비:명:35
  +신비감:명:4
  +신비롭다:형:14
  +신비성:명:1
  +신비스럽다:형:10
  +신비적:관:6
  +신비적:명:2
  +신비주의:명:4
  +신비주의성:명:1
  +신비주의자:명:1
  +신비주의적:관:2
  +신비주의적:명:1
  +신비하다:형:18
  +신비화:명:1
  +신비화하다:동:2
  +신빙성:명:11
  +신빙하다:동:1
  +신사:명:1
  +신사:명:18
  +신사고:명:3
  +신사도:명:1
  +신사복:명:5
  +신사업:명:2
  +신사적:명:1
  +신사회:명:1
  +신산스럽다:형:1
  +신산업:명:1
  +신상:명:5
  +신상:명:8
  +신상명세서:명:3
  +신상품:명:4
  +신생:명:14
  +신생대:명:1
  +신생아:명:9
  +신석기:명:14
  +신석기인:명:1
  +신선:명:21
  +신선로:명:1
  +신선미:명:1
  +신선술:명:1
  +신선하다:형:80
  +신설:명:35
  +신설되다:동:11
  +신설하다:동:19
  +신성:명:1
  +신성:명:1
  +신성불가침:명:2
  +신성성:명:1
  +신성스럽다:형:1
  +신성하다:형:25
  +신세:명:17
  +신세:명:44
  +신세계:명:8
  +신세대:명:39
  +신세대적:명:1
  +신세대형:명:2
  +신소설:명:4
  +신소재:명:11
  +신속:명:6
  +신속하다:형:30
  +신속히:부:13
  +신승하다:동:2
  +신시:명:1
  +신시:명:1
  +신시:명:3
  +신시가지:명:4
  +신시사이저:명:3
  +신시장:명:1
  +신식:명:4
  +신식민지:명:4
  +신신당부:명:1
  +신신당부하다:동:1
  +신실:명:1
  +신안보:명:2
  +신앙:명:92
  +신앙되다:동:2
  +신앙생활:명:2
  +신앙심:명:2
  +신앙인:명:3
  +신앙적:명:4
  +신앙하다:동:1
  +신약:명:3
  +신어:명:3
  +신어머니:명:1
  +신여당:명:1
  +신여성:명:11
  +신역:명:3
  +신연극:명:2
  +신예:명:11
  +신왕:명:1
  +신용:명:95
  +신용도:명:1
  +신우익:명:1
  +신원:명:29
  +신원:명:3
  +신위:명:2
  +신유:명:1
  +신유학:명:1
  +신음:명:18
  +신음하다:동:10
  +신의:명:9
  +신인:명:46
  +신인사:명:1
  +신인왕:명:2
  +신인왕전:명:1
  +신임:명:25
  +신임:명:7
  +신임하다:동:1
  +신입:명:14
  +신입생:명:48
  +신입생맞이:명:1
  +신자:명:27
  +신작:명:11
  +신작로:명:9
  +신장:명:17
  +신장:명:2
  +신장:명:22
  +신장:명:3
  +신장개업:명:1
  +신장기:명:4
  +신장되다:동:1
  +신장률:명:4
  +신장세:명:1
  +신장시키다:동:7
  +신장염:명:2
  +신장하다:동:3
  +신재벌:명:3
  +신저:명:1
  +신적:관:1
  +신적:명:2
  +신전:명:4
  +신접살림:명:3
  +신정:명:10
  +신정맞이:명:1
  +신정부:명:2
  +신정치:명:1
  +신제품:명:30
  +신조:명:4
  +신조류:명:1
  +신조어:명:5
  +신종:명:14
  +신좌익:명:1
  +신주:명:2
  +신주:명:3
  +신주머니:명:3
  +신중:명:12
  +신중간:명:1
  +신중론:명:1
  +신중론자:명:1
  +신중성:명:1
  +신중하다:형:30
  +신중히:부:14
  +신증설:명:2
  +신지:명:1
  +신진:명:33
  +신진대사:명:7
  +신진화론:명:1
  +신진화론자:명:1
  +신진화주의:명:1
  +신질서:명:1
  +신참:명:3
  +신청:명:91
  +신청권:명:1
  +신청되다:동:1
  +신청받다:동:2
  +신청서:명:21
  +신청인:명:2
  +신청자:명:2
  +신청하다:동:49
  +신체:명:190
  +신체검사:명:3
  +신체발부:명:4
  +신체시:명:1
  +신체장애:명:4
  +신체장애자:명:1
  +신체적:관:19
  +신체적:명:16
  +신총:명:1
  +신축:명:14
  +신축년:명:1
  +신축되다:동:1
  +신축비:명:1
  +신축성:명:4
  +신축적:명:1
  +신축하다:동:4
  +신춘:명:1
  +신춘문예:명:7
  +신출내기:명:1
  +신칸트주의:명:6
  +신탁:명:1
  +신탁:명:30
  +신탁하다:동:1
  +신토불이:명:2
  +신통력:명:1
  +신통술:명:1
  +신통하다:형:23
  +신트림:명:1
  +신파극:명:6
  +신파극단:명:1
  +신파극적:관:3
  +신파적:관:5
  +신판:명:1
  +신페미니즘:명:1
  +신평야:명:1
  +신푸녕스럽다:형:1
  +신품:명:1
  +신풍:명:2
  +신풍속:명:1
  +신하:명:29
  +신학:명:16
  +신학기:명:5
  +신학년도:명:1
  +신학문:명:6
  +신학생:명:1
  +신학자:명:1
  +신학적:관:4
  +신항만:명:1
  +신해혁명:명:1
  +신협:명:5
  +신형:명:5
  +신호:명:73
  +신호기:명:4
  +신호등:명:28
  +신호탄:명:2
  +신호하다:동:1
  +신혼:명:11
  +신혼부부:명:18
  +신혼살림:명:3
  +신혼여행:명:28
  +신혼여행지:명:3
  +신화:명:145
  +신화시대:명:1
  +신화적:관:5
  +신화적:명:3
  +신화학자:명:1
  +신효자전:명:1
  +신흥:명:18
  +싣다:동:150
  +실:명:1
  +실:명:28
  +실:명:3
  +실:명:8
  +실각:명:2
  +실각되다:동:1
  +실각하다:동:2
  +실감:명:35
  +실감되다:동:3
  +실감하다:동:38
  +실개천:명:4
  +실거래:명:4
  +실격되다:동:1
  +실계:명:1
  +실고추:명:3
  +실과:명:1
  +실구입:명:1
  +실국장:명:1
  +실권:명:12
  +실권자:명:3
  +실금:명:1
  +실긋:부:1
  +실기:명:12
  +실기실:명:1
  +실기하다:동:1
  +실낱같다:형:4
  +실낱같이:부:1
  +실내:명:92
  +실내등:명:3
  +실내악단:명:1
  +실내용품:명:1
  +실내조명:명:1
  +실내화:명:1
  +실눈:명:4
  +실답다:형:1
  +실답증:명:1
  +실똥:명:1
  +실똥물:명:1
  +실뜨기:명:1
  +실랑이:명:17
  +실랑이하다:동:6
  +실력:명:64
  +실력자:명:11
  +실력파:명:1
  +실례:명:14
  +실례:명:23
  +실례하다:동:7
  +실로:부:91
  +실록:명:7
  +실루엣:명:5
  +실룩거리다:동:3
  +실룩샐룩:부:1
  +실리:명:8
  +실리다:동:109
  +실리적:명:1
  +실리콘:명:1
  +실리콘:명:7
  +실린더:명:11
  +실마리:명:16
  +실망:명:35
  +실망감:명:8
  +실망스러워하다:동:1
  +실망스럽다:형:5
  +실망시키다:동:5
  +실망투성이:명:1
  +실망하다:동:34
  +실명:명:19
  +실명:명:3
  +실명인:명:2
  +실명제:명:199
  +실명화:명:2
  +실명화하다:동:1
  +실무:명:46
  +실무자:명:16
  +실무적:관:1
  +실무적:명:2
  +실무진:명:3
  +실물:명:26
  +실바람:명:1
  +실밥:명:10
  +실버폰:명:7
  +실보관:명:1
  +실비:명:7
  +실비명:명:1
  +실사:명:13
  +실사구시:명:1
  +실사례:명:1
  +실사하다:동:1
  +실사회:명:1
  +실상:명:11
  +실상:명:73
  +실상:부:21
  +실상적:명:1
  +실새풀:명:4
  +실생활:명:8
  +실선:명:6
  +실성:명:1
  +실성기:명:1
  +실성실성하다:형:1
  +실성하다:동:5
  +실세:명:22
  +실소:명:5
  +실소하다:동:1
  +실속:명:6
  +실수:명:149
  +실수담:명:13
  +실수왕:명:1
  +실수요자:명:2
  +실수율:명:1
  +실수하다:동:16
  +실습:명:65
  +실습림:명:1
  +실습비:명:1
  +실습실:명:1
  +실습지:명:1
  +실습하다:동:8
  +실시:명:118
  +실시간:명:1
  +실시되다:동:102
  +실시론:명:2
  +실시설:명:1
  +실시하다:동:282
  +실신하다:동:2
  +실실:부:4
  +실실이:부:1
  +실어증:명:5
  +실업:명:10
  +실업:명:13
  +실업계:명:6
  +실업고:명:1
  +실업률:명:1
  +실업자:명:12
  +실업학교:명:1
  +실없다:형:7
  +실없이:부:1
  +실연:명:2
  +실연:명:3
  +실연되다:동:1
  +실연주의:명:1
  +실오라기:명:2
  +실온:명:2
  +실외:명:5
  +실용:명:7
  +실용서:명:1
  +실용성:명:15
  +실용적:관:4
  +실용적:명:14
  +실용주의:명:2
  +실용화:명:6
  +실용화되다:동:4
  +실용화하다:동:1
  +실유:명:1
  +실은:부:49
  +실의:명:5
  +실이익:명:1
  +실익:명:5
  +실작업:명:1
  +실장:명:45
  +실장단:명:1
  +실재:명:21
  +실재론자:명:1
  +실재성:명:1
  +실재하다:동:14
  +실적:명:46
  +실전:명:10
  +실점:명:4
  +실정:명:101
  +실정:명:6
  +실정법:명:1
  +실제:명:123
  +실제:명:4
  +실제:부:55
  +실제로:부:260
  +실제성:명:1
  +실제적:관:7
  +실제적:명:12
  +실조:명:1
  +실족사:명:2
  +실족사하다:동:2
  +실족하다:동:1
  +실존:명:29
  +실존적:관:26
  +실존적:명:3
  +실존주의:명:9
  +실존주의자:명:1
  +실존주의적:관:3
  +실존주의적:명:1
  +실존하다:동:2
  +실종:명:8
  +실종되다:동:12
  +실증:명:14
  +실증적:관:11
  +실증적:명:14
  +실증주의:명:20
  +실증주의론자:명:1
  +실증주의자:명:4
  +실증주의적:관:25
  +실증하다:동:5
  +실지:명:1
  +실지:부:2
  +실지로:부:7
  +실직:명:3
  +실직자:명:2
  +실직하다:동:1
  +실질:명:12
  +실질적:관:16
  +실질적:명:53
  +실쭉:부:1
  +실채:명:3
  +실책:명:2
  +실천:명:238
  +실천가:명:1
  +실천되다:동:10
  +실천성:명:2
  +실천자:명:1
  +실천적:관:37
  +실천적:명:12
  +실천하다:동:116
  +실체:명:86
  +실체적:관:2
  +실체화하다:동:1
  +실추:명:2
  +실추되다:동:6
  +실추시키다:동:3
  +실측하다:동:1
  +실컷:부:36
  +실크:명:12
  +실타래:명:5
  +실탄:명:2
  +실태:명:67
  +실토하다:동:4
  +실파:명:37
  +실팍하다:형:5
  +실패:명:3
  +실패:명:63
  +실패담:명:1
  +실패작:명:4
  +실패하다:동:71
  +실핏줄:명:1
  +실하다:형:4
  +실학:명:4
  +실학사상:명:3
  +실학자:명:8
  +실학파:명:1
  +실행:명:21
  +실행기:명:2
  +실행되다:동:13
  +실행시키다:동:1
  +실행하다:동:21
  +실행형:명:1
  +실향:명:2
  +실험:명:115
  +실험극:명:2
  +실험기:명:1
  +실험당하다:동:1
  +실험대:명:2
  +실험도:명:1
  +실험되다:동:1
  +실험복:명:3
  +실험성:명:2
  +실험실:명:11
  +실험적:관:8
  +실험적:명:4
  +실험하다:동:13
  +실험학교:명:5
  +실현:명:57
  +실현되다:동:38
  +실현성:명:6
  +실현시키다:동:11
  +실현자:명:1
  +실현하다:동:54
  +실형:명:5
  +실화:명:1
  +실황:명:13
  +실효:명:12
  +실효되다:동:3
  +실효성:명:14
  +실효적:관:1
  +실히:부:1
  +싫다:형:281
  +싫어지다:동:15
  +싫어하다:동:81
  +싫증:명:12
  +심:명:1
  +심:명:6
  +심각:명:5
  +심각성:명:21
  +심각하다:형:211
  +심각해지다:동:17
  +심겨지다:동:1
  +심경:명:20
  +심고:명:5
  +심고하다:동:1
  +심근:명:4
  +심금:명:2
  +심급:명:2
  +심기:명:10
  +심기일전:명:5
  +심난하다:형:1
  +심다:동:173
  +심대하다:동:1
  +심도:명:10
  +심드렁하다:형:6
  +심란스럽다:형:1
  +심란하다:형:12
  +심란해지다:동:1
  +심란해하다:동:1
  +심려:명:4
  +심령:명:1
  +심령술사:명:1
  +심리:명:5
  +심리:명:89
  +심리극:명:2
  +심리도:명:1
  +심리적:관:33
  +심리적:명:27
  +심리전:명:2
  +심리학:명:17
  +심리학과:명:3
  +심리학자:명:4
  +심리학적:관:7
  +심리학적:명:3
  +심마니:명:1
  +심모원려:명:1
  +심문:명:14
  +심문받다:동:2
  +심문자:명:4
  +심문하다:동:4
  +심미:명:3
  +심미성:명:2
  +심미안:명:1
  +심미적:관:26
  +심미적:명:5
  +심박출량:명:2
  +심벌:명:3
  +심법:명:1
  +심보:명:8
  +심복:명:3
  +심부름:명:29
  +심부름꾼:명:1
  +심부름하다:동:2
  +심부전증:명:1
  +심사:명:19
  +심사:명:58
  +심사과장:명:1
  +심사숙고하다:동:6
  +심사하다:동:6
  +심산:명:4
  +심상:명:1
  +심상:명:2
  +심상과:명:1
  +심상스럽다:형:1
  +심상하다:형:22
  +심상히:부:1
  +심성:명:32
  +심성암:명:1
  +심술:명:12
  +심술궂다:형:2
  +심신:명:19
  +심실중격:명:2
  +심심찮다:형:11
  +심심파적:명:1
  +심심풀이:명:2
  +심심하다:형:1
  +심심하다:형:1
  +심심하다:형:26
  +심심해지다:동:1
  +심심해하다:동:2
  +심야:명:12
  +심약하다:형:3
  +심어지다:동:6
  +심연:명:7
  +심오하다:형:11
  +심원하다:형:2
  +심음:명:2
  +심의:명:1
  +심의:명:30
  +심의관:명:4
  +심의되다:동:1
  +심의료:명:1
  +심의실:명:1
  +심의하다:동:4
  +심인성:명:1
  +심잡음:명:1
  +심장:명:107
  +심장병:명:5
  +심장부:명:3
  +심장성:명:1
  +심장하다:형:1
  +심장학:명:1
  +심적:관:5
  +심적:명:4
  +심정:명:89
  +심정적:관:1
  +심정적:명:4
  +심제:의:1
  +심줄:명:2
  +심증:명:6
  +심지:명:6
  +심지어:부:121
  +심취되다:동:1
  +심취하다:동:5
  +심층:명:8
  +심층적:관:1
  +심층적:명:2
  +심통:명:3
  +심통스럽다:형:1
  +심판:명:49
  +심판권:명:2
  +심판대:명:1
  +심판받다:동:4
  +심판적:관:1
  +심판하다:동:11
  +심폐:명:4
  +심포니:명:2
  +심포지엄:명:9
  +심플렉스:명:2
  +심하다:형:285
  +심해:명:1
  +심해지다:동:34
  +심혈:명:11
  +심호흡:명:3
  +심호흡하다:동:2
  +심혼:명:3
  +심화:명:1
  +심화:명:10
  +심화되다:동:39
  +심화시키다:동:12
  +심화하다:동:5
  +심회:명:1
  +심히:부:7
  +십:관:119
  +십:수:4
  +십구:관:5
  +십년지계:명:1
  +십만:관:3
  +십몇:관:1
  +십부제:명:1
  +십분:부:8
  +십사:관:3
  +십삼:관:2
  +십상:명:35
  +십상:부:1
  +십성:명:1
  +십수:관:9
  +십수만:관:1
  +십시일반:명:2
  +십오:관:16
  +십육:관:3
  +십육국:명:1
  +십육밀리:명:1
  +십육위제:명:1
  +십육절지:명:1
  +십이:관:9
  +십이:수:1
  +십이륙:명:5
  +십이십이:명:15
  +십이월:명:162
  +십이지:명:1
  +십이지:명:1
  +십이지장:명:1
  +십일:관:1
  +십일월:명:104
  +십자:명:5
  +십자가:명:9
  +십자군:명:3
  +십장:명:4
  +십장가:명:1
  +십장생:명:1
  +십장질:명:1
  +십전대보탕:명:1
  +십전대보환:명:1
  +십정:명:1
  +십주구리:명:1
  +십중팔구:명:7
  +십진법:명:1
  +십찰:명:1
  +십칠:관:1
  +십팔:감:1
  +십팔:관:13
  +십현:명:1
  +싯누렇다:형:1
  +싱겁다:형:18
  +싱그러워지다:동:1
  +싱그럽다:형:16
  +싱글:명:7
  +싱글거리다:동:2
  +싱글벙글:부:4
  +싱글벙글거리다:동:1
  +싱글벙글하다:동:2
  +싱긋:부:3
  +싱긋이:부:3
  +싱숭생숭해지다:동:2
  +싱싱:부:3
  +싱싱하다:형:47
  +싱싱해지다:동:1
  +싱싱히:부:1
  +싱크대:명:4
  +싱크로나이즈드:명:1
  +싶다:보:1,527
  +싶어지다:보:32
  +싸가지:명:9
  +싸개통:명:1
  +싸고돌다:동:2
  +싸구려:감:3
  +싸구려:명:23
  +싸그리:부:2
  +싸낙배기:명:1
  +싸늘하다:형:26
  +싸다:동:104
  +싸다:동:13
  +싸다:형:1
  +싸다:형:2
  +싸다:형:97
  +싸돌아다니다:동:3
  +싸라기:명:2
  +싸락눈:명:2
  +싸리:명:3
  +싸리꽃:명:2
  +싸리나무:명:2
  +싸리문:명:1
  +싸리비:명:1
  +싸매다:동:7
  +싸안다:동:3
  +싸우다:동:221
  +싸움:명:165
  +싸움꾼:명:2
  +싸움박질:명:1
  +싸움질:명:3
  +싸움터:명:6
  +싸움판:명:3
  +싸움하다:동:2
  +싸이다:동:19
  +싸잡다:동:2
  +싸잡히다:동:2
  +싸지다:동:3
  +싸지르다:동:1
  +싸지르다:동:1
  +싸지르다:동:2
  +싸하다:형:3
  +싹:명:46
  +싹:부:17
  +싹둑:부:5
  +싹둑싹둑:부:1
  +싹수:명:4
  +싹수없다:형:1
  +싹싹:부:7
  +싹싹하다:형:2
  +싹쓸이:명:5
  +싹쓸이론:명:1
  +싹쓸이하다:동:1
  +싹트다:동:13
  +싼값:명:20
  +쌀:명:314
  +쌀가게:명:4
  +쌀가루:명:1
  +쌀가마니:명:1
  +쌀값:명:7
  +쌀겨:명:2
  +쌀농사:명:11
  +쌀뒤주:명:2
  +쌀뜨물:명:9
  +쌀말:명:1
  +쌀밥:명:12
  +쌀벌레:명:4
  +쌀보리:명:2
  +쌀쌀맞다:형:1
  +쌀쌀하다:형:6
  +쌀쌀해지다:동:2
  +쌀알:명:16
  +쌀장사:명:1
  +쌀장수:명:1
  +쌀집:명:2
  +쌀찻독:명:1
  +쌀통:명:1
  +쌀풀:명:3
  +쌈:명:2
  +쌈:명:3
  +쌈박질:명:2
  +쌈박하다:형:1
  +쌈장:명:1
  +쌈질:명:1
  +쌈하다:동:4
  +쌉싸래하다:형:1
  +쌉쌀하다:형:2
  +쌍:감:4
  +쌍:명:31
  +쌍가락지:명:1
  +쌍곡선:명:1
  +쌍과부:명:1
  +쌍글하다:형:2
  +쌍글해지다:동:1
  +쌍꺼풀:명:7
  +쌍놈:명:1
  +쌍두:명:1
  +쌍둥이:명:37
  +쌍둥이자리:명:1
  +쌍둥이좌:명:1
  +쌍무:명:11
  +쌍무적:관:2
  +쌍무적:명:1
  +쌍무지개:명:1
  +쌍문초:명:2
  +쌍발:명:2
  +쌍발기:명:1
  +쌍방:명:7
  +쌍방울:명:3
  +쌍방적:관:1
  +쌍벽:명:3
  +쌍불:명:1
  +쌍생아:명:1
  +쌍수:명:4
  +쌍스럽다:형:1
  +쌍심지:명:1
  +쌍쌍:명:5
  +쌍쌍이:부:1
  +쌍안경:명:1
  +쌍엽:명:1
  +쌍태:명:2
  +쌍포:명:1
  +쌓다:동:150
  +쌓다:보:8
  +쌓여지다:동:1
  +쌓이다:동:162
  +쌕쌕거리다:동:1
  +쌕쌕이:명:2
  +쌜기죽대다:동:1
  +쌩긋:부:2
  +쌩쌩:부:2
  +쌩쌩거리다:동:1
  +써내다:동:11
  +써넣다:동:7
  +써늘하다:형:3
  +써먹다:동:8
  +써지다:동:7
  +썩:부:30
  +썩다:동:72
  +썩어지다:동:1
  +썩이다:동:17
  +썩히다:동:3
  +썰다:동:2
  +썰다:동:208
  +썰렁:명:1
  +썰렁증:명:1
  +썰렁하다:형:31
  +썰렁해하다:동:2
  +썰매:명:8
  +썰매장:명:3
  +썰물:명:10
  +썸뻑:부:1
  +쎄:명:1
  +쏘:명:1
  +쏘다:동:89
  +쏘다니다:동:11
  +쏘삭거리다:동:1
  +쏘시개:명:1
  +쏘아대다:동:1
  +쏘아보다:동:18
  +쏘아붙이다:동:9
  +쏘이다:동:17
  +쏘이다:동:7
  +쏙:부:21
  +쏙닥쏙닥:부:1
  +쏙독새:명:3
  +쏙쏙:부:3
  +쏜살:명:1
  +쏜살같이:부:10
  +쏟다:동:92
  +쏟아지다:동:116
  +쏠다:동:1
  +쏠리다:동:31
  +쏠쏠하다:형:1
  +쏴:부:5
  +쏴붙이다:동:1
  +쐐기:명:8
  +쐐기:명:8
  +쐬다:동:22
  +쐬주:명:3
  +쑤군대다:동:4
  +쑤군덕거리다:동:1
  +쑤다:동:24
  +쑤시다:동:17
  +쑤시다:동:19
  +쑥:명:1
  +쑥:명:20
  +쑥:부:14
  +쑥갓:명:10
  +쑥국:명:1
  +쑥대머리:명:3
  +쑥대밭:명:1
  +쑥덕거리다:동:1
  +쑥덕공론:명:1
  +쑥덕쑥덕:명:1
  +쑥덕쑥덕하다:동:1
  +쑥떡:명:3
  +쑥밭:명:1
  +쑥버무리:명:2
  +쑥부쟁이:명:10
  +쑥새:명:2
  +쑥색:명:1
  +쑥스러워하다:동:2
  +쑥스럽다:형:35
  +쑥쑥:부:6
  +쑬쑬히:부:1
  +쑹덩쑹덩:부:2
  +쓰개치마:명:1
  +쓰기:명:2
  +쓰다:동:1,093
  +쓰다:동:1,119
  +쓰다:동:124
  +쓰다:형:14
  +쓰다듬다:동:35
  +쓰디쓰다:형:2
  +쓰라려지다:동:1
  +쓰라리다:형:20
  +쓰라림:명:2
  +쓰러뜨리다:동:4
  +쓰러지다:동:83
  +쓰레기:명:215
  +쓰레기장:명:11
  +쓰레기통:명:21
  +쓰레기투성이:명:1
  +쓰르라미:명:1
  +쓰리꾼:명:8
  +쓰리다:형:12
  +쓰리보이:명:1
  +쓰벌:감:1
  +쓰여지다:동:24
  +쓰이다:동:169
  +쓰이다:동:22
  +쓰임새:명:11
  +쓱:부:14
  +쓱쓱:부:6
  +쓴맛:명:16
  +쓴웃음:명:6
  +쓸개:명:6
  +쓸까스르다:동:1
  +쓸다:동:43
  +쓸데없다:형:24
  +쓸데없이:부:18
  +쓸리다:동:6
  +쓸모:명:12
  +쓸모없다:형:9
  +쓸모없어지다:동:1
  +쓸모없이:부:1
  +쓸쓸하다:형:45
  +쓸쓸해지다:동:6
  +쓸쓸히:부:4
  +쓸어내리다:동:4
  +쓸어버리다:동:1
  +쓸어안다:동:3
  +씀바귀:명:1
  +씀벅거리다:동:2
  +씀씀이:명:9
  +씁쓰레:부:1
  +씁쓰레하다:형:2
  +씁쓸하다:형:17
  +씁쓸해지다:동:1
  +씁쓸해하다:동:1
  +씌다:동:1
  +씌다:동:2
  +씌다:동:4
  +씌다:동:8
  +씌어지다:동:31
  +씌우다:동:32
  +씌워지다:동:2
  +씨:감:18
  +씨:명:60
  +씨:의:2,920
  +씨근거리다:동:2
  +씨근씨근:부:1
  +씨끄럽다:형:1
  +씨눈:명:1
  +씨름:명:34
  +씨름판:명:2
  +씨름하다:동:8
  +씨받이:명:2
  +씨부렁거리다:동:1
  +씨뿌리기:명:1
  +씨알머리:명:1
  +씨암탉:명:1
  +씨앗:명:29
  +씨억씨억:부:2
  +씨족:명:22
  +씨족제:명:2
  +씨종:명:1
  +씨팔:감:19
  +씩:부:16
  +씩씩거리다:동:4
  +씩씩대다:동:4
  +씩씩하다:형:28
  +씰룩거리다:동:3
  +씹다:동:70
  +씹새끼:명:4
  +씹어뱉다:동:1
  +씹주구리하다:형:2
  +씹퉁:명:1
  +씹히다:동:11
  +씻겨지다:동:1
  +씻기다:동:15
  +씻기다:동:17
  +씻기우다:동:1
  +씻나락:명:2
  +씻다:동:236
  +씽씽:부:2
  +아:감:638
  +아:명:3
  +아가:감:7
  +아가:명:6
  +아가미:명:4
  +아가씨:명:87
  +아가페적:명:1
  +아고산:명:2
  +아관:명:1
  +아교:명:2
  +아구:명:1
  +아구통:명:2
  +아국:명:1
  +아군:명:2
  +아궁이:명:14
  +아귀:명:3
  +아귀:명:3
  +아귀다툼:명:2
  +아귀힘:명:1
  +아그:명:3
  +아그배나무:명:2
  +아금받다:형:1
  +아기:명:351
  +아기씨:명:4
  +아기자기하다:형:9
  +아까:명:44
  +아까:부:168
  +아까시:명:1
  +아까워하다:동:1
  +아깝다:형:54
  +아끼다:동:117
  +아낌없다:형:2
  +아낌없이:부:5
  +아나운서:명:247
  +아나운서실:명:7
  +아나운스:명:1
  +아나운스멘트:명:2
  +아낙:명:15
  +아낙:명:3
  +아낙네:명:22
  +아날로그:명:1
  +아내:명:486
  +아내상:명:1
  +아냐:감:57
  +아녀자:명:1
  +아뇨:감:24
  +아늑하다:형:11
  +아니:감:284
  +아니:부:270
  +아니꼽다:형:8
  +아니다:지:6,245
  +아니리:명:1
  +아니야:감:38
  +아니요:감:88
  +아니하다:보:120
  +아담하다:형:13
  +아동:명:13
  +아동기:명:4
  +아동용:명:4
  +아동용품:명:1
  +아동학자:명:1
  +아둔:명:1
  +아둔패기:명:1
  +아둔하다:형:3
  +아듀:감:2
  +아드님:명:4
  +아드득:부:1
  +아득바득:부:1
  +아득바득하다:동:1
  +아득하다:형:39
  +아득해지다:동:1
  +아득히:부:10
  +아들:명:640
  +아들내미:명:2
  +아들놈:명:1
  +아들딸:명:8
  +아들아이:명:1
  +아들애:명:3
  +아들자식:명:1
  +아등바등:부:2
  +아따:감:14
  +아뜩하다:형:2
  +아람:명:1
  +아랍어:명:1
  +아랑곳:명:6
  +아랑곳없이:부:15
  +아랑곳하다:동:20
  +아래:명:2
  +아래:명:450
  +아래뜸:명:1
  +아래옷:명:1
  +아래위:명:5
  +아래윗집:명:3
  +아래쪽:명:24
  +아래층:명:12
  +아래턱:명:1
  +아래턱뼈:명:1
  +아랫것:명:2
  +아랫녘:명:2
  +아랫니:명:1
  +아랫단:명:2
  +아랫도리:명:16
  +아랫돌:명:3
  +아랫마을:명:3
  +아랫면:명:14
  +아랫목:명:9
  +아랫몸:명:1
  +아랫물:명:2
  +아랫방:명:4
  +아랫배:명:26
  +아랫부분:명:9
  +아랫사람:명:21
  +아랫입술:명:6
  +아랫자리:명:1
  +아랫집:명:3
  +아량:명:8
  +아련하다:형:16
  +아련히:부:4
  +아령:명:1
  +아로새겨지다:동:2
  +아로새기다:동:2
  +아로스콘폴로:명:1
  +아롱:부:1
  +아롱다롱:부:1
  +아롱이다롱이:명:1
  +아롱지다:동:1
  +아뢰다:동:5
  +아류화시키다:동:1
  +아르바이트:명:40
  +아르바이트생:명:1
  +아르바이트하다:동:3
  +아르오티시:명:3
  +아르케:명:1
  +아르케익:명:5
  +아르피엠:명:1
  +아른거리다:동:4
  +아른아른하다:동:1
  +아른히:부:1
  +아름:의:11
  +아름다워지다:동:7
  +아름답다:형:586
  +아름드리:명:3
  +아름드리나무:명:1
  +아름아름:부:1
  +아리다:형:10
  +아리땁다:형:6
  +아리랑:명:3
  +아리송하다:형:3
  +아릿아릿하다:형:1
  +아릿하다:형:4
  +아마:명:1
  +아마:명:3
  +아마:부:294
  +아마겟돈:명:1
  +아마도:부:102
  +아마릴리스:명:5
  +아마추어:명:20
  +아마추어식:명:1
  +아메리칸드림:명:2
  +아메바:명:2
  +아몬드:명:1
  +아무:관:288
  +아무:대:248
  +아무개:대:42
  +아무거:명:7
  +아무것:명:156
  +아무래도:부:113
  +아무러하다:형:1
  +아무런:관:218
  +아무렇다:형:75
  +아무려나:감:1
  +아무려면:감:5
  +아무렴:감:5
  +아무리:부:315
  +아무쪼록:부:4
  +아무케나:불:1
  +아무튼:부:70
  +아물거리다:동:2
  +아물다:동:1
  +아물리다:동:1
  +아물아물하다:동:1
  +아미노산:명:3
  +아미타불:명:4
  +아미타여래:명:1
  +아민:명:1
  +아바이:명:2
  +아방가르드:명:2
  +아버님:명:73
  +아버지:명:1,165
  +아범:명:2
  +아부:명:6
  +아부지:명:5
  +아부하다:동:3
  +아비:명:31
  +아비규환:명:1
  +아빠:명:517
  +아뿔싸:감:6
  +아사:명:1
  +아사:명:2
  +아삭아삭:부:1
  +아상:명:1
  +아새끼:명:9
  +아서:감:3
  +아서라:감:4
  +아성:명:5
  +아세:명:1
  +아세트알데히드:명:1
  +아수라:명:2
  +아수라장:명:10
  +아수쿠러하다:형:1
  +아쉬:명:2
  +아쉬어하다:동:1
  +아쉬움:명:34
  +아쉬워하다:동:13
  +아쉽다:형:67
  +아스라이:부:3
  +아스라하다:형:3
  +아스키코드:명:8
  +아스트린젠트:명:2
  +아스팔트:명:24
  +아슬아슬하다:형:11
  +아슬하다:형:2
  +아씨:명:47
  +아아:감:47
  +아야:감:1
  +아양:명:3
  +아역:명:3
  +아연:명:8
  +아연:부:1
  +아연:부:1
  +아연하다:형:3
  +아연해하다:동:1
  +아열대:명:4
  +아예:부:147
  +아옹다옹:부:1
  +아우:명:20
  +아우님:명:1
  +아우라:명:11
  +아우러지다:동:2
  +아우르다:동:22
  +아우성:명:13
  +아우성치다:동:4
  +아욱:명:2
  +아울러:부:104
  +아웃:명:1
  +아웃사이더:명:2
  +아웃사이드:명:2
  +아웅다웅하다:동:1
  +아유:감:69
  +아으:감:2
  +아이:감:58
  +아이:명:1,495
  +아이:명:4
  +아이:명:5
  +아이고:감:107
  +아이고머니:감:1
  +아이고머니나:감:1
  +아이놈:명:1
  +아이다:지:10
  +아이덴티티:명:2
  +아이디:명:13
  +아이디어:명:85
  +아이라이너:명:3
  +아이라인:명:3
  +아이러니:명:7
  +아이러니컬하다:형:4
  +아이리스:명:1
  +아이리시:명:1
  +아이보리색:명:2
  +아이섀도:명:5
  +아이스:명:3
  +아이스박스:명:1
  +아이스커피:명:1
  +아이스케이크:명:1
  +아이스케키:명:17
  +아이스크림:명:9
  +아이스티:명:1
  +아이스팩:명:3
  +아이스하키:명:8
  +아이스하키계:명:1
  +아이시:명:4
  +아이오다인:명:1
  +아이젠:명:1
  +아이참:감:5
  +아이큐:명:3
  +아이템:명:6
  +아이티:명:1
  +아이피에이:명:1
  +아자:감:1
  +아장아장:부:3
  +아재:명:1
  +아쟁:명:1
  +아저씨:명:351
  +아조:부:1
  +아종:명:3
  +아주:감:1
  +아주:부:697
  +아주까리:명:1
  +아주까리기름:명:1
  +아주머니:명:129
  +아주버니:명:3
  +아주버님:명:4
  +아주아주:부:3
  +아줌마:명:89
  +아즈므이:명:2
  +아지랑이:명:6
  +아지매:명:1
  +아지트:명:2
  +아지하다:동:1
  +아직:부:956
  +아직껏:부:15
  +아집:명:4
  +아찔:명:1
  +아찔아찔하다:형:1
  +아찔하다:형:13
  +아찔해지다:동:3
  +아차:감:8
  +아찬:명:1
  +아첨하다:동:3
  +아치:명:9
  +아침:명:600
  +아침결:명:1
  +아침나절:명:5
  +아침내:명:1
  +아침밥:명:14
  +아침상:명:1
  +아침잠:명:2
  +아침저녁:명:11
  +아카데미:명:4
  +아카데미스트:명:1
  +아카데미주의자:명:1
  +아카데믹하다:형:1
  +아카시아:명:10
  +아카시아꽃:명:7
  +아카시아나무:명:4
  +아케이드:명:3
  +아코디언:명:2
  +아쿠아:명:1
  +아쿠아로빅스:명:7
  +아퀴:명:3
  +아크:명:1
  +아크:명:6
  +아크릴:명:3
  +아크릴아미드:명:1
  +아키타입적:명:1
  +아킬레스건:명:1
  +아트:명:6
  +아트만:명:1
  +아트홀:명:1
  +아틀리에:명:2
  +아티스트:명:1
  +아파지다:동:1
  +아파트:명:261
  +아파트촌:명:3
  +아파트형:명:2
  +아파하다:동:14
  +아편:명:7
  +아포리즘:명:1
  +아프다:형:360
  +아프랜드면:명:1
  +아픔:명:91
  +아하:감:24
  +아함경:명:1
  +아호:명:2
  +아홉:관:41
  +아홉:수:11
  +아홉수:명:1
  +아홉째:수:1
  +아황산가스:명:6
  +아흐레:명:4
  +아흔:수:1
  +악:감:2
  +악:명:20
  +악:명:27
  +악곡:명:1
  +악귀:명:1
  +악기:명:66
  +악기상:명:9
  +악다구니:명:2
  +악다물다:동:1
  +악단:명:13
  +악담:명:5
  +악당:명:10
  +악덕:명:1
  +악독성:명:1
  +악독하다:형:1
  +악동:명:7
  +악랄하다:형:4
  +악력:명:1
  +악령:명:3
  +악마:명:24
  +악마적:관:5
  +악마적:명:3
  +악명:명:5
  +악몽:명:46
  +악물다:동:14
  +악법:명:24
  +악보:명:12
  +악사:명:4
  +악상:명:1
  +악상:명:2
  +악선:명:3
  +악성:명:1
  +악성:명:9
  +악성적:명:2
  +악센트:명:2
  +악속:명:1
  +악수:명:45
  +악수하다:동:11
  +악순환:명:30
  +악순환되다:동:1
  +악습:명:3
  +악쓰다:동:5
  +악악거리다:동:2
  +악어:명:2
  +악어:명:2
  +악역:명:6
  +악연:명:5
  +악영향:명:12
  +악용:명:4
  +악용되다:동:8
  +악용하다:동:9
  +악의:명:6
  +악의적:관:1
  +악의적:명:1
  +악인:명:1
  +악장:명:1
  +악장:명:9
  +악재:명:7
  +악조건:명:3
  +악종:명:3
  +악질:명:2
  +악질분자:명:1
  +악착같다:형:2
  +악착같이:부:4
  +악착스러워지다:동:1
  +악취:명:24
  +악폐:명:1
  +악하다:형:8
  +악행:명:4
  +악화:명:19
  +악화되다:동:35
  +악화시키다:동:5
  +악화하다:동:1
  +안:명:1,346
  +안:명:2
  +안:명:20
  +안:부:2,676
  +안가:명:18
  +안간:관:1
  +안간힘:명:18
  +안감:명:2
  +안개:명:53
  +안개구름:명:1
  +안개꽃:명:2
  +안개비:명:2
  +안건:명:7
  +안겨지다:동:2
  +안경:명:80
  +안경다리:명:1
  +안경잡이:명:4
  +안경점:명:1
  +안경테:명:2
  +안과:명:8
  +안구:명:23
  +안기:동:1
  +안기다:동:39
  +안기다:동:49
  +안기부법:명:1
  +안길:명:1
  +안내:명:46
  +안내기:명:1
  +안내도:명:3
  +안내되다:동:4
  +안내문:명:3
  +안내받다:동:3
  +안내서:명:6
  +안내소:명:6
  +안내실:명:1
  +안내양:명:1
  +안내원:명:5
  +안내인:명:5
  +안내자:명:4
  +안내장:명:3
  +안내하다:동:37
  +안녕:감:23
  +안녕:명:10
  +안녕하다:형:111
  +안녕히:부:43
  +안다:동:242
  +안다리:명:1
  +안단테:명:1
  +안달:명:5
  +안달복달:명:1
  +안달하다:동:2
  +안도:명:12
  +안도감:명:7
  +안도하다:동:3
  +안동네:명:1
  +안동답답이:명:1
  +안동포:명:1
  +안되다:동:70
  +안되다:형:23
  +안락:명:4
  +안락성:명:1
  +안락의자:명:2
  +안락하다:형:13
  +안락해지다:동:1
  +안력:명:1
  +안마:명:1
  +안마:명:1
  +안마당:명:1
  +안마법:명:1
  +안마사:명:1
  +안면:명:10
  +안면부:명:1
  +안목:명:29
  +안무:명:17
  +안무가:명:2
  +안무상:명:2
  +안무하다:동:4
  +안민:명:1
  +안방:명:102
  +안방극장:명:6
  +안방마님:명:2
  +안배:명:6
  +안배되다:동:1
  +안벽:명:1
  +안보:명:114
  +안보관:명:1
  +안보적:관:1
  +안부:명:20
  +안빈:명:1
  +안사돈:명:2
  +안산:명:2
  +안산:명:8
  +안산하다:동:3
  +안살림:명:2
  +안상:명:1
  +안색:명:7
  +안성맞춤:명:7
  +안수:명:1
  +안수하다:동:8
  +안식:명:10
  +안식시키다:동:1
  +안식일:명:18
  +안식처:명:7
  +안식하다:동:1
  +안심:명:13
  +안심:명:5
  +안심시키다:동:3
  +안심하다:동:17
  +안쓰럽다:형:18
  +안악골:명:2
  +안온하다:형:5
  +안위:명:1
  +안위:명:2
  +안이:명:1
  +안이하다:형:17
  +안일:명:1
  +안일:명:8
  +안일주의:명:2
  +안일하다:형:8
  +안장:명:1
  +안장:명:8
  +안장되다:동:1
  +안전:명:103
  +안전:명:2
  +안전거리:명:1
  +안전경:명:1
  +안전도:명:1
  +안전망:명:1
  +안전모:명:2
  +안전밸브:명:1
  +안전벨트:명:1
  +안전사고:명:15
  +안전선:명:2
  +안전성:명:11
  +안전시설:명:2
  +안전원:명:5
  +안전장치:명:3
  +안전지대:명:2
  +안전판:명:2
  +안전표지판:명:1
  +안전하다:형:74
  +안전화:명:1
  +안절부절:부:5
  +안절부절못하다:동:8
  +안절부절하다:동:1
  +안정:명:13
  +안정:명:155
  +안정감:명:2
  +안정감:명:8
  +안정권:명:1
  +안정되다:동:54
  +안정론:명:1
  +안정률:명:1
  +안정성:명:14
  +안정세:명:3
  +안정시키다:동:24
  +안정적:관:3
  +안정적:명:16
  +안정제:명:3
  +안정주:명:1
  +안정책:명:3
  +안정하다:동:1
  +안정하다:동:1
  +안정화:명:3
  +안정화되다:동:1
  +안정화시키다:동:1
  +안존하다:형:1
  +안주:명:2
  +안주:명:41
  +안주:부:1
  +안주머니:명:2
  +안주시키다:동:2
  +안주애기박쥐:명:1
  +안주인:명:7
  +안주하다:동:9
  +안중:명:6
  +안질환:명:2
  +안집:명:1
  +안집시키다:동:1
  +안짝:명:2
  +안쪽:명:60
  +안착:명:1
  +안착되다:동:1
  +안착하다:동:4
  +안창:명:2
  +안채:명:5
  +안치다:동:8
  +안치되다:동:1
  +안치소:명:3
  +안치실:명:1
  +안치하다:동:2
  +안타:명:2
  +안타까워하다:동:11
  +안타까이:부:1
  +안타깝다:형:84
  +안테나:명:3
  +안통:명:1
  +안티크:명:1
  +안팎:명:43
  +안팎일:명:1
  +안하무인:명:2
  +앉다:동:1,029
  +앉은뱅이:명:3
  +앉은뱅이책상:명:3
  +앉은자리:명:1
  +앉은키:명:4
  +앉히다:동:37
  +않다:동:119
  +않다:보:8,852
  +알:명:99
  +알:의:15
  +알갱이:명:21
  +알거지:명:1
  +알고리듬:명:1
  +알고리즘:명:7
  +알다:동:2,933
  +알데히드:명:1
  +알딸딸해지다:동:1
  +알뜰:명:12
  +알뜰살뜰:부:3
  +알뜰하다:형:10
  +알뜰히:부:1
  +알락할미새:명:2
  +알량하다:형:3
  +알레고리:명:2
  +알레르기:명:6
  +알레르기성:명:3
  +알려지다:동:418
  +알력:명:1
  +알로에:명:1
  +알록달록:부:2
  +알루미늄:명:35
  +알리다:동:223
  +알리바이:명:1
  +알림장:명:3
  +알맞다:형:168
  +알맞춤하다:형:1
  +알맹이:명:17
  +알몸:명:17
  +알보리:명:1
  +알부자:명:2
  +알뿌리:명:19
  +알사탕:명:2
  +알선:명:2
  +알선자:명:2
  +알선책:명:2
  +알선하다:동:4
  +알싸하다:형:1
  +알쏭달쏭하다:형:2
  +알아내다:동:44
  +알아듣다:동:91
  +알아맞추다:동:2
  +알아맞히다:동:22
  +알아보다:동:505
  +알아주다:동:35
  +알아차리다:동:27
  +알아채다:동:14
  +알알이:부:2
  +알약:명:5
  +알은체:명:1
  +알은체하다:동:1
  +알음:명:2
  +알음알음:명:1
  +알음알이:명:1
  +알전등:명:1
  +알짜:명:1
  +알짜배기:명:1
  +알찌개:명:1
  +알차다:형:17
  +알칼로이드:명:1
  +알칼리:명:3
  +알칼리성:명:32
  +알칼리화:명:1
  +알칼리화되다:동:1
  +알코올:명:24
  +알코올리즘:명:2
  +알코올성:명:4
  +알코올음료:명:1
  +알토란:명:3
  +알파기:명:2
  +알파뉴메릭:명:1
  +알파벳:명:5
  +알현하다:동:1
  +앎:명:11
  +앓다:동:102
  +앓아눕다:동:7
  +암:감:13
  +암:명:2
  +암:명:44
  +암갈색:명:12
  +암거래:명:3
  +암거래상:명:1
  +암고양이:명:1
  +암권:명:5
  +암글:명:1
  +암기:명:4
  +암기하다:동:3
  +암나무:명:3
  +암녹색:명:2
  +암놈:명:2
  +암달러:명:2
  +암담:명:1
  +암담하다:형:9
  +암독사:명:2
  +암류:명:1
  +암막:명:1
  +암만:부:7
  +암만하다:동:6
  +암말:불:3
  +암매하다:동:1
  +암모니아:명:4
  +암모니아수:명:3
  +암묵적:관:1
  +암묵적:명:5
  +암문:명:1
  +암반:명:6
  +암벽:명:11
  +암벽화:명:3
  +암붉은색:명:1
  +암사내:명:1
  +암살:명:19
  +암살단:명:1
  +암살당하다:동:2
  +암살되다:동:3
  +암색:명:7
  +암석:명:47
  +암세포:명:12
  +암세포적:관:1
  +암소:명:9
  +암송:명:2
  +암수:명:7
  +암술:명:1
  +암시:명:31
  +암시되다:동:9
  +암시성:명:1
  +암시적:관:1
  +암시적:명:5
  +암시하다:동:17
  +암암리:명:4
  +암약:명:1
  +암약하다:동:2
  +암운:명:1
  +암울:명:1
  +암울하다:형:13
  +암자:명:13
  +암자색:명:1
  +암장:명:1
  +암적:명:1
  +암적색:명:1
  +암주:명:1
  +암중모색:명:3
  +암중모색하다:동:1
  +암지르다:동:1
  +암청색:명:2
  +암초:명:1
  +암컷:명:30
  +암탉:명:9
  +암퇘지:명:1
  +암투:명:6
  +암튼:부:5
  +암팡지다:형:3
  +암행:명:1
  +암행어사:명:1
  +암호:명:12
  +암호화:명:1
  +암호화하다:동:1
  +암회갈색:명:2
  +암회색:명:6
  +암흑:명:11
  +암흑기:명:3
  +암흑리:명:1
  +암흑색:명:2
  +암흑시대:명:3
  +압권:명:5
  +압도:명:1
  +압도당하다:동:1
  +압도되다:동:5
  +압도적:관:10
  +압도적:명:23
  +압도하다:동:12
  +압력:명:109
  +압력솥:명:5
  +압류:명:3
  +압류되다:동:2
  +압맥:명:1
  +압박:명:24
  +압박감:명:5
  +압박하다:동:9
  +압살:명:1
  +압송되다:동:1
  +압송하다:동:1
  +압수:명:10
  +압수하다:동:1
  +압수하다:동:4
  +압승:명:4
  +압승:명:5
  +압승하다:동:1
  +압제:명:6
  +압착하다:동:1
  +압축:명:27
  +압축기:명:4
  +압축되다:동:14
  +압축시키다:동:1
  +압축적:명:2
  +압축하다:동:18
  +압출기:명:1
  +압통:명:1
  +앗:감:7
  +앗기다:동:1
  +앗다:동:10
  +앗쌀하다:형:1
  +앙:감:5
  +앙:부:2
  +앙가슴:명:2
  +앙갚음:명:1
  +앙거:명:1
  +앙고라:명:1
  +앙구다:동:1
  +앙금:명:9
  +앙다물다:동:1
  +앙다물리다:동:1
  +앙등:명:2
  +앙바틈하다:형:1
  +앙상블:명:5
  +앙상하다:형:13
  +앙상히:부:1
  +앙숙:명:4
  +앙심:명:4
  +앙앙:부:1
  +앙앙거리다:동:1
  +앙앙불락하다:동:1
  +앙양:명:1
  +앙이:부:2
  +앙이다:지:3
  +앙증맞다:형:7
  +앙증스럽다:형:1
  +앙칼스럽다:형:6
  +앙칼지다:형:4
  +앙코르:명:2
  +앙큼하다:형:1
  +앙탈:명:5
  +앙탈하다:동:2
  +앞:명:1,979
  +앞가림:명:1
  +앞가슴:명:9
  +앞거리:명:1
  +앞걸음질:명:1
  +앞구르기:명:6
  +앞길:명:1
  +앞길:명:34
  +앞날:명:31
  +앞니:명:1
  +앞다리:명:1
  +앞당겨지다:동:5
  +앞당기다:동:18
  +앞대가리:명:1
  +앞두다:동:139
  +앞뒤:명:46
  +앞뜰:명:4
  +앞마당:명:10
  +앞머리:명:8
  +앞면:명:4
  +앞몸:명:2
  +앞무릎:명:3
  +앞문:명:14
  +앞바다:명:19
  +앞발:명:16
  +앞볼:명:1
  +앞부분:명:11
  +앞사람:명:1
  +앞산:명:4
  +앞서:부:178
  +앞서다:동:99
  +앞섶:명:1
  +앞세우다:동:58
  +앞스럽다:형:1
  +앞에총:명:2
  +앞여밈:명:1
  +앞이마:명:2
  +앞일:명:2
  +앞자락:명:8
  +앞자리:명:13
  +앞잡이:명:3
  +앞장:명:10
  +앞장서다:동:84
  +앞장세우다:동:2
  +앞줄:명:7
  +앞지르기:명:1
  +앞지르다:동:12
  +앞집:명:9
  +앞쪽:명:21
  +앞차:명:1
  +앞채:명:1
  +앞치마:명:8
  +애:명:1
  +애:명:45
  +애:명:614
  +애간장:명:5
  +애걸하다:동:3
  +애견:명:2
  +애경사:명:1
  +애고:감:2
  +애고하다:동:1
  +애교:명:21
  +애교스럽다:형:5
  +애교심:명:1
  +애국:명:11
  +애국시:명:2
  +애국심:명:3
  +애국자:명:16
  +애국적:관:1
  +애국정신:명:2
  +애국주의자:명:1
  +애국하다:동:1
  +애기나리:명:3
  +애기며느리밥풀:명:2
  +애기부들:명:1
  +애꾸:명:1
  +애꾸눈:명:2
  +애꿎다:형:7
  +애끊다:동:1
  +애끓다:동:2
  +애니메이션:명:44
  +애니메이션업체:명:1
  +애달프다:형:4
  +애당초:명:8
  +애덕:명:1
  +애도:명:1
  +애도하다:동:4
  +애도회:명:1
  +애독서:명:1
  +애독자:명:8
  +애드라이터:명:1
  +애드리브:명:4
  +애드리브하다:동:1
  +애드벌룬:명:3
  +애련하다:형:2
  +애로:명:9
  +애매모호하다:형:6
  +애매성:명:1
  +애매하다:형:1
  +애매하다:형:28
  +애먹다:동:1
  +애먼:관:1
  +애모심:명:1
  +애무:명:6
  +애무되다:동:1
  +애무하다:동:3
  +애물:명:1
  +애물단지:명:8
  +애버리지:명:1
  +애벌:명:2
  +애벌레:명:2
  +애벌빨래:명:4
  +애별리고:명:1
  +애사심:명:3
  +애살:명:1
  +애살스럽다:형:1
  +애상:명:1
  +애상적:관:1
  +애석하다:형:5
  +애석해하다:동:3
  +애송이:명:1
  +애수:명:3
  +애시당초:명:5
  +애쓰다:동:137
  +애어른:명:1
  +애연가:명:3
  +애오라지:부:1
  +애옥살이:명:1
  +애완견:명:3
  +애완동물:명:5
  +애욕:명:2
  +애용:명:5
  +애용되다:동:8
  +애용하다:동:4
  +애원:명:1
  +애원:명:3
  +애원하다:동:16
  +애인:명:59
  +애잔하다:형:5
  +애장품:명:1
  +애저:명:2
  +애절하다:형:4
  +애절하다:형:6
  +애절해지다:동:1
  +애정:명:67
  +애제자:명:3
  +애족:명:2
  +애증:명:3
  +애지중지:부:2
  +애지중지하다:동:1
  +애착:명:12
  +애착심:명:2
  +애창곡:명:2
  +애처가:명:1
  +애처롭다:형:9
  +애첩:명:2
  +애청자:명:2
  +애초:명:59
  +애칭:명:2
  +애타다:동:15
  +애태우다:동:2
  +애통하다:형:1
  +애통해하다:동:1
  +애틋하다:형:13
  +애틋해하다:동:1
  +애프터:명:4
  +애프터서비스:명:4
  +애향:명:1
  +애호가:명:9
  +애호국:명:1
  +애호도:명:9
  +애호박:명:10
  +애호박나물:명:2
  +애호층:명:1
  +애호하다:동:1
  +애환:명:5
  +액면:명:4
  +액면가:명:5
  +액면가액:명:2
  +액상:명:2
  +액세서리:명:24
  +액셀:명:2
  +액셀러레이터:명:1
  +액션:명:23
  +액수:명:70
  +액운:명:1
  +액자:명:10
  +액자식:명:2
  +액주름:명:1
  +액체:명:13
  +액화:명:1
  +앤드:명:5
  +앤드게이트:명:1
  +앨범:명:21
  +앰뷸런스:명:1
  +앰프:명:8
  +앳되다:형:6
  +앵글:명:2
  +앵돌아지다:동:1
  +앵두:명:5
  +앵두나무:명:2
  +앵무새:명:8
  +앵커:명:5
  +야:감:269
  +야:명:15
  +야간:명:32
  +야간열차:명:1
  +야간작업:명:4
  +야거리:명:2
  +야경:명:5
  +야경꾼:명:1
  +야광:명:1
  +야광침:명:1
  +야구:명:79
  +야구부:명:2
  +야구장:명:6
  +야구팀:명:2
  +야구팬:명:1
  +야권:명:16
  +야그하다:동:1
  +야근:명:7
  +야근자:명:1
  +야금야금:부:11
  +야기되다:동:20
  +야기시키다:동:11
  +야기자:명:1
  +야기하다:동:9
  +야기형:명:1
  +야단:명:44
  +야단나다:동:2
  +야단맞다:동:8
  +야단법석:명:6
  +야단스럽다:형:4
  +야단스레:부:1
  +야단야단하다:동:1
  +야단치다:동:12
  +야당:명:107
  +야당사:명:1
  +야당인:명:1
  +야도:명:2
  +야들:수:1
  +야들야들해지다:동:1
  +야릇하다:형:6
  +야릇해지다:동:1
  +야만:명:1
  +야만시하다:동:1
  +야만인:명:5
  +야만적:관:4
  +야만적:명:12
  +야망:명:6
  +야멸치다:형:1
  +야무지다:형:10
  +야물다:형:1
  +야미:명:2
  +야박하다:형:5
  +야박해지다:동:1
  +야반도주:명:1
  +야밤:명:2
  +야비하다:형:3
  +야산:명:13
  +야산대:명:2
  +야산지:명:1
  +야생:명:16
  +야생마:명:2
  +야생조:명:1
  +야생화:명:5
  +야성:명:3
  +야성:명:8
  +야성미:명:1
  +야성적:명:1
  +야세:명:1
  +야속하다:형:6
  +야수적:명:1
  +야수파:명:1
  +야스럽다:형:1
  +야식:명:3
  +야심:명:13
  +야심작:명:1
  +야심적:명:2
  +야야야:부:6
  +야영:명:2
  +야영객:명:1
  +야영장:명:5
  +야옹:부:16
  +야외:명:29
  +야외극장:명:1
  +야외무대:명:1
  +야외숙:명:1
  +야욕:명:2
  +야위다:동:4
  +야유:명:8
  +야유하다:동:3
  +야유회:명:5
  +야음:명:1
  +야인:명:2
  +야자:명:3
  +야자나무:명:2
  +야자수:명:2
  +야자열매:명:1
  +야자유:명:1
  +야전:명:10
  +야전잠바:명:1
  +야조:명:1
  +야차:명:1
  +야채:명:64
  +야채샐러드:명:3
  +야채수프:명:1
  +야초라:명:1
  +야쿠자:명:1
  +야키소바:명:1
  +야트막하다:형:7
  +야폭:명:1
  +야표:명:1
  +야하다:형:18
  +야학:명:5
  +야학당:명:1
  +야합:명:8
  +야합적:관:1
  +야해지다:동:1
  +야행성:명:2
  +야호:감:5
  +야회:명:1
  +약:관:323
  +약:명:108
  +약:명:17
  +약:명:5
  +약:의:1
  +약간:명:91
  +약간:부:327
  +약값:명:1
  +약과:명:2
  +약관:명:1
  +약관:명:8
  +약국:명:23
  +약대:명:1
  +약도:명:8
  +약동하다:동:1
  +약력:명:1
  +약력:명:9
  +약물:명:26
  +약물:명:6
  +약밥:명:1
  +약방:명:3
  +약방문:명:2
  +약봉지:명:1
  +약사:명:5
  +약사발:명:2
  +약삭빠르다:형:3
  +약산성:명:1
  +약선:명:6
  +약성:명:1
  +약세:명:7
  +약소국:명:9
  +약소하다:형:1
  +약속:명:191
  +약속되다:동:7
  +약속받다:동:1
  +약속하다:동:80
  +약손:명:2
  +약수:명:17
  +약수터:명:26
  +약수통:명:1
  +약술:명:1
  +약술하다:동:1
  +약시:명:1
  +약식:명:4
  +약아빠지다:형:1
  +약육강식:명:8
  +약자:명:4
  +약장수:명:1
  +약재:명:8
  +약점:명:42
  +약정:명:10
  +약정되다:동:1
  +약제:명:1
  +약조:명:1
  +약조하다:동:3
  +약주:명:2
  +약지:명:2
  +약진:명:4
  +약질:명:1
  +약체:명:1
  +약초:명:7
  +약취:명:1
  +약칭하다:동:1
  +약탈:명:11
  +약탈당하다:동:3
  +약탈적:관:1
  +약탈하다:동:4
  +약탕:명:3
  +약통:명:1
  +약표:명:1
  +약품:명:17
  +약하다:형:119
  +약학:명:2
  +약해지다:동:34
  +약혼:명:9
  +약혼녀:명:3
  +약혼식:명:11
  +약혼자:명:2
  +약혼하다:동:1
  +약화:명:1
  +약화:명:11
  +약화되다:동:26
  +약화시키다:동:18
  +약화하다:동:2
  +약효:명:8
  +얄궂다:형:8
  +얄밉다:형:19
  +얄팍하다:형:12
  +얄포름하다:형:1
  +얄풋하다:형:1
  +얇다:형:59
  +얇아지다:동:2
  +얌마:불:1
  +얌전:명:1
  +얌전하다:형:23
  +얌전해지다:동:1
  +얌전히:부:7
  +얌체:명:3
  +얌체족:명:2
  +얏:감:1
  +양:관:56
  +양:명:160
  +양:명:21
  +양:명:5
  +양:의:145
  +양:의:64
  +양가:명:10
  +양가성:명:1
  +양가적:관:3
  +양가죽:명:1
  +양감:명:3
  +양계:명:1
  +양계업:명:1
  +양고기:명:2
  +양곡:명:4
  +양공주:명:4
  +양광:명:1
  +양국:명:68
  +양군:명:1
  +양궁:명:10
  +양극:명:5
  +양극단:명:4
  +양극적:명:1
  +양극화:명:2
  +양근:명:2
  +양기:명:6
  +양껏:부:1
  +양날:명:4
  +양날톱:명:5
  +양녀:명:2
  +양념:명:59
  +양념간장:명:2
  +양념거리:명:1
  +양념장:명:23
  +양념하다:동:12
  +양다리:명:2
  +양단:명:3
  +양단간:명:1
  +양담배:명:8
  +양당:명:13
  +양당제:명:1
  +양대:관:6
  +양도:명:31
  +양도되다:동:1
  +양도받다:동:2
  +양도분:명:1
  +양도성:명:1
  +양도하다:동:7
  +양돈:명:1
  +양돈업:명:1
  +양동이:명:8
  +양띠:명:2
  +양력:명:5
  +양력설:명:2
  +양로당:명:1
  +양로원:명:9
  +양론:명:3
  +양립하다:동:6
  +양말:명:35
  +양말목:명:1
  +양머리:명:1
  +양면:명:11
  +양면성:명:4
  +양면적:관:3
  +양면적:명:1
  +양목:명:1
  +양묘기:명:1
  +양무용:명:1
  +양물:명:1
  +양미간:명:1
  +양민:명:7
  +양반:명:88
  +양반가:명:1
  +양반국:명:1
  +양반집:명:1
  +양반촌:명:1
  +양반층:명:2
  +양발:명:2
  +양방:명:1
  +양방:명:2
  +양배추:명:17
  +양버들:명:1
  +양보:명:17
  +양보받다:동:1
  +양보하다:동:36
  +양복:명:42
  +양복장이:명:1
  +양복점:명:8
  +양봉:명:2
  +양분:명:3
  +양분되다:동:7
  +양분법:명:1
  +양분하다:동:3
  +양분화:명:1
  +양비론:명:2
  +양산:명:5
  +양산:명:6
  +양산되다:동:1
  +양산하다:동:6
  +양상:명:114
  +양상추:명:19
  +양색시:명:3
  +양생:명:1
  +양생법:명:1
  +양생주:명:1
  +양서:명:1
  +양서류:명:1
  +양서점:명:1
  +양성:명:1
  +양성:명:2
  +양성:명:23
  +양성되다:동:2
  +양성소:명:3
  +양성자:명:1
  +양성하다:동:16
  +양성화:명:1
  +양속:명:1
  +양손:명:20
  +양송이:명:3
  +양송이버섯:명:2
  +양수:명:2
  +양수:명:2
  +양수:명:5
  +양수:명:5
  +양수척:명:1
  +양시론:명:2
  +양식:명:11
  +양식:명:11
  +양식:명:121
  +양식:명:2
  +양식:명:7
  +양식거리:명:3
  +양식당:명:1
  +양식되다:동:3
  +양식론:명:2
  +양식업:명:7
  +양식장:명:9
  +양식적:관:3
  +양식하다:동:2
  +양식화:명:1
  +양식화되다:동:1
  +양식화하다:동:2
  +양심:명:49
  +양심선언:명:4
  +양심선언자:명:2
  +양심수:명:11
  +양심적:관:2
  +양심적:명:8
  +양아치:명:3
  +양안:명:1
  +양압:명:1
  +양약:명:1
  +양어깨:명:1
  +양어장:명:2
  +양옆:명:17
  +양옥:명:2
  +양용형:명:1
  +양육:명:10
  +양육권:명:1
  +양육되다:동:1
  +양육자:명:3
  +양육하다:동:3
  +양은:명:2
  +양은그릇:명:2
  +양은솥:명:2
  +양이:명:3
  +양인:명:13
  +양일:명:1
  +양자:명:1
  +양자:명:3
  +양자:명:43
  +양자:명:6
  +양자론:명:3
  +양자리:명:1
  +양자적:관:3
  +양자택일:명:1
  +양자택일론:명:1
  +양자택일적:관:1
  +양자택일적:명:1
  +양잠:명:6
  +양장:명:2
  +양장점:명:1
  +양재:명:1
  +양재:명:2
  +양재기:명:1
  +양적:관:9
  +양적:명:15
  +양전자:명:6
  +양전하:명:2
  +양조:명:6
  +양조장:명:37
  +양좌:명:1
  +양주:명:1
  +양주:명:20
  +양지:명:4
  +양지꽃:명:3
  +양지머리:명:5
  +양지바르다:형:6
  +양지쪽:명:4
  +양질:명:7
  +양질화:명:1
  +양쪽:명:85
  +양차:명:1
  +양천:명:1
  +양천제:명:3
  +양철:명:18
  +양철집:명:1
  +양측:명:25
  +양치:명:1
  +양치기:명:2
  +양치질:명:2
  +양친:명:1
  +양코배기:명:1
  +양키:명:2
  +양탄자:명:5
  +양태:명:5
  +양파:명:103
  +양팔:명:5
  +양편:명:13
  +양푼:명:2
  +양품점:명:4
  +양하다:보:1
  +양할아버지:명:1
  +양해:명:8
  +양해하다:동:6
  +양호:명:5
  +양호실:명:4
  +양호하다:형:5
  +양화:명:1
  +양화:명:2
  +양화기:명:1
  +양화하다:동:1
  +얕다:형:17
  +얕보다:동:1
  +얕아지다:동:1
  +얕잡다:동:3
  +얘:감:44
  +얘:대:1
  +얘:불:67
  +얘기:명:824
  +얘기꽃:명:6
  +얘기꾼:명:1
  +얘기되다:동:5
  +얘기판:명:1
  +얘기하다:동:294
  +얘깃거리:명:2
  +어:감:455
  +어:명:3
  +어감:명:6
  +어구:명:1
  +어구:명:4
  +어구대:명:2
  +어구점:명:1
  +어군:명:1
  +어군:명:1
  +어귀:명:20
  +어그러지다:동:1
  +어금니:명:6
  +어금닛소리:명:1
  +어긋나다:동:66
  +어기다:동:39
  +어기적거리다:동:2
  +어김없다:형:1
  +어김없이:부:30
  +어깃장:명:1
  +어깨:명:228
  +어깨깃:명:1
  +어깨너머:명:2
  +어깨너비:명:4
  +어깨높이:명:1
  +어깨동무:명:7
  +어깨동무하다:동:1
  +어깨띠:명:2
  +어깨뼈:명:1
  +어깨선:명:1
  +어깨짐하다:동:1
  +어깨춤:명:3
  +어깻부들기:명:1
  +어깻죽지:명:5
  +어눌하다:형:7
  +어느:관:1,255
  +어느덧:부:38
  +어느새:부:108
  +어대:명:2
  +어데:불:1
  +어두움:명:1
  +어두워지다:동:17
  +어두컴컴하다:형:11
  +어두컴컴해지다:동:1
  +어둑시근하다:형:1
  +어둑어둑:부:2
  +어둑어둑하다:형:5
  +어둑어둑해지다:동:3
  +어둑하다:형:3
  +어둑해지다:동:1
  +어둠:명:155
  +어둠길:명:1
  +어둠살:명:2
  +어둠상자:명:2
  +어둡다:형:155
  +어드렇다:형:2
  +어드레스:명:1
  +어드메:대:1
  +어드바이스:명:1
  +어드벤처:명:3
  +어디:감:120
  +어디:대:1,148
  +어디어디:대:5
  +어딨다:불:27
  +어따:감:3
  +어따:불:2
  +어때:불:39
  +어때서:불:3
  +어때요:불:54
  +어땠:불:21
  +어떠어떠하다:형:1
  +어떠하다:형:263
  +어떡하다:불:79
  +어떤:관:1,917
  +어떤어떤:관:1
  +어떻다:형:1,748
  +어떻든:부:10
  +어뜩하다:형:1
  +어뜩해지다:동:1
  +어라:감:2
  +어럽쇼:감:2
  +어레인지:명:1
  +어려움:명:157
  +어려워지다:동:26
  +어려워하다:동:6
  +어련히:부:2
  +어렴풋이:부:21
  +어렴풋하다:형:2
  +어렵다:형:866
  +어렵사리:부:6
  +어로:명:4
  +어록:명:1
  +어료지:명:1
  +어루만지다:동:13
  +어룽:명:1
  +어룽거리다:동:1
  +어류:명:25
  +어르다:동:10
  +어르신:명:7
  +어른:명:334
  +어른거리다:동:13
  +어른스럽다:형:3
  +어른스레:부:1
  +어름:명:2
  +어름치:명:1
  +어리광:명:4
  +어리다:동:1
  +어리다:동:47
  +어리다:형:430
  +어리둥절:부:2
  +어리둥절하다:형:20
  +어리둥절해지다:동:3
  +어리둥절해하다:동:4
  +어리벙벙하다:형:2
  +어리비치다:동:1
  +어리빙이:명:2
  +어리석다:형:54
  +어리숙하다:형:2
  +어린것:명:11
  +어린아이:명:48
  +어린애:명:41
  +어린이:명:275
  +어린이날:명:20
  +어린이부:명:1
  +어린이상:명:2
  +어린이집:명:1
  +어린잎:명:1
  +어림:명:4
  +어림되다:동:1
  +어림없다:형:9
  +어림잡다:동:3
  +어림하다:동:1
  +어릿광대:명:1
  +어릿어릿:부:1
  +어마나:감:1
  +어마어마하다:형:14
  +어망:명:1
  +어머:감:67
  +어머나:감:7
  +어머니:명:1,436
  +어머니회:명:1
  +어머님:명:72
  +어머머:감:3
  +어머어마하다:형:2
  +어머어머:감:1
  +어머이:명:1
  +어메:감:1
  +어명:명:3
  +어묵:명:1
  +어문:명:10
  +어문계:명:1
  +어문과장:명:1
  +어문학:명:1
  +어물어물:부:1
  +어미:명:1
  +어미:명:83
  +어미젖:명:1
  +어민:명:6
  +어버버:부:1
  +어버이:명:5
  +어버이날:명:7
  +어법:명:3
  +어벙하다:동:1
  +어부:명:27
  +어부바:감:1
  +어부지리:명:1
  +어불성설:명:3
  +어빡자빡:부:1
  +어사화:명:1
  +어살:명:1
  +어색하다:형:76
  +어색해지다:동:2
  +어색해하다:동:1
  +어서:부:150
  +어선:명:1
  +어선:명:18
  +어선단:명:1
  +어설프다:형:18
  +어설피:부:1
  +어세:명:1
  +어셈블러:명:3
  +어셈블리:명:8
  +어수선하다:형:19
  +어순:명:2
  +어스름:명:7
  +어스세티카:명:1
  +어슬렁거리다:동:7
  +어슬렁어슬렁:부:4
  +어슴푸레하다:형:2
  +어슷:부:3
  +어슷세기:명:2
  +어슷썰기:명:1
  +어슷하다:형:1
  +어시스트:명:13
  +어시스트하다:동:3
  +어시장:명:1
  +어아주:명:1
  +어안:명:14
  +어양론:명:1
  +어얘:부:1
  +어어:감:8
  +어언:부:3
  +어언간:부:1
  +어업:명:26
  +어여:부:2
  +어여쁘다:형:6
  +어역:명:1
  +어엿하다:형:4
  +어영부영:부:2
  +어용:명:3
  +어용상인:명:1
  +어용화:명:2
  +어우러지다:동:38
  +어우르다:동:2
  +어울리다:동:224
  +어울림:명:3
  +어울어지다:동:1
  +어원:명:7
  +어웨이:명:1
  +어유:감:23
  +어유:명:1
  +어음:명:1
  +어음:명:17
  +어이:감:14
  +어이:감:3
  +어이:명:8
  +어이:부:7
  +어이구:감:12
  +어이없다:형:19
  +어이없이:부:2
  +어이쿠:감:5
  +어이하다:동:2
  +어인:관:2
  +어장:명:9
  +어장대:명:1
  +어저께:명:3
  +어저께:부:2
  +어전:명:1
  +어전:명:2
  +어정거리다:동:8
  +어정쩡:명:1
  +어정쩡하다:형:5
  +어제:명:96
  +어제:부:102
  +어제오늘:명:7
  +어제저녁:명:8
  +어젯밤:명:34
  +어조:명:32
  +어족:명:2
  +어족:명:3
  +어종:명:1
  +어줍다:형:1
  +어중:명:1
  +어중간하다:형:4
  +어지간하다:형:2
  +어지간히:부:10
  +어지러워지다:동:5
  +어지러이:부:2
  +어지럼증:명:4
  +어지럽다:형:45
  +어지럽혀지다:동:4
  +어지럽히다:동:12
  +어지르다:동:2
  +어진혼:명:1
  +어질다:형:10
  +어질덤벙:부:1
  +어질어질:부:2
  +어질어질하다:형:4
  +어째:불:22
  +어째서:불:42
  +어째요:불:1
  +어쨌:불:17
  +어쨌건:부:1
  +어쨌든:부:155
  +어쨌든지:부:1
  +어쩌고저쩌고:부:9
  +어쩌다:동:288
  +어쩌다:부:42
  +어쩌다가:부:18
  +어쩌면:감:3
  +어쩌면:부:170
  +어쩐지:부:48
  +어쩜:감:2
  +어쩜:부:17
  +어쭙잖다:형:2
  +어찌:부:147
  +어찌나:부:23
  +어찌어찌:부:1
  +어찌어찌하다:동:1
  +어찌하다:동:45
  +어차피:부:86
  +어처구니:명:10
  +어처구니없다:형:36
  +어처구니없어하다:동:3
  +어처구니없이:부:2
  +어촌:명:6
  +어치:명:3
  +어커스틱:명:1
  +어탐기:명:2
  +어태커:명:3
  +어투:명:24
  +어판장:명:9
  +어패류:명:5
  +어폐:명:2
  +어필하다:동:2
  +어학:명:1
  +어학연수:명:5
  +어항:명:5
  +어항:명:5
  +어허:감:16
  +어허허:부:1
  +어협:명:4
  +어화:감:1
  +어황:명:5
  +어획:명:2
  +어획고:명:6
  +어획되다:동:2
  +어획량:명:15
  +어획물:명:1
  +어휘:명:13
  +어휘력:명:2
  +어흠:감:1
  +억:감:2
  +억:관:1
  +억:수:2
  +억겁:명:2
  +억견:명:2
  +억누르다:동:15
  +억눌리다:동:6
  +억대:명:7
  +억류되다:동:2
  +억류하다:동:1
  +억불:명:1
  +억새:명:5
  +억새밭:명:1
  +억새풀:명:10
  +억세다:형:13
  +억세어지다:동:1
  +억수:명:4
  +억압:명:60
  +억압당하다:동:3
  +억압되다:동:12
  +억압받다:동:5
  +억압자:명:5
  +억압적:관:11
  +억압적:명:9
  +억압하다:동:30
  +억양:명:9
  +억울하다:형:60
  +억장:명:3
  +억제:명:40
  +억제되다:동:7
  +억제시키다:동:2
  +억제책:명:2
  +억제하다:동:43
  +억지:명:25
  +억지:명:3
  +억지력:명:1
  +억지로:부:62
  +억지스럽다:형:2
  +억지웃음:명:1
  +억척:명:1
  +억척스럽다:형:4
  +억측:명:6
  +언:관:1
  +언감생심:명:2
  +언겸:명:1
  +언급:명:24
  +언급되다:동:5
  +언급하다:동:53
  +언능:부:1
  +언니:명:419
  +언더웨어:명:1
  +언더핸드:명:4
  +언덕:명:46
  +언덕길:명:5
  +언덕바지:명:1
  +언덕배기:명:3
  +언동:명:6
  +언뜻:부:22
  +언뜻언뜻:부:8
  +언로:명:6
  +언론:명:218
  +언론계:명:7
  +언론사:명:1
  +언론사:명:19
  +언론인:명:22
  +언론학:명:1
  +언명하다:동:1
  +언문:명:3
  +언변:명:2
  +언사:명:5
  +언설:명:3
  +언성:명:11
  +언약:명:1
  +언약하다:동:1
  +언어:명:327
  +언어권:명:1
  +언어도단:명:1
  +언어불통:명:1
  +언어생활:명:2
  +언어적:관:11
  +언어적:명:4
  +언어학:명:1
  +언어학자:명:3
  +언어학적:관:4
  +언어활동:명:2
  +언쟁:명:4
  +언저리:명:16
  +언제:대:221
  +언제:부:252
  +언제나:부:276
  +언젠가:부:133
  +언중유골:명:1
  +언질:명:1
  +언짢다:형:17
  +언짢아하다:동:2
  +언필칭:부:2
  +언행:명:12
  +언행일치:명:1
  +얹다:동:76
  +얹혀살다:동:6
  +얹히다:동:21
  +얻다:동:587
  +얻어걸리다:동:1
  +얻어듣다:동:1
  +얻어맞다:동:16
  +얻어먹다:동:29
  +얻어지다:동:31
  +얻어터지다:동:4
  +얼:대:1
  +얼:명:11
  +얼간:명:1
  +얼간이:명:3
  +얼개:명:1
  +얼결:명:7
  +얼굴:명:1,144
  +얼굴값:명:1
  +얼굴빛:명:8
  +얼굴색:명:4
  +얼굴형:명:8
  +얼근하다:형:2
  +얼기설기:부:3
  +얼다:동:42
  +얼떨결:명:7
  +얼떨떨하다:형:11
  +얼떨떨해지다:동:3
  +얼뜬:부:1
  +얼라:감:2
  +얼래:감:3
  +얼렁뚱땅:부:5
  +얼레:부:2
  +얼레발:명:1
  +얼루기:명:1
  +얼룩:명:13
  +얼룩동사리:명:4
  +얼룩말:명:3
  +얼룩무늬:명:3
  +얼룩점:명:1
  +얼룩지다:동:22
  +얼른:부:215
  +얼른얼른:부:1
  +얼리다:동:15
  +얼마:명:490
  +얼마간:명:16
  +얼마나:부:668
  +얼멍엉성하다:형:1
  +얼버무리다:동:19
  +얼빠지다:동:3
  +얼싸안다:동:6
  +얼싸절싸:부:1
  +얼쑤:감:1
  +얼씨구:감:6
  +얼씨구절씨구:감:1
  +얼씬:부:2
  +얼씬거리다:동:3
  +얼씬하다:동:1
  +얼어붙다:동:25
  +얼얼하다:형:2
  +얼얼해지다:동:2
  +얼음:명:56
  +얼음과자:명:1
  +얼음꽃:명:1
  +얼음물:명:10
  +얼음장:명:7
  +얼음주머니:명:3
  +얼음판:명:1
  +얼쩡거리다:동:3
  +얼차려:명:1
  +얼추:부:2
  +얼치기:명:4
  +얼크러지다:동:2
  +얼큰하다:형:5
  +얼큰히:부:1
  +얼키설키하다:형:1
  +얼토당토않다:형:2
  +얼핏:부:68
  +얼핏얼핏:부:2
  +얽다:동:4
  +얽매다:동:2
  +얽매이다:동:19
  +얽어매다:동:6
  +얽어매여지다:동:1
  +얽히고설키다:동:3
  +얽히다:동:56
  +엄격성:명:4
  +엄격하다:형:86
  +엄격해지다:동:1
  +엄격히:부:13
  +엄금하다:동:1
  +엄니:명:13
  +엄단:명:1
  +엄단되다:동:1
  +엄단하다:동:3
  +엄동:명:1
  +엄동설한:명:2
  +엄두:명:27
  +엄마:명:813
  +엄명:명:1
  +엄명하다:동:1
  +엄밀성:명:4
  +엄밀하다:형:16
  +엄밀히:부:11
  +엄벌:명:1
  +엄벌하다:동:2
  +엄부자모:명:1
  +엄살:명:9
  +엄살떨다:동:1
  +엄선:명:2
  +엄선되다:동:1
  +엄선하다:동:1
  +엄숙성:명:1
  +엄숙주의:명:3
  +엄숙주의적:관:1
  +엄숙하다:형:29
  +엄숙히:부:1
  +엄습하다:동:5
  +엄연하다:형:15
  +엄연히:부:19
  +엄장:명:1
  +엄정:명:3
  +엄정중립:명:3
  +엄정하다:형:21
  +엄정히:부:3
  +엄존하다:동:2
  +엄중:명:7
  +엄중하다:형:14
  +엄중히:부:5
  +엄지:명:14
  +엄지발가락:명:7
  +엄지손가락:명:20
  +엄지손톱:명:1
  +엄청:부:12
  +엄청나다:형:240
  +엄포:명:13
  +엄하다:형:21
  +엄히:부:2
  +업:명:8
  +업계:명:102
  +업그레이드:명:1
  +업다:동:50
  +업둥이:명:1
  +업무:명:207
  +업무량:명:1
  +업무부:명:2
  +업무적:명:1
  +업보:명:4
  +업소:명:55
  +업수이여기다:동:2
  +업신여기다:동:13
  +업자:명:17
  +업적:명:74
  +업종:명:81
  +업주:명:18
  +업체:명:204
  +업히다:동:11
  +없다:형:8,969
  +없애다:동:114
  +없어지다:동:216
  +없어하다:동:2
  +없이:부:1,103
  +없이하다:동:1
  +엇:불:3
  +엇가다:동:1
  +엇각:명:1
  +엇갈리다:동:32
  +엇물리다:동:1
  +엇비슷하다:형:4
  +엇쭈:부:1
  +엉:감:10
  +엉거주춤:부:8
  +엉거주춤거리다:동:1
  +엉거주춤하다:동:1
  +엉거주춤하다:형:1
  +엉겁결에:부:5
  +엉겅퀴:명:1
  +엉구다:동:1
  +엉금엉금:부:5
  +엉기다:동:16
  +엉너리:명:1
  +엉너릿손:명:1
  +엉덩배지기:명:1
  +엉덩이:명:64
  +엉덩짝:명:1
  +엉뚱하다:형:72
  +엉망:명:34
  +엉망진창:명:3
  +엉성하다:형:10
  +엉엉:감:1
  +엉엉:부:9
  +엉이없다:형:1
  +엉클어지다:동:1
  +엉큼하다:형:5
  +엉키다:동:12
  +엉터리:명:23
  +엊그제:명:6
  +엊그제:부:17
  +엊저녁:명:1
  +엎다:동:8
  +엎드러지다:동:1
  +엎드려뛰기:명:2
  +엎드려뻗쳐:명:1
  +엎드리다:동:54
  +엎어지다:동:13
  +엎지르다:동:3
  +엎질러지다:동:2
  +엎치다:동:4
  +엎치락뒤치락하다:동:2
  +에:감:59
  +에고:명:2
  +에구:감:3
  +에구구:감:1
  +에구머니:감:3
  +에그:감:10
  +에그머니나:감:3
  +에그스탠드:명:1
  +에끼:감:1
  +에나멜선:명:8
  +에너지:명:190
  +에너지난:명:1
  +에너지부:명:2
  +에너지원:명:9
  +에너지화하다:동:1
  +에네르기:명:5
  +에누리:명:2
  +에두르다:동:2
  +에라:감:7
  +에러:명:1
  +에렉투스:명:2
  +에렵다:형:1
  +에로:명:10
  +에로물:명:2
  +에로스:명:6
  +에로티시즘:명:3
  +에로틱하다:형:1
  +에멘탈:명:3
  +에모리엔트:명:1
  +에뮬레이션:명:2
  +에뮬레이터:명:2
  +에미:명:1
  +에미나이:명:5
  +에부수수하다:형:1
  +에브리바디:명:1
  +에세이:명:12
  +에세이스트:명:2
  +에센스:명:3
  +에스:명:2
  +에스:명:3
  +에스더블유:명:1
  +에스에스오:명:18
  +에스에프:명:5
  +에스엠:명:2
  +에스오에스:명:1
  +에스컬레이터:명:6
  +에스케이프:명:1
  +에스코트:명:1
  +에스코트하다:동:2
  +에스트로겐:명:3
  +에스티:명:1
  +에스프레소:명:6
  +에스프리:명:1
  +에씨:감:1
  +에어:명:5
  +에어로빅:명:8
  +에어로빅스:명:1
  +에어리어:명:3
  +에어백:명:23
  +에어백깅:명:4
  +에어컨:명:24
  +에에:감:1
  +에우다:동:1
  +에워싸다:동:10
  +에워싸이다:동:4
  +에이:감:16
  +에이:명:11
  +에이:명:6
  +에이그:감:5
  +에이급:명:2
  +에이디:명:6
  +에이라인:명:2
  +에이비시:명:1
  +에이비형:명:1
  +에이스:명:2
  +에이에스:명:4
  +에이엘엠:명:1
  +에이전트:명:3
  +에이전트오렌지:명:1
  +에이즈:명:20
  +에이치디엘:명:2
  +에이치아이브이:명:3
  +에이치엘티:명:1
  +에이치티엠엘:명:2
  +에이커:의:1
  +에이티:명:5
  +에이티엠:명:3
  +에이포:명:3
  +에이플러스:명:1
  +에일리언:명:1
  +에잇:감:9
  +에지테이션:명:1
  +에칭:명:2
  +에코:명:5
  +에탄올:명:4
  +에테르:명:14
  +에티켓:명:6
  +에틸렌:명:4
  +에포크:명:2
  +에프:명:4
  +에프에이:명:1
  +에프엠:명:9
  +에프티피:명:1
  +에피소드:명:16
  +에픽:명:1
  +에필로그:명:2
  +에헤:감:1
  +에헤헤:부:1
  +에헴:감:1
  +에후리치다:동:1
  +엑스:명:16
  +엑스:명:5
  +엑스레이:명:6
  +엑스선:명:3
  +엑스터시:명:2
  +엑스트라:명:2
  +엑스티:명:1
  +엑스판션:명:1
  +엑스포:명:44
  +엔:명:6
  +엔:의:44
  +엔간하다:형:1
  +엔고:명:9
  +엔다카:명:1
  +엔드:명:1
  +엔딩:명:1
  +엔분:의:1
  +엔엘:명:4
  +엔엘피디아르:명:1
  +엔이에이:명:1
  +엔젤피시:명:1
  +엔지:명:4
  +엔지니어:명:12
  +엔지니어링:명:1
  +엔진:명:36
  +엔카:명:3
  +엔카풍:명:1
  +엔터테이너:명:2
  +엔트로피:명:3
  +엔화:명:4
  +엘디:명:7
  +엘디엘:명:1
  +엘레간트:명:1
  +엘레간트하다:형:1
  +엘리민트:명:2
  +엘리베이터:명:39
  +엘리트:명:19
  +엘리트적:관:2
  +엘리트적:명:1
  +엘리트주의:명:2
  +엘리트주의적:관:3
  +엘리트층:명:1
  +엘리티즘:명:1
  +엘에스디:명:1
  +엘에이치에이:명:2
  +엘엔지관:명:1
  +엘제트에이치:명:1
  +엘토르오가와형:명:1
  +엘피:명:5
  +엘피지:명:1
  +엠디:명:1
  +엠브이피:명:6
  +엠블럼:명:1
  +엠비에이:명:2
  +엠시:명:38
  +엠시론:명:2
  +엠앤드에이:명:6
  +엠엘주의자:명:1
  +엠원:명:1
  +엠유아르에이:명:1
  +엠티:명:1
  +엡시딕:명:2
  +여:감:1
  +여:명:18
  +여:명:42
  +여가:명:29
  +여가수:명:4
  +여각:명:2
  +여간:부:48
  +여간하다:형:5
  +여감방:명:1
  +여객:명:7
  +여객기:명:6
  +여객선:명:6
  +여건:명:99
  +여겨지다:동:94
  +여경:명:1
  +여경찰관:명:1
  +여고:명:7
  +여고부:명:6
  +여고생:명:17
  +여공:명:7
  +여과:명:7
  +여과기:명:1
  +여과되다:동:2
  +여과시키다:동:1
  +여과제:명:5
  +여관:명:34
  +여관방:명:7
  +여관비:명:1
  +여관집:명:1
  +여관촌:명:1
  +여교사:명:7
  +여교포:명:1
  +여군:명:33
  +여권:명:1
  +여권:명:17
  +여권:명:47
  +여권주의자:명:1
  +여그:대:2
  +여급:명:2
  +여기:대:1,221
  +여기다:동:212
  +여기저기:명:105
  +여깄:불:3
  +여뀌:명:1
  +여남은:관:5
  +여남은:수:2
  +여념:명:16
  +여노인:명:2
  +여느:관:37
  +여단:명:11
  +여단원:명:1
  +여닫다:동:3
  +여담:명:1
  +여당:명:93
  +여대:명:1
  +여대부:명:1
  +여대생:명:19
  +여덟:관:40
  +여덟:수:2
  +여덟아홉:관:1
  +여덟아홉:수:1
  +여독:명:2
  +여동문:명:1
  +여동생:명:29
  +여드레:명:2
  +여드름:명:7
  +여드름투성이:명:1
  +여든:관:3
  +여든:수:10
  +여러:관:1,348
  +여러모로:부:15
  +여러분:대:178
  +여러해살이:명:4
  +여럿:명:54
  +여럿이:명:1
  +여력:명:6
  +여로:명:1
  +여로:명:2
  +여론:명:111
  +여론화되다:동:2
  +여류:명:11
  +여름:명:283
  +여름날:명:12
  +여름밤:명:3
  +여름새:명:21
  +여름옷:명:3
  +여름철:명:53
  +여름털:명:3
  +여름휴가:명:4
  +여리다:형:9
  +여말:명:1
  +여망:명:5
  +여며지다:동:2
  +여명:명:4
  +여문모:명:1
  +여물:명:2
  +여물다:동:7
  +여물다:형:1
  +여미다:동:15
  +여배우:명:3
  +여백:명:6
  +여벌:명:1
  +여변호사:명:2
  +여보:감:72
  +여보게:감:4
  +여보세요:감:67
  +여보쇼:감:2
  +여보시게:감:1
  +여보시오:감:2
  +여복:명:1
  +여봐라:감:4
  +여봐란듯이:부:2
  +여부:명:194
  +여북하다:형:2
  +여분:명:12
  +여비:명:3
  +여사:명:74
  +여사무원:명:2
  +여사원:명:7
  +여삼추:명:3
  +여상:명:3
  +여생:명:8
  +여선생:명:4
  +여선생님:명:6
  +여섯:관:82
  +여섯:수:7
  +여섯일곱:수:1
  +여섯째:관:2
  +여섯째:수:1
  +여성:명:1,212
  +여성계:명:5
  +여성관:명:5
  +여성부:명:1
  +여성부장:명:1
  +여성상:명:11
  +여성스럽다:형:8
  +여성적:명:8
  +여성층:명:9
  +여성학:명:1
  +여성형:명:2
  +여성화되다:동:1
  +여세:명:1
  +여소야대:명:3
  +여수하다:동:1
  +여승:명:1
  +여시:명:3
  +여식:명:1
  +여신:명:12
  +여신:명:23
  +여신상:명:1
  +여신자:명:1
  +여실히:부:13
  +여아:명:9
  +여야:명:56
  +여염:명:4
  +여염집:명:4
  +여왕:명:17
  +여우:명:1
  +여우:명:35
  +여우놀이:명:1
  +여운:명:8
  +여울:명:2
  +여울지다:동:1
  +여위다:동:4
  +여유:명:110
  +여유감:명:1
  +여유로워지다:동:1
  +여유롭다:형:7
  +여유미:명:4
  +여유분:명:3
  +여의다:동:4
  +여의사:명:1
  +여의사:명:2
  +여의주:명:3
  +여의찮다:형:1
  +여의하다:형:9
  +여인:명:105
  +여인네:명:1
  +여인상:명:2
  +여인숙:명:9
  +여자:명:1,645
  +여자관계:명:1
  +여자부:명:11
  +여자형:명:1
  +여장:명:5
  +여장군:명:2
  +여적:부:3
  +여적지:부:1
  +여전:명:1
  +여전도회:명:2
  +여전하다:형:21
  +여전히:부:268
  +여정:명:1
  +여정:명:8
  +여종업원:명:11
  +여죄:명:1
  +여죄수:명:1
  +여주인:명:3
  +여주인공:명:8
  +여중생:명:3
  +여지:명:8
  +여지:의:35
  +여지껏:부:14
  +여지없다:형:1
  +여지없이:부:17
  +여직원:명:15
  +여진:명:1
  +여쭈다:동:34
  +여쭙다:동:4
  +여차:감:2
  +여차장:명:2
  +여차저차하다:동:1
  +여차하다:동:7
  +여체:명:3
  +여초:명:2
  +여치:명:1
  +여타:명:19
  +여탕:명:11
  +여태:부:41
  +여태껏:부:7
  +여투다:동:2
  +여파:명:16
  +여판사:명:2
  +여편네:명:21
  +여하:명:9
  +여하간:부:2
  +여하다:형:2
  +여하튼:부:11
  +여하하다:형:4
  +여학교:명:2
  +여학생:명:62
  +여학생회:명:1
  +여학우:명:1
  +여한:명:3
  +여행:명:226
  +여행가:명:1
  +여행객:명:12
  +여행권:명:2
  +여행기:명:2
  +여행길:명:3
  +여행단:명:1
  +여행담:명:4
  +여행사:명:26
  +여행용:명:15
  +여행원:명:1
  +여행자:명:14
  +여행지:명:3
  +여행하다:동:30
  +여형사:명:1
  +여화가:명:1
  +여흥:명:1
  +여희다:동:1
  +역:명:11
  +역:명:11
  +역:명:136
  +역:명:2
  +역:명:2
  +역:명:48
  +역가:명:1
  +역겹다:형:19
  +역경:명:7
  +역공:명:2
  +역관계:명:1
  +역관권:명:1
  +역광:명:1
  +역구내:명:1
  +역구지분:명:2
  +역규정적:명:1
  +역기:명:1
  +역기능:명:9
  +역기능적:명:1
  +역내:명:2
  +역달걀형:명:1
  +역당:명:1
  +역대:명:30
  +역도:명:5
  +역도부:명:1
  +역동성:명:6
  +역동적:관:1
  +역동적:명:6
  +역동하다:동:1
  +역량:명:41
  +역려:명:1
  +역력하다:형:18
  +역력히:부:3
  +역류:명:4
  +역류되다:동:2
  +역류하다:동:1
  +역마살:명:1
  +역무실:명:1
  +역무원:명:10
  +역법:명:8
  +역병:명:1
  +역본:명:1
  +역부족:명:10
  +역분전:명:3
  +역분해하다:동:1
  +역사:명:13
  +역사:명:3
  +역사:명:7
  +역사:명:912
  +역사가:명:93
  +역사관:명:5
  +역사상:명:31
  +역사서:명:7
  +역사성:명:1
  +역사의식:명:12
  +역사적:관:220
  +역사적:명:82
  +역사주의:명:7
  +역사주의자:명:2
  +역사주의적:관:6
  +역사책:명:13
  +역사학:명:25
  +역사학계:명:6
  +역사학과:명:1
  +역사학자:명:10
  +역사학적:명:1
  +역사화되다:동:1
  +역산하다:동:1
  +역살:명:1
  +역서:명:1
  +역서:명:1
  +역서:명:2
  +역설:명:1
  +역설:명:20
  +역설적:명:19
  +역설하다:동:30
  +역성:명:3
  +역성들다:동:1
  +역성혁명:명:1
  +역세권:명:1
  +역수출되다:동:1
  +역순:명:2
  +역술:명:2
  +역습:명:5
  +역습하다:동:1
  +역승화:명:2
  +역시:접:617
  +역역:명:6
  +역연하다:형:1
  +역연히:부:1
  +역외국:명:1
  +역이용하다:동:1
  +역인:명:2
  +역일:명:1
  +역임:명:2
  +역임하다:동:10
  +역작:명:1
  +역작용:명:1
  +역장:명:6
  +역적:명:8
  +역전:명:12
  +역전:명:2
  +역전:명:2
  +역전되다:동:1
  +역전승:명:3
  +역전승하다:동:2
  +역전시키다:동:3
  +역전패:명:1
  +역점:명:1
  +역점:명:26
  +역정:명:3
  +역정:명:5
  +역제:명:9
  +역조:명:6
  +역증:명:1
  +역질:명:1
  +역촌:명:1
  +역추적하다:동:1
  +역컴파일:명:1
  +역풍:명:2
  +역피라미드:명:1
  +역하다:형:2
  +역학:명:1
  +역학:명:5
  +역학:명:50
  +역학자:명:1
  +역학적:관:9
  +역학적:명:3
  +역할:명:457
  +역할극:명:3
  +역할론:명:3
  +역행:명:1
  +역행적:관:1
  +역행적:명:1
  +역행하다:동:9
  +역효과:명:4
  +엮다:동:32
  +엮어지다:동:6
  +엮은이:명:1
  +엮음:명:5
  +엮이다:동:1
  +연:관:4
  +연:명:1
  +연:명:1
  +연:명:1
  +연:명:23
  +연:명:3
  +연가:명:1
  +연간:명:52
  +연간권:명:2
  +연거푸:부:10
  +연건축면적:명:1
  +연건평:명:4
  +연겨자:명:2
  +연결:명:44
  +연결되다:동:98
  +연결망:명:1
  +연결선:명:1
  +연결시키다:동:28
  +연결하다:동:92
  +연계:명:14
  +연계되다:동:9
  +연계성:명:1
  +연계시키다:동:11
  +연계하다:동:5
  +연고:명:1
  +연고:명:8
  +연고권:명:4
  +연고자:명:1
  +연고지:명:6
  +연공서열:명:1
  +연관:명:2
  +연관:명:44
  +연관되다:동:23
  +연관성:명:9
  +연관시키다:동:2
  +연교차:명:2
  +연구:명:816
  +연구:부:1
  +연구가:명:6
  +연구과:명:2
  +연구관:명:5
  +연구되다:동:10
  +연구되어지다:동:1
  +연구부:명:3
  +연구부장:명:1
  +연구비:명:5
  +연구사적:관:5
  +연구사적:명:4
  +연구서:명:3
  +연구소:명:113
  +연구소장:명:1
  +연구실:명:28
  +연구실장:명:2
  +연구용:명:1
  +연구원:명:39
  +연구원:명:7
  +연구자:명:93
  +연구직:명:2
  +연구진:명:2
  +연구하다:동:146
  +연구학:명:1
  +연구회:명:9
  +연극:명:391
  +연극계:명:29
  +연극과:명:3
  +연극관:명:1
  +연극론:명:1
  +연극배우:명:6
  +연극사:명:6
  +연극사적:관:2
  +연극상:명:2
  +연극인:명:5
  +연극적:관:18
  +연극적:명:2
  +연극제:명:5
  +연극패:명:1
  +연극학과:명:1
  +연극학자:명:1
  +연극화하다:동:1
  +연금:명:6
  +연금:명:9
  +연금되다:동:1
  +연금술:명:1
  +연금술적:관:1
  +연기:명:131
  +연기:명:18
  +연기:명:27
  +연기:명:91
  +연기되다:동:17
  +연기력:명:13
  +연기받다:동:1
  +연기법:명:1
  +연기상:명:3
  +연기설:명:1
  +연기설:명:3
  +연기시키다:동:1
  +연기인:명:1
  +연기자:명:93
  +연기파:명:2
  +연기하다:동:11
  +연기하다:동:19
  +연꽃:명:12
  +연꽃무늬:명:7
  +연꽃형:명:1
  +연날리기:명:2
  +연내:명:4
  +연놈:명:2
  +연단:명:1
  +연달다:동:10
  +연대:명:16
  +연대:명:41
  +연대:명:6
  +연대감:명:2
  +연대기:명:5
  +연대기적:관:3
  +연대기적:명:3
  +연대기학:명:1
  +연대성:명:2
  +연대장:명:7
  +연대장실:명:1
  +연대적:명:1
  +연대하다:동:11
  +연도:명:20
  +연도:명:4
  +연동:명:3
  +연동제:명:1
  +연두:명:3
  +연두:명:5
  +연두색:명:7
  +연둣빛:명:1
  +연등:명:1
  +연등회:명:1
  +연락:명:95
  +연락드리다:동:2
  +연락망:명:3
  +연락받다:동:2
  +연락병:명:1
  +연락부:명:1
  +연락선:명:1
  +연락책:명:1
  +연락처:명:8
  +연락하다:동:48
  +연령:명:42
  +연령층:명:12
  +연례:명:3
  +연례적:명:3
  +연례행사:명:2
  +연로하다:형:2
  +연료:명:46
  +연료유:명:2
  +연루:명:3
  +연루되다:동:4
  +연루시키다:동:1
  +연루자:명:1
  +연륜:명:9
  +연리:명:1
  +연립:명:15
  +연마:명:1
  +연마기:명:5
  +연마장:명:1
  +연마하다:동:3
  +연만하다:형:1
  +연말:명:66
  +연말연시:명:2
  +연맹:명:54
  +연맹전:명:10
  +연맹체:명:2
  +연맹형:명:1
  +연면:명:1
  +연면적:명:5
  +연명:명:1
  +연명되다:동:1
  +연명하다:동:10
  +연모:명:1
  +연모:명:3
  +연못:명:39
  +연못가:명:5
  +연무관:명:1
  +연무대:명:2
  +연민:명:18
  +연발:명:2
  +연발하다:동:12
  +연밥:명:1
  +연방:명:59
  +연방:부:8
  +연방군:명:1
  +연방제:명:5
  +연배:명:1
  +연변:명:1
  +연변:명:1
  +연병:명:1
  +연병설:명:1
  +연병장:명:6
  +연보:명:2
  +연보:명:2
  +연보랏빛:명:5
  +연봉:명:1
  +연봉:명:8
  +연분:명:1
  +연분:명:1
  +연분홍빛:명:1
  +연사:명:1
  +연사:명:7
  +연사흘:명:1
  +연산:명:23
  +연산:명:5
  +연산기:명:1
  +연산하다:동:2
  +연상:명:11
  +연상:명:13
  +연상되다:동:12
  +연상시키다:동:18
  +연상차:명:3
  +연상하다:동:29
  +연서:명:1
  +연서:명:3
  +연석회의:명:5
  +연설:명:54
  +연설문:명:8
  +연설자:명:2
  +연설조:명:1
  +연설하다:동:1
  +연설회:명:9
  +연설회장:명:4
  +연성:명:1
  +연성:명:4
  +연성화:명:1
  +연세:명:8
  +연소:명:1
  +연소되다:동:3
  +연소하다:동:1
  +연속:명:1
  +연속:명:61
  +연속극:명:19
  +연속되다:동:5
  +연속선:명:2
  +연속설:명:2
  +연속성:명:13
  +연속적:관:1
  +연속적:명:21
  +연속체:명:1
  +연속하다:동:6
  +연쇄:명:29
  +연쇄적:관:2
  +연쇄적:명:2
  +연쇄점:명:1
  +연수:명:27
  +연수과:명:1
  +연수부:명:2
  +연수비:명:1
  +연수생:명:1
  +연수원:명:6
  +연수유답:명:1
  +연수유전:명:1
  +연수유전답:명:2
  +연수처:명:1
  +연수회:명:5
  +연습:명:116
  +연습:명:15
  +연습기:명:1
  +연습량:명:1
  +연습생:명:1
  +연습시키다:동:2
  +연습실:명:14
  +연습용:명:1
  +연습장:명:5
  +연습장:명:9
  +연습장지:명:1
  +연습하다:동:34
  +연승:명:10
  +연승하다:동:1
  +연시:명:1
  +연신:부:24
  +연안:명:29
  +연안국:명:1
  +연애:명:39
  +연애결혼:명:9
  +연애시:명:1
  +연애지상주의자:명:1
  +연애편지:명:3
  +연애하다:동:8
  +연약하다:형:14
  +연어:명:1
  +연어:명:5
  +연역:명:6
  +연역되다:동:2
  +연역적:관:1
  +연역하다:동:1
  +연연하다:동:3
  +연영과:명:1
  +연예:명:2
  +연예가:명:1
  +연예계:명:6
  +연예인:명:57
  +연오렌지:명:1
  +연원:명:3
  +연원하다:동:1
  +연유:명:9
  +연유되다:동:3
  +연유하다:동:18
  +연이틀:명:2
  +연인:명:33
  +연인원:명:1
  +연일:명:21
  +연임:명:1
  +연임하다:동:3
  +연잇다:동:10
  +연자방아:명:2
  +연작:명:2
  +연작:명:9
  +연장:명:20
  +연장:명:33
  +연장감:명:1
  +연장되다:동:13
  +연장받다:동:1
  +연장선:명:8
  +연장시키다:동:4
  +연장자:명:2
  +연장전:명:1
  +연장하다:동:9
  +연재:명:1
  +연재되다:동:2
  +연재소설:명:1
  +연재하다:동:2
  +연적:명:1
  +연적:명:2
  +연정:명:1
  +연정:명:11
  +연정하다:동:1
  +연좌:명:1
  +연좌시위:명:1
  +연좌차:명:3
  +연주:명:3
  +연주:명:31
  +연주가:명:6
  +연주곡:명:2
  +연주되다:동:1
  +연주법:명:1
  +연주소:명:2
  +연주인:명:7
  +연주자:명:11
  +연주하다:동:1
  +연주하다:동:18
  +연주회:명:13
  +연줄:명:2
  +연줄:명:2
  +연중:명:13
  +연중무휴:명:1
  +연중행사:명:1
  +연지:명:4
  +연직:명:3
  +연차:명:2
  +연차적:명:2
  +연착:명:4
  +연착륙:명:2
  +연착륙시키다:동:1
  +연착하다:동:1
  +연찬:명:1
  +연천계:명:3
  +연철:명:1
  +연체:명:11
  +연체동물:명:1
  +연체료:명:1
  +연초:명:1
  +연초:명:19
  +연초록:명:1
  +연출:명:81
  +연출가:명:19
  +연출되다:동:6
  +연출력:명:1
  +연출상:명:1
  +연출선:명:1
  +연출자:명:23
  +연출작:명:1
  +연출적:명:1
  +연출진:명:1
  +연출하다:동:34
  +연층:명:1
  +연치:명:1
  +연타:명:1
  +연탄:명:33
  +연탄가스:명:7
  +연탄보일러:명:1
  +연탄불:명:7
  +연탄아궁이:명:1
  +연탄장수:명:1
  +연탄재:명:3
  +연탄집게:명:5
  +연통:명:3
  +연판장:명:2
  +연패:명:12
  +연패:명:6
  +연평균:명:15
  +연표:명:9
  +연필:명:54
  +연필깎이:명:1
  +연필심:명:2
  +연하:명:1
  +연하:명:4
  +연하다:동:2
  +연하다:형:23
  +연하장:명:1
  +연한:명:8
  +연합:명:80
  +연합고사:명:6
  +연합국:명:3
  +연합군:명:4
  +연합사:명:1
  +연합체:명:2
  +연합체적:명:1
  +연합통신:명:3
  +연합하다:동:3
  +연합회:명:18
  +연해:명:2
  +연해지다:동:2
  +연행:명:1
  +연행:명:31
  +연행되다:동:21
  +연행하다:동:12
  +연형:명:1
  +연호:명:18
  +연호하다:동:2
  +연화:명:1
  +연화대:명:1
  +연화부수형:명:1
  +연화석:명:1
  +연회:명:7
  +연회비:명:2
  +연회석:명:1
  +연후:명:1
  +연휴:명:39
  +연희:명:1
  +연희자:명:1
  +열:관:132
  +열:명:122
  +열:명:4
  +열:수:17
  +열강:명:7
  +열거:명:3
  +열거되다:동:4
  +열거하다:동:14
  +열고:명:1
  +열광:명:2
  +열광시키다:동:1
  +열광적:명:8
  +열광하다:동:6
  +열기:명:41
  +열나다:동:1
  +열나흘:수:1
  +열나흘날:명:1
  +열네:관:6
  +열넷:수:1
  +열녀:명:8
  +열녀상:명:1
  +열다:동:2
  +열다:동:658
  +열다섯:관:8
  +열다섯:수:2
  +열대:명:26
  +열대림:명:2
  +열대성:명:2
  +열대어:명:1
  +열대여섯:관:1
  +열댓:관:3
  +열댓:수:1
  +열도:명:1
  +열독하다:동:1
  +열두:관:50
  +열두서너:관:2
  +열두어:관:2
  +열등:명:1
  +열등감:명:17
  +열등반:명:1
  +열등생:명:6
  +열등성:명:16
  +열등의식:명:4
  +열등하다:형:32
  +열띠다:형:12
  +열람:명:2
  +열람권:명:3
  +열람실:명:4
  +열람하다:동:7
  +열량:명:11
  +열려지다:동:15
  +열렬:명:1
  +열렬하다:형:17
  +열렬히:부:2
  +열리다:동:15
  +열리다:동:459
  +열린사회:명:1
  +열망:명:13
  +열망하다:동:8
  +열매:명:56
  +열명:명:1
  +열무:명:3
  +열무김치:명:1
  +열반:명:18
  +열반적정:명:1
  +열반하다:동:2
  +열변:명:5
  +열병:명:3
  +열병하다:동:1
  +열부:명:1
  +열불:명:3
  +열사:명:1
  +열사:명:14
  +열서너:관:2
  +열선:명:1
  +열섬:명:3
  +열성:명:1
  +열성:명:9
  +열성껏:부:1
  +열성적:명:6
  +열성파:명:1
  +열세:관:20
  +열세:명:16
  +열쇠:명:47
  +열쇠걸이:명:2
  +열쇠고리:명:2
  +열심:명:10
  +열심으로:부:1
  +열심히:부:328
  +열십자:명:1
  +열아홉:관:6
  +열아홉:수:17
  +열악하다:형:24
  +열애:명:1
  +열애하다:동:1
  +열약:명:1
  +열어젖혀지다:동:1
  +열어젖히다:동:13
  +열없다:형:1
  +열에너지:명:3
  +열여덟:관:4
  +열여덟:수:4
  +열여드렛날:명:1
  +열여섯:관:6
  +열여섯:수:10
  +열역학:명:1
  +열연:명:5
  +열연하다:동:5
  +열외:명:2
  +열외자:명:1
  +열위:명:1
  +열의:명:5
  +열이틀:명:5
  +열일곱:관:2
  +열일곱:수:5
  +열적다:형:2
  +열전:명:22
  +열전도성:명:1
  +열정:명:46
  +열정적:명:8
  +열주식:명:1
  +열중:명:1
  +열중하다:동:34
  +열증:명:1
  +열차:명:82
  +열차관:명:1
  +열창:명:2
  +열창하다:동:2
  +열처리:명:1
  +열치다:동:1
  +열치다:동:1
  +열통:명:1
  +열판:명:1
  +열패감:명:1
  +열편:명:1
  +열편상:명:1
  +열풍:명:11
  +열하루:명:1
  +열한:관:16
  +열화:명:3
  +열흘:명:33
  +열흘치:명:1
  +엷다:형:32
  +엷어지다:동:3
  +염:명:23
  +염:명:9
  +염가:명:4
  +염기:명:1
  +염기:명:2
  +염기성:명:18
  +염낭:명:1
  +염낭쌈지:명:1
  +염두:명:40
  +염려:명:54
  +염려되다:동:4
  +염려스러워하다:동:1
  +염려스럽다:형:5
  +염려증:명:2
  +염려하다:동:24
  +염료:명:3
  +염류:명:5
  +염문:명:1
  +염문설:명:1
  +염병:명:1
  +염병하다:동:1
  +염병할:감:2
  +염병할:관:1
  +염분:명:3
  +염불:명:8
  +염불하다:동:1
  +염산:명:12
  +염색:명:10
  +염색되다:동:2
  +염색업체:명:1
  +염색체:명:12
  +염색하다:동:5
  +염세주의:명:1
  +염소:명:16
  +염소:명:5
  +염알이꾼:명:1
  +염원:명:18
  +염원하다:동:3
  +염전:명:1
  +염전:명:5
  +염정무이:명:1
  +염좌:명:4
  +염주:명:1
  +염주:명:2
  +염주나무:명:1
  +염증:명:12
  +염증:명:7
  +염천:명:1
  +염초:명:4
  +염출하다:동:1
  +염치:명:5
  +염치없다:형:1
  +염치없이:부:2
  +염탐하다:동:2
  +염하다:동:2
  +염화:명:1
  +염화나트륨:명:1
  +염화시중:명:1
  +염화칼륨:명:5
  +염화플루오르화탄소:명:15
  +엽관:명:1
  +엽병:명:1
  +엽삼:명:1
  +엽서:명:22
  +엽승:명:3
  +엽액:명:1
  +엽전:명:6
  +엽차:명:6
  +엽총:명:2
  +엿:명:9
  +엿듣다:동:5
  +엿보다:동:51
  +엿보이다:동:25
  +엿새:명:5
  +엿장수:명:3
  +엿판:명:1
  +영:관:2
  +영:명:1
  +영:명:3
  +영:명:3
  +영:명:5
  +영:부:25
  +영각:명:1
  +영감:명:23
  +영감:명:27
  +영감님:명:13
  +영감마님:명:4
  +영감탱이:명:2
  +영거하다:동:2
  +영겁:명:1
  +영결식:명:1
  +영계:명:3
  +영계:명:5
  +영고:명:2
  +영고성쇠:명:1
  +영공:명:5
  +영관:명:3
  +영광:명:40
  +영광되다:동:1
  +영광스럽다:형:3
  +영교:명:1
  +영구:명:10
  +영구불변:명:1
  +영구적:관:1
  +영구차:명:2
  +영구화:명:1
  +영구화하다:동:1
  +영구히:부:3
  +영글다:동:4
  +영남:명:21
  +영내:명:1
  +영내:명:5
  +영농:명:21
  +영농비:명:3
  +영도하다:동:1
  +영동:명:8
  +영락없다:형:3
  +영락없이:부:7
  +영령:명:3
  +영롱하다:형:11
  +영리:명:8
  +영리적:명:1
  +영리하다:형:6
  +영목:명:2
  +영문:명:1
  +영문:명:23
  +영문:명:25
  +영문과:명:4
  +영문자:명:2
  +영문학:명:9
  +영문학과:명:1
  +영문학자:명:1
  +영민하다:형:2
  +영법:명:7
  +영빈관:명:8
  +영사:명:12
  +영사관:명:2
  +영사실:명:1
  +영상:명:3
  +영상:명:83
  +영상물:명:2
  +영상미:명:1
  +영상회:명:1
  +영생:명:4
  +영생하다:동:1
  +영서:명:3
  +영선공:명:2
  +영성:명:11
  +영성적:관:1
  +영성적:명:6
  +영세:명:16
  +영세:명:3
  +영세민:명:4
  +영세업자:명:1
  +영세하다:형:3
  +영속:명:1
  +영속시키다:동:1
  +영속적:명:3
  +영수:명:3
  +영수증:명:14
  +영수증철:명:1
  +영순위:명:1
  +영시:명:1
  +영시:명:1
  +영아:명:1
  +영아기:명:1
  +영악:명:1
  +영악스럽다:형:1
  +영악하다:형:11
  +영안실:명:10
  +영약:명:2
  +영양:명:101
  +영양가:명:12
  +영양과:명:1
  +영양과장:명:1
  +영양기:명:1
  +영양분:명:20
  +영양사:명:2
  +영양소:명:37
  +영양식:명:2
  +영양실조:명:5
  +영양원:명:1
  +영양학자:명:1
  +영어:명:2
  +영어:명:209
  +영어과:명:8
  +영어권:명:4
  +영어부:명:1
  +영어식:명:2
  +영업:명:62
  +영업국장:명:1
  +영업권:명:1
  +영업부:명:2
  +영업소:명:4
  +영업소장:명:2
  +영업시간:명:2
  +영업시키다:동:1
  +영업용:명:3
  +영업전:명:3
  +영업직:명:1
  +영업하다:동:4
  +영역:명:171
  +영역권:명:1
  +영역성:명:1
  +영역적:관:2
  +영역적:명:2
  +영영:부:15
  +영예:명:11
  +영예롭다:형:1
  +영욕:명:2
  +영웅:명:34
  +영웅담:명:1
  +영웅시되다:동:1
  +영웅시하다:동:1
  +영웅심:명:5
  +영웅적:관:1
  +영웅적:명:3
  +영원:명:9
  +영원불멸하다:동:2
  +영원불변하다:동:1
  +영원성:명:1
  +영원하다:형:71
  +영원히:부:57
  +영위하다:동:17
  +영유:명:1
  +영유권:명:4
  +영유하다:동:1
  +영의정:명:2
  +영인되다:동:1
  +영입:명:7
  +영입되다:동:1
  +영입하다:동:6
  +영자:명:1
  +영자지:명:1
  +영장:명:5
  +영장:명:90
  +영장주의:명:4
  +영재:명:5
  +영적:관:12
  +영적:명:2
  +영전:명:1
  +영전하다:동:1
  +영접:명:4
  +영정:명:12
  +영주:명:14
  +영주:명:2
  +영주권:명:3
  +영주적:관:1
  +영지:명:1
  +영지:명:2
  +영차:감:5
  +영차영차:감:1
  +영창:명:1
  +영초:명:2
  +영초단:명:1
  +영치:명:1
  +영치금:명:1
  +영치기영차:감:1
  +영타:명:1
  +영토:명:47
  +영토적:관:1
  +영토적:명:1
  +영특하다:형:3
  +영포:명:1
  +영하:명:37
  +영한사전:명:1
  +영합적:명:1
  +영합하다:동:8
  +영해:명:3
  +영향:명:446
  +영향권:명:5
  +영향력:명:48
  +영향받다:동:7
  +영험자:명:1
  +영험하다:형:3
  +영혼:명:83
  +영혼스럽다:형:1
  +영화:명:565
  +영화:명:7
  +영화가:명:1
  +영화감독:명:5
  +영화계:명:12
  +영화과:명:2
  +영화관:명:13
  +영화광:명:1
  +영화롭다:형:3
  +영화배우:명:20
  +영화사:명:5
  +영화업:명:1
  +영화업체:명:1
  +영화인:명:6
  +영화적:관:2
  +영화적:명:1
  +영화제:명:52
  +영화판:명:2
  +영화형:명:1
  +영화화하다:동:4
  +옅다:형:8
  +옅어지다:동:1
  +옆:명:457
  +옆구리:명:37
  +옆길:명:1
  +옆눈:명:1
  +옆머리:명:1
  +옆면:명:2
  +옆모습:명:5
  +옆문:명:1
  +옆방:명:15
  +옆집:명:29
  +옆쪽:명:2
  +옆트임:명:2
  +예:감:354
  +예:대:16
  +예:명:19
  +예:명:451
  +예:명:62
  +예감:명:50
  +예감하다:동:7
  +예견:명:2
  +예견되다:동:8
  +예견적:관:1
  +예견하다:동:9
  +예결:명:2
  +예고:명:1
  +예고:명:16
  +예고되다:동:4
  +예고제:명:1
  +예고편:명:4
  +예고하다:동:30
  +예규:명:1
  +예금:명:109
  +예금계:명:1
  +예금액:명:1
  +예금자:명:4
  +예금주:명:6
  +예금하다:동:6
  +예기하다:동:13
  +예끼:감:1
  +예년:명:22
  +예농적:관:1
  +예농적:명:1
  +예능:명:6
  +예능계:명:13
  +예능국:명:1
  +예능대:명:1
  +예능인:명:1
  +예니레:명:1
  +예닐곱:관:4
  +예닐곱:수:2
  +예다:동:1
  +예단:명:2
  +예단하다:동:1
  +예대:명:2
  +예대:명:3
  +예독:명:1
  +예독하다:동:1
  +예리하다:형:15
  +예매:명:3
  +예매되다:동:1
  +예매하다:동:3
  +예명:명:5
  +예문:명:1
  +예문관:명:1
  +예물:명:7
  +예민:명:1
  +예민종:명:2
  +예민하다:형:28
  +예민해지다:동:4
  +예방:명:2
  +예방:명:62
  +예방법:명:1
  +예방책:명:4
  +예방하다:동:1
  +예방하다:동:43
  +예배:명:9
  +예배당:명:3
  +예배소:명:1
  +예배일:명:1
  +예법:명:4
  +예보:명:22
  +예보하다:동:1
  +예복:명:4
  +예복활:명:1
  +예불:명:3
  +예불기:명:2
  +예비:명:42
  +예비고사:명:1
  +예비군:명:14
  +예비령:명:1
  +예비부부:명:2
  +예비역:명:5
  +예비율:명:2
  +예비적:관:8
  +예비지식:명:1
  +예비품:명:2
  +예뻐지다:동:3
  +예뻐하다:동:5
  +예쁘다:형:221
  +예쁘장스레:부:2
  +예쁘장하다:형:1
  +예사:명:1
  +예사:명:12
  +예사로:부:7
  +예사롭다:형:19
  +예사소리:명:1
  +예산:명:139
  +예산서:명:12
  +예산실:명:1
  +예산실장:명:1
  +예산액:명:1
  +예삿일:명:5
  +예상:명:79
  +예상되다:동:109
  +예상률:명:1
  +예상외:명:14
  +예상일:명:1
  +예상자:명:2
  +예상하다:동:63
  +예선:명:33
  +예속:명:10
  +예속되다:동:6
  +예속민:명:3
  +예속받다:동:1
  +예속상교:명:1
  +예속성:명:2
  +예속시키다:동:2
  +예속적:관:1
  +예속적:명:1
  +예수교:명:2
  +예수금:명:1
  +예순:수:5
  +예순네:관:2
  +예순두:관:2
  +예순아홉:관:7
  +예순아홉:수:5
  +예순여섯:관:1
  +예순한:관:3
  +예술:명:945
  +예술가:명:133
  +예술가상:명:1
  +예술가적:관:1
  +예술가촌:명:11
  +예술계:명:8
  +예술과:명:1
  +예술관:명:3
  +예술단:명:5
  +예술론:명:7
  +예술론자:명:1
  +예술미:명:1
  +예술사:명:3
  +예술성:명:14
  +예술인:명:18
  +예술적:관:80
  +예술적:명:13
  +예술제:명:1
  +예술제상:명:1
  +예술촌:명:3
  +예술품:명:10
  +예술학:명:1
  +예술학과:명:1
  +예술화:명:4
  +예스:명:4
  +예습:명:3
  +예습하다:동:3
  +예시:명:1
  +예시:명:2
  +예시되다:동:2
  +예시적:관:1
  +예시하다:동:4
  +예식:명:5
  +예식장:명:8
  +예약:명:17
  +예약금:명:2
  +예약제:명:1
  +예약하다:동:11
  +예언:명:8
  +예언되다:동:1
  +예언서:명:1
  +예언자:명:8
  +예언적:명:1
  +예언하다:동:7
  +예열하다:동:2
  +예예:감:5
  +예외:명:63
  +예외적:명:12
  +예우:명:12
  +예우되다:동:2
  +예우받다:동:1
  +예우하다:동:3
  +예의:명:48
  +예의:명:5
  +예의:명:8
  +예의범절:명:3
  +예의적:명:1
  +예입:명:3
  +예전:명:121
  +예절:명:88
  +예절실:명:1
  +예정:명:11
  +예정:명:222
  +예정가:명:1
  +예정되다:동:45
  +예정일:명:18
  +예정자:명:10
  +예정하다:동:3
  +예제:명:1
  +예증:명:1
  +예증하다:동:1
  +예지:명:1
  +예찬:명:5
  +예찬론:명:1
  +예찬자:명:2
  +예찬하다:동:3
  +예체능:명:1
  +예체능계:명:1
  +예측:명:41
  +예측되다:동:10
  +예측하다:동:52
  +예치:명:1
  +예치금:명:5
  +예치되다:동:1
  +예치하다:동:7
  +예컨대:접:85
  +예탁금:명:7
  +예탁되다:동:2
  +예토:명:1
  +예화:명:2
  +옐로:명:1
  +옐로카드:명:1
  +옛:감:1
  +옛:관:158
  +옛것:명:8
  +옛글:명:2
  +옛날:명:1
  +옛날:명:351
  +옛날식:명:1
  +옛날이야기:명:18
  +옛다:감:1
  +옛말:명:13
  +옛말하다:동:1
  +옛사람:명:2
  +옛사랑:명:1
  +옛이야기:명:6
  +옛일:명:6
  +옛적:명:7
  +옛집:명:10
  +옛터:명:2
  +오:감:34
  +오:관:56
  +오:명:1
  +오:수:5
  +오가다:동:60
  +오가작통법:명:2
  +오가피:명:7
  +오갈피나무:명:3
  +오감:명:1
  +오거리:명:2
  +오경:명:1
  +오계:명:4
  +오곡:명:3
  +오곡밥:명:7
  +오골계:명:1
  +오관:명:3
  +오광대:명:2
  +오교:명:1
  +오구굿:명:1
  +오그라들다:동:3
  +오그라뜨리다:동:1
  +오그락지:명:1
  +오그리다:동:5
  +오글오글:부:2
  +오글오글하다:형:1
  +오금:명:11
  +오기:명:1
  +오기:명:10
  +오기:명:3
  +오냐:감:15
  +오냐오냐:감:3
  +오냐오냐하다:동:1
  +오너:명:1
  +오누이:명:24
  +오뉘:명:1
  +오뉴월:명:2
  +오늘:명:621
  +오늘:부:390
  +오늘날:명:299
  +오니:명:4
  +오니층:명:1
  +오다:동:3,350
  +오다:보:1,854
  +오다가다:부:1
  +오달지다:형:1
  +오답:명:3
  +오대륙:명:1
  +오대양:명:4
  +오덕:명:2
  +오데:대:3
  +오뎅:명:1
  +오도:명:2
  +오도독부:명:1
  +오도되다:동:1
  +오도방정:명:2
  +오도카니:부:1
  +오도하다:동:1
  +오도하다:동:3
  +오독:명:5
  +오독하다:동:1
  +오동:명:1
  +오동나무:명:9
  +오두막:명:7
  +오두막집:명:3
  +오두방정:명:2
  +오두품:명:1
  +오들오들:부:4
  +오등:명:1
  +오디션:명:2
  +오디오:명:8
  +오뚝:부:1
  +오뚝이:명:2
  +오뚝하다:형:5
  +오라:명:3
  +오라기:명:1
  +오라버니:명:15
  +오라범:명:21
  +오라비:명:5
  +오라이:감:2
  +오락:명:32
  +오락가락하다:동:4
  +오락성:명:1
  +오락실:명:7
  +오락적:명:2
  +오락하다:동:1
  +오락화:명:4
  +오락회:명:1
  +오랏줄:명:1
  +오랑캐:명:4
  +오래:부:227
  +오래가다:동:6
  +오래간만:명:29
  +오래다:형:26
  +오래달리기:명:2
  +오래도록:부:29
  +오래되다:동:68
  +오래오래:부:9
  +오래전:명:99
  +오랜:관:183
  +오랜만:명:90
  +오랫동안:명:161
  +오렌지:명:47
  +오렌지갈색:명:1
  +오렌지밤색:명:1
  +오렌지색:명:4
  +오렌지윗수염박쥐:명:1
  +오렌지족:명:2
  +오련하다:형:2
  +오련히:부:1
  +오로지:부:53
  +오롯이:부:2
  +오롯하다:형:1
  +오류:명:77
  +오류투성이:명:1
  +오륙백:관:3
  +오륙십:관:1
  +오륜:명:7
  +오르간:명:5
  +오르그:명:1
  +오르내리다:동:38
  +오르다:동:500
  +오르락내리락:부:1
  +오르락내리락하다:동:8
  +오르막:명:1
  +오르막길:명:2
  +오른:관:3
  +오른발:명:20
  +오른손:명:32
  +오른쪽:명:116
  +오른팔:명:8
  +오른편:명:1
  +오름:명:1
  +오름세:명:16
  +오름폭:명:1
  +오리:명:2
  +오리:명:25
  +오리나무:명:5
  +오리다:동:15
  +오리무중:명:2
  +오리발:명:3
  +오리방풀:명:1
  +오리엔탈리즘:명:1
  +오리엔테이션:명:11
  +오리엔트:명:12
  +오리엔트형:명:1
  +오리온자리:명:1
  +오리지널:명:8
  +오리털:명:2
  +오마니:명:5
  +오마주:명:1
  +오막살이:명:7
  +오만:관:19
  +오만:관:3
  +오만:명:13
  +오만불손하다:형:1
  +오만상:명:1
  +오만하다:형:8
  +오만해지다:동:1
  +오메:감:18
  +오메가:명:1
  +오명:명:5
  +오목:부:8
  +오목눈이:명:3
  +오목조목하다:형:1
  +오목판화:명:4
  +오목하다:형:3
  +오묘제:명:2
  +오묘하다:형:13
  +오무룩히:부:1
  +오물:명:13
  +오물오물:부:1
  +오물조물:부:1
  +오므라들다:동:2
  +오므라이스:명:3
  +오므리다:동:7
  +오믈렛:명:1
  +오미:감:4
  +오미자:명:1
  +오밀조밀하다:형:7
  +오바이트하다:동:1
  +오발:명:10
  +오밤중:명:1
  +오백:관:6
  +오백:수:1
  +오백만:관:2
  +오버:감:1
  +오버:명:1
  +오버래핑:명:1
  +오버랩되다:동:3
  +오버코트:명:3
  +오버하다:동:3
  +오버핸드:명:2
  +오보에:명:1
  +오복:명:2
  +오부:명:1
  +오붓이:부:1
  +오붓하다:형:4
  +오브제:명:3
  +오브젝트:명:5
  +오븐:명:18
  +오빠:명:222
  +오빠시:명:1
  +오사:명:1
  +오산:명:5
  +오색:명:5
  +오색구름:명:1
  +오색실:명:1
  +오색찬란하다:형:1
  +오석:명:1
  +오선지:명:1
  +오성:명:6
  +오성적:관:1
  +오소경제:명:1
  +오소리:명:2
  +오솔길:명:5
  +오수:명:1
  +오수:명:8
  +오순도순:부:10
  +오순절:명:1
  +오스스:부:2
  +오승목:명:1
  +오시:명:1
  +오식:명:1
  +오십:관:32
  +오십:수:6
  +오십견:명:1
  +오십두:관:1
  +오십만:관:3
  +오십보백보:명:3
  +오십사:관:1
  +오십오:관:4
  +오싹:부:1
  +오싹거리다:동:1
  +오싹오싹:부:1
  +오싹오싹하다:동:1
  +오싹하다:형:2
  +오싹해지다:동:3
  +오아시스:명:5
  +오악:명:2
  +오야붕:명:3
  +오얏:명:1
  +오얏나무:명:1
  +오어:명:2
  +오어게이트:명:1
  +오에스:명:6
  +오엠아르:명:6
  +오열:명:3
  +오열하다:동:2
  +오염:명:188
  +오염도:명:7
  +오염되다:동:59
  +오염물:명:3
  +오염시키다:동:35
  +오염원:명:6
  +오염자:명:3
  +오염치:명:1
  +오욕:명:5
  +오욕되다:동:1
  +오월:명:224
  +오음:명:1
  +오음성고:명:1
  +오이:명:24
  +오이김치:명:1
  +오이냉국:명:2
  +오이소박이:명:1
  +오이풀:명:2
  +오인:명:1
  +오인되다:동:3
  +오인하다:동:10
  +오일:명:1
  +오일:명:6
  +오일륙:명:21
  +오일장:명:4
  +오일칠:명:8
  +오일팔:명:33
  +오입:명:2
  +오입하다:동:1
  +오자:명:1
  +오자미:명:2
  +오장:명:4
  +오쟁이:명:2
  +오전:명:193
  +오전반:명:1
  +오점:명:2
  +오족:명:1
  +오존:명:33
  +오존층:명:32
  +오죽:부:8
  +오죽이나:부:5
  +오죽하다:형:17
  +오줌:명:28
  +오줌깨:명:1
  +오줌장군:명:2
  +오지:명:5
  +오지게:부:1
  +오지다:형:2
  +오지독:명:2
  +오지랖:명:6
  +오지선다:명:1
  +오직:부:102
  +오진하다:동:1
  +오징어:명:94
  +오징어잡이:명:20
  +오징어포:명:3
  +오차:명:14
  +오차율:명:2
  +오찬:명:5
  +오천:관:10
  +오첩반상:명:1
  +오촌:명:3
  +오층탑:명:1
  +오케스트라:명:11
  +오케이:감:16
  +오케이:명:5
  +오케이되다:동:1
  +오타:명:1
  +오토:명:1
  +오토메이션:명:1
  +오토바이:명:12
  +오톨도톨:부:1
  +오톨도톨하다:형:1
  +오티움:명:2
  +오판:명:7
  +오판하다:동:1
  +오팔:명:2
  +오퍼랜드:명:1
  +오퍼레이터:명:2
  +오퍼레이팅:명:1
  +오퍼상:명:1
  +오페라:명:46
  +오페라단:명:3
  +오페라좌:명:1
  +오프:명:4
  +오프더레코드:명:1
  +오픈:명:11
  +오픈카:명:1
  +오픈하다:동:6
  +오피스텔:명:15
  +오한:명:6
  +오합지졸:명:1
  +오해:명:59
  +오해되다:동:4
  +오해받다:동:6
  +오해스럽다:형:1
  +오해하다:동:11
  +오행:명:3
  +오행설:명:1
  +오형:명:1
  +오호:명:1
  +오호라:감:1
  +오호애재:감:1
  +오호통재:감:2
  +오호포:명:1
  +오호호:부:3
  +오후:명:354
  +오후반:명:2
  +오히려:부:547
  +옥:명:6
  +옥:명:8
  +옥개석:명:1
  +옥고:명:1
  +옥고:명:3
  +옥관자:명:1
  +옥내:명:1
  +옥녀:명:4
  +옥녀형:명:2
  +옥도정기:명:1
  +옥동자:명:2
  +옥리:명:2
  +옥문:명:3
  +옥병:명:1
  +옥사:명:1
  +옥사:명:4
  +옥살이:명:5
  +옥살이하다:동:1
  +옥상:명:21
  +옥색:명:4
  +옥색목:명:1
  +옥석:명:1
  +옥선:명:1
  +옥수수:명:33
  +옥수수밥:명:1
  +옥수수수염:명:1
  +옥시모론:명:1
  +옥신각신:부:4
  +옥신각신하다:동:3
  +옥양목:명:4
  +옥외:명:7
  +옥잠화:명:1
  +옥좌:명:2
  +옥죄다:동:5
  +옥죄이다:동:1
  +옥중:명:6
  +옥타브:의:2
  +옥편:명:2
  +옥황상제:명:1
  +온:관:156
  +온:명:3
  +온갖:관:139
  +온건:명:3
  +온건론:명:1
  +온건책:명:1
  +온건파:명:2
  +온건하다:형:4
  +온고지신:명:1
  +온기:명:10
  +온난하다:형:1
  +온난화:명:24
  +온당하다:형:8
  +온대:명:7
  +온더록스:명:2
  +온데간데없다:형:2
  +온데간데없어지다:동:1
  +온데간데없이:부:4
  +온도:명:87
  +온도계:명:2
  +온돌:명:7
  +온돌방:명:7
  +온라인:명:19
  +온라인망:명:1
  +온몸:명:95
  +온상:명:5
  +온수:명:7
  +온수기:명:2
  +온순하다:형:5
  +온스:의:1
  +온식:명:1
  +온실:명:12
  +온전성:명:1
  +온전하다:형:17
  +온전해지다:동:1
  +온전히:부:17
  +온존되다:동:2
  +온존시키다:동:3
  +온존적:관:1
  +온종일:명:18
  +온주:명:1
  +온천:명:6
  +온축:명:1
  +온탕식:명:1
  +온통:부:96
  +온풍기:명:1
  +온화하다:형:16
  +올:관:113
  +올:명:26
  +올:명:43
  +올:명:5
  +올가미:명:7
  +올가을:명:15
  +올겨울:명:2
  +올곧다:형:5
  +올드:명:1
  +올드미스:명:3
  +올라가다:동:325
  +올라붙다:동:3
  +올라서다:동:26
  +올라앉다:동:7
  +올라오다:동:153
  +올라타다:동:17
  +올려놓다:동:66
  +올려다보다:동:29
  +올려붙이다:동:3
  +올려지다:동:19
  +올로케:명:1
  +올리고:명:1
  +올리다:동:436
  +올리브:명:1
  +올리브갈색:명:6
  +올리브색:명:2
  +올리브유:명:3
  +올리브회색:명:1
  +올림:명:1
  +올림:명:6
  +올림피아드:명:5
  +올림픽:명:159
  +올망졸망:부:1
  +올망졸망하다:형:1
  +올바로:부:13
  +올바르다:형:137
  +올백:명:1
  +올봄:명:10
  +올스타:명:5
  +올스타전:명:1
  +올여름:명:16
  +올챙이:명:8
  +올케:명:9
  +올해:명:312
  +올해분:명:1
  +옭아매다:동:3
  +옮겨지다:동:25
  +옮기다:동:287
  +옮다:동:6
  +옮아가다:동:8
  +옳다:감:1
  +옳다:형:196
  +옳소:감:3
  +옳아:감:3
  +옳지:감:11
  +옴:명:3
  +옴죽거리다:동:1
  +옴짝달싹:부:2
  +옴짝하다:동:1
  +옴찔옴찔하다:동:1
  +옴큼:의:4
  +옴팍하다:형:1
  +옵서버:명:1
  +옵션:명:2
  +옵션비:명:1
  +옵티컬:명:1
  +옷:명:400
  +옷가지:명:22
  +옷감:명:20
  +옷값:명:3
  +옷갓하다:동:5
  +옷걸이:명:6
  +옷고름:명:8
  +옷깃:명:11
  +옷매무새:명:2
  +옷맵시:명:3
  +옷본:명:14
  +옷섶:명:2
  +옷소매:명:1
  +옷자락:명:5
  +옷장:명:12
  +옷주제:명:1
  +옷차림:명:41
  +옹:의:3
  +옹고집:명:1
  +옹글다:형:1
  +옹기종기:부:6
  +옹달샘:명:11
  +옹립:명:1
  +옹벽:명:2
  +옹색하다:형:5
  +옹성:명:2
  +옹성문:명:1
  +옹송그리다:동:2
  +옹알이하다:동:1
  +옹졸하다:형:7
  +옹호:명:3
  +옹호론:명:8
  +옹호론자:명:2
  +옹호자:명:2
  +옹호적:명:1
  +옹호하다:동:16
  +옻나무:명:1
  +와:감:1
  +와:감:35
  +와:부:5
  +와:부:9
  +와글거리다:동:1
  +와글와글:부:3
  +와드등거리다:동:1
  +와들와들:부:4
  +와따:감:1
  +와락:부:8
  +와르르:부:8
  +와르릉:부:1
  +와사비:명:3
  +와선하다:동:1
  +와우형:명:1
  +와이:명:3
  +와이샤쓰:명:7
  +와이셔츠:명:15
  +와이어:명:2
  +와이퍼:명:3
  +와이프:명:3
  +와인:명:18
  +와일드:명:1
  +와일드하다:형:1
  +와장창:부:4
  +와장창하다:동:1
  +와전되다:동:3
  +와중:명:35
  +와지끈뚝딱:부:1
  +와트:의:1
  +와프로:명:1
  +와하다:동:2
  +와하하:부:1
  +와해:명:3
  +와해되다:동:3
  +와해시키다:동:1
  +와해적:명:1
  +왁스:명:1
  +왁자지껄:부:1
  +왁자지껄하다:형:6
  +왁자하다:형:3
  +왁작왁작:부:1
  +완간하다:동:1
  +완강하다:형:15
  +완강히:부:5
  +완결:명:1
  +완결감:명:1
  +완결되다:동:3
  +완결성:명:1
  +완결적:명:1
  +완경사:명:1
  +완고하다:형:5
  +완곡면:명:1
  +완곡하다:형:3
  +완공:명:7
  +완공되다:동:9
  +완공하다:동:6
  +완구:명:2
  +완구점:명:1
  +완급:명:1
  +완납:명:1
  +완두:명:2
  +완두콩:명:17
  +완력:명:3
  +완료:명:2
  +완료되다:동:14
  +완료하다:동:17
  +완만하다:형:1
  +완만하다:형:9
  +완만해지다:동:1
  +완벽:명:6
  +완벽성:명:2
  +완벽주의:명:1
  +완벽하다:형:86
  +완벽해지다:동:1
  +완벽히:부:1
  +완비:명:2
  +완비되다:동:1
  +완비하다:동:3
  +완사면:명:1
  +완성:명:62
  +완성도:명:2
  +완성되다:동:51
  +완성시키다:동:9
  +완성체:명:1
  +완성품:명:5
  +완성하다:동:53
  +완성형:명:17
  +완송하다:동:1
  +완수:명:3
  +완수하다:동:4
  +완숙:명:1
  +완숙기:명:1
  +완숙하다:형:2
  +완숙해지다:동:1
  +완승:명:1
  +완승하다:동:1
  +완연스레:부:1
  +완연하다:형:10
  +완연히:부:3
  +완자:명:2
  +완장:명:10
  +완전:명:63
  +완전무결하다:형:6
  +완전성:명:1
  +완전자:명:1
  +완전주의자:명:2
  +완전하다:형:86
  +완전히:부:276
  +완제품:명:3
  +완주:명:1
  +완충:명:4
  +완충기:명:1
  +완충제:명:1
  +완치:명:2
  +완치되다:동:1
  +완쾌되다:동:2
  +완파:명:1
  +완파하다:동:2
  +완패:명:1
  +완패하다:동:1
  +완행버스:명:3
  +완행선:명:1
  +완행열차:명:1
  +완화:명:35
  +완화되다:동:10
  +완화론:명:1
  +완화시키다:동:11
  +완화하다:동:19
  +왈:부:3
  +왈가닥:명:1
  +왈가왈부:명:2
  +왈가왈부하다:동:10
  +왈그락달그락거리다:동:1
  +왈그랑달그랑:부:1
  +왈츠:명:1
  +왈칵:부:6
  +왔다리갔다리:부:2
  +왕:명:200
  +왕가:명:1
  +왕거미줄:명:1
  +왕겨:명:1
  +왕경:명:1
  +왕고들빼기:명:1
  +왕고로쇠:명:1
  +왕고로쇠나무:명:1
  +왕관:명:2
  +왕국:명:35
  +왕궁:명:17
  +왕권:명:67
  +왕녀:명:1
  +왕년:명:7
  +왕대비:명:2
  +왕대폿집:명:8
  +왕대합:명:1
  +왕도:명:3
  +왕도:명:3
  +왕래:명:18
  +왕래하다:동:10
  +왕릉:명:10
  +왕립:명:3
  +왕머루:명:1
  +왕명:명:1
  +왕명:명:1
  +왕방울:명:1
  +왕복:명:12
  +왕복선:명:21
  +왕복하다:동:2
  +왕비:명:18
  +왕비족:명:3
  +왕새우:명:1
  +왕생하다:동:1
  +왕성하다:형:29
  +왕성해지다:동:6
  +왕세자:명:11
  +왕세자비:명:2
  +왕실:명:22
  +왕왕:부:7
  +왕왕거리다:동:2
  +왕왕하다:동:1
  +왕우렁이:명:1
  +왕울음:명:1
  +왕위:명:35
  +왕자:명:38
  +왕자:명:4
  +왕자병:명:9
  +왕정:명:8
  +왕정복고:명:1
  +왕조:명:91
  +왕조사적:관:1
  +왕족:명:12
  +왕좌:명:4
  +왕중왕전:명:4
  +왕창:부:4
  +왕청되다:형:1
  +왕초:명:16
  +왕토:명:2
  +왕통:명:1
  +왕호:명:2
  +왕후:명:7
  +왜:감:28
  +왜:명:3
  +왜:부:1,139
  +왜간장:명:4
  +왜곡:명:26
  +왜곡되다:동:44
  +왜곡시키다:동:9
  +왜곡하다:동:17
  +왜관:명:1
  +왜구:명:10
  +왜국:명:1
  +왜군:명:11
  +왜낫:명:1
  +왜냐면:접:11
  +왜냐하면:접:178
  +왜놈:명:3
  +왜된장:명:2
  +왜란:명:1
  +왜몰개:명:4
  +왜상:명:2
  +왜색:명:3
  +왜색조:명:1
  +왜선:명:1
  +왜소하다:형:13
  +왜소해지다:동:3
  +왜소화:명:1
  +왜소화되다:동:2
  +왜소화해지다:명:1
  +왜식:명:1
  +왜인:명:5
  +왜자해지다:동:1
  +왜적:명:17
  +왜정:명:4
  +왜주:명:1
  +왜죽왜죽:부:1
  +왠지:부:70
  +왱왱거리다:동:2
  +외:의:252
  +외가:명:7
  +외가댁:명:1
  +외간:명:2
  +외갓곳:명:2
  +외갓집:명:19
  +외거:명:2
  +외견상:명:5
  +외경:명:1
  +외경심:명:2
  +외계:명:4
  +외계인:명:6
  +외과:명:2
  +외과적:명:2
  +외곽:명:13
  +외곽선:명:3
  +외곽적:명:1
  +외관:명:13
  +외관상:명:8
  +외관적:명:1
  +외관화:명:1
  +외관화하다:동:1
  +외교:명:1
  +외교:명:92
  +외교관:명:37
  +외교력:명:3
  +외교적:관:14
  +외교적:명:3
  +외교전:명:1
  +외교학과:명:3
  +외국:명:336
  +외국계:명:1
  +외국곡:명:1
  +외국산:명:10
  +외국식:명:1
  +외국어:명:37
  +외국어화:명:1
  +외국인:명:141
  +외국적:명:1
  +외국제:명:1
  +외국환:명:1
  +외근:명:1
  +외길:명:2
  +외나무다리:명:2
  +외다:동:29
  +외다:형:1
  +외대으아리:명:2
  +외도:명:5
  +외동딸:명:11
  +외동아들:명:1
  +외동아이:명:4
  +외등:명:2
  +외따로:부:1
  +외딴:관:5
  +외딴곳:명:1
  +외딴섬:명:1
  +외딴집:명:5
  +외떨어지다:동:1
  +외람되다:형:3
  +외람스럽다:형:1
  +외래:명:23
  +외래문화:명:4
  +외래어:명:8
  +외래인:명:1
  +외래적:명:5
  +외래종:명:1
  +외려:부:6
  +외로:부:2
  +외로움:명:40
  +외로워지다:동:1
  +외로워하다:동:3
  +외로이:부:2
  +외롭다:형:61
  +외마디:명:7
  +외면:명:11
  +외면:명:3
  +외면당하다:동:1
  +외면적:관:10
  +외면적:명:9
  +외면하다:동:66
  +외면화하다:동:1
  +외모:명:47
  +외모적:관:1
  +외모적:명:1
  +외무:명:2
  +외무직:명:1
  +외박:명:4
  +외박하다:동:5
  +외방:명:1
  +외방어:명:1
  +외벽:명:5
  +외부:명:132
  +외부인:명:1
  +외부적:관:6
  +외부적:명:7
  +외사촌:명:3
  +외산:명:2
  +외삼촌:명:24
  +외삽법:명:2
  +외삽법적:명:1
  +외상:명:16
  +외상:명:2
  +외상:명:6
  +외상:명:8
  +외상값:명:8
  +외상술:명:4
  +외생적:관:1
  +외서:명:1
  +외설:명:3
  +외설스럽다:형:1
  +외세:명:10
  +외손녀:명:4
  +외손자:명:6
  +외손주딸:명:1
  +외수:명:1
  +외수:명:2
  +외숙:명:2
  +외숙모:명:9
  +외숙부:명:4
  +외식:명:7
  +외식하다:동:2
  +외신:명:11
  +외신부:명:1
  +외심:명:1
  +외아들:명:10
  +외압:명:7
  +외야수:명:4
  +외양:명:4
  +외양간:명:7
  +외역전:명:1
  +외연:명:8
  +외연성:명:1
  +외연적:명:2
  +외연화하다:동:1
  +외왕:명:1
  +외용약:명:2
  +외우다:동:40
  +외위:명:2
  +외유:명:20
  +외유하다:동:2
  +외의:명:7
  +외인:명:3
  +외자:명:7
  +외적:관:18
  +외적:명:13
  +외적:명:21
  +외제:명:16
  +외제투성이:명:1
  +외제품:명:2
  +외조부모:명:1
  +외주:명:1
  +외줄:명:2
  +외줄기:명:1
  +외지:명:1
  +외지:명:3
  +외지:명:4
  +외지다:형:9
  +외지인:명:5
  +외채:명:1
  +외척:명:2
  +외청:명:1
  +외청장:명:1
  +외쳐지다:동:1
  +외출:명:35
  +외출복:명:6
  +외출하다:동:16
  +외측:명:2
  +외치:명:1
  +외치다:동:158
  +외침:명:29
  +외침:명:5
  +외탁:명:1
  +외톨이:명:4
  +외투:명:5
  +외틀다:동:2
  +외판원:명:3
  +외팔이:명:5
  +외표:명:1
  +외피:명:4
  +외할머니:명:19
  +외할아버지:명:9
  +외항:명:8
  +외항선:명:2
  +외향:명:1
  +외향적:관:1
  +외향적:명:2
  +외형:명:16
  +외형적:관:4
  +외형적:명:7
  +외호:명:1
  +외화:명:1
  +외화:명:1
  +외화:명:2
  +외화:명:23
  +외화난:명:1
  +외환:명:10
  +외환계:명:2
  +외환부:명:1
  +왼:관:3
  +왼발:명:21
  +왼손:명:26
  +왼쪽:명:122
  +왼팔:명:2
  +왼편:명:9
  +요:관:24
  +요:명:1
  +요:명:5
  +요:명:9
  +요가:명:1
  +요강:명:2
  +요강:명:8
  +요거:대:16
  +요건:명:44
  +요것:대:4
  +요격:명:1
  +요괴:명:1
  +요구:명:227
  +요구되다:동:60
  +요구량:명:3
  +요구르트:명:3
  +요구받다:동:6
  +요구불:명:5
  +요구서:명:1
  +요구액:명:2
  +요구율:명:1
  +요구자:명:1
  +요구하다:동:327
  +요금:명:94
  +요금액:명:1
  +요기:대:9
  +요기:명:3
  +요기하다:동:1
  +요긴하다:형:8
  +요년:대:4
  +요놈:대:3
  +요다음:명:1
  +요도염:명:1
  +요동:명:5
  +요동치다:동:2
  +요동하다:동:1
  +요란:명:1
  +요란스러워지다:동:1
  +요란스럽다:형:10
  +요란스레:부:2
  +요란하다:형:43
  +요람:명:2
  +요량:명:9
  +요러다:동:1
  +요런:관:5
  +요렇다:형:10
  +요령:명:26
  +요로:명:1
  +요리:명:142
  +요리:부:1
  +요리되다:동:2
  +요리반:명:1
  +요리법:명:3
  +요리사:명:25
  +요리조리:부:2
  +요리조리:부:5
  +요리하다:동:9
  +요릿집:명:1
  +요만큼:부:1
  +요만하다:형:1
  +요맘때:명:1
  +요망되다:동:3
  +요모조모:명:6
  +요목:명:1
  +요물:명:1
  +요배:명:1
  +요번:명:15
  +요법:명:47
  +요법적:명:1
  +요부:명:1
  +요부:명:4
  +요비링:명:1
  +요사스럽다:형:2
  +요사이:명:6
  +요사채:명:1
  +요상시럽다:형:1
  +요새:명:11
  +요새:명:55
  +요새지:명:3
  +요새화:명:1
  +요새화되다:동:1
  +요샛말:명:1
  +요설:명:4
  +요소:명:237
  +요소론:명:1
  +요소요소:명:4
  +요순시대:명:3
  +요순시절:명:3
  +요술:명:9
  +요시찰자:명:1
  +요식:명:2
  +요약:명:6
  +요약되다:동:12
  +요약하다:동:39
  +요양:명:16
  +요양원:명:1
  +요양하다:동:1
  +요업:명:1
  +요역:명:5
  +요염하다:형:3
  +요원:명:1
  +요원:명:49
  +요원하다:형:8
  +요원해지다:동:1
  +요육:명:2
  +요의:명:1
  +요인:명:217
  +요인:명:8
  +요일:명:22
  +요전:명:5
  +요절:명:2
  +요절하다:동:1
  +요점:명:5
  +요정:명:15
  +요정:명:4
  +요주의:명:3
  +요중냉:명:1
  +요즈음:명:82
  +요즘:명:492
  +요지:명:15
  +요지:명:17
  +요지경:명:1
  +요지부동:명:6
  +요직:명:14
  +요철:명:1
  +요청:명:69
  +요청되다:동:29
  +요청서:명:5
  +요청하다:동:84
  +요체:명:16
  +요추:명:21
  +요충지:명:3
  +요컨대:부:14
  +요통:명:13
  +요트:명:4
  +요포형:명:1
  +요하다:동:17
  +요항부:명:1
  +요행:명:7
  +요행수:명:1
  +요행히:부:2
  +욕:명:61
  +욕구:명:107
  +욕구하다:동:2
  +욕되다:형:3
  +욕망:명:181
  +욕망하다:동:1
  +욕먹다:동:2
  +욕보다:동:2
  +욕설:명:25
  +욕실:명:22
  +욕심:명:70
  +욕심껏:부:1
  +욕심내다:동:2
  +욕정:명:1
  +욕조:명:9
  +욕지거리:명:2
  +욕질:명:6
  +욕질하다:동:1
  +욕창:명:1
  +욕탕:명:7
  +욕탕법:명:2
  +욕하다:동:16
  +용:명:36
  +용:명:6
  +용가리:명:1
  +용감성:명:3
  +용감하다:형:22
  +용감히:부:4
  +용건:명:3
  +용골:명:1
  +용공:명:15
  +용광로:명:2
  +용구:명:18
  +용궁:명:12
  +용기:명:115
  +용기:명:35
  +용기백배:명:1
  +용꿈:명:2
  +용납:명:1
  +용납되다:동:8
  +용납받다:동:1
  +용납하다:동:12
  +용단:명:2
  +용담:명:4
  +용도:명:52
  +용돈:명:94
  +용두사미:명:3
  +용두질:명:1
  +용둥굴레:명:3
  +용띠:명:6
  +용량:명:23
  +용마루:명:1
  +용맹:명:2
  +용맹성:명:1
  +용맹스럽다:형:4
  +용맹심:명:1
  +용맹하다:형:3
  +용모:명:10
  +용모파기:명:2
  +용무:명:7
  +용법:명:1
  +용변:명:5
  +용병:명:12
  +용사:명:6
  +용상:명:2
  +용서:명:20
  +용서되다:동:3
  +용서받다:동:7
  +용서하다:동:44
  +용선주:명:1
  +용솟음치다:동:2
  +용수:명:2
  +용수:명:7
  +용수량:명:1
  +용수철:명:1
  +용암:명:10
  +용암류:명:1
  +용액:명:73
  +용어:명:116
  +용역:명:14
  +용역비:명:1
  +용역업:명:1
  +용역업체:명:6
  +용역직:명:1
  +용왕:명:8
  +용원:명:1
  +용의:명:1
  +용의:명:11
  +용의자:명:3
  +용의주도하다:형:3
  +용이:명:1
  +용이하다:형:16
  +용이하여지다:동:1
  +용이해지다:동:2
  +용인되다:동:5
  +용인하다:동:5
  +용일:명:1
  +용적률:명:3
  +용접:명:5
  +용접공:명:1
  +용접기:명:1
  +용접봉:명:1
  +용접하다:동:6
  +용지:명:11
  +용지:명:9
  +용태:명:1
  +용퇴:명:1
  +용포감:명:1
  +용품:명:22
  +용품점:명:2
  +용하다:형:10
  +용해되다:동:3
  +용형:명:1
  +용호비:명:1
  +용호상박:명:1
  +우:감:1
  +우:명:1
  +우:명:2
  +우:명:9
  +우:부:1
  +우거:명:1
  +우거지:명:4
  +우거지다:동:20
  +우거지상:명:1
  +우거짓국:명:1
  +우겨넣다:동:1
  +우격다짐:명:2
  +우경:명:1
  +우경화:명:1
  +우계:명:1
  +우국:명:1
  +우그러지다:동:1
  +우글거리다:동:5
  +우기:명:2
  +우기다:동:27
  +우김질:명:2
  +우단:명:2
  +우당탕:부:1
  +우당탕거리다:동:1
  +우대:명:11
  +우대:명:2
  +우대하다:동:1
  +우동:명:5
  +우두둑:부:1
  +우두망찰:부:2
  +우두머리:명:4
  +우두커니:부:20
  +우둔하다:형:1
  +우둘두둘하다:형:1
  +우득우득:부:1
  +우듬지:명:1
  +우등상:명:3
  +우등상장:명:1
  +우등생:명:6
  +우떻다:형:1
  +우뚝:부:18
  +우뚝하다:형:7
  +우라늄:명:9
  +우라질:감:1
  +우락부락하다:형:1
  +우람하다:형:10
  +우량:명:4
  +우량주:명:2
  +우러나다:동:22
  +우러나오다:동:9
  +우러러보다:동:4
  +우러르다:동:6
  +우렁우렁하다:형:1
  +우렁차다:형:11
  +우레:명:2
  +우려:명:139
  +우려내다:동:10
  +우려되다:동:29
  +우려먹다:동:3
  +우려스럽다:형:2
  +우려하다:동:54
  +우롱:명:1
  +우롱당하다:동:5
  +우롱차:명:1
  +우롱하다:동:8
  +우르르:부:20
  +우르릉:부:2
  +우르릉거리다:동:1
  +우르릉하다:동:1
  +우리:대:6,583
  +우리:명:3
  +우리글:명:2
  +우리나라:명:1,050
  +우리말:명:78
  +우리말화:명:1
  +우림:명:8
  +우마:명:1
  +우마차:명:1
  +우매하다:형:1
  +우묵:부:1
  +우묵하다:형:3
  +우문:명:1
  +우물:명:21
  +우물가:명:16
  +우물거리다:동:5
  +우물물:명:2
  +우물우물:부:7
  +우물우물하다:동:1
  +우물쭈물:부:2
  +우물쭈물하다:동:4
  +우미:명:2
  +우민:명:1
  +우민:명:3
  +우박:명:4
  +우발:명:2
  +우발성:명:4
  +우발적:관:1
  +우발적:명:10
  +우방:명:8
  +우방국:명:3
  +우백질:명:4
  +우백호:명:6
  +우보:명:1
  +우비:명:1
  +우사:명:1
  +우산:명:139
  +우산나물:명:2
  +우산살:명:2
  +우산형:명:1
  +우상:명:1
  +우상:명:14
  +우상화:명:2
  +우생학:명:1
  +우생학적:관:1
  +우선:명:4
  +우선:명:40
  +우선:부:462
  +우선권:명:3
  +우선되다:동:4
  +우선룡:명:2
  +우선순위:명:11
  +우선적:명:18
  +우선주의:명:1
  +우선하다:동:7
  +우세:명:1
  +우세:명:10
  +우세성:명:1
  +우세스럽다:형:1
  +우세하다:형:22
  +우송:명:1
  +우송되다:동:3
  +우송하다:동:6
  +우수:명:10
  +우수:명:14
  +우수리:명:1
  +우수리땃쥐:명:2
  +우수상:명:6
  +우수성:명:11
  +우수수:부:4
  +우수하다:형:38
  +우스개:명:4
  +우스갯말:명:1
  +우스갯소리:명:7
  +우스꽝스럽다:형:26
  +우스터소스:명:4
  +우습게보다:동:1
  +우습다:형:54
  +우승:명:70
  +우승권:명:1
  +우승배:명:1
  +우승열패:명:1
  +우승자:명:4
  +우승컵:명:2
  +우승하다:동:18
  +우아:감:7
  +우아하다:형:32
  +우악스럽다:형:2
  +우애:명:7
  +우애둥이:명:1
  +우애하다:동:1
  +우엉:명:2
  +우엉조림:명:3
  +우엉채:명:1
  +우여곡절:명:9
  +우연:명:24
  +우연성:명:2
  +우연적:관:1
  +우연적:명:6
  +우연찮다:형:3
  +우연하다:형:14
  +우연히:부:71
  +우열:명:15
  +우완:명:1
  +우왕좌왕:명:1
  +우왕좌왕하다:동:7
  +우우:명:1
  +우우:부:4
  +우울:명:4
  +우울감:명:1
  +우울증:명:6
  +우울하다:형:31
  +우울해지다:동:5
  +우웅:부:1
  +우월:명:5
  +우월감:명:6
  +우월성:명:7
  +우월주의:명:2
  +우월하다:형:11
  +우위:명:47
  +우위론:명:2
  +우위성:명:4
  +우유:명:106
  +우유부단하다:형:7
  +우유죽:명:1
  +우육면:명:2
  +우의:명:2
  +우의:명:4
  +우의:명:4
  +우의극:명:1
  +우의성:명:3
  +우의적:명:1
  +우의정:명:2
  +우익:명:16
  +우자:명:1
  +우장:명:3
  +우적우적:부:2
  +우점:명:1
  +우점:명:3
  +우점적:관:2
  +우점적:명:7
  +우점종:명:4
  +우정:명:2
  +우정:명:44
  +우주:명:369
  +우주관:명:11
  +우주론:명:13
  +우주복:명:3
  +우주선:명:15
  +우주스럽다:형:1
  +우주인:명:1
  +우주적:관:13
  +우주적:명:10
  +우주전:명:1
  +우주화:명:1
  +우중:명:1
  +우중:명:2
  +우중충하다:형:5
  +우직하다:형:1
  +우짖다:동:2
  +우쩍:부:2
  +우쭐거리다:동:6
  +우쭐대다:동:3
  +우쭐하다:동:4
  +우찌:부:2
  +우체:명:2
  +우체국:명:31
  +우체부:명:2
  +우체통:명:1
  +우측:명:8
  +우클라드:명:17
  +우파:명:15
  +우파적:명:2
  +우편:명:2
  +우편:명:20
  +우편물:명:8
  +우편선:명:1
  +우편함:명:2
  +우편환:명:1
  +우표:명:11
  +우현:명:1
  +우호:명:11
  +우호적:관:5
  +우호적:명:7
  +우화:명:7
  +우화성:명:1
  +우화적:관:4
  +우화적:명:1
  +우환:명:5
  +우황:명:1
  +우회:명:2
  +우회로:명:1
  +우회적:관:2
  +우회적:명:5
  +우회전:명:1
  +우회전하다:동:1
  +우회하다:동:2
  +우후죽순:명:1
  +우후후:부:2
  +욱:부:1
  +욱씬거리다:동:1
  +욱여넣다:동:2
  +욱욱:부:1
  +욱일:명:1
  +욱일승천:명:1
  +욱일형:명:2
  +운:명:6
  +운:명:69
  +운감:명:2
  +운구:명:2
  +운구하다:동:2
  +운단:명:1
  +운동:명:1,317
  +운동가:명:23
  +운동감:명:2
  +운동권:명:46
  +운동량:명:8
  +운동력:명:2
  +운동론:명:2
  +운동복:명:6
  +운동비:명:1
  +운동사:명:3
  +운동상:명:1
  +운동선수:명:9
  +운동성:명:6
  +운동시키다:동:2
  +운동원:명:8
  +운동장:명:85
  +운동적:관:3
  +운동하다:동:39
  +운동화:명:17
  +운동회:명:15
  +운두:명:2
  +운력하다:동:1
  +운명:명:1
  +운명:명:118
  +운명론:명:3
  +운명적:명:10
  +운명하다:동:1
  +운모:명:2
  +운무:명:1
  +운문:명:8
  +운문극:명:7
  +운문대단:명:1
  +운반:명:18
  +운반되다:동:2
  +운반비:명:1
  +운반인:명:2
  +운반하다:동:18
  +운보법:명:1
  +운사:명:1
  +운사:명:2
  +운석:명:1
  +운세:명:25
  +운송:명:9
  +운송선:명:2
  +운송업:명:1
  +운송업자:명:1
  +운송하다:동:4
  +운수:명:1
  +운수:명:12
  +운수:명:9
  +운수업자:명:1
  +운수업체:명:2
  +운신:명:5
  +운영:명:188
  +운영과장:명:1
  +운영난:명:1
  +운영되다:동:24
  +운영부:명:1
  +운영비:명:21
  +운영사:명:1
  +운영자:명:1
  +운영하다:동:105
  +운용:명:31
  +운용되다:동:2
  +운용비:명:1
  +운용하다:동:8
  +운우지정:명:1
  +운운:명:4
  +운운하다:동:32
  +운위하다:동:2
  +운율:명:2
  +운임:명:1
  +운전:명:54
  +운전기사:명:22
  +운전대:명:2
  +운전면허:명:10
  +운전병:명:6
  +운전사:명:83
  +운전석:명:8
  +운전수:명:12
  +운전자:명:40
  +운전하다:동:21
  +운전회:명:1
  +운지법:명:3
  +운집:명:1
  +운집하다:동:4
  +운짱:명:1
  +운치:명:8
  +운하:명:4
  +운하초:명:1
  +운항:명:19
  +운항권:명:1
  +운항하다:동:11
  +운행:명:36
  +운행되다:동:1
  +운행제:명:1
  +운행하다:동:8
  +운휴:명:1
  +울:대:2
  +울:명:2
  +울:명:9
  +울고불고:부:2
  +울고불고하다:동:3
  +울구다:동:3
  +울그락불그락:부:1
  +울긋불긋:부:2
  +울긋불긋하다:형:3
  +울다:동:1
  +울다:동:356
  +울렁거리다:동:6
  +울렁울렁하다:동:1
  +울렁이다:동:1
  +울려오다:동:5
  +울려지다:동:1
  +울리다:동:147
  +울리다:동:31
  +울림:명:6
  +울림통:명:1
  +울먹:부:1
  +울먹울먹:부:2
  +울먹이다:동:10
  +울바자:명:2
  +울바지:명:1
  +울보:명:2
  +울부짖다:동:20
  +울분:명:8
  +울분하다:형:1
  +울상:명:16
  +울새:명:2
  +울안:명:3
  +울음:명:64
  +울음바다:명:2
  +울음소리:명:42
  +울적하다:형:5
  +울적해지다:동:2
  +울창하다:형:12
  +울컥:부:9
  +울컥하다:동:2
  +울타리:명:44
  +울툭불툭하다:형:1
  +울퉁불퉁하다:형:4
  +울퉁불퉁해지다:동:1
  +울화:명:6
  +울화병:명:1
  +울화통:명:3
  +움:명:3
  +움막:명:3
  +움막살이하다:동:1
  +움씰거리다:동:2
  +움직거리다:동:1
  +움직여지다:동:4
  +움직이다:동:423
  +움직임:명:208
  +움집:명:1
  +움짝달싹:부:1
  +움찔:부:2
  +움찔거리다:동:2
  +움찔하다:동:6
  +움츠러들다:동:10
  +움츠리다:동:14
  +움켜잡다:동:7
  +움켜쥐다:동:15
  +움큼:의:9
  +움키다:동:11
  +움트다:동:4
  +움펑:부:1
  +움푹:부:10
  +움푹짐푹하다:형:1
  +움푹하다:형:2
  +웃기다:동:63
  +웃다:동:599
  +웃돈:명:1
  +웃돌다:동:21
  +웃분:명:1
  +웃비:명:2
  +웃어넘기다:동:3
  +웃어른:명:18
  +웃옷:명:6
  +웃음:명:248
  +웃음거리:명:6
  +웃음기:명:20
  +웃음꽃:명:8
  +웃음바다:명:1
  +웃음소리:명:24
  +웃음판:명:3
  +웃자라다:동:3
  +웃저고리:명:3
  +웃통:명:9
  +웃풍:명:1
  +웅건하다:형:2
  +웅담:명:1
  +웅대하다:형:3
  +웅덩이:명:7
  +웅변:명:9
  +웅변대회:명:5
  +웅변적:명:2
  +웅변조:명:2
  +웅성거리다:동:11
  +웅성대다:동:1
  +웅성웅성:부:1
  +웅성이다:동:1
  +웅숭깊다:형:2
  +웅얼거리다:동:9
  +웅얼웅얼:부:1
  +웅웅:부:1
  +웅웅거리다:동:5
  +웅장하다:형:21
  +웅크리다:동:36
  +워낙:부:93
  +워드:명:18
  +워디:대:1
  +워딨다:불:1
  +워매:감:2
  +워밍업:명:1
  +워시오프:명:1
  +워째야:불:1
  +워쩌다:동:2
  +워찌:불:1
  +워치:명:2
  +워치게:부:2
  +워치되다:형:1
  +워치크롬:부:1
  +워커:명:12
  +워크숍:명:3
  +워크스테이션:명:4
  +워킹:명:1
  +워터:명:8
  +원:감:25
  +원:명:1
  +원:명:33
  +원:명:4
  +원:명:7
  +원:명:9
  +원:의:1
  +원:의:1,776
  +원가:명:23
  +원가력:명:2
  +원거리:명:6
  +원격:명:8
  +원경:명:2
  +원고:명:29
  +원고:명:66
  +원고료:명:5
  +원고지:명:14
  +원고향:명:1
  +원교지:명:1
  +원군:명:4
  +원권:의:6
  +원귀:명:1
  +원근:명:2
  +원근법:명:15
  +원근법적:관:7
  +원근법적:명:3
  +원금:명:6
  +원기:명:5
  +원나잇스탠드:명:1
  +원내:명:9
  +원내무반:명:1
  +원년:명:11
  +원님:명:2
  +원단:명:2
  +원대:명:8
  +원대하다:형:4
  +원더풀:명:1
  +원도:명:2
  +원동력:명:23
  +원두:명:26
  +원두막:명:8
  +원두커피:명:18
  +원뜻:명:2
  +원래:명:196
  +원려:명:1
  +원력:명:31
  +원로:명:24
  +원로원:명:3
  +원론:명:2
  +원론적:관:1
  +원론적:명:3
  +원료:명:41
  +원료비:명:1
  +원룸:명:11
  +원류:명:7
  +원리:명:254
  +원리금:명:1
  +원리적:관:1
  +원리적:명:2
  +원리주의:명:2
  +원만:명:2
  +원만하다:형:27
  +원만히:부:3
  +원망:명:11
  +원망받다:동:1
  +원망스러워지다:동:1
  +원망스럽다:형:13
  +원망스레:부:2
  +원망하다:동:34
  +원맨쇼:명:1
  +원맨쇼하다:동:1
  +원면:명:1
  +원목:명:2
  +원무과:명:1
  +원문:명:8
  +원반:명:9
  +원반던지기:명:5
  +원본:명:5
  +원부:명:2
  +원비:명:1
  +원산:명:1
  +원산지:명:7
  +원삼:명:1
  +원상:명:9
  +원상태:명:3
  +원상회복:명:1
  +원상회복시키다:동:2
  +원색:명:11
  +원색적:명:3
  +원생:명:4
  +원생목:명:1
  +원샷하다:동:1
  +원서:명:1
  +원서:명:25
  +원서대:명:1
  +원석:명:1
  +원성:명:2
  +원소:명:12
  +원수:명:14
  +원수:명:37
  +원수:명:5
  +원수덩어리:명:3
  +원수지간:명:1
  +원숙:명:1
  +원숙기:명:1
  +원숙미:명:1
  +원숙성:명:1
  +원숙하다:형:3
  +원숭이:명:23
  +원숭이띠:명:1
  +원시:명:88
  +원시림:명:1
  +원시무리:명:1
  +원시생활:명:1
  +원시인:명:20
  +원시적:관:6
  +원시적:명:13
  +원시주의:명:2
  +원시주의자:명:1
  +원심:명:9
  +원안:명:3
  +원앙금침:명:4
  +원액:명:5
  +원양:명:4
  +원어:명:2
  +원예:명:13
  +원예사:명:1
  +원외:명:3
  +원용:명:1
  +원용되다:동:2
  +원용하다:동:8
  +원운동:명:5
  +원위치:명:1
  +원유:명:17
  +원유가:명:3
  +원융:명:5
  +원융되다:동:1
  +원융하다:동:2
  +원음:명:4
  +원의미:명:1
  +원이름:명:1
  +원인:명:1
  +원인:명:332
  +원인균:명:1
  +원인론:명:1
  +원인적:관:1
  +원자:명:38
  +원자력:명:59
  +원자로:명:12
  +원자시계:명:2
  +원자재:명:14
  +원자탄:명:6
  +원자핵:명:9
  +원자화:명:1
  +원자화되다:동:1
  +원작:명:31
  +원작자:명:1
  +원장:명:1
  +원장:명:61
  +원장실:명:2
  +원재료:명:2
  +원저자:명:4
  +원적:명:1
  +원적외선:명:2
  +원전:명:14
  +원전:명:15
  +원점:명:4
  +원정:명:19
  +원정군:명:1
  +원정대:명:3
  +원정대원:명:1
  +원정대장:명:1
  +원제:명:4
  +원제:부:1
  +원조:명:14
  +원조:명:6
  +원조받다:동:1
  +원조하다:동:2
  +원죄:명:3
  +원죄자:명:1
  +원주민:명:7
  +원주인:명:1
  +원줄:명:1
  +원증회고:명:1
  +원직:명:1
  +원천:명:26
  +원천적:명:14
  +원체:부:6
  +원초:명:1
  +원초아:명:1
  +원초적:관:8
  +원초적:명:17
  +원추:명:1
  +원추리:명:3
  +원칙:명:181
  +원칙론:명:3
  +원칙론적:명:1
  +원칙적:관:1
  +원칙적:명:14
  +원크기:명:1
  +원탁:명:5
  +원탁회의:명:2
  +원탑:명:1
  +원통:명:1
  +원통하다:형:6
  +원통해하다:동:1
  +원판:명:1
  +원폭:명:5
  +원표:명:1
  +원피스:명:15
  +원피스식:명:1
  +원하다:동:1
  +원하다:동:250
  +원한:명:11
  +원행:명:1
  +원형:명:1
  +원형:명:21
  +원형:명:24
  +원형:명:8
  +원형적:관:2
  +원형질:명:1
  +원형질:명:1
  +원호:명:1
  +원혼:명:1
  +원화:명:1
  +원화:명:5
  +원환:명:1
  +원활:명:2
  +원활하다:형:25
  +원활해지다:동:3
  +원활히:부:3
  +원흉:명:4
  +월:명:45
  +월:명:6
  +월:의:25
  +월간:명:9
  +월간지:명:11
  +월경:명:19
  +월경량:명:1
  +월계수:명:3
  +월광:명:1
  +월권행위:명:2
  +월급:명:57
  +월급봉투:명:5
  +월급쟁이:명:8
  +월남:명:1
  +월남:명:3
  +월남붕어:명:4
  +월남어:명:1
  +월남하다:동:8
  +월동:명:4
  +월동하다:동:22
  +월드:명:8
  +월드컵:명:28
  +월등하다:형:4
  +월등히:부:9
  +월라:명:1
  +월렁월렁:부:1
  +월례:명:7
  +월말:명:5
  +월반하다:동:1
  +월별:명:8
  +월병:명:3
  +월봉:명:4
  +월부:명:1
  +월북:명:8
  +월북하다:동:2
  +월사금:명:18
  +월색:명:2
  +월세:명:8
  +월수입:명:3
  +월요:명:2
  +월요일:명:39
  +월장:명:3
  +월중:명:1
  +월척:명:4
  +월초:명:1
  +월평:명:1
  +월평균:명:7
  +웜홀:명:10
  +웨딩:명:3
  +웨딩드레스:명:4
  +웨스트:명:1
  +웨이스트:명:1
  +웨이터:명:35
  +웨이퍼:명:1
  +웩웩:부:1
  +웬:관:68
  +웬걸:불:7
  +웬만큼:부:11
  +웬만하다:형:37
  +웬수:명:1
  +웬일:명:59
  +웰던:명:1
  +웹:명:9
  +위:감:2
  +위:명:1
  +위:명:1,321
  +위:명:135
  +위:명:21
  +위:의:187
  +위경련:명:1
  +위계:명:6
  +위계적:관:3
  +위계질서:명:6
  +위계질서적:명:1
  +위관:명:1
  +위국:명:1
  +위권:의:11
  +위궤양:명:1
  +위금:명:1
  +위급:명:1
  +위급하다:형:6
  +위기:명:161
  +위기감:명:7
  +위기관리:명:1
  +위기론:명:2
  +위기론적:관:1
  +위기의식:명:7
  +위기적:관:4
  +위너스:명:1
  +위대성:명:5
  +위대하다:형:113
  +위대해지다:동:1
  +위도:명:5
  +위독:명:2
  +위독하다:형:3
  +위독해지다:동:1
  +위락:명:7
  +위력:명:23
  +위력적:명:3
  +위령:명:1
  +위령비:명:1
  +위령탑:명:3
  +위로:명:27
  +위로금:명:3
  +위로받다:동:7
  +위로자:명:2
  +위로하다:동:41
  +위무:명:1
  +위무:명:1
  +위문:명:9
  +위문편지:명:4
  +위반:명:100
  +위반되다:동:6
  +위반자:명:2
  +위반죄:명:6
  +위반하다:동:30
  +위배되다:동:14
  +위배하다:동:2
  +위법:명:23
  +위법성:명:1
  +위법적:관:2
  +위법하다:동:7
  +위벽:명:1
  +위병:명:2
  +위병소:명:3
  +위병소장:명:1
  +위사:명:4
  +위산:명:2
  +위상:명:77
  +위생:명:14
  +위생법:명:1
  +위생성:명:2
  +위생적:명:6
  +위생학적:명:1
  +위선:명:11
  +위선자:명:2
  +위선적:관:2
  +위선적:명:6
  +위성:명:39
  +위세:명:2
  +위세:명:8
  +위수령:명:2
  +위스키:명:5
  +위시하다:동:12
  +위신:명:5
  +위아래:명:16
  +위악적:명:2
  +위안:명:1
  +위안:명:24
  +위안거리:명:1
  +위안부:명:17
  +위암:명:5
  +위압감:명:2
  +위압적:관:4
  +위압적:명:4
  +위압하다:동:2
  +위엄:명:26
  +위엄성:명:1
  +위엄스럽다:형:1
  +위업:명:3
  +위여:감:2
  +위염:명:6
  +위용:명:2
  +위원:명:190
  +위원실:명:3
  +위원장:명:134
  +위원장직:명:1
  +위원직:명:1
  +위원회:명:240
  +위원회장:명:1
  +위의:명:2
  +위인:명:4
  +위인:명:8
  +위인설관:명:1
  +위인설관식:명:1
  +위인전:명:2
  +위인전기:명:2
  +위임:명:7
  +위임되다:동:1
  +위임받다:동:5
  +위임자:명:1
  +위임장:명:1
  +위임하다:동:9
  +위자료:명:1
  +위작:명:2
  +위장:명:1
  +위장:명:15
  +위장:명:18
  +위장되다:동:9
  +위장병:명:6
  +위장술:명:1
  +위장시키다:동:1
  +위장염:명:1
  +위장하다:동:13
  +위저드:명:1
  +위전:의:2
  +위정자:명:8
  +위정척사:명:1
  +위조:명:20
  +위조단:명:1
  +위조되다:동:3
  +위조설:명:1
  +위조죄:명:1
  +위조지폐:명:4
  +위조하다:동:6
  +위주:명:94
  +위주적:명:1
  +위증:명:1
  +위쪽:명:24
  +위촉:명:1
  +위촉장:명:1
  +위축:명:14
  +위축되다:동:24
  +위축시키다:동:10
  +위층:명:8
  +위치:명:251
  +위치시키다:동:4
  +위치하다:동:89
  +위탁:명:9
  +위탁시키다:동:1
  +위탁하다:동:4
  +위태:명:1
  +위태로워지다:동:1
  +위태롭다:형:19
  +위태하다:형:2
  +위턱:명:1
  +위통:명:2
  +위트:명:1
  +위패:명:13
  +위폐:명:2
  +위풍당당하다:형:6
  +위하다:동:3,497
  +위하수:명:1
  +위해:명:9
  +위해성:명:1
  +위헌:명:33
  +위헌성:명:1
  +위헌적:관:2
  +위헌적:명:4
  +위험:명:129
  +위험군:명:1
  +위험물:명:4
  +위험성:명:22
  +위험스럽다:형:3
  +위험천만하다:형:4
  +위험하다:형:102
  +위험해지다:동:2
  +위협:명:79
  +위협감:명:1
  +위협당하다:동:1
  +위협론:명:2
  +위협받다:동:7
  +위협성:명:2
  +위협적:명:6
  +위협조:명:1
  +위협하다:동:39
  +위화감:명:7
  +윈도:명:1
  +윈들러스:명:1
  +윗니:명:2
  +윗도리:명:5
  +윗돌:명:4
  +윗동네:명:1
  +윗마을:명:2
  +윗면:명:19
  +윗목:명:8
  +윗몸:명:30
  +윗물:명:6
  +윗방:명:1
  +윗배:명:1
  +윗부분:명:14
  +윗사람:명:15
  +윗수염박쥐:명:1
  +윗옷:명:11
  +윗입술:명:3
  +윗자리:명:2
  +윗집:명:5
  +윙:명:1
  +윙백:명:2
  +윙윙:부:1
  +윙윙거리다:동:1
  +윙윙하다:동:2
  +윙크:명:3
  +유:명:7
  +유:명:8
  +유:명:9
  +유가:명:4
  +유가:명:7
  +유가:명:8
  +유가적:명:1
  +유가족:명:3
  +유감:명:1
  +유감:명:19
  +유감되다:형:3
  +유감스럽다:형:16
  +유감없이:부:10
  +유개념:명:25
  +유격:명:2
  +유격대원:명:1
  +유격수:명:1
  +유고:명:2
  +유골:명:11
  +유공자:명:3
  +유관:명:6
  +유관성:명:1
  +유관하다:형:1
  +유괴:명:7
  +유괴되다:동:1
  +유괴범:명:8
  +유괴하다:동:1
  +유교:명:78
  +유교권:명:1
  +유교적:관:10
  +유교적:명:8
  +유교학과:명:1
  +유교화하다:동:1
  +유구무언:명:1
  +유구하다:형:5
  +유권:명:5
  +유권자:명:58
  +유급:명:2
  +유기:명:3
  +유기:명:5
  +유기:명:9
  +유기:명:9
  +유기농:명:7
  +유기론:명:2
  +유기물:명:11
  +유기적:관:14
  +유기적:명:28
  +유기질:명:1
  +유기체:명:10
  +유난스럽다:형:2
  +유난스레:부:2
  +유난하다:형:1
  +유난히:부:82
  +유년:명:10
  +유년기:명:3
  +유념하다:동:10
  +유놀이:명:1
  +유능하다:형:19
  +유니코드:명:2
  +유니콘:명:1
  +유니티:명:2
  +유니폼:명:8
  +유단자:명:1
  +유달리:부:9
  +유당:명:2
  +유대:명:9
  +유대감:명:4
  +유대교:명:2
  +유덕하다:형:1
  +유도:명:14
  +유도:명:23
  +유도되다:동:5
  +유도하다:동:65
  +유독:명:3
  +유독:부:30
  +유독물:명:1
  +유독성:명:2
  +유독스럽다:형:1
  +유독하다:형:1
  +유동:명:1
  +유동:명:4
  +유동성:명:2
  +유동적:명:6
  +유동하다:동:1
  +유동화하다:동:1
  +유두:명:2
  +유두화나무:명:1
  +유락가:명:1
  +유람:명:1
  +유람선:명:7
  +유람하다:동:1
  +유랑:명:4
  +유랑파:명:1
  +유랑하다:동:1
  +유래:명:10
  +유래되다:동:10
  +유래하다:동:2
  +유량:명:2
  +유려하다:형:3
  +유력:명:5
  +유력시되다:동:2
  +유력자:명:2
  +유력층:명:19
  +유력하다:형:17
  +유령:명:11
  +유례:명:7
  +유례없다:형:4
  +유례없이:부:5
  +유로:명:4
  +유록색:명:1
  +유료:명:8
  +유료화:명:1
  +유류:명:1
  +유리:명:1
  +유리:명:1
  +유리:명:2
  +유리:명:63
  +유리걸식하다:동:1
  +유리구슬:명:1
  +유리되다:동:9
  +유리문:명:9
  +유리병:명:6
  +유리시키다:동:1
  +유리잔:명:1
  +유리창:명:40
  +유리컵:명:4
  +유리판:명:2
  +유리하다:동:2
  +유리하다:형:62
  +유린:명:6
  +유린당하다:동:1
  +유린되다:동:2
  +유린하다:동:3
  +유림:명:1
  +유망:명:17
  +유망:명:6
  +유망민:명:2
  +유망주:명:8
  +유망하다:동:3
  +유망하다:형:5
  +유머:명:28
  +유머집:명:5
  +유명:명:38
  +유명무실:명:1
  +유명무실하다:형:3
  +유명무실해지다:동:4
  +유명세:명:5
  +유명인:명:3
  +유명하다:형:142
  +유명하여지다:동:1
  +유명해지다:동:9
  +유모:명:2
  +유모차:명:4
  +유목:명:21
  +유목민:명:3
  +유무:명:18
  +유묵:명:1
  +유물:명:6
  +유물:명:61
  +유물론:명:48
  +유물론자:명:6
  +유물론적:관:3
  +유물론적:명:1
  +유물주의:명:3
  +유미주의자:명:1
  +유미주의적:관:2
  +유민:명:19
  +유민:명:7
  +유민사:명:1
  +유발:명:10
  +유발되다:동:1
  +유발력:명:1
  +유발시키다:동:10
  +유발점:명:11
  +유발하다:동:35
  +유방:명:7
  +유방암:명:7
  +유배:명:2
  +유배되다:동:9
  +유배지:명:7
  +유별나다:형:9
  +유별하다:형:4
  +유보:명:14
  +유보되다:동:3
  +유보시키다:동:3
  +유보적:관:1
  +유보적:명:1
  +유보하다:동:12
  +유복아:명:1
  +유복자:명:1
  +유복하다:형:4
  +유부:명:1
  +유부:명:7
  +유부국수:명:2
  +유부남:명:8
  +유부녀:명:4
  +유분:명:6
  +유분기:명:3
  +유분수:명:3
  +유불선:명:2
  +유비무환:명:4
  +유사:명:3
  +유사:명:6
  +유사성:명:27
  +유사시:명:5
  +유사어:명:1
  +유사점:명:3
  +유사품:명:1
  +유사하다:형:58
  +유사해지다:동:1
  +유산:명:1
  +유산:명:14
  +유산:명:2
  +유산:명:34
  +유산되다:동:6
  +유산시키다:동:2
  +유산율:명:1
  +유산증:명:1
  +유산하다:동:1
  +유상:명:9
  +유상하다:형:1
  +유색:명:1
  +유생:명:3
  +유서:명:12
  +유서:명:3
  +유선:명:8
  +유선형:명:2
  +유성:명:1
  +유성:명:5
  +유성기:명:7
  +유세:명:1
  +유세:명:14
  +유세장:명:8
  +유세전:명:1
  +유소년:명:1
  +유소성:명:2
  +유수:명:2
  +유수:명:3
  +유수:명:4
  +유수하다:형:3
  +유숙:명:1
  +유순:명:2
  +유순하다:형:4
  +유스:명:2
  +유식:명:2
  +유식론:명:1
  +유식자:명:1
  +유식하다:형:16
  +유식학:명:2
  +유신:명:1
  +유신:명:22
  +유신견자:명:1
  +유실:명:2
  +유실되다:동:5
  +유심하다:형:1
  +유심히:부:21
  +유아:명:10
  +유아:명:3
  +유아기:명:7
  +유아르:명:5
  +유아르엘:명:2
  +유아복:명:1
  +유아어:명:1
  +유아화시키다:동:1
  +유야무야:명:1
  +유야무야되다:동:1
  +유약하다:형:3
  +유언:명:1
  +유언:명:1
  +유언:명:2
  +유언비어:명:19
  +유언장:명:1
  +유에프오:명:1
  +유역:명:105
  +유역권:명:6
  +유연:명:1
  +유연성:명:24
  +유연탄:명:1
  +유연하다:형:16
  +유연하다:형:2
  +유영:명:3
  +유영복:명:1
  +유영하다:동:3
  +유예:명:15
  +유예되다:동:2
  +유예론자:명:1
  +유예시키다:동:1
  +유예하다:동:1
  +유용:명:5
  +유용되다:동:1
  +유용성:명:3
  +유용하다:동:5
  +유용하다:형:24
  +유원지:명:1
  +유월:명:210
  +유유상종:명:1
  +유유자적:명:1
  +유유히:부:12
  +유의미성:명:1
  +유의하다:동:1
  +유의하다:동:43
  +유익:명:2
  +유익하다:형:20
  +유인:명:1
  +유인:명:1
  +유인:명:5
  +유인되다:동:2
  +유인물:명:10
  +유인원:명:1
  +유인책:명:2
  +유인하다:동:8
  +유일:명:15
  +유일무이하다:형:1
  +유일신:명:3
  +유일하다:형:107
  +유임:명:1
  +유임되다:동:4
  +유임시키다:동:3
  +유입:명:22
  +유입기:명:1
  +유입되다:동:25
  +유입량:명:1
  +유입부:명:1
  +유입하다:동:1
  +유자:명:1
  +유자:명:2
  +유자:명:4
  +유자차:명:4
  +유작전:명:1
  +유장하다:형:2
  +유적:명:51
  +유적지:명:19
  +유전:명:10
  +유전:명:2
  +유전:명:6
  +유전되다:동:4
  +유전병:명:2
  +유전성:명:3
  +유전자:명:38
  +유전적:관:3
  +유전적:명:2
  +유전학:명:1
  +유전학적:관:1
  +유정:명:1
  +유정:명:1
  +유정:명:3
  +유제:명:4
  +유제품:명:2
  +유조:명:2
  +유조군:명:1
  +유조선:명:6
  +유족:명:24
  +유족회:명:1
  +유종:명:1
  +유죄:명:15
  +유죄자:명:1
  +유지:명:1
  +유지:명:1
  +유지:명:1
  +유지:명:114
  +유지:명:7
  +유지권:명:1
  +유지되다:동:35
  +유지방:명:1
  +유지비:명:2
  +유지시키다:동:21
  +유지인:명:1
  +유지하다:동:274
  +유착:명:19
  +유착되다:동:1
  +유창하다:형:5
  +유채:명:1
  +유채:명:1
  +유추:명:8
  +유추되다:동:3
  +유추하다:동:6
  +유출:명:25
  +유출구:명:2
  +유출되다:동:6
  +유출시키다:동:3
  +유출액:명:1
  +유출하다:동:5
  +유충:명:3
  +유치:명:19
  +유치:명:5
  +유치되다:동:2
  +유치시키다:동:1
  +유치원:명:58
  +유치원생:명:2
  +유치장:명:10
  +유치하다:동:3
  +유치하다:동:5
  +유치하다:형:11
  +유쾌:명:7
  +유쾌하다:형:19
  +유쾌해지다:동:1
  +유탄:명:1
  +유태교:명:4
  +유태교도:명:2
  +유턴:명:1
  +유토피아:명:5
  +유토피아적:관:1
  +유토피아적:명:1
  +유통:명:90
  +유통계:명:1
  +유통되다:동:6
  +유통력:명:1
  +유통망:명:7
  +유통시키다:동:6
  +유통업:명:1
  +유통업계:명:1
  +유통업자:명:1
  +유통업체:명:4
  +유틸리티:명:1
  +유파:명:7
  +유폐되다:동:1
  +유포:명:4
  +유포되다:동:7
  +유포시키다:동:2
  +유포죄:명:2
  +유포하다:동:3
  +유표적:명:1
  +유품:명:2
  +유학:명:4
  +유학:명:43
  +유학:명:74
  +유학생:명:1
  +유학생:명:26
  +유학승:명:1
  +유학자:명:8
  +유학파:명:3
  +유학하다:동:10
  +유한:명:1
  +유한마담:명:1
  +유한성:명:1
  +유한층:명:1
  +유한하다:형:15
  +유해:명:21
  +유해:명:38
  +유해론:명:4
  +유해물:명:1
  +유해성:명:2
  +유해하다:형:6
  +유행:명:57
  +유행가:명:8
  +유행곡:명:2
  +유행되다:동:2
  +유행병:명:1
  +유행성:명:4
  +유행스럽다:형:1
  +유행시키다:동:3
  +유행어:명:7
  +유행적:관:1
  +유행적:명:1
  +유행하다:동:37
  +유허비:명:1
  +유현하다:형:1
  +유혈:명:9
  +유형:명:38
  +유형:명:7
  +유형력:명:1
  +유형무형:명:6
  +유형성:명:1
  +유형수:명:1
  +유형적:관:1
  +유형적:관:2
  +유형적:명:1
  +유형적:명:1
  +유형지:명:1
  +유호덕:명:1
  +유혹:명:28
  +유혹되다:동:1
  +유혹받다:동:2
  +유혹적:명:1
  +유혹하다:동:21
  +유화:명:1
  +유화:명:3
  +유화:명:3
  +유화:명:6
  +유화업계:명:4
  +유화업체:명:1
  +유화전:명:1
  +유황:명:3
  +유효:명:9
  +유효성:명:3
  +유효적절하다:형:1
  +유효하다:형:16
  +유훈:명:3
  +유휴:명:1
  +유휴지:명:1
  +유흥:명:3
  +유흥가:명:7
  +유흥업:명:3
  +유흥업소:명:24
  +유희:명:18
  +유희자:명:1
  +유희적:관:2
  +유희적:명:2
  +육:관:17
  +육:명:1
  +육:수:7
  +육각:명:1
  +육각형:명:1
  +육감:명:1
  +육감적:명:3
  +육갑:명:2
  +육개장:명:5
  +육계:명:1
  +육계색:명:1
  +육고기:명:1
  +육교:명:7
  +육군:명:44
  +육기:명:1
  +육대주:명:3
  +육덕:명:2
  +육두구:명:1
  +육두문자:명:2
  +육두품:명:18
  +육로:명:6
  +육류:명:12
  +육만:관:4
  +육모정:명:2
  +육바라밀:명:2
  +육박:명:1
  +육박하다:동:14
  +육백:관:2
  +육백:명:1
  +육백:수:1
  +육백만:관:1
  +육부:명:2
  +육부:명:3
  +육사:명:2
  +육상:명:31
  +육상부원:명:1
  +육성:명:19
  +육성:명:3
  +육성되다:동:1
  +육성시키다:동:1
  +육성책:명:3
  +육성하다:동:19
  +육성회:명:3
  +육성회비:명:7
  +육성회장:명:2
  +육손이:명:2
  +육수:명:1
  +육수:명:20
  +육순:명:2
  +육시:명:1
  +육시랄:감:1
  +육식:명:4
  +육식성:명:1
  +육신:명:24
  +육십:관:11
  +육십:명:3
  +육십:수:3
  +육십갑자:명:1
  +육십구:관:1
  +육십삼:관:2
  +육십진법:명:1
  +육십칠:관:2
  +육십팔:관:1
  +육아:명:7
  +육아법:명:10
  +육안:명:14
  +육욕:명:1
  +육이구:명:20
  +육이오:명:64
  +육입:명:1
  +육자배기:명:1
  +육장:명:1
  +육전:명:1
  +육종:명:1
  +육중하다:형:7
  +육지:명:37
  +육진:명:1
  +육질:명:3
  +육참:명:2
  +육참총장:명:1
  +육천이백:관:1
  +육체:명:101
  +육체노동:명:13
  +육체적:관:34
  +육체적:명:23
  +육체파:명:1
  +육촌:명:1
  +육촌:명:2
  +육추:명:3
  +육축:명:2
  +육친:명:1
  +육칠십:관:1
  +육필:명:1
  +육하원칙:명:1
  +육해공:명:1
  +육해공군:명:1
  +육향:명:1
  +육화되다:동:1
  +육환장:명:2
  +윤:명:1
  +윤간당하다:동:1
  +윤곽:명:35
  +윤곽선:명:3
  +윤기:명:23
  +윤년:명:1
  +윤달:명:6
  +윤락:명:2
  +윤리:명:59
  +윤리관:명:9
  +윤리적:관:11
  +윤리적:명:11
  +윤리학:명:2
  +윤색:명:1
  +윤색되다:동:2
  +윤택:명:1
  +윤택하다:형:6
  +윤택해지다:동:3
  +윤허:명:2
  +윤화:명:2
  +윤활유:명:2
  +윤회:명:5
  +윤회설:명:1
  +윤회적:명:1
  +율:명:2
  +율동:명:5
  +율동감:명:3
  +율동미:명:2
  +율동적:명:4
  +율령:명:9
  +율리우스력:명:6
  +율무:명:1
  +율법:명:2
  +율사:명:1
  +융모:명:4
  +융성기:명:2
  +융성하다:동:6
  +융숭하다:형:1
  +융숭히:부:2
  +융용기:명:1
  +융자:명:10
  +융자금:명:1
  +융자받다:동:1
  +융자하다:동:2
  +융통:명:1
  +융통성:명:11
  +융통하다:동:1
  +융합:명:8
  +융합되다:동:7
  +융합하다:동:3
  +융화되다:동:2
  +윷:명:1
  +윷놀이:명:5
  +윷놀이하다:동:1
  +윷짝:명:1
  +으깨다:동:9
  +으깨지다:동:1
  +으드득하다:동:1
  +으디:대:1
  +으뜸:명:7
  +으뜸가다:동:3
  +으레:부:38
  +으르렁:부:1
  +으르렁거리다:동:14
  +으르렁대다:동:3
  +으르렁으르렁:부:1
  +으른:명:1
  +으름장:명:6
  +으리으리하다:형:2
  +으스대다:동:11
  +으스러지다:동:1
  +으스스:부:6
  +으스스하다:형:7
  +으스스해지다:동:1
  +으슥하다:형:6
  +으슬으슬:부:1
  +으쓱:부:1
  +으쓱거리다:동:2
  +으쓱대다:동:1
  +으쓱으쓱:부:1
  +으쓱으쓱:부:1
  +으쓱이다:동:1
  +으쓱하다:동:1
  +으쓱해지다:동:4
  +으아:감:1
  +으악:감:11
  +으악:부:1
  +으앙:부:2
  +으으:감:4
  +으음:감:4
  +으응:감:37
  +으하하:부:1
  +으허허:부:3
  +으흐흐:부:4
  +으흠:감:7
  +윽박지르다:동:7
  +은:명:26
  +은가루:명:3
  +은갑:명:1
  +은거:명:2
  +은거하다:동:3
  +은공:명:3
  +은그릇:명:6
  +은근스럽다:형:1
  +은근슬쩍:부:1
  +은근하다:형:21
  +은근히:부:34
  +은기:명:3
  +은닉:명:5
  +은닉시키다:동:1
  +은닉하다:동:6
  +은덕:명:4
  +은둔:명:1
  +은둔자:명:1
  +은둔적:명:1
  +은둔하다:동:2
  +은막:명:2
  +은메달:명:3
  +은밀하다:형:17
  +은밀히:부:14
  +은박:명:1
  +은박지:명:5
  +은반:명:1
  +은발:명:2
  +은방울:명:1
  +은백색:명:1
  +은빛:명:11
  +은사:명:1
  +은사:명:5
  +은사권:명:1
  +은사시나무:명:2
  +은상:명:2
  +은성하다:형:2
  +은신하다:동:3
  +은실:명:1
  +은애하다:동:1
  +은어:명:4
  +은연중:명:10
  +은연히:부:1
  +은유:명:5
  +은유적:명:1
  +은은하다:형:30
  +은은히:부:4
  +은인:명:2
  +은인자중하다:동:1
  +은자:명:1
  +은자:명:1
  +은자:명:2
  +은자:부:1
  +은장도:명:2
  +은전:명:2
  +은절:명:1
  +은정월:명:4
  +은제:명:1
  +은조사:명:4
  +은종이:명:1
  +은총:명:5
  +은퇴:명:14
  +은퇴기:명:1
  +은퇴하다:동:15
  +은폐:명:3
  +은폐되다:동:1
  +은폐시키다:동:2
  +은폐하다:동:10
  +은하:명:30
  +은하계:명:26
  +은하단:명:3
  +은하수:명:2
  +은행:명:3
  +은행:명:355
  +은행가:명:1
  +은행권:명:4
  +은행나무:명:33
  +은행식:명:1
  +은행원:명:7
  +은행장:명:9
  +은행털이:명:1
  +은혜:명:26
  +을:명:10
  +을라:명:1
  +을러대다:동:3
  +을러메다:동:1
  +을매나:부:3
  +을미:명:1
  +을미년:명:4
  +을사오적:명:2
  +을씨년스럽다:형:4
  +을씨년하다:형:1
  +을유:명:1
  +을축:명:3
  +을해:명:1
  +읊다:동:9
  +읊조리다:동:8
  +음:감:154
  +음:명:4
  +음:명:48
  +음경:명:2
  +음경골:명:2
  +음기:명:2
  +음나무:명:1
  +음냐:감:1
  +음담:명:1
  +음담패설:명:6
  +음대:명:16
  +음대생:명:5
  +음란:명:6
  +음란물:명:4
  +음란성:명:1
  +음란하다:형:2
  +음력:명:23
  +음력설:명:3
  +음료:명:94
  +음료사:명:1
  +음료수:명:24
  +음료업:명:1
  +음료업체:명:1
  +음료화하다:동:1
  +음률:명:3
  +음매:부:2
  +음모:명:21
  +음모:명:4
  +음모가:명:1
  +음모극:명:1
  +음모죄:명:1
  +음모하다:동:1
  +음미:명:1
  +음미하다:동:13
  +음반:명:16
  +음복:명:3
  +음산하다:형:6
  +음색:명:9
  +음서제:명:2
  +음성:명:2
  +음성:명:60
  +음성적:관:3
  +음성적:명:3
  +음성학적:명:1
  +음소:명:5
  +음수:명:2
  +음습하다:형:2
  +음식:명:498
  +음식물:명:50
  +음식상:명:2
  +음식업:명:1
  +음식점:명:44
  +음악:명:361
  +음악가:명:19
  +음악계:명:8
  +음악다방:명:1
  +음악당:명:8
  +음악대:명:1
  +음악도:명:2
  +음악실:명:7
  +음악원:명:1
  +음악인:명:7
  +음악적:관:6
  +음악적:명:2
  +음악제:명:3
  +음악하다:동:2
  +음악회:명:13
  +음악회장:명:1
  +음압:명:1
  +음양:명:11
  +음양론:명:1
  +음양오행:명:3
  +음양오행설:명:1
  +음역:명:2
  +음영:명:1
  +음용:명:1
  +음용량:명:1
  +음용률:명:1
  +음용수:명:5
  +음용하다:동:2
  +음운:명:1
  +음울하다:형:3
  +음유:명:3
  +음전하:명:3
  +음전하다:형:2
  +음절:명:9
  +음정:명:1
  +음조:명:2
  +음주:명:31
  +음주하다:동:1
  +음지:명:5
  +음질:명:1
  +음침하다:형:8
  +음탕하다:형:4
  +음파:명:3
  +음표:명:3
  +음해:명:12
  +음해하다:동:2
  +음행:명:1
  +음행성:명:1
  +음향:명:20
  +음험하다:형:4
  +음화:명:1
  +음황하다:형:1
  +음흉하다:형:6
  +읍:명:23
  +읍내:명:25
  +읍례:명:1
  +읍사:명:5
  +읍성:명:2
  +읍소:명:1
  +읍소하다:동:1
  +읍제:명:1
  +읍참마속:명:2
  +읍치:명:1
  +읍하다:동:1
  +읏다:형:4
  +읏샤읏샤:부:1
  +응:감:206
  +응결되다:동:1
  +응결처:명:1
  +응결체:명:1
  +응급:명:14
  +응급실:명:14
  +응급조치:명:1
  +응낙:명:1
  +응낙하다:동:2
  +응달:명:5
  +응달지다:형:1
  +응달쪽:명:2
  +응답:명:23
  +응답기:명:2
  +응답률:명:1
  +응답식:명:1
  +응답자:명:20
  +응답하다:동:19
  +응당:부:3
  +응대:명:4
  +응대하다:동:1
  +응등그리다:동:1
  +응모:명:1
  +응모되다:동:1
  +응모자:명:3
  +응모하다:동:4
  +응분:명:4
  +응석:명:4
  +응석꾸러기:명:2
  +응석받이:명:1
  +응수:명:1
  +응수하다:동:5
  +응시:명:2
  +응시:명:6
  +응시교:명:1
  +응시생:명:3
  +응시자:명:2
  +응시하다:동:24
  +응시하다:동:5
  +응애:부:1
  +응어리:명:8
  +응용:명:16
  +응용과학:명:3
  +응용과학자:명:7
  +응용되다:동:3
  +응용력:명:2
  +응용법:명:1
  +응용하다:동:17
  +응원:명:10
  +응원가:명:2
  +응원단:명:2
  +응원단장:명:1
  +응원비:명:1
  +응원상:명:1
  +응원석:명:1
  +응원전:명:1
  +응원하다:동:3
  +응전:명:1
  +응전력:명:1
  +응전하다:동:1
  +응접:명:1
  +응접실:명:8
  +응질되다:동:1
  +응집:명:2
  +응집되다:동:1
  +응집력:명:2
  +응징:명:10
  +응징하다:동:12
  +응찰:명:1
  +응찰액:명:1
  +응찰자:명:3
  +응찰하다:동:1
  +응축되다:동:6
  +응축하다:동:1
  +응하다:동:59
  +응혈:명:1
  +의:명:13
  +의거:명:1
  +의거:명:4
  +의거일:명:1
  +의거하다:동:13
  +의견:명:298
  +의견서:명:4
  +의결:명:10
  +의결권:명:1
  +의결하다:동:8
  +의경:명:28
  +의고:명:3
  +의과:명:3
  +의관:명:5
  +의구심:명:19
  +의기:명:2
  +의기소침하다:형:1
  +의기소침해지다:동:1
  +의기양양하다:형:7
  +의기양양해지다:동:1
  +의기양양해하다:동:2
  +의기투합:명:1
  +의기투합하다:동:2
  +의논:명:16
  +의논성스럽다:형:1
  +의논하다:동:44
  +의당:부:10
  +의대:명:1
  +의대:명:18
  +의대생:명:5
  +의도:명:133
  +의도되다:동:3
  +의도적:관:1
  +의도적:명:34
  +의도하다:동:7
  +의례:명:40
  +의례복화:명:1
  +의례적:관:3
  +의례적:명:13
  +의례히:부:1
  +의롭다:형:2
  +의뢰:명:11
  +의뢰되다:동:3
  +의뢰받다:동:3
  +의뢰인:명:4
  +의뢰하다:동:23
  +의료:명:7
  +의료:명:77
  +의료계:명:9
  +의료기:명:1
  +의료단:명:1
  +의료비:명:4
  +의료인:명:5
  +의료적:명:1
  +의료진:명:7
  +의류:명:28
  +의류업계:명:1
  +의리:명:20
  +의무:명:82
  +의무감:명:6
  +의무대:명:3
  +의무병:명:1
  +의무실:명:3
  +의무자:명:1
  +의무적:명:14
  +의무화:명:8
  +의무화되다:동:1
  +의무화하다:동:8
  +의문:명:110
  +의문문:명:1
  +의문사:명:1
  +의문스럽다:형:1
  +의문시되다:동:4
  +의문점:명:10
  +의뭉:명:1
  +의미:명:857
  +의미론적:관:1
  +의미론적:명:1
  +의미심장하다:형:8
  +의미하다:동:164
  +의미화하다:동:4
  +의발:명:2
  +의법:명:1
  +의병:명:26
  +의병장:명:4
  +의병질:명:1
  +의병질하다:동:1
  +의보:명:3
  +의복:명:1
  +의복:명:111
  +의부증:명:1
  +의분:명:2
  +의붓동생:명:1
  +의붓아버지:명:1
  +의사:명:179
  +의사:명:2
  +의사:명:8
  +의사:명:97
  +의사당:명:2
  +의사소통:명:12
  +의사율:명:1
  +의상:명:21
  +의상실:명:5
  +의상점:명:1
  +의상화하다:동:1
  +의생:명:1
  +의생활:명:3
  +의석:명:46
  +의석수:명:1
  +의수:명:2
  +의술:명:11
  +의식:명:521
  +의식:명:59
  +의식되다:동:8
  +의식시키다:동:1
  +의식적:관:3
  +의식적:명:33
  +의식주:명:13
  +의식하다:동:120
  +의식화:명:9
  +의식화되다:동:2
  +의식화시키다:동:1
  +의식화하다:동:3
  +의심:명:52
  +의심나다:동:3
  +의심되다:동:5
  +의심받다:동:7
  +의심스러워하다:동:1
  +의심스럽다:형:28
  +의심하다:동:73
  +의아스럽다:형:4
  +의아심:명:4
  +의아하다:형:23
  +의아해지다:동:1
  +의아해하다:동:10
  +의약:명:2
  +의약품:명:8
  +의역하다:동:1
  +의연금:명:1
  +의연하다:형:5
  +의연히:부:1
  +의외:명:8
  +의외로:부:39
  +의외성:명:1
  +의욕:명:58
  +의욕적:명:7
  +의용군:명:1
  +의원:명:1
  +의원:명:10
  +의원:명:421
  +의원:명:6
  +의원직:명:11
  +의원회:명:1
  +의의:명:1
  +의의:명:57
  +의인:명:6
  +의인화되다:동:1
  +의인화하다:동:1
  +의자:명:2
  +의자:명:94
  +의장:명:124
  +의장:명:4
  +의장국:명:1
  +의장권:명:1
  +의장단:명:1
  +의장직:명:7
  +의적:명:1
  +의전:명:19
  +의전복:명:1
  +의젓하다:형:15
  +의정:명:1
  +의정:명:15
  +의정서:명:7
  +의제:명:8
  +의제적:명:2
  +의존:명:13
  +의존도:명:8
  +의존성:명:8
  +의존심:명:5
  +의존적:관:1
  +의존적:명:5
  +의존하다:동:96
  +의좋다:형:1
  +의중:명:3
  +의지:명:220
  +의지:명:3
  +의지적:관:1
  +의지적:명:1
  +의지하다:동:59
  +의처증:명:1
  +의치:명:2
  +의탁하다:동:4
  +의표:명:2
  +의하다:동:1,412
  +의학:명:76
  +의학계:명:9
  +의학과:명:9
  +의학부:명:2
  +의학적:관:6
  +의학적:명:4
  +의학진:명:1
  +의학회:명:1
  +의향:명:7
  +의협심:명:3
  +의혹:명:125
  +의혹설:명:2
  +의회:명:114
  +이:감:22
  +이:관:160
  +이:관:6,332
  +이:대:3,918
  +이:명:2
  +이:명:3
  +이:명:6
  +이:명:6
  +이:명:79
  +이:수:16
  +이:의:212
  +이간시키다:동:1
  +이간질:명:1
  +이간질하다:동:1
  +이간하다:동:1
  +이같이:부:41
  +이거:대:617
  +이것:대:1,117
  +이것저것:명:32
  +이견:명:20
  +이경:명:1
  +이경:명:4
  +이고들빼기:명:4
  +이골:명:3
  +이곳:대:346
  +이곳저곳:명:17
  +이공계:명:2
  +이공대:명:1
  +이공학:명:1
  +이과:명:4
  +이과대:명:2
  +이과생:명:1
  +이관:명:5
  +이관되다:동:1
  +이관하다:동:1
  +이교도:명:1
  +이구동성:명:4
  +이국:명:7
  +이국땅:명:2
  +이국인:명:4
  +이국적:관:1
  +이국적:명:5
  +이국정취:명:1
  +이국종:명:1
  +이국취미:명:1
  +이궁:명:5
  +이권:명:8
  +이권설:명:2
  +이글거리다:동:7
  +이글이글:부:4
  +이글이글하다:동:2
  +이급:명:3
  +이기:명:2
  +이기:명:6
  +이기:명:6
  +이기다:동:206
  +이기다:동:4
  +이기론:명:1
  +이기심:명:8
  +이기적:관:1
  +이기적:명:23
  +이기주의:명:23
  +이기주의자:명:1
  +이기주의적:관:1
  +이기죽거리다:동:2
  +이까짓:관:2
  +이깟:관:1
  +이끌다:동:182
  +이끌리다:동:18
  +이끌어지다:동:2
  +이끼:명:17
  +이끼류:명:10
  +이나마:부:1
  +이날:명:350
  +이남:명:21
  +이내:관:2
  +이내:명:48
  +이내:부:57
  +이냥:부:1
  +이년:대:14
  +이념:명:168
  +이념성:명:2
  +이념적:관:18
  +이념적:명:4
  +이념형:명:1
  +이념화하다:동:1
  +이녕:명:1
  +이놈:대:42
  +이농:명:10
  +이농민:명:1
  +이농자:명:1
  +이농하다:동:2
  +이뇨제:명:3
  +이니셔티브:명:3
  +이니페린:명:1
  +이닝:명:6
  +이다:동:1
  +이다:동:41
  +이다음:명:17
  +이다지:부:3
  +이단:명:4
  +이단자:명:3
  +이단조:명:2
  +이달:명:64
  +이담:명:5
  +이대로:부:36
  +이데아:명:25
  +이데올로기:명:274
  +이데올로기론:명:56
  +이데올로기성:명:1
  +이데올로기적:관:102
  +이데올로기적:명:9
  +이데올로기화되다:동:1
  +이데올로지스트:명:1
  +이동:명:1
  +이동:명:91
  +이동도서관:명:1
  +이동되다:동:5
  +이동설:명:3
  +이동시키다:동:2
  +이동식:명:1
  +이동하다:동:52
  +이동형:명:2
  +이두:명:5
  +이두문:명:1
  +이득:명:18
  +이득금:명:1
  +이듬해:명:28
  +이등:명:5
  +이등병:명:5
  +이등분하다:동:3
  +이디아이:명:7
  +이디엘:명:1
  +이디피에스:명:4
  +이따:부:12
  +이따가:부:10
  +이따금:부:34
  +이따만하다:형:1
  +이때:명:388
  +이때껏:부:4
  +이랑:명:2
  +이래:불:23
  +이래:의:164
  +이래도:불:8
  +이래라:불:3
  +이래서:불:16
  +이래야:불:4
  +이래야만:불:1
  +이래요:불:4
  +이래저래:부:7
  +이랬:불:17
  +이러구러:부:1
  +이러나저러나:부:1
  +이러다:동:124
  +이러이러:부:1
  +이러이러하다:형:7
  +이러저러하다:형:15
  +이러쿵저러쿵:부:3
  +이러쿵저러쿵하다:동:2
  +이러하다:형:1,386
  +이럭저럭:부:2
  +이런:감:10
  +이런:관:1,653
  +이런저런:관:53
  +이렇다:형:1,448
  +이레:명:2
  +이력:명:14
  +이력서:명:42
  +이례적:관:1
  +이례적:명:8
  +이론:명:421
  +이론:명:6
  +이론가:명:25
  +이론과학자:명:1
  +이론적:관:79
  +이론적:명:25
  +이론화:명:2
  +이론화하다:동:1
  +이롭다:형:19
  +이롱:명:1
  +이루:명:1
  +이루:부:11
  +이루다:동:601
  +이루수:명:2
  +이루어지다:동:540
  +이루타:명:1
  +이룩되다:동:16
  +이룩하다:동:89
  +이뤄지다:동:114
  +이류:명:2
  +이륙:명:1
  +이륙하다:동:10
  +이륜차:명:2
  +이르다:동:603
  +이르다:동:74
  +이르다:형:84
  +이른바:부:198
  +이를테면:접:28
  +이름:명:807
  +이름값:명:3
  +이름나다:동:12
  +이름표:명:8
  +이름하다:동:7
  +이리:명:7
  +이리:부:22
  +이리:부:57
  +이리도:부:6
  +이리듐:명:4
  +이리로:부:13
  +이리저리:부:11
  +이리저리:부:48
  +이리저리하다:동:1
  +이리하다:동:6
  +이리하여:접:16
  +이마:명:87
  +이마빡:명:1
  +이마빼기:명:1
  +이만:관:5
  +이만:부:10
  +이만사천육백:관:1
  +이만오천:관:1
  +이만육천:관:1
  +이만저만:명:6
  +이만저만:부:3
  +이만저만하다:형:1
  +이만큼:명:5
  +이만큼:부:10
  +이만하다:형:14
  +이맘때:명:8
  +이맛살:명:7
  +이맛전:명:1
  +이메일:명:2
  +이면:명:23
  +이모:명:39
  +이모부:명:3
  +이모작:명:1
  +이모저모:명:7
  +이목:명:16
  +이목구비:명:12
  +이무기:명:1
  +이문:명:2
  +이물:명:1
  +이물감:명:1
  +이물리다:동:1
  +이물스럽다:형:1
  +이물질:명:9
  +이미:부:842
  +이미지:명:208
  +이미지적:관:1
  +이미지화되다:동:1
  +이미지화하다:동:1
  +이민:명:1
  +이민:명:15
  +이민족:명:9
  +이민하다:동:1
  +이바구:명:1
  +이바지:명:1
  +이바지:명:2
  +이바지하다:동:24
  +이반:명:1
  +이발:명:2
  +이발료:명:1
  +이발사:명:2
  +이발소:명:16
  +이발쟁이:명:1
  +이발하다:동:2
  +이방:명:3
  +이방인:명:4
  +이백:관:13
  +이백:수:1
  +이백만:관:6
  +이백몇:관:1
  +이백억:수:2
  +이백오륙십만:관:1
  +이백오십:관:1
  +이백오십:수:1
  +이번:명:1,101
  +이벌찬:명:1
  +이법계:명:1
  +이벤트:명:19
  +이변:명:5
  +이변비중:명:1
  +이별:명:31
  +이별하다:동:4
  +이병:명:12
  +이복동생:명:1
  +이복형제:명:1
  +이봐:감:21
  +이부:명:1
  +이부가리:명:1
  +이부자리:명:13
  +이부제:명:8
  +이북:명:12
  +이분:대:19
  +이분법:명:18
  +이분법적:관:6
  +이분법적:명:1
  +이불:명:78
  +이불감:명:3
  +이불자락:명:3
  +이브:명:1
  +이브닝:명:2
  +이브닝드레스:명:1
  +이빠지:명:1
  +이빨:명:29
  +이사:명:113
  +이사:명:2
  +이사:명:51
  +이사관:명:3
  +이사국:명:12
  +이사금:명:1
  +이사무애법계:명:1
  +이사장:명:49
  +이사장직:명:1
  +이사직:명:1
  +이사하다:동:20
  +이사회:명:11
  +이삭:명:17
  +이삭여뀌:명:1
  +이삭줍기:명:1
  +이산:명:4
  +이산가족:명:12
  +이산되다:동:1
  +이산화질소:명:1
  +이산화탄소:명:46
  +이산화황:명:10
  +이삼:관:4
  +이삼십:관:3
  +이삼천:관:1
  +이삿짐:명:8
  +이삿짐센터:명:2
  +이상:명:103
  +이상:명:79
  +이상:명:994
  +이상론:명:2
  +이상상:명:1
  +이상성:명:2
  +이상스럽다:형:8
  +이상야릇하다:형:2
  +이상자:명:1
  +이상적:관:12
  +이상적:명:55
  +이상주의:명:7
  +이상주의적:관:1
  +이상주의적:명:2
  +이상증:명:1
  +이상하다:형:295
  +이상해지다:동:6
  +이상향:명:6
  +이상형:명:11
  +이상화:명:1
  +이상화되다:동:3
  +이색:명:14
  +이색적:명:3
  +이설:명:3
  +이성:명:15
  +이성:명:78
  +이성애:명:1
  +이성적:관:19
  +이성적:명:23
  +이세:명:15
  +이소구아노신:명:2
  +이속시키다:동:2
  +이속층:명:1
  +이송되다:동:2
  +이수:명:1
  +이수자:명:1
  +이수하다:동:2
  +이순:명:2
  +이슈:명:13
  +이스트:명:2
  +이슥하다:형:6
  +이슥해지다:동:1
  +이슬:명:32
  +이슬람:명:5
  +이슬람교:명:5
  +이슬람교도:명:1
  +이슬방울:명:1
  +이슬비:명:8
  +이승:명:10
  +이시:명:3
  +이식:명:1
  +이식:명:11
  +이식되다:동:2
  +이식하다:동:4
  +이실직고:명:1
  +이심:명:3
  +이심전심:명:1
  +이심전심적:명:1
  +이십:관:55
  +이십:수:1
  +이십구:관:4
  +이십만:관:3
  +이십사:관:4
  +이십사절기:명:4
  +이십오:관:9
  +이십오:수:1
  +이십육:관:1
  +이십육:수:1
  +이십이:관:2
  +이십이:수:1
  +이십일:관:2
  +이십칠:관:1
  +이십팔:관:2
  +이십팔:수:1
  +이쑤시개:명:14
  +이악스럽다:형:1
  +이앙법:명:1
  +이야:감:1
  +이야기:명:970
  +이야기꽃:명:3
  +이야기꾼:명:5
  +이야기되다:동:7
  +이야기책:명:7
  +이야기체:명:2
  +이야기판:명:2
  +이야기하다:동:396
  +이야깃거리:명:3
  +이양:명:7
  +이양기:명:1
  +이양되다:동:1
  +이양선:명:1
  +이양하다:동:3
  +이어:부:127
  +이어달리기:명:10
  +이어받다:동:25
  +이어서:부:37
  +이어지다:동:230
  +이어폰:명:2
  +이엉:명:12
  +이에:부:3
  +이엔지:명:1
  +이역만리:명:1
  +이열치열:명:1
  +이온:명:25
  +이완:명:5
  +이완되다:동:7
  +이완성:명:1
  +이완시키다:동:1
  +이완제:명:1
  +이왕:명:1
  +이왕:부:11
  +이왕에:부:1
  +이왕이면:부:10
  +이외:명:159
  +이용:명:138
  +이용객:명:11
  +이용당하다:동:2
  +이용도:명:1
  +이용되다:동:75
  +이용량:명:1
  +이용료:명:6
  +이용률:명:10
  +이용법:명:7
  +이용비:명:1
  +이용성:명:1
  +이용자:명:27
  +이용자층:명:1
  +이용층:명:1
  +이용하다:동:625
  +이울다:동:2
  +이웃:명:235
  +이웃사촌:명:6
  +이웃집:명:33
  +이웃하다:동:5
  +이원:명:1
  +이원:명:2
  +이원론:명:14
  +이원론적:관:4
  +이원론적:명:1
  +이원적:관:5
  +이원화:명:1
  +이원화되다:동:1
  +이원화하다:동:1
  +이월:명:125
  +이월되다:동:2
  +이월시키다:동:1
  +이유:명:1
  +이유:명:784
  +이유서:명:1
  +이유식:명:4
  +이윤:명:19
  +이율:명:2
  +이율배반:명:3
  +이율배반성:명:1
  +이율배반적:관:1
  +이율배반적:명:1
  +이윽고:부:60
  +이음새:명:1
  +이의:명:24
  +이의:명:8
  +이이:대:1
  +이이제이:명:2
  +이익:명:162
  +이익금:명:1
  +이임:명:3
  +이임식:명:2
  +이임하다:동:1
  +이입:명:10
  +이입하다:동:2
  +이잉:감:1
  +이자:대:1
  +이자:명:49
  +이자세:명:1
  +이자율:명:8
  +이장:명:7
  +이장하다:동:2
  +이재국:명:1
  +이재민:명:2
  +이적:명:1
  +이적:명:14
  +이적:명:4
  +이적료:명:1
  +이적성:명:3
  +이적하다:동:2
  +이전:명:257
  +이전:명:28
  +이전되다:동:3
  +이전받다:동:2
  +이전시키다:동:2
  +이전하다:동:13
  +이점:명:23
  +이정표:명:5
  +이제:명:1
  +이제:명:526
  +이제:부:903
  +이제껏:부:12
  +이제나저제나:부:1
  +이제사:부:2
  +이제야:부:25
  +이젤:명:1
  +이조:명:1
  +이족:명:2
  +이종:명:1
  +이주:명:4
  +이주:명:4
  +이주되다:동:1
  +이주민:명:2
  +이주비:명:1
  +이주시키다:동:1
  +이주하다:동:7
  +이죽거리다:동:2
  +이중:명:45
  +이중고:명:1
  +이중성:명:4
  +이중적:관:4
  +이중적:명:6
  +이중주:명:1
  +이중창:명:1
  +이즘:명:1
  +이즘:명:1
  +이지러지다:동:5
  +이지적:명:3
  +이직:명:2
  +이직률:명:3
  +이직자:명:1
  +이진:명:1
  +이진:명:6
  +이진수:명:3
  +이질:명:1
  +이질:명:2
  +이질감:명:5
  +이질성:명:1
  +이질적:관:1
  +이질적:명:4
  +이질화:명:4
  +이쪽:대:117
  +이쪽저쪽:명:9
  +이쯤:명:6
  +이쯤:부:17
  +이차:명:11
  +이차원:명:2
  +이차적:관:2
  +이차적:명:7
  +이착륙:명:6
  +이착륙하다:동:1
  +이찬:명:1
  +이채:명:1
  +이채롭다:형:5
  +이천:관:2
  +이천만:관:1
  +이천만:수:3
  +이천오백:관:1
  +이첩:명:2
  +이체:명:1
  +이체:명:9
  +이체하다:동:1
  +이층집:명:7
  +이치:명:68
  +이케:불:74
  +이퀄:명:1
  +이키:감:7
  +이타적:관:1
  +이탈:명:24
  +이탈되다:동:10
  +이탈리아어:명:2
  +이탈물:명:1
  +이탈하다:동:19
  +이태:명:6
  +이토록:부:23
  +이튿날:명:75
  +이틀:명:1
  +이틀:명:89
  +이파리:명:12
  +이팔:명:1
  +이팔청춘:명:1
  +이펙트:명:2
  +이편:대:1
  +이하:명:112
  +이하선:명:1
  +이합:명:1
  +이합집산:명:1
  +이해:명:242
  +이해:명:29
  +이해:명:8
  +이해관계:명:30
  +이해되다:동:43
  +이해득실:명:4
  +이해력:명:4
  +이해시키다:동:5
  +이해심:명:6
  +이해타산:명:1
  +이해하다:동:411
  +이행:명:10
  +이행:명:11
  +이행기:명:4
  +이행되다:동:4
  +이행되다:동:8
  +이행론:명:3
  +이행설:명:2
  +이행하다:동:11
  +이행하다:동:11
  +이혼:명:23
  +이혼남:명:2
  +이혼자:명:1
  +이혼하다:동:15
  +이화:명:2
  +이화감:명:1
  +이황화탄소:명:6
  +이후:명:710
  +이힝:감:1
  +익다:동:70
  +익다:형:22
  +익명:명:6
  +익명성:명:3
  +익명인:명:1
  +익명적:관:1
  +익모초:명:1
  +익반죽:명:1
  +익반죽하다:동:3
  +익사:명:6
  +익사자:명:1
  +익사체:명:2
  +익사하다:동:5
  +익살:명:8
  +익살맞다:형:1
  +익살스럽다:형:11
  +익선관:명:1
  +익숙하다:형:54
  +익숙해지다:동:49
  +익스팬션:명:1
  +익일:명:1
  +익혀지다:동:1
  +익히:부:10
  +익히다:동:116
  +익히다:동:30
  +인:명:1
  +인:명:17
  +인:명:19
  +인:명:5
  +인:명:73
  +인가:명:16
  +인가:명:9
  +인가되다:동:1
  +인가받다:동:1
  +인가하다:동:3
  +인간:명:1,488
  +인간관:명:10
  +인간관계:명:32
  +인간군:명:1
  +인간다워지다:동:2
  +인간문화재:명:19
  +인간미:명:6
  +인간사:명:5
  +인간상:명:2
  +인간성:명:36
  +인간애:명:1
  +인간적:관:26
  +인간적:명:48
  +인간주의:명:1
  +인간학적:관:2
  +인간형:명:5
  +인간화:명:3
  +인감:명:2
  +인건비:명:21
  +인격:명:80
  +인격권:명:5
  +인격신:명:1
  +인격자:명:5
  +인격적:관:7
  +인격적:명:5
  +인격체:명:19
  +인격화하다:동:1
  +인견:명:1
  +인계:명:1
  +인계되다:동:3
  +인계받다:동:2
  +인계하다:동:4
  +인고:명:1
  +인공:명:4
  +인공:명:47
  +인공물:명:7
  +인공미:명:1
  +인공위성:명:23
  +인공적:관:5
  +인공적:명:10
  +인공조명:명:1
  +인공호흡:명:3
  +인공호흡법:명:3
  +인공화:명:1
  +인과:명:36
  +인과론적:관:1
  +인과성:명:7
  +인과율:명:6
  +인과응보:명:1
  +인과적:관:6
  +인과적:명:3
  +인광:명:1
  +인구:명:178
  +인구수:명:6
  +인구어:명:1
  +인구율:명:1
  +인권:명:69
  +인근:명:58
  +인기:명:262
  +인기곡:명:1
  +인기도:명:3
  +인기리:명:1
  +인기세:명:1
  +인기인:명:7
  +인기척:명:13
  +인내:명:18
  +인내력:명:4
  +인내성:명:1
  +인내심:명:14
  +인내천:명:5
  +인내하다:동:7
  +인대:명:6
  +인덕력:명:2
  +인데스:명:1
  +인도:명:1
  +인도:명:1
  +인도:명:14
  +인도:명:2
  +인도:명:9
  +인도교:명:1
  +인도되다:동:1
  +인도되다:동:2
  +인도받다:동:3
  +인도자:명:1
  +인도적:명:3
  +인도주의:명:3
  +인도주의자:명:1
  +인도주의적:관:3
  +인도하다:동:10
  +인도하다:동:5
  +인두:명:5
  +인디:명:1
  +인력:명:1
  +인력:명:109
  +인력거:명:5
  +인력난:명:12
  +인력층:명:1
  +인류:명:267
  +인류사:명:2
  +인류애:명:2
  +인류학:명:24
  +인류학계:명:7
  +인류학과:명:1
  +인류학자:명:15
  +인류학적:관:3
  +인류학적:명:3
  +인륜:명:1
  +인륜대사:명:1
  +인마:불:41
  +인맥:명:12
  +인멸:명:5
  +인멸하다:동:1
  +인명:명:18
  +인명:명:5
  +인명사전:명:1
  +인문:명:24
  +인문계:명:9
  +인문대:명:5
  +인문서:명:1
  +인문적:관:12
  +인문주의:명:8
  +인문주의자:명:2
  +인문주의적:관:2
  +인문학적:관:2
  +인문학적:명:1
  +인물:명:310
  +인물론:명:1
  +인물상:명:24
  +인물학:명:4
  +인물형:명:2
  +인물화:명:3
  +인민:명:74
  +인민군:명:18
  +인민군복:명:3
  +인민배우:명:1
  +인민적:관:1
  +인민학교:명:1
  +인방:의:14
  +인복:명:2
  +인본적:명:3
  +인본주의적:관:1
  +인봉:명:1
  +인부:명:24
  +인분:명:2
  +인분:의:44
  +인사:명:154
  +인사:명:185
  +인사:명:191
  +인사계:명:2
  +인사과:명:1
  +인사드리다:동:5
  +인사말:명:18
  +인사법:명:9
  +인사부:명:2
  +인사부장:명:1
  +인사불성:명:1
  +인사성:명:1
  +인사안:명:1
  +인사이동설:명:1
  +인사이드:명:3
  +인사치레:명:6
  +인사하다:동:48
  +인산:명:1
  +인산:명:2
  +인산칼륨:명:1
  +인삼:명:19
  +인삼차:명:8
  +인상:명:106
  +인상:명:19
  +인상:명:88
  +인상되다:동:11
  +인상률:명:8
  +인상분:명:1
  +인상시키다:동:1
  +인상안:명:3
  +인상적:관:2
  +인상적:명:36
  +인상파:명:3
  +인상하다:동:17
  +인색하다:형:16
  +인생:명:255
  +인생관:명:17
  +인생길:명:2
  +인생담:명:3
  +인생사:명:1
  +인생살이:명:2
  +인생철학:명:1
  +인서트:명:8
  +인선:명:25
  +인성:명:16
  +인세:명:1
  +인세:명:3
  +인센티브:명:2
  +인센티브제:명:1
  +인솔되다:동:1
  +인솔하다:동:4
  +인쇄:명:24
  +인쇄되다:동:14
  +인쇄물:명:4
  +인쇄소:명:1
  +인쇄술:명:4
  +인쇄시키다:동:1
  +인쇄업자:명:2
  +인쇄하다:동:7
  +인수:명:38
  +인수권부:명:1
  +인수받다:동:1
  +인수시키다:동:1
  +인수인계:명:1
  +인수하다:동:29
  +인술:명:1
  +인스턴트:명:8
  +인스턴트식품:명:5
  +인스턴트커피:명:53
  +인스텝:명:2
  +인습:명:4
  +인습적:명:1
  +인승:의:17
  +인식:명:373
  +인식기:명:1
  +인식도:명:1
  +인식되다:동:45
  +인식론적:관:12
  +인식론적:명:1
  +인식률:명:1
  +인식시키다:동:7
  +인식자:명:1
  +인식적:관:1
  +인식표:명:1
  +인식하다:동:136
  +인신:명:9
  +인신공격:명:7
  +인신매매:명:31
  +인신매매단:명:1
  +인신매매범:명:2
  +인심:명:24
  +인양기:명:1
  +인어:명:9
  +인연:명:91
  +인연하다:동:1
  +인욕:명:1
  +인용:명:11
  +인용:명:2
  +인용:의:6
  +인용되다:동:5
  +인용자:명:3
  +인용하다:동:1
  +인용하다:동:25
  +인원:명:45
  +인원수:명:3
  +인위적:관:8
  +인위적:명:32
  +인육:명:3
  +인의예지:명:2
  +인의예지신:명:1
  +인입선:명:1
  +인자:명:1
  +인자:명:9
  +인자:부:8
  +인자:의:3
  +인자하다:형:14
  +인재:명:2
  +인재:명:31
  +인적:관:25
  +인적:명:9
  +인절미:명:6
  +인접:명:12
  +인접되다:동:1
  +인접하다:동:14
  +인정:명:1
  +인정:명:20
  +인정:명:46
  +인정되다:동:42
  +인정머리:명:3
  +인정미:명:1
  +인정받다:동:45
  +인정사정없다:형:1
  +인정사정없이:부:1
  +인정자:명:2
  +인정하다:동:257
  +인제:명:15
  +인제:부:143
  +인조:명:5
  +인조:의:7
  +인조물:명:1
  +인조반정:명:1
  +인종:명:31
  +인종적:관:1
  +인종적:명:1
  +인종주의자:명:1
  +인주:명:3
  +인준:명:4
  +인중:명:3
  +인증하다:동:1
  +인지:명:1
  +인지:명:11
  +인지:명:6
  +인지도:명:26
  +인지되다:동:3
  +인지상정:명:3
  +인지세:명:4
  +인지시키다:동:2
  +인지율:명:2
  +인지적:관:1
  +인지하다:동:5
  +인질:명:4
  +인책:명:2
  +인책적:관:1
  +인척:명:21
  +인체:명:64
  +인출:명:11
  +인출기:명:1
  +인출되다:동:4
  +인출하다:동:7
  +인치:명:4
  +인치:의:10
  +인치되다:동:1
  +인콰이어리:명:2
  +인터내셔널:명:1
  +인터넷:명:88
  +인터럽트:명:1
  +인터뷰:명:45
  +인터뷰하다:동:12
  +인터체인지:명:9
  +인터컴:명:1
  +인터페이스:명:4
  +인터폰:명:6
  +인터폴:명:3
  +인턴:명:2
  +인테리어:명:10
  +인파:명:23
  +인편:명:1
  +인품:명:10
  +인프라:명:1
  +인프런트:명:3
  +인플레:명:12
  +인플레율:명:2
  +인플레이션:명:1
  +인플루엔자:명:3
  +인피:명:1
  +인하:명:43
  +인하다:동:296
  +인하되다:동:1
  +인하하다:동:9
  +인형:명:41
  +인형극:명:1
  +인화:명:1
  +인화:명:1
  +인화:명:2
  +인화:명:2
  +인화되다:동:1
  +인화물:명:1
  +인화성:명:2
  +인화지:명:2
  +인화하다:동:1
  +인환:명:1
  +일:관:222
  +일:명:12
  +일:명:4,271
  +일:명:5
  +일:수:22
  +일:의:2,808
  +일가:명:27
  +일가견:명:6
  +일가족:명:5
  +일가친척:명:3
  +일각:명:21
  +일각:명:3
  +일각일각:명:1
  +일간:명:6
  +일간:부:1
  +일간지:명:14
  +일갈:명:2
  +일갈하다:동:2
  +일감:명:2
  +일개:명:9
  +일개미:명:2
  +일거:명:7
  +일거리:명:11
  +일거수일투족:명:5
  +일거양득:명:1
  +일격:명:3
  +일견:명:4
  +일견식:명:1
  +일경:명:1
  +일경:명:5
  +일곱:관:58
  +일곱:수:7
  +일과:명:21
  +일과성:명:4
  +일과표:명:2
  +일관:명:3
  +일관되다:동:26
  +일관성:명:38
  +일관하다:동:19
  +일괄:명:8
  +일괄적:명:3
  +일광:명:9
  +일광욕:명:1
  +일교차:명:4
  +일구다:동:25
  +일국:명:3
  +일그러뜨리다:동:7
  +일그러지다:동:22
  +일급:명:6
  +일기:명:1
  +일기:명:21
  +일기:명:59
  +일기장:명:7
  +일기책:명:1
  +일깨우다:동:49
  +일깨워지다:동:2
  +일껏:부:2
  +일꾼:명:28
  +일년생:명:1
  +일념:명:6
  +일념삼천:명:2
  +일다:동:1
  +일다:동:86
  +일단:명:11
  +일단:명:4
  +일단:명:4
  +일단:부:321
  +일단락:명:1
  +일단락되다:동:4
  +일단정지:명:1
  +일당:명:12
  +일당:명:17
  +일당제:명:1
  +일대:관:30
  +일대:명:1
  +일대:명:105
  +일대기:명:1
  +일대일:명:18
  +일도양단:명:1
  +일도양단식:명:1
  +일동:명:7
  +일등:명:20
  +일등병:명:41
  +일등품:명:1
  +일란성:명:1
  +일람표:명:1
  +일래:명:2
  +일러두다:동:2
  +일러바치다:동:8
  +일러스트레이션:명:2
  +일렁거리다:동:6
  +일렁이다:동:7
  +일렉트로닉:명:2
  +일력:명:3
  +일련:명:65
  +일련번호:명:2
  +일렬:명:10
  +일렬횡대:명:1
  +일례:명:4
  +일로:명:6
  +일로:부:5
  +일루수:명:2
  +일류:명:12
  +일률:명:1
  +일률적:관:1
  +일률적:명:7
  +일리:명:15
  +일만:관:1
  +일만이천:관:2
  +일말:명:4
  +일맥:명:1
  +일맥상통하다:동:1
  +일면:명:18
  +일면적:관:1
  +일면적:명:5
  +일명:명:29
  +일모:명:1
  +일목요연하다:형:2
  +일몫:명:1
  +일몰:명:4
  +일무:명:2
  +일문:명:1
  +일문과:명:1
  +일문일답:명:1
  +일문일답식:명:2
  +일문학과:명:1
  +일반:명:314
  +일반도:명:2
  +일반론:명:1
  +일반론적:명:2
  +일반법:명:1
  +일반부:명:3
  +일반인:명:58
  +일반적:관:45
  +일반적:명:174
  +일반직:명:1
  +일반화:명:4
  +일반화되다:동:26
  +일반화하다:동:11
  +일발:명:1
  +일방:명:5
  +일방성:명:1
  +일방적:관:9
  +일방적:명:60
  +일백:관:1
  +일백:명:1
  +일백만:관:1
  +일백오십:관:1
  +일백오십만:관:1
  +일벌백계:명:3
  +일변:명:1
  +일변:명:1
  +일변도:명:3
  +일변하다:동:1
  +일별:명:2
  +일별하다:동:7
  +일병:명:29
  +일보:명:4
  +일본명:명:1
  +일본식:명:12
  +일본어:명:12
  +일본잎갈나무:명:1
  +일본제:명:4
  +일본화시키다:동:1
  +일부:명:493
  +일부러:부:90
  +일부분:명:13
  +일부일처제:명:1
  +일사:명:1
  +일사병:명:4
  +일사불란:명:1
  +일사불란하다:형:5
  +일사오:명:2
  +일사천리:명:1
  +일산화이질소:명:1
  +일산화탄소:명:6
  +일삼다:동:19
  +일상:명:78
  +일상다반사:명:2
  +일상복:명:3
  +일상사:명:3
  +일상생활:명:69
  +일상생활적:명:1
  +일상성:명:3
  +일상어:명:1
  +일상용어:명:1
  +일상적:관:23
  +일상적:명:38
  +일상화되다:동:3
  +일색:명:7
  +일생:명:51
  +일생:의:4
  +일석이조:명:11
  +일석점호:명:1
  +일선:명:50
  +일설:명:2
  +일소하다:동:2
  +일속:명:1
  +일손:명:29
  +일수:명:12
  +일수:명:2
  +일숙직:명:3
  +일순:명:8
  +일순간:명:6
  +일시:명:1
  +일시:명:25
  +일시:부:6
  +일시적:관:9
  +일시적:명:31
  +일식:명:1
  +일식집:명:1
  +일신:명:4
  +일신교:명:1
  +일신상:명:1
  +일신하다:동:2
  +일실:명:4
  +일심:명:10
  +일심:명:8
  +일쑤:명:55
  +일약:부:10
  +일어:명:8
  +일어나다:동:880
  +일어서다:동:124
  +일어판:명:2
  +일언반구:명:5
  +일언지하:명:1
  +일없이:부:1
  +일엽편주:명:1
  +일요:명:4
  +일요일:명:125
  +일용:명:1
  +일용직:명:2
  +일용품:명:6
  +일용하다:동:2
  +일원:명:1
  +일원:명:10
  +일원:명:15
  +일원론:명:4
  +일원론적:관:2
  +일원론적:명:1
  +일원적:명:8
  +일원화하다:동:2
  +일월:명:131
  +일월대:명:1
  +일으켜지다:동:1
  +일으키다:동:322
  +일이:관:3
  +일이천:관:1
  +일익:명:1
  +일인:명:1
  +일인:명:7
  +일인극:명:1
  +일인자:명:4
  +일일:명:2
  +일일:명:4
  +일일생활권:명:1
  +일일이:부:38
  +일일일선:명:1
  +일임:명:1
  +일임하다:동:5
  +일자:명:4
  +일자:명:54
  +일자리:명:21
  +일자무식:명:2
  +일자형:명:1
  +일장:명:1
  +일장기:명:1
  +일장춘몽:명:1
  +일전:명:1
  +일전:명:2
  +일절:부:14
  +일정:명:37
  +일정:명:67
  +일정량:명:4
  +일정액:명:6
  +일정표:명:1
  +일정하다:형:169
  +일정해지다:동:2
  +일제:명:134
  +일제:명:7
  +일제:명:8
  +일제히:부:40
  +일조:관:1
  +일조:명:1
  +일조:명:6
  +일조권:명:1
  +일조량:명:1
  +일조점호:명:1
  +일조하다:동:8
  +일족:명:2
  +일종:명:103
  +일주:명:2
  +일주일:명:157
  +일주하다:동:2
  +일중선:명:1
  +일지:명:11
  +일직:명:3
  +일직선:명:8
  +일진:명:1
  +일진:명:4
  +일찌감치:부:29
  +일찍:부:194
  +일찍이:부:65
  +일찍일찍:부:2
  +일차:명:22
  +일차원적:관:2
  +일차적:관:6
  +일차적:명:28
  +일착:명:1
  +일천:관:3
  +일천:수:1
  +일천구백칠십:관:1
  +일천구백팔십:관:1
  +일천하다:형:1
  +일체:명:15
  +일체:명:55
  +일체:부:20
  +일체감:명:4
  +일체성:명:20
  +일체적:관:4
  +일체적:명:4
  +일체주의:명:2
  +일체화:명:1
  +일촉즉발:명:1
  +일촌:명:9
  +일축되다:동:2
  +일축시키다:동:1
  +일축하다:동:14
  +일출:명:6
  +일취월장:명:1
  +일취월장하다:동:2
  +일치:명:41
  +일치단결:명:1
  +일치되다:동:19
  +일치론:명:1
  +일치시키다:동:7
  +일치하다:동:84
  +일침:명:2
  +일컫다:동:28
  +일컬어지다:동:16
  +일탈:명:11
  +일탈자:명:4
  +일탈하다:동:13
  +일터:명:16
  +일테면:접:7
  +일통:명:1
  +일파:명:3
  +일파만파:명:2
  +일편단심:명:2
  +일평생:명:1
  +일품:명:25
  +일품요리:명:3
  +일필휘지:명:1
  +일하다:동:328
  +일행:명:91
  +일화:명:21
  +일확천금:명:3
  +일환:명:44
  +일회성:명:5
  +일회용:명:23
  +일회용품:명:17
  +일회적:관:1
  +일회적:명:6
  +일흔:관:2
  +일흔:수:10
  +일흔네:관:1
  +일흔두:관:1
  +일흔셋:수:1
  +일흔일곱:수:1
  +일흔한:관:1
  +일희일비:명:1
  +일희일비하다:동:1
  +읽기:명:1
  +읽다:동:910
  +읽을거리:명:5
  +읽혀지다:동:6
  +읽히다:동:11
  +읽히다:동:17
  +잃다:동:286
  +잃어버리다:동:82
  +잃어지다:동:2
  +임:명:9
  +임간:명:1
  +임검소:명:1
  +임관식:명:4
  +임괘:명:1
  +임금:명:215
  +임금:명:48
  +임금님:명:15
  +임금제:명:6
  +임기:명:48
  +임기응변:명:1
  +임기제:명:17
  +임내:명:2
  +임노동:명:2
  +임대:명:42
  +임대되다:동:1
  +임대료:명:11
  +임대비:명:1
  +임대율:명:1
  +임대차:명:1
  +임대하다:동:4
  +임란:명:1
  +임립하다:동:1
  +임면:명:3
  +임명:명:17
  +임명권자:명:2
  +임명되다:동:33
  +임명장:명:18
  +임명직:명:1
  +임명하다:동:40
  +임목:명:1
  +임무:명:53
  +임박:명:3
  +임박하다:동:15
  +임부:명:11
  +임부복:명:5
  +임사:명:2
  +임산:명:1
  +임산:명:2
  +임산부:명:6
  +임산부복:명:1
  +임상:명:18
  +임석하다:동:2
  +임수:명:1
  +임시:명:75
  +임시방편:명:1
  +임시적:명:1
  +임시직:명:7
  +임신:명:148
  +임신년:명:4
  +임신되다:동:1
  +임신부:명:34
  +임신성:명:3
  +임신시키다:동:1
  +임신율:명:1
  +임신하다:동:25
  +임야:명:17
  +임업:명:7
  +임오년:명:1
  +임용:명:9
  +임용권자:명:2
  +임용제:명:2
  +임용하다:동:5
  +임원:명:21
  +임원실:명:1
  +임원진:명:2
  +임의:명:76
  +임의성:명:2
  +임의적:관:1
  +임자:대:1
  +임자:명:1
  +임자:명:19
  +임자수탕:명:1
  +임전무퇴:명:1
  +임정:명:9
  +임종:명:5
  +임지:명:1
  +임지:명:16
  +임직원:명:21
  +임진왜란:명:29
  +임차인:명:1
  +임파선:명:2
  +임하다:동:2
  +임하다:동:41
  +임학:명:4
  +임해:명:14
  +입:명:575
  +입가:명:21
  +입가심:명:5
  +입각:명:3
  +입각:명:3
  +입각하다:동:79
  +입거하다:동:1
  +입건:명:7
  +입건되다:동:5
  +입건하다:동:12
  +입견:명:1
  +입경:명:1
  +입고:명:1
  +입관되다:동:2
  +입교:명:1
  +입교하다:동:2
  +입구:명:101
  +입국:명:1
  +입국:명:9
  +입국자:명:3
  +입국하다:동:4
  +입금:명:4
  +입금되다:동:5
  +입금시키다:동:5
  +입금자:명:1
  +입금하다:동:4
  +입김:명:12
  +입내:명:1
  +입놀림:명:3
  +입다:동:550
  +입단:명:14
  +입단하다:동:8
  +입담:명:2
  +입당:명:5
  +입당하다:동:3
  +입대:명:40
  +입대하다:동:8
  +입덧:명:27
  +입동:명:2
  +입때:부:1
  +입때껏:부:1
  +입력:명:30
  +입력되다:동:7
  +입력시키다:동:2
  +입력하다:동:27
  +입론:명:28
  +입막음:명:1
  +입맛:명:46
  +입매:명:2
  +입무:명:2
  +입문:명:6
  +입문되다:동:2
  +입문하다:동:6
  +입바람:명:1
  +입바르다:형:3
  +입방아:명:2
  +입버릇:명:11
  +입법:명:47
  +입법권:명:1
  +입법례:명:2
  +입법부:명:4
  +입법안:명:1
  +입법자:명:1
  +입법적:관:1
  +입법화하다:동:2
  +입사:명:19
  +입사각:명:1
  +입사시키다:동:1
  +입사일:명:1
  +입사하다:동:15
  +입산:명:1
  +입상:명:3
  +입상자:명:5
  +입상하다:동:2
  +입석:명:1
  +입선:명:1
  +입선되다:동:1
  +입선작:명:1
  +입선하다:동:1
  +입성:명:2
  +입성:명:4
  +입성하다:동:5
  +입소자:명:1
  +입소하다:동:1
  +입속:명:10
  +입수:명:4
  +입수:명:7
  +입수되다:동:1
  +입수하다:동:1
  +입수하다:동:16
  +입술:명:135
  +입술소리:명:1
  +입시:명:207
  +입시생:명:3
  +입시일:명:1
  +입시장:명:1
  +입시제:명:1
  +입식:명:2
  +입신:명:1
  +입신양명:명:1
  +입신출세주의:명:4
  +입신출세하다:동:1
  +입신하다:동:1
  +입실:명:1
  +입실시키다:동:2
  +입씨름:명:4
  +입아귀:명:1
  +입안:명:1
  +입안되다:동:1
  +입안하다:동:4
  +입양:명:7
  +입양되다:동:2
  +입양아:명:2
  +입양하다:동:1
  +입어료:명:1
  +입영:명:3
  +입욕하다:동:1
  +입원:명:28
  +입원비:명:2
  +입원시키다:동:9
  +입원실:명:5
  +입원하다:동:25
  +입자:명:23
  +입자기:명:1
  +입장:명:453
  +입장:명:6
  +입장객:명:5
  +입장권:명:5
  +입장료:명:9
  +입장시키다:동:1
  +입장하다:동:10
  +입적:명:1
  +입적하다:동:3
  +입정:명:1
  +입주:명:17
  +입주금:명:1
  +입주자:명:5
  +입주하다:동:7
  +입증:명:12
  +입증되다:동:19
  +입증시키다:동:1
  +입증하다:동:43
  +입지:명:2
  +입지:명:35
  +입지시키다:동:1
  +입지점:명:1
  +입지하다:동:6
  +입질:명:2
  +입찰:명:23
  +입찰받다:동:1
  +입찰제:명:7
  +입천장:명:2
  +입체:명:15
  +입체감:명:1
  +입체적:관:1
  +입체적:명:2
  +입체파:명:2
  +입체형:명:2
  +입체화:명:1
  +입체화되다:동:1
  +입초:명:3
  +입초국:명:1
  +입초사:명:1
  +입초싯감:명:1
  +입추:명:1
  +입춘:명:14
  +입춘대길:명:1
  +입춘서:명:8
  +입춘절:명:1
  +입출금:명:2
  +입출금기:명:1
  +입하:명:1
  +입학:명:109
  +입학금:명:5
  +입학난:명:1
  +입학생:명:3
  +입학시키다:동:10
  +입학시험:명:5
  +입학시험장:명:1
  +입학식:명:6
  +입학식장:명:1
  +입학자:명:4
  +입학제:명:6
  +입학하다:동:45
  +입항:명:13
  +입항주:명:2
  +입항하다:동:23
  +입행하다:동:2
  +입혀지다:동:3
  +입회:명:1
  +입회:명:3
  +입회비:명:1
  +입회하다:동:1
  +입후보자:명:11
  +입후보하다:동:5
  +입히다:동:51
  +잇기:명:1
  +잇다:동:294
  +잇달다:동:40
  +잇닿다:동:2
  +잇대다:동:1
  +잇대이다:동:1
  +잇따르다:동:73
  +잇몸:명:5
  +잇바디:명:4
  +잇새:명:1
  +잇소리:명:1
  +잇속:명:1
  +있다:동:253
  +있다:보:18,553
  +있다:형:18,202
  +잉:감:13
  +잉걸:명:1
  +잉글리시:명:2
  +잉꼬부부:명:1
  +잉부:명:1
  +잉어:명:14
  +잉엇과:명:7
  +잉여:명:20
  +잉여금:명:5
  +잉크:명:13
  +잉크병:명:1
  +잉크젯:명:1
  +잉태:명:1
  +잉태되다:동:2
  +잉태시키다:동:1
  +잉태하다:동:11
  +잊다:동:242
  +잊어버리다:동:72
  +잊혀지다:동:28
  +잎:명:135
  +잎눈:명:1
  +잎사귀:명:23
  +잎새:명:9
  +잎채소:명:3
  +자:감:181
  +자:명:136
  +자:명:19
  +자:명:2
  +자:명:3
  +자:의:11
  +자:의:257
  +자가:명:10
  +자가당착:명:2
  +자가용:명:35
  +자가운전:명:1
  +자가품:명:1
  +자각:명:18
  +자각되다:동:4
  +자각시키다:동:2
  +자각적:관:1
  +자각적:명:4
  +자각하다:동:20
  +자갈:명:27
  +자갈돌:명:3
  +자갈밭:명:11
  +자갈색:명:1
  +자개:명:1
  +자개장롱:명:1
  +자객:명:2
  +자격:명:99
  +자격증:명:27
  +자격지심:명:2
  +자견:명:1
  +자결:명:3
  +자결하다:동:5
  +자계:명:1
  +자계하다:동:1
  +자고로:부:4
  +자고저:명:1
  +자곱:명:1
  +자괴감:명:3
  +자구:명:1
  +자구:명:2
  +자구책:명:5
  +자국:명:15
  +자국:명:21
  +자국민:명:2
  +자국어:명:1
  +자국적:명:2
  +자국화하다:동:1
  +자궁:명:33
  +자궁병:명:3
  +자궁암:명:1
  +자궤:명:1
  +자귀나무:명:1
  +자규:명:2
  +자그마치:부:5
  +자그마하다:형:16
  +자그맣다:형:1
  +자극:명:71
  +자극받다:동:4
  +자극성:명:1
  +자극시키다:동:1
  +자극적:명:7
  +자극제:명:1
  +자극하다:동:52
  +자근자근:부:2
  +자글자글:부:1
  +자금:명:2
  +자금:명:373
  +자금난:명:17
  +자금력:명:6
  +자금부장:명:2
  +자금원:명:3
  +자금줄:명:1
  +자금화:명:1
  +자금화하다:동:1
  +자급:명:5
  +자급도:명:5
  +자급자족:명:4
  +자급자족하다:동:2
  +자급적:관:1
  +자급하다:동:2
  +자긍:명:2
  +자긍심:명:5
  +자기:대:1,281
  +자기:대:4
  +자기:명:11
  +자기:명:14
  +자기:명:464
  +자기감정:명:7
  +자기규정:명:1
  +자기기만:명:1
  +자기기만적:관:1
  +자기도취:명:3
  +자기도취적:명:1
  +자기만족:명:4
  +자기만족적:명:1
  +자기모순:명:4
  +자기모순적:명:1
  +자기반성:명:8
  +자기변호:명:1
  +자기비판:명:2
  +자기선전:명:1
  +자기소개:명:8
  +자기식:명:1
  +자기실현:명:13
  +자기실현하다:동:1
  +자기앞:명:5
  +자기애:명:2
  +자기의식:명:2
  +자기장:명:9
  +자기주장:명:14
  +자기중심:명:1
  +자기중심적:관:1
  +자기중심적:명:10
  +자기중심주의:명:9
  +자기편:명:4
  +자기표현:명:4
  +자기희생:명:4
  +자꾸:부:165
  +자꾸만:부:55
  +자꾸자꾸:부:5
  +자네:대:142
  +자녀:명:150
  +자녀관:명:1
  +자다:동:395
  +자당:명:1
  +자대:명:4
  +자동:명:78
  +자동문:명:1
  +자동식:명:2
  +자동인형:명:2
  +자동적:관:1
  +자동적:명:14
  +자동차:명:276
  +자동차관:명:1
  +자동차사:명:1
  +자동차세:명:3
  +자동차업계:명:2
  +자동차업체:명:2
  +자동차용품:명:1
  +자동판매기:명:4
  +자동학과:명:1
  +자동화:명:25
  +자동화되다:동:4
  +자동화하다:동:4
  +자두:명:2
  +자드락길:명:2
  +자디잘다:형:1
  +자라:명:2
  +자라:명:3
  +자라나다:동:36
  +자라다:동:1
  +자라다:동:283
  +자락:명:20
  +자란:명:1
  +자랑:명:45
  +자랑거리:명:9
  +자랑삼다:동:3
  +자랑스러워하다:동:5
  +자랑스럽다:형:83
  +자랑스레:부:2
  +자랑시키다:동:2
  +자랑하다:동:73
  +자력:명:1
  +자력갱생:명:2
  +자료:명:414
  +자료관:명:3
  +자료실:명:12
  +자료실장:명:1
  +자료은행:명:1
  +자료집:명:7
  +자루:명:13
  +자루:명:5
  +자르다:동:197
  +자리:명:26
  +자리:명:856
  +자리끼:명:2
  +자리다툼:명:1
  +자리바꿈:명:1
  +자리바꿈하다:동:1
  +자리보전:명:1
  +자리보전하다:동:1
  +자리하다:동:25
  +자립:명:12
  +자립도:명:4
  +자립성:명:1
  +자립적:관:1
  +자립적:명:3
  +자립하다:동:14
  +자립형:명:2
  +자릿수:명:6
  +자막:명:10
  +자만:명:3
  +자만심:명:2
  +자만하다:동:4
  +자매:명:21
  +자매편:명:2
  +자멸:명:2
  +자멸시키다:동:1
  +자명종:명:2
  +자명하다:형:12
  +자명해지다:동:2
  +자모:명:5
  +자모회:명:2
  +자목련:명:1
  +자못:부:16
  +자문:명:1
  +자문:명:27
  +자문자답:명:1
  +자문하다:동:2
  +자문하다:동:6
  +자물쇠:명:13
  +자물통:명:2
  +자민족:명:1
  +자박:부:3
  +자반:명:1
  +자발:명:1
  +자발성:명:4
  +자발없이:부:1
  +자발적:관:4
  +자발적:명:34
  +자배기:명:1
  +자백:명:19
  +자백받다:동:1
  +자백하다:동:6
  +자보:명:1
  +자본:명:118
  +자본가:명:15
  +자본금:명:23
  +자본력:명:1
  +자본론:명:1
  +자본재:명:2
  +자본제:명:1
  +자본제적:관:2
  +자본주의:명:130
  +자본주의권:명:1
  +자본주의자:명:2
  +자본주의적:관:20
  +자본주의적:명:4
  +자본파적:관:1
  +자부심:명:33
  +자부하다:동:13
  +자비:명:13
  +자비:명:3
  +자비롭다:형:8
  +자빠지다:동:7
  +자사:명:14
  +자산:명:35
  +자산가:명:1
  +자산권화:명:1
  +자살:명:39
  +자살골:명:3
  +자살극:명:2
  +자살자:명:1
  +자살하다:동:16
  +자상하다:형:15
  +자상해지다:동:1
  +자상히:부:1
  +자색:명:2
  +자색:명:4
  +자생:명:2
  +자생력:명:8
  +자생적:관:1
  +자생하다:동:15
  +자서:명:2
  +자서전:명:5
  +자석:명:1
  +자석:명:10
  +자선:명:5
  +자성:명:6
  +자세:명:10
  +자세:명:344
  +자세:부:3
  +자세하다:형:49
  +자세히:부:96
  +자소:명:5
  +자손:명:24
  +자손만대:명:2
  +자수:명:4
  +자수:명:9
  +자수하다:동:1
  +자수하다:동:1
  +자숙하다:동:2
  +자술서:명:4
  +자슥:명:1
  +자습:명:8
  +자습서:명:2
  +자시다:동:11
  +자식:명:416
  +자식새끼:명:1
  +자신:명:1,799
  +자신:명:102
  +자신감:명:50
  +자신만만:명:1
  +자신만만하다:형:12
  +자신만만해하다:동:1
  +자신하다:동:6
  +자아:명:40
  +자아내다:동:31
  +자아비판:명:3
  +자아실현:명:8
  +자아의식:명:1
  +자애:명:3
  +자애롭다:형:2
  +자양:명:2
  +자양분:명:1
  +자업자득:명:1
  +자연:명:555
  +자연:부:23
  +자연경관:명:7
  +자연계:명:2
  +자연계:명:9
  +자연관:명:26
  +자연대:명:2
  +자연도태되다:동:1
  +자연동:명:1
  +자연림:명:4
  +자연물:명:8
  +자연미:명:5
  +자연법적:명:1
  +자연법칙:명:40
  +자연변증법:명:1
  +자연보호:명:9
  +자연보호하다:동:1
  +자연사:명:1
  +자연산:명:2
  +자연석:명:3
  +자연성:명:3
  +자연스러워지다:동:3
  +자연스럽다:형:243
  +자연스레:부:12
  +자연식:명:2
  +자연식품:명:3
  +자연인:명:3
  +자연재해:명:8
  +자연적:관:13
  +자연적:명:16
  +자연조건:명:8
  +자연주의:명:114
  +자연주의자:명:5
  +자연주의적:관:18
  +자연주의적:명:1
  +자연촌:명:2
  +자연치료:명:2
  +자연현상:명:30
  +자연환경:명:62
  +자연히:부:53
  +자영:명:1
  +자영업자:명:1
  +자외선:명:18
  +자욱이:부:2
  +자욱하다:형:11
  +자울자울:부:1
  +자원:명:14
  +자원:명:157
  +자위:명:1
  +자위:명:3
  +자위:명:5
  +자위권:명:6
  +자위대:명:12
  +자위적:관:1
  +자위하다:동:4
  +자위행위:명:2
  +자유:명:286
  +자유권:명:3
  +자유로워지다:동:13
  +자유로이:부:8
  +자유롭다:형:181
  +자유민:명:1
  +자유방임:명:1
  +자유분방:명:1
  +자유분방하다:형:7
  +자유분방해지다:동:1
  +자유사상:명:1
  +자유선거:명:3
  +자유스러워지다:동:1
  +자유스럽다:형:11
  +자유시:명:1
  +자유업:명:1
  +자유의사:명:1
  +자유인:명:14
  +자유자재:명:7
  +자유정신:명:2
  +자유주의:명:5
  +자유주의자:명:4
  +자유주의적:관:5
  +자유주의적:명:2
  +자유직종:명:1
  +자유항:명:1
  +자유형:명:6
  +자유화:명:38
  +자유화되다:동:6
  +자유화율:명:1
  +자유화하다:동:6
  +자율:명:65
  +자율권:명:2
  +자율성:명:24
  +자율적:관:14
  +자율적:명:19
  +자율화:명:25
  +자율화되다:동:1
  +자율화하다:동:1
  +자음:명:8
  +자의:명:6
  +자의성:명:2
  +자의식:명:18
  +자의식하다:동:1
  +자의적:관:3
  +자의적:명:12
  +자이로플레인:명:1
  +자인하다:동:1
  +자임하다:동:5
  +자자하다:형:7
  +자작:명:2
  +자작극:명:1
  +자작나무:명:1
  +자작농:명:2
  +자작지:명:1
  +자작하다:형:2
  +자잘하다:형:5
  +자장:명:4
  +자장가:명:3
  +자장권:명:1
  +자장면:명:37
  +자재:명:17
  +자재난:명:1
  +자재부:명:1
  +자재하다:동:1
  +자적하다:동:2
  +자전:명:1
  +자전:명:3
  +자전:명:5
  +자전거:명:188
  +자전거포:명:3
  +자전적:관:5
  +자전적:명:1
  +자정:명:1
  +자정:명:37
  +자정:명:5
  +자제:명:14
  +자제:명:19
  +자제되다:동:3
  +자제력:명:2
  +자제시키다:동:1
  +자제하다:동:29
  +자조:명:1
  +자조:명:1
  +자조:명:2
  +자조적:관:1
  +자조적:명:3
  +자족:명:2
  +자족성:명:1
  +자족적:명:3
  +자족하다:동:2
  +자존:명:1
  +자존감:명:1
  +자존성:명:1
  +자존심:명:69
  +자존심론:명:1
  +자주:명:12
  +자주:부:324
  +자주국방:명:2
  +자주권:명:2
  +자주독립:명:3
  +자주력:명:1
  +자주색:명:9
  +자주성:명:9
  +자주자주:부:1
  +자주적:관:5
  +자주적:명:6
  +자주정신:명:2
  +자주화:명:1
  +자줏빛:명:6
  +자중:명:1
  +자중하다:동:5
  +자지러지다:동:9
  +자진:명:13
  +자진모리:명:1
  +자진하다:동:10
  +자질:명:16
  +자질구레하다:형:5
  +자책:명:3
  +자책감:명:2
  +자책점:명:3
  +자책하다:동:1
  +자처하다:동:18
  +자천:명:1
  +자청:명:3
  +자청하다:동:14
  +자체:명:666
  +자체적:관:1
  +자체적:명:12
  +자초:명:1
  +자초지종:명:7
  +자초하다:동:15
  +자충수:명:2
  +자취:명:25
  +자취:명:8
  +자취방:명:8
  +자취생:명:1
  +자취하다:동:2
  +자치:명:88
  +자치구:명:1
  +자치권:명:1
  +자치기:명:1
  +자치적:관:1
  +자치적:명:3
  +자치제:명:7
  +자치회:명:1
  +자칫:부:49
  +자칫하다:동:18
  +자칭:명:5
  +자칭하다:동:4
  +자카드:명:1
  +자크:명:2
  +자타:명:6
  +자탄하다:동:2
  +자태:명:6
  +자택:명:11
  +자퇴:명:3
  +자퇴시키다:동:1
  +자퇴하다:동:3
  +자투리:명:6
  +자파:명:1
  +자판:명:73
  +자판기:명:18
  +자폐:명:1
  +자폐아:명:6
  +자폐적:명:1
  +자폐증:명:6
  +자폐증아:명:4
  +자포자기:명:6
  +자포자기되다:동:1
  +자포자기하다:동:3
  +자폭하다:동:1
  +자필:명:2
  +자학하다:동:2
  +자해:명:1
  +자해:명:2
  +자해하다:동:1
  +자해허다:동:1
  +자행되다:동:13
  +자행하다:동:12
  +자현:명:3
  +자현하다:동:9
  +자형:명:13
  +자형:명:3
  +자화라:명:1
  +자화상:명:10
  +자회사:명:9
  +작:명:30
  +작가:명:379
  +작가상:명:1
  +작가적:관:2
  +작가전:명:1
  +작가주의:명:2
  +작고:명:4
  +작고하다:동:7
  +작곡:명:12
  +작곡가:명:7
  +작곡과:명:2
  +작곡자:명:1
  +작곡하다:동:9
  +작금:명:6
  +작년:명:216
  +작년도:명:1
  +작년분:명:1
  +작다:형:738
  +작달막하다:형:3
  +작당:명:1
  +작대기:명:9
  +작도기:명:1
  +작동:명:23
  +작동되다:동:6
  +작동시키다:동:4
  +작동하다:동:24
  +작두:명:1
  +작두날:명:1
  +작렬:명:1
  +작렬시키다:동:2
  +작렬하다:동:4
  +작료:명:4
  +작명:명:3
  +작목:명:9
  +작문:명:5
  +작물:명:1
  +작물:명:21
  +작법:명:1
  +작별:명:14
  +작별주:명:1
  +작별하다:동:2
  +작부:명:5
  +작사:명:3
  +작사가:명:7
  +작살나무:명:4
  +작성:명:43
  +작성되다:동:8
  +작성시키다:동:1
  +작성자:명:1
  +작성하다:동:58
  +작시:명:1
  +작신작신:부:2
  +작심:명:2
  +작심하다:동:2
  +작아지다:동:20
  +작업:명:473
  +작업량:명:8
  +작업반:명:4
  +작업반원:명:2
  +작업반장:명:2
  +작업복:명:14
  +작업실:명:12
  +작업원:명:12
  +작업자:명:1
  +작업장:명:11
  +작업하다:동:23
  +작업화:명:5
  +작열:명:1
  +작용:명:210
  +작용되다:동:5
  +작용력:명:1
  +작용시키다:동:1
  +작용적:명:1
  +작용점:명:1
  +작용하다:동:147
  +작위:명:1
  +작위:명:1
  +작위적:명:1
  +작은각시:명:1
  +작은고모:명:1
  +작은고모부:명:1
  +작은놈:명:1
  +작은누나:명:2
  +작은딸:명:1
  +작은땃쥐:명:1
  +작은마누라:명:2
  +작은마님:명:1
  +작은며느리:명:1
  +작은방:명:2
  +작은붓꽃:명:1
  +작은빨간집모기:명:2
  +작은서방님:명:1
  +작은설:명:1
  +작은아들:명:6
  +작은아버지:명:12
  +작은아이:명:5
  +작은어머니:명:5
  +작은언니:명:9
  +작은엄마:명:1
  +작은오빠:명:1
  +작은외삼촌:명:1
  +작은외숙모:명:1
  +작은이모:명:1
  +작은이모부:명:1
  +작은집:명:7
  +작은창자:명:1
  +작은할머니:명:2
  +작은형:명:11
  +작인:명:8
  +작자:명:23
  +작작:부:1
  +작작하다:형:1
  +작전:명:53
  +작전권:명:1
  +작전식:명:1
  +작전통:명:1
  +작전하다:동:1
  +작정:명:41
  +작정하다:동:17
  +작중:명:6
  +작태:명:8
  +작파하다:동:2
  +작품:명:726
  +작품상:명:4
  +작품성:명:4
  +작품적:관:2
  +작품전:명:1
  +작품집:명:3
  +작품화:명:1
  +작품화되다:동:1
  +작품화하다:동:1
  +작풍:명:1
  +작황:명:3
  +잔:명:254
  +잔가지:명:1
  +잔구성:명:1
  +잔글씨:명:2
  +잔금:명:2
  +잔금:명:26
  +잔기침:명:5
  +잔꾀:명:3
  +잔누비:명:1
  +잔당:명:3
  +잔대:명:1
  +잔돈:명:1
  +잔돈:명:1
  +잔돌:명:1
  +잔등:명:6
  +잔디:명:24
  +잔디밭:명:23
  +잔뜩:부:101
  +잔량:명:3
  +잔류:명:9
  +잔류되다:동:1
  +잔류하다:동:4
  +잔말:명:1
  +잔망스럽다:형:3
  +잔물결:명:5
  +잔별:명:1
  +잔병:명:1
  +잔병치레:명:2
  +잔비:명:1
  +잔뼈:명:4
  +잔뿌리:명:1
  +잔상:명:3
  +잔설:명:1
  +잔소름:명:2
  +잔소리:명:17
  +잔소리꾼:명:2
  +잔소리하다:동:3
  +잔손:명:1
  +잔손질:명:2
  +잔솔:명:1
  +잔솔밭:명:2
  +잔심부름:명:2
  +잔악성:명:1
  +잔액:명:14
  +잔업:명:8
  +잔여:명:1
  +잔여물:명:1
  +잔여적:관:3
  +잔여적:명:2
  +잔영:명:5
  +잔인:명:1
  +잔인무도하다:형:1
  +잔인성:명:2
  +잔인하다:형:26
  +잔인화되다:동:1
  +잔일:명:5
  +잔잔하다:형:33
  +잔잔해지다:동:1
  +잔잔히:부:3
  +잔재:명:1
  +잔재:명:14
  +잔재미:명:1
  +잔존:명:3
  +잔존되다:동:1
  +잔존하다:동:5
  +잔주름:명:4
  +잔치:명:54
  +잔치터:명:1
  +잔치판:명:1
  +잔칫날:명:2
  +잔칫상:명:5
  +잔칫집:명:6
  +잔털:명:1
  +잔해:명:2
  +잔향:명:1
  +잔허리:명:1
  +잔혹:명:1
  +잔혹성:명:1
  +잔혹하다:형:9
  +잖:불:3
  +잘:부:1,890
  +잘근잘근:부:1
  +잘나가다:동:5
  +잘나다:형:48
  +잘다:형:66
  +잘되다:동:163
  +잘디잘다:형:1
  +잘라먹다:동:2
  +잘라지다:동:2
  +잘려지다:동:7
  +잘록이:부:1
  +잘록하다:형:7
  +잘록해지다:동:2
  +잘리다:동:43
  +잘못:명:167
  +잘못:부:126
  +잘못되다:동:149
  +잘못시키다:동:1
  +잘못짚다:동:1
  +잘못하다:동:119
  +잘살다:동:28
  +잘생기다:형:26
  +잘아지다:동:1
  +잘잘:부:1
  +잘잘못:명:3
  +잘하다:동:431
  +잘해지다:동:1
  +잠:명:342
  +잠겨지다:동:2
  +잠결:명:1
  +잠귀:명:1
  +잠그다:동:25
  +잠그다:동:5
  +잠금장치:명:2
  +잠기다:동:17
  +잠기다:동:79
  +잠깐:명:83
  +잠깐:부:82
  +잠꼬대:명:8
  +잠꼬대하다:동:1
  +잠꾸러기:명:2
  +잠들다:동:82
  +잠망경:명:4
  +잠바:명:29
  +잠바떼기:명:4
  +잠방이:명:3
  +잠방잠방하다:동:1
  +잠버릇:명:2
  +잠보:명:1
  +잠복:명:2
  +잠복근무:명:2
  +잠복기:명:2
  +잠복하다:동:8
  +잠상:명:1
  +잠수:명:3
  +잠수부:명:2
  +잠수정:명:2
  +잠수하다:동:5
  +잠수함:명:29
  +잠시:명:102
  +잠시:부:299
  +잠식:명:3
  +잠식당하다:동:1
  +잠식되다:동:1
  +잠식하다:동:8
  +잠실:명:1
  +잠언:명:1
  +잠옷:명:12
  +잠입:명:2
  +잠입하다:동:2
  +잠자다:동:42
  +잠자리:명:47
  +잠자리:명:6
  +잠자리비행기:명:1
  +잠자코:부:26
  +잠잠:부:1
  +잠잠하다:형:5
  +잠잠해지다:동:3
  +잠잠히:부:1
  +잠재:명:6
  +잠재되다:동:6
  +잠재력:명:11
  +잠재성:명:1
  +잠재우다:동:9
  +잠재의식:명:5
  +잠재적:관:10
  +잠재적:명:10
  +잠재하다:동:2
  +잠적:명:1
  +잠적:명:2
  +잠적하다:동:4
  +잠정:명:10
  +잠정적:명:7
  +잠행:명:3
  +잡거:명:2
  +잡것:명:1
  +잡곡:명:5
  +잡곡밥:명:2
  +잡귀:명:2
  +잡균:명:1
  +잡급직:명:1
  +잡념:명:3
  +잡놈:명:1
  +잡다:동:954
  +잡다:보:1
  +잡다하다:형:11
  +잡담:명:17
  +잡담하다:동:2
  +잡답:명:1
  +잡도리:명:1
  +잡동사니:명:7
  +잡목:명:6
  +잡목림:명:1
  +잡무:명:2
  +잡문:명:1
  +잡부금:명:1
  +잡비:명:1
  +잡사:명:1
  +잡상인:명:1
  +잡생각:명:2
  +잡소리:명:1
  +잡수다:동:17
  +잡수시다:동:25
  +잡숫다:동:5
  +잡스럽다:형:2
  +잡식:명:1
  +잡식성:명:2
  +잡쓰레기:명:1
  +잡아가다:동:17
  +잡아끌다:동:14
  +잡아끌리다:동:1
  +잡아내다:동:14
  +잡아넣다:동:5
  +잡아당기다:동:35
  +잡아들이다:동:3
  +잡아떼다:동:6
  +잡아매다:동:1
  +잡아먹다:동:51
  +잡아먹히다:동:7
  +잡아채다:동:3
  +잡아타다:동:1
  +잡역부:명:1
  +잡음:명:19
  +잡인배:명:1
  +잡일:명:4
  +잡종:명:1
  +잡지:명:119
  +잡지명:명:1
  +잡지사:명:7
  +잡지책:명:3
  +잡직:명:3
  +잡채:명:3
  +잡채기:명:2
  +잡척층:명:3
  +잡초:명:13
  +잡치다:동:1
  +잡탕:명:2
  +잡탕밥:명:1
  +잡티:명:8
  +잡풀:명:5
  +잡피:명:2
  +잡혀가다:동:15
  +잡혀지다:동:5
  +잡화:명:4
  +잡화상:명:1
  +잡화점:명:2
  +잡히다:동:1
  +잡히다:동:148
  +잡히다:동:6
  +잣:명:22
  +잣가루:명:2
  +잣나무:명:3
  +잣다:동:2
  +잣대:명:12
  +잣죽:명:1
  +장:명:10
  +장:명:10
  +장:명:2
  +장:명:21
  +장:명:3
  +장:명:39
  +장:명:43
  +장:명:80
  +장:의:243
  +장:의:4
  +장:의:5
  +장가:명:28
  +장가가다:동:7
  +장가들다:동:6
  +장가들이다:동:3
  +장가보내다:동:3
  +장갑:명:12
  +장갑차:명:4
  +장강:명:3
  +장거:명:1
  +장거리:명:1
  +장거리:명:12
  +장거리포:명:1
  +장경:명:1
  +장고:명:1
  +장고:명:1
  +장과:명:1
  +장관:명:1
  +장관:명:383
  +장관:명:9
  +장관상:명:1
  +장관실:명:5
  +장관직:명:1
  +장광설:명:1
  +장교:명:71
  +장구:명:1
  +장구:명:3
  +장구애비:명:1
  +장구하다:형:5
  +장국:명:7
  +장국밥:명:3
  +장군:명:1
  +장군:명:192
  +장군감:명:1
  +장급:명:1
  +장기:명:14
  +장기:명:22
  +장기:명:50
  +장기:명:6
  +장기간:명:32
  +장기성:명:1
  +장기수:명:1
  +장기적:관:9
  +장기적:명:34
  +장기화:명:2
  +장기화되다:동:5
  +장기화하다:동:2
  +장꾼:명:4
  +장끼:명:11
  +장난:명:53
  +장난감:명:25
  +장난기:명:5
  +장난꾸러기:명:5
  +장난삼다:동:4
  +장난스럽다:형:10
  +장난스레:부:1
  +장난질:명:1
  +장난질당하다:동:1
  +장난치다:동:11
  +장난하다:동:6
  +장날:명:12
  +장남:명:47
  +장내:명:6
  +장내:명:8
  +장녀:명:4
  +장년:명:1
  +장년:명:3
  +장년기:명:4
  +장년층:명:9
  +장뇌:명:1
  +장님:명:7
  +장다리:명:2
  +장다리꽃:명:2
  +장단:명:1
  +장단:명:18
  +장단점:명:3
  +장담:명:2
  +장담하다:동:20
  +장대:명:1
  +장대:명:3
  +장대:명:8
  +장대비:명:2
  +장대하다:형:1
  +장대하다:형:2
  +장대하다:형:3
  +장도:명:1
  +장도리:명:12
  +장독:명:2
  +장독:명:4
  +장독대:명:7
  +장돌뱅이:명:1
  +장딴지:명:2
  +장땡:명:3
  +장래:명:78
  +장래성:명:4
  +장려:명:4
  +장려금:명:2
  +장려책:명:2
  +장려하다:동:19
  +장려하다:형:2
  +장력:명:1
  +장렬하다:형:2
  +장렬히:부:1
  +장례:명:25
  +장례복:명:1
  +장례식:명:16
  +장례일:명:1
  +장로:명:15
  +장롱:명:12
  +장르:명:67
  +장르론:명:1
  +장르적:관:3
  +장리:명:1
  +장리쌀:명:2
  +장마:명:22
  +장마철:명:5
  +장막:명:13
  +장만:명:3
  +장만하다:동:26
  +장맛:명:5
  +장맛비:명:3
  +장면:명:180
  +장면장면:명:1
  +장명:명:3
  +장명등:명:1
  +장모:명:13
  +장모님:명:18
  +장목:명:1
  +장목전:명:1
  +장문:명:1
  +장물:명:2
  +장물아비:명:1
  +장미:명:11
  +장미과:명:1
  +장미꽃:명:8
  +장미반:명:1
  +장미원:명:1
  +장밋빛:명:10
  +장바구니:명:11
  +장바닥:명:4
  +장발:명:8
  +장방형:명:1
  +장벽:명:35
  +장변:명:2
  +장병:명:13
  +장보기:명:3
  +장본인:명:16
  +장부:명:1
  +장부:명:13
  +장비:명:74
  +장비하다:동:2
  +장사:명:2
  +장사:명:4
  +장사:명:98
  +장사꾼:명:17
  +장사치:명:1
  +장사하다:동:8
  +장산적:명:6
  +장삼:명:1
  +장삿길:명:3
  +장삿배:명:1
  +장삿속:명:1
  +장색:명:1
  +장생:명:5
  +장서:명:1
  +장서되다:동:1
  +장석:명:2
  +장석:명:4
  +장성:명:15
  +장성:명:5
  +장성일:명:1
  +장성하다:동:3
  +장세:명:5
  +장소:명:174
  +장속:명:1
  +장손:명:5
  +장송곡:명:2
  +장송하다:동:1
  +장수:명:1
  +장수:명:29
  +장수:명:7
  +장수:명:8
  +장수하다:동:5
  +장승:명:16
  +장승제:명:5
  +장시:명:1
  +장시:명:2
  +장시간:명:9
  +장식:명:60
  +장식되다:동:5
  +장식문:명:1
  +장식물:명:2
  +장식상:명:1
  +장식선:명:1
  +장식성:명:3
  +장식욕:명:1
  +장식적:관:4
  +장식적:명:10
  +장식품:명:10
  +장식하다:동:18
  +장신:명:3
  +장신구:명:6
  +장아찌:명:4
  +장악:명:8
  +장악되다:동:1
  +장악력:명:3
  +장악하다:동:54
  +장안:명:5
  +장애:명:108
  +장애되다:동:1
  +장애물:명:27
  +장애아:명:3
  +장애인:명:26
  +장애자:명:30
  +장애적:관:1
  +장애하다:동:1
  +장어:명:1
  +장엄:명:1
  +장엄감:명:1
  +장엄하다:형:8
  +장외:명:4
  +장원:명:4
  +장원:명:5
  +장원주:명:1
  +장유유서:명:3
  +장의:명:1
  +장이론:명:1
  +장인:명:10
  +장인:명:10
  +장자:명:1
  +장작:명:8
  +장작단:명:1
  +장작불:명:1
  +장장:관:4
  +장전:명:2
  +장전되다:동:2
  +장점:명:76
  +장정:명:2
  +장정:명:5
  +장조림:명:2
  +장조카:명:1
  +장좌불와:명:2
  +장죽:명:3
  +장중하다:형:5
  +장지:명:1
  +장지:명:2
  +장지문:명:3
  +장차:부:33
  +장차관:명:7
  +장착:명:1
  +장착되다:동:7
  +장착하다:동:11
  +장책:명:1
  +장책:명:2
  +장처전:명:1
  +장천:명:1
  +장치:명:282
  +장치되다:동:2
  +장치적:관:1
  +장치하다:동:3
  +장쾌하다:형:1
  +장타:명:1
  +장타율:명:1
  +장탄식:명:1
  +장터:명:25
  +장토:명:11
  +장판:명:3
  +장판방:명:1
  +장판지:명:2
  +장편:명:18
  +장풍:명:8
  +장하다:형:12
  +장학:명:7
  +장학과:명:2
  +장학관:명:2
  +장학금:명:29
  +장학사:명:10
  +장학생:명:5
  +장학회:명:2
  +장항아리:명:1
  +장해:명:3
  +장형:명:3
  +장화:명:27
  +장황하다:형:9
  +장히:부:1
  +잦다:형:55
  +잦아들다:동:13
  +잦아지다:동:9
  +잫다:동:1
  +재:명:13
  +재:명:2
  +재:명:6
  +재가:명:2
  +재가:명:2
  +재가동:명:3
  +재가시키다:동:1
  +재가열:명:1
  +재가하다:동:1
  +재간:명:12
  +재간꾼:명:1
  +재갈:명:3
  +재개:명:11
  +재개되다:동:6
  +재개발:명:17
  +재개정:명:1
  +재개하다:동:10
  +재거주:명:1
  +재건:명:6
  +재건하다:동:3
  +재검사:명:1
  +재검토:명:12
  +재검토되다:동:4
  +재검토하다:동:15
  +재격돌:명:1
  +재결과:명:1
  +재결성되다:동:1
  +재결합:명:3
  +재결합하다:동:2
  +재경:명:2
  +재계:명:62
  +재계약:명:2
  +재고:명:15
  +재고:명:2
  +재고되다:동:1
  +재고량:명:1
  +재고하다:동:8
  +재공개:명:3
  +재공개하다:동:1
  +재공연:명:6
  +재공연하다:동:1
  +재교육:명:3
  +재구매:명:1
  +재구성:명:3
  +재구성되다:동:1
  +재구성하다:동:16
  +재구축:명:1
  +재규정되다:동:1
  +재규정하다:동:1
  +재기:명:3
  +재기:명:9
  +재기습:명:1
  +재기시키다:동:1
  +재기하다:동:5
  +재깍재깍:부:1
  +재깍재깍:부:1
  +재난:명:10
  +재녹음:명:1
  +재능:명:48
  +재능꾼:명:1
  +재다:동:1
  +재다:동:1
  +재다:동:29
  +재다:동:4
  +재다:형:6
  +재단:명:42
  +재단:명:6
  +재단되다:동:1
  +재단반:명:1
  +재단하다:동:5
  +재담:명:4
  +재도발:명:1
  +재도약:명:1
  +재도약시키다:동:1
  +재도전하다:동:2
  +재독:명:5
  +재돌입:명:1
  +재등록:명:2
  +재등장:명:3
  +재등장하다:동:1
  +재떨이:명:12
  +재래:명:10
  +재래극:명:1
  +재래선:명:1
  +재래시장:명:3
  +재래식:명:12
  +재래종:명:2
  +재래하다:동:1
  +재량:명:4
  +재량권:명:7
  +재력:명:8
  +재력가:명:1
  +재론하다:동:3
  +재롱:명:8
  +재료:명:288
  +재료량:명:1
  +재료비:명:1
  +재료학과:명:1
  +재림:명:1
  +재림하다:동:2
  +재목:명:6
  +재무:명:15
  +재무장:명:1
  +재무제표:명:2
  +재물:명:12
  +재미:명:159
  +재미:명:18
  +재미나다:동:7
  +재미없다:형:33
  +재미있다:형:314
  +재미있어하다:동:3
  +재밌다:형:31
  +재발:명:11
  +재발견:명:17
  +재발견되다:동:1
  +재발견하다:동:3
  +재발탁되다:동:1
  +재발하다:동:8
  +재방송:명:1
  +재배:명:35
  +재배되다:동:9
  +재배지:명:2
  +재배치:명:2
  +재배치하다:동:1
  +재배하다:동:35
  +재벌:명:205
  +재벌가:명:6
  +재복:명:3
  +재봉:명:1
  +재봉틀:명:1
  +재부:명:3
  +재분류:명:1
  +재분류하다:동:2
  +재분배:명:7
  +재비:명:1
  +재빠르다:형:11
  +재빨리:부:52
  +재사용:명:4
  +재사용하다:동:4
  +재산:명:328
  +재산가:명:1
  +재산권:명:21
  +재산세:명:5
  +재산세국:명:1
  +재산세율:명:1
  +재산제:명:1
  +재산형:명:1
  +재삼:부:3
  +재상:명:8
  +재생:명:41
  +재생되다:동:4
  +재생부:명:1
  +재생산:명:41
  +재생산되다:동:3
  +재생산시키다:동:1
  +재생산적:명:1
  +재생산하다:동:15
  +재생시키다:동:7
  +재생용품:명:1
  +재생적:관:1
  +재생창:명:1
  +재생하다:동:4
  +재선:명:4
  +재선거:명:1
  +재선시키다:동:1
  +재설계되다:동:1
  +재성장:명:2
  +재성장시키다:동:1
  +재세:명:2
  +재소자:명:8
  +재소환장:명:5
  +재소환하다:동:1
  +재수:명:13
  +재수:명:16
  +재수사:명:5
  +재수생:명:14
  +재수생반:명:2
  +재수하다:동:3
  +재순환시키다:동:1
  +재스민:명:2
  +재승격하다:동:1
  +재심:명:2
  +재심사:명:1
  +재심하다:동:1
  +재앙:명:16
  +재야:명:71
  +재야인사:명:3
  +재어지다:동:2
  +재연:명:1
  +재연:명:5
  +재연기:명:4
  +재연되다:동:3
  +재연되다:동:4
  +재연하다:동:6
  +재외:명:2
  +재용:명:1
  +재우다:동:11
  +재우다:동:15
  +재원:명:2
  +재원:명:35
  +재위:명:1
  +재위하다:동:1
  +재음미하다:동:3
  +재의:명:1
  +재의뢰:명:1
  +재이용하다:동:2
  +재인식:명:4
  +재인식되다:동:1
  +재인식하다:동:5
  +재일:명:17
  +재임:명:23
  +재임용:명:1
  +재임용제:명:1
  +재입국:명:1
  +재입성:명:1
  +재입학:명:3
  +재입학하다:동:1
  +재작년:명:16
  +재잘거리다:동:9
  +재장악:명:1
  +재재거리다:동:2
  +재재작년:명:2
  +재점검하다:동:1
  +재접근:명:1
  +재정:명:118
  +재정:명:12
  +재정국장:명:1
  +재정난:명:5
  +재정돈하다:동:1
  +재정리:명:1
  +재정리하다:동:1
  +재정립:명:1
  +재정립되다:동:1
  +재정립하다:동:9
  +재정부:명:2
  +재정비:명:3
  +재정비되다:동:1
  +재정비하다:동:3
  +재정적:관:4
  +재정적:명:4
  +재조립되다:동:1
  +재조립하다:동:1
  +재조명:명:6
  +재조명되다:동:1
  +재조명하다:동:4
  +재조사:명:4
  +재조사하다:동:1
  +재조율하다:동:2
  +재조정:명:5
  +재조정되다:동:3
  +재조정하다:동:9
  +재조직하다:동:3
  +재조합하다:동:1
  +재종조모:명:1
  +재종조부:명:8
  +재주:명:34
  +재주꾼:명:5
  +재주넘다:동:1
  +재중:명:7
  +재즈:명:46
  +재지:명:56
  +재지스트:명:1
  +재지적:명:1
  +재지층:명:1
  +재직:명:15
  +재직권:명:1
  +재직하다:동:17
  +재질:명:2
  +재질:명:9
  +재집권:명:3
  +재집권하다:동:1
  +재차:부:6
  +재창작하다:동:1
  +재창조:명:9
  +재창조되다:동:5
  +재창조하다:동:4
  +재채기:명:16
  +재채혈:명:1
  +재처리:명:1
  +재처리하다:동:1
  +재천명:명:1
  +재천명하다:동:2
  +재첩:명:1
  +재촉:명:4
  +재촉구:명:2
  +재촉하다:동:21
  +재촌탈농하다:동:1
  +재촬영:명:1
  +재촬영하다:동:2
  +재출발하다:동:1
  +재충:명:1
  +재측정:명:1
  +재치:명:13
  +재킷:명:11
  +재타협:명:1
  +재탄생:명:1
  +재탄생되다:동:1
  +재탄생하다:동:1
  +재탈환:명:1
  +재탕:명:1
  +재탕하다:동:2
  +재테크:명:16
  +재통일:명:3
  +재통합되다:동:1
  +재투입하다:동:2
  +재투자:명:1
  +재투표:명:1
  +재판:명:108
  +재판:명:2
  +재판관:명:4
  +재판권:명:5
  +재판부:명:33
  +재판석:명:1
  +재판소:명:3
  +재판식:명:1
  +재판장:명:19
  +재판정:명:4
  +재패니메이션:명:1
  +재퍼니즈재즈:명:1
  +재퍼니즈팝:명:2
  +재편:명:7
  +재편되다:동:7
  +재편성:명:2
  +재편성되다:동:2
  +재편성하다:동:3
  +재편입:명:1
  +재편하다:동:3
  +재평가:명:1
  +재평가되다:동:1
  +재평가하다:동:4
  +재하다:동:1
  +재학:명:1
  +재학:명:22
  +재학생:명:10
  +재항고:명:1
  +재항고하다:동:1
  +재해:명:22
  +재해석:명:4
  +재해석하다:동:5
  +재해직:명:1
  +재현:명:15
  +재현되다:동:7
  +재현시키다:동:3
  +재현하다:동:14
  +재형:명:1
  +재형저축:명:7
  +재혼:명:8
  +재혼하다:동:5
  +재화:명:7
  +재확립하다:동:1
  +재확인:명:1
  +재확인시키다:명:1
  +재확인하다:동:9
  +재활:명:7
  +재활성화시키다:동:1
  +재활성화하다:동:1
  +재활용:명:19
  +재활용되다:동:1
  +재활용품:명:26
  +재활용하다:동:11
  +재활원:명:6
  +재활원장:명:1
  +재회:명:6
  +재회동하다:동:1
  +재회하다:동:2
  +잭나이프:명:2
  +잰걸음:명:3
  +잼:명:1
  +잽싸다:형:11
  +잿간:명:1
  +잿더미:명:3
  +잿물:명:3
  +잿빛:명:17
  +쟁:명:4
  +쟁기:명:10
  +쟁론:명:3
  +쟁반:명:21
  +쟁위:명:1
  +쟁의:명:15
  +쟁의권:명:1
  +쟁이다:동:5
  +쟁쟁하다:형:1
  +쟁쟁하다:형:5
  +쟁점:명:52
  +쟁점화:명:2
  +쟁점화되다:동:4
  +쟁점화하다:동:1
  +쟁취:명:5
  +쟁취되다:동:1
  +쟁취하다:동:4
  +쟁탈전:명:13
  +쟁패:명:1
  +쟤:불:29
  +저:감:121
  +저:관:444
  +저:대:2,281
  +저:대:22
  +저:명:3
  +저가:명:5
  +저가격:명:2
  +저가품:명:1
  +저간:명:7
  +저감:명:1
  +저개발:명:4
  +저거:대:49
  +저것:대:45
  +저격:명:7
  +저격당하다:동:1
  +저격범:명:2
  +저고리:명:64
  +저고릿감:명:1
  +저곡가:명:1
  +저곳:대:1
  +저공비행하다:동:1
  +저공해:명:7
  +저그:감:2
  +저그:대:3
  +저금:명:8
  +저금통:명:2
  +저금통장:명:4
  +저금하다:동:4
  +저급:명:3
  +저급하다:형:4
  +저기:감:23
  +저기:대:134
  +저기압:명:4
  +저기압권:명:1
  +저기압부:명:1
  +저널리스트:명:4
  +저널리즘:명:8
  +저녁:명:343
  +저녁거리:명:1
  +저녁나절:명:1
  +저녁녘:명:2
  +저녁노을:명:1
  +저녁놀:명:1
  +저녁때:명:18
  +저녁밥:명:18
  +저녁상:명:6
  +저녁연기:명:3
  +저놈:대:18
  +저놈아:대:1
  +저농산물:명:4
  +저농산품:명:1
  +저농약:명:1
  +저눔아:명:4
  +저능아:명:1
  +저다지:부:1
  +저단백:명:1
  +저당:명:1
  +저대로:부:1
  +저돌성:명:1
  +저돌적:명:1
  +저떻다:형:1
  +저래:불:4
  +저래도:불:1
  +저래라:불:3
  +저랬:불:1
  +저러다:동:26
  +저러하다:형:2
  +저런:감:17
  +저런:관:53
  +저렇다:형:67
  +저력:명:11
  +저렴:명:3
  +저렴하다:형:16
  +저렴해지다:동:1
  +저리:명:2
  +저리:부:11
  +저리:부:26
  +저리다:형:21
  +저리도:부:4
  +저리로:부:1
  +저릿:부:1
  +저마다:명:11
  +저마다:부:47
  +저만치:명:6
  +저만치:부:26
  +저만큼:부:16
  +저면:명:1
  +저명:명:1
  +저명인사:명:3
  +저명하다:형:4
  +저물녘:명:1
  +저물다:동:18
  +저미다:동:14
  +저반:명:2
  +저버리다:동:15
  +저벅저벅:부:4
  +저번:명:21
  +저변:명:12
  +저변층:명:1
  +저분:대:14
  +저비용:명:1
  +저산성:명:1
  +저산소:명:1
  +저산소증:명:9
  +저상:명:1
  +저서:명:34
  +저서성:명:1
  +저성장:명:2
  +저세상:명:2
  +저소득:명:2
  +저소득층:명:3
  +저속:명:1
  +저속:명:6
  +저속하다:형:11
  +저속화:명:1
  +저수:명:1
  +저수되다:동:2
  +저수량:명:1
  +저수지:명:35
  +저수하다:동:1
  +저술:명:25
  +저술가:명:2
  +저술하다:동:6
  +저승:명:19
  +저승길:명:3
  +저승꽃:명:1
  +저승사자:명:2
  +저액:명:1
  +저열하다:형:1
  +저예산:명:4
  +저오염:명:1
  +저온:명:5
  +저울:명:18
  +저울쟁이:명:1
  +저울질:명:7
  +저울질하다:동:7
  +저울추:명:1
  +저위:명:1
  +저유소:명:1
  +저유지:명:1
  +저음:명:1
  +저음계:명:1
  +저의:명:13
  +저이:대:2
  +저임:명:1
  +저임금:명:14
  +저자:대:2
  +저자:명:32
  +저자세:명:3
  +저작:명:21
  +저작권:명:91
  +저작권성:명:3
  +저작권자:명:3
  +저작물:명:40
  +저작물성:명:6
  +저작자:명:6
  +저잣거리:명:1
  +저장:명:21
  +저장고:명:1
  +저장되다:동:14
  +저장법:명:1
  +저장성:명:1
  +저장소:명:1
  +저장판:명:1
  +저장하다:동:22
  +저저번:명:2
  +저절로:부:61
  +저조:명:2
  +저조하다:형:8
  +저조해지다:동:1
  +저주:명:1
  +저주:명:13
  +저주가:명:1
  +저주받다:동:5
  +저주스럽다:형:2
  +저주하다:동:10
  +저준위:명:1
  +저지:명:15
  +저지:명:8
  +저지대:명:6
  +저지되다:동:1
  +저지르다:동:133
  +저지방:명:2
  +저지선:명:2
  +저지시키다:동:1
  +저지하다:동:20
  +저질:명:15
  +저질러지다:동:5
  +저질성:명:1
  +저질스럽다:형:1
  +저질화:명:2
  +저쪽:대:108
  +저쯤:명:2
  +저체중아:명:1
  +저촉되다:동:1
  +저축:명:49
  +저축률:명:2
  +저축성:명:3
  +저축액:명:3
  +저축하다:동:12
  +저칼로리:명:3
  +저택:명:1
  +저토록:부:3
  +저편:대:33
  +저평:명:1
  +저포:명:5
  +저하:명:1
  +저하:명:18
  +저하되다:동:8
  +저하론:명:1
  +저하시키다:동:3
  +저하제:명:1
  +저학년:명:3
  +저항:명:79
  +저항권:명:3
  +저항기:명:1
  +저항라:명:1
  +저항력:명:10
  +저항선:명:1
  +저항적:관:2
  +저항하다:동:34
  +저해:명:5
  +저해되다:동:3
  +저해하다:동:18
  +저혈압:명:3
  +저효율:명:2
  +저효율성:명:1
  +저희:대:185
  +적:명:1
  +적:명:1
  +적:명:1
  +적:명:2
  +적:명:5
  +적:명:80
  +적:의:533
  +적갈색:명:18
  +적개심:명:4
  +적격:명:6
  +적격성:명:1
  +적격하다:형:1
  +적공:명:1
  +적공담:명:1
  +적국:명:8
  +적군:명:1
  +적군:명:3
  +적군파:명:6
  +적극:명:101
  +적극성:명:5
  +적극적:관:24
  +적극적:명:181
  +적극화되다:동:1
  +적극화시키다:동:4
  +적금:명:1
  +적금:명:13
  +적기:명:1
  +적기:명:2
  +적기:명:3
  +적나라하다:형:13
  +적다:동:173
  +적다:형:360
  +적당:명:2
  +적당량:명:9
  +적당하다:형:83
  +적당히:부:76
  +적대:명:7
  +적대감:명:1
  +적대국:명:1
  +적대시하다:동:1
  +적대자:명:2
  +적대적:관:2
  +적대적:명:7
  +적대하다:동:1
  +적도:명:8
  +적도제:명:1
  +적립:명:1
  +적립되다:동:1
  +적립시키다:동:1
  +적립하다:동:2
  +적막:명:10
  +적막하다:형:3
  +적멸:명:2
  +적멸감:명:1
  +적멸보궁:명:6
  +적반하장:명:5
  +적발:명:13
  +적발되다:동:33
  +적발하다:동:19
  +적법:명:4
  +적법하다:형:5
  +적부:명:7
  +적부심:명:6
  +적분:명:1
  +적산:명:2
  +적삼:명:3
  +적색:명:1
  +적색:명:4
  +적색형:명:1
  +적선:명:1
  +적선:명:1
  +적설량:명:1
  +적성:명:1
  +적성:명:40
  +적성국:명:4
  +적소:명:1
  +적수:명:1
  +적시:명:1
  +적시다:동:46
  +적시타:명:1
  +적시하다:동:1
  +적신:명:1
  +적신호:명:4
  +적실:명:1
  +적실성:명:1
  +적실하다:형:1
  +적어도:부:158
  +적어지다:동:18
  +적역:명:1
  +적외선:명:5
  +적용:명:73
  +적용되다:동:83
  +적용되어지다:동:1
  +적용받다:동:2
  +적용시키다:동:8
  +적용하다:동:88
  +적응:명:28
  +적응감:명:1
  +적응되다:동:6
  +적응력:명:3
  +적응성:명:2
  +적응시키다:동:1
  +적응하다:동:46
  +적의:명:6
  +적의성:명:6
  +적의하다:형:4
  +적이:부:9
  +적일:명:1
  +적임:명:1
  +적임자:명:3
  +적자:명:2
  +적자:명:2
  +적자:명:89
  +적자국:명:1
  +적자생존:명:3
  +적잖다:형:11
  +적잖이:부:8
  +적장:명:2
  +적장자:명:2
  +적재:명:2
  +적재:명:2
  +적재량:명:2
  +적재하다:동:9
  +적재함:명:3
  +적적하다:형:1
  +적절하다:형:114
  +적절히:부:25
  +적정:명:10
  +적정선:명:1
  +적정성:명:1
  +적정하다:형:3
  +적정화:명:1
  +적중:명:1
  +적중되다:동:1
  +적중하다:동:4
  +적지:명:3
  +적지:명:4
  +적진:명:5
  +적채:명:4
  +적체:명:9
  +적체되다:동:1
  +적초의:명:1
  +적토마:명:1
  +적폐:명:2
  +적합:명:2
  +적합성:명:7
  +적합하다:형:52
  +적혈:명:1
  +적화:명:5
  +적확하다:형:1
  +적환장:명:3
  +적히다:동:56
  +전:관:306
  +전:관:398
  +전:명:1
  +전:명:1
  +전:명:1
  +전:명:1,378
  +전:명:5
  +전:명:6
  +전:의:12
  +전가:명:1
  +전가:명:4
  +전가되다:동:1
  +전가시키다:동:2
  +전가하다:동:6
  +전각:명:2
  +전갈:명:14
  +전갈:명:3
  +전갈자리:명:1
  +전갈좌:명:1
  +전개:명:85
  +전개되다:동:78
  +전개되어지다:동:1
  +전개시키다:동:3
  +전개하다:동:60
  +전개형:명:7
  +전객제:명:2
  +전격:명:8
  +전격적:관:1
  +전격적:명:4
  +전경:명:13
  +전경:명:5
  +전경:명:7
  +전골:명:5
  +전공:명:1
  +전공:명:1
  +전공:명:58
  +전공과목:명:2
  +전공의:명:4
  +전공자:명:5
  +전공하다:동:38
  +전과:명:2
  +전과자:명:2
  +전관:명:1
  +전관:명:7
  +전광석화:명:1
  +전광판:명:5
  +전교:명:8
  +전교생:명:8
  +전구:명:16
  +전국:명:13
  +전국:명:307
  +전국구:명:23
  +전국적:관:2
  +전국적:명:47
  +전국화:명:1
  +전군:명:7
  +전권:명:1
  +전권:명:2
  +전권:명:3
  +전근:명:4
  +전근대:명:10
  +전근대적:관:6
  +전근대적:명:1
  +전기:명:1
  +전기:명:121
  +전기:명:22
  +전기:명:73
  +전기:명:9
  +전기공:명:1
  +전기과:명:4
  +전기난로:명:10
  +전기담요:명:3
  +전기대:명:5
  +전기동:명:1
  +전기면도기:명:2
  +전기밥솥:명:25
  +전기선:명:1
  +전기장판:명:2
  +전기적:관:2
  +전기적:명:1
  +전기톱:명:2
  +전깃불:명:5
  +전깃줄:명:2
  +전나무:명:8
  +전날:명:60
  +전내기:명:1
  +전년:명:14
  +전년도:명:5
  +전념:명:2
  +전념하다:동:18
  +전농:명:1
  +전뇌:명:4
  +전능하다:형:3
  +전단:명:6
  +전단물:명:1
  +전달:명:3
  +전달:명:43
  +전달되다:동:54
  +전달받다:동:3
  +전달식:명:1
  +전달하다:동:89
  +전담:명:15
  +전담반:명:1
  +전담하다:동:18
  +전답:명:5
  +전당:명:13
  +전당:명:6
  +전당포:명:3
  +전대:명:1
  +전대:명:2
  +전대미문:명:2
  +전도:명:1
  +전도:명:1
  +전도:명:2
  +전도:명:5
  +전도되다:동:6
  +전도사:명:5
  +전도양양하다:형:1
  +전도유망하다:형:1
  +전도율:명:1
  +전도하다:동:1
  +전동:명:1
  +전동기:명:2
  +전동식:명:1
  +전동차:명:28
  +전등:명:14
  +전등불:명:3
  +전등알:명:1
  +전라:명:7
  +전락:명:2
  +전락되다:동:1
  +전락시키다:동:6
  +전락하다:동:28
  +전란:명:3
  +전람회:명:4
  +전래:명:12
  +전래되다:동:2
  +전략:명:280
  +전략기:명:1
  +전략적:관:2
  +전략적:명:4
  +전량:명:4
  +전력:명:23
  +전력:명:33
  +전력:명:8
  +전력:명:9
  +전력난:명:1
  +전력량:명:4
  +전력자:명:1
  +전력투구하다:동:2
  +전력하다:동:1
  +전령:명:1
  +전령사:명:1
  +전례:명:16
  +전류:명:33
  +전류기:명:1
  +전리품:명:2
  +전립선암:명:2
  +전말:명:2
  +전말기:명:1
  +전말서:명:1
  +전망:명:152
  +전망대:명:4
  +전망되다:동:33
  +전망치:명:1
  +전망하다:동:40
  +전매:명:2
  +전매제:명:1
  +전면:명:19
  +전면:명:57
  +전면적:관:5
  +전면적:명:35
  +전면전:명:8
  +전면화시키다:동:1
  +전멸되다:동:1
  +전멸시키다:동:3
  +전멸하다:동:1
  +전모:명:12
  +전무:명:2
  +전무:명:39
  +전무이사:명:4
  +전무하다:형:11
  +전무후무하다:형:4
  +전문:명:220
  +전문:명:5
  +전문:명:6
  +전문가:명:166
  +전문대:명:13
  +전문대입:명:1
  +전문대졸:명:4
  +전문대학:명:4
  +전문서:명:1
  +전문성:명:16
  +전문업자:명:3
  +전문의:명:33
  +전문인:명:4
  +전문적:관:6
  +전문적:명:31
  +전문점:명:16
  +전문지:명:5
  +전문직:명:23
  +전문화:명:16
  +전문화되다:동:7
  +전문화하다:동:1
  +전민변정:명:1
  +전반:명:27
  +전반:명:47
  +전반기:명:10
  +전반부:명:1
  +전반적:관:11
  +전반적:명:60
  +전반전:명:2
  +전방:명:1
  +전방:명:14
  +전방:명:6
  +전번:명:3
  +전범:명:1
  +전범자:명:2
  +전법:명:1
  +전별:명:1
  +전별금:명:5
  +전병:명:1
  +전보:명:3
  +전보:명:8
  +전보하다:동:1
  +전복:명:5
  +전복:명:6
  +전복되다:동:3
  +전복시키다:동:1
  +전복적:관:1
  +전복적:명:1
  +전복죽:명:2
  +전봇대:명:6
  +전부:명:64
  +전부:부:54
  +전분:명:5
  +전비:명:4
  +전사:명:1
  +전사:명:1
  +전사:명:7
  +전사하다:동:5
  +전산:명:23
  +전산과:명:1
  +전산망:명:24
  +전산실:명:4
  +전산실장:명:1
  +전산학:명:3
  +전산학부:명:1
  +전산화:명:8
  +전산화하다:동:3
  +전삼:명:3
  +전상자:명:1
  +전생:명:1
  +전생:명:13
  +전서:명:3
  +전석지:명:1
  +전선:명:1
  +전선:명:19
  +전선:명:32
  +전선:명:6
  +전설:명:34
  +전설적:관:1
  +전설적:명:4
  +전성:명:1
  +전성기:명:11
  +전성시대:명:5
  +전세:명:24
  +전세:명:4
  +전세:명:8
  +전세금:명:5
  +전세기:명:1
  +전세기:명:1
  +전세방:명:5
  +전셋돈:명:1
  +전소:명:1
  +전소되다:동:3
  +전속:명:13
  +전속:명:2
  +전속권:명:1
  +전속력:명:3
  +전송:명:2
  +전송:명:3
  +전송:명:6
  +전송되다:동:1
  +전송망:명:1
  +전송받다:동:11
  +전송하다:동:2
  +전송하다:동:6
  +전수:명:1
  +전수:명:2
  +전수받다:동:5
  +전수생:명:1
  +전수하다:동:4
  +전술:명:1
  +전술:명:22
  +전술적:관:2
  +전술적:명:1
  +전술하다:동:7
  +전승:명:3
  +전승:명:4
  +전승:명:5
  +전승국:명:1
  +전승되다:동:3
  +전승성:명:1
  +전승시키다:동:1
  +전승하다:동:2
  +전시:명:1
  +전시:명:36
  +전시:명:6
  +전시과:명:20
  +전시관:명:27
  +전시대:명:1
  +전시되다:동:15
  +전시물:명:6
  +전시실:명:14
  +전시장:명:21
  +전시품:명:4
  +전시하다:동:22
  +전시회:명:43
  +전신:명:11
  +전신:명:2
  +전신:명:32
  +전신기:명:1
  +전신주:명:5
  +전실:명:1
  +전실:명:3
  +전심전력:명:2
  +전심전력하다:동:2
  +전압:명:7
  +전액:명:13
  +전야:명:5
  +전야제:명:6
  +전어:명:1
  +전언:명:9
  +전업:명:10
  +전업농:명:1
  +전업적:명:1
  +전업하다:동:2
  +전역:명:1
  +전역:명:58
  +전역:명:8
  +전역서:명:1
  +전역시키다:동:2
  +전역식:명:1
  +전역자:명:1
  +전역하다:동:3
  +전연:부:3
  +전열:명:2
  +전염:명:4
  +전염되다:동:2
  +전염병:명:10
  +전염성:명:2
  +전영:명:1
  +전왕:명:1
  +전용:명:53
  +전용:명:8
  +전용관:명:1
  +전용식:명:1
  +전용하다:동:1
  +전우:명:4
  +전원:명:10
  +전원:명:28
  +전원:명:8
  +전원도시:명:1
  +전원주택:명:1
  +전위:명:21
  +전위성:명:1
  +전위적:관:3
  +전위적:명:7
  +전유:명:2
  +전유물:명:6
  +전유하다:동:1
  +전율:명:19
  +전율시키다:동:1
  +전율하다:동:2
  +전이:명:1
  +전이되다:동:6
  +전이성:명:1
  +전이하다:동:1
  +전인:명:9
  +전인격:명:3
  +전인격적:관:1
  +전인성:명:1
  +전인적:관:6
  +전인적:명:2
  +전임:명:6
  +전임:명:9
  +전임자:명:6
  +전입:명:2
  +전입금:명:4
  +전입자:명:1
  +전자:명:3
  +전자:명:39
  +전자:명:94
  +전자계산기:명:10
  +전자기:명:1
  +전자기력:명:1
  +전자기적:관:1
  +전자기파:명:3
  +전자동:명:3
  +전자레인지:명:14
  +전자석:명:3
  +전자시계:명:1
  +전자식:명:14
  +전자오락:명:8
  +전자오락실:명:2
  +전자음:명:1
  +전자적:관:2
  +전자적:명:2
  +전자파:명:1
  +전자파:명:8
  +전자화:명:1
  +전작:명:2
  +전작:명:8
  +전장:명:4
  +전장:명:42
  +전장:명:8
  +전장:명:8
  +전장제:명:1
  +전장화:명:1
  +전재되다:동:1
  +전재하다:동:1
  +전쟁:명:1
  +전쟁:명:399
  +전쟁놀이:명:1
  +전쟁무:명:1
  +전쟁터:명:6
  +전적:명:1
  +전적:명:56
  +전전:명:2
  +전전긍긍:명:2
  +전전긍긍하다:동:9
  +전전자:명:1
  +전전하다:동:11
  +전전해:명:1
  +전절기:명:1
  +전정:명:1
  +전정:명:4
  +전정가위:명:10
  +전제:명:10
  +전제:명:117
  +전제:명:3
  +전제국:명:1
  +전제되다:동:18
  +전제적:관:1
  +전제적:명:1
  +전제주의:명:1
  +전제하다:동:32
  +전조:명:1
  +전조:명:7
  +전조등:명:2
  +전조율:명:1
  +전주:명:1
  +전주:명:2
  +전주:명:3
  +전주제:명:2
  +전지:명:1
  +전지:명:19
  +전지전능하다:형:2
  +전지훈련:명:1
  +전직:명:3
  +전직:명:44
  +전직하다:동:2
  +전진:명:2
  +전진:명:31
  +전진되다:동:2
  +전진시키다:동:4
  +전진적:관:1
  +전진적:명:1
  +전진하다:동:11
  +전집:명:6
  +전차:명:5
  +전처:명:1
  +전천후:명:2
  +전철:명:4
  +전철:명:41
  +전철망:명:1
  +전철역:명:7
  +전체:명:1
  +전체:명:591
  +전체성:명:30
  +전체적:관:18
  +전체적:명:90
  +전체주의:명:17
  +전체주의적:관:2
  +전체주의적:명:2
  +전체주의화되다:동:1
  +전체화:명:9
  +전초:명:2
  +전초적:관:1
  +전초전:명:6
  +전축:명:2
  +전출:명:3
  +전출되다:동:1
  +전출시키다:동:2
  +전취하다:동:1
  +전치:명:3
  +전침:명:4
  +전토:명:1
  +전통:명:1
  +전통:명:255
  +전통극:명:1
  +전통문화:명:16
  +전통미:명:2
  +전통복:명:1
  +전통성:명:6
  +전통적:관:21
  +전통적:명:88
  +전통주의:명:1
  +전통형:명:3
  +전투:명:33
  +전투기:명:10
  +전투력:명:2
  +전투복:명:2
  +전투성:명:1
  +전투적:관:3
  +전투적:명:3
  +전파:명:28
  +전파:명:4
  +전파:명:5
  +전파되다:동:17
  +전파자:명:2
  +전파하다:동:10
  +전편:명:1
  +전편:명:2
  +전폐하다:동:2
  +전폭:명:1
  +전폭기:명:3
  +전폭적:관:1
  +전폭적:명:6
  +전표:명:1
  +전표:명:20
  +전하:명:2
  +전하:명:6
  +전하다:동:276
  +전하여지다:동:1
  +전학:명:14
  +전학시키다:동:1
  +전학하다:동:2
  +전함:명:1
  +전해:명:3
  +전해지다:동:94
  +전해질액:명:2
  +전향:명:1
  +전향서:명:1
  +전향적:명:3
  +전향하다:동:1
  +전혀:부:420
  +전형:명:1
  +전형:명:14
  +전형성:명:2
  +전형적:관:2
  +전형적:명:34
  +전호:명:19
  +전호적:명:1
  +전호제:명:1
  +전호제적:관:1
  +전화:명:5
  +전화:명:520
  +전화국:명:5
  +전화기:명:23
  +전화되다:동:2
  +전화드리다:동:4
  +전화론자:명:1
  +전화망:명:1
  +전화받다:동:12
  +전화번호:명:52
  +전화번호부:명:3
  +전화벨:명:38
  +전화비:명:3
  +전화선:명:4
  +전화위복:명:2
  +전화질:명:2
  +전화통:명:15
  +전화하다:동:1
  +전화하다:동:43
  +전환:명:94
  +전환기:명:10
  +전환되다:동:12
  +전환시키다:동:8
  +전환점:명:16
  +전환하다:동:43
  +전황:명:3
  +전획물:명:1
  +전횡:명:1
  +전횡하다:동:2
  +전후:명:22
  +전후:명:38
  +전후사:명:1
  +전후좌우:명:2
  +전후하다:동:25
  +전희:명:1
  +절:명:34
  +절:명:61
  +절:명:86
  +절간:명:2
  +절감:명:1
  +절감:명:12
  +절감되다:동:1
  +절감액:명:2
  +절감책:명:1
  +절감하다:동:13
  +절감하다:동:8
  +절개:명:2
  +절개:명:5
  +절개되다:동:1
  +절개선:명:2
  +절개하다:동:4
  +절거리:명:1
  +절경:명:6
  +절구:명:1
  +절구질:명:1
  +절규:명:8
  +절규하다:동:5
  +절급되다:동:1
  +절기:명:8
  +절꺽절꺽:부:1
  +절다:동:4
  +절다:동:8
  +절단:명:1
  +절단:명:10
  +절단기:명:2
  +절단당하다:동:1
  +절단되다:동:2
  +절단선:명:1
  +절단하다:동:4
  +절대:명:46
  +절대:부:59
  +절대다수:명:5
  +절대로:부:87
  +절대성:명:6
  +절대시하다:동:1
  +절대액:명:1
  +절대적:관:22
  +절대적:명:63
  +절대정신:명:2
  +절대지:명:2
  +절대화되다:동:1
  +절대화하다:동:5
  +절도:명:10
  +절도:명:18
  +절도단:명:1
  +절도범:명:1
  +절도사:명:4
  +절도죄:명:1
  +절뚝거리다:동:2
  +절뚝발이:명:1
  +절뚝절뚝:부:2
  +절레절레:부:7
  +절로:부:25
  +절룩거리다:동:2
  +절름발이:명:7
  +절리:명:11
  +절리곡:명:1
  +절망:명:55
  +절망감:명:8
  +절망스럽다:형:2
  +절망적:관:1
  +절망적:명:21
  +절망하다:동:8
  +절멸하다:동:1
  +절묘하다:형:9
  +절박:명:1
  +절박감:명:2
  +절박성:명:2
  +절박하다:형:31
  +절반:명:90
  +절밥:명:1
  +절벽:명:15
  +절상:명:2
  +절세미인:명:1
  +절식:명:1
  +절식:명:4
  +절실:명:2
  +절실성:명:3
  +절실하다:형:47
  +절실히:부:11
  +절씨구:감:4
  +절약:명:21
  +절약되다:동:5
  +절약적:명:2
  +절약책:명:1
  +절약하다:동:26
  +절약형:명:3
  +절연하다:동:1
  +절음:명:1
  +절이다:동:4
  +절절하다:형:4
  +절정:명:24
  +절정기:명:1
  +절제:명:2
  +절제:명:7
  +절제감:명:1
  +절제되다:동:7
  +절제하다:동:5
  +절주:명:1
  +절지:의:1
  +절차:명:160
  +절차법:명:3
  +절차적:관:2
  +절차적:명:1
  +절창:명:1
  +절창하다:동:1
  +절충:명:1
  +절충:명:4
  +절충안:명:2
  +절충적:관:1
  +절충적:명:1
  +절충주의적:명:1
  +절충하다:동:4
  +절친하다:형:8
  +절터:명:4
  +절통하다:형:1
  +절편:명:3
  +절하:명:2
  +절하다:동:13
  +절하되다:동:1
  +절하하다:동:1
  +절해:명:1
  +젊다:형:401
  +젊어지다:동:6
  +젊은것:명:1
  +젊은네:명:1
  +젊은이:명:183
  +젊음:명:31
  +점:명:1
  +점:명:1,417
  +점:명:19
  +점:의:145
  +점거:명:5
  +점거하다:동:3
  +점검:명:35
  +점검당하다:동:1
  +점검되다:동:2
  +점검제:명:1
  +점검하다:동:44
  +점고:명:1
  +점괘:명:3
  +점내:명:1
  +점령:명:3
  +점령군:명:3
  +점령지:명:8
  +점령하다:동:11
  +점막:명:2
  +점멸하다:동:3
  +점박이천남성:명:1
  +점보:명:1
  +점사:명:1
  +점선:명:8
  +점성술:명:7
  +점소:명:1
  +점수:명:15
  +점수:명:56
  +점수제:명:1
  +점수화:명:1
  +점술:명:2
  +점심:명:96
  +점심때:명:17
  +점심밥:명:4
  +점심시간:명:29
  +점원:명:19
  +점유:명:3
  +점유율:명:47
  +점유지:명:2
  +점유하다:동:8
  +점이:명:1
  +점이적:관:1
  +점이하다:동:1
  +점입가경:명:2
  +점자:명:1
  +점잔:명:2
  +점잖다:형:31
  +점장:명:1
  +점쟁이:명:15
  +점점:부:200
  +점점이:부:2
  +점주:명:1
  +점증적:관:1
  +점증하다:동:2
  +점지하다:동:2
  +점진적:관:1
  +점진적:명:9
  +점찍다:동:3
  +점차:부:180
  +점차적:명:3
  +점철되다:동:2
  +점쳐지다:동:1
  +점치다:동:14
  +점토:명:1
  +점토판:명:1
  +점퍼:명:12
  +점포:명:25
  +점포망:명:1
  +점프:명:6
  +점프하다:동:1
  +점하다:동:9
  +점호:명:7
  +점화:명:1
  +점화되다:동:1
  +점화하다:동:1
  +접객:명:1
  +접객업:명:1
  +접객업소:명:1
  +접견:명:5
  +접견권:명:2
  +접견실:명:4
  +접견제:명:1
  +접견하다:동:4
  +접경:명:11
  +접골:명:1
  +접골사:명:1
  +접근:명:125
  +접근권:명:2
  +접근되다:동:2
  +접근로:명:1
  +접근법:명:2
  +접근시키다:동:5
  +접근하다:동:90
  +접다:동:55
  +접대:명:4
  +접대부:명:2
  +접대원:명:4
  +접대하다:동:1
  +접동새:명:1
  +접두어:명:1
  +접때:명:1
  +접례:명:1
  +접목:명:2
  +접목되다:동:3
  +접목시키다:동:4
  +접미사:명:1
  +접방살이:명:1
  +접변하다:동:1
  +접붙이다:동:1
  +접속:명:11
  +접속률:명:1
  +접속하다:동:4
  +접수:명:2
  +접수:명:21
  +접수국:명:1
  +접수되다:동:1
  +접수되다:동:6
  +접수시키다:동:3
  +접수일:명:1
  +접수창구:명:1
  +접수하다:동:10
  +접수하다:동:2
  +접시:명:46
  +접시돌리기:명:1
  +접신:명:1
  +접안:명:2
  +접안하다:동:8
  +접어들다:동:91
  +접영:명:3
  +접영초:명:1
  +접장:명:1
  +접적:명:1
  +접전:명:9
  +접전하다:동:1
  +접종:명:2
  +접종력:명:1
  +접종하다:동:2
  +접질리다:동:1
  +접착:명:1
  +접착식:명:1
  +접착제:명:9
  +접촉:명:85
  +접촉률:명:3
  +접촉면:명:1
  +접촉성:명:1
  +접촉시키다:동:1
  +접촉점:명:1
  +접촉제:명:1
  +접촉하다:동:35
  +접하다:동:67
  +접합:명:10
  +접합되다:동:10
  +접합시키다:동:1
  +접합점:명:2
  +접합하다:동:1
  +접혀지다:동:4
  +접히다:동:3
  +젓:명:1
  +젓가락:명:42
  +젓가락질:명:2
  +젓갈:명:5
  +젓국지:명:1
  +젓다:동:84
  +정:명:1
  +정:명:1
  +정:명:4
  +정:명:95
  +정:부:12
  +정:의:1
  +정:의:2
  +정가:명:6
  +정가:명:7
  +정가표:명:1
  +정각:명:1
  +정각:명:9
  +정간:명:1
  +정간물:명:1
  +정갈하다:형:10
  +정갈히:부:1
  +정감:명:11
  +정강:명:1
  +정강이:명:3
  +정강이뼈:명:3
  +정거장:명:16
  +정견:명:1
  +정견:명:1
  +정견:명:5
  +정결:명:1
  +정결하다:형:7
  +정겹다:형:14
  +정경:명:12
  +정경:명:20
  +정계:명:55
  +정곡:명:5
  +정공:명:1
  +정공법:명:1
  +정관:명:1
  +정관:명:2
  +정관:명:3
  +정관사:명:1
  +정교:명:1
  +정교사:명:7
  +정교하다:형:27
  +정교해지다:동:2
  +정교회:명:1
  +정구:명:2
  +정구장:명:1
  +정구품:명:1
  +정국:명:47
  +정궁:명:11
  +정권:명:205
  +정권기:명:1
  +정권론:명:6
  +정권설:명:4
  +정권적:관:1
  +정규:명:22
  +정규군:명:2
  +정규직:명:1
  +정규직화:명:1
  +정근:명:1
  +정글:명:7
  +정금나무:명:1
  +정기:명:58
  +정기:명:6
  +정기적:명:22
  +정기전:명:1
  +정나미:명:2
  +정낭:명:1
  +정년:명:24
  +정년퇴직:명:1
  +정년퇴직하다:동:1
  +정념:명:1
  +정념:명:1
  +정념적:관:1
  +정녕:부:13
  +정담:명:2
  +정답:명:21
  +정답다:형:23
  +정당:명:1
  +정당:명:161
  +정당방위:명:2
  +정당성:명:36
  +정당인:명:1
  +정당적:명:1
  +정당하다:형:59
  +정당화:명:3
  +정당화되다:동:6
  +정당화시키다:동:10
  +정당화하다:동:18
  +정도:명:1,619
  +정도:명:3
  +정도:명:6
  +정독:명:1
  +정독하다:동:2
  +정돈:명:6
  +정돈되다:동:19
  +정돈성:명:1
  +정돈하다:동:14
  +정들다:동:11
  +정들이다:동:1
  +정떨어지다:동:1
  +정략:명:4
  +정략적:관:1
  +정량:명:1
  +정량적:명:2
  +정력:명:3
  +정력적:명:4
  +정력제:명:1
  +정렬:명:2
  +정렬되다:동:1
  +정렬하다:동:4
  +정령:명:4
  +정례:명:2
  +정례화:명:1
  +정로:명:1
  +정론:명:4
  +정류장:명:30
  +정리:명:93
  +정리되다:동:28
  +정리하다:동:190
  +정리함:명:1
  +정립:명:1
  +정립:명:11
  +정립:명:11
  +정립되다:동:9
  +정립시키다:동:6
  +정립적:관:1
  +정립하다:동:16
  +정립하다:동:9
  +정말:감:35
  +정말:명:66
  +정말:부:553
  +정말로:부:89
  +정말정말:부:1
  +정맥:명:1
  +정면:명:72
  +정면성:명:3
  +정면충돌:명:3
  +정면충돌되다:동:1
  +정면충돌하다:동:2
  +정명:명:1
  +정묘:명:2
  +정무:명:42
  +정무직:명:2
  +정문:명:1
  +정문:명:45
  +정물:명:6
  +정물화:명:1
  +정미기:명:3
  +정미소:명:5
  +정미하다:동:1
  +정밀:명:30
  +정밀도:명:1
  +정밀성:명:2
  +정밀적:명:1
  +정밀하다:형:13
  +정밀히:부:1
  +정박:명:5
  +정박세:명:1
  +정박하다:동:6
  +정반대:명:26
  +정반대되다:동:1
  +정방형:명:1
  +정벌:명:6
  +정벌하다:동:6
  +정범:명:1
  +정법:명:4
  +정변:명:14
  +정보:명:460
  +정보:의:4
  +정보과장:명:1
  +정보국장:명:2
  +정보기관:명:20
  +정보량:명:3
  +정보망:명:7
  +정보부:명:1
  +정보부장:명:1
  +정보사:명:1
  +정보서:명:3
  +정보원:명:2
  +정보원:명:2
  +정보원망:명:1
  +정보은행:명:1
  +정보적:관:2
  +정보지:명:1
  +정보집:명:2
  +정보화:명:51
  +정복:명:2
  +정복:명:34
  +정복당하다:동:2
  +정복되다:동:3
  +정복민:명:2
  +정복자:명:1
  +정복적:명:1
  +정복지:명:1
  +정복하다:동:16
  +정부:명:1
  +정부:명:1
  +정부:명:1,249
  +정부:명:2
  +정부관:명:4
  +정부군:명:4
  +정부당:명:1
  +정부미:명:5
  +정부안:명:4
  +정부통령:명:1
  +정붙이다:동:1
  +정비:명:61
  +정비계:명:1
  +정비되다:동:9
  +정비사:명:3
  +정비소:명:2
  +정비업체:명:1
  +정비창:명:3
  +정비창장:명:1
  +정비하다:동:19
  +정사:명:1
  +정사:명:1
  +정사:명:1
  +정사:명:2
  +정사:명:3
  +정사각형:명:1
  +정산하다:동:1
  +정상:명:114
  +정상:명:38
  +정상:명:4
  +정상급:명:6
  +정상배:명:1
  +정상성:명:2
  +정상아:명:2
  +정상인:명:12
  +정상적:관:5
  +정상적:명:38
  +정상화:명:18
  +정상화되다:동:2
  +정상화시키다:동:1
  +정상화하다:동:3
  +정색:명:8
  +정색하다:동:2
  +정생하다:동:1
  +정서:명:116
  +정서적:관:16
  +정서적:명:8
  +정석:명:1
  +정석적:명:1
  +정설:명:13
  +정설화되다:동:1
  +정성:명:67
  +정성껏:부:9
  +정성되다:동:1
  +정성스럽다:형:13
  +정성스레:부:3
  +정세:명:2
  +정세:명:31
  +정수:명:1
  +정수:명:2
  +정수:명:4
  +정수리:명:6
  +정숙:명:2
  +정숙하다:형:1
  +정숙하다:형:1
  +정숙하다:형:6
  +정승:명:17
  +정시:명:6
  +정식:명:3
  +정식:명:82
  +정식화:명:1
  +정식화되다:동:1
  +정식화하다:동:1
  +정신:명:1
  +정신:명:10
  +정신:명:608
  +정신과:명:33
  +정신과장:명:1
  +정신과적:명:2
  +정신과학:명:1
  +정신권:명:1
  +정신노동:명:15
  +정신노동자:명:1
  +정신대:명:7
  +정신력:명:11
  +정신머리:명:1
  +정신문화:명:4
  +정신박약:명:2
  +정신박약아:명:5
  +정신병:명:11
  +정신병자:명:10
  +정신사:명:2
  +정신사적:명:1
  +정신생활:명:1
  +정신세계:명:4
  +정신없다:형:3
  +정신없이:부:30
  +정신적:관:91
  +정신적:명:95
  +정신주의적:관:1
  +정실:명:4
  +정안수:명:1
  +정액:명:4
  +정액제:명:1
  +정어:명:1
  +정업:명:1
  +정역:명:3
  +정연하다:형:6
  +정연하다:형:7
  +정열:명:41
  +정열적:관:1
  +정열적:명:7
  +정예:명:5
  +정오:명:21
  +정외과:명:2
  +정욕:명:1
  +정원:명:27
  +정원:명:35
  +정원령:명:1
  +정원수:명:3
  +정월:명:13
  +정유:명:2
  +정유업체:명:1
  +정유재란:명:1
  +정육론:명:1
  +정육점:명:3
  +정의:명:1
  +정의:명:29
  +정의:명:39
  +정의감:명:8
  +정의되다:동:11
  +정의롭다:형:14
  +정의하다:동:25
  +정이품:명:1
  +정일:명:1
  +정일품:명:1
  +정자:명:10
  +정자:명:7
  +정자나무:명:1
  +정작:명:90
  +정장:명:20
  +정장식:명:1
  +정장하다:동:4
  +정재:명:3
  +정쟁:명:2
  +정쟁화시키다:동:1
  +정적:관:1
  +정적:관:9
  +정적:명:1
  +정적:명:12
  +정적:명:3
  +정적:명:9
  +정전:명:14
  +정전:명:32
  +정전:명:6
  +정전:명:8
  +정전기:명:1
  +정전기적:관:2
  +정전되다:동:1
  +정전제:명:2
  +정절:명:14
  +정절관:명:1
  +정점:명:18
  +정정:명:1
  +정정:명:4
  +정정당당하다:형:1
  +정정당당히:부:2
  +정정진:명:1
  +정정하다:동:5
  +정정하다:형:6
  +정제:명:1
  +정제:명:1
  +정제되다:동:2
  +정제되다:동:2
  +정제물:명:1
  +정제성:명:1
  +정제하다:동:1
  +정제하다:동:3
  +정조:명:1
  +정조:명:15
  +정조:명:3
  +정종:명:15
  +정좌하다:동:1
  +정주하다:동:5
  +정중동:명:1
  +정중선:명:2
  +정중하다:형:18
  +정중히:부:11
  +정지:명:1
  +정지:명:2
  +정지:명:32
  +정지:명:9
  +정지되다:동:17
  +정지시키다:동:14
  +정지하다:동:14
  +정지하다:동:7
  +정직:명:1
  +정직:명:3
  +정직성:명:4
  +정직하다:형:30
  +정진:명:4
  +정진력:명:1
  +정진하다:동:11
  +정짜:명:1
  +정차:명:4
  +정차하다:동:5
  +정착:명:23
  +정착되다:동:25
  +정착시키다:동:17
  +정착촌:명:2
  +정착하다:동:20
  +정착화:명:1
  +정찰:명:2
  +정찰기:명:1
  +정책:명:541
  +정책국:명:2
  +정책부장:명:1
  +정책실:명:1
  +정책실장:명:3
  +정책적:관:7
  +정책적:명:3
  +정책화:명:1
  +정처:명:7
  +정체:명:2
  +정체:명:23
  +정체:명:9
  +정체감:명:5
  +정체기:명:1
  +정체되다:동:5
  +정체불명:명:2
  +정체성:명:17
  +정체성론:명:3
  +정체시키다:동:1
  +정체하다:동:1
  +정초:명:12
  +정총:명:1
  +정취:명:9
  +정치:명:830
  +정치가:명:21
  +정치계:명:2
  +정치관:명:2
  +정치국:명:5
  +정치국원:명:2
  +정치군인:명:2
  +정치권:명:84
  +정치권력:명:16
  +정치극:명:3
  +정치꾼:명:2
  +정치력:명:15
  +정치범:명:5
  +정치부:명:5
  +정치부장:명:2
  +정치사:명:12
  +정치사가:명:1
  +정치사상:명:3
  +정치사적:관:1
  +정치성:명:7
  +정치의식:명:3
  +정치인:명:74
  +정치적:관:281
  +정치적:명:74
  +정치체:명:1
  +정치판:명:8
  +정치하다:동:3
  +정치하다:형:1
  +정치학:명:43
  +정치학과:명:3
  +정치학도:명:1
  +정치학자:명:2
  +정치학적:관:1
  +정치화:명:1
  +정태적:관:1
  +정태적:명:4
  +정토:명:12
  +정통:명:1
  +정통:명:23
  +정통극:명:1
  +정통성:명:16
  +정통적:명:1
  +정통파:명:2
  +정통하다:동:6
  +정파:명:15
  +정평:명:7
  +정포:명:2
  +정풍:명:1
  +정하다:동:275
  +정하다:형:1
  +정하다:형:2
  +정하다:형:3
  +정학:명:8
  +정학받다:동:1
  +정합성:명:5
  +정해지다:동:71
  +정향:명:1
  +정형:명:1
  +정형:명:3
  +정형외과:명:4
  +정형적:관:2
  +정형적:명:1
  +정형화되다:동:4
  +정형화하다:동:1
  +정혜:명:4
  +정혜쌍수:명:7
  +정호:명:3
  +정호층:명:20
  +정혼:명:1
  +정화:명:1
  +정화:명:20
  +정화되다:동:2
  +정화제:명:1
  +정화조:명:3
  +정화하다:동:14
  +정확도:명:8
  +정확성:명:13
  +정확하다:형:220
  +정확히:부:96
  +정황:명:12
  +정회원:명:5
  +정회원국:명:1
  +정훈:명:2
  +정히:부:1
  +젖:명:34
  +젖가슴:명:8
  +젖꼭지:명:4
  +젖다:동:156
  +젖뜨리다:동:1
  +젖먹이:명:10
  +젖무덤:명:1
  +젖병:명:1
  +젖빛:명:2
  +젖산:명:1
  +젖살:명:1
  +젖소:명:14
  +젖줄:명:1
  +젖통:명:1
  +젖혀지다:동:1
  +젖히다:동:46
  +제:관:30
  +제:대:3
  +제:명:1
  +제:명:2
  +제:명:2
  +제:불:5
  +제가:명:1
  +제가회의:명:1
  +제각각:명:2
  +제각각:부:2
  +제각기:부:26
  +제간회의:명:1
  +제감:명:1
  +제감층:명:2
  +제값:명:2
  +제강:명:1
  +제강소:명:1
  +제강소장:명:1
  +제거:명:27
  +제거되다:동:10
  +제거시키다:동:1
  +제거제:명:1
  +제거하다:동:75
  +제겨디디다:동:2
  +제격:명:5
  +제고:명:24
  +제고되다:동:3
  +제고시키다:동:6
  +제고하다:동:6
  +제곱:명:4
  +제곱미터:의:11
  +제곱센티미터:의:5
  +제곱킬로미터:의:6
  +제공:명:46
  +제공권:명:1
  +제공되다:동:15
  +제공받다:동:3
  +제공업자:명:1
  +제공자:명:2
  +제공하다:동:159
  +제과:명:2
  +제과용품:명:1
  +제과점:명:2
  +제관:명:2
  +제구실:명:11
  +제국:명:24
  +제국:명:4
  +제국군:명:1
  +제국주의:명:44
  +제국주의론:명:11
  +제국주의자:명:2
  +제국주의적:관:6
  +제국주의적:명:3
  +제국주의화하다:동:1
  +제기:명:2
  +제기:명:24
  +제기되다:동:97
  +제기랄:감:7
  +제기차기:명:2
  +제기하다:동:104
  +제길:감:2
  +제까닥:부:1
  +제까짓:관:3
  +제꺽:부:1
  +제끼다:동:4
  +제날:명:1
  +제날짜:명:2
  +제단:명:4
  +제당:명:2
  +제대:명:3
  +제대:명:8
  +제대로:부:350
  +제대하다:동:21
  +제도:명:1
  +제도:명:527
  +제도:명:8
  +제도권:명:9
  +제도적:관:33
  +제도적:명:33
  +제도판:명:1
  +제도하다:동:2
  +제도화:명:3
  +제도화되다:동:5
  +제도화하다:동:4
  +제독:명:1
  +제동:명:12
  +제때:명:12
  +제때제때:명:2
  +제라늄:명:1
  +제력:명:1
  +제련:명:2
  +제련술:명:1
  +제련하다:동:1
  +제례악:명:2
  +제로:명:6
  +제로섬:명:1
  +제막식:명:3
  +제멋:명:2
  +제멋대로:부:22
  +제명:명:2
  +제명되다:동:1
  +제목:명:150
  +제목체:명:4
  +제문:명:2
  +제물:명:1
  +제물:명:5
  +제물론:명:1
  +제미:감:1
  +제민:명:1
  +제밀할:관:2
  +제반:명:18
  +제발:부:57
  +제방:명:10
  +제법:부:65
  +제법무아:명:2
  +제보:명:7
  +제보받다:동:1
  +제보자:명:4
  +제보철:명:2
  +제보하다:동:2
  +제복:명:1
  +제복:명:26
  +제본:명:1
  +제분:명:1
  +제비:명:49
  +제비꽃:명:2
  +제비붓꽃:명:1
  +제비뽑기:명:1
  +제비쑥:명:2
  +제비족:명:1
  +제빵:명:1
  +제사:명:114
  +제사권:명:7
  +제사드리다:동:1
  +제사명:명:2
  +제사상:명:7
  +제사장:명:9
  +제사장적:관:1
  +제사하다:동:4
  +제삼:관:1
  +제삼:명:1
  +제삼국:명:6
  +제삼국산:명:2
  +제삼자:명:15
  +제삿날:명:19
  +제삿밥:명:1
  +제상:명:7
  +제석:명:2
  +제선:명:1
  +제설:명:3
  +제소:명:11
  +제소하다:동:4
  +제솔회의:명:1
  +제수:명:2
  +제수용품:명:3
  +제스처:명:9
  +제스처적:명:1
  +제시:명:39
  +제시간:명:4
  +제시되다:동:55
  +제시받다:동:2
  +제시하다:동:242
  +제식:명:1
  +제식:명:4
  +제신:명:1
  +제실:명:1
  +제아무리:부:5
  +제악:명:1
  +제안:명:49
  +제안권:명:1
  +제안되다:동:1
  +제안서:명:3
  +제안자:명:1
  +제안하다:동:49
  +제압:명:3
  +제압하다:동:8
  +제약:명:6
  +제약:명:67
  +제약되다:동:5
  +제약받다:동:3
  +제약사:명:1
  +제약성:명:1
  +제약하다:동:17
  +제어:명:13
  +제어되다:동:1
  +제어식:명:1
  +제어하다:동:7
  +제언하다:동:1
  +제왕:명:13
  +제왕:명:2
  +제왕:명:5
  +제외:명:13
  +제외당하다:동:1
  +제외되다:동:39
  +제외시키다:동:9
  +제외하다:동:156
  +제원:명:1
  +제위:대:1
  +제육:명:3
  +제의:명:1
  +제의:명:47
  +제의:명:58
  +제의명:명:2
  +제의서:명:6
  +제의성:명:1
  +제의적:관:4
  +제의하다:동:32
  +제이:명:2
  +제일:명:2
  +제일:명:295
  +제일가다:동:5
  +제일선:명:1
  +제일성:명:1
  +제일성:명:5
  +제일의:명:1
  +제일주의:명:6
  +제일주의론:명:1
  +제일주의자:명:1
  +제일하다:형:1
  +제자:명:108
  +제자리:명:47
  +제자리걸음:명:7
  +제자백가:명:3
  +제작:명:98
  +제작국:명:1
  +제작권:명:1
  +제작되다:동:29
  +제작물:명:2
  +제작비:명:9
  +제작사:명:6
  +제작소:명:2
  +제작술:명:1
  +제작실:명:1
  +제작업체:명:2
  +제작자:명:15
  +제작진:명:19
  +제작하다:동:63
  +제장:명:2
  +제재:명:2
  +제재:명:49
  +제재:명:6
  +제재성:명:1
  +제재소:명:1
  +제재안:명:1
  +제재하다:동:2
  +제적:명:8
  +제적당하다:동:1
  +제적되다:동:8
  +제적생:명:3
  +제전:명:12
  +제전경기:명:4
  +제정:명:1
  +제정:명:2
  +제정:명:34
  +제정되다:동:23
  +제정신:명:9
  +제정안:명:1
  +제정일치:명:1
  +제정하다:동:31
  +제제:명:1
  +제제:명:7
  +제조:명:53
  +제조기:명:4
  +제조되다:동:6
  +제조법:명:4
  +제조비:명:1
  +제조업:명:40
  +제조업계:명:1
  +제조업자:명:2
  +제조업체:명:16
  +제조일:명:1
  +제조자:명:1
  +제조창:명:1
  +제조창화하다:동:1
  +제조하다:동:7
  +제주:명:1
  +제주휘파람새:명:1
  +제지:명:3
  +제지:명:6
  +제지업체:명:1
  +제지하다:동:4
  +제직:명:5
  +제집:명:2
  +제창되다:동:3
  +제창하다:동:5
  +제천:명:27
  +제천하다:동:1
  +제철:명:5
  +제철:명:8
  +제철소:명:1
  +제철하다:동:1
  +제청:명:1
  +제청:명:4
  +제청하다:동:2
  +제초제:명:2
  +제출:명:23
  +제출되다:동:5
  +제출받다:동:3
  +제출자:명:1
  +제출하다:동:70
  +제치다:동:34
  +제트기:명:2
  +제패:명:2
  +제패하다:동:1
  +제표:명:1
  +제풀에:부:7
  +제품:명:411
  +제품군:명:6
  +제품력:명:5
  +제품명:명:2
  +제품점:명:2
  +제품화하다:동:1
  +제하:명:1
  +제하다:동:6
  +제한:명:98
  +제한당하다:동:1
  +제한되다:동:56
  +제한받다:동:1
  +제한성:명:1
  +제한적:관:3
  +제한적:명:9
  +제한점:명:1
  +제한하다:동:59
  +제행무상:명:3
  +제헌:명:2
  +제헌절:명:1
  +제현:명:1
  +제호:명:1
  +제호탕:명:1
  +제후:명:10
  +제후국:명:1
  +제휴:명:13
  +제휴하다:동:3
  +제힘:명:2
  +젠장:감:4
  +젠장칠:관:1
  +젠틀맨:명:1
  +젤:명:17
  +젤루다:부:1
  +젤리:명:6
  +젬병:명:1
  +젯밥:명:1
  +조:관:1
  +조:명:1
  +조:명:26
  +조:명:3
  +조:명:8
  +조:수:1
  +조:의:131
  +조:의:28
  +조:의:8
  +조가비:명:1
  +조각:명:2
  +조각:명:68
  +조각:명:72
  +조각가:명:16
  +조각구름:명:1
  +조각나다:동:3
  +조각내다:동:1
  +조각달:명:3
  +조각돌:명:1
  +조각되다:동:2
  +조각배:명:2
  +조각보:명:1
  +조각상:명:10
  +조각전:명:2
  +조각조각:부:3
  +조각칼:명:4
  +조각품:명:2
  +조각하다:동:3
  +조간:명:4
  +조간신문:명:11
  +조간화:명:1
  +조감독:명:2
  +조강지처:명:1
  +조개:명:31
  +조개껍데기:명:6
  +조개껍질:명:5
  +조개류:명:6
  +조객:명:1
  +조갯살:명:11
  +조건:명:439
  +조건부:명:5
  +조건적:명:2
  +조건화하다:동:1
  +조것:대:1
  +조견:명:1
  +조계종:명:12
  +조공:명:1
  +조관:명:1
  +조교:명:4
  +조교수:명:7
  +조국:명:26
  +조그마하다:형:36
  +조그맣다:형:93
  +조근성:명:3
  +조금:명:328
  +조금:부:294
  +조금씩:부:130
  +조급성:명:10
  +조급증:명:2
  +조급하다:형:10
  +조급해지다:동:2
  +조급해하다:동:3
  +조급히:부:3
  +조기:대:1
  +조기:명:10
  +조기:명:35
  +조기:명:4
  +조기장:명:1
  +조깅:명:24
  +조깅하다:동:1
  +조끔:부:1
  +조끼:명:9
  +조난당하다:동:1
  +조난자:명:3
  +조달:명:28
  +조달되다:동:2
  +조달망:명:1
  +조달책:명:1
  +조달하다:동:23
  +조랑말:명:1
  +조렇다:형:2
  +조력:명:3
  +조력:명:6
  +조력권:명:1
  +조령모개:명:1
  +조례:명:2
  +조록싸리:명:2
  +조롱:명:3
  +조롱꾼:명:2
  +조롱박:명:2
  +조롱받다:동:1
  +조롱하다:동:6
  +조롷다:형:1
  +조루:명:1
  +조루증:명:1
  +조류:명:11
  +조류:명:13
  +조류:명:2
  +조르다:동:34
  +조르다:동:4
  +조르르:부:1
  +조리:명:18
  +조리:명:3
  +조리:명:6
  +조리:부:1
  +조리기:명:5
  +조리다:동:6
  +조리대:명:1
  +조리되다:동:2
  +조리법:명:2
  +조리사:명:3
  +조리용:명:1
  +조리용품:명:1
  +조리하다:동:11
  +조림:명:4
  +조림:명:8
  +조립:명:19
  +조립도:명:1
  +조립되다:동:3
  +조립식:명:2
  +조립질:명:1
  +조립품:명:1
  +조립하다:동:17
  +조마조마하다:형:7
  +조만간:부:22
  +조망:명:3
  +조망하다:동:2
  +조명:명:1
  +조명:명:32
  +조명되다:동:2
  +조명등:명:2
  +조명받다:동:1
  +조명하다:동:19
  +조목조목:명:10
  +조몰락거리다:동:1
  +조몰락조몰락:부:5
  +조무래기:명:2
  +조문:명:4
  +조문:명:8
  +조문객:명:2
  +조물주:명:5
  +조미:명:1
  +조미:명:2
  +조미료:명:130
  +조밀하다:형:2
  +조바심:명:8
  +조바심치다:동:1
  +조발:명:1
  +조밥:명:1
  +조방제:명:2
  +조밭:명:1
  +조변석개:명:1
  +조별:명:10
  +조복:명:2
  +조부:명:1
  +조부모:명:2
  +조붓하다:형:1
  +조사:명:1
  +조사:명:1
  +조사:명:18
  +조사:명:2
  +조사:명:580
  +조사계:명:1
  +조사권:명:5
  +조사단:명:25
  +조사단장:명:1
  +조사되다:동:28
  +조사반:명:2
  +조사받다:동:5
  +조사부:명:1
  +조사부장:명:1
  +조사원:명:2
  +조사자:명:3
  +조사표:명:1
  +조사하다:동:254
  +조산:명:3
  +조산:명:5
  +조산통:명:2
  +조삼모사식:명:1
  +조상:명:144
  +조상:명:3
  +조상님:명:1
  +조상신:명:3
  +조서:명:19
  +조석:명:5
  +조석간제:명:1
  +조선:명:1
  +조선:명:1
  +조선:명:14
  +조선글:명:1
  +조선량:명:1
  +조선말:명:3
  +조선소:명:9
  +조선어:명:13
  +조선업:명:2
  +조선업계:명:2
  +조선조:명:18
  +조성:명:2
  +조성:명:45
  +조성되다:동:28
  +조성설:명:1
  +조성하다:동:1
  +조성하다:동:1
  +조성하다:동:41
  +조세:명:26
  +조소:명:2
  +조소:명:5
  +조소성:명:1
  +조속하다:형:9
  +조속히:부:9
  +조수:명:1
  +조수:명:4
  +조수:명:7
  +조수석:명:4
  +조수익:명:1
  +조숙:명:1
  +조숙하다:형:4
  +조숙형:명:1
  +조식:명:1
  +조식:의:1
  +조신:명:2
  +조신하다:형:4
  +조심:명:11
  +조심성:명:3
  +조심스러워지다:동:1
  +조심스러워하다:동:1
  +조심스럽다:형:70
  +조심스레:부:15
  +조심조심:부:9
  +조심조심하다:동:1
  +조심하다:동:80
  +조쌀하다:형:1
  +조아리다:동:6
  +조악하다:형:5
  +조야:명:2
  +조약:명:37
  +조약돌:명:15
  +조어:명:3
  +조언:명:15
  +조언자:명:1
  +조언하다:동:6
  +조업:명:1
  +조업:명:13
  +조역:명:1
  +조연:명:6
  +조연상:명:1
  +조연출자:명:2
  +조영:명:1
  +조예:명:2
  +조왕신:명:3
  +조용:명:1
  +조용조:명:1
  +조용조용:부:2
  +조용하다:형:82
  +조용해지다:동:11
  +조용히:부:107
  +조우하다:동:2
  +조울증:명:1
  +조원:명:2
  +조율:명:1
  +조율:명:11
  +조율되다:동:1
  +조응:명:3
  +조응하다:동:5
  +조의금:명:1
  +조이:명:2
  +조이다:동:21
  +조인:명:3
  +조인트:명:1
  +조인하다:동:1
  +조작:명:20
  +조작:명:33
  +조작극:명:1
  +조작되다:동:7
  +조작설:명:1
  +조작시키다:동:1
  +조작적:명:1
  +조작하다:동:13
  +조작하다:동:9
  +조잘조잘:부:1
  +조잡스럽다:형:1
  +조잡하다:형:3
  +조잡하다:형:5
  +조장:명:2
  +조장:명:4
  +조장되다:동:2
  +조장시키다:동:2
  +조장자:명:1
  +조장하다:동:31
  +조절:명:33
  +조절기:명:2
  +조절되다:동:2
  +조절하다:동:52
  +조정:명:17
  +조정:명:29
  +조정:명:5
  +조정:명:52
  +조정관:명:1
  +조정기:명:1
  +조정되다:동:11
  +조정력:명:1
  +조정받다:동:1
  +조정법:명:1
  +조정실:명:2
  +조정실장:명:5
  +조정하다:동:30
  +조정하다:동:7
  +조제하다:동:3
  +조종:명:8
  +조종간:명:1
  +조종대:명:1
  +조종되다:동:2
  +조종사:명:11
  +조종술:명:1
  +조종자:명:1
  +조종하다:동:12
  +조종형:명:3
  +조준하다:동:3
  +조지다:동:1
  +조지다:동:2
  +조직:명:320
  +조직단:명:1
  +조직되다:동:9
  +조직력:명:2
  +조직론:명:1
  +조직원:명:5
  +조직적:관:5
  +조직적:명:24
  +조직책:명:3
  +조직체:명:2
  +조직하다:동:21
  +조직화:명:14
  +조직화되다:동:9
  +조직화하다:동:10
  +조짐:명:44
  +조차:명:1
  +조차지:명:1
  +조찬:명:21
  +조처:명:92
  +조처되다:동:1
  +조처안:명:1
  +조처하다:동:6
  +조청:명:2
  +조촐하다:형:6
  +조촐히:부:1
  +조치:명:212
  +조치되다:동:3
  +조치하다:동:10
  +조칙:명:1
  +조카:명:39
  +조카딸:명:1
  +조카며느리:명:1
  +조카사위:명:1
  +조타수:명:1
  +조퇴:명:1
  +조퇴하다:동:1
  +조폐:명:2
  +조하금:명:1
  +조하주:명:1
  +조합:명:86
  +조합물:명:1
  +조합비:명:1
  +조합시키다:동:2
  +조합원:명:19
  +조합장:명:13
  +조합주의:명:1
  +조합하다:동:4
  +조합형:명:17
  +조합형주의자:명:2
  +조항:명:61
  +조형:명:8
  +조형관:명:1
  +조형되다:동:1
  +조형물:명:5
  +조형미:명:6
  +조형성:명:6
  +조형적:관:4
  +조형적:명:5
  +조화:명:115
  +조화:명:14
  +조화되다:동:32
  +조화롭다:형:13
  +조화미:명:1
  +조화성:명:1
  +조화시키다:동:16
  +조화하다:동:4
  +조회:명:10
  +조회:명:12
  +조회란:명:1
  +조회하다:동:6
  +족:명:4
  +족단:명:2
  +족단적:관:1
  +족단적:명:1
  +족두리:명:1
  +족두리:명:2
  +족두리풀:명:1
  +족벌:명:5
  +족보:명:18
  +족부:명:1
  +족속:명:3
  +족쇄:명:4
  +족외혼:명:1
  +족자:명:1
  +족장:명:4
  +족장적:명:1
  +족적:관:1
  +족적:명:2
  +족정:명:2
  +족정제:명:1
  +족제비:명:2
  +족족:의:3
  +족집게:명:2
  +족출하다:동:1
  +족치다:동:2
  +족탕:명:1
  +족하다:형:11
  +족히:부:11
  +존:명:7
  +존경:명:14
  +존경받다:동:11
  +존경스럽다:형:5
  +존경심:명:4
  +존경하다:동:35
  +존귀하다:형:2
  +존대어:명:1
  +존댓말:명:16
  +존립:명:8
  +존립하다:동:3
  +존망:명:2
  +존부:명:1
  +존부론:명:1
  +존속:명:1
  +존속:명:13
  +존속시키다:동:4
  +존속하다:동:10
  +존엄:명:8
  +존엄성:명:13
  +존엄하다:형:1
  +존영:명:3
  +존재:명:414
  +존재감:명:2
  +존재론자:명:1
  +존재론적:관:7
  +존재론적:명:3
  +존재설:명:1
  +존재자:명:1
  +존재하다:동:276
  +존중:명:17
  +존중되다:동:5
  +존중론:명:1
  +존중받다:동:1
  +존중심:명:2
  +존중하다:동:59
  +존치하다:동:1
  +존칭:명:2
  +존폐:명:2
  +존호:명:1
  +존화:명:1
  +졸:명:2
  +졸고:명:2
  +졸깃거리다:동:1
  +졸다:동:21
  +졸도하다:동:1
  +졸라:부:2
  +졸라매다:동:5
  +졸리다:동:1
  +졸리다:동:15
  +졸리우다:동:1
  +졸방제비꽃:명:2
  +졸병:명:1
  +졸부:명:4
  +졸속:명:3
  +졸아들다:동:1
  +졸업:명:74
  +졸업반:명:4
  +졸업생:명:28
  +졸업시키다:동:1
  +졸업식:명:3
  +졸업식장:명:2
  +졸업자:명:3
  +졸업장:명:7
  +졸업하다:동:102
  +졸업화:명:1
  +졸음:명:15
  +졸이다:동:9
  +졸작:명:2
  +졸저:명:1
  +졸졸:부:5
  +졸지:명:15
  +졸참나무:명:1
  +좀:명:5
  +좀:부:1,555
  +좀도둑:명:1
  +좀먹다:동:5
  +좀스럽다:형:2
  +좀작살나무:명:4
  +좀처럼:부:41
  +좀체:부:6
  +좀팽이:명:1
  +좁다:형:128
  +좁다랗다:형:2
  +좁쌀:명:4
  +좁아지다:동:9
  +좁아터지다:동:1
  +좁혀지다:동:16
  +좁히다:동:20
  +종:명:1
  +종:명:123
  +종:명:26
  +종:명:35
  +종가:명:2
  +종가:명:2
  +종각:명:2
  +종강:명:7
  +종강하다:동:3
  +종개념:명:21
  +종개념적:명:1
  +종결:명:10
  +종결되다:동:8
  +종결시키다:동:1
  +종결짓다:동:1
  +종결하다:동:3
  +종괴:명:1
  +종교:명:244
  +종교가:명:5
  +종교계:명:13
  +종교관:명:4
  +종교극:명:1
  +종교사적:명:1
  +종교설:명:1
  +종교인:명:5
  +종교적:관:35
  +종교적:명:22
  +종교학:명:2
  +종교학과:명:1
  +종교학자:명:1
  +종국:명:6
  +종국적:명:2
  +종군:명:12
  +종궁:명:1
  +종권:명:1
  +종기:명:5
  +종내:부:3
  +종년:명:4
  +종노릇:명:1
  +종노릇하다:동:1
  +종놈:명:2
  +종다리:명:5
  +종단:명:1
  +종달새:명:6
  +종대:명:1
  +종란:명:2
  +종래:명:41
  +종래:부:26
  +종량세:명:1
  +종려나무:명:4
  +종례:명:1
  +종료:명:10
  +종료되다:동:1
  +종료하다:동:1
  +종루:명:7
  +종류:명:229
  +종류별:명:3
  +종막:명:1
  +종말:명:30
  +종말론:명:2
  +종목:명:68
  +종목별:명:1
  +종무소식:명:2
  +종무식:명:1
  +종민:명:1
  +종반:명:7
  +종별:명:2
  +종보:명:2
  +종사:명:1
  +종사관:명:1
  +종사원:명:2
  +종사자:명:18
  +종사하다:동:40
  +종살이:명:6
  +종살이하다:동:1
  +종성:명:10
  +종소리:명:35
  +종속:명:35
  +종속되다:동:10
  +종속론:명:1
  +종속물:명:1
  +종속성:명:2
  +종속시키다:동:3
  +종속적:관:6
  +종속적:명:2
  +종속하다:동:3
  +종식:명:13
  +종식되다:동:2
  +종식시키다:동:4
  +종신:명:2
  +종신직:명:1
  +종신형:명:2
  +종아리:명:14
  +종알거리다:동:7
  +종알종알:부:1
  +종양:명:9
  +종언:명:5
  +종업식:명:2
  +종업원:명:86
  +종영:명:1
  +종영되다:동:8
  +종용받다:동:1
  +종용하다:동:11
  +종이:명:161
  +종이꽃:명:1
  +종이돈:명:3
  +종이배:명:2
  +종이우산:명:2
  +종이쪽:명:2
  +종이쪽지:명:6
  +종이컵:명:15
  +종이테이프:명:2
  +종이학:명:1
  +종이호랑이:명:1
  +종일:명:58
  +종일품:명:1
  +종잇장:명:1
  +종잇조각:명:1
  +종자:명:1
  +종자:명:24
  +종잡다:동:8
  +종장:명:1
  +종적:관:1
  +종적:명:1
  +종적:명:2
  +종전:명:18
  +종전:명:2
  +종점:명:12
  +종조:명:2
  +종조부:명:1
  +종족:명:19
  +종족적:관:1
  +종종:부:51
  +종종걸음:명:14
  +종종대다:동:2
  +종종지:명:1
  +종주국:명:7
  +종주먹:명:4
  +종지:명:1
  +종지:명:3
  +종지기:명:1
  +종지부:명:8
  +종지뼈:명:1
  +종질:명:2
  +종착역:명:7
  +종착점:명:1
  +종칠품:명:1
  +종토세:명:2
  +종파:명:37
  +종파주의:명:1
  +종합:명:182
  +종합되다:동:1
  +종합적:관:2
  +종합적:명:27
  +종합지:명:2
  +종합하다:동:37
  +종합화하다:동:2
  +종회:명:1
  +종횡:명:1
  +종횡무진:명:6
  +종횡적:관:1
  +좆:명:5
  +좆같다:형:4
  +좆같이:부:2
  +좆나:부:3
  +좆나리:부:1
  +좇다:동:20
  +좇아가다:동:2
  +좋다:형:2,661
  +좋아:감:20
  +좋아지다:동:58
  +좋아하다:동:458
  +좋이:부:1
  +좌:명:8
  +좌경:명:5
  +좌경화:명:1
  +좌기:명:1
  +좌담:명:4
  +좌담회:명:1
  +좌대:명:1
  +좌르르:부:1
  +좌보:명:1
  +좌불안석:명:2
  +좌불안석하다:동:1
  +좌상:명:2
  +좌석:명:43
  +좌선:명:1
  +좌선:명:3
  +좌선룡:명:2
  +좌시하다:동:1
  +좌식:명:5
  +좌우:명:77
  +좌우간:명:3
  +좌우되다:동:20
  +좌우익:명:4
  +좌우지간:명:5
  +좌우하다:동:27
  +좌익:명:31
  +좌절:명:42
  +좌절감:명:14
  +좌절되다:동:11
  +좌절시키다:동:2
  +좌절하다:동:12
  +좌정되다:동:1
  +좌정하다:동:1
  +좌중:명:9
  +좌중월:명:1
  +좌지우지되다:동:2
  +좌지우지하다:동:3
  +좌찬성:명:1
  +좌천시키다:동:1
  +좌청룡:명:8
  +좌초:명:3
  +좌초되다:동:1
  +좌초하다:동:1
  +좌충우돌:명:1
  +좌충우돌하다:동:1
  +좌측:명:9
  +좌측통행:명:1
  +좌파:명:11
  +좌파적:관:1
  +좌판:명:6
  +좌편:명:4
  +좌평:명:1
  +좌표:명:7
  +좌표계:명:8
  +좌향:명:3
  +좍:부:3
  +죄:명:124
  +죄:부:8
  +죄과:명:4
  +죄다:동:11
  +죄다:부:10
  +죄명:명:2
  +죄목:명:6
  +죄송스럽다:형:5
  +죄송하다:형:78
  +죄수:명:16
  +죄수복:명:3
  +죄스럽다:형:5
  +죄악:명:13
  +죄악상:명:1
  +죄악시하다:동:2
  +죄어들다:동:2
  +죄의식:명:10
  +죄인:명:50
  +죄질:명:2
  +죄짓다:동:10
  +죄책감:명:5
  +죄형:명:5
  +죔죔:명:1
  +주:관:77
  +주:명:1
  +주:명:100
  +주:명:117
  +주:명:16
  +주:명:3
  +주:명:5
  +주:명:56
  +주:명:7
  +주:명:7
  +주:의:2
  +주:의:83
  +주가:명:115
  +주간:명:12
  +주간:명:2
  +주간:명:4
  +주간:명:6
  +주간:의:4
  +주간지:명:4
  +주간지:명:9
  +주객:명:1
  +주객:명:4
  +주거:명:33
  +주거비:명:1
  +주거지:명:5
  +주걱:명:7
  +주걱턱:명:1
  +주검:명:6
  +주견:명:1
  +주견:명:1
  +주고받다:동:79
  +주곡:명:4
  +주관:명:10
  +주관:명:10
  +주관성:명:1
  +주관식:명:7
  +주관자:명:2
  +주관적:관:29
  +주관적:명:22
  +주관주의:명:3
  +주관하다:동:22
  +주관화하다:동:1
  +주교:명:11
  +주구:명:1
  +주군제:명:2
  +주권:명:32
  +주권자:명:5
  +주근깨:명:5
  +주근깨투성이:명:1
  +주근주근:부:2
  +주급:명:1
  +주기:명:31
  +주기:의:3
  +주기성:명:2
  +주기적:관:4
  +주기적:명:6
  +주낙:명:1
  +주년:의:42
  +주누선:명:1
  +주눅:명:11
  +주니어:명:13
  +주님:명:1
  +주다:동:1,489
  +주다:보:4,929
  +주당:명:1
  +주도:명:1
  +주도:명:43
  +주도국:명:1
  +주도권:명:25
  +주도되다:동:4
  +주도력:명:1
  +주도면밀하다:형:2
  +주도면밀히:부:1
  +주도성:명:1
  +주도적:관:9
  +주도적:명:4
  +주도하다:동:71
  +주도형:명:4
  +주동:명:4
  +주동력:명:1
  +주동자:명:3
  +주동적:명:1
  +주동하다:동:3
  +주되다:동:41
  +주둔:명:17
  +주둔국:명:1
  +주둔군:명:4
  +주둔시키다:동:4
  +주둔하다:동:12
  +주둥아리:명:1
  +주둥이:명:10
  +주등:명:1
  +주란:명:1
  +주량:명:9
  +주렁주렁:부:7
  +주력:명:1
  +주력:명:43
  +주력하다:동:34
  +주련:명:1
  +주례:명:12
  +주례:명:2
  +주로:부:341
  +주루:명:1
  +주룩:부:1
  +주룩주룩:부:4
  +주류:명:32
  +주류:명:4
  +주르르:부:4
  +주르륵:부:2
  +주름:명:30
  +주름살:명:19
  +주름살투성이:명:2
  +주름선:명:2
  +주름잡다:동:8
  +주름치마:명:3
  +주리:명:3
  +주리다:동:5
  +주마등:명:1
  +주막:명:19
  +주막거리:명:1
  +주막집:명:2
  +주말:명:114
  +주말여행:명:2
  +주맥:명:1
  +주머니:명:92
  +주머니종:명:2
  +주머닛돈:명:2
  +주먹:명:79
  +주먹구구식:명:3
  +주먹다짐:명:2
  +주먹밥:명:8
  +주먹질:명:9
  +주먹질하다:동:1
  +주먹코:명:1
  +주모자:명:3
  +주목:명:53
  +주목거리:명:1
  +주목되다:동:57
  +주목받다:동:15
  +주목표:명:1
  +주목하다:동:109
  +주무:명:4
  +주무르다:동:27
  +주무시다:동:31
  +주문:명:15
  +주문:명:43
  +주문받다:동:1
  +주문하다:동:34
  +주물:명:1
  +주물럭거리다:동:1
  +주물리다:동:2
  +주미:명:3
  +주민:명:415
  +주민세:명:5
  +주민세액:명:3
  +주민증:명:2
  +주발:명:2
  +주방:명:55
  +주방장:명:20
  +주번:명:1
  +주범:명:16
  +주변:명:1
  +주변:명:334
  +주변국:명:14
  +주변머리:명:1
  +주변부:명:20
  +주변인:명:1
  +주변적:관:1
  +주변촌:명:1
  +주변화하다:동:1
  +주보:명:1
  +주봉:명:2
  +주부:명:127
  +주부상:명:1
  +주부층:명:3
  +주불:명:1
  +주빈:명:12
  +주사:명:10
  +주사:명:3
  +주사:명:34
  +주사기:명:4
  +주사액:명:4
  +주사제:명:3
  +주사파:명:4
  +주사하다:동:9
  +주산:명:1
  +주산:명:18
  +주산지:명:1
  +주살하다:동:1
  +주상:명:2
  +주상골:명:1
  +주색:명:1
  +주생활:명:3
  +주서:명:1
  +주서기:명:5
  +주석:명:1
  +주석:명:1
  +주석:명:54
  +주석단:명:1
  +주석서:명:2
  +주석직:명:10
  +주선:명:8
  +주선하다:동:8
  +주섬주섬:부:5
  +주성분:명:4
  +주소:명:39
  +주소지:명:2
  +주수:명:1
  +주술:명:27
  +주술적:관:6
  +주스:명:33
  +주시:명:3
  +주시하다:동:23
  +주식:명:121
  +주식:명:14
  +주식형:명:3
  +주식회사:명:2
  +주신:명:1
  +주심:명:8
  +주안상:명:1
  +주안점:명:4
  +주어:명:5
  +주어지다:동:154
  +주억거리다:동:5
  +주업:명:1
  +주역:명:31
  +주역론:명:1
  +주연:명:1
  +주연:명:15
  +주연상:명:1
  +주연성:명:5
  +주연자:명:4
  +주연작:명:1
  +주연하다:동:5
  +주영:명:1
  +주옥:명:2
  +주요:명:213
  +주요인:명:1
  +주요하다:형:44
  +주워듣다:동:4
  +주워섬기다:동:1
  +주원료:명:2
  +주원인:명:5
  +주위:명:292
  +주유:명:1
  +주유소:명:10
  +주의:명:18
  +주의:명:61
  +주의보:명:2
  +주의서:명:1
  +주의자:명:13
  +주의하다:동:50
  +주인:명:1
  +주인:명:268
  +주인공:명:176
  +주인공적:명:1
  +주인님:명:4
  +주인아저씨:명:4
  +주인아주머니:명:4
  +주인아줌마:명:1
  +주인집:명:13
  +주일:명:2
  +주일:명:5
  +주일:의:17
  +주임:명:1
  +주임:명:62
  +주입:명:2
  +주입되다:동:2
  +주입받다:동:2
  +주입시키다:동:6
  +주입하다:동:10
  +주자:명:18
  +주자:명:2
  +주자직:명:1
  +주자학:명:2
  +주작:명:3
  +주작수:명:1
  +주장:명:1
  +주장:명:297
  +주장:명:4
  +주장되다:동:5
  +주장자:명:1
  +주장하다:동:1
  +주장하다:동:417
  +주재:명:18
  +주재:명:26
  +주재국:명:3
  +주재료:명:2
  +주재소:명:1
  +주재원:명:3
  +주재자:명:4
  +주재하다:동:1
  +주재하다:동:22
  +주저:명:4
  +주저앉다:동:69
  +주저앉히다:동:1
  +주저주저:부:1
  +주저주저하다:동:2
  +주저하다:동:18
  +주적:명:2
  +주전:명:6
  +주전부리:명:2
  +주전산기:명:1
  +주전자:명:16
  +주절거리다:동:1
  +주절대다:동:2
  +주절주절:부:1
  +주점:명:3
  +주접:명:2
  +주정:명:7
  +주정뱅이:명:3
  +주정하다:동:1
  +주제:명:20
  +주제:명:265
  +주제가:명:3
  +주제넘다:형:2
  +주제도:명:2
  +주제문:명:4
  +주제어:명:1
  +주조:명:1
  +주종:명:2
  +주종:명:8
  +주주:명:7
  +주지:명:1
  +주지:명:11
  +주지:명:3
  +주지:명:4
  +주지되다:동:1
  +주지사:명:1
  +주지시키다:동:1
  +주지주의:명:1
  +주지하다:동:5
  +주차:명:9
  +주차권:명:1
  +주차료:명:1
  +주차시키다:동:1
  +주차장:명:36
  +주차하다:동:6
  +주창되다:동:1
  +주창자:명:4
  +주창하다:동:7
  +주책:명:2
  +주책없다:형:2
  +주책없이:부:1
  +주체:명:1
  +주체:명:253
  +주체사상:명:9
  +주체사상파:명:1
  +주체사상화:명:1
  +주체성:명:20
  +주체자:명:2
  +주체적:관:32
  +주체적:명:41
  +주체하다:동:9
  +주체화:명:1
  +주체화하다:동:1
  +주초:명:6
  +주총:명:6
  +주최:명:27
  +주최하다:동:22
  +주축:명:22
  +주춤:부:7
  +주춤거리다:동:3
  +주춤주춤:부:3
  +주춤하다:동:3
  +주춤해지다:동:1
  +주춧돌:명:4
  +주치의:명:1
  +주크박스:명:3
  +주택:명:155
  +주택가:명:10
  +주택난:명:2
  +주택지:명:9
  +주특기:명:1
  +주파수:명:11
  +주파하다:동:1
  +주판:명:11
  +주판셈:명:7
  +주판알:명:3
  +주평:명:2
  +주필:명:1
  +주한:명:36
  +주해:명:1
  +주행:명:1
  +주향:명:5
  +주현:명:5
  +주홍:명:1
  +주홍빛:명:1
  +주홍색:명:1
  +주황:명:1
  +주황빛:명:1
  +주황색:명:3
  +주효하다:동:5
  +죽:명:1
  +죽:명:44
  +죽:부:20
  +죽기로:부:2
  +죽다:동:2
  +죽다:동:843
  +죽다:보:28
  +죽때리다:동:2
  +죽마고우:명:4
  +죽사발:명:2
  +죽살이:명:1
  +죽세공:명:1
  +죽세공품:명:1
  +죽순:명:3
  +죽어지다:동:1
  +죽은피:명:1
  +죽을상:명:4
  +죽을죄:명:1
  +죽음:명:226
  +죽이다:동:189
  +죽임당하다:동:1
  +죽제공:명:1
  +죽제품:명:3
  +죽죽:부:2
  +죽지:명:1
  +죽창:명:2
  +죽치다:동:2
  +준거:명:5
  +준거안:명:3
  +준결승:명:9
  +준결승전:명:8
  +준고정:명:2
  +준공:명:10
  +준공년:명:1
  +준공되다:동:6
  +준공설:명:2
  +준공식:명:7
  +준공익:명:1
  +준공일:명:1
  +준공하다:동:4
  +준국가:명:1
  +준기술자:명:1
  +준도시:명:2
  +준동:명:1
  +준말:명:1
  +준법:명:6
  +준법정신:명:3
  +준별하다:동:1
  +준보전:명:3
  +준비:명:211
  +준비금:명:2
  +준비단:명:3
  +준비되다:동:33
  +준비물:명:50
  +준비생:명:1
  +준비서:명:1
  +준비시키다:동:1
  +준비실:명:1
  +준비하다:동:207
  +준사관:명:1
  +준선전:명:1
  +준설:명:3
  +준설되다:동:1
  +준수:명:5
  +준수하다:동:8
  +준수하다:형:1
  +준엄하다:형:11
  +준여권:명:1
  +준열하다:형:2
  +준우승:명:6
  +준위:명:1
  +준장:명:7
  +준재:명:1
  +준전시:명:2
  +준주거:명:1
  +준칙:명:5
  +준플레이오프:명:3
  +준하다:동:6
  +준하다:형:1
  +준핵보유국:명:1
  +준형:명:1
  +줄:명:191
  +줄:명:2
  +줄:의:2
  +줄:의:562
  +줄거리:명:32
  +줄곧:부:66
  +줄기:명:93
  +줄기차다:형:24
  +줄끌기:명:2
  +줄낚시:명:1
  +줄넘기:명:11
  +줄넘기하다:동:1
  +줄다:동:75
  +줄다리기:명:10
  +줄다리기하다:동:1
  +줄달다:동:1
  +줄달음:명:1
  +줄달음질:명:2
  +줄달음치다:동:2
  +줄담배:명:6
  +줄당기기:명:2
  +줄딸기:명:1
  +줄레줄레:부:1
  +줄무늬:명:20
  +줄사다리:명:1
  +줄알:명:1
  +줄어들다:동:133
  +줄이다:동:251
  +줄자:명:2
  +줄잡다:동:7
  +줄장미:명:2
  +줄줄:부:13
  +줄줄이:부:23
  +줄짓다:동:14
  +줄창:부:3
  +줄초상:명:3
  +줄타기:명:2
  +줄풀:명:1
  +줄행랑:명:7
  +줄행랑치다:동:2
  +줌:명:1
  +줌:명:19
  +줍다:동:76
  +줏대:명:6
  +중:명:13
  +중:명:21
  +중:명:31
  +중:의:1,950
  +중가:명:1
  +중간:명:135
  +중간고사:명:4
  +중간국:명:2
  +중간보고:명:2
  +중간보고일:명:1
  +중간색:명:2
  +중간석:명:1
  +중간시험:명:3
  +중간자:명:2
  +중간재:명:2
  +중간적:관:1
  +중간적:명:1
  +중간중간:명:1
  +중간착취:명:1
  +중개:명:2
  +중개료:명:1
  +중개상:명:3
  +중개업소:명:1
  +중개업자:명:4
  +중개인:명:1
  +중개자:명:1
  +중개하다:동:1
  +중거리:명:4
  +중건되다:동:2
  +중건하다:동:3
  +중견:명:16
  +중경상:명:4
  +중계:명:45
  +중계권료:명:1
  +중계되다:동:3
  +중계방송:명:31
  +중계방송반:명:1
  +중계방송사:명:1
  +중계방송하다:동:2
  +중계실:명:1
  +중계차:명:2
  +중계하다:동:5
  +중고:명:10
  +중고:명:6
  +중고교:명:6
  +중고교생:명:4
  +중고딕:명:1
  +중고생:명:10
  +중고선:명:1
  +중고차:명:2
  +중고품:명:1
  +중공업:명:10
  +중과:명:1
  +중과부적:명:1
  +중과세:명:1
  +중과세하다:동:2
  +중과하다:동:2
  +중교:명:1
  +중교생:명:1
  +중구금:명:2
  +중구난방:명:3
  +중국어:명:6
  +중국인:명:2
  +중국집:명:13
  +중군:명:1
  +중금속:명:12
  +중금채:명:1
  +중급:명:4
  +중기:명:20
  +중기:명:8
  +중기작:명:1
  +중기차:명:2
  +중남부권:명:1
  +중년:명:36
  +중년기:명:2
  +중년층:명:6
  +중노동:명:2
  +중농:명:1
  +중농주의:명:1
  +중늙은이:명:1
  +중단:명:2
  +중단:명:32
  +중단되다:동:33
  +중단시키다:동:9
  +중단하다:동:42
  +중닭:명:1
  +중당:명:1
  +중대:명:10
  +중대:명:28
  +중대:명:6
  +중대사:명:1
  +중대성:명:1
  +중대장:명:3
  +중대하다:형:42
  +중도:명:13
  +중도:명:15
  +중도:명:4
  +중도금:명:1
  +중도실상:명:1
  +중도적:관:4
  +중도적:명:1
  +중독:명:31
  +중독되다:동:7
  +중독자:명:4
  +중독증:명:2
  +중동:명:1
  +중동:명:41
  +중동무이하다:동:1
  +중두리:명:1
  +중등:명:12
  +중등부:명:1
  +중등학교:명:4
  +중또래:명:1
  +중략:명:2
  +중량:명:3
  +중량감:명:3
  +중력:명:17
  +중력기:명:2
  +중령:명:7
  +중론:명:2
  +중류:명:18
  +중립:명:1
  +중립:명:8
  +중립국:명:1
  +중립성:명:4
  +중립적:관:1
  +중립적:명:10
  +중립화:명:1
  +중매:명:12
  +중매결혼:명:3
  +중매결혼하다:동:1
  +중매인:명:1
  +중매쟁이:명:2
  +중머슴:명:1
  +중명:명:2
  +중명조:명:1
  +중모리:명:1
  +중무장:명:1
  +중무장하다:동:3
  +중문:명:2
  +중문과:명:2
  +중문학과:명:1
  +중문화주의:명:1
  +중반:명:3
  +중반:명:73
  +중벌:명:1
  +중범위:명:1
  +중병:명:2
  +중복:명:10
  +중복:명:2
  +중복되다:동:11
  +중복성:명:1
  +중부:명:68
  +중부권:명:9
  +중사:명:2
  +중산:명:3
  +중산층:명:14
  +중상:명:7
  +중상모략:명:2
  +중상자:명:2
  +중상주의:명:2
  +중상층:명:1
  +중상하다:동:1
  +중생:명:1
  +중생:명:77
  +중생계:명:2
  +중생대:명:3
  +중생상:명:1
  +중생적:관:1
  +중선:명:4
  +중선거구제:명:2
  +중성:명:12
  +중성:명:6
  +중성미자:명:17
  +중성자:명:6
  +중성적:명:1
  +중세:명:122
  +중세기:명:4
  +중세적:관:3
  +중세적:명:10
  +중소:명:21
  +중소기업:명:107
  +중소기업가:명:1
  +중소기업계:명:1
  +중소기업관:명:1
  +중소기업자:명:1
  +중소기업체:명:5
  +중소형:명:3
  +중수:명:1
  +중수도:명:5
  +중수부:명:3
  +중수하다:동:1
  +중순:명:35
  +중시:명:10
  +중시되다:동:8
  +중시하다:동:48
  +중식:명:2
  +중신:명:1
  +중심:명:10
  +중심:명:622
  +중심가:명:10
  +중심국:명:4
  +중심부:명:17
  +중심선:명:9
  +중심설:명:2
  +중심인물:명:1
  +중심적:관:3
  +중심적:명:5
  +중심제:명:1
  +중심주의:명:5
  +중심주의적:관:5
  +중심지:명:42
  +중심체:명:1
  +중심촌:명:1
  +중심축:명:10
  +중심하다:형:2
  +중심핵:명:1
  +중심화되다:동:1
  +중아:명:1
  +중압:명:2
  +중압감:명:2
  +중앙:명:257
  +중앙난방:명:1
  +중앙당:명:20
  +중앙로:명:1
  +중앙부:명:9
  +중앙선:명:6
  +중앙은행:명:1
  +중앙적:관:1
  +중앙적:명:1
  +중앙회:명:7
  +중양절:명:1
  +중어:명:2
  +중얼:명:1
  +중얼거리다:동:52
  +중얼대다:동:2
  +중역:명:1
  +중역:명:3
  +중엽:명:13
  +중요:명:30
  +중요성:명:78
  +중요시:명:1
  +중요시되다:동:19
  +중요시하다:동:33
  +중요하다:형:872
  +중요해지다:동:9
  +중용:명:3
  +중용적:관:1
  +중용하다:동:1
  +중위:명:1
  +중위:명:30
  +중위도:명:1
  +중유:명:1
  +중음신:명:1
  +중읍례:명:1
  +중의:명:1
  +중의원:명:6
  +중인:명:5
  +중임:명:1
  +중임하다:동:1
  +중장:명:10
  +중장거리:명:6
  +중장기적:명:2
  +중장년층:명:1
  +중장비:명:8
  +중재:명:13
  +중재되다:동:1
  +중재원:명:1
  +중재인:명:1
  +중재자:명:1
  +중저가:명:1
  +중저가품:명:1
  +중전:명:1
  +중전감:명:1
  +중절:명:13
  +중절률:명:1
  +중절하다:동:1
  +중점:명:34
  +중점적:명:8
  +중조산:명:4
  +중족골:명:1
  +중졸:명:1
  +중죄:명:1
  +중중모리:명:1
  +중증:명:3
  +중지:명:12
  +중지:명:5
  +중지되다:동:5
  +중지시키다:동:1
  +중지자:명:1
  +중지하다:동:20
  +중진:명:23
  +중진국:명:2
  +중징계:명:2
  +중차:명:2
  +중차대하다:형:1
  +중창반:명:1
  +중책:명:2
  +중천:명:2
  +중첩되다:동:5
  +중첩하다:동:1
  +중체:명:1
  +중추:명:24
  +중추적:관:2
  +중추절:명:1
  +중축:명:1
  +중층:명:3
  +중층적:관:21
  +중층적:명:8
  +중치막:명:5
  +중크롬산암모늄:명:2
  +중키:명:1
  +중탕하다:동:1
  +중태:명:2
  +중턱:명:10
  +중퇴:명:1
  +중퇴하다:동:5
  +중파:명:2
  +중편:명:4
  +중풍:명:6
  +중하급:명:1
  +중하다:형:2
  +중하위권:명:1
  +중학:명:10
  +중학교:명:110
  +중학생:명:37
  +중학생부:명:1
  +중합체:명:2
  +중핵:명:3
  +중허리:명:1
  +중형:명:15
  +중형:명:2
  +중형선:명:1
  +중호:명:1
  +중화:명:1
  +중화되다:동:1
  +중화상:명:3
  +중화하다:동:1
  +중화학:명:12
  +중환자:명:3
  +중환자실:명:2
  +중후하다:형:4
  +중흥:명:2
  +중흥시키다:동:1
  +중히:부:4
  +줴지르다:동:1
  +쥐:명:1
  +쥐:명:63
  +쥐구멍:명:6
  +쥐꼬리:명:7
  +쥐다:동:162
  +쥐똥나무:명:1
  +쥐띠:명:3
  +쥐라기:명:2
  +쥐방울만하다:형:2
  +쥐뿔:명:1
  +쥐새끼:명:1
  +쥐색:명:1
  +쥐약:명:3
  +쥐어뜯기다:동:1
  +쥐어뜯다:동:10
  +쥐어박다:동:4
  +쥐어지다:동:8
  +쥐어지르다:동:4
  +쥐어짜다:동:3
  +쥐치:명:1
  +쥐탕:명:1
  +쥑이다:동:1
  +쥬시:명:1
  +즈네:대:2
  +즈려밟다:동:2
  +즈음:의:17
  +즈음하다:동:7
  +즈이:대:7
  +즉:부:715
  +즉각:부:53
  +즉각적:관:4
  +즉각적:명:13
  +즉결:명:1
  +즉물적:명:2
  +즉사:명:1
  +즉사하다:동:3
  +즉석:명:21
  +즉석식품:명:8
  +즉석요리:명:1
  +즉슨:부:1
  +즉시:명:82
  +즉위:명:8
  +즉위시키다:동:1
  +즉위하다:동:16
  +즉일:명:1
  +즉자적:명:2
  +즉지:명:1
  +즉흥:명:9
  +즉흥적:관:4
  +즉흥적:명:10
  +즐거움:명:64
  +즐거워지다:동:3
  +즐거워하다:동:17
  +즐거이:부:1
  +즐겁다:형:222
  +즐겨하다:동:12
  +즐기다:동:319
  +즐비:명:1
  +즐비하다:형:12
  +즘:의:1
  +즘생:명:1
  +즙:명:17
  +증가:명:86
  +증가되다:동:8
  +증가량:명:1
  +증가분:명:2
  +증가세:명:2
  +증가시키다:동:25
  +증가액:명:1
  +증가율:명:32
  +증가하다:동:159
  +증감:명:4
  +증강:명:6
  +증강론자:명:1
  +증개축:명:2
  +증거:명:102
  +증거금:명:1
  +증거물:명:7
  +증과:명:1
  +증권:명:109
  +증권가:명:12
  +증권계:명:1
  +증권국:명:1
  +증권사:명:69
  +증권업:명:4
  +증권업계:명:4
  +증기:명:9
  +증대:명:26
  +증대되다:동:10
  +증대시키다:동:9
  +증대하다:동:6
  +증류수:명:1
  +증류주:명:1
  +증류하다:동:1
  +증말로:부:1
  +증명:명:11
  +증명되다:동:12
  +증명사진:명:1
  +증명서:명:11
  +증명하다:동:62
  +증발:명:2
  +증발:명:2
  +증발되다:동:3
  +증발량:명:2
  +증발시키다:동:2
  +증발하다:동:4
  +증백제:명:1
  +증보판:명:2
  +증산:명:5
  +증상:명:95
  +증서:명:6
  +증설:명:7
  +증세:명:3
  +증세:명:49
  +증손:명:3
  +증손녀딸:명:2
  +증손부:명:1
  +증손자:명:2
  +증시:명:131
  +증식:명:6
  +증식하다:동:2
  +증안:명:2
  +증액:명:4
  +증언:명:52
  +증언대:명:3
  +증언식:명:2
  +증언하다:동:12
  +증여:명:9
  +증여세:명:10
  +증오:명:19
  +증오감:명:1
  +증오하다:동:9
  +증원:명:1
  +증원:명:2
  +증원되다:동:1
  +증원하다:동:3
  +증인:명:9
  +증자:명:27
  +증자되다:동:3
  +증자분:명:1
  +증정:명:2
  +증조:명:1
  +증조모님:명:5
  +증조할머니:명:1
  +증조할아버지:명:2
  +증좌:명:1
  +증진:명:17
  +증진되다:동:2
  +증진시키다:동:8
  +증진하다:동:1
  +증축:명:5
  +증축되다:동:1
  +증축하다:동:3
  +증파하다:동:1
  +증판:명:1
  +증편:명:1
  +증폭:명:7
  +증폭되다:동:8
  +증폭시키다:동:7
  +증폭하다:동:3
  +증표:명:10
  +증후:명:3
  +증후:명:6
  +증후군:명:25
  +증후성:명:2
  +지:대:3
  +지:명:1
  +지:명:1
  +지:명:5
  +지:의:2
  +지:의:319
  +지가:명:15
  +지각:명:13
  +지각:명:35
  +지각:명:5
  +지각되다:동:3
  +지각하다:동:4
  +지각하다:동:9
  +지갑:명:51
  +지검:명:36
  +지게:명:18
  +지게꾼:명:9
  +지게미:명:1
  +지게뿔:명:1
  +지게질:명:1
  +지겟다리:명:1
  +지겟작대기:명:2
  +지겨워지다:동:1
  +지겹다:형:34
  +지경:명:4
  +지경:의:94
  +지계:명:1
  +지고:명:5
  +지고지상:명:1
  +지고하다:형:1
  +지관:명:1
  +지구:명:282
  +지구:명:75
  +지구국:명:1
  +지구당:명:37
  +지구력:명:11
  +지구어:명:1
  +지구적:관:4
  +지구적:명:13
  +지구촌:명:13
  +지구촌화:명:1
  +지국:명:7
  +지국장:명:4
  +지그시:부:15
  +지그재그:명:2
  +지극:명:3
  +지극하다:형:6
  +지극히:부:53
  +지근거리:명:2
  +지금:명:1,084
  +지금:부:981
  +지금껏:부:25
  +지급:명:31
  +지급기:명:3
  +지급되다:동:20
  +지급률:명:1
  +지급받다:동:7
  +지급설:명:1
  +지급인:명:2
  +지급일:명:1
  +지급하다:동:52
  +지긋이:부:5
  +지긋지긋하다:형:17
  +지긋하다:형:7
  +지기:명:2
  +지기:명:22
  +지기:명:4
  +지기론:명:3
  +지기지우:명:1
  +지껄이다:동:15
  +지끈:부:1
  +지끈거리다:동:1
  +지끈지끈:부:2
  +지나가다:동:233
  +지나다:동:1,494
  +지나다니다:동:4
  +지나오다:동:14
  +지나치다:동:46
  +지나치다:형:213
  +지난날:명:49
  +지난달:명:138
  +지난밤:명:8
  +지난번:명:61
  +지난봄:명:3
  +지난여름:명:4
  +지난주:명:23
  +지난하다:형:5
  +지난해:명:404
  +지내다:동:355
  +지내보다:동:1
  +지냑:명:1
  +지냑밥:명:1
  +지네:명:17
  +지네탕:명:3
  +지년:명:1
  +지느러미:명:2
  +지능:명:15
  +지능적:관:1
  +지능적:명:1
  +지능화하다:동:1
  +지니다:동:433
  +지다:동:126
  +지다:동:36
  +지다:동:64
  +지다:동:77
  +지다:보:1
  +지단:명:3
  +지단채:명:1
  +지당하다:형:3
  +지대:명:1
  +지대:명:117
  +지대:명:6
  +지대공:명:4
  +지대하다:형:5
  +지대해지다:동:1
  +지대화:명:1
  +지덕:명:1
  +지덕:명:1
  +지덕체:명:2
  +지도:명:116
  +지도:명:91
  +지도과:명:1
  +지도관실:명:3
  +지도국:명:1
  +지도국장:명:1
  +지도급:명:5
  +지도력:명:6
  +지도받다:동:1
  +지도부:명:32
  +지도부실:명:3
  +지도부장:명:1
  +지도소:명:6
  +지도실:명:1
  +지도자:명:135
  +지도자감:명:1
  +지도자반:명:10
  +지도자적:명:1
  +지도적:관:5
  +지도적:명:1
  +지도책:명:2
  +지도층:명:13
  +지도하다:동:29
  +지독스레:부:1
  +지독하다:형:23
  +지독허다:형:1
  +지독히:부:4
  +지동설:명:10
  +지둔:명:1
  +지득하다:동:1
  +지락:명:1
  +지랄:명:8
  +지랄하다:동:2
  +지렁이:명:10
  +지렇다:형:1
  +지레:명:7
  +지레:부:8
  +지레김치:명:1
  +지레짐작:명:2
  +지렛대:명:6
  +지렛목:명:1
  +지력:명:1
  +지력:명:5
  +지령:명:5
  +지령문:명:1
  +지령실:명:1
  +지령하다:동:1
  +지로:명:7
  +지론:명:8
  +지뢰:명:3
  +지루하다:형:47
  +지루해하다:동:3
  +지류:명:25
  +지르다:동:138
  +지르다:동:2
  +지르다:동:23
  +지르르륵:부:1
  +지름:명:15
  +지름길:명:25
  +지리:명:1
  +지리:명:28
  +지리관:명:2
  +지리다:형:2
  +지리말발도리:명:1
  +지리멸렬하다:동:1
  +지리부도:명:2
  +지리서:명:2
  +지리적:관:21
  +지리적:명:9
  +지리터:명:1
  +지리학:명:5
  +지리학과:명:1
  +지리학자:명:2
  +지리학적:관:1
  +지리학적:명:2
  +지린내:명:1
  +지망:명:5
  +지망망하다:형:1
  +지망생:명:13
  +지망자:명:1
  +지망하다:동:7
  +지맥:명:3
  +지면:명:1
  +지면:명:15
  +지면:명:22
  +지명:명:18
  +지명:명:7
  +지명권:명:1
  +지명도:명:7
  +지명되다:동:1
  +지명받다:동:1
  +지명자:명:1
  +지명하다:동:2
  +지목:명:1
  +지목:명:1
  +지목:명:4
  +지목되다:동:12
  +지목하다:동:5
  +지문:명:3
  +지문:명:4
  +지반:명:2
  +지발:부:1
  +지방:명:2
  +지방:명:21
  +지방:명:695
  +지방간:명:1
  +지방관:명:2
  +지방당:명:4
  +지방대:명:1
  +지방도:명:1
  +지방민:명:3
  +지방별:명:1
  +지방사:명:1
  +지방색:명:4
  +지방세:명:1
  +지방지:명:1
  +지방질:명:1
  +지방청:명:5
  +지방층:명:1
  +지방판:명:1
  +지방화:명:1
  +지배:명:446
  +지배권:명:2
  +지배되다:동:16
  +지배력:명:2
  +지배론:명:3
  +지배받다:동:1
  +지배인:명:15
  +지배자:명:34
  +지배적:관:54
  +지배적:명:39
  +지배층:명:46
  +지배하다:동:113
  +지법:명:27
  +지병:명:2
  +지복:명:1
  +지봉:명:4
  +지부:명:21
  +지부장:명:3
  +지부장직:명:1
  +지분:명:44
  +지분율:명:12
  +지불:명:8
  +지불되다:동:2
  +지불받다:동:1
  +지불일:명:2
  +지불하다:동:48
  +지붕:명:87
  +지붕골:명:1
  +지사:명:5
  +지사:명:7
  +지사장:명:2
  +지사적:관:1
  +지상:명:6
  +지상:명:8
  +지상:명:85
  +지상계:명:3
  +지상군:명:2
  +지상적:명:1
  +지상전:명:19
  +지상주의:명:6
  +지상주의자:명:4
  +지상주의적:관:1
  +지상주의파:명:1
  +지새다:동:4
  +지새우다:동:9
  +지서:명:6
  +지석:명:1
  +지석묘:명:1
  +지성:명:10
  +지성:명:23
  +지성:명:3
  +지성계:명:1
  +지성껏:부:1
  +지성적:명:4
  +지성파:명:1
  +지세:명:5
  +지소:명:1
  +지속:명:19
  +지속되다:동:56
  +지속성:명:7
  +지속시키다:동:8
  +지속적:관:6
  +지속적:명:83
  +지속하다:동:15
  +지수:명:1
  +지수:명:49
  +지순:명:1
  +지순하다:형:1
  +지시:명:104
  +지시되다:동:1
  +지시받다:동:1
  +지시판:명:1
  +지시하다:동:73
  +지식:명:269
  +지식수준:명:1
  +지식인:명:91
  +지식인연하다:동:1
  +지식인적:관:2
  +지식층:명:5
  +지신:명:16
  +지신족:명:1
  +지싯지싯:부:1
  +지아비:명:4
  +지아이에프:명:5
  +지압:명:2
  +지양:명:2
  +지양되다:동:3
  +지양하다:동:17
  +지어내다:동:7
  +지어먹다:동:1
  +지어미:명:1
  +지어지다:동:32
  +지엄하다:형:2
  +지엔피:명:30
  +지역:명:1,133
  +지역감정:명:11
  +지역구:명:26
  +지역권:명:2
  +지역당:명:9
  +지역당적:관:3
  +지역민:명:2
  +지역사:명:1
  +지역성:명:1
  +지역신:명:1
  +지역적:관:13
  +지역적:명:10
  +지역주의:명:13
  +지역촌:명:2
  +지역화:명:1
  +지역화하다:동:1
  +지연:명:11
  +지연:명:5
  +지연되다:동:7
  +지연성:명:1
  +지연시키다:동:6
  +지연적:명:1
  +지연제:명:1
  +지엽:명:1
  +지엽적:관:3
  +지엽적:명:4
  +지오피:명:2
  +지옥:명:37
  +지우:명:1
  +지우:명:1
  +지우개:명:13
  +지우다:동:16
  +지우다:동:2
  +지우다:동:75
  +지우산:명:2
  +지워지다:동:20
  +지원:명:14
  +지원:명:217
  +지원:명:7
  +지원국:명:1
  +지원군:명:1
  +지원금:명:8
  +지원단:명:3
  +지원되다:동:4
  +지원받다:동:3
  +지원법:명:2
  +지원병:명:1
  +지원병제:명:1
  +지원생:명:1
  +지원서:명:1
  +지원액:명:1
  +지원율:명:2
  +지원자:명:13
  +지원자:명:2
  +지원작:명:4
  +지원적:명:1
  +지원제:명:1
  +지원책:명:2
  +지원포:명:1
  +지원하다:동:16
  +지원하다:동:87
  +지원형:명:1
  +지위:명:116
  +지육:명:1
  +지은이:명:8
  +지의류:명:1
  +지입:명:1
  +지자제:명:26
  +지자체:명:8
  +지장:명:22
  +지장조:명:1
  +지재권:명:1
  +지저귀다:동:16
  +지저분하다:형:20
  +지저분해지다:동:2
  +지적:관:58
  +지적:명:140
  +지적:명:2
  +지적:명:29
  +지적도:명:3
  +지적되다:동:62
  +지적하다:동:228
  +지점:명:1
  +지점:명:33
  +지점:명:62
  +지점망:명:1
  +지점장:명:7
  +지점토:명:1
  +지정:명:40
  +지정되다:동:34
  +지정석:명:1
  +지정적:관:1
  +지정하다:동:45
  +지정학적:명:2
  +지져지다:동:1
  +지조:명:4
  +지존:명:4
  +지주:명:38
  +지주:명:8
  +지주:명:9
  +지주적:관:2
  +지주층:명:2
  +지준금:명:1
  +지준율:명:2
  +지중:명:3
  +지중선:명:1
  +지지:명:1
  +지지:명:79
  +지지눌리다:동:1
  +지지다:동:23
  +지지대:명:1
  +지지도:명:1
  +지지리:부:3
  +지지부진:명:3
  +지지부진하다:동:5
  +지지율:명:6
  +지지자:명:6
  +지지표:명:1
  +지지하다:동:45
  +지직거리다:동:1
  +지진:명:25
  +지진학:명:3
  +지질:명:1
  +지질:명:1
  +지질:명:14
  +지질학:명:5
  +지질학과:명:1
  +지질학자:명:4
  +지질학적:관:1
  +지질학적:명:6
  +지짐:명:4
  +지짐이:명:1
  +지참:명:1
  +지참금:명:28
  +지참하다:동:2
  +지척:명:6
  +지천:명:2
  +지청:명:8
  +지청구:명:2
  +지체:명:6
  +지체:명:7
  +지체되다:동:2
  +지체하다:동:2
  +지축:명:1
  +지출:명:66
  +지출하다:동:12
  +지층:명:22
  +지치다:동:13
  +지치다:동:96
  +지치주의:명:1
  +지침:명:59
  +지침서:명:11
  +지칭:명:3
  +지칭되다:동:2
  +지칭하다:동:23
  +지카다비:명:1
  +지켜보다:동:125
  +지켜지다:동:21
  +지키다:동:513
  +지탄:명:8
  +지탄받다:동:2
  +지탄하다:동:1
  +지탱되다:동:2
  +지탱시키다:동:2
  +지탱하다:동:27
  +지판:명:6
  +지팡이:명:9
  +지퍼:명:8
  +지평:명:30
  +지평선:명:17
  +지폐:명:18
  +지표:명:3
  +지표:명:42
  +지표면:명:17
  +지표적:관:1
  +지푸라기:명:8
  +지프:명:16
  +지프차:명:3
  +지피다:동:15
  +지피족:명:1
  +지필묵:명:2
  +지하:명:129
  +지하계:명:1
  +지하공작:명:1
  +지하당:명:1
  +지하도:명:13
  +지하상가:명:1
  +지하수:명:42
  +지하실:명:7
  +지하자원:명:15
  +지하철:명:128
  +지하철역:명:9
  +지향:명:25
  +지향성:명:11
  +지향적:관:6
  +지향적:명:13
  +지향점:명:1
  +지향하다:동:4
  +지향하다:동:45
  +지혈:명:2
  +지혈대:명:3
  +지혈법:명:8
  +지혈하다:동:1
  +지형:명:37
  +지형도:명:5
  +지형성:명:1
  +지형적:관:5
  +지형적:명:2
  +지혜:명:114
  +지혜롭다:형:10
  +지화자:감:1
  +지회:명:7
  +지회장:명:1
  +지휘:명:19
  +지휘관:명:6
  +지휘권:명:3
  +지휘되다:동:1
  +지휘봉:명:3
  +지휘부:명:3
  +지휘소:명:1
  +지휘자:명:8
  +지휘하다:동:15
  +직:명:14
  +직:부:1
  +직각:명:5
  +직감:명:2
  +직감력:명:1
  +직감적:명:9
  +직감하다:동:7
  +직거래:명:4
  +직거래하다:동:1
  +직격:명:3
  +직결되다:동:24
  +직결시키다:동:2
  +직경:명:7
  +직계:명:14
  +직계손:명:2
  +직공:명:1
  +직관:명:1
  +직관:명:14
  +직관력:명:1
  +직관적:관:3
  +직관적:명:5
  +직군:명:1
  +직권:명:12
  +직금:명:1
  +직급:명:5
  +직능:명:4
  +직능계:명:1
  +직렬:명:3
  +직령:명:4
  +직류:명:1
  +직립:명:6
  +직립적:관:1
  +직립하다:동:1
  +직립형:명:1
  +직매점:명:1
  +직면:명:2
  +직면하다:동:19
  +직무:명:55
  +직물:명:71
  +직물학:명:1
  +직박구리:명:1
  +직반입하다:동:1
  +직방체:명:2
  +직배:명:1
  +직분:명:3
  +직사각형:명:3
  +직사광선:명:2
  +직삼각형:명:2
  +직선:명:2
  +직선:명:35
  +직선거리:명:3
  +직선적:명:2
  +직선제:명:5
  +직설법:명:1
  +직설적:명:4
  +직성:명:10
  +직성:명:5
  +직성되다:동:1
  +직성하다:동:1
  +직소력:명:1
  +직속:명:8
  +직속지:명:1
  +직송:명:1
  +직송하다:동:1
  +직수굿하다:형:2
  +직수그리다:동:1
  +직수입하다:동:1
  +직승기:명:1
  +직시:명:1
  +직시하다:동:16
  +직언:명:1
  +직업:명:145
  +직업관:명:5
  +직업란:명:1
  +직업력:명:1
  +직업병:명:6
  +직업소개소:명:3
  +직업여성:명:1
  +직업윤리:명:1
  +직업의식:명:2
  +직업인:명:11
  +직업적:관:8
  +직업적:명:4
  +직업혁명가:명:1
  +직업화:명:1
  +직역:명:12
  +직역하다:동:2
  +직영:명:2
  +직원:명:194
  +직원:명:9
  +직원실:명:1
  +직위:명:8
  +직인:명:3
  +직인:명:5
  +직장:명:1
  +직장:명:214
  +직장:명:3
  +직장성:명:1
  +직장인:명:22
  +직전:명:3
  +직전:명:70
  +직접:명:71
  +직접:부:381
  +직접성:명:5
  +직접세:명:1
  +직접적:관:10
  +직접적:명:107
  +직제:명:8
  +직조:명:5
  +직조기:명:1
  +직조하다:동:3
  +직종:명:23
  +직진:명:2
  +직책:명:33
  +직통:명:1
  +직판:명:4
  +직판장:명:2
  +직하다:보:27
  +직할:명:3
  +직할시:명:5
  +직함:명:8
  +직행:명:3
  +직행하다:동:4
  +직후:명:109
  +진:명:3
  +진:명:5
  +진:명:5
  +진:명:7
  +진가:명:8
  +진갈색:명:1
  +진갑:명:1
  +진격:명:1
  +진격하다:동:3
  +진경:명:1
  +진경산수:명:1
  +진골:명:24
  +진공:명:24
  +진공:명:3
  +진공관:명:13
  +진공청소기:명:3
  +진국:명:1
  +진국:명:1
  +진국:명:4
  +진귀하다:형:6
  +진급:명:49
  +진급되다:동:1
  +진급시키다:동:1
  +진급하다:동:3
  +진기록:명:1
  +진기하다:형:1
  +진노:명:1
  +진노하다:동:1
  +진단:명:64
  +진단기:명:8
  +진단되다:동:2
  +진단명:명:1
  +진단받다:동:2
  +진단법:명:1
  +진단서:명:2
  +진단적:관:1
  +진단하다:동:33
  +진달래:명:23
  +진달래꽃:명:9
  +진담:명:7
  +진도:명:10
  +진도율:명:1
  +진돗개:명:6
  +진동:명:1
  +진동:명:2
  +진동:명:26
  +진동되다:동:1
  +진동선:명:1
  +진동수:명:8
  +진동시키다:동:1
  +진동자:명:4
  +진동하다:동:1
  +진동하다:동:8
  +진두지휘:명:1
  +진드기:명:5
  +진득거리다:동:1
  +진득진득:부:1
  +진득하다:형:5
  +진딧물:명:8
  +진땀:명:12
  +진력:명:1
  +진력하다:동:2
  +진로:명:29
  +진료:명:27
  +진료비:명:8
  +진료실:명:6
  +진료진:명:1
  +진료하다:동:1
  +진리:명:127
  +진리되다:동:1
  +진리성:명:1
  +진맥:명:1
  +진맥하다:동:1
  +진면목:명:3
  +진물:명:1
  +진미:명:1
  +진미:명:3
  +진밥:명:1
  +진배없다:형:4
  +진보:명:71
  +진보되다:동:1
  +진보라색:명:1
  +진보랏빛:명:1
  +진보성:명:6
  +진보적:관:12
  +진보적:명:10
  +진보주의:명:1
  +진보주의자:명:3
  +진보파:명:1
  +진보하다:동:4
  +진부:명:1
  +진부성:명:1
  +진부하다:형:18
  +진부해지다:동:1
  +진사:명:6
  +진산:명:3
  +진상:명:1
  +진상:명:66
  +진상품:명:1
  +진상하다:동:3
  +진서:명:2
  +진선미:명:3
  +진설하다:동:1
  +진성좌:명:5
  +진세:명:1
  +진속:명:1
  +진솔하다:형:14
  +진쇠돌:명:1
  +진수:명:4
  +진수성찬:명:2
  +진술:명:49
  +진술권:명:1
  +진술서:명:7
  +진술하다:동:16
  +진신:명:4
  +진실:명:107
  +진실되다:형:17
  +진실로:부:18
  +진실성:명:10
  +진실하다:형:31
  +진실해지다:동:1
  +진심:명:22
  +진아이:명:1
  +진압:명:22
  +진압군:명:13
  +진압되다:동:1
  +진압책:명:1
  +진압하다:동:10
  +진애:명:1
  +진양조:명:1
  +진언하다:동:1
  +진여:명:3
  +진열:명:5
  +진열대:명:7
  +진열되다:동:5
  +진열장:명:9
  +진열창:명:1
  +진열하다:동:5
  +진영:명:25
  +진용:명:7
  +진운:명:1
  +진원:명:3
  +진원지:명:1
  +진위:명:7
  +진의:명:8
  +진이마촌:명:1
  +진일보되다:동:1
  +진일보시키다:동:1
  +진일보하다:동:3
  +진입:명:46
  +진입로:명:2
  +진입시키다:동:2
  +진입하다:동:27
  +진자:명:1
  +진자시계:명:1
  +진작:명:5
  +진작:부:25
  +진작시키다:동:2
  +진작에:부:10
  +진저리:명:5
  +진전:명:3
  +진전:명:41
  +진전되다:동:18
  +진전시키다:동:5
  +진전하다:동:2
  +진전화:명:1
  +진절머리:명:2
  +진정:명:42
  +진정:명:5
  +진정:명:7
  +진정:부:24
  +진정되다:동:2
  +진정서:명:9
  +진정성:명:5
  +진정시키다:동:6
  +진정하다:동:2
  +진정하다:동:9
  +진정하다:형:158
  +진종일:명:6
  +진주:명:1
  +진주:명:5
  +진주단:명:1
  +진주담치:명:2
  +진주사:명:2
  +진주조개:명:1
  +진주하다:동:1
  +진즉:부:3
  +진지:명:7
  +진지:명:8
  +진지하다:형:91
  +진지해지다:동:1
  +진진하다:형:4
  +진짓상:명:2
  +진짜:명:87
  +진짜:부:160
  +진짜로:부:13
  +진짜배기:명:1
  +진찰:명:8
  +진찰받다:동:1
  +진찰실:명:4
  +진찰하다:동:2
  +진창:명:2
  +진척:명:12
  +진척되다:동:6
  +진초록:명:1
  +진출:명:76
  +진출설:명:2
  +진출시키다:동:1
  +진출하다:동:55
  +진취:명:2
  +진취적:관:3
  +진취적:명:4
  +진탕:부:1
  +진통:명:20
  +진통제:명:6
  +진퇴:명:1
  +진퇴양난:명:2
  +진퇴유곡:명:1
  +진폭:명:1
  +진품:명:3
  +진풍경:명:1
  +진하다:형:69
  +진학:명:26
  +진학률:명:1
  +진학하다:동:10
  +진해지다:동:5
  +진행:명:94
  +진행되다:동:185
  +진행상:명:1
  +진행시키다:동:12
  +진행자:명:29
  +진행자상:명:1
  +진행표:명:1
  +진행하다:동:83
  +진호하다:동:1
  +진혼곡:명:1
  +진홍:명:2
  +진홍색:명:2
  +진화:명:32
  +진화:명:5
  +진화되다:동:1
  +진화되다:동:4
  +진화론:명:19
  +진화론적:관:3
  +진화사:명:1
  +진화적:관:1
  +진화하다:동:11
  +진화하다:동:2
  +진휼하다:동:1
  +진흙:명:12
  +진흙물:명:2
  +진흙탕:명:2
  +진흙투성이:명:1
  +진흙판:명:1
  +진흥:명:22
  +진흥국:명:2
  +진흥국장:명:2
  +진흥시키다:동:3
  +진흥책:명:1
  +질:명:1
  +질:명:5
  +질:명:80
  +질감:명:6
  +질겁:명:4
  +질겁하다:동:1
  +질겅질겅:부:4
  +질겅질겅하다:형:1
  +질겨지다:동:2
  +질경이:명:16
  +질곡:명:9
  +질권:명:1
  +질그릇:명:4
  +질근질근:부:1
  +질금거리다:동:1
  +질기다:형:22
  +질기디질기다:형:1
  +질깃질깃하다:형:1
  +질끈:부:4
  +질다:형:6
  +질량:명:35
  +질러대다:동:1
  +질료:명:1
  +질리다:동:40
  +질문:명:200
  +질문거리:명:2
  +질문받다:동:2
  +질문벽:명:1
  +질문지:명:3
  +질문하다:동:22
  +질박하다:형:3
  +질벅거리다:동:1
  +질병:명:64
  +질산:명:2
  +질산성:명:1
  +질산염:명:6
  +질색:명:3
  +질서:명:353
  +질서화:명:3
  +질소:명:16
  +질시:명:1
  +질시:명:2
  +질식:명:3
  +질식사:명:1
  +질식시키다:동:4
  +질식하다:동:9
  +질의:명:12
  +질의서:명:3
  +질의하다:동:1
  +질적:관:35
  +질적:명:38
  +질정:명:2
  +질주:명:5
  +질주력:명:1
  +질주범:명:1
  +질주하다:동:12
  +질질:부:10
  +질질:부:4
  +질책:명:10
  +질책하다:동:4
  +질척거리다:동:2
  +질척이다:동:1
  +질척해지다:동:1
  +질컥하다:형:1
  +질타하다:동:4
  +질탕하다:형:1
  +질투:명:23
  +질투심:명:4
  +질투하다:동:3
  +질퍽하다:형:1
  +질펀하다:형:4
  +질펀히:부:2
  +질풍:명:1
  +질풍노도:명:1
  +질화로:명:1
  +질환:명:104
  +질환자:명:23
  +짊어지다:동:26
  +짐:명:85
  +짐꾼:명:4
  +짐바리:명:2
  +짐수레:명:1
  +짐스럽다:형:2
  +짐승:명:87
  +짐승스럽다:형:1
  +짐작:명:34
  +짐작되다:동:22
  +짐작하다:동:70
  +짐짓:부:10
  +짐차:명:1
  +짐카나:명:1
  +짐칸:명:6
  +집:명:1
  +집:명:2,457
  +집:의:8
  +집가:명:1
  +집값:명:3
  +집게:명:8
  +집게발:명:2
  +집게손가락:명:6
  +집결:명:5
  +집결되다:동:1
  +집결시키다:동:1
  +집결지:명:1
  +집결하다:동:4
  +집계:명:8
  +집계되다:동:16
  +집계하다:동:4
  +집구석:명:10
  +집권:명:51
  +집권:명:61
  +집권기:명:8
  +집권당:명:19
  +집권력:명:1
  +집권자:명:4
  +집권적:관:27
  +집권적:명:7
  +집권제:명:1
  +집권층:명:7
  +집권하다:동:14
  +집권화:명:9
  +집권화되다:동:3
  +집기:명:2
  +집기병:명:2
  +집념:명:11
  +집다:동:128
  +집단:명:385
  +집단무:명:1
  +집단의식:명:2
  +집단적:관:29
  +집단적:명:40
  +집단주의:명:2
  +집단행동:명:4
  +집단화:명:1
  +집단화되다:동:2
  +집단화하다:동:2
  +집대성:명:1
  +집대성되다:동:3
  +집대성하다:동:2
  +집도:명:3
  +집들이:명:4
  +집무:명:3
  +집무실:명:15
  +집무하다:동:1
  +집박쥐:명:1
  +집사:명:8
  +집사람:명:9
  +집사부:명:2
  +집성제:명:3
  +집성촌:명:2
  +집성하다:동:1
  +집세:명:5
  +집수리:명:1
  +집수리하다:동:1
  +집시:명:3
  +집안:명:190
  +집안사람:명:2
  +집안싸움:명:1
  +집안일:명:43
  +집약:명:1
  +집약되다:동:12
  +집약적:명:4
  +집약하다:동:4
  +집약형:명:2
  +집어:명:1
  +집어내다:동:6
  +집어넣다:동:61
  +집어던지다:동:4
  +집어등:명:8
  +집어먹다:동:6
  +집어삼키다:동:2
  +집어치우다:동:6
  +집요하다:형:20
  +집일:명:1
  +집임자:명:1
  +집장사령:명:1
  +집적:명:9
  +집적거리다:동:4
  +집적대다:동:2
  +집적도:명:1
  +집적되다:동:2
  +집전:명:1
  +집전하다:동:2
  +집점:명:1
  +집정관:명:2
  +집정부제:명:1
  +집주인:명:11
  +집중:명:1
  +집중:명:97
  +집중되다:동:65
  +집중력:명:15
  +집중률:명:2
  +집중시키다:동:12
  +집중적:관:3
  +집중적:명:42
  +집중제:명:1
  +집중하다:동:17
  +집중화:명:2
  +집중화되다:동:2
  +집진기:명:1
  +집집:명:13
  +집집이:부:2
  +집짓기:명:1
  +집착:명:50
  +집착하다:동:42
  +집채:명:5
  +집총:명:1
  +집터:명:13
  +집필:명:12
  +집필실:명:1
  +집필자:명:3
  +집필하다:동:10
  +집하:명:3
  +집하장:명:1
  +집합:명:10
  +집합소:명:1
  +집합시키다:동:1
  +집합적:관:2
  +집합적:명:2
  +집합주의:명:1
  +집합체:명:3
  +집행:명:74
  +집행당하다:동:1
  +집행되다:동:10
  +집행령:명:1
  +집행부:명:5
  +집행자:명:1
  +집행하다:동:26
  +집회:명:60
  +집히다:동:4
  +짓:명:150
  +짓거리:명:10
  +짓고땡:명:4
  +짓궂다:형:12
  +짓누르다:동:15
  +짓눌려지다:동:1
  +짓눌리다:동:4
  +짓다:동:790
  +짓물러지다:동:1
  +짓뭉개다:동:6
  +짓뭉겨지다:동:1
  +짓밟다:동:13
  +짓밟히다:동:6
  +짓씹다:동:1
  +짓어지다:동:1
  +짓이겨지다:동:1
  +짓이기다:동:4
  +짓찧다:동:2
  +징:명:3
  +징검다리:명:16
  +징계:명:23
  +징계받다:동:2
  +징계자:명:1
  +징계하다:동:4
  +징그럽다:형:12
  +징글징글하다:형:1
  +징발:명:2
  +징발하다:동:1
  +징벌:명:2
  +징벌하다:동:2
  +징병:명:5
  +징세:명:1
  +징세권:명:1
  +징수:명:11
  +징수되다:동:1
  +징수부:명:1
  +징수액:명:3
  +징수하다:동:5
  +징역:명:27
  +징역살이:명:1
  +징역형:명:4
  +징용:명:8
  +징용당하다:동:1
  +징용되다:동:2
  +징용자:명:2
  +징조:명:5
  +징집:명:10
  +징집당하다:동:1
  +징징:부:1
  +징치:명:1
  +징크스:명:6
  +징표:명:5
  +징하다:형:3
  +징후:명:18
  +짖다:동:17
  +짙다:형:87
  +짙어지다:동:2
  +짙푸르다:형:1
  +짚:명:12
  +짚다:동:71
  +짚단:명:2
  +짚신:명:4
  +짚이다:동:4
  +짜깁기:명:1
  +짜내다:동:11
  +짜다:동:37
  +짜다:동:64
  +짜다:형:17
  +짜디짜다:형:2
  +짜르르:부:1
  +짜르르하다:형:1
  +짜릿하다:형:19
  +짜샤:감:3
  +짜여지다:동:14
  +짜이다:동:10
  +짜임:명:6
  +짜임새:명:16
  +짜잔:감:1
  +짜증:명:55
  +짜증스러워지다:동:1
  +짜증스럽다:형:17
  +짜치다:동:1
  +짜하다:형:2
  +짝:명:140
  +짝:부:2
  +짝:부:2
  +짝:의:2
  +짝꿍:명:3
  +짝눈:명:1
  +짝사랑:명:3
  +짝사랑하다:동:2
  +짝수:명:6
  +짝수일:명:1
  +짝짓기:명:2
  +짝짓다:명:1
  +짝짜꿍:명:1
  +짝짝:부:1
  +짝짝:부:1
  +짝짝:부:3
  +짝짝이:명:1
  +짝하다:동:1
  +짠:부:1
  +짠밥:명:4
  +짠순이:명:4
  +짠하다:형:3
  +짤끔:부:2
  +짤록:부:1
  +짤막짤막:부:1
  +짤막하다:형:22
  +짤짤이:명:1
  +짧다:형:260
  +짧아지다:동:22
  +짬:명:8
  +짬밥:명:2
  +짬뽕:명:4
  +짬짬이:부:3
  +짭조름하다:형:2
  +짭짤:명:1
  +짭짤하다:형:7
  +짭짭:부:2
  +짱:명:1
  +짱:부:1
  +짱구:명:6
  +짱짱하다:형:2
  +째깍거리다:동:2
  +째려보다:동:8
  +째리다:동:2
  +째보:명:1
  +째어지다:동:1
  +째지다:동:1
  +째째하다:형:1
  +짹짹:부:5
  +짹짹거리다:동:1
  +쨈:명:2
  +쨍그랑:부:1
  +쨍그랑하다:동:2
  +쨍쨍:부:3
  +쨍쨍하다:형:1
  +쩌렁쩌렁:부:1
  +쩌렁쩌렁하다:형:3
  +쩌르르:부:1
  +쩌릿해지다:동:1
  +쩌벅거리다:동:1
  +쩍:부:2
  +쩍쩍:부:1
  +쩍쩍:부:3
  +쩍쩍거리다:동:2
  +쩔꺽쩔꺽:부:1
  +쩔렁쩔렁:부:1
  +쩔레쩔레:부:1
  +쩔쩔:부:2
  +쩔쩔매다:동:15
  +쩝쩝:부:4
  +쩡쩡:부:1
  +쩡쩡거리다:동:1
  +쩨쩨하다:형:4
  +쪼가리:명:5
  +쪼가리쪼가리:명:1
  +쪼각:명:1
  +쪼개다:동:18
  +쪼개어지다:동:2
  +쪼개지다:동:1
  +쪼그리다:동:23
  +쪼그맣다:형:4
  +쪼글쪼글:부:1
  +쪼글쪼글하다:형:1
  +쪼금:명:6
  +쪼금:부:10
  +쪼까:명:1
  +쪼까:부:4
  +쪼깐:명:1
  +쪼깨:부:2
  +쪼끄마하다:형:1
  +쪼끄맣다:형:4
  +쪼끔:명:5
  +쪼끔:부:5
  +쪼다:동:11
  +쪼들리다:동:8
  +쪼르르:부:4
  +쪼르륵:부:2
  +쪼이다:동:3
  +쪼작쪼작:부:1
  +쪼잔하다:형:2
  +쪽:명:29
  +쪽:명:4
  +쪽:명:4
  +쪽:부:5
  +쪽:의:23
  +쪽:의:841
  +쪽문:명:5
  +쪽박:명:11
  +쪽방:명:1
  +쪽빛:명:8
  +쪽수:명:1
  +쪽이불:명:1
  +쪽지:명:23
  +쪽쪽:부:1
  +쪽팔리다:동:6
  +쫀드기:명:2
  +쫀득쫀득:부:2
  +쫀득쫀득하다:형:1
  +쫄깃쫄깃:부:1
  +쫄깃쫄깃하다:형:4
  +쫄깃하다:형:1
  +쫄따구:명:1
  +쫄쫄:부:1
  +쫄쫄:부:2
  +쫄쫄거리다:동:1
  +쫄쫄이:명:1
  +쫑그리다:동:1
  +쫑긋:부:2
  +쫑긋거리다:동:2
  +쫑알거리다:동:2
  +쫓겨나다:동:34
  +쫓기다:동:56
  +쫓다:동:67
  +쫓아가다:동:13
  +쫓아내다:동:10
  +쫓아다니다:동:12
  +쫓아오다:동:9
  +쫙:부:5
  +쫙쫙:부:1
  +쬐끔:부:2
  +쬐다:동:10
  +쬐이다:동:1
  +쭈그리다:동:21
  +쭈글쭈글:부:1
  +쭈글쭈글하다:형:1
  +쭈글쭈글해지다:동:1
  +쭈르르:부:4
  +쭈볏쭈볏:부:1
  +쭈빗쭈빗하다:동:1
  +쭈뼛거리다:동:1
  +쭈뼛쭈뼛하다:형:1
  +쭈뼛하다:형:1
  +쭈뼛해지다:동:1
  +쭈쭈바:명:1
  +쭉:부:56
  +쭉정이:명:1
  +쭉쭉:부:3
  +쭝긋쭝긋:부:1
  +쯧쯧:부:17
  +쯧쯧거리다:동:1
  +찌:명:2
  +찌개:명:26
  +찌그러뜨리다:동:3
  +찌그러지다:동:13
  +찌그리다:동:1
  +찌꺼기:명:36
  +찌끄럭지:명:1
  +찌다:동:22
  +찌다:동:23
  +찌다:동:3
  +찌들다:동:13
  +찌들리다:동:1
  +찌들어지다:동:1
  +찌르다:동:80
  +찌르레기:명:1
  +찌르르:부:1
  +찌르릉:부:3
  +찌릿찌릿:부:1
  +찌뿌듯하다:형:1
  +찌직찌직:부:1
  +찌찌:명:2
  +찌푸리다:동:33
  +찍:부:1
  +찍다:동:10
  +찍다:동:194
  +찍소리:명:2
  +찍찍:부:1
  +찍혀지다:동:1
  +찍히다:동:39
  +찍히다:동:6
  +찐득하다:형:1
  +찐보리:명:1
  +찔금찔금:부:2
  +찔꺽거리다:동:2
  +찔끔:부:4
  +찔끔:부:6
  +찔끔거려지다:동:1
  +찔끔거리다:동:2
  +찔끔대다:동:1
  +찔끔찔끔:부:1
  +찔끔하다:동:2
  +찔레:명:2
  +찔레꽃:명:5
  +찔리다:동:13
  +찜:명:1
  +찜질:명:5
  +찜질하다:동:1
  +찜찜하다:형:10
  +찜통:명:6
  +찜통더위:명:1
  +찝쩍거리다:동:3
  +찝찔하다:형:2
  +찝찝하다:형:2
  +찡:부:1
  +찡그리다:동:16
  +찡긋거리다:동:1
  +찡긋하다:동:4
  +찡기다:동:1
  +찡등그리다:동:1
  +찡하다:형:7
  +찡해지다:동:1
  +찢겨지다:동:4
  +찢기다:동:9
  +찢다:동:34
  +찢어뜨리다:동:1
  +찢어지다:동:41
  +찧다:동:10
  +차:명:481
  +차:명:66
  +차:명:68
  +차:의:233
  +차가워지다:동:3
  +차감되다:동:1
  +차감하다:동:2
  +차갑다:형:106
  +차고:명:1
  +차곡차곡:부:19
  +차과로초:명:1
  +차관:명:38
  +차관:명:8
  +차관보:명:14
  +차근차근:부:12
  +차근차근히:부:3
  +차근히:부:1
  +차기:명:1
  +차기:명:39
  +차기:명:4
  +차나무:명:3
  +차남:명:23
  +차내:명:3
  +차다:동:223
  +차다:동:51
  +차다:동:98
  +차다:형:54
  +차단:명:3
  +차단당하다:동:5
  +차단되다:동:8
  +차단술:명:2
  +차단시키다:동:6
  +차단식:명:1
  +차단제:명:2
  +차단하다:동:26
  +차도:명:12
  +차도:명:3
  +차도르:명:1
  +차동식:명:1
  +차등:명:5
  +차디차다:형:3
  +차라리:부:118
  +차란차란:부:1
  +차량:명:109
  +차려:명:4
  +차려입다:동:13
  +차려지다:동:10
  +차렵저고리:명:1
  +차렷:명:3
  +차례:명:12
  +차례:명:330
  +차례용품:명:1
  +차례차례:부:9
  +차륜승:명:1
  +차르륵:부:1
  +차리다:동:165
  +차림:명:58
  +차림새:명:2
  +차마:부:44
  +차머리:명:1
  +차명:명:15
  +차별:명:83
  +차별되다:동:1
  +차별받다:동:4
  +차별상:명:5
  +차별성:명:22
  +차별적:관:5
  +차별적:명:7
  +차별주의:명:4
  +차별하다:동:6
  +차별화:명:13
  +차별화되다:동:6
  +차별화시키다:동:5
  +차별화하다:동:4
  +차분:의:3
  +차분하다:형:40
  +차분해지다:동:1
  +차분히:부:8
  +차비:명:12
  +차비:명:2
  +차석:명:1
  +차선:명:3
  +차선:명:32
  +차선책:명:2
  +차세대:명:12
  +차수:명:3
  +차순위자:명:1
  +차안:명:1
  +차액:명:3
  +차양:명:3
  +차오르다:동:20
  +차올리다:동:3
  +차용:명:2
  +차원:명:300
  +차율:명:2
  +차이:명:383
  +차이다:동:6
  +차이성:명:1
  +차이점:명:40
  +차익:명:2
  +차일:명:1
  +차일피일:부:4
  +차임:명:2
  +차임벨:명:9
  +차입:명:4
  +차입금:명:4
  +차입액:명:1
  +차입하다:동:2
  +차자:명:1
  +차장:명:6
  +차장:명:72
  +차장보:명:2
  +차장직:명:1
  +차전:의:57
  +차전놀이:명:2
  +차전자:명:1
  +차전초:명:1
  +차점:명:1
  +차점자:명:5
  +차점작:명:1
  +차정되다:동:1
  +차제:명:7
  +차조:명:3
  +차종:명:5
  +차지:명:1
  +차지:명:15
  +차지다:동:1
  +차지다:형:3
  +차지되다:동:1
  +차지하다:동:241
  +차질:명:18
  +차차:부:21
  +차차로:부:1
  +차차차:명:5
  +차창:명:31
  +차체:명:6
  +차출:명:2
  +차출되다:동:3
  +차출하다:동:1
  +차츰:부:57
  +차츰차츰:부:7
  +차치하다:동:8
  +차트:명:4
  +차폭:명:1
  +차표:명:3
  +차후:명:11
  +착:부:2
  +착:부:2
  +착:부:2
  +착:부:4
  +착각:명:45
  +착각되다:동:1
  +착각착각:부:1
  +착각하다:동:32
  +착공:명:10
  +착공되다:동:4
  +착공하다:동:7
  +착관:명:1
  +착근:명:1
  +착란:명:3
  +착란적:명:1
  +착륙:명:11
  +착륙시키다:동:1
  +착륙하다:동:6
  +착목하다:동:1
  +착복:명:1
  +착복하다:동:3
  +착상:명:2
  +착상:명:7
  +착상하다:동:2
  +착색되다:동:1
  +착색제:명:1
  +착석:명:1
  +착석하다:동:1
  +착수:명:1
  +착수:명:10
  +착수하다:동:36
  +착실:명:2
  +착실하다:형:12
  +착실해지다:동:2
  +착실히:부:8
  +착안:명:1
  +착안되다:동:1
  +착안하다:동:13
  +착오:명:6
  +착용:명:8
  +착용되다:동:4
  +착용자:명:2
  +착용하다:동:19
  +착잡:명:2
  +착잡하다:형:32
  +착잡해지다:동:19
  +착잡해하다:동:2
  +착지:명:4
  +착지하다:동:4
  +착착:부:1
  +착취:명:21
  +착취당하다:동:2
  +착취자:명:4
  +착취하다:동:7
  +착하다:형:146
  +찬:명:2
  +찬거리:명:2
  +찬동:명:1
  +찬동하다:동:4
  +찬란하다:형:40
  +찬란히:부:1
  +찬물:명:40
  +찬미:명:1
  +찬미받다:동:1
  +찬미하다:동:1
  +찬바람:명:11
  +찬반:명:10
  +찬반양론:명:4
  +찬밥:명:10
  +찬사:명:11
  +찬성:명:16
  +찬성하다:동:20
  +찬송가:명:3
  +찬스:명:10
  +찬식기:명:1
  +찬양:명:3
  +찬양받다:동:1
  +찬양하다:동:3
  +찬연하다:형:2
  +찬연히:부:1
  +찬염전:명:1
  +찬장:명:4
  +찬조:명:4
  +찬찬하다:형:1
  +찬찬히:부:11
  +찬찬히:부:2
  +찬탄:명:5
  +찬탈:명:1
  +찬탈하다:동:1
  +찬합:명:3
  +찰거머리:명:1
  +찰기:명:7
  +찰나:명:7
  +찰나적:명:1
  +찰떡:명:5
  +찰떡궁합:명:4
  +찰랑거리다:동:3
  +찰랑찰랑:부:1
  +찰박찰박:부:1
  +찰브락거리다:동:7
  +찰수수:명:1
  +찰싹:부:7
  +찰카닥:부:1
  +찰칵:부:3
  +찰칵거리다:동:1
  +찰흙:명:9
  +참:감:124
  +참:명:10
  +참:부:347
  +참:의:37
  +참가:명:46
  +참가비:명:3
  +참가인:명:3
  +참가자:명:11
  +참가작:명:2
  +참가하다:동:88
  +참개암나무:명:3
  +참견:명:1
  +참견하다:동:6
  +참고:명:27
  +참고서:명:9
  +참고인:명:6
  +참고하다:동:19
  +참관:명:2
  +참관인:명:2
  +참관인단:명:1
  +참관자:명:1
  +참관하다:동:9
  +참교육:명:2
  +참구하다:동:1
  +참극:명:1
  +참기름:명:75
  +참길:명:1
  +참깨:명:6
  +참나리:명:2
  +참나무:명:31
  +참나무통:명:1
  +참다:동:214
  +참다못하다:동:8
  +참담:명:1
  +참담하다:형:18
  +참담해하다:동:1
  +참답다:형:27
  +참당귀:명:1
  +참되다:형:42
  +참뜻:명:6
  +참례:명:1
  +참례하다:동:1
  +참말:명:1
  +참말:부:5
  +참말로:부:11
  +참맛:명:1
  +참모:명:20
  +참모부:명:1
  +참모습:명:8
  +참모장:명:1
  +참방이:명:1
  +참배:명:1
  +참배:명:13
  +참배객:명:1
  +참배나무:명:1
  +참배하다:동:7
  +참변:명:3
  +참본성:명:5
  +참봉:명:2
  +참붕어:명:3
  +참빗:명:1
  +참빗살나무:명:1
  +참사:명:10
  +참사관:명:2
  +참사랑:명:4
  +참살구:명:1
  +참삶:명:1
  +참상:명:6
  +참새:명:114
  +참새귀리:명:1
  +참석:명:20
  +참석시키다:동:3
  +참석자:명:25
  +참석하다:동:112
  +참선:명:8
  +참선하다:동:1
  +참소리:명:1
  +참신성:명:5
  +참신하다:형:33
  +참아지다:동:1
  +참아하다:동:1
  +참억새:명:1
  +참여:명:138
  +참여권:명:3
  +참여도:명:7
  +참여시키다:동:10
  +참여율:명:2
  +참여적:명:1
  +참여하다:동:188
  +참예하다:동:1
  +참외:명:35
  +참으로:부:140
  +참을성:명:4
  +참의원:명:2
  +참작:명:4
  +참작되다:동:1
  +참작론:명:1
  +참작하다:동:4
  +참전:명:9
  +참전국:명:1
  +참전자:명:1
  +참정:명:1
  +참정권:명:9
  +참조:명:44
  +참조적:명:1
  +참조하다:동:8
  +참주:명:2
  +참주인:명:2
  +참주제:명:3
  +참취:명:2
  +참치:명:15
  +참판:명:5
  +참패:명:5
  +참패하다:동:3
  +참피나무:명:1
  +참하다:형:3
  +참행동:명:1
  +참호:명:2
  +참혹하다:형:9
  +참혹해지다:동:1
  +참화:명:3
  +참회:명:4
  +참회하다:동:1
  +참회하다:동:2
  +찹쌀:명:21
  +찹쌀가루:명:8
  +찹쌀떡:명:3
  +찻간:명:1
  +찻값:명:7
  +찻길:명:7
  +찻물:명:2
  +찻상:명:3
  +찻숟갈:명:1
  +찻잔:명:19
  +찻주전자:명:1
  +찻집:명:7
  +창:명:20
  +창:명:4
  +창:명:45
  +창가:명:27
  +창가:명:4
  +창간:명:10
  +창간되다:동:3
  +창간사:명:1
  +창간하다:동:5
  +창간호:명:3
  +창건:명:3
  +창건되다:동:2
  +창건일:명:1
  +창건하다:동:3
  +창검:명:1
  +창고:명:59
  +창고업:명:2
  +창공:명:4
  +창구:명:25
  +창군:명:1
  +창기:명:1
  +창끝:명:3
  +창녀:명:11
  +창단:명:15
  +창단되다:동:1
  +창단하다:동:5
  +창달:명:9
  +창달되다:동:1
  +창당:명:16
  +창당하다:동:1
  +창대:명:4
  +창던지기:명:3
  +창도하다:동:1
  +창립:명:19
  +창립되다:동:7
  +창립하다:동:3
  +창만:명:1
  +창문:명:108
  +창문턱:명:1
  +창문틀:명:1
  +창밖:명:87
  +창백하다:형:11
  +창백해지다:동:3
  +창사:명:1
  +창살:명:3
  +창생:명:1
  +창설:명:20
  +창설되다:동:7
  +창설하다:동:4
  +창시:명:1
  +창시자:명:8
  +창시하다:동:2
  +창씨개명:명:1
  +창안:명:1
  +창안자:명:1
  +창안하다:동:7
  +창알머리:명:2
  +창업:명:17
  +창업자:명:2
  +창업주:명:8
  +창업주적:관:1
  +창업하다:동:3
  +창유리:명:11
  +창의:명:1
  +창의:명:10
  +창의:명:5
  +창의력:명:7
  +창의성:명:9
  +창의적:관:2
  +창의적:명:9
  +창자:명:5
  +창작:명:51
  +창작가:명:1
  +창작극:명:71
  +창작되다:동:7
  +창작물:명:3
  +창작성:명:2
  +창작실:명:1
  +창작열:명:1
  +창작자:명:4
  +창작집:명:2
  +창작품:명:2
  +창작하다:동:14
  +창장:명:3
  +창제되다:동:2
  +창제하다:동:3
  +창조:명:76
  +창조되다:동:6
  +창조력:명:9
  +창조론:명:2
  +창조물:명:1
  +창조성:명:11
  +창조자:명:11
  +창조적:관:44
  +창조적:명:65
  +창조주:명:2
  +창조하다:동:58
  +창창하다:형:1
  +창출:명:20
  +창출되다:동:9
  +창출시키다:동:1
  +창출하다:동:39
  +창턱:명:6
  +창틀:명:17
  +창피:명:4
  +창피스럽다:형:3
  +창피하다:형:28
  +창피해지다:동:1
  +창해:명:1
  +창호:명:1
  +창호지:명:3
  +찾다:동:1,006
  +찾아가다:동:161
  +찾아내다:동:93
  +찾아내어지다:동:1
  +찾아다니다:동:29
  +찾아들다:동:16
  +찾아보다:동:206
  +찾아뵈다:동:1
  +찾아뵙다:동:12
  +찾아오다:동:219
  +찾아지다:동:15
  +채:명:1
  +채:명:1
  +채:명:3
  +채:명:36
  +채:부:59
  +채:의:37
  +채:의:690
  +채광:명:1
  +채굴되다:동:1
  +채굴하다:동:2
  +채권:명:32
  +채권단:명:1
  +채근:명:2
  +채근하다:동:1
  +채금:명:1
  +채끝:명:2
  +채널:명:34
  +채다:동:32
  +채다:동:9
  +채도:명:2
  +채뜨리다:동:1
  +채무:명:7
  +채비:명:16
  +채비하다:동:2
  +채산제:명:1
  +채색:명:7
  +채색하다:동:6
  +채색화:명:1
  +채석:명:1
  +채석장:명:3
  +채소:명:68
  +채소밭:명:1
  +채식:명:2
  +채신머리:명:1
  +채신머리없다:형:1
  +채신없다:형:1
  +채용:명:13
  +채용되다:동:4
  +채용하다:동:19
  +채우다:동:126
  +채우다:동:7
  +채우다:동:8
  +채워지다:동:17
  +채이다:동:2
  +채전:명:1
  +채점:명:23
  +채점하다:동:6
  +채집:명:3
  +채집되다:동:2
  +채집하다:동:5
  +채찍:명:10
  +채찍질:명:1
  +채취:명:7
  +채취군:명:2
  +채취선:명:3
  +채취자:명:1
  +채취하다:동:5
  +채탄:명:2
  +채택:명:17
  +채택되다:동:31
  +채택료:명:10
  +채택료율:명:1
  +채택하다:동:60
  +채플:명:2
  +채함:명:1
  +채혈:명:1
  +채화되다:동:1
  +책:명:886
  +책가방:명:22
  +책갈피:명:1
  +책값:명:7
  +책거리:명:3
  +책걸상:명:2
  +책걸이:명:1
  +책꽂이:명:4
  +책더미:명:1
  +책략:명:3
  +책망:명:2
  +책망하다:동:1
  +책머리:명:7
  +책무:명:7
  +책받침:명:2
  +책방:명:14
  +책보:명:13
  +책봉되다:동:1
  +책상:명:137
  +책상다리:명:2
  +책상다리하다:동:1
  +책상머리:명:5
  +책씻이:명:1
  +책임:명:286
  +책임감:명:29
  +책임량:명:1
  +책임론:명:2
  +책임성:명:2
  +책임자:명:80
  +책임제:명:2
  +책임주의:명:1
  +책임지다:동:59
  +책자:명:21
  +책장:명:5
  +책장:명:6
  +책정:명:4
  +책정권:명:3
  +책정되다:동:5
  +책정하다:동:12
  +챌린저:명:1
  +챔프:명:4
  +챔프전:명:1
  +챔피언:명:30
  +챔피언십:명:1
  +챕터:명:1
  +챙기다:동:153
  +처:명:14
  +처:명:2
  +처가:명:6
  +처갓집:명:2
  +처결하다:동:1
  +처남:명:8
  +처넣다:동:5
  +처녀:명:84
  +처녀성:명:1
  +처녀자리:명:2
  +처녀좌:명:1
  +처단:명:1
  +처단받다:동:2
  +처량하다:형:11
  +처리:명:196
  +처리기:명:1
  +처리되다:동:24
  +처리비:명:1
  +처리업:명:2
  +처리장:명:15
  +처리하다:동:133
  +처마:명:26
  +처마시다:동:1
  +처매다:동:1
  +처먹다:동:5
  +처묵다:동:2
  +처바르다:동:1
  +처박다:동:7
  +처박히다:동:8
  +처방:명:22
  +처방받다:동:1
  +처방전:명:1
  +처방하다:동:3
  +처벌:명:74
  +처벌당하다:동:1
  +처벌되다:동:5
  +처벌받다:동:2
  +처벌시키다:동:2
  +처벌하다:동:26
  +처분:명:68
  +처분되다:동:4
  +처분장:명:1
  +처분하다:동:22
  +처사:명:23
  +처서:명:2
  +처세:명:1
  +처세술:명:1
  +처신:명:8
  +처신하다:동:5
  +처연하다:형:9
  +처용무:명:2
  +처우:명:7
  +처우제:명:1
  +처우하다:동:1
  +처음:명:1,029
  +처자:명:4
  +처자식:명:7
  +처장:명:10
  +처절하다:형:12
  +처절하다:형:2
  +처제:명:5
  +처지:명:103
  +처지다:동:23
  +처참:명:1
  +처참하다:형:6
  +처첩:명:2
  +처치:명:1
  +처치:명:19
  +처치실:명:2
  +처치하다:동:3
  +처하다:동:60
  +처해지다:동:3
  +처형:명:3
  +처형당하다:동:1
  +처형되다:동:1
  +처형하다:동:1
  +척:부:4
  +척:부:6
  +척:의:38
  +척:의:47
  +척결:명:30
  +척결하다:동:7
  +척도:명:19
  +척박하다:형:10
  +척박해지다:동:1
  +척불론:명:1
  +척사론:명:1
  +척수:명:6
  +척척:부:1
  +척척:부:8
  +척척하다:형:1
  +척추:명:36
  +척추관:명:1
  +척하다:보:60
  +척후병:명:1
  +천:관:67
  +천:명:2
  +천:명:50
  +천:명:8
  +천:수:4
  +천거하다:동:1
  +천고:명:2
  +천고마비:명:1
  +천공:명:1
  +천공:명:13
  +천구:명:3
  +천구백구십:관:1
  +천구백구십구:관:1
  +천구백구십일:관:2
  +천구백오십삼:관:1
  +천구백육십:관:2
  +천구백육십삼:관:1
  +천구백팔십:관:4
  +천구백팔십육:관:1
  +천구백팔십이:관:1
  +천국:명:22
  +천군:명:7
  +천군만마:명:1
  +천근만근:명:2
  +천금:명:1
  +천길만길:명:1
  +천남성:명:3
  +천년만년:명:1
  +천당:명:3
  +천대:명:4
  +천대받다:동:5
  +천대하다:동:2
  +천덕꾸러기:명:2
  +천도:명:11
  +천도:명:13
  +천도론:명:1
  +천도하다:동:3
  +천동설:명:2
  +천둥:명:11
  +천둥소리:명:7
  +천렵:명:1
  +천륜:명:1
  +천리:명:1
  +천마:명:1
  +천막:명:12
  +천막생활:명:1
  +천막집:명:1
  +천막촌:명:3
  +천만:관:13
  +천만:명:5
  +천만:부:3
  +천만:수:1
  +천만금:명:1
  +천만년:명:1
  +천만다행:명:6
  +천만다행하다:형:1
  +천만뜻밖:명:1
  +천만리:명:1
  +천만세:명:1
  +천만에:감:10
  +천명:명:4
  +천명:명:4
  +천명되다:동:2
  +천명론:명:1
  +천명민본론:명:3
  +천명하다:동:17
  +천문:명:10
  +천문대:명:9
  +천문학:명:13
  +천문학계:명:1
  +천문학자:명:15
  +천문학적:관:2
  +천문학적:명:2
  +천민:명:1
  +천민:명:7
  +천민적:명:2
  +천박스럽다:형:1
  +천박하다:형:12
  +천방지축:부:1
  +천백:명:1
  +천백이십육:관:1
  +천벌:명:2
  +천변만화하다:동:1
  +천부인:명:1
  +천부적:관:1
  +천부적:명:5
  +천분:명:1
  +천사:명:13
  +천사표:명:1
  +천삼백:관:1
  +천상:명:10
  +천상계:명:5
  +천생:부:3
  +천생연분:명:2
  +천석꾼:명:3
  +천성:명:6
  +천성적:명:2
  +천세:명:2
  +천손:명:4
  +천수:명:1
  +천시:명:5
  +천시관:명:1
  +천시되다:동:1
  +천시하다:동:8
  +천식:명:1
  +천신:명:23
  +천신만고:명:3
  +천신족:명:1
  +천안:명:4
  +천양지판:명:1
  +천억:관:3
  +천억:수:3
  +천연:명:65
  +천연가스:명:1
  +천연기념물:명:8
  +천연기념물적:명:1
  +천연덕스럽다:형:4
  +천연두:명:2
  +천연색:명:6
  +천연성:명:2
  +천연스럽다:형:1
  +천연자원:명:4
  +천염:명:1
  +천오백:관:1
  +천오백:수:1
  +천왕:명:1
  +천운:명:1
  +천위:명:1
  +천의:명:1
  +천의무봉하다:형:1
  +천인합일:명:2
  +천인합일설:명:1
  +천일:명:1
  +천일제염업:명:3
  +천자:명:1
  +천장:명:65
  +천재:명:1
  +천재:명:17
  +천재성:명:2
  +천재일우:명:1
  +천재적:관:2
  +천재적:명:2
  +천재지변:명:5
  +천적:명:1
  +천적:명:1
  +천정부지:명:4
  +천제:명:4
  +천제단:명:2
  +천조대신:명:3
  +천주교:명:8
  +천주학:명:2
  +천즉리:명:1
  +천지:명:56
  +천지개벽:명:2
  +천지신:명:8
  +천지인:명:1
  +천지조화:명:2
  +천직:명:3
  +천진난만하다:형:2
  +천진난만해지다:동:1
  +천진무구:명:1
  +천진스럽다:형:2
  +천진하다:형:2
  +천차만별:명:5
  +천착:명:1
  +천착하다:동:3
  +천창창하다:형:1
  +천천하다:형:2
  +천천히:부:135
  +천체:명:26
  +천체계:명:1
  +천체관:명:1
  +천촌만락:명:1
  +천추:명:1
  +천측하다:동:1
  +천치:명:1
  +천칭자리:명:1
  +천칭좌:명:1
  +천태종:명:29
  +천편일률:명:1
  +천편일률적:명:3
  +천평:명:2
  +천품:명:1
  +천하:명:35
  +천하다:형:7
  +천하무적:명:2
  +천하에:감:4
  +천하장사:명:2
  +천하제일:명:1
  +천하지대본:명:2
  +천하태평:명:1
  +천혜:명:3
  +천황:명:2
  +천히:부:1
  +철:명:15
  +철:명:38
  +철:명:39
  +철가방:명:1
  +철갑:명:1
  +철갑상어:명:1
  +철강:명:26
  +철강재:명:1
  +철거:명:16
  +철거당하다:동:1
  +철거덩거리다:동:2
  +철거되다:동:4
  +철거반원:명:2
  +철거식:명:1
  +철거하다:동:13
  +철골:명:2
  +철광산:명:1
  +철광석:명:7
  +철교:명:4
  +철군:명:3
  +철권:명:2
  +철근:명:3
  +철금:명:3
  +철기:명:28
  +철기병:명:2
  +철길:명:10
  +철꺽거리다:동:1
  +철도:명:40
  +철도망:명:1
  +철도역:명:2
  +철두철미:부:3
  +철두철미하다:형:2
  +철들다:동:4
  +철딱서니:명:4
  +철렁:부:5
  +철렁하다:동:5
  +철로:명:5
  +철릭:명:6
  +철마:명:1
  +철망:명:6
  +철면피:명:1
  +철모:명:1
  +철모르다:동:3
  +철물:명:1
  +철버덕거리다:동:4
  +철벽:명:3
  +철봉:명:19
  +철부지:명:22
  +철분:명:5
  +철사:명:16
  +철새:명:8
  +철석같다:형:1
  +철석같이:부:4
  +철선:명:1
  +철선:명:2
  +철수:명:27
  +철수되다:동:1
  +철수시키다:동:6
  +철수하다:동:22
  +철썩:부:3
  +철썩거리다:동:1
  +철야:명:8
  +철없다:형:13
  +철없이:부:1
  +철옹성:명:3
  +철인:명:1
  +철자:명:2
  +철자법:명:2
  +철재:명:4
  +철저:명:4
  +철저성:명:1
  +철저하다:형:106
  +철저히:부:62
  +철제:명:23
  +철조:명:1
  +철조망:명:14
  +철쭉:명:3
  +철쭉꽃:명:1
  +철창:명:8
  +철창문:명:1
  +철책:명:8
  +철철:부:6
  +철칙:명:1
  +철침:명:1
  +철컥:부:1
  +철탑:명:5
  +철통같다:형:2
  +철퇴:명:1
  +철퇴:명:2
  +철판:명:16
  +철퍼덕:부:2
  +철폐:명:14
  +철폐되다:동:2
  +철폐하다:동:10
  +철학:명:144
  +철학가:명:1
  +철학계:명:1
  +철학과:명:8
  +철학도:명:1
  +철학사:명:3
  +철학자:명:41
  +철학적:관:41
  +철학적:명:19
  +철학화하다:동:1
  +철회:명:24
  +철회되다:동:4
  +철회하다:동:19
  +첨:명:11
  +첨가:명:1
  +첨가되다:동:3
  +첨가물:명:3
  +첨가시키다:동:1
  +첨가하다:동:8
  +첨단:명:68
  +첨단적:명:1
  +첨벙:부:2
  +첨벙첨벙:부:1
  +첨병:명:2
  +첨부되다:동:4
  +첨부하다:동:1
  +첨삭:명:1
  +첨삭되다:동:1
  +첨언:명:1
  +첨언하다:동:1
  +첨예하다:형:13
  +첨예화되다:동:4
  +첨예화하다:동:2
  +첨지:명:7
  +첨치:명:1
  +첨탑:명:2
  +첩:명:4
  +첩:의:1
  +첩:의:2
  +첩경:명:8
  +첩보:명:4
  +첩보전:명:1
  +첩자:명:1
  +첩첩:부:1
  +첩첩산중:명:1
  +첩첩하다:형:1
  +첫:관:325
  +첫걸음:명:9
  +첫날:명:55
  +첫날밤:명:14
  +첫눈:명:2
  +첫눈:명:7
  +첫닭:명:1
  +첫대바기:명:1
  +첫돌:명:2
  +첫딸:명:1
  +첫마디:명:3
  +첫머리:명:12
  +첫발:명:7
  +첫사랑:명:14
  +첫새벽:명:3
  +첫서리:명:1
  +첫선:명:6
  +첫술:명:5
  +첫아이:명:1
  +첫애:명:3
  +첫얼음:명:1
  +첫인사:명:1
  +첫인상:명:3
  +첫정:명:1
  +첫째:관:44
  +첫째:명:6
  +첫째:수:131
  +첫째가다:동:1
  +첫째날개깃:명:1
  +첫해:명:9
  +청:명:1
  +청:명:10
  +청:명:7
  +청가시덩굴:명:2
  +청각:명:14
  +청각적:관:1
  +청개구리:명:4
  +청결:명:2
  +청결성:명:1
  +청결하다:형:5
  +청결히:부:2
  +청경:명:1
  +청경채:명:14
  +청과부:명:1
  +청구:명:37
  +청구권:명:12
  +청구권자:명:1
  +청구권적:관:1
  +청구되다:동:1
  +청구분:명:1
  +청구서:명:6
  +청구하다:동:24
  +청군:명:2
  +청금고:명:1
  +청기와:명:1
  +청년:명:96
  +청년기:명:12
  +청년부:명:1
  +청년층:명:1
  +청년회:명:2
  +청담:명:1
  +청동:명:10
  +청동기:명:25
  +청동색:명:1
  +청둥호박:명:2
  +청딱따구리:명:1
  +청띠신선나비:명:2
  +청라:명:1
  +청량감:명:1
  +청량음료:명:16
  +청량하다:형:4
  +청력:명:4
  +청렴:명:3
  +청렴결백하다:형:2
  +청렴도:명:1
  +청렴성:명:3
  +청렴하다:형:3
  +청록:명:1
  +청록색:명:7
  +청룡:명:7
  +청류객:명:1
  +청마루:명:1
  +청명:명:1
  +청명주:명:1
  +청명하다:형:2
  +청문회:명:26
  +청미래덩굴:명:1
  +청바지:명:15
  +청백색:명:1
  +청병:명:2
  +청보라색:명:1
  +청부:명:2
  +청부받다:동:1
  +청빈:명:1
  +청빈하다:형:1
  +청사:명:50
  +청사진:명:17
  +청사초롱:명:1
  +청산:명:2
  +청산:명:36
  +청산되다:동:5
  +청산주의적:명:1
  +청산하다:동:26
  +청상과부:명:3
  +청색:명:12
  +청색증:명:17
  +청설모:명:1
  +청소:명:87
  +청소과:명:1
  +청소과장:명:1
  +청소기:명:6
  +청소년:명:207
  +청소년기:명:5
  +청소년단:명:1
  +청소년층:명:2
  +청소되다:동:1
  +청소부:명:4
  +청소비:명:1
  +청소차:명:3
  +청소하다:동:38
  +청솔:명:2
  +청솔가지:명:3
  +청수:명:2
  +청순미:명:1
  +청순성:명:1
  +청순파:명:1
  +청순하다:형:5
  +청승맞다:형:3
  +청신하다:형:1
  +청신호:명:2
  +청심환:명:1
  +청아하다:형:2
  +청약:명:19
  +청약권:명:2
  +청약서:명:1
  +청약자:명:3
  +청운:명:1
  +청원:명:9
  +청원서:명:6
  +청원하다:동:2
  +청자:명:15
  +청장:명:21
  +청장:명:6
  +청장년:명:1
  +청정:명:9
  +청정기:명:2
  +청정하다:동:1
  +청정하다:형:3
  +청제:명:1
  +청조:명:1
  +청중:명:16
  +청지기:명:5
  +청진기:명:1
  +청진봉:명:1
  +청천:명:1
  +청천:명:3
  +청천벽력:명:1
  +청첩장:명:1
  +청초하다:형:5
  +청춘:명:59
  +청춘물:명:1
  +청출어람:명:1
  +청취:명:5
  +청취율:명:2
  +청취자:명:14
  +청취하다:동:4
  +청치마:명:1
  +청탁:명:15
  +청탁:명:3
  +청탁하다:동:4
  +청태:명:1
  +청포도:명:1
  +청하다:동:53
  +청혼:명:8
  +청홍:명:9
  +청홍색:명:1
  +청화:명:1
  +청회색:명:2
  +체:명:17
  +체:명:2
  +체:의:26
  +체감:명:5
  +체감하다:동:1
  +체격:명:14
  +체결:명:26
  +체결되다:동:15
  +체결설:명:1
  +체결하다:동:24
  +체계:명:259
  +체계도:명:1
  +체계론자:명:1
  +체계성:명:6
  +체계적:관:3
  +체계적:명:43
  +체계화:명:1
  +체계화되다:동:1
  +체계화시키다:동:1
  +체계화하다:동:13
  +체구:명:13
  +체급:명:9
  +체납:명:3
  +체납액:명:1
  +체내:명:25
  +체념:명:14
  +체념적:명:1
  +체념하다:동:14
  +체두관:명:1
  +체득:명:1
  +체득시키다:동:2
  +체득하다:동:9
  +체력:명:64
  +체력적:관:1
  +체력적:명:1
  +체류:명:26
  +체류자:명:6
  +체류하다:동:4
  +체르노젬:명:1
  +체머리:명:2
  +체면:명:35
  +체면치레:명:2
  +체모:명:2
  +체받다:동:1
  +체벌:명:3
  +체불:명:4
  +체불하다:동:1
  +체비지:명:1
  +체살머리:명:1
  +체신:명:1
  +체액:명:6
  +체열:명:3
  +체온:명:29
  +체온계:명:1
  +체외:명:3
  +체위:명:1
  +체육:명:164
  +체육계:명:1
  +체육과:명:3
  +체육관:명:9
  +체육국:명:1
  +체육단:명:1
  +체육복:명:2
  +체육인:명:4
  +체육학:명:2
  +체육학과:명:1
  +체육회:명:2
  +체인:명:3
  +체인저:명:1
  +체인점:명:4
  +체임:명:2
  +체임버:명:1
  +체재:명:1
  +체재하다:동:2
  +체전:명:3
  +체제:명:510
  +체제론:명:2
  +체제하:명:1
  +체조:명:111
  +체조법:명:2
  +체조직:명:2
  +체조하다:동:5
  +체중:명:46
  +체중계:명:2
  +체증:명:17
  +체증:명:3
  +체질:명:34
  +체질화되다:동:5
  +체질화하다:동:1
  +체체거리다:동:1
  +체취:명:14
  +체코로만탱크:명:1
  +체크:명:7
  +체크무늬:명:8
  +체크인:명:1
  +체크하다:동:9
  +체통:명:2
  +체포:명:34
  +체포되다:동:16
  +체포죄:명:1
  +체포하다:동:18
  +체하다:동:4
  +체하다:보:35
  +체한:명:2
  +체험:명:171
  +체험담:명:4
  +체험되다:동:9
  +체험적:관:11
  +체험적:명:3
  +체험하다:동:35
  +체현:명:1
  +체현하다:동:1
  +체형:명:6
  +체형적:관:1
  +체형형:명:2
  +첼로:명:6
  +첼리스트:명:1
  +쳇:감:2
  +쳇바퀴:명:6
  +쳐다보다:동:191
  +쳐다보이다:동:1
  +쳐들다:동:27
  +쳐들리다:동:1
  +쳐들어가다:동:4
  +쳐들어오다:동:19
  +쳐부수다:동:1
  +쳐올리다:동:2
  +쳐주다:동:2
  +쳐지다:동:3
  +초:명:1
  +초:명:4
  +초:명:4
  +초:명:5
  +초:의:108
  +초:의:195
  +초가:명:5
  +초가을:명:12
  +초가지붕:명:1
  +초가집:명:11
  +초간단:명:3
  +초간장:명:3
  +초간편:명:1
  +초감각:명:1
  +초감각적:관:1
  +초강경:명:1
  +초강대국:명:2
  +초강세:명:1
  +초개:명:1
  +초거대:명:2
  +초겨울:명:10
  +초경:명:1
  +초경도:명:1
  +초경량:명:15
  +초경험적:명:1
  +초계급적:명:2
  +초고:명:4
  +초고본:명:1
  +초고속:명:12
  +초고속관:명:1
  +초고압:명:1
  +초고집적:명:2
  +초고추장:명:5
  +초고층:명:2
  +초과:명:16
  +초과되다:동:2
  +초과자:명:1
  +초과하다:동:13
  +초관리:명:1
  +초군돌:명:1
  +초근목피:명:1
  +초급:명:1
  +초급반:명:2
  +초기:명:220
  +초기작:명:3
  +초긴장:명:4
  +초나흘:명:1
  +초내열:명:1
  +초년:명:3
  +초년병:명:5
  +초년생:명:2
  +초논리적:관:1
  +초능력:명:1
  +초단열:명:4
  +초당:명:1
  +초당:명:1
  +초당:명:1
  +초당적:관:1
  +초대:명:1
  +초대:명:19
  +초대:명:24
  +초대권:명:2
  +초대되다:동:12
  +초대받다:동:3
  +초대석:명:3
  +초대장:명:9
  +초대하다:동:35
  +초대형:명:5
  +초동:명:1
  +초등:명:5
  +초등학교:명:17
  +초등학생:명:1
  +초라하다:형:25
  +초라해지다:동:2
  +초래:명:1
  +초래되다:동:4
  +초래하다:동:56
  +초례청:명:1
  +초로:명:6
  +초록:명:1
  +초록:명:9
  +초록빛:명:7
  +초록색:명:8
  +초롱초롱하다:형:4
  +초롱초롱해지다:동:1
  +초롱초롱히:부:1
  +초리:명:1
  +초립:명:1
  +초막:명:1
  +초만원:명:3
  +초목:명:7
  +초무침:명:2
  +초문화적:명:1
  +초미:명:6
  +초미니:명:5
  +초미속:명:2
  +초반:명:59
  +초반부:명:1
  +초밥:명:29
  +초벌:명:1
  +초별당:명:5
  +초병:명:2
  +초보:명:17
  +초보자:명:16
  +초보적:관:2
  +초보적:명:8
  +초복:명:1
  +초본:명:1
  +초본:명:8
  +초봄:명:8
  +초비상:명:2
  +초빙:명:2
  +초빙되다:동:1
  +초빙하다:동:1
  +초사회적:명:1
  +초산:명:2
  +초상:명:5
  +초상:명:6
  +초상나다:동:1
  +초상집:명:2
  +초상화:명:32
  +초색:명:1
  +초서:명:2
  +초석:명:2
  +초석:명:4
  +초선:명:2
  +초성:명:14
  +초소:명:4
  +초속:명:5
  +초수평선:명:1
  +초순:명:12
  +초승달:명:5
  +초시:명:11
  +초시간적:명:1
  +초시대적:관:2
  +초시대적:명:2
  +초신성:명:5
  +초심자:명:1
  +초안:명:4
  +초야:명:1
  +초야:명:2
  +초어:명:1
  +초여름:명:17
  +초역사적:관:1
  +초역사적:명:3
  +초연:명:7
  +초연되다:동:2
  +초연하다:동:1
  +초연하다:형:8
  +초엽:명:6
  +초오:명:1
  +초원:명:69
  +초월:명:26
  +초월되다:동:1
  +초월자:명:1
  +초월적:관:13
  +초월적:명:9
  +초월하다:동:39
  +초월화:명:2
  +초유하다:동:2
  +초은하단:명:2
  +초음속:명:1
  +초음파:명:12
  +초이튿날:명:1
  +초인:명:3
  +초인간적:관:1
  +초인간적:명:1
  +초인적:관:1
  +초인적:명:2
  +초인종:명:8
  +초일류:명:2
  +초읽기:명:4
  +초임:명:5
  +초입:명:4
  +초자:명:2
  +초자아:명:4
  +초자연적:관:1
  +초자연적:명:5
  +초자연주의:명:1
  +초장:명:3
  +초저녁:명:17
  +초저녁잠:명:1
  +초전:명:1
  +초전:명:3
  +초전도:명:5
  +초점:명:102
  +초정밀:명:3
  +초정치:명:1
  +초조:명:3
  +초조감:명:4
  +초조롭다:형:2
  +초조하다:형:27
  +초조해지다:동:9
  +초조해하다:동:3
  +초조히:부:1
  +초주검:명:2
  +초중고:명:3
  +초중고교:명:3
  +초중고생:명:1
  +초중구금:명:5
  +초지:명:3
  +초지일관:명:1
  +초진:명:1
  +초집적:명:1
  +초짜:명:1
  +초창기:명:13
  +초청:명:42
  +초청객:명:1
  +초청되다:동:7
  +초청받다:동:5
  +초청장:명:16
  +초청전:명:1
  +초청하다:동:31
  +초초중구금:명:2
  +초췌하다:형:7
  +초침:명:6
  +초콜릿:명:20
  +초크:명:1
  +초토:명:2
  +초토화되다:동:2
  +초특급:명:1
  +초파일:명:2
  +초판:명:1
  +초판:명:7
  +초하루:명:2
  +초하룻날:명:1
  +초행길:명:1
  +초현대식:명:1
  +초현실:명:2
  +초현실적:명:3
  +초현실주의:명:3
  +초현실주의자:명:1
  +초혈연적:관:1
  +초호화:명:1
  +초호화판:명:1
  +초혼:명:1
  +촉:명:1
  +촉:의:3
  +촉각:명:11
  +촉각:명:8
  +촉각적:관:1
  +촉각적:명:1
  +촉감:명:11
  +촉구:명:21
  +촉구되다:동:1
  +촉구하다:동:87
  +촉망:명:1
  +촉망되다:동:2
  +촉망받다:동:2
  +촉매:명:4
  +촉매제:명:4
  +촉매하다:동:2
  +촉발되다:동:4
  +촉발시키다:동:7
  +촉발점:명:1
  +촉발하다:동:6
  +촉새:명:2
  +촉진:명:25
  +촉진되다:동:12
  +촉진시키다:동:20
  +촉진제:명:6
  +촉진책:명:3
  +촉진하다:동:23
  +촉촉:부:1
  +촉촉이:부:9
  +촉촉하다:형:19
  +촉촉해지다:동:1
  +촉탁:명:1
  +촌:명:20
  +촌:의:2
  +촌구석:명:1
  +촌극:명:2
  +촌놈:명:6
  +촌닭:명:1
  +촌락:명:50
  +촌로:명:1
  +촌부:명:1
  +촌사람:명:2
  +촌수:명:6
  +촌스럽다:형:16
  +촌음:명:1
  +촌장:명:4
  +촌장층:명:1
  +촌정층:명:2
  +촌주:명:3
  +촌주위답:명:1
  +촌지:명:12
  +촌티:명:6
  +촌평:명:1
  +촐랑대다:동:1
  +촘촘하다:형:1
  +촘촘히:부:7
  +촛대:명:5
  +촛불:명:18
  +총:관:80
  +총:명:35
  +총각:명:40
  +총각김치:명:1
  +총감독:명:2
  +총개념:명:1
  +총검:명:1
  +총격:명:2
  +총격전:명:1
  +총결산:명:1
  +총경:명:3
  +총계:명:4
  +총공격하다:동:2
  +총관중:명:1
  +총괄:명:9
  +총괄되다:동:1
  +총괄서:명:1
  +총괄적:명:2
  +총괄하다:동:10
  +총구:명:3
  +총국:명:1
  +총국장:명:1
  +총궐기:명:2
  +총기:명:5
  +총기:명:7
  +총대:명:1
  +총대장:명:3
  +총독:명:2
  +총동문회:명:1
  +총동원되다:동:1
  +총동원하다:동:6
  +총등장하다:동:1
  +총량:명:3
  +총력:명:6
  +총력전:명:3
  +총론:명:1
  +총리:명:71
  +총리령:명:1
  +총리실:명:4
  +총망라하다:동:2
  +총매상:명:1
  +총매출액:명:1
  +총면적:명:5
  +총명:명:7
  +총명하다:형:7
  +총무:명:23
  +총무과장:명:1
  +총무국장:명:2
  +총무부:명:1
  +총무부장:명:1
  +총무실:명:2
  +총무원:명:1
  +총반격:명:1
  +총본부:명:1
  +총부:명:2
  +총부리:명:1
  +총비:명:1
  +총비서:명:4
  +총비서직:명:2
  +총사령탑:명:1
  +총사실:명:1
  +총사업:명:2
  +총사퇴:명:1
  +총사퇴설:명:1
  +총살감:명:2
  +총살되다:동:1
  +총살하다:동:1
  +총상:명:3
  +총상금:명:2
  +총생산:명:9
  +총생산량:명:2
  +총생산액:명:1
  +총서:명:3
  +총서기:명:12
  +총선:명:146
  +총선거:명:11
  +총선전:명:1
  +총설:명:1
  +총성:명:3
  +총소리:명:4
  +총수:명:23
  +총수:명:4
  +총수요:명:6
  +총수익:명:2
  +총수입:명:2
  +총수입액:명:1
  +총신:명:1
  +총아:명:1
  +총알:명:15
  +총알받이:명:2
  +총알택시:명:2
  +총애:명:1
  +총애하다:동:1
  +총액:명:26
  +총액수:명:1
  +총여신:명:1
  +총역량:명:3
  +총연맹:명:1
  +총연봉:명:1
  +총연합:명:2
  +총열:명:1
  +총영사:명:1
  +총영사관:명:2
  +총인원:명:1
  +총자본:명:3
  +총자본금:명:1
  +총잡이:명:3
  +총장:명:124
  +총장상:명:1
  +총장실:명:2
  +총장직:명:2
  +총재:명:59
  +총점:명:3
  +총점검:명:1
  +총점주의:명:1
  +총정리:명:4
  +총정원:명:1
  +총조사:명:2
  +총조정관:명:1
  +총중:명:1
  +총지배인:명:1
  +총질:명:2
  +총집결하다:동:1
  +총집합하다:동:1
  +총참모장:명:1
  +총책:명:1
  +총책임자:명:1
  +총체:명:7
  +총체감:명:1
  +총체성:명:19
  +총체적:관:28
  +총체적:명:30
  +총총:부:2
  +총총거리다:동:1
  +총총걸음:명:1
  +총총하다:형:2
  +총총하다:형:3
  +총총히:부:2
  +총총히:부:7
  +총출연하다:동:1
  +총칭:명:1
  +총칭하다:동:5
  +총칼:명:7
  +총탄:명:2
  +총통:명:5
  +총통화:명:6
  +총판:명:1
  +총학:명:1
  +총학생회:명:19
  +총학생회장:명:4
  +총학장:명:1
  +총합:명:3
  +총화:명:2
  +총화되다:동:1
  +총활동:명:1
  +총회:명:33
  +총회원:명:1
  +총회장:명:1
  +촬영:명:103
  +촬영기:명:4
  +촬영되다:동:1
  +촬영반:명:1
  +촬영분:명:2
  +촬영술:명:1
  +촬영장:명:2
  +촬영지:명:2
  +촬영하다:동:12
  +최강:명:6
  +최강수:명:1
  +최강자:명:1
  +최강전:명:3
  +최경량:명:1
  +최경례:명:1
  +최고:명:2
  +최고:명:361
  +최고가액:명:1
  +최고급:명:20
  +최고도:명:2
  +최고령:명:2
  +최고미:명:1
  +최고본:명:1
  +최고봉:명:12
  +최고상:명:1
  +최고신:명:2
  +최고위:명:1
  +최고점:명:1
  +최고조:명:1
  +최고참:명:1
  +최고치:명:1
  +최근:명:691
  +최근세:명:1
  +최근작:명:2
  +최남단:명:1
  +최다:명:10
  +최단:명:1
  +최단명:명:1
  +최대:명:156
  +최대어:명:1
  +최대치:명:2
  +최대한:명:63
  +최루:명:6
  +최루성:명:1
  +최루액:명:1
  +최루탄:명:36
  +최말직:명:1
  +최면:명:3
  +최북단:명:1
  +최빈국:명:1
  +최상:명:20
  +최상급:명:2
  +최상급자:명:1
  +최상품:명:1
  +최선:명:82
  +최선책:명:2
  +최소:명:6
  +최소:명:9
  +최소우:명:1
  +최소한:명:101
  +최소한도:명:2
  +최소화:명:1
  +최소화되다:동:1
  +최소화시키다:동:3
  +최소화하다:동:1
  +최소화하다:동:18
  +최신:명:30
  +최신곡:명:1
  +최신식:명:2
  +최신형:명:2
  +최악:명:20
  +최연소자:명:1
  +최우량품:명:1
  +최우선:명:6
  +최우선적:명:6
  +최우수:명:9
  +최우수상:명:2
  +최일선:명:4
  +최장:명:5
  +최장기간:명:1
  +최장수:명:3
  +최장신:명:1
  +최저:명:25
  +최저치:명:10
  +최적:명:11
  +최전방:명:9
  +최전선:명:1
  +최종:명:69
  +최종심:명:2
  +최종안:명:2
  +최종일:명:2
  +최종적:관:3
  +최종적:명:19
  +최종전:명:1
  +최첨단:명:9
  +최초:명:196
  +최촉하다:동:1
  +최측근:명:4
  +최하:명:2
  +최하위:명:3
  +최하위권:명:2
  +최하층:명:1
  +최혜국:명:2
  +최후:명:37
  +최후적:명:1
  +최후통첩:명:2
  +쵸마:명:1
  +추:동:1
  +추:명:2
  +추:명:8
  +추가:명:67
  +추가되다:동:15
  +추가시키다:동:2
  +추가적:관:1
  +추가적:명:2
  +추가하다:동:14
  +추간판:명:1
  +추격:명:5
  +추격전:명:1
  +추격하다:동:1
  +추경:명:4
  +추계:명:8
  +추계하다:동:2
  +추고:명:1
  +추곡:명:10
  +추골:명:8
  +추구:명:33
  +추구되다:동:4
  +추구욕:명:2
  +추구하다:동:1
  +추구하다:동:121
  +추궁:명:10
  +추궁되다:동:3
  +추궁하다:동:10
  +추기경:명:7
  +추나:명:12
  +추녀:명:9
  +추다:동:3
  +추다:동:89
  +추달:명:1
  +추대되다:동:3
  +추대하다:동:7
  +추도사:명:2
  +추도식:명:1
  +추돌하다:동:1
  +추동:명:2
  +추동되다:동:1
  +추동하다:동:2
  +추락:명:18
  +추락시키다:동:1
  +추락하다:동:10
  +추레하다:형:1
  +추려지다:동:1
  +추렴:명:4
  +추렴하다:동:2
  +추론:명:3
  +추론되다:동:1
  +추론하다:동:2
  +추리:명:7
  +추리극적:명:1
  +추리닝:명:1
  +추리다:동:6
  +추리력:명:1
  +추모:명:4
  +추모비:명:2
  +추모식:명:1
  +추모제:명:3
  +추모하다:동:3
  +추문:명:1
  +추방:명:7
  +추방당하다:동:4
  +추방되다:동:2
  +추방시키다:동:1
  +추방하다:동:11
  +추분:명:6
  +추산:명:4
  +추산되다:동:10
  +추산하다:동:5
  +추상:명:20
  +추상같다:형:2
  +추상같이:부:1
  +추상성:명:3
  +추상어:명:1
  +추상적:관:32
  +추상적:명:41
  +추상주의:명:1
  +추상파:명:1
  +추상하다:동:2
  +추상화:명:1
  +추상화:명:2
  +추상화되다:동:5
  +추상화시키다:동:1
  +추서:명:1
  +추서하다:동:1
  +추석:명:46
  +추석날:명:1
  +추석빔:명:1
  +추세:명:104
  +추수:명:14
  +추수선:명:1
  +추수주의:명:3
  +추수주의자:명:1
  +추수하다:동:1
  +추수하다:동:3
  +추스르다:동:19
  +추신:명:1
  +추심:명:7
  +추심하다:동:2
  +추악:명:1
  +추악상:명:1
  +추악하다:형:11
  +추앙:명:1
  +추앙되다:동:1
  +추앙받다:동:1
  +추앙하다:동:2
  +추어올리다:동:2
  +추어주다:동:1
  +추억:명:77
  +추억거리:명:2
  +추억담:명:1
  +추억물:명:1
  +추억하다:동:1
  +추워지다:동:10
  +추월:명:2
  +추월하다:동:3
  +추위:명:58
  +추이:명:13
  +추인:명:2
  +추인받다:동:1
  +추인적:관:1
  +추인하다:동:1
  +추임새:명:5
  +추잉껌:명:1
  +추잡하다:형:2
  +추장:명:13
  +추적:명:29
  +추적추적:부:1
  +추적하다:동:40
  +추전:명:1
  +추정:명:14
  +추정되다:동:40
  +추정받다:동:1
  +추정액:명:1
  +추정치:명:1
  +추정하다:동:19
  +추종:명:3
  +추종자:명:3
  +추종하다:동:4
  +추진:명:98
  +추진되다:동:26
  +추진력:명:14
  +추진반:명:2
  +추진부장:명:1
  +추진시키다:동:1
  +추진제:명:1
  +추진하다:동:163
  +추징:명:4
  +추징금:명:1
  +추징하다:동:2
  +추천:명:1
  +추천:명:26
  +추천권자:명:2
  +추천되다:동:4
  +추천받다:동:1
  +추천사:명:1
  +추천서:명:2
  +추천하다:동:19
  +추첨:명:6
  +추체:명:1
  +추체험:명:3
  +추체험되다:동:1
  +추초:명:1
  +추축국:명:1
  +추출:명:9
  +추출되다:동:6
  +추출물:명:3
  +추출액:명:1
  +추출하다:동:28
  +추측:명:21
  +추측되다:동:16
  +추측성:명:1
  +추측하다:동:14
  +추켜올리다:동:2
  +추키다:동:2
  +추태:명:6
  +추파:명:3
  +추풍낙엽:명:2
  +추하다:형:19
  +추행:명:4
  +추호:명:5
  +추후:명:7
  +축:명:2
  +축:명:3
  +축:명:47
  +축:부:11
  +축:의:14
  +축가:명:6
  +축간사:명:1
  +축객:명:1
  +축관:명:1
  +축구:명:175
  +축구계:명:9
  +축구공:명:8
  +축구단:명:3
  +축구부:명:2
  +축구인:명:2
  +축구장:명:5
  +축구팀:명:2
  +축구회:명:1
  +축내다:동:5
  +축농증:명:6
  +축대:명:9
  +축도:명:2
  +축문:명:2
  +축방:명:14
  +축배:명:1
  +축법:명:1
  +축복:명:11
  +축복되다:동:2
  +축복받다:동:2
  +축복하다:동:4
  +축사:명:2
  +축사:명:3
  +축산:명:17
  +축산물:명:9
  +축산업:명:2
  +축산업자:명:1
  +축산하다:동:1
  +축생:명:1
  +축선:명:1
  +축성:명:2
  +축성되다:동:1
  +축소:명:51
  +축소되다:동:25
  +축소시키다:동:3
  +축소판:명:3
  +축소하다:동:19
  +축시되다:동:1
  +축음기:명:1
  +축의금:명:2
  +축이다:동:6
  +축재:명:10
  +축재자:명:1
  +축적:명:26
  +축적되다:동:17
  +축적하다:동:15
  +축전:명:3
  +축전기:명:3
  +축제:명:84
  +축제일:명:4
  +축제적:관:1
  +축조:명:5
  +축조물:명:1
  +축조적:명:1
  +축조하다:동:4
  +축지법:명:1
  +축척:명:6
  +축첩:명:1
  +축축이:부:1
  +축축하다:형:15
  +축축해지다:동:2
  +축출:명:2
  +축출되다:동:1
  +축출하다:동:3
  +축포:명:3
  +축하:명:30
  +축하객:명:1
  +축하다:동:1
  +축하단:명:1
  +축하드리다:동:4
  +축하받다:동:1
  +축하연:명:2
  +축하주:명:1
  +축하품:명:1
  +축하하다:동:41
  +축항:명:1
  +춘계:명:2
  +춘궁기:명:1
  +춘방:명:8
  +춘분:명:8
  +춘양목:명:1
  +춘추:명:1
  +춘추:명:15
  +춘축:명:4
  +춘축심:명:1
  +춘풍:명:3
  +춘하추동:명:2
  +춘향:명:1
  +춘화:명:3
  +출가:명:2
  +출가:명:24
  +출가시키다:동:1
  +출가외인:명:4
  +출가하다:동:13
  +출가하다:동:2
  +출간:명:15
  +출간되다:동:8
  +출간하다:동:9
  +출감하다:동:1
  +출강:명:1
  +출강하다:동:3
  +출격하다:동:2
  +출고:명:1
  +출고일:명:2
  +출구:명:29
  +출국:명:20
  +출국시키다:동:4
  +출국하다:동:5
  +출근:명:43
  +출근길:명:6
  +출근하다:동:34
  +출금되다:동:1
  +출금하다:동:1
  +출납:명:4
  +출당:명:2
  +출동:명:3
  +출동시키다:동:4
  +출동하다:동:5
  +출두:명:9
  +출두하다:동:15
  +출렁:부:1
  +출렁거리다:동:3
  +출렁대다:동:1
  +출렁이다:동:6
  +출력:명:25
  +출력기:명:2
  +출력되다:동:1
  +출력시키다:동:1
  +출력하다:동:4
  +출루율:명:2
  +출마:명:22
  +출마설:명:1
  +출마자:명:1
  +출마하다:동:17
  +출몰:명:1
  +출몰하다:동:2
  +출무성하다:형:1
  +출반:명:1
  +출반하다:동:1
  +출발:명:73
  +출발되다:동:2
  +출발법:명:3
  +출발선:명:4
  +출발시키다:동:2
  +출발점:명:31
  +출발하다:동:111
  +출범:명:49
  +출범시키다:동:2
  +출범하다:동:18
  +출분:명:1
  +출사표:명:4
  +출산:명:109
  +출산기:명:1
  +출산되다:동:1
  +출산력:명:2
  +출산시키다:동:1
  +출산아:명:1
  +출산율:명:1
  +출산자:명:3
  +출산하다:동:12
  +출생:명:19
  +출생설:명:2
  +출생인:명:1
  +출생지:명:2
  +출생하다:동:8
  +출석:명:7
  +출석부:명:4
  +출석시키다:동:2
  +출석하다:동:3
  +출세:명:24
  +출세시키다:동:1
  +출세작:명:1
  +출세주의:명:1
  +출세하다:동:19
  +출소자:명:1
  +출시:명:11
  +출시되다:동:11
  +출시사:명:1
  +출시하다:동:21
  +출신:명:209
  +출신고:명:1
  +출신자:명:2
  +출신지:명:3
  +출어:명:4
  +출어하다:동:6
  +출연:명:10
  +출연:명:86
  +출연금:명:1
  +출연료:명:13
  +출연시키다:동:9
  +출연자:명:10
  +출연진:명:7
  +출연하다:동:4
  +출연하다:동:95
  +출옥:명:1
  +출원:명:2
  +출원인:명:2
  +출원하다:동:5
  +출입:명:50
  +출입구:명:7
  +출입국:명:7
  +출입문:명:29
  +출입하다:동:9
  +출입항하다:동:1
  +출자:명:14
  +출자금:명:1
  +출자액:명:1
  +출자자:명:2
  +출자하다:동:12
  +출장:명:11
  +출장:명:32
  +출장비:명:1
  +출장소:명:4
  +출장하다:동:2
  +출전:명:17
  +출전비:명:1
  +출전시키다:동:1
  +출전하다:동:26
  +출정:명:1
  +출정시키다:동:1
  +출정식:명:2
  +출정하다:동:1
  +출제:명:19
  +출제되다:동:2
  +출제하다:동:12
  +출중하다:형:3
  +출처:명:21
  +출출하다:형:6
  +출출해지다:동:1
  +출타:명:2
  +출토:명:3
  +출토되다:동:7
  +출퇴근:명:18
  +출퇴근길:명:1
  +출퇴근하다:동:7
  +출판:명:31
  +출판가:명:2
  +출판계:명:2
  +출판국:명:1
  +출판되다:동:13
  +출판물:명:3
  +출판부:명:3
  +출판사:명:42
  +출판업주:명:1
  +출판인:명:3
  +출판하다:동:13
  +출품:명:2
  +출품되다:동:2
  +출품작:명:7
  +출품하다:동:11
  +출하:명:8
  +출하되다:동:2
  +출하량:명:1
  +출하하다:동:3
  +출항:명:18
  +출항주:명:1
  +출항하다:동:18
  +출향관하다:동:1
  +출현:명:40
  +출현시키다:동:1
  +출현하다:동:31
  +출혈:명:19
  +출혈되다:동:1
  +출혈열:명:3
  +춤:명:157
  +춤꾼:명:4
  +춤사위:명:5
  +춤장이:명:1
  +춤추다:동:36
  +춥다:형:137
  +충격:명:1
  +충격:명:143
  +충격력:명:1
  +충격받다:동:1
  +충격스럽다:형:1
  +충격식:명:1
  +충격적:관:1
  +충격적:명:38
  +충격파:명:1
  +충고:명:21
  +충고하다:동:7
  +충당되다:동:3
  +충당하다:동:8
  +충돌:명:46
  +충돌대:명:3
  +충돌시키다:동:1
  +충돌하다:동:17
  +충동:명:47
  +충동구매:명:2
  +충동적:명:13
  +충동질:명:1
  +충동질하다:동:2
  +충량:명:1
  +충렬탑:명:1
  +충만:명:2
  +충만되다:동:1
  +충만하다:형:7
  +충분조건:명:1
  +충분하다:형:140
  +충분히:부:191
  +충상호형:명:1
  +충성:명:7
  +충성도:명:4
  +충성스럽다:형:2
  +충성심:명:9
  +충성하다:동:10
  +충신:명:2
  +충신둥이:명:1
  +충실:명:1
  +충실성:명:3
  +충실하다:형:18
  +충실하다:형:28
  +충실히:부:6
  +충실히:부:8
  +충심:명:2
  +충원:명:2
  +충원되다:동:1
  +충원하다:동:3
  +충일:명:1
  +충일하다:동:2
  +충적세:명:1
  +충적지:명:1
  +충전:명:3
  +충전받다:동:1
  +충전식:명:1
  +충전하다:동:1
  +충절:명:1
  +충정:명:1
  +충족:명:22
  +충족감:명:5
  +충족되다:동:7
  +충족성:명:1
  +충족시키다:동:36
  +충족적:관:1
  +충족하다:동:3
  +충직하다:형:4
  +충천하다:동:1
  +충치:명:1
  +충혈되다:동:13
  +충효:명:4
  +췌장:명:3
  +췌장암:명:1
  +췌장염:명:2
  +취:명:1
  +취:명:2
  +취객:명:11
  +취급:명:25
  +취급당하다:동:3
  +취급되다:동:7
  +취급률:명:6
  +취급받다:동:2
  +취급하다:동:39
  +취기:명:12
  +취나물:명:6
  +취득:명:12
  +취득자:명:2
  +취득하다:동:11
  +취락:명:21
  +취락지:명:3
  +취로:명:2
  +취모방:명:1
  +취미:명:80
  +취민유도:명:1
  +취사:명:1
  +취사:명:8
  +취사도구:명:1
  +취사선택:명:2
  +취사장:명:1
  +취사하다:동:1
  +취생몽사:명:1
  +취소:명:30
  +취소되다:동:10
  +취소하다:동:34
  +취약:명:2
  +취약성:명:5
  +취약점:명:2
  +취약하다:형:14
  +취약해지다:동:2
  +취업:명:34
  +취업난:명:1
  +취업되다:동:1
  +취업률:명:4
  +취업반:명:1
  +취업자:명:3
  +취업하다:동:7
  +취임:명:67
  +취임사:명:2
  +취임식:명:24
  +취임일:명:1
  +취임하다:동:25
  +취입:명:1
  +취입하다:동:3
  +취재:명:37
  +취재반:명:2
  +취재석:명:2
  +취재원:명:1
  +취재지:명:1
  +취재진:명:4
  +취재하다:동:17
  +취조:명:3
  +취중:명:2
  +취지:명:60
  +취지문:명:1
  +취직:명:39
  +취직자리:명:1
  +취직하다:동:13
  +취침:명:6
  +취침나팔:명:1
  +취택하다:동:1
  +취하:명:1
  +취하다:동:206
  +취하다:동:98
  +취하되다:동:3
  +취하여지다:동:1
  +취하하다:동:3
  +취학:명:2
  +취학률:명:1
  +취합하다:동:2
  +취항:명:5
  +취해지다:동:14
  +취향:명:51
  +츄베르사:명:1
  +측:의:464
  +측간:명:2
  +측근:명:41
  +측근자:명:1
  +측량:명:1
  +측량법:명:1
  +측량술:명:1
  +측량업자:명:1
  +측면:명:223
  +측면적:명:1
  +측백나무:명:5
  +측우기:명:5
  +측은지심:명:1
  +측은하다:형:7
  +측정:명:54
  +측정기:명:13
  +측정되다:동:5
  +측정망:명:3
  +측정소:명:6
  +측정치:명:1
  +측정하다:동:57
  +층:명:244
  +층:의:6
  +층계:명:14
  +층계참:명:1
  +층위:명:59
  +층층:명:5
  +층층나무:명:1
  +층층나뭇과:명:1
  +층층다리:명:1
  +층층대:명:1
  +층층시하:명:1
  +층층이:부:2
  +층층이꽃:명:1
  +층하하다:동:1
  +치:감:7
  +치:명:4
  +치:의:20
  +치:의:23
  +치고받다:동:5
  +치골:명:2
  +치과:명:18
  +치과의:명:1
  +치근:명:2
  +치근거리다:동:1
  +치근막:명:8
  +치기:명:5
  +치기만만하다:형:1
  +치다:동:1
  +치다:동:13
  +치다:동:2
  +치다:동:24
  +치다:동:37
  +치다:동:5
  +치다:동:530
  +치다:동:7
  +치다:동:7
  +치다:동:7
  +치다:동:8
  +치다:동:91
  +치다:보:1
  +치다꺼리:명:2
  +치닫다:동:21
  +치달리다:동:1
  +치대다:동:6
  +치덩굴:명:1
  +치도곤:명:2
  +치돌리다:동:1
  +치뜨다:동:1
  +치러지다:동:39
  +치렁거리다:동:1
  +치렁치렁:부:1
  +치렁치렁하다:동:3
  +치료:명:149
  +치료가:명:1
  +치료되다:동:2
  +치료받다:동:1
  +치료법:명:15
  +치료비:명:6
  +치료실:명:1
  +치료자:명:1
  +치료제:명:2
  +치료하다:동:54
  +치루어지다:동:1
  +치뤄지다:동:1
  +치르다:동:167
  +치르어지다:동:1
  +치마:명:88
  +치마꼬리:명:2
  +치마선:명:1
  +치마저고리:명:2
  +치마통:명:1
  +치마폭:명:6
  +치마허리:명:1
  +치맛감:명:1
  +치맛말기:명:2
  +치맛바람:명:5
  +치맛자락:명:6
  +치맛주름:명:1
  +치매:명:4
  +치명적:관:2
  +치명적:명:33
  +치명타:명:4
  +치모:명:1
  +치목:명:1
  +치밀다:동:36
  +치밀하다:형:33
  +치받다:동:1
  +치받다:동:1
  +치부:명:2
  +치부:명:5
  +치부되다:동:11
  +치부책:명:3
  +치부하다:동:19
  +치뻗치다:동:1
  +치사:명:3
  +치사:명:3
  +치사상:명:1
  +치사스럽다:형:1
  +치사율:명:2
  +치사하다:동:1
  +치사하다:형:1
  +치세:명:1
  +치솟다:동:28
  +치수:명:4
  +치수:명:4
  +치신경:명:1
  +치아:명:38
  +치안:명:22
  +치안국장:명:1
  +치안대:명:3
  +치약:명:22
  +치어스:감:1
  +치열:명:2
  +치열:명:2
  +치열하다:형:69
  +치열해지다:동:9
  +치와와:명:1
  +치외:명:1
  +치욕:명:8
  +치욕스럽다:형:5
  +치우다:동:66
  +치우다:보:15
  +치우치다:동:25
  +치워지다:동:7
  +치유:명:15
  +치유되다:동:7
  +치유력:명:2
  +치유책:명:3
  +치유하다:동:13
  +치의:명:1
  +치이다:동:1
  +치이다:동:3
  +치이다:동:8
  +치이파오:명:2
  +치자:명:1
  +치장:명:7
  +치장되다:동:2
  +치장하다:동:8
  +치적:명:5
  +치정:명:1
  +치졸하다:형:1
  +치중:명:3
  +치중되다:동:1
  +치중하다:동:19
  +치즈:명:108
  +치질:명:3
  +치커리:명:2
  +치켜들다:동:10
  +치켜떠지다:동:1
  +치켜뜨다:동:4
  +치켜세우다:동:4
  +치켜세워지다:동:1
  +치켜지다:동:1
  +치클:명:4
  +치키:부:3
  +치키다:동:6
  +치킨:명:5
  +치킨볼:명:2
  +치타:명:2
  +치탈도첩:명:1
  +치통:명:11
  +치하:명:11
  +치한:명:1
  +치환하다:동:1
  +칙:부:1
  +칙사:명:1
  +칙서:명:1
  +칙칙:부:2
  +칙칙하다:형:5
  +칙칙해지다:동:1
  +친가:명:3
  +친고죄:명:6
  +친교:명:7
  +친교하다:동:1
  +친구:명:1,208
  +친구지간:명:1
  +친귀족적:관:2
  +친근감:명:7
  +친근하다:형:17
  +친근해지다:동:1
  +친동생:명:6
  +친딸:명:1
  +친목:명:12
  +친목계:명:2
  +친목회:명:3
  +친밀감:명:6
  +친밀도:명:5
  +친밀하다:형:6
  +친밀해지다:동:3
  +친부모:명:1
  +친분:명:7
  +친서:명:1
  +친서방:명:1
  +친선:명:11
  +친선전:명:1
  +친손녀:명:1
  +친손자:명:2
  +친숙:명:1
  +친숙성:명:2
  +친숙하다:형:21
  +친숙해지다:동:8
  +친아버지:명:2
  +친애하다:동:1
  +친야:명:1
  +친어머니:명:2
  +친어무니:명:1
  +친언니:명:1
  +친여:명:6
  +친오빠:명:2
  +친원전:명:1
  +친위:명:5
  +친위대:명:1
  +친일:명:23
  +친일적:관:1
  +친일파:명:20
  +친자:명:3
  +친자매:명:1
  +친자식:명:1
  +친잠례:명:1
  +친절:명:28
  +친절하다:형:51
  +친절해지다:동:2
  +친절히:부:1
  +친정:명:3
  +친정:명:45
  +친정붙이:명:2
  +친정아버지:명:5
  +친정어머니:명:7
  +친정집:명:6
  +친조부모:명:1
  +친족:명:27
  +친지:명:20
  +친척:명:88
  +친친:부:2
  +친하다:형:64
  +친해지다:동:20
  +친형:명:5
  +친형제:명:1
  +친화:명:3
  +친화감:명:1
  +친화력:명:4
  +친화성:명:2
  +친화적:명:1
  +친히:부:1
  +친히:부:3
  +칠:관:12
  +칠:명:11
  +칠:수:9
  +칠갑:명:2
  +칠거지악:명:5
  +칠게:명:1
  +칠기:명:5
  +칠리소스:명:1
  +칠면조:명:5
  +칠백:수:1
  +칠백오십삼:관:1
  +칠보:명:1
  +칠부바지:명:1
  +칠삭둥이:명:1
  +칠서:명:1
  +칠석:명:1
  +칠순:명:1
  +칠십:관:13
  +칠십:수:6
  +칠십객:명:2
  +칠십억:수:1
  +칠십일:관:1
  +칠오조:명:1
  +칠월:명:163
  +칠전팔기:명:1
  +칠천:관:3
  +칠천만:관:1
  +칠첩반상:명:1
  +칠촌:명:1
  +칠칠맞다:형:1
  +칠칠하다:형:1
  +칠판:명:14
  +칠팔:관:4
  +칠팔십:수:1
  +칠팔월:명:1
  +칠팔월생:명:1
  +칠하다:동:34
  +칠해지다:동:7
  +칠향계탕:명:1
  +칠흑:명:9
  +칡:명:4
  +칡넝쿨:명:1
  +칡덩굴:명:8
  +칡뿌리:명:2
  +침:명:1
  +침:명:13
  +침:명:68
  +침공:명:15
  +침공하다:동:4
  +침구:명:1
  +침구:명:1
  +침구류:명:1
  +침낭:명:2
  +침노하다:동:2
  +침대:명:136
  +침대맡:명:2
  +침대보:명:1
  +침대칸:명:1
  +침략:명:1
  +침략:명:55
  +침략기:명:4
  +침략당하다:동:2
  +침략성:명:1
  +침략자:명:7
  +침략적:명:1
  +침략하다:동:20
  +침모:명:3
  +침몰:명:1
  +침몰되다:동:2
  +침몰시키다:동:2
  +침몰하다:동:4
  +침묵:명:87
  +침묵병:명:1
  +침묵증:명:1
  +침묵하다:동:13
  +침범:명:3
  +침범하다:동:4
  +침봉:명:1
  +침상:명:11
  +침선:명:1
  +침수:명:1
  +침수:명:2
  +침수되다:동:1
  +침술:명:1
  +침식:명:1
  +침식:명:3
  +침식:명:7
  +침식곡:명:1
  +침식되다:동:1
  +침식되다:동:3
  +침실:명:28
  +침염:명:2
  +침엽수:명:6
  +침엽수림:명:10
  +침울하다:형:12
  +침울해지다:동:1
  +침울히:부:1
  +침윤되다:동:2
  +침입:명:30
  +침입자:명:4
  +침입죄:명:1
  +침입하다:동:10
  +침잠:명:4
  +침잠하다:동:5
  +침전되다:동:2
  +침전물:명:1
  +침전하다:동:2
  +침착되다:동:1
  +침착하다:형:23
  +침체:명:33
  +침체기:명:1
  +침체되다:동:14
  +침체하다:동:3
  +침침하다:형:3
  +침침해지다:동:2
  +침탈:명:7
  +침통하다:형:9
  +침투:명:40
  +침투되다:동:2
  +침투시키다:동:2
  +침투하다:동:5
  +침팬지:명:3
  +침하:명:5
  +침해:명:72
  +침해당하다:동:4
  +침해되다:동:6
  +침해받다:동:2
  +침해자:명:1
  +침해죄:명:1
  +침해하다:동:19
  +칩:명:25
  +칩거:명:5
  +칩거하다:동:3
  +칫솔:명:19
  +칫솔질:명:1
  +칭송:명:5
  +칭송되다:동:1
  +칭송받다:동:2
  +칭송하다:동:3
  +칭얼대다:동:2
  +칭제:명:7
  +칭찬:명:71
  +칭찬받다:동:10
  +칭찬하다:동:35
  +칭칭:감:2
  +칭칭:부:4
  +칭하다:동:12
  +칭호:명:16
  +카:감:1
  +카:명:15
  +카고트럭:명:1
  +카나페:명:1
  +카네이션:명:1
  +카논:명:1
  +카니발:명:1
  +카다:동:4
  +카드:명:100
  +카드놀이:명:5
  +카드제:명:1
  +카라반:명:1
  +카랑카랑하다:형:2
  +카레:명:16
  +카레라이스:명:3
  +카레이서:명:1
  +카로틴:명:1
  +카리스마:명:3
  +카메라:명:94
  +카메라맨:명:8
  +카메라식:명:4
  +카멤벨:명:6
  +카바레:명:2
  +카바이드:명:3
  +카본:명:1
  +카빈총:명:4
  +카세트:명:7
  +카섹스:명:2
  +카센터:명:1
  +카스테레오:명:1
  +카스트:명:3
  +카악:부:1
  +카오스적:관:1
  +카우보이:명:1
  +카운슬링:명:2
  +카운터:명:1
  +카운터:명:51
  +카운트다운:명:1
  +카키:명:5
  +카키그레이:명:2
  +카키색:명:2
  +카타르시스:명:15
  +카탈로그:명:5
  +카테고리:명:3
  +카테콜아민:명:1
  +카투사:명:1
  +카트리지:명:1
  +카페:명:74
  +카페리:명:3
  +카페오레:명:1
  +카페인:명:10
  +카펫:명:8
  +카폰:명:1
  +카피:명:21
  +카피라이터:명:11
  +칵테일:명:4
  +칵테일파티:명:2
  +칸:명:54
  +칸나:명:7
  +칸막이:명:11
  +칸수:명:1
  +칸칸:명:1
  +칸타타:명:1
  +칼:명:1
  +칼:명:95
  +칼국수:명:9
  +칼깃:명:2
  +칼꽂이:명:1
  +칼끝:명:1
  +칼날:명:21
  +칼라:명:1
  +칼럼:명:19
  +칼럼니스트:명:3
  +칼럼집:명:1
  +칼로리:명:3
  +칼륨:명:4
  +칼륨염:명:1
  +칼바위:명:8
  +칼부림:명:3
  +칼슘:명:18
  +칼자국:명:4
  +칼자루:명:3
  +칼질:명:2
  +칼집:명:1
  +칼집:명:8
  +칼춤:명:2
  +칼칼하다:형:1
  +칼칼해지다:동:1
  +칼쿨리:명:1
  +캄캄절벽:명:1
  +캄캄하다:형:23
  +캄캄해지다:동:6
  +캉캉:명:1
  +캐내다:동:14
  +캐넌:명:2
  +캐넌포:명:1
  +캐다:동:51
  +캐드:명:1
  +캐러멜:명:6
  +캐럴:명:3
  +캐리어:명:2
  +캐리커처:명:11
  +캐릭터:명:30
  +캐묻다:동:9
  +캐비닛:명:4
  +캐비닛식:명:1
  +캐비아:명:2
  +캐빈:명:8
  +캐스터:명:10
  +캐스팅:명:13
  +캐스팅되다:동:5
  +캐스팅하다:동:2
  +캐어묻다:동:1
  +캐주얼:명:10
  +캐주얼하다:형:1
  +캐첩:명:1
  +캐츠:명:1
  +캐치:명:1
  +캐치프레이즈:명:7
  +캐치하다:동:1
  +캐터필러:명:2
  +캑:부:2
  +캑캑거리다:동:1
  +캔:명:30
  +캔디:명:1
  +캔버스:명:12
  +캔슬:명:1
  +캘린더:명:1
  +캘큘러스:명:1
  +캠축:명:1
  +캠코더:명:1
  +캠퍼스:명:24
  +캠페인:명:40
  +캠프:명:25
  +캠프장:명:1
  +캠프파이어:명:2
  +캠피벡터균:명:1
  +캡:명:3
  +캡:명:6
  +캡방:부:1
  +캡슐형:명:1
  +캥:부:2
  +캥거루:명:2
  +캭:부:1
  +커닝:명:6
  +커닝하다:동:1
  +커다랗다:형:254
  +커리어:명:1
  +커리큘럼:명:1
  +커뮤니케이션:명:111
  +커뮤니케이션하다:동:1
  +커미셔너:명:1
  +커미션:명:9
  +커버:명:2
  +커버되다:동:1
  +커버하다:동:10
  +커브:명:11
  +커서:명:3
  +커지다:동:151
  +커터:명:5
  +커트:명:4
  +커트하다:동:1
  +커튼:명:30
  +커튼레일:명:1
  +커튼집:명:3
  +커틀릿:명:1
  +커팅:명:2
  +커팅법:명:1
  +커플:명:44
  +커피:명:511
  +커피광:명:1
  +커피색:명:3
  +커피숍:명:8
  +커피액:명:1
  +커피포트:명:3
  +컥컥:부:2
  +컨디션:명:16
  +컨베이어:명:1
  +컨베이어러:명:1
  +컨벤션:명:1
  +컨설팅:명:5
  +컨소시엄:명:5
  +컨실러:명:1
  +컨테이너:명:6
  +컨테이너선:명:1
  +컨트롤:명:14
  +컨트롤하다:동:3
  +컨트리:명:1
  +컬:명:2
  +컬러:명:41
  +컬러복사기:명:1
  +컬러텔레비전:명:4
  +컬러풀:명:1
  +컬러화:명:1
  +컬렉션:명:5
  +컬트:명:3
  +컬하다:동:1
  +컴:명:4
  +컴맹:명:1
  +컴백:명:1
  +컴백하다:동:3
  +컴커무레하다:형:1
  +컴컴하다:형:5
  +컴파일러:명:1
  +컴퍼스:명:1
  +컴퓨터:명:675
  +컴퓨터망:명:1
  +컴퓨터실:명:2
  +컴퓨터업계:명:1
  +컴퓨터업체:명:2
  +컴퓨터화되다:동:3
  +컴퓨트하다:동:1
  +컵:명:162
  +컵케이크:명:1
  +컷:명:4
  +컷인:명:1
  +컹컹:부:4
  +케어:명:3
  +케이:명:1
  +케이블:명:11
  +케이스:명:16
  +케이스:명:6
  +케이에스:명:3
  +케이크:명:11
  +케첩:명:2
  +케케묵다:형:2
  +케키:명:7
  +켐프레이션:명:1
  +켕기다:동:5
  +켜:명:4
  +켜다:동:13
  +켜다:동:5
  +켜다:동:89
  +켜지다:동:45
  +켜켜로:부:1
  +켜켜이:부:3
  +켤레:의:10
  +코:명:173
  +코감기:명:3
  +코끝:명:20
  +코끼리:명:15
  +코냑:명:2
  +코너:명:89
  +코너킥:명:6
  +코대답:명:1
  +코드:명:1
  +코드:명:2
  +코드:명:97
  +코드화하다:동:1
  +코디:명:1
  +코디네이터:명:2
  +코딩:명:3
  +코딩하다:동:2
  +코딱지:명:7
  +코뚜레:명:2
  +코란:명:1
  +코러스:명:5
  +코르크:명:2
  +코맹맹이:명:1
  +코멘트:명:4
  +코뮤니즘:명:1
  +코미디:명:25
  +코미디물:명:1
  +코미디언:명:9
  +코믹:명:6
  +코믹하다:형:5
  +코밑:명:6
  +코밑수염:명:2
  +코볼:명:1
  +코브라:명:4
  +코빼기:명:3
  +코뼈:명:2
  +코뿔소:명:2
  +코스:명:62
  +코스모스:명:1
  +코스모스:명:16
  +코스모스꽃:명:1
  +코스모폴리탄적:명:1
  +코스트:명:3
  +코알라:명:2
  +코앞:명:14
  +코어:명:1
  +코웃음:명:7
  +코일:명:7
  +코쟁이:명:1
  +코치:명:28
  +코치:명:35
  +코치레:명:2
  +코치론:명:1
  +코치하다:동:2
  +코칭스태프:명:5
  +코카인:명:1
  +코코넛:명:1
  +코코아:명:3
  +코트:명:17
  +코트:명:8
  +코팅:명:4
  +코페크:의:1
  +코펠:명:2
  +코피:명:21
  +코흘리개:명:4
  +콕콕:부:2
  +콘:명:1
  +콘:명:1
  +콘도:명:5
  +콘도미니엄:명:1
  +콘돔:명:7
  +콘서트:명:15
  +콘솔:명:1
  +콘체르탄테:명:1
  +콘크리트:명:21
  +콘택트:명:1
  +콘택트렌즈:명:2
  +콘테스트:명:1
  +콘트라베이스:명:3
  +콘트라포스토:명:1
  +콘플레이크:명:2
  +콜:명:7
  +콜걸:명:5
  +콜드크림:명:1
  +콜라:명:33
  +콜라주:명:1
  +콜레라:명:4
  +콜레스테롤:명:17
  +콜록콜록:부:2
  +콜타르:명:1
  +콜택시:명:1
  +콤바인:명:22
  +콤비:명:2
  +콤비네이션:명:1
  +콤팩트디스크:명:3
  +콤플렉스:명:74
  +콤플렉스화하다:동:1
  +콧구멍:명:4
  +콧기름:명:1
  +콧김:명:5
  +콧날:명:6
  +콧노래:명:9
  +콧대:명:9
  +콧등:명:11
  +콧물:명:9
  +콧물감기:명:1
  +콧방귀:명:3
  +콧방울:명:5
  +콧배기:명:1
  +콧소리:명:2
  +콧속:명:4
  +콧수염:명:7
  +콧잔등:명:2
  +콧잔등이:명:1
  +콩:명:98
  +콩과:명:2
  +콩국수:명:1
  +콩깍지:명:5
  +콩나물:명:49
  +콩나물국:명:8
  +콩당콩당:부:1
  +콩밥:명:1
  +콩밭:명:4
  +콩새:명:1
  +콩알:명:11
  +콩잎:명:1
  +콩자반:명:1
  +콩장:명:1
  +콩제비꽃:명:1
  +콩조림:명:4
  +콩콩:부:3
  +콩쿠르:명:11
  +콩트:명:14
  +콩트집:명:1
  +콩팥:명:9
  +콩팥염:명:1
  +콱:부:6
  +콱콱:부:1
  +콸콸:부:4
  +쾅:부:11
  +쾅쾅:부:3
  +쾅쾅거리다:동:2
  +쾌:명:1
  +쾌감:명:50
  +쾌거:명:1
  +쾌도난마:명:1
  +쾌락:명:16
  +쾌락적:명:1
  +쾌락주의:명:1
  +쾌자:명:2
  +쾌재:명:6
  +쾌적감:명:1
  +쾌적하다:형:21
  +쾌지나:감:2
  +쾌차:명:1
  +쾌청:명:1
  +쾌청하다:형:3
  +쾌활:명:1
  +쾌활하다:형:3
  +쾌히:부:3
  +쿠데타:명:32
  +쿠데타적:관:4
  +쿠데타적:명:1
  +쿠려지다:동:1
  +쿠션:명:5
  +쿠키:명:2
  +쿠킹:명:3
  +쿡:명:2
  +쿡:부:9
  +쿡쿡:부:7
  +쿡쿡거리다:동:2
  +쿨:명:2
  +쿨럭쿨럭:부:1
  +쿨쩍대다:동:1
  +쿨쿨:부:1
  +쿨투레:명:1
  +쿨하다:형:1
  +쿰쿰하다:형:1
  +쿵:부:6
  +쿵쾅거리다:동:4
  +쿵쿵:부:7
  +쿵쿵거리다:동:1
  +쿼터:명:3
  +쿼터제:명:1
  +쿼티:명:7
  +퀀셋:명:3
  +퀘리:명:2
  +퀴어:명:4
  +퀴즈:명:7
  +퀴퀴하다:형:3
  +퀵:명:1
  +퀼로트형:명:1
  +큐:명:11
  +큐레이터:명:3
  +큐시:명:1
  +큐시트:명:2
  +크기:명:214
  +크나크다:형:11
  +크낙새:명:1
  +크다:동:78
  +크다:형:2,835
  +크라우칭:명:4
  +크래바스:명:3
  +크래커:명:4
  +크랭크:명:2
  +크랭크축:명:1
  +크레디트:명:1
  +크레바스:명:1
  +크레용:명:4
  +크레인:명:3
  +크레파스:명:12
  +크로마뇽인:명:2
  +크로마키:명:12
  +크로스:명:2
  +크로스바:명:5
  +크로스워드:명:1
  +크로켓:명:4
  +크롤:명:1
  +크루아상:명:3
  +크르릉거리다:동:2
  +크리스마스:명:14
  +크리스마스이브:명:1
  +크리스마스트리:명:1
  +크리스천:명:1
  +크리스털:명:1
  +크리스트교:명:1
  +크림:명:43
  +크림소스:명:1
  +크림수프:명:1
  +크림치즈:명:12
  +큰개별꽃:명:1
  +큰고모:명:2
  +큰고모부:명:1
  +큰괭이밥:명:2
  +큰굿:명:8
  +큰기룩새:명:1
  +큰기침:명:2
  +큰길:명:19
  +큰길가:명:3
  +큰놈:명:2
  +큰누나:명:2
  +큰당숙:명:1
  +큰대:명:3
  +큰대감마님:명:1
  +큰댁:명:4
  +큰돈:명:11
  +큰딸:명:8
  +큰마님:명:3
  +큰마음:명:4
  +큰말똥가리:명:1
  +큰맘:명:3
  +큰머리:명:1
  +큰물:명:4
  +큰발윗수염박쥐:명:1
  +큰방:명:2
  +큰별꽃:명:1
  +큰부리새:명:1
  +큰불:명:2
  +큰비:명:3
  +큰사람:명:2
  +큰사랑:명:2
  +큰살림:명:1
  +큰서방님:명:1
  +큰소리:명:15
  +큰소리치다:동:9
  +큰손:명:4
  +큰스님:명:1
  +큰아들:명:15
  +큰아버지:명:9
  +큰아이:명:7
  +큰애:명:4
  +큰어머니:명:3
  +큰언니:명:6
  +큰오라버니:명:1
  +큰오빠:명:9
  +큰외삼촌:명:2
  +큰외숙모:명:1
  +큰이모:명:2
  +큰이모부:명:1
  +큰일:명:1
  +큰일:명:97
  +큰절:명:22
  +큰절하다:동:4
  +큰족제비고사리:명:1
  +큰집:명:4
  +큰창자:명:1
  +큰처남:명:1
  +큰코다치다:동:2
  +큰할아버지:명:1
  +큰형:명:10
  +클:명:4
  +클라리넷:명:2
  +클라이맥스:명:3
  +클래스:명:1
  +클래스메이트:명:1
  +클래식:명:7
  +클랙슨:명:5
  +클러치:명:2
  +클럽:명:31
  +클레이:명:2
  +클레임:명:1
  +클렌저:명:15
  +클렌징:명:24
  +클렌징하다:동:3
  +클로렐라:명:2
  +클로즈업:명:1
  +클로즈업되다:동:3
  +클로즈업시키다:동:1
  +클로즈업하다:동:1
  +클로징:명:1
  +클리너:명:1
  +클리닉:명:16
  +클릭:명:2
  +클릭하다:동:1
  +클린업:명:2
  +클린테크놀로지:명:1
  +클립:명:1
  +큼지막하다:형:6
  +큼직큼직하다:형:5
  +큼직하다:형:12
  +큼큼:부:1
  +킁킁:부:1
  +킁킁거리다:동:5
  +키:명:1
  +키:명:16
  +키:명:2
  +키:명:204
  +키다리:명:1
  +키득거리다:동:1
  +키들거리다:동:2
  +키보드:명:8
  +키스:명:31
  +키스하다:동:3
  +키우다:동:227
  +키워지다:동:2
  +키위:명:4
  +키조개:명:2
  +키질하다:동:1
  +키치:명:1
  +키친타월:명:1
  +키커:명:4
  +키핑력:명:1
  +킥:명:31
  +킥킥:부:4
  +킥킥거리다:동:3
  +킥킥대다:동:5
  +킨트:명:2
  +킬로:의:16
  +킬로그램:의:76
  +킬로리터:의:1
  +킬로미터:의:110
  +킬로바이트:의:5
  +킬로배:명:1
  +킬로비트:의:2
  +킬로와트:의:11
  +킬로칼로리:의:7
  +킬로헤르츠:의:2
  +킬킬대다:동:1
  +타:관:26
  +타:명:1
  +타:명:1
  +타각:명:2
  +타개:명:4
  +타개되다:동:1
  +타개책:명:3
  +타개하다:동:4
  +타건:명:4
  +타격:명:42
  +타격대:명:1
  +타격받다:동:3
  +타결:명:12
  +타결되다:동:6
  +타결책:명:1
  +타결하다:동:3
  +타계하다:동:3
  +타고나다:동:44
  +타관송치:명:2
  +타교:명:1
  +타구:명:1
  +타국:명:5
  +타국만리:명:1
  +타군:명:1
  +타기시하다:동:1
  +타깃:명:1
  +타닌산:명:1
  +타다:동:1
  +타다:동:1
  +타다:동:103
  +타다:동:12
  +타다:동:27
  +타다:동:3
  +타다:동:33
  +타다:동:736
  +타닥:부:2
  +타당:명:4
  +타당성:명:30
  +타당하다:형:35
  +타도:명:7
  +타도되다:동:1
  +타도하다:동:2
  +타들다:동:8
  +타락:명:39
  +타락상:명:1
  +타락시키다:동:7
  +타락죽:명:1
  +타락하다:동:23
  +타령:명:23
  +타령하다:동:1
  +타르:명:1
  +타르타르소스:명:1
  +타면:명:3
  +타박:명:2
  +타박받다:동:1
  +타박상:명:3
  +타박타박:부:2
  +타박하다:동:2
  +타블라:명:1
  +타블로:명:1
  +타블로이드판:명:1
  +타사:명:15
  +타산:명:1
  +타산성:명:1
  +타산식:명:1
  +타산적:명:3
  +타산지석:명:3
  +타살:명:10
  +타살:명:4
  +타살되다:동:1
  +타살하다:동:1
  +타성:명:6
  +타성적:관:1
  +타성적:명:1
  +타성화되다:동:1
  +타아:명:1
  +타악기:명:1
  +타액선:명:2
  +타오르다:동:34
  +타운:명:2
  +타원:명:3
  +타원형:명:9
  +타월:명:13
  +타율:명:2
  +타율:명:2
  +타율성론:명:3
  +타율적:관:1
  +타율적:명:1
  +타의:명:6
  +타의적:명:1
  +타이:명:3
  +타이르다:동:21
  +타이머:명:1
  +타이밍:명:5
  +타이어:명:6
  +타이츠:명:1
  +타이트스커트:명:1
  +타이틀:명:16
  +타이틀롤:명:4
  +타이틀전:명:1
  +타이프:명:1
  +타이프라이터:명:1
  +타이핑:명:3
  +타이핑하다:동:1
  +타인:명:48
  +타일:명:8
  +타임:명:6
  +타임대:명:1
  +타임머신:명:8
  +타입:명:45
  +타자:명:10
  +타자:명:9
  +타자건:명:1
  +타자계:명:1
  +타자기:명:23
  +타자법:명:1
  +타자수:명:1
  +타작하다:동:1
  +타전:명:1
  +타전하다:동:1
  +타점:명:4
  +타조:명:3
  +타종:명:2
  +타종수:명:5
  +타지:명:3
  +타지방:명:3
  +타진하다:동:5
  +타처:명:2
  +타천:명:1
  +타칭:명:1
  +타파:명:4
  +타파되다:동:2
  +타파하다:동:11
  +타향:명:3
  +타향살이:명:1
  +타협:명:27
  +타협안:명:1
  +타협적:관:4
  +타협점:명:2
  +타협하다:동:12
  +탁:부:34
  +탁견:명:1
  +탁구:명:14
  +탁구공:명:3
  +탁구관:명:1
  +탁구대:명:4
  +탁구장:명:2
  +탁류:명:1
  +탁발:명:1
  +탁발식:명:1
  +탁본하다:동:1
  +탁상:명:3
  +탁상공론:명:1
  +탁상시계:명:3
  +탁상출판:명:2
  +탁송:명:1
  +탁아:명:9
  +탁아방:명:1
  +탁아소:명:6
  +탁아원:명:2
  +탁엽:명:1
  +탁월:명:2
  +탁월하다:형:43
  +탁자:명:42
  +탁주:명:2
  +탁탁:부:9
  +탁하다:형:9
  +탁해지다:동:1
  +탄:명:3
  +탄:명:5
  +탄가루:명:1
  +탄광:명:15
  +탄광업체:명:1
  +탄광촌:명:2
  +탄도학:명:1
  +탄두:명:1
  +탄띠:명:1
  +탄력:명:19
  +탄력성:명:5
  +탄력적:관:1
  +탄력적:명:3
  +탄로:명:2
  +탄복하다:동:4
  +탄산:명:1
  +탄산가스:명:12
  +탄산수:명:1
  +탄산음료:명:4
  +탄생:명:50
  +탄생되다:동:2
  +탄생시키다:동:14
  +탄생일:명:3
  +탄생지:명:1
  +탄생하다:동:51
  +탄성:명:1
  +탄성:명:10
  +탄성파:명:1
  +탄소:명:7
  +탄수화물:명:7
  +탄식:명:9
  +탄식하다:동:8
  +탄압:명:48
  +탄압받다:동:1
  +탄압하다:동:8
  +탄약실:명:3
  +탄원:명:1
  +탄원서:명:3
  +탄원하다:동:2
  +탄재:명:1
  +탄저병:명:1
  +탄전:명:4
  +탄좌:명:2
  +탄탄대로:명:1
  +탄탄하다:형:15
  +탄탄히:부:1
  +탄하다:동:2
  +탄핵:명:6
  +탄핵권:명:1
  +탄핵하다:동:1
  +탄화수소:명:1
  +탈:명:20
  +탈:명:6
  +탈각하다:동:1
  +탈것:명:4
  +탈고하다:동:1
  +탈곡기:명:1
  +탈골:명:3
  +탈구:명:2
  +탈구조화:명:1
  +탈근대적:관:1
  +탈꼴찌:명:3
  +탈냉전:명:3
  +탈냉전기:명:1
  +탈네모꼴:명:5
  +탈놀이:명:1
  +탈당:명:8
  +탈당하다:동:2
  +탈대권:명:1
  +탈락:명:2
  +탈락되다:동:3
  +탈락률:명:1
  +탈락시키다:동:2
  +탈락자:명:7
  +탈락하다:동:17
  +탈루:명:2
  +탈모:명:1
  +탈모증:명:2
  +탈바꿈:명:2
  +탈바꿈하다:동:8
  +탈법:명:17
  +탈법적:관:4
  +탈법적:명:1
  +탈북:명:2
  +탈북자:명:4
  +탈색:명:1
  +탈색되다:동:1
  +탈선:명:10
  +탈선하다:동:1
  +탈성별화:명:1
  +탈세:명:18
  +탈세왕:명:1
  +탈세하다:동:2
  +탈속하다:동:1
  +탈수:명:1
  +탈수기:명:1
  +탈영:명:2
  +탈영병:명:2
  +탈옥:명:1
  +탈옥수:명:1
  +탈옥하다:동:1
  +탈의실:명:1
  +탈이념:명:1
  +탈일상성:명:1
  +탈점:명:3
  +탈점하다:동:1
  +탈정치적:관:1
  +탈정치화:명:1
  +탈주:명:12
  +탈주자:명:1
  +탈주하다:동:2
  +탈진:명:1
  +탈진하다:동:2
  +탈집단주의:명:1
  +탈출:명:26
  +탈출구:명:7
  +탈출기:명:2
  +탈출시키다:동:1
  +탈출자:명:1
  +탈출하다:동:31
  +탈춤:명:13
  +탈취:명:1
  +탈취당하다:동:2
  +탈취하다:동:10
  +탈카페인:명:3
  +탈탈:부:1
  +탈퇴:명:27
  +탈퇴시키다:동:1
  +탈퇴하다:동:8
  +탈퇴형:명:9
  +탈피:명:6
  +탈피하다:동:23
  +탈환:명:1
  +탈환하다:동:1
  +탈황:명:1
  +탐:명:1
  +탐관오리:명:1
  +탐구:명:5
  +탐구:명:70
  +탐구심:명:3
  +탐구하다:동:15
  +탐구하다:동:7
  +탐나다:동:1
  +탐내다:동:5
  +탐닉:명:1
  +탐닉되다:동:1
  +탐닉하다:동:3
  +탐독하다:동:4
  +탐문:명:2
  +탐문하다:동:1
  +탐미주의자:명:1
  +탐미주의적:명:1
  +탐방:명:5
  +탐방자:명:3
  +탐방하다:동:2
  +탐사:명:9
  +탐사선:명:3
  +탐사하다:동:4
  +탐색:명:10
  +탐색기:명:1
  +탐색하다:동:12
  +탐스럽다:형:6
  +탐식:명:1
  +탐신:명:1
  +탐욕:명:9
  +탐욕스럽다:형:6
  +탐욕적:명:1
  +탐정:명:3
  +탐지:명:3
  +탐지기:명:2
  +탐지하다:동:7
  +탐침:명:1
  +탐탁하다:형:5
  +탐하다:동:7
  +탐학:명:1
  +탐험:명:5
  +탐험가:명:1
  +탐험관:명:3
  +탐험하다:동:1
  +탑:명:82
  +탑돌이:명:1
  +탑승:명:10
  +탑승자:명:3
  +탑승하다:동:6
  +탑신:명:1
  +탑재:명:1
  +탑재되다:동:1
  +탑재하다:동:1
  +탓:명:188
  +탓:의:2
  +탓하다:동:23
  +탓허다:동:1
  +탕:명:4
  +탕:명:5
  +탕:부:56
  +탕감:명:3
  +탕건:명:1
  +탕녀:명:1
  +탕반:명:2
  +탕아:명:2
  +탕약:명:2
  +탕자:명:1
  +탕진:명:1
  +탕진하다:동:3
  +탕탕:부:3
  +탕탕하다:형:1
  +태:명:1
  +태:명:14
  +태:명:9
  +태고:명:1
  +태고:명:4
  +태곳적:관:2
  +태곳적:명:1
  +태교:명:15
  +태권도:명:28
  +태권도인:명:1
  +태권도장:명:1
  +태그:명:1
  +태그래픽:명:1
  +태극:명:5
  +태극기:명:2
  +태극형:명:2
  +태깔:명:4
  +태내:명:1
  +태도:명:293
  +태동:명:10
  +태동하다:동:2
  +태두:명:1
  +태만:명:2
  +태만하다:형:2
  +태만해지다:명:1
  +태명:명:1
  +태몽:명:5
  +태반:명:14
  +태반:명:8
  +태반성:명:1
  +태부족:명:1
  +태부족하다:형:1
  +태사:명:1
  +태사령:명:3
  +태산:명:15
  +태산준령:명:1
  +태산형:명:1
  +태생:명:8
  +태세:명:31
  +태아:명:106
  +태양:명:127
  +태양:명:3
  +태양계:명:12
  +태양광:명:9
  +태양력:명:4
  +태양신:명:9
  +태양열:명:10
  +태양초:명:1
  +태어나다:동:320
  +태연:명:1
  +태연스럽다:형:1
  +태연하다:형:18
  +태연히:부:4
  +태엽:명:2
  +태우다:동:44
  +태우다:동:72
  +태워지다:동:2
  +태음:명:1
  +태음력:명:2
  +태자:명:2
  +태조:명:28
  +태주:명:1
  +태중:명:2
  +태질:명:1
  +태초:명:11
  +태클:명:1
  +태토:명:2
  +태평:명:2
  +태평성대:명:1
  +태평스럽다:형:2
  +태평하다:형:2
  +태풍:명:40
  +태풍권:명:2
  +태형:명:1
  +태환:명:1
  +택배:명:1
  +택배료:명:1
  +택스:명:1
  +택시:명:122
  +택시비:명:4
  +택일:명:1
  +택일하다:동:1
  +택일하다:동:2
  +택지:명:26
  +택하다:동:70
  +탤런트:명:78
  +탭:명:1
  +탯줄:명:8
  +탱고:명:2
  +탱고풍:명:1
  +탱자나무:명:1
  +탱크:명:28
  +탱크로리:명:1
  +탱탱:부:1
  +탱탱하다:형:3
  +탱탱해지다:동:1
  +탱화:명:1
  +터:명:70
  +터:의:533
  +터널:명:24
  +터놓다:동:12
  +터덜거리다:동:1
  +터덜터덜:부:7
  +터득:명:1
  +터득되다:동:1
  +터득되어지다:동:1
  +터득하다:동:17
  +터뜨리다:동:84
  +터럭:명:1
  +터리풀:명:1
  +터무니없다:형:12
  +터무니없이:부:5
  +터미널:명:20
  +터미네이터:명:1
  +터벅터벅:부:4
  +터번:명:1
  +터부:명:3
  +터부시되다:동:1
  +터빈:명:6
  +터울:명:4
  +터전:명:19
  +터줏대감:명:3
  +터지다:동:208
  +터지다:보:6
  +터치:명:2
  +터치라인:명:2
  +터치톤:명:1
  +터치하다:동:1
  +터키:명:2
  +터트리다:동:3
  +터프하다:형:3
  +턱:명:1
  +턱:명:1
  +턱:명:2
  +턱:명:63
  +턱:부:4
  +턱:의:21
  +턱걸이:명:2
  +턱뼈:명:6
  +턱살:명:1
  +턱수염:명:1
  +턱시도:명:4
  +턱없다:형:1
  +턱없이:부:13
  +턱주가리:명:1
  +턱짓:명:3
  +턱턱:부:1
  +턴테이블:명:4
  +털:명:68
  +털거미:명:1
  +털구멍:명:1
  +털끝:명:2
  +털다:동:79
  +털레털레:부:2
  +털리다:동:4
  +털목도리:명:1
  +털버덕:부:2
  +털빛:명:1
  +털생강나무:명:1
  +털수세이:명:1
  +털실:명:1
  +털썩:부:5
  +털어놓다:동:57
  +털어먹다:동:1
  +털외투:명:1
  +털이:명:2
  +털커덩:부:1
  +털털하다:형:2
  +텀벙:부:2
  +텀블링:명:4
  +텁텁하다:형:2
  +텃논:명:2
  +텃밭:명:6
  +텃새:명:29
  +텃세:명:5
  +텃세권:명:1
  +텅:부:43
  +텅스텐:명:6
  +텅텅:부:8
  +테:명:6
  +테니스:명:36
  +테니스장:명:3
  +테니스화:명:1
  +테두리:명:45
  +테라스:명:1
  +테러:명:37
  +테러리스트:명:9
  +테러리즘:명:6
  +테레비:명:3
  +테마:명:5
  +테스터기:명:1
  +테스토스테론:명:5
  +테스트:명:18
  +테스트하다:동:2
  +테스팅:명:1
  +테이블:명:81
  +테이블보:명:1
  +테이사크스병:명:1
  +테이프:명:67
  +테크네:명:8
  +테크노피아관:명:1
  +테크놀로지:명:2
  +테크닉:명:9
  +테킬라:명:5
  +테트라:명:1
  +테트라사이클린:명:1
  +테트라하이드로푸란:명:1
  +텍:명:1
  +텍스트:명:87
  +텐트:명:12
  +텐트조:명:2
  +텔레비:명:1
  +텔레비전:명:239
  +텔레타이프:명:1
  +텔렉스:명:2
  +템포:명:4
  +토:명:4
  +토:명:8
  +토광묘:명:1
  +토굴:명:4
  +토기:명:30
  +토기관:명:1
  +토끼:명:42
  +토끼다:동:3
  +토끼띠:명:2
  +토끼몰이:명:1
  +토너:명:1
  +토너:명:3
  +토닥거리다:동:4
  +토닥이다:동:1
  +토대:명:112
  +토대하다:형:2
  +토라지다:동:4
  +토란:명:1
  +토란대:명:1
  +토로:명:3
  +토로하다:동:8
  +토론:명:115
  +토론:명:2
  +토론되다:동:1
  +토론식:명:1
  +토론자:명:16
  +토론장:명:4
  +토론집:명:1
  +토론하다:동:28
  +토론회:명:37
  +토마토:명:58
  +토마토케첩:명:24
  +토막:명:42
  +토막토막:부:2
  +토멸하다:동:1
  +토목:명:9
  +토목과:명:4
  +토목학자:명:1
  +토목학회:명:1
  +토박이:명:6
  +토방:명:1
  +토벌:명:2
  +토벌군:명:6
  +토벌하다:동:1
  +토사:명:1
  +토사곽란:명:2
  +토사구팽:명:4
  +토사물:명:5
  +토산:명:2
  +토산품:명:3
  +토색:명:1
  +토성:명:3
  +토성:명:4
  +토성:명:5
  +토성분정:명:8
  +토속:명:2
  +토속성:명:1
  +토속적:관:3
  +토속적:명:4
  +토수:명:1
  +토스:명:1
  +토스되다:동:1
  +토스카나:명:2
  +토스터:명:3
  +토스트:명:5
  +토스하다:동:3
  +토실토실:부:2
  +토실해지다:동:1
  +토씨:명:4
  +토아발:명:1
  +토악질:명:1
  +토양:명:65
  +토왜:명:1
  +토요:명:2
  +토요일:명:93
  +토의:명:23
  +토의되다:동:1
  +토의조:명:1
  +토의하다:동:10
  +토익:명:1
  +토인:명:1
  +토일렛:명:1
  +토장국:명:1
  +토장찌개:명:1
  +토정비결:명:2
  +토종:명:11
  +토주:명:3
  +토지:명:339
  +토지관:명:2
  +토지세:명:3
  +토지적:관:1
  +토질:명:4
  +토착:명:14
  +토착민:명:1
  +토착성:명:1
  +토착신:명:1
  +토착적:관:1
  +토착적:명:1
  +토착족:명:1
  +토착화:명:1
  +토착화하다:동:1
  +토크:명:10
  +토큰:명:2
  +토킹:명:1
  +토털:명:3
  +토테미즘적:관:1
  +토템적:관:1
  +토플:명:2
  +토픽:명:2
  +토하다:동:43
  +토해지다:동:1
  +토현삼:명:2
  +토호:명:1
  +톡:부:15
  +톡탁거리다:동:3
  +톡톡:부:10
  +톡톡하다:형:1
  +톡톡히:부:9
  +톤:명:25
  +톤:의:180
  +톨:의:11
  +톨게이트:명:3
  +톨레랑스:명:1
  +톱:명:10
  +톱:명:15
  +톱날:명:2
  +톱뉴스:명:4
  +톱니:명:14
  +톱니바퀴:명:6
  +톱몸:명:3
  +톱밥:명:2
  +톱스타:명:6
  +톱자루:명:1
  +톱질:명:10
  +톱질하다:동:4
  +톱클래스:명:2
  +톳제비:명:25
  +통:명:1
  +통:명:1
  +통:명:2
  +통:명:4
  +통:명:6
  +통:명:75
  +통:부:14
  +통:의:18
  +통:의:24
  +통가죽:명:1
  +통감:명:1
  +통감:명:1
  +통감하다:동:6
  +통계:명:61
  +통계적:관:3
  +통계적:명:1
  +통계학:명:1
  +통계학과:명:1
  +통고:명:5
  +통고되다:동:1
  +통고받다:동:1
  +통고서:명:1
  +통고하다:동:6
  +통곡:명:11
  +통곡하다:동:6
  +통과:명:29
  +통과되다:동:8
  +통과시키다:동:10
  +통과조:명:1
  +통과하다:동:55
  +통관:명:7
  +통관시키다:동:1
  +통괄:명:1
  +통괄하다:동:1
  +통굽:명:2
  +통권:명:1
  +통근:명:1
  +통근하다:동:1
  +통금:명:4
  +통기성:명:2
  +통기타:명:1
  +통깨:명:11
  +통나무:명:11
  +통나무배:명:2
  +통나무집:명:2
  +통념:명:42
  +통달하다:동:1
  +통닭:명:1
  +통닭구이:명:1
  +통닭집:명:4
  +통독:명:18
  +통돼지:명:3
  +통렬하다:형:3
  +통렬히:부:1
  +통로:명:46
  +통마늘:명:2
  +통밀:명:1
  +통박하다:동:1
  +통반장:명:1
  +통발:명:1
  +통방:명:2
  +통배추:명:1
  +통보:명:13
  +통보되다:동:2
  +통보받다:동:2
  +통보하다:동:20
  +통불교:명:5
  +통불교적:명:1
  +통뼈:명:1
  +통사:명:1
  +통사정:명:4
  +통산:명:8
  +통상:명:53
  +통상:명:6
  +통상:부:7
  +통상관:명:2
  +통상국장:명:2
  +통상적:관:2
  +통상적:명:3
  +통석:명:7
  +통선:명:15
  +통선장:명:11
  +통설:명:3
  +통설화되다:동:1
  +통성명:명:1
  +통성명하다:동:2
  +통속:명:4
  +통속극:명:2
  +통속성:명:4
  +통속적:관:1
  +통속적:명:5
  +통속화:명:1
  +통솔하다:동:1
  +통수권:명:2
  +통시:명:1
  +통시:명:1
  +통시적:명:7
  +통신:명:249
  +통신관:명:2
  +통신국:명:1
  +통신국:명:1
  +통신량:명:2
  +통신망:명:32
  +통신문:명:4
  +통신병:명:2
  +통신부:명:2
  +통신사:명:14
  +통신사:명:5
  +통신선:명:1
  +통신인:명:1
  +통신하다:동:2
  +통어하다:동:1
  +통역:명:18
  +통역관:명:2
  +통역병:명:1
  +통역인:명:1
  +통역하다:동:3
  +통오징어:명:1
  +통용되다:동:14
  +통용시키다:동:1
  +통원:명:4
  +통유리:명:2
  +통유리창:명:1
  +통으로:부:1
  +통음:명:1
  +통일:명:339
  +통일감:명:2
  +통일기:명:2
  +통일되다:동:28
  +통일론:명:3
  +통일벼:명:2
  +통일성:명:20
  +통일시키다:동:4
  +통일안:명:2
  +통일장:명:6
  +통일적:관:9
  +통일적:명:11
  +통일체:명:2
  +통일하다:동:35
  +통장:명:56
  +통장식:명:3
  +통전:명:3
  +통제:명:99
  +통제권:명:1
  +통제기:명:2
  +통제되다:동:12
  +통제력:명:6
  +통제받다:동:2
  +통제적:관:1
  +통제적:명:1
  +통제책:명:1
  +통제하다:동:32
  +통조림:명:12
  +통조림통:명:1
  +통증:명:94
  +통증학:명:1
  +통지:명:6
  +통지문:명:1
  +통지서:명:10
  +통지하다:동:7
  +통째:명:17
  +통찰:명:16
  +통찰력:명:6
  +통찰하다:동:4
  +통첩하다:동:1
  +통치:명:119
  +통치권:명:8
  +통치권자:명:2
  +통치력:명:1
  +통치마:명:3
  +통치배:명:1
  +통치자:명:15
  +통치처:명:1
  +통치하다:동:13
  +통칙:명:1
  +통칭:명:1
  +통칭되다:동:1
  +통칭하다:동:1
  +통쾌하다:형:6
  +통탄하다:동:2
  +통통:부:1
  +통통:부:3
  +통통배:명:1
  +통통하다:형:14
  +통통히:부:1
  +통틀다:동:5
  +통틀어:부:14
  +통폐합:명:17
  +통폐합설:명:3
  +통폐합하다:동:3
  +통풍:명:5
  +통풍관:명:1
  +통하다:동:1,674
  +통학:명:7
  +통학하다:동:2
  +통한:명:1
  +통할하다:동:1
  +통합:명:122
  +통합되다:동:14
  +통합론:명:1
  +통합성:명:1
  +통합시키다:동:5
  +통합액:명:1
  +통합적:관:8
  +통합적:명:2
  +통합하다:동:33
  +통행:명:19
  +통행금지:명:4
  +통행량:명:5
  +통행로:명:1
  +통행료:명:4
  +통행증:명:2
  +통행하다:동:5
  +통형:명:1
  +통혼권:명:1
  +통화:명:1
  +통화:명:39
  +통화:명:41
  +통화권:명:7
  +통화량:명:6
  +통화료:명:5
  +통화하다:동:6
  +통후추:명:4
  +퇴:명:2
  +퇴각하다:동:1
  +퇴거:명:7
  +퇴거되다:동:1
  +퇴거하다:동:1
  +퇴고:명:4
  +퇴고하다:동:1
  +퇴교당하다:동:1
  +퇴교생:명:1
  +퇴근:명:32
  +퇴근길:명:4
  +퇴근제:명:1
  +퇴근하다:동:18
  +퇴락:명:2
  +퇴로:명:1
  +퇴물:명:1
  +퇴보:명:3
  +퇴보시키다:동:1
  +퇴보하다:동:4
  +퇴비:명:4
  +퇴비화:명:1
  +퇴비화하다:동:1
  +퇴사:명:1
  +퇴사하다:동:2
  +퇴색:명:3
  +퇴색되다:동:4
  +퇴색하다:동:7
  +퇴역:명:1
  +퇴영하다:동:1
  +퇴원:명:11
  +퇴원하다:동:12
  +퇴임:명:21
  +퇴임하다:동:6
  +퇴장:명:1
  +퇴장:명:6
  +퇴장당하다:동:1
  +퇴장설:명:2
  +퇴장하다:동:2
  +퇴장하다:동:4
  +퇴적:명:1
  +퇴적되다:동:3
  +퇴적물:명:2
  +퇴적암:명:1
  +퇴적하다:동:1
  +퇴조:명:12
  +퇴조기:명:1
  +퇴조시키다:동:1
  +퇴조하다:동:3
  +퇴직:명:6
  +퇴직금:명:24
  +퇴직률:명:1
  +퇴직일:명:1
  +퇴직자:명:1
  +퇴직하다:동:2
  +퇴진:명:12
  +퇴진당하다:동:1
  +퇴진하다:동:6
  +퇴짜:명:1
  +퇴창:명:1
  +퇴창문:명:1
  +퇴청:명:1
  +퇴치:명:3
  +퇴치시키다:동:1
  +퇴치하다:동:2
  +퇴폐:명:14
  +퇴폐물:명:1
  +퇴폐미:명:1
  +퇴폐성:명:3
  +퇴폐율:명:1
  +퇴폐적:관:7
  +퇴폐적:명:15
  +퇴폐주의:명:4
  +퇴폐하다:동:1
  +퇴학:명:22
  +퇴학당하다:동:3
  +퇴학시키다:동:2
  +퇴행:명:1
  +퇴행성:명:5
  +퇴행적:관:2
  +퇴행하다:동:2
  +퇴화하다:동:1
  +툇마루:명:5
  +투:명:10
  +투:의:26
  +투고:명:12
  +투고되다:동:3
  +투고란:명:1
  +투과하다:동:3
  +투구:명:2
  +투구:명:4
  +투구하다:동:1
  +투금:명:1
  +투기:명:1
  +투기:명:1
  +투기:명:2
  +투기:명:60
  +투기꾼:명:2
  +투기성:명:1
  +투기심:명:1
  +투기적:관:1
  +투기하다:동:1
  +투덕이다:동:1
  +투덕투덕:부:1
  +투덜거리다:동:15
  +투덜대다:동:11
  +투덜투덜:부:1
  +투망식:명:1
  +투매:명:1
  +투매되다:동:1
  +투명:명:13
  +투명감:명:1
  +투명성:명:8
  +투명지:명:4
  +투명하다:형:55
  +투명해지다:동:2
  +투박하다:형:8
  +투베르쿨린:명:3
  +투병:명:3
  +투사:명:1
  +투사:명:7
  +투사기:명:4
  +투사되다:동:4
  +투사물:명:1
  +투사성:명:1
  +투사하다:동:2
  +투서:명:2
  +투서질하다:동:1
  +투석전:명:1
  +투석하다:동:1
  +투수:명:14
  +투숙:명:1
  +투숙객:명:1
  +투숙하다:동:2
  +투시:명:1
  +투시경:명:14
  +투시되다:동:1
  +투신:명:3
  +투신:명:8
  +투신사:명:11
  +투신자:명:1
  +투신자살:명:1
  +투신자살하다:동:1
  +투신하다:동:1
  +투약:명:3
  +투약하다:동:1
  +투어:명:11
  +투여:명:2
  +투여하다:동:3
  +투영:명:2
  +투영되다:동:10
  +투영하다:동:2
  +투옥:명:4
  +투옥되다:동:6
  +투우장:명:1
  +투융자:명:1
  +투입:명:30
  +투입구:명:1
  +투입되다:동:15
  +투입시키다:동:1
  +투입하다:동:31
  +투자:명:218
  +투자가:명:18
  +투자되다:동:3
  +투자비:명:2
  +투자액:명:2
  +투자자:명:48
  +투자하다:동:47
  +투쟁:명:219
  +투쟁가:명:1
  +투쟁성:명:2
  +투쟁적:명:2
  +투쟁하다:동:26
  +투전질:명:1
  +투전판:명:1
  +투정:명:8
  +투정하다:동:2
  +투지:명:8
  +투척:명:3
  +투척조:명:1
  +투척하다:동:2
  +투철하다:형:15
  +투철히:부:1
  +투표:명:57
  +투표구:명:1
  +투표권:명:7
  +투표권자:명:1
  +투표소:명:1
  +투표율:명:12
  +투표일:명:6
  +투표자:명:1
  +투표장:명:4
  +투표제:명:2
  +투표지:명:2
  +투표하다:동:5
  +투표함:명:1
  +투피스:명:7
  +투하:명:1
  +투하되다:동:2
  +투하하다:동:1
  +투항적:관:1
  +투항하다:동:1
  +투호:명:2
  +투혼:명:1
  +툭:부:41
  +툭툭:부:14
  +툭하면:부:6
  +툴툴거리다:동:1
  +툴툴대다:동:1
  +툴툴하다:동:1
  +툽툽하다:형:1
  +퉁:명:1
  +퉁구리:명:1
  +퉁기다:동:6
  +퉁명스럽다:형:20
  +퉁명스레:부:1
  +퉁명하다:형:1
  +퉁소:명:2
  +퉁탕:부:1
  +퉁탕거리다:동:1
  +퉁퉁:부:7
  +퉁퉁하다:형:1
  +퉤:부:2
  +퉤퉤:부:1
  +튀각:명:1
  +튀겨지다:동:2
  +튀기다:동:14
  +튀기다:동:25
  +튀김:명:13
  +튀김옷:명:5
  +튀다:동:50
  +튀밥:명:1
  +튀어나오다:동:49
  +튑:명:2
  +튕겨지다:동:5
  +튕기다:동:7
  +튜나:명:1
  +튜린:명:1
  +튜브:명:8
  +튤립:명:3
  +트다:동:13
  +트다:동:18
  +트라코마:명:1
  +트래핑:명:2
  +트랙:명:6
  +트랙터:명:1
  +트랜스미션:명:2
  +트랜지스터:명:16
  +트랩:명:3
  +트랩:명:4
  +트러블:명:5
  +트럭:명:59
  +트럭분:의:1
  +트럼펫:명:3
  +트렁크:명:4
  +트레이:명:4
  +트레이너:명:5
  +트레이닝셔츠:명:1
  +트레이드:명:2
  +트레이드되다:동:1
  +트레이드마크:명:3
  +트레일러:명:9
  +트렌드:명:1
  +트렌디:명:3
  +트로트:명:5
  +트로피:명:4
  +트롬본:명:1
  +트루:명:2
  +트리:명:1
  +트리밍:명:1
  +트리오:명:1
  +트리클:명:1
  +트리트먼트:명:1
  +트릭:명:5
  +트릴:명:1
  +트림:명:9
  +트이다:동:81
  +트집:명:7
  +특:명:1
  +특강:명:7
  +특검제:명:2
  +특고:명:1
  +특공대:명:1
  +특공대식:명:1
  +특권:명:26
  +특권적:관:2
  +특권층:명:1
  +특급:명:15
  +특기:명:8
  +특기생:명:2
  +특기자:명:4
  +특기하다:동:10
  +특단:명:2
  +특대형:명:1
  +특례:명:8
  +특무대장:명:2
  +특별:명:200
  +특별나다:형:2
  +특별반:명:1
  +특별법:명:20
  +특별법적:관:2
  +특별상:명:1
  +특별세:명:1
  +특별시:명:4
  +특별시민:명:1
  +특별실:명:1
  +특별하다:형:134
  +특별히:부:78
  +특보:명:10
  +특보:명:4
  +특사:명:1
  +특사:명:2
  +특산:명:8
  +특산물:명:4
  +특산종:명:1
  +특산품:명:3
  +특상품:명:1
  +특색:명:47
  +특선:명:2
  +특설:명:1
  +특성:명:208
  +특성화:명:2
  +특수:명:6
  +특수:명:75
  +특수대:명:2
  +특수복:명:1
  +특수부:명:1
  +특수성:명:32
  +특수자:명:1
  +특수직:명:1
  +특수층:명:1
  +특수하다:형:1
  +특수하다:형:48
  +특실:명:1
  +특약:명:3
  +특연:명:1
  +특용:명:5
  +특위:명:16
  +특유:명:67
  +특유하다:형:5
  +특융:명:3
  +특이:명:2
  +특이성:명:1
  +특이하다:형:41
  +특장:명:1
  +특장차:명:1
  +특전:명:1
  +특전:명:1
  +특정:명:117
  +특정인:명:14
  +특정일:명:1
  +특정하다:형:88
  +특조위:명:2
  +특종:명:13
  +특진:명:1
  +특질:명:19
  +특집:명:28
  +특집극:명:2
  +특집호:명:2
  +특징:명:267
  +특징적:명:12
  +특징지어지다:동:5
  +특징짓다:동:8
  +특차:명:2
  +특채:명:2
  +특채하다:동:1
  +특출:명:6
  +특출하다:형:3
  +특파원:명:13
  +특파원단:명:1
  +특품:명:3
  +특허:명:44
  +특허권:명:9
  +특허권자:명:1
  +특허되다:동:1
  +특허성:명:2
  +특혜:명:35
  +특혜성:명:1
  +특혜적:관:1
  +특화:명:5
  +특화하다:동:1
  +특활:명:2
  +특효:명:5
  +특효약:명:1
  +특훈:명:1
  +특히:부:1,004
  +튼실하다:형:1
  +튼튼:명:3
  +튼튼하다:형:71
  +튼튼해지다:동:7
  +튼튼히:부:16
  +틀:명:163
  +틀다:동:103
  +틀려먹다:동:1
  +틀려지다:동:1
  +틀려지리다:동:1
  +틀리다:동:121
  +틀리다:동:4
  +틀리다:형:2
  +틀림없다:형:127
  +틀림없이:부:39
  +틀어막다:동:7
  +틀어박히다:동:6
  +틀어잡다:동:2
  +틀어쥐다:동:4
  +틀어지다:동:5
  +틈:명:113
  +틈나다:동:5
  +틈바구니:명:9
  +틈새:명:8
  +틈서리:명:2
  +틈입하다:동:1
  +틈타다:동:13
  +틈틈이:부:9
  +틔우다:동:5
  +티:명:15
  +티:명:3
  +티:명:5
  +티:명:6
  +티:명:9
  +티격태격:부:1
  +티격태격하다:동:5
  +티끌:명:8
  +티미다인키나제:명:3
  +티백:명:1
  +티브이:명:230
  +티셔츠:명:16
  +티슈:명:4
  +티스푼:명:7
  +티오이:의:2
  +티자:명:1
  +티케이:명:4
  +티케이오:명:1
  +티켓:명:7
  +티타임:명:4
  +티푸스:명:1
  +틴에이저:명:2
  +틸리더텔러:명:1
  +팀:명:328
  +팀워크:명:7
  +팀원:명:3
  +팀장:명:4
  +팁:명:3
  +팅팅:부:1
  +파:명:16
  +파:명:2
  +파:명:59
  +파격:명:6
  +파격적:관:2
  +파격적:명:16
  +파견:명:24
  +파견관:명:1
  +파견대:명:1
  +파견되다:동:6
  +파견받다:동:1
  +파견제:명:1
  +파견하다:동:19
  +파계하다:동:1
  +파고:명:2
  +파고들다:동:50
  +파괴:명:121
  +파괴당하다:동:1
  +파괴되다:동:47
  +파괴력:명:3
  +파괴시키다:동:3
  +파괴적:관:2
  +파괴적:명:6
  +파괴하다:동:57
  +파국:명:10
  +파국적:관:2
  +파급:명:14
  +파급되다:동:7
  +파급시키다:동:1
  +파기:명:2
  +파기되다:동:2
  +파김치:명:3
  +파내다:동:10
  +파노라마:명:4
  +파노라마식:명:1
  +파노라마적:명:1
  +파농:명:1
  +파다:동:65
  +파다하다:형:9
  +파닥거리다:동:1
  +파닥이다:동:2
  +파도:명:110
  +파도치다:동:1
  +파동:명:43
  +파동론:명:1
  +파동성:명:1
  +파동하다:동:2
  +파두:명:2
  +파들거리다:동:1
  +파들파들:부:1
  +파라다이스:명:2
  +파라디클로로벤젠:명:1
  +파라솔:명:2
  +파라핀:명:1
  +파라핀염:명:1
  +파락호:명:1
  +파란:명:6
  +파란곡절:명:1
  +파란만장하다:형:4
  +파란색:명:11
  +파랑:명:14
  +파랑새:명:18
  +파랗다:형:58
  +파래지다:동:1
  +파력:명:3
  +파렴치:명:3
  +파렴치범:명:1
  +파렴치하다:형:13
  +파로틴:명:1
  +파르라니:부:1
  +파르르:부:6
  +파르르하다:동:2
  +파르스름하다:형:7
  +파릇파릇:부:2
  +파릇파릇하다:형:1
  +파릇하다:형:3
  +파리:명:36
  +파리똥:명:1
  +파리풀:명:1
  +파리하다:형:1
  +파마:명:7
  +파마머리:명:6
  +파마시키다:동:1
  +파마하다:동:6
  +파먹다:동:3
  +파먹히다:동:3
  +파메산:명:3
  +파면:명:4
  +파멸:명:13
  +파멸시키다:동:2
  +파문:명:38
  +파묻다:동:11
  +파묻히다:동:20
  +파바박:부:1
  +파밭:명:1
  +파벌:명:8
  +파병:명:16
  +파병되다:동:2
  +파병용:명:1
  +파병하다:동:2
  +파북:명:1
  +파뿌리:명:1
  +파삭:부:1
  +파삭파삭:부:1
  +파산:명:9
  +파산기:명:1
  +파산하다:동:2
  +파상적:명:4
  +파생:명:1
  +파생되다:동:7
  +파생하다:동:3
  +파선:명:2
  +파소콘:명:1
  +파손:명:10
  +파손되다:동:7
  +파손시키다:동:1
  +파송:명:1
  +파쇼:명:5
  +파수꾼:명:12
  +파스타:명:2
  +파스텔:명:3
  +파스텔화:명:1
  +파슬리:명:13
  +파시스트:명:4
  +파시스트적:관:1
  +파시즘:명:10
  +파악:명:56
  +파악되다:동:43
  +파악하다:동:239
  +파업:명:46
  +파업하다:동:3
  +파에야:명:1
  +파여지다:동:1
  +파열:명:1
  +파열되다:동:1
  +파열음:명:3
  +파우더:명:5
  +파운데이션:명:8
  +파운드:의:10
  +파워:명:9
  +파월:명:1
  +파이:명:2
  +파이다:동:4
  +파이팅:감:5
  +파이프:명:27
  +파이프라인:명:1
  +파인더:명:3
  +파인드:명:1
  +파인애플:명:5
  +파인주스:명:1
  +파일:명:61
  +파일럿:명:7
  +파일명:명:2
  +파작하다:동:1
  +파장:명:2
  +파장:명:24
  +파쟁:명:2
  +파전:명:3
  +파전:의:2
  +파종:명:3
  +파종기:명:1
  +파종하다:동:1
  +파죽지세:명:1
  +파지:명:1
  +파지다:동:1
  +파지장:명:1
  +파천:명:1
  +파천황:명:1
  +파출부:명:14
  +파출소:명:48
  +파출소장:명:2
  +파충류:명:4
  +파친코:명:3
  +파카:명:1
  +파킨슨병:명:2
  +파탄:명:19
  +파탄되다:동:2
  +파탄시키다:동:1
  +파탄자:명:3
  +파토스:명:1
  +파트:명:16
  +파트너:명:35
  +파트너십:명:1
  +파트롱:명:2
  +파트타임:명:2
  +파티:명:39
  +파티하다:동:1
  +파파:명:1
  +파편:명:10
  +파편화되다:동:2
  +파피루스:명:2
  +파하다:동:1
  +파하다:동:1
  +파행:명:11
  +파행성:명:1
  +파행적:관:1
  +파행적:명:6
  +파헤쳐지다:동:6
  +파헤치다:동:26
  +파히타풍:명:1
  +팍:부:12
  +팍스:명:7
  +팍팍:부:4
  +팍팍하다:형:5
  +판:명:34
  +판:명:38
  +판:명:48
  +판:명:6
  +판:의:61
  +판가름:명:4
  +판가름하다:동:2
  +판검사:명:4
  +판결:명:150
  +판결문:명:22
  +판결하다:동:3
  +판공비:명:4
  +판교:명:1
  +판국:명:23
  +판권:명:4
  +판단:명:200
  +판단되다:동:22
  +판단력:명:10
  +판단받다:동:1
  +판단하다:동:117
  +판도:명:9
  +판독기:명:6
  +판독하다:동:3
  +판때기:명:1
  +판례:명:18
  +판로:명:7
  +판막:명:1
  +판막증:명:1
  +판매:명:181
  +판매대:명:2
  +판매되다:동:19
  +판매량:명:9
  +판매력:명:11
  +판매망:명:1
  +판매사:명:2
  +판매소:명:3
  +판매액:명:4
  +판매원:명:11
  +판매율:명:1
  +판매전:명:1
  +판매점:명:1
  +판매직:명:1
  +판매하다:동:68
  +판명:명:1
  +판명되다:동:8
  +판명하다:동:1
  +판별:명:1
  +판별법:명:1
  +판별하다:동:7
  +판사:명:31
  +판상:명:1
  +판서:명:1
  +판서:명:6
  +판세:명:1
  +판소리:명:27
  +판소리론:명:1
  +판시:명:6
  +판시하다:동:11
  +판쓸이:명:1
  +판윤:명:1
  +판이:명:1
  +판이하다:형:8
  +판자:명:10
  +판자촌:명:2
  +판잣집:명:8
  +판전:명:1
  +판정:명:30
  +판정되다:동:4
  +판정승하다:동:1
  +판정패:명:1
  +판정하다:동:6
  +판지:명:2
  +판지:명:5
  +판촉:명:25
  +판촉물:명:1
  +판치다:동:4
  +판타지:명:1
  +판판이:부:1
  +판형:명:1
  +판화:명:10
  +팔:관:21
  +팔:명:234
  +팔:수:8
  +팔각:명:3
  +팔각금성:명:7
  +팔각정:명:1
  +팔각형:명:2
  +팔걸이:명:1
  +팔경:명:3
  +팔고:명:1
  +팔관회:명:2
  +팔꿈치:명:12
  +팔다:동:332
  +팔다리:명:14
  +팔도:명:5
  +팔도강산:명:1
  +팔딱거리다:동:1
  +팔딱팔딱:부:2
  +팔뚝:명:17
  +팔뚝시계:명:2
  +팔랑개비:명:1
  +팔랑거리다:동:1
  +팔랑이다:동:1
  +팔레:명:2
  +팔레트:명:2
  +팔리다:동:63
  +팔만:수:1
  +팔만사천:수:1
  +팔매:명:3
  +팔목:명:8
  +팔방:명:3
  +팔방미인:명:1
  +팔백:관:6
  +팔베개:명:1
  +팔뼈:명:2
  +팔소매:명:1
  +팔순:명:1
  +팔십:관:13
  +팔십:수:3
  +팔십오:수:2
  +팔십칠:관:1
  +팔십팔:관:1
  +팔씨름:명:2
  +팔아넘기다:동:10
  +팔아먹다:동:13
  +팔열:명:1
  +팔월:명:150
  +팔월대보름:명:2
  +팔위:명:1
  +팔일오:명:7
  +팔자:명:29
  +팔자걸음:명:2
  +팔자치레하다:동:1
  +팔자형:명:2
  +팔작지붕:명:1
  +팔정도:명:6
  +팔조법금:명:2
  +팔짝팔짝:부:4
  +팔짱:명:22
  +팔찌:명:9
  +팔천:관:2
  +팔천오백:관:1
  +팔팔:부:3
  +팔팔하다:형:1
  +팔풍받이:명:1
  +팝:명:10
  +팝사인:명:1
  +팝송:명:7
  +팝적:관:1
  +팝콘:명:2
  +팡:부:1
  +팡파르:명:3
  +팡팡:부:2
  +팡팡하다:동:1
  +팥:명:20
  +팥고물:명:2
  +팥단자:명:1
  +팥물:명:2
  +팥밥:명:3
  +팥배나무:명:4
  +팥보반:명:1
  +팥빵:명:1
  +팥알:명:4
  +팥죽:명:11
  +팥죽빛:명:1
  +팥죽색:명:1
  +패:명:1
  +패:명:3
  +패:명:4
  +패:의:24
  +패가:명:1
  +패가망신:명:1
  +패거리:명:11
  +패권:명:14
  +패권주의:명:8
  +패권주의자:명:1
  +패권주의적:명:1
  +패기:명:11
  +패널:명:2
  +패다:동:1
  +패다:동:1
  +패다:동:23
  +패다:동:4
  +패다:동:9
  +패도:명:1
  +패두:명:12
  +패드:명:2
  +패랭이짜리:명:1
  +패러글라이더:명:1
  +패러다임:명:4
  +패러디:명:7
  +패러디하다:동:1
  +패러디화하다:동:1
  +패러플레인:명:1
  +패류:명:2
  +패륜:명:1
  +패륜아:명:2
  +패륜적:명:1
  +패망:명:2
  +패망하다:동:1
  +패물:명:2
  +패밀리:명:2
  +패배:명:39
  +패배감:명:3
  +패배당하다:동:1
  +패배자:명:4
  +패배주의:명:2
  +패배하다:동:8
  +패산:명:1
  +패색:명:1
  +패션:명:35
  +패션계:명:2
  +패션모델:명:6
  +패션쇼:명:6
  +패소:명:3
  +패소하다:동:2
  +패스:명:31
  +패스트푸드:명:1
  +패스트푸드점:명:8
  +패스포트:명:2
  +패스하다:동:8
  +패싸움:명:5
  +패이다:동:10
  +패인:명:7
  +패자:명:11
  +패자전:명:1
  +패전:명:6
  +패전국:명:1
  +패전하다:동:2
  +패키지:명:1
  +패키지여행:명:1
  +패킷:명:1
  +패킷망:명:1
  +패킹:명:1
  +패턴:명:22
  +패턴화되다:동:1
  +패통:명:1
  +패팅법:명:3
  +패하다:동:17
  +패혈:명:1
  +패혈증:명:1
  +팩:명:45
  +팩스:명:7
  +팩시밀리:명:21
  +팩터링:명:3
  +팬:명:2
  +팬:명:30
  +팬:명:75
  +팬레터:명:1
  +팬츠:명:2
  +팬케이크:명:2
  +팬터마임식:관:1
  +팬티:명:23
  +팬티스타킹:명:1
  +팸플릿:명:8
  +팻말:명:6
  +팽:부:1
  +팽:부:2
  +팽개쳐지다:동:1
  +팽개치다:동:17
  +팽그르르:부:1
  +팽나무:명:6
  +팽배:명:1
  +팽배하다:동:16
  +팽이:명:6
  +팽이버섯:명:13
  +팽창:명:23
  +팽창감:명:4
  +팽창되다:동:5
  +팽창시키다:동:2
  +팽창주의:명:1
  +팽창하다:동:14
  +팽팽:부:1
  +팽팽하다:형:14
  +팽팽하다:형:5
  +팽팽히:부:8
  +퍼내다:동:10
  +퍼대다:동:1
  +퍼덕거리다:동:6
  +퍼덕이다:동:4
  +퍼드덕퍼드덕:부:1
  +퍼뜨리다:동:19
  +퍼뜩:부:11
  +퍼래서:불:1
  +퍼렇다:형:7
  +퍼레이드:명:7
  +퍼마시다:동:4
  +퍼먹다:동:3
  +퍼부어지다:동:3
  +퍼붓다:동:47
  +퍼블릭:명:1
  +퍼센트:의:1,309
  +퍼센티지:명:1
  +퍼스널:명:2
  +퍼스트:명:16
  +퍼즐:명:3
  +퍼지:명:1
  +퍼지다:동:143
  +퍼터:명:2
  +퍼팅:명:2
  +퍼플:명:1
  +퍼핏:명:1
  +퍽:부:1
  +퍽:부:2
  +퍽:부:42
  +퍽퍽:부:7
  +펀드:명:4
  +펀치:명:1
  +펀치:명:3
  +펀치되다:동:1
  +펀칭:명:1
  +펀펀히:부:1
  +펄:명:1
  +펄떡펄떡:부:1
  +펄럭:부:1
  +펄럭거리다:동:1
  +펄럭이다:동:10
  +펄쩍:부:13
  +펄쩍펄쩍:부:3
  +펄펄:부:11
  +펄프:명:2
  +펌:명:3
  +펌웨어:명:3
  +펌프:명:7
  +펌프장:명:1
  +펑:부:4
  +펑크:명:14
  +펑크족:명:2
  +펑퍼짐하다:형:4
  +펑펑:부:2
  +펑펑:부:5
  +페그마타이트:명:1
  +페넌트:명:6
  +페널티:명:14
  +페놀:명:16
  +페놀프탈레인:명:8
  +페니스:명:2
  +페달:명:8
  +페레스트로이카:명:8
  +페리호:명:9
  +페미니스트:명:3
  +페미니스트적:관:1
  +페미니즘:명:1
  +페세타:의:1
  +페스티벌:명:20
  +페시미즘:명:1
  +페어:명:1
  +페어:명:4
  +페어플레이:명:4
  +페이로드:명:4
  +페이소스:명:3
  +페이스:명:6
  +페이스트:명:5
  +페이지:명:13
  +페이징보드:명:1
  +페이퍼:명:1
  +페이퍼백:명:1
  +페인트:명:16
  +페인트칠:명:2
  +페인트칠하다:동:1
  +페인팅:명:2
  +페추니아:명:1
  +페치카:명:5
  +페트:명:1
  +페트병:명:2
  +페팅:명:1
  +페퍼포그:명:1
  +페하:명:1
  +펜:명:10
  +펜대:명:1
  +펜던트형:명:1
  +펜스:명:1
  +펜슬:명:2
  +펜싱:명:4
  +펜촉:명:1
  +펜치:명:2
  +펜티엄:명:3
  +펜팔:명:1
  +펜홀더:명:2
  +펨푸:명:1
  +펭귄:명:2
  +펴내다:동:58
  +펴다:동:246
  +펴지다:동:12
  +편:명:2
  +편:명:3
  +편:명:37
  +편:의:1
  +편:의:19
  +편:의:239
  +편:의:240
  +편견:명:33
  +편곡:명:1
  +편곡하다:동:2
  +편년:명:1
  +편년체:명:2
  +편대:명:1
  +편도:명:2
  +편도선:명:3
  +편두통:명:1
  +편들다:동:2
  +편람:명:1
  +편력:명:3
  +편력하다:동:2
  +편리:명:4
  +편리성:명:6
  +편리하다:형:94
  +편리해지다:동:4
  +편린:명:1
  +편마암:명:55
  +편목:명:3
  +편발:명:1
  +편법:명:26
  +편법적:명:1
  +편벽되다:형:1
  +편벽하다:형:1
  +편복:명:1
  +편성:명:29
  +편성되다:동:10
  +편성론:명:2
  +편성안:명:2
  +편성하다:동:16
  +편수:명:4
  +편수:명:5
  +편수관:명:3
  +편수관실:명:1
  +편수국:명:8
  +편수직:명:2
  +편수직원:명:1
  +편승:명:4
  +편승하다:동:14
  +편식:명:4
  +편식하다:동:2
  +편쌈하다:동:1
  +편안:명:1
  +편안하다:형:90
  +편안해지다:동:2
  +편안히:부:10
  +편암:명:1
  +편애하다:동:4
  +편액:명:6
  +편역서:명:1
  +편육:명:1
  +편의:명:38
  +편의성:명:3
  +편의율:명:1
  +편의적:명:2
  +편의점:명:2
  +편의주의:명:2
  +편의주의적:관:1
  +편의주의적:명:1
  +편의치적선:명:1
  +편의품:명:2
  +편익:명:16
  +편입:명:4
  +편입되다:동:32
  +편입시키다:동:5
  +편입하다:동:2
  +편입학:명:1
  +편재성:명:1
  +편재하다:동:1
  +편저:명:2
  +편저자:명:1
  +편적되다:동:1
  +편제:명:8
  +편제되다:동:2
  +편제하다:동:2
  +편중:명:9
  +편중되다:동:5
  +편지:명:235
  +편지지:명:3
  +편지질:명:1
  +편지하다:동:4
  +편집:명:21
  +편집국:명:1
  +편집국장:명:4
  +편집물:명:1
  +편집부:명:5
  +편집부장:명:1
  +편집부장직:명:1
  +편집인:명:1
  +편집자:명:8
  +편집장:명:6
  +편집진:명:2
  +편집하다:동:9
  +편차:명:10
  +편찬:명:16
  +편찬자:명:1
  +편찬하다:동:14
  +편찮다:형:11
  +편파:명:5
  +편파적:관:2
  +편파적:명:2
  +편편이:부:1
  +편편하다:형:1
  +편평하다:형:1
  +편하다:형:158
  +편해지다:동:10
  +편해하다:동:1
  +편향:명:14
  +편향되다:동:9
  +편향성:명:4
  +편향시키다:동:1
  +편향적:명:3
  +편향주의자:명:2
  +편협:명:1
  +편협되다:형:2
  +편협성:명:3
  +편협하다:형:13
  +편히:부:23
  +펼쳐지다:동:101
  +펼치다:동:122
  +평:명:34
  +평:의:158
  +평가:명:1
  +평가:명:252
  +평가관:명:1
  +평가단:명:2
  +평가되다:동:56
  +평가받다:동:25
  +평가법:명:1
  +평가부장:명:1
  +평가사:명:1
  +평가손:명:3
  +평가액:명:1
  +평가용:명:1
  +평가전:명:1
  +평가제:명:1
  +평가하다:동:105
  +평가회:명:8
  +평결:명:4
  +평결하다:동:1
  +평경례:명:1
  +평골하여지다:동:1
  +평교사:명:24
  +평교사회:명:2
  +평균:명:163
  +평균대:명:6
  +평균작:명:1
  +평균적:관:2
  +평균적:명:7
  +평균치:명:1
  +평길:명:2
  +평년:명:3
  +평년작:명:1
  +평단:명:6
  +평당원:명:1
  +평대문:명:1
  +평등:명:47
  +평등관:명:1
  +평등권:명:1
  +평등사상:명:1
  +평등주의:명:1
  +평등주의적:명:1
  +평등하다:형:28
  +평등화:명:1
  +평론:명:15
  +평론가:명:33
  +평론집:명:5
  +평론하다:동:2
  +평면:명:18
  +평면거울:명:1
  +평면적:관:4
  +평면적:명:8
  +평문:명:1
  +평문:명:4
  +평민:명:18
  +평방미터:의:19
  +평배:명:1
  +평범하다:형:76
  +평사원:명:2
  +평상:명:2
  +평상:명:5
  +평상복:명:7
  +평상시:명:16
  +평상심:명:2
  +평상적:명:1
  +평생:명:100
  +평생직장:명:1
  +평생토록:부:2
  +평석:명:1
  +평소:명:156
  +평수:명:1
  +평시:명:2
  +평신도:명:1
  +평안:명:14
  +평안감:명:1
  +평안하다:형:8
  +평안히:부:1
  +평야:명:44
  +평영:명:4
  +평온:명:10
  +평온하다:형:7
  +평온해지다:동:2
  +평원:명:3
  +평의회:명:7
  +평이하다:형:1
  +평일:명:15
  +평자:명:4
  +평작:명:1
  +평잔:명:1
  +평저:명:1
  +평절:명:7
  +평절하다:동:1
  +평점:명:4
  +평정:명:1
  +평정:명:1
  +평정:명:1
  +평정되다:동:1
  +평정하다:동:2
  +평정하다:형:1
  +평조직:명:3
  +평조합원:명:1
  +평준화:명:14
  +평준화되다:동:1
  +평준화시키다:동:1
  +평준화하다:동:2
  +평지:명:17
  +평지능문능:명:1
  +평직:명:3
  +평직금:명:1
  +평직원:명:1
  +평탄하다:형:5
  +평탄해지다:동:1
  +평토장:명:1
  +평통:명:1
  +평판:명:7
  +평판상:명:1
  +평평하다:형:15
  +평하다:동:9
  +평행:명:5
  +평행봉:명:4
  +평행선:명:1
  +평형:명:8
  +평형:의:16
  +평형성:명:1
  +평화:명:167
  +평화로워지다:동:1
  +평화롭다:형:34
  +평화상:명:1
  +평화스럽다:형:4
  +평화적:관:7
  +평화적:명:21
  +평화주의자:명:1
  +평화학:명:2
  +평화협정:명:9
  +평화형:명:1
  +폐:명:1
  +폐:명:11
  +폐:명:20
  +폐가구:명:1
  +폐가전제품:명:1
  +폐간되다:동:1
  +폐건전지:명:6
  +폐경:명:1
  +폐경기:명:6
  +폐광:명:2
  +폐광산:명:2
  +폐교:명:5
  +폐교되다:동:4
  +폐교시키다:동:1
  +폐교하다:동:1
  +폐기:명:21
  +폐기되다:동:2
  +폐기물:명:52
  +폐기하다:동:11
  +폐냉장고:명:4
  +폐노트:명:1
  +폐단:명:22
  +폐동맥:명:1
  +폐드럼통:명:1
  +폐디스토마:명:1
  +폐렴:명:6
  +폐리어카:명:2
  +폐마:명:1
  +폐막:명:1
  +폐막식:명:1
  +폐막제:명:1
  +폐문:명:1
  +폐물:명:2
  +폐백:명:4
  +폐백드리다:동:1
  +폐백받다:동:2
  +폐병:명:2
  +폐부:명:1
  +폐부품:명:1
  +폐비:명:3
  +폐비닐:명:20
  +폐사:명:1
  +폐산:명:1
  +폐색:명:2
  +폐생활용품:명:2
  +폐선:명:21
  +폐설물:명:2
  +폐쇄:명:16
  +폐쇄되다:동:13
  +폐쇄성:명:4
  +폐쇄시키다:동:1
  +폐쇄적:관:1
  +폐쇄적:명:15
  +폐쇄하다:동:5
  +폐쇄화되다:동:1
  +폐수:명:58
  +폐식용유:명:5
  +폐신문지:명:1
  +폐암:명:12
  +폐업:명:8
  +폐업하다:동:5
  +폐에어컨:명:1
  +폐오일:명:1
  +폐왕:명:1
  +폐위시키다:동:1
  +폐유:명:4
  +폐인:명:1
  +폐일언하다:동:1
  +폐자재:명:3
  +폐자전거:명:1
  +폐장되다:동:1
  +폐장롱:명:1
  +폐점:명:1
  +폐점하다:동:1
  +폐지:명:10
  +폐지:명:38
  +폐지되다:동:10
  +폐지하다:동:28
  +폐차:명:1
  +폐차업체:명:1
  +폐차장:명:1
  +폐촉매:명:1
  +폐타이어:명:6
  +폐품:명:6
  +폐하:명:2
  +폐해:명:15
  +폐허:명:16
  +폐혈관:명:1
  +폐활량:명:6
  +폐휴지:명:2
  +포:명:1
  +포:명:1
  +포:명:16
  +포:명:2
  +포:명:4
  +포:명:53
  +포:부:3
  +포갑지:명:1
  +포개다:동:10
  +포개어지다:동:2
  +포개지다:동:1
  +포격:명:4
  +포격하다:동:1
  +포경:명:3
  +포고:명:5
  +포고령:명:8
  +포고문:명:2
  +포괄:명:7
  +포괄되다:동:2
  +포괄미:명:1
  +포괄성:명:3
  +포괄자:명:1
  +포괄적:관:9
  +포괄적:명:22
  +포괄주의:명:1
  +포괄하다:동:9
  +포교:명:2
  +포교:명:4
  +포교용:명:1
  +포교장:명:1
  +포교질:명:1
  +포구:명:30
  +포그르르:부:1
  +포근하다:형:19
  +포근해지다:동:2
  +포근히:부:5
  +포기:명:16
  +포기:명:17
  +포기되다:동:1
  +포기시키다:동:1
  +포기하다:동:152
  +포대:명:13
  +포대:명:2
  +포대:명:3
  +포대기:명:5
  +포대장:명:1
  +포도:명:19
  +포도나무:명:2
  +포도당:명:1
  +포도밭:명:3
  +포도송이:명:1
  +포도원:명:1
  +포도주:명:47
  +포드졸:명:1
  +포란:명:3
  +포럼:명:10
  +포로:명:16
  +포로수용소:명:4
  +포르노:명:8
  +포만:명:1
  +포만감:명:2
  +포말:명:3
  +포매팅하다:동:1
  +포맷:명:7
  +포멀:명:1
  +포목전:명:2
  +포문:명:5
  +포물선:명:7
  +포박:명:1
  +포박당하다:동:1
  +포박되다:동:1
  +포박하다:동:1
  +포병:명:10
  +포복:명:1
  +포복절도:명:1
  +포부:명:9
  +포상:명:5
  +포상금:명:1
  +포상하다:동:1
  +포석:명:4
  +포섭되다:동:2
  +포섭주의:명:1
  +포섭하다:동:8
  +포성:명:1
  +포수:명:3
  +포수:명:3
  +포스터:명:36
  +포스트모더니스트:명:1
  +포스트모더니즘:명:12
  +포스트모더니즘론:명:1
  +포스트모던:명:8
  +포스트스크립트:명:1
  +포스트시즌:명:12
  +포승:명:1
  +포승줄:명:1
  +포시럽다:형:1
  +포식:명:2
  +포식하다:동:1
  +포식하다:동:2
  +포실하다:형:1
  +포아풀:명:2
  +포아풀과:명:1
  +포악:명:1
  +포악하다:형:5
  +포연:명:1
  +포옹:명:6
  +포옹하다:동:5
  +포용:명:1
  +포용력:명:8
  +포용성:명:2
  +포용적:명:1
  +포용하다:동:28
  +포워드:명:7
  +포위:명:4
  +포위당하다:동:2
  +포위되다:동:4
  +포위망:명:1
  +포위하다:동:4
  +포유동물:명:1
  +포유류:명:8
  +포육:명:2
  +포의:명:1
  +포의:명:3
  +포인터:명:2
  +포인트:명:23
  +포인트:의:40
  +포일:명:2
  +포장:명:3
  +포장:명:46
  +포장:명:9
  +포장길:명:1
  +포장도로:명:1
  +포장되다:동:3
  +포장되다:동:7
  +포장마차:명:29
  +포장술:명:1
  +포장지:명:10
  +포장하다:동:1
  +포장하다:동:8
  +포접:명:1
  +포졸:명:4
  +포주:명:6
  +포즈:명:13
  +포즈:명:3
  +포지션:명:3
  +포지션하다:동:1
  +포지티브:명:1
  +포진:명:1
  +포진:명:1
  +포진시키다:동:1
  +포진하다:동:4
  +포착:명:1
  +포착되다:동:6
  +포착률:명:1
  +포착하다:동:24
  +포청:명:1
  +포카치아:명:2
  +포커:명:2
  +포커스:명:3
  +포켓볼:명:1
  +포크:명:2
  +포크:명:23
  +포클레인:명:6
  +포탄:명:7
  +포탈:명:1
  +포탈하다:동:2
  +포태:명:4
  +포태되다:동:1
  +포토제닉상:명:1
  +포트:명:1
  +포트락:명:1
  +포트란:명:1
  +포폭:명:2
  +포퓰러:명:1
  +포퓰리즘:명:1
  +포플러:명:1
  +포플러나무:명:1
  +포함:명:36
  +포함되다:동:102
  +포함시키다:동:43
  +포함하다:동:203
  +포핸드:명:1
  +포화:명:2
  +포화:명:4
  +포환:명:10
  +포환던지기:명:6
  +포효:명:1
  +포효하다:동:2
  +폭:명:149
  +폭:부:3
  +폭:의:2
  +폭거:명:1
  +폭격:명:10
  +폭격기:명:3
  +폭격당하다:동:1
  +폭군:명:1
  +폭넓다:형:59
  +폭도:명:2
  +폭동:명:18
  +폭등:명:9
  +폭등세:명:1
  +폭등하다:동:4
  +폭락:명:13
  +폭락되다:동:1
  +폭락하다:동:12
  +폭력:명:161
  +폭력단:명:1
  +폭력배:명:9
  +폭력성:명:7
  +폭력적:관:4
  +폭력적:명:7
  +폭력화되다:동:1
  +폭로:명:9
  +폭로되다:동:2
  +폭로전:명:4
  +폭로하다:동:21
  +폭리:명:1
  +폭발:명:20
  +폭발:명:6
  +폭발력:명:2
  +폭발물:명:1
  +폭발성:명:1
  +폭발시키다:동:2
  +폭발적:관:6
  +폭발적:명:14
  +폭발하다:동:9
  +폭발하다:동:9
  +폭삭:부:8
  +폭서:명:1
  +폭설:명:11
  +폭소:명:13
  +폭신하다:형:2
  +폭압:명:1
  +폭압적:관:1
  +폭압적:명:2
  +폭약:명:1
  +폭양:명:1
  +폭언:명:2
  +폭염:명:4
  +폭우:명:14
  +폭음:명:3
  +폭음:명:8
  +폭정:명:1
  +폭주:명:1
  +폭주하다:동:6
  +폭죽:명:2
  +폭증:명:1
  +폭증하다:동:4
  +폭탄:명:28
  +폭탄선언:명:2
  +폭탄주:명:3
  +폭파:명:10
  +폭파당하다:동:1
  +폭파하다:동:3
  +폭포:명:5
  +폭포수:명:1
  +폭폭:부:2
  +폭폭이:부:1
  +폭풍:명:18
  +폭풍우:명:6
  +폭행:명:18
  +폭행당하다:동:2
  +폭행하다:동:9
  +폰:명:1
  +폰트:명:1
  +폰팅:명:1
  +폴대:명:1
  +폴더:명:1
  +폴딱:부:1
  +폴라로이드:명:1
  +폴리나염지:명:1
  +폴리스:명:1
  +폴리실리콘:명:1
  +폴리염화:명:2
  +폴리우스:명:1
  +폴리유레스탄:명:1
  +폴리페놀류:명:1
  +폴짝:부:1
  +폴짝거리다:동:1
  +폴짝폴짝:부:2
  +폴폴:부:1
  +폼:명:10
  +폼:명:4
  +폼멜트실링머신:명:1
  +폿:명:2
  +퐁당:부:1
  +표:명:105
  +표:명:7
  +표:명:80
  +표결:명:5
  +표고:명:3
  +표고버섯:명:14
  +표구:명:1
  +표기:명:10
  +표기되다:동:10
  +표기법:명:1
  +표기하다:동:5
  +표랑하다:동:1
  +표류:명:11
  +표류당하다:동:1
  +표류자:명:1
  +표류하다:동:6
  +표리:명:4
  +표면:명:87
  +표면적:관:3
  +표면적:명:15
  +표면적:명:2
  +표면화:명:1
  +표면화되다:동:2
  +표면화하다:동:2
  +표명:명:13
  +표명되다:동:1
  +표명하다:동:17
  +표방되다:동:1
  +표방하다:동:25
  +표밭:명:4
  +표백:명:9
  +표백되다:동:2
  +표백미:명:1
  +표백하다:동:3
  +표범:명:1
  +표변하다:동:1
  +표본:명:15
  +표본적:명:1
  +표상:명:1
  +표상:명:14
  +표상되다:동:3
  +표상하다:동:9
  +표상화되다:동:1
  +표석:명:1
  +표수:명:1
  +표수현위:명:1
  +표시:명:34
  +표시:명:34
  +표시권:명:1
  +표시되다:동:13
  +표시되다:동:5
  +표시등:명:1
  +표시량:명:1
  +표시설:명:1
  +표시판:명:1
  +표시하다:동:18
  +표시하다:동:45
  +표식:명:1
  +표식판:명:1
  +표어:명:7
  +표음:명:1
  +표의:명:1
  +표의:명:2
  +표적:명:47
  +표적물:명:1
  +표전:명:1
  +표절:명:10
  +표절하다:동:1
  +표정:명:1
  +표정:명:496
  +표제:명:7
  +표제어:명:4
  +표제작:명:1
  +표주박:명:1
  +표준:명:49
  +표준궤:명:1
  +표준말:명:4
  +표준안:명:3
  +표준액:명:2
  +표준어:명:5
  +표준화:명:16
  +표준화되다:동:4
  +표준화시키다:동:1
  +표지:명:6
  +표지:명:6
  +표지색:명:1
  +표지판:명:7
  +표징:명:2
  +표징하다:동:1
  +표창:명:4
  +표창감:명:1
  +표창록:명:1
  +표창받다:동:1
  +표창장:명:1
  +표창하다:동:1
  +표출:명:4
  +표출되다:동:20
  +표출시키다:동:1
  +표출하다:동:6
  +표토:명:6
  +표토층:명:3
  +표피:명:3
  +표피적:관:1
  +표하다:동:20
  +표행하다:동:3
  +표현:명:403
  +표현되다:동:59
  +표현되어지다:동:1
  +표현력:명:11
  +표현물:명:6
  +표현미:명:1
  +표현법:명:1
  +표현성:명:10
  +표현적:관:3
  +표현주의:명:6
  +표현주의적:관:1
  +표현주의적:명:1
  +표현체:명:1
  +표현하다:동:297
  +표현화되다:동:1
  +표현화하다:동:1
  +푯대:명:1
  +푯말:명:3
  +푸:부:2
  +푸근하다:형:7
  +푸근해지다:동:2
  +푸념:명:14
  +푸념하다:동:5
  +푸다:동:29
  +푸닥거리:명:1
  +푸닥지다:형:1
  +푸대:명:2
  +푸대접:명:2
  +푸대접론:명:1
  +푸대접하다:동:1
  +푸덕:부:1
  +푸드덕:부:3
  +푸들:명:1
  +푸르다:형:188
  +푸르뎅뎅하다:형:2
  +푸르륵:부:1
  +푸르스름하다:형:9
  +푸른빛:명:2
  +푸른색:명:12
  +푸릇하다:형:1
  +푸릿하다:형:1
  +푸새:명:6
  +푸새하다:동:3
  +푸석푸석하다:형:3
  +푸성귀:명:3
  +푸시:명:1
  +푸시식:부:1
  +푸실푸실:부:3
  +푸아:감:2
  +푸짐하다:형:9
  +푸푸:부:1
  +푸하하하:감:2
  +푹:부:43
  +푹석거리다:동:2
  +푹신:부:1
  +푹신푹신하다:형:2
  +푹신하다:형:2
  +푹푹:부:11
  +푼:의:55
  +푼돈:명:4
  +푼수:명:3
  +푼푼이:부:1
  +풀:명:15
  +풀:명:29
  +풀:명:3
  +풀:명:4
  +풀:명:85
  +풀기:명:8
  +풀꽃:명:25
  +풀다:동:383
  +풀다운:명:1
  +풀듀플렉스:명:1
  +풀려나다:동:22
  +풀려나오다:동:4
  +풀려지다:동:3
  +풀루토늄:명:1
  +풀리다:동:130
  +풀밭:명:18
  +풀벌레:명:3
  +풀뿌리:명:9
  +풀숲:명:9
  +풀싸리:명:1
  +풀썩:부:5
  +풀썩하다:동:1
  +풀어내다:동:6
  +풀어놓다:동:2
  +풀어쓰기:명:1
  +풀어지다:동:15
  +풀어헤쳐지다:동:2
  +풀어헤치다:동:4
  +풀이:명:14
  +풀이되다:동:21
  +풀이하다:동:28
  +풀잎:명:7
  +풀장:명:3
  +풀죽:명:1
  +풀줄기:명:2
  +풀쩍:부:2
  +풀칠:명:6
  +풀칠하다:동:5
  +풀코스:명:4
  +풀포기:명:2
  +풀풀:부:8
  +풀피리:명:2
  +품:명:2
  +품:명:6
  +품:명:67
  +품:의:6
  +품값:명:1
  +품격:명:4
  +품계석:명:4
  +품관:명:3
  +품귀:명:2
  +품다:동:1
  +품다:동:63
  +품목:명:80
  +품바:명:8
  +품사:명:1
  +품삯:명:6
  +품성:명:10
  +품성:명:5
  +품성적:명:1
  +품속:명:9
  +품앗이:명:3
  +품앗이꾼:명:1
  +품앗이하다:동:1
  +품위:명:16
  +품제:명:1
  +품종:명:8
  +품질:명:78
  +품팔이:명:2
  +품평:명:1
  +품평회:명:1
  +품행:명:2
  +풋:부:1
  +풋고추:명:20
  +풋고추조림:명:1
  +풋김치:명:1
  +풋내:명:1
  +풋내기:명:3
  +풋마늘잎:명:1
  +풋사랑:명:1
  +풋워크:명:3
  +풋코:명:2
  +풋콩:명:12
  +풋풋하다:형:9
  +풍:명:1
  +풍:명:15
  +풍각쟁이:명:1
  +풍경:명:1
  +풍경:명:90
  +풍경화:명:5
  +풍관:명:1
  +풍광:명:4
  +풍구:명:2
  +풍금:명:9
  +풍금쟁이:명:1
  +풍기다:동:70
  +풍년:명:9
  +풍년가:명:1
  +풍덩:부:3
  +풍뎅이:명:2
  +풍랑:명:1
  +풍려하다:형:1
  +풍력:명:5
  +풍류:명:13
  +풍류도:명:4
  +풍만하다:형:5
  +풍모:명:5
  +풍문:명:7
  +풍물:명:1
  +풍미:명:9
  +풍미하다:동:9
  +풍백:명:1
  +풍부:명:1
  +풍부하다:형:116
  +풍부해지다:동:3
  +풍부화:명:1
  +풍비박산:명:1
  +풍사:명:2
  +풍상:명:1
  +풍선:명:1
  +풍선:명:9
  +풍설:명:1
  +풍성:명:1
  +풍성감:명:1
  +풍성풍성하다:형:1
  +풍성하다:형:25
  +풍성히:부:2
  +풍속:명:42
  +풍속:명:5
  +풍속도:명:3
  +풍속화:명:2
  +풍수:명:17
  +풍수가:명:1
  +풍수론:명:7
  +풍수사:명:1
  +풍수설:명:4
  +풍수성:명:1
  +풍수쟁이:명:1
  +풍수적:관:10
  +풍수적:명:1
  +풍수지리:명:5
  +풍수지리관:명:9
  +풍수지리론:명:2
  +풍수지리적:관:2
  +풍수지리학:명:1
  +풍수해:명:1
  +풍습:명:60
  +풍습성:명:1
  +풍악:명:3
  +풍요:명:18
  +풍요로워지다:동:1
  +풍요롭다:형:22
  +풍요성:명:1
  +풍요하다:형:10
  +풍요해지다:동:1
  +풍우:명:1
  +풍운:명:3
  +풍운아:명:1
  +풍월:명:2
  +풍자:명:28
  +풍자극:명:1
  +풍자성:명:2
  +풍자시:명:2
  +풍자적:명:1
  +풍자집:명:4
  +풍자하다:동:9
  +풍작:명:2
  +풍장:명:1
  +풍장:명:2
  +풍장터:명:3
  +풍정:명:1
  +풍조:명:32
  +풍족하다:형:10
  +풍족해지다:동:1
  +풍차:명:3
  +풍채:명:1
  +풍취:명:1
  +풍치:명:1
  +풍토:명:64
  +풍토성:명:3
  +풍토적:관:2
  +풍토적:명:3
  +풍파:명:1
  +풍편:명:1
  +풍향:명:4
  +풍화:명:4
  +풍화되다:동:2
  +퓨마:명:5
  +프라우드우먼:명:1
  +프라이:명:4
  +프라이버시:명:2
  +프라이팬:명:10
  +프라임:명:2
  +프락치:명:2
  +프랑:의:12
  +프랑스어:명:10
  +프랑스제:명:1
  +프랑크소시지:명:1
  +프랜차이저:명:1
  +프랜차이즈:명:1
  +프러포즈:명:4
  +프러포즈하다:동:1
  +프런트:명:2
  +프런티어:명:2
  +프레:명:1
  +프레스:명:7
  +프레온:명:9
  +프레임:명:8
  +프렐류드:명:1
  +프로:명:127
  +프로:명:76
  +프로:의:9
  +프로그래머:명:17
  +프로그래밍:명:23
  +프로그램:명:547
  +프로그램권:명:1
  +프로그램화하다:동:1
  +프로덕션:명:2
  +프로듀서:명:21
  +프로모터:명:7
  +프로세서:명:16
  +프로시니엄:명:2
  +프로제스터론:명:1
  +프로젝트:명:11
  +프로토콜:명:5
  +프로퍼갠더:명:1
  +프로페셔널:명:1
  +프로펠러:명:6
  +프로필:명:1
  +프로하다:동:1
  +프로화:명:6
  +프롤레타리아:명:11
  +프롤레타리아적:관:1
  +프롤레타리아트화:명:1
  +프롤로그:명:1
  +프롬프트:명:1
  +프리:명:13
  +프리랜서:명:2
  +프리마돈나:명:1
  +프리미엄:명:5
  +프리웨어:명:1
  +프리즘:명:4
  +프린터:명:35
  +프린트:명:6
  +프린트되다:동:1
  +프린트물:명:1
  +프린트하다:동:4
  +프린팅:명:2
  +프림:명:6
  +프티비지:명:1
  +플라보노이드:명:1
  +플라스마:명:1
  +플라스틱:명:33
  +플라워:명:1
  +플라이급:명:1
  +플라자:명:2
  +플라타너스:명:2
  +플라토니즘:명:1
  +플랑크톤:명:3
  +플래시:명:6
  +플래카드:명:7
  +플랜트:명:1
  +플랫:명:1
  +플랫폼:명:4
  +플러스:명:3
  +플러스하다:동:2
  +플레어스커트:명:2
  +플레이:명:25
  +플레이버:명:1
  +플레이어:명:5
  +플레이오프:명:15
  +플레이트:명:1
  +플로라인:명:1
  +플로어:명:6
  +플로우차트:명:3
  +플로피:명:6
  +플롯:명:3
  +플루토늄:명:14
  +플루토늄양:명:1
  +플루트:명:4
  +플륨:명:1
  +피:명:123
  +피:부:5
  +피검사:명:1
  +피겨:명:12
  +피격:명:1
  +피격되다:동:1
  +피고:명:24
  +피고름:명:1
  +피고발인:명:1
  +피고소인:명:2
  +피고인:명:38
  +피고인석:명:1
  +피곤:명:17
  +피곤하다:형:81
  +피곤해지다:동:1
  +피곤해하다:동:1
  +피곤히:부:1
  +피골:명:1
  +피교육자:명:4
  +피구금자:명:5
  +피구속성:명:1
  +피구속자:명:1
  +피나다:동:8
  +피난:명:25
  +피난길:명:1
  +피난민:명:5
  +피난지:명:1
  +피난처:명:2
  +피난하다:동:2
  +피날레:명:1
  +피눈물:명:1
  +피다:동:10
  +피다:동:127
  +피더블유:명:2
  +피돌기:명:1
  +피동적:관:1
  +피동적:명:6
  +피둥피둥하다:형:1
  +피드백:명:2
  +피디:명:35
  +피디아르론자:명:1
  +피땀:명:4
  +피라드쿠리어:명:1
  +피라미:명:8
  +피라미드:명:11
  +피란:명:1
  +피력:명:2
  +피력되다:동:1
  +피력하다:동:14
  +피로:명:66
  +피로감:명:12
  +피로도:명:1
  +피로연:명:9
  +피로하다:형:18
  +피로해지다:동:6
  +피뢰침:명:1
  +피륙:명:4
  +피리:명:7
  +피망:명:29
  +피망전:명:1
  +피맺히다:동:1
  +피멍:명:4
  +피바다:명:1
  +피발행인:명:1
  +피범벅:명:1
  +피벗:명:1
  +피보호:명:1
  +피복:명:4
  +피복하다:동:3
  +피부:명:193
  +피부:명:6
  +피부과:명:2
  +피부병:명:2
  +피부색:명:6
  +피부암:명:4
  +피부염:명:1
  +피브이시:명:1
  +피비린내:명:2
  +피사체:명:2
  +피살:명:13
  +피살당하다:동:1
  +피살되다:동:3
  +피삼삼팔:명:1
  +피상성:명:1
  +피상적:관:1
  +피상적:명:12
  +피서:명:6
  +피서객:명:8
  +피서법:명:3
  +피서지:명:5
  +피서하다:동:1
  +피선거권:명:2
  +피선되다:동:1
  +피스톤:명:2
  +피습:명:5
  +피습되다:동:1
  +피시:명:70
  +피시에스:명:1
  +피식:부:24
  +피식피식:부:1
  +피신:명:3
  +피신시키다:동:3
  +피신처:명:1
  +피신청인:명:1
  +피신하다:동:3
  +피아노:명:42
  +피아니스트:명:3
  +피아르:명:2
  +피아르통:명:2
  +피안:명:9
  +피안적:관:2
  +피안적:명:1
  +피압박:명:1
  +피어나다:동:28
  +피어리다:형:1
  +피어오르다:동:19
  +피에스:명:1
  +피엑스:명:5
  +피오에스:명:2
  +피오줌:명:2
  +피용인:명:1
  +피우다:동:186
  +피워지다:동:1
  +피의:명:5
  +피의자:명:67
  +피이티:명:11
  +피임:명:17
  +피임법:명:9
  +피임약:명:4
  +피임하다:동:1
  +피자:명:20
  +피장파장:명:3
  +피전:명:1
  +피정:명:1
  +피정복:명:1
  +피정복민:명:3
  +피정복자:명:1
  +피조개:명:1
  +피조물:명:2
  +피죽:명:1
  +피지:명:22
  +피지배:명:33
  +피지배자:명:2
  +피지배층:명:9
  +피지선:명:3
  +피질:명:2
  +피차:명:4
  +피차간:명:1
  +피청구인:명:1
  +피체포자:명:2
  +피침해:명:1
  +피침형:명:1
  +피카타:명:1
  +피켓:명:2
  +피크:명:1
  +피클:명:24
  +피타다:동:1
  +피타전:명:1
  +피투성이:명:10
  +피트:의:1
  +피폐:명:1
  +피폐하다:동:2
  +피폐해지다:동:3
  +피폐화:명:1
  +피폭자:명:1
  +피플:명:1
  +피피비:의:1
  +피피엠:의:10
  +피하:명:5
  +피하다:동:270
  +피항:명:1
  +피해:명:215
  +피해망상증:명:1
  +피해액:명:5
  +피해자:명:61
  +픽:부:6
  +픽업:명:1
  +픽업되다:동:1
  +핀:명:3
  +핀볼:명:3
  +핀셋:명:1
  +핀잔:명:9
  +핀잔하다:동:1
  +핀치히터:명:1
  +필:의:1
  +필:의:2
  +필경:부:5
  +필기:명:5
  +필기구:명:3
  +필기도구:명:1
  +필기시험:명:6
  +필기시험지:명:1
  +필기하다:동:1
  +필대:명:1
  +필독:명:2
  +필두:명:6
  +필드:명:1
  +필랜드로피:명:2
  +필력:명:3
  +필로스:명:1
  +필로폰:명:1
  +필름:명:29
  +필링:명:2
  +필명:명:5
  +필묵:명:1
  +필방:명:1
  +필법:명:1
  +필부:명:1
  +필사:명:3
  +필사:명:3
  +필사적:관:1
  +필사적:명:7
  +필선:명:1
  +필수:명:2
  +필수:명:25
  +필수:명:3
  +필수적:관:2
  +필수적:명:61
  +필수품:명:4
  +필승:명:5
  +필시:부:15
  +필압:명:1
  +필연:명:14
  +필연성:명:11
  +필연적:관:10
  +필연적:명:41
  +필연코:부:1
  +필오프:명:1
  +필요:명:564
  +필요금:명:1
  +필요량:명:1
  +필요성:명:105
  +필요악:명:3
  +필요없다:형:1
  +필요조건:명:3
  +필요충분조건:명:2
  +필요하다:형:774
  +필요해지다:동:3
  +필요허다:형:1
  +필자:명:107
  +필자형:명:1
  +필적:명:1
  +필적하다:동:3
  +필진:명:4
  +필체:명:4
  +필치:명:6
  +필터:명:11
  +필통:명:6
  +필하모니:명:4
  +필히:부:2
  +핍박:명:2
  +핏기:명:3
  +핏대:명:3
  +핏덩어리:명:2
  +핏덩이:명:2
  +핏물:명:10
  +핏발:명:2
  +핏방울:명:5
  +핏빛:명:8
  +핏엿:명:1
  +핏자국:명:3
  +핏줄:명:13
  +핏줄기:명:1
  +핑:부:1
  +핑:부:14
  +핑거볼:명:9
  +핑계:명:42
  +핑계대다:동:1
  +핑계하다:동:1
  +핑곗거리:명:2
  +핑그르르:부:1
  +핑매:명:3
  +핑크:명:6
  +핑크그레이:명:3
  +핑크비디오:명:1
  +핑크색:명:3
  +핑핑:부:2
  +핑핑히:부:1
  +하:감:12
  +하:명:18
  +하:부:3
  +하:부:5
  +하강:명:8
  +하강기:명:1
  +하강세:명:2
  +하강하다:동:2
  +하객:명:9
  +하게:명:1
  +하계:명:2
  +하계:명:3
  +하계절:명:2
  +하고많다:형:1
  +하곡:명:1
  +하곡:명:1
  +하곡지:명:2
  +하관:명:1
  +하관:명:2
  +하관시:명:1
  +하관하다:동:1
  +하교:명:3
  +하교하다:동:1
  +하굣길:명:1
  +하구:명:15
  +하권:명:1
  +하극상:명:2
  +하급:명:5
  +하급심:명:1
  +하급자:명:1
  +하기는:접:10
  +하기야:접:21
  +하긴:접:65
  +하나:명:807
  +하나:수:1,346
  +하나같다:형:2
  +하나같이:부:28
  +하나님:명:19
  +하나둘:수:1
  +하나주의:명:1
  +하나하나:명:28
  +하나하나:부:35
  +하녀:명:5
  +하느님:명:57
  +하느작하느작:부:1
  +하늘:명:562
  +하늘가:명:1
  +하늘거리다:동:10
  +하늘나라:명:7
  +하늘나리:명:2
  +하늘빛:명:2
  +하늘색:명:7
  +하늘하늘:부:1
  +하늘하늘하다:형:1
  +하늬바람:명:1
  +하다:동:22,064
  +하다:보:10,758
  +하다못해:부:14
  +하단:명:1
  +하단:명:1
  +하단부:명:1
  +하달:명:2
  +하달시키다:동:1
  +하달식:명:2
  +하대:명:23
  +하도:명:1
  +하도:부:56
  +하도급:명:4
  +하드:명:31
  +하드웨어:명:58
  +하등:명:1
  +하등:명:7
  +하락:명:19
  +하락기:명:1
  +하락되다:동:1
  +하락률:명:1
  +하락세:명:8
  +하락하다:동:16
  +하례:명:1
  +하례:명:1
  +하례객:명:1
  +하례식:명:2
  +하루:명:537
  +하루바삐:부:1
  +하루빨리:부:23
  +하루살이:명:1
  +하루속히:부:7
  +하루아침:명:22
  +하루치:명:1
  +하루하루:명:14
  +하루하루:부:7
  +하루해:명:2
  +하룻강아지:명:3
  +하룻길:명:1
  +하룻밤:명:41
  +하룻볕:명:1
  +하류:명:27
  +하르르:부:2
  +하르르하르르:부:1
  +하리꼬미:명:1
  +하릴없다:형:2
  +하릴없이:부:5
  +하마:명:1
  +하마:명:2
  +하마:부:3
  +하마터면:부:19
  +하명하다:동:1
  +하모:감:5
  +하모니:명:3
  +하모니즘:명:1
  +하모니카:명:9
  +하물며:접:17
  +하바리:명:1
  +하바티:명:2
  +하반:명:1
  +하반기:명:34
  +하반신:명:5
  +하방:명:1
  +하방식:명:1
  +하복:명:1
  +하복부:명:2
  +하부:명:24
  +하사:명:20
  +하사관:명:5
  +하사금:명:1
  +하사받다:동:1
  +하사품:명:2
  +하사하다:동:3
  +하산:명:1
  +하산하다:동:4
  +하삼도:명:1
  +하상:명:1
  +하상:명:3
  +하선동력:명:1
  +하선하다:동:9
  +하소연:명:10
  +하소연하다:동:10
  +하소하다:동:1
  +하수:명:11
  +하수구:명:1
  +하수도:명:5
  +하수도관:명:2
  +하수면:명:1
  +하수오:명:1
  +하수인:명:6
  +하숙:명:13
  +하숙방:명:6
  +하숙비:명:10
  +하숙생:명:14
  +하숙시키다:동:1
  +하숙집:명:51
  +하숙집형:명:1
  +하숙하다:동:4
  +하순:명:12
  +하시:대:1
  +하야:명:1
  +하얀색:명:1
  +하양:명:2
  +하얗다:형:150
  +하얘지다:동:1
  +하여:부:1
  +하여간:부:21
  +하여간에:부:1
  +하여금:부:115
  +하여튼:부:77
  +하역:명:18
  +하역하다:동:3
  +하염없다:형:3
  +하염없어지다:동:1
  +하염없이:부:8
  +하오:명:19
  +하옥되다:동:2
  +하옥시키다:동:1
  +하옥하다:동:1
  +하우스:명:13
  +하원:명:9
  +하위:명:26
  +하위권:명:1
  +하위문화:명:14
  +하위법:명:1
  +하읍례:명:1
  +하의:명:3
  +하이:감:1
  +하이:명:3
  +하이고:감:3
  +하이넥:명:1
  +하이드로겐:명:1
  +하이라이트:명:3
  +하이비전:명:5
  +하이비조닉:명:1
  +하이비조닉하다:동:1
  +하이스쿨:명:1
  +하이웨이:명:1
  +하이킹화:명:1
  +하이테크:명:5
  +하이힐:명:7
  +하인:명:19
  +하자:명:15
  +하잘것없다:형:3
  +하적호:명:1
  +하주:명:5
  +하중:명:2
  +하중도:명:1
  +하지:명:6
  +하지만:접:440
  +하직:명:4
  +하직하다:동:3
  +하진부:명:1
  +하짓날:명:1
  +하차:명:1
  +하차하다:동:4
  +하찮다:형:25
  +하책:명:1
  +하천:명:94
  +하천가:명:2
  +하청:명:12
  +하청업:명:1
  +하체:명:4
  +하층:명:9
  +하층민:명:2
  +하치장:명:2
  +하키:명:3
  +하트형:명:2
  +하품:명:25
  +하품하다:동:2
  +하프:명:4
  +하필:부:50
  +하하:감:5
  +하하:부:63
  +하학:명:1
  +하학적:관:1
  +하한가:명:4
  +하한기:명:1
  +하항:명:1
  +하행선:명:8
  +하향:명:1
  +하향:명:9
  +하향하다:동:1
  +하현:명:1
  +하혈:명:1
  +하혈량:명:1
  +하호:명:12
  +학:명:28
  +학계:명:55
  +학과:명:22
  +학과:명:3
  +학과란:명:1
  +학과장:명:1
  +학교:명:1,303
  +학교생활:명:16
  +학교생활하다:동:1
  +학교장:명:15
  +학구열:명:1
  +학구적:명:2
  +학군:명:18
  +학급:명:51
  +학급비:명:7
  +학기:명:86
  +학내:명:11
  +학년:명:413
  +학년도:명:23
  +학년생:명:5
  +학당:명:1
  +학대:명:6
  +학대받다:동:2
  +학대하다:동:4
  +학덕:명:4
  +학도:명:7
  +학도대:명:3
  +학도병:명:7
  +학동:명:20
  +학력:명:19
  +학력:명:3
  +학력고사:명:8
  +학령:명:1
  +학맥:명:2
  +학명:명:3
  +학모:명:1
  +학무:명:2
  +학문:명:125
  +학문적:관:26
  +학문적:명:14
  +학문하다:동:2
  +학반:명:1
  +학번:명:59
  +학벌:명:16
  +학병:명:2
  +학보:명:1
  +학부:명:8
  +학부모:명:62
  +학부형:명:27
  +학비:명:17
  +학사:명:5
  +학사:명:7
  +학사모:명:1
  +학살:명:6
  +학살범:명:1
  +학생:명:822
  +학생과:명:7
  +학생과장:명:17
  +학생극:명:2
  +학생부:명:2
  +학생부실:명:2
  +학생증:명:6
  +학생처:명:1
  +학생처장:명:1
  +학생회:명:11
  +학생회관:명:7
  +학생회비:명:1
  +학생회장:명:7
  +학설:명:10
  +학설사적:관:1
  +학수고대:명:1
  +학술:명:47
  +학술적:명:5
  +학술지:명:1
  +학술회의:명:3
  +학습:명:84
  +학습권:명:1
  +학습량:명:3
  +학습시키다:동:1
  +학습장:명:1
  +학습지:명:7
  +학습하다:동:7
  +학식:명:4
  +학업:명:22
  +학연:명:1
  +학예:명:2
  +학예원:명:1
  +학예회:명:8
  +학용품:명:61
  +학우:명:3
  +학원:명:59
  +학원비:명:1
  +학위:명:35
  +학의:명:2
  +학자:명:118
  +학자금:명:7
  +학장:명:12
  +학적과:명:2
  +학적부:명:2
  +학점:명:26
  +학정:명:1
  +학제:명:2
  +학질:명:3
  +학창:명:15
  +학창의:명:1
  +학춤:명:1
  +학칙:명:4
  +학파:명:11
  +학풍:명:2
  +학회:명:23
  +학회장:명:1
  +학회지:명:3
  +학훈단:명:1
  +한:관:4,485
  +한:명:215
  +한:명:54
  +한가:명:3
  +한가득:부:2
  +한가로이:부:5
  +한가롭다:형:7
  +한가운데:명:60
  +한가위:명:8
  +한가족:명:1
  +한가지:명:8
  +한가하다:형:26
  +한갓:부:7
  +한갓지다:형:1
  +한거:명:1
  +한걸음:명:2
  +한겨레:명:3
  +한겨울:명:15
  +한결:부:29
  +한결같다:형:13
  +한결같이:부:48
  +한계:명:222
  +한계성:명:7
  +한계점:명:5
  +한곳:명:25
  +한구석:명:34
  +한구석빼기:명:1
  +한국말:명:25
  +한국미:명:2
  +한국어:명:81
  +한국적:관:26
  +한국적:명:20
  +한국학:명:1
  +한국화:명:2
  +한국화되다:동:1
  +한군데:명:8
  +한글:명:182
  +한글날:명:5
  +한글판:명:3
  +한글화:명:4
  +한글화하다:동:1
  +한기:명:9
  +한길:명:2
  +한길:명:3
  +한길가:명:3
  +한꺼번에:부:95
  +한껏:부:36
  +한끝:명:1
  +한나절:명:10
  +한날한시:명:2
  +한낮:명:21
  +한낱:부:11
  +한눈:명:40
  +한눈:명:5
  +한눈팔다:동:3
  +한달음:명:1
  +한데:명:1
  +한데:명:29
  +한데:접:18
  +한도:명:17
  +한도민:명:1
  +한도액:명:4
  +한동네:명:6
  +한동안:명:86
  +한두:관:132
  +한두해살이:명:7
  +한둘:수:16
  +한들거리다:동:1
  +한딱가리:명:1
  +한때:명:132
  +한때:부:1
  +한뜻:명:1
  +한랭하다:형:1
  +한량:명:1
  +한량없다:형:4
  +한로:명:1
  +한류:명:4
  +한림원:명:1
  +한마당:명:6
  +한마디:명:275
  +한마을:명:3
  +한마음:명:4
  +한말:명:1
  +한목소리:명:1
  +한몫:명:19
  +한몫하다:동:4
  +한묶음되다:동:1
  +한문:명:48
  +한문단:명:1
  +한문식:명:3
  +한물:명:1
  +한물가다:동:3
  +한민족:명:1
  +한바탕:명:1
  +한바탕:부:29
  +한반:명:1
  +한발:명:1
  +한발:부:19
  +한밤:명:5
  +한밤중:명:23
  +한방:명:18
  +한방:명:4
  +한방적:명:1
  +한방차:명:2
  +한배:명:3
  +한백성:명:1
  +한번:명:513
  +한번:부:23
  +한법정:명:1
  +한복:명:82
  +한복감:명:1
  +한복집:명:1
  +한복판:명:23
  +한사코:부:15
  +한산하다:형:7
  +한산해지다:동:1
  +한서:명:2
  +한세상:명:2
  +한소끔:부:12
  +한솥밥:명:2
  +한수:명:3
  +한순간:명:43
  +한술:명:16
  +한숨:명:11
  +한숨:명:98
  +한숨짓다:동:2
  +한숲:명:1
  +한시:명:3
  +한시:명:6
  +한시름:명:4
  +한시바삐:부:2
  +한시사:명:1
  +한시인:명:1
  +한시적:관:4
  +한시적:명:7
  +한식:명:1
  +한식:명:2
  +한식:명:5
  +한식구:명:1
  +한식집:명:3
  +한심:명:1
  +한심스러워하다:동:1
  +한심스럽다:형:8
  +한심유항:명:2
  +한심하다:형:26
  +한약:명:9
  +한약물:명:3
  +한약방:명:5
  +한약업자:명:1
  +한약재:명:3
  +한어:명:1
  +한어머니:명:1
  +한어미:명:1
  +한없다:형:8
  +한없이:부:50
  +한여름:명:29
  +한역되다:동:1
  +한영:명:1
  +한옥:명:5
  +한우:명:5
  +한울:명:10
  +한울타리:명:1
  +한유하다:형:1
  +한의사:명:12
  +한의원:명:2
  +한의학:명:1
  +한의학적:명:1
  +한이불:명:1
  +한일:명:1
  +한일자:명:2
  +한입:명:1
  +한자:명:81
  +한자리:명:17
  +한자식:명:1
  +한자어:명:7
  +한잔:명:37
  +한잔하다:동:27
  +한잠:명:1
  +한잠:명:5
  +한재:명:1
  +한저녁:명:1
  +한적하다:형:17
  +한적해지다:동:2
  +한정:명:9
  +한정되다:동:60
  +한정시키다:동:7
  +한정식:명:3
  +한정적:관:1
  +한정적:명:1
  +한정하다:동:19
  +한조:명:1
  +한줄기:명:6
  +한중간:명:1
  +한증:명:1
  +한증막:명:6
  +한증탕:명:1
  +한지:명:3
  +한지붕:명:2
  +한직:명:1
  +한직제:명:1
  +한직종:명:1
  +한집:명:2
  +한집안:명:2
  +한쪽:명:151
  +한차례:명:17
  +한참:명:141
  +한창:명:21
  +한창:부:56
  +한창나이:명:2
  +한철:명:4
  +한촌:명:1
  +한촌:명:2
  +한층:부:42
  +한치:명:1
  +한치못:명:2
  +한치오징어:명:7
  +한칼:명:1
  +한타:명:1
  +한탄:명:5
  +한탄하다:동:11
  +한탕:명:1
  +한탕주의:명:2
  +한탕주의식:명:1
  +한턱:명:5
  +한턱내다:동:7
  +한통속:명:9
  +한파:명:12
  +한판:명:20
  +한판승:명:1
  +한패거리:명:2
  +한편:명:236
  +한편:접:343
  +한평생:명:15
  +한평생:부:1
  +한풀:명:5
  +한풀이:명:3
  +한핏줄:명:1
  +한하다:동:34
  +한학자:명:1
  +한학파:명:1
  +한해:명:1
  +한해살이작물:명:1
  +한화:명:3
  +할:명:2
  +할:의:13
  +할거주의:명:2
  +할기작거리다:동:1
  +할당:명:3
  +할당되다:동:2
  +할당받다:동:1
  +할당제:명:2
  +할당하다:동:4
  +할딱거리다:동:1
  +할딱이다:동:1
  +할마마마:명:1
  +할망구:명:5
  +할매:명:30
  +할맥:명:1
  +할머니:명:397
  +할머님:명:5
  +할멈:명:5
  +할미:명:3
  +할미꽃:명:17
  +할미밀빵:명:3
  +할미새사촌:명:1
  +할복:명:1
  +할부:명:8
  +할부금:명:3
  +할아버님:명:4
  +할아버지:명:321
  +할아범:명:2
  +할아비:명:6
  +할애되다:동:1
  +할애하다:동:7
  +할인:명:21
  +할인되다:동:1
  +할인율:명:6
  +할인점:명:1
  +할인하다:동:3
  +할증료:명:2
  +할퀴다:동:11
  +핥다:동:14
  +함:명:26
  +함구령:명:3
  +함께:부:1,501
  +함께하다:동:27
  +함담:명:1
  +함대:명:10
  +함락:명:3
  +함락당하다:동:1
  +함락되다:동:4
  +함락시키다:동:6
  +함량:명:5
  +함몰되다:동:5
  +함몰시키다:동:1
  +함바집:명:1
  +함박:명:1
  +함박꽃:명:2
  +함박눈:명:3
  +함박웃음:명:3
  +함부로:부:77
  +함빡:부:2
  +함선:명:1
  +함성:명:14
  +함수:명:12
  +함양:명:4
  +함양되다:동:1
  +함양하다:동:5
  +함유되다:동:12
  +함유량:명:2
  +함유하다:동:10
  +함의:명:5
  +함자:명:1
  +함정:명:1
  +함정:명:17
  +함지:명:3
  +함지박:명:7
  +함진아비:명:1
  +함초롬하다:형:1
  +함축:명:2
  +함축되다:동:3
  +함축성:명:1
  +함축시키다:동:3
  +함축적:관:1
  +함축적:명:1
  +함축하다:동:5
  +함포:명:2
  +합:명:6
  +합격:명:26
  +합격되다:동:2
  +합격률:명:1
  +합격생:명:2
  +합격선:명:1
  +합격시키다:동:6
  +합격자:명:3
  +합격점:명:3
  +합격하다:동:27
  +합계:명:22
  +합곡:명:1
  +합금:명:5
  +합기덕:명:1
  +합기덕하다:동:1
  +합당:명:26
  +합당하다:형:16
  +합동:명:34
  +합류:명:3
  +합류하다:동:19
  +합리:명:2
  +합리성:명:13
  +합리적:관:17
  +합리적:명:62
  +합리주의:명:11
  +합리주의적:명:1
  +합리화:명:20
  +합리화되다:동:3
  +합리화시키다:동:6
  +합리화하다:동:11
  +합목적적:관:1
  +합목적적:명:1
  +합방:명:1
  +합법:명:8
  +합법성:명:3
  +합법적:관:2
  +합법적:명:16
  +합법칙성:명:3
  +합법칙적:명:4
  +합법화:명:2
  +합법화되다:동:2
  +합법화시키다:동:1
  +합법화하다:동:1
  +합병:명:8
  +합병되다:동:2
  +합병증:명:3
  +합병하다:동:5
  +합산:명:2
  +합산되다:동:1
  +합산하다:동:2
  +합석:명:2
  +합선:명:3
  +합성:명:13
  +합성되다:동:1
  +합성수지:명:2
  +합성수지제:명:1
  +합성어:명:1
  +합성하다:동:9
  +합세:명:3
  +합세되다:동:1
  +합세하다:동:8
  +합수:명:2
  +합숙:명:6
  +합숙소:명:4
  +합숙시키다:동:1
  +합승:명:2
  +합승하다:동:1
  +합심:명:1
  +합심하다:동:2
  +합의:명:109
  +합의:명:22
  +합의되다:동:10
  +합의부:명:1
  +합의서:명:20
  +합의제:명:1
  +합의하다:동:2
  +합의하다:동:62
  +합일:명:9
  +합일되다:동:3
  +합일시키다:동:1
  +합일적:명:1
  +합일점:명:1
  +합일하다:동:2
  +합자:명:1
  +합자사:명:1
  +합자연하다:동:1
  +합작:명:29
  +합작사:명:1
  +합작품:명:2
  +합장:명:2
  +합장하다:동:2
  +합종:명:1
  +합종연횡하다:동:1
  +합주하다:동:1
  +합참:명:12
  +합창:명:13
  +합창가:명:2
  +합창단:명:10
  +합창하다:동:3
  +합체:명:1
  +합쳐지다:동:11
  +합치다:동:75
  +합치되다:동:6
  +합치시키다:동:1
  +합치하다:동:1
  +합판:명:2
  +합하다:동:28
  +합하여지다:동:1
  +합해지다:동:3
  +합헌:명:3
  +합헌성:명:1
  +합헌적:명:1
  +합환주:명:1
  +핫:명:4
  +핫도그:명:5
  +핫바지:명:3
  +핫이슈:명:1
  +핫케이크:명:1
  +핫코일:명:1
  +핫팬츠:명:1
  +핫핫:부:1
  +항:명:57
  +항간:명:13
  +항거:명:5
  +항거하다:동:6
  +항고:명:8
  +항고인:명:1
  +항고하다:동:2
  +항공:명:29
  +항공관:명:1
  +항공관제:명:1
  +항공관제사:명:9
  +항공국:명:1
  +항공기:명:32
  +항공대:명:1
  +항공로:명:1
  +항공모함:명:2
  +항공사:명:12
  +항공사진:명:2
  +항공편:명:6
  +항구:명:49
  +항구성:명:2
  +항구적:관:1
  +항구적:명:6
  +항라:명:5
  +항렬자:명:1
  +항로:명:26
  +항마:명:1
  +항만:명:7
  +항명성:명:1
  +항모:명:1
  +항목:명:38
  +항문:명:8
  +항변:명:1
  +항변:명:3
  +항변하다:동:2
  +항변하다:동:3
  +항복:명:14
  +항복하다:동:13
  +항산화제:명:1
  +항상:부:287
  +항상성:명:1
  +항상적:관:1
  +항상적:명:2
  +항생:명:1
  +항생제:명:5
  +항성:명:5
  +항성표:명:1
  +항소:명:7
  +항소심:명:5
  +항소하다:동:1
  +항수:명:2
  +항수적:명:1
  +항습:명:1
  +항시:부:3
  +항시적:관:1
  +항심:명:2
  +항아리:명:12
  +항아리형:명:1
  +항암:명:6
  +항암제:명:19
  +항온:명:1
  +항원:명:1
  +항응고제:명:1
  +항의:명:68
  +항의단:명:2
  +항의문:명:1
  +항의서:명:2
  +항의성:관:1
  +항의하다:동:18
  +항일:명:7
  +항쟁:명:86
  +항쟁하다:동:1
  +항전:명:4
  +항전하다:동:1
  +항진:명:2
  +항진:명:4
  +항진되다:동:3
  +항진하다:동:1
  +항차:명:4
  +항체:명:7
  +항해:명:35
  +항해술:명:1
  +항해하다:동:10
  +항히스타민제:명:1
  +해:명:17
  +해:명:287
  +해:의:148
  +해감:명:1
  +해결:명:112
  +해결되다:동:65
  +해결법:명:1
  +해결사:명:5
  +해결안:명:1
  +해결점:명:2
  +해결책:명:27
  +해결하다:동:200
  +해경:명:1
  +해고:명:23
  +해고당하다:동:1
  +해고되다:동:1
  +해고자:명:2
  +해고제:명:5
  +해고하다:동:1
  +해골:명:17
  +해괴망측하다:형:3
  +해괴하다:형:10
  +해군:명:51
  +해금:명:3
  +해금되다:동:1
  +해난:명:1
  +해남말발도리:명:1
  +해내:명:2
  +해내다:동:60
  +해녀:명:2
  +해님:명:13
  +해답:명:34
  +해당:명:68
  +해당국:명:1
  +해당되다:동:57
  +해당란:명:2
  +해당자:명:4
  +해당하다:동:100
  +해당화:명:2
  +해독:명:13
  +해독:명:6
  +해독률:명:1
  +해독성:명:1
  +해독제:명:1
  +해독하다:동:5
  +해돋이:명:1
  +해동:명:2
  +해동:명:7
  +해동되다:동:1
  +해동종:명:1
  +해동하다:동:1
  +해득률:명:1
  +해뜨기:명:1
  +해로:명:1
  +해로:명:2
  +해로하다:동:1
  +해롭다:형:30
  +해롱대다:동:2
  +해류:명:1
  +해마:명:1
  +해마다:부:85
  +해맑다:형:9
  +해머:명:5
  +해면:명:2
  +해명:명:53
  +해명되다:동:8
  +해명하다:동:54
  +해몽:명:1
  +해묵다:동:10
  +해물:명:16
  +해물탕:명:3
  +해바라기:명:2
  +해바라기:명:7
  +해바라기성:명:2
  +해박하다:형:6
  +해발:명:15
  +해방:명:195
  +해방감:명:10
  +해방구:명:2
  +해방군:명:5
  +해방기:명:1
  +해방되다:동:41
  +해방론자:명:1
  +해방시키다:동:12
  +해방자:명:1
  +해방적:명:1
  +해방전:명:1
  +해방하다:동:11
  +해법:명:5
  +해변:명:14
  +해변가:명:6
  +해병:명:4
  +해병대:명:6
  +해보다:동:2
  +해부:명:4
  +해부하다:동:2
  +해부학적:관:2
  +해부학적:명:1
  +해빙:명:1
  +해빙기:명:1
  +해사하다:형:1
  +해산:명:3
  +해산권:명:2
  +해산당하다:동:1
  +해산되다:동:3
  +해산물:명:3
  +해산시키다:동:1
  +해산일:명:1
  +해산하다:동:3
  +해산하다:동:3
  +해상:명:3
  +해상:명:30
  +해상도:명:9
  +해서체:명:2
  +해석:명:67
  +해석:명:72
  +해석되다:동:14
  +해석론:명:2
  +해석자:명:5
  +해석적:관:2
  +해석적:명:1
  +해석하다:동:16
  +해석하다:동:62
  +해석학:명:3
  +해석학적:관:28
  +해설:명:38
  +해설가:명:2
  +해설서:명:2
  +해설자:명:12
  +해설하다:동:1
  +해소:명:46
  +해소되다:동:16
  +해소법:명:1
  +해소시키다:동:6
  +해소책:명:2
  +해소하다:동:34
  +해송:명:3
  +해수:명:2
  +해수면:명:4
  +해수병:명:1
  +해수욕:명:6
  +해수욕장:명:15
  +해수욕하다:동:1
  +해시계:명:2
  +해시라이스:명:1
  +해쑥:명:1
  +해쓱하다:형:1
  +해쓱해지다:동:1
  +해악:명:4
  +해악적:관:1
  +해안:명:56
  +해안가:명:3
  +해안선:명:19
  +해안통:명:22
  +해약하다:동:1
  +해양:명:19
  +해양국:명:1
  +해양대:명:1
  +해양성:명:1
  +해양인:명:3
  +해어지다:동:4
  +해역:명:6
  +해열제:명:2
  +해왕성:명:1
  +해외:명:165
  +해외여행:명:17
  +해외여행지:명:1
  +해운:명:7
  +해원:명:1
  +해이:명:1
  +해이되다:동:2
  +해이하다:형:2
  +해이해지다:동:4
  +해인:명:1
  +해임:명:21
  +해임당하다:동:2
  +해임되다:동:2
  +해임시키다:동:1
  +해임하다:동:4
  +해장:명:3
  +해장국:명:4
  +해장술:명:2
  +해저:명:5
  +해적:명:7
  +해전:명:5
  +해제:명:14
  +해제경보:명:1
  +해제되다:동:3
  +해제하다:동:10
  +해조류:명:3
  +해종일:명:1
  +해지:명:1
  +해지다:동:3
  +해지다:동:4
  +해직:명:19
  +해직당하다:동:1
  +해직되다:동:5
  +해직자:명:2
  +해참:명:1
  +해체:명:72
  +해체되다:동:20
  +해체론:명:1
  +해체시키다:동:5
  +해체하다:동:14
  +해초:명:3
  +해충:명:6
  +해치다:동:51
  +해치우다:동:10
  +해코지:명:1
  +해탈:명:12
  +해탈되다:동:2
  +해탈시키다:동:1
  +해탈하다:동:2
  +해태:명:10
  +해태:명:3
  +해토되다:동:1
  +해토머리:명:1
  +해트:명:4
  +해파리:명:1
  +해파리냉채:명:1
  +해풍:명:1
  +해프닝:명:20
  +해피:명:1
  +해하다:동:2
  +해학:명:2
  +해학스럽다:형:1
  +해학적:명:3
  +해해:부:1
  +해협:명:1
  +해후:명:2
  +핵:명:115
  +핵가족:명:9
  +핵귀:명:3
  +핵무기:명:20
  +핵물리:명:1
  +핵물리학과:명:1
  +핵미사일:명:2
  +핵분열시키다:동:1
  +핵분열하다:동:1
  +핵산:명:5
  +핵심:명:124
  +핵심부:명:6
  +핵심적:관:21
  +핵심적:명:16
  +핵심층:명:1
  +핵에너지:명:2
  +핵연료:명:10
  +핵우산:명:1
  +핵융합:명:3
  +핵융합하다:동:1
  +핵자기:명:1
  +핵전략:명:1
  +핵전쟁:명:2
  +핵탄두:명:2
  +핵폐기물:명:2
  +핵폭탄:명:2
  +핸드:명:7
  +핸드백:명:28
  +핸드볼:명:20
  +핸드북:명:1
  +핸드폰:명:15
  +핸들:명:9
  +핸디:명:1
  +핸디캡:명:4
  +핼끔:부:1
  +핼쑥하다:형:2
  +핼쑥해지다:동:2
  +햄:명:20
  +햄릿형:명:1
  +햄버거:명:28
  +햄버거점:명:1
  +햄버그스테이크:명:1
  +햅쌀:명:1
  +햇과일:명:2
  +햇발:명:1
  +햇병아리:명:3
  +햇볕:명:40
  +햇보리:명:1
  +햇빛:명:71
  +햇살:명:87
  +햇수:명:1
  +행:명:1
  +행:명:2
  +행:명:3
  +행각:명:10
  +행간:명:4
  +행거:명:1
  +행군:명:3
  +행궁:명:3
  +행글라이더:명:1
  +행나무:명:1
  +행님:명:1
  +행동:명:456
  +행동거지:명:4
  +행동권:명:1
  +행동력:명:2
  +행동반경:명:1
  +행동자:명:3
  +행동적:관:7
  +행동적:명:1
  +행동주의:명:1
  +행동파:명:3
  +행동하다:동:89
  +행락:명:2
  +행락객:명:12
  +행랑:명:14
  +행랑채:명:4
  +행려병자:명:4
  +행려자:명:2
  +행렬:명:15
  +행로:명:4
  +행방:명:24
  +행방불명:명:1
  +행방불명자:명:1
  +행보:명:9
  +행복:명:112
  +행복감:명:11
  +행복권:명:2
  +행복되다:동:1
  +행복하다:형:117
  +행복하여지다:동:1
  +행복해지다:동:8
  +행복해하다:동:6
  +행사:명:201
  +행사:명:44
  +행사되다:동:2
  +행사장:명:3
  +행사하다:동:2
  +행사하다:동:51
  +행상:명:3
  +행색:명:4
  +행서체:명:1
  +행선지:명:3
  +행성:명:25
  +행세:명:17
  +행세하다:동:7
  +행시:명:1
  +행실:명:8
  +행악:명:1
  +행여:부:20
  +행여나:부:7
  +행운:명:42
  +행운목:명:1
  +행원:명:4
  +행위:명:405
  +행위자:명:22
  +행위적:관:1
  +행위하다:동:1
  +행의:명:1
  +행이지난:명:1
  +행인:명:27
  +행자:명:1
  +행장:명:1
  +행장:명:22
  +행적:명:17
  +행정:명:251
  +행정가:명:3
  +행정관:명:2
  +행정권:명:1
  +행정력:명:3
  +행정반:명:1
  +행정법:명:1
  +행정병:명:1
  +행정부:명:24
  +행정실:명:9
  +행정원:명:2
  +행정원장:명:1
  +행정적:관:2
  +행정적:명:2
  +행정직:명:2
  +행정청:명:2
  +행정촌제:명:1
  +행정학과:명:7
  +행주:명:12
  +행주치마:명:1
  +행진:명:13
  +행진곡:명:2
  +행진곡풍:명:1
  +행진풍:명:1
  +행진하다:동:5
  +행차:명:6
  +행태:명:39
  +행태주의적:관:8
  +행티:명:1
  +행패:명:12
  +행편:명:1
  +행하다:동:45
  +행하여지다:동:10
  +행해지다:동:46
  +행협:명:1
  +향:명:4
  +향:명:66
  +향교:명:21
  +향그럽다:형:1
  +향긋하다:형:10
  +향기:명:77
  +향기롭다:형:9
  +향나무:명:4
  +향내:명:17
  +향냄새:명:2
  +향년:명:1
  +향도:명:2
  +향락:명:11
  +향락객:명:1
  +향락업소:명:6
  +향락적:명:1
  +향락화:명:1
  +향락화되다:동:2
  +향로:명:1
  +향료:명:3
  +향리:명:3
  +향리제:명:1
  +향리층:명:5
  +향방:명:7
  +향배:명:7
  +향벽설위:명:5
  +향상:명:65
  +향상되다:동:19
  +향상시키다:동:30
  +향상하다:동:2
  +향수:명:18
  +향수:명:18
  +향수:명:44
  +향수권:명:1
  +향수병:명:1
  +향수병:명:5
  +향수자:명:2
  +향수하다:동:3
  +향시:명:1
  +향시:명:1
  +향신료:명:4
  +향심:명:1
  +향아설위:명:9
  +향악:명:1
  +향약:명:16
  +향약록:명:2
  +향연:명:5
  +향연장:명:1
  +향유:명:5
  +향유시키다:동:1
  +향유하다:동:14
  +향응:명:8
  +향인:명:1
  +향직원:명:2
  +향촌:명:13
  +향취:명:2
  +향토:명:13
  +향토사:명:1
  +향토색:명:1
  +향토애:명:2
  +향토적:명:1
  +향하다:동:479
  +향해지다:동:1
  +향후:명:27
  +향훈:명:1
  +허:감:25
  +허:명:6
  +허가:명:59
  +허가되다:동:2
  +허가받다:동:3
  +허가서:명:3
  +허가제:명:1
  +허가증:명:1
  +허가하다:동:11
  +허겁지겁:부:15
  +허공:명:49
  +허공중:명:1
  +허구:명:18
  +허구성:명:1
  +허구심:명:1
  +허구적:관:3
  +허구적:명:3
  +허구하다:형:14
  +허구화시키다:동:1
  +허기:명:3
  +허기사:부:1
  +허기져하다:동:1
  +허기증:명:1
  +허기지다:동:8
  +허깨비:명:7
  +허니:명:1
  +허다:동:40
  +허다하다:형:9
  +허덕대다:동:1
  +허덕이다:동:14
  +허둥거리다:동:6
  +허둥대다:동:7
  +허둥지둥:부:7
  +허드레:명:2
  +허드렛물:명:2
  +허드렛일:명:2
  +허들:명:5
  +허락:명:31
  +허락되다:동:4
  +허락받다:동:4
  +허락하다:동:34
  +허랑하다:형:2
  +허례:명:1
  +허롭다:형:1
  +허름하다:형:25
  +허릅숭이:명:1
  +허리:명:210
  +허리끈:명:1
  +허리띠:명:12
  +허리춤:명:6
  +허리통:명:1
  +허릿장:명:1
  +허망감:명:1
  +허망하다:형:23
  +허망해하다:동:1
  +허무:명:14
  +허무감:명:2
  +허무맹랑하다:형:2
  +허무주의:명:6
  +허무주의자:명:4
  +허무하다:형:24
  +허물:명:11
  +허물:명:7
  +허물다:동:16
  +허물벗기:명:1
  +허물어뜨리다:동:8
  +허물어지다:동:23
  +허물없다:형:3
  +허물없이:부:1
  +허물투성이:명:1
  +허밍:명:1
  +허방다리:명:1
  +허벅다리:명:4
  +허벅지:명:11
  +허벌나다:형:1
  +허브:명:7
  +허비하다:동:10
  +허사:명:8
  +허상:명:11
  +허섭스레기:명:1
  +허세:명:14
  +허송세월:명:3
  +허송하다:동:2
  +허수름하다:형:1
  +허수아비:명:18
  +허술하다:형:16
  +허술히:부:1
  +허스키:명:1
  +허스키하다:형:1
  +허실:명:4
  +허심탄회하다:형:5
  +허약:명:1
  +허약하다:형:14
  +허약해지다:동:1
  +허영:명:7
  +허영스럽다:형:2
  +허영심:명:4
  +허영적:명:1
  +허영투성이:명:1
  +허옇다:형:16
  +허용:명:49
  +허용되다:동:44
  +허용량:명:1
  +허용하다:동:73
  +허우적거리다:동:11
  +허우적대다:동:7
  +허우적허우적:부:2
  +허울:명:11
  +허위:명:33
  +허위단심:명:1
  +허위성:명:1
  +허위의식:명:27
  +허위적:관:1
  +허위허위:부:1
  +허장성세:명:1
  +허재비:명:1
  +허전하다:형:22
  +허점:명:20
  +허증:명:1
  +허지만:접:1
  +허청허청:부:1
  +허탈:명:2
  +허탈감:명:9
  +허탈하다:형:13
  +허탈해지다:동:1
  +허탈해하다:동:1
  +허탕:명:4
  +허턱:부:1
  +허텅지거리:명:2
  +허투루:부:1
  +허퉁하다:형:1
  +허튼소리:명:1
  +허파:명:3
  +허풍:명:3
  +허풍기:명:2
  +허풍스럽다:형:2
  +허피스심플렉스:명:1
  +허하다:형:7
  +허해지다:동:2
  +허허:감:14
  +허허:부:15
  +허허롭다:형:4
  +허허벌판:명:1
  +허황기:명:1
  +허황되다:형:4
  +허황하다:형:4
  +헉:부:26
  +헉헉:부:11
  +헉헉거리다:동:3
  +헉헉대다:동:6
  +헌:관:38
  +헌걸차다:형:2
  +헌것:명:1
  +헌금:명:15
  +헌금하다:동:2
  +헌납:명:1
  +헌납하다:동:3
  +헌디:접:1
  +헌물:명:1
  +헌물장:명:1
  +헌법:명:102
  +헌법안:명:1
  +헌병:명:20
  +헌병감:명:1
  +헌병감실:명:1
  +헌병대:명:5
  +헌상:명:1
  +헌신:명:6
  +헌신시키다:동:1
  +헌신적:명:7
  +헌신짝:명:1
  +헌신하다:동:10
  +헌장:명:12
  +헌정:명:3
  +헌정사:명:1
  +헌책:명:23
  +헌책방:명:4
  +헌털뱅이:명:1
  +헌팅:명:1
  +헌팅턴병:명:1
  +헌헌장부:명:1
  +헌혈:명:6
  +헌혈자:명:1
  +헐값:명:3
  +헐겁다:형:5
  +헐다:동:20
  +헐다:동:4
  +헐떡거리다:동:6
  +헐떡이다:동:2
  +헐뜯다:동:4
  +헐렁하다:형:3
  +헐레벌떡:부:6
  +헐려지다:동:1
  +헐리다:동:9
  +헐벗기다:동:1
  +헐벗다:동:2
  +헐하다:형:5
  +헐헐:부:1
  +험:감:1
  +험구:명:3
  +험난하다:형:5
  +험담:명:3
  +험담하다:동:1
  +험상궂다:형:5
  +험악하다:형:7
  +험악해지다:동:2
  +험준하다:형:3
  +험하다:형:26
  +험험:감:1
  +헛:명:1
  +헛간:명:14
  +헛갈리다:동:4
  +헛걸음:명:2
  +헛걸음시키다:동:1
  +헛것:명:2
  +헛고생:명:1
  +헛공부:명:1
  +헛구역질:명:5
  +헛그림자:명:1
  +헛기운:명:1
  +헛기침:명:7
  +헛놀리다:동:1
  +헛다리:명:1
  +헛돈:명:2
  +헛돌다:동:4
  +헛되다:형:15
  +헛되이:부:2
  +헛디디다:동:7
  +헛디디어지다:동:1
  +헛맹세:명:1
  +헛몸짓:명:1
  +헛바람:명:2
  +헛발길:명:2
  +헛발음:명:1
  +헛방아쇠:명:1
  +헛배:명:1
  +헛소리:명:10
  +헛소리하다:동:1
  +헛소문:명:4
  +헛손질:명:1
  +헛수고:명:6
  +헛수작:명:1
  +헛심부름:명:2
  +헛웃음:명:1
  +헛일:명:5
  +헛짓:명:1
  +헛짓다:동:1
  +헛짚다:동:1
  +헛코:명:1
  +헛헛:부:1
  +헛헛하다:형:4
  +헝겊:명:10
  +헝클어뜨리다:동:4
  +헝클어지다:동:13
  +헤:부:2
  +헤게모니:명:37
  +헤게모니론:명:7
  +헤게모니적:관:9
  +헤게모니적:명:1
  +헤겔주의:명:1
  +헤겔주의적:관:3
  +헤드:명:9
  +헤드라이트:명:3
  +헤드라인:명:11
  +헤드폰:명:2
  +헤딩:명:10
  +헤딩력:명:1
  +헤딩슛:명:8
  +헤딩하다:동:2
  +헤로인:명:1
  +헤리티지:명:1
  +헤매다:동:59
  +헤모글로빈:명:1
  +헤벌리다:동:2
  +헤벌쭉:부:2
  +헤벌쭉하다:동:1
  +헤브라이어:명:1
  +헤비급:명:2
  +헤비메탈:명:4
  +헤설프다:형:2
  +헤아리다:동:64
  +헤어:명:2
  +헤어나다:동:24
  +헤어스타일:명:9
  +헤어스프레이:명:1
  +헤어지다:동:98
  +헤엄:명:5
  +헤엄치다:동:15
  +헤이:감:2
  +헤집다:동:15
  +헤치다:동:28
  +헤퍼지다:동:1
  +헤프다:형:6
  +헤헤:부:25
  +헤헤거리다:동:2
  +헥타르:의:9
  +헬기:명:49
  +헬레니즘:명:2
  +헬륨:명:3
  +헬리콥터:명:9
  +헬리포트:명:1
  +헬멧:명:13
  +헬스:명:3
  +헬스장:명:1
  +헬스클럽:명:4
  +헬프:명:1
  +헷갈리다:동:11
  +헷것:명:2
  +헹구다:동:39
  +혀:명:96
  +혀끝:명:5
  +혀끝소리:명:1
  +혀뿌리:명:2
  +혁대:명:4
  +혁명:명:163
  +혁명가:명:11
  +혁명군:명:3
  +혁명기:명:3
  +혁명론:명:2
  +혁명론자:명:1
  +혁명성:명:1
  +혁명적:관:19
  +혁명적:명:19
  +혁명주의:명:1
  +혁신:명:19
  +혁신적:관:3
  +혁신적:명:7
  +혁신하다:동:3
  +혁파:명:4
  +혁파되다:동:1
  +혁파하다:동:6
  +혁혁하다:형:1
  +현:관:128
  +현:명:1
  +현:명:2
  +현:명:3
  +현:명:6
  +현감:명:1
  +현격하다:형:3
  +현관:명:46
  +현관문:명:30
  +현금:명:94
  +현금화:명:1
  +현금화하다:동:1
  +현기:명:1
  +현기증:명:16
  +현단:명:1
  +현대:명:385
  +현대극:명:1
  +현대문:명:1
  +현대물:명:5
  +현대병:명:2
  +현대사:명:30
  +현대성:명:1
  +현대식:명:6
  +현대인:명:46
  +현대적:관:17
  +현대적:명:14
  +현대전:명:1
  +현대주의:명:2
  +현대판:명:6
  +현대화:명:12
  +현대화되다:동:1
  +현대화하다:동:1
  +현란스럽다:형:1
  +현란하다:형:13
  +현맥:명:1
  +현명하다:형:28
  +현모:명:1
  +현모양처:명:10
  +현모양처주의:명:1
  +현묘:명:1
  +현묘하다:형:4
  +현무:명:3
  +현무암:명:9
  +현문:명:4
  +현물:명:3
  +현미:명:4
  +현미경:명:5
  +현미밥:명:2
  +현상:명:1
  +현상:명:5
  +현상:명:599
  +현상:명:8
  +현상계:명:5
  +현상금:명:2
  +현상적:관:5
  +현상하다:동:1
  +현상학:명:13
  +현상학적:관:7
  +현생:명:3
  +현세:명:16
  +현세력:명:2
  +현세불:명:1
  +현세적:관:4
  +현세적:명:3
  +현세주의:명:2
  +현세주의적:관:1
  +현수막:명:8
  +현시기:명:1
  +현시대:명:4
  +현시적:명:2
  +현시점:명:3
  +현시하다:동:1
  +현실:명:690
  +현실감:명:5
  +현실론:명:1
  +현실성:명:9
  +현실적:관:39
  +현실적:명:111
  +현실주의:명:5
  +현실주의자:명:5
  +현실주의적:관:1
  +현실주의적:명:1
  +현실주의화하다:동:1
  +현실층:명:1
  +현실화:명:6
  +현실화도:명:1
  +현실화되다:동:9
  +현실화하다:동:10
  +현악기:명:5
  +현안:명:36
  +현업:명:2
  +현역:명:50
  +현위:명:1
  +현인:명:1
  +현자:명:1
  +현장:명:278
  +현장감:명:3
  +현장성:명:3
  +현재:명:269
  +현재:부:485
  +현재성:명:4
  +현재적:관:11
  +현재적:명:4
  +현재화하다:동:2
  +현저하다:형:16
  +현저해지다:동:2
  +현저화:명:2
  +현저히:부:10
  +현존:명:6
  +현존자:명:1
  +현존하다:동:14
  +현주소:명:6
  +현지:명:77
  +현지답사:명:1
  +현지인:명:3
  +현직:명:1
  +현직:명:12
  +현찰:명:4
  +현창하다:동:1
  +현처:명:1
  +현충일:명:5
  +현충탑:명:1
  +현판:명:2
  +현판식:명:3
  +현학적:명:3
  +현행:명:93
  +현행범:명:8
  +현행법:명:14
  +현현:명:1
  +현현되다:동:1
  +현혹:명:1
  +현혹당하다:동:1
  +현혹되다:동:5
  +현혹시키다:동:1
  +현혹하다:동:2
  +현황:명:28
  +혈:명:14
  +혈관:명:17
  +혈기:명:7
  +혈당:명:1
  +혈맥:명:1
  +혈색:명:5
  +혈색소:명:1
  +혈세:명:2
  +혈안:명:5
  +혈압:명:9
  +혈액:명:47
  +혈액형:명:2
  +혈연:명:12
  +혈연관계:명:4
  +혈연성:명:1
  +혈연적:관:2
  +혈연적:명:9
  +혈우병:명:1
  +혈육:명:5
  +혈전:명:4
  +혈족:명:6
  +혈족적:명:1
  +혈청:명:3
  +혈통:명:8
  +혈투:명:3
  +혈행:명:1
  +혈허성:명:1
  +혈혈단신:명:2
  +혐오:명:10
  +혐오감:명:9
  +혐오스럽다:형:7
  +혐오하다:동:9
  +혐의:명:180
  +혐의자:명:8
  +협객:명:1
  +협곡:명:2
  +협공:명:3
  +협궤:명:12
  +협동:명:16
  +협동농장:명:6
  +협동심:명:8
  +협동적:관:7
  +협동적:명:6
  +협동조합:명:7
  +협동하다:동:7
  +협동형:명:1
  +협동화:명:4
  +협동화하다:동:1
  +협력:명:107
  +협력관:명:6
  +협력국:명:1
  +협력국장:명:5
  +협력단장:명:1
  +협력사:명:1
  +협력하다:동:19
  +협박:명:32
  +협박성:명:1
  +협박하다:동:12
  +협상:명:184
  +협상물:명:2
  +협상하다:동:1
  +협소:명:2
  +협소하다:형:8
  +협소화:명:1
  +협심증:명:3
  +협약:명:35
  +협업:명:2
  +협업적:명:3
  +협연:명:2
  +협연자:명:4
  +협연하다:동:1
  +협의:명:38
  +협의:명:4
  +협의체:명:10
  +협의하다:동:23
  +협의회:명:43
  +협정:명:138
  +협정량:명:2
  +협정문:명:1
  +협정서:명:2
  +협정안:명:1
  +협조:명:27
  +협조:명:4
  +협조받다:동:1
  +협조주의:명:1
  +협조하다:동:18
  +협조하다:동:3
  +협주곡:명:10
  +협주단:명:1
  +협착증:명:1
  +협찬:명:1
  +협찬하다:동:3
  +협화:명:1
  +협회:명:63
  +협회원:명:1
  +협회장:명:3
  +혓바늘:명:1
  +혓바닥:명:4
  +형:명:14
  +형:명:16
  +형:명:312
  +형:명:8
  +형광:명:4
  +형광등:명:13
  +형국:명:12
  +형국론:명:1
  +형님:명:175
  +형량:명:5
  +형리:명:1
  +형무소:명:3
  +형문:명:6
  +형문당하다:동:1
  +형문하다:동:2
  +형벌:명:16
  +형법:명:19
  +형부:명:63
  +형사:명:89
  +형사계:명:5
  +형사계장:명:1
  +형사계장실:명:2
  +형사범:명:2
  +형사법:명:3
  +형사부:명:2
  +형상:명:1
  +형상:명:39
  +형상론:명:1
  +형상론적:관:1
  +형상화:명:9
  +형상화되다:동:3
  +형상화시키다:동:5
  +형상화하다:동:11
  +형성:명:1
  +형성:명:181
  +형성기:명:2
  +형성되다:동:152
  +형성되어지다:동:1
  +형성력:명:2
  +형성론:명:1
  +형성론자:명:1
  +형성시키다:동:10
  +형성자:명:2
  +형성적:관:5
  +형성적:명:1
  +형성하다:동:104
  +형성화:명:1
  +형세:명:10
  +형수:명:6
  +형식:명:2
  +형식:명:266
  +형식미:명:3
  +형식성:명:1
  +형식적:관:25
  +형식적:명:36
  +형식주의:명:5
  +형식주의적:관:3
  +형식화되다:동:1
  +형언하다:동:2
  +형옥:명:1
  +형용사:명:3
  +형용하다:동:1
  +형이상학:명:2
  +형이상학적:관:16
  +형이상학적:명:5
  +형장:명:3
  +형정:명:1
  +형제:명:104
  +형제간:명:14
  +형제국:명:1
  +형제애:명:1
  +형제자매:명:6
  +형제지간:명:5
  +형질:명:8
  +형체:명:14
  +형태:명:478
  +형태미:명:9
  +형태적:관:3
  +형틀:명:1
  +형편:명:103
  +형편없다:형:15
  +형편없이:부:11
  +형평:명:18
  +형평성:명:6
  +형평화:명:2
  +형해화:명:1
  +형해화하다:동:1
  +형형색색:명:2
  +형형해지다:동:1
  +혜성:명:3
  +혜안:명:11
  +혜택:명:46
  +호:감:2
  +호:명:6
  +호:의:149
  +호:의:5
  +호가:명:4
  +호가하다:동:1
  +호가호위:명:1
  +호각:명:5
  +호감:명:16
  +호감도:명:3
  +호강:명:3
  +호강하다:동:1
  +호객꾼:명:2
  +호걸:명:1
  +호경기:명:2
  +호곡:명:1
  +호구:명:4
  +호국:명:10
  +호국터:명:1
  +호기:명:3
  +호기:명:6
  +호기:명:9
  +호기롭다:형:1
  +호기심:명:75
  +호남:명:1
  +호남:명:36
  +호당:명:2
  +호도:명:1
  +호도하다:동:7
  +호되다:형:12
  +호두:명:18
  +호들갑:명:6
  +호들갑스럽다:형:1
  +호떡:명:3
  +호락호락:부:1
  +호락호락하다:형:2
  +호란:명:1
  +호랑말코:명:2
  +호랑버들:명:4
  +호랑이:명:102
  +호랑이신:명:1
  +호러:명:1
  +호렌소:명:1
  +호령:명:3
  +호령하다:동:2
  +호롱불:명:4
  +호루라기:명:2
  +호르몬:명:20
  +호리호리하다:형:1
  +호명:명:1
  +호명되다:동:1
  +호명하다:동:2
  +호모:명:6
  +호미:명:4
  +호민:명:1
  +호밀:명:3
  +호박:명:56
  +호박고지:명:5
  +호박꽃:명:6
  +호박나물:명:1
  +호박벌:명:9
  +호박색:명:2
  +호박잎:명:1
  +호박죽:명:2
  +호박찌개:명:1
  +호반:명:1
  +호방하다:형:1
  +호별지정:명:3
  +호봉:명:12
  +호부층:명:5
  +호불:명:1
  +호빵:명:1
  +호사:명:3
  +호사가:명:2
  +호사다마:명:1
  +호사스럽다:형:1
  +호사하다:동:2
  +호상:명:1
  +호상:명:4
  +호생하다:동:1
  +호선:의:29
  +호소:명:1
  +호소:명:14
  +호소:명:6
  +호소력:명:9
  +호소문:명:6
  +호소하다:동:22
  +호소하다:동:38
  +호송:명:8
  +호송되다:동:1
  +호송하다:동:1
  +호수:명:4
  +호수:명:46
  +호수:명:5
  +호숫가:명:5
  +호스:명:2
  +호스텔:명:2
  +호스트:명:3
  +호스티스:명:18
  +호스피스:명:2
  +호시탐탐:명:6
  +호식:명:1
  +호신:명:2
  +호실:명:15
  +호언장담:명:1
  +호언장담하다:동:1
  +호역:명:2
  +호연:명:1
  +호연지기:명:4
  +호연하다:형:1
  +호열자:명:5
  +호외:명:2
  +호우:명:2
  +호위:명:5
  +호위하다:동:1
  +호위하다:동:2
  +호응:명:28
  +호응도:명:3
  +호응하다:동:8
  +호의:명:11
  +호의적:관:1
  +호의적:명:5
  +호재:명:2
  +호재성:명:1
  +호적:명:16
  +호전:명:5
  +호전되다:동:11
  +호전성:명:3
  +호전시키다:동:2
  +호전적:관:2
  +호전적:명:3
  +호접몽:명:1
  +호젓하다:형:3
  +호조:명:1
  +호조:명:8
  +호조황:명:1
  +호족:명:1
  +호족:명:57
  +호족적:관:1
  +호졸근하다:형:1
  +호주:명:2
  +호주가:명:1
  +호주머니:명:37
  +호출:명:6
  +호출기:명:1
  +호출되다:동:3
  +호출하다:동:2
  +호치키스:명:1
  +호칭:명:18
  +호칭하다:동:5
  +호쾌하다:형:1
  +호탕하다:형:5
  +호텔:명:88
  +호텔가:명:1
  +호텔비:명:1
  +호텔업:명:1
  +호통:명:14
  +호통기:명:1
  +호판:명:1
  +호패:명:1
  +호패법:명:2
  +호평:명:5
  +호프:명:3
  +호헌:명:1
  +호혜:명:2
  +호혜적:관:1
  +호혜적:명:2
  +호호:부:13
  +호호거리다:동:1
  +호화:명:13
  +호화롭다:형:2
  +호화스러워지다:동:1
  +호화스럽다:형:4
  +호화판:명:2
  +호환:명:2
  +호환성:명:6
  +호황:명:21
  +호황기:명:2
  +호흡:명:91
  +호흡계:명:1
  +호흡기:명:9
  +호흡법:명:7
  +호흡수:명:6
  +호흡증:명:1
  +호흡하다:동:9
  +혹:명:7
  +혹:부:22
  +혹독하다:형:19
  +혹부리:명:5
  +혹사:명:1
  +혹사당하다:동:3
  +혹사시키다:동:2
  +혹사하다:동:3
  +혹서기:명:1
  +혹성:명:8
  +혹세무민하다:동:1
  +혹시:부:161
  +혹시나:부:17
  +혹심하다:형:7
  +혹여:부:5
  +혹은:접:241
  +혹자:명:5
  +혹평:명:2
  +혹평가:명:1
  +혹평하다:동:1
  +혹하다:동:1
  +혹한:명:2
  +혼:명:32
  +혼곤:명:1
  +혼구:명:1
  +혼기:명:2
  +혼나다:동:16
  +혼내다:동:8
  +혼내키다:동:1
  +혼담:명:1
  +혼돈:명:27
  +혼돈스럽다:형:1
  +혼동:명:7
  +혼동되다:동:6
  +혼동스럽다:형:1
  +혼동시키다:동:1
  +혼동하다:동:9
  +혼란:명:73
  +혼란기:명:9
  +혼란되다:동:3
  +혼란상:명:1
  +혼란스러워지다:동:2
  +혼란스러워하다:동:1
  +혼란스럽다:형:14
  +혼란시키다:동:4
  +혼란하다:형:3
  +혼란해지다:동:5
  +혼령:명:12
  +혼례:명:9
  +혼례식:명:1
  +혼미:명:2
  +혼미롭다:형:1
  +혼미하다:형:1
  +혼미해지다:형:1
  +혼방:명:1
  +혼백:명:2
  +혼복:명:1
  +혼비백산하다:동:4
  +혼사:명:10
  +혼색:명:1
  +혼생하다:동:3
  +혼서장:명:1
  +혼선:명:7
  +혼성:명:2
  +혼성:명:3
  +혼성군:명:1
  +혼성림:명:1
  +혼수:명:22
  +혼수비:명:1
  +혼수상태:명:3
  +혼수품:명:3
  +혼숫감:명:4
  +혼식:명:4
  +혼신:명:2
  +혼신:명:6
  +혼약:명:1
  +혼약금:명:1
  +혼연일체:명:1
  +혼외:명:1
  +혼용:명:2
  +혼용하다:동:5
  +혼융:명:2
  +혼인:명:22
  +혼인날:명:3
  +혼인식:명:7
  +혼인치레:명:1
  +혼인하다:동:14
  +혼자:명:530
  +혼자되다:동:2
  +혼자속:명:3
  +혼잡:명:12
  +혼잡하다:형:7
  +혼잣말:명:18
  +혼잣말하다:동:3
  +혼잣몸:명:1
  +혼잣소리:명:10
  +혼잣손:명:2
  +혼재되다:동:2
  +혼재하다:동:2
  +혼전:명:15
  +혼전:명:2
  +혼절:명:1
  +혼조:명:1
  +혼종어:명:2
  +혼쭐:명:1
  +혼쭐내다:동:1
  +혼처:명:1
  +혼천의:명:1
  +혼탁:명:10
  +혼탁상:명:1
  +혼탁하다:형:6
  +혼탁해지다:동:1
  +혼합:명:10
  +혼합되다:동:6
  +혼합반:명:1
  +혼합적:명:1
  +혼합하다:동:4
  +혼혈:명:1
  +혼혈아:명:2
  +혼효림:명:3
  +홀:명:52
  +홀:명:6
  +홀가분하다:형:14
  +홀가분해지다:동:3
  +홀까닥:부:1
  +홀대:명:1
  +홀드시키다:동:1
  +홀딱:부:4
  +홀라당:부:5
  +홀랑:부:7
  +홀로:부:57
  +홀리다:동:10
  +홀몸:명:1
  +홀소리:명:2
  +홀수:명:9
  +홀수일:명:1
  +홀아비:명:17
  +홀어머니:명:11
  +홀연:부:2
  +홀연히:부:11
  +홀짝:명:1
  +홀짝:부:1
  +홀짝거리다:동:3
  +홀짝수제:명:1
  +홀짝이다:명:1
  +홀쭉이:명:1
  +홀쭉하다:형:4
  +홀쭉해지다:동:1
  +홀치기염:명:1
  +홀치다:동:1
  +홀홀:부:1
  +홈:명:11
  +홈:명:6
  +홈경기:명:8
  +홈구장:명:1
  +홈그라운드:명:1
  +홈대:명:1
  +홈런:명:10
  +홈런왕:명:5
  +홈뱅킹:명:1
  +홈빡:부:1
  +홈빡홈빡:부:1
  +홈앤드어웨이:명:1
  +홈오토메이션:명:1
  +홈웨어:명:1
  +홈웨어풍:명:1
  +홈통:명:2
  +홈페이지:명:19
  +홉:명:1
  +홉:의:3
  +홉뜨다:동:1
  +홍:명:3
  +홍당무:명:3
  +홍두깨:명:6
  +홍라:명:1
  +홍류:명:6
  +홍류석:명:1
  +홍반:명:1
  +홍백색:명:2
  +홍보:명:76
  +홍보과:명:2
  +홍보물:명:4
  +홍보비:명:1
  +홍보성:명:1
  +홍보실:명:3
  +홍보실장:명:1
  +홍보전:명:5
  +홍보지:명:1
  +홍보처:명:1
  +홍보판:명:1
  +홍보하다:동:10
  +홍복:명:1
  +홍색:명:1
  +홍수:명:40
  +홍수림:명:1
  +홍안:명:1
  +홍어:명:1
  +홍역:명:3
  +홍예:명:2
  +홍의:명:1
  +홍익:명:2
  +홍익인간:명:7
  +홍전:명:1
  +홍조:명:2
  +홍차:명:9
  +홍합:명:9
  +홑고의:명:1
  +홑두루마기:명:2
  +홑몸:명:1
  +홑바지:명:1
  +홑이불:명:1
  +홑저고리:명:1
  +홑적삼:명:1
  +홑청:명:2
  +홑청감:명:1
  +화:명:1
  +화:명:13
  +화:명:132
  +화:명:7
  +화가:명:65
  +화강:명:2
  +화강석:명:2
  +화강암:명:48
  +화공:명:1
  +화공학:명:1
  +화관무:명:1
  +화교과:명:2
  +화구:명:2
  +화구호:명:1
  +화근:명:9
  +화급하다:형:2
  +화기:명:1
  +화기:명:5
  +화기:명:6
  +화기애애하다:형:2
  +화끈:부:3
  +화끈거리다:동:8
  +화끈하다:형:13
  +화끈해지다:동:3
  +화나다:동:18
  +화내다:동:3
  +화냥년:명:2
  +화농:명:1
  +화닥닥:부:4
  +화단:명:15
  +화단:명:2
  +화답:명:3
  +화답하다:동:3
  +화덕:명:1
  +화동:명:1
  +화두:명:32
  +화두선:명:1
  +화들짝:부:9
  +화등잔:명:1
  +화랑:명:9
  +화랑가:명:1
  +화랑도:명:3
  +화려체:명:1
  +화려하다:형:104
  +화력:명:14
  +화로:명:5
  +화롯불:명:2
  +화류계:명:1
  +화류회:명:1
  +화르르:부:1
  +화르르거리다:동:1
  +화마:명:1
  +화면:명:128
  +화목:명:5
  +화목둥이:명:1
  +화목하다:형:16
  +화목해지다:동:1
  +화문석:명:2
  +화물:명:20
  +화물기:명:1
  +화물선:명:14
  +화물차:명:6
  +화물창:명:2
  +화물칸:명:4
  +화방주:명:1
  +화백:명:8
  +화법:명:4
  +화병:명:1
  +화보:명:7
  +화보집:명:1
  +화복:명:1
  +화본과:명:2
  +화북:명:13
  +화분:명:61
  +화사:명:1
  +화사하다:형:10
  +화사해지다:동:1
  +화산:명:56
  +화산도:명:1
  +화산섬:명:2
  +화산재:명:1
  +화살:명:47
  +화살표:명:1
  +화상:명:1
  +화상:명:2
  +화상:명:21
  +화상:명:9
  +화생:명:1
  +화생방:명:1
  +화서:명:1
  +화석:명:25
  +화석화되다:동:2
  +화선지:명:1
  +화성:명:2
  +화소:명:8
  +화수분:명:1
  +화순하다:형:1
  +화술:명:4
  +화술극:명:1
  +화식:명:5
  +화신:명:6
  +화실:명:10
  +화약:명:31
  +화약내:명:1
  +화약품:명:1
  +화엄경:명:19
  +화엄적:관:2
  +화엄적:명:1
  +화엄학:명:6
  +화업:명:1
  +화염:명:3
  +화염병:명:36
  +화요일:명:10
  +화우:명:1
  +화원:명:1
  +화원:명:2
  +화음:명:2
  +화의:명:1
  +화이트:명:3
  +화이트닝:명:1
  +화이트칼라:명:2
  +화인:명:1
  +화일:명:1
  +화자:명:3
  +화장:명:58
  +화장기:명:2
  +화장대:명:3
  +화장법:명:3
  +화장비:명:1
  +화장비누:명:4
  +화장수:명:5
  +화장술:명:1
  +화장실:명:116
  +화장지:명:27
  +화장터:명:4
  +화장품:명:114
  +화장품점:명:1
  +화장하다:동:1
  +화장하다:동:3
  +화재:명:47
  +화재경보기:명:1
  +화쟁:명:13
  +화적패:명:1
  +화전:명:1
  +화전민:명:2
  +화제:명:1
  +화제:명:111
  +화제성:명:1
  +화제작:명:3
  +화젯거리:명:5
  +화조화:명:1
  +화질:명:1
  +화집:명:1
  +화창하다:형:4
  +화채:명:4
  +화첩:명:1
  +화초:명:17
  +화초원:명:1
  +화친:명:2
  +화톳불:명:11
  +화톳불가:명:3
  +화통:명:1
  +화통:명:1
  +화투:명:9
  +화투장:명:1
  +화평:명:4
  +화평하다:형:2
  +화폐:명:22
  +화포:명:4
  +화폭:명:6
  +화풀이:명:8
  +화풀이하다:동:2
  +화풍:명:1
  +화풍:명:4
  +화학:명:94
  +화학과:명:1
  +화학솜:명:2
  +화학식:명:1
  +화학업계:명:4
  +화학자:명:2
  +화학적:관:7
  +화학적:명:2
  +화학조미료:명:52
  +화합:명:25
  +화합물:명:6
  +화합시키다:동:2
  +화합하다:동:8
  +화해:명:27
  +화해:명:7
  +화해롭다:형:2
  +화해시키다:동:4
  +화해하다:동:13
  +화형:명:2
  +화형당하다:동:2
  +화환:명:9
  +화훼:명:3
  +확:부:46
  +확고부동하다:형:4
  +확고하다:형:44
  +확고해지다:동:2
  +확고히:부:5
  +확답:명:3
  +확대:명:131
  +확대:명:4
  +확대되다:동:4
  +확대되다:동:80
  +확대시키다:동:15
  +확대안:명:1
  +확대일로:명:1
  +확대하다:동:3
  +확대하다:동:96
  +확률:명:16
  +확률적:명:1
  +확립:명:38
  +확립기:명:1
  +확립되다:동:18
  +확립되어지다:동:1
  +확립시키다:동:2
  +확립하다:동:34
  +확보:명:68
  +확보되다:동:23
  +확보하다:동:127
  +확산:명:47
  +확산되다:동:55
  +확산성:명:1
  +확산시키다:동:9
  +확산적:명:1
  +확산하다:동:3
  +확성:명:1
  +확성기:명:3
  +확신:명:31
  +확신감:명:1
  +확신범:명:2
  +확신하다:동:34
  +확실:명:3
  +확실성:명:9
  +확실시되다:동:3
  +확실하다:형:147
  +확실해지다:동:6
  +확실히:부:90
  +확약:명:1
  +확약하다:동:1
  +확언하다:동:3
  +확연하다:형:6
  +확연히:부:10
  +확인:명:76
  +확인되다:동:67
  +확인되어지다:동:1
  +확인받다:동:3
  +확인서:명:2
  +확인시키다:동:14
  +확인제:명:1
  +확인하다:동:249
  +확장:명:52
  +확장되다:동:19
  +확장명:명:3
  +확장법:명:1
  +확장성:명:4
  +확장시키다:동:6
  +확장하다:동:23
  +확정:명:53
  +확정되다:동:39
  +확정설:명:1
  +확정시키다:동:1
  +확정안:명:1
  +확정적:명:1
  +확정하다:동:38
  +확증:명:4
  +확증하다:동:3
  +확충:명:38
  +확충비:명:1
  +확충안:명:1
  +확충하다:동:10
  +환각:명:16
  +환각성:명:2
  +환각적:관:1
  +환각제:명:1
  +환갑:명:24
  +환갑날:명:1
  +환갑일:명:1
  +환갑잔치:명:1
  +환경:명:683
  +환경관:명:1
  +환경권:명:2
  +환경비:명:2
  +환경성:명:1
  +환경오염:명:68
  +환경적:관:8
  +환경적:명:6
  +환경조건:명:1
  +환골탈태:명:1
  +환관:명:1
  +환국:명:3
  +환기:명:1
  +환기:명:7
  +환기시키다:동:7
  +환기통:명:4
  +환기하다:동:2
  +환난:명:1
  +환난상휼:명:1
  +환담:명:1
  +환대:명:2
  +환대하다:동:2
  +환등기:명:1
  +환락:명:1
  +환로:명:1
  +환매:명:3
  +환매하다:동:2
  +환멸:명:4
  +환멸감:명:1
  +환멸스러워하다:동:1
  +환부:명:7
  +환산:명:1
  +환산되다:동:1
  +환산하다:동:7
  +환상:명:58
  +환상적:관:4
  +환상적:명:19
  +환상주의:명:1
  +환생:명:2
  +환생하다:동:6
  +환성:명:1
  +환성:명:5
  +환속:명:1
  +환송:명:4
  +환송심:명:1
  +환송하다:동:3
  +환수되다:동:1
  +환수받다:동:1
  +환수하다:동:2
  +환승역:명:2
  +환시:명:2
  +환심:명:3
  +환영:명:20
  +환영:명:3
  +환영받다:동:2
  +환영식:명:1
  +환영식장:명:1
  +환영하다:동:26
  +환영회:명:6
  +환원:명:6
  +환원되다:동:11
  +환원론:명:3
  +환원론자:명:1
  +환원론적:관:1
  +환원론적:명:1
  +환원성:명:1
  +환원시키다:동:7
  +환원주의:명:2
  +환원하다:동:6
  +환유법:명:1
  +환율:명:33
  +환율제:명:14
  +환자:명:319
  +환자병:명:4
  +환자복:명:2
  +환자촌:명:1
  +환장:명:5
  +환장시키다:동:1
  +환장하다:동:7
  +환쟁이:명:2
  +환전:명:9
  +환전하다:동:2
  +환절기:명:8
  +환차익:명:1
  +환청:명:6
  +환하다:형:61
  +환해지다:동:10
  +환형:명:1
  +환호:명:7
  +환호되다:동:1
  +환호성:명:7
  +환호하다:동:15
  +환희:명:13
  +환희하다:동:1
  +환히:부:10
  +활:명:7
  +활개:명:6
  +활공비:명:1
  +활공하다:동:1
  +활기:명:33
  +활기차다:형:15
  +활달하다:형:13
  +활동:명:622
  +활동가:명:9
  +활동감:명:1
  +활동량:명:1
  +활동력:명:2
  +활동비:명:3
  +활동상:명:6
  +활동성:명:4
  +활동장:명:1
  +활동적:명:8
  +활동하다:동:82
  +활등:명:1
  +활량나물:명:1
  +활력:명:20
  +활력소:명:5
  +활력적:명:1
  +활로:명:8
  +활발:명:9
  +활발하다:형:94
  +활발하여지다:동:1
  +활발해지다:동:30
  +활발히:부:32
  +활보하다:동:3
  +활성:명:3
  +활성시키다:동:1
  +활성탄:명:1
  +활성화:명:31
  +활성화되다:동:6
  +활성화시키다:동:11
  +활성화하다:동:10
  +활시위:명:6
  +활쏘기:명:4
  +활약:명:27
  +활약상:명:2
  +활약하다:동:31
  +활연히:부:1
  +활엽:명:5
  +활엽수:명:10
  +활엽수림:명:3
  +활옷:명:1
  +활용:명:50
  +활용기:명:3
  +활용도:명:1
  +활용되다:동:23
  +활용적:관:1
  +활용하다:동:129
  +활인:명:1
  +활인심방:명:2
  +활자:명:25
  +활자화되다:동:4
  +활주로:명:17
  +활주하다:동:1
  +활짝:부:45
  +활짝활짝:부:1
  +활판:명:1
  +활화산:명:1
  +활활:부:11
  +활활거리다:동:1
  +활황:명:6
  +홧김:명:1
  +황:명:3
  +황:명:5
  +황갈색:명:17
  +황공하다:형:2
  +황공해하다:동:1
  +황구:명:1
  +황국:명:1
  +황군:명:1
  +황궁:명:1
  +황금:명:1
  +황금:명:15
  +황금기:명:5
  +황금물결:명:4
  +황금빛:명:7
  +황금새:명:3
  +황금색:명:4
  +황금시대:명:4
  +황급하다:형:6
  +황급히:부:21
  +황기:명:2
  +황달:명:4
  +황당무계하다:형:2
  +황당하다:형:27
  +황량하다:형:23
  +황련:명:2
  +황록색:명:1
  +황마:명:1
  +황막하다:형:1
  +황망하다:형:2
  +황망히:부:1
  +황매화:명:1
  +황무지:명:14
  +황백색:명:1
  +황불:명:1
  +황사:명:1
  +황산암:명:1
  +황산화물:명:1
  +황새:명:1
  +황색:명:28
  +황색경보:명:1
  +황색대:명:1
  +황설탕:명:2
  +황성:명:2
  +황소:명:14
  +황소개구리:명:19
  +황소자리:명:1
  +황소좌:명:1
  +황송하다:형:4
  +황실:명:1
  +황아장수:명:1
  +황야:명:10
  +황열:명:1
  +황우:명:1
  +황저:명:1
  +황제:명:32
  +황천:명:9
  +황천길:명:1
  +황태자:명:3
  +황토:명:2
  +황토:명:6
  +황폐:명:2
  +황폐되다:동:1
  +황폐성:명:1
  +황폐하다:동:7
  +황폐해지다:동:7
  +황폐화:명:2
  +황폐화되다:동:1
  +황폐화시키다:동:1
  +황폐화하다:동:1
  +황혼:명:4
  +황혼기:명:1
  +황홀경:명:5
  +황홀하다:형:21
  +황홀해하다:동:1
  +황화:명:1
  +황화론:명:1
  +황황히:부:1
  +황후:명:1
  +홰:명:2
  +홰나무:명:1
  +홱:부:16
  +횃불:명:12
  +회:명:1
  +회:명:14
  +회:명:2
  +회:명:2
  +회:의:283
  +회갈색:명:7
  +회갑:명:7
  +회갑연회장:명:1
  +회개하다:동:3
  +회견:명:78
  +회견문:명:2
  +회견장:명:1
  +회계:명:21
  +회계사:명:3
  +회계학과:명:1
  +회고:명:1
  +회고담:명:2
  +회고록:명:4
  +회고하다:동:9
  +회관:명:39
  +회교:명:6
  +회교도:명:2
  +회구성:명:1
  +회군:명:1
  +회귀:명:7
  +회귀점:명:2
  +회귀처:명:1
  +회귀하다:동:6
  +회기:명:5
  +회나무:명:4
  +회담:명:212
  +회담장:명:2
  +회담하다:동:2
  +회동:명:18
  +회동하다:동:1
  +회랑:명:8
  +회로:명:29
  +회룡:명:3
  +회룡고조:명:1
  +회말:의:1
  +회백색:명:9
  +회벽:명:1
  +회보:명:4
  +회복:명:108
  +회복되다:동:30
  +회복세:명:7
  +회복시키다:동:14
  +회복식:명:1
  +회복제:명:1
  +회복하다:동:69
  +회부:명:1
  +회부되다:동:5
  +회부시키다:동:2
  +회부하다:동:7
  +회분:명:1
  +회비:명:9
  +회사:명:504
  +회사명:명:1
  +회사원:명:14
  +회사채:명:7
  +회상:명:11
  +회상록:명:2
  +회상시:명:1
  +회상하다:동:16
  +회색:명:50
  +회색분자:명:1
  +회색빛:명:11
  +회색적:명:1
  +회생:명:1
  +회생되다:동:1
  +회생시키다:동:3
  +회선:명:17
  +회수:명:12
  +회수금:명:1
  +회수되다:동:1
  +회수율:명:1
  +회수하다:동:13
  +회식:명:9
  +회식자:명:2
  +회식하다:동:1
  +회신:명:3
  +회신하다:동:2
  +회심:명:5
  +회심하다:동:1
  +회양목:명:5
  +회억:명:1
  +회오:명:2
  +회오리:명:6
  +회오리바람:명:3
  +회오리치다:동:2
  +회원:명:131
  +회원국:명:14
  +회원권:명:8
  +회원사:명:3
  +회원전:명:2
  +회원제:명:2
  +회유:명:5
  +회유되다:동:1
  +회유하다:동:1
  +회유하다:동:3
  +회의:명:35
  +회의:명:397
  +회의감:명:4
  +회의록:명:5
  +회의소:명:3
  +회의실:명:13
  +회의장:명:4
  +회의적:관:1
  +회의적:명:9
  +회의주의:명:1
  +회의주의자:명:2
  +회의체:명:11
  +회의하다:동:1
  +회의하다:동:8
  +회잎나무:명:2
  +회자되다:동:5
  +회자하다:동:1
  +회장:명:1
  +회장:명:3
  +회장:명:352
  +회장단:명:9
  +회장선:명:2
  +회장실:명:4
  +회장직:명:4
  +회전:명:29
  +회전:의:11
  +회전수:명:5
  +회전시키다:동:4
  +회전식:명:1
  +회전율:명:3
  +회전의:명:1
  +회전의자:명:2
  +회전자:명:2
  +회전축:명:2
  +회전하다:동:18
  +회진:명:5
  +회초:의:1
  +회초리:명:8
  +회춘:명:1
  +회충:명:1
  +회칠:명:1
  +회칼:명:1
  +회통:명:7
  +회통시키다:동:2
  +회통적:명:1
  +회통하다:동:2
  +회포:명:9
  +회피:명:1
  +회피하다:동:19
  +회한:명:13
  +회합:명:4
  +회혼례:명:2
  +회화:명:14
  +회화:명:32
  +회화과:명:1
  +회화관:명:1
  +회화론:명:1
  +회화사:명:1
  +회화적:관:3
  +회화적:명:2
  +회화전:명:1
  +회흑갈색:명:1
  +획:명:11
  +획:부:2
  +획기적:관:6
  +획기적:명:28
  +획득:명:19
  +획득하다:동:43
  +획연히:부:1
  +획일:명:3
  +획일성:명:2
  +획일적:명:13
  +획일주의:명:4
  +획일화:명:1
  +획일화되다:동:3
  +획정:명:1
  +획책하다:동:3
  +횟감:명:1
  +횟수:명:25
  +횟집:명:5
  +횡:명:1
  +횡격막:명:2
  +횡궁:명:1
  +횡단:명:3
  +횡단기:명:1
  +횡단보도:명:19
  +횡단하다:동:4
  +횡대:명:2
  +횡령:명:7
  +횡령하다:동:1
  +횡선:명:1
  +횡설수설:명:13
  +횡설수설대다:동:1
  +횡설수설하다:동:1
  +횡압력:명:1
  +횡재:명:1
  +횡적:관:1
  +횡파:명:1
  +횡포:명:23
  +횡행:명:2
  +횡행하다:동:9
  +효:명:7
  +효과:명:377
  +효과음:명:3
  +효과적:관:1
  +효과적:명:134
  +효녀:명:4
  +효능:명:15
  +효도:명:23
  +효도받다:동:1
  +효도하다:동:18
  +효력:명:22
  +효모:명:1
  +효부:명:1
  +효부상:명:1
  +효성:명:7
  +효성스럽다:형:1
  +효성심:명:2
  +효소:명:10
  +효시:명:8
  +효심:명:1
  +효용:명:6
  +효용성:명:4
  +효우:명:1
  +효율:명:21
  +효율성:명:31
  +효율적:관:11
  +효율적:명:51
  +효율화:명:1
  +효율화하다:동:1
  +효익:명:1
  +효자:명:17
  +효자둥이:명:1
  +효자상:명:1
  +효행:명:2
  +효험:명:5
  +후:명:1
  +후:명:1,204
  +후:명:17
  +후:부:5
  +후각:명:6
  +후견인:명:4
  +후계:명:7
  +후계자:명:19
  +후광:명:6
  +후궁:명:1
  +후기:명:3
  +후기:명:86
  +후기대:명:16
  +후기대반:명:5
  +후기용:명:1
  +후기작:명:1
  +후끈:부:5
  +후끈하다:형:3
  +후납:명:1
  +후다닥:부:3
  +후닥닥:부:3
  +후대:명:11
  +후덕하다:형:1
  +후덥다:형:2
  +후덥지근하다:형:1
  +후두:명:2
  +후두부:명:2
  +후두염:명:1
  +후드득:부:7
  +후드득후드득:부:1
  +후들거리다:동:3
  +후들후들:부:5
  +후들후들하다:동:1
  +후딱:부:7
  +후딱후딱:부:2
  +후레버:명:1
  +후레자식:명:1
  +후려갈기다:동:2
  +후려치다:동:15
  +후련하다:형:5
  +후련해지다:동:1
  +후렴:명:1
  +후로쿠마린:명:1
  +후루룩:부:2
  +후루룩거리다:동:1
  +후르르:부:1
  +후리다:동:5
  +후리후리하다:형:2
  +후만증:명:4
  +후문:명:12
  +후문:명:3
  +후미:명:1
  +후미지다:형:11
  +후반:명:124
  +후반기:명:9
  +후반부:명:1
  +후반전:명:3
  +후발:명:6
  +후방:명:6
  +후배:명:85
  +후보:명:183
  +후보생:명:16
  +후보안:명:2
  +후보자:명:40
  +후보지:명:2
  +후불제:명:1
  +후비다:동:23
  +후삼국:명:1
  +후생:명:1
  +후생:명:2
  +후세:명:17
  +후세대:명:2
  +후세인:명:1
  +후속:명:22
  +후손:명:21
  +후송:명:9
  +후송되다:동:4
  +후술:명:1
  +후술하다:동:1
  +후식:명:5
  +후실:명:2
  +후예:명:9
  +후원:명:1
  +후원:명:18
  +후원금:명:13
  +후원되다:동:1
  +후원자:명:4
  +후원하다:동:4
  +후원회:명:10
  +후유:감:2
  +후유증:명:18
  +후의:명:1
  +후일:명:13
  +후일담:명:1
  +후임:명:12
  +후임자:명:5
  +후자:명:50
  +후작:명:1
  +후장:명:6
  +후줄근하다:형:4
  +후줄근해지다:동:1
  +후줄근히:부:1
  +후지다:형:2
  +후지원:명:1
  +후진:명:14
  +후진국:명:13
  +후진성:명:5
  +후진적:명:3
  +후창:명:2
  +후처리:명:1
  +후천:명:35
  +후천되다:동:1
  +후천성:명:6
  +후천적:명:4
  +후추:명:5
  +후출국:명:1
  +후춧가루:명:96
  +후치다:동:1
  +후텁텁하다:형:1
  +후퇴:명:12
  +후퇴시키다:동:2
  +후퇴하다:동:14
  +후편:명:2
  +후프:명:6
  +후하다:형:5
  +후학:명:3
  +후협상:명:1
  +후환:명:1
  +후회:명:22
  +후회되다:동:4
  +후회막급:명:2
  +후회스럽다:형:3
  +후회하다:동:36
  +후후:부:1
  +후후:부:5
  +후희:명:1
  +훅:명:1
  +훅:부:9
  +훈계:명:8
  +훈고학:명:1
  +훈기:명:3
  +훈련:명:163
  +훈련되다:동:10
  +훈련되어지다:동:1
  +훈련받다:동:6
  +훈련법:명:1
  +훈련병:명:2
  +훈련생:명:3
  +훈련소:명:5
  +훈련시키다:동:6
  +훈련장:명:3
  +훈련터:명:1
  +훈련하다:동:4
  +훈령:명:5
  +훈령하다:동:1
  +훈병:명:1
  +훈시:명:2
  +훈육:명:1
  +훈육관:명:1
  +훈장:명:25
  +훈장:명:8
  +훈제:명:5
  +훈증:명:2
  +훈풍:명:1
  +훈화:명:1
  +훈훈하다:형:9
  +훈훈해지다:동:1
  +훌떡:부:2
  +훌라후프:명:4
  +훌렁:부:2
  +훌륭하다:형:231
  +훌륭해지다:동:1
  +훌륭히:부:4
  +훌쩍:부:26
  +훌쩍거리다:동:5
  +훌쩍대다:동:1
  +훌쩍이다:동:5
  +훌쩍훌쩍:부:4
  +훌훌:부:9
  +훑다:동:16
  +훑어보다:동:32
  +훔쳐보다:동:24
  +훔치다:동:22
  +훔치다:동:78
  +훔켜잡다:동:1
  +훗날:명:24
  +훤소:명:1
  +훤칠하다:형:4
  +훤하다:형:6
  +훤히:부:19
  +훨:부:1
  +훨씬:부:340
  +훨훨:부:7
  +훼방:명:3
  +훼방하다:동:1
  +훼상:명:1
  +훼손:명:21
  +훼손당하다:동:1
  +훼손되다:동:9
  +훼손시키다:동:4
  +훼손죄:명:1
  +훼손하다:동:19
  +휑뎅그렁하다:형:2
  +휑하다:형:4
  +휘:부:2
  +휘갈겨지다:동:1
  +휘갈기다:동:1
  +휘감기다:동:4
  +휘감다:동:10
  +휘날리다:동:10
  +휘다:동:18
  +휘다지다:동:1
  +휘달아나다:동:1
  +휘돌다:동:8
  +휘돌리다:동:15
  +휘돌아보다:동:1
  +휘두르다:동:41
  +휘둘러보다:동:5
  +휘둘리다:동:4
  +휘둥그렇다:형:1
  +휘둥그레:부:1
  +휘둥그레지다:동:9
  +휘말다:동:1
  +휘말리다:동:18
  +휘모리:명:1
  +휘몰아치다:동:9
  +휘발유:명:8
  +휘슬:명:2
  +휘어들다:동:1
  +휘어뜨리다:동:1
  +휘어잡다:동:5
  +휘어지다:동:23
  +휘영청:부:1
  +휘장:명:1
  +휘장:명:2
  +휘적거리다:동:1
  +휘적시다:동:1
  +휘적휘적:부:1
  +휘젓다:동:14
  +휘주무르다:동:1
  +휘청:부:1
  +휘청거려지다:동:1
  +휘청거리다:동:8
  +휘청하다:동:1
  +휘청휘청하다:동:2
  +휘파람:명:22
  +휘파람새:명:6
  +휘핑크림:명:7
  +휘하:명:5
  +휘헝해지다:동:1
  +휘호:명:1
  +휘황찬란하다:형:4
  +휘황하다:형:3
  +휘휘:부:1
  +휘휘:부:3
  +휙:부:20
  +휠:명:1
  +휠씬:부:2
  +휠체어:명:11
  +휩싸다:동:4
  +휩싸이다:동:27
  +휩쓸다:동:35
  +휩쓸리다:동:18
  +휫손:명:1
  +휭:부:3
  +휭둥그레하다:형:1
  +휴:감:10
  +휴가:명:85
  +휴가제:명:1
  +휴가철:명:10
  +휴간하다:동:1
  +휴강:명:1
  +휴게소:명:5
  +휴게실:명:8
  +휴경:명:1
  +휴관하다:동:1
  +휴대:명:5
  +휴대용:명:6
  +휴대폰:명:2
  +휴대품:명:13
  +휴대하다:동:3
  +휴머니스트:명:2
  +휴머니즘:명:8
  +휴면:명:2
  +휴면기:명:1
  +휴무:명:3
  +휴무일:명:4
  +휴식:명:63
  +휴식년제:명:1
  +휴식일:명:2
  +휴식처:명:8
  +휴식하다:동:6
  +휴양:명:4
  +휴양객:명:1
  +휴양림:명:1
  +휴양소:명:3
  +휴양원:명:64
  +휴양지:명:7
  +휴양하다:동:1
  +휴업:명:9
  +휴업하다:동:1
  +휴일:명:37
  +휴전:명:27
  +휴전되다:동:2
  +휴전선:명:27
  +휴지:명:29
  +휴지통:명:15
  +휴직:명:1
  +휴진하다:동:1
  +휴학:명:5
  +휴학하다:동:3
  +휴한:명:2
  +휴한법:명:1
  +흉:명:1
  +흉:명:15
  +흉가:명:1
  +흉갓집:명:3
  +흉고:명:2
  +흉괘:명:1
  +흉금:명:1
  +흉기:명:18
  +흉내:명:60
  +흉년:명:10
  +흉대:명:2
  +흉몽:명:3
  +흉물:명:1
  +흉물스럽다:형:1
  +흉변:명:1
  +흉보다:동:4
  +흉부외과:명:2
  +흉상:명:2
  +흉악:명:5
  +흉악범:명:4
  +흉악하다:형:6
  +흉인:명:1
  +흉일:명:1
  +흉작:명:3
  +흉조:명:1
  +흉추:명:4
  +흉측하다:형:6
  +흉터:명:6
  +흉포해지다:동:1
  +흉포화되다:동:1
  +흉하다:형:18
  +흉허물:명:2
  +흉흉하다:형:5
  +흐느끼다:동:17
  +흐느낌:명:4
  +흐느적거리다:동:3
  +흐늘거리다:동:1
  +흐늘어지다:동:1
  +흐드러지다:형:2
  +흐려지다:동:15
  +흐르다:동:445
  +흐름:명:163
  +흐리다:동:25
  +흐리다:형:31
  +흐리멍덩:부:1
  +흐리멍덩하다:형:2
  +흐릿하다:형:6
  +흐물흐물하다:형:1
  +흐뭇:명:1
  +흐뭇이:부:1
  +흐뭇하다:형:27
  +흐뭇해하다:동:7
  +흐지부지:부:4
  +흐지부지되다:동:3
  +흐트러뜨리다:동:3
  +흐트러지다:동:26
  +흐흐:부:11
  +흐흥거리다:동:2
  +흑:명:4
  +흑:부:1
  +흑갈색:명:7
  +흑마술:명:1
  +흑막:명:1
  +흑백:명:38
  +흑번:명:1
  +흑색:명:6
  +흑색선전:명:10
  +흑색선전물:명:2
  +흑선:명:5
  +흑심:명:1
  +흑연:명:3
  +흑염소:명:1
  +흑운모:명:10
  +흑인:명:56
  +흑인성:명:1
  +흑임자:명:1
  +흑임자죽:명:1
  +흑자:명:21
  +흑자국:명:1
  +흑자색:명:1
  +흑자액:명:1
  +흑장미:명:1
  +흑질백장:명:1
  +흑체:명:1
  +흑흑:부:1
  +흔뎅거리다:동:1
  +흔들거리다:동:6
  +흔들기:명:2
  +흔들다:동:187
  +흔들리다:동:91
  +흔들의자:명:3
  +흔들이:명:2
  +흔들흔들:부:1
  +흔들흔들거리다:동:1
  +흔연히:부:1
  +흔적:명:78
  +흔쾌하다:형:2
  +흔쾌히:부:12
  +흔하다:형:137
  +흔해지다:동:2
  +흔히:부:222
  +흘겨보다:동:10
  +흘금:부:1
  +흘금흘금:부:1
  +흘긋:부:8
  +흘긋흘긋:부:1
  +흘기다:동:14
  +흘깃:부:6
  +흘깃흘깃:부:2
  +흘끔거리다:동:1
  +흘끗:부:1
  +흘낏:부:10
  +흘러가다:동:69
  +흘러나오다:동:70
  +흘러내리다:동:41
  +흘러넘치다:동:10
  +흘러들다:동:34
  +흘러오다:동:7
  +흘레:명:1
  +흘려보내다:동:11
  +흘려주다:동:1
  +흘리다:동:177
  +흙:명:132
  +흙강아지:명:1
  +흙구덩이:명:1
  +흙구슬:명:1
  +흙깔이:명:1
  +흙냄새:명:4
  +흙담:명:1
  +흙더미:명:1
  +흙덩이:명:2
  +흙먼지:명:3
  +흙모래:명:2
  +흙바닥:명:1
  +흙발:명:1
  +흙밥:명:1
  +흙벽:명:2
  +흙벽돌:명:1
  +흙벽돌집:명:1
  +흙장난:명:2
  +흙장난하다:동:1
  +흙집:명:1
  +흙탕물:명:14
  +흙투성이:명:6
  +흠:감:5
  +흠:명:24
  +흠:부:2
  +흠결:명:1
  +흠머:감:1
  +흠모:명:3
  +흠모하다:동:5
  +흠벅지다:형:1
  +흠뻑:부:23
  +흠씬:부:4
  +흠앙:명:1
  +흠잡다:동:5
  +흠절:명:2
  +흠지다:동:1
  +흠집:명:12
  +흠칫:부:20
  +흠칫하다:동:3
  +흠칫흠칫:부:1
  +흠흠:감:1
  +흠흠:감:2
  +흡뜨다:동:1
  +흡사:부:17
  +흡사하다:형:18
  +흡수:명:31
  +흡수되다:동:28
  +흡수시키다:동:1
  +흡수하다:동:2
  +흡수하다:동:44
  +흡연:명:12
  +흡연가:명:1
  +흡연실:명:6
  +흡연율:명:2
  +흡음식:명:1
  +흡인:명:9
  +흡인력:명:4
  +흡인성:명:1
  +흡입:명:3
  +흡입력:명:1
  +흡입술:명:2
  +흡입제:명:1
  +흡입하다:동:2
  +흡족하다:형:12
  +흡족해하다:동:3
  +흡혈귀:명:2
  +흥:감:24
  +흥:명:9
  +흥감스럽다:형:1
  +흥거리다:동:1
  +흥건하다:형:3
  +흥건히:부:2
  +흥겨워지다:동:1
  +흥겹다:형:18
  +흥국:명:1
  +흥뚱항뚱:부:1
  +흥망:명:2
  +흥망성쇠:명:4
  +흥미:명:69
  +흥미롭다:형:32
  +흥미진진:명:1
  +흥미진진하다:형:6
  +흥밋거리:명:1
  +흥분:명:34
  +흥분되다:동:5
  +흥분시키다:동:2
  +흥분하다:동:34
  +흥불:명:1
  +흥신업:명:1
  +흥얼거리다:동:8
  +흥얼대다:동:1
  +흥얼흥얼:부:2
  +흥정:명:9
  +흥정하다:동:4
  +흥청:명:1
  +흥청거리다:동:1
  +흥청대다:동:2
  +흥청망청:부:2
  +흥청흥청:부:1
  +흥취:명:2
  +흥하다:동:2
  +흥해지다:동:1
  +흥행:명:13
  +흥행사:명:1
  +흥행성:명:1
  +흥행작:명:1
  +흥흥:부:4
  +흩날리다:동:6
  +흩다:동:2
  +흩뜨리다:동:7
  +흩뿌리다:동:3
  +흩어지다:동:90
  +흩트리다:동:1
  +희곡:명:89
  +희곡계:명:3
  +희곡론:명:1
  +희곡사:명:2
  +희구하다:동:1
  +희귀:명:10
  +희귀목:명:1
  +희귀조:명:1
  +희귀종:명:1
  +희귀하다:형:9
  +희극:명:10
  +희극성:명:1
  +희극스럽다:형:1
  +희극적:관:6
  +희극적:명:8
  +희끄무레하다:형:5
  +희끗하다:동:1
  +희끗하다:형:1
  +희끗희끗:부:6
  +희끗희끗하다:형:9
  +희다:형:168
  +희대:명:2
  +희디희다:형:2
  +희떱다:형:1
  +희락:명:1
  +희로애락:명:10
  +희롱:명:3
  +희롱하다:동:2
  +희망:명:150
  +희망봉:명:1
  +희망자:명:4
  +희망적:관:1
  +희망적:명:6
  +희망차다:형:6
  +희망하다:동:15
  +희멀쑥하다:형:1
  +희미하다:형:43
  +희미해지다:동:4
  +희박:명:1
  +희박하다:형:5
  +희박해지다:동:3
  +희번덕이다:동:1
  +희부옇다:형:1
  +희비:명:2
  +희비극:명:2
  +희비극적:관:2
  +희비극적:명:1
  +희뿌옇다:형:1
  +희뿌윰하다:형:1
  +희사하다:동:1
  +희색:명:2
  +희생:명:38
  +희생당하다:동:4
  +희생되다:동:8
  +희생물:명:5
  +희생시키다:동:12
  +희생심:명:1
  +희생양:명:1
  +희생자:명:18
  +희생적:명:2
  +희생정신:명:1
  +희생하다:동:30
  +희석되다:동:1
  +희석시키다:동:7
  +희소하다:형:1
  +희수:명:1
  +희열:명:13
  +희열감:명:1
  +희원:명:1
  +희푸르다:형:1
  +희한하다:형:19
  +희화:명:1
  +희화적:명:2
  +희화화시키다:동:1
  +희화화하다:동:1
  +희희낙락거리다:동:1
  +희희낙락하다:동:1
  +희희덕거리다:동:1
  +희희덕대다:동:1
  +흰넓적다리붉은쥐:명:1
  +흰눈썹황금새:명:3
  +흰둥이:명:2
  +흰떡:명:1
  +흰머리:명:2
  +흰모싯대:명:2
  +흰무리:명:2
  +흰밥:명:1
  +흰배멧새:명:2
  +흰배윗수염박쥐:명:1
  +흰배지빠귀:명:1
  +흰불나방:명:1
  +흰빛:명:4
  +흰뺨검둥오리:명:1
  +흰색:명:110
  +흰소리:명:2
  +흰쌀:명:2
  +흰옷:명:10
  +흰자:명:4
  +흰자위:명:5
  +흰죽:명:2
  +흰줄무늬비비추:명:1
  +흰쥐:명:5
  +흰풀:명:1
  +히:부:2
  +히다:동:14
  +히든:명:3
  +히든카드:명:3
  +히들거리다:동:1
  +히뜩:부:1
  +히로뽕:명:3
  +히로인:명:1
  +히말라야삼나무:명:1
  +히스테리:명:8
  +히스테리기:명:1
  +히스테리컬하다:형:2
  +히죽:부:7
  +히죽대다:동:1
  +히죽이:부:1
  +히죽히죽:부:1
  +히터:명:1
  +히터:명:1
  +히트:명:14
  +히트곡:명:6
  +히트시키다:동:2
  +히트작:명:1
  +히피:명:1
  +히히:부:8
  +힉꾹:감:2
  +힉끅:감:1
  +힌트:명:4
  +힐:명:1
  +힐긋:부:1
  +힐끔:부:2
  +힐끔거리다:동:2
  +힐끔대다:동:1
  +힐끔힐끔:부:4
  +힐끗:부:17
  +힐끗거리다:동:1
  +힐난:명:1
  +힐난하다:동:3
  +힘:명:866
  +힘겨루기:명:2
  +힘겹다:형:34
  +힘껏:부:27
  +힘내다:동:1
  +힘들다:형:424
  +힘들어지다:동:8
  +힘들어하다:동:15
  +힘들이다:동:11
  +힘세다:형:7
  +힘쓰다:동:62
  +힘없다:형:10
  +힘없이:부:18
  +힘입다:동:46
  +힘자랑:명:1
  +힘점:명:1
  +힘주다:동:12
  +힘줄:명:4
  +힘차다:형:52
  +힝타기:명:1
  
  
  


wkpark      2008/05/06 16:06:54

  Modified:    plugin   filter.php
  Log:
  minor fix
  
  Revision  Changes    Path
  1.3       +4 -3      moniwiki/plugin/filter.php
  
  Index: filter.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/filter.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- filter.php	5 May 2008 15:55:43 -0000	1.2
  +++ filter.php	6 May 2008 07:06:54 -0000	1.3
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Test]]
   //
  -// $Id: filter.php,v 1.2 2008/05/05 15:55:43 wkpark Exp $
  +// $Id: filter.php,v 1.3 2008/05/06 07:06:54 wkpark Exp $
   
   function macro_Filter($formatter,$value) {
       return "HelloWorld !\n";
  @@ -20,6 +20,8 @@
       $filters=preg_split("/(\||,)/",$options['filter']);
       if ($options['raw']) 
           $formatter->send_header('Content-Type: text/plain');
  +    else
  +        $formatter->send_header('',$options);
       foreach ($filters as $ft)
           $body=$formatter->filter_repl(trim($ft),$body,$options);
   
  @@ -27,7 +29,6 @@
           print $body;
           return;
       }
  -    $formatter->send_header('',$options);
       $formatter->send_title('','',$options);
       
       print '<pre>'.$body.'</pre>';
  @@ -35,5 +36,5 @@
       return;
   }
   
  -// vim:et:sts=4:
  +// vim:et:sts=4:sw=4:
   ?>
  
  
  


wkpark      2008/05/06 16:07:30

  Modified:    plugin/processor vim.php
  Log:
  minor fix
  
  Revision  Changes    Path
  1.40      +2 -2      moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.39
  retrieving revision 1.40
  diff -u -r1.39 -r1.40
  --- vim.php	1 May 2008 10:26:51 -0000	1.39
  +++ vim.php	6 May 2008 07:07:30 -0000	1.40
  @@ -10,7 +10,7 @@
   // Win32 note:
   //  add $path="/bin;/Program Files/Vim/VimXX"; in the config.php
   //
  -// $Id: vim.php,v 1.39 2008/05/01 10:26:51 wkpark Exp $
  +// $Id: vim.php,v 1.40 2008/05/06 07:07:30 wkpark Exp $
   
   function processor_vim($formatter,$value,$options) {
     global $DBInfo;
  @@ -42,7 +42,7 @@
     if ($DBInfo->vim_options)
       $option.=$DBInfo->vim_options.' ';
   
  -  $uniq=md5($option.$type.$src);
  +  $uniq=md5($option.$extra.$type.$src);
   
     if ($DBInfo->cache_public_dir) {
       $fc=new Cache_text('vim',2,'html',$DBInfo->cache_public_dir);
  
  
  


wkpark      2008/05/06 16:47:32

  Modified:    plugin   UploadFile.php
  Log:
  fixed last changes
  
  Revision  Changes    Path
  1.40      +26 -28    moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.39
  retrieving revision 1.40
  diff -u -r1.39 -r1.40
  --- UploadFile.php	1 May 2008 12:54:30 -0000	1.39
  +++ UploadFile.php	6 May 2008 07:47:31 -0000	1.40
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.39 2008/05/01 12:54:30 wkpark Exp $
  +// $Id: UploadFile.php,v 1.40 2008/05/06 07:47:31 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -108,11 +108,13 @@
     else
       $pds_exts="png|jpg|jpeg|gif|mp3|zip|tgz|gz|txt|css|exe|pdf|hwp";
   
  +  $allowed=0;
     if (isset($DBInfo->upload_masters) and in_array($options['id'],$DBInfo->upload_masters)) {
       // XXX WARN!!
       $pds_exts='.*';
  +    $allowed=1;
     }
  -  $safe_types=array('text','media','image','audio');
  +  $safe_types=array('text'=>'','media'=>'','image'=>'','audio'=>'','application'=>'bin');
   
     for ($j=0;$j<$count;$j++) {
   
  @@ -120,40 +122,36 @@
     $upfilename=str_replace(" ","_",$files['upfile']['name'][$j]);
     $upfilename=str_replace(":","_",$upfilename);
   
  -  preg_match("/^(.*)\.([a-z0-9]{1,4})$/i",$upfilename,$fname);
  +  preg_match("/^(.*)\.?([a-z0-9]{1,5})?$/i",$upfilename,$fname);
   
     if (!$upfilename) continue;
     else if ($upfilename) $uploaded++;
   
     $no_ext=0;
  -  $type='';
  -  if (!$fname) {
  -    $no_ext=1;
  -    $fname[1]=$upfilename;
  -    $fname[2]='';
  -  }
  -  // XXX
  -  if ($DBInfo->use_filetype) $type=$files['upfile']['type'][$j] ? $files['upfile']['type'][$j]:'text/plain';
  -  else {
  -    $fname[2]=$fname[2] ? $fname[2]:'txt';
  -    $no_ext=0;
  -  }
  +  if (!$fname[2]) $no_ext=1;
   
  -  $allowed=0;
  -  if ($DBInfo->use_filetype and !empty($type)) {
  -    list($mtype,$xtype)=explode('/',$type);
  -    if (!empty($mtype) and in_array($mtype,$safe_types)) {
  -      $allowed=1;
  -    } else if ($no_ext) {
  -      $msg.=sprintf(_("The %s type of %s is not allowed to upload"),$type,$upfilename)."<br/>\n";
  -      continue;
  +  if (!$allowed) {
  +    if ($DBInfo->use_filetype) {
  +      $type='';
  +      $type=$files['upfile']['type'][$j] ? $files['upfile']['type'][$j]:'text/plain';
  +      list($mtype,$xtype)=explode('/',$type);
  +
  +      if (!empty($mtype) and array_key_exists($mtype,$safe_types)) {
  +        $allowed=1;
  +        $fname[2]= $fname[2] ? $fname[2]:$safe_types[$mtype];
  +      } else if ($no_ext) {
  +        $msg.=sprintf(_("The %s type of %s is not allowed to upload"),$type,$upfilename)."<br/>\n";
  +        continue;
  +      }
  +    } else {
  +      $fname[2]=$fname[2] ? $fname[2]:'txt';
  +      $no_ext=0;
       }
     }
   
  -  if ($allowed) {
  -    array_shift($fname);
  -    $upfilename=implode('.',$fname);
  -  } else {
  +  $upfilename=implode('.',array($fname[1],$fname[2]));
  +
  +  if (!$allowed) {
       if (!$no_ext and !preg_match("/(".$pds_exts.")$/i",$fname[2])) {
         if ($DBInfo->use_filetype and !empty($type))
           $msg.=sprintf(_("The %s type of %s is not allowed to upload"),$type,$upfilename)."<br/>\n";
  @@ -190,7 +188,7 @@
       $temp=explode("/",_stripslashes($options['rename'][$j]));
       $upfilename= $temp[count($temp)-1];
   
  -    preg_match("/^(.*)\.([a-z0-9]{1,4})$/i",$upfilename,$tname);
  +    preg_match("/^(.*)\.?([a-z0-9]{1,5})?$/i",$upfilename,$tname);
       $exts=explode('.',$tname[1]);
       $ok=0;
       for ($i=sizeof($exts);$i>0;$i--) {
  
  
  


wkpark      2008/05/06 18:28:50

  Modified:    plugin   Keywords.php
  Log:
  fixed array_merge() related bug.
  
  Revision  Changes    Path
  1.27      +24 -7     moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- Keywords.php	15 Apr 2008 09:43:14 -0000	1.26
  +++ Keywords.php	6 May 2008 09:28:50 -0000	1.27
  @@ -1,9 +1,19 @@
   <?php
  -// Copyright 2005-2006 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2005-2008 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a 'Keywords' plugin for the MoniWiki
   //
  -// $Id: Keywords.php,v 1.26 2008/04/15 09:43:14 wkpark Exp $
  +// Author: Won-Kyu Park <wkpark@kldp.org>
  +// Date: 2005-08-17
  +// Name: a Keywords Plugin
  +// Description: a Keywords plugin to generate keywords of a page
  +// URL: MoniWiki:KeywordsPlugin
  +// Version: $Revision: 1.27 $
  +// License: GPL
  +//
  +// Usage: [[Keywords(options)]]
  +//
  +// $Id: Keywords.php,v 1.27 2008/05/06 09:28:50 wkpark Exp $
   
   define(LOCAL_KEYWORDS,'LocalKeywords');
   
  @@ -174,6 +184,7 @@
   
       $lang=$formatter->pi['#language'] ? $formatter->pi['#language']:
           $DBInfo->default_language;
  +
       if ($lang and in_array($lang,$supported_lang)) {
           $common_word_page=LOCAL_KEYWORDS.'/CommonWords'.ucfirst($lang);
           if ($DBInfo->hasPage($common_word_page)) {
  @@ -182,7 +193,7 @@
               $lines=array_merge($lines,$lines0);
               foreach ($lines as $line) {
                   if ($line[0]=='#') continue;
  -                $common.=$line."\n";
  +                $common.="\n".$line;
               }
               $common=rtrim($common);
           }
  @@ -224,7 +235,7 @@
       if ($bigwords) {
           // 
           $bigwords=array_filter($bigwords,create_function('$a','return ($a != 1);'));
  -        $words=array_merge($words,$bigwords);
  +        foreach ($bigwords as $k=>$v) $words["$k"] = $v;
       }
   
       arsort($words);
  @@ -239,7 +250,8 @@
           }
       }
   
  -    if ($nwords) $words=array_merge($words,$nwords);
  +    if ($nwords)
  +        foreach ($nwords as $k=>$v) $words[$k]=$v;
       $use_sty=1;
   
       endif;
  @@ -247,7 +259,12 @@
   
       if ($limit and ($sz=sizeof($words))>$limit) {
           arsort($words);
  -        $words=array_slice($words,0,$limit);
  +        $mywords=array_keys($words);
  +        $mywords=array_slice($mywords,0,$limit);
  +
  +        $nwords=array();
  +        foreach ($mywords as $k) $nwords[$k]=$words[$k];
  +        $words=&$nwords;
       }
       // make criteria list
   
  @@ -614,5 +631,5 @@
       //$args['editable']=1;
       $formatter->send_footer($args,$options);
   }
  -// vim:et:sts=4:st=4
  +// vim:et:sts=4:sw=4:
   ?>
  
  
  


wkpark      2008/05/07 00:56:26

  Modified:    data/dict word.txt.utf-8
  Log:
  fixed pv, pa, pad
  
  Revision  Changes    Path
  1.3       +13800 -13800moniwiki/data/dict/word.txt.utf-8
  
  Index: word.txt.utf-8
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/data/dict/word.txt.utf-8,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- word.txt.utf-8	5 May 2008 16:02:27 -0000	1.2
  +++ word.txt.utf-8	6 May 2008 15:56:24 -0000	1.3
  @@ -9,8 +9,8 @@
   가:명:13
   가가:명:3
   가가대소:명:2
  -가가대소하다:동:1
  -가가소소하다:형:1
  +가가대소하:동:1
  +가가소소하:형:1
   가가호호:부:2
   가감:명:4
   가객:명:1
  @@ -22,8 +22,8 @@
   가게:명:192
   가겟방:명:6
   가격:명:250
  -가격하다:동:3
  -가결하다:동:2
  +가격하:동:3
  +가결하:동:2
   가계:명:15
   가계:명:9
   가계부:명:2
  @@ -36,15 +36,15 @@
   가공:명:2
   가공:명:31
   가공과:명:1
  -가공되다:동:3
  +가공되:동:3
   가공법:명:1
   가공성:명:1
   가공업:명:4
   가공인물:명:1
   가공적:명:1
   가공품:명:1
  -가공하다:동:12
  -가공하다:형:10
  +가공하:동:12
  +가공하:형:10
   가공학과:명:1
   가공형적:관:2
   가관:명:10
  @@ -56,86 +56,86 @@
   가구업체:명:1
   가극:명:2
   가근방:명:1
  -가급받다:동:1
  +가급받:동:1
   가급적:명:4
   가급적:부:21
   가까스로:부:40
  -가까워지다:동:37
  +가까워지:동:37
   가까이:명:56
   가까이:부:133
  -가까이하다:동:8
  -가깝다:형:336
  -가꾸다:동:128
  -가꾸어지다:동:1
  -가꿔지다:동:1
  +가까이하:동:8
  +가깝:형:336
  +가꾸:동:128
  +가꾸어지:동:1
  +가꿔지:동:1
   가끔:부:260
   가끔가다:부:4
   가나다라:명:1
   가난:명:36
   가난뱅이:명:4
  -가난하다:형:131
  -가난해지다:동:2
  +가난하:형:131
  +가난해지:동:2
   가내:명:13
   가내적:관:2
   가내적:명:1
  -가냘프다:형:12
  -가녀리다:형:6
  -가누다:동:8
  -가느다랗다:형:14
  -가느다래지다:동:1
  +가냘프:형:12
  +가녀리:형:6
  +가누:동:8
  +가느다랗:형:14
  +가느다래지:동:1
   가는귀:명:1
  -가는귀먹다:동:5
  +가는귀먹:동:5
   가는쑥부쟁이:명:2
  -가늘다:형:76
  -가늘어지다:동:1
  +가늘:형:76
  +가늘어지:동:1
   가늠:명:1
  -가늠되다:동:3
  +가늠되:동:3
   가늠자:명:2
  -가늠하다:동:25
  +가늠하:동:25
   가능:명:24
   가능성:명:428
   가능액:명:1
  -가능하다:형:417
  -가능해지다:동:29
  -가다:동:4,670
  -가다:보:1,191
  +가능하:형:417
  +가능해지:동:29
  +가:동:4670
  +가다:보:1191
   가다:부:1
   가다가:부:1
  -가다듬다:동:18
  -가다듬어지다:동:3
  +가다듬:동:18
  +가다듬어지:동:3
   가닥:명:38
   가닥가닥:부:1
   가담:명:3
   가담자:명:2
  -가담하다:동:13
  -가당하다:형:3
  -가닿다:동:2
  +가담하:동:13
  +가당하:형:3
  +가닿:동:2
   가도:명:5
   가독성:명:3
   가동:명:13
   가동:명:2
  -가동되다:동:10
  +가동되:동:10
   가동률:명:6
   가동비:명:2
   가동성:명:2
  -가동시키다:동:2
  -가동하다:동:12
  +가동시키:동:2
  +가동하:동:12
   가두:명:5
  -가두다:동:38
  +가두:동:38
   가두리:명:2
  -가두어지다:동:1
  +가두어지:동:1
   가드락:명:1
   가드레일:명:2
   가득:부:192
   가득가득:부:2
  -가득하다:형:56
  +가득하:형:56
   가득히:부:20
  -가든그리다:동:1
  +가든그리:동:1
   가디간:명:2
   가뜩이나:부:24
   가라사대:동:2
  -가라앉다:동:64
  -가라앉히다:동:18
  +가라앉:동:64
  +가라앉히:동:18
   가라오케:명:3
   가락:명:2
   가락:명:5
  @@ -148,54 +148,54 @@
   가래떡:명:2
   가래침:명:6
   가량:명:2
  -가려내다:동:22
  +가려내:동:22
   가려움증:명:3
  -가려지다:동:28
  -가련하다:형:5
  +가려지:동:28
  +가련하:형:5
   가렴주구:명:2
  -가렵다:형:13
  +가렵:형:13
   가령:부:112
   가례:명:2
   가로:명:17
   가로:명:9
  -가로거치다:동:1
  +가로거치:동:1
   가로계:명:3
  -가로놓이다:동:3
  -가로눕다:동:3
  +가로놓이:동:3
  +가로눕:동:3
   가로대:명:1
   가로등:명:34
   가로띠:명:1
   가로림만:명:1
  -가로막다:동:41
  -가로막히다:동:2
  +가로막:동:41
  +가로막히:동:2
   가로망:명:1
  -가로맡다:동:1
  +가로맡:동:1
   가로무늬:명:3
  -가로보이다:동:1
  +가로보이:동:1
   가로세로:명:2
   가로수:명:19
  -가로젓다:동:15
  +가로젓:동:15
   가로줄:명:1
  -가로지르다:동:29
  -가로채다:동:15
  +가로지르:동:29
  +가로채:동:15
   가루:명:75
  -가르다:동:46
  -가르랑거리다:동:1
  -가르쳐지다:동:1
  -가르치다:동:313
  +가르:동:46
  +가르랑거리:동:1
  +가르쳐지:동:1
  +가르치:동:313
   가르침:명:72
   가름:명:2
   가름대:명:1
  -가름하다:동:10
  +가름하:동:10
   가리나무:명:1
  -가리다:동:20
  -가리다:동:71
  -가리다:동:93
  +가리:동:20
  +가리:동:71
  +가리:동:93
   가리비:명:3
  -가리어지다:동:1
  -가리우다:동:3
  -가리키다:동:1
  -가리키다:동:167
  +가리어지:동:1
  +가리우:동:3
  +가리키:동:1
  +가리키:동:167
   가마:명:10
   가마:명:2
   가마:명:3
  @@ -210,8 +210,8 @@
   가만:감:5
   가만:부:15
   가만가만:부:1
  -가만두다:동:2
  -가만있다:동:23
  +가만두:동:2
  +가만있:동:23
   가만히:부:132
   가망:명:9
   가매장:명:1
  @@ -225,37 +225,37 @@
   가명제:명:2
   가무:명:6
   가무단:명:1
  -가무잡잡하다:형:8
  -가무하다:동:1
  +가무잡잡하:형:8
  +가무하:동:1
   가문:명:27
   가물:명:1
   가물가물:부:5
  -가물가물하다:동:1
  -가물거리다:동:4
  -가물다:동:5
  +가물가물하:동:1
  +가물거리:동:4
  +가물:동:5
   가물치:명:6
   가뭄:명:39
  -가뭇가뭇하다:형:1
  -가뭇없다:형:1
  +가뭇가뭇하:형:1
  +가뭇없:형:1
   가뭇없이:부:1
   가미:명:1
  -가미되다:동:7
  -가미하다:동:7
  +가미되:동:7
  +가미하:동:7
   가반:명:1
   가발:명:14
   가방:명:1
   가방:명:149
   가벌성:명:1
  -가벼워지다:동:12
  +가벼워지:동:12
   가벼이:부:3
   가변선:명:3
   가변성:명:1
   가변식:명:1
   가변적:명:1
  -가볍다:형:193
  +가볍:형:193
   가보:명:1
   가보간:명:1
  -가봉하다:동:1
  +가봉하:동:1
   가부:명:2
   가부장:명:9
   가부장적:관:18
  @@ -263,11 +263,11 @@
   가부장제:명:15
   가부장제적:관:1
   가부좌:명:3
  -가빠지다:동:3
  -가뿐하다:형:2
  -가뿐해지다:동:1
  +가빠지:동:3
  +가뿐하:형:2
  +가뿐해지:동:1
   가뿐히:부:2
  -가쁘다:형:18
  +가쁘:형:18
   가사:명:1
   가사:명:18
   가사:명:2
  @@ -277,43 +277,43 @@
   가사일:명:4
   가산:명:1
   가산:명:3
  -가산되다:동:1
  +가산되:동:1
   가산율:명:2
   가산점:명:1
  -가산하다:동:1
  +가산하:동:1
   가상:명:17
   가상:명:2
   가상:명:52
  -가상되다:동:1
  +가상되:동:1
   가상적:관:1
  -가상하다:동:2
  -가상하다:동:4
  +가상하:동:2
  +가상하:동:4
   가새잎머루:명:1
  -가새지르다:동:1
  +가새지르:동:1
   가석방:명:1
  -가석방되다:동:3
  +가석방되:동:3
   가설:명:28
   가설:명:3
   가설무대:명:5
   가설적:관:3
  -가설하다:동:3
  +가설하:동:3
   가성:명:1
   가세:명:1
   가세:명:5
  -가세하다:동:12
  -가셔지다:동:1
  -가소롭다:형:1
  +가세하:동:12
  +가셔지:동:1
  +가소롭:형:1
   가속:명:4
   가속기:명:6
   가속도:명:14
  -가속되다:동:5
  -가속시키다:동:2
  +가속되:동:5
  +가속시키:동:2
   가속적:명:1
  -가속하다:동:1
  +가속하:동:1
   가속화:명:4
  -가속화되다:동:11
  -가속화시키다:동:5
  -가속화하다:동:4
  +가속화되:동:11
  +가속화시키:동:5
  +가속화하:동:4
   가솔린:명:1
   가수:명:109
   가수면:명:2
  @@ -325,7 +325,7 @@
   가스실:명:1
   가스업:명:1
   가스통:명:1
  -가슬가슬하다:형:2
  +가슬가슬하:형:2
   가슴:명:510
   가슴둘레:명:5
   가슴벽:명:2
  @@ -340,15 +340,15 @@
   가시권:명:1
   가시나:명:1
   가시나무:명:3
  -가시다:동:33
  +가시:동:33
   가시밭길:명:2
   가시버시:명:1
   가시적:관:2
   가시적:명:20
   가시화:명:2
  -가시화되다:동:3
  -가시화시키다:동:1
  -가시화하다:동:3
  +가시화되:동:3
  +가시화시키:동:1
  +가시화하:동:3
   가식:명:1
   가식:명:1
   가식적:명:4
  @@ -362,14 +362,14 @@
   가야금:명:13
   가업:명:1
   가연성:명:1
  -가열되다:동:2
  -가열하다:동:10
  -가열하다:형:1
  +가열되:동:2
  +가열하:동:10
  +가열하:형:1
   가열화:명:1
  -가열화하다:동:1
  -가엽다:형:7
  -가엾다:형:18
  -가엾어지다:동:2
  +가열화하:동:1
  +가엽:형:7
  +가엾:형:18
  +가엾어지:동:2
   가오리:명:1
   가옥:명:1
   가옥:명:22
  @@ -387,13 +387,13 @@
   가위:명:1
   가위:명:28
   가위:부:5
  -가위눌리다:동:6
  +가위눌리:동:6
   가위바위보:명:4
   가위표:명:1
   가윗날:명:1
   가을:명:181
   가을걷이:명:4
  -가을걷이하다:동:2
  +가을걷이하:동:2
   가을날:명:2
   가을맞이:명:3
   가을바람:명:5
  @@ -406,23 +406,23 @@
   가이드:명:35
   가이드라인:명:3
   가이색귀:명:1
  -가이없다:형:1
  +가이없:형:1
   가일층:부:2
   가입:명:43
  -가입되다:동:2
  +가입되:동:2
   가입비:명:2
   가입서:명:1
   가입순:명:1
   가입안:명:1
   가입자:명:42
  -가입하다:동:35
  +가입하:동:35
   가자미:명:1
   가작:명:1
   가장:명:58
  -가장:부:1,278
  +가장:부:1278
   가장이:명:1
   가장자리:명:38
  -가장하다:동:8
  +가장하:동:8
   가장행렬:명:2
   가재:명:7
   가재도구:명:4
  @@ -438,7 +438,7 @@
   가정과:명:3
   가정교사:명:27
   가정교육:명:11
  -가정되다:동:1
  +가정되:동:1
   가정법:명:1
   가정부:명:7
   가정부인:명:1
  @@ -451,14 +451,14 @@
   가정적:명:3
   가정주부:명:6
   가정집:명:2
  -가정하다:동:27
  +가정하:동:27
   가정학:명:1
   가정학과:명:1
   가정환경:명:4
   가제:명:2
  -가져가다:동:57
  -가져다주다:동:31
  -가져오다:동:212
  +가져가:동:57
  +가져다주:동:31
  +가져오:동:212
   가족:명:485
   가족계획:명:5
   가족도:명:1
  @@ -473,23 +473,23 @@
   가죽신:명:1
   가죽점퍼:명:2
   가중:명:1
  -가중되다:동:16
  -가중시키다:동:10
  -가증스럽다:형:2
  +가중되:동:16
  +가중시키:동:10
  +가증스럽:형:2
   가지:명:102
   가지:명:8
  -가지:의:1,272
  +가지:의:1272
   가지가지:명:3
   가지각색:명:3
   가지급금:명:1
   가지나물:명:2
  -가지다:동:1,512
  -가지다:보:411
  -가지런하다:형:4
  +가지:동:1512
  +가지:보:411
  +가지런하:형:4
   가지런히:부:36
   가지치기:명:7
  -가지치기하다:동:1
  -가직하다:형:1
  +가지치기하:동:1
  +가직하:형:1
   가집:명:1
   가짓빛:명:1
   가짓수:명:6
  @@ -504,7 +504,7 @@
   가축병원:명:1
   가축적:명:1
   가출:명:18
  -가출하다:동:6
  +가출하:동:6
   가치:명:2
   가치:명:386
   가치관:명:67
  @@ -518,23 +518,23 @@
   가톨릭:명:18
   가톨릭교회:명:8
   가투:명:3
  -가파르다:형:10
  +가파르:형:10
   가판대:명:1
   가풍:명:2
  -가필되다:동:1
  -가하다:동:66
  +가필되:동:1
  +가하:동:66
   가학:명:1
   가학적:명:1
   가해:명:3
   가해자:명:19
  -가해지다:동:19
  -가해하다:동:1
  +가해지:동:19
  +가해하:동:1
   가행궁:명:1
   가호:명:3
   가호자:명:1
   가혹:명:7
  -가혹하다:형:25
  -가혹해지다:동:1
  +가혹하:형:25
  +가혹해지:동:1
   가화:명:1
   가히:부:15
   각:관:475
  @@ -547,7 +547,7 @@
   각계각층:명:7
   각고:명:5
   각광:명:17
  -각광받다:동:9
  +각광받:동:9
   각국:명:72
   각국어:명:1
   각급:명:18
  @@ -562,45 +562,45 @@
   각막:명:2
   각막염:명:1
   각목:명:10
  -각박하다:형:11
  +각박하:형:11
   각반:명:1
   각배:명:1
  -각별하다:형:16
  +각별하:형:16
   각별히:부:12
   각본:명:17
   각본난:명:2
   각부:명:2
   각색:명:1
   각색:명:5
  -각색되다:동:1
  +각색되:동:1
   각색자:명:1
  -각색하다:동:5
  +각색하:동:5
   각서:명:20
   각서설:명:3
  -각서화하다:동:1
  +각서화하:동:1
   각선미:명:1
   각설이:명:1
   각설탕:명:1
   각성:명:24
  -각성되다:동:4
  -각성시키다:동:1
  -각성하다:동:7
  +각성되:동:4
  +각성시키:동:1
  +각성하:동:7
   각시:명:8
   각양:명:2
   각양각색:명:8
   각오:명:31
  -각오하다:동:10
  +각오하:동:10
   각의:명:2
   각인:명:2
  -각인되다:동:10
  -각인시키다:동:1
  +각인되:동:10
  +각인시키:동:1
   각자:명:52
   각자:부:56
   각자각자:명:1
   각종:명:270
   각주:명:1
   각지:명:27
  -각지다:형:2
  +각지:형:2
   각지불이:명:2
   각질:명:6
   각처:명:7
  @@ -611,7 +611,7 @@
   각통:명:1
   각하:명:1
   각하:명:10
  -각하하다:동:3
  +각하하:동:3
   각형:명:2
   각화형:명:1
   간:명:5
  @@ -620,37 +620,37 @@
   간:의:2
   간:의:580
   간간이:부:30
  -간간하다:형:2
  +간간하:형:2
   간격:명:46
  -간결하다:형:12
  +간결하:형:12
   간경변증:명:1
   간계:명:1
   간고등어:명:2
  -간곡하다:형:7
  +간곡하:형:7
   간곡히:부:4
  -간과되다:동:6
  -간과하다:동:35
  +간과되:동:6
  +간과하:동:35
   간교:명:1
  -간교하다:형:1
  -간구하다:동:1
  -간구하다:동:1
  +간교하:형:1
  +간구하:동:1
  +간구하:동:1
   간극:명:4
   간뇌:명:2
  -간단명료하다:형:5
  +간단명료하:형:5
   간단없이:부:1
  -간단하다:형:172
  +간단하:형:172
   간단히:부:69
   간담회:명:26
   간덩이:명:1
  -간데없다:형:2
  -간드러지다:형:4
  -간략하다:동:2
  -간략하다:형:7
  +간데없:형:2
  +간드러지:형:4
  +간략하:동:2
  +간략하:형:7
   간략히:부:8
   간만:명:2
   간만:명:8
   간맥:명:1
  -간명하다:형:3
  +간명하:형:3
   간물:명:5
   간발:명:1
   간밤:명:18
  @@ -663,30 +663,30 @@
   간사:명:38
   간사국:명:1
   간사장:명:3
  -간사하다:형:3
  -간사하다:형:3
  +간사하:형:3
  +간사하:형:3
   간석기:명:1
   간석지:명:8
   간선:명:5
   간선망:명:1
   간섭:명:41
   간섭기:명:1
  -간섭하다:동:11
  +간섭하:동:11
   간성:명:1
  -간소하다:형:4
  +간소하:형:4
   간소화:명:10
  -간소화되다:동:3
  -간소화하다:동:3
  -간수하다:동:3
  +간소화되:동:3
  +간소화하:동:3
  +간수하:동:3
   간스메:명:1
   간식:명:19
   간식거리:명:1
   간신배:명:1
   간신히:부:48
  -간악하다:형:3
  +간악하:형:3
   간암:명:3
   간여:명:2
  -간여하다:동:2
  +간여하:동:2
   간염:명:37
   간음죄:명:1
   간이:명:22
  @@ -696,7 +696,7 @@
   간장:명:2
   간장:명:2
   간장:명:66
  -간절하다:형:28
  +간절하:형:28
   간절히:부:8
   간접:명:39
   간접세:명:3
  @@ -705,49 +705,49 @@
   간접흡연:명:3
   간주:명:1
   간주관적:관:1
  -간주되다:동:18
  -간주하다:동:28
  +간주되:동:18
  +간주하:동:28
   간증:명:1
   간지:명:1
   간지:명:1
  -간지다:형:2
  -간지럽다:형:1
  -간지럽히다:동:6
  -간직되다:동:5
  -간직하다:동:53
  +간지:형:2
  +간지럽:형:1
  +간지럽히:동:6
  +간직되:동:5
  +간직하:동:53
   간질:명:12
   간질간질:부:1
  -간질이다:동:5
  +간질이:동:5
   간척:명:26
   간척지:명:16
  -간척하다:동:1
  +간척하:동:1
   간첩:명:29
   간첩단:명:3
  -간첩질하다:동:1
  +간첩질하:동:1
   간청:명:4
  -간청하다:동:5
  -간체자화되다:동:1
  -간추려지다:동:1
  -간추리다:동:8
  -간취되다:동:1
  -간취하다:동:1
  +간청하:동:5
  +간체자화되:동:1
  +간추려지:동:1
  +간추리:동:8
  +간취되:동:1
  +간취하:동:1
   간친회:명:1
   간택:명:2
  -간택하다:동:1
  +간택하:동:1
   간파:명:11
  -간파하다:동:12
  +간파하:동:12
   간판:명:50
   간판스타:명:4
   간편:명:2
   간편성:명:2
   간편식:명:1
  -간편하다:형:23
  +간편하:형:23
   간편히:부:1
  -간하다:동:19
  +간하:동:19
   간행:명:5
  -간행되다:동:7
  +간행되:동:7
   간행물:명:7
  -간행하다:동:5
  +간행하:동:5
   간헐적:명:4
   간호:명:20
   간호대:명:1
  @@ -758,54 +758,54 @@
   간호사:명:22
   간호실:명:9
   간호원:명:2
  -간호하다:동:6
  +간호하:동:6
   간호학과:명:1
   간혹:부:52
  -갇히다:동:55
  +갇히:동:55
   갈:명:2
   갈가리:부:9
   갈겨니:명:3
  -갈겨지다:동:1
  -갈고닦다:동:6
  +갈겨지:동:1
  +갈고닦:동:6
   갈고리:명:1
   갈구:명:1
  -갈구다:동:4
  -갈구하다:동:6
  -갈급하다:형:1
  +갈구:동:4
  +갈구하:동:6
  +갈급하:형:1
   갈기:명:2
   갈기갈기:부:4
  -갈기다:동:12
  +갈기:동:12
   갈까마귀:명:2
   갈꽃:명:13
  -갈다:동:25
  -갈다:동:7
  -갈다:동:89
  +갈:동:25
  +갈:동:7
  +갈:동:89
   갈대:명:11
   갈대밭:명:1
   갈대숲:명:1
   갈등:명:220
   갈등론적:관:1
  -갈등하다:동:8
  +갈등하:동:8
   갈등형:명:1
  -갈라놓다:동:6
  -갈라서다:동:5
  -갈라지다:동:55
  +갈라놓:동:6
  +갈라서:동:5
  +갈라지:동:55
   갈래:명:26
   갈래갈래:부:4
  -갈려지다:동:1
  +갈려지:동:1
   갈륨아세나이트:명:1
  -갈리다:동:1
  -갈리다:동:1
  -갈리다:동:5
  +갈리:동:1
  +갈리:동:1
  +갈리:동:5
   갈릭:명:1
   갈림길:명:19
   갈망:명:5
  -갈망하다:동:1
  -갈망하다:동:12
  +갈망하:동:1
  +갈망하:동:12
   갈매기:명:85
   갈모:명:2
  -갈무리되다:동:1
  -갈무리하다:동:2
  +갈무리되:동:1
  +갈무리하:동:2
   갈밭:명:4
   갈밭머리:명:6
   갈보:명:5
  @@ -817,11 +817,11 @@
   갈수기:명:2
   갈수록:부:53
   갈숲:명:1
  -갈아대다:동:1
  -갈아엎다:동:1
  -갈아입다:동:48
  -갈아입히다:동:2
  -갈아타다:동:17
  +갈아대:동:1
  +갈아엎:동:1
  +갈아입:동:48
  +갈아입히:동:2
  +갈아타:동:17
   갈애:명:2
   갈이:명:2
   갈이:명:2
  @@ -831,7 +831,7 @@
   갈지자걸음:명:1
   갈참나무:명:1
   갈채:명:7
  -갈취하다:동:2
  +갈취하:동:2
   갈취형:명:1
   갈치:명:6
   갈치구이:명:1
  @@ -840,30 +840,30 @@
   갈퀴꼭두서니:명:1
   갈퀴질:명:1
   갈탄:명:1
  -갈파하다:동:4
  +갈파하:동:4
   갈팡질팡:부:2
  -갈팡질팡하다:동:1
  +갈팡질팡하:동:1
   갈포:명:1
   갈피:명:10
  -갉다:동:2
  -갉아먹다:동:6
  +갉:동:2
  +갉아먹:동:6
   감:명:19
   감:명:34
   감:명:8
   감가상각비:명:2
  -감가하다:동:1
  +감가하:동:1
   감각:명:185
   감각적:관:31
   감각적:명:18
  -감각하다:동:1
  +감각하:동:1
   감감:부:1
  -감감하다:형:1
  +감감하:형:1
   감개:명:1
  -감개무량하다:형:2
  +감개무량하:형:2
   감격:명:25
  -감격스럽다:형:7
  +감격스럽:형:7
   감격적:명:5
  -감격하다:동:11
  +감격하:동:11
   감경:명:1
   감광지:명:4
   감광판:명:1
  @@ -871,24 +871,24 @@
   감귤:명:2
   감귤나무:명:1
   감금:명:9
  -감금당하다:동:1
  -감금되다:동:3
  +감금당하:동:1
  +감금되:동:3
   감금죄:명:5
  -감금하다:동:7
  +감금하:동:7
   감기:명:60
  -감기다:동:1
  -감기다:동:1
  -감기다:동:5
  -감기다:동:8
  +감기:동:1
  +감기:동:1
  +감기:동:5
  +감기:동:8
   감기약:명:8
   감꽃:명:3
   감나무:명:25
  -감내하다:동:4
  -감다:동:102
  -감다:동:14
  -감다:동:48
  +감내하:동:4
  +감:동:102
  +감:동:14
  +감:동:48
   감당:명:1
  -감당하다:동:41
  +감당하:동:41
   감독:명:1
   감독:명:324
   감독관:명:11
  @@ -898,32 +898,32 @@
   감독원:명:11
   감독자:명:1
   감독직:명:1
  -감독하다:동:14
  -감돌다:동:22
  +감독하:동:14
  +감돌:동:22
   감동:명:88
  -감동받다:동:1
  -감동스럽다:형:1
  -감동시키다:동:5
  +감동받:동:1
  +감동스럽:형:1
  +감동시키:동:5
   감동적:명:23
  -감동하다:동:12
  +감동하:동:12
   감때:명:1
   감량:명:11
  -감량시키다:동:1
  +감량시키:동:1
   감리자:명:1
   감마나이프:명:2
   감마선:명:3
   감면:명:10
  -감면하다:동:3
  +감면하:동:3
   감명:명:12
  -감명받다:동:1
  -감미롭다:형:15
  +감명받:동:1
  +감미롭:형:15
   감미료:명:1
   감방:명:1
   감방:명:14
   감별:명:8
   감별력:명:1
  -감별하다:동:2
  -감복하다:동:1
  +감별하:동:2
  +감복하:동:1
   감봉:명:1
   감사:명:1
   감사:명:2
  @@ -932,26 +932,26 @@
   감사:명:91
   감사관:명:2
   감사권:명:1
  -감사드리다:동:10
  +감사드리:동:10
   감사반:명:2
   감사반원:명:10
   감사실:명:3
   감사원:명:1
   감사절:명:1
  -감사하다:동:3
  -감사하다:동:37
  -감사하다:형:51
  +감사하:동:3
  +감사하:동:37
  +감사하:형:51
   감상:명:26
   감상:명:5
   감상:명:8
  -감상되다:동:1
  +감상되:동:1
   감상문:명:6
   감상실:명:4
   감상자:명:2
   감상적:관:5
   감상적:명:6
   감상주의:명:3
  -감상하다:동:44
  +감상하:동:44
   감상회:명:2
   감색:명:1
   감색:명:1
  @@ -959,22 +959,22 @@
   감성:명:25
   감성적:관:4
   감성적:명:11
  -감성화하다:동:1
  +감성화하:동:1
   감소:명:35
  -감소되다:동:16
  +감소되:동:16
   감소분:명:1
   감소세:명:1
  -감소시키다:동:7
  +감소시키:동:7
   감소율:명:2
   감소치:명:2
  -감소하다:동:42
  +감소하:동:42
   감속:명:1
  -감속하다:동:1
  +감속하:동:1
   감수:명:1
   감수:명:1
   감수력:명:1
   감수성:명:33
  -감수하다:동:27
  +감수하:동:27
   감시:명:58
   감시관:명:1
   감시권:명:1
  @@ -983,18 +983,18 @@
   감시원:명:2
   감시자:명:8
   감시탑:명:1
  -감시하다:동:26
  +감시하:동:26
   감식:명:2
  -감싸다:동:64
  -감싸이다:동:1
  -감아올리다:동:1
  -감아쥐다:동:4
  +감싸:동:64
  +감싸이:동:1
  +감아올리:동:1
  +감아쥐:동:4
   감안:명:8
  -감안하다:동:72
  -감액하다:동:1
  +감안하:동:72
  +감액하:동:1
   감언이설:명:2
   감염:명:14
  -감염되다:동:9
  +감염되:동:9
   감염자:명:1
   감영:명:1
   감옥:명:59
  @@ -1002,12 +1002,12 @@
   감옥선:명:1
   감옥소:명:4
   감원:명:10
  -감원하다:동:1
  +감원하:동:1
   감읍:명:1
  -감읍하다:동:1
  +감읍하:동:1
   감응:명:1
   감응력:명:1
  -감응하다:동:2
  +감응하:동:2
   감자:명:1
   감자:명:57
   감자밥:명:1
  @@ -1016,8 +1016,8 @@
   감잣고개:명:2
   감잣국:명:1
   감전:명:1
  -감전당하다:동:1
  -감전되다:동:2
  +감전당하:동:1
  +감전되:동:2
   감점:명:1
   감정:명:10
   감정:명:20
  @@ -1028,16 +1028,16 @@
   감정적:관:7
   감정적:명:15
   감정적:명:2
  -감정하다:동:2
  +감정하:동:2
   감지:명:7
   감지기:명:16
   감지덕지:부:4
  -감지되다:동:8
  +감지되:동:8
   감지력:명:1
  -감지하다:동:26
  +감지하:동:26
   감지형:명:4
  -감질나다:형:1
  -감쪽같다:형:4
  +감질나:형:1
  +감쪽같:형:4
   감쪽같이:부:9
   감찰:명:4
   감찰반:명:1
  @@ -1045,48 +1045,48 @@
   감청:명:2
   감초:명:6
   감촉:명:10
  -감촉하다:동:1
  -감추다:동:104
  -감추어지다:동:14
  +감촉하:동:1
  +감추:동:104
  +감추어지:동:14
   감축:명:21
  -감축되다:동:1
  -감축시키다:동:1
  +감축되:동:1
  +감축시키:동:1
   감축안:명:2
  -감축하다:동:7
  -감춰지다:동:2
  +감축하:동:7
  +감춰지:동:2
   감치:명:3
   감칠맛:명:10
   감탄:명:9
   감탄사:명:2
  -감탄스럽다:형:1
  -감탄하다:동:23
  +감탄스럽:형:1
  +감탄하:동:23
   감퇴:명:1
  -감퇴되다:동:2
  -감퇴시키다:동:2
  +감퇴되:동:2
  +감퇴시키:동:2
   감투:명:1
   감투:명:11
  -감하다:동:1
  +감하:동:1
   감행:명:1
  -감행하다:동:17
  +감행하:동:17
   감형:명:3
  -감형되다:동:1
  -감형하다:동:1
  +감형되:동:1
  +감형하:동:1
   감호:명:1
   감호소:명:1
   감화:명:1
  -감화되다:동:1
  -감화시키다:동:1
  +감화되:동:1
  +감화시키:동:1
   감화원:명:1
  -감화하다:동:2
  +감화하:동:2
   감회:명:6
   감흥:명:10
   감히:부:56
   갑:명:1
   갑:명:20
   갑:명:29
  -갑갑하다:형:7
  +갑갑하:형:7
   갑골:명:7
  -갑다:형:1
  +갑:형:1
   갑문:명:6
   갑부:명:2
   갑사:명:6
  @@ -1100,7 +1100,7 @@
   갑옷:명:2
   갑자:명:4
   갑자기:부:433
  -갑작스럽다:형:41
  +갑작스럽:형:41
   갑작스레:부:2
   갑절:명:5
   갑족:명:1
  @@ -1111,13 +1111,13 @@
   갑판장:명:4
   갑호:명:1
   값:명:278
  -값나가다:동:2
  -값비싸다:형:11
  -값싸다:형:24
  +값나가:동:2
  +값비싸:형:11
  +값싸:형:24
   값어치:명:2
  -값있다:형:1
  -값지다:형:17
  -값하다:동:8
  +값있:형:1
  +값지:형:17
  +값하:동:8
   갓:명:18
   갓:부:48
   갓길:명:3
  @@ -1131,37 +1131,37 @@
   강:의:23
   강가:명:11
   강간:명:53
  -강간당하다:동:3
  +강간당하:동:3
   강간범:명:2
  -강간하다:동:6
  +강간하:동:6
   강강수월래:명:1
   강강술래:명:1
  -강건하다:형:1
  +강건하:형:1
   강경:명:33
   강경론:명:2
   강경론자:명:1
   강경책:명:5
   강경파:명:7
  -강경하다:형:7
  -강경해지다:동:1
  +강경하:형:7
  +강경해지:동:1
   강고성:명:1
  -강고하다:형:4
  +강고하:형:4
   강공:명:2
   강관:명:1
   강구:명:13
   강구:명:8
  -강구되다:동:6
  -강구하다:동:15
  +강구되:동:6
  +강구하:동:15
   강국:명:12
   강군:명:2
   강권:명:2
  -강권하다:동:3
  +강권하:동:3
   강기슭:명:1
   강남:명:60
   강낭콩:명:4
   강냉이:명:4
   강녕:명:1
  -강녕하다:형:1
  +강녕하:형:1
   강다짐:명:1
   강단:명:13
   강당:명:18
  @@ -1174,23 +1174,23 @@
   강독:명:1
   강독용:명:2
   강둑:명:4
  -강등시키다:동:1
  -강등하다:동:1
  +강등시키:동:1
  +강등하:동:1
   강력:명:2
   강력:명:25
   강력반:명:1
   강력범:명:1
   강력부:명:2
  -강력하다:형:129
  -강력해지다:동:2
  +강력하:형:129
  +강력해지:동:2
   강력히:부:39
  -강렬하다:형:57
  -강렬해지다:동:2
  +강렬하:형:57
  +강렬해지:동:2
   강렬화:명:1
   강렬히:부:1
   강령:명:10
   강론:명:2
  -강론하다:동:1
  +강론하:동:1
   강림:명:1
   강물:명:69
   강바닥:명:1
  @@ -1204,7 +1204,7 @@
   강변가:명:1
   강변길:명:1
   강변도로:명:6
  -강변하다:동:5
  +강변하:동:5
   강보합:명:1
   강보합세:명:1
   강북:명:15
  @@ -1217,9 +1217,9 @@
   강샘:명:1
   강설:명:1
   강설:명:3
  -강설하다:동:2
  +강설하:동:2
   강성:명:2
  -강성해지다:동:3
  +강성해지:동:3
   강세:명:14
   강소주:명:1
   강속구:명:1
  @@ -1227,7 +1227,7 @@
   강수량:명:32
   강술:명:1
   강습:명:6
  -강습받다:동:1
  +강습받:동:1
   강습소:명:2
   강습회:명:2
   강신무:명:1
  @@ -1245,19 +1245,19 @@
   강연:명:19
   강연회:명:12
   강요:명:18
  -강요당하다:동:6
  -강요되다:동:16
  -강요받다:동:8
  -강요하다:동:56
  +강요당하:동:6
  +강요되:동:16
  +강요받:동:8
  +강요하:동:56
   강우:명:2
   강우량:명:4
   강의:명:66
  -강의되다:동:1
  +강의되:동:1
   강의록:명:2
   강의실:명:6
  -강의하다:동:14
  +강의하:동:14
   강인성:명:1
  -강인하다:형:13
  +강인하:형:13
   강자:명:3
   강장고:명:1
   강장제:명:4
  @@ -1268,87 +1268,87 @@
   강점기:명:4
   강정:명:4
   강제:명:94
  -강제되다:동:2
  +강제되:동:2
   강제력:명:8
   강제성:명:6
   강제적:명:17
  -강제하다:동:10
  +강제하:동:10
   강조:명:21
  -강조되다:동:19
  -강조하다:동:343
  +강조되:동:19
  +강조하:동:343
   강좌:명:23
   강줄기:명:1
   강중강중:부:1
  -강직하다:형:2
  +강직하:형:2
   강짜:명:1
  -강짜하다:동:1
  +강짜하:동:1
   강철:명:3
   강추위:명:2
   강추위:명:3
   강타자:명:1
  -강타하다:동:4
  -강탈하다:동:1
  +강타하:동:4
  +강탈하:동:1
   강태공:명:2
   강팀:명:3
   강판:명:2
   강판:명:3
  -강퍅하다:형:1
  +강퍅하:형:1
   강포:명:1
   강풍:명:8
  -강하다:형:363
  -강하다:형:6
  -강해지다:동:13
  +강하:형:363
  +강하:형:6
  +강해지:동:13
   강행:명:8
   강행군:명:4
  -강행군하다:동:1
  -강행하다:동:15
  +강행군하:동:1
  +강행하:동:15
   강호:명:3
   강화:명:1
   강화:명:112
  -강화되다:동:49
  -강화시키다:동:29
  +강화되:동:49
  +강화시키:동:29
   강화책:명:2
  -강화하다:동:101
  +강화하:동:101
   갖가지:명:53
  -갖다:동:1,008
  +갖:동:1008
   갖다:보:57
   갖은:관:25
  -갖추다:동:279
  -갖추어지다:동:21
  -갖춰지다:동:14
  -같다:형:5,199
  -같아지다:동:6
  +갖추:동:279
  +갖추어지:동:21
  +갖춰지:동:14
  +같:형:5199
  +같아지:동:6
   같이:부:952
  -같이하다:동:48
  -같잖다:형:4
  -갚다:동:59
  +같이하:동:48
  +같잖:형:4
  +갚:동:59
   개:명:1
   개:명:1
   개:명:145
  -개:의:1,622
  +개:의:1622
   개가:명:5
   개가:명:9
   개가식:명:2
  -개가하다:동:1
  +개가하:동:1
   개각:명:5
   개각설:명:2
   개간:명:14
  -개간되다:동:1
  -개간하다:동:4
  -개강하다:동:1
  +개간되:동:1
  +개간하:동:4
  +개강하:동:1
   개개:명:11
   개개비:명:2
   개개인:명:34
   개고기:명:11
   개골창:명:2
  -개과천선하다:동:1
  +개과천선하:동:1
   개관:명:1
   개관:명:16
  -개관되다:동:8
  +개관되:동:8
   개관식:명:3
   개관일:명:2
  -개관하다:동:3
  -개관하다:동:5
  +개관하:동:3
  +개관하:동:5
   개괄적:관:1
   개괄적:명:4
   개교:명:2
  @@ -1362,14 +1362,14 @@
   개국:명:3
   개국:명:5
   개국:의:71
  -개국되다:동:1
  -개국하다:동:3
  -개국하다:동:4
  +개국되:동:1
  +개국하:동:3
  +개국하:동:4
   개굴개굴:부:1
   개그:명:6
   개그맨:명:7
   개그우먼:명:5
  -개기다:동:1
  +개기:동:1
   개기름:명:2
   개꿈:명:1
   개나리:명:22
  @@ -1381,12 +1381,12 @@
   개념적:관:8
   개념적:명:3
   개념화:명:2
  -개념화되다:동:8
  -개념화하다:동:13
  +개념화되:동:8
  +개념화하:동:13
   개놈:명:1
  -개다:동:19
  -개다:동:5
  -개다:동:6
  +개:동:19
  +개:동:5
  +개:동:6
   개다리소반:명:2
   개도국:명:10
   개떡:명:2
  @@ -1396,18 +1396,18 @@
   개략적:관:1
   개략적:명:2
   개량:명:9
  -개량되다:동:3
  +개량되:동:3
   개량적:관:1
   개량적:명:1
   개량종:명:1
   개량주의:명:2
  -개량하다:동:7
  +개량하:동:7
   개량형:명:3
   개량화:명:2
   개런티:명:3
   개력:명:1
   개막:명:30
  -개막되다:동:15
  +개막되:동:15
   개막식:명:7
   개막일:명:1
   개막작:명:1
  @@ -1415,34 +1415,34 @@
   개망초:명:1
   개머리판:명:1
   개명:명:2
  -개명되다:동:2
  +개명되:동:2
   개명화:명:1
  -개문되다:동:1
  +개문되:동:1
   개미:명:56
   개미집:명:3
   개발:명:413
   개발나무:명:1
   개발단:명:1
   개발도상국:명:10
  -개발되다:동:83
  +개발되:동:83
   개발부:명:1
   개발부장:명:1
   개발비:명:6
   개발사:명:1
   개발서:명:1
   개발설:명:2
  -개발시키다:동:1
  +개발시키:동:1
   개발실장:명:1
   개발업:명:1
   개발원:명:3
   개발자:명:8
  -개발하다:동:181
  +개발하:동:181
   개발학과:명:1
   개밥:명:8
   개방:명:1
   개방:명:178
   개방계:명:1
  -개방되다:동:31
  +개방되:동:31
   개방론:명:8
   개방론자:명:1
   개방률:명:1
  @@ -1450,13 +1450,13 @@
   개방성:명:5
   개방적:관:2
   개방적:명:15
  -개방하다:동:52
  +개방하:동:52
   개방형:명:1
   개방화:명:18
  -개방화되다:동:1
  +개방화되:동:1
   개벽:명:74
  -개벽시키다:동:2
  -개벽하다:동:2
  +개벽시키:동:2
  +개벽하:동:2
   개별:명:44
   개별성:명:4
   개별자:명:1
  @@ -1464,32 +1464,32 @@
   개별적:명:18
   개별체:명:1
   개별화:명:1
  -개별화되다:동:3
  -개별화하다:동:1
  +개별화되:동:3
  +개별화하:동:1
   개봉:명:9
   개봉관:명:2
  -개봉되다:동:4
  +개봉되:동:4
   개봉작:명:1
  -개봉하다:동:4
  +개봉하:동:4
   개비:명:25
  -개뿐해지다:동:1
  +개뿐해지:동:1
   개뿔:명:1
   개사:명:1
   개사:의:23
   개살구:명:3
   개새끼:명:4
   개선:명:146
  -개선되다:동:39
  -개선시키다:동:1
  +개선되:동:39
  +개선시키:동:1
   개선안:명:14
   개선책:명:8
  -개선하다:동:1
  -개선하다:동:65
  +개선하:동:1
  +개선하:동:65
   개설:명:29
  -개설되다:동:12
  +개설되:동:12
   개설서:명:5
   개설적:명:1
  -개설하다:동:23
  +개설하:동:23
   개성:명:124
   개성껏:부:1
   개성미:명:1
  @@ -1505,11 +1505,11 @@
   개시:명:1
   개시:명:7
   개시기:명:1
  -개시되다:동:1
  +개시되:동:1
   개시론:명:1
   개시일:명:1
  -개시하다:동:1
  -개시하다:동:5
  +개시하:동:1
  +개시하:동:5
   개식형:명:1
   개신교:명:2
   개신교계:명:1
  @@ -1517,12 +1517,12 @@
   개아:명:2
   개악:명:1
   개안:명:3
  -개안시키다:동:1
  -개않다:형:1
  +개안시키:동:1
  +개않:형:1
   개암나무:명:5
   개암취:명:1
   개업:명:3
  -개업하다:동:3
  +개업하:동:3
   개여뀌:명:2
   개연:명:1
   개연성:명:14
  @@ -1530,17 +1530,17 @@
   개옻나무:명:1
   개요:명:14
   개요란:명:1
  -개운하다:형:17
  +개운하:형:17
   개울:명:26
   개울가:명:17
   개울물:명:6
   개웅:명:1
   개원:명:4
  -개원되다:동:3
  -개원하다:동:1
  +개원되:동:3
  +개원하:동:1
   개월:의:275
  -개의하다:동:13
  -개이다:동:1
  +개의하:동:13
  +개이:동:1
   개인:명:380
   개인기:명:3
   개인별:명:6
  @@ -1558,61 +1558,61 @@
   개인플레이:명:1
   개인화:명:2
   개입:명:52
  -개입되다:동:14
  +개입되:동:14
   개입설:명:1
  -개입시키다:동:2
  -개입하다:동:36
  +개입시키:동:2
  +개입하:동:36
   개자식:명:3
   개작:명:4
   개작권:명:1
  -개작하다:동:4
  +개작하:동:4
   개장:명:13
   개장국:명:1
  -개장되다:동:3
  -개장하다:동:3
  -개재되다:동:2
  -개재하다:동:2
  +개장되:동:3
  +개장하:동:3
  +개재되:동:2
  +개재하:동:2
   개전:명:1
   개전:명:6
   개절:명:3
   개점:명:5
  -개점하다:동:1
  +개점하:동:1
   개정:명:2
   개정:명:30
   개정:명:51
   개정권:명:1
  -개정되다:동:8
  -개정되다:동:9
  +개정되:동:8
  +개정되:동:9
   개정안:명:44
   개정판:명:1
  -개정하다:동:20
  -개정하다:동:5
  -개져오다:동:2
  +개정하:동:20
  +개정하:동:5
  +개져오:동:2
   개조:명:10
   개조:명:2
   개조:의:1
  -개조되다:동:5
  -개조시키다:동:1
  -개조하다:동:18
  -개종시키다:동:1
  -개종하다:동:1
  -개죽음당하다:동:1
  +개조되:동:5
  +개조시키:동:1
  +개조하:동:18
  +개종시키:동:1
  +개종하:동:1
  +개죽음당하:동:1
   개중:명:6
  -개지다:보:1
  +개지:보:1
   개진:명:2
  -개진되다:동:1
  -개진되다:동:5
  -개진하다:동:4
  +개진되:동:1
  +개진되:동:5
  +개진하:동:4
   개찰:명:5
   개찰구:명:13
   개창:명:1
  -개창하다:동:1
  +개창하:동:1
   개척:명:7
  -개척되다:동:4
  +개척되:동:4
   개척자:명:14
   개척적:관:1
   개척적:명:1
  -개척하다:동:25
  +개척하:동:25
   개천:명:9
   개천가:명:2
   개천절:명:3
  @@ -1622,55 +1622,55 @@
   개체적:관:8
   개체적:명:6
   개체화:명:5
  -개체화하다:동:3
  +개체화하:동:3
   개촌:명:1
   개최:명:18
  -개최되다:동:25
  +개최되:동:25
   개최지:명:1
  -개최하다:동:35
  +개최하:동:35
   개축:명:3
  -개축하다:동:2
  +개축하:동:2
   개칭:명:1
  -개칭되다:동:1
  -개칭하다:동:1
  -개켜지다:동:1
  -개키다:동:2
  +개칭되:동:1
  +개칭하:동:1
  +개켜지:동:1
  +개키:동:2
   개탄:명:2
  -개탄스럽다:형:2
  +개탄스럽:형:2
   개탄조:명:1
  -개탄하다:동:5
  +개탄하:동:5
   개털:명:1
   개통:명:4
  -개통되다:동:6
  -개통시키다:동:1
  +개통되:동:6
  +개통시키:동:1
   개통식:명:1
  -개통하다:동:1
  +개통하:동:1
   개판:명:2
   개패:명:1
   개펄:명:11
   개편:명:99
  -개편되다:동:10
  +개편되:동:10
   개편안:명:8
  -개편하다:동:12
  +개편하:동:12
   개평:명:1
   개폐:명:1
   개폐:명:6
  -개폐되다:동:1
  +개폐되:동:1
   개폐식:명:3
   개표:명:9
   개피떡:명:1
   개하사:명:1
   개학:명:2
  -개학하다:동:2
  +개학하:동:2
   개항:명:3
  -개항하다:동:1
  +개항하:동:1
   개헌:명:9
   개헌선:명:1
   개헌안:명:2
   개헤엄:명:1
   개혁:명:369
   개혁가:명:2
  -개혁되다:동:1
  +개혁되:동:1
   개혁론:명:1
   개혁안:명:8
   개혁자:명:1
  @@ -1678,15 +1678,15 @@
   개혁적:명:1
   개혁파:명:9
   개혁풍:명:1
  -개혁하다:동:8
  +개혁하:동:8
   개화:명:1
   개화:명:8
   개화기:명:5
  -개화되다:동:3
  -개화시키다:동:2
  +개화되:동:3
  +개화시키:동:2
   개화파:명:1
  -개화하다:동:2
  -개화하다:동:2
  +개화하:동:2
  +개화하:동:2
   개활:명:5
   개활지:명:2
   개회:명:2
  @@ -1701,21 +1701,21 @@
   객관적:명:86
   객관주의:명:7
   객관화:명:1
  -객관화되다:동:2
  -객관화하다:동:3
  +객관화되:동:2
  +객관화하:동:3
   객기:명:2
  -객사하다:동:1
  +객사하:동:1
   객석:명:14
   객실:명:9
   객원:명:5
   객장:명:4
   객주:명:1
   객지:명:9
  -객쩍다:형:1
  +객쩍:형:1
   객차:명:7
   객체:명:11
   객체적:명:1
  -객체화하다:동:1
  +객체화하:동:1
   갤러리:명:7
   갤런:의:1
   갭:명:10
  @@ -1733,27 +1733,27 @@
   갱목:명:5
   갱생:명:1
   갱신:명:9
  -갱신되다:동:2
  -갱신하다:동:2
  +갱신되:동:2
  +갱신하:동:2
   갱찰:명:3
   갸:불:1
  -갸륵하다:형:7
  -갸름하다:형:18
  -갸름해지다:동:3
  +갸륵하:형:7
  +갸름하:형:18
  +갸름해지:동:3
   갸우뚱:부:4
  -갸우뚱거리다:동:9
  -갸우뚱하다:동:17
  +갸우뚱거리:동:9
  +갸우뚱하:동:17
   갸웃:부:1
  -갸웃갸웃하다:동:1
  -갸웃거려지다:동:1
  -갸웃거리다:동:15
  -갸웃하다:동:5
  +갸웃갸웃하:동:1
  +갸웃거려지:동:1
  +갸웃거리:동:15
  +갸웃하:동:5
   갹출:명:1
   걀걀:부:2
   걔:불:187
   거:대:6
   거:대:66
  -거:의:5,678
  +거:의:5678
   거간:명:1
   거개:명:2
   거구:명:15
  @@ -1761,38 +1761,38 @@
   거국적:명:1
   거금:명:8
   거기:대:644
  -거꾸러지다:동:3
  +거꾸러지:동:3
   거꾸로:부:69
   거꾸로오르기:명:3
  -거나하다:형:5
  -거나해지다:동:2
  -거느리다:동:24
  -거닐다:동:17
  +거나하:형:5
  +거나해지:동:2
  +거느리:동:24
  +거닐:동:17
   거대:명:11
  -거대하다:형:112
  +거대하:형:112
   거대화:명:2
  -거대화되다:동:1
  +거대화되:동:1
   거덜:명:2
   거동:명:9
  -거두다:동:144
  -거두어들이다:동:8
  -거둬들이다:동:10
  -거드럭거리다:동:1
  +거두:동:144
  +거두어들이:동:8
  +거둬들이:동:10
  +거드럭거리:동:1
   거드름:명:4
   거들:명:3
  -거들다:동:33
  -거들떠보다:동:8
  -거들먹거리다:동:4
  -거들먹대다:동:1
  +거들:동:33
  +거들떠보:동:8
  +거들먹거리:동:4
  +거들먹대:동:1
   거듭:부:61
  -거듭나다:동:8
  -거듭되다:동:12
  -거듭하다:동:58
  +거듭나:동:8
  +거듭되:동:12
  +거듭하:동:58
   거뜬:명:1
  -거뜬하다:형:3
  +거뜬하:형:3
   거뜬히:부:6
   거래:명:182
  -거래되다:동:13
  +거래되:동:13
   거래량:명:3
   거래선:명:5
   거래세:명:1
  @@ -1801,14 +1801,14 @@
   거래점:명:5
   거래제:명:1
   거래처:명:2
  -거래하다:동:9
  +거래하:동:9
   거렁뱅이:명:1
  -거론되다:동:31
  -거론하다:동:27
  -거룩하다:형:22
  +거론되:동:31
  +거론하:동:27
  +거룩하:형:22
   거룻배:명:5
  -거르다:동:16
  -거르다:동:25
  +거르:동:16
  +거르:동:25
   거름:명:21
   거름망:명:1
   거름잔:명:1
  @@ -1818,29 +1818,29 @@
   거리:명:199
   거리:의:15
   거리감:명:14
  -거리끼다:동:2
  +거리끼:동:2
   거리낌:명:14
  -거만스럽다:형:2
  -거만하다:형:5
  -거만해지다:동:2
  +거만스럽:형:2
  +거만하:형:5
  +거만해지:동:2
   거머리:명:14
  -거머잡다:동:1
  -거머쥐다:동:17
  -거멓다:형:4
  +거머잡:동:1
  +거머쥐:동:17
  +거멓:형:4
   거명:명:1
  -거명되다:동:2
  -거명하다:동:2
  +거명되:동:2
  +거명하:동:2
   거목:명:3
  -거무레하다:형:1
  -거무스레하다:형:1
  -거무스름하다:형:1
  -거무죽죽하다:형:1
  -거무칙칙하다:형:1
  -거무튀튀하다:형:3
  +거무레하:형:1
  +거무스레하:형:1
  +거무스름하:형:1
  +거무죽죽하:형:1
  +거무칙칙하:형:1
  +거무튀튀하:형:3
   거문고:명:12
   거물:명:8
  -거뭇거뭇하다:형:4
  -거뭇하다:형:1
  +거뭇거뭇하:형:4
  +거뭇하:형:1
   거미:명:5
   거미줄:명:24
   거봉:명:1
  @@ -1849,14 +1849,14 @@
   거부:명:39
   거부감:명:10
   거부권:명:2
  -거부당하다:동:5
  -거부되다:동:8
  -거부하다:동:118
  +거부당하:동:5
  +거부되:동:8
  +거부하:동:118
   거북:명:3
  -거북스러워하다:동:1
  -거북스럽다:형:1
  +거북스러워하:동:1
  +거북스럽:형:1
   거북이:명:5
  -거북하다:형:7
  +거북하:형:7
   거사:명:2
   거사:명:2
   거산:명:1
  @@ -1866,23 +1866,23 @@
   거선:명:1
   거성:명:1
   거세:명:2
  -거세다:형:35
  -거세당하다:동:1
  -거세되다:동:2
  -거세어지다:동:2
  -거세지다:동:7
  +거세:형:35
  +거세당하:동:1
  +거세되:동:2
  +거세어지:동:2
  +거세지:동:7
   거소:명:2
   거수:명:1
   거수:명:1
   거수:명:4
   거수경례:명:5
  -거수하다:동:2
  -거스르다:동:2
  -거스르다:동:36
  +거수하:동:2
  +거스르:동:2
  +거스르:동:36
   거스름돈:명:6
  -거슬리다:동:17
  -거슴츠레하다:형:2
  -거슴츠레해지다:동:1
  +거슬리:동:17
  +거슴츠레하:형:2
  +거슴츠레해지:동:1
   거시:명:1
   거시:명:14
   거시기:감:3
  @@ -1893,9 +1893,9 @@
   거실:명:79
   거액:명:49
   거여:명:3
  -거역하다:동:17
  +거역하:동:17
   거울:명:103
  -거울삼다:동:1
  +거울삼:동:1
   거웃:명:1
   거위:명:1
   거의:명:13
  @@ -1906,9 +1906,9 @@
   거저:부:16
   거적때기:명:6
   거절:명:10
  -거절당하다:동:2
  -거절되다:동:1
  -거절하다:동:53
  +거절당하:동:2
  +거절되:동:1
  +거절하:동:53
   거점:명:12
   거정:명:1
   거주:명:20
  @@ -1916,7 +1916,7 @@
   거주민:명:1
   거주자:명:1
   거주지:명:10
  -거주하다:동:16
  +거주하:동:16
   거죽:명:6
   거즈:명:1
   거지:명:1
  @@ -1925,41 +1925,41 @@
   거진:명:1
   거진:부:6
   거짓:명:48
  -거짓되다:형:3
  +거짓되:형:3
   거짓말:명:96
   거짓말쟁이:명:6
  -거짓말하다:동:11
  +거짓말하:동:11
   거짓부렁:명:1
  -거짓뿌렁하다:동:1
  +거짓뿌렁하:동:1
   거참:감:7
  -거창하다:형:32
  +거창하:형:32
   거처:명:8
  -거처하다:동:4
  -거추장스럽다:형:8
  +거처하:동:4
  +거추장스럽:형:8
   거취:명:5
  -거치다:동:269
  -거칠거칠하다:형:1
  -거칠다:형:93
  -거칠어지다:동:13
  -거침없다:형:4
  +거치:동:269
  +거칠거칠하:형:1
  +거칠:형:93
  +거칠어지:동:13
  +거침없:형:4
   거침없이:부:9
   거푸:부:5
  -거푸수수하다:형:1
  +거푸수수하:형:1
   거품:명:48
   거품기:명:7
  -거하다:동:1
  -거하다:형:1
  +거하:동:1
  +거하:형:1
   거행:명:1
  -거행되다:동:3
  -거행하다:동:10
  +거행되:동:3
  +거행하:동:10
   걱정:명:202
   걱정거리:명:7
  -걱정걱정하다:동:1
  -걱정되다:동:14
  -걱정스러워지다:동:1
  -걱정스럽다:형:30
  +걱정걱정하:동:1
  +걱정되:동:14
  +걱정스러워지:동:1
  +걱정스럽:형:30
   걱정스레:부:1
  -걱정하다:동:86
  +걱정하:동:86
   건:명:1
   건:명:20
   건:불:2
  @@ -1972,61 +1972,61 @@
   건강식:명:1
   건강식품:명:13
   건강체:명:1
  -건강하다:형:178
  +건강하:형:178
   건강학:명:1
  -건강해지다:동:10
  +건강해지:동:10
   건강히:부:2
   건계:명:2
   건과:명:3
   건구역질:명:1
   건국:명:43
  -건국되다:동:2
  +건국되:동:2
   건국자:명:1
  -건국하다:동:6
  +건국하:동:6
   건군:명:3
   건냉소:명:1
   건너:명:20
  -건너가다:동:45
  -건너다:동:94
  -건너다니다:동:1
  -건너다보다:동:22
  -건너다보이다:동:2
  -건너뛰다:동:16
  -건너뛰어지다:동:1
  -건너오다:동:23
  +건너가:동:45
  +건너:동:94
  +건너다니:동:1
  +건너다보:동:22
  +건너다보이:동:2
  +건너뛰:동:16
  +건너뛰어지:동:1
  +건너오:동:23
   건너편:명:33
   건넌방:명:17
   건널목:명:7
   건넛집:명:1
  -건네다:동:39
  -건네받다:동:11
  -건네주다:동:47
  -건네지다:동:4
  +건네:동:39
  +건네받:동:11
  +건네주:동:47
  +건네지:동:4
   건뇌제:명:2
   건달:명:13
   건답법:명:1
   건더기:명:3
   건덕지:명:3
   건둥건둥:부:1
  -건드리다:동:50
  -건들거리다:동:3
  -건들다:동:2
  +건드리:동:50
  +건들거리:동:3
  +건들:동:2
   건듯:부:1
   건립:명:27
  -건립되다:동:6
  -건립하다:동:3
  +건립되:동:6
  +건립하:동:3
   건망증:명:4
   건물:명:336
   건물주:명:1
   건반:명:2
   건방:명:1
  -건방지다:형:5
  +건방지:형:5
   건배:명:2
  -건배하다:동:2
  +건배하:동:2
   건사:명:1
   건설:명:277
   건설기적:관:1
  -건설되다:동:30
  +건설되:동:30
   건설비:명:8
   건설업:명:7
   건설업계:명:3
  @@ -2035,42 +2035,42 @@
   건설자:명:3
   건설적:명:4
   건설처장:명:2
  -건설하다:동:95
  +건설하:동:95
   건성:명:16
   건성:명:9
   건성건성:부:1
   건수:명:14
   건식:명:1
  -건실하다:형:3
  +건실하:형:3
   건어물:명:2
   건의:명:16
  -건의되다:동:1
  +건의되:동:1
   건의문:명:5
  -건의하다:동:19
  -건장하다:형:12
  +건의하:동:19
  +건장하:형:12
   건재:명:2
   건재:명:3
  -건재하다:형:5
  +건재하:형:5
   건전:명:6
   건전도:명:2
   건전성:명:4
   건전지:명:2
  -건전하다:형:59
  +건전하:형:59
   건조:명:51
   건조기:명:1
  -건조되다:동:4
  +건조되:동:4
   건조물:명:1
  -건조시키다:동:3
  +건조시키:동:3
   건조실:명:6
   건조증:명:9
   건조지:명:1
  -건조하다:동:2
  -건조하다:형:18
  -건조해지다:동:3
  +건조하:동:2
  +건조하:형:18
  +건조해지:동:3
   건준:명:4
   건중탕:명:2
   건지:명:2
  -건지다:동:75
  +건지:동:75
   건지황:명:2
   건초:명:1
   건추절:명:1
  @@ -2078,7 +2078,7 @@
   건축가:명:13
   건축계:명:6
   건축관:명:2
  -건축되다:동:1
  +건축되:동:1
   건축물:명:21
   건축미:명:1
   건축법:명:3
  @@ -2090,7 +2090,7 @@
   건축인:명:1
   건축적:명:3
   건축주:명:4
  -건축하다:동:3
  +건축하:동:3
   건축학:명:5
   건축학계:명:2
   건축학과:명:4
  @@ -2099,47 +2099,47 @@
   건평:명:1
   건포도:명:5
   건필:명:1
  -건하다:형:1
  +건하:형:1
   걷기:명:18
  -걷다:동:2
  -걷다:동:20
  -걷다:동:34
  -걷다:동:388
  -걷어붙이다:동:3
  -걷어차다:동:12
  -걷어차이다:동:2
  -걷어치우다:동:1
  -걷잡다:동:7
  -걷지르다:동:1
  -걷히다:동:1
  -걷히다:동:14
  -걷히다:동:7
  +걷:동:2
  +걷:동:20
  +걷:동:34
  +걷:동:388
  +걷어붙이:동:3
  +걷어차:동:12
  +걷어차이:동:2
  +걷어치우:동:1
  +걷잡:동:7
  +걷지르:동:1
  +걷히:동:1
  +걷히:동:14
  +걷히:동:7
   걸:명:1
   걸:명:1
   걸개:명:2
  -걸걸하다:형:2
  -걸다:동:1
  -걸다:동:303
  -걸러지다:동:3
  +걸걸하:형:2
  +걸:동:1
  +걸:동:303
  +걸러지:동:3
   걸레:명:13
   걸레질:명:6
  -걸레질하다:동:1
  +걸레질하:동:1
   걸레짝:명:1
   걸레쪽:명:1
  -걸려들다:동:11
  -걸려지다:동:1
  -걸리다:동:2
  -걸리다:동:515
  -걸리적거리다:동:1
  +걸려들:동:11
  +걸려지:동:1
  +걸리:동:2
  +걸리:동:515
  +걸리적거리:동:1
   걸림돌:명:16
  -걸맞다:형:38
  -걸매어지다:동:1
  -걸머지다:동:1
  +걸맞:형:38
  +걸매어지:동:1
  +걸머지:동:1
   걸상:명:6
  -걸신들리다:동:1
  -걸어가다:동:111
  -걸어오다:동:14
  -걸어오다:동:48
  +걸신들리:동:1
  +걸어가:동:111
  +걸어오:동:14
  +걸어오:동:48
   걸음:명:137
   걸음걸음:명:1
   걸음걸이:명:16
  @@ -2148,13 +2148,13 @@
   걸인:명:3
   걸작:명:19
   걸작품:명:2
  -걸직하다:형:1
  -걸쭉하다:형:3
  -걸쳐지다:동:6
  -걸출하다:형:5
  -걸치다:동:264
  -걸터앉다:동:23
  -걸터타다:동:1
  +걸직하:형:1
  +걸쭉하:형:3
  +걸쳐지:동:6
  +걸출하:형:5
  +걸치:동:264
  +걸터앉:동:23
  +걸터타:동:1
   걸프:명:20
   걸프전:명:8
   걸핏하면:부:26
  @@ -2162,12 +2162,12 @@
   검:불:3
   검객:명:2
   검거:명:17
  -검거되다:동:7
  +검거되:동:7
   검거망:명:1
  -검거하다:동:8
  +검거하:동:8
   검검청:명:1
   검경:명:9
  -검다:형:143
  +검:형:143
   검댕:명:3
   검도부:명:1
   검둥이:명:3
  @@ -2175,17 +2175,17 @@
   검문:명:48
   검문검색:명:1
   검문소:명:1
  -검문하다:동:1
  +검문하:동:1
   검버섯:명:1
   검부락지:명:2
  -검붉다:형:9
  +검붉:형:9
   검사:명:150
   검사:명:68
   검사공:명:2
   검사기:명:10
   검사대:명:1
   검사물:명:2
  -검사받다:동:2
  +검사받:동:2
   검사법:명:9
   검사비:명:1
   검사소:명:1
  @@ -2194,18 +2194,18 @@
   검사장:명:3
   검사제:명:6
   검사청장:명:1
  -검사하다:동:9
  -검산하다:동:2
  +검사하:동:9
  +검산하:동:2
   검색:명:16
   검색기:명:1
  -검색당하다:동:1
  +검색당하:동:1
   검색대:명:1
   검색원:명:3
  -검색하다:동:8
  -검소하다:형:12
  -검속하다:동:1
  +검색하:동:8
  +검소하:형:12
  +검속하:동:1
   검식관:명:11
  -검실검실하다:형:1
  +검실검실하:형:1
   검역:명:16
   검역소:명:9
   검열:명:2
  @@ -2222,51 +2222,51 @@
   검정고시:명:1
   검정색:명:1
   검정콩:명:5
  -검정하다:동:1
  +검정하:동:1
   검증:명:26
  -검증되다:동:4
  -검증받다:동:2
  -검증하다:동:10
  +검증되:동:4
  +검증받:동:2
  +검증하:동:10
   검지:명:12
   검진:명:9
  -검진하다:동:3
  +검진하:동:3
   검찰:명:243
   검찰권:명:1
   검찰력:명:1
   검찰부:명:1
   검찰청:명:1
   검출:명:1
  -검출되다:동:13
  -검출하다:동:10
  +검출되:동:13
  +검출하:동:10
   검토:명:73
  -검토되다:동:13
  +검토되:동:13
   검토자:명:1
  -검토하다:동:122
  +검토하:동:122
   검투사:명:1
   검표:명:2
  -검푸르다:형:5
  +검푸르:형:5
   겁:명:80
  -겁나다:동:20
  -겁내다:동:9
  +겁나:동:20
  +겁내:동:9
   겁대가리:명:1
  -겁먹다:동:12
  +겁먹:동:12
   겁쟁이:명:5
  -겁주다:동:3
  +겁주:동:3
   겁탈:명:2
  -겁탈당하다:동:3
  -겁탈하다:동:1
  -것:의:25,567
  +겁탈당하:동:3
  +겁탈하:동:1
  +것:의:25567
   것투성이:의:1
  -겅성드뭇하다:형:1
  +겅성드뭇하:형:1
   겅중겅중:부:1
  -겆다:동:1
  +겆:동:1
   겉:명:76
   겉감:명:3
   겉껍질:명:2
   겉넓이:명:1
  -겉늙다:동:1
  -겉다:형:1
  -겉돌다:동:7
  +겉늙:동:1
  +겉:형:1
  +겉돌:동:7
   겉말:명:1
   겉면:명:2
   겉모습:명:10
  @@ -2282,7 +2282,7 @@
   겉쪽:명:2
   겉치레:명:4
   겉치마:명:1
  -겉핥다:동:2
  +겉핥:동:2
   겉흙:명:5
   게:대:7
   게:명:39
  @@ -2300,13 +2300,13 @@
   게스트:명:1
   게슴츠레:부:1
   게시판:명:21
  -게시하다:동:2
  +게시하:동:2
   게양대:명:3
  -게양하다:동:2
  -게으르다:형:10
  +게양하:동:2
  +게으르:형:10
   게으름:명:10
   게으름뱅이:명:3
  -게을러지다:동:1
  +게을러지:동:1
   게을리:부:15
   게이샤:명:1
   게이트:명:6
  @@ -2314,23 +2314,23 @@
   게임계:명:1
   게임광:명:1
   게임기:명:21
  -게임하다:동:1
  -게임화하다:동:2
  +게임하:동:1
  +게임화하:동:2
   게자리:명:1
   게재:명:4
  -게재되다:동:13
  -게재하다:동:9
  +게재되:동:13
  +게재하:동:9
   게좌:명:1
   게터:명:7
   겨:명:3
   겨:불:7
   겨냥:명:5
  -겨냥하다:동:32
  -겨누다:동:3
  +겨냥하:동:32
  +겨누:동:3
   겨드랑:명:3
   겨드랑이:명:23
   겨레:명:33
  -겨루다:동:22
  +겨루:동:22
   겨룸:명:1
   겨를:의:28
   겨우:부:137
  @@ -2354,48 +2354,48 @@
   격:명:12
   격:의:35
   격감:명:2
  -격감되다:동:1
  -격감하다:동:6
  +격감되:동:1
  +격감하:동:6
   격구:명:2
   격년:명:1
   격년제:명:2
   격노:명:1
   격돌:명:5
  -격돌하다:동:3
  +격돌하:동:3
   격동:명:9
   격동기:명:3
  -격동하다:동:1
  +격동하:동:1
   격랑:명:2
   격려:명:21
   격려금:명:5
  -격려받다:동:2
  +격려받:동:2
   격려사:명:1
  -격려하다:동:18
  -격렬하다:형:30
  -격렬해지다:동:2
  +격려하:동:18
  +격렬하:형:30
  +격렬해지:동:2
   격론:명:1
   격류:명:1
   격리:명:6
   격리감:명:2
  -격리되다:동:7
  +격리되:동:7
   격리성:명:1
  -격리시키다:동:2
  -격리하다:동:1
  -격멸하다:동:1
  +격리시키:동:2
  +격리하:동:1
  +격멸하:동:1
   격무:명:2
   격문:명:2
   격변:명:5
   격변기:명:1
  -격분하다:동:3
  +격분하:동:3
   격상:명:1
  -격상되다:동:1
  -격상시키다:동:3
  +격상되:동:1
  +격상시키:동:3
   격세지감:명:2
   격식:명:7
   격식화:명:1
  -격심하다:형:4
  -격심해지다:동:2
  -격앙되다:동:4
  +격심하:형:4
  +격심해지:동:2
  +격앙되:동:4
   격언:명:2
   격월:명:1
   격월간:명:2
  @@ -2407,40 +2407,40 @@
   격정:명:8
   격정적:명:6
   격조:명:2
  -격조하다:동:1
  +격조하:동:1
   격차:명:39
   격찬:명:1
  -격찬받다:동:1
  +격찬받:동:1
   격추:명:1
  -격추되다:동:1
  -격추시키다:동:2
  -격추하다:동:1
  -격침시키다:동:2
  +격추되:동:1
  +격추시키:동:2
  +격추하:동:1
  +격침시키:동:2
   격투:명:3
   격투기:명:1
   격파:명:1
  -격파하다:동:5
  -격하다:형:7
  -격하시키다:동:3
  -격해지다:동:1
  +격파하:동:5
  +격하:형:7
  +격하시키:동:3
  +격해지:동:1
   격화:명:1
  -격화되다:동:7
  -격화시키다:동:1
  -격화하다:동:1
  -겪다:동:264
  -겪어지다:동:1
  +격화되:동:7
  +격화시키:동:1
  +격화하:동:1
  +겪:동:264
  +겪어지:동:1
   견:명:12
   견갑골:명:1
  -견결하다:형:1
  +견결하:형:1
   견고:명:1
  -견고하다:형:8
  +견고하:형:8
   견공:명:3
   견과:명:1
  -견뎌하다:동:1
  -견디다:동:171
  +견뎌하:동:1
  +견디:동:171
   견명:명:1
   견문:명:6
  -견문하다:동:1
  +견문하:동:1
   견물생심:명:1
   견본:명:2
   견본시:명:2
  @@ -2453,37 +2453,37 @@
   견습원:명:13
   견인:명:1
   견인차:명:3
  -견인하다:동:1
  +견인하:동:1
   견장:명:1
   견적:명:5
   견적서:명:1
   견전제:명:1
   견제:명:17
   견제력:명:2
  -견제하다:동:10
  -견주다:동:19
  +견제하:동:10
  +견주:동:19
   견지:명:5
  -견지되다:동:2
  -견지하다:동:22
  +견지되:동:2
  +견지하:동:22
   견직:명:1
   견직물:명:15
   견진:명:2
   견책:명:1
   견포:명:1
   견학:명:12
  -견학시키다:동:2
  -견학하다:동:19
  +견학시키:동:2
  +견학하:동:19
   견해:명:155
   견해차:명:2
  -겯고틀다:동:1
  -겯다:동:1
  +겯고틀:동:1
  +겯:동:1
   결:명:1
   결:명:20
   결:의:4
   결:의:4
   결각:명:1
   결각상:명:1
  -결강하다:동:1
  +결강하:동:1
   결격:명:2
   결계:명:1
   결곤:명:1
  @@ -2497,37 +2497,37 @@
   결과적:명:42
   결국:명:551
   결근:명:3
  -결근하다:동:2
  +결근하:동:2
   결기:명:1
   결단:명:40
  -결단되다:동:1
  +결단되:동:1
   결단력:명:4
   결단코:부:1
  -결단하다:동:2
  +결단하:동:2
   결딴:명:2
  -결딴나다:동:1
  +결딴나:동:1
   결렬:명:8
  -결렬되다:동:6
  +결렬되:동:6
   결례:명:5
   결론:명:150
   결론적:명:9
  -결론짓다:동:11
  -결리다:동:6
  +결론짓:동:11
  +결리:동:6
   결막염:명:1
   결말:명:18
   결말부:명:4
   결박:명:1
   결백:명:3
  -결백하다:형:3
  +결백하:형:3
   결벽:명:1
   결벽증:명:6
   결별:명:4
  -결별하다:동:3
  +결별하:동:3
   결부:명:1
  -결부되다:동:9
  -결부시키다:동:7
  +결부되:동:9
  +결부시키:동:7
   결빙:명:1
  -결빙되다:동:2
  +결빙되:동:2
   결사:명:13
   결사:명:3
   결사문:명:1
  @@ -2535,22 +2535,22 @@
   결사적:명:2
   결산:명:16
   결산서:명:13
  -결산하다:동:1
  +결산하:동:1
   결석:명:7
   결석계:명:1
   결석생:명:1
   결석자:명:1
  -결석하다:동:3
  +결석하:동:3
   결선:명:6
   결성:명:20
  -결성되다:동:11
  +결성되:동:11
   결성식:명:1
  -결성하다:동:16
  +결성하:동:16
   결속:명:5
  -결속되다:동:1
  +결속되:동:1
   결속력:명:2
   결속체:명:1
  -결속하다:동:4
  +결속하:동:4
   결손:명:5
   결손증:명:2
   결승:명:47
  @@ -2559,20 +2559,20 @@
   결승점:명:3
   결식아동:명:2
   결실:명:33
  -결실되다:동:1
  -결실하다:동:1
  +결실되:동:1
  +결실하:동:1
   결심:명:2
   결심:명:39
  -결심하다:동:55
  +결심하:동:55
   결안:명:1
   결여:명:15
  -결여되다:동:18
  +결여되:동:18
   결여론:명:2
   결여론자:명:1
   결여설:명:3
  -결여하다:동:6
  +결여하:동:6
   결연:명:1
  -결연하다:형:6
  +결연하:형:6
   결연히:부:3
   결원:명:1
   결의:명:29
  @@ -2580,60 +2580,60 @@
   결의문:명:14
   결의서:명:1
   결의안:명:6
  -결의하다:동:1
  -결의하다:동:11
  -결의하다:동:7
  +결의하:동:1
  +결의하:동:11
  +결의하:동:7
   결자해지:명:2
   결장:명:3
  -결장하다:동:1
  +결장하:동:1
   결재:명:2
   결재란:명:2
  -결재하다:동:1
  +결재하:동:1
   결전:명:5
   결절점:명:1
   결점:명:9
   결정:명:208
   결정:명:5
   결정권:명:11
  -결정되다:동:110
  +결정되:동:110
   결정력:명:4
   결정론:명:15
   결정론자:명:1
   결정론적:관:3
   결정론적:명:1
   결정문:명:3
  -결정시키다:동:1
  +결정시키:동:1
   결정자:명:1
   결정적:관:23
   결정적:명:75
   결정전:명:17
  -결정지어지다:동:3
  -결정짓다:동:11
  +결정지어지:동:3
  +결정짓:동:11
   결정체:명:1
  -결정하다:동:216
  +결정하:동:216
   결제:명:5
  -결제하다:동:2
  +결제하:동:2
   결집:명:3
   결집력:명:5
   결집체:명:1
   결처:명:1
   결코:부:287
   결탁:명:6
  -결탁하다:동:11
  +결탁하:동:11
   결투:명:1
   결판:명:6
  -결판나다:동:1
  +결판나:동:1
   결핍:명:10
  -결핍되다:동:4
  +결핍되:동:4
   결핍증:명:8
   결함:명:29
   결합:명:45
  -결합되다:동:28
  +결합되:동:28
   결합력:명:1
  -결합시키다:동:12
  -결합하다:동:33
  +결합시키:동:12
  +결합하:동:33
   결항:명:1
  -결항되다:동:1
  +결항되:동:1
   결핵:명:4
   결핵균:명:1
   결핵병:명:1
  @@ -2641,45 +2641,45 @@
   결혼관:명:2
   결혼기념일:명:4
   결혼설:명:1
  -결혼시키다:동:3
  +결혼시키:동:3
   결혼식:명:59
   결혼식장:명:11
  -결혼하다:동:202
  +결혼하:동:202
   겸:의:58
   겸병:명:2
  -겸비하다:동:4
  +겸비하:동:4
   겸사:명:1
   겸상:명:3
  -겸상하다:동:1
  +겸상하:동:1
   겸손:명:13
  -겸손하다:형:19
  +겸손하:형:19
   겸양:명:2
  -겸양하다:동:1
  +겸양하:동:1
   겸업:명:3
  -겸업하다:동:2
  -겸연쩍다:형:6
  -겸연쩍어하다:동:4
  +겸업하:동:2
  +겸연쩍:형:6
  +겸연쩍어하:동:4
   겸용:명:1
   겸용선:명:2
  -겸유하다:동:1
  +겸유하:동:1
   겸임:명:3
  -겸임하다:동:2
  +겸임하:동:2
   겸직:명:3
  -겸하다:동:30
  +겸하:동:30
   겸허:명:4
   겸허감:명:1
  -겸허하다:형:18
  +겸허하:형:18
   겸허히:부:4
   겹:명:23
   겹겹:명:5
   겹겹이:부:13
   겹경사:명:1
  -겹다:형:11
  +겹:형:11
   겹두루마기:명:1
   겹저고리:명:5
   겹집:명:1
  -겹쳐지다:동:13
  -겹치다:동:52
  +겹쳐지:동:13
  +겹치:동:52
   경:명:1
   경:명:1
   경:명:2
  @@ -2690,34 +2690,34 @@
   경각심:명:9
   경감:명:3
   경감:명:4
  -경감되다:동:2
  -경감시키다:동:2
  +경감되:동:2
  +경감시키:동:2
   경개:명:1
   경건:명:1
  -경건하다:형:7
  +경건하:형:7
   경건히:부:1
   경결:명:6
   경계:명:1
   경계:명:20
   경계:명:87
   경계경보:명:1
  -경계되다:동:1
  +경계되:동:1
   경계령:명:1
   경계론:명:1
   경계망:명:1
   경계부:명:1
   경계선:명:20
   경계심:명:4
  -경계하다:동:39
  +경계하:동:39
   경고:명:1
   경고:명:78
   경고문:명:1
  -경고받다:동:1
  +경고받:동:1
   경고성:명:2
  -경고하다:동:31
  +경고하:동:31
   경공업:명:8
   경과:명:18
  -경과하다:동:6
  +경과하:동:6
   경관:명:43
   경관:명:7
   경관화:명:1
  @@ -2731,8 +2731,8 @@
   경기력:명:3
   경기상:명:1
   경기장:명:55
  -경기하다:동:3
  -경기화되다:동:2
  +경기하:동:3
  +경기화되:동:2
   경난꾼:명:1
   경내:명:21
   경단:명:7
  @@ -2741,12 +2741,12 @@
   경도:명:1
   경도:명:2
   경도:명:3
  -경도되다:동:1
  +경도되:동:1
   경도력:명:1
   경동:명:1
   경락:명:3
   경락:명:5
  -경락받다:동:1
  +경락받:동:1
   경량화:명:2
   경력:명:54
   경력자:명:2
  @@ -2754,7 +2754,7 @@
   경련성:명:4
   경례:감:1
   경례:명:19
  -경례하다:동:2
  +경례하:동:2
   경로:명:1
   경로:명:51
   경로당:명:3
  @@ -2778,18 +2778,18 @@
   경매제:명:6
   경면:명:1
   경멸:명:7
  -경멸스럽다:형:1
  +경멸스럽:형:1
   경멸적:명:1
  -경멸하다:동:9
  +경멸하:동:9
   경무과장:명:1
   경물:명:2
   경미:명:3
  -경미하다:형:7
  +경미하:형:7
   경박단소:명:1
  -경박스럽다:형:1
  -경박하다:형:5
  +경박스럽:형:1
  +경박하:형:5
   경배:명:2
  -경배하다:동:3
  +경배하:동:3
   경변:명:3
   경보:명:14
   경보기:명:6
  @@ -2804,15 +2804,15 @@
   경비병:명:3
   경비실:명:6
   경비원:명:8
  -경비하다:동:3
  +경비하:동:3
   경비행기:명:4
   경사:명:13
   경사:명:2
   경사:명:6
   경사:명:9
   경사로:명:2
  -경사스럽다:형:3
  -경사지다:동:4
  +경사스럽:형:3
  +경사지:동:4
   경상:명:1
   경상:명:4
   경상계:명:1
  @@ -2821,11 +2821,11 @@
   경상자:명:1
   경상차:명:2
   경색:명:6
  -경색되다:동:2
  +경색되:동:2
   경선:명:11
   경선론자:명:1
   경선자:명:1
  -경솔하다:형:3
  +경솔하:형:3
   경솔히:부:1
   경수:명:1
   경수로:명:17
  @@ -2834,11 +2834,11 @@
   경승:명:1
   경시:명:13
   경시:명:2
  -경시되다:동:1
  -경시하다:동:4
  -경신하다:동:2
  +경시되:동:1
  +경시하:동:4
  +경신하:동:2
   경악:명:7
  -경악하다:동:9
  +경악하:동:9
   경애:명:1
   경양식:명:4
   경어:명:1
  @@ -2849,22 +2849,22 @@
   경영권:명:13
   경영난:명:5
   경영대:명:2
  -경영되다:동:2
  +경영되:동:2
   경영론:명:1
   경영인:명:13
   경영자:명:16
   경영주:명:2
   경영진:명:11
   경영체:명:1
  -경영하다:동:25
  +경영하:동:25
   경영학:명:9
   경영학과:명:18
   경외:명:1
   경외감:명:1
  -경외하다:동:1
  +경외하:동:1
   경용:명:1
  -경우:명:1,976
  -경원하다:동:1
  +경우:명:1976
  +경원하:동:1
   경위:명:1
   경위:명:2
   경위:명:23
  @@ -2872,19 +2872,19 @@
   경유:명:1
   경유:명:2
   경유지:명:1
  -경유하다:동:7
  +경유하:동:7
   경음악:명:1
   경의:명:7
   경이:명:1
   경이감:명:1
  -경이롭다:형:6
  +경이롭:형:6
   경이적:관:1
   경이적:명:3
   경작:명:5
   경작권:명:1
   경작자:명:10
   경작지:명:8
  -경작하다:동:9
  +경작하:동:9
   경장:명:30
   경쟁:명:284
   경쟁국:명:1
  @@ -2892,18 +2892,18 @@
   경쟁력:명:95
   경쟁률:명:16
   경쟁사:명:24
  -경쟁시키다:동:1
  +경쟁시키:동:1
   경쟁심:명:4
   경쟁의식:명:2
   경쟁자:명:20
   경쟁적:관:3
   경쟁적:명:20
  -경쟁하다:동:26
  +경쟁하:동:26
   경적:명:7
   경전:명:39
   경전철:명:5
   경전투:명:1
  -경정하다:동:1
  +경정하:동:1
   경제:명:1
   경제:명:956
   경제계:명:14
  @@ -2930,7 +2930,7 @@
   경제적:명:86
   경제주의:명:3
   경제특구:명:10
  -경제하다:동:1
  +경제하:동:1
   경제학:명:31
   경제학계:명:1
   경제학과:명:6
  @@ -2943,17 +2943,17 @@
   경좌차:명:2
   경주:명:10
   경주장:명:1
  -경주하다:동:1
  +경주하:동:1
   경중:명:1
   경지:명:12
   경지:명:54
   경지율:명:1
  -경직되다:동:17
  +경직되:동:17
   경직성:명:7
   경진:명:4
   경질:명:3
  -경질되다:동:2
  -경질하다:동:1
  +경질되:동:2
  +경질하:동:1
   경차:명:1
   경찰:명:343
   경찰관:명:92
  @@ -2967,17 +2967,17 @@
   경창:명:1
   경책:명:1
   경청:명:5
  -경청하다:동:12
  +경청하:동:12
   경추:명:4
   경축:명:1
   경치:명:33
  -경치다:동:3
  +경치:동:3
   경칩:명:2
  -경쾌하다:형:25
  -경쾌해지다:동:1
  +경쾌하:형:25
  +경쾌해지:동:1
   경탄:명:3
  -경탄스럽다:형:1
  -경탄하다:동:1
  +경탄스럽:형:1
  +경탄하:동:1
   경편:명:1
   경품:명:3
   경품부:명:1
  @@ -2988,15 +2988,15 @@
   경향극:명:4
   경험:명:362
   경험담:명:5
  -경험되다:동:2
  +경험되:동:2
   경험률:명:2
  -경험시키다:동:1
  +경험시키:동:1
   경험자:명:3
   경험적:관:23
   경험적:명:9
   경험주의적:명:1
   경험칙:명:1
  -경험하다:동:100
  +경험하:동:100
   경혈:명:1
   경협:명:13
   경호:명:19
  @@ -3005,10 +3005,10 @@
   경호실장:명:15
   경호원:명:17
   경호처장:명:1
  -경호하다:동:1
  +경호하:동:1
   경화:명:1
   경화:명:3
  -경화시키다:동:1
  +경화시키:동:1
   경화증:명:2
   경황:명:3
   경황:명:4
  @@ -3017,9 +3017,9 @@
   곁길:명:4
   곁눈:명:1
   곁눈질:명:5
  -곁눈질하다:동:1
  -곁들여지다:동:7
  -곁들이다:동:60
  +곁눈질하:동:1
  +곁들여지:동:7
  +곁들이:동:60
   계:명:1
   계:명:1
   계:명:1
  @@ -3027,7 +3027,7 @@
   계:명:15
   계간:명:3
   계고:명:2
  -계고받다:동:1
  +계고받:동:1
   계고장:명:2
   계곡:명:84
   계급:명:306
  @@ -3042,14 +3042,14 @@
   계기성:명:1
   계기적:관:3
   계기적:명:4
  -계기하다:동:1
  +계기하:동:1
   계단:명:98
   계단식:명:4
   계단투성이:명:1
   계도:명:1
  -계도시키다:동:1
  +계도시키:동:1
   계도적:관:1
  -계도하다:동:2
  +계도하:동:2
   계란:명:24
   계란말이:명:1
   계란형:명:1
  @@ -3058,64 +3058,64 @@
   계량기:명:1
   계량스푼:명:1
   계량컵:명:2
  -계량하다:동:1
  +계량하:동:1
   계류:명:1
   계류:명:7
   계류형:명:1
   계면조:명:1
  -계면쩍다:형:3
  -계면쩍어하다:동:1
  +계면쩍:형:3
  +계면쩍어하:동:1
   계명:명:1
   계모:명:4
   계몽:명:24
  -계몽되다:동:1
  +계몽되:동:1
   계몽사상:명:8
   계몽사상가:명:3
  -계몽시키다:동:2
  +계몽시키:동:2
   계몽주의:명:8
   계몽주의자:명:1
   계몽주의적:명:1
  -계몽하다:동:5
  +계몽하:동:5
   계박:명:1
   계발:명:3
  -계발되다:동:4
  -계발하다:동:10
  +계발되:동:4
  +계발하:동:10
   계보:명:10
   계산:명:121
   계산기:명:59
   계산대:명:7
  -계산되다:동:17
  +계산되:동:17
   계산서:명:3
   계산소:명:2
   계산소장:명:1
   계산적:명:1
   계산표:명:1
  -계산하다:동:71
  +계산하:동:71
   계상:명:1
   계상:명:2
  -계상하다:동:1
  +계상하:동:1
   계서적:관:2
   계서적:명:5
  -계서화하다:동:1
  +계서화하:동:1
   계속:명:10
   계속:부:488
  -계속되다:동:210
  -계속시키다:동:1
  +계속되:동:210
  +계속시키:동:1
   계속적:명:15
  -계속하다:동:1
  -계속하다:동:199
  +계속하:동:1
  +계속하:동:199
   계수:명:1
   계수기:명:1
   계수배:명:1
   계승:명:30
   계승권:명:4
  -계승되다:동:9
  -계승시키다:동:2
  +계승되:동:9
  +계승시키:동:2
   계승자:명:2
   계승적:명:1
  -계승하다:동:30
  +계승하:동:30
   계시:명:4
  -계시다:동:197
  +계시:동:197
   계시다:보:159
   계약:명:91
   계약고:명:2
  @@ -3123,7 +3123,7 @@
   계약서:명:3
   계약자:명:4
   계약제:명:1
  -계약하다:동:5
  +계약하:동:5
   계엄:명:10
   계엄군:명:3
   계엄령:명:10
  @@ -3131,7 +3131,7 @@
   계열사:명:42
   계열형:명:1
   계열화:명:1
  -계열화되다:동:1
  +계열화되:동:1
   계원:명:8
   계위:명:1
   계유년:명:1
  @@ -3162,8 +3162,8 @@
   계층론:명:1
   계층적:관:4
   계층화:명:2
  -계층화되다:동:2
  -계층화하다:동:2
  +계층화되:동:2
  +계층화하:동:2
   계통:명:33
   계파:명:21
   계파적:관:1
  @@ -3172,7 +3172,7 @@
   계회:명:2
   계획:명:490
   계획과:명:1
  -계획되다:동:11
  +계획되:동:11
   계획서:명:3
   계획성:명:1
   계획안:명:2
  @@ -3181,7 +3181,7 @@
   계획적:명:11
   계획지:명:1
   계획표:명:11
  -계획하다:동:38
  +계획하:동:38
   계획학:명:1
   곗돈:명:4
   고:관:14
  @@ -3197,8 +3197,8 @@
   고가품:명:2
   고가화:명:1
   고갈:명:7
  -고갈되다:동:4
  -고갈시키다:동:2
  +고갈되:동:4
  +고갈시키:동:2
   고감도:명:3
   고강도:명:3
   고개:명:30
  @@ -3208,15 +3208,15 @@
   고갯길:명:9
   고갯마루:명:5
   고갯짓:명:3
  -고갯짓하다:동:1
  +고갯짓하:동:1
   고거:대:13
   고것:대:5
   고견:명:2
  -고결하다:형:8
  +고결하:형:8
   고경:명:1
   고고:명:2
   고고:명:5
  -고고하다:형:6
  +고고하:형:6
   고고학:명:10
   고고학계:명:1
   고고학자:명:4
  @@ -3234,20 +3234,20 @@
   고국:명:17
   고군분투:명:1
   고궁:명:12
  -고귀하다:형:19
  +고귀하:형:19
   고금:명:2
   고금동서:명:1
   고금리:명:5
   고급:명:114
   고급문화:명:20
   고급반:명:1
  -고급스럽다:형:19
  +고급스럽:형:19
   고급적:명:1
   고급품:명:2
  -고급하다:형:1
  +고급하:형:1
   고급화:명:5
  -고급화되다:동:1
  -고급화시키다:동:1
  +고급화되:동:1
  +고급화시키:동:1
   고기:대:1
   고기:명:213
   고기능:명:3
  @@ -3264,23 +3264,23 @@
   고깃덩어리:명:1
   고깃덩이:명:2
   고깃배:명:1
  -고깝다:형:1
  -고꾸라지다:동:8
  +고깝:형:1
  +고꾸라지:동:8
   고난:명:20
   고난도:명:2
  -고난받다:동:1
  +고난받:동:1
   고년:대:1
   고놈:대:1
   고뇌:명:34
  -고뇌하다:동:9
  +고뇌하:동:9
   고니오톡신:명:1
  -고다:동:8
  +고:동:8
   고단백:명:1
   고단백질:명:1
   고단수:명:1
  -고단하다:형:10
  -고달파하다:동:1
  -고달프다:형:18
  +고단하:형:10
  +고달파하:동:1
  +고달프:형:18
   고답적:관:2
   고답적:명:2
   고대:명:352
  @@ -3291,20 +3291,20 @@
   고대인:명:8
   고대적:관:3
   고대적:명:8
  -고대하다:동:10
  +고대하:동:10
   고도:명:1
   고도:명:3
   고도:명:66
   고도화:명:1
   고독:명:24
   고독감:명:4
  -고독하다:형:13
  -고독해지다:동:3
  +고독하:형:13
  +고독해지:동:3
   고동:명:1
   고동:명:2
   고동색:명:3
  -고동치다:동:1
  -고되다:형:21
  +고동치:동:1
  +고되:형:21
   고두밥:명:1
   고두배:명:1
   고둥:명:1
  @@ -3335,58 +3335,58 @@
   고랭지:명:5
   고량:명:2
   고런:관:9
  -고렇다:형:4
  +고렇:형:4
   고려:명:19
  -고려되다:동:13
  -고려되어지다:동:1
  +고려되:동:13
  +고려되어지:동:1
   고려자기:명:1
   고려장:명:2
   고려조:명:4
   고려청자:명:5
  -고려하다:동:153
  -고려하다:동:3
  +고려하:동:153
  +고려하:동:3
   고령:명:8
   고령자:명:1
   고령지:명:1
   고령층:명:1
   고령토:명:1
   고령화:명:1
  -고령화되다:동:1
  +고령화되:동:1
   고로:접:5
   고로쇠나무:명:1
   고료:명:1
   고루:부:30
   고루고루:부:5
  -고루하다:형:4
  -고르다:동:11
  -고르다:동:152
  -고르다:형:35
  +고루하:형:4
  +고르:동:11
  +고르:동:152
  +고르:형:35
   고름:명:3
   고름:명:3
   고름증:명:1
   고리:명:31
  -고리고리하다:형:1
  -고리타분하다:형:1
  +고리고리하:형:1
  +고리타분하:형:1
   고릴라:명:1
   고립:명:7
   고립감:명:4
  -고립되다:동:14
  -고립무원해지다:동:1
  +고립되:동:14
  +고립무원해지:동:1
   고립성:명:1
  -고립시키다:동:3
  +고립시키:동:3
   고립주의:명:1
   고립화:명:4
   고마움:명:14
  -고마워하다:동:8
  +고마워하:동:8
   고막:명:10
   고만:부:7
  -고만고만하다:형:3
  -고만두다:동:1
  -고맙다:형:259
  -고매하다:형:5
  +고만고만하:형:3
  +고만두:동:1
  +고맙:형:259
  +고매하:형:5
   고명:명:3
   고명딸:명:3
  -고명해지다:동:1
  +고명해지:동:1
   고모:명:119
   고모님:명:2
   고모부:명:18
  @@ -3398,7 +3398,7 @@
   고무공:명:1
   고무나무:명:1
   고무도장:명:1
  -고무되다:동:5
  +고무되:동:5
   고무바퀴:명:1
   고무신:명:15
   고무신점:명:1
  @@ -3408,38 +3408,38 @@
   고무줄놀이:명:4
   고무총:명:3
   고무풍선:명:7
  -고무하다:동:2
  +고무하:동:2
   고문:명:13
   고문:명:44
   고문관:명:5
  -고문당하다:동:2
  +고문당하:동:2
   고문자:명:1
  -고문하다:동:3
  +고문하:동:3
   고물:명:1
   고물:명:6
   고물가:명:3
  -고물고물하다:동:1
  +고물고물하:동:1
   고물류:명:1
   고물상:명:8
   고민:명:128
   고민거리:명:4
   고민녀:명:1
  -고민되다:동:1
  -고민하다:동:66
  +고민되:동:1
  +고민하:동:66
   고밀도:명:2
   고발:명:53
  -고발되다:동:5
  +고발되:동:5
   고발인:명:10
   고발자:명:1
   고발장:명:6
  -고발하다:동:24
  +고발하:동:24
   고배:명:1
   고백:명:26
   고백적:명:1
  -고백하다:동:29
  +고백하:동:29
   고법:명:9
   고변:명:2
  -고변하다:동:1
  +고변하:동:1
   고별:명:2
   고별사:명:1
   고보:명:1
  @@ -3468,25 +3468,25 @@
   고사포:명:2
   고사포병:명:2
   고사하고:부:15
  -고사하다:동:2
  -고사하다:동:4
  +고사하:동:2
  +고사하:동:4
   고산:명:5
   고산대:명:1
   고상짜:명:1
  -고상하다:형:18
  +고상하:형:18
   고샅:명:1
   고샅길:명:1
  -고색창연하다:형:3
  +고색창연하:형:3
   고생:명:114
  -고생고생하다:동:1
  +고생고생하:동:1
   고생길:명:1
   고생대:명:1
   고생물학자:명:1
   고생물학적:명:1
   고생바가지:명:2
  -고생스럽다:형:3
  -고생시키다:동:2
  -고생하다:동:67
  +고생스럽:형:3
  +고생시키:동:2
  +고생하:동:67
   고서:명:3
   고성:명:1
   고성능:명:7
  @@ -3499,9 +3499,9 @@
   고소인:명:10
   고소자:명:1
   고소장:명:1
  -고소하다:동:1
  -고소하다:동:12
  -고소하다:형:19
  +고소하:동:1
  +고소하:동:12
  +고소하:형:19
   고속:명:1
   고속:명:28
   고속도:명:1
  @@ -3515,69 +3515,69 @@
   고수:명:9
   고수머리:명:2
   고수부지:명:8
  -고수시키다:동:1
  +고수시키:동:1
   고수익:명:3
  -고수하다:동:37
  +고수하:동:37
   고순도:명:1
   고스란히:부:28
   고스톱:명:2
   고스트:명:1
  -고슬고슬하다:형:1
  +고슬고슬하:형:1
   고슴도치:명:2
   고승:명:33
   고시:명:16
   고시:명:2
   고시:명:2
  -고시되다:동:1
  +고시되:동:1
   고시생:명:2
   고시원:명:1
   고시율:명:1
  -고시하다:동:3
  +고시하:동:3
   고식적:명:4
   고심:명:8
  -고심하다:동:21
  +고심하:동:21
   고싱아:명:1
   고싸움:명:1
   고아:명:11
   고아원:명:8
   고아적:관:1
   고안:명:2
  -고안되다:동:6
  -고안하다:동:13
  +고안되:동:6
  +고안하:동:13
   고압:명:2
   고압선:명:5
   고압적:관:2
   고압적:명:1
   고액:명:6
  -고약하다:형:14
  +고약하:형:14
   고얀:관:2
   고양:명:7
   고양감:명:1
  -고양되다:동:7
  -고양시키다:동:9
  +고양되:동:7
  +고양시키:동:9
   고양이:명:110
  -고양하다:동:3
  +고양하:동:3
   고양화:명:3
   고어:명:1
   고에너지:명:1
   고역:명:9
  -고역스럽다:형:1
  +고역스럽:형:1
   고열:명:7
   고엽제:명:4
   고영양식:명:1
   고온:명:8
   고왕:명:1
   고요:명:8
  -고요하다:형:51
  -고요해지다:동:4
  +고요하:형:51
  +고요해지:동:4
   고요히:부:8
   고용:명:21
   고용:명:27
  -고용되다:동:4
  +고용되:동:4
   고용인:명:2
   고용자:명:1
   고용주:명:4
  -고용하다:동:17
  +고용하:동:17
   고원:명:7
   고위:명:74
   고위급:명:11
  @@ -3589,7 +3589,7 @@
   고유성:명:3
   고유어:명:2
   고유종:명:5
  -고유하다:형:37
  +고유하:형:37
   고육지책:명:1
   고육책:명:3
   고율:명:6
  @@ -3602,7 +3602,7 @@
   고의적:관:1
   고의적:명:12
   고이:부:9
  -고이다:동:26
  +고이:동:26
   고인:명:1
   고인:명:14
   고인돌:명:2
  @@ -3614,7 +3614,7 @@
   고입:명:10
   고자세:명:1
   고자질:명:4
  -고자질하다:동:3
  +고자질하:동:3
   고작:부:64
   고장:명:154
   고장:명:55
  @@ -3623,7 +3623,7 @@
   고적:명:2
   고적감:명:3
   고적지:명:1
  -고적하다:동:2
  +고적하:동:2
   고전:명:77
   고전:명:8
   고전극:명:4
  @@ -3636,35 +3636,35 @@
   고전주의자:명:3
   고전주의적:관:7
   고전주의적:명:4
  -고전하다:동:4
  +고전하:동:4
   고전학파:명:1
   고정:명:13
   고정간첩:명:2
   고정관념:명:35
  -고정급화되다:동:1
  -고정되다:동:39
  +고정급화되:동:1
  +고정되:동:39
   고정밀도:명:1
   고정불변:명:2
  -고정불변하다:형:2
  +고정불변하:형:2
   고정선:명:3
  -고정시키다:동:17
  +고정시키:동:17
   고정적:명:3
  -고정하다:동:1
  -고정하다:동:7
  +고정하:동:1
  +고정하:동:7
   고정화:명:1
   고조:명:5
   고조:명:7
  -고조되다:동:27
  -고조시키다:동:7
  +고조되:동:27
  +고조시키:동:7
   고졸:명:15
   고종:명:2
   고종명:명:1
   고주망태:명:1
   고준위:명:1
   고즈넉이:부:2
  -고즈넉하다:형:6
  +고즈넉하:형:6
   고증:명:3
  -고증하다:동:4
  +고증하:동:4
   고증학적:명:1
   고지:명:1
   고지:명:2
  @@ -3672,44 +3672,44 @@
   고지:명:6
   고지가:명:2
   고지대:명:3
  -고지되다:동:1
  +고지되:동:1
   고지방질:명:1
   고지서:명:5
   고지식:명:1
  -고지식하다:형:8
  -고지하다:동:2
  +고지식하:형:8
  +고지하:동:2
   고지혈증:명:2
   고질:명:3
  -고질스럽다:형:1
  +고질스럽:형:1
   고질적:관:3
   고질적:명:15
  -고질화되다:동:1
  +고질화되:동:1
   고집:명:34
   고집멸도:명:1
   고집불통:명:2
  -고집스럽다:형:6
  +고집스럽:형:6
   고집스레:부:1
   고집쟁이:명:1
  -고집하다:동:49
  +고집하:동:49
   고집형:명:1
   고차원:명:2
   고차원적:관:1
   고차원적:명:1
   고차적:명:1
   고착:명:2
  -고착되다:동:2
  -고착시키다:동:1
  +고착되:동:2
  +고착시키:동:1
   고찰:명:24
  -고찰되다:동:3
  -고찰하다:동:19
  +고찰되:동:3
  +고찰하:동:19
   고참:명:11
   고창:명:1
   고창기:명:1
  -고창되다:동:1
  +고창되:동:1
   고철:명:12
   고체:명:7
  -고쳐먹다:동:5
  -고쳐지다:동:13
  +고쳐먹:동:5
  +고쳐지:동:13
   고초:명:6
   고초일:명:2
   고촉:명:1
  @@ -3725,24 +3725,24 @@
   고출력:명:1
   고춧가루:명:15
   고충:명:18
  -고취시키다:동:3
  -고취하다:동:1
  +고취시키:동:3
  +고취하:동:1
   고층:명:17
  -고치다:동:151
  +고치:동:151
   고칼슘:명:2
   고탄수화물:명:1
   고통:명:225
  -고통받다:동:14
  -고통스러워하다:동:2
  -고통스럽다:형:54
  +고통받:동:14
  +고통스러워하:동:2
  +고통스럽:형:54
   고투:명:1
  -고파지다:동:1
  +고파지:동:1
   고품위:명:1
   고품질:명:9
  -고풍스럽다:형:2
  -고프다:형:30
  +고풍스럽:형:2
  +고프:형:30
   고하:명:5
  -고하다:동:11
  +고하:동:11
   고학:명:1
   고학년:명:3
   고학력:명:7
  @@ -3751,7 +3751,7 @@
   고함:명:46
   고해:명:3
   고해:명:4
  -고해바치다:동:1
  +고해바치:동:1
   고해상도:명:1
   고행:명:8
   고향:명:356
  @@ -3784,30 +3784,30 @@
   곡절:명:2
   곡조:명:4
   곡창:명:5
  -곡하다:동:1
  -곡해되다:동:1
  -곡해하다:동:1
  +곡하:동:1
  +곡해되:동:1
  +곡해하:동:1
   곤경:명:12
  -곤고하다:형:3
  +곤고하:형:3
   곤곤히:부:1
   곤궁:명:2
   곤두박질:명:2
  -곤두박질치다:동:5
  -곤두박질하다:동:2
  -곤두서다:동:6
  -곤두세우다:동:22
  +곤두박질치:동:5
  +곤두박질하:동:2
  +곤두서:동:6
  +곤두세우:동:22
   곤드레만드레:부:2
   곤란:명:12
   곤란성:명:1
  -곤란하다:형:54
  -곤란해지다:동:7
  +곤란하:형:54
  +곤란해지:동:7
   곤로:명:2
   곤룡포:명:1
   곤봉:명:27
   곤비:명:1
   곤색:명:11
   곤욕:명:10
  -곤욕스럽다:형:1
  +곤욕스럽:형:1
   곤장:명:3
   곤조통:명:1
   곤죽:명:1
  @@ -3816,25 +3816,25 @@
   곤지곤지:명:1
   곤충:명:16
   곤충학자:명:1
  -곤핍하다:형:1
  -곤하다:형:2
  +곤핍하:형:1
  +곤하:형:2
   곤혹:명:2
  -곤혹스러워하다:동:4
  -곤혹스럽다:형:20
  +곤혹스러워하:동:4
  +곤혹스럽:형:20
   곤히:부:4
   곧:접:623
  -곧다:형:28
  +곧:형:28
   곧바로:부:63
   곧은길:명:1
   곧이곧대로:부:10
  -곧이듣기다:동:1
  -곧이듣다:동:1
  +곧이듣기:동:1
  +곧이듣:동:1
   곧이어:부:17
   곧잘:부:49
   곧장:부:39
   곧추:부:1
  -곧추서다:동:1
  -곧추세우다:동:1
  +곧추서:동:1
  +곧추세우:동:1
   골:명:1
   골:명:1
   골:명:15
  @@ -3844,9 +3844,9 @@
   골격:명:19
   골격계:명:1
   골고루:부:45
  -골나다:동:1
  +골나:동:1
   골네트:명:2
  -골다:동:23
  +골:동:23
   골다공증:명:3
   골대:명:7
   골동:명:1
  @@ -3858,11 +3858,11 @@
   골드펄:명:1
   골든글러브:명:4
   골든아워:명:1
  -골똘하다:형:1
  +골똘하:형:1
   골똘히:부:8
  -골라내다:동:8
  -골라잡다:동:1
  -골리다:동:2
  +골라내:동:8
  +골라잡:동:1
  +골리:동:2
   골마루:명:1
   골마지:명:1
   골막:명:1
  @@ -3872,7 +3872,7 @@
   골목길:명:22
   골목집:명:3
   골몰:명:1
  -골몰하다:동:7
  +골몰하:동:7
   골문:명:12
   골반:명:16
   골방:명:7
  @@ -3883,9 +3883,9 @@
   골샌님:명:1
   골속:명:1
   골수:명:5
  -골싸다:동:1
  +골싸:동:1
   골인:명:11
  -골인하다:동:4
  +골인하:동:4
   골자:명:12
   골잡이:명:7
   골재:명:2
  @@ -3916,17 +3916,17 @@
   골프용품:명:1
   골프장:명:29
   골프채:명:1
  -곪다:동:5
  +곪:동:5
   곬:명:1
  -곯다:동:2
  -곯아떨어지다:동:5
  +곯:동:2
  +곯아떨어지:동:5
   곰:명:40
   곰곰:부:6
   곰곰이:부:19
   곰돌이:명:1
   곰방대:명:3
   곰보:명:3
  -곰살궂다:형:2
  +곰살궂:형:2
   곰장어:명:1
   곰지락곰지락:부:1
   곰탕:명:2
  @@ -3934,22 +3934,22 @@
   곰팡이:명:8
   곰팡이균:명:2
   곱:명:4
  -곱다:형:1
  -곱다:형:173
  -곱디곱다:형:2
  +곱:형:1
  +곱:형:173
  +곱디곱:형:2
   곱빼기:명:1
   곱사등이:명:4
  -곱상하다:형:3
  +곱상하:형:3
   곱셈:명:7
  -곱송그리다:동:1
  -곱씹다:동:12
  +곱송그리:동:1
  +곱씹:동:12
   곱자:명:9
   곱절:명:5
  -곱접다:동:1
  +곱접:동:1
   곱창:명:1
   곱창전골:명:5
  -곱하다:동:4
  -곳:명:1,354
  +곱하:동:4
  +곳:명:1354
   곳간:명:6
   곳곳:명:82
   곳곳이:부:2
  @@ -3969,52 +3969,52 @@
   공간적:명:2
   공갈:명:7
   공갈단:명:1
  -공갈치다:동:2
  +공갈치:동:2
   공감:명:27
   공감대:명:18
  -공감하다:동:27
  +공감하:동:27
   공강:명:4
   공개:명:172
   공개강좌:명:1
   공개경쟁:명:1
   공개념:명:8
   공개도:명:1
  -공개되다:동:31
  +공개되:동:31
   공개론자:명:1
   공개리:명:1
   공개적:관:1
   공개적:명:17
  -공개하다:동:78
  -공개화되다:동:1
  +공개하:동:78
  +공개화되:동:1
   공격:명:110
   공격력:명:3
  -공격받다:동:2
  +공격받:동:2
   공격성:명:11
   공격수:명:9
   공격자:명:1
   공격적:관:3
   공격적:명:12
  -공격하다:동:46
  +공격하:동:46
   공격형:명:9
   공경:명:15
  -공경되다:동:2
  -공경스럽다:형:1
  -공경하다:동:32
  +공경되:동:2
  +공경스럽:형:1
  +공경하:동:32
   공계:명:1
   공고:명:15
   공고:명:2
  -공고되다:동:1
  +공고되:동:1
   공고일:명:2
  -공고하다:동:1
  -공고하다:형:4
  -공고해지다:동:1
  +공고하:동:1
  +공고하:형:4
  +공고해지:동:1
   공고히:부:3
   공공:명:47
   공공건물:명:2
   공공복리:명:1
   공공성:명:4
   공공시설:명:5
  -공공연하다:형:16
  +공공연하:형:16
   공공연히:부:13
   공공요금:명:4
   공공용:명:1
  @@ -4028,7 +4028,7 @@
   공과금:명:1
   공관:명:16
   공관원:명:1
  -공교롭다:형:17
  +공교롭:형:17
   공교육:명:2
   공교육비:명:2
   공구:명:20
  @@ -4040,19 +4040,19 @@
   공급관:명:5
   공급기:명:1
   공급난:명:1
  -공급되다:동:11
  +공급되:동:11
   공급량:명:3
  -공급받다:동:4
  +공급받:동:4
   공급분:명:1
   공급원:명:3
   공급자:명:3
   공급책:명:1
  -공급하다:동:52
  +공급하:동:52
   공기:명:159
   공기:명:17
   공기:명:4
   공기놀이:명:1
  -공기놀이하다:동:1
  +공기놀이하:동:1
   공기업:명:17
   공기업적:관:1
   공기업체:명:2
  @@ -4085,22 +4085,22 @@
   공동체원:명:1
   공동체적:관:20
   공동체적:명:13
  -공동체화하다:동:1
  +공동체화하:동:1
   공동화:명:6
  -공들다:동:2
  -공들이다:동:4
  +공들:동:2
  +공들이:동:4
   공람:명:1
  -공람하다:동:1
  +공람하:동:1
   공략:명:1
   공략:명:10
  -공략하다:동:12
  +공략하:동:12
   공력:명:1
   공로:명:12
   공론:명:1
   공론:명:1
   공론화:명:1
  -공론화되다:동:1
  -공론화하다:동:1
  +공론화되:동:1
  +공론화하:동:1
   공룡:명:7
   공리:명:1
   공리:명:1
  @@ -4112,27 +4112,27 @@
   공명:명:2
   공명:명:7
   공명선거:명:23
  -공명정대하다:형:3
  +공명정대하:형:3
   공명정대히:부:1
  -공명하다:동:1
  -공명하다:동:3
  -공명하다:형:3
  +공명하:동:1
  +공명하:동:3
  +공명하:형:3
   공모:명:16
   공모:명:4
   공모전:명:3
   공모주:명:5
  -공모하다:동:3
  -공모하다:동:4
  +공모하:동:3
  +공모하:동:4
   공무:명:26
   공무원:명:118
   공무원제:명:1
   공문:명:16
   공문서:명:4
   공문서식:명:1
  -공문화되다:동:1
  +공문화되:동:1
   공물:명:1
   공민:명:1
  -공박하다:동:1
  +공박하:동:1
   공방:명:11
   공방전:명:6
   공백:명:16
  @@ -4153,11 +4153,11 @@
   공복감:명:1
   공부:명:423
   공부:명:5
  -공부되다:동:1
  +공부되:동:1
   공부반:명:1
   공부방:명:8
  -공부시키다:동:11
  -공부하다:동:273
  +공부시키:동:11
  +공부하:동:273
   공분:명:3
   공붓벌레:명:2
   공비:명:34
  @@ -4171,7 +4171,7 @@
   공사장:명:27
   공사채형:명:1
   공사판:명:3
  -공사하다:동:4
  +공사하:동:4
   공산:명:21
   공산:명:6
   공산군:명:1
  @@ -4183,13 +4183,13 @@
   공산주의자:명:8
   공산품:명:17
   공산화:명:1
  -공산화되다:동:2
  +공산화되:동:2
   공상:명:16
   공상적:관:2
  -공상하다:동:1
  +공상하:동:1
   공생:명:16
   공생균:명:1
  -공생하다:동:4
  +공생하:동:4
   공석:명:1
   공석:명:1
   공선:명:2
  @@ -4198,10 +4198,10 @@
   공세:명:35
   공세식:명:1
   공세형:명:1
  -공세화하다:동:1
  +공세화하:동:1
   공소:명:15
   공소장:명:1
  -공손하다:형:20
  +공손하:형:20
   공손히:부:11
   공수:명:1
   공수:명:1
  @@ -4211,16 +4211,16 @@
   공수래공수거:명:1
   공수배:명:1
   공수복:명:1
  -공수하다:동:2
  +공수하:동:2
   공수형:명:1
   공순이:명:1
   공술:명:1
   공습:명:6
   공습경보:명:3
  -공습하다:동:1
  +공습하:동:1
   공시:명:1
   공시:명:13
  -공시되다:동:1
  +공시되:동:1
   공시적:명:2
   공식:명:1
   공식:명:1
  @@ -4229,7 +4229,7 @@
   공식적:명:44
   공식형:명:1
   공식화:명:2
  -공식화하다:동:3
  +공식화하:동:3
   공신:명:10
   공신력:명:6
   공심돈:명:1
  @@ -4238,12 +4238,12 @@
   공약:명:1
   공약:명:73
   공약수:명:1
  -공약하다:동:6
  +공약하:동:6
   공양:명:2
   공양목:명:1
   공양사:명:1
   공언:명:4
  -공언하다:동:19
  +공언하:동:19
   공업:명:209
   공업계:명:1
   공업국:명:9
  @@ -4255,28 +4255,28 @@
   공업품:명:1
   공업학교:명:1
   공업화:명:1
  -공업화되다:동:1
  +공업화되:동:1
   공여:명:6
  -공여되다:동:1
  -공여하다:동:1
  +공여되:동:1
  +공여하:동:1
   공역:명:1
   공역:명:2
   공연:명:211
   공연단:명:4
  -공연되다:동:16
  +공연되:동:16
   공연물:명:1
   공연성:명:1
   공연장:명:38
  -공연하다:동:14
  -공연하다:동:2
  -공연하다:형:2
  -공연하다:형:4
  +공연하:동:14
  +공연하:동:2
  +공연하:형:2
  +공연하:형:4
   공연히:부:1
   공연히:부:29
   공염불:명:1
   공영:명:24
   공영제:명:2
  -공영하다:동:1
  +공영하:동:1
   공예:명:5
   공예관:명:1
   공예실:명:1
  @@ -4289,10 +4289,10 @@
   공원화:명:1
   공유:명:16
   공유:명:2
  -공유되다:동:8
  +공유되:동:8
   공유물:명:1
  -공유하다:동:34
  -공유화되다:동:1
  +공유하:동:34
  +공유화되:동:1
   공음전시:명:1
   공익:명:14
   공익:명:2
  @@ -4301,17 +4301,17 @@
   공익적:명:1
   공인:명:16
   공인:명:5
  -공인되다:동:2
  -공인되다:동:5
  -공인하다:동:3
  -공인하다:동:3
  +공인되:동:2
  +공인되:동:5
  +공인하:동:3
  +공인하:동:3
   공일:명:1
   공자:명:2
   공작:명:12
   공작:명:2
   공작:명:3
   공작원:명:1
  -공작하다:동:2
  +공작하:동:2
   공장:명:319
   공장살이:명:1
   공장장:명:12
  @@ -4327,22 +4327,22 @@
   공전:명:5
   공전론:명:1
   공전제:명:2
  -공전하다:동:1
  -공전하다:동:1
  +공전하:동:1
  +공전하:동:1
   공정:명:12
   공정:명:2
   공정:명:31
   공정성:명:15
  -공정하다:형:38
  -공정해지다:동:1
  +공정하:형:38
  +공정해지:동:1
   공제:명:8
  -공제당하다:동:1
  -공제하다:동:1
  +공제당하:동:1
  +공제하:동:1
   공조:명:1
   공조:명:28
  -공조하다:동:1
  +공조하:동:1
   공존:명:11
  -공존하다:동:12
  +공존하:동:12
   공주:명:19
   공주병:명:10
   공중:명:11
  @@ -4351,7 +4351,7 @@
   공중도덕심:명:4
   공중목욕탕:명:1
   공중변소:명:1
  -공중분해되다:동:1
  +공중분해되:동:1
   공중위생:명:3
   공중전:명:4
   공중전화:명:18
  @@ -4369,27 +4369,27 @@
   공참:명:1
   공채:명:13
   공채:명:6
  -공채하다:동:2
  +공채하:동:2
   공책:명:35
   공처가:명:2
   공천:명:68
  -공천되다:동:1
  -공천받다:동:1
  +공천되:동:1
  +공천받:동:1
   공천설:명:1
   공천자:명:6
  -공천하다:동:2
  +공천하:동:2
   공청:명:1
   공청회:명:19
   공체:명:1
   공초:명:3
  -공초받다:동:2
  +공초받:동:2
   공출:명:9
   공치기:명:2
   공치사:명:2
   공탁:명:1
   공터:명:17
   공통:명:18
  -공통되다:동:26
  +공통되:동:26
   공통분모:명:3
   공통성:명:3
   공통어:명:1
  @@ -4398,24 +4398,24 @@
   공통점:명:21
   공판:명:23
   공판부:명:1
  -공판하다:동:1
  +공판하:동:1
   공평:명:2
  -공평무사하다:형:1
  -공평하다:형:23
  +공평무사하:형:1
  +공평하:형:23
   공평히:부:1
   공포:명:101
   공포감:명:14
  -공포되다:동:5
  +공포되:동:5
   공포물:명:1
   공포심:명:4
   공포적:관:1
   공포증:명:2
  -공포하다:동:4
  +공포하:동:4
   공표:명:4
   공표권:명:1
  -공표되다:동:3
  +공표되:동:3
   공표죄:명:1
  -공표하다:동:10
  +공표하:동:10
   공학:명:1
   공학:명:24
   공학과:명:16
  @@ -4431,20 +4431,20 @@
   공해전:명:1
   공허:명:3
   공허감:명:1
  -공허하다:형:24
  -공허해지다:동:2
  -공허해하다:동:1
  +공허하:형:24
  +공허해지:동:2
  +공허해하:동:1
   공헌:명:13
   공헌도:명:1
   공헌론:명:1
  -공헌하다:동:12
  +공헌하:동:12
   공화국:명:49
   공화정:명:4
   공화제:명:1
   공황:명:4
   공황증:명:1
   공회:명:2
  -공회전시키다:동:1
  +공회전시키:동:1
   공훈전:명:3
   공휴일:명:16
   공히:부:10
  @@ -4453,7 +4453,7 @@
   과:명:222
   과:명:66
   과:의:1
  -과감하다:형:39
  +과감하:형:39
   과감히:부:21
   과객:명:1
   과거:명:18
  @@ -4465,23 +4465,23 @@
   과거형:명:1
   과격:명:16
   과격파:명:1
  -과격하다:형:18
  +과격하:형:18
   과기:명:1
   과꽃:명:1
   과남풀꽃:명:1
   과녁:명:7
   과녁판:명:1
  -과년하다:형:3
  +과년하:형:3
   과다:명:22
  -과다하다:형:16
  +과다하:형:16
   과단성:명:1
   과당:명:6
   과대:명:8
   과대망상적:명:1
   과대평가:명:1
  -과대평가하다:동:4
  -과대하다:동:1
  -과대하다:형:2
  +과대평가하:동:4
  +과대하:동:1
  +과대하:형:2
   과도:명:1
   과도:명:10
   과도:명:2
  @@ -4489,47 +4489,47 @@
   과도기적:관:6
   과도적:관:2
   과도적:명:1
  -과도하다:형:26
  +과도하:형:26
   과도히:부:2
  -과람하다:형:1
  +과람하:형:1
   과량:명:1
   과로:명:5
  -과로하다:동:2
  +과로하:동:2
   과료:명:1
   과립:명:1
   과립형:명:3
  -과립화하다:동:1
  +과립화하:동:1
   과목:명:78
   과목주의:명:1
  -과묵해지다:동:1
  +과묵해지:동:1
   과묵형:명:1
  -과문하다:형:3
  +과문하:형:3
   과민:명:7
   과민성:명:4
  -과민하다:형:2
  +과민하:형:2
   과밀:명:3
  -과밀하다:형:1
  +과밀하:형:1
   과반:명:2
   과반수:명:21
   과보호:명:2
   과부:명:25
   과부댁:명:2
  -과분하다:형:4
  -과분해하다:동:1
  +과분하:형:4
  +과분해하:동:1
   과사:명:1
   과산화:명:2
   과세:명:22
  -과세되다:동:1
  -과세하다:동:3
  +과세되:동:1
  +과세하:동:3
   과소비:명:21
  -과소평가되다:동:2
  -과소평가하다:동:3
  +과소평가되:동:2
  +과소평가하:동:3
   과속:명:2
   과수:명:11
   과수댁:명:3
   과수원:명:21
   과시:명:10
  -과시하다:동:53
  +과시하:동:53
   과식:명:4
   과신:명:1
   과실:명:2
  @@ -4540,39 +4540,39 @@
   과업:명:16
   과연:부:258
   과열:명:20
  -과열되다:동:1
  -과열시키다:동:1
  +과열되:동:1
  +과열시키:동:1
   과오:명:12
   과외:명:21
   과외비:명:1
  -과외시키다:동:3
  +과외시키:동:3
   과욕:명:5
   과용:명:1
  -과용하다:동:1
  +과용하:동:1
   과원:명:1
   과월:명:1
   과유불급:명:1
   과음:명:2
  -과음하다:동:1
  +과음하:동:1
   과일:명:153
   과일나무:명:1
   과일주:명:1
   과일즙:명:2
   과잉:명:55
   과잉보호:명:1
  -과잉보호하다:동:1
  +과잉보호하:동:1
   과자:명:43
   과장:명:1
   과장:명:12
   과장:명:22
   과장:명:91
  -과장되다:동:26
  +과장되:동:26
   과장적:관:1
  -과장하다:동:17
  +과장하:동:17
   과점:명:2
   과점적:관:3
  -과점하다:동:1
  -과정:명:1,014
  +과점하:동:1
  +과정:명:1014
   과정:명:29
   과정:명:3
   과정론적:명:1
  @@ -4582,13 +4582,13 @@
   과제물:명:4
   과줄:명:1
   과중:명:1
  -과중하다:형:16
  -과중해지다:동:1
  +과중하:형:16
  +과중해지:동:1
   과즙:명:10
   과채류:명:1
   과태료:명:1
   과표:명:7
  -과하다:형:5
  +과하:형:5
   과학:명:559
   과학계:명:5
   과학과:명:1
  @@ -4605,8 +4605,8 @@
   과학주의:명:5
   과학주의적:관:1
   과학화:명:6
  -과학화되다:동:1
  -과학화하다:동:1
  +과학화되:동:1
  +과학화하:동:1
   과형:명:1
   과히:부:7
   곽:명:1
  @@ -4624,20 +4624,20 @@
   관계:명:1
   관계:명:1
   관계:명:1
  -관계:명:1,175
  +관계:명:1175
   관계:명:26
   관계국:명:2
  -관계되다:동:52
  +관계되:동:52
   관계망:명:1
   관계법:명:3
   관계사:명:6
  -관계없다:형:12
  +관계없:형:12
   관계없이:부:36
   관계인:명:1
  -관계있다:형:3
  +관계있:형:3
   관계자:명:230
   관계적:관:5
  -관계하다:동:21
  +관계하:동:21
   관곡:명:1
   관공서:명:8
   관광:명:131
  @@ -4649,18 +4649,18 @@
   관광업체:명:2
   관광전:명:7
   관광지:명:23
  -관광지화되다:동:1
  -관광하다:동:2
  +관광지화되:동:1
  +관광하:동:2
   관광학과:명:1
   관광호텔:명:3
   관군:명:4
   관권:명:8
   관극:명:5
  -관극하다:동:1
  +관극하:동:1
   관급:명:4
   관내:명:8
   관념:명:99
  -관념되다:동:1
  +관념되:동:1
   관념론:명:6
   관념론자:명:1
   관념성:명:1
  @@ -4675,12 +4675,12 @@
   관능적:명:4
   관능주의:명:3
   관대:명:1
  -관대하다:동:1
  -관대하다:동:1
  -관대하다:형:11
  -관대해지다:동:2
  +관대하:동:1
  +관대하:동:1
  +관대하:형:11
  +관대해지:동:2
   관동:명:15
  -관두다:동:8
  +관두:동:8
   관두형:명:1
   관등:명:3
   관람:명:15
  @@ -4688,22 +4688,22 @@
   관람료:명:2
   관람자:명:2
   관람자적:관:1
  -관람하다:동:14
  +관람하:동:14
   관련:명:478
   관련국:명:1
  -관련되다:동:179
  +관련되:동:179
   관련설:명:1
   관련성:명:5
   관련세:명:2
  -관련시키다:동:7
  +관련시키:동:7
   관련업:명:1
   관련자:명:28
  -관련지우다:동:2
  -관련짓다:동:3
  -관련하다:동:154
  +관련지우:동:2
  +관련짓:동:3
  +관련하:동:154
   관례:명:1
   관례:명:30
  -관례화되다:동:1
  +관례화되:동:1
   관록:명:5
   관료:명:59
   관료배:명:1
  @@ -4717,10 +4717,10 @@
   관료주의적:명:2
   관료층:명:1
   관료화:명:3
  -관료화하다:동:3
  -관류되다:동:1
  +관료화하:동:3
  +관류되:동:1
   관류율:명:1
  -관류하다:동:9
  +관류하:동:9
   관리:명:259
   관리:명:80
   관리계:명:2
  @@ -4729,7 +4729,7 @@
   관리과장:명:2
   관리관:명:2
   관리국장:명:2
  -관리되다:동:6
  +관리되:동:6
   관리령:명:1
   관리법:명:1
   관리부:명:1
  @@ -4744,11 +4744,11 @@
   관리자:명:7
   관리직:명:13
   관리책:명:1
  -관리하다:동:50
  +관리하:동:50
   관리학과:명:1
   관망:명:2
   관망적:명:1
  -관망하다:동:7
  +관망하:동:7
   관명:명:1
   관모:명:12
   관목:명:23
  @@ -4779,12 +4779,12 @@
   관세율:명:3
   관세음보살:명:1
   관세화:명:1
  -관세화하다:동:1
  +관세화하:동:1
   관속:명:2
   관습:명:56
   관습법:명:1
   관습적:명:6
  -관습화되다:동:3
  +관습화되:동:3
   관식:명:1
   관심:명:619
   관심거리:명:9
  @@ -4795,7 +4795,7 @@
   관아:명:18
   관악기:명:6
   관여:명:1
  -관여하다:동:31
  +관여하:동:31
   관엽:명:3
   관영:명:1
   관영:명:16
  @@ -4805,24 +4805,24 @@
   관용:명:5
   관용어:명:3
   관용적:명:2
  -관용하다:동:1
  -관용화되다:동:1
  +관용하:동:1
  +관용화되:동:1
   관원:명:3
   관음적:관:1
  -관인화되다:동:1
  -관인화시키다:동:1
  -관인화하다:동:1
  +관인화되:동:1
  +관인화시키:동:1
  +관인화하:동:1
   관자놀이:명:8
   관작:명:1
   관장:명:2
   관장:명:3
   관장:명:7
  -관장하다:동:13
  +관장하:동:13
   관재:명:1
   관저:명:13
   관전:명:1
   관전평:명:1
  -관전하다:동:3
  +관전하:동:3
   관절:명:20
   관절염:명:3
   관점:명:264
  @@ -4833,7 +4833,7 @@
   관제탑:명:15
   관조:명:6
   관조자:명:1
  -관조하다:동:4
  +관조하:동:4
   관존민비:명:1
   관중:명:14
   관중:명:4
  @@ -4844,48 +4844,48 @@
   관찰:명:63
   관찰국:명:1
   관찰기:명:1
  -관찰되다:동:14
  +관찰되:동:14
   관찰력:명:7
   관찰사:명:1
   관찰자:명:12
  -관찰하다:동:105
  +관찰하:동:105
   관철:명:5
  -관철되다:동:14
  -관철시키다:동:12
  -관철하다:동:11
  -관철하다:동:2
  +관철되:동:14
  +관철시키:동:12
  +관철하:동:11
  +관철하:동:2
   관청:명:26
   관청가:명:1
   관측:명:30
   관측기:명:1
  -관측되다:동:10
  +관측되:동:10
   관측소:명:4
   관측자:명:2
   관측치:명:1
   관측통:명:2
  -관측하다:동:9
  +관측하:동:9
   관치:명:1
   관통:명:3
  -관통하다:동:7
  +관통하:동:7
   관통형:명:2
   관포지교:명:4
   관품제:명:1
  -관하다:동:3
  -관하다:동:630
  +관하:동:3
  +관하:동:630
   관학자:명:1
   관할:명:16
   관할권:명:8
  -관할하다:동:6
  +관할하:동:6
   관행:명:66
  -관행되다:동:2
  -관행화되다:동:1
  +관행되:동:2
  +관행화되:동:1
   관헌:명:1
   관현악과:명:2
   관혼상제:명:3
  -관활하다:형:10
  -괄다:형:1
  -괄목하다:동:11
  -괄시하다:동:1
  +관활하:형:10
  +괄:형:1
  +괄목하:동:11
  +괄시하:동:1
   괄약근:명:1
   괄호:명:20
   광:명:10
  @@ -4905,39 +4905,39 @@
   광고주:명:6
   광고탑:명:2
   광고판:명:3
  -광고하다:동:8
  +광고하:동:8
   광공업:명:1
   광과민성:명:3
   광궤:명:1
   광기:명:26
  -광내다:동:1
  +광내:동:1
   광년:의:20
   광대:명:13
  -광대무변하다:형:1
  +광대무변하:형:1
   광대뼈:명:8
   광대싸리:명:2
  -광대하다:형:4
  +광대하:형:4
   광도:명:1
   광독성:명:1
   광둥어:명:1
   광란:명:3
   광란적:명:2
  -광막하다:형:4
  +광막하:형:4
   광망:명:1
   광명:명:8
  -광명하다:형:1
  +광명하:형:1
   광목:명:12
   광문:명:2
   광물:명:15
   광물질:명:1
   광범위성:명:1
  -광범위하다:형:37
  -광범하다:형:8
  +광범위하:형:37
  +광범하:형:8
   광변:명:1
   광복:명:20
   광복절:명:4
   광부:명:6
  -광분하다:동:2
  +광분하:동:2
   광사:명:1
   광산:명:12
   광산쟁이:명:3
  @@ -4957,7 +4957,7 @@
   광역:명:12
   광역권:명:1
   광역시:명:2
  -광역화되다:동:1
  +광역화되:동:1
   광원:명:4
   광의:명:3
   광인:명:1
  @@ -4974,61 +4974,61 @@
   광태증:명:1
   광택:명:13
   광파:명:5
  -광포하다:형:3
  +광포하:형:3
   광학:명:6
   광학적:관:1
   광합성:명:2
   광활성:명:1
  -광활하다:형:20
  +광활하:형:20
   광휘:명:1
  -광휘롭다:형:1
  +광휘롭:형:1
   괘:명:6
  -괘념하다:동:3
  -괘씸하다:형:8
  +괘념하:동:3
  +괘씸하:형:8
   괘종시계:명:5
   괘포형:명:1
   괜스레:부:6
  -괜찮다:형:271
  -괜찮아지다:동:3
  -괜하다:형:10
  +괜찮:형:271
  +괜찮아지:동:3
  +괜하:형:10
   괜히:부:105
   괭이:명:7
   괭이갈매기:명:2
   괴:명:3
  -괴괴하다:형:1
  -괴기하다:형:2
  -괴다:동:15
  -괴다:동:6
  +괴괴하:형:1
  +괴기하:형:2
  +괴:동:15
  +괴:동:6
   괴력:명:1
   괴로움:명:50
  -괴로워하다:동:16
  -괴롭다:형:57
  -괴롭히다:동:42
  +괴로워하:동:16
  +괴롭:형:57
  +괴롭히:동:42
   괴뢰:명:1
   괴뢰군:명:1
   괴리:명:6
   괴리감:명:2
  -괴리되다:동:2
  -괴멸되다:동:1
  +괴리되:동:2
  +괴멸되:동:1
   괴멸적:관:1
   괴물:명:23
   괴변:명:3
  -괴사하다:동:1
  -괴상망측하다:형:2
  -괴상하다:형:11
  +괴사하:동:1
  +괴상망측하:형:2
  +괴상하:형:11
   괴성:명:8
   괴수:명:2
  -괴어오르다:동:1
  -괴오르다:동:1
  +괴어오르:동:1
  +괴오르:동:1
   괴음:명:2
  -괴이하다:형:2
  +괴이하:형:2
   괴짜:명:5
  -괴팍하다:형:4
  +괴팍하:형:4
   괴한:명:2
   괴혈병:명:1
   괴화나무:명:4
   굉음:명:4
  -굉장하다:형:17
  +굉장하:형:17
   굉장히:부:99
   교:명:1
   교:명:11
  @@ -5037,7 +5037,7 @@
   교각:명:1
   교감:명:28
   교감:명:4
  -교감하다:동:8
  +교감하:동:8
   교과:명:1
   교과:명:20
   교과목:명:2
  @@ -5046,7 +5046,7 @@
   교과서적:명:2
   교관:명:1
   교관:명:9
  -교교해지다:동:1
  +교교해지:동:1
   교구:명:2
   교구비:명:1
   교구장:명:1
  @@ -5059,9 +5059,9 @@
   교단생활:명:1
   교대:명:2
   교대:명:32
  -교대되다:동:1
  +교대되:동:1
   교대자:명:6
  -교대하다:동:3
  +교대하:동:3
   교도:명:1
   교도:명:3
   교도관:명:7
  @@ -5069,27 +5069,27 @@
   교도소장:명:2
   교두보:명:5
   교란:명:7
  -교란되다:동:2
  -교란시키다:동:1
  -교란하다:동:1
  +교란되:동:2
  +교란시키:동:1
  +교란하:동:1
   교량:명:11
  -교량하다:동:1
  +교량하:동:1
   교련:명:14
   교련화:명:1
   교류:명:89
  -교류되다:동:3
  -교류하다:동:7
  +교류되:동:3
  +교류하:동:7
   교리:명:21
   교리적:관:1
   교만:명:2
  -교만스럽다:형:1
  +교만스럽:형:1
   교만심:명:1
  -교만하다:형:4
  +교만하:형:4
   교목:명:1
   교목:명:10
   교목실장:명:1
  -교묘하다:형:20
  -교묘해지다:동:2
  +교묘하:형:20
  +교묘해지:동:2
   교묘히:부:3
   교무:명:2
   교무:명:30
  @@ -5107,7 +5107,7 @@
   교본:명:2
   교부:명:3
   교부율:명:3
  -교부하다:동:3
  +교부하:동:3
   교분:명:3
   교사:명:1
   교사:명:1
  @@ -5121,7 +5121,7 @@
   교섭:명:36
   교섭권:명:1
   교섭사:명:1
  -교섭하다:동:3
  +교섭하:동:3
   교성:명:3
   교세:명:1
   교수:명:525
  @@ -5135,9 +5135,9 @@
   교습:명:4
   교시:명:5
   교시:의:16
  -교시하다:동:3
  -교신되다:동:1
  -교신하다:동:3
  +교시하:동:3
  +교신되:동:1
  +교신하:동:3
   교실:명:172
   교양:명:47
   교양과:명:1
  @@ -5148,7 +5148,7 @@
   교역국:명:1
   교역량:명:5
   교역전:명:3
  -교역하다:동:2
  +교역하:동:2
   교열부:명:1
   교외:명:15
   교외:명:3
  @@ -5166,9 +5166,9 @@
   교육과:명:5
   교육관:명:5
   교육권:명:1
  -교육되다:동:2
  +교육되:동:2
   교육령:명:1
  -교육받다:동:5
  +교육받:동:5
   교육법:명:1
   교육부장:명:2
   교육비:명:15
  @@ -5176,7 +5176,7 @@
   교육성:명:2
   교육세:명:8
   교육세율:명:3
  -교육시키다:동:6
  +교육시키:동:6
   교육실:명:2
   교육열:명:10
   교육원:명:4
  @@ -5188,7 +5188,7 @@
   교육적:명:6
   교육지:명:1
   교육청:명:33
  -교육하다:동:13
  +교육하:동:13
   교육학:명:4
   교육학과:명:7
   교육학자:명:2
  @@ -5209,11 +5209,11 @@
   교정:명:10
   교정:명:15
   교정:명:2
  -교정되다:동:3
  -교정하다:동:5
  +교정되:동:3
  +교정하:동:5
   교제:명:11
   교제비:명:3
  -교제하다:동:2
  +교제하:동:2
   교조:명:4
   교조적:관:1
   교조적:명:2
  @@ -5227,23 +5227,23 @@
   교직:명:39
   교직원:명:4
   교차:명:5
  -교차되다:동:7
  +교차되:동:7
   교차로:명:4
  -교차시키다:동:1
  +교차시키:동:1
   교차점:명:1
  -교차하다:동:12
  +교차하:동:12
   교착:명:1
   교착:명:1
  -교착되다:동:1
  +교착되:동:1
   교체:명:43
   교체기:명:2
  -교체되다:동:9
  +교체되:동:9
   교체설:명:1
  -교체하다:동:14
  +교체하:동:14
   교칙:명:1
   교탁:명:5
   교태:명:2
  -교태스럽다:형:1
  +교태스럽:형:1
   교통:명:183
   교통경찰:명:11
   교통난:명:7
  @@ -5260,7 +5260,7 @@
   교통지옥:명:2
   교통질서:명:1
   교통편:명:2
  -교통하다:동:1
  +교통하:동:1
   교파:명:1
   교편:명:8
   교포:명:23
  @@ -5274,17 +5274,17 @@
   교화:명:1
   교화:명:9
   교화력:명:1
  -교화시키다:동:2
  -교화하다:동:5
  +교화시키:동:2
  +교화하:동:5
   교환:명:66
   교환기:명:7
   교환대:명:1
  -교환받다:동:1
  +교환받:동:1
   교환소:명:6
   교환원:명:1
   교환전:명:1
  -교환하다:동:41
  -교활하다:형:6
  +교환하:동:41
  +교활하:형:6
   교황:명:14
   교회:명:132
   교회당:명:1
  @@ -5301,46 +5301,46 @@
   구:명:21
   구:수:13
   구:의:1
  -구가하다:동:8
  +구가하:동:8
   구간:명:19
   구강:명:3
   구걸:명:2
  -구걸하다:동:5
  -구겨지다:동:10
  +구걸하:동:5
  +구겨지:동:10
   구경:명:1
   구경:명:3
   구경:명:78
   구경각:명:1
   구경거리:명:5
   구경꾼:명:12
  -구경나다:동:1
  -구경하다:동:64
  +구경나:동:1
  +구경하:동:64
   구관:명:1
   구교:명:1
   구구:부:1
   구구단:명:2
   구구절절:명:1
  -구구절절하다:형:1
  -구구하다:형:2
  -구구해지다:동:1
  +구구절절하:형:1
  +구구하:형:2
  +구구해지:동:1
   구국:명:7
   구군복:명:1
   구극적:명:3
   구금:명:29
  -구금당하다:동:2
  -구금되다:동:3
  -구금시키다:동:1
  +구금당하:동:2
  +구금되:동:3
  +구금시키:동:1
   구금자:명:3
   구금죄:명:1
  -구금하다:동:2
  +구금하:동:2
   구급:명:9
   구급약:명:1
   구급차:명:1
   구기:명:2
  -구기다:동:7
  -구기박질러지다:동:1
  +구기:동:7
  +구기박질러지:동:1
   구김살:명:1
  -구깃구깃하다:형:1
  +구깃구깃하:형:1
   구내:명:13
   구내매점:명:2
   구내방송:명:1
  @@ -5365,7 +5365,7 @@
   구두:명:2
   구두:명:63
   구두닦이:명:7
  -구두덜대다:동:1
  +구두덜대:동:1
   구두쇠:명:18
   구두점:명:1
   구두점:명:8
  @@ -5388,8 +5388,8 @@
   구류:명:2
   구류형:명:1
   구르기:명:18
  -구르다:동:18
  -구르다:동:49
  +구르:동:18
  +구르:동:49
   구륵:명:1
   구름:명:86
   구름장:명:5
  @@ -5400,19 +5400,19 @@
   구릉지:명:3
   구릉지대:명:3
   구리:명:10
  -구리다:형:3
  -구리칙칙하다:형:1
  +구리:형:3
  +구리칙칙하:형:1
   구린내:명:3
   구릿빛:명:1
   구만:관:1
   구매:명:48
  -구매되다:동:1
  +구매되:동:1
   구매력:명:2
   구매사:명:1
   구매선:명:3
   구매설:명:1
   구매자:명:6
  -구매하다:동:12
  +구매하:동:12
   구멍:명:106
   구멍가게:명:11
   구멍새:명:1
  @@ -5429,52 +5429,52 @@
   구미:명:12
   구민:명:8
   구박:명:9
  -구박받다:동:2
  -구박하다:동:3
  +구박받:동:2
  +구박하:동:3
   구백팔십:관:2
   구법:명:1
   구별:명:42
  -구별되다:동:31
  -구별시키다:동:1
  -구별하다:동:53
  +구별되:동:31
  +구별시키:동:1
  +구별하:동:53
   구보:명:4
  -구보하다:동:1
  +구보하:동:1
   구부득고:명:1
  -구부러지다:동:5
  -구부리다:동:18
  +구부러지:동:5
  +구부리:동:18
   구부정:부:1
  -구부정하다:형:1
  -구부정해지다:동:1
  +구부정하:형:1
  +구부정해지:동:1
   구북구:명:16
   구분:명:82
  -구분되다:동:35
  +구분되:동:35
   구분론:명:4
   구분법:명:4
   구분적:관:1
  -구분하다:동:77
  +구분하:동:77
   구불구불:부:2
  -구불구불하다:형:3
  +구불구불하:형:3
   구비:명:1
   구비:명:4
  -구비되다:동:7
  -구비하다:동:7
  +구비되:동:7
  +구비하:동:7
   구빨치산:명:1
   구사:명:6
   구사대:명:3
  -구사되다:동:2
  +구사되:동:2
   구사력:명:2
   구사일생:명:1
  -구사하다:동:20
  +구사하:동:20
   구사회주의:명:2
   구산:명:2
   구산선문:명:1
   구상:명:1
   구상:명:42
   구상도:명:3
  -구상되다:동:2
  +구상되:동:2
   구상류층:명:1
   구상안:명:8
  -구상하다:동:16
  +구상하:동:16
   구색:명:3
   구서당:명:1
   구석:명:86
  @@ -5483,54 +5483,54 @@
   구석기인:명:5
   구석방:명:1
   구석빼기:명:1
  -구석지다:형:5
  +구석지:형:5
   구설:명:1
   구설수:명:9
   구성:명:260
   구성극:명:1
  -구성되다:동:163
  +구성되:동:163
   구성력:명:2
   구성물:명:6
   구성법:명:1
   구성비:명:2
   구성선:명:5
  -구성시키다:동:1
  +구성시키:동:1
   구성원:명:63
   구성적:관:8
   구성적:명:4
  -구성지다:형:1
  +구성지:형:1
   구성체:명:67
   구성체론:명:9
   구성체적:관:1
   구성체적:명:1
  -구성하다:동:134
  +구성하:동:134
   구세계:명:1
   구세대:명:6
   구세주:명:1
   구속:명:1
   구속:명:170
  -구속당하다:동:5
  -구속되다:동:60
  +구속당하:동:5
  +구속되:동:60
   구속력:명:7
  -구속받다:동:1
  +구속받:동:1
   구속성:명:1
  -구속시키다:동:4
  +구속시키:동:4
   구속자:명:7
  -구속하다:동:39
  -구수하다:형:21
  +구속하:동:39
  +구수하:형:21
   구술:명:2
   구술시험:명:1
  -구술하다:동:3
  +구술하:동:3
   구슬:명:7
  -구슬리다:동:3
  -구슬프다:형:3
  +구슬리:동:3
  +구슬프:형:3
   구슬피:부:1
   구습:명:2
   구시대:명:6
   구시대적:관:2
   구시대적:명:2
  -구시렁거리다:동:1
  -구시렁대다:동:1
  +구시렁거리:동:1
  +구시렁대:동:1
   구식:명:8
   구실:명:48
   구실:명:8
  @@ -5550,9 +5550,9 @@
   구아슈:명:1
   구애:명:1
   구애:명:4
  -구애되다:동:1
  -구애받다:동:11
  -구애하다:동:1
  +구애되:동:1
  +구애받:동:11
  +구애하:동:1
   구약:명:6
   구어:명:1
   구어체:명:2
  @@ -5563,48 +5563,48 @@
   구연:명:1
   구연동화:명:1
   구연산나트륨:명:1
  -구워삶다:동:1
  +구워삶:동:1
   구원:명:19
  -구원되다:동:2
  -구원받다:동:7
  +구원되:동:2
  +구원받:동:7
   구원자:명:1
  -구원하다:동:9
  +구원하:동:9
   구월:명:210
   구읍:명:1
   구이:명:14
   구인:명:1
   구인:명:12
  -구인하다:동:1
  +구인하:동:1
   구입:명:35
   구입난:명:2
  -구입되다:동:1
  +구입되:동:1
   구입비:명:3
   구입자:명:1
   구입처:명:2
   구입품:명:1
  -구입하다:동:97
  +구입하:동:97
   구장:명:12
   구장:명:2
   구전:명:4
  -구전되다:동:1
  +구전되:동:1
   구절:명:40
   구절초:명:4
  -구접스럽다:형:1
  +구접스럽:형:1
   구접스레:부:1
   구정:명:1
   구정물:명:1
   구정치인:명:3
   구제:명:1
   구제:명:23
  -구제되다:동:1
  -구제받다:동:1
  +구제되:동:1
  +구제받:동:1
   구제책:명:1
   구제품:명:1
  -구제하다:동:13
  -구제하다:동:2
  +구제하:동:13
  +구제하:동:2
   구조:명:11
   구조:명:552
  -구조되다:동:1
  +구조되:동:1
   구조론:명:6
   구조론적:명:1
   구조물:명:12
  @@ -5613,10 +5613,10 @@
   구조주의:명:5
   구조주의자:명:1
   구조주의적:관:9
  -구조하다:동:2
  +구조하:동:2
   구조학:명:1
   구조화:명:2
  -구조화되다:동:13
  +구조화되:동:13
   구족계:명:1
   구좌:명:1
   구주:명:1
  @@ -5625,11 +5625,11 @@
   구직:명:4
   구직자:명:1
   구질:명:2
  -구질구질하다:형:3
  -구차스럽다:형:6
  -구차하다:형:3
  +구질구질하:형:3
  +구차스럽:형:6
  +구차하:형:3
   구차히:부:1
  -구찮다:형:1
  +구찮:형:1
   구천:관:1
   구천:명:2
   구첩반상:명:1
  @@ -5642,43 +5642,43 @@
   구체적:명:282
   구체제:명:1
   구체화:명:1
  -구체화되다:동:17
  -구체화시키다:동:3
  -구체화하다:동:13
  +구체화되:동:17
  +구체화시키:동:3
  +구체화하:동:13
   구축:명:37
  -구축되다:동:7
  +구축되:동:7
   구축업:명:1
  -구축하다:동:57
  -구출하다:동:5
  +구축하:동:57
  +구출하:동:5
   구치소:명:9
   구치소장:명:2
   구타:명:10
  -구타하다:동:3
  +구타하:동:3
   구태:명:4
   구태여:부:10
  -구태의연하다:형:7
  -구태하다:동:1
  -구태해지다:동:1
  +구태의연하:형:7
  +구태하:동:1
  +구태해지:동:1
   구토:명:9
   구토증:명:9
   구판장:명:1
   구팽:명:2
  -구푸리다:동:2
  +구푸리:동:2
   구필:명:1
  -구하다:동:203
  -구하다:동:28
  +구하:동:203
  +구하:동:28
   구한말:명:3
  -구해지다:동:1
  +구해지:동:1
   구헌법:명:1
   구현:명:14
  -구현되다:동:10
  -구현하다:동:17
  +구현되:동:10
  +구현하:동:17
   구형:명:3
   구형:명:4
  -구형되다:동:4
  +구형되:동:4
   구형량:명:1
  -구형받다:동:1
  -구형하다:동:5
  +구형받:동:1
  +구형하:동:5
   구호:명:22
   구호:명:56
   구호물자:명:1
  @@ -5689,7 +5689,7 @@
   구화:명:1
   구황:명:2
   구획:명:6
  -구획되어지다:동:1
  +구획되어지:동:1
   구휼:명:1
   국:명:1
   국:명:10
  @@ -5697,7 +5697,7 @@
   국:명:5
   국:명:53
   국:의:1
  -국가:명:1,231
  +국가:명:1231
   국가계획:명:1
   국가고시:명:1
   국가론:명:13
  @@ -5796,9 +5796,9 @@
   국산:명:52
   국산품:명:4
   국산화:명:7
  -국산화되다:동:1
  +국산화되:동:1
   국산화율:명:1
  -국산화하다:동:1
  +국산화하:동:1
   국상:명:1
   국상:명:2
   국선:명:15
  @@ -5840,8 +5840,8 @@
   국유제적:관:2
   국유화:명:1
   국유화론:명:2
  -국유화시키다:동:1
  -국유화하다:동:1
  +국유화시키:동:1
  +국유화하:동:1
   국으로:부:1
   국읍:명:3
   국익:명:10
  @@ -5870,8 +5870,8 @@
   국제주의적:관:1
   국제파:명:1
   국제화:명:80
  -국제화시키다:동:1
  -국제화하다:동:2
  +국제화시키:동:1
  +국제화하:동:2
   국제회의:명:2
   국제회의실:명:1
   국제회의장:명:2
  @@ -5890,10 +5890,10 @@
   국토:명:54
   국풍:명:1
   국풍파:명:2
  -국한되다:동:34
  +국한되:동:34
   국한문:명:1
  -국한시키다:동:5
  -국한하다:동:3
  +국한시키:동:5
  +국한하:동:3
   국호:명:8
   국혼:명:1
   국혼:명:1
  @@ -5939,7 +5939,7 @@
   군대:명:149
   군대식:명:4
   군더더기:명:4
  -군던지럽다:형:1
  +군던지럽:형:1
   군데:의:57
   군데군데:명:3
   군데군데:부:11
  @@ -5953,7 +5953,7 @@
   군량미:명:1
   군령:명:1
   군림자:명:1
  -군림하다:동:28
  +군림하:동:28
   군말:명:2
   군명:명:1
   군무:명:2
  @@ -5996,8 +5996,8 @@
   군수실:명:1
   군수용:명:1
   군수품:명:1
  -군시럽다:형:1
  -군시렁거리다:동:1
  +군시럽:형:1
  +군시렁거리:동:1
   군식구:명:2
   군신:명:3
   군신유의:명:2
  @@ -6031,10 +6031,10 @@
   군주:명:15
   군중:명:17
   군중대회:명:1
  -군중집회하다:동:1
  +군중집회하:동:1
   군지:명:1
   군집:명:2
  -군집하다:동:2
  +군집하:동:2
   군청:명:21
   군청색:명:2
   군축:명:12
  @@ -6052,87 +6052,87 @@
   군혼:명:3
   군화:명:3
   군홧발:명:3
  -굳건하다:형:3
  -굳건해지다:동:2
  +굳건하:형:3
  +굳건해지:동:2
   굳건히:부:5
   굳기름:명:2
  -굳다:동:18
  -굳다:형:62
  -굳세다:형:6
  -굳어지다:동:62
  +굳:동:18
  +굳:형:62
  +굳세:형:6
  +굳어지:동:62
   굳은살:명:3
   굳이:부:88
  -굳혀지다:동:2
  -굳히다:동:31
  +굳혀지:동:2
  +굳히:동:31
   굴:명:15
   굴:명:16
   굴곡:명:12
  -굴곡하다:형:1
  -굴다:동:29
  +굴곡하:형:1
  +굴:동:29
   굴다리:명:1
   굴뚝:명:14
  -굴뚝같다:형:1
  +굴뚝같:형:1
   굴뚝새:명:9
  -굴러가다:동:7
  -굴러다니다:동:8
  +굴러가:동:7
  +굴러다니:동:8
   굴렁쇠:명:4
   굴레:명:13
  -굴리다:동:41
  +굴리:동:41
   굴복:명:1
  -굴복당하다:동:1
  -굴복시키다:동:1
  -굴복하다:동:1
  -굴복하다:동:10
  +굴복당하:동:1
  +굴복시키:동:1
  +굴복하:동:1
  +굴복하:동:10
   굴비:명:3
   굴삭기:명:2
   굴속:명:7
   굴욕:명:2
   굴욕사:명:1
  -굴욕스럽다:형:1
  +굴욕스럽:형:1
   굴욕적:명:2
   굴절:명:3
  -굴절되다:동:2
  +굴절되:동:2
   굴절력:명:2
   굴종적:관:1
  -굴종하다:동:1
  +굴종하:동:1
   굴지:명:4
   굴착:명:2
   굴착기:명:1
   굴참나무:명:4
  -굴하다:동:2
  -굵다:형:113
  -굵다랗다:형:1
  -굵어지다:동:13
  -굵직굵직하다:형:2
  -굵직하다:형:4
  -굶다:동:62
  -굶주리다:동:20
  +굴하:동:2
  +굵:형:113
  +굵다랗:형:1
  +굵어지:동:13
  +굵직굵직하:형:2
  +굵직하:형:4
  +굶:동:62
  +굶주리:동:20
   굶주림:명:10
  -굼뜨다:형:5
  +굼뜨:형:5
   굼벵이:명:2
   굼실굼실:부:1
   굽:명:13
  -굽다:동:116
  -굽다:동:3
  -굽다:형:11
  -굽슬굽슬하다:형:1
  -굽실거리다:동:4
  -굽실대다:동:1
  -굽실하다:동:1
  -굽어보다:동:7
  -굽어보이다:동:3
  -굽어지다:동:3
  +굽:동:116
  +굽:동:3
  +굽:형:11
  +굽슬굽슬하:형:1
  +굽실거리:동:4
  +굽실대:동:1
  +굽실하:동:1
  +굽어보:동:7
  +굽어보이:동:3
  +굽어지:동:3
   굽이:명:2
   굽이굽이:부:1
  -굽이치다:동:6
  -굽죄다:동:1
  +굽이치:동:6
  +굽죄:동:1
   굽히기:명:1
  -굽히다:동:76
  +굽히:동:76
   굿:명:36
   굿판:명:9
   궁:명:7
   궁고:명:1
  -궁구하다:동:3
  +궁구하:동:3
   궁궐:명:22
   궁극:명:1
   궁극적:관:15
  @@ -6140,9 +6140,9 @@
   궁극점:명:1
   궁금:명:2
   궁금증:명:17
  -궁금하다:형:119
  -궁금해지다:동:9
  -궁금해하다:동:13
  +궁금하:형:119
  +궁금해지:동:9
  +궁금해하:동:13
   궁기:명:3
   궁내:명:5
   궁내수:명:3
  @@ -6150,15 +6150,15 @@
   궁녀:명:2
   궁둥이:명:8
   궁리:명:16
  -궁리하다:동:10
  +궁리하:동:10
   궁상:명:1
  -궁상떨다:동:1
  -궁색스럽다:형:1
  -궁색하다:형:3
  +궁상떨:동:1
  +궁색스럽:형:1
  +궁색하:형:3
   궁서:명:2
   궁성:명:5
  -궁시렁거리다:동:2
  -궁싯거리다:동:1
  +궁시렁거리:동:2
  +궁싯거리:동:1
   궁여지책:명:2
   궁원:명:1
   궁을:명:2
  @@ -6170,20 +6170,20 @@
   궁초:명:2
   궁초댕기:명:1
   궁핍:명:4
  -궁핍하다:형:8
  -궁하다:형:2
  +궁핍하:형:8
  +궁하:형:2
   궁합:명:10
  -궁해지다:동:1
  +궁해지:동:1
   궁형:명:5
  -궂다:형:4
  +궂:형:4
   궂은비:명:3
   궂은일:명:2
  -궂은일하다:동:1
  +궂은일하:동:1
   권:의:135
   권격:명:1
   권고:명:12
   권고안:명:6
  -권고하다:동:5
  +권고하:동:5
   권농:명:1
   권능:명:6
   권두:명:2
  @@ -6213,39 +6213,39 @@
   권위주의:명:22
   권위주의적:관:7
   권위주의적:명:4
  -권위주의화되다:동:1
  +권위주의화되:동:1
   권위지:명:1
   권위화:명:1
   권유:명:11
  -권유하다:동:13
  -권유하다:동:2
  +권유하:동:13
  +권유하:동:2
   권익:명:14
   권장:명:2
  -권장되다:동:4
  +권장되:동:4
   권장량:명:1
  -권장하다:동:22
  +권장하:동:22
   권좌:명:5
   권총:명:26
   권총식:명:1
   권태:명:7
   권태감:명:1
   권태기:명:1
  -권태롭다:형:1
  -권태스럽다:형:1
  +권태롭:형:1
  +권태스럽:형:1
   권토중래:명:1
   권투:명:24
  -권하다:동:92
  +권하:동:92
   권한:명:50
   궐기:명:3
  -궐기하다:동:1
  +궐기하:동:1
   궐내:명:2
   궐석:명:1
   궤:명:2
   궤:명:2
   궤도:명:34
   궤도선:명:3
  -궤멸시키다:동:1
  -궤멸하다:동:1
  +궤멸시키:동:1
  +궤멸하:동:1
   궤변:명:3
   궤양:명:4
   궤적:명:3
  @@ -6253,13 +6253,13 @@
   귀:명:2
   귀:명:264
   귀가:명:22
  -귀가시키다:동:1
  -귀가하다:동:23
  +귀가시키:동:1
  +귀가하:동:23
   귀감:명:5
   귀갓길:명:1
   귀걸이:명:5
   귀결:명:4
  -귀결되다:동:11
  +귀결되:동:11
   귀경:명:3
   귀고리:명:9
   귀곡성:명:1
  @@ -6268,24 +6268,24 @@
   귀공자형:명:1
   귀교:명:1
   귀국:명:31
  -귀국시키다:동:1
  -귀국하다:동:61
  +귀국시키:동:1
  +귀국하:동:61
   귀금속:명:9
   귀깃:명:1
   귀납:명:1
   귀납적:명:2
  -귀납하다:동:2
  -귀담다:동:6
  -귀담아듣다:동:6
  +귀납하:동:2
  +귀담:동:6
  +귀담아듣:동:6
   귀대:명:2
   귀동냥:명:2
  -귀동냥하다:동:1
  +귀동냥하:동:1
   귀띔:명:6
  -귀띔하다:동:10
  +귀띔하:동:10
   귀로:명:2
   귀룽나무:명:1
   귀머거리:명:2
  -귀먹다:동:3
  +귀먹:동:3
   귀면:명:4
   귀물:명:2
   귀밑:명:3
  @@ -6297,21 +6297,21 @@
   귀빈실:명:1
   귀뺨:명:1
   귀뿌리:명:1
  -귀살쩍다:형:1
  +귀살쩍:형:1
   귀선:명:2
  -귀선하다:동:3
  +귀선하:동:3
   귀성:명:7
   귀성객:명:4
  -귀성하다:동:2
  +귀성하:동:2
   귀소:명:1
   귀소형:명:1
  -귀속되다:동:5
  -귀속시키다:동:3
  -귀속하다:동:2
  +귀속되:동:5
  +귀속시키:동:3
  +귀속하:동:2
   귀솟음:명:1
   귀순:명:4
   귀순자:명:2
  -귀순하다:동:3
  +귀순하:동:3
   귀신:명:63
   귀신같이:부:3
   귀싸대기:명:2
  @@ -6320,20 +6320,20 @@
   귀양살이:명:3
   귀양지:명:1
   귀엣말:명:2
  -귀여워지다:동:1
  -귀여워하다:동:7
  +귀여워지:동:1
  +귀여워하:동:7
   귀염:명:1
   귀염둥이:명:1
   귀염성:명:4
  -귀염성스럽다:형:1
  -귀엽다:형:81
  +귀염성스럽:형:1
  +귀엽:형:81
   귀와:명:1
   귀울림:명:1
   귀의:명:2
  -귀의시키다:동:1
  -귀의하다:동:11
  +귀의시키:동:1
  +귀의하:동:11
   귀인:명:8
  -귀일하다:동:1
  +귀일하:동:1
   귀재:명:2
   귀제비:명:11
   귀족:명:264
  @@ -6343,16 +6343,16 @@
   귀족주의적:관:2
   귀족주의적:명:1
   귀족층:명:5
  -귀족화되다:동:1
  -귀족화하다:동:1
  +귀족화되:동:1
  +귀족화하:동:1
   귀중품:명:4
  -귀중하다:형:39
  +귀중하:형:39
   귀중히:부:1
  -귀착되다:동:6
  -귀착하다:동:2
  -귀찮다:형:54
  -귀찮아지다:동:2
  -귀찮아하다:동:6
  +귀착되:동:6
  +귀착하:동:2
  +귀찮:형:54
  +귀찮아지:동:2
  +귀찮아하:동:6
   귀책:명:1
   귀천:명:1
   귀청:명:8
  @@ -6361,21 +6361,21 @@
   귀퉁이:명:21
   귀티:명:1
   귀하:대:4
  -귀하다:형:63
  +귀하:형:63
   귀항:명:1
   귀항지:명:1
  -귀항하다:동:3
  -귀해지다:동:1
  +귀항하:동:3
  +귀해지:동:1
   귀향:명:16
   귀향객:명:1
   귀향기:명:3
   귀향길:명:2
  -귀향하다:동:4
  +귀향하:동:4
   귀향형:명:1
   귀화:명:2
  -귀화하다:동:1
  +귀화하:동:1
   귀환:명:8
  -귀환하다:동:4
  +귀환하:동:4
   귀히:부:4
   귓가:명:7
   귓결:명:2
  @@ -6388,18 +6388,18 @@
   귓불:명:11
   귓속:명:18
   귓속말:명:5
  -귓속말하다:동:1
  +귓속말하:동:1
   귓전:명:6
   규격:명:26
   규격성:명:2
   규격안:명:1
   규격적:명:1
  -규격화되다:동:4
  -규격화하다:동:1
  +규격화되:동:4
  +규격화하:동:1
   규명:명:49
  -규명되다:동:4
  +규명되:동:4
   규명론:명:1
  -규명하다:동:37
  +규명하:동:37
   규모:명:280
   규모망:명:1
   규범:명:52
  @@ -6411,53 +6411,53 @@
   규수:명:3
   규약:명:17
   규율:명:7
  -규율하다:동:2
  +규율하:동:2
   규정:명:11
   규정:명:147
  -규정되다:동:71
  +규정되:동:71
   규정력:명:1
   규정적:관:1
  -규정지어지다:동:1
  -규정짓다:동:4
  -규정하다:동:1
  -규정하다:동:170
  -규정화하다:동:1
  +규정지어지:동:1
  +규정짓:동:4
  +규정하:동:1
  +규정하:동:170
  +규정화하:동:1
   규제:명:113
  -규제되다:동:3
  +규제되:동:3
   규제력:명:1
  -규제받다:동:1
  +규제받:동:1
   규제법:명:1
   규제책:명:1
  -규제하다:동:21
  +규제하:동:21
   규찰대:명:2
   규칙:명:1
   규칙:명:102
   규칙성:명:7
   규칙적:관:1
   규칙적:명:47
  -규칙화되다:동:1
  +규칙화되:동:1
   규탄:명:10
  -규탄되다:동:2
  -규탄하다:동:7
  -규합하다:동:1
  +규탄되:동:2
  +규탄하:동:7
  +규합하:동:1
   균:명:4
   균근:명:2
   균등:명:3
  -균등하다:형:4
  +균등하:형:4
   균등히:부:2
   균분:명:2
   균열:명:11
  -균열되다:동:1
  +균열되:동:1
   균일가:명:3
   균일성:명:1
  -균일하다:형:5
  +균일하:형:5
   균전제:명:1
  -균점되다:동:1
  -균점하다:동:1
  +균점되:동:1
  +균점하:동:1
   균제성:명:1
  -균질화되다:동:1
  +균질화되:동:1
   균형:명:125
  -균형되다:동:2
  +균형되:동:2
   균형미:명:1
   균형잡기:명:3
   균형적:관:1
  @@ -6465,13 +6465,13 @@
   귤:명:14
   귤색:명:1
   그:감:197
  -그:관:9,413
  -그:대:6,305
  +그:관:9413
  +그:대:6305
   그간:명:31
   그간:부:4
   그같이:부:2
  -그거:대:1,237
  -그것:대:2,542
  +그거:대:1237
  +그것:대:2542
   그것참:감:4
   그곳:대:259
   그그:대:1
  @@ -6490,13 +6490,13 @@
   그네:대:3
   그네:명:6
   그네뛰기:명:7
  -그녀:대:1,884
  +그녀:대:1884
   그년:대:2
   그노시스파:명:1
   그놈:대:46
   그늘:명:88
   그늘나무:명:1
  -그늘지다:동:8
  +그늘지:동:8
   그니까:접:185
   그다음:명:73
   그다지:부:87
  @@ -6508,18 +6508,18 @@
   그대로:부:565
   그동안:명:435
   그득:부:1
  -그득하다:형:5
  +그득하:형:5
   그들먹이:부:1
   그따우:관:1
   그따위:관:3
   그따위:대:1
   그딴:관:2
  -그때:명:1,023
  +그때:명:1023
   그때그때:명:13
   그때그때:부:28
   그라:감:1
   그라고:접:1
  -그라다:동:6
  +그라:동:6
   그라마:접:1
   그라모:접:1
   그라문:접:2
  @@ -6537,13 +6537,13 @@
   그래두:불:1
   그래라:불:2
   그래서:불:17
  -그래서:접:1,254
  +그래서:접:1254
   그래야:불:41
   그래야만:불:9
   그래야지:불:11
   그래요:불:70
   그래유:불:1
  -그래지다:동:1
  +그래지:동:1
   그래프:명:9
   그래픽:명:18
   그래픽스:명:3
  @@ -6555,36 +6555,36 @@
   그랴:감:1
   그러게:감:6
   그러게:부:6
  -그러그러하다:형:1
  -그러나:접:3,457
  +그러그러하:형:1
  +그러나:접:3457
   그러니까:접:279
  -그러다:동:1,662
  +그러:동:1662
   그러데이션:명:1
  -그러데이션되다:동:1
  -그러데이션시키다:동:2
  -그러데이션하다:동:2
  +그러데이션되:동:1
  +그러데이션시키:동:2
  +그러데이션하:동:2
   그러면:접:342
  -그러모으다:동:1
  +그러모으:동:1
   그러므로:접:203
  -그러안다:동:1
  -그러쥐다:동:2
  +그러안:동:1
  +그러쥐:동:2
   그러지룩:명:1
  -그러하다:형:467
  +그러하:형:467
   그럭저럭:부:12
  -그런:관:2,353
  +그런:관:2353
   그런께:접:1
   그런대로:부:44
  -그런데:접:1,227
  +그런데:접:1227
   그런디:접:1
   그런저런:관:6
  -그럴듯하다:형:31
  -그럴싸하다:형:11
  +그럴듯하:형:31
  +그럴싸하:형:11
   그럼:감:77
   그럼:접:445
   그렁그렁:부:1
   그렁그렁:부:2
  -그렁그렁하다:형:1
  -그렇다:형:2,905
  +그렁그렁하:형:1
  +그렇:형:2905
   그렇지:감:59
   그렇지만:접:204
   그레고리력:명:5
  @@ -6595,29 +6595,29 @@
   그려:감:1
   그려도:불:1
   그려유:불:1
  -그려지다:동:72
  +그려지:동:72
   그령:명:1
   그로기:명:1
   그로코롬:부:1
  -그로테스크하다:형:3
  +그로테스크하:형:3
   그루:명:2
   그루:의:29
   그루갈이:명:4
   그루터기:명:3
   그룹:명:255
   그룹사:명:1
  -그르다:형:35
  -그르치다:동:7
  +그르:형:35
  +그르치:동:7
   그릇:명:146
  -그릇되다:동:32
  +그릇되:동:32
   그리:부:164
   그리:부:8
  -그리고:접:2,384
  +그리고:접:2384
   그리구:접:2
  -그리다:동:457
  -그리다:동:9
  +그리:동:457
  +그리:동:9
   그리도:부:13
  -그리되다:동:5
  +그리되:동:5
   그리로:부:16
   그리스:명:1
   그리스도교:명:1
  @@ -6625,10 +6625,10 @@
   그리스어:명:3
   그리스적:관:1
   그리움:명:25
  -그리워지다:동:5
  -그리워하다:동:22
  +그리워지:동:5
  +그리워하:동:22
   그리위벽:명:1
  -그리하다:동:8
  +그리하:동:8
   그리하여:접:194
   그린:명:6
   그린벨트:명:42
  @@ -6644,15 +6644,15 @@
   그림책:명:14
   그림판:명:1
   그립:명:5
  -그립다:형:51
  +그립:형:51
   그마:부:1
   그만:부:290
   그만:부:5
  -그만그만하다:형:2
  -그만두다:동:118
  +그만그만하:형:2
  +그만두:동:118
   그만큼:명:7
   그만큼:부:149
  -그만하다:형:26
  +그만하:형:26
   그맘때:명:1
   그면:접:11
   그물:명:17
  @@ -6664,16 +6664,16 @@
   그분:대:78
   그사이:명:25
   그새:명:6
  -그슬리다:동:2
  +그슬리:동:2
   그야:부:17
   그야말로:부:93
  -그어지다:동:4
  +그어지:동:4
   그예:부:1
  -그윽하다:형:24
  +그윽하:형:24
   그윽히:부:1
  -그을다:동:7
  -그을리다:동:6
  -그을리다:동:7
  +그을:동:7
  +그을리:동:6
  +그을리:동:7
   그을음:명:2
   그이:대:100
   그자:대:5
  @@ -6689,16 +6689,16 @@
   그중:명:209
   그즈음:명:10
   그지:불:10
  -그지없다:형:15
  +그지없:형:15
   그지없이:부:6
   그쪽:대:68
   그쯤:명:1
   그쯤:부:4
  -그쯤하다:형:1
  +그쯤하:형:1
   그치:감:28
   그치:대:2
   그치:불:2
  -그치다:동:199
  +그치:동:199
   그치만:접:2
   그케:불:10
   그토록:부:63
  @@ -6713,53 +6713,53 @@
   극단론:명:1
   극단적:관:7
   극단적:명:29
  -극단화되다:동:2
  +극단화되:동:2
   극대화:명:6
  -극대화되다:동:4
  -극대화시키다:동:5
  -극대화하다:동:7
  +극대화되:동:4
  +극대화시키:동:5
  +극대화하:동:7
   극도:명:22
   극독물:명:1
   극돌기:명:5
   극동:명:3
   극락:명:5
   극락세계:명:1
  -극락왕생하다:동:1
  +극락왕생하:동:1
   극락전:명:5
   극락정토:명:1
   극력:명:1
   극렬:명:3
   극렬분자:명:2
  -극렬하다:형:1
  -극명하다:형:12
  +극렬하:형:1
  +극명하:형:12
   극명히:부:1
   극목:명:1
   극미:명:2
   극미량:명:2
   극복:명:1
   극복:명:47
  -극복되다:동:11
  -극복시키다:동:1
  -극복하다:동:1
  -극복하다:동:169
  +극복되:동:11
  +극복시키:동:1
  +극복하:동:1
  +극복하:동:169
   극본:명:6
   극비:명:2
   극빈자:명:1
   극빈층:명:1
  -극빈하다:형:1
  +극빈하:형:1
   극성:명:13
  -극성맞다:형:1
  -극성스럽다:형:8
  +극성맞:형:1
  +극성스럽:형:8
   극성파:명:1
  -극성하다:형:1
  +극성하:형:1
   극소국가:명:1
   극소수:명:6
   극소화:명:1
  -극소화시키다:동:1
  -극소화하다:동:1
  -극심하다:형:30
  -극심해지다:동:1
  -극악하다:형:2
  +극소화시키:동:1
  +극소화하:동:1
  +극심하:형:30
  +극심해지:동:1
  +극악하:형:2
   극약:명:5
   극언:명:1
   극영화:명:4
  @@ -6780,7 +6780,7 @@
   극좌:명:1
   극중극:명:4
   극지방:명:1
  -극진하다:형:6
  +극진하:형:6
   극진히:부:2
   극초단파:명:2
   극치:명:14
  @@ -6790,7 +6790,7 @@
   극형:명:3
   극화:명:1
   극화:명:2
  -극화하다:동:5
  +극화하:동:5
   극히:부:69
   근:관:15
   근:명:1
  @@ -6799,16 +6799,16 @@
   근거:명:182
   근거리:명:3
   근거지:명:3
  -근거하다:동:50
  +근거하:동:50
   근검:명:1
   근검절약:명:2
  -근검절약하다:동:1
  +근검절약하:동:1
   근경:명:1
  -근고하다:동:1
  +근고하:동:1
   근교:명:18
   근근:부:1
   근근이:부:3
  -근근하다:형:1
  +근근하:형:1
   근기:명:1
   근까:접:5
   근년:명:12
  @@ -6824,7 +6824,7 @@
   근대적:명:10
   근대주의적:관:1
   근대화:명:9
  -근대화되다:동:2
  +근대화되:동:2
   근데:접:380
   근동:명:3
   근두운:명:1
  @@ -6839,43 +6839,43 @@
   근막통:명:6
   근면:명:4
   근면성:명:2
  -근면하다:형:5
  +근면하:형:5
   근무:명:78
   근무소:명:1
   근무자:명:4
   근무조:명:2
   근무지:명:3
   근무처:명:2
  -근무하다:동:76
  +근무하:동:76
   근방:명:9
   근본:명:90
  -근본스럽다:형:1
  +근본스럽:형:1
   근본적:관:20
   근본적:명:143
   근본주의:명:1
   근본주의적:관:1
   근본책:명:1
   근사치:명:1
  -근사하다:형:21
  +근사하:형:21
   근성:명:7
   근세:명:1
   근세:명:6
   근세사:명:3
   근소세:명:3
  -근소하다:형:2
  +근소하:형:2
   근속:명:6
  -근속하다:동:1
  +근속하:동:1
   근시안:명:1
   근시안적:관:1
   근시안적:명:4
   근신:명:4
  -근신하다:동:3
  +근신하:동:3
   근실히:부:1
   근심:명:21
   근심덩어리:명:1
  -근심스럽다:형:4
  -근심하다:동:4
  -근엄하다:형:5
  +근심스럽:형:4
  +근심하:동:4
  +근엄하:형:5
   근엄화:명:1
   근연종:명:1
   근왕주의:명:1
  @@ -6890,18 +6890,18 @@
   근자:명:6
   근저:명:3
   근절:명:10
  -근절되다:동:3
  -근절시키다:동:2
  +근절되:동:3
  +근절시키:동:2
   근절안:명:1
   근절책:명:1
  -근절하다:동:5
  +근절하:동:5
   근접:명:4
  -근접하다:동:17
  +근접하:동:17
   근중:명:1
   근지구력:명:3
  -근지럽다:형:1
  -근질거리다:동:3
  -근질근질하다:형:1
  +근지럽:형:1
  +근질거리:동:3
  +근질근질하:형:1
   근처:명:199
   근친:명:1
   근친상간적:관:1
  @@ -6925,13 +6925,13 @@
   글방:명:4
   글쇠:명:3
   글쇠식:명:1
  -글썽거려지다:동:1
  -글썽거리다:동:6
  -글썽글썽하다:동:1
  -글썽이다:동:4
  -글썽하다:동:3
  -글썽하다:형:1
  -글썽해지다:동:3
  +글썽거려지:동:1
  +글썽거리:동:6
  +글썽글썽하:동:1
  +글썽이:동:4
  +글썽하:동:3
  +글썽하:형:1
  +글썽해지:동:3
   글쎄:감:111
   글쎄다:감:2
   글쎄요:감:47
  @@ -6949,14 +6949,14 @@
   글줄:명:1
   글짓기:명:10
   글피:명:1
  -긁다:동:39
  -긁어내다:동:6
  -긁어모으다:동:2
  -긁적거리다:동:4
  +긁:동:39
  +긁어내:동:6
  +긁어모으:동:2
  +긁적거리:동:4
   긁적긁적:부:1
  -긁적대다:동:1
  -긁적이다:동:1
  -긁히다:동:5
  +긁적대:동:1
  +긁적이:동:1
  +긁히:동:5
   금:명:1
   금:명:15
   금:명:34
  @@ -6979,7 +6979,7 @@
   금기:명:27
   금기담:명:11
   금기라:명:1
  -금기시하다:동:2
  +금기시하:동:2
   금남:명:2
   금녀:명:2
   금년:명:62
  @@ -6988,7 +6988,7 @@
   금단:명:1
   금당:명:3
   금도:명:1
  -금도금되다:동:1
  +금도금되:동:1
   금동:명:4
   금력:명:1
   금리:명:77
  @@ -7042,7 +7042,7 @@
   금언:명:1
   금연:명:30
   금연법:명:1
  -금연하다:동:1
  +금연하:동:1
   금요일:명:21
   금욕:명:2
   금욕적:명:1
  @@ -7057,7 +7057,7 @@
   금융인:명:3
   금융적:관:1
   금은방:명:4
  -금의환향하다:동:1
  +금의환향하:동:1
   금이빨:명:5
   금일:명:1
   금일봉:명:1
  @@ -7074,121 +7074,121 @@
   금주주의:명:1
   금지:명:82
   금지곡:명:1
  -금지당하다:동:2
  -금지되다:동:32
  +금지당하:동:2
  +금지되:동:32
   금지령:명:2
   금지법:명:2
  -금지시키다:동:5
  +금지시키:동:5
   금지안:명:1
   금지옥엽:명:2
  -금지하다:동:39
  -금쪽같다:형:4
  +금지하:동:39
  +금쪽같:형:4
   금치산자:명:1
   금테:명:5
   금팔찌:명:1
   금패:명:1
   금표비:명:1
   금품:명:30
  -금하다:동:37
  +금하:동:37
   금형:명:1
   금후:명:2
   급:명:179
   급:부:2
  -급강하하다:동:2
  -급격하다:형:40
  +급강하하:동:2
  +급격하:형:40
   급격히:부:34
   급경사:명:2
  -급급하다:형:22
  +급급하:형:22
   급기야:부:31
   급등:명:10
   급등세:명:2
  -급등하다:동:11
  +급등하:동:11
   급락:명:1
  -급락하다:동:3
  +급락하:동:3
   급료:명:4
   급류:명:4
   급매물:명:1
   급모:명:1
   급무:명:1
  -급박하다:형:4
  -급박해지다:동:2
  +급박하:형:4
  +급박해지:동:2
   급반등세:명:1
  -급반등하다:동:1
  +급반등하:동:1
   급배수:명:1
   급변:명:1
  -급변하다:동:7
  -급부상하다:동:2
  +급변하:동:7
  +급부상하:동:2
   급브레이크:명:1
   급사:명:1
   급사:명:1
   급사면:명:1
  -급사하다:동:1
  -급상승하다:동:3
  +급사하:동:1
  +급상승하:동:3
   급선:명:1
   급선무:명:9
  -급선회하다:동:1
  +급선회하:동:1
   급성:명:11
   급성장:명:3
  -급성장하다:동:5
  +급성장하:동:5
   급소:명:5
   급속:명:3
   급속도:명:8
  -급속하다:형:20
  +급속하:형:20
   급속히:부:33
   급수:명:10
   급수:명:2
  -급수되다:동:1
  +급수되:동:1
   급습:명:2
  -급습하다:동:1
  +급습하:동:1
   급식:명:1
  -급식하다:동:1
  -급신장하다:동:1
  +급식하:동:1
  +급신장하:동:1
   급여:명:14
   급우:명:8
   급유:명:2
  -급유하다:동:1
  +급유하:동:1
   급자기:부:1
  -급작스럽다:형:3
  +급작스럽:형:3
   급전:명:1
  -급정거하다:동:3
  +급정거하:동:3
   급제:명:2
   급제동:명:1
  -급제하다:동:9
  +급제하:동:9
   급조:명:2
  -급조되다:동:3
  -급조하다:동:2
  +급조되:동:3
  +급조하:동:2
   급증:명:14
  -급증가하다:동:1
  -급증하다:동:33
  +급증가하:동:1
  +급증하:동:33
   급지:명:3
   급진:명:4
   급진적:관:2
   급진적:명:6
   급진전:명:1
  -급진전되다:동:1
  +급진전되:동:1
   급진주의:명:1
   급진주의자:명:1
   급체:명:1
   급커브:명:6
   급탕비:명:1
   급파:명:1
  -급파하다:동:1
  +급파하:동:1
   급팽창:명:2
   급팽창론:명:1
  -급하다:형:88
  -급해지다:동:1
  +급하:형:88
  +급해지:동:1
   급행열차:명:1
   급화:명:1
   급회전:명:1
   급히:부:40
  -긋다:동:4
  -긋다:동:51
  -긍구하다:동:1
  +긋:동:4
  +긋:동:51
  +긍구하:동:1
   긍정:명:8
   긍정론:명:12
   긍정적:관:11
   긍정적:명:70
  -긍정하다:동:10
  +긍정하:동:10
   긍지:명:24
   기:관:1
   기:명:1
  @@ -7204,8 +7204,8 @@
   기가:명:4
   기가바이트:의:2
   기각:명:3
  -기각되다:동:1
  -기각하다:동:4
  +기각되:동:1
  +기각하:동:4
   기간:명:25
   기간:명:322
   기간:명:7
  @@ -7216,10 +7216,10 @@
   기강:명:25
   기개:명:10
   기거:대:6
  -기거하다:동:1
  -기거하다:동:7
  +기거하:동:1
  +기거하:동:7
   기겁:명:3
  -기겁하다:동:1
  +기겁하:동:1
   기견:명:1
   기계:명:12
   기계:명:247
  @@ -7234,13 +7234,13 @@
   기계주의:명:1
   기계총:명:1
   기계화:명:12
  -기계화되다:동:2
  -기계화하다:동:2
  +기계화되:동:2
  +기계화하:동:2
   기고:명:3
   기고가:명:6
  -기고만장하다:동:2
  -기고하다:동:1
  -기고하다:동:10
  +기고만장하:동:2
  +기고하:동:1
  +기고하:동:10
   기골:명:2
   기공:명:1
   기공:명:1
  @@ -7262,7 +7262,7 @@
   기관차:명:6
   기관총:명:1
   기관화:명:1
  -기괴하다:형:6
  +기괴하:형:6
   기교:명:14
   기교적:관:1
   기교적:명:2
  @@ -7273,30 +7273,30 @@
   기구:명:64
   기구업:명:1
   기구업자:명:1
  -기구하다:동:1
  -기구하다:형:5
  +기구하:동:1
  +기구하:형:5
   기구화:명:1
  -기구화하다:동:1
  -기군망상하다:동:1
  +기구화하:동:1
  +기군망상하:동:1
   기권:명:2
   기권:명:5
  -기권하다:동:1
  +기권하:동:1
   기근:명:7
   기금:명:1
   기금:명:46
   기기:명:62
  -기기묘묘하다:형:1
  -기꺼워하다:동:1
  +기기묘묘하:형:1
  +기꺼워하:동:1
   기꺼이:부:26
  -기껍다:형:1
  +기껍:형:1
   기껏:부:21
   기껏해야:부:23
  -기나길다:형:10
  +기나길:형:10
   기내:명:5
   기내식:명:1
   기념:명:40
   기념관:명:16
  -기념되다:동:2
  +기념되:동:2
   기념물:명:5
   기념비:명:10
   기념비적:관:4
  @@ -7313,7 +7313,7 @@
   기념탑:명:3
   기념품:명:10
   기념품점:명:1
  -기념하다:동:25
  +기념하:동:25
   기념행사:명:10
   기념호:명:1
   기념회:명:5
  @@ -7330,33 +7330,33 @@
   기능주의:명:6
   기능주의적:관:16
   기능직:명:2
  -기능하다:동:17
  -기다:동:36
  -기다:형:1
  -기다랗다:형:21
  -기다려지다:동:6
  -기다리다:동:635
  +기능하:동:17
  +기:동:36
  +기:형:1
  +기다랗:형:21
  +기다려지:동:6
  +기다리:동:635
   기단:명:3
   기단부:명:2
   기대:명:158
   기대감:명:16
  -기대다:동:1
  -기대다:동:54
  -기대되다:동:37
  -기대서다:동:1
  -기대앉다:동:3
  +기대:동:1
  +기대:동:54
  +기대되:동:37
  +기대서:동:1
  +기대앉:동:3
   기대주:명:1
   기대치:명:3
  -기대하다:동:177
  +기대하:동:177
   기도:명:16
   기도:명:25
   기도:명:5
  -기도되다:동:1
  -기도드리다:동:3
  +기도되:동:1
  +기도드리:동:3
   기도문:명:1
   기도원:명:12
  -기도하다:동:12
  -기도하다:동:32
  +기도하:동:12
  +기도하:동:32
   기도회:명:3
   기독:명:4
   기독교:명:44
  @@ -7370,9 +7370,9 @@
   기동대:명:1
   기동력:명:5
   기동성:명:1
  -기동하다:동:2
  +기동하:동:2
   기두발:명:1
  -기둘리다:동:2
  +기둘리:동:2
   기둥:명:51
   기둥뿌리:명:1
   기득권:명:37
  @@ -7381,7 +7381,7 @@
   기득권층:명:16
   기따우:관:1
   기때:명:2
  -기똥차다:형:1
  +기똥차:형:1
   기라성:명:2
   기래:불:1
   기량:명:1
  @@ -7390,25 +7390,25 @@
   기러기:명:9
   기러니까:접:1
   기러니까니:접:1
  -기러다:동:1
  +기러:동:1
   기런:관:1
   기런데:접:1
   기럼:감:3
   기럼:부:1
  -기렇다:형:1
  +기렇:형:1
   기력:명:9
   기로:명:5
   기록:명:208
  -기록되다:동:46
  +기록되:동:46
   기록물:명:2
   기록부:명:3
   기록실:명:7
   기록적:명:1
  -기록하다:동:182
  +기록하:동:182
   기록화:명:5
   기론:명:3
   기류:명:80
  -기르다:동:254
  +기르:동:254
   기름:명:116
   기름기:명:14
   기름나물:명:1
  @@ -7416,26 +7416,26 @@
   기름병:명:3
   기름보일러:명:1
   기름종이:명:1
  -기름지다:형:10
  +기름지:형:10
   기름칠:명:1
  -기름칠하다:동:1
  +기름칠하:동:1
   기름투성이:명:2
   기리고:접:2
  -기리다:동:23
  +기리:동:23
   기린:명:2
   기마:명:7
   기마이:명:1
   기마전:명:1
  -기막히다:형:34
  +기막히:형:34
   기만:관:1
   기만:명:6
   기만적:관:4
   기만책:명:1
  -기만하다:동:4
  +기만하:동:4
   기말:명:11
   기명:명:1
   기모:명:1
  -기묘하다:형:20
  +기묘하:형:20
   기무:명:6
   기무사:명:15
   기물:명:2
  @@ -7443,27 +7443,27 @@
   기미:명:28
   기미:명:3
   기민:명:1
  -기민하다:형:6
  +기민하:형:6
   기밀:명:43
   기밀문서:명:2
   기반:명:150
   기반암:명:1
  -기반하다:동:6
  +기반하:동:6
   기발:명:1
  -기발하다:형:19
  +기발하:형:19
   기방:명:2
   기법:명:73
   기법적:명:1
   기벽:명:1
   기별:명:6
   기병:명:1
  -기병하다:동:2
  +기병하:동:2
   기복:명:1
   기복:명:3
   기복:명:3
   기복량:명:1
   기복성:명:1
  -기복하다:동:1
  +기복하:동:1
   기본:명:264
   기본권:명:64
   기본급:명:2
  @@ -7479,11 +7479,11 @@
   기부:명:4
   기부:명:5
   기부금:명:11
  -기부되다:동:1
  -기부하다:동:2
  +기부되:동:1
  +기부하:동:2
   기분:명:402
  -기뻐하다:동:61
  -기쁘다:형:139
  +기뻐하:동:61
  +기쁘:형:139
   기쁨:명:138
   기사:명:171
   기사:명:39
  @@ -7491,9 +7491,9 @@
   기사:명:4
   기사:명:9
   기사감:명:2
  -기사화되다:동:1
  -기사화시키다:동:1
  -기사화하다:동:1
  +기사화되:동:1
  +기사화시키:동:1
  +기사화하:동:1
   기사회생:명:3
   기산일:명:1
   기산점:명:1
  @@ -7504,8 +7504,8 @@
   기상대:명:6
   기상도:명:1
   기상천외:명:2
  -기상천외하다:형:3
  -기상하다:동:2
  +기상천외하:형:3
  +기상하:동:2
   기색:명:31
   기생:명:4
   기생:명:9
  @@ -7514,7 +7514,7 @@
   기생집:명:1
   기생충:명:1
   기생충적:관:1
  -기생하다:동:5
  +기생하:동:5
   기선:명:1
   기선:명:1
   기설과:명:1
  @@ -7523,24 +7523,24 @@
   기성세대:명:30
   기성품:명:1
   기세:명:27
  -기세등등하다:형:2
  -기세등등해지다:동:1
  +기세등등하:형:2
  +기세등등해지:동:1
   기소:명:29
  -기소되다:동:26
  +기소되:동:26
   기소장:명:1
  -기소하다:동:14
  -기속하다:동:1
  +기소하:동:14
  +기속하:동:1
   기수:명:1
   기수:명:7
   기숙사:명:39
  -기숙하다:동:1
  +기숙하:동:1
   기술:명:12
   기술:명:591
   기술계:명:1
   기술공:명:1
   기술과:명:1
   기술껏:부:1
  -기술되다:동:5
  +기술되:동:5
   기술력:명:1
   기술서:명:2
   기술자:명:48
  @@ -7551,17 +7551,17 @@
   기술지:명:1
   기술직:명:4
   기술진:명:2
  -기술하다:동:30
  +기술하:동:30
   기슭:명:27
   기습:명:13
  -기습당하다:동:1
  +기습당하:동:1
   기습용:명:1
   기습적:명:2
  -기습하다:동:3
  +기습하:동:3
   기승:명:14
  -기시다:동:1
  +기시:동:1
   기시다:보:3
  -기식하다:동:1
  +기식하:동:1
   기신:명:1
   기실:명:1
   기실:부:6
  @@ -7575,19 +7575,19 @@
   기압:명:4
   기압골:명:2
   기약:명:1
  -기약하다:동:3
  +기약하:동:3
   기어:명:5
  -기어가다:동:7
  -기어들다:동:18
  -기어오르다:동:7
  +기어가:동:7
  +기어들:동:18
  +기어오르:동:7
   기어이:부:28
   기어코:부:9
   기억:명:262
  -기억나다:동:22
  -기억되다:동:15
  +기억나:동:22
  +기억되:동:15
   기억력:명:9
  -기억시키다:동:1
  -기억하다:동:115
  +기억시키:동:1
  +기억하:동:115
   기업:명:1
   기업:명:650
   기업가:명:9
  @@ -7599,10 +7599,10 @@
   기업적:명:1
   기업주:명:4
   기업체:명:16
  -기업화되다:동:1
  -기업화하다:동:1
  +기업화되:동:1
  +기업화하:동:1
   기여:명:35
  -기여하다:동:69
  +기여하:동:69
   기역:명:3
   기염:명:7
   기예:명:2
  @@ -7616,23 +7616,23 @@
   기왕에:부:8
   기왕이면:부:1
   기용:명:4
  -기용되다:동:6
  -기용하다:동:16
  +기용되:동:6
  +기용하:동:16
   기우:명:8
  -기우듬하다:형:1
  +기우듬하:형:1
   기우뚱:부:1
  -기우뚱거리다:동:3
  -기우뚱하다:동:2
  +기우뚱거리:동:3
  +기우뚱하:동:2
   기우제:명:1
   기운:명:5
   기운:명:74
  -기운차다:형:3
  +기운차:형:3
   기울기:명:4
  -기울다:동:31
  -기울어지다:동:21
  -기울여지다:동:1
  -기울이다:동:180
  -기웃거리다:동:23
  +기울:동:31
  +기울어지:동:21
  +기울여지:동:1
  +기울이:동:180
  +기웃거리:동:23
   기웃기웃:부:2
   기원:명:1
   기원:명:2
  @@ -7641,25 +7641,25 @@
   기원론:명:2
   기원설:명:2
   기원전:명:67
  -기원하다:동:2
  -기원하다:동:20
  +기원하:동:2
  +기원하:동:20
   기원후:명:6
   기율:명:10
  -기이하다:형:11
  +기이하:형:11
   기인:명:2
   기인:명:3
  -기인되다:동:1
  +기인되:동:1
   기인역:명:1
   기인전:명:2
   기인제:명:1
  -기인하다:동:37
  +기인하:동:37
   기일:명:3
   기일:명:9
   기일원론:명:1
   기입:명:1
  -기입되다:동:1
  +기입되:동:1
   기입장:명:22
  -기입하다:동:3
  +기입하:동:3
   기자:명:342
   기자단:명:1
   기자상:명:1
  @@ -7670,8 +7670,8 @@
   기장:명:2
   기장:명:2
   기재:명:3
  -기재되다:동:9
  -기재하다:동:17
  +기재되:동:9
  +기재하:동:17
   기저:명:5
   기저귀:명:33
   기저면:명:3
  @@ -7684,21 +7684,21 @@
   기전체:명:2
   기절:명:2
   기절초풍:명:3
  -기절초풍하다:동:1
  -기절하다:동:6
  +기절초풍하:동:1
  +기절하:동:6
   기점:명:23
   기정사실:명:7
  -기정사실화되다:동:2
  -기정사실화하다:동:4
  +기정사실화되:동:2
  +기정사실화하:동:4
   기제:명:4
   기조:명:17
   기조실장:명:8
   기조연설:명:1
   기존:명:242
  -기존하다:동:1
  +기존하:동:1
   기종:명:12
  -기죽다:동:8
  -기죽이다:동:1
  +기죽:동:8
  +기죽이:동:1
   기준:명:280
   기준계:명:1
   기준선:명:1
  @@ -7709,7 +7709,7 @@
   기증:명:24
   기증받다:명:1
   기증자:명:1
  -기증하다:동:23
  +기증하:동:23
   기지:명:53
   기지:명:6
   기지개:명:6
  @@ -7717,10 +7717,10 @@
   기지촌:명:14
   기진:명:1
   기진맥진:명:1
  -기진맥진하다:동:2
  +기진맥진하:동:2
   기진장:명:1
  -기진하다:동:1
  -기진해지다:동:1
  +기진하:동:1
  +기진해지:동:1
   기질:명:23
   기질:명:5
   기질성:명:2
  @@ -7730,7 +7730,7 @@
   기차놀이:명:2
   기차역:명:4
   기착지:명:2
  -기찰하다:동:1
  +기찰하:동:1
   기찻길:명:2
   기척:명:14
   기천:관:1
  @@ -7739,12 +7739,12 @@
   기체:명:14
   기초:명:186
   기초:명:2
  -기초되다:동:1
  +기초되:동:1
   기초반:명:2
   기초식품:명:1
   기초적:관:4
   기초적:명:18
  -기초하다:동:63
  +기초하:동:63
   기초화장:명:1
   기총:명:1
   기축:명:1
  @@ -7754,22 +7754,22 @@
   기치:명:6
   기침:명:22
   기침감기:명:1
  -기침하다:동:2
  +기침하:동:2
   기타:명:27
   기타:명:67
   기탁금:명:2
  -기탁되다:동:1
  -기탁하다:동:5
  +기탁되:동:1
  +기탁하:동:5
   기탄:명:1
   기탄없이:부:2
  -기특하다:형:8
  -기특해하다:동:1
  +기특하:형:8
  +기특해하:동:1
   기틀:명:22
   기판:명:3
   기포:명:1
  -기포화되다:동:1
  +기포화되:동:1
   기폭:명:1
  -기폭시키다:동:1
  +기폭시키:동:1
   기폭제:명:2
   기표소:명:1
   기품:명:1
  @@ -7779,13 +7779,13 @@
   기피:명:12
   기피성:명:1
   기피증:명:2
  -기피하다:동:36
  +기피하:동:36
   기필코:부:9
   기하:명:1
   기하급수:명:2
   기하급수적:명:5
  -기하다:동:27
  -기하다:동:4
  +기하:동:27
  +기하:동:4
   기하학:명:6
   기하학적:관:22
   기하학적:명:9
  @@ -7794,7 +7794,7 @@
   기한부:명:3
   기합:명:3
   기항지:명:2
  -기항하다:동:1
  +기항하:동:1
   기해:명:2
   기행:명:2
   기행:명:8
  @@ -7805,7 +7805,7 @@
   기형아:명:6
   기형적:명:2
   기형화:명:1
  -기형화되다:동:1
  +기형화되:동:1
   기호:명:35
   기호:명:40
   기호론적:관:2
  @@ -7815,7 +7815,7 @@
   기호학:명:2
   기호학적:관:2
   기호학파:명:2
  -기호화하다:동:1
  +기호화하:동:1
   기혼:명:11
   기혼자:명:1
   기화:명:1
  @@ -7833,7 +7833,7 @@
   기획국:명:1
   기획국장:명:2
   기획단:명:1
  -기획되다:동:1
  +기획되:동:1
   기획력:명:3
   기획사:명:1
   기획서:명:1
  @@ -7841,54 +7841,54 @@
   기획실장:명:4
   기획원:명:8
   기획자:명:5
  -기획하다:동:15
  +기획하:동:15
   기후:명:89
   기후구:명:1
   기후적:관:1
   기후학자:명:1
   긴가민가:명:1
  -긴가민가하다:형:1
  +긴가민가하:형:1
   긴급:명:67
  -긴급하다:형:9
  +긴급하:형:9
   긴급회의:명:3
   긴급히:부:3
   긴긴:관:3
   긴긴밤:명:2
   긴데:접:1
   긴말:명:1
  -긴말하다:동:1
  +긴말하:동:1
   긴밀감:명:1
  -긴밀하다:형:14
  -긴밀해지다:동:2
  +긴밀하:형:14
  +긴밀해지:동:2
   긴밀화:명:1
   긴밀히:부:1
   긴박감:명:1
  -긴박되다:동:1
  +긴박되:동:1
   긴박성:명:2
  -긴박시키다:동:1
  -긴박하다:형:11
  +긴박시키:동:1
  +긴박하:형:11
   긴소매:명:1
   긴요성:명:1
  -긴요하다:형:6
  -긴요해지다:동:1
  +긴요하:형:6
  +긴요해지:동:1
   긴잎회양목:명:3
   긴장:명:87
   긴장감:명:24
  -긴장되다:동:17
  +긴장되:동:17
   긴장미:명:1
   긴장성:명:3
  -긴장시키다:동:3
  -긴장하다:동:51
  +긴장시키:동:3
  +긴장하:동:51
   긴차쿠:명:1
   긴축:명:2
   긴치마:명:1
   긴팔:명:1
  -긴하다:형:2
  +긴하:형:2
   긴히:부:3
  -긷다:동:11
  +긷:동:11
   길:명:1
   길:명:1
  -길:명:1,099
  +길:명:1099
   길:명:3
   길:명:5
   길:의:6
  @@ -7900,16 +7900,16 @@
   길길이:부:2
   길놀이:명:1
   길눈:명:1
  -길다:동:2
  -길다:형:509
  +길:동:2
  +길:형:509
   길더:의:11
   길동무:명:1
   길드:명:1
  -길들다:동:4
  -길들여지다:동:20
  -길들이다:동:12
  +길들:동:4
  +길들여지:동:20
  +길들이:동:12
   길라잡이:명:1
  -길러지다:동:15
  +길러지:동:15
   길룡:명:2
   길마:명:1
   길모퉁이:명:2
  @@ -7921,7 +7921,7 @@
   길섶:명:2
   길손:명:5
   길쌈:명:1
  -길어지다:동:27
  +길어지:동:27
   길옆:명:5
   길운:명:1
   길이:명:180
  @@ -7933,10 +7933,10 @@
   길조:명:3
   길지:명:6
   길지성:명:3
  -길쭉길쭉하다:형:1
  -길쭉하다:형:7
  -길차다:형:1
  -길하다:형:4
  +길쭉길쭉하:형:1
  +길쭉하:형:7
  +길차:형:1
  +길하:형:4
   길흉:명:1
   길흉사:명:1
   길흉화복:명:4
  @@ -7945,10 +7945,10 @@
   김:명:43
   김:의:26
   김매기:명:2
  -김매다:동:2
  +김매:동:2
   김발:명:5
   김밥:명:21
  -김새다:동:3
  +김새:동:3
   김장:명:5
   김장거리:명:2
   김장밭:명:1
  @@ -7960,67 +7960,67 @@
   김칫거리:명:1
   김칫국:명:5
   김칫독:명:5
  -깁다:동:7
  +깁:동:7
   깁스:명:5
  -깁스하다:동:1
  +깁스하:동:1
   깃:명:22
   깃:명:8
  -깃들다:동:24
  -깃들이다:동:5
  +깃들:동:24
  +깃들이:동:5
   깃발:명:24
   깃봉:명:1
   깃털:명:16
  -깊다:형:443
  -깊디깊다:형:1
  +깊:형:443
  +깊디깊:형:1
   깊숙이:부:37
  -깊숙하다:형:10
  -깊어지다:동:17
  +깊숙하:형:10
  +깊어지:동:17
   깊이:명:63
   깊이:부:138
   깊이깊이:부:1
   까까머리:명:1
   까꿍:감:1
  -까놓다:동:4
  -까다:동:15
  -까다로워지다:동:1
  -까다롭다:형:43
  -까닥거리다:동:1
  +까놓:동:4
  +까:동:15
  +까다로워지:동:1
  +까다롭:형:43
  +까닥거리:동:1
   까닥까닥:부:1
  -까닥이다:동:1
  -까닥하다:동:1
  +까닥이:동:1
  +까닥하:동:1
   까닭:명:234
  -까뒤집다:동:1
  +까뒤집:동:1
   까딱:부:2
  -까딱없다:형:2
  -까딱하다:동:4
  +까딱없:형:2
  +까딱하:동:4
   까딱하면:부:3
  -까라지다:동:1
  +까라지:동:1
   까르르:부:7
   까르륵:부:2
   까마귀:명:6
  -까마득하다:형:17
  -까마득허다:형:1
  +까마득하:형:17
  +까마득허:형:1
   까마득히:부:3
   까마중:명:1
   까막눈:명:1
   까만색:명:3
  -까맣다:형:62
  -까매지다:동:1
  -까먹다:동:16
  -까무느다:동:4
  +까맣:형:62
  +까매지:동:1
  +까먹:동:16
  +까무느:동:4
   까무룩:부:2
  -까무잡잡하다:형:4
  -까묵다:동:1
  +까무잡잡하:형:4
  +까묵:동:1
   까물까물:부:1
  -까발리다:동:5
  -까밝히다:동:1
  -까불거리다:동:1
  -까불다:동:1
  -까불다:동:8
  -까스르다:동:1
  -까슬까슬하다:형:2
  -까이다:동:1
  -까지르다:동:1
  +까발리:동:5
  +까밝히:동:1
  +까불거리:동:1
  +까불:동:1
  +까불:동:8
  +까스르:동:1
  +까슬까슬하:형:2
  +까이:동:1
  +까지르:동:1
   까짓:감:1
   까짓:관:3
   까짓것:감:3
  @@ -8030,56 +8030,56 @@
   까치밥:명:1
   까치수염:명:3
   까치집:명:2
  -까칠하다:형:4
  +까칠하:형:4
   까탈:명:1
  -까탈스럽다:형:1
  +까탈스럽:형:1
   까투리:명:9
   깍깍:부:16
   깍둑깍둑:부:1
   깍둑썰기:명:1
   깍듯이:부:14
  -깍듯하다:형:4
  +깍듯하:형:4
   깍쟁이:명:1
   깍지:명:2
   깍지:명:3
  -깎다:동:87
  -깎아내리다:동:3
  -깎아지르다:형:2
  -깎여지다:동:1
  -깎이다:동:6
  +깎:동:87
  +깎아내리:동:3
  +깎아지르:형:2
  +깎여지:동:1
  +깎이:동:6
   깐:명:2
  -깐깐하다:형:4
  +깐깐하:형:4
   깐깐히:부:1
  -깔기다:동:1
  +깔기:동:1
   깔깔:부:11
  -깔깔거리다:동:7
  -깔깔대다:동:6
  +깔깔거리:동:7
  +깔깔대:동:6
   깔깔이:명:1
  -깔깔해지다:동:1
  +깔깔해지:동:1
   깔끔:명:1
  -깔끔하다:형:33
  -깔다:동:64
  +깔끔하:형:33
  +깔:동:64
   깔딱:부:1
  -깔리다:동:80
  -깔보다:동:12
  -깔아뭉개다:동:1
  -깜깜하다:형:8
  -깜깜해지다:동:1
  +깔리:동:80
  +깔보:동:12
  +깔아뭉개:동:1
  +깜깜하:형:8
  +깜깜해지:동:1
   깜냥:명:1
   깜냥껏:부:1
   깜박:부:9
  -깜박거리다:동:13
  +깜박거리:동:13
   깜박깜박:부:1
   깜박등:명:1
  -깜박이다:동:6
  -깜박하다:동:5
  +깜박이:동:6
  +깜박하:동:5
   깜밥:명:2
   깜빡:부:16
  -깜빡거리다:동:2
  +깜빡거리:동:2
   깜빡이:명:2
  -깜빡이다:동:1
  -깜빡하다:동:4
  -깜뿍거리다:동:1
  +깜빡이:동:1
  +깜빡하:동:4
  +깜뿍거리:동:1
   깜서방:명:6
   깜시:명:1
   깜장:명:1
  @@ -8087,17 +8087,17 @@
   깜짝:부:76
   깜짝깜짝:부:3
   깜짝이야:감:2
  -깜짝하다:동:5
  -깜찍하다:형:3
  -깝죽대다:동:1
  +깜짝하:동:5
  +깜찍하:형:3
  +깝죽대:동:1
   깡:명:1
   깡그리:부:6
   깡깡:부:1
   깡깡이:명:1
   깡다구:명:1
  -깡마르다:형:5
  +깡마르:형:5
   깡보리밥:명:1
  -깡충거리다:동:1
  +깡충거리:동:1
   깡충깡충:부:1
   깡통:명:39
   깡패:명:16
  @@ -8105,99 +8105,99 @@
   깨금깨금:부:1
   깨끗:명:4
   깨끗이:부:113
  -깨끗하다:형:155
  -깨끗해지다:동:17
  -깨나다:동:1
  -깨다:동:1
  -깨다:동:59
  -깨다:동:94
  -깨닫다:동:200
  -깨달아지다:동:1
  +깨끗하:형:155
  +깨끗해지:동:17
  +깨나:동:1
  +깨:동:1
  +깨:동:59
  +깨:동:94
  +깨닫:동:200
  +깨달아지:동:1
   깨달음:명:44
  -깨뜨려지다:동:1
  -깨뜨리다:동:32
  -깨물다:동:20
  -깨부수다:동:2
  +깨뜨려지:동:1
  +깨뜨리:동:32
  +깨물:동:20
  +깨부수:동:2
   깨소금:명:27
   깨알:명:4
  -깨어나다:동:54
  -깨어지다:동:19
  -깨우다:동:42
  -깨우치다:동:37
  -깨지다:동:75
  +깨어나:동:54
  +깨어지:동:19
  +깨우:동:42
  +깨우치:동:37
  +깨지:동:75
   깨춤:명:1
  -깨치다:동:15
  +깨치:동:15
   깻버럭지:명:2
   깻잎:명:8
   깽깽:부:1
   깽깽이:명:3
   꺄꺄껴껴:부:1
   꺅:부:1
  -꺼내다:동:277
  -꺼내지다:동:1
  -꺼당기다:동:1
  -꺼들다:동:1
  -꺼뜨리다:동:2
  -꺼려지다:동:2
  -꺼려하다:동:9
  -꺼리다:동:31
  -꺼림칙하다:형:6
  +꺼내:동:277
  +꺼내지:동:1
  +꺼당기:동:1
  +꺼들:동:1
  +꺼뜨리:동:2
  +꺼려지:동:2
  +꺼려하:동:9
  +꺼리:동:31
  +꺼림칙하:형:6
   꺼먹초림:명:1
  -꺼멓다:형:7
  +꺼멓:형:7
   꺼벙이:명:2
   꺼뻑:부:1
   꺼이꺼이:부:1
  -꺼지다:동:11
  -꺼지다:동:52
  -꺼칠꺼칠하다:형:1
  -꺼칠하다:형:1
  -꺼칠해지다:동:1
  +꺼지:동:11
  +꺼지:동:52
  +꺼칠꺼칠하:형:1
  +꺼칠하:형:1
  +꺼칠해지:동:1
   꺼풀:명:6
   꺽꺽:부:1
   꺽실히:부:1
   꺾기:명:1
  -꺾다:동:67
  +꺾:동:67
   꺾쇠:명:4
  -꺾어지다:동:3
  +꺾어지:동:3
   꺾은선:명:1
  -꺾이다:동:24
  +꺾이:동:24
   꺾임선:명:1
   껄껄:부:11
  -껄껄거리다:동:1
  -껄껄대다:동:1
  -껄껄하다:형:1
  -껄끄러워하다:동:1
  -껄끄럽다:형:7
  -껄떡거리다:동:1
  +껄껄거리:동:1
  +껄껄대:동:1
  +껄껄하:형:1
  +껄끄러워하:동:1
  +껄끄럽:형:7
  +껄떡거리:동:1
   껄렁패:명:2
  -껄렁하다:형:1
  +껄렁하:형:1
   껌:명:45
  -껌껌하다:형:1
  -껌벅거리다:동:4
  -껌벅이다:동:4
  +껌껌하:형:1
  +껌벅거리:동:4
  +껌벅이:동:4
   껌뻑이:명:1
   껍데기:명:14
   껍질:명:93
   껑더리:명:1
   껑충:부:5
  -껑충거리다:동:2
  +껑충거리:동:2
   껑충껑충:부:2
   께:의:1
  -께름칙하다:형:5
  -껴안다:동:27
  -껴입다:동:8
  -껴입히다:동:1
  +께름칙하:형:5
  +껴안:동:27
  +껴입:동:8
  +껴입히:동:1
   꼬깃꼬깃:부:1
   꼬꼬:명:1
   꼬꼬:부:3
   꼬꼬댁:부:1
   꼬끼오:부:3
  -꼬느다:동:3
  -꼬다:동:24
  +꼬느:동:3
  +꼬:동:24
   꼬다리:명:1
  -꼬드기다:동:4
  -꼬들꼬들하다:형:1
  -꼬들꼬들해지다:동:1
  +꼬드기:동:4
  +꼬들꼬들하:형:1
  +꼬들꼬들해지:동:1
   꼬라비:명:2
   꼬라지:명:1
   꼬락서니:명:4
  @@ -8212,28 +8212,28 @@
   꼬마전구:명:4
   꼬막:명:3
   꼬막집:명:1
  -꼬매다:동:4
  +꼬매:동:4
   꼬맹이:명:4
  -꼬물거리다:동:1
  +꼬물거리:동:1
   꼬물꼬물:부:1
  -꼬물락거리다:동:1
  +꼬물락거리:동:1
   꼬박:부:26
   꼬박꼬박:부:12
  -꼬부라지다:동:8
  +꼬부라지:동:8
   꼬부랑:명:1
   꼬불꼬불:부:1
  -꼬불꼬불하다:형:1
  -꼬불치다:동:1
  -꼬불탕하다:형:1
  +꼬불꼬불하:형:1
  +꼬불치:동:1
  +꼬불탕하:형:1
   꼬빡:부:1
  -꼬이다:동:8
  -꼬이다:동:9
  -꼬이다:동:9
  +꼬이:동:8
  +꼬이:동:9
  +꼬이:동:9
   꼬임:명:1
  -꼬장꼬장하다:형:2
  -꼬질꼬질하다:형:2
  -꼬집다:동:27
  -꼬집히다:동:1
  +꼬장꼬장하:형:2
  +꼬질꼬질하:형:2
  +꼬집:동:27
  +꼬집히:동:1
   꼬챙이:명:2
   꼬치:명:11
   꼬치구이:명:2
  @@ -8253,30 +8253,30 @@
   꼴:명:195
   꼴:명:5
   꼴값:명:1
  -꼴같잖다:형:1
  +꼴같잖:형:1
   꼴깍:부:4
  -꼴깍하다:동:1
  +꼴깍하:동:1
   꼴내기:명:1
   꼴딱:부:1
  -꼴리다:동:4
  +꼴리:동:4
   꼴머슴:명:1
  -꼴사납다:형:1
  -꼴아박다:동:1
  +꼴사납:형:1
  +꼴아박:동:1
   꼴찌:명:6
   꼼꼼:부:1
  -꼼꼼하다:형:33
  +꼼꼼하:형:33
   꼼꼼히:부:12
   꼼장어:명:7
  -꼼지락거리다:동:3
  +꼼지락거리:동:3
   꼼짝:부:32
   꼼짝없이:부:11
  -꼼짝하다:동:7
  +꼼짝하:동:7
   꼼틀꼼틀:부:1
  -꼽다:동:58
  +꼽:동:58
   꼽추:명:2
  -꼽히다:동:54
  +꼽히:동:54
   꼿꼿이:부:5
  -꼿꼿하다:형:11
  +꼿꼿하:형:11
   꽁꽁:부:14
   꽁무니:명:12
   꽁바기:명:1
  @@ -8286,9 +8286,9 @@
   꽁초:명:9
   꽁치:명:3
   꽁치잡이:명:1
  -꽁하다:동:1
  -꽂다:동:58
  -꽂히다:동:23
  +꽁하:동:1
  +꽂:동:58
  +꽂히:동:23
   꽃:명:436
   꽃가루:명:1
   꽃가루받이:명:1
  @@ -8298,12 +8298,12 @@
   꽃게:명:1
   꽃길:명:3
   꽃꽂이:명:8
  -꽃꽂이하다:동:9
  +꽃꽂이하:동:9
   꽃나무:명:5
   꽃눈:명:1
   꽃다발:명:11
   꽃다지:명:1
  -꽃답다:형:6
  +꽃답:형:6
   꽃대:명:6
   꽃등:명:2
   꽃망울:명:3
  @@ -8332,8 +8332,8 @@
   꽃줄기:명:1
   꽃집:명:6
   꽃판:명:2
  -꽃피다:동:8
  -꽃피우다:동:8
  +꽃피:동:8
  +꽃피우:동:8
   꽃향기:명:4
   꽃향유:명:1
   꽈리:명:1
  @@ -8349,43 +8349,43 @@
   꽥꽥:부:9
   꾀:명:17
   꾀꼬리:명:7
  -꾀다:동:1
  -꾀다:동:3
  +꾀:동:1
  +꾀:동:3
   꾀병:명:5
  -꾀부리다:동:2
  +꾀부리:동:2
   꾀음꾀음:부:1
  -꾀죄죄하다:형:7
  -꾀하다:동:45
  +꾀죄죄하:형:7
  +꾀하:동:45
   꾐:명:5
  -꾸다:동:16
  -꾸다:동:68
  -꾸덕꾸덕해지다:동:2
  +꾸:동:16
  +꾸:동:68
  +꾸덕꾸덕해지:동:2
   꾸러기:명:1
   꾸러미:명:14
   꾸렁내:명:1
  -꾸려지다:동:2
  -꾸르륵거리다:동:1
  -꾸리다:동:35
  -꾸며지다:동:14
  -꾸물거리다:동:3
  +꾸려지:동:2
  +꾸르륵거리:동:1
  +꾸리:동:35
  +꾸며지:동:14
  +꾸물거리:동:3
   꾸미기:명:3
  -꾸미다:동:138
  +꾸미:동:138
   꾸밈:명:4
   꾸밈새:명:1
  -꾸밈없다:형:1
  +꾸밈없:형:1
   꾸밈없이:부:1
   꾸벅:부:4
   꾸벅꾸벅:부:2
  -꾸벅하다:동:1
  -꾸부정하다:형:1
  +꾸벅하:동:1
  +꾸부정하:형:1
   꾸뻑:부:1
   꾸역꾸역:부:6
  -꾸준하다:형:15
  +꾸준하:형:15
   꾸준히:부:72
   꾸중:명:29
  -꾸중하다:동:3
  +꾸중하:동:3
   꾸지람:명:13
  -꾸짖다:동:26
  +꾸짖:동:26
   꾹:부:12
   꾹꾸:부:2
   꾹꾹:부:1
  @@ -8393,210 +8393,210 @@
   꿀:명:37
   꿀꺽:부:5
   꿀꺽꿀꺽:부:4
  -꿀꿀거리다:동:1
  +꿀꿀거리:동:1
   꿀꿀이:명:1
   꿀단지:명:4
  -꿀럭거리다:동:1
  -꿀리다:동:3
  +꿀럭거리:동:1
  +꿀리:동:3
   꿀맛:명:2
   꿀물:명:3
   꿀밤:명:1
   꿀밤:명:3
   꿀벌:명:12
   꿀주머니:명:1
  -꿇다:동:27
  -꿇리다:동:1
  -꿇리다:동:1
  -꿇어앉다:동:8
  +꿇:동:27
  +꿇리:동:1
  +꿇리:동:1
  +꿇어앉:동:8
   꿈:명:397
   꿈결:명:4
   꿈길:명:2
  -꿈꾸다:동:67
  +꿈꾸:동:67
   꿈나무:명:10
   꿈속:명:30
   꿈자리:명:2
   꿈쩍:부:3
  -꿈쩍하다:동:2
  -꿈틀거리다:동:21
  +꿈쩍하:동:2
  +꿈틀거리:동:21
   꿈틀꿈틀:부:2
  -꿈틀대다:동:7
  -꿈틀하다:동:3
  +꿈틀대:동:7
  +꿈틀하:동:3
   꿋꿋이:부:1
  -꿋꿋하다:형:14
  +꿋꿋하:형:14
   꿍꿍이속:명:1
  -꿍치다:동:1
  -꿍하다:동:1
  +꿍치:동:1
  +꿍하:동:1
   꿩:명:9
   꿩의다리:명:1
  -꿰다:동:32
  -꿰뚫다:동:24
  -꿰맞추다:동:1
  -꿰매다:동:10
  +꿰:동:32
  +꿰뚫:동:24
  +꿰맞추:동:1
  +꿰매:동:10
   꿰미:명:1
  -꿰이다:동:3
  -꿰차다:동:3
  -뀌다:동:4
  +꿰이:동:3
  +꿰차:동:3
  +뀌:동:4
   끄나풀:명:1
  -끄다:동:86
  +끄:동:86
   끄덕:부:3
  -끄덕거리다:동:26
  +끄덕거리:동:26
   끄덕끄덕:부:1
  -끄덕끄덕하다:동:1
  -끄덕여지다:동:1
  -끄덕이다:동:98
  -끄덕하다:동:2
  +끄덕끄덕하:동:1
  +끄덕여지:동:1
  +끄덕이:동:98
  +끄덕하:동:2
   끄떡:부:3
  -끄떡없다:형:4
  -끄르다:동:7
  -끄먹거리다:동:3
  -끄집다:동:1
  -끄집어내다:동:21
  +끄떡없:형:4
  +끄르:동:7
  +끄먹거리:동:3
  +끄집:동:1
  +끄집어내:동:21
   끄트머리:명:9
   끈:명:42
   끈기:명:10
   끈끈막:명:3
   끈끈이:명:4
  -끈끈하다:형:12
  +끈끈하:형:12
   끈끈히:부:1
  -끈덕지다:형:5
  -끈적거리다:동:3
  -끈적이다:동:2
  -끈적하다:동:1
  -끈질기다:형:35
  -끊기다:동:42
  -끊다:동:140
  -끊어지다:동:52
  -끊이다:동:21
  -끊임없다:형:42
  +끈덕지:형:5
  +끈적거리:동:3
  +끈적이:동:2
  +끈적하:동:1
  +끈질기:형:35
  +끊기:동:42
  +끊:동:140
  +끊어지:동:52
  +끊이:동:21
  +끊임없:형:42
   끊임없이:부:120
   끌:명:3
   끌끌:부:1
   끌끌:부:9
  -끌다:동:375
  -끌려가다:동:31
  -끌려들다:동:1
  -끌려오다:동:3
  -끌리다:동:31
  -끌어가다:동:1
  -끌어내다:동:22
  -끌어내리다:동:2
  -끌어당기다:동:29
  -끌어대다:동:1
  -끌어들이다:동:28
  -끌어안다:동:42
  -끌어올리다:동:22
  +끌:동:375
  +끌려가:동:31
  +끌려들:동:1
  +끌려오:동:3
  +끌리:동:31
  +끌어가:동:1
  +끌어내:동:22
  +끌어내리:동:2
  +끌어당기:동:29
  +끌어대:동:1
  +끌어들이:동:28
  +끌어안:동:42
  +끌어올리:동:22
   끌칼:명:1
   끌탕:명:4
  -끓다:동:73
  -끓어넘치다:동:1
  -끓어오르다:동:16
  -끓여지다:동:1
  -끓이다:동:161
  -끔뻑거리다:동:1
  -끔뻑끔뻑하다:동:1
  -끔직하다:형:3
  -끔찍끔찍하다:형:2
  +끓:동:73
  +끓어넘치:동:1
  +끓어오르:동:16
  +끓여지:동:1
  +끓이:동:161
  +끔뻑거리:동:1
  +끔뻑끔뻑하:동:1
  +끔직하:형:3
  +끔찍끔찍하:형:2
   끔찍이:부:2
  -끔찍하다:형:24
  +끔찍하:형:24
   끗발:명:2
   끙:부:8
   끙끙:부:5
  -끙끙거리다:동:1
  -끙끙대다:동:2
  +끙끙거리:동:1
  +끙끙대:동:2
   끝:명:582
   끝끝내:부:3
  -끝나다:동:517
  +끝나:동:517
   끝내:부:92
   끝내기:명:1
  -끝내다:동:157
  -끝닿다:동:4
  +끝내:동:157
  +끝닿:동:4
   끝마무리:명:2
  -끝마치다:동:6
  -끝맺다:동:7
  +끝마치:동:6
  +끝맺:동:7
   끝머리:명:6
   끝물:명:1
   끝선:명:1
  -끝없다:형:46
  +끝없:형:46
   끝없이:부:43
   끝자리:명:4
   끝장:명:7
  -끝장나다:동:7
  -끝장내다:동:3
  +끝장나:동:7
  +끝장내:동:3
   끝판:명:1
   끼:명:11
   끼:명:29
   끼:의:2
   끼니:명:8
   끼니때:명:1
  -끼다:동:105
  -끼다:동:44
  -끼다:동:44
  +끼:동:105
  +끼:동:44
  +끼:동:44
   끼리끼리:부:4
   끼무릇:명:1
   끼어들기:명:1
  -끼어들다:동:46
  -끼얹다:동:23
  -끼얹어지다:동:1
  -끼얹혀지다:동:2
  -끼우다:동:59
  -끼워지다:동:10
  -끼이다:동:26
  +끼어들:동:46
  +끼얹:동:23
  +끼얹어지:동:1
  +끼얹혀지:동:2
  +끼우:동:59
  +끼워지:동:10
  +끼이:동:26
   끼익:부:2
  -끼적거리다:동:4
  -끼적이다:동:1
  -끼치다:동:124
  -끼치다:동:18
  +끼적거리:동:4
  +끼적이:동:1
  +끼치:동:124
  +끼치:동:18
   끽:부:1
  -끽긴하다:형:1
  +끽긴하:형:1
   끽미:명:1
   끽소리:명:1
   끽연:명:3
   낄낄:부:1
  -낄낄거리다:동:8
  -낄낄대다:동:4
  +낄낄거리:동:8
  +낄낄대:동:4
   낌새:명:8
  -낑낑거리다:동:6
  -낑낑대다:동:2
  -나:대:10,564
  +낑낑거리:동:6
  +낑낑대:동:2
  +나:대:10564
   나:명:110
   나:명:9
  -나가다:동:977
  +나가:동:977
   나가다:보:528
  -나가떨어지다:동:5
  +나가떨어지:동:5
   나가리:명:2
   나견:명:1
   나귀:명:24
   나그네:명:28
   나그네새:명:20
  -나긋나긋하다:형:4
  -나꾸다:동:2
  +나긋나긋하:형:4
  +나꾸:동:2
   나나니벌:명:1
   나날:명:26
   나날이:부:9
  -나누다:동:626
  -나누어지다:동:34
  +나누:동:626
  +나누어지:동:34
   나눗셈:명:6
  -나눠지다:동:1
  -나뉘다:동:38
  -나뉘어지다:동:12
  -나다:동:1,451
  +나눠지:동:1
  +나뉘:동:38
  +나뉘어지:동:12
  +나:동:1451
   나다:보:610
  -나다니다:동:7
  -나대다:동:1
  -나돌다:동:45
  -나동그라지다:동:1
  -나둥그러지다:동:1
  -나뒹굴다:동:9
  +나다니:동:7
  +나대:동:1
  +나돌:동:45
  +나동그라지:동:1
  +나둥그러지:동:1
  +나뒹굴:동:9
   나들이:명:26
   나들이옷:명:5
  -나들이하다:동:1
  +나들이하:동:1
   나라:명:858
   나라꽃:명:2
   나라님:명:3
   나라말:명:1
   나락:명:3
   나락:명:5
  -나란하다:형:3
  +나란하:형:3
   나란히:부:91
   나랏일:명:6
   나래:명:2
  @@ -8604,15 +8604,15 @@
   나루터:명:6
   나룻:명:2
   나룻배:명:15
  -나르다:동:43
  -나른나른하다:형:1
  -나른하다:형:15
  -나른해지다:동:1
  +나르:동:43
  +나른나른하:형:1
  +나른하:형:15
  +나른해지:동:1
   나름:의:208
   나리:명:10
   나리꽃:명:1
   나리난초:명:2
  -나리다:동:1
  +나리:동:1
   나막신:명:2
   나말:명:2
   나머지:명:179
  @@ -8620,7 +8620,7 @@
   나무껍질:명:11
   나무꾼:명:4
   나무둥치:명:1
  -나무라다:동:26
  +나무라:동:26
   나무배:명:1
   나무뿌리:명:4
   나무숲:명:3
  @@ -8645,39 +8645,39 @@
   나발:명:9
   나방:명:1
   나병:명:4
  -나부끼다:동:8
  +나부끼:동:8
   나부랭이:명:8
   나불나불:부:1
  -나불대다:동:1
  +나불대:동:1
   나붕이:명:1
  -나붙다:동:5
  +나붙:동:5
   나비:명:30
   나비국수나무:명:1
   나비나물:명:1
   나비넥타이:명:2
  -나빠지다:동:27
  -나빠하다:동:1
  -나쁘다:형:256
  +나빠지:동:27
  +나빠하:동:1
  +나쁘:형:256
   나사:명:1
   나사:명:3
   나사못:명:8
  -나사지다:동:1
  -나서다:동:445
  +나사지:동:1
  +나서:동:445
   나선:명:2
   나선적:관:1
   나선형:명:3
   나시:명:2
   나시티:명:1
   나신:명:2
  -나아가다:동:269
  +나아가:동:269
   나아가서:부:2
  -나아지다:동:40
  -나앉다:동:4
  -나약하다:형:15
  +나아지:동:40
  +나앉:동:4
  +나약하:형:15
   나열:명:1
  -나열하다:동:15
  +나열하:동:15
   나염:명:1
  -나오다:동:2,435
  +나오:동:2435
   나와바리:명:1
   나왕:명:2
   나위:의:35
  @@ -8691,34 +8691,34 @@
   나이프:명:21
   나일론:명:2
   나잇값:명:3
  -나자빠지다:동:4
  +나자빠지:동:4
   나전:명:1
   나절:의:3
   나중:명:219
  -나지다:동:1
  +나지:동:1
   나지막이:부:4
  -나지막하다:형:14
  +나지막하:형:14
   나직이:부:8
  -나직하다:형:18
  +나직하:형:18
   나체:명:5
   나체화:명:1
   나치주의자:명:1
   나치즘:명:1
   나침반:명:62
  -나타나다:동:1,136
  -나타내다:동:360
  +나타나:동:1136
  +나타내:동:360
   나태:명:3
   나태심:명:1
  -나태하다:형:3
  -나태해지다:동:3
  +나태하:형:3
  +나태해지:동:3
   나트륨:명:5
   나팔:명:10
   나팔관:명:1
   나팔바지:명:2
   나팔수:명:2
  -나풀거리다:동:4
  +나풀거리:동:4
   나풀나풀:부:2
  -나풀대다:동:1
  +나풀대:동:1
   나프타:명:4
   나프탈렌:명:2
   나흘:명:13
  @@ -8730,40 +8730,40 @@
   낙관적:관:1
   낙관적:명:6
   낙관주의:명:3
  -낙관하다:동:9
  +낙관하:동:9
   낙농:명:3
   낙농업:명:5
  -낙담하다:동:1
  +낙담하:동:1
   낙도:명:1
   낙락장송:명:1
   낙망:명:1
  -낙망하다:동:3
  +낙망하:동:3
   낙방:명:4
  -낙방하다:동:4
  -낙백하다:동:1
  +낙방하:동:4
  +낙백하:동:1
   낙상:명:4
   낙서:명:10
   낙서장:명:2
   낙서투성이:명:1
  -낙서하다:동:2
  +낙서하:동:2
   낙선:명:6
  -낙선되다:동:1
  +낙선되:동:1
   낙선자:명:2
  -낙선하다:동:4
  +낙선하:동:4
   낙성:명:3
   낙승:명:2
  -낙승하다:동:1
  +낙승하:동:1
   낙심:명:1
  -낙심하다:동:4
  +낙심하:동:4
   낙엽:명:34
   낙엽송:명:3
  -낙오되다:동:3
  +낙오되:동:3
   낙오자:명:6
  -낙오하다:동:3
  +낙오하:동:3
   낙원:명:9
   낙인:명:11
  -낙인찍다:동:3
  -낙인찍히다:동:8
  +낙인찍:동:3
  +낙인찍히:동:8
   낙장:명:1
   낙점:명:3
   낙점설:명:1
  @@ -8773,9 +8773,9 @@
   낙조어:명:1
   낙지:명:6
   낙차:명:1
  -낙착되다:동:2
  +낙착되:동:2
   낙찰:명:4
  -낙찰되다:동:1
  +낙찰되:동:1
   낙찰자:명:1
   낙천적:명:5
   낙타:명:25
  @@ -8788,16 +8788,16 @@
   낙하산:명:20
   낙하산병:명:1
   낙하산식:명:1
  -낙하하다:동:6
  +낙하하:동:6
   낙향:명:11
  -낙향하다:동:6
  +낙향하:동:6
   낙화:명:2
   낙화생:명:1
   낙후:명:2
  -낙후되다:동:7
  -낙후하다:동:1
  -낙후해지다:동:1
  -낚다:동:20
  +낙후되:동:7
  +낙후하:동:1
  +낙후해지:동:1
  +낚:동:20
   낚시:명:94
   낚시관:명:1
   낚시광:명:2
  @@ -8806,25 +8806,25 @@
   낚시용품:명:1
   낚시제비꽃:명:1
   낚시질:명:4
  -낚시질하다:동:1
  +낚시질하:동:1
   낚시터:명:14
  -낚시하다:동:3
  +낚시하:동:3
   낚시회:명:1
   낚싯거루:명:1
   낚싯대:명:17
   낚싯바늘:명:8
   낚싯밥:명:1
   낚싯줄:명:16
  -낚아채다:동:16
  -낚아채이다:동:1
  -낚이다:동:1
  +낚아채:동:16
  +낚아채이:동:1
  +낚이:동:1
   난:명:16
   난:명:20
   난:명:8
   난간:명:14
  -난감하다:형:22
  -난감해지다:동:2
  -난감해하다:동:5
  +난감하:형:22
  +난감해지:동:2
  +난감해하:동:5
   난경:명:1
   난공불락:명:1
   난관:명:11
  @@ -8833,11 +8833,11 @@
   난국:명:5
   난기류:명:2
   난대성:명:4
  -난데없다:형:2
  +난데없:형:2
   난데없이:부:8
   난도:명:1
   난도질:명:2
  -난도질하다:동:2
  +난도질하:동:2
   난동:명:5
   난동:명:6
   난로:명:9
  @@ -8848,11 +8848,11 @@
   난리:명:41
   난립:명:9
   난립상:명:1
  -난립하다:동:2
  -난만하다:형:1
  +난립하:동:2
  +난만하:형:1
   난맥상:명:1
   난무:명:2
  -난무하다:동:19
  +난무하:동:19
   난문제:명:2
   난민:명:7
   난민촌:명:5
  @@ -8860,10 +8860,10 @@
   난방법:명:1
   난방비:명:1
   난봉꾼:명:2
  -난비하다:동:1
  +난비하:동:1
   난산:명:14
  -난산하다:동:4
  -난삽하다:형:1
  +난산하:동:4
  +난삽하:형:1
   난상:명:1
   난색:명:1
   난색:명:7
  @@ -8873,7 +8873,7 @@
   난세:명:2
   난센스:명:4
   난소:명:6
  -난숙하다:동:1
  +난숙하:동:1
   난시청:명:1
   난연성:명:1
   난이도:명:8
  @@ -8881,7 +8881,7 @@
   난자:명:2
   난자:명:6
   난자완스:명:1
  -난잡하다:형:1
  +난잡하:형:1
   난장:명:1
   난장:명:2
   난장이:명:1
  @@ -8890,28 +8890,28 @@
   난적:명:4
   난점:명:4
   난제:명:6
  -난처하다:형:10
  -난처해지다:동:3
  -난처해하다:동:2
  +난처하:형:10
  +난처해지:동:3
  +난처해하:동:2
   난초:명:5
   난초꽃:명:1
   난타:명:1
  -난타되다:동:1
  +난타되:동:1
   난타전:명:2
  -난타하다:동:2
  +난타하:동:2
   난투극:명:3
   난파선:명:2
  -난파시키다:동:1
  -난폭하다:형:8
  -난폭해지다:동:1
  -난하다:형:1
  +난파시키:동:1
  +난폭하:형:8
  +난폭해지:동:1
  +난하:형:1
   난항:명:1
  -난해하다:형:14
  +난해하:형:14
   난행:명:4
   낟:명:4
   낟가리:명:1
   낟알:명:6
  -날:명:1,223
  +날:명:1223
   날:명:11
   날:의:2
   날개:명:105
  @@ -8922,60 +8922,60 @@
   날건달:명:1
   날것:명:2
   날고기:명:1
  -날다:동:97
  -날뛰다:동:12
  +날:동:97
  +날뛰:동:12
   날라리:명:4
  -날라지다:동:4
  +날라지:동:4
   날래:부:1
  -날래다:형:1
  -날렵하다:형:12
  +날래:형:1
  +날렵하:형:12
   날렵히:부:1
   날로:부:1
   날로:부:25
   날름:부:4
  -날름거리다:동:2
  -날리다:동:17
  -날리다:동:61
  +날름거리:동:2
  +날리:동:17
  +날리:동:61
   날림:명:1
   날벼락:명:3
   날보리:명:1
  -날쌔다:형:6
  +날쌔:형:6
   날씨:명:179
  -날씬하다:형:12
  -날씬해지다:동:1
  -날아가다:동:90
  -날아다니다:동:23
  -날아들다:동:10
  -날아오다:동:73
  -날아오르다:동:16
  +날씬하:형:12
  +날씬해지:동:1
  +날아가:동:90
  +날아다니:동:23
  +날아들:동:10
  +날아오:동:73
  +날아오르:동:16
   날염:명:4
   날인:명:4
  -날인하다:동:3
  +날인하:동:3
   날조:명:1
  -날조하다:동:1
  +날조하:동:1
   날짐승:명:2
   날짜:명:69
   날치:명:5
   날치기:명:1
  -날치기하다:동:2
  -날카로워지다:동:5
  -날카롭다:형:51
  +날치기하:동:2
  +날카로워지:동:5
  +날카롭:형:51
   날티:명:1
   날품:명:1
   날품팔이:명:7
  -낡다:형:113
  -낡아지다:동:2
  +낡:형:113
  +낡아지:동:2
   남:명:19
   남:명:27
   남:명:538
  -남겨지다:동:12
  +남겨지:동:12
   남고부:명:4
   남고생:명:1
   남구:명:3
   남국:명:32
   남국적:명:1
   남근:명:2
  -남기다:동:213
  +남기:동:213
   남김없이:부:12
   남남동:명:1
   남남서:명:4
  @@ -8991,40 +8991,40 @@
   남녘:명:2
   남녘땅:명:1
   남노인:명:1
  -남다:동:652
  -남다르다:형:32
  +남:동:652
  +남다르:형:32
   남단:명:4
   남달리:부:11
   남대:명:1
   남대부:명:2
   남도:명:1
   남동:명:11
  -남동류하다:동:1
  +남동류하:동:1
   남동부:명:2
   남동생:명:17
   남동쪽:명:9
   남록:명:1
   남루:명:1
  -남루하다:형:3
  -남류하다:동:1
  +남루하:형:3
  +남류하:동:1
   남매:명:41
   남매간:명:15
  -남모르다:형:3
  +남모르:형:3
   남몰래:부:9
   남문:명:17
   남반구:명:3
   남발:명:3
  -남발되다:동:3
  -남발하다:동:2
  +남발되:동:3
  +남발하:동:2
   남방:명:1
   남방:명:5
   남방셔츠:명:1
  -남벌하다:동:1
  +남벌하:동:1
   남부:명:1
   남부:명:93
   남부권:명:2
  -남부끄럽다:형:3
  -남부럽다:형:4
  +남부끄럽:형:3
  +남부럽:형:4
   남북:명:30
   남북국:명:3
   남북국론:명:2
  @@ -9046,23 +9046,23 @@
   남성미:명:1
   남성복:명:1
   남성적:명:7
  -남성화하다:동:1
  +남성화하:동:1
   남순:명:1
   남싹:부:1
   남아:명:15
  -남아나다:동:4
  -남아돌다:동:13
  -남아돌아가다:동:1
  +남아나:동:4
  +남아돌:동:13
  +남아돌아가:동:1
   남안:명:3
   남왜북로:명:1
   남용:명:16
  -남용되다:동:5
  +남용되:동:5
   남용죄:명:1
  -남용하다:동:2
  +남용하:동:2
   남우:명:1
  -남우세스럽다:형:1
  +남우세스럽:형:1
   남의눈:명:1
  -남자:명:1,160
  +남자:명:1160
   남자관계:명:1
   남자부:명:14
   남작:명:1
  @@ -9071,78 +9071,78 @@
   남존여비:명:5
   남주작:명:2
   남진:명:4
  -남진하다:동:2
  +남진하:동:2
   남짓:의:24
  -남짓하다:형:16
  +남짓하:형:16
   남쪽:명:142
   남침:명:4
  -남침시키다:동:1
  +남침시키:동:1
   남탕:명:11
   남파:명:4
  -남파하다:동:3
  +남파하:동:3
   남편:명:741
   남편감:명:1
   남포등:명:3
   남폿불:명:6
   남풍:명:3
   남하:명:2
  -남하하다:동:2
  +남하하:동:2
   남학교:명:2
   남학생:명:32
   남해안:명:2
  -남행하다:동:5
  +남행하:동:5
   남향:명:10
   남향집:명:1
  -남획되다:동:1
  +남획되:동:1
   납:명:1
   납:명:7
   납기:명:6
   납득:명:16
  -납득되다:동:2
  -납득시키다:동:2
  -납득하다:동:30
  +납득되:동:2
  +납득시키:동:2
  +납득하:동:30
   납막:명:1
   납부:명:7
  -납부되다:동:1
  -납부하다:동:18
  +납부되:동:1
  +납부하:동:18
   납북:명:6
  -납북당하다:동:1
  -납북되다:동:3
  +납북당하:동:1
  +납북되:동:3
   납빛:명:3
   납세:명:1
   납세자:명:11
  -납시다:동:3
  +납시:동:3
   납월:명:2
   납입:명:1
   납입금:명:5
  -납입하다:동:6
  +납입하:동:6
   납자:명:2
   납자루:명:1
   납작코:명:1
  -납작하다:형:8
  -납작해지다:동:1
  +납작하:형:8
  +납작해지:동:1
   납축전지:명:1
   납치:명:12
  -납치당하다:동:3
  -납치되다:동:1
  +납치당하:동:3
  +납치되:동:1
   납치범:명:5
  -납치하다:동:11
  +납치하:동:11
   납품:명:11
  -납품되다:동:1
  +납품되:동:1
   납향:명:1
   낫:명:10
  -낫다:동:63
  -낫다:형:133
  +낫:동:63
  +낫:형:133
   낫질:명:1
   낭:명:1
   낭가:명:2
   낭대나무:명:3
   낭독:명:2
  -낭독되다:동:1
  -낭독하다:동:19
  +낭독되:동:1
  +낭독하:동:19
   낭독회:명:2
   낭떠러지:명:11
  -낭랑하다:형:1
  +낭랑하:형:1
   낭만:명:14
   낭만성:명:2
   낭만적:관:8
  @@ -9154,50 +9154,50 @@
   낭만파:명:10
   낭불:명:2
   낭비:명:35
  -낭비되다:동:3
  +낭비되:동:3
   낭비벽:명:1
   낭비적:관:2
   낭비적:명:2
  -낭비하다:동:11
  +낭비하:동:11
   낭설:명:3
   낭송:명:2
  -낭송되다:동:1
  -낭송하다:동:2
  +낭송되:동:1
  +낭송하:동:2
   낭송회:명:1
   낭인:명:1
   낭자:명:2
   낭자:명:8
   낭자머리:명:1
  -낭자하다:형:1
  +낭자하:형:1
   낭종:명:2
   낭탁:명:1
   낭패:명:10
   낭패감:명:3
  -낭패스럽다:형:3
  -낭패하다:동:6
  +낭패스럽:형:3
  +낭패하:동:6
   낮:명:194
  -낮다:형:228
  +낮:형:228
   낮달:명:1
   낮닭:명:1
   낮도깨비:명:3
   낮말:명:1
   낮술:명:4
  -낮아지다:동:33
  +낮아지:동:33
   낮잠:명:14
   낮전:명:1
  -낮추다:동:56
  +낮추:동:56
   낮춤말:명:2
   낯:명:21
   낯가림:명:2
  -낯나다:동:2
  -낯모르다:동:4
  -낯부끄럽다:형:1
  +낯나:동:2
  +낯모르:동:4
  +낯부끄럽:형:1
   낯빛:명:10
   낯색:명:1
  -낯설다:형:98
  -낯설어지다:동:1
  -낯설어하다:동:1
  -낯익다:형:25
  +낯설:형:98
  +낯설어지:동:1
  +낯설어하:동:1
  +낯익:형:25
   낯짝:명:4
   낱:명:1
   낱개:명:1
  @@ -9207,19 +9207,19 @@
   낱알:명:2
   낱잔:명:1
   낱장:명:1
  -낳다:동:460
  +낳:동:460
   내:대:4
   내:대:7
   내:명:1
   내:명:6
   내:의:440
  -내가다:동:4
  +내가:동:4
   내각:명:1
   내각:명:18
   내각제:명:5
  -내갈기다:동:3
  -내걸다:동:43
  -내걸리다:동:1
  +내갈기:동:3
  +내걸:동:43
  +내걸리:동:1
   내공:명:1
   내과:명:14
   내구:명:4
  @@ -9229,65 +9229,65 @@
   내국인:명:5
   내규:명:1
   내기:명:11
  -내기하다:동:2
  +내기하:동:2
   내내:부:89
   내년:명:113
   내년도:명:7
  -내놓다:동:211
  -내놓아지다:동:1
  -내다:동:1,122
  -내다:보:1,045
  +내놓:동:211
  +내놓아지:동:1
  +내:동:1122
  +내다:보:1045
   내다:보:12
  -내다보다:동:75
  -내다보이다:동:6
  -내닫다:동:3
  +내다보:동:75
  +내다보이:동:6
  +내닫:동:3
   내달:명:28
  -내달리다:동:9
  +내달리:동:9
   내당:명:6
  -내던져지다:동:8
  -내던지다:동:19
  -내돌리다:동:2
  +내던져지:동:8
  +내던지:동:19
  +내돌리:동:2
   내동댕이:명:2
  -내동댕이쳐지다:동:5
  -내동댕이치다:동:4
  -내두르다:동:8
  +내동댕이쳐지:동:5
  +내동댕이치:동:4
  +내두르:동:8
   내둥:부:1
  -내드리다:동:1
  -내디디다:동:9
  -내딛다:동:15
  -내뜨리다:동:1
  +내드리:동:1
  +내디디:동:9
  +내딛:동:15
  +내뜨리:동:1
   내락:명:1
   내란:명:5
  -내려가다:동:215
  -내려놓다:동:61
  -내려다보다:동:68
  -내려다보이다:동:12
  -내려다뵈다:동:1
  -내려뜨리다:동:1
  -내려서다:동:21
  -내려앉다:동:28
  -내려오다:동:251
  -내려지다:동:47
  -내려찍다:동:1
  -내려치다:동:3
  +내려가:동:215
  +내려놓:동:61
  +내려다보:동:68
  +내려다보이:동:12
  +내려다뵈:동:1
  +내려뜨리:동:1
  +내려서:동:21
  +내려앉:동:28
  +내려오:동:251
  +내려지:동:47
  +내려찍:동:1
  +내려치:동:3
   내력:명:20
   내력담:명:1
  -내로라하다:동:6
  +내로라하:동:6
   내륙:명:28
   내리:부:7
  -내리깔다:동:7
  -내리꽂히다:동:2
  -내리누르다:동:5
  -내리다:동:803
  +내리깔:동:7
  +내리꽂히:동:2
  +내리누르:동:5
  +내리:동:803
   내리막:명:1
   내리막길:명:6
  -내리붓다:동:2
  +내리붓:동:2
   내리사랑:명:3
  -내리지르다:동:1
  -내리쪼이다:동:1
  -내리쬐다:동:2
  -내리찍다:동:1
  -내리치다:동:15
  +내리지르:동:1
  +내리쪼이:동:1
  +내리쬐:동:2
  +내리찍:동:1
  +내리치:동:15
   내림:명:2
   내림굿:명:12
   내림마장조:명:1
  @@ -9295,35 +9295,35 @@
   내막:명:1
   내막:명:9
   내막증:명:2
  -내맡기다:동:6
  -내맺히다:동:1
  -내먹다:동:1
  +내맡기:동:6
  +내맺히:동:1
  +내먹:동:1
   내면:명:56
   내면세계:명:4
   내면적:관:18
   내면적:명:15
   내면화:명:8
  -내면화되다:동:5
  -내면화시키다:동:1
  -내면화하다:동:9
  -내몰다:동:16
  -내몰리다:동:3
  +내면화되:동:5
  +내면화시키:동:1
  +내면화하:동:9
  +내몰:동:16
  +내몰리:동:3
   내무:명:2
   내무과:명:1
   내무과장:명:1
   내무반:명:8
   내무실:명:1
  -내밀다:동:148
  -내밀어지다:동:1
  -내밀하다:형:2
  +내밀:동:148
  +내밀어지:동:1
  +내밀하:형:2
   내방:명:1
   내방자:명:1
  -내뱉다:동:35
  -내버리다:동:41
  +내뱉:동:35
  +내버리:동:41
   내벽:명:2
  -내보내다:동:31
  -내보이다:동:20
  -내보이다:동:5
  +내보내:동:31
  +내보이:동:20
  +내보이:동:5
   내복:명:2
   내복약:명:1
   내부:명:193
  @@ -9332,16 +9332,16 @@
   내부적:명:9
   내분:명:9
   내분비:명:1
  -내비치다:동:23
  -내빼다:동:7
  -내뻔지다:동:1
  -내뻗다:동:3
  -내뿜다:동:11
  +내비치:동:23
  +내빼:동:7
  +내뻔지:동:1
  +내뻗:동:3
  +내뿜:동:11
   내사:명:10
  -내사받다:동:1
  -내사하다:동:3
  +내사받:동:1
  +내사하:동:3
   내색:명:11
  -내색하다:동:2
  +내색하:동:2
   내성:명:1
   내성:명:1
   내성:명:7
  @@ -9350,14 +9350,14 @@
   내성종:명:4
   내세:명:7
   내세관:명:2
  -내세우다:동:130
  -내세워지다:동:1
  +내세우:동:130
  +내세워지:동:1
   내수:명:12
   내수:명:2
   내수도문:명:10
   내수성:명:1
   내숭:명:11
  -내쉬다:동:39
  +내쉬:동:39
   내습:명:1
   내시경:명:5
   내신:명:18
  @@ -9365,15 +9365,15 @@
   내실:명:7
   내실화:명:3
   내심:명:24
  -내쏘다:동:2
  +내쏘:동:2
   내압:명:2
   내야진:명:1
   내역:명:14
   내역서:명:1
   내연:명:1
  -내연하다:동:2
  +내연하:동:2
   내열:명:2
  -내오다:동:8
  +내오:동:8
   내왕:명:1
   내외:명:35
   내외:명:38
  @@ -9388,7 +9388,7 @@
   내우:명:1
   내우:명:2
   내우외환:명:1
  -내원하다:동:1
  +내원하:동:1
   내음:명:15
   내음새:명:1
   내의:명:11
  @@ -9402,58 +9402,58 @@
   내장:명:27
   내장:명:4
   내장객:명:1
  -내장되다:동:2
  -내장되다:동:4
  +내장되:동:2
  +내장되:동:4
   내장재:명:1
  -내장하다:동:3
  +내장하:동:3
   내장형:명:1
   내재:명:1
  -내재되다:동:12
  +내재되:동:12
   내재적:관:4
   내재적:명:4
  -내재하다:동:13
  -내재화되다:동:1
  -내재화하다:동:1
  +내재하:동:13
  +내재화되:동:1
  +내재화하:동:1
   내적:관:37
   내적:명:21
   내전:명:1
   내전:명:12
   내전근:명:1
   내전적:명:1
  -내젓다:동:10
  +내젓:동:10
   내정:명:1
   내정:명:7
   내정:명:8
  -내정되다:동:11
  +내정되:동:11
   내정설:명:2
   내정자:명:11
  -내정하다:동:2
  +내정하:동:2
   내조:명:6
  -내조하다:동:1
  +내조하:동:1
   내주:명:2
  -내주다:동:56
  +내주:동:56
   내지:부:34
   내지:접:82
  -내지르다:동:10
  -내쫓기다:동:1
  -내쫓다:동:8
  +내지르:동:10
  +내쫓기:동:1
  +내쫓:동:8
   내처:부:2
   내추럴풍:명:1
  -내추럴하다:동:1
  -내치다:동:4
  +내추럴하:동:1
  +내치:동:4
   내칙:명:9
   내친김:명:10
  -내키다:동:30
  -내통하다:동:3
  +내키:동:30
  +내통하:동:3
   내투:명:1
  -내투하다:동:1
  -내팽개치다:동:6
  +내투하:동:1
  +내팽개치:동:6
   내편:명:1
  -내포되다:동:15
  -내포하다:동:25
  +내포되:동:15
  +내포하:동:25
   내핍:명:1
   내한:명:6
  -내한하다:동:5
  +내한하:동:5
   내항:명:1
   내향:명:1
   내향적:관:1
  @@ -9467,7 +9467,7 @@
   냄비:명:38
   냄비형:명:1
   냄새:명:212
  -냄새나다:동:3
  +냄새나:동:3
   냄시:명:1
   냅다:부:5
   냅킨:명:12
  @@ -9478,30 +9478,30 @@
   냉:명:4
   냉가슴:명:1
   냉각:명:4
  -냉각되다:동:4
  +냉각되:동:4
   냉각수:명:4
  -냉각시키다:동:1
  -냉각하다:동:1
  +냉각시키:동:1
  +냉각하:동:1
   냉갈령:명:1
   냉과리:명:1
   냉기:명:14
   냉기류:명:2
   냉난방:명:1
   냉담:명:1
  -냉담하다:형:6
  +냉담하:형:6
   냉대:명:1
   냉대:명:2
  -냉대하다:동:1
  +냉대하:동:1
   냉돌:명:1
   냉동:명:47
   냉동량:명:1
   냉동선:명:9
  -냉동시키다:동:2
  +냉동시키:동:2
   냉동실:명:6
  -냉동하다:동:11
  -냉랭하다:형:9
  +냉동하:동:11
  +냉랭하:형:9
   냉랭히:부:1
  -냉량하다:형:1
  +냉량하:형:1
   냉매:명:1
   냉면:명:10
   냉방:명:5
  @@ -9511,11 +9511,11 @@
   냉소적:관:1
   냉소적:명:5
   냉소주의:명:4
  -냉소하다:동:1
  +냉소하:동:1
   냉수:명:6
  -냉습하다:형:1
  +냉습하:형:1
   냉식:명:1
  -냉엄하다:형:3
  +냉엄하:형:3
   냉연:명:1
   냉온방기:명:1
   냉온풍기:명:1
  @@ -9527,64 +9527,64 @@
   냉장고:명:61
   냉전:명:33
   냉정:명:1
  -냉정하다:형:11
  -냉정하다:형:12
  +냉정하:형:11
  +냉정하:형:12
   냉정히:부:4
   냉증:명:75
   냉찜질:명:1
  -냉철하다:형:10
  +냉철하:형:10
   냉철히:부:2
   냉커피:명:2
   냉큼:부:8
   냉탕:명:1
   냉탕식:명:1
  -냉하다:형:5
  +냉하:형:5
   냉해:명:1
  -냉해지다:동:2
  -냉혹하다:형:8
  +냉해지:동:2
  +냉혹하:형:8
   냉혹히:부:1
   냠냠:부:2
   냥:의:5
  -너:대:1,489
  +너:대:1489
   너구리:명:6
  -너그러워지다:동:1
  +너그러워지:동:1
   너그러이:부:2
  -너그럽다:형:20
  +너그럽:형:20
   너끈히:부:8
   너나없이:부:6
  -너덜거리다:동:1
  +너덜거리:동:1
   너덜겅:명:2
  -너덜너덜하다:형:3
  -너덜대다:동:1
  +너덜너덜하:형:3
  +너덜대:동:1
   너덧:관:1
   너도나도:부:10
  -너르다:형:5
  +너르:형:5
   너머:명:97
   너무:부:859
   너무나:부:199
   너무너무:부:7
  -너무하다:동:7
  -너무하다:형:10
  +너무하:동:7
  +너무하:형:10
   너벅선:명:1
   너부대대:명:2
   너부죽이:부:2
   너비:명:11
   너스레:명:5
   너울가지:명:1
  -너울거리다:동:3
  +너울거리:동:3
   너울너울:부:1
  -너저분하다:형:3
  -너절하다:형:1
  -너털거리다:동:2
  +너저분하:형:3
  +너절하:형:1
  +너털거리:동:2
   너털웃음:명:2
   너트:명:3
   너트:명:8
  -너풀거리다:동:1
  -너풀대다:동:1
  +너풀거리:동:1
  +너풀대:동:1
   너희:대:143
   넉:관:4
  -넉넉잡다:동:1
  -넉넉하다:형:42
  +넉넉잡:동:1
  +넉넉하:형:42
   넉넉히:부:19
   넉살:명:4
   넋:명:46
  @@ -9592,54 +9592,54 @@
   넌지시:부:6
   널:명:2
   널길:명:1
  -널널하다:형:1
  -널다:동:9
  -널따랗다:형:5
  +널널하:형:1
  +널:동:9
  +널따랗:형:5
   널뛰기:명:3
  -널뛰다:동:1
  +널뛰:동:1
   널리:부:153
  -널리다:동:30
  +널리:동:30
   널무덤:명:1
   널방:명:2
  -널브러지다:동:6
  +널브러지:동:6
   널빤지:명:5
  -널어놓다:동:2
  -널어지다:동:1
  +널어놓:동:2
  +널어지:동:1
   널쪽:명:1
  -널찍하다:형:8
  -널푸르다:형:1
  -넓다:형:342
  +널찍하:형:8
  +널푸르:형:1
  +넓:형:342
   넓다듬이:명:2
  -넓어지다:동:39
  +넓어지:동:39
   넓이:명:13
  -넓적하다:형:8
  -넓혀지다:동:2
  -넓히다:동:76
  -넘겨다보다:동:4
  -넘겨받다:동:6
  -넘겨주다:동:34
  -넘겨지다:동:2
  -넘겨짚다:동:1
  -넘기다:동:156
  -넘나다:동:1
  -넘나들다:동:18
  -넘다:동:433
  -넘보다:동:12
  -넘실거리다:동:1
  +넓적하:형:8
  +넓혀지:동:2
  +넓히:동:76
  +넘겨다보:동:4
  +넘겨받:동:6
  +넘겨주:동:34
  +넘겨지:동:2
  +넘겨짚:동:1
  +넘기:동:156
  +넘나:동:1
  +넘나들:동:18
  +넘:동:433
  +넘보:동:12
  +넘실거리:동:1
   넘실넘실:부:1
  -넘실대다:동:1
  -넘어가다:동:140
  -넘어뜨리다:동:37
  -넘어서다:동:133
  -넘어오다:동:40
  -넘어지다:동:44
  -넘쳐흐르다:동:8
  -넘치다:동:100
  +넘실대:동:1
  +넘어가:동:140
  +넘어뜨리:동:37
  +넘어서:동:133
  +넘어오:동:40
  +넘어지:동:44
  +넘쳐흐르:동:8
  +넘치:동:100
   넙죽:부:2
   넝마:명:1
   넝쿨:명:5
  -넣다:동:874
  -넣어지다:동:1
  +넣:동:874
  +넣어지:동:1
   네:감:541
   네:관:177
   네거리:명:19
  @@ -9656,9 +9656,9 @@
   네댓:수:1
   네모:명:2
   네모꼴:명:4
  -네모나다:형:10
  -네모반듯하다:형:1
  -네모지다:형:6
  +네모나:형:10
  +네모반듯하:형:1
  +네모지:형:6
   네모형:명:1
   네발:명:1
   네발짐승:명:1
  @@ -9683,7 +9683,7 @@
   녀석:의:105
   녁:의:1
   년:의:28
  -년:의:4,630
  +년:의:4630
   년기:명:4
   년대:의:561
   년대생:의:1
  @@ -9705,30 +9705,30 @@
   노가다:명:4
   노가다거리:명:1
   노가리:명:2
  -노가바하다:동:1
  +노가바하:동:1
   노간주나무:명:1
   노거수:명:4
   노계:명:1
   노고:명:14
   노고지리:명:1
  -노곤하다:형:1
  +노곤하:형:1
   노골노골:부:1
   노골적:관:1
   노골적:명:33
  -노골화되다:동:4
  -노골화하다:동:1
  +노골화되:동:4
  +노골화하:동:1
   노교수:명:4
   노구:명:1
  -노글노글하다:형:1
  +노글노글하:형:1
   노기:명:3
   노끈:명:2
   노년:명:6
   노년기:명:4
   노년자:명:1
   노년층:명:2
  -노닐다:동:4
  +노닐:동:4
   노다지:명:1
  -노닥거리다:동:4
  +노닥거리:동:4
   노대감:명:1
   노대감마님:명:1
   노도:명:1
  @@ -9748,7 +9748,7 @@
   노동절:명:2
   노동조합:명:33
   노동조합주의:명:1
  -노동하다:동:14
  +노동하:동:14
   노란색:명:19
   노랑:명:10
   노랑꽃:명:1
  @@ -9759,39 +9759,39 @@
   노랑지빠귀:명:1
   노랑턱멧새:명:1
   노랑할미새:명:1
  -노랗다:형:66
  +노랗:형:66
   노래:명:424
   노래극:명:3
   노래기:명:1
   노래방:명:49
   노래비:명:28
   노래자랑:명:1
  -노래지다:동:4
  +노래지:동:4
   노래집:명:1
   노래패:명:2
  -노래하다:동:59
  +노래하:동:59
   노랫가락:명:2
   노랫말:명:6
   노랫소리:명:22
   노략질:명:4
  -노략질당하다:동:1
  -노려보다:동:56
  +노략질당하:동:1
  +노려보:동:56
   노력:명:2
   노력:명:420
   노력비:명:1
  -노력하다:동:237
  -노련하다:형:11
  +노력하:동:237
  +노련하:형:11
   노령:명:1
   노령자:명:1
   노령층:명:1
   노령화:명:3
  -노령화되다:동:1
  +노령화되:동:1
   노루목:명:13
   노루발풀:명:2
   노루삼:명:1
   노루잠:명:1
  -노르께하다:형:1
  -노르스름하다:형:1
  +노르께하:형:1
  +노르스름하:형:1
   노른자:명:1
   노른자위:명:4
   노름:명:8
  @@ -9799,20 +9799,20 @@
   노름방:명:1
   노름빚:명:2
   노름판:명:4
  -노름하다:동:1
  +노름하:동:1
   노릇:명:108
  -노릇노릇하다:형:5
  -노릇하다:형:12
  -노릇해지다:동:2
  +노릇노릇하:형:5
  +노릇하:형:12
  +노릇해지:동:2
   노리개:명:4
   노리갯감:명:2
  -노리다:동:49
  +노리:동:49
   노린내:명:1
   노린재나무:명:2
   노림수:명:2
   노망:명:7
   노망기:명:2
  -노망하다:동:1
  +노망하:동:1
   노면:명:2
   노모:명:13
   노무:명:9
  @@ -9821,7 +9821,7 @@
   노무직:명:3
   노문학:명:1
   노문학계:명:1
  -노미네이트되다:동:1
  +노미네이트되:동:1
   노방:명:4
   노방주:명:2
   노복:명:3
  @@ -9840,7 +9840,7 @@
   노소:명:1
   노송:명:1
   노쇠:명:1
  -노쇠하다:형:1
  +노쇠하:형:1
   노수:명:1
   노숙:명:2
   노숙자:명:2
  @@ -9848,13 +9848,13 @@
   노시인:명:1
   노신사:명:1
   노심초사:명:1
  -노심초사하다:동:5
  +노심초사하:동:5
   노약자:명:3
   노어:명:1
   노여움:명:13
  -노여워하다:동:2
  +노여워하:동:2
   노역:명:4
  -노엽다:형:1
  +노엽:형:1
   노예:명:136
   노예군:명:1
   노예론자:명:6
  @@ -9865,7 +9865,7 @@
   노예제설:명:2
   노예제적:관:1
   노예주:명:1
  -노예화시키다:동:1
  +노예화시키:동:1
   노운전기사:명:1
   노웨어:명:2
   노을:명:12
  @@ -9898,14 +9898,14 @@
   노총각:명:3
   노추:명:1
   노출:명:35
  -노출되다:동:23
  +노출되:동:23
   노출미:명:2
  -노출시키다:동:9
  -노출하다:동:4
  +노출시키:동:9
  +노출하:동:4
   노출형:명:1
   노코멘트:명:1
   노크:명:13
  -노크하다:동:3
  +노크하:동:3
   노터치:명:1
   노트:명:20
   노트:의:1
  @@ -9914,17 +9914,17 @@
   노폐물:명:5
   노포:명:1
   노폭:명:1
  -노하다:동:5
  +노하:동:5
   노하우:명:10
   노형:대:6
   노화:명:11
  -노화되다:동:1
  -노화하다:동:1
  -노회하다:형:1
  +노화되:동:1
  +노화하:동:1
  +노회하:형:1
   노후:명:6
   노후:명:7
   노후관:명:1
  -노후되다:동:1
  +노후되:동:1
   녹:명:1
   녹:명:8
   녹각:명:3
  @@ -9932,10 +9932,10 @@
   녹과전:명:1
   녹금:명:1
   녹내장:명:4
  -녹다:동:47
  +녹:동:47
   녹두:명:3
   녹라:명:1
  -녹록하다:형:2
  +녹록하:형:2
   녹말:명:9
   녹말가루:명:8
   녹말기:명:1
  @@ -9943,22 +9943,22 @@
   녹색:명:45
   녹색등:명:1
   녹수:명:1
  -녹슬다:동:13
  -녹신녹신하다:형:1
  -녹아내리다:동:1
  -녹아들다:동:9
  +녹슬:동:13
  +녹신녹신하:형:1
  +녹아내리:동:1
  +녹아들:동:9
   녹용:명:2
   녹원:명:1
   녹음:명:18
   녹음:명:4
   녹음기:명:7
  -녹음되다:동:7
  +녹음되:동:7
   녹음테이프:명:3
  -녹음하다:동:19
  +녹음하:동:19
   녹읍:명:21
   녹읍민:명:1
   녹읍제:명:2
  -녹이다:동:26
  +녹이:동:26
   녹즙:명:1
   녹즙기:명:5
   녹지:명:5
  @@ -9968,9 +9968,9 @@
   녹초:명:3
   녹화:명:1
   녹화:명:15
  -녹화시키다:동:1
  +녹화시키:동:1
   녹화장:명:5
  -녹화하다:동:2
  +녹화하:동:2
   녹황색:명:1
   녹회색:명:2
   논:명:1
  @@ -9980,9 +9980,9 @@
   논거:명:4
   논고:명:1
   논고문:명:2
  -논고하다:동:1
  +논고하:동:1
   논공행상:명:1
  -논구하다:동:1
  +논구하:동:1
   논길:명:1
   논난:명:1
   논농사:명:7
  @@ -10007,7 +10007,7 @@
   논물:명:3
   논바닥:명:8
   논박:명:1
  -논박하다:동:1
  +논박하:동:1
   논밭:명:21
   논배미:명:1
   논법:명:7
  @@ -10016,13 +10016,13 @@
   논설문:명:4
   논설위원:명:2
   논술:명:7
  -논술하다:동:1
  +논술하:동:1
   논스톱:명:2
   논외:명:7
   논의:명:12
   논의:명:188
  -논의되다:동:48
  -논의하다:동:70
  +논의되:동:48
  +논의하:동:70
   논일:명:3
   논임자:명:1
   논자:명:6
  @@ -10030,42 +10030,42 @@
   논쟁거리:명:3
   논쟁적:명:2
   논쟁점:명:2
  -논쟁하다:동:3
  +논쟁하:동:3
   논저:명:1
   논전:명:1
   논점:명:8
   논제:명:1
   논조:명:3
   논증:명:5
  -논증하다:동:2
  +논증하:동:2
   논지:명:7
  -논지하다:동:1
  +논지하:동:1
   논틀:명:1
  -논파하다:동:2
  +논파하:동:2
   논평:명:15
  -논평하다:동:5
  +논평하:동:5
   논픽션:명:1
  -논하다:동:51
  +논하:동:51
   논흙:명:1
   놀:명:1
  -놀고먹다:동:1
  -놀놀하다:형:1
  -놀다:동:480
  -놀뛰다:동:1
  -놀라다:동:356
  +놀고먹:동:1
  +놀놀하:형:1
  +놀:동:480
  +놀뛰:동:1
  +놀라:동:356
   놀라움:명:10
  -놀라워하다:동:6
  +놀라워하:동:6
   놀람:명:3
   놀람기:명:1
  -놀랍다:형:121
  -놀래다:동:5
  -놀리다:동:19
  -놀리다:동:43
  +놀랍:형:121
  +놀래:동:5
  +놀리:동:19
  +놀리:동:43
   놀림:명:2
   놀림:명:3
   놀림감:명:4
  -놀아나다:동:7
  -놀아먹다:동:1
  +놀아나:동:7
  +놀아먹:동:1
   놀음:명:9
   놀이:명:195
   놀이마당:명:3
  @@ -10074,8 +10074,8 @@
   놀이적:관:7
   놀이적:명:1
   놀이터:명:21
  -놀이하다:동:1
  -놀이화하다:동:2
  +놀이하:동:1
  +놀이화하:동:2
   놀잇감:명:2
   놈:명:1
   놈:명:7
  @@ -10112,12 +10112,12 @@
   농담:명:2
   농담:명:73
   농담거리:명:1
  -농담스럽다:형:1
  -농담하다:동:3
  +농담스럽:형:1
  +농담하:동:3
   농대:명:2
   농도:명:42
   농락:명:1
  -농락하다:동:2
  +농락하:동:2
   농량:명:1
   농림:명:6
   농막:명:1
  @@ -10139,15 +10139,15 @@
   농사꾼:명:8
   농사법:명:1
   농사일:명:32
  -농사일하다:동:2
  -농사짓다:동:37
  +농사일하:동:2
  +농사짓:동:37
   농사철:명:8
   농산물:명:113
   농산품:명:7
   농삿집:명:1
   농성:명:22
   농성장:명:1
  -농성하다:동:2
  +농성하:동:2
   농수산:명:2
   농수산물:명:5
   농아:명:1
  @@ -10182,45 +10182,45 @@
   농채:명:1
   농촌:명:153
   농축:명:5
  -농축되다:동:3
  +농축되:동:3
   농축산물:명:6
  -농축시키다:동:1
  +농축시키:동:1
   농토:명:19
   농투성이:명:1
  -농하다:동:1
  +농하:동:1
   농한기:명:8
   농호:명:2
   농활:명:1
   높낮이:명:5
  -높다:형:691
  -높다랗다:형:6
  +높:형:691
  +높다랗:형:6
   높새:명:2
   높새바람:명:2
  -높아지다:동:136
  +높아지:동:136
   높이:명:98
   높이:부:83
  -높이다:동:199
  +높이:동:199
   높이뛰기:명:7
   높임말:명:6
  -높푸르다:형:1
  -놓다:동:3
  -놓다:동:481
  -놓다:보:1,181
  -놓아두다:동:27
  -놓아먹이다:동:1
  -놓아주다:동:6
  -놓여나다:동:2
  -놓여지다:동:14
  -놓이다:동:174
  -놓쳐지다:동:2
  -놓치다:동:100
  -놔두다:동:28
  -놔주다:동:6
  +높푸르:형:1
  +놓:동:3
  +놓:동:481
  +놓다:보:1181
  +놓아두:동:27
  +놓아먹이:동:1
  +놓아주:동:6
  +놓여나:동:2
  +놓여지:동:14
  +놓이:동:174
  +놓쳐지:동:2
  +놓치:동:100
  +놔두:동:28
  +놔주:동:6
   뇌:명:77
   뇌과:명:1
   뇌관:명:1
  -뇌까리다:동:7
  -뇌다:동:2
  +뇌까리:동:7
  +뇌:동:2
   뇌대장소:명:1
   뇌리:명:12
   뇌물:명:78
  @@ -10234,7 +10234,7 @@
   뇌성:명:4
   뇌세포:명:1
   뇌쇄:명:1
  -뇌쇄시키다:동:1
  +뇌쇄시키:동:1
   뇌수:명:3
   뇌신경:명:3
   뇌신경외과:명:1
  @@ -10250,86 +10250,86 @@
   누각:명:8
   누계:명:2
   누관:명:2
  -누구:대:1,384
  +누구:대:1384
   누구누구:대:11
  -누그러뜨리다:동:2
  -누그러지다:동:14
  +누그러뜨리:동:2
  +누그러지:동:14
   누나:명:200
   누누이:부:9
   누님:명:7
  -누다:동:25
  +누:동:25
   누대:명:1
   누더기:명:8
   누드:명:3
   누들:명:1
   누락:명:2
  -누락되다:동:4
  +누락되:동:4
   누락분:명:1
  -누락시키다:동:3
  -누락하다:동:1
  +누락시키:동:3
  +누락하:동:1
   누란:명:1
   누럭누럭:부:1
   누런색:명:2
   누렁:명:2
   누렁이:명:1
  -누렇다:형:27
  -누레지다:동:2
  +누렇:형:27
  +누레지:동:2
   누룩:명:1
   누룽지:명:27
  -누르다:동:142
  -누르다:형:1
  -누르스름하다:형:2
  +누르:동:142
  +누르:형:1
  +누르스름하:형:2
   누름단추:명:1
   누름적:명:1
   누릇누릇:부:1
   누리:명:1
  -누리다:동:104
  -누리다:형:1
  +누리:동:104
  +누리:형:1
   누리장나무:명:1
   누린내:명:5
   누린내풀:명:1
  -누릿하다:형:1
  +누릿하:형:1
   누명:명:3
   누문:명:5
   누벨바그:명:2
   누비:명:2
  -누비다:동:23
  +누비:동:23
   누상:명:1
   누상무덤:명:1
   누설:명:9
  -누설되다:동:4
  +누설되:동:4
   누설량:명:1
  -누설하다:동:7
  +누설하:동:7
   누수:명:16
   누에:명:7
   누에고치:명:1
   누이:명:26
  -누이다:동:3
  +누이:동:3
   누이동생:명:4
   누적:명:11
  -누적되다:동:11
  -누적시키다:동:1
  +누적되:동:11
  +누적시키:동:1
   누적적:관:1
  -누전되다:동:1
  +누전되:동:1
   누증:명:4
   누진:명:2
   누진세:명:3
   누진제:명:1
  -누추하다:형:7
  -누추해지다:동:1
  +누추하:형:7
  +누추해지:동:1
   누출:명:4
  -누출되다:동:3
  -눅눅하다:형:4
  -눅눅해지다:동:1
  +누출되:동:3
  +눅눅하:형:4
  +눅눅해지:동:1
   눈:명:1
  -눈:명:1,425
  +눈:명:1425
   눈:명:151
   눈가:명:26
   눈가래:명:1
   눈가루:명:1
   눈가리개:명:2
   눈가림:명:5
  -눈감다:동:20
  +눈감:동:20
   눈곱:명:12
   눈구덩이:명:1
   눈금:명:4
  @@ -10339,7 +10339,7 @@
   눈깔사탕:명:3
   눈꺼풀:명:10
   눈꼴:명:1
  -눈꼴시리다:형:1
  +눈꼴시리:형:1
   눈높이:명:3
   눈대중:명:2
   눈덤북:명:1
  @@ -10349,26 +10349,26 @@
   눈두덩:명:10
   눈두덩이:명:1
   눈때:명:1
  -눈뜨다:동:20
  +눈뜨:동:20
   눈망울:명:6
   눈매:명:16
   눈맵시:명:1
   눈머리:명:2
  -눈멀다:동:11
  +눈멀:동:11
   눈목:명:1
   눈물:명:271
  -눈물겹다:형:10
  +눈물겹:형:10
   눈물기:명:1
   눈물바다:명:1
   눈물방울:명:2
   눈물샘:명:7
  -눈물짓다:동:3
  +눈물짓:동:3
   눈발:명:19
   눈방울:명:1
   눈밭:명:4
   눈병:명:5
   눈보라:명:9
  -눈부시다:형:44
  +눈부시:형:44
   눈부처:명:1
   눈비:명:2
   눈빛:명:105
  @@ -10388,16 +10388,16 @@
   눈썹:명:68
   눈알:명:14
   눈앞:명:113
  -눈여겨보다:동:21
  -눈여겨지다:동:1
  -눈여기다:동:3
  +눈여겨보:동:21
  +눈여겨지:동:1
  +눈여기:동:3
   눈요기:명:1
   눈요깃감:명:1
   눈웃음:명:4
   눈인사:명:6
   눈자위:명:13
   눈짓:명:15
  -눈짓하다:동:4
  +눈짓하:동:4
   눈초리:명:34
   눈총:명:12
   눈치:명:198
  @@ -10405,28 +10405,28 @@
   눈치코치:명:1
   눈코:명:5
   눈테:명:2
  -눋다:동:2
  -눌러놓다:동:1
  -눌러쓰다:동:3
  -눌러앉다:동:4
  -눌려지다:동:2
  -눌리다:동:1
  -눌리다:동:14
  -눌리우다:동:1
  -눌어붙다:동:6
  +눋:동:2
  +눌러놓:동:1
  +눌러쓰:동:3
  +눌러앉:동:4
  +눌려지:동:2
  +눌리:동:1
  +눌리:동:14
  +눌리우:동:1
  +눌어붙:동:6
   눌은밥:명:1
   눔:의:6
  -눕다:동:226
  -눕혀지다:동:2
  -눕히다:동:19
  -눙치다:동:2
  +눕:동:226
  +눕혀지:동:2
  +눕히:동:19
  +눙치:동:2
   뉘:명:1
  -뉘다:동:21
  +뉘:동:21
   뉘앙스:명:8
  -뉘어지다:동:1
  -뉘엿거리다:동:1
  +뉘어지:동:1
  +뉘엿거리:동:1
   뉘엿뉘엿:부:5
  -뉘우치다:동:15
  +뉘우치:동:15
   뉴:명:2
   뉴리더:명:1
   뉴미디어:명:1
  @@ -10434,30 +10434,30 @@
   뉴스거리:명:1
   뉴스성:명:1
   느그:대:8
  -느글느글하다:형:1
  +느글느글하:형:1
   느긋이:부:2
  -느긋하다:형:14
  -느긋해지다:동:1
  -느긋해하다:동:1
  -느껍다:형:1
  -느껴지다:동:220
  -느끼다:동:3
  -느끼다:동:867
  -느끼하다:형:6
  +느긋하:형:14
  +느긋해지:동:1
  +느긋해하:동:1
  +느껍:형:1
  +느껴지:동:220
  +느끼:동:3
  +느끼:동:867
  +느끼하:형:6
   느낌:명:490
  -느닷없다:형:7
  +느닷없:형:7
   느닷없이:부:41
   느럭느럭:부:1
  -느려지다:동:8
  -느리다:형:51
  -느리터분하다:형:1
  +느려지:동:8
  +느리:형:51
  +느리터분하:형:1
   느림보:명:4
   느릿느릿:부:8
  -느릿느릿하다:형:1
  -느릿하다:형:2
  -느물거리다:동:1
  -느슨하다:형:11
  -느슨해지다:동:4
  +느릿느릿하:형:1
  +느릿하:형:2
  +느물거리:동:1
  +느슨하:형:11
  +느슨해지:동:4
   느슨히:부:1
   느지막이:부:1
   느타리버섯:명:9
  @@ -10467,46 +10467,46 @@
   늑막:명:1
   늑막염:명:3
   늑장:명:9
  -는적이다:동:1
  +는적이:동:1
   늘:부:308
   늘그막:명:1
  -늘다:동:160
  -늘리다:동:138
  +늘:동:160
  +늘리:동:138
   늘상:부:10
  -늘씬하다:형:1
  -늘씬하다:형:7
  -늘어나다:동:272
  -늘어놓다:동:43
  -늘어뜨리다:동:8
  -늘어서다:동:38
  -늘어세우다:동:1
  -늘어지다:동:39
  -늘이다:동:3
  -늘이다:동:5
  +늘씬하:형:1
  +늘씬하:형:7
  +늘어나:동:272
  +늘어놓:동:43
  +늘어뜨리:동:8
  +늘어서:동:38
  +늘어세우:동:1
  +늘어지:동:39
  +늘이:동:3
  +늘이:동:5
   늘임봉:명:1
  -늘쩡하다:형:1
  -늙다:동:136
  +늘쩡하:형:1
  +늙:동:136
   늙다리:명:1
  -늙수그레하다:형:1
  -늙어지다:동:3
  +늙수그레하:형:1
  +늙어지:동:3
   늙은네:명:1
   늙은이:명:12
  -늠름하다:형:10
  +늠름하:형:10
   능:명:4
   능:명:5
   능가:명:1
  -능가하다:동:13
  +능가하:동:13
   능글:명:1
  -능글거리다:동:1
  -능글맞다:형:2
  -능글스럽다:형:1
  +능글거리:동:1
  +능글맞:형:2
  +능글스럽:형:1
   능금:명:1
  -능놀다:동:1
  +능놀:동:1
   능동:명:1
   능동성:명:2
   능동적:관:15
   능동적:명:29
  -능란하다:형:3
  +능란하:형:3
   능력:명:417
   능력껏:부:1
   능률:명:5
  @@ -10514,46 +10514,46 @@
   능률적:관:1
   능률적:명:4
   능멸:명:1
  -능멸하다:동:2
  +능멸하:동:2
   능사:명:7
   능선:명:15
   능선부:명:2
  -능수능란하다:형:1
  -능숙하다:형:12
  -능숙해지다:동:1
  +능수능란하:형:1
  +능숙하:형:12
  +능숙해지:동:1
   능욕:명:1
   능지능문능:명:1
   능지부문능:명:1
   능직:명:2
   능참봉:명:3
   능청:명:4
  -능청능청하다:동:1
  -능청맞다:형:1
  -능청스럽다:형:3
  -능통하다:형:2
  -능하다:형:3
  +능청능청하:동:1
  +능청맞:형:1
  +능청스럽:형:3
  +능통하:형:2
  +능하:형:3
   능행:명:1
   능히:부:10
   늦가을:명:13
   늦깎이:명:1
  -늦다:동:55
  -늦다:형:235
  +늦:동:55
  +늦:형:235
   늦더위:명:2
   늦발동:명:1
   늦봄:명:2
  -늦어지다:동:28
  +늦어지:동:28
   늦여름:명:2
   늦잠:명:11
   늦장가:명:1
   늦장마:명:1
  -늦추다:동:24
  -늦추어지다:동:1
  -늦춰지다:동:1
  +늦추:동:24
  +늦추어지:동:1
  +늦춰지:동:1
   늪:명:18
   늪가:명:1
   늴리리야:명:1
   니:대:8
  -니글거리다:동:1
  +니글거리:동:1
   니기미:감:1
   니나노:감:1
   니년:대:1
  @@ -10570,20 +10570,20 @@
   님:의:2
   닢:의:5
   다:명:45
  -다:부:1,564
  -다가가다:동:94
  -다가들다:동:3
  -다가서다:동:34
  -다가앉다:동:5
  -다가오다:동:182
  +다:부:1564
  +다가가:동:94
  +다가들:동:3
  +다가서:동:34
  +다가앉:동:5
  +다가오:동:182
   다각도:명:3
   다각도로:부:1
   다각적:명:7
   다각화:명:4
  -다각화시키다:동:1
  +다각화시키:동:1
   다갈:명:1
   다갈색:명:1
  -다감하다:형:3
  +다감하:형:3
   다강조성:명:1
   다과:명:4
   다과:명:4
  @@ -10595,19 +10595,19 @@
   다국적:명:20
   다국적군:명:11
   다규제:명:1
  -다그치다:동:20
  -다급하다:형:21
  -다급해지다:동:9
  +다그치:동:20
  +다급하:형:21
  +다급해지:동:9
   다급히:부:3
   다기:명:1
  -다난하다:형:1
  -다녀가다:동:21
  -다녀오다:동:117
  +다난하:형:1
  +다녀가:동:21
  +다녀오:동:117
   다년간:명:1
   다년생:명:3
   다년초:명:2
  -다니다:동:668
  -다다르다:동:23
  +다니:동:668
  +다다르:동:23
   다다미:명:2
   다다음:명:1
   다다익선:명:3
  @@ -10622,20 +10622,20 @@
   다도실:명:1
   다도해:명:3
   다독:명:1
  -다독거리다:동:6
  -다독이다:동:2
  +다독거리:동:6
  +다독이:동:2
   다득점:명:1
  -다듬다:동:59
  +다듬:동:59
   다듬새:명:1
  -다듬어지다:동:19
  +다듬어지:동:19
   다듬이:명:15
   다듬이질:명:1
  -다듬이질하다:동:2
  +다듬이질하:동:2
   다듬잇돌:명:1
   다듬잇방망이:명:1
   다듬질:명:5
  -다듬질하다:동:1
  -다디달다:형:4
  +다듬질하:동:1
  +다디달:형:4
   다라이:명:5
   다락방:명:2
   다람쥐:명:11
  @@ -10645,17 +10645,17 @@
   다래:명:4
   다래끼:명:1
   다량:명:15
  -다려지다:동:1
  -다루다:동:205
  -다루어지다:동:7
  -다르다:형:1,132
  -다른:관:1,653
  -다름없다:형:59
  +다려지:동:1
  +다루:동:205
  +다루어지:동:7
  +다르:형:1132
  +다른:관:1653
  +다름없:형:59
   다름없이:부:4
   다릅나무:명:2
   다리:명:288
   다리:명:87
  -다리다:동:6
  +다리:동:6
   다리목:명:1
   다리몽둥이:명:1
   다리미:명:5
  @@ -10667,14 +10667,14 @@
   다마:명:3
   다마네기:명:1
   다만:접:305
  -다망하다:형:1
  +다망하:형:1
   다매체:명:1
   다면적:관:1
   다면적:명:2
   다목적:명:9
   다문다문:부:1
  -다물다:동:46
  -다물어지다:동:1
  +다물:동:46
  +다물어지:동:1
   다박머리:명:1
   다반사:명:1
   다발:명:13
  @@ -10684,14 +10684,14 @@
   다방:명:91
   다방면:명:7
   다변:명:2
  -다변하다:형:1
  +다변하:형:1
   다변화:명:3
   다복솔:명:1
  -다부지다:형:8
  -다분하다:형:2
  +다부지:형:8
  +다분하:형:2
   다분히:부:33
   다비:명:1
  -다사롭다:형:2
  +다사롭:형:2
   다산:명:1
   다산성:명:2
   다산형:명:1
  @@ -10708,41 +10708,41 @@
   다소간:명:3
   다소간:부:1
   다소곳이:부:9
  -다소곳하다:형:7
  +다소곳하:형:7
   다수:명:72
   다수결:명:6
   다수당:명:2
   다수인:명:2
   다수확:명:1
  -다스려지다:동:5
  -다스리다:동:63
  -다습하다:형:4
  +다스려지:동:5
  +다스리:동:63
  +다습하:형:4
   다시:명:2
   다시:명:5
  -다시:부:1,659
  +다시:부:1659
   다시금:부:26
  -다시다:동:8
  +다시:동:8
   다시마:명:12
  -다시없다:형:1
  +다시없:형:1
   다신교:명:1
   다신론적:명:1
   다실:명:1
   다양:명:5
   다양성:명:18
  -다양하다:형:356
  -다양해지다:동:16
  +다양하:형:356
  +다양해지:동:16
   다양화:명:13
  -다양화되다:동:4
  -다양화하다:동:2
  +다양화되:동:4
  +다양화하:동:2
   다연발탄:명:1
   다연장:명:1
   다용도:명:1
   다우:명:1
   다우지:명:1
  -다우하다:형:1
  +다우하:형:1
   다운:명:10
  -다운되다:동:2
  -다운받다:동:2
  +다운되:동:2
  +다운받:동:2
   다운타운:명:2
   다원:명:1
   다원론적:관:1
  @@ -10753,13 +10753,13 @@
   다원주의적:관:2
   다원주의적:명:1
   다원화:명:3
  -다음:명:1,386
  -다음가다:동:3
  +다음:명:1386
  +다음가:동:3
   다음날:명:1
   다음다음:명:5
   다음번:명:4
   다이:명:1
  -다이내믹하다:형:2
  +다이내믹하:형:2
   다이너스티:명:1
   다이버:명:2
   다이빙:명:5
  @@ -10773,35 +10773,35 @@
   다이제스트:명:1
   다자:명:2
   다자간:명:5
  -다잡다:동:14
  -다재다능하다:형:1
  +다잡:동:14
  +다재다능하:형:1
   다정:명:1
  -다정다감하다:형:5
  -다정스럽다:형:5
  +다정다감하:형:5
  +다정스럽:형:5
   다정스레:부:2
  -다정하다:형:38
  +다정하:형:38
   다정히:부:9
  -다져지다:동:6
  -다종다양하다:형:1
  +다져지:동:6
  +다종다양하:형:1
   다주택:명:3
   다중:명:1
   다중:명:7
   다중적:관:1
   다지기:명:1
  -다지다:동:168
  -다지르다:동:1
  +다지:동:168
  +다지르:동:1
   다짐:명:27
  -다짐받다:동:2
  -다짐하다:동:64
  +다짐받:동:2
  +다짐하:동:64
   다짜고짜:부:8
   다짜고짜로:부:3
   다차원적:관:1
   다채:명:2
  -다채로워지다:동:1
  -다채롭다:형:21
  +다채로워지:동:1
  +다채롭:형:21
   다축:명:1
   다층적:관:1
  -다치다:동:66
  +다치:동:66
   다큐:명:5
   다큐멘터리:명:13
   다큐멘터리적:관:1
  @@ -10811,31 +10811,31 @@
   다크호스:명:1
   다탁:명:2
   다태아:명:1
  -다투다:동:84
  +다투:동:84
   다툼:명:36
   다툼질:명:1
   다품종:명:6
  -다하다:동:151
  +다하:동:151
   다행:명:53
  -다행스럽다:형:12
  -다행하다:형:13
  +다행스럽:형:12
  +다행하:형:13
   다행히:부:50
   다혈질:명:2
   다혈질적:명:1
   다홍치마:명:1
   닥나무:명:1
   닥지닥지:부:1
  -닥쳐오다:동:10
  -닥치다:동:4
  -닥치다:동:55
  +닥쳐오:동:10
  +닥치:동:4
  +닥치:동:55
   닥터:명:37
  -닦다:동:272
  +닦:동:272
   닦달:명:3
  -닦달질하다:동:1
  -닦달하다:동:2
  -닦아지다:동:1
  -닦여지다:동:1
  -닦이다:동:5
  +닦달질하:동:1
  +닦달하:동:2
  +닦아지:동:1
  +닦여지:동:1
  +닦이:동:5
   단:관:109
   단:명:11
   단:명:2
  @@ -10856,19 +10856,19 @@
   단결에:부:1
   단결정:명:8
   단결체:명:1
  -단결하다:동:5
  +단결하:동:5
   단계:명:436
   단계론:명:8
   단계설:명:3
   단계적:관:12
   단계적:명:26
  -단계화하다:동:1
  +단계화하:동:1
   단골:명:17
   단골손님:명:3
   단골집:명:2
   단과:명:3
   단과대:명:2
  -단교하다:동:1
  +단교하:동:1
   단기:명:17
   단기:명:3
   단기간:명:5
  @@ -10881,12 +10881,12 @@
   단내:명:1
   단내:명:1
   단너삼:명:5
  -단념하다:동:7
  -단단하다:형:37
  -단단해지다:동:2
  +단념하:동:7
  +단단하:형:37
  +단단해지:동:2
   단단히:부:41
   단대:명:1
  -단도리하다:동:1
  +단도리하:동:1
   단도직입적:명:1
   단독:명:39
   단독정부:명:5
  @@ -10896,10 +10896,10 @@
   단둘:명:6
   단둘이:명:2
   단락:명:1
  -단란하다:형:1
  +단란하:형:1
   단련:명:12
  -단련되다:동:4
  -단련하다:동:3
  +단련되:동:4
  +단련하:동:3
   단령:명:6
   단막:명:1
   단막극:명:3
  @@ -10913,7 +10913,7 @@
   단면적:명:1
   단면적:명:2
   단명:명:2
  -단명하다:형:3
  +단명하:형:3
   단무지:명:6
   단물:명:4
   단박:명:6
  @@ -10944,21 +10944,21 @@
   단속:명:1
   단속:명:57
   단속곳:명:2
  -단속되다:동:1
  +단속되:동:1
   단속반:명:2
   단속반원:명:7
  -단속하다:동:15
  +단속하:동:15
   단수:명:2
   단수:명:2
   단수적:관:1
   단순:명:33
   단순성:명:2
  -단순하다:형:188
  -단순해지다:동:3
  +단순하:형:188
  +단순해지:동:3
   단순화:명:8
  -단순화되다:동:2
  -단순화시키다:동:2
  -단순화하다:동:7
  +단순화되:동:2
  +단순화시키:동:2
  +단순화하:동:7
   단순히:부:123
   단숨에:부:18
   단시간:명:2
  @@ -10968,17 +10968,17 @@
   단신:명:1
   단신:명:1
   단신:명:1
  -단아하다:형:18
  +단아하:형:18
   단안:명:3
   단어:명:99
   단어적:관:1
   단언:명:1
  -단언하다:동:13
  +단언하:동:13
   단역:명:7
   단연:부:17
   단연코:부:2
   단열:명:1
  -단열시키다:동:1
  +단열시키:동:1
   단열재:명:5
   단오:명:4
   단오절:명:3
  @@ -10989,9 +10989,9 @@
   단위체:명:1
   단음계권:명:1
   단일:명:16
  -단일하다:형:9
  +단일하:형:9
   단일화:명:7
  -단일화하다:동:1
  +단일화하:동:1
   단임:명:1
   단자:명:1
   단자:명:14
  @@ -11000,32 +11000,32 @@
   단잠:명:3
   단장:명:15
   단장:명:3
  -단장되다:동:4
  +단장되:동:4
   단장실:명:3
  -단장하다:동:4
  +단장하:동:4
   단장형:명:1
   단적:명:25
   단전:명:5
   단전호흡:명:13
   단전호흡법:명:1
   단절:명:18
  -단절되다:동:24
  -단절시키다:동:2
  +단절되:동:24
  +단절시키:동:2
   단절적:명:1
  -단절하다:동:2
  +단절하:동:2
   단점:명:44
   단정:명:8
   단정론:명:1
   단정미:명:1
   단정적:명:2
  -단정하다:동:10
  -단정하다:형:26
  +단정하:동:10
  +단정하:형:26
   단정학:명:3
   단정히:부:3
  -단조롭다:형:24
  +단조롭:형:24
   단죄:명:5
  -단죄되다:동:2
  -단죄하다:동:3
  +단죄되:동:2
  +단죄하:동:3
   단지:명:105
   단지:명:6
   단지:접:165
  @@ -11039,14 +11039,14 @@
   단체정신:명:1
   단초:명:3
   단초적:명:1
  -단촐하다:형:2
  +단촐하:형:2
   단추:명:12
   단축:명:11
  -단축되다:동:4
  +단축되:동:4
   단축법:명:1
  -단축시키다:동:8
  -단축하다:동:6
  -단출하다:형:3
  +단축시키:동:8
  +단축하:동:6
  +단출하:형:3
   단춧구멍:명:2
   단층:명:11
   단칸:명:2
  @@ -11061,8 +11061,8 @@
   단편적:명:16
   단편집:명:1
   단편화:명:2
  -단편화되다:동:5
  -단편화하다:동:1
  +단편화되:동:5
  +단편화하:동:1
   단품:명:1
   단풍:명:10
   단풍나무:명:3
  @@ -11071,29 +11071,29 @@
   단풍취:명:2
   단학:명:1
   단합:명:10
  -단합되다:동:1
  -단합시키다:동:1
  +단합되:동:1
  +단합시키:동:1
   단행:명:1
   단행:명:1
  -단행되다:동:7
  +단행되:동:7
   단행본:명:9
  -단행하다:동:31
  +단행하:동:31
   단호:명:1
   단호박:명:3
  -단호하다:형:40
  -단호해지다:동:1
  +단호하:형:40
  +단호해지:동:1
   단호히:부:12
   단화:명:2
  -닫다:동:112
  -닫아걸다:동:7
  -닫치다:동:1
  -닫혀지다:동:2
  -닫히다:동:43
  +닫:동:112
  +닫아걸:동:7
  +닫치:동:1
  +닫혀지:동:2
  +닫히:동:43
   달:명:205
   달:의:348
  -달가워하다:동:1
  -달갑다:형:11
  -달갑잖다:형:1
  +달가워하:동:1
  +달갑:형:11
  +달갑잖:형:1
   달걀:명:88
   달걀귀신:명:2
   달걀노른자:명:3
  @@ -11103,52 +11103,52 @@
   달걀형:명:1
   달걀흰자:명:2
   달거리:명:1
  -달관스럽다:형:1
  -달관하다:동:2
  +달관스럽:형:1
  +달관하:동:2
   달구경:명:1
  -달구다:동:27
  -달구어지다:동:8
  +달구:동:27
  +달구어지:동:8
   달구지:명:5
   달구질:명:3
  -달궈지다:동:2
  +달궈지:동:2
   달그락:부:9
  -달그락거리다:동:4
  +달그락거리:동:4
   달나라:명:2
   달님:명:11
  -달다:동:117
  -달다:동:15
  -달다:동:49
  -달다:동:5
  +달:동:117
  +달:동:15
  +달:동:49
  +달:동:5
   달다:보:259
  -달다:형:38
  +달:형:38
   달달:부:5
   달달:부:6
  -달달거리다:동:1
  +달달거리:동:1
   달도:명:1
   달동네:명:6
  -달뜨다:동:3
  -달라붙다:동:25
  -달라지다:동:250
  +달뜨:동:3
  +달라붙:동:25
  +달라지:동:250
   달랑:부:11
   달랑달랑:부:1
   달래:명:2
  -달래다:동:50
  +달래:동:50
   달래무침:명:1
  -달래지다:동:1
  +달래지:동:1
   달러:명:19
   달러:의:284
   달러화:명:5
  -달려가다:동:123
  -달려들다:동:38
  -달려오다:동:82
  +달려가:동:123
  +달려들:동:38
  +달려오:동:82
   달력:명:36
   달리:부:310
   달리기:명:48
  -달리다:동:124
  -달리다:동:257
  -달리다:동:9
  +달리:동:124
  +달리:동:257
  +달리:동:9
   달리아:명:1
  -달리하다:동:41
  +달리하:동:41
   달링:명:1
   달맞이:명:4
   달무리:명:1
  @@ -11157,30 +11157,30 @@
   달빛:명:29
   달뿌리풀:명:2
   달성:명:13
  -달성되다:동:17
  -달성시키다:동:1
  -달성하다:동:39
  +달성되:동:17
  +달성시키:동:1
  +달성하:동:39
   달수:명:1
  -달싹거리다:동:1
  -달싹이다:동:1
  -달아나다:동:78
  -달아매다:동:2
  -달아오르다:동:34
  -달아지다:동:1
  +달싹거리:동:1
  +달싹이:동:1
  +달아나:동:78
  +달아매:동:2
  +달아오르:동:34
  +달아지:동:1
   달음:명:2
   달음박질:명:1
   달음질:명:3
  -달음질치다:동:1
  -달이다:동:19
  +달음질치:동:1
  +달이:동:19
   달인:명:3
  -달짝지근하다:형:1
  -달착지근하다:형:1
  -달콤하다:형:20
  -달큰하다:형:1
  +달짝지근하:형:1
  +달착지근하:형:1
  +달콤하:형:20
  +달큰하:형:1
   달팽이:명:8
   달팽이관:명:1
   달포:명:2
  -달하다:동:108
  +달하:동:108
   닭:명:73
   닭강정:명:1
   닭고기:명:22
  @@ -11194,31 +11194,31 @@
   닭장차:명:2
   닭죽:명:3
   닭형:명:1
  -닮다:동:98
  +닮:동:98
   닮은꼴:명:5
  -닳다:동:17
  -닳아지다:동:3
  +닳:동:17
  +닳아지:동:3
   담:명:1
   담:명:3
   담:명:31
   담가:명:1
   담갈색:명:2
  -담겨지다:동:17
  -담그다:동:71
  -담기다:동:1
  -담기다:동:140
  +담겨지:동:17
  +담그:동:71
  +담기:동:1
  +담기:동:140
   담나색:명:1
   담녹색:명:1
  -담다:동:352
  -담담하다:형:10
  +담:동:352
  +담담하:형:10
   담담히:부:4
   담당:명:106
   담당관:명:5
   담당관실:명:1
   담당자:명:37
   담당층:명:1
  -담당하다:동:86
  -담대하다:형:1
  +담당하:동:86
  +담대하:형:1
   담력:명:2
   담론:명:65
   담론적:관:2
  @@ -11226,8 +11226,8 @@
   담배꽁초:명:13
   담배쌈지:명:3
   담배통:명:1
  -담백하다:형:22
  -담백해지다:동:1
  +담백하:형:22
  +담백해지:동:1
   담뱃갑:명:16
   담뱃값:명:1
   담뱃대:명:4
  @@ -11235,76 +11235,76 @@
   담벼락:명:19
   담벽:명:3
   담보:명:15
  -담보되다:동:2
  +담보되:동:2
   담보물:명:1
  -담보하다:동:16
  +담보하:동:16
   담뿍:부:5
   담색:명:4
   담세층:명:1
   담소:명:4
  -담소하다:동:2
  +담소하:동:2
   담수:명:1
   담수:명:4
   담수어:명:28
   담시:명:1
  -담쌓다:동:1
  -담아내다:동:14
  -담아지다:동:1
  +담쌓:동:1
  +담아내:동:14
  +담아지:동:1
   담요:명:17
   담임:명:73
   담임교사:명:5
   담임선생:명:10
  -담임하다:동:2
  +담임하:동:2
   담장:명:29
   담쟁이:명:2
   담쟁이덩굴:명:1
   담지자:명:15
   담지체:명:1
  -담지하다:동:6
  +담지하:동:6
   담천:명:2
   담치기:명:1
  -담치기하다:동:1
  +담치기하:동:1
   담판:명:5
   담합:명:11
  -담합하다:동:2
  +담합하:동:2
   담화:명:13
   담화문:명:2
   담황색:명:1
   담황적갈색:명:1
   담회갈색:명:1
   답:명:46
  -답답하다:형:81
  -답답해지다:동:3
  +답답하:형:81
  +답답해지:동:3
   답례:명:3
   답례품:명:1
  -답례하다:동:3
  +답례하:동:3
   답방:명:2
   답배:명:2
  -답배하다:동:4
  +답배하:동:4
   답변:명:37
  -답변하다:동:13
  +답변하:동:13
   답보:명:1
   답사:명:13
  -답사하다:동:7
  +답사하:동:7
   답습:명:1
  -답습하다:동:6
  +답습하:동:6
   답신:명:1
  -답쌓이다:동:1
  +답쌓이:동:1
   답쌔기:명:1
  -답쌔다:동:1
  +답쌔:동:1
   답안:명:5
   답안지:명:12
   답장:명:21
  -답장하다:동:3
  +답장하:동:3
   답전:명:1
  -답하다:동:63
  -답해지다:동:1
  +답하:동:63
  +답해지:동:1
   닷새:명:9
   당:관:1
   당:명:1
   당:명:235
   당:의:2
  -당겨지다:동:4
  +당겨지:동:4
   당고모:명:3
   당구:명:10
   당구공:명:1
  @@ -11319,7 +11319,7 @@
   당근:명:61
   당글당글:부:1
   당기:명:1
  -당기다:동:65
  +당기:동:65
   당기위:명:1
   당나귀:명:1
   당내:명:11
  @@ -11328,7 +11328,7 @@
   당뇨병성:명:1
   당단풍:명:4
   당당:부:3
  -당당하다:형:59
  +당당하:형:59
   당당히:부:21
   당대:명:58
   당대인:명:1
  @@ -11338,8 +11338,8 @@
   당도:명:1
   당도:명:2
   당도리:명:2
  -당도하다:동:12
  -당돌하다:형:13
  +당도하:동:12
  +당돌하:형:13
   당락:명:4
   당략:명:2
   당론:명:1
  @@ -11348,14 +11348,14 @@
   당리당략:명:2
   당리적:명:1
   당면:명:20
  -당면하다:동:23
  +당면하:동:23
   당명:명:2
   당무:명:17
   당반:명:1
   당번:명:15
   당부:명:1
   당부:명:15
  -당부하다:동:28
  +당부하:동:28
   당분:명:4
   당분간:명:6
   당분간:부:29
  @@ -11375,8 +11375,8 @@
   당색:명:1
   당선:명:36
   당선권:명:1
  -당선되다:동:26
  -당선시키다:동:3
  +당선되:동:26
  +당선시키:동:3
   당선자:명:21
   당선작:명:3
   당세:명:3
  @@ -11388,10 +11388,10 @@
   당신:대:878
   당악:명:1
   당연:명:2
  -당연시되다:동:3
  -당연시하다:동:4
  +당연시되:동:3
  +당연시하:동:4
   당연지사:명:3
  -당연하다:형:175
  +당연하:형:175
   당연히:부:83
   당원:명:18
   당위:명:1
  @@ -11422,9 +11422,9 @@
   당직자:명:6
   당질:명:2
   당질대사:명:1
  -당차다:형:5
  +당차:형:5
   당첨:명:12
  -당첨되다:동:2
  +당첨되:동:2
   당첨자:명:4
   당초:명:68
   당최:부:5
  @@ -11432,27 +11432,27 @@
   당파성:명:4
   당파적:관:3
   당파적:명:1
  -당하다:동:323
  -당하다:형:6
  +당하:동:323
  +당하:형:6
   당학:명:1
   당해:명:11
   당해인:명:11
   당헌:명:2
   당혹:명:1
   당혹감:명:9
  -당혹스러워지다:동:1
  -당혹스러워하다:동:2
  -당혹스럽다:형:10
  -당혹하다:동:4
  -당혹해하다:동:1
  +당혹스러워지:동:1
  +당혹스러워하:동:2
  +당혹스럽:형:10
  +당혹하:동:4
  +당혹해하:동:1
   당황:명:5
  -당황스럽다:형:8
  -당황하다:동:81
  -당황해하다:동:4
  +당황스럽:형:8
  +당황하:동:81
  +당황해하:동:4
   당황히:부:3
   닻:명:6
   닻줄:명:1
  -닿다:동:159
  +닿:동:159
   닿소리:명:2
   대:명:15
   대:명:17
  @@ -11489,18 +11489,18 @@
   대거:부:34
   대거리:명:6
   대걸레:명:1
  -대걸레질하다:동:1
  +대걸레질하:동:1
   대게:명:1
  -대견스러워하다:동:2
  -대견스럽다:형:7
  -대견하다:형:14
  -대견해하다:동:2
  +대견스러워하:동:2
  +대견스럽:형:7
  +대견하:형:14
  +대견해하:동:2
   대결:명:50
   대결사:명:1
   대결산:명:1
   대결상:명:1
   대결장:명:1
  -대결하다:동:7
  +대결하:동:7
   대계:명:3
   대고모:명:1
   대공:명:1
  @@ -11544,26 +11544,26 @@
   대기록:명:1
   대기론자:명:1
   대기붕:명:1
  -대기시키다:동:1
  +대기시키:동:1
   대기실:명:9
   대기업:명:89
   대기업체:명:1
   대기자:명:1
   대기질:명:2
   대기층:명:1
  -대기하다:동:34
  +대기하:동:34
   대길:명:1
  -대길하다:형:1
  +대길하:형:1
   대꾸:명:38
  -대꾸하다:동:25
  -대꾼하다:형:2
  -대끼다:동:1
  +대꾸하:동:25
  +대꾼하:형:2
  +대끼:동:1
   대나무:명:16
   대남:명:10
   대남관:명:1
   대납:명:3
   대납제:명:1
  -대납하다:동:3
  +대납하:동:3
   대낮:명:36
   대내:명:2
   대내외:명:2
  @@ -11577,22 +11577,22 @@
   대놓고:부:1
   대뇌:명:6
   대님:명:2
  -대다:동:298
  +대:동:298
   대다:보:279
   대다수:명:54
   대단결:명:1
   대단스레:부:1
   대단원:명:3
   대단위:명:3
  -대단하다:형:96
  +대단하:형:96
   대단히:부:96
   대담:명:7
   대담성:명:2
  -대담하다:동:1
  -대담하다:형:13
  -대담해지다:동:4
  +대담하:동:1
  +대담하:형:13
  +대담해지:동:4
   대답:명:157
  -대답하다:동:208
  +대답하:동:208
   대대:명:1
   대대:명:7
   대대로:명:2
  @@ -11607,17 +11607,17 @@
   대동:명:3
   대동계:명:1
   대동계:명:1
  -대동단결하다:동:1
  -대동소이하다:형:3
  -대동하다:동:8
  +대동단결하:동:1
  +대동소이하:형:3
  +대동하:동:8
   대두:명:1
   대두:명:9
  -대두되다:동:19
  -대두시키다:동:1
  -대두하다:동:13
  -대들다:동:17
  +대두되:동:19
  +대두시키:동:1
  +대두하:동:13
  +대들:동:17
   대들보:명:5
  -대등하다:형:10
  +대등하:형:10
   대뜸:부:22
   대란:명:4
   대략:명:2
  @@ -11629,16 +11629,16 @@
   대량적:명:1
   대량화:명:1
   대령:명:18
  -대령하다:동:3
  +대령하:동:3
   대례:명:1
   대례식:명:2
   대로:명:11
   대로:의:374
   대로변:명:2
   대롱:명:3
  -대롱거리다:동:1
  +대롱거리:동:1
   대롱대롱:부:3
  -대롱대롱하다:동:1
  +대롱대롱하:동:1
   대류:명:2
   대류성:명:1
   대륙:명:69
  @@ -11654,22 +11654,22 @@
   대리점:명:41
   대립:명:85
   대립기:명:1
  -대립되다:동:13
  -대립시키다:동:1
  +대립되:동:13
  +대립시키:동:1
   대립적:관:2
   대립적:명:7
  -대립하다:동:26
  +대립하:동:26
   대마:명:1
   대마초:명:4
   대만원:명:1
   대망:명:1
  -대망되다:동:1
  +대망되:동:1
   대망론:명:1
  -대망하다:동:1
  +대망하:동:1
   대매출:명:2
   대머리:명:9
   대면:명:6
  -대면하다:동:9
  +대면하:동:9
   대명사:명:19
   대명사적:관:1
   대명천지:명:2
  @@ -11683,11 +11683,11 @@
   대문라:명:1
   대문자:명:1
   대문짝:명:2
  -대문짝만하다:형:3
  -대물리다:동:2
  +대문짝만하:형:3
  +대물리:동:2
   대물림:명:1
  -대물림되다:동:1
  -대물림하다:동:1
  +대물림되:동:1
  +대물림하:동:1
   대미:명:22
   대미:명:4
   대민:명:9
  @@ -11698,26 +11698,26 @@
   대배우:명:2
   대번:부:1
   대번에:부:8
  -대범하다:형:5
  +대범하:형:5
   대법관:명:4
   대법원장:명:13
   대변:명:2
   대변:명:6
  -대변되다:동:4
  +대변되:동:4
   대변신:명:3
   대변인:명:50
   대변인단:명:1
   대변자:명:3
   대변칙:명:1
  -대변하다:동:28
  +대변하:동:28
   대변혁:명:3
   대변환:명:1
   대별:명:2
  -대별되다:동:5
  -대별시키다:동:1
  -대별하다:동:4
  +대별되:동:5
  +대별시키:동:1
  +대별하:동:4
   대보:명:1
  -대보다:동:1
  +대보:동:1
   대보름:명:3
   대보름날:명:2
   대본:명:16
  @@ -11730,7 +11730,7 @@
   대부금:명:1
   대부대:명:1
   대부분:명:501
  -대부하다:동:2
  +대부하:동:2
   대북:명:47
   대분:의:3
   대분류:명:2
  @@ -11739,12 +11739,12 @@
   대비:명:41
   대비:명:8
   대비기:명:4
  -대비되다:동:8
  -대비시키다:동:3
  +대비되:동:8
  +대비시키:동:3
   대비적:관:2
   대비책:명:13
  -대비하다:동:6
  -대비하다:동:83
  +대비하:동:6
  +대비하:동:83
   대빵:부:2
   대사:명:2
   대사:명:3
  @@ -11778,13 +11778,13 @@
   대상지:명:1
   대상층:명:1
   대상화:명:1
  -대상화되다:동:3
  -대상화하다:동:1
  -대생하다:동:2
  +대상화되:동:3
  +대상화하:동:1
  +대생하:동:2
   대서:명:2
   대서사시:명:1
  -대서특필되다:동:1
  -대서특필하다:동:2
  +대서특필되:동:1
  +대서특필하:동:2
   대선:명:109
   대선거구제:명:2
   대선배:명:2
  @@ -11795,12 +11795,12 @@
   대성:명:1
   대성공:명:1
   대성당:명:2
  -대성시키다:동:1
  +대성시키:동:1
   대성악:명:1
   대성전:명:3
   대성통곡:명:2
  -대성통곡하다:동:1
  -대성하다:동:1
  +대성통곡하:동:1
  +대성하:동:1
   대성황:명:2
   대세:명:13
   대세론:명:2
  @@ -11813,7 +11813,7 @@
   대수:명:2
   대수:명:4
   대수:명:5
  -대수롭다:형:15
  +대수롭:형:15
   대수술:명:1
   대수학자:명:1
   대순환:명:2
  @@ -11822,13 +11822,13 @@
   대승리:명:1
   대승적:관:4
   대시:명:1
  -대시하다:동:1
  +대시하:동:1
   대식:명:1
   대식구:명:2
   대신:명:11
   대신:명:333
  -대신되다:동:1
  -대신하다:동:68
  +대신되:동:1
  +대신하:동:68
   대아:명:1
   대악:명:1
   대안:명:28
  @@ -11839,19 +11839,19 @@
   대야합:명:1
   대양:명:9
   대어:명:4
  -대어지다:동:2
  +대어지:동:2
   대업:명:2
   대여:명:18
   대여금:명:2
   대여당:명:1
  -대여되다:동:1
  +대여되:동:1
   대여료:명:5
  -대여받다:동:1
  +대여받:동:1
   대여섯:관:19
   대여섯:수:2
   대여업:명:2
   대여업소:명:2
  -대여하다:동:4
  +대여하:동:4
   대역:명:1
   대역:명:4
   대역:명:7
  @@ -11876,9 +11876,9 @@
   대용량:명:2
   대용품:명:1
   대우:명:50
  -대우받다:동:6
  +대우받:동:6
   대우주:명:1
  -대우하다:동:4
  +대우하:동:4
   대웅보전:명:2
   대웅전:명:29
   대원:명:7
  @@ -11886,13 +11886,13 @@
   대원칙:명:3
   대위:명:2
   대유행:명:4
  -대유행하다:동:1
  +대유행하:동:1
   대읍:명:1
   대응:명:107
  -대응되다:동:3
  +대응되:동:3
   대응물:명:2
   대응책:명:16
  -대응하다:동:89
  +대응하:동:89
   대의:명:3
   대의:명:7
   대의명분:명:1
  @@ -11913,7 +11913,7 @@
   대작가:명:1
   대작물:명:2
   대작전:명:6
  -대작하다:동:1
  +대작하:동:1
   대잔치:명:1
   대잠:명:1
   대장:명:10
  @@ -11934,7 +11934,7 @@
   대재벌:명:1
   대저:부:2
   대저택:명:1
  -대적하다:동:1
  +대적하:동:1
   대전:명:1
   대전:명:1
   대전:명:35
  @@ -11943,13 +11943,13 @@
   대전제:명:2
   대전향:명:1
   대전환:명:6
  -대전환하다:동:2
  -대절하다:동:1
  +대전환하:동:2
  +대절하:동:1
   대접:명:3
   대접:명:34
  -대접받다:동:10
  +대접받:동:10
   대접전:명:1
  -대접하다:동:27
  +대접하:동:27
   대정사:명:1
   대정치가:명:1
   대제:명:2
  @@ -11957,11 +11957,11 @@
   대제전:명:1
   대제학:명:1
   대조:명:22
  -대조되다:동:3
  +대조되:동:3
   대조사:명:1
   대조적:명:23
   대조표:명:2
  -대조하다:동:8
  +대조하:동:8
   대조화:명:1
   대졸:명:8
   대졸자:명:3
  @@ -11969,7 +11969,7 @@
   대종회:명:1
   대좌:명:3
   대좌:명:6
  -대좌하다:동:1
  +대좌하:동:1
   대주:명:2
   대주주:명:23
   대중:명:2
  @@ -11995,8 +11995,8 @@
   대중지:명:2
   대중탕:명:2
   대중화:명:18
  -대중화되다:동:8
  -대중화시키다:동:1
  +대중화되:동:8
  +대중화시키:동:1
   대중화주의:명:1
   대증:명:2
   대지:명:4
  @@ -12011,7 +12011,7 @@
   대쪽:명:2
   대차:명:1
   대차:명:2
  -대차다:형:1
  +대차:형:1
   대참사:명:1
   대창:명:1
   대책:명:291
  @@ -12020,7 +12020,7 @@
   대책위:명:1
   대처:명:17
   대처:명:5
  -대처하다:동:49
  +대처하:동:49
   대척적:명:1
   대천지원수:명:1
   대첩:명:6
  @@ -12028,13 +12028,13 @@
   대청소:명:8
   대체:명:22
   대체:부:37
  -대체되다:동:8
  +대체되:동:8
   대체로:부:134
   대체물:명:2
  -대체시키다:동:1
  +대체시키:동:1
   대체적:관:4
   대체적:명:14
  -대체하다:동:23
  +대체하:동:23
   대추:명:25
   대추꿀차:명:1
   대추나무:명:3
  @@ -12044,22 +12044,22 @@
   대축척:명:6
   대출:명:70
   대출금:명:5
  -대출되다:동:1
  +대출되:동:1
   대출력:명:1
  -대출받다:동:4
  +대출받:동:4
   대출분:명:1
   대출액:명:1
   대출자:명:1
  -대출하다:동:10
  +대출하:동:10
   대충:부:74
   대충대충:부:5
   대취락:명:2
   대층:명:1
   대치:명:11
  -대치되다:동:4
  +대치되:동:4
   대치물:명:1
  -대치하다:동:4
  -대치하다:동:6
  +대치하:동:4
  +대치하:동:6
   대침:명:1
   대칭:명:7
   대칭성:명:4
  @@ -12071,7 +12071,7 @@
   대토론회:명:3
   대토지:명:17
   대통력:명:1
  -대통령:명:1,273
  +대통령:명:1273
   대통령령:명:2
   대통령상:명:3
   대통령제:명:8
  @@ -12081,10 +12081,10 @@
   대투쟁:명:2
   대파:명:2
   대파:명:36
  -대파하다:동:2
  +대파하:동:2
   대판:명:5
   대패:명:7
  -대패하다:동:1
  +대패하:동:1
   대팽창기:명:1
   대평원:명:1
   대포:명:22
  @@ -12092,7 +12092,7 @@
   대포쟁이:명:1
   대폭:부:84
   대폭발:명:11
  -대폭발하다:동:1
  +대폭발하:동:1
   대폭적:관:1
   대폭적:명:9
   대폿잔:명:2
  @@ -12101,7 +12101,7 @@
   대표곡:명:2
   대표권:명:2
   대표단:명:30
  -대표되다:동:5
  +대표되:동:5
   대표부:명:9
   대표성:명:4
   대표자:명:13
  @@ -12110,17 +12110,17 @@
   대표적:명:127
   대표제:명:2
   대표직:명:2
  -대표하다:동:43
  +대표하:동:43
   대피:명:3
   대피소:명:5
  -대피시키다:동:1
  -대피하다:동:1
  +대피시키:동:1
  +대피하:동:1
   대필:명:2
   대필생:명:1
  -대필하다:동:1
  +대필하:동:1
   대하:명:1
   대하:명:4
  -대하다:동:4,871
  +대하:동:4871
   대하드라마:명:3
   대하증:명:7
   대학:명:732
  @@ -12141,17 +12141,17 @@
   대항적:관:14
   대항적:명:2
   대항전:명:2
  -대항하다:동:33
  +대항하:동:33
   대해:명:1
   대행:명:9
   대행기:명:2
   대행사:명:4
  -대행시키다:동:1
  +대행시키:동:1
   대행업:명:1
   대행업체:명:5
   대행자:명:1
   대행진:명:1
  -대행하다:동:3
  +대행하:동:3
   대향로:명:1
   대혁명:명:4
   대혈:명:1
  @@ -12161,7 +12161,7 @@
   대형선:명:2
   대형차:명:3
   대형화:명:3
  -대형화하다:동:1
  +대형화하:동:1
   대호:명:1
   대호족:명:2
   대호황:명:1
  @@ -12175,7 +12175,7 @@
   대화자:명:1
   대화재:명:2
   대화체:명:1
  -대화하다:동:20
  +대화하:동:20
   대화합:명:2
   대화해:명:2
   대화형:명:1
  @@ -12189,7 +12189,7 @@
   대흉년:명:1
   대흑갈색:명:1
   대흑회색:명:1
  -대히트하다:동:1
  +대히트하:동:1
   댁:대:11
   댁:명:118
   댄스:명:14
  @@ -12200,11 +12200,11 @@
   댓돌:명:4
   댓바람:명:1
   댓병:명:1
  -댕그랗다:형:1
  +댕그랗:형:1
   댕기:명:11
  -댕기다:동:13
  -댕기다:동:8
  -더:부:2,567
  +댕기:동:13
  +댕기:동:8
  +더:부:2567
   더구나:부:155
   더군다나:부:18
   더그아웃:명:1
  @@ -12215,49 +12215,49 @@
   더더욱:부:23
   더덕:명:1
   더덕더덕:부:4
  -더덕더덕하다:형:1
  +더덕더덕하:형:1
   더덕주:명:1
   더덕차:명:1
  -더뎌지다:동:1
  -더듬거리다:동:11
  -더듬다:동:42
  -더듬대다:동:1
  +더뎌지:동:1
  +더듬거리:동:11
  +더듬:동:42
  +더듬대:동:1
   더듬더듬:부:1
   더듬이:명:2
   더디:부:2
  -더디다:형:12
  +더디:형:12
   더러:부:45
   더러움:명:14
  -더러워지다:동:17
  +더러워지:동:17
   더럭:부:6
  -더럽다:형:62
  -더럽혀지다:동:7
  -더럽히다:동:19
  +더럽:형:62
  +더럽혀지:동:7
  +더럽히:동:19
   더미:명:28
   더벅머리:명:3
  -더부룩하다:형:2
  -더부룩하다:형:2
  -더부룩해지다:동:3
  -더불다:동:179
  +더부룩하:형:2
  +더부룩하:형:2
  +더부룩해지:동:3
  +더불:동:179
   더블:명:8
   더블백:명:5
   더블유:명:1
   더빙:명:1
  -더없다:형:3
  +더없:형:3
   더없이:부:26
   더욱:부:700
   더욱더:부:37
   더욱더욱:부:3
   더욱이:부:92
   더운물:명:7
  -더워지다:동:7
  +더워지:동:7
   더위:명:63
   더티플레이:명:2
  -더하다:동:124
  -더하다:형:11
  -더하여지다:동:1
  +더하:동:124
  +더하:형:11
  +더하여지:동:1
   더한층:부:4
  -더해지다:동:11
  +더해지:동:11
   덕:명:70
   덕담:명:17
   덕망:명:1
  @@ -12265,7 +12265,7 @@
   덕목:명:17
   덕분:명:72
   덕성:명:4
  -덕스럽다:형:1
  +덕스럽:형:1
   덕업:명:5
   덕업상권:명:1
   덕육:명:1
  @@ -12274,77 +12274,77 @@
   덕트:명:2
   덕판:명:1
   덕행:명:2
  -던져두다:동:2
  -던져지다:동:7
  +던져두:동:2
  +던져지:동:7
   던지기:명:13
  -던지다:동:347
  +던지:동:347
   덜:부:101
  -덜거덕거리다:동:1
  -덜그럭거리다:동:1
  +덜거덕거리:동:1
  +덜그럭거리:동:1
   덜꿩나무:명:2
  -덜다:동:61
  +덜:동:61
   덜덜:부:6
  -덜덜거리다:동:1
  -덜되다:형:1
  -덜떨어지다:형:2
  -덜렁거리다:동:2
  -덜렁대다:동:1
  +덜덜거리:동:1
  +덜되:형:1
  +덜떨어지:형:2
  +덜렁거리:동:2
  +덜렁대:동:1
   덜렁덜렁:부:2
   덜미:명:6
  -덜어드리다:동:1
  -덜어지다:동:1
  +덜어드리:동:1
  +덜어지:동:1
   덜커덕:부:1
   덜컥:부:14
   덜컥덜컥:부:1
   덜컹:부:2
  -덜컹거리다:동:1
  -덜컹이다:동:1
  -덜컹하다:동:1
  -덜하다:형:11
  +덜컹거리:동:1
  +덜컹이:동:1
  +덜컹하:동:1
  +덜하:형:11
   덤:명:5
   덤덤:명:1
  -덤덤하다:형:3
  -덤덤해하다:동:1
  -덤벙대다:동:1
  -덤벼들다:동:17
  +덤덤하:형:3
  +덤덤해하:동:1
  +덤벙대:동:1
  +덤벼들:동:17
   덤불:명:2
  -덤비다:동:17
  +덤비:동:17
   덤프트럭:명:1
   덤핑:명:8
  -덥다:형:79
  +덥:형:79
   덥석:부:14
   덥석덥석:부:1
  -덥히다:동:3
  +덥히:동:3
   덧:명:3
   덧게비:명:1
  -덧나다:동:1
  +덧나:동:1
   덧니:명:2
  -덧대다:동:3
  +덧대:동:3
   덧마루:명:1
   덧문:명:4
  -덧바르다:동:2
  -덧발라지다:동:1
  -덧보태다:동:2
  -덧붙여지다:동:5
  -덧붙이다:동:103
  -덧세우다:동:2
  +덧바르:동:2
  +덧발라지:동:1
  +덧보태:동:2
  +덧붙여지:동:5
  +덧붙이:동:103
  +덧세우:동:2
   덧셈:명:5
  -덧씌워지다:동:1
  -덧없다:형:12
  +덧씌워지:동:1
  +덧없:형:12
   덧없이:부:11
  -덧입다:동:2
  +덧입:동:2
   덧칠:명:3
  -덧칠하다:동:2
  -덧칠해지다:동:1
  +덧칠하:동:2
  +덧칠해지:동:1
   덩굴:명:23
   덩굴성:명:2
   덩굴손:명:1
  -덩그렇다:형:5
  -덩그맣다:형:1
  -덩달다:동:17
  -덩실하다:형:1
  +덩그렇:형:5
  +덩그맣:형:1
  +덩달:동:17
  +덩실하:형:1
   덩어리:명:59
  -덩어리지다:동:2
  +덩어리지:동:2
   덩이:명:23
   덩치:명:34
   덩크:명:1
  @@ -12352,28 +12352,28 @@
   덮개:명:10
   덮개돌:명:1
   덮깃:명:4
  -덮다:동:99
  +덮:동:99
   덮밥:명:11
  -덮어놓다:동:10
  -덮어쓰다:동:6
  -덮어씌우다:동:9
  -덮여지다:동:1
  -덮이다:동:35
  -덮쳐누르다:동:1
  -덮치다:동:16
  -데:의:2,104
  +덮어놓:동:10
  +덮어쓰:동:6
  +덮어씌우:동:9
  +덮여지:동:1
  +덮이:동:35
  +덮쳐누르:동:1
  +덮치:동:16
  +데:의:2104
   데굴데굴:부:4
   데꼬:불:2
   데나리온:의:1
  -데다:동:4
  -데려가다:동:36
  -데려오다:동:16
  -데리다:동:196
  +데:동:4
  +데려가:동:36
  +데려오:동:16
  +데리:동:196
   데릴사위:명:1
  -데면데면하다:형:1
  +데면데면하:형:1
   데모:명:30
   데모대:명:2
  -데모하다:동:5
  +데모하:동:5
   데몬스트레이션:명:1
   데뷔:명:24
   데뷔곡:명:1
  @@ -12381,23 +12381,23 @@
   데뷔작:명:14
   데뷔전:명:4
   데뷔탕트:명:1
  -데뷔하다:동:23
  +데뷔하:동:23
   데생:명:1
   데스크:명:9
   데시리터:의:8
   데시벨:의:2
  -데우다:동:17
  -데워지다:동:2
  +데우:동:17
  +데워지:동:2
   데이:명:1
  -데이다:동:1
  +데이:동:1
   데이터:명:15
   데이터베이스:명:29
   데이트:명:32
   데이트법:명:1
  -데이트하다:동:6
  -데치다:동:27
  +데이트하:동:6
  +데치:동:27
   데카당스:명:7
  -델리키하다:형:1
  +델리키하:형:1
   델타선:명:1
   뎅겅:부:1
   뎌:대:1
  @@ -12416,7 +12416,7 @@
   도감:명:1
   도감:명:2
   도강:명:1
  -도강하다:동:1
  +도강하:동:1
   도경:명:2
   도교:명:19
   도교적:명:1
  @@ -12425,8 +12425,8 @@
   도구적:명:1
   도굴:명:1
   도굴꾼:명:2
  -도굴되다:동:2
  -도굴하다:동:1
  +도굴되:동:2
  +도굴하:동:1
   도그마:명:5
   도금:명:5
   도급:명:3
  @@ -12441,21 +12441,21 @@
   도끼질:명:1
   도나캐나:부:1
   도난:명:8
  -도난당하다:동:4
  +도난당하:동:4
   도난품:명:2
   도내:명:5
   도넛:명:2
   도농:명:5
  -도닥거리다:동:1
  +도닥거리:동:1
   도달:명:4
  -도달되다:동:3
  -도달하다:동:62
  +도달되:동:3
  +도달하:동:62
   도당:명:1
   도당:명:1
   도당:명:2
   도대체:부:198
   도덕:명:51
  -도덕군자연하다:동:1
  +도덕군자연하:동:1
   도덕규범:명:1
   도덕성:명:46
   도덕심:명:1
  @@ -12466,20 +12466,20 @@
   도덕주의자:명:1
   도덕주의적:관:1
   도도:명:1
  -도도하다:형:2
  -도도하다:형:4
  -도도해지다:동:1
  +도도하:형:2
  +도도하:형:4
  +도도해지:동:1
   도도히:부:1
   도독:명:6
   도둑:명:48
   도둑놈:명:8
   도둑놈촌:명:2
  -도둑맞다:동:5
  +도둑맞:동:5
   도둑질:명:13
  -도둑질하다:동:2
  +도둑질하:동:2
   도둑촌:명:1
  -도드라지다:동:3
  -도드라지다:형:1
  +도드라지:동:3
  +도드라지:형:1
   도들림:명:1
   도떼기:명:1
   도떼기시장:명:1
  @@ -12491,11 +12491,11 @@
   도랑:명:14
   도래:명:9
   도래인:명:1
  -도래하다:동:10
  -도래하다:동:8
  +도래하:동:10
  +도래하:동:8
   도량:명:1
   도량형:명:1
  -도려내다:동:6
  +도려내:동:6
   도련:명:5
   도련님:명:24
   도련선:명:3
  @@ -12528,13 +12528,13 @@
   도마뱀:명:2
   도막:명:2
   도망:명:26
  -도망가다:동:28
  +도망가:동:28
   도망자:명:3
   도망질:명:1
  -도망치다:동:46
  -도망하다:동:2
  -도맡다:동:12
  -도맡아하다:동:1
  +도망치:동:46
  +도망하:동:2
  +도맡:동:12
  +도맡아하:동:1
   도매:명:5
   도매상:명:2
   도매업:명:2
  @@ -12543,8 +12543,8 @@
   도면:명:7
   도명:명:2
   도모:명:1
  -도모되다:동:1
  -도모하다:동:40
  +도모되:동:1
  +도모하:동:40
   도목수:명:1
   도무지:부:48
   도미:명:3
  @@ -12556,24 +12556,24 @@
   도박판:명:1
   도발:명:31
   도발적:관:2
  -도발하다:동:1
  +도발하:동:1
   도배:명:6
   도배지:명:1
  -도배질하다:동:1
  +도배질하:동:1
   도벽:명:3
   도보:명:1
   도부:명:1
   도사:명:1
   도사:명:6
   도사견:명:1
  -도사리다:동:21
  +도사리:동:21
   도산:명:6
  -도산하다:동:1
  +도산하:동:1
   도상:명:2
   도상적:관:1
   도색:명:1
   도색:명:2
  -도색하다:동:1
  +도색하:동:1
   도생주의:명:1
   도서:명:25
   도서:명:7
  @@ -12606,12 +12606,12 @@
   도시적:명:5
   도시형:명:2
   도시화:명:7
  -도시화되다:동:2
  +도시화되:동:2
   도식:명:12
   도식성:명:1
   도식적:관:3
   도식적:명:4
  -도식화하다:동:1
  +도식화하:동:1
   도심:명:1
   도심:명:37
   도심지:명:3
  @@ -12619,30 +12619,30 @@
   도안:명:1
   도안적:명:1
   도야:명:8
  -도야하다:동:6
  +도야하:동:6
   도약:명:9
   도약기:명:1
   도약력:명:2
  -도약시키다:동:2
  -도약하다:동:5
  +도약시키:동:2
  +도약하:동:5
   도열:명:1
  -도열하다:동:2
  +도열하:동:2
   도예가:명:2
   도예과:명:1
  -도와주다:동:99
  -도외시되다:동:1
  -도외시하다:동:11
  +도와주:동:99
  +도외시되:동:1
  +도외시하:동:11
   도요새:명:1
   도용:명:1
  -도용하다:동:4
  +도용하:동:4
   도움:명:305
   도움닫기:명:16
   도움말:명:29
  -도움받다:동:2
  +도움받:동:2
   도움책:명:1
   도읍:명:18
   도읍지:명:40
  -도읍하다:동:2
  +도읍하:동:2
   도의:명:2
   도의원:명:2
   도의적:관:2
  @@ -12651,10 +12651,10 @@
   도인:명:3
   도입:명:99
   도입기:명:9
  -도입되다:동:32
  +도입되:동:32
   도입부:명:6
   도입선:명:1
  -도입하다:동:80
  +도입하:동:80
   도자:명:1
   도자기:명:36
   도장:명:11
  @@ -12662,79 +12662,79 @@
   도장:명:8
   도저히:부:84
   도적:명:7
  -도적질하다:동:1
  +도적질하:동:1
   도전:명:48
   도전감:명:1
   도전력:명:2
  -도전받다:동:1
  +도전받:동:1
   도전성:명:1
   도전자:명:1
   도전작:명:1
   도전장:명:1
   도전적:관:2
   도전적:명:10
  -도전하다:동:56
  +도전하:동:56
   도정:명:2
  -도정하다:동:3
  +도정하:동:3
   도제:명:1
   도조:명:10
   도주:명:6
  -도주하다:동:2
  +도주하:동:2
   도중:명:73
  -도중하차하다:동:2
  +도중하차하:동:2
   도지개:명:1
  -도지다:동:4
  +도지:동:4
   도지사:명:10
   도지사실:명:1
   도착:명:1
   도착:명:17
  -도착되다:동:1
  +도착되:동:1
   도착적:관:1
   도착적:명:1
  -도착하다:동:177
  +도착하:동:177
   도참설:명:3
   도처:명:28
   도첩:명:1
   도청:명:10
   도청:명:21
   도출:명:3
  -도출되다:동:6
  -도출하다:동:15
  +도출되:동:6
  +도출하:동:15
   도취:명:4
   도취경:명:1
  -도취되다:동:3
  +도취되:동:3
   도취적:명:1
  -도취하다:동:1
  +도취하:동:1
   도치법:명:1
   도탄:명:1
  -도탑다:형:1
  +도탑:형:1
   도태:명:8
  -도태되다:동:8
  -도태시키다:동:1
  +도태되:동:8
  +도태시키:동:1
   도토리:명:12
   도토리묵:명:2
  -도톰하다:형:4
  +도톰하:형:4
   도통:명:3
   도통:부:8
  -도통하다:동:4
  +도통하:동:4
   도트:명:6
   도편수:명:14
   도포:명:8
   도표:명:6
  -도표화하다:동:1
  +도표화하:동:1
   도피:명:22
   도피구:명:1
   도피성:명:1
  -도피시키다:동:1
  +도피시키:동:1
   도피적:관:1
   도피주의:명:1
   도피처:명:8
  -도피하다:동:5
  +도피하:동:5
   도하:명:1
   도학:명:1
   도합:명:8
   도해:명:1
  -도해하다:동:1
  +도해하:동:1
   도형:명:11
   도호:명:1
   도호부:명:2
  @@ -12747,33 +12747,33 @@
   독:명:8
   독감:명:7
   독경:명:2
  -독경하다:동:1
  +독경하:동:1
   독과점:명:8
  -독과점되다:동:1
  +독과점되:동:1
   독극물:명:1
   독기:명:2
   독단:명:5
   독단적:관:2
   독대:명:2
  -독대하다:동:1
  +독대하:동:1
   독도법:명:1
   독돌이:명:1
   독려:명:2
  -독려하다:동:7
  +독려하:동:7
   독력:명:1
   독림가:명:2
   독립:명:100
   독립국:명:2
   독립군:명:3
   독립당:명:1
  -독립되다:동:23
  +독립되:동:23
   독립성:명:8
  -독립시키다:동:2
  +독립시키:동:2
   독립심:명:3
   독립적:관:2
   독립적:명:26
   독립파:명:1
  -독립하다:동:25
  +독립하:동:25
   독맥:명:2
   독무:명:2
   독무대:명:3
  @@ -12793,7 +12793,7 @@
   독사:명:7
   독사진:명:1
   독살:명:6
  -독살스럽다:형:1
  +독살스럽:형:1
   독상:명:6
   독새:명:1
   독서:명:46
  @@ -12805,7 +12805,7 @@
   독서인:명:1
   독서층:명:1
   독서파:명:1
  -독서하다:동:2
  +독서하:동:2
   독선:명:5
   독선생:명:1
   독선적:관:2
  @@ -12818,12 +12818,12 @@
   독수리:명:23
   독식:명:2
   독식론:명:2
  -독식하다:동:1
  +독식하:동:1
   독신:명:1
   독신:명:4
   독신주의:명:1
   독신주의자:명:2
  -독실하다:형:5
  +독실하:형:5
   독약:명:1
   독어:명:1
   독일어:명:10
  @@ -12840,28 +12840,28 @@
   독재적:명:1
   독재화:명:1
   독전:명:1
  -독전하다:동:1
  +독전하:동:1
   독점:명:56
   독점권:명:1
   독점기:명:3
  -독점되다:동:3
  +독점되:동:3
   독점욕:명:2
   독점적:관:5
   독점적:명:4
  -독점하다:동:19
  +독점하:동:19
   독점화:관:1
   독점화:명:1
  -독점화되다:동:1
  +독점화되:동:1
   독종:명:4
   독주:명:1
   독주:명:1
   독주:명:3
  -독주하다:동:2
  +독주하:동:2
   독주회:명:7
   독지:명:1
   독지가:명:1
   독직:명:2
  -독차지하다:동:4
  +독차지하:동:4
   독창:명:2
   독창성:명:9
   독창적:관:3
  @@ -12869,16 +12869,16 @@
   독초:명:1
   독촉:명:2
   독촉장:명:1
  -독촉하다:동:2
  +독촉하:동:2
   독충:명:1
   독침:명:2
  -독특하다:형:163
  -독파하다:동:1
  -독하다:형:28
  +독특하:형:163
  +독파하:동:1
  +독하:형:28
   독해:명:1
   독화살:명:1
   독후감:명:3
  -돈:명:1,232
  +돈:명:1232
   돈:의:2
   돈가스:명:7
   돈거래:명:6
  @@ -12886,32 +12886,32 @@
   돈놀이:명:1
   돈다발:명:1
   돈대:명:3
  -돈독하다:형:2
  -돈독해지다:동:2
  +돈독하:형:2
  +돈독해지:동:2
   돈독히:부:1
   돈뭉치:명:2
   돈방석:명:1
   돈벌이:명:10
  -돈벌이되다:동:1
  +돈벌이되:동:1
   돈사:명:1
   돈세탁:명:2
   돈수배:명:1
   돈오:명:15
  -돈오하다:동:1
  +돈오하:동:1
   돈장사:명:1
   돈주머니:명:3
   돈줄:명:8
   돈치기:명:1
   돈타령:명:1
  -돋다:동:22
  +돋:동:22
   돋보기:명:7
   돋보기안경:명:1
  -돋보이다:동:54
  -돋아나다:동:21
  -돋우다:동:26
  +돋보이:동:54
  +돋아나:동:21
  +돋우:동:26
   돋움체:명:2
   돋을새김:명:5
  -돋치다:동:6
  +돋치:동:6
   돌:명:166
   돌:명:3
   돌:의:11
  @@ -12923,7 +12923,7 @@
   돌기둥:명:7
   돌날:명:2
   돌널무덤:명:1
  -돌다:동:242
  +돌:동:242
   돌다리:명:4
   돌단:명:1
   돌단풍:명:2
  @@ -12933,15 +12933,15 @@
   돌덩이:명:8
   돌도끼:명:2
   돌돌:부:10
  -돌려나다:동:2
  -돌려놓다:동:9
  -돌려받다:동:10
  -돌려보내다:동:14
  -돌려세우다:동:2
  -돌려주다:동:25
  -돌려지다:동:6
  -돌리다:동:4
  -돌리다:동:415
  +돌려나:동:2
  +돌려놓:동:9
  +돌려받:동:10
  +돌려보내:동:14
  +돌려세우:동:2
  +돌려주:동:25
  +돌려지:동:6
  +돌리:동:4
  +돌리:동:415
   돌림:명:1
   돌림자:명:1
   돌막:명:1
  @@ -12951,14 +12951,14 @@
   돌발:명:6
   돌발적:관:1
   돌발적:명:2
  -돌발하다:동:1
  +돌발하:동:1
   돌밭:명:3
   돌배:명:1
   돌배나무:명:5
   돌법사:명:3
   돌변:명:1
  -돌변하다:동:4
  -돌보다:동:70
  +돌변하:동:4
  +돌보:동:70
   돌복:명:1
   돌부리:명:3
   돌부처:명:4
  @@ -12970,52 +12970,52 @@
   돌솥:명:7
   돌실이:명:5
   돌실이꾼:명:1
  -돌실이하다:동:1
  -돌아가다:동:405
  -돌아내리다:동:1
  -돌아눕다:동:8
  -돌아다니다:동:60
  -돌아다보다:동:27
  -돌아댕기다:동:1
  -돌아들다:동:2
  -돌아보다:동:100
  -돌아서다:동:74
  -돌아앉다:동:7
  -돌아오다:동:517
  +돌실이하:동:1
  +돌아가:동:405
  +돌아내리:동:1
  +돌아눕:동:8
  +돌아다니:동:60
  +돌아다보:동:27
  +돌아댕기:동:1
  +돌아들:동:2
  +돌아보:동:100
  +돌아서:동:74
  +돌아앉:동:7
  +돌아오:동:517
   돌양지꽃:명:1
   돌연:부:10
   돌연변이:명:6
   돌연사:명:8
  -돌연사하다:동:1
  -돌연하다:형:3
  +돌연사하:동:1
  +돌연하:형:3
   돌연히:부:1
   돌이:의:6
  -돌이켜지다:동:2
  -돌이키다:동:53
  +돌이켜지:동:2
  +돌이키:동:53
   돌입:명:4
  -돌입하다:동:18
  +돌입하:동:18
   돌자갈:명:1
   돌잔치:명:2
   돌절구:명:1
   돌조각:명:1
   돌주먹:명:1
  -돌진하다:동:9
  +돌진하:동:9
   돌창:명:1
   돌출:명:6
  -돌출되다:동:6
  +돌출되:동:6
   돌출물:명:1
  -돌출하다:동:4
  +돌출하:동:4
   돌층계:명:4
   돌파:명:11
   돌파구:명:9
   돌파력:명:3
  -돌파하다:동:5
  +돌파하:동:5
   돌팍:명:1
   돌팔매:명:1
   돌팔매질:명:1
   돌팔이:명:1
   돌풍:명:13
  -돕다:동:206
  +돕:동:206
   돗바늘:명:1
   돗자리:명:4
   동:관:117
  @@ -13025,24 +13025,24 @@
   동:명:4
   동:의:46
   동감:명:8
  -동감하다:동:3
  +동감하:동:3
   동갑:명:5
   동갑내기:명:4
   동강:명:2
   동강:부:1
   동거:명:7
   동거인:명:5
  -동거하다:동:3
  +동거하:동:3
   동격화:명:1
   동결:명:18
  -동결되다:동:1
  -동결시키다:동:1
  -동결하다:동:13
  +동결되:동:1
  +동결시키:동:1
  +동결하:동:13
   동경:명:3
   동경:명:5
   동경:명:9
   동경심:명:3
  -동경하다:동:4
  +동경하:동:4
   동계:명:1
   동계:명:7
   동고서저:명:2
  @@ -13059,22 +13059,22 @@
   동궁제:명:1
   동귀:명:1
   동그라미:명:18
  -동그랗다:형:17
  -동그래지다:동:4
  +동그랗:형:17
  +동그래지:동:4
   동그레깃:명:1
  -동그마하다:형:1
  -동그맣다:형:2
  -동그스름하다:형:1
  -동글납작하다:형:12
  -동글다:형:3
  +동그마하:형:1
  +동그맣:형:2
  +동그스름하:형:1
  +동글납작하:형:12
  +동글:형:3
   동글동글:부:1
  -동글동글하다:동:1
  +동글동글하:동:1
   동기:명:26
   동기:명:97
   동기간:명:2
   동기생:명:8
   동기적:관:3
  -동나다:동:1
  +동나:동:1
   동남부:명:7
   동남쪽:명:3
   동내의:명:1
  @@ -13086,21 +13086,21 @@
   동년배:명:4
   동녘:명:1
   동단:명:2
  -동댕이치다:동:1
  +동댕이치:동:1
   동동:부:5
   동동:부:8
  -동동거리다:동:1
  +동동거리:동:1
   동동주:명:1
   동등:명:1
  -동등하다:형:29
  -동등해지다:동:1
  -동떨어지다:형:21
  +동등하:형:29
  +동등해지:동:1
  +동떨어지:형:21
   동란:명:7
   동량:명:2
   동력:명:31
   동력원:명:2
   동렬:명:1
  -동렬하다:동:1
  +동렬하:동:1
   동료:명:126
   동료애:명:2
   동루:명:1
  @@ -13112,10 +13112,10 @@
   동맹:명:4
   동맹국:명:3
   동맹군:명:1
  -동맹하다:동:1
  +동맹하:동:1
   동메달:명:10
   동면:명:2
  -동면하다:동:1
  +동면하:동:1
   동명:명:1
   동명:명:3
   동명이인:명:1
  @@ -13123,7 +13123,7 @@
   동무:명:40
   동문:명:1
   동문:명:16
  -동문수학하다:동:1
  +동문수학하:동:1
   동문회:명:11
   동문회장:명:2
   동물:명:179
  @@ -13137,10 +13137,10 @@
   동박새:명:1
   동반:명:1
   동반:명:18
  -동반되다:동:4
  +동반되:동:4
   동반부:명:2
   동반자:명:24
  -동반하다:동:32
  +동반하:동:32
   동발:명:1
   동방:명:21
   동방:명:3
  @@ -13159,11 +13159,11 @@
   동북부:명:8
   동북쪽:명:2
   동북향:명:1
  -동분서주하다:동:3
  +동분서주하:동:3
   동사:명:1
   동사:명:1
   동사무소:명:11
  -동사시키다:동:1
  +동사시키:동:1
   동사자:명:1
   동산:명:19
   동산:명:3
  @@ -13178,7 +13178,7 @@
   동서반:명:1
   동서부권:명:1
   동서양:명:11
  -동석하다:동:2
  +동석하:동:2
   동선:명:1
   동성:명:1
   동성:명:2
  @@ -13190,7 +13190,7 @@
   동수:명:2
   동승:명:2
   동승:명:2
  -동승하다:동:4
  +동승하:동:4
   동시:명:1
   동시:명:400
   동시대:명:9
  @@ -13224,44 +13224,44 @@
   동어:명:4
   동업:명:3
   동업자:명:1
  -동여매다:동:5
  +동여매:동:5
   동영상:명:5
   동요:명:14
   동요:명:8
  -동요되다:동:1
  -동요시키다:동:3
  -동요하다:동:3
  +동요되:동:1
  +동요시키:동:3
  +동요하:동:3
   동우회:명:4
   동우회장:명:1
   동원:명:32
  -동원되다:동:29
  +동원되:동:29
   동원력:명:1
   동원령:명:1
  -동원하다:동:68
  +동원하:동:68
   동위:명:4
   동의:명:1
   동의:명:2
   동의:명:53
   동의권:명:2
  -동의받다:동:1
  +동의받:동:1
   동의서:명:1
   동의안:명:2
   동의어:명:4
   동의제:명:4
  -동의하다:동:46
  +동의하:동:46
   동의학:명:2
  -동이다:동:2
  +동이:동:2
   동인:명:20
   동인:명:6
   동인회:명:2
   동일:명:14
   동일계:명:1
   동일성:명:5
  -동일시되다:동:1
  -동일시하다:동:8
  +동일시되:동:1
  +동일시하:동:8
   동일인:명:1
   동일체:명:1
  -동일하다:형:81
  +동일하:형:81
   동일화:명:1
   동자:명:1
   동자:명:1
  @@ -13269,14 +13269,14 @@
   동자승:명:1
   동자주:명:1
   동작:명:122
  -동작하다:동:2
  +동작하:동:2
   동장:명:4
   동적:관:9
   동적:명:1
   동전:명:42
   동점:명:12
   동접:명:3
  -동접하다:동:1
  +동접하:동:1
   동정:명:10
   동정:명:3
   동정:명:4
  @@ -13286,11 +13286,11 @@
   동정심:명:3
   동정적:명:1
   동정표:명:1
  -동정하다:동:7
  -동정해하다:동:1
  +동정하:동:7
  +동정해하:동:1
   동조:명:3
   동조자:명:1
  -동조하다:동:7
  +동조하:동:7
   동족:명:7
   동족상잔:명:1
   동종:명:1
  @@ -13302,20 +13302,20 @@
   동지사:명:2
   동지애:명:1
   동지적:관:1
  -동진하다:동:1
  +동진하:동:1
   동질:명:1
   동질감:명:3
   동질성:명:9
   동질적:관:1
   동질적:명:7
   동질화:명:1
  -동질화되다:동:2
  +동질화되:동:2
   동짓날:명:2
   동짓달:명:4
   동쪽:명:83
   동참:명:4
  -동참시키다:동:1
  -동참하다:동:20
  +동참시키:동:1
  +동참하:동:20
   동창:명:2
   동창:명:34
   동창생:명:6
  @@ -13326,12 +13326,12 @@
   동초:명:1
   동치미:명:1
   동침:명:2
  -동침하다:동:4
  +동침하:동:4
   동태:명:1
   동태:명:4
   동토:명:1
   동토대:명:1
  -동트다:동:5
  +동트:동:5
   동티:명:1
   동판:명:4
   동판:명:7
  @@ -13339,13 +13339,13 @@
   동포:명:66
   동포애:명:4
   동풍:명:1
  -동하다:동:9
  +동하:동:9
   동학:명:1
   동행:명:75
  -동행되다:동:4
  -동행시키다:동:1
  +동행되:동:4
  +동행시키:동:1
   동행인:명:1
  -동행하다:동:28
  +동행하:동:28
   동향:명:2
   동향:명:36
   동향:명:5
  @@ -13354,17 +13354,17 @@
   동호회:명:6
   동화:명:1
   동화:명:74
  -동화되다:동:12
  -동화시키다:동:1
  +동화되:동:12
  +동화시키:동:1
   동화적:관:2
   동화집:명:2
   동화책:명:20
  -동화하다:동:1
  +동화하:동:1
   돛:명:1
   돛단배:명:4
   돛대:명:1
   돛배:명:2
  -돼먹다:동:1
  +돼먹:동:1
   돼지:명:72
   돼지고기:명:43
   돼지기름:명:1
  @@ -13374,61 +13374,61 @@
   돼지우리:명:4
   돼지풀:명:2
   되:의:14
  -되가꾸다:동:1
  -되가지다:동:1
  -되감기다:동:1
  -되갚다:동:1
  +되가꾸:동:1
  +되가지:동:1
  +되감기:동:1
  +되갚:동:1
   되거래:명:1
   되게:부:69
  -되넘기다:동:1
  +되넘기:동:1
   되놈:명:2
  -되뇌다:동:13
  -되뇌이다:동:4
  +되뇌:동:13
  +되뇌이:동:4
   되는대로:부:4
  -되다:동:1
  -되다:동:11,506
  -되다:형:4
  +되:동:1
  +되:동:11506
  +되:형:4
   되도록:부:27
  -되돌다:동:3
  -되돌려받다:동:1
  -되돌리다:동:40
  -되돌아가다:동:32
  -되돌아보다:동:19
  -되돌아오다:동:36
  -되들어가다:동:1
  +되돌:동:3
  +되돌려받:동:1
  +되돌리:동:40
  +되돌아가:동:32
  +되돌아보:동:19
  +되돌아오:동:36
  +되들어가:동:1
   되들이:명:2
   되레:부:10
  -되맞아들이다:동:1
  -되묻다:동:22
  -되바라지다:동:3
  -되받다:동:6
  -되받아치다:동:2
  -되비추다:동:1
  -되비치다:동:2
  -되살다:동:2
  -되살리다:동:29
  -되살아나다:동:25
  +되맞아들이:동:1
  +되묻:동:22
  +되바라지:동:3
  +되받:동:6
  +되받아치:동:2
  +되비추:동:1
  +되비치:동:2
  +되살:동:2
  +되살리:동:29
  +되살아나:동:25
   되새:명:5
  -되새겨지다:동:1
  -되새기다:동:3
  -되새기다:동:35
  -되새김질하다:동:1
  -되세우다:동:1
  -되쏘다:동:3
  -되씹다:동:6
  -되어지다:동:1
  -되울리다:동:2
  -되작이다:동:1
  -되잖다:형:1
  -되직하다:형:2
  -되짚다:동:8
  -되찾다:동:63
  +되새겨지:동:1
  +되새기:동:3
  +되새기:동:35
  +되새김질하:동:1
  +되세우:동:1
  +되쏘:동:3
  +되씹:동:6
  +되어지:동:1
  +되울리:동:2
  +되작이:동:1
  +되잖:형:1
  +되직하:형:2
  +되짚:동:8
  +되찾:동:63
   되치기:명:2
  -되치다:동:1
  -되팔다:동:7
  +되치:동:1
  +되팔:동:7
   되풀이:명:10
  -되풀이되다:동:30
  -되풀이하다:동:57
  +되풀이되:동:30
  +되풀이하:동:57
   된밥:명:1
   된비알:명:1
   된서리:명:2
  @@ -13437,11 +13437,11 @@
   된장국:명:11
   된장찌개:명:14
   된통:부:3
  -될성부르다:형:2
  +될성부르:형:2
   됨됨이:명:1
   됫박:명:1
   됫병:명:2
  -두:관:2,082
  +두:관:2082
   두:의:1
   두각:명:5
   두개골:명:3
  @@ -13450,68 +13450,68 @@
   두고두고:부:17
   두관:명:1
   두규음:명:1
  -두근거리다:동:13
  +두근거리:동:13
   두근두근:부:2
  -두근두근하다:동:1
  +두근두근하:동:1
   두꺼비:명:5
  -두꺼워지다:동:1
  +두꺼워지:동:1
   두껍:명:4
  -두껍다:형:74
  +두껍:형:74
   두께:명:36
   두냉증:명:1
   두뇌:명:59
   두뇌적:관:1
   두뇌적:명:1
  -두다:동:717
  +두:동:717
   두다:보:5
   두다:보:593
   두더지:명:8
  -두두룩하다:형:2
  -두두룩해지다:동:1
  -두둑하다:형:5
  -두둔하다:동:6
  +두두룩하:형:2
  +두두룩해지:동:1
  +두둑하:형:5
  +두둔하:동:6
   두둥실:부:3
   두드러기:명:8
  -두드러지다:동:16
  -두드러지다:형:73
  -두드리다:동:72
  -두들겨지다:동:1
  -두들기다:동:53
  -두런거리다:동:2
  +두드러지:동:16
  +두드러지:형:73
  +두드리:동:72
  +두들겨지:동:1
  +두들기:동:53
  +두런거리:동:2
   두런두런:부:1
  -두런두런하다:동:1
  +두런두런하:동:1
   두레:명:2
   두레박:명:6
  -두레박질하다:동:1
  +두레박질하:동:1
   두려움:명:58
  -두려워하다:동:43
  -두렵다:형:68
  +두려워하:동:43
  +두렵:형:68
   두령:명:1
   두루:부:42
   두루두루:부:1
   두루루:부:1
   두루마기:명:16
   두루마리:명:1
  -두루뭉술하다:형:5
  +두루뭉술하:형:5
   두루미:명:1
   두루미천남성:명:2
   두루주머니:명:1
  -두르다:동:105
  +두르:동:105
   두름:명:3
   두름:의:1
   두릅:명:1
   두릅나무:명:1
   두리번:명:1
  -두리번거리다:동:34
  -두리벙해지다:동:1
  +두리번거리:동:34
  +두리벙해지:동:1
   두말:명:3
   두말없이:부:1
  -두말하다:동:22
  +두말하:동:22
   두메:명:9
   두메산골:명:4
   두목:명:13
   두문:명:1
  -두문불출하다:동:1
  +두문불출하:동:1
   두반장:명:2
   두발:명:1
   두벌자식:명:2
  @@ -13531,180 +13531,180 @@
   두앙선:명:1
   두어:관:42
   두어라:감:1
  -두어지다:동:3
  +두어지:동:3
   두억시니:명:1
   두엄:명:3
   두엇:수:4
   두절:명:2
  -두절되다:동:3
  -두터워지다:동:4
  +두절되:동:3
  +두터워지:동:4
   두터이:부:2
  -두텁다:형:7
  +두텁:형:7
   두통:명:27
  -두툼하다:형:18
  +두툼하:형:18
   두품:명:3
   둑:명:39
   둑길:명:4
  -둑다:동:1
  +둑:동:1
   둔감성:명:1
  -둔감하다:형:5
  -둔감해지다:동:1
  +둔감하:형:5
  +둔감해지:동:1
   둔갑:명:3
  -둔갑시키다:동:3
  -둔갑하다:동:11
  -둔강하다:동:1
  +둔갑시키:동:3
  +둔갑하:동:11
  +둔강하:동:1
   둔기:명:2
   둔덕:명:4
   둔부:명:1
   둔사:명:1
   둔전:명:1
  -둔중하다:형:1
  -둔탁하다:형:3
  +둔중하:형:1
  +둔탁하:형:3
   둔턱:명:1
  -둔하다:형:8
  -둔해지다:동:4
  +둔하:형:8
  +둔해지:동:4
   둔화:명:4
  -둔화되다:동:11
  -둔화시키다:동:2
  +둔화되:동:11
  +둔화시키:동:2
   둘:수:369
   둘:의:1
   둘둘:부:3
  -둘러대다:동:7
  -둘러메다:동:2
  -둘러보다:동:82
  -둘러서다:동:12
  -둘러싸다:동:119
  -둘러싸이다:동:37
  -둘러쓰다:동:5
  -둘러앉다:동:22
  -둘러지다:동:3
  -둘러쳐지다:동:1
  -둘러치다:동:3
  +둘러대:동:7
  +둘러메:동:2
  +둘러보:동:82
  +둘러서:동:12
  +둘러싸:동:119
  +둘러싸이:동:37
  +둘러쓰:동:5
  +둘러앉:동:22
  +둘러지:동:3
  +둘러쳐지:동:1
  +둘러치:동:3
   둘레:명:27
  -둘려지다:동:1
  -둘리다:동:1
  -둘리우다:동:1
  +둘려지:동:1
  +둘리:동:1
  +둘리우:동:1
   둘암소:명:1
   둘이:명:12
   둘째:관:79
   둘째:명:2
   둘째:수:136
  -둘째가다:동:2
  +둘째가:동:2
   둥:의:27
   둥굴레:명:2
  -둥그러지다:동:1
  -둥그렇다:형:12
  -둥그레지다:동:1
  -둥그스름하다:형:2
  +둥그러지:동:1
  +둥그렇:형:12
  +둥그레지:동:1
  +둥그스름하:형:2
   둥근달:명:1
  -둥글납작하다:형:2
  -둥글다:형:101
  +둥글납작하:형:2
  +둥글:형:101
   둥둥:부:11
   둥실:부:2
   둥우리:명:1
   둥지:명:86
   둥치:명:8
  -뒈지다:동:9
  -뒤:명:1,608
  +뒈지:동:9
  +뒤:명:1608
   뒤꼍:명:4
   뒤꼭지:명:3
   뒤꽁무니:명:1
   뒤꿈치:명:8
   뒤끝:명:8
   뒤넘이:명:1
  -뒤늦다:형:62
  -뒤다:동:1
  -뒤덮다:동:23
  -뒤덮이다:동:18
  -뒤돌다:동:2
  -뒤돌아보다:동:13
  -뒤돌아서다:동:6
  -뒤따라가다:동:5
  -뒤따라오다:동:6
  -뒤따르다:동:69
  -뒤떨어지다:동:22
  -뒤뚱거리다:동:2
  +뒤늦:형:62
  +뒤:동:1
  +뒤덮:동:23
  +뒤덮이:동:18
  +뒤돌:동:2
  +뒤돌아보:동:13
  +뒤돌아서:동:6
  +뒤따라가:동:5
  +뒤따라오:동:6
  +뒤따르:동:69
  +뒤떨어지:동:22
  +뒤뚱거리:동:2
   뒤뚱뒤뚱:부:4
   뒤뜰:명:7
   뒤란:명:6
   뒤로돌아:감:1
  -뒤로하다:동:4
  +뒤로하:동:4
   뒤미처:부:1
  -뒤바꾸다:동:4
  -뒤바뀌다:동:10
  -뒤바뀌어지다:동:1
  -뒤밟다:동:1
  +뒤바꾸:동:4
  +뒤바뀌:동:10
  +뒤바뀌어지:동:1
  +뒤밟:동:1
   뒤범벅:명:6
  -뒤범벅되다:동:1
  -뒤범벅하다:동:1
  -뒤서다:동:8
  -뒤섞다:동:4
  -뒤섞이다:동:18
  +뒤범벅되:동:1
  +뒤범벅하:동:1
  +뒤서:동:8
  +뒤섞:동:4
  +뒤섞이:동:18
   뒤숭숭:부:1
  -뒤숭숭하다:형:5
  -뒤숭숭해지다:동:1
  -뒤스르다:동:1
  +뒤숭숭하:형:5
  +뒤숭숭해지:동:1
  +뒤스르:동:1
   뒤안:명:1
   뒤안길:명:6
  -뒤얽히다:동:2
  -뒤엉키다:동:11
  -뒤엎다:동:12
  -뒤엎어지다:동:2
  +뒤얽히:동:2
  +뒤엉키:동:11
  +뒤엎:동:12
  +뒤엎어지:동:2
   뒤웅박:명:3
  -뒤잇다:동:14
  -뒤적거리다:동:6
  +뒤잇:동:14
  +뒤적거리:동:6
   뒤적뒤적:부:1
  -뒤적이다:동:19
  -뒤져내다:동:2
  +뒤적이:동:19
  +뒤져내:동:2
   뒤주:명:1
   뒤죽박죽:명:10
  -뒤지다:동:28
  -뒤지다:동:62
  +뒤지:동:28
  +뒤지:동:62
   뒤집기:명:1
  -뒤집다:동:70
  -뒤집어쓰다:동:26
  -뒤집어씌우다:동:4
  -뒤집어지다:동:9
  -뒤집혀지다:동:2
  -뒤집히다:동:4
  +뒤집:동:70
  +뒤집어쓰:동:26
  +뒤집어씌우:동:4
  +뒤집어지:동:9
  +뒤집혀지:동:2
  +뒤집히:동:4
   뒤쪽:명:36
  -뒤쫓다:동:19
  +뒤쫓:동:19
   뒤채:명:3
  -뒤채다:동:1
  +뒤채:동:1
   뒤처리:명:7
  -뒤처지다:동:13
  +뒤처지:동:13
   뒤척:부:3
  -뒤척거리다:동:4
  -뒤척이다:동:13
  -뒤치다:동:3
  +뒤척거리:동:4
  +뒤척이:동:13
  +뒤치:동:3
   뒤치다꺼리:명:4
  -뒤치다꺼리하다:동:1
  +뒤치다꺼리하:동:1
   뒤통수:명:15
   뒤트임:명:1
  -뒤틀다:동:3
  -뒤틀리다:동:15
  +뒤틀:동:3
  +뒤틀리:동:15
   뒤틀림:명:1
   뒤판:명:1
   뒤편:명:24
   뒤표지:명:2
   뒤풀이:명:2
  -뒤흔들다:동:22
  -뒤흔들리다:동:1
  +뒤흔들:동:22
  +뒤흔들리:동:1
   뒷간:명:10
   뒷감당:명:2
   뒷거래:명:4
   뒷걸음:명:1
   뒷걸음질:명:6
  -뒷걸음질치다:동:1
  -뒷걸음질하다:동:1
  -뒷걸음치다:동:1
  +뒷걸음질치:동:1
  +뒷걸음질하:동:1
  +뒷걸음치:동:1
   뒷것음질:명:1
   뒷골:명:1
   뒷골목:명:15
   뒷구멍:명:3
   뒷그루:명:1
   뒷길:명:1
  -뒷나다:동:1
  +뒷나:동:1
   뒷날:명:12
   뒷다리:명:3
   뒷담:명:3
  @@ -13726,17 +13726,17 @@
   뒷무릎치기:명:1
   뒷문:명:22
   뒷바라지:명:11
  -뒷바라지하다:동:2
  +뒷바라지하:동:2
   뒷바람:명:1
   뒷바퀴:명:1
   뒷받침:명:12
  -뒷받침되다:동:9
  -뒷받침하다:동:44
  +뒷받침되:동:9
  +뒷받침하:동:44
   뒷발:명:24
   뒷방:명:5
   뒷밭:명:1
   뒷부분:명:5
  -뒷북치다:동:2
  +뒷북치:동:2
   뒷산:명:29
   뒷설거지:명:1
   뒷소문:명:1
  @@ -13750,33 +13750,33 @@
   뒷장:명:4
   뒷전:명:9
   뒷정리:명:4
  -뒷정리하다:동:1
  +뒷정리하:동:1
   뒷조사:명:3
   뒷주머니:명:3
   뒷줄:명:3
   뒷짐:명:6
   뒷집:명:2
  -뒹굴다:동:21
  +뒹굴:동:21
   듀스:명:1
   듀엣:명:1
   듀오:명:1
   듀오:명:1
   듀플렉스:명:3
  -드나들다:동:46
  +드나들:동:46
   드난살이:명:1
  -드날리다:동:1
  -드넓다:형:13
  -드높다:형:13
  -드높아지다:동:2
  +드날리:동:1
  +드넓:형:13
  +드높:형:13
  +드높아지:동:2
   드높이:부:2
  -드높이다:동:5
  +드높이:동:5
   드디어:부:105
   드라마:명:186
   드라마광:명:1
   드라마적:관:1
   드라마투르기:명:1
  -드라마틱하다:형:1
  -드라마화되다:동:1
  +드라마틱하:형:1
  +드라마화되:동:1
   드라이:명:4
   드라이기:명:1
   드라이버:명:9
  @@ -13787,15 +13787,15 @@
   드라이아이스:명:2
   드라이어:명:2
   드라이클리닝:명:4
  -드라이하다:동:2
  +드라이하:동:2
   드래그:명:1
   드래프트:명:4
  -드러나다:동:355
  -드러내다:동:216
  -드러눕다:동:23
  +드러나:동:355
  +드러내:동:216
  +드러눕:동:23
   드럼:명:9
   드럼통:명:1
  -드럽다:형:1
  +드럽:형:1
   드레서:명:1
   드레스:명:4
   드레싱:명:3
  @@ -13807,40 +13807,40 @@
   드르륵:부:1
   드르릉:부:2
   드륵드륵:부:1
  -드리다:동:1
  -드리다:동:156
  -드리다:동:3
  +드리:동:1
  +드리:동:156
  +드리:동:3
   드리다:보:266
   드리블:명:9
  -드리블하다:동:1
  -드리우다:동:14
  -드리워지다:동:17
  +드리블하:동:1
  +드리우:동:14
  +드리워지:동:17
   드리프터:명:1
   드릴:명:6
   드림:명:2
   드링크:명:13
   드문드문:부:5
  -드물다:형:112
  -드세다:형:2
  -드세지다:동:2
  +드물:형:112
  +드세:형:2
  +드세지:동:2
   드잡이:명:1
   득:명:8
   득남:명:1
   득달같이:부:1
   득도:명:1
  -득도하다:동:1
  +득도하:동:1
   득득:부:1
   득세:명:2
  -득세하다:동:3
  +득세하:동:3
   득수:명:12
  -득시글거리다:동:2
  +득시글거리:동:2
   득실:명:7
  -득실거리다:동:6
  -득실대다:동:2
  +득실거리:동:6
  +득실대:동:2
   득의:명:1
  -득의만만하다:형:4
  +득의만만하:형:4
   득의만면:명:1
  -득의만면하다:형:1
  +득의만면하:형:1
   득점:명:15
   득점력:명:3
   득점상:명:1
  @@ -13852,140 +13852,140 @@
   득표율:명:9
   득표자:명:1
   득표전:명:1
  -든든하다:형:30
  -든든해지다:동:1
  +든든하:형:30
  +든든해지:동:1
   듣기:명:1
  -듣다:동:1,593
  -듣다:동:5
  -듣잡다:동:1
  +듣:동:1593
  +듣:동:5
  +듣잡:동:1
   들:명:75
   들:의:14
   들개:명:2
   들것:명:4
   들고양이:명:1
  -들고일어나다:동:2
  +들고일어나:동:2
   들국화:명:2
   들기:명:1
   들기법:명:2
   들기술:명:2
   들길:명:6
  -들까불다:동:2
  +들까불:동:2
   들깨:명:4
   들깨풀:명:1
   들꽃:명:1
  -들끓다:동:11
  +들끓:동:11
   들나물:명:2
   들녘:명:10
   들놀이:명:1
  -들다:동:1,272
  -들다:동:1,535
  +들:동:1272
  +들:동:1535
   들다:보:65
   들독:명:5
   들독거리:명:1
   들들:부:2
  -들뛰다:동:2
  -들뜨다:동:27
  -들락거리다:동:18
  -들락날락거리다:동:2
  -들락날락하다:동:2
  -들락이다:동:1
  -들랑거리다:동:1
  +들뛰:동:2
  +들뜨:동:27
  +들락거리:동:18
  +들락날락거리:동:2
  +들락날락하:동:2
  +들락이:동:1
  +들랑거리:동:1
   들러리:명:3
  -들러붙다:동:1
  -들려오다:동:130
  -들려주다:동:44
  -들려지다:동:3
  -들르다:동:112
  -들리다:동:17
  -들리다:동:2
  -들리다:동:258
  -들리다:동:3
  -들리다:동:5
  +들러붙:동:1
  +들려오:동:130
  +들려주:동:44
  +들려지:동:3
  +들르:동:112
  +들리:동:17
  +들리:동:2
  +들리:동:258
  +들리:동:3
  +들리:동:5
   들머리:명:1
   들먹:명:1
  -들먹거리다:동:5
  -들먹들먹하다:동:1
  -들먹여지다:동:1
  -들먹이다:동:20
  +들먹거리:동:5
  +들먹들먹하:동:1
  +들먹여지:동:1
  +들먹이:동:20
   들보:명:1
  -들볶다:동:5
  +들볶:동:5
   들소:명:23
   들썩:부:1
  -들썩거리다:동:4
  +들썩거리:동:4
   들썩들썩:부:1
  -들썩이다:동:5
  -들썩하다:동:2
  -들썩하다:형:1
  -들썽거려지다:동:1
  -들썽거리다:동:1
  -들쑤시다:동:2
  -들쑥날쑥하다:형:1
  -들앉다:동:1
  -들어가다:동:1,142
  -들어내다:동:8
  -들어맞다:동:6
  -들어먹다:동:1
  -들어서다:동:338
  -들어앉다:동:17
  -들어앉히다:동:1
  -들어오다:동:739
  -들어주다:동:15
  -들어지다:동:2
  -들어차다:동:14
  -들여가다:동:1
  -들여놓다:동:31
  -들여다보다:동:129
  -들여다보이다:동:6
  -들여다뵈다:동:2
  -들여보내다:동:11
  -들여오다:동:19
  -들여지다:동:1
  -들오다:동:4
  +들썩이:동:5
  +들썩하:동:2
  +들썩하:형:1
  +들썽거려지:동:1
  +들썽거리:동:1
  +들쑤시:동:2
  +들쑥날쑥하:형:1
  +들앉:동:1
  +들어가:동:1142
  +들어내:동:8
  +들어맞:동:6
  +들어먹:동:1
  +들어서:동:338
  +들어앉:동:17
  +들어앉히:동:1
  +들어오:동:739
  +들어주:동:15
  +들어지:동:2
  +들어차:동:14
  +들여가:동:1
  +들여놓:동:31
  +들여다보:동:129
  +들여다보이:동:6
  +들여다뵈:동:2
  +들여보내:동:11
  +들여오:동:19
  +들여지:동:1
  +들오:동:4
   들오리:명:1
  -들이다:동:150
  -들이닥치다:동:16
  +들이:동:150
  +들이닥치:동:16
   들이당짝:부:1
  -들이대다:동:1
  -들이대다:동:26
  -들이마시다:동:2
  -들이마시다:동:25
  -들이밀다:동:19
  -들이밀어지다:동:1
  -들이박다:동:1
  -들이받다:동:3
  -들이붓다:동:2
  -들이쉬다:동:9
  -들이켜다:동:32
  +들이대:동:1
  +들이대:동:26
  +들이마시:동:2
  +들이마시:동:25
  +들이밀:동:19
  +들이밀어지:동:1
  +들이박:동:1
  +들이받:동:3
  +들이붓:동:2
  +들이쉬:동:9
  +들이켜:동:32
   들일:명:4
   들입다:부:5
   들쥐:명:18
   들짐승:명:2
   들쭉날쭉:부:2
  -들쭉날쭉하다:형:2
  +들쭉날쭉하:형:2
   들창문:명:3
   들창코:명:2
  -들척지근하다:형:1
  -들쳐업다:동:2
  -들추다:동:16
  -들추어내다:동:4
  -들추어지다:동:2
  -들춰내다:동:1
  -들치다:동:1
  -들키다:동:19
  +들척지근하:형:1
  +들쳐업:동:2
  +들추:동:16
  +들추어내:동:4
  +들추어지:동:2
  +들춰내:동:1
  +들치:동:1
  +들키:동:19
   들통:명:4
   들판:명:39
   들풀:명:1
   듬뿍:부:22
   듬성듬성:부:8
  -듬성듬성하다:형:2
  -듬직하다:형:2
  +듬성듬성하:형:2
  +듬직하:형:2
   듯:의:579
   듯싶다:보:54
   듯이:의:224
  -듯하다:보:555
  +듯하:보:555
   등:명:12
   등:명:219
  -등:의:5,967
  +등:의:5967
   등:의:59
   등가:명:3
   등가구:명:2
  @@ -13996,44 +13996,44 @@
   등골나무:명:1
   등골나물:명:1
   등공예:명:1
  -등과시키다:동:1
  +등과시키:동:1
   등교:명:8
  -등교하다:동:9
  +등교하:동:9
   등굣길:명:4
   등극:명:1
  -등극하다:동:1
  +등극하:동:1
   등급:명:10
   등급제:명:4
   등기:명:11
   등기부:명:2
   등기소:명:1
  -등기하다:동:2
  +등기하:동:2
   등꽃:명:2
   등나무:명:5
   등단:명:5
  -등단하다:동:6
  +등단하:동:6
   등대:명:14
   등댓불:명:1
   등덜미:명:1
   등돌:명:1
   등등:의:60
  -등등하다:형:2
  -등등해지다:동:1
  +등등하:형:2
  +등등해지:동:1
   등딱지:명:2
   등락:명:2
   등록:명:62
   등록금:명:23
  -등록되다:동:14
  +등록되:동:14
   등록료:명:5
   등록부:명:1
   등록비:명:1
  -등록시키다:동:1
  +등록시키:동:1
   등록인:명:2
   등록자:명:1
   등록제:명:2
   등록증:명:45
   등록지:명:1
  -등록하다:동:16
  +등록하:동:16
   등바대:명:1
   등반:명:5
   등반가:명:1
  @@ -14041,7 +14041,7 @@
   등벽:명:8
   등본:명:7
   등분:명:3
  -등분하다:동:3
  +등분하:동:3
   등불:명:23
   등뼈:명:9
   등사판:명:2
  @@ -14053,7 +14053,7 @@
   등산복:명:1
   등산인:명:1
   등산지:명:1
  -등산하다:동:3
  +등산하:동:3
   등산화:명:2
   등성:의:1
   등성이:명:6
  @@ -14065,54 +14065,54 @@
   등심:명:6
   등쌀:명:3
   등용:명:1
  -등용되다:동:2
  +등용되:동:2
   등용문:명:2
  -등용하다:동:9
  +등용하:동:9
   등유:명:1
   등의자:명:3
   등잔:명:11
   등잔불:명:7
   등장:명:68
  -등장되다:동:1
  -등장시키다:동:8
  +등장되:동:1
  +등장시키:동:8
   등장인물:명:16
  -등장하다:동:225
  -등재되다:동:1
  +등장하:동:225
  +등재되:동:1
   등정:명:1
   등정:명:4
   등정로:명:1
  -등정하다:동:2
  +등정하:동:2
   등줄기:명:9
   등줄쥐:명:2
   등지:의:72
  -등지다:동:22
  +등지:동:22
   등짐:명:1
   등짐장수:명:1
   등짝:명:9
   등차:명:1
  -등치다:동:1
  +등치:동:1
   등퇴장:명:2
   등판:명:1
   등판:명:1
  -등판하다:동:2
  +등판하:동:2
   등학로:명:1
  -등한시되다:동:2
  -등한시하다:동:6
  +등한시되:동:2
  +등한시하:동:6
   등허리:명:4
   디:명:7
   디:의:1
   디너:명:3
   디데이:명:2
  -디디다:동:23
  +디디:동:23
   디디티:명:12
   디딜방아:명:2
   디딤돌:명:2
   디딤새:명:1
   디램:명:1
   디렉터리:명:7
  -디리다:동:1
  -디밀다:동:9
  -디밀어지다:동:3
  +디리:동:1
  +디밀:동:9
  +디밀어지:동:3
   디비:명:27
   디스켓:명:12
   디스코:명:9
  @@ -14129,11 +14129,11 @@
   디자이너:명:15
   디자인:명:68
   디자인과:명:3
  -디자인되다:동:1
  +디자인되:동:1
   디자인상:명:1
   디자인실:명:1
   디자인업체:명:1
  -디자인하다:동:10
  +디자인하:동:10
   디장조:명:2
   디저트:명:4
   디제이:명:9
  @@ -14142,7 +14142,7 @@
   디테일:명:1
   디피아이:의:1
   디피점:명:1
  -딛다:동:26
  +딛:동:26
   딜러:명:1
   딜레마:명:7
   딥:명:1
  @@ -14150,61 +14150,61 @@
   딩댕동:부:1
   딩동:부:4
   딩동딩동:부:1
  -따갑다:형:36
  +따갑:형:36
   따개비:명:1
   따귀:명:5
  -따끈거리다:동:2
  +따끈거리:동:2
   따끈따끈:부:2
  -따끈따끈하다:형:2
  -따끈하다:형:4
  +따끈따끈하:형:2
  +따끈하:형:4
   따끈히:부:1
   따끔:부:1
  -따끔거리다:동:1
  +따끔거리:동:1
   따끔따끔:부:2
  -따끔따끔하다:형:1
  -따끔하다:형:6
  +따끔따끔하:형:1
  +따끔하:형:6
   따님:명:3
  -따다:동:143
  -따돌리다:동:20
  +따:동:143
  +따돌리:동:20
   따듯이:부:1
  -따듯하다:형:2
  +따듯하:형:2
   따따당:감:1
   따따따따:부:2
   따따부따:부:1
  -따땃해지다:동:1
  +따땃해지:동:1
   따뜻이:부:1
  -따뜻하다:형:175
  -따뜻해지다:동:8
  -따라가다:동:87
  -따라나서다:동:13
  -따라다니다:동:32
  -따라붙다:동:10
  +따뜻하:형:175
  +따뜻해지:동:8
  +따라가:동:87
  +따라나서:동:13
  +따라다니:동:32
  +따라붙:동:10
   따라서:접:712
  -따라오다:동:50
  -따라잡다:동:16
  +따라오:동:50
  +따라잡:동:16
   따로:부:175
   따로국밥:명:2
   따로따로:부:15
   따로이:부:3
   따루미얀나무:명:1
  -따르다:동:2,388
  -따르다:동:65
  +따르:동:2388
  +따르:동:65
   따르르:부:1
   따르릉:부:9
   따름:의:33
  -따먹다:동:9
  +따먹:동:9
   따발총:명:2
  -따분하다:형:5
  -따분해지다:동:1
  +따분하:형:5
  +따분해지:동:1
   따비:명:2
  -따사롭다:형:7
  -따스하다:형:31
  -따습다:형:2
  -따시다:형:2
  -따오다:동:11
  +따사롭:형:7
  +따스하:형:31
  +따습:형:2
  +따시:형:2
  +따오:동:11
   따우:감:1
   따위:의:171
  -따지다:동:183
  +따지:동:183
   딱:부:119
   딱:부:57
   딱:부:9
  @@ -14212,16 +14212,16 @@
   딱딱:부:3
   딱딱:부:4
   딱딱:부:5
  -딱딱거리다:동:1
  -딱딱거리다:동:1
  -딱딱하다:형:46
  -딱딱해지다:동:2
  +딱딱거리:동:1
  +딱딱거리:동:1
  +딱딱하:형:46
  +딱딱해지:동:2
   딱새:명:1
   딱쥐:명:1
   딱지:명:19
   딱지:명:3
   딱지치기:명:1
  -딱하다:형:17
  +딱하:형:17
   딱히:부:11
   딴:관:103
   딴:의:8
  @@ -14231,7 +14231,7 @@
   딴사람:명:1
   딴살림:명:1
   딴생각:명:3
  -딴생각하다:동:3
  +딴생각하:동:3
   딴소리:명:2
   딴은:부:2
   딴전:명:3
  @@ -14248,11 +14248,11 @@
   딸년:명:10
   딸딸이:명:1
   딸랑:부:1
  -딸랑거리다:동:2
  +딸랑거리:동:2
   딸랑딸랑:부:2
  -딸랑딸랑거리다:동:1
  -딸리다:동:2
  -딸리다:동:7
  +딸랑딸랑거리:동:1
  +딸리:동:2
  +딸리:동:7
   딸부자:명:1
   딸아이:명:22
   딸애:명:8
  @@ -14272,11 +14272,11 @@
   땅거미:명:9
   땅고르기:명:2
   땅굴:명:18
  -땅기다:동:8
  +땅기:동:8
   땅꾼:명:1
   땅덩어리:명:8
   땅따먹기:명:1
  -땅딸막하다:형:4
  +땅딸막하:형:4
   땅딸보:명:1
   땅뙈기:명:1
   땅마지기:명:1
  @@ -14290,29 +14290,29 @@
   땅임자:명:1
   땅콩:명:28
   땅콩죽:명:1
  -땋다:동:6
  +땋:동:6
   때:명:33
  -때:명:5,813
  +때:명:5813
   때까치:명:4
   때깔:명:3
  -때늦다:형:5
  -때다:동:22
  +때늦:형:5
  +때:동:22
   때때로:부:21
   때때옷:명:2
  -때래잡다:동:1
  -때려눕히다:동:2
  -때려뉘다:동:1
  -때려잡다:동:2
  -때려죽이다:동:3
  -때려치다:동:1
  -때려치우다:동:12
  +때래잡:동:1
  +때려눕히:동:2
  +때려뉘:동:1
  +때려잡:동:2
  +때려죽이:동:3
  +때려치:동:1
  +때려치우:동:12
   때로:부:170
  -때리다:동:134
  +때리:동:134
   때마침:부:16
  -때맞추다:동:6
  -때문:의:3,889
  +때맞추:동:6
  +때문:의:3889
   때밀이:명:3
  -때우다:동:21
  +때우:동:21
   때죽나무:명:6
   땔감:명:7
   땔나무:명:2
  @@ -14324,53 +14324,53 @@
   땟국:명:3
   땡:부:9
   땡땡이:명:1
  -땡땡이치다:동:3
  +땡땡이치:동:3
   땡볕:명:2
   땡비:명:6
   땡전:명:1
  -떠가다:동:3
  -떠나가다:동:30
  -떠나다:동:592
  -떠나보내다:동:7
  -떠나오다:동:18
  -떠내다:동:2
  -떠내려가다:동:17
  -떠넘기다:동:6
  -떠다니다:동:9
  -떠다밀다:동:4
  -떠돌다:동:52
  -떠돌아다니다:동:10
  +떠가:동:3
  +떠나가:동:30
  +떠나:동:592
  +떠나보내:동:7
  +떠나오:동:18
  +떠내:동:2
  +떠내려가:동:17
  +떠넘기:동:6
  +떠다니:동:9
  +떠다밀:동:4
  +떠돌:동:52
  +떠돌아다니:동:10
   떠돌이:명:2
  -떠들다:동:1
  -떠들다:동:76
  +떠들:동:1
  +떠들:동:76
   떠들썩:부:1
  -떠들썩하다:동:1
  -떠들썩하다:형:1
  -떠들썩하다:형:30
  -떠들치다:동:2
  -떠듬거리다:동:1
  +떠들썩하:동:1
  +떠들썩하:형:1
  +떠들썩하:형:30
  +떠들치:동:2
  +떠듬거리:동:1
   떠듬떠듬:부:1
  -떠맡겨지다:동:1
  -떠맡기다:동:6
  -떠맡다:동:22
  -떠먹다:동:8
  -떠먹이다:동:1
  -떠메다:동:1
  -떠밀다:동:2
  -떠밀리다:동:19
  -떠받들다:동:6
  -떠받들어지다:동:2
  -떠받치다:동:12
  +떠맡겨지:동:1
  +떠맡기:동:6
  +떠맡:동:22
  +떠먹:동:8
  +떠먹이:동:1
  +떠메:동:1
  +떠밀:동:2
  +떠밀리:동:19
  +떠받들:동:6
  +떠받들어지:동:2
  +떠받치:동:12
   떠벌떠벌:부:1
  -떠벌리다:동:21
  -떠보다:동:3
  -떠안다:동:3
  -떠오다:동:1
  -떠오르다:동:215
  -떠올라지다:동:1
  -떠올려지다:동:2
  -떠올리다:동:128
  -떠지다:동:1
  +떠벌리:동:21
  +떠보:동:3
  +떠안:동:3
  +떠오:동:1
  +떠오르:동:215
  +떠올라지:동:1
  +떠올려지:동:2
  +떠올리:동:128
  +떠지:동:1
   떡:명:158
   떡:부:3
   떡갈나무:명:8
  @@ -14392,32 +14392,32 @@
   떡하니:부:2
   떨:명:1
   떨거지:명:3
  -떨구다:동:40
  -떨구어지다:동:1
  +떨구:동:40
  +떨구어지:동:1
   떨기나무:명:1
   떨꺽:부:1
  -떨다:동:181
  +떨:동:181
   떨떠름:명:1
  -떨떠름하다:형:2
  -떨떠름해하다:동:1
  +떨떠름하:형:2
  +떨떠름해하:동:1
   떨렁:부:2
  -떨리다:동:1
  -떨리다:동:83
  -떨어내다:동:3
  -떨어뜨리다:동:81
  -떨어지다:동:634
  -떨어트리다:동:4
  +떨리:동:1
  +떨리:동:83
  +떨어내:동:3
  +떨어뜨리:동:81
  +떨어지:동:634
  +떨어트리:동:4
   떨이:명:2
  -떨쳐지다:동:1
  -떨치다:동:17
  -떨치다:동:29
  -떫다:형:1
  +떨쳐지:동:1
  +떨치:동:17
  +떨치:동:29
  +떫:형:1
   떫은맛:명:4
   떳떳이:부:9
  -떳떳하다:형:28
  -떳떳해지다:동:1
  +떳떳하:형:28
  +떳떳해지:동:1
   떵떵:부:1
  -떵떵거리다:동:6
  +떵떵거리:동:6
   떼:명:1
   떼:명:2
   떼:명:3
  @@ -14425,60 +14425,60 @@
   떼:명:75
   떼거지:명:3
   떼끼놈:감:1
  -떼다:동:211
  +떼:동:211
   떼돈:명:2
   떼르르:부:1
  -떼먹다:동:1
  -떼멕이다:동:1
  -떼밀다:동:2
  +떼먹:동:1
  +떼멕이:동:1
  +떼밀:동:2
   떼부자:명:5
  -떼쓰다:동:1
  -떼어먹다:동:1
  -떼어지다:동:1
  -떼이다:동:1
  +떼쓰:동:1
  +떼어먹:동:1
  +떼어지:동:1
  +떼이:동:1
   떼잠:명:1
   떼쟁이:명:1
   떼죽음:명:2
  -떼치다:동:1
  +떼치:동:1
   떽:감:1
   떽떼굴:부:1
   뗀석기:명:1
   뗏목:명:6
   뗑깡:명:1
  -또:접:2,814
  +또:접:2814
   또각:부:3
   또는:접:778
   또다시:부:100
  -또랑또랑하다:형:1
  +또랑또랑하:형:1
   또래:명:41
   또렷이:부:5
  -또렷하다:형:12
  -또렷해지다:동:1
  +또렷하:형:12
  +또렷해지:동:1
   또록또록:부:1
   또르르:부:1
   또르르:부:1
  -또릿또릿하다:형:1
  +또릿또릿하:형:1
   또박또박:부:2
   또박또박:부:5
  -또박또박하다:형:1
  +또박또박하:형:1
   또아리:명:4
   또한:접:788
   똑:부:1
   똑:부:5
  -똑같다:형:166
  -똑같아지다:동:3
  +똑같:형:166
  +똑같아지:동:3
   똑같이:부:81
   똑딱:부:2
   똑딱똑딱:부:2
  -똑딱똑딱하다:동:1
  +똑딱똑딱하:동:1
   똑똑:부:11
  -똑똑하다:형:51
  +똑똑하:형:51
   똑똑히:부:13
   똑바로:부:35
  -똑바르다:형:1
  +똑바르:형:1
   똔또니:명:1
   똘똘:부:7
  -똘똘하다:형:1
  +똘똘하:형:1
   똘마니:명:1
   똥:명:53
   똥간:명:1
  @@ -14489,18 +14489,18 @@
   똥구덩:명:7
   똥구덩이:명:2
   똥구멍:명:2
  -똥그랗다:형:2
  -똥그래지다:동:1
  +똥그랗:형:2
  +똥그래지:동:1
   똥금:명:2
   똥독:명:1
  -똥똥하다:형:1
  +똥똥하:형:1
   똥물:명:2
   똥배:명:4
   똥보:명:2
   똥오줌:명:2
   똥지게:명:1
   똥칠:명:1
  -똥칠하다:동:1
  +똥칠하:동:1
   똥탕:명:1
   똥통:명:2
   똬리:명:1
  @@ -14508,12 +14508,12 @@
   뙈기밭:명:1
   뚜:부:8
   뚜껑:명:44
  -뚜딜기다:동:1
  +뚜딜기:동:1
   뚜렷이:부:18
  -뚜렷하다:형:108
  -뚜렷해지다:동:6
  +뚜렷하:형:108
  +뚜렷해지:동:6
   뚜르르:부:1
  -뚜벅거리다:동:1
  +뚜벅거리:동:1
   뚜벅뚜벅:부:5
   뚜우부:감:1
   뚝:부:10
  @@ -14522,113 +14522,113 @@
   뚝딱뚝딱:부:1
   뚝뚝:부:1
   뚝뚝:부:15
  -뚝뚝하다:형:2
  +뚝뚝하:형:2
   뚝방:명:5
   뚝배기:명:8
   뚝심:명:4
  -뚝하다:형:1
  -뚝해지다:동:1
  -뚫다:동:66
  -뚫리다:동:28
  -뚫어지다:동:7
  -뚱기다:동:2
  +뚝하:형:1
  +뚝해지:동:1
  +뚫:동:66
  +뚫리:동:28
  +뚫어지:동:7
  +뚱기:동:2
   뚱딴지:명:4
   뚱뚱보:명:1
   뚱뚱이:명:2
  -뚱뚱하다:형:12
  -뚱뚱해지다:동:1
  +뚱뚱하:형:12
  +뚱뚱해지:동:1
   뚱보:명:2
  -뚱하다:형:3
  +뚱하:형:3
   뛰기:명:9
  -뛰놀다:동:16
  -뛰다:동:119
  -뛰다:동:139
  -뛰어가다:동:41
  -뛰어나가다:동:15
  -뛰어나다:형:136
  -뛰어나오다:동:17
  -뛰어내리다:동:27
  -뛰어넘다:동:61
  -뛰어놀다:동:15
  -뛰어다니다:동:23
  -뛰어들다:동:94
  -뛰어오다:동:16
  -뛰어오르다:동:25
  -뛰쳐나가다:동:14
  -뛰쳐나오다:동:21
  +뛰놀:동:16
  +뛰:동:119
  +뛰:동:139
  +뛰어가:동:41
  +뛰어나가:동:15
  +뛰어나:형:136
  +뛰어나오:동:17
  +뛰어내리:동:27
  +뛰어넘:동:61
  +뛰어놀:동:15
  +뛰어다니:동:23
  +뛰어들:동:94
  +뛰어오:동:16
  +뛰어오르:동:25
  +뛰쳐나가:동:14
  +뛰쳐나오:동:21
   뜀뛰기:명:5
  -뜀박질하다:동:1
  +뜀박질하:동:1
   뜀질:명:1
   뜀틀:명:8
   뜨개질:명:2
  -뜨거워지다:동:14
  -뜨겁다:형:195
  -뜨끈뜨끈하다:형:3
  -뜨끈하다:형:2
  -뜨끔거리다:동:1
  +뜨거워지:동:14
  +뜨겁:형:195
  +뜨끈뜨끈하:형:3
  +뜨끈하:형:2
  +뜨끔거리:동:1
   뜨끔뜨끔:부:1
  -뜨끔하다:형:3
  -뜨끔해하다:동:1
  +뜨끔하:형:3
  +뜨끔해하:동:1
   뜨내기:명:3
  -뜨다:동:1
  -뜨다:동:135
  -뜨다:동:164
  -뜨다:동:2
  -뜨다:동:2
  -뜨다:동:2
  -뜨다:동:21
  -뜨다:동:48
  -뜨다:형:1
  -뜨듯해지다:동:1
  -뜨뜻하다:형:2
  +뜨:동:1
  +뜨:동:135
  +뜨:동:164
  +뜨:동:2
  +뜨:동:2
  +뜨:동:2
  +뜨:동:21
  +뜨:동:48
  +뜨:형:1
  +뜨듯해지:동:1
  +뜨뜻하:형:2
   뜨락:명:16
  -뜨리다:동:1
  +뜨리:동:1
   뜨물:명:2
   뜨아:감:4
  -뜨악하다:형:4
  -뜨이다:동:13
  +뜨악하:형:4
  +뜨이:동:13
   뜬구름:명:2
  -뜬금없다:형:1
  -뜬금없어하다:동:2
  +뜬금없:형:1
  +뜬금없어하:동:2
   뜬금없이:부:4
   뜬눈:명:2
   뜬소문:명:1
  -뜯기다:동:1
  -뜯기다:동:6
  -뜯다:동:55
  -뜯어고쳐지다:동:1
  -뜯어고치다:동:3
  -뜯어내다:동:7
  -뜯어말리다:동:6
  -뜯어먹다:동:2
  -뜯어보다:동:13
  -뜯어지다:동:5
  +뜯기:동:1
  +뜯기:동:6
  +뜯:동:55
  +뜯어고쳐지:동:1
  +뜯어고치:동:3
  +뜯어내:동:7
  +뜯어말리:동:6
  +뜯어먹:동:2
  +뜯어보:동:13
  +뜯어지:동:5
   뜰:명:28
   뜸:명:18
  -뜸하다:형:9
  -뜸해지다:동:5
  +뜸하:형:9
  +뜸해지:동:5
   뜻:명:639
   뜻글자:명:1
   뜻대로:부:30
   뜻밖:명:43
   뜻밖에:부:28
  -뜻있다:형:15
  +뜻있:형:15
   뜻풀이:명:1
  -뜻풀이하다:동:1
  -뜻하다:동:122
  -띄다:동:1
  -띄다:동:124
  +뜻풀이하:동:1
  +뜻하:동:122
  +띄:동:1
  +띄:동:124
   띄엄띄엄:부:8
  -띄우다:동:2
  -띄우다:동:40
  -띄우다:동:5
  +띄우:동:2
  +띄우:동:40
  +띄우:동:5
   띠:명:2
   띠:명:27
  -띠다:동:201
  +띠:동:201
   띠띠와:감:1
   띠얏:감:3
   띵:부:2
  -띵해지다:동:1
  +띵해지:동:1
   라:명:2
   라듐:명:7
   라디에이터:명:15
  @@ -14666,7 +14666,7 @@
   람바다:명:2
   람프라소스:명:1
   래드치커리:명:1
  -래디컬하다:동:1
  +래디컬하:동:1
   래커:명:2
   랜드:명:3
   랜딩:명:1
  @@ -14681,7 +14681,7 @@
   랩탑형:명:1
   랬:불:1
   랭귀지:명:1
  -랭크되다:동:3
  +랭크되:동:3
   랭킹:명:11
   량:의:6
   러너:명:1
  @@ -14705,7 +14705,7 @@
   럼:명:1
   레:명:2
   레게:명:76
  -레게스럽다:형:1
  +레게스럽:형:1
   레깅스:명:1
   레닌주의:명:2
   레드카드:명:1
  @@ -14721,9 +14721,9 @@
   레블루션:명:1
   레스토랑:명:30
   레슨:명:9
  -레슨받다:동:1
  +레슨받:동:1
   레슨비:명:7
  -레슨하다:동:2
  +레슨하:동:2
   레슬링:명:11
   레이더:명:5
   레이더실:명:4
  @@ -14754,20 +14754,20 @@
   레포츠:명:9
   렌즈:명:35
   렌트:명:2
  -렌트하다:동:1
  +렌트하:동:1
   렌틀:명:1
   로고:명:1
   로고스:명:2
   로그:명:1
   로드:명:2
   로드:명:8
  -로드되다:동:1
  +로드되:동:1
   로마법:명:1
   로마자화:명:1
   로만포르노:명:1
   로맨스:명:1
   로맨스그레이:명:2
  -로맨틱하다:형:4
  +로맨틱하:형:4
   로봇:명:30
   로비:명:38
   로비설:명:1
  @@ -14834,8 +14834,8 @@
   리더:명:4
   리더십:명:8
   리드:명:3
  -리드미컬하다:형:2
  -리드하다:동:2
  +리드미컬하:형:2
  +리드하:동:2
   리듬:명:69
   리듬감:명:2
   리듬성:명:1
  @@ -14845,9 +14845,9 @@
   리모트컨트롤러:명:1
   리무버:명:6
   리무진:명:2
  -리바이벌하다:동:1
  +리바이벌하:동:1
   리버럴리스트:명:7
  -리버럴하다:형:2
  +리버럴하:형:2
   리베로:명:2
   리본:명:6
   리볼버:명:3
  @@ -14862,7 +14862,7 @@
   리스팅:명:1
   리시버:명:7
   리시브:명:5
  -리시브하다:동:1
  +리시브하:동:1
   리아스식:명:3
   리어액슬:명:1
   리어카:명:32
  @@ -14890,7 +14890,7 @@
   리허설:명:1
   린스:명:2
   린치:명:1
  -린치하다:동:1
  +린치하:동:1
   릴:명:4
   릴낚시:명:2
   릴낚싯대:명:1
  @@ -14902,7 +14902,7 @@
   립스틱:명:11
   링:명:12
   링거:명:1
  -링크하다:동:1
  +링크하:동:1
   마:감:7
   마:명:1
   마:명:1
  @@ -14911,9 +14911,9 @@
   마:부:4
   마:의:7
   마감:명:12
  -마감되다:동:10
  +마감되:동:10
   마감일:명:3
  -마감하다:동:17
  +마감하:동:17
   마개:명:5
   마고자:명:1
   마구:명:1
  @@ -14941,7 +14941,7 @@
   마니아:명:5
   마님:명:11
   마다:명:3
  -마다하다:동:9
  +마다하:동:9
   마담:명:21
   마담뚜:명:1
   마당:명:140
  @@ -14959,26 +14959,26 @@
   마디마디:명:6
   마디풀:명:1
   마땅:명:5
  -마땅찮다:형:6
  -마땅하다:형:75
  +마땅찮:형:6
  +마땅하:형:75
   마땅히:부:42
  -마뜩찮다:형:2
  +마뜩찮:형:2
   마라톤:명:21
  -마려워지다:동:1
  +마려워지:동:1
   마력:명:6
   마력:의:4
   마련:명:97
   마련:의:145
  -마련되다:동:88
  -마련하다:동:265
  -마렵다:형:6
  +마련되:동:88
  +마련하:동:265
  +마렵:형:6
   마루:명:2
   마루:명:88
   마루문:명:7
   마루턱:명:4
   마루폭:명:1
   마룻바닥:명:11
  -마르다:동:137
  +마르:동:137
   마르모트:명:1
   마르크:의:7
   마르크스주의:명:31
  @@ -14996,8 +14996,8 @@
   마름:명:5
   마름모:명:1
   마름질:명:8
  -마름질하다:동:1
  -마름질하다:동:1
  +마름질하:동:1
  +마름질하:동:1
   마리:의:196
   마리전:명:1
   마리화나:명:2
  @@ -15006,23 +15006,23 @@
   마마:명:3
   마멀레이드:명:1
   마모:명:1
  -마모되다:동:2
  +마모되:동:2
   마무리:명:53
  -마무리되다:동:18
  -마무리하다:동:21
  +마무리되:동:18
  +마무리하:동:21
   마바리:명:1
   마법:명:4
   마법사:명:6
   마부:명:2
   마분지:명:1
   마비:명:26
  -마비되다:동:15
  +마비되:동:15
   마비성:명:5
  -마비시키다:동:10
  +마비시키:동:10
   마빡:명:1
   마사지:명:19
   마사지걸:명:1
  -마사지하다:동:9
  +마사지하:동:9
   마사크:명:1
   마상의:명:1
   마상재:명:2
  @@ -15030,7 +15030,7 @@
   마성적:명:1
   마세:명:2
   마수:명:2
  -마수걸이하다:동:1
  +마수걸이하:동:1
   마술:명:6
   마술사:명:9
   마술적:관:1
  @@ -15044,7 +15044,7 @@
   마스터스:명:4
   마스터플랜:명:5
   마스트:명:2
  -마시다:동:532
  +마시:동:532
   마실:명:2
   마약:명:42
   마약상:명:1
  @@ -15057,15 +15057,15 @@
   마운드:명:2
   마을:명:430
   마을굿:명:4
  -마음:명:1,206
  +마음:명:1206
   마음가짐:명:32
   마음고생:명:2
   마음껏:부:39
   마음대로:부:71
  -마음먹다:동:44
  +마음먹:동:44
   마음속:명:98
   마음씨:명:23
  -마음잡다:동:3
  +마음잡:동:3
   마이너스:명:7
   마이동풍:명:1
   마이컴:명:1
  @@ -15084,14 +15084,14 @@
   마적단:명:3
   마전:명:2
   마주:부:96
  -마주치다:동:53
  -마주하다:동:12
  +마주치:동:53
  +마주하:동:12
   마중:명:18
   마중객:명:2
  -마중하다:동:2
  +마중하:동:2
   마지기:의:10
   마지막:명:345
  -마지못하다:형:20
  +마지못하:형:20
   마지않다:보:6
   마직물:명:7
   마진:명:4
  @@ -15107,7 +15107,7 @@
   마취제:명:2
   마치:명:2
   마치:부:367
  -마치다:동:306
  +마치:동:306
   마침:부:95
   마침내:부:151
   마침표:명:5
  @@ -15121,7 +15121,7 @@
   마켓:명:10
   마크:명:37
   마크제:명:1
  -마크하다:동:9
  +마크하:동:9
   마키:명:1
   마타리:명:2
   마타리꽃:명:4
  @@ -15145,9 +15145,9 @@
   막:부:198
   막:부:2
   막:의:15
  -막가다:동:2
  +막가:동:2
   막강:명:2
  -막강하다:형:25
  +막강하:형:25
   막걸리:명:43
   막내:명:45
   막내둥이:명:1
  @@ -15156,9 +15156,9 @@
   막냇삼촌:명:4
   막노동:명:1
   막노동자:명:1
  -막노동하다:동:1
  -막다:동:312
  -막다르다:형:8
  +막노동하:동:1
  +막:동:312
  +막다르:형:8
   막대:명:22
   막대그래프:명:1
   막대기:명:12
  @@ -15166,37 +15166,37 @@
   막대기형:명:1
   막대자석:명:3
   막대치:명:1
  -막대하다:형:45
  -막돼먹다:형:3
  +막대하:형:45
  +막돼먹:형:3
   막둥이:명:3
  -막론하다:동:25
  +막론하:동:25
   막료:명:1
  -막막하다:형:1
  -막막하다:형:24
  -막막해지다:동:7
  +막막하:형:1
  +막막하:형:24
  +막막해지:동:7
   막말:명:6
  -막말하다:동:2
  +막말하:동:2
   막무가내:명:14
   막바지:명:13
  -막벗하다:동:1
  +막벗하:동:1
   막사:명:8
   막상:부:53
   막상막하:명:1
  -막아서다:동:9
  -막역하다:형:1
  -막연하다:형:41
  +막아서:동:9
  +막역하:형:1
  +막연하:형:41
   막연히:부:7
   막일:명:8
   막일꾼:명:1
  -막중하다:형:13
  +막중하:형:13
   막집:명:1
   막차:명:3
   막창자:명:1
   막판:명:30
   막하:명:1
  -막혀하다:동:1
  +막혀하:동:1
   막후:명:3
  -막히다:동:171
  +막히:동:171
   막힘없이:부:1
   만:관:23
   만:관:51
  @@ -15207,9 +15207,9 @@
   만가닥버섯:명:1
   만각:명:1
   만감:명:6
  -만개되다:동:1
  -만개시키다:동:1
  -만개하다:동:1
  +만개되:동:1
  +만개시키:동:1
  +만개하:동:1
   만개형:명:1
   만고:명:1
   만국:명:2
  @@ -15217,10 +15217,10 @@
   만근:명:2
   만기:명:20
   만기일:명:1
  -만끽시키다:동:1
  -만끽하다:동:17
  -만나다:동:1,126
  -만나지다:동:1
  +만끽시키:동:1
  +만끽하:동:17
  +만나:동:1126
  +만나지:동:1
   만날:부:42
   만날만날:부:2
   만남:명:83
  @@ -15236,31 +15236,31 @@
   만두:명:7
   만두소:명:2
   만둣국:명:2
  -만들다:동:2,151
  -만들어지다:동:211
  +만들:동:2151
  +만들어지:동:211
   만땅:명:1
   만료:명:4
  -만료되다:동:7
  +만료되:동:7
   만류:명:6
  -만류하다:동:6
  +만류하:동:6
   만리타국:명:1
   만리타향:명:1
   만만세:감:1
  -만만찮다:형:5
  -만만하다:형:1
  -만만하다:형:51
  +만만찮:형:5
  +만만하:형:1
  +만만하:형:51
   만만히:부:1
   만면:명:4
  -만면하다:형:2
  +만면하:형:2
   만무:명:2
  -만무하다:형:9
  +만무하:형:9
   만물:명:40
   만물박사:명:2
   만물상:명:2
   만민:명:1
   만반:명:3
   만발:명:1
  -만발하다:동:6
  +만발하:동:6
   만방:명:1
   만방:명:2
   만병:명:3
  @@ -15276,11 +15276,11 @@
   만석:명:1
   만선:명:1
   만선:명:3
  -만선하다:동:1
  +만선하:동:1
   만성:명:30
   만성적:관:1
   만성적:명:6
  -만성화되다:동:3
  +만성화되:동:3
   만세:감:2
   만세:명:16
   만수위:명:1
  @@ -15291,9 +15291,9 @@
   만신창이:명:3
   만약:명:201
   만연:명:2
  -만연되다:동:12
  +만연되:동:12
   만연체형:명:1
  -만연하다:동:12
  +만연하:동:12
   만오천:관:3
   만용:명:3
   만우절:명:3
  @@ -15307,41 +15307,41 @@
   만장:명:1
   만장:명:1
   만장일치:명:4
  -만재하다:동:1
  -만적이다:동:2
  +만재하:동:1
  +만적이:동:2
   만전:명:4
   만점:명:30
  -만져지다:동:5
  +만져지:동:5
   만조:명:3
   만족:명:37
   만족감:명:11
   만족도:명:12
  -만족되다:동:1
  -만족스러워하다:동:1
  -만족스럽다:형:22
  +만족되:동:1
  +만족스러워하:동:1
  +만족스럽:형:22
   만족스레:부:1
  -만족시키다:동:16
  -만족하다:동:29
  -만족하다:형:52
  -만족해하다:동:5
  +만족시키:동:16
  +만족하:동:29
  +만족하:형:52
  +만족해하:동:5
   만좌중:명:1
  -만지다:동:85
  -만지작거리다:동:15
  -만지작이다:동:1
  +만지:동:85
  +만지작거리:동:15
  +만지작이:동:1
   만찬:명:10
   만찬석:명:1
   만찬석상:명:1
   만찬장:명:1
   만천하:명:4
   만취:명:3
  -만취되다:동:2
  -만취하다:동:3
  +만취되:동:2
  +만취하:동:3
   만치:의:2
   만큼:의:457
   만평:명:1
   만평집:명:1
  -만하다:보:451
  -만해지다:동:2
  +만하:보:451
  +만해지:동:2
   만행:명:4
   만호:명:2
   만화:명:106
  @@ -15353,10 +15353,10 @@
   만화책:명:7
   만홧가게:명:6
   만회:명:3
  -만회하다:동:9
  -많다:형:2,697
  -많아지다:동:90
  -많이:부:1,491
  +만회하:동:9
  +많:형:2697
  +많아지:동:90
  +많이:부:1491
   맏딸:명:12
   맏며느리:명:4
   맏사위:명:2
  @@ -15366,13 +15366,13 @@
   맏자식:명:1
   맏형:명:2
   말:명:1
  -말:명:4,286
  +말:명:4286
   말:명:81
   말:의:15
   말:의:280
   말갈기:명:1
  -말갛다:형:2
  -말개지다:동:1
  +말갛:형:2
  +말개지:동:1
   말경:명:1
   말고기:명:2
   말고삐:명:2
  @@ -15386,44 +15386,44 @@
   말끄러미:부:3
   말끔:부:1
   말끔:부:3
  -말끔하다:형:5
  -말끔해지다:동:1
  +말끔하:형:5
  +말끔해지:동:1
   말끔히:부:20
   말끝:명:22
   말년:명:7
  -말다:동:34
  -말다:동:369
  -말다:동:5
  -말다:보:1,135
  +말:동:34
  +말:동:369
  +말:동:5
  +말다:보:1135
   말다툼:명:4
   말단:명:15
   말단적:명:1
   말대꾸:명:1
  -말대꾸하다:동:1
  +말대꾸하:동:1
   말대답:명:1
   말똥가리:명:2
  -말똥거리다:동:2
  +말똥거리:동:2
   말똥말똥:부:2
  -말똥말똥해지다:동:1
  +말똥말똥해지:동:1
   말뚝:명:17
   말뜻:명:12
   말띠:명:2
   말라깽이:명:1
   말라리아:명:2
  -말라붙다:동:3
  +말라붙:동:3
   말랑말랑:부:1
  -말려들다:동:14
  +말려들:동:14
   말로:명:1
  -말리다:동:50
  -말리다:동:63
  -말리다:동:7
  -말리우다:동:1
  +말리:동:50
  +말리:동:63
  +말리:동:7
  +말리우:동:1
   말머리:명:1
   말목:명:2
   말문:명:18
   말미:명:4
   말미:명:6
  -말미암다:동:45
  +말미암:동:45
   말발:명:1
   말발굽:명:3
   말발도리:명:1
  @@ -15435,14 +15435,14 @@
   말본:명:1
   말사:명:1
   말살:명:2
  -말살되다:동:1
  -말살시키다:동:1
  -말살하다:동:3
  +말살되:동:1
  +말살시키:동:1
  +말살하:동:3
   말상:명:2
   말석:명:1
   말세:명:7
   말소:명:2
  -말소되다:동:2
  +말소되:동:2
   말소리:명:10
   말속:명:3
   말솜씨:명:3
  @@ -15451,43 +15451,43 @@
   말싸움:명:4
   말썽:명:40
   말썽꾸러기:명:3
  -말쑥하다:형:5
  +말쑥하:형:5
   말씀:명:272
  -말씀드리다:동:64
  -말씀하다:동:165
  +말씀드리:동:64
  +말씀하:동:165
   말씨:명:17
  -말아먹다:동:3
  +말아먹:동:3
   말없이:부:65
   말엽:명:8
   말이:명:5
   말일:명:1
   말장난:명:6
  -말장난하다:동:1
  +말장난하:동:1
   말재주:명:2
   말조심:명:3
  -말조심하다:동:3
  +말조심하:동:3
   말종:명:1
   말짝:명:1
   말짱:부:8
  -말짱하다:형:6
  +말짱하:형:6
   말초:명:8
   말초적:명:3
   말총:명:1
   말투:명:31
   말투성이:명:2
   말품:명:1
  -말하다:동:3,738
  -말하여지다:동:3
  -말해지다:동:5
  +말하:동:3738
  +말하여지:동:3
  +말해지:동:5
   말허리:명:1
  -맑다:형:210
  -맑아지다:동:10
  +맑:형:210
  +맑아지:동:10
   맑은대쑥:명:2
   맘:명:50
  -맘고생시키다:동:1
  +맘고생시키:동:1
   맘껏:부:8
   맘대로:부:16
  -맘먹다:동:2
  +맘먹:동:2
   맘모스:명:1
   맘보:명:1
   맘보바지:명:1
  @@ -15495,27 +15495,27 @@
   맙소사:감:4
   맛:명:503
   맛깔:명:1
  -맛깔스럽다:형:2
  +맛깔스럽:형:2
   맛깔스레:부:1
  -맛나다:형:5
  +맛나:형:5
   맛보기:명:2
  -맛보다:동:62
  +맛보:동:62
   맛봉오리:명:1
   맛살:명:1
   맛술:명:1
  -맛없다:형:8
  -맛있다:형:219
  -맛있어지다:동:1
  +맛없:형:8
  +맛있:형:219
  +맛있어지:동:1
   맛조개:명:2
   망:명:13
   망:명:3
  -망가뜨리다:동:14
  +망가뜨리:동:14
   망가적:관:1
  -망가지다:동:23
  +망가지:동:23
   망각:명:7
  -망각되다:동:2
  +망각되:동:2
   망각적:명:1
  -망각하다:동:12
  +망각하:동:12
   망간:명:2
   망개:명:2
   망건:명:1
  @@ -15523,14 +15523,14 @@
   망국:명:5
   망국적:관:5
   망국적:명:2
  -망그러지다:동:2
  -망극하다:형:1
  +망그러지:동:2
  +망극하:형:1
   망나니:명:1
   망나니짓:명:1
   망념:명:2
   망동:명:5
   망둑엇과:명:2
  -망라하다:동:18
  +망라하:동:18
   망령:명:27
   망령:명:4
   망령되이:부:1
  @@ -15538,12 +15538,12 @@
   망막:명:1
   망막증:명:1
   망망대해:명:4
  -망망하다:형:5
  +망망하:형:5
   망명:명:10
  -망명시키다:동:1
  +망명시키:동:1
   망명자:명:1
   망명지:명:1
  -망명하다:동:7
  +망명하:동:7
   망발:명:15
   망부석:명:1
   망사:명:1
  @@ -15551,20 +15551,20 @@
   망상:명:14
   망상가:명:1
   망새:명:3
  -망설여지다:동:2
  -망설이다:동:58
  +망설여지:동:2
  +망설이:동:58
   망설임:명:7
   망성:명:1
   망신:명:10
  -망신당하다:동:1
  -망신스럽다:형:3
  -망신시키다:동:2
  -망신하다:동:1
  +망신당하:동:1
  +망신스럽:형:3
  +망신시키:동:2
  +망신하:동:1
   망아지:명:7
   망언:명:6
   망연자실:명:2
  -망연자실하다:동:5
  -망연하다:형:2
  +망연자실하:동:5
  +망연하:형:2
   망연히:부:6
   망원경:명:38
   망자:명:3
  @@ -15575,105 +15575,105 @@
   망중한:명:1
   망창히:부:1
   망처:명:1
  -망쳐지다:동:1
  +망쳐지:동:1
   망초:명:4
   망치:명:11
  -망치다:동:37
  +망치:동:37
   망태:명:7
   망태기:명:3
   망토:명:1
   망퉁:명:1
  -망하다:동:65
  +망하:동:65
   망향:명:3
   맞고소:명:1
   맞고함:명:1
   맞교대:명:1
  -맞다:동:148
  -맞다:동:275
  -맞다:동:517
  -맞닥뜨리다:동:9
  -맞닿다:동:8
  +맞:동:148
  +맞:동:275
  +맞:동:517
  +맞닥뜨리:동:9
  +맞닿:동:8
   맞대거리:명:3
   맞대결:명:2
  -맞대다:동:15
  +맞대:동:15
   맞대응:명:1
  -맞대응하다:동:2
  +맞대응하:동:2
   맞대질:명:2
  -맞들다:동:3
  -맞먹다:동:21
  -맞물리다:동:31
  -맞바꾸다:동:1
  -맞바꾸어지다:동:1
  +맞들:동:3
  +맞먹:동:21
  +맞물리:동:31
  +맞바꾸:동:1
  +맞바꾸어지:동:1
   맞바람:명:3
  -맞받다:동:3
  -맞받아치다:동:2
  -맞버티다:동:1
  +맞받:동:3
  +맞받아치:동:2
  +맞버티:동:1
   맞벌이:명:12
  -맞벌이하다:동:1
  -맞부닥치다:동:1
  -맞부딪다:동:1
  -맞부딪치다:동:5
  -맞부딪히다:동:2
  +맞벌이하:동:1
  +맞부닥치:동:1
  +맞부딪:동:1
  +맞부딪치:동:5
  +맞부딪히:동:2
   맞불:명:1
  -맞붙다:동:7
  -맞붙이다:동:1
  -맞비비다:동:1
  -맞서다:동:74
  +맞붙:동:7
  +맞붙이:동:1
  +맞비비:동:1
  +맞서:동:74
   맞선:명:2
   맞소리:명:1
   맞수:명:5
  -맞아들이다:동:5
  -맞아떨어지다:동:9
  +맞아들이:동:5
  +맞아떨어지:동:9
   맞은쪽:명:1
   맞은편:명:34
  -맞이하다:동:61
  -맞잡다:동:5
  +맞이하:동:61
  +맞잡:동:5
   맞장구:명:10
  -맞장구치다:동:1
  +맞장구치:동:1
   맞절:명:2
   맞체결:명:1
  -맞체결되다:동:1
  -맞추다:동:314
  -맞추어지다:동:5
  +맞체결되:동:1
  +맞추:동:314
  +맞추어지:동:5
   맞춤:명:4
   맞춤법:명:5
  -맞춤하다:형:1
  -맞춰지다:동:4
  -맞통하다:동:1
  -맞히다:동:4
  -맞히다:동:9
  +맞춤하:형:1
  +맞춰지:동:4
  +맞통하:동:1
  +맞히:동:4
  +맞히:동:9
   맡:의:1
  -맡겨지다:동:13
  -맡기다:동:150
  -맡다:동:343
  -맡다:동:43
  -맡아보다:동:3
  -맡아하다:동:3
  +맡겨지:동:13
  +맡기:동:150
  +맡:동:343
  +맡:동:43
  +맡아보:동:3
  +맡아하:동:3
   매:관:10
   매:명:33
   매:의:2
   매가리:명:1
   매가릿간:명:1
   매각:명:55
  -매각되다:동:1
  +매각되:동:1
   매각설:명:2
  -매각하다:동:20
  +매각하:동:20
   매개:명:35
  -매개되다:동:8
  +매개되:동:8
   매개적:관:2
   매개체:명:4
   매개충:명:1
  -매개하다:동:4
  -매겨지다:동:9
  +매개하:동:4
  +매겨지:동:9
   매관매직:명:1
   매국:명:1
   매국노:명:5
   매기:명:1
  -매기다:동:34
  -매끄러워지다:동:1
  -매끄럽다:형:17
  -매끈하다:형:5
  -매끈해지다:동:1
  +매기:동:34
  +매끄러워지:동:1
  +매끄럽:형:17
  +매끈하:형:5
  +매끈해지:동:1
   매끼:명:1
   매끼:부:1
   매너:명:40
  @@ -15685,44 +15685,44 @@
   매니저:명:7
   매니지먼트:명:2
   매니큐어:명:2
  -매다:동:49
  -매다:동:8
  +매:동:49
  +매:동:8
   매달:부:30
  -매달다:동:24
  -매달리다:동:112
  +매달:동:24
  +매달리:동:112
   매도:명:1
   매도:명:3
   매도금:명:1
  -매도당하다:동:1
  +매도당하:동:1
   매도설:명:1
   매도자:명:1
  -매도하다:동:1
  -매도하다:동:10
  +매도하:동:1
  +매도하:동:10
   매독:명:1
   매듭:명:8
  -매듭지어지다:동:6
  -매듭짓다:동:13
  +매듭지어지:동:6
  +매듭짓:동:13
   매력:명:89
   매력적:관:1
   매력적:명:9
  -매료되다:동:6
  -매료시키다:동:1
  +매료되:동:6
  +매료시키:동:1
   매립:명:2
   매립장:명:5
   매립지:명:2
  -매만지다:동:2
  +매만지:동:2
   매맛:명:1
   매매:명:15
  -매매되다:동:2
  +매매되:동:2
   매매춘:명:69
  -매매하다:동:3
  +매매하:동:3
   매머드:명:6
  -매명하다:동:1
  +매명하:동:1
   매몰:명:1
  -매몰되다:동:10
  -매몰시키다:동:1
  +매몰되:동:10
  +매몰시키:동:1
   매몰자:명:1
  -매몰차다:형:1
  +매몰차:형:1
   매무새:명:3
   매물:명:27
   매미:명:10
  @@ -15736,15 +15736,15 @@
   매설:명:5
   매설관:명:1
   매설물:명:4
  -매설하다:동:1
  -매섭다:형:12
  +매설하:동:1
  +매섭:형:12
   매수:명:1
   매수:명:14
  -매수당하다:동:2
  +매수당하:동:2
   매수량:명:1
   매수설:명:1
   매수세:명:3
  -매수하다:동:7
  +매수하:동:7
   매스:명:17
   매스컴:명:21
   매시간:명:1
  @@ -15752,15 +15752,15 @@
   매식:명:1
   매실:명:3
   매양:부:1
  -매여지다:동:1
  +매여지:동:1
   매연:명:16
   매우:부:500
   매운맛:명:3
   매운탕:명:10
  -매워지다:동:1
  +매워지:동:1
   매월:부:14
   매음굴:명:1
  -매이다:동:15
  +매이:동:15
   매일:명:25
   매일:부:181
   매일매일:명:6
  @@ -15769,45 +15769,45 @@
   매입:명:37
   매입비:명:1
   매입자:명:2
  -매입하다:동:22
  -매작지근하다:형:1
  +매입하:동:22
  +매작지근하:형:1
   매장:명:1
   매장:명:64
  -매장되다:동:7
  +매장되:동:7
   매장량:명:4
  -매장시키다:동:2
  -매장하다:동:1
  +매장시키:동:2
  +매장하:동:1
   매재:명:1
   매점:명:2
   매점:명:8
  -매정하다:형:1
  +매정하:형:1
   매제:명:1
   매주:명:2
   매주:부:24
   매지구름:명:1
  -매지근하다:형:1
  +매지근하:형:1
   매직:명:1
   매직:명:2
   매직펜:명:1
  -매진하다:동:1
  -매진하다:동:6
  +매진하:동:1
  +매진하:동:6
   매질:명:4
   매질:명:7
  -매질하다:동:1
  +매질하:동:1
   매체:명:171
   매체적:관:4
   매초:부:1
   매춘:명:119
   매춘:명:2
  -매춘하다:동:1
  +매춘하:동:1
   매출:명:38
   매출량:명:1
   매출액:명:32
   매치:명:2
   매치법:명:1
  -매캐하다:형:5
  +매캐하:형:5
   매콤:명:1
  -매콤하다:형:4
  +매콤하:형:4
   매크로:명:1
   매타작:명:1
   매트:명:5
  @@ -15823,9 +15823,9 @@
   매한가지:명:2
   매형:명:3
   매혹:명:3
  -매혹되다:동:3
  +매혹되:동:3
   매혹적:명:3
  -매혹하다:동:2
  +매혹하:동:2
   매화:명:4
   매화꽃:명:1
   매화나무:명:2
  @@ -15839,7 +15839,7 @@
   맥반석:명:2
   맥상:명:2
   맥시:명:3
  -맥없다:형:2
  +맥없:형:2
   맥없이:부:1
   맥없이:부:9
   맥주:명:73
  @@ -15847,14 +15847,14 @@
   맥주홀:명:2
   맥줏집:명:4
   맥진:명:1
  -맥진하다:동:1
  +맥진하:동:1
   맨:관:128
   맨:명:4
   맨:부:2
   맨돈:명:1
   맨드라미:명:6
  -맨들다:동:2
  -맨들맨들하다:형:1
  +맨들:동:2
  +맨들맨들하:형:1
   맨땅:명:2
   맨몸:명:2
   맨몸뚱이:명:1
  @@ -15866,40 +15866,40 @@
   맨션아파트:명:1
   맨소주:명:2
   맨손:명:10
  -맨송맨송하다:형:4
  +맨송맨송하:형:4
   맨입:명:1
   맨주먹:명:2
   맨틀:명:6
   맨홀:명:2
   맴:명:5
  -맴돌다:동:23
  +맴돌:동:23
   맴맴:부:3
  -맵다:형:29
  -맵디맵다:형:1
  +맵:형:29
  +맵디맵:형:1
   맵시:명:7
  -맵짜다:형:2
  +맵짜:형:2
   맷돌:명:18
   맷방석:명:1
  -맹글다:동:2
  +맹글:동:2
   맹꽁이:명:1
   맹독:명:3
   맹독성:명:1
  -맹랑하다:형:3
  +맹랑하:형:3
   맹렬:명:1
  -맹렬하다:형:6
  -맹렬해지다:동:1
  +맹렬하:형:6
  +맹렬해지:동:1
   맹렬히:부:5
   맹모삼천:명:1
   맹목:명:4
   맹목적:관:3
   맹목적:명:20
   맹물:명:2
  -맹비난하다:동:1
  +맹비난하:동:1
   맹세:명:3
   맹세코:부:4
  -맹세하다:동:7
  +맹세하:동:7
   맹수:명:5
  -맹신하다:동:4
  +맹신하:동:4
   맹아:명:1
   맹아:명:2
   맹아론:명:1
  @@ -15910,30 +15910,30 @@
   맹장:명:1
   맹장염:명:2
   맹점:명:3
  -맹종하다:동:4
  +맹종하:동:4
   맹주:명:1
   맹주국:명:1
   맹추:명:3
   맹추격:명:1
   맹탕:명:1
   맹탕:부:2
  -맹폭하다:동:1
  +맹폭하:동:1
   맹호:명:1
   맹호출림형:명:1
   맹호형:명:1
   맹활약:명:1
   맹활약상:명:1
   맹휴:명:1
  -맺다:동:135
  -맺어지다:동:14
  +맺:동:135
  +맺어지:동:14
   맺음말:명:2
  -맺히다:동:33
  -먈갛다:형:1
  +맺히:동:33
  +먈갛:형:1
   머:감:2
   머:대:3
   머그잔:명:1
  -머금다:동:30
  -머나멀다:형:12
  +머금:동:30
  +머나멀:형:12
   머루:명:1
   머리:명:657
   머리글자:명:1
  @@ -15952,19 +15952,19 @@
   머리털:명:9
   머리통:명:8
   머리핀:명:1
  -머리하다:동:1
  +머리하:동:1
   머릿결:명:2
   머릿기름:명:3
   머릿돌:명:4
   머릿속:명:100
   머릿수:명:4
   머릿수건:명:2
  -머무르다:동:104
  -머물다:동:87
  -머뭇거리다:동:25
  -머뭇머뭇거리다:동:1
  -머뭇머뭇하다:동:1
  -머뭇하다:동:1
  +머무르:동:104
  +머물:동:87
  +머뭇거리:동:25
  +머뭇머뭇거리:동:1
  +머뭇머뭇하:동:1
  +머뭇하:동:1
   머스터드:명:1
   머스터드소스:명:5
   머슴:명:14
  @@ -15972,43 +15972,43 @@
   머슴애:명:1
   머시기:대:1
   머신:명:3
  -머쓱하다:형:4
  -머쓱해지다:동:4
  +머쓱하:형:4
  +머쓱해지:동:4
   머위:명:1
   머저리:명:2
   머지:명:18
  -머지않다:형:26
  -머지하다:동:6
  +머지않:형:26
  +머지하:동:6
   머큐로크롬:명:2
   머핀:명:1
   먹:명:10
   먹거리:명:26
  -먹고살다:동:33
  +먹고살:동:33
   먹구름:명:8
   먹구름장:명:1
  -먹다:동:1,874
  -먹다:동:15
  +먹:동:1874
  +먹:동:15
   먹다:보:50
  -먹먹하다:형:4
  -먹먹해지다:동:1
  +먹먹하:형:4
  +먹먹해지:동:1
   먹물:명:7
   먹새:명:1
   먹선:명:1
   먹성딸기:명:1
   먹을거리:명:1
  -먹음직스럽다:형:10
  -먹음직하다:형:1
  +먹음직스럽:형:10
  +먹음직하:형:1
   먹이:명:54
  -먹이다:동:106
  +먹이:동:106
   먹이저장:명:1
   먹자골목:명:2
   먹자판:명:1
   먹장구름:명:5
   먹칠:명:1
  -먹칠하다:동:2
  +먹칠하:동:2
   먹통:명:2
  -먹혀들다:동:7
  -먹히다:동:19
  +먹혀들:동:7
  +먹히:동:19
   먼눈:명:1
   먼동:명:3
   먼발치:명:4
  @@ -16021,56 +16021,56 @@
   먼지떨이:명:1
   먼지투성이:명:1
   멀거니:부:3
  -멀겋다:형:4
  -멀게지다:동:1
  -멀다:동:10
  -멀다:형:301
  -멀뚱거리다:동:1
  +멀겋:형:4
  +멀게지:동:1
  +멀:동:10
  +멀:형:301
  +멀뚱거리:동:1
   멀뚱멀뚱:부:3
  -멀뚱멀뚱하다:형:1
  +멀뚱멀뚱하:형:1
   멀뚱멀뚱히:부:1
  -멀뚱하다:형:3
  +멀뚱하:형:3
   멀뚱히:부:4
   멀리:부:222
   멀리뛰기:명:10
   멀리멀리:부:2
  -멀리하다:동:14
  +멀리하:동:14
   멀미:명:4
  -멀쑥하다:형:4
  -멀어지다:동:64
  -멀쩡하다:형:23
  +멀쑥하:형:4
  +멀어지:동:64
  +멀쩡하:형:23
   멀쩡히:부:1
   멀찌감치:부:15
   멀찍이:부:8
  -멀찍하다:형:1
  +멀찍하:형:1
   멀칭:명:3
   멀티:명:2
   멀티미디어:명:6
   멀티미디어화:명:1
  -멈추다:동:161
  -멈추어지다:동:1
  +멈추:동:161
  +멈추어지:동:1
   멈칫:부:23
  -멈칫거리다:동:4
  -멈칫하다:동:18
  +멈칫거리:동:4
  +멈칫하:동:18
   멋:명:34
   멋대가리:명:1
   멋대로:부:11
  -멋모르다:동:2
  -멋스럽다:형:2
  -멋없다:형:1
  -멋있다:형:35
  +멋모르:동:2
  +멋스럽:형:2
  +멋없:형:1
  +멋있:형:35
   멋쟁이:명:10
  -멋지다:형:60
  -멋쩍다:형:12
  -멋쩍어지다:동:1
  -멋쩍어하다:동:2
  +멋지:형:60
  +멋쩍:형:12
  +멋쩍어지:동:1
  +멋쩍어하:동:2
   멍:명:8
   멍게:명:2
   멍군:명:1
  -멍들다:동:6
  +멍들:동:6
   멍멍:부:2
   멍멍탕:명:1
  -멍멍하다:형:2
  +멍멍하:형:2
   멍석:명:4
   멍에:명:1
   멍에:명:4
  @@ -16078,15 +16078,15 @@
   멍울멍울:부:1
   멍청:명:1
   멍청이:명:7
  -멍청하다:형:20
  -멍청해지다:동:2
  +멍청하:형:20
  +멍청해지:동:2
   멍청히:부:9
   멍텅구리:명:20
   멍하니:부:21
  -멍하다:형:12
  -멍해지다:동:5
  +멍하:형:12
  +멍해지:동:5
   멍히:부:2
  -멎다:동:33
  +멎:동:33
   메:대:1
   메가:의:3
   메가바이트:의:5
  @@ -16097,10 +16097,10 @@
   메기:명:4
   메뉴:명:37
   메뉴판:명:4
  -메다:동:29
  -메다:동:7
  -메다꽂다:동:1
  -메다꽂히다:동:1
  +메:동:29
  +메:동:7
  +메다꽂:동:1
  +메다꽂히:동:1
   메달:명:8
   메달리스트:명:1
   메디컬:명:1
  @@ -16108,11 +16108,11 @@
   메롱:감:1
   메리지:명:1
   메리트:명:2
  -메마르다:형:22
  +메마르:형:22
   메모:명:23
   메모리:명:9
   메모지:명:4
  -메모하다:동:5
  +메모하:동:5
   메밀:명:7
   메밀국수:명:1
   메밀껍질:명:1
  @@ -16124,19 +16124,19 @@
   메세나:명:3
   메수수:명:1
   메스:명:4
  -메스껍다:형:2
  -메슥거리다:동:1
  +메스껍:형:2
  +메슥거리:동:1
   메시아:명:12
   메시아니즘:명:1
   메시지:명:57
   메시포테이토:명:2
   메아리:명:8
  -메아리치다:동:2
  -메어붙이다:동:1
  -메어지다:동:1
  -메우다:동:52
  -메워지다:동:2
  -메이다:동:2
  +메아리치:동:2
  +메어붙이:동:1
  +메어지:동:1
  +메우:동:52
  +메워지:동:2
  +메이:동:2
   메이저:명:5
   메이커:명:14
   메이크업:명:22
  @@ -16150,7 +16150,7 @@
   메주콩:명:1
   메줏가루:명:1
   메질꾼:명:3
  -메치다:동:1
  +메치:동:1
   메카:명:1
   메커니즘:명:23
   메탄:명:4
  @@ -16158,10 +16158,10 @@
   메탄올:명:1
   메탈:명:4
   메토끼:명:3
  -멕이다:동:1
  -멕히다:동:1
  +멕이:동:1
  +멕히:동:1
   멘트:명:12
  -멘트하다:동:1
  +멘트하:동:1
   멜라닌:명:1
   멜랑콜리:명:1
   멜로:명:1
  @@ -16184,16 +16184,16 @@
   멱:명:1
   멱:명:22
   멱살:명:27
  -멱살잡이허다:동:1
  +멱살잡이허:동:1
   멱서리:명:1
   멱아지:명:1
   면:명:339
   면:명:34
   면:명:4
   면:명:48
  -면구스럽다:형:2
  +면구스럽:형:2
   면담:명:33
  -면담하다:동:6
  +면담하:동:6
   면도:명:2
   면도날:명:2
   면도사:명:1
  @@ -16205,11 +16205,11 @@
   면모:명:24
   면목:명:9
   면민:명:1
  -면밀하다:형:10
  +면밀하:형:10
   면밀히:부:10
   면바지:명:2
   면박:명:6
  -면박하다:동:1
  +면박하:동:1
   면발:명:1
   면복:명:1
   면봉:명:5
  @@ -16223,9 +16223,9 @@
   면세품:명:7
   면수:명:2
   면역:명:9
  -면역되다:동:2
  +면역되:동:2
   면역성:명:2
  -면역시키다:동:1
  +면역시키:동:1
   면역증:명:2
   면장:명:5
   면재:명:2
  @@ -16234,17 +16234,17 @@
   면전:명:1
   면접:명:16
   면접시험:명:1
  -면접하다:동:1
  +면접하:동:1
   면제:명:15
  -면제되다:동:4
  -면제받다:동:4
  +면제되:동:4
  +면제받:동:4
   면제자:명:1
  -면제하다:동:5
  +면제하:동:5
   면조:명:2
   면조권:명:2
   면조권론:명:1
   면조권설:명:1
  -면조받다:동:1
  +면조받:동:1
   면종복배:명:1
   면죄부:명:6
   면주:명:1
  @@ -16253,12 +16253,12 @@
   면찬:명:1
   면책:명:5
   면책금:명:1
  -면책되다:동:1
  +면책되:동:1
   면천:명:3
   면청:명:1
   면포:명:8
  -면하다:동:1
  -면하다:동:57
  +면하:동:1
  +면하:동:57
   면학:명:1
   면허:명:10
   면허증:명:7
  @@ -16266,34 +16266,34 @@
   면회:명:21
   면회객:명:1
   면회실:명:1
  -면회하다:동:3
  +면회하:동:3
   멸:명:1
   멸망:명:10
  -멸망당하다:동:1
  -멸망시키다:동:6
  -멸망하다:동:15
  +멸망당하:동:1
  +멸망시키:동:6
  +멸망하:동:15
   멸문지화:명:1
   멸사:명:1
  -멸사봉공하다:동:1
  +멸사봉공하:동:1
   멸성제:명:3
   멸시:명:6
  -멸시당하다:동:1
  -멸시받다:동:1
  -멸시하다:동:5
  +멸시당하:동:1
  +멸시받:동:1
  +멸시하:동:5
   멸실:명:1
  -멸실되다:동:1
  +멸실되:동:1
   멸종:명:5
  -멸종되다:동:1
  -멸종시키다:동:1
  -멸종하다:동:1
  +멸종되:동:1
  +멸종시키:동:1
  +멸종하:동:1
   멸치:명:35
   멸치조림:명:1
  -멸하다:동:5
  +멸하:동:5
   몃:수:1
   명:명:14
   명:명:3
   명:명:9
  -명:의:1,743
  +명:의:1743
   명감독:명:1
   명강의:명:1
   명건축:명:1
  @@ -16301,8 +16301,8 @@
   명곡:명:2
   명관:명:1
   명궁:명:1
  -명기되다:동:1
  -명기하다:동:2
  +명기되:동:1
  +명기하:동:2
   명단:명:28
   명당:명:24
   명도:명:2
  @@ -16310,23 +16310,23 @@
   명란:명:1
   명란젓:명:5
   명랑:명:2
  -명랑하다:형:21
  -명랑해지다:동:2
  +명랑하:형:21
  +명랑해지:동:2
   명령:명:93
  -명령되다:동:1
  +명령되:동:1
   명령서:명:1
   명령어:명:31
   명령제:명:1
  -명령하다:동:11
  -명료하다:형:17
  +명령하:동:11
  +명료하:형:17
   명료화:명:1
   명륜당:명:1
   명리:명:4
   명망가:명:1
   명맥:명:4
  -명멸하다:동:3
  -명명되다:동:5
  -명명하다:동:6
  +명멸하:동:3
  +명명되:동:5
  +명명하:동:6
   명목:명:36
   명문:명:16
   명문:명:2
  @@ -16338,9 +16338,9 @@
   명문장가:명:1
   명문화:명:1
   명물:명:7
  -명민하다:형:1
  -명백하다:형:50
  -명백해지다:동:3
  +명민하:형:1
  +명백하:형:50
  +명백해지:동:3
   명백히:부:33
   명복:명:4
   명부:명:1
  @@ -16357,10 +16357,10 @@
   명상기:명:2
   명상록:명:1
   명상적:관:1
  -명상하다:동:2
  +명상하:동:2
   명색:명:1
   명색:명:15
  -명석하다:형:4
  +명석하:형:4
   명석화:명:1
   명선수:명:1
   명성:명:35
  @@ -16375,22 +16375,22 @@
   명시:명:1
   명시:명:2
   명시도:명:1
  -명시되다:동:7
  +명시되:동:7
   명시적:명:1
  -명시하다:동:8
  +명시하:동:8
   명실:명:7
   명실공히:부:1
  -명실상부하다:형:6
  +명실상부하:형:6
   명심:명:1
  -명심시키다:동:1
  -명심하다:동:32
  +명심시키:동:1
  +명심하:동:32
   명아주:명:3
   명암:명:2
   명약:명:2
   명언:명:6
   명연설가:명:1
   명예:명:87
  -명예롭다:형:3
  +명예롭:형:3
   명예박사:명:1
   명예심:명:1
   명예욕:명:1
  @@ -16418,19 +16418,19 @@
   명주:명:18
   명주옷:명:1
   명중:명:2
  -명중시키다:동:8
  +명중시키:동:8
   명증성:명:2
   명진행자:명:1
   명차:명:1
   명찰:명:7
   명창:명:2
  -명철하다:형:1
  +명철하:형:1
   명치:명:7
   명치끝:명:4
   명칭:명:64
   명칼럼니스트:명:1
   명콤비:명:4
  -명쾌하다:형:20
  +명쾌하:형:20
   명쾌히:부:2
   명태:명:9
   명태잡이:명:2
  @@ -16440,13 +16440,13 @@
   명품:명:1
   명품관:명:1
   명품점:명:1
  -명하다:동:3
  +명하:동:3
   명함:명:16
  -명해지다:동:1
  +명해지:동:1
   명화:명:5
  -명확하다:형:49
  +명확하:형:49
   명확히:부:23
  -몇:관:1,024
  +몇:관:1024
   몇:수:53
   몇만:관:7
   몇몇:관:103
  @@ -16483,8 +16483,8 @@
   모권제:명:1
   모금:명:12
   모금:의:37
  -모금되다:동:1
  -모금하다:동:2
  +모금되:동:1
  +모금하:동:2
   모기:명:26
   모기구:명:1
   모기떼:명:1
  @@ -16493,9 +16493,9 @@
   모기장:명:5
   모기향:명:3
   모깃불:명:9
  -모나다:형:6
  +모나:형:6
   모내기:명:3
  -모내다:동:1
  +모내:동:1
   모냥:명:2
   모녀:명:13
   모노드라마:명:3
  @@ -16503,7 +16503,7 @@
   모노크리스털:명:1
   모뉴먼트:명:1
   모니터:명:69
  -모니터하다:동:1
  +모니터하:동:1
   모닝:명:4
   모닝커피:명:1
   모다:부:3
  @@ -16514,23 +16514,23 @@
   모더니즘론:명:1
   모더니티:명:3
   모던:명:2
  -모던하다:형:2
  +모던하:형:2
   모데라토:명:1
   모델:명:120
   모델료:명:3
   모델링:명:3
   모뎀:명:3
   모독:명:4
  -모독하다:동:3
  +모독하:동:3
   모두:명:307
  -모두:부:1,215
  +모두:부:1215
   모두모두:명:1
   모두모두:부:2
   모두스비벤디:명:4
  -모두어지다:동:1
  +모두어지:동:1
   모둠발:명:4
   모듈:명:3
  -모든:관:1,239
  +모든:관:1239
   모듬:명:3
   모듬살이:명:2
   모듬전:명:1
  @@ -16554,19 +16554,19 @@
   모랫벌:명:2
   모략:명:3
   모략중상:명:1
  -모략하다:동:1
  +모략하:동:1
   모럴:명:1
   모레:명:11
   모레:부:4
   모로:부:14
   모루:명:7
  -모르다:동:2,218
  +모르:동:2218
   모르쇠:명:1
   모르핀:명:1
   모름지기:부:9
   모리배:명:3
   모면:명:1
  -모면하다:동:9
  +모면하:동:9
   모멸:명:1
   모멸감:명:6
   모밀잣나무:명:1
  @@ -16574,10 +16574,10 @@
   모발:명:1
   모방:명:33
   모방도:명:1
  -모방되다:동:3
  +모방되:동:3
   모방자:명:2
   모방적:관:1
  -모방하다:동:17
  +모방하:동:17
   모범:명:38
   모범생:명:9
   모범수:명:1
  @@ -16588,62 +16588,62 @@
   모사:명:1
   모사론:명:3
   모사론적:명:1
  -모사하다:동:3
  +모사하:동:3
   모색:명:33
   모색기:명:1
  -모색되다:동:8
  -모색하다:동:57
  +모색되:동:8
  +모색하:동:57
   모서리:명:22
   모성:명:10
   모성애:명:3
   모세:명:2
  -모셔지다:동:6
  +모셔지:동:6
   모션:명:5
   모순:명:140
   모순덩어리:명:1
  -모순되다:동:23
  +모순되:동:23
   모순율:명:4
   모순적:관:1
   모순점:명:2
   모순투성이:명:2
  -모습:명:1,132
  +모습:명:1132
   모시:명:24
   모시개떡:명:1
  -모시다:동:167
  +모시:동:167
   모시옷:명:1
   모시조개:명:6
   모신:명:2
   모심기:명:1
   모싯대:명:1
  -모아들이다:동:1
  -모아쓰다:동:1
  -모아지다:동:23
  +모아들이:동:1
  +모아쓰:동:1
  +모아지:동:23
   모암:명:1
   모양:명:440
   모양:의:1
   모양:의:247
  -모양내다:동:1
  +모양내:동:1
   모양새:명:12
  -모여들다:동:30
  -모여지다:동:4
  +모여들:동:30
  +모여지:동:4
   모욕:명:7
   모욕감:명:4
  -모욕당하다:동:1
  +모욕당하:동:1
   모욕적:명:4
   모욕죄:명:3
  -모욕하다:동:2
  +모욕하:동:2
   모월:명:2
   모유:명:8
  -모으다:동:414
  +모으:동:414
   모음:명:8
   모음집:명:1
   모의:명:1
   모의:명:5
   모의고사:명:6
   모의실험:명:3
  -모의하다:동:3
  +모의하:동:3
   모이:명:1
  -모이다:동:352
  +모이:동:352
   모이통:명:3
   모일:명:3
   모임:명:248
  @@ -16651,13 +16651,13 @@
   모자:명:10
   모자:명:48
   모자간:명:1
  -모자라다:동:74
  +모자라:동:74
   모자람:명:3
   모자이크:명:1
   모자챙:명:1
   모작:명:3
   모작품:명:1
  -모작하다:동:1
  +모작하:동:1
   모전:명:1
   모정:명:4
   모조리:부:36
  @@ -16667,10 +16667,10 @@
   모주:명:2
   모직:명:1
   모직물:명:1
  -모질다:형:30
  +모질:형:30
   모집:명:33
   모집인:명:1
  -모집하다:동:20
  +모집하:동:20
   모쪼록:부:1
   모찌:명:2
   모차렐라:명:6
  @@ -16689,8 +16689,8 @@
   모티프:명:15
   모포:명:3
   모피:명:3
  -모함받다:동:1
  -모함하다:동:1
  +모함받:동:1
  +모함하:동:1
   모험:명:26
   모험가:명:1
   모험담:명:1
  @@ -16702,8 +16702,8 @@
   모형:명:37
   모형도:명:1
   모형실험:명:1
  -모호하다:형:23
  -모호해지다:동:2
  +모호하:형:23
  +모호해지:동:2
   모회사:명:4
   목:명:1
   목:명:187
  @@ -16716,9 +16716,9 @@
   목감기:명:1
   목걸이:명:14
   목격담:명:2
  -목격되다:동:9
  +목격되:동:9
   목격자:명:7
  -목격하다:동:27
  +목격하:동:27
   목공:명:9
   목공예품:명:1
   목공품:명:1
  @@ -16729,7 +16729,7 @@
   목도:명:1
   목도리:명:2
   목도릿감:명:1
  -목도하다:동:1
  +목도하:동:1
   목돈:명:14
   목동:명:2
   목둘레:명:4
  @@ -16737,16 +16737,16 @@
   목련꽃:명:3
   목련나무:명:1
   목례:명:4
  -목례하다:동:3
  +목례하:동:3
   목로:명:1
   목록:명:44
   목마:명:3
  -목마르다:형:9
  +목마르:형:9
   목마름:명:5
  -목말라하다:동:1
  -목매다:동:1
  -목매달다:동:2
  -목메다:동:4
  +목말라하:동:1
  +목매:동:1
  +목매달:동:2
  +목메:동:4
   목면:명:2
   목발:명:11
   목백일홍나무:명:1
  @@ -16765,7 +16765,7 @@
   목소리:명:425
   목수:명:25
   목숨:명:111
  -목쉬다:동:3
  +목쉬:동:3
   목심:명:2
   목양장:명:1
   목요:명:1
  @@ -16775,9 +16775,9 @@
   목욕물:명:1
   목욕장:명:1
   목욕재계:명:1
  -목욕재계하다:동:1
  +목욕재계하:동:1
   목욕탕:명:31
  -목욕하다:동:11
  +목욕하:동:11
   목울대:명:3
   목이버섯:명:4
   목장:명:1
  @@ -16791,7 +16791,7 @@
   목적의식:명:2
   목적의식적:명:2
   목적지:명:12
  -목적하다:동:1
  +목적하:동:1
   목적항:명:1
   목전:명:4
   목젖:명:10
  @@ -16820,7 +16820,7 @@
   목표선:명:1
   목표액:명:3
   목표점:명:2
  -목표하다:동:1
  +목표하:동:1
   목하:부:1
   목화:명:5
   목화솜:명:1
  @@ -16830,64 +16830,64 @@
   목회학:명:1
   몫:명:114
   몬순:명:1
  -몰개성화되다:동:1
  +몰개성화되:동:1
   몰골:명:20
  -몰다:동:99
  +몰:동:99
   몰도덕성:명:1
   몰두:명:4
  -몰두하다:동:46
  -몰라보다:동:13
  -몰라주다:동:3
  +몰두하:동:46
  +몰라보:동:13
  +몰라주:동:3
   몰락:명:20
   몰락기:명:1
  -몰락하다:동:15
  +몰락하:동:15
   몰래:부:93
   몰래바이트:명:1
  -몰려가다:동:14
  -몰려나오다:동:5
  -몰려다니다:동:7
  -몰려들다:동:39
  -몰려오다:동:29
  -몰리다:동:84
  +몰려가:동:14
  +몰려나오:동:5
  +몰려다니:동:7
  +몰려들:동:39
  +몰려오:동:29
  +몰리:동:84
   몰매:명:2
  -몰살하다:동:1
  +몰살하:동:1
   몰상식:명:1
  -몰상식하다:형:3
  +몰상식하:형:3
   몰수:명:4
  -몰수하다:동:2
  -몰아가다:동:13
  -몰아내다:동:18
  -몰아넣다:동:19
  -몰아닥치다:동:5
  -몰아붙여지다:동:1
  -몰아붙이다:동:14
  -몰아세우다:동:7
  -몰아쉬다:동:5
  -몰아오다:동:2
  -몰아주다:동:2
  -몰아치다:동:21
  +몰수하:동:2
  +몰아가:동:13
  +몰아내:동:18
  +몰아넣:동:19
  +몰아닥치:동:5
  +몰아붙여지:동:1
  +몰아붙이:동:14
  +몰아세우:동:7
  +몰아쉬:동:5
  +몰아오:동:2
  +몰아주:동:2
  +몰아치:동:21
   몰역사적:관:1
   몰염치:명:5
  -몰염치하다:형:6
  +몰염치하:형:6
   몰이꾼:명:2
   몰이식:명:1
   몰이해:명:2
  -몰이해하다:형:1
  +몰이해하:형:1
   몰입:명:2
  -몰입되다:동:2
  -몰입시키다:동:5
  -몰입하다:동:11
  -몰지각하다:형:3
  -몰키다:동:1
  +몰입되:동:2
  +몰입시키:동:5
  +몰입하:동:11
  +몰지각하:형:3
  +몰키:동:1
   몰표:명:2
  -몰풍스럽다:형:1
  -몸:명:1,147
  +몰풍스럽:형:1
  +몸:명:1147
   몸가짐:명:14
   몸값:명:8
   몸결:명:1
   몸놀림:명:10
   몸단장:명:3
  -몸담다:동:21
  +몸담:동:21
   몸돌:명:1
   몸동작:명:1
   몸뚱어리:명:1
  @@ -16897,23 +16897,23 @@
   몸무게:명:23
   몸보신:명:1
   몸부림:명:13
  -몸부림치다:동:13
  +몸부림치:동:13
   몸빛:명:1
   몸뻬:명:4
   몸살:명:19
   몸살감기:명:1
   몸살기:명:1
   몸서리:명:6
  -몸서리나다:동:1
  -몸서리치다:동:3
  +몸서리나:동:1
  +몸서리치:동:3
   몸성히:부:1
   몸소:부:9
   몸속:명:16
   몸싸움:명:4
  -몸져눕다:동:3
  +몸져눕:동:3
   몸조리:명:3
   몸조심:명:1
  -몸조심하다:동:5
  +몸조심하:동:5
   몸종:명:8
   몸집:명:25
   몸짓:명:55
  @@ -16930,28 +16930,28 @@
   못:명:53
   못:부:931
   못가:명:7
  -못나다:형:19
  +못나:형:19
   못난이:명:3
   못내:부:11
   못다:부:12
  -못되다:형:51
  -못마땅하다:형:19
  -못마땅해하다:동:5
  +못되:형:51
  +못마땅하:형:19
  +못마땅해하:동:5
   못마땅히:부:2
  -못살다:동:7
  -못생기다:형:13
  -못쓰다:동:13
  +못살:동:7
  +못생기:형:13
  +못쓰:동:13
   못자리:명:1
  -못잖다:형:4
  -못지않다:형:98
  +못잖:형:4
  +못지않:형:98
   못질:명:1
  -못하다:동:420
  -못하다:보:2,249
  -못하다:형:50
  -못허다:동:5
  +못하:동:420
  +못하:보:2249
  +못하:형:50
  +못허:동:5
   몽골리즘:명:1
  -몽글몽글하다:형:2
  -몽글하다:형:1
  +몽글몽글하:형:2
  +몽글하:형:1
   몽달귀신:명:1
   몽당비:명:1
   몽당연필:명:8
  @@ -16959,11 +16959,11 @@
   몽둥이질:명:1
   몽둥이찜질:명:2
   몽땅:부:28
  -몽롱하다:형:4
  -몽롱해지다:동:1
  +몽롱하:형:4
  +몽롱해지:동:1
   몽매:명:1
   몽매주의:명:1
  -몽매하다:형:2
  +몽매하:형:2
   몽상:명:6
   몽상가:명:1
   몽상적:명:1
  @@ -16979,29 +16979,29 @@
   묘:명:9
   묘기:명:4
   묘기성:명:1
  -묘망하다:형:1
  +묘망하:형:1
   묘목:명:17
   묘미:명:10
   묘법:명:1
   묘비명:명:1
   묘사:명:37
  -묘사되다:동:17
  -묘사하다:동:53
  +묘사되:동:17
  +묘사하:동:53
   묘소:명:15
   묘수:명:2
   묘안:명:2
   묘약:명:1
   묘역:명:6
  -묘연하다:형:1
  +묘연하:형:1
   묘유:명:3
   묘자리:명:1
   묘제:명:2
   묘지:명:6
   묘책:명:3
   묘처:명:1
  -묘출하다:동:1
  -묘파하다:동:2
  -묘하다:형:40
  +묘출하:동:1
  +묘파하:동:2
  +묘하:형:40
   묘합:명:1
   무:대:1
   무:명:10
  @@ -17009,36 +17009,36 @@
   무:명:54
   무:명:9
   무:의:15
  -무가치하다:형:1
  +무가치하:형:1
   무감각:명:2
  -무감각하다:형:1
  -무감각해지다:동:2
  +무감각하:형:1
  +무감각해지:동:2
   무개성:명:1
   무개성적:명:1
   무개차:명:2
  -무거워지다:동:10
  -무겁다:형:136
  +무거워지:동:10
  +무겁:형:136
   무게:명:88
   무게감:명:2
   무계획:명:2
   무계획성:명:1
   무고:명:1
  -무고하다:형:1
  -무고하다:형:8
  +무고하:형:1
  +무고하:형:8
   무공해:명:13
   무관:명:1
   무관:명:1
  -무관계하다:형:1
  +무관계하:형:1
   무관심:명:23
  -무관심하다:형:15
  -무관하다:형:53
  +무관심하:형:15
  +무관하:형:53
   무구:명:2
  -무구하다:형:1
  +무구하:형:1
   무국적:명:1
   무궁:명:1
  -무궁무궁하다:형:2
  -무궁무진하다:형:7
  -무궁하다:형:16
  +무궁무궁하:형:2
  +무궁무진하:형:7
  +무궁하:형:16
   무궁화:명:27
   무권리:명:1
   무규정적:명:1
  @@ -17049,9 +17049,9 @@
   무기고:명:2
   무기력:명:9
   무기력증:명:4
  -무기력하다:형:10
  -무기력해지다:동:1
  -무기력화되다:동:1
  +무기력하:형:10
  +무기력해지:동:1
  +무기력화되:동:1
   무기명:명:5
   무기물:명:30
   무기상:명:1
  @@ -17060,14 +17060,14 @@
   무기한:명:3
   무기형:명:1
   무기화:명:4
  -무기화되다:동:1
  +무기화되:동:1
   무김치:명:1
   무난:명:2
  -무난하다:형:10
  +무난하:형:10
   무난히:부:6
   무남독녀:명:2
  -무너뜨리다:동:21
  -무너지다:동:124
  +무너뜨리:동:21
  +무너지:동:124
   무념:명:1
   무노동:명:12
   무논:명:1
  @@ -17075,9 +17075,9 @@
   무뇌아:명:1
   무능:명:9
   무능력자:명:3
  -무능력하다:형:3
  +무능력하:형:3
   무능인:명:1
  -무능하다:형:9
  +무능하:형:9
   무늬:명:62
   무단:명:15
   무단가출:명:1
  @@ -17085,30 +17085,30 @@
   무당:명:14
   무대:명:297
   무대극:명:1
  -무대하다:형:1
  +무대하:형:1
   무대화:명:2
  -무대화되다:동:2
  -무대화하다:동:3
  +무대화되:동:2
  +무대화하:동:3
   무더기:명:29
   무더위:명:19
  -무던하다:형:2
  +무던하:형:2
   무던히:부:6
   무덤:명:63
  -무덤덤하다:형:3
  -무덥다:형:17
  -무뎌지다:동:5
  +무덤덤하:형:3
  +무덥:형:17
  +무뎌지:동:5
   무도:명:2
  -무도하다:형:2
  +무도하:형:2
   무도회:명:11
   무도회장:명:1
   무동작:명:2
   무두:명:1
   무드:명:6
   무등:명:1
  -무디다:형:2
  -무뚝뚝하다:형:13
  -무뚝하다:형:1
  -무량하다:형:2
  +무디:형:2
  +무뚝뚝하:형:13
  +무뚝하:형:1
  +무량하:형:2
   무럭무럭:부:7
   무려:부:67
   무력:명:1
  @@ -17116,67 +17116,67 @@
   무력감:명:10
   무력부:명:1
   무력시위:명:12
  -무력하다:형:9
  -무력해지다:동:2
  +무력하:형:9
  +무력해지:동:2
   무력행사:명:1
   무력화:명:4
  -무력화시키다:동:3
  -무력화하다:동:2
  +무력화시키:동:3
  +무력화하:동:2
   무렵:의:174
   무례:명:6
  -무례하다:형:15
  +무례하:형:15
   무료:명:2
   무료:명:54
   무료입장:명:1
  -무료하다:형:13
  -무료해지다:동:2
  -무르녹다:동:1
  -무르다:동:1
  -무르다:동:2
  -무르다:형:3
  -무르익다:동:16
  -무르춤하다:동:1
  -무르춤해지다:동:3
  +무료하:형:13
  +무료해지:동:2
  +무르녹:동:1
  +무르:동:1
  +무르:동:2
  +무르:형:3
  +무르익:동:16
  +무르춤하:동:1
  +무르춤해지:동:3
   무르팍:명:5
   무른모:명:1
  -무릅쓰다:동:18
  +무릅쓰:동:18
   무릇:부:6
   무릎:명:138
  -무릎맞춤하다:동:1
  +무릎맞춤하:동:1
   무리:명:58
   무리:명:72
   무리수:명:2
  -무리하다:동:6
  -무리하다:형:38
  +무리하:동:6
  +무리하:형:38
   무마:명:2
  -무마하다:동:12
  -무망하다:형:1
  +무마하:동:12
  +무망하:형:1
   무면허:명:1
   무명:명:12
   무명:명:25
   무명:명:6
   무명옷:명:1
  -무모하다:형:27
  +무모하:형:27
   무문화촌:명:3
   무미:명:1
   무미건조:명:1
  -무미건조하다:형:10
  -무미건조해지다:동:1
  -무미하다:형:1
  +무미건조하:형:10
  +무미건조해지:동:1
  +무미하:형:1
   무반동총:명:1
   무방:명:4
   무방비:명:8
  -무방하다:형:9
  +무방하:형:9
   무방향:명:1
   무배란성:명:1
   무법:명:1
   무법자:명:1
   무변:명:1
  -무변하다:형:1
  +무변하:형:1
   무병:명:2
  -무병하다:형:1
  +무병하:형:1
   무보:명:2
  -무분별하다:형:22
  +무분별하:형:22
   무비:명:2
   무비자:명:1
   무비판적:명:4
  @@ -17187,40 +17187,40 @@
   무사도:명:2
   무사통과:명:1
   무사풍:명:1
  -무사하다:형:15
  +무사하:형:15
   무사히:부:27
   무산:명:2
   무산:명:4
  -무산되다:동:11
  -무산시키다:동:1
  -무삼하다:동:1
  +무산되:동:11
  +무산시키:동:1
  +무삼하:동:1
   무상:명:1
   무상:명:1
   무상:명:3
   무상:명:7
  -무상하다:형:12
  +무상하:형:12
   무색무취:명:1
  -무색하다:형:10
  +무색하:형:10
   무생물:명:2
   무서리:명:2
   무서움:명:13
  -무서워지다:동:4
  -무서워하다:동:14
  +무서워지:동:4
  +무서워하:동:14
   무선:명:14
   무선국:명:1
  -무섭다:형:214
  +무섭:형:214
   무성:명:1
   무성:명:1
   무성격적:명:1
   무성의:명:2
  -무성의하다:형:3
  -무성하다:형:31
  -무성해지다:동:1
  +무성의하:형:3
  +무성하:형:31
  +무성해지:동:1
   무성히:부:2
   무소득:명:2
   무소불능:명:2
   무소불위:명:5
  -무소불위하다:형:1
  +무소불위하:형:1
   무소속:명:26
   무소식:명:2
   무소신:명:1
  @@ -17229,7 +17229,7 @@
   무속:명:8
   무속적:관:1
   무쇠:명:5
  -무수하다:형:23
  +무수하:형:23
   무수히:부:17
   무순:명:5
   무술:명:19
  @@ -17241,26 +17241,26 @@
   무시:명:7
   무시간:명:1
   무시기:대:1
  -무시당하다:동:4
  -무시되다:동:14
  +무시당하:동:4
  +무시되:동:14
   무시로:부:3
  -무시무시하다:형:13
  -무시하다:동:106
  +무시무시하:형:13
  +무시하:동:106
   무시험:명:11
   무식:명:1
   무식자:명:1
  -무식하다:형:11
  +무식하:형:11
   무신:관:5
   무신:명:10
   무신경:명:1
  -무신경해지다:동:1
  +무신경해지:동:1
   무신론자:명:3
   무실점:명:3
   무심:명:4
   무심결:명:3
   무심지도극:명:2
   무심코:부:22
  -무심하다:형:27
  +무심하:형:27
   무심히:부:17
   무아:명:4
   무아경:명:1
  @@ -17268,10 +17268,10 @@
   무아지경:명:2
   무악도:명:1
   무안:명:3
  -무안당하다:동:1
  -무안하다:형:10
  -무안해지다:동:3
  -무안해하다:동:1
  +무안당하:동:1
  +무안하:형:10
  +무안해지:동:3
  +무안해하:동:1
   무애:명:3
   무애박:명:3
   무양식:명:1
  @@ -17280,10 +17280,10 @@
   무언:명:6
   무언극:명:1
   무언중:명:1
  -무엄하다:형:2
  -무엇:대:1,249
  +무엄하:형:2
  +무엇:대:1249
   무엇무엇:대:5
  -무엇하다:형:3
  +무엇하:형:3
   무역:명:191
   무역국:명:1
   무역량:명:3
  @@ -17320,20 +17320,20 @@
   무용인:명:3
   무용제:명:2
   무용지물:명:5
  -무용하다:동:1
  -무용하다:형:2
  +무용하:동:1
  +무용하:형:2
   무용학:명:2
   무용학과:명:1
  -무원칙하다:형:3
  +무원칙하:형:3
   무위:명:11
  -무위롭다:형:1
  +무위롭:형:1
   무위이화:명:3
   무위자연:명:2
   무응답:명:1
   무의미:명:1
   무의미성:명:1
  -무의미하다:형:28
  -무의미해지다:동:4
  +무의미하:형:28
  +무의미해지:동:4
   무의미화:명:1
   무의식:명:101
   무의식적:관:2
  @@ -17344,7 +17344,7 @@
   무의탁:명:5
   무이론적:관:1
   무이자:명:6
  -무익하다:형:1
  +무익하:형:1
   무인:명:17
   무인:명:6
   무인도:명:8
  @@ -17359,17 +17359,17 @@
   무자격:명:2
   무자료:명:2
   무자비:명:2
  -무자비하다:형:14
  +무자비하:형:14
   무작위:명:2
   무작위적:명:1
   무작정:명:36
   무장:명:3
   무장:명:40
  -무장되다:동:4
  +무장되:동:4
   무장력:명:1
   무장봉기:명:1
  -무장시키다:동:1
  -무장하다:동:15
  +무장시키:동:1
  +무장하:동:15
   무장화:명:1
   무저항:명:2
   무적:명:1
  @@ -17378,14 +17378,14 @@
   무전:명:1
   무전기:명:10
   무절제:명:1
  -무절제하다:형:2
  +무절제하:형:2
   무접촉:명:1
   무정부:명:1
   무정자:명:1
  -무정하다:형:4
  +무정하:형:4
   무정형:명:2
   무정형성:명:1
  -무정형하다:형:1
  +무정형하:형:1
   무제한:명:5
   무제한급:명:2
   무제한적:명:1
  @@ -17403,41 +17403,41 @@
   무지:명:10
   무지:부:8
   무지개:명:14
  -무지근하다:형:1
  +무지근하:형:1
   무지렁이:명:1
  -무지르다:동:1
  -무지막지하다:형:2
  +무지르:동:1
  +무지막지하:형:2
   무지무지:부:1
  -무지무지하다:형:3
  -무지스럽다:형:1
  +무지무지하:형:3
  +무지스럽:형:1
   무지외반증:명:3
  -무지하다:형:11
  -무지하다:형:3
  +무지하:형:11
  +무지하:형:3
   무직:명:18
   무직자:명:1
   무진:부:8
   무진장:명:2
   무질서:명:10
  -무질서하다:형:3
  -무질서해지다:동:1
  -무찌르다:동:9
  +무질서하:형:3
  +무질서해지:동:1
  +무찌르:동:9
   무차별:명:8
   무차별적:관:2
   무차별적:명:7
  -무차별하다:형:1
  -무참하다:형:2
  +무차별하:형:1
  +무참하:형:2
   무참히:부:8
   무채:명:1
   무책:명:2
   무책임:명:2
  -무책임하다:형:16
  +무책임하:형:16
   무척:부:196
   무척추동물:명:1
   무천:명:1
   무청:명:1
   무취:명:5
   무치:명:1
  -무치다:동:17
  +무치:동:17
   무침:명:1
   무크지:명:1
   무타:명:4
  @@ -17446,7 +17446,7 @@
   무투표:명:2
   무패:명:4
   무표정:명:1
  -무표정하다:형:10
  +무표정하:형:10
   무풍:명:1
   무한:명:18
   무한궤도적:명:1
  @@ -17454,10 +17454,10 @@
   무한량:명:1
   무한성:명:3
   무한정:명:7
  -무한정하다:형:1
  -무한하다:형:47
  +무한정하:형:1
  +무한하:형:47
   무한히:부:9
  -무해하다:형:3
  +무해하:형:3
   무허가:명:1
   무혈:명:1
   무혐의:명:7
  @@ -17467,32 +17467,32 @@
   무호흡증:명:5
   무화:명:1
   무화과:명:1
  -무화되다:동:1
  -무화시키다:동:1
  -무화하다:동:1
  +무화되:동:1
  +무화시키:동:1
  +무화하:동:1
   무효:명:37
   무효론:명:1
   무효화:명:2
  -무효화하다:동:1
  +무효화하:동:1
   무휴:명:1
   무희:명:2
   묵:명:3
   묵가:명:1
   묵계:명:3
  -묵과하다:동:9
  +묵과하:동:9
   묵념:명:4
  -묵념하다:동:1
  -묵다:동:21
  -묵다:동:30
  -묵다:동:6
  +묵념하:동:1
  +묵:동:21
  +묵:동:30
  +묵:동:6
   묵묵부답:명:7
   묵묵히:부:25
   묵비권:명:6
  -묵비하다:동:1
  +묵비하:동:1
   묵사발:명:3
  -묵살당하다:동:1
  -묵살되다:동:1
  -묵살하다:동:8
  +묵살당하:동:1
  +묵살되:동:1
  +묵살하:동:8
   묵상:명:3
   묵숨:명:1
   묵시론적:명:1
  @@ -17500,22 +17500,22 @@
   묵시적:명:3
   묵언:명:3
   묵은밥:명:1
  -묵이다:동:1
  +묵이:동:1
   묵인:명:9
  -묵인되다:동:1
  -묵인하다:동:15
  +묵인되:동:1
  +묵인하:동:15
   묵적:명:1
   묵주:명:1
  -묵중하다:형:1
  -묵직하다:형:13
  +묵중하:형:1
  +묵직하:형:13
   묵청색:명:1
   묵향:명:1
   묵화:명:1
  -묵히다:동:4
  -묶다:동:78
  -묶여지다:동:2
  +묵히:동:4
  +묶:동:78
  +묶여지:동:2
   묶음:명:8
  -묶이다:동:38
  +묶이:동:38
   문:명:1
   문:명:1
   문:명:1
  @@ -17541,27 +17541,27 @@
   문권:명:3
   문궤:명:1
   문기둥:명:1
  -문다:동:1
  +문:동:1
   문단:명:1
   문단:명:12
   문단:명:16
   문단속:명:1
   문답:명:3
   문답식:명:1
  -문대다:동:1
  +문대:동:1
   문덕:명:1
   문둥병:명:2
   문둥병자:명:1
   문둥이:명:6
  -문드러지다:동:2
  +문드러지:동:2
   문득:부:134
   문득문득:부:2
   문디이:명:1
   문뜩문뜩:부:1
   문란:명:2
  -문란스러워지다:동:1
  -문란하다:형:4
  -문란해지다:동:3
  +문란스러워지:동:1
  +문란하:형:4
  +문란해지:동:3
   문리:명:1
   문리대:명:1
   문맥:명:22
  @@ -17577,9 +17577,9 @@
   문명인:명:2
   문명적:관:1
   문명적:명:3
  -문명하다:형:1
  -문명화되다:동:1
  -문명화시키다:동:1
  +문명하:형:1
  +문명화되:동:1
  +문명화시키:동:1
   문묘:명:2
   문무:명:10
   문무대:명:1
  @@ -17603,14 +17603,14 @@
   문상객:명:3
   문서:명:65
   문서함:명:1
  -문서화하다:동:1
  +문서화하:동:1
   문설주:명:1
   문신:명:3
   문신:명:4
   문안:명:5
   문안:명:6
   문안가:명:1
  -문안드리다:동:4
  +문안드리:동:4
   문양:명:20
   문어:명:1
   문어발식:명:5
  @@ -17623,7 +17623,7 @@
   문외한:명:11
   문우:명:1
   문의:명:16
  -문의하다:동:5
  +문의하:동:5
   문인:명:14
   문인화:명:1
   문자:명:1
  @@ -17631,8 +17631,8 @@
   문자적:관:10
   문자적:명:1
   문자판:명:8
  -문자화되다:동:1
  -문자화하다:동:1
  +문자화되:동:1
  +문자화하:동:1
   문장:명:1
   문장:명:62
   문장가:명:4
  @@ -17640,14 +17640,14 @@
   문재:명:1
   문전:명:3
   문전성시:명:1
  -문제:명:2,370
  +문제:명:2370
   문제극:명:3
  -문제되다:동:24
  +문제되:동:24
   문제성:명:2
  -문제시되다:동:5
  -문제시하다:동:1
  +문제시되:동:5
  +문제시하:동:1
   문제아:명:6
  -문제없다:형:9
  +문제없:형:9
   문제없이:부:4
   문제의식:명:21
   문제작:명:13
  @@ -17658,12 +17658,12 @@
   문제지:명:8
   문제집:명:8
   문제투성이:명:1
  -문제화하다:동:1
  +문제화하:동:1
   문젯거리:명:3
   문주:명:1
   문중:명:8
   문지기:명:10
  -문지르다:동:42
  +문지르:동:42
   문지방:명:2
   문직:명:1
   문직물:명:1
  @@ -17674,9 +17674,9 @@
   문채:명:1
   문책:명:25
   문책론:명:3
  -문책하다:동:5
  +문책하:동:5
   문체:명:6
  -문초하다:동:1
  +문초하:동:1
   문치주의:명:2
   문턱:명:23
   문토불이:명:1
  @@ -17709,11 +17709,11 @@
   문학지:명:2
   문학청년:명:1
   문학파:명:1
  -문학하다:동:1
  +문학하:동:1
   문항:명:8
   문헌:명:30
   문호:명:6
  -문화:명:1,790
  +문화:명:1790
   문화가:명:4
   문화계:명:6
   문화관:명:4
  @@ -17744,18 +17744,18 @@
   문화주의:명:1
   문화촌:명:3
   문화화:명:4
  -문화화하다:동:1
  -묻다:동:62
  -묻다:동:655
  -묻다:동:94
  -묻어가다:동:1
  -묻어나다:동:10
  -묻어오다:동:1
  -묻혀지다:동:6
  -묻히다:동:37
  -묻히다:동:67
  +문화화하:동:1
  +묻:동:62
  +묻:동:655
  +묻:동:94
  +묻어가:동:1
  +묻어나:동:10
  +묻어오:동:1
  +묻혀지:동:6
  +묻히:동:37
  +묻히:동:67
   물:명:1
  -물:명:1,129
  +물:명:1129
   물:명:14
   물:명:2
   물가:명:110
  @@ -17764,7 +17764,7 @@
   물가국:명:1
   물갈이:명:6
   물갈이론:명:1
  -물갈이하다:동:4
  +물갈이하:동:4
   물감:명:24
   물감투성이:명:1
   물개:명:5
  @@ -17775,10 +17775,10 @@
   물건:명:381
   물건짝:명:1
   물걸레:명:2
  -물격화하다:동:1
  +물격화하:동:1
   물결:명:63
   물결무늬:명:1
  -물결치다:동:5
  +물결치:동:5
   물겹저고리:명:1
   물경:부:1
   물고:명:2
  @@ -17787,10 +17787,10 @@
   물고기자리:명:1
   물고기좌:명:1
   물고문:명:2
  -물고문하다:동:1
  +물고문하:동:1
   물구나무:명:1
   물구나무서기:명:12
  -물구하다:동:1
  +물구하:동:1
   물국수:명:2
   물귀신:명:7
   물그릇:명:4
  @@ -17803,44 +17803,44 @@
   물난리:명:5
   물놀이:명:6
   물누룽지:명:3
  -물다:동:108
  -물다:동:12
  +물:동:108
  +물:동:12
   물동량:명:1
   물동이:명:5
   물돼지:명:3
  -물들다:동:27
  -물들어지다:동:1
  -물들여지다:동:3
  -물들이다:동:7
  +물들:동:27
  +물들어지:동:1
  +물들여지:동:3
  +물들이:동:7
   물때:명:1
   물떼새:명:1
   물량:명:31
  -물러가다:동:24
  -물러나다:동:56
  -물러서다:동:25
  -물러앉다:동:3
  -물러지다:동:6
  -물렁물렁하다:형:1
  +물러가:동:24
  +물러나:동:56
  +물러서:동:25
  +물러앉:동:3
  +물러지:동:6
  +물렁물렁하:형:1
   물렁뼈:명:2
   물레방아:명:2
  -물려두다:동:1
  -물려받다:동:14
  -물려주다:동:20
  +물려두:동:1
  +물려받:동:14
  +물려주:동:20
   물론:명:159
   물론:부:894
   물류:명:2
   물류비:명:1
   물류비용:명:1
   물리:명:24
  -물리다:동:10
  -물리다:동:11
  -물리다:동:12
  -물리다:동:13
  -물리다:동:4
  +물리:동:10
  +물리:동:11
  +물리:동:12
  +물리:동:13
  +물리:동:4
   물리력:명:3
   물리적:관:28
   물리적:명:14
  -물리치다:동:39
  +물리치:동:39
   물리학:명:59
   물리학계:명:1
   물리학과:명:4
  @@ -17850,11 +17850,11 @@
   물마루:명:1
   물맛:명:4
   물망:명:2
  -물먹다:동:6
  -물먹이다:동:1
  +물먹:동:6
  +물먹이:동:1
   물물:명:3
   물물이:부:1
  -물밀다:동:3
  +물밀:동:3
   물밑:명:6
   물바가지:명:1
   물바다:명:4
  @@ -17884,9 +17884,9 @@
   물상객주:명:2
   물새:명:6
   물색:명:3
  -물색하다:동:4
  -물샐틈없다:형:3
  -물설다:동:1
  +물색하:동:4
  +물샐틈없:형:3
  +물설:동:1
   물성:명:2
   물세탁:명:1
   물소:명:1
  @@ -17899,25 +17899,25 @@
   물신적:관:4
   물신주의:명:6
   물신화:명:2
  -물실하다:동:1
  +물실하:동:1
   물심양면:명:3
   물싸움:명:1
   물씬:부:4
  -물씬거리다:동:1
  +물씬거리:동:1
   물씬물씬:부:1
  -물씬하다:형:1
  +물씬하:형:1
   물아일체:명:1
   물안개:명:2
   물안경:명:4
   물약:명:1
  -물어내다:동:2
  -물어뜯기다:동:2
  -물어뜯다:동:7
  -물어보다:동:154
  +물어내:동:2
  +물어뜯기:동:2
  +물어뜯:동:7
  +물어보:동:154
   물억새:명:1
   물역:명:1
   물엿:명:13
  -물오르다:동:1
  +물오르:동:1
   물오리:명:1
   물오리나무:명:2
   물오징어:명:3
  @@ -17925,14 +17925,14 @@
   물웅덩이:명:1
   물윗수염박쥐:명:3
   물음:명:72
  -물음당하다:동:1
  +물음당하:동:1
   물음표:명:4
   물음표투성이:명:1
   물의:명:34
   물자:명:24
   물자체:명:2
   물장난:명:8
  -물장사하다:동:1
  +물장사하:동:1
   물적:관:19
   물적:명:2
   물정:명:3
  @@ -17953,13 +17953,13 @@
   물질주의:명:2
   물질주의적:관:1
   물질학:명:1
  -물질화되다:동:5
  +물질화되:동:5
   물집:명:7
   물체:명:156
   물총:명:3
   물총새:명:1
  -물커덩하다:형:1
  -물컹거리다:동:1
  +물커덩하:형:1
  +물컹거리:동:1
   물코:명:2
   물큰:부:1
   물타기:명:3
  @@ -17972,53 +17972,53 @@
   물품:명:23
   물형:명:2
   물화:명:6
  -물화되다:동:6
  -물화시키다:동:1
  +물화되:동:6
  +물화시키:동:1
   물화적:관:1
  -묽다:형:29
  -묽어지다:동:1
  +묽:형:29
  +묽어지:동:1
   뭇:관:7
   뭇국:명:2
   뭇매:명:1
   뭇별:명:1
   뭇사람:명:7
   뭇짐승:명:1
  -뭉개다:동:3
  -뭉개다:동:5
  -뭉개지다:동:4
  -뭉거지다:동:1
  +뭉개:동:3
  +뭉개:동:5
  +뭉개지:동:4
  +뭉거지:동:1
   뭉게뭉게:부:1
  -뭉그적거리다:동:1
  +뭉그적거리:동:1
   뭉그적뭉그적:부:1
  -뭉근하다:형:2
  +뭉근하:형:2
   뭉글뭉글:부:2
   뭉긋뭉긋:부:1
  -뭉떵하다:형:1
  -뭉뚝해지다:동:1
  -뭉뚱그리다:동:4
  +뭉떵하:형:1
  +뭉뚝해지:동:1
  +뭉뚱그리:동:4
   뭉실뭉실:부:1
  -뭉쳐지다:동:5
  +뭉쳐지:동:5
   뭉치:명:13
  -뭉치다:동:43
  +뭉치:동:43
   뭉칫돈:명:1
   뭉클뭉클:부:1
  -뭉클하다:형:10
  -뭉클해지다:동:3
  +뭉클하:형:10
  +뭉클해지:동:3
   뭉텅:부:1
   뭉텅뭉텅:부:1
   뭉텅이:명:1
  -뭉툭하다:형:2
  -뭉툭해지다:동:1
  +뭉툭하:형:2
  +뭉툭해지:동:1
   뭍:명:6
   뭍사람:명:1
   뭐:감:573
  -뭐:대:1,420
  +뭐:대:1420
   뭐뭐:대:8
  -뭐하다:형:3
  +뭐하:형:3
   뭘:감:17
   뭣:대:28
  -뭣하다:형:2
  -뭣해하다:동:1
  +뭣하:형:2
  +뭣해하:동:1
   뮤지션:명:2
   뮤지엄:명:1
   뮤지컬:명:13
  @@ -18049,20 +18049,20 @@
   미꾸라지:명:13
   미꾸리:명:5
   미꾸릿과:명:4
  -미끄러지다:동:31
  +미끄러지:동:31
   미끄럼:명:6
   미끄럼틀:명:11
   미끄럼판:명:1
  -미끄럽다:형:10
  +미끄럽:형:10
   미끈:명:1
  -미끈거리다:동:2
  +미끈거리:동:2
   미끈덩:부:1
  -미끈둥하다:형:1
  -미끈미끈하다:형:1
  +미끈둥하:형:1
  +미끈미끈하:형:1
   미끈액:명:2
  -미끈하다:형:6
  -미끌리다:동:1
  -미끌어지다:동:1
  +미끈하:형:6
  +미끌리:동:1
  +미끌어지:동:1
   미끼:명:19
   미나리:명:13
   미나리꽝:명:3
  @@ -18077,18 +18077,18 @@
   미녀:명:7
   미니:명:26
   미니멀:명:1
  -미니멀하다:형:1
  +미니멀하:형:1
   미니스커트:명:6
   미니컴퓨터:명:9
   미닫이:명:3
   미닫이문:명:8
   미달:명:17
  -미달되다:동:5
  -미달하다:동:9
  +미달되:동:5
  +미달하:동:9
   미담:명:6
   미대:명:4
   미덕:명:28
  -미덥다:형:4
  +미덥:형:4
   미동:명:1
   미드컨트리:명:1
   미드필더:명:9
  @@ -18110,17 +18110,17 @@
   미래학적:관:1
   미래형:명:3
   미량:명:2
  -미려하다:형:2
  +미려하:형:2
   미력:명:1
   미련:명:10
  -미련스럽다:형:1
  -미련하다:형:3
  +미련스럽:형:1
  +미련하:형:3
   미로:명:6
   미로형:명:1
   미루나무:명:4
  -미루다:동:101
  -미루어지다:동:3
  -미뤄지다:동:2
  +미루:동:101
  +미루어지:동:3
  +미뤄지:동:2
   미르꾸:명:2
   미륵:명:3
   미륵당:명:1
  @@ -18137,11 +18137,11 @@
   미모:명:26
   미몽:명:1
   미묘:명:1
  -미묘하다:형:27
  +미묘하:형:27
   미묘히:부:1
   미문:명:1
   미물:명:4
  -미미하다:형:8
  +미미하:형:8
   미백:명:1
   미복:명:1
   미복학:명:1
  @@ -18151,11 +18151,11 @@
   미분기:명:1
   미분양:명:1
   미분화:명:1
  -미분화되다:동:5
  +미분화되:동:5
   미비:명:4
  -미비되다:형:1
  +미비되:형:1
   미비점:명:2
  -미비하다:형:2
  +미비하:형:2
   미사:명:9
   미사여구:명:1
   미사일:명:41
  @@ -18172,12 +18172,12 @@
   미성숙:명:1
   미성숙론:명:1
   미성숙성:명:1
  -미성숙하다:형:2
  +미성숙하:형:2
   미세:명:6
  -미세하다:형:9
  +미세하:형:9
   미션:명:3
   미소:명:164
  -미소하다:형:1
  +미소하:형:1
   미수:명:1
   미수:명:2
   미수:명:6
  @@ -18186,7 +18186,7 @@
   미숙성:명:5
   미숙성론:명:1
   미숙아:명:2
  -미숙하다:형:15
  +미숙하:형:15
   미술:명:142
   미술가:명:7
   미술가론:명:1
  @@ -18226,7 +18226,7 @@
   미신고:명:1
   미신고자:명:1
   미신적:명:1
  -미심쩍다:형:2
  +미심쩍:형:2
   미싱:명:3
   미싱공:명:1
   미아:명:4
  @@ -18234,13 +18234,13 @@
   미안:명:4
   미안감:명:1
   미안수:명:2
  -미안스럽다:형:1
  -미안하다:형:154
  -미안해하다:동:7
  -미안허다:형:3
  -미약하다:형:20
  -미어지다:동:7
  -미어터지다:동:1
  +미안스럽:형:1
  +미안하:형:154
  +미안해하:동:7
  +미안허:형:3
  +미약하:형:20
  +미어지:동:7
  +미어터지:동:1
   미역:명:12
   미역국:명:13
   미역줄나무:명:1
  @@ -18254,9 +18254,9 @@
   미용:명:7
   미용실:명:1
   미움:명:22
  -미움받다:동:1
  -미워지다:동:3
  -미워하다:동:20
  +미움받:동:1
  +미워지:동:3
  +미워하:동:20
   미음:명:1
   미의식:명:24
   미인:명:29
  @@ -18270,13 +18270,13 @@
   미장이:명:2
   미적:관:145
   미적:명:19
  -미적거리다:동:1
  -미적대다:동:1
  +미적거리:동:1
  +미적대:동:1
   미적미적:부:1
  -미적미적거리다:동:1
  -미적미적대다:동:1
  +미적미적거리:동:1
  +미적미적대:동:1
   미적분학:명:2
  -미적지근하다:형:1
  +미적지근하:형:1
   미전향:명:1
   미정:명:3
   미제:명:5
  @@ -18285,15 +18285,15 @@
   미주알고주알:부:3
   미증유:명:2
   미지:명:13
  -미지근하다:형:12
  +미지근하:형:12
   미지수:명:6
  -미진하다:형:8
  +미진하:형:8
   미처:부:68
  -미천하다:형:1
  +미천하:형:1
   미추:명:2
   미치광이:명:3
  -미치다:동:114
  -미치다:동:215
  +미치:동:114
  +미치:동:215
   미친개:명:1
   미친년:명:3
   미친놈:명:6
  @@ -18306,7 +18306,7 @@
   미트로프:명:4
   미트볼:명:1
   미팅:명:39
  -미팅하다:동:2
  +미팅하:동:2
   미풍:명:2
   미풍:명:4
   미풍양속:명:7
  @@ -18318,28 +18318,28 @@
   미학적:명:2
   미해결:명:1
   미행:명:8
  -미행하다:동:8
  -미혹되다:동:2
  -미혹하다:동:2
  +미행하:동:8
  +미혹되:동:2
  +미혹하:동:2
   미혼:명:37
   미혼모:명:2
   미혼자:명:3
   미화:명:4
   미화:명:8
  -미화되다:동:2
  +미화되:동:2
   미화반:명:1
  -미화시키다:동:2
  +미화시키:동:2
   미화원:명:19
  -미화하다:동:8
  +미화하:동:8
   미확인:명:1
   미확정:명:1
   미흡:명:11
  -미흡하다:형:28
  +미흡하:형:28
   믹서:명:3
   믹서기:명:2
   믹스:명:4
  -믹스되다:동:1
  -믹스하다:동:2
  +믹스되:동:1
  +믹스하:동:2
   민:명:80
   민가:명:4
   민간:명:117
  @@ -18350,25 +18350,25 @@
   민간인:명:12
   민간전승:명:1
   민감성:명:5
  -민감하다:형:47
  -민감해지다:동:4
  +민감하:형:47
  +민감해지:동:4
   민관:명:1
   민국:명:1
   민권:명:6
  -민기적거리다:동:2
  +민기적거리:동:2
   민달팽이:명:1
   민담:명:3
   민둥산:명:1
   민들레:명:5
   민들레꽃:명:1
   민란:명:2
  -민망스럽다:형:2
  -민망하다:형:26
  -민망해지다:동:1
  -민망해하다:동:3
  +민망스럽:형:2
  +민망하:형:26
  +민망해지:동:1
  +민망해하:동:3
   민물:명:1
   민박:명:1
  -민박하다:동:1
  +민박하:동:1
   민방:명:9
   민방론:명:1
   민방업계:명:2
  @@ -18400,7 +18400,7 @@
   민어:명:2
   민영:명:14
   민영화:명:13
  -민영화하다:동:2
  +민영화하:동:2
   민예:명:1
   민완:명:1
   민요:명:20
  @@ -18442,7 +18442,7 @@
   민주주의적:명:1
   민주주의혁명:명:1
   민주화:명:119
  -민주화되다:동:5
  +민주화되:동:5
   민중:명:485
   민중가요:명:1
   민중극적:관:1
  @@ -18450,7 +18450,7 @@
   민중적:관:8
   민중적:명:5
   민첩성:명:5
  -민첩하다:형:6
  +민첩하:형:6
   민치:명:1
   민통선:명:2
   민트:명:2
  @@ -18461,33 +18461,33 @@
   민화:명:4
   민화적:관:1
   민화투:명:1
  -민활하다:형:1
  -믿기다:동:16
  -믿다:동:461
  -믿어지다:동:29
  +민활하:형:1
  +믿기:동:16
  +믿:동:461
  +믿어지:동:29
   믿음:명:71
   믿음성:명:2
  -믿음직스럽다:형:5
  -믿음직하다:형:4
  +믿음직스럽:형:5
  +믿음직하:형:4
   밀:명:17
   밀가루:명:81
   밀교:명:5
   밀기울:명:3
   밀꾼:명:2
  -밀다:동:154
  +밀:동:154
   밀담:명:1
   밀대:명:2
   밀도:명:17
   밀랍:명:4
  -밀려가다:동:7
  -밀려나다:동:22
  -밀려다니다:동:2
  -밀려들다:동:14
  -밀려오다:동:24
  +밀려가:동:7
  +밀려나:동:22
  +밀려다니:동:2
  +밀려들:동:14
  +밀려오:동:24
   밀리:의:6
   밀리그램:의:13
  -밀리다:동:43
  -밀리다:동:51
  +밀리:동:43
  +밀리:동:51
   밀리리터:의:2
   밀리리터들이:의:1
   밀리몰:의:2
  @@ -18497,70 +18497,70 @@
   밀매:명:5
   밀물:명:17
   밀반입:명:1
  -밀반입되다:동:1
  +밀반입되:동:1
   밀반출:명:2
  -밀반출되다:동:1
  +밀반출되:동:1
   밀봉:명:3
  -밀봉되다:동:1
  -밀봉시키다:동:1
  -밀봉하다:동:3
  +밀봉되:동:1
  +밀봉시키:동:1
  +밀봉하:동:3
   밀사:명:2
  -밀생하다:동:3
  +밀생하:동:3
   밀수:명:4
   밀수업자:명:1
  -밀수하다:동:1
  +밀수하:동:1
   밀실:명:13
   밀약:명:1
   밀어:명:1
   밀어:명:2
  -밀어내다:동:23
  -밀어닥치다:동:2
  -밀어붙이다:동:20
  -밀어젖히다:동:2
  -밀어주다:동:3
  +밀어내:동:23
  +밀어닥치:동:2
  +밀어붙이:동:20
  +밀어젖히:동:2
  +밀어주:동:3
   밀영:명:1
   밀원:명:1
   밀입북:명:2
  -밀입북하다:동:1
  +밀입북하:동:1
   밀전병:명:1
   밀접성:명:1
  -밀접하다:형:56
  +밀접하:형:56
   밀접히:부:3
   밀지:명:1
   밀집:명:10
  -밀집되다:동:4
  -밀집하다:동:8
  +밀집되:동:4
  +밀집하:동:8
   밀짚:명:4
   밀짚모자:명:1
   밀착:명:8
  -밀착되다:동:6
  -밀착시키다:동:2
  -밀착하다:동:7
  +밀착되:동:6
  +밀착시키:동:2
  +밀착하:동:7
   밀착형:명:1
  -밀쳐놓다:동:1
  -밀치다:동:14
  +밀쳐놓:동:1
  +밀치:동:14
   밀크:명:5
   밀크캐러멜:명:2
   밀크커피:명:2
   밀폐:명:10
  -밀폐되다:동:3
  +밀폐되:동:3
   밀항:명:1
   밀항자:명:1
   밀회:명:2
  -밉다:형:54
  -밉살스럽다:형:1
  +밉:형:54
  +밉살스럽:형:1
   밉상:명:1
  -밋밋하다:형:5
  -밍밍하다:형:1
  +밋밋하:형:5
  +밍밍하:형:1
   및:접:792
   밑:명:334
   밑간:명:5
  -밑간하다:동:4
  +밑간하:동:4
   밑거름:명:10
   밑구멍:명:3
   밑그림:명:4
   밑단:명:9
  -밑돌다:동:9
  +밑돌:동:9
   밑동:명:11
   밑둥치:명:1
   밑면:명:2
  @@ -18568,12 +18568,12 @@
   밑바탕:명:5
   밑반찬:명:3
   밑받침:명:1
  -밑받침되다:동:1
  -밑받침하다:동:3
  +밑받침되:동:1
  +밑받침하:동:3
   밑변:명:1
   밑뿌리:명:3
   밑줄:명:5
  -밑지다:동:5
  +밑지:동:5
   밑창:명:1
   밑천:명:10
   밑판:명:12
  @@ -18596,18 +18596,18 @@
   바깥채:명:1
   바깥출입:명:2
   바께쓰:명:2
  -바꾸다:동:461
  -바꾸어지다:동:3
  -바꿔치다:동:7
  -바뀌다:동:285
  -바뀌어지다:동:7
  +바꾸:동:461
  +바꾸어지:동:3
  +바꿔치:동:7
  +바뀌:동:285
  +바뀌어지:동:7
   바나나:명:21
   바느질:명:9
   바느질감:명:2
   바느질거리:명:1
  -바느질되다:동:1
  +바느질되:동:1
   바느질집:명:1
  -바느질하다:동:2
  +바느질하:동:2
   바늘:명:85
   바늘구멍:명:6
   바늘귀:명:2
  @@ -18620,7 +18620,7 @@
   바다표범:명:1
   바닥:명:173
   바닥권:명:4
  -바닥나다:동:3
  +바닥나:동:3
   바닥쇠:명:3
   바닥재:명:1
   바닷가:명:70
  @@ -18632,23 +18632,23 @@
   바닷새:명:2
   바닷장어:명:1
   바돌:명:1
  -바동거리다:동:2
  -바동대다:동:1
  +바동거리:동:2
  +바동대:동:1
   바둑:명:19
   바둑알:명:3
   바둑판:명:2
   바드득바드득:부:1
   바득바득:부:1
   바들바들:부:3
  -바라다:동:365
  -바라다보다:동:13
  -바라다보이다:동:3
  +바라:동:365
  +바라다보:동:13
  +바라다보이:동:3
   바라문:명:1
  -바라보다:동:507
  -바라보여지다:동:1
  -바라보이다:동:2
  -바라뵈다:동:1
  -바라지다:동:2
  +바라보:동:507
  +바라보여지:동:1
  +바라보이:동:2
  +바라뵈:동:1
  +바라지:동:2
   바라크:명:1
   바락:부:1
   바락바락:부:1
  @@ -18658,35 +18658,35 @@
   바람개비:명:2
   바람결:명:3
   바람기:명:3
  -바람나다:동:6
  +바람나:동:6
   바람둥이:명:6
   바람떡:명:1
  -바람맞다:동:2
  +바람맞:동:2
   바람맞이:명:2
   바람벽:명:8
   바람잡이:명:1
   바람직:명:4
  -바람직스럽다:형:6
  -바람직하다:형:146
  -바람피우다:동:4
  +바람직스럽:형:6
  +바람직하:형:146
  +바람피우:동:4
   바랑:명:3
   바랑이풀:명:2
  -바래다:동:16
  -바래다주다:동:13
  -바래어지다:동:1
  -바래지다:동:1
  +바래:동:16
  +바래다주:동:13
  +바래어지:동:1
  +바래지:동:1
   바랭이:명:2
  -바로:부:1,260
  +바로:부:1260
   바로미터:명:1
   바로바로:부:3
  -바로잡다:동:75
  -바로잡아지다:동:1
  -바로잡혀지다:동:1
  -바로잡히다:동:1
  +바로잡:동:75
  +바로잡아지:동:1
  +바로잡혀지:동:1
  +바로잡히:동:1
   바로크:명:1
  -바르다:동:1
  -바르다:동:152
  -바르다:형:201
  +바르:동:1
  +바르:동:152
  +바르:형:201
   바르르:부:2
   바른대로:부:7
   바른말:명:2
  @@ -18703,17 +18703,17 @@
   바벨:명:1
   바보:명:79
   바보상자:명:1
  -바보스럽다:형:4
  +바보스럽:형:4
   바보짓:명:2
   바비큐:명:2
  -바빠지다:동:9
  -바쁘다:형:257
  +바빠지:동:9
  +바쁘:형:257
   바삐:부:13
  -바삭바삭하다:형:1
  -바삭하다:형:5
  +바삭바삭하:형:1
  +바삭하:형:5
   바소쿠리:명:1
  -바스락거리다:동:2
  -바스러지다:동:3
  +바스락거리:동:2
  +바스러지:동:3
   바싹:부:33
   바싹바싹:부:1
   바야흐로:부:12
  @@ -18747,7 +18747,7 @@
   바지게:명:1
   바지락:명:1
   바지랑대:명:2
  -바지런하다:형:1
  +바지런하:형:1
   바지저고리:명:3
   바지직:부:1
   바지춤:명:4
  @@ -18756,9 +18756,9 @@
   바짓가랑이:명:6
   바짝:부:40
   바짝바짝:부:3
  -바쳐지다:동:2
  -바치다:동:1
  -바치다:동:70
  +바쳐지:동:2
  +바치:동:1
  +바치:동:70
   바캉스:명:5
   바퀴:명:32
   바퀴:명:9
  @@ -18769,7 +18769,7 @@
   바탕:명:221
   바탕색:명:3
   바탕체:명:2
  -바탕하다:동:7
  +바탕하:동:7
   바탱이:명:1
   바텐더:명:1
   바통:명:2
  @@ -18782,10 +18782,10 @@
   박고지조림:명:1
   박과:명:1
   박꽃:명:6
  -박다:동:74
  +박:동:74
   박달나무:명:2
   박대:명:1
  -박대하다:동:1
  +박대하:동:1
   박동:명:8
   박람회:명:7
   박람회장:명:3
  @@ -18793,14 +18793,14 @@
   박력:명:3
   박리성:명:1
   박막:명:1
  -박멸하다:동:1
  +박멸하:동:1
   박물관:명:150
   박물관장:명:1
   박물원:명:2
   박물학:명:1
   박물학자:명:1
   박박:부:10
  -박복하다:형:1
  +박복하:형:1
   박봉:명:1
   박빙:명:3
   박사:명:166
  @@ -18808,66 +18808,66 @@
   박새:명:9
   박수:명:65
   박수갈채:명:2
  -박수하다:동:1
  +박수하:동:1
   박스:명:19
  -박식하다:형:2
  +박식하:형:2
   박애:명:1
  -박약하다:형:1
  +박약하:형:1
   박음질:명:1
  -박이다:동:1
  +박이:동:1
   박자:명:8
   박장대소:명:1
  -박장대소하다:동:1
  -박정하다:형:1
  +박장대소하:동:1
  +박정하:형:1
   박제:명:2
  -박제되다:동:2
  +박제되:동:2
   박제화:명:1
  -박제화되다:동:1
  +박제화되:동:1
   박쥐:명:7
   박쥐나무:명:1
  -박지르다:동:1
  +박지르:동:1
   박진감:명:2
   박진성:명:1
   박진적:명:1
   박차:명:7
  -박차다:동:19
  +박차:동:19
   박치기:명:1
   박탈:명:1
   박탈감:명:1
  -박탈당하다:동:5
  -박탈되다:동:6
  -박탈하다:동:10
  +박탈당하:동:5
  +박탈되:동:6
  +박탈하:동:10
   박테리아:명:1
   박통:명:1
   박하:명:1
  -박하다:형:1
  +박하:형:1
   박하사탕:명:1
   박학:명:1
   박학다식:명:1
   박해:명:3
  -박혀지다:동:2
  -박히다:동:75
  +박혀지:동:2
  +박히:동:75
   밖:명:739
   반:명:241
   반:명:265
   반가부좌:명:1
   반가움:명:7
  -반가워하다:동:3
  +반가워하:동:3
   반가이:부:1
   반감:명:5
   반감기:명:1
  -반감되다:동:2
  -반감되어지다:동:1
  -반감시키다:동:1
  -반감하다:동:1
  -반갑다:형:118
  +반감되:동:2
  +반감되어지:동:1
  +반감시키:동:1
  +반감하:동:1
  +반갑:형:118
   반값:명:3
   반강제:명:2
   반강제적:명:1
   반거들충이:명:1
   반격:명:11
   반격론:명:1
  -반격하다:동:3
  +반격하:동:3
   반경:명:4
   반경례:명:1
   반고전주의적:관:2
  @@ -18882,12 +18882,12 @@
   반군:명:14
   반군부:명:3
   반기:명:6
  -반기다:동:19
  +반기:동:19
   반나마:부:2
   반나절:명:5
   반납:명:2
  -반납되다:동:3
  -반납하다:동:4
  +반납되:동:3
  +반납하:동:4
   반내성주의:명:1
   반년:명:11
   반노예적:명:1
  @@ -18899,7 +18899,7 @@
   반대:명:188
   반대급부:명:5
   반대기:명:4
  -반대되다:동:8
  +반대되:동:8
   반대론:명:1
   반대론자:명:2
   반대말:명:2
  @@ -18908,7 +18908,7 @@
   반대쪽:명:7
   반대파:명:3
   반대편:명:17
  -반대하다:동:107
  +반대하:동:107
   반덤핑:명:6
   반도:명:9
   반도체:명:13
  @@ -18920,13 +18920,13 @@
   반동적:관:1
   반동적:명:3
   반드시:부:280
  -반들거리다:동:1
  +반들거리:동:1
   반들반들:부:1
  -반들반들하다:형:1
  +반들반들하:형:1
   반듯이:부:1
  -반듯하다:형:15
  +반듯하:형:15
   반등:명:3
  -반등하다:동:1
  +반등하:동:1
   반딧불:명:3
   반라:명:2
   반란:명:32
  @@ -18934,10 +18934,10 @@
   반란죄:명:1
   반려:명:2
   반려:명:3
  -반려되다:동:4
  -반려시키다:동:1
  +반려되:동:4
  +반려시키:동:1
   반려자:명:1
  -반려하다:동:4
  +반려하:동:4
   반론:명:18
   반리얼리즘:명:3
   반리얼리즘론:명:1
  @@ -18950,11 +18950,11 @@
   반명제:명:1
   반명함판:명:1
   반목:명:8
  -반목하다:동:1
  +반목하:동:1
   반문:명:11
   반문:명:7
   반문명:명:1
  -반문하다:동:24
  +반문하:동:24
   반문화:명:1
   반문화적:관:2
   반미:명:7
  @@ -18972,13 +18972,13 @@
   반바지:명:9
   반박:명:6
   반박문:명:7
  -반박하다:동:19
  +반박하:동:19
   반반:명:5
  -반반하다:형:3
  +반반하:형:3
   반발:명:60
   반발력:명:2
   반발심:명:1
  -반발하다:동:24
  +반발하:동:24
   반배:명:2
   반벌거숭이:명:1
   반변증법적:명:1
  @@ -18986,26 +18986,26 @@
   반병신:명:2
   반보:명:1
   반복:명:18
  -반복되다:동:45
  +반복되:동:45
   반복적:관:1
   반복적:명:7
  -반복하다:동:44
  +반복하:동:44
   반볼셰비즘:명:1
   반봉건:명:1
   반봉건:명:6
   반봉건적:관:1
   반봉건적:명:1
  -반분하다:동:1
  +반분하:동:1
   반비:명:3
  -반비례하다:동:1
  +반비례하:동:1
   반비판:명:2
  -반비판하다:동:1
  +반비판하:동:1
   반사:명:10
   반사각:명:1
  -반사되다:동:13
  +반사되:동:13
   반사등:명:1
   반사막:명:1
  -반사시키다:동:7
  +반사시키:동:7
   반사식:명:1
   반사실주의적:명:1
   반사적:명:15
  @@ -19015,7 +19015,7 @@
   반상:명:2
   반상회:명:3
   반색:명:4
  -반색하다:동:4
  +반색하:동:4
   반생:명:1
   반생명:명:8
   반생명성:명:1
  @@ -19025,9 +19025,9 @@
   반성문:명:1
   반성적:관:8
   반성적:명:1
  -반성하다:동:44
  +반성하:동:44
   반세기:명:9
  -반송하다:동:1
  +반송하:동:1
   반수:명:1
   반수:명:5
   반숙:명:4
  @@ -19036,11 +19036,11 @@
   반식민지:명:1
   반식민지적:관:1
   반신:명:2
  -반신반의하다:동:4
  +반신반의하:동:4
   반신반인:명:1
   반신불수:명:2
   반신욕:명:1
  -반실성하다:동:1
  +반실성하:동:1
   반실증주의적:관:1
   반야:명:2
   반야나무:명:5
  @@ -19051,22 +19051,22 @@
   반열:명:6
   반영:명:21
   반영구적:명:3
  -반영되다:동:28
  +반영되:동:28
   반영론적:관:1
  -반영시키다:동:3
  -반영하다:동:98
  +반영시키:동:3
  +반영하:동:98
   반올림:명:3
  -반올림하다:동:3
  +반올림하:동:3
   반왕조:명:1
   반외세:명:1
   반원자력:명:1
   반원형:명:1
   반윤리적:관:1
   반응:명:176
  -반응되다:동:1
  +반응되:동:1
   반응성:명:1
  -반응시키다:동:1
  -반응하다:동:28
  +반응시키:동:1
  +반응하:동:28
   반의사:명:1
   반인간:명:7
   반인간적:명:1
  @@ -19078,16 +19078,16 @@
   반인종:명:1
   반일:명:2
   반입:명:3
  -반입되다:동:2
  -반입하다:동:2
  +반입되:동:2
  +반입하:동:2
   반자연주의적:관:3
   반작용:명:8
   반작용력:명:5
   반장:명:93
   반전:명:3
   반전:명:8
  -반전되다:동:4
  -반전시키다:동:1
  +반전되:동:4
  +반전시키:동:1
   반절:명:8
   반절기:명:3
   반점:명:34
  @@ -19103,51 +19103,51 @@
   반죽:명:29
   반죽가:명:1
   반죽기:명:1
  -반죽하다:동:8
  +반죽하:동:8
   반증:명:7
  -반증되다:동:1
  -반증하다:동:8
  +반증되:동:1
  +반증하:동:8
   반지:명:29
   반지르르:부:1
  -반지르르하다:형:1
  +반지르르하:형:1
   반지름:명:6
   반진골적:관:1
  -반질거리다:동:1
  +반질거리:동:1
   반질반질:부:1
  -반질반질하다:형:1
  +반질반질하:형:1
   반집:명:2
   반짝:부:12
   반짝:부:2
  -반짝거리다:동:16
  +반짝거리:동:16
   반짝반짝:부:6
  -반짝반짝거리다:동:1
  -반짝반짝하다:형:1
  -반짝이다:동:23
  -반짝하다:동:3
  +반짝반짝거리:동:1
  +반짝반짝하:형:1
  +반짝이:동:23
  +반짝하:동:3
   반쪽:명:9
   반쪽이:명:1
   반찬:명:60
   반찬거리:명:2
   반체제:명:8
   반추상적:명:1
  -반추하다:동:2
  +반추하:동:2
   반출:명:2
   반출입:명:1
   반출증:명:6
   반칙:명:7
   반통일:명:2
   반투명:명:2
  -반투명하다:형:1
  +반투명하:형:1
   반파:명:1
   반파쇼:명:1
   반팔:명:3
   반평생:명:2
   반포:명:4
  -반포되다:동:3
  -반포하다:동:1
  +반포되:동:3
  +반포하:동:1
   반폭:명:1
  -반하다:동:15
  -반하다:동:70
  +반하:동:15
  +반하:동:70
   반학교:명:4
   반항:명:10
   반항기:명:1
  @@ -19155,36 +19155,36 @@
   반항아:명:1
   반항적:관:2
   반항적:명:5
  -반항하다:동:5
  +반항하:동:5
   반핵:명:3
   반향:명:6
   반혁명:명:1
   반환:명:11
  -반환되다:동:2
  -반환받다:동:2
  +반환되:동:2
  +반환받:동:2
   반환일:명:1
   반환점:명:8
  -반환하다:동:1
  +반환하:동:1
   반희곡적:관:1
   반히:부:1
  -받다:동:2,566
  -받다:동:5
  -받들다:동:21
  -받아들여지다:동:65
  -받아들이다:동:279
  -받아먹다:동:9
  +받:동:2566
  +받:동:5
  +받들:동:21
  +받아들여지:동:65
  +받아들이:동:279
  +받아먹:동:9
   받아쓰기:명:3
  -받아쓰다:동:1
  -받아지다:동:1
  -받아치다:동:1
  +받아쓰:동:1
  +받아지:동:1
  +받아치:동:1
   받이:명:1
  -받치다:동:44
  -받치다:동:6
  +받치:동:44
  +받치:동:6
   받침:명:24
   받침대:명:1
   받침돌:명:1
   받침점:명:3
  -받히다:동:2
  +받히:동:2
   발:명:1
   발:명:1
   발:명:380
  @@ -19192,175 +19192,175 @@
   발:의:10
   발:의:3
   발가락:명:41
  -발가벗겨지다:동:2
  -발가벗기다:동:2
  -발가벗다:동:2
  -발각되다:동:13
  +발가벗겨지:동:2
  +발가벗기:동:2
  +발가벗:동:2
  +발각되:동:13
   발간:명:12
  -발간되다:동:9
  +발간되:동:9
   발간사:명:2
  -발간하다:동:12
  -발갛다:형:6
  +발간하:동:12
  +발갛:형:6
   발걸음:명:49
   발걸이:명:1
   발견:명:71
  -발견되다:동:138
  -발견하다:동:267
  +발견되:동:138
  +발견하:동:267
   발고아:명:1
  -발고하다:동:1
  +발고하:동:1
   발광:명:4
   발광:명:9
  -발광하다:동:1
  +발광하:동:1
   발군:명:3
   발굴:명:22
  -발굴되다:동:9
  +발굴되:동:9
   발굴물:명:1
   발굴지:명:1
  -발굴하다:동:22
  -발그대대하다:형:1
  +발굴하:동:22
  +발그대대하:형:1
   발그레:부:1
   발그스레:부:3
  -발그스름하다:형:1
  +발그스름하:형:1
   발급:명:7
  -발급되다:동:1
  -발급받다:동:9
  +발급되:동:1
  +발급받:동:9
   발급식:명:1
  -발급하다:동:7
  +발급하:동:7
   발기:명:1
  -발기되다:동:1
  +발기되:동:1
   발기력:명:1
   발길:명:49
   발길질:명:9
   발꿈치:명:2
  -발끈하다:동:6
  +발끈하:동:6
   발끝:명:22
   발놀림:명:1
   발단:명:8
   발달:명:167
  -발달되다:동:33
  +발달되:동:33
   발달사:명:3
  -발달시키다:동:18
  -발달하다:동:226
  +발달시키:동:18
  +발달하:동:226
   발대식:명:1
   발돋움:명:6
  -발돋움하다:동:12
  +발돋움하:동:12
   발동:명:7
   발동기:명:3
  -발동되다:동:2
  +발동되:동:2
   발동선:명:3
  -발동하다:동:10
  +발동하:동:10
   발뒤꿈치:명:14
   발등:명:21
   발딱:부:3
  -발라내다:동:1
  +발라내:동:1
   발라당:부:1
   발라드:명:6
  -발라지다:동:3
  -발랄하다:형:10
  -발랄해지다:동:1
  +발라지:동:3
  +발랄하:형:10
  +발랄해지:동:1
   발레:명:54
   발레가:명:1
   발레계:명:1
   발레단:명:4
   발레리나:명:2
   발령:명:9
  -발령되다:동:1
  -발령받다:동:2
  -발령하다:동:6
  +발령되:동:1
  +발령받:동:2
  +발령하:동:6
   발로:명:5
  -발로되다:동:1
  -발리다:동:7
  +발로되:동:1
  +발리:동:7
   발림:명:1
  -발맞추다:동:9
  +발맞추:동:9
   발매:명:7
   발매기:명:2
  -발매되다:동:3
  +발매되:동:3
   발매식:명:1
  -발매하다:동:2
  +발매하:동:2
   발명:명:2
   발명:명:22
   발명가:명:2
  -발명되다:동:13
  +발명되:동:13
   발명자:명:2
   발명품:명:7
  -발명하다:동:23
  +발명하:동:23
   발모:명:1
   발목:명:35
   발문:명:1
   발밑:명:7
   발바닥:명:17
   발발:명:1
  -발발하다:동:2
  +발발하:동:2
   발버둥:명:13
   발병:명:3
  -발병되다:동:1
  +발병되:동:1
   발병률:명:3
  -발병하다:동:7
  +발병하:동:7
   발본색원:명:1
   발부:명:6
  -발부되다:동:15
  -발부받다:동:11
  -발부하다:동:5
  -발붙이다:동:6
  +발부되:동:15
  +발부받:동:11
  +발부하:동:5
  +발붙이:동:6
   발뺌:명:6
  -발뺌하다:동:2
  +발뺌하:동:2
   발사:명:9
   발사대:명:11
  -발사되다:동:4
  +발사되:동:4
   발사음:명:1
  -발사하다:동:4
  +발사하:동:4
   발산:명:1
  -발산되다:동:3
  -발산하다:동:8
  +발산되:동:3
  +발산하:동:8
   발상:명:67
  -발상되다:동:1
  +발상되:동:1
   발상법:명:3
   발상지:명:5
   발생:명:76
  -발생되다:동:7
  +발생되:동:7
   발생량:명:9
   발생론:명:1
   발생률:명:2
  -발생시키다:동:4
  +발생시키:동:4
   발생원:명:1
   발생적:관:1
   발생적:명:7
   발생지:명:2
  -발생하다:동:289
  +발생하:동:289
   발생형:명:1
   발선:명:1
   발설:명:2
  -발설되다:동:1
  +발설되:동:1
   발설자:명:2
  -발설하다:동:1
  +발설하:동:1
   발성:명:1
   발소리:명:7
   발송:명:4
  -발송되다:동:1
  -발송하다:동:8
  -발순하다:동:1
  +발송되:동:1
  +발송하:동:8
  +발순하:동:1
   발신:명:2
   발신인:명:2
   발신자:명:1
   발싸심:명:2
   발아래:명:1
   발악:명:5
  -발악하다:동:1
  +발악하:동:1
   발암:명:4
   발암성:명:2
   발언:명:115
   발언권:명:4
   발언대:명:1
  -발언하다:동:5
  +발언하:동:5
   발열:명:5
   발원:명:1
   발원지:명:20
  -발원하다:동:32
  +발원하:동:32
   발육:명:29
  -발육되다:동:1
  -발육하다:동:3
  +발육되:동:1
  +발육하:동:3
   발음:명:33
  -발음하다:동:7
  +발음하:동:7
   발의:명:1
   발인:명:2
   발인식:명:1
  @@ -19375,28 +19375,28 @@
   발전:명:481
   발전기:명:16
   발전기:명:4
  -발전되다:동:37
  +발전되:동:37
   발전사:명:2
   발전상:명:1
   발전성:명:1
   발전소:명:58
  -발전시켜지다:동:1
  -발전시키다:동:86
  +발전시켜지:동:1
  +발전시키:동:86
   발전안:명:1
   발전적:관:3
   발전적:명:5
  -발전하다:동:226
  +발전하:동:226
   발제자:명:2
   발족:명:10
  -발족되다:동:5
  -발족시키다:동:10
  +발족되:동:5
  +발족시키:동:10
   발족식:명:2
  -발족하다:동:4
  +발족하:동:4
   발주:명:5
   발주가리:명:1
  -발주하다:동:3
  +발주하:동:3
   발진:명:1
  -발진하다:동:2
  +발진하:동:2
   발질:명:1
   발짓:명:3
   발짝:의:26
  @@ -19404,15 +19404,15 @@
   발착:명:1
   발채:명:1
   발출:명:3
  -발출하다:동:4
  +발출하:동:4
   발췌:명:2
  -발췌하다:동:1
  +발췌하:동:1
   발치:명:3
   발칵:부:7
   발코니:명:3
   발탁:명:4
  -발탁되다:동:7
  -발탁하다:동:4
  +발탁되:동:7
  +발탁하:동:4
   발톱:명:17
   발파:명:1
   발판:명:27
  @@ -19420,54 +19420,54 @@
   발포기:명:1
   발포물:명:1
   발표:명:187
  -발표되다:동:70
  +발표되:동:70
   발표력:명:1
   발표문:명:14
   발표설:명:1
   발표자:명:9
  -발표하다:동:265
  +발표하:동:265
   발표회:명:7
  -발하다:동:17
  +발하:동:17
   발한:명:1
   발행:명:1
   발행:명:36
   발행가:명:1
   발행권:명:1
  -발행되다:동:19
  +발행되:동:19
   발행사:명:1
   발행인:명:6
   발행자:명:3
  -발행하다:동:21
  +발행하:동:21
   발현:명:6
  -발현되다:동:8
  -발현시키다:동:3
  +발현되:동:8
  +발현시키:동:3
   발호:명:1
   발화:명:1
   발효:명:10
   발효:명:9
  -발효되다:동:1
  -발효되다:동:8
  +발효되:동:1
  +발효되:동:8
   발효법:명:1
  -발효시키다:동:3
  +발효시키:동:3
   발효일:명:1
  -발효하다:동:1
  -발효하다:동:3
  +발효하:동:1
  +발효하:동:3
   발휘:명:6
  -발휘되다:동:15
  -발휘하다:동:107
  +발휘되:동:15
  +발휘하:동:107
   발흥:명:1
  -발흥하다:동:1
  -발흥하다:동:1
  +발흥하:동:1
  +발흥하:동:1
   밝기:명:1
  -밝다:동:18
  -밝다:형:174
  -밝아지다:동:17
  +밝:동:18
  +밝:형:174
  +밝아지:동:17
   밝이:명:1
  -밝혀내다:동:50
  -밝혀지다:동:168
  -밝히다:동:846
  -밟다:동:114
  -밟히다:동:8
  +밝혀내:동:50
  +밝혀지:동:168
  +밝히:동:846
  +밟:동:114
  +밟히:동:8
   밤:명:29
   밤:명:694
   밤거리:명:10
  @@ -19479,7 +19479,7 @@
   밤낮:명:15
   밤낮:부:13
   밤낮없이:부:2
  -밤늦다:형:35
  +밤늦:형:35
   밤무대:명:5
   밤바다:명:2
   밤바람:명:5
  @@ -19487,17 +19487,17 @@
   밤사이:명:1
   밤새:명:21
   밤새껏:부:2
  -밤새다:동:17
  -밤새우다:동:16
  +밤새:동:17
  +밤새우:동:16
   밤색:명:20
   밤샘:명:19
  -밤샘하다:동:2
  +밤샘하:동:2
   밤송이:명:5
   밤안개:명:6
   밤알:명:5
   밤이슬:명:4
   밤일:명:5
  -밤일하다:동:1
  +밤일하:동:1
   밤잠:명:14
   밤중:명:18
   밤차:명:1
  @@ -19530,7 +19530,7 @@
   밥통:명:13
   밥풀:명:2
   밥풀떼기:명:9
  -밥하다:동:7
  +밥하:동:7
   밧데리:명:2
   밧줄:명:12
   방:명:2
  @@ -19544,7 +19544,7 @@
   방공호:명:4
   방과:명:5
   방관적:관:1
  -방관하다:동:7
  +방관하:동:7
   방구들:명:1
   방구리:명:6
   방구석:명:3
  @@ -19555,38 +19555,38 @@
   방금:명:13
   방금:부:75
   방긋:부:3
  -방기하다:동:5
  +방기하:동:5
   방뇨:명:2
  -방뇨하다:동:1
  -방대하다:형:17
  +방뇨하:동:1
  +방대하:형:17
   방도:명:11
   방동사니:명:1
   방랑:명:7
   방랑벽:명:2
   방랑인:명:2
   방랑자:명:9
  -방랑하다:동:2
  +방랑하:동:2
   방량:명:2
  -방량하다:동:1
  +방량하:동:1
   방러:명:1
   방류:명:3
  -방류되다:동:2
  -방류하다:동:6
  +방류되:동:2
  +방류하:동:6
   방만:명:1
  -방만하다:형:2
  +방만하:형:2
   방망이:명:10
   방망이질:명:4
  -방망이질하다:동:2
  +방망이질하:동:2
   방면:명:1
   방면:명:26
  -방면되다:동:1
  +방면되:동:1
   방명:명:1
   방문:명:123
   방문:명:43
   방문객:명:6
   방문자:명:1
   방문턱:명:1
  -방문하다:동:113
  +방문하:동:113
   방미:명:5
   방미설:명:1
   방바닥:명:27
  @@ -19598,21 +19598,21 @@
   방범대원:명:1
   방범등:명:1
   방범망:명:1
  -방법:명:1,061
  +방법:명:1061
   방법론:명:28
   방법론적:관:8
   방법론적:명:7
   방법적:관:2
   방법적:명:1
   방벽:명:4
  -방부되다:동:1
  +방부되:동:1
   방부성:명:1
   방부제:명:6
  -방부하다:동:1
  +방부하:동:1
   방북:명:10
   방북설:명:1
  -방북하다:동:1
  -방불하다:형:15
  +방북하:동:1
  +방불하:형:15
   방비:명:2
   방비대:명:1
   방사기:명:2
  @@ -19622,11 +19622,11 @@
   방사선형:명:1
   방사성:명:25
   방사주:명:1
  -방사하다:동:2
  +방사하:동:2
   방사형:명:1
   방석:명:6
   방선:명:1
  -방선하다:동:3
  +방선하:동:3
   방성대곡:명:1
   방세:명:2
   방손:명:2
  @@ -19637,7 +19637,7 @@
   방송국:명:109
   방송권:명:1
   방송극:명:3
  -방송되다:동:13
  +방송되:동:13
   방송량:명:2
   방송망:명:1
   방송명:명:1
  @@ -19645,10 +19645,10 @@
   방송업체:명:1
   방송인:명:6
   방송장이:명:1
  -방송하다:동:25
  +방송하:동:25
   방송학과:명:1
   방수:명:6
  -방수되다:동:1
  +방수되:동:1
   방수량:명:1
   방수성:명:1
   방습:명:1
  @@ -19656,7 +19656,7 @@
   방식:명:448
   방실방실:부:1
   방심:명:6
  -방심하다:동:6
  +방심하:동:6
   방아:명:4
   방아깨비:명:3
   방아쇠:명:8
  @@ -19667,7 +19667,7 @@
   방안:명:234
   방앗간:명:8
   방어:명:38
  -방어되다:동:1
  +방어되:동:1
   방어벽:명:2
   방어용:명:1
   방어율:명:4
  @@ -19675,14 +19675,14 @@
   방어자:명:2
   방어적:관:4
   방어적:명:1
  -방어하다:동:12
  +방어하:동:12
   방언:명:3
   방열:명:1
  -방열하다:동:1
  +방열하:동:1
   방영:명:19
  -방영되다:동:28
  +방영되:동:28
   방영분:명:2
  -방영하다:동:12
  +방영하:동:12
   방울:명:33
   방울:명:35
   방울방울:명:1
  @@ -19700,7 +19700,7 @@
   방음문:명:1
   방음벽:명:8
   방일:명:14
  -방자하다:형:5
  +방자하:형:5
   방장:명:12
   방장:명:3
   방장:명:3
  @@ -19708,24 +19708,24 @@
   방적기:명:2
   방점:명:2
   방정:명:2
  -방정맞다:형:4
  -방정맞아지다:동:1
  +방정맞:형:4
  +방정맞아지:동:1
   방정식:명:5
  -방정하다:형:1
  +방정하:형:1
   방제:명:1
   방조:명:2
   방조자:명:1
   방조제:명:5
  -방조하다:동:2
  +방조하:동:2
   방종:명:3
   방주:명:5
   방죽:명:9
   방중:명:4
  -방증하다:동:1
  +방증하:동:1
   방지:명:60
  -방지되다:동:3
  +방지되:동:3
   방지책:명:2
  -방지하다:동:37
  +방지하:동:37
   방직:명:5
   방차:명:2
   방책:명:3
  @@ -19733,21 +19733,21 @@
   방천둑:명:1
   방청객:명:4
   방청석:명:8
  -방청하다:동:1
  +방청하:동:1
   방축:명:1
   방출:명:13
  -방출되다:동:25
  +방출되:동:25
   방출량:명:6
  -방출하다:동:13
  +방출하:동:13
   방충제:명:4
   방치:명:11
  -방치되다:동:26
  -방치하다:동:28
  +방치되:동:26
  +방치하:동:28
   방침:명:220
   방탄복:명:1
   방탕아:명:1
   방탕자:명:1
  -방탕하다:형:3
  +방탕하:형:3
   방파제:명:18
   방판:명:1
   방패:명:11
  @@ -19755,22 +19755,22 @@
   방편:명:35
   방풍:명:2
   방풍림:명:1
  -방하하다:동:1
  +방하하:동:1
   방학:명:144
   방학식:명:1
   방한:명:3
   방한:명:37
   방한모:명:2
   방한복:명:2
  -방한하다:동:7
  +방한하:동:7
   방해:명:45
   방해꾼:명:1
  -방해당하다:동:1
  -방해되다:동:2
  +방해당하:동:1
  +방해되:동:2
   방해물:명:3
  -방해받다:동:6
  +방해받:동:6
   방해죄:명:12
  -방해하다:동:38
  +방해하:동:38
   방향:명:426
   방향성:명:4
   방향안:명:2
  @@ -19782,12 +19782,12 @@
   방화범:명:1
   방화벽:명:1
   방황:명:11
  -방황하다:동:20
  +방황하:동:20
   밭:명:147
   밭갈이:명:1
   밭고랑:명:1
   밭농사:명:16
  -밭다:동:2
  +밭:동:2
   밭다리:명:1
   밭두둑:명:1
   밭두렁:명:3
  @@ -19799,9 +19799,9 @@
   밭언덕:명:1
   밭이랑:명:1
   밭일:명:3
  -밭일하다:동:1
  +밭일하:동:1
   밭작물:명:3
  -밭치다:동:5
  +밭치:동:5
   밭틀:명:1
   배:명:1
   배:명:245
  @@ -19810,34 +19810,34 @@
   배:명:443
   배:의:24
   배가:명:1
  -배가되다:동:2
  -배가시키다:동:2
  -배가하다:동:1
  +배가되:동:2
  +배가시키:동:2
  +배가하:동:1
   배격:명:1
  -배격되다:동:1
  -배격하다:동:11
  +배격되:동:1
  +배격하:동:11
   배경:명:189
  -배고프다:형:30
  +배고프:형:30
   배고픔:명:7
  -배곯다:동:1
  +배곯:동:1
   배관:명:6
   배관공:명:2
   배구:명:15
   배구공:명:2
   배금주의:명:3
   배급:명:12
  -배급되다:동:5
  +배급되:동:5
   배급량:명:1
  -배급받다:동:1
  +배급받:동:1
   배급사:명:1
   배급소:명:1
   배급제:명:3
   배급품:명:1
  -배급하다:동:3
  +배급하:동:3
   배기:명:1
   배기:명:2
   배기가스:명:15
  -배기다:동:6
  +배기:동:6
   배기량:명:3
   배꼽:명:22
   배꽃:명:6
  @@ -19847,48 +19847,48 @@
   배낭족:명:1
   배냉:명:1
   배뇨량:명:1
  -배다:동:23
  -배다:동:60
  -배다:형:1
  -배다르다:형:2
  +배:동:23
  +배:동:60
  +배:형:1
  +배다르:형:2
   배달:명:23
   배달꾼:명:1
  -배달되다:동:9
  -배달시키다:동:1
  +배달되:동:9
  +배달시키:동:1
   배달업:명:1
   배달원:명:4
  -배달하다:동:12
  +배달하:동:12
   배당:명:1
   배당:명:10
   배당금:명:5
  -배당되다:동:4
  +배당되:동:4
   배당률:명:6
   배당받다:명:1
  -배당하다:동:3
  +배당하:동:3
   배드민턴:명:18
   배란:명:4
   배란기:명:2
  -배란되다:동:1
  +배란되:동:1
   배란일:명:11
   배래:명:6
   배럴:의:2
   배려:명:42
  -배려되다:동:2
  -배려하다:동:12
  +배려되:동:2
  +배려하:동:12
   배력:명:1
  -배리다:동:1
  +배리:동:1
   배면:명:6
   배미:명:1
   배반:명:2
   배반자:명:1
  -배반하다:동:11
  +배반하:동:11
   배배:부:2
   배변:명:2
  -배부르다:형:18
  -배부하다:동:2
  +배부르:형:18
  +배부하:동:2
   배분:명:19
  -배분되다:동:1
  -배분하다:동:4
  +배분되:동:1
  +배분하:동:4
   배불:명:1
   배불뚝이:명:2
   배불론:명:1
  @@ -19897,58 +19897,58 @@
   배산임수:명:3
   배상:명:27
   배상금:명:2
  -배상하다:동:8
  +배상하:동:8
   배색:명:5
  -배석하다:동:3
  +배석하:동:3
   배설:명:8
  -배설되다:동:6
  +배설되:동:6
   배설물:명:7
  -배설시키다:동:1
  -배설하다:동:3
  +배설시키:동:1
  +배설하:동:3
   배속:의:1
  -배속되다:동:4
  -배속받다:동:1
  +배속되:동:4
  +배속받:동:1
   배수:명:1
   배수:명:1
   배수:명:1
   배수:명:6
   배수구:명:3
   배수진:명:1
  -배수하다:동:1
  +배수하:동:1
   배스:명:1
   배시시:부:7
   배신:명:1
   배신:명:28
   배신감:명:8
  -배신당하다:동:3
  +배신당하:동:3
   배신자:명:3
   배신적:명:1
  -배신하다:동:6
  +배신하:동:6
   배심원:명:2
   배알:명:1
  -배알하다:동:1
  +배알하:동:1
   배양:명:5
  -배양되다:동:1
  -배양하다:동:2
  -배어나다:동:6
  -배어들다:동:9
  +배양되:동:1
  +배양하:동:2
  +배어나:동:6
  +배어들:동:9
   배어머신:명:1
   배역:명:25
  -배역되다:동:1
  +배역되:동:1
   배역진:명:3
   배열:명:15
  -배열되다:동:7
  -배열하다:동:8
  +배열되:동:7
  +배열하:동:8
   배영:명:6
   배우:명:99
   배우난:명:1
  -배우다:동:457
  +배우:동:457
   배우자:명:20
   배우적:관:1
   배움터:명:1
   배웅:명:1
  -배웅하다:동:14
  -배이다:동:3
  +배웅하:동:14
  +배이:동:3
   배임:명:8
   배임수재:명:2
   배재기:명:6
  @@ -19956,14 +19956,14 @@
   배전:명:3
   배점:명:1
   배정:명:5
  -배정되다:동:9
  -배정받다:동:1
  -배정하다:동:10
  +배정되:동:9
  +배정받:동:1
  +배정하:동:10
   배제:명:4
  -배제되다:동:28
  +배제되:동:28
   배제법:명:2
  -배제시키다:동:5
  -배제하다:동:47
  +배제시키:동:5
  +배제하:동:47
   배중률:명:5
   배지:명:6
   배지기:명:1
  @@ -19971,35 +19971,35 @@
   배차:명:11
   배창자:명:1
   배척:명:4
  -배척당하다:동:2
  -배척하다:동:11
  +배척당하:동:2
  +배척하:동:11
   배추:명:47
   배추김치:명:5
   배추벌레:명:1
   배출:명:24
   배출구:명:2
  -배출되다:동:20
  -배출되다:동:3
  +배출되:동:20
  +배출되:동:3
   배출량:명:6
   배출로:명:1
  -배출시키다:동:2
  -배출하다:동:15
  -배출하다:동:16
  +배출시키:동:2
  +배출하:동:15
  +배출하:동:16
   배치:명:29
   배치:명:9
   배치군:명:2
  -배치되다:동:2
  -배치되다:동:25
  -배치되다:동:6
  -배치하다:동:25
  -배치하다:동:7
  +배치되:동:2
  +배치되:동:25
  +배치되:동:6
  +배치하:동:25
  +배치하:동:7
   배타성:명:1
   배타적:관:5
   배타적:명:16
   배타주의:명:2
   배탈:명:3
  -배태되다:동:4
  -배태하다:동:4
  +배태되:동:4
  +배태하:동:4
   배터리:명:5
   배턴:명:14
   배통:명:2
  @@ -20007,14 +20007,14 @@
   배포:명:1
   배포:명:7
   배포권:명:1
  -배포되다:동:3
  -배포하다:동:13
  +배포되:동:3
  +배포하:동:13
   배합:명:8
  -배합되다:동:3
  +배합되:동:3
   배합토:명:5
  -배합하다:동:2
  +배합하:동:2
   배회:명:1
  -배회하다:동:11
  +배회하:동:11
   배후:명:32
   배후지:명:1
   백:관:89
  @@ -20044,7 +20044,7 @@
   백단나무:명:1
   백답:명:1
   백댄싱:명:1
  -백댄싱하다:동:1
  +백댄싱하:동:1
   백도라지꽃:명:1
   백두:관:1
   백두:명:2
  @@ -20093,7 +20093,7 @@
   백십:수:3
   백십육:수:3
   백십이:수:2
  -백안시하다:동:4
  +백안시하:동:4
   백약:명:1
   백양나무:명:7
   백억:수:1
  @@ -20140,14 +20140,14 @@
   백지상태:명:1
   백지장:명:6
   백지화:명:2
  -백지화되다:동:2
  -백지화시키다:동:1
  -백지화하다:동:4
  +백지화되:동:2
  +백지화시키:동:1
  +백지화하:동:4
   백질:명:1
   백차:명:15
   백천만:관:1
   백체:명:1
  -백출하다:동:1
  +백출하:동:1
   백치:명:4
   백칠십:관:1
   백칠십오:관:1
  @@ -20208,18 +20208,18 @@
   뱅뱅:부:1
   뱅크:명:4
   뱅킹:명:3
  -뱉다:동:39
  -뱉어지다:동:1
  +뱉:동:39
  +뱉어지:동:1
   버거:명:4
  -버겁다:형:9
  +버겁:형:9
   버그:명:1
  -버금가다:동:9
  +버금가:동:9
   버너:명:4
  -버둥거리다:동:3
  -버둥대다:동:1
  +버둥거리:동:3
  +버둥대:동:1
   버드나무:명:12
   버드나뭇과:명:1
  -버드러지다:동:1
  +버드러지:동:1
   버드쟁이나물:명:1
   버들:명:1
   버들개지:명:1
  @@ -20228,25 +20228,25 @@
   버러지:명:2
   버럭:부:21
   버럭버럭:부:3
  -버려두다:동:6
  -버려지다:동:40
  +버려두:동:6
  +버려지:동:40
   버력:명:3
  -버르집다:동:1
  +버르집:동:1
   버릇:명:90
  -버릇없다:형:10
  +버릇없:형:10
   버릇없이:부:1
  -버릇하다:보:2
  -버리다:동:310
  -버리다:보:1,330
  -버림받다:동:10
  +버릇하:보:2
  +버리:동:310
  +버리다:보:1330
  +버림받:동:10
   버마재비:명:1
  -버무리다:동:13
  -버물리다:동:1
  +버무리:동:13
  +버물리:동:1
   버버린:명:2
  -버벅거리다:동:1
  +버벅거리:동:1
   버블:명:1
  -버석거리다:동:1
  -버석버석하다:형:1
  +버석거리:동:1
  +버석버석하:형:1
   버선:명:5
   버섯:명:30
   버섯구름:명:2
  @@ -20258,7 +20258,7 @@
   버스표:명:1
   버전:명:9
   버젓이:부:25
  -버젓하다:형:5
  +버젓하:형:5
   버짐:명:1
   버찌:명:1
   버캐:명:1
  @@ -20268,51 +20268,51 @@
   버튼:명:18
   버튼식:명:1
   버튼형:명:1
  -버티다:동:85
  -버티어지다:동:1
  +버티:동:85
  +버티어지:동:1
   버팀기둥:명:1
   버팀대:명:1
   버팀목:명:4
   벅벅:부:3
   벅수:명:2
  -벅차다:형:29
  -벅차오르다:동:1
  -번:의:1,239
  -번갈다:동:41
  +벅차:형:29
  +벅차오르:동:1
  +번:의:1239
  +번갈:동:41
   번개:명:32
   번갯불:명:5
  -번거롭다:형:27
  +번거롭:형:27
   번견:명:1
   번뇌:명:10
  -번뇌하다:동:2
  -번다스럽다:형:1
  +번뇌하:동:2
  +번다스럽:형:1
   번데기:명:2
  -번득이다:동:6
  -번들거리다:동:14
  -번들대다:동:1
  +번득이:동:6
  +번들거리:동:14
  +번들대:동:1
   번들번들:부:1
  -번들번들해지다:동:1
  +번들번들해지:동:1
   번듯이:부:2
  -번듯하다:형:7
  +번듯하:형:7
   번뜩:부:3
  -번뜩거리다:동:1
  +번뜩거리:동:1
   번뜩번뜩:부:1
  -번뜩이다:동:4
  +번뜩이:동:4
   번민:명:8
  -번민하다:동:2
  +번민하:동:2
   번번이:부:15
   번복:명:2
  -번복되다:동:1
  -번복하다:동:4
  +번복되:동:1
  +번복하:동:4
   번성:명:4
  -번성하다:동:7
  -번성하다:형:1
  +번성하:동:7
  +번성하:형:1
   번식:명:18
   번식기:명:2
   번식력:명:5
   번식종:명:5
   번식지:명:5
  -번식하다:동:54
  +번식하:동:54
   번안곡:명:1
   번안극:명:1
   번역:명:23
  @@ -20321,7 +20321,7 @@
   번역권:명:2
   번역극:명:1
   번역기:명:3
  -번역되다:동:15
  +번역되:동:15
   번역료:명:1
   번역문:명:1
   번역본:명:1
  @@ -20329,83 +20329,83 @@
   번역어:명:2
   번역자:명:2
   번역진:명:1
  -번역하다:동:15
  +번역하:동:15
   번연히:부:1
   번영:명:15
  -번영하다:동:1
  +번영하:동:1
   번잡:명:1
  -번잡스럽다:형:2
  -번잡하다:형:8
  +번잡스럽:형:2
  +번잡하:형:8
   번지:명:16
  -번지다:동:60
  -번지다:보:1
  -번지레하다:형:1
  -번지르르하다:형:2
  +번지:동:60
  +번지:보:1
  +번지레하:형:1
  +번지르르하:형:2
   번지수:명:6
   번째:의:281
   번쩍:부:11
   번쩍:부:24
  -번쩍거리다:동:6
  -번쩍번쩍하다:동:1
  -번쩍번쩍하다:형:1
  -번쩍이다:동:12
  -번쩍하다:동:13
  +번쩍거리:동:6
  +번쩍번쩍하:동:1
  +번쩍번쩍하:형:1
  +번쩍이:동:12
  +번쩍하:동:13
   번창:명:1
  -번창하다:동:7
  -번하다:형:1
  +번창하:동:7
  +번하:형:1
   번호:명:45
   번호판:명:3
   번화:명:1
   번화가:명:9
  -번화하다:형:1
  -벋다:동:2
  -벋다:형:1
  +번화하:형:1
  +벋:동:2
  +벋:형:1
   벌:명:35
   벌:명:59
   벌:명:7
   벌:의:38
  -벌거벗기우다:동:1
  -벌거벗다:동:13
  +벌거벗기우:동:1
  +벌거벗:동:13
   벌거숭이:명:4
  -벌겋다:형:14
  -벌게지다:동:3
  +벌겋:형:14
  +벌게지:동:3
   벌과금:명:1
   벌금:명:46
   벌금형:명:5
  -벌다:동:1
  -벌다:동:209
  +벌:동:1
  +벌:동:209
   벌독:명:1
   벌떡:부:52
  -벌떡거리다:동:3
  +벌떡거리:동:3
   벌떡벌떡:부:1
   벌렁:부:7
   벌레:명:49
  -벌름거리다:동:2
  -벌리다:동:1
  -벌리다:동:81
  +벌름거리:동:2
  +벌리:동:1
  +벌리:동:81
   벌목:명:2
   벌목공:명:3
   벌목꾼:명:1
   벌바람:명:1
   벌벌:부:9
  -벌서다:동:7
  +벌서:동:7
   벌식:의:44
   벌써:부:319
   벌써리:부:1
  -벌어들이다:동:4
  -벌어지다:동:152
  -벌어지다:동:39
  +벌어들이:동:4
  +벌어지:동:152
  +벌어지:동:39
   벌이:명:9
  -벌이다:동:345
  -벌주다:동:1
  +벌이:동:345
  +벌주:동:1
   벌집:명:4
   벌창:명:1
   벌채:명:3
  -벌채되다:동:2
  +벌채되:동:2
   벌채업:명:1
  -벌채하다:동:3
  +벌채하:동:3
   벌초:명:1
  -벌충하다:동:1
  +벌충하:동:1
   벌칙:명:3
   벌침:명:1
   벌컥:부:10
  @@ -20421,20 +20421,20 @@
   범국민적:명:5
   범띠:명:3
   범람:명:9
  -범람하다:동:6
  +범람하:동:6
   범민족:명:1
   범벅:명:13
   범법:명:8
   범법자:명:2
   범부:명:2
   범상성:명:1
  -범상하다:형:3
  +범상하:형:3
   범선:명:2
   범세계적:관:3
   범세계적:명:2
   범속:명:5
   범속성:명:2
  -범속하다:형:5
  +범속하:형:5
   범시민:명:1
   범신론적:관:1
   범야권:명:1
  @@ -20455,8 +20455,8 @@
   범주적:명:3
   범지역:명:1
   범퍼:명:3
  -범하다:동:30
  -범하여지다:동:1
  +범하:동:30
  +범하여지:동:1
   범행:명:36
   법:명:1
   법:명:354
  @@ -20477,7 +20477,7 @@
   법랍:명:1
   법령:명:12
   법령안:명:1
  -법령화하다:동:1
  +법령화하:동:1
   법류:명:1
   법륜:명:1
   법률:명:128
  @@ -20499,8 +20499,8 @@
   법상:명:3
   법상종:명:1
   법석:명:7
  -법석거리다:동:1
  -법석이다:동:4
  +법석거리:동:1
  +법석이:동:4
   법성:명:2
   법신:명:1
   법안:명:29
  @@ -20523,7 +20523,7 @@
   법제:명:3
   법제적:관:2
   법제적:명:1
  -법제화하다:동:3
  +법제화하:동:3
   법조:명:4
   법조계:명:6
   법조문:명:1
  @@ -20538,32 +20538,32 @@
   법칙적:명:1
   법통:명:1
   법통:명:3
  -법하다:보:16
  +법하:보:16
   법학:명:18
   법학사:명:1
   법회:명:1
   벗:명:23
   벗:명:30
  -벗겨지다:동:15
  -벗기다:동:86
  -벗다:동:207
  -벗어나다:동:357
  -벗어던지다:동:5
  -벗어부치다:동:1
  -벗어제끼다:동:1
  -벗어지다:동:4
  -벗하다:동:1
  -벙글거리다:동:1
  -벙글다:동:1
  +벗겨지:동:15
  +벗기:동:86
  +벗:동:207
  +벗어나:동:357
  +벗어던지:동:5
  +벗어부치:동:1
  +벗어제끼:동:1
  +벗어지:동:4
  +벗하:동:1
  +벙글거리:동:1
  +벙글:동:1
   벙글벙글:부:2
   벙긋:부:1
  -벙벙하다:형:4
  -벙벙해지다:동:10
  +벙벙하:형:4
  +벙벙해지:동:10
   벙시레:부:1
   벙어리:명:11
   벙어리뻐꾸기:명:2
   벙커:명:2
  -벙하다:형:1
  +벙하:형:1
   벚꽃:명:14
   벚나무:명:3
   베:명:12
  @@ -20571,19 +20571,19 @@
   베갯머리:명:1
   베갯잇:명:1
   베고니아과:명:1
  -베끼다:동:16
  +베끼:동:16
   베니어:명:2
  -베다:동:53
  -베다:동:7
  +베:동:53
  +베:동:7
   베드:명:1
   베드타운:명:2
   베란다:명:10
   베스트:명:10
   베스트셀러:명:14
  -베어지다:동:1
  +베어지:동:1
   베옷:명:4
   베이글:명:5
  -베이다:동:8
  +베이:동:8
   베이비시터:명:1
   베이스:명:5
   베이스점핑:명:1
  @@ -20598,8 +20598,8 @@
   베적삼:명:1
   베테랑:명:13
   베팅:명:1
  -베풀다:동:43
  -베풀어지다:동:3
  +베풀:동:43
  +베풀어지:동:3
   벡터:명:4
   벤또:명:1
   벤자인:명:1
  @@ -20623,13 +20623,13 @@
   벼루:명:6
   벼룩:명:4
   벼룩시장:명:7
  -벼르다:동:21
  +벼르:동:21
   벼멸구:명:2
   벼슬:명:1
   벼슬:명:17
   벼슬길:명:5
   벼슬자리:명:1
  -벼슬하다:동:1
  +벼슬하:동:1
   벽:명:192
   벽걸이:명:2
   벽난로:명:10
  @@ -20658,50 +20658,50 @@
   변:명:2
   변:명:27
   변강쇠:명:1
  -변개되다:동:1
  +변개되:동:1
   변경:명:2
   변경:명:36
  -변경되다:동:6
  +변경되:동:6
   변경선:명:7
  -변경시키다:동:2
  +변경시키:동:2
   변경식:명:2
  -변경하다:동:20
  +변경하:동:20
   변괴:명:1
   변기:명:9
   변덕:명:5
  -변덕스럽다:형:10
  +변덕스럽:형:10
   변덕쟁이:명:1
   변돈:명:6
   변동:명:69
   변동기적:관:1
  -변동되다:동:2
  -변동시키다:동:1
  -변동하다:동:6
  +변동되:동:2
  +변동시키:동:1
  +변동하:동:6
   변두리:명:13
   변란:명:2
   변론:명:2
   변론권:명:1
   변론문:명:1
  -변론하다:동:2
  +변론하:동:2
   변명:명:34
  -변명하다:동:17
  +변명하:동:17
   변모:명:6
  -변모시키다:동:1
  -변모하다:동:15
  +변모시키:동:1
  +변모하:동:15
   변방:명:4
  -변변하다:형:11
  +변변하:형:11
   변변히:부:7
  -변별되다:동:1
  +변별되:동:1
   변별적:관:1
  -변별하다:동:1
  +변별하:동:1
   변복:명:1
   변비:명:29
   변사:명:3
   변사체:명:3
  -변상하다:동:1
  +변상하:동:1
   변색:명:1
  -변색되다:동:1
  -변색하다:동:1
  +변색되:동:1
  +변색하:동:1
   변성:명:4
   변성기:명:2
   변성암:명:1
  @@ -20711,29 +20711,29 @@
   변시체:명:1
   변신:명:31
   변신술:명:1
  -변신시키다:동:2
  -변신하다:동:15
  +변신시키:동:2
  +변신하:동:15
   변심:명:2
   변용:명:4
  -변용하다:동:2
  +변용하:동:2
   변의:명:1
   변이:명:2
   변인:명:6
   변장:명:1
  -변장하다:동:1
  +변장하:동:1
   변전소:명:1
   변절:명:2
   변절자:명:1
  -변절하다:동:1
  +변절하:동:1
   변제:명:2
   변조:명:1
   변조:명:1
   변조:명:9
   변조단:명:1
  -변조되다:동:1
  -변조시키다:동:1
  -변조하다:동:1
  -변조하다:동:1
  +변조되:동:1
  +변조시키:동:1
  +변조하:동:1
  +변조하:동:1
   변주:명:1
   변주곡:명:4
   변죽:명:1
  @@ -20741,29 +20741,29 @@
   변증법적:관:24
   변증법적:명:10
   변질:명:12
  -변질되다:동:9
  -변질시키다:동:3
  +변질되:동:9
  +변질시키:동:3
   변천:명:18
   변천사:명:4
  -변천하다:동:1
  +변천하:동:1
   변칙:명:5
   변칙적:관:2
   변칙적:명:6
   변태:명:2
   변태적:명:2
   변통:명:1
  -변통하다:동:1
  -변하다:동:317
  -변함없다:형:3
  +변통하:동:1
  +변하:동:317
  +변함없:형:3
   변함없이:부:12
  -변해지다:동:2
  +변해지:동:2
   변혁:명:40
   변혁기:명:5
  -변혁하다:동:4
  +변혁하:동:4
   변형:명:11
  -변형되다:동:8
  -변형시키다:동:15
  -변형하다:동:2
  +변형되:동:8
  +변형시키:동:15
  +변형하:동:2
   변호:명:6
   변호사:명:62
   변호사계:명:1
  @@ -20771,34 +20771,34 @@
   변호인단:명:3
   변호인제:명:3
   변호제:명:3
  -변호하다:동:10
  +변호하:동:10
   변화:명:642
   변화감:명:4
   변화구:명:2
  -변화되다:동:32
  +변화되:동:32
   변화무쌍:명:1
  -변화무쌍하다:형:5
  +변화무쌍하:형:5
   변화성:명:1
  -변화스럽다:형:2
  -변화시키다:동:45
  -변화하다:동:111
  +변화스럽:형:2
  +변화시키:동:45
  +변화하:동:111
   변환:명:8
  -변환되다:동:4
  -변환시키다:동:5
  -변환하다:동:1
  +변환되:동:4
  +변환시키:동:5
  +변환하:동:1
   별:관:79
   별:명:171
   별감:명:27
   별개:명:38
   별거:명:10
   별거:명:2
  -별거하다:동:1
  +별거하:동:1
   별것:명:18
   별관:명:4
   별금방:명:1
  -별나다:형:6
  +별나:형:6
   별나라:명:1
  -별다르다:형:58
  +별다르:형:58
   별달리:부:2
   별당:명:5
   별도:명:92
  @@ -20823,11 +20823,11 @@
   별생각:명:5
   별세:명:1
   별세계:명:4
  -별세하다:동:3
  +별세하:동:3
   별소리:명:1
   별수:명:8
   별순검:명:1
  -별스럽다:형:1
  +별스럽:형:1
   별시:명:1
   별식:명:4
   별안간:명:14
  @@ -20841,7 +20841,7 @@
   별점:명:1
   별정직:명:1
   별지장:명:2
  -별쭝나다:형:1
  +별쭝나:형:1
   별차:명:1
   별채:명:4
   별책:명:1
  @@ -20861,14 +20861,14 @@
   병간호:명:1
   병고:명:3
   병과:명:9
  -병과하다:동:1
  +병과하:동:1
   병구완:명:1
   병균:명:5
   병기:명:7
   병꽃나무:명:4
  -병나다:동:4
  +병나:동:4
   병동:명:5
  -병들다:동:43
  +병들:동:43
   병뚜껑:명:1
   병력:명:36
   병력:명:7
  @@ -20882,7 +20882,7 @@
   병리학과:명:1
   병리학적:관:1
   병립제:명:1
  -병립하다:동:1
  +병립하:동:1
   병마:명:2
   병맥주:명:1
   병명:명:7
  @@ -20894,12 +20894,12 @@
   병변:명:3
   병사:명:1
   병사:명:62
  -병사하다:동:1
  +병사하:동:1
   병상:명:7
   병색:명:1
   병서:명:1
   병설:명:1
  -병설하다:동:1
  +병설하:동:1
   병세:명:3
   병소:명:1
   병수:명:1
  @@ -20908,10 +20908,10 @@
   병신년:명:4
   병실:명:22
   병아리:명:15
  -병약하다:형:3
  +병약하:형:3
   병역:명:30
   병영:명:3
  -병용하다:동:1
  +병용하:동:1
   병원:명:344
   병원성:명:2
   병원장:명:5
  @@ -20930,23 +20930,23 @@
   병조림:명:1
   병조회풀:명:2
   병존:명:2
  -병존하다:동:4
  +병존하:동:4
   병중:명:2
   병참:명:1
   병충해:명:5
   병치레:명:5
  -병치레하다:동:1
  +병치레하:동:1
   병탈:명:1
   병폐:명:9
   병풍:명:7
   병합:명:5
  -병합되다:동:1
  -병합하다:동:4
  +병합되:동:1
  +병합하:동:4
   병해충:명:3
   병행:명:6
  -병행되다:동:12
  -병행시키다:동:2
  -병행하다:동:28
  +병행되:동:12
  +병행시키:동:2
  +병행하:동:28
   병환:명:4
   병후:명:2
   볕:명:16
  @@ -20957,8 +20957,8 @@
   보:의:6
   보강:명:2
   보강:명:9
  -보강되다:동:2
  -보강하다:동:14
  +보강되:동:2
  +보강하:동:14
   보건:명:26
   보건과:명:1
   보건소:명:4
  @@ -20968,50 +20968,50 @@
   보고:명:6
   보고:명:71
   보고대회:명:1
  -보고되다:동:9
  -보고드리다:동:1
  -보고받다:동:6
  +보고되:동:9
  +보고드리:동:1
  +보고받:동:6
   보고서:명:81
  -보고하다:동:51
  +보고하:동:51
   보고회:명:17
   보골:명:2
   보관:명:35
  -보관되다:동:7
  +보관되:동:7
   보관법:명:3
   보관소:명:10
  -보관시키다:동:1
  -보관하다:동:81
  +보관시키:동:1
  +보관하:동:81
   보관함:명:1
   보국대:명:1
   보국안민:명:1
   보궁:명:2
   보궐:명:17
   보균자:명:1
  -보글거리다:동:1
  +보글거리:동:1
   보글보글:부:4
   보금자리:명:18
   보급:명:38
   보급:명:6
   보급대:명:1
  -보급되다:동:41
  -보급되다:동:8
  +보급되:동:41
  +보급되:동:8
   보급로:명:3
   보급률:명:3
   보급소:명:2
  -보급시키다:동:3
  -보급하다:동:18
  -보급하다:동:4
  +보급시키:동:3
  +보급하:동:18
  +보급하:동:4
   보기:명:12
  -보내다:동:719
  -보내오다:동:21
  -보내지다:동:4
  +보내:동:719
  +보내오:동:21
  +보내지:동:4
   보너스:명:39
   보닛:명:1
  -보다:동:6,045
  -보다:보:5,231
  +보:동:6045
  +보다:보:5231
   보다:부:259
   보답:명:3
  -보답하다:동:16
  +보답하:동:16
   보도:명:1
   보도:명:1
   보도:명:10
  @@ -21019,15 +21019,15 @@
   보도:명:2
   보도국:명:1
   보도국장:명:2
  -보도되다:동:42
  +보도되:동:42
   보도블록:명:1
   보도진:명:3
  -보도하다:동:106
  +보도하:동:106
   보드:명:1
  -보드랍다:형:7
  +보드랍:형:7
   보드카:명:6
  -보들녹진하다:형:1
  -보듬다:동:7
  +보들녹진하:형:1
  +보듬:동:7
   보디빌더:명:3
   보디빌딩:명:7
   보디워크:명:1
  @@ -21036,13 +21036,13 @@
   보라매:명:1
   보라색:명:7
   보람:명:79
  -보람되다:형:2
  +보람되:형:2
   보랏빛:명:12
   보루:명:9
   보루:의:1
   보류:명:6
  -보류되다:동:1
  -보류하다:동:7
  +보류되:동:1
  +보류하:동:7
   보르꼬:명:1
   보름:명:33
   보름날:명:3
  @@ -21050,7 +21050,7 @@
   보름치:명:1
   보리:명:1
   보리:명:42
  -보리누름하다:동:1
  +보리누름하:동:1
   보리둑나무:명:3
   보리밥:명:8
   보리방아:명:1
  @@ -21067,26 +21067,26 @@
   보릿짚:명:2
   보모:명:15
   보무:명:1
  -보무당당하다:형:1
  +보무당당하:형:1
   보물:명:17
   보물단지:명:1
   보물섬:명:1
   보물찾기:명:3
   보바리적:관:1
   보배:명:4
  -보배롭다:형:1
  +보배롭:형:1
   보병:명:8
   보복:명:41
   보복성:명:1
   보복적:관:1
   보복적:명:3
  -보복하다:동:2
  +보복하:동:2
   보부상:명:7
   보사:명:1
   보살:명:18
   보살님:명:1
   보살상:명:2
  -보살피다:동:35
  +보살피:동:35
   보살핌:명:6
   보살행:명:1
   보상:명:23
  @@ -21095,22 +21095,22 @@
   보상과:명:1
   보상금:명:2
   보상금:명:5
  -보상되다:동:2
  -보상받다:동:10
  +보상되:동:2
  +보상받:동:10
   보상비:명:2
   보상성:명:3
   보상액:명:1
   보상적:관:2
   보상적:명:1
   보상제:명:2
  -보상하다:동:4
  -보상하다:동:4
  +보상하:동:4
  +보상하:동:4
   보색:명:2
   보석:명:12
   보석상:명:3
   보선:명:1
   보송보송:부:1
  -보송보송하다:형:5
  +보송보송하:형:5
   보수:명:11
   보수:명:26
   보수:명:30
  @@ -21121,11 +21121,11 @@
   보수주의:명:11
   보수주의자:명:5
   보수파:명:4
  -보수하다:동:2
  +보수하:동:2
   보스:명:3
   보슬보슬:부:1
  -보슬보슬하다:형:2
  -보슬보슬해지다:동:1
  +보슬보슬하:형:2
  +보슬보슬해지:동:1
   보습:명:5
   보시:명:2
   보신:명:1
  @@ -21133,8 +21133,8 @@
   보신용:명:1
   보신주의:명:2
   보신탕:명:6
  -보아주다:동:5
  -보아지다:동:4
  +보아주:동:5
  +보아지:동:4
   보안:명:30
   보안관:명:3
   보안대:명:5
  @@ -21144,107 +21144,107 @@
   보안원:명:1
   보약:명:14
   보양:명:1
  -보얗다:형:6
  -보여지다:동:26
  +보얗:형:6
  +보여지:동:26
   보온:명:13
   보온밥통:명:3
   보온병:명:5
  -보온하다:동:2
  +보온하:동:2
   보완:명:22
  -보완되다:동:8
  +보완되:동:8
   보완적:관:1
   보완적:명:7
   보완책:명:2
  -보완하다:동:35
  +보완하:동:35
   보위:명:3
   보위:명:5
   보위부:명:2
   보위부장:명:1
   보위원:명:4
  -보위하다:동:3
  +보위하:동:3
   보유:명:40
   보유국:명:1
  -보유되다:동:1
  +보유되:동:1
   보유량:명:2
   보유설:명:1
   보유액:명:1
   보유율:명:1
   보유자:명:2
   보유주:명:1
  -보유하다:동:2
  -보유하다:동:46
  +보유하:동:2
  +보유하:동:46
   보육원:명:3
  -보육하다:동:1
  +보육하:동:1
   보은:명:3
   보음제:명:1
   보이:명:2
  -보이다:동:1,121
  -보이다:동:1,522
  +보이:동:1121
  +보이:동:1522
   보이콧:명:8
  -보이콧하다:동:6
  +보이콧하:동:6
   보인:명:2
   보일러:명:4
   보일러공:명:1
   보자기:명:34
  -보잘것없다:형:20
  +보잘것없:형:20
   보장:명:60
   보장금:명:1
  -보장되다:동:1
  -보장되다:동:53
  -보장받다:동:8
  +보장되:동:1
  +보장되:동:53
  +보장받:동:8
   보장적:관:2
  -보장하다:동:63
  -보장허다:동:1
  +보장하:동:63
  +보장허:동:1
   보전:명:44
  -보전되다:동:1
  -보전하다:동:12
  -보전하다:동:3
  +보전되:동:1
  +보전하:동:12
  +보전하:동:3
   보정:명:2
   보조:명:48
   보조:명:5
   보조개:명:15
   보조금:명:11
   보조물:명:1
  -보조받다:동:3
  +보조받:동:3
   보조액:명:1
   보조원:명:1
   보조율:명:1
   보조적:관:1
   보조적:명:2
  -보조하다:동:3
  +보조하:동:3
   보존:명:41
  -보존되다:동:18
  +보존되:동:18
   보존법:명:1
   보존자:명:1
  -보존하다:동:35
  +보존하:동:35
   보존회:명:1
   보좌:명:11
   보좌관:명:21
   보좌관실:명:1
   보좌역:명:1
   보좌진:명:1
  -보좌하다:동:7
  +보좌하:동:7
   보주:명:1
   보증:명:44
   보증과:명:2
   보증금:명:9
  -보증되다:동:1
  +보증되:동:1
   보증서:명:9
   보증인:명:13
  -보증하다:동:2
  +보증하:동:2
   보직:명:17
   보직자:명:1
  -보채다:동:8
  +보채:동:8
   보초:명:6
   보충:명:27
  -보충되다:동:2
  +보충되:동:2
   보충역:명:6
   보충적:명:2
   보충제:명:1
  -보충하다:동:25
  +보충하:동:25
   보컬:명:2
  -보태다:동:35
  -보태지다:동:5
  +보태:동:35
  +보태지:동:5
   보택이:명:1
   보탬:명:15
   보통:명:164
  @@ -21259,18 +21259,18 @@
   보편적:관:33
   보편적:명:58
   보편주의:명:3
  -보편타당하다:형:2
  +보편타당하:형:2
   보편화:명:3
  -보편화되다:동:23
  -보편화하다:동:3
  +보편화되:동:23
  +보편화하:동:3
   보폭:명:2
  -보필하다:동:1
  -보하다:동:2
  +보필하:동:1
  +보하:동:2
   보학:명:2
   보합권:명:1
   보행:명:7
   보행자:명:7
  -보행하다:동:1
  +보행하:동:1
   보험:명:89
   보험금:명:4
   보험료:명:7
  @@ -21285,8 +21285,8 @@
   보혁:명:2
   보혈:명:2
   보호:명:237
  -보호되다:동:41
  -보호받다:동:8
  +보호되:동:41
  +보호받:동:8
   보호법:명:1
   보호석:명:1
   보호설:명:1
  @@ -21296,14 +21296,14 @@
   보호주의:명:1
   보호직:명:1
   보호책:명:4
  -보호하다:동:138
  +보호하:동:138
   보화:명:1
   보훈:명:1
   복:명:46
   복강:명:1
   복강경:명:3
   복개:명:3
  -복개되다:동:2
  +복개되:동:2
   복고:명:3
   복고적:관:1
   복고주의:명:5
  @@ -21312,22 +21312,22 @@
   복구:명:1
   복구:명:17
   복구공사:명:1
  -복구되다:동:1
  -복구하다:동:4
  +복구되:동:1
  +복구하:동:4
   복권:명:12
   복권:명:6
  -복권되다:동:1
  -복권시키다:동:1
  +복권되:동:1
  +복권시키:동:1
   복권주의자:명:1
   복귀:명:10
  -복귀되다:동:1
  -복귀시키다:동:3
  -복귀하다:동:18
  +복귀되:동:1
  +복귀시키:동:3
  +복귀하:동:18
   복날:명:2
   복냉:명:1
   복덕방:명:5
   복도:명:83
  -복되다:형:10
  +복되:형:10
   복락:명:1
   복리:명:3
   복마:명:1
  @@ -21338,8 +21338,8 @@
   복무:명:26
   복무규정:명:1
   복무자:명:1
  -복무하다:동:5
  -복받치다:동:10
  +복무하:동:5
  +복받치:동:10
   복부:명:3
   복사:명:1
   복사:명:20
  @@ -21350,28 +21350,28 @@
   복사뼈:명:2
   복사실:명:1
   복사판:명:1
  -복사하다:동:19
  +복사하:동:19
   복상사:명:1
   복색:명:3
   복서:명:3
   복선:명:1
  -복선화되다:동:1
  +복선화되:동:1
   복속:명:1
  -복속되다:동:2
  -복속시키다:동:1
  +복속되:동:2
  +복속시키:동:1
   복수:명:1
   복수:명:20
   복수:명:26
   복수심:명:2
   복수안:명:1
   복수초:명:5
  -복수하다:동:4
  +복수하:동:4
   복수화:명:1
   복숭아:명:10
   복숭아뼈:명:1
  -복스럽다:형:4
  +복스럽:형:4
   복습:명:6
  -복습하다:동:7
  +복습하:동:7
   복식:명:150
   복식:명:20
   복식:명:5
  @@ -21385,39 +21385,39 @@
   복어:명:20
   복어잡이:명:5
   복역:명:1
  -복역하다:동:3
  +복역하:동:3
   복엽:명:1
   복용:명:7
  -복용시키다:동:1
  -복용하다:동:17
  +복용시키:동:1
  +복용하:동:17
   복원:명:30
  -복원되다:동:5
  -복원시키다:동:1
  -복원하다:동:11
  +복원되:동:5
  +복원시키:동:1
  +복원하:동:11
   복음:명:3
   복음주의:명:1
   복잡:명:3
  -복잡다기하다:형:3
  -복잡다단하다:형:3
  +복잡다기하:형:3
  +복잡다단하:형:3
   복잡성:명:4
   복잡이:명:1
  -복잡하다:형:171
  -복잡해지다:동:11
  +복잡하:형:171
  +복잡해지:동:11
   복잡화:명:2
  -복잡화하다:동:1
  +복잡화하:동:1
   복장:명:1
   복장:명:13
   복장미:명:1
   복적:명:5
   복제:명:34
   복제권:명:1
  -복제되다:동:3
  +복제되:동:3
   복제물:명:1
   복제판:명:1
  -복제하다:동:10
  +복제하:동:10
   복종:명:15
  -복종시키다:동:2
  -복종하다:동:12
  +복종시키:동:2
  +복종하:동:12
   복중:명:2
   복지:명:2
   복지:명:49
  @@ -21428,32 +21428,32 @@
   복지학과:명:1
   복직:명:17
   복직근:명:1
  -복직되다:동:2
  -복직시키다:동:1
  -복직하다:동:1
  +복직되:동:2
  +복직시키:동:1
  +복직하:동:1
   복진:명:1
   복창:명:3
  -복창하다:동:1
  +복창하:동:1
   복토:명:1
   복통:명:4
  -복통하다:형:1
  +복통하:형:1
   복판:명:3
   복학:명:20
   복학생:명:5
  -복학시키다:동:2
  -복학하다:동:5
  +복학시키:동:2
  +복학하:동:5
   복합:명:19
  -복합되다:동:2
  +복합되:동:2
   복합성:명:3
   복합적:관:11
   복합적:명:26
   복합체:명:7
  -복합하다:동:2
  -볶다:동:133
  -볶아지다:동:1
  +복합하:동:2
  +볶:동:133
  +볶아지:동:1
   볶음:명:14
   볶음밥:명:20
  -볶이다:동:1
  +볶이:동:1
   본:관:29
   본:명:4
   본:의:1
  @@ -21464,8 +21464,8 @@
   본격적:관:2
   본격적:명:143
   본격화:명:1
  -본격화되다:동:11
  -본격화하다:동:9
  +본격화되:동:11
  +본격화하:동:9
   본고:명:2
   본고사:명:10
   본고장:명:4
  @@ -21486,7 +21486,7 @@
   본드:명:4
   본디:명:13
   본때:명:2
  -본뜨다:동:26
  +본뜨:동:26
   본뜻:명:3
   본래:명:101
   본래적:관:1
  @@ -21502,7 +21502,7 @@
   본문:명:14
   본문체:명:7
   본바탕:명:4
  -본받다:동:34
  +본받:동:34
   본뱃사람:명:6
   본변:명:1
   본보:명:1
  @@ -21550,7 +21550,7 @@
   본처:명:5
   본청:명:4
   본체:명:22
  -본체만체하다:동:1
  +본체만체하:동:1
   본체적:명:1
   본토:명:4
   본향:명:1
  @@ -21563,22 +21563,22 @@
   볼기:명:2
   볼때기:명:1
   볼록:부:12
  -볼록하다:형:6
  +볼록하:형:6
   볼륨:명:5
   볼륨감:명:3
   볼링:명:14
   볼링공:명:1
  -볼메다:형:2
  +볼메:형:2
   볼멘소리:명:9
   볼모:명:3
   볼써:부:1
  -볼썽사납다:형:5
  +볼썽사납:형:5
   볼일:명:26
   볼트:명:4
   볼트:의:3
   볼펜:명:16
   볼품:명:3
  -볼품없다:형:7
  +볼품없:형:7
   봄:명:229
   봄가을:명:3
   봄기운:명:2
  @@ -21622,17 +21622,17 @@
   봉공:명:1
   봉급:명:18
   봉급날:명:1
  -봉급받다:동:1
  +봉급받:동:1
   봉급생활자:명:4
   봉급자:명:8
   봉긋:부:1
  -봉긋하다:형:1
  +봉긋하:형:1
   봉기:명:7
  -봉기하다:동:1
  +봉기하:동:1
   봉다리:명:1
   봉당:명:2
   봉독:명:1
  -봉독하다:동:1
  +봉독하:동:1
   봉변:명:7
   봉분:명:1
   봉사:명:1
  @@ -21642,55 +21642,55 @@
   봉사단:명:3
   봉사원:명:1
   봉사자:명:9
  -봉사하다:동:22
  +봉사하:동:22
   봉선화:명:3
   봉쇄:명:11
  -봉쇄되다:동:8
  +봉쇄되:동:8
   봉쇄령:명:1
   봉쇄망:명:1
  -봉쇄하다:동:8
  +봉쇄하:동:8
   봉수대:명:1
   봉숭:명:1
   봉숭아:명:12
  -봉안되다:동:3
  -봉안하다:동:2
  +봉안되:동:3
  +봉안하:동:2
   봉양:명:3
  -봉양하다:동:2
  +봉양하:동:2
   봉오리:명:1
   봉우리:명:24
   봉인:명:6
  -봉인되다:동:1
  -봉인하다:동:5
  +봉인되:동:1
  +봉인하:동:5
   봉제:명:3
   봉제공:명:1
   봉제업:명:1
   봉지:명:33
   봉직:명:2
  -봉직하다:동:1
  +봉직하:동:1
   봉착:명:1
  -봉착하다:동:5
  +봉착하:동:5
   봉창:명:1
   봉창:명:2
   봉투:명:77
  -봉하다:동:2
  -봉하다:동:2
  -봉함하다:동:1
  +봉하:동:2
  +봉하:동:2
  +봉함하:동:1
   봉합:명:1
   봉합:명:2
   봉합선:명:1
  -봉합하다:동:2
  -봉행하다:동:2
  +봉합하:동:2
  +봉행하:동:2
   봉화:명:3
   봉화대:명:5
   봉환:명:11
   봉환단:명:1
  -봉환되다:동:1
  -봉환하다:동:6
  +봉환되:동:1
  +봉환하:동:6
   봉황:명:3
  -봐주다:동:11
  -뵈다:동:30
  -뵈다:동:38
  -뵙다:동:41
  +봐주:동:11
  +뵈:동:30
  +뵈:동:38
  +뵙:동:41
   부:명:1
   부:명:30
   부:명:4
  @@ -21702,24 +21702,24 @@
   부가세:명:5
   부가적:명:2
   부각:명:6
  -부각되다:동:15
  -부각시키다:동:23
  -부각하다:동:5
  +부각되:동:15
  +부각시키:동:23
  +부각하:동:5
   부감법:명:1
   부강:명:1
   부검:명:12
  -부검하다:동:1
  -부결시키다:동:1
  +부검하:동:1
  +부결시키:동:1
   부계:명:6
   부고:명:6
   부곡:명:7
   부곡민:명:4
   부곡제:명:14
   부과:명:16
  -부과되다:동:8
  -부과받다:동:1
  +부과되:동:8
  +부과받:동:1
   부과율:명:2
  -부과하다:동:22
  +부과하:동:22
   부관:명:1
   부교감:명:1
   부교수:명:5
  @@ -21741,44 +21741,44 @@
   부기장:명:1
   부꾸미:명:3
   부끄러움:명:26
  -부끄러워지다:동:6
  -부끄러워하다:동:11
  +부끄러워지:동:6
  +부끄러워하:동:11
   부끄럼:명:1
  -부끄럽다:형:91
  +부끄럽:형:91
   부나비:명:1
   부내:명:1
   부내:명:1
   부녀:명:2
   부녀:명:8
   부녀자:명:9
  -부녀화되다:동:1
  +부녀화되:동:1
   부녀회:명:19
   부녀회원:명:3
   부녀회장:명:8
  -부닥치다:동:10
  +부닥치:동:10
   부단장:명:1
  -부단하다:형:5
  +부단하:형:5
   부단히:부:9
   부담:명:191
   부담감:명:15
   부담금:명:18
  -부담되다:동:6
  +부담되:동:6
   부담률:명:1
  -부담스러워하다:동:2
  -부담스럽다:형:20
  -부담시키다:동:3
  +부담스러워하:동:2
  +부담스럽:형:20
  +부담시키:동:3
   부담액:명:9
   부담자:명:1
   부담자층:명:1
   부담층:명:3
  -부담하다:동:55
  +부담하:동:55
   부당:명:23
   부당성:명:3
  -부당하다:형:55
  +부당하:형:55
   부대:명:12
   부대:명:4
   부대:명:86
  -부대끼다:동:10
  +부대끼:동:10
   부대변인:명:5
   부대설비:명:1
   부대시설:명:6
  @@ -21787,14 +21787,14 @@
   부대표:명:1
   부덕:명:1
   부덕:명:4
  -부덕하다:형:1
  +부덕하:형:1
   부도:명:1
   부도:명:16
   부도:명:2
  -부도나다:동:1
  +부도나:동:1
   부도덕:명:3
   부도덕성:명:3
  -부도덕하다:형:14
  +부도덕하:형:14
   부도심:명:3
   부도율:명:5
   부동:명:1
  @@ -21805,64 +21805,64 @@
   부동산업자:명:1
   부동자세:명:4
   부동표:명:1
  -부동화하다:동:1
  +부동화하:동:1
   부두:명:33
   부두목:명:3
   부둣가:명:6
  -부둥켜안다:동:12
  -부드러워지다:동:10
  -부드럽다:형:212
  +부둥켜안:동:12
  +부드러워지:동:10
  +부드럽:형:212
   부득:부:1
   부득부득:부:2
   부득불:부:3
   부득이:부:7
  -부득이하다:형:5
  +부득이하:형:5
   부들:명:1
  -부들대다:동:1
  +부들대:동:1
   부들부들:부:10
   부디:부:18
   부디스트:명:5
  -부딪기다:동:1
  -부딪다:동:3
  -부딪치다:동:81
  -부딪히다:동:33
  +부딪기:동:1
  +부딪:동:3
  +부딪치:동:81
  +부딪히:동:33
   부뚜막:명:4
  -부라리다:동:9
  +부라리:동:9
   부락:명:21
   부랑아:명:2
   부랑자:명:2
  -부랑하다:동:1
  +부랑하:동:1
   부랴부랴:부:10
   부랴사랴:부:1
  -부러뜨리다:동:5
  -부러워하다:동:32
  -부러지다:동:43
  +부러뜨리:동:5
  +부러워하:동:32
  +부러지:동:43
   부럼:명:7
  -부럽다:형:89
  +부럽:형:89
   부레옥잠:명:2
   부력:명:10
   부록:명:9
   부류:명:18
  -부르걷다:동:1
  -부르다:동:858
  -부르다:형:29
  +부르걷:동:1
  +부르:동:858
  +부르:형:29
   부르르:부:7
  -부르릉거리다:동:1
  +부르릉거리:동:1
   부르주아:명:22
   부르주아적:명:1
   부르주아지:명:4
  -부르쥐다:동:1
  -부르짖다:동:16
  -부르트다:동:8
  +부르쥐:동:1
  +부르짖:동:16
  +부르트:동:8
   부름:명:1
  -부릅뜨다:동:13
  +부릅뜨:동:13
   부리:명:21
   부리나케:부:9
  -부리다:동:138
  -부리다:동:22
  +부리:동:138
  +부리:동:22
   부리다:보:2
   부리방제:명:1
  -부리부리하다:형:1
  +부리부리하:형:1
   부메랑:명:1
   부면:명:2
   부모:명:327
  @@ -21874,7 +21874,7 @@
   부민:명:1
   부반장:명:7
   부병제:명:2
  -부복하다:동:1
  +부복하:동:1
   부부:명:227
   부부간:명:5
   부부대변인:명:1
  @@ -21889,7 +21889,7 @@
   부분전:명:1
   부분품:명:2
   부분화:명:1
  -부분화되다:동:1
  +부분화되:동:1
   부비부비:부:1
   부사:명:1
   부사:명:3
  @@ -21900,30 +21900,30 @@
   부산:명:1
   부산물:명:7
   부산붓꽃:명:1
  -부산스럽다:형:1
  +부산스럽:형:1
   부산스레:부:1
  -부산하다:형:8
  +부산하:형:8
   부삽:명:1
   부상:명:1
   부상:명:16
   부상:명:2
   부상:명:3
   부상:명:34
  -부상당하다:동:6
  -부상되다:동:4
  -부상시키다:동:1
  +부상당하:동:6
  +부상되:동:4
  +부상시키:동:1
   부상자:명:6
   부상적:관:1
  -부상하다:동:20
  -부상하다:동:7
  +부상하:동:20
  +부상하:동:7
   부서:명:46
   부서기:명:1
  -부서뜨리다:동:1
  +부서뜨리:동:1
   부서명:명:2
   부서장:명:2
  -부서지다:동:50
  +부서지:동:50
   부석:명:1
  -부석부석하다:형:3
  +부석부석하:형:3
   부설:명:11
   부성애적:관:1
   부세:명:6
  @@ -21936,57 +21936,57 @@
   부속실장실:명:1
   부속지:명:1
   부속품:명:3
  -부송하다:동:1
  +부송하:동:1
   부수:명:3
   부수:명:5
  -부수다:동:33
  -부수되다:동:2
  +부수:동:33
  +부수되:동:2
   부수상:명:3
   부수적:관:1
   부수적:명:8
   부스:명:17
   부스러기:명:6
  -부스러뜨리다:동:1
  -부스러지다:동:2
  -부스럭거리다:동:2
  +부스러뜨리:동:1
  +부스러지:동:2
  +부스럭거리:동:2
   부스럭부스럭:부:3
   부스럼:명:2
   부스스:부:4
  -부스스하다:형:4
  +부스스하:형:4
   부스터:명:1
   부슬부슬:부:3
   부시:명:1
  -부시다:동:1
  -부시다:형:9
  +부시:동:1
  +부시:형:9
   부시솝:명:1
   부시시:부:2
   부식:명:14
   부식거리:명:2
  -부식되다:동:6
  +부식되:동:6
   부식비:명:3
  -부식시키다:동:1
  +부식시키:동:1
   부식적:관:1
   부식질:명:2
   부신:명:1
   부실:명:16
   부실시공:명:1
  -부실하다:형:25
  -부실화되다:동:1
  +부실하:형:25
  +부실화되:동:1
   부심:명:4
   부심:명:4
  -부심하다:동:3
  +부심하:동:3
   부싯돌:명:4
   부아:명:6
   부양:명:12
   부양:명:7
   부양비:명:1
  -부양시키다:동:2
  +부양시키:동:2
   부양자:명:3
   부양책:명:7
  -부양하다:동:1
  -부양하다:동:8
  -부어오르다:동:6
  -부어지다:동:2
  +부양하:동:1
  +부양하:동:8
  +부어오르:동:6
  +부어지:동:2
   부업:명:10
   부엉새:명:1
   부엉이:명:1
  @@ -21998,23 +21998,23 @@
   부엌일:명:7
   부여:명:1
   부여:명:18
  -부여되다:동:11
  -부여받다:동:11
  -부여안다:동:3
  -부여잡다:동:7
  -부여하다:동:84
  +부여되:동:11
  +부여받:동:11
  +부여안:동:3
  +부여잡:동:7
  +부여하:동:84
   부역:명:3
   부역:명:3
   부역장:명:1
   부역장:명:1
   부연:명:1
   부연구:명:1
  -부연하다:동:1
  +부연하:동:1
   부영양화:명:13
  -부영양화되다:동:1
  -부영양화시키다:동:1
  -부옇다:형:6
  -부예지다:동:2
  +부영양화되:동:1
  +부영양화시키:동:1
  +부옇:형:6
  +부예지:동:2
   부왕:명:6
   부용꽃:명:1
   부원:명:1
  @@ -22023,15 +22023,15 @@
   부위:명:104
   부위원장:명:11
   부유:명:1
  -부유스름하다:형:2
  +부유스름하:형:2
   부유층:명:9
  -부유하다:동:1
  -부유하다:형:1
  -부유하다:형:13
  -부유해지다:동:1
  +부유하:동:1
  +부유하:형:1
  +부유하:형:13
  +부유해지:동:1
   부윤:명:4
   부음:명:2
  -부응하다:동:28
  +부응하:동:28
   부의:명:1
   부의금:명:1
   부의장:명:4
  @@ -22042,21 +22042,21 @@
   부인:명:23
   부인과:명:1
   부인복:명:1
  -부인하다:동:57
  +부인하:동:57
   부임:명:7
  -부임되다:동:1
  +부임되:동:1
   부임지:명:1
  -부임하다:동:22
  +부임하:동:22
   부자:명:4
   부자:명:65
   부자:명:9
   부자간:명:2
  -부자연스럽다:형:11
  +부자연스럽:형:11
   부자유:명:3
  -부자유스럽다:형:2
  +부자유스럽:형:2
   부자유자:명:3
   부자유친:명:2
  -부자유하다:형:1
  +부자유하:형:1
   부자지간:명:1
   부작:의:6
   부작용:명:79
  @@ -22069,19 +22069,19 @@
   부재료:명:2
   부재자:명:12
   부재중:명:2
  -부재하다:동:10
  +부재하:동:10
   부쟁이:명:1
   부적:명:1
   부적격:명:1
   부적격자:명:2
  -부적당하다:형:5
  +부적당하:형:5
   부적응:명:1
   부적응증:명:9
  -부적절하다:형:6
  +부적절하:형:6
   부적정:명:2
   부적합:명:1
   부적합성:명:1
  -부적합하다:형:6
  +부적합하:형:6
   부전공:명:4
   부전자전:명:1
   부전증:명:1
  @@ -22091,30 +22091,30 @@
   부정:명:24
   부정:명:3
   부정기적:명:3
  -부정되다:동:9
  +부정되:동:9
   부정론:명:7
   부정문:명:1
   부정부패:명:28
   부정사:명:1
   부정적:관:29
   부정적:명:59
  -부정직하다:형:1
  -부정하다:동:70
  -부정하다:형:2
  -부정하다:형:3
  -부정하다:형:7
  +부정직하:형:1
  +부정하:동:70
  +부정하:형:2
  +부정하:형:3
  +부정하:형:7
   부정행위:명:2
  -부정확하다:형:6
  +부정확하:형:6
   부제:명:1
   부제:명:5
   부조:명:2
   부조:명:5
  -부조되다:동:2
  +부조되:동:2
   부조리:명:25
   부조리극풍:명:2
  -부조리하다:형:1
  +부조리하:형:1
   부조실:명:1
  -부조하다:동:1
  +부조하:동:1
   부조화:명:7
   부족:명:118
   부족:명:125
  @@ -22125,8 +22125,8 @@
   부족장:명:1
   부족적:명:1
   부족제:명:2
  -부족하다:형:185
  -부족해지다:동:1
  +부족하:형:185
  +부족해지:동:1
   부존:명:1
   부존자원:명:1
   부종:명:3
  @@ -22137,32 +22137,32 @@
   부지기수:명:8
   부지깽이:명:3
   부지런:명:2
  -부지런하다:형:15
  -부지런해지다:동:1
  +부지런하:형:15
  +부지런해지:동:1
   부지런히:부:36
   부지부장:명:1
   부지불식간:명:7
   부지중:명:1
  -부지하다:동:4
  +부지하:동:4
   부직포:명:3
   부진:명:43
  -부진하다:형:9
  -부진해지다:동:2
  -부질없다:형:9
  +부진하:형:9
  +부진해지:동:2
  +부질없:형:9
   부쩍:부:23
   부차관보:명:1
   부차장:명:3
   부차적:관:1
   부차적:명:9
   부착:명:4
  -부착되다:동:7
  -부착시키다:동:3
  -부착하다:동:8
  +부착되:동:7
  +부착시키:동:3
  +부착하:동:8
   부채:명:15
   부채:명:21
   부채꼴:명:1
   부채질:명:3
  -부채질하다:동:8
  +부채질하:동:8
   부채춤:명:2
   부챗살:명:7
   부처:명:1
  @@ -22170,21 +22170,21 @@
   부처장:명:1
   부천계:명:3
   부청장:명:2
  -부쳐지다:동:4
  +부쳐지:동:4
   부총리:명:40
   부총장:명:6
   부총재:명:3
   부추:명:9
  -부추기다:동:41
  +부추기:동:41
   부추잡채:명:1
   부추전:명:1
   부축:명:3
  -부축하다:동:7
  -부치다:동:1
  -부치다:동:4
  -부치다:동:41
  -부치다:동:5
  -부치다:동:8
  +부축하:동:7
  +부치:동:1
  +부치:동:4
  +부치:동:41
  +부치:동:5
  +부치:동:8
   부칙:명:2
   부친:명:31
   부친상:명:1
  @@ -22192,62 +22192,62 @@
   부침땅:명:1
   부킹:명:1
   부탁:명:56
  -부탁드리다:동:7
  -부탁받다:동:3
  -부탁하다:동:71
  +부탁드리:동:7
  +부탁받:동:3
  +부탁하:동:71
   부탄가스:명:4
   부탄디올:명:1
   부통령:명:3
   부통령제:명:1
   부팅:명:2
   부패:명:24
  -부패당하다:동:1
  -부패되다:동:1
  +부패당하:동:1
  +부패되:동:1
   부패상:명:1
  -부패시키다:동:2
  -부패하다:동:30
  +부패시키:동:2
  +부패하:동:30
   부표:명:3
  -부표하다:동:1
  -부풀다:동:35
  -부풀려지다:동:2
  -부풀리다:동:13
  +부표하:동:1
  +부풀:동:35
  +부풀려지:동:2
  +부풀리:동:13
   부품:명:58
   부품도:명:7
  -부품화하다:동:1
  +부품화하:동:1
   부피:명:15
   부하:명:1
   부하:명:17
  -부하다:동:1
  -부하다:형:1
  -부하여지다:동:1
  -부합되다:동:10
  -부합하다:동:13
  +부하:동:1
  +부하:형:1
  +부하여지:동:1
  +부합되:동:10
  +부합하:동:13
   부항:명:1
   부호:명:1
   부호:명:8
   부호화:명:1
  -부호화되다:동:1
  -부호화하다:동:1
  +부호화되:동:1
  +부호화하:동:1
   부화:명:3
   부화기:명:1
   부화율:명:1
   부화장:명:1
  -부화하다:동:3
  +부화하:동:3
   부활:명:19
  -부활되다:동:12
  -부활시키다:동:10
  +부활되:동:12
  +부활시키:동:10
   부활전:명:1
   부활절:명:3
   부활제:명:1
  -부활하다:동:9
  +부활하:동:9
   부황:명:4
   부회장:명:55
   부회장직:명:1
   부흥:명:13
   부흥군:명:3
   부흥기:명:5
  -부흥시키다:동:3
  -부흥하다:동:1
  +부흥시키:동:3
  +부흥하:동:1
   북:명:13
   북:명:2
   북:명:24
  @@ -22259,8 +22259,8 @@
   북극권:명:2
   북녘:명:1
   북단:명:2
  -북돋다:동:5
  -북돋우다:동:7
  +북돋:동:5
  +북돋우:동:7
   북동:명:4
   북동부:명:4
   북동쪽:명:11
  @@ -22269,7 +22269,7 @@
   북문:명:11
   북반구:명:6
   북반부:명:1
  -북받치다:동:4
  +북받치:동:4
   북방:명:34
   북방계:명:4
   북방애기박쥐:명:1
  @@ -22282,10 +22282,10 @@
   북북동:명:1
   북산:명:5
   북상:명:4
  -북상하다:동:2
  +북상하:동:2
   북새통:명:7
   북서:명:8
  -북서류하다:동:2
  +북서류하:동:2
   북서쪽:명:14
   북서풍:명:2
   북소리:명:4
  @@ -22295,12 +22295,12 @@
   북어포:명:1
   북엇국:명:1
   북위:명:22
  -북적거리다:동:6
  -북적대다:동:5
  -북적이다:동:2
  +북적거리:동:6
  +북적대:동:5
  +북적이:동:2
   북조:명:3
   북진:명:2
  -북진하다:동:2
  +북진하:동:2
   북쪽:명:100
   북춤:명:1
   북측:명:1
  @@ -22321,12 +22321,12 @@
   분:의:630
   분가:명:3
   분가루:명:1
  -분가하다:동:4
  +분가하:동:4
   분간:명:5
  -분간하다:동:11
  +분간하:동:11
   분갈이:명:9
  -분갈이하다:동:4
  -분개하다:동:8
  +분갈이하:동:4
  +분개하:동:8
   분계선:명:6
   분과:명:14
   분과:명:8
  @@ -22339,32 +22339,32 @@
   분권화:명:3
   분규:명:58
   분급:명:9
  -분급되다:동:5
  -분급받다:동:2
  +분급되:동:5
  +분급받:동:2
   분급제:명:4
  -분급하다:동:2
  +분급하:동:2
   분기:명:1
   분기:명:26
   분기점:명:6
   분기탱천:명:1
  -분기탱천하다:동:1
  +분기탱천하:동:1
   분꽃:명:1
   분네:의:2
   분노:명:82
   분노감:명:1
  -분노하다:동:15
  +분노하:동:15
   분뇨:명:5
   분단:명:24
   분단:명:50
  -분단당하다:동:2
  -분단되다:동:3
  +분단당하:동:2
  +분단되:동:3
   분단장:명:1
  -분단하다:동:2
  +분단하:동:2
   분담:명:34
   분담금:명:5
   분담론:명:7
   분담률:명:1
  -분담하다:동:13
  +분담하:동:13
   분당:명:1
   분대:명:1
   분대원:명:1
  @@ -22375,89 +22375,89 @@
   분루:명:1
   분류:명:1
   분류:명:22
  -분류되다:동:31
  +분류되:동:31
   분류사:명:1
   분류표:명:1
  -분류하다:동:43
  +분류하:동:43
   분리:명:59
  -분리되다:동:52
  +분리되:동:52
   분리론:명:1
   분리수거:명:13
  -분리수거되다:동:1
  -분리수거하다:동:1
  -분리시키다:동:14
  +분리수거되:동:1
  +분리수거하:동:1
  +분리시키:동:14
   분리적:명:2
   분리주의:명:3
  -분리하다:동:34
  +분리하:동:34
   분립:명:6
   분립적:관:1
   분마기:명:1
   분만:명:27
   분만법:명:1
   분만실:명:4
  -분만하다:동:10
  +분만하:동:10
   분말:명:1
   분말:명:4
   분말기:명:4
   분명:부:77
  -분명하다:형:233
  -분명해지다:동:17
  +분명하:형:233
  +분명해지:동:17
   분명히:부:156
   분묘:명:2
   분무:명:8
   분무기:명:6
   분발:명:4
  -분발하다:동:3
  -분방하다:형:2
  +분발하:동:3
  +분방하:형:2
   분배:명:16
  -분배되다:동:3
  +분배되:동:3
   분배망:명:1
  -분배받다:동:2
  +분배받:동:2
   분배율:명:1
  -분배하다:동:6
  +분배하:동:6
   분별:명:11
  -분별되다:동:1
  +분별되:동:1
   분별력:명:2
  -분별없다:형:2
  +분별없:형:2
   분별없이:부:2
   분별지:명:9
  -분별하다:동:9
  +분별하:동:9
   분봉:명:2
   분부:명:3
  -분분하다:형:6
  +분분하:형:6
   분분히:부:2
   분비:명:16
  -분비되다:동:5
  +분비되:동:5
   분비물:명:1
   분비샘:명:1
   분사제:명:1
  -분사하다:동:2
  +분사하:동:2
   분산:명:18
  -분산되다:동:7
  +분산되:동:7
   분산성:명:2
  -분산시키다:동:7
  +분산시키:동:7
   분산적:명:1
   분산지:명:1
  -분산하다:동:5
  +분산하:동:5
   분산화:명:1
   분석:명:233
   분석가:명:1
   분석기:명:1
  -분석되다:동:27
  +분석되:동:27
   분석력:명:2
   분석률:명:1
   분석원:명:1
   분석적:관:10
   분석적:명:5
   분석표:명:1
  -분석하다:동:147
  +분석하:동:147
   분석학:명:5
   분석학자:명:2
   분석학적:관:4
   분석학적:명:3
   분쇄:명:7
   분쇄기:명:1
  -분쇄하다:동:3
  +분쇄하:동:3
   분수:명:1
   분수:명:15
   분수:명:5
  @@ -22467,37 +22467,37 @@
   분식:명:1
   분식:명:3
   분식:명:3
  -분식되다:동:1
  +분식되:동:1
   분식점:명:1
   분식집:명:6
  -분식하다:동:1
  +분식하:동:1
   분신:명:8
   분신:명:8
   분신자살:명:2
  -분신자살하다:동:1
  -분신하다:동:3
  +분신자살하:동:1
  +분신하:동:3
   분실:명:10
   분실:명:2
  -분실되다:동:1
  +분실되:동:1
   분실물:명:1
  -분실하다:동:1
  +분실하:동:1
   분야:명:407
   분양:명:32
   분양가:명:5
  -분양되다:동:1
  -분양받다:동:5
  -분양하다:동:5
  +분양되:동:1
  +분양받:동:5
  +분양하:동:5
   분업:명:14
   분업화:명:4
  -분업화되다:동:1
  -분업화시키다:동:1
  +분업화되:동:1
  +분업화시키:동:1
   분연히:부:1
   분열:명:55
  -분열되다:동:25
  +분열되:동:25
   분열론:명:1
  -분열시키다:동:4
  +분열시키:동:4
   분열증:명:2
  -분열하다:동:2
  +분열하:동:2
   분위기:명:472
   분유:명:7
   분임:명:4
  @@ -22506,76 +22506,76 @@
   분장:명:19
   분장사:명:16
   분장실:명:11
  -분장하다:동:1
  -분장하다:동:3
  +분장하:동:1
  +분장하:동:3
   분재:명:4
   분재원:명:1
   분쟁:명:2
   분쟁:명:46
   분쟁거리:명:1
  -분전하다:동:1
  -분정받다:동:1
  +분전하:동:1
  +분정받:동:1
   분조장:명:1
  -분주하다:동:3
  -분주하다:형:23
  -분주해지다:동:1
  +분주하:동:3
  +분주하:형:23
  +분주해지:동:1
   분주히:부:7
   분지:명:20
  -분지다:보:1
  -분지르다:동:4
  +분지:보:1
  +분지르:동:4
   분지화:명:1
   분진:명:10
   분청사기:명:1
   분출:명:8
  -분출되다:동:1
  +분출되:동:1
   분출물:명:1
  -분출시키다:동:2
  +분출시키:동:2
   분출적:명:1
  -분출하다:동:16
  +분출하:동:16
   분칠:명:1
   분침:명:2
   분탕질:명:3
  -분탕질되다:동:1
  +분탕질되:동:1
   분통:명:9
  -분투하다:동:1
  +분투하:동:1
   분파:명:3
   분파주의자:명:1
  -분패하다:동:1
  +분패하:동:1
   분포:명:40
   분포권:명:1
   분포도:명:1
  -분포되다:동:11
  +분포되:동:11
   분포암:명:2
  -분포하다:동:85
  +분포하:동:85
   분풀이:명:4
   분필:명:2
  -분하다:동:6
  -분하다:형:14
  +분하:동:6
  +분하:형:14
   분할:명:22
   분할:명:4
  -분할되다:동:5
  +분할되:동:5
   분할미:명:1
  -분할받다:동:1
  +분할받:동:1
   분할선:명:3
  -분할시키다:동:2
  -분할하다:동:1
  -분할하다:동:9
  +분할시키:동:2
  +분할하:동:1
  +분할하:동:9
   분합:명:2
   분합수:명:1
   분해:명:16
  -분해되다:동:17
  +분해되:동:17
   분해자:명:1
  -분해하다:동:9
  -분향하다:동:1
  +분해하:동:9
  +분향하:동:1
   분홍:명:12
   분홍빛:명:5
   분홍색:명:12
   분화:명:16
   분화구:명:4
  -분화되다:동:6
  +분화되:동:6
   분화적:관:2
  -분화하다:동:8
  -붇다:동:12
  +분화하:동:8
  +붇:동:12
   불:명:1
   불:명:10
   불:명:415
  @@ -22585,45 +22585,45 @@
   불가:명:3
   불가:명:4
   불가결:명:1
  -불가결하다:형:10
  +불가결하:형:10
   불가능:명:12
  -불가능하다:형:143
  -불가능하여지다:동:1
  -불가능해지다:동:4
  +불가능하:형:143
  +불가능하여지:동:1
  +불가능해지:동:4
   불가분:명:10
   불가불:부:3
   불가사리:명:1
   불가사의:명:1
   불가사의론:명:1
  -불가사의하다:형:7
  +불가사의하:형:7
   불가입성:명:1
   불가지론:명:1
   불가침:명:4
   불가침성:명:1
   불가피:명:5
   불가피성:명:2
  -불가피하다:형:69
  -불가피해지다:동:3
  +불가피하:형:69
  +불가피해지:동:3
   불가항력:명:2
   불가항력적:명:2
  -불가해하다:형:2
  +불가해하:형:2
   불간섭:명:3
   불갈비:명:1
   불감증:명:18
   불감청:명:1
  -불같다:형:2
  +불같:형:2
   불같이:부:2
   불개미:명:3
   불개입:명:1
  -불거지다:동:14
  +불거지:동:14
   불건강:명:4
  -불건강하다:형:2
  -불건전하다:형:1
  +불건강하:형:2
  +불건전하:형:1
   불결감:명:1
  -불결하다:형:6
  +불결하:형:6
   불경:명:12
   불경기:명:3
  -불경스럽다:형:3
  +불경스럽:형:3
   불경죄:명:1
   불계:명:1
   불계패:명:1
  @@ -22631,11 +22631,11 @@
   불고지죄:명:1
   불공정:명:16
   불공정성:명:1
  -불공정하다:형:3
  +불공정하:형:3
   불공평:명:2
  -불공평하다:형:4
  +불공평하:형:4
   불과:부:56
  -불과하다:형:241
  +불과하:형:241
   불교:명:376
   불교계:명:16
   불교관:명:2
  @@ -22647,50 +22647,50 @@
   불구:명:15
   불구:명:4
   불구경꾼:명:1
  -불구경하다:동:1
  +불구경하:동:1
   불구내:명:1
   불구대천:명:1
   불구덩이:명:3
   불구속:명:20
   불구자:명:3
  -불구하다:동:256
  -불구화시키다:동:1
  +불구하:동:256
  +불구화시키:동:1
   불국:명:1
   불굴:명:1
   불귀:명:3
   불규칙:명:1
   불규칙성:명:1
   불규칙적:명:7
  -불규칙하다:형:9
  -불규칙해지다:동:1
  +불규칙하:형:9
  +불규칙해지:동:1
   불균등:명:2
   불균등성:명:1
  -불균등하다:형:2
  +불균등하:형:2
   불균일성:명:1
   불균형:명:23
  -불균형스럽다:형:1
  +불균형스럽:형:1
   불균형적:명:1
   불그림자:명:1
  -불그스레하다:형:2
  -불그죽죽하다:형:2
  +불그스레하:형:2
  +불그죽죽하:형:2
   불기:명:2
   불기둥:명:3
   불기소:명:21
  -불기소하다:동:2
  +불기소하:동:2
   불기운:명:2
   불길:명:1
   불길:명:23
  -불길하다:형:24
  -불길해하다:동:1
  +불길하:형:24
  +불길해하:동:1
   불꽃:명:43
  -불꽃놀이하다:동:2
  +불꽃놀이하:동:2
   불끈:부:9
  -불나다:동:4
  +불나:동:4
   불내:명:2
   불내증:명:1
   불능:명:10
  -불능하다:형:1
  -불다:동:182
  +불능하:형:1
  +불:동:182
   불덩이:명:4
   불도:명:5
   불도그:명:1
  @@ -22700,49 +22700,49 @@
   불량:명:28
   불량률:명:1
   불량배:명:5
  -불량스럽다:형:3
  +불량스럽:형:3
   불량품:명:3
  -불량하다:형:5
  -불량해지다:동:1
  -불러내다:동:10
  -불러들이다:동:12
  -불러오다:동:11
  -불러올리다:동:1
  -불러일으키다:동:70
  -불러지다:동:1
  -불려지다:동:13
  +불량하:형:5
  +불량해지:동:1
  +불러내:동:10
  +불러들이:동:12
  +불러오:동:11
  +불러올리:동:1
  +불러일으키:동:70
  +불러지:동:1
  +불려지:동:13
   불로:명:12
   불로장생:명:3
   불룩:부:1
  -불룩하다:형:9
  +불룩하:형:9
   불륜:명:4
  -불르다:동:1
  +불르:동:1
   불리:명:4
  -불리다:동:165
  -불리다:동:2
  -불리다:동:3
  -불리다:동:53
  -불리어지다:동:2
  -불리우다:동:6
  -불리하다:형:48
  -불리해지다:동:2
  +불리:동:165
  +불리:동:2
  +불리:동:3
  +불리:동:53
  +불리어지:동:2
  +불리우:동:6
  +불리하:형:48
  +불리해지:동:2
   불립:명:1
   불만:명:123
   불만기:명:1
  -불만스러워하다:동:1
  -불만스럽다:형:10
  +불만스러워하:동:1
  +불만스럽:형:10
   불만스레:부:1
   불만족:명:1
   불매:명:1
   불면:명:6
   불면증:명:28
   불멸:명:1
  -불멸하다:동:2
  +불멸하:동:2
   불명:명:7
   불명예:명:2
  -불명예스럽다:형:3
  +불명예스럽:형:3
   불명예제대:명:1
  -불명확하다:형:2
  +불명확하:형:2
   불모:명:2
   불모성:명:3
   불모지:명:2
  @@ -22750,16 +22750,16 @@
   불문:명:5
   불문가지:명:1
   불문곡직:명:1
  -불문곡직하다:동:1
  +불문곡직하:동:1
   불문과:명:10
   불문율:명:6
  -불문하다:동:5
  +불문하:동:5
   불문학:명:1
  -불미스럽다:형:4
  +불미스럽:형:4
   불바다:명:3
   불바람:명:1
   불발:명:4
  -불발되다:동:1
  +불발되:동:1
   불발탄:명:1
   불벌죄:명:1
   불법:명:169
  @@ -22767,54 +22767,54 @@
   불법성:명:1
   불법적:관:2
   불법적:명:19
  -불법하다:형:6
  +불법하:형:6
   불법화:명:2
  -불법화되다:동:1
  -불법화하다:동:2
  +불법화되:동:1
  +불법화하:동:2
   불벼락:명:1
   불변:명:8
   불변성:명:1
   불변적:명:1
  -불변하다:동:2
  +불변하:동:2
   불볕:명:2
   불볕더위:명:4
   불보:명:2
   불복:명:4
  -불복하다:동:4
  -불분명하다:형:4
  -불붙다:동:7
  +불복하:동:4
  +불분명하:형:4
  +불붙:동:7
   불비:명:1
   불빛:명:86
  -불사르다:동:6
  -불사하다:동:9
  +불사르:동:6
  +불사하:동:9
   불상:명:49
   불상놈:명:2
   불상사:명:7
   불상용:명:1
   불성:명:13
   불성실:명:2
  -불성실하다:형:2
  +불성실하:형:2
   불소:명:1
  -불손하다:형:9
  +불손하:형:9
   불순:명:3
   불순:명:4
   불순물:명:6
   불순분자:명:5
  -불순하다:형:12
  -불순해지다:동:1
  +불순하:형:12
  +불순해지:동:1
   불시:명:7
   불시착:명:1
  -불시착하다:동:2
  -불식시키다:동:2
  +불시착하:동:2
  +불식시키:동:2
   불신:명:46
   불신감:명:9
   불신론:명:1
   불신자:명:1
  -불신하다:동:6
  +불신하:동:6
   불심:명:42
  -불쌍하다:형:64
  -불쌍해지다:동:1
  -불쌍해하다:동:1
  +불쌍하:형:64
  +불쌍해지:동:1
  +불쌍해하:동:1
   불쌍히:부:2
   불쑥:부:42
   불쑥불쑥:부:4
  @@ -22822,25 +22822,25 @@
   불안:명:110
   불안:명:2
   불안감:명:28
  -불안스럽다:형:3
  +불안스럽:형:3
   불안스레:부:1
   불안정:명:9
  -불안정되다:동:1
  -불안정하다:형:27
  -불안정해지다:동:1
  +불안정되:동:1
  +불안정하:형:27
  +불안정해지:동:1
   불안증:명:1
   불안투성이:명:1
  -불안하다:형:100
  -불안해지다:동:8
  -불안해하다:동:9
  +불안하:형:100
  +불안해지:동:8
  +불안해하:동:9
   불알:명:2
   불야성:명:4
   불어:명:13
   불어과:명:3
  -불어나다:동:25
  -불어넣다:동:25
  -불어오다:동:44
  -불어제치다:동:1
  +불어나:동:25
  +불어넣:동:25
  +불어오:동:44
  +불어제치:동:1
   불언:명:3
   불여우:명:1
   불여일견:명:1
  @@ -22850,23 +22850,23 @@
   불연속적:관:2
   불연속적:명:2
   불온:명:3
  -불온시되다:동:1
  -불온하다:형:2
  -불완전하다:형:25
  +불온시되:동:1
  +불온하:형:2
  +불완전하:형:25
   불요구:명:1
   불요불급:명:1
  -불요불급하다:형:2
  +불요불급하:형:2
   불우:명:20
   불우자:명:1
  -불우하다:형:11
  +불우하:형:11
   불운:명:4
  -불운하다:형:2
  -불유쾌하다:형:2
  +불운하:형:2
  +불유쾌하:형:2
   불응:명:3
  -불응하다:동:9
  +불응하:동:9
   불의:명:13
   불의:명:7
  -불의하다:형:1
  +불의하:형:1
   불이농촌:명:1
   불이익:명:24
   불이행:명:1
  @@ -22877,128 +22877,128 @@
   불임:명:11
   불임증:명:3
   불입:명:1
  -불입되다:동:1
  +불입되:동:1
   불입액:명:1
  -불입하다:동:13
  +불입하:동:13
   불장난:명:2
   불전:명:1
   불전:명:9
   불조심:명:1
  -불조심하다:동:1
  +불조심하:동:1
   불지:명:1
   불질:명:2
   불참:명:7
   불참여:명:1
   불참자:명:1
  -불참하다:동:5
  +불참하:동:5
   불처벌:명:1
  -불철저하다:형:1
  +불철저하:형:1
   불철주야:명:1
   불청객:명:4
   불체포:명:1
   불출:명:1
   불충분:명:2
  -불충분하다:형:7
  -불충하다:형:1
  -불측하다:형:1
  +불충분하:형:7
  +불충하:형:1
  +불측하:형:1
   불치:명:1
   불치병:명:2
   불친절:명:6
  -불친절하다:형:5
  +불친절하:형:5
   불침번:명:2
  -불콰하다:형:2
  +불콰하:형:2
   불쾌:명:1
   불쾌감:명:11
   불쾌지수:명:2
  -불쾌하다:형:21
  -불쾌해지다:동:1
  -불쾌해하다:동:3
  -불타다:동:27
  -불타오르다:동:3
  +불쾌하:형:21
  +불쾌해지:동:1
  +불쾌해하:동:3
  +불타:동:27
  +불타오르:동:3
   불탑:명:1
  -불태우다:동:10
  -불태워지다:동:2
  +불태우:동:10
  +불태워지:동:2
   불통:명:1
  -불통되다:동:2
  +불통되:동:2
   불퇴전:명:1
   불투명:명:2
  -불투명하다:형:26
  -불투명해지다:동:3
  -불퉁거리다:동:2
  +불투명하:형:26
  +불투명해지:동:3
  +불퉁거리:동:2
   불특정:명:1
   불특정인:명:1
   불티:명:2
  -불티나다:동:1
  +불티나:동:1
   불판:명:2
   불패:명:1
   불편:명:48
   불편부당:명:1
  -불편부당하다:형:2
  -불편스럽다:형:1
  -불편하다:형:123
  -불편해지다:동:1
  -불편해하다:동:1
  +불편부당하:형:2
  +불편스럽:형:1
  +불편하:형:123
  +불편해지:동:1
  +불편해하:동:1
   불평:명:1
   불평:명:25
   불평등:명:39
  -불평등하다:형:29
  +불평등하:형:29
   불평불만:명:1
  -불평스럽다:형:1
  -불평하다:동:5
  +불평스럽:형:1
  +불평하:동:5
   불필요론:명:1
  -불필요하다:형:24
  +불필요하:형:24
   불하:명:1
   불하:명:1
  -불하받다:동:4
  +불하받:동:4
   불학:명:1
   불한당:명:1
   불합격:명:2
  -불합격되다:동:2
  -불합격시키다:동:1
  -불합격하다:동:2
  +불합격되:동:2
  +불합격시키:동:1
  +불합격하:동:2
   불합리:명:1
   불합리성:명:2
  -불합리하다:형:11
  +불합리하:형:11
   불행:명:53
   불행사:명:4
  -불행하다:형:61
  -불행해지다:동:4
  +불행하:형:61
  +불행해지:동:4
   불행히:부:6
   불허:명:11
  -불허되다:동:2
  -불허하다:동:4
  +불허되:동:2
  +불허하:동:4
   불현듯:부:14
   불협화:명:5
   불협화음:명:7
  -불협화하다:동:1
  +불협화하:동:1
   불혹:명:4
   불혹지년:명:1
   불화:명:1
   불화:명:11
  -불화롭다:형:1
  +불화롭:형:1
   불화살:명:2
   불화설:명:1
   불화성:명:1
   불확실성:명:6
  -불확실하다:형:18
  -불확실해지다:명:1
  +불확실하:형:18
  +불확실해지:명:1
   불확정성:명:4
   불황:명:25
   불황기:명:2
   불효:명:1
  -불효막심하다:형:1
  +불효막심하:형:1
   불효자:명:2
  -불효하다:동:1
  -불효하다:형:1
  +불효하:동:1
  +불효하:형:1
   불후:명:3
   붉나무:명:2
  -붉다:동:5
  -붉다:형:113
  +붉:동:5
  +붉:형:113
   붉덩물:명:1
  -붉디붉다:형:3
  -붉어지다:동:21
  +붉디붉:형:3
  +붉어지:동:21
   붉으락푸르락:부:1
  -붉으락푸르락해지다:동:1
  +붉으락푸르락해지:동:1
   붉은머리오목눈이:명:5
   붉은박쥐:명:1
   붉은배새매:명:1
  @@ -23006,42 +23006,42 @@
   붉은빛:명:5
   붉은색:명:11
   붉은서나물:명:1
  -붉히다:동:18
  +붉히:동:18
   붐:명:28
  -붐비다:동:25
  +붐비:동:25
   붓:명:23
   붓글씨:명:3
   붓꽃:명:8
   붓끝:명:2
   붓놀림:명:1
  -붓다:동:120
  -붓다:동:19
  +붓:동:120
  +붓:동:19
   붓방아:명:1
   붓질:명:1
   붕:부:5
   붕괴:명:58
  -붕괴되다:동:21
  +붕괴되:동:21
   붕괴설:명:1
  -붕괴하다:동:9
  +붕괴하:동:9
   붕대:명:11
   붕대법:명:2
   붕락:명:1
   붕붕:부:1
  -붕붕거리다:동:1
  +붕붕거리:동:1
   붕알:명:1
   붕어:명:16
   붕우유신:명:3
  -붙다:동:294
  -붙들다:동:34
  -붙들리다:동:11
  +붙:동:294
  +붙들:동:34
  +붙들리:동:11
   붙박이:명:6
  -붙박이다:동:2
  -붙어살다:동:1
  -붙여지다:동:15
  -붙이다:동:310
  +붙박이:동:2
  +붙어살:동:1
  +붙여지:동:15
  +붙이:동:310
   붙임성:명:1
  -붙잡다:동:57
  -붙잡히다:동:31
  +붙잡:동:57
  +붙잡히:동:31
   뷔페:명:3
   뷔페식:명:3
   뷔페식당:명:1
  @@ -23084,7 +23084,7 @@
   블록:명:6
   블록버스터:명:1
   블록화:명:2
  -블록화하다:동:1
  +블록화하:동:1
   블루:명:1
   블루길:명:1
   블루스:명:4
  @@ -23100,12 +23100,12 @@
   비가열:명:1
   비가입국:명:1
   비각:명:1
  -비감스럽다:형:1
  +비감스럽:형:1
   비감정화:명:1
  -비거덕거리다:동:3
  -비겁하다:형:12
  -비견되다:동:4
  -비견하다:동:1
  +비거덕거리:동:3
  +비겁하:형:12
  +비견되:동:4
  +비견하:동:1
   비결:명:29
   비결정론적:관:5
   비결정론적:명:2
  @@ -23125,7 +23125,7 @@
   비공산당:명:1
   비공식:명:9
   비공식적:명:5
  -비공식화되다:동:1
  +비공식화되:동:1
   비공인:명:1
   비과세:명:1
   비과학:명:7
  @@ -23135,39 +23135,39 @@
   비관론:명:1
   비관적:관:2
   비관적:명:4
  -비관하다:동:5
  +비관하:동:5
   비교:명:82
  -비교당하다:동:1
  -비교되다:동:9
  +비교당하:동:1
  +비교되:동:9
   비교사:명:2
   비교육적:관:3
   비교육적:명:1
   비교적:관:1
   비교적:부:137
   비교표:명:1
  -비교하다:동:151
  +비교하:동:151
   비구:명:2
   비구니:명:1
   비구름:명:3
   비구상적:명:1
  -비굴하다:형:8
  +비굴하:형:8
   비극:명:92
   비극미:명:2
   비극적:관:16
   비극적:명:16
  -비근하다:형:3
  +비근하:형:3
   비금속:명:3
  -비기다:동:15
  -비껴가다:동:2
  -비껴들다:동:1
  -비꼬다:동:13
  -비꼬이다:동:1
  -비끼다:동:14
  +비기:동:15
  +비껴가:동:2
  +비껴들:동:1
  +비꼬:동:13
  +비꼬이:동:1
  +비끼:동:14
   비난:명:79
  -비난받다:동:17
  +비난받:동:17
   비난적:명:1
   비난조:명:2
  -비난하다:동:54
  +비난하:동:54
   비녀:명:3
   비노예적:관:1
   비논리:명:1
  @@ -23188,8 +23188,8 @@
   비닐우산:명:6
   비닐종이:명:1
   비닐하우스:명:17
  -비다:동:1
  -비다:동:250
  +비:동:1
  +비:동:250
   비단:명:24
   비단:부:29
   비단결:명:2
  @@ -23201,10 +23201,10 @@
   비대:명:2
   비대중화:명:1
   비대칭:명:3
  -비대하다:형:3
  -비대해지다:동:9
  +비대하:형:3
  +비대해지:동:9
   비대화:명:1
  -비대화되다:동:1
  +비대화되:동:1
   비도:명:1
   비도덕성:명:1
   비도덕적:관:1
  @@ -23215,8 +23215,8 @@
   비둘기:명:14
   비드라마적:명:2
   비등점:명:1
  -비등하다:동:1
  -비등하다:동:3
  +비등하:동:1
  +비등하:동:3
   비디오:명:117
   비디오광:명:2
   비디오물:명:1
  @@ -23226,39 +23226,39 @@
   비디오폰:명:1
   비디오플레이어:명:2
   비뚜로:부:1
  -비뚤배뚤해지다:동:1
  -비뚤어지다:동:21
  +비뚤배뚤해지:동:1
  +비뚤어지:동:21
   비련:명:1
   비례:명:32
   비례적:명:1
  -비례하다:동:20
  +비례하:동:20
   비로드:명:2
   비로소:부:149
   비로전:명:3
   비록:부:202
   비롯:명:62
  -비롯되다:동:94
  -비롯하다:동:259
  +비롯되:동:94
  +비롯하:동:259
   비료:명:46
   비룡:명:2
   비루:명:1
  -비르집다:동:1
  +비르집:동:1
   비리:명:149
   비리다:보:1
  -비리다:형:2
  +비리:형:2
   비린내:명:3
  -비릿하다:형:6
  +비릿하:형:6
   비만:명:18
   비만도:명:1
   비만자:명:1
   비만증:명:4
  -비만하다:형:1
  -비만해지다:동:4
  +비만하:형:1
  +비만해지:동:4
   비망록:명:2
   비명:명:1
   비명:명:2
   비명:명:53
  -비명횡사하다:동:3
  +비명횡사하:동:3
   비몽사몽:명:1
   비무장:명:15
   비문:명:8
  @@ -23275,23 +23275,23 @@
   비밀경찰:명:4
   비밀리:명:4
   비밀문서:명:1
  -비밀스럽다:형:5
  +비밀스럽:형:5
   비밀주의:명:1
   비바람:명:28
   비방:명:1
   비방:명:4
   비방전:명:1
  -비방하다:동:5
  -비범하다:형:1
  +비방하:동:5
  +비범하:형:1
   비법:명:15
   비보:명:3
   비보:명:5
   비본질적:명:1
   비분강개:명:1
  -비분강개하다:동:1
  -비분강개해하다:동:1
  +비분강개하:동:1
  +비분강개해하:동:1
   비비:부:2
  -비비다:동:48
  +비비:동:48
   비빈:명:1
   비빔밥:명:10
   비사실적:관:1
  @@ -23310,7 +23310,7 @@
   비상구:명:2
   비상근무:명:2
   비상근무령:명:1
  -비상근무하다:동:1
  +비상근무하:동:1
   비상령:명:1
   비상벨:명:1
   비상사태:명:10
  @@ -23324,9 +23324,9 @@
   비상조치:명:2
   비상종:명:1
   비상책:명:1
  -비상하다:동:1
  -비상하다:동:2
  -비상하다:형:12
  +비상하:동:1
  +비상하:동:2
  +비상하:형:12
   비색:명:1
   비생물:명:1
   비생물적:관:2
  @@ -23344,44 +23344,44 @@
   비소설:명:1
   비속:명:2
   비속어:명:1
  -비속하다:형:1
  +비속하:형:1
   비수:명:4
   비수기:명:3
  -비스듬하다:형:4
  +비스듬하:형:4
   비스듬히:부:24
  -비스르다:동:1
  +비스르:동:1
   비스킷:명:5
  -비슷비슷하다:형:7
  +비슷비슷하:형:7
   비슷이:부:1
  -비슷하다:형:285
  -비슷해지다:동:3
  +비슷하:형:285
  +비슷해지:동:3
   비시:명:20
   비시적:관:1
   비시적:명:1
   비식민지화:명:1
   비신:명:1
  -비실거리다:동:1
  +비실거리:동:1
   비실명:명:7
   비실비실:부:4
  -비실비실하다:동:1
  +비실비실하:동:1
   비실용성:명:1
  -비싸다:형:122
  -비싸지다:동:4
  +비싸:형:122
  +비싸지:동:4
   비아나운서:명:1
   비아냥:명:3
  -비아냥거리다:동:12
  -비아냥대다:동:2
  +비아냥거리:동:12
  +비아냥대:동:2
   비안개:명:2
   비애:명:7
   비약:명:8
  -비약되다:동:1
  +비약되:동:1
   비약상:명:1
   비약적:관:1
   비약적:명:19
  -비약하다:동:3
  +비약하:동:3
   비양심적:관:1
  -비어지다:동:2
  -비어지다:동:7
  +비어지:동:2
  +비어지:동:7
   비언어적:관:1
   비업무:명:17
   비엑스:명:1
  @@ -23391,7 +23391,7 @@
   비역사적:관:1
   비연고지:명:1
   비열:명:1
  -비열하다:형:7
  +비열하:형:7
   비염:명:1
   비엽:명:2
   비영리:명:3
  @@ -23399,27 +23399,27 @@
   비예술:명:1
   비예술적:관:1
   비오디:명:2
  -비옥하다:형:10
  -비옥해지다:동:1
  +비옥하:형:10
  +비옥해지:동:1
   비올라:명:4
   비옷:명:1
   비용:명:196
  -비우다:동:104
  +비우:동:104
   비운:명:5
  -비웃다:동:30
  +비웃:동:30
   비웃음:명:10
  -비워지다:동:6
  +비워지:동:6
   비위:명:1
   비위:명:1
   비위:명:18
   비위생적:명:3
   비위짱:명:1
   비유:명:19
  -비유되다:동:4
  +비유되:동:4
   비유법:명:2
   비유적:관:2
   비유적:명:1
  -비유하다:동:24
  +비유하:동:24
   비윤리적:명:1
   비율:명:68
   비의도적:관:1
  @@ -23433,7 +23433,7 @@
   비인간적:관:2
   비인간적:명:4
   비인간화:명:6
  -비인간화되다:동:1
  +비인간화되:동:1
   비인기:명:2
   비인도적:관:2
   비인도적:명:2
  @@ -23441,7 +23441,7 @@
   비인성적:명:1
   비인플레적:관:1
   비인플레적:명:1
  -비일비재하다:형:5
  +비일비재하:형:5
   비일상적:명:2
   비자:명:11
   비자금:명:36
  @@ -23452,8 +23452,8 @@
   비장:명:6
   비장미:명:1
   비장비:명:1
  -비장하다:동:1
  -비장하다:형:5
  +비장하:동:1
  +비장하:형:5
   비적대적:명:1
   비전:명:1
   비전:명:14
  @@ -23471,21 +23471,21 @@
   비정치성:명:1
   비정치인:명:1
   비정치적:명:3
  -비정하다:형:5
  +비정하:형:5
   비정한:명:1
   비정형적:명:1
   비제도권:명:1
   비제조:명:1
   비제조업:명:1
   비조객:명:1
  -비좁다:형:13
  +비좁:형:13
   비주류:명:3
   비죽:부:1
  -비죽거리다:동:2
  +비죽거리:동:2
   비죽비죽:부:1
   비죽이:부:1
   비죽이:부:2
  -비죽이다:동:1
  +비죽이:동:1
   비준:명:3
   비준서:명:1
   비중:명:85
  @@ -23496,80 +23496,80 @@
   비지떡:명:2
   비진흥:명:1
   비질:명:3
  -비질하다:동:1
  -비집다:동:21
  +비질하:동:1
  +비집:동:21
   비짜루:명:1
   비쩍:부:2
   비쭉:부:1
  -비쭉거리다:동:1
  -비쭉비쭉하다:동:1
  +비쭉거리:동:1
  +비쭉비쭉하:동:1
   비참여:명:1
  -비참하다:형:20
  -비참해지다:동:1
  +비참하:형:20
  +비참해지:동:1
   비책:명:1
   비천상:명:2
  -비천하다:형:1
  -비천하다:형:2
  +비천하:형:1
  +비천하:형:2
   비철:명:1
  -비쳐지다:동:11
  -비추다:동:99
  -비추어지다:동:7
  +비쳐지:동:11
  +비추:동:99
  +비추어지:동:7
   비축:명:11
   비축미:명:1
  -비축하다:동:5
  -비춰지다:동:5
  +비축하:동:5
  +비춰지:동:5
   비취:명:1
   비치:명:1
   비치:명:2
  -비치다:동:102
  -비치되다:동:5
  -비치이다:동:1
  +비치:동:102
  +비치되:동:5
  +비치이:동:1
   비치파라솔:명:1
   비치파라솔형:명:1
  -비치하다:동:4
  -비칠거리다:동:1
  +비치하:동:4
  +비칠거리:동:1
   비칠비칠:부:2
   비커:명:2
  -비켜나다:동:2
  -비켜서다:동:11
  +비켜나:동:2
  +비켜서:동:11
   비키니:명:1
  -비키다:동:30
  +비키:동:30
   비타민:명:29
   비타협적:관:1
   비탄:명:2
   비탄자:명:1
  -비탄해하다:동:1
  +비탄해하:동:1
   비탈:명:5
   비탈길:명:4
   비탈밭:명:1
  -비탈지다:형:6
  +비탈지:형:6
   비통:명:1
   비통신:명:1
   비통치:명:1
  -비통하다:형:5
  +비통하:형:5
   비트:의:27
   비트플레인:의:2
  -비틀거리다:동:11
  +비틀거리:동:11
   비틀걸음:명:1
  -비틀다:동:18
  -비틀리다:동:2
  +비틀:동:18
  +비틀리:동:2
   비틀비틀:부:4
  -비틀어지다:동:2
  -비틀하다:동:1
  +비틀어지:동:2
  +비틀하:동:1
   비파:명:2
   비파괴성:명:1
   비파사나:명:1
   비파형:명:1
   비판:명:175
  -비판되다:동:3
  +비판되:동:3
   비판력:명:2
   비판론:명:8
   비판론자:명:1
  -비판받다:동:4
  +비판받:동:4
   비판자:명:3
   비판적:관:34
   비판적:명:23
  -비판하다:동:90
  +비판하:동:90
   비퍼:명:1
   비평:명:28
   비평가:명:16
  @@ -23579,7 +23579,7 @@
   비평자:명:1
   비평적:관:5
   비평준화:명:5
  -비평하다:동:3
  +비평하:동:3
   비평형:명:1
   비포장길:명:1
   비포장도로:명:1
  @@ -23588,15 +23588,15 @@
   비프스테이크:명:4
   비피에스:의:4
   비하:명:7
  -비하다:동:454
  -비하하다:동:3
  +비하:동:454
  +비하하:동:3
   비합리성:명:2
   비합리적:관:1
   비합리적:명:2
  -비합법화시키다:동:1
  +비합법화시키:동:1
   비핵:명:3
   비핵화:명:9
  -비핵화하다:동:1
  +비핵화하:동:1
   비행:명:1
   비행:명:26
   비행:명:50
  @@ -23609,7 +23609,7 @@
   비행장:명:22
   비행접시:명:1
   비행체:명:1
  -비행하다:동:7
  +비행하:동:7
   비현실:명:3
   비현실감:명:2
   비현실성:명:1
  @@ -23621,13 +23621,13 @@
   비호:명:9
   비호같이:부:1
   비호남:명:1
  -비호받다:동:1
  +비호받:동:1
   비호자:명:1
  -비호하다:동:4
  +비호하:동:4
   비화:명:3
   비화:명:7
  -비화되다:동:6
  -비화하다:동:2
  +비화되:동:6
  +비화하:동:2
   비회원:명:1
   비효율:명:6
   비효율성:명:5
  @@ -23641,8 +23641,8 @@
   빈:명:3
   빈곤:명:19
   빈곤자:명:1
  -빈곤하다:형:4
  -빈곤해지다:동:2
  +빈곤하:형:4
  +빈곤해지:동:2
   빈곤화:명:1
   빈공과:명:1
   빈국:명:1
  @@ -23653,19 +23653,19 @@
   빈대:명:1
   빈대떡:명:10
   빈도:명:13
  -빈둥거리다:동:7
  +빈둥거리:동:7
   빈둥빈둥:부:2
  -빈둥빈둥하다:동:1
  -빈들거리다:동:2
  +빈둥빈둥하:동:1
  +빈들거리:동:2
   빈말:명:1
   빈민:명:4
   빈민가:명:5
   빈민굴:명:2
   빈민층:명:1
  -빈발하다:동:6
  +빈발하:동:6
   빈방:명:5
  -빈번하다:형:20
  -빈번해지다:동:1
  +빈번하:형:20
  +빈번해지:동:1
   빈번히:부:6
   빈부:명:14
   빈부귀천:명:3
  @@ -23673,48 +23673,48 @@
   빈소:명:2
   빈속:명:4
   빈손:명:8
  -빈약하다:형:18
  -빈약해지다:동:2
  +빈약하:형:18
  +빈약해지:동:2
   빈익빈:명:6
   빈자리:명:9
  -빈정거리다:동:6
  -빈정대다:동:3
  +빈정거리:동:6
  +빈정대:동:3
   빈집:명:7
   빈천:명:1
   빈축:명:5
   빈칸:명:11
   빈털터리:명:3
   빈틈:명:3
  -빈틈없다:형:5
  +빈틈없:형:5
   빈틈없이:부:3
  -빈한하다:형:1
  +빈한하:형:1
   빈혈:명:12
   빈혈증:명:1
  -빌다:동:13
  -빌다:동:72
  -빌다:동:8
  +빌:동:13
  +빌:동:72
  +빌:동:8
   빌딩:명:29
   빌라:명:7
  -빌려쓰다:동:2
  -빌리다:동:175
  +빌려쓰:동:2
  +빌리:동:175
   빌미:명:12
  -빌붙다:동:6
  -빌빌거리다:동:3
  -빌빌대다:동:1
  -빌어먹다:동:3
  +빌붙:동:6
  +빌빌거리:동:3
  +빌빌대:동:1
  +빌어먹:동:3
   빌어먹을:감:4
   빌어먹을:관:4
   빔:명:1
   빗:명:4
   빗금:명:5
   빗기:명:1
  -빗기다:동:2
  +빗기:동:2
   빗길:명:5
  -빗나가다:동:19
  -빗다:동:6
  -빗대다:동:14
  +빗나가:동:19
  +빗:동:6
  +빗대:동:14
   빗물:명:40
  -빗발치다:동:9
  +빗발치:동:9
   빗방울:명:18
   빗살:명:2
   빗소리:명:6
  @@ -23723,14 +23723,14 @@
   빗장:명:10
   빗줄기:명:26
   빗질:명:3
  -빗질하다:동:1
  +빗질하:동:1
   빙:부:15
   빙과:명:1
   빙그레:부:15
   빙그르르:부:3
   빙그르르:부:4
   빙글:부:2
  -빙글거리다:동:3
  +빙글거리:동:3
   빙글빙글:부:2
   빙글빙글:부:2
   빙긋:부:6
  @@ -23744,7 +23744,7 @@
   빙수기:명:3
   빙신:명:3
   빙어:명:1
  -빙자하다:동:9
  +빙자하:동:9
   빙점:명:2
   빙초산:명:5
   빙치린:명:2
  @@ -23753,27 +23753,27 @@
   빙하:명:3
   빙하기:명:1
   빚:명:52
  -빚다:동:79
  +빚:동:79
   빚더미:명:1
  -빚어내다:동:22
  -빚어지다:동:38
  +빚어내:동:22
  +빚어지:동:38
   빚쟁이:명:3
  -빚지다:동:10
  +빚지:동:10
   빛:명:270
   빛깔:명:57
  -빛나다:동:109
  -빛내다:동:15
  -빛바래다:형:6
  +빛나:동:109
  +빛내:동:15
  +빛바래:형:6
   빛살:명:11
  -빠개다:동:2
  +빠개:동:2
   빠구리:명:1
   빠꼼히:부:1
   빠끔히:부:5
  -빠듯하다:형:7
  +빠듯하:형:7
   빠디다:보:2
  -빠뜨리다:동:29
  +빠뜨리:동:29
   빠루:명:1
  -빠르다:형:351
  +빠르:형:351
   빠른우편:명:1
   빠리꾼:명:1
   빠바박:부:1
  @@ -23783,53 +23783,53 @@
   빠이빠이:감:2
   빠자작:부:1
   빠작빠작:부:3
  -빠져나가다:동:111
  -빠져나오다:동:60
  -빠져버리다:동:1
  -빠지다:동:188
  -빠지다:동:303
  -빠지다:보:14
  +빠져나가:동:111
  +빠져나오:동:60
  +빠져버리:동:1
  +빠지:동:188
  +빠지:동:303
  +빠지:보:14
   빠짐없이:부:14
  -빡빡하다:형:5
  -빤들거리다:동:1
  -빤빤하다:형:1
  +빡빡하:형:5
  +빤들거리:동:1
  +빤빤하:형:1
   빤쓰:명:4
   빤작빤작:부:1
  -빤짝거리다:동:1
  -빤하다:형:4
  +빤짝거리:동:1
  +빤하:형:4
   빤히:부:21
  -빨가벗겨지다:동:1
  -빨가벗다:동:2
  +빨가벗겨지:동:1
  +빨가벗:동:2
   빨간색:명:16
   빨간집모기:명:1
   빨강:명:18
  -빨갛다:형:90
  -빨개지다:동:13
  +빨갛:형:90
  +빨개지:동:13
   빨갱이:명:2
  -빨다:동:31
  -빨다:동:35
  -빨다:형:1
  +빨:동:31
  +빨:동:35
  +빨:형:1
   빨대:명:3
  -빨라지다:동:25
  +빨라지:동:25
   빨랑:부:2
   빨래:명:81
   빨래비:명:1
   빨래터:명:1
  -빨래하다:동:10
  +빨래하:동:10
   빨랫비누:명:2
   빨랫줄:명:8
  -빨려들다:동:1
  +빨려들:동:1
   빨리:부:371
  -빨리다:동:1
  -빨리다:동:16
  +빨리:동:1
  +빨리:동:16
   빨리빨리:부:14
  -빨리하다:동:7
  -빨아내다:동:1
  -빨아들이다:동:16
  -빨아먹다:동:3
  +빨리하:동:7
  +빨아내:동:1
  +빨아들이:동:16
  +빨아먹:동:3
   빨치산:명:10
   빳빳이:부:3
  -빳빳하다:형:9
  +빳빳하:형:9
   빵:명:102
   빵:부:2
   빵가루:명:4
  @@ -23838,92 +23838,92 @@
   빵모자:명:1
   빵빵:부:1
   빵빵:부:3
  -빵빵하다:형:4
  +빵빵하:형:4
   빵집:명:3
   빵틀:명:3
  -빻다:동:4
  -빼곡하다:형:2
  +빻:동:4
  +빼곡하:형:2
   빼곡히:부:2
  -빼꼭하다:형:1
  +빼꼭하:형:1
   빼꼼히:부:1
  -빼내다:동:36
  -빼놓다:동:35
  -빼다:동:2
  -빼다:동:2
  -빼다:동:222
  -빼닮다:동:2
  -빼돌려지다:동:1
  -빼돌리다:동:15
  -빼뚤하다:형:1
  -빼먹다:동:19
  -빼물다:동:2
  -빼박다:동:3
  +빼내:동:36
  +빼놓:동:35
  +빼:동:2
  +빼:동:2
  +빼:동:222
  +빼닮:동:2
  +빼돌려지:동:1
  +빼돌리:동:15
  +빼뚤하:형:1
  +빼먹:동:19
  +빼물:동:2
  +빼박:동:3
   빼빼:부:1
  -빼빼하다:형:1
  -빼앗기다:동:49
  -빼앗다:동:55
  -빼어나다:형:14
  +빼빼하:형:1
  +빼앗기:동:49
  +빼앗:동:55
  +빼어나:형:14
   빽:부:2
   빽빽:부:1
   빽빽이:부:9
  -빽빽하다:형:11
  +빽빽하:형:11
   뺄셈:명:2
  -뺏기다:동:15
  -뺏다:동:23
  +뺏기:동:15
  +뺏:동:23
   뺑:부:1
   뺑소니:명:2
   뺑코잡이:명:1
   뺨:명:57
   뺨따귀:명:2
  -뺨치다:동:7
  +뺨치:동:7
   뻐국새:명:1
  -뻐근하다:형:5
  +뻐근하:형:5
   뻐근히:부:1
  -뻐기다:동:3
  +뻐기:동:3
   뻐꾸기:명:12
   뻐꾹:부:6
   뻐꾹새:명:1
   뻐꾹새천남성:명:1
  -뻐끔거리다:동:1
  +뻐끔거리:동:1
   뻐끔뻐끔:부:2
   뻐드렁니:명:4
   뻑:명:1
   뻑뻑:부:1
  -뻑뻑하다:형:3
  +뻑뻑하:형:3
   뻔:명:1
   뻔:의:2
  -뻔뻔스럽다:형:11
  -뻔뻔하다:형:2
  -뻔지다:보:4
  -뻔질나다:형:2
  -뻔하다:보:56
  -뻔하다:형:58
  +뻔뻔스럽:형:11
  +뻔뻔하:형:2
  +뻔지:보:4
  +뻔질나:형:2
  +뻔하:보:56
  +뻔하:형:58
   뻔히:부:18
  -뻗다:동:84
  -뻗대다:동:1
  -뻗어지다:동:1
  +뻗:동:84
  +뻗대:동:1
  +뻗어지:동:1
   뻗정다리:명:1
  -뻗쳐오르다:동:1
  -뻗치다:동:25
  -뻗히다:동:3
  +뻗쳐오르:동:1
  +뻗치:동:25
  +뻗히:동:3
   뻘:명:2
  -뻘겋다:형:8
  +뻘겋:형:8
   뻘뻘:부:4
   뻣뻣이:부:3
  -뻣뻣하다:형:3
  -뻣뻣해지다:동:4
  +뻣뻣하:형:3
  +뻣뻣해지:동:4
   뻥:부:3
   뻥끗:부:2
   뻥뻥:부:2
  -뻥하다:형:1
  +뻥하:형:1
   뼁기통:명:1
   뼈:명:98
   뼈끝:명:1
   뼈다귀:명:3
   뼈대:명:11
   뼈마디:명:7
  -뼈아프다:형:5
  -뼈저리다:형:7
  +뼈아프:형:5
  +뼈저리:형:7
   뼈품:명:1
   뼘:명:2
   뼘:의:9
  @@ -23931,79 +23931,79 @@
   뼛속:명:5
   뼛조각:명:3
   뽀글이:명:1
  -뽀독하다:형:1
  +뽀독하:형:1
   뽀드득뽀드득:부:1
  -뽀로통하다:형:1
  +뽀로통하:형:1
   뽀록:명:2
   뽀르르:부:3
   뽀뽀:명:6
  -뽀뽀하다:동:3
  -뽀송뽀송하다:형:1
  -뽀얗다:형:12
  +뽀뽀하:동:3
  +뽀송뽀송하:형:1
  +뽀얗:형:12
   뽁뽁:부:1
  -뽐내다:동:18
  -뽑다:동:186
  -뽑뽑하다:형:1
  -뽑아내다:동:23
  -뽑히다:동:58
  +뽐내:동:18
  +뽑:동:186
  +뽑뽑하:형:1
  +뽑아내:동:23
  +뽑히:동:58
   뽕:부:1
   뽕나무:명:4
   뽕뽕:부:1
   뽕짝:명:2
  -뾰로통하다:형:2
  -뾰로통해지다:동:1
  +뾰로통하:형:2
  +뾰로통해지:동:1
   뾰족:부:2
   뾰족뾰족:부:1
  -뾰족뾰족하다:형:1
  +뾰족뾰족하:형:1
   뾰족이:부:1
   뾰족탑:명:1
  -뾰족하다:형:24
  +뾰족하:형:24
   뾰쪽:부:1
  -뾰쪽하다:형:3
  +뾰쪽하:형:3
   뿌다:보:1
   뿌다구니:명:3
   뿌드득뿌드득:부:1
  -뿌듯하다:형:12
  -뿌듯해지다:동:3
  -뿌려지다:동:10
  +뿌듯하:형:12
  +뿌듯해지:동:3
  +뿌려지:동:10
   뿌루퉁:명:1
   뿌리:명:195
  -뿌리내리다:동:9
  -뿌리다:동:171
  +뿌리내리:동:9
  +뿌리:동:171
   뿌리다:보:6
  -뿌리박다:동:6
  -뿌리박히다:동:6
  -뿌리치다:동:33
  -뿌옇다:형:18
  +뿌리박:동:6
  +뿌리박히:동:6
  +뿌리치:동:33
  +뿌옇:형:18
   뿌지직:부:1
  -뿐:의:1,066
  +뿐:의:1066
   뿔:명:14
   뿔:명:3
   뿔뿔이:부:8
   뿔테:명:2
  -뿜다:동:23
  -뿜어내다:동:6
  -뿜어지다:동:1
  +뿜:동:23
  +뿜어내:동:6
  +뿜어지:동:1
   뿡뿡:부:1
   쀼루퉁:부:1
   삐:부:1
   삐거덕:부:4
  -삐거덕거리다:동:2
  +삐거덕거리:동:2
   삐걱:부:1
  -삐걱거리다:동:8
  +삐걱거리:동:8
   삐그덕:부:1
  -삐그덕거리다:동:1
  +삐그덕거리:동:1
   삐그덕삐그덕:부:1
   삐꺽:부:1
   삐꼼히:부:2
   삐끗:부:1
  -삐끗하다:동:4
  +삐끗하:동:4
   삐끼:명:5
  -삐다:동:1
  -삐다:동:5
  -삐딱하다:형:3
  -삐뚤어지다:동:5
  -삐뜩그다:동:1
  +삐:동:1
  +삐:동:5
  +삐딱하:형:3
  +삐뚤어지:동:5
  +삐뜩그:동:1
   삐라:명:2
   삐리다:보:3
   삐삐:명:13
  @@ -24012,16 +24012,16 @@
   삐삐꽃:명:1
   삐삐새:명:6
   삐용삐용:부:1
  -삐져나오다:동:1
  +삐져나오:동:1
   삐죽삐죽:부:2
   삐죽이:부:1
  -삐죽하다:형:1
  +삐죽하:형:1
   삐질삐질:부:1
   삐쩍:부:7
   삐쭉삐쭉:부:1
  -삐쭉하다:동:1
  -삐치다:동:1
  -삐치다:동:2
  +삐쭉하:동:1
  +삐치:동:1
  +삐치:동:2
   삑:부:2
   삥:부:1
   사:관:42
  @@ -24038,10 +24038,10 @@
   사가:명:4
   사각:명:10
   사각:명:8
  -사각거리다:동:2
  +사각거리:동:2
   사각사각:부:1
  -사각사각하다:동:3
  -사각이다:동:1
  +사각사각하:동:3
  +사각이:동:1
   사각지대:명:4
   사각형:명:11
   사감:명:1
  @@ -24050,7 +24050,7 @@
   사건:명:1
   사건:명:801
   사격:명:37
  -사격하다:동:1
  +사격하:동:1
   사견:명:1
   사견:명:1
   사경:명:1
  @@ -24067,8 +24067,8 @@
   사고방식:명:56
   사고율:명:1
   사고터:명:1
  -사고팔다:동:8
  -사고하다:동:4
  +사고팔:동:8
  +사고하:동:4
   사곡:명:1
   사골:명:1
   사공:명:6
  @@ -24076,11 +24076,11 @@
   사과:명:48
   사과:명:63
   사과나무:명:1
  -사과드리다:동:1
  +사과드리:동:1
   사과문:명:1
  -사과받다:동:1
  +사과받:동:1
   사과탄:명:5
  -사과하다:동:19
  +사과하:동:19
   사관:명:12
   사관:명:12
   사관:명:4
  @@ -24095,12 +24095,12 @@
   사교술:명:1
   사교육비:명:1
   사교적:명:3
  -사교하다:동:1
  +사교하:동:1
   사구:명:1
   사구:명:1
   사권화:명:1
  -사귀다:동:63
  -사그라지다:동:3
  +사귀:동:63
  +사그라지:동:3
   사극:명:16
   사근히:부:1
   사글세:명:2
  @@ -24112,17 +24112,17 @@
   사기극:명:4
   사기꾼:명:11
   사기단:명:1
  -사기당하다:동:1
  +사기당하:동:1
   사기범:명:2
   사기적:관:1
   사기충천:명:1
   사까닥질:명:3
  -사까닥질하다:동:3
  +사까닥질하:동:3
   사나:명:2
  -사나워지다:동:5
  +사나워지:동:5
   사나이:명:30
   사나흘:명:4
  -사납다:형:26
  +사납:형:26
   사내:명:1
   사내:명:16
   사내:명:253
  @@ -24137,10 +24137,10 @@
   사냥개:명:3
   사냥꾼:명:3
   사냥새:명:2
  -사냥하다:동:5
  +사냥하:동:5
   사념:명:1
   사농공상:명:2
  -사다:동:957
  +사:동:957
   사다리:명:7
   사단:명:1
   사단:명:1
  @@ -24169,23 +24169,23 @@
   사돈어른:명:3
   사동:명:1
   사두품:명:1
  -사들이다:동:34
  +사들이:동:34
   사디스트적:명:1
   사또:명:6
   사라:명:1
   사라수:명:1
  -사라지다:동:263
  -사람:명:7,004
  +사라지:동:263
  +사람:명:7004
   사람됨:명:5
   사랑:명:521
   사랑:명:8
  -사랑받다:동:7
  +사랑받:동:7
   사랑방:명:13
   사랑법:명:2
  -사랑스럽다:형:22
  +사랑스럽:형:22
   사랑싸움:명:1
   사랑채:명:12
  -사랑하다:동:284
  +사랑하:동:284
   사래:명:1
   사레:명:3
   사려:명:7
  @@ -24201,27 +24201,27 @@
   사례:명:3
   사례비:명:2
   사례품:명:1
  -사례하다:동:2
  -사로자다:동:1
  -사로잡다:동:19
  -사로잡히다:동:68
  +사례하:동:2
  +사로자:동:1
  +사로잡:동:19
  +사로잡히:동:68
   사롱:명:1
   사료:명:30
   사료:명:8
   사료관:명:2
  -사료되다:동:3
  +사료되:동:3
   사료적:관:2
   사료적:명:1
  -사료하다:동:1
  +사료하:동:1
   사륜:명:1
  -사르다:동:5
  +사르:동:5
   사르륵:부:1
   사르륵사르륵:부:1
   사리:명:1
   사리:명:7
   사리:명:7
  -사리다:동:3
  -사리물다:동:1
  +사리:동:3
  +사리물:동:1
   사리사욕:명:1
   사리탑:명:5
   사립:명:16
  @@ -24232,29 +24232,29 @@
   사마귀:명:1
   사마귀:명:3
   사막:명:39
  -사막화하다:동:1
  +사막화하:동:1
   사만:관:1
   사만팔천:관:1
   사망:명:32
   사망률:명:4
   사망자:명:8
  -사망하다:동:28
  +사망하:동:28
   사면:명:1
   사면:명:17
   사면:명:3
   사면:명:6
  -사면되다:동:1
  +사면되:동:1
   사면령:명:1
  -사면하다:동:1
  +사면하:동:1
   사멸:명:1
  -사멸되다:동:1
  -사멸하다:동:4
  +사멸되:동:1
  +사멸하:동:4
   사명:명:26
   사명감:명:9
   사모관대:명:3
   사모님:명:30
   사모턱:명:2
  -사모하다:동:7
  +사모하:동:7
   사목:명:1
   사무:명:1
   사무:명:1
  @@ -24276,16 +24276,16 @@
   사무처장:명:6
   사무총장:명:41
   사무총장직:명:3
  -사무치다:동:8
  +사무치:동:8
   사문:명:3
   사문:명:5
   사문조직:명:1
   사문직:명:1
  -사문화되다:동:2
  +사문화되:동:2
   사물:명:174
   사물놀이:명:3
   사물적:명:1
  -사물화하다:동:1
  +사물화하:동:1
   사뭇:부:24
   사미승:명:1
   사민주의자:명:1
  @@ -24297,7 +24297,7 @@
   사방:명:57
   사방오리:명:1
   사방오리나무:명:2
  -사방치기하다:동:1
  +사방치기하:동:1
   사방팔방:명:5
   사백:관:2
   사백몇:관:1
  @@ -24316,7 +24316,7 @@
   사변:명:3
   사변적:명:3
   사별:명:2
  -사별하다:동:11
  +사별하:동:11
   사병:명:9
   사보:명:4
   사복:명:7
  @@ -24325,23 +24325,23 @@
   사부:명:1
   사부:명:9
   사분기:명:1
  -사분오열되다:동:1
  +사분오열되:동:1
   사비:명:1
   사뿐사뿐:부:3
   사뿐히:부:6
   사사:명:1
   사사건건:부:6
   사사로이:부:1
  -사사롭다:형:5
  +사사롭:형:5
   사사무애법계:명:1
   사사분기:명:1
  -사사오입하다:동:1
  -사사하다:동:4
  +사사오입하:동:1
  +사사하:동:4
   사산:명:10
   사산:명:3
   사산율:명:1
  -사살되다:동:3
  -사살하다:동:2
  +사살되:동:3
  +사살하:동:2
   사상:명:1
   사상:명:1
   사상:명:1
  @@ -24351,7 +24351,7 @@
   사상가:명:26
   사상계:명:7
   사상누각:명:3
  -사상되다:동:1
  +사상되:동:1
   사상사:명:5
   사상사적:관:1
   사상서:명:2
  @@ -24360,15 +24360,15 @@
   사상적:관:14
   사상적:명:6
   사상집:명:1
  -사상하다:동:3
  +사상하:동:3
   사색:명:1
   사색:명:10
   사색:명:2
   사색가:명:1
   사색당쟁:명:1
  -사색시키다:동:1
  +사색시키:동:1
   사색적:명:1
  -사색하다:동:3
  +사색하:동:3
   사생:명:1
   사생결단:명:3
   사생아:명:2
  @@ -24390,13 +24390,13 @@
   사섭법:명:2
   사성제:명:6
   사세:명:1
  -사소하다:형:31
  +사소하:형:31
   사수:명:1
   사수:명:2
   사수대:명:4
   사수자리:명:1
   사수좌:명:1
  -사수하다:동:1
  +사수하:동:1
   사슬:명:17
   사슴:명:36
   사슴뿔:명:1
  @@ -24411,8 +24411,8 @@
   사식기:명:6
   사신:명:16
   사신사:명:9
  -사신하다:동:1
  -사실:명:1,459
  +사신하:동:1
  +사실:명:1459
   사실:명:2
   사실:명:3
   사실:부:324
  @@ -24439,7 +24439,7 @@
   사십오:관:2
   사십오만:관:1
   사십이:관:1
  -사악하다:형:10
  +사악하:형:10
   사안:명:34
   사암:명:5
   사약:명:1
  @@ -24449,7 +24449,7 @@
   사양길:명:1
   사양서:명:1
   사양지심:명:1
  -사양하다:동:27
  +사양하:동:27
   사양화:명:1
   사양화시키다:명:1
   사어:명:1
  @@ -24469,12 +24469,12 @@
   사업장:명:13
   사업주:명:1
   사업체:명:6
  -사업하다:동:4
  +사업하:동:4
   사업화:명:1
   사업회:명:1
  -사여하다:동:1
  +사여하:동:1
   사역:명:3
  -사역시키다:동:1
  +사역시키:동:1
   사연:명:2
   사연:명:41
   사연:명:5
  @@ -24491,7 +24491,7 @@
   사용:명:218
   사용감:명:2
   사용권:명:2
  -사용되다:동:161
  +사용되:동:161
   사용량:명:12
   사용료:명:10
   사용률:명:3
  @@ -24502,7 +24502,7 @@
   사용자층:명:1
   사용주:명:2
   사용처:명:2
  -사용하다:동:759
  +사용하:동:759
   사우나:명:3
   사운드:명:16
   사원:명:1
  @@ -24514,7 +24514,7 @@
   사위:명:1
   사위:명:3
   사위:명:40
  -사위다:동:3
  +사위:동:3
   사윗감:명:4
   사유:명:10
   사유:명:28
  @@ -24525,22 +24525,22 @@
   사유적:명:1
   사유제:명:2
   사유지:명:3
  -사유하다:동:2
  +사유하:동:2
   사육:명:6
  -사육되다:동:3
  +사육되:동:3
   사육신:명:2
  -사육하다:동:7
  +사육하:동:7
   사은품:명:1
   사의:명:1
   사의:명:7
  -사이:명:1,064
  +사이:명:1064
   사이다:명:10
   사이드:명:4
   사이렌:명:8
   사이버:명:4
   사이비:명:13
   사이사이:명:16
  -사이좋다:형:21
  +사이좋:형:21
   사이즈:명:6
   사이코드라마:명:36
   사이클:명:7
  @@ -24556,11 +24556,11 @@
   사인볼:명:2
   사인여천:명:2
   사인펜:명:4
  -사인하다:동:2
  +사인하:동:2
   사일구:명:14
   사일로:명:3
   사임:명:3
  -사임하다:동:3
  +사임하:동:3
   사잇문:명:2
   사자:명:16
   사자:명:2
  @@ -24571,10 +24571,10 @@
   사장:명:1
   사장:명:205
   사장단:명:3
  -사장되다:동:4
  -사장시키다:동:1
  +사장되:동:4
  +사장시키:동:1
   사장직:명:2
  -사장하다:동:1
  +사장하:동:1
   사재:명:2
   사재기:명:2
   사저:명:3
  @@ -24599,7 +24599,7 @@
   사절기:명:1
   사절단:명:10
   사절단장:명:2
  -사절하다:동:1
  +사절하:동:1
   사정:명:1
   사정:명:199
   사정:명:21
  @@ -24609,9 +24609,9 @@
   사정거리권:명:1
   사정권:명:3
   사정사정:명:2
  -사정사정하다:동:1
  +사정사정하:동:1
   사정없이:부:12
  -사정하다:동:5
  +사정하:동:5
   사제:명:10
   사제:명:2
   사제:명:5
  @@ -24624,13 +24624,13 @@
   사족:명:3
   사족:명:3
   사죄:명:15
  -사죄하다:동:7
  +사죄하:동:7
   사주:명:10
   사주:명:2
   사주:명:5
   사주단자:명:6
   사주팔자:명:6
  -사주하다:동:4
  +사주하:동:4
   사중:명:2
   사증:명:1
   사지:명:2
  @@ -24662,8 +24662,8 @@
   사찰:명:48
   사찰과장:명:1
   사찰단:명:1
  -사찰받다:동:1
  -사찰하다:동:1
  +사찰받:동:1
  +사찰하:동:1
   사창:명:1
   사창가:명:6
   사채:명:12
  @@ -24682,11 +24682,11 @@
   사출물:명:1
   사치:명:25
   사치성:명:3
  -사치스럽다:형:10
  +사치스럽:형:10
   사치품:명:7
  -사치하다:동:2
  +사치하:동:2
   사칙:명:3
  -사칭하다:동:2
  +사칭하:동:2
   사쿠라:명:1
   사타구니:명:7
   사탄:명:3
  @@ -24700,7 +24700,7 @@
   사택:명:1
   사퇴:명:41
   사퇴서:명:10
  -사퇴하다:동:12
  +사퇴하:동:12
   사투:명:1
   사투:명:4
   사투리:명:19
  @@ -24710,14 +24710,14 @@
   사포:명:1
   사포:명:4
   사포닌:명:1
  -사포질하다:동:1
  +사포질하:동:1
   사폭:명:1
   사표:명:37
   사풍:명:1
   사피엔스:명:3
   사필귀정:명:1
   사하:명:1
  -사하다:동:1
  +사하:동:1
   사학:명:1
   사학:명:23
   사학:명:33
  @@ -24730,12 +24730,12 @@
   사해:명:1
   사해동포:명:1
   사형:명:16
  -사형당하다:동:2
  +사형당하:동:2
   사형수:명:3
   사환:명:1
   사활:명:11
   사회:명:18
  -사회:명:2,770
  +사회:명:2770
   사회과:명:2
   사회관:명:1
   사회관계:명:20
  @@ -24781,29 +24781,29 @@
   사회학적:관:11
   사회학적:명:4
   사회화:명:4
  -사회화되다:동:1
  +사회화되:동:1
   사후:명:10
   사후:명:30
   사흘:명:65
   삭:명:1
   삭:의:1
   삭감:명:9
  -삭감되다:동:4
  -삭감하다:동:3
  -삭다:동:10
  -삭막하다:형:19
  -삭막해지다:동:3
  +삭감되:동:4
  +삭감하:동:3
  +삭:동:10
  +삭막하:형:19
  +삭막해지:동:3
   삭발:명:3
   삭발위승:명:1
  -삭발위승하다:동:1
  -삭발하다:동:5
  -삭이다:동:10
  +삭발위승하:동:1
  +삭발하:동:5
  +삭이:동:10
   삭정이:명:6
   삭제:명:3
  -삭제되다:동:4
  -삭제시키다:동:1
  -삭제하다:동:9
  -삭히다:동:5
  +삭제되:동:4
  +삭제시키:동:1
  +삭제하:동:9
  +삭히:동:5
   삯:명:2
   삯빨래질:명:1
   삯일:명:1
  @@ -24850,11 +24850,11 @@
   산등성이:명:8
   산딸기:명:9
   산딸나무:명:1
  -산뜻하다:형:14
  +산뜻하:형:14
   산란기:명:4
   산란율:명:1
  -산란하다:동:1
  -산란하다:형:4
  +산란하:동:1
  +산란하:형:4
   산록:명:17
   산록부:명:5
   산림:명:38
  @@ -24862,8 +24862,8 @@
   산마루:명:7
   산마루터기:명:1
   산마을:명:1
  -산만하다:형:4
  -산만해지다:동:4
  +산만하:형:4
  +산만해지:동:4
   산매업:명:1
   산매점:명:1
   산맥:명:32
  @@ -24884,14 +24884,14 @@
   산바람:명:3
   산발적:명:5
   산발치:명:1
  -산발하다:동:1
  -산발하다:동:4
  +산발하:동:1
  +산발하:동:4
   산밭:명:1
   산벚꽃나무:명:1
   산별:명:1
   산보:명:3
   산보길:명:1
  -산보하다:동:3
  +산보하:동:3
   산복:명:1
   산봉:명:2
   산봉우리:명:10
  @@ -24915,8 +24915,8 @@
   산성도:명:1
   산성비:명:16
   산성화:명:3
  -산성화되다:동:1
  -산성화하다:동:1
  +산성화되:동:1
  +산성화하:동:1
   산세:명:4
   산소:명:1
   산소:명:80
  @@ -24961,27 +24961,27 @@
   산업체:명:12
   산업형:명:3
   산업화:명:45
  -산업화되다:동:2
  -산업화하다:동:2
  +산업화되:동:2
  +산업화하:동:2
   산여뀌:명:2
   산열매:명:2
   산울림:명:2
   산울타리:명:1
   산유국:명:1
   산일엽초:명:1
  -산입되다:동:3
  +산입되:동:3
   산자락:명:6
   산장:명:7
   산재:명:10
  -산재하다:동:11
  +산재하:동:11
   산적:명:3
  -산적하다:형:7
  +산적하:형:7
   산전:명:1
   산전수전:명:3
   산점상:명:1
   산정:명:2
   산정:명:9
  -산정하다:동:4
  +산정하:동:4
   산조:명:7
   산줄기:명:8
   산중:명:14
  @@ -24993,7 +24993,7 @@
   산채:명:5
   산책:명:39
   산책로:명:5
  -산책하다:동:8
  +산책하:동:8
   산천:명:13
   산천초목:명:1
   산철쭉:명:2
  @@ -25002,9 +25002,9 @@
   산촌:명:4
   산출:명:2
   산출:명:8
  -산출되다:동:4
  -산출하다:동:7
  -산출하다:동:9
  +산출되:동:4
  +산출하:동:7
  +산출하:동:9
   산타클로스:명:1
   산토끼:명:3
   산파:명:1
  @@ -25015,73 +25015,73 @@
   산학:명:1
   산해진미:명:3
   산행:명:3
  -산행하다:동:1
  +산행하:동:1
   산허리:명:9
   산협:명:1
   산형:명:2
   산형과:명:1
   산화:명:4
  -산화되다:동:1
  +산화되:동:1
   산화물:명:7
  -산화하다:동:2
  +산화하:동:2
   산후:명:8
   산후병:명:1
   산후열:명:1
   살:명:3
   살:명:97
   살:의:366
  -살갑다:형:1
  +살갑:형:1
   살갗:명:17
   살결:명:4
   살구:명:1
   살구나무:명:1
   살구색:명:1
  -살균시키다:동:1
  +살균시키:동:1
   살그머니:부:8
   살금살금:부:7
   살기:명:3
   살길:명:3
   살날:명:2
   살농:명:1
  -살다:동:2,297
  +살:동:2297
   살대:명:6
   살덩이:명:5
  -살뜰하다:형:3
  +살뜰하:형:3
   살랑:부:1
  -살랑거리다:동:3
  +살랑거리:동:3
   살랑살랑:부:4
  -살랑이다:동:2
  +살랑이:동:2
   살래살래:부:2
   살롱:명:2
   살롱전:명:1
   살름살름:부:1
  -살리다:동:209
  +살리:동:209
   살림:명:57
   살림방:명:1
   살림살이:명:25
   살림집:명:6
  -살림하다:동:2
  +살림하:동:2
   살맛:명:12
   살며시:부:17
   살모넬라균:명:1
   살모사:명:19
   살무사:명:1
   살배기:명:2
  -살벌하다:형:16
  -살벌해지다:동:1
  +살벌하:형:16
  +살벌해지:동:1
   살별:명:1
   살사:명:1
   살살:부:1
   살살:부:13
  -살살거리다:동:2
  +살살거리:동:2
   살상:명:13
   살색:명:3
  -살아가다:동:246
  -살아나다:동:48
  -살아남다:동:73
  +살아가:동:246
  +살아나:동:48
  +살아남:동:73
   살아생전:명:8
  -살아오다:동:131
  -살아지다:동:3
  +살아오:동:131
  +살아지:동:3
   살얼음:명:3
   살얼음판:명:2
   살육:명:3
  @@ -25092,42 +25092,42 @@
   살인자:명:14
   살인적:명:2
   살인죄:명:2
  -살인하다:동:2
  +살인하:동:2
   살점:명:3
   살조개:명:2
   살집:명:1
   살짝:부:106
   살짝이:부:1
  -살찌다:동:12
  -살찌우다:동:5
  +살찌:동:12
  +살찌우:동:5
   살충제:명:1
   살쾡이:명:1
  -살펴보다:동:384
  -살펴보아지다:동:1
  +살펴보:동:384
  +살펴보아지:동:1
   살포:명:9
  -살포되다:동:2
  +살포되:동:2
   살포시:부:6
  -살포하다:동:1
  +살포하:동:1
   살풀이:명:3
   살풋:부:2
  -살피다:동:119
  +살피:동:119
   살해:명:23
  -살해당하다:동:5
  -살해되다:동:10
  +살해당하:동:5
  +살해되:동:10
   살해범:명:3
  -살해하다:동:19
  -삶:명:1,013
  -삶기다:동:1
  -삶다:동:69
  -삶아지다:동:1
  +살해하:동:19
  +삶:명:1013
  +삶기:동:1
  +삶:동:69
  +삶아지:동:1
   삶앎:명:1
   삼:관:204
   삼:명:1
   삼:명:3
   삼:수:30
   삼가:부:1
  -삼가다:동:37
  -삼가하다:동:2
  +삼가:동:37
  +삼가하:동:2
   삼각:명:16
   삼각관계:명:3
   삼각근:명:1
  @@ -25153,8 +25153,8 @@
   삼남:명:1
   삼년:명:1
   삼년상:명:1
  -삼다:동:1
  -삼다:동:323
  +삼:동:1
  +삼:동:323
   삼다도:명:2
   삼단:명:1
   삼대:명:12
  @@ -25164,8 +25164,8 @@
   삼두근:명:1
   삼두박근:명:1
   삼등:명:10
  -삼등분되다:동:1
  -삼등분하다:동:2
  +삼등분되:동:1
  +삼등분하:동:2
   삼디:명:8
   삼라만상:명:14
   삼락:명:1
  @@ -25200,14 +25200,14 @@
   삼사:관:4
   삼사십:관:1
   삼삼오오:명:8
  -삼삼하다:형:3
  +삼삼하:형:3
   삼색:명:1
   삼선:명:3
   삼성:명:2
   삼세:명:2
   삼세:명:4
   삼수:명:2
  -삼수하다:동:2
  +삼수하:동:2
   삼순구식:명:1
   삼시:명:5
   삼신:명:1
  @@ -25227,8 +25227,8 @@
   삼십조:관:2
   삼십팔도선:명:1
   삼억:수:1
  -삼엄하다:형:2
  -삼엄해지다:동:1
  +삼엄하:형:2
  +삼엄해지:동:1
   삼역:명:1
   삼오:관:1
   삼원색:명:1
  @@ -25254,7 +25254,7 @@
   삼차원적:관:1
   삼차원적:명:1
   삼창:명:1
  -삼창하다:동:1
  +삼창하:동:1
   삼척동자:명:1
   삼천:관:10
   삼천:명:2
  @@ -25272,8 +25272,8 @@
   삼최:명:1
   삼층집:명:1
   삼칠일:명:1
  -삼켜지다:동:3
  -삼키다:동:55
  +삼켜지:동:3
  +삼키:동:55
   삼태기:명:2
   삼투:명:3
   삼투성:명:1
  @@ -25291,10 +25291,10 @@
   삽시:명:1
   삽시간:명:8
   삽입:명:6
  -삽입되다:동:4
  +삽입되:동:4
   삽입술:명:1
  -삽입시키다:동:1
  -삽입하다:동:5
  +삽입시키:동:1
  +삽입하:동:5
   삽자루:명:3
   삽주:명:2
   삽짝:명:1
  @@ -25319,8 +25319,8 @@
   상강:명:1
   상거:명:2
   상거래:명:1
  -상거하다:동:1
  -상거하다:동:1
  +상거하:동:1
  +상거하:동:1
   상것:명:1
   상견:명:1
   상견례:명:5
  @@ -25328,7 +25328,7 @@
   상경:명:3
   상경:명:3
   상경대:명:1
  -상경하다:동:6
  +상경하:동:6
   상경화:명:1
   상계:명:1
   상고:명:1
  @@ -25337,7 +25337,7 @@
   상고사:명:2
   상고선:명:3
   상고심:명:2
  -상고하다:동:3
  +상고하:동:3
   상공:명:20
   상공:명:9
   상공업:명:3
  @@ -25348,10 +25348,10 @@
   상관:명:41
   상관관계:명:16
   상관성:명:1
  -상관없다:형:50
  +상관없:형:50
   상관없이:부:34
  -상관있다:형:1
  -상관하다:동:10
  +상관있:형:1
  +상관하:동:10
   상국:명:1
   상궁:명:1
   상권:명:1
  @@ -25370,17 +25370,17 @@
   상기:명:1
   상기:명:2
   상기:명:4
  -상기되다:동:13
  -상기되다:동:2
  -상기시키다:동:7
  +상기되:동:13
  +상기되:동:2
  +상기시키:동:7
   상기율:명:3
  -상기하다:동:31
  +상기하:동:31
   상납:명:3
  -상납받다:동:1
  -상납하다:동:4
  -상냥스럽다:형:2
  -상냥하다:형:13
  -상냥해지다:동:2
  +상납받:동:1
  +상납하:동:4
  +상냥스럽:형:2
  +상냥하:형:13
  +상냥해지:동:2
   상념:명:13
   상노:명:2
   상놈:명:3
  @@ -25395,19 +25395,19 @@
   상담역:명:2
   상담원:명:11
   상담자:명:20
  -상담하다:동:8
  +상담하:동:8
   상당:명:59
   상당량:명:1
   상당성:명:1
   상당수:명:36
   상당액:명:5
  -상당하다:형:114
  +상당하:형:114
   상당히:부:142
   상대:명:1
   상대:명:193
   상대:명:5
   상대국:명:3
  -상대되다:동:1
  +상대되:동:1
   상대등:명:5
   상대등제:명:1
   상대론:명:1
  @@ -25422,10 +25422,10 @@
   상대주의적:관:1
   상대주의적:명:1
   상대편:명:33
  -상대하다:동:9
  +상대하:동:9
   상대화:명:3
  -상대화되다:동:1
  -상대화하다:동:2
  +상대화되:동:1
  +상대화하:동:2
   상도:명:1
   상동:명:3
   상동성:명:1
  @@ -25441,14 +25441,14 @@
   상류:명:38
   상류층:명:5
   상륙:명:19
  -상륙시키다:동:1
  +상륙시키:동:1
   상륙자:명:1
   상륙정:명:1
  -상륙하다:동:10
  +상륙하:동:10
   상말:명:2
   상머슴:명:2
   상면:명:1
  -상면하다:동:1
  +상면하:동:1
   상명:명:2
   상무:명:1
   상무:명:49
  @@ -25457,7 +25457,7 @@
   상민:명:1
   상반:명:1
   상반기:명:35
  -상반되다:동:16
  +상반되:동:16
   상반신:명:3
   상방:명:1
   상벌:명:1
  @@ -25472,12 +25472,12 @@
   상복:명:8
   상복착:명:1
   상봉:명:6
  -상봉하다:동:1
  +상봉하:동:1
   상부:명:51
   상부상조:명:6
   상부상조적:명:1
  -상부상조하다:동:1
  -상부하다:동:1
  +상부상조하:동:1
  +상부하:동:1
   상비군:명:9
   상비약:명:1
   상사:명:14
  @@ -25489,52 +25489,52 @@
   상상력:명:62
   상상적:관:12
   상상적:명:8
  -상상하다:동:74
  +상상하:동:74
   상생:명:1
   상생적:관:1
  -상서롭다:형:5
  +상서롭:형:5
   상석:명:1
   상선:명:1
   상설:명:19
   상설관:명:1
  -상설화되다:동:1
  +상설화되:동:1
   상세:명:1
  -상세하다:형:13
  +상세하:형:13
   상세히:부:14
   상소:명:4
   상소리:명:1
   상소문:명:8
   상소자:명:1
  -상소하다:동:2
  +상소하:동:2
   상속:명:13
  -상속되다:동:5
  +상속되:동:5
   상속론:명:2
   상속분:명:1
   상속세:명:13
   상속인:명:3
   상속자:명:1
  -상속하다:동:1
  -상쇄되다:동:2
  -상쇄시키다:동:1
  -상쇄하다:동:1
  +상속하:동:1
  +상쇄되:동:2
  +상쇄시키:동:1
  +상쇄하:동:1
   상수도:명:8
   상수리:명:1
   상수리나무:명:5
   상수원:명:16
   상순:명:1
   상술:명:2
  -상술하다:동:1
  -상스럽다:형:5
  +상술하:동:1
  +상스럽:형:5
   상습:명:2
   상습적:명:3
  -상습화되다:동:1
  +상습화되:동:1
   상승:명:64
   상승기:명:1
  -상승되다:동:5
  +상승되:동:5
   상승률:명:7
   상승세:명:10
  -상승시키다:동:5
  -상승하다:동:26
  +상승시키:동:5
  +상승하:동:26
   상승효과:명:2
   상시:명:9
   상식:명:1
  @@ -25542,17 +25542,17 @@
   상식선:명:2
   상식적:관:2
   상식적:명:24
  -상식하다:동:2
  +상식하:동:2
   상식화:명:1
  -상식화되다:동:1
  +상식화되:동:1
   상실:명:30
   상실감:명:4
  -상실되다:동:12
  -상실시키다:동:1
  +상실되:동:12
  +상실시키:동:1
   상실자:명:1
   상실증:명:2
  -상실하다:동:35
  -상심하다:동:3
  +상실하:동:35
  +상심하:동:3
   상아:명:1
   상아색:명:1
   상아탑:명:1
  @@ -25567,49 +25567,49 @@
   상업주의화:명:1
   상업학교:명:1
   상업화:명:1
  -상업화되다:동:1
  +상업화되:동:1
   상여:명:5
   상여금:명:3
   상여꾼:명:1
  -상연되다:동:2
  -상연하다:동:1
  +상연되:동:2
  +상연하:동:1
   상엿집:명:1
   상영:명:15
   상영관:명:1
  -상영되다:동:11
  +상영되:동:11
   상영실:명:1
   상영작:명:2
  -상영하다:동:5
  +상영하:동:5
   상오:명:8
   상온:명:1
   상용:명:6
  -상용되다:동:1
  +상용되:동:1
   상용차:명:4
  -상용하다:동:1
  +상용하:동:1
   상용한자:명:1
  -상용화하다:동:1
  +상용화하:동:1
   상원:명:10
   상위:명:23
   상위권:명:7
   상위직:명:2
   상읍례:명:1
   상응:명:1
  -상응하다:동:14
  +상응하:동:14
   상의:명:1
   상의:명:4
   상의:명:5
  -상의드리다:동:1
  -상의하다:동:11
  +상의드리:동:1
  +상의하:동:11
   상의하상:명:1
   상이:명:1
   상이용사:명:2
   상이점:명:2
  -상이하다:형:12
  +상이하:형:12
   상인:명:51
   상임:명:31
   상자:명:1
   상자:명:56
  -상자화되다:동:1
  +상자화되:동:1
   상장:명:1
   상장:명:1
   상장:명:19
  @@ -25617,74 +25617,74 @@
   상장사:명:1
   상전:명:9
   상점:명:45
  -상접하다:동:1
  +상접하:동:1
   상정:명:3
  -상정되다:동:1
  -상정되다:동:4
  -상정하다:동:13
  -상정하다:동:6
  +상정되:동:1
  +상정되:동:4
  +상정하:동:13
  +상정하:동:6
   상제:명:3
   상제:명:6
   상조:명:1
   상조회:명:1
  -상존하다:동:2
  -상존하다:동:3
  +상존하:동:2
  +상존하:동:3
   상종:명:2
  -상종하다:동:1
  +상종하:동:1
   상좌:명:1
   상좌평:명:1
   상좌평제:명:1
   상주:명:2
   상주:명:3
  -상주시키다:동:1
  +상주시키:동:1
   상주인구:명:1
  -상주하다:동:6
  +상주하:동:6
   상중하:명:1
   상징:명:85
   상징계:명:1
  -상징되다:동:12
  +상징되:동:12
   상징물:명:8
   상징성:명:17
   상징적:관:18
   상징적:명:30
   상징주의:명:3
   상징체계:명:10
  -상징하다:동:54
  +상징하:동:54
   상징화:명:6
  -상징화되다:동:1
  -상징화시키다:동:1
  -상징화하다:동:2
  +상징화되:동:1
  +상징화시키:동:1
  +상징화하:동:2
   상책:명:4
   상처:명:128
   상처:명:3
  -상처당하다:동:1
  -상처받다:동:12
  +상처당하:동:1
  +상처받:동:12
   상처투성이:명:5
  -상처하다:동:2
  +상처하:동:2
   상체:명:18
   상추:명:17
   상추쌈:명:1
   상춘:명:1
   상춘객:명:2
   상충:명:2
  -상충되다:동:4
  -상충하다:동:2
  +상충되:동:4
  +상충하:동:2
   상층:명:7
   상층권:명:1
   상층부:명:3
   상쾌:명:3
  -상쾌하다:형:31
  -상쾌해지다:동:6
  -상큼하다:형:1
  -상큼하다:형:14
  +상쾌하:형:31
  +상쾌해지:동:6
  +상큼하:형:1
  +상큼하:형:14
   상태:명:4
   상태:명:711
  -상통하다:동:2
  +상통하:동:2
   상투:명:22
   상투어:명:3
   상투적:명:16
   상투형:명:1
  -상투화되다:동:1
  +상투화되:동:1
   상판대기:명:1
   상팔자:명:2
   상패:명:2
  @@ -25700,10 +25700,10 @@
   상품:명:6
   상품화:명:5
   상품화권자:명:1
  -상품화되다:동:7
  -상품화하다:동:6
  +상품화되:동:7
  +상품화하:동:6
   상하:명:15
  -상하다:동:81
  +상하:동:81
   상하수도:명:4
   상한:명:1
   상한:명:6
  @@ -25714,7 +25714,7 @@
   상행선:명:5
   상행위:명:2
   상향:명:7
  -상허다:동:1
  +상허:동:1
   상현:명:1
   상형:명:3
   상호:명:1
  @@ -25726,7 +25726,7 @@
   상호주의:명:1
   상혼:명:1
   상환:명:9
  -상환하다:동:1
  +상환하:동:1
   상황:명:723
   상황극:명:1
   상황성:명:1
  @@ -25734,7 +25734,7 @@
   상황적:관:4
   상황판:명:1
   상회:명:7
  -상회하다:동:6
  +상회하:동:6
   상흔:명:1
   샅바:명:8
   샅샅이:부:13
  @@ -25743,14 +25743,14 @@
   새:명:209
   새:명:66
   새것:명:12
  -새겨지다:동:28
  +새겨지:동:28
   새근새근:부:1
  -새금하다:형:1
  -새기다:동:1
  -새기다:동:52
  +새금하:형:1
  +새기:동:1
  +새기:동:52
   새김:명:1
  -새까맣다:형:14
  -새까매지다:동:1
  +새까맣:형:14
  +새까매지:동:1
   새끼:명:16
   새끼:명:173
   새끼발가락:명:1
  @@ -25759,18 +25759,18 @@
   새날:명:3
   새내기:명:4
   새내기티:명:1
  -새다:동:1
  -새다:동:12
  -새다:동:60
  +새:동:1
  +새:동:12
  +새:동:60
   새달:명:1
   새대가리:명:2
   새댁:명:17
  -새되다:형:1
  +새되:형:1
   새로:부:230
  -새로워지다:동:6
  +새로워지:동:6
   새로이:부:29
   새록새록:부:4
  -새롭다:형:1,061
  +새롭:형:1061
   새마을:명:25
   새말:명:3
   새매:명:1
  @@ -25790,13 +25790,13 @@
   새벽종:명:1
   새벽차:명:1
   새봄:명:3
  -새빠지다:동:1
  -새빨갛다:형:6
  +새빠지:동:1
  +새빨갛:형:6
   새사람:명:1
   새살림:명:1
   새삼:명:1
   새삼:부:53
  -새삼스럽다:형:19
  +새삼스럽:형:19
   새삼스레:부:17
   새색시:명:4
   새소리:명:16
  @@ -25809,7 +25809,7 @@
   새어머니:명:1
   새엄마:명:3
   새우:명:34
  -새우다:동:24
  +새우:동:24
   새우잡이:명:1
   새우젓:명:20
   새우튀김:명:3
  @@ -25819,25 +25819,25 @@
   새집:명:2
   새집:명:8
   새참:명:2
  -새청맞다:형:1
  +새청맞:형:1
   새총:명:1
   새치:명:3
   새치기:명:4
  -새치름하다:형:1
  +새치름하:형:1
   새침:명:1
   새침데기:명:3
  -새침스럽다:형:1
  -새침하다:형:1
  -새침해지다:동:1
  -새카맣다:형:3
  -새콤달콤하다:형:1
  -새콤하다:형:1
  +새침스럽:형:1
  +새침하:형:1
  +새침해지:동:1
  +새카맣:형:3
  +새콤달콤하:형:1
  +새콤하:형:1
   새털:명:1
   새털구름:명:1
  -새파랗다:형:16
  -새푸르다:형:1
  -새하얗다:형:7
  -새하얘지다:동:1
  +새파랗:형:16
  +새푸르:형:1
  +새하얗:형:7
  +새하얘지:동:1
   새해:명:56
   색:명:1
   색:명:169
  @@ -25845,7 +25845,7 @@
   색견:명:1
   색광증:명:1
   색깔:명:142
  -색다르다:형:30
  +색다르:형:30
   색동:명:4
   색등:명:3
   색마:명:1
  @@ -25857,7 +25857,7 @@
   색소:명:2
   색소폰:명:4
   색수상행식:명:1
  -색스럽다:형:2
  +색스럽:형:2
   색시:명:14
   색싯감:명:1
   색안경:명:2
  @@ -25871,10 +25871,10 @@
   색채:명:30
   색채감:명:1
   색출:명:4
  -색출하다:동:1
  +색출하:동:1
   색칠:명:6
  -색칠되다:동:1
  -색칠하다:동:2
  +색칠되:동:1
  +색칠하:동:2
   샌님:명:3
   샌드백:명:5
   샌드위치:명:69
  @@ -25885,12 +25885,12 @@
   샐러리맨:명:8
   샐비어:명:6
   샐샐:부:3
  -샐쭉거리다:동:1
  +샐쭉거리:동:1
   샘:명:11
   샘:명:6
  -샘내다:동:1
  +샘내:동:1
   샘물:명:8
  -샘솟다:동:2
  +샘솟:동:2
   샘터:명:6
   샘플:명:4
   샘플러:명:2
  @@ -25902,21 +25902,21 @@
   생:명:32
   생가:명:2
   생가슴:명:1
  -생각:명:1,750
  -생각나다:동:106
  -생각되다:동:173
  -생각되어지다:동:1
  -생각하다:동:2,237
  -생각해지다:동:1
  +생각:명:1750
  +생각나:동:106
  +생각되:동:173
  +생각되어지:동:1
  +생각하:동:2237
  +생각해지:동:1
   생간건비탕:명:1
   생감자:명:1
   생강:명:20
   생강나무:명:5
   생강즙:명:6
  -생겨나다:동:127
  +생겨나:동:127
   생견:명:1
   생경광주:명:1
  -생경하다:형:6
  +생경하:형:6
   생경험:명:1
   생계:명:44
   생계란:명:1
  @@ -25927,14 +25927,14 @@
   생광:명:1
   생광목:명:2
   생구:명:1
  -생글거리다:동:4
  +생글거리:동:4
   생글생글:부:3
  -생급스럽다:형:1
  +생급스럽:형:1
   생긋:부:1
   생기:명:39
  -생기다:동:761
  +생기:동:761
   생기다:보:4
  -생기롭다:형:1
  +생기롭:형:1
   생김새:명:25
   생김생김:명:1
   생나물:명:2
  @@ -25946,16 +25946,16 @@
   생동:명:1
   생동감:명:9
   생동성:명:1
  -생동하다:동:48
  +생동하:동:48
   생두부:명:1
   생득적:명:1
  -생때같다:형:5
  +생때같:형:5
   생떼:명:7
   생라면:명:1
   생래적:명:1
   생략:명:3
  -생략되다:동:8
  -생략하다:동:13
  +생략되:동:8
  +생략하:동:13
   생력화:명:1
   생령:명:1
   생로병사:명:2
  @@ -25968,12 +25968,12 @@
   생리학자:명:1
   생리학적:관:1
   생리학적:명:1
  -생매장당하다:동:1
  -생매장되다:동:2
  +생매장당하:동:1
  +생매장되:동:2
   생맥주:명:1
   생머리:명:8
   생면부지:명:4
  -생멸하다:동:1
  +생멸하:동:1
   생명:명:826
   생명감:명:1
   생명계:명:6
  @@ -26006,7 +26006,7 @@
   생물화학적:관:1
   생방:명:1
   생방송:명:37
  -생방송하다:동:2
  +생방송하:동:2
   생보사:명:2
   생보업계:명:4
   생사:명:15
  @@ -26016,7 +26016,7 @@
   생산:명:366
   생산고:명:1
   생산관계:명:60
  -생산되다:동:64
  +생산되:동:64
   생산량:명:22
   생산력:명:74
   생산력적:관:1
  @@ -26033,25 +26033,25 @@
   생산지:명:4
   생산직:명:24
   생산품:명:2
  -생산하다:동:133
  +생산하:동:133
   생살:명:2
   생새우:명:1
   생색:명:8
  -생색나다:동:1
  -생색내다:동:2
  +생색나:동:1
  +생색내:동:2
   생생:명:1
  -생생하다:형:37
  +생생하:형:37
   생생히:부:9
   생선:명:75
   생선조림:명:1
   생선찌개:명:2
   생선회:명:5
   생성:명:28
  -생성되다:동:29
  -생성시키다:동:2
  -생성하다:동:12
  +생성되:동:29
  +생성시키:동:2
  +생성하:동:12
   생세목:명:1
  -생소하다:형:22
  +생소하:형:22
   생솔가지:명:4
   생수:명:1
   생수:명:11
  @@ -26072,7 +26072,7 @@
   생유리:명:1
   생육:명:7
   생육신:명:1
  -생육하다:동:2
  +생육하:동:2
   생으로:부:2
   생이별:명:2
   생일:명:112
  @@ -26088,11 +26088,11 @@
   생존권적:관:1
   생존율:명:3
   생존자:명:2
  -생존하다:동:11
  +생존하:동:11
   생졸:명:1
   생주:명:1
   생중계:명:3
  -생중계하다:동:1
  +생중계하:동:1
   생쥐:명:12
   생즙:명:1
   생지:명:1
  @@ -26117,16 +26117,16 @@
   생태학적:관:1
   생판:부:6
   생포:명:1
  -생포되다:동:1
  -생포하다:동:2
  +생포되:동:1
  +생포하:동:2
   생표고버섯:명:2
   생필품:명:5
   생항라:명:1
   생화학:명:4
   생화학과:명:1
   생화학적:관:1
  -생환하다:동:1
  -생활:명:1,094
  +생환하:동:1
  +생활:명:1094
   생활고:명:5
   생활공간:명:3
   생활권:명:2
  @@ -26150,11 +26150,11 @@
   생활적:명:1
   생활체:명:1
   생활필수품:명:4
  -생활하다:동:84
  +생활하:동:84
   생활하수:명:5
   생활화:명:5
  -생활화되다:동:5
  -생활화하다:동:3
  +생활화되:동:5
  +생활화하:동:3
   생활환경:명:25
   생후:명:11
   샤머니즘:명:5
  @@ -26166,13 +26166,13 @@
   샤워기:명:1
   샤워실:명:1
   샤워장:명:2
  -샤워하다:동:1
  -샤프하다:형:2
  +샤워하:동:1
  +샤프하:형:2
   샬레:명:2
   샴페인:명:8
   샴푸:명:9
   샴푸액:명:1
  -샴푸하다:동:2
  +샴푸하:동:2
   샷:명:5
   샷잔:명:2
   샹들리에:명:13
  @@ -26186,9 +26186,9 @@
   서가:명:1
   서간체:명:2
   서거:명:1
  -서거하다:동:1
  +서거하:동:1
   서걱서걱:부:1
  -서걱이다:동:1
  +서걱이:동:1
   서곡:명:2
   서구:명:149
   서구식:명:9
  @@ -26198,12 +26198,12 @@
   서구적:명:6
   서구형:명:1
   서구화:명:4
  -서구화되다:동:5
  -서글서글하다:형:3
  -서글퍼지다:동:3
  -서글프다:형:18
  +서구화되:동:5
  +서글서글하:형:3
  +서글퍼지:동:3
  +서글프:형:18
   서글픔:명:2
  -서글하다:형:1
  +서글하:형:1
   서기:명:13
   서기:명:14
   서기관:명:4
  @@ -26218,23 +26218,23 @@
   서너:관:63
   서넛:수:6
   서녘:명:2
  -서늘하다:형:32
  -서늘해지다:동:1
  -서다:동:944
  +서늘하:형:32
  +서늘해지:동:1
  +서:동:944
   서단:명:1
   서당:명:66
   서당식:명:1
   서도:명:1
   서두:명:1
   서두:명:11
  -서두르다:동:140
  -서둘다:동:5
  +서두르:동:140
  +서둘:동:5
   서랍:명:23
   서랍장:명:1
   서러움:명:8
  -서러워지다:동:1
  -서러워하다:동:5
  -서럽다:형:20
  +서러워지:동:1
  +서러워하:동:5
  +서럽:형:20
   서력:명:2
   서로:명:141
   서로:부:620
  @@ -26259,26 +26259,26 @@
   서른여덟:관:1
   서른일곱:수:1
   서른한:관:4
  -서름하다:형:1
  +서름하:형:1
   서리:명:1
   서리:명:1
   서리:명:13
  -서리다:동:25
  +서리:동:25
   서리서리:부:1
   서릿발:명:5
   서막:명:5
  -서먹서먹하다:형:3
  -서먹서먹해지다:동:2
  -서먹서먹해하다:동:1
  -서먹하다:형:5
  -서먹해지다:동:1
  +서먹서먹하:형:3
  +서먹서먹해지:동:2
  +서먹서먹해하:동:1
  +서먹하:형:5
  +서먹해지:동:1
   서면:명:1
   서면:명:12
   서명:명:25
  -서명되다:동:2
  +서명되:동:2
   서명서:명:1
   서명식:명:2
  -서명하다:동:24
  +서명하:동:24
   서무과:명:1
   서무과장:명:2
   서문:명:15
  @@ -26307,15 +26307,15 @@
   서브노트:명:2
   서브루틴:명:9
   서브시스템:명:1
  -서브하다:동:1
  +서브하:동:1
   서비스:명:173
   서비스료:명:2
   서비스맨:명:1
  -서비스받다:동:1
  +서비스받:동:1
   서비스업:명:15
   서비스업종:명:1
  -서비스하다:동:1
  -서빙하다:동:1
  +서비스하:동:1
  +서빙하:동:1
   서사:명:7
   서사극:명:9
   서사극론:명:1
  @@ -26328,32 +26328,32 @@
   서서히:부:102
   서설:명:1
   서설:명:5
  -서성거려지다:동:1
  -서성거리다:동:17
  -서성대다:동:1
  -서성이다:동:11
  +서성거려지:동:1
  +서성거리:동:17
  +서성대:동:1
  +서성이:동:11
   서세동점:명:1
   서술:명:36
  -서술되다:동:5
  +서술되:동:5
   서술서:명:1
   서술자:명:1
  -서술하다:동:47
  +서술하:동:47
   서스펜스:명:4
   서슬:명:11
  -서슴다:동:24
  +서슴:동:24
   서슴없이:부:11
   서식:명:1
   서식:명:23
  -서식시키다:동:1
  +서식시키:동:1
   서식지:명:2
   서식처:명:2
  -서식하다:동:76
  +서식하:동:76
   서신:명:5
   서안:명:1
   서암뜸:명:6
   서약:명:2
   서약서:명:3
  -서약하다:동:1
  +서약하:동:1
   서양:명:213
   서양고추:명:1
   서양목:명:2
  @@ -26363,19 +26363,19 @@
   서양적:관:2
   서양화:명:1
   서양화:명:3
  -서양화되다:동:1
  +서양화되:동:1
   서어나무:명:1
   서역:명:9
   서열:명:18
   서열식:명:1
   서열화:명:1
  -서열화되다:동:1
  -서열화하다:동:2
  +서열화되:동:1
  +서열화하:동:2
   서예:명:8
   서예관:명:1
   서예인:명:1
   서옥:명:3
  -서운하다:형:12
  +서운하:형:12
   서울:명:7
   서울내기:명:1
   서울말:명:2
  @@ -26394,9 +26394,9 @@
   서정시:명:4
   서정적:관:2
   서정적:명:2
  -서정화되다:동:1
  +서정화되:동:1
   서지학:명:1
  -서진하다:동:1
  +서진하:동:1
   서쪽:명:65
   서찰:명:2
   서체:명:27
  @@ -26408,8 +26408,8 @@
   서클원:명:1
   서킷:명:9
   서탁:명:1
  -서투르다:형:18
  -서툴다:형:16
  +서투르:형:18
  +서툴:형:16
   서편:명:5
   서평:명:1
   서포터스:명:1
  @@ -26436,7 +26436,7 @@
   석굴:명:6
   석궁:명:16
   석권:명:2
  -석권하다:동:5
  +석권하:동:5
   석기:명:8
   석기관:명:1
   석대:명:1
  @@ -26445,8 +26445,8 @@
   석면:명:4
   석명:명:1
   석방:명:14
  -석방되다:동:8
  -석방하다:동:6
  +석방되:동:8
  +석방하:동:6
   석벽:명:1
   석불:명:3
   석사:명:16
  @@ -26459,7 +26459,7 @@
   석식:명:1
   석양:명:6
   석양빛:명:2
  -석연하다:형:14
  +석연하:형:14
   석영:명:4
   석유:명:80
   석유곤로:명:2
  @@ -26485,8 +26485,8 @@
   석회암:명:4
   석회질:명:1
   석회층:명:1
  -섞다:동:114
  -섞이다:동:89
  +섞:동:114
  +섞이:동:89
   섟:명:1
   선:명:1
   선:명:1
  @@ -26508,17 +26508,17 @@
   선거일:명:4
   선거전:명:11
   선거철:명:15
  -선거하다:동:1
  +선거하:동:1
   선걸음:명:1
   선견자:명:1
   선결:명:2
  -선결하다:동:1
  +선결하:동:1
   선경험자:명:1
   선고:명:22
  -선고되다:동:4
  -선고받다:동:7
  +선고되:동:4
  +선고받:동:7
   선고심:명:1
  -선고하다:동:9
  +선고하:동:9
   선관:명:1
   선관:명:2
   선교:명:10
  @@ -26532,7 +26532,7 @@
   선구자:명:13
   선구적:관:2
   선구적:명:5
  -선구하다:동:1
  +선구하:동:1
   선글라스:명:8
   선금:명:2
   선금제:명:2
  @@ -26547,42 +26547,42 @@
   선대:의:1
   선도:명:11
   선도:명:8
  -선도되다:동:1
  +선도되:동:1
   선도부:명:2
   선도부원:명:1
   선도자:명:14
   선도적:명:1
  -선도하다:동:13
  -선도하다:동:2
  +선도하:동:13
  +선도하:동:2
   선돌:명:5
   선동:명:8
   선동가:명:1
   선동부:명:1
   선동적:관:1
   선동적:명:1
  -선동하다:동:11
  +선동하:동:11
   선두:명:2
   선두:명:38
   선두마:명:1
   선두적:명:1
   선득선득:부:1
  -선득하다:형:1
  +선득하:형:1
   선들바람:명:1
   선떡:명:1
  -선뜩선뜩하다:형:3
  -선뜩하다:형:2
  +선뜩선뜩하:형:3
  +선뜩하:형:2
   선뜻:부:48
   선량:명:2
  -선량하다:형:7
  +선량하:형:7
   선례:명:9
   선로:명:4
   선리스트:명:1
   선린:명:1
   선망:명:14
  -선망하다:동:1
  +선망하:동:1
   선명력:명:4
   선명성:명:1
  -선명하다:형:38
  +선명하:형:38
   선명히:부:4
   선묘:명:1
   선묘룡:명:1
  @@ -26591,9 +26591,9 @@
   선문답식:명:1
   선물:명:1
   선물:명:129
  -선물받다:동:1
  +선물받:동:1
   선물전:명:1
  -선물하다:동:9
  +선물하:동:9
   선미:명:3
   선민:명:1
   선민사상:명:1
  @@ -26606,30 +26606,30 @@
   선발:명:8
   선발권:명:4
   선발대:명:5
  -선발되다:동:10
  +선발되:동:10
   선발팀:명:1
  -선발하다:동:10
  +선발하:동:10
   선방:명:2
   선방:명:3
   선배:명:204
   선별:명:4
   선별적:명:1
  -선별하다:동:2
  -선보다:동:2
  -선보이다:동:57
  +선별하:동:2
  +선보:동:2
  +선보이:동:57
   선봉:명:3
   선봉대:명:5
   선봉장:명:2
   선불:명:5
  -선불받다:동:2
  -선불하다:동:1
  +선불받:동:2
  +선불하:동:1
   선비:명:92
   선사:명:1
   선사:명:1
   선사:명:12
   선사:명:6
  -선사받다:동:2
  -선사하다:동:13
  +선사받:동:2
  +선사하:동:13
   선산:명:1
   선상:명:1
   선상:명:5
  @@ -26639,8 +26639,8 @@
   선생실:명:1
   선생질:명:1
   선서:명:1
  -선서하다:동:2
  -선선해지다:동:1
  +선서하:동:2
  +선선해지:동:1
   선선히:부:2
   선소리:명:1
   선소리:명:1
  @@ -26666,22 +26666,22 @@
   선약:명:3
   선양:명:1
   선양:명:2
  -선양하다:동:1
  -선양하다:동:2
  +선양하:동:1
  +선양하:동:2
   선언:명:82
  -선언되다:동:2
  +선언되:동:2
   선언문:명:9
   선언서:명:1
   선언자:명:1
   선언적:관:2
  -선언하다:동:51
  -선연하다:형:4
  +선언하:동:51
  +선연하:형:4
   선연히:부:2
   선열:명:1
   선왕:명:2
   선용:명:3
   선용품:명:1
  -선용하다:동:1
  +선용하:동:1
   선우:명:1
   선원:명:34
   선유:명:2
  @@ -26695,8 +26695,8 @@
   선임:명:4
   선임:명:8
   선임권:명:1
  -선임되다:동:6
  -선임하다:동:9
  +선임되:동:6
  +선임하:동:9
   선입감:명:1
   선입견:명:10
   선입관:명:9
  @@ -26710,27 +26710,27 @@
   선전:명:35
   선전:명:5
   선전:명:6
  -선전되다:동:2
  +선전되:동:2
   선전문:명:2
   선전물:명:1
   선전실:명:1
   선전용:명:2
   선전장:명:1
   선전전:명:1
  -선전하다:동:17
  -선전하다:동:6
  +선전하:동:17
  +선전하:동:6
   선점:명:7
   선점기:명:1
  -선점하다:동:4
  +선점하:동:4
   선정:명:10
   선정:명:59
  -선정되다:동:13
  +선정되:동:13
   선정성:명:1
   선정작:명:3
   선정적:관:2
   선정적:명:2
   선정주의:명:1
  -선정하다:동:52
  +선정하:동:52
   선제:명:9
   선조:명:17
   선조사:명:1
  @@ -26747,8 +26747,8 @@
   선진적:관:3
   선진적:명:13
   선진화:명:15
  -선진화되다:동:5
  -선진화시키다:동:1
  +선진화되:동:5
  +선진화시키:동:1
   선집:명:9
   선차적:명:1
   선착:명:1
  @@ -26760,7 +26760,7 @@
   선창:명:30
   선창가:명:2
   선창머리:명:3
  -선창하다:동:1
  +선창하:동:1
   선처:명:6
   선천:명:20
   선천성:명:7
  @@ -26769,8 +26769,8 @@
   선초:명:1
   선추:명:1
   선출:명:15
  -선출되다:동:19
  -선출하다:동:19
  +선출되:동:19
  +선출하:동:19
   선취:명:1
   선취:명:5
   선친:명:7
  @@ -26780,34 +26780,34 @@
   선태류:명:1
   선택:명:93
   선택권:명:1
  -선택되다:동:14
  -선택받다:동:6
  +선택되:동:14
  +선택받:동:6
   선택법:명:3
   선택적:관:2
   선택적:명:3
  -선택하다:동:173
  +선택하:동:173
   선탠:명:2
  -선탠하다:동:2
  +선탠하:동:2
   선통:명:2
  -선통하다:동:1
  +선통하:동:1
   선팅:명:5
   선포:명:8
   선포권:명:4
  -선포되다:동:7
  +선포되:동:7
   선포안:명:1
  -선포하다:동:9
  +선포하:동:9
   선풍:명:1
   선풍:명:2
   선풍기:명:15
   선풍적:관:1
   선풍적:명:5
  -선하다:형:10
  -선하다:형:26
  +선하:형:10
  +선하:형:26
   선학:명:2
   선행:명:3
   선행:명:8
  -선행되다:동:12
  -선행하다:동:7
  +선행되:동:12
  +선행하:동:7
   선험:명:3
   선험적:관:5
   선험적:명:4
  @@ -26816,106 +26816,106 @@
   선형:명:3
   선호:명:24
   선호도:명:13
  -선호되다:동:15
  +선호되:동:15
   선호층:명:1
  -선호하다:동:38
  +선호하:동:38
   선홍색:명:1
   선화적:관:1
  -선회하다:동:10
  +선회하:동:10
   선후:명:2
   선후배:명:13
   선후지책:명:1
   섣달:명:3
  -섣부르다:형:5
  +섣부르:형:5
   섣불리:부:13
   설:명:22
   설:명:27
   설거지:명:27
   설거지물:명:1
   설거지조:명:1
  -설거지하다:동:5
  +설거지하:동:5
   설계:명:105
   설계도:명:14
  -설계되다:동:4
  +설계되:동:4
   설계비:명:1
   설계사:명:4
   설계안:명:1
   설계자:명:9
  -설계하다:동:28
  +설계하:동:28
   설교:명:8
  -설교하다:동:2
  +설교하:동:2
   설날:명:40
  -설다:동:1
  -설다:형:6
  -설도하다:동:1
  +설:동:1
  +설:형:6
  +설도하:동:1
   설득:명:18
  -설득되다:동:1
  +설득되:동:1
   설득력:명:52
  -설득시키다:동:8
  -설득하다:동:40
  +설득시키:동:8
  +설득하:동:40
   설렁설렁:부:1
   설렁탕:명:4
  -설레다:동:17
  +설레:동:17
   설레발:명:1
   설레설레:부:4
   설령:부:27
   설립:명:1
   설립:명:62
  -설립되다:동:18
  +설립되:동:18
   설립자:명:2
  -설립하다:동:35
  +설립하:동:35
   설마:부:21
   설마설마:부:2
   설마하니:부:2
   설맞이:명:2
   설명:명:231
  -설명되다:동:41
  +설명되:동:41
   설명문:명:3
   설명서:명:4
   설명자:명:1
   설명적:명:2
  -설명하다:동:369
  +설명하:동:369
   설명회:명:3
   설문:명:2
   설문:명:43
   설문지:명:14
   설법:명:7
  -설법하다:동:8
  +설법하:동:8
   설비:명:48
  -설비되다:동:2
  +설비되:동:2
   설비업:명:1
   설빔:명:2
   설사:명:14
   설사:부:34
   설사병:명:1
   설사약:명:1
  -설사하다:동:1
  +설사하:동:1
   설산:명:2
  -설삶다:동:2
  +설삶:동:2
   설상가상:명:4
   설상화:명:1
   설설:부:3
   설욕전:명:1
   설움:명:24
   설원:명:1
  -설익다:동:11
  +설익:동:11
   설정:명:32
  -설정되다:동:21
  -설정하다:동:93
  +설정되:동:21
  +설정하:동:93
   설치:명:81
  -설치다:동:14
  -설치다:동:18
  -설치되다:동:71
  +설치:동:14
  +설치:동:18
  +설치되:동:71
   설치물:명:2
   설치비:명:3
  -설치하다:동:104
  +설치하:동:104
   설탕:명:97
   설탕물:명:1
  -설파하다:동:3
  +설파하:동:3
   설퍼나마이드:명:1
   설핏:부:5
  -설핏하다:형:1
  -설하다:동:2
  +설핏하:형:1
  +설하:동:2
   설혹:부:15
   설화:명:18
   설화감:명:1
  @@ -26923,42 +26923,42 @@
   섬:명:112
   섬:부:1
   섬:의:7
  -섬겨지다:동:2
  +섬겨지:동:2
   섬광:명:5
  -섬기다:동:20
  +섬기:동:20
   섬나라:명:1
   섬돌:명:4
   섬뜩:부:1
  -섬뜩하다:형:18
  +섬뜩하:형:18
   섬망:명:1
   섬세성:명:2
  -섬세하다:형:52
  -섬약하다:형:1
  +섬세하:형:52
  +섬약하:형:1
   섬유:명:55
   섬유소:명:1
   섬유적:명:1
   섬유질:명:6
  -섬쩍지근하다:형:2
  -섬찟하다:형:2
  +섬쩍지근하:형:2
  +섬찟하:형:2
   섭렵:명:2
  -섭렵하다:동:10
  +섭렵하:동:10
   섭리:명:17
   섭생:명:2
  -섭섭하다:형:41
  -섭섭해하다:동:4
  +섭섭하:형:41
  +섭섭해하:동:4
   섭섭히:부:1
   섭씨:명:17
   섭외:명:9
   섭외국장:명:3
  -섭외받다:동:1
  -섭외하다:동:5
  +섭외받:동:1
  +섭외하:동:5
   섭정:명:1
   섭취:명:19
  -섭취되다:동:1
  +섭취되:동:1
   섭취량:명:6
  -섭취하다:동:49
  -섭하다:형:1
  -섯뒤집다:동:1
  +섭취하:동:49
  +섭하:형:1
  +섯뒤집:동:1
   섰다:명:2
   섰다판:명:1
   성:관:1
  @@ -26972,7 +26972,7 @@
   성:명:6
   성가:명:1
   성가:명:3
  -성가시다:형:15
  +성가시:형:15
   성게:명:1
   성격:명:489
   성격적:명:2
  @@ -26985,15 +26985,15 @@
   성골:명:1
   성공:명:91
   성공담:명:1
  -성공되다:동:1
  +성공되:동:1
   성공률:명:2
   성공리:명:3
   성공법:명:1
  -성공시키다:동:7
  +성공시키:동:7
   성공작:명:2
   성공적:관:4
   성공적:명:38
  -성공하다:동:105
  +성공하:동:105
   성공학:명:1
   성과:명:183
   성과물:명:3
  @@ -27001,18 +27001,18 @@
   성관:명:1
   성교:명:10
   성교육:명:19
  -성글다:형:2
  +성글:형:2
   성금:명:12
   성급:명:1
  -성급하다:형:27
  +성급하:형:27
   성급히:부:3
   성기:명:9
  -성기다:형:4
  +성기:형:4
   성깔:명:4
   성깔머리:명:1
  -성나다:동:14
  +성나:동:14
   성내:명:1
  -성내다:동:2
  +성내:동:2
   성냥:명:11
   성냥갑:명:3
   성냥개비:명:1
  @@ -27024,7 +27024,7 @@
   성당:명:16
   성대:명:2
   성대모사:명:2
  -성대하다:형:8
  +성대하:형:8
   성대히:부:1
   성도덕:명:1
   성령:명:1
  @@ -27032,11 +27032,11 @@
   성리학:명:9
   성립:명:76
   성립기:명:3
  -성립되다:동:65
  +성립되:동:65
   성립설:명:1
  -성립시키다:동:9
  -성립하다:동:50
  -성마르다:형:1
  +성립시키:동:9
  +성립하:동:50
  +성마르:형:1
   성명:명:5
   성명:명:78
   성명서:명:8
  @@ -27058,32 +27058,32 @@
   성비:명:4
   성사:명:3
   성사:명:4
  -성사되다:동:10
  -성사시키다:동:6
  +성사되:동:10
  +성사시키:동:6
   성상모:명:1
   성생활:명:6
   성서:명:20
   성서적:명:1
   성선설:명:3
   성성이:명:1
  -성성하다:형:1
  +성성하:형:1
   성쇠:명:1
   성수기:명:2
   성숙:명:17
   성숙기:명:4
   성숙도:명:1
  -성숙되다:동:14
  +성숙되:동:14
   성숙미:명:1
  -성숙시키다:동:3
  -성숙하다:동:42
  -성숙해지다:동:8
  -성스럽다:형:19
  +성숙시키:동:3
  +성숙하:동:42
  +성숙해지:동:8
  +성스럽:형:19
   성시:명:1
   성실:명:4
   성실도:명:3
   성실성:명:5
  -성실하다:형:55
  -성실해지다:동:1
  +성실하:형:55
  +성실해지:동:1
   성실히:부:10
   성심:명:1
   성심성의껏:부:2
  @@ -27096,19 +27096,19 @@
   성애:명:2
   성어:명:2
   성업:명:6
  -성업하다:동:1
  +성업하:동:1
   성역:명:1
   성역:명:16
   성역화:명:3
  -성역화되다:동:1
  -성역화하다:동:1
  +성역화되:동:1
  +성역화하:동:1
   성욕:명:10
   성욕자:명:1
   성우:명:7
   성운:명:3
   성원:명:18
   성원:명:5
  -성원하다:동:1
  +성원하:동:1
   성은:명:1
   성읍:명:39
   성의:명:19
  @@ -27120,19 +27120,19 @@
   성인병:명:6
   성인식:명:2
   성인화:명:1
  -성인화시키다:동:1
  +성인화시키:동:1
   성자:명:2
   성자:명:8
   성장:명:216
   성장기:명:7
  -성장되다:동:1
  +성장되:동:1
   성장력:명:2
   성장률:명:29
   성장세:명:6
  -성장시키다:동:3
  +성장시키:동:3
   성장주:명:1
   성장지:명:1
  -성장하다:동:98
  +성장하:동:98
   성적:관:21
   성적:명:26
   성적:명:7
  @@ -27151,11 +27151,11 @@
   성직:명:2
   성직자:명:22
   성질:명:73
  -성질나다:동:1
  +성질나:동:1
   성징:명:3
   성찬:명:1
   성찰:명:22
  -성찰하다:동:4
  +성찰하:동:4
   성채:명:3
   성체:명:1
   성총:명:1
  @@ -27163,32 +27163,32 @@
   성취:명:23
   성취감:명:7
   성취동기:명:2
  -성취되다:동:7
  -성취시키다:동:5
  +성취되:동:7
  +성취시키:동:5
   성취욕:명:1
  -성취하다:동:21
  +성취하:동:21
   성층권:명:3
  -성층화하다:동:1
  +성층화하:동:1
   성큼:부:14
   성큼성큼:부:10
   성탄:명:1
   성탄나무:명:1
   성탄절:명:1
   성터:명:6
  -성토하다:동:2
  +성토하:동:2
   성패:명:12
   성폭력:명:32
   성폭행:명:25
  -성폭행당하다:동:3
  -성폭행하다:동:3
  +성폭행당하:동:3
  +성폭행하:동:3
   성품:명:22
  -성하다:형:20
  -성하다:형:4
  +성하:형:20
  +성하:형:4
   성함:명:6
   성행:명:1
   성행:명:2
   성행위:명:18
  -성행하다:동:18
  +성행하:동:18
   성향:명:48
   성현:명:3
   성형:명:1
  @@ -27198,14 +27198,14 @@
   성형외과의:명:4
   성형외과학:명:2
   성형의:명:1
  -성형하다:동:2
  +성형하:동:2
   성형학적:명:3
   성호르몬:명:3
   성혼식:명:1
   성화:명:2
   성화:명:9
  -성화되다:동:2
  -성화하다:동:1
  +성화되:동:2
  +성화하:동:1
   성황:명:4
   성황당:명:1
   성황리:명:2
  @@ -27225,7 +27225,7 @@
   세간:명:9
   세간살이:명:1
   세계:명:1
  -세계:명:1,345
  +세계:명:1345
   세계관:명:96
   세계관적:관:3
   세계관적:명:1
  @@ -27240,8 +27240,8 @@
   세계정세:명:2
   세계주의:명:4
   세계화:명:9
  -세계화시키다:동:1
  -세계화하다:동:1
  +세계화시키:동:1
  +세계화하:동:1
   세고:명:1
   세곡:명:1
   세공:명:2
  @@ -27257,16 +27257,16 @@
   세기적:명:1
   세기형:명:1
   세끼:명:4
  -세내다:동:1
  +세내:동:1
   세뇌:명:10
  -세뇌당하다:동:1
  -세뇌되다:동:1
  -세뇌받다:동:3
  +세뇌당하:동:1
  +세뇌되:동:1
  +세뇌받:동:3
   세뇌자:명:1
  -세뇌하다:동:3
  -세다:동:3
  -세다:동:52
  -세다:형:59
  +세뇌하:동:3
  +세:동:3
  +세:동:52
  +세:형:59
   세대:명:10
   세대:명:175
   세대교체:명:4
  @@ -27288,13 +27288,13 @@
   세력사:명:1
   세력체:명:1
   세력화:명:4
  -세력화하다:동:2
  +세력화하:동:2
   세련:명:8
  -세련되다:형:41
  +세련되:형:41
   세련미:명:3
   세례:명:16
   세례명:명:1
  -세례받다:동:1
  +세례받:동:1
   세례식:명:2
   세로:명:15
   세로무늬:명:4
  @@ -27310,7 +27310,7 @@
   세명:명:1
   세모:명:2
   세모꼴:명:1
  -세모나다:형:2
  +세모나:형:2
   세모시:명:1
   세목:명:1
   세목:명:2
  @@ -27323,24 +27323,24 @@
   세미나:명:30
   세미나식:명:2
   세미트리:명:1
  -세밀하다:형:11
  +세밀하:형:11
   세밀히:부:1
   세발자전거:명:1
   세배:명:11
  -세배드리다:동:1
  -세배하다:동:1
  +세배드리:동:1
  +세배하:동:1
   세뱃돈:명:2
   세법:명:4
   세부:명:10
   세부적:관:2
   세부적:명:2
   세분:명:8
  -세분되다:동:3
  -세분하다:동:5
  +세분되:동:3
  +세분하:동:5
   세분화:명:6
  -세분화되다:동:6
  -세분화시키다:동:1
  -세분화하다:동:6
  +세분화되:동:6
  +세분화시키:동:1
  +세분화하:동:6
   세븐브리지:명:1
   세뿔여뀌:명:2
   세사:명:1
  @@ -27350,7 +27350,7 @@
   세상살이:명:2
   세상에:감:21
   세상일:명:5
  -세세하다:형:6
  +세세하:형:6
   세세히:부:1
   세션:명:1
   세속:명:21
  @@ -27364,26 +27364,26 @@
   세수:명:26
   세수:명:6
   세수법:명:1
  -세수하다:동:7
  +세수하:동:7
   세숫대야:명:4
   세숫비누:명:3
   세습:명:2
   세습적:명:2
   세습제:명:1
  -세습하다:동:1
  +세습하:동:1
   세습화:명:1
   세시:명:4
  -세심하다:형:23
  +세심하:형:23
   세심히:부:1
   세안:명:21
   세안법:명:3
   세안제:명:5
  -세안하다:동:10
  +세안하:동:10
   세액:명:3
  -세어지다:동:2
  +세어지:동:2
   세역:명:1
  -세우다:동:488
  -세워지다:동:90
  +세우:동:488
  +세워지:동:90
   세원:명:4
   세월:명:201
   세율:명:25
  @@ -27411,7 +27411,7 @@
   세주:명:1
   세중마포:명:1
   세차:명:1
  -세차다:형:19
  +세차:형:19
   세찬대:명:1
   세척:명:4
   세척제:명:2
  @@ -27425,11 +27425,11 @@
   세탁비누:명:1
   세탁성:명:1
   세탁소:명:6
  -세탁하다:동:10
  +세탁하:동:10
   세태:명:14
   세트:명:33
   세팅:명:4
  -세팅하다:동:1
  +세팅하:동:1
   세파:명:2
   세평:명:1
   세포:명:1
  @@ -27439,15 +27439,15 @@
   세필:명:2
   세형동검:명:1
   섹스:명:45
  -섹스하다:동:1
  +섹스하:동:1
   섹시:명:1
  -섹시하다:형:15
  -섹시해지다:동:1
  +섹시하:형:15
  +섹시해지:동:1
   섹터:명:1
   센바람:명:1
   센서:명:7
   센서스:명:1
  -센세이셔널하다:형:1
  +센세이셔널하:형:1
   센스:명:7
   센터:명:47
   센터링:명:5
  @@ -27463,7 +27463,7 @@
   셈:명:14
   셈:의:280
   셈법:명:1
  -셈하다:동:3
  +셈하:동:3
   셋:수:76
   셋방:명:3
   셋이:명:6
  @@ -27489,19 +27489,19 @@
   소각:명:2
   소각로:명:1
   소각장:명:1
  -소각하다:동:2
  +소각하:동:2
   소감:명:19
   소개:명:2
   소개:명:59
  -소개되다:동:60
  +소개되:동:60
   소개령:명:1
   소개말:명:2
  -소개받다:동:5
  +소개받:동:5
   소개서:명:6
  -소개시키다:동:2
  +소개시키:동:2
   소개팅:명:1
  -소개하다:동:1
  -소개하다:동:163
  +소개하:동:1
  +소개하:동:163
   소격:명:1
   소견:명:9
   소견머리:명:1
  @@ -27513,8 +27513,8 @@
   소고기:명:3
   소고삐:명:1
   소곡:명:1
  -소곤거리다:동:2
  -소곤대다:동:2
  +소곤거리:동:2
  +소곤대:동:2
   소공동체:명:1
   소공연:명:1
   소공원:명:5
  @@ -27523,11 +27523,11 @@
   소광장:명:1
   소구:명:1
   소구경:명:1
  -소구되다:동:2
  +소구되:동:2
   소구력:명:1
   소구리:명:4
  -소구시키다:동:1
  -소구하다:동:5
  +소구시키:동:1
  +소구하:동:5
   소국:명:1
   소국:명:58
   소국가:명:2
  @@ -27551,14 +27551,14 @@
   소금밭:명:2
   소금장이:명:1
   소급:명:4
  -소급하다:동:5
  +소급하:동:5
   소기:명:4
   소기업:명:6
   소꼬리:명:1
   소꿉:명:1
   소꿉놀이:명:3
   소꿉장난:명:5
  -소꿉장난하다:동:1
  +소꿉장난하:동:1
   소나기:명:23
   소나무:명:105
   소나타:명:4
  @@ -27580,9 +27580,9 @@
   소단원:명:1
   소달구지:명:3
   소담:명:1
  -소담스럽다:형:1
  +소담스럽:형:1
   소담스레:부:1
  -소담하다:형:1
  +소담하:형:1
   소대:명:2
   소대원:명:1
   소대장:명:7
  @@ -27597,7 +27597,7 @@
   소독약:명:1
   소독제:명:1
   소독포:명:1
  -소독하다:동:4
  +소독하:동:4
   소동:명:36
   소두:명:3
   소득:명:136
  @@ -27610,10 +27610,10 @@
   소띠:명:4
   소라:명:7
   소란:명:13
  -소란스러워지다:동:2
  -소란스럽다:형:10
  -소란하다:형:7
  -소란해지다:동:2
  +소란스러워지:동:2
  +소란스럽:형:10
  +소란하:형:7
  +소란해지:동:2
   소량:명:9
   소령:명:9
   소로:명:1
  @@ -27624,20 +27624,20 @@
   소롯이:부:1
   소류지:명:1
   소름:명:15
  -소리:명:1,660
  +소리:명:1660
   소리굽쇠:명:1
   소리글자:명:1
   소리껏:부:1
   소리꾼:명:5
  -소리치다:동:80
  +소리치:동:80
   소림:명:11
   소립자:명:10
   소릿결:명:1
   소릿기:명:1
   소만:명:1
   소망:명:33
  -소망스럽다:형:2
  -소망하다:동:6
  +소망스럽:형:2
  +소망하:동:6
   소매:명:1
   소매:명:4
   소매:명:49
  @@ -27647,38 +27647,38 @@
   소매업자:명:1
   소매점:명:4
   소매치기:명:5
  -소매치기하다:동:1
  +소매치기하:동:1
   소매통:명:2
   소맷부리:명:2
   소맷자락:명:2
   소멸:명:9
  -소멸되다:동:18
  -소멸시키다:동:2
  -소멸하다:동:12
  +소멸되:동:18
  +소멸시키:동:2
  +소멸하:동:12
   소명:명:4
  -소명하다:동:1
  +소명하:동:1
   소모:명:10
  -소모되다:동:7
  +소모되:동:7
   소모량:명:1
   소모성:명:3
   소모임:명:6
   소모적:명:3
   소모전:명:2
   소모품:명:2
  -소모품화하다:동:1
  -소모하다:동:9
  +소모품화하:동:1
  +소모하:동:9
   소목:명:1
   소묘전:명:1
   소무탈:명:1
   소문:명:150
  -소문나다:동:20
  -소문내다:동:1
  +소문나:동:20
  +소문내:동:1
   소문능:명:1
   소문자:명:1
   소박:명:1
  -소박당하다:동:1
  -소박맞다:동:2
  -소박하다:형:56
  +소박당하:동:1
  +소박맞:동:2
  +소박하:형:56
   소반:명:3
   소방:명:7
   소방관:명:1
  @@ -27688,10 +27688,10 @@
   소방장:명:1
   소방전:명:1
   소방차:명:7
  -소백하다:형:1
  +소백하:형:1
   소변:명:15
   소변량:명:1
  -소변보다:동:1
  +소변보:동:1
   소보루:명:2
   소복:명:6
   소복이:부:1
  @@ -27699,7 +27699,7 @@
   소부족:명:2
   소분류:명:2
   소비:명:107
  -소비되다:동:7
  +소비되:동:7
   소비량:명:15
   소비력:명:1
   소비문화:명:9
  @@ -27716,7 +27716,7 @@
   소비주의적:관:2
   소비지:명:2
   소비층:명:2
  -소비하다:동:15
  +소비하:동:15
   소비형:명:1
   소빙하기:명:1
   소사:명:1
  @@ -27725,15 +27725,15 @@
   소사전:명:2
   소산:명:23
   소산물:명:1
  -소살하다:동:1
  +소살하:동:1
   소상인:명:1
   소상품:명:1
  -소상하다:형:4
  +소상하:형:4
   소상히:부:1
   소색:명:2
   소생:명:2
  -소생시키다:동:1
  -소생하다:동:3
  +소생시키:동:1
  +소생하:동:3
   소서:명:1
   소선거구:명:2
   소선거구제:명:1
  @@ -27745,14 +27745,14 @@
   소설적:명:2
   소설집:명:3
   소설책:명:10
  -소설화하다:동:3
  +소설화하:동:3
   소셜:명:1
  -소소하다:형:3
  +소소하:형:3
   소속:명:98
   소속감:명:3
  -소속되다:동:12
  +소속되:동:12
   소속원:명:3
  -소속하다:동:3
  +소속하:동:3
   소송:명:66
   소수:명:52
   소수인:명:1
  @@ -27761,9 +27761,9 @@
   소수파:명:2
   소스:명:6
   소스:명:78
  -소스라치다:동:16
  +소스라치:동:16
   소슬바람:명:1
  -소슬하다:형:2
  +소슬하:형:2
   소승:대:1
   소승:명:5
   소승적:관:1
  @@ -27778,14 +27778,14 @@
   소식주의자:명:1
   소식지:명:4
   소식통:명:19
  -소식하다:동:1
  +소식하:동:1
   소신:대:1
   소신:명:22
   소신껏:부:2
   소실:명:3
  -소실되다:동:1
  +소실되:동:1
   소심증:명:1
  -소심하다:형:4
  +소심하:형:4
   소아:명:5
   소아과:명:5
   소아마비:명:5
  @@ -27793,36 +27793,36 @@
   소액:명:6
   소야곡:명:1
   소양:명:7
  -소연하다:형:1
  -소연해지다:동:1
  +소연하:형:1
  +소연해지:동:1
   소엽:명:2
   소영웅주의:명:1
   소외:명:48
   소외감:명:16
  -소외당하다:동:1
  -소외되다:동:31
  -소외받다:동:3
  +소외당하:동:1
  +소외되:동:31
  +소외받:동:3
   소외수:명:1
  -소외시키다:동:1
  +소외시키:동:1
   소요:명:19
   소요:명:7
  -소요되다:동:32
  -소요하다:동:2
  +소요되:동:32
  +소요하:동:2
   소용:명:4
   소용:명:42
   소용돌이:명:28
  -소용돌이치다:동:8
  -소용되다:동:2
  -소용없다:형:20
  +소용돌이치:동:8
  +소용되:동:2
  +소용없:형:20
   소우주:명:3
   소운동회:명:1
   소원:명:1
   소원:명:51
   소원:명:8
  -소원하다:동:1
  -소원하다:동:2
  -소원하다:형:1
  -소원해지다:동:1
  +소원하:동:1
  +소원하:동:2
  +소원하:형:1
  +소원해지:동:1
   소위:명:1
   소위:명:8
   소위:부:82
  @@ -27831,7 +27831,7 @@
   소유관계:명:4
   소유권:명:31
   소유권자:명:1
  -소유되다:동:1
  +소유되:동:1
   소유론:명:20
   소유욕:명:3
   소유자:명:70
  @@ -27842,7 +27842,7 @@
   소유주:명:5
   소유지:명:15
   소유층:명:1
  -소유하다:동:44
  +소유하:동:44
   소유화:명:2
   소음:명:68
   소음도:명:2
  @@ -27853,7 +27853,7 @@
   소인국:명:3
   소일거리:명:3
   소일변:명:1
  -소일하다:동:2
  +소일하:동:2
   소임:명:4
   소자:대:2
   소자:명:3
  @@ -27870,22 +27870,22 @@
   소장:명:2
   소장:명:27
   소장:명:4
  -소장되다:동:3
  +소장되:동:3
   소장품:명:4
  -소장하다:동:4
  +소장하:동:4
   소재:명:152
   소재:명:24
   소재벌:명:1
   소재적:관:2
   소재적:명:1
   소재지:명:28
  -소재하다:동:1
  +소재하:동:1
   소전:명:1
   소절:명:3
   소정:명:2
   소젖:명:1
   소제:명:8
  -소제하다:동:3
  +소제하:동:3
   소조:명:7
   소조산:명:1
   소주:명:76
  @@ -27893,7 +27893,7 @@
   소주잔:명:11
   소주제:명:12
   소죽:명:1
  -소중하다:형:110
  +소중하:형:110
   소중히:부:23
   소지:명:47
   소지:명:5
  @@ -27903,18 +27903,18 @@
   소지자:명:5
   소지죄:명:1
   소지품:명:29
  -소지하다:동:9
  +소지하:동:9
   소직:대:1
  -소진되다:동:2
  -소진되다:동:2
  -소진하다:동:2
  +소진되:동:2
  +소진되:동:2
  +소진하:동:2
   소질:명:28
   소집:명:16
   소집단:명:4
   소집단적:명:1
  -소집되다:동:3
  +소집되:동:3
   소집처:명:1
  -소집하다:동:10
  +소집하:동:10
   소쩍:부:10
   소쩍다:부:5
   소쩍새:명:8
  @@ -27923,30 +27923,30 @@
   소총:명:5
   소추:명:7
   소추권:명:1
  -소추하다:동:1
  +소추하:동:1
   소축적:명:1
   소축척:명:1
   소출:명:4
  -소출하다:동:1
  +소출하:동:1
   소치:명:3
   소칠판:명:1
   소쿠리:명:16
  -소탈하다:형:2
  +소탈하:형:2
   소탕:명:2
   소탕령:명:1
  -소탕하다:동:5
  +소탕하:동:5
   소태:명:1
   소태나무:명:1
   소택지:명:1
   소털:명:1
   소통:명:17
  -소통되다:동:1
  -소통시키다:동:1
  -소통하다:동:2
  +소통되:동:1
  +소통시키:동:1
  +소통하:동:2
   소트:명:2
   소파:명:48
   소포:명:12
  -소포장되다:동:1
  +소포장되:동:1
   소폭:명:9
   소폭:부:6
   소폭화:명:1
  @@ -27959,7 +27959,7 @@
   소프트볼:명:1
   소프트웨어:명:177
   소피:명:1
  -소피보다:동:1
  +소피보:동:1
   소피스트:명:2
   소필지:명:1
   소학교:명:4
  @@ -27971,30 +27971,30 @@
   소형차:명:4
   소호:명:1
   소홀:명:5
  -소홀하다:형:21
  +소홀하:형:21
   소홀히:부:37
   소화:명:1
   소화:명:39
   소화금:명:1
   소화기:명:2
   소화기:명:4
  -소화되다:동:2
  +소화되:동:2
   소화물:명:3
   소화성:명:1
  -소화시키다:동:2
  +소화시키:동:2
   소화어아금:명:1
   소화전:명:2
   소화제:명:6
  -소화하다:동:32
  +소화하:동:32
   소환:명:34
  -소환하다:동:4
  +소환하:동:4
   소회:명:2
   소회의실:명:1
   속:명:12
   속:명:14
  -속:명:2,168
  +속:명:2168
   속가:명:1
  -속개하다:동:2
  +속개하:동:2
   속결:명:1
   속곳:명:1
   속공:명:1
  @@ -28006,9 +28006,9 @@
   속내:명:7
   속내평:명:1
   속눈썹:명:12
  -속다:동:25
  -속닥거리다:동:1
  -속단하다:동:4
  +속:동:25
  +속닥거리:동:1
  +속단하:동:4
   속달:명:1
   속담:명:58
   속도:명:211
  @@ -28016,34 +28016,34 @@
   속도계:명:2
   속도비:명:2
   속도전:명:1
  -속독하다:동:1
  -속되다:형:15
  +속독하:동:1
  +속되:형:15
   속뜻:명:4
   속락:명:1
  -속량되다:동:1
  +속량되:동:1
   속력:명:2
   속마음:명:16
   속말:명:2
   속명:명:1
   속물:명:5
  -속물스럽다:형:2
  +속물스럽:형:2
   속물적:관:2
  -속물화되다:동:1
  +속물화되:동:1
   속바지:명:3
   속박:명:7
  -속박당하다:동:1
  -속박되다:동:2
  -속박하다:동:3
  +속박당하:동:1
  +속박되:동:2
  +속박하:동:3
   속병:명:2
   속보:명:14
   속사정:명:3
  -속삭거리다:동:1
  -속삭이다:동:30
  +속삭거리:동:1
  +속삭이:동:30
   속삭임:명:2
   속살:명:5
  -속살대다:동:1
  -속상하다:형:20
  -속상해하다:동:3
  +속살대:동:1
  +속상하:형:20
  +속상해하:동:3
   속설:명:4
   속성:명:1
   속성:명:2
  @@ -28053,15 +28053,15 @@
   속속:부:17
   속속들이:부:12
   속수무책:명:13
  -속스럽다:형:1
  +속스럽:형:1
   속식:명:1
   속앓이:명:1
   속어:명:1
   속언:명:2
  -속없다:형:1
  +속없:형:1
   속옷:명:36
   속음:명:1
  -속이다:동:48
  +속이:동:48
   속인:명:4
   속임낚시:명:1
   속임수:명:9
  @@ -28069,42 +28069,42 @@
   속저고리:명:1
   속적삼:명:1
   속전속결:명:2
  -속절없다:형:3
  +속절없:형:3
   속절없이:부:2
   속죄:명:3
   속죄양:명:1
  -속죄하다:동:2
  +속죄하:동:2
   속주머니:명:2
   속출:명:3
  -속출하다:동:14
  +속출하:동:14
   속치마:명:3
   속칭:명:10
   속편:명:1
   속편:명:7
  -속하다:동:159
  -속해지다:동:1
  +속하:동:159
  +속해지:동:1
   속행:명:1
   속현:명:7
   속회:명:2
   속흙:명:5
   속히:부:6
  -솎다:동:7
  +솎:동:7
   솎음배추:명:1
  -손:명:1,025
  +손:명:1025
   손:명:2
   손:명:3
   손:명:3
   손:의:1
   손가락:명:181
   손가락질:명:10
  -손가락질받다:동:2
  -손가락질하다:동:5
  +손가락질받:동:2
  +손가락질하:동:5
   손가방:명:5
   손길:명:31
   손깍지:명:2
  -손꼽다:동:14
  -손꼽아지다:동:1
  -손꼽히다:동:16
  +손꼽:동:14
  +손꼽아지:동:1
  +손꼽히:동:16
   손끝:명:24
   손나발:명:2
   손녀:명:12
  @@ -28113,10 +28113,10 @@
   손님:명:250
   손님맞이:명:1
   손님층:명:1
  -손대다:동:11
  +손대:동:11
   손도:명:2
   손도끼:명:1
  -손들다:동:7
  +손들:동:7
   손등:명:25
   손때:명:11
   손마디:명:2
  @@ -28126,29 +28126,29 @@
   손바닥:명:76
   손발:명:37
   손배소:명:1
  -손보다:동:8
  +손보:동:8
   손보사:명:2
   손비:명:1
   손빨래:명:1
   손뼉:명:18
   손사래:명:1
   손상:명:27
  -손상되다:동:12
  -손상받다:동:1
  -손상시키다:동:2
  -손상하다:동:4
  +손상되:동:12
  +손상받:동:1
  +손상시키:동:2
  +손상하:동:4
   손색:명:10
  -손색없다:형:2
  +손색없:형:2
   손색없이:부:1
  -손세탁하다:동:4
  +손세탁하:동:4
   손수:부:18
   손수건:명:20
   손수레:명:6
  -손쉽다:형:41
  +손쉽:형:41
   손실:명:36
   손실량:명:1
   손실액:명:1
  -손쓰다:동:2
  +손쓰:동:2
   손아귀:명:21
   손아래:명:2
   손안:명:6
  @@ -28156,7 +28156,7 @@
   손윗사람:명:2
   손익:명:2
   손자:명:65
  -손잡다:동:16
  +손잡:동:16
   손잡이:명:23
   손잡이형:명:1
   손재:명:1
  @@ -28166,16 +28166,16 @@
   손주:명:1
   손지갑:명:4
   손질:명:40
  -손질되다:동:3
  -손질받다:동:1
  +손질되:동:3
  +손질받:동:1
   손질법:명:1
  -손질하다:동:42
  +손질하:동:42
   손짓:명:17
  -손짓하다:동:4
  +손짓하:동:4
   손찌검:명:3
   손톱:명:40
   손해:명:69
  -손해나다:동:1
  +손해나:동:1
   손해액:명:2
   솔:명:1
   솔:명:1
  @@ -28186,9 +28186,9 @@
   솔개:명:6
   솔개구이:명:1
   솔기:명:5
  -솔깃하다:형:2
  -솔깃해지다:동:3
  -솔깃해하다:동:2
  +솔깃하:형:2
  +솔깃해지:동:3
  +솔깃해하:동:2
   솔나무:명:1
   솔로:명:1
   솔바람:명:4
  @@ -28197,14 +28197,14 @@
   솔새:명:1
   솔새:명:1
   솔선수범:명:4
  -솔선수범하다:동:1
  -솔선하다:동:5
  +솔선수범하:동:1
  +솔선하:동:5
   솔솔:부:7
   솔송나무:명:1
   솔숲:명:5
   솔잎:명:7
  -솔직하다:형:84
  -솔직해지다:동:11
  +솔직하:형:84
  +솔직해지:동:11
   솔직히:부:88
   솔찬히:부:1
   솜:명:28
  @@ -28218,26 +28218,26 @@
   솜이불:명:1
   솜저고리:명:1
   솜털:명:9
  -솟구치다:동:38
  -솟다:동:63
  -솟아나다:동:15
  -솟아오르다:동:22
  +솟구치:동:38
  +솟:동:63
  +솟아나:동:15
  +솟아오르:동:22
   송:명:1
   송:명:3
   송고:명:1
   송골송골:부:1
   송곳:명:7
   송곳니:명:2
  -송구스럽다:형:6
  -송구하다:형:2
  +송구스럽:형:6
  +송구하:형:2
   송글송글:부:1
   송금:명:6
  -송금되다:동:1
  -송금받다:동:1
  -송금하다:동:7
  +송금되:동:1
  +송금받:동:1
  +송금하:동:7
   송기:명:1
   송달:명:1
  -송달하다:동:2
  +송달하:동:2
   송덕비:명:2
   송두리:명:1
   송두리째:부:9
  @@ -28255,10 +28255,10 @@
   송신:명:1
   송신기:명:1
   송신소:명:3
  -송신하다:동:2
  +송신하:동:2
   송아지:명:20
   송알송알:부:1
  -송연하다:형:1
  +송연하:형:1
   송유:명:1
   송유관:명:2
   송이:명:29
  @@ -28271,8 +28271,8 @@
   송차:명:1
   송충이:명:3
   송치:명:1
  -송치받다:동:1
  -송치하다:동:1
  +송치받:동:1
  +송치하:동:1
   송판:명:3
   송편:명:18
   송풍:명:1
  @@ -28282,23 +28282,23 @@
   송화:명:1
   송화색별문능:명:1
   송환:명:10
  -송환되다:동:1
  -송환하다:동:3
  +송환되:동:1
  +송환하:동:3
   솥:명:17
   솥다리:명:2
   솥단지:명:1
   솥뚜껑:명:7
   쇄도:명:1
  -쇄도하다:동:2
  +쇄도하:동:2
   쇄신:명:12
  -쇄신하다:동:2
  +쇄신하:동:2
   쇠:명:29
   쇠고기:명:100
   쇠고기볶음:명:1
   쇠고랑:명:4
   쇠굽파개:명:1
   쇠귀:명:1
  -쇠다:동:6
  +쇠:동:6
   쇠똥:명:6
   쇠뚜껑:명:1
   쇠락:명:1
  @@ -28315,10 +28315,10 @@
   쇠솔새:명:2
   쇠스랑:명:5
   쇠약:명:2
  -쇠약하다:형:9
  -쇠약해지다:동:3
  +쇠약하:형:9
  +쇠약해지:동:3
   쇠잔등:명:2
  -쇠잔하다:동:2
  +쇠잔하:동:2
   쇠전거리:명:1
   쇠죽:명:1
   쇠줄:명:2
  @@ -28327,7 +28327,7 @@
   쇠톱:명:2
   쇠퇴:명:16
   쇠퇴기:명:1
  -쇠퇴하다:동:28
  +쇠퇴하:동:28
   쇠파리:명:3
   쇤네:대:11
   쇳대:명:3
  @@ -28341,14 +28341,14 @@
   쇼윈도:명:1
   쇼크:명:9
   쇼킹:명:1
  -쇼킹하다:형:4
  +쇼킹하:형:4
   쇼트:명:2
   쇼핑:명:17
   쇼핑광:명:1
   쇼핑백:명:4
   쇼핑센터:명:1
  -쇼핑하다:동:1
  -쇼하다:동:1
  +쇼핑하:동:1
  +쇼하:동:1
   숄:명:1
   숄더:명:2
   숄더백:명:2
  @@ -28369,28 +28369,28 @@
   수:명:5
   수:명:7
   수:명:7
  -수:의:10,915
  +수:의:10915
   수:의:2
   수:의:7
   수가:명:4
   수감:명:7
  -수감되다:동:2
  +수감되:동:2
   수감자:명:2
  -수감하다:동:2
  +수감하:동:2
   수갑:명:16
   수강:명:8
   수강료:명:2
   수강생:명:5
   수강자:명:3
   수강증:명:1
  -수강하다:동:1
  +수강하:동:1
   수개월:명:5
   수거:명:31
  -수거되다:동:4
  +수거되:동:4
   수거량:명:2
   수거비:명:1
   수거장:명:1
  -수거하다:동:15
  +수거하:동:15
   수거함:명:1
   수건:명:42
   수결:명:4
  @@ -28399,7 +28399,7 @@
   수고:명:21
   수고:명:7
   수고로이:부:1
  -수고하다:동:24
  +수고하:동:24
   수공:명:12
   수공:명:2
   수공업:명:28
  @@ -28410,31 +28410,31 @@
   수광:명:1
   수괴:명:1
   수교:명:12
  -수교하다:동:1
  +수교하:동:1
   수구:명:1
   수구:명:3
   수구:명:6
   수구적:관:2
   수군:명:7
  -수군거리다:동:6
  +수군거리:동:6
   수군수군:부:2
   수권:명:1
   수권:명:2
  -수그러들다:동:3
  -수그러지다:동:5
  -수그리다:동:2
  +수그러들:동:3
  +수그러지:동:5
  +수그리:동:2
   수금:명:2
  -수금하다:동:2
  +수금하:동:2
   수급:명:1
   수급:명:19
  -수급되다:동:1
  +수급되:동:1
   수긍:명:7
  -수긍되다:동:1
  -수긍하다:동:11
  +수긍되:동:1
  +수긍하:동:11
   수기:명:3
   수기집:명:1
   수기치인:명:1
  -수꿀하다:형:1
  +수꿀하:형:1
   수나무:명:2
   수난:명:19
   수난사:명:1
  @@ -28444,21 +28444,21 @@
   수녀:명:25
   수년:명:27
   수놈:명:3
  -수놓다:동:7
  -수놓아지다:동:1
  -수놓이다:동:2
  +수놓:동:7
  +수놓아지:동:1
  +수놓이:동:2
   수뇌:명:6
   수뇌부:명:15
   수능:명:4
   수능식:명:3
   수다:명:20
  -수다스럽다:형:1
  +수다스럽:형:1
   수다쟁이:명:1
   수단:명:181
  -수단화하다:동:1
  +수단화하:동:1
   수달피:명:1
   수당:명:17
  -수더분하다:형:2
  +수더분하:형:2
   수도:명:1
   수도:명:136
   수도:명:4
  @@ -28484,19 +28484,19 @@
   수동적:관:7
   수동적:명:33
   수동화:명:1
  -수동화되다:동:3
  +수동화되:동:3
   수두룩:부:1
  -수두룩하다:형:9
  +수두룩하:형:9
   수떨판이:명:1
   수라장:명:2
   수락:명:6
  -수락하다:동:10
  +수락하:동:10
   수량:명:9
  -수런거리다:동:3
  +수런거리:동:3
   수렁:명:3
   수레:명:20
   수레바퀴:명:4
  -수려하다:형:7
  +수려하:형:7
   수력:명:7
   수련:명:1
   수련:명:13
  @@ -28504,36 +28504,36 @@
   수련의:명:2
   수련장:명:1
   수련장:명:6
  -수련하다:동:3
  +수련하:동:3
   수련회:명:6
   수렴:명:14
  -수렴되다:동:8
  +수렴되:동:8
   수렴주의:명:1
  -수렴하다:동:17
  +수렴하:동:17
   수렵:명:16
   수렵군:명:2
   수렵도:명:9
   수렵무:명:7
   수렵민:명:1
   수렵자:명:1
  -수렵하다:동:1
  +수렵하:동:1
   수령:명:1
   수령:명:2
   수령:명:5
   수령:명:6
   수령액:명:2
   수령인:명:1
  -수령하다:동:2
  +수령하:동:2
   수로:명:11
   수록:명:3
  -수록되다:동:18
  -수록하다:동:12
  +수록되:동:18
  +수록하:동:12
   수뢰:명:4
   수뢰설:명:1
  -수뢰하다:동:1
  +수뢰하:동:1
   수료:명:3
   수료생:명:1
  -수료하다:동:2
  +수료하:동:2
   수류탄:명:2
   수륙:명:3
   수리:명:13
  @@ -28541,29 +28541,29 @@
   수리:명:2
   수리:명:2
   수리공:명:2
  -수리되다:동:1
  +수리되:동:1
   수리비:명:4
   수리수리:부:2
   수리적:관:2
   수리점:명:2
   수리취:명:2
  -수리하다:동:15
  -수리하다:동:4
  +수리하:동:15
  +수리하:동:4
   수리학:명:1
   수리학자:명:1
   수림:명:2
   수립:명:35
  -수립되다:동:14
  -수립하다:동:57
  +수립되:동:14
  +수립하:동:57
   수마:명:1
   수만:관:20
   수만:수:2
  -수많다:형:167
  +수많:형:167
   수말:명:1
   수매:명:12
   수매가:명:2
   수매량:명:4
  -수매하다:동:1
  +수매하:동:1
   수면:명:28
   수면:명:48
   수면권:명:1
  @@ -28572,7 +28572,7 @@
   수모:명:7
   수목:명:11
   수목원:명:1
  -수몰되다:동:1
  +수몰되:동:1
   수묵:명:2
   수묵화:명:5
   수문:명:5
  @@ -28583,14 +28583,14 @@
   수박:명:44
   수반:명:1
   수반:명:3
  -수반되다:동:7
  -수반하다:동:13
  +수반되:동:7
  +수반하:동:13
   수발:명:1
   수발:명:3
   수배:명:29
  -수배되다:동:2
  +수배되:동:2
   수배자:명:6
  -수배하다:동:8
  +수배하:동:8
   수백:관:45
   수백:수:2
   수백만:관:7
  @@ -28598,14 +28598,14 @@
   수백억:관:2
   수백억:수:1
   수범:명:3
  -수범하다:동:1
  +수범하:동:1
   수법:명:25
   수병좌:명:1
   수복:명:2
  -수복되다:동:1
  +수복되:동:1
   수북수북:부:1
   수북이:부:8
  -수북하다:형:6
  +수북하:형:6
   수분:명:4
   수분:명:43
   수분량:명:2
  @@ -28616,7 +28616,7 @@
   수비벽:명:2
   수비수:명:12
   수비진:명:3
  -수비하다:동:1
  +수비하:동:1
   수사:명:11
   수사:명:344
   수사:명:6
  @@ -28632,7 +28632,7 @@
   수사본부:명:3
   수사부:명:1
   수사설:명:1
  -수사하다:동:15
  +수사하:동:15
   수사학:명:2
   수산:명:14
   수산고:명:1
  @@ -28651,13 +28651,13 @@
   수상실:명:2
   수상자:명:5
   수상작:명:8
  -수상쩍다:형:5
  -수상하다:동:20
  -수상하다:형:17
  +수상쩍:형:5
  +수상하:동:20
  +수상하:형:17
   수상히:부:2
   수색:명:19
   수색대:명:2
  -수색하다:동:3
  +수색하:동:3
   수서과:명:5
   수서과장:명:2
   수석:명:114
  @@ -28666,8 +28666,8 @@
   수석실:명:22
   수선:명:3
   수선:명:3
  -수선거리다:동:1
  -수선하다:동:1
  +수선거리:동:1
  +수선하:동:1
   수성:명:1
   수성:명:1
   수성:명:2
  @@ -28681,7 +28681,7 @@
   수소:명:1
   수소:명:10
   수소문:명:2
  -수소문하다:동:5
  +수소문하:동:5
   수소염화플루오르화탄소:명:1
   수소플루오르화탄소:명:1
   수속:명:14
  @@ -28692,7 +28692,7 @@
   수송부:명:1
   수송선:명:1
   수송차:명:6
  -수송하다:동:5
  +수송하:동:5
   수송함:명:1
   수수:명:31
   수수:명:37
  @@ -28701,9 +28701,9 @@
   수수료:명:10
   수수료율:명:3
   수수밥:명:1
  -수수방관하다:동:3
  -수수하다:형:1
  -수수하다:형:4
  +수수방관하:동:3
  +수수하:형:1
  +수수하:형:4
   수순:명:6
   수술:명:1
   수술:명:131
  @@ -28712,10 +28712,10 @@
   수술률:명:1
   수술법:명:4
   수술비:명:4
  -수술시키다:동:1
  +수술시키:동:1
   수술실:명:2
   수술진:명:1
  -수술하다:동:11
  +수술하:동:11
   수숫대:명:1
   수습:명:10
   수습:명:11
  @@ -28723,23 +28723,23 @@
   수습사원:명:1
   수습제:명:1
   수습책:명:2
  -수습하다:동:20
  +수습하:동:20
   수시:명:4
   수시력:명:1
   수시로:부:38
   수식:명:2
   수식:명:4
   수식어:명:2
  -수식하다:동:2
  +수식하:동:2
   수신:명:6
   수신:명:7
   수신고:명:3
   수신기:명:1
  -수신되다:동:2
  +수신되:동:2
   수신반:명:1
   수신인:명:5
   수신자:명:1
  -수신하다:동:3
  +수신하:동:3
   수실:명:2
   수심:명:14
   수심:명:2
  @@ -28756,7 +28756,7 @@
   수양딸:명:2
   수양버들:명:2
   수양법:명:1
  -수양하다:동:3
  +수양하:동:3
   수어:명:2
   수억:관:10
   수억만:관:2
  @@ -28764,13 +28764,13 @@
   수업:명:245
   수업:명:4
   수업료:명:4
  -수업하다:동:3
  -수없다:형:2
  +수업하:동:3
  +수없:형:2
   수없이:부:56
   수여:명:4
  -수여되다:동:1
  +수여되:동:1
   수여자:명:1
  -수여하다:동:6
  +수여하:동:6
   수역:명:6
   수염:명:47
   수염발:명:1
  @@ -28778,7 +28778,7 @@
   수영:명:72
   수영복:명:3
   수영장:명:12
  -수영하다:동:6
  +수영하:동:6
   수예품:명:1
   수오지심:명:1
   수온:명:4
  @@ -28793,25 +28793,25 @@
   수용:명:1
   수용:명:18
   수용:명:45
  -수용당하다:동:1
  +수용당하:동:1
   수용도:명:1
  -수용되다:동:1
  -수용되다:동:19
  -수용되다:동:4
  +수용되:동:1
  +수용되:동:19
  +수용되:동:4
   수용성:명:1
   수용소:명:21
   수용소식:명:2
   수용자:명:49
   수용적:명:1
  -수용하다:동:1
  -수용하다:동:73
  -수용하다:동:8
  +수용하:동:1
  +수용하:동:73
  +수용하:동:8
   수운:명:3
   수원잔대:명:4
   수원지:명:1
   수원지:명:1
  -수월하다:형:15
  -수월해지다:동:3
  +수월하:형:15
  +수월해지:동:3
   수월히:부:1
   수위:명:13
   수위:명:13
  @@ -28842,7 +28842,7 @@
   수입:명:195
   수입:명:85
   수입국:명:4
  -수입되다:동:20
  +수입되:동:20
   수입량:명:6
   수입물:명:1
   수입산:명:2
  @@ -28851,20 +28851,20 @@
   수입원:명:1
   수입자:명:1
   수입품:명:20
  -수입하다:동:51
  +수입하:동:51
   수자상:명:1
   수자원:명:5
   수자폰:명:1
   수작:명:14
   수작:명:2
   수작업:명:1
  -수작하다:동:1
  +수작하:동:1
   수장:명:1
   수장:명:27
   수장국:명:1
  -수장시키다:동:2
  -수장하다:동:1
  -수장하다:동:1
  +수장시키:동:2
  +수장하:동:1
  +수장하:동:1
   수재:명:1
   수재:명:5
   수재민:명:3
  @@ -28875,21 +28875,21 @@
   수적:명:3
   수전증:명:1
   수절:명:8
  -수절하다:동:1
  +수절하:동:1
   수정:명:1
   수정:명:28
   수정:명:3
   수정:명:3
  -수정되다:동:2
  -수정되다:동:6
  +수정되:동:2
  +수정되:동:6
   수정란:명:10
   수정안:명:2
   수정주의:명:1
   수정주의자:명:1
   수정체:명:7
  -수정하다:동:1
  -수정하다:동:1
  -수정하다:동:16
  +수정하:동:1
  +수정하:동:1
  +수정하:동:16
   수제비:명:21
   수제자:명:4
   수조:관:2
  @@ -28901,7 +28901,7 @@
   수조권적:명:3
   수조론:명:2
   수조지:명:5
  -수조하다:동:2
  +수조하:동:2
   수족:명:11
   수족관:명:1
   수족궐냉:명:2
  @@ -28910,12 +28910,12 @@
   수주:명:15
   수주액:명:1
   수주전:명:2
  -수주하다:동:5
  +수주하:동:5
   수준:명:404
   수준급:명:5
   수준작:명:1
  -수줍다:형:13
  -수줍어하다:동:5
  +수줍:형:13
  +수줍어하:동:5
   수줍음:명:3
   수중:명:10
   수중:명:5
  @@ -28926,7 +28926,7 @@
   수지:명:1
   수지:명:1
   수지:명:32
  -수지맞다:동:1
  +수지맞:동:1
   수지침:명:5
   수직:명:27
   수직선:명:6
  @@ -28939,20 +28939,20 @@
   수집:명:35
   수집가:명:2
   수집광:명:1
  -수집되다:동:2
  -수집되다:동:5
  +수집되:동:2
  +수집되:동:5
   수집량:명:1
   수집상:명:1
   수집소:명:1
   수집인:명:1
  -수집하다:동:14
  -수집하다:동:47
  +수집하:동:14
  +수집하:동:47
   수차:명:4
   수차례:명:15
   수채:명:3
   수채화:명:11
  -수척하다:형:4
  -수척해지다:동:2
  +수척하:형:4
  +수척해지:동:2
   수천:관:48
   수천:수:3
   수천만:관:5
  @@ -28965,19 +28965,19 @@
   수초:명:6
   수축:명:19
   수축감:명:1
  -수축되다:동:4
  -수축시키다:동:7
  -수축하다:동:2
  +수축되:동:4
  +수축시키:동:7
  +수축하:동:2
   수출:명:198
   수출과:명:1
   수출국:명:4
  -수출되다:동:3
  +수출되:동:3
   수출량:명:3
   수출액:명:4
   수출업체:명:1
   수출입:명:4
   수출품:명:1
  -수출하다:동:27
  +수출하:동:27
   수취:명:2
   수취:명:20
   수취:명:5
  @@ -28985,26 +28985,26 @@
   수취인:명:8
   수취자:명:1
   수취제:명:1
  -수취하다:동:3
  +수취하:동:3
   수치:명:32
   수치:명:4
  -수치스럽다:형:8
  +수치스럽:형:8
   수치심:명:4
   수칙:명:6
   수컷:명:29
   수탁고:명:1
   수탈:명:26
  -수탈당하다:동:3
  +수탈당하:동:3
   수탈론:명:1
   수탈자:명:1
   수탈적:명:1
  -수탈하다:동:2
  +수탈하:동:2
   수탉:명:6
   수태:명:7
   수태일:명:1
  -수태하다:동:8
  +수태하:동:8
   수통:명:9
  -수틀리다:동:1
  +수틀리:동:1
   수평:명:26
   수평면:명:3
   수평선:명:22
  @@ -29030,35 +29030,35 @@
   수학자:명:6
   수학적:관:18
   수학적:명:8
  -수학하다:동:1
  +수학하:동:1
   수해:명:11
   수행:명:12
   수행:명:15
   수행:명:48
   수행과장:명:3
  -수행되다:동:13
  +수행되:동:13
   수행법:명:1
  -수행시키다:동:3
  +수행시키:동:3
   수행실장:명:11
   수행실장실:명:1
   수행원:명:2
   수행자:명:4
  -수행하다:동:3
  -수행하다:동:5
  -수행하다:동:91
  +수행하:동:3
  +수행하:동:5
  +수행하:동:91
   수험:명:5
   수험생:명:39
   수험표:명:2
   수혈:명:9
  -수혈받다:동:1
  +수혈받:동:1
   수혜:명:6
   수혜자:명:6
   수호:명:10
  -수호되다:동:1
  +수호되:동:1
   수호신:명:6
   수호자:명:2
   수호초:명:1
  -수호하다:동:7
  +수호하:동:7
   수화:명:4
   수화기:명:59
   수확:명:17
  @@ -29068,7 +29068,7 @@
   수확물:명:1
   수확분:명:1
   수확제:명:1
  -수확하다:동:10
  +수확하:동:10
   수회:명:1
   수효:명:5
   수훈:명:1
  @@ -29076,17 +29076,17 @@
   숙견:명:1
   숙고:명:2
   숙고사:명:3
  -숙고하다:동:1
  +숙고하:동:1
   숙과:명:2
   숙녀:명:16
   숙녀복:명:6
   숙단:명:1
  -숙달되다:동:2
  -숙독하다:동:1
  +숙달되:동:2
  +숙독하:동:1
   숙련가:명:1
   숙련공:명:5
   숙련도:명:1
  -숙련되다:동:3
  +숙련되:동:3
   숙련자:명:1
   숙맥:명:3
   숙면:명:2
  @@ -29105,37 +29105,37 @@
   숙부:명:26
   숙부님:명:9
   숙성:명:3
  -숙성시키다:동:1
  +숙성시키:동:1
   숙소:명:27
   숙수:명:1
   숙수:명:1
   숙식:명:5
   숙식비:명:2
   숙어:명:3
  -숙여지다:동:3
  -숙연하다:형:3
  -숙연해지다:동:1
  +숙여지:동:3
  +숙연하:형:3
  +숙연해지:동:1
   숙원:명:5
   숙위:명:1
   숙의:명:5
  -숙의하다:동:1
  -숙이다:동:87
  +숙의하:동:1
  +숙이:동:87
   숙적:명:1
   숙정:명:3
  -숙정하다:동:1
  +숙정하:동:1
   숙제:명:139
   숙제물:명:4
   숙주:명:1
   숙주:명:4
  -숙지하다:동:1
  +숙지하:동:1
   숙직:명:20
   숙직실:명:10
   숙직자:명:1
  -숙직하다:동:3
  +숙직하:동:3
   숙질:명:1
   숙청:명:5
  -숙청당하다:동:1
  -숙청하다:동:3
  +숙청당하:동:1
  +숙청하:동:3
   숙초:명:1
   숙취:명:1
   숙항라:명:1
  @@ -29152,7 +29152,7 @@
   순검:명:20
   순검청:명:7
   순결:명:23
  -순결하다:형:17
  +순결하:형:17
   순경:명:66
   순교:명:3
   순교자:명:10
  @@ -29168,10 +29168,10 @@
   순림:명:1
   순무대장:명:2
   순박:명:1
  -순박하다:형:24
  +순박하:형:24
   순발력:명:10
   순방:명:8
  -순방하다:동:5
  +순방하:동:5
   순배:명:2
   순백:명:5
   순백색:명:3
  @@ -29181,7 +29181,7 @@
   순사:명:6
   순사보:명:1
   순산:명:7
  -순산하다:동:17
  +순산하:동:17
   순서:명:113
   순서도:명:1
   순수:명:53
  @@ -29191,26 +29191,26 @@
   순수입:명:1
   순수주의:명:2
   순수주의적:명:1
  -순수하다:형:97
  -순수해지다:동:2
  -순순하다:형:1
  +순수하:형:97
  +순수해지:동:2
  +순순하:형:1
   순순히:부:15
   순시:명:6
   순시선:명:1
   순식간:명:42
   순애보적:명:1
  -순연하다:동:1
  +순연하:동:1
   순위:명:31
   순위권:명:1
   순위자:명:1
   순위표:명:1
   순은:명:1
   순응:명:4
  -순응시키다:동:1
  +순응시키:동:1
   순응적:관:1
   순응적:명:2
   순응주의:명:3
  -순응하다:동:21
  +순응하:동:21
   순이익:명:4
   순이익률:명:2
   순익:명:5
  @@ -29218,56 +29218,56 @@
   순일주의:명:1
   순장:명:7
   순장제:명:2
  -순전하다:형:3
  +순전하:형:3
   순전히:부:26
   순정:명:6
   순정적:관:2
  -순정하다:형:1
  +순정하:형:1
   순조로이:부:1
  -순조롭다:형:18
  +순조롭:형:18
   순종:명:1
   순종:명:9
   순종적:명:9
  -순종하다:동:11
  +순종하:동:11
   순지르기:명:2
   순진성:명:2
  -순진하다:형:26
  +순진하:형:26
   순차적:명:2
   순찰:명:16
   순찰차:명:9
  -순찰하다:동:5
  +순찰하:동:5
   순치:명:1
  -순치되다:동:1
  +순치되:동:1
   순탄:명:1
  -순탄하다:형:7
  -순하다:형:16
  -순하디순하다:형:1
  +순탄하:형:7
  +순하:형:16
  +순하디순하:형:1
   순항:명:2
  -순항하다:동:1
  +순항하:동:1
   순행:명:1
   순화:명:14
   순화:명:3
  -순화되다:동:1
  -순화되다:동:2
  +순화되:동:1
  +순화되:동:2
   순화미:명:1
  -순화시키다:동:2
  +순화시키:동:2
   순화안:명:6
  -순화하다:동:10
  -순화하다:동:3
  +순화하:동:10
  +순화하:동:3
   순환:명:59
   순환계:명:1
   순환기:명:1
   순환적:명:1
  -순환하다:동:14
  +순환하:동:14
   순회:명:1
   순회공연:명:5
   순회공연단:명:2
   순회단:명:1
  -순회하다:동:5
  +순회하:동:5
   숟가락:명:22
   숟가락질:명:3
   숟갈:명:3
  -숟갈질하다:동:1
  +숟갈질하:동:1
   술:명:524
   술:의:260
   술값:명:9
  @@ -29280,9 +29280,9 @@
   술도가:명:1
   술독:명:2
   술래잡기:명:1
  -술래잡기하다:동:1
  -술렁거리다:동:8
  -술렁이다:동:2
  +술래잡기하:동:1
  +술렁거리:동:8
  +술렁이:동:2
   술버릇:명:1
   술병:명:22
   술사:명:1
  @@ -29306,54 +29306,54 @@
   술책:명:2
   술청:명:3
   술타령:명:1
  -술타령하다:동:1
  +술타령하:동:1
   술판:명:6
   술패랭이꽃:명:1
   술회:명:2
  -술회하다:동:3
  +술회하:동:3
   숨:명:201
  -숨겨지다:동:19
  +숨겨지:동:19
   숨결:명:19
   숨골:명:5
   숨구멍:명:1
  -숨기다:동:64
  +숨기:동:64
   숨김없이:부:4
  -숨넘어가다:동:2
  -숨다:동:109
  +숨넘어가:동:2
  +숨:동:109
   숨두부:명:5
   숨바꼭질:명:5
   숨소리:명:18
   숨쉬기:명:4
  -숨어들다:동:8
  -숨죽이다:동:5
  -숨지다:동:69
  -숨차다:형:1
  +숨어들:동:8
  +숨죽이:동:5
  +숨지:동:69
  +숨차:형:1
   숨통:명:10
   숫감:명:2
   숫기:명:1
   숫독수리:명:1
  -숫되다:형:1
  +숫되:형:1
   숫보기:명:1
   숫자:명:122
   숫자판:명:1
  -숫접다:형:1
  +숫접:형:1
   숫제:부:4
   숫처녀:명:5
   숫총각:명:3
   숭고:명:2
   숭고감:명:1
  -숭고하다:형:12
  -숭굴숭굴하다:형:1
  +숭고하:형:12
  +숭굴숭굴하:형:1
   숭늉:명:17
   숭배:명:11
  -숭배되다:동:1
  +숭배되:동:1
   숭배적:명:1
  -숭배하다:동:12
  -숭상하다:동:14
  +숭배하:동:12
  +숭상하:동:14
   숭숭:부:6
   숭앙:명:2
  -숭앙되다:동:1
  -숭앙받다:동:3
  +숭앙되:동:1
  +숭앙받:동:3
   숭어:명:4
   숭어회:명:1
   숭얼숭얼:부:1
  @@ -29363,7 +29363,7 @@
   숯덩이:명:6
   숯불:명:5
   숱:명:4
  -숱하다:형:33
  +숱하:형:33
   숲:명:216
   숲가:명:2
   숲길:명:2
  @@ -29373,18 +29373,18 @@
   쉬:명:1
   쉬:명:1
   쉬:부:6
  -쉬다:동:1
  -쉬다:동:223
  -쉬다:동:9
  -쉬다:동:90
  +쉬:동:1
  +쉬:동:223
  +쉬:동:9
  +쉬:동:90
   쉬쉬:부:5
  -쉬쉬하다:동:3
  -쉬어지다:동:1
  +쉬쉬하:동:3
  +쉬어지:동:1
   쉬엄쉬엄:부:1
  -쉬워지다:동:6
  +쉬워지:동:6
   쉬이:부:2
  -쉬이다:동:1
  -쉬하다:동:1
  +쉬이:동:1
  +쉬하:동:1
   쉭쉭:부:1
   쉰:관:8
   쉰:수:3
  @@ -29400,7 +29400,7 @@
   쉰일곱:수:1
   쉼터:명:6
   쉼표:명:3
  -쉽다:형:790
  +쉽:형:790
   쉽사리:부:20
   슈크림:명:1
   슈터:명:2
  @@ -29417,7 +29417,7 @@
   슈퍼우먼:명:3
   슈퍼컴퓨터:명:9
   슛:명:31
  -슛하다:동:6
  +슛하:동:6
   스낵:명:1
   스냅:명:8
   스노:명:1
  @@ -29425,7 +29425,7 @@
   스니프터:명:5
   스님:명:72
   스란치마:명:1
  -스러지다:동:8
  +스러지:동:8
   스로인:명:1
   스르르:부:4
   스르륵:부:1
  @@ -29434,13 +29434,13 @@
   스릴:명:5
   스릴러:명:3
   스마일:명:1
  -스마트하다:형:2
  +스마트하:형:2
   스매시:명:1
   스매싱:명:1
  -스멀거리다:동:2
  +스멀거리:동:2
   스멀스멀:부:5
  -스멀스멀거리다:동:1
  -스며들다:동:43
  +스멀스멀거리:동:1
  +스며들:동:43
   스모그:명:9
   스무:관:48
   스무남은:관:1
  @@ -29468,10 +29468,10 @@
   스물하나:수:2
   스물한:관:10
   스물한두:관:2
  -스미다:동:25
  -스산하다:형:9
  -스스럼없다:형:2
  -스스럼없어지다:동:1
  +스미:동:25
  +스산하:형:9
  +스스럼없:형:2
  +스스럼없어지:동:1
   스스럼없이:부:9
   스스로:명:172
   스스로:부:351
  @@ -29484,12 +29484,12 @@
   스위퍼:명:1
   스윙:명:1
   스쵸티:명:1
  -스치다:동:82
  +스치:동:82
   스카시:명:1
   스카우트:명:18
  -스카우트되다:동:2
  +스카우트되:동:2
   스카우트비:명:1
  -스카우트하다:동:4
  +스카우트하:동:4
   스카이라운지:명:1
   스카치테이프:명:1
   스카프:명:5
  @@ -29505,7 +29505,7 @@
   스케줄:명:17
   스케치:명:7
   스케치북:명:2
  -스케치하다:동:4
  +스케치하:동:4
   스코어:명:1
   스콜:명:4
   스쿠버:명:2
  @@ -29513,7 +29513,7 @@
   스쿨버스:명:5
   스크랩:명:14
   스크랩북:명:1
  -스크랩하다:동:2
  +스크랩하:동:2
   스크럼:명:2
   스크럽:명:4
   스크루:명:3
  @@ -29564,8 +29564,8 @@
   스토브:명:1
   스토퍼:명:3
   스톱:명:3
  -스톱되다:동:1
  -스톱하다:동:1
  +스톱되:동:1
  +스톱하:동:1
   스튜던트:명:1
   스튜디오:명:55
   스튜어디스:명:8
  @@ -29599,7 +29599,7 @@
   스포츠용품:명:1
   스포츠적:명:1
   스포츠카:명:1
  -스포츠하다:동:1
  +스포츠하:동:1
   스포츠형:명:1
   스포트라이트:명:1
   스폰서:명:8
  @@ -29609,7 +29609,7 @@
   스프레드:명:13
   스프레드시트:명:4
   스프레이:명:7
  -스프레이하다:동:1
  +스프레이하:동:1
   스프링:명:2
   스피드:명:11
   스피릿:명:4
  @@ -29620,13 +29620,13 @@
   슬그머니:부:33
   슬금슬금:부:9
   슬기:명:20
  -슬기롭다:형:17
  -슬다:동:1
  -슬다:동:7
  +슬기롭:형:17
  +슬:동:1
  +슬:동:7
   슬라이드:명:5
  -슬라이딩하다:동:1
  +슬라이딩하:동:1
   슬라이스:명:5
  -슬라이스하다:동:1
  +슬라이스하:동:1
   슬래브:명:1
   슬래셔:명:2
   슬랭:명:1
  @@ -29644,43 +29644,43 @@
   슬슬:부:20
   슬쩍:부:36
   슬쩍슬쩍:부:1
  -슬쩍하다:동:1
  -슬퍼지다:동:2
  -슬퍼하다:동:21
  -슬프다:형:94
  +슬쩍하:동:1
  +슬퍼지:동:2
  +슬퍼하:동:21
  +슬프:형:94
   슬픔:명:75
   슬피:부:2
   슬하:명:5
  -슴벅거리다:동:1
  +슴벅거리:동:1
   습격:명:6
  -습격당하다:동:2
  -습격하다:동:5
  +습격당하:동:2
  +습격하:동:5
   습관:명:129
   습관성:명:8
   습관적:관:3
   습관적:명:8
  -습관화하다:동:1
  +습관화하:동:1
   습기:명:1
   습기:명:22
   습도:명:8
   습득:명:7
  -습득되다:동:1
  -습득시키다:동:1
  -습득하다:동:1
  -습득하다:동:11
  +습득되:동:1
  +습득시키:동:1
  +습득하:동:1
  +습득하:동:11
   습생:명:1
   습성:명:11
  -습성화되다:동:1
  +습성화되:동:1
   습속:명:8
   습식:명:1
   습윤성:명:1
   습자:명:1
   습작:명:1
   습작기:명:2
  -습작하다:동:2
  +습작하:동:2
   습지:명:3
   습지성:명:1
  -습하다:형:11
  +습하:형:11
   습합:명:1
   승:명:1
   승:명:1
  @@ -29691,32 +29691,32 @@
   승감:명:17
   승강기:명:3
   승강대:명:1
  -승강이하다:동:1
  +승강이하:동:1
   승강장:명:3
   승객:명:47
   승격:명:5
  -승격되다:동:4
  -승격시키다:동:2
  -승격하다:동:1
  +승격되:동:4
  +승격시키:동:2
  +승격하:동:1
   승계:명:22
   승계권:명:1
  -승계되다:동:2
  +승계되:동:2
   승계설:명:3
  -승계하다:동:9
  +승계하:동:9
   승과:명:2
   승교:명:6
   승교바탕:명:3
   승급:명:4
   승급분:명:3
   승낙:명:11
  -승낙하다:동:4
  +승낙하:동:4
   승냥이:명:2
   승려:명:42
   승려군:명:1
   승률:명:2
   승리:명:77
   승리자:명:7
  -승리하다:동:29
  +승리하:동:29
   승마:명:1
   승마:명:1
   승무:명:1
  @@ -29724,54 +29724,54 @@
   승무원:명:6
   승병:명:5
   승복:명:3
  -승복하다:동:2
  +승복하:동:2
   승부:명:48
   승부수:명:3
   승부욕:명:1
   승부차기:명:8
   승부처:명:2
  -승부하다:동:1
  +승부하:동:1
   승산:명:1
   승상:명:1
   승선:명:16
  -승선하다:동:30
  +승선하:동:30
   승소:명:24
  -승소하다:동:3
  +승소하:동:3
   승수:명:1
  -승승장구하다:동:3
  +승승장구하:동:3
   승압기:명:1
   승용차:명:76
   승원부:명:1
   승인:명:27
   승인:명:3
   승인서:명:1
  -승인하다:동:12
  +승인하:동:12
   승자:명:12
   승전가:명:1
   승전지:명:1
   승점:명:13
   승조원:명:23
   승진:명:56
  -승진되다:동:1
  -승진시키다:동:1
  -승진하다:동:11
  +승진되:동:1
  +승진시키:동:1
  +승진하:동:11
   승차:명:6
   승차감:명:1
   승차권:명:1
  -승차하다:동:6
  +승차하:동:6
   승천:명:2
  -승천하다:동:3
  +승천하:동:3
   승통:명:2
   승패:명:5
   승하:명:1
  -승하다:형:3
  +승하:형:3
   승하차:명:1
  -승하하다:동:2
  +승하하:동:2
   승합차:명:2
   승화:명:14
  -승화되다:동:6
  -승화시키다:동:5
  -승화하다:동:2
  +승화되:동:6
  +승화시키:동:5
  +승화하:동:2
   승희:명:1
   시:감:3
   시:명:1
  @@ -29802,8 +29802,8 @@
   시각적:관:14
   시각적:명:9
   시각차:명:4
  -시각화하다:동:6
  -시간:명:1,491
  +시각화하:동:6
  +시간:명:1491
   시간:의:385
   시간대:명:24
   시간론:명:2
  @@ -29815,7 +29815,7 @@
   시간주의적:명:1
   시간표:명:9
   시건방:명:1
  -시건방지다:형:3
  +시건방지:형:3
   시경:명:3
   시계:명:135
   시계:명:3
  @@ -29832,7 +29832,7 @@
   시공간적:명:1
   시공권:명:2
   시공사:명:1
  -시공하다:동:3
  +시공하:동:3
   시구:명:11
   시국:명:37
   시궁창:명:1
  @@ -29840,31 +29840,31 @@
   시극:명:2
   시극론:명:1
   시극적:관:1
  -시근벌떡거리다:동:1
  +시근벌떡거리:동:1
   시금석:명:3
   시금치:명:21
   시금치나물:명:1
   시급:명:10
  -시급하다:형:49
  -시급해지다:동:2
  +시급하:형:49
  +시급해지:동:2
   시급히:부:17
   시기:명:368
   시기:명:48
   시기:명:7
   시기:명:9
  -시기다:동:1
  +시기:동:1
   시기상조:명:11
   시기상조론:명:1
   시기심:명:3
   시기적:명:9
  -시기적절하다:형:1
  -시기하다:동:2
  -시꺼멓다:형:11
  -시끄러워지다:동:2
  -시끄럽다:형:39
  -시끌벅적하다:형:1
  -시끌벅적해지다:동:2
  -시끌시끌하다:형:1
  +시기적절하:형:1
  +시기하:동:2
  +시꺼멓:형:11
  +시끄러워지:동:2
  +시끄럽:형:39
  +시끌벅적하:형:1
  +시끌벅적해지:동:2
  +시끌시끌하:형:1
   시나리오:명:36
   시나몬:명:6
   시나브로:부:1
  @@ -29880,20 +29880,20 @@
   시누:명:1
   시누이:명:7
   시늉:명:17
  -시늉하다:동:1
  +시늉하:동:1
   시니어:명:1
   시다:명:3
  -시다:형:13
  +시:형:13
   시단:명:12
   시달:명:2
  -시달되다:동:1
  -시달리다:동:108
  +시달되:동:1
  +시달리:동:108
   시달림:명:6
  -시달림하다:동:1
  -시달하다:동:4
  -시답잖다:형:3
  +시달림하:동:1
  +시달하:동:4
  +시답잖:형:3
   시대:명:1
  -시대:명:1,396
  +시대:명:1396
   시대극:명:12
   시대론:명:4
   시대병:명:1
  @@ -29911,14 +29911,14 @@
   시도:명:16
   시도:명:42
   시도관:명:2
  -시도되다:동:15
  -시도하다:동:88
  +시도되:동:15
  +시도하:동:88
   시동:명:9
   시들:명:1
  -시들다:동:18
  -시들어지다:동:2
  -시들하다:형:2
  -시들해지다:동:7
  +시들:동:18
  +시들어지:동:2
  +시들하:형:2
  +시들해지:동:7
   시디:명:1
   시디:명:18
   시디:명:4
  @@ -29941,10 +29941,10 @@
   시루:명:2
   시루떡:명:10
   시류:명:3
  -시르죽다:동:1
  +시르죽:동:1
   시름:명:7
   시름시름:부:2
  -시리다:형:33
  +시리:형:33
   시리즈:명:148
   시리즈물:명:2
   시리즈식:명:1
  @@ -29952,8 +29952,8 @@
   시멘트:명:49
   시묘살이:명:2
   시무룩:부:2
  -시무룩하다:형:7
  -시무룩해지다:동:3
  +시무룩하:형:7
  +시무룩해지:동:3
   시무식:명:4
   시무책:명:1
   시문:명:3
  @@ -29966,10 +29966,10 @@
   시민운동:명:2
   시민적:관:6
   시발:명:7
  -시발되다:동:1
  +시발되:동:1
   시발역:명:2
   시발점:명:11
  -시발하다:동:1
  +시발하:동:1
   시방:명:1
   시방:명:2
   시방:부:8
  @@ -29977,7 +29977,7 @@
   시범적:명:4
   시범학교:명:1
   시보:명:3
  -시부렁대다:동:1
  +시부렁대:동:1
   시부모:명:16
   시부모님:명:11
   시비:명:1
  @@ -29985,21 +29985,21 @@
   시비:명:65
   시비법:명:1
   시비지심:명:1
  -시비하다:동:2
  +시비하:동:2
   시빗거리:명:3
  -시뻘겋다:형:7
  -시뻘게지다:동:1
  +시뻘겋:형:7
  +시뻘게지:동:1
   시사:명:1
   시사:명:1
   시사:명:12
   시사:명:5
  -시사되다:동:3
  -시사받다:동:1
  +시사되:동:3
  +시사받:동:1
   시사성:명:3
   시사실:명:1
   시사적:명:4
   시사점:명:1
  -시사하다:동:66
  +시사하:동:66
   시사회:명:2
   시사회장:명:1
   시상:명:1
  @@ -30007,15 +30007,15 @@
   시상:명:4
   시상식:명:11
   시상식장:명:1
  -시상하다:동:3
  +시상하:동:3
   시샘:명:3
  -시샘하다:동:3
  +시샘하:동:3
   시생대:명:1
   시선:명:218
   시설:명:336
   시설물:명:15
   시설비:명:2
  -시설하다:동:1
  +시설하:동:1
   시세:명:13
   시소:명:1
   시속:명:8
  @@ -30023,24 +30023,24 @@
   시숙:명:1
   시술:명:17
   시술가:명:1
  -시술되다:동:1
  +시술되:동:1
   시술법:명:1
   시술소:명:1
   시술적:관:1
  -시술하다:동:3
  +시술하:동:3
   시스루:명:1
   시스템:명:138
   시시:의:10
   시시각각:명:6
  -시시껄렁하다:형:1
  -시시닥거리다:동:1
  -시시덕거리다:동:4
  +시시껄렁하:형:1
  +시시닥거리:동:1
  +시시덕거리:동:4
   시시디:명:1
   시시비비:명:1
   시시콜콜:부:3
  -시시콜콜하다:형:4
  -시시하다:형:9
  -시식하다:동:2
  +시시콜콜하:형:4
  +시시하:형:9
  +시식하:동:2
   시식회:명:1
   시신:명:19
   시신경:명:2
  @@ -30073,14 +30073,14 @@
   시운:명:1
   시울:명:3
   시원:명:4
  -시원스럽다:형:12
  +시원스럽:형:12
   시원스레:부:4
  -시원시원하다:형:5
  +시원시원하:형:5
   시원적:관:2
  -시원찮다:형:4
  -시원하다:형:120
  -시원해지다:동:6
  -시원해하다:동:1
  +시원찮:형:4
  +시원하:형:120
  +시원해지:동:6
  +시원해하:동:1
   시원히:부:2
   시월:명:151
   시위:명:156
  @@ -30089,9 +30089,9 @@
   시위대:명:22
   시위운동:명:1
   시위자:명:1
  -시위하다:동:1
  +시위하:동:1
   시음:명:5
  -시음하다:동:1
  +시음하:동:1
   시의:명:6
   시의성:명:1
   시의회:명:5
  @@ -30099,15 +30099,15 @@
   시인:명:252
   시인:명:4
   시인적:관:1
  -시인하다:동:18
  +시인하:동:18
   시일:명:30
   시작:명:157
   시작:명:3
  -시작되다:동:371
  +시작되:동:371
   시작점:명:4
   시작종:명:4
  -시작하다:동:1,264
  -시작히다:동:2
  +시작하:동:1264
  +시작히:동:2
   시장:명:33
   시장:명:876
   시장기:명:3
  @@ -30115,7 +30115,7 @@
   시장실:명:1
   시장적:관:1
   시장통:명:2
  -시장하다:형:7
  +시장하:형:7
   시장화:명:1
   시적:관:1
   시적:관:16
  @@ -30131,9 +30131,9 @@
   시정:명:1
   시정:명:17
   시정:명:2
  -시정되다:동:4
  +시정되:동:4
   시정신:명:1
  -시정하다:동:19
  +시정하:동:19
   시제품:명:6
   시조:명:10
   시조:명:37
  @@ -30144,12 +30144,12 @@
   시종:명:1
   시종:부:12
   시종일관:명:10
  -시종하다:동:1
  +시종하:동:1
   시줏돈:명:1
   시중:명:58
   시중:명:6
   시중가:명:2
  -시중들다:동:1
  +시중들:동:1
   시즌:명:50
   시지:명:1
   시지:명:4
  @@ -30157,15 +30157,15 @@
   시지각적:관:1
   시집:명:42
   시집:명:52
  -시집가다:동:32
  -시집보내다:동:8
  +시집가:동:32
  +시집보내:동:8
   시집살이:명:6
  -시집살이시키다:동:2
  -시집살이하다:동:1
  -시집오다:동:11
  +시집살이시키:동:2
  +시집살이하:동:1
  +시집오:동:11
   시차:명:13
   시찰:명:7
  -시찰하다:동:2
  +시찰하:동:2
   시책:명:1
   시책:명:35
   시천주:명:9
  @@ -30177,7 +30177,7 @@
   시청률:명:33
   시청자:명:86
   시청층:명:2
  -시청하다:동:10
  +시청하:동:10
   시체:명:40
   시체실:명:2
   시쳇말:명:1
  @@ -30186,21 +30186,21 @@
   시초:명:9
   시추:명:2
   시추에이션:명:2
  -시치다:동:1
  +시치:동:1
   시치미:명:11
   시침:명:3
   시침:명:7
  -시커머티티하다:형:1
  -시커멓다:형:23
  +시커머티티하:형:1
  +시커멓:형:23
   시퀀서:명:1
   시크:명:1
  -시크하다:형:1
  -시큰거리다:동:1
  -시큰둥하다:형:12
  +시크하:형:1
  +시큰거리:동:1
  +시큰둥하:형:12
   시큰시큰:부:1
  -시큰하다:형:2
  -시큼하다:형:1
  -시키다:동:256
  +시큰하:형:2
  +시큼하:형:1
  +시키:동:256
   시테크:명:1
   시트:명:13
   시트커버:명:1
  @@ -30208,44 +30208,44 @@
   시티:명:1
   시티아이덴티티:명:1
   시판:명:14
  -시판되다:동:8
  -시판하다:동:4
  -시퍼렇다:형:14
  +시판되:동:8
  +시판하:동:4
  +시퍼렇:형:14
   시편:명:1
   시푸드:명:1
  -시푸르다:형:1
  +시푸르:형:1
   시피엠:명:1
   시피유:명:7
   시한:명:15
   시한부:명:5
   시한폭탄:명:4
   시합:명:30
  -시합하다:동:8
  +시합하:동:8
   시해:명:3
  -시해되다:동:2
  -시해하다:동:1
  +시해되:동:2
  +시해하:동:1
   시행:명:1
   시행:명:43
  -시행되다:동:41
  +시행되:동:41
   시행령:명:13
   시행령안:명:1
   시행일:명:1
   시행자:명:2
   시행착오:명:16
  -시행하다:동:58
  +시행하:동:58
   시헌력:명:1
   시험:명:342
   시험공부:명:4
   시험관:명:10
   시험대:명:1
  -시험되다:동:1
  -시험받다:동:1
  +시험되:동:1
  +시험받:동:1
   시험소:명:1
   시험장:명:4
   시험적:관:1
   시험적:명:2
   시험지:명:11
  -시험하다:동:7
  +시험하:동:7
   시현:명:1
   시혜:명:2
   시호:명:1
  @@ -30265,7 +30265,7 @@
   식곤증:명:1
   식구:명:147
   식기:명:20
  -식다:동:51
  +식:동:51
   식단:명:16
   식당:명:164
   식당가:명:2
  @@ -30301,8 +30301,8 @@
   식민지주의:명:2
   식반:명:29
   식별:명:3
  -식별되다:동:2
  -식별하다:동:11
  +식별되:동:2
  +식별하:동:11
   식부:명:1
   식부:명:1
   식비:명:1
  @@ -30312,8 +30312,8 @@
   식사량:명:2
   식사법:명:1
   식사비:명:2
  -식사하다:동:31
  -식상하다:동:8
  +식사하:동:31
  +식상하:동:8
   식생:명:12
   식생활:명:28
   식성:명:9
  @@ -30325,7 +30325,7 @@
   식수원:명:5
   식순:명:1
   식습관:명:1
  -식식거리다:동:3
  +식식거리:동:3
   식염:명:1
   식염수:명:4
   식욕:명:19
  @@ -30343,9 +30343,9 @@
   식장:명:11
   식장업체:명:1
   식재:명:2
  -식재되다:동:2
  +식재되:동:2
   식재료:명:2
  -식재하다:동:1
  +식재하:동:1
   식전:명:1
   식전:명:6
   식중:명:2
  @@ -30359,12 +30359,12 @@
   식품:명:131
   식품업계:명:3
   식품점:명:3
  -식품화하다:동:1
  +식품화하:동:1
   식혜:명:2
   식후:명:5
   식후경:명:3
   식후행:명:1
  -식히다:동:15
  +식히:동:15
   신:대:4
   신:명:1
   신:명:200
  @@ -30379,7 +30379,7 @@
   신검:명:2
   신격:명:1
   신격화:명:1
  -신격화하다:동:2
  +신격화하:동:2
   신경:명:219
   신경계:명:17
   신경성:명:5
  @@ -30392,15 +30392,15 @@
   신경통:명:10
   신계몽주의:명:1
   신고:명:79
  -신고되다:동:4
  -신고받다:동:1
  +신고되:동:4
  +신고받:동:1
   신고서:명:11
   신고식:명:1
   신고전주의:명:25
   신고전주의적:관:2
   신고제:명:2
   신고증:명:1
  -신고하다:동:61
  +신고하:동:61
   신곡:명:2
   신공:명:1
   신공법:명:1
  @@ -30426,22 +30426,22 @@
   신기:명:1
   신기:명:2
   신기:명:4
  -신기다:동:2
  +신기:동:2
   신기록:명:4
   신기루:명:2
   신기술:명:9
   신기원:명:2
   신기전:명:1
  -신기하다:형:35
  -신기하다:형:50
  -신기해하다:동:4
  +신기하:형:35
  +신기하:형:50
  +신기해하:동:4
   신년:명:8
   신년맞이:명:1
   신년사:명:16
   신념:명:48
   신노정:명:1
   신농정:명:1
  -신다:동:78
  +신:동:78
   신다위니즘:명:1
   신당:명:8
   신당론:명:1
  @@ -30453,23 +30453,23 @@
   신돌:명:1
   신동:명:2
   신드롬:명:4
  -신들리다:동:2
  +신들리:동:2
   신들메:명:1
   신딸:명:1
  -신랄하다:형:4
  +신랄하:형:4
   신랄히:부:1
   신랑:명:65
   신랑감:명:4
   신령:명:6
  -신령스럽다:형:6
  -신령하다:형:20
  +신령스럽:형:6
  +신령하:형:20
   신록:명:3
   신뢰:명:43
   신뢰감:명:11
   신뢰도:명:17
  -신뢰받다:동:3
  +신뢰받:동:3
   신뢰성:명:16
  -신뢰하다:동:21
  +신뢰하:동:21
   신르네상스:명:1
   신마르크스주의:명:1
   신마르크스주의적:관:8
  @@ -30496,7 +30496,7 @@
   신문용지:명:1
   신문장이:명:1
   신문지:명:36
  -신문하다:동:2
  +신문하:동:2
   신문학:명:10
   신문화:명:1
   신물:명:4
  @@ -30522,9 +30522,9 @@
   신보수주의:명:1
   신보수주의적:관:1
   신봉:명:1
  -신봉되다:동:3
  +신봉되:동:3
   신봉자:명:1
  -신봉하다:동:12
  +신봉하:동:12
   신부:명:24
   신부:명:94
   신북구:명:1
  @@ -30537,9 +30537,9 @@
   신붓감:명:3
   신비:명:35
   신비감:명:4
  -신비롭다:형:14
  +신비롭:형:14
   신비성:명:1
  -신비스럽다:형:10
  +신비스럽:형:10
   신비적:관:6
   신비적:명:2
   신비주의:명:4
  @@ -30547,11 +30547,11 @@
   신비주의자:명:1
   신비주의적:관:2
   신비주의적:명:1
  -신비하다:형:18
  +신비하:형:18
   신비화:명:1
  -신비화하다:동:2
  +신비화하:동:2
   신빙성:명:11
  -신빙하다:동:1
  +신빙하:동:1
   신사:명:1
   신사:명:18
   신사고:명:3
  @@ -30560,7 +30560,7 @@
   신사업:명:2
   신사적:명:1
   신사회:명:1
  -신산스럽다:형:1
  +신산스럽:형:1
   신산업:명:1
   신상:명:5
   신상:명:8
  @@ -30575,16 +30575,16 @@
   신선로:명:1
   신선미:명:1
   신선술:명:1
  -신선하다:형:80
  +신선하:형:80
   신설:명:35
  -신설되다:동:11
  -신설하다:동:19
  +신설되:동:11
  +신설하:동:19
   신성:명:1
   신성:명:1
   신성불가침:명:2
   신성성:명:1
  -신성스럽다:형:1
  -신성하다:형:25
  +신성스럽:형:1
  +신성하:형:25
   신세:명:17
   신세:명:44
   신세계:명:8
  @@ -30594,9 +30594,9 @@
   신소설:명:4
   신소재:명:11
   신속:명:6
  -신속하다:형:30
  +신속하:형:30
   신속히:부:13
  -신승하다:동:2
  +신승하:동:2
   신시:명:1
   신시:명:1
   신시:명:3
  @@ -30606,16 +30606,16 @@
   신식:명:4
   신식민지:명:4
   신신당부:명:1
  -신신당부하다:동:1
  +신신당부하:동:1
   신실:명:1
   신안보:명:2
   신앙:명:92
  -신앙되다:동:2
  +신앙되:동:2
   신앙생활:명:2
   신앙심:명:2
   신앙인:명:3
   신앙적:명:4
  -신앙하다:동:1
  +신앙하:동:1
   신약:명:3
   신어:명:3
   신어머니:명:1
  @@ -30634,7 +30634,7 @@
   신유:명:1
   신유학:명:1
   신음:명:18
  -신음하다:동:10
  +신음하:동:10
   신의:명:9
   신인:명:46
   신인사:명:1
  @@ -30642,7 +30642,7 @@
   신인왕전:명:1
   신임:명:25
   신임:명:7
  -신임하다:동:1
  +신임하:동:1
   신입:명:14
   신입생:명:48
   신입생맞이:명:1
  @@ -30655,12 +30655,12 @@
   신장:명:3
   신장개업:명:1
   신장기:명:4
  -신장되다:동:1
  +신장되:동:1
   신장률:명:4
   신장세:명:1
  -신장시키다:동:7
  +신장시키:동:7
   신장염:명:2
  -신장하다:동:3
  +신장하:동:3
   신재벌:명:3
   신저:명:1
   신적:관:1
  @@ -30685,7 +30685,7 @@
   신중론:명:1
   신중론자:명:1
   신중성:명:1
  -신중하다:형:30
  +신중하:형:30
   신중히:부:14
   신증설:명:2
   신지:명:1
  @@ -30698,12 +30698,12 @@
   신참:명:3
   신청:명:91
   신청권:명:1
  -신청되다:동:1
  -신청받다:동:2
  +신청되:동:1
  +신청받:동:2
   신청서:명:21
   신청인:명:2
   신청자:명:2
  -신청하다:동:49
  +신청하:동:49
   신체:명:190
   신체검사:명:3
   신체발부:명:4
  @@ -30715,22 +30715,22 @@
   신총:명:1
   신축:명:14
   신축년:명:1
  -신축되다:동:1
  +신축되:동:1
   신축비:명:1
   신축성:명:4
   신축적:명:1
  -신축하다:동:4
  +신축하:동:4
   신춘:명:1
   신춘문예:명:7
   신출내기:명:1
   신칸트주의:명:6
   신탁:명:1
   신탁:명:30
  -신탁하다:동:1
  +신탁하:동:1
   신토불이:명:2
   신통력:명:1
   신통술:명:1
  -신통하다:형:23
  +신통하:형:23
   신트림:명:1
   신파극:명:6
   신파극단:명:1
  @@ -30739,7 +30739,7 @@
   신판:명:1
   신페미니즘:명:1
   신평야:명:1
  -신푸녕스럽다:형:1
  +신푸녕스럽:형:1
   신품:명:1
   신풍:명:2
   신풍속:명:1
  @@ -30759,7 +30759,7 @@
   신호기:명:4
   신호등:명:28
   신호탄:명:2
  -신호하다:동:1
  +신호하:동:1
   신혼:명:11
   신혼부부:명:18
   신혼살림:명:3
  @@ -30772,20 +30772,20 @@
   신화학자:명:1
   신효자전:명:1
   신흥:명:18
  -싣다:동:150
  +싣:동:150
   실:명:1
   실:명:28
   실:명:3
   실:명:8
   실각:명:2
  -실각되다:동:1
  -실각하다:동:2
  +실각되:동:1
  +실각하:동:2
   실감:명:35
  -실감되다:동:3
  -실감하다:동:38
  +실감되:동:3
  +실감하:동:38
   실개천:명:4
   실거래:명:4
  -실격되다:동:1
  +실격되:동:1
   실계:명:1
   실고추:명:3
   실과:명:1
  @@ -30797,8 +30797,8 @@
   실긋:부:1
   실기:명:12
   실기실:명:1
  -실기하다:동:1
  -실낱같다:형:4
  +실기하:동:1
  +실낱같:형:4
   실낱같이:부:1
   실내:명:92
   실내등:명:3
  @@ -30807,26 +30807,26 @@
   실내조명:명:1
   실내화:명:1
   실눈:명:4
  -실답다:형:1
  +실답:형:1
   실답증:명:1
   실똥:명:1
   실똥물:명:1
   실뜨기:명:1
   실랑이:명:17
  -실랑이하다:동:6
  +실랑이하:동:6
   실력:명:64
   실력자:명:11
   실력파:명:1
   실례:명:14
   실례:명:23
  -실례하다:동:7
  +실례하:동:7
   실로:부:91
   실록:명:7
   실루엣:명:5
  -실룩거리다:동:3
  +실룩거리:동:3
   실룩샐룩:부:1
   실리:명:8
  -실리다:동:109
  +실리:동:109
   실리적:명:1
   실리콘:명:1
   실리콘:명:7
  @@ -30834,17 +30834,17 @@
   실마리:명:16
   실망:명:35
   실망감:명:8
  -실망스러워하다:동:1
  -실망스럽다:형:5
  -실망시키다:동:5
  +실망스러워하:동:1
  +실망스럽:형:5
  +실망시키:동:5
   실망투성이:명:1
  -실망하다:동:34
  +실망하:동:34
   실명:명:19
   실명:명:3
   실명인:명:2
   실명제:명:199
   실명화:명:2
  -실명화하다:동:1
  +실명화하:동:1
   실무:명:46
   실무자:명:16
   실무적:관:1
  @@ -30860,7 +30860,7 @@
   실사:명:13
   실사구시:명:1
   실사례:명:1
  -실사하다:동:1
  +실사하:동:1
   실사회:명:1
   실상:명:11
   실상:명:73
  @@ -30871,31 +30871,31 @@
   실선:명:6
   실성:명:1
   실성기:명:1
  -실성실성하다:형:1
  -실성하다:동:5
  +실성실성하:형:1
  +실성하:동:5
   실세:명:22
   실소:명:5
  -실소하다:동:1
  +실소하:동:1
   실속:명:6
   실수:명:149
   실수담:명:13
   실수왕:명:1
   실수요자:명:2
   실수율:명:1
  -실수하다:동:16
  +실수하:동:16
   실습:명:65
   실습림:명:1
   실습비:명:1
   실습실:명:1
   실습지:명:1
  -실습하다:동:8
  +실습하:동:8
   실시:명:118
   실시간:명:1
  -실시되다:동:102
  +실시되:동:102
   실시론:명:2
   실시설:명:1
  -실시하다:동:282
  -실신하다:동:2
  +실시하:동:282
  +실신하:동:2
   실실:부:4
   실실이:부:1
   실어증:명:5
  @@ -30906,11 +30906,11 @@
   실업률:명:1
   실업자:명:12
   실업학교:명:1
  -실없다:형:7
  +실없:형:7
   실없이:부:1
   실연:명:2
   실연:명:3
  -실연되다:동:1
  +실연되:동:1
   실연주의:명:1
   실오라기:명:2
   실온:명:2
  @@ -30922,8 +30922,8 @@
   실용적:명:14
   실용주의:명:2
   실용화:명:6
  -실용화되다:동:4
  -실용화하다:동:1
  +실용화되:동:4
  +실용화하:동:1
   실유:명:1
   실은:부:49
   실의:명:5
  @@ -30935,7 +30935,7 @@
   실재:명:21
   실재론자:명:1
   실재성:명:1
  -실재하다:동:14
  +실재하:동:14
   실적:명:46
   실전:명:10
   실점:명:4
  @@ -30951,8 +30951,8 @@
   실제적:명:12
   실조:명:1
   실족사:명:2
  -실족사하다:동:2
  -실족하다:동:1
  +실족사하:동:2
  +실족하:동:1
   실존:명:29
   실존적:관:26
   실존적:명:3
  @@ -30960,9 +30960,9 @@
   실존주의자:명:1
   실존주의적:관:3
   실존주의적:명:1
  -실존하다:동:2
  +실존하:동:2
   실종:명:8
  -실종되다:동:12
  +실종되:동:12
   실증:명:14
   실증적:관:11
   실증적:명:14
  @@ -30970,13 +30970,13 @@
   실증주의론자:명:1
   실증주의자:명:4
   실증주의적:관:25
  -실증하다:동:5
  +실증하:동:5
   실지:명:1
   실지:부:2
   실지로:부:7
   실직:명:3
   실직자:명:2
  -실직하다:동:1
  +실직하:동:1
   실질:명:12
   실질적:관:16
   실질적:명:53
  @@ -30985,101 +30985,101 @@
   실책:명:2
   실천:명:238
   실천가:명:1
  -실천되다:동:10
  +실천되:동:10
   실천성:명:2
   실천자:명:1
   실천적:관:37
   실천적:명:12
  -실천하다:동:116
  +실천하:동:116
   실체:명:86
   실체적:관:2
  -실체화하다:동:1
  +실체화하:동:1
   실추:명:2
  -실추되다:동:6
  -실추시키다:동:3
  -실측하다:동:1
  +실추되:동:6
  +실추시키:동:3
  +실측하:동:1
   실컷:부:36
   실크:명:12
   실타래:명:5
   실탄:명:2
   실태:명:67
  -실토하다:동:4
  +실토하:동:4
   실파:명:37
  -실팍하다:형:5
  +실팍하:형:5
   실패:명:3
   실패:명:63
   실패담:명:1
   실패작:명:4
  -실패하다:동:71
  +실패하:동:71
   실핏줄:명:1
  -실하다:형:4
  +실하:형:4
   실학:명:4
   실학사상:명:3
   실학자:명:8
   실학파:명:1
   실행:명:21
   실행기:명:2
  -실행되다:동:13
  -실행시키다:동:1
  -실행하다:동:21
  +실행되:동:13
  +실행시키:동:1
  +실행하:동:21
   실행형:명:1
   실향:명:2
   실험:명:115
   실험극:명:2
   실험기:명:1
  -실험당하다:동:1
  +실험당하:동:1
   실험대:명:2
   실험도:명:1
  -실험되다:동:1
  +실험되:동:1
   실험복:명:3
   실험성:명:2
   실험실:명:11
   실험적:관:8
   실험적:명:4
  -실험하다:동:13
  +실험하:동:13
   실험학교:명:5
   실현:명:57
  -실현되다:동:38
  +실현되:동:38
   실현성:명:6
  -실현시키다:동:11
  +실현시키:동:11
   실현자:명:1
  -실현하다:동:54
  +실현하:동:54
   실형:명:5
   실화:명:1
   실황:명:13
   실효:명:12
  -실효되다:동:3
  +실효되:동:3
   실효성:명:14
   실효적:관:1
   실히:부:1
  -싫다:형:281
  -싫어지다:동:15
  -싫어하다:동:81
  +싫:형:281
  +싫어지:동:15
  +싫어하:동:81
   싫증:명:12
   심:명:1
   심:명:6
   심각:명:5
   심각성:명:21
  -심각하다:형:211
  -심각해지다:동:17
  -심겨지다:동:1
  +심각하:형:211
  +심각해지:동:17
  +심겨지:동:1
   심경:명:20
   심고:명:5
  -심고하다:동:1
  +심고하:동:1
   심근:명:4
   심금:명:2
   심급:명:2
   심기:명:10
   심기일전:명:5
  -심난하다:형:1
  -심다:동:173
  -심대하다:동:1
  +심난하:형:1
  +심:동:173
  +심대하:동:1
   심도:명:10
  -심드렁하다:형:6
  -심란스럽다:형:1
  -심란하다:형:12
  -심란해지다:동:1
  -심란해하다:동:1
  +심드렁하:형:6
  +심란스럽:형:1
  +심란하:형:12
  +심란해지:동:1
  +심란해하:동:1
   심려:명:4
   심령:명:1
   심령술사:명:1
  @@ -31098,9 +31098,9 @@
   심마니:명:1
   심모원려:명:1
   심문:명:14
  -심문받다:동:2
  +심문받:동:2
   심문자:명:4
  -심문하다:동:4
  +심문하:동:4
   심미:명:3
   심미성:명:2
   심미안:명:1
  @@ -31113,55 +31113,55 @@
   심복:명:3
   심부름:명:29
   심부름꾼:명:1
  -심부름하다:동:2
  +심부름하:동:2
   심부전증:명:1
   심사:명:19
   심사:명:58
   심사과장:명:1
  -심사숙고하다:동:6
  -심사하다:동:6
  +심사숙고하:동:6
  +심사하:동:6
   심산:명:4
   심상:명:1
   심상:명:2
   심상과:명:1
  -심상스럽다:형:1
  -심상하다:형:22
  +심상스럽:형:1
  +심상하:형:22
   심상히:부:1
   심성:명:32
   심성암:명:1
   심술:명:12
  -심술궂다:형:2
  +심술궂:형:2
   심신:명:19
   심실중격:명:2
  -심심찮다:형:11
  +심심찮:형:11
   심심파적:명:1
   심심풀이:명:2
  -심심하다:형:1
  -심심하다:형:1
  -심심하다:형:26
  -심심해지다:동:1
  -심심해하다:동:2
  +심심하:형:1
  +심심하:형:1
  +심심하:형:26
  +심심해지:동:1
  +심심해하:동:2
   심야:명:12
  -심약하다:형:3
  -심어지다:동:6
  +심약하:형:3
  +심어지:동:6
   심연:명:7
  -심오하다:형:11
  -심원하다:형:2
  +심오하:형:11
  +심원하:형:2
   심음:명:2
   심의:명:1
   심의:명:30
   심의관:명:4
  -심의되다:동:1
  +심의되:동:1
   심의료:명:1
   심의실:명:1
  -심의하다:동:4
  +심의하:동:4
   심인성:명:1
   심잡음:명:1
   심장:명:107
   심장병:명:5
   심장부:명:3
   심장성:명:1
  -심장하다:형:1
  +심장하:형:1
   심장학:명:1
   심적:관:5
   심적:명:4
  @@ -31173,35 +31173,35 @@
   심증:명:6
   심지:명:6
   심지어:부:121
  -심취되다:동:1
  -심취하다:동:5
  +심취되:동:1
  +심취하:동:5
   심층:명:8
   심층적:관:1
   심층적:명:2
   심통:명:3
  -심통스럽다:형:1
  +심통스럽:형:1
   심판:명:49
   심판권:명:2
   심판대:명:1
  -심판받다:동:4
  +심판받:동:4
   심판적:관:1
  -심판하다:동:11
  +심판하:동:11
   심폐:명:4
   심포니:명:2
   심포지엄:명:9
   심플렉스:명:2
  -심하다:형:285
  +심하:형:285
   심해:명:1
  -심해지다:동:34
  +심해지:동:34
   심혈:명:11
   심호흡:명:3
  -심호흡하다:동:2
  +심호흡하:동:2
   심혼:명:3
   심화:명:1
   심화:명:10
  -심화되다:동:39
  -심화시키다:동:12
  -심화하다:동:5
  +심화되:동:39
  +심화시키:동:12
  +심화하:동:5
   심회:명:1
   심히:부:7
   십:관:119
  @@ -31254,40 +31254,40 @@
   십팔:감:1
   십팔:관:13
   십현:명:1
  -싯누렇다:형:1
  -싱겁다:형:18
  -싱그러워지다:동:1
  -싱그럽다:형:16
  +싯누렇:형:1
  +싱겁:형:18
  +싱그러워지:동:1
  +싱그럽:형:16
   싱글:명:7
  -싱글거리다:동:2
  +싱글거리:동:2
   싱글벙글:부:4
  -싱글벙글거리다:동:1
  -싱글벙글하다:동:2
  +싱글벙글거리:동:1
  +싱글벙글하:동:2
   싱긋:부:3
   싱긋이:부:3
  -싱숭생숭해지다:동:2
  +싱숭생숭해지:동:2
   싱싱:부:3
  -싱싱하다:형:47
  -싱싱해지다:동:1
  +싱싱하:형:47
  +싱싱해지:동:1
   싱싱히:부:1
   싱크대:명:4
   싱크로나이즈드:명:1
  -싶다:보:1,527
  -싶어지다:보:32
  +싶다:보:1527
  +싶어지:보:32
   싸가지:명:9
   싸개통:명:1
  -싸고돌다:동:2
  +싸고돌:동:2
   싸구려:감:3
   싸구려:명:23
   싸그리:부:2
   싸낙배기:명:1
  -싸늘하다:형:26
  -싸다:동:104
  -싸다:동:13
  -싸다:형:1
  -싸다:형:2
  -싸다:형:97
  -싸돌아다니다:동:3
  +싸늘하:형:26
  +싸:동:104
  +싸:동:13
  +싸:형:1
  +싸:형:2
  +싸:형:97
  +싸돌아다니:동:3
   싸라기:명:2
   싸락눈:명:2
   싸리:명:3
  @@ -31295,36 +31295,36 @@
   싸리나무:명:2
   싸리문:명:1
   싸리비:명:1
  -싸매다:동:7
  -싸안다:동:3
  -싸우다:동:221
  +싸매:동:7
  +싸안:동:3
  +싸우:동:221
   싸움:명:165
   싸움꾼:명:2
   싸움박질:명:1
   싸움질:명:3
   싸움터:명:6
   싸움판:명:3
  -싸움하다:동:2
  -싸이다:동:19
  -싸잡다:동:2
  -싸잡히다:동:2
  -싸지다:동:3
  -싸지르다:동:1
  -싸지르다:동:1
  -싸지르다:동:2
  -싸하다:형:3
  +싸움하:동:2
  +싸이:동:19
  +싸잡:동:2
  +싸잡히:동:2
  +싸지:동:3
  +싸지르:동:1
  +싸지르:동:1
  +싸지르:동:2
  +싸하:형:3
   싹:명:46
   싹:부:17
   싹둑:부:5
   싹둑싹둑:부:1
   싹수:명:4
  -싹수없다:형:1
  +싹수없:형:1
   싹싹:부:7
  -싹싹하다:형:2
  +싹싹하:형:2
   싹쓸이:명:5
   싹쓸이론:명:1
  -싹쓸이하다:동:1
  -싹트다:동:13
  +싹쓸이하:동:1
  +싹트:동:13
   싼값:명:20
   쌀:명:314
   쌀가게:명:4
  @@ -31339,9 +31339,9 @@
   쌀밥:명:12
   쌀벌레:명:4
   쌀보리:명:2
  -쌀쌀맞다:형:1
  -쌀쌀하다:형:6
  -쌀쌀해지다:동:2
  +쌀쌀맞:형:1
  +쌀쌀하:형:6
  +쌀쌀해지:동:2
   쌀알:명:16
   쌀장사:명:1
   쌀장수:명:1
  @@ -31352,19 +31352,19 @@
   쌈:명:2
   쌈:명:3
   쌈박질:명:2
  -쌈박하다:형:1
  +쌈박하:형:1
   쌈장:명:1
   쌈질:명:1
  -쌈하다:동:4
  -쌉싸래하다:형:1
  -쌉쌀하다:형:2
  +쌈하:동:4
  +쌉싸래하:형:1
  +쌉쌀하:형:2
   쌍:감:4
   쌍:명:31
   쌍가락지:명:1
   쌍곡선:명:1
   쌍과부:명:1
  -쌍글하다:형:2
  -쌍글해지다:동:1
  +쌍글하:형:2
  +쌍글해지:동:1
   쌍꺼풀:명:7
   쌍놈:명:1
   쌍두:명:1
  @@ -31385,7 +31385,7 @@
   쌍불:명:1
   쌍생아:명:1
   쌍수:명:4
  -쌍스럽다:형:1
  +쌍스럽:형:1
   쌍심지:명:1
   쌍쌍:명:5
   쌍쌍이:부:1
  @@ -31393,69 +31393,69 @@
   쌍엽:명:1
   쌍태:명:2
   쌍포:명:1
  -쌓다:동:150
  +쌓:동:150
   쌓다:보:8
  -쌓여지다:동:1
  -쌓이다:동:162
  -쌕쌕거리다:동:1
  +쌓여지:동:1
  +쌓이:동:162
  +쌕쌕거리:동:1
   쌕쌕이:명:2
  -쌜기죽대다:동:1
  +쌜기죽대:동:1
   쌩긋:부:2
   쌩쌩:부:2
  -쌩쌩거리다:동:1
  -써내다:동:11
  -써넣다:동:7
  -써늘하다:형:3
  -써먹다:동:8
  -써지다:동:7
  +쌩쌩거리:동:1
  +써내:동:11
  +써넣:동:7
  +써늘하:형:3
  +써먹:동:8
  +써지:동:7
   썩:부:30
  -썩다:동:72
  -썩어지다:동:1
  -썩이다:동:17
  -썩히다:동:3
  -썰다:동:2
  -썰다:동:208
  +썩:동:72
  +썩어지:동:1
  +썩이:동:17
  +썩히:동:3
  +썰:동:2
  +썰:동:208
   썰렁:명:1
   썰렁증:명:1
  -썰렁하다:형:31
  -썰렁해하다:동:2
  +썰렁하:형:31
  +썰렁해하:동:2
   썰매:명:8
   썰매장:명:3
   썰물:명:10
   썸뻑:부:1
   쎄:명:1
   쏘:명:1
  -쏘다:동:89
  -쏘다니다:동:11
  -쏘삭거리다:동:1
  +쏘:동:89
  +쏘다니:동:11
  +쏘삭거리:동:1
   쏘시개:명:1
  -쏘아대다:동:1
  -쏘아보다:동:18
  -쏘아붙이다:동:9
  -쏘이다:동:17
  -쏘이다:동:7
  +쏘아대:동:1
  +쏘아보:동:18
  +쏘아붙이:동:9
  +쏘이:동:17
  +쏘이:동:7
   쏙:부:21
   쏙닥쏙닥:부:1
   쏙독새:명:3
   쏙쏙:부:3
   쏜살:명:1
   쏜살같이:부:10
  -쏟다:동:92
  -쏟아지다:동:116
  -쏠다:동:1
  -쏠리다:동:31
  -쏠쏠하다:형:1
  +쏟:동:92
  +쏟아지:동:116
  +쏠:동:1
  +쏠리:동:31
  +쏠쏠하:형:1
   쏴:부:5
  -쏴붙이다:동:1
  +쏴붙이:동:1
   쐐기:명:8
   쐐기:명:8
  -쐬다:동:22
  +쐬:동:22
   쐬주:명:3
  -쑤군대다:동:4
  -쑤군덕거리다:동:1
  -쑤다:동:24
  -쑤시다:동:17
  -쑤시다:동:19
  +쑤군대:동:4
  +쑤군덕거리:동:1
  +쑤:동:24
  +쑤시:동:17
  +쑤시:동:19
   쑥:명:1
   쑥:명:20
   쑥:부:14
  @@ -31463,94 +31463,94 @@
   쑥국:명:1
   쑥대머리:명:3
   쑥대밭:명:1
  -쑥덕거리다:동:1
  +쑥덕거리:동:1
   쑥덕공론:명:1
   쑥덕쑥덕:명:1
  -쑥덕쑥덕하다:동:1
  +쑥덕쑥덕하:동:1
   쑥떡:명:3
   쑥밭:명:1
   쑥버무리:명:2
   쑥부쟁이:명:10
   쑥새:명:2
   쑥색:명:1
  -쑥스러워하다:동:2
  -쑥스럽다:형:35
  +쑥스러워하:동:2
  +쑥스럽:형:35
   쑥쑥:부:6
   쑬쑬히:부:1
   쑹덩쑹덩:부:2
   쓰개치마:명:1
   쓰기:명:2
  -쓰다:동:1,093
  -쓰다:동:1,119
  -쓰다:동:124
  -쓰다:형:14
  -쓰다듬다:동:35
  -쓰디쓰다:형:2
  -쓰라려지다:동:1
  -쓰라리다:형:20
  +쓰:동:1093
  +쓰:동:1119
  +쓰:동:124
  +쓰:형:14
  +쓰다듬:동:35
  +쓰디쓰:형:2
  +쓰라려지:동:1
  +쓰라리:형:20
   쓰라림:명:2
  -쓰러뜨리다:동:4
  -쓰러지다:동:83
  +쓰러뜨리:동:4
  +쓰러지:동:83
   쓰레기:명:215
   쓰레기장:명:11
   쓰레기통:명:21
   쓰레기투성이:명:1
   쓰르라미:명:1
   쓰리꾼:명:8
  -쓰리다:형:12
  +쓰리:형:12
   쓰리보이:명:1
   쓰벌:감:1
  -쓰여지다:동:24
  -쓰이다:동:169
  -쓰이다:동:22
  +쓰여지:동:24
  +쓰이:동:169
  +쓰이:동:22
   쓰임새:명:11
   쓱:부:14
   쓱쓱:부:6
   쓴맛:명:16
   쓴웃음:명:6
   쓸개:명:6
  -쓸까스르다:동:1
  -쓸다:동:43
  -쓸데없다:형:24
  +쓸까스르:동:1
  +쓸:동:43
  +쓸데없:형:24
   쓸데없이:부:18
  -쓸리다:동:6
  +쓸리:동:6
   쓸모:명:12
  -쓸모없다:형:9
  -쓸모없어지다:동:1
  +쓸모없:형:9
  +쓸모없어지:동:1
   쓸모없이:부:1
  -쓸쓸하다:형:45
  -쓸쓸해지다:동:6
  +쓸쓸하:형:45
  +쓸쓸해지:동:6
   쓸쓸히:부:4
  -쓸어내리다:동:4
  -쓸어버리다:동:1
  -쓸어안다:동:3
  +쓸어내리:동:4
  +쓸어버리:동:1
  +쓸어안:동:3
   씀바귀:명:1
  -씀벅거리다:동:2
  +씀벅거리:동:2
   씀씀이:명:9
   씁쓰레:부:1
  -씁쓰레하다:형:2
  -씁쓸하다:형:17
  -씁쓸해지다:동:1
  -씁쓸해하다:동:1
  -씌다:동:1
  -씌다:동:2
  -씌다:동:4
  -씌다:동:8
  -씌어지다:동:31
  -씌우다:동:32
  -씌워지다:동:2
  +씁쓰레하:형:2
  +씁쓸하:형:17
  +씁쓸해지:동:1
  +씁쓸해하:동:1
  +씌:동:1
  +씌:동:2
  +씌:동:4
  +씌:동:8
  +씌어지:동:31
  +씌우:동:32
  +씌워지:동:2
   씨:감:18
   씨:명:60
  -씨:의:2,920
  -씨근거리다:동:2
  +씨:의:2920
  +씨근거리:동:2
   씨근씨근:부:1
  -씨끄럽다:형:1
  +씨끄럽:형:1
   씨눈:명:1
   씨름:명:34
   씨름판:명:2
  -씨름하다:동:8
  +씨름하:동:8
   씨받이:명:2
  -씨부렁거리다:동:1
  +씨부렁거리:동:1
   씨뿌리기:명:1
   씨알머리:명:1
   씨암탉:명:1
  @@ -31561,22 +31561,22 @@
   씨종:명:1
   씨팔:감:19
   씩:부:16
  -씩씩거리다:동:4
  -씩씩대다:동:4
  -씩씩하다:형:28
  -씰룩거리다:동:3
  -씹다:동:70
  +씩씩거리:동:4
  +씩씩대:동:4
  +씩씩하:형:28
  +씰룩거리:동:3
  +씹:동:70
   씹새끼:명:4
  -씹어뱉다:동:1
  -씹주구리하다:형:2
  +씹어뱉:동:1
  +씹주구리하:형:2
   씹퉁:명:1
  -씹히다:동:11
  -씻겨지다:동:1
  -씻기다:동:15
  -씻기다:동:17
  -씻기우다:동:1
  +씹히:동:11
  +씻겨지:동:1
  +씻기:동:15
  +씻기:동:17
  +씻기우:동:1
   씻나락:명:2
  -씻다:동:236
  +씻:동:236
   씽씽:부:2
   아:감:638
   아:명:3
  @@ -31599,17 +31599,17 @@
   아귀힘:명:1
   아그:명:3
   아그배나무:명:2
  -아금받다:형:1
  +아금받:형:1
   아기:명:351
   아기씨:명:4
  -아기자기하다:형:9
  +아기자기하:형:9
   아까:명:44
   아까:부:168
   아까시:명:1
  -아까워하다:동:1
  -아깝다:형:54
  -아끼다:동:117
  -아낌없다:형:2
  +아까워하:동:1
  +아깝:형:54
  +아끼:동:117
  +아낌없:형:2
   아낌없이:부:5
   아나운서:명:247
   아나운서실:명:7
  @@ -31624,16 +31624,16 @@
   아냐:감:57
   아녀자:명:1
   아뇨:감:24
  -아늑하다:형:11
  +아늑하:형:11
   아니:감:284
   아니:부:270
  -아니꼽다:형:8
  -아니다:지:6,245
  +아니꼽:형:8
  +아니다:지:6245
   아니리:명:1
   아니야:감:38
   아니요:감:88
  -아니하다:보:120
  -아담하다:형:13
  +아니하:보:120
  +아담하:형:13
   아동:명:13
   아동기:명:4
   아동용:명:4
  @@ -31641,14 +31641,14 @@
   아동학자:명:1
   아둔:명:1
   아둔패기:명:1
  -아둔하다:형:3
  +아둔하:형:3
   아듀:감:2
   아드님:명:4
   아드득:부:1
   아득바득:부:1
  -아득바득하다:동:1
  -아득하다:형:39
  -아득해지다:동:1
  +아득바득하:동:1
  +아득하:형:39
  +아득해지:동:1
   아득히:부:10
   아들:명:640
   아들내미:명:2
  @@ -31659,12 +31659,12 @@
   아들자식:명:1
   아등바등:부:2
   아따:감:14
  -아뜩하다:형:2
  +아뜩하:형:2
   아람:명:1
   아랍어:명:1
   아랑곳:명:6
   아랑곳없이:부:15
  -아랑곳하다:동:20
  +아랑곳하:동:20
   아래:명:2
   아래:명:450
   아래뜸:명:1
  @@ -31694,40 +31694,40 @@
   아랫자리:명:1
   아랫집:명:3
   아량:명:8
  -아련하다:형:16
  +아련하:형:16
   아련히:부:4
   아령:명:1
  -아로새겨지다:동:2
  -아로새기다:동:2
  +아로새겨지:동:2
  +아로새기:동:2
   아로스콘폴로:명:1
   아롱:부:1
   아롱다롱:부:1
   아롱이다롱이:명:1
  -아롱지다:동:1
  -아뢰다:동:5
  -아류화시키다:동:1
  +아롱지:동:1
  +아뢰:동:5
  +아류화시키:동:1
   아르바이트:명:40
   아르바이트생:명:1
  -아르바이트하다:동:3
  +아르바이트하:동:3
   아르오티시:명:3
   아르케:명:1
   아르케익:명:5
   아르피엠:명:1
  -아른거리다:동:4
  -아른아른하다:동:1
  +아른거리:동:4
  +아른아른하:동:1
   아른히:부:1
   아름:의:11
  -아름다워지다:동:7
  -아름답다:형:586
  +아름다워지:동:7
  +아름답:형:586
   아름드리:명:3
   아름드리나무:명:1
   아름아름:부:1
  -아리다:형:10
  -아리땁다:형:6
  +아리:형:10
  +아리땁:형:6
   아리랑:명:3
  -아리송하다:형:3
  -아릿아릿하다:형:1
  -아릿하다:형:4
  +아리송하:형:3
  +아릿아릿하:형:1
  +아릿하:형:4
   아마:명:1
   아마:명:3
   아마:부:294
  @@ -31745,9 +31745,9 @@
   아무거:명:7
   아무것:명:156
   아무래도:부:113
  -아무러하다:형:1
  +아무러하:형:1
   아무런:관:218
  -아무렇다:형:75
  +아무렇:형:75
   아무려나:감:1
   아무려면:감:5
   아무렴:감:5
  @@ -31755,10 +31755,10 @@
   아무쪼록:부:4
   아무케나:불:1
   아무튼:부:70
  -아물거리다:동:2
  -아물다:동:1
  -아물리다:동:1
  -아물아물하다:동:1
  +아물거리:동:2
  +아물:동:1
  +아물리:동:1
  +아물아물하:동:1
   아미노산:명:3
   아미타불:명:4
   아미타여래:명:1
  @@ -31766,11 +31766,11 @@
   아바이:명:2
   아방가르드:명:2
   아버님:명:73
  -아버지:명:1,165
  +아버지:명:1165
   아범:명:2
   아부:명:6
   아부지:명:5
  -아부하다:동:3
  +아부하:동:3
   아비:명:31
   아비규환:명:1
   아빠:명:517
  @@ -31787,19 +31787,19 @@
   아세트알데히드:명:1
   아수라:명:2
   아수라장:명:10
  -아수쿠러하다:형:1
  +아수쿠러하:형:1
   아쉬:명:2
  -아쉬어하다:동:1
  +아쉬어하:동:1
   아쉬움:명:34
  -아쉬워하다:동:13
  -아쉽다:형:67
  +아쉬워하:동:13
  +아쉽:형:67
   아스라이:부:3
  -아스라하다:형:3
  +아스라하:형:3
   아스키코드:명:8
   아스트린젠트:명:2
   아스팔트:명:24
  -아슬아슬하다:형:11
  -아슬하다:형:2
  +아슬아슬하:형:11
  +아슬하:형:2
   아씨:명:47
   아아:감:47
   아야:감:1
  @@ -31808,28 +31808,28 @@
   아연:명:8
   아연:부:1
   아연:부:1
  -아연하다:형:3
  -아연해하다:동:1
  +아연하:형:3
  +아연해하:동:1
   아열대:명:4
   아예:부:147
   아옹다옹:부:1
   아우:명:20
   아우님:명:1
   아우라:명:11
  -아우러지다:동:2
  -아우르다:동:22
  +아우러지:동:2
  +아우르:동:22
   아우성:명:13
  -아우성치다:동:4
  +아우성치:동:4
   아욱:명:2
   아울러:부:104
   아웃:명:1
   아웃사이더:명:2
   아웃사이드:명:2
  -아웅다웅하다:동:1
  +아웅다웅하:동:1
   아유:감:69
   아으:감:2
   아이:감:58
  -아이:명:1,495
  +아이:명:1495
   아이:명:4
   아이:명:5
   아이고:감:107
  @@ -31843,7 +31843,7 @@
   아이라이너:명:3
   아이라인:명:3
   아이러니:명:7
  -아이러니컬하다:형:4
  +아이러니컬하:형:4
   아이리스:명:1
   아이리시:명:1
   아이보리색:명:2
  @@ -31886,17 +31886,17 @@
   아지랑이:명:6
   아지매:명:1
   아지트:명:2
  -아지하다:동:1
  +아지하:동:1
   아직:부:956
   아직껏:부:15
   아집:명:4
   아찔:명:1
  -아찔아찔하다:형:1
  -아찔하다:형:13
  -아찔해지다:동:3
  +아찔아찔하:형:1
  +아찔하:형:13
  +아찔해지:동:3
   아차:감:8
   아찬:명:1
  -아첨하다:동:3
  +아첨하:동:3
   아치:명:9
   아침:명:600
   아침결:명:1
  @@ -31909,7 +31909,7 @@
   아카데미:명:4
   아카데미스트:명:1
   아카데미주의자:명:1
  -아카데믹하다:형:1
  +아카데믹하:형:1
   아카시아:명:10
   아카시아꽃:명:7
   아카시아나무:명:4
  @@ -31929,14 +31929,14 @@
   아트홀:명:1
   아틀리에:명:2
   아티스트:명:1
  -아파지다:동:1
  +아파지:동:1
   아파트:명:261
   아파트촌:명:3
   아파트형:명:2
  -아파하다:동:14
  +아파하:동:14
   아편:명:7
   아포리즘:명:1
  -아프다:형:360
  +아프:형:360
   아프랜드면:명:1
   아픔:명:91
   아하:감:24
  @@ -31957,15 +31957,15 @@
   악기:명:66
   악기상:명:9
   악다구니:명:2
  -악다물다:동:1
  +악다물:동:1
   악단:명:13
   악담:명:5
   악당:명:10
   악덕:명:1
   악독성:명:1
  -악독하다:형:1
  +악독하:형:1
   악동:명:7
  -악랄하다:형:4
  +악랄하:형:4
   악력:명:1
   악령:명:3
   악마:명:24
  @@ -31973,7 +31973,7 @@
   악마적:명:3
   악명:명:5
   악몽:명:46
  -악물다:동:14
  +악물:동:14
   악법:명:24
   악보:명:12
   악사:명:4
  @@ -31986,20 +31986,20 @@
   악센트:명:2
   악속:명:1
   악수:명:45
  -악수하다:동:11
  +악수하:동:11
   악순환:명:30
  -악순환되다:동:1
  +악순환되:동:1
   악습:명:3
  -악쓰다:동:5
  -악악거리다:동:2
  +악쓰:동:5
  +악악거리:동:2
   악어:명:2
   악어:명:2
   악역:명:6
   악연:명:5
   악영향:명:12
   악용:명:4
  -악용되다:동:8
  -악용하다:동:9
  +악용되:동:8
  +악용하:동:9
   악의:명:6
   악의적:관:1
   악의적:명:1
  @@ -32011,21 +32011,21 @@
   악종:명:3
   악질:명:2
   악질분자:명:1
  -악착같다:형:2
  +악착같:형:2
   악착같이:부:4
  -악착스러워지다:동:1
  +악착스러워지:동:1
   악취:명:24
   악폐:명:1
  -악하다:형:8
  +악하:형:8
   악행:명:4
   악화:명:19
  -악화되다:동:35
  -악화시키다:동:5
  -악화하다:동:1
  -안:명:1,346
  +악화되:동:35
  +악화시키:동:5
  +악화하:동:1
  +안:명:1346
   안:명:2
   안:명:20
  -안:부:2,676
  +안:부:2676
   안가:명:18
   안간:관:1
   안간힘:명:18
  @@ -32035,7 +32035,7 @@
   안개꽃:명:2
   안개비:명:2
   안건:명:7
  -안겨지다:동:2
  +안겨지:동:2
   안경:명:80
   안경다리:명:1
   안경잡이:명:4
  @@ -32044,16 +32044,16 @@
   안과:명:8
   안구:명:23
   안기:동:1
  -안기다:동:39
  -안기다:동:49
  +안기:동:39
  +안기:동:49
   안기부법:명:1
   안길:명:1
   안내:명:46
   안내기:명:1
   안내도:명:3
  -안내되다:동:4
  +안내되:동:4
   안내문:명:3
  -안내받다:동:3
  +안내받:동:3
   안내서:명:6
   안내소:명:6
   안내실:명:1
  @@ -32062,30 +32062,30 @@
   안내인:명:5
   안내자:명:4
   안내장:명:3
  -안내하다:동:37
  +안내하:동:37
   안녕:감:23
   안녕:명:10
  -안녕하다:형:111
  +안녕하:형:111
   안녕히:부:43
  -안다:동:242
  +안:동:242
   안다리:명:1
   안단테:명:1
   안달:명:5
   안달복달:명:1
  -안달하다:동:2
  +안달하:동:2
   안도:명:12
   안도감:명:7
  -안도하다:동:3
  +안도하:동:3
   안동네:명:1
   안동답답이:명:1
   안동포:명:1
  -안되다:동:70
  -안되다:형:23
  +안되:동:70
  +안되:형:23
   안락:명:4
   안락성:명:1
   안락의자:명:2
  -안락하다:형:13
  -안락해지다:동:1
  +안락하:형:13
  +안락해지:동:1
   안력:명:1
   안마:명:1
   안마:명:1
  @@ -32098,13 +32098,13 @@
   안무:명:17
   안무가:명:2
   안무상:명:2
  -안무하다:동:4
  +안무하:동:4
   안민:명:1
   안방:명:102
   안방극장:명:6
   안방마님:명:2
   안배:명:6
  -안배되다:동:1
  +안배되:동:1
   안벽:명:1
   안보:명:114
   안보관:명:1
  @@ -32114,36 +32114,36 @@
   안사돈:명:2
   안산:명:2
   안산:명:8
  -안산하다:동:3
  +안산하:동:3
   안살림:명:2
   안상:명:1
   안색:명:7
   안성맞춤:명:7
   안수:명:1
  -안수하다:동:8
  +안수하:동:8
   안식:명:10
  -안식시키다:동:1
  +안식시키:동:1
   안식일:명:18
   안식처:명:7
  -안식하다:동:1
  +안식하:동:1
   안심:명:13
   안심:명:5
  -안심시키다:동:3
  -안심하다:동:17
  -안쓰럽다:형:18
  +안심시키:동:3
  +안심하:동:17
  +안쓰럽:형:18
   안악골:명:2
  -안온하다:형:5
  +안온하:형:5
   안위:명:1
   안위:명:2
   안이:명:1
  -안이하다:형:17
  +안이하:형:17
   안일:명:1
   안일:명:8
   안일주의:명:2
  -안일하다:형:8
  +안일하:형:8
   안장:명:1
   안장:명:8
  -안장되다:동:1
  +안장되:동:1
   안전:명:103
   안전:명:2
   안전거리:명:1
  @@ -32162,103 +32162,103 @@
   안전지대:명:2
   안전판:명:2
   안전표지판:명:1
  -안전하다:형:74
  +안전하:형:74
   안전화:명:1
   안절부절:부:5
  -안절부절못하다:동:8
  -안절부절하다:동:1
  +안절부절못하:동:8
  +안절부절하:동:1
   안정:명:13
   안정:명:155
   안정감:명:2
   안정감:명:8
   안정권:명:1
  -안정되다:동:54
  +안정되:동:54
   안정론:명:1
   안정률:명:1
   안정성:명:14
   안정세:명:3
  -안정시키다:동:24
  +안정시키:동:24
   안정적:관:3
   안정적:명:16
   안정제:명:3
   안정주:명:1
   안정책:명:3
  -안정하다:동:1
  -안정하다:동:1
  +안정하:동:1
  +안정하:동:1
   안정화:명:3
  -안정화되다:동:1
  -안정화시키다:동:1
  -안존하다:형:1
  +안정화되:동:1
  +안정화시키:동:1
  +안존하:형:1
   안주:명:2
   안주:명:41
   안주:부:1
   안주머니:명:2
  -안주시키다:동:2
  +안주시키:동:2
   안주애기박쥐:명:1
   안주인:명:7
  -안주하다:동:9
  +안주하:동:9
   안중:명:6
   안질환:명:2
   안집:명:1
  -안집시키다:동:1
  +안집시키:동:1
   안짝:명:2
   안쪽:명:60
   안착:명:1
  -안착되다:동:1
  -안착하다:동:4
  +안착되:동:1
  +안착하:동:4
   안창:명:2
   안채:명:5
  -안치다:동:8
  -안치되다:동:1
  +안치:동:8
  +안치되:동:1
   안치소:명:3
   안치실:명:1
  -안치하다:동:2
  +안치하:동:2
   안타:명:2
  -안타까워하다:동:11
  +안타까워하:동:11
   안타까이:부:1
  -안타깝다:형:84
  +안타깝:형:84
   안테나:명:3
   안통:명:1
   안티크:명:1
   안팎:명:43
   안팎일:명:1
   안하무인:명:2
  -앉다:동:1,029
  +앉:동:1029
   앉은뱅이:명:3
   앉은뱅이책상:명:3
   앉은자리:명:1
   앉은키:명:4
  -앉히다:동:37
  -않다:동:119
  -않다:보:8,852
  +앉히:동:37
  +않:동:119
  +않다:보:8852
   알:명:99
   알:의:15
   알갱이:명:21
   알거지:명:1
   알고리듬:명:1
   알고리즘:명:7
  -알다:동:2,933
  +알:동:2933
   알데히드:명:1
  -알딸딸해지다:동:1
  +알딸딸해지:동:1
   알뜰:명:12
   알뜰살뜰:부:3
  -알뜰하다:형:10
  +알뜰하:형:10
   알뜰히:부:1
   알락할미새:명:2
  -알량하다:형:3
  +알량하:형:3
   알레고리:명:2
   알레르기:명:6
   알레르기성:명:3
  -알려지다:동:418
  +알려지:동:418
   알력:명:1
   알로에:명:1
   알록달록:부:2
   알루미늄:명:35
  -알리다:동:223
  +알리:동:223
   알리바이:명:1
   알림장:명:3
  -알맞다:형:168
  -알맞춤하다:형:1
  +알맞:형:168
  +알맞춤하:형:1
   알맹이:명:17
   알몸:명:17
   알보리:명:1
  @@ -32268,21 +32268,21 @@
   알선:명:2
   알선자:명:2
   알선책:명:2
  -알선하다:동:4
  -알싸하다:형:1
  -알쏭달쏭하다:형:2
  -알아내다:동:44
  -알아듣다:동:91
  -알아맞추다:동:2
  -알아맞히다:동:22
  -알아보다:동:505
  -알아주다:동:35
  -알아차리다:동:27
  -알아채다:동:14
  +알선하:동:4
  +알싸하:형:1
  +알쏭달쏭하:형:2
  +알아내:동:44
  +알아듣:동:91
  +알아맞추:동:2
  +알아맞히:동:22
  +알아보:동:505
  +알아주:동:35
  +알아차리:동:27
  +알아채:동:14
   알알이:부:2
   알약:명:5
   알은체:명:1
  -알은체하다:동:1
  +알은체하:동:1
   알음:명:2
   알음알음:명:1
   알음알이:명:1
  @@ -32290,12 +32290,12 @@
   알짜:명:1
   알짜배기:명:1
   알찌개:명:1
  -알차다:형:17
  +알차:형:17
   알칼로이드:명:1
   알칼리:명:3
   알칼리성:명:32
   알칼리화:명:1
  -알칼리화되다:동:1
  +알칼리화되:동:1
   알코올:명:24
   알코올리즘:명:2
   알코올성:명:4
  @@ -32304,10 +32304,10 @@
   알파기:명:2
   알파뉴메릭:명:1
   알파벳:명:5
  -알현하다:동:1
  +알현하:동:1
   앎:명:11
  -앓다:동:102
  -앓아눕다:동:7
  +앓:동:102
  +앓아눕:동:7
   암:감:13
   암:명:2
   암:명:44
  @@ -32318,20 +32318,20 @@
   암권:명:5
   암글:명:1
   암기:명:4
  -암기하다:동:3
  +암기하:동:3
   암나무:명:3
   암녹색:명:2
   암놈:명:2
   암달러:명:2
   암담:명:1
  -암담하다:형:9
  +암담하:형:9
   암독사:명:2
   암류:명:1
   암막:명:1
   암만:부:7
  -암만하다:동:6
  +암만하:동:6
   암말:불:3
  -암매하다:동:1
  +암매하:동:1
   암모니아:명:4
   암모니아수:명:3
   암묵적:관:1
  @@ -32344,8 +32344,8 @@
   암사내:명:1
   암살:명:19
   암살단:명:1
  -암살당하다:동:2
  -암살되다:동:3
  +암살당하:동:2
  +암살되:동:3
   암색:명:7
   암석:명:47
   암세포:명:12
  @@ -32355,17 +32355,17 @@
   암수:명:7
   암술:명:1
   암시:명:31
  -암시되다:동:9
  +암시되:동:9
   암시성:명:1
   암시적:관:1
   암시적:명:5
  -암시하다:동:17
  +암시하:동:17
   암암리:명:4
   암약:명:1
  -암약하다:동:2
  +암약하:동:2
   암운:명:1
   암울:명:1
  -암울하다:형:13
  +암울하:형:13
   암자:명:13
   암자색:명:1
   암장:명:1
  @@ -32373,8 +32373,8 @@
   암적색:명:1
   암주:명:1
   암중모색:명:3
  -암중모색하다:동:1
  -암지르다:동:1
  +암중모색하:동:1
  +암지르:동:1
   암청색:명:2
   암초:명:1
   암컷:명:30
  @@ -32382,12 +32382,12 @@
   암퇘지:명:1
   암투:명:6
   암튼:부:5
  -암팡지다:형:3
  +암팡지:형:3
   암행:명:1
   암행어사:명:1
   암호:명:12
   암호화:명:1
  -암호화하다:동:1
  +암호화하:동:1
   암회갈색:명:2
   암회색:명:6
   암흑:명:11
  @@ -32397,74 +32397,74 @@
   암흑시대:명:3
   압권:명:5
   압도:명:1
  -압도당하다:동:1
  -압도되다:동:5
  +압도당하:동:1
  +압도되:동:5
   압도적:관:10
   압도적:명:23
  -압도하다:동:12
  +압도하:동:12
   압력:명:109
   압력솥:명:5
   압류:명:3
  -압류되다:동:2
  +압류되:동:2
   압맥:명:1
   압박:명:24
   압박감:명:5
  -압박하다:동:9
  +압박하:동:9
   압살:명:1
  -압송되다:동:1
  -압송하다:동:1
  +압송되:동:1
  +압송하:동:1
   압수:명:10
  -압수하다:동:1
  -압수하다:동:4
  +압수하:동:1
  +압수하:동:4
   압승:명:4
   압승:명:5
  -압승하다:동:1
  +압승하:동:1
   압제:명:6
  -압착하다:동:1
  +압착하:동:1
   압축:명:27
   압축기:명:4
  -압축되다:동:14
  -압축시키다:동:1
  +압축되:동:14
  +압축시키:동:1
   압축적:명:2
  -압축하다:동:18
  +압축하:동:18
   압출기:명:1
   압통:명:1
   앗:감:7
  -앗기다:동:1
  -앗다:동:10
  -앗쌀하다:형:1
  +앗기:동:1
  +앗:동:10
  +앗쌀하:형:1
   앙:감:5
   앙:부:2
   앙가슴:명:2
   앙갚음:명:1
   앙거:명:1
   앙고라:명:1
  -앙구다:동:1
  +앙구:동:1
   앙금:명:9
  -앙다물다:동:1
  -앙다물리다:동:1
  +앙다물:동:1
  +앙다물리:동:1
   앙등:명:2
  -앙바틈하다:형:1
  +앙바틈하:형:1
   앙상블:명:5
  -앙상하다:형:13
  +앙상하:형:13
   앙상히:부:1
   앙숙:명:4
   앙심:명:4
   앙앙:부:1
  -앙앙거리다:동:1
  -앙앙불락하다:동:1
  +앙앙거리:동:1
  +앙앙불락하:동:1
   앙양:명:1
   앙이:부:2
   앙이다:지:3
  -앙증맞다:형:7
  -앙증스럽다:형:1
  -앙칼스럽다:형:6
  -앙칼지다:형:4
  +앙증맞:형:7
  +앙증스럽:형:1
  +앙칼스럽:형:6
  +앙칼지:형:4
   앙코르:명:2
  -앙큼하다:형:1
  +앙큼하:형:1
   앙탈:명:5
  -앙탈하다:동:2
  -앞:명:1,979
  +앙탈하:동:2
  +앞:명:1979
   앞가림:명:1
   앞가슴:명:9
   앞거리:명:1
  @@ -32475,10 +32475,10 @@
   앞날:명:31
   앞니:명:1
   앞다리:명:1
  -앞당겨지다:동:5
  -앞당기다:동:18
  +앞당겨지:동:5
  +앞당기:동:18
   앞대가리:명:1
  -앞두다:동:139
  +앞두:동:139
   앞뒤:명:46
   앞뜰:명:4
   앞마당:명:10
  @@ -32494,10 +32494,10 @@
   앞사람:명:1
   앞산:명:4
   앞서:부:178
  -앞서다:동:99
  +앞서:동:99
   앞섶:명:1
  -앞세우다:동:58
  -앞스럽다:형:1
  +앞세우:동:58
  +앞스럽:형:1
   앞에총:명:2
   앞여밈:명:1
   앞이마:명:2
  @@ -32506,11 +32506,11 @@
   앞자리:명:13
   앞잡이:명:3
   앞장:명:10
  -앞장서다:동:84
  -앞장세우다:동:2
  +앞장서:동:84
  +앞장세우:동:2
   앞줄:명:7
   앞지르기:명:1
  -앞지르다:동:12
  +앞지르:동:12
   앞집:명:9
   앞쪽:명:21
   앞차:명:1
  @@ -32520,13 +32520,13 @@
   애:명:45
   애:명:614
   애간장:명:5
  -애걸하다:동:3
  +애걸하:동:3
   애견:명:2
   애경사:명:1
   애고:감:2
  -애고하다:동:1
  +애고하:동:1
   애교:명:21
  -애교스럽다:형:5
  +애교스럽:형:5
   애교심:명:1
   애국:명:11
   애국시:명:2
  @@ -32535,41 +32535,41 @@
   애국적:관:1
   애국정신:명:2
   애국주의자:명:1
  -애국하다:동:1
  +애국하:동:1
   애기나리:명:3
   애기며느리밥풀:명:2
   애기부들:명:1
   애꾸:명:1
   애꾸눈:명:2
  -애꿎다:형:7
  -애끊다:동:1
  -애끓다:동:2
  +애꿎:형:7
  +애끊:동:1
  +애끓:동:2
   애니메이션:명:44
   애니메이션업체:명:1
  -애달프다:형:4
  +애달프:형:4
   애당초:명:8
   애덕:명:1
   애도:명:1
  -애도하다:동:4
  +애도하:동:4
   애도회:명:1
   애독서:명:1
   애독자:명:8
   애드라이터:명:1
   애드리브:명:4
  -애드리브하다:동:1
  +애드리브하:동:1
   애드벌룬:명:3
  -애련하다:형:2
  +애련하:형:2
   애로:명:9
  -애매모호하다:형:6
  +애매모호하:형:6
   애매성:명:1
  -애매하다:형:1
  -애매하다:형:28
  -애먹다:동:1
  +애매하:형:1
  +애매하:형:28
  +애먹:동:1
   애먼:관:1
   애모심:명:1
   애무:명:6
  -애무되다:동:1
  -애무하다:동:3
  +애무되:동:1
  +애무하:동:3
   애물:명:1
   애물단지:명:8
   애버리지:명:1
  @@ -32579,15 +32579,15 @@
   애별리고:명:1
   애사심:명:3
   애살:명:1
  -애살스럽다:형:1
  +애살스럽:형:1
   애상:명:1
   애상적:관:1
  -애석하다:형:5
  -애석해하다:동:3
  +애석하:형:5
  +애석해하:동:3
   애송이:명:1
   애수:명:3
   애시당초:명:5
  -애쓰다:동:137
  +애쓰:동:137
   애어른:명:1
   애연가:명:3
   애오라지:부:1
  @@ -32596,39 +32596,39 @@
   애완동물:명:5
   애욕:명:2
   애용:명:5
  -애용되다:동:8
  -애용하다:동:4
  +애용되:동:8
  +애용하:동:4
   애원:명:1
   애원:명:3
  -애원하다:동:16
  +애원하:동:16
   애인:명:59
  -애잔하다:형:5
  +애잔하:형:5
   애장품:명:1
   애저:명:2
  -애절하다:형:4
  -애절하다:형:6
  -애절해지다:동:1
  +애절하:형:4
  +애절하:형:6
  +애절해지:동:1
   애정:명:67
   애제자:명:3
   애족:명:2
   애증:명:3
   애지중지:부:2
  -애지중지하다:동:1
  +애지중지하:동:1
   애착:명:12
   애착심:명:2
   애창곡:명:2
   애처가:명:1
  -애처롭다:형:9
  +애처롭:형:9
   애첩:명:2
   애청자:명:2
   애초:명:59
   애칭:명:2
  -애타다:동:15
  -애태우다:동:2
  -애통하다:형:1
  -애통해하다:동:1
  -애틋하다:형:13
  -애틋해하다:동:1
  +애타:동:15
  +애태우:동:2
  +애통하:형:1
  +애통해하:동:1
  +애틋하:형:13
  +애틋해하:동:1
   애프터:명:4
   애프터서비스:명:4
   애향:명:1
  @@ -32638,7 +32638,7 @@
   애호박:명:10
   애호박나물:명:2
   애호층:명:1
  -애호하다:동:1
  +애호하:동:1
   애환:명:5
   액면:명:4
   액면가:명:5
  @@ -32660,9 +32660,9 @@
   앨범:명:21
   앰뷸런스:명:1
   앰프:명:8
  -앳되다:형:6
  +앳되:형:6
   앵글:명:2
  -앵돌아지다:동:1
  +앵돌아지:동:1
   앵두:명:5
   앵두나무:명:2
   앵무새:명:8
  @@ -32683,46 +32683,46 @@
   야구팀:명:2
   야구팬:명:1
   야권:명:16
  -야그하다:동:1
  +야그하:동:1
   야근:명:7
   야근자:명:1
   야금야금:부:11
  -야기되다:동:20
  -야기시키다:동:11
  +야기되:동:20
  +야기시키:동:11
   야기자:명:1
  -야기하다:동:9
  +야기하:동:9
   야기형:명:1
   야단:명:44
  -야단나다:동:2
  -야단맞다:동:8
  +야단나:동:2
  +야단맞:동:8
   야단법석:명:6
  -야단스럽다:형:4
  +야단스럽:형:4
   야단스레:부:1
  -야단야단하다:동:1
  -야단치다:동:12
  +야단야단하:동:1
  +야단치:동:12
   야당:명:107
   야당사:명:1
   야당인:명:1
   야도:명:2
   야들:수:1
  -야들야들해지다:동:1
  -야릇하다:형:6
  -야릇해지다:동:1
  +야들야들해지:동:1
  +야릇하:형:6
  +야릇해지:동:1
   야만:명:1
  -야만시하다:동:1
  +야만시하:동:1
   야만인:명:5
   야만적:관:4
   야만적:명:12
   야망:명:6
  -야멸치다:형:1
  -야무지다:형:10
  -야물다:형:1
  +야멸치:형:1
  +야무지:형:10
  +야물:형:1
   야미:명:2
  -야박하다:형:5
  -야박해지다:동:1
  +야박하:형:5
  +야박해지:동:1
   야반도주:명:1
   야밤:명:2
  -야비하다:형:3
  +야비하:형:3
   야산:명:13
   야산대:명:2
   야산지:명:1
  @@ -32735,10 +32735,10 @@
   야성미:명:1
   야성적:명:1
   야세:명:1
  -야속하다:형:6
  +야속하:형:6
   야수적:명:1
   야수파:명:1
  -야스럽다:형:1
  +야스럽:형:1
   야식:명:3
   야심:명:13
   야심작:명:1
  @@ -32753,9 +32753,9 @@
   야외무대:명:1
   야외숙:명:1
   야욕:명:2
  -야위다:동:4
  +야위:동:4
   야유:명:8
  -야유하다:동:3
  +야유하:동:3
   야유회:명:5
   야음:명:1
   야인:명:2
  @@ -32774,15 +32774,15 @@
   야초라:명:1
   야쿠자:명:1
   야키소바:명:1
  -야트막하다:형:7
  +야트막하:형:7
   야폭:명:1
   야표:명:1
  -야하다:형:18
  +야하:형:18
   야학:명:5
   야학당:명:1
   야합:명:8
   야합적:관:1
  -야해지다:동:1
  +야해지:동:1
   야행성:명:2
   야호:감:5
   야회:명:1
  @@ -32800,7 +32800,7 @@
   약국:명:23
   약대:명:1
   약도:명:8
  -약동하다:동:1
  +약동하:동:1
   약력:명:1
   약력:명:9
   약물:명:26
  @@ -32811,36 +32811,36 @@
   약봉지:명:1
   약사:명:5
   약사발:명:2
  -약삭빠르다:형:3
  +약삭빠르:형:3
   약산성:명:1
   약선:명:6
   약성:명:1
   약세:명:7
   약소국:명:9
  -약소하다:형:1
  +약소하:형:1
   약속:명:191
  -약속되다:동:7
  -약속받다:동:1
  -약속하다:동:80
  +약속되:동:7
  +약속받:동:1
  +약속하:동:80
   약손:명:2
   약수:명:17
   약수터:명:26
   약수통:명:1
   약술:명:1
  -약술하다:동:1
  +약술하:동:1
   약시:명:1
   약식:명:4
  -약아빠지다:형:1
  +약아빠지:형:1
   약육강식:명:8
   약자:명:4
   약장수:명:1
   약재:명:8
   약점:명:42
   약정:명:10
  -약정되다:동:1
  +약정되:동:1
   약제:명:1
   약조:명:1
  -약조하다:동:3
  +약조하:동:3
   약주:명:2
   약지:명:2
   약진:명:4
  @@ -32848,40 +32848,40 @@
   약체:명:1
   약초:명:7
   약취:명:1
  -약칭하다:동:1
  +약칭하:동:1
   약탈:명:11
  -약탈당하다:동:3
  +약탈당하:동:3
   약탈적:관:1
  -약탈하다:동:4
  +약탈하:동:4
   약탕:명:3
   약통:명:1
   약표:명:1
   약품:명:17
  -약하다:형:119
  +약하:형:119
   약학:명:2
  -약해지다:동:34
  +약해지:동:34
   약혼:명:9
   약혼녀:명:3
   약혼식:명:11
   약혼자:명:2
  -약혼하다:동:1
  +약혼하:동:1
   약화:명:1
   약화:명:11
  -약화되다:동:26
  -약화시키다:동:18
  -약화하다:동:2
  +약화되:동:26
  +약화시키:동:18
  +약화하:동:2
   약효:명:8
  -얄궂다:형:8
  -얄밉다:형:19
  -얄팍하다:형:12
  -얄포름하다:형:1
  -얄풋하다:형:1
  -얇다:형:59
  -얇아지다:동:2
  +얄궂:형:8
  +얄밉:형:19
  +얄팍하:형:12
  +얄포름하:형:1
  +얄풋하:형:1
  +얇:형:59
  +얇아지:동:2
   얌마:불:1
   얌전:명:1
  -얌전하다:형:23
  -얌전해지다:동:1
  +얌전하:형:23
  +얌전해지:동:1
   얌전히:부:7
   얌체:명:3
   얌체족:명:2
  @@ -32920,7 +32920,7 @@
   양념간장:명:2
   양념거리:명:1
   양념장:명:23
  -양념하다:동:12
  +양념하:동:12
   양다리:명:2
   양단:명:3
   양단간:명:1
  @@ -32929,11 +32929,11 @@
   양당제:명:1
   양대:관:6
   양도:명:31
  -양도되다:동:1
  -양도받다:동:2
  +양도되:동:1
  +양도받:동:2
   양도분:명:1
   양도성:명:1
  -양도하다:동:7
  +양도하:동:7
   양돈:명:1
   양돈업:명:1
   양동이:명:8
  @@ -32943,7 +32943,7 @@
   양로당:명:1
   양로원:명:9
   양론:명:3
  -양립하다:동:6
  +양립하:동:6
   양말:명:35
   양말목:명:1
   양머리:명:1
  @@ -32969,22 +32969,22 @@
   양배추:명:17
   양버들:명:1
   양보:명:17
  -양보받다:동:1
  -양보하다:동:36
  +양보받:동:1
  +양보하:동:36
   양복:명:42
   양복장이:명:1
   양복점:명:8
   양봉:명:2
   양분:명:3
  -양분되다:동:7
  +양분되:동:7
   양분법:명:1
  -양분하다:동:3
  +양분하:동:3
   양분화:명:1
   양비론:명:2
   양산:명:5
   양산:명:6
  -양산되다:동:1
  -양산하다:동:6
  +양산되:동:1
  +양산하:동:6
   양상:명:114
   양상추:명:19
   양색시:명:3
  @@ -32997,10 +32997,10 @@
   양성:명:1
   양성:명:2
   양성:명:23
  -양성되다:동:2
  +양성되:동:2
   양성소:명:3
   양성자:명:1
  -양성하다:동:16
  +양성하:동:16
   양성화:명:1
   양속:명:1
   양손:명:20
  @@ -33019,15 +33019,15 @@
   양식:명:7
   양식거리:명:3
   양식당:명:1
  -양식되다:동:3
  +양식되:동:3
   양식론:명:2
   양식업:명:7
   양식장:명:9
   양식적:관:3
  -양식하다:동:2
  +양식하:동:2
   양식화:명:1
  -양식화되다:동:1
  -양식화하다:동:2
  +양식화되:동:1
  +양식화하:동:2
   양심:명:49
   양심선언:명:4
   양심선언자:명:2
  @@ -33045,9 +33045,9 @@
   양용형:명:1
   양육:명:10
   양육권:명:1
  -양육되다:동:1
  +양육되:동:1
   양육자:명:3
  -양육하다:동:3
  +양육하:동:3
   양은:명:2
   양은그릇:명:2
   양은솥:명:2
  @@ -33083,7 +33083,7 @@
   양지:명:4
   양지꽃:명:3
   양지머리:명:5
  -양지바르다:형:6
  +양지바르:형:6
   양지쪽:명:4
   양질:명:7
   양질화:명:1
  @@ -33107,30 +33107,30 @@
   양편:명:13
   양푼:명:2
   양품점:명:4
  -양하다:보:1
  +양하:보:1
   양할아버지:명:1
   양해:명:8
  -양해하다:동:6
  +양해하:동:6
   양호:명:5
   양호실:명:4
  -양호하다:형:5
  +양호하:형:5
   양화:명:1
   양화:명:2
   양화기:명:1
  -양화하다:동:1
  -얕다:형:17
  -얕보다:동:1
  -얕아지다:동:1
  -얕잡다:동:3
  +양화하:동:1
  +얕:형:17
  +얕보:동:1
  +얕아지:동:1
  +얕잡:동:3
   얘:감:44
   얘:대:1
   얘:불:67
   얘기:명:824
   얘기꽃:명:6
   얘기꾼:명:1
  -얘기되다:동:5
  +얘기되:동:5
   얘기판:명:1
  -얘기하다:동:294
  +얘기하:동:294
   얘깃거리:명:2
   어:감:455
   어:명:3
  @@ -33142,13 +33142,13 @@
   어군:명:1
   어군:명:1
   어귀:명:20
  -어그러지다:동:1
  +어그러지:동:1
   어금니:명:6
   어금닛소리:명:1
  -어긋나다:동:66
  -어기다:동:39
  -어기적거리다:동:2
  -어김없다:형:1
  +어긋나:동:66
  +어기:동:39
  +어기적거리:동:2
  +어김없:형:1
   어김없이:부:30
   어깃장:명:1
   어깨:명:228
  @@ -33157,42 +33157,42 @@
   어깨너비:명:4
   어깨높이:명:1
   어깨동무:명:7
  -어깨동무하다:동:1
  +어깨동무하:동:1
   어깨띠:명:2
   어깨뼈:명:1
   어깨선:명:1
  -어깨짐하다:동:1
  +어깨짐하:동:1
   어깨춤:명:3
   어깻부들기:명:1
   어깻죽지:명:5
  -어눌하다:형:7
  -어느:관:1,255
  +어눌하:형:7
  +어느:관:1255
   어느덧:부:38
   어느새:부:108
   어대:명:2
   어데:불:1
   어두움:명:1
  -어두워지다:동:17
  -어두컴컴하다:형:11
  -어두컴컴해지다:동:1
  -어둑시근하다:형:1
  +어두워지:동:17
  +어두컴컴하:형:11
  +어두컴컴해지:동:1
  +어둑시근하:형:1
   어둑어둑:부:2
  -어둑어둑하다:형:5
  -어둑어둑해지다:동:3
  -어둑하다:형:3
  -어둑해지다:동:1
  +어둑어둑하:형:5
  +어둑어둑해지:동:3
  +어둑하:형:3
  +어둑해지:동:1
   어둠:명:155
   어둠길:명:1
   어둠살:명:2
   어둠상자:명:2
  -어둡다:형:155
  -어드렇다:형:2
  +어둡:형:155
  +어드렇:형:2
   어드레스:명:1
   어드메:대:1
   어드바이스:명:1
   어드벤처:명:3
   어디:감:120
  -어디:대:1,148
  +어디:대:1148
   어디어디:대:5
   어딨다:불:27
   어따:감:3
  @@ -33201,54 +33201,54 @@
   어때서:불:3
   어때요:불:54
   어땠:불:21
  -어떠어떠하다:형:1
  -어떠하다:형:263
  -어떡하다:불:79
  -어떤:관:1,917
  +어떠어떠하:형:1
  +어떠하:형:263
  +어떡하:불:79
  +어떤:관:1917
   어떤어떤:관:1
  -어떻다:형:1,748
  +어떻:형:1748
   어떻든:부:10
  -어뜩하다:형:1
  -어뜩해지다:동:1
  +어뜩하:형:1
  +어뜩해지:동:1
   어라:감:2
   어럽쇼:감:2
   어레인지:명:1
   어려움:명:157
  -어려워지다:동:26
  -어려워하다:동:6
  +어려워지:동:26
  +어려워하:동:6
   어련히:부:2
   어렴풋이:부:21
  -어렴풋하다:형:2
  -어렵다:형:866
  +어렴풋하:형:2
  +어렵:형:866
   어렵사리:부:6
   어로:명:4
   어록:명:1
   어료지:명:1
  -어루만지다:동:13
  +어루만지:동:13
   어룽:명:1
  -어룽거리다:동:1
  +어룽거리:동:1
   어류:명:25
  -어르다:동:10
  +어르:동:10
   어르신:명:7
   어른:명:334
  -어른거리다:동:13
  -어른스럽다:형:3
  +어른거리:동:13
  +어른스럽:형:3
   어른스레:부:1
   어름:명:2
   어름치:명:1
   어리광:명:4
  -어리다:동:1
  -어리다:동:47
  -어리다:형:430
  +어리:동:1
  +어리:동:47
  +어리:형:430
   어리둥절:부:2
  -어리둥절하다:형:20
  -어리둥절해지다:동:3
  -어리둥절해하다:동:4
  -어리벙벙하다:형:2
  -어리비치다:동:1
  +어리둥절하:형:20
  +어리둥절해지:동:3
  +어리둥절해하:동:4
  +어리벙벙하:형:2
  +어리비치:동:1
   어리빙이:명:2
  -어리석다:형:54
  -어리숙하다:형:2
  +어리석:형:54
  +어리숙하:형:2
   어린것:명:11
   어린아이:명:48
   어린애:명:41
  @@ -33259,22 +33259,22 @@
   어린이집:명:1
   어린잎:명:1
   어림:명:4
  -어림되다:동:1
  -어림없다:형:9
  -어림잡다:동:3
  -어림하다:동:1
  +어림되:동:1
  +어림없:형:9
  +어림잡:동:3
  +어림하:동:1
   어릿광대:명:1
   어릿어릿:부:1
   어마나:감:1
  -어마어마하다:형:14
  +어마어마하:형:14
   어망:명:1
   어머:감:67
   어머나:감:7
  -어머니:명:1,436
  +어머니:명:1436
   어머니회:명:1
   어머님:명:72
   어머머:감:3
  -어머어마하다:형:2
  +어머어마하:형:2
   어머어머:감:1
   어머이:명:1
   어메:감:1
  @@ -33293,7 +33293,7 @@
   어버이:명:5
   어버이날:명:7
   어법:명:3
  -어벙하다:동:1
  +어벙하:동:1
   어부:명:27
   어부바:감:1
   어부지리:명:1
  @@ -33301,31 +33301,31 @@
   어빡자빡:부:1
   어사화:명:1
   어살:명:1
  -어색하다:형:76
  -어색해지다:동:2
  -어색해하다:동:1
  +어색하:형:76
  +어색해지:동:2
  +어색해하:동:1
   어서:부:150
   어선:명:1
   어선:명:18
   어선단:명:1
  -어설프다:형:18
  +어설프:형:18
   어설피:부:1
   어세:명:1
   어셈블러:명:3
   어셈블리:명:8
  -어수선하다:형:19
  +어수선하:형:19
   어순:명:2
   어스름:명:7
   어스세티카:명:1
  -어슬렁거리다:동:7
  +어슬렁거리:동:7
   어슬렁어슬렁:부:4
  -어슴푸레하다:형:2
  +어슴푸레하:형:2
   어슷:부:3
   어슷세기:명:2
   어슷썰기:명:1
  -어슷하다:형:1
  +어슷하:형:1
   어시스트:명:13
  -어시스트하다:동:3
  +어시스트하:동:3
   어시장:명:1
   어아주:명:1
   어안:명:14
  @@ -33336,18 +33336,18 @@
   어언간:부:1
   어업:명:26
   어여:부:2
  -어여쁘다:형:6
  +어여쁘:형:6
   어역:명:1
  -어엿하다:형:4
  +어엿하:형:4
   어영부영:부:2
   어용:명:3
   어용상인:명:1
   어용화:명:2
  -어우러지다:동:38
  -어우르다:동:2
  -어울리다:동:224
  +어우러지:동:38
  +어우르:동:2
  +어울리:동:224
   어울림:명:3
  -어울어지다:동:1
  +어울어지:동:1
   어원:명:7
   어웨이:명:1
   어유:감:23
  @@ -33359,10 +33359,10 @@
   어이:명:8
   어이:부:7
   어이구:감:12
  -어이없다:형:19
  +어이없:형:19
   어이없이:부:2
   어이쿠:감:5
  -어이하다:동:2
  +어이하:동:2
   어인:관:2
   어장:명:9
   어장대:명:1
  @@ -33370,9 +33370,9 @@
   어저께:부:2
   어전:명:1
   어전:명:2
  -어정거리다:동:8
  +어정거리:동:8
   어정쩡:명:1
  -어정쩡하다:형:5
  +어정쩡하:형:5
   어제:명:96
   어제:부:102
   어제오늘:명:7
  @@ -33382,23 +33382,23 @@
   어족:명:2
   어족:명:3
   어종:명:1
  -어줍다:형:1
  +어줍:형:1
   어중:명:1
  -어중간하다:형:4
  -어지간하다:형:2
  +어중간하:형:4
  +어지간하:형:2
   어지간히:부:10
  -어지러워지다:동:5
  +어지러워지:동:5
   어지러이:부:2
   어지럼증:명:4
  -어지럽다:형:45
  -어지럽혀지다:동:4
  -어지럽히다:동:12
  -어지르다:동:2
  +어지럽:형:45
  +어지럽혀지:동:4
  +어지럽히:동:12
  +어지르:동:2
   어진혼:명:1
  -어질다:형:10
  +어질:형:10
   어질덤벙:부:1
   어질어질:부:2
  -어질어질하다:형:4
  +어질어질하:형:4
   어째:불:22
   어째서:불:42
   어째요:불:1
  @@ -33407,7 +33407,7 @@
   어쨌든:부:155
   어쨌든지:부:1
   어쩌고저쩌고:부:9
  -어쩌다:동:288
  +어쩌:동:288
   어쩌다:부:42
   어쩌다가:부:18
   어쩌면:감:3
  @@ -33415,16 +33415,16 @@
   어쩐지:부:48
   어쩜:감:2
   어쩜:부:17
  -어쭙잖다:형:2
  +어쭙잖:형:2
   어찌:부:147
   어찌나:부:23
   어찌어찌:부:1
  -어찌어찌하다:동:1
  -어찌하다:동:45
  +어찌어찌하:동:1
  +어찌하:동:45
   어차피:부:86
   어처구니:명:10
  -어처구니없다:형:36
  -어처구니없어하다:동:3
  +어처구니없:형:36
  +어처구니없어하:동:3
   어처구니없이:부:2
   어촌:명:6
   어치:명:3
  @@ -33435,7 +33435,7 @@
   어판장:명:9
   어패류:명:5
   어폐:명:2
  -어필하다:동:2
  +어필하:동:2
   어학:명:1
   어학연수:명:5
   어항:명:5
  @@ -33447,7 +33447,7 @@
   어황:명:5
   어획:명:2
   어획고:명:6
  -어획되다:동:2
  +어획되:동:2
   어획량:명:15
   어획물:명:1
   어휘:명:13
  @@ -33458,49 +33458,49 @@
   억:수:2
   억겁:명:2
   억견:명:2
  -억누르다:동:15
  -억눌리다:동:6
  +억누르:동:15
  +억눌리:동:6
   억대:명:7
  -억류되다:동:2
  -억류하다:동:1
  +억류되:동:2
  +억류하:동:1
   억불:명:1
   억새:명:5
   억새밭:명:1
   억새풀:명:10
  -억세다:형:13
  -억세어지다:동:1
  +억세:형:13
  +억세어지:동:1
   억수:명:4
   억압:명:60
  -억압당하다:동:3
  -억압되다:동:12
  -억압받다:동:5
  +억압당하:동:3
  +억압되:동:12
  +억압받:동:5
   억압자:명:5
   억압적:관:11
   억압적:명:9
  -억압하다:동:30
  +억압하:동:30
   억양:명:9
  -억울하다:형:60
  +억울하:형:60
   억장:명:3
   억제:명:40
  -억제되다:동:7
  -억제시키다:동:2
  +억제되:동:7
  +억제시키:동:2
   억제책:명:2
  -억제하다:동:43
  +억제하:동:43
   억지:명:25
   억지:명:3
   억지력:명:1
   억지로:부:62
  -억지스럽다:형:2
  +억지스럽:형:2
   억지웃음:명:1
   억척:명:1
  -억척스럽다:형:4
  +억척스럽:형:4
   억측:명:6
   언:관:1
   언감생심:명:2
   언겸:명:1
   언급:명:24
  -언급되다:동:5
  -언급하다:동:53
  +언급되:동:5
  +언급하:동:53
   언능:부:1
   언니:명:419
   언더웨어:명:1
  @@ -33519,14 +33519,14 @@
   언론사:명:19
   언론인:명:22
   언론학:명:1
  -언명하다:동:1
  +언명하:동:1
   언문:명:3
   언변:명:2
   언사:명:5
   언설:명:3
   언성:명:11
   언약:명:1
  -언약하다:동:1
  +언약하:동:1
   언어:명:327
   언어권:명:1
   언어도단:명:1
  @@ -33546,38 +33546,38 @@
   언젠가:부:133
   언중유골:명:1
   언질:명:1
  -언짢다:형:17
  -언짢아하다:동:2
  +언짢:형:17
  +언짢아하:동:2
   언필칭:부:2
   언행:명:12
   언행일치:명:1
  -얹다:동:76
  -얹혀살다:동:6
  -얹히다:동:21
  -얻다:동:587
  -얻어걸리다:동:1
  -얻어듣다:동:1
  -얻어맞다:동:16
  -얻어먹다:동:29
  -얻어지다:동:31
  -얻어터지다:동:4
  +얹:동:76
  +얹혀살:동:6
  +얹히:동:21
  +얻:동:587
  +얻어걸리:동:1
  +얻어듣:동:1
  +얻어맞:동:16
  +얻어먹:동:29
  +얻어지:동:31
  +얻어터지:동:4
   얼:대:1
   얼:명:11
   얼간:명:1
   얼간이:명:3
   얼개:명:1
   얼결:명:7
  -얼굴:명:1,144
  +얼굴:명:1144
   얼굴값:명:1
   얼굴빛:명:8
   얼굴색:명:4
   얼굴형:명:8
  -얼근하다:형:2
  +얼근하:형:2
   얼기설기:부:3
  -얼다:동:42
  +얼:동:42
   얼떨결:명:7
  -얼떨떨하다:형:11
  -얼떨떨해지다:동:3
  +얼떨떨하:형:11
  +얼떨떨해지:동:3
   얼뜬:부:1
   얼라:감:2
   얼래:감:3
  @@ -33590,27 +33590,27 @@
   얼룩말:명:3
   얼룩무늬:명:3
   얼룩점:명:1
  -얼룩지다:동:22
  +얼룩지:동:22
   얼른:부:215
   얼른얼른:부:1
  -얼리다:동:15
  +얼리:동:15
   얼마:명:490
   얼마간:명:16
   얼마나:부:668
  -얼멍엉성하다:형:1
  -얼버무리다:동:19
  -얼빠지다:동:3
  -얼싸안다:동:6
  +얼멍엉성하:형:1
  +얼버무리:동:19
  +얼빠지:동:3
  +얼싸안:동:6
   얼싸절싸:부:1
   얼쑤:감:1
   얼씨구:감:6
   얼씨구절씨구:감:1
   얼씬:부:2
  -얼씬거리다:동:3
  -얼씬하다:동:1
  -얼어붙다:동:25
  -얼얼하다:형:2
  -얼얼해지다:동:2
  +얼씬거리:동:3
  +얼씬하:동:1
  +얼어붙:동:25
  +얼얼하:형:2
  +얼얼해지:동:2
   얼음:명:56
   얼음과자:명:1
   얼음꽃:명:1
  @@ -33618,80 +33618,80 @@
   얼음장:명:7
   얼음주머니:명:3
   얼음판:명:1
  -얼쩡거리다:동:3
  +얼쩡거리:동:3
   얼차려:명:1
   얼추:부:2
   얼치기:명:4
  -얼크러지다:동:2
  -얼큰하다:형:5
  +얼크러지:동:2
  +얼큰하:형:5
   얼큰히:부:1
  -얼키설키하다:형:1
  -얼토당토않다:형:2
  +얼키설키하:형:1
  +얼토당토않:형:2
   얼핏:부:68
   얼핏얼핏:부:2
  -얽다:동:4
  -얽매다:동:2
  -얽매이다:동:19
  -얽어매다:동:6
  -얽어매여지다:동:1
  -얽히고설키다:동:3
  -얽히다:동:56
  +얽:동:4
  +얽매:동:2
  +얽매이:동:19
  +얽어매:동:6
  +얽어매여지:동:1
  +얽히고설키:동:3
  +얽히:동:56
   엄격성:명:4
  -엄격하다:형:86
  -엄격해지다:동:1
  +엄격하:형:86
  +엄격해지:동:1
   엄격히:부:13
  -엄금하다:동:1
  +엄금하:동:1
   엄니:명:13
   엄단:명:1
  -엄단되다:동:1
  -엄단하다:동:3
  +엄단되:동:1
  +엄단하:동:3
   엄동:명:1
   엄동설한:명:2
   엄두:명:27
   엄마:명:813
   엄명:명:1
  -엄명하다:동:1
  +엄명하:동:1
   엄밀성:명:4
  -엄밀하다:형:16
  +엄밀하:형:16
   엄밀히:부:11
   엄벌:명:1
  -엄벌하다:동:2
  +엄벌하:동:2
   엄부자모:명:1
   엄살:명:9
  -엄살떨다:동:1
  +엄살떨:동:1
   엄선:명:2
  -엄선되다:동:1
  -엄선하다:동:1
  +엄선되:동:1
  +엄선하:동:1
   엄숙성:명:1
   엄숙주의:명:3
   엄숙주의적:관:1
  -엄숙하다:형:29
  +엄숙하:형:29
   엄숙히:부:1
  -엄습하다:동:5
  -엄연하다:형:15
  +엄습하:동:5
  +엄연하:형:15
   엄연히:부:19
   엄장:명:1
   엄정:명:3
   엄정중립:명:3
  -엄정하다:형:21
  +엄정하:형:21
   엄정히:부:3
  -엄존하다:동:2
  +엄존하:동:2
   엄중:명:7
  -엄중하다:형:14
  +엄중하:형:14
   엄중히:부:5
   엄지:명:14
   엄지발가락:명:7
   엄지손가락:명:20
   엄지손톱:명:1
   엄청:부:12
  -엄청나다:형:240
  +엄청나:형:240
   엄포:명:13
  -엄하다:형:21
  +엄하:형:21
   엄히:부:2
   업:명:8
   업계:명:102
   업그레이드:명:1
  -업다:동:50
  +업:동:50
   업둥이:명:1
   업무:명:207
   업무량:명:1
  @@ -33699,66 +33699,66 @@
   업무적:명:1
   업보:명:4
   업소:명:55
  -업수이여기다:동:2
  -업신여기다:동:13
  +업수이여기:동:2
  +업신여기:동:13
   업자:명:17
   업적:명:74
   업종:명:81
   업주:명:18
   업체:명:204
  -업히다:동:11
  -없다:형:8,969
  -없애다:동:114
  -없어지다:동:216
  -없어하다:동:2
  -없이:부:1,103
  -없이하다:동:1
  +업히:동:11
  +없:형:8969
  +없애:동:114
  +없어지:동:216
  +없어하:동:2
  +없이:부:1103
  +없이하:동:1
   엇:불:3
  -엇가다:동:1
  +엇가:동:1
   엇각:명:1
  -엇갈리다:동:32
  -엇물리다:동:1
  -엇비슷하다:형:4
  +엇갈리:동:32
  +엇물리:동:1
  +엇비슷하:형:4
   엇쭈:부:1
   엉:감:10
   엉거주춤:부:8
  -엉거주춤거리다:동:1
  -엉거주춤하다:동:1
  -엉거주춤하다:형:1
  +엉거주춤거리:동:1
  +엉거주춤하:동:1
  +엉거주춤하:형:1
   엉겁결에:부:5
   엉겅퀴:명:1
  -엉구다:동:1
  +엉구:동:1
   엉금엉금:부:5
  -엉기다:동:16
  +엉기:동:16
   엉너리:명:1
   엉너릿손:명:1
   엉덩배지기:명:1
   엉덩이:명:64
   엉덩짝:명:1
  -엉뚱하다:형:72
  +엉뚱하:형:72
   엉망:명:34
   엉망진창:명:3
  -엉성하다:형:10
  +엉성하:형:10
   엉엉:감:1
   엉엉:부:9
  -엉이없다:형:1
  -엉클어지다:동:1
  -엉큼하다:형:5
  -엉키다:동:12
  +엉이없:형:1
  +엉클어지:동:1
  +엉큼하:형:5
  +엉키:동:12
   엉터리:명:23
   엊그제:명:6
   엊그제:부:17
   엊저녁:명:1
  -엎다:동:8
  -엎드러지다:동:1
  +엎:동:8
  +엎드러지:동:1
   엎드려뛰기:명:2
   엎드려뻗쳐:명:1
  -엎드리다:동:54
  -엎어지다:동:13
  -엎지르다:동:3
  -엎질러지다:동:2
  -엎치다:동:4
  -엎치락뒤치락하다:동:2
  +엎드리:동:54
  +엎어지:동:13
  +엎지르:동:3
  +엎질러지:동:2
  +엎치:동:4
  +엎치락뒤치락하:동:2
   에:감:59
   에고:명:2
   에구:감:3
  @@ -33773,26 +33773,26 @@
   에너지난:명:1
   에너지부:명:2
   에너지원:명:9
  -에너지화하다:동:1
  +에너지화하:동:1
   에네르기:명:5
   에누리:명:2
  -에두르다:동:2
  +에두르:동:2
   에라:감:7
   에러:명:1
   에렉투스:명:2
  -에렵다:형:1
  +에렵:형:1
   에로:명:10
   에로물:명:2
   에로스:명:6
   에로티시즘:명:3
  -에로틱하다:형:1
  +에로틱하:형:1
   에멘탈:명:3
   에모리엔트:명:1
   에뮬레이션:명:2
   에뮬레이터:명:2
   에미:명:1
   에미나이:명:5
  -에부수수하다:형:1
  +에부수수하:형:1
   에브리바디:명:1
   에세이:명:12
   에세이스트:명:2
  @@ -33807,7 +33807,7 @@
   에스컬레이터:명:6
   에스케이프:명:1
   에스코트:명:1
  -에스코트하다:동:2
  +에스코트하:동:2
   에스트로겐:명:3
   에스티:명:1
   에스프레소:명:6
  @@ -33821,9 +33821,9 @@
   에어백깅:명:4
   에어컨:명:24
   에에:감:1
  -에우다:동:1
  -에워싸다:동:10
  -에워싸이다:동:4
  +에우:동:1
  +에워싸:동:10
  +에워싸이:동:4
   에이:감:16
   에이:명:11
   에이:명:6
  @@ -33868,7 +33868,7 @@
   에헤:감:1
   에헤헤:부:1
   에헴:감:1
  -에후리치다:동:1
  +에후리치:동:1
   엑스:명:16
   엑스:명:5
   엑스레이:명:6
  @@ -33880,7 +33880,7 @@
   엑스포:명:44
   엔:명:6
   엔:의:44
  -엔간하다:형:1
  +엔간하:형:1
   엔고:명:9
   엔다카:명:1
   엔드:명:1
  @@ -33902,7 +33902,7 @@
   엘디:명:7
   엘디엘:명:1
   엘레간트:명:1
  -엘레간트하다:형:1
  +엘레간트하:형:1
   엘리민트:명:2
   엘리베이터:명:39
   엘리트:명:19
  @@ -33938,13 +33938,13 @@
   여가수:명:4
   여각:명:2
   여간:부:48
  -여간하다:형:5
  +여간하:형:5
   여감방:명:1
   여객:명:7
   여객기:명:6
   여객선:명:6
   여건:명:99
  -여겨지다:동:94
  +여겨지:동:94
   여경:명:1
   여경찰관:명:1
   여고:명:7
  @@ -33953,8 +33953,8 @@
   여공:명:7
   여과:명:7
   여과기:명:1
  -여과되다:동:2
  -여과시키다:동:1
  +여과되:동:2
  +여과시키:동:1
   여과제:명:5
   여관:명:34
   여관방:명:7
  @@ -33970,8 +33970,8 @@
   여권주의자:명:1
   여그:대:2
   여급:명:2
  -여기:대:1,221
  -여기다:동:212
  +여기:대:1221
  +여기:동:212
   여기저기:명:105
   여깄:불:3
   여뀌:명:1
  @@ -33982,7 +33982,7 @@
   여느:관:37
   여단:명:11
   여단원:명:1
  -여닫다:동:3
  +여닫:동:3
   여담:명:1
   여당:명:93
   여대:명:1
  @@ -34000,7 +34000,7 @@
   여드름투성이:명:1
   여든:관:3
   여든:수:10
  -여러:관:1,348
  +여러:관:1348
   여러모로:부:15
   여러분:대:178
   여러해살이:명:4
  @@ -34010,7 +34010,7 @@
   여로:명:1
   여로:명:2
   여론:명:111
  -여론화되다:동:2
  +여론화되:동:2
   여류:명:11
   여름:명:283
   여름날:명:12
  @@ -34020,16 +34020,16 @@
   여름철:명:53
   여름털:명:3
   여름휴가:명:4
  -여리다:형:9
  +여리:형:9
   여말:명:1
   여망:명:5
  -여며지다:동:2
  +여며지:동:2
   여명:명:4
   여문모:명:1
   여물:명:2
  -여물다:동:7
  -여물다:형:1
  -여미다:동:15
  +여물:동:7
  +여물:형:1
  +여미:동:15
   여배우:명:3
   여백:명:6
   여벌:명:1
  @@ -34044,7 +34044,7 @@
   여봐라:감:4
   여봐란듯이:부:2
   여부:명:194
  -여북하다:형:2
  +여북하:형:2
   여분:명:12
   여비:명:3
   여사:명:74
  @@ -34060,21 +34060,21 @@
   여섯일곱:수:1
   여섯째:관:2
   여섯째:수:1
  -여성:명:1,212
  +여성:명:1212
   여성계:명:5
   여성관:명:5
   여성부:명:1
   여성부장:명:1
   여성상:명:11
  -여성스럽다:형:8
  +여성스럽:형:8
   여성적:명:8
   여성층:명:9
   여성학:명:1
   여성형:명:2
  -여성화되다:동:1
  +여성화되:동:1
   여세:명:1
   여소야대:명:3
  -여수하다:동:1
  +여수하:동:1
   여승:명:1
   여시:명:3
   여식:명:1
  @@ -34093,25 +34093,25 @@
   여우놀이:명:1
   여운:명:8
   여울:명:2
  -여울지다:동:1
  -여위다:동:4
  +여울지:동:1
  +여위:동:4
   여유:명:110
   여유감:명:1
  -여유로워지다:동:1
  -여유롭다:형:7
  +여유로워지:동:1
  +여유롭:형:7
   여유미:명:4
   여유분:명:3
  -여의다:동:4
  +여의:동:4
   여의사:명:1
   여의사:명:2
   여의주:명:3
  -여의찮다:형:1
  -여의하다:형:9
  +여의찮:형:1
  +여의하:형:9
   여인:명:105
   여인네:명:1
   여인상:명:2
   여인숙:명:9
  -여자:명:1,645
  +여자:명:1645
   여자관계:명:1
   여자부:명:11
   여자형:명:1
  @@ -34121,7 +34121,7 @@
   여적지:부:1
   여전:명:1
   여전도회:명:2
  -여전하다:형:21
  +여전하:형:21
   여전히:부:268
   여정:명:1
   여정:명:8
  @@ -34134,16 +34134,16 @@
   여지:명:8
   여지:의:35
   여지껏:부:14
  -여지없다:형:1
  +여지없:형:1
   여지없이:부:17
   여직원:명:15
   여진:명:1
  -여쭈다:동:34
  -여쭙다:동:4
  +여쭈:동:34
  +여쭙:동:4
   여차:감:2
   여차장:명:2
  -여차저차하다:동:1
  -여차하다:동:7
  +여차저차하:동:1
  +여차하:동:7
   여체:명:3
   여초:명:2
   여치:명:1
  @@ -34151,15 +34151,15 @@
   여탕:명:11
   여태:부:41
   여태껏:부:7
  -여투다:동:2
  +여투:동:2
   여파:명:16
   여판사:명:2
   여편네:명:21
   여하:명:9
   여하간:부:2
  -여하다:형:2
  +여하:형:2
   여하튼:부:11
  -여하하다:형:4
  +여하하:형:4
   여학교:명:2
   여학생:명:62
   여학생회:명:1
  @@ -34178,11 +34178,11 @@
   여행원:명:1
   여행자:명:14
   여행지:명:3
  -여행하다:동:30
  +여행하:동:30
   여형사:명:1
   여화가:명:1
   여흥:명:1
  -여희다:동:1
  +여희:동:1
   역:명:11
   역:명:11
   역:명:136
  @@ -34190,7 +34190,7 @@
   역:명:2
   역:명:48
   역가:명:1
  -역겹다:형:19
  +역겹:형:19
   역경:명:7
   역공:명:2
   역관계:명:1
  @@ -34211,14 +34211,14 @@
   역동성:명:6
   역동적:관:1
   역동적:명:6
  -역동하다:동:1
  +역동하:동:1
   역량:명:41
   역려:명:1
  -역력하다:형:18
  +역력하:형:18
   역력히:부:3
   역류:명:4
  -역류되다:동:2
  -역류하다:동:1
  +역류되:동:2
  +역류하:동:1
   역마살:명:1
   역무실:명:1
   역무원:명:10
  @@ -34227,7 +34227,7 @@
   역본:명:1
   역부족:명:10
   역분전:명:3
  -역분해하다:동:1
  +역분해하:동:1
   역사:명:13
   역사:명:3
   역사:명:7
  @@ -34249,8 +34249,8 @@
   역사학과:명:1
   역사학자:명:10
   역사학적:명:1
  -역사화되다:동:1
  -역산하다:동:1
  +역사화되:동:1
  +역산하:동:1
   역살:명:1
   역서:명:1
   역서:명:1
  @@ -34258,27 +34258,27 @@
   역설:명:1
   역설:명:20
   역설적:명:19
  -역설하다:동:30
  +역설하:동:30
   역성:명:3
  -역성들다:동:1
  +역성들:동:1
   역성혁명:명:1
   역세권:명:1
  -역수출되다:동:1
  +역수출되:동:1
   역순:명:2
   역술:명:2
   역습:명:5
  -역습하다:동:1
  +역습하:동:1
   역승화:명:2
   역시:접:617
   역역:명:6
  -역연하다:형:1
  +역연하:형:1
   역연히:부:1
   역외국:명:1
  -역이용하다:동:1
  +역이용하:동:1
   역인:명:2
   역일:명:1
   역임:명:2
  -역임하다:동:10
  +역임하:동:10
   역작:명:1
   역작용:명:1
   역장:명:6
  @@ -34286,10 +34286,10 @@
   역전:명:12
   역전:명:2
   역전:명:2
  -역전되다:동:1
  +역전되:동:1
   역전승:명:3
  -역전승하다:동:2
  -역전시키다:동:3
  +역전승하:동:2
  +역전시키:동:3
   역전패:명:1
   역점:명:1
   역점:명:26
  @@ -34300,11 +34300,11 @@
   역증:명:1
   역질:명:1
   역촌:명:1
  -역추적하다:동:1
  +역추적하:동:1
   역컴파일:명:1
   역풍:명:2
   역피라미드:명:1
  -역하다:형:2
  +역하:형:2
   역학:명:1
   역학:명:5
   역학:명:50
  @@ -34317,13 +34317,13 @@
   역행:명:1
   역행적:관:1
   역행적:명:1
  -역행하다:동:9
  +역행하:동:9
   역효과:명:4
  -엮다:동:32
  -엮어지다:동:6
  +엮:동:32
  +엮어지:동:6
   엮은이:명:1
   엮음:명:5
  -엮이다:동:1
  +엮이:동:1
   연:관:4
   연:명:1
   연:명:1
  @@ -34338,16 +34338,16 @@
   연건평:명:4
   연겨자:명:2
   연결:명:44
  -연결되다:동:98
  +연결되:동:98
   연결망:명:1
   연결선:명:1
  -연결시키다:동:28
  -연결하다:동:92
  +연결시키:동:28
  +연결하:동:92
   연계:명:14
  -연계되다:동:9
  +연계되:동:9
   연계성:명:1
  -연계시키다:동:11
  -연계하다:동:5
  +연계시키:동:11
  +연계하:동:5
   연고:명:1
   연고:명:8
   연고권:명:4
  @@ -34356,17 +34356,17 @@
   연공서열:명:1
   연관:명:2
   연관:명:44
  -연관되다:동:23
  +연관되:동:23
   연관성:명:9
  -연관시키다:동:2
  +연관시키:동:2
   연교차:명:2
   연구:명:816
   연구:부:1
   연구가:명:6
   연구과:명:2
   연구관:명:5
  -연구되다:동:10
  -연구되어지다:동:1
  +연구되:동:10
  +연구되어지:동:1
   연구부:명:3
   연구부장:명:1
   연구비:명:5
  @@ -34383,7 +34383,7 @@
   연구자:명:93
   연구직:명:2
   연구진:명:2
  -연구하다:동:146
  +연구하:동:146
   연구학:명:1
   연구회:명:9
   연극:명:391
  @@ -34402,29 +34402,29 @@
   연극패:명:1
   연극학과:명:1
   연극학자:명:1
  -연극화하다:동:1
  +연극화하:동:1
   연금:명:6
   연금:명:9
  -연금되다:동:1
  +연금되:동:1
   연금술:명:1
   연금술적:관:1
   연기:명:131
   연기:명:18
   연기:명:27
   연기:명:91
  -연기되다:동:17
  +연기되:동:17
   연기력:명:13
  -연기받다:동:1
  +연기받:동:1
   연기법:명:1
   연기상:명:3
   연기설:명:1
   연기설:명:3
  -연기시키다:동:1
  +연기시키:동:1
   연기인:명:1
   연기자:명:93
   연기파:명:2
  -연기하다:동:11
  -연기하다:동:19
  +연기하:동:11
  +연기하:동:19
   연꽃:명:12
   연꽃무늬:명:7
   연꽃형:명:1
  @@ -34432,7 +34432,7 @@
   연내:명:4
   연놈:명:2
   연단:명:1
  -연달다:동:10
  +연달:동:10
   연대:명:16
   연대:명:41
   연대:명:6
  @@ -34445,7 +34445,7 @@
   연대장:명:7
   연대장실:명:1
   연대적:명:1
  -연대하다:동:11
  +연대하:동:11
   연도:명:20
   연도:명:4
   연동:명:3
  @@ -34457,26 +34457,26 @@
   연등:명:1
   연등회:명:1
   연락:명:95
  -연락드리다:동:2
  +연락드리:동:2
   연락망:명:3
  -연락받다:동:2
  +연락받:동:2
   연락병:명:1
   연락부:명:1
   연락선:명:1
   연락책:명:1
   연락처:명:8
  -연락하다:동:48
  +연락하:동:48
   연령:명:42
   연령층:명:12
   연례:명:3
   연례적:명:3
   연례행사:명:2
  -연로하다:형:2
  +연로하:형:2
   연료:명:46
   연료유:명:2
   연루:명:3
  -연루되다:동:4
  -연루시키다:동:1
  +연루되:동:4
  +연루시키:동:1
   연루자:명:1
   연륜:명:9
   연리:명:1
  @@ -34484,8 +34484,8 @@
   연마:명:1
   연마기:명:5
   연마장:명:1
  -연마하다:동:3
  -연만하다:형:1
  +연마하:동:3
  +연만하:형:1
   연말:명:66
   연말연시:명:2
   연맹:명:54
  @@ -34495,8 +34495,8 @@
   연면:명:1
   연면적:명:5
   연명:명:1
  -연명되다:동:1
  -연명하다:동:10
  +연명되:동:1
  +연명하:동:10
   연모:명:1
   연모:명:3
   연못:명:39
  @@ -34505,7 +34505,7 @@
   연무대:명:2
   연민:명:18
   연발:명:2
  -연발하다:동:12
  +연발하:동:12
   연밥:명:1
   연방:명:59
   연방:부:8
  @@ -34531,13 +34531,13 @@
   연산:명:23
   연산:명:5
   연산기:명:1
  -연산하다:동:2
  +연산하:동:2
   연상:명:11
   연상:명:13
  -연상되다:동:12
  -연상시키다:동:18
  +연상되:동:12
  +연상시키:동:18
   연상차:명:3
  -연상하다:동:29
  +연상하:동:29
   연서:명:1
   연서:명:3
   연석회의:명:5
  @@ -34545,7 +34545,7 @@
   연설문:명:8
   연설자:명:2
   연설조:명:1
  -연설하다:동:1
  +연설하:동:1
   연설회:명:9
   연설회장:명:4
   연성:명:1
  @@ -34553,19 +34553,19 @@
   연성화:명:1
   연세:명:8
   연소:명:1
  -연소되다:동:3
  -연소하다:동:1
  +연소되:동:3
  +연소하:동:1
   연속:명:1
   연속:명:61
   연속극:명:19
  -연속되다:동:5
  +연속되:동:5
   연속선:명:2
   연속설:명:2
   연속성:명:13
   연속적:관:1
   연속적:명:21
   연속체:명:1
  -연속하다:동:6
  +연속하:동:6
   연쇄:명:29
   연쇄적:관:2
   연쇄적:명:2
  @@ -34586,15 +34586,15 @@
   연습기:명:1
   연습량:명:1
   연습생:명:1
  -연습시키다:동:2
  +연습시키:동:2
   연습실:명:14
   연습용:명:1
   연습장:명:5
   연습장:명:9
   연습장지:명:1
  -연습하다:동:34
  +연습하:동:34
   연승:명:10
  -연승하다:동:1
  +연승하:동:1
   연시:명:1
   연신:부:24
   연안:명:29
  @@ -34604,15 +34604,15 @@
   연애시:명:1
   연애지상주의자:명:1
   연애편지:명:3
  -연애하다:동:8
  -연약하다:형:14
  +연애하:동:8
  +연약하:형:14
   연어:명:1
   연어:명:5
   연역:명:6
  -연역되다:동:2
  +연역되:동:2
   연역적:관:1
  -연역하다:동:1
  -연연하다:동:3
  +연역하:동:1
  +연연하:동:3
   연영과:명:1
   연예:명:2
   연예가:명:1
  @@ -34620,39 +34620,39 @@
   연예인:명:57
   연오렌지:명:1
   연원:명:3
  -연원하다:동:1
  +연원하:동:1
   연유:명:9
  -연유되다:동:3
  -연유하다:동:18
  +연유되:동:3
  +연유하:동:18
   연이틀:명:2
   연인:명:33
   연인원:명:1
   연일:명:21
   연임:명:1
  -연임하다:동:3
  -연잇다:동:10
  +연임하:동:3
  +연잇:동:10
   연자방아:명:2
   연작:명:2
   연작:명:9
   연장:명:20
   연장:명:33
   연장감:명:1
  -연장되다:동:13
  -연장받다:동:1
  +연장되:동:13
  +연장받:동:1
   연장선:명:8
  -연장시키다:동:4
  +연장시키:동:4
   연장자:명:2
   연장전:명:1
  -연장하다:동:9
  +연장하:동:9
   연재:명:1
  -연재되다:동:2
  +연재되:동:2
   연재소설:명:1
  -연재하다:동:2
  +연재하:동:2
   연적:명:1
   연적:명:2
   연정:명:1
   연정:명:11
  -연정하다:동:1
  +연정하:동:1
   연좌:명:1
   연좌시위:명:1
   연좌차:명:3
  @@ -34660,13 +34660,13 @@
   연주:명:31
   연주가:명:6
   연주곡:명:2
  -연주되다:동:1
  +연주되:동:1
   연주법:명:1
   연주소:명:2
   연주인:명:7
   연주자:명:11
  -연주하다:동:1
  -연주하다:동:18
  +연주하:동:1
  +연주하:동:18
   연주회:명:13
   연줄:명:2
   연줄:명:2
  @@ -34679,8 +34679,8 @@
   연차적:명:2
   연착:명:4
   연착륙:명:2
  -연착륙시키다:동:1
  -연착하다:동:1
  +연착륙시키:동:1
  +연착하:동:1
   연찬:명:1
   연천계:명:3
   연철:명:1
  @@ -34692,7 +34692,7 @@
   연초록:명:1
   연출:명:81
   연출가:명:19
  -연출되다:동:6
  +연출되:동:6
   연출력:명:1
   연출상:명:1
   연출선:명:1
  @@ -34700,7 +34700,7 @@
   연출작:명:1
   연출적:명:1
   연출진:명:1
  -연출하다:동:34
  +연출하:동:34
   연층:명:1
   연치:명:1
   연타:명:1
  @@ -34723,8 +34723,8 @@
   연필심:명:2
   연하:명:1
   연하:명:4
  -연하다:동:2
  -연하다:형:23
  +연하:동:2
  +연하:형:23
   연하장:명:1
   연한:명:8
   연합:명:80
  @@ -34735,17 +34735,17 @@
   연합체:명:2
   연합체적:명:1
   연합통신:명:3
  -연합하다:동:3
  +연합하:동:3
   연합회:명:18
   연해:명:2
  -연해지다:동:2
  +연해지:동:2
   연행:명:1
   연행:명:31
  -연행되다:동:21
  -연행하다:동:12
  +연행되:동:21
  +연행하:동:12
   연형:명:1
   연호:명:18
  -연호하다:동:2
  +연호하:동:2
   연화:명:1
   연화대:명:1
   연화부수형:명:1
  @@ -34763,23 +34763,23 @@
   열:수:17
   열강:명:7
   열거:명:3
  -열거되다:동:4
  -열거하다:동:14
  +열거되:동:4
  +열거하:동:14
   열고:명:1
   열광:명:2
  -열광시키다:동:1
  +열광시키:동:1
   열광적:명:8
  -열광하다:동:6
  +열광하:동:6
   열기:명:41
  -열나다:동:1
  +열나:동:1
   열나흘:수:1
   열나흘날:명:1
   열네:관:6
   열넷:수:1
   열녀:명:8
   열녀상:명:1
  -열다:동:2
  -열다:동:658
  +열:동:2
  +열:동:658
   열다섯:관:8
   열다섯:수:2
   열대:명:26
  @@ -34790,7 +34790,7 @@
   열댓:관:3
   열댓:수:1
   열도:명:1
  -열독하다:동:1
  +열독하:동:1
   열두:관:50
   열두서너:관:2
   열두어:관:2
  @@ -34800,32 +34800,32 @@
   열등생:명:6
   열등성:명:16
   열등의식:명:4
  -열등하다:형:32
  -열띠다:형:12
  +열등하:형:32
  +열띠:형:12
   열람:명:2
   열람권:명:3
   열람실:명:4
  -열람하다:동:7
  +열람하:동:7
   열량:명:11
  -열려지다:동:15
  +열려지:동:15
   열렬:명:1
  -열렬하다:형:17
  +열렬하:형:17
   열렬히:부:2
  -열리다:동:15
  -열리다:동:459
  +열리:동:15
  +열리:동:459
   열린사회:명:1
   열망:명:13
  -열망하다:동:8
  +열망하:동:8
   열매:명:56
   열명:명:1
   열무:명:3
   열무김치:명:1
   열반:명:18
   열반적정:명:1
  -열반하다:동:2
  +열반하:동:2
   열변:명:5
   열병:명:3
  -열병하다:동:1
  +열병하:동:1
   열부:명:1
   열불:명:3
   열사:명:1
  @@ -34849,13 +34849,13 @@
   열십자:명:1
   열아홉:관:6
   열아홉:수:17
  -열악하다:형:24
  +열악하:형:24
   열애:명:1
  -열애하다:동:1
  +열애하:동:1
   열약:명:1
  -열어젖혀지다:동:1
  -열어젖히다:동:13
  -열없다:형:1
  +열어젖혀지:동:1
  +열어젖히:동:13
  +열없:형:1
   열에너지:명:3
   열여덟:관:4
   열여덟:수:4
  @@ -34864,7 +34864,7 @@
   열여섯:수:10
   열역학:명:1
   열연:명:5
  -열연하다:동:5
  +열연하:동:5
   열외:명:2
   열외자:명:1
   열위:명:1
  @@ -34872,22 +34872,22 @@
   열이틀:명:5
   열일곱:관:2
   열일곱:수:5
  -열적다:형:2
  +열적:형:2
   열전:명:22
   열전도성:명:1
   열정:명:46
   열정적:명:8
   열주식:명:1
   열중:명:1
  -열중하다:동:34
  +열중하:동:34
   열증:명:1
   열차:명:82
   열차관:명:1
   열창:명:2
  -열창하다:동:2
  +열창하:동:2
   열처리:명:1
  -열치다:동:1
  -열치다:동:1
  +열치:동:1
  +열치:동:1
   열통:명:1
   열판:명:1
   열패감:명:1
  @@ -34899,8 +34899,8 @@
   열화:명:3
   열흘:명:33
   열흘치:명:1
  -엷다:형:32
  -엷어지다:동:3
  +엷:형:32
  +엷어지:동:3
   염:명:23
   염:명:9
   염가:명:4
  @@ -34911,34 +34911,34 @@
   염낭쌈지:명:1
   염두:명:40
   염려:명:54
  -염려되다:동:4
  -염려스러워하다:동:1
  -염려스럽다:형:5
  +염려되:동:4
  +염려스러워하:동:1
  +염려스럽:형:5
   염려증:명:2
  -염려하다:동:24
  +염려하:동:24
   염료:명:3
   염류:명:5
   염문:명:1
   염문설:명:1
   염병:명:1
  -염병하다:동:1
  +염병하:동:1
   염병할:감:2
   염병할:관:1
   염분:명:3
   염불:명:8
  -염불하다:동:1
  +염불하:동:1
   염산:명:12
   염색:명:10
  -염색되다:동:2
  +염색되:동:2
   염색업체:명:1
   염색체:명:12
  -염색하다:동:5
  +염색하:동:5
   염세주의:명:1
   염소:명:16
   염소:명:5
   염알이꾼:명:1
   염원:명:18
  -염원하다:동:3
  +염원하:동:3
   염전:명:1
   염전:명:5
   염정무이:명:1
  @@ -34950,12 +34950,12 @@
   염증:명:7
   염천:명:1
   염초:명:4
  -염출하다:동:1
  +염출하:동:1
   염치:명:5
  -염치없다:형:1
  +염치없:형:1
   염치없이:부:2
  -염탐하다:동:2
  -염하다:동:2
  +염탐하:동:2
  +염하:동:2
   염화:명:1
   염화나트륨:명:1
   염화시중:명:1
  @@ -34971,9 +34971,9 @@
   엽차:명:6
   엽총:명:2
   엿:명:9
  -엿듣다:동:5
  -엿보다:동:51
  -엿보이다:동:25
  +엿듣:동:5
  +엿보:동:51
  +엿보이:동:25
   엿새:명:5
   엿장수:명:3
   엿판:명:1
  @@ -34989,7 +34989,7 @@
   영감님:명:13
   영감마님:명:4
   영감탱이:명:2
  -영거하다:동:2
  +영거하:동:2
   영겁:명:1
   영결식:명:1
   영계:명:3
  @@ -34999,31 +34999,31 @@
   영공:명:5
   영관:명:3
   영광:명:40
  -영광되다:동:1
  -영광스럽다:형:3
  +영광되:동:1
  +영광스럽:형:3
   영교:명:1
   영구:명:10
   영구불변:명:1
   영구적:관:1
   영구차:명:2
   영구화:명:1
  -영구화하다:동:1
  +영구화하:동:1
   영구히:부:3
  -영글다:동:4
  +영글:동:4
   영남:명:21
   영내:명:1
   영내:명:5
   영농:명:21
   영농비:명:3
  -영도하다:동:1
  +영도하:동:1
   영동:명:8
  -영락없다:형:3
  +영락없:형:3
   영락없이:부:7
   영령:명:3
  -영롱하다:형:11
  +영롱하:형:11
   영리:명:8
   영리적:명:1
  -영리하다:형:6
  +영리하:형:6
   영목:명:2
   영문:명:1
   영문:명:23
  @@ -35033,7 +35033,7 @@
   영문학:명:9
   영문학과:명:1
   영문학자:명:1
  -영민하다:형:2
  +영민하:형:2
   영법:명:7
   영빈관:명:8
   영사:명:12
  @@ -35045,7 +35045,7 @@
   영상미:명:1
   영상회:명:1
   영생:명:4
  -영생하다:동:1
  +영생하:동:1
   영서:명:3
   영선공:명:2
   영성:명:11
  @@ -35055,9 +35055,9 @@
   영세:명:3
   영세민:명:4
   영세업자:명:1
  -영세하다:형:3
  +영세하:형:3
   영속:명:1
  -영속시키다:동:1
  +영속시키:동:1
   영속적:명:3
   영수:명:3
   영수증:명:14
  @@ -35068,8 +35068,8 @@
   영아:명:1
   영아기:명:1
   영악:명:1
  -영악스럽다:형:1
  -영악하다:형:11
  +영악스럽:형:1
  +영악하:형:11
   영안실:명:10
   영약:명:2
   영양:명:101
  @@ -35097,11 +35097,11 @@
   영업소:명:4
   영업소장:명:2
   영업시간:명:2
  -영업시키다:동:1
  +영업시키:동:1
   영업용:명:3
   영업전:명:3
   영업직:명:1
  -영업하다:동:4
  +영업하:동:4
   영역:명:171
   영역권:명:1
   영역성:명:1
  @@ -35109,30 +35109,30 @@
   영역적:명:2
   영영:부:15
   영예:명:11
  -영예롭다:형:1
  +영예롭:형:1
   영욕:명:2
   영웅:명:34
   영웅담:명:1
  -영웅시되다:동:1
  -영웅시하다:동:1
  +영웅시되:동:1
  +영웅시하:동:1
   영웅심:명:5
   영웅적:관:1
   영웅적:명:3
   영원:명:9
  -영원불멸하다:동:2
  -영원불변하다:동:1
  +영원불멸하:동:2
  +영원불변하:동:1
   영원성:명:1
  -영원하다:형:71
  +영원하:형:71
   영원히:부:57
  -영위하다:동:17
  +영위하:동:17
   영유:명:1
   영유권:명:4
  -영유하다:동:1
  +영유하:동:1
   영의정:명:2
  -영인되다:동:1
  +영인되:동:1
   영입:명:7
  -영입되다:동:1
  -영입하다:동:6
  +영입되:동:1
  +영입하:동:6
   영자:명:1
   영자지:명:1
   영장:명:5
  @@ -35142,7 +35142,7 @@
   영적:관:12
   영적:명:2
   영전:명:1
  -영전하다:동:1
  +영전하:동:1
   영접:명:4
   영정:명:12
   영주:명:14
  @@ -35163,21 +35163,21 @@
   영토:명:47
   영토적:관:1
   영토적:명:1
  -영특하다:형:3
  +영특하:형:3
   영포:명:1
   영하:명:37
   영한사전:명:1
   영합적:명:1
  -영합하다:동:8
  +영합하:동:8
   영해:명:3
   영향:명:446
   영향권:명:5
   영향력:명:48
  -영향받다:동:7
  +영향받:동:7
   영험자:명:1
  -영험하다:형:3
  +영험하:형:3
   영혼:명:83
  -영혼스럽다:형:1
  +영혼스럽:형:1
   영화:명:565
   영화:명:7
   영화가:명:1
  @@ -35186,7 +35186,7 @@
   영화과:명:2
   영화관:명:13
   영화광:명:1
  -영화롭다:형:3
  +영화롭:형:3
   영화배우:명:20
   영화사:명:5
   영화업:명:1
  @@ -35197,9 +35197,9 @@
   영화제:명:52
   영화판:명:2
   영화형:명:1
  -영화화하다:동:4
  -옅다:형:8
  -옅어지다:동:1
  +영화화하:동:4
  +옅:형:8
  +옅어지:동:1
   옆:명:457
   옆구리:명:37
   옆길:명:1
  @@ -35218,26 +35218,26 @@
   예:명:451
   예:명:62
   예감:명:50
  -예감하다:동:7
  +예감하:동:7
   예견:명:2
  -예견되다:동:8
  +예견되:동:8
   예견적:관:1
  -예견하다:동:9
  +예견하:동:9
   예결:명:2
   예고:명:1
   예고:명:16
  -예고되다:동:4
  +예고되:동:4
   예고제:명:1
   예고편:명:4
  -예고하다:동:30
  +예고하:동:30
   예규:명:1
   예금:명:109
   예금계:명:1
   예금액:명:1
   예금자:명:4
   예금주:명:6
  -예금하다:동:6
  -예기하다:동:13
  +예금하:동:6
  +예기하:동:13
   예끼:감:1
   예년:명:22
   예농적:관:1
  @@ -35250,38 +35250,38 @@
   예니레:명:1
   예닐곱:관:4
   예닐곱:수:2
  -예다:동:1
  +예:동:1
   예단:명:2
  -예단하다:동:1
  +예단하:동:1
   예대:명:2
   예대:명:3
   예독:명:1
  -예독하다:동:1
  -예리하다:형:15
  +예독하:동:1
  +예리하:형:15
   예매:명:3
  -예매되다:동:1
  -예매하다:동:3
  +예매되:동:1
  +예매하:동:3
   예명:명:5
   예문:명:1
   예문관:명:1
   예물:명:7
   예민:명:1
   예민종:명:2
  -예민하다:형:28
  -예민해지다:동:4
  +예민하:형:28
  +예민해지:동:4
   예방:명:2
   예방:명:62
   예방법:명:1
   예방책:명:4
  -예방하다:동:1
  -예방하다:동:43
  +예방하:동:1
  +예방하:동:43
   예배:명:9
   예배당:명:3
   예배소:명:1
   예배일:명:1
   예법:명:4
   예보:명:22
  -예보하다:동:1
  +예보하:동:1
   예복:명:4
   예복활:명:1
   예불:명:3
  @@ -35296,15 +35296,15 @@
   예비적:관:8
   예비지식:명:1
   예비품:명:2
  -예뻐지다:동:3
  -예뻐하다:동:5
  -예쁘다:형:221
  +예뻐지:동:3
  +예뻐하:동:5
  +예쁘:형:221
   예쁘장스레:부:2
  -예쁘장하다:형:1
  +예쁘장하:형:1
   예사:명:1
   예사:명:12
   예사로:부:7
  -예사롭다:형:19
  +예사롭:형:19
   예사소리:명:1
   예산:명:139
   예산서:명:12
  @@ -35313,20 +35313,20 @@
   예산액:명:1
   예삿일:명:5
   예상:명:79
  -예상되다:동:109
  +예상되:동:109
   예상률:명:1
   예상외:명:14
   예상일:명:1
   예상자:명:2
  -예상하다:동:63
  +예상하:동:63
   예선:명:33
   예속:명:10
  -예속되다:동:6
  +예속되:동:6
   예속민:명:3
  -예속받다:동:1
  +예속받:동:1
   예속상교:명:1
   예속성:명:2
  -예속시키다:동:2
  +예속시키:동:2
   예속적:관:1
   예속적:명:1
   예수교:명:2
  @@ -35364,32 +35364,32 @@
   예술화:명:4
   예스:명:4
   예습:명:3
  -예습하다:동:3
  +예습하:동:3
   예시:명:1
   예시:명:2
  -예시되다:동:2
  +예시되:동:2
   예시적:관:1
  -예시하다:동:4
  +예시하:동:4
   예식:명:5
   예식장:명:8
   예약:명:17
   예약금:명:2
   예약제:명:1
  -예약하다:동:11
  +예약하:동:11
   예언:명:8
  -예언되다:동:1
  +예언되:동:1
   예언서:명:1
   예언자:명:8
   예언적:명:1
  -예언하다:동:7
  -예열하다:동:2
  +예언하:동:7
  +예열하:동:2
   예예:감:5
   예외:명:63
   예외적:명:12
   예우:명:12
  -예우되다:동:2
  -예우받다:동:1
  -예우하다:동:3
  +예우되:동:2
  +예우받:동:1
  +예우하:동:3
   예의:명:48
   예의:명:5
   예의:명:8
  @@ -35402,30 +35402,30 @@
   예정:명:11
   예정:명:222
   예정가:명:1
  -예정되다:동:45
  +예정되:동:45
   예정일:명:18
   예정자:명:10
  -예정하다:동:3
  +예정하:동:3
   예제:명:1
   예증:명:1
  -예증하다:동:1
  +예증하:동:1
   예지:명:1
   예찬:명:5
   예찬론:명:1
   예찬자:명:2
  -예찬하다:동:3
  +예찬하:동:3
   예체능:명:1
   예체능계:명:1
   예측:명:41
  -예측되다:동:10
  -예측하다:동:52
  +예측되:동:10
  +예측하:동:52
   예치:명:1
   예치금:명:5
  -예치되다:동:1
  -예치하다:동:7
  +예치되:동:1
  +예치하:동:7
   예컨대:접:85
   예탁금:명:7
  -예탁되다:동:2
  +예탁되:동:2
   예토:명:1
   예화:명:2
   옐로:명:1
  @@ -35440,7 +35440,7 @@
   옛날이야기:명:18
   옛다:감:1
   옛말:명:13
  -옛말하다:동:1
  +옛말하:동:1
   옛사람:명:2
   옛사랑:명:1
   옛이야기:명:6
  @@ -35452,7 +35452,7 @@
   오:관:56
   오:명:1
   오:수:5
  -오가다:동:60
  +오가:동:60
   오가작통법:명:2
   오가피:명:7
   오갈피나무:명:3
  @@ -35467,19 +35467,19 @@
   오광대:명:2
   오교:명:1
   오구굿:명:1
  -오그라들다:동:3
  -오그라뜨리다:동:1
  +오그라들:동:3
  +오그라뜨리:동:1
   오그락지:명:1
  -오그리다:동:5
  +오그리:동:5
   오글오글:부:2
  -오글오글하다:형:1
  +오글오글하:형:1
   오금:명:11
   오기:명:1
   오기:명:10
   오기:명:3
   오냐:감:15
   오냐오냐:감:3
  -오냐오냐하다:동:1
  +오냐오냐하:동:1
   오너:명:1
   오누이:명:24
   오뉘:명:1
  @@ -35489,10 +35489,10 @@
   오늘날:명:299
   오니:명:4
   오니층:명:1
  -오다:동:3,350
  -오다:보:1,854
  +오:동:3350
  +오다:보:1854
   오다가다:부:1
  -오달지다:형:1
  +오달지:형:1
   오답:명:3
   오대륙:명:1
   오대양:명:4
  @@ -35501,13 +35501,13 @@
   오뎅:명:1
   오도:명:2
   오도독부:명:1
  -오도되다:동:1
  +오도되:동:1
   오도방정:명:2
   오도카니:부:1
  -오도하다:동:1
  -오도하다:동:3
  +오도하:동:1
  +오도하:동:3
   오독:명:5
  -오독하다:동:1
  +오독하:동:1
   오동:명:1
   오동나무:명:9
   오두막:명:7
  @@ -35520,7 +35520,7 @@
   오디오:명:8
   오뚝:부:1
   오뚝이:명:2
  -오뚝하다:형:5
  +오뚝하:형:5
   오라:명:3
   오라기:명:1
   오라버니:명:15
  @@ -35528,22 +35528,22 @@
   오라비:명:5
   오라이:감:2
   오락:명:32
  -오락가락하다:동:4
  +오락가락하:동:4
   오락성:명:1
   오락실:명:7
   오락적:명:2
  -오락하다:동:1
  +오락하:동:1
   오락화:명:4
   오락회:명:1
   오랏줄:명:1
   오랑캐:명:4
   오래:부:227
  -오래가다:동:6
  +오래가:동:6
   오래간만:명:29
  -오래다:형:26
  +오래:형:26
   오래달리기:명:2
   오래도록:부:29
  -오래되다:동:68
  +오래되:동:68
   오래오래:부:9
   오래전:명:99
   오랜:관:183
  @@ -35555,11 +35555,11 @@
   오렌지색:명:4
   오렌지윗수염박쥐:명:1
   오렌지족:명:2
  -오련하다:형:2
  +오련하:형:2
   오련히:부:1
   오로지:부:53
   오롯이:부:2
  -오롯하다:형:1
  +오롯하:형:1
   오류:명:77
   오류투성이:명:1
   오륙백:관:3
  @@ -35567,10 +35567,10 @@
   오륜:명:7
   오르간:명:5
   오르그:명:1
  -오르내리다:동:38
  -오르다:동:500
  +오르내리:동:38
  +오르:동:500
   오르락내리락:부:1
  -오르락내리락하다:동:8
  +오르락내리락하:동:8
   오르막:명:1
   오르막길:명:2
   오른:관:3
  @@ -35585,7 +35585,7 @@
   오리:명:2
   오리:명:25
   오리나무:명:5
  -오리다:동:15
  +오리:동:15
   오리무중:명:2
   오리발:명:3
   오리방풀:명:1
  @@ -35602,32 +35602,32 @@
   오만:관:19
   오만:관:3
   오만:명:13
  -오만불손하다:형:1
  +오만불손하:형:1
   오만상:명:1
  -오만하다:형:8
  -오만해지다:동:1
  +오만하:형:8
  +오만해지:동:1
   오메:감:18
   오메가:명:1
   오명:명:5
   오목:부:8
   오목눈이:명:3
  -오목조목하다:형:1
  +오목조목하:형:1
   오목판화:명:4
  -오목하다:형:3
  +오목하:형:3
   오묘제:명:2
  -오묘하다:형:13
  +오묘하:형:13
   오무룩히:부:1
   오물:명:13
   오물오물:부:1
   오물조물:부:1
  -오므라들다:동:2
  +오므라들:동:2
   오므라이스:명:3
  -오므리다:동:7
  +오므리:동:7
   오믈렛:명:1
   오미:감:4
   오미자:명:1
  -오밀조밀하다:형:7
  -오바이트하다:동:1
  +오밀조밀하:형:7
  +오바이트하:동:1
   오발:명:10
   오밤중:명:1
   오백:관:6
  @@ -35636,15 +35636,15 @@
   오버:감:1
   오버:명:1
   오버래핑:명:1
  -오버랩되다:동:3
  +오버랩되:동:3
   오버코트:명:3
  -오버하다:동:3
  +오버하:동:3
   오버핸드:명:2
   오보에:명:1
   오복:명:2
   오부:명:1
   오붓이:부:1
  -오붓하다:형:4
  +오붓하:형:4
   오브제:명:3
   오브젝트:명:5
   오븐:명:18
  @@ -35655,7 +35655,7 @@
   오색:명:5
   오색구름:명:1
   오색실:명:1
  -오색찬란하다:형:1
  +오색찬란하:형:1
   오석:명:1
   오선지:명:1
   오성:명:6
  @@ -35680,11 +35680,11 @@
   오십사:관:1
   오십오:관:4
   오싹:부:1
  -오싹거리다:동:1
  +오싹거리:동:1
   오싹오싹:부:1
  -오싹오싹하다:동:1
  -오싹하다:형:2
  -오싹해지다:동:3
  +오싹오싹하:동:1
  +오싹하:형:2
  +오싹해지:동:3
   오아시스:명:5
   오악:명:2
   오야붕:명:3
  @@ -35695,17 +35695,17 @@
   오에스:명:6
   오엠아르:명:6
   오열:명:3
  -오열하다:동:2
  +오열하:동:2
   오염:명:188
   오염도:명:7
  -오염되다:동:59
  +오염되:동:59
   오염물:명:3
  -오염시키다:동:35
  +오염시키:동:35
   오염원:명:6
   오염자:명:3
   오염치:명:1
   오욕:명:5
  -오욕되다:동:1
  +오욕되:동:1
   오월:명:224
   오음:명:1
   오음성고:명:1
  @@ -35715,8 +35715,8 @@
   오이소박이:명:1
   오이풀:명:2
   오인:명:1
  -오인되다:동:3
  -오인하다:동:10
  +오인되:동:3
  +오인하:동:10
   오일:명:1
   오일:명:6
   오일륙:명:21
  @@ -35724,7 +35724,7 @@
   오일칠:명:8
   오일팔:명:33
   오입:명:2
  -오입하다:동:1
  +오입하:동:1
   오자:명:1
   오자미:명:2
   오장:명:4
  @@ -35737,18 +35737,18 @@
   오존층:명:32
   오죽:부:8
   오죽이나:부:5
  -오죽하다:형:17
  +오죽하:형:17
   오줌:명:28
   오줌깨:명:1
   오줌장군:명:2
   오지:명:5
   오지게:부:1
  -오지다:형:2
  +오지:형:2
   오지독:명:2
   오지랖:명:6
   오지선다:명:1
   오직:부:102
  -오진하다:동:1
  +오진하:동:1
   오징어:명:94
   오징어잡이:명:20
   오징어포:명:3
  @@ -35762,16 +35762,16 @@
   오케스트라:명:11
   오케이:감:16
   오케이:명:5
  -오케이되다:동:1
  +오케이되:동:1
   오타:명:1
   오토:명:1
   오토메이션:명:1
   오토바이:명:12
   오톨도톨:부:1
  -오톨도톨하다:형:1
  +오톨도톨하:형:1
   오티움:명:2
   오판:명:7
  -오판하다:동:1
  +오판하:동:1
   오팔:명:2
   오퍼랜드:명:1
   오퍼레이터:명:2
  @@ -35784,15 +35784,15 @@
   오프더레코드:명:1
   오픈:명:11
   오픈카:명:1
  -오픈하다:동:6
  +오픈하:동:6
   오피스텔:명:15
   오한:명:6
   오합지졸:명:1
   오해:명:59
  -오해되다:동:4
  -오해받다:동:6
  -오해스럽다:형:1
  -오해하다:동:11
  +오해되:동:4
  +오해받:동:6
  +오해스럽:형:1
  +오해하:동:11
   오행:명:3
   오행설:명:1
   오형:명:1
  @@ -35822,7 +35822,7 @@
   옥사:명:1
   옥사:명:4
   옥살이:명:5
  -옥살이하다:동:1
  +옥살이하:동:1
   옥상:명:21
   옥색:명:4
   옥색목:명:1
  @@ -35833,13 +35833,13 @@
   옥수수수염:명:1
   옥시모론:명:1
   옥신각신:부:4
  -옥신각신하다:동:3
  +옥신각신하:동:3
   옥양목:명:4
   옥외:명:7
   옥잠화:명:1
   옥좌:명:2
  -옥죄다:동:5
  -옥죄이다:동:1
  +옥죄:동:5
  +옥죄이:동:1
   옥중:명:6
   옥타브:의:2
   옥편:명:2
  @@ -35851,16 +35851,16 @@
   온건론:명:1
   온건책:명:1
   온건파:명:2
  -온건하다:형:4
  +온건하:형:4
   온고지신:명:1
   온기:명:10
  -온난하다:형:1
  +온난하:형:1
   온난화:명:24
  -온당하다:형:8
  +온당하:형:8
   온대:명:7
   온더록스:명:2
  -온데간데없다:형:2
  -온데간데없어지다:동:1
  +온데간데없:형:2
  +온데간데없어지:동:1
   온데간데없이:부:4
   온도:명:87
   온도계:명:2
  @@ -35872,16 +35872,16 @@
   온상:명:5
   온수:명:7
   온수기:명:2
  -온순하다:형:5
  +온순하:형:5
   온스:의:1
   온식:명:1
   온실:명:12
   온전성:명:1
  -온전하다:형:17
  -온전해지다:동:1
  +온전하:형:17
  +온전해지:동:1
   온전히:부:17
  -온존되다:동:2
  -온존시키다:동:3
  +온존되:동:2
  +온존시키:동:3
   온존적:관:1
   온종일:명:18
   온주:명:1
  @@ -35890,7 +35890,7 @@
   온탕식:명:1
   온통:부:96
   온풍기:명:1
  -온화하다:형:16
  +온화하:형:16
   올:관:113
   올:명:26
   올:명:43
  @@ -35898,22 +35898,22 @@
   올가미:명:7
   올가을:명:15
   올겨울:명:2
  -올곧다:형:5
  +올곧:형:5
   올드:명:1
   올드미스:명:3
  -올라가다:동:325
  -올라붙다:동:3
  -올라서다:동:26
  -올라앉다:동:7
  -올라오다:동:153
  -올라타다:동:17
  -올려놓다:동:66
  -올려다보다:동:29
  -올려붙이다:동:3
  -올려지다:동:19
  +올라가:동:325
  +올라붙:동:3
  +올라서:동:26
  +올라앉:동:7
  +올라오:동:153
  +올라타:동:17
  +올려놓:동:66
  +올려다보:동:29
  +올려붙이:동:3
  +올려지:동:19
   올로케:명:1
   올리고:명:1
  -올리다:동:436
  +올리:동:436
   올리브:명:1
   올리브갈색:명:6
   올리브색:명:2
  @@ -35924,9 +35924,9 @@
   올림피아드:명:5
   올림픽:명:159
   올망졸망:부:1
  -올망졸망하다:형:1
  +올망졸망하:형:1
   올바로:부:13
  -올바르다:형:137
  +올바르:형:137
   올백:명:1
   올봄:명:10
   올스타:명:5
  @@ -35936,23 +35936,23 @@
   올케:명:9
   올해:명:312
   올해분:명:1
  -옭아매다:동:3
  -옮겨지다:동:25
  -옮기다:동:287
  -옮다:동:6
  -옮아가다:동:8
  +옭아매:동:3
  +옮겨지:동:25
  +옮기:동:287
  +옮:동:6
  +옮아가:동:8
   옳다:감:1
  -옳다:형:196
  +옳:형:196
   옳소:감:3
   옳아:감:3
   옳지:감:11
   옴:명:3
  -옴죽거리다:동:1
  +옴죽거리:동:1
   옴짝달싹:부:2
  -옴짝하다:동:1
  -옴찔옴찔하다:동:1
  +옴짝하:동:1
  +옴찔옴찔하:동:1
   옴큼:의:4
  -옴팍하다:형:1
  +옴팍하:형:1
   옵서버:명:1
   옵션:명:2
   옵션비:명:1
  @@ -35961,7 +35961,7 @@
   옷가지:명:22
   옷감:명:20
   옷값:명:3
  -옷갓하다:동:5
  +옷갓하:동:5
   옷걸이:명:6
   옷고름:명:8
   옷깃:명:11
  @@ -35976,38 +35976,38 @@
   옷차림:명:41
   옹:의:3
   옹고집:명:1
  -옹글다:형:1
  +옹글:형:1
   옹기종기:부:6
   옹달샘:명:11
   옹립:명:1
   옹벽:명:2
  -옹색하다:형:5
  +옹색하:형:5
   옹성:명:2
   옹성문:명:1
  -옹송그리다:동:2
  -옹알이하다:동:1
  -옹졸하다:형:7
  +옹송그리:동:2
  +옹알이하:동:1
  +옹졸하:형:7
   옹호:명:3
   옹호론:명:8
   옹호론자:명:2
   옹호자:명:2
   옹호적:명:1
  -옹호하다:동:16
  +옹호하:동:16
   옻나무:명:1
   와:감:1
   와:감:35
   와:부:5
   와:부:9
  -와글거리다:동:1
  +와글거리:동:1
   와글와글:부:3
  -와드등거리다:동:1
  +와드등거리:동:1
   와들와들:부:4
   와따:감:1
   와락:부:8
   와르르:부:8
   와르릉:부:1
   와사비:명:3
  -와선하다:동:1
  +와선하:동:1
   와우형:명:1
   와이:명:3
   와이샤쓰:명:7
  @@ -36017,40 +36017,40 @@
   와이프:명:3
   와인:명:18
   와일드:명:1
  -와일드하다:형:1
  +와일드하:형:1
   와장창:부:4
  -와장창하다:동:1
  -와전되다:동:3
  +와장창하:동:1
  +와전되:동:3
   와중:명:35
   와지끈뚝딱:부:1
   와트:의:1
   와프로:명:1
  -와하다:동:2
  +와하:동:2
   와하하:부:1
   와해:명:3
  -와해되다:동:3
  -와해시키다:동:1
  +와해되:동:3
  +와해시키:동:1
   와해적:명:1
   왁스:명:1
   왁자지껄:부:1
  -왁자지껄하다:형:6
  -왁자하다:형:3
  +왁자지껄하:형:6
  +왁자하:형:3
   왁작왁작:부:1
  -완간하다:동:1
  -완강하다:형:15
  +완간하:동:1
  +완강하:형:15
   완강히:부:5
   완결:명:1
   완결감:명:1
  -완결되다:동:3
  +완결되:동:3
   완결성:명:1
   완결적:명:1
   완경사:명:1
  -완고하다:형:5
  +완고하:형:5
   완곡면:명:1
  -완곡하다:형:3
  +완곡하:형:3
   완공:명:7
  -완공되다:동:9
  -완공하다:동:6
  +완공되:동:9
  +완공하:동:6
   완구:명:2
   완구점:명:1
   완급:명:1
  @@ -36059,49 +36059,49 @@
   완두콩:명:17
   완력:명:3
   완료:명:2
  -완료되다:동:14
  -완료하다:동:17
  -완만하다:형:1
  -완만하다:형:9
  -완만해지다:동:1
  +완료되:동:14
  +완료하:동:17
  +완만하:형:1
  +완만하:형:9
  +완만해지:동:1
   완벽:명:6
   완벽성:명:2
   완벽주의:명:1
  -완벽하다:형:86
  -완벽해지다:동:1
  +완벽하:형:86
  +완벽해지:동:1
   완벽히:부:1
   완비:명:2
  -완비되다:동:1
  -완비하다:동:3
  +완비되:동:1
  +완비하:동:3
   완사면:명:1
   완성:명:62
   완성도:명:2
  -완성되다:동:51
  -완성시키다:동:9
  +완성되:동:51
  +완성시키:동:9
   완성체:명:1
   완성품:명:5
  -완성하다:동:53
  +완성하:동:53
   완성형:명:17
  -완송하다:동:1
  +완송하:동:1
   완수:명:3
  -완수하다:동:4
  +완수하:동:4
   완숙:명:1
   완숙기:명:1
  -완숙하다:형:2
  -완숙해지다:동:1
  +완숙하:형:2
  +완숙해지:동:1
   완승:명:1
  -완승하다:동:1
  +완승하:동:1
   완연스레:부:1
  -완연하다:형:10
  +완연하:형:10
   완연히:부:3
   완자:명:2
   완장:명:10
   완전:명:63
  -완전무결하다:형:6
  +완전무결하:형:6
   완전성:명:1
   완전자:명:1
   완전주의자:명:2
  -완전하다:형:86
  +완전하:형:86
   완전히:부:276
   완제품:명:3
   완주:명:1
  @@ -36109,25 +36109,25 @@
   완충기:명:1
   완충제:명:1
   완치:명:2
  -완치되다:동:1
  -완쾌되다:동:2
  +완치되:동:1
  +완쾌되:동:2
   완파:명:1
  -완파하다:동:2
  +완파하:동:2
   완패:명:1
  -완패하다:동:1
  +완패하:동:1
   완행버스:명:3
   완행선:명:1
   완행열차:명:1
   완화:명:35
  -완화되다:동:10
  +완화되:동:10
   완화론:명:1
  -완화시키다:동:11
  -완화하다:동:19
  +완화시키:동:11
  +완화하:동:19
   왈:부:3
   왈가닥:명:1
   왈가왈부:명:2
  -왈가왈부하다:동:10
  -왈그락달그락거리다:동:1
  +왈가왈부하:동:10
  +왈그락달그락거리:동:1
   왈그랑달그랑:부:1
   왈츠:명:1
   왈칵:부:6
  @@ -36152,7 +36152,7 @@
   왕도:명:3
   왕도:명:3
   왕래:명:18
  -왕래하다:동:10
  +왕래하:동:10
   왕릉:명:10
   왕립:명:3
   왕머루:명:1
  @@ -36161,19 +36161,19 @@
   왕방울:명:1
   왕복:명:12
   왕복선:명:21
  -왕복하다:동:2
  +왕복하:동:2
   왕비:명:18
   왕비족:명:3
   왕새우:명:1
  -왕생하다:동:1
  -왕성하다:형:29
  -왕성해지다:동:6
  +왕생하:동:1
  +왕성하:형:29
  +왕성해지:동:6
   왕세자:명:11
   왕세자비:명:2
   왕실:명:22
   왕왕:부:7
  -왕왕거리다:동:2
  -왕왕하다:동:1
  +왕왕거리:동:2
  +왕왕하:동:1
   왕우렁이:명:1
   왕울음:명:1
   왕위:명:35
  @@ -36188,7 +36188,7 @@
   왕좌:명:4
   왕중왕전:명:4
   왕창:부:4
  -왕청되다:형:1
  +왕청되:형:1
   왕초:명:16
   왕토:명:2
   왕통:명:1
  @@ -36196,12 +36196,12 @@
   왕후:명:7
   왜:감:28
   왜:명:3
  -왜:부:1,139
  +왜:부:1139
   왜간장:명:4
   왜곡:명:26
  -왜곡되다:동:44
  -왜곡시키다:동:9
  -왜곡하다:동:17
  +왜곡되:동:44
  +왜곡시키:동:9
  +왜곡하:동:17
   왜관:명:1
   왜구:명:10
   왜국:명:1
  @@ -36217,20 +36217,20 @@
   왜색:명:3
   왜색조:명:1
   왜선:명:1
  -왜소하다:형:13
  -왜소해지다:동:3
  +왜소하:형:13
  +왜소해지:동:3
   왜소화:명:1
  -왜소화되다:동:2
  -왜소화해지다:명:1
  +왜소화되:동:2
  +왜소화해지:명:1
   왜식:명:1
   왜인:명:5
  -왜자해지다:동:1
  +왜자해지:동:1
   왜적:명:17
   왜정:명:4
   왜주:명:1
   왜죽왜죽:부:1
   왠지:부:70
  -왱왱거리다:동:2
  +왱왱거리:동:2
   외:의:252
   외가:명:7
   외가댁:명:1
  @@ -36252,7 +36252,7 @@
   외관상:명:8
   외관적:명:1
   외관화:명:1
  -외관화하다:동:1
  +외관화하:동:1
   외교:명:1
   외교:명:92
   외교관:명:37
  @@ -36275,8 +36275,8 @@
   외근:명:1
   외길:명:2
   외나무다리:명:2
  -외다:동:29
  -외다:형:1
  +외:동:29
  +외:형:1
   외대으아리:명:2
   외도:명:5
   외동딸:명:11
  @@ -36288,9 +36288,9 @@
   외딴곳:명:1
   외딴섬:명:1
   외딴집:명:5
  -외떨어지다:동:1
  -외람되다:형:3
  -외람스럽다:형:1
  +외떨어지:동:1
  +외람되:형:3
  +외람스럽:형:1
   외래:명:23
   외래문화:명:4
   외래어:명:8
  @@ -36300,25 +36300,25 @@
   외려:부:6
   외로:부:2
   외로움:명:40
  -외로워지다:동:1
  -외로워하다:동:3
  +외로워지:동:1
  +외로워하:동:3
   외로이:부:2
  -외롭다:형:61
  +외롭:형:61
   외마디:명:7
   외면:명:11
   외면:명:3
  -외면당하다:동:1
  +외면당하:동:1
   외면적:관:10
   외면적:명:9
  -외면하다:동:66
  -외면화하다:동:1
  +외면하:동:66
  +외면화하:동:1
   외모:명:47
   외모적:관:1
   외모적:명:1
   외무:명:2
   외무직:명:1
   외박:명:4
  -외박하다:동:5
  +외박하:동:5
   외방:명:1
   외방어:명:1
   외벽:명:5
  @@ -36340,7 +36340,7 @@
   외생적:관:1
   외서:명:1
   외설:명:3
  -외설스럽다:형:1
  +외설스럽:형:1
   외세:명:10
   외손녀:명:4
   외손자:명:6
  @@ -36351,7 +36351,7 @@
   외숙모:명:9
   외숙부:명:4
   외식:명:7
  -외식하다:동:2
  +외식하:동:2
   외신:명:11
   외신부:명:1
   외심:명:1
  @@ -36364,13 +36364,13 @@
   외연:명:8
   외연성:명:1
   외연적:명:2
  -외연화하다:동:1
  +외연화하:동:1
   외왕:명:1
   외용약:명:2
  -외우다:동:40
  +외우:동:40
   외위:명:2
   외유:명:20
  -외유하다:동:2
  +외유하:동:2
   외의:명:7
   외인:명:3
   외자:명:7
  @@ -36387,25 +36387,25 @@
   외지:명:1
   외지:명:3
   외지:명:4
  -외지다:형:9
  +외지:형:9
   외지인:명:5
   외채:명:1
   외척:명:2
   외청:명:1
   외청장:명:1
  -외쳐지다:동:1
  +외쳐지:동:1
   외출:명:35
   외출복:명:6
  -외출하다:동:16
  +외출하:동:16
   외측:명:2
   외치:명:1
  -외치다:동:158
  +외치:동:158
   외침:명:29
   외침:명:5
   외탁:명:1
   외톨이:명:4
   외투:명:5
  -외틀다:동:2
  +외틀:동:2
   외판원:명:3
   외팔이:명:5
   외표:명:1
  @@ -36448,55 +36448,55 @@
   요격:명:1
   요괴:명:1
   요구:명:227
  -요구되다:동:60
  +요구되:동:60
   요구량:명:3
   요구르트:명:3
  -요구받다:동:6
  +요구받:동:6
   요구불:명:5
   요구서:명:1
   요구액:명:2
   요구율:명:1
   요구자:명:1
  -요구하다:동:327
  +요구하:동:327
   요금:명:94
   요금액:명:1
   요기:대:9
   요기:명:3
  -요기하다:동:1
  -요긴하다:형:8
  +요기하:동:1
  +요긴하:형:8
   요년:대:4
   요놈:대:3
   요다음:명:1
   요도염:명:1
   요동:명:5
  -요동치다:동:2
  -요동하다:동:1
  +요동치:동:2
  +요동하:동:1
   요란:명:1
  -요란스러워지다:동:1
  -요란스럽다:형:10
  +요란스러워지:동:1
  +요란스럽:형:10
   요란스레:부:2
  -요란하다:형:43
  +요란하:형:43
   요람:명:2
   요량:명:9
  -요러다:동:1
  +요러:동:1
   요런:관:5
  -요렇다:형:10
  +요렇:형:10
   요령:명:26
   요로:명:1
   요리:명:142
   요리:부:1
  -요리되다:동:2
  +요리되:동:2
   요리반:명:1
   요리법:명:3
   요리사:명:25
   요리조리:부:2
   요리조리:부:5
  -요리하다:동:9
  +요리하:동:9
   요릿집:명:1
   요만큼:부:1
  -요만하다:형:1
  +요만하:형:1
   요맘때:명:1
  -요망되다:동:3
  +요망되:동:3
   요모조모:명:6
   요목:명:1
   요물:명:1
  @@ -36507,15 +36507,15 @@
   요부:명:1
   요부:명:4
   요비링:명:1
  -요사스럽다:형:2
  +요사스럽:형:2
   요사이:명:6
   요사채:명:1
  -요상시럽다:형:1
  +요상시럽:형:1
   요새:명:11
   요새:명:55
   요새지:명:3
   요새화:명:1
  -요새화되다:동:1
  +요새화되:동:1
   요샛말:명:1
   요설:명:4
   요소:명:237
  @@ -36527,18 +36527,18 @@
   요시찰자:명:1
   요식:명:2
   요약:명:6
  -요약되다:동:12
  -요약하다:동:39
  +요약되:동:12
  +요약하:동:39
   요양:명:16
   요양원:명:1
  -요양하다:동:1
  +요양하:동:1
   요업:명:1
   요역:명:5
  -요염하다:형:3
  +요염하:형:3
   요원:명:1
   요원:명:49
  -요원하다:형:8
  -요원해지다:동:1
  +요원하:형:8
  +요원해지:동:1
   요육:명:2
   요의:명:1
   요인:명:217
  @@ -36546,7 +36546,7 @@
   요일:명:22
   요전:명:5
   요절:명:2
  -요절하다:동:1
  +요절하:동:1
   요점:명:5
   요정:명:15
   요정:명:4
  @@ -36561,9 +36561,9 @@
   요직:명:14
   요철:명:1
   요청:명:69
  -요청되다:동:29
  +요청되:동:29
   요청서:명:5
  -요청하다:동:84
  +요청하:동:84
   요체:명:16
   요추:명:21
   요충지:명:3
  @@ -36571,38 +36571,38 @@
   요통:명:13
   요트:명:4
   요포형:명:1
  -요하다:동:17
  +요하:동:17
   요항부:명:1
   요행:명:7
   요행수:명:1
   요행히:부:2
   욕:명:61
   욕구:명:107
  -욕구하다:동:2
  -욕되다:형:3
  +욕구하:동:2
  +욕되:형:3
   욕망:명:181
  -욕망하다:동:1
  -욕먹다:동:2
  -욕보다:동:2
  +욕망하:동:1
  +욕먹:동:2
  +욕보:동:2
   욕설:명:25
   욕실:명:22
   욕심:명:70
   욕심껏:부:1
  -욕심내다:동:2
  +욕심내:동:2
   욕정:명:1
   욕조:명:9
   욕지거리:명:2
   욕질:명:6
  -욕질하다:동:1
  +욕질하:동:1
   욕창:명:1
   욕탕:명:7
   욕탕법:명:2
  -욕하다:동:16
  +욕하:동:16
   용:명:36
   용:명:6
   용가리:명:1
   용감성:명:3
  -용감하다:형:22
  +용감하:형:22
   용감히:부:4
   용건:명:3
   용골:명:1
  @@ -36615,9 +36615,9 @@
   용기백배:명:1
   용꿈:명:2
   용납:명:1
  -용납되다:동:8
  -용납받다:동:1
  -용납하다:동:12
  +용납되:동:8
  +용납받:동:1
  +용납하:동:12
   용단:명:2
   용담:명:4
   용도:명:52
  @@ -36630,9 +36630,9 @@
   용마루:명:1
   용맹:명:2
   용맹성:명:1
  -용맹스럽다:형:4
  +용맹스럽:형:4
   용맹심:명:1
  -용맹하다:형:3
  +용맹하:형:3
   용모:명:10
   용모파기:명:2
   용무:명:7
  @@ -36642,11 +36642,11 @@
   용사:명:6
   용상:명:2
   용서:명:20
  -용서되다:동:3
  -용서받다:동:7
  -용서하다:동:44
  +용서되:동:3
  +용서받:동:7
  +용서하:동:44
   용선주:명:1
  -용솟음치다:동:2
  +용솟음치:동:2
   용수:명:2
   용수:명:7
   용수량:명:1
  @@ -36665,20 +36665,20 @@
   용의:명:1
   용의:명:11
   용의자:명:3
  -용의주도하다:형:3
  +용의주도하:형:3
   용이:명:1
  -용이하다:형:16
  -용이하여지다:동:1
  -용이해지다:동:2
  -용인되다:동:5
  -용인하다:동:5
  +용이하:형:16
  +용이하여지:동:1
  +용이해지:동:2
  +용인되:동:5
  +용인하:동:5
   용일:명:1
   용적률:명:3
   용접:명:5
   용접공:명:1
   용접기:명:1
   용접봉:명:1
  -용접하다:동:6
  +용접하:동:6
   용지:명:11
   용지:명:9
   용태:명:1
  @@ -36686,8 +36686,8 @@
   용포감:명:1
   용품:명:22
   용품점:명:2
  -용하다:형:10
  -용해되다:동:3
  +용하:형:10
  +용해되:동:3
   용형:명:1
   용호비:명:1
   용호상박:명:1
  @@ -36698,89 +36698,89 @@
   우:부:1
   우거:명:1
   우거지:명:4
  -우거지다:동:20
  +우거지:동:20
   우거지상:명:1
   우거짓국:명:1
  -우겨넣다:동:1
  +우겨넣:동:1
   우격다짐:명:2
   우경:명:1
   우경화:명:1
   우계:명:1
   우국:명:1
  -우그러지다:동:1
  -우글거리다:동:5
  +우그러지:동:1
  +우글거리:동:5
   우기:명:2
  -우기다:동:27
  +우기:동:27
   우김질:명:2
   우단:명:2
   우당탕:부:1
  -우당탕거리다:동:1
  +우당탕거리:동:1
   우대:명:11
   우대:명:2
  -우대하다:동:1
  +우대하:동:1
   우동:명:5
   우두둑:부:1
   우두망찰:부:2
   우두머리:명:4
   우두커니:부:20
  -우둔하다:형:1
  -우둘두둘하다:형:1
  +우둔하:형:1
  +우둘두둘하:형:1
   우득우득:부:1
   우듬지:명:1
   우등상:명:3
   우등상장:명:1
   우등생:명:6
  -우떻다:형:1
  +우떻:형:1
   우뚝:부:18
  -우뚝하다:형:7
  +우뚝하:형:7
   우라늄:명:9
   우라질:감:1
  -우락부락하다:형:1
  -우람하다:형:10
  +우락부락하:형:1
  +우람하:형:10
   우량:명:4
   우량주:명:2
  -우러나다:동:22
  -우러나오다:동:9
  -우러러보다:동:4
  -우러르다:동:6
  -우렁우렁하다:형:1
  -우렁차다:형:11
  +우러나:동:22
  +우러나오:동:9
  +우러러보:동:4
  +우러르:동:6
  +우렁우렁하:형:1
  +우렁차:형:11
   우레:명:2
   우려:명:139
  -우려내다:동:10
  -우려되다:동:29
  -우려먹다:동:3
  -우려스럽다:형:2
  -우려하다:동:54
  +우려내:동:10
  +우려되:동:29
  +우려먹:동:3
  +우려스럽:형:2
  +우려하:동:54
   우롱:명:1
  -우롱당하다:동:5
  +우롱당하:동:5
   우롱차:명:1
  -우롱하다:동:8
  +우롱하:동:8
   우르르:부:20
   우르릉:부:2
  -우르릉거리다:동:1
  -우르릉하다:동:1
  -우리:대:6,583
  +우르릉거리:동:1
  +우르릉하:동:1
  +우리:대:6583
   우리:명:3
   우리글:명:2
  -우리나라:명:1,050
  +우리나라:명:1050
   우리말:명:78
   우리말화:명:1
   우림:명:8
   우마:명:1
   우마차:명:1
  -우매하다:형:1
  +우매하:형:1
   우묵:부:1
  -우묵하다:형:3
  +우묵하:형:3
   우문:명:1
   우물:명:21
   우물가:명:16
  -우물거리다:동:5
  +우물거리:동:5
   우물물:명:2
   우물우물:부:7
  -우물우물하다:동:1
  +우물우물하:동:1
   우물쭈물:부:2
  -우물쭈물하다:동:4
  +우물쭈물하:동:4
   우미:명:2
   우민:명:1
   우민:명:3
  @@ -36809,20 +36809,20 @@
   우선:명:40
   우선:부:462
   우선권:명:3
  -우선되다:동:4
  +우선되:동:4
   우선룡:명:2
   우선순위:명:11
   우선적:명:18
   우선주의:명:1
  -우선하다:동:7
  +우선하:동:7
   우세:명:1
   우세:명:10
   우세성:명:1
  -우세스럽다:형:1
  -우세하다:형:22
  +우세스럽:형:1
  +우세하:형:22
   우송:명:1
  -우송되다:동:3
  -우송하다:동:6
  +우송되:동:3
  +우송하:동:6
   우수:명:10
   우수:명:14
   우수리:명:1
  @@ -36830,27 +36830,27 @@
   우수상:명:6
   우수성:명:11
   우수수:부:4
  -우수하다:형:38
  +우수하:형:38
   우스개:명:4
   우스갯말:명:1
   우스갯소리:명:7
  -우스꽝스럽다:형:26
  +우스꽝스럽:형:26
   우스터소스:명:4
  -우습게보다:동:1
  -우습다:형:54
  +우습게보:동:1
  +우습:형:54
   우승:명:70
   우승권:명:1
   우승배:명:1
   우승열패:명:1
   우승자:명:4
   우승컵:명:2
  -우승하다:동:18
  +우승하:동:18
   우아:감:7
  -우아하다:형:32
  -우악스럽다:형:2
  +우아하:형:32
  +우악스럽:형:2
   우애:명:7
   우애둥이:명:1
  -우애하다:동:1
  +우애하:동:1
   우엉:명:2
   우엉조림:명:3
   우엉채:명:1
  @@ -36859,31 +36859,31 @@
   우연성:명:2
   우연적:관:1
   우연적:명:6
  -우연찮다:형:3
  -우연하다:형:14
  +우연찮:형:3
  +우연하:형:14
   우연히:부:71
   우열:명:15
   우완:명:1
   우왕좌왕:명:1
  -우왕좌왕하다:동:7
  +우왕좌왕하:동:7
   우우:명:1
   우우:부:4
   우울:명:4
   우울감:명:1
   우울증:명:6
  -우울하다:형:31
  -우울해지다:동:5
  +우울하:형:31
  +우울해지:동:5
   우웅:부:1
   우월:명:5
   우월감:명:6
   우월성:명:7
   우월주의:명:2
  -우월하다:형:11
  +우월하:형:11
   우위:명:47
   우위론:명:2
   우위성:명:4
   우유:명:106
  -우유부단하다:형:7
  +우유부단하:형:7
   우유죽:명:1
   우육면:명:2
   우의:명:2
  @@ -36909,7 +36909,7 @@
   우주론:명:13
   우주복:명:3
   우주선:명:15
  -우주스럽다:형:1
  +우주스럽:형:1
   우주인:명:1
   우주적:관:13
   우주적:명:10
  @@ -36917,13 +36917,13 @@
   우주화:명:1
   우중:명:1
   우중:명:2
  -우중충하다:형:5
  -우직하다:형:1
  -우짖다:동:2
  +우중충하:형:5
  +우직하:형:1
  +우짖:동:2
   우쩍:부:2
  -우쭐거리다:동:6
  -우쭐대다:동:3
  -우쭐하다:동:4
  +우쭐거리:동:6
  +우쭐대:동:3
  +우쭐하:동:4
   우찌:부:2
   우체:명:2
   우체국:명:31
  @@ -36955,13 +36955,13 @@
   우회적:관:2
   우회적:명:5
   우회전:명:1
  -우회전하다:동:1
  -우회하다:동:2
  +우회전하:동:1
  +우회하:동:2
   우후죽순:명:1
   우후후:부:2
   욱:부:1
  -욱씬거리다:동:1
  -욱여넣다:동:2
  +욱씬거리:동:1
  +욱여넣:동:2
   욱욱:부:1
   욱일:명:1
   욱일승천:명:1
  @@ -36970,9 +36970,9 @@
   운:명:69
   운감:명:2
   운구:명:2
  -운구하다:동:2
  +운구하:동:2
   운단:명:1
  -운동:명:1,317
  +운동:명:1317
   운동가:명:23
   운동감:명:2
   운동권:명:46
  @@ -36985,30 +36985,30 @@
   운동상:명:1
   운동선수:명:9
   운동성:명:6
  -운동시키다:동:2
  +운동시키:동:2
   운동원:명:8
   운동장:명:85
   운동적:관:3
  -운동하다:동:39
  +운동하:동:39
   운동화:명:17
   운동회:명:15
   운두:명:2
  -운력하다:동:1
  +운력하:동:1
   운명:명:1
   운명:명:118
   운명론:명:3
   운명적:명:10
  -운명하다:동:1
  +운명하:동:1
   운모:명:2
   운무:명:1
   운문:명:8
   운문극:명:7
   운문대단:명:1
   운반:명:18
  -운반되다:동:2
  +운반되:동:2
   운반비:명:1
   운반인:명:2
  -운반하다:동:18
  +운반하:동:18
   운보법:명:1
   운사:명:1
   운사:명:2
  @@ -37018,7 +37018,7 @@
   운송선:명:2
   운송업:명:1
   운송업자:명:1
  -운송하다:동:4
  +운송하:동:4
   운수:명:1
   운수:명:12
   운수:명:9
  @@ -37028,20 +37028,20 @@
   운영:명:188
   운영과장:명:1
   운영난:명:1
  -운영되다:동:24
  +운영되:동:24
   운영부:명:1
   운영비:명:21
   운영사:명:1
   운영자:명:1
  -운영하다:동:105
  +운영하:동:105
   운용:명:31
  -운용되다:동:2
  +운용되:동:2
   운용비:명:1
  -운용하다:동:8
  +운용하:동:8
   운우지정:명:1
   운운:명:4
  -운운하다:동:32
  -운위하다:동:2
  +운운하:동:32
  +운위하:동:2
   운율:명:2
   운임:명:1
   운전:명:54
  @@ -37053,101 +37053,101 @@
   운전석:명:8
   운전수:명:12
   운전자:명:40
  -운전하다:동:21
  +운전하:동:21
   운전회:명:1
   운지법:명:3
   운집:명:1
  -운집하다:동:4
  +운집하:동:4
   운짱:명:1
   운치:명:8
   운하:명:4
   운하초:명:1
   운항:명:19
   운항권:명:1
  -운항하다:동:11
  +운항하:동:11
   운행:명:36
  -운행되다:동:1
  +운행되:동:1
   운행제:명:1
  -운행하다:동:8
  +운행하:동:8
   운휴:명:1
   울:대:2
   울:명:2
   울:명:9
   울고불고:부:2
  -울고불고하다:동:3
  -울구다:동:3
  +울고불고하:동:3
  +울구:동:3
   울그락불그락:부:1
   울긋불긋:부:2
  -울긋불긋하다:형:3
  -울다:동:1
  -울다:동:356
  -울렁거리다:동:6
  -울렁울렁하다:동:1
  -울렁이다:동:1
  -울려오다:동:5
  -울려지다:동:1
  -울리다:동:147
  -울리다:동:31
  +울긋불긋하:형:3
  +울:동:1
  +울:동:356
  +울렁거리:동:6
  +울렁울렁하:동:1
  +울렁이:동:1
  +울려오:동:5
  +울려지:동:1
  +울리:동:147
  +울리:동:31
   울림:명:6
   울림통:명:1
   울먹:부:1
   울먹울먹:부:2
  -울먹이다:동:10
  +울먹이:동:10
   울바자:명:2
   울바지:명:1
   울보:명:2
  -울부짖다:동:20
  +울부짖:동:20
   울분:명:8
  -울분하다:형:1
  +울분하:형:1
   울상:명:16
   울새:명:2
   울안:명:3
   울음:명:64
   울음바다:명:2
   울음소리:명:42
  -울적하다:형:5
  -울적해지다:동:2
  -울창하다:형:12
  +울적하:형:5
  +울적해지:동:2
  +울창하:형:12
   울컥:부:9
  -울컥하다:동:2
  +울컥하:동:2
   울타리:명:44
  -울툭불툭하다:형:1
  -울퉁불퉁하다:형:4
  -울퉁불퉁해지다:동:1
  +울툭불툭하:형:1
  +울퉁불퉁하:형:4
  +울퉁불퉁해지:동:1
   울화:명:6
   울화병:명:1
   울화통:명:3
   움:명:3
   움막:명:3
  -움막살이하다:동:1
  -움씰거리다:동:2
  -움직거리다:동:1
  -움직여지다:동:4
  -움직이다:동:423
  +움막살이하:동:1
  +움씰거리:동:2
  +움직거리:동:1
  +움직여지:동:4
  +움직이:동:423
   움직임:명:208
   움집:명:1
   움짝달싹:부:1
   움찔:부:2
  -움찔거리다:동:2
  -움찔하다:동:6
  -움츠러들다:동:10
  -움츠리다:동:14
  -움켜잡다:동:7
  -움켜쥐다:동:15
  +움찔거리:동:2
  +움찔하:동:6
  +움츠러들:동:10
  +움츠리:동:14
  +움켜잡:동:7
  +움켜쥐:동:15
   움큼:의:9
  -움키다:동:11
  -움트다:동:4
  +움키:동:11
  +움트:동:4
   움펑:부:1
   움푹:부:10
  -움푹짐푹하다:형:1
  -움푹하다:형:2
  -웃기다:동:63
  -웃다:동:599
  +움푹짐푹하:형:1
  +움푹하:형:2
  +웃기:동:63
  +웃:동:599
   웃돈:명:1
  -웃돌다:동:21
  +웃돌:동:21
   웃분:명:1
   웃비:명:2
  -웃어넘기다:동:3
  +웃어넘기:동:3
   웃어른:명:18
   웃옷:명:6
   웃음:명:248
  @@ -37157,29 +37157,29 @@
   웃음바다:명:1
   웃음소리:명:24
   웃음판:명:3
  -웃자라다:동:3
  +웃자라:동:3
   웃저고리:명:3
   웃통:명:9
   웃풍:명:1
  -웅건하다:형:2
  +웅건하:형:2
   웅담:명:1
  -웅대하다:형:3
  +웅대하:형:3
   웅덩이:명:7
   웅변:명:9
   웅변대회:명:5
   웅변적:명:2
   웅변조:명:2
  -웅성거리다:동:11
  -웅성대다:동:1
  +웅성거리:동:11
  +웅성대:동:1
   웅성웅성:부:1
  -웅성이다:동:1
  -웅숭깊다:형:2
  -웅얼거리다:동:9
  +웅성이:동:1
  +웅숭깊:형:2
  +웅얼거리:동:9
   웅얼웅얼:부:1
   웅웅:부:1
  -웅웅거리다:동:5
  -웅장하다:형:21
  -웅크리다:동:36
  +웅웅거리:동:5
  +웅장하:형:21
  +웅크리:동:36
   워낙:부:93
   워드:명:18
   워디:대:1
  @@ -37188,11 +37188,11 @@
   워밍업:명:1
   워시오프:명:1
   워째야:불:1
  -워쩌다:동:2
  +워쩌:동:2
   워찌:불:1
   워치:명:2
   워치게:부:2
  -워치되다:형:1
  +워치되:형:1
   워치크롬:부:1
   워커:명:12
   워크숍:명:3
  @@ -37206,7 +37206,7 @@
   원:명:7
   원:명:9
   원:의:1
  -원:의:1,776
  +원:의:1776
   원가:명:23
   원가력:명:2
   원거리:명:6
  @@ -37234,7 +37234,7 @@
   원님:명:2
   원단:명:2
   원대:명:8
  -원대하다:형:4
  +원대하:형:4
   원더풀:명:1
   원도:명:2
   원동력:명:23
  @@ -37260,16 +37260,16 @@
   원리적:명:2
   원리주의:명:2
   원만:명:2
  -원만하다:형:27
  +원만하:형:27
   원만히:부:3
   원망:명:11
  -원망받다:동:1
  -원망스러워지다:동:1
  -원망스럽다:형:13
  +원망받:동:1
  +원망스러워지:동:1
  +원망스럽:형:13
   원망스레:부:2
  -원망하다:동:34
  +원망하:동:34
   원맨쇼:명:1
  -원맨쇼하다:동:1
  +원맨쇼하:동:1
   원면:명:1
   원목:명:2
   원무과:명:1
  @@ -37285,12 +37285,12 @@
   원상:명:9
   원상태:명:3
   원상회복:명:1
  -원상회복시키다:동:2
  +원상회복시키:동:2
   원색:명:11
   원색적:명:3
   원생:명:4
   원생목:명:1
  -원샷하다:동:1
  +원샷하:동:1
   원서:명:1
   원서:명:25
   원서대:명:1
  @@ -37306,7 +37306,7 @@
   원숙기:명:1
   원숙미:명:1
   원숙성:명:1
  -원숙하다:형:3
  +원숙하:형:3
   원숭이:명:23
   원숭이띠:명:1
   원시:명:88
  @@ -37328,15 +37328,15 @@
   원예사:명:1
   원외:명:3
   원용:명:1
  -원용되다:동:2
  -원용하다:동:8
  +원용되:동:2
  +원용하:동:8
   원운동:명:5
   원위치:명:1
   원유:명:17
   원유가:명:3
   원융:명:5
  -원융되다:동:1
  -원융하다:동:2
  +원융되:동:1
  +원융하:동:2
   원음:명:4
   원의미:명:1
   원이름:명:1
  @@ -37353,7 +37353,7 @@
   원자탄:명:6
   원자핵:명:9
   원자화:명:1
  -원자화되다:동:1
  +원자화되:동:1
   원작:명:31
   원작자:명:1
   원장:명:1
  @@ -37375,8 +37375,8 @@
   원제:부:1
   원조:명:14
   원조:명:6
  -원조받다:동:1
  -원조하다:동:2
  +원조받:동:1
  +원조하:동:2
   원죄:명:3
   원죄자:명:1
   원주민:명:7
  @@ -37403,15 +37403,15 @@
   원탁회의:명:2
   원탑:명:1
   원통:명:1
  -원통하다:형:6
  -원통해하다:동:1
  +원통하:형:6
  +원통해하:동:1
   원판:명:1
   원폭:명:5
   원표:명:1
   원피스:명:15
   원피스식:명:1
  -원하다:동:1
  -원하다:동:250
  +원하:동:1
  +원하:동:250
   원한:명:11
   원행:명:1
   원형:명:1
  @@ -37427,8 +37427,8 @@
   원화:명:5
   원환:명:1
   원활:명:2
  -원활하다:형:25
  -원활해지다:동:3
  +원활하:형:25
  +원활해지:동:3
   원활히:부:3
   원흉:명:4
   월:명:45
  @@ -37448,24 +37448,24 @@
   월남:명:3
   월남붕어:명:4
   월남어:명:1
  -월남하다:동:8
  +월남하:동:8
   월동:명:4
  -월동하다:동:22
  +월동하:동:22
   월드:명:8
   월드컵:명:28
  -월등하다:형:4
  +월등하:형:4
   월등히:부:9
   월라:명:1
   월렁월렁:부:1
   월례:명:7
   월말:명:5
  -월반하다:동:1
  +월반하:동:1
   월별:명:8
   월병:명:3
   월봉:명:4
   월부:명:1
   월북:명:8
  -월북하다:동:2
  +월북하:동:2
   월사금:명:18
   월색:명:2
   월세:명:8
  @@ -37489,14 +37489,14 @@
   웬:관:68
   웬걸:불:7
   웬만큼:부:11
  -웬만하다:형:37
  +웬만하:형:37
   웬수:명:1
   웬일:명:59
   웰던:명:1
   웹:명:9
   위:감:2
   위:명:1
  -위:명:1,321
  +위:명:1321
   위:명:135
   위:명:21
   위:의:187
  @@ -37511,7 +37511,7 @@
   위궤양:명:1
   위금:명:1
   위급:명:1
  -위급하다:형:6
  +위급하:형:6
   위기:명:161
   위기감:명:7
   위기관리:명:1
  @@ -37521,12 +37521,12 @@
   위기적:관:4
   위너스:명:1
   위대성:명:5
  -위대하다:형:113
  -위대해지다:동:1
  +위대하:형:113
  +위대해지:동:1
   위도:명:5
   위독:명:2
  -위독하다:형:3
  -위독해지다:동:1
  +위독하:형:3
  +위독해지:동:1
   위락:명:7
   위력:명:23
   위력적:명:3
  @@ -37535,24 +37535,24 @@
   위령탑:명:3
   위로:명:27
   위로금:명:3
  -위로받다:동:7
  +위로받:동:7
   위로자:명:2
  -위로하다:동:41
  +위로하:동:41
   위무:명:1
   위무:명:1
   위문:명:9
   위문편지:명:4
   위반:명:100
  -위반되다:동:6
  +위반되:동:6
   위반자:명:2
   위반죄:명:6
  -위반하다:동:30
  -위배되다:동:14
  -위배하다:동:2
  +위반하:동:30
  +위배되:동:14
  +위배하:동:2
   위법:명:23
   위법성:명:1
   위법적:관:2
  -위법하다:동:7
  +위법하:동:7
   위벽:명:1
   위병:명:2
   위병소:명:3
  @@ -37574,7 +37574,7 @@
   위세:명:8
   위수령:명:2
   위스키:명:5
  -위시하다:동:12
  +위시하:동:12
   위신:명:5
   위아래:명:16
   위악적:명:2
  @@ -37586,10 +37586,10 @@
   위압감:명:2
   위압적:관:4
   위압적:명:4
  -위압하다:동:2
  +위압하:동:2
   위엄:명:26
   위엄성:명:1
  -위엄스럽다:형:1
  +위엄스럽:형:1
   위업:명:3
   위여:감:2
   위염:명:6
  @@ -37609,33 +37609,33 @@
   위인전:명:2
   위인전기:명:2
   위임:명:7
  -위임되다:동:1
  -위임받다:동:5
  +위임되:동:1
  +위임받:동:5
   위임자:명:1
   위임장:명:1
  -위임하다:동:9
  +위임하:동:9
   위자료:명:1
   위작:명:2
   위장:명:1
   위장:명:15
   위장:명:18
  -위장되다:동:9
  +위장되:동:9
   위장병:명:6
   위장술:명:1
  -위장시키다:동:1
  +위장시키:동:1
   위장염:명:1
  -위장하다:동:13
  +위장하:동:13
   위저드:명:1
   위전:의:2
   위정자:명:8
   위정척사:명:1
   위조:명:20
   위조단:명:1
  -위조되다:동:3
  +위조되:동:3
   위조설:명:1
   위조죄:명:1
   위조지폐:명:4
  -위조하다:동:6
  +위조하:동:6
   위주:명:94
   위주적:명:1
   위증:명:1
  @@ -37643,26 +37643,26 @@
   위촉:명:1
   위촉장:명:1
   위축:명:14
  -위축되다:동:24
  -위축시키다:동:10
  +위축되:동:24
  +위축시키:동:10
   위층:명:8
   위치:명:251
  -위치시키다:동:4
  -위치하다:동:89
  +위치시키:동:4
  +위치하:동:89
   위탁:명:9
  -위탁시키다:동:1
  -위탁하다:동:4
  +위탁시키:동:1
  +위탁하:동:4
   위태:명:1
  -위태로워지다:동:1
  -위태롭다:형:19
  -위태하다:형:2
  +위태로워지:동:1
  +위태롭:형:19
  +위태하:형:2
   위턱:명:1
   위통:명:2
   위트:명:1
   위패:명:13
   위폐:명:2
  -위풍당당하다:형:6
  -위하다:동:3,497
  +위풍당당하:형:6
  +위하:동:3497
   위하수:명:1
   위해:명:9
   위해성:명:1
  @@ -37674,19 +37674,19 @@
   위험군:명:1
   위험물:명:4
   위험성:명:22
  -위험스럽다:형:3
  -위험천만하다:형:4
  -위험하다:형:102
  -위험해지다:동:2
  +위험스럽:형:3
  +위험천만하:형:4
  +위험하:형:102
  +위험해지:동:2
   위협:명:79
   위협감:명:1
  -위협당하다:동:1
  +위협당하:동:1
   위협론:명:2
  -위협받다:동:7
  +위협받:동:7
   위협성:명:2
   위협적:명:6
   위협조:명:1
  -위협하다:동:39
  +위협하:동:39
   위화감:명:7
   윈도:명:1
   윈들러스:명:1
  @@ -37711,8 +37711,8 @@
   윙:명:1
   윙백:명:2
   윙윙:부:1
  -윙윙거리다:동:1
  -윙윙하다:동:2
  +윙윙거리:동:1
  +윙윙하:동:2
   윙크:명:3
   유:명:7
   유:명:8
  @@ -37724,8 +37724,8 @@
   유가족:명:3
   유감:명:1
   유감:명:19
  -유감되다:형:3
  -유감스럽다:형:16
  +유감되:형:3
  +유감스럽:형:16
   유감없이:부:10
   유개념:명:25
   유격:명:2
  @@ -37736,19 +37736,19 @@
   유공자:명:3
   유관:명:6
   유관성:명:1
  -유관하다:형:1
  +유관하:형:1
   유괴:명:7
  -유괴되다:동:1
  +유괴되:동:1
   유괴범:명:8
  -유괴하다:동:1
  +유괴하:동:1
   유교:명:78
   유교권:명:1
   유교적:관:10
   유교적:명:8
   유교학과:명:1
  -유교화하다:동:1
  +유교화하:동:1
   유구무언:명:1
  -유구하다:형:5
  +유구하:형:5
   유권:명:5
   유권자:명:58
   유급:명:2
  @@ -37763,15 +37763,15 @@
   유기적:명:28
   유기질:명:1
   유기체:명:10
  -유난스럽다:형:2
  +유난스럽:형:2
   유난스레:부:2
  -유난하다:형:1
  +유난하:형:1
   유난히:부:82
   유년:명:10
   유년기:명:3
  -유념하다:동:10
  +유념하:동:10
   유놀이:명:1
  -유능하다:형:19
  +유능하:형:19
   유니코드:명:2
   유니콘:명:1
   유니티:명:2
  @@ -37782,45 +37782,45 @@
   유대:명:9
   유대감:명:4
   유대교:명:2
  -유덕하다:형:1
  +유덕하:형:1
   유도:명:14
   유도:명:23
  -유도되다:동:5
  -유도하다:동:65
  +유도되:동:5
  +유도하:동:65
   유독:명:3
   유독:부:30
   유독물:명:1
   유독성:명:2
  -유독스럽다:형:1
  -유독하다:형:1
  +유독스럽:형:1
  +유독하:형:1
   유동:명:1
   유동:명:4
   유동성:명:2
   유동적:명:6
  -유동하다:동:1
  -유동화하다:동:1
  +유동하:동:1
  +유동화하:동:1
   유두:명:2
   유두화나무:명:1
   유락가:명:1
   유람:명:1
   유람선:명:7
  -유람하다:동:1
  +유람하:동:1
   유랑:명:4
   유랑파:명:1
  -유랑하다:동:1
  +유랑하:동:1
   유래:명:10
  -유래되다:동:10
  -유래하다:동:2
  +유래되:동:10
  +유래하:동:2
   유량:명:2
  -유려하다:형:3
  +유려하:형:3
   유력:명:5
  -유력시되다:동:2
  +유력시되:동:2
   유력자:명:2
   유력층:명:19
  -유력하다:형:17
  +유력하:형:17
   유령:명:11
   유례:명:7
  -유례없다:형:4
  +유례없:형:4
   유례없이:부:5
   유로:명:4
   유록색:명:1
  @@ -37831,40 +37831,40 @@
   유리:명:1
   유리:명:2
   유리:명:63
  -유리걸식하다:동:1
  +유리걸식하:동:1
   유리구슬:명:1
  -유리되다:동:9
  +유리되:동:9
   유리문:명:9
   유리병:명:6
  -유리시키다:동:1
  +유리시키:동:1
   유리잔:명:1
   유리창:명:40
   유리컵:명:4
   유리판:명:2
  -유리하다:동:2
  -유리하다:형:62
  +유리하:동:2
  +유리하:형:62
   유린:명:6
  -유린당하다:동:1
  -유린되다:동:2
  -유린하다:동:3
  +유린당하:동:1
  +유린되:동:2
  +유린하:동:3
   유림:명:1
   유망:명:17
   유망:명:6
   유망민:명:2
   유망주:명:8
  -유망하다:동:3
  -유망하다:형:5
  +유망하:동:3
  +유망하:형:5
   유머:명:28
   유머집:명:5
   유명:명:38
   유명무실:명:1
  -유명무실하다:형:3
  -유명무실해지다:동:4
  +유명무실하:형:3
  +유명무실해지:동:4
   유명세:명:5
   유명인:명:3
  -유명하다:형:142
  -유명하여지다:동:1
  -유명해지다:동:9
  +유명하:형:142
  +유명하여지:동:1
  +유명해지:동:9
   유모:명:2
   유모차:명:4
   유목:명:21
  @@ -37884,27 +37884,27 @@
   유민:명:7
   유민사:명:1
   유발:명:10
  -유발되다:동:1
  +유발되:동:1
   유발력:명:1
  -유발시키다:동:10
  +유발시키:동:10
   유발점:명:11
  -유발하다:동:35
  +유발하:동:35
   유방:명:7
   유방암:명:7
   유배:명:2
  -유배되다:동:9
  +유배되:동:9
   유배지:명:7
  -유별나다:형:9
  -유별하다:형:4
  +유별나:형:9
  +유별하:형:4
   유보:명:14
  -유보되다:동:3
  -유보시키다:동:3
  +유보되:동:3
  +유보시키:동:3
   유보적:관:1
   유보적:명:1
  -유보하다:동:12
  +유보하:동:12
   유복아:명:1
   유복자:명:1
  -유복하다:형:4
  +유복하:형:4
   유부:명:1
   유부:명:7
   유부국수:명:2
  @@ -37922,19 +37922,19 @@
   유사어:명:1
   유사점:명:3
   유사품:명:1
  -유사하다:형:58
  -유사해지다:동:1
  +유사하:형:58
  +유사해지:동:1
   유산:명:1
   유산:명:14
   유산:명:2
   유산:명:34
  -유산되다:동:6
  -유산시키다:동:2
  +유산되:동:6
  +유산시키:동:2
   유산율:명:1
   유산증:명:1
  -유산하다:동:1
  +유산하:동:1
   유상:명:9
  -유상하다:형:1
  +유상하:형:1
   유색:명:1
   유생:명:3
   유서:명:12
  @@ -37953,22 +37953,22 @@
   유수:명:2
   유수:명:3
   유수:명:4
  -유수하다:형:3
  +유수하:형:3
   유숙:명:1
   유순:명:2
  -유순하다:형:4
  +유순하:형:4
   유스:명:2
   유식:명:2
   유식론:명:1
   유식자:명:1
  -유식하다:형:16
  +유식하:형:16
   유식학:명:2
   유신:명:1
   유신:명:22
   유신견자:명:1
   유실:명:2
  -유실되다:동:5
  -유심하다:형:1
  +유실되:동:5
  +유심하:형:1
   유심히:부:21
   유아:명:10
   유아:명:3
  @@ -37977,10 +37977,10 @@
   유아르엘:명:2
   유아복:명:1
   유아어:명:1
  -유아화시키다:동:1
  +유아화시키:동:1
   유야무야:명:1
  -유야무야되다:동:1
  -유약하다:형:3
  +유야무야되:동:1
  +유약하:형:3
   유언:명:1
   유언:명:1
   유언:명:2
  @@ -37992,64 +37992,64 @@
   유연:명:1
   유연성:명:24
   유연탄:명:1
  -유연하다:형:16
  -유연하다:형:2
  +유연하:형:16
  +유연하:형:2
   유영:명:3
   유영복:명:1
  -유영하다:동:3
  +유영하:동:3
   유예:명:15
  -유예되다:동:2
  +유예되:동:2
   유예론자:명:1
  -유예시키다:동:1
  -유예하다:동:1
  +유예시키:동:1
  +유예하:동:1
   유용:명:5
  -유용되다:동:1
  +유용되:동:1
   유용성:명:3
  -유용하다:동:5
  -유용하다:형:24
  +유용하:동:5
  +유용하:형:24
   유원지:명:1
   유월:명:210
   유유상종:명:1
   유유자적:명:1
   유유히:부:12
   유의미성:명:1
  -유의하다:동:1
  -유의하다:동:43
  +유의하:동:1
  +유의하:동:43
   유익:명:2
  -유익하다:형:20
  +유익하:형:20
   유인:명:1
   유인:명:1
   유인:명:5
  -유인되다:동:2
  +유인되:동:2
   유인물:명:10
   유인원:명:1
   유인책:명:2
  -유인하다:동:8
  +유인하:동:8
   유일:명:15
  -유일무이하다:형:1
  +유일무이하:형:1
   유일신:명:3
  -유일하다:형:107
  +유일하:형:107
   유임:명:1
  -유임되다:동:4
  -유임시키다:동:3
  +유임되:동:4
  +유임시키:동:3
   유입:명:22
   유입기:명:1
  -유입되다:동:25
  +유입되:동:25
   유입량:명:1
   유입부:명:1
  -유입하다:동:1
  +유입하:동:1
   유자:명:1
   유자:명:2
   유자:명:4
   유자차:명:4
   유작전:명:1
  -유장하다:형:2
  +유장하:형:2
   유적:명:51
   유적지:명:19
   유전:명:10
   유전:명:2
   유전:명:6
  -유전되다:동:4
  +유전되:동:4
   유전병:명:2
   유전성:명:3
   유전자:명:38
  @@ -38076,40 +38076,40 @@
   유지:명:114
   유지:명:7
   유지권:명:1
  -유지되다:동:35
  +유지되:동:35
   유지방:명:1
   유지비:명:2
  -유지시키다:동:21
  +유지시키:동:21
   유지인:명:1
  -유지하다:동:274
  +유지하:동:274
   유착:명:19
  -유착되다:동:1
  -유창하다:형:5
  +유착되:동:1
  +유창하:형:5
   유채:명:1
   유채:명:1
   유추:명:8
  -유추되다:동:3
  -유추하다:동:6
  +유추되:동:3
  +유추하:동:6
   유출:명:25
   유출구:명:2
  -유출되다:동:6
  -유출시키다:동:3
  +유출되:동:6
  +유출시키:동:3
   유출액:명:1
  -유출하다:동:5
  +유출하:동:5
   유충:명:3
   유치:명:19
   유치:명:5
  -유치되다:동:2
  -유치시키다:동:1
  +유치되:동:2
  +유치시키:동:1
   유치원:명:58
   유치원생:명:2
   유치장:명:10
  -유치하다:동:3
  -유치하다:동:5
  -유치하다:형:11
  +유치하:동:3
  +유치하:동:5
  +유치하:형:11
   유쾌:명:7
  -유쾌하다:형:19
  -유쾌해지다:동:1
  +유쾌하:형:19
  +유쾌해지:동:1
   유탄:명:1
   유태교:명:4
   유태교도:명:2
  @@ -38119,22 +38119,22 @@
   유토피아적:명:1
   유통:명:90
   유통계:명:1
  -유통되다:동:6
  +유통되:동:6
   유통력:명:1
   유통망:명:7
  -유통시키다:동:6
  +유통시키:동:6
   유통업:명:1
   유통업계:명:1
   유통업자:명:1
   유통업체:명:4
   유틸리티:명:1
   유파:명:7
  -유폐되다:동:1
  +유폐되:동:1
   유포:명:4
  -유포되다:동:7
  -유포시키다:동:2
  +유포되:동:7
  +유포시키:동:2
   유포죄:명:2
  -유포하다:동:3
  +유포하:동:3
   유표적:명:1
   유품:명:2
   유학:명:4
  @@ -38145,32 +38145,32 @@
   유학승:명:1
   유학자:명:8
   유학파:명:3
  -유학하다:동:10
  +유학하:동:10
   유한:명:1
   유한마담:명:1
   유한성:명:1
   유한층:명:1
  -유한하다:형:15
  +유한하:형:15
   유해:명:21
   유해:명:38
   유해론:명:4
   유해물:명:1
   유해성:명:2
  -유해하다:형:6
  +유해하:형:6
   유행:명:57
   유행가:명:8
   유행곡:명:2
  -유행되다:동:2
  +유행되:동:2
   유행병:명:1
   유행성:명:4
  -유행스럽다:형:1
  -유행시키다:동:3
  +유행스럽:형:1
  +유행시키:동:3
   유행어:명:7
   유행적:관:1
   유행적:명:1
  -유행하다:동:37
  +유행하:동:37
   유허비:명:1
  -유현하다:형:1
  +유현하:형:1
   유혈:명:9
   유형:명:38
   유형:명:7
  @@ -38185,10 +38185,10 @@
   유형지:명:1
   유호덕:명:1
   유혹:명:28
  -유혹되다:동:1
  -유혹받다:동:2
  +유혹되:동:1
  +유혹받:동:2
   유혹적:명:1
  -유혹하다:동:21
  +유혹하:동:21
   유화:명:1
   유화:명:3
   유화:명:3
  @@ -38199,8 +38199,8 @@
   유황:명:3
   유효:명:9
   유효성:명:3
  -유효적절하다:형:1
  -유효하다:형:16
  +유효적절하:형:1
  +유효하:형:16
   유훈:명:3
   유휴:명:1
   유휴지:명:1
  @@ -38238,7 +38238,7 @@
   육모정:명:2
   육바라밀:명:2
   육박:명:1
  -육박하다:동:14
  +육박하:동:14
   육백:관:2
   육백:명:1
   육백:수:1
  @@ -38250,10 +38250,10 @@
   육상부원:명:1
   육성:명:19
   육성:명:3
  -육성되다:동:1
  -육성시키다:동:1
  +육성되:동:1
  +육성시키:동:1
   육성책:명:3
  -육성하다:동:19
  +육성하:동:19
   육성회:명:3
   육성회비:명:7
   육성회장:명:2
  @@ -38286,7 +38286,7 @@
   육장:명:1
   육전:명:1
   육종:명:1
  -육중하다:형:7
  +육중하:형:7
   육지:명:37
   육진:명:1
   육질:명:3
  @@ -38309,10 +38309,10 @@
   육해공:명:1
   육해공군:명:1
   육향:명:1
  -육화되다:동:1
  +육화되:동:1
   육환장:명:2
   윤:명:1
  -윤간당하다:동:1
  +윤간당하:동:1
   윤곽:명:35
   윤곽선:명:3
   윤기:명:23
  @@ -38325,10 +38325,10 @@
   윤리적:명:11
   윤리학:명:2
   윤색:명:1
  -윤색되다:동:2
  +윤색되:동:2
   윤택:명:1
  -윤택하다:형:6
  -윤택해지다:동:3
  +윤택하:형:6
  +윤택해지:동:3
   윤허:명:2
   윤화:명:2
   윤활유:명:2
  @@ -38347,54 +38347,54 @@
   율사:명:1
   융모:명:4
   융성기:명:2
  -융성하다:동:6
  -융숭하다:형:1
  +융성하:동:6
  +융숭하:형:1
   융숭히:부:2
   융용기:명:1
   융자:명:10
   융자금:명:1
  -융자받다:동:1
  -융자하다:동:2
  +융자받:동:1
  +융자하:동:2
   융통:명:1
   융통성:명:11
  -융통하다:동:1
  +융통하:동:1
   융합:명:8
  -융합되다:동:7
  -융합하다:동:3
  -융화되다:동:2
  +융합되:동:7
  +융합하:동:3
  +융화되:동:2
   윷:명:1
   윷놀이:명:5
  -윷놀이하다:동:1
  +윷놀이하:동:1
   윷짝:명:1
  -으깨다:동:9
  -으깨지다:동:1
  -으드득하다:동:1
  +으깨:동:9
  +으깨지:동:1
  +으드득하:동:1
   으디:대:1
   으뜸:명:7
  -으뜸가다:동:3
  +으뜸가:동:3
   으레:부:38
   으르렁:부:1
  -으르렁거리다:동:14
  -으르렁대다:동:3
  +으르렁거리:동:14
  +으르렁대:동:3
   으르렁으르렁:부:1
   으른:명:1
   으름장:명:6
  -으리으리하다:형:2
  -으스대다:동:11
  -으스러지다:동:1
  +으리으리하:형:2
  +으스대:동:11
  +으스러지:동:1
   으스스:부:6
  -으스스하다:형:7
  -으스스해지다:동:1
  -으슥하다:형:6
  +으스스하:형:7
  +으스스해지:동:1
  +으슥하:형:6
   으슬으슬:부:1
   으쓱:부:1
  -으쓱거리다:동:2
  -으쓱대다:동:1
  +으쓱거리:동:2
  +으쓱대:동:1
   으쓱으쓱:부:1
   으쓱으쓱:부:1
  -으쓱이다:동:1
  -으쓱하다:동:1
  -으쓱해지다:동:4
  +으쓱이:동:1
  +으쓱하:동:1
  +으쓱해지:동:4
   으아:감:1
   으악:감:11
   으악:부:1
  @@ -38406,30 +38406,30 @@
   으허허:부:3
   으흐흐:부:4
   으흠:감:7
  -윽박지르다:동:7
  +윽박지르:동:7
   은:명:26
   은가루:명:3
   은갑:명:1
   은거:명:2
  -은거하다:동:3
  +은거하:동:3
   은공:명:3
   은그릇:명:6
  -은근스럽다:형:1
  +은근스럽:형:1
   은근슬쩍:부:1
  -은근하다:형:21
  +은근하:형:21
   은근히:부:34
   은기:명:3
   은닉:명:5
  -은닉시키다:동:1
  -은닉하다:동:6
  +은닉시키:동:1
  +은닉하:동:6
   은덕:명:4
   은둔:명:1
   은둔자:명:1
   은둔적:명:1
  -은둔하다:동:2
  +은둔하:동:2
   은막:명:2
   은메달:명:3
  -은밀하다:형:17
  +은밀하:형:17
   은밀히:부:14
   은박:명:1
   은박지:명:5
  @@ -38443,19 +38443,19 @@
   은사권:명:1
   은사시나무:명:2
   은상:명:2
  -은성하다:형:2
  -은신하다:동:3
  +은성하:형:2
  +은신하:동:3
   은실:명:1
  -은애하다:동:1
  +은애하:동:1
   은어:명:4
   은연중:명:10
   은연히:부:1
   은유:명:5
   은유적:명:1
  -은은하다:형:30
  +은은하:형:30
   은은히:부:4
   은인:명:2
  -은인자중하다:동:1
  +은인자중하:동:1
   은자:명:1
   은자:명:1
   은자:명:2
  @@ -38470,11 +38470,11 @@
   은총:명:5
   은퇴:명:14
   은퇴기:명:1
  -은퇴하다:동:15
  +은퇴하:동:15
   은폐:명:3
  -은폐되다:동:1
  -은폐시키다:동:2
  -은폐하다:동:10
  +은폐되:동:1
  +은폐시키:동:2
  +은폐하:동:10
   은하:명:30
   은하계:명:26
   은하단:명:3
  @@ -38491,19 +38491,19 @@
   은혜:명:26
   을:명:10
   을라:명:1
  -을러대다:동:3
  -을러메다:동:1
  +을러대:동:3
  +을러메:동:1
   을매나:부:3
   을미:명:1
   을미년:명:4
   을사오적:명:2
  -을씨년스럽다:형:4
  -을씨년하다:형:1
  +을씨년스럽:형:4
  +을씨년하:형:1
   을유:명:1
   을축:명:3
   을해:명:1
  -읊다:동:9
  -읊조리다:동:8
  +읊:동:9
  +읊조리:동:8
   음:감:154
   음:명:4
   음:명:48
  @@ -38519,7 +38519,7 @@
   음란:명:6
   음란물:명:4
   음란성:명:1
  -음란하다:형:2
  +음란하:형:2
   음력:명:23
   음력설:명:3
   음료:명:94
  @@ -38527,7 +38527,7 @@
   음료수:명:24
   음료업:명:1
   음료업체:명:1
  -음료화하다:동:1
  +음료화하:동:1
   음률:명:3
   음매:부:2
   음모:명:21
  @@ -38535,12 +38535,12 @@
   음모가:명:1
   음모극:명:1
   음모죄:명:1
  -음모하다:동:1
  +음모하:동:1
   음미:명:1
  -음미하다:동:13
  +음미하:동:13
   음반:명:16
   음복:명:3
  -음산하다:형:6
  +음산하:형:6
   음색:명:9
   음서제:명:2
   음성:명:2
  @@ -38550,7 +38550,7 @@
   음성학적:명:1
   음소:명:5
   음수:명:2
  -음습하다:형:2
  +음습하:형:2
   음식:명:498
   음식물:명:50
   음식상:명:2
  @@ -38569,7 +38569,7 @@
   음악적:관:6
   음악적:명:2
   음악제:명:3
  -음악하다:동:2
  +음악하:동:2
   음악회:명:13
   음악회장:명:1
   음압:명:1
  @@ -38583,93 +38583,93 @@
   음용량:명:1
   음용률:명:1
   음용수:명:5
  -음용하다:동:2
  +음용하:동:2
   음운:명:1
  -음울하다:형:3
  +음울하:형:3
   음유:명:3
   음전하:명:3
  -음전하다:형:2
  +음전하:형:2
   음절:명:9
   음정:명:1
   음조:명:2
   음주:명:31
  -음주하다:동:1
  +음주하:동:1
   음지:명:5
   음질:명:1
  -음침하다:형:8
  -음탕하다:형:4
  +음침하:형:8
  +음탕하:형:4
   음파:명:3
   음표:명:3
   음해:명:12
  -음해하다:동:2
  +음해하:동:2
   음행:명:1
   음행성:명:1
   음향:명:20
  -음험하다:형:4
  +음험하:형:4
   음화:명:1
  -음황하다:형:1
  -음흉하다:형:6
  +음황하:형:1
  +음흉하:형:6
   읍:명:23
   읍내:명:25
   읍례:명:1
   읍사:명:5
   읍성:명:2
   읍소:명:1
  -읍소하다:동:1
  +읍소하:동:1
   읍제:명:1
   읍참마속:명:2
   읍치:명:1
  -읍하다:동:1
  -읏다:형:4
  +읍하:동:1
  +읏:형:4
   읏샤읏샤:부:1
   응:감:206
  -응결되다:동:1
  +응결되:동:1
   응결처:명:1
   응결체:명:1
   응급:명:14
   응급실:명:14
   응급조치:명:1
   응낙:명:1
  -응낙하다:동:2
  +응낙하:동:2
   응달:명:5
  -응달지다:형:1
  +응달지:형:1
   응달쪽:명:2
   응답:명:23
   응답기:명:2
   응답률:명:1
   응답식:명:1
   응답자:명:20
  -응답하다:동:19
  +응답하:동:19
   응당:부:3
   응대:명:4
  -응대하다:동:1
  -응등그리다:동:1
  +응대하:동:1
  +응등그리:동:1
   응모:명:1
  -응모되다:동:1
  +응모되:동:1
   응모자:명:3
  -응모하다:동:4
  +응모하:동:4
   응분:명:4
   응석:명:4
   응석꾸러기:명:2
   응석받이:명:1
   응수:명:1
  -응수하다:동:5
  +응수하:동:5
   응시:명:2
   응시:명:6
   응시교:명:1
   응시생:명:3
   응시자:명:2
  -응시하다:동:24
  -응시하다:동:5
  +응시하:동:24
  +응시하:동:5
   응애:부:1
   응어리:명:8
   응용:명:16
   응용과학:명:3
   응용과학자:명:7
  -응용되다:동:3
  +응용되:동:3
   응용력:명:2
   응용법:명:1
  -응용하다:동:17
  +응용하:동:17
   응원:명:10
   응원가:명:2
   응원단:명:2
  @@ -38678,72 +38678,72 @@
   응원상:명:1
   응원석:명:1
   응원전:명:1
  -응원하다:동:3
  +응원하:동:3
   응전:명:1
   응전력:명:1
  -응전하다:동:1
  +응전하:동:1
   응접:명:1
   응접실:명:8
  -응질되다:동:1
  +응질되:동:1
   응집:명:2
  -응집되다:동:1
  +응집되:동:1
   응집력:명:2
   응징:명:10
  -응징하다:동:12
  +응징하:동:12
   응찰:명:1
   응찰액:명:1
   응찰자:명:3
  -응찰하다:동:1
  -응축되다:동:6
  -응축하다:동:1
  -응하다:동:59
  +응찰하:동:1
  +응축되:동:6
  +응축하:동:1
  +응하:동:59
   응혈:명:1
   의:명:13
   의거:명:1
   의거:명:4
   의거일:명:1
  -의거하다:동:13
  +의거하:동:13
   의견:명:298
   의견서:명:4
   의결:명:10
   의결권:명:1
  -의결하다:동:8
  +의결하:동:8
   의경:명:28
   의고:명:3
   의과:명:3
   의관:명:5
   의구심:명:19
   의기:명:2
  -의기소침하다:형:1
  -의기소침해지다:동:1
  -의기양양하다:형:7
  -의기양양해지다:동:1
  -의기양양해하다:동:2
  +의기소침하:형:1
  +의기소침해지:동:1
  +의기양양하:형:7
  +의기양양해지:동:1
  +의기양양해하:동:2
   의기투합:명:1
  -의기투합하다:동:2
  +의기투합하:동:2
   의논:명:16
  -의논성스럽다:형:1
  -의논하다:동:44
  +의논성스럽:형:1
  +의논하:동:44
   의당:부:10
   의대:명:1
   의대:명:18
   의대생:명:5
   의도:명:133
  -의도되다:동:3
  +의도되:동:3
   의도적:관:1
   의도적:명:34
  -의도하다:동:7
  +의도하:동:7
   의례:명:40
   의례복화:명:1
   의례적:관:3
   의례적:명:13
   의례히:부:1
  -의롭다:형:2
  +의롭:형:2
   의뢰:명:11
  -의뢰되다:동:3
  -의뢰받다:동:3
  +의뢰되:동:3
  +의뢰받:동:3
   의뢰인:명:4
  -의뢰하다:동:23
  +의뢰하:동:23
   의료:명:7
   의료:명:77
   의료계:명:9
  @@ -38764,27 +38764,27 @@
   의무자:명:1
   의무적:명:14
   의무화:명:8
  -의무화되다:동:1
  -의무화하다:동:8
  +의무화되:동:1
  +의무화하:동:8
   의문:명:110
   의문문:명:1
   의문사:명:1
  -의문스럽다:형:1
  -의문시되다:동:4
  +의문스럽:형:1
  +의문시되:동:4
   의문점:명:10
   의뭉:명:1
   의미:명:857
   의미론적:관:1
   의미론적:명:1
  -의미심장하다:형:8
  -의미하다:동:164
  -의미화하다:동:4
  +의미심장하:형:8
  +의미하:동:164
  +의미화하:동:4
   의발:명:2
   의법:명:1
   의병:명:26
   의병장:명:4
   의병질:명:1
  -의병질하다:동:1
  +의병질하:동:1
   의보:명:3
   의복:명:1
   의복:명:111
  @@ -38802,7 +38802,7 @@
   의상:명:21
   의상실:명:5
   의상점:명:1
  -의상화하다:동:1
  +의상화하:동:1
   의생:명:1
   의생활:명:3
   의석:명:46
  @@ -38811,33 +38811,33 @@
   의술:명:11
   의식:명:521
   의식:명:59
  -의식되다:동:8
  -의식시키다:동:1
  +의식되:동:8
  +의식시키:동:1
   의식적:관:3
   의식적:명:33
   의식주:명:13
  -의식하다:동:120
  +의식하:동:120
   의식화:명:9
  -의식화되다:동:2
  -의식화시키다:동:1
  -의식화하다:동:3
  +의식화되:동:2
  +의식화시키:동:1
  +의식화하:동:3
   의심:명:52
  -의심나다:동:3
  -의심되다:동:5
  -의심받다:동:7
  -의심스러워하다:동:1
  -의심스럽다:형:28
  -의심하다:동:73
  -의아스럽다:형:4
  +의심나:동:3
  +의심되:동:5
  +의심받:동:7
  +의심스러워하:동:1
  +의심스럽:형:28
  +의심하:동:73
  +의아스럽:형:4
   의아심:명:4
  -의아하다:형:23
  -의아해지다:동:1
  -의아해하다:동:10
  +의아하:형:23
  +의아해지:동:1
  +의아해하:동:10
   의약:명:2
   의약품:명:8
  -의역하다:동:1
  +의역하:동:1
   의연금:명:1
  -의연하다:형:5
  +의연하:형:5
   의연히:부:1
   의외:명:8
   의외로:부:39
  @@ -38854,8 +38854,8 @@
   의의:명:1
   의의:명:57
   의인:명:6
  -의인화되다:동:1
  -의인화하다:동:1
  +의인화되:동:1
  +의인화하:동:1
   의자:명:2
   의자:명:94
   의장:명:124
  @@ -38867,7 +38867,7 @@
   의적:명:1
   의전:명:19
   의전복:명:1
  -의젓하다:형:15
  +의젓하:형:15
   의정:명:1
   의정:명:15
   의정서:명:7
  @@ -38879,19 +38879,19 @@
   의존심:명:5
   의존적:관:1
   의존적:명:5
  -의존하다:동:96
  -의좋다:형:1
  +의존하:동:96
  +의좋:형:1
   의중:명:3
   의지:명:220
   의지:명:3
   의지적:관:1
   의지적:명:1
  -의지하다:동:59
  +의지하:동:59
   의처증:명:1
   의치:명:2
  -의탁하다:동:4
  +의탁하:동:4
   의표:명:2
  -의하다:동:1,412
  +의하:동:1412
   의학:명:76
   의학계:명:9
   의학과:명:9
  @@ -38907,8 +38907,8 @@
   의회:명:114
   이:감:22
   이:관:160
  -이:관:6,332
  -이:대:3,918
  +이:관:6332
  +이:대:3918
   이:명:2
   이:명:3
   이:명:6
  @@ -38916,13 +38916,13 @@
   이:명:79
   이:수:16
   이:의:212
  -이간시키다:동:1
  +이간시키:동:1
   이간질:명:1
  -이간질하다:동:1
  -이간하다:동:1
  +이간질하:동:1
  +이간하:동:1
   이같이:부:41
   이거:대:617
  -이것:대:1,117
  +이것:대:1117
   이것저것:명:32
   이견:명:20
   이경:명:1
  @@ -38938,8 +38938,8 @@
   이과대:명:2
   이과생:명:1
   이관:명:5
  -이관되다:동:1
  -이관하다:동:1
  +이관되:동:1
  +이관하:동:1
   이교도:명:1
   이구동성:명:4
   이국:명:7
  @@ -38953,15 +38953,15 @@
   이궁:명:5
   이권:명:8
   이권설:명:2
  -이글거리다:동:7
  +이글거리:동:7
   이글이글:부:4
  -이글이글하다:동:2
  +이글이글하:동:2
   이급:명:3
   이기:명:2
   이기:명:6
   이기:명:6
  -이기다:동:206
  -이기다:동:4
  +이기:동:206
  +이기:동:4
   이기론:명:1
   이기심:명:8
   이기적:관:1
  @@ -38969,12 +38969,12 @@
   이기주의:명:23
   이기주의자:명:1
   이기주의적:관:1
  -이기죽거리다:동:2
  +이기죽거리:동:2
   이까짓:관:2
   이깟:관:1
  -이끌다:동:182
  -이끌리다:동:18
  -이끌어지다:동:2
  +이끌:동:182
  +이끌리:동:18
  +이끌어지:동:2
   이끼:명:17
   이끼류:명:10
   이나마:부:1
  @@ -38990,19 +38990,19 @@
   이념적:관:18
   이념적:명:4
   이념형:명:1
  -이념화하다:동:1
  +이념화하:동:1
   이녕:명:1
   이놈:대:42
   이농:명:10
   이농민:명:1
   이농자:명:1
  -이농하다:동:2
  +이농하:동:2
   이뇨제:명:3
   이니셔티브:명:3
   이니페린:명:1
   이닝:명:6
  -이다:동:1
  -이다:동:41
  +이:동:1
  +이:동:41
   이다음:명:17
   이다지:부:3
   이단:명:4
  @@ -39017,16 +39017,16 @@
   이데올로기성:명:1
   이데올로기적:관:102
   이데올로기적:명:9
  -이데올로기화되다:동:1
  +이데올로기화되:동:1
   이데올로지스트:명:1
   이동:명:1
   이동:명:91
   이동도서관:명:1
  -이동되다:동:5
  +이동되:동:5
   이동설:명:3
  -이동시키다:동:2
  +이동시키:동:2
   이동식:명:1
  -이동하다:동:52
  +이동하:동:52
   이동형:명:2
   이두:명:5
   이두문:명:1
  @@ -39035,14 +39035,14 @@
   이듬해:명:28
   이등:명:5
   이등병:명:5
  -이등분하다:동:3
  +이등분하:동:3
   이디아이:명:7
   이디엘:명:1
   이디피에스:명:4
   이따:부:12
   이따가:부:10
   이따금:부:34
  -이따만하다:형:1
  +이따만하:형:1
   이때:명:388
   이때껏:부:4
   이랑:명:2
  @@ -39058,18 +39058,18 @@
   이랬:불:17
   이러구러:부:1
   이러나저러나:부:1
  -이러다:동:124
  +이러:동:124
   이러이러:부:1
  -이러이러하다:형:7
  -이러저러하다:형:15
  +이러이러하:형:7
  +이러저러하:형:15
   이러쿵저러쿵:부:3
  -이러쿵저러쿵하다:동:2
  -이러하다:형:1,386
  +이러쿵저러쿵하:동:2
  +이러하:형:1386
   이럭저럭:부:2
   이런:감:10
  -이런:관:1,653
  +이런:관:1653
   이런저런:관:53
  -이렇다:형:1,448
  +이렇:형:1448
   이레:명:2
   이력:명:14
   이력서:명:42
  @@ -39082,32 +39082,32 @@
   이론적:관:79
   이론적:명:25
   이론화:명:2
  -이론화하다:동:1
  -이롭다:형:19
  +이론화하:동:1
  +이롭:형:19
   이롱:명:1
   이루:명:1
   이루:부:11
  -이루다:동:601
  +이루:동:601
   이루수:명:2
  -이루어지다:동:540
  +이루어지:동:540
   이루타:명:1
  -이룩되다:동:16
  -이룩하다:동:89
  -이뤄지다:동:114
  +이룩되:동:16
  +이룩하:동:89
  +이뤄지:동:114
   이류:명:2
   이륙:명:1
  -이륙하다:동:10
  +이륙하:동:10
   이륜차:명:2
  -이르다:동:603
  -이르다:동:74
  -이르다:형:84
  +이르:동:603
  +이르:동:74
  +이르:형:84
   이른바:부:198
   이를테면:접:28
   이름:명:807
   이름값:명:3
  -이름나다:동:12
  +이름나:동:12
   이름표:명:8
  -이름하다:동:7
  +이름하:동:7
   이리:명:7
   이리:부:22
   이리:부:57
  @@ -39116,8 +39116,8 @@
   이리로:부:13
   이리저리:부:11
   이리저리:부:48
  -이리저리하다:동:1
  -이리하다:동:6
  +이리저리하:동:1
  +이리하:동:6
   이리하여:접:16
   이마:명:87
   이마빡:명:1
  @@ -39129,10 +39129,10 @@
   이만육천:관:1
   이만저만:명:6
   이만저만:부:3
  -이만저만하다:형:1
  +이만저만하:형:1
   이만큼:명:5
   이만큼:부:10
  -이만하다:형:14
  +이만하:형:14
   이맘때:명:8
   이맛살:명:7
   이맛전:명:1
  @@ -39148,29 +39148,29 @@
   이문:명:2
   이물:명:1
   이물감:명:1
  -이물리다:동:1
  -이물스럽다:형:1
  +이물리:동:1
  +이물스럽:형:1
   이물질:명:9
   이미:부:842
   이미지:명:208
   이미지적:관:1
  -이미지화되다:동:1
  -이미지화하다:동:1
  +이미지화되:동:1
  +이미지화하:동:1
   이민:명:1
   이민:명:15
   이민족:명:9
  -이민하다:동:1
  +이민하:동:1
   이바구:명:1
   이바지:명:1
   이바지:명:2
  -이바지하다:동:24
  +이바지하:동:24
   이반:명:1
   이발:명:2
   이발료:명:1
   이발사:명:2
   이발소:명:16
   이발쟁이:명:1
  -이발하다:동:2
  +이발하:동:2
   이방:명:3
   이방인:명:4
   이백:관:13
  @@ -39181,14 +39181,14 @@
   이백오륙십만:관:1
   이백오십:관:1
   이백오십:수:1
  -이번:명:1,101
  +이번:명:1101
   이벌찬:명:1
   이법계:명:1
   이벤트:명:19
   이변:명:5
   이변비중:명:1
   이별:명:31
  -이별하다:동:4
  +이별하:동:4
   이병:명:12
   이복동생:명:1
   이복형제:명:1
  @@ -39220,14 +39220,14 @@
   이사장:명:49
   이사장직:명:1
   이사직:명:1
  -이사하다:동:20
  +이사하:동:20
   이사회:명:11
   이삭:명:17
   이삭여뀌:명:1
   이삭줍기:명:1
   이산:명:4
   이산가족:명:12
  -이산되다:동:1
  +이산되:동:1
   이산화질소:명:1
   이산화탄소:명:46
   이산화황:명:10
  @@ -39242,8 +39242,8 @@
   이상론:명:2
   이상상:명:1
   이상성:명:2
  -이상스럽다:형:8
  -이상야릇하다:형:2
  +이상스럽:형:8
  +이상야릇하:형:2
   이상자:명:1
   이상적:관:12
   이상적:명:55
  @@ -39251,12 +39251,12 @@
   이상주의적:관:1
   이상주의적:명:2
   이상증:명:1
  -이상하다:형:295
  -이상해지다:동:6
  +이상하:형:295
  +이상해지:동:6
   이상향:명:6
   이상형:명:11
   이상화:명:1
  -이상화되다:동:3
  +이상화되:동:3
   이색:명:14
   이색적:명:3
   이설:명:3
  @@ -39267,17 +39267,17 @@
   이성적:명:23
   이세:명:15
   이소구아노신:명:2
  -이속시키다:동:2
  +이속시키:동:2
   이속층:명:1
  -이송되다:동:2
  +이송되:동:2
   이수:명:1
   이수자:명:1
  -이수하다:동:2
  +이수하:동:2
   이순:명:2
   이슈:명:13
   이스트:명:2
  -이슥하다:형:6
  -이슥해지다:동:1
  +이슥하:형:6
  +이슥해지:동:1
   이슬:명:32
   이슬람:명:5
   이슬람교:명:5
  @@ -39288,8 +39288,8 @@
   이시:명:3
   이식:명:1
   이식:명:11
  -이식되다:동:2
  -이식하다:동:4
  +이식되:동:2
  +이식하:동:4
   이실직고:명:1
   이심:명:3
   이심전심:명:1
  @@ -39311,28 +39311,28 @@
   이십팔:관:2
   이십팔:수:1
   이쑤시개:명:14
  -이악스럽다:형:1
  +이악스럽:형:1
   이앙법:명:1
   이야:감:1
   이야기:명:970
   이야기꽃:명:3
   이야기꾼:명:5
  -이야기되다:동:7
  +이야기되:동:7
   이야기책:명:7
   이야기체:명:2
   이야기판:명:2
  -이야기하다:동:396
  +이야기하:동:396
   이야깃거리:명:3
   이양:명:7
   이양기:명:1
  -이양되다:동:1
  +이양되:동:1
   이양선:명:1
  -이양하다:동:3
  +이양하:동:3
   이어:부:127
   이어달리기:명:10
  -이어받다:동:25
  +이어받:동:25
   이어서:부:37
  -이어지다:동:230
  +이어지:동:230
   이어폰:명:2
   이엉:명:12
   이에:부:3
  @@ -39341,9 +39341,9 @@
   이열치열:명:1
   이온:명:25
   이완:명:5
  -이완되다:동:7
  +이완되:동:7
   이완성:명:1
  -이완시키다:동:1
  +이완시키:동:1
   이완제:명:1
   이왕:명:1
   이왕:부:11
  @@ -39352,9 +39352,9 @@
   이외:명:159
   이용:명:138
   이용객:명:11
  -이용당하다:동:2
  +이용당하:동:2
   이용도:명:1
  -이용되다:동:75
  +이용되:동:75
   이용량:명:1
   이용료:명:6
   이용률:명:10
  @@ -39364,12 +39364,12 @@
   이용자:명:27
   이용자층:명:1
   이용층:명:1
  -이용하다:동:625
  -이울다:동:2
  +이용하:동:625
  +이울:동:2
   이웃:명:235
   이웃사촌:명:6
   이웃집:명:33
  -이웃하다:동:5
  +이웃하:동:5
   이원:명:1
   이원:명:2
   이원론:명:14
  @@ -39377,11 +39377,11 @@
   이원론적:명:1
   이원적:관:5
   이원화:명:1
  -이원화되다:동:1
  -이원화하다:동:1
  +이원화되:동:1
  +이원화하:동:1
   이월:명:125
  -이월되다:동:2
  -이월시키다:동:1
  +이월되:동:2
  +이월시키:동:1
   이유:명:1
   이유:명:784
   이유서:명:1
  @@ -39402,16 +39402,16 @@
   이익금:명:1
   이임:명:3
   이임식:명:2
  -이임하다:동:1
  +이임하:동:1
   이입:명:10
  -이입하다:동:2
  +이입하:동:2
   이잉:감:1
   이자:대:1
   이자:명:49
   이자세:명:1
   이자율:명:8
   이장:명:7
  -이장하다:동:2
  +이장하:동:2
   이재국:명:1
   이재민:명:2
   이적:명:1
  @@ -39419,13 +39419,13 @@
   이적:명:4
   이적료:명:1
   이적성:명:3
  -이적하다:동:2
  +이적하:동:2
   이전:명:257
   이전:명:28
  -이전되다:동:3
  -이전받다:동:2
  -이전시키다:동:2
  -이전하다:동:13
  +이전되:동:3
  +이전받:동:2
  +이전시키:동:2
  +이전하:동:13
   이점:명:23
   이정표:명:5
   이제:명:1
  @@ -39441,12 +39441,12 @@
   이종:명:1
   이주:명:4
   이주:명:4
  -이주되다:동:1
  +이주되:동:1
   이주민:명:2
   이주비:명:1
  -이주시키다:동:1
  -이주하다:동:7
  -이죽거리다:동:2
  +이주시키:동:1
  +이주하:동:7
  +이죽거리:동:2
   이중:명:45
   이중고:명:1
   이중성:명:4
  @@ -39456,7 +39456,7 @@
   이중창:명:1
   이즘:명:1
   이즘:명:1
  -이지러지다:동:5
  +이지러지:동:5
   이지적:명:3
   이직:명:2
   이직률:명:3
  @@ -39480,10 +39480,10 @@
   이차적:관:2
   이차적:명:7
   이착륙:명:6
  -이착륙하다:동:1
  +이착륙하:동:1
   이찬:명:1
   이채:명:1
  -이채롭다:형:5
  +이채롭:형:5
   이천:관:2
   이천만:관:1
   이천만:수:3
  @@ -39491,7 +39491,7 @@
   이첩:명:2
   이체:명:1
   이체:명:9
  -이체하다:동:1
  +이체하:동:1
   이층집:명:7
   이치:명:68
   이케:불:74
  @@ -39499,10 +39499,10 @@
   이키:감:7
   이타적:관:1
   이탈:명:24
  -이탈되다:동:10
  +이탈되:동:10
   이탈리아어:명:2
   이탈물:명:1
  -이탈하다:동:19
  +이탈하:동:19
   이태:명:6
   이토록:부:23
   이튿날:명:75
  @@ -39521,56 +39521,56 @@
   이해:명:29
   이해:명:8
   이해관계:명:30
  -이해되다:동:43
  +이해되:동:43
   이해득실:명:4
   이해력:명:4
  -이해시키다:동:5
  +이해시키:동:5
   이해심:명:6
   이해타산:명:1
  -이해하다:동:411
  +이해하:동:411
   이행:명:10
   이행:명:11
   이행기:명:4
  -이행되다:동:4
  -이행되다:동:8
  +이행되:동:4
  +이행되:동:8
   이행론:명:3
   이행설:명:2
  -이행하다:동:11
  -이행하다:동:11
  +이행하:동:11
  +이행하:동:11
   이혼:명:23
   이혼남:명:2
   이혼자:명:1
  -이혼하다:동:15
  +이혼하:동:15
   이화:명:2
   이화감:명:1
   이황화탄소:명:6
   이후:명:710
   이힝:감:1
  -익다:동:70
  -익다:형:22
  +익:동:70
  +익:형:22
   익명:명:6
   익명성:명:3
   익명인:명:1
   익명적:관:1
   익모초:명:1
   익반죽:명:1
  -익반죽하다:동:3
  +익반죽하:동:3
   익사:명:6
   익사자:명:1
   익사체:명:2
  -익사하다:동:5
  +익사하:동:5
   익살:명:8
  -익살맞다:형:1
  -익살스럽다:형:11
  +익살맞:형:1
  +익살스럽:형:11
   익선관:명:1
  -익숙하다:형:54
  -익숙해지다:동:49
  +익숙하:형:54
  +익숙해지:동:49
   익스팬션:명:1
   익일:명:1
  -익혀지다:동:1
  +익혀지:동:1
   익히:부:10
  -익히다:동:116
  -익히다:동:30
  +익히:동:116
  +익히:동:30
   인:명:1
   인:명:17
   인:명:19
  @@ -39578,14 +39578,14 @@
   인:명:73
   인가:명:16
   인가:명:9
  -인가되다:동:1
  -인가받다:동:1
  -인가하다:동:3
  -인간:명:1,488
  +인가되:동:1
  +인가받:동:1
  +인가하:동:3
  +인간:명:1488
   인간관:명:10
   인간관계:명:32
   인간군:명:1
  -인간다워지다:동:2
  +인간다워지:동:2
   인간문화재:명:19
   인간미:명:6
   인간사:명:5
  @@ -39607,12 +39607,12 @@
   인격적:관:7
   인격적:명:5
   인격체:명:19
  -인격화하다:동:1
  +인격화하:동:1
   인견:명:1
   인계:명:1
  -인계되다:동:3
  -인계받다:동:2
  -인계하다:동:4
  +인계되:동:3
  +인계받:동:2
  +인계하:동:4
   인고:명:1
   인공:명:4
   인공:명:47
  @@ -39651,7 +39651,7 @@
   인내성:명:1
   인내심:명:14
   인내천:명:5
  -인내하다:동:7
  +인내하:동:7
   인대:명:6
   인덕력:명:2
   인데스:명:1
  @@ -39661,16 +39661,16 @@
   인도:명:2
   인도:명:9
   인도교:명:1
  -인도되다:동:1
  -인도되다:동:2
  -인도받다:동:3
  +인도되:동:1
  +인도되:동:2
  +인도받:동:3
   인도자:명:1
   인도적:명:3
   인도주의:명:3
   인도주의자:명:1
   인도주의적:관:3
  -인도하다:동:10
  -인도하다:동:5
  +인도하:동:10
  +인도하:동:5
   인두:명:5
   인디:명:1
   인력:명:1
  @@ -39692,7 +39692,7 @@
   인마:불:41
   인맥:명:12
   인멸:명:5
  -인멸하다:동:1
  +인멸하:동:1
   인명:명:18
   인명:명:5
   인명사전:명:1
  @@ -39731,7 +39731,7 @@
   인사:명:191
   인사계:명:2
   인사과:명:1
  -인사드리다:동:5
  +인사드리:동:5
   인사말:명:18
   인사법:명:9
   인사부:명:2
  @@ -39742,7 +39742,7 @@
   인사이동설:명:1
   인사이드:명:3
   인사치레:명:6
  -인사하다:동:48
  +인사하:동:48
   인산:명:1
   인산:명:2
   인산칼륨:명:1
  @@ -39751,16 +39751,16 @@
   인상:명:106
   인상:명:19
   인상:명:88
  -인상되다:동:11
  +인상되:동:11
   인상률:명:8
   인상분:명:1
  -인상시키다:동:1
  +인상시키:동:1
   인상안:명:3
   인상적:관:2
   인상적:명:36
   인상파:명:3
  -인상하다:동:17
  -인색하다:형:16
  +인상하:동:17
  +인색하:형:16
   인생:명:255
   인생관:명:17
   인생길:명:2
  @@ -39775,22 +39775,22 @@
   인세:명:3
   인센티브:명:2
   인센티브제:명:1
  -인솔되다:동:1
  -인솔하다:동:4
  +인솔되:동:1
  +인솔하:동:4
   인쇄:명:24
  -인쇄되다:동:14
  +인쇄되:동:14
   인쇄물:명:4
   인쇄소:명:1
   인쇄술:명:4
  -인쇄시키다:동:1
  +인쇄시키:동:1
   인쇄업자:명:2
  -인쇄하다:동:7
  +인쇄하:동:7
   인수:명:38
   인수권부:명:1
  -인수받다:동:1
  -인수시키다:동:1
  +인수받:동:1
  +인수시키:동:1
   인수인계:명:1
  -인수하다:동:29
  +인수하:동:29
   인술:명:1
   인스턴트:명:8
   인스턴트식품:명:5
  @@ -39802,15 +39802,15 @@
   인식:명:373
   인식기:명:1
   인식도:명:1
  -인식되다:동:45
  +인식되:동:45
   인식론적:관:12
   인식론적:명:1
   인식률:명:1
  -인식시키다:동:7
  +인식시키:동:7
   인식자:명:1
   인식적:관:1
   인식표:명:1
  -인식하다:동:136
  +인식하:동:136
   인신:명:9
   인신공격:명:7
   인신매매:명:31
  @@ -39820,15 +39820,15 @@
   인양기:명:1
   인어:명:9
   인연:명:91
  -인연하다:동:1
  +인연하:동:1
   인욕:명:1
   인용:명:11
   인용:명:2
   인용:의:6
  -인용되다:동:5
  +인용되:동:5
   인용자:명:3
  -인용하다:동:1
  -인용하다:동:25
  +인용하:동:1
  +인용하:동:25
   인원:명:45
   인원수:명:3
   인위적:관:8
  @@ -39841,26 +39841,26 @@
   인자:명:9
   인자:부:8
   인자:의:3
  -인자하다:형:14
  +인자하:형:14
   인재:명:2
   인재:명:31
   인적:관:25
   인적:명:9
   인절미:명:6
   인접:명:12
  -인접되다:동:1
  -인접하다:동:14
  +인접되:동:1
  +인접하:동:14
   인정:명:1
   인정:명:20
   인정:명:46
  -인정되다:동:42
  +인정되:동:42
   인정머리:명:3
   인정미:명:1
  -인정받다:동:45
  -인정사정없다:형:1
  +인정받:동:45
  +인정사정없:형:1
   인정사정없이:부:1
   인정자:명:2
  -인정하다:동:257
  +인정하:동:257
   인제:명:15
   인제:부:143
   인조:명:5
  @@ -39874,18 +39874,18 @@
   인주:명:3
   인준:명:4
   인중:명:3
  -인증하다:동:1
  +인증하:동:1
   인지:명:1
   인지:명:11
   인지:명:6
   인지도:명:26
  -인지되다:동:3
  +인지되:동:3
   인지상정:명:3
   인지세:명:4
  -인지시키다:동:2
  +인지시키:동:2
   인지율:명:2
   인지적:관:1
  -인지하다:동:5
  +인지하:동:5
   인질:명:4
   인책:명:2
   인책적:관:1
  @@ -39893,17 +39893,17 @@
   인체:명:64
   인출:명:11
   인출기:명:1
  -인출되다:동:4
  -인출하다:동:7
  +인출되:동:4
  +인출하:동:7
   인치:명:4
   인치:의:10
  -인치되다:동:1
  +인치되:동:1
   인콰이어리:명:2
   인터내셔널:명:1
   인터넷:명:88
   인터럽트:명:1
   인터뷰:명:45
  -인터뷰하다:동:12
  +인터뷰하:동:12
   인터체인지:명:9
   인터컴:명:1
   인터페이스:명:4
  @@ -39922,27 +39922,27 @@
   인플루엔자:명:3
   인피:명:1
   인하:명:43
  -인하다:동:296
  -인하되다:동:1
  -인하하다:동:9
  +인하:동:296
  +인하되:동:1
  +인하하:동:9
   인형:명:41
   인형극:명:1
   인화:명:1
   인화:명:1
   인화:명:2
   인화:명:2
  -인화되다:동:1
  +인화되:동:1
   인화물:명:1
   인화성:명:2
   인화지:명:2
  -인화하다:동:1
  +인화하:동:1
   인환:명:1
   일:관:222
   일:명:12
  -일:명:4,271
  +일:명:4271
   일:명:5
   일:수:22
  -일:의:2,808
  +일:의:2808
   일가:명:27
   일가견:명:6
   일가족:명:5
  @@ -39954,7 +39954,7 @@
   일간:부:1
   일간지:명:14
   일갈:명:2
  -일갈하다:동:2
  +일갈하:동:2
   일감:명:2
   일개:명:9
   일개미:명:2
  @@ -39973,39 +39973,39 @@
   일과성:명:4
   일과표:명:2
   일관:명:3
  -일관되다:동:26
  +일관되:동:26
   일관성:명:38
  -일관하다:동:19
  +일관하:동:19
   일괄:명:8
   일괄적:명:3
   일광:명:9
   일광욕:명:1
   일교차:명:4
  -일구다:동:25
  +일구:동:25
   일국:명:3
  -일그러뜨리다:동:7
  -일그러지다:동:22
  +일그러뜨리:동:7
  +일그러지:동:22
   일급:명:6
   일기:명:1
   일기:명:21
   일기:명:59
   일기장:명:7
   일기책:명:1
  -일깨우다:동:49
  -일깨워지다:동:2
  +일깨우:동:49
  +일깨워지:동:2
   일껏:부:2
   일꾼:명:28
   일년생:명:1
   일념:명:6
   일념삼천:명:2
  -일다:동:1
  -일다:동:86
  +일:동:1
  +일:동:86
   일단:명:11
   일단:명:4
   일단:명:4
   일단:부:321
   일단락:명:1
  -일단락되다:동:4
  +일단락되:동:4
   일단정지:명:1
   일당:명:12
   일당:명:17
  @@ -40024,11 +40024,11 @@
   일란성:명:1
   일람표:명:1
   일래:명:2
  -일러두다:동:2
  -일러바치다:동:8
  +일러두:동:2
  +일러바치:동:8
   일러스트레이션:명:2
  -일렁거리다:동:6
  -일렁이다:동:7
  +일렁거리:동:6
  +일렁이:동:7
   일렉트로닉:명:2
   일력:명:3
   일련:명:65
  @@ -40048,13 +40048,13 @@
   일만이천:관:2
   일말:명:4
   일맥:명:1
  -일맥상통하다:동:1
  +일맥상통하:동:1
   일면:명:18
   일면적:관:1
   일면적:명:5
   일명:명:29
   일모:명:1
  -일목요연하다:형:2
  +일목요연하:형:2
   일몫:명:1
   일몰:명:4
   일무:명:2
  @@ -40074,8 +40074,8 @@
   일반적:명:174
   일반직:명:1
   일반화:명:4
  -일반화되다:동:26
  -일반화하다:동:11
  +일반화되:동:26
  +일반화하:동:11
   일발:명:1
   일방:명:5
   일방성:명:1
  @@ -40090,9 +40090,9 @@
   일변:명:1
   일변:명:1
   일변도:명:3
  -일변하다:동:1
  +일변하:동:1
   일별:명:2
  -일별하다:동:7
  +일별하:동:7
   일병:명:29
   일보:명:4
   일본명:명:1
  @@ -40100,7 +40100,7 @@
   일본어:명:12
   일본잎갈나무:명:1
   일본제:명:4
  -일본화시키다:동:1
  +일본화시키:동:1
   일부:명:493
   일부러:부:90
   일부분:명:13
  @@ -40108,12 +40108,12 @@
   일사:명:1
   일사병:명:4
   일사불란:명:1
  -일사불란하다:형:5
  +일사불란하:형:5
   일사오:명:2
   일사천리:명:1
   일산화이질소:명:1
   일산화탄소:명:6
  -일삼다:동:19
  +일삼:동:19
   일상:명:78
   일상다반사:명:2
   일상복:명:3
  @@ -40125,7 +40125,7 @@
   일상용어:명:1
   일상적:관:23
   일상적:명:38
  -일상화되다:동:3
  +일상화되:동:3
   일색:명:7
   일생:명:51
   일생:의:4
  @@ -40133,7 +40133,7 @@
   일석점호:명:1
   일선:명:50
   일설:명:2
  -일소하다:동:2
  +일소하:동:2
   일속:명:1
   일손:명:29
   일수:명:12
  @@ -40151,15 +40151,15 @@
   일신:명:4
   일신교:명:1
   일신상:명:1
  -일신하다:동:2
  +일신하:동:2
   일실:명:4
   일심:명:10
   일심:명:8
   일쑤:명:55
   일약:부:10
   일어:명:8
  -일어나다:동:880
  -일어서다:동:124
  +일어나:동:880
  +일어서:동:124
   일어판:명:2
   일언반구:명:5
   일언지하:명:1
  @@ -40170,7 +40170,7 @@
   일용:명:1
   일용직:명:2
   일용품:명:6
  -일용하다:동:2
  +일용하:동:2
   일원:명:1
   일원:명:10
   일원:명:15
  @@ -40178,11 +40178,11 @@
   일원론적:관:2
   일원론적:명:1
   일원적:명:8
  -일원화하다:동:2
  +일원화하:동:2
   일월:명:131
   일월대:명:1
  -일으켜지다:동:1
  -일으키다:동:322
  +일으켜지:동:1
  +일으키:동:322
   일이:관:3
   일이천:관:1
   일익:명:1
  @@ -40196,7 +40196,7 @@
   일일이:부:38
   일일일선:명:1
   일임:명:1
  -일임하다:동:5
  +일임하:동:5
   일자:명:4
   일자:명:54
   일자리:명:21
  @@ -40213,8 +40213,8 @@
   일정량:명:4
   일정액:명:6
   일정표:명:1
  -일정하다:형:169
  -일정해지다:동:2
  +일정하:형:169
  +일정해지:동:2
   일제:명:134
   일제:명:7
   일제:명:8
  @@ -40225,12 +40225,12 @@
   일조권:명:1
   일조량:명:1
   일조점호:명:1
  -일조하다:동:8
  +일조하:동:8
   일족:명:2
   일종:명:103
   일주:명:2
   일주일:명:157
  -일주하다:동:2
  +일주하:동:2
   일중선:명:1
   일지:명:11
   일직:명:3
  @@ -40250,7 +40250,7 @@
   일천:수:1
   일천구백칠십:관:1
   일천구백팔십:관:1
  -일천하다:형:1
  +일천하:형:1
   일체:명:15
   일체:명:55
   일체:부:20
  @@ -40262,24 +40262,24 @@
   일체화:명:1
   일촉즉발:명:1
   일촌:명:9
  -일축되다:동:2
  -일축시키다:동:1
  -일축하다:동:14
  +일축되:동:2
  +일축시키:동:1
  +일축하:동:14
   일출:명:6
   일취월장:명:1
  -일취월장하다:동:2
  +일취월장하:동:2
   일치:명:41
   일치단결:명:1
  -일치되다:동:19
  +일치되:동:19
   일치론:명:1
  -일치시키다:동:7
  -일치하다:동:84
  +일치시키:동:7
  +일치하:동:84
   일침:명:2
  -일컫다:동:28
  -일컬어지다:동:16
  +일컫:동:28
  +일컬어지:동:16
   일탈:명:11
   일탈자:명:4
  -일탈하다:동:13
  +일탈하:동:13
   일터:명:16
   일테면:접:7
   일통:명:1
  @@ -40290,7 +40290,7 @@
   일품:명:25
   일품요리:명:3
   일필휘지:명:1
  -일하다:동:328
  +일하:동:328
   일행:명:91
   일화:명:21
   일확천금:명:3
  @@ -40308,16 +40308,16 @@
   일흔일곱:수:1
   일흔한:관:1
   일희일비:명:1
  -일희일비하다:동:1
  +일희일비하:동:1
   읽기:명:1
  -읽다:동:910
  +읽:동:910
   읽을거리:명:5
  -읽혀지다:동:6
  -읽히다:동:11
  -읽히다:동:17
  -잃다:동:286
  -잃어버리다:동:82
  -잃어지다:동:2
  +읽혀지:동:6
  +읽히:동:11
  +읽히:동:17
  +잃:동:286
  +잃어버리:동:82
  +잃어지:동:2
   임:명:9
   임간:명:1
   임검소:명:1
  @@ -40333,25 +40333,25 @@
   임내:명:2
   임노동:명:2
   임대:명:42
  -임대되다:동:1
  +임대되:동:1
   임대료:명:11
   임대비:명:1
   임대율:명:1
   임대차:명:1
  -임대하다:동:4
  +임대하:동:4
   임란:명:1
  -임립하다:동:1
  +임립하:동:1
   임면:명:3
   임명:명:17
   임명권자:명:2
  -임명되다:동:33
  +임명되:동:33
   임명장:명:18
   임명직:명:1
  -임명하다:동:40
  +임명하:동:40
   임목:명:1
   임무:명:53
   임박:명:3
  -임박하다:동:15
  +임박하:동:15
   임부:명:11
   임부복:명:5
   임사:명:2
  @@ -40360,7 +40360,7 @@
   임산부:명:6
   임산부복:명:1
   임상:명:18
  -임석하다:동:2
  +임석하:동:2
   임수:명:1
   임시:명:75
   임시방편:명:1
  @@ -40368,19 +40368,19 @@
   임시직:명:7
   임신:명:148
   임신년:명:4
  -임신되다:동:1
  +임신되:동:1
   임신부:명:34
   임신성:명:3
  -임신시키다:동:1
  +임신시키:동:1
   임신율:명:1
  -임신하다:동:25
  +임신하:동:25
   임야:명:17
   임업:명:7
   임오년:명:1
   임용:명:9
   임용권자:명:2
   임용제:명:2
  -임용하다:동:5
  +임용하:동:5
   임원:명:21
   임원실:명:1
   임원진:명:2
  @@ -40400,8 +40400,8 @@
   임진왜란:명:29
   임차인:명:1
   임파선:명:2
  -임하다:동:2
  -임하다:동:41
  +임하:동:2
  +임하:동:41
   임학:명:4
   임해:명:14
   입:명:575
  @@ -40409,56 +40409,56 @@
   입가심:명:5
   입각:명:3
   입각:명:3
  -입각하다:동:79
  -입거하다:동:1
  +입각하:동:79
  +입거하:동:1
   입건:명:7
  -입건되다:동:5
  -입건하다:동:12
  +입건되:동:5
  +입건하:동:12
   입견:명:1
   입경:명:1
   입고:명:1
  -입관되다:동:2
  +입관되:동:2
   입교:명:1
  -입교하다:동:2
  +입교하:동:2
   입구:명:101
   입국:명:1
   입국:명:9
   입국자:명:3
  -입국하다:동:4
  +입국하:동:4
   입금:명:4
  -입금되다:동:5
  -입금시키다:동:5
  +입금되:동:5
  +입금시키:동:5
   입금자:명:1
  -입금하다:동:4
  +입금하:동:4
   입김:명:12
   입내:명:1
   입놀림:명:3
  -입다:동:550
  +입:동:550
   입단:명:14
  -입단하다:동:8
  +입단하:동:8
   입담:명:2
   입당:명:5
  -입당하다:동:3
  +입당하:동:3
   입대:명:40
  -입대하다:동:8
  +입대하:동:8
   입덧:명:27
   입동:명:2
   입때:부:1
   입때껏:부:1
   입력:명:30
  -입력되다:동:7
  -입력시키다:동:2
  -입력하다:동:27
  +입력되:동:7
  +입력시키:동:2
  +입력하:동:27
   입론:명:28
   입막음:명:1
   입맛:명:46
   입매:명:2
   입무:명:2
   입문:명:6
  -입문되다:동:2
  -입문하다:동:6
  +입문되:동:2
  +입문하:동:6
   입바람:명:1
  -입바르다:형:3
  +입바르:형:3
   입방아:명:2
   입버릇:명:11
   입법:명:47
  @@ -40468,32 +40468,32 @@
   입법안:명:1
   입법자:명:1
   입법적:관:1
  -입법화하다:동:2
  +입법화하:동:2
   입사:명:19
   입사각:명:1
  -입사시키다:동:1
  +입사시키:동:1
   입사일:명:1
  -입사하다:동:15
  +입사하:동:15
   입산:명:1
   입상:명:3
   입상자:명:5
  -입상하다:동:2
  +입상하:동:2
   입석:명:1
   입선:명:1
  -입선되다:동:1
  +입선되:동:1
   입선작:명:1
  -입선하다:동:1
  +입선하:동:1
   입성:명:2
   입성:명:4
  -입성하다:동:5
  +입성하:동:5
   입소자:명:1
  -입소하다:동:1
  +입소하:동:1
   입속:명:10
   입수:명:4
   입수:명:7
  -입수되다:동:1
  -입수하다:동:1
  -입수하다:동:16
  +입수되:동:1
  +입수하:동:1
  +입수하:동:16
   입술:명:135
   입술소리:명:1
   입시:명:207
  @@ -40505,27 +40505,27 @@
   입신:명:1
   입신양명:명:1
   입신출세주의:명:4
  -입신출세하다:동:1
  -입신하다:동:1
  +입신출세하:동:1
  +입신하:동:1
   입실:명:1
  -입실시키다:동:2
  +입실시키:동:2
   입씨름:명:4
   입아귀:명:1
   입안:명:1
  -입안되다:동:1
  -입안하다:동:4
  +입안되:동:1
  +입안하:동:4
   입양:명:7
  -입양되다:동:2
  +입양되:동:2
   입양아:명:2
  -입양하다:동:1
  +입양하:동:1
   입어료:명:1
   입영:명:3
  -입욕하다:동:1
  +입욕하:동:1
   입원:명:28
   입원비:명:2
  -입원시키다:동:9
  +입원시키:동:9
   입원실:명:5
  -입원하다:동:25
  +입원하:동:25
   입자:명:23
   입자기:명:1
   입장:명:453
  @@ -40533,27 +40533,27 @@
   입장객:명:5
   입장권:명:5
   입장료:명:9
  -입장시키다:동:1
  -입장하다:동:10
  +입장시키:동:1
  +입장하:동:10
   입적:명:1
  -입적하다:동:3
  +입적하:동:3
   입정:명:1
   입주:명:17
   입주금:명:1
   입주자:명:5
  -입주하다:동:7
  +입주하:동:7
   입증:명:12
  -입증되다:동:19
  -입증시키다:동:1
  -입증하다:동:43
  +입증되:동:19
  +입증시키:동:1
  +입증하:동:43
   입지:명:2
   입지:명:35
  -입지시키다:동:1
  +입지시키:동:1
   입지점:명:1
  -입지하다:동:6
  +입지하:동:6
   입질:명:2
   입찰:명:23
  -입찰받다:동:1
  +입찰받:동:1
   입찰제:명:7
   입천장:명:2
   입체:명:15
  @@ -40563,7 +40563,7 @@
   입체파:명:2
   입체형:명:2
   입체화:명:1
  -입체화되다:동:1
  +입체화되:동:1
   입초:명:3
   입초국:명:1
   입초사:명:1
  @@ -40580,41 +40580,41 @@
   입학금:명:5
   입학난:명:1
   입학생:명:3
  -입학시키다:동:10
  +입학시키:동:10
   입학시험:명:5
   입학시험장:명:1
   입학식:명:6
   입학식장:명:1
   입학자:명:4
   입학제:명:6
  -입학하다:동:45
  +입학하:동:45
   입항:명:13
   입항주:명:2
  -입항하다:동:23
  -입행하다:동:2
  -입혀지다:동:3
  +입항하:동:23
  +입행하:동:2
  +입혀지:동:3
   입회:명:1
   입회:명:3
   입회비:명:1
  -입회하다:동:1
  +입회하:동:1
   입후보자:명:11
  -입후보하다:동:5
  -입히다:동:51
  +입후보하:동:5
  +입히:동:51
   잇기:명:1
  -잇다:동:294
  -잇달다:동:40
  -잇닿다:동:2
  -잇대다:동:1
  -잇대이다:동:1
  -잇따르다:동:73
  +잇:동:294
  +잇달:동:40
  +잇닿:동:2
  +잇대:동:1
  +잇대이:동:1
  +잇따르:동:73
   잇몸:명:5
   잇바디:명:4
   잇새:명:1
   잇소리:명:1
   잇속:명:1
  -있다:동:253
  -있다:보:18,553
  -있다:형:18,202
  +있:동:253
  +있다:보:18553
  +있:형:18202
   잉:감:13
   잉걸:명:1
   잉글리시:명:2
  @@ -40628,12 +40628,12 @@
   잉크병:명:1
   잉크젯:명:1
   잉태:명:1
  -잉태되다:동:2
  -잉태시키다:동:1
  -잉태하다:동:11
  -잊다:동:242
  -잊어버리다:동:72
  -잊혀지다:동:28
  +잉태되:동:2
  +잉태시키:동:1
  +잉태하:동:11
  +잊:동:242
  +잊어버리:동:72
  +잊혀지:동:28
   잎:명:135
   잎눈:명:1
   잎사귀:명:23
  @@ -40652,11 +40652,11 @@
   자가운전:명:1
   자가품:명:1
   자각:명:18
  -자각되다:동:4
  -자각시키다:동:2
  +자각되:동:4
  +자각시키:동:2
   자각적:관:1
   자각적:명:4
  -자각하다:동:20
  +자각하:동:20
   자갈:명:27
   자갈돌:명:3
   자갈밭:명:11
  @@ -40669,9 +40669,9 @@
   자격지심:명:2
   자견:명:1
   자결:명:3
  -자결하다:동:5
  +자결하:동:5
   자계:명:1
  -자계하다:동:1
  +자계하:동:1
   자고로:부:4
   자고저:명:1
   자곱:명:1
  @@ -40684,7 +40684,7 @@
   자국민:명:2
   자국어:명:1
   자국적:명:2
  -자국화하다:동:1
  +자국화하:동:1
   자궁:명:33
   자궁병:명:3
   자궁암:명:1
  @@ -40692,15 +40692,15 @@
   자귀나무:명:1
   자규:명:2
   자그마치:부:5
  -자그마하다:형:16
  -자그맣다:형:1
  +자그마하:형:16
  +자그맣:형:1
   자극:명:71
  -자극받다:동:4
  +자극받:동:4
   자극성:명:1
  -자극시키다:동:1
  +자극시키:동:1
   자극적:명:7
   자극제:명:1
  -자극하다:동:52
  +자극하:동:52
   자근자근:부:2
   자글자글:부:1
   자금:명:2
  @@ -40711,16 +40711,16 @@
   자금원:명:3
   자금줄:명:1
   자금화:명:1
  -자금화하다:동:1
  +자금화하:동:1
   자급:명:5
   자급도:명:5
   자급자족:명:4
  -자급자족하다:동:2
  +자급자족하:동:2
   자급적:관:1
  -자급하다:동:2
  +자급하:동:2
   자긍:명:2
   자긍심:명:5
  -자기:대:1,281
  +자기:대:1281
   자기:대:4
   자기:명:11
   자기:명:14
  @@ -40742,7 +40742,7 @@
   자기소개:명:8
   자기식:명:1
   자기실현:명:13
  -자기실현하다:동:1
  +자기실현하:동:1
   자기앞:명:5
   자기애:명:2
   자기의식:명:2
  @@ -40761,7 +40761,7 @@
   자네:대:142
   자녀:명:150
   자녀관:명:1
  -자다:동:395
  +자:동:395
   자당:명:1
   자대:명:4
   자동:명:78
  @@ -40780,26 +40780,26 @@
   자동판매기:명:4
   자동학과:명:1
   자동화:명:25
  -자동화되다:동:4
  -자동화하다:동:4
  +자동화되:동:4
  +자동화하:동:4
   자두:명:2
   자드락길:명:2
  -자디잘다:형:1
  +자디잘:형:1
   자라:명:2
   자라:명:3
  -자라나다:동:36
  -자라다:동:1
  -자라다:동:283
  +자라나:동:36
  +자라:동:1
  +자라:동:283
   자락:명:20
   자란:명:1
   자랑:명:45
   자랑거리:명:9
  -자랑삼다:동:3
  -자랑스러워하다:동:5
  -자랑스럽다:형:83
  +자랑삼:동:3
  +자랑스러워하:동:5
  +자랑스럽:형:83
   자랑스레:부:2
  -자랑시키다:동:2
  -자랑하다:동:73
  +자랑시키:동:2
  +자랑하:동:73
   자력:명:1
   자력갱생:명:2
   자료:명:414
  @@ -40810,35 +40810,35 @@
   자료집:명:7
   자루:명:13
   자루:명:5
  -자르다:동:197
  +자르:동:197
   자리:명:26
   자리:명:856
   자리끼:명:2
   자리다툼:명:1
   자리바꿈:명:1
  -자리바꿈하다:동:1
  +자리바꿈하:동:1
   자리보전:명:1
  -자리보전하다:동:1
  -자리하다:동:25
  +자리보전하:동:1
  +자리하:동:25
   자립:명:12
   자립도:명:4
   자립성:명:1
   자립적:관:1
   자립적:명:3
  -자립하다:동:14
  +자립하:동:14
   자립형:명:2
   자릿수:명:6
   자막:명:10
   자만:명:3
   자만심:명:2
  -자만하다:동:4
  +자만하:동:4
   자매:명:21
   자매편:명:2
   자멸:명:2
  -자멸시키다:동:1
  +자멸시키:동:1
   자명종:명:2
  -자명하다:형:12
  -자명해지다:동:2
  +자명하:형:12
  +자명해지:동:2
   자모:명:5
   자모회:명:2
   자목련:명:1
  @@ -40846,8 +40846,8 @@
   자문:명:1
   자문:명:27
   자문자답:명:1
  -자문하다:동:2
  -자문하다:동:6
  +자문하:동:2
  +자문하:동:6
   자물쇠:명:13
   자물통:명:2
   자민족:명:1
  @@ -40860,8 +40860,8 @@
   자발적:명:34
   자배기:명:1
   자백:명:19
  -자백받다:동:1
  -자백하다:동:6
  +자백받:동:1
  +자백하:동:6
   자보:명:1
   자본:명:118
   자본가:명:15
  @@ -40878,11 +40878,11 @@
   자본주의적:명:4
   자본파적:관:1
   자부심:명:33
  -자부하다:동:13
  +자부하:동:13
   자비:명:13
   자비:명:3
  -자비롭다:형:8
  -자빠지다:동:7
  +자비롭:형:8
  +자빠지:동:7
   자사:명:14
   자산:명:35
   자산가:명:1
  @@ -40891,16 +40891,16 @@
   자살골:명:3
   자살극:명:2
   자살자:명:1
  -자살하다:동:16
  -자상하다:형:15
  -자상해지다:동:1
  +자살하:동:16
  +자상하:형:15
  +자상해지:동:1
   자상히:부:1
   자색:명:2
   자색:명:4
   자생:명:2
   자생력:명:8
   자생적:관:1
  -자생하다:동:15
  +자생하:동:15
   자서:명:2
   자서전:명:5
   자석:명:1
  @@ -40910,37 +40910,37 @@
   자세:명:10
   자세:명:344
   자세:부:3
  -자세하다:형:49
  +자세하:형:49
   자세히:부:96
   자소:명:5
   자손:명:24
   자손만대:명:2
   자수:명:4
   자수:명:9
  -자수하다:동:1
  -자수하다:동:1
  -자숙하다:동:2
  +자수하:동:1
  +자수하:동:1
  +자숙하:동:2
   자술서:명:4
   자슥:명:1
   자습:명:8
   자습서:명:2
  -자시다:동:11
  +자시:동:11
   자식:명:416
   자식새끼:명:1
  -자신:명:1,799
  +자신:명:1799
   자신:명:102
   자신감:명:50
   자신만만:명:1
  -자신만만하다:형:12
  -자신만만해하다:동:1
  -자신하다:동:6
  +자신만만하:형:12
  +자신만만해하:동:1
  +자신하:동:6
   자아:명:40
  -자아내다:동:31
  +자아내:동:31
   자아비판:명:3
   자아실현:명:8
   자아의식:명:1
   자애:명:3
  -자애롭다:형:2
  +자애롭:형:2
   자양:명:2
   자양분:명:1
   자업자득:명:1
  @@ -40951,7 +40951,7 @@
   자연계:명:9
   자연관:명:26
   자연대:명:2
  -자연도태되다:동:1
  +자연도태되:동:1
   자연동:명:1
   자연림:명:4
   자연물:명:8
  @@ -40960,13 +40960,13 @@
   자연법칙:명:40
   자연변증법:명:1
   자연보호:명:9
  -자연보호하다:동:1
  +자연보호하:동:1
   자연사:명:1
   자연산:명:2
   자연석:명:3
   자연성:명:3
  -자연스러워지다:동:3
  -자연스럽다:형:243
  +자연스러워지:동:3
  +자연스럽:형:243
   자연스레:부:12
   자연식:명:2
   자연식품:명:3
  @@ -40988,7 +40988,7 @@
   자영업자:명:1
   자외선:명:18
   자욱이:부:2
  -자욱하다:형:11
  +자욱하:형:11
   자울자울:부:1
   자원:명:14
   자원:명:157
  @@ -40998,22 +40998,22 @@
   자위권:명:6
   자위대:명:12
   자위적:관:1
  -자위하다:동:4
  +자위하:동:4
   자위행위:명:2
   자유:명:286
   자유권:명:3
  -자유로워지다:동:13
  +자유로워지:동:13
   자유로이:부:8
  -자유롭다:형:181
  +자유롭:형:181
   자유민:명:1
   자유방임:명:1
   자유분방:명:1
  -자유분방하다:형:7
  -자유분방해지다:동:1
  +자유분방하:형:7
  +자유분방해지:동:1
   자유사상:명:1
   자유선거:명:3
  -자유스러워지다:동:1
  -자유스럽다:형:11
  +자유스러워지:동:1
  +자유스럽:형:11
   자유시:명:1
   자유업:명:1
   자유의사:명:1
  @@ -41028,35 +41028,35 @@
   자유항:명:1
   자유형:명:6
   자유화:명:38
  -자유화되다:동:6
  +자유화되:동:6
   자유화율:명:1
  -자유화하다:동:6
  +자유화하:동:6
   자율:명:65
   자율권:명:2
   자율성:명:24
   자율적:관:14
   자율적:명:19
   자율화:명:25
  -자율화되다:동:1
  -자율화하다:동:1
  +자율화되:동:1
  +자율화하:동:1
   자음:명:8
   자의:명:6
   자의성:명:2
   자의식:명:18
  -자의식하다:동:1
  +자의식하:동:1
   자의적:관:3
   자의적:명:12
   자이로플레인:명:1
  -자인하다:동:1
  -자임하다:동:5
  -자자하다:형:7
  +자인하:동:1
  +자임하:동:5
  +자자하:형:7
   자작:명:2
   자작극:명:1
   자작나무:명:1
   자작농:명:2
   자작지:명:1
  -자작하다:형:2
  -자잘하다:형:5
  +자작하:형:2
  +자잘하:형:5
   자장:명:4
   자장가:명:3
   자장권:명:1
  @@ -41064,8 +41064,8 @@
   자재:명:17
   자재난:명:1
   자재부:명:1
  -자재하다:동:1
  -자적하다:동:2
  +자재하:동:1
  +자적하:동:2
   자전:명:1
   자전:명:3
   자전:명:5
  @@ -41078,10 +41078,10 @@
   자정:명:5
   자제:명:14
   자제:명:19
  -자제되다:동:3
  +자제되:동:3
   자제력:명:2
  -자제시키다:동:1
  -자제하다:동:29
  +자제시키:동:1
  +자제하:동:29
   자조:명:1
   자조:명:1
   자조:명:2
  @@ -41090,7 +41090,7 @@
   자족:명:2
   자족성:명:1
   자족적:명:3
  -자족하다:동:2
  +자족하:동:2
   자존:명:1
   자존감:명:1
   자존성:명:1
  @@ -41111,33 +41111,33 @@
   자주화:명:1
   자줏빛:명:6
   자중:명:1
  -자중하다:동:5
  -자지러지다:동:9
  +자중하:동:5
  +자지러지:동:9
   자진:명:13
   자진모리:명:1
  -자진하다:동:10
  +자진하:동:10
   자질:명:16
  -자질구레하다:형:5
  +자질구레하:형:5
   자책:명:3
   자책감:명:2
   자책점:명:3
  -자책하다:동:1
  -자처하다:동:18
  +자책하:동:1
  +자처하:동:18
   자천:명:1
   자청:명:3
  -자청하다:동:14
  +자청하:동:14
   자체:명:666
   자체적:관:1
   자체적:명:12
   자초:명:1
   자초지종:명:7
  -자초하다:동:15
  +자초하:동:15
   자충수:명:2
   자취:명:25
   자취:명:8
   자취방:명:8
   자취생:명:1
  -자취하다:동:2
  +자취하:동:2
   자치:명:88
   자치구:명:1
   자치권:명:1
  @@ -41147,18 +41147,18 @@
   자치제:명:7
   자치회:명:1
   자칫:부:49
  -자칫하다:동:18
  +자칫하:동:18
   자칭:명:5
  -자칭하다:동:4
  +자칭하:동:4
   자카드:명:1
   자크:명:2
   자타:명:6
  -자탄하다:동:2
  +자탄하:동:2
   자태:명:6
   자택:명:11
   자퇴:명:3
  -자퇴시키다:동:1
  -자퇴하다:동:3
  +자퇴시키:동:1
  +자퇴하:동:3
   자투리:명:6
   자파:명:1
   자판:명:73
  @@ -41169,19 +41169,19 @@
   자폐증:명:6
   자폐증아:명:4
   자포자기:명:6
  -자포자기되다:동:1
  -자포자기하다:동:3
  -자폭하다:동:1
  +자포자기되:동:1
  +자포자기하:동:3
  +자폭하:동:1
   자필:명:2
  -자학하다:동:2
  +자학하:동:2
   자해:명:1
   자해:명:2
  -자해하다:동:1
  -자해허다:동:1
  -자행되다:동:13
  -자행하다:동:12
  +자해하:동:1
  +자해허:동:1
  +자행되:동:13
  +자행하:동:12
   자현:명:3
  -자현하다:동:9
  +자현하:동:9
   자형:명:13
   자형:명:3
   자화라:명:1
  @@ -41194,30 +41194,30 @@
   작가전:명:1
   작가주의:명:2
   작고:명:4
  -작고하다:동:7
  +작고하:동:7
   작곡:명:12
   작곡가:명:7
   작곡과:명:2
   작곡자:명:1
  -작곡하다:동:9
  +작곡하:동:9
   작금:명:6
   작년:명:216
   작년도:명:1
   작년분:명:1
  -작다:형:738
  -작달막하다:형:3
  +작:형:738
  +작달막하:형:3
   작당:명:1
   작대기:명:9
   작도기:명:1
   작동:명:23
  -작동되다:동:6
  -작동시키다:동:4
  -작동하다:동:24
  +작동되:동:6
  +작동시키:동:4
  +작동하:동:24
   작두:명:1
   작두날:명:1
   작렬:명:1
  -작렬시키다:동:2
  -작렬하다:동:4
  +작렬시키:동:2
  +작렬하:동:4
   작료:명:4
   작명:명:3
   작목:명:9
  @@ -41227,21 +41227,21 @@
   작법:명:1
   작별:명:14
   작별주:명:1
  -작별하다:동:2
  +작별하:동:2
   작부:명:5
   작사:명:3
   작사가:명:7
   작살나무:명:4
   작성:명:43
  -작성되다:동:8
  -작성시키다:동:1
  +작성되:동:8
  +작성시키:동:1
   작성자:명:1
  -작성하다:동:58
  +작성하:동:58
   작시:명:1
   작신작신:부:2
   작심:명:2
  -작심하다:동:2
  -작아지다:동:20
  +작심하:동:2
  +작아지:동:20
   작업:명:473
   작업량:명:8
   작업반:명:4
  @@ -41252,16 +41252,16 @@
   작업원:명:12
   작업자:명:1
   작업장:명:11
  -작업하다:동:23
  +작업하:동:23
   작업화:명:5
   작열:명:1
   작용:명:210
  -작용되다:동:5
  +작용되:동:5
   작용력:명:1
  -작용시키다:동:1
  +작용시키:동:1
   작용적:명:1
   작용점:명:1
  -작용하다:동:147
  +작용하:동:147
   작위:명:1
   작위:명:1
   작위적:명:1
  @@ -41298,17 +41298,17 @@
   작인:명:8
   작자:명:23
   작작:부:1
  -작작하다:형:1
  +작작하:형:1
   작전:명:53
   작전권:명:1
   작전식:명:1
   작전통:명:1
  -작전하다:동:1
  +작전하:동:1
   작정:명:41
  -작정하다:동:17
  +작정하:동:17
   작중:명:6
   작태:명:8
  -작파하다:동:2
  +작파하:동:2
   작품:명:726
   작품상:명:4
   작품성:명:4
  @@ -41316,8 +41316,8 @@
   작품전:명:1
   작품집:명:3
   작품화:명:1
  -작품화되다:동:1
  -작품화하다:동:1
  +작품화되:동:1
  +작품화하:동:1
   작풍:명:1
   작황:명:3
   잔:명:254
  @@ -41340,10 +41340,10 @@
   잔뜩:부:101
   잔량:명:3
   잔류:명:9
  -잔류되다:동:1
  -잔류하다:동:4
  +잔류되:동:1
  +잔류하:동:4
   잔말:명:1
  -잔망스럽다:형:3
  +잔망스럽:형:3
   잔물결:명:5
   잔별:명:1
   잔병:명:1
  @@ -41356,7 +41356,7 @@
   잔소름:명:2
   잔소리:명:17
   잔소리꾼:명:2
  -잔소리하다:동:3
  +잔소리하:동:3
   잔손:명:1
   잔손질:명:2
   잔솔:명:1
  @@ -41371,20 +41371,20 @@
   잔여적:명:2
   잔영:명:5
   잔인:명:1
  -잔인무도하다:형:1
  +잔인무도하:형:1
   잔인성:명:2
  -잔인하다:형:26
  -잔인화되다:동:1
  +잔인하:형:26
  +잔인화되:동:1
   잔일:명:5
  -잔잔하다:형:33
  -잔잔해지다:동:1
  +잔잔하:형:33
  +잔잔해지:동:1
   잔잔히:부:3
   잔재:명:1
   잔재:명:14
   잔재미:명:1
   잔존:명:3
  -잔존되다:동:1
  -잔존하다:동:5
  +잔존되:동:1
  +잔존하:동:5
   잔주름:명:4
   잔치:명:54
   잔치터:명:1
  @@ -41398,99 +41398,99 @@
   잔허리:명:1
   잔혹:명:1
   잔혹성:명:1
  -잔혹하다:형:9
  +잔혹하:형:9
   잖:불:3
  -잘:부:1,890
  +잘:부:1890
   잘근잘근:부:1
  -잘나가다:동:5
  -잘나다:형:48
  -잘다:형:66
  -잘되다:동:163
  -잘디잘다:형:1
  -잘라먹다:동:2
  -잘라지다:동:2
  -잘려지다:동:7
  +잘나가:동:5
  +잘나:형:48
  +잘:형:66
  +잘되:동:163
  +잘디잘:형:1
  +잘라먹:동:2
  +잘라지:동:2
  +잘려지:동:7
   잘록이:부:1
  -잘록하다:형:7
  -잘록해지다:동:2
  -잘리다:동:43
  +잘록하:형:7
  +잘록해지:동:2
  +잘리:동:43
   잘못:명:167
   잘못:부:126
  -잘못되다:동:149
  -잘못시키다:동:1
  -잘못짚다:동:1
  -잘못하다:동:119
  -잘살다:동:28
  -잘생기다:형:26
  -잘아지다:동:1
  +잘못되:동:149
  +잘못시키:동:1
  +잘못짚:동:1
  +잘못하:동:119
  +잘살:동:28
  +잘생기:형:26
  +잘아지:동:1
   잘잘:부:1
   잘잘못:명:3
  -잘하다:동:431
  -잘해지다:동:1
  +잘하:동:431
  +잘해지:동:1
   잠:명:342
  -잠겨지다:동:2
  +잠겨지:동:2
   잠결:명:1
   잠귀:명:1
  -잠그다:동:25
  -잠그다:동:5
  +잠그:동:25
  +잠그:동:5
   잠금장치:명:2
  -잠기다:동:17
  -잠기다:동:79
  +잠기:동:17
  +잠기:동:79
   잠깐:명:83
   잠깐:부:82
   잠꼬대:명:8
  -잠꼬대하다:동:1
  +잠꼬대하:동:1
   잠꾸러기:명:2
  -잠들다:동:82
  +잠들:동:82
   잠망경:명:4
   잠바:명:29
   잠바떼기:명:4
   잠방이:명:3
  -잠방잠방하다:동:1
  +잠방잠방하:동:1
   잠버릇:명:2
   잠보:명:1
   잠복:명:2
   잠복근무:명:2
   잠복기:명:2
  -잠복하다:동:8
  +잠복하:동:8
   잠상:명:1
   잠수:명:3
   잠수부:명:2
   잠수정:명:2
  -잠수하다:동:5
  +잠수하:동:5
   잠수함:명:29
   잠시:명:102
   잠시:부:299
   잠식:명:3
  -잠식당하다:동:1
  -잠식되다:동:1
  -잠식하다:동:8
  +잠식당하:동:1
  +잠식되:동:1
  +잠식하:동:8
   잠실:명:1
   잠언:명:1
   잠옷:명:12
   잠입:명:2
  -잠입하다:동:2
  -잠자다:동:42
  +잠입하:동:2
  +잠자:동:42
   잠자리:명:47
   잠자리:명:6
   잠자리비행기:명:1
   잠자코:부:26
   잠잠:부:1
  -잠잠하다:형:5
  -잠잠해지다:동:3
  +잠잠하:형:5
  +잠잠해지:동:3
   잠잠히:부:1
   잠재:명:6
  -잠재되다:동:6
  +잠재되:동:6
   잠재력:명:11
   잠재성:명:1
  -잠재우다:동:9
  +잠재우:동:9
   잠재의식:명:5
   잠재적:관:10
   잠재적:명:10
  -잠재하다:동:2
  +잠재하:동:2
   잠적:명:1
   잠적:명:2
  -잠적하다:동:4
  +잠적하:동:4
   잠정:명:10
   잠정적:명:7
   잠행:명:3
  @@ -41503,11 +41503,11 @@
   잡급직:명:1
   잡념:명:3
   잡놈:명:1
  -잡다:동:954
  +잡:동:954
   잡다:보:1
  -잡다하다:형:11
  +잡다하:형:11
   잡담:명:17
  -잡담하다:동:2
  +잡담하:동:2
   잡답:명:1
   잡도리:명:1
   잡동사니:명:7
  @@ -41521,26 +41521,26 @@
   잡상인:명:1
   잡생각:명:2
   잡소리:명:1
  -잡수다:동:17
  -잡수시다:동:25
  -잡숫다:동:5
  -잡스럽다:형:2
  +잡수:동:17
  +잡수시:동:25
  +잡숫:동:5
  +잡스럽:형:2
   잡식:명:1
   잡식성:명:2
   잡쓰레기:명:1
  -잡아가다:동:17
  -잡아끌다:동:14
  -잡아끌리다:동:1
  -잡아내다:동:14
  -잡아넣다:동:5
  -잡아당기다:동:35
  -잡아들이다:동:3
  -잡아떼다:동:6
  -잡아매다:동:1
  -잡아먹다:동:51
  -잡아먹히다:동:7
  -잡아채다:동:3
  -잡아타다:동:1
  +잡아가:동:17
  +잡아끌:동:14
  +잡아끌리:동:1
  +잡아내:동:14
  +잡아넣:동:5
  +잡아당기:동:35
  +잡아들이:동:3
  +잡아떼:동:6
  +잡아매:동:1
  +잡아먹:동:51
  +잡아먹히:동:7
  +잡아채:동:3
  +잡아타:동:1
   잡역부:명:1
   잡음:명:19
   잡인배:명:1
  @@ -41555,24 +41555,24 @@
   잡채기:명:2
   잡척층:명:3
   잡초:명:13
  -잡치다:동:1
  +잡치:동:1
   잡탕:명:2
   잡탕밥:명:1
   잡티:명:8
   잡풀:명:5
   잡피:명:2
  -잡혀가다:동:15
  -잡혀지다:동:5
  +잡혀가:동:15
  +잡혀지:동:5
   잡화:명:4
   잡화상:명:1
   잡화점:명:2
  -잡히다:동:1
  -잡히다:동:148
  -잡히다:동:6
  +잡히:동:1
  +잡히:동:148
  +잡히:동:6
   잣:명:22
   잣가루:명:2
   잣나무:명:3
  -잣다:동:2
  +잣:동:2
   잣대:명:12
   잣죽:명:1
   장:명:10
  @@ -41587,10 +41587,10 @@
   장:의:4
   장:의:5
   장가:명:28
  -장가가다:동:7
  -장가들다:동:6
  -장가들이다:동:3
  -장가보내다:동:3
  +장가가:동:7
  +장가들:동:6
  +장가들이:동:3
  +장가보내:동:3
   장갑:명:12
   장갑차:명:4
   장강:명:3
  @@ -41613,7 +41613,7 @@
   장구:명:1
   장구:명:3
   장구애비:명:1
  -장구하다:형:5
  +장구하:형:5
   장국:명:7
   장국밥:명:3
   장군:명:1
  @@ -41630,21 +41630,21 @@
   장기적:관:9
   장기적:명:34
   장기화:명:2
  -장기화되다:동:5
  -장기화하다:동:2
  +장기화되:동:5
  +장기화하:동:2
   장꾼:명:4
   장끼:명:11
   장난:명:53
   장난감:명:25
   장난기:명:5
   장난꾸러기:명:5
  -장난삼다:동:4
  -장난스럽다:형:10
  +장난삼:동:4
  +장난스럽:형:10
   장난스레:부:1
   장난질:명:1
  -장난질당하다:동:1
  -장난치다:동:11
  -장난하다:동:6
  +장난질당하:동:1
  +장난치:동:11
  +장난하:동:6
   장날:명:12
   장남:명:47
   장내:명:6
  @@ -41662,14 +41662,14 @@
   장단:명:18
   장단점:명:3
   장담:명:2
  -장담하다:동:20
  +장담하:동:20
   장대:명:1
   장대:명:3
   장대:명:8
   장대비:명:2
  -장대하다:형:1
  -장대하다:형:2
  -장대하다:형:3
  +장대하:형:1
  +장대하:형:2
  +장대하:형:3
   장도:명:1
   장도리:명:12
   장독:명:2
  @@ -41683,10 +41683,10 @@
   장려:명:4
   장려금:명:2
   장려책:명:2
  -장려하다:동:19
  -장려하다:형:2
  +장려하:동:19
  +장려하:형:2
   장력:명:1
  -장렬하다:형:2
  +장렬하:형:2
   장렬히:부:1
   장례:명:25
   장례복:명:1
  @@ -41703,7 +41703,7 @@
   장마철:명:5
   장막:명:13
   장만:명:3
  -장만하다:동:26
  +장만하:동:26
   장맛:명:5
   장맛비:명:3
   장면:명:180
  @@ -41735,13 +41735,13 @@
   장부:명:1
   장부:명:13
   장비:명:74
  -장비하다:동:2
  +장비하:동:2
   장사:명:2
   장사:명:4
   장사:명:98
   장사꾼:명:17
   장사치:명:1
  -장사하다:동:8
  +장사하:동:8
   장산적:명:6
   장삼:명:1
   장삿길:명:3
  @@ -41750,31 +41750,31 @@
   장색:명:1
   장생:명:5
   장서:명:1
  -장서되다:동:1
  +장서되:동:1
   장석:명:2
   장석:명:4
   장성:명:15
   장성:명:5
   장성일:명:1
  -장성하다:동:3
  +장성하:동:3
   장세:명:5
   장소:명:174
   장속:명:1
   장손:명:5
   장송곡:명:2
  -장송하다:동:1
  +장송하:동:1
   장수:명:1
   장수:명:29
   장수:명:7
   장수:명:8
  -장수하다:동:5
  +장수하:동:5
   장승:명:16
   장승제:명:5
   장시:명:1
   장시:명:2
   장시간:명:9
   장식:명:60
  -장식되다:동:5
  +장식되:동:5
   장식문:명:1
   장식물:명:2
   장식상:명:1
  @@ -41784,27 +41784,27 @@
   장식적:관:4
   장식적:명:10
   장식품:명:10
  -장식하다:동:18
  +장식하:동:18
   장신:명:3
   장신구:명:6
   장아찌:명:4
   장악:명:8
  -장악되다:동:1
  +장악되:동:1
   장악력:명:3
  -장악하다:동:54
  +장악하:동:54
   장안:명:5
   장애:명:108
  -장애되다:동:1
  +장애되:동:1
   장애물:명:27
   장애아:명:3
   장애인:명:26
   장애자:명:30
   장애적:관:1
  -장애하다:동:1
  +장애하:동:1
   장어:명:1
   장엄:명:1
   장엄감:명:1
  -장엄하다:형:8
  +장엄하:형:8
   장외:명:4
   장원:명:4
   장원:명:5
  @@ -41820,7 +41820,7 @@
   장작불:명:1
   장장:관:4
   장전:명:2
  -장전되다:동:2
  +장전되:동:2
   장점:명:76
   장정:명:2
   장정:명:5
  @@ -41828,24 +41828,24 @@
   장조카:명:1
   장좌불와:명:2
   장죽:명:3
  -장중하다:형:5
  +장중하:형:5
   장지:명:1
   장지:명:2
   장지문:명:3
   장차:부:33
   장차관:명:7
   장착:명:1
  -장착되다:동:7
  -장착하다:동:11
  +장착되:동:7
  +장착하:동:11
   장책:명:1
   장책:명:2
   장처전:명:1
   장천:명:1
   장치:명:282
  -장치되다:동:2
  +장치되:동:2
   장치적:관:1
  -장치하다:동:3
  -장쾌하다:형:1
  +장치하:동:3
  +장쾌하:형:1
   장타:명:1
   장타율:명:1
   장탄식:명:1
  @@ -41856,7 +41856,7 @@
   장판지:명:2
   장편:명:18
   장풍:명:8
  -장하다:형:12
  +장하:형:12
   장학:명:7
   장학과:명:2
   장학관:명:2
  @@ -41868,92 +41868,92 @@
   장해:명:3
   장형:명:3
   장화:명:27
  -장황하다:형:9
  +장황하:형:9
   장히:부:1
  -잦다:형:55
  -잦아들다:동:13
  -잦아지다:동:9
  -잫다:동:1
  +잦:형:55
  +잦아들:동:13
  +잦아지:동:9
  +잫:동:1
   재:명:13
   재:명:2
   재:명:6
   재가:명:2
   재가:명:2
   재가동:명:3
  -재가시키다:동:1
  +재가시키:동:1
   재가열:명:1
  -재가하다:동:1
  +재가하:동:1
   재간:명:12
   재간꾼:명:1
   재갈:명:3
   재개:명:11
  -재개되다:동:6
  +재개되:동:6
   재개발:명:17
   재개정:명:1
  -재개하다:동:10
  +재개하:동:10
   재거주:명:1
   재건:명:6
  -재건하다:동:3
  +재건하:동:3
   재검사:명:1
   재검토:명:12
  -재검토되다:동:4
  -재검토하다:동:15
  +재검토되:동:4
  +재검토하:동:15
   재격돌:명:1
   재결과:명:1
  -재결성되다:동:1
  +재결성되:동:1
   재결합:명:3
  -재결합하다:동:2
  +재결합하:동:2
   재경:명:2
   재계:명:62
   재계약:명:2
   재고:명:15
   재고:명:2
  -재고되다:동:1
  +재고되:동:1
   재고량:명:1
  -재고하다:동:8
  +재고하:동:8
   재공개:명:3
  -재공개하다:동:1
  +재공개하:동:1
   재공연:명:6
  -재공연하다:동:1
  +재공연하:동:1
   재교육:명:3
   재구매:명:1
   재구성:명:3
  -재구성되다:동:1
  -재구성하다:동:16
  +재구성되:동:1
  +재구성하:동:16
   재구축:명:1
  -재규정되다:동:1
  -재규정하다:동:1
  +재규정되:동:1
  +재규정하:동:1
   재기:명:3
   재기:명:9
   재기습:명:1
  -재기시키다:동:1
  -재기하다:동:5
  +재기시키:동:1
  +재기하:동:5
   재깍재깍:부:1
   재깍재깍:부:1
   재난:명:10
   재녹음:명:1
   재능:명:48
   재능꾼:명:1
  -재다:동:1
  -재다:동:1
  -재다:동:29
  -재다:동:4
  -재다:형:6
  +재:동:1
  +재:동:1
  +재:동:29
  +재:동:4
  +재:형:6
   재단:명:42
   재단:명:6
  -재단되다:동:1
  +재단되:동:1
   재단반:명:1
  -재단하다:동:5
  +재단하:동:5
   재담:명:4
   재도발:명:1
   재도약:명:1
  -재도약시키다:동:1
  -재도전하다:동:2
  +재도약시키:동:1
  +재도전하:동:2
   재독:명:5
   재돌입:명:1
   재등록:명:2
   재등장:명:3
  -재등장하다:동:1
  +재등장하:동:1
   재떨이:명:12
   재래:명:10
   재래극:명:1
  @@ -41961,19 +41961,19 @@
   재래시장:명:3
   재래식:명:12
   재래종:명:2
  -재래하다:동:1
  +재래하:동:1
   재량:명:4
   재량권:명:7
   재력:명:8
   재력가:명:1
  -재론하다:동:3
  +재론하:동:3
   재롱:명:8
   재료:명:288
   재료량:명:1
   재료비:명:1
   재료학과:명:1
   재림:명:1
  -재림하다:동:2
  +재림하:동:2
   재목:명:6
   재무:명:15
   재무장:명:1
  @@ -41981,24 +41981,24 @@
   재물:명:12
   재미:명:159
   재미:명:18
  -재미나다:동:7
  -재미없다:형:33
  -재미있다:형:314
  -재미있어하다:동:3
  -재밌다:형:31
  +재미나:동:7
  +재미없:형:33
  +재미있:형:314
  +재미있어하:동:3
  +재밌:형:31
   재발:명:11
   재발견:명:17
  -재발견되다:동:1
  -재발견하다:동:3
  -재발탁되다:동:1
  -재발하다:동:8
  +재발견되:동:1
  +재발견하:동:3
  +재발탁되:동:1
  +재발하:동:8
   재방송:명:1
   재배:명:35
  -재배되다:동:9
  +재배되:동:9
   재배지:명:2
   재배치:명:2
  -재배치하다:동:1
  -재배하다:동:35
  +재배치하:동:1
  +재배하:동:35
   재벌:명:205
   재벌가:명:6
   재복:명:3
  @@ -42006,13 +42006,13 @@
   재봉틀:명:1
   재부:명:3
   재분류:명:1
  -재분류하다:동:2
  +재분류하:동:2
   재분배:명:7
   재비:명:1
  -재빠르다:형:11
  +재빠르:형:11
   재빨리:부:52
   재사용:명:4
  -재사용하다:동:4
  +재사용하:동:4
   재산:명:328
   재산가:명:1
   재산권:명:21
  @@ -42024,65 +42024,65 @@
   재삼:부:3
   재상:명:8
   재생:명:41
  -재생되다:동:4
  +재생되:동:4
   재생부:명:1
   재생산:명:41
  -재생산되다:동:3
  -재생산시키다:동:1
  +재생산되:동:3
  +재생산시키:동:1
   재생산적:명:1
  -재생산하다:동:15
  -재생시키다:동:7
  +재생산하:동:15
  +재생시키:동:7
   재생용품:명:1
   재생적:관:1
   재생창:명:1
  -재생하다:동:4
  +재생하:동:4
   재선:명:4
   재선거:명:1
  -재선시키다:동:1
  -재설계되다:동:1
  +재선시키:동:1
  +재설계되:동:1
   재성장:명:2
  -재성장시키다:동:1
  +재성장시키:동:1
   재세:명:2
   재소자:명:8
   재소환장:명:5
  -재소환하다:동:1
  +재소환하:동:1
   재수:명:13
   재수:명:16
   재수사:명:5
   재수생:명:14
   재수생반:명:2
  -재수하다:동:3
  -재순환시키다:동:1
  +재수하:동:3
  +재순환시키:동:1
   재스민:명:2
  -재승격하다:동:1
  +재승격하:동:1
   재심:명:2
   재심사:명:1
  -재심하다:동:1
  +재심하:동:1
   재앙:명:16
   재야:명:71
   재야인사:명:3
  -재어지다:동:2
  +재어지:동:2
   재연:명:1
   재연:명:5
   재연기:명:4
  -재연되다:동:3
  -재연되다:동:4
  -재연하다:동:6
  +재연되:동:3
  +재연되:동:4
  +재연하:동:6
   재외:명:2
   재용:명:1
  -재우다:동:11
  -재우다:동:15
  +재우:동:11
  +재우:동:15
   재원:명:2
   재원:명:35
   재위:명:1
  -재위하다:동:1
  -재음미하다:동:3
  +재위하:동:1
  +재음미하:동:3
   재의:명:1
   재의뢰:명:1
  -재이용하다:동:2
  +재이용하:동:2
   재인식:명:4
  -재인식되다:동:1
  -재인식하다:동:5
  +재인식되:동:1
  +재인식하:동:5
   재일:명:17
   재임:명:23
   재임용:명:1
  @@ -42090,48 +42090,48 @@
   재입국:명:1
   재입성:명:1
   재입학:명:3
  -재입학하다:동:1
  +재입학하:동:1
   재작년:명:16
  -재잘거리다:동:9
  +재잘거리:동:9
   재장악:명:1
  -재재거리다:동:2
  +재재거리:동:2
   재재작년:명:2
  -재점검하다:동:1
  +재점검하:동:1
   재접근:명:1
   재정:명:118
   재정:명:12
   재정국장:명:1
   재정난:명:5
  -재정돈하다:동:1
  +재정돈하:동:1
   재정리:명:1
  -재정리하다:동:1
  +재정리하:동:1
   재정립:명:1
  -재정립되다:동:1
  -재정립하다:동:9
  +재정립되:동:1
  +재정립하:동:9
   재정부:명:2
   재정비:명:3
  -재정비되다:동:1
  -재정비하다:동:3
  +재정비되:동:1
  +재정비하:동:3
   재정적:관:4
   재정적:명:4
  -재조립되다:동:1
  -재조립하다:동:1
  +재조립되:동:1
  +재조립하:동:1
   재조명:명:6
  -재조명되다:동:1
  -재조명하다:동:4
  +재조명되:동:1
  +재조명하:동:4
   재조사:명:4
  -재조사하다:동:1
  -재조율하다:동:2
  +재조사하:동:1
  +재조율하:동:2
   재조정:명:5
  -재조정되다:동:3
  -재조정하다:동:9
  -재조직하다:동:3
  -재조합하다:동:1
  +재조정되:동:3
  +재조정하:동:9
  +재조직하:동:3
  +재조합하:동:1
   재종조모:명:1
   재종조부:명:8
   재주:명:34
   재주꾼:명:5
  -재주넘다:동:1
  +재주넘:동:1
   재중:명:7
   재즈:명:46
   재지:명:56
  @@ -42140,45 +42140,45 @@
   재지층:명:1
   재직:명:15
   재직권:명:1
  -재직하다:동:17
  +재직하:동:17
   재질:명:2
   재질:명:9
   재집권:명:3
  -재집권하다:동:1
  +재집권하:동:1
   재차:부:6
  -재창작하다:동:1
  +재창작하:동:1
   재창조:명:9
  -재창조되다:동:5
  -재창조하다:동:4
  +재창조되:동:5
  +재창조하:동:4
   재채기:명:16
   재채혈:명:1
   재처리:명:1
  -재처리하다:동:1
  +재처리하:동:1
   재천명:명:1
  -재천명하다:동:2
  +재천명하:동:2
   재첩:명:1
   재촉:명:4
   재촉구:명:2
  -재촉하다:동:21
  -재촌탈농하다:동:1
  +재촉하:동:21
  +재촌탈농하:동:1
   재촬영:명:1
  -재촬영하다:동:2
  -재출발하다:동:1
  +재촬영하:동:2
  +재출발하:동:1
   재충:명:1
   재측정:명:1
   재치:명:13
   재킷:명:11
   재타협:명:1
   재탄생:명:1
  -재탄생되다:동:1
  -재탄생하다:동:1
  +재탄생되:동:1
  +재탄생하:동:1
   재탈환:명:1
   재탕:명:1
  -재탕하다:동:2
  +재탕하:동:2
   재테크:명:16
   재통일:명:3
  -재통합되다:동:1
  -재투입하다:동:2
  +재통합되:동:1
  +재투입하:동:2
   재투자:명:1
   재투표:명:1
   재판:명:108
  @@ -42195,54 +42195,54 @@
   재퍼니즈재즈:명:1
   재퍼니즈팝:명:2
   재편:명:7
  -재편되다:동:7
  +재편되:동:7
   재편성:명:2
  -재편성되다:동:2
  -재편성하다:동:3
  +재편성되:동:2
  +재편성하:동:3
   재편입:명:1
  -재편하다:동:3
  +재편하:동:3
   재평가:명:1
  -재평가되다:동:1
  -재평가하다:동:4
  -재하다:동:1
  +재평가되:동:1
  +재평가하:동:4
  +재하:동:1
   재학:명:1
   재학:명:22
   재학생:명:10
   재항고:명:1
  -재항고하다:동:1
  +재항고하:동:1
   재해:명:22
   재해석:명:4
  -재해석하다:동:5
  +재해석하:동:5
   재해직:명:1
   재현:명:15
  -재현되다:동:7
  -재현시키다:동:3
  -재현하다:동:14
  +재현되:동:7
  +재현시키:동:3
  +재현하:동:14
   재형:명:1
   재형저축:명:7
   재혼:명:8
  -재혼하다:동:5
  +재혼하:동:5
   재화:명:7
  -재확립하다:동:1
  +재확립하:동:1
   재확인:명:1
   재확인시키다:명:1
  -재확인하다:동:9
  +재확인하:동:9
   재활:명:7
  -재활성화시키다:동:1
  -재활성화하다:동:1
  +재활성화시키:동:1
  +재활성화하:동:1
   재활용:명:19
  -재활용되다:동:1
  +재활용되:동:1
   재활용품:명:26
  -재활용하다:동:11
  +재활용하:동:11
   재활원:명:6
   재활원장:명:1
   재회:명:6
  -재회동하다:동:1
  -재회하다:동:2
  +재회동하:동:1
  +재회하:동:2
   잭나이프:명:2
   잰걸음:명:3
   잼:명:1
  -잽싸다:형:11
  +잽싸:형:11
   잿간:명:1
   잿더미:명:3
   잿물:명:3
  @@ -42254,22 +42254,22 @@
   쟁위:명:1
   쟁의:명:15
   쟁의권:명:1
  -쟁이다:동:5
  -쟁쟁하다:형:1
  -쟁쟁하다:형:5
  +쟁이:동:5
  +쟁쟁하:형:1
  +쟁쟁하:형:5
   쟁점:명:52
   쟁점화:명:2
  -쟁점화되다:동:4
  -쟁점화하다:동:1
  +쟁점화되:동:4
  +쟁점화하:동:1
   쟁취:명:5
  -쟁취되다:동:1
  -쟁취하다:동:4
  +쟁취되:동:1
  +쟁취하:동:4
   쟁탈전:명:13
   쟁패:명:1
   쟤:불:29
   저:감:121
   저:관:444
  -저:대:2,281
  +저:대:2281
   저:대:22
   저:명:3
   저가:명:5
  @@ -42281,22 +42281,22 @@
   저거:대:49
   저것:대:45
   저격:명:7
  -저격당하다:동:1
  +저격당하:동:1
   저격범:명:2
   저고리:명:64
   저고릿감:명:1
   저곡가:명:1
   저곳:대:1
  -저공비행하다:동:1
  +저공비행하:동:1
   저공해:명:7
   저그:감:2
   저그:대:3
   저금:명:8
   저금통:명:2
   저금통장:명:4
  -저금하다:동:4
  +저금하:동:4
   저급:명:3
  -저급하다:형:4
  +저급하:형:4
   저기:감:23
   저기:대:134
   저기압:명:4
  @@ -42327,24 +42327,24 @@
   저대로:부:1
   저돌성:명:1
   저돌적:명:1
  -저떻다:형:1
  +저떻:형:1
   저래:불:4
   저래도:불:1
   저래라:불:3
   저랬:불:1
  -저러다:동:26
  -저러하다:형:2
  +저러:동:26
  +저러하:형:2
   저런:감:17
   저런:관:53
  -저렇다:형:67
  +저렇:형:67
   저력:명:11
   저렴:명:3
  -저렴하다:형:16
  -저렴해지다:동:1
  +저렴하:형:16
  +저렴해지:동:1
   저리:명:2
   저리:부:11
   저리:부:26
  -저리다:형:21
  +저리:형:21
   저리도:부:4
   저리로:부:1
   저릿:부:1
  @@ -42356,12 +42356,12 @@
   저면:명:1
   저명:명:1
   저명인사:명:3
  -저명하다:형:4
  +저명하:형:4
   저물녘:명:1
  -저물다:동:18
  -저미다:동:14
  +저물:동:18
  +저미:동:14
   저반:명:2
  -저버리다:동:15
  +저버리:동:15
   저벅저벅:부:4
   저번:명:21
   저변:명:12
  @@ -42380,29 +42380,29 @@
   저소득층:명:3
   저속:명:1
   저속:명:6
  -저속하다:형:11
  +저속하:형:11
   저속화:명:1
   저수:명:1
  -저수되다:동:2
  +저수되:동:2
   저수량:명:1
   저수지:명:35
  -저수하다:동:1
  +저수하:동:1
   저술:명:25
   저술가:명:2
  -저술하다:동:6
  +저술하:동:6
   저승:명:19
   저승길:명:3
   저승꽃:명:1
   저승사자:명:2
   저액:명:1
  -저열하다:형:1
  +저열하:형:1
   저예산:명:4
   저오염:명:1
   저온:명:5
   저울:명:18
   저울쟁이:명:1
   저울질:명:7
  -저울질하다:동:7
  +저울질하:동:7
   저울추:명:1
   저위:명:1
   저유소:명:1
  @@ -42426,47 +42426,47 @@
   저잣거리:명:1
   저장:명:21
   저장고:명:1
  -저장되다:동:14
  +저장되:동:14
   저장법:명:1
   저장성:명:1
   저장소:명:1
   저장판:명:1
  -저장하다:동:22
  +저장하:동:22
   저저번:명:2
   저절로:부:61
   저조:명:2
  -저조하다:형:8
  -저조해지다:동:1
  +저조하:형:8
  +저조해지:동:1
   저주:명:1
   저주:명:13
   저주가:명:1
  -저주받다:동:5
  -저주스럽다:형:2
  -저주하다:동:10
  +저주받:동:5
  +저주스럽:형:2
  +저주하:동:10
   저준위:명:1
   저지:명:15
   저지:명:8
   저지대:명:6
  -저지되다:동:1
  -저지르다:동:133
  +저지되:동:1
  +저지르:동:133
   저지방:명:2
   저지선:명:2
  -저지시키다:동:1
  -저지하다:동:20
  +저지시키:동:1
  +저지하:동:20
   저질:명:15
  -저질러지다:동:5
  +저질러지:동:5
   저질성:명:1
  -저질스럽다:형:1
  +저질스럽:형:1
   저질화:명:2
   저쪽:대:108
   저쯤:명:2
   저체중아:명:1
  -저촉되다:동:1
  +저촉되:동:1
   저축:명:49
   저축률:명:2
   저축성:명:3
   저축액:명:3
  -저축하다:동:12
  +저축하:동:12
   저칼로리:명:3
   저택:명:1
   저토록:부:3
  @@ -42475,9 +42475,9 @@
   저포:명:5
   저하:명:1
   저하:명:18
  -저하되다:동:8
  +저하되:동:8
   저하론:명:1
  -저하시키다:동:3
  +저하시키:동:3
   저하제:명:1
   저학년:명:3
   저항:명:79
  @@ -42487,10 +42487,10 @@
   저항력:명:10
   저항선:명:1
   저항적:관:2
  -저항하다:동:34
  +저항하:동:34
   저해:명:5
  -저해되다:동:3
  -저해하다:동:18
  +저해되:동:3
  +저해하:동:18
   저혈압:명:3
   저효율:명:2
   저효율성:명:1
  @@ -42506,7 +42506,7 @@
   적개심:명:4
   적격:명:6
   적격성:명:1
  -적격하다:형:1
  +적격하:형:1
   적공:명:1
   적공담:명:1
   적국:명:8
  @@ -42517,45 +42517,45 @@
   적극성:명:5
   적극적:관:24
   적극적:명:181
  -적극화되다:동:1
  -적극화시키다:동:4
  +적극화되:동:1
  +적극화시키:동:4
   적금:명:1
   적금:명:13
   적기:명:1
   적기:명:2
   적기:명:3
  -적나라하다:형:13
  -적다:동:173
  -적다:형:360
  +적나라하:형:13
  +적:동:173
  +적:형:360
   적당:명:2
   적당량:명:9
  -적당하다:형:83
  +적당하:형:83
   적당히:부:76
   적대:명:7
   적대감:명:1
   적대국:명:1
  -적대시하다:동:1
  +적대시하:동:1
   적대자:명:2
   적대적:관:2
   적대적:명:7
  -적대하다:동:1
  +적대하:동:1
   적도:명:8
   적도제:명:1
   적립:명:1
  -적립되다:동:1
  -적립시키다:동:1
  -적립하다:동:2
  +적립되:동:1
  +적립시키:동:1
  +적립하:동:2
   적막:명:10
  -적막하다:형:3
  +적막하:형:3
   적멸:명:2
   적멸감:명:1
   적멸보궁:명:6
   적반하장:명:5
   적발:명:13
  -적발되다:동:33
  -적발하다:동:19
  +적발되:동:33
  +적발하:동:19
   적법:명:4
  -적법하다:형:5
  +적법하:형:5
   적부:명:7
   적부심:명:6
   적분:명:1
  @@ -42573,34 +42573,34 @@
   적소:명:1
   적수:명:1
   적시:명:1
  -적시다:동:46
  +적시:동:46
   적시타:명:1
  -적시하다:동:1
  +적시하:동:1
   적신:명:1
   적신호:명:4
   적실:명:1
   적실성:명:1
  -적실하다:형:1
  +적실하:형:1
   적어도:부:158
  -적어지다:동:18
  +적어지:동:18
   적역:명:1
   적외선:명:5
   적용:명:73
  -적용되다:동:83
  -적용되어지다:동:1
  -적용받다:동:2
  -적용시키다:동:8
  -적용하다:동:88
  +적용되:동:83
  +적용되어지:동:1
  +적용받:동:2
  +적용시키:동:8
  +적용하:동:88
   적응:명:28
   적응감:명:1
  -적응되다:동:6
  +적응되:동:6
   적응력:명:3
   적응성:명:2
  -적응시키다:동:1
  -적응하다:동:46
  +적응시키:동:1
  +적응하:동:46
   적의:명:6
   적의성:명:6
  -적의하다:형:4
  +적의하:형:4
   적이:부:9
   적일:명:1
   적임:명:1
  @@ -42610,67 +42610,67 @@
   적자:명:89
   적자국:명:1
   적자생존:명:3
  -적잖다:형:11
  +적잖:형:11
   적잖이:부:8
   적장:명:2
   적장자:명:2
   적재:명:2
   적재:명:2
   적재량:명:2
  -적재하다:동:9
  +적재하:동:9
   적재함:명:3
  -적적하다:형:1
  -적절하다:형:114
  +적적하:형:1
  +적절하:형:114
   적절히:부:25
   적정:명:10
   적정선:명:1
   적정성:명:1
  -적정하다:형:3
  +적정하:형:3
   적정화:명:1
   적중:명:1
  -적중되다:동:1
  -적중하다:동:4
  +적중되:동:1
  +적중하:동:4
   적지:명:3
   적지:명:4
   적진:명:5
   적채:명:4
   적체:명:9
  -적체되다:동:1
  +적체되:동:1
   적초의:명:1
   적토마:명:1
   적폐:명:2
   적합:명:2
   적합성:명:7
  -적합하다:형:52
  +적합하:형:52
   적혈:명:1
   적화:명:5
  -적확하다:형:1
  +적확하:형:1
   적환장:명:3
  -적히다:동:56
  +적히:동:56
   전:관:306
   전:관:398
   전:명:1
   전:명:1
   전:명:1
  -전:명:1,378
  +전:명:1378
   전:명:5
   전:명:6
   전:의:12
   전가:명:1
   전가:명:4
  -전가되다:동:1
  -전가시키다:동:2
  -전가하다:동:6
  +전가되:동:1
  +전가시키:동:2
  +전가하:동:6
   전각:명:2
   전갈:명:14
   전갈:명:3
   전갈자리:명:1
   전갈좌:명:1
   전개:명:85
  -전개되다:동:78
  -전개되어지다:동:1
  -전개시키다:동:3
  -전개하다:동:60
  +전개되:동:78
  +전개되어지:동:1
  +전개시키:동:3
  +전개하:동:60
   전개형:명:7
   전객제:명:2
   전격:명:8
  @@ -42686,7 +42686,7 @@
   전공과목:명:2
   전공의:명:4
   전공자:명:5
  -전공하다:동:38
  +전공하:동:38
   전과:명:2
   전과자:명:2
   전관:명:1
  @@ -42736,21 +42736,21 @@
   전년:명:14
   전년도:명:5
   전념:명:2
  -전념하다:동:18
  +전념하:동:18
   전농:명:1
   전뇌:명:4
  -전능하다:형:3
  +전능하:형:3
   전단:명:6
   전단물:명:1
   전달:명:3
   전달:명:43
  -전달되다:동:54
  -전달받다:동:3
  +전달되:동:54
  +전달받:동:3
   전달식:명:1
  -전달하다:동:89
  +전달하:동:89
   전담:명:15
   전담반:명:1
  -전담하다:동:18
  +전담하:동:18
   전답:명:5
   전당:명:13
   전당:명:6
  @@ -42762,12 +42762,12 @@
   전도:명:1
   전도:명:2
   전도:명:5
  -전도되다:동:6
  +전도되:동:6
   전도사:명:5
  -전도양양하다:형:1
  -전도유망하다:형:1
  +전도양양하:형:1
  +전도유망하:형:1
   전도율:명:1
  -전도하다:동:1
  +전도하:동:1
   전동:명:1
   전동기:명:2
   전동식:명:1
  @@ -42777,13 +42777,13 @@
   전등알:명:1
   전라:명:7
   전락:명:2
  -전락되다:동:1
  -전락시키다:동:6
  -전락하다:동:28
  +전락되:동:1
  +전락시키:동:6
  +전락하:동:28
   전란:명:3
   전람회:명:4
   전래:명:12
  -전래되다:동:2
  +전래되:동:2
   전략:명:280
   전략기:명:1
   전략적:관:2
  @@ -42796,8 +42796,8 @@
   전력난:명:1
   전력량:명:4
   전력자:명:1
  -전력투구하다:동:2
  -전력하다:동:1
  +전력투구하:동:2
  +전력하:동:1
   전령:명:1
   전령사:명:1
   전례:명:16
  @@ -42810,9 +42810,9 @@
   전말서:명:1
   전망:명:152
   전망대:명:4
  -전망되다:동:33
  +전망되:동:33
   전망치:명:1
  -전망하다:동:40
  +전망하:동:40
   전매:명:2
   전매제:명:1
   전면:명:19
  @@ -42820,16 +42820,16 @@
   전면적:관:5
   전면적:명:35
   전면전:명:8
  -전면화시키다:동:1
  -전멸되다:동:1
  -전멸시키다:동:3
  -전멸하다:동:1
  +전면화시키:동:1
  +전멸되:동:1
  +전멸시키:동:3
  +전멸하:동:1
   전모:명:12
   전무:명:2
   전무:명:39
   전무이사:명:4
  -전무하다:형:11
  -전무후무하다:형:4
  +전무하:형:11
  +전무후무하:형:4
   전문:명:220
   전문:명:5
   전문:명:6
  @@ -42849,8 +42849,8 @@
   전문지:명:5
   전문직:명:23
   전문화:명:16
  -전문화되다:동:7
  -전문화하다:동:1
  +전문화되:동:7
  +전문화하:동:1
   전민변정:명:1
   전반:명:27
   전반:명:47
  @@ -42871,11 +42871,11 @@
   전병:명:1
   전보:명:3
   전보:명:8
  -전보하다:동:1
  +전보하:동:1
   전복:명:5
   전복:명:6
  -전복되다:동:3
  -전복시키다:동:1
  +전복되:동:3
  +전복시키:동:1
   전복적:관:1
   전복적:명:1
   전복죽:명:2
  @@ -42887,7 +42887,7 @@
   전사:명:1
   전사:명:1
   전사:명:7
  -전사하다:동:5
  +전사하:동:5
   전산:명:23
   전산과:명:1
   전산망:명:24
  @@ -42896,7 +42896,7 @@
   전산학:명:3
   전산학부:명:1
   전산화:명:8
  -전산화하다:동:3
  +전산화하:동:3
   전삼:명:3
   전상자:명:1
   전생:명:1
  @@ -42922,7 +42922,7 @@
   전세방:명:5
   전셋돈:명:1
   전소:명:1
  -전소되다:동:3
  +전소되:동:3
   전속:명:13
   전속:명:2
   전속권:명:1
  @@ -42930,41 +42930,41 @@
   전송:명:2
   전송:명:3
   전송:명:6
  -전송되다:동:1
  +전송되:동:1
   전송망:명:1
  -전송받다:동:11
  -전송하다:동:2
  -전송하다:동:6
  +전송받:동:11
  +전송하:동:2
  +전송하:동:6
   전수:명:1
   전수:명:2
  -전수받다:동:5
  +전수받:동:5
   전수생:명:1
  -전수하다:동:4
  +전수하:동:4
   전술:명:1
   전술:명:22
   전술적:관:2
   전술적:명:1
  -전술하다:동:7
  +전술하:동:7
   전승:명:3
   전승:명:4
   전승:명:5
   전승국:명:1
  -전승되다:동:3
  +전승되:동:3
   전승성:명:1
  -전승시키다:동:1
  -전승하다:동:2
  +전승시키:동:1
  +전승하:동:2
   전시:명:1
   전시:명:36
   전시:명:6
   전시과:명:20
   전시관:명:27
   전시대:명:1
  -전시되다:동:15
  +전시되:동:15
   전시물:명:6
   전시실:명:14
   전시장:명:21
   전시품:명:4
  -전시하다:동:22
  +전시하:동:22
   전시회:명:43
   전신:명:11
   전신:명:2
  @@ -42974,7 +42974,7 @@
   전실:명:1
   전실:명:3
   전심전력:명:2
  -전심전력하다:동:2
  +전심전력하:동:2
   전압:명:7
   전액:명:13
   전야:명:5
  @@ -42984,19 +42984,19 @@
   전업:명:10
   전업농:명:1
   전업적:명:1
  -전업하다:동:2
  +전업하:동:2
   전역:명:1
   전역:명:58
   전역:명:8
   전역서:명:1
  -전역시키다:동:2
  +전역시키:동:2
   전역식:명:1
   전역자:명:1
  -전역하다:동:3
  +전역하:동:3
   전연:부:3
   전열:명:2
   전염:명:4
  -전염되다:동:2
  +전염되:동:2
   전염병:명:10
   전염성:명:2
   전영:명:1
  @@ -43005,7 +43005,7 @@
   전용:명:8
   전용관:명:1
   전용식:명:1
  -전용하다:동:1
  +전용하:동:1
   전우:명:4
   전원:명:10
   전원:명:28
  @@ -43018,14 +43018,14 @@
   전위적:명:7
   전유:명:2
   전유물:명:6
  -전유하다:동:1
  +전유하:동:1
   전율:명:19
  -전율시키다:동:1
  -전율하다:동:2
  +전율시키:동:1
  +전율하:동:2
   전이:명:1
  -전이되다:동:6
  +전이되:동:6
   전이성:명:1
  -전이하다:동:1
  +전이하:동:1
   전인:명:9
   전인격:명:3
   전인격적:관:1
  @@ -43067,8 +43067,8 @@
   전장:명:8
   전장제:명:1
   전장화:명:1
  -전재되다:동:1
  -전재하다:동:1
  +전재되:동:1
  +전재하:동:1
   전쟁:명:1
   전쟁:명:399
   전쟁놀이:명:1
  @@ -43078,9 +43078,9 @@
   전적:명:56
   전전:명:2
   전전긍긍:명:2
  -전전긍긍하다:동:9
  +전전긍긍하:동:9
   전전자:명:1
  -전전하다:동:11
  +전전하:동:11
   전전해:명:1
   전절기:명:1
   전정:명:1
  @@ -43090,11 +43090,11 @@
   전제:명:117
   전제:명:3
   전제국:명:1
  -전제되다:동:18
  +전제되:동:18
   전제적:관:1
   전제적:명:1
   전제주의:명:1
  -전제하다:동:32
  +전제하:동:32
   전조:명:1
   전조:명:7
   전조등:명:2
  @@ -43105,18 +43105,18 @@
   전주제:명:2
   전지:명:1
   전지:명:19
  -전지전능하다:형:2
  +전지전능하:형:2
   전지훈련:명:1
   전직:명:3
   전직:명:44
  -전직하다:동:2
  +전직하:동:2
   전진:명:2
   전진:명:31
  -전진되다:동:2
  -전진시키다:동:4
  +전진되:동:2
  +전진시키:동:4
   전진적:관:1
   전진적:명:1
  -전진하다:동:11
  +전진하:동:11
   전집:명:6
   전차:명:5
   전처:명:1
  @@ -43133,16 +43133,16 @@
   전체주의:명:17
   전체주의적:관:2
   전체주의적:명:2
  -전체주의화되다:동:1
  +전체주의화되:동:1
   전체화:명:9
   전초:명:2
   전초적:관:1
   전초전:명:6
   전축:명:2
   전출:명:3
  -전출되다:동:1
  -전출시키다:동:2
  -전취하다:동:1
  +전출되:동:1
  +전출시키:동:2
  +전취하:동:1
   전치:명:3
   전침:명:4
   전토:명:1
  @@ -43167,12 +43167,12 @@
   전파:명:28
   전파:명:4
   전파:명:5
  -전파되다:동:17
  +전파되:동:17
   전파자:명:2
  -전파하다:동:10
  +전파하:동:10
   전편:명:1
   전편:명:2
  -전폐하다:동:2
  +전폐하:동:2
   전폭:명:1
   전폭기:명:3
   전폭적:관:1
  @@ -43181,19 +43181,19 @@
   전표:명:20
   전하:명:2
   전하:명:6
  -전하다:동:276
  -전하여지다:동:1
  +전하:동:276
  +전하여지:동:1
   전학:명:14
  -전학시키다:동:1
  -전학하다:동:2
  +전학시키:동:1
  +전학하:동:2
   전함:명:1
   전해:명:3
  -전해지다:동:94
  +전해지:동:94
   전해질액:명:2
   전향:명:1
   전향서:명:1
   전향적:명:3
  -전향하다:동:1
  +전향하:동:1
   전혀:부:420
   전형:명:1
   전형:명:14
  @@ -43208,11 +43208,11 @@
   전화:명:520
   전화국:명:5
   전화기:명:23
  -전화되다:동:2
  -전화드리다:동:4
  +전화되:동:2
  +전화드리:동:4
   전화론자:명:1
   전화망:명:1
  -전화받다:동:12
  +전화받:동:12
   전화번호:명:52
   전화번호부:명:3
   전화벨:명:38
  @@ -43221,23 +43221,23 @@
   전화위복:명:2
   전화질:명:2
   전화통:명:15
  -전화하다:동:1
  -전화하다:동:43
  +전화하:동:1
  +전화하:동:43
   전환:명:94
   전환기:명:10
  -전환되다:동:12
  -전환시키다:동:8
  +전환되:동:12
  +전환시키:동:8
   전환점:명:16
  -전환하다:동:43
  +전환하:동:43
   전황:명:3
   전획물:명:1
   전횡:명:1
  -전횡하다:동:2
  +전횡하:동:2
   전후:명:22
   전후:명:38
   전후사:명:1
   전후좌우:명:2
  -전후하다:동:25
  +전후하:동:25
   전희:명:1
   절:명:34
   절:명:61
  @@ -43245,74 +43245,74 @@
   절간:명:2
   절감:명:1
   절감:명:12
  -절감되다:동:1
  +절감되:동:1
   절감액:명:2
   절감책:명:1
  -절감하다:동:13
  -절감하다:동:8
  +절감하:동:13
  +절감하:동:8
   절개:명:2
   절개:명:5
  -절개되다:동:1
  +절개되:동:1
   절개선:명:2
  -절개하다:동:4
  +절개하:동:4
   절거리:명:1
   절경:명:6
   절구:명:1
   절구질:명:1
   절규:명:8
  -절규하다:동:5
  -절급되다:동:1
  +절규하:동:5
  +절급되:동:1
   절기:명:8
   절꺽절꺽:부:1
  -절다:동:4
  -절다:동:8
  +절:동:4
  +절:동:8
   절단:명:1
   절단:명:10
   절단기:명:2
  -절단당하다:동:1
  -절단되다:동:2
  +절단당하:동:1
  +절단되:동:2
   절단선:명:1
  -절단하다:동:4
  +절단하:동:4
   절대:명:46
   절대:부:59
   절대다수:명:5
   절대로:부:87
   절대성:명:6
  -절대시하다:동:1
  +절대시하:동:1
   절대액:명:1
   절대적:관:22
   절대적:명:63
   절대정신:명:2
   절대지:명:2
  -절대화되다:동:1
  -절대화하다:동:5
  +절대화되:동:1
  +절대화하:동:5
   절도:명:10
   절도:명:18
   절도단:명:1
   절도범:명:1
   절도사:명:4
   절도죄:명:1
  -절뚝거리다:동:2
  +절뚝거리:동:2
   절뚝발이:명:1
   절뚝절뚝:부:2
   절레절레:부:7
   절로:부:25
  -절룩거리다:동:2
  +절룩거리:동:2
   절름발이:명:7
   절리:명:11
   절리곡:명:1
   절망:명:55
   절망감:명:8
  -절망스럽다:형:2
  +절망스럽:형:2
   절망적:관:1
   절망적:명:21
  -절망하다:동:8
  -절멸하다:동:1
  -절묘하다:형:9
  +절망하:동:8
  +절멸하:동:1
  +절묘하:형:9
   절박:명:1
   절박감:명:2
   절박성:명:2
  -절박하다:형:31
  +절박하:형:31
   절반:명:90
   절밥:명:1
   절벽:명:15
  @@ -43322,26 +43322,26 @@
   절식:명:4
   절실:명:2
   절실성:명:3
  -절실하다:형:47
  +절실하:형:47
   절실히:부:11
   절씨구:감:4
   절약:명:21
  -절약되다:동:5
  +절약되:동:5
   절약적:명:2
   절약책:명:1
  -절약하다:동:26
  +절약하:동:26
   절약형:명:3
  -절연하다:동:1
  +절연하:동:1
   절음:명:1
  -절이다:동:4
  -절절하다:형:4
  +절이:동:4
  +절절하:형:4
   절정:명:24
   절정기:명:1
   절제:명:2
   절제:명:7
   절제감:명:1
  -절제되다:동:7
  -절제하다:동:5
  +절제되:동:7
  +절제하:동:5
   절주:명:1
   절지:의:1
   절차:명:160
  @@ -43349,49 +43349,49 @@
   절차적:관:2
   절차적:명:1
   절창:명:1
  -절창하다:동:1
  +절창하:동:1
   절충:명:1
   절충:명:4
   절충안:명:2
   절충적:관:1
   절충적:명:1
   절충주의적:명:1
  -절충하다:동:4
  -절친하다:형:8
  +절충하:동:4
  +절친하:형:8
   절터:명:4
  -절통하다:형:1
  +절통하:형:1
   절편:명:3
   절하:명:2
  -절하다:동:13
  -절하되다:동:1
  -절하하다:동:1
  +절하:동:13
  +절하되:동:1
  +절하하:동:1
   절해:명:1
  -젊다:형:401
  -젊어지다:동:6
  +젊:형:401
  +젊어지:동:6
   젊은것:명:1
   젊은네:명:1
   젊은이:명:183
   젊음:명:31
   점:명:1
  -점:명:1,417
  +점:명:1417
   점:명:19
   점:의:145
   점거:명:5
  -점거하다:동:3
  +점거하:동:3
   점검:명:35
  -점검당하다:동:1
  -점검되다:동:2
  +점검당하:동:1
  +점검되:동:2
   점검제:명:1
  -점검하다:동:44
  +점검하:동:44
   점고:명:1
   점괘:명:3
   점내:명:1
   점령:명:3
   점령군:명:3
   점령지:명:8
  -점령하다:동:11
  +점령하:동:11
   점막:명:2
  -점멸하다:동:3
  +점멸하:동:3
   점박이천남성:명:1
   점보:명:1
   점사:명:1
  @@ -43411,42 +43411,42 @@
   점유:명:3
   점유율:명:47
   점유지:명:2
  -점유하다:동:8
  +점유하:동:8
   점이:명:1
   점이적:관:1
  -점이하다:동:1
  +점이하:동:1
   점입가경:명:2
   점자:명:1
   점잔:명:2
  -점잖다:형:31
  +점잖:형:31
   점장:명:1
   점쟁이:명:15
   점점:부:200
   점점이:부:2
   점주:명:1
   점증적:관:1
  -점증하다:동:2
  -점지하다:동:2
  +점증하:동:2
  +점지하:동:2
   점진적:관:1
   점진적:명:9
  -점찍다:동:3
  +점찍:동:3
   점차:부:180
   점차적:명:3
  -점철되다:동:2
  -점쳐지다:동:1
  -점치다:동:14
  +점철되:동:2
  +점쳐지:동:1
  +점치:동:14
   점토:명:1
   점토판:명:1
   점퍼:명:12
   점포:명:25
   점포망:명:1
   점프:명:6
  -점프하다:동:1
  -점하다:동:9
  +점프하:동:1
  +점하:동:9
   점호:명:7
   점화:명:1
  -점화되다:동:1
  -점화하다:동:1
  +점화되:동:1
  +점화하:동:1
   접객:명:1
   접객업:명:1
   접객업소:명:1
  @@ -43454,62 +43454,62 @@
   접견권:명:2
   접견실:명:4
   접견제:명:1
  -접견하다:동:4
  +접견하:동:4
   접경:명:11
   접골:명:1
   접골사:명:1
   접근:명:125
   접근권:명:2
  -접근되다:동:2
  +접근되:동:2
   접근로:명:1
   접근법:명:2
  -접근시키다:동:5
  -접근하다:동:90
  -접다:동:55
  +접근시키:동:5
  +접근하:동:90
  +접:동:55
   접대:명:4
   접대부:명:2
   접대원:명:4
  -접대하다:동:1
  +접대하:동:1
   접동새:명:1
   접두어:명:1
   접때:명:1
   접례:명:1
   접목:명:2
  -접목되다:동:3
  -접목시키다:동:4
  +접목되:동:3
  +접목시키:동:4
   접미사:명:1
   접방살이:명:1
  -접변하다:동:1
  -접붙이다:동:1
  +접변하:동:1
  +접붙이:동:1
   접속:명:11
   접속률:명:1
  -접속하다:동:4
  +접속하:동:4
   접수:명:2
   접수:명:21
   접수국:명:1
  -접수되다:동:1
  -접수되다:동:6
  -접수시키다:동:3
  +접수되:동:1
  +접수되:동:6
  +접수시키:동:3
   접수일:명:1
   접수창구:명:1
  -접수하다:동:10
  -접수하다:동:2
  +접수하:동:10
  +접수하:동:2
   접시:명:46
   접시돌리기:명:1
   접신:명:1
   접안:명:2
  -접안하다:동:8
  -접어들다:동:91
  +접안하:동:8
  +접어들:동:91
   접영:명:3
   접영초:명:1
   접장:명:1
   접적:명:1
   접전:명:9
  -접전하다:동:1
  +접전하:동:1
   접종:명:2
   접종력:명:1
  -접종하다:동:2
  -접질리다:동:1
  +접종하:동:2
  +접질리:동:1
   접착:명:1
   접착식:명:1
   접착제:명:9
  @@ -43517,24 +43517,24 @@
   접촉률:명:3
   접촉면:명:1
   접촉성:명:1
  -접촉시키다:동:1
  +접촉시키:동:1
   접촉점:명:1
   접촉제:명:1
  -접촉하다:동:35
  -접하다:동:67
  +접촉하:동:35
  +접하:동:67
   접합:명:10
  -접합되다:동:10
  -접합시키다:동:1
  +접합되:동:10
  +접합시키:동:1
   접합점:명:2
  -접합하다:동:1
  -접혀지다:동:4
  -접히다:동:3
  +접합하:동:1
  +접혀지:동:4
  +접히:동:3
   젓:명:1
   젓가락:명:42
   젓가락질:명:2
   젓갈:명:5
   젓국지:명:1
  -젓다:동:84
  +젓:동:84
   정:명:1
   정:명:1
   정:명:4
  @@ -43549,7 +43549,7 @@
   정각:명:9
   정간:명:1
   정간물:명:1
  -정갈하다:형:10
  +정갈하:형:10
   정갈히:부:1
   정감:명:11
   정강:명:1
  @@ -43560,8 +43560,8 @@
   정견:명:1
   정견:명:5
   정결:명:1
  -정결하다:형:7
  -정겹다:형:14
  +정결하:형:7
  +정겹:형:14
   정경:명:12
   정경:명:20
   정계:명:55
  @@ -43574,8 +43574,8 @@
   정관사:명:1
   정교:명:1
   정교사:명:7
  -정교하다:형:27
  -정교해지다:동:2
  +정교하:형:27
  +정교해지:동:2
   정교회:명:1
   정구:명:2
   정구장:명:1
  @@ -43602,37 +43602,37 @@
   정낭:명:1
   정년:명:24
   정년퇴직:명:1
  -정년퇴직하다:동:1
  +정년퇴직하:동:1
   정념:명:1
   정념:명:1
   정념적:관:1
   정녕:부:13
   정담:명:2
   정답:명:21
  -정답다:형:23
  +정답:형:23
   정당:명:1
   정당:명:161
   정당방위:명:2
   정당성:명:36
   정당인:명:1
   정당적:명:1
  -정당하다:형:59
  +정당하:형:59
   정당화:명:3
  -정당화되다:동:6
  -정당화시키다:동:10
  -정당화하다:동:18
  -정도:명:1,619
  +정당화되:동:6
  +정당화시키:동:10
  +정당화하:동:18
  +정도:명:1619
   정도:명:3
   정도:명:6
   정독:명:1
  -정독하다:동:2
  +정독하:동:2
   정돈:명:6
  -정돈되다:동:19
  +정돈되:동:19
   정돈성:명:1
  -정돈하다:동:14
  -정들다:동:11
  -정들이다:동:1
  -정떨어지다:동:1
  +정돈하:동:14
  +정들:동:11
  +정들이:동:1
  +정떨어지:동:1
   정략:명:4
   정략적:관:1
   정량:명:1
  @@ -43641,8 +43641,8 @@
   정력적:명:4
   정력제:명:1
   정렬:명:2
  -정렬되다:동:1
  -정렬하다:동:4
  +정렬되:동:1
  +정렬하:동:4
   정령:명:4
   정례:명:2
   정례화:명:1
  @@ -43650,17 +43650,17 @@
   정론:명:4
   정류장:명:30
   정리:명:93
  -정리되다:동:28
  -정리하다:동:190
  +정리되:동:28
  +정리하:동:190
   정리함:명:1
   정립:명:1
   정립:명:11
   정립:명:11
  -정립되다:동:9
  -정립시키다:동:6
  +정립되:동:9
  +정립시키:동:6
   정립적:관:1
  -정립하다:동:16
  -정립하다:동:9
  +정립하:동:16
  +정립하:동:9
   정말:감:35
   정말:명:66
   정말:부:553
  @@ -43670,8 +43670,8 @@
   정면:명:72
   정면성:명:3
   정면충돌:명:3
  -정면충돌되다:동:1
  -정면충돌하다:동:2
  +정면충돌되:동:1
  +정면충돌하:동:2
   정명:명:1
   정묘:명:2
   정무:명:42
  @@ -43682,21 +43682,21 @@
   정물화:명:1
   정미기:명:3
   정미소:명:5
  -정미하다:동:1
  +정미하:동:1
   정밀:명:30
   정밀도:명:1
   정밀성:명:2
   정밀적:명:1
  -정밀하다:형:13
  +정밀하:형:13
   정밀히:부:1
   정박:명:5
   정박세:명:1
  -정박하다:동:6
  +정박하:동:6
   정반대:명:26
  -정반대되다:동:1
  +정반대되:동:1
   정방형:명:1
   정벌:명:6
  -정벌하다:동:6
  +정벌하:동:6
   정범:명:1
   정법:명:4
   정변:명:14
  @@ -43721,16 +43721,16 @@
   정보화:명:51
   정복:명:2
   정복:명:34
  -정복당하다:동:2
  -정복되다:동:3
  +정복당하:동:2
  +정복되:동:3
   정복민:명:2
   정복자:명:1
   정복적:명:1
   정복지:명:1
  -정복하다:동:16
  +정복하:동:16
   정부:명:1
   정부:명:1
  -정부:명:1,249
  +정부:명:1249
   정부:명:2
   정부관:명:4
   정부군:명:4
  @@ -43738,23 +43738,23 @@
   정부미:명:5
   정부안:명:4
   정부통령:명:1
  -정붙이다:동:1
  +정붙이:동:1
   정비:명:61
   정비계:명:1
  -정비되다:동:9
  +정비되:동:9
   정비사:명:3
   정비소:명:2
   정비업체:명:1
   정비창:명:3
   정비창장:명:1
  -정비하다:동:19
  +정비하:동:19
   정사:명:1
   정사:명:1
   정사:명:1
   정사:명:2
   정사:명:3
   정사각형:명:1
  -정산하다:동:1
  +정산하:동:1
   정상:명:114
   정상:명:38
   정상:명:4
  @@ -43766,23 +43766,23 @@
   정상적:관:5
   정상적:명:38
   정상화:명:18
  -정상화되다:동:2
  -정상화시키다:동:1
  -정상화하다:동:3
  +정상화되:동:2
  +정상화시키:동:1
  +정상화하:동:3
   정색:명:8
  -정색하다:동:2
  -정생하다:동:1
  +정색하:동:2
  +정생하:동:1
   정서:명:116
   정서적:관:16
   정서적:명:8
   정석:명:1
   정석적:명:1
   정설:명:13
  -정설화되다:동:1
  +정설화되:동:1
   정성:명:67
   정성껏:부:9
  -정성되다:동:1
  -정성스럽다:형:13
  +정성되:동:1
  +정성스럽:형:13
   정성스레:부:3
   정세:명:2
   정세:명:31
  @@ -43791,16 +43791,16 @@
   정수:명:4
   정수리:명:6
   정숙:명:2
  -정숙하다:형:1
  -정숙하다:형:1
  -정숙하다:형:6
  +정숙하:형:1
  +정숙하:형:1
  +정숙하:형:6
   정승:명:17
   정시:명:6
   정식:명:3
   정식:명:82
   정식화:명:1
  -정식화되다:동:1
  -정식화하다:동:1
  +정식화되:동:1
  +정식화하:동:1
   정신:명:1
   정신:명:10
   정신:명:608
  @@ -43823,7 +43823,7 @@
   정신사적:명:1
   정신생활:명:1
   정신세계:명:4
  -정신없다:형:3
  +정신없:형:3
   정신없이:부:30
   정신적:관:91
   정신적:명:95
  @@ -43835,8 +43835,8 @@
   정어:명:1
   정업:명:1
   정역:명:3
  -정연하다:형:6
  -정연하다:형:7
  +정연하:형:6
  +정연하:형:7
   정열:명:41
   정열적:관:1
   정열적:명:7
  @@ -43858,9 +43858,9 @@
   정의:명:29
   정의:명:39
   정의감:명:8
  -정의되다:동:11
  -정의롭다:형:14
  -정의하다:동:25
  +정의되:동:11
  +정의롭:형:14
  +정의하:동:25
   정이품:명:1
   정일:명:1
   정일품:명:1
  @@ -43870,10 +43870,10 @@
   정작:명:90
   정장:명:20
   정장식:명:1
  -정장하다:동:4
  +정장하:동:4
   정재:명:3
   정쟁:명:2
  -정쟁화시키다:동:1
  +정쟁화시키:동:1
   정적:관:1
   정적:관:9
   정적:명:1
  @@ -43886,59 +43886,59 @@
   정전:명:8
   정전기:명:1
   정전기적:관:2
  -정전되다:동:1
  +정전되:동:1
   정전제:명:2
   정절:명:14
   정절관:명:1
   정점:명:18
   정정:명:1
   정정:명:4
  -정정당당하다:형:1
  +정정당당하:형:1
   정정당당히:부:2
   정정진:명:1
  -정정하다:동:5
  -정정하다:형:6
  +정정하:동:5
  +정정하:형:6
   정제:명:1
   정제:명:1
  -정제되다:동:2
  -정제되다:동:2
  +정제되:동:2
  +정제되:동:2
   정제물:명:1
   정제성:명:1
  -정제하다:동:1
  -정제하다:동:3
  +정제하:동:1
  +정제하:동:3
   정조:명:1
   정조:명:15
   정조:명:3
   정종:명:15
  -정좌하다:동:1
  -정주하다:동:5
  +정좌하:동:1
  +정주하:동:5
   정중동:명:1
   정중선:명:2
  -정중하다:형:18
  +정중하:형:18
   정중히:부:11
   정지:명:1
   정지:명:2
   정지:명:32
   정지:명:9
  -정지되다:동:17
  -정지시키다:동:14
  -정지하다:동:14
  -정지하다:동:7
  +정지되:동:17
  +정지시키:동:14
  +정지하:동:14
  +정지하:동:7
   정직:명:1
   정직:명:3
   정직성:명:4
  -정직하다:형:30
  +정직하:형:30
   정진:명:4
   정진력:명:1
  -정진하다:동:11
  +정진하:동:11
   정짜:명:1
   정차:명:4
  -정차하다:동:5
  +정차하:동:5
   정착:명:23
  -정착되다:동:25
  -정착시키다:동:17
  +정착되:동:25
  +정착시키:동:17
   정착촌:명:2
  -정착하다:동:20
  +정착하:동:20
   정착화:명:1
   정찰:명:2
   정찰기:명:1
  @@ -43956,12 +43956,12 @@
   정체:명:9
   정체감:명:5
   정체기:명:1
  -정체되다:동:5
  +정체되:동:5
   정체불명:명:2
   정체성:명:17
   정체성론:명:3
  -정체시키다:동:1
  -정체하다:동:1
  +정체시키:동:1
  +정체하:동:1
   정초:명:12
   정총:명:1
   정취:명:9
  @@ -43991,8 +43991,8 @@
   정치적:명:74
   정치체:명:1
   정치판:명:8
  -정치하다:동:3
  -정치하다:형:1
  +정치하:동:3
  +정치하:형:1
   정치학:명:43
   정치학과:명:3
   정치학도:명:1
  @@ -44008,27 +44008,27 @@
   정통성:명:16
   정통적:명:1
   정통파:명:2
  -정통하다:동:6
  +정통하:동:6
   정파:명:15
   정평:명:7
   정포:명:2
   정풍:명:1
  -정하다:동:275
  -정하다:형:1
  -정하다:형:2
  -정하다:형:3
  +정하:동:275
  +정하:형:1
  +정하:형:2
  +정하:형:3
   정학:명:8
  -정학받다:동:1
  +정학받:동:1
   정합성:명:5
  -정해지다:동:71
  +정해지:동:71
   정향:명:1
   정형:명:1
   정형:명:3
   정형외과:명:4
   정형적:관:2
   정형적:명:1
  -정형화되다:동:4
  -정형화하다:동:1
  +정형화되:동:4
  +정형화하:동:1
   정혜:명:4
   정혜쌍수:명:7
   정호:명:3
  @@ -44036,13 +44036,13 @@
   정혼:명:1
   정화:명:1
   정화:명:20
  -정화되다:동:2
  +정화되:동:2
   정화제:명:1
   정화조:명:3
  -정화하다:동:14
  +정화하:동:14
   정확도:명:8
   정확성:명:13
  -정확하다:형:220
  +정확하:형:220
   정확히:부:96
   정황:명:12
   정회원:명:5
  @@ -44052,8 +44052,8 @@
   젖:명:34
   젖가슴:명:8
   젖꼭지:명:4
  -젖다:동:156
  -젖뜨리다:동:1
  +젖:동:156
  +젖뜨리:동:1
   젖먹이:명:10
   젖무덤:명:1
   젖병:명:1
  @@ -44063,8 +44063,8 @@
   젖소:명:14
   젖줄:명:1
   젖통:명:1
  -젖혀지다:동:1
  -젖히다:동:46
  +젖혀지:동:1
  +젖히:동:46
   제:관:30
   제:대:3
   제:명:1
  @@ -44084,27 +44084,27 @@
   제강소:명:1
   제강소장:명:1
   제거:명:27
  -제거되다:동:10
  -제거시키다:동:1
  +제거되:동:10
  +제거시키:동:1
   제거제:명:1
  -제거하다:동:75
  -제겨디디다:동:2
  +제거하:동:75
  +제겨디디:동:2
   제격:명:5
   제고:명:24
  -제고되다:동:3
  -제고시키다:동:6
  -제고하다:동:6
  +제고되:동:3
  +제고시키:동:6
  +제고하:동:6
   제곱:명:4
   제곱미터:의:11
   제곱센티미터:의:5
   제곱킬로미터:의:6
   제공:명:46
   제공권:명:1
  -제공되다:동:15
  -제공받다:동:3
  +제공되:동:15
  +제공받:동:3
   제공업자:명:1
   제공자:명:2
  -제공하다:동:159
  +제공하:동:159
   제과:명:2
   제과용품:명:1
   제과점:명:2
  @@ -44118,18 +44118,18 @@
   제국주의자:명:2
   제국주의적:관:6
   제국주의적:명:3
  -제국주의화하다:동:1
  +제국주의화하:동:1
   제기:명:2
   제기:명:24
  -제기되다:동:97
  +제기되:동:97
   제기랄:감:7
   제기차기:명:2
  -제기하다:동:104
  +제기하:동:104
   제길:감:2
   제까닥:부:1
   제까짓:관:3
   제꺽:부:1
  -제끼다:동:4
  +제끼:동:4
   제날:명:1
   제날짜:명:2
   제단:명:4
  @@ -44137,7 +44137,7 @@
   제대:명:3
   제대:명:8
   제대로:부:350
  -제대하다:동:21
  +제대하:동:21
   제도:명:1
   제도:명:527
   제도:명:8
  @@ -44145,10 +44145,10 @@
   제도적:관:33
   제도적:명:33
   제도판:명:1
  -제도하다:동:2
  +제도하:동:2
   제도화:명:3
  -제도화되다:동:5
  -제도화하다:동:4
  +제도화되:동:5
  +제도화하:동:4
   제독:명:1
   제동:명:12
   제때:명:12
  @@ -44157,7 +44157,7 @@
   제력:명:1
   제련:명:2
   제련술:명:1
  -제련하다:동:1
  +제련하:동:1
   제례악:명:2
   제로:명:6
   제로섬:명:1
  @@ -44165,7 +44165,7 @@
   제멋:명:2
   제멋대로:부:22
   제명:명:2
  -제명되다:동:1
  +제명되:동:1
   제목:명:150
   제목체:명:4
   제문:명:2
  @@ -44181,10 +44181,10 @@
   제법:부:65
   제법무아:명:2
   제보:명:7
  -제보받다:동:1
  +제보받:동:1
   제보자:명:4
   제보철:명:2
  -제보하다:동:2
  +제보하:동:2
   제복:명:1
   제복:명:26
   제본:명:1
  @@ -44198,12 +44198,12 @@
   제빵:명:1
   제사:명:114
   제사권:명:7
  -제사드리다:동:1
  +제사드리:동:1
   제사명:명:2
   제사상:명:7
   제사장:명:9
   제사장적:관:1
  -제사하다:동:4
  +제사하:동:4
   제삼:관:1
   제삼:명:1
   제삼국:명:6
  @@ -44216,7 +44216,7 @@
   제선:명:1
   제설:명:3
   제소:명:11
  -제소하다:동:4
  +제소하:동:4
   제솔회의:명:1
   제수:명:2
   제수용품:명:3
  @@ -44224,9 +44224,9 @@
   제스처적:명:1
   제시:명:39
   제시간:명:4
  -제시되다:동:55
  -제시받다:동:2
  -제시하다:동:242
  +제시되:동:55
  +제시받:동:2
  +제시하:동:242
   제식:명:1
   제식:명:4
   제신:명:1
  @@ -44235,32 +44235,32 @@
   제악:명:1
   제안:명:49
   제안권:명:1
  -제안되다:동:1
  +제안되:동:1
   제안서:명:3
   제안자:명:1
  -제안하다:동:49
  +제안하:동:49
   제압:명:3
  -제압하다:동:8
  +제압하:동:8
   제약:명:6
   제약:명:67
  -제약되다:동:5
  -제약받다:동:3
  +제약되:동:5
  +제약받:동:3
   제약사:명:1
   제약성:명:1
  -제약하다:동:17
  +제약하:동:17
   제어:명:13
  -제어되다:동:1
  +제어되:동:1
   제어식:명:1
  -제어하다:동:7
  -제언하다:동:1
  +제어하:동:7
  +제언하:동:1
   제왕:명:13
   제왕:명:2
   제왕:명:5
   제외:명:13
  -제외당하다:동:1
  -제외되다:동:39
  -제외시키다:동:9
  -제외하다:동:156
  +제외당하:동:1
  +제외되:동:39
  +제외시키:동:9
  +제외하:동:156
   제원:명:1
   제위:대:1
   제육:명:3
  @@ -44271,11 +44271,11 @@
   제의서:명:6
   제의성:명:1
   제의적:관:4
  -제의하다:동:32
  +제의하:동:32
   제이:명:2
   제일:명:2
   제일:명:295
  -제일가다:동:5
  +제일가:동:5
   제일선:명:1
   제일성:명:1
   제일성:명:5
  @@ -44283,7 +44283,7 @@
   제일주의:명:6
   제일주의론:명:1
   제일주의자:명:1
  -제일하다:형:1
  +제일하:형:1
   제자:명:108
   제자리:명:47
   제자리걸음:명:7
  @@ -44291,7 +44291,7 @@
   제작:명:98
   제작국:명:1
   제작권:명:1
  -제작되다:동:29
  +제작되:동:29
   제작물:명:2
   제작비:명:9
   제작사:명:6
  @@ -44301,7 +44301,7 @@
   제작업체:명:2
   제작자:명:15
   제작진:명:19
  -제작하다:동:63
  +제작하:동:63
   제장:명:2
   제재:명:2
   제재:명:49
  @@ -44309,26 +44309,26 @@
   제재성:명:1
   제재소:명:1
   제재안:명:1
  -제재하다:동:2
  +제재하:동:2
   제적:명:8
  -제적당하다:동:1
  -제적되다:동:8
  +제적당하:동:1
  +제적되:동:8
   제적생:명:3
   제전:명:12
   제전경기:명:4
   제정:명:1
   제정:명:2
   제정:명:34
  -제정되다:동:23
  +제정되:동:23
   제정신:명:9
   제정안:명:1
   제정일치:명:1
  -제정하다:동:31
  +제정하:동:31
   제제:명:1
   제제:명:7
   제조:명:53
   제조기:명:4
  -제조되다:동:6
  +제조되:동:6
   제조법:명:4
   제조비:명:1
   제조업:명:40
  @@ -44338,37 +44338,37 @@
   제조일:명:1
   제조자:명:1
   제조창:명:1
  -제조창화하다:동:1
  -제조하다:동:7
  +제조창화하:동:1
  +제조하:동:7
   제주:명:1
   제주휘파람새:명:1
   제지:명:3
   제지:명:6
   제지업체:명:1
  -제지하다:동:4
  +제지하:동:4
   제직:명:5
   제집:명:2
  -제창되다:동:3
  -제창하다:동:5
  +제창되:동:3
  +제창하:동:5
   제천:명:27
  -제천하다:동:1
  +제천하:동:1
   제철:명:5
   제철:명:8
   제철소:명:1
  -제철하다:동:1
  +제철하:동:1
   제청:명:1
   제청:명:4
  -제청하다:동:2
  +제청하:동:2
   제초제:명:2
   제출:명:23
  -제출되다:동:5
  -제출받다:동:3
  +제출되:동:5
  +제출받:동:3
   제출자:명:1
  -제출하다:동:70
  -제치다:동:34
  +제출하:동:70
  +제치:동:34
   제트기:명:2
   제패:명:2
  -제패하다:동:1
  +제패하:동:1
   제표:명:1
   제풀에:부:7
   제품:명:411
  @@ -44376,18 +44376,18 @@
   제품력:명:5
   제품명:명:2
   제품점:명:2
  -제품화하다:동:1
  +제품화하:동:1
   제하:명:1
  -제하다:동:6
  +제하:동:6
   제한:명:98
  -제한당하다:동:1
  -제한되다:동:56
  -제한받다:동:1
  +제한당하:동:1
  +제한되:동:56
  +제한받:동:1
   제한성:명:1
   제한적:관:3
   제한적:명:9
   제한점:명:1
  -제한하다:동:59
  +제한하:동:59
   제행무상:명:3
   제헌:명:2
   제헌절:명:1
  @@ -44397,7 +44397,7 @@
   제후:명:10
   제후국:명:1
   제휴:명:13
  -제휴하다:동:3
  +제휴하:동:3
   제힘:명:2
   젠장:감:4
   젠장칠:관:1
  @@ -44422,11 +44422,11 @@
   조각:명:72
   조각가:명:16
   조각구름:명:1
  -조각나다:동:3
  -조각내다:동:1
  +조각나:동:3
  +조각내:동:1
   조각달:명:3
   조각돌:명:1
  -조각되다:동:2
  +조각되:동:2
   조각배:명:2
   조각보:명:1
   조각상:명:10
  @@ -44434,7 +44434,7 @@
   조각조각:부:3
   조각칼:명:4
   조각품:명:2
  -조각하다:동:3
  +조각하:동:3
   조간:명:4
   조간신문:명:11
   조간화:명:1
  @@ -44449,7 +44449,7 @@
   조건:명:439
   조건부:명:5
   조건적:명:2
  -조건화하다:동:1
  +조건화하:동:1
   조것:대:1
   조견:명:1
   조계종:명:12
  @@ -44458,17 +44458,17 @@
   조교:명:4
   조교수:명:7
   조국:명:26
  -조그마하다:형:36
  -조그맣다:형:93
  +조그마하:형:36
  +조그맣:형:93
   조근성:명:3
   조금:명:328
   조금:부:294
   조금씩:부:130
   조급성:명:10
   조급증:명:2
  -조급하다:형:10
  -조급해지다:동:2
  -조급해하다:동:3
  +조급하:형:10
  +조급해지:동:2
  +조급해하:동:3
   조급히:부:3
   조기:대:1
   조기:명:10
  @@ -44476,18 +44476,18 @@
   조기:명:4
   조기장:명:1
   조깅:명:24
  -조깅하다:동:1
  +조깅하:동:1
   조끔:부:1
   조끼:명:9
  -조난당하다:동:1
  +조난당하:동:1
   조난자:명:3
   조달:명:28
  -조달되다:동:2
  +조달되:동:2
   조달망:명:1
   조달책:명:1
  -조달하다:동:23
  +조달하:동:23
   조랑말:명:1
  -조렇다:형:2
  +조렇:형:2
   조력:명:3
   조력:명:6
   조력권:명:1
  @@ -44497,51 +44497,51 @@
   조롱:명:3
   조롱꾼:명:2
   조롱박:명:2
  -조롱받다:동:1
  -조롱하다:동:6
  -조롷다:형:1
  +조롱받:동:1
  +조롱하:동:6
  +조롷:형:1
   조루:명:1
   조루증:명:1
   조류:명:11
   조류:명:13
   조류:명:2
  -조르다:동:34
  -조르다:동:4
  +조르:동:34
  +조르:동:4
   조르르:부:1
   조리:명:18
   조리:명:3
   조리:명:6
   조리:부:1
   조리기:명:5
  -조리다:동:6
  +조리:동:6
   조리대:명:1
  -조리되다:동:2
  +조리되:동:2
   조리법:명:2
   조리사:명:3
   조리용:명:1
   조리용품:명:1
  -조리하다:동:11
  +조리하:동:11
   조림:명:4
   조림:명:8
   조립:명:19
   조립도:명:1
  -조립되다:동:3
  +조립되:동:3
   조립식:명:2
   조립질:명:1
   조립품:명:1
  -조립하다:동:17
  -조마조마하다:형:7
  +조립하:동:17
  +조마조마하:형:7
   조만간:부:22
   조망:명:3
  -조망하다:동:2
  +조망하:동:2
   조명:명:1
   조명:명:32
  -조명되다:동:2
  +조명되:동:2
   조명등:명:2
  -조명받다:동:1
  -조명하다:동:19
  +조명받:동:1
  +조명하:동:19
   조목조목:명:10
  -조몰락거리다:동:1
  +조몰락거리:동:1
   조몰락조몰락:부:5
   조무래기:명:2
   조문:명:4
  @@ -44551,9 +44551,9 @@
   조미:명:1
   조미:명:2
   조미료:명:130
  -조밀하다:형:2
  +조밀하:형:2
   조바심:명:8
  -조바심치다:동:1
  +조바심치:동:1
   조발:명:1
   조밥:명:1
   조방제:명:2
  @@ -44563,7 +44563,7 @@
   조복:명:2
   조부:명:1
   조부모:명:2
  -조붓하다:형:1
  +조붓하:형:1
   조사:명:1
   조사:명:1
   조사:명:18
  @@ -44573,15 +44573,15 @@
   조사권:명:5
   조사단:명:25
   조사단장:명:1
  -조사되다:동:28
  +조사되:동:28
   조사반:명:2
  -조사받다:동:5
  +조사받:동:5
   조사부:명:1
   조사부장:명:1
   조사원:명:2
   조사자:명:3
   조사표:명:1
  -조사하다:동:254
  +조사하:동:254
   조산:명:3
   조산:명:5
   조산통:명:2
  @@ -44606,16 +44606,16 @@
   조선조:명:18
   조성:명:2
   조성:명:45
  -조성되다:동:28
  +조성되:동:28
   조성설:명:1
  -조성하다:동:1
  -조성하다:동:1
  -조성하다:동:41
  +조성하:동:1
  +조성하:동:1
  +조성하:동:41
   조세:명:26
   조소:명:2
   조소:명:5
   조소성:명:1
  -조속하다:형:9
  +조속하:형:9
   조속히:부:9
   조수:명:1
   조수:명:4
  @@ -44623,31 +44623,31 @@
   조수석:명:4
   조수익:명:1
   조숙:명:1
  -조숙하다:형:4
  +조숙하:형:4
   조숙형:명:1
   조식:명:1
   조식:의:1
   조신:명:2
  -조신하다:형:4
  +조신하:형:4
   조심:명:11
   조심성:명:3
  -조심스러워지다:동:1
  -조심스러워하다:동:1
  -조심스럽다:형:70
  +조심스러워지:동:1
  +조심스러워하:동:1
  +조심스럽:형:70
   조심스레:부:15
   조심조심:부:9
  -조심조심하다:동:1
  -조심하다:동:80
  -조쌀하다:형:1
  -조아리다:동:6
  -조악하다:형:5
  +조심조심하:동:1
  +조심하:동:80
  +조쌀하:형:1
  +조아리:동:6
  +조악하:형:5
   조야:명:2
   조약:명:37
   조약돌:명:15
   조어:명:3
   조언:명:15
   조언자:명:1
  -조언하다:동:6
  +조언하:동:6
   조업:명:1
   조업:명:13
   조역:명:1
  @@ -44660,76 +44660,76 @@
   조용:명:1
   조용조:명:1
   조용조용:부:2
  -조용하다:형:82
  -조용해지다:동:11
  +조용하:형:82
  +조용해지:동:11
   조용히:부:107
  -조우하다:동:2
  +조우하:동:2
   조울증:명:1
   조원:명:2
   조율:명:1
   조율:명:11
  -조율되다:동:1
  +조율되:동:1
   조응:명:3
  -조응하다:동:5
  +조응하:동:5
   조의금:명:1
   조이:명:2
  -조이다:동:21
  +조이:동:21
   조인:명:3
   조인트:명:1
  -조인하다:동:1
  +조인하:동:1
   조작:명:20
   조작:명:33
   조작극:명:1
  -조작되다:동:7
  +조작되:동:7
   조작설:명:1
  -조작시키다:동:1
  +조작시키:동:1
   조작적:명:1
  -조작하다:동:13
  -조작하다:동:9
  +조작하:동:13
  +조작하:동:9
   조잘조잘:부:1
  -조잡스럽다:형:1
  -조잡하다:형:3
  -조잡하다:형:5
  +조잡스럽:형:1
  +조잡하:형:3
  +조잡하:형:5
   조장:명:2
   조장:명:4
  -조장되다:동:2
  -조장시키다:동:2
  +조장되:동:2
  +조장시키:동:2
   조장자:명:1
  -조장하다:동:31
  +조장하:동:31
   조절:명:33
   조절기:명:2
  -조절되다:동:2
  -조절하다:동:52
  +조절되:동:2
  +조절하:동:52
   조정:명:17
   조정:명:29
   조정:명:5
   조정:명:52
   조정관:명:1
   조정기:명:1
  -조정되다:동:11
  +조정되:동:11
   조정력:명:1
  -조정받다:동:1
  +조정받:동:1
   조정법:명:1
   조정실:명:2
   조정실장:명:5
  -조정하다:동:30
  -조정하다:동:7
  -조제하다:동:3
  +조정하:동:30
  +조정하:동:7
  +조제하:동:3
   조종:명:8
   조종간:명:1
   조종대:명:1
  -조종되다:동:2
  +조종되:동:2
   조종사:명:11
   조종술:명:1
   조종자:명:1
  -조종하다:동:12
  +조종하:동:12
   조종형:명:3
  -조준하다:동:3
  -조지다:동:1
  -조지다:동:2
  +조준하:동:3
  +조지:동:1
  +조지:동:2
   조직:명:320
   조직단:명:1
  -조직되다:동:9
  +조직되:동:9
   조직력:명:2
   조직론:명:1
   조직원:명:5
  @@ -44737,24 +44737,24 @@
   조직적:명:24
   조직책:명:3
   조직체:명:2
  -조직하다:동:21
  +조직하:동:21
   조직화:명:14
  -조직화되다:동:9
  -조직화하다:동:10
  +조직화되:동:9
  +조직화하:동:10
   조짐:명:44
   조차:명:1
   조차지:명:1
   조찬:명:21
   조처:명:92
  -조처되다:동:1
  +조처되:동:1
   조처안:명:1
  -조처하다:동:6
  +조처하:동:6
   조청:명:2
  -조촐하다:형:6
  +조촐하:형:6
   조촐히:부:1
   조치:명:212
  -조치되다:동:3
  -조치하다:동:10
  +조치되:동:3
  +조치하:동:10
   조칙:명:1
   조카:명:39
   조카딸:명:1
  @@ -44762,24 +44762,24 @@
   조카사위:명:1
   조타수:명:1
   조퇴:명:1
  -조퇴하다:동:1
  +조퇴하:동:1
   조폐:명:2
   조하금:명:1
   조하주:명:1
   조합:명:86
   조합물:명:1
   조합비:명:1
  -조합시키다:동:2
  +조합시키:동:2
   조합원:명:19
   조합장:명:13
   조합주의:명:1
  -조합하다:동:4
  +조합하:동:4
   조합형:명:17
   조합형주의자:명:2
   조항:명:61
   조형:명:8
   조형관:명:1
  -조형되다:동:1
  +조형되:동:1
   조형물:명:5
   조형미:명:6
   조형성:명:6
  @@ -44787,16 +44787,16 @@
   조형적:명:5
   조화:명:115
   조화:명:14
  -조화되다:동:32
  -조화롭다:형:13
  +조화되:동:32
  +조화롭:형:13
   조화미:명:1
   조화성:명:1
  -조화시키다:동:16
  -조화하다:동:4
  +조화시키:동:16
  +조화하:동:4
   조회:명:10
   조회:명:12
   조회란:명:1
  -조회하다:동:6
  +조회하:동:6
   족:명:4
   족단:명:2
   족단적:관:1
  @@ -44820,32 +44820,32 @@
   족제비:명:2
   족족:의:3
   족집게:명:2
  -족출하다:동:1
  -족치다:동:2
  +족출하:동:1
  +족치:동:2
   족탕:명:1
  -족하다:형:11
  +족하:형:11
   족히:부:11
   존:명:7
   존경:명:14
  -존경받다:동:11
  -존경스럽다:형:5
  +존경받:동:11
  +존경스럽:형:5
   존경심:명:4
  -존경하다:동:35
  -존귀하다:형:2
  +존경하:동:35
  +존귀하:형:2
   존대어:명:1
   존댓말:명:16
   존립:명:8
  -존립하다:동:3
  +존립하:동:3
   존망:명:2
   존부:명:1
   존부론:명:1
   존속:명:1
   존속:명:13
  -존속시키다:동:4
  -존속하다:동:10
  +존속시키:동:4
  +존속하:동:10
   존엄:명:8
   존엄성:명:13
  -존엄하다:형:1
  +존엄하:형:1
   존영:명:3
   존재:명:414
   존재감:명:2
  @@ -44854,66 +44854,66 @@
   존재론적:명:3
   존재설:명:1
   존재자:명:1
  -존재하다:동:276
  +존재하:동:276
   존중:명:17
  -존중되다:동:5
  +존중되:동:5
   존중론:명:1
  -존중받다:동:1
  +존중받:동:1
   존중심:명:2
  -존중하다:동:59
  -존치하다:동:1
  +존중하:동:59
  +존치하:동:1
   존칭:명:2
   존폐:명:2
   존호:명:1
   존화:명:1
   졸:명:2
   졸고:명:2
  -졸깃거리다:동:1
  -졸다:동:21
  -졸도하다:동:1
  +졸깃거리:동:1
  +졸:동:21
  +졸도하:동:1
   졸라:부:2
  -졸라매다:동:5
  -졸리다:동:1
  -졸리다:동:15
  -졸리우다:동:1
  +졸라매:동:5
  +졸리:동:1
  +졸리:동:15
  +졸리우:동:1
   졸방제비꽃:명:2
   졸병:명:1
   졸부:명:4
   졸속:명:3
  -졸아들다:동:1
  +졸아들:동:1
   졸업:명:74
   졸업반:명:4
   졸업생:명:28
  -졸업시키다:동:1
  +졸업시키:동:1
   졸업식:명:3
   졸업식장:명:2
   졸업자:명:3
   졸업장:명:7
  -졸업하다:동:102
  +졸업하:동:102
   졸업화:명:1
   졸음:명:15
  -졸이다:동:9
  +졸이:동:9
   졸작:명:2
   졸저:명:1
   졸졸:부:5
   졸지:명:15
   졸참나무:명:1
   좀:명:5
  -좀:부:1,555
  +좀:부:1555
   좀도둑:명:1
  -좀먹다:동:5
  -좀스럽다:형:2
  +좀먹:동:5
  +좀스럽:형:2
   좀작살나무:명:4
   좀처럼:부:41
   좀체:부:6
   좀팽이:명:1
  -좁다:형:128
  -좁다랗다:형:2
  +좁:형:128
  +좁다랗:형:2
   좁쌀:명:4
  -좁아지다:동:9
  -좁아터지다:동:1
  -좁혀지다:동:16
  -좁히다:동:20
  +좁아지:동:9
  +좁아터지:동:1
  +좁혀지:동:16
  +좁히:동:20
   종:명:1
   종:명:123
   종:명:26
  @@ -44922,14 +44922,14 @@
   종가:명:2
   종각:명:2
   종강:명:7
  -종강하다:동:3
  +종강하:동:3
   종개념:명:21
   종개념적:명:1
   종결:명:10
  -종결되다:동:8
  -종결시키다:동:1
  -종결짓다:동:1
  -종결하다:동:3
  +종결되:동:8
  +종결시키:동:1
  +종결짓:동:1
  +종결하:동:3
   종괴:명:1
   종교:명:244
   종교가:명:5
  @@ -44953,7 +44953,7 @@
   종내:부:3
   종년:명:4
   종노릇:명:1
  -종노릇하다:동:1
  +종노릇하:동:1
   종놈:명:2
   종다리:명:5
   종단:명:1
  @@ -44966,8 +44966,8 @@
   종려나무:명:4
   종례:명:1
   종료:명:10
  -종료되다:동:1
  -종료하다:동:1
  +종료되:동:1
  +종료하:동:1
   종루:명:7
   종류:명:229
   종류별:명:3
  @@ -44986,37 +44986,37 @@
   종사관:명:1
   종사원:명:2
   종사자:명:18
  -종사하다:동:40
  +종사하:동:40
   종살이:명:6
  -종살이하다:동:1
  +종살이하:동:1
   종성:명:10
   종소리:명:35
   종속:명:35
  -종속되다:동:10
  +종속되:동:10
   종속론:명:1
   종속물:명:1
   종속성:명:2
  -종속시키다:동:3
  +종속시키:동:3
   종속적:관:6
   종속적:명:2
  -종속하다:동:3
  +종속하:동:3
   종식:명:13
  -종식되다:동:2
  -종식시키다:동:4
  +종식되:동:2
  +종식시키:동:4
   종신:명:2
   종신직:명:1
   종신형:명:2
   종아리:명:14
  -종알거리다:동:7
  +종알거리:동:7
   종알종알:부:1
   종양:명:9
   종언:명:5
   종업식:명:2
   종업원:명:86
   종영:명:1
  -종영되다:동:8
  -종용받다:동:1
  -종용하다:동:11
  +종영되:동:8
  +종용받:동:1
  +종용하:동:11
   종이:명:161
   종이꽃:명:1
   종이돈:명:3
  @@ -45034,7 +45034,7 @@
   종잇조각:명:1
   종자:명:1
   종자:명:24
  -종잡다:동:8
  +종잡:동:8
   종장:명:1
   종적:관:1
   종적:명:1
  @@ -45048,7 +45048,7 @@
   종족적:관:1
   종종:부:51
   종종걸음:명:14
  -종종대다:동:2
  +종종대:동:2
   종종지:명:1
   종주국:명:7
   종주먹:명:4
  @@ -45065,27 +45065,27 @@
   종파:명:37
   종파주의:명:1
   종합:명:182
  -종합되다:동:1
  +종합되:동:1
   종합적:관:2
   종합적:명:27
   종합지:명:2
  -종합하다:동:37
  -종합화하다:동:2
  +종합하:동:37
  +종합화하:동:2
   종회:명:1
   종횡:명:1
   종횡무진:명:6
   종횡적:관:1
   좆:명:5
  -좆같다:형:4
  +좆같:형:4
   좆같이:부:2
   좆나:부:3
   좆나리:부:1
  -좇다:동:20
  -좇아가다:동:2
  -좋다:형:2,661
  +좇:동:20
  +좇아가:동:2
  +좋:형:2661
   좋아:감:20
  -좋아지다:동:58
  -좋아하다:동:458
  +좋아지:동:58
  +좋아하:동:458
   좋이:부:1
   좌:명:8
   좌경:명:5
  @@ -45097,40 +45097,40 @@
   좌르르:부:1
   좌보:명:1
   좌불안석:명:2
  -좌불안석하다:동:1
  +좌불안석하:동:1
   좌상:명:2
   좌석:명:43
   좌선:명:1
   좌선:명:3
   좌선룡:명:2
  -좌시하다:동:1
  +좌시하:동:1
   좌식:명:5
   좌우:명:77
   좌우간:명:3
  -좌우되다:동:20
  +좌우되:동:20
   좌우익:명:4
   좌우지간:명:5
  -좌우하다:동:27
  +좌우하:동:27
   좌익:명:31
   좌절:명:42
   좌절감:명:14
  -좌절되다:동:11
  -좌절시키다:동:2
  -좌절하다:동:12
  -좌정되다:동:1
  -좌정하다:동:1
  +좌절되:동:11
  +좌절시키:동:2
  +좌절하:동:12
  +좌정되:동:1
  +좌정하:동:1
   좌중:명:9
   좌중월:명:1
  -좌지우지되다:동:2
  -좌지우지하다:동:3
  +좌지우지되:동:2
  +좌지우지하:동:3
   좌찬성:명:1
  -좌천시키다:동:1
  +좌천시키:동:1
   좌청룡:명:8
   좌초:명:3
  -좌초되다:동:1
  -좌초하다:동:1
  +좌초되:동:1
  +좌초하:동:1
   좌충우돌:명:1
  -좌충우돌하다:동:1
  +좌충우돌하:동:1
   좌측:명:9
   좌측통행:명:1
   좌파:명:11
  @@ -45145,23 +45145,23 @@
   죄:명:124
   죄:부:8
   죄과:명:4
  -죄다:동:11
  +죄:동:11
   죄다:부:10
   죄명:명:2
   죄목:명:6
  -죄송스럽다:형:5
  -죄송하다:형:78
  +죄송스럽:형:5
  +죄송하:형:78
   죄수:명:16
   죄수복:명:3
  -죄스럽다:형:5
  +죄스럽:형:5
   죄악:명:13
   죄악상:명:1
  -죄악시하다:동:2
  -죄어들다:동:2
  +죄악시하:동:2
  +죄어들:동:2
   죄의식:명:10
   죄인:명:50
   죄질:명:2
  -죄짓다:동:10
  +죄짓:동:10
   죄책감:명:5
   죄형:명:5
   죔죔:명:1
  @@ -45195,7 +45195,7 @@
   주검:명:6
   주견:명:1
   주견:명:1
  -주고받다:동:79
  +주고받:동:79
   주곡:명:4
   주관:명:10
   주관:명:10
  @@ -45205,8 +45205,8 @@
   주관적:관:29
   주관적:명:22
   주관주의:명:3
  -주관하다:동:22
  -주관화하다:동:1
  +주관하:동:22
  +주관화하:동:1
   주교:명:11
   주구:명:1
   주군제:명:2
  @@ -45227,33 +45227,33 @@
   주눅:명:11
   주니어:명:13
   주님:명:1
  -주다:동:1,489
  -주다:보:4,929
  +주:동:1489
  +주다:보:4929
   주당:명:1
   주도:명:1
   주도:명:43
   주도국:명:1
   주도권:명:25
  -주도되다:동:4
  +주도되:동:4
   주도력:명:1
  -주도면밀하다:형:2
  +주도면밀하:형:2
   주도면밀히:부:1
   주도성:명:1
   주도적:관:9
   주도적:명:4
  -주도하다:동:71
  +주도하:동:71
   주도형:명:4
   주동:명:4
   주동력:명:1
   주동자:명:3
   주동적:명:1
  -주동하다:동:3
  -주되다:동:41
  +주동하:동:3
  +주되:동:41
   주둔:명:17
   주둔국:명:1
   주둔군:명:4
  -주둔시키다:동:4
  -주둔하다:동:12
  +주둔시키:동:4
  +주둔하:동:12
   주둥아리:명:1
   주둥이:명:10
   주등:명:1
  @@ -45262,7 +45262,7 @@
   주렁주렁:부:7
   주력:명:1
   주력:명:43
  -주력하다:동:34
  +주력하:동:34
   주련:명:1
   주례:명:12
   주례:명:2
  @@ -45278,10 +45278,10 @@
   주름살:명:19
   주름살투성이:명:2
   주름선:명:2
  -주름잡다:동:8
  +주름잡:동:8
   주름치마:명:3
   주리:명:3
  -주리다:동:5
  +주리:동:5
   주마등:명:1
   주막:명:19
   주막거리:명:1
  @@ -45297,25 +45297,25 @@
   주먹다짐:명:2
   주먹밥:명:8
   주먹질:명:9
  -주먹질하다:동:1
  +주먹질하:동:1
   주먹코:명:1
   주모자:명:3
   주목:명:53
   주목거리:명:1
  -주목되다:동:57
  -주목받다:동:15
  +주목되:동:57
  +주목받:동:15
   주목표:명:1
  -주목하다:동:109
  +주목하:동:109
   주무:명:4
  -주무르다:동:27
  -주무시다:동:31
  +주무르:동:27
  +주무시:동:31
   주문:명:15
   주문:명:43
  -주문받다:동:1
  -주문하다:동:34
  +주문받:동:1
  +주문하:동:34
   주물:명:1
  -주물럭거리다:동:1
  -주물리다:동:2
  +주물럭거리:동:1
  +주물리:동:2
   주미:명:3
   주민:명:415
   주민세:명:5
  @@ -45334,7 +45334,7 @@
   주변인:명:1
   주변적:관:1
   주변촌:명:1
  -주변화하다:동:1
  +주변화하:동:1
   주보:명:1
   주봉:명:2
   주부:명:127
  @@ -45349,11 +45349,11 @@
   주사액:명:4
   주사제:명:3
   주사파:명:4
  -주사하다:동:9
  +주사하:동:9
   주산:명:1
   주산:명:18
   주산지:명:1
  -주살하다:동:1
  +주살하:동:1
   주상:명:2
   주상골:명:1
   주색:명:1
  @@ -45367,7 +45367,7 @@
   주석서:명:2
   주석직:명:10
   주선:명:8
  -주선하다:동:8
  +주선하:동:8
   주섬주섬:부:5
   주성분:명:4
   주소:명:39
  @@ -45377,7 +45377,7 @@
   주술적:관:6
   주스:명:33
   주시:명:3
  -주시하다:동:23
  +주시하:동:23
   주식:명:121
   주식:명:14
   주식형:명:3
  @@ -45387,8 +45387,8 @@
   주안상:명:1
   주안점:명:4
   주어:명:5
  -주어지다:동:154
  -주억거리다:동:5
  +주어지:동:154
  +주억거리:동:5
   주업:명:1
   주역:명:31
   주역론:명:1
  @@ -45398,14 +45398,14 @@
   주연성:명:5
   주연자:명:4
   주연작:명:1
  -주연하다:동:5
  +주연하:동:5
   주영:명:1
   주옥:명:2
   주요:명:213
   주요인:명:1
  -주요하다:형:44
  -주워듣다:동:4
  -주워섬기다:동:1
  +주요하:형:44
  +주워듣:동:4
  +주워섬기:동:1
   주원료:명:2
   주원인:명:5
   주위:명:292
  @@ -45416,7 +45416,7 @@
   주의보:명:2
   주의서:명:1
   주의자:명:13
  -주의하다:동:50
  +주의하:동:50
   주인:명:1
   주인:명:268
   주인공:명:176
  @@ -45432,10 +45432,10 @@
   주임:명:1
   주임:명:62
   주입:명:2
  -주입되다:동:2
  -주입받다:동:2
  -주입시키다:동:6
  -주입하다:동:10
  +주입되:동:2
  +주입받:동:2
  +주입시키:동:6
  +주입하:동:10
   주자:명:18
   주자:명:2
   주자직:명:1
  @@ -45445,10 +45445,10 @@
   주장:명:1
   주장:명:297
   주장:명:4
  -주장되다:동:5
  +주장되:동:5
   주장자:명:1
  -주장하다:동:1
  -주장하다:동:417
  +주장하:동:1
  +주장하:동:417
   주재:명:18
   주재:명:26
   주재국:명:3
  @@ -45456,31 +45456,31 @@
   주재소:명:1
   주재원:명:3
   주재자:명:4
  -주재하다:동:1
  -주재하다:동:22
  +주재하:동:1
  +주재하:동:22
   주저:명:4
  -주저앉다:동:69
  -주저앉히다:동:1
  +주저앉:동:69
  +주저앉히:동:1
   주저주저:부:1
  -주저주저하다:동:2
  -주저하다:동:18
  +주저주저하:동:2
  +주저하:동:18
   주적:명:2
   주전:명:6
   주전부리:명:2
   주전산기:명:1
   주전자:명:16
  -주절거리다:동:1
  -주절대다:동:2
  +주절거리:동:1
  +주절대:동:2
   주절주절:부:1
   주점:명:3
   주접:명:2
   주정:명:7
   주정뱅이:명:3
  -주정하다:동:1
  +주정하:동:1
   주제:명:20
   주제:명:265
   주제가:명:3
  -주제넘다:형:2
  +주제넘:형:2
   주제도:명:2
   주제문:명:4
   주제어:명:1
  @@ -45492,22 +45492,22 @@
   주지:명:11
   주지:명:3
   주지:명:4
  -주지되다:동:1
  +주지되:동:1
   주지사:명:1
  -주지시키다:동:1
  +주지시키:동:1
   주지주의:명:1
  -주지하다:동:5
  +주지하:동:5
   주차:명:9
   주차권:명:1
   주차료:명:1
  -주차시키다:동:1
  +주차시키:동:1
   주차장:명:36
  -주차하다:동:6
  -주창되다:동:1
  +주차하:동:6
  +주창되:동:1
   주창자:명:4
  -주창하다:동:7
  +주창하:동:7
   주책:명:2
  -주책없다:형:2
  +주책없:형:2
   주책없이:부:1
   주체:명:1
   주체:명:253
  @@ -45518,19 +45518,19 @@
   주체자:명:2
   주체적:관:32
   주체적:명:41
  -주체하다:동:9
  +주체하:동:9
   주체화:명:1
  -주체화하다:동:1
  +주체화하:동:1
   주초:명:6
   주총:명:6
   주최:명:27
  -주최하다:동:22
  +주최하:동:22
   주축:명:22
   주춤:부:7
  -주춤거리다:동:3
  +주춤거리:동:3
   주춤주춤:부:3
  -주춤하다:동:3
  -주춤해지다:동:1
  +주춤하:동:3
  +주춤해지:동:1
   주춧돌:명:4
   주치의:명:1
   주크박스:명:3
  @@ -45540,7 +45540,7 @@
   주택지:명:9
   주특기:명:1
   주파수:명:11
  -주파하다:동:1
  +주파하:동:1
   주판:명:11
   주판셈:명:7
   주판알:명:3
  @@ -45557,34 +45557,34 @@
   주황:명:1
   주황빛:명:1
   주황색:명:3
  -주효하다:동:5
  +주효하:동:5
   죽:명:1
   죽:명:44
   죽:부:20
   죽기로:부:2
  -죽다:동:2
  -죽다:동:843
  +죽:동:2
  +죽:동:843
   죽다:보:28
  -죽때리다:동:2
  +죽때리:동:2
   죽마고우:명:4
   죽사발:명:2
   죽살이:명:1
   죽세공:명:1
   죽세공품:명:1
   죽순:명:3
  -죽어지다:동:1
  +죽어지:동:1
   죽은피:명:1
   죽을상:명:4
   죽을죄:명:1
   죽음:명:226
  -죽이다:동:189
  -죽임당하다:동:1
  +죽이:동:189
  +죽임당하:동:1
   죽제공:명:1
   죽제품:명:3
   죽죽:부:2
   죽지:명:1
   죽창:명:2
  -죽치다:동:2
  +죽치:동:2
   준거:명:5
   준거안:명:3
   준결승:명:9
  @@ -45592,12 +45592,12 @@
   준고정:명:2
   준공:명:10
   준공년:명:1
  -준공되다:동:6
  +준공되:동:6
   준공설:명:2
   준공식:명:7
   준공익:명:1
   준공일:명:1
  -준공하다:동:4
  +준공하:동:4
   준국가:명:1
   준기술자:명:1
   준도시:명:2
  @@ -45605,28 +45605,28 @@
   준말:명:1
   준법:명:6
   준법정신:명:3
  -준별하다:동:1
  +준별하:동:1
   준보전:명:3
   준비:명:211
   준비금:명:2
   준비단:명:3
  -준비되다:동:33
  +준비되:동:33
   준비물:명:50
   준비생:명:1
   준비서:명:1
  -준비시키다:동:1
  +준비시키:동:1
   준비실:명:1
  -준비하다:동:207
  +준비하:동:207
   준사관:명:1
   준선전:명:1
   준설:명:3
  -준설되다:동:1
  +준설되:동:1
   준수:명:5
  -준수하다:동:8
  -준수하다:형:1
  -준엄하다:형:11
  +준수하:동:8
  +준수하:형:1
  +준엄하:형:11
   준여권:명:1
  -준열하다:형:2
  +준열하:형:2
   준우승:명:6
   준위:명:1
   준장:명:7
  @@ -45635,8 +45635,8 @@
   준주거:명:1
   준칙:명:5
   준플레이오프:명:3
  -준하다:동:6
  -준하다:형:1
  +준하:동:6
  +준하:형:1
   준핵보유국:명:1
   준형:명:1
   줄:명:191
  @@ -45646,18 +45646,18 @@
   줄거리:명:32
   줄곧:부:66
   줄기:명:93
  -줄기차다:형:24
  +줄기차:형:24
   줄끌기:명:2
   줄낚시:명:1
   줄넘기:명:11
  -줄넘기하다:동:1
  -줄다:동:75
  +줄넘기하:동:1
  +줄:동:75
   줄다리기:명:10
  -줄다리기하다:동:1
  -줄달다:동:1
  +줄다리기하:동:1
  +줄달:동:1
   줄달음:명:1
   줄달음질:명:2
  -줄달음치다:동:2
  +줄달음치:동:2
   줄담배:명:6
   줄당기기:명:2
   줄딸기:명:1
  @@ -45665,28 +45665,28 @@
   줄무늬:명:20
   줄사다리:명:1
   줄알:명:1
  -줄어들다:동:133
  -줄이다:동:251
  +줄어들:동:133
  +줄이:동:251
   줄자:명:2
  -줄잡다:동:7
  +줄잡:동:7
   줄장미:명:2
   줄줄:부:13
   줄줄이:부:23
  -줄짓다:동:14
  +줄짓:동:14
   줄창:부:3
   줄초상:명:3
   줄타기:명:2
   줄풀:명:1
   줄행랑:명:7
  -줄행랑치다:동:2
  +줄행랑치:동:2
   줌:명:1
   줌:명:19
  -줍다:동:76
  +줍:동:76
   줏대:명:6
   중:명:13
   중:명:21
   중:명:31
  -중:의:1,950
  +중:의:1950
   중가:명:1
   중간:명:135
   중간고사:명:4
  @@ -45709,22 +45709,22 @@
   중개업자:명:4
   중개인:명:1
   중개자:명:1
  -중개하다:동:1
  +중개하:동:1
   중거리:명:4
  -중건되다:동:2
  -중건하다:동:3
  +중건되:동:2
  +중건하:동:3
   중견:명:16
   중경상:명:4
   중계:명:45
   중계권료:명:1
  -중계되다:동:3
  +중계되:동:3
   중계방송:명:31
   중계방송반:명:1
   중계방송사:명:1
  -중계방송하다:동:2
  +중계방송하:동:2
   중계실:명:1
   중계차:명:2
  -중계하다:동:5
  +중계하:동:5
   중고:명:10
   중고:명:6
   중고교:명:6
  @@ -45738,8 +45738,8 @@
   중과:명:1
   중과부적:명:1
   중과세:명:1
  -중과세하다:동:2
  -중과하다:동:2
  +중과세하:동:2
  +중과하:동:2
   중교:명:1
   중교생:명:1
   중구금:명:2
  @@ -45765,9 +45765,9 @@
   중늙은이:명:1
   중단:명:2
   중단:명:32
  -중단되다:동:33
  -중단시키다:동:9
  -중단하다:동:42
  +중단되:동:33
  +중단시키:동:9
  +중단하:동:42
   중닭:명:1
   중당:명:1
   중대:명:10
  @@ -45776,7 +45776,7 @@
   중대사:명:1
   중대성:명:1
   중대장:명:3
  -중대하다:형:42
  +중대하:형:42
   중도:명:13
   중도:명:15
   중도:명:4
  @@ -45785,12 +45785,12 @@
   중도적:관:4
   중도적:명:1
   중독:명:31
  -중독되다:동:7
  +중독되:동:7
   중독자:명:4
   중독증:명:2
   중동:명:1
   중동:명:41
  -중동무이하다:동:1
  +중동무이하:동:1
   중두리:명:1
   중등:명:12
   중등부:명:1
  @@ -45813,7 +45813,7 @@
   중립화:명:1
   중매:명:12
   중매결혼:명:3
  -중매결혼하다:동:1
  +중매결혼하:동:1
   중매인:명:1
   중매쟁이:명:2
   중머슴:명:1
  @@ -45821,7 +45821,7 @@
   중명조:명:1
   중모리:명:1
   중무장:명:1
  -중무장하다:동:3
  +중무장하:동:3
   중문:명:2
   중문과:명:2
   중문학과:명:1
  @@ -45833,7 +45833,7 @@
   중병:명:2
   중복:명:10
   중복:명:2
  -중복되다:동:11
  +중복되:동:11
   중복성:명:1
   중부:명:68
   중부권:명:9
  @@ -45845,7 +45845,7 @@
   중상자:명:2
   중상주의:명:2
   중상층:명:1
  -중상하다:동:1
  +중상하:동:1
   중생:명:1
   중생:명:77
   중생계:명:2
  @@ -45874,11 +45874,11 @@
   중수:명:1
   중수도:명:5
   중수부:명:3
  -중수하다:동:1
  +중수하:동:1
   중순:명:35
   중시:명:10
  -중시되다:동:8
  -중시하다:동:48
  +중시되:동:8
  +중시하:동:48
   중식:명:2
   중신:명:1
   중심:명:10
  @@ -45898,9 +45898,9 @@
   중심체:명:1
   중심촌:명:1
   중심축:명:10
  -중심하다:형:2
  +중심하:형:2
   중심핵:명:1
  -중심화되다:동:1
  +중심화되:동:1
   중아:명:1
   중압:명:2
   중압감:명:2
  @@ -45917,21 +45917,21 @@
   중양절:명:1
   중어:명:2
   중얼:명:1
  -중얼거리다:동:52
  -중얼대다:동:2
  +중얼거리:동:52
  +중얼대:동:2
   중역:명:1
   중역:명:3
   중엽:명:13
   중요:명:30
   중요성:명:78
   중요시:명:1
  -중요시되다:동:19
  -중요시하다:동:33
  -중요하다:형:872
  -중요해지다:동:9
  +중요시되:동:19
  +중요시하:동:33
  +중요하:형:872
  +중요해지:동:9
   중용:명:3
   중용적:관:1
  -중용하다:동:1
  +중용하:동:1
   중위:명:1
   중위:명:30
   중위도:명:1
  @@ -45942,14 +45942,14 @@
   중의원:명:6
   중인:명:5
   중임:명:1
  -중임하다:동:1
  +중임하:동:1
   중장:명:10
   중장거리:명:6
   중장기적:명:2
   중장년층:명:1
   중장비:명:8
   중재:명:13
  -중재되다:동:1
  +중재되:동:1
   중재원:명:1
   중재인:명:1
   중재자:명:1
  @@ -45959,7 +45959,7 @@
   중전감:명:1
   중절:명:13
   중절률:명:1
  -중절하다:동:1
  +중절하:동:1
   중점:명:34
   중점적:명:8
   중조산:명:4
  @@ -45970,20 +45970,20 @@
   중증:명:3
   중지:명:12
   중지:명:5
  -중지되다:동:5
  -중지시키다:동:1
  +중지되:동:5
  +중지시키:동:1
   중지자:명:1
  -중지하다:동:20
  +중지하:동:20
   중진:명:23
   중진국:명:2
   중징계:명:2
   중차:명:2
  -중차대하다:형:1
  +중차대하:형:1
   중창반:명:1
   중책:명:2
   중천:명:2
  -중첩되다:동:5
  -중첩하다:동:1
  +중첩되:동:5
  +중첩하:동:1
   중체:명:1
   중추:명:24
   중추적:관:2
  @@ -45995,16 +45995,16 @@
   중치막:명:5
   중크롬산암모늄:명:2
   중키:명:1
  -중탕하다:동:1
  +중탕하:동:1
   중태:명:2
   중턱:명:10
   중퇴:명:1
  -중퇴하다:동:5
  +중퇴하:동:5
   중파:명:2
   중편:명:4
   중풍:명:6
   중하급:명:1
  -중하다:형:2
  +중하:형:2
   중하위권:명:1
   중학:명:10
   중학교:명:110
  @@ -46018,44 +46018,44 @@
   중형선:명:1
   중호:명:1
   중화:명:1
  -중화되다:동:1
  +중화되:동:1
   중화상:명:3
  -중화하다:동:1
  +중화하:동:1
   중화학:명:12
   중환자:명:3
   중환자실:명:2
  -중후하다:형:4
  +중후하:형:4
   중흥:명:2
  -중흥시키다:동:1
  +중흥시키:동:1
   중히:부:4
  -줴지르다:동:1
  +줴지르:동:1
   쥐:명:1
   쥐:명:63
   쥐구멍:명:6
   쥐꼬리:명:7
  -쥐다:동:162
  +쥐:동:162
   쥐똥나무:명:1
   쥐띠:명:3
   쥐라기:명:2
  -쥐방울만하다:형:2
  +쥐방울만하:형:2
   쥐뿔:명:1
   쥐새끼:명:1
   쥐색:명:1
   쥐약:명:3
  -쥐어뜯기다:동:1
  -쥐어뜯다:동:10
  -쥐어박다:동:4
  -쥐어지다:동:8
  -쥐어지르다:동:4
  -쥐어짜다:동:3
  +쥐어뜯기:동:1
  +쥐어뜯:동:10
  +쥐어박:동:4
  +쥐어지:동:8
  +쥐어지르:동:4
  +쥐어짜:동:3
   쥐치:명:1
   쥐탕:명:1
  -쥑이다:동:1
  +쥑이:동:1
   쥬시:명:1
   즈네:대:2
  -즈려밟다:동:2
  +즈려밟:동:2
   즈음:의:17
  -즈음하다:동:7
  +즈음하:동:7
   즈이:대:7
   즉:부:715
   즉각:부:53
  @@ -46064,15 +46064,15 @@
   즉결:명:1
   즉물적:명:2
   즉사:명:1
  -즉사하다:동:3
  +즉사하:동:3
   즉석:명:21
   즉석식품:명:8
   즉석요리:명:1
   즉슨:부:1
   즉시:명:82
   즉위:명:8
  -즉위시키다:동:1
  -즉위하다:동:16
  +즉위시키:동:1
  +즉위하:동:16
   즉일:명:1
   즉자적:명:2
   즉지:명:1
  @@ -46080,26 +46080,26 @@
   즉흥적:관:4
   즉흥적:명:10
   즐거움:명:64
  -즐거워지다:동:3
  -즐거워하다:동:17
  +즐거워지:동:3
  +즐거워하:동:17
   즐거이:부:1
  -즐겁다:형:222
  -즐겨하다:동:12
  -즐기다:동:319
  +즐겁:형:222
  +즐겨하:동:12
  +즐기:동:319
   즐비:명:1
  -즐비하다:형:12
  +즐비하:형:12
   즘:의:1
   즘생:명:1
   즙:명:17
   증가:명:86
  -증가되다:동:8
  +증가되:동:8
   증가량:명:1
   증가분:명:2
   증가세:명:2
  -증가시키다:동:25
  +증가시키:동:25
   증가액:명:1
   증가율:명:32
  -증가하다:동:159
  +증가하:동:159
   증감:명:4
   증강:명:6
   증강론자:명:1
  @@ -46117,24 +46117,24 @@
   증권업계:명:4
   증기:명:9
   증대:명:26
  -증대되다:동:10
  -증대시키다:동:9
  -증대하다:동:6
  +증대되:동:10
  +증대시키:동:9
  +증대하:동:6
   증류수:명:1
   증류주:명:1
  -증류하다:동:1
  +증류하:동:1
   증말로:부:1
   증명:명:11
  -증명되다:동:12
  +증명되:동:12
   증명사진:명:1
   증명서:명:11
  -증명하다:동:62
  +증명하:동:62
   증발:명:2
   증발:명:2
  -증발되다:동:3
  +증발되:동:3
   증발량:명:2
  -증발시키다:동:2
  -증발하다:동:4
  +증발시키:동:2
  +증발하:동:4
   증백제:명:1
   증보판:명:2
   증산:명:5
  @@ -46149,25 +46149,25 @@
   증손자:명:2
   증시:명:131
   증식:명:6
  -증식하다:동:2
  +증식하:동:2
   증안:명:2
   증액:명:4
   증언:명:52
   증언대:명:3
   증언식:명:2
  -증언하다:동:12
  +증언하:동:12
   증여:명:9
   증여세:명:10
   증오:명:19
   증오감:명:1
  -증오하다:동:9
  +증오하:동:9
   증원:명:1
   증원:명:2
  -증원되다:동:1
  -증원하다:동:3
  +증원되:동:1
  +증원하:동:3
   증인:명:9
   증자:명:27
  -증자되다:동:3
  +증자되:동:3
   증자분:명:1
   증정:명:2
   증조:명:1
  @@ -46176,19 +46176,19 @@
   증조할아버지:명:2
   증좌:명:1
   증진:명:17
  -증진되다:동:2
  -증진시키다:동:8
  -증진하다:동:1
  +증진되:동:2
  +증진시키:동:8
  +증진하:동:1
   증축:명:5
  -증축되다:동:1
  -증축하다:동:3
  -증파하다:동:1
  +증축되:동:1
  +증축하:동:3
  +증파하:동:1
   증판:명:1
   증편:명:1
   증폭:명:7
  -증폭되다:동:8
  -증폭시키다:동:7
  -증폭하다:동:3
  +증폭되:동:8
  +증폭시키:동:7
  +증폭하:동:3
   증표:명:10
   증후:명:3
   증후:명:6
  @@ -46204,9 +46204,9 @@
   지각:명:13
   지각:명:35
   지각:명:5
  -지각되다:동:3
  -지각하다:동:4
  -지각하다:동:9
  +지각되:동:3
  +지각하:동:4
  +지각하:동:9
   지갑:명:51
   지검:명:36
   지게:명:18
  @@ -46216,14 +46216,14 @@
   지게질:명:1
   지겟다리:명:1
   지겟작대기:명:2
  -지겨워지다:동:1
  -지겹다:형:34
  +지겨워지:동:1
  +지겹:형:34
   지경:명:4
   지경:의:94
   지계:명:1
   지고:명:5
   지고지상:명:1
  -지고하다:형:1
  +지고하:형:1
   지관:명:1
   지구:명:282
   지구:명:75
  @@ -46240,39 +46240,39 @@
   지그시:부:15
   지그재그:명:2
   지극:명:3
  -지극하다:형:6
  +지극하:형:6
   지극히:부:53
   지근거리:명:2
  -지금:명:1,084
  +지금:명:1084
   지금:부:981
   지금껏:부:25
   지급:명:31
   지급기:명:3
  -지급되다:동:20
  +지급되:동:20
   지급률:명:1
  -지급받다:동:7
  +지급받:동:7
   지급설:명:1
   지급인:명:2
   지급일:명:1
  -지급하다:동:52
  +지급하:동:52
   지긋이:부:5
  -지긋지긋하다:형:17
  -지긋하다:형:7
  +지긋지긋하:형:17
  +지긋하:형:7
   지기:명:2
   지기:명:22
   지기:명:4
   지기론:명:3
   지기지우:명:1
  -지껄이다:동:15
  +지껄이:동:15
   지끈:부:1
  -지끈거리다:동:1
  +지끈거리:동:1
   지끈지끈:부:2
  -지나가다:동:233
  -지나다:동:1,494
  -지나다니다:동:4
  -지나오다:동:14
  -지나치다:동:46
  -지나치다:형:213
  +지나가:동:233
  +지나:동:1494
  +지나다니:동:4
  +지나오:동:14
  +지나치:동:46
  +지나치:형:213
   지난날:명:49
   지난달:명:138
   지난밤:명:8
  @@ -46280,10 +46280,10 @@
   지난봄:명:3
   지난여름:명:4
   지난주:명:23
  -지난하다:형:5
  +지난하:형:5
   지난해:명:404
  -지내다:동:355
  -지내보다:동:1
  +지내:동:355
  +지내보:동:1
   지냑:명:1
   지냑밥:명:1
   지네:명:17
  @@ -46293,22 +46293,22 @@
   지능:명:15
   지능적:관:1
   지능적:명:1
  -지능화하다:동:1
  -지니다:동:433
  -지다:동:126
  -지다:동:36
  -지다:동:64
  -지다:동:77
  -지다:보:1
  +지능화하:동:1
  +지니:동:433
  +지:동:126
  +지:동:36
  +지:동:64
  +지:동:77
  +지:보:1
   지단:명:3
   지단채:명:1
  -지당하다:형:3
  +지당하:형:3
   지대:명:1
   지대:명:117
   지대:명:6
   지대공:명:4
  -지대하다:형:5
  -지대해지다:동:1
  +지대하:형:5
  +지대해지:동:1
   지대화:명:1
   지덕:명:1
   지덕:명:1
  @@ -46321,7 +46321,7 @@
   지도국장:명:1
   지도급:명:5
   지도력:명:6
  -지도받다:동:1
  +지도받:동:1
   지도부:명:32
   지도부실:명:3
   지도부장:명:1
  @@ -46335,19 +46335,19 @@
   지도적:명:1
   지도책:명:2
   지도층:명:13
  -지도하다:동:29
  +지도하:동:29
   지독스레:부:1
  -지독하다:형:23
  -지독허다:형:1
  +지독하:형:23
  +지독허:형:1
   지독히:부:4
   지동설:명:10
   지둔:명:1
  -지득하다:동:1
  +지득하:동:1
   지락:명:1
   지랄:명:8
  -지랄하다:동:2
  +지랄하:동:2
   지렁이:명:10
  -지렇다:형:1
  +지렇:형:1
   지레:명:7
   지레:부:8
   지레김치:명:1
  @@ -46359,25 +46359,25 @@
   지령:명:5
   지령문:명:1
   지령실:명:1
  -지령하다:동:1
  +지령하:동:1
   지로:명:7
   지론:명:8
   지뢰:명:3
  -지루하다:형:47
  -지루해하다:동:3
  +지루하:형:47
  +지루해하:동:3
   지류:명:25
  -지르다:동:138
  -지르다:동:2
  -지르다:동:23
  +지르:동:138
  +지르:동:2
  +지르:동:23
   지르르륵:부:1
   지름:명:15
   지름길:명:25
   지리:명:1
   지리:명:28
   지리관:명:2
  -지리다:형:2
  +지리:형:2
   지리말발도리:명:1
  -지리멸렬하다:동:1
  +지리멸렬하:동:1
   지리부도:명:2
   지리서:명:2
   지리적:관:21
  @@ -46390,10 +46390,10 @@
   지리학적:명:2
   지린내:명:1
   지망:명:5
  -지망망하다:형:1
  +지망망하:형:1
   지망생:명:13
   지망자:명:1
  -지망하다:동:7
  +지망하:동:7
   지맥:명:3
   지면:명:1
   지면:명:15
  @@ -46402,15 +46402,15 @@
   지명:명:7
   지명권:명:1
   지명도:명:7
  -지명되다:동:1
  -지명받다:동:1
  +지명되:동:1
  +지명받:동:1
   지명자:명:1
  -지명하다:동:2
  +지명하:동:2
   지목:명:1
   지목:명:1
   지목:명:4
  -지목되다:동:12
  -지목하다:동:5
  +지목되:동:12
  +지목하:동:5
   지문:명:3
   지문:명:4
   지반:명:2
  @@ -46436,16 +46436,16 @@
   지방화:명:1
   지배:명:446
   지배권:명:2
  -지배되다:동:16
  +지배되:동:16
   지배력:명:2
   지배론:명:3
  -지배받다:동:1
  +지배받:동:1
   지배인:명:15
   지배자:명:34
   지배적:관:54
   지배적:명:39
   지배층:명:46
  -지배하다:동:113
  +지배하:동:113
   지법:명:27
   지병:명:2
   지복:명:1
  @@ -46456,10 +46456,10 @@
   지분:명:44
   지분율:명:12
   지불:명:8
  -지불되다:동:2
  -지불받다:동:1
  +지불되:동:2
  +지불받:동:1
   지불일:명:2
  -지불하다:동:48
  +지불하:동:48
   지붕:명:87
   지붕골:명:1
   지사:명:5
  @@ -46477,8 +46477,8 @@
   지상주의자:명:4
   지상주의적:관:1
   지상주의파:명:1
  -지새다:동:4
  -지새우다:동:9
  +지새:동:4
  +지새우:동:9
   지서:명:6
   지석:명:1
   지석묘:명:1
  @@ -46492,25 +46492,25 @@
   지세:명:5
   지소:명:1
   지속:명:19
  -지속되다:동:56
  +지속되:동:56
   지속성:명:7
  -지속시키다:동:8
  +지속시키:동:8
   지속적:관:6
   지속적:명:83
  -지속하다:동:15
  +지속하:동:15
   지수:명:1
   지수:명:49
   지순:명:1
  -지순하다:형:1
  +지순하:형:1
   지시:명:104
  -지시되다:동:1
  -지시받다:동:1
  +지시되:동:1
  +지시받:동:1
   지시판:명:1
  -지시하다:동:73
  +지시하:동:73
   지식:명:269
   지식수준:명:1
   지식인:명:91
  -지식인연하다:동:1
  +지식인연하:동:1
   지식인적:관:2
   지식층:명:5
   지신:명:16
  @@ -46520,15 +46520,15 @@
   지아이에프:명:5
   지압:명:2
   지양:명:2
  -지양되다:동:3
  -지양하다:동:17
  -지어내다:동:7
  -지어먹다:동:1
  +지양되:동:3
  +지양하:동:17
  +지어내:동:7
  +지어먹:동:1
   지어미:명:1
  -지어지다:동:32
  -지엄하다:형:2
  +지어지:동:32
  +지엄하:형:2
   지엔피:명:30
  -지역:명:1,133
  +지역:명:1133
   지역감정:명:11
   지역구:명:26
   지역권:명:2
  @@ -46543,12 +46543,12 @@
   지역주의:명:13
   지역촌:명:2
   지역화:명:1
  -지역화하다:동:1
  +지역화하:동:1
   지연:명:11
   지연:명:5
  -지연되다:동:7
  +지연되:동:7
   지연성:명:1
  -지연시키다:동:6
  +지연시키:동:6
   지연적:명:1
   지연제:명:1
   지엽:명:1
  @@ -46559,11 +46559,11 @@
   지우:명:1
   지우:명:1
   지우개:명:13
  -지우다:동:16
  -지우다:동:2
  -지우다:동:75
  +지우:동:16
  +지우:동:2
  +지우:동:75
   지우산:명:2
  -지워지다:동:20
  +지워지:동:20
   지원:명:14
   지원:명:217
   지원:명:7
  @@ -46571,8 +46571,8 @@
   지원군:명:1
   지원금:명:8
   지원단:명:3
  -지원되다:동:4
  -지원받다:동:3
  +지원되:동:4
  +지원받:동:3
   지원법:명:2
   지원병:명:1
   지원병제:명:1
  @@ -46587,8 +46587,8 @@
   지원제:명:1
   지원책:명:2
   지원포:명:1
  -지원하다:동:16
  -지원하다:동:87
  +지원하:동:16
  +지원하:동:87
   지원형:명:1
   지위:명:116
   지육:명:1
  @@ -46600,16 +46600,16 @@
   지장:명:22
   지장조:명:1
   지재권:명:1
  -지저귀다:동:16
  -지저분하다:형:20
  -지저분해지다:동:2
  +지저귀:동:16
  +지저분하:형:20
  +지저분해지:동:2
   지적:관:58
   지적:명:140
   지적:명:2
   지적:명:29
   지적도:명:3
  -지적되다:동:62
  -지적하다:동:228
  +지적되:동:62
  +지적하:동:228
   지점:명:1
   지점:명:33
   지점:명:62
  @@ -46617,12 +46617,12 @@
   지점장:명:7
   지점토:명:1
   지정:명:40
  -지정되다:동:34
  +지정되:동:34
   지정석:명:1
   지정적:관:1
  -지정하다:동:45
  +지정하:동:45
   지정학적:명:2
  -지져지다:동:1
  +지져지:동:1
   지조:명:4
   지존:명:4
   지주:명:38
  @@ -46636,18 +46636,18 @@
   지중선:명:1
   지지:명:1
   지지:명:79
  -지지눌리다:동:1
  -지지다:동:23
  +지지눌리:동:1
  +지지:동:23
   지지대:명:1
   지지도:명:1
   지지리:부:3
   지지부진:명:3
  -지지부진하다:동:5
  +지지부진하:동:5
   지지율:명:6
   지지자:명:6
   지지표:명:1
  -지지하다:동:45
  -지직거리다:동:1
  +지지하:동:45
  +지직거리:동:1
   지진:명:25
   지진학:명:3
   지질:명:1
  @@ -46662,37 +46662,37 @@
   지짐이:명:1
   지참:명:1
   지참금:명:28
  -지참하다:동:2
  +지참하:동:2
   지척:명:6
   지천:명:2
   지청:명:8
   지청구:명:2
   지체:명:6
   지체:명:7
  -지체되다:동:2
  -지체하다:동:2
  +지체되:동:2
  +지체하:동:2
   지축:명:1
   지출:명:66
  -지출하다:동:12
  +지출하:동:12
   지층:명:22
  -지치다:동:13
  -지치다:동:96
  +지치:동:13
  +지치:동:96
   지치주의:명:1
   지침:명:59
   지침서:명:11
   지칭:명:3
  -지칭되다:동:2
  -지칭하다:동:23
  +지칭되:동:2
  +지칭하:동:23
   지카다비:명:1
  -지켜보다:동:125
  -지켜지다:동:21
  -지키다:동:513
  +지켜보:동:125
  +지켜지:동:21
  +지키:동:513
   지탄:명:8
  -지탄받다:동:2
  -지탄하다:동:1
  -지탱되다:동:2
  -지탱시키다:동:2
  -지탱하다:동:27
  +지탄받:동:2
  +지탄하:동:1
  +지탱되:동:2
  +지탱시키:동:2
  +지탱하:동:27
   지판:명:6
   지팡이:명:9
   지퍼:명:8
  @@ -46706,7 +46706,7 @@
   지푸라기:명:8
   지프:명:16
   지프차:명:3
  -지피다:동:15
  +지피:동:15
   지피족:명:1
   지필묵:명:2
   지하:명:129
  @@ -46725,43 +46725,43 @@
   지향적:관:6
   지향적:명:13
   지향점:명:1
  -지향하다:동:4
  -지향하다:동:45
  +지향하:동:4
  +지향하:동:45
   지혈:명:2
   지혈대:명:3
   지혈법:명:8
  -지혈하다:동:1
  +지혈하:동:1
   지형:명:37
   지형도:명:5
   지형성:명:1
   지형적:관:5
   지형적:명:2
   지혜:명:114
  -지혜롭다:형:10
  +지혜롭:형:10
   지화자:감:1
   지회:명:7
   지회장:명:1
   지휘:명:19
   지휘관:명:6
   지휘권:명:3
  -지휘되다:동:1
  +지휘되:동:1
   지휘봉:명:3
   지휘부:명:3
   지휘소:명:1
   지휘자:명:8
  -지휘하다:동:15
  +지휘하:동:15
   직:명:14
   직:부:1
   직각:명:5
   직감:명:2
   직감력:명:1
   직감적:명:9
  -직감하다:동:7
  +직감하:동:7
   직거래:명:4
  -직거래하다:동:1
  +직거래하:동:1
   직격:명:3
  -직결되다:동:24
  -직결시키다:동:2
  +직결되:동:24
  +직결시키:동:2
   직경:명:7
   직계:명:14
   직계손:명:2
  @@ -46782,16 +46782,16 @@
   직류:명:1
   직립:명:6
   직립적:관:1
  -직립하다:동:1
  +직립하:동:1
   직립형:명:1
   직매점:명:1
   직면:명:2
  -직면하다:동:19
  +직면하:동:19
   직무:명:55
   직물:명:71
   직물학:명:1
   직박구리:명:1
  -직반입하다:동:1
  +직반입하:동:1
   직방체:명:2
   직배:명:1
   직분:명:3
  @@ -46807,19 +46807,19 @@
   직설적:명:4
   직성:명:10
   직성:명:5
  -직성되다:동:1
  -직성하다:동:1
  +직성되:동:1
  +직성하:동:1
   직소력:명:1
   직속:명:8
   직속지:명:1
   직송:명:1
  -직송하다:동:1
  -직수굿하다:형:2
  -직수그리다:동:1
  -직수입하다:동:1
  +직송하:동:1
  +직수굿하:형:2
  +직수그리:동:1
  +직수입하:동:1
   직승기:명:1
   직시:명:1
  -직시하다:동:16
  +직시하:동:16
   직언:명:1
   직업:명:145
   직업관:명:5
  @@ -46836,7 +46836,7 @@
   직업혁명가:명:1
   직업화:명:1
   직역:명:12
  -직역하다:동:2
  +직역하:동:2
   직영:명:2
   직원:명:194
   직원:명:9
  @@ -46860,19 +46860,19 @@
   직제:명:8
   직조:명:5
   직조기:명:1
  -직조하다:동:3
  +직조하:동:3
   직종:명:23
   직진:명:2
   직책:명:33
   직통:명:1
   직판:명:4
   직판장:명:2
  -직하다:보:27
  +직하:보:27
   직할:명:3
   직할시:명:5
   직함:명:8
   직행:명:3
  -직행하다:동:4
  +직행하:동:4
   직후:명:109
   진:명:3
   진:명:5
  @@ -46882,7 +46882,7 @@
   진갈색:명:1
   진갑:명:1
   진격:명:1
  -진격하다:동:3
  +진격하:동:3
   진경:명:1
   진경산수:명:1
   진골:명:24
  @@ -46893,24 +46893,24 @@
   진국:명:1
   진국:명:1
   진국:명:4
  -진귀하다:형:6
  +진귀하:형:6
   진급:명:49
  -진급되다:동:1
  -진급시키다:동:1
  -진급하다:동:3
  +진급되:동:1
  +진급시키:동:1
  +진급하:동:3
   진기록:명:1
  -진기하다:형:1
  +진기하:형:1
   진노:명:1
  -진노하다:동:1
  +진노하:동:1
   진단:명:64
   진단기:명:8
  -진단되다:동:2
  +진단되:동:2
   진단명:명:1
  -진단받다:동:2
  +진단받:동:2
   진단법:명:1
   진단서:명:2
   진단적:관:1
  -진단하다:동:33
  +진단하:동:33
   진달래:명:23
   진달래꽃:명:9
   진담:명:7
  @@ -46920,41 +46920,41 @@
   진동:명:1
   진동:명:2
   진동:명:26
  -진동되다:동:1
  +진동되:동:1
   진동선:명:1
   진동수:명:8
  -진동시키다:동:1
  +진동시키:동:1
   진동자:명:4
  -진동하다:동:1
  -진동하다:동:8
  +진동하:동:1
  +진동하:동:8
   진두지휘:명:1
   진드기:명:5
  -진득거리다:동:1
  +진득거리:동:1
   진득진득:부:1
  -진득하다:형:5
  +진득하:형:5
   진딧물:명:8
   진땀:명:12
   진력:명:1
  -진력하다:동:2
  +진력하:동:2
   진로:명:29
   진료:명:27
   진료비:명:8
   진료실:명:6
   진료진:명:1
  -진료하다:동:1
  +진료하:동:1
   진리:명:127
  -진리되다:동:1
  +진리되:동:1
   진리성:명:1
   진맥:명:1
  -진맥하다:동:1
  +진맥하:동:1
   진면목:명:3
   진물:명:1
   진미:명:1
   진미:명:3
   진밥:명:1
  -진배없다:형:4
  +진배없:형:4
   진보:명:71
  -진보되다:동:1
  +진보되:동:1
   진보라색:명:1
   진보랏빛:명:1
   진보성:명:6
  @@ -46963,55 +46963,55 @@
   진보주의:명:1
   진보주의자:명:3
   진보파:명:1
  -진보하다:동:4
  +진보하:동:4
   진부:명:1
   진부성:명:1
  -진부하다:형:18
  -진부해지다:동:1
  +진부하:형:18
  +진부해지:동:1
   진사:명:6
   진산:명:3
   진상:명:1
   진상:명:66
   진상품:명:1
  -진상하다:동:3
  +진상하:동:3
   진서:명:2
   진선미:명:3
  -진설하다:동:1
  +진설하:동:1
   진성좌:명:5
   진세:명:1
   진속:명:1
  -진솔하다:형:14
  +진솔하:형:14
   진쇠돌:명:1
   진수:명:4
   진수성찬:명:2
   진술:명:49
   진술권:명:1
   진술서:명:7
  -진술하다:동:16
  +진술하:동:16
   진신:명:4
   진실:명:107
  -진실되다:형:17
  +진실되:형:17
   진실로:부:18
   진실성:명:10
  -진실하다:형:31
  -진실해지다:동:1
  +진실하:형:31
  +진실해지:동:1
   진심:명:22
   진아이:명:1
   진압:명:22
   진압군:명:13
  -진압되다:동:1
  +진압되:동:1
   진압책:명:1
  -진압하다:동:10
  +진압하:동:10
   진애:명:1
   진양조:명:1
  -진언하다:동:1
  +진언하:동:1
   진여:명:3
   진열:명:5
   진열대:명:7
  -진열되다:동:5
  +진열되:동:5
   진열장:명:9
   진열창:명:1
  -진열하다:동:5
  +진열하:동:5
   진영:명:25
   진용:명:7
   진운:명:1
  @@ -47020,38 +47020,38 @@
   진위:명:7
   진의:명:8
   진이마촌:명:1
  -진일보되다:동:1
  -진일보시키다:동:1
  -진일보하다:동:3
  +진일보되:동:1
  +진일보시키:동:1
  +진일보하:동:3
   진입:명:46
   진입로:명:2
  -진입시키다:동:2
  -진입하다:동:27
  +진입시키:동:2
  +진입하:동:27
   진자:명:1
   진자시계:명:1
   진작:명:5
   진작:부:25
  -진작시키다:동:2
  +진작시키:동:2
   진작에:부:10
   진저리:명:5
   진전:명:3
   진전:명:41
  -진전되다:동:18
  -진전시키다:동:5
  -진전하다:동:2
  +진전되:동:18
  +진전시키:동:5
  +진전하:동:2
   진전화:명:1
   진절머리:명:2
   진정:명:42
   진정:명:5
   진정:명:7
   진정:부:24
  -진정되다:동:2
  +진정되:동:2
   진정서:명:9
   진정성:명:5
  -진정시키다:동:6
  -진정하다:동:2
  -진정하다:동:9
  -진정하다:형:158
  +진정시키:동:6
  +진정하:동:2
  +진정하:동:9
  +진정하:형:158
   진종일:명:6
   진주:명:1
   진주:명:5
  @@ -47059,30 +47059,30 @@
   진주담치:명:2
   진주사:명:2
   진주조개:명:1
  -진주하다:동:1
  +진주하:동:1
   진즉:부:3
   진지:명:7
   진지:명:8
  -진지하다:형:91
  -진지해지다:동:1
  -진진하다:형:4
  +진지하:형:91
  +진지해지:동:1
  +진진하:형:4
   진짓상:명:2
   진짜:명:87
   진짜:부:160
   진짜로:부:13
   진짜배기:명:1
   진찰:명:8
  -진찰받다:동:1
  +진찰받:동:1
   진찰실:명:4
  -진찰하다:동:2
  +진찰하:동:2
   진창:명:2
   진척:명:12
  -진척되다:동:6
  +진척되:동:6
   진초록:명:1
   진출:명:76
   진출설:명:2
  -진출시키다:동:1
  -진출하다:동:55
  +진출시키:동:1
  +진출하:동:55
   진취:명:2
   진취적:관:3
   진취적:명:4
  @@ -47095,34 +47095,34 @@
   진폭:명:1
   진품:명:3
   진풍경:명:1
  -진하다:형:69
  +진하:형:69
   진학:명:26
   진학률:명:1
  -진학하다:동:10
  -진해지다:동:5
  +진학하:동:10
  +진해지:동:5
   진행:명:94
  -진행되다:동:185
  +진행되:동:185
   진행상:명:1
  -진행시키다:동:12
  +진행시키:동:12
   진행자:명:29
   진행자상:명:1
   진행표:명:1
  -진행하다:동:83
  -진호하다:동:1
  +진행하:동:83
  +진호하:동:1
   진혼곡:명:1
   진홍:명:2
   진홍색:명:2
   진화:명:32
   진화:명:5
  -진화되다:동:1
  -진화되다:동:4
  +진화되:동:1
  +진화되:동:4
   진화론:명:19
   진화론적:관:3
   진화사:명:1
   진화적:관:1
  -진화하다:동:11
  -진화하다:동:2
  -진휼하다:동:1
  +진화하:동:11
  +진화하:동:2
  +진휼하:동:1
   진흙:명:12
   진흙물:명:2
   진흙탕:명:2
  @@ -47131,40 +47131,40 @@
   진흥:명:22
   진흥국:명:2
   진흥국장:명:2
  -진흥시키다:동:3
  +진흥시키:동:3
   진흥책:명:1
   질:명:1
   질:명:5
   질:명:80
   질감:명:6
   질겁:명:4
  -질겁하다:동:1
  +질겁하:동:1
   질겅질겅:부:4
  -질겅질겅하다:형:1
  -질겨지다:동:2
  +질겅질겅하:형:1
  +질겨지:동:2
   질경이:명:16
   질곡:명:9
   질권:명:1
   질그릇:명:4
   질근질근:부:1
  -질금거리다:동:1
  -질기다:형:22
  -질기디질기다:형:1
  -질깃질깃하다:형:1
  +질금거리:동:1
  +질기:형:22
  +질기디질기:형:1
  +질깃질깃하:형:1
   질끈:부:4
  -질다:형:6
  +질:형:6
   질량:명:35
  -질러대다:동:1
  +질러대:동:1
   질료:명:1
  -질리다:동:40
  +질리:동:40
   질문:명:200
   질문거리:명:2
  -질문받다:동:2
  +질문받:동:2
   질문벽:명:1
   질문지:명:3
  -질문하다:동:22
  -질박하다:형:3
  -질벅거리다:동:1
  +질문하:동:22
  +질박하:형:3
  +질벅거리:동:1
   질병:명:64
   질산:명:2
   질산성:명:1
  @@ -47177,56 +47177,56 @@
   질시:명:2
   질식:명:3
   질식사:명:1
  -질식시키다:동:4
  -질식하다:동:9
  +질식시키:동:4
  +질식하:동:9
   질의:명:12
   질의서:명:3
  -질의하다:동:1
  +질의하:동:1
   질적:관:35
   질적:명:38
   질정:명:2
   질주:명:5
   질주력:명:1
   질주범:명:1
  -질주하다:동:12
  +질주하:동:12
   질질:부:10
   질질:부:4
   질책:명:10
  -질책하다:동:4
  -질척거리다:동:2
  -질척이다:동:1
  -질척해지다:동:1
  -질컥하다:형:1
  -질타하다:동:4
  -질탕하다:형:1
  +질책하:동:4
  +질척거리:동:2
  +질척이:동:1
  +질척해지:동:1
  +질컥하:형:1
  +질타하:동:4
  +질탕하:형:1
   질투:명:23
   질투심:명:4
  -질투하다:동:3
  -질퍽하다:형:1
  -질펀하다:형:4
  +질투하:동:3
  +질퍽하:형:1
  +질펀하:형:4
   질펀히:부:2
   질풍:명:1
   질풍노도:명:1
   질화로:명:1
   질환:명:104
   질환자:명:23
  -짊어지다:동:26
  +짊어지:동:26
   짐:명:85
   짐꾼:명:4
   짐바리:명:2
   짐수레:명:1
  -짐스럽다:형:2
  +짐스럽:형:2
   짐승:명:87
  -짐승스럽다:형:1
  +짐승스럽:형:1
   짐작:명:34
  -짐작되다:동:22
  -짐작하다:동:70
  +짐작되:동:22
  +짐작하:동:70
   짐짓:부:10
   짐차:명:1
   짐카나:명:1
   짐칸:명:6
   집:명:1
  -집:명:2,457
  +집:명:2457
   집:의:8
   집가:명:1
   집값:명:3
  @@ -47234,13 +47234,13 @@
   집게발:명:2
   집게손가락:명:6
   집결:명:5
  -집결되다:동:1
  -집결시키다:동:1
  +집결되:동:1
  +집결시키:동:1
   집결지:명:1
  -집결하다:동:4
  +집결하:동:4
   집계:명:8
  -집계되다:동:16
  -집계하다:동:4
  +집계되:동:16
  +집계하:동:4
   집구석:명:10
   집권:명:51
   집권:명:61
  @@ -47252,13 +47252,13 @@
   집권적:명:7
   집권제:명:1
   집권층:명:7
  -집권하다:동:14
  +집권하:동:14
   집권화:명:9
  -집권화되다:동:3
  +집권화되:동:3
   집기:명:2
   집기병:명:2
   집념:명:11
  -집다:동:128
  +집:동:128
   집단:명:385
   집단무:명:1
   집단의식:명:2
  @@ -47267,185 +47267,185 @@
   집단주의:명:2
   집단행동:명:4
   집단화:명:1
  -집단화되다:동:2
  -집단화하다:동:2
  +집단화되:동:2
  +집단화하:동:2
   집대성:명:1
  -집대성되다:동:3
  -집대성하다:동:2
  +집대성되:동:3
  +집대성하:동:2
   집도:명:3
   집들이:명:4
   집무:명:3
   집무실:명:15
  -집무하다:동:1
  +집무하:동:1
   집박쥐:명:1
   집사:명:8
   집사람:명:9
   집사부:명:2
   집성제:명:3
   집성촌:명:2
  -집성하다:동:1
  +집성하:동:1
   집세:명:5
   집수리:명:1
  -집수리하다:동:1
  +집수리하:동:1
   집시:명:3
   집안:명:190
   집안사람:명:2
   집안싸움:명:1
   집안일:명:43
   집약:명:1
  -집약되다:동:12
  +집약되:동:12
   집약적:명:4
  -집약하다:동:4
  +집약하:동:4
   집약형:명:2
   집어:명:1
  -집어내다:동:6
  -집어넣다:동:61
  -집어던지다:동:4
  +집어내:동:6
  +집어넣:동:61
  +집어던지:동:4
   집어등:명:8
  -집어먹다:동:6
  -집어삼키다:동:2
  -집어치우다:동:6
  -집요하다:형:20
  +집어먹:동:6
  +집어삼키:동:2
  +집어치우:동:6
  +집요하:형:20
   집일:명:1
   집임자:명:1
   집장사령:명:1
   집적:명:9
  -집적거리다:동:4
  -집적대다:동:2
  +집적거리:동:4
  +집적대:동:2
   집적도:명:1
  -집적되다:동:2
  +집적되:동:2
   집전:명:1
  -집전하다:동:2
  +집전하:동:2
   집점:명:1
   집정관:명:2
   집정부제:명:1
   집주인:명:11
   집중:명:1
   집중:명:97
  -집중되다:동:65
  +집중되:동:65
   집중력:명:15
   집중률:명:2
  -집중시키다:동:12
  +집중시키:동:12
   집중적:관:3
   집중적:명:42
   집중제:명:1
  -집중하다:동:17
  +집중하:동:17
   집중화:명:2
  -집중화되다:동:2
  +집중화되:동:2
   집진기:명:1
   집집:명:13
   집집이:부:2
   집짓기:명:1
   집착:명:50
  -집착하다:동:42
  +집착하:동:42
   집채:명:5
   집총:명:1
   집터:명:13
   집필:명:12
   집필실:명:1
   집필자:명:3
  -집필하다:동:10
  +집필하:동:10
   집하:명:3
   집하장:명:1
   집합:명:10
   집합소:명:1
  -집합시키다:동:1
  +집합시키:동:1
   집합적:관:2
   집합적:명:2
   집합주의:명:1
   집합체:명:3
   집행:명:74
  -집행당하다:동:1
  -집행되다:동:10
  +집행당하:동:1
  +집행되:동:10
   집행령:명:1
   집행부:명:5
   집행자:명:1
  -집행하다:동:26
  +집행하:동:26
   집회:명:60
  -집히다:동:4
  +집히:동:4
   짓:명:150
   짓거리:명:10
   짓고땡:명:4
  -짓궂다:형:12
  -짓누르다:동:15
  -짓눌려지다:동:1
  -짓눌리다:동:4
  -짓다:동:790
  -짓물러지다:동:1
  -짓뭉개다:동:6
  -짓뭉겨지다:동:1
  -짓밟다:동:13
  -짓밟히다:동:6
  -짓씹다:동:1
  -짓어지다:동:1
  -짓이겨지다:동:1
  -짓이기다:동:4
  -짓찧다:동:2
  +짓궂:형:12
  +짓누르:동:15
  +짓눌려지:동:1
  +짓눌리:동:4
  +짓:동:790
  +짓물러지:동:1
  +짓뭉개:동:6
  +짓뭉겨지:동:1
  +짓밟:동:13
  +짓밟히:동:6
  +짓씹:동:1
  +짓어지:동:1
  +짓이겨지:동:1
  +짓이기:동:4
  +짓찧:동:2
   징:명:3
   징검다리:명:16
   징계:명:23
  -징계받다:동:2
  +징계받:동:2
   징계자:명:1
  -징계하다:동:4
  -징그럽다:형:12
  -징글징글하다:형:1
  +징계하:동:4
  +징그럽:형:12
  +징글징글하:형:1
   징발:명:2
  -징발하다:동:1
  +징발하:동:1
   징벌:명:2
  -징벌하다:동:2
  +징벌하:동:2
   징병:명:5
   징세:명:1
   징세권:명:1
   징수:명:11
  -징수되다:동:1
  +징수되:동:1
   징수부:명:1
   징수액:명:3
  -징수하다:동:5
  +징수하:동:5
   징역:명:27
   징역살이:명:1
   징역형:명:4
   징용:명:8
  -징용당하다:동:1
  -징용되다:동:2
  +징용당하:동:1
  +징용되:동:2
   징용자:명:2
   징조:명:5
   징집:명:10
  -징집당하다:동:1
  +징집당하:동:1
   징징:부:1
   징치:명:1
   징크스:명:6
   징표:명:5
  -징하다:형:3
  +징하:형:3
   징후:명:18
  -짖다:동:17
  -짙다:형:87
  -짙어지다:동:2
  -짙푸르다:형:1
  +짖:동:17
  +짙:형:87
  +짙어지:동:2
  +짙푸르:형:1
   짚:명:12
  -짚다:동:71
  +짚:동:71
   짚단:명:2
   짚신:명:4
  -짚이다:동:4
  +짚이:동:4
   짜깁기:명:1
  -짜내다:동:11
  -짜다:동:37
  -짜다:동:64
  -짜다:형:17
  -짜디짜다:형:2
  +짜내:동:11
  +짜:동:37
  +짜:동:64
  +짜:형:17
  +짜디짜:형:2
   짜르르:부:1
  -짜르르하다:형:1
  -짜릿하다:형:19
  +짜르르하:형:1
  +짜릿하:형:19
   짜샤:감:3
  -짜여지다:동:14
  -짜이다:동:10
  +짜여지:동:14
  +짜이:동:10
   짜임:명:6
   짜임새:명:16
   짜잔:감:1
   짜증:명:55
  -짜증스러워지다:동:1
  -짜증스럽다:형:17
  -짜치다:동:1
  -짜하다:형:2
  +짜증스러워지:동:1
  +짜증스럽:형:17
  +짜치:동:1
  +짜하:형:2
   짝:명:140
   짝:부:2
   짝:부:2
  @@ -47453,7 +47453,7 @@
   짝꿍:명:3
   짝눈:명:1
   짝사랑:명:3
  -짝사랑하다:동:2
  +짝사랑하:동:2
   짝수:명:6
   짝수일:명:1
   짝짓기:명:2
  @@ -47463,89 +47463,89 @@
   짝짝:부:1
   짝짝:부:3
   짝짝이:명:1
  -짝하다:동:1
  +짝하:동:1
   짠:부:1
   짠밥:명:4
   짠순이:명:4
  -짠하다:형:3
  +짠하:형:3
   짤끔:부:2
   짤록:부:1
   짤막짤막:부:1
  -짤막하다:형:22
  +짤막하:형:22
   짤짤이:명:1
  -짧다:형:260
  -짧아지다:동:22
  +짧:형:260
  +짧아지:동:22
   짬:명:8
   짬밥:명:2
   짬뽕:명:4
   짬짬이:부:3
  -짭조름하다:형:2
  +짭조름하:형:2
   짭짤:명:1
  -짭짤하다:형:7
  +짭짤하:형:7
   짭짭:부:2
   짱:명:1
   짱:부:1
   짱구:명:6
  -짱짱하다:형:2
  -째깍거리다:동:2
  -째려보다:동:8
  -째리다:동:2
  +짱짱하:형:2
  +째깍거리:동:2
  +째려보:동:8
  +째리:동:2
   째보:명:1
  -째어지다:동:1
  -째지다:동:1
  -째째하다:형:1
  +째어지:동:1
  +째지:동:1
  +째째하:형:1
   짹짹:부:5
  -짹짹거리다:동:1
  +짹짹거리:동:1
   쨈:명:2
   쨍그랑:부:1
  -쨍그랑하다:동:2
  +쨍그랑하:동:2
   쨍쨍:부:3
  -쨍쨍하다:형:1
  +쨍쨍하:형:1
   쩌렁쩌렁:부:1
  -쩌렁쩌렁하다:형:3
  +쩌렁쩌렁하:형:3
   쩌르르:부:1
  -쩌릿해지다:동:1
  -쩌벅거리다:동:1
  +쩌릿해지:동:1
  +쩌벅거리:동:1
   쩍:부:2
   쩍쩍:부:1
   쩍쩍:부:3
  -쩍쩍거리다:동:2
  +쩍쩍거리:동:2
   쩔꺽쩔꺽:부:1
   쩔렁쩔렁:부:1
   쩔레쩔레:부:1
   쩔쩔:부:2
  -쩔쩔매다:동:15
  +쩔쩔매:동:15
   쩝쩝:부:4
   쩡쩡:부:1
  -쩡쩡거리다:동:1
  -쩨쩨하다:형:4
  +쩡쩡거리:동:1
  +쩨쩨하:형:4
   쪼가리:명:5
   쪼가리쪼가리:명:1
   쪼각:명:1
  -쪼개다:동:18
  -쪼개어지다:동:2
  -쪼개지다:동:1
  -쪼그리다:동:23
  -쪼그맣다:형:4
  +쪼개:동:18
  +쪼개어지:동:2
  +쪼개지:동:1
  +쪼그리:동:23
  +쪼그맣:형:4
   쪼글쪼글:부:1
  -쪼글쪼글하다:형:1
  +쪼글쪼글하:형:1
   쪼금:명:6
   쪼금:부:10
   쪼까:명:1
   쪼까:부:4
   쪼깐:명:1
   쪼깨:부:2
  -쪼끄마하다:형:1
  -쪼끄맣다:형:4
  +쪼끄마하:형:1
  +쪼끄맣:형:4
   쪼끔:명:5
   쪼끔:부:5
  -쪼다:동:11
  -쪼들리다:동:8
  +쪼:동:11
  +쪼들리:동:8
   쪼르르:부:4
   쪼르륵:부:2
  -쪼이다:동:3
  +쪼이:동:3
   쪼작쪼작:부:1
  -쪼잔하다:형:2
  +쪼잔하:형:2
   쪽:명:29
   쪽:명:4
   쪽:명:4
  @@ -47560,127 +47560,127 @@
   쪽이불:명:1
   쪽지:명:23
   쪽쪽:부:1
  -쪽팔리다:동:6
  +쪽팔리:동:6
   쫀드기:명:2
   쫀득쫀득:부:2
  -쫀득쫀득하다:형:1
  +쫀득쫀득하:형:1
   쫄깃쫄깃:부:1
  -쫄깃쫄깃하다:형:4
  -쫄깃하다:형:1
  +쫄깃쫄깃하:형:4
  +쫄깃하:형:1
   쫄따구:명:1
   쫄쫄:부:1
   쫄쫄:부:2
  -쫄쫄거리다:동:1
  +쫄쫄거리:동:1
   쫄쫄이:명:1
  -쫑그리다:동:1
  +쫑그리:동:1
   쫑긋:부:2
  -쫑긋거리다:동:2
  -쫑알거리다:동:2
  -쫓겨나다:동:34
  -쫓기다:동:56
  -쫓다:동:67
  -쫓아가다:동:13
  -쫓아내다:동:10
  -쫓아다니다:동:12
  -쫓아오다:동:9
  +쫑긋거리:동:2
  +쫑알거리:동:2
  +쫓겨나:동:34
  +쫓기:동:56
  +쫓:동:67
  +쫓아가:동:13
  +쫓아내:동:10
  +쫓아다니:동:12
  +쫓아오:동:9
   쫙:부:5
   쫙쫙:부:1
   쬐끔:부:2
  -쬐다:동:10
  -쬐이다:동:1
  -쭈그리다:동:21
  +쬐:동:10
  +쬐이:동:1
  +쭈그리:동:21
   쭈글쭈글:부:1
  -쭈글쭈글하다:형:1
  -쭈글쭈글해지다:동:1
  +쭈글쭈글하:형:1
  +쭈글쭈글해지:동:1
   쭈르르:부:4
   쭈볏쭈볏:부:1
  -쭈빗쭈빗하다:동:1
  -쭈뼛거리다:동:1
  -쭈뼛쭈뼛하다:형:1
  -쭈뼛하다:형:1
  -쭈뼛해지다:동:1
  +쭈빗쭈빗하:동:1
  +쭈뼛거리:동:1
  +쭈뼛쭈뼛하:형:1
  +쭈뼛하:형:1
  +쭈뼛해지:동:1
   쭈쭈바:명:1
   쭉:부:56
   쭉정이:명:1
   쭉쭉:부:3
   쭝긋쭝긋:부:1
   쯧쯧:부:17
  -쯧쯧거리다:동:1
  +쯧쯧거리:동:1
   찌:명:2
   찌개:명:26
  -찌그러뜨리다:동:3
  -찌그러지다:동:13
  -찌그리다:동:1
  +찌그러뜨리:동:3
  +찌그러지:동:13
  +찌그리:동:1
   찌꺼기:명:36
   찌끄럭지:명:1
  -찌다:동:22
  -찌다:동:23
  -찌다:동:3
  -찌들다:동:13
  -찌들리다:동:1
  -찌들어지다:동:1
  -찌르다:동:80
  +찌:동:22
  +찌:동:23
  +찌:동:3
  +찌들:동:13
  +찌들리:동:1
  +찌들어지:동:1
  +찌르:동:80
   찌르레기:명:1
   찌르르:부:1
   찌르릉:부:3
   찌릿찌릿:부:1
  -찌뿌듯하다:형:1
  +찌뿌듯하:형:1
   찌직찌직:부:1
   찌찌:명:2
  -찌푸리다:동:33
  +찌푸리:동:33
   찍:부:1
  -찍다:동:10
  -찍다:동:194
  +찍:동:10
  +찍:동:194
   찍소리:명:2
   찍찍:부:1
  -찍혀지다:동:1
  -찍히다:동:39
  -찍히다:동:6
  -찐득하다:형:1
  +찍혀지:동:1
  +찍히:동:39
  +찍히:동:6
  +찐득하:형:1
   찐보리:명:1
   찔금찔금:부:2
  -찔꺽거리다:동:2
  +찔꺽거리:동:2
   찔끔:부:4
   찔끔:부:6
  -찔끔거려지다:동:1
  -찔끔거리다:동:2
  -찔끔대다:동:1
  +찔끔거려지:동:1
  +찔끔거리:동:2
  +찔끔대:동:1
   찔끔찔끔:부:1
  -찔끔하다:동:2
  +찔끔하:동:2
   찔레:명:2
   찔레꽃:명:5
  -찔리다:동:13
  +찔리:동:13
   찜:명:1
   찜질:명:5
  -찜질하다:동:1
  -찜찜하다:형:10
  +찜질하:동:1
  +찜찜하:형:10
   찜통:명:6
   찜통더위:명:1
  -찝쩍거리다:동:3
  -찝찔하다:형:2
  -찝찝하다:형:2
  +찝쩍거리:동:3
  +찝찔하:형:2
  +찝찝하:형:2
   찡:부:1
  -찡그리다:동:16
  -찡긋거리다:동:1
  -찡긋하다:동:4
  -찡기다:동:1
  -찡등그리다:동:1
  -찡하다:형:7
  -찡해지다:동:1
  -찢겨지다:동:4
  -찢기다:동:9
  -찢다:동:34
  -찢어뜨리다:동:1
  -찢어지다:동:41
  -찧다:동:10
  +찡그리:동:16
  +찡긋거리:동:1
  +찡긋하:동:4
  +찡기:동:1
  +찡등그리:동:1
  +찡하:형:7
  +찡해지:동:1
  +찢겨지:동:4
  +찢기:동:9
  +찢:동:34
  +찢어뜨리:동:1
  +찢어지:동:41
  +찧:동:10
   차:명:481
   차:명:66
   차:명:68
   차:의:233
  -차가워지다:동:3
  -차감되다:동:1
  -차감하다:동:2
  -차갑다:형:106
  +차가워지:동:3
  +차감되:동:1
  +차감하:동:2
  +차갑:형:106
   차고:명:1
   차곡차곡:부:19
   차과로초:명:1
  @@ -47696,30 +47696,30 @@
   차나무:명:3
   차남:명:23
   차내:명:3
  -차다:동:223
  -차다:동:51
  -차다:동:98
  -차다:형:54
  +차:동:223
  +차:동:51
  +차:동:98
  +차:형:54
   차단:명:3
  -차단당하다:동:5
  -차단되다:동:8
  +차단당하:동:5
  +차단되:동:8
   차단술:명:2
  -차단시키다:동:6
  +차단시키:동:6
   차단식:명:1
   차단제:명:2
  -차단하다:동:26
  +차단하:동:26
   차도:명:12
   차도:명:3
   차도르:명:1
   차동식:명:1
   차등:명:5
  -차디차다:형:3
  +차디차:형:3
   차라리:부:118
   차란차란:부:1
   차량:명:109
   차려:명:4
  -차려입다:동:13
  -차려지다:동:10
  +차려입:동:13
  +차려지:동:10
   차렵저고리:명:1
   차렷:명:3
   차례:명:12
  @@ -47728,28 +47728,28 @@
   차례차례:부:9
   차륜승:명:1
   차르륵:부:1
  -차리다:동:165
  +차리:동:165
   차림:명:58
   차림새:명:2
   차마:부:44
   차머리:명:1
   차명:명:15
   차별:명:83
  -차별되다:동:1
  -차별받다:동:4
  +차별되:동:1
  +차별받:동:4
   차별상:명:5
   차별성:명:22
   차별적:관:5
   차별적:명:7
   차별주의:명:4
  -차별하다:동:6
  +차별하:동:6
   차별화:명:13
  -차별화되다:동:6
  -차별화시키다:동:5
  -차별화하다:동:4
  +차별화되:동:6
  +차별화시키:동:5
  +차별화하:동:4
   차분:의:3
  -차분하다:형:40
  -차분해지다:동:1
  +차분하:형:40
  +차분해지:동:1
   차분히:부:8
   차비:명:12
   차비:명:2
  @@ -47763,13 +47763,13 @@
   차안:명:1
   차액:명:3
   차양:명:3
  -차오르다:동:20
  -차올리다:동:3
  +차오르:동:20
  +차올리:동:3
   차용:명:2
   차원:명:300
   차율:명:2
   차이:명:383
  -차이다:동:6
  +차이:동:6
   차이성:명:1
   차이점:명:40
   차익:명:2
  @@ -47780,7 +47780,7 @@
   차입:명:4
   차입금:명:4
   차입액:명:1
  -차입하다:동:2
  +차입하:동:2
   차자:명:1
   차장:명:6
   차장:명:72
  @@ -47793,16 +47793,16 @@
   차점:명:1
   차점자:명:5
   차점작:명:1
  -차정되다:동:1
  +차정되:동:1
   차제:명:7
   차조:명:3
   차종:명:5
   차지:명:1
   차지:명:15
  -차지다:동:1
  -차지다:형:3
  -차지되다:동:1
  -차지하다:동:241
  +차지:동:1
  +차지:형:3
  +차지되:동:1
  +차지하:동:241
   차질:명:18
   차차:부:21
   차차로:부:1
  @@ -47810,11 +47810,11 @@
   차창:명:31
   차체:명:6
   차출:명:2
  -차출되다:동:3
  -차출하다:동:1
  +차출되:동:3
  +차출하:동:1
   차츰:부:57
   차츰차츰:부:7
  -차치하다:동:8
  +차치하:동:8
   차트:명:4
   차폭:명:1
   차표:명:3
  @@ -47824,90 +47824,90 @@
   착:부:2
   착:부:4
   착각:명:45
  -착각되다:동:1
  +착각되:동:1
   착각착각:부:1
  -착각하다:동:32
  +착각하:동:32
   착공:명:10
  -착공되다:동:4
  -착공하다:동:7
  +착공되:동:4
  +착공하:동:7
   착관:명:1
   착근:명:1
   착란:명:3
   착란적:명:1
   착륙:명:11
  -착륙시키다:동:1
  -착륙하다:동:6
  -착목하다:동:1
  +착륙시키:동:1
  +착륙하:동:6
  +착목하:동:1
   착복:명:1
  -착복하다:동:3
  +착복하:동:3
   착상:명:2
   착상:명:7
  -착상하다:동:2
  -착색되다:동:1
  +착상하:동:2
  +착색되:동:1
   착색제:명:1
   착석:명:1
  -착석하다:동:1
  +착석하:동:1
   착수:명:1
   착수:명:10
  -착수하다:동:36
  +착수하:동:36
   착실:명:2
  -착실하다:형:12
  -착실해지다:동:2
  +착실하:형:12
  +착실해지:동:2
   착실히:부:8
   착안:명:1
  -착안되다:동:1
  -착안하다:동:13
  +착안되:동:1
  +착안하:동:13
   착오:명:6
   착용:명:8
  -착용되다:동:4
  +착용되:동:4
   착용자:명:2
  -착용하다:동:19
  +착용하:동:19
   착잡:명:2
  -착잡하다:형:32
  -착잡해지다:동:19
  -착잡해하다:동:2
  +착잡하:형:32
  +착잡해지:동:19
  +착잡해하:동:2
   착지:명:4
  -착지하다:동:4
  +착지하:동:4
   착착:부:1
   착취:명:21
  -착취당하다:동:2
  +착취당하:동:2
   착취자:명:4
  -착취하다:동:7
  -착하다:형:146
  +착취하:동:7
  +착하:형:146
   찬:명:2
   찬거리:명:2
   찬동:명:1
  -찬동하다:동:4
  -찬란하다:형:40
  +찬동하:동:4
  +찬란하:형:40
   찬란히:부:1
   찬물:명:40
   찬미:명:1
  -찬미받다:동:1
  -찬미하다:동:1
  +찬미받:동:1
  +찬미하:동:1
   찬바람:명:11
   찬반:명:10
   찬반양론:명:4
   찬밥:명:10
   찬사:명:11
   찬성:명:16
  -찬성하다:동:20
  +찬성하:동:20
   찬송가:명:3
   찬스:명:10
   찬식기:명:1
   찬양:명:3
  -찬양받다:동:1
  -찬양하다:동:3
  -찬연하다:형:2
  +찬양받:동:1
  +찬양하:동:3
  +찬연하:형:2
   찬연히:부:1
   찬염전:명:1
   찬장:명:4
   찬조:명:4
  -찬찬하다:형:1
  +찬찬하:형:1
   찬찬히:부:11
   찬찬히:부:2
   찬탄:명:5
   찬탈:명:1
  -찬탈하다:동:1
  +찬탈하:동:1
   찬합:명:3
   찰거머리:명:1
   찰기:명:7
  @@ -47915,15 +47915,15 @@
   찰나적:명:1
   찰떡:명:5
   찰떡궁합:명:4
  -찰랑거리다:동:3
  +찰랑거리:동:3
   찰랑찰랑:부:1
   찰박찰박:부:1
  -찰브락거리다:동:7
  +찰브락거리:동:7
   찰수수:명:1
   찰싹:부:7
   찰카닥:부:1
   찰칵:부:3
  -찰칵거리다:동:1
  +찰칵거리:동:1
   찰흙:명:9
   참:감:124
   참:명:10
  @@ -47934,21 +47934,21 @@
   참가인:명:3
   참가자:명:11
   참가작:명:2
  -참가하다:동:88
  +참가하:동:88
   참개암나무:명:3
   참견:명:1
  -참견하다:동:6
  +참견하:동:6
   참고:명:27
   참고서:명:9
   참고인:명:6
  -참고하다:동:19
  +참고하:동:19
   참관:명:2
   참관인:명:2
   참관인단:명:1
   참관자:명:1
  -참관하다:동:9
  +참관하:동:9
   참교육:명:2
  -참구하다:동:1
  +참구하:동:1
   참극:명:1
   참기름:명:75
   참길:명:1
  @@ -47956,17 +47956,17 @@
   참나리:명:2
   참나무:명:31
   참나무통:명:1
  -참다:동:214
  -참다못하다:동:8
  +참:동:214
  +참다못하:동:8
   참담:명:1
  -참담하다:형:18
  -참담해하다:동:1
  -참답다:형:27
  +참담하:형:18
  +참담해하:동:1
  +참답:형:27
   참당귀:명:1
  -참되다:형:42
  +참되:형:42
   참뜻:명:6
   참례:명:1
  -참례하다:동:1
  +참례하:동:1
   참말:명:1
   참말:부:5
   참말로:부:11
  @@ -47980,7 +47980,7 @@
   참배:명:13
   참배객:명:1
   참배나무:명:1
  -참배하다:동:7
  +참배하:동:7
   참변:명:3
   참본성:명:5
   참봉:명:2
  @@ -47996,33 +47996,33 @@
   참새:명:114
   참새귀리:명:1
   참석:명:20
  -참석시키다:동:3
  +참석시키:동:3
   참석자:명:25
  -참석하다:동:112
  +참석하:동:112
   참선:명:8
  -참선하다:동:1
  +참선하:동:1
   참소리:명:1
   참신성:명:5
  -참신하다:형:33
  -참아지다:동:1
  -참아하다:동:1
  +참신하:형:33
  +참아지:동:1
  +참아하:동:1
   참억새:명:1
   참여:명:138
   참여권:명:3
   참여도:명:7
  -참여시키다:동:10
  +참여시키:동:10
   참여율:명:2
   참여적:명:1
  -참여하다:동:188
  -참예하다:동:1
  +참여하:동:188
  +참예하:동:1
   참외:명:35
   참으로:부:140
   참을성:명:4
   참의원:명:2
   참작:명:4
  -참작되다:동:1
  +참작되:동:1
   참작론:명:1
  -참작하다:동:4
  +참작하:동:4
   참전:명:9
   참전국:명:1
   참전자:명:1
  @@ -48030,7 +48030,7 @@
   참정권:명:9
   참조:명:44
   참조적:명:1
  -참조하다:동:8
  +참조하:동:8
   참주:명:2
   참주인:명:2
   참주제:명:3
  @@ -48038,17 +48038,17 @@
   참치:명:15
   참판:명:5
   참패:명:5
  -참패하다:동:3
  +참패하:동:3
   참피나무:명:1
  -참하다:형:3
  +참하:형:3
   참행동:명:1
   참호:명:2
  -참혹하다:형:9
  -참혹해지다:동:1
  +참혹하:형:9
  +참혹해지:동:1
   참화:명:3
   참회:명:4
  -참회하다:동:1
  -참회하다:동:2
  +참회하:동:1
  +참회하:동:2
   찹쌀:명:21
   찹쌀가루:명:8
   찹쌀떡:명:3
  @@ -48067,14 +48067,14 @@
   창가:명:27
   창가:명:4
   창간:명:10
  -창간되다:동:3
  +창간되:동:3
   창간사:명:1
  -창간하다:동:5
  +창간하:동:5
   창간호:명:3
   창건:명:3
  -창건되다:동:2
  +창건되:동:2
   창건일:명:1
  -창건하다:동:3
  +창건하:동:3
   창검:명:1
   창고:명:59
   창고업:명:2
  @@ -48085,44 +48085,44 @@
   창끝:명:3
   창녀:명:11
   창단:명:15
  -창단되다:동:1
  -창단하다:동:5
  +창단되:동:1
  +창단하:동:5
   창달:명:9
  -창달되다:동:1
  +창달되:동:1
   창당:명:16
  -창당하다:동:1
  +창당하:동:1
   창대:명:4
   창던지기:명:3
  -창도하다:동:1
  +창도하:동:1
   창립:명:19
  -창립되다:동:7
  -창립하다:동:3
  +창립되:동:7
  +창립하:동:3
   창만:명:1
   창문:명:108
   창문턱:명:1
   창문틀:명:1
   창밖:명:87
  -창백하다:형:11
  -창백해지다:동:3
  +창백하:형:11
  +창백해지:동:3
   창사:명:1
   창살:명:3
   창생:명:1
   창설:명:20
  -창설되다:동:7
  -창설하다:동:4
  +창설되:동:7
  +창설하:동:4
   창시:명:1
   창시자:명:8
  -창시하다:동:2
  +창시하:동:2
   창씨개명:명:1
   창안:명:1
   창안자:명:1
  -창안하다:동:7
  +창안하:동:7
   창알머리:명:2
   창업:명:17
   창업자:명:2
   창업주:명:8
   창업주적:관:1
  -창업하다:동:3
  +창업하:동:3
   창유리:명:11
   창의:명:1
   창의:명:10
  @@ -48135,7 +48135,7 @@
   창작:명:51
   창작가:명:1
   창작극:명:71
  -창작되다:동:7
  +창작되:동:7
   창작물:명:3
   창작성:명:2
   창작실:명:1
  @@ -48143,12 +48143,12 @@
   창작자:명:4
   창작집:명:2
   창작품:명:2
  -창작하다:동:14
  +창작하:동:14
   창장:명:3
  -창제되다:동:2
  -창제하다:동:3
  +창제되:동:2
  +창제하:동:3
   창조:명:76
  -창조되다:동:6
  +창조되:동:6
   창조력:명:9
   창조론:명:2
   창조물:명:1
  @@ -48157,32 +48157,32 @@
   창조적:관:44
   창조적:명:65
   창조주:명:2
  -창조하다:동:58
  -창창하다:형:1
  +창조하:동:58
  +창창하:형:1
   창출:명:20
  -창출되다:동:9
  -창출시키다:동:1
  -창출하다:동:39
  +창출되:동:9
  +창출시키:동:1
  +창출하:동:39
   창턱:명:6
   창틀:명:17
   창피:명:4
  -창피스럽다:형:3
  -창피하다:형:28
  -창피해지다:동:1
  +창피스럽:형:3
  +창피하:형:28
  +창피해지:동:1
   창해:명:1
   창호:명:1
   창호지:명:3
  -찾다:동:1,006
  -찾아가다:동:161
  -찾아내다:동:93
  -찾아내어지다:동:1
  -찾아다니다:동:29
  -찾아들다:동:16
  -찾아보다:동:206
  -찾아뵈다:동:1
  -찾아뵙다:동:12
  -찾아오다:동:219
  -찾아지다:동:15
  +찾:동:1006
  +찾아가:동:161
  +찾아내:동:93
  +찾아내어지:동:1
  +찾아다니:동:29
  +찾아들:동:16
  +찾아보:동:206
  +찾아뵈:동:1
  +찾아뵙:동:12
  +찾아오:동:219
  +찾아지:동:15
   채:명:1
   채:명:1
   채:명:3
  @@ -48191,25 +48191,25 @@
   채:의:37
   채:의:690
   채광:명:1
  -채굴되다:동:1
  -채굴하다:동:2
  +채굴되:동:1
  +채굴하:동:2
   채권:명:32
   채권단:명:1
   채근:명:2
  -채근하다:동:1
  +채근하:동:1
   채금:명:1
   채끝:명:2
   채널:명:34
  -채다:동:32
  -채다:동:9
  +채:동:32
  +채:동:9
   채도:명:2
  -채뜨리다:동:1
  +채뜨리:동:1
   채무:명:7
   채비:명:16
  -채비하다:동:2
  +채비하:동:2
   채산제:명:1
   채색:명:7
  -채색하다:동:6
  +채색하:동:6
   채색화:명:1
   채석:명:1
   채석장:명:3
  @@ -48217,39 +48217,39 @@
   채소밭:명:1
   채식:명:2
   채신머리:명:1
  -채신머리없다:형:1
  -채신없다:형:1
  +채신머리없:형:1
  +채신없:형:1
   채용:명:13
  -채용되다:동:4
  -채용하다:동:19
  -채우다:동:126
  -채우다:동:7
  -채우다:동:8
  -채워지다:동:17
  -채이다:동:2
  +채용되:동:4
  +채용하:동:19
  +채우:동:126
  +채우:동:7
  +채우:동:8
  +채워지:동:17
  +채이:동:2
   채전:명:1
   채점:명:23
  -채점하다:동:6
  +채점하:동:6
   채집:명:3
  -채집되다:동:2
  -채집하다:동:5
  +채집되:동:2
  +채집하:동:5
   채찍:명:10
   채찍질:명:1
   채취:명:7
   채취군:명:2
   채취선:명:3
   채취자:명:1
  -채취하다:동:5
  +채취하:동:5
   채탄:명:2
   채택:명:17
  -채택되다:동:31
  +채택되:동:31
   채택료:명:10
   채택료율:명:1
  -채택하다:동:60
  +채택하:동:60
   채플:명:2
   채함:명:1
   채혈:명:1
  -채화되다:동:1
  +채화되:동:1
   책:명:886
   책가방:명:22
   책갈피:명:1
  @@ -48261,16 +48261,16 @@
   책더미:명:1
   책략:명:3
   책망:명:2
  -책망하다:동:1
  +책망하:동:1
   책머리:명:7
   책무:명:7
   책받침:명:2
   책방:명:14
   책보:명:13
  -책봉되다:동:1
  +책봉되:동:1
   책상:명:137
   책상다리:명:2
  -책상다리하다:동:1
  +책상다리하:동:1
   책상머리:명:5
   책씻이:명:1
   책임:명:286
  @@ -48281,122 +48281,122 @@
   책임자:명:80
   책임제:명:2
   책임주의:명:1
  -책임지다:동:59
  +책임지:동:59
   책자:명:21
   책장:명:5
   책장:명:6
   책정:명:4
   책정권:명:3
  -책정되다:동:5
  -책정하다:동:12
  +책정되:동:5
  +책정하:동:12
   챌린저:명:1
   챔프:명:4
   챔프전:명:1
   챔피언:명:30
   챔피언십:명:1
   챕터:명:1
  -챙기다:동:153
  +챙기:동:153
   처:명:14
   처:명:2
   처가:명:6
   처갓집:명:2
  -처결하다:동:1
  +처결하:동:1
   처남:명:8
  -처넣다:동:5
  +처넣:동:5
   처녀:명:84
   처녀성:명:1
   처녀자리:명:2
   처녀좌:명:1
   처단:명:1
  -처단받다:동:2
  -처량하다:형:11
  +처단받:동:2
  +처량하:형:11
   처리:명:196
   처리기:명:1
  -처리되다:동:24
  +처리되:동:24
   처리비:명:1
   처리업:명:2
   처리장:명:15
  -처리하다:동:133
  +처리하:동:133
   처마:명:26
  -처마시다:동:1
  -처매다:동:1
  -처먹다:동:5
  -처묵다:동:2
  -처바르다:동:1
  -처박다:동:7
  -처박히다:동:8
  +처마시:동:1
  +처매:동:1
  +처먹:동:5
  +처묵:동:2
  +처바르:동:1
  +처박:동:7
  +처박히:동:8
   처방:명:22
  -처방받다:동:1
  +처방받:동:1
   처방전:명:1
  -처방하다:동:3
  +처방하:동:3
   처벌:명:74
  -처벌당하다:동:1
  -처벌되다:동:5
  -처벌받다:동:2
  -처벌시키다:동:2
  -처벌하다:동:26
  +처벌당하:동:1
  +처벌되:동:5
  +처벌받:동:2
  +처벌시키:동:2
  +처벌하:동:26
   처분:명:68
  -처분되다:동:4
  +처분되:동:4
   처분장:명:1
  -처분하다:동:22
  +처분하:동:22
   처사:명:23
   처서:명:2
   처세:명:1
   처세술:명:1
   처신:명:8
  -처신하다:동:5
  -처연하다:형:9
  +처신하:동:5
  +처연하:형:9
   처용무:명:2
   처우:명:7
   처우제:명:1
  -처우하다:동:1
  -처음:명:1,029
  +처우하:동:1
  +처음:명:1029
   처자:명:4
   처자식:명:7
   처장:명:10
  -처절하다:형:12
  -처절하다:형:2
  +처절하:형:12
  +처절하:형:2
   처제:명:5
   처지:명:103
  -처지다:동:23
  +처지:동:23
   처참:명:1
  -처참하다:형:6
  +처참하:형:6
   처첩:명:2
   처치:명:1
   처치:명:19
   처치실:명:2
  -처치하다:동:3
  -처하다:동:60
  -처해지다:동:3
  +처치하:동:3
  +처하:동:60
  +처해지:동:3
   처형:명:3
  -처형당하다:동:1
  -처형되다:동:1
  -처형하다:동:1
  +처형당하:동:1
  +처형되:동:1
  +처형하:동:1
   척:부:4
   척:부:6
   척:의:38
   척:의:47
   척결:명:30
  -척결하다:동:7
  +척결하:동:7
   척도:명:19
  -척박하다:형:10
  -척박해지다:동:1
  +척박하:형:10
  +척박해지:동:1
   척불론:명:1
   척사론:명:1
   척수:명:6
   척척:부:1
   척척:부:8
  -척척하다:형:1
  +척척하:형:1
   척추:명:36
   척추관:명:1
  -척하다:보:60
  +척하:보:60
   척후병:명:1
   천:관:67
   천:명:2
   천:명:50
   천:명:8
   천:수:4
  -천거하다:동:1
  +천거하:동:1
   천고:명:2
   천고마비:명:1
   천공:명:1
  @@ -48421,13 +48421,13 @@
   천년만년:명:1
   천당:명:3
   천대:명:4
  -천대받다:동:5
  -천대하다:동:2
  +천대받:동:5
  +천대하:동:2
   천덕꾸러기:명:2
   천도:명:11
   천도:명:13
   천도론:명:1
  -천도하다:동:3
  +천도하:동:3
   천동설:명:2
   천둥:명:11
   천둥소리:명:7
  @@ -48446,17 +48446,17 @@
   천만금:명:1
   천만년:명:1
   천만다행:명:6
  -천만다행하다:형:1
  +천만다행하:형:1
   천만뜻밖:명:1
   천만리:명:1
   천만세:명:1
   천만에:감:10
   천명:명:4
   천명:명:4
  -천명되다:동:2
  +천명되:동:2
   천명론:명:1
   천명민본론:명:3
  -천명하다:동:17
  +천명하:동:17
   천문:명:10
   천문대:명:9
   천문학:명:13
  @@ -48467,13 +48467,13 @@
   천민:명:1
   천민:명:7
   천민적:명:2
  -천박스럽다:형:1
  -천박하다:형:12
  +천박스럽:형:1
  +천박하:형:12
   천방지축:부:1
   천백:명:1
   천백이십육:관:1
   천벌:명:2
  -천변만화하다:동:1
  +천변만화하:동:1
   천부인:명:1
   천부적:관:1
   천부적:명:5
  @@ -48493,8 +48493,8 @@
   천수:명:1
   천시:명:5
   천시관:명:1
  -천시되다:동:1
  -천시하다:동:8
  +천시되:동:1
  +천시하:동:8
   천식:명:1
   천신:명:23
   천신만고:명:3
  @@ -48507,11 +48507,11 @@
   천연가스:명:1
   천연기념물:명:8
   천연기념물적:명:1
  -천연덕스럽다:형:4
  +천연덕스럽:형:4
   천연두:명:2
   천연색:명:6
   천연성:명:2
  -천연스럽다:형:1
  +천연스럽:형:1
   천연자원:명:4
   천염:명:1
   천오백:관:1
  @@ -48520,7 +48520,7 @@
   천운:명:1
   천위:명:1
   천의:명:1
  -천의무봉하다:형:1
  +천의무봉하:형:1
   천인합일:명:2
   천인합일설:명:1
   천일:명:1
  @@ -48549,23 +48549,23 @@
   천지인:명:1
   천지조화:명:2
   천직:명:3
  -천진난만하다:형:2
  -천진난만해지다:동:1
  +천진난만하:형:2
  +천진난만해지:동:1
   천진무구:명:1
  -천진스럽다:형:2
  -천진하다:형:2
  +천진스럽:형:2
  +천진하:형:2
   천차만별:명:5
   천착:명:1
  -천착하다:동:3
  -천창창하다:형:1
  -천천하다:형:2
  +천착하:동:3
  +천창창하:형:1
  +천천하:형:2
   천천히:부:135
   천체:명:26
   천체계:명:1
   천체관:명:1
   천촌만락:명:1
   천추:명:1
  -천측하다:동:1
  +천측하:동:1
   천치:명:1
   천칭자리:명:1
   천칭좌:명:1
  @@ -48575,7 +48575,7 @@
   천평:명:2
   천품:명:1
   천하:명:35
  -천하다:형:7
  +천하:형:7
   천하무적:명:2
   천하에:감:4
   천하장사:명:2
  @@ -48594,12 +48594,12 @@
   철강:명:26
   철강재:명:1
   철거:명:16
  -철거당하다:동:1
  -철거덩거리다:동:2
  -철거되다:동:4
  +철거당하:동:1
  +철거덩거리:동:2
  +철거되:동:4
   철거반원:명:2
   철거식:명:1
  -철거하다:동:13
  +철거하:동:13
   철골:명:2
   철광산:명:1
   철광석:명:7
  @@ -48611,43 +48611,43 @@
   철기:명:28
   철기병:명:2
   철길:명:10
  -철꺽거리다:동:1
  +철꺽거리:동:1
   철도:명:40
   철도망:명:1
   철도역:명:2
   철두철미:부:3
  -철두철미하다:형:2
  -철들다:동:4
  +철두철미하:형:2
  +철들:동:4
   철딱서니:명:4
   철렁:부:5
  -철렁하다:동:5
  +철렁하:동:5
   철로:명:5
   철릭:명:6
   철마:명:1
   철망:명:6
   철면피:명:1
   철모:명:1
  -철모르다:동:3
  +철모르:동:3
   철물:명:1
  -철버덕거리다:동:4
  +철버덕거리:동:4
   철벽:명:3
   철봉:명:19
   철부지:명:22
   철분:명:5
   철사:명:16
   철새:명:8
  -철석같다:형:1
  +철석같:형:1
   철석같이:부:4
   철선:명:1
   철선:명:2
   철수:명:27
  -철수되다:동:1
  -철수시키다:동:6
  -철수하다:동:22
  +철수되:동:1
  +철수시키:동:6
  +철수하:동:22
   철썩:부:3
  -철썩거리다:동:1
  +철썩거리:동:1
   철야:명:8
  -철없다:형:13
  +철없:형:13
   철없이:부:1
   철옹성:명:3
   철인:명:1
  @@ -48656,7 +48656,7 @@
   철재:명:4
   철저:명:4
   철저성:명:1
  -철저하다:형:106
  +철저하:형:106
   철저히:부:62
   철제:명:23
   철조:명:1
  @@ -48671,14 +48671,14 @@
   철침:명:1
   철컥:부:1
   철탑:명:5
  -철통같다:형:2
  +철통같:형:2
   철퇴:명:1
   철퇴:명:2
   철판:명:16
   철퍼덕:부:2
   철폐:명:14
  -철폐되다:동:2
  -철폐하다:동:10
  +철폐되:동:2
  +철폐하:동:10
   철학:명:144
   철학가:명:1
   철학계:명:1
  @@ -48688,30 +48688,30 @@
   철학자:명:41
   철학적:관:41
   철학적:명:19
  -철학화하다:동:1
  +철학화하:동:1
   철회:명:24
  -철회되다:동:4
  -철회하다:동:19
  +철회되:동:4
  +철회하:동:19
   첨:명:11
   첨가:명:1
  -첨가되다:동:3
  +첨가되:동:3
   첨가물:명:3
  -첨가시키다:동:1
  -첨가하다:동:8
  +첨가시키:동:1
  +첨가하:동:8
   첨단:명:68
   첨단적:명:1
   첨벙:부:2
   첨벙첨벙:부:1
   첨병:명:2
  -첨부되다:동:4
  -첨부하다:동:1
  +첨부되:동:4
  +첨부하:동:1
   첨삭:명:1
  -첨삭되다:동:1
  +첨삭되:동:1
   첨언:명:1
  -첨언하다:동:1
  -첨예하다:형:13
  -첨예화되다:동:4
  -첨예화하다:동:2
  +첨언하:동:1
  +첨예하:형:13
  +첨예화되:동:4
  +첨예화하:동:2
   첨지:명:7
   첨치:명:1
   첨탑:명:2
  @@ -48724,7 +48724,7 @@
   첩자:명:1
   첩첩:부:1
   첩첩산중:명:1
  -첩첩하다:형:1
  +첩첩하:형:1
   첫:관:325
   첫걸음:명:9
   첫날:명:55
  @@ -48752,7 +48752,7 @@
   첫째:관:44
   첫째:명:6
   첫째:수:131
  -첫째가다:동:1
  +첫째가:동:1
   첫째날개깃:명:1
   첫해:명:9
   청:명:1
  @@ -48764,7 +48764,7 @@
   청개구리:명:4
   청결:명:2
   청결성:명:1
  -청결하다:형:5
  +청결하:형:5
   청결히:부:2
   청경:명:1
   청경채:명:14
  @@ -48773,10 +48773,10 @@
   청구권:명:12
   청구권자:명:1
   청구권적:관:1
  -청구되다:동:1
  +청구되:동:1
   청구분:명:1
   청구서:명:6
  -청구하다:동:24
  +청구하:동:24
   청군:명:2
   청금고:명:1
   청기와:명:1
  @@ -48795,13 +48795,13 @@
   청라:명:1
   청량감:명:1
   청량음료:명:16
  -청량하다:형:4
  +청량하:형:4
   청력:명:4
   청렴:명:3
  -청렴결백하다:형:2
  +청렴결백하:형:2
   청렴도:명:1
   청렴성:명:3
  -청렴하다:형:3
  +청렴하:형:3
   청록:명:1
   청록색:명:7
   청룡:명:7
  @@ -48809,7 +48809,7 @@
   청마루:명:1
   청명:명:1
   청명주:명:1
  -청명하다:형:2
  +청명하:형:2
   청문회:명:26
   청미래덩굴:명:1
   청바지:명:15
  @@ -48817,17 +48817,17 @@
   청병:명:2
   청보라색:명:1
   청부:명:2
  -청부받다:동:1
  +청부받:동:1
   청빈:명:1
  -청빈하다:형:1
  +청빈하:형:1
   청사:명:50
   청사진:명:17
   청사초롱:명:1
   청산:명:2
   청산:명:36
  -청산되다:동:5
  +청산되:동:5
   청산주의적:명:1
  -청산하다:동:26
  +청산하:동:26
   청상과부:명:3
   청색:명:12
   청색증:명:17
  @@ -48840,23 +48840,23 @@
   청소년기:명:5
   청소년단:명:1
   청소년층:명:2
  -청소되다:동:1
  +청소되:동:1
   청소부:명:4
   청소비:명:1
   청소차:명:3
  -청소하다:동:38
  +청소하:동:38
   청솔:명:2
   청솔가지:명:3
   청수:명:2
   청순미:명:1
   청순성:명:1
   청순파:명:1
  -청순하다:형:5
  -청승맞다:형:3
  -청신하다:형:1
  +청순하:형:5
  +청승맞:형:3
  +청신하:형:1
   청신호:명:2
   청심환:명:1
  -청아하다:형:2
  +청아하:형:2
   청약:명:19
   청약권:명:2
   청약서:명:1
  @@ -48864,15 +48864,15 @@
   청운:명:1
   청원:명:9
   청원서:명:6
  -청원하다:동:2
  +청원하:동:2
   청자:명:15
   청장:명:21
   청장:명:6
   청장년:명:1
   청정:명:9
   청정기:명:2
  -청정하다:동:1
  -청정하다:형:3
  +청정하:동:1
  +청정하:형:3
   청제:명:1
   청조:명:1
   청중:명:16
  @@ -48883,21 +48883,21 @@
   청천:명:3
   청천벽력:명:1
   청첩장:명:1
  -청초하다:형:5
  +청초하:형:5
   청춘:명:59
   청춘물:명:1
   청출어람:명:1
   청취:명:5
   청취율:명:2
   청취자:명:14
  -청취하다:동:4
  +청취하:동:4
   청치마:명:1
   청탁:명:15
   청탁:명:3
  -청탁하다:동:4
  +청탁하:동:4
   청태:명:1
   청포도:명:1
  -청하다:동:53
  +청하:동:53
   청혼:명:8
   청홍:명:9
   청홍색:명:1
  @@ -48907,12 +48907,12 @@
   체:명:2
   체:의:26
   체감:명:5
  -체감하다:동:1
  +체감하:동:1
   체격:명:14
   체결:명:26
  -체결되다:동:15
  +체결되:동:15
   체결설:명:1
  -체결하다:동:24
  +체결하:동:24
   체계:명:259
   체계도:명:1
   체계론자:명:1
  @@ -48920,9 +48920,9 @@
   체계적:관:3
   체계적:명:43
   체계화:명:1
  -체계화되다:동:1
  -체계화시키다:동:1
  -체계화하다:동:13
  +체계화되:동:1
  +체계화시키:동:1
  +체계화하:동:13
   체구:명:13
   체급:명:9
   체납:명:3
  @@ -48930,26 +48930,26 @@
   체내:명:25
   체념:명:14
   체념적:명:1
  -체념하다:동:14
  +체념하:동:14
   체두관:명:1
   체득:명:1
  -체득시키다:동:2
  -체득하다:동:9
  +체득시키:동:2
  +체득하:동:9
   체력:명:64
   체력적:관:1
   체력적:명:1
   체류:명:26
   체류자:명:6
  -체류하다:동:4
  +체류하:동:4
   체르노젬:명:1
   체머리:명:2
   체면:명:35
   체면치레:명:2
   체모:명:2
  -체받다:동:1
  +체받:동:1
   체벌:명:3
   체불:명:4
  -체불하다:동:1
  +체불하:동:1
   체비지:명:1
   체살머리:명:1
   체신:명:1
  @@ -48976,7 +48976,7 @@
   체임:명:2
   체임버:명:1
   체재:명:1
  -체재하다:동:2
  +체재하:동:2
   체전:명:3
   체제:명:510
   체제론:명:2
  @@ -48984,37 +48984,37 @@
   체조:명:111
   체조법:명:2
   체조직:명:2
  -체조하다:동:5
  +체조하:동:5
   체중:명:46
   체중계:명:2
   체증:명:17
   체증:명:3
   체질:명:34
  -체질화되다:동:5
  -체질화하다:동:1
  -체체거리다:동:1
  +체질화되:동:5
  +체질화하:동:1
  +체체거리:동:1
   체취:명:14
   체코로만탱크:명:1
   체크:명:7
   체크무늬:명:8
   체크인:명:1
  -체크하다:동:9
  +체크하:동:9
   체통:명:2
   체포:명:34
  -체포되다:동:16
  +체포되:동:16
   체포죄:명:1
  -체포하다:동:18
  -체하다:동:4
  -체하다:보:35
  +체포하:동:18
  +체하:동:4
  +체하:보:35
   체한:명:2
   체험:명:171
   체험담:명:4
  -체험되다:동:9
  +체험되:동:9
   체험적:관:11
   체험적:명:3
  -체험하다:동:35
  +체험하:동:35
   체현:명:1
  -체현하다:동:1
  +체현하:동:1
   체형:명:6
   체형적:관:1
   체형형:명:2
  @@ -49022,16 +49022,16 @@
   첼리스트:명:1
   쳇:감:2
   쳇바퀴:명:6
  -쳐다보다:동:191
  -쳐다보이다:동:1
  -쳐들다:동:27
  -쳐들리다:동:1
  -쳐들어가다:동:4
  -쳐들어오다:동:19
  -쳐부수다:동:1
  -쳐올리다:동:2
  -쳐주다:동:2
  -쳐지다:동:3
  +쳐다보:동:191
  +쳐다보이:동:1
  +쳐들:동:27
  +쳐들리:동:1
  +쳐들어가:동:4
  +쳐들어오:동:19
  +쳐부수:동:1
  +쳐올리:동:2
  +쳐주:동:2
  +쳐지:동:3
   초:명:1
   초:명:4
   초:명:4
  @@ -49067,9 +49067,9 @@
   초고추장:명:5
   초고층:명:2
   초과:명:16
  -초과되다:동:2
  +초과되:동:2
   초과자:명:1
  -초과하다:동:13
  +초과하:동:13
   초관리:명:1
   초군돌:명:1
   초근목피:명:1
  @@ -49094,29 +49094,29 @@
   초대:명:19
   초대:명:24
   초대권:명:2
  -초대되다:동:12
  -초대받다:동:3
  +초대되:동:12
  +초대받:동:3
   초대석:명:3
   초대장:명:9
  -초대하다:동:35
  +초대하:동:35
   초대형:명:5
   초동:명:1
   초등:명:5
   초등학교:명:17
   초등학생:명:1
  -초라하다:형:25
  -초라해지다:동:2
  +초라하:형:25
  +초라해지:동:2
   초래:명:1
  -초래되다:동:4
  -초래하다:동:56
  +초래되:동:4
  +초래하:동:56
   초례청:명:1
   초로:명:6
   초록:명:1
   초록:명:9
   초록빛:명:7
   초록색:명:8
  -초롱초롱하다:형:4
  -초롱초롱해지다:동:1
  +초롱초롱하:형:4
  +초롱초롱해지:동:1
   초롱초롱히:부:1
   초리:명:1
   초립:명:1
  @@ -49144,13 +49144,13 @@
   초봄:명:8
   초비상:명:2
   초빙:명:2
  -초빙되다:동:1
  -초빙하다:동:1
  +초빙되:동:1
  +초빙하:동:1
   초사회적:명:1
   초산:명:2
   초상:명:5
   초상:명:6
  -초상나다:동:1
  +초상나:동:1
   초상집:명:2
   초상화:명:32
   초색:명:1
  @@ -49178,20 +49178,20 @@
   초역사적:관:1
   초역사적:명:3
   초연:명:7
  -초연되다:동:2
  -초연하다:동:1
  -초연하다:형:8
  +초연되:동:2
  +초연하:동:1
  +초연하:형:8
   초엽:명:6
   초오:명:1
   초원:명:69
   초월:명:26
  -초월되다:동:1
  +초월되:동:1
   초월자:명:1
   초월적:관:13
   초월적:명:9
  -초월하다:동:39
  +초월하:동:39
   초월화:명:2
  -초유하다:동:2
  +초유하:동:2
   초은하단:명:2
   초음속:명:1
   초음파:명:12
  @@ -49222,10 +49222,10 @@
   초정치:명:1
   초조:명:3
   초조감:명:4
  -초조롭다:형:2
  -초조하다:형:27
  -초조해지다:동:9
  -초조해하다:동:3
  +초조롭:형:2
  +초조하:형:27
  +초조해지:동:9
  +초조해하:동:3
   초조히:부:1
   초주검:명:2
   초중고:명:3
  @@ -49240,18 +49240,18 @@
   초창기:명:13
   초청:명:42
   초청객:명:1
  -초청되다:동:7
  -초청받다:동:5
  +초청되:동:7
  +초청받:동:5
   초청장:명:16
   초청전:명:1
  -초청하다:동:31
  +초청하:동:31
   초초중구금:명:2
  -초췌하다:형:7
  +초췌하:형:7
   초침:명:6
   초콜릿:명:20
   초크:명:1
   초토:명:2
  -초토화되다:동:2
  +초토화되:동:2
   초특급:명:1
   초파일:명:2
   초판:명:1
  @@ -49276,29 +49276,29 @@
   촉각적:명:1
   촉감:명:11
   촉구:명:21
  -촉구되다:동:1
  -촉구하다:동:87
  +촉구되:동:1
  +촉구하:동:87
   촉망:명:1
  -촉망되다:동:2
  -촉망받다:동:2
  +촉망되:동:2
  +촉망받:동:2
   촉매:명:4
   촉매제:명:4
  -촉매하다:동:2
  -촉발되다:동:4
  -촉발시키다:동:7
  +촉매하:동:2
  +촉발되:동:4
  +촉발시키:동:7
   촉발점:명:1
  -촉발하다:동:6
  +촉발하:동:6
   촉새:명:2
   촉진:명:25
  -촉진되다:동:12
  -촉진시키다:동:20
  +촉진되:동:12
  +촉진시키:동:20
   촉진제:명:6
   촉진책:명:3
  -촉진하다:동:23
  +촉진하:동:23
   촉촉:부:1
   촉촉이:부:9
  -촉촉하다:형:19
  -촉촉해지다:동:1
  +촉촉하:형:19
  +촉촉해지:동:1
   촉탁:명:1
   촌:명:20
   촌:의:2
  @@ -49311,7 +49311,7 @@
   촌부:명:1
   촌사람:명:2
   촌수:명:6
  -촌스럽다:형:16
  +촌스럽:형:16
   촌음:명:1
   촌장:명:4
   촌장층:명:1
  @@ -49321,8 +49321,8 @@
   촌지:명:12
   촌티:명:6
   촌평:명:1
  -촐랑대다:동:1
  -촘촘하다:형:1
  +촐랑대:동:1
  +촘촘하:형:1
   촘촘히:부:7
   촛대:명:5
   촛불:명:18
  @@ -49338,13 +49338,13 @@
   총결산:명:1
   총경:명:3
   총계:명:4
  -총공격하다:동:2
  +총공격하:동:2
   총관중:명:1
   총괄:명:9
  -총괄되다:동:1
  +총괄되:동:1
   총괄서:명:1
   총괄적:명:2
  -총괄하다:동:10
  +총괄하:동:10
   총구:명:3
   총국:명:1
   총국장:명:1
  @@ -49355,9 +49355,9 @@
   총대장:명:3
   총독:명:2
   총동문회:명:1
  -총동원되다:동:1
  -총동원하다:동:6
  -총등장하다:동:1
  +총동원되:동:1
  +총동원하:동:6
  +총등장하:동:1
   총량:명:3
   총력:명:6
   총력전:명:3
  @@ -49365,12 +49365,12 @@
   총리:명:71
   총리령:명:1
   총리실:명:4
  -총망라하다:동:2
  +총망라하:동:2
   총매상:명:1
   총매출액:명:1
   총면적:명:5
   총명:명:7
  -총명하다:형:7
  +총명하:형:7
   총무:명:23
   총무과장:명:1
   총무국장:명:2
  @@ -49391,8 +49391,8 @@
   총사퇴:명:1
   총사퇴설:명:1
   총살감:명:2
  -총살되다:동:1
  -총살하다:동:1
  +총살되:동:1
  +총살하:동:1
   총상:명:3
   총상금:명:2
   총생산:명:9
  @@ -49418,7 +49418,7 @@
   총알받이:명:2
   총알택시:명:2
   총애:명:1
  -총애하다:동:1
  +총애하:동:1
   총액:명:26
   총액수:명:1
   총여신:명:1
  @@ -49448,8 +49448,8 @@
   총중:명:1
   총지배인:명:1
   총질:명:2
  -총집결하다:동:1
  -총집합하다:동:1
  +총집결하:동:1
  +총집합하:동:1
   총참모장:명:1
   총책:명:1
   총책임자:명:1
  @@ -49459,15 +49459,15 @@
   총체적:관:28
   총체적:명:30
   총총:부:2
  -총총거리다:동:1
  +총총거리:동:1
   총총걸음:명:1
  -총총하다:형:2
  -총총하다:형:3
  +총총하:형:2
  +총총하:형:3
   총총히:부:2
   총총히:부:7
  -총출연하다:동:1
  +총출연하:동:1
   총칭:명:1
  -총칭하다:동:5
  +총칭하:동:5
   총칼:명:7
   총탄:명:2
   총통:명:5
  @@ -49479,20 +49479,20 @@
   총학장:명:1
   총합:명:3
   총화:명:2
  -총화되다:동:1
  +총화되:동:1
   총활동:명:1
   총회:명:33
   총회원:명:1
   총회장:명:1
   촬영:명:103
   촬영기:명:4
  -촬영되다:동:1
  +촬영되:동:1
   촬영반:명:1
   촬영분:명:2
   촬영술:명:1
   촬영장:명:2
   촬영지:명:2
  -촬영하다:동:12
  +촬영하:동:12
   최강:명:6
   최강수:명:1
   최강자:명:1
  @@ -49546,10 +49546,10 @@
   최소한:명:101
   최소한도:명:2
   최소화:명:1
  -최소화되다:동:1
  -최소화시키다:동:3
  -최소화하다:동:1
  -최소화하다:동:18
  +최소화되:동:1
  +최소화시키:동:3
  +최소화하:동:1
  +최소화하:동:18
   최신:명:30
   최신곡:명:1
   최신식:명:2
  @@ -49580,7 +49580,7 @@
   최종전:명:1
   최첨단:명:9
   최초:명:196
  -최촉하다:동:1
  +최촉하:동:1
   최측근:명:4
   최하:명:2
   최하위:명:3
  @@ -49595,75 +49595,75 @@
   추:명:2
   추:명:8
   추가:명:67
  -추가되다:동:15
  -추가시키다:동:2
  +추가되:동:15
  +추가시키:동:2
   추가적:관:1
   추가적:명:2
  -추가하다:동:14
  +추가하:동:14
   추간판:명:1
   추격:명:5
   추격전:명:1
  -추격하다:동:1
  +추격하:동:1
   추경:명:4
   추계:명:8
  -추계하다:동:2
  +추계하:동:2
   추고:명:1
   추곡:명:10
   추골:명:8
   추구:명:33
  -추구되다:동:4
  +추구되:동:4
   추구욕:명:2
  -추구하다:동:1
  -추구하다:동:121
  +추구하:동:1
  +추구하:동:121
   추궁:명:10
  -추궁되다:동:3
  -추궁하다:동:10
  +추궁되:동:3
  +추궁하:동:10
   추기경:명:7
   추나:명:12
   추녀:명:9
  -추다:동:3
  -추다:동:89
  +추:동:3
  +추:동:89
   추달:명:1
  -추대되다:동:3
  -추대하다:동:7
  +추대되:동:3
  +추대하:동:7
   추도사:명:2
   추도식:명:1
  -추돌하다:동:1
  +추돌하:동:1
   추동:명:2
  -추동되다:동:1
  -추동하다:동:2
  +추동되:동:1
  +추동하:동:2
   추락:명:18
  -추락시키다:동:1
  -추락하다:동:10
  -추레하다:형:1
  -추려지다:동:1
  +추락시키:동:1
  +추락하:동:10
  +추레하:형:1
  +추려지:동:1
   추렴:명:4
  -추렴하다:동:2
  +추렴하:동:2
   추론:명:3
  -추론되다:동:1
  -추론하다:동:2
  +추론되:동:1
  +추론하:동:2
   추리:명:7
   추리극적:명:1
   추리닝:명:1
  -추리다:동:6
  +추리:동:6
   추리력:명:1
   추모:명:4
   추모비:명:2
   추모식:명:1
   추모제:명:3
  -추모하다:동:3
  +추모하:동:3
   추문:명:1
   추방:명:7
  -추방당하다:동:4
  -추방되다:동:2
  -추방시키다:동:1
  -추방하다:동:11
  +추방당하:동:4
  +추방되:동:2
  +추방시키:동:1
  +추방하:동:11
   추분:명:6
   추산:명:4
  -추산되다:동:10
  -추산하다:동:5
  +추산되:동:10
  +추산하:동:5
   추상:명:20
  -추상같다:형:2
  +추상같:형:2
   추상같이:부:1
   추상성:명:3
   추상어:명:1
  @@ -49671,13 +49671,13 @@
   추상적:명:41
   추상주의:명:1
   추상파:명:1
  -추상하다:동:2
  +추상하:동:2
   추상화:명:1
   추상화:명:2
  -추상화되다:동:5
  -추상화시키다:동:1
  +추상화되:동:5
  +추상화시키:동:1
   추서:명:1
  -추서하다:동:1
  +추서하:동:1
   추석:명:46
   추석날:명:1
   추석빔:명:1
  @@ -49686,92 +49686,92 @@
   추수선:명:1
   추수주의:명:3
   추수주의자:명:1
  -추수하다:동:1
  -추수하다:동:3
  -추스르다:동:19
  +추수하:동:1
  +추수하:동:3
  +추스르:동:19
   추신:명:1
   추심:명:7
  -추심하다:동:2
  +추심하:동:2
   추악:명:1
   추악상:명:1
  -추악하다:형:11
  +추악하:형:11
   추앙:명:1
  -추앙되다:동:1
  -추앙받다:동:1
  -추앙하다:동:2
  -추어올리다:동:2
  -추어주다:동:1
  +추앙되:동:1
  +추앙받:동:1
  +추앙하:동:2
  +추어올리:동:2
  +추어주:동:1
   추억:명:77
   추억거리:명:2
   추억담:명:1
   추억물:명:1
  -추억하다:동:1
  -추워지다:동:10
  +추억하:동:1
  +추워지:동:10
   추월:명:2
  -추월하다:동:3
  +추월하:동:3
   추위:명:58
   추이:명:13
   추인:명:2
  -추인받다:동:1
  +추인받:동:1
   추인적:관:1
  -추인하다:동:1
  +추인하:동:1
   추임새:명:5
   추잉껌:명:1
  -추잡하다:형:2
  +추잡하:형:2
   추장:명:13
   추적:명:29
   추적추적:부:1
  -추적하다:동:40
  +추적하:동:40
   추전:명:1
   추정:명:14
  -추정되다:동:40
  -추정받다:동:1
  +추정되:동:40
  +추정받:동:1
   추정액:명:1
   추정치:명:1
  -추정하다:동:19
  +추정하:동:19
   추종:명:3
   추종자:명:3
  -추종하다:동:4
  +추종하:동:4
   추진:명:98
  -추진되다:동:26
  +추진되:동:26
   추진력:명:14
   추진반:명:2
   추진부장:명:1
  -추진시키다:동:1
  +추진시키:동:1
   추진제:명:1
  -추진하다:동:163
  +추진하:동:163
   추징:명:4
   추징금:명:1
  -추징하다:동:2
  +추징하:동:2
   추천:명:1
   추천:명:26
   추천권자:명:2
  -추천되다:동:4
  -추천받다:동:1
  +추천되:동:4
  +추천받:동:1
   추천사:명:1
   추천서:명:2
  -추천하다:동:19
  +추천하:동:19
   추첨:명:6
   추체:명:1
   추체험:명:3
  -추체험되다:동:1
  +추체험되:동:1
   추초:명:1
   추축국:명:1
   추출:명:9
  -추출되다:동:6
  +추출되:동:6
   추출물:명:3
   추출액:명:1
  -추출하다:동:28
  +추출하:동:28
   추측:명:21
  -추측되다:동:16
  +추측되:동:16
   추측성:명:1
  -추측하다:동:14
  -추켜올리다:동:2
  -추키다:동:2
  +추측하:동:14
  +추켜올리:동:2
  +추키:동:2
   추태:명:6
   추파:명:3
   추풍낙엽:명:2
  -추하다:형:19
  +추하:형:19
   추행:명:4
   추호:명:5
   추후:명:7
  @@ -49793,7 +49793,7 @@
   축구장:명:5
   축구팀:명:2
   축구회:명:1
  -축내다:동:5
  +축내:동:5
   축농증:명:6
   축대:명:9
   축도:명:2
  @@ -49802,34 +49802,34 @@
   축배:명:1
   축법:명:1
   축복:명:11
  -축복되다:동:2
  -축복받다:동:2
  -축복하다:동:4
  +축복되:동:2
  +축복받:동:2
  +축복하:동:4
   축사:명:2
   축사:명:3
   축산:명:17
   축산물:명:9
   축산업:명:2
   축산업자:명:1
  -축산하다:동:1
  +축산하:동:1
   축생:명:1
   축선:명:1
   축성:명:2
  -축성되다:동:1
  +축성되:동:1
   축소:명:51
  -축소되다:동:25
  -축소시키다:동:3
  +축소되:동:25
  +축소시키:동:3
   축소판:명:3
  -축소하다:동:19
  -축시되다:동:1
  +축소하:동:19
  +축시되:동:1
   축음기:명:1
   축의금:명:2
  -축이다:동:6
  +축이:동:6
   축재:명:10
   축재자:명:1
   축적:명:26
  -축적되다:동:17
  -축적하다:동:15
  +축적되:동:17
  +축적하:동:15
   축전:명:3
   축전기:명:3
   축제:명:84
  @@ -49838,27 +49838,27 @@
   축조:명:5
   축조물:명:1
   축조적:명:1
  -축조하다:동:4
  +축조하:동:4
   축지법:명:1
   축척:명:6
   축첩:명:1
   축축이:부:1
  -축축하다:형:15
  -축축해지다:동:2
  +축축하:형:15
  +축축해지:동:2
   축출:명:2
  -축출되다:동:1
  -축출하다:동:3
  +축출되:동:1
  +축출하:동:3
   축포:명:3
   축하:명:30
   축하객:명:1
  -축하다:동:1
  +축하:동:1
   축하단:명:1
  -축하드리다:동:4
  -축하받다:동:1
  +축하드리:동:4
  +축하받:동:1
   축하연:명:2
   축하주:명:1
   축하품:명:1
  -축하하다:동:41
  +축하하:동:41
   축항:명:1
   춘계:명:2
   춘궁기:명:1
  @@ -49875,254 +49875,254 @@
   춘화:명:3
   출가:명:2
   출가:명:24
  -출가시키다:동:1
  +출가시키:동:1
   출가외인:명:4
  -출가하다:동:13
  -출가하다:동:2
  +출가하:동:13
  +출가하:동:2
   출간:명:15
  -출간되다:동:8
  -출간하다:동:9
  -출감하다:동:1
  +출간되:동:8
  +출간하:동:9
  +출감하:동:1
   출강:명:1
  -출강하다:동:3
  -출격하다:동:2
  +출강하:동:3
  +출격하:동:2
   출고:명:1
   출고일:명:2
   출구:명:29
   출국:명:20
  -출국시키다:동:4
  -출국하다:동:5
  +출국시키:동:4
  +출국하:동:5
   출근:명:43
   출근길:명:6
  -출근하다:동:34
  -출금되다:동:1
  -출금하다:동:1
  +출근하:동:34
  +출금되:동:1
  +출금하:동:1
   출납:명:4
   출당:명:2
   출동:명:3
  -출동시키다:동:4
  -출동하다:동:5
  +출동시키:동:4
  +출동하:동:5
   출두:명:9
  -출두하다:동:15
  +출두하:동:15
   출렁:부:1
  -출렁거리다:동:3
  -출렁대다:동:1
  -출렁이다:동:6
  +출렁거리:동:3
  +출렁대:동:1
  +출렁이:동:6
   출력:명:25
   출력기:명:2
  -출력되다:동:1
  -출력시키다:동:1
  -출력하다:동:4
  +출력되:동:1
  +출력시키:동:1
  +출력하:동:4
   출루율:명:2
   출마:명:22
   출마설:명:1
   출마자:명:1
  -출마하다:동:17
  +출마하:동:17
   출몰:명:1
  -출몰하다:동:2
  -출무성하다:형:1
  +출몰하:동:2
  +출무성하:형:1
   출반:명:1
  -출반하다:동:1
  +출반하:동:1
   출발:명:73
  -출발되다:동:2
  +출발되:동:2
   출발법:명:3
   출발선:명:4
  -출발시키다:동:2
  +출발시키:동:2
   출발점:명:31
  -출발하다:동:111
  +출발하:동:111
   출범:명:49
  -출범시키다:동:2
  -출범하다:동:18
  +출범시키:동:2
  +출범하:동:18
   출분:명:1
   출사표:명:4
   출산:명:109
   출산기:명:1
  -출산되다:동:1
  +출산되:동:1
   출산력:명:2
  -출산시키다:동:1
  +출산시키:동:1
   출산아:명:1
   출산율:명:1
   출산자:명:3
  -출산하다:동:12
  +출산하:동:12
   출생:명:19
   출생설:명:2
   출생인:명:1
   출생지:명:2
  -출생하다:동:8
  +출생하:동:8
   출석:명:7
   출석부:명:4
  -출석시키다:동:2
  -출석하다:동:3
  +출석시키:동:2
  +출석하:동:3
   출세:명:24
  -출세시키다:동:1
  +출세시키:동:1
   출세작:명:1
   출세주의:명:1
  -출세하다:동:19
  +출세하:동:19
   출소자:명:1
   출시:명:11
  -출시되다:동:11
  +출시되:동:11
   출시사:명:1
  -출시하다:동:21
  +출시하:동:21
   출신:명:209
   출신고:명:1
   출신자:명:2
   출신지:명:3
   출어:명:4
  -출어하다:동:6
  +출어하:동:6
   출연:명:10
   출연:명:86
   출연금:명:1
   출연료:명:13
  -출연시키다:동:9
  +출연시키:동:9
   출연자:명:10
   출연진:명:7
  -출연하다:동:4
  -출연하다:동:95
  +출연하:동:4
  +출연하:동:95
   출옥:명:1
   출원:명:2
   출원인:명:2
  -출원하다:동:5
  +출원하:동:5
   출입:명:50
   출입구:명:7
   출입국:명:7
   출입문:명:29
  -출입하다:동:9
  -출입항하다:동:1
  +출입하:동:9
  +출입항하:동:1
   출자:명:14
   출자금:명:1
   출자액:명:1
   출자자:명:2
  -출자하다:동:12
  +출자하:동:12
   출장:명:11
   출장:명:32
   출장비:명:1
   출장소:명:4
  -출장하다:동:2
  +출장하:동:2
   출전:명:17
   출전비:명:1
  -출전시키다:동:1
  -출전하다:동:26
  +출전시키:동:1
  +출전하:동:26
   출정:명:1
  -출정시키다:동:1
  +출정시키:동:1
   출정식:명:2
  -출정하다:동:1
  +출정하:동:1
   출제:명:19
  -출제되다:동:2
  -출제하다:동:12
  -출중하다:형:3
  +출제되:동:2
  +출제하:동:12
  +출중하:형:3
   출처:명:21
  -출출하다:형:6
  -출출해지다:동:1
  +출출하:형:6
  +출출해지:동:1
   출타:명:2
   출토:명:3
  -출토되다:동:7
  +출토되:동:7
   출퇴근:명:18
   출퇴근길:명:1
  -출퇴근하다:동:7
  +출퇴근하:동:7
   출판:명:31
   출판가:명:2
   출판계:명:2
   출판국:명:1
  -출판되다:동:13
  +출판되:동:13
   출판물:명:3
   출판부:명:3
   출판사:명:42
   출판업주:명:1
   출판인:명:3
  -출판하다:동:13
  +출판하:동:13
   출품:명:2
  -출품되다:동:2
  +출품되:동:2
   출품작:명:7
  -출품하다:동:11
  +출품하:동:11
   출하:명:8
  -출하되다:동:2
  +출하되:동:2
   출하량:명:1
  -출하하다:동:3
  +출하하:동:3
   출항:명:18
   출항주:명:1
  -출항하다:동:18
  -출향관하다:동:1
  +출항하:동:18
  +출향관하:동:1
   출현:명:40
  -출현시키다:동:1
  -출현하다:동:31
  +출현시키:동:1
  +출현하:동:31
   출혈:명:19
  -출혈되다:동:1
  +출혈되:동:1
   출혈열:명:3
   춤:명:157
   춤꾼:명:4
   춤사위:명:5
   춤장이:명:1
  -춤추다:동:36
  -춥다:형:137
  +춤추:동:36
  +춥:형:137
   충격:명:1
   충격:명:143
   충격력:명:1
  -충격받다:동:1
  -충격스럽다:형:1
  +충격받:동:1
  +충격스럽:형:1
   충격식:명:1
   충격적:관:1
   충격적:명:38
   충격파:명:1
   충고:명:21
  -충고하다:동:7
  -충당되다:동:3
  -충당하다:동:8
  +충고하:동:7
  +충당되:동:3
  +충당하:동:8
   충돌:명:46
   충돌대:명:3
  -충돌시키다:동:1
  -충돌하다:동:17
  +충돌시키:동:1
  +충돌하:동:17
   충동:명:47
   충동구매:명:2
   충동적:명:13
   충동질:명:1
  -충동질하다:동:2
  +충동질하:동:2
   충량:명:1
   충렬탑:명:1
   충만:명:2
  -충만되다:동:1
  -충만하다:형:7
  +충만되:동:1
  +충만하:형:7
   충분조건:명:1
  -충분하다:형:140
  +충분하:형:140
   충분히:부:191
   충상호형:명:1
   충성:명:7
   충성도:명:4
  -충성스럽다:형:2
  +충성스럽:형:2
   충성심:명:9
  -충성하다:동:10
  +충성하:동:10
   충신:명:2
   충신둥이:명:1
   충실:명:1
   충실성:명:3
  -충실하다:형:18
  -충실하다:형:28
  +충실하:형:18
  +충실하:형:28
   충실히:부:6
   충실히:부:8
   충심:명:2
   충원:명:2
  -충원되다:동:1
  -충원하다:동:3
  +충원되:동:1
  +충원하:동:3
   충일:명:1
  -충일하다:동:2
  +충일하:동:2
   충적세:명:1
   충적지:명:1
   충전:명:3
  -충전받다:동:1
  +충전받:동:1
   충전식:명:1
  -충전하다:동:1
  +충전하:동:1
   충절:명:1
   충정:명:1
   충족:명:22
   충족감:명:5
  -충족되다:동:7
  +충족되:동:7
   충족성:명:1
  -충족시키다:동:36
  +충족시키:동:36
   충족적:관:1
  -충족하다:동:3
  -충직하다:형:4
  -충천하다:동:1
  +충족하:동:3
  +충직하:형:4
  +충천하:동:1
   충치:명:1
  -충혈되다:동:13
  +충혈되:동:13
   충효:명:4
   췌장:명:3
   췌장암:명:1
  @@ -50131,16 +50131,16 @@
   취:명:2
   취객:명:11
   취급:명:25
  -취급당하다:동:3
  -취급되다:동:7
  +취급당하:동:3
  +취급되:동:7
   취급률:명:6
  -취급받다:동:2
  -취급하다:동:39
  +취급받:동:2
  +취급하:동:39
   취기:명:12
   취나물:명:6
   취득:명:12
   취득자:명:2
  -취득하다:동:11
  +취득하:동:11
   취락:명:21
   취락지:명:3
   취로:명:2
  @@ -50152,58 +50152,58 @@
   취사도구:명:1
   취사선택:명:2
   취사장:명:1
  -취사하다:동:1
  +취사하:동:1
   취생몽사:명:1
   취소:명:30
  -취소되다:동:10
  -취소하다:동:34
  +취소되:동:10
  +취소하:동:34
   취약:명:2
   취약성:명:5
   취약점:명:2
  -취약하다:형:14
  -취약해지다:동:2
  +취약하:형:14
  +취약해지:동:2
   취업:명:34
   취업난:명:1
  -취업되다:동:1
  +취업되:동:1
   취업률:명:4
   취업반:명:1
   취업자:명:3
  -취업하다:동:7
  +취업하:동:7
   취임:명:67
   취임사:명:2
   취임식:명:24
   취임일:명:1
  -취임하다:동:25
  +취임하:동:25
   취입:명:1
  -취입하다:동:3
  +취입하:동:3
   취재:명:37
   취재반:명:2
   취재석:명:2
   취재원:명:1
   취재지:명:1
   취재진:명:4
  -취재하다:동:17
  +취재하:동:17
   취조:명:3
   취중:명:2
   취지:명:60
   취지문:명:1
   취직:명:39
   취직자리:명:1
  -취직하다:동:13
  +취직하:동:13
   취침:명:6
   취침나팔:명:1
  -취택하다:동:1
  +취택하:동:1
   취하:명:1
  -취하다:동:206
  -취하다:동:98
  -취하되다:동:3
  -취하여지다:동:1
  -취하하다:동:3
  +취하:동:206
  +취하:동:98
  +취하되:동:3
  +취하여지:동:1
  +취하하:동:3
   취학:명:2
   취학률:명:1
  -취합하다:동:2
  +취합하:동:2
   취항:명:5
  -취해지다:동:14
  +취해지:동:14
   취향:명:51
   츄베르사:명:1
   측:의:464
  @@ -50219,14 +50219,14 @@
   측백나무:명:5
   측우기:명:5
   측은지심:명:1
  -측은하다:형:7
  +측은하:형:7
   측정:명:54
   측정기:명:13
  -측정되다:동:5
  +측정되:동:5
   측정망:명:3
   측정소:명:6
   측정치:명:1
  -측정하다:동:57
  +측정하:동:57
   층:명:244
   층:의:6
   층계:명:14
  @@ -50240,59 +50240,59 @@
   층층시하:명:1
   층층이:부:2
   층층이꽃:명:1
  -층하하다:동:1
  +층하하:동:1
   치:감:7
   치:명:4
   치:의:20
   치:의:23
  -치고받다:동:5
  +치고받:동:5
   치골:명:2
   치과:명:18
   치과의:명:1
   치근:명:2
  -치근거리다:동:1
  +치근거리:동:1
   치근막:명:8
   치기:명:5
  -치기만만하다:형:1
  -치다:동:1
  -치다:동:13
  -치다:동:2
  -치다:동:24
  -치다:동:37
  -치다:동:5
  -치다:동:530
  -치다:동:7
  -치다:동:7
  -치다:동:7
  -치다:동:8
  -치다:동:91
  +치기만만하:형:1
  +치:동:1
  +치:동:13
  +치:동:2
  +치:동:24
  +치:동:37
  +치:동:5
  +치:동:530
  +치:동:7
  +치:동:7
  +치:동:7
  +치:동:8
  +치:동:91
   치다:보:1
   치다꺼리:명:2
  -치닫다:동:21
  -치달리다:동:1
  -치대다:동:6
  +치닫:동:21
  +치달리:동:1
  +치대:동:6
   치덩굴:명:1
   치도곤:명:2
  -치돌리다:동:1
  -치뜨다:동:1
  -치러지다:동:39
  -치렁거리다:동:1
  +치돌리:동:1
  +치뜨:동:1
  +치러지:동:39
  +치렁거리:동:1
   치렁치렁:부:1
  -치렁치렁하다:동:3
  +치렁치렁하:동:3
   치료:명:149
   치료가:명:1
  -치료되다:동:2
  -치료받다:동:1
  +치료되:동:2
  +치료받:동:1
   치료법:명:15
   치료비:명:6
   치료실:명:1
   치료자:명:1
   치료제:명:2
  -치료하다:동:54
  -치루어지다:동:1
  -치뤄지다:동:1
  -치르다:동:167
  -치르어지다:동:1
  +치료하:동:54
  +치루어지:동:1
  +치뤄지:동:1
  +치르:동:167
  +치르어지:동:1
   치마:명:88
   치마꼬리:명:2
   치마선:명:1
  @@ -50311,25 +50311,25 @@
   치명타:명:4
   치모:명:1
   치목:명:1
  -치밀다:동:36
  -치밀하다:형:33
  -치받다:동:1
  -치받다:동:1
  +치밀:동:36
  +치밀하:형:33
  +치받:동:1
  +치받:동:1
   치부:명:2
   치부:명:5
  -치부되다:동:11
  +치부되:동:11
   치부책:명:3
  -치부하다:동:19
  -치뻗치다:동:1
  +치부하:동:19
  +치뻗치:동:1
   치사:명:3
   치사:명:3
   치사상:명:1
  -치사스럽다:형:1
  +치사스럽:형:1
   치사율:명:2
  -치사하다:동:1
  -치사하다:형:1
  +치사하:동:1
  +치사하:형:1
   치세:명:1
  -치솟다:동:28
  +치솟:동:28
   치수:명:4
   치수:명:4
   치신경:명:1
  @@ -50341,48 +50341,48 @@
   치어스:감:1
   치열:명:2
   치열:명:2
  -치열하다:형:69
  -치열해지다:동:9
  +치열하:형:69
  +치열해지:동:9
   치와와:명:1
   치외:명:1
   치욕:명:8
  -치욕스럽다:형:5
  -치우다:동:66
  +치욕스럽:형:5
  +치우:동:66
   치우다:보:15
  -치우치다:동:25
  -치워지다:동:7
  +치우치:동:25
  +치워지:동:7
   치유:명:15
  -치유되다:동:7
  +치유되:동:7
   치유력:명:2
   치유책:명:3
  -치유하다:동:13
  +치유하:동:13
   치의:명:1
  -치이다:동:1
  -치이다:동:3
  -치이다:동:8
  +치이:동:1
  +치이:동:3
  +치이:동:8
   치이파오:명:2
   치자:명:1
   치장:명:7
  -치장되다:동:2
  -치장하다:동:8
  +치장되:동:2
  +치장하:동:8
   치적:명:5
   치정:명:1
  -치졸하다:형:1
  +치졸하:형:1
   치중:명:3
  -치중되다:동:1
  -치중하다:동:19
  +치중되:동:1
  +치중하:동:19
   치즈:명:108
   치질:명:3
   치커리:명:2
  -치켜들다:동:10
  -치켜떠지다:동:1
  -치켜뜨다:동:4
  -치켜세우다:동:4
  -치켜세워지다:동:1
  -치켜지다:동:1
  +치켜들:동:10
  +치켜떠지:동:1
  +치켜뜨:동:4
  +치켜세우:동:4
  +치켜세워지:동:1
  +치켜지:동:1
   치클:명:4
   치키:부:3
  -치키다:동:6
  +치키:동:6
   치킨:명:5
   치킨볼:명:2
   치타:명:2
  @@ -50390,23 +50390,23 @@
   치통:명:11
   치하:명:11
   치한:명:1
  -치환하다:동:1
  +치환하:동:1
   칙:부:1
   칙사:명:1
   칙서:명:1
   칙칙:부:2
  -칙칙하다:형:5
  -칙칙해지다:동:1
  +칙칙하:형:5
  +칙칙해지:동:1
   친가:명:3
   친고죄:명:6
   친교:명:7
  -친교하다:동:1
  -친구:명:1,208
  +친교하:동:1
  +친구:명:1208
   친구지간:명:1
   친귀족적:관:2
   친근감:명:7
  -친근하다:형:17
  -친근해지다:동:1
  +친근하:형:17
  +친근해지:동:1
   친동생:명:6
   친딸:명:1
   친목:명:12
  @@ -50414,8 +50414,8 @@
   친목회:명:3
   친밀감:명:6
   친밀도:명:5
  -친밀하다:형:6
  -친밀해지다:동:3
  +친밀하:형:6
  +친밀해지:동:3
   친부모:명:1
   친분:명:7
   친서:명:1
  @@ -50426,10 +50426,10 @@
   친손자:명:2
   친숙:명:1
   친숙성:명:2
  -친숙하다:형:21
  -친숙해지다:동:8
  +친숙하:형:21
  +친숙해지:동:8
   친아버지:명:2
  -친애하다:동:1
  +친애하:동:1
   친야:명:1
   친어머니:명:2
   친어무니:명:1
  @@ -50447,8 +50447,8 @@
   친자식:명:1
   친잠례:명:1
   친절:명:28
  -친절하다:형:51
  -친절해지다:동:2
  +친절하:형:51
  +친절해지:동:2
   친절히:부:1
   친정:명:3
   친정:명:45
  @@ -50461,8 +50461,8 @@
   친지:명:20
   친척:명:88
   친친:부:2
  -친하다:형:64
  -친해지다:동:20
  +친하:형:64
  +친해지:동:20
   친형:명:5
   친형제:명:1
   친화:명:3
  @@ -50501,15 +50501,15 @@
   칠천만:관:1
   칠첩반상:명:1
   칠촌:명:1
  -칠칠맞다:형:1
  -칠칠하다:형:1
  +칠칠맞:형:1
  +칠칠하:형:1
   칠판:명:14
   칠팔:관:4
   칠팔십:수:1
   칠팔월:명:1
   칠팔월생:명:1
  -칠하다:동:34
  -칠해지다:동:7
  +칠하:동:34
  +칠해지:동:7
   칠향계탕:명:1
   칠흑:명:9
   칡:명:4
  @@ -50520,12 +50520,12 @@
   침:명:13
   침:명:68
   침공:명:15
  -침공하다:동:4
  +침공하:동:4
   침구:명:1
   침구:명:1
   침구류:명:1
   침낭:명:2
  -침노하다:동:2
  +침노하:동:2
   침대:명:136
   침대맡:명:2
   침대보:명:1
  @@ -50533,92 +50533,92 @@
   침략:명:1
   침략:명:55
   침략기:명:4
  -침략당하다:동:2
  +침략당하:동:2
   침략성:명:1
   침략자:명:7
   침략적:명:1
  -침략하다:동:20
  +침략하:동:20
   침모:명:3
   침몰:명:1
  -침몰되다:동:2
  -침몰시키다:동:2
  -침몰하다:동:4
  +침몰되:동:2
  +침몰시키:동:2
  +침몰하:동:4
   침묵:명:87
   침묵병:명:1
   침묵증:명:1
  -침묵하다:동:13
  +침묵하:동:13
   침범:명:3
  -침범하다:동:4
  +침범하:동:4
   침봉:명:1
   침상:명:11
   침선:명:1
   침수:명:1
   침수:명:2
  -침수되다:동:1
  +침수되:동:1
   침술:명:1
   침식:명:1
   침식:명:3
   침식:명:7
   침식곡:명:1
  -침식되다:동:1
  -침식되다:동:3
  +침식되:동:1
  +침식되:동:3
   침실:명:28
   침염:명:2
   침엽수:명:6
   침엽수림:명:10
  -침울하다:형:12
  -침울해지다:동:1
  +침울하:형:12
  +침울해지:동:1
   침울히:부:1
  -침윤되다:동:2
  +침윤되:동:2
   침입:명:30
   침입자:명:4
   침입죄:명:1
  -침입하다:동:10
  +침입하:동:10
   침잠:명:4
  -침잠하다:동:5
  -침전되다:동:2
  +침잠하:동:5
  +침전되:동:2
   침전물:명:1
  -침전하다:동:2
  -침착되다:동:1
  -침착하다:형:23
  +침전하:동:2
  +침착되:동:1
  +침착하:형:23
   침체:명:33
   침체기:명:1
  -침체되다:동:14
  -침체하다:동:3
  -침침하다:형:3
  -침침해지다:동:2
  +침체되:동:14
  +침체하:동:3
  +침침하:형:3
  +침침해지:동:2
   침탈:명:7
  -침통하다:형:9
  +침통하:형:9
   침투:명:40
  -침투되다:동:2
  -침투시키다:동:2
  -침투하다:동:5
  +침투되:동:2
  +침투시키:동:2
  +침투하:동:5
   침팬지:명:3
   침하:명:5
   침해:명:72
  -침해당하다:동:4
  -침해되다:동:6
  -침해받다:동:2
  +침해당하:동:4
  +침해되:동:6
  +침해받:동:2
   침해자:명:1
   침해죄:명:1
  -침해하다:동:19
  +침해하:동:19
   칩:명:25
   칩거:명:5
  -칩거하다:동:3
  +칩거하:동:3
   칫솔:명:19
   칫솔질:명:1
   칭송:명:5
  -칭송되다:동:1
  -칭송받다:동:2
  -칭송하다:동:3
  -칭얼대다:동:2
  +칭송되:동:1
  +칭송받:동:2
  +칭송하:동:3
  +칭얼대:동:2
   칭제:명:7
   칭찬:명:71
  -칭찬받다:동:10
  -칭찬하다:동:35
  +칭찬받:동:10
  +칭찬하:동:35
   칭칭:감:2
   칭칭:부:4
  -칭하다:동:12
  +칭하:동:12
   칭호:명:16
   카:감:1
   카:명:15
  @@ -50627,12 +50627,12 @@
   카네이션:명:1
   카논:명:1
   카니발:명:1
  -카다:동:4
  +카:동:4
   카드:명:100
   카드놀이:명:5
   카드제:명:1
   카라반:명:1
  -카랑카랑하다:형:2
  +카랑카랑하:형:2
   카레:명:16
   카레라이스:명:3
   카레이서:명:1
  @@ -50706,43 +50706,43 @@
   칼집:명:1
   칼집:명:8
   칼춤:명:2
  -칼칼하다:형:1
  -칼칼해지다:동:1
  +칼칼하:형:1
  +칼칼해지:동:1
   칼쿨리:명:1
   캄캄절벽:명:1
  -캄캄하다:형:23
  -캄캄해지다:동:6
  +캄캄하:형:23
  +캄캄해지:동:6
   캉캉:명:1
  -캐내다:동:14
  +캐내:동:14
   캐넌:명:2
   캐넌포:명:1
  -캐다:동:51
  +캐:동:51
   캐드:명:1
   캐러멜:명:6
   캐럴:명:3
   캐리어:명:2
   캐리커처:명:11
   캐릭터:명:30
  -캐묻다:동:9
  +캐묻:동:9
   캐비닛:명:4
   캐비닛식:명:1
   캐비아:명:2
   캐빈:명:8
   캐스터:명:10
   캐스팅:명:13
  -캐스팅되다:동:5
  -캐스팅하다:동:2
  -캐어묻다:동:1
  +캐스팅되:동:5
  +캐스팅하:동:2
  +캐어묻:동:1
   캐주얼:명:10
  -캐주얼하다:형:1
  +캐주얼하:형:1
   캐첩:명:1
   캐츠:명:1
   캐치:명:1
   캐치프레이즈:명:7
  -캐치하다:동:1
  +캐치하:동:1
   캐터필러:명:2
   캑:부:2
  -캑캑거리다:동:1
  +캑캑거리:동:1
   캔:명:30
   캔디:명:1
   캔버스:명:12
  @@ -50765,23 +50765,23 @@
   캥거루:명:2
   캭:부:1
   커닝:명:6
  -커닝하다:동:1
  -커다랗다:형:254
  +커닝하:동:1
  +커다랗:형:254
   커리어:명:1
   커리큘럼:명:1
   커뮤니케이션:명:111
  -커뮤니케이션하다:동:1
  +커뮤니케이션하:동:1
   커미셔너:명:1
   커미션:명:9
   커버:명:2
  -커버되다:동:1
  -커버하다:동:10
  +커버되:동:1
  +커버하:동:10
   커브:명:11
   커서:명:3
  -커지다:동:151
  +커지:동:151
   커터:명:5
   커트:명:4
  -커트하다:동:1
  +커트하:동:1
   커튼:명:30
   커튼레일:명:1
   커튼집:명:3
  @@ -50806,7 +50806,7 @@
   컨테이너:명:6
   컨테이너선:명:1
   컨트롤:명:14
  -컨트롤하다:동:3
  +컨트롤하:동:3
   컨트리:명:1
   컬:명:2
   컬러:명:41
  @@ -50816,13 +50816,13 @@
   컬러화:명:1
   컬렉션:명:5
   컬트:명:3
  -컬하다:동:1
  +컬하:동:1
   컴:명:4
   컴맹:명:1
   컴백:명:1
  -컴백하다:동:3
  -컴커무레하다:형:1
  -컴컴하다:형:5
  +컴백하:동:3
  +컴커무레하:형:1
  +컴컴하:형:5
   컴파일러:명:1
   컴퍼스:명:1
   컴퓨터:명:675
  @@ -50830,8 +50830,8 @@
   컴퓨터실:명:2
   컴퓨터업계:명:1
   컴퓨터업체:명:2
  -컴퓨터화되다:동:3
  -컴퓨트하다:동:1
  +컴퓨터화되:동:3
  +컴퓨트하:동:1
   컵:명:162
   컵케이크:명:1
   컷:명:4
  @@ -50845,15 +50845,15 @@
   케이에스:명:3
   케이크:명:11
   케첩:명:2
  -케케묵다:형:2
  +케케묵:형:2
   케키:명:7
   켐프레이션:명:1
  -켕기다:동:5
  +켕기:동:5
   켜:명:4
  -켜다:동:13
  -켜다:동:5
  -켜다:동:89
  -켜지다:동:45
  +켜:동:13
  +켜:동:5
  +켜:동:89
  +켜지:동:45
   켜켜로:부:1
   켜켜이:부:3
   켤레:의:10
  @@ -50868,11 +50868,11 @@
   코드:명:1
   코드:명:2
   코드:명:97
  -코드화하다:동:1
  +코드화하:동:1
   코디:명:1
   코디네이터:명:2
   코딩:명:3
  -코딩하다:동:2
  +코딩하:동:2
   코딱지:명:7
   코뚜레:명:2
   코란:명:1
  @@ -50885,7 +50885,7 @@
   코미디물:명:1
   코미디언:명:9
   코믹:명:6
  -코믹하다:형:5
  +코믹하:형:5
   코밑:명:6
   코밑수염:명:2
   코볼:명:1
  @@ -50909,7 +50909,7 @@
   코치:명:35
   코치레:명:2
   코치론:명:1
  -코치하다:동:2
  +코치하:동:2
   코칭스태프:명:5
   코카인:명:1
   코코넛:명:1
  @@ -50952,7 +50952,7 @@
   콤비네이션:명:1
   콤팩트디스크:명:3
   콤플렉스:명:74
  -콤플렉스화하다:동:1
  +콤플렉스화하:동:1
   콧구멍:명:4
   콧기름:명:1
   콧김:명:5
  @@ -50997,7 +50997,7 @@
   콸콸:부:4
   쾅:부:11
   쾅쾅:부:3
  -쾅쾅거리다:동:2
  +쾅쾅거리:동:2
   쾌:명:1
   쾌감:명:50
   쾌거:명:1
  @@ -51008,36 +51008,36 @@
   쾌자:명:2
   쾌재:명:6
   쾌적감:명:1
  -쾌적하다:형:21
  +쾌적하:형:21
   쾌지나:감:2
   쾌차:명:1
   쾌청:명:1
  -쾌청하다:형:3
  +쾌청하:형:3
   쾌활:명:1
  -쾌활하다:형:3
  +쾌활하:형:3
   쾌히:부:3
   쿠데타:명:32
   쿠데타적:관:4
   쿠데타적:명:1
  -쿠려지다:동:1
  +쿠려지:동:1
   쿠션:명:5
   쿠키:명:2
   쿠킹:명:3
   쿡:명:2
   쿡:부:9
   쿡쿡:부:7
  -쿡쿡거리다:동:2
  +쿡쿡거리:동:2
   쿨:명:2
   쿨럭쿨럭:부:1
  -쿨쩍대다:동:1
  +쿨쩍대:동:1
   쿨쿨:부:1
   쿨투레:명:1
  -쿨하다:형:1
  -쿰쿰하다:형:1
  +쿨하:형:1
  +쿰쿰하:형:1
   쿵:부:6
  -쿵쾅거리다:동:4
  +쿵쾅거리:동:4
   쿵쿵:부:7
  -쿵쿵거리다:동:1
  +쿵쿵거리:동:1
   쿼터:명:3
   쿼터제:명:1
   쿼티:명:7
  @@ -51045,7 +51045,7 @@
   퀘리:명:2
   퀴어:명:4
   퀴즈:명:7
  -퀴퀴하다:형:3
  +퀴퀴하:형:3
   퀵:명:1
   퀼로트형:명:1
   큐:명:11
  @@ -51053,10 +51053,10 @@
   큐시:명:1
   큐시트:명:2
   크기:명:214
  -크나크다:형:11
  +크나크:형:11
   크낙새:명:1
  -크다:동:78
  -크다:형:2,835
  +크:동:78
  +크:형:2835
   크라우칭:명:4
   크래바스:명:3
   크래커:명:4
  @@ -51075,7 +51075,7 @@
   크로켓:명:4
   크롤:명:1
   크루아상:명:3
  -크르릉거리다:동:2
  +크르릉거리:동:2
   크리스마스:명:14
   크리스마스이브:명:1
   크리스마스트리:명:1
  @@ -51120,7 +51120,7 @@
   큰살림:명:1
   큰서방님:명:1
   큰소리:명:15
  -큰소리치다:동:9
  +큰소리치:동:9
   큰손:명:4
   큰스님:명:1
   큰아들:명:15
  @@ -51138,12 +51138,12 @@
   큰일:명:1
   큰일:명:97
   큰절:명:22
  -큰절하다:동:4
  +큰절하:동:4
   큰족제비고사리:명:1
   큰집:명:4
   큰창자:명:1
   큰처남:명:1
  -큰코다치다:동:2
  +큰코다치:동:2
   큰할아버지:명:1
   큰형:명:10
   클:명:4
  @@ -51159,49 +51159,49 @@
   클레임:명:1
   클렌저:명:15
   클렌징:명:24
  -클렌징하다:동:3
  +클렌징하:동:3
   클로렐라:명:2
   클로즈업:명:1
  -클로즈업되다:동:3
  -클로즈업시키다:동:1
  -클로즈업하다:동:1
  +클로즈업되:동:3
  +클로즈업시키:동:1
  +클로즈업하:동:1
   클로징:명:1
   클리너:명:1
   클리닉:명:16
   클릭:명:2
  -클릭하다:동:1
  +클릭하:동:1
   클린업:명:2
   클린테크놀로지:명:1
   클립:명:1
  -큼지막하다:형:6
  -큼직큼직하다:형:5
  -큼직하다:형:12
  +큼지막하:형:6
  +큼직큼직하:형:5
  +큼직하:형:12
   큼큼:부:1
   킁킁:부:1
  -킁킁거리다:동:5
  +킁킁거리:동:5
   키:명:1
   키:명:16
   키:명:2
   키:명:204
   키다리:명:1
  -키득거리다:동:1
  -키들거리다:동:2
  +키득거리:동:1
  +키들거리:동:2
   키보드:명:8
   키스:명:31
  -키스하다:동:3
  -키우다:동:227
  -키워지다:동:2
  +키스하:동:3
  +키우:동:227
  +키워지:동:2
   키위:명:4
   키조개:명:2
  -키질하다:동:1
  +키질하:동:1
   키치:명:1
   키친타월:명:1
   키커:명:4
   키핑력:명:1
   킥:명:31
   킥킥:부:4
  -킥킥거리다:동:3
  -킥킥대다:동:5
  +킥킥거리:동:3
  +킥킥대:동:5
   킨트:명:2
   킬로:의:16
   킬로그램:의:76
  @@ -51213,65 +51213,65 @@
   킬로와트:의:11
   킬로칼로리:의:7
   킬로헤르츠:의:2
  -킬킬대다:동:1
  +킬킬대:동:1
   타:관:26
   타:명:1
   타:명:1
   타각:명:2
   타개:명:4
  -타개되다:동:1
  +타개되:동:1
   타개책:명:3
  -타개하다:동:4
  +타개하:동:4
   타건:명:4
   타격:명:42
   타격대:명:1
  -타격받다:동:3
  +타격받:동:3
   타결:명:12
  -타결되다:동:6
  +타결되:동:6
   타결책:명:1
  -타결하다:동:3
  -타계하다:동:3
  -타고나다:동:44
  +타결하:동:3
  +타계하:동:3
  +타고나:동:44
   타관송치:명:2
   타교:명:1
   타구:명:1
   타국:명:5
   타국만리:명:1
   타군:명:1
  -타기시하다:동:1
  +타기시하:동:1
   타깃:명:1
   타닌산:명:1
  -타다:동:1
  -타다:동:1
  -타다:동:103
  -타다:동:12
  -타다:동:27
  -타다:동:3
  -타다:동:33
  -타다:동:736
  +타:동:1
  +타:동:1
  +타:동:103
  +타:동:12
  +타:동:27
  +타:동:3
  +타:동:33
  +타:동:736
   타닥:부:2
   타당:명:4
   타당성:명:30
  -타당하다:형:35
  +타당하:형:35
   타도:명:7
  -타도되다:동:1
  -타도하다:동:2
  -타들다:동:8
  +타도되:동:1
  +타도하:동:2
  +타들:동:8
   타락:명:39
   타락상:명:1
  -타락시키다:동:7
  +타락시키:동:7
   타락죽:명:1
  -타락하다:동:23
  +타락하:동:23
   타령:명:23
  -타령하다:동:1
  +타령하:동:1
   타르:명:1
   타르타르소스:명:1
   타면:명:3
   타박:명:2
  -타박받다:동:1
  +타박받:동:1
   타박상:명:3
   타박타박:부:2
  -타박하다:동:2
  +타박하:동:2
   타블라:명:1
   타블로:명:1
   타블로이드판:명:1
  @@ -51283,16 +51283,16 @@
   타산지석:명:3
   타살:명:10
   타살:명:4
  -타살되다:동:1
  -타살하다:동:1
  +타살되:동:1
  +타살하:동:1
   타성:명:6
   타성적:관:1
   타성적:명:1
  -타성화되다:동:1
  +타성화되:동:1
   타아:명:1
   타악기:명:1
   타액선:명:2
  -타오르다:동:34
  +타오르:동:34
   타운:명:2
   타원:명:3
   타원형:명:9
  @@ -51305,7 +51305,7 @@
   타의:명:6
   타의적:명:1
   타이:명:3
  -타이르다:동:21
  +타이르:동:21
   타이머:명:1
   타이밍:명:5
   타이어:명:6
  @@ -51317,7 +51317,7 @@
   타이프:명:1
   타이프라이터:명:1
   타이핑:명:3
  -타이핑하다:동:1
  +타이핑하:동:1
   타인:명:48
   타일:명:8
   타임:명:6
  @@ -51331,29 +51331,29 @@
   타자기:명:23
   타자법:명:1
   타자수:명:1
  -타작하다:동:1
  +타작하:동:1
   타전:명:1
  -타전하다:동:1
  +타전하:동:1
   타점:명:4
   타조:명:3
   타종:명:2
   타종수:명:5
   타지:명:3
   타지방:명:3
  -타진하다:동:5
  +타진하:동:5
   타처:명:2
   타천:명:1
   타칭:명:1
   타파:명:4
  -타파되다:동:2
  -타파하다:동:11
  +타파되:동:2
  +타파하:동:11
   타향:명:3
   타향살이:명:1
   타협:명:27
   타협안:명:1
   타협적:관:4
   타협점:명:2
  -타협하다:동:12
  +타협하:동:12
   탁:부:34
   탁견:명:1
   탁구:명:14
  @@ -51364,7 +51364,7 @@
   탁류:명:1
   탁발:명:1
   탁발식:명:1
  -탁본하다:동:1
  +탁본하:동:1
   탁상:명:3
   탁상공론:명:1
   탁상시계:명:3
  @@ -51376,12 +51376,12 @@
   탁아원:명:2
   탁엽:명:1
   탁월:명:2
  -탁월하다:형:43
  +탁월하:형:43
   탁자:명:42
   탁주:명:2
   탁탁:부:9
  -탁하다:형:9
  -탁해지다:동:1
  +탁하:형:9
  +탁해지:동:1
   탄:명:3
   탄:명:5
   탄가루:명:1
  @@ -51396,48 +51396,48 @@
   탄력적:관:1
   탄력적:명:3
   탄로:명:2
  -탄복하다:동:4
  +탄복하:동:4
   탄산:명:1
   탄산가스:명:12
   탄산수:명:1
   탄산음료:명:4
   탄생:명:50
  -탄생되다:동:2
  -탄생시키다:동:14
  +탄생되:동:2
  +탄생시키:동:14
   탄생일:명:3
   탄생지:명:1
  -탄생하다:동:51
  +탄생하:동:51
   탄성:명:1
   탄성:명:10
   탄성파:명:1
   탄소:명:7
   탄수화물:명:7
   탄식:명:9
  -탄식하다:동:8
  +탄식하:동:8
   탄압:명:48
  -탄압받다:동:1
  -탄압하다:동:8
  +탄압받:동:1
  +탄압하:동:8
   탄약실:명:3
   탄원:명:1
   탄원서:명:3
  -탄원하다:동:2
  +탄원하:동:2
   탄재:명:1
   탄저병:명:1
   탄전:명:4
   탄좌:명:2
   탄탄대로:명:1
  -탄탄하다:형:15
  +탄탄하:형:15
   탄탄히:부:1
  -탄하다:동:2
  +탄하:동:2
   탄핵:명:6
   탄핵권:명:1
  -탄핵하다:동:1
  +탄핵하:동:1
   탄화수소:명:1
   탈:명:20
   탈:명:6
  -탈각하다:동:1
  +탈각하:동:1
   탈것:명:4
  -탈고하다:동:1
  +탈고하:동:1
   탈곡기:명:1
   탈골:명:3
   탈구:명:2
  @@ -51449,131 +51449,131 @@
   탈네모꼴:명:5
   탈놀이:명:1
   탈당:명:8
  -탈당하다:동:2
  +탈당하:동:2
   탈대권:명:1
   탈락:명:2
  -탈락되다:동:3
  +탈락되:동:3
   탈락률:명:1
  -탈락시키다:동:2
  +탈락시키:동:2
   탈락자:명:7
  -탈락하다:동:17
  +탈락하:동:17
   탈루:명:2
   탈모:명:1
   탈모증:명:2
   탈바꿈:명:2
  -탈바꿈하다:동:8
  +탈바꿈하:동:8
   탈법:명:17
   탈법적:관:4
   탈법적:명:1
   탈북:명:2
   탈북자:명:4
   탈색:명:1
  -탈색되다:동:1
  +탈색되:동:1
   탈선:명:10
  -탈선하다:동:1
  +탈선하:동:1
   탈성별화:명:1
   탈세:명:18
   탈세왕:명:1
  -탈세하다:동:2
  -탈속하다:동:1
  +탈세하:동:2
  +탈속하:동:1
   탈수:명:1
   탈수기:명:1
   탈영:명:2
   탈영병:명:2
   탈옥:명:1
   탈옥수:명:1
  -탈옥하다:동:1
  +탈옥하:동:1
   탈의실:명:1
   탈이념:명:1
   탈일상성:명:1
   탈점:명:3
  -탈점하다:동:1
  +탈점하:동:1
   탈정치적:관:1
   탈정치화:명:1
   탈주:명:12
   탈주자:명:1
  -탈주하다:동:2
  +탈주하:동:2
   탈진:명:1
  -탈진하다:동:2
  +탈진하:동:2
   탈집단주의:명:1
   탈출:명:26
   탈출구:명:7
   탈출기:명:2
  -탈출시키다:동:1
  +탈출시키:동:1
   탈출자:명:1
  -탈출하다:동:31
  +탈출하:동:31
   탈춤:명:13
   탈취:명:1
  -탈취당하다:동:2
  -탈취하다:동:10
  +탈취당하:동:2
  +탈취하:동:10
   탈카페인:명:3
   탈탈:부:1
   탈퇴:명:27
  -탈퇴시키다:동:1
  -탈퇴하다:동:8
  +탈퇴시키:동:1
  +탈퇴하:동:8
   탈퇴형:명:9
   탈피:명:6
  -탈피하다:동:23
  +탈피하:동:23
   탈환:명:1
  -탈환하다:동:1
  +탈환하:동:1
   탈황:명:1
   탐:명:1
   탐관오리:명:1
   탐구:명:5
   탐구:명:70
   탐구심:명:3
  -탐구하다:동:15
  -탐구하다:동:7
  -탐나다:동:1
  -탐내다:동:5
  +탐구하:동:15
  +탐구하:동:7
  +탐나:동:1
  +탐내:동:5
   탐닉:명:1
  -탐닉되다:동:1
  -탐닉하다:동:3
  -탐독하다:동:4
  +탐닉되:동:1
  +탐닉하:동:3
  +탐독하:동:4
   탐문:명:2
  -탐문하다:동:1
  +탐문하:동:1
   탐미주의자:명:1
   탐미주의적:명:1
   탐방:명:5
   탐방자:명:3
  -탐방하다:동:2
  +탐방하:동:2
   탐사:명:9
   탐사선:명:3
  -탐사하다:동:4
  +탐사하:동:4
   탐색:명:10
   탐색기:명:1
  -탐색하다:동:12
  -탐스럽다:형:6
  +탐색하:동:12
  +탐스럽:형:6
   탐식:명:1
   탐신:명:1
   탐욕:명:9
  -탐욕스럽다:형:6
  +탐욕스럽:형:6
   탐욕적:명:1
   탐정:명:3
   탐지:명:3
   탐지기:명:2
  -탐지하다:동:7
  +탐지하:동:7
   탐침:명:1
  -탐탁하다:형:5
  -탐하다:동:7
  +탐탁하:형:5
  +탐하:동:7
   탐학:명:1
   탐험:명:5
   탐험가:명:1
   탐험관:명:3
  -탐험하다:동:1
  +탐험하:동:1
   탑:명:82
   탑돌이:명:1
   탑승:명:10
   탑승자:명:3
  -탑승하다:동:6
  +탑승하:동:6
   탑신:명:1
   탑재:명:1
  -탑재되다:동:1
  -탑재하다:동:1
  +탑재되:동:1
  +탑재하:동:1
   탓:명:188
   탓:의:2
  -탓하다:동:23
  -탓허다:동:1
  +탓하:동:23
  +탓허:동:1
   탕:명:4
   탕:명:5
   탕:부:56
  @@ -51585,9 +51585,9 @@
   탕약:명:2
   탕자:명:1
   탕진:명:1
  -탕진하다:동:3
  +탕진하:동:3
   탕탕:부:3
  -탕탕하다:형:1
  +탕탕하:형:1
   태:명:1
   태:명:14
   태:명:9
  @@ -51608,18 +51608,18 @@
   태내:명:1
   태도:명:293
   태동:명:10
  -태동하다:동:2
  +태동하:동:2
   태두:명:1
   태만:명:2
  -태만하다:형:2
  -태만해지다:명:1
  +태만하:형:2
  +태만해지:명:1
   태명:명:1
   태몽:명:5
   태반:명:14
   태반:명:8
   태반성:명:1
   태부족:명:1
  -태부족하다:형:1
  +태부족하:형:1
   태사:명:1
   태사령:명:3
   태산:명:15
  @@ -51636,15 +51636,15 @@
   태양신:명:9
   태양열:명:10
   태양초:명:1
  -태어나다:동:320
  +태어나:동:320
   태연:명:1
  -태연스럽다:형:1
  -태연하다:형:18
  +태연스럽:형:1
  +태연하:형:18
   태연히:부:4
   태엽:명:2
  -태우다:동:44
  -태우다:동:72
  -태워지다:동:2
  +태우:동:44
  +태우:동:72
  +태워지:동:2
   태음:명:1
   태음력:명:2
   태자:명:2
  @@ -51657,8 +51657,8 @@
   태토:명:2
   태평:명:2
   태평성대:명:1
  -태평스럽다:형:2
  -태평하다:형:2
  +태평스럽:형:2
  +태평하:형:2
   태풍:명:40
   태풍권:명:2
   태형:명:1
  @@ -51669,10 +51669,10 @@
   택시:명:122
   택시비:명:4
   택일:명:1
  -택일하다:동:1
  -택일하다:동:2
  +택일하:동:1
  +택일하:동:2
   택지:명:26
  -택하다:동:70
  +택하:동:70
   탤런트:명:78
   탭:명:1
   탯줄:명:8
  @@ -51682,43 +51682,43 @@
   탱크:명:28
   탱크로리:명:1
   탱탱:부:1
  -탱탱하다:형:3
  -탱탱해지다:동:1
  +탱탱하:형:3
  +탱탱해지:동:1
   탱화:명:1
   터:명:70
   터:의:533
   터널:명:24
  -터놓다:동:12
  -터덜거리다:동:1
  +터놓:동:12
  +터덜거리:동:1
   터덜터덜:부:7
   터득:명:1
  -터득되다:동:1
  -터득되어지다:동:1
  -터득하다:동:17
  -터뜨리다:동:84
  +터득되:동:1
  +터득되어지:동:1
  +터득하:동:17
  +터뜨리:동:84
   터럭:명:1
   터리풀:명:1
  -터무니없다:형:12
  +터무니없:형:12
   터무니없이:부:5
   터미널:명:20
   터미네이터:명:1
   터벅터벅:부:4
   터번:명:1
   터부:명:3
  -터부시되다:동:1
  +터부시되:동:1
   터빈:명:6
   터울:명:4
   터전:명:19
   터줏대감:명:3
  -터지다:동:208
  -터지다:보:6
  +터지:동:208
  +터지:보:6
   터치:명:2
   터치라인:명:2
   터치톤:명:1
  -터치하다:동:1
  +터치하:동:1
   터키:명:2
  -터트리다:동:3
  -터프하다:형:3
  +터트리:동:3
  +터프하:형:3
   턱:명:1
   턱:명:1
   턱:명:2
  @@ -51730,7 +51730,7 @@
   턱살:명:1
   턱수염:명:1
   턱시도:명:4
  -턱없다:형:1
  +턱없:형:1
   턱없이:부:13
   턱주가리:명:1
   턱짓:명:3
  @@ -51740,9 +51740,9 @@
   털거미:명:1
   털구멍:명:1
   털끝:명:2
  -털다:동:79
  +털:동:79
   털레털레:부:2
  -털리다:동:4
  +털리:동:4
   털목도리:명:1
   털버덕:부:2
   털빛:명:1
  @@ -51750,15 +51750,15 @@
   털수세이:명:1
   털실:명:1
   털썩:부:5
  -털어놓다:동:57
  -털어먹다:동:1
  +털어놓:동:57
  +털어먹:동:1
   털외투:명:1
   털이:명:2
   털커덩:부:1
  -털털하다:형:2
  +털털하:형:2
   텀벙:부:2
   텀블링:명:4
  -텁텁하다:형:2
  +텁텁하:형:2
   텃논:명:2
   텃밭:명:6
   텃새:명:29
  @@ -51781,7 +51781,7 @@
   테스터기:명:1
   테스토스테론:명:5
   테스트:명:18
  -테스트하다:동:2
  +테스트하:동:2
   테스팅:명:1
   테이블:명:81
   테이블보:명:1
  @@ -51811,34 +51811,34 @@
   토기:명:30
   토기관:명:1
   토끼:명:42
  -토끼다:동:3
  +토끼:동:3
   토끼띠:명:2
   토끼몰이:명:1
   토너:명:1
   토너:명:3
  -토닥거리다:동:4
  -토닥이다:동:1
  +토닥거리:동:4
  +토닥이:동:1
   토대:명:112
  -토대하다:형:2
  -토라지다:동:4
  +토대하:형:2
  +토라지:동:4
   토란:명:1
   토란대:명:1
   토로:명:3
  -토로하다:동:8
  +토로하:동:8
   토론:명:115
   토론:명:2
  -토론되다:동:1
  +토론되:동:1
   토론식:명:1
   토론자:명:16
   토론장:명:4
   토론집:명:1
  -토론하다:동:28
  +토론하:동:28
   토론회:명:37
   토마토:명:58
   토마토케첩:명:24
   토막:명:42
   토막토막:부:2
  -토멸하다:동:1
  +토멸하:동:1
   토목:명:9
   토목과:명:4
   토목학자:명:1
  @@ -51847,7 +51847,7 @@
   토방:명:1
   토벌:명:2
   토벌군:명:6
  -토벌하다:동:1
  +토벌하:동:1
   토사:명:1
   토사곽란:명:2
   토사구팽:명:4
  @@ -51865,13 +51865,13 @@
   토속적:명:4
   토수:명:1
   토스:명:1
  -토스되다:동:1
  +토스되:동:1
   토스카나:명:2
   토스터:명:3
   토스트:명:5
  -토스하다:동:3
  +토스하:동:3
   토실토실:부:2
  -토실해지다:동:1
  +토실해지:동:1
   토씨:명:4
   토아발:명:1
   토악질:명:1
  @@ -51880,9 +51880,9 @@
   토요:명:2
   토요일:명:93
   토의:명:23
  -토의되다:동:1
  +토의되:동:1
   토의조:명:1
  -토의하다:동:10
  +토의하:동:10
   토익:명:1
   토인:명:1
   토일렛:명:1
  @@ -51904,7 +51904,7 @@
   토착적:명:1
   토착족:명:1
   토착화:명:1
  -토착화하다:동:1
  +토착화하:동:1
   토크:명:10
   토큰:명:2
   토킹:명:1
  @@ -51913,14 +51913,14 @@
   토템적:관:1
   토플:명:2
   토픽:명:2
  -토하다:동:43
  -토해지다:동:1
  +토하:동:43
  +토해지:동:1
   토현삼:명:2
   토호:명:1
   톡:부:15
  -톡탁거리다:동:3
  +톡탁거리:동:3
   톡톡:부:10
  -톡톡하다:형:1
  +톡톡하:형:1
   톡톡히:부:9
   톤:명:25
   톤:의:180
  @@ -51938,7 +51938,7 @@
   톱스타:명:6
   톱자루:명:1
   톱질:명:10
  -톱질하다:동:4
  +톱질하:동:4
   톱클래스:명:2
   톳제비:명:25
   통:명:1
  @@ -51953,32 +51953,32 @@
   통가죽:명:1
   통감:명:1
   통감:명:1
  -통감하다:동:6
  +통감하:동:6
   통계:명:61
   통계적:관:3
   통계적:명:1
   통계학:명:1
   통계학과:명:1
   통고:명:5
  -통고되다:동:1
  -통고받다:동:1
  +통고되:동:1
  +통고받:동:1
   통고서:명:1
  -통고하다:동:6
  +통고하:동:6
   통곡:명:11
  -통곡하다:동:6
  +통곡하:동:6
   통과:명:29
  -통과되다:동:8
  -통과시키다:동:10
  +통과되:동:8
  +통과시키:동:10
   통과조:명:1
  -통과하다:동:55
  +통과하:동:55
   통관:명:7
  -통관시키다:동:1
  +통관시키:동:1
   통괄:명:1
  -통괄하다:동:1
  +통괄하:동:1
   통굽:명:2
   통권:명:1
   통근:명:1
  -통근하다:동:1
  +통근하:동:1
   통금:명:4
   통기성:명:2
   통기타:명:1
  @@ -51987,26 +51987,26 @@
   통나무배:명:2
   통나무집:명:2
   통념:명:42
  -통달하다:동:1
  +통달하:동:1
   통닭:명:1
   통닭구이:명:1
   통닭집:명:4
   통독:명:18
   통돼지:명:3
  -통렬하다:형:3
  +통렬하:형:3
   통렬히:부:1
   통로:명:46
   통마늘:명:2
   통밀:명:1
  -통박하다:동:1
  +통박하:동:1
   통반장:명:1
   통발:명:1
   통방:명:2
   통배추:명:1
   통보:명:13
  -통보되다:동:2
  -통보받다:동:2
  -통보하다:동:20
  +통보되:동:2
  +통보받:동:2
  +통보하:동:20
   통불교:명:5
   통불교적:명:1
   통뼈:명:1
  @@ -52024,16 +52024,16 @@
   통선:명:15
   통선장:명:11
   통설:명:3
  -통설화되다:동:1
  +통설화되:동:1
   통성명:명:1
  -통성명하다:동:2
  +통성명하:동:2
   통속:명:4
   통속극:명:2
   통속성:명:4
   통속적:관:1
   통속적:명:5
   통속화:명:1
  -통솔하다:동:1
  +통솔하:동:1
   통수권:명:2
   통시:명:1
   통시:명:1
  @@ -52051,16 +52051,16 @@
   통신사:명:5
   통신선:명:1
   통신인:명:1
  -통신하다:동:2
  -통어하다:동:1
  +통신하:동:2
  +통어하:동:1
   통역:명:18
   통역관:명:2
   통역병:명:1
   통역인:명:1
  -통역하다:동:3
  +통역하:동:3
   통오징어:명:1
  -통용되다:동:14
  -통용시키다:동:1
  +통용되:동:14
  +통용시키:동:1
   통원:명:4
   통유리:명:2
   통유리창:명:1
  @@ -52069,30 +52069,30 @@
   통일:명:339
   통일감:명:2
   통일기:명:2
  -통일되다:동:28
  +통일되:동:28
   통일론:명:3
   통일벼:명:2
   통일성:명:20
  -통일시키다:동:4
  +통일시키:동:4
   통일안:명:2
   통일장:명:6
   통일적:관:9
   통일적:명:11
   통일체:명:2
  -통일하다:동:35
  +통일하:동:35
   통장:명:56
   통장식:명:3
   통전:명:3
   통제:명:99
   통제권:명:1
   통제기:명:2
  -통제되다:동:12
  +통제되:동:12
   통제력:명:6
  -통제받다:동:2
  +통제받:동:2
   통제적:관:1
   통제적:명:1
   통제책:명:1
  -통제하다:동:32
  +통제하:동:32
   통조림:명:12
   통조림통:명:1
   통증:명:94
  @@ -52100,12 +52100,12 @@
   통지:명:6
   통지문:명:1
   통지서:명:10
  -통지하다:동:7
  +통지하:동:7
   통째:명:17
   통찰:명:16
   통찰력:명:6
  -통찰하다:동:4
  -통첩하다:동:1
  +통찰하:동:4
  +통첩하:동:1
   통치:명:119
   통치권:명:8
   통치권자:명:2
  @@ -52114,46 +52114,46 @@
   통치배:명:1
   통치자:명:15
   통치처:명:1
  -통치하다:동:13
  +통치하:동:13
   통칙:명:1
   통칭:명:1
  -통칭되다:동:1
  -통칭하다:동:1
  -통쾌하다:형:6
  -통탄하다:동:2
  +통칭되:동:1
  +통칭하:동:1
  +통쾌하:형:6
  +통탄하:동:2
   통통:부:1
   통통:부:3
   통통배:명:1
  -통통하다:형:14
  +통통하:형:14
   통통히:부:1
  -통틀다:동:5
  +통틀:동:5
   통틀어:부:14
   통폐합:명:17
   통폐합설:명:3
  -통폐합하다:동:3
  +통폐합하:동:3
   통풍:명:5
   통풍관:명:1
  -통하다:동:1,674
  +통하:동:1674
   통학:명:7
  -통학하다:동:2
  +통학하:동:2
   통한:명:1
  -통할하다:동:1
  +통할하:동:1
   통합:명:122
  -통합되다:동:14
  +통합되:동:14
   통합론:명:1
   통합성:명:1
  -통합시키다:동:5
  +통합시키:동:5
   통합액:명:1
   통합적:관:8
   통합적:명:2
  -통합하다:동:33
  +통합하:동:33
   통행:명:19
   통행금지:명:4
   통행량:명:5
   통행로:명:1
   통행료:명:4
   통행증:명:2
  -통행하다:동:5
  +통행하:동:5
   통형:명:1
   통혼권:명:1
   통화:명:1
  @@ -52162,72 +52162,72 @@
   통화권:명:7
   통화량:명:6
   통화료:명:5
  -통화하다:동:6
  +통화하:동:6
   통후추:명:4
   퇴:명:2
  -퇴각하다:동:1
  +퇴각하:동:1
   퇴거:명:7
  -퇴거되다:동:1
  -퇴거하다:동:1
  +퇴거되:동:1
  +퇴거하:동:1
   퇴고:명:4
  -퇴고하다:동:1
  -퇴교당하다:동:1
  +퇴고하:동:1
  +퇴교당하:동:1
   퇴교생:명:1
   퇴근:명:32
   퇴근길:명:4
   퇴근제:명:1
  -퇴근하다:동:18
  +퇴근하:동:18
   퇴락:명:2
   퇴로:명:1
   퇴물:명:1
   퇴보:명:3
  -퇴보시키다:동:1
  -퇴보하다:동:4
  +퇴보시키:동:1
  +퇴보하:동:4
   퇴비:명:4
   퇴비화:명:1
  -퇴비화하다:동:1
  +퇴비화하:동:1
   퇴사:명:1
  -퇴사하다:동:2
  +퇴사하:동:2
   퇴색:명:3
  -퇴색되다:동:4
  -퇴색하다:동:7
  +퇴색되:동:4
  +퇴색하:동:7
   퇴역:명:1
  -퇴영하다:동:1
  +퇴영하:동:1
   퇴원:명:11
  -퇴원하다:동:12
  +퇴원하:동:12
   퇴임:명:21
  -퇴임하다:동:6
  +퇴임하:동:6
   퇴장:명:1
   퇴장:명:6
  -퇴장당하다:동:1
  +퇴장당하:동:1
   퇴장설:명:2
  -퇴장하다:동:2
  -퇴장하다:동:4
  +퇴장하:동:2
  +퇴장하:동:4
   퇴적:명:1
  -퇴적되다:동:3
  +퇴적되:동:3
   퇴적물:명:2
   퇴적암:명:1
  -퇴적하다:동:1
  +퇴적하:동:1
   퇴조:명:12
   퇴조기:명:1
  -퇴조시키다:동:1
  -퇴조하다:동:3
  +퇴조시키:동:1
  +퇴조하:동:3
   퇴직:명:6
   퇴직금:명:24
   퇴직률:명:1
   퇴직일:명:1
   퇴직자:명:1
  -퇴직하다:동:2
  +퇴직하:동:2
   퇴진:명:12
  -퇴진당하다:동:1
  -퇴진하다:동:6
  +퇴진당하:동:1
  +퇴진하:동:6
   퇴짜:명:1
   퇴창:명:1
   퇴창문:명:1
   퇴청:명:1
   퇴치:명:3
  -퇴치시키다:동:1
  -퇴치하다:동:2
  +퇴치시키:동:1
  +퇴치하:동:2
   퇴폐:명:14
   퇴폐물:명:1
   퇴폐미:명:1
  @@ -52236,25 +52236,25 @@
   퇴폐적:관:7
   퇴폐적:명:15
   퇴폐주의:명:4
  -퇴폐하다:동:1
  +퇴폐하:동:1
   퇴학:명:22
  -퇴학당하다:동:3
  -퇴학시키다:동:2
  +퇴학당하:동:3
  +퇴학시키:동:2
   퇴행:명:1
   퇴행성:명:5
   퇴행적:관:2
  -퇴행하다:동:2
  -퇴화하다:동:1
  +퇴행하:동:2
  +퇴화하:동:1
   툇마루:명:5
   투:명:10
   투:의:26
   투고:명:12
  -투고되다:동:3
  +투고되:동:3
   투고란:명:1
  -투과하다:동:3
  +투과하:동:3
   투구:명:2
   투구:명:4
  -투구하다:동:1
  +투구하:동:1
   투금:명:1
   투기:명:1
   투기:명:1
  @@ -52264,87 +52264,87 @@
   투기성:명:1
   투기심:명:1
   투기적:관:1
  -투기하다:동:1
  -투덕이다:동:1
  +투기하:동:1
  +투덕이:동:1
   투덕투덕:부:1
  -투덜거리다:동:15
  -투덜대다:동:11
  +투덜거리:동:15
  +투덜대:동:11
   투덜투덜:부:1
   투망식:명:1
   투매:명:1
  -투매되다:동:1
  +투매되:동:1
   투명:명:13
   투명감:명:1
   투명성:명:8
   투명지:명:4
  -투명하다:형:55
  -투명해지다:동:2
  -투박하다:형:8
  +투명하:형:55
  +투명해지:동:2
  +투박하:형:8
   투베르쿨린:명:3
   투병:명:3
   투사:명:1
   투사:명:7
   투사기:명:4
  -투사되다:동:4
  +투사되:동:4
   투사물:명:1
   투사성:명:1
  -투사하다:동:2
  +투사하:동:2
   투서:명:2
  -투서질하다:동:1
  +투서질하:동:1
   투석전:명:1
  -투석하다:동:1
  +투석하:동:1
   투수:명:14
   투숙:명:1
   투숙객:명:1
  -투숙하다:동:2
  +투숙하:동:2
   투시:명:1
   투시경:명:14
  -투시되다:동:1
  +투시되:동:1
   투신:명:3
   투신:명:8
   투신사:명:11
   투신자:명:1
   투신자살:명:1
  -투신자살하다:동:1
  -투신하다:동:1
  +투신자살하:동:1
  +투신하:동:1
   투약:명:3
  -투약하다:동:1
  +투약하:동:1
   투어:명:11
   투여:명:2
  -투여하다:동:3
  +투여하:동:3
   투영:명:2
  -투영되다:동:10
  -투영하다:동:2
  +투영되:동:10
  +투영하:동:2
   투옥:명:4
  -투옥되다:동:6
  +투옥되:동:6
   투우장:명:1
   투융자:명:1
   투입:명:30
   투입구:명:1
  -투입되다:동:15
  -투입시키다:동:1
  -투입하다:동:31
  +투입되:동:15
  +투입시키:동:1
  +투입하:동:31
   투자:명:218
   투자가:명:18
  -투자되다:동:3
  +투자되:동:3
   투자비:명:2
   투자액:명:2
   투자자:명:48
  -투자하다:동:47
  +투자하:동:47
   투쟁:명:219
   투쟁가:명:1
   투쟁성:명:2
   투쟁적:명:2
  -투쟁하다:동:26
  +투쟁하:동:26
   투전질:명:1
   투전판:명:1
   투정:명:8
  -투정하다:동:2
  +투정하:동:2
   투지:명:8
   투척:명:3
   투척조:명:1
  -투척하다:동:2
  -투철하다:형:15
  +투척하:동:2
  +투철하:형:15
   투철히:부:1
   투표:명:57
   투표구:명:1
  @@ -52357,54 +52357,54 @@
   투표장:명:4
   투표제:명:2
   투표지:명:2
  -투표하다:동:5
  +투표하:동:5
   투표함:명:1
   투피스:명:7
   투하:명:1
  -투하되다:동:2
  -투하하다:동:1
  +투하되:동:2
  +투하하:동:1
   투항적:관:1
  -투항하다:동:1
  +투항하:동:1
   투호:명:2
   투혼:명:1
   툭:부:41
   툭툭:부:14
   툭하면:부:6
  -툴툴거리다:동:1
  -툴툴대다:동:1
  -툴툴하다:동:1
  -툽툽하다:형:1
  +툴툴거리:동:1
  +툴툴대:동:1
  +툴툴하:동:1
  +툽툽하:형:1
   퉁:명:1
   퉁구리:명:1
  -퉁기다:동:6
  -퉁명스럽다:형:20
  +퉁기:동:6
  +퉁명스럽:형:20
   퉁명스레:부:1
  -퉁명하다:형:1
  +퉁명하:형:1
   퉁소:명:2
   퉁탕:부:1
  -퉁탕거리다:동:1
  +퉁탕거리:동:1
   퉁퉁:부:7
  -퉁퉁하다:형:1
  +퉁퉁하:형:1
   퉤:부:2
   퉤퉤:부:1
   튀각:명:1
  -튀겨지다:동:2
  -튀기다:동:14
  -튀기다:동:25
  +튀겨지:동:2
  +튀기:동:14
  +튀기:동:25
   튀김:명:13
   튀김옷:명:5
  -튀다:동:50
  +튀:동:50
   튀밥:명:1
  -튀어나오다:동:49
  +튀어나오:동:49
   튑:명:2
  -튕겨지다:동:5
  -튕기다:동:7
  +튕겨지:동:5
  +튕기:동:7
   튜나:명:1
   튜린:명:1
   튜브:명:8
   튤립:명:3
  -트다:동:13
  -트다:동:18
  +트:동:13
  +트:동:18
   트라코마:명:1
   트래핑:명:2
   트랙:명:6
  @@ -52422,7 +52422,7 @@
   트레이너:명:5
   트레이닝셔츠:명:1
   트레이드:명:2
  -트레이드되다:동:1
  +트레이드되:동:1
   트레이드마크:명:3
   트레일러:명:9
   트렌드:명:1
  @@ -52439,7 +52439,7 @@
   트릭:명:5
   트릴:명:1
   트림:명:9
  -트이다:동:81
  +트이:동:81
   트집:명:7
   특:명:1
   특강:명:7
  @@ -52454,13 +52454,13 @@
   특기:명:8
   특기생:명:2
   특기자:명:4
  -특기하다:동:10
  +특기하:동:10
   특단:명:2
   특대형:명:1
   특례:명:8
   특무대장:명:2
   특별:명:200
  -특별나다:형:2
  +특별나:형:2
   특별반:명:1
   특별법:명:20
   특별법적:관:2
  @@ -52469,7 +52469,7 @@
   특별시:명:4
   특별시민:명:1
   특별실:명:1
  -특별하다:형:134
  +특별하:형:134
   특별히:부:78
   특보:명:10
   특보:명:4
  @@ -52494,19 +52494,19 @@
   특수자:명:1
   특수직:명:1
   특수층:명:1
  -특수하다:형:1
  -특수하다:형:48
  +특수하:형:1
  +특수하:형:48
   특실:명:1
   특약:명:3
   특연:명:1
   특용:명:5
   특위:명:16
   특유:명:67
  -특유하다:형:5
  +특유하:형:5
   특융:명:3
   특이:명:2
   특이성:명:1
  -특이하다:형:41
  +특이하:형:41
   특장:명:1
   특장차:명:1
   특전:명:1
  @@ -52514,7 +52514,7 @@
   특정:명:117
   특정인:명:14
   특정일:명:1
  -특정하다:형:88
  +특정하:형:88
   특조위:명:2
   특종:명:13
   특진:명:1
  @@ -52524,67 +52524,67 @@
   특집호:명:2
   특징:명:267
   특징적:명:12
  -특징지어지다:동:5
  -특징짓다:동:8
  +특징지어지:동:5
  +특징짓:동:8
   특차:명:2
   특채:명:2
  -특채하다:동:1
  +특채하:동:1
   특출:명:6
  -특출하다:형:3
  +특출하:형:3
   특파원:명:13
   특파원단:명:1
   특품:명:3
   특허:명:44
   특허권:명:9
   특허권자:명:1
  -특허되다:동:1
  +특허되:동:1
   특허성:명:2
   특혜:명:35
   특혜성:명:1
   특혜적:관:1
   특화:명:5
  -특화하다:동:1
  +특화하:동:1
   특활:명:2
   특효:명:5
   특효약:명:1
   특훈:명:1
  -특히:부:1,004
  -튼실하다:형:1
  +특히:부:1004
  +튼실하:형:1
   튼튼:명:3
  -튼튼하다:형:71
  -튼튼해지다:동:7
  +튼튼하:형:71
  +튼튼해지:동:7
   튼튼히:부:16
   틀:명:163
  -틀다:동:103
  -틀려먹다:동:1
  -틀려지다:동:1
  -틀려지리다:동:1
  -틀리다:동:121
  -틀리다:동:4
  -틀리다:형:2
  -틀림없다:형:127
  +틀:동:103
  +틀려먹:동:1
  +틀려지:동:1
  +틀려지리:동:1
  +틀리:동:121
  +틀리:동:4
  +틀리:형:2
  +틀림없:형:127
   틀림없이:부:39
  -틀어막다:동:7
  -틀어박히다:동:6
  -틀어잡다:동:2
  -틀어쥐다:동:4
  -틀어지다:동:5
  +틀어막:동:7
  +틀어박히:동:6
  +틀어잡:동:2
  +틀어쥐:동:4
  +틀어지:동:5
   틈:명:113
  -틈나다:동:5
  +틈나:동:5
   틈바구니:명:9
   틈새:명:8
   틈서리:명:2
  -틈입하다:동:1
  -틈타다:동:13
  +틈입하:동:1
  +틈타:동:13
   틈틈이:부:9
  -틔우다:동:5
  +틔우:동:5
   티:명:15
   티:명:3
   티:명:5
   티:명:6
   티:명:9
   티격태격:부:1
  -티격태격하다:동:5
  +티격태격하:동:5
   티끌:명:8
   티미다인키나제:명:3
   티백:명:1
  @@ -52616,46 +52616,46 @@
   파견:명:24
   파견관:명:1
   파견대:명:1
  -파견되다:동:6
  -파견받다:동:1
  +파견되:동:6
  +파견받:동:1
   파견제:명:1
  -파견하다:동:19
  -파계하다:동:1
  +파견하:동:19
  +파계하:동:1
   파고:명:2
  -파고들다:동:50
  +파고들:동:50
   파괴:명:121
  -파괴당하다:동:1
  -파괴되다:동:47
  +파괴당하:동:1
  +파괴되:동:47
   파괴력:명:3
  -파괴시키다:동:3
  +파괴시키:동:3
   파괴적:관:2
   파괴적:명:6
  -파괴하다:동:57
  +파괴하:동:57
   파국:명:10
   파국적:관:2
   파급:명:14
  -파급되다:동:7
  -파급시키다:동:1
  +파급되:동:7
  +파급시키:동:1
   파기:명:2
  -파기되다:동:2
  +파기되:동:2
   파김치:명:3
  -파내다:동:10
  +파내:동:10
   파노라마:명:4
   파노라마식:명:1
   파노라마적:명:1
   파농:명:1
  -파다:동:65
  -파다하다:형:9
  -파닥거리다:동:1
  -파닥이다:동:2
  +파:동:65
  +파다하:형:9
  +파닥거리:동:1
  +파닥이:동:2
   파도:명:110
  -파도치다:동:1
  +파도치:동:1
   파동:명:43
   파동론:명:1
   파동성:명:1
  -파동하다:동:2
  +파동하:동:2
   파두:명:2
  -파들거리다:동:1
  +파들거리:동:1
   파들파들:부:1
   파라다이스:명:2
   파라디클로로벤젠:명:1
  @@ -52665,64 +52665,64 @@
   파락호:명:1
   파란:명:6
   파란곡절:명:1
  -파란만장하다:형:4
  +파란만장하:형:4
   파란색:명:11
   파랑:명:14
   파랑새:명:18
  -파랗다:형:58
  -파래지다:동:1
  +파랗:형:58
  +파래지:동:1
   파력:명:3
   파렴치:명:3
   파렴치범:명:1
  -파렴치하다:형:13
  +파렴치하:형:13
   파로틴:명:1
   파르라니:부:1
   파르르:부:6
  -파르르하다:동:2
  -파르스름하다:형:7
  +파르르하:동:2
  +파르스름하:형:7
   파릇파릇:부:2
  -파릇파릇하다:형:1
  -파릇하다:형:3
  +파릇파릇하:형:1
  +파릇하:형:3
   파리:명:36
   파리똥:명:1
   파리풀:명:1
  -파리하다:형:1
  +파리하:형:1
   파마:명:7
   파마머리:명:6
  -파마시키다:동:1
  -파마하다:동:6
  -파먹다:동:3
  -파먹히다:동:3
  +파마시키:동:1
  +파마하:동:6
  +파먹:동:3
  +파먹히:동:3
   파메산:명:3
   파면:명:4
   파멸:명:13
  -파멸시키다:동:2
  +파멸시키:동:2
   파문:명:38
  -파묻다:동:11
  -파묻히다:동:20
  +파묻:동:11
  +파묻히:동:20
   파바박:부:1
   파밭:명:1
   파벌:명:8
   파병:명:16
  -파병되다:동:2
  +파병되:동:2
   파병용:명:1
  -파병하다:동:2
  +파병하:동:2
   파북:명:1
   파뿌리:명:1
   파삭:부:1
   파삭파삭:부:1
   파산:명:9
   파산기:명:1
  -파산하다:동:2
  +파산하:동:2
   파상적:명:4
   파생:명:1
  -파생되다:동:7
  -파생하다:동:3
  +파생되:동:7
  +파생하:동:3
   파선:명:2
   파소콘:명:1
   파손:명:10
  -파손되다:동:7
  -파손시키다:동:1
  +파손되:동:7
  +파손시키:동:1
   파송:명:1
   파쇼:명:5
   파수꾼:명:12
  @@ -52734,14 +52734,14 @@
   파시스트적:관:1
   파시즘:명:10
   파악:명:56
  -파악되다:동:43
  -파악하다:동:239
  +파악되:동:43
  +파악하:동:239
   파업:명:46
  -파업하다:동:3
  +파업하:동:3
   파에야:명:1
  -파여지다:동:1
  +파여지:동:1
   파열:명:1
  -파열되다:동:1
  +파열되:동:1
   파열음:명:3
   파우더:명:5
   파운데이션:명:8
  @@ -52749,7 +52749,7 @@
   파워:명:9
   파월:명:1
   파이:명:2
  -파이다:동:4
  +파이:동:4
   파이팅:감:5
   파이프:명:27
   파이프라인:명:1
  @@ -52760,7 +52760,7 @@
   파일:명:61
   파일럿:명:7
   파일명:명:2
  -파작하다:동:1
  +파작하:동:1
   파장:명:2
   파장:명:24
   파쟁:명:2
  @@ -52768,10 +52768,10 @@
   파전:의:2
   파종:명:3
   파종기:명:1
  -파종하다:동:1
  +파종하:동:1
   파죽지세:명:1
   파지:명:1
  -파지다:동:1
  +파지:동:1
   파지장:명:1
   파천:명:1
   파천황:명:1
  @@ -52783,8 +52783,8 @@
   파카:명:1
   파킨슨병:명:2
   파탄:명:19
  -파탄되다:동:2
  -파탄시키다:동:1
  +파탄되:동:2
  +파탄시키:동:1
   파탄자:명:3
   파토스:명:1
   파트:명:16
  @@ -52793,47 +52793,47 @@
   파트롱:명:2
   파트타임:명:2
   파티:명:39
  -파티하다:동:1
  +파티하:동:1
   파파:명:1
   파편:명:10
  -파편화되다:동:2
  +파편화되:동:2
   파피루스:명:2
  -파하다:동:1
  -파하다:동:1
  +파하:동:1
  +파하:동:1
   파행:명:11
   파행성:명:1
   파행적:관:1
   파행적:명:6
  -파헤쳐지다:동:6
  -파헤치다:동:26
  +파헤쳐지:동:6
  +파헤치:동:26
   파히타풍:명:1
   팍:부:12
   팍스:명:7
   팍팍:부:4
  -팍팍하다:형:5
  +팍팍하:형:5
   판:명:34
   판:명:38
   판:명:48
   판:명:6
   판:의:61
   판가름:명:4
  -판가름하다:동:2
  +판가름하:동:2
   판검사:명:4
   판결:명:150
   판결문:명:22
  -판결하다:동:3
  +판결하:동:3
   판공비:명:4
   판교:명:1
   판국:명:23
   판권:명:4
   판단:명:200
  -판단되다:동:22
  +판단되:동:22
   판단력:명:10
  -판단받다:동:1
  -판단하다:동:117
  +판단받:동:1
  +판단하:동:117
   판도:명:9
   판독기:명:6
  -판독하다:동:3
  +판독하:동:3
   판때기:명:1
   판례:명:18
   판로:명:7
  @@ -52841,7 +52841,7 @@
   판막증:명:1
   판매:명:181
   판매대:명:2
  -판매되다:동:19
  +판매되:동:19
   판매량:명:9
   판매력:명:11
   판매망:명:1
  @@ -52853,13 +52853,13 @@
   판매전:명:1
   판매점:명:1
   판매직:명:1
  -판매하다:동:68
  +판매하:동:68
   판명:명:1
  -판명되다:동:8
  -판명하다:동:1
  +판명되:동:8
  +판명하:동:1
   판별:명:1
   판별법:명:1
  -판별하다:동:7
  +판별하:동:7
   판사:명:31
   판상:명:1
   판서:명:1
  @@ -52868,25 +52868,25 @@
   판소리:명:27
   판소리론:명:1
   판시:명:6
  -판시하다:동:11
  +판시하:동:11
   판쓸이:명:1
   판윤:명:1
   판이:명:1
  -판이하다:형:8
  +판이하:형:8
   판자:명:10
   판자촌:명:2
   판잣집:명:8
   판전:명:1
   판정:명:30
  -판정되다:동:4
  -판정승하다:동:1
  +판정되:동:4
  +판정승하:동:1
   판정패:명:1
  -판정하다:동:6
  +판정하:동:6
   판지:명:2
   판지:명:5
   판촉:명:25
   판촉물:명:1
  -판치다:동:4
  +판치:동:4
   판타지:명:1
   판판이:부:1
   판형:명:1
  @@ -52903,20 +52903,20 @@
   팔고:명:1
   팔관회:명:2
   팔꿈치:명:12
  -팔다:동:332
  +팔:동:332
   팔다리:명:14
   팔도:명:5
   팔도강산:명:1
  -팔딱거리다:동:1
  +팔딱거리:동:1
   팔딱팔딱:부:2
   팔뚝:명:17
   팔뚝시계:명:2
   팔랑개비:명:1
  -팔랑거리다:동:1
  -팔랑이다:동:1
  +팔랑거리:동:1
  +팔랑이:동:1
   팔레:명:2
   팔레트:명:2
  -팔리다:동:63
  +팔리:동:63
   팔만:수:1
   팔만사천:수:1
   팔매:명:3
  @@ -52934,8 +52934,8 @@
   팔십칠:관:1
   팔십팔:관:1
   팔씨름:명:2
  -팔아넘기다:동:10
  -팔아먹다:동:13
  +팔아넘기:동:10
  +팔아먹:동:13
   팔열:명:1
   팔월:명:150
   팔월대보름:명:2
  @@ -52943,7 +52943,7 @@
   팔일오:명:7
   팔자:명:29
   팔자걸음:명:2
  -팔자치레하다:동:1
  +팔자치레하:동:1
   팔자형:명:2
   팔작지붕:명:1
   팔정도:명:6
  @@ -52954,7 +52954,7 @@
   팔천:관:2
   팔천오백:관:1
   팔팔:부:3
  -팔팔하다:형:1
  +팔팔하:형:1
   팔풍받이:명:1
   팝:명:10
   팝사인:명:1
  @@ -52964,7 +52964,7 @@
   팡:부:1
   팡파르:명:3
   팡팡:부:2
  -팡팡하다:동:1
  +팡팡하:동:1
   팥:명:20
   팥고물:명:2
   팥단자:명:1
  @@ -52990,11 +52990,11 @@
   패권주의적:명:1
   패기:명:11
   패널:명:2
  -패다:동:1
  -패다:동:1
  -패다:동:23
  -패다:동:4
  -패다:동:9
  +패:동:1
  +패:동:1
  +패:동:23
  +패:동:4
  +패:동:9
   패도:명:1
   패두:명:12
   패드:명:2
  @@ -53002,23 +53002,23 @@
   패러글라이더:명:1
   패러다임:명:4
   패러디:명:7
  -패러디하다:동:1
  -패러디화하다:동:1
  +패러디하:동:1
  +패러디화하:동:1
   패러플레인:명:1
   패류:명:2
   패륜:명:1
   패륜아:명:2
   패륜적:명:1
   패망:명:2
  -패망하다:동:1
  +패망하:동:1
   패물:명:2
   패밀리:명:2
   패배:명:39
   패배감:명:3
  -패배당하다:동:1
  +패배당하:동:1
   패배자:명:4
   패배주의:명:2
  -패배하다:동:8
  +패배하:동:8
   패산:명:1
   패색:명:1
   패션:명:35
  @@ -53026,30 +53026,30 @@
   패션모델:명:6
   패션쇼:명:6
   패소:명:3
  -패소하다:동:2
  +패소하:동:2
   패스:명:31
   패스트푸드:명:1
   패스트푸드점:명:8
   패스포트:명:2
  -패스하다:동:8
  +패스하:동:8
   패싸움:명:5
  -패이다:동:10
  +패이:동:10
   패인:명:7
   패자:명:11
   패자전:명:1
   패전:명:6
   패전국:명:1
  -패전하다:동:2
  +패전하:동:2
   패키지:명:1
   패키지여행:명:1
   패킷:명:1
   패킷망:명:1
   패킹:명:1
   패턴:명:22
  -패턴화되다:동:1
  +패턴화되:동:1
   패통:명:1
   패팅법:명:3
  -패하다:동:17
  +패하:동:17
   패혈:명:1
   패혈증:명:1
   팩:명:45
  @@ -53069,46 +53069,46 @@
   팻말:명:6
   팽:부:1
   팽:부:2
  -팽개쳐지다:동:1
  -팽개치다:동:17
  +팽개쳐지:동:1
  +팽개치:동:17
   팽그르르:부:1
   팽나무:명:6
   팽배:명:1
  -팽배하다:동:16
  +팽배하:동:16
   팽이:명:6
   팽이버섯:명:13
   팽창:명:23
   팽창감:명:4
  -팽창되다:동:5
  -팽창시키다:동:2
  +팽창되:동:5
  +팽창시키:동:2
   팽창주의:명:1
  -팽창하다:동:14
  +팽창하:동:14
   팽팽:부:1
  -팽팽하다:형:14
  -팽팽하다:형:5
  +팽팽하:형:14
  +팽팽하:형:5
   팽팽히:부:8
  -퍼내다:동:10
  -퍼대다:동:1
  -퍼덕거리다:동:6
  -퍼덕이다:동:4
  +퍼내:동:10
  +퍼대:동:1
  +퍼덕거리:동:6
  +퍼덕이:동:4
   퍼드덕퍼드덕:부:1
  -퍼뜨리다:동:19
  +퍼뜨리:동:19
   퍼뜩:부:11
   퍼래서:불:1
  -퍼렇다:형:7
  +퍼렇:형:7
   퍼레이드:명:7
  -퍼마시다:동:4
  -퍼먹다:동:3
  -퍼부어지다:동:3
  -퍼붓다:동:47
  +퍼마시:동:4
  +퍼먹:동:3
  +퍼부어지:동:3
  +퍼붓:동:47
   퍼블릭:명:1
  -퍼센트:의:1,309
  +퍼센트:의:1309
   퍼센티지:명:1
   퍼스널:명:2
   퍼스트:명:16
   퍼즐:명:3
   퍼지:명:1
  -퍼지다:동:143
  +퍼지:동:143
   퍼터:명:2
   퍼팅:명:2
   퍼플:명:1
  @@ -53120,14 +53120,14 @@
   펀드:명:4
   펀치:명:1
   펀치:명:3
  -펀치되다:동:1
  +펀치되:동:1
   펀칭:명:1
   펀펀히:부:1
   펄:명:1
   펄떡펄떡:부:1
   펄럭:부:1
  -펄럭거리다:동:1
  -펄럭이다:동:10
  +펄럭거리:동:1
  +펄럭이:동:10
   펄쩍:부:13
   펄쩍펄쩍:부:3
   펄펄:부:11
  @@ -53139,7 +53139,7 @@
   펑:부:4
   펑크:명:14
   펑크족:명:2
  -펑퍼짐하다:형:4
  +펑퍼짐하:형:4
   펑펑:부:2
   펑펑:부:5
   페그마타이트:명:1
  @@ -53170,7 +53170,7 @@
   페이퍼백:명:1
   페인트:명:16
   페인트칠:명:2
  -페인트칠하다:동:1
  +페인트칠하:동:1
   페인팅:명:2
   페추니아:명:1
   페치카:명:5
  @@ -53192,9 +53192,9 @@
   펜홀더:명:2
   펨푸:명:1
   펭귄:명:2
  -펴내다:동:58
  -펴다:동:246
  -펴지다:동:12
  +펴내:동:58
  +펴:동:246
  +펴지:동:12
   편:명:2
   편:명:3
   편:명:37
  @@ -53204,35 +53204,35 @@
   편:의:240
   편견:명:33
   편곡:명:1
  -편곡하다:동:2
  +편곡하:동:2
   편년:명:1
   편년체:명:2
   편대:명:1
   편도:명:2
   편도선:명:3
   편두통:명:1
  -편들다:동:2
  +편들:동:2
   편람:명:1
   편력:명:3
  -편력하다:동:2
  +편력하:동:2
   편리:명:4
   편리성:명:6
  -편리하다:형:94
  -편리해지다:동:4
  +편리하:형:94
  +편리해지:동:4
   편린:명:1
   편마암:명:55
   편목:명:3
   편발:명:1
   편법:명:26
   편법적:명:1
  -편벽되다:형:1
  -편벽하다:형:1
  +편벽되:형:1
  +편벽하:형:1
   편복:명:1
   편성:명:29
  -편성되다:동:10
  +편성되:동:10
   편성론:명:2
   편성안:명:2
  -편성하다:동:16
  +편성하:동:16
   편수:명:4
   편수:명:5
   편수관:명:3
  @@ -53241,16 +53241,16 @@
   편수직:명:2
   편수직원:명:1
   편승:명:4
  -편승하다:동:14
  +편승하:동:14
   편식:명:4
  -편식하다:동:2
  -편쌈하다:동:1
  +편식하:동:2
  +편쌈하:동:1
   편안:명:1
  -편안하다:형:90
  -편안해지다:동:2
  +편안하:형:90
  +편안해지:동:2
   편안히:부:10
   편암:명:1
  -편애하다:동:4
  +편애하:동:4
   편액:명:6
   편역서:명:1
   편육:명:1
  @@ -53266,24 +53266,24 @@
   편의품:명:2
   편익:명:16
   편입:명:4
  -편입되다:동:32
  -편입시키다:동:5
  -편입하다:동:2
  +편입되:동:32
  +편입시키:동:5
  +편입하:동:2
   편입학:명:1
   편재성:명:1
  -편재하다:동:1
  +편재하:동:1
   편저:명:2
   편저자:명:1
  -편적되다:동:1
  +편적되:동:1
   편제:명:8
  -편제되다:동:2
  -편제하다:동:2
  +편제되:동:2
  +편제하:동:2
   편중:명:9
  -편중되다:동:5
  +편중되:동:5
   편지:명:235
   편지지:명:3
   편지질:명:1
  -편지하다:동:4
  +편지하:동:4
   편집:명:21
   편집국:명:1
   편집국장:명:4
  @@ -53295,42 +53295,42 @@
   편집자:명:8
   편집장:명:6
   편집진:명:2
  -편집하다:동:9
  +편집하:동:9
   편차:명:10
   편찬:명:16
   편찬자:명:1
  -편찬하다:동:14
  -편찮다:형:11
  +편찬하:동:14
  +편찮:형:11
   편파:명:5
   편파적:관:2
   편파적:명:2
   편편이:부:1
  -편편하다:형:1
  -편평하다:형:1
  -편하다:형:158
  -편해지다:동:10
  -편해하다:동:1
  +편편하:형:1
  +편평하:형:1
  +편하:형:158
  +편해지:동:10
  +편해하:동:1
   편향:명:14
  -편향되다:동:9
  +편향되:동:9
   편향성:명:4
  -편향시키다:동:1
  +편향시키:동:1
   편향적:명:3
   편향주의자:명:2
   편협:명:1
  -편협되다:형:2
  +편협되:형:2
   편협성:명:3
  -편협하다:형:13
  +편협하:형:13
   편히:부:23
  -펼쳐지다:동:101
  -펼치다:동:122
  +펼쳐지:동:101
  +펼치:동:122
   평:명:34
   평:의:158
   평가:명:1
   평가:명:252
   평가관:명:1
   평가단:명:2
  -평가되다:동:56
  -평가받다:동:25
  +평가되:동:56
  +평가받:동:25
   평가법:명:1
   평가부장:명:1
   평가사:명:1
  @@ -53339,12 +53339,12 @@
   평가용:명:1
   평가전:명:1
   평가제:명:1
  -평가하다:동:105
  +평가하:동:105
   평가회:명:8
   평결:명:4
  -평결하다:동:1
  +평결하:동:1
   평경례:명:1
  -평골하여지다:동:1
  +평골하여지:동:1
   평교사:명:24
   평교사회:명:2
   평균:명:163
  @@ -53365,12 +53365,12 @@
   평등사상:명:1
   평등주의:명:1
   평등주의적:명:1
  -평등하다:형:28
  +평등하:형:28
   평등화:명:1
   평론:명:15
   평론가:명:33
   평론집:명:5
  -평론하다:동:2
  +평론하:동:2
   평면:명:18
   평면거울:명:1
   평면적:관:4
  @@ -53380,7 +53380,7 @@
   평민:명:18
   평방미터:의:19
   평배:명:1
  -평범하다:형:76
  +평범하:형:76
   평사원:명:2
   평상:명:2
   평상:명:5
  @@ -53398,49 +53398,49 @@
   평신도:명:1
   평안:명:14
   평안감:명:1
  -평안하다:형:8
  +평안하:형:8
   평안히:부:1
   평야:명:44
   평영:명:4
   평온:명:10
  -평온하다:형:7
  -평온해지다:동:2
  +평온하:형:7
  +평온해지:동:2
   평원:명:3
   평의회:명:7
  -평이하다:형:1
  +평이하:형:1
   평일:명:15
   평자:명:4
   평작:명:1
   평잔:명:1
   평저:명:1
   평절:명:7
  -평절하다:동:1
  +평절하:동:1
   평점:명:4
   평정:명:1
   평정:명:1
   평정:명:1
  -평정되다:동:1
  -평정하다:동:2
  -평정하다:형:1
  +평정되:동:1
  +평정하:동:2
  +평정하:형:1
   평조직:명:3
   평조합원:명:1
   평준화:명:14
  -평준화되다:동:1
  -평준화시키다:동:1
  -평준화하다:동:2
  +평준화되:동:1
  +평준화시키:동:1
  +평준화하:동:2
   평지:명:17
   평지능문능:명:1
   평직:명:3
   평직금:명:1
   평직원:명:1
  -평탄하다:형:5
  -평탄해지다:동:1
  +평탄하:형:5
  +평탄해지:동:1
   평토장:명:1
   평통:명:1
   평판:명:7
   평판상:명:1
  -평평하다:형:15
  -평하다:동:9
  +평평하:형:15
  +평하:동:9
   평행:명:5
   평행봉:명:4
   평행선:명:1
  @@ -53448,10 +53448,10 @@
   평형:의:16
   평형성:명:1
   평화:명:167
  -평화로워지다:동:1
  -평화롭다:형:34
  +평화로워지:동:1
  +평화롭:형:34
   평화상:명:1
  -평화스럽다:형:4
  +평화스럽:형:4
   평화적:관:7
   평화적:명:21
   평화주의자:명:1
  @@ -53463,20 +53463,20 @@
   폐:명:20
   폐가구:명:1
   폐가전제품:명:1
  -폐간되다:동:1
  +폐간되:동:1
   폐건전지:명:6
   폐경:명:1
   폐경기:명:6
   폐광:명:2
   폐광산:명:2
   폐교:명:5
  -폐교되다:동:4
  -폐교시키다:동:1
  -폐교하다:동:1
  +폐교되:동:4
  +폐교시키:동:1
  +폐교하:동:1
   폐기:명:21
  -폐기되다:동:2
  +폐기되:동:2
   폐기물:명:52
  -폐기하다:동:11
  +폐기하:동:11
   폐냉장고:명:4
   폐노트:명:1
   폐단:명:22
  @@ -53492,8 +53492,8 @@
   폐문:명:1
   폐물:명:2
   폐백:명:4
  -폐백드리다:동:1
  -폐백받다:동:2
  +폐백드리:동:1
  +폐백받:동:2
   폐병:명:2
   폐부:명:1
   폐부품:명:1
  @@ -53506,36 +53506,36 @@
   폐선:명:21
   폐설물:명:2
   폐쇄:명:16
  -폐쇄되다:동:13
  +폐쇄되:동:13
   폐쇄성:명:4
  -폐쇄시키다:동:1
  +폐쇄시키:동:1
   폐쇄적:관:1
   폐쇄적:명:15
  -폐쇄하다:동:5
  -폐쇄화되다:동:1
  +폐쇄하:동:5
  +폐쇄화되:동:1
   폐수:명:58
   폐식용유:명:5
   폐신문지:명:1
   폐암:명:12
   폐업:명:8
  -폐업하다:동:5
  +폐업하:동:5
   폐에어컨:명:1
   폐오일:명:1
   폐왕:명:1
  -폐위시키다:동:1
  +폐위시키:동:1
   폐유:명:4
   폐인:명:1
  -폐일언하다:동:1
  +폐일언하:동:1
   폐자재:명:3
   폐자전거:명:1
  -폐장되다:동:1
  +폐장되:동:1
   폐장롱:명:1
   폐점:명:1
  -폐점하다:동:1
  +폐점하:동:1
   폐지:명:10
   폐지:명:38
  -폐지되다:동:10
  -폐지하다:동:28
  +폐지되:동:10
  +폐지하:동:28
   폐차:명:1
   폐차업체:명:1
   폐차장:명:1
  @@ -53556,24 +53556,24 @@
   포:명:53
   포:부:3
   포갑지:명:1
  -포개다:동:10
  -포개어지다:동:2
  -포개지다:동:1
  +포개:동:10
  +포개어지:동:2
  +포개지:동:1
   포격:명:4
  -포격하다:동:1
  +포격하:동:1
   포경:명:3
   포고:명:5
   포고령:명:8
   포고문:명:2
   포괄:명:7
  -포괄되다:동:2
  +포괄되:동:2
   포괄미:명:1
   포괄성:명:3
   포괄자:명:1
   포괄적:관:9
   포괄적:명:22
   포괄주의:명:1
  -포괄하다:동:9
  +포괄하:동:9
   포교:명:2
   포교:명:4
   포교용:명:1
  @@ -53581,14 +53581,14 @@
   포교질:명:1
   포구:명:30
   포그르르:부:1
  -포근하다:형:19
  -포근해지다:동:2
  +포근하:형:19
  +포근해지:동:2
   포근히:부:5
   포기:명:16
   포기:명:17
  -포기되다:동:1
  -포기시키다:동:1
  -포기하다:동:152
  +포기되:동:1
  +포기시키:동:1
  +포기하:동:152
   포대:명:13
   포대:명:2
   포대:명:3
  @@ -53610,27 +53610,27 @@
   포만:명:1
   포만감:명:2
   포말:명:3
  -포매팅하다:동:1
  +포매팅하:동:1
   포맷:명:7
   포멀:명:1
   포목전:명:2
   포문:명:5
   포물선:명:7
   포박:명:1
  -포박당하다:동:1
  -포박되다:동:1
  -포박하다:동:1
  +포박당하:동:1
  +포박되:동:1
  +포박하:동:1
   포병:명:10
   포복:명:1
   포복절도:명:1
   포부:명:9
   포상:명:5
   포상금:명:1
  -포상하다:동:1
  +포상하:동:1
   포석:명:4
  -포섭되다:동:2
  +포섭되:동:2
   포섭주의:명:1
  -포섭하다:동:8
  +포섭하:동:8
   포성:명:1
   포수:명:3
   포수:명:3
  @@ -53643,29 +53643,29 @@
   포스트시즌:명:12
   포승:명:1
   포승줄:명:1
  -포시럽다:형:1
  +포시럽:형:1
   포식:명:2
  -포식하다:동:1
  -포식하다:동:2
  -포실하다:형:1
  +포식하:동:1
  +포식하:동:2
  +포실하:형:1
   포아풀:명:2
   포아풀과:명:1
   포악:명:1
  -포악하다:형:5
  +포악하:형:5
   포연:명:1
   포옹:명:6
  -포옹하다:동:5
  +포옹하:동:5
   포용:명:1
   포용력:명:8
   포용성:명:2
   포용적:명:1
  -포용하다:동:28
  +포용하:동:28
   포워드:명:7
   포위:명:4
  -포위당하다:동:2
  -포위되다:동:4
  +포위당하:동:2
  +포위되:동:4
   포위망:명:1
  -포위하다:동:4
  +포위하:동:4
   포유동물:명:1
   포유류:명:8
   포육:명:2
  @@ -53680,29 +53680,29 @@
   포장:명:9
   포장길:명:1
   포장도로:명:1
  -포장되다:동:3
  -포장되다:동:7
  +포장되:동:3
  +포장되:동:7
   포장마차:명:29
   포장술:명:1
   포장지:명:10
  -포장하다:동:1
  -포장하다:동:8
  +포장하:동:1
  +포장하:동:8
   포접:명:1
   포졸:명:4
   포주:명:6
   포즈:명:13
   포즈:명:3
   포지션:명:3
  -포지션하다:동:1
  +포지션하:동:1
   포지티브:명:1
   포진:명:1
   포진:명:1
  -포진시키다:동:1
  -포진하다:동:4
  +포진시키:동:1
  +포진하:동:4
   포착:명:1
  -포착되다:동:6
  +포착되:동:6
   포착률:명:1
  -포착하다:동:24
  +포착하:동:24
   포청:명:1
   포카치아:명:2
   포커:명:2
  @@ -53713,9 +53713,9 @@
   포클레인:명:6
   포탄:명:7
   포탈:명:1
  -포탈하다:동:2
  +포탈하:동:2
   포태:명:4
  -포태되다:동:1
  +포태되:동:1
   포토제닉상:명:1
   포트:명:1
   포트락:명:1
  @@ -53726,60 +53726,60 @@
   포플러:명:1
   포플러나무:명:1
   포함:명:36
  -포함되다:동:102
  -포함시키다:동:43
  -포함하다:동:203
  +포함되:동:102
  +포함시키:동:43
  +포함하:동:203
   포핸드:명:1
   포화:명:2
   포화:명:4
   포환:명:10
   포환던지기:명:6
   포효:명:1
  -포효하다:동:2
  +포효하:동:2
   폭:명:149
   폭:부:3
   폭:의:2
   폭거:명:1
   폭격:명:10
   폭격기:명:3
  -폭격당하다:동:1
  +폭격당하:동:1
   폭군:명:1
  -폭넓다:형:59
  +폭넓:형:59
   폭도:명:2
   폭동:명:18
   폭등:명:9
   폭등세:명:1
  -폭등하다:동:4
  +폭등하:동:4
   폭락:명:13
  -폭락되다:동:1
  -폭락하다:동:12
  +폭락되:동:1
  +폭락하:동:12
   폭력:명:161
   폭력단:명:1
   폭력배:명:9
   폭력성:명:7
   폭력적:관:4
   폭력적:명:7
  -폭력화되다:동:1
  +폭력화되:동:1
   폭로:명:9
  -폭로되다:동:2
  +폭로되:동:2
   폭로전:명:4
  -폭로하다:동:21
  +폭로하:동:21
   폭리:명:1
   폭발:명:20
   폭발:명:6
   폭발력:명:2
   폭발물:명:1
   폭발성:명:1
  -폭발시키다:동:2
  +폭발시키:동:2
   폭발적:관:6
   폭발적:명:14
  -폭발하다:동:9
  -폭발하다:동:9
  +폭발하:동:9
  +폭발하:동:9
   폭삭:부:8
   폭서:명:1
   폭설:명:11
   폭소:명:13
  -폭신하다:형:2
  +폭신하:형:2
   폭압:명:1
   폭압적:관:1
   폭압적:명:2
  @@ -53792,16 +53792,16 @@
   폭음:명:8
   폭정:명:1
   폭주:명:1
  -폭주하다:동:6
  +폭주하:동:6
   폭죽:명:2
   폭증:명:1
  -폭증하다:동:4
  +폭증하:동:4
   폭탄:명:28
   폭탄선언:명:2
   폭탄주:명:3
   폭파:명:10
  -폭파당하다:동:1
  -폭파하다:동:3
  +폭파당하:동:1
  +폭파하:동:3
   폭포:명:5
   폭포수:명:1
   폭폭:부:2
  @@ -53809,8 +53809,8 @@
   폭풍:명:18
   폭풍우:명:6
   폭행:명:18
  -폭행당하다:동:2
  -폭행하다:동:9
  +폭행당하:동:2
  +폭행하:동:9
   폰:명:1
   폰트:명:1
   폰팅:명:1
  @@ -53826,7 +53826,7 @@
   폴리유레스탄:명:1
   폴리페놀류:명:1
   폴짝:부:1
  -폴짝거리다:동:1
  +폴짝거리:동:1
   폴짝폴짝:부:2
   폴폴:부:1
   폼:명:10
  @@ -53842,55 +53842,55 @@
   표고버섯:명:14
   표구:명:1
   표기:명:10
  -표기되다:동:10
  +표기되:동:10
   표기법:명:1
  -표기하다:동:5
  -표랑하다:동:1
  +표기하:동:5
  +표랑하:동:1
   표류:명:11
  -표류당하다:동:1
  +표류당하:동:1
   표류자:명:1
  -표류하다:동:6
  +표류하:동:6
   표리:명:4
   표면:명:87
   표면적:관:3
   표면적:명:15
   표면적:명:2
   표면화:명:1
  -표면화되다:동:2
  -표면화하다:동:2
  +표면화되:동:2
  +표면화하:동:2
   표명:명:13
  -표명되다:동:1
  -표명하다:동:17
  -표방되다:동:1
  -표방하다:동:25
  +표명되:동:1
  +표명하:동:17
  +표방되:동:1
  +표방하:동:25
   표밭:명:4
   표백:명:9
  -표백되다:동:2
  +표백되:동:2
   표백미:명:1
  -표백하다:동:3
  +표백하:동:3
   표범:명:1
  -표변하다:동:1
  +표변하:동:1
   표본:명:15
   표본적:명:1
   표상:명:1
   표상:명:14
  -표상되다:동:3
  -표상하다:동:9
  -표상화되다:동:1
  +표상되:동:3
  +표상하:동:9
  +표상화되:동:1
   표석:명:1
   표수:명:1
   표수현위:명:1
   표시:명:34
   표시:명:34
   표시권:명:1
  -표시되다:동:13
  -표시되다:동:5
  +표시되:동:13
  +표시되:동:5
   표시등:명:1
   표시량:명:1
   표시설:명:1
   표시판:명:1
  -표시하다:동:18
  -표시하다:동:45
  +표시하:동:18
  +표시하:동:45
   표식:명:1
   표식판:명:1
   표어:명:7
  @@ -53901,7 +53901,7 @@
   표적물:명:1
   표전:명:1
   표절:명:10
  -표절하다:동:1
  +표절하:동:1
   표정:명:1
   표정:명:496
   표제:명:7
  @@ -53915,33 +53915,33 @@
   표준액:명:2
   표준어:명:5
   표준화:명:16
  -표준화되다:동:4
  -표준화시키다:동:1
  +표준화되:동:4
  +표준화시키:동:1
   표지:명:6
   표지:명:6
   표지색:명:1
   표지판:명:7
   표징:명:2
  -표징하다:동:1
  +표징하:동:1
   표창:명:4
   표창감:명:1
   표창록:명:1
  -표창받다:동:1
  +표창받:동:1
   표창장:명:1
  -표창하다:동:1
  +표창하:동:1
   표출:명:4
  -표출되다:동:20
  -표출시키다:동:1
  -표출하다:동:6
  +표출되:동:20
  +표출시키:동:1
  +표출하:동:6
   표토:명:6
   표토층:명:3
   표피:명:3
   표피적:관:1
  -표하다:동:20
  -표행하다:동:3
  +표하:동:20
  +표행하:동:3
   표현:명:403
  -표현되다:동:59
  -표현되어지다:동:1
  +표현되:동:59
  +표현되어지:동:1
   표현력:명:11
   표현물:명:6
   표현미:명:1
  @@ -53952,50 +53952,50 @@
   표현주의적:관:1
   표현주의적:명:1
   표현체:명:1
  -표현하다:동:297
  -표현화되다:동:1
  -표현화하다:동:1
  +표현하:동:297
  +표현화되:동:1
  +표현화하:동:1
   푯대:명:1
   푯말:명:3
   푸:부:2
  -푸근하다:형:7
  -푸근해지다:동:2
  +푸근하:형:7
  +푸근해지:동:2
   푸념:명:14
  -푸념하다:동:5
  -푸다:동:29
  +푸념하:동:5
  +푸:동:29
   푸닥거리:명:1
  -푸닥지다:형:1
  +푸닥지:형:1
   푸대:명:2
   푸대접:명:2
   푸대접론:명:1
  -푸대접하다:동:1
  +푸대접하:동:1
   푸덕:부:1
   푸드덕:부:3
   푸들:명:1
  -푸르다:형:188
  -푸르뎅뎅하다:형:2
  +푸르:형:188
  +푸르뎅뎅하:형:2
   푸르륵:부:1
  -푸르스름하다:형:9
  +푸르스름하:형:9
   푸른빛:명:2
   푸른색:명:12
  -푸릇하다:형:1
  -푸릿하다:형:1
  +푸릇하:형:1
  +푸릿하:형:1
   푸새:명:6
  -푸새하다:동:3
  -푸석푸석하다:형:3
  +푸새하:동:3
  +푸석푸석하:형:3
   푸성귀:명:3
   푸시:명:1
   푸시식:부:1
   푸실푸실:부:3
   푸아:감:2
  -푸짐하다:형:9
  +푸짐하:형:9
   푸푸:부:1
   푸하하하:감:2
   푹:부:43
  -푹석거리다:동:2
  +푹석거리:동:2
   푹신:부:1
  -푹신푹신하다:형:2
  -푹신하다:형:2
  +푹신푹신하:형:2
  +푹신하:형:2
   푹푹:부:11
   푼:의:55
   푼돈:명:4
  @@ -54008,37 +54008,37 @@
   풀:명:85
   풀기:명:8
   풀꽃:명:25
  -풀다:동:383
  +풀:동:383
   풀다운:명:1
   풀듀플렉스:명:1
  -풀려나다:동:22
  -풀려나오다:동:4
  -풀려지다:동:3
  +풀려나:동:22
  +풀려나오:동:4
  +풀려지:동:3
   풀루토늄:명:1
  -풀리다:동:130
  +풀리:동:130
   풀밭:명:18
   풀벌레:명:3
   풀뿌리:명:9
   풀숲:명:9
   풀싸리:명:1
   풀썩:부:5
  -풀썩하다:동:1
  -풀어내다:동:6
  -풀어놓다:동:2
  +풀썩하:동:1
  +풀어내:동:6
  +풀어놓:동:2
   풀어쓰기:명:1
  -풀어지다:동:15
  -풀어헤쳐지다:동:2
  -풀어헤치다:동:4
  +풀어지:동:15
  +풀어헤쳐지:동:2
  +풀어헤치:동:4
   풀이:명:14
  -풀이되다:동:21
  -풀이하다:동:28
  +풀이되:동:21
  +풀이하:동:28
   풀잎:명:7
   풀장:명:3
   풀죽:명:1
   풀줄기:명:2
   풀쩍:부:2
   풀칠:명:6
  -풀칠하다:동:5
  +풀칠하:동:5
   풀코스:명:4
   풀포기:명:2
   풀풀:부:8
  @@ -54052,8 +54052,8 @@
   품계석:명:4
   품관:명:3
   품귀:명:2
  -품다:동:1
  -품다:동:63
  +품:동:1
  +품:동:63
   품목:명:80
   품바:명:8
   품사:명:1
  @@ -54064,7 +54064,7 @@
   품속:명:9
   품앗이:명:3
   품앗이꾼:명:1
  -품앗이하다:동:1
  +품앗이하:동:1
   품위:명:16
   품제:명:1
   품종:명:8
  @@ -54084,7 +54084,7 @@
   풋워크:명:3
   풋코:명:2
   풋콩:명:12
  -풋풋하다:형:9
  +풋풋하:형:9
   풍:명:1
   풍:명:15
   풍각쟁이:명:1
  @@ -54096,26 +54096,26 @@
   풍구:명:2
   풍금:명:9
   풍금쟁이:명:1
  -풍기다:동:70
  +풍기:동:70
   풍년:명:9
   풍년가:명:1
   풍덩:부:3
   풍뎅이:명:2
   풍랑:명:1
  -풍려하다:형:1
  +풍려하:형:1
   풍력:명:5
   풍류:명:13
   풍류도:명:4
  -풍만하다:형:5
  +풍만하:형:5
   풍모:명:5
   풍문:명:7
   풍물:명:1
   풍미:명:9
  -풍미하다:동:9
  +풍미하:동:9
   풍백:명:1
   풍부:명:1
  -풍부하다:형:116
  -풍부해지다:동:3
  +풍부하:형:116
  +풍부해지:동:3
   풍부화:명:1
   풍비박산:명:1
   풍사:명:2
  @@ -54125,8 +54125,8 @@
   풍설:명:1
   풍성:명:1
   풍성감:명:1
  -풍성풍성하다:형:1
  -풍성하다:형:25
  +풍성풍성하:형:1
  +풍성하:형:25
   풍성히:부:2
   풍속:명:42
   풍속:명:5
  @@ -54151,11 +54151,11 @@
   풍습성:명:1
   풍악:명:3
   풍요:명:18
  -풍요로워지다:동:1
  -풍요롭다:형:22
  +풍요로워지:동:1
  +풍요롭:형:22
   풍요성:명:1
  -풍요하다:형:10
  -풍요해지다:동:1
  +풍요하:형:10
  +풍요해지:동:1
   풍우:명:1
   풍운:명:3
   풍운아:명:1
  @@ -54166,15 +54166,15 @@
   풍자시:명:2
   풍자적:명:1
   풍자집:명:4
  -풍자하다:동:9
  +풍자하:동:9
   풍작:명:2
   풍장:명:1
   풍장:명:2
   풍장터:명:3
   풍정:명:1
   풍조:명:32
  -풍족하다:형:10
  -풍족해지다:동:1
  +풍족하:형:10
  +풍족해지:동:1
   풍차:명:3
   풍채:명:1
   풍취:명:1
  @@ -54187,7 +54187,7 @@
   풍편:명:1
   풍향:명:4
   풍화:명:4
  -풍화되다:동:2
  +풍화되:동:2
   퓨마:명:5
   프라우드우먼:명:1
   프라이:명:4
  @@ -54202,7 +54202,7 @@
   프랜차이저:명:1
   프랜차이즈:명:1
   프러포즈:명:4
  -프러포즈하다:동:1
  +프러포즈하:동:1
   프런트:명:2
   프런티어:명:2
   프레:명:1
  @@ -54217,7 +54217,7 @@
   프로그래밍:명:23
   프로그램:명:547
   프로그램권:명:1
  -프로그램화하다:동:1
  +프로그램화하:동:1
   프로덕션:명:2
   프로듀서:명:21
   프로모터:명:7
  @@ -54230,7 +54230,7 @@
   프로페셔널:명:1
   프로펠러:명:6
   프로필:명:1
  -프로하다:동:1
  +프로하:동:1
   프로화:명:6
   프롤레타리아:명:11
   프롤레타리아적:관:1
  @@ -54245,9 +54245,9 @@
   프리즘:명:4
   프린터:명:35
   프린트:명:6
  -프린트되다:동:1
  +프린트되:동:1
   프린트물:명:1
  -프린트하다:동:4
  +프린트하:동:4
   프린팅:명:2
   프림:명:6
   프티비지:명:1
  @@ -54266,7 +54266,7 @@
   플랫:명:1
   플랫폼:명:4
   플러스:명:3
  -플러스하다:동:2
  +플러스하:동:2
   플레어스커트:명:2
   플레이:명:25
   플레이버:명:1
  @@ -54287,7 +54287,7 @@
   피검사:명:1
   피겨:명:12
   피격:명:1
  -피격되다:동:1
  +피격되:동:1
   피고:명:24
   피고름:명:1
   피고발인:명:1
  @@ -54295,31 +54295,31 @@
   피고인:명:38
   피고인석:명:1
   피곤:명:17
  -피곤하다:형:81
  -피곤해지다:동:1
  -피곤해하다:동:1
  +피곤하:형:81
  +피곤해지:동:1
  +피곤해하:동:1
   피곤히:부:1
   피골:명:1
   피교육자:명:4
   피구금자:명:5
   피구속성:명:1
   피구속자:명:1
  -피나다:동:8
  +피나:동:8
   피난:명:25
   피난길:명:1
   피난민:명:5
   피난지:명:1
   피난처:명:2
  -피난하다:동:2
  +피난하:동:2
   피날레:명:1
   피눈물:명:1
  -피다:동:10
  -피다:동:127
  +피:동:10
  +피:동:127
   피더블유:명:2
   피돌기:명:1
   피동적:관:1
   피동적:명:6
  -피둥피둥하다:형:1
  +피둥피둥하:형:1
   피드백:명:2
   피디:명:35
   피디아르론자:명:1
  @@ -54329,20 +54329,20 @@
   피라미드:명:11
   피란:명:1
   피력:명:2
  -피력되다:동:1
  -피력하다:동:14
  +피력되:동:1
  +피력하:동:14
   피로:명:66
   피로감:명:12
   피로도:명:1
   피로연:명:9
  -피로하다:형:18
  -피로해지다:동:6
  +피로하:형:18
  +피로해지:동:6
   피뢰침:명:1
   피륙:명:4
   피리:명:7
   피망:명:29
   피망전:명:1
  -피맺히다:동:1
  +피맺히:동:1
   피멍:명:4
   피바다:명:1
   피발행인:명:1
  @@ -54350,7 +54350,7 @@
   피벗:명:1
   피보호:명:1
   피복:명:4
  -피복하다:동:3
  +피복하:동:3
   피부:명:193
   피부:명:6
   피부과:명:2
  @@ -54362,8 +54362,8 @@
   피비린내:명:2
   피사체:명:2
   피살:명:13
  -피살당하다:동:1
  -피살되다:동:3
  +피살당하:동:1
  +피살되:동:3
   피삼삼팔:명:1
   피상성:명:1
   피상적:관:1
  @@ -54372,21 +54372,21 @@
   피서객:명:8
   피서법:명:3
   피서지:명:5
  -피서하다:동:1
  +피서하:동:1
   피선거권:명:2
  -피선되다:동:1
  +피선되:동:1
   피스톤:명:2
   피습:명:5
  -피습되다:동:1
  +피습되:동:1
   피시:명:70
   피시에스:명:1
   피식:부:24
   피식피식:부:1
   피신:명:3
  -피신시키다:동:3
  +피신시키:동:3
   피신처:명:1
   피신청인:명:1
  -피신하다:동:3
  +피신하:동:3
   피아노:명:42
   피아니스트:명:3
   피아르:명:2
  @@ -54395,23 +54395,23 @@
   피안적:관:2
   피안적:명:1
   피압박:명:1
  -피어나다:동:28
  -피어리다:형:1
  -피어오르다:동:19
  +피어나:동:28
  +피어리:형:1
  +피어오르:동:19
   피에스:명:1
   피엑스:명:5
   피오에스:명:2
   피오줌:명:2
   피용인:명:1
  -피우다:동:186
  -피워지다:동:1
  +피우:동:186
  +피워지:동:1
   피의:명:5
   피의자:명:67
   피이티:명:11
   피임:명:17
   피임법:명:9
   피임약:명:4
  -피임하다:동:1
  +피임하:동:1
   피자:명:20
   피장파장:명:3
   피전:명:1
  @@ -54438,20 +54438,20 @@
   피켓:명:2
   피크:명:1
   피클:명:24
  -피타다:동:1
  +피타:동:1
   피타전:명:1
   피투성이:명:10
   피트:의:1
   피폐:명:1
  -피폐하다:동:2
  -피폐해지다:동:3
  +피폐하:동:2
  +피폐해지:동:3
   피폐화:명:1
   피폭자:명:1
   피플:명:1
   피피비:의:1
   피피엠:의:10
   피하:명:5
  -피하다:동:270
  +피하:동:270
   피항:명:1
   피해:명:215
   피해망상증:명:1
  @@ -54459,12 +54459,12 @@
   피해자:명:61
   픽:부:6
   픽업:명:1
  -픽업되다:동:1
  +픽업되:동:1
   핀:명:3
   핀볼:명:3
   핀셋:명:1
   핀잔:명:9
  -핀잔하다:동:1
  +핀잔하:동:1
   핀치히터:명:1
   필:의:1
   필:의:2
  @@ -54474,7 +54474,7 @@
   필기도구:명:1
   필기시험:명:6
   필기시험지:명:1
  -필기하다:동:1
  +필기하:동:1
   필대:명:1
   필독:명:2
   필두:명:6
  @@ -54515,16 +54515,16 @@
   필요량:명:1
   필요성:명:105
   필요악:명:3
  -필요없다:형:1
  +필요없:형:1
   필요조건:명:3
   필요충분조건:명:2
  -필요하다:형:774
  -필요해지다:동:3
  -필요허다:형:1
  +필요하:형:774
  +필요해지:동:3
  +필요허:형:1
   필자:명:107
   필자형:명:1
   필적:명:1
  -필적하다:동:3
  +필적하:동:3
   필진:명:4
   필체:명:4
   필치:명:6
  @@ -54549,8 +54549,8 @@
   핑:부:14
   핑거볼:명:9
   핑계:명:42
  -핑계대다:동:1
  -핑계하다:동:1
  +핑계대:동:1
  +핑계하:동:1
   핑곗거리:명:2
   핑그르르:부:1
   핑매:명:3
  @@ -54567,22 +54567,22 @@
   하강:명:8
   하강기:명:1
   하강세:명:2
  -하강하다:동:2
  +하강하:동:2
   하객:명:9
   하게:명:1
   하계:명:2
   하계:명:3
   하계절:명:2
  -하고많다:형:1
  +하고많:형:1
   하곡:명:1
   하곡:명:1
   하곡지:명:2
   하관:명:1
   하관:명:2
   하관시:명:1
  -하관하다:동:1
  +하관하:동:1
   하교:명:3
  -하교하다:동:1
  +하교하:동:1
   하굣길:명:1
   하구:명:15
   하권:명:1
  @@ -54594,8 +54594,8 @@
   하기야:접:21
   하긴:접:65
   하나:명:807
  -하나:수:1,346
  -하나같다:형:2
  +하나:수:1346
  +하나같:형:2
   하나같이:부:28
   하나님:명:19
   하나둘:수:1
  @@ -54607,22 +54607,22 @@
   하느작하느작:부:1
   하늘:명:562
   하늘가:명:1
  -하늘거리다:동:10
  +하늘거리:동:10
   하늘나라:명:7
   하늘나리:명:2
   하늘빛:명:2
   하늘색:명:7
   하늘하늘:부:1
  -하늘하늘하다:형:1
  +하늘하늘하:형:1
   하늬바람:명:1
  -하다:동:22,064
  -하다:보:10,758
  +하:동:22064
  +하:보:10758
   하다못해:부:14
   하단:명:1
   하단:명:1
   하단부:명:1
   하달:명:2
  -하달시키다:동:1
  +하달시키:동:1
   하달식:명:2
   하대:명:23
   하도:명:1
  @@ -54634,10 +54634,10 @@
   하등:명:7
   하락:명:19
   하락기:명:1
  -하락되다:동:1
  +하락되:동:1
   하락률:명:1
   하락세:명:8
  -하락하다:동:16
  +하락하:동:16
   하례:명:1
   하례:명:1
   하례객:명:1
  @@ -54660,13 +54660,13 @@
   하르르:부:2
   하르르하르르:부:1
   하리꼬미:명:1
  -하릴없다:형:2
  +하릴없:형:2
   하릴없이:부:5
   하마:명:1
   하마:명:2
   하마:부:3
   하마터면:부:19
  -하명하다:동:1
  +하명하:동:1
   하모:감:5
   하모니:명:3
   하모니즘:명:1
  @@ -54685,19 +54685,19 @@
   하사:명:20
   하사관:명:5
   하사금:명:1
  -하사받다:동:1
  +하사받:동:1
   하사품:명:2
  -하사하다:동:3
  +하사하:동:3
   하산:명:1
  -하산하다:동:4
  +하산하:동:4
   하삼도:명:1
   하상:명:1
   하상:명:3
   하선동력:명:1
  -하선하다:동:9
  +하선하:동:9
   하소연:명:10
  -하소연하다:동:10
  -하소하다:동:1
  +하소연하:동:10
  +하소하:동:1
   하수:명:11
   하수구:명:1
   하수도:명:5
  @@ -54709,31 +54709,31 @@
   하숙방:명:6
   하숙비:명:10
   하숙생:명:14
  -하숙시키다:동:1
  +하숙시키:동:1
   하숙집:명:51
   하숙집형:명:1
  -하숙하다:동:4
  +하숙하:동:4
   하순:명:12
   하시:대:1
   하야:명:1
   하얀색:명:1
   하양:명:2
  -하얗다:형:150
  -하얘지다:동:1
  +하얗:형:150
  +하얘지:동:1
   하여:부:1
   하여간:부:21
   하여간에:부:1
   하여금:부:115
   하여튼:부:77
   하역:명:18
  -하역하다:동:3
  -하염없다:형:3
  -하염없어지다:동:1
  +하역하:동:3
  +하염없:형:3
  +하염없어지:동:1
   하염없이:부:8
   하오:명:19
  -하옥되다:동:2
  -하옥시키다:동:1
  -하옥하다:동:1
  +하옥되:동:2
  +하옥시키:동:1
  +하옥하:동:1
   하우스:명:13
   하원:명:9
   하위:명:26
  @@ -54750,7 +54750,7 @@
   하이라이트:명:3
   하이비전:명:5
   하이비조닉:명:1
  -하이비조닉하다:동:1
  +하이비조닉하:동:1
   하이스쿨:명:1
   하이웨이:명:1
   하이킹화:명:1
  @@ -54758,7 +54758,7 @@
   하이힐:명:7
   하인:명:19
   하자:명:15
  -하잘것없다:형:3
  +하잘것없:형:3
   하적호:명:1
   하주:명:5
   하중:명:2
  @@ -54766,12 +54766,12 @@
   하지:명:6
   하지만:접:440
   하직:명:4
  -하직하다:동:3
  +하직하:동:3
   하진부:명:1
   하짓날:명:1
   하차:명:1
  -하차하다:동:4
  -하찮다:형:25
  +하차하:동:4
  +하찮:형:25
   하책:명:1
   하천:명:94
   하천가:명:2
  @@ -54784,7 +54784,7 @@
   하키:명:3
   하트형:명:2
   하품:명:25
  -하품하다:동:2
  +하품하:동:2
   하프:명:4
   하필:부:50
   하하:감:5
  @@ -54797,7 +54797,7 @@
   하행선:명:8
   하향:명:1
   하향:명:9
  -하향하다:동:1
  +하향하:동:1
   하현:명:1
   하혈:명:1
   하혈량:명:1
  @@ -54808,9 +54808,9 @@
   학과:명:3
   학과란:명:1
   학과장:명:1
  -학교:명:1,303
  +학교:명:1303
   학교생활:명:16
  -학교생활하다:동:1
  +학교생활하:동:1
   학교장:명:15
   학구열:명:1
   학구적:명:2
  @@ -54824,8 +54824,8 @@
   학년생:명:5
   학당:명:1
   학대:명:6
  -학대받다:동:2
  -학대하다:동:4
  +학대받:동:2
  +학대하:동:4
   학덕:명:4
   학도:명:7
   학도대:명:3
  @@ -54842,7 +54842,7 @@
   학문:명:125
   학문적:관:26
   학문적:명:14
  -학문하다:동:2
  +학문하:동:2
   학반:명:1
   학번:명:59
   학벌:명:16
  @@ -54880,10 +54880,10 @@
   학습:명:84
   학습권:명:1
   학습량:명:3
  -학습시키다:동:1
  +학습시키:동:1
   학습장:명:1
   학습지:명:7
  -학습하다:동:7
  +학습하:동:7
   학식:명:4
   학업:명:22
   학연:명:1
  @@ -54915,26 +54915,26 @@
   학회장:명:1
   학회지:명:3
   학훈단:명:1
  -한:관:4,485
  +한:관:4485
   한:명:215
   한:명:54
   한가:명:3
   한가득:부:2
   한가로이:부:5
  -한가롭다:형:7
  +한가롭:형:7
   한가운데:명:60
   한가위:명:8
   한가족:명:1
   한가지:명:8
  -한가하다:형:26
  +한가하:형:26
   한갓:부:7
  -한갓지다:형:1
  +한갓지:형:1
   한거:명:1
   한걸음:명:2
   한겨레:명:3
   한겨울:명:15
   한결:부:29
  -한결같다:형:13
  +한결같:형:13
   한결같이:부:48
   한계:명:222
   한계성:명:7
  @@ -54949,13 +54949,13 @@
   한국적:명:20
   한국학:명:1
   한국화:명:2
  -한국화되다:동:1
  +한국화되:동:1
   한군데:명:8
   한글:명:182
   한글날:명:5
   한글판:명:3
   한글화:명:4
  -한글화하다:동:1
  +한글화하:동:1
   한기:명:9
   한길:명:2
   한길:명:3
  @@ -54969,7 +54969,7 @@
   한낱:부:11
   한눈:명:40
   한눈:명:5
  -한눈팔다:동:3
  +한눈팔:동:3
   한달음:명:1
   한데:명:1
   한데:명:29
  @@ -54982,14 +54982,14 @@
   한두:관:132
   한두해살이:명:7
   한둘:수:16
  -한들거리다:동:1
  +한들거리:동:1
   한딱가리:명:1
   한때:명:132
   한때:부:1
   한뜻:명:1
  -한랭하다:형:1
  +한랭하:형:1
   한량:명:1
  -한량없다:형:4
  +한량없:형:4
   한로:명:1
   한류:명:4
   한림원:명:1
  @@ -55000,13 +55000,13 @@
   한말:명:1
   한목소리:명:1
   한몫:명:19
  -한몫하다:동:4
  -한묶음되다:동:1
  +한몫하:동:4
  +한묶음되:동:1
   한문:명:48
   한문단:명:1
   한문식:명:3
   한물:명:1
  -한물가다:동:3
  +한물가:동:3
   한민족:명:1
   한바탕:명:1
   한바탕:부:29
  @@ -55029,8 +55029,8 @@
   한복집:명:1
   한복판:명:23
   한사코:부:15
  -한산하다:형:7
  -한산해지다:동:1
  +한산하:형:7
  +한산해지:동:1
   한서:명:2
   한세상:명:2
   한소끔:부:12
  @@ -55040,7 +55040,7 @@
   한술:명:16
   한숨:명:11
   한숨:명:98
  -한숨짓다:동:2
  +한숨짓:동:2
   한숲:명:1
   한시:명:3
   한시:명:6
  @@ -55056,10 +55056,10 @@
   한식구:명:1
   한식집:명:3
   한심:명:1
  -한심스러워하다:동:1
  -한심스럽다:형:8
  +한심스러워하:동:1
  +한심스럽:형:8
   한심유항:명:2
  -한심하다:형:26
  +한심하:형:26
   한약:명:9
   한약물:명:3
   한약방:명:5
  @@ -55068,16 +55068,16 @@
   한어:명:1
   한어머니:명:1
   한어미:명:1
  -한없다:형:8
  +한없:형:8
   한없이:부:50
   한여름:명:29
  -한역되다:동:1
  +한역되:동:1
   한영:명:1
   한옥:명:5
   한우:명:5
   한울:명:10
   한울타리:명:1
  -한유하다:형:1
  +한유하:형:1
   한의사:명:12
   한의원:명:2
   한의학:명:1
  @@ -55091,20 +55091,20 @@
   한자식:명:1
   한자어:명:7
   한잔:명:37
  -한잔하다:동:27
  +한잔하:동:27
   한잠:명:1
   한잠:명:5
   한재:명:1
   한저녁:명:1
  -한적하다:형:17
  -한적해지다:동:2
  +한적하:형:17
  +한적해지:동:2
   한정:명:9
  -한정되다:동:60
  -한정시키다:동:7
  +한정되:동:60
  +한정시키:동:7
   한정식:명:3
   한정적:관:1
   한정적:명:1
  -한정하다:동:19
  +한정하:동:19
   한조:명:1
   한줄기:명:6
   한중간:명:1
  @@ -55134,12 +55134,12 @@
   한칼:명:1
   한타:명:1
   한탄:명:5
  -한탄하다:동:11
  +한탄하:동:11
   한탕:명:1
   한탕주의:명:2
   한탕주의식:명:1
   한턱:명:5
  -한턱내다:동:7
  +한턱내:동:7
   한통속:명:9
   한파:명:12
   한판:명:20
  @@ -55152,7 +55152,7 @@
   한풀:명:5
   한풀이:명:3
   한핏줄:명:1
  -한하다:동:34
  +한하:동:34
   한학자:명:1
   한학파:명:1
   한해:명:1
  @@ -55161,14 +55161,14 @@
   할:명:2
   할:의:13
   할거주의:명:2
  -할기작거리다:동:1
  +할기작거리:동:1
   할당:명:3
  -할당되다:동:2
  -할당받다:동:1
  +할당되:동:2
  +할당받:동:1
   할당제:명:2
  -할당하다:동:4
  -할딱거리다:동:1
  -할딱이다:동:1
  +할당하:동:4
  +할딱거리:동:1
  +할딱이:동:1
   할마마마:명:1
   할망구:명:5
   할매:명:30
  @@ -55187,29 +55187,29 @@
   할아버지:명:321
   할아범:명:2
   할아비:명:6
  -할애되다:동:1
  -할애하다:동:7
  +할애되:동:1
  +할애하:동:7
   할인:명:21
  -할인되다:동:1
  +할인되:동:1
   할인율:명:6
   할인점:명:1
  -할인하다:동:3
  +할인하:동:3
   할증료:명:2
  -할퀴다:동:11
  -핥다:동:14
  +할퀴:동:11
  +핥:동:14
   함:명:26
   함구령:명:3
  -함께:부:1,501
  -함께하다:동:27
  +함께:부:1501
  +함께하:동:27
   함담:명:1
   함대:명:10
   함락:명:3
  -함락당하다:동:1
  -함락되다:동:4
  -함락시키다:동:6
  +함락당하:동:1
  +함락되:동:4
  +함락시키:동:6
   함량:명:5
  -함몰되다:동:5
  -함몰시키다:동:1
  +함몰되:동:5
  +함몰시키:동:1
   함바집:명:1
   함박:명:1
   함박꽃:명:2
  @@ -55221,11 +55221,11 @@
   함성:명:14
   함수:명:12
   함양:명:4
  -함양되다:동:1
  -함양하다:동:5
  -함유되다:동:12
  +함양되:동:1
  +함양하:동:5
  +함유되:동:12
   함유량:명:2
  -함유하다:동:10
  +함유하:동:10
   함의:명:5
   함자:명:1
   함정:명:1
  @@ -55233,35 +55233,35 @@
   함지:명:3
   함지박:명:7
   함진아비:명:1
  -함초롬하다:형:1
  +함초롬하:형:1
   함축:명:2
  -함축되다:동:3
  +함축되:동:3
   함축성:명:1
  -함축시키다:동:3
  +함축시키:동:3
   함축적:관:1
   함축적:명:1
  -함축하다:동:5
  +함축하:동:5
   함포:명:2
   합:명:6
   합격:명:26
  -합격되다:동:2
  +합격되:동:2
   합격률:명:1
   합격생:명:2
   합격선:명:1
  -합격시키다:동:6
  +합격시키:동:6
   합격자:명:3
   합격점:명:3
  -합격하다:동:27
  +합격하:동:27
   합계:명:22
   합곡:명:1
   합금:명:5
   합기덕:명:1
  -합기덕하다:동:1
  +합기덕하:동:1
   합당:명:26
  -합당하다:형:16
  +합당하:형:16
   합동:명:34
   합류:명:3
  -합류하다:동:19
  +합류하:동:19
   합리:명:2
   합리성:명:13
   합리적:관:17
  @@ -55269,9 +55269,9 @@
   합리주의:명:11
   합리주의적:명:1
   합리화:명:20
  -합리화되다:동:3
  -합리화시키다:동:6
  -합리화하다:동:11
  +합리화되:동:3
  +합리화시키:동:6
  +합리화하:동:11
   합목적적:관:1
   합목적적:명:1
   합방:명:1
  @@ -55282,75 +55282,75 @@
   합법칙성:명:3
   합법칙적:명:4
   합법화:명:2
  -합법화되다:동:2
  -합법화시키다:동:1
  -합법화하다:동:1
  +합법화되:동:2
  +합법화시키:동:1
  +합법화하:동:1
   합병:명:8
  -합병되다:동:2
  +합병되:동:2
   합병증:명:3
  -합병하다:동:5
  +합병하:동:5
   합산:명:2
  -합산되다:동:1
  -합산하다:동:2
  +합산되:동:1
  +합산하:동:2
   합석:명:2
   합선:명:3
   합성:명:13
  -합성되다:동:1
  +합성되:동:1
   합성수지:명:2
   합성수지제:명:1
   합성어:명:1
  -합성하다:동:9
  +합성하:동:9
   합세:명:3
  -합세되다:동:1
  -합세하다:동:8
  +합세되:동:1
  +합세하:동:8
   합수:명:2
   합숙:명:6
   합숙소:명:4
  -합숙시키다:동:1
  +합숙시키:동:1
   합승:명:2
  -합승하다:동:1
  +합승하:동:1
   합심:명:1
  -합심하다:동:2
  +합심하:동:2
   합의:명:109
   합의:명:22
  -합의되다:동:10
  +합의되:동:10
   합의부:명:1
   합의서:명:20
   합의제:명:1
  -합의하다:동:2
  -합의하다:동:62
  +합의하:동:2
  +합의하:동:62
   합일:명:9
  -합일되다:동:3
  -합일시키다:동:1
  +합일되:동:3
  +합일시키:동:1
   합일적:명:1
   합일점:명:1
  -합일하다:동:2
  +합일하:동:2
   합자:명:1
   합자사:명:1
  -합자연하다:동:1
  +합자연하:동:1
   합작:명:29
   합작사:명:1
   합작품:명:2
   합장:명:2
  -합장하다:동:2
  +합장하:동:2
   합종:명:1
  -합종연횡하다:동:1
  -합주하다:동:1
  +합종연횡하:동:1
  +합주하:동:1
   합참:명:12
   합창:명:13
   합창가:명:2
   합창단:명:10
  -합창하다:동:3
  +합창하:동:3
   합체:명:1
  -합쳐지다:동:11
  -합치다:동:75
  -합치되다:동:6
  -합치시키다:동:1
  -합치하다:동:1
  +합쳐지:동:11
  +합치:동:75
  +합치되:동:6
  +합치시키:동:1
  +합치하:동:1
   합판:명:2
  -합하다:동:28
  -합하여지다:동:1
  -합해지다:동:3
  +합하:동:28
  +합하여지:동:1
  +합해지:동:3
   합헌:명:3
   합헌성:명:1
   합헌적:명:1
  @@ -55366,10 +55366,10 @@
   항:명:57
   항간:명:13
   항거:명:5
  -항거하다:동:6
  +항거하:동:6
   항고:명:8
   항고인:명:1
  -항고하다:동:2
  +항고하:동:2
   항공:명:29
   항공관:명:1
   항공관제:명:1
  @@ -55397,10 +55397,10 @@
   항문:명:8
   항변:명:1
   항변:명:3
  -항변하다:동:2
  -항변하다:동:3
  +항변하:동:2
  +항변하:동:3
   항복:명:14
  -항복하다:동:13
  +항복하:동:13
   항산화제:명:1
   항상:부:287
   항상성:명:1
  @@ -55412,7 +55412,7 @@
   항성표:명:1
   항소:명:7
   항소심:명:5
  -항소하다:동:1
  +항소하:동:1
   항수:명:2
   항수적:명:1
   항습:명:1
  @@ -55431,183 +55431,183 @@
   항의문:명:1
   항의서:명:2
   항의성:관:1
  -항의하다:동:18
  +항의하:동:18
   항일:명:7
   항쟁:명:86
  -항쟁하다:동:1
  +항쟁하:동:1
   항전:명:4
  -항전하다:동:1
  +항전하:동:1
   항진:명:2
   항진:명:4
  -항진되다:동:3
  -항진하다:동:1
  +항진되:동:3
  +항진하:동:1
   항차:명:4
   항체:명:7
   항해:명:35
   항해술:명:1
  -항해하다:동:10
  +항해하:동:10
   항히스타민제:명:1
   해:명:17
   해:명:287
   해:의:148
   해감:명:1
   해결:명:112
  -해결되다:동:65
  +해결되:동:65
   해결법:명:1
   해결사:명:5
   해결안:명:1
   해결점:명:2
   해결책:명:27
  -해결하다:동:200
  +해결하:동:200
   해경:명:1
   해고:명:23
  -해고당하다:동:1
  -해고되다:동:1
  +해고당하:동:1
  +해고되:동:1
   해고자:명:2
   해고제:명:5
  -해고하다:동:1
  +해고하:동:1
   해골:명:17
  -해괴망측하다:형:3
  -해괴하다:형:10
  +해괴망측하:형:3
  +해괴하:형:10
   해군:명:51
   해금:명:3
  -해금되다:동:1
  +해금되:동:1
   해난:명:1
   해남말발도리:명:1
   해내:명:2
  -해내다:동:60
  +해내:동:60
   해녀:명:2
   해님:명:13
   해답:명:34
   해당:명:68
   해당국:명:1
  -해당되다:동:57
  +해당되:동:57
   해당란:명:2
   해당자:명:4
  -해당하다:동:100
  +해당하:동:100
   해당화:명:2
   해독:명:13
   해독:명:6
   해독률:명:1
   해독성:명:1
   해독제:명:1
  -해독하다:동:5
  +해독하:동:5
   해돋이:명:1
   해동:명:2
   해동:명:7
  -해동되다:동:1
  +해동되:동:1
   해동종:명:1
  -해동하다:동:1
  +해동하:동:1
   해득률:명:1
   해뜨기:명:1
   해로:명:1
   해로:명:2
  -해로하다:동:1
  -해롭다:형:30
  -해롱대다:동:2
  +해로하:동:1
  +해롭:형:30
  +해롱대:동:2
   해류:명:1
   해마:명:1
   해마다:부:85
  -해맑다:형:9
  +해맑:형:9
   해머:명:5
   해면:명:2
   해명:명:53
  -해명되다:동:8
  -해명하다:동:54
  +해명되:동:8
  +해명하:동:54
   해몽:명:1
  -해묵다:동:10
  +해묵:동:10
   해물:명:16
   해물탕:명:3
   해바라기:명:2
   해바라기:명:7
   해바라기성:명:2
  -해박하다:형:6
  +해박하:형:6
   해발:명:15
   해방:명:195
   해방감:명:10
   해방구:명:2
   해방군:명:5
   해방기:명:1
  -해방되다:동:41
  +해방되:동:41
   해방론자:명:1
  -해방시키다:동:12
  +해방시키:동:12
   해방자:명:1
   해방적:명:1
   해방전:명:1
  -해방하다:동:11
  +해방하:동:11
   해법:명:5
   해변:명:14
   해변가:명:6
   해병:명:4
   해병대:명:6
  -해보다:동:2
  +해보:동:2
   해부:명:4
  -해부하다:동:2
  +해부하:동:2
   해부학적:관:2
   해부학적:명:1
   해빙:명:1
   해빙기:명:1
  -해사하다:형:1
  +해사하:형:1
   해산:명:3
   해산권:명:2
  -해산당하다:동:1
  -해산되다:동:3
  +해산당하:동:1
  +해산되:동:3
   해산물:명:3
  -해산시키다:동:1
  +해산시키:동:1
   해산일:명:1
  -해산하다:동:3
  -해산하다:동:3
  +해산하:동:3
  +해산하:동:3
   해상:명:3
   해상:명:30
   해상도:명:9
   해서체:명:2
   해석:명:67
   해석:명:72
  -해석되다:동:14
  +해석되:동:14
   해석론:명:2
   해석자:명:5
   해석적:관:2
   해석적:명:1
  -해석하다:동:16
  -해석하다:동:62
  +해석하:동:16
  +해석하:동:62
   해석학:명:3
   해석학적:관:28
   해설:명:38
   해설가:명:2
   해설서:명:2
   해설자:명:12
  -해설하다:동:1
  +해설하:동:1
   해소:명:46
  -해소되다:동:16
  +해소되:동:16
   해소법:명:1
  -해소시키다:동:6
  +해소시키:동:6
   해소책:명:2
  -해소하다:동:34
  +해소하:동:34
   해송:명:3
   해수:명:2
   해수면:명:4
   해수병:명:1
   해수욕:명:6
   해수욕장:명:15
  -해수욕하다:동:1
  +해수욕하:동:1
   해시계:명:2
   해시라이스:명:1
   해쑥:명:1
  -해쓱하다:형:1
  -해쓱해지다:동:1
  +해쓱하:형:1
  +해쓱해지:동:1
   해악:명:4
   해악적:관:1
   해안:명:56
   해안가:명:3
   해안선:명:19
   해안통:명:22
  -해약하다:동:1
  +해약하:동:1
   해양:명:19
   해양국:명:1
   해양대:명:1
   해양성:명:1
   해양인:명:3
  -해어지다:동:4
  +해어지:동:4
   해역:명:6
   해열제:명:2
   해왕성:명:1
  @@ -55617,15 +55617,15 @@
   해운:명:7
   해원:명:1
   해이:명:1
  -해이되다:동:2
  -해이하다:형:2
  -해이해지다:동:4
  +해이되:동:2
  +해이하:형:2
  +해이해지:동:4
   해인:명:1
   해임:명:21
  -해임당하다:동:2
  -해임되다:동:2
  -해임시키다:동:1
  -해임하다:동:4
  +해임당하:동:2
  +해임되:동:2
  +해임시키:동:1
  +해임하:동:4
   해장:명:3
   해장국:명:4
   해장술:명:2
  @@ -55634,35 +55634,35 @@
   해전:명:5
   해제:명:14
   해제경보:명:1
  -해제되다:동:3
  -해제하다:동:10
  +해제되:동:3
  +해제하:동:10
   해조류:명:3
   해종일:명:1
   해지:명:1
  -해지다:동:3
  -해지다:동:4
  +해지:동:3
  +해지:동:4
   해직:명:19
  -해직당하다:동:1
  -해직되다:동:5
  +해직당하:동:1
  +해직되:동:5
   해직자:명:2
   해참:명:1
   해체:명:72
  -해체되다:동:20
  +해체되:동:20
   해체론:명:1
  -해체시키다:동:5
  -해체하다:동:14
  +해체시키:동:5
  +해체하:동:14
   해초:명:3
   해충:명:6
  -해치다:동:51
  -해치우다:동:10
  +해치:동:51
  +해치우:동:10
   해코지:명:1
   해탈:명:12
  -해탈되다:동:2
  -해탈시키다:동:1
  -해탈하다:동:2
  +해탈되:동:2
  +해탈시키:동:1
  +해탈하:동:2
   해태:명:10
   해태:명:3
  -해토되다:동:1
  +해토되:동:1
   해토머리:명:1
   해트:명:4
   해파리:명:1
  @@ -55670,9 +55670,9 @@
   해풍:명:1
   해프닝:명:20
   해피:명:1
  -해하다:동:2
  +해하:동:2
   해학:명:2
  -해학스럽다:형:1
  +해학스럽:형:1
   해학적:명:3
   해해:부:1
   해협:명:1
  @@ -55684,8 +55684,8 @@
   핵물리:명:1
   핵물리학과:명:1
   핵미사일:명:2
  -핵분열시키다:동:1
  -핵분열하다:동:1
  +핵분열시키:동:1
  +핵분열하:동:1
   핵산:명:5
   핵심:명:124
   핵심부:명:6
  @@ -55696,7 +55696,7 @@
   핵연료:명:10
   핵우산:명:1
   핵융합:명:3
  -핵융합하다:동:1
  +핵융합하:동:1
   핵자기:명:1
   핵전략:명:1
   핵전쟁:명:2
  @@ -55712,8 +55712,8 @@
   핸디:명:1
   핸디캡:명:4
   핼끔:부:1
  -핼쑥하다:형:2
  -핼쑥해지다:동:2
  +핼쑥하:형:2
  +핼쑥해지:동:2
   햄:명:20
   햄릿형:명:1
   햄버거:명:28
  @@ -55749,7 +55749,7 @@
   행동적:명:1
   행동주의:명:1
   행동파:명:3
  -행동하다:동:89
  +행동하:동:89
   행락:명:2
   행락객:명:12
   행랑:명:14
  @@ -55765,24 +55765,24 @@
   행복:명:112
   행복감:명:11
   행복권:명:2
  -행복되다:동:1
  -행복하다:형:117
  -행복하여지다:동:1
  -행복해지다:동:8
  -행복해하다:동:6
  +행복되:동:1
  +행복하:형:117
  +행복하여지:동:1
  +행복해지:동:8
  +행복해하:동:6
   행사:명:201
   행사:명:44
  -행사되다:동:2
  +행사되:동:2
   행사장:명:3
  -행사하다:동:2
  -행사하다:동:51
  +행사하:동:2
  +행사하:동:51
   행상:명:3
   행색:명:4
   행서체:명:1
   행선지:명:3
   행성:명:25
   행세:명:17
  -행세하다:동:7
  +행세하:동:7
   행시:명:1
   행실:명:8
   행악:명:1
  @@ -55794,7 +55794,7 @@
   행위:명:405
   행위자:명:22
   행위적:관:1
  -행위하다:동:1
  +행위하:동:1
   행의:명:1
   행이지난:명:1
   행인:명:27
  @@ -55826,24 +55826,24 @@
   행진곡:명:2
   행진곡풍:명:1
   행진풍:명:1
  -행진하다:동:5
  +행진하:동:5
   행차:명:6
   행태:명:39
   행태주의적:관:8
   행티:명:1
   행패:명:12
   행편:명:1
  -행하다:동:45
  -행하여지다:동:10
  -행해지다:동:46
  +행하:동:45
  +행하여지:동:10
  +행해지:동:46
   행협:명:1
   향:명:4
   향:명:66
   향교:명:21
  -향그럽다:형:1
  -향긋하다:형:10
  +향그럽:형:1
  +향긋하:형:10
   향기:명:77
  -향기롭다:형:9
  +향기롭:형:9
   향나무:명:4
   향내:명:17
   향냄새:명:2
  @@ -55854,7 +55854,7 @@
   향락업소:명:6
   향락적:명:1
   향락화:명:1
  -향락화되다:동:2
  +향락화되:동:2
   향로:명:1
   향료:명:3
   향리:명:3
  @@ -55864,9 +55864,9 @@
   향배:명:7
   향벽설위:명:5
   향상:명:65
  -향상되다:동:19
  -향상시키다:동:30
  -향상하다:동:2
  +향상되:동:19
  +향상시키:동:30
  +향상하:동:2
   향수:명:18
   향수:명:18
   향수:명:44
  @@ -55874,7 +55874,7 @@
   향수병:명:1
   향수병:명:5
   향수자:명:2
  -향수하다:동:3
  +향수하:동:3
   향시:명:1
   향시:명:1
   향신료:명:4
  @@ -55886,8 +55886,8 @@
   향연:명:5
   향연장:명:1
   향유:명:5
  -향유시키다:동:1
  -향유하다:동:14
  +향유시키:동:1
  +향유하:동:14
   향응:명:8
   향인:명:1
   향직원:명:2
  @@ -55898,19 +55898,19 @@
   향토색:명:1
   향토애:명:2
   향토적:명:1
  -향하다:동:479
  -향해지다:동:1
  +향하:동:479
  +향해지:동:1
   향후:명:27
   향훈:명:1
   허:감:25
   허:명:6
   허가:명:59
  -허가되다:동:2
  -허가받다:동:3
  +허가되:동:2
  +허가받:동:3
   허가서:명:3
   허가제:명:1
   허가증:명:1
  -허가하다:동:11
  +허가하:동:11
   허겁지겁:부:15
   허공:명:49
   허공중:명:1
  @@ -55919,34 +55919,34 @@
   허구심:명:1
   허구적:관:3
   허구적:명:3
  -허구하다:형:14
  -허구화시키다:동:1
  +허구하:형:14
  +허구화시키:동:1
   허기:명:3
   허기사:부:1
  -허기져하다:동:1
  +허기져하:동:1
   허기증:명:1
  -허기지다:동:8
  +허기지:동:8
   허깨비:명:7
   허니:명:1
  -허다:동:40
  -허다하다:형:9
  -허덕대다:동:1
  -허덕이다:동:14
  -허둥거리다:동:6
  -허둥대다:동:7
  +허:동:40
  +허다하:형:9
  +허덕대:동:1
  +허덕이:동:14
  +허둥거리:동:6
  +허둥대:동:7
   허둥지둥:부:7
   허드레:명:2
   허드렛물:명:2
   허드렛일:명:2
   허들:명:5
   허락:명:31
  -허락되다:동:4
  -허락받다:동:4
  -허락하다:동:34
  -허랑하다:형:2
  +허락되:동:4
  +허락받:동:4
  +허락하:동:34
  +허랑하:형:2
   허례:명:1
  -허롭다:형:1
  -허름하다:형:25
  +허롭:형:1
  +허름하:형:25
   허릅숭이:명:1
   허리:명:210
   허리끈:명:1
  @@ -55955,59 +55955,59 @@
   허리통:명:1
   허릿장:명:1
   허망감:명:1
  -허망하다:형:23
  -허망해하다:동:1
  +허망하:형:23
  +허망해하:동:1
   허무:명:14
   허무감:명:2
  -허무맹랑하다:형:2
  +허무맹랑하:형:2
   허무주의:명:6
   허무주의자:명:4
  -허무하다:형:24
  +허무하:형:24
   허물:명:11
   허물:명:7
  -허물다:동:16
  +허물:동:16
   허물벗기:명:1
  -허물어뜨리다:동:8
  -허물어지다:동:23
  -허물없다:형:3
  +허물어뜨리:동:8
  +허물어지:동:23
  +허물없:형:3
   허물없이:부:1
   허물투성이:명:1
   허밍:명:1
   허방다리:명:1
   허벅다리:명:4
   허벅지:명:11
  -허벌나다:형:1
  +허벌나:형:1
   허브:명:7
  -허비하다:동:10
  +허비하:동:10
   허사:명:8
   허상:명:11
   허섭스레기:명:1
   허세:명:14
   허송세월:명:3
  -허송하다:동:2
  -허수름하다:형:1
  +허송하:동:2
  +허수름하:형:1
   허수아비:명:18
  -허술하다:형:16
  +허술하:형:16
   허술히:부:1
   허스키:명:1
  -허스키하다:형:1
  +허스키하:형:1
   허실:명:4
  -허심탄회하다:형:5
  +허심탄회하:형:5
   허약:명:1
  -허약하다:형:14
  -허약해지다:동:1
  +허약하:형:14
  +허약해지:동:1
   허영:명:7
  -허영스럽다:형:2
  +허영스럽:형:2
   허영심:명:4
   허영적:명:1
   허영투성이:명:1
  -허옇다:형:16
  +허옇:형:16
   허용:명:49
  -허용되다:동:44
  +허용되:동:44
   허용량:명:1
  -허용하다:동:73
  -허우적거리다:동:11
  -허우적대다:동:7
  +허용하:동:73
  +허우적거리:동:11
  +허우적대:동:7
   허우적허우적:부:2
   허울:명:11
   허위:명:33
  @@ -56018,47 +56018,47 @@
   허위허위:부:1
   허장성세:명:1
   허재비:명:1
  -허전하다:형:22
  +허전하:형:22
   허점:명:20
   허증:명:1
   허지만:접:1
   허청허청:부:1
   허탈:명:2
   허탈감:명:9
  -허탈하다:형:13
  -허탈해지다:동:1
  -허탈해하다:동:1
  +허탈하:형:13
  +허탈해지:동:1
  +허탈해하:동:1
   허탕:명:4
   허턱:부:1
   허텅지거리:명:2
   허투루:부:1
  -허퉁하다:형:1
  +허퉁하:형:1
   허튼소리:명:1
   허파:명:3
   허풍:명:3
   허풍기:명:2
  -허풍스럽다:형:2
  +허풍스럽:형:2
   허피스심플렉스:명:1
  -허하다:형:7
  -허해지다:동:2
  +허하:형:7
  +허해지:동:2
   허허:감:14
   허허:부:15
  -허허롭다:형:4
  +허허롭:형:4
   허허벌판:명:1
   허황기:명:1
  -허황되다:형:4
  -허황하다:형:4
  +허황되:형:4
  +허황하:형:4
   헉:부:26
   헉헉:부:11
  -헉헉거리다:동:3
  -헉헉대다:동:6
  +헉헉거리:동:3
  +헉헉대:동:6
   헌:관:38
  -헌걸차다:형:2
  +헌걸차:형:2
   헌것:명:1
   헌금:명:15
  -헌금하다:동:2
  +헌금하:동:2
   헌납:명:1
  -헌납하다:동:3
  +헌납하:동:3
   헌디:접:1
   헌물:명:1
   헌물장:명:1
  @@ -56070,10 +56070,10 @@
   헌병대:명:5
   헌상:명:1
   헌신:명:6
  -헌신시키다:동:1
  +헌신시키:동:1
   헌신적:명:7
   헌신짝:명:1
  -헌신하다:동:10
  +헌신하:동:10
   헌장:명:12
   헌정:명:3
   헌정사:명:1
  @@ -56086,36 +56086,36 @@
   헌혈:명:6
   헌혈자:명:1
   헐값:명:3
  -헐겁다:형:5
  -헐다:동:20
  -헐다:동:4
  -헐떡거리다:동:6
  -헐떡이다:동:2
  -헐뜯다:동:4
  -헐렁하다:형:3
  +헐겁:형:5
  +헐:동:20
  +헐:동:4
  +헐떡거리:동:6
  +헐떡이:동:2
  +헐뜯:동:4
  +헐렁하:형:3
   헐레벌떡:부:6
  -헐려지다:동:1
  -헐리다:동:9
  -헐벗기다:동:1
  -헐벗다:동:2
  -헐하다:형:5
  +헐려지:동:1
  +헐리:동:9
  +헐벗기:동:1
  +헐벗:동:2
  +헐하:형:5
   헐헐:부:1
   험:감:1
   험구:명:3
  -험난하다:형:5
  +험난하:형:5
   험담:명:3
  -험담하다:동:1
  -험상궂다:형:5
  -험악하다:형:7
  -험악해지다:동:2
  -험준하다:형:3
  -험하다:형:26
  +험담하:동:1
  +험상궂:형:5
  +험악하:형:7
  +험악해지:동:2
  +험준하:형:3
  +험하:형:26
   험험:감:1
   헛:명:1
   헛간:명:14
  -헛갈리다:동:4
  +헛갈리:동:4
   헛걸음:명:2
  -헛걸음시키다:동:1
  +헛걸음시키:동:1
   헛것:명:2
   헛고생:명:1
   헛공부:명:1
  @@ -56123,14 +56123,14 @@
   헛그림자:명:1
   헛기운:명:1
   헛기침:명:7
  -헛놀리다:동:1
  +헛놀리:동:1
   헛다리:명:1
   헛돈:명:2
  -헛돌다:동:4
  -헛되다:형:15
  +헛돌:동:4
  +헛되:형:15
   헛되이:부:2
  -헛디디다:동:7
  -헛디디어지다:동:1
  +헛디디:동:7
  +헛디디어지:동:1
   헛맹세:명:1
   헛몸짓:명:1
   헛바람:명:2
  @@ -56139,7 +56139,7 @@
   헛방아쇠:명:1
   헛배:명:1
   헛소리:명:10
  -헛소리하다:동:1
  +헛소리하:동:1
   헛소문:명:4
   헛손질:명:1
   헛수고:명:6
  @@ -56148,14 +56148,14 @@
   헛웃음:명:1
   헛일:명:5
   헛짓:명:1
  -헛짓다:동:1
  -헛짚다:동:1
  +헛짓:동:1
  +헛짚:동:1
   헛코:명:1
   헛헛:부:1
  -헛헛하다:형:4
  +헛헛하:형:4
   헝겊:명:10
  -헝클어뜨리다:동:4
  -헝클어지다:동:13
  +헝클어뜨리:동:4
  +헝클어지:동:13
   헤:부:2
   헤게모니:명:37
   헤게모니론:명:7
  @@ -56170,33 +56170,33 @@
   헤딩:명:10
   헤딩력:명:1
   헤딩슛:명:8
  -헤딩하다:동:2
  +헤딩하:동:2
   헤로인:명:1
   헤리티지:명:1
  -헤매다:동:59
  +헤매:동:59
   헤모글로빈:명:1
  -헤벌리다:동:2
  +헤벌리:동:2
   헤벌쭉:부:2
  -헤벌쭉하다:동:1
  +헤벌쭉하:동:1
   헤브라이어:명:1
   헤비급:명:2
   헤비메탈:명:4
  -헤설프다:형:2
  -헤아리다:동:64
  +헤설프:형:2
  +헤아리:동:64
   헤어:명:2
  -헤어나다:동:24
  +헤어나:동:24
   헤어스타일:명:9
   헤어스프레이:명:1
  -헤어지다:동:98
  +헤어지:동:98
   헤엄:명:5
  -헤엄치다:동:15
  +헤엄치:동:15
   헤이:감:2
  -헤집다:동:15
  -헤치다:동:28
  -헤퍼지다:동:1
  -헤프다:형:6
  +헤집:동:15
  +헤치:동:28
  +헤퍼지:동:1
  +헤프:형:6
   헤헤:부:25
  -헤헤거리다:동:2
  +헤헤거리:동:2
   헥타르:의:9
   헬기:명:49
   헬레니즘:명:2
  @@ -56208,9 +56208,9 @@
   헬스장:명:1
   헬스클럽:명:4
   헬프:명:1
  -헷갈리다:동:11
  +헷갈리:동:11
   헷것:명:2
  -헹구다:동:39
  +헹구:동:39
   혀:명:96
   혀끝:명:5
   혀끝소리:명:1
  @@ -56229,23 +56229,23 @@
   혁신:명:19
   혁신적:관:3
   혁신적:명:7
  -혁신하다:동:3
  +혁신하:동:3
   혁파:명:4
  -혁파되다:동:1
  -혁파하다:동:6
  -혁혁하다:형:1
  +혁파되:동:1
  +혁파하:동:6
  +혁혁하:형:1
   현:관:128
   현:명:1
   현:명:2
   현:명:3
   현:명:6
   현감:명:1
  -현격하다:형:3
  +현격하:형:3
   현관:명:46
   현관문:명:30
   현금:명:94
   현금화:명:1
  -현금화하다:동:1
  +현금화하:동:1
   현기:명:1
   현기증:명:16
   현단:명:1
  @@ -56264,17 +56264,17 @@
   현대주의:명:2
   현대판:명:6
   현대화:명:12
  -현대화되다:동:1
  -현대화하다:동:1
  -현란스럽다:형:1
  -현란하다:형:13
  +현대화되:동:1
  +현대화하:동:1
  +현란스럽:형:1
  +현란하:형:13
   현맥:명:1
  -현명하다:형:28
  +현명하:형:28
   현모:명:1
   현모양처:명:10
   현모양처주의:명:1
   현묘:명:1
  -현묘하다:형:4
  +현묘하:형:4
   현무:명:3
   현무암:명:9
   현문:명:4
  @@ -56289,7 +56289,7 @@
   현상계:명:5
   현상금:명:2
   현상적:관:5
  -현상하다:동:1
  +현상하:동:1
   현상학:명:13
   현상학적:관:7
   현생:명:3
  @@ -56305,7 +56305,7 @@
   현시대:명:4
   현시적:명:2
   현시점:명:3
  -현시하다:동:1
  +현시하:동:1
   현실:명:690
   현실감:명:5
   현실론:명:1
  @@ -56316,12 +56316,12 @@
   현실주의자:명:5
   현실주의적:관:1
   현실주의적:명:1
  -현실주의화하다:동:1
  +현실주의화하:동:1
   현실층:명:1
   현실화:명:6
   현실화도:명:1
  -현실화되다:동:9
  -현실화하다:동:10
  +현실화되:동:9
  +현실화하:동:10
   현악기:명:5
   현안:명:36
   현업:명:2
  @@ -56337,14 +56337,14 @@
   현재성:명:4
   현재적:관:11
   현재적:명:4
  -현재화하다:동:2
  -현저하다:형:16
  -현저해지다:동:2
  +현재화하:동:2
  +현저하:형:16
  +현저해지:동:2
   현저화:명:2
   현저히:부:10
   현존:명:6
   현존자:명:1
  -현존하다:동:14
  +현존하:동:14
   현주소:명:6
   현지:명:77
   현지답사:명:1
  @@ -56352,7 +56352,7 @@
   현직:명:1
   현직:명:12
   현찰:명:4
  -현창하다:동:1
  +현창하:동:1
   현처:명:1
   현충일:명:5
   현충탑:명:1
  @@ -56363,12 +56363,12 @@
   현행범:명:8
   현행법:명:14
   현현:명:1
  -현현되다:동:1
  +현현되:동:1
   현혹:명:1
  -현혹당하다:동:1
  -현혹되다:동:5
  -현혹시키다:동:1
  -현혹하다:동:2
  +현혹당하:동:1
  +현혹되:동:5
  +현혹시키:동:1
  +현혹하:동:2
   현황:명:28
   혈:명:14
   혈관:명:17
  @@ -56400,8 +56400,8 @@
   혈혈단신:명:2
   혐오:명:10
   혐오감:명:9
  -혐오스럽다:형:7
  -혐오하다:동:9
  +혐오스럽:형:7
  +혐오하:동:9
   혐의:명:180
   혐의자:명:8
   협객:명:1
  @@ -56414,25 +56414,25 @@
   협동적:관:7
   협동적:명:6
   협동조합:명:7
  -협동하다:동:7
  +협동하:동:7
   협동형:명:1
   협동화:명:4
  -협동화하다:동:1
  +협동화하:동:1
   협력:명:107
   협력관:명:6
   협력국:명:1
   협력국장:명:5
   협력단장:명:1
   협력사:명:1
  -협력하다:동:19
  +협력하:동:19
   협박:명:32
   협박성:명:1
  -협박하다:동:12
  +협박하:동:12
   협상:명:184
   협상물:명:2
  -협상하다:동:1
  +협상하:동:1
   협소:명:2
  -협소하다:형:8
  +협소하:형:8
   협소화:명:1
   협심증:명:3
   협약:명:35
  @@ -56440,11 +56440,11 @@
   협업적:명:3
   협연:명:2
   협연자:명:4
  -협연하다:동:1
  +협연하:동:1
   협의:명:38
   협의:명:4
   협의체:명:10
  -협의하다:동:23
  +협의하:동:23
   협의회:명:43
   협정:명:138
   협정량:명:2
  @@ -56453,15 +56453,15 @@
   협정안:명:1
   협조:명:27
   협조:명:4
  -협조받다:동:1
  +협조받:동:1
   협조주의:명:1
  -협조하다:동:18
  -협조하다:동:3
  +협조하:동:18
  +협조하:동:3
   협주곡:명:10
   협주단:명:1
   협착증:명:1
   협찬:명:1
  -협찬하다:동:3
  +협찬하:동:3
   협화:명:1
   협회:명:63
   협회원:명:1
  @@ -56481,8 +56481,8 @@
   형리:명:1
   형무소:명:3
   형문:명:6
  -형문당하다:동:1
  -형문하다:동:2
  +형문당하:동:1
  +형문하:동:2
   형벌:명:16
   형법:명:19
   형부:명:63
  @@ -56498,22 +56498,22 @@
   형상론:명:1
   형상론적:관:1
   형상화:명:9
  -형상화되다:동:3
  -형상화시키다:동:5
  -형상화하다:동:11
  +형상화되:동:3
  +형상화시키:동:5
  +형상화하:동:11
   형성:명:1
   형성:명:181
   형성기:명:2
  -형성되다:동:152
  -형성되어지다:동:1
  +형성되:동:152
  +형성되어지:동:1
   형성력:명:2
   형성론:명:1
   형성론자:명:1
  -형성시키다:동:10
  +형성시키:동:10
   형성자:명:2
   형성적:관:5
   형성적:명:1
  -형성하다:동:104
  +형성하:동:104
   형성화:명:1
   형세:명:10
   형수:명:6
  @@ -56525,11 +56525,11 @@
   형식적:명:36
   형식주의:명:5
   형식주의적:관:3
  -형식화되다:동:1
  -형언하다:동:2
  +형식화되:동:1
  +형언하:동:2
   형옥:명:1
   형용사:명:3
  -형용하다:동:1
  +형용하:동:1
   형이상학:명:2
   형이상학적:관:16
   형이상학적:명:5
  @@ -56548,15 +56548,15 @@
   형태적:관:3
   형틀:명:1
   형편:명:103
  -형편없다:형:15
  +형편없:형:15
   형편없이:부:11
   형평:명:18
   형평성:명:6
   형평화:명:2
   형해화:명:1
  -형해화하다:동:1
  +형해화하:동:1
   형형색색:명:2
  -형형해지다:동:1
  +형형해지:동:1
   혜성:명:3
   혜안:명:11
   혜택:명:46
  @@ -56565,13 +56565,13 @@
   호:의:149
   호:의:5
   호가:명:4
  -호가하다:동:1
  +호가하:동:1
   호가호위:명:1
   호각:명:5
   호감:명:16
   호감도:명:3
   호강:명:3
  -호강하다:동:1
  +호강하:동:1
   호객꾼:명:2
   호걸:명:1
   호경기:명:2
  @@ -56582,20 +56582,20 @@
   호기:명:3
   호기:명:6
   호기:명:9
  -호기롭다:형:1
  +호기롭:형:1
   호기심:명:75
   호남:명:1
   호남:명:36
   호당:명:2
   호도:명:1
  -호도하다:동:7
  -호되다:형:12
  +호도하:동:7
  +호되:형:12
   호두:명:18
   호들갑:명:6
  -호들갑스럽다:형:1
  +호들갑스럽:형:1
   호떡:명:3
   호락호락:부:1
  -호락호락하다:형:2
  +호락호락하:형:2
   호란:명:1
   호랑말코:명:2
   호랑버들:명:4
  @@ -56604,14 +56604,14 @@
   호러:명:1
   호렌소:명:1
   호령:명:3
  -호령하다:동:2
  +호령하:동:2
   호롱불:명:4
   호루라기:명:2
   호르몬:명:20
  -호리호리하다:형:1
  +호리호리하:형:1
   호명:명:1
  -호명되다:동:1
  -호명하다:동:2
  +호명되:동:1
  +호명하:동:2
   호모:명:6
   호미:명:4
   호민:명:1
  @@ -56626,7 +56626,7 @@
   호박죽:명:2
   호박찌개:명:1
   호반:명:1
  -호방하다:형:1
  +호방하:형:1
   호별지정:명:3
   호봉:명:12
   호부층:명:5
  @@ -56635,22 +56635,22 @@
   호사:명:3
   호사가:명:2
   호사다마:명:1
  -호사스럽다:형:1
  -호사하다:동:2
  +호사스럽:형:1
  +호사하:동:2
   호상:명:1
   호상:명:4
  -호생하다:동:1
  +호생하:동:1
   호선:의:29
   호소:명:1
   호소:명:14
   호소:명:6
   호소력:명:9
   호소문:명:6
  -호소하다:동:22
  -호소하다:동:38
  +호소하:동:22
  +호소하:동:38
   호송:명:8
  -호송되다:동:1
  -호송하다:동:1
  +호송되:동:1
  +호송하:동:1
   호수:명:4
   호수:명:46
   호수:명:5
  @@ -56665,20 +56665,20 @@
   호신:명:2
   호실:명:15
   호언장담:명:1
  -호언장담하다:동:1
  +호언장담하:동:1
   호역:명:2
   호연:명:1
   호연지기:명:4
  -호연하다:형:1
  +호연하:형:1
   호열자:명:5
   호외:명:2
   호우:명:2
   호위:명:5
  -호위하다:동:1
  -호위하다:동:2
  +호위하:동:1
  +호위하:동:2
   호응:명:28
   호응도:명:3
  -호응하다:동:8
  +호응하:동:8
   호의:명:11
   호의적:관:1
   호의적:명:5
  @@ -56686,32 +56686,32 @@
   호재성:명:1
   호적:명:16
   호전:명:5
  -호전되다:동:11
  +호전되:동:11
   호전성:명:3
  -호전시키다:동:2
  +호전시키:동:2
   호전적:관:2
   호전적:명:3
   호접몽:명:1
  -호젓하다:형:3
  +호젓하:형:3
   호조:명:1
   호조:명:8
   호조황:명:1
   호족:명:1
   호족:명:57
   호족적:관:1
  -호졸근하다:형:1
  +호졸근하:형:1
   호주:명:2
   호주가:명:1
   호주머니:명:37
   호출:명:6
   호출기:명:1
  -호출되다:동:3
  -호출하다:동:2
  +호출되:동:3
  +호출하:동:2
   호치키스:명:1
   호칭:명:18
  -호칭하다:동:5
  -호쾌하다:형:1
  -호탕하다:형:5
  +호칭하:동:5
  +호쾌하:형:1
  +호탕하:형:5
   호텔:명:88
   호텔가:명:1
   호텔비:명:1
  @@ -56728,11 +56728,11 @@
   호혜적:관:1
   호혜적:명:2
   호호:부:13
  -호호거리다:동:1
  +호호거리:동:1
   호화:명:13
  -호화롭다:형:2
  -호화스러워지다:동:1
  -호화스럽다:형:4
  +호화롭:형:2
  +호화스러워지:동:1
  +호화스럽:형:4
   호화판:명:2
   호환:명:2
   호환성:명:6
  @@ -56744,68 +56744,68 @@
   호흡법:명:7
   호흡수:명:6
   호흡증:명:1
  -호흡하다:동:9
  +호흡하:동:9
   혹:명:7
   혹:부:22
  -혹독하다:형:19
  +혹독하:형:19
   혹부리:명:5
   혹사:명:1
  -혹사당하다:동:3
  -혹사시키다:동:2
  -혹사하다:동:3
  +혹사당하:동:3
  +혹사시키:동:2
  +혹사하:동:3
   혹서기:명:1
   혹성:명:8
  -혹세무민하다:동:1
  +혹세무민하:동:1
   혹시:부:161
   혹시나:부:17
  -혹심하다:형:7
  +혹심하:형:7
   혹여:부:5
   혹은:접:241
   혹자:명:5
   혹평:명:2
   혹평가:명:1
  -혹평하다:동:1
  -혹하다:동:1
  +혹평하:동:1
  +혹하:동:1
   혹한:명:2
   혼:명:32
   혼곤:명:1
   혼구:명:1
   혼기:명:2
  -혼나다:동:16
  -혼내다:동:8
  -혼내키다:동:1
  +혼나:동:16
  +혼내:동:8
  +혼내키:동:1
   혼담:명:1
   혼돈:명:27
  -혼돈스럽다:형:1
  +혼돈스럽:형:1
   혼동:명:7
  -혼동되다:동:6
  -혼동스럽다:형:1
  -혼동시키다:동:1
  -혼동하다:동:9
  +혼동되:동:6
  +혼동스럽:형:1
  +혼동시키:동:1
  +혼동하:동:9
   혼란:명:73
   혼란기:명:9
  -혼란되다:동:3
  +혼란되:동:3
   혼란상:명:1
  -혼란스러워지다:동:2
  -혼란스러워하다:동:1
  -혼란스럽다:형:14
  -혼란시키다:동:4
  -혼란하다:형:3
  -혼란해지다:동:5
  +혼란스러워지:동:2
  +혼란스러워하:동:1
  +혼란스럽:형:14
  +혼란시키:동:4
  +혼란하:형:3
  +혼란해지:동:5
   혼령:명:12
   혼례:명:9
   혼례식:명:1
   혼미:명:2
  -혼미롭다:형:1
  -혼미하다:형:1
  -혼미해지다:형:1
  +혼미롭:형:1
  +혼미하:형:1
  +혼미해지:형:1
   혼방:명:1
   혼백:명:2
   혼복:명:1
  -혼비백산하다:동:4
  +혼비백산하:동:4
   혼사:명:10
   혼색:명:1
  -혼생하다:동:3
  +혼생하:동:3
   혼서장:명:1
   혼선:명:7
   혼성:명:2
  @@ -56825,58 +56825,58 @@
   혼연일체:명:1
   혼외:명:1
   혼용:명:2
  -혼용하다:동:5
  +혼용하:동:5
   혼융:명:2
   혼인:명:22
   혼인날:명:3
   혼인식:명:7
   혼인치레:명:1
  -혼인하다:동:14
  +혼인하:동:14
   혼자:명:530
  -혼자되다:동:2
  +혼자되:동:2
   혼자속:명:3
   혼잡:명:12
  -혼잡하다:형:7
  +혼잡하:형:7
   혼잣말:명:18
  -혼잣말하다:동:3
  +혼잣말하:동:3
   혼잣몸:명:1
   혼잣소리:명:10
   혼잣손:명:2
  -혼재되다:동:2
  -혼재하다:동:2
  +혼재되:동:2
  +혼재하:동:2
   혼전:명:15
   혼전:명:2
   혼절:명:1
   혼조:명:1
   혼종어:명:2
   혼쭐:명:1
  -혼쭐내다:동:1
  +혼쭐내:동:1
   혼처:명:1
   혼천의:명:1
   혼탁:명:10
   혼탁상:명:1
  -혼탁하다:형:6
  -혼탁해지다:동:1
  +혼탁하:형:6
  +혼탁해지:동:1
   혼합:명:10
  -혼합되다:동:6
  +혼합되:동:6
   혼합반:명:1
   혼합적:명:1
  -혼합하다:동:4
  +혼합하:동:4
   혼혈:명:1
   혼혈아:명:2
   혼효림:명:3
   홀:명:52
   홀:명:6
  -홀가분하다:형:14
  -홀가분해지다:동:3
  +홀가분하:형:14
  +홀가분해지:동:3
   홀까닥:부:1
   홀대:명:1
  -홀드시키다:동:1
  +홀드시키:동:1
   홀딱:부:4
   홀라당:부:5
   홀랑:부:7
   홀로:부:57
  -홀리다:동:10
  +홀리:동:10
   홀몸:명:1
   홀소리:명:2
   홀수:명:9
  @@ -56887,14 +56887,14 @@
   홀연히:부:11
   홀짝:명:1
   홀짝:부:1
  -홀짝거리다:동:3
  +홀짝거리:동:3
   홀짝수제:명:1
   홀짝이다:명:1
   홀쭉이:명:1
  -홀쭉하다:형:4
  -홀쭉해지다:동:1
  +홀쭉하:형:4
  +홀쭉해지:동:1
   홀치기염:명:1
  -홀치다:동:1
  +홀치:동:1
   홀홀:부:1
   홈:명:11
   홈:명:6
  @@ -56915,7 +56915,7 @@
   홈페이지:명:19
   홉:명:1
   홉:의:3
  -홉뜨다:동:1
  +홉뜨:동:1
   홍:명:3
   홍당무:명:3
   홍두깨:명:6
  @@ -56935,7 +56935,7 @@
   홍보지:명:1
   홍보처:명:1
   홍보판:명:1
  -홍보하다:동:10
  +홍보하:동:10
   홍복:명:1
   홍색:명:1
   홍수:명:40
  @@ -56975,24 +56975,24 @@
   화구:명:2
   화구호:명:1
   화근:명:9
  -화급하다:형:2
  +화급하:형:2
   화기:명:1
   화기:명:5
   화기:명:6
  -화기애애하다:형:2
  +화기애애하:형:2
   화끈:부:3
  -화끈거리다:동:8
  -화끈하다:형:13
  -화끈해지다:동:3
  -화나다:동:18
  -화내다:동:3
  +화끈거리:동:8
  +화끈하:형:13
  +화끈해지:동:3
  +화나:동:18
  +화내:동:3
   화냥년:명:2
   화농:명:1
   화닥닥:부:4
   화단:명:15
   화단:명:2
   화답:명:3
  -화답하다:동:3
  +화답하:동:3
   화덕:명:1
   화동:명:1
   화두:명:32
  @@ -57003,20 +57003,20 @@
   화랑가:명:1
   화랑도:명:3
   화려체:명:1
  -화려하다:형:104
  +화려하:형:104
   화력:명:14
   화로:명:5
   화롯불:명:2
   화류계:명:1
   화류회:명:1
   화르르:부:1
  -화르르거리다:동:1
  +화르르거리:동:1
   화마:명:1
   화면:명:128
   화목:명:5
   화목둥이:명:1
  -화목하다:형:16
  -화목해지다:동:1
  +화목하:형:16
  +화목해지:동:1
   화문석:명:2
   화물:명:20
   화물기:명:1
  @@ -57035,8 +57035,8 @@
   화북:명:13
   화분:명:61
   화사:명:1
  -화사하다:형:10
  -화사해지다:동:1
  +화사하:형:10
  +화사해지:동:1
   화산:명:56
   화산도:명:1
   화산섬:명:2
  @@ -57051,12 +57051,12 @@
   화생방:명:1
   화서:명:1
   화석:명:25
  -화석화되다:동:2
  +화석화되:동:2
   화선지:명:1
   화성:명:2
   화소:명:8
   화수분:명:1
  -화순하다:형:1
  +화순하:형:1
   화술:명:4
   화술극:명:1
   화식:명:5
  @@ -57097,8 +57097,8 @@
   화장터:명:4
   화장품:명:114
   화장품점:명:1
  -화장하다:동:1
  -화장하다:동:3
  +화장하:동:1
  +화장하:동:3
   화재:명:47
   화재경보기:명:1
   화쟁:명:13
  @@ -57113,7 +57113,7 @@
   화조화:명:1
   화질:명:1
   화집:명:1
  -화창하다:형:4
  +화창하:형:4
   화채:명:4
   화첩:명:1
   화초:명:17
  @@ -57126,12 +57126,12 @@
   화투:명:9
   화투장:명:1
   화평:명:4
  -화평하다:형:2
  +화평하:형:2
   화폐:명:22
   화포:명:4
   화폭:명:6
   화풀이:명:8
  -화풀이하다:동:2
  +화풀이하:동:2
   화풍:명:1
   화풍:명:4
   화학:명:94
  @@ -57145,94 +57145,94 @@
   화학조미료:명:52
   화합:명:25
   화합물:명:6
  -화합시키다:동:2
  -화합하다:동:8
  +화합시키:동:2
  +화합하:동:8
   화해:명:27
   화해:명:7
  -화해롭다:형:2
  -화해시키다:동:4
  -화해하다:동:13
  +화해롭:형:2
  +화해시키:동:4
  +화해하:동:13
   화형:명:2
  -화형당하다:동:2
  +화형당하:동:2
   화환:명:9
   화훼:명:3
   확:부:46
  -확고부동하다:형:4
  -확고하다:형:44
  -확고해지다:동:2
  +확고부동하:형:4
  +확고하:형:44
  +확고해지:동:2
   확고히:부:5
   확답:명:3
   확대:명:131
   확대:명:4
  -확대되다:동:4
  -확대되다:동:80
  -확대시키다:동:15
  +확대되:동:4
  +확대되:동:80
  +확대시키:동:15
   확대안:명:1
   확대일로:명:1
  -확대하다:동:3
  -확대하다:동:96
  +확대하:동:3
  +확대하:동:96
   확률:명:16
   확률적:명:1
   확립:명:38
   확립기:명:1
  -확립되다:동:18
  -확립되어지다:동:1
  -확립시키다:동:2
  -확립하다:동:34
  +확립되:동:18
  +확립되어지:동:1
  +확립시키:동:2
  +확립하:동:34
   확보:명:68
  -확보되다:동:23
  -확보하다:동:127
  +확보되:동:23
  +확보하:동:127
   확산:명:47
  -확산되다:동:55
  +확산되:동:55
   확산성:명:1
  -확산시키다:동:9
  +확산시키:동:9
   확산적:명:1
  -확산하다:동:3
  +확산하:동:3
   확성:명:1
   확성기:명:3
   확신:명:31
   확신감:명:1
   확신범:명:2
  -확신하다:동:34
  +확신하:동:34
   확실:명:3
   확실성:명:9
  -확실시되다:동:3
  -확실하다:형:147
  -확실해지다:동:6
  +확실시되:동:3
  +확실하:형:147
  +확실해지:동:6
   확실히:부:90
   확약:명:1
  -확약하다:동:1
  -확언하다:동:3
  -확연하다:형:6
  +확약하:동:1
  +확언하:동:3
  +확연하:형:6
   확연히:부:10
   확인:명:76
  -확인되다:동:67
  -확인되어지다:동:1
  -확인받다:동:3
  +확인되:동:67
  +확인되어지:동:1
  +확인받:동:3
   확인서:명:2
  -확인시키다:동:14
  +확인시키:동:14
   확인제:명:1
  -확인하다:동:249
  +확인하:동:249
   확장:명:52
  -확장되다:동:19
  +확장되:동:19
   확장명:명:3
   확장법:명:1
   확장성:명:4
  -확장시키다:동:6
  -확장하다:동:23
  +확장시키:동:6
  +확장하:동:23
   확정:명:53
  -확정되다:동:39
  +확정되:동:39
   확정설:명:1
  -확정시키다:동:1
  +확정시키:동:1
   확정안:명:1
   확정적:명:1
  -확정하다:동:38
  +확정하:동:38
   확증:명:4
  -확증하다:동:3
  +확증하:동:3
   확충:명:38
   확충비:명:1
   확충안:명:1
  -확충하다:동:10
  +확충하:동:10
   환각:명:16
   환각성:명:2
   환각적:관:1
  @@ -57255,61 +57255,61 @@
   환국:명:3
   환기:명:1
   환기:명:7
  -환기시키다:동:7
  +환기시키:동:7
   환기통:명:4
  -환기하다:동:2
  +환기하:동:2
   환난:명:1
   환난상휼:명:1
   환담:명:1
   환대:명:2
  -환대하다:동:2
  +환대하:동:2
   환등기:명:1
   환락:명:1
   환로:명:1
   환매:명:3
  -환매하다:동:2
  +환매하:동:2
   환멸:명:4
   환멸감:명:1
  -환멸스러워하다:동:1
  +환멸스러워하:동:1
   환부:명:7
   환산:명:1
  -환산되다:동:1
  -환산하다:동:7
  +환산되:동:1
  +환산하:동:7
   환상:명:58
   환상적:관:4
   환상적:명:19
   환상주의:명:1
   환생:명:2
  -환생하다:동:6
  +환생하:동:6
   환성:명:1
   환성:명:5
   환속:명:1
   환송:명:4
   환송심:명:1
  -환송하다:동:3
  -환수되다:동:1
  -환수받다:동:1
  -환수하다:동:2
  +환송하:동:3
  +환수되:동:1
  +환수받:동:1
  +환수하:동:2
   환승역:명:2
   환시:명:2
   환심:명:3
   환영:명:20
   환영:명:3
  -환영받다:동:2
  +환영받:동:2
   환영식:명:1
   환영식장:명:1
  -환영하다:동:26
  +환영하:동:26
   환영회:명:6
   환원:명:6
  -환원되다:동:11
  +환원되:동:11
   환원론:명:3
   환원론자:명:1
   환원론적:관:1
   환원론적:명:1
   환원성:명:1
  -환원시키다:동:7
  +환원시키:동:7
   환원주의:명:2
  -환원하다:동:6
  +환원하:동:6
   환유법:명:1
   환율:명:33
   환율제:명:14
  @@ -57318,31 +57318,31 @@
   환자복:명:2
   환자촌:명:1
   환장:명:5
  -환장시키다:동:1
  -환장하다:동:7
  +환장시키:동:1
  +환장하:동:7
   환쟁이:명:2
   환전:명:9
  -환전하다:동:2
  +환전하:동:2
   환절기:명:8
   환차익:명:1
   환청:명:6
  -환하다:형:61
  -환해지다:동:10
  +환하:형:61
  +환해지:동:10
   환형:명:1
   환호:명:7
  -환호되다:동:1
  +환호되:동:1
   환호성:명:7
  -환호하다:동:15
  +환호하:동:15
   환희:명:13
  -환희하다:동:1
  +환희하:동:1
   환히:부:10
   활:명:7
   활개:명:6
   활공비:명:1
  -활공하다:동:1
  +활공하:동:1
   활기:명:33
  -활기차다:형:15
  -활달하다:형:13
  +활기차:형:15
  +활달하:형:13
   활동:명:622
   활동가:명:9
   활동감:명:1
  @@ -57353,7 +57353,7 @@
   활동성:명:4
   활동장:명:1
   활동적:명:8
  -활동하다:동:82
  +활동하:동:82
   활등:명:1
   활량나물:명:1
   활력:명:20
  @@ -57361,23 +57361,23 @@
   활력적:명:1
   활로:명:8
   활발:명:9
  -활발하다:형:94
  -활발하여지다:동:1
  -활발해지다:동:30
  +활발하:형:94
  +활발하여지:동:1
  +활발해지:동:30
   활발히:부:32
  -활보하다:동:3
  +활보하:동:3
   활성:명:3
  -활성시키다:동:1
  +활성시키:동:1
   활성탄:명:1
   활성화:명:31
  -활성화되다:동:6
  -활성화시키다:동:11
  -활성화하다:동:10
  +활성화되:동:6
  +활성화시키:동:11
  +활성화하:동:10
   활시위:명:6
   활쏘기:명:4
   활약:명:27
   활약상:명:2
  -활약하다:동:31
  +활약하:동:31
   활연히:부:1
   활엽:명:5
   활엽수:명:10
  @@ -57386,28 +57386,28 @@
   활용:명:50
   활용기:명:3
   활용도:명:1
  -활용되다:동:23
  +활용되:동:23
   활용적:관:1
  -활용하다:동:129
  +활용하:동:129
   활인:명:1
   활인심방:명:2
   활자:명:25
  -활자화되다:동:4
  +활자화되:동:4
   활주로:명:17
  -활주하다:동:1
  +활주하:동:1
   활짝:부:45
   활짝활짝:부:1
   활판:명:1
   활화산:명:1
   활활:부:11
  -활활거리다:동:1
  +활활거리:동:1
   활황:명:6
   홧김:명:1
   황:명:3
   황:명:5
   황갈색:명:17
  -황공하다:형:2
  -황공해하다:동:1
  +황공하:형:2
  +황공해하:동:1
   황구:명:1
   황국:명:1
   황군:명:1
  @@ -57420,18 +57420,18 @@
   황금새:명:3
   황금색:명:4
   황금시대:명:4
  -황급하다:형:6
  +황급하:형:6
   황급히:부:21
   황기:명:2
   황달:명:4
  -황당무계하다:형:2
  -황당하다:형:27
  -황량하다:형:23
  +황당무계하:형:2
  +황당하:형:27
  +황량하:형:23
   황련:명:2
   황록색:명:1
   황마:명:1
  -황막하다:형:1
  -황망하다:형:2
  +황막하:형:1
  +황망하:형:2
   황망히:부:1
   황매화:명:1
   황무지:명:14
  @@ -57450,7 +57450,7 @@
   황소개구리:명:19
   황소자리:명:1
   황소좌:명:1
  -황송하다:형:4
  +황송하:형:4
   황실:명:1
   황아장수:명:1
   황야:명:10
  @@ -57464,19 +57464,19 @@
   황토:명:2
   황토:명:6
   황폐:명:2
  -황폐되다:동:1
  +황폐되:동:1
   황폐성:명:1
  -황폐하다:동:7
  -황폐해지다:동:7
  +황폐하:동:7
  +황폐해지:동:7
   황폐화:명:2
  -황폐화되다:동:1
  -황폐화시키다:동:1
  -황폐화하다:동:1
  +황폐화되:동:1
  +황폐화시키:동:1
  +황폐화하:동:1
   황혼:명:4
   황혼기:명:1
   황홀경:명:5
  -황홀하다:형:21
  -황홀해하다:동:1
  +황홀하:형:21
  +황홀해하:동:1
   황화:명:1
   황화론:명:1
   황황히:부:1
  @@ -57493,7 +57493,7 @@
   회갈색:명:7
   회갑:명:7
   회갑연회장:명:1
  -회개하다:동:3
  +회개하:동:3
   회견:명:78
   회견문:명:2
   회견장:명:1
  @@ -57503,7 +57503,7 @@
   회고:명:1
   회고담:명:2
   회고록:명:4
  -회고하다:동:9
  +회고하:동:9
   회관:명:39
   회교:명:6
   회교도:명:2
  @@ -57512,14 +57512,14 @@
   회귀:명:7
   회귀점:명:2
   회귀처:명:1
  -회귀하다:동:6
  +회귀하:동:6
   회기:명:5
   회나무:명:4
   회담:명:212
   회담장:명:2
  -회담하다:동:2
  +회담하:동:2
   회동:명:18
  -회동하다:동:1
  +회동하:동:1
   회랑:명:8
   회로:명:29
   회룡:명:3
  @@ -57529,16 +57529,16 @@
   회벽:명:1
   회보:명:4
   회복:명:108
  -회복되다:동:30
  +회복되:동:30
   회복세:명:7
  -회복시키다:동:14
  +회복시키:동:14
   회복식:명:1
   회복제:명:1
  -회복하다:동:69
  +회복하:동:69
   회부:명:1
  -회부되다:동:5
  -회부시키다:동:2
  -회부하다:동:7
  +회부되:동:5
  +회부시키:동:2
  +회부하:동:7
   회분:명:1
   회비:명:9
   회사:명:504
  @@ -57548,33 +57548,33 @@
   회상:명:11
   회상록:명:2
   회상시:명:1
  -회상하다:동:16
  +회상하:동:16
   회색:명:50
   회색분자:명:1
   회색빛:명:11
   회색적:명:1
   회생:명:1
  -회생되다:동:1
  -회생시키다:동:3
  +회생되:동:1
  +회생시키:동:3
   회선:명:17
   회수:명:12
   회수금:명:1
  -회수되다:동:1
  +회수되:동:1
   회수율:명:1
  -회수하다:동:13
  +회수하:동:13
   회식:명:9
   회식자:명:2
  -회식하다:동:1
  +회식하:동:1
   회신:명:3
  -회신하다:동:2
  +회신하:동:2
   회심:명:5
  -회심하다:동:1
  +회심하:동:1
   회양목:명:5
   회억:명:1
   회오:명:2
   회오리:명:6
   회오리바람:명:3
  -회오리치다:동:2
  +회오리치:동:2
   회원:명:131
   회원국:명:14
   회원권:명:8
  @@ -57582,9 +57582,9 @@
   회원전:명:2
   회원제:명:2
   회유:명:5
  -회유되다:동:1
  -회유하다:동:1
  -회유하다:동:3
  +회유되:동:1
  +회유하:동:1
  +회유하:동:3
   회의:명:35
   회의:명:397
   회의감:명:4
  @@ -57597,11 +57597,11 @@
   회의주의:명:1
   회의주의자:명:2
   회의체:명:11
  -회의하다:동:1
  -회의하다:동:8
  +회의하:동:1
  +회의하:동:8
   회잎나무:명:2
  -회자되다:동:5
  -회자하다:동:1
  +회자되:동:5
  +회자하:동:1
   회장:명:1
   회장:명:3
   회장:명:352
  @@ -57612,14 +57612,14 @@
   회전:명:29
   회전:의:11
   회전수:명:5
  -회전시키다:동:4
  +회전시키:동:4
   회전식:명:1
   회전율:명:3
   회전의:명:1
   회전의자:명:2
   회전자:명:2
   회전축:명:2
  -회전하다:동:18
  +회전하:동:18
   회진:명:5
   회초:의:1
   회초리:명:8
  @@ -57628,12 +57628,12 @@
   회칠:명:1
   회칼:명:1
   회통:명:7
  -회통시키다:동:2
  +회통시키:동:2
   회통적:명:1
  -회통하다:동:2
  +회통하:동:2
   회포:명:9
   회피:명:1
  -회피하다:동:19
  +회피하:동:19
   회한:명:13
   회합:명:4
   회혼례:명:2
  @@ -57652,16 +57652,16 @@
   획기적:관:6
   획기적:명:28
   획득:명:19
  -획득하다:동:43
  +획득하:동:43
   획연히:부:1
   획일:명:3
   획일성:명:2
   획일적:명:13
   획일주의:명:4
   획일화:명:1
  -획일화되다:동:3
  +획일화되:동:3
   획정:명:1
  -획책하다:동:3
  +획책하:동:3
   횟감:명:1
   횟수:명:25
   횟집:명:5
  @@ -57671,21 +57671,21 @@
   횡단:명:3
   횡단기:명:1
   횡단보도:명:19
  -횡단하다:동:4
  +횡단하:동:4
   횡대:명:2
   횡령:명:7
  -횡령하다:동:1
  +횡령하:동:1
   횡선:명:1
   횡설수설:명:13
  -횡설수설대다:동:1
  -횡설수설하다:동:1
  +횡설수설대:동:1
  +횡설수설하:동:1
   횡압력:명:1
   횡재:명:1
   횡적:관:1
   횡파:명:1
   횡포:명:23
   횡행:명:2
  -횡행하다:동:9
  +횡행하:동:9
   효:명:7
   효과:명:377
   효과음:명:3
  @@ -57694,14 +57694,14 @@
   효녀:명:4
   효능:명:15
   효도:명:23
  -효도받다:동:1
  -효도하다:동:18
  +효도받:동:1
  +효도하:동:18
   효력:명:22
   효모:명:1
   효부:명:1
   효부상:명:1
   효성:명:7
  -효성스럽다:형:1
  +효성스럽:형:1
   효성심:명:2
   효소:명:10
   효시:명:8
  @@ -57714,7 +57714,7 @@
   효율적:관:11
   효율적:명:51
   효율화:명:1
  -효율화하다:동:1
  +효율화하:동:1
   효익:명:1
   효자:명:17
   효자둥이:명:1
  @@ -57722,7 +57722,7 @@
   효행:명:2
   효험:명:5
   후:명:1
  -후:명:1,204
  +후:명:1204
   후:명:17
   후:부:5
   후각:명:6
  @@ -57738,42 +57738,42 @@
   후기용:명:1
   후기작:명:1
   후끈:부:5
  -후끈하다:형:3
  +후끈하:형:3
   후납:명:1
   후다닥:부:3
   후닥닥:부:3
   후대:명:11
  -후덕하다:형:1
  -후덥다:형:2
  -후덥지근하다:형:1
  +후덕하:형:1
  +후덥:형:2
  +후덥지근하:형:1
   후두:명:2
   후두부:명:2
   후두염:명:1
   후드득:부:7
   후드득후드득:부:1
  -후들거리다:동:3
  +후들거리:동:3
   후들후들:부:5
  -후들후들하다:동:1
  +후들후들하:동:1
   후딱:부:7
   후딱후딱:부:2
   후레버:명:1
   후레자식:명:1
  -후려갈기다:동:2
  -후려치다:동:15
  -후련하다:형:5
  -후련해지다:동:1
  +후려갈기:동:2
  +후려치:동:15
  +후련하:형:5
  +후련해지:동:1
   후렴:명:1
   후로쿠마린:명:1
   후루룩:부:2
  -후루룩거리다:동:1
  +후루룩거리:동:1
   후르르:부:1
  -후리다:동:5
  -후리후리하다:형:2
  +후리:동:5
  +후리후리하:형:2
   후만증:명:4
   후문:명:12
   후문:명:3
   후미:명:1
  -후미지다:형:11
  +후미지:형:11
   후반:명:124
   후반기:명:9
   후반부:명:1
  @@ -57787,7 +57787,7 @@
   후보자:명:40
   후보지:명:2
   후불제:명:1
  -후비다:동:23
  +후비:동:23
   후삼국:명:1
   후생:명:1
   후생:명:2
  @@ -57797,18 +57797,18 @@
   후속:명:22
   후손:명:21
   후송:명:9
  -후송되다:동:4
  +후송되:동:4
   후술:명:1
  -후술하다:동:1
  +후술하:동:1
   후식:명:5
   후실:명:2
   후예:명:9
   후원:명:1
   후원:명:18
   후원금:명:13
  -후원되다:동:1
  +후원되:동:1
   후원자:명:4
  -후원하다:동:4
  +후원하:동:4
   후원회:명:10
   후유:감:2
   후유증:명:18
  @@ -57820,10 +57820,10 @@
   후자:명:50
   후작:명:1
   후장:명:6
  -후줄근하다:형:4
  -후줄근해지다:동:1
  +후줄근하:형:4
  +후줄근해지:동:1
   후줄근히:부:1
  -후지다:형:2
  +후지:형:2
   후지원:명:1
   후진:명:14
   후진국:명:13
  @@ -57832,28 +57832,28 @@
   후창:명:2
   후처리:명:1
   후천:명:35
  -후천되다:동:1
  +후천되:동:1
   후천성:명:6
   후천적:명:4
   후추:명:5
   후출국:명:1
   후춧가루:명:96
  -후치다:동:1
  -후텁텁하다:형:1
  +후치:동:1
  +후텁텁하:형:1
   후퇴:명:12
  -후퇴시키다:동:2
  -후퇴하다:동:14
  +후퇴시키:동:2
  +후퇴하:동:14
   후편:명:2
   후프:명:6
  -후하다:형:5
  +후하:형:5
   후학:명:3
   후협상:명:1
   후환:명:1
   후회:명:22
  -후회되다:동:4
  +후회되:동:4
   후회막급:명:2
  -후회스럽다:형:3
  -후회하다:동:36
  +후회스럽:형:3
  +후회하:동:36
   후후:부:1
   후후:부:5
   후희:명:1
  @@ -57863,19 +57863,19 @@
   훈고학:명:1
   훈기:명:3
   훈련:명:163
  -훈련되다:동:10
  -훈련되어지다:동:1
  -훈련받다:동:6
  +훈련되:동:10
  +훈련되어지:동:1
  +훈련받:동:6
   훈련법:명:1
   훈련병:명:2
   훈련생:명:3
   훈련소:명:5
  -훈련시키다:동:6
  +훈련시키:동:6
   훈련장:명:3
   훈련터:명:1
  -훈련하다:동:4
  +훈련하:동:4
   훈령:명:5
  -훈령하다:동:1
  +훈령하:동:1
   훈병:명:1
   훈시:명:2
   훈육:명:1
  @@ -57886,122 +57886,122 @@
   훈증:명:2
   훈풍:명:1
   훈화:명:1
  -훈훈하다:형:9
  -훈훈해지다:동:1
  +훈훈하:형:9
  +훈훈해지:동:1
   훌떡:부:2
   훌라후프:명:4
   훌렁:부:2
  -훌륭하다:형:231
  -훌륭해지다:동:1
  +훌륭하:형:231
  +훌륭해지:동:1
   훌륭히:부:4
   훌쩍:부:26
  -훌쩍거리다:동:5
  -훌쩍대다:동:1
  -훌쩍이다:동:5
  +훌쩍거리:동:5
  +훌쩍대:동:1
  +훌쩍이:동:5
   훌쩍훌쩍:부:4
   훌훌:부:9
  -훑다:동:16
  -훑어보다:동:32
  -훔쳐보다:동:24
  -훔치다:동:22
  -훔치다:동:78
  -훔켜잡다:동:1
  +훑:동:16
  +훑어보:동:32
  +훔쳐보:동:24
  +훔치:동:22
  +훔치:동:78
  +훔켜잡:동:1
   훗날:명:24
   훤소:명:1
  -훤칠하다:형:4
  -훤하다:형:6
  +훤칠하:형:4
  +훤하:형:6
   훤히:부:19
   훨:부:1
   훨씬:부:340
   훨훨:부:7
   훼방:명:3
  -훼방하다:동:1
  +훼방하:동:1
   훼상:명:1
   훼손:명:21
  -훼손당하다:동:1
  -훼손되다:동:9
  -훼손시키다:동:4
  +훼손당하:동:1
  +훼손되:동:9
  +훼손시키:동:4
   훼손죄:명:1
  -훼손하다:동:19
  -휑뎅그렁하다:형:2
  -휑하다:형:4
  +훼손하:동:19
  +휑뎅그렁하:형:2
  +휑하:형:4
   휘:부:2
  -휘갈겨지다:동:1
  -휘갈기다:동:1
  -휘감기다:동:4
  -휘감다:동:10
  -휘날리다:동:10
  -휘다:동:18
  -휘다지다:동:1
  -휘달아나다:동:1
  -휘돌다:동:8
  -휘돌리다:동:15
  -휘돌아보다:동:1
  -휘두르다:동:41
  -휘둘러보다:동:5
  -휘둘리다:동:4
  -휘둥그렇다:형:1
  +휘갈겨지:동:1
  +휘갈기:동:1
  +휘감기:동:4
  +휘감:동:10
  +휘날리:동:10
  +휘:동:18
  +휘다지:동:1
  +휘달아나:동:1
  +휘돌:동:8
  +휘돌리:동:15
  +휘돌아보:동:1
  +휘두르:동:41
  +휘둘러보:동:5
  +휘둘리:동:4
  +휘둥그렇:형:1
   휘둥그레:부:1
  -휘둥그레지다:동:9
  -휘말다:동:1
  -휘말리다:동:18
  +휘둥그레지:동:9
  +휘말:동:1
  +휘말리:동:18
   휘모리:명:1
  -휘몰아치다:동:9
  +휘몰아치:동:9
   휘발유:명:8
   휘슬:명:2
  -휘어들다:동:1
  -휘어뜨리다:동:1
  -휘어잡다:동:5
  -휘어지다:동:23
  +휘어들:동:1
  +휘어뜨리:동:1
  +휘어잡:동:5
  +휘어지:동:23
   휘영청:부:1
   휘장:명:1
   휘장:명:2
  -휘적거리다:동:1
  -휘적시다:동:1
  +휘적거리:동:1
  +휘적시:동:1
   휘적휘적:부:1
  -휘젓다:동:14
  -휘주무르다:동:1
  +휘젓:동:14
  +휘주무르:동:1
   휘청:부:1
  -휘청거려지다:동:1
  -휘청거리다:동:8
  -휘청하다:동:1
  -휘청휘청하다:동:2
  +휘청거려지:동:1
  +휘청거리:동:8
  +휘청하:동:1
  +휘청휘청하:동:2
   휘파람:명:22
   휘파람새:명:6
   휘핑크림:명:7
   휘하:명:5
  -휘헝해지다:동:1
  +휘헝해지:동:1
   휘호:명:1
  -휘황찬란하다:형:4
  -휘황하다:형:3
  +휘황찬란하:형:4
  +휘황하:형:3
   휘휘:부:1
   휘휘:부:3
   휙:부:20
   휠:명:1
   휠씬:부:2
   휠체어:명:11
  -휩싸다:동:4
  -휩싸이다:동:27
  -휩쓸다:동:35
  -휩쓸리다:동:18
  +휩싸:동:4
  +휩싸이:동:27
  +휩쓸:동:35
  +휩쓸리:동:18
   휫손:명:1
   휭:부:3
  -휭둥그레하다:형:1
  +휭둥그레하:형:1
   휴:감:10
   휴가:명:85
   휴가제:명:1
   휴가철:명:10
  -휴간하다:동:1
  +휴간하:동:1
   휴강:명:1
   휴게소:명:5
   휴게실:명:8
   휴경:명:1
  -휴관하다:동:1
  +휴관하:동:1
   휴대:명:5
   휴대용:명:6
   휴대폰:명:2
   휴대품:명:13
  -휴대하다:동:3
  +휴대하:동:3
   휴머니스트:명:2
   휴머니즘:명:8
   휴면:명:2
  @@ -58012,26 +58012,26 @@
   휴식년제:명:1
   휴식일:명:2
   휴식처:명:8
  -휴식하다:동:6
  +휴식하:동:6
   휴양:명:4
   휴양객:명:1
   휴양림:명:1
   휴양소:명:3
   휴양원:명:64
   휴양지:명:7
  -휴양하다:동:1
  +휴양하:동:1
   휴업:명:9
  -휴업하다:동:1
  +휴업하:동:1
   휴일:명:37
   휴전:명:27
  -휴전되다:동:2
  +휴전되:동:2
   휴전선:명:27
   휴지:명:29
   휴지통:명:15
   휴직:명:1
  -휴진하다:동:1
  +휴진하:동:1
   휴학:명:5
  -휴학하다:동:3
  +휴학하:동:3
   휴한:명:2
   휴한법:명:1
   흉:명:1
  @@ -58047,51 +58047,51 @@
   흉대:명:2
   흉몽:명:3
   흉물:명:1
  -흉물스럽다:형:1
  +흉물스럽:형:1
   흉변:명:1
  -흉보다:동:4
  +흉보:동:4
   흉부외과:명:2
   흉상:명:2
   흉악:명:5
   흉악범:명:4
  -흉악하다:형:6
  +흉악하:형:6
   흉인:명:1
   흉일:명:1
   흉작:명:3
   흉조:명:1
   흉추:명:4
  -흉측하다:형:6
  +흉측하:형:6
   흉터:명:6
  -흉포해지다:동:1
  -흉포화되다:동:1
  -흉하다:형:18
  +흉포해지:동:1
  +흉포화되:동:1
  +흉하:형:18
   흉허물:명:2
  -흉흉하다:형:5
  -흐느끼다:동:17
  +흉흉하:형:5
  +흐느끼:동:17
   흐느낌:명:4
  -흐느적거리다:동:3
  -흐늘거리다:동:1
  -흐늘어지다:동:1
  -흐드러지다:형:2
  -흐려지다:동:15
  -흐르다:동:445
  +흐느적거리:동:3
  +흐늘거리:동:1
  +흐늘어지:동:1
  +흐드러지:형:2
  +흐려지:동:15
  +흐르:동:445
   흐름:명:163
  -흐리다:동:25
  -흐리다:형:31
  +흐리:동:25
  +흐리:형:31
   흐리멍덩:부:1
  -흐리멍덩하다:형:2
  -흐릿하다:형:6
  -흐물흐물하다:형:1
  +흐리멍덩하:형:2
  +흐릿하:형:6
  +흐물흐물하:형:1
   흐뭇:명:1
   흐뭇이:부:1
  -흐뭇하다:형:27
  -흐뭇해하다:동:7
  +흐뭇하:형:27
  +흐뭇해하:동:7
   흐지부지:부:4
  -흐지부지되다:동:3
  -흐트러뜨리다:동:3
  -흐트러지다:동:26
  +흐지부지되:동:3
  +흐트러뜨리:동:3
  +흐트러지:동:26
   흐흐:부:11
  -흐흥거리다:동:2
  +흐흥거리:동:2
   흑:명:4
   흑:부:1
   흑갈색:명:7
  @@ -58119,43 +58119,43 @@
   흑질백장:명:1
   흑체:명:1
   흑흑:부:1
  -흔뎅거리다:동:1
  -흔들거리다:동:6
  +흔뎅거리:동:1
  +흔들거리:동:6
   흔들기:명:2
  -흔들다:동:187
  -흔들리다:동:91
  +흔들:동:187
  +흔들리:동:91
   흔들의자:명:3
   흔들이:명:2
   흔들흔들:부:1
  -흔들흔들거리다:동:1
  +흔들흔들거리:동:1
   흔연히:부:1
   흔적:명:78
  -흔쾌하다:형:2
  +흔쾌하:형:2
   흔쾌히:부:12
  -흔하다:형:137
  -흔해지다:동:2
  +흔하:형:137
  +흔해지:동:2
   흔히:부:222
  -흘겨보다:동:10
  +흘겨보:동:10
   흘금:부:1
   흘금흘금:부:1
   흘긋:부:8
   흘긋흘긋:부:1
  -흘기다:동:14
  +흘기:동:14
   흘깃:부:6
   흘깃흘깃:부:2
  -흘끔거리다:동:1
  +흘끔거리:동:1
   흘끗:부:1
   흘낏:부:10
  -흘러가다:동:69
  -흘러나오다:동:70
  -흘러내리다:동:41
  -흘러넘치다:동:10
  -흘러들다:동:34
  -흘러오다:동:7
  +흘러가:동:69
  +흘러나오:동:70
  +흘러내리:동:41
  +흘러넘치:동:10
  +흘러들:동:34
  +흘러오:동:7
   흘레:명:1
  -흘려보내다:동:11
  -흘려주다:동:1
  -흘리다:동:177
  +흘려보내:동:11
  +흘려주:동:1
  +흘리:동:177
   흙:명:132
   흙강아지:명:1
   흙구덩이:명:1
  @@ -58174,7 +58174,7 @@
   흙벽돌:명:1
   흙벽돌집:명:1
   흙장난:명:2
  -흙장난하다:동:1
  +흙장난하:동:1
   흙집:명:1
   흙탕물:명:14
   흙투성이:명:6
  @@ -58184,28 +58184,28 @@
   흠결:명:1
   흠머:감:1
   흠모:명:3
  -흠모하다:동:5
  -흠벅지다:형:1
  +흠모하:동:5
  +흠벅지:형:1
   흠뻑:부:23
   흠씬:부:4
   흠앙:명:1
  -흠잡다:동:5
  +흠잡:동:5
   흠절:명:2
  -흠지다:동:1
  +흠지:동:1
   흠집:명:12
   흠칫:부:20
  -흠칫하다:동:3
  +흠칫하:동:3
   흠칫흠칫:부:1
   흠흠:감:1
   흠흠:감:2
  -흡뜨다:동:1
  +흡뜨:동:1
   흡사:부:17
  -흡사하다:형:18
  +흡사하:형:18
   흡수:명:31
  -흡수되다:동:28
  -흡수시키다:동:1
  -흡수하다:동:2
  -흡수하다:동:44
  +흡수되:동:28
  +흡수시키:동:1
  +흡수하:동:2
  +흡수하:동:44
   흡연:명:12
   흡연가:명:1
   흡연실:명:6
  @@ -58218,136 +58218,136 @@
   흡입력:명:1
   흡입술:명:2
   흡입제:명:1
  -흡입하다:동:2
  -흡족하다:형:12
  -흡족해하다:동:3
  +흡입하:동:2
  +흡족하:형:12
  +흡족해하:동:3
   흡혈귀:명:2
   흥:감:24
   흥:명:9
  -흥감스럽다:형:1
  -흥거리다:동:1
  -흥건하다:형:3
  +흥감스럽:형:1
  +흥거리:동:1
  +흥건하:형:3
   흥건히:부:2
  -흥겨워지다:동:1
  -흥겹다:형:18
  +흥겨워지:동:1
  +흥겹:형:18
   흥국:명:1
   흥뚱항뚱:부:1
   흥망:명:2
   흥망성쇠:명:4
   흥미:명:69
  -흥미롭다:형:32
  +흥미롭:형:32
   흥미진진:명:1
  -흥미진진하다:형:6
  +흥미진진하:형:6
   흥밋거리:명:1
   흥분:명:34
  -흥분되다:동:5
  -흥분시키다:동:2
  -흥분하다:동:34
  +흥분되:동:5
  +흥분시키:동:2
  +흥분하:동:34
   흥불:명:1
   흥신업:명:1
  -흥얼거리다:동:8
  -흥얼대다:동:1
  +흥얼거리:동:8
  +흥얼대:동:1
   흥얼흥얼:부:2
   흥정:명:9
  -흥정하다:동:4
  +흥정하:동:4
   흥청:명:1
  -흥청거리다:동:1
  -흥청대다:동:2
  +흥청거리:동:1
  +흥청대:동:2
   흥청망청:부:2
   흥청흥청:부:1
   흥취:명:2
  -흥하다:동:2
  -흥해지다:동:1
  +흥하:동:2
  +흥해지:동:1
   흥행:명:13
   흥행사:명:1
   흥행성:명:1
   흥행작:명:1
   흥흥:부:4
  -흩날리다:동:6
  -흩다:동:2
  -흩뜨리다:동:7
  -흩뿌리다:동:3
  -흩어지다:동:90
  -흩트리다:동:1
  +흩날리:동:6
  +흩:동:2
  +흩뜨리:동:7
  +흩뿌리:동:3
  +흩어지:동:90
  +흩트리:동:1
   희곡:명:89
   희곡계:명:3
   희곡론:명:1
   희곡사:명:2
  -희구하다:동:1
  +희구하:동:1
   희귀:명:10
   희귀목:명:1
   희귀조:명:1
   희귀종:명:1
  -희귀하다:형:9
  +희귀하:형:9
   희극:명:10
   희극성:명:1
  -희극스럽다:형:1
  +희극스럽:형:1
   희극적:관:6
   희극적:명:8
  -희끄무레하다:형:5
  -희끗하다:동:1
  -희끗하다:형:1
  +희끄무레하:형:5
  +희끗하:동:1
  +희끗하:형:1
   희끗희끗:부:6
  -희끗희끗하다:형:9
  -희다:형:168
  +희끗희끗하:형:9
  +희:형:168
   희대:명:2
  -희디희다:형:2
  -희떱다:형:1
  +희디희:형:2
  +희떱:형:1
   희락:명:1
   희로애락:명:10
   희롱:명:3
  -희롱하다:동:2
  +희롱하:동:2
   희망:명:150
   희망봉:명:1
   희망자:명:4
   희망적:관:1
   희망적:명:6
  -희망차다:형:6
  -희망하다:동:15
  -희멀쑥하다:형:1
  -희미하다:형:43
  -희미해지다:동:4
  +희망차:형:6
  +희망하:동:15
  +희멀쑥하:형:1
  +희미하:형:43
  +희미해지:동:4
   희박:명:1
  -희박하다:형:5
  -희박해지다:동:3
  -희번덕이다:동:1
  -희부옇다:형:1
  +희박하:형:5
  +희박해지:동:3
  +희번덕이:동:1
  +희부옇:형:1
   희비:명:2
   희비극:명:2
   희비극적:관:2
   희비극적:명:1
  -희뿌옇다:형:1
  -희뿌윰하다:형:1
  -희사하다:동:1
  +희뿌옇:형:1
  +희뿌윰하:형:1
  +희사하:동:1
   희색:명:2
   희생:명:38
  -희생당하다:동:4
  -희생되다:동:8
  +희생당하:동:4
  +희생되:동:8
   희생물:명:5
  -희생시키다:동:12
  +희생시키:동:12
   희생심:명:1
   희생양:명:1
   희생자:명:18
   희생적:명:2
   희생정신:명:1
  -희생하다:동:30
  -희석되다:동:1
  -희석시키다:동:7
  -희소하다:형:1
  +희생하:동:30
  +희석되:동:1
  +희석시키:동:7
  +희소하:형:1
   희수:명:1
   희열:명:13
   희열감:명:1
   희원:명:1
  -희푸르다:형:1
  -희한하다:형:19
  +희푸르:형:1
  +희한하:형:19
   희화:명:1
   희화적:명:2
  -희화화시키다:동:1
  -희화화하다:동:1
  -희희낙락거리다:동:1
  -희희낙락하다:동:1
  -희희덕거리다:동:1
  -희희덕대다:동:1
  +희화화시키:동:1
  +희화화하:동:1
  +희희낙락거리:동:1
  +희희낙락하:동:1
  +희희덕거리:동:1
  +희희덕대:동:1
   흰넓적다리붉은쥐:명:1
   흰눈썹황금새:명:3
   흰둥이:명:2
  @@ -58373,26 +58373,26 @@
   흰쥐:명:5
   흰풀:명:1
   히:부:2
  -히다:동:14
  +히:동:14
   히든:명:3
   히든카드:명:3
  -히들거리다:동:1
  +히들거리:동:1
   히뜩:부:1
   히로뽕:명:3
   히로인:명:1
   히말라야삼나무:명:1
   히스테리:명:8
   히스테리기:명:1
  -히스테리컬하다:형:2
  +히스테리컬하:형:2
   히죽:부:7
  -히죽대다:동:1
  +히죽대:동:1
   히죽이:부:1
   히죽히죽:부:1
   히터:명:1
   히터:명:1
   히트:명:14
   히트곡:명:6
  -히트시키다:동:2
  +히트시키:동:2
   히트작:명:1
   히피:명:1
   히히:부:8
  @@ -58402,30 +58402,30 @@
   힐:명:1
   힐긋:부:1
   힐끔:부:2
  -힐끔거리다:동:2
  -힐끔대다:동:1
  +힐끔거리:동:2
  +힐끔대:동:1
   힐끔힐끔:부:4
   힐끗:부:17
  -힐끗거리다:동:1
  +힐끗거리:동:1
   힐난:명:1
  -힐난하다:동:3
  +힐난하:동:3
   힘:명:866
   힘겨루기:명:2
  -힘겹다:형:34
  +힘겹:형:34
   힘껏:부:27
  -힘내다:동:1
  -힘들다:형:424
  -힘들어지다:동:8
  -힘들어하다:동:15
  -힘들이다:동:11
  -힘세다:형:7
  -힘쓰다:동:62
  -힘없다:형:10
  +힘내:동:1
  +힘들:형:424
  +힘들어지:동:8
  +힘들어하:동:15
  +힘들이:동:11
  +힘세:형:7
  +힘쓰:동:62
  +힘없:형:10
   힘없이:부:18
  -힘입다:동:46
  +힘입:동:46
   힘자랑:명:1
   힘점:명:1
  -힘주다:동:12
  +힘주:동:12
   힘줄:명:4
  -힘차다:형:52
  +힘차:형:52
   힝타기:명:1
  
  
  


wkpark      2008/05/07 00:57:51

  Modified:    lib      dict.text.php
  Log:
  minor fix
  
  Revision  Changes    Path
  1.2       +36 -22    moniwiki/lib/dict.text.php
  
  Index: dict.text.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/dict.text.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- dict.text.php	4 May 2008 10:52:50 -0000	1.1
  +++ dict.text.php	6 May 2008 15:57:51 -0000	1.2
  @@ -8,17 +8,17 @@
   // Name: TextDictModule
   // Description: A Simple Text-based Dictionary Module
   // URL: MoniWiki:TextDictModule etc.
  -// Version: $Revision: 1.1 $
  +// Version: $Revision: 1.2 $
   // License: GPL
   //
  -// $Id: dict.text.php,v 1.1 2008/05/04 10:52:50 wkpark Exp $
  +// $Id: dict.text.php,v 1.2 2008/05/06 15:57:51 wkpark Exp $
   //
   
   function _fuzzy_bsearch_file($fp, $key, $seek, $fuzzyoffset=0, $klen=0,$fz=0,$encoding='UTF-8') {
       # adjustable parameters
       $_fuzzy_factor = 0.65; # mid parameter: in case of binary-search: 0.5
  -    $_chunk_size = 40; # average strlen parameter of lines.
  -    $_howmany = 20; # this is not exact the bsearch then limit the search counter.
  +    $_chunk_size = 32; # average strlen parameter of lines.
  +    $_howmany = 23; # this is not exact the bsearch then limit the search counter.
       $_debug = 1; # show debug info or not
   
       if (empty($key)) return null;
  @@ -59,7 +59,7 @@
   
           if ($llen < $ki) {
               if ($match) {
  -                if ($_debug) print '**--<br />';
  +                if ($_debug) print "**--<br />\n";
                   $lower = $myseek - strlen($l);
                   break;
               }
  @@ -97,9 +97,11 @@
   
           $offset = $sign * $f_offset;
       }
  -    if ($_debug) print "key=".$key.'/seek='.$lower.'/offset='.($upper - $lower).'<br />';
  -    fseek($fp,$lower);
  -    if ($_debug) print "<pre>==== chunk ====\n".fread($fp,$upper - $lower).'</pre>';
  +    if ($_debug > 50) {
  +        print "key=".$key.'/seek='.$lower.'/offset='.($upper - $lower)."<br />\n";
  +        fseek($fp,$lower);
  +        print "<pre>==== chunk ====\n".fread($fp,$upper - $lower)."</pre>\n";
  +    }
       return array($l,$lower,$upper,$scount);
   }
   
  @@ -115,7 +117,7 @@
       if ($klen == 1) $match_prefix=false;
   
       if (empty($key)) return '';
  -    #print $klen.':'.$lower.'/'.$upper.'<br />';
  +    #print $klen.':'.$lower.'/'.$upper."<br />\n";
       //if ($lower > $upper) print 'bbbbbboooo';
   
       $ki=0;
  @@ -139,44 +141,43 @@
           $mykey= strtok($l,' \t\n,:');
           $llen= mb_strlen($mykey,$encoding);
           if ($llen < $ki) {
  -            print '*pkey='.$pkey.'<br />';
  -            if ($match) break;
  -            continue;
  +            if ($_debug) print '*pkey='.$pkey."<br />\n";
  +            break;
           }
           if ($ki > 0) $pmykey=mb_substr($mykey,0,$ki,$encoding);
           $cmykey=mb_substr($mykey,$ki,1,$encoding);
   
           if ($ki == $klen and $pkey == $pmykey) {
               if (!$match_prefix and $llen > $klen) break;
  -            //print '+'.$ki.'<br />';
  +            #print '+'.$ki."<br />\n";
               $buf.=$l;
               $count++;
           } else if ($ckey == $cmykey and $pkey == $pmykey) {
               if ($ki < $klen) {
                   $ki++;
                   $pkey.=$ckey;
  -                //print 'pkey='.$pkey.'<br />';
  +                //print 'pkey='.$pkey."<br />\n";
                   for ($ckey=mb_substr($key,$ki,1,$encoding);$ki<=$klen;$ckey=mb_substr($key,++$ki,1,$encoding)) {
                       if ($llen > $ki) {
                           $cmykey=mb_substr($mykey,$ki,1,$encoding);
                           if ($ckey == $cmykey) {
                               $pkey.=$ckey;
  -                            //print '++pkey='.$pkey.'<br />';
  +                            //print '++pkey='.$pkey."<br />\n";
                               continue;
                           }
                       }
                       break;
                   }
  -                //print 'pkey='.$pkey.'<br />';
  +                //print 'pkey='.$pkey."<br />\n";
                   if ($ki == $klen) {
                       $match=1;
                       $buf.=$l;
  -                    $count++;
  +                    if ($klen == $llen) $count++;
                   }
                   continue;
               }
               if ($ki == $klen) $match = true;
  -            print '+pkey='.$pkey.'<br />';
  +            print '+pkey='.$pkey."<br />\n";
               if ($ki == $klen) $buf.=$l;
           } else if ($pkey != $pmykey) {
               break;
  @@ -188,11 +189,24 @@
           }
       }
       $cseek+=$n;
  -    if ($n>100) $n='<span style="color:red">'.$n.'</span>';
  -    if ($_debug) print 'fgets='.$key.'/'.$nn.'/'.$n.'/'.$cseek."<br />";
  -    if ($count == 0 and !empty($pkey))
  -        return array ($count, $pkey, $last);
  -    return array ($count, $buf, null);
  +    if ($_debug) {
  +        if ($n>100) $n='<span style="color:red">'.$n.'</span>';
  +        print 'fgets='.$key.'/'.$nn.'/'.$n.'/'.$cseek."<br />\n";
  +    }
  +    if ($count) return array ($count, $buf, null);
  +    if (!empty($pkey)) {
  +        $lastmatch= strtok($last,' \t\n,:');
  +        $len = strlen($pkey);
  +        // XXX matching ratio + fuzzy factor etc.
  +        $match_ratio = $len / strlen($lastmatch);
  +        if ($_debug) {
  +            print $klen.' - '.$llen;
  +            $suffix = substr($lastmatch,$len);
  +            print 'matching ratio: '.$match_ratio.'/ suffix= "'.$suffix.'" '.$last."<br />\n";
  +        }
  +        return array (0, $buf, $last);
  +    }
  +    return array (0, null, null);
   }
   
   // vim:et:sts=4:sw=4:
  
  
  


wkpark      2008/05/07 00:58:11

  Modified:    lib      indexer.ko.php
  Log:
  try to use dict.text module
  
  Revision  Changes    Path
  1.6       +204 -13   moniwiki/lib/indexer.ko.php
  
  Index: indexer.ko.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/indexer.ko.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- indexer.ko.php	5 May 2008 15:55:15 -0000	1.5
  +++ indexer.ko.php	6 May 2008 15:58:11 -0000	1.6
  @@ -3,10 +3,48 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a KoreanIndexer class for the MoniWiki
   //
  -// $Id: indexer.ko.php,v 1.5 2008/05/05 15:55:15 wkpark Exp $
  +// $Id: indexer.ko.php,v 1.6 2008/05/06 15:58:11 wkpark Exp $
   //
   // EXPERIMENTAL !!
   
  +class TagOp {
  +    var $value;
  +    var $type;
  +
  +    function TagOp($value,$type) {
  +        $this->value=$value;
  +        $this->type=$type;
  +    }
  +
  +    function toString() {
  +        return $tag->value.'/'.$tag->type;
  +    }
  +}
  +
  +class TagSet extends TagOp {
  +    var $value;
  +    var $type;
  +    var $tags;
  +
  +    function TagSet($value,$type) {
  +        $this->value=$value;
  +        $this->type=$type;
  +        $this->tags=array();
  +    }
  +
  +    function add($tag) {
  +        $this->tags[]=$tag;
  +    }
  +
  +    function toString() {
  +        $tags = array();
  +        foreach ($this->tags as $tag)
  +            $tags[]=$tag->toString();
  +
  +        return implode('+',$tags);
  +    }
  +}
  +
   class KoreanIndexer {
       function KoreanIndexer() {
           include_once(dirname(__FILE__).'/compat.php');
  @@ -21,6 +59,130 @@
           $this->_dict = &$fp;
           $fs=fstat($fp);
           $this->_dict_size=$fs['size'];
  +        $this->_cache = array();
  +    }
  +
  +    function tagName($name) {
  +        static $full_tags = array(
  +            'INI'=>'시작',
  +            's,'=> '쉼표',
  +            's.'=> '종결',
  +            's`'=> '여는따옴표',
  +            's\''=> '닫는따옴표',
  +            's-'=> '이음표',
  +            'su'=> '단위',
  +            'sw'=> '화폐단위',
  +            'sy'=> '기타기호',
  +            'f'=>  '외국어',
  +            'nnn'=>'숫자',
  +            'nct'=>'시간성보통명사',
  +            'nca'=>'동작성보통명사',
  +            'ncs'=>'상태성보통명사',
  +            'nc'=> '보통명사',
  +            'nq'=> '고유명사',
  +            'nbu'=>'단위성의존명사',
  +            'nb'=> '의존명사',
  +            'np'=> '대명사',
  +            'npp'=>'인칭대명사',
  +            'npd'=>'지시대명사',
  +            'nn'=> '수사',
  +            'pv'=> '동사',
  +            'pad'=>'지시형용사',
  +            'pa'=> '형용사',
  +            'px'=> '보조용언',
  +            'md'=> '지시관형사',
  +            'mn'=> '수관형사',
  +            'm'=>  '관형사',
  +            'at'=> '시간부사',
  +            'ad'=> '지시부사',
  +            'ajw'=>'단어접속부사',
  +            'ajs'=>'문장접속부사',
  +            'a'=>  '부사',
  +            'i'=>  '감탄사',
  +            'jc'=> '격조사',
  +            'jcm'=>'관형격조사',
  +            'jcv'=>'호격조사',
  +            'jca'=>'부사격조사',
  +            'jcp'=>'서술격조사',
  +            'jx'=> '보조사',
  +            'jj'=> '접속조사',
  +            'ecq'=>'대등적연결어미',
  +            'ecs'=>'종속적연결어미',
  +            'ecx'=>'보조적연결어미',
  +            'exm'=>'관형사형전성어미',
  +            'exn'=>'명사형전성어미',
  +            'exa'=>'부사형전성어미',
  +            'efp'=>'선어말어미',
  +            'ef'=> '종결어미',
  +            'xn'=> '명사접미사',
  +            'xpv'=>'동사파생접미사',
  +            'xpa'=>'형용사파생접미사',
  +            'xa'=> '부사파생접미사',
  +            'FIN'=>'끝',
  +            'int'=>'매개모음',
  +        );
  +
  +        static $tags = array(
  +            'INI'=>'시',
  +            's,'=> '쉼',
  +            's.'=> '종',
  +            's`'=> '여',
  +            's\''=> '닫',
  +            's-'=> '이',
  +            'su'=> '단',
  +            'sw'=> '화',
  +            'sy'=> '기',
  +            'f'=>  '외',
  +            'nnn'=>'숫자',
  +            'nct'=>'시간성보통명사',
  +            'nca'=>'동작성보통명사',
  +            'ncs'=>'상태성보통명사',
  +            'nc'=> '명',
  +            'nq'=> '고',
  +            'nbu'=>'단의',
  +            'nb'=> '의',
  +            'np'=> '대', /* */
  +            'npp'=>'인',
  +            'npd'=>'지',
  +            'nn'=> '수',
  +            'pv'=> '동',
  +            'pad'=>'지형',
  +            'pa'=> '형',
  +            'px'=> '보',
  +            'md'=> '지관',
  +            'mn'=> '수관',
  +            'm'=>  '관',
  +            'at'=> '시부',
  +            'ad'=> '지',
  +            'ajw'=>'단접',
  +            'ajs'=>'문접',
  +            'a'=>  '부',
  +            'i'=>  '감',
  +            'jc'=> '격',
  +            'jcm'=>'관조',
  +            'jcv'=>'호조',
  +            'jca'=>'부조',
  +            'jcp'=>'서조',
  +            'jx'=> '보조',
  +            'jj'=> '접',
  +            'ecq'=>'대등적연결어',
  +            'ecs'=>'종속적연결어',
  +            'ecx'=>'보조적연결어',
  +            'exm'=>'관형사형전성어',
  +            'exn'=>'명사형전성어',
  +            'exa'=>'부사형전성어',
  +            'efp'=>'선어말어',
  +            'ef'=> '종결어',
  +            'xn'=> '명사접미사',
  +            'xpv'=>'동사파생접미사',
  +            'xpa'=>'형용사파생접미사',
  +            'xa'=> '부사파생접미사',
  +            'FIN'=>'끝',
  +            'int'=>'매개모음',
  +        );
  +
  +        if (in_array($name,$tags))
  +            return array_search($name,$tags);
       }
   
       function _eomiRule() {
  @@ -83,35 +245,61 @@
           return $rule;
       }
   
  -    function isWord($word) {
  -        // XXX
  -        
  +    function isWord($word,$flag=false,$fuzzy=0.7) {
  +        // simple caching
  +        if (array_key_exists($word,$this->_cache))
  +            return $this->_cache[$word];
  +
           list($l,$min_seek,$max_seek,$scount)=
               _fuzzy_bsearch_file($this->_dict,$word,0,$this->_dict_size/2,0,$this->_dict_size);
           list($c,$buf,$last)=
  -            _file_match($this->_dict,$word,$min_seek,$max_seek,$this->_dict_size,0,false,'UTF-8');
  +            _file_match($this->_dict,$word,$min_seek,$max_seek,$this->_dict_size,0,$flag,'UTF-8');
           
  -        if (!empty($buf)) return true;
  -        return false;
  +        $cand=array();
  +        if (!empty($c)) {
  +            $list=explode("\n",rtrim($buf));
  +            foreach ($list as $l) {
  +                list($k,$t,$r) = explode(':',$l);
  +                $cand[]=array($k,$this->tagName($t),$r);
  +            }
  +            print_r($cand);
  +        } else if (!empty($buf)) {
  +            $list=explode("\n",rtrim($buf));
  +            foreach ($list as $l) {
  +                list($k,$t,$r) = explode(':',$l);
  +                $cand[]=array($k,$this->tagName($t),$r);
  +            }
  +            print_r($cand);
  +        }
  +        $ret=array($c,$cand,$last);
  +        $this->_cache[$word]=&$ret;
  +        return $ret;
       }
   
       function getStem($word,&$match,&$type) {
           // XXX
           $type=1;
  -        if ($this->isWord($word)) return $word;
  -        $stem=$this->getNoun($word,$match);
  -        if ($stem and $this->isWord($stem)) return $stem;
  +        list($r, $cand, $last) = $this->isWord($word);
  +        if ($cand[0][1]{0} == 'n') return $word;
  +        else $stem=$this->getNoun($word,$match);
  +
  +        if ($stem) {
  +            list ($r1, $cand1,$last1) = $this->isWord($stem);
  +            $type=$cand1[0][1];
  +            if ($cand1[0][1]{0} == 'n') return $stem;
  +        }
  +        #if ($stem and $this->isWord($stem) == 'n') return $stem;
           $verb=$this->getVerb($word,$vmatch);
           if ($stem or $verb) {
   
               if (strlen($match[1]) <= strlen($vmatch[1])) {
  -                $type=2;
  +                $type='p';
                   $match=$vmatch;
                   $stem=$verb;
               }
               return $stem;
           }
  -        $type=0;
  +        $type=null;
           return false;
       }
   
  @@ -121,7 +309,10 @@
           preg_match('/('.$this->_josa_rule.')$/S',$word,$match);
           if (!empty($match[1])) {
               $pword=substr($word,0,-strlen($match[1]));
  -            if ($pword and $this->isWord($pword)) return $pword;
  +            if ($pword) {
  +                list ($r, $cand,$last) = $this->isWord($pword);
  +                if ($cand[0][1]{0} == 'n') return $pword;
  +            }
               $pword=$this->getWordRule($pword).$match[1];
               preg_match('/('.$this->_josa_rule.')$/S',$pword,$nmatch);
           } else {
  
  
  


wkpark      2008/05/07 00:59:07

  Modified:    plugin   TextDict.php
  Log:
  use word.txt.utf-8
  
  Revision  Changes    Path
  1.2       +6 -4      moniwiki/plugin/TextDict.php
  
  Index: TextDict.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/TextDict.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- TextDict.php	4 May 2008 10:52:51 -0000	1.1
  +++ TextDict.php	6 May 2008 15:59:07 -0000	1.2
  @@ -8,19 +8,19 @@
   // Name: TextDict
   // Description: A Simple Text-Dictionary search plugin
   // URL: MoniWiki:TextDict etc.
  -// Version: $Revision: 1.1 $
  +// Version: $Revision: 1.2 $
   // License: GPL
   //
   // Usage: [[TextDict(word)]]
   //
  -// $Id: TextDict.php,v 1.1 2008/05/04 10:52:51 wkpark Exp $
  +// $Id: TextDict.php,v 1.2 2008/05/06 15:59:07 wkpark Exp $
   //
   
   include_once(dirname(__FILE__).'/../lib/dict.text.php');
  +define('TEXT_DICT',dirname(__FILE__).'/../data/dict/word.txt.utf-8');
   
   function macro_TextDict($formatter,$value,$params=array()) {
       global $Config;
  -    define('TEXT_DICT',realpath($Config['data_dir']).'/dict/hanja.txt');
   
       $fp=fopen(TEXT_DICT,'r');
       if (!is_resource($fp)) return '';
  @@ -45,7 +45,6 @@
   
       $_debug=$options['debug'] ? $options['debug']:0;
   
  -    define('TEXT_DICT',realpath($Config['data_dir']).'/dict/hanja.txt');
       $formatter->send_header('',$options);
       $formatter->send_title('','',$options);
   
  @@ -69,6 +68,7 @@
       }
   
       sort($keys);$keys=array_unique($keys);
  +    if ($_debug) $options['timer']->Check("read");
   
       $fp=fopen(TEXT_DICT,'r');
       if (!is_resource($fp)) return '';
  @@ -83,12 +83,14 @@
               print 'found='.$c."<br />\n";
               print 'scount='.$scount."<br />\n";
               if ($last) print 'last='.$last."<br />\n";
  +            if ($_debug>50)
  +                if (!empty($buf)) print $buf."<br />\n";
           }
  -        if (!empty($buf)) print $buf."<br />\n";
       }
       fclose($fp);
   
       if ($_debug) {
  +        print "total ".sizeof($keys)." words searched<br />\n";
           $options['timer']->Check("dict");
           print "<pre>";
           print $options['timer']->Write();
  
  
  


wkpark      2008/05/07 10:44:31

  Modified:    lib      dict.text.php
  Log:
  use ftell()
  
  Revision  Changes    Path
  1.3       +7 -10     moniwiki/lib/dict.text.php
  
  Index: dict.text.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/dict.text.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- dict.text.php	6 May 2008 15:57:51 -0000	1.2
  +++ dict.text.php	7 May 2008 01:44:31 -0000	1.3
  @@ -8,10 +8,10 @@
   // Name: TextDictModule
   // Description: A Simple Text-based Dictionary Module
   // URL: MoniWiki:TextDictModule etc.
  -// Version: $Revision: 1.2 $
  +// Version: $Revision: 1.3 $
   // License: GPL
   //
  -// $Id: dict.text.php,v 1.2 2008/05/06 15:57:51 wkpark Exp $
  +// $Id: dict.text.php,v 1.3 2008/05/07 01:44:31 wkpark Exp $
   //
   
   function _fuzzy_bsearch_file($fp, $key, $seek, $fuzzyoffset=0, $klen=0,$fz=0,$encoding='UTF-8') {
  @@ -45,22 +45,19 @@
           $myseek = $myseek > $fz ? $fz:($myseek < 0 ? 0:$myseek);
           fseek($fp,$myseek);
   
  -        if ($rlen > 1024) { $rlen=1024;}
  -
           $ll=fgets($fp,1024);
  +        $myseek0=ftell($fp);
           $l=fgets($fp,1024);
  -
  +        if ($l=='') break;
           $mykey= strtok($l,' \t\n,:');
           $llen= mb_strlen($mykey,$encoding);
   
  -        $lz=strlen($l.$ll);
  -
  -        $myseek+=$lz;
  +        $myseek=ftell($fp);
   
           if ($llen < $ki) {
               if ($match) {
                   if ($_debug) print "**--<br />\n";
  -                $lower = $myseek - strlen($l);
  +                $lower = $myseek0;
                   break;
               }
               continue;
  @@ -80,7 +77,7 @@
           if ($test > 0) {
               //print "&gt;".$l;
               $sign = 1;
  -            $lower = $myseek - strlen($l);
  +            $lower = $myseek0;
           } else {
               //print "&lt;".$l;
               $sign = -1;
  
  
  


wkpark      2008/05/07 12:44:07

  Modified:    data/dict word.txt.utf-8
  Log:
  retry ^^;;
  
  Revision  Changes    Path
  1.4       +536 -536  moniwiki/data/dict/word.txt.utf-8
  
  Index: word.txt.utf-8
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/data/dict/word.txt.utf-8,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- word.txt.utf-8	6 May 2008 15:56:24 -0000	1.3
  +++ word.txt.utf-8	7 May 2008 03:44:07 -0000	1.4
  @@ -4,6 +4,7 @@
   #
   # Please see http://lists.kldp.net/pipermail/hangul-hackers/2006-October/000184.html
   #
  +가:동:4670
   가:명:1
   가:명:13
   가:명:13
  @@ -97,7 +98,6 @@
   가능액:명:1
   가능하:형:417
   가능해지:동:29
  -가:동:4670
   가다:보:1191
   가다:부:1
   가다가:부:1
  @@ -120,8 +120,8 @@
   가동성:명:2
   가동시키:동:2
   가동하:동:12
  -가두:명:5
   가두:동:38
  +가두:명:5
   가두리:명:2
   가두어지:동:1
   가드락:명:1
  @@ -187,10 +187,10 @@
   가름:명:2
   가름대:명:1
   가름하:동:10
  -가리나무:명:1
   가리:동:20
   가리:동:71
   가리:동:93
  +가리나무:명:1
   가리비:명:3
   가리어지:동:1
   가리우:동:3
  @@ -228,11 +228,11 @@
   가무잡잡하:형:8
   가무하:동:1
   가문:명:27
  +가물:동:5
   가물:명:1
   가물가물:부:5
   가물가물하:동:1
   가물거리:동:4
  -가물:동:5
   가물치:명:6
   가뭄:명:39
   가뭇가뭇하:형:1
  @@ -334,13 +334,13 @@
   가슴앓이:명:1
   가슴팍:명:11
   가습기:명:2
  +가시:동:33
   가시:명:14
   가시거리:명:2
   가시관:명:1
   가시권:명:1
   가시나:명:1
   가시나무:명:3
  -가시:동:33
   가시밭길:명:2
   가시버시:명:1
   가시적:관:2
  @@ -476,15 +476,15 @@
   가중되:동:16
   가중시키:동:10
   가증스럽:형:2
  +가지:동:1512
   가지:명:102
   가지:명:8
  +가지:보:411
   가지:의:1272
   가지가지:명:3
   가지각색:명:3
   가지급금:명:1
   가지나물:명:2
  -가지:동:1512
  -가지:보:411
   가지런하:형:4
   가지런히:부:36
   가지치기:명:7
  @@ -762,24 +762,24 @@
   간호학과:명:1
   간혹:부:52
   갇히:동:55
  +갈:동:25
  +갈:동:7
  +갈:동:89
   갈:명:2
   갈가리:부:9
   갈겨니:명:3
   갈겨지:동:1
   갈고닦:동:6
   갈고리:명:1
  -갈구:명:1
   갈구:동:4
  +갈구:명:1
   갈구하:동:6
   갈급하:형:1
  +갈기:동:12
   갈기:명:2
   갈기갈기:부:4
  -갈기:동:12
   갈까마귀:명:2
   갈꽃:명:13
  -갈:동:25
  -갈:동:7
  -갈:동:89
   갈대:명:11
   갈대밭:명:1
   갈대숲:명:1
  @@ -847,6 +847,9 @@
   갈피:명:10
   갉:동:2
   갉아먹:동:6
  +감:동:102
  +감:동:14
  +감:동:48
   감:명:19
   감:명:34
   감:명:8
  @@ -875,18 +878,15 @@
   감금되:동:3
   감금죄:명:5
   감금하:동:7
  -감기:명:60
   감기:동:1
   감기:동:1
   감기:동:5
   감기:동:8
  +감기:명:60
   감기약:명:8
   감꽃:명:3
   감나무:명:25
   감내하:동:4
  -감:동:102
  -감:동:14
  -감:동:48
   감당:명:1
   감당하:동:41
   감독:명:1
  @@ -1084,9 +1084,9 @@
   갑:명:1
   갑:명:20
   갑:명:29
  +갑:형:1
   갑갑하:형:7
   갑골:명:7
  -갑:형:1
   갑문:명:6
   갑부:명:2
   갑사:명:6
  @@ -1309,8 +1309,8 @@
   강화시키:동:29
   강화책:명:2
   강화하:동:101
  -갖가지:명:53
   갖:동:1008
  +갖가지:명:53
   갖다:보:57
   갖은:관:25
   갖추:동:279
  @@ -1322,6 +1322,9 @@
   같이하:동:48
   같잖:형:4
   갚:동:59
  +개:동:19
  +개:동:5
  +개:동:6
   개:명:1
   개:명:1
   개:명:145
  @@ -1384,9 +1387,6 @@
   개념화되:동:8
   개념화하:동:13
   개놈:명:1
  -개:동:19
  -개:동:5
  -개:동:6
   개다리소반:명:2
   개도국:명:10
   개떡:명:2
  @@ -1779,8 +1779,8 @@
   거둬들이:동:10
   거드럭거리:동:1
   거드름:명:4
  -거들:명:3
   거들:동:33
  +거들:명:3
   거들떠보:동:8
   거들먹거리:동:4
   거들먹대:동:1
  @@ -1938,8 +1938,8 @@
   거추장스럽:형:8
   거취:명:5
   거치:동:269
  -거칠거칠하:형:1
   거칠:형:93
  +거칠거칠하:형:1
   거칠어지:동:13
   거침없:형:4
   거침없이:부:9
  @@ -1985,9 +1985,9 @@
   건국하:동:6
   건군:명:3
   건냉소:명:1
  +건너:동:94
   건너:명:20
   건너가:동:45
  -건너:동:94
   건너다니:동:1
   건너다보:동:22
   건너다보이:동:2
  @@ -2009,8 +2009,8 @@
   건덕지:명:3
   건둥건둥:부:1
   건드리:동:50
  -건들거리:동:3
   건들:동:2
  +건들거리:동:3
   건듯:부:1
   건립:명:27
   건립되:동:6
  @@ -2069,8 +2069,8 @@
   건조해지:동:3
   건준:명:4
   건중탕:명:2
  -건지:명:2
   건지:동:75
  +건지:명:2
   건지황:명:2
   건초:명:1
   건추절:명:1
  @@ -2100,11 +2100,11 @@
   건포도:명:5
   건필:명:1
   건하:형:1
  -걷기:명:18
   걷:동:2
   걷:동:20
   걷:동:34
   걷:동:388
  +걷기:명:18
   걷어붙이:동:3
   걷어차:동:12
   걷어차이:동:2
  @@ -2114,12 +2114,12 @@
   걷히:동:1
   걷히:동:14
   걷히:동:7
  +걸:동:1
  +걸:동:303
   걸:명:1
   걸:명:1
   걸개:명:2
   걸걸하:형:2
  -걸:동:1
  -걸:동:303
   걸러지:동:3
   걸레:명:13
   걸레질:명:6
  @@ -2160,6 +2160,7 @@
   걸핏하면:부:26
   검:명:1
   검:불:3
  +검:형:143
   검객:명:2
   검거:명:17
   검거되:동:7
  @@ -2167,7 +2168,6 @@
   검거하:동:8
   검검청:명:1
   검경:명:9
  -검:형:143
   검댕:명:3
   검도부:명:1
   검둥이:명:3
  @@ -2261,11 +2261,11 @@
   겅중겅중:부:1
   겆:동:1
   겉:명:76
  +겉:형:1
   겉감:명:3
   겉껍질:명:2
   겉넓이:명:1
   겉늙:동:1
  -겉:형:1
   겉돌:동:7
   겉말:명:1
   겉면:명:2
  @@ -2475,8 +2475,8 @@
   견학하:동:19
   견해:명:155
   견해차:명:2
  -겯고틀:동:1
   겯:동:1
  +겯고틀:동:1
   결:명:1
   결:명:20
   결:의:4
  @@ -2671,10 +2671,10 @@
   겸허하:형:18
   겸허히:부:4
   겹:명:23
  +겹:형:11
   겹겹:명:5
   겹겹이:부:13
   겹경사:명:1
  -겹:형:11
   겹두루마기:명:1
   겹저고리:명:5
   겹집:명:1
  @@ -2970,8 +2970,8 @@
   경청하:동:12
   경추:명:4
   경축:명:1
  -경치:명:33
   경치:동:3
  +경치:명:33
   경칩:명:2
   경쾌하:형:25
   경쾌해지:동:1
  @@ -3114,8 +3114,8 @@
   계승자:명:2
   계승적:명:1
   계승하:동:30
  -계시:명:4
   계시:동:197
  +계시:명:4
   계시다:보:159
   계약:명:91
   계약고:명:2
  @@ -3186,6 +3186,7 @@
   곗돈:명:4
   고:관:14
   고:관:20
  +고:동:8
   고:명:1
   고:명:1
   고:명:1
  @@ -3274,7 +3275,6 @@
   고뇌:명:34
   고뇌하:동:9
   고니오톡신:명:1
  -고:동:8
   고단백:명:1
   고단백질:명:1
   고단수:명:1
  @@ -3467,9 +3467,9 @@
   고사장:명:3
   고사포:명:2
   고사포병:명:2
  -고사하고:부:15
   고사하:동:2
   고사하:동:4
  +고사하고:부:15
   고산:명:5
   고산대:명:1
   고상짜:명:1
  @@ -3601,8 +3601,8 @@
   고의:명:11
   고의적:관:1
   고의적:명:12
  -고이:부:9
   고이:동:26
  +고이:부:9
   고인:명:1
   고인:명:14
   고인돌:명:2
  @@ -3741,8 +3741,8 @@
   고품질:명:9
   고풍스럽:형:2
   고프:형:30
  -고하:명:5
   고하:동:11
  +고하:명:5
   고학:명:1
   고학년:명:3
   고학력:명:7
  @@ -3827,14 +3827,15 @@
   곧바로:부:63
   곧은길:명:1
   곧이곧대로:부:10
  -곧이듣기:동:1
   곧이듣:동:1
  +곧이듣기:동:1
   곧이어:부:17
   곧잘:부:49
   곧장:부:39
   곧추:부:1
   곧추서:동:1
   곧추세우:동:1
  +골:동:23
   골:명:1
   골:명:1
   골:명:15
  @@ -3846,7 +3847,6 @@
   골고루:부:45
   골나:동:1
   골네트:명:2
  -골:동:23
   골다공증:명:3
   골대:명:7
   골동:명:1
  @@ -4994,11 +4994,11 @@
   괜히:부:105
   괭이:명:7
   괭이갈매기:명:2
  +괴:동:15
  +괴:동:6
   괴:명:3
   괴괴하:형:1
   괴기하:형:2
  -괴:동:15
  -괴:동:6
   괴력:명:1
   괴로움:명:50
   괴로워하:동:16
  @@ -5336,8 +5336,8 @@
   구급:명:9
   구급약:명:1
   구급차:명:1
  -구기:명:2
   구기:동:7
  +구기:명:2
   구기박질러지:동:1
   구김살:명:1
   구깃구깃하:형:1
  @@ -5387,9 +5387,9 @@
   구류:명:1
   구류:명:2
   구류형:명:1
  -구르기:명:18
   구르:동:18
   구르:동:49
  +구르기:명:18
   구륵:명:1
   구름:명:86
   구름장:명:5
  @@ -6052,23 +6052,23 @@
   군혼:명:3
   군화:명:3
   군홧발:명:3
  +굳:동:18
  +굳:형:62
   굳건하:형:3
   굳건해지:동:2
   굳건히:부:5
   굳기름:명:2
  -굳:동:18
  -굳:형:62
   굳세:형:6
   굳어지:동:62
   굳은살:명:3
   굳이:부:88
   굳혀지:동:2
   굳히:동:31
  +굴:동:29
   굴:명:15
   굴:명:16
   굴곡:명:12
   굴곡하:형:1
  -굴:동:29
   굴다리:명:1
   굴뚝:명:14
   굴뚝같:형:1
  @@ -6111,9 +6111,9 @@
   굼뜨:형:5
   굼벵이:명:2
   굼실굼실:부:1
  -굽:명:13
   굽:동:116
   굽:동:3
  +굽:명:13
   굽:형:11
   굽슬굽슬하:형:1
   굽실거리:동:4
  @@ -6126,8 +6126,8 @@
   굽이굽이:부:1
   굽이치:동:6
   굽죄:동:1
  -굽히기:명:1
   굽히:동:76
  +굽히기:명:1
   굿:명:36
   굿판:명:9
   궁:명:7
  @@ -6518,8 +6518,8 @@
   그때그때:명:13
   그때그때:부:28
   그라:감:1
  -그라고:접:1
   그라:동:6
  +그라고:접:1
   그라마:접:1
   그라모:접:1
   그라문:접:2
  @@ -6553,12 +6553,12 @@
   그램비언:명:1
   그랬:불:384
   그랴:감:1
  +그러:동:1662
   그러게:감:6
   그러게:부:6
   그러그러하:형:1
   그러나:접:3457
   그러니까:접:279
  -그러:동:1662
   그러데이션:명:1
   그러데이션되:동:1
   그러데이션시키:동:2
  @@ -6610,12 +6610,12 @@
   그르치:동:7
   그릇:명:146
   그릇되:동:32
  +그리:동:457
  +그리:동:9
   그리:부:164
   그리:부:8
   그리고:접:2384
   그리구:접:2
  -그리:동:457
  -그리:동:9
   그리도:부:13
   그리되:동:5
   그리로:부:16
  @@ -6697,8 +6697,8 @@
   그쯤하:형:1
   그치:감:28
   그치:대:2
  -그치:불:2
   그치:동:199
  +그치:불:2
   그치만:접:2
   그케:불:10
   그토록:부:63
  @@ -7191,6 +7191,7 @@
   긍정하:동:10
   긍지:명:24
   기:관:1
  +기:동:36
   기:명:1
   기:명:1
   기:명:1
  @@ -7201,6 +7202,7 @@
   기:의:13
   기:의:2
   기:의:2
  +기:형:1
   기가:명:4
   기가바이트:의:2
   기각:명:3
  @@ -7331,17 +7333,15 @@
   기능주의적:관:16
   기능직:명:2
   기능하:동:17
  -기:동:36
  -기:형:1
   기다랗:형:21
   기다려지:동:6
   기다리:동:635
   기단:명:3
   기단부:명:2
  -기대:명:158
  -기대감:명:16
   기대:동:1
   기대:동:54
  +기대:명:158
  +기대감:명:16
   기대되:동:37
   기대서:동:1
   기대앉:동:3
  @@ -7387,10 +7387,10 @@
   기량:명:1
   기량:명:16
   기량:명:3
  +기러:동:1
   기러기:명:9
   기러니까:접:1
   기러니까니:접:1
  -기러:동:1
   기런:관:1
   기런데:접:1
   기럼:감:3
  @@ -7420,8 +7420,8 @@
   기름칠:명:1
   기름칠하:동:1
   기름투성이:명:2
  -기리고:접:2
   기리:동:23
  +기리고:접:2
   기린:명:2
   기마:명:7
   기마이:명:1
  @@ -7627,8 +7627,8 @@
   기운:명:5
   기운:명:74
   기운차:형:3
  -기울기:명:4
   기울:동:31
  +기울기:명:4
   기울어지:동:21
   기울여지:동:1
   기울이:동:180
  @@ -7781,11 +7781,11 @@
   기피증:명:2
   기피하:동:36
   기필코:부:9
  +기하:동:27
  +기하:동:4
   기하:명:1
   기하급수:명:2
   기하급수적:명:5
  -기하:동:27
  -기하:동:4
   기하학:명:6
   기하학적:관:22
   기하학적:명:9
  @@ -7886,12 +7886,14 @@
   긴하:형:2
   긴히:부:3
   긷:동:11
  +길:동:2
   길:명:1
   길:명:1
   길:명:1099
   길:명:3
   길:명:5
   길:의:6
  +길:형:509
   길가:명:41
   길갓집:명:1
   길거리:명:25
  @@ -7900,8 +7902,6 @@
   길길이:부:2
   길놀이:명:1
   길눈:명:1
  -길:동:2
  -길:형:509
   길더:의:11
   길동무:명:1
   길드:명:1
  @@ -7944,8 +7944,8 @@
   김:명:3
   김:명:43
   김:의:26
  -김매기:명:2
   김매:동:2
  +김매기:명:2
   김발:명:5
   김밥:명:21
   김새:동:3
  @@ -7978,10 +7978,10 @@
   깊이:명:63
   깊이:부:138
   깊이깊이:부:1
  +까:동:15
   까까머리:명:1
   까꿍:감:1
   까놓:동:4
  -까:동:15
   까다로워지:동:1
   까다롭:형:43
   까닥거리:동:1
  @@ -8014,9 +8014,9 @@
   까물까물:부:1
   까발리:동:5
   까밝히:동:1
  -까불거리:동:1
   까불:동:1
   까불:동:8
  +까불거리:동:1
   까스르:동:1
   까슬까슬하:형:2
   까이:동:1
  @@ -8050,6 +8050,7 @@
   깐:명:2
   깐깐하:형:4
   깐깐히:부:1
  +깔:동:64
   깔기:동:1
   깔깔:부:11
   깔깔거리:동:7
  @@ -8058,7 +8059,6 @@
   깔깔해지:동:1
   깔끔:명:1
   깔끔하:형:33
  -깔:동:64
   깔딱:부:1
   깔리:동:80
   깔보:동:12
  @@ -8076,8 +8076,8 @@
   깜밥:명:2
   깜빡:부:16
   깜빡거리:동:2
  -깜빡이:명:2
   깜빡이:동:1
  +깜빡이:명:2
   깜빡하:동:4
   깜뿍거리:동:1
   깜서방:명:6
  @@ -8101,6 +8101,9 @@
   깡충깡충:부:1
   깡통:명:39
   깡패:명:16
  +깨:동:1
  +깨:동:59
  +깨:동:94
   깨:명:3
   깨금깨금:부:1
   깨끗:명:4
  @@ -8108,9 +8111,6 @@
   깨끗하:형:155
   깨끗해지:동:17
   깨나:동:1
  -깨:동:1
  -깨:동:59
  -깨:동:94
   깨닫:동:200
   깨달아지:동:1
   깨달음:명:44
  @@ -8155,8 +8155,8 @@
   꺼풀:명:6
   꺽꺽:부:1
   꺽실히:부:1
  -꺾기:명:1
   꺾:동:67
  +꺾기:명:1
   꺾쇠:명:4
   꺾어지:동:3
   꺾은선:명:1
  @@ -8187,13 +8187,13 @@
   껴안:동:27
   껴입:동:8
   껴입히:동:1
  +꼬:동:24
   꼬깃꼬깃:부:1
   꼬꼬:명:1
   꼬꼬:부:3
   꼬꼬댁:부:1
   꼬끼오:부:3
   꼬느:동:3
  -꼬:동:24
   꼬다리:명:1
   꼬드기:동:4
   꼬들꼬들하:형:1
  @@ -8347,10 +8347,10 @@
   꽤:부:141
   꽥:부:3
   꽥꽥:부:9
  -꾀:명:17
  -꾀꼬리:명:7
   꾀:동:1
   꾀:동:3
  +꾀:명:17
  +꾀꼬리:명:7
   꾀병:명:5
   꾀부리:동:2
   꾀음꾀음:부:1
  @@ -8368,8 +8368,8 @@
   꾸리:동:35
   꾸며지:동:14
   꾸물거리:동:3
  -꾸미기:명:3
   꾸미:동:138
  +꾸미기:명:3
   꾸밈:명:4
   꾸밈새:명:1
   꾸밈없:형:1
  @@ -8436,8 +8436,8 @@
   꿰이:동:3
   꿰차:동:3
   뀌:동:4
  -끄나풀:명:1
   끄:동:86
  +끄나풀:명:1
   끄덕:부:3
   끄덕거리:동:26
   끄덕끄덕:부:1
  @@ -8463,16 +8463,16 @@
   끈적이:동:2
   끈적하:동:1
   끈질기:형:35
  -끊기:동:42
   끊:동:140
  +끊기:동:42
   끊어지:동:52
   끊이:동:21
   끊임없:형:42
   끊임없이:부:120
  +끌:동:375
   끌:명:3
   끌끌:부:1
   끌끌:부:9
  -끌:동:375
   끌려가:동:31
   끌려들:동:1
   끌려오:동:3
  @@ -8506,9 +8506,9 @@
   끝:명:582
   끝끝내:부:3
   끝나:동:517
  +끝내:동:157
   끝내:부:92
   끝내기:명:1
  -끝내:동:157
   끝닿:동:4
   끝마무리:명:2
   끝마치:동:6
  @@ -8523,18 +8523,18 @@
   끝장나:동:7
   끝장내:동:3
   끝판:명:1
  +끼:동:105
  +끼:동:44
  +끼:동:44
   끼:명:11
   끼:명:29
   끼:의:2
   끼니:명:8
   끼니때:명:1
  -끼:동:105
  -끼:동:44
  -끼:동:44
   끼리끼리:부:4
   끼무릇:명:1
  -끼어들기:명:1
   끼어들:동:46
  +끼어들기:명:1
   끼얹:동:23
   끼얹어지:동:1
   끼얹혀지:동:2
  @@ -8558,6 +8558,7 @@
   낑낑거리:동:6
   낑낑대:동:2
   나:대:10564
  +나:동:1451
   나:명:110
   나:명:9
   나가:동:977
  @@ -8579,7 +8580,6 @@
   나눠지:동:1
   나뉘:동:38
   나뉘어지:동:12
  -나:동:1451
   나다:보:610
   나다니:동:7
   나대:동:1
  @@ -8609,10 +8609,10 @@
   나른하:형:15
   나른해지:동:1
   나름:의:208
  +나리:동:1
   나리:명:10
   나리꽃:명:1
   나리난초:명:2
  -나리:동:1
   나막신:명:2
   나말:명:2
   나머지:명:179
  @@ -8911,8 +8911,9 @@
   낟:명:4
   낟가리:명:1
   낟알:명:6
  -날:명:1223
  +날:동:97
   날:명:11
  +날:명:1223
   날:의:2
   날개:명:105
   날개깃:명:3
  @@ -8922,7 +8923,6 @@
   날건달:명:1
   날것:명:2
   날고기:명:1
  -날:동:97
   날뛰:동:12
   날라리:명:4
   날라지:동:4
  @@ -8965,6 +8965,7 @@
   날품팔이:명:7
   낡:형:113
   낡아지:동:2
  +남:동:652
   남:명:19
   남:명:27
   남:명:538
  @@ -8991,7 +8992,6 @@
   남녘:명:2
   남녘땅:명:1
   남노인:명:1
  -남:동:652
   남다르:형:32
   남단:명:4
   남달리:부:11
  @@ -9130,8 +9130,8 @@
   납품:명:11
   납품되:동:1
   납향:명:1
  -낫:명:10
   낫:동:63
  +낫:명:10
   낫:형:133
   낫질:명:1
   낭:명:1
  @@ -9210,6 +9210,7 @@
   낳:동:460
   내:대:4
   내:대:7
  +내:동:1122
   내:명:1
   내:명:6
   내:의:440
  @@ -9235,7 +9236,6 @@
   내년도:명:7
   내놓:동:211
   내놓아지:동:1
  -내:동:1122
   내다:보:1045
   내다:보:12
   내다보:동:75
  @@ -9274,11 +9274,11 @@
   내력담:명:1
   내로라하:동:6
   내륙:명:28
  +내리:동:803
   내리:부:7
   내리깔:동:7
   내리꽂히:동:2
   내리누르:동:5
  -내리:동:803
   내리막:명:1
   내리막길:명:6
   내리붓:동:2
  @@ -9430,13 +9430,13 @@
   내정하:동:2
   내조:명:6
   내조하:동:1
  -내주:명:2
   내주:동:56
  +내주:명:2
   내지:부:34
   내지:접:82
   내지르:동:10
  -내쫓기:동:1
   내쫓:동:8
  +내쫓기:동:1
   내처:부:2
   내추럴풍:명:1
   내추럴하:동:1
  @@ -9590,15 +9590,15 @@
   넋:명:46
   넋두리:명:12
   넌지시:부:6
  +널:동:9
   널:명:2
   널길:명:1
   널널하:형:1
  -널:동:9
   널따랗:형:5
  -널뛰기:명:3
   널뛰:동:1
  -널리:부:153
  +널뛰기:명:3
   널리:동:30
  +널리:부:153
   널무덤:명:1
   널방:명:2
   널브러지:동:6
  @@ -9615,6 +9615,7 @@
   넓적하:형:8
   넓혀지:동:2
   넓히:동:76
  +넘:동:433
   넘겨다보:동:4
   넘겨받:동:6
   넘겨주:동:34
  @@ -9623,7 +9624,6 @@
   넘기:동:156
   넘나:동:1
   넘나들:동:18
  -넘:동:433
   넘보:동:12
   넘실거리:동:1
   넘실넘실:부:1
  @@ -9804,9 +9804,9 @@
   노릇노릇하:형:5
   노릇하:형:12
   노릇해지:동:2
  +노리:동:49
   노리개:명:4
   노리갯감:명:2
  -노리:동:49
   노린내:명:1
   노린재나무:명:2
   노림수:명:2
  @@ -9925,6 +9925,7 @@
   노후:명:7
   노후관:명:1
   노후되:동:1
  +녹:동:47
   녹:명:1
   녹:명:8
   녹각:명:3
  @@ -9932,7 +9933,6 @@
   녹과전:명:1
   녹금:명:1
   녹내장:명:4
  -녹:동:47
   녹두:명:3
   녹라:명:1
   녹록하:형:2
  @@ -10047,10 +10047,10 @@
   논픽션:명:1
   논하:동:51
   논흙:명:1
  +놀:동:480
   놀:명:1
   놀고먹:동:1
   놀놀하:형:1
  -놀:동:480
   놀뛰:동:1
   놀라:동:356
   놀라움:명:10
  @@ -10191,15 +10191,15 @@
   농한기:명:8
   농호:명:2
   농활:명:1
  -높낮이:명:5
   높:형:691
  +높낮이:명:5
   높다랗:형:6
   높새:명:2
   높새바람:명:2
   높아지:동:136
  +높이:동:199
   높이:명:98
   높이:부:83
  -높이:동:199
   높이뛰기:명:7
   높임말:명:6
   높푸르:형:1
  @@ -10216,11 +10216,11 @@
   놓치:동:100
   놔두:동:28
   놔주:동:6
  +뇌:동:2
   뇌:명:77
   뇌과:명:1
   뇌관:명:1
   뇌까리:동:7
  -뇌:동:2
   뇌대장소:명:1
   뇌리:명:12
   뇌물:명:78
  @@ -10245,6 +10245,7 @@
   뇌파:명:2
   뇌하수체:명:4
   누:대:1
  +누:동:25
   누:명:2
   누가:명:2
   누각:명:8
  @@ -10257,7 +10258,6 @@
   누나:명:200
   누누이:부:9
   누님:명:7
  -누:동:25
   누대:명:1
   누더기:명:8
   누드:명:3
  @@ -10282,8 +10282,8 @@
   누름단추:명:1
   누름적:명:1
   누릇누릇:부:1
  -누리:명:1
   누리:동:104
  +누리:명:1
   누리:형:1
   누리장나무:명:1
   누린내:명:5
  @@ -10292,8 +10292,8 @@
   누명:명:3
   누문:명:5
   누벨바그:명:2
  -누비:명:2
   누비:동:23
  +누비:명:2
   누상:명:1
   누상무덤:명:1
   누설:명:9
  @@ -10303,8 +10303,8 @@
   누수:명:16
   누에:명:7
   누에고치:명:1
  -누이:명:26
   누이:동:3
  +누이:명:26
   누이동생:명:4
   누적:명:11
   누적되:동:11
  @@ -10420,8 +10420,8 @@
   눕혀지:동:2
   눕히:동:19
   눙치:동:2
  -뉘:명:1
   뉘:동:21
  +뉘:명:1
   뉘앙스:명:8
   뉘어지:동:1
   뉘엿거리:동:1
  @@ -10468,9 +10468,9 @@
   늑막염:명:3
   늑장:명:9
   는적이:동:1
  +늘:동:160
   늘:부:308
   늘그막:명:1
  -늘:동:160
   늘리:동:138
   늘상:부:10
   늘씬하:형:1
  @@ -10534,10 +10534,10 @@
   능하:형:3
   능행:명:1
   능히:부:10
  -늦가을:명:13
  -늦깎이:명:1
   늦:동:55
   늦:형:235
  +늦가을:명:13
  +늦깎이:명:1
   늦더위:명:2
   늦발동:명:1
   늦봄:명:2
  @@ -10653,9 +10653,9 @@
   다름없:형:59
   다름없이:부:4
   다릅나무:명:2
  +다리:동:6
   다리:명:288
   다리:명:87
  -다리:동:6
   다리목:명:1
   다리몽둥이:명:1
   다리미:명:5
  @@ -10717,11 +10717,11 @@
   다스려지:동:5
   다스리:동:63
   다습하:형:4
  +다시:동:8
   다시:명:2
   다시:명:5
   다시:부:1659
   다시금:부:26
  -다시:동:8
   다시마:명:12
   다시없:형:1
   다신교:명:1
  @@ -10787,8 +10787,8 @@
   다중:명:1
   다중:명:7
   다중적:관:1
  -다지기:명:1
   다지:동:168
  +다지기:명:1
   다지르:동:1
   다짐:명:27
   다짐받:동:2
  @@ -11089,8 +11089,13 @@
   닫치:동:1
   닫혀지:동:2
   닫히:동:43
  +달:동:117
  +달:동:15
  +달:동:49
  +달:동:5
   달:명:205
   달:의:348
  +달:형:38
   달가워하:동:1
   달갑:형:11
   달갑잖:형:1
  @@ -11105,8 +11110,8 @@
   달거리:명:1
   달관스럽:형:1
   달관하:동:2
  -달구경:명:1
   달구:동:27
  +달구경:명:1
   달구어지:동:8
   달구지:명:5
   달구질:명:3
  @@ -11115,12 +11120,7 @@
   달그락거리:동:4
   달나라:명:2
   달님:명:11
  -달:동:117
  -달:동:15
  -달:동:49
  -달:동:5
   달다:보:259
  -달:형:38
   달달:부:5
   달달:부:6
   달달거리:동:1
  @@ -11131,8 +11131,8 @@
   달라지:동:250
   달랑:부:11
   달랑달랑:부:1
  -달래:명:2
   달래:동:50
  +달래:명:2
   달래무침:명:1
   달래지:동:1
   달러:명:19
  @@ -11142,11 +11142,11 @@
   달려들:동:38
   달려오:동:82
   달력:명:36
  -달리:부:310
  -달리기:명:48
   달리:동:124
   달리:동:257
   달리:동:9
  +달리:부:310
  +달리기:명:48
   달리아:명:1
   달리하:동:41
   달링:명:1
  @@ -11198,6 +11198,7 @@
   닮은꼴:명:5
   닳:동:17
   닳아지:동:3
  +담:동:352
   담:명:1
   담:명:3
   담:명:31
  @@ -11209,7 +11210,6 @@
   담기:동:140
   담나색:명:1
   담녹색:명:1
  -담:동:352
   담담하:형:10
   담담히:부:4
   담당:명:106
  @@ -11290,8 +11290,8 @@
   답습하:동:6
   답신:명:1
   답쌓이:동:1
  -답쌔기:명:1
   답쌔:동:1
  +답쌔기:명:1
   답안:명:5
   답안지:명:12
   답장:명:21
  @@ -11318,8 +11318,8 @@
   당규:명:1
   당근:명:61
   당글당글:부:1
  -당기:명:1
   당기:동:65
  +당기:명:1
   당기위:명:1
   당나귀:명:1
   당내:명:11
  @@ -11454,6 +11454,7 @@
   닻줄:명:1
   닿:동:159
   닿소리:명:2
  +대:동:298
   대:명:15
   대:명:17
   대:명:21
  @@ -11577,7 +11578,6 @@
   대놓고:부:1
   대뇌:명:6
   대님:명:2
  -대:동:298
   대다:보:279
   대다수:명:54
   대단결:명:1
  @@ -11716,8 +11716,8 @@
   대별되:동:5
   대별시키:동:1
   대별하:동:4
  -대보:명:1
   대보:동:1
  +대보:명:1
   대보름:명:3
   대보름날:명:2
   대본:명:16
  @@ -12118,9 +12118,9 @@
   대필:명:2
   대필생:명:1
   대필하:동:1
  +대하:동:4871
   대하:명:1
   대하:명:4
  -대하:동:4871
   대하드라마:명:3
   대하증:명:7
   대학:명:732
  @@ -12201,9 +12201,9 @@
   댓바람:명:1
   댓병:명:1
   댕그랗:형:1
  -댕기:명:11
   댕기:동:13
   댕기:동:8
  +댕기:명:11
   더:부:2567
   더구나:부:155
   더군다나:부:18
  @@ -12219,8 +12219,8 @@
   더덕주:명:1
   더덕차:명:1
   더뎌지:동:1
  -더듬거리:동:11
   더듬:동:42
  +더듬거리:동:11
   더듬대:동:1
   더듬더듬:부:1
   더듬이:명:2
  @@ -12276,13 +12276,13 @@
   덕행:명:2
   던져두:동:2
   던져지:동:7
  -던지기:명:13
   던지:동:347
  +던지기:명:13
  +덜:동:61
   덜:부:101
   덜거덕거리:동:1
   덜그럭거리:동:1
   덜꿩나무:명:2
  -덜:동:61
   덜덜:부:6
   덜덜거리:동:1
   덜되:형:1
  @@ -12349,10 +12349,10 @@
   덩치:명:34
   덩크:명:1
   덫:명:13
  +덮:동:99
   덮개:명:10
   덮개돌:명:1
   덮깃:명:4
  -덮:동:99
   덮밥:명:11
   덮어놓:동:10
   덮어쓰:동:6
  @@ -12361,11 +12361,11 @@
   덮이:동:35
   덮쳐누르:동:1
   덮치:동:16
  +데:동:4
   데:의:2104
   데굴데굴:부:4
   데꼬:불:2
   데나리온:의:1
  -데:동:4
   데려가:동:36
   데려오:동:16
   데리:동:196
  @@ -12388,8 +12388,8 @@
   데시벨:의:2
   데우:동:17
   데워지:동:2
  -데이:명:1
   데이:동:1
  +데이:명:1
   데이터:명:15
   데이터베이스:명:29
   데이트:명:32
  @@ -12682,8 +12682,8 @@
   도주하:동:2
   도중:명:73
   도중하차하:동:2
  -도지개:명:1
   도지:동:4
  +도지개:명:1
   도지사:명:10
   도지사실:명:1
   도착:명:1
  @@ -12912,6 +12912,7 @@
   돋움체:명:2
   돋을새김:명:5
   돋치:동:6
  +돌:동:242
   돌:명:166
   돌:명:3
   돌:의:11
  @@ -12923,7 +12924,6 @@
   돌기둥:명:7
   돌날:명:2
   돌널무덤:명:1
  -돌:동:242
   돌다리:명:4
   돌단:명:1
   돌단풍:명:2
  @@ -13065,8 +13065,8 @@
   동그마하:형:1
   동그맣:형:2
   동그스름하:형:1
  -동글납작하:형:12
   동글:형:3
  +동글납작하:형:12
   동글동글:부:1
   동글동글하:동:1
   동기:명:26
  @@ -13373,7 +13373,10 @@
   돼지비계:명:1
   돼지우리:명:4
   돼지풀:명:2
  +되:동:1
  +되:동:11506
   되:의:14
  +되:형:4
   되가꾸:동:1
   되가지:동:1
   되감기:동:1
  @@ -13385,9 +13388,6 @@
   되뇌:동:13
   되뇌이:동:4
   되는대로:부:4
  -되:동:1
  -되:동:11506
  -되:형:4
   되도록:부:27
   되돌:동:3
   되돌려받:동:1
  @@ -13423,8 +13423,8 @@
   되직하:형:2
   되짚:동:8
   되찾:동:63
  -되치기:명:2
   되치:동:1
  +되치기:명:2
   되팔:동:7
   되풀이:명:10
   되풀이되:동:30
  @@ -13442,6 +13442,7 @@
   됫박:명:1
   됫병:명:2
   두:관:2082
  +두:동:717
   두:의:1
   두각:명:5
   두개골:명:3
  @@ -13462,7 +13463,6 @@
   두뇌:명:59
   두뇌적:관:1
   두뇌적:명:1
  -두:동:717
   두다:보:5
   두다:보:593
   두더지:명:8
  @@ -13543,9 +13543,9 @@
   두통:명:27
   두툼하:형:18
   두품:명:3
  +둑:동:1
   둑:명:39
   둑길:명:4
  -둑:동:1
   둔감성:명:1
   둔감하:형:5
   둔감해지:동:1
  @@ -13597,14 +13597,15 @@
   둥그레지:동:1
   둥그스름하:형:2
   둥근달:명:1
  -둥글납작하:형:2
   둥글:형:101
  +둥글납작하:형:2
   둥둥:부:11
   둥실:부:2
   둥우리:명:1
   둥지:명:86
   둥치:명:8
   뒈지:동:9
  +뒤:동:1
   뒤:명:1608
   뒤꼍:명:4
   뒤꼭지:명:3
  @@ -13613,7 +13614,6 @@
   뒤끝:명:8
   뒤넘이:명:1
   뒤늦:형:62
  -뒤:동:1
   뒤덮:동:23
   뒤덮이:동:18
   뒤돌:동:2
  @@ -13660,8 +13660,8 @@
   뒤죽박죽:명:10
   뒤지:동:28
   뒤지:동:62
  -뒤집기:명:1
   뒤집:동:70
  +뒤집기:명:1
   뒤집어쓰:동:26
   뒤집어씌우:동:4
   뒤집어지:동:9
  @@ -13669,8 +13669,8 @@
   뒤집히:동:4
   뒤쪽:명:36
   뒤쫓:동:19
  -뒤채:명:3
   뒤채:동:1
  +뒤채:명:3
   뒤처리:명:7
   뒤처지:동:13
   뒤척:부:3
  @@ -13768,8 +13768,8 @@
   드넓:형:13
   드높:형:13
   드높아지:동:2
  -드높이:부:2
   드높이:동:5
  +드높이:부:2
   드디어:부:105
   드라마:명:186
   드라마광:명:1
  @@ -13854,10 +13854,12 @@
   득표전:명:1
   든든하:형:30
   든든해지:동:1
  -듣기:명:1
   듣:동:1593
   듣:동:5
  +듣기:명:1
   듣잡:동:1
  +들:동:1272
  +들:동:1535
   들:명:75
   들:의:14
   들개:명:2
  @@ -13877,8 +13879,6 @@
   들나물:명:2
   들녘:명:10
   들놀이:명:1
  -들:동:1272
  -들:동:1535
   들다:보:65
   들독:명:5
   들독거리:명:1
  @@ -13985,8 +13985,8 @@
   듯하:보:555
   등:명:12
   등:명:219
  -등:의:5967
   등:의:59
  +등:의:5967
   등가:명:3
   등가구:명:2
   등거리:명:1
  @@ -14084,8 +14084,8 @@
   등정하:동:2
   등줄기:명:9
   등줄쥐:명:2
  -등지:의:72
   등지:동:22
  +등지:의:72
   등짐:명:1
   등짐장수:명:1
   등짝:명:9
  @@ -14150,6 +14150,7 @@
   딩댕동:부:1
   딩동:부:4
   딩동딩동:부:1
  +따:동:143
   따갑:형:36
   따개비:명:1
   따귀:명:5
  @@ -14164,7 +14165,6 @@
   따끔따끔하:형:1
   따끔하:형:6
   따님:명:3
  -따:동:143
   따돌리:동:20
   따듯이:부:1
   따듯하:형:2
  @@ -14291,12 +14291,12 @@
   땅콩:명:28
   땅콩죽:명:1
   땋:동:6
  +때:동:22
   때:명:33
   때:명:5813
   때까치:명:4
   때깔:명:3
   때늦:형:5
  -때:동:22
   때때로:부:21
   때때옷:명:2
   때래잡:동:1
  @@ -14329,8 +14329,8 @@
   땡비:명:6
   땡전:명:1
   떠가:동:3
  -떠나가:동:30
   떠나:동:592
  +떠나가:동:30
   떠나보내:동:7
   떠나오:동:18
   떠내:동:2
  @@ -14350,9 +14350,9 @@
   떠들치:동:2
   떠듬거리:동:1
   떠듬떠듬:부:1
  +떠맡:동:22
   떠맡겨지:동:1
   떠맡기:동:6
  -떠맡:동:22
   떠먹:동:8
   떠먹이:동:1
   떠메:동:1
  @@ -14390,13 +14390,13 @@
   떡잎:명:4
   떡조개:명:1
   떡하니:부:2
  +떨:동:181
   떨:명:1
   떨거지:명:3
   떨구:동:40
   떨구어지:동:1
   떨기나무:명:1
   떨꺽:부:1
  -떨:동:181
   떨떠름:명:1
   떨떠름하:형:2
   떨떠름해하:동:1
  @@ -14418,6 +14418,7 @@
   떳떳해지:동:1
   떵떵:부:1
   떵떵거리:동:6
  +떼:동:211
   떼:명:1
   떼:명:2
   떼:명:3
  @@ -14425,7 +14426,6 @@
   떼:명:75
   떼거지:명:3
   떼끼놈:감:1
  -떼:동:211
   떼돈:명:2
   떼르르:부:1
   떼먹:동:1
  @@ -14539,13 +14539,13 @@
   뚱뚱해지:동:1
   뚱보:명:2
   뚱하:형:3
  -뛰기:명:9
  -뛰놀:동:16
   뛰:동:119
   뛰:동:139
  +뛰기:명:9
  +뛰놀:동:16
   뛰어가:동:41
  -뛰어나가:동:15
   뛰어나:형:136
  +뛰어나가:동:15
   뛰어나오:동:17
   뛰어내리:동:27
   뛰어넘:동:61
  @@ -14560,6 +14560,15 @@
   뜀박질하:동:1
   뜀질:명:1
   뜀틀:명:8
  +뜨:동:1
  +뜨:동:135
  +뜨:동:164
  +뜨:동:2
  +뜨:동:2
  +뜨:동:2
  +뜨:동:21
  +뜨:동:48
  +뜨:형:1
   뜨개질:명:2
   뜨거워지:동:14
   뜨겁:형:195
  @@ -14570,15 +14579,6 @@
   뜨끔하:형:3
   뜨끔해하:동:1
   뜨내기:명:3
  -뜨:동:1
  -뜨:동:135
  -뜨:동:164
  -뜨:동:2
  -뜨:동:2
  -뜨:동:2
  -뜨:동:21
  -뜨:동:48
  -뜨:형:1
   뜨듯해지:동:1
   뜨뜻하:형:2
   뜨락:명:16
  @@ -14593,9 +14593,9 @@
   뜬금없이:부:4
   뜬눈:명:2
   뜬소문:명:1
  +뜯:동:55
   뜯기:동:1
   뜯기:동:6
  -뜯:동:55
   뜯어고쳐지:동:1
   뜯어고치:동:3
   뜯어내:동:7
  @@ -14622,9 +14622,9 @@
   띄우:동:2
   띄우:동:40
   띄우:동:5
  +띠:동:201
   띠:명:2
   띠:명:27
  -띠:동:201
   띠띠와:감:1
   띠얏:감:3
   띵:부:2
  @@ -15105,9 +15105,9 @@
   마취:명:10
   마취과:명:2
   마취제:명:2
  +마치:동:306
   마치:명:2
   마치:부:367
  -마치:동:306
   마침:부:95
   마침내:부:151
   마침표:명:5
  @@ -15139,6 +15139,7 @@
   마흔아홉:관:1
   마흔여섯:수:1
   마흔일곱:수:1
  +막:동:312
   막:명:10
   막:명:42
   막:부:122
  @@ -15157,7 +15158,6 @@
   막노동:명:1
   막노동자:명:1
   막노동하:동:1
  -막:동:312
   막다르:형:8
   막대:명:22
   막대그래프:명:1
  @@ -15365,6 +15365,9 @@
   맏이:명:7
   맏자식:명:1
   맏형:명:2
  +말:동:34
  +말:동:369
  +말:동:5
   말:명:1
   말:명:4286
   말:명:81
  @@ -15391,9 +15394,6 @@
   말끔히:부:20
   말끝:명:22
   말년:명:7
  -말:동:34
  -말:동:369
  -말:동:5
   말다:보:1135
   말다툼:명:4
   말단:명:15
  @@ -15498,8 +15498,8 @@
   맛깔스럽:형:2
   맛깔스레:부:1
   맛나:형:5
  -맛보기:명:2
   맛보:동:62
  +맛보기:명:2
   맛봉오리:명:1
   맛살:명:1
   맛술:명:1
  @@ -15577,25 +15577,25 @@
   망처:명:1
   망쳐지:동:1
   망초:명:4
  -망치:명:11
   망치:동:37
  +망치:명:11
   망태:명:7
   망태기:명:3
   망토:명:1
   망퉁:명:1
   망하:동:65
   망향:명:3
  -맞고소:명:1
  -맞고함:명:1
  -맞교대:명:1
   맞:동:148
   맞:동:275
   맞:동:517
  +맞고소:명:1
  +맞고함:명:1
  +맞교대:명:1
   맞닥뜨리:동:9
   맞닿:동:8
  +맞대:동:15
   맞대거리:명:3
   맞대결:명:2
  -맞대:동:15
   맞대응:명:1
   맞대응하:동:2
   맞대질:명:2
  @@ -15642,14 +15642,16 @@
   맞통하:동:1
   맞히:동:4
   맞히:동:9
  +맡:동:343
  +맡:동:43
   맡:의:1
   맡겨지:동:13
   맡기:동:150
  -맡:동:343
  -맡:동:43
   맡아보:동:3
   맡아하:동:3
   매:관:10
  +매:동:49
  +매:동:8
   매:명:33
   매:의:2
   매가리:명:1
  @@ -15668,8 +15670,8 @@
   매관매직:명:1
   매국:명:1
   매국노:명:5
  -매기:명:1
   매기:동:34
  +매기:명:1
   매끄러워지:동:1
   매끄럽:형:17
   매끈하:형:5
  @@ -15685,10 +15687,8 @@
   매니저:명:7
   매니지먼트:명:2
   매니큐어:명:2
  -매:동:49
  -매:동:8
  -매달:부:30
   매달:동:24
  +매달:부:30
   매달리:동:112
   매도:명:1
   매도:명:3
  @@ -15981,13 +15981,13 @@
   머지하:동:6
   머큐로크롬:명:2
   머핀:명:1
  +먹:동:15
  +먹:동:1874
   먹:명:10
   먹거리:명:26
   먹고살:동:33
   먹구름:명:8
   먹구름장:명:1
  -먹:동:1874
  -먹:동:15
   먹다:보:50
   먹먹하:형:4
   먹먹해지:동:1
  @@ -15998,8 +15998,8 @@
   먹을거리:명:1
   먹음직스럽:형:10
   먹음직하:형:1
  -먹이:명:54
   먹이:동:106
  +먹이:명:54
   먹이저장:명:1
   먹자골목:명:2
   먹자판:명:1
  @@ -16020,11 +16020,11 @@
   먼지:명:70
   먼지떨이:명:1
   먼지투성이:명:1
  +멀:동:10
  +멀:형:301
   멀거니:부:3
   멀겋:형:4
   멀게지:동:1
  -멀:동:10
  -멀:형:301
   멀뚱거리:동:1
   멀뚱멀뚱:부:3
   멀뚱멀뚱하:형:1
  @@ -16082,12 +16082,14 @@
   멍청해지:동:2
   멍청히:부:9
   멍텅구리:명:20
  -멍하니:부:21
   멍하:형:12
  +멍하니:부:21
   멍해지:동:5
   멍히:부:2
   멎:동:33
   메:대:1
  +메:동:29
  +메:동:7
   메가:의:3
   메가바이트:의:5
   메가비피에스:의:2
  @@ -16097,8 +16099,6 @@
   메기:명:4
   메뉴:명:37
   메뉴판:명:4
  -메:동:29
  -메:동:7
   메다꽂:동:1
   메다꽂히:동:1
   메달:명:8
  @@ -16494,8 +16494,8 @@
   모기향:명:3
   모깃불:명:9
   모나:형:6
  -모내기:명:3
   모내:동:1
  +모내기:명:3
   모냥:명:2
   모녀:명:13
   모노드라마:명:3
  @@ -16607,9 +16607,9 @@
   모순점:명:2
   모순투성이:명:2
   모습:명:1132
  +모시:동:167
   모시:명:24
   모시개떡:명:1
  -모시:동:167
   모시옷:명:1
   모시조개:명:6
   모신:명:2
  @@ -16642,8 +16642,8 @@
   모의고사:명:6
   모의실험:명:3
   모의하:동:3
  -모이:명:1
   모이:동:352
  +모이:명:1
   모이통:명:3
   모일:명:3
   모임:명:248
  @@ -16830,9 +16830,9 @@
   목회학:명:1
   몫:명:114
   몬순:명:1
  +몰:동:99
   몰개성화되:동:1
   몰골:명:20
  -몰:동:99
   몰도덕성:명:1
   몰두:명:4
   몰두하:동:46
  @@ -17130,10 +17130,10 @@
   무료입장:명:1
   무료하:형:13
   무료해지:동:2
  -무르녹:동:1
   무르:동:1
   무르:동:2
   무르:형:3
  +무르녹:동:1
   무르익:동:16
   무르춤하:동:1
   무르춤해지:동:3
  @@ -17436,8 +17436,8 @@
   무천:명:1
   무청:명:1
   무취:명:5
  -무치:명:1
   무치:동:17
  +무치:명:1
   무침:명:1
   무크지:명:1
   무타:명:4
  @@ -17476,15 +17476,15 @@
   무효화하:동:1
   무휴:명:1
   무희:명:2
  +묵:동:21
  +묵:동:30
  +묵:동:6
   묵:명:3
   묵가:명:1
   묵계:명:3
   묵과하:동:9
   묵념:명:4
   묵념하:동:1
  -묵:동:21
  -묵:동:30
  -묵:동:6
   묵묵부답:명:7
   묵묵히:부:25
   묵비권:명:6
  @@ -17516,6 +17516,7 @@
   묶여지:동:2
   묶음:명:8
   묶이:동:38
  +문:동:1
   문:명:1
   문:명:1
   문:명:1
  @@ -17541,7 +17542,6 @@
   문권:명:3
   문궤:명:1
   문기둥:명:1
  -문:동:1
   문단:명:1
   문단:명:12
   문단:명:16
  @@ -17754,6 +17754,8 @@
   묻혀지:동:6
   묻히:동:37
   묻히:동:67
  +물:동:108
  +물:동:12
   물:명:1
   물:명:1129
   물:명:14
  @@ -17803,8 +17805,6 @@
   물난리:명:5
   물놀이:명:6
   물누룽지:명:3
  -물:동:108
  -물:동:12
   물동량:명:1
   물동이:명:5
   물돼지:명:3
  @@ -17831,12 +17831,12 @@
   물류:명:2
   물류비:명:1
   물류비용:명:1
  -물리:명:24
   물리:동:10
   물리:동:11
   물리:동:12
   물리:동:13
   물리:동:4
  +물리:명:24
   물리력:명:3
   물리적:관:28
   물리적:명:14
  @@ -17911,8 +17911,8 @@
   물안경:명:4
   물약:명:1
   물어내:동:2
  -물어뜯기:동:2
   물어뜯:동:7
  +물어뜯기:동:2
   물어보:동:154
   물억새:명:1
   물역:명:1
  @@ -17998,8 +17998,8 @@
   뭉뚱그리:동:4
   뭉실뭉실:부:1
   뭉쳐지:동:5
  -뭉치:명:13
   뭉치:동:43
  +뭉치:명:13
   뭉칫돈:명:1
   뭉클뭉클:부:1
   뭉클하:형:10
  @@ -18117,8 +18117,8 @@
   미련하:형:3
   미로:명:6
   미로형:명:1
  -미루나무:명:4
   미루:동:101
  +미루나무:명:4
   미루어지:동:3
   미뤄지:동:2
   미르꾸:명:2
  @@ -18291,9 +18291,9 @@
   미처:부:68
   미천하:형:1
   미추:명:2
  -미치광이:명:3
   미치:동:114
   미치:동:215
  +미치광이:명:3
   미친개:명:1
   미친년:명:3
   미친놈:명:6
  @@ -18462,19 +18462,19 @@
   민화적:관:1
   민화투:명:1
   민활하:형:1
  -믿기:동:16
   믿:동:461
  +믿기:동:16
   믿어지:동:29
   믿음:명:71
   믿음성:명:2
   믿음직스럽:형:5
   믿음직하:형:4
  +밀:동:154
   밀:명:17
   밀가루:명:81
   밀교:명:5
   밀기울:명:3
   밀꾼:명:2
  -밀:동:154
   밀담:명:1
   밀대:명:2
   밀도:명:17
  @@ -18484,10 +18484,10 @@
   밀려다니:동:2
   밀려들:동:14
   밀려오:동:24
  -밀리:의:6
  -밀리그램:의:13
   밀리:동:43
   밀리:동:51
  +밀리:의:6
  +밀리그램:의:13
   밀리리터:의:2
   밀리리터들이:의:1
   밀리몰:의:2
  @@ -18774,6 +18774,7 @@
   바텐더:명:1
   바통:명:2
   바투:부:6
  +박:동:74
   박:명:2
   박:의:34
   박가오나무:명:1
  @@ -18782,7 +18783,6 @@
   박고지조림:명:1
   박과:명:1
   박꽃:명:6
  -박:동:74
   박달나무:명:2
   박대:명:1
   박대하:동:1
  @@ -18829,8 +18829,8 @@
   박진감:명:2
   박진성:명:1
   박진적:명:1
  -박차:명:7
   박차:동:19
  +박차:명:7
   박치기:명:1
   박탈:명:1
   박탈감:명:1
  @@ -18881,8 +18881,8 @@
   반국가적:명:1
   반군:명:14
   반군부:명:3
  -반기:명:6
   반기:동:19
  +반기:명:6
   반나마:부:2
   반나절:명:5
   반납:명:2
  @@ -19173,8 +19173,8 @@
   받아들여지:동:65
   받아들이:동:279
   받아먹:동:9
  -받아쓰기:명:3
   받아쓰:동:1
  +받아쓰기:명:3
   받아지:동:1
   받아치:동:1
   받이:명:1
  @@ -19192,9 +19192,9 @@
   발:의:10
   발:의:3
   발가락:명:41
  +발가벗:동:2
   발가벗겨지:동:2
   발가벗기:동:2
  -발가벗:동:2
   발각되:동:13
   발간:명:12
   발간되:동:9
  @@ -19458,9 +19458,9 @@
   발흥:명:1
   발흥하:동:1
   발흥하:동:1
  -밝기:명:1
   밝:동:18
   밝:형:174
  +밝기:명:1
   밝아지:동:17
   밝이:명:1
   밝혀내:동:50
  @@ -19485,9 +19485,9 @@
   밤바람:명:5
   밤배:명:1
   밤사이:명:1
  +밤새:동:17
   밤새:명:21
   밤새껏:부:2
  -밤새:동:17
   밤새우:동:16
   밤색:명:20
   밤샘:명:19
  @@ -19783,11 +19783,11 @@
   방화벽:명:1
   방황:명:11
   방황하:동:20
  +밭:동:2
   밭:명:147
   밭갈이:명:1
   밭고랑:명:1
   밭농사:명:16
  -밭:동:2
   밭다리:명:1
   밭두둑:명:1
   밭두렁:명:3
  @@ -19803,12 +19803,15 @@
   밭작물:명:3
   밭치:동:5
   밭틀:명:1
  +배:동:23
  +배:동:60
   배:명:1
   배:명:245
   배:명:261
   배:명:35
   배:명:443
   배:의:24
  +배:형:1
   배가:명:1
   배가되:동:2
   배가시키:동:2
  @@ -19834,10 +19837,10 @@
   배급제:명:3
   배급품:명:1
   배급하:동:3
  +배기:동:6
   배기:명:1
   배기:명:2
   배기가스:명:15
  -배기:동:6
   배기량:명:3
   배꼽:명:22
   배꽃:명:6
  @@ -19847,9 +19850,6 @@
   배낭족:명:1
   배냉:명:1
   배뇨량:명:1
  -배:동:23
  -배:동:60
  -배:형:1
   배다르:형:2
   배달:명:23
   배달꾼:명:1
  @@ -19940,9 +19940,9 @@
   배열되:동:7
   배열하:동:8
   배영:명:6
  +배우:동:457
   배우:명:99
   배우난:명:1
  -배우:동:457
   배우자:명:20
   배우적:관:1
   배움터:명:1
  @@ -20336,8 +20336,8 @@
   번잡:명:1
   번잡스럽:형:2
   번잡하:형:8
  -번지:명:16
   번지:동:60
  +번지:명:16
   번지:보:1
   번지레하:형:1
   번지르르하:형:2
  @@ -20360,20 +20360,20 @@
   번화하:형:1
   벋:동:2
   벋:형:1
  +벌:동:1
  +벌:동:209
   벌:명:35
   벌:명:59
   벌:명:7
   벌:의:38
  -벌거벗기우:동:1
   벌거벗:동:13
  +벌거벗기우:동:1
   벌거숭이:명:4
   벌겋:형:14
   벌게지:동:3
   벌과금:명:1
   벌금:명:46
   벌금형:명:5
  -벌:동:1
  -벌:동:209
   벌독:명:1
   벌떡:부:52
   벌떡거리:동:3
  @@ -20395,8 +20395,8 @@
   벌어들이:동:4
   벌어지:동:152
   벌어지:동:39
  -벌이:명:9
   벌이:동:345
  +벌이:명:9
   벌주:동:1
   벌집:명:4
   벌창:명:1
  @@ -20542,19 +20542,19 @@
   법학:명:18
   법학사:명:1
   법회:명:1
  +벗:동:207
   벗:명:23
   벗:명:30
   벗겨지:동:15
   벗기:동:86
  -벗:동:207
   벗어나:동:357
   벗어던지:동:5
   벗어부치:동:1
   벗어제끼:동:1
   벗어지:동:4
   벗하:동:1
  -벙글거리:동:1
   벙글:동:1
  +벙글거리:동:1
   벙글벙글:부:2
   벙긋:부:1
   벙벙하:형:4
  @@ -20566,6 +20566,8 @@
   벙하:형:1
   벚꽃:명:14
   벚나무:명:3
  +베:동:53
  +베:동:7
   베:명:12
   베개:명:19
   베갯머리:명:1
  @@ -20573,8 +20575,6 @@
   베고니아과:명:1
   베끼:동:16
   베니어:명:2
  -베:동:53
  -베:동:7
   베드:명:1
   베드타운:명:2
   베란다:명:10
  @@ -20582,8 +20582,8 @@
   베스트셀러:명:14
   베어지:동:1
   베옷:명:4
  -베이글:명:5
   베이:동:8
  +베이글:명:5
   베이비시터:명:1
   베이스:명:5
   베이스점핑:명:1
  @@ -20950,6 +20950,7 @@
   병환:명:4
   병후:명:2
   볕:명:16
  +보:동:6045
   보:명:1
   보:명:1
   보:명:1
  @@ -21007,7 +21008,6 @@
   보내지:동:4
   보너스:명:39
   보닛:명:1
  -보:동:6045
   보다:보:5231
   보다:부:259
   보답:명:3
  @@ -21177,9 +21177,9 @@
   보육하:동:1
   보은:명:3
   보음제:명:1
  -보이:명:2
   보이:동:1121
   보이:동:1522
  +보이:명:2
   보이콧:명:8
   보이콧하:동:6
   보인:명:2
  @@ -21822,8 +21822,8 @@
   부들부들:부:10
   부디:부:18
   부디스트:명:5
  -부딪기:동:1
   부딪:동:3
  +부딪기:동:1
   부딪치:동:81
   부딪히:동:33
   부뚜막:명:4
  @@ -21843,9 +21843,9 @@
   부력:명:10
   부록:명:9
   부류:명:18
  -부르걷:동:1
   부르:동:858
   부르:형:29
  +부르걷:동:1
   부르르:부:7
   부르릉거리:동:1
   부르주아:명:22
  @@ -21856,10 +21856,10 @@
   부르트:동:8
   부름:명:1
   부릅뜨:동:13
  -부리:명:21
  -부리나케:부:9
   부리:동:138
   부리:동:22
  +부리:명:21
  +부리나케:부:9
   부리다:보:2
   부리방제:명:1
   부리부리하:형:1
  @@ -21937,9 +21937,9 @@
   부속지:명:1
   부속품:명:3
   부송하:동:1
  +부수:동:33
   부수:명:3
   부수:명:5
  -부수:동:33
   부수되:동:2
   부수상:명:3
   부수적:관:1
  @@ -21955,8 +21955,8 @@
   부스스하:형:4
   부스터:명:1
   부슬부슬:부:3
  -부시:명:1
   부시:동:1
  +부시:명:1
   부시:형:9
   부시솝:명:1
   부시시:부:2
  @@ -22215,9 +22215,9 @@
   부품도:명:7
   부품화하:동:1
   부피:명:15
  +부하:동:1
   부하:명:1
   부하:명:17
  -부하:동:1
   부하:형:1
   부하여지:동:1
   부합되:동:10
  @@ -22576,6 +22576,7 @@
   분화적:관:2
   분화하:동:8
   붇:동:12
  +불:동:182
   불:명:1
   불:명:10
   불:명:415
  @@ -22690,7 +22691,6 @@
   불내증:명:1
   불능:명:10
   불능하:형:1
  -불:동:182
   불덩이:명:4
   불도:명:5
   불도그:명:1
  @@ -22717,11 +22717,11 @@
   불룩하:형:9
   불륜:명:4
   불르:동:1
  -불리:명:4
   불리:동:165
   불리:동:2
   불리:동:3
   불리:동:53
  +불리:명:4
   불리어지:동:2
   불리우:동:6
   불리하:형:48
  @@ -22991,9 +22991,9 @@
   불효하:동:1
   불효하:형:1
   불후:명:3
  -붉나무:명:2
   붉:동:5
   붉:형:113
  +붉나무:명:2
   붉덩물:명:1
   붉디붉:형:3
   붉어지:동:21
  @@ -23009,13 +23009,13 @@
   붉히:동:18
   붐:명:28
   붐비:동:25
  +붓:동:120
  +붓:동:19
   붓:명:23
   붓글씨:명:3
   붓꽃:명:8
   붓끝:명:2
   붓놀림:명:1
  -붓:동:120
  -붓:동:19
   붓방아:명:1
   붓질:명:1
   붕:부:5
  @@ -23034,8 +23034,8 @@
   붙:동:294
   붙들:동:34
   붙들리:동:11
  -붙박이:명:6
   붙박이:동:2
  +붙박이:명:6
   붙어살:동:1
   붙여지:동:15
   붙이:동:310
  @@ -23089,6 +23089,8 @@
   블루길:명:1
   블루스:명:4
   블루진:명:2
  +비:동:1
  +비:동:250
   비:명:10
   비:명:12
   비:명:19
  @@ -23188,8 +23190,6 @@
   비닐우산:명:6
   비닐종이:명:1
   비닐하우스:명:17
  -비:동:1
  -비:동:250
   비단:명:24
   비단:부:29
   비단결:명:2
  @@ -23244,8 +23244,8 @@
   비루:명:1
   비르집:동:1
   비리:명:149
  -비리다:보:1
   비리:형:2
  +비리다:보:1
   비린내:명:3
   비릿하:형:6
   비만:명:18
  @@ -23290,8 +23290,8 @@
   비분강개:명:1
   비분강개하:동:1
   비분강개해하:동:1
  -비비:부:2
   비비:동:48
  +비비:부:2
   비빈:명:1
   비빔밥:명:10
   비사실적:관:1
  @@ -23483,9 +23483,9 @@
   비죽:부:1
   비죽거리:동:2
   비죽비죽:부:1
  +비죽이:동:1
   비죽이:부:1
   비죽이:부:2
  -비죽이:동:1
   비준:명:3
   비준서:명:1
   비중:명:85
  @@ -23519,9 +23519,9 @@
   비축하:동:5
   비춰지:동:5
   비취:명:1
  +비치:동:102
   비치:명:1
   비치:명:2
  -비치:동:102
   비치되:동:5
   비치이:동:1
   비치파라솔:명:1
  @@ -23532,8 +23532,8 @@
   비커:명:2
   비켜나:동:2
   비켜서:동:11
  -비키니:명:1
   비키:동:30
  +비키니:명:1
   비타민:명:29
   비타협적:관:1
   비탄:명:2
  @@ -23549,9 +23549,9 @@
   비통하:형:5
   비트:의:27
   비트플레인:의:2
  +비틀:동:18
   비틀거리:동:11
   비틀걸음:명:1
  -비틀:동:18
   비틀리:동:2
   비틀비틀:부:4
   비틀어지:동:2
  @@ -23587,8 +23587,8 @@
   비품:명:5
   비프스테이크:명:4
   비피에스:의:4
  -비하:명:7
   비하:동:454
  +비하:명:7
   비하하:동:3
   비합리성:명:2
   비합리적:관:1
  @@ -23705,13 +23705,13 @@
   빌어먹을:감:4
   빌어먹을:관:4
   빔:명:1
  +빗:동:6
   빗:명:4
   빗금:명:5
  -빗기:명:1
   빗기:동:2
  +빗기:명:1
   빗길:명:5
   빗나가:동:19
  -빗:동:6
   빗대:동:14
   빗물:명:40
   빗발치:동:9
  @@ -23752,8 +23752,8 @@
   빙하:명:1
   빙하:명:3
   빙하기:명:1
  -빚:명:52
   빚:동:79
  +빚:명:52
   빚더미:명:1
   빚어내:동:22
   빚어지:동:38
  @@ -23798,17 +23798,17 @@
   빤짝거리:동:1
   빤하:형:4
   빤히:부:21
  -빨가벗겨지:동:1
  +빨:동:31
  +빨:동:35
  +빨:형:1
   빨가벗:동:2
  +빨가벗겨지:동:1
   빨간색:명:16
   빨간집모기:명:1
   빨강:명:18
   빨갛:형:90
   빨개지:동:13
   빨갱이:명:2
  -빨:동:31
  -빨:동:35
  -빨:형:1
   빨대:명:3
   빨라지:동:25
   빨랑:부:2
  @@ -23819,9 +23819,9 @@
   빨랫비누:명:2
   빨랫줄:명:8
   빨려들:동:1
  -빨리:부:371
   빨리:동:1
   빨리:동:16
  +빨리:부:371
   빨리빨리:부:14
   빨리하:동:7
   빨아내:동:1
  @@ -23842,15 +23842,15 @@
   빵집:명:3
   빵틀:명:3
   빻:동:4
  +빼:동:2
  +빼:동:2
  +빼:동:222
   빼곡하:형:2
   빼곡히:부:2
   빼꼭하:형:1
   빼꼼히:부:1
   빼내:동:36
   빼놓:동:35
  -빼:동:2
  -빼:동:2
  -빼:동:222
   빼닮:동:2
   빼돌려지:동:1
   빼돌리:동:15
  @@ -23860,16 +23860,16 @@
   빼박:동:3
   빼빼:부:1
   빼빼하:형:1
  -빼앗기:동:49
   빼앗:동:55
  +빼앗기:동:49
   빼어나:형:14
   빽:부:2
   빽빽:부:1
   빽빽이:부:9
   빽빽하:형:11
   뺄셈:명:2
  -뺏기:동:15
   뺏:동:23
  +뺏기:동:15
   뺑:부:1
   뺑소니:명:2
   뺑코잡이:명:1
  @@ -23967,9 +23967,9 @@
   뿌듯해지:동:3
   뿌려지:동:10
   뿌루퉁:명:1
  +뿌리:동:171
   뿌리:명:195
   뿌리내리:동:9
  -뿌리:동:171
   뿌리다:보:6
   뿌리박:동:6
   뿌리박히:동:6
  @@ -23986,6 +23986,8 @@
   뿜어지:동:1
   뿡뿡:부:1
   쀼루퉁:부:1
  +삐:동:1
  +삐:동:5
   삐:부:1
   삐거덕:부:4
   삐거덕거리:동:2
  @@ -23999,8 +24001,6 @@
   삐끗:부:1
   삐끗하:동:4
   삐끼:명:5
  -삐:동:1
  -삐:동:5
   삐딱하:형:3
   삐뚤어지:동:5
   삐뜩그:동:1
  @@ -24025,6 +24025,7 @@
   삑:부:2
   삥:부:1
   사:관:42
  +사:동:957
   사:명:2
   사:명:50
   사:명:6
  @@ -24140,7 +24141,6 @@
   사냥하:동:5
   사념:명:1
   사농공상:명:2
  -사:동:957
   사다리:명:7
   사단:명:1
   사단:명:1
  @@ -24217,10 +24217,10 @@
   사르:동:5
   사르륵:부:1
   사르륵사르륵:부:1
  +사리:동:3
   사리:명:1
   사리:명:7
   사리:명:7
  -사리:동:3
   사리물:동:1
   사리사욕:명:1
   사리탑:명:5
  @@ -24511,10 +24511,10 @@
   사원:명:70
   사원지:명:1
   사월:명:221
  +사위:동:3
   사위:명:1
   사위:명:3
   사위:명:40
  -사위:동:3
   사윗감:명:4
   사유:명:10
   사유:명:28
  @@ -24716,8 +24716,8 @@
   사풍:명:1
   사피엔스:명:3
   사필귀정:명:1
  -사하:명:1
   사하:동:1
  +사하:명:1
   사학:명:1
   사학:명:23
   사학:명:33
  @@ -24785,12 +24785,12 @@
   사후:명:10
   사후:명:30
   사흘:명:65
  +삭:동:10
   삭:명:1
   삭:의:1
   삭감:명:9
   삭감되:동:4
   삭감하:동:3
  -삭:동:10
   삭막하:형:19
   삭막해지:동:3
   삭발:명:3
  @@ -25027,6 +25027,7 @@
   산후:명:8
   산후병:명:1
   산후열:명:1
  +살:동:2297
   살:명:3
   살:명:97
   살:의:366
  @@ -25043,7 +25044,6 @@
   살길:명:3
   살날:명:2
   살농:명:1
  -살:동:2297
   살대:명:6
   살덩이:명:5
   살뜰하:형:3
  @@ -25116,17 +25116,19 @@
   살해되:동:10
   살해범:명:3
   살해하:동:19
  +삶:동:69
   삶:명:1013
   삶기:동:1
  -삶:동:69
   삶아지:동:1
   삶앎:명:1
   삼:관:204
  +삼:동:1
  +삼:동:323
   삼:명:1
   삼:명:3
   삼:수:30
  -삼가:부:1
   삼가:동:37
  +삼가:부:1
   삼가하:동:2
   삼각:명:16
   삼각관계:명:3
  @@ -25153,8 +25155,6 @@
   삼남:명:1
   삼년:명:1
   삼년상:명:1
  -삼:동:1
  -삼:동:323
   삼다도:명:2
   삼단:명:1
   삼대:명:12
  @@ -25702,8 +25702,8 @@
   상품화권자:명:1
   상품화되:동:7
   상품화하:동:6
  -상하:명:15
   상하:동:81
  +상하:명:15
   상하수도:명:4
   상한:명:1
   상한:명:6
  @@ -25739,6 +25739,9 @@
   샅바:명:8
   샅샅이:부:13
   새:관:440
  +새:동:1
  +새:동:12
  +새:동:60
   새:명:2
   새:명:209
   새:명:66
  @@ -25759,9 +25762,6 @@
   새날:명:3
   새내기:명:4
   새내기티:명:1
  -새:동:1
  -새:동:12
  -새:동:60
   새달:명:1
   새대가리:명:2
   새댁:명:17
  @@ -25808,8 +25808,8 @@
   새알:명:5
   새어머니:명:1
   새엄마:명:3
  -새우:명:34
   새우:동:24
  +새우:명:34
   새우잡이:명:1
   새우젓:명:20
   새우튀김:명:3
  @@ -25931,8 +25931,8 @@
   생글생글:부:3
   생급스럽:형:1
   생긋:부:1
  -생기:명:39
   생기:동:761
  +생기:명:39
   생기다:보:4
   생기롭:형:1
   생김새:명:25
  @@ -26179,6 +26179,7 @@
   샹송:명:1
   섀도:명:2
   서:관:4
  +서:동:944
   서:명:1
   서:명:14
   서:명:6
  @@ -26220,7 +26221,6 @@
   서녘:명:2
   서늘하:형:32
   서늘해지:동:1
  -서:동:944
   서단:명:1
   서당:명:66
   서당식:명:1
  @@ -26260,10 +26260,10 @@
   서른일곱:수:1
   서른한:관:4
   서름하:형:1
  +서리:동:25
   서리:명:1
   서리:명:1
   서리:명:13
  -서리:동:25
   서리서리:부:1
   서릿발:명:5
   서막:명:5
  @@ -26828,8 +26828,10 @@
   섣달:명:3
   섣부르:형:5
   섣불리:부:13
  +설:동:1
   설:명:22
   설:명:27
  +설:형:6
   설거지:명:27
   설거지물:명:1
   설거지조:명:1
  @@ -26845,8 +26847,6 @@
   설교:명:8
   설교하:동:2
   설날:명:40
  -설:동:1
  -설:형:6
   설도하:동:1
   설득:명:18
   설득되:동:1
  @@ -26902,9 +26902,9 @@
   설정:명:32
   설정되:동:21
   설정하:동:93
  -설치:명:81
   설치:동:14
   설치:동:18
  +설치:명:81
   설치되:동:71
   설치물:명:2
   설치비:명:3
  @@ -27011,8 +27011,8 @@
   성깔:명:4
   성깔머리:명:1
   성나:동:14
  -성내:명:1
   성내:동:2
  +성내:명:1
   성냥:명:11
   성냥갑:명:3
   성냥개비:명:1
  @@ -27215,11 +27215,14 @@
   섶선:명:1
   섶코:명:1
   세:관:482
  +세:동:3
  +세:동:52
   세:명:10
   세:명:21
   세:명:8
   세:의:230
   세:의:41
  +세:형:59
   세가:명:2
   세간:명:6
   세간:명:9
  @@ -27264,9 +27267,6 @@
   세뇌받:동:3
   세뇌자:명:1
   세뇌하:동:3
  -세:동:3
  -세:동:52
  -세:형:59
   세대:명:10
   세대:명:175
   세대교체:명:4
  @@ -27990,6 +27990,7 @@
   소환하:동:4
   소회:명:2
   소회의실:명:1
  +속:동:25
   속:명:12
   속:명:14
   속:명:2168
  @@ -28006,7 +28007,6 @@
   속내:명:7
   속내평:명:1
   속눈썹:명:12
  -속:동:25
   속닥거리:동:1
   속단하:동:4
   속달:명:1
  @@ -28218,8 +28218,8 @@
   솜이불:명:1
   솜저고리:명:1
   솜털:명:9
  -솟구치:동:38
   솟:동:63
  +솟구치:동:38
   솟아나:동:15
   솟아오르:동:22
   송:명:1
  @@ -28292,13 +28292,13 @@
   쇄도하:동:2
   쇄신:명:12
   쇄신하:동:2
  +쇠:동:6
   쇠:명:29
   쇠고기:명:100
   쇠고기볶음:명:1
   쇠고랑:명:4
   쇠굽파개:명:1
   쇠귀:명:1
  -쇠:동:6
   쇠똥:명:6
   쇠뚜껑:명:1
   쇠락:명:1
  @@ -29311,6 +29311,7 @@
   술패랭이꽃:명:1
   술회:명:2
   술회하:동:3
  +숨:동:109
   숨:명:201
   숨겨지:동:19
   숨결:명:19
  @@ -29319,7 +29320,6 @@
   숨기:동:64
   숨김없이:부:4
   숨넘어가:동:2
  -숨:동:109
   숨두부:명:5
   숨바꼭질:명:5
   숨소리:명:18
  @@ -29370,20 +29370,20 @@
   숲머리:명:1
   숲새:명:2
   쉐어웨어:명:1
  -쉬:명:1
  -쉬:명:1
  -쉬:부:6
   쉬:동:1
   쉬:동:223
   쉬:동:9
   쉬:동:90
  +쉬:명:1
  +쉬:명:1
  +쉬:부:6
   쉬쉬:부:5
   쉬쉬하:동:3
   쉬어지:동:1
   쉬엄쉬엄:부:1
   쉬워지:동:6
  -쉬이:부:2
   쉬이:동:1
  +쉬이:부:2
   쉬하:동:1
   쉭쉭:부:1
   쉰:관:8
  @@ -29617,12 +29617,12 @@
   스피치:명:1
   스피커:명:8
   스피커폰:명:4
  +슬:동:1
  +슬:동:7
   슬그머니:부:33
   슬금슬금:부:9
   슬기:명:20
   슬기롭:형:17
  -슬:동:1
  -슬:동:7
   슬라이드:명:5
   슬라이딩하:동:1
   슬라이스:명:5
  @@ -29785,6 +29785,7 @@
   시:명:80
   시:의:3
   시:의:994
  +시:형:13
   시가:명:1
   시가:명:2
   시가:명:2
  @@ -29848,11 +29849,11 @@
   시급하:형:49
   시급해지:동:2
   시급히:부:17
  +시기:동:1
   시기:명:368
   시기:명:48
   시기:명:7
   시기:명:9
  -시기:동:1
   시기상조:명:11
   시기상조론:명:1
   시기심:명:3
  @@ -29883,7 +29884,6 @@
   시늉하:동:1
   시니어:명:1
   시다:명:3
  -시:형:13
   시단:명:12
   시달:명:2
   시달되:동:1
  @@ -29914,8 +29914,8 @@
   시도되:동:15
   시도하:동:88
   시동:명:9
  -시들:명:1
   시들:동:18
  +시들:명:1
   시들어지:동:2
   시들하:형:2
   시들해지:동:7
  @@ -30256,6 +30256,7 @@
   시황:명:12
   시효:명:12
   시효일:명:1
  +식:동:51
   식:명:1
   식:명:1
   식:명:27
  @@ -30265,7 +30266,6 @@
   식곤증:명:1
   식구:명:147
   식기:명:20
  -식:동:51
   식단:명:16
   식당:명:164
   식당가:명:2
  @@ -30366,6 +30366,7 @@
   식후행:명:1
   식히:동:15
   신:대:4
  +신:동:78
   신:명:1
   신:명:200
   신:명:30
  @@ -30422,11 +30423,11 @@
   신극:명:5
   신극사:명:15
   신금:명:2
  +신기:동:2
   신기:명:1
   신기:명:1
   신기:명:2
   신기:명:4
  -신기:동:2
   신기록:명:4
   신기루:명:2
   신기술:명:9
  @@ -30441,7 +30442,6 @@
   신념:명:48
   신노정:명:1
   신농정:명:1
  -신:동:78
   신다위니즘:명:1
   신당:명:8
   신당론:명:1
  @@ -30825,8 +30825,8 @@
   실루엣:명:5
   실룩거리:동:3
   실룩샐룩:부:1
  -실리:명:8
   실리:동:109
  +실리:명:8
   실리적:명:1
   실리콘:명:1
   실리콘:명:7
  @@ -31056,6 +31056,7 @@
   싫어지:동:15
   싫어하:동:81
   싫증:명:12
  +심:동:173
   심:명:1
   심:명:6
   심각:명:5
  @@ -31072,7 +31073,6 @@
   심기:명:10
   심기일전:명:5
   심난하:형:1
  -심:동:173
   심대하:동:1
   심도:명:10
   심드렁하:형:6
  @@ -31274,6 +31274,11 @@
   싱크로나이즈드:명:1
   싶다:보:1527
   싶어지:보:32
  +싸:동:104
  +싸:동:13
  +싸:형:1
  +싸:형:2
  +싸:형:97
   싸가지:명:9
   싸개통:명:1
   싸고돌:동:2
  @@ -31282,11 +31287,6 @@
   싸그리:부:2
   싸낙배기:명:1
   싸늘하:형:26
  -싸:동:104
  -싸:동:13
  -싸:형:1
  -싸:형:2
  -싸:형:97
   싸돌아다니:동:3
   싸라기:명:2
   싸락눈:명:2
  @@ -31408,8 +31408,8 @@
   써늘하:형:3
   써먹:동:8
   써지:동:7
  -썩:부:30
   썩:동:72
  +썩:부:30
   썩어지:동:1
   썩이:동:17
   썩히:동:3
  @@ -31424,8 +31424,8 @@
   썰물:명:10
   썸뻑:부:1
   쎄:명:1
  -쏘:명:1
   쏘:동:89
  +쏘:명:1
   쏘다니:동:11
   쏘삭거리:동:1
   쏘시개:명:1
  @@ -31451,9 +31451,9 @@
   쐐기:명:8
   쐬:동:22
   쐬주:명:3
  +쑤:동:24
   쑤군대:동:4
   쑤군덕거리:동:1
  -쑤:동:24
   쑤시:동:17
   쑤시:동:19
   쑥:명:1
  @@ -31478,12 +31478,12 @@
   쑥쑥:부:6
   쑬쑬히:부:1
   쑹덩쑹덩:부:2
  -쓰개치마:명:1
  -쓰기:명:2
   쓰:동:1093
   쓰:동:1119
   쓰:동:124
   쓰:형:14
  +쓰개치마:명:1
  +쓰기:명:2
   쓰다듬:동:35
   쓰디쓰:형:2
   쓰라려지:동:1
  @@ -31496,8 +31496,8 @@
   쓰레기통:명:21
   쓰레기투성이:명:1
   쓰르라미:명:1
  -쓰리꾼:명:8
   쓰리:형:12
  +쓰리꾼:명:8
   쓰리보이:명:1
   쓰벌:감:1
   쓰여지:동:24
  @@ -31508,9 +31508,9 @@
   쓱쓱:부:6
   쓴맛:명:16
   쓴웃음:명:6
  +쓸:동:43
   쓸개:명:6
   쓸까스르:동:1
  -쓸:동:43
   쓸데없:형:24
   쓸데없이:부:18
   쓸리:동:6
  @@ -31571,12 +31571,12 @@
   씹주구리하:형:2
   씹퉁:명:1
   씹히:동:11
  +씻:동:236
   씻겨지:동:1
   씻기:동:15
   씻기:동:17
   씻기우:동:1
   씻나락:명:2
  -씻:동:236
   씽씽:부:2
   아:감:638
   아:명:3
  @@ -31755,8 +31755,8 @@
   아무쪼록:부:4
   아무케나:불:1
   아무튼:부:70
  -아물거리:동:2
   아물:동:1
  +아물거리:동:2
   아물리:동:1
   아물아물하:동:1
   아미노산:명:3
  @@ -32022,6 +32022,7 @@
   악화되:동:35
   악화시키:동:5
   악화하:동:1
  +안:동:242
   안:명:1346
   안:명:2
   안:명:20
  @@ -32067,7 +32068,6 @@
   안녕:명:10
   안녕하:형:111
   안녕히:부:43
  -안:동:242
   안다리:명:1
   안단테:명:1
   안달:명:5
  @@ -32231,13 +32231,13 @@
   앉히:동:37
   않:동:119
   않다:보:8852
  +알:동:2933
   알:명:99
   알:의:15
   알갱이:명:21
   알거지:명:1
   알고리듬:명:1
   알고리즘:명:7
  -알:동:2933
   알데히드:명:1
   알딸딸해지:동:1
   알뜰:명:12
  @@ -32430,8 +32430,8 @@
   압출기:명:1
   압통:명:1
   앗:감:7
  -앗기:동:1
   앗:동:10
  +앗기:동:1
   앗쌀하:형:1
   앙:감:5
   앙:부:2
  @@ -32493,8 +32493,8 @@
   앞부분:명:11
   앞사람:명:1
   앞산:명:4
  -앞서:부:178
   앞서:동:99
  +앞서:부:178
   앞섶:명:1
   앞세우:동:58
   앞스럽:형:1
  @@ -32509,8 +32509,8 @@
   앞장서:동:84
   앞장세우:동:2
   앞줄:명:7
  -앞지르기:명:1
   앞지르:동:12
  +앞지르기:명:1
   앞집:명:9
   앞쪽:명:21
   앞차:명:1
  @@ -33236,10 +33236,10 @@
   어른스레:부:1
   어름:명:2
   어름치:명:1
  -어리광:명:4
   어리:동:1
   어리:동:47
   어리:형:430
  +어리광:명:4
   어리둥절:부:2
   어리둥절하:형:20
   어리둥절해지:동:3
  @@ -33406,8 +33406,8 @@
   어쨌건:부:1
   어쨌든:부:155
   어쨌든지:부:1
  -어쩌고저쩌고:부:9
   어쩌:동:288
  +어쩌고저쩌고:부:9
   어쩌다:부:42
   어쩌다가:부:18
   어쩌면:감:3
  @@ -33562,6 +33562,7 @@
   얻어지:동:31
   얻어터지:동:4
   얼:대:1
  +얼:동:42
   얼:명:11
   얼간:명:1
   얼간이:명:3
  @@ -33574,7 +33575,6 @@
   얼굴형:명:8
   얼근하:형:2
   얼기설기:부:3
  -얼:동:42
   얼떨결:명:7
   얼떨떨하:형:11
   얼떨떨해지:동:3
  @@ -33634,8 +33634,8 @@
   얽매이:동:19
   얽어매:동:6
   얽어매여지:동:1
  -얽히고설키:동:3
   얽히:동:56
  +얽히고설키:동:3
   엄격성:명:4
   엄격하:형:86
   엄격해지:동:1
  @@ -33688,10 +33688,10 @@
   엄포:명:13
   엄하:형:21
   엄히:부:2
  +업:동:50
   업:명:8
   업계:명:102
   업그레이드:명:1
  -업:동:50
   업둥이:명:1
   업무:명:207
   업무량:명:1
  @@ -34026,8 +34026,8 @@
   여며지:동:2
   여명:명:4
   여문모:명:1
  -여물:명:2
   여물:동:7
  +여물:명:2
   여물:형:1
   여미:동:15
   여배우:명:3
  @@ -34156,8 +34156,8 @@
   여판사:명:2
   여편네:명:21
   여하:명:9
  -여하간:부:2
   여하:형:2
  +여하간:부:2
   여하튼:부:11
   여하하:형:4
   여학교:명:2
  @@ -34721,9 +34721,9 @@
   연필:명:54
   연필깎이:명:1
   연필심:명:2
  +연하:동:2
   연하:명:1
   연하:명:4
  -연하:동:2
   연하:형:23
   연하장:명:1
   연한:명:8
  @@ -34758,6 +34758,8 @@
   연희:명:1
   연희자:명:1
   열:관:132
  +열:동:2
  +열:동:658
   열:명:122
   열:명:4
   열:수:17
  @@ -34778,8 +34780,6 @@
   열넷:수:1
   열녀:명:8
   열녀상:명:1
  -열:동:2
  -열:동:658
   열다섯:관:8
   열다섯:수:2
   열대:명:26
  @@ -35214,6 +35214,7 @@
   옆트임:명:2
   예:감:354
   예:대:16
  +예:동:1
   예:명:19
   예:명:451
   예:명:62
  @@ -35250,7 +35251,6 @@
   예니레:명:1
   예닐곱:관:4
   예닐곱:수:2
  -예:동:1
   예단:명:2
   예단하:동:1
   예대:명:2
  @@ -35450,6 +35450,7 @@
   옛터:명:2
   오:감:34
   오:관:56
  +오:동:3350
   오:명:1
   오:수:5
   오가:동:60
  @@ -35489,7 +35490,6 @@
   오늘날:명:299
   오니:명:4
   오니층:명:1
  -오:동:3350
   오다:보:1854
   오다가다:부:1
   오달지:형:1
  @@ -35538,9 +35538,9 @@
   오랏줄:명:1
   오랑캐:명:4
   오래:부:227
  +오래:형:26
   오래가:동:6
   오래간만:명:29
  -오래:형:26
   오래달리기:명:2
   오래도록:부:29
   오래되:동:68
  @@ -35565,10 +35565,10 @@
   오륙백:관:3
   오륙십:관:1
   오륜:명:7
  +오르:동:500
   오르간:명:5
   오르그:명:1
   오르내리:동:38
  -오르:동:500
   오르락내리락:부:1
   오르락내리락하:동:8
   오르막:명:1
  @@ -35582,10 +35582,10 @@
   오름:명:1
   오름세:명:16
   오름폭:명:1
  +오리:동:15
   오리:명:2
   오리:명:25
   오리나무:명:5
  -오리:동:15
   오리무중:명:2
   오리발:명:3
   오리방풀:명:1
  @@ -35742,8 +35742,8 @@
   오줌깨:명:1
   오줌장군:명:2
   오지:명:5
  -오지게:부:1
   오지:형:2
  +오지게:부:1
   오지독:명:2
   오지랖:명:6
   오지선다:명:1
  @@ -35912,8 +35912,8 @@
   올려붙이:동:3
   올려지:동:19
   올로케:명:1
  -올리고:명:1
   올리:동:436
  +올리고:명:1
   올리브:명:1
   올리브갈색:명:6
   올리브색:명:2
  @@ -35937,12 +35937,12 @@
   올해:명:312
   올해분:명:1
   옭아매:동:3
  +옮:동:6
   옮겨지:동:25
   옮기:동:287
  -옮:동:6
   옮아가:동:8
  -옳다:감:1
   옳:형:196
  +옳다:감:1
   옳소:감:3
   옳아:감:3
   옳지:감:11
  @@ -36231,7 +36231,9 @@
   왜죽왜죽:부:1
   왠지:부:70
   왱왱거리:동:2
  +외:동:29
   외:의:252
  +외:형:1
   외가:명:7
   외가댁:명:1
   외간:명:2
  @@ -36275,8 +36277,6 @@
   외근:명:1
   외길:명:2
   외나무다리:명:2
  -외:동:29
  -외:형:1
   외대으아리:명:2
   외도:명:5
   외동딸:명:11
  @@ -36398,8 +36398,8 @@
   외출복:명:6
   외출하:동:16
   외측:명:2
  -외치:명:1
   외치:동:158
  +외치:명:1
   외침:명:29
   외침:명:5
   외탁:명:1
  @@ -36697,8 +36697,8 @@
   우:명:9
   우:부:1
   우거:명:1
  -우거지:명:4
   우거지:동:20
  +우거지:명:4
   우거지상:명:1
   우거짓국:명:1
   우겨넣:동:1
  @@ -36709,8 +36709,8 @@
   우국:명:1
   우그러지:동:1
   우글거리:동:5
  -우기:명:2
   우기:동:27
  +우기:명:2
   우김질:명:2
   우단:명:2
   우당탕:부:1
  @@ -36836,8 +36836,8 @@
   우스갯소리:명:7
   우스꽝스럽:형:26
   우스터소스:명:4
  -우습게보:동:1
   우습:형:54
  +우습게보:동:1
   우승:명:70
   우승권:명:1
   우승배:명:1
  @@ -37071,6 +37071,8 @@
   운행하:동:8
   운휴:명:1
   울:대:2
  +울:동:1
  +울:동:356
   울:명:2
   울:명:9
   울고불고:부:2
  @@ -37079,8 +37081,6 @@
   울그락불그락:부:1
   울긋불긋:부:2
   울긋불긋하:형:3
  -울:동:1
  -울:동:356
   울렁거리:동:6
   울렁울렁하:동:1
   울렁이:동:1
  @@ -37141,8 +37141,8 @@
   움푹:부:10
   움푹짐푹하:형:1
   움푹하:형:2
  -웃기:동:63
   웃:동:599
  +웃기:동:63
   웃돈:명:1
   웃돌:동:21
   웃분:명:1
  @@ -38909,6 +38909,8 @@
   이:관:160
   이:관:6332
   이:대:3918
  +이:동:1
  +이:동:41
   이:명:2
   이:명:3
   이:명:6
  @@ -38957,11 +38959,11 @@
   이글이글:부:4
   이글이글하:동:2
   이급:명:3
  +이기:동:206
  +이기:동:4
   이기:명:2
   이기:명:6
   이기:명:6
  -이기:동:206
  -이기:동:4
   이기론:명:1
   이기심:명:8
   이기적:관:1
  @@ -39001,8 +39003,6 @@
   이니셔티브:명:3
   이니페린:명:1
   이닝:명:6
  -이:동:1
  -이:동:41
   이다음:명:17
   이다지:부:3
   이단:명:4
  @@ -39056,9 +39056,9 @@
   이래요:불:4
   이래저래:부:7
   이랬:불:17
  +이러:동:124
   이러구러:부:1
   이러나저러나:부:1
  -이러:동:124
   이러이러:부:1
   이러이러하:형:7
   이러저러하:형:15
  @@ -39085,9 +39085,9 @@
   이론화하:동:1
   이롭:형:19
   이롱:명:1
  +이루:동:601
   이루:명:1
   이루:부:11
  -이루:동:601
   이루수:명:2
   이루어지:동:540
   이루타:명:1
  @@ -39568,9 +39568,9 @@
   익스팬션:명:1
   익일:명:1
   익혀지:동:1
  -익히:부:10
   익히:동:116
   익히:동:30
  +익히:부:10
   인:명:1
   인:명:17
   인:명:19
  @@ -39921,8 +39921,8 @@
   인플레이션:명:1
   인플루엔자:명:3
   인피:명:1
  -인하:명:43
   인하:동:296
  +인하:명:43
   인하되:동:1
   인하하:동:9
   인형:명:41
  @@ -39938,6 +39938,8 @@
   인화하:동:1
   인환:명:1
   일:관:222
  +일:동:1
  +일:동:86
   일:명:12
   일:명:4271
   일:명:5
  @@ -39998,8 +40000,6 @@
   일년생:명:1
   일념:명:6
   일념삼천:명:2
  -일:동:1
  -일:동:86
   일단:명:11
   일단:명:4
   일단:명:4
  @@ -40309,8 +40309,8 @@
   일흔한:관:1
   일희일비:명:1
   일희일비하:동:1
  -읽기:명:1
   읽:동:910
  +읽기:명:1
   읽을거리:명:5
   읽혀지:동:6
   읽히:동:11
  @@ -40404,6 +40404,7 @@
   임하:동:41
   임학:명:4
   임해:명:14
  +입:동:550
   입:명:575
   입가:명:21
   입가심:명:5
  @@ -40433,7 +40434,6 @@
   입김:명:12
   입내:명:1
   입놀림:명:3
  -입:동:550
   입단:명:14
   입단하:동:8
   입담:명:2
  @@ -40600,8 +40600,8 @@
   입후보자:명:11
   입후보하:동:5
   입히:동:51
  -잇기:명:1
   잇:동:294
  +잇기:명:1
   잇달:동:40
   잇닿:동:2
   잇대:동:1
  @@ -40613,8 +40613,8 @@
   잇소리:명:1
   잇속:명:1
   있:동:253
  -있다:보:18553
   있:형:18202
  +있다:보:18553
   잉:감:13
   잉걸:명:1
   잉글리시:명:2
  @@ -40640,6 +40640,7 @@
   잎새:명:9
   잎채소:명:3
   자:감:181
  +자:동:395
   자:명:136
   자:명:19
   자:명:2
  @@ -40761,7 +40762,6 @@
   자네:대:142
   자녀:명:150
   자녀관:명:1
  -자:동:395
   자당:명:1
   자대:명:4
   자동:명:78
  @@ -40785,11 +40785,11 @@
   자두:명:2
   자드락길:명:2
   자디잘:형:1
  +자라:동:1
  +자라:동:283
   자라:명:2
   자라:명:3
   자라나:동:36
  -자라:동:1
  -자라:동:283
   자락:명:20
   자란:명:1
   자랑:명:45
  @@ -40927,8 +40927,8 @@
   자시:동:11
   자식:명:416
   자식새끼:명:1
  -자신:명:1799
   자신:명:102
  +자신:명:1799
   자신감:명:50
   자신만만:명:1
   자신만만하:형:12
  @@ -41188,6 +41188,7 @@
   자화상:명:10
   자회사:명:9
   작:명:30
  +작:형:738
   작가:명:379
   작가상:명:1
   작가적:관:2
  @@ -41204,7 +41205,6 @@
   작년:명:216
   작년도:명:1
   작년분:명:1
  -작:형:738
   작달막하:형:3
   작당:명:1
   작대기:명:9
  @@ -41401,10 +41401,10 @@
   잔혹하:형:9
   잖:불:3
   잘:부:1890
  +잘:형:66
   잘근잘근:부:1
  -잘나가:동:5
   잘나:형:48
  -잘:형:66
  +잘나가:동:5
   잘되:동:163
   잘디잘:형:1
   잘라먹:동:2
  @@ -41494,6 +41494,7 @@
   잠정:명:10
   잠정적:명:7
   잠행:명:3
  +잡:동:954
   잡거:명:2
   잡것:명:1
   잡곡:명:5
  @@ -41503,7 +41504,6 @@
   잡급직:명:1
   잡념:명:3
   잡놈:명:1
  -잡:동:954
   잡다:보:1
   잡다하:형:11
   잡담:명:17
  @@ -41569,10 +41569,10 @@
   잡히:동:1
   잡히:동:148
   잡히:동:6
  +잣:동:2
   잣:명:22
   잣가루:명:2
   잣나무:명:3
  -잣:동:2
   잣대:명:12
   잣죽:명:1
   장:명:10
  @@ -41874,9 +41874,14 @@
   잦아들:동:13
   잦아지:동:9
   잫:동:1
  +재:동:1
  +재:동:1
  +재:동:29
  +재:동:4
   재:명:13
   재:명:2
   재:명:6
  +재:형:6
   재가:명:2
   재가:명:2
   재가동:명:3
  @@ -41934,11 +41939,6 @@
   재녹음:명:1
   재능:명:48
   재능꾼:명:1
  -재:동:1
  -재:동:1
  -재:동:29
  -재:동:4
  -재:형:6
   재단:명:42
   재단:명:6
   재단되:동:1
  @@ -42269,8 +42269,8 @@
   쟤:불:29
   저:감:121
   저:관:444
  -저:대:2281
   저:대:22
  +저:대:2281
   저:명:3
   저가:명:5
   저가격:명:2
  @@ -42357,8 +42357,8 @@
   저명:명:1
   저명인사:명:3
   저명하:형:4
  -저물녘:명:1
   저물:동:18
  +저물녘:명:1
   저미:동:14
   저반:명:2
   저버리:동:15
  @@ -42495,6 +42495,7 @@
   저효율:명:2
   저효율성:명:1
   저희:대:185
  +적:동:173
   적:명:1
   적:명:1
   적:명:1
  @@ -42502,6 +42503,7 @@
   적:명:5
   적:명:80
   적:의:533
  +적:형:360
   적갈색:명:18
   적개심:명:4
   적격:명:6
  @@ -42525,8 +42527,6 @@
   적기:명:2
   적기:명:3
   적나라하:형:13
  -적:동:173
  -적:형:360
   적당:명:2
   적당량:명:9
   적당하:형:83
  @@ -42572,8 +42572,8 @@
   적성국:명:4
   적소:명:1
   적수:명:1
  -적시:명:1
   적시:동:46
  +적시:명:1
   적시타:명:1
   적시하:동:1
   적신:명:1
  @@ -43179,9 +43179,9 @@
   전폭적:명:6
   전표:명:1
   전표:명:20
  +전하:동:276
   전하:명:2
   전하:명:6
  -전하:동:276
   전하여지:동:1
   전학:명:14
   전학시키:동:1
  @@ -43239,6 +43239,8 @@
   전후좌우:명:2
   전후하:동:25
   전희:명:1
  +절:동:4
  +절:동:8
   절:명:34
   절:명:61
   절:명:86
  @@ -43264,8 +43266,6 @@
   절급되:동:1
   절기:명:8
   절꺽절꺽:부:1
  -절:동:4
  -절:동:8
   절단:명:1
   절단:명:10
   절단기:명:2
  @@ -43361,8 +43361,8 @@
   절터:명:4
   절통하:형:1
   절편:명:3
  -절하:명:2
   절하:동:13
  +절하:명:2
   절하되:동:1
   절하하:동:1
   절해:명:1
  @@ -43447,6 +43447,7 @@
   점화:명:1
   점화되:동:1
   점화하:동:1
  +접:동:55
   접객:명:1
   접객업:명:1
   접객업소:명:1
  @@ -43465,7 +43466,6 @@
   접근법:명:2
   접근시키:동:5
   접근하:동:90
  -접:동:55
   접대:명:4
   접대부:명:2
   접대원:명:4
  @@ -43529,12 +43529,12 @@
   접합하:동:1
   접혀지:동:4
   접히:동:3
  +젓:동:84
   젓:명:1
   젓가락:명:42
   젓가락질:명:2
   젓갈:명:5
   젓국지:명:1
  -젓:동:84
   정:명:1
   정:명:1
   정:명:4
  @@ -44049,10 +44049,10 @@
   정회원국:명:1
   정훈:명:2
   정히:부:1
  +젖:동:156
   젖:명:34
   젖가슴:명:8
   젖꼭지:명:4
  -젖:동:156
   젖뜨리:동:1
   젖먹이:명:10
   젖무덤:명:1
  @@ -44377,8 +44377,8 @@
   제품명:명:2
   제품점:명:2
   제품화하:동:1
  -제하:명:1
   제하:동:6
  +제하:명:1
   제한:명:98
   제한당하:동:1
   제한되:동:56
  @@ -44508,12 +44508,12 @@
   조르:동:34
   조르:동:4
   조르르:부:1
  +조리:동:6
   조리:명:18
   조리:명:3
   조리:명:6
   조리:부:1
   조리기:명:5
  -조리:동:6
   조리대:명:1
   조리되:동:2
   조리법:명:2
  @@ -44672,8 +44672,8 @@
   조응:명:3
   조응하:동:5
   조의금:명:1
  -조이:명:2
   조이:동:21
  +조이:명:2
   조인:명:3
   조인트:명:1
   조인하:동:1
  @@ -44866,10 +44866,10 @@
   존폐:명:2
   존호:명:1
   존화:명:1
  +졸:동:21
   졸:명:2
   졸고:명:2
   졸깃거리:동:1
  -졸:동:21
   졸도하:동:1
   졸라:부:2
   졸라매:동:5
  @@ -45142,10 +45142,10 @@
   좌표계:명:8
   좌향:명:3
   좍:부:3
  +죄:동:11
   죄:명:124
   죄:부:8
   죄과:명:4
  -죄:동:11
   죄다:부:10
   죄명:명:2
   죄목:명:6
  @@ -45166,6 +45166,7 @@
   죄형:명:5
   죔죔:명:1
   주:관:77
  +주:동:1489
   주:명:1
   주:명:100
   주:명:117
  @@ -45227,7 +45228,6 @@
   주눅:명:11
   주니어:명:13
   주님:명:1
  -주:동:1489
   주다:보:4929
   주당:명:1
   주도:명:1
  @@ -45280,8 +45280,8 @@
   주름선:명:2
   주름잡:동:8
   주름치마:명:3
  -주리:명:3
   주리:동:5
  +주리:명:3
   주마등:명:1
   주막:명:19
   주막거리:명:1
  @@ -45558,12 +45558,12 @@
   주황빛:명:1
   주황색:명:3
   주효하:동:5
  +죽:동:2
  +죽:동:843
   죽:명:1
   죽:명:44
   죽:부:20
   죽기로:부:2
  -죽:동:2
  -죽:동:843
   죽다:보:28
   죽때리:동:2
   죽마고우:명:4
  @@ -45639,6 +45639,7 @@
   준하:형:1
   준핵보유국:명:1
   준형:명:1
  +줄:동:75
   줄:명:191
   줄:명:2
   줄:의:2
  @@ -45651,7 +45652,6 @@
   줄낚시:명:1
   줄넘기:명:11
   줄넘기하:동:1
  -줄:동:75
   줄다리기:명:10
   줄다리기하:동:1
   줄달:동:1
  @@ -46003,8 +46003,8 @@
   중파:명:2
   중편:명:4
   중풍:명:6
  -중하급:명:1
   중하:형:2
  +중하급:명:1
   중하위권:명:1
   중학:명:10
   중학교:명:110
  @@ -46029,11 +46029,11 @@
   중흥시키:동:1
   중히:부:4
   줴지르:동:1
  +쥐:동:162
   쥐:명:1
   쥐:명:63
   쥐구멍:명:6
   쥐꼬리:명:7
  -쥐:동:162
   쥐똥나무:명:1
   쥐띠:명:3
   쥐라기:명:2
  @@ -46042,8 +46042,8 @@
   쥐새끼:명:1
   쥐색:명:1
   쥐약:명:3
  -쥐어뜯기:동:1
   쥐어뜯:동:10
  +쥐어뜯기:동:1
   쥐어박:동:4
   쥐어지:동:8
   쥐어지르:동:4
  @@ -46195,9 +46195,14 @@
   증후군:명:25
   증후성:명:2
   지:대:3
  +지:동:126
  +지:동:36
  +지:동:64
  +지:동:77
   지:명:1
   지:명:1
   지:명:5
  +지:보:1
   지:의:2
   지:의:319
   지가:명:15
  @@ -46267,8 +46272,8 @@
   지끈:부:1
   지끈거리:동:1
   지끈지끈:부:2
  -지나가:동:233
   지나:동:1494
  +지나가:동:233
   지나다니:동:4
   지나오:동:14
   지나치:동:46
  @@ -46295,11 +46300,6 @@
   지능적:명:1
   지능화하:동:1
   지니:동:433
  -지:동:126
  -지:동:36
  -지:동:64
  -지:동:77
  -지:보:1
   지단:명:3
   지단채:명:1
   지당하:형:3
  @@ -46374,8 +46374,8 @@
   지름길:명:25
   지리:명:1
   지리:명:28
  -지리관:명:2
   지리:형:2
  +지리관:명:2
   지리말발도리:명:1
   지리멸렬하:동:1
   지리부도:명:2
  @@ -46556,12 +46556,12 @@
   지엽적:명:4
   지오피:명:2
   지옥:명:37
  -지우:명:1
  -지우:명:1
  -지우개:명:13
   지우:동:16
   지우:동:2
   지우:동:75
  +지우:명:1
  +지우:명:1
  +지우개:명:13
   지우산:명:2
   지워지:동:20
   지원:명:14
  @@ -46634,10 +46634,10 @@
   지준율:명:2
   지중:명:3
   지중선:명:1
  +지지:동:23
   지지:명:1
   지지:명:79
   지지눌리:동:1
  -지지:동:23
   지지대:명:1
   지지도:명:1
   지지리:부:3
  @@ -47136,6 +47136,7 @@
   질:명:1
   질:명:5
   질:명:80
  +질:형:6
   질감:명:6
   질겁:명:4
   질겁하:동:1
  @@ -47152,7 +47153,6 @@
   질기디질기:형:1
   질깃질깃하:형:1
   질끈:부:4
  -질:형:6
   질량:명:35
   질러대:동:1
   질료:명:1
  @@ -47225,6 +47225,7 @@
   짐차:명:1
   짐카나:명:1
   짐칸:명:6
  +집:동:128
   집:명:1
   집:명:2457
   집:의:8
  @@ -47258,7 +47259,6 @@
   집기:명:2
   집기병:명:2
   집념:명:11
  -집:동:128
   집단:명:385
   집단무:명:1
   집단의식:명:2
  @@ -47363,6 +47363,7 @@
   집행하:동:26
   집회:명:60
   집히:동:4
  +짓:동:790
   짓:명:150
   짓거리:명:10
   짓고땡:명:4
  @@ -47370,7 +47371,6 @@
   짓누르:동:15
   짓눌려지:동:1
   짓눌리:동:4
  -짓:동:790
   짓물러지:동:1
   짓뭉개:동:6
   짓뭉겨지:동:1
  @@ -47421,16 +47421,16 @@
   짙:형:87
   짙어지:동:2
   짙푸르:형:1
  -짚:명:12
   짚:동:71
  +짚:명:12
   짚단:명:2
   짚신:명:4
   짚이:동:4
  -짜깁기:명:1
  -짜내:동:11
   짜:동:37
   짜:동:64
   짜:형:17
  +짜깁기:명:1
  +짜내:동:11
   짜디짜:형:2
   짜르르:부:1
   짜르르하:형:1
  @@ -47519,6 +47519,7 @@
   쩡쩡:부:1
   쩡쩡거리:동:1
   쩨쩨하:형:4
  +쪼:동:11
   쪼가리:명:5
   쪼가리쪼가리:명:1
   쪼각:명:1
  @@ -47539,7 +47540,6 @@
   쪼끄맣:형:4
   쪼끔:명:5
   쪼끔:부:5
  -쪼:동:11
   쪼들리:동:8
   쪼르르:부:4
   쪼르륵:부:2
  @@ -47576,17 +47576,17 @@
   쫑긋:부:2
   쫑긋거리:동:2
   쫑알거리:동:2
  +쫓:동:67
   쫓겨나:동:34
   쫓기:동:56
  -쫓:동:67
   쫓아가:동:13
   쫓아내:동:10
   쫓아다니:동:12
   쫓아오:동:9
   쫙:부:5
   쫙쫙:부:1
  -쬐끔:부:2
   쬐:동:10
  +쬐끔:부:2
   쬐이:동:1
   쭈그리:동:21
   쭈글쭈글:부:1
  @@ -47606,6 +47606,9 @@
   쭝긋쭝긋:부:1
   쯧쯧:부:17
   쯧쯧거리:동:1
  +찌:동:22
  +찌:동:23
  +찌:동:3
   찌:명:2
   찌개:명:26
   찌그러뜨리:동:3
  @@ -47613,9 +47616,6 @@
   찌그리:동:1
   찌꺼기:명:36
   찌끄럭지:명:1
  -찌:동:22
  -찌:동:23
  -찌:동:3
   찌들:동:13
   찌들리:동:1
   찌들어지:동:1
  @@ -47628,9 +47628,9 @@
   찌직찌직:부:1
   찌찌:명:2
   찌푸리:동:33
  -찍:부:1
   찍:동:10
   찍:동:194
  +찍:부:1
   찍소리:명:2
   찍찍:부:1
   찍혀지:동:1
  @@ -47667,16 +47667,20 @@
   찡등그리:동:1
   찡하:형:7
   찡해지:동:1
  +찢:동:34
   찢겨지:동:4
   찢기:동:9
  -찢:동:34
   찢어뜨리:동:1
   찢어지:동:41
   찧:동:10
  +차:동:223
  +차:동:51
  +차:동:98
   차:명:481
   차:명:66
   차:명:68
   차:의:233
  +차:형:54
   차가워지:동:3
   차감되:동:1
   차감하:동:2
  @@ -47696,10 +47700,6 @@
   차나무:명:3
   차남:명:23
   차내:명:3
  -차:동:223
  -차:동:51
  -차:동:98
  -차:형:54
   차단:명:3
   차단당하:동:5
   차단되:동:8
  @@ -47768,8 +47768,8 @@
   차용:명:2
   차원:명:300
   차율:명:2
  -차이:명:383
   차이:동:6
  +차이:명:383
   차이성:명:1
   차이점:명:40
   차익:명:2
  @@ -47797,9 +47797,9 @@
   차제:명:7
   차조:명:3
   차종:명:5
  +차지:동:1
   차지:명:1
   차지:명:15
  -차지:동:1
   차지:형:3
   차지되:동:1
   차지하:동:241
  @@ -47926,6 +47926,7 @@
   찰칵거리:동:1
   찰흙:명:9
   참:감:124
  +참:동:214
   참:명:10
   참:부:347
   참:의:37
  @@ -47956,7 +47957,6 @@
   참나리:명:2
   참나무:명:31
   참나무통:명:1
  -참:동:214
   참다못하:동:8
   참담:명:1
   참담하:형:18
  @@ -48183,6 +48183,8 @@
   찾아뵙:동:12
   찾아오:동:219
   찾아지:동:15
  +채:동:32
  +채:동:9
   채:명:1
   채:명:1
   채:명:3
  @@ -48200,8 +48202,6 @@
   채금:명:1
   채끝:명:2
   채널:명:34
  -채:동:32
  -채:동:9
   채도:명:2
   채뜨리:동:1
   채무:명:7
  @@ -48357,8 +48357,8 @@
   처절하:형:12
   처절하:형:2
   처제:명:5
  -처지:명:103
   처지:동:23
  +처지:명:103
   처참:명:1
   처참하:형:6
   처첩:명:2
  @@ -49592,6 +49592,8 @@
   최후통첩:명:2
   쵸마:명:1
   추:동:1
  +추:동:3
  +추:동:89
   추:명:2
   추:명:8
   추가:명:67
  @@ -49621,8 +49623,6 @@
   추기경:명:7
   추나:명:12
   추녀:명:9
  -추:동:3
  -추:동:89
   추달:명:1
   추대되:동:3
   추대하:동:7
  @@ -49642,10 +49642,10 @@
   추론:명:3
   추론되:동:1
   추론하:동:2
  +추리:동:6
   추리:명:7
   추리극적:명:1
   추리닝:명:1
  -추리:동:6
   추리력:명:1
   추모:명:4
   추모비:명:2
  @@ -49849,9 +49849,9 @@
   축출되:동:1
   축출하:동:3
   축포:명:3
  +축하:동:1
   축하:명:30
   축하객:명:1
  -축하:동:1
   축하단:명:1
   축하드리:동:4
   축하받:동:1
  @@ -50193,9 +50193,9 @@
   취침:명:6
   취침나팔:명:1
   취택하:동:1
  -취하:명:1
   취하:동:206
   취하:동:98
  +취하:명:1
   취하되:동:3
   취하여지:동:1
   취하하:동:3
  @@ -50242,18 +50242,6 @@
   층층이꽃:명:1
   층하하:동:1
   치:감:7
  -치:명:4
  -치:의:20
  -치:의:23
  -치고받:동:5
  -치골:명:2
  -치과:명:18
  -치과의:명:1
  -치근:명:2
  -치근거리:동:1
  -치근막:명:8
  -치기:명:5
  -치기만만하:형:1
   치:동:1
   치:동:13
   치:동:2
  @@ -50266,6 +50254,18 @@
   치:동:7
   치:동:8
   치:동:91
  +치:명:4
  +치:의:20
  +치:의:23
  +치고받:동:5
  +치골:명:2
  +치과:명:18
  +치과의:명:1
  +치근:명:2
  +치근거리:동:1
  +치근막:명:8
  +치기:명:5
  +치기만만하:형:1
   치다:보:1
   치다꺼리:명:2
   치닫:동:21
  @@ -50381,8 +50381,8 @@
   치켜세워지:동:1
   치켜지:동:1
   치클:명:4
  -치키:부:3
   치키:동:6
  +치키:부:3
   치킨:명:5
   치킨볼:명:2
   치타:명:2
  @@ -50621,13 +50621,13 @@
   칭하:동:12
   칭호:명:16
   카:감:1
  +카:동:4
   카:명:15
   카고트럭:명:1
   카나페:명:1
   카네이션:명:1
   카논:명:1
   카니발:명:1
  -카:동:4
   카드:명:100
   카드놀이:명:5
   카드제:명:1
  @@ -50713,10 +50713,10 @@
   캄캄하:형:23
   캄캄해지:동:6
   캉캉:명:1
  +캐:동:51
   캐내:동:14
   캐넌:명:2
   캐넌포:명:1
  -캐:동:51
   캐드:명:1
   캐러멜:명:6
   캐럴:명:3
  @@ -50849,10 +50849,10 @@
   케키:명:7
   켐프레이션:명:1
   켕기:동:5
  -켜:명:4
   켜:동:13
   켜:동:5
   켜:동:89
  +켜:명:4
   켜지:동:45
   켜켜로:부:1
   켜켜이:부:3
  @@ -51052,11 +51052,11 @@
   큐레이터:명:3
   큐시:명:1
   큐시트:명:2
  +크:동:78
  +크:형:2835
   크기:명:214
   크나크:형:11
   크낙새:명:1
  -크:동:78
  -크:형:2835
   크라우칭:명:4
   크래바스:명:3
   크래커:명:4
  @@ -51215,6 +51215,14 @@
   킬로헤르츠:의:2
   킬킬대:동:1
   타:관:26
  +타:동:1
  +타:동:1
  +타:동:103
  +타:동:12
  +타:동:27
  +타:동:3
  +타:동:33
  +타:동:736
   타:명:1
   타:명:1
   타각:명:2
  @@ -51241,14 +51249,6 @@
   타기시하:동:1
   타깃:명:1
   타닌산:명:1
  -타:동:1
  -타:동:1
  -타:동:103
  -타:동:12
  -타:동:27
  -타:동:3
  -타:동:33
  -타:동:736
   타닥:부:2
   타당:명:4
   타당성:명:30
  @@ -51736,11 +51736,11 @@
   턱짓:명:3
   턱턱:부:1
   턴테이블:명:4
  +털:동:79
   털:명:68
   털거미:명:1
   털구멍:명:1
   털끝:명:2
  -털:동:79
   털레털레:부:2
   털리:동:4
   털목도리:명:1
  @@ -51810,8 +51810,8 @@
   토굴:명:4
   토기:명:30
   토기관:명:1
  -토끼:명:42
   토끼:동:3
  +토끼:명:42
   토끼띠:명:2
   토끼몰이:명:1
   토너:명:1
  @@ -52387,13 +52387,13 @@
   퉁퉁하:형:1
   퉤:부:2
   퉤퉤:부:1
  +튀:동:50
   튀각:명:1
   튀겨지:동:2
   튀기:동:14
   튀기:동:25
   튀김:명:13
   튀김옷:명:5
  -튀:동:50
   튀밥:명:1
   튀어나오:동:49
   튑:명:2
  @@ -52554,8 +52554,8 @@
   튼튼하:형:71
   튼튼해지:동:7
   튼튼히:부:16
  -틀:명:163
   틀:동:103
  +틀:명:163
   틀려먹:동:1
   틀려지:동:1
   틀려지리:동:1
  @@ -52607,6 +52607,7 @@
   팀장:명:4
   팁:명:3
   팅팅:부:1
  +파:동:65
   파:명:16
   파:명:2
   파:명:59
  @@ -52644,7 +52645,6 @@
   파노라마식:명:1
   파노라마적:명:1
   파농:명:1
  -파:동:65
   파다하:형:9
   파닥거리:동:1
   파닥이:동:2
  @@ -52748,8 +52748,8 @@
   파운드:의:10
   파워:명:9
   파월:명:1
  -파이:명:2
   파이:동:4
  +파이:명:2
   파이팅:감:5
   파이프:명:27
   파이프라인:명:1
  @@ -52770,8 +52770,8 @@
   파종기:명:1
   파종하:동:1
   파죽지세:명:1
  -파지:명:1
   파지:동:1
  +파지:명:1
   파지장:명:1
   파천:명:1
   파천황:명:1
  @@ -52892,6 +52892,7 @@
   판형:명:1
   판화:명:10
   팔:관:21
  +팔:동:332
   팔:명:234
   팔:수:8
   팔각:명:3
  @@ -52903,7 +52904,6 @@
   팔고:명:1
   팔관회:명:2
   팔꿈치:명:12
  -팔:동:332
   팔다리:명:14
   팔도:명:5
   팔도강산:명:1
  @@ -52977,6 +52977,11 @@
   팥죽:명:11
   팥죽빛:명:1
   팥죽색:명:1
  +패:동:1
  +패:동:1
  +패:동:23
  +패:동:4
  +패:동:9
   패:명:1
   패:명:3
   패:명:4
  @@ -52990,11 +52995,6 @@
   패권주의적:명:1
   패기:명:11
   패널:명:2
  -패:동:1
  -패:동:1
  -패:동:23
  -패:동:4
  -패:동:9
   패도:명:1
   패두:명:12
   패드:명:2
  @@ -53107,8 +53107,8 @@
   퍼스널:명:2
   퍼스트:명:16
   퍼즐:명:3
  -퍼지:명:1
   퍼지:동:143
  +퍼지:명:1
   퍼터:명:2
   퍼팅:명:2
   퍼플:명:1
  @@ -53192,8 +53192,8 @@
   펜홀더:명:2
   펨푸:명:1
   펭귄:명:2
  -펴내:동:58
   펴:동:246
  +펴내:동:58
   펴지:동:12
   편:명:2
   편:명:3
  @@ -53957,12 +53957,12 @@
   표현화하:동:1
   푯대:명:1
   푯말:명:3
  +푸:동:29
   푸:부:2
   푸근하:형:7
   푸근해지:동:2
   푸념:명:14
   푸념하:동:5
  -푸:동:29
   푸닥거리:명:1
   푸닥지:형:1
   푸대:명:2
  @@ -54001,6 +54001,7 @@
   푼돈:명:4
   푼수:명:3
   푼푼이:부:1
  +풀:동:383
   풀:명:15
   풀:명:29
   풀:명:3
  @@ -54008,7 +54009,6 @@
   풀:명:85
   풀기:명:8
   풀꽃:명:25
  -풀:동:383
   풀다운:명:1
   풀듀플렉스:명:1
   풀려나:동:22
  @@ -54043,6 +54043,8 @@
   풀포기:명:2
   풀풀:부:8
   풀피리:명:2
  +품:동:1
  +품:동:63
   품:명:2
   품:명:6
   품:명:67
  @@ -54052,8 +54054,6 @@
   품계석:명:4
   품관:명:3
   품귀:명:2
  -품:동:1
  -품:동:63
   품목:명:80
   품바:명:8
   품사:명:1
  @@ -54282,6 +54282,8 @@
   플루토늄양:명:1
   플루트:명:4
   플륨:명:1
  +피:동:10
  +피:동:127
   피:명:123
   피:부:5
   피검사:명:1
  @@ -54313,8 +54315,6 @@
   피난하:동:2
   피날레:명:1
   피눈물:명:1
  -피:동:10
  -피:동:127
   피더블유:명:2
   피돌기:명:1
   피동적:관:1
  @@ -54450,8 +54450,8 @@
   피플:명:1
   피피비:의:1
   피피엠:의:10
  -피하:명:5
   피하:동:270
  +피하:명:5
   피항:명:1
   피해:명:215
   피해망상증:명:1
  @@ -54561,7 +54561,9 @@
   핑핑:부:2
   핑핑히:부:1
   하:감:12
  +하:동:22064
   하:명:18
  +하:보:10758
   하:부:3
   하:부:5
   하강:명:8
  @@ -54615,8 +54617,6 @@
   하늘하늘:부:1
   하늘하늘하:형:1
   하늬바람:명:1
  -하:동:22064
  -하:보:10758
   하다못해:부:14
   하단:명:1
   하단:명:1
  @@ -55474,8 +55474,8 @@
   해금되:동:1
   해난:명:1
   해남말발도리:명:1
  -해내:명:2
   해내:동:60
  +해내:명:2
   해녀:명:2
   해님:명:13
   해답:명:34
  @@ -55638,9 +55638,9 @@
   해제하:동:10
   해조류:명:3
   해종일:명:1
  -해지:명:1
   해지:동:3
   해지:동:4
  +해지:명:1
   해직:명:19
   해직당하:동:1
   해직되:동:5
  @@ -55903,6 +55903,7 @@
   향후:명:27
   향훈:명:1
   허:감:25
  +허:동:40
   허:명:6
   허가:명:59
   허가되:동:2
  @@ -55928,7 +55929,6 @@
   허기지:동:8
   허깨비:명:7
   허니:명:1
  -허:동:40
   허다하:형:9
   허덕대:동:1
   허덕이:동:14
  @@ -55963,9 +55963,9 @@
   허무주의:명:6
   허무주의자:명:4
   허무하:형:24
  +허물:동:16
   허물:명:11
   허물:명:7
  -허물:동:16
   허물벗기:명:1
   허물어뜨리:동:8
   허물어지:동:23
  @@ -56085,10 +56085,10 @@
   헌헌장부:명:1
   헌혈:명:6
   헌혈자:명:1
  -헐값:명:3
  -헐겁:형:5
   헐:동:20
   헐:동:4
  +헐값:명:3
  +헐겁:형:5
   헐떡거리:동:6
   헐떡이:동:2
   헐뜯:동:4
  @@ -56096,8 +56096,8 @@
   헐레벌떡:부:6
   헐려지:동:1
   헐리:동:9
  -헐벗기:동:1
   헐벗:동:2
  +헐벗기:동:1
   헐하:형:5
   헐헐:부:1
   험:감:1
  @@ -56147,8 +56147,8 @@
   헛심부름:명:2
   헛웃음:명:1
   헛일:명:5
  -헛짓:명:1
   헛짓:동:1
  +헛짓:명:1
   헛짚:동:1
   헛코:명:1
   헛헛:부:1
  @@ -56893,8 +56893,8 @@
   홀쭉이:명:1
   홀쭉하:형:4
   홀쭉해지:동:1
  -홀치기염:명:1
   홀치:동:1
  +홀치기염:명:1
   홀홀:부:1
   홈:명:11
   홈:명:6
  @@ -57925,13 +57925,13 @@
   훼손하:동:19
   휑뎅그렁하:형:2
   휑하:형:4
  +휘:동:18
   휘:부:2
   휘갈겨지:동:1
   휘갈기:동:1
  -휘감기:동:4
   휘감:동:10
  +휘감기:동:4
   휘날리:동:10
  -휘:동:18
   휘다지:동:1
   휘달아나:동:1
   휘돌:동:8
  @@ -58120,9 +58120,9 @@
   흑체:명:1
   흑흑:부:1
   흔뎅거리:동:1
  +흔들:동:187
   흔들거리:동:6
   흔들기:명:2
  -흔들:동:187
   흔들리:동:91
   흔들의자:명:3
   흔들이:명:2
  @@ -58263,12 +58263,13 @@
   흥행성:명:1
   흥행작:명:1
   흥흥:부:4
  -흩날리:동:6
   흩:동:2
  +흩날리:동:6
   흩뜨리:동:7
   흩뿌리:동:3
   흩어지:동:90
   흩트리:동:1
  +희:형:168
   희곡:명:89
   희곡계:명:3
   희곡론:명:1
  @@ -58289,7 +58290,6 @@
   희끗하:형:1
   희끗희끗:부:6
   희끗희끗하:형:9
  -희:형:168
   희대:명:2
   희디희:형:2
   희떱:형:1
  @@ -58372,8 +58372,8 @@
   흰줄무늬비비추:명:1
   흰쥐:명:5
   흰풀:명:1
  -히:부:2
   히:동:14
  +히:부:2
   히든:명:3
   히든카드:명:3
   히들거리:동:1
  
  
  


wkpark      2008/05/07 14:02:33

  Modified:    lib      dict.text.php
  Log:
  add second fuzzy parameter
  
  Revision  Changes    Path
  1.4       +11 -11    moniwiki/lib/dict.text.php
  
  Index: dict.text.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/dict.text.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- dict.text.php	7 May 2008 01:44:31 -0000	1.3
  +++ dict.text.php	7 May 2008 05:02:33 -0000	1.4
  @@ -8,16 +8,17 @@
   // Name: TextDictModule
   // Description: A Simple Text-based Dictionary Module
   // URL: MoniWiki:TextDictModule etc.
  -// Version: $Revision: 1.3 $
  +// Version: $Revision: 1.4 $
   // License: GPL
   //
  -// $Id: dict.text.php,v 1.3 2008/05/07 01:44:31 wkpark Exp $
  +// $Id: dict.text.php,v 1.4 2008/05/07 05:02:33 wkpark Exp $
   //
   
   function _fuzzy_bsearch_file($fp, $key, $seek, $fuzzyoffset=0, $klen=0,$fz=0,$encoding='UTF-8') {
       # adjustable parameters
       $_fuzzy_factor = 0.65; # mid parameter: in case of binary-search: 0.5
  -    $_chunk_size = 32; # average strlen parameter of lines.
  +    $_fuzzy_factor2 = 0.55; # similiar pos parameter
  +    $_chunk_size = 128; # average strlen parameter of lines.
       $_howmany = 23; # this is not exact the bsearch then limit the search counter.
       $_debug = 1; # show debug info or not
   
  @@ -33,6 +34,7 @@
   
       $upper = $fz;
       $lower = 0;
  +    $fuzzy = $_fuzzy_factor;
   
       $f_offset = $min_offset = abs($offset);
   
  @@ -66,38 +68,36 @@
           $len = $llen >= $klen ? $klen:$llen;
           $pmykey=mb_substr($mykey,0,$len,$encoding);
   
  -        $test= strcasecmp($pkey,$pmykey);
  +        $test= strcmp($pkey,$pmykey);
           if ($test == 0) {
               $test = 1;
               // very similar pattern can use smaller factor
  -            $_fuzzy_factor=0.5*0.8/$klen;
  +            $fuzzy=$_fuzzy_factor*$_fuzzy_factor2/$klen;
               if ($klen <= $llen) $test = -1;
           }
   
           if ($test > 0) {
  -            //print "&gt;".$l;
               $sign = 1;
               $lower = $myseek0;
           } else {
  -            //print "&lt;".$l;
               $sign = -1;
               $upper = $myseek;
           }
   
  -        $n_offset = intval(($upper - $lower) * $_fuzzy_factor);
  -        $f_offset = min($n_offset,$f_offset);
  +        $f_offset = intval(($upper - $lower) * $fuzzy);
  +        #$f_offset = min($n_offset,$f_offset);
   
           if ($_debug > 50) print ' * '.($sign*$f_offset)."<br />\n";
  -        if ($f_offset > $min_offset * 1.2) break;
           $min_offset = min($min_offset, $f_offset);
           if ($f_offset < $_chunk_size) $f_offset = $_chunk_size;
   
           $offset = $sign * $f_offset;
  +        if (($upper - $lower) < $f_offset) break;
       }
       if ($_debug > 50) {
           print "key=".$key.'/seek='.$lower.'/offset='.($upper - $lower)."<br />\n";
           fseek($fp,$lower);
  -        print "<pre>==== chunk ====\n".fread($fp,$upper - $lower)."</pre>\n";
  +        print "<pre>\n==== chunk ====\n".fread($fp,$upper - $lower)."</pre>\n";
       }
       return array($l,$lower,$upper,$scount);
   }
  
  
  


wkpark      2008/05/07 16:58:01

  Modified:    plugin   UploadFile.php
  Log:
  oops. fix last changes
  
  Revision  Changes    Path
  1.41      +9 -5      moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- UploadFile.php	6 May 2008 07:47:31 -0000	1.40
  +++ UploadFile.php	7 May 2008 07:58:00 -0000	1.41
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.40 2008/05/06 07:47:31 wkpark Exp $
  +// $Id: UploadFile.php,v 1.41 2008/05/07 07:58:00 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -122,13 +122,17 @@
     $upfilename=str_replace(" ","_",$files['upfile']['name'][$j]);
     $upfilename=str_replace(":","_",$upfilename);
   
  -  preg_match("/^(.*)\.?([a-z0-9]{1,5})?$/i",$upfilename,$fname);
  +  preg_match("/^(.*)\.([a-z0-9]{1,5})$/i",$upfilename,$fname);
   
     if (!$upfilename) continue;
     else if ($upfilename) $uploaded++;
   
     $no_ext=0;
  -  if (!$fname[2]) $no_ext=1;
  +  if (empty($fname[2])) {
  +    $fname[1]=$upfilename;
  +    $fname[2]='';
  +    $no_ext=1;
  +  }
   
     if (!$allowed) {
       if ($DBInfo->use_filetype) {
  @@ -149,7 +153,7 @@
       }
     }
   
  -  $upfilename=implode('.',array($fname[1],$fname[2]));
  +  $upfilename=preg_replace('/\.$/','',implode('.',array($fname[1],$fname[2])));
   
     if (!$allowed) {
       if (!$no_ext and !preg_match("/(".$pds_exts.")$/i",$fname[2])) {
  @@ -188,7 +192,7 @@
       $temp=explode("/",_stripslashes($options['rename'][$j]));
       $upfilename= $temp[count($temp)-1];
   
  -    preg_match("/^(.*)\.?([a-z0-9]{1,5})?$/i",$upfilename,$tname);
  +    preg_match("/^(.*)\.([a-z0-9]{1,5})$/i",$upfilename,$tname);
       $exts=explode('.',$tname[1]);
       $ok=0;
       for ($i=sizeof($exts);$i>0;$i--) {
  
  
  


wkpark      2008/05/07 17:10:34

  Modified:    lib      dict.text.php
  Log:
  use strlen(utf8_decode()) instead of mb_strlen() it's more faster
  
  Revision  Changes    Path
  1.5       +11 -6     moniwiki/lib/dict.text.php
  
  Index: dict.text.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/dict.text.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- dict.text.php	7 May 2008 05:02:33 -0000	1.4
  +++ dict.text.php	7 May 2008 08:10:33 -0000	1.5
  @@ -8,10 +8,10 @@
   // Name: TextDictModule
   // Description: A Simple Text-based Dictionary Module
   // URL: MoniWiki:TextDictModule etc.
  -// Version: $Revision: 1.4 $
  +// Version: $Revision: 1.5 $
   // License: GPL
   //
  -// $Id: dict.text.php,v 1.4 2008/05/07 05:02:33 wkpark Exp $
  +// $Id: dict.text.php,v 1.5 2008/05/07 08:10:33 wkpark Exp $
   //
   
   function _fuzzy_bsearch_file($fp, $key, $seek, $fuzzyoffset=0, $klen=0,$fz=0,$encoding='UTF-8') {
  @@ -24,7 +24,9 @@
   
       if (empty($key)) return null;
       if ($fz == 0) return null;
  -    if ($klen == 0) $klen = mb_strlen($key,$encoding);
  +    if ($klen == 0)
  +        #$klen = mb_strlen($key,$encoding);
  +        $klen= strlen(utf8_decode($key));
   
       $ki=0;
       $pkey=mb_substr($key,0,$klen,$encoding);
  @@ -52,7 +54,8 @@
           $l=fgets($fp,1024);
           if ($l=='') break;
           $mykey= strtok($l,' \t\n,:');
  -        $llen= mb_strlen($mykey,$encoding);
  +        $llen= strlen(utf8_decode($mykey));
  +        #$llen= mb_strlen($mykey,$encoding);
   
           $myseek=ftell($fp);
   
  @@ -109,7 +112,8 @@
       $count=0;
   
       if ($klen == 0)
  -        $klen = mb_strlen($key,$encoding);
  +        #$klen = mb_strlen($key,$encoding);
  +        $klen = strlen(utf8_decode($key));
   
       if ($klen == 1) $match_prefix=false;
   
  @@ -136,7 +140,8 @@
   
           if ($l{0} == '#') continue;
           $mykey= strtok($l,' \t\n,:');
  -        $llen= mb_strlen($mykey,$encoding);
  +        #$llen = mb_strlen($mykey,$encoding);
  +        $llen = strlen(utf8_decode($mykey));
           if ($llen < $ki) {
               if ($_debug) print '*pkey='.$pkey."<br />\n";
               break;
  
  
  


wkpark      2008/05/07 20:27:31

  Modified:    plugin   Diff.php
  Log:
  fixed bug with non wiki pages
  
  Revision  Changes    Path
  1.18      +2 -1      moniwiki/plugin/Diff.php
  
  Index: Diff.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Diff.php,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- Diff.php	5 May 2008 07:50:02 -0000	1.17
  +++ Diff.php	7 May 2008 11:27:31 -0000	1.18
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a diff plugin for the MoniWiki
   //
  -// $Id: Diff.php,v 1.17 2008/05/05 07:50:02 wkpark Exp $
  +// $Id: Diff.php,v 1.18 2008/05/07 11:27:31 wkpark Exp $
   
   function simple_diff($diff) {
     $diff=str_replace("<","&lt;",$diff);
  @@ -146,6 +146,7 @@
     $option='';
   
     $pi=$formatter->get_instructions($dum);
  +  $formatter->pi=$pi;
   
     $processor_type=$pi['#format'];
     while ($DBInfo->default_markup != 'wiki') { // XXX
  
  
  


wkpark      2008/05/21 00:58:41

  Modified:    plugin/processor pic.php
  Added:       plugin/processor sfd.php
  Log:
  add a new sfd(fontforge file format) processor
  fix the pic processor for Win32
  
  Revision  Changes    Path
  1.7       +7 -1      moniwiki/plugin/processor/pic.php
  
  Index: pic.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/pic.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- pic.php	17 Apr 2008 09:47:16 -0000	1.6
  +++ pic.php	20 May 2008 15:58:41 -0000	1.7
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a PIC plugin for the MoniWiki
   //
  -// $Id: pic.php,v 1.6 2008/04/17 09:47:16 wkpark Exp $
  +// $Id: pic.php,v 1.7 2008/05/20 15:58:41 wkpark Exp $
   // Usage: {{{#!pic
   // some codes
   // }}}
  @@ -15,6 +15,12 @@
     $CONVERT="convert -transparent white -density 120x120 -crop 0x0 -trim ";
   
     $vartmp_dir=&$DBInfo->vartmp_dir;
  +  if(getenv("OS")=="Windows_NT") {
  +    $NULL='NUL';
  +    $vartmp_dir=getenv('TEMP');
  +    #$convert="wconvert";
  +  }
  +
     $cache_dir=$DBInfo->upload_dir."/PIC";
     $cache_url=$DBInfo->upload_url ? $DBInfo->upload_url.'/PIC':
       $DBInfo->url_prefix.'/'.$cache_dir;
  
  
  
  1.1                  moniwiki/plugin/processor/sfd.php
  
  Index: sfd.php
  ===================================================================
  <?php
  // Copyright 2008 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a SFD Fontforge glyph rendering plugin for the MoniWiki
  //
  // $Id: sfd.php,v 1.1 2008/05/20 15:58:41 wkpark Exp $
  // Usage: {{{#!sfd
  // sfd char file
  // }}}
  
  function processor_sfd($formatter,$value="") {
      global $DBInfo;
  
      $width=1000;
      $height=1000;
  
      $EM=1000;
      $op=array('l'=>1,'c'=>0,'m'=>1);
  
      $CONVERT="convert -transparent white -density 24x24 ";
  
      $vartmp_dir=&$DBInfo->vartmp_dir;
  
      if(getenv("OS")=="Windows_NT") {
          $NULL='NUL';
          $vartmp_dir=getenv('TEMP');
          #$convert="wconvert";
      }
      $cache_dir=$DBInfo->upload_dir."/PIC";
      $cache_url=$DBInfo->upload_url ? $DBInfo->upload_url.'/PIC':
      $DBInfo->url_prefix.'/'.$cache_dir;
  
      if ($value[0]=='#' and $value[1]=='!')
          list($line,$value)=explode("\n",$value,2);
  
      $sfd_source=$value;
  
      # print "<pre>$sfd_source</pre>";
  
      $uniq=md5($sfd_source);
  
      $lines=explode("\n",$sfd_source);
  
      $f=0;
      $stat=0;
      $eps='';
      foreach ($lines as $l) {
          if ($stat == 0 and preg_match('/^StartChar:\s+(.*)$/',$l)) {
              $stat=1;
          } else if ($stat == 1 and preg_match('/^Fore/',$l)) {
              $stat=2;
          } else if ($stat == 1 and preg_match('/^Width:\s+(\d+)$/',$l,$m)) {
              $width=$height=$m[1];
              $emscale=$EM/$width;
              $width=intval($emscale*$width);
              $height=intval($emscale*$height); # XXX
  
              $ascent=intval($height*0.8);
              $decent=intval($height*0.2);
  
              $date=date("Y-m-d H:i:s",time());
              $eps.= <<<HEAD
  %!PS-Adobe-3.0 EPSF-3.0
  %%Creator: Adobe Illustrator by MoniWiki
  %%Title:
  %%CreationDate: $date
  %%BoundingBox: 0 0 $width $height
  %%DocumentData: Clean7Bit
  %%EndComments
  %%BeginProlog
  /bd { bind def } bind def
  /incompound false def
  /m { moveto } bd
  /l { lineto } bd
  /c { curveto } bd
  /F { incompound not {fill} if } bd
  /f { closepath F } bd
  /S { stroke } bd
  /*u { /incompound true def } bd
  /*U { /incompound false def f} bd
  /k { setcmykcolor } bd
  /K { k } bd
  %%EndProlog
  %%BeginSetup
  %%EndSetup
  0.000000 0.000000 0.000000 1.000000 k
  *u\n
  HEAD;
          } else if ($stat == 2) {
              if (preg_match('/^\s*([\d+\s\.\-\+]+)\s+([clm])\s+\d+$/',$l,$m)) {
                  $c=$m[1];
                  $op=$m[2];
                  $p=preg_split('/\s+/',$m[1]);
                  if ($op == 'm' and $oop == 'l') $eps.= "f\n";
                  $n=1;
                  foreach ($p as $val) {
                      if ($n % 2 == 0) { $eps.= intval($emscale*($val+$decent))." ";}
                      else { $eps.= intval($emscale*$val)." ";}
                      $n++;
                  }
                  $eps.= "$op\n";
                  $oop=$op;
                  #print "$op ",$op{$op},"\n";
              } else if (preg_match('/^EndChar$/',$l)) {
                  $stat=0;
                  $eps.= "f\n*U\n";
                  $eps.=<<<INFO
  0 0 1 setrgbcolor
  5 setlinewidth
  0 $decent m
  $width $decent l
  stroke
  0 0 0 setrgbcolor
  0 0 m
  $width 0 l
  $width $height l
  0 $height l
  0 0 l
  stroke
  *U
  INFO;
                  $eps.="%%Trailer\n%%EOF\n";
                  break;
              }
          }
      }
  
      if ($DBInfo->cache_public_dir) {
          $fc=new Cache_text('sfd',2,'png',$DBInfo->cache_public_dir);
          $pngname=$fc->_getKey($uniq,0);
          $outpath_png= $DBInfo->cache_public_dir.'/'.$pngname;
  
          $png_url=
              $DBInfo->cache_public_url ? $DBInfo->cache_public_url.'/'.$pngname:
              $DBInfo->url_prefix.'/'.$outpath_png;
      } else {
          $outpath_png=$cache_dir.'/'.$uniq.'.png';
          $png_url=$cache_url.'/'.$uniq.'.png';
  
      }
      $outpath_eps="$vartmp_dir/$uniq.eps";
  
      if (!file_exists(dirname($outpath_png))) {
          umask(000);
          _mkdir_p(dirname($outpath_png),0777);
          umask(022);
      }
  
      if ($formatter->refresh || !file_exists($outpath_png)) {
          # write to eps file
          $ifp=fopen("$outpath_eps","w");
          fwrite($ifp,$eps);
          fclose($ifp);
  
          # convert
          $fp=popen("$CONVERT $outpath_eps $outpath_png".$formatter->NULL,'r');
          pclose($fp);
  
          # delete temporary files
          #unlink($outpath_eps);
      }
      return "<img class='tex' src='$png_url' alt='sfd' />";
  }
  
  // vim:et:sts=4:sw=4:
  ?>
  
  
  


wkpark      2008/05/29 22:45:56

  Modified:    plugin   Attachment.php
  Log:
  fixed attachment macro for subpages
  
  Revision  Changes    Path
  1.38      +4 -3      moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- Attachment.php	17 Apr 2008 02:43:59 -0000	1.37
  +++ Attachment.php	29 May 2008 13:45:56 -0000	1.38
  @@ -7,13 +7,13 @@
   // Name: Attachment
   // Description: Attachment Plugin
   // URL: MoniWiki:AttachmentPlugin
  -// Version: $Revision: 1.37 $
  +// Version: $Revision: 1.38 $
   // Depend: 1.1.3
   // License: GPL
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.37 2008/04/17 02:43:59 wkpark Exp $
  +// $Id: Attachment.php,v 1.38 2008/05/29 13:45:56 wkpark Exp $
   
   function macro_Attachment($formatter,$value,$options='') {
     global $DBInfo;
  @@ -139,13 +139,14 @@
   
     $attr.=$lightbox_attr;
   
  -  if (($p=strpos($value,':')) !== false or ($p=strpos($value,'/')) !== false) {
  +  if (($p=strpos($value,':')) !== false or ($p=strrpos($value,'/')) !== false) {
       $subpage=substr($value,0,$p);
       $file=substr($value,$p+1);
       $value=$subpage.'/'.$file; # normalize page arg
       if ($subpage and is_dir($DBInfo->upload_dir.'/'.$DBInfo->pageToKeyname($subpage))) {
         $pagename=$subpage;
         $key=$DBInfo->pageToKeyname($subpage);
  +      $value=$file;
       } else {
         $pagename='';
         $key='';
  
  
  


wkpark      2008/06/09 22:38:20

  Modified:    applets/ClipPlugin Makefile
  Log:
  fixed url
  
  Revision  Changes    Path
  1.2       +1 -1      moniwiki/applets/ClipPlugin/Makefile
  
  Index: Makefile
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/applets/ClipPlugin/Makefile,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Makefile	8 Apr 2005 15:38:29 -0000	1.1
  +++ Makefile	9 Jun 2008 13:38:20 -0000	1.2
  @@ -1,2 +1,2 @@
   all:
  -	wget -N http://chemie.skku.ac.kr/wiki/applets/ClipPlugin/clip.jar
  +	wget -N http://moniwiki.kldp.org/applets/ClipPlugin/clip.jar
  
  
  


wkpark      2008/11/25 12:31:08

  Modified:    css      kbd.js
  Log:
  do not assume the "go" form is always defined.
  IE/mozilla fix for F1/F3 hot keys
  
  Revision  Changes    Path
  1.13      +37 -22    moniwiki/css/kbd.js
  
  Index: kbd.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/kbd.js,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- kbd.js	14 Nov 2007 17:18:52 -0000	1.12
  +++ kbd.js	25 Nov 2008 03:31:08 -0000	1.13
  @@ -2,11 +2,11 @@
      MoinMoin Hotkeys
   
      Copyright(c) 2002 Byung-Chan Kim
  -   Copyright(c) 2003-2007 Won-kyu Park <wkpark at kldp.org>
  +   Copyright(c) 2003-2008 Won-kyu Park <wkpark at kldp.org>
   
      distributable under GPL
   
  -   $Id: kbd.js,v 1.12 2007/11/14 17:18:52 wkpark Exp $
  +   $Id: kbd.js,v 1.13 2008/11/25 03:31:08 wkpark Exp $
   
      CHANGES
   
  @@ -17,6 +17,7 @@
      * 2004/08/24 : no PATH_INFO support merged
      * 2004/10/03 : more intelligent behavior with search keys '?' '/'
      * 2007/11/09 : simplified and cleanup.
  +   * 2008/11/25 : do not assume the "go" form is always defined.
   */
   
   /*
  @@ -80,6 +81,11 @@
   	if (e && e.target) var f = e.target, nn=f.nodeName; // Mozilla
   	else var e=window.event, f = e.srcElement, nn = f.tagName; // IE
   
  +	if (window.event && (e.keyCode==112 || e.keyCode==114)) {
  +		keypresshandler(e); // IE hack
  +		noBubble(e);
  +		return false;
  +	}
   	if (window.event && e.keyCode==27 && (nn == 'TEXTAREA' || nn == 'INPUT')) return false;
   	// IE ESC blocking for all vim lovers
   	return true;
  @@ -92,24 +98,31 @@
   	ch = (cc >= 32 && cc <=126) ? String.fromCharCode(cc).toLowerCase():0;
   
   	//alert(e.keyCode+','+e.charCode+','+e.which);
  -	var go=document.getElementById(_go);
  -	var goValue=go.elements['value'];
  -	var goAction=go.elements['action'];
  -	var goStatus=go.elements['status'];
  +	var go, goValue, goAction, goStatus;
  +	var val, stat, act;
  +	go=document.getElementById(_go);
  +        if (go) {
  +		goValue=go.elements['value'];
  +		goAction=go.elements['action'];
  +		goStatus=go.elements['status'];
  +		val = goValue.value || "", act="goto";
  +		stat = goStatus.value || "Go";
  +        } else {
  +		val = "", act="goto";
  +		stat = "Go";
  +	}
   
   	if (cc == 229 && nn != 'INPUT' && nn != 'TEXTAREA') { // for Mozilla
  -		goValue.focus();
  +		go ? goValue.focus():null;
   		noBubble(e);
   		return;
   	}
   
  -	var val = goValue.value || "", act="goto";
  -	var stat = goStatus.value || "Go";
   	var i=0;
   
   	if (e.altKey && ch == 'z') {
   		if (nn != 'INPUT') {
  -			goValue.focus();
  +			go ? goValue.focus():null;
   			noBubble(e);
   		} else {
   			var bot=document.getElementById('bottom');
  @@ -118,6 +131,8 @@
   		return;
   	}
   
  +	if (cc == 112 || cc == 114) ch=null; // mozilla hack
  +
   	switch(ch || cc) {
   	case 27: ch = 27;
   	case '/':
  @@ -144,12 +159,12 @@
   					}
   				} else if (ch == 27) {
   					stat="Go";
  -					goValue.blur();
  +					go ? goValue.blur():null;
   				}
   				if (val == "/" || val == "?") val=val.substr(0,val.length-1);
  -				goValue.value=val;
  -				goAction.value=act;
  -				goStatus.value=stat;
  +				go ? goValue.value=val:null;
  +				go ? goAction.value=act:null;
  +				go ? goStatus.value=stat:null;
   				return;
   			}
   		}
  @@ -165,18 +180,18 @@
   	switch(ch || cc) {
   	case '?':
   		// Title search as vi way
  -		goAction.value="titlesearch";
  -		goStatus.value='?';
  -		goValue.focus();
  +		go ? goAction.value="titlesearch":null;
  +		go ? goStatus.value='?':null;
  +		go ? goValue.focus():null;
   		break;
   	case '/':
   		// Contents search
  -		goAction.value="fullsearch";
  -		goStatus.value='/';
  -		goValue.focus();
  +		go ? goAction.value="fullsearch":null;
  +		go ? goStatus.value='/':null;
  +		go ? goValue.focus():null;
   		break;
   	case 27: // 'ESC' key
  -		goValue.focus();
  +		go ? goValue.focus():null;
   		break;
   	case 112: // 'F1' Help (Mozilla only)
   		noBubble(e);
  @@ -194,7 +209,7 @@
   		if (bot) bot.focus();
   		break;
   	case 'z':
  -		goValue.focus();
  +		go ? goValue.focus():null;
   		break;
   	case 'a': case 'b': case 'd': case 'h': case 'i': case 'k': case 'l': case 'p':
   		if ((i = loc.indexOf(_ap)) != -1) loc = loc.substr(0,i);
  
  
  


wkpark      2008/11/25 12:34:41

  Modified:    data     metaparse.py
  Log:
  support GtkDoc
  
  Revision  Changes    Path
  1.8       +21 -5     moniwiki/data/metaparse.py
  
  Index: metaparse.py
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/data/metaparse.py,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- metaparse.py	10 Oct 2005 09:51:27 -0000	1.7
  +++ metaparse.py	25 Nov 2008 03:34:41 -0000	1.8
  @@ -1,5 +1,5 @@
   #!/usr/bin/python
  -# $Id: metaparse.py,v 1.7 2005/10/10 09:51:27 wkpark Exp $
  +# $Id: metaparse.py,v 1.8 2008/11/25 03:34:41 wkpark Exp $
   # python version metaparse.py by wkpark@kldp.org
   
   import string,os,sys,re,urllib
  @@ -72,7 +72,9 @@
         "PediaIndex":
           ("Special:Allpages",
            '^<table>(.*)</table>',
  -         '(http://.*/w/wiki.phtml\?title=Special:Allpages&amp;from.*?)"')
  +         '(http://.*/w/wiki.phtml\?title=Special:Allpages&amp;from.*?)"'),
  +      "GtkDoc":
  +        ("?", NO_CUT_REGEX, '<dt>\s*([^,]+),\s*<a href="([^"]+)">'),
       };
   
       def __init__(self):
  @@ -109,7 +111,10 @@
                   if self.RULES.has_key(type):
                       dummy=re.search(self.RULES[type][2],line)
                       if dummy:
  -                        cache.write(dummy.group(1)+"\n")
  +			if dummy.group(2):
  +                            cache.write(dummy.group(1)+"\t"+dummy.group(2)+"\n")
  +                    	else:
  +                            cache.write(dummy.group(1)+"\n")
                   else:
   		    cache.write(line)
               cache.close()
  @@ -132,6 +137,11 @@
   
   	return indexurl
   
  +    def _GtkDoc_rule(self,wikiname,type,url):
  +        urls=[]
  +        urls.append(self._get_url(wikiname,type,url))
  +        self._fetch(wikiname,type,urls)
  +
       def _MoinMoin_rule(self,wikiname,type,url):
           urls=[]
           urls.append(self._get_url(wikiname,type,url))
  @@ -273,8 +283,14 @@
                   key=unicode(key,default_charset).encode(local_charset)
               except:
                   pass
  -            nkey=normalize(key)
  -            key=string.replace(key," ","%20")
  +
  +            if re.search("\t",key):
  +                temp=string.split(key)
  +                nkey=temp[0]
  +                key=temp[1]
  +            else:
  +                nkey=normalize(key)
  +                key=string.replace(key," ","%20")
   #
   #            print nkey+":"+key 
               if not nkey: continue
  
  
  


wkpark      2008/11/25 12:49:31

  Modified:    plugin/processor gnuplot.php sfd.php
  Log:
  update
  
  Revision  Changes    Path
  1.16      +3 -3      moniwiki/plugin/processor/gnuplot.php
  
  Index: gnuplot.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/gnuplot.php,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- gnuplot.php	9 Jan 2007 04:29:02 -0000	1.15
  +++ gnuplot.php	25 Nov 2008 03:49:31 -0000	1.16
  @@ -1,12 +1,12 @@
   <?php
  -// Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2008 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a gnuplot processor plugin for the MoniWiki
   //
   // Usage: {{{#!gnuplot
   // plot sin(x)
   // }}}
  -// $Id: gnuplot.php,v 1.15 2007/01/09 04:29:02 wkpark Exp $
  +// $Id: gnuplot.php,v 1.16 2008/11/25 03:49:31 wkpark Exp $
   
   function processor_gnuplot($formatter="",$value="") {
     global $DBInfo;
  @@ -138,7 +138,7 @@
          fwrite($ifp,$src);
          fclose($ifp);
   
  -       $cmd= "$gnuplot $finp > $flog";
  +       $cmd= "$gnuplot \"$finp\" > $flog";
          $fp=system($cmd);
          $log=join(file($flog),"");
          if (file_exists($outpath)) {
  
  
  
  1.2       +1 -1      moniwiki/plugin/processor/sfd.php
  
  Index: sfd.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/sfd.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- sfd.php	20 May 2008 15:58:41 -0000	1.1
  +++ sfd.php	25 Nov 2008 03:49:31 -0000	1.2
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a SFD Fontforge glyph rendering plugin for the MoniWiki
   //
  -// $Id: sfd.php,v 1.1 2008/05/20 15:58:41 wkpark Exp $
  +// $Id: sfd.php,v 1.2 2008/11/25 03:49:31 wkpark Exp $
   // Usage: {{{#!sfd
   // sfd char file
   // }}}
  @@ -117,7 +117,7 @@
   0 $height l
   0 0 l
   stroke
  -*U
  +*U\n
   INFO;
                   $eps.="%%Trailer\n%%EOF\n";
                   break;
  
  
  


wkpark      2008/11/26 18:53:35

  Modified:    plugin   Attachments.php
  Log:
  global $DBInfo
  
  Revision  Changes    Path
  1.2       +3 -2      moniwiki/plugin/Attachments.php
  
  Index: Attachments.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachments.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Attachments.php	16 Apr 2008 17:55:12 -0000	1.1
  +++ Attachments.php	26 Nov 2008 09:53:35 -0000	1.2
  @@ -8,14 +8,15 @@
   // Name: AttachmentsPlugin
   // Description: make a list of attachments for a given page.
   // URL: MoniWiki:AttachmentsPlugin
  -// Version: $Revision: 1.1 $
  +// Version: $Revision: 1.2 $
   // License: GPL
   //
   // Usage: [[Attachments(PageName)]]
   //
  -// $Id: Attachments.php,v 1.1 2008/04/16 17:55:12 wkpark Exp $
  +// $Id: Attachments.php,v 1.2 2008/11/26 09:53:35 wkpark Exp $
   
   function macro_Attachments($formatter,$value,$params=array()) {
  +    global $DBInfo;
       if ($value and $DBInfo->hasPage($value)) {
           $p=$DBInfo->getPage($value);
           $body=$p->get_raw_body();
  
  
  


wkpark      2008/11/26 20:14:15

  Modified:    local    moniwyg.js
  Log:
  safari/google chrom fix
  
  Revision  Changes    Path
  1.50      +7 -5      moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.49
  retrieving revision 1.50
  diff -u -r1.49 -r1.50
  --- moniwyg.js	30 Apr 2008 08:00:46 -0000	1.49
  +++ moniwyg.js	26 Nov 2008 11:14:15 -0000	1.50
  @@ -1,14 +1,15 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.49 2008/04/30 08:00:46 wkpark Exp $
  +// $Id: moniwyg.js,v 1.50 2008/11/26 11:14:15 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
   Wikiwyg.browserIsSupported = (
       Wikiwyg.is_gecko ||
       Wikiwyg.is_ie ||
  -    Wikiwyg.is_opera
  +    Wikiwyg.is_opera ||
  +    Wikiwyg.is_safari
   );
   
   // Wikiwyg fix for IE
  @@ -796,10 +797,11 @@
       // mozilla and IE hack !!
   
       iframeHandler = function() {
  -        var doc = iframe.contentDocument || iframe.contentWindow.document;
           //Fx workaround: delay modifying editorDoc.body right after iframe onload event
  -        var head = doc.getElementsByTagName("head")[0];
           setTimeout(function() {
  +            var doc = iframe.contentDocument || iframe.contentWindow;
  +            if (doc.document) doc = doc.document; // safari/chrome fix
  +            var head = doc.getElementsByTagName("head")[0];
               doc.designMode = 'on';
   
               self.apply_stylesheets();
  @@ -827,7 +829,7 @@
   
           //editorDoc.onkeydown = editorDoc_onkeydown;
           //where editorDoc_onkeydown is the keydown event handler you defined earlier
  -        iframe = null; //IE mem leak fix
  +        if (Wikiwyg.is_ie) iframe = null; //IE mem leak fix
       }
   
       iframe.onload=iframeHandler; // ignored by IE :(
  
  
  


wkpark      2008/11/26 21:43:59

  Modified:    .        wiki.php
  Log:
  support #comment PI
  
  Revision  Changes    Path
  1.396     +7 -5      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.395
  retrieving revision 1.396
  diff -u -r1.395 -r1.396
  --- wiki.php	30 Apr 2008 08:04:08 -0000	1.395
  +++ wiki.php	26 Nov 2008 12:43:59 -0000	1.396
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.395 2008/04/30 08:04:08 wkpark Exp $
  +// $Id: wiki.php,v 1.396 2008/11/26 12:43:59 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.395 $',1,-1);
  +$_revision = substr('$Revision: 1.396 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2044,7 +2044,7 @@
     function get_instructions(&$body) {
       global $Config;
       $pikeys=array('#redirect','#action','#title','#keywords','#noindex',
  -      '#format','#filter','#postfilter','#twinpages','#notwins','#nocomment',
  +      '#format','#filter','#postfilter','#twinpages','#notwins','#nocomment','#comment',
         '#language','#camelcase','#nocamelcase','#cache','#nocache',
         '#singlebracket','#nosinglebracket','#rating','#norating','#nodtd');
       $pi=array();
  @@ -5118,13 +5118,15 @@
           $formatter->pi['#format'] == $DBInfo->default_markup) {
         if ($formatter->pi['#nocomment']) $options['nocomment']=1;
         $options['mid']='dummy';
  -      if (!is_array($DBInfo->extra_macros)) {
  +      $extra=$DBInfo->extra_macros;
  +      if (!is_array($extra)) {
           print '<div id="wikiExtra">'."\n";
           print $formatter->macro_repl($DBInfo->extra_macros,'',$options);
           print '</div>'."\n";
         } else {
  +        if ($formatter->pi['#comment']) array_unshift($extra,'Comment');
           print '<div id="wikiExtra">'."\n";
  -        foreach ($DBInfo->extra_macros as $macro)
  +        foreach ($extra as $macro)
             print $formatter->macro_repl($macro,'',$options);
           print '</div>'."\n";
         }
  
  
  


wkpark      2008/11/26 21:46:16

  Modified:    plugin/processor bts.php
  Log:
  always add a Comment macro
  
  Revision  Changes    Path
  1.2       +2 -1      moniwiki/plugin/processor/bts.php
  
  Index: bts.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/bts.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- bts.php	29 Nov 2007 17:14:01 -0000	1.1
  +++ bts.php	26 Nov 2008 12:46:16 -0000	1.2
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a bug track system plugin for the MoniWiki
   //
  -// $Id: bts.php,v 1.1 2007/11/29 17:14:01 wkpark Exp $
  +// $Id: bts.php,v 1.2 2008/11/26 12:46:16 wkpark Exp $
   
   include_once("lib/metadata.php");
   
  @@ -208,6 +208,7 @@
           $msg= ob_get_contents();
           ob_end_clean();
       }
  +    $msg.= $formatter->macro_repl('Comment(meta)','',$options);
       if ($bts_script) return $msg.$hidden;
       $bts_script=1;
       return $script.$msg.$hidden;
  
  
  


wkpark      2008/11/26 22:17:44

  Modified:    plugin/processor monimarkup.php
  Log:
  support comments
  
  Revision  Changes    Path
  1.6       +12 -3     moniwiki/plugin/processor/monimarkup.php
  
  Index: monimarkup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/monimarkup.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- monimarkup.php	27 Apr 2008 10:12:53 -0000	1.5
  +++ monimarkup.php	26 Nov 2008 13:17:44 -0000	1.6
  @@ -3,12 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a moniwiki formatting processor for the MoniWiki
   //
  -// $Id: monimarkup.php,v 1.5 2008/04/27 10:12:53 wkpark Exp $
  +// $Id: monimarkup.php,v 1.6 2008/11/26 13:17:44 wkpark Exp $
   /**
    * @date    2006-08-09
    * @name    Moniwiki Processor
    * @desc    Moniwiki default processor
  - * @version $Revision: 1.5 $
  + * @version $Revision: 1.6 $
    * @depend  1.1.3
    * @license GPL
    */
  @@ -260,6 +260,9 @@
                       continue;
                   }
                   // not reach
  +            } else if (preg_match("/^##(.*)$/",$line,$m)) {
  +                $chunk[]=array('tag'=>'COMMENT','value'=>$m[1]);
  +                continue;
               }
               // paragraph block
               if ($_indlen[$_in_li]) {
  @@ -416,7 +419,7 @@
           # 2-pass
           $chunk=$this->_pass2($body);
   
  -        #print "<pre>";print_r($chunk);print "</pre>";
  +        print "<pre>";print_r($chunk);print "</pre>";
           $hr_func=$Config['hr_type'].'_hr';
   
           $_lidep=array(0);
  @@ -537,6 +540,12 @@
                       #print "<pre>".htmlspecialchars($val)."</pre>";
                       $out.=$val;
                       break;
  +                case 'COMMENT':
  +                    # XXX
  +                    $val=$c['value'];
  +                    if (preg_match('/^\[\[.*\]\]$/',$val))
  +                    $out.= $formatter->macro_repl(substr($val,2,-2),'',array('nomarkup'=>1));
  +                    break;
                   default:
                       break;
                   }
  
  
  


wkpark      2008/11/27 09:55:18

  Modified:    plugin/processor bts.php monimarkup.php
  Log:
  i18nized. fixed last changes for monimarkup
  
  Revision  Changes    Path
  1.3       +9 -7      moniwiki/plugin/processor/bts.php
  
  Index: bts.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/bts.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- bts.php	26 Nov 2008 12:46:16 -0000	1.2
  +++ bts.php	27 Nov 2008 00:55:17 -0000	1.3
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a bug track system plugin for the MoniWiki
   //
  -// $Id: bts.php,v 1.2 2008/11/26 12:46:16 wkpark Exp $
  +// $Id: bts.php,v 1.3 2008/11/27 00:55:17 wkpark Exp $
   
   include_once("lib/metadata.php");
   
  @@ -134,7 +134,7 @@
           }
           if ($k[0]=='X' and $k[1]=='-') {
               if ($confs[$kk])
  -                $v='[[InputForm(:'.$kk.':'.str_replace($v,$v.' 1',$confs[$kk]).')]]';
  +                $v='[[InputForm(:'._($kk).':'.str_replace($v,$v.' 1',$confs[$kk]).')]]';
               $k=substr($k,2);
               if ($k=='Separator') {
                   $head.="\n##\n##[[HTML(</td><td valign='top'>)]]\n";
  @@ -145,19 +145,21 @@
           } else {
               if ($k=='Summary' or $k=='Keywords') {
                   $v=str_replace(':','&#58;',$v);
  -                $v='[[InputForm(input:'.$k.':'.$confs[$k].':'.$v.')]]';
  -                $extra.="||'''$k'''||$v||\n";
  +                $v='[[InputForm(input:'._($k).':'.$confs[$k].':'.$v.')]]';
  +                $extra.="||'''"._($k)."'''||$v||\n";
               } else {
                   if ($confs[$kk])
  -                    $v='[[InputForm(:'.$kk.':'.str_replace($v,$v.' 1',$confs[$kk]).')]]';
  -                $head.="|| '''".$k."''' ||".$v." ||\n";
  +                    $v='[[InputForm(:'._($kk).':'.str_replace($v,$v.' 1',$confs[$kk]).')]]';
  +                $head.="|| '''"._($k)."''' ||".$v." ||\n";
               }
           }
       }
  +
  +    # print '<pre>'.$head.'</pre>';
       $head.=
           "\n##\n\n##[[HTML(</td></tr></table>)]]\n".
           $extra."\n".
  -        "[[InputForm(submit:Save Changes)]]\n##[[InputForm]]";
  +        "[[InputForm(submit:"._("Save Changes").")]]\n##[[InputForm]]";
       print <<<HEAD
   <fieldset id="bts-properties"><legend>Change Properties</legend>
   HEAD;
  
  
  
  1.7       +3 -3      moniwiki/plugin/processor/monimarkup.php
  
  Index: monimarkup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/monimarkup.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- monimarkup.php	26 Nov 2008 13:17:44 -0000	1.6
  +++ monimarkup.php	27 Nov 2008 00:55:17 -0000	1.7
  @@ -3,12 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a moniwiki formatting processor for the MoniWiki
   //
  -// $Id: monimarkup.php,v 1.6 2008/11/26 13:17:44 wkpark Exp $
  +// $Id: monimarkup.php,v 1.7 2008/11/27 00:55:17 wkpark Exp $
   /**
    * @date    2006-08-09
    * @name    Moniwiki Processor
    * @desc    Moniwiki default processor
  - * @version $Revision: 1.6 $
  + * @version $Revision: 1.7 $
    * @depend  1.1.3
    * @license GPL
    */
  @@ -419,7 +419,7 @@
           # 2-pass
           $chunk=$this->_pass2($body);
   
  -        print "<pre>";print_r($chunk);print "</pre>";
  +        #print "<pre>";print_r($chunk);print "</pre>";
           $hr_func=$Config['hr_type'].'_hr';
   
           $_lidep=array(0);
  
  
  


wkpark      2008/11/27 09:56:10

  Modified:    .        wiki.php
  Log:
  support dynamic message translation.
  
  Revision  Changes    Path
  1.397     +19 -5     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.396
  retrieving revision 1.397
  diff -u -r1.396 -r1.397
  --- wiki.php	26 Nov 2008 12:43:59 -0000	1.396
  +++ wiki.php	27 Nov 2008 00:56:10 -0000	1.397
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.396 2008/11/26 12:43:59 wkpark Exp $
  +// $Id: wiki.php,v 1.397 2008/11/27 00:56:10 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.396 $',1,-1);
  +$_revision = substr('$Revision: 1.397 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -4846,18 +4846,32 @@
     if ($Config['include_path']) $dirs=explode(':',$Config['include_path']);
     else $dirs=array('.');
   
  +  $domain='moniwiki';
  +  if ($Config['use_local_translation']) {
  +    # gettext cache workaround
  +    # http://kr2.php.net/manual/en/function.gettext.php#58310
  +    $ldir=$Config['cache_dir']."/locale/$lang/LC_MESSAGES/";
  +    if (file_exists($ldir.'md5sum')) {
  +      $tmp=file($ldir.'md5sum');
  +      if (file_exists($ldir.'moniwiki-'.$tmp[0].'.mo')) {
  +        $domain=$domain.'-'.$tmp[0];
  +        array_unshift($dirs,$Config['cache_dir']);
  +      }
  +    }
  +  }
  +
     $test=setlocale(LC_ALL, $lang);
     foreach ($dirs as $dir) {
       $ldir=$dir.'/locale';
       if (is_dir($ldir)) {
  -      bindtextdomain('moniwiki', $ldir);
  -      textdomain("moniwiki");
  +      bindtextdomain($domain, $ldir);
  +      textdomain($domain);
         break;
       }
     }
     if ($Config['set_lang']) putenv("LANG=".$lang);
     if (function_exists('bind_textdomain_codeset'))
  -    bind_textdomain_codeset ('moniwiki', $Config['charset']);
  +    bind_textdomain_codeset ($domain, $Config['charset']);
   }
   
   }
  
  
  


wkpark      2008/11/27 09:56:10

  Added:       plugin   msgtrans.php
  Log:
  support dynamic message translation.
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/msgtrans.php
  
  Index: msgtrans.php
  ===================================================================
  <?php
  // Copyright 2008 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a sample plugin for the MoniWiki
  //
  // Author: Won-kyu Park <wkpark@kldp.org>
  // Date: 2008-11-26
  // Name: Message Translation plugin
  // Description: make a Translation *.mo from simple message files.
  // URL: MoniWiki:DynamicMessageTranslation
  // Version: $Revision: 1.1 $
  // License: GPL
  //
  // Usage: [[Test]]
  //
  // $Id: msgtrans.php,v 1.1 2008/11/27 00:56:10 wkpark Exp $
  
  function macro_MsgTrans($formatter,$value) {
      global $DBInfo;
  
      if (!is_array($DBInfo->owners) or in_array($options['id'],$DBInfo->owners)) {
  	return sprintf(_("You are not allowed to \"%s\" !"),"trans");
      }
      if (!$pagename)
          $pagename=$DBInfo->default_translation ? $DBInfo->default_translation:'LocalTranslationKo';
      $page=$DBInfo->getPage($pagename);
      if (!$page->exists()) return '';
      $raw=$page->get_raw_body();$raw=rtrim($raw);
  
      $lines = explode("\n",$raw);
  
      $charset = strtoupper($DBInfo->charset);
      $lang = $DBInfo->lang ? $DBInfo->lang:'en_US.'.$charset;
  
      $strs = array();
      foreach ($lines as $l) {
          $l=trim($l);
          if ($l{0}=='#') {
              if (preg_match('/^#lang (ko_KR|en_US|fr_FR)$/',$l,$m)) {
                  $lang=$m[1];
                  if ($DBInfo->charset) $lang.='.'.$charset;
              }
              continue;
          }
          if ($l{0}=='"') {
              if (preg_match('/^(("(([^"]|\\\\")*?)"\s*)+)\s*(.*)$/',$l,$m)) {
                  $smap = array('/"\s+"/', '/\\\\n/', '/\\\\r/', '/\\\\t/', '/\\\\"/');
                  $rmap = array('', "\n", "\r", "\t", '"');
                  $w = preg_replace($smap,$rmap,$m[3]);
                  $t = preg_replace($smap,$rmap,$m[5]);
              }
          } else {
              list($w,$t) = explode(" ",$l,2);
          }
          $strs[$w]=$t;
      }
  
      //print_r($strs);
      if (!empty($strs)) {
          include_once 'lib/Gettext/MO.php';
          $myMO = new TGettext_MO;
  
          $ldir='locale/'.$lang.'/LC_MESSAGES';
          $mofile=$ldir.'/moniwiki.mo';
  
          if (($e = $myMO->load($mofile))==true) {
              $myMO->strings = array_merge($myMO->strings,$strs);
              #$myMO->meta['PO-Revision-Date']= date('Y-m-d H:iO');
              ksort($myMO->strings); // XXX
              #print_r($myMO->strings);
          } else {
             $meta = array(
                  'Content-Type'      => 'text/plain; charset='.$charset,
                  'Last-Translator'   => 'MoniWiki Translator',
                  'PO-Revision-Date'  => date('Y-m-d H:iO'),
                  'MIME-Version'      => '1.0',
                  'Language-Team'     => 'MoniWiki Translator',
             );
              if (true !== ($e = $myMO->fromArray(array('meta'=>$meta,'strings'=>$strs)))) {
                  print "Fail to make a mo file.\n";
                  return $e;
              }
          }
  
  
          $vartmp_dir=$DBInfo->vartmp_dir;
          $tmp=tempnam($vartmp_dir,"GETTEXT");
          #$tmp=$vartmp_dir."/GETTEXT.mo";
  
          if (true !== ($e = $myMO->save($tmp))) {
              print "Fail to save mo file.\n";
              return $e;
          }
          # gettext cache workaround
          # http://kr2.php.net/manual/en/function.gettext.php#58310
          # use md5sum instead
          $md5 = md5_file($tmp);
          $md5file = $DBInfo->cache_dir.'/'.$ldir.'/md5sum';
          $f = fopen($md5file,'w');
          if (is_resource($f)) {
              fwrite($f,$md5);
              fclose($f);
          }
          $ldir=$DBInfo->cache_dir.'/'.$ldir;
          _mkdir_p($ldir,0777);
  
  	if (!file_exists($ldir)) {
              return "Fail to save mo file.\n";
  	}
          copy($tmp,$ldir.'/moniwiki-'.$md5.'.mo');
          unlink($tmp);
          if (!file_exists($md5file)) unlink($md5file); // fail to copy ?
  
          return _("Local translation files are successfully translated !\n");
      }
      return "Empty !\n";
  }
  
  function do_msgtrans($formatter,$options) {
      $formatter->send_header('',$options);
      $formatter->send_title('','',$options);
      $ret= macro_MsgTrans($formatter,$options['value']);
      $formatter->send_page($ret);
      $formatter->send_footer('',$options);
      return;
  }
  
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2008/11/27 10:12:24

  Modified:    .        wikilib.php
  Log:
  extract processor_html
  
  Revision  Changes    Path
  1.247     +1 -7      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.246
  retrieving revision 1.247
  diff -u -r1.246 -r1.247
  --- wikilib.php	27 Apr 2008 09:33:29 -0000	1.246
  +++ wikilib.php	27 Nov 2008 01:12:24 -0000	1.247
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.246 2008/04/27 09:33:29 wkpark Exp $
  +// $Id: wikilib.php,v 1.247 2008/11/27 01:12:24 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2656,12 +2656,6 @@
       </form>";
   }
   
  -function processor_html($formatter="",$value="") {
  -  if ($value[0]=='#' and $value[1]=='!')
  -    list($line,$value)=explode("\n",$value,2);
  -  return $value;
  -}
  -
   function processor_plain($formatter,$value) {
     if ($value[0]=='#' and $value[1]=='!')
       list($line,$value)=explode("\n",$value,2);
  
  
  


wkpark      2008/11/27 10:12:24

  Added:       plugin/processor html.php
  Log:
  extract processor_html
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/processor/html.php
  
  Index: html.php
  ===================================================================
  <?php
  // Copyright 2003-2008 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a sample plugin for the MoniWiki
  //
  // Author: Won-Kyu Park <wkpark@kldp.org>
  // Date: 2003-04-10
  // Name: Simple HTML Processor
  // Description: HTML Processor plugin
  // URL: MoniWiki:HTMLProcessor
  // Version: $Revision: 1.1 $
  // License: GPL
  //
  // Usage: {{{
  // html code
  // }}}
  //
  // $Id: html.php,v 1.1 2008/11/27 01:12:24 wkpark Exp $
  
  function processor_html($formatter="",$value="") {
      if ($value[0]=='#' and $value[1]=='!')
          list($line,$value)=explode("\n",$value,2);
      return $value;
  }
  
  // vim:et:sts=4:sw=4:
  ?>
  
  
  


wkpark      2008/11/27 13:12:12

  Modified:    css      kbd.js
  Log:
  google chrome fix for F1/F3 function keys
  
  Revision  Changes    Path
  1.14      +4 -4      moniwiki/css/kbd.js
  
  Index: kbd.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/kbd.js,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- kbd.js	25 Nov 2008 03:31:08 -0000	1.13
  +++ kbd.js	27 Nov 2008 04:12:12 -0000	1.14
  @@ -6,7 +6,7 @@
   
      distributable under GPL
   
  -   $Id: kbd.js,v 1.13 2008/11/25 03:31:08 wkpark Exp $
  +   $Id: kbd.js,v 1.14 2008/11/27 04:12:12 wkpark Exp $
   
      CHANGES
   
  @@ -81,12 +81,12 @@
   	if (e && e.target) var f = e.target, nn=f.nodeName; // Mozilla
   	else var e=window.event, f = e.srcElement, nn = f.tagName; // IE
   
  -	if (window.event && (e.keyCode==112 || e.keyCode==114)) {
  +	if (e.charCode == undefined && (e.keyCode==112 || e.keyCode==114)) {
   		keypresshandler(e); // IE hack
   		noBubble(e);
   		return false;
   	}
  -	if (window.event && e.keyCode==27 && (nn == 'TEXTAREA' || nn == 'INPUT')) return false;
  +	if (e.charCode == undefined && e.keyCode==27 && (nn == 'TEXTAREA' || nn == 'INPUT')) return false;
   	// IE ESC blocking for all vim lovers
   	return true;
   }
  @@ -131,7 +131,7 @@
   		return;
   	}
   
  -	if (cc == 112 || cc == 114) ch=null; // mozilla hack
  +	if (!e.keyCode && (cc == 112 || cc == 114)) ch=ch; // mozilla hack
   
   	switch(ch || cc) {
   	case 27: ch = 27;
  
  
  


wkpark      2008/11/27 13:50:05

  Modified:    plugin   msgtrans.php
  Log:
  check wiki owner properly
  
  Revision  Changes    Path
  1.2       +7 -5      moniwiki/plugin/msgtrans.php
  
  Index: msgtrans.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/msgtrans.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- msgtrans.php	27 Nov 2008 00:56:10 -0000	1.1
  +++ msgtrans.php	27 Nov 2008 04:50:04 -0000	1.2
  @@ -8,19 +8,21 @@
   // Name: Message Translation plugin
   // Description: make a Translation *.mo from simple message files.
   // URL: MoniWiki:DynamicMessageTranslation
  -// Version: $Revision: 1.1 $
  +// Version: $Revision: 1.2 $
   // License: GPL
   //
   // Usage: [[Test]]
   //
  -// $Id: msgtrans.php,v 1.1 2008/11/27 00:56:10 wkpark Exp $
  +// $Id: msgtrans.php,v 1.2 2008/11/27 04:50:04 wkpark Exp $
   
  -function macro_MsgTrans($formatter,$value) {
  +function macro_MsgTrans($formatter,$value,$param=array()) {
       global $DBInfo;
   
  -    if (!is_array($DBInfo->owners) or in_array($options['id'],$DBInfo->owners)) {
  -	return sprintf(_("You are not allowed to \"%s\" !"),"trans");
  +    $user=new User();
  +    if (!is_array($DBInfo->owners) or !in_array($user->id,$DBInfo->owners)) {
  +        return sprintf(_("You are not allowed to \"%s\" !"),"msgtrans");
       }
  +
       if (!$pagename)
           $pagename=$DBInfo->default_translation ? $DBInfo->default_translation:'LocalTranslationKo';
       $page=$DBInfo->getPage($pagename);
  @@ -36,7 +38,7 @@
       foreach ($lines as $l) {
           $l=trim($l);
           if ($l{0}=='#') {
  -            if (preg_match('/^#lang (ko_KR|en_US|fr_FR)$/',$l,$m)) {
  +            if (preg_match('/^#lang(?>uage)? (ko_KR|en_US|fr_FR)$/',$l,$m)) {
                   $lang=$m[1];
                   if ($DBInfo->charset) $lang.='.'.$charset;
               }
  
  
  


wkpark      2008/11/27 16:55:49

  Modified:    plugin   msgtrans.php
  Log:
  try to load the po file if the mo file is not available
  
  Revision  Changes    Path
  1.3       +23 -7     moniwiki/plugin/msgtrans.php
  
  Index: msgtrans.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/msgtrans.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- msgtrans.php	27 Nov 2008 04:50:04 -0000	1.2
  +++ msgtrans.php	27 Nov 2008 07:55:48 -0000	1.3
  @@ -8,12 +8,12 @@
   // Name: Message Translation plugin
   // Description: make a Translation *.mo from simple message files.
   // URL: MoniWiki:DynamicMessageTranslation
  -// Version: $Revision: 1.2 $
  +// Version: $Revision: 1.3 $
   // License: GPL
   //
   // Usage: [[Test]]
   //
  -// $Id: msgtrans.php,v 1.2 2008/11/27 04:50:04 wkpark Exp $
  +// $Id: msgtrans.php,v 1.3 2008/11/27 07:55:48 wkpark Exp $
   
   function macro_MsgTrans($formatter,$value,$param=array()) {
       global $DBInfo;
  @@ -59,16 +59,32 @@
   
       //print_r($strs);
       if (!empty($strs)) {
  -        include_once 'lib/Gettext/MO.php';
  -        $myMO = new TGettext_MO;
  -
  +        $myMO = null;
           $ldir='locale/'.$lang.'/LC_MESSAGES';
           $mofile=$ldir.'/moniwiki.mo';
   
  -        if (($e = $myMO->load($mofile))==true) {
  +        if (!file_exists($mofile)) {
  +            # load *.po file
  +            $mylang = substr($lang,0,2);
  +            $pofile = 'locale/po/'.$mylang.'.po';
  +            if (file_exists($pofile)) {
  +                include_once 'lib/Gettext/PO.php';
  +                $myPO = new TGettext_PO;
  +                if ( ($e = $myPO->load($pofile)) == true) {
  +                    $myMO = $myPO->toMO();
  +                }
  +            }
  +        } else {
  +            # load *.mo file
  +            include_once 'lib/Gettext/MO.php';
  +            $myMO = new TGettext_MO;
  +            $e = $myMO->load($mofile);
  +        }
  +
  +        if ($myMO and $e == true) {
               $myMO->strings = array_merge($myMO->strings,$strs);
               #$myMO->meta['PO-Revision-Date']= date('Y-m-d H:iO');
  -            ksort($myMO->strings); // XXX
  +            ksort($myMO->strings); // important!
               #print_r($myMO->strings);
           } else {
              $meta = array(
  
  
  


wkpark      2008/11/27 17:43:06

  Modified:    plugin   TextDict.php
  Log:
  update
  
  Revision  Changes    Path
  1.3       +6 -3      moniwiki/plugin/TextDict.php
  
  Index: TextDict.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/TextDict.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TextDict.php	6 May 2008 15:59:07 -0000	1.2
  +++ TextDict.php	27 Nov 2008 08:43:06 -0000	1.3
  @@ -8,12 +8,12 @@
   // Name: TextDict
   // Description: A Simple Text-Dictionary search plugin
   // URL: MoniWiki:TextDict etc.
  -// Version: $Revision: 1.2 $
  +// Version: $Revision: 1.3 $
   // License: GPL
   //
   // Usage: [[TextDict(word)]]
   //
  -// $Id: TextDict.php,v 1.2 2008/05/06 15:59:07 wkpark Exp $
  +// $Id: TextDict.php,v 1.3 2008/11/27 08:43:06 wkpark Exp $
   //
   
   include_once(dirname(__FILE__).'/../lib/dict.text.php');
  @@ -68,23 +68,26 @@
       }
   
       sort($keys);$keys=array_unique($keys);
  -    if ($_debug) $options['timer']->Check("read");
   
       $fp=fopen(TEXT_DICT,'r');
       if (!is_resource($fp)) return '';
       $fs=fstat($fp);
       $fz=$fs['size'];
  +    if ($_debug) $options['timer']->Check("read");
   
       foreach ($keys as $i=>$key) {
           list($l,$min_seek,$max_seek,$scount)= _fuzzy_bsearch_file($fp,$key,0,$fz/3,0,$fz);
  +        if ($_debug) $options['timer']->Check("seek");
           list($c,$buf,$last)=
               _file_match($fp,$key,$min_seek,$max_seek,$fz,0,true,'UTF-8');
           if ($_debug) {
  +            $options['timer']->Check("find");
               print 'found='.$c."<br />\n";
               print 'scount='.$scount."<br />\n";
               if ($last) print 'last='.$last."<br />\n";
               if ($_debug>50)
                   if (!empty($buf)) print $buf."<br />\n";
  +            $options['timer']->Check("log");
           }
       }
       fclose($fp);
  
  
  


wkpark      2008/11/27 17:43:06

  Modified:    plugin/filter indexer_ko.php
  Log:
  update
  
  Revision  Changes    Path
  1.2       +5 -1      moniwiki/plugin/filter/indexer_ko.php
  
  Index: indexer_ko.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/filter/indexer_ko.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- indexer_ko.php	19 Apr 2008 03:47:42 -0000	1.1
  +++ indexer_ko.php	27 Nov 2008 08:43:06 -0000	1.2
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a korean indexer filter plugin for the MoniWiki
   //
  -// $Id: indexer_ko.php,v 1.1 2008/04/19 03:47:42 wkpark Exp $
  +// $Id: indexer_ko.php,v 1.2 2008/11/27 08:43:06 wkpark Exp $
   //
   
   include_once(dirname(__FILE__).'/../../lib/indexer.ko.php');
  @@ -12,6 +12,9 @@
       $more_specific_len=1;
       $indexer=new KoreanIndexer();
   
  +    if ($options['value'])
  +        $value=$options['value'];
  +
       $delims=",.\|\n\r\s\(\)\[\]{}!@#\$%\^&\*\-_\+=~`';:'\"\?<>\/";
   
       # un-wikify CamelCase, change "WikiName" to "Wiki Name"
  @@ -30,6 +33,7 @@
       $log='';
       $tag=array('+','-');
       foreach ($keys as $i=>$key) {
  +        $match=null;
           if ($stem=$indexer->getStem(trim($key),$match,$type)) {
               $log.= $key.'=>'.$stem.$tag[$type-1].'/'.$match[1]."\n";
               if ($type==1)
  
  
  


wkpark      2008/11/27 17:43:37

  Modified:    plugin   msgtrans.php
  Log:
  check charset of the po file
  
  Revision  Changes    Path
  1.4       +10 -2     moniwiki/plugin/msgtrans.php
  
  Index: msgtrans.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/msgtrans.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- msgtrans.php	27 Nov 2008 07:55:48 -0000	1.3
  +++ msgtrans.php	27 Nov 2008 08:43:37 -0000	1.4
  @@ -8,12 +8,12 @@
   // Name: Message Translation plugin
   // Description: make a Translation *.mo from simple message files.
   // URL: MoniWiki:DynamicMessageTranslation
  -// Version: $Revision: 1.3 $
  +// Version: $Revision: 1.4 $
   // License: GPL
   //
   // Usage: [[Test]]
   //
  -// $Id: msgtrans.php,v 1.3 2008/11/27 07:55:48 wkpark Exp $
  +// $Id: msgtrans.php,v 1.4 2008/11/27 08:43:37 wkpark Exp $
   
   function macro_MsgTrans($formatter,$value,$param=array()) {
       global $DBInfo;
  @@ -72,6 +72,14 @@
                   $myPO = new TGettext_PO;
                   if ( ($e = $myPO->load($pofile)) == true) {
                       $myMO = $myPO->toMO();
  +                    preg_match('/charset=(.*)$/',$myMO->meta['Content-Type'],$cs);
  +                    if (strtoupper($cs[1]) != $charset) {
  +                        $myMO->meta['Content-Type']= 'text/plain; charset='.$charset;
  +                        foreach ($myMO->strings as $k=>$v) {
  +                            $nv = iconv($cs[1],$charset,$v);
  +                            if (isset($nv)) $myMO->strings[$k]=$nv;
  +                        }
  +                    }
                   }
               }
           } else {
  
  
  


wkpark      2008/11/27 19:02:18

  Modified:    plugin   msgtrans.php
  Log:
  make md5sum properly
  
  Revision  Changes    Path
  1.5       +18 -17    moniwiki/plugin/msgtrans.php
  
  Index: msgtrans.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/msgtrans.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- msgtrans.php	27 Nov 2008 08:43:37 -0000	1.4
  +++ msgtrans.php	27 Nov 2008 10:02:18 -0000	1.5
  @@ -8,12 +8,12 @@
   // Name: Message Translation plugin
   // Description: make a Translation *.mo from simple message files.
   // URL: MoniWiki:DynamicMessageTranslation
  -// Version: $Revision: 1.4 $
  +// Version: $Revision: 1.5 $
   // License: GPL
   //
   // Usage: [[Test]]
   //
  -// $Id: msgtrans.php,v 1.4 2008/11/27 08:43:37 wkpark Exp $
  +// $Id: msgtrans.php,v 1.5 2008/11/27 10:02:18 wkpark Exp $
   
   function macro_MsgTrans($formatter,$value,$param=array()) {
       global $DBInfo;
  @@ -74,10 +74,14 @@
                       $myMO = $myPO->toMO();
                       preg_match('/charset=(.*)$/',$myMO->meta['Content-Type'],$cs);
                       if (strtoupper($cs[1]) != $charset) {
  -                        $myMO->meta['Content-Type']= 'text/plain; charset='.$charset;
  -                        foreach ($myMO->strings as $k=>$v) {
  -                            $nv = iconv($cs[1],$charset,$v);
  -                            if (isset($nv)) $myMO->strings[$k]=$nv;
  +                        if (function_exists("iconv")) {
  +                            $myMO->meta['Content-Type']= 'text/plain; charset='.$charset;
  +                            foreach ($myMO->strings as $k=>$v) {
  +                                $nv = iconv($cs[1],$charset,$v);
  +                                if (isset($nv)) $myMO->strings[$k]=$nv;
  +                            }
  +                        } else {
  +                            $e = false;
                           }
                       }
                   }
  @@ -103,8 +107,7 @@
                   'Language-Team'     => 'MoniWiki Translator',
              );
               if (true !== ($e = $myMO->fromArray(array('meta'=>$meta,'strings'=>$strs)))) {
  -                print "Fail to make a mo file.\n";
  -                return $e;
  +                return "Fail to make a mo file.\n";
               }
           }
   
  @@ -114,28 +117,26 @@
           #$tmp=$vartmp_dir."/GETTEXT.mo";
   
           if (true !== ($e = $myMO->save($tmp))) {
  -            print "Fail to save mo file.\n";
  -            return $e;
  +            return "Fail to save mo file.\n";
           }
           # gettext cache workaround
           # http://kr2.php.net/manual/en/function.gettext.php#58310
           # use md5sum instead
           $md5 = md5_file($tmp);
           $md5file = $DBInfo->cache_dir.'/'.$ldir.'/md5sum';
  +        $ldir=$DBInfo->cache_dir.'/'.$ldir;
  +        _mkdir_p($ldir,0777);
  +
           $f = fopen($md5file,'w');
           if (is_resource($f)) {
               fwrite($f,$md5);
               fclose($f);
           }
  -        $ldir=$DBInfo->cache_dir.'/'.$ldir;
  -        _mkdir_p($ldir,0777);
   
  -	if (!file_exists($ldir)) {
  +        if (!rename($tmp,$ldir.'/moniwiki-'.$md5.'.mo')) {
  +            unlink($md5file); // fail to copy ?
               return "Fail to save mo file.\n";
  -	}
  -        copy($tmp,$ldir.'/moniwiki-'.$md5.'.mo');
  -        unlink($tmp);
  -        if (!file_exists($md5file)) unlink($md5file); // fail to copy ?
  +        }
   
           return _("Local translation files are successfully translated !\n");
       }
  
  
  


wkpark      2008/11/27 19:07:06

  Modified:    plugin   cacheadmin.php
  Log:
  replace _info() function as a comment description
  
  Revision  Changes    Path
  1.3       +13 -15    moniwiki/plugin/cacheadmin.php
  
  Index: cacheadmin.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/cacheadmin.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- cacheadmin.php	7 Apr 2008 16:26:54 -0000	1.2
  +++ cacheadmin.php	27 Nov 2008 10:07:06 -0000	1.3
  @@ -1,24 +1,22 @@
   <?php
  -// Copyright 2006 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2008 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a cacheadmin plugin for the MoniWiki
   //
   // Usage: ?action=cacheadmin
   //
  -// $Id: cacheadmin.php,v 1.2 2008/04/07 16:26:54 wkpark Exp $
  -
  -function info_CacheAdmin() {
  -    return array(
  -        'author'  => 'Won-Kyu Park <wkpark@kldp.org>',
  -        'date'    => '2006-08-05',
  -        'name'    => 'CacheAdmin',
  -        'desc'    => 'CacheAdmin Plugin',
  -        'url'     => 'MoniWiki:CacheAdminPlugin',
  -        'version' => substr('$Revision: 1.2 $',1,-1),
  -        'depend'  => '1.1.1',
  -        'license' => 'GPL',
  -     );
  -}
  +// $Id: cacheadmin.php,v 1.3 2008/11/27 10:07:06 wkpark Exp $
  +//
  +/**
  + * @author  Won-Kyu Park <wkpark@kldp.org>
  + * @date    2006-08-05
  + * @name    CacheAdmin
  + * @desc    CacheAdmin Plugin
  + * @url     MoniWiki:CacheAdminPlugin
  + * @version $Revision: 1.3 $
  + * @depend  1.1.1
  + * @license GPL
  + */
   
   function macro_CacheAdmin($formatter,$value='',$options=array()) {
       global $Config;
  
  
  


wkpark      2008/11/28 09:09:22

  Modified:    plugin   msgtrans.php
  Log:
  fixed dynamic message translation for win32
  
  Revision  Changes    Path
  1.6       +4 -2      moniwiki/plugin/msgtrans.php
  
  Index: msgtrans.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/msgtrans.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- msgtrans.php	27 Nov 2008 10:02:18 -0000	1.5
  +++ msgtrans.php	28 Nov 2008 00:09:22 -0000	1.6
  @@ -8,12 +8,12 @@
   // Name: Message Translation plugin
   // Description: make a Translation *.mo from simple message files.
   // URL: MoniWiki:DynamicMessageTranslation
  -// Version: $Revision: 1.5 $
  +// Version: $Revision: 1.6 $
   // License: GPL
   //
   // Usage: [[Test]]
   //
  -// $Id: msgtrans.php,v 1.5 2008/11/27 10:02:18 wkpark Exp $
  +// $Id: msgtrans.php,v 1.6 2008/11/28 00:09:22 wkpark Exp $
   
   function macro_MsgTrans($formatter,$value,$param=array()) {
       global $DBInfo;
  @@ -57,6 +57,8 @@
           $strs[$w]=$t;
       }
   
  +    if(getenv("OS")=="Windows_NT") $lang=substr($lang,0,2);
  +
       //print_r($strs);
       if (!empty($strs)) {
           $myMO = null;
  
  
  


wkpark      2008/11/28 09:09:23

  Modified:    .        wiki.php
  Log:
  fixed dynamic message translation for win32
  
  Revision  Changes    Path
  1.398     +5 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.397
  retrieving revision 1.398
  diff -u -r1.397 -r1.398
  --- wiki.php	27 Nov 2008 00:56:10 -0000	1.397
  +++ wiki.php	28 Nov 2008 00:09:22 -0000	1.398
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.397 2008/11/27 00:56:10 wkpark Exp $
  +// $Id: wiki.php,v 1.398 2008/11/28 00:09:22 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.397 $',1,-1);
  +$_revision = substr('$Revision: 1.398 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -4848,9 +4848,11 @@
   
     $domain='moniwiki';
     if ($Config['use_local_translation']) {
  +    $langdir=$lang;
  +    if(getenv("OS")=="Windows_NT") $langdir=substr($lang,0,2);
       # gettext cache workaround
       # http://kr2.php.net/manual/en/function.gettext.php#58310
  -    $ldir=$Config['cache_dir']."/locale/$lang/LC_MESSAGES/";
  +    $ldir=$Config['cache_dir']."/locale/$langdir/LC_MESSAGES/";
       if (file_exists($ldir.'md5sum')) {
         $tmp=file($ldir.'md5sum');
         if (file_exists($ldir.'moniwiki-'.$tmp[0].'.mo')) {
  
  
  


wkpark      2008/11/28 09:49:44

  Modified:    .        wiki.php
  Log:
  fix for without gettext() system
  
  Revision  Changes    Path
  1.399     +5 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.398
  retrieving revision 1.399
  diff -u -r1.398 -r1.399
  --- wiki.php	28 Nov 2008 00:09:22 -0000	1.398
  +++ wiki.php	28 Nov 2008 00:49:44 -0000	1.399
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.398 2008/11/28 00:09:22 wkpark Exp $
  +// $Id: wiki.php,v 1.399 2008/11/28 00:49:44 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.398 $',1,-1);
  +$_revision = substr('$Revision: 1.399 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -147,7 +147,8 @@
     $_locale = array();
   
     function gettext ($text) {
  -    global $_locale;
  +    global $_locale,$locale;
  +    $_locale=&$locale;
       if (!empty ($_locale[$text]))
         return $_locale[$text];
       return $text;
  @@ -4836,7 +4837,7 @@
   }
   
   function init_locale($lang) {
  -  global $Config,$_locale;
  +  global $Config,$_locale,$locale;
   if (isset($_locale)) {
     if (!@include_once('locale/'.$lang.'/LC_MESSAGES/moniwiki.php'))
       @include_once('locale/'.substr($lang,0,2).'/LC_MESSAGES/moniwiki.php');
  
  
  


wkpark      2008/11/28 11:22:11

  Modified:    locale/po fr.po ko.po moniwiki.pot
  Log:
  update
  
  Revision  Changes    Path
  1.19      +267 -219  moniwiki/locale/po/fr.po
  
  Index: fr.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/fr.po,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- fr.po	15 Dec 2007 05:56:26 -0000	1.18
  +++ fr.po	28 Nov 2008 02:22:11 -0000	1.19
  @@ -1,9 +1,10 @@
   # Serge Stinckwich <Serge.Stinckwich@info.unicaen.fr>, 2003
  -# 
  +#
   msgid ""
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1\n"
  -"POT-Creation-Date: 2007-12-15 14:20+0900\n"
  +"Report-Msgid-Bugs-To: \n"
  +"POT-Creation-Date: 2008-11-28 11:21+0900\n"
   "PO-Revision-Date: 2003-08-17 22:51+0900\n"
   "Last-Translator: Serge Stinckwich <Serge.Stinckwich@info.unicaen.fr>\n"
   "Language-Team: fr <fr@li.org>\n"
  @@ -12,18 +13,23 @@
   "Content-Transfer-Encoding: 8bit\n"
   
   # ../plugin/Attachment.php:24
  -#: ../plugin/Attachment.php:70 ../plugin/Attachment.php:232
  +#: ../plugin/Attachment.php:70 ../plugin/Attachment.php:293
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr "Tlcharger le nouvel attachement \"%s\""
   
   # ../plugin/OeKaki.php:118
  -#: ../plugin/Attachment.php:229
  -msgid "or paste a new picture"
  +#: ../plugin/Attachment.php:285
  +msgid "or paste a new png picture"
  +msgstr "or Crer un nouveau dessin"
  +
  +# ../plugin/OeKaki.php:118
  +#: ../plugin/Attachment.php:290
  +msgid "or draw a new gif picture"
   msgstr "or Crer un nouveau dessin"
   
   # ../plugin/Attachment.php:24
  -#: ../plugin/Attachment.php:235
  +#: ../plugin/Attachment.php:296
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
  @@ -59,7 +65,7 @@
   msgid "Error: No blog entry found!"
   msgstr ""
   
  -#: ../plugin/Blog.php:164 ../plugin/Blog.php:166 ../plugin/Comment.php:157
  +#: ../plugin/Blog.php:164 ../plugin/Blog.php:166 ../plugin/Comment.php:219
   msgid "Error: Don't make a clone!"
   msgstr ""
   
  @@ -107,12 +113,12 @@
   msgid "Title"
   msgstr "titre"
   
  -#: ../plugin/Blog.php:268 ../wikilib.php:869
  +#: ../plugin/Blog.php:268 ../wikilib.php:900
   msgid "GUI"
   msgstr ""
   
   # ../plugin/Blog.php:197
  -#: ../plugin/Blog.php:277 ../plugin/Comment.php:75
  +#: ../plugin/Blog.php:277 ../plugin/Comment.php:104
   msgid "Don't add a signature"
   msgstr "Ne pas ajouter de signature"
   
  @@ -155,7 +161,7 @@
   msgstr "%d commentaires"
   
   # ../plugin/processor/blog.php:70
  -#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:146
  +#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:206
   #: ../plugin/processor/blog.php:78
   msgid "Add comment"
   msgstr "Ajouter un commentaire"
  @@ -180,12 +186,12 @@
   msgstr ""
   
   # ../plugin/Draw.php:58
  -#: ../plugin/Clip.php:50 ../plugin/Draw.php:108
  +#: ../plugin/Clip.php:50 ../plugin/Draw.php:119
   msgid "Fatal error !"
   msgstr "Erreur fatale !"
   
   # ../plugin/Draw.php:61
  -#: ../plugin/Clip.php:53 ../plugin/Draw.php:111
  +#: ../plugin/Clip.php:53 ../plugin/Draw.php:122
   msgid "No filename given"
   msgstr "Aucun nom de fichier donn"
   
  @@ -198,112 +204,122 @@
   msgstr ""
   
   # ../plugin/processor/blog.php:78
  -#: ../plugin/Comment.php:59
  +#: ../plugin/Comment.php:87
   msgid "Comment"
   msgstr "commentaire"
   
   # ../wikilib.php:482
  -#: ../plugin/Comment.php:60 ../wikilib.php:865
  +#: ../plugin/Comment.php:88 ../wikilib.php:896
   msgid "Preview"
   msgstr "Prvisualisation"
   
   # ../plugin/rename.php:27
  -#: ../plugin/Comment.php:73
  +#: ../plugin/Comment.php:102
   msgid "Username"
   msgstr ""
   
   # ../wikilib.php:814
  -#: ../plugin/Comment.php:94
  +#: ../plugin/Comment.php:124
   msgid "Page is not writable"
   msgstr ""
   
   # ../wiki.php:3009
  -#: ../plugin/Comment.php:98
  +#: ../plugin/Comment.php:127
   msgid "You are not allowed to add a comment."
   msgstr ""
   
   # ../plugin/restore.php:27
  -#: ../plugin/Comment.php:99 ../plugin/Keywords.php:355
  +#: ../plugin/Comment.php:128 ../plugin/Keywords.php:372
   msgid "Page does not exists"
   msgstr ""
   
  -#: ../plugin/Comment.php:132 ../plugin/Gallery.php:171 ../wikilib.php:1356
  -#: ../wikilib.php:1501
  +#: ../plugin/Comment.php:163 ../plugin/userform.php:119
  +#: ../plugin/userform.php:182 ../plugin/userform.php:205
  +msgid "Invalid ticket !"
  +msgstr ""
  +
  +#: ../plugin/Comment.php:167 ../plugin/userform.php:121
  +#: ../plugin/userform.php:207
  +msgid "You need a ticket !"
  +msgstr ""
  +
  +#: ../plugin/Comment.php:189 ../plugin/Gallery.php:171 ../wikilib.php:1401
  +#: ../wikilib.php:1547
   msgid ""
   "Sorry, can not save page because some messages are blocked in this wiki."
   msgstr ""
   
   # ../wikilib.php:748 ../wikilib.php:777
  -#: ../plugin/Comment.php:137
  +#: ../plugin/Comment.php:195
   msgid "Preview comment"
   msgstr ""
   
   # ../plugin/Vote.php:109
  -#: ../plugin/Comment.php:259
  +#: ../plugin/Comment.php:326
   #, c-format
   msgid "%s is commented successfully"
   msgstr "Vote russi"
   
   # ../plugin/Vote.php:109
  -#: ../plugin/Comment.php:260
  +#: ../plugin/Comment.php:327
   msgid "Comment added successfully"
   msgstr ""
   
   # ../wiki.php:2211 ../wiki.php:2360
  -#: ../plugin/Diff.php:207 ../plugin/Info.php:203
  +#: ../plugin/Diff.php:207 ../plugin/Info.php:220
   msgid "No older revisions available"
   msgstr "Aucune rvision plus ancienne disponible"
   
   # ../wikilib.php:803
  -#: ../plugin/Diff.php:212 ../plugin/Info.php:209
  +#: ../plugin/Diff.php:212 ../plugin/Info.php:226
   msgid "Version info is not available in this wiki"
   msgstr ""
   
   # ../wiki.php:2338 ../wiki.php:2373 ../wikilib.php:770
  -#: ../plugin/Diff.php:223 ../wikilib.php:1488
  +#: ../plugin/Diff.php:223 ../wikilib.php:1534
   msgid "No difference found"
   msgstr "Aucune diffrence trouv"
   
   # ../wiki.php:2376
  -#: ../plugin/Diff.php:225
  +#: ../plugin/Diff.php:227
   msgid "Difference between versions"
   msgstr "Diffrence entre les versions"
   
   # ../wiki.php:2378
  -#: ../plugin/Diff.php:227 ../plugin/Diff.php:346
  +#: ../plugin/Diff.php:229 ../plugin/Diff.php:341
   #, c-format
   msgid "Difference between r%s and r%s"
   msgstr "Diffrence entre r%s et r%s"
   
   # ../wiki.php:2382
  -#: ../plugin/Diff.php:230 ../plugin/Diff.php:348
  +#: ../plugin/Diff.php:232 ../plugin/Diff.php:343
   #, c-format
   msgid "Difference between r%s and the current"
   msgstr "Diffrence entre r%s et la version courante"
   
   # ../locale/dummy.php:7
  -#: ../plugin/Diff.php:350
  +#: ../plugin/Diff.php:345
   msgid "latest changes"
   msgstr ""
   
   # ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
  -#: ../plugin/Draw.php:29 ../plugin/OeKaki.php:36
  +#: ../plugin/Draw.php:36
   msgid "Draw new picture"
   msgstr "Faire un nouveau dessin"
   
   # ../plugin/Draw.php:48
  -#: ../plugin/Draw.php:81 ../plugin/UploadFile.php:212
  +#: ../plugin/Draw.php:92 ../plugin/UploadFile.php:250
   #, c-format
   msgid "Fail to copy \"%s\" to \"%s\""
   msgstr "Impossible de copier \"%s\" vers \"%s\""
   
   # ../plugin/Draw.php:82
  -#: ../plugin/Draw.php:132
  +#: ../plugin/Draw.php:146
   msgid "Edit drawing"
   msgstr "diter le dessin"
   
   # ../plugin/Draw.php:91
  -#: ../plugin/Draw.php:141
  +#: ../plugin/Draw.php:155
   msgid "Edit new drawing"
   msgstr "diter un nouveau dessin"
   
  @@ -368,7 +384,7 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:44 ../plugin/VisualTour.php:124 ../wiki.php:3972
  +#: ../plugin/FullSearch.php:44 ../plugin/VisualTour.php:124 ../wiki.php:4203
   msgid "Refresh"
   msgstr ""
   
  @@ -382,39 +398,39 @@
   msgstr ""
   
   # ../wikilib.php:1483
  -#: ../plugin/FullSearch.php:133 ../wikilib.php:2563
  +#: ../plugin/FullSearch.php:133 ../wikilib.php:2614
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "Expression de recherche \"%s\" invalide"
   
   # ../plugin/TwinPages.php:20
  -#: ../plugin/Gallery.php:242 ../plugin/UploadedFiles.php:244
  +#: ../plugin/Gallery.php:242 ../plugin/UploadedFiles.php:257
   msgid "No files found"
   msgstr ""
   
   # ../plugin/processor/blog.php:70
  -#: ../plugin/Gallery.php:333 ../plugin/Gallery.php:346
  +#: ../plugin/Gallery.php:334 ../plugin/Gallery.php:347
   msgid "add comment"
   msgstr ""
   
   # ../plugin/processor/blog.php:78
  -#: ../plugin/Gallery.php:343
  +#: ../plugin/Gallery.php:344
   msgid "show comments"
   msgstr ""
   
   # ../wikilib.php:769
  -#: ../plugin/Gallery.php:392 ../plugin/Gallery.php:396 ../wikilib.php:1343
  -#: ../wikilib.php:1486
  +#: ../plugin/Gallery.php:393 ../plugin/Gallery.php:397 ../wikilib.php:1388
  +#: ../wikilib.php:1532
   #, c-format
   msgid "Go back or return to %s"
   msgstr "Revenir en arrire ou retourner  %s"
   
  -#: ../plugin/Gallery.php:393
  +#: ../plugin/Gallery.php:394
   msgid "Comments are edited"
   msgstr ""
   
   # ../plugin/Blog.php:137
  -#: ../plugin/Gallery.php:397
  +#: ../plugin/Gallery.php:398
   msgid "Comments is added"
   msgstr ""
   
  @@ -431,122 +447,122 @@
   msgid "Revision History"
   msgstr "Historique de rvision"
   
  -#: ../plugin/Info.php:57
  +#: ../plugin/Info.php:58
   msgid "Show all revisions"
   msgstr ""
   
  -#: ../plugin/Info.php:83
  +#: ../plugin/Info.php:91
   msgid "Yesterday"
   msgstr ""
   
  -#: ../plugin/Info.php:84
  +#: ../plugin/Info.php:92
   #, c-format
   msgid "%s days ago"
   msgstr ""
   
  -#: ../plugin/Info.php:86
  +#: ../plugin/Info.php:94
   #, c-format
   msgid "%s hours ago"
   msgstr ""
   
  -#: ../plugin/Info.php:88
  +#: ../plugin/Info.php:96
   #, c-format
   msgid "%s min ago"
   msgstr ""
   
  -#: ../plugin/Info.php:149
  +#: ../plugin/Info.php:166
   msgid "diff"
   msgstr ""
   
  -#: ../plugin/Keywords.php:313
  +#: ../plugin/Keywords.php:330
   msgid "hits"
   msgstr ""
   
  -#: ../plugin/Keywords.php:321
  +#: ../plugin/Keywords.php:338
   msgid "add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:324
  +#: ../plugin/Keywords.php:341
   msgid "Update keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:326
  +#: ../plugin/Keywords.php:343
   msgid "Add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:327
  +#: ../plugin/Keywords.php:344
   msgid "Add as common words"
   msgstr ""
   
  -#: ../plugin/Keywords.php:328
  +#: ../plugin/Keywords.php:345
   msgid "Unselect all"
   msgstr ""
   
  -#: ../plugin/Keywords.php:329
  +#: ../plugin/Keywords.php:346
   msgid "Suggest new Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:338
  +#: ../plugin/Keywords.php:355
   msgid "select language"
   msgstr ""
   
   # ../wiki.php:3009
  -#: ../plugin/Keywords.php:354
  +#: ../plugin/Keywords.php:371
   msgid "You are not able to add keywords."
   msgstr ""
   
   # ../wikilib.php:814
  -#: ../plugin/Keywords.php:368
  +#: ../plugin/Keywords.php:385
   #, c-format
   msgid "%s is not found."
   msgstr ""
   
  -#: ../plugin/Keywords.php:484
  +#: ../plugin/Keywords.php:501
   msgid "Common words are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:531
  +#: ../plugin/Keywords.php:548
   #, c-format
   msgid "Keywords for %s are updated"
   msgstr ""
   
   # ../plugin/quicklinks.php:38
  -#: ../plugin/Keywords.php:557
  +#: ../plugin/Keywords.php:574
   msgid "Keywords are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:559
  +#: ../plugin/Keywords.php:576
   msgid "There are no changes found"
   msgstr ""
   
  -#: ../plugin/Keywords.php:572
  +#: ../plugin/Keywords.php:589
   msgid "Update with these Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:592 ../plugin/Keywords.php:596
  +#: ../plugin/Keywords.php:609 ../plugin/Keywords.php:613
   msgid "alphabetically"
   msgstr ""
   
  -#: ../plugin/Keywords.php:593
  +#: ../plugin/Keywords.php:610
   msgid "by frequency"
   msgstr ""
   
  -#: ../plugin/Keywords.php:595
  +#: ../plugin/Keywords.php:612
   msgid "by size"
   msgstr ""
   
  -#: ../plugin/Keywords.php:601
  +#: ../plugin/Keywords.php:618
   #, c-format
   msgid "Keywords list %s (or %s)"
   msgstr ""
   
  -#: ../plugin/Keywords.php:606
  +#: ../plugin/Keywords.php:623
   #, c-format
   msgid "Select keywords for %s"
   msgstr ""
   
   # ../wikilib.php:672 ../wikilib.php:1472
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1184 ../wikilib.php:2552
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1230 ../wikilib.php:2603
   msgid "Use more specific text"
   msgstr "Utiliser un texte plus spcifique"
   
  @@ -589,6 +605,11 @@
   msgid "No Index page found"
   msgstr ""
   
  +# ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
  +#: ../plugin/OeKaki.php:36
  +msgid "Draw a new picture"
  +msgstr ""
  +
   # ../plugin/OeKaki.php:118
   #: ../plugin/OeKaki.php:118
   msgid "Create new picture"
  @@ -711,7 +732,7 @@
   msgstr "TwinPages de %s"
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../plugin/TwinPages.php:19 ../wiki.php:4700
  +#: ../plugin/TwinPages.php:19 ../wiki.php:4993
   msgid "See [TwinPages]: "
   msgstr "Voir [TwinPages]: "
   
  @@ -721,75 +742,94 @@
   msgstr "Aucune TwinPages trouv"
   
   # ../wikilib.php:519
  -#: ../plugin/UploadFile.php:131
  +#: ../plugin/UploadFile.php:147 ../plugin/UploadFile.php:161
  +#, c-format
  +msgid "The %s type of %s is not allowed to upload"
  +msgstr ""
  +
  +# ../wikilib.php:519
  +#: ../plugin/UploadFile.php:163
   #, c-format
   msgid "%s is not allowed to upload"
   msgstr "%s n'est pas une action valide"
   
  -#: ../plugin/UploadFile.php:180
  +#: ../plugin/UploadFile.php:218
   #, c-format
   msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
   msgstr ""
   
  -#: ../plugin/UploadFile.php:213
  +#: ../plugin/UploadFile.php:251
   msgid "Please check your php.ini setting"
   msgstr ""
   
   # ../wikilib.php:887
  -#: ../plugin/UploadFile.php:223
  +#: ../plugin/UploadFile.php:261
   #, c-format
   msgid "File \"%s\" is uploaded successfully"
   msgstr ""
   
   # ../wikilib.php:887
  -#: ../plugin/UploadFile.php:262
  +#: ../plugin/UploadFile.php:300
   msgid "Files are uploaded successfully"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:306
  +#: ../plugin/UploadFile.php:344
   msgid "Replace original file"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:307
  +#: ../plugin/UploadFile.php:345
   msgid "Rename if it already exist"
   msgstr ""
   
   # ../plugin/rename.php:27
  -#: ../plugin/UploadFile.php:312 ../plugin/rename.php:69
  +#: ../plugin/UploadFile.php:350 ../plugin/rename.php:69
   msgid "Rename"
   msgstr "Renommer"
   
   # ../plugin/minilogin.php:30
  -#: ../plugin/UploadFile.php:320
  +#: ../plugin/UploadFile.php:358
   #, c-format
   msgid "or %s."
   msgstr "ou %s"
   
  -#: ../plugin/UploadFile.php:320
  +#: ../plugin/UploadFile.php:358
   msgid "Upload files"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:281
  +# ../plugin/rename.php:27
  +#: ../plugin/UploadedFiles.php:271
  +msgid "File name"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:272
  +msgid "Size"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:273
  +msgid "Date"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:316
   msgid "Next page &raquo;"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:283
  +#: ../plugin/UploadedFiles.php:318
   msgid "&laquo; First page"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:360
  +#: ../plugin/UploadedFiles.php:409
   #, c-format
   msgid "Total %d files"
   msgstr ""
   
   # ../plugin/rename.php:36
  -#: ../plugin/UploadedFiles.php:364 ../plugin/rename.php:77 ../wikilib.php:1034
  -#: ../wikilib.php:1900
  +#: ../plugin/UploadedFiles.php:414 ../plugin/rename.php:77 ../wikilib.php:1069
  +#: ../wikilib.php:1946
   msgid "Password"
   msgstr "Mot de passe"
   
   # ../wikilib.php:550
  -#: ../plugin/UploadedFiles.php:365 ../wikilib.php:1012
  +#: ../plugin/UploadedFiles.php:415 ../wikilib.php:1047
   msgid "Delete selected files"
   msgstr "Effacer les fichiers slectionns"
   
  @@ -825,7 +865,7 @@
   msgid "Voted successfully"
   msgstr "Vote russi"
   
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2305
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2356
   msgid "Others"
   msgstr ""
   
  @@ -931,22 +971,22 @@
   msgstr "PrfrencesUtilisateur"
   
   # ../plugin/man_get.php:13
  -#: ../plugin/man_get.php:14
  +#: ../plugin/man_get.php:17
   msgid "No manpage selected"
   msgstr "Aucune page de manuel slectionn"
   
   # ../plugin/man_get.php:23
  -#: ../plugin/man_get.php:40
  +#: ../plugin/man_get.php:43
   msgid "No manpage found"
   msgstr "Aucune page de manuel trouv"
   
   # ../locale/dummy.php:6 ../wiki.php:2553
  -#: ../plugin/man_get.php:112
  +#: ../plugin/man_get.php:115
   msgid "Edit"
   msgstr ""
   
   # ../plugin/minilogin.php:22 ../wikilib.php:1076
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1976
  +#: ../plugin/minilogin.php:22 ../wikilib.php:2022
   msgid "Login or Join"
   msgstr "Se connecter ou se joindre "
   
  @@ -957,17 +997,17 @@
   msgstr "%s ou %s"
   
   # ../wiki.php:850
  -#: ../plugin/msgfmt.php:74 ../plugin/msgfmt.php:152
  +#: ../plugin/msgfmt.php:75 ../plugin/msgfmt.php:153
   #, c-format
   msgid "Translation of %s"
   msgstr ""
   
   # ../wikilib.php:887
  -#: ../plugin/msgfmt.php:83
  +#: ../plugin/msgfmt.php:84
   msgid "Translations are successfully updated."
   msgstr ""
   
  -#: ../plugin/msgfmt.php:85
  +#: ../plugin/msgfmt.php:86
   msgid "Fail to save translations."
   msgstr ""
   
  @@ -1135,7 +1175,7 @@
   msgstr "Seulement le WikiMaster peut renommer cette page"
   
   # ../plugin/rename.php:39 ../wikilib.php:588
  -#: ../plugin/rename.php:79 ../wikilib.php:1072
  +#: ../plugin/rename.php:79 ../wikilib.php:1115
   msgid "with revision history"
   msgstr "avec l'historique de rvision"
   
  @@ -1440,19 +1480,10 @@
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../plugin/userform.php:108 ../wikilib.php:2046
  +#: ../plugin/userform.php:108 ../wikilib.php:2092
   msgid "E-mail new password"
   msgstr ""
   
  -#: ../plugin/userform.php:119 ../plugin/userform.php:182
  -#: ../plugin/userform.php:205
  -msgid "Invalid ticket !"
  -msgstr ""
  -
  -#: ../plugin/userform.php:121 ../plugin/userform.php:207
  -msgid "You need a ticket !"
  -msgstr ""
  -
   # ../wikilib.php:1082
   #: ../plugin/userform.php:153
   msgid "New password confirmation"
  @@ -1540,8 +1571,8 @@
   msgid "You are not allowed to register on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:244 ../plugin/userform.php:409 ../wiki.php:4654
  -#: ../wiki.php:4665
  +#: ../plugin/userform.php:244 ../plugin/userform.php:409 ../wiki.php:4947
  +#: ../wiki.php:4958
   msgid "Please contact WikiMasters"
   msgstr ""
   
  @@ -1645,159 +1676,170 @@
   msgstr ""
   
   # ../wiki.php:850
  -#: ../wiki.php:1204
  +#: ../wiki.php:1235
   #, c-format
   msgid "Rename %s to %s"
   msgstr "Renommer %s en %s"
   
   # ../wikilib.php:803
  -#: ../wiki.php:1565
  +#: ../wiki.php:1654
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
   # ../plugin/restore.php:27
  -#: ../wiki.php:1575
  +#: ../wiki.php:1664
   msgid "File does not exist"
   msgstr "Erreur : l'archive n'existe pas"
   
  +# ../plugin/restore.php:27
  +#: ../wiki.php:2007
  +#, c-format
  +msgid "File '%s' does not exist."
  +msgstr ""
  +
   # ../wikilib.php:521
  -#: ../wiki.php:2646 ../wiki.php:2657 ../wiki.php:4858
  +#: ../wiki.php:2831 ../wiki.php:2842 ../wiki.php:5173
   msgid "Invalid ajax action."
   msgstr ""
   
  +#: ../wiki.php:3255
  +msgid "Tags:"
  +msgstr ""
  +
   # ../wiki.php:1824
  -#: ../wiki.php:3072
  +#: ../wiki.php:3283
   #, c-format
   msgid "See %s"
   msgstr "Voir %s"
   
   # ../wiki.php:1824
  -#: ../wiki.php:3072
  +#: ../wiki.php:3283
  +#, c-format
   msgid "TwinPages"
   msgstr ""
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../wiki.php:3077
  +#: ../wiki.php:3288
   msgid "See [TwinPages]:"
   msgstr "Voir [TwinPages]: "
   
  -#: ../wiki.php:3443
  +#: ../wiki.php:3657
   msgid "edit"
   msgstr ""
   
  -#: ../wiki.php:3616
  +#: ../wiki.php:3833
   msgid "Sister Sites Index"
   msgstr ""
   
   # ../locale/dummy.php:6 ../wiki.php:2553
  -#: ../wiki.php:3968 ../locale/dummy.php:6
  +#: ../wiki.php:4199 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "ditionTexte"
   
   # ../wiki.php:2555
  -#: ../wiki.php:3970
  +#: ../wiki.php:4201
   msgid "NotEditable"
   msgstr "Pasditable"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wiki.php:3974 ../locale/dummy.php:6
  +#: ../wiki.php:4205 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "MontrePage"
   
   # ../locale/dummy.php:3 ../locale/dummy.php:5 ../wiki.php:2558
  -#: ../wiki.php:3975 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4206 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "TrouvePage"
   
  -#: ../wiki.php:4348
  +#: ../wiki.php:4586
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:4653
  +#: ../wiki.php:4946
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:4664
  +#: ../wiki.php:4957
   msgid "You are blocked in this wiki"
   msgstr ""
   
   # ../wiki.php:2945 ../wiki.php:2948
  -#: ../wiki.php:4702 ../wiki.php:4711 ../wikilib.php:1277
  +#: ../wiki.php:4995 ../wiki.php:5004 ../wikilib.php:1323
   msgid "Create this page"
   msgstr "Crer cette page"
   
   # ../wikilib.php:816
  -#: ../wiki.php:4713
  +#: ../wiki.php:5006
   #, c-format
   msgid "%s has saved revisions"
   msgstr "%s est sauvegard"
   
   # ../wiki.php:2950
  -#: ../wiki.php:4714 ../wiki.php:4721
  +#: ../wiki.php:5007 ../wiki.php:5014
   #, c-format
   msgid "%s or click %s to fullsearch this page.\n"
   msgstr ""
   
   # ../wiki.php:2950
  -#: ../wiki.php:4714 ../wiki.php:4721 ../wikilib.php:1279
  +#: ../wiki.php:5007 ../wiki.php:5014 ../wikilib.php:1325
   msgid "title"
   msgstr "titre"
   
  -#: ../wiki.php:4716
  +#: ../wiki.php:5009
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr ""
   
  -#: ../wiki.php:4719
  +#: ../wiki.php:5012
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr ""
   
   # ../wiki.php:2956
  -#: ../wiki.php:4731
  +#: ../wiki.php:5024
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr "%s ou alternativement, utiliser un de ces modles de page :\n"
   
  -#: ../wiki.php:4734
  +#: ../wiki.php:5027
   msgid "You have no templates"
   msgstr ""
   
   # ../wikilib.php:427
  -#: ../wiki.php:4736
  +#: ../wiki.php:5029
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
   
  -#: ../wiki.php:4747
  +#: ../wiki.php:5040
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
   # ../wikilib.php:521
  -#: ../wiki.php:4860
  +#: ../wiki.php:5175
   msgid "Invalid macro action."
   msgstr ""
   
   # ../wiki.php:3009
  -#: ../wiki.php:4870
  +#: ../wiki.php:5185
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "Vous n'tes pas autoris  '%s'"
   
   # ../wiki.php:3021
  -#: ../wiki.php:4890
  +#: ../wiki.php:5205
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "Impossible de pouvoir \"%s\" !"
   
   # ../wiki.php:3024
  -#: ../wiki.php:4893
  +#: ../wiki.php:5208
   msgid "Please enter the valid password"
   msgstr "Merci d'entrer un mot de passe valide"
   
   # ../wikilib.php:368
  -#: ../wikilib.php:629
  +#: ../wikilib.php:636
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -1829,170 +1871,176 @@
   "deux colonnes ||;\n"
   "Les espaces aprs un tableau ou un titre ne sont pas autoriss.<br />\n"
   
  -#: ../wikilib.php:670
  +# ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
  +# c-format
  +#: ../wikilib.php:673
  +msgid "You are not allowed to edit this page !"
  +msgstr ""
  +
  +#: ../wikilib.php:679
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
   # ../wikilib.php:425
  -#: ../wikilib.php:763
  +#: ../wikilib.php:785
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   "Utiliser un des modles de pages qui suivent pour une premirecration :\n"
   
   # ../wikilib.php:427
  -#: ../wikilib.php:765
  +#: ../wikilib.php:787
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr ""
   
  -#: ../wikilib.php:769
  +#: ../wikilib.php:791
   msgid "Merge"
   msgstr ""
   
  -#: ../wikilib.php:770
  +#: ../wikilib.php:792
   msgid "Merge manually"
   msgstr ""
   
  -#: ../wikilib.php:771
  +#: ../wikilib.php:793
   msgid "Ignore conflicts"
   msgstr ""
   
   # ../wikilib.php:445
  -#: ../wikilib.php:796
  +#: ../wikilib.php:820
   msgid "ReduceEditor"
   msgstr "Rduirediteur"
   
  -#: ../wikilib.php:797
  +#: ../wikilib.php:821
   msgid "EnlargeEditor"
   msgstr ""
   
   # ../locale/dummy.php:6 ../wikilib.php:448
  -#: ../wikilib.php:801 ../locale/dummy.php:6
  +#: ../wikilib.php:825 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
   # ../wikilib.php:449
  -#: ../wikilib.php:803
  +#: ../wikilib.php:827
   msgid "HelpOnEditing"
   msgstr ""
   
   # ../wikilib.php:462
  -#: ../wikilib.php:832
  +#: ../wikilib.php:859
   #, c-format
   msgid "Describe %s here"
   msgstr "Dcrire %s ici"
   
   # ../wikilib.php:476
  -#: ../wikilib.php:849
  +#: ../wikilib.php:879
   msgid "--Select Category--"
   msgstr "-- Slectionner une catgorie"
   
  -#: ../wikilib.php:859
  +#: ../wikilib.php:889
   msgid "Minor edit"
   msgstr ""
   
  +# ../wikilib.php:484
  +#: ../wikilib.php:893
  +msgid "Summary of Change"
  +msgstr "Sommaire des modifications"
  +
   # ../wikilib.php:443
  -#: ../wikilib.php:867
  +#: ../wikilib.php:898
   msgid "Skip to preview"
   msgstr "Aller  la prvisualisation"
   
   # ../wikilib.php:483 ../wikilib.php:1079
  -#: ../wikilib.php:874 ../wikilib.php:1979 ../wikilib.php:2033
  +#: ../wikilib.php:908 ../wikilib.php:2025 ../wikilib.php:2079
   msgid "Save"
   msgstr "Sauvegarder"
   
  -# ../wikilib.php:484
  -#: ../wikilib.php:875
  -msgid "Summary of Change"
  -msgstr "Sommaire des modifications"
  -
   # ../wikilib.php:517
  -#: ../wikilib.php:948
  +#: ../wikilib.php:981
   msgid "406 Not Acceptable"
   msgstr ""
   
   # ../wikilib.php:519
  -#: ../wikilib.php:953
  +#: ../wikilib.php:986
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s n'est pas une action valide"
   
   # ../wikilib.php:521
  -#: ../wikilib.php:955
  +#: ../wikilib.php:988
   msgid "Is it valid action ?"
   msgstr "Est-ce que c'est une action valide ?"
   
   # ../wikilib.php:540
  -#: ../wikilib.php:1000
  +#: ../wikilib.php:1035
   #, c-format
   msgid "File '%s' is deleted"
   msgstr "Le fichier '%s' est effac"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:1002
  +#: ../wikilib.php:1037
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr "Impossible d'effacer '%s'"
   
   # ../wikilib.php:545
  -#: ../wikilib.php:1007
  +#: ../wikilib.php:1042
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr "Le rpertoire '%s' est effac"
   
   # ../wikilib.php:547
  -#: ../wikilib.php:1009
  +#: ../wikilib.php:1044
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr "Impossible d'effacer le rpertoire '%s'"
   
   # ../wikilib.php:557 ../wikilib.php:559
  -#: ../wikilib.php:1019 ../wikilib.php:1039
  +#: ../wikilib.php:1054 ../wikilib.php:1074
   msgid "No files are selected !"
   msgstr "Aucun fichier n'est slectionn !"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:1032
  +#: ../wikilib.php:1067
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
   # ../locale/dummy.php:5
  -#: ../wikilib.php:1035
  +#: ../wikilib.php:1070
   msgid "Delete"
   msgstr ""
   
   # ../wikilib.php:550
  -#: ../wikilib.php:1036
  +#: ../wikilib.php:1071
   msgid "Delete selected file"
   msgstr ""
   
   # ../wikilib.php:575
  -#: ../wikilib.php:1057
  +#: ../wikilib.php:1092
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr "\"%s\" est effac !"
   
   # ../wikilib.php:581
  -#: ../wikilib.php:1064
  +#: ../wikilib.php:1107
   msgid "Please delete this file manually."
   msgstr "Merci d'effacer ce fichier manuellement."
   
   # ../wikilib.php:583
  -#: ../wikilib.php:1066
  +#: ../wikilib.php:1109
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "Effacer \"%s\" ?"
   
   # ../plugin/minilogin.php:30
  -#: ../wikilib.php:1116
  +#: ../wikilib.php:1162
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
   # ../wiki.php:2950
  -#: ../wikilib.php:1279
  +#: ../wikilib.php:1325
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
  @@ -2000,119 +2048,119 @@
   "page.\n"
   
   # ../wikilib.php:743
  -#: ../wikilib.php:1331 ../wikilib.php:1433
  +#: ../wikilib.php:1376 ../wikilib.php:1477
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "Quelqu'un a sauvegard la page tandis que vous ditiez %s"
   
  -#: ../wikilib.php:1337
  +#: ../wikilib.php:1382
   msgid "Section edit is not valid for non-exists page."
   msgstr ""
   
   # ../wikilib.php:803
  -#: ../wikilib.php:1370 ../wikilib.php:1547
  +#: ../wikilib.php:1415 ../wikilib.php:1593
   msgid "mail does not supported by default."
   msgstr "La messagerie n'est pas support par dfaut."
   
   # ../wikilib.php:807
  -#: ../wikilib.php:1374 ../wikilib.php:1551
  +#: ../wikilib.php:1419 ../wikilib.php:1597
   msgid "Sent notification mail."
   msgstr "Des notifications par messagerie ont t envoyes."
   
   # ../wikilib.php:809
  -#: ../wikilib.php:1376 ../wikilib.php:1553
  +#: ../wikilib.php:1421 ../wikilib.php:1599
   msgid "No subscribers found."
   msgstr "Aucun abonn trouv."
   
   # ../wikilib.php:814
  -#: ../wikilib.php:1381 ../wikilib.php:1558
  +#: ../wikilib.php:1426 ../wikilib.php:1604
   #, c-format
   msgid "%s is not editable"
   msgstr "%s n'est pas ditable"
   
   # ../wikilib.php:816
  -#: ../wikilib.php:1383 ../wikilib.php:1560
  +#: ../wikilib.php:1428 ../wikilib.php:1606
   #, c-format
   msgid "%s is saved"
   msgstr "%s est sauvegard"
   
   # ../wikilib.php:734
  -#: ../wikilib.php:1424
  +#: ../wikilib.php:1468
   msgid "Goto Editor"
   msgstr "Aller  l'diteur"
   
  -#: ../wikilib.php:1438
  +#: ../wikilib.php:1482
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr ""
   
   # ../plugin/Vote.php:109
  -#: ../wikilib.php:1439
  +#: ../wikilib.php:1483
   #, c-format
   msgid "%s is merged successfully"
   msgstr ""
   
  -#: ../wikilib.php:1443
  +#: ../wikilib.php:1487
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1444
  +#: ../wikilib.php:1488
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr ""
   
  -#: ../wikilib.php:1445
  +#: ../wikilib.php:1489
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1446
  +#: ../wikilib.php:1490
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1451
  +#: ../wikilib.php:1495
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr ""
   
   # ../wikilib.php:581
  -#: ../wikilib.php:1452
  +#: ../wikilib.php:1496
   msgid "Please resolve conflicts manually."
   msgstr ""
   
  -#: ../wikilib.php:1455
  +#: ../wikilib.php:1499
   #, c-format
   msgid "Force merging for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1456
  +#: ../wikilib.php:1500
   msgid "Please be careful, you could damage useful information."
   msgstr ""
   
   # ../wikilib.php:755
  -#: ../wikilib.php:1468
  +#: ../wikilib.php:1514
   msgid "Conflict error!"
   msgstr "Erreur de conflit !"
   
   # ../wikilib.php:748 ../wikilib.php:777
  -#: ../wikilib.php:1507
  +#: ../wikilib.php:1553
   #, c-format
   msgid "Preview of %s"
   msgstr "Prvisualisation de %s"
   
   # ../wikilib.php:838
  -#: ../wikilib.php:1592
  +#: ../wikilib.php:1638
   msgid "Nobody subscribed to this page."
   msgstr "Personne n'est abonn  cette page, aucun mail envoy"
   
   # ../wikilib.php:860
  -#: ../wikilib.php:1611
  +#: ../wikilib.php:1657
   #, c-format
   msgid "%s page is modified"
   msgstr "la page %s est modifi"
   
   # ../wikilib.php:870
  -#: ../wikilib.php:1640
  +#: ../wikilib.php:1686
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
  @@ -2123,101 +2171,101 @@
   "\n"
   
   # ../wikilib.php:883
  -#: ../wikilib.php:1653
  +#: ../wikilib.php:1699
   msgid "Send notification mails to all subscribers"
   msgstr "Envoyez un mail de notification  tous les abonns"
   
   # ../wikilib.php:887
  -#: ../wikilib.php:1658
  +#: ../wikilib.php:1704
   msgid "Mails are sent successfully"
   msgstr "Mail envoy avec succs"
   
   # ../wikilib.php:888
  -#: ../wikilib.php:1659
  +#: ../wikilib.php:1705
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr "un mail a t envoy  '%s'"
   
   # ../wiki.php:3021
  -#: ../wikilib.php:1661
  +#: ../wikilib.php:1707
   msgid "Fail to send mail"
   msgstr ""
   
   # ../wikilib.php:803
  -#: ../wikilib.php:1672
  +#: ../wikilib.php:1718
   msgid "This wiki does not support sendmail"
   msgstr ""
   
   # ../wikilib.php:1483
  -#: ../wikilib.php:1770
  +#: ../wikilib.php:1816
   msgid "Invalid regular expression !"
   msgstr ""
   
  -#: ../wikilib.php:1794
  +#: ../wikilib.php:1840
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:1797
  +#: ../wikilib.php:1843
   msgid "Infinite loop possible!"
   msgstr ""
   
   # ../plugin/login.php:26 ../wikilib.php:1051
  -#: ../wikilib.php:1916
  +#: ../wikilib.php:1962
   msgid "Login"
   msgstr "Se connecter"
   
  -#: ../wikilib.php:1917
  +#: ../wikilib.php:1963
   msgid "OpenID"
   msgstr ""
   
  -#: ../wikilib.php:1929 ../wikilib.php:2051
  +#: ../wikilib.php:1975 ../wikilib.php:2097
   msgid "ID"
   msgstr ""
   
   # ../wikilib.php:1070
  -#: ../wikilib.php:1959 ../wikilib.php:2044
  +#: ../wikilib.php:2005 ../wikilib.php:2090
   msgid "Make profile"
   msgstr "Faire un profil"
   
   # ../wikilib.php:1071
  -#: ../wikilib.php:1961
  +#: ../wikilib.php:2007
   msgid "password again"
   msgstr "mot de passe de nouveau"
   
  -#: ../wikilib.php:1963 ../wikilib.php:2012
  +#: ../wikilib.php:2009 ../wikilib.php:2058
   msgid "Mail"
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../wikilib.php:1985
  +#: ../wikilib.php:2031
   msgid "New password"
   msgstr "Nouveau mot de passe"
   
  -#: ../wikilib.php:1990
  +#: ../wikilib.php:2036
   msgid "Nickname"
   msgstr ""
   
  -#: ../wikilib.php:2013
  +#: ../wikilib.php:2059
   msgid "Time Zone"
   msgstr ""
   
   # ../wikilib.php:1088
  -#: ../wikilib.php:2022
  +#: ../wikilib.php:2068
   msgid "logout"
   msgstr "se dconnecter"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wikilib.php:2306
  +#: ../wikilib.php:2357
   msgid "Show all"
   msgstr ""
   
   # ../locale/dummy.php:4
  -#: ../wikilib.php:2448
  +#: ../wikilib.php:2499
   msgid "Contents"
   msgstr ""
   
   # ../wikilib.php:1479
  -#: ../wikilib.php:2559
  +#: ../wikilib.php:2610
   #, c-format
   msgid "Title search for \"%s\""
   msgstr "Recherche de titre pour \"%s\""
  
  
  
  1.24      +261 -221  moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- ko.po	15 Dec 2007 05:56:26 -0000	1.23
  +++ ko.po	28 Nov 2008 02:22:11 -0000	1.24
  @@ -1,28 +1,32 @@
   # MoniWiki message file
  -# Copyright (C) 2003-2006 Free Software Foundation, Inc.
  -# Won-kyu Park <wkpark@kldp.org>, 2003-2006.
  +# Copyright (C) 2003-2008 Won-kyu Park <wkpark@kldp.org>, 2003-2008.
   #
   msgid ""
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1.3\n"
  -"POT-Creation-Date: 2007-12-15 14:20+0900\n"
  -"PO-Revision-Date: 2003-04-29 19:00+0900\n"
  +"Report-Msgid-Bugs-To: \n"
  +"POT-Creation-Date: 2008-11-28 11:21+0900\n"
  +"PO-Revision-Date: 2008-11-28 11:20+0900\n"
   "Last-Translator: Won-kyu Park <wkpark@kldp.org>\n"
   "Language-Team: ko <ko@li.org>\n"
   "MIME-Version: 1.0\n"
   "Content-Type: text/plain; charset=EUC-KR\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  -#: ../plugin/Attachment.php:70 ../plugin/Attachment.php:232
  +#: ../plugin/Attachment.php:70 ../plugin/Attachment.php:293
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr ""
   
  -#: ../plugin/Attachment.php:229
  -msgid "or paste a new picture"
  +#: ../plugin/Attachment.php:285
  +msgid "or paste a new png picture"
   msgstr "Ȥ  ׸ ̱"
   
  -#: ../plugin/Attachment.php:235
  +#: ../plugin/Attachment.php:290
  +msgid "or draw a new gif picture"
  +msgstr "Ȥ  ׸ ׸"
  +
  +#: ../plugin/Attachment.php:296
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
  @@ -54,7 +58,7 @@
   msgid "Error: No blog entry found!"
   msgstr ""
   
  -#: ../plugin/Blog.php:164 ../plugin/Blog.php:166 ../plugin/Comment.php:157
  +#: ../plugin/Blog.php:164 ../plugin/Blog.php:166 ../plugin/Comment.php:219
   msgid "Error: Don't make a clone!"
   msgstr ":   !"
   
  @@ -95,11 +99,11 @@
   msgid "Title"
   msgstr ""
   
  -#: ../plugin/Blog.php:268 ../wikilib.php:869
  +#: ../plugin/Blog.php:268 ../wikilib.php:900
   msgid "GUI"
   msgstr ""
   
  -#: ../plugin/Blog.php:277 ../plugin/Comment.php:75
  +#: ../plugin/Blog.php:277 ../plugin/Comment.php:104
   msgid "Don't add a signature"
   msgstr " ʱ"
   
  @@ -135,7 +139,7 @@
   msgid "%d comments"
   msgstr " %d"
   
  -#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:146
  +#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:206
   #: ../plugin/processor/blog.php:78
   msgid "Add comment"
   msgstr " ޱ"
  @@ -156,11 +160,11 @@
   msgid "Paste a new picture"
   msgstr " ׸ ̱"
   
  -#: ../plugin/Clip.php:50 ../plugin/Draw.php:108
  +#: ../plugin/Clip.php:50 ../plugin/Draw.php:119
   msgid "Fatal error !"
   msgstr ""
   
  -#: ../plugin/Clip.php:53 ../plugin/Draw.php:111
  +#: ../plugin/Clip.php:53 ../plugin/Draw.php:122
   msgid "No filename given"
   msgstr " ̸ "
   
  @@ -172,93 +176,103 @@
   msgid "Cut & Paste a Clipboard Image"
   msgstr "Ŭ ̹ ߸ ̱"
   
  -#: ../plugin/Comment.php:59
  +#: ../plugin/Comment.php:87
   msgid "Comment"
   msgstr " ޱ"
   
  -#: ../plugin/Comment.php:60 ../wikilib.php:865
  +#: ../plugin/Comment.php:88 ../wikilib.php:896
   msgid "Preview"
   msgstr "̸"
   
  -#: ../plugin/Comment.php:73
  +#: ../plugin/Comment.php:102
   msgid "Username"
   msgstr "̸"
   
  -#: ../plugin/Comment.php:94
  +#: ../plugin/Comment.php:124
   msgid "Page is not writable"
   msgstr "  ϴ"
   
  -#: ../plugin/Comment.php:98
  +#: ../plugin/Comment.php:127
   msgid "You are not allowed to add a comment."
   msgstr "Comment  ʽϴ."
   
  -#: ../plugin/Comment.php:99 ../plugin/Keywords.php:355
  +#: ../plugin/Comment.php:128 ../plugin/Keywords.php:372
   msgid "Page does not exists"
   msgstr " ϴ"
   
  -#: ../plugin/Comment.php:132 ../plugin/Gallery.php:171 ../wikilib.php:1356
  -#: ../wikilib.php:1501
  +#: ../plugin/Comment.php:163 ../plugin/userform.php:119
  +#: ../plugin/userform.php:182 ../plugin/userform.php:205
  +msgid "Invalid ticket !"
  +msgstr ""
  +
  +#: ../plugin/Comment.php:167 ../plugin/userform.php:121
  +#: ../plugin/userform.php:207
  +msgid "You need a ticket !"
  +msgstr ""
  +
  +#: ../plugin/Comment.php:189 ../plugin/Gallery.php:171 ../wikilib.php:1401
  +#: ../wikilib.php:1547
   msgid ""
   "Sorry, can not save page because some messages are blocked in this wiki."
   msgstr "˼մϴ. Ư ޽ Ǿ    ϴ."
   
  -#: ../plugin/Comment.php:137
  +#: ../plugin/Comment.php:195
   msgid "Preview comment"
   msgstr "̸"
   
  -#: ../plugin/Comment.php:259
  +#: ../plugin/Comment.php:326
   #, c-format
   msgid "%s is commented successfully"
   msgstr "%s   ÷Ǿϴ"
   
  -#: ../plugin/Comment.php:260
  +#: ../plugin/Comment.php:327
   msgid "Comment added successfully"
   msgstr " ÷Ǿϴ"
   
  -#: ../plugin/Diff.php:207 ../plugin/Info.php:203
  +#: ../plugin/Diff.php:207 ../plugin/Info.php:220
   msgid "No older revisions available"
   msgstr "  ϴ"
   
  -#: ../plugin/Diff.php:212 ../plugin/Info.php:209
  +#: ../plugin/Diff.php:212 ../plugin/Info.php:226
   msgid "Version info is not available in this wiki"
   msgstr ""
   
  -#: ../plugin/Diff.php:223 ../wikilib.php:1488
  +#: ../plugin/Diff.php:223 ../wikilib.php:1534
   msgid "No difference found"
   msgstr "ȭ ϴ"
   
  -#: ../plugin/Diff.php:225
  +#: ../plugin/Diff.php:227
   msgid "Difference between versions"
   msgstr " "
   
  -#: ../plugin/Diff.php:227 ../plugin/Diff.php:346
  +#: ../plugin/Diff.php:229 ../plugin/Diff.php:341
   #, c-format
   msgid "Difference between r%s and r%s"
   msgstr "r%s r%s "
   
  -#: ../plugin/Diff.php:230 ../plugin/Diff.php:348
  +#: ../plugin/Diff.php:232 ../plugin/Diff.php:343
   #, c-format
   msgid "Difference between r%s and the current"
   msgstr "r%s   "
   
  -#: ../plugin/Diff.php:350
  +#: ../plugin/Diff.php:345
   msgid "latest changes"
   msgstr "ֱ ٲ"
   
  -#: ../plugin/Draw.php:29 ../plugin/OeKaki.php:36
  +#: ../plugin/Draw.php:36
   msgid "Draw new picture"
   msgstr " ׸ "
   
  -#: ../plugin/Draw.php:81 ../plugin/UploadFile.php:212
  +#: ../plugin/Draw.php:92 ../plugin/UploadFile.php:250
   #, c-format
   msgid "Fail to copy \"%s\" to \"%s\""
   msgstr ""
   
  -#: ../plugin/Draw.php:132
  +#: ../plugin/Draw.php:146
   msgid "Edit drawing"
   msgstr "׸ ׸"
   
  -#: ../plugin/Draw.php:141
  +#: ../plugin/Draw.php:155
   msgid "Edit new drawing"
   msgstr " ׸ ׸"
   
  @@ -316,7 +330,7 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:44 ../plugin/VisualTour.php:124 ../wiki.php:3972
  +#: ../plugin/FullSearch.php:44 ../plugin/VisualTour.php:124 ../wiki.php:4203
   msgid "Refresh"
   msgstr ""
   
  @@ -329,34 +343,34 @@
   msgid "Empty expression"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:133 ../wikilib.php:2563
  +#: ../plugin/FullSearch.php:133 ../wikilib.php:2614
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "߸ ã ǥ \"%s\""
   
  -#: ../plugin/Gallery.php:242 ../plugin/UploadedFiles.php:244
  +#: ../plugin/Gallery.php:242 ../plugin/UploadedFiles.php:257
   msgid "No files found"
   msgstr " ϴ"
   
  -#: ../plugin/Gallery.php:333 ../plugin/Gallery.php:346
  +#: ../plugin/Gallery.php:334 ../plugin/Gallery.php:347
   msgid "add comment"
   msgstr " ޱ"
   
  -#: ../plugin/Gallery.php:343
  +#: ../plugin/Gallery.php:344
   msgid "show comments"
   msgstr " "
   
  -#: ../plugin/Gallery.php:392 ../plugin/Gallery.php:396 ../wikilib.php:1343
  -#: ../wikilib.php:1486
  +#: ../plugin/Gallery.php:393 ../plugin/Gallery.php:397 ../wikilib.php:1388
  +#: ../wikilib.php:1532
   #, c-format
   msgid "Go back or return to %s"
   msgstr "ڷ Ȥ %s() "
   
  -#: ../plugin/Gallery.php:393
  +#: ../plugin/Gallery.php:394
   msgid "Comments are edited"
   msgstr ""
   
  -#: ../plugin/Gallery.php:397
  +#: ../plugin/Gallery.php:398
   msgid "Comments is added"
   msgstr ""
   
  @@ -372,118 +386,118 @@
   msgid "Revision History"
   msgstr " 丮"
   
  -#: ../plugin/Info.php:57
  +#: ../plugin/Info.php:58
   msgid "Show all revisions"
   msgstr ""
   
  -#: ../plugin/Info.php:83
  +#: ../plugin/Info.php:91
   msgid "Yesterday"
   msgstr ""
   
  -#: ../plugin/Info.php:84
  +#: ../plugin/Info.php:92
   #, c-format
   msgid "%s days ago"
   msgstr ""
   
  -#: ../plugin/Info.php:86
  +#: ../plugin/Info.php:94
   #, c-format
   msgid "%s hours ago"
   msgstr ""
   
  -#: ../plugin/Info.php:88
  +#: ../plugin/Info.php:96
   #, c-format
   msgid "%s min ago"
   msgstr ""
   
  -#: ../plugin/Info.php:149
  +#: ../plugin/Info.php:166
   msgid "diff"
   msgstr ""
   
  -#: ../plugin/Keywords.php:313
  +#: ../plugin/Keywords.php:330
   msgid "hits"
   msgstr ""
   
  -#: ../plugin/Keywords.php:321
  +#: ../plugin/Keywords.php:338
   msgid "add keywords"
   msgstr "Ű ϱ"
   
  -#: ../plugin/Keywords.php:324
  +#: ../plugin/Keywords.php:341
   msgid "Update keywords"
   msgstr "Ű "
   
  -#: ../plugin/Keywords.php:326
  +#: ../plugin/Keywords.php:343
   msgid "Add keywords"
   msgstr "Ű ϱ"
   
  -#: ../plugin/Keywords.php:327
  +#: ../plugin/Keywords.php:344
   msgid "Add as common words"
   msgstr "Ϲ ܾ ߰"
   
  -#: ../plugin/Keywords.php:328
  +#: ../plugin/Keywords.php:345
   msgid "Unselect all"
   msgstr "  "
   
  -#: ../plugin/Keywords.php:329
  +#: ../plugin/Keywords.php:346
   msgid "Suggest new Keywords"
   msgstr " Ű "
   
  -#: ../plugin/Keywords.php:338
  +#: ../plugin/Keywords.php:355
   msgid "select language"
   msgstr ""
   
  -#: ../plugin/Keywords.php:354
  +#: ../plugin/Keywords.php:371
   msgid "You are not able to add keywords."
   msgstr "Ű带 ߰  ϴ."
   
  -#: ../plugin/Keywords.php:368
  +#: ../plugin/Keywords.php:385
   #, c-format
   msgid "%s is not found."
   msgstr "%s() ã  ϴ"
   
  -#: ../plugin/Keywords.php:484
  +#: ../plugin/Keywords.php:501
   msgid "Common words are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:531
  +#: ../plugin/Keywords.php:548
   #, c-format
   msgid "Keywords for %s are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:557
  +#: ../plugin/Keywords.php:574
   msgid "Keywords are updated"
   msgstr "Ű尡 ŵǾϴ"
   
  -#: ../plugin/Keywords.php:559
  +#: ../plugin/Keywords.php:576
   msgid "There are no changes found"
   msgstr "ȭ ϴ"
   
  -#: ../plugin/Keywords.php:572
  +#: ../plugin/Keywords.php:589
   msgid "Update with these Keywords"
   msgstr "Ű ϱ"
   
  -#: ../plugin/Keywords.php:592 ../plugin/Keywords.php:596
  +#: ../plugin/Keywords.php:609 ../plugin/Keywords.php:613
   msgid "alphabetically"
   msgstr ""
   
  -#: ../plugin/Keywords.php:593
  +#: ../plugin/Keywords.php:610
   msgid "by frequency"
   msgstr "󵵼"
   
  -#: ../plugin/Keywords.php:595
  +#: ../plugin/Keywords.php:612
   msgid "by size"
   msgstr "ũ"
   
  -#: ../plugin/Keywords.php:601
  +#: ../plugin/Keywords.php:618
   #, c-format
   msgid "Keywords list %s (or %s)"
   msgstr "%s Ű  (Ȥ %s)"
   
  -#: ../plugin/Keywords.php:606
  +#: ../plugin/Keywords.php:623
   #, c-format
   msgid "Select keywords for %s"
   msgstr "%s  Ű带 "
   
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1184 ../wikilib.php:2552
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1230 ../wikilib.php:2603
   msgid "Use more specific text"
   msgstr "  ڼ Էϼ"
   
  @@ -524,6 +538,10 @@
   msgid "No Index page found"
   msgstr "ε  ϴ"
   
  +#: ../plugin/OeKaki.php:36
  +msgid "Draw a new picture"
  +msgstr " ׸ ׸"
  +
   #: ../plugin/OeKaki.php:118
   msgid "Create new picture"
   msgstr " ׸ "
  @@ -635,7 +653,7 @@
   msgid "TwinPages of %s"
   msgstr "%s ֵ "
   
  -#: ../plugin/TwinPages.php:19 ../wiki.php:4700
  +#: ../plugin/TwinPages.php:19 ../wiki.php:4993
   msgid "See [TwinPages]: "
   msgstr ""
   
  @@ -643,69 +661,86 @@
   msgid "No TwinPages found."
   msgstr "ֵ  ϴ"
   
  -#: ../plugin/UploadFile.php:131
  +#: ../plugin/UploadFile.php:147 ../plugin/UploadFile.php:161
  +#, c-format
  +msgid "The %s type of %s is not allowed to upload"
  +msgstr "%s %s  ε尡  ʽϴ"
  +
  +#: ../plugin/UploadFile.php:163
   #, c-format
   msgid "%s is not allowed to upload"
   msgstr "%s() ε尡  ʽϴ"
   
  -#: ../plugin/UploadFile.php:180
  +#: ../plugin/UploadFile.php:218
   #, c-format
   msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
   msgstr ""
   
  -#: ../plugin/UploadFile.php:213
  +#: ../plugin/UploadFile.php:251
   msgid "Please check your php.ini setting"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:223
  +#: ../plugin/UploadFile.php:261
   #, c-format
   msgid "File \"%s\" is uploaded successfully"
   msgstr "\"%s\"  ö󰬽ϴ"
   
  -#: ../plugin/UploadFile.php:262
  +#: ../plugin/UploadFile.php:300
   msgid "Files are uploaded successfully"
   msgstr "  ö󰬽ϴ"
   
  -#: ../plugin/UploadFile.php:306
  +#: ../plugin/UploadFile.php:344
   msgid "Replace original file"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:307
  +#: ../plugin/UploadFile.php:345
   msgid "Rename if it already exist"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:312 ../plugin/rename.php:69
  +#: ../plugin/UploadFile.php:350 ../plugin/rename.php:69
   msgid "Rename"
   msgstr "̸ٲٱ"
   
  -#: ../plugin/UploadFile.php:320
  +#: ../plugin/UploadFile.php:358
   #, c-format
   msgid "or %s."
   msgstr "Ȥ %s"
   
  -#: ../plugin/UploadFile.php:320
  +#: ../plugin/UploadFile.php:358
   msgid "Upload files"
   msgstr " ø"
   
  -#: ../plugin/UploadedFiles.php:281
  +#: ../plugin/UploadedFiles.php:271
  +msgid "File name"
  +msgstr " ̸"
  +
  +#: ../plugin/UploadedFiles.php:272
  +msgid "Size"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:273
  +msgid "Date"
  +msgstr "¥"
  +
  +#: ../plugin/UploadedFiles.php:316
   msgid "Next page &raquo;"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:283
  +#: ../plugin/UploadedFiles.php:318
   msgid "&laquo; First page"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:360
  +#: ../plugin/UploadedFiles.php:409
   #, c-format
   msgid "Total %d files"
   msgstr " %d  "
   
  -#: ../plugin/UploadedFiles.php:364 ../plugin/rename.php:77 ../wikilib.php:1034
  -#: ../wikilib.php:1900
  +#: ../plugin/UploadedFiles.php:414 ../plugin/rename.php:77 ../wikilib.php:1069
  +#: ../wikilib.php:1946
   msgid "Password"
   msgstr "йȣ"
   
  -#: ../plugin/UploadedFiles.php:365 ../wikilib.php:1012
  +#: ../plugin/UploadedFiles.php:415 ../wikilib.php:1047
   msgid "Delete selected files"
   msgstr "õ  "
   
  @@ -735,7 +770,7 @@
   msgid "Voted successfully"
   msgstr ""
   
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2305
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2356
   msgid "Others"
   msgstr ""
   
  @@ -830,19 +865,19 @@
   msgid "UserPreferences"
   msgstr "ȯ漳"
   
  -#: ../plugin/man_get.php:14
  +#: ../plugin/man_get.php:17
   msgid "No manpage selected"
   msgstr "Manpage õ ʾҽϴ"
   
  -#: ../plugin/man_get.php:40
  +#: ../plugin/man_get.php:43
   msgid "No manpage found"
   msgstr "Manpage ϴ"
   
  -#: ../plugin/man_get.php:112
  +#: ../plugin/man_get.php:115
   msgid "Edit"
   msgstr "ġ"
   
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1976
  +#: ../plugin/minilogin.php:22 ../wikilib.php:2022
   msgid "Login or Join"
   msgstr ""
   
  @@ -851,16 +886,16 @@
   msgid "%s or %s"
   msgstr "%s Ȥ %s"
   
  -#: ../plugin/msgfmt.php:74 ../plugin/msgfmt.php:152
  +#: ../plugin/msgfmt.php:75 ../plugin/msgfmt.php:153
   #, c-format
   msgid "Translation of %s"
   msgstr "%s "
   
  -#: ../plugin/msgfmt.php:83
  +#: ../plugin/msgfmt.php:84
   msgid "Translations are successfully updated."
   msgstr "  ŵǾϴ"
   
  -#: ../plugin/msgfmt.php:85
  +#: ../plugin/msgfmt.php:86
   msgid "Fail to save translations."
   msgstr "  ߽ϴ"
   
  @@ -1006,7 +1041,7 @@
   msgid "Only WikiMaster can rename this page"
   msgstr ""
   
  -#: ../plugin/rename.php:79 ../wikilib.php:1072
  +#: ../plugin/rename.php:79 ../wikilib.php:1115
   msgid "with revision history"
   msgstr " 丮 Բ"
   
  @@ -1269,19 +1304,10 @@
   msgid "Cookie deleted !"
   msgstr "Ű ϴ !"
   
  -#: ../plugin/userform.php:108 ../wikilib.php:2046
  +#: ../plugin/userform.php:108 ../wikilib.php:2092
   msgid "E-mail new password"
   msgstr " йȣ ޱ"
   
  -#: ../plugin/userform.php:119 ../plugin/userform.php:182
  -#: ../plugin/userform.php:205
  -msgid "Invalid ticket !"
  -msgstr ""
  -
  -#: ../plugin/userform.php:121 ../plugin/userform.php:207
  -msgid "You need a ticket !"
  -msgstr ""
  -
   #: ../plugin/userform.php:153
   msgid "New password confirmation"
   msgstr " йȣ Ȯ"
  @@ -1359,8 +1385,8 @@
   msgid "You are not allowed to register on this wiki"
   msgstr "Ű   ʾҽϴ"
   
  -#: ../plugin/userform.php:244 ../plugin/userform.php:409 ../wiki.php:4654
  -#: ../wiki.php:4665
  +#: ../plugin/userform.php:244 ../plugin/userform.php:409 ../wiki.php:4947
  +#: ../wiki.php:4958
   msgid "Please contact WikiMasters"
   msgstr "Űڿ ϼ"
   
  @@ -1460,139 +1486,149 @@
   msgid "Whois search result for %s"
   msgstr "%s  Whois ġ "
   
  -#: ../wiki.php:1204
  +#: ../wiki.php:1235
   #, c-format
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1565
  +#: ../wiki.php:1654
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
  -#: ../wiki.php:1575
  +#: ../wiki.php:1664
   msgid "File does not exist"
   msgstr " ϴ"
   
  -#: ../wiki.php:2646 ../wiki.php:2657 ../wiki.php:4858
  +#: ../wiki.php:2007
  +#, c-format
  +msgid "File '%s' does not exist."
  +msgstr " '%s'() ϴ"
  +
  +#: ../wiki.php:2831 ../wiki.php:2842 ../wiki.php:5173
   msgid "Invalid ajax action."
   msgstr "߸ ajax ׼."
   
  -#: ../wiki.php:3072
  +#: ../wiki.php:3255
  +msgid "Tags:"
  +msgstr "±:"
  +
  +#: ../wiki.php:3283
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:3072
  +#: ../wiki.php:3283
  +#, c-format
   msgid "TwinPages"
   msgstr "TwinPages"
   
  -#: ../wiki.php:3077
  +#: ../wiki.php:3288
   msgid "See [TwinPages]:"
   msgstr ""
   
  -#: ../wiki.php:3443
  +#: ../wiki.php:3657
   msgid "edit"
   msgstr ""
   
  -#: ../wiki.php:3616
  +#: ../wiki.php:3833
   msgid "Sister Sites Index"
   msgstr ""
   
  -#: ../wiki.php:3968 ../locale/dummy.php:6
  +#: ../wiki.php:4199 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "ġ"
   
  -#: ../wiki.php:3970
  +#: ../wiki.php:4201
   msgid "NotEditable"
   msgstr "ĥ "
   
  -#: ../wiki.php:3974 ../locale/dummy.php:6
  +#: ../wiki.php:4205 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:3975 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4206 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "ã"
   
  -#: ../wiki.php:4348
  +#: ../wiki.php:4586
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:4653
  +#: ../wiki.php:4946
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:4664
  +#: ../wiki.php:4957
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:4702 ../wiki.php:4711 ../wikilib.php:1277
  +#: ../wiki.php:4995 ../wiki.php:5004 ../wikilib.php:1323
   msgid "Create this page"
   msgstr " "
   
  -#: ../wiki.php:4713
  +#: ../wiki.php:5006
   #, c-format
   msgid "%s has saved revisions"
   msgstr "%s()   ֽϴ"
   
  -#: ../wiki.php:4714 ../wiki.php:4721
  +#: ../wiki.php:5007 ../wiki.php:5014
   #, c-format
   msgid "%s or click %s to fullsearch this page.\n"
   msgstr "%s  ų %s  ü ã⸦ غ.\n"
   
  -#: ../wiki.php:4714 ../wiki.php:4721 ../wikilib.php:1279
  +#: ../wiki.php:5007 ../wiki.php:5014 ../wikilib.php:1325
   msgid "title"
   msgstr ""
   
  -#: ../wiki.php:4716
  +#: ../wiki.php:5009
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr ""
   
  -#: ../wiki.php:4719
  +#: ../wiki.php:5012
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr "%s  ̰ Ű ã  ϴ"
   
  -#: ../wiki.php:4731
  +#: ../wiki.php:5024
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr ""
   "%s  ų Ʒ øƮ  ̿   弼:\n"
   
  -#: ../wiki.php:4734
  +#: ../wiki.php:5027
   msgid "You have no templates"
   msgstr "øƮ ϴ"
   
  -#: ../wiki.php:4736
  +#: ../wiki.php:5029
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr "øƮ ÷ '%s'  ̸   弼.\n"
   
  -#: ../wiki.php:4747
  +#: ../wiki.php:5040
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
  -#: ../wiki.php:4860
  +#: ../wiki.php:5175
   msgid "Invalid macro action."
   msgstr "߸ ũ ׼."
   
  -#: ../wiki.php:4870
  +#: ../wiki.php:5185
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "'%s'()  ʾҽϴ"
   
  -#: ../wiki.php:4890
  +#: ../wiki.php:5205
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "\"%s\"() ߽ϴ !"
   
  -#: ../wiki.php:4893
  +#: ../wiki.php:5208
   msgid "Please enter the valid password"
   msgstr "Ȯ йȣ ־ּ"
   
  -#: ../wikilib.php:629
  +#: ../wikilib.php:636
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -1621,335 +1657,339 @@
   "<b>̺</b>: ||   |||| ĭ ģ  ||;<br />\n"
   "̺̳     ȵ˴ϴ.<br />\n"
   
  -#: ../wikilib.php:670
  +#: ../wikilib.php:673
  +msgid "You are not allowed to edit this page !"
  +msgstr "  ĥ  ֵ Ǿ ʽϴ !"
  +
  +#: ../wikilib.php:679
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
  -#: ../wikilib.php:763
  +#: ../wikilib.php:785
   msgid "Use one of the following templates as an initial release :\n"
  -msgstr "   øƮ Ȱϼ :\n"
  +msgstr "   øƮ ȰϽ  ֽϴ :\n"
   
  -#: ../wikilib.php:765
  +#: ../wikilib.php:787
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr "øƮ ÷ '%s'  ̸  弼."
   
  -#: ../wikilib.php:769
  +#: ../wikilib.php:791
   msgid "Merge"
   msgstr ""
   
  -#: ../wikilib.php:770
  +#: ../wikilib.php:792
   msgid "Merge manually"
   msgstr " "
   
  -#: ../wikilib.php:771
  +#: ../wikilib.php:793
   msgid "Ignore conflicts"
   msgstr "浹 "
   
  -#: ../wikilib.php:796
  +#: ../wikilib.php:820
   msgid "ReduceEditor"
   msgstr "â ̱"
   
  -#: ../wikilib.php:797
  +#: ../wikilib.php:821
   msgid "EnlargeEditor"
   msgstr "â ̱"
   
  -#: ../wikilib.php:801 ../locale/dummy.php:6
  +#: ../wikilib.php:825 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr "Ű"
   
  -#: ../wikilib.php:803
  +#: ../wikilib.php:827
   msgid "HelpOnEditing"
   msgstr "ġ "
   
  -#: ../wikilib.php:832
  +#: ../wikilib.php:859
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:849
  +#: ../wikilib.php:879
   msgid "--Select Category--"
   msgstr "--īװ --"
   
  -#: ../wikilib.php:859
  +#: ../wikilib.php:889
   msgid "Minor edit"
   msgstr ""
   
  -#: ../wikilib.php:867
  +#: ../wikilib.php:893
  +msgid "Summary of Change"
  +msgstr "ٲ "
  +
  +#: ../wikilib.php:898
   msgid "Skip to preview"
   msgstr "̸"
   
  -#: ../wikilib.php:874 ../wikilib.php:1979 ../wikilib.php:2033
  +#: ../wikilib.php:908 ../wikilib.php:2025 ../wikilib.php:2079
   msgid "Save"
   msgstr ""
   
  -#: ../wikilib.php:875
  -msgid "Summary of Change"
  -msgstr "ٲ "
  -
  -#: ../wikilib.php:948
  +#: ../wikilib.php:981
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:953
  +#: ../wikilib.php:986
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s() ȿ ׼ ƴմϴ"
   
  -#: ../wikilib.php:955
  +#: ../wikilib.php:988
   msgid "Is it valid action ?"
   msgstr "ùٸ ׼Դϱ ?"
   
  -#: ../wikilib.php:1000
  +#: ../wikilib.php:1035
   #, c-format
   msgid "File '%s' is deleted"
   msgstr "'%s'  ϴ"
   
  -#: ../wikilib.php:1002
  +#: ../wikilib.php:1037
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr "'%s' ⸦ ߽ϴ"
   
  -#: ../wikilib.php:1007
  +#: ../wikilib.php:1042
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr "'%s' 丮 ϴ"
   
  -#: ../wikilib.php:1009
  +#: ../wikilib.php:1044
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr "'%s' ⸦ ߽ϴ"
   
  -#: ../wikilib.php:1019 ../wikilib.php:1039
  +#: ../wikilib.php:1054 ../wikilib.php:1074
   msgid "No files are selected !"
   msgstr " õ ʾҽϴ !"
   
  -#: ../wikilib.php:1032
  +#: ../wikilib.php:1067
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr " '%s'() ðڽϱ ?"
   
  -#: ../wikilib.php:1035
  +#: ../wikilib.php:1070
   msgid "Delete"
   msgstr ""
   
  -#: ../wikilib.php:1036
  +#: ../wikilib.php:1071
   msgid "Delete selected file"
   msgstr "õ  "
   
  -#: ../wikilib.php:1057
  +#: ../wikilib.php:1092
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr ""
   
  -#: ../wikilib.php:1064
  +#: ../wikilib.php:1107
   msgid "Please delete this file manually."
   msgstr ""
   
  -#: ../wikilib.php:1066
  +#: ../wikilib.php:1109
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "\"%s\"()  ?"
   
  -#: ../wikilib.php:1116
  +#: ../wikilib.php:1162
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
  -#: ../wikilib.php:1279
  +#: ../wikilib.php:1325
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
   
  -#: ../wikilib.php:1331 ../wikilib.php:1433
  +#: ../wikilib.php:1376 ../wikilib.php:1477
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "%s() ġ  ٸ    ߽ϴ"
   
  -#: ../wikilib.php:1337
  +#: ../wikilib.php:1382
   msgid "Section edit is not valid for non-exists page."
   msgstr "      ʽϴ"
   
  -#: ../wikilib.php:1370 ../wikilib.php:1547
  +#: ../wikilib.php:1415 ../wikilib.php:1593
   msgid "mail does not supported by default."
   msgstr "  ʽϴ"
   
  -#: ../wikilib.php:1374 ../wikilib.php:1551
  +#: ../wikilib.php:1419 ../wikilib.php:1597
   msgid "Sent notification mail."
   msgstr " ½ϴ"
   
  -#: ../wikilib.php:1376 ../wikilib.php:1553
  +#: ../wikilib.php:1421 ../wikilib.php:1599
   msgid "No subscribers found."
   msgstr "ڰ ϴ"
   
  -#: ../wikilib.php:1381 ../wikilib.php:1558
  +#: ../wikilib.php:1426 ../wikilib.php:1604
   #, c-format
   msgid "%s is not editable"
   msgstr "%s()   ϴ"
   
  -#: ../wikilib.php:1383 ../wikilib.php:1560
  +#: ../wikilib.php:1428 ../wikilib.php:1606
   #, c-format
   msgid "%s is saved"
   msgstr "%s() Ǿϴ"
   
  -#: ../wikilib.php:1424
  +#: ../wikilib.php:1468
   msgid "Goto Editor"
   msgstr " "
   
  -#: ../wikilib.php:1438
  +#: ../wikilib.php:1482
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr "%s  ֱ  յǾϴ."
   
  -#: ../wikilib.php:1439
  +#: ../wikilib.php:1483
   #, c-format
   msgid "%s is merged successfully"
   msgstr "%s()  յǾϴ"
   
  -#: ../wikilib.php:1443
  +#: ../wikilib.php:1487
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr "%s Ͽ  浹 ߰ߵǾϴ !"
   
  -#: ../wikilib.php:1444
  +#: ../wikilib.php:1488
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr "%   ҵǾϴ."
   
  -#: ../wikilib.php:1445
  +#: ../wikilib.php:1489
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1446
  +#: ../wikilib.php:1490
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1451
  +#: ../wikilib.php:1495
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr ""
   
  -#: ../wikilib.php:1452
  +#: ../wikilib.php:1496
   msgid "Please resolve conflicts manually."
   msgstr "浹  ذϽñ ٶϴ."
   
  -#: ../wikilib.php:1455
  +#: ../wikilib.php:1499
   #, c-format
   msgid "Force merging for %s !"
   msgstr "%s    Ǿϴ !"
   
  -#: ../wikilib.php:1456
  +#: ../wikilib.php:1500
   msgid "Please be careful, you could damage useful information."
   msgstr "Ͻñ ٶϴ. ߿  Ҿ  ֽϴ."
   
  -#: ../wikilib.php:1468
  +#: ../wikilib.php:1514
   msgid "Conflict error!"
   msgstr "浹 !"
   
  -#: ../wikilib.php:1507
  +#: ../wikilib.php:1553
   #, c-format
   msgid "Preview of %s"
   msgstr "%s ̸"
   
  -#: ../wikilib.php:1592
  +#: ../wikilib.php:1638
   msgid "Nobody subscribed to this page."
   msgstr "ƹ   ʰֽϴ."
   
  -#: ../wikilib.php:1611
  +#: ../wikilib.php:1657
   #, c-format
   msgid "%s page is modified"
   msgstr "%s  Ǿϴ"
   
  -#: ../wikilib.php:1640
  +#: ../wikilib.php:1686
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:1653
  +#: ../wikilib.php:1699
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:1658
  +#: ../wikilib.php:1704
   msgid "Mails are sent successfully"
   msgstr "  ½ϴ"
   
  -#: ../wikilib.php:1659
  +#: ../wikilib.php:1705
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr "'%s'  ½ϴ"
   
  -#: ../wikilib.php:1661
  +#: ../wikilib.php:1707
   msgid "Fail to send mail"
   msgstr "  ߽ϴ"
   
  -#: ../wikilib.php:1672
  +#: ../wikilib.php:1718
   msgid "This wiki does not support sendmail"
   msgstr "Ű sendmail  մϴ"
   
  -#: ../wikilib.php:1770
  +#: ../wikilib.php:1816
   msgid "Invalid regular expression !"
   msgstr "߸ Խ !"
   
  -#: ../wikilib.php:1794
  +#: ../wikilib.php:1840
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:1797
  +#: ../wikilib.php:1843
   msgid "Infinite loop possible!"
   msgstr "  !"
   
  -#: ../wikilib.php:1916
  +#: ../wikilib.php:1962
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:1917
  +#: ../wikilib.php:1963
   msgid "OpenID"
   msgstr ""
   
  -#: ../wikilib.php:1929 ../wikilib.php:2051
  +#: ../wikilib.php:1975 ../wikilib.php:2097
   msgid "ID"
   msgstr "̵"
   
  -#: ../wikilib.php:1959 ../wikilib.php:2044
  +#: ../wikilib.php:2005 ../wikilib.php:2090
   msgid "Make profile"
   msgstr " "
   
  -#: ../wikilib.php:1961
  +#: ../wikilib.php:2007
   msgid "password again"
   msgstr "йȣ Է"
   
  -#: ../wikilib.php:1963 ../wikilib.php:2012
  +#: ../wikilib.php:2009 ../wikilib.php:2058
   msgid "Mail"
   msgstr ""
   
  -#: ../wikilib.php:1985
  +#: ../wikilib.php:2031
   msgid "New password"
   msgstr " йȣ"
   
  -#: ../wikilib.php:1990
  +#: ../wikilib.php:2036
   msgid "Nickname"
   msgstr ""
   
  -#: ../wikilib.php:2013
  +#: ../wikilib.php:2059
   msgid "Time Zone"
   msgstr "ð"
   
  -#: ../wikilib.php:2022
  +#: ../wikilib.php:2068
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:2306
  +#: ../wikilib.php:2357
   msgid "Show all"
   msgstr " "
   
  -#: ../wikilib.php:2448
  +#: ../wikilib.php:2499
   msgid "Contents"
   msgstr ""
   
  -#: ../wikilib.php:2559
  +#: ../wikilib.php:2610
   #, c-format
   msgid "Title search for \"%s\""
   msgstr "\"%s\"   ã"
  
  
  
  1.19      +258 -217  moniwiki/locale/po/moniwiki.pot
  
  Index: moniwiki.pot
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/moniwiki.pot,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- moniwiki.pot	15 Dec 2007 05:56:26 -0000	1.18
  +++ moniwiki.pot	28 Nov 2008 02:22:11 -0000	1.19
  @@ -6,7 +6,8 @@
   msgid ""
   msgstr ""
   "Project-Id-Version: PACKAGE VERSION\n"
  -"POT-Creation-Date: 2007-12-15 14:20+0900\n"
  +"Report-Msgid-Bugs-To: \n"
  +"POT-Creation-Date: 2008-11-28 11:21+0900\n"
   "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
   "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
   "Language-Team: LANGUAGE <LL@li.org>\n"
  @@ -14,16 +15,20 @@
   "Content-Type: text/plain; charset=CHARSET\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  -#: ../plugin/Attachment.php:70 ../plugin/Attachment.php:232
  +#: ../plugin/Attachment.php:70 ../plugin/Attachment.php:293
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr ""
   
  -#: ../plugin/Attachment.php:229
  -msgid "or paste a new picture"
  +#: ../plugin/Attachment.php:285
  +msgid "or paste a new png picture"
   msgstr ""
   
  -#: ../plugin/Attachment.php:235
  +#: ../plugin/Attachment.php:290
  +msgid "or draw a new gif picture"
  +msgstr ""
  +
  +#: ../plugin/Attachment.php:296
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
  @@ -55,7 +60,7 @@
   msgid "Error: No blog entry found!"
   msgstr ""
   
  -#: ../plugin/Blog.php:164 ../plugin/Blog.php:166 ../plugin/Comment.php:157
  +#: ../plugin/Blog.php:164 ../plugin/Blog.php:166 ../plugin/Comment.php:219
   msgid "Error: Don't make a clone!"
   msgstr ""
   
  @@ -96,11 +101,11 @@
   msgid "Title"
   msgstr ""
   
  -#: ../plugin/Blog.php:268 ../wikilib.php:869
  +#: ../plugin/Blog.php:268 ../wikilib.php:900
   msgid "GUI"
   msgstr ""
   
  -#: ../plugin/Blog.php:277 ../plugin/Comment.php:75
  +#: ../plugin/Blog.php:277 ../plugin/Comment.php:104
   msgid "Don't add a signature"
   msgstr ""
   
  @@ -136,7 +141,7 @@
   msgid "%d comments"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:146
  +#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:206
   #: ../plugin/processor/blog.php:78
   msgid "Add comment"
   msgstr ""
  @@ -157,11 +162,11 @@
   msgid "Paste a new picture"
   msgstr ""
   
  -#: ../plugin/Clip.php:50 ../plugin/Draw.php:108
  +#: ../plugin/Clip.php:50 ../plugin/Draw.php:119
   msgid "Fatal error !"
   msgstr ""
   
  -#: ../plugin/Clip.php:53 ../plugin/Draw.php:111
  +#: ../plugin/Clip.php:53 ../plugin/Draw.php:122
   msgid "No filename given"
   msgstr ""
   
  @@ -173,93 +178,103 @@
   msgid "Cut & Paste a Clipboard Image"
   msgstr ""
   
  -#: ../plugin/Comment.php:59
  +#: ../plugin/Comment.php:87
   msgid "Comment"
   msgstr ""
   
  -#: ../plugin/Comment.php:60 ../wikilib.php:865
  +#: ../plugin/Comment.php:88 ../wikilib.php:896
   msgid "Preview"
   msgstr ""
   
  -#: ../plugin/Comment.php:73
  +#: ../plugin/Comment.php:102
   msgid "Username"
   msgstr ""
   
  -#: ../plugin/Comment.php:94
  +#: ../plugin/Comment.php:124
   msgid "Page is not writable"
   msgstr ""
   
  -#: ../plugin/Comment.php:98
  +#: ../plugin/Comment.php:127
   msgid "You are not allowed to add a comment."
   msgstr ""
   
  -#: ../plugin/Comment.php:99 ../plugin/Keywords.php:355
  +#: ../plugin/Comment.php:128 ../plugin/Keywords.php:372
   msgid "Page does not exists"
   msgstr ""
   
  -#: ../plugin/Comment.php:132 ../plugin/Gallery.php:171 ../wikilib.php:1356
  -#: ../wikilib.php:1501
  +#: ../plugin/Comment.php:163 ../plugin/userform.php:119
  +#: ../plugin/userform.php:182 ../plugin/userform.php:205
  +msgid "Invalid ticket !"
  +msgstr ""
  +
  +#: ../plugin/Comment.php:167 ../plugin/userform.php:121
  +#: ../plugin/userform.php:207
  +msgid "You need a ticket !"
  +msgstr ""
  +
  +#: ../plugin/Comment.php:189 ../plugin/Gallery.php:171 ../wikilib.php:1401
  +#: ../wikilib.php:1547
   msgid ""
   "Sorry, can not save page because some messages are blocked in this wiki."
   msgstr ""
   
  -#: ../plugin/Comment.php:137
  +#: ../plugin/Comment.php:195
   msgid "Preview comment"
   msgstr ""
   
  -#: ../plugin/Comment.php:259
  +#: ../plugin/Comment.php:326
   #, c-format
   msgid "%s is commented successfully"
   msgstr ""
   
  -#: ../plugin/Comment.php:260
  +#: ../plugin/Comment.php:327
   msgid "Comment added successfully"
   msgstr ""
   
  -#: ../plugin/Diff.php:207 ../plugin/Info.php:203
  +#: ../plugin/Diff.php:207 ../plugin/Info.php:220
   msgid "No older revisions available"
   msgstr ""
   
  -#: ../plugin/Diff.php:212 ../plugin/Info.php:209
  +#: ../plugin/Diff.php:212 ../plugin/Info.php:226
   msgid "Version info is not available in this wiki"
   msgstr ""
   
  -#: ../plugin/Diff.php:223 ../wikilib.php:1488
  +#: ../plugin/Diff.php:223 ../wikilib.php:1534
   msgid "No difference found"
   msgstr ""
   
  -#: ../plugin/Diff.php:225
  +#: ../plugin/Diff.php:227
   msgid "Difference between versions"
   msgstr ""
   
  -#: ../plugin/Diff.php:227 ../plugin/Diff.php:346
  +#: ../plugin/Diff.php:229 ../plugin/Diff.php:341
   #, c-format
   msgid "Difference between r%s and r%s"
   msgstr ""
   
  -#: ../plugin/Diff.php:230 ../plugin/Diff.php:348
  +#: ../plugin/Diff.php:232 ../plugin/Diff.php:343
   #, c-format
   msgid "Difference between r%s and the current"
   msgstr ""
   
  -#: ../plugin/Diff.php:350
  +#: ../plugin/Diff.php:345
   msgid "latest changes"
   msgstr ""
   
  -#: ../plugin/Draw.php:29 ../plugin/OeKaki.php:36
  +#: ../plugin/Draw.php:36
   msgid "Draw new picture"
   msgstr ""
   
  -#: ../plugin/Draw.php:81 ../plugin/UploadFile.php:212
  +#: ../plugin/Draw.php:92 ../plugin/UploadFile.php:250
   #, c-format
   msgid "Fail to copy \"%s\" to \"%s\""
   msgstr ""
   
  -#: ../plugin/Draw.php:132
  +#: ../plugin/Draw.php:146
   msgid "Edit drawing"
   msgstr ""
   
  -#: ../plugin/Draw.php:141
  +#: ../plugin/Draw.php:155
   msgid "Edit new drawing"
   msgstr ""
   
  @@ -317,7 +332,7 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:44 ../plugin/VisualTour.php:124 ../wiki.php:3972
  +#: ../plugin/FullSearch.php:44 ../plugin/VisualTour.php:124 ../wiki.php:4203
   msgid "Refresh"
   msgstr ""
   
  @@ -330,34 +345,34 @@
   msgid "Empty expression"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:133 ../wikilib.php:2563
  +#: ../plugin/FullSearch.php:133 ../wikilib.php:2614
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr ""
   
  -#: ../plugin/Gallery.php:242 ../plugin/UploadedFiles.php:244
  +#: ../plugin/Gallery.php:242 ../plugin/UploadedFiles.php:257
   msgid "No files found"
   msgstr ""
   
  -#: ../plugin/Gallery.php:333 ../plugin/Gallery.php:346
  +#: ../plugin/Gallery.php:334 ../plugin/Gallery.php:347
   msgid "add comment"
   msgstr ""
   
  -#: ../plugin/Gallery.php:343
  +#: ../plugin/Gallery.php:344
   msgid "show comments"
   msgstr ""
   
  -#: ../plugin/Gallery.php:392 ../plugin/Gallery.php:396 ../wikilib.php:1343
  -#: ../wikilib.php:1486
  +#: ../plugin/Gallery.php:393 ../plugin/Gallery.php:397 ../wikilib.php:1388
  +#: ../wikilib.php:1532
   #, c-format
   msgid "Go back or return to %s"
   msgstr ""
   
  -#: ../plugin/Gallery.php:393
  +#: ../plugin/Gallery.php:394
   msgid "Comments are edited"
   msgstr ""
   
  -#: ../plugin/Gallery.php:397
  +#: ../plugin/Gallery.php:398
   msgid "Comments is added"
   msgstr ""
   
  @@ -373,118 +388,118 @@
   msgid "Revision History"
   msgstr ""
   
  -#: ../plugin/Info.php:57
  +#: ../plugin/Info.php:58
   msgid "Show all revisions"
   msgstr ""
   
  -#: ../plugin/Info.php:83
  +#: ../plugin/Info.php:91
   msgid "Yesterday"
   msgstr ""
   
  -#: ../plugin/Info.php:84
  +#: ../plugin/Info.php:92
   #, c-format
   msgid "%s days ago"
   msgstr ""
   
  -#: ../plugin/Info.php:86
  +#: ../plugin/Info.php:94
   #, c-format
   msgid "%s hours ago"
   msgstr ""
   
  -#: ../plugin/Info.php:88
  +#: ../plugin/Info.php:96
   #, c-format
   msgid "%s min ago"
   msgstr ""
   
  -#: ../plugin/Info.php:149
  +#: ../plugin/Info.php:166
   msgid "diff"
   msgstr ""
   
  -#: ../plugin/Keywords.php:313
  +#: ../plugin/Keywords.php:330
   msgid "hits"
   msgstr ""
   
  -#: ../plugin/Keywords.php:321
  +#: ../plugin/Keywords.php:338
   msgid "add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:324
  +#: ../plugin/Keywords.php:341
   msgid "Update keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:326
  +#: ../plugin/Keywords.php:343
   msgid "Add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:327
  +#: ../plugin/Keywords.php:344
   msgid "Add as common words"
   msgstr ""
   
  -#: ../plugin/Keywords.php:328
  +#: ../plugin/Keywords.php:345
   msgid "Unselect all"
   msgstr ""
   
  -#: ../plugin/Keywords.php:329
  +#: ../plugin/Keywords.php:346
   msgid "Suggest new Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:338
  +#: ../plugin/Keywords.php:355
   msgid "select language"
   msgstr ""
   
  -#: ../plugin/Keywords.php:354
  +#: ../plugin/Keywords.php:371
   msgid "You are not able to add keywords."
   msgstr ""
   
  -#: ../plugin/Keywords.php:368
  +#: ../plugin/Keywords.php:385
   #, c-format
   msgid "%s is not found."
   msgstr ""
   
  -#: ../plugin/Keywords.php:484
  +#: ../plugin/Keywords.php:501
   msgid "Common words are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:531
  +#: ../plugin/Keywords.php:548
   #, c-format
   msgid "Keywords for %s are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:557
  +#: ../plugin/Keywords.php:574
   msgid "Keywords are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:559
  +#: ../plugin/Keywords.php:576
   msgid "There are no changes found"
   msgstr ""
   
  -#: ../plugin/Keywords.php:572
  +#: ../plugin/Keywords.php:589
   msgid "Update with these Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:592 ../plugin/Keywords.php:596
  +#: ../plugin/Keywords.php:609 ../plugin/Keywords.php:613
   msgid "alphabetically"
   msgstr ""
   
  -#: ../plugin/Keywords.php:593
  +#: ../plugin/Keywords.php:610
   msgid "by frequency"
   msgstr ""
   
  -#: ../plugin/Keywords.php:595
  +#: ../plugin/Keywords.php:612
   msgid "by size"
   msgstr ""
   
  -#: ../plugin/Keywords.php:601
  +#: ../plugin/Keywords.php:618
   #, c-format
   msgid "Keywords list %s (or %s)"
   msgstr ""
   
  -#: ../plugin/Keywords.php:606
  +#: ../plugin/Keywords.php:623
   #, c-format
   msgid "Select keywords for %s"
   msgstr ""
   
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1184 ../wikilib.php:2552
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1230 ../wikilib.php:2603
   msgid "Use more specific text"
   msgstr ""
   
  @@ -525,6 +540,10 @@
   msgid "No Index page found"
   msgstr ""
   
  +#: ../plugin/OeKaki.php:36
  +msgid "Draw a new picture"
  +msgstr ""
  +
   #: ../plugin/OeKaki.php:118
   msgid "Create new picture"
   msgstr ""
  @@ -636,7 +655,7 @@
   msgid "TwinPages of %s"
   msgstr ""
   
  -#: ../plugin/TwinPages.php:19 ../wiki.php:4700
  +#: ../plugin/TwinPages.php:19 ../wiki.php:4993
   msgid "See [TwinPages]: "
   msgstr ""
   
  @@ -644,69 +663,86 @@
   msgid "No TwinPages found."
   msgstr ""
   
  -#: ../plugin/UploadFile.php:131
  +#: ../plugin/UploadFile.php:147 ../plugin/UploadFile.php:161
  +#, c-format
  +msgid "The %s type of %s is not allowed to upload"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:163
   #, c-format
   msgid "%s is not allowed to upload"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:180
  +#: ../plugin/UploadFile.php:218
   #, c-format
   msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
   msgstr ""
   
  -#: ../plugin/UploadFile.php:213
  +#: ../plugin/UploadFile.php:251
   msgid "Please check your php.ini setting"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:223
  +#: ../plugin/UploadFile.php:261
   #, c-format
   msgid "File \"%s\" is uploaded successfully"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:262
  +#: ../plugin/UploadFile.php:300
   msgid "Files are uploaded successfully"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:306
  +#: ../plugin/UploadFile.php:344
   msgid "Replace original file"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:307
  +#: ../plugin/UploadFile.php:345
   msgid "Rename if it already exist"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:312 ../plugin/rename.php:69
  +#: ../plugin/UploadFile.php:350 ../plugin/rename.php:69
   msgid "Rename"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:320
  +#: ../plugin/UploadFile.php:358
   #, c-format
   msgid "or %s."
   msgstr ""
   
  -#: ../plugin/UploadFile.php:320
  +#: ../plugin/UploadFile.php:358
   msgid "Upload files"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:281
  +#: ../plugin/UploadedFiles.php:271
  +msgid "File name"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:272
  +msgid "Size"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:273
  +msgid "Date"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:316
   msgid "Next page &raquo;"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:283
  +#: ../plugin/UploadedFiles.php:318
   msgid "&laquo; First page"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:360
  +#: ../plugin/UploadedFiles.php:409
   #, c-format
   msgid "Total %d files"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:364 ../plugin/rename.php:77 ../wikilib.php:1034
  -#: ../wikilib.php:1900
  +#: ../plugin/UploadedFiles.php:414 ../plugin/rename.php:77 ../wikilib.php:1069
  +#: ../wikilib.php:1946
   msgid "Password"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:365 ../wikilib.php:1012
  +#: ../plugin/UploadedFiles.php:415 ../wikilib.php:1047
   msgid "Delete selected files"
   msgstr ""
   
  @@ -736,7 +772,7 @@
   msgid "Voted successfully"
   msgstr ""
   
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2305
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2356
   msgid "Others"
   msgstr ""
   
  @@ -831,19 +867,19 @@
   msgid "UserPreferences"
   msgstr ""
   
  -#: ../plugin/man_get.php:14
  +#: ../plugin/man_get.php:17
   msgid "No manpage selected"
   msgstr ""
   
  -#: ../plugin/man_get.php:40
  +#: ../plugin/man_get.php:43
   msgid "No manpage found"
   msgstr ""
   
  -#: ../plugin/man_get.php:112
  +#: ../plugin/man_get.php:115
   msgid "Edit"
   msgstr ""
   
  -#: ../plugin/minilogin.php:22 ../wikilib.php:1976
  +#: ../plugin/minilogin.php:22 ../wikilib.php:2022
   msgid "Login or Join"
   msgstr ""
   
  @@ -852,16 +888,16 @@
   msgid "%s or %s"
   msgstr ""
   
  -#: ../plugin/msgfmt.php:74 ../plugin/msgfmt.php:152
  +#: ../plugin/msgfmt.php:75 ../plugin/msgfmt.php:153
   #, c-format
   msgid "Translation of %s"
   msgstr ""
   
  -#: ../plugin/msgfmt.php:83
  +#: ../plugin/msgfmt.php:84
   msgid "Translations are successfully updated."
   msgstr ""
   
  -#: ../plugin/msgfmt.php:85
  +#: ../plugin/msgfmt.php:86
   msgid "Fail to save translations."
   msgstr ""
   
  @@ -1006,7 +1042,7 @@
   msgid "Only WikiMaster can rename this page"
   msgstr ""
   
  -#: ../plugin/rename.php:79 ../wikilib.php:1072
  +#: ../plugin/rename.php:79 ../wikilib.php:1115
   msgid "with revision history"
   msgstr ""
   
  @@ -1265,19 +1301,10 @@
   msgid "Cookie deleted !"
   msgstr ""
   
  -#: ../plugin/userform.php:108 ../wikilib.php:2046
  +#: ../plugin/userform.php:108 ../wikilib.php:2092
   msgid "E-mail new password"
   msgstr ""
   
  -#: ../plugin/userform.php:119 ../plugin/userform.php:182
  -#: ../plugin/userform.php:205
  -msgid "Invalid ticket !"
  -msgstr ""
  -
  -#: ../plugin/userform.php:121 ../plugin/userform.php:207
  -msgid "You need a ticket !"
  -msgstr ""
  -
   #: ../plugin/userform.php:153
   msgid "New password confirmation"
   msgstr ""
  @@ -1355,8 +1382,8 @@
   msgid "You are not allowed to register on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:244 ../plugin/userform.php:409 ../wiki.php:4654
  -#: ../wiki.php:4665
  +#: ../plugin/userform.php:244 ../plugin/userform.php:409 ../wiki.php:4947
  +#: ../wiki.php:4958
   msgid "Please contact WikiMasters"
   msgstr ""
   
  @@ -1456,138 +1483,148 @@
   msgid "Whois search result for %s"
   msgstr ""
   
  -#: ../wiki.php:1204
  +#: ../wiki.php:1235
   #, c-format
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1565
  +#: ../wiki.php:1654
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
  -#: ../wiki.php:1575
  +#: ../wiki.php:1664
   msgid "File does not exist"
   msgstr ""
   
  -#: ../wiki.php:2646 ../wiki.php:2657 ../wiki.php:4858
  +#: ../wiki.php:2007
  +#, c-format
  +msgid "File '%s' does not exist."
  +msgstr ""
  +
  +#: ../wiki.php:2831 ../wiki.php:2842 ../wiki.php:5173
   msgid "Invalid ajax action."
   msgstr ""
   
  -#: ../wiki.php:3072
  +#: ../wiki.php:3255
  +msgid "Tags:"
  +msgstr ""
  +
  +#: ../wiki.php:3283
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:3072
  +#: ../wiki.php:3283
  +#, c-format
   msgid "TwinPages"
   msgstr ""
   
  -#: ../wiki.php:3077
  +#: ../wiki.php:3288
   msgid "See [TwinPages]:"
   msgstr ""
   
  -#: ../wiki.php:3443
  +#: ../wiki.php:3657
   msgid "edit"
   msgstr ""
   
  -#: ../wiki.php:3616
  +#: ../wiki.php:3833
   msgid "Sister Sites Index"
   msgstr ""
   
  -#: ../wiki.php:3968 ../locale/dummy.php:6
  +#: ../wiki.php:4199 ../locale/dummy.php:6
   msgid "EditText"
   msgstr ""
   
  -#: ../wiki.php:3970
  +#: ../wiki.php:4201
   msgid "NotEditable"
   msgstr ""
   
  -#: ../wiki.php:3974 ../locale/dummy.php:6
  +#: ../wiki.php:4205 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:3975 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4206 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr ""
   
  -#: ../wiki.php:4348
  +#: ../wiki.php:4586
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:4653
  +#: ../wiki.php:4946
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:4664
  +#: ../wiki.php:4957
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:4702 ../wiki.php:4711 ../wikilib.php:1277
  +#: ../wiki.php:4995 ../wiki.php:5004 ../wikilib.php:1323
   msgid "Create this page"
   msgstr ""
   
  -#: ../wiki.php:4713
  +#: ../wiki.php:5006
   #, c-format
   msgid "%s has saved revisions"
   msgstr ""
   
  -#: ../wiki.php:4714 ../wiki.php:4721
  +#: ../wiki.php:5007 ../wiki.php:5014
   #, c-format
   msgid "%s or click %s to fullsearch this page.\n"
   msgstr ""
   
  -#: ../wiki.php:4714 ../wiki.php:4721 ../wikilib.php:1279
  +#: ../wiki.php:5007 ../wiki.php:5014 ../wikilib.php:1325
   msgid "title"
   msgstr ""
   
  -#: ../wiki.php:4716
  +#: ../wiki.php:5009
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr ""
   
  -#: ../wiki.php:4719
  +#: ../wiki.php:5012
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr ""
   
  -#: ../wiki.php:4731
  +#: ../wiki.php:5024
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr ""
   
  -#: ../wiki.php:4734
  +#: ../wiki.php:5027
   msgid "You have no templates"
   msgstr ""
   
  -#: ../wiki.php:4736
  +#: ../wiki.php:5029
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
   
  -#: ../wiki.php:4747
  +#: ../wiki.php:5040
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
  -#: ../wiki.php:4860
  +#: ../wiki.php:5175
   msgid "Invalid macro action."
   msgstr ""
   
  -#: ../wiki.php:4870
  +#: ../wiki.php:5185
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr ""
   
  -#: ../wiki.php:4890
  +#: ../wiki.php:5205
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:4893
  +#: ../wiki.php:5208
   msgid "Please enter the valid password"
   msgstr ""
   
  -#: ../wikilib.php:629
  +#: ../wikilib.php:636
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -1604,335 +1641,339 @@
   "no trailing white space allowed after tables or titles.<br />\n"
   msgstr ""
   
  -#: ../wikilib.php:670
  +#: ../wikilib.php:673
  +msgid "You are not allowed to edit this page !"
  +msgstr ""
  +
  +#: ../wikilib.php:679
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
  -#: ../wikilib.php:763
  +#: ../wikilib.php:785
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   
  -#: ../wikilib.php:765
  +#: ../wikilib.php:787
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr ""
   
  -#: ../wikilib.php:769
  +#: ../wikilib.php:791
   msgid "Merge"
   msgstr ""
   
  -#: ../wikilib.php:770
  +#: ../wikilib.php:792
   msgid "Merge manually"
   msgstr ""
   
  -#: ../wikilib.php:771
  +#: ../wikilib.php:793
   msgid "Ignore conflicts"
   msgstr ""
   
  -#: ../wikilib.php:796
  +#: ../wikilib.php:820
   msgid "ReduceEditor"
   msgstr ""
   
  -#: ../wikilib.php:797
  +#: ../wikilib.php:821
   msgid "EnlargeEditor"
   msgstr ""
   
  -#: ../wikilib.php:801 ../locale/dummy.php:6
  +#: ../wikilib.php:825 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
  -#: ../wikilib.php:803
  +#: ../wikilib.php:827
   msgid "HelpOnEditing"
   msgstr ""
   
  -#: ../wikilib.php:832
  +#: ../wikilib.php:859
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:849
  +#: ../wikilib.php:879
   msgid "--Select Category--"
   msgstr ""
   
  -#: ../wikilib.php:859
  +#: ../wikilib.php:889
   msgid "Minor edit"
   msgstr ""
   
  -#: ../wikilib.php:867
  -msgid "Skip to preview"
  +#: ../wikilib.php:893
  +msgid "Summary of Change"
   msgstr ""
   
  -#: ../wikilib.php:874 ../wikilib.php:1979 ../wikilib.php:2033
  -msgid "Save"
  +#: ../wikilib.php:898
  +msgid "Skip to preview"
   msgstr ""
   
  -#: ../wikilib.php:875
  -msgid "Summary of Change"
  +#: ../wikilib.php:908 ../wikilib.php:2025 ../wikilib.php:2079
  +msgid "Save"
   msgstr ""
   
  -#: ../wikilib.php:948
  +#: ../wikilib.php:981
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:953
  +#: ../wikilib.php:986
   #, c-format
   msgid "%s is not valid action"
   msgstr ""
   
  -#: ../wikilib.php:955
  +#: ../wikilib.php:988
   msgid "Is it valid action ?"
   msgstr ""
   
  -#: ../wikilib.php:1000
  +#: ../wikilib.php:1035
   #, c-format
   msgid "File '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:1002
  +#: ../wikilib.php:1037
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1007
  +#: ../wikilib.php:1042
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:1009
  +#: ../wikilib.php:1044
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1019 ../wikilib.php:1039
  +#: ../wikilib.php:1054 ../wikilib.php:1074
   msgid "No files are selected !"
   msgstr ""
   
  -#: ../wikilib.php:1032
  +#: ../wikilib.php:1067
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
  -#: ../wikilib.php:1035
  +#: ../wikilib.php:1070
   msgid "Delete"
   msgstr ""
   
  -#: ../wikilib.php:1036
  +#: ../wikilib.php:1071
   msgid "Delete selected file"
   msgstr ""
   
  -#: ../wikilib.php:1057
  +#: ../wikilib.php:1092
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr ""
   
  -#: ../wikilib.php:1064
  +#: ../wikilib.php:1107
   msgid "Please delete this file manually."
   msgstr ""
   
  -#: ../wikilib.php:1066
  +#: ../wikilib.php:1109
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr ""
   
  -#: ../wikilib.php:1116
  +#: ../wikilib.php:1162
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
  -#: ../wikilib.php:1279
  +#: ../wikilib.php:1325
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
   
  -#: ../wikilib.php:1331 ../wikilib.php:1433
  +#: ../wikilib.php:1376 ../wikilib.php:1477
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr ""
   
  -#: ../wikilib.php:1337
  +#: ../wikilib.php:1382
   msgid "Section edit is not valid for non-exists page."
   msgstr ""
   
  -#: ../wikilib.php:1370 ../wikilib.php:1547
  +#: ../wikilib.php:1415 ../wikilib.php:1593
   msgid "mail does not supported by default."
   msgstr ""
   
  -#: ../wikilib.php:1374 ../wikilib.php:1551
  +#: ../wikilib.php:1419 ../wikilib.php:1597
   msgid "Sent notification mail."
   msgstr ""
   
  -#: ../wikilib.php:1376 ../wikilib.php:1553
  +#: ../wikilib.php:1421 ../wikilib.php:1599
   msgid "No subscribers found."
   msgstr ""
   
  -#: ../wikilib.php:1381 ../wikilib.php:1558
  +#: ../wikilib.php:1426 ../wikilib.php:1604
   #, c-format
   msgid "%s is not editable"
   msgstr ""
   
  -#: ../wikilib.php:1383 ../wikilib.php:1560
  +#: ../wikilib.php:1428 ../wikilib.php:1606
   #, c-format
   msgid "%s is saved"
   msgstr ""
   
  -#: ../wikilib.php:1424
  +#: ../wikilib.php:1468
   msgid "Goto Editor"
   msgstr ""
   
  -#: ../wikilib.php:1438
  +#: ../wikilib.php:1482
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr ""
   
  -#: ../wikilib.php:1439
  +#: ../wikilib.php:1483
   #, c-format
   msgid "%s is merged successfully"
   msgstr ""
   
  -#: ../wikilib.php:1443
  +#: ../wikilib.php:1487
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1444
  +#: ../wikilib.php:1488
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr ""
   
  -#: ../wikilib.php:1445
  +#: ../wikilib.php:1489
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1446
  +#: ../wikilib.php:1490
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1451
  +#: ../wikilib.php:1495
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr ""
   
  -#: ../wikilib.php:1452
  +#: ../wikilib.php:1496
   msgid "Please resolve conflicts manually."
   msgstr ""
   
  -#: ../wikilib.php:1455
  +#: ../wikilib.php:1499
   #, c-format
   msgid "Force merging for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1456
  +#: ../wikilib.php:1500
   msgid "Please be careful, you could damage useful information."
   msgstr ""
   
  -#: ../wikilib.php:1468
  +#: ../wikilib.php:1514
   msgid "Conflict error!"
   msgstr ""
   
  -#: ../wikilib.php:1507
  +#: ../wikilib.php:1553
   #, c-format
   msgid "Preview of %s"
   msgstr ""
   
  -#: ../wikilib.php:1592
  +#: ../wikilib.php:1638
   msgid "Nobody subscribed to this page."
   msgstr ""
   
  -#: ../wikilib.php:1611
  +#: ../wikilib.php:1657
   #, c-format
   msgid "%s page is modified"
   msgstr ""
   
  -#: ../wikilib.php:1640
  +#: ../wikilib.php:1686
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:1653
  +#: ../wikilib.php:1699
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:1658
  +#: ../wikilib.php:1704
   msgid "Mails are sent successfully"
   msgstr ""
   
  -#: ../wikilib.php:1659
  +#: ../wikilib.php:1705
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1661
  +#: ../wikilib.php:1707
   msgid "Fail to send mail"
   msgstr ""
   
  -#: ../wikilib.php:1672
  +#: ../wikilib.php:1718
   msgid "This wiki does not support sendmail"
   msgstr ""
   
  -#: ../wikilib.php:1770
  +#: ../wikilib.php:1816
   msgid "Invalid regular expression !"
   msgstr ""
   
  -#: ../wikilib.php:1794
  +#: ../wikilib.php:1840
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:1797
  +#: ../wikilib.php:1843
   msgid "Infinite loop possible!"
   msgstr ""
   
  -#: ../wikilib.php:1916
  +#: ../wikilib.php:1962
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:1917
  +#: ../wikilib.php:1963
   msgid "OpenID"
   msgstr ""
   
  -#: ../wikilib.php:1929 ../wikilib.php:2051
  +#: ../wikilib.php:1975 ../wikilib.php:2097
   msgid "ID"
   msgstr ""
   
  -#: ../wikilib.php:1959 ../wikilib.php:2044
  +#: ../wikilib.php:2005 ../wikilib.php:2090
   msgid "Make profile"
   msgstr ""
   
  -#: ../wikilib.php:1961
  +#: ../wikilib.php:2007
   msgid "password again"
   msgstr ""
   
  -#: ../wikilib.php:1963 ../wikilib.php:2012
  +#: ../wikilib.php:2009 ../wikilib.php:2058
   msgid "Mail"
   msgstr ""
   
  -#: ../wikilib.php:1985
  +#: ../wikilib.php:2031
   msgid "New password"
   msgstr ""
   
  -#: ../wikilib.php:1990
  +#: ../wikilib.php:2036
   msgid "Nickname"
   msgstr ""
   
  -#: ../wikilib.php:2013
  +#: ../wikilib.php:2059
   msgid "Time Zone"
   msgstr ""
   
  -#: ../wikilib.php:2022
  +#: ../wikilib.php:2068
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:2306
  +#: ../wikilib.php:2357
   msgid "Show all"
   msgstr ""
   
  -#: ../wikilib.php:2448
  +#: ../wikilib.php:2499
   msgid "Contents"
   msgstr ""
   
  -#: ../wikilib.php:2559
  +#: ../wikilib.php:2610
   #, c-format
   msgid "Title search for \"%s\""
   msgstr ""
  
  
  


wkpark      2008/11/28 11:25:33

  Modified:    .        wiki.php
  Log:
  fixed for without gettext() system
  
  Revision  Changes    Path
  1.400     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.399
  retrieving revision 1.400
  diff -u -r1.399 -r1.400
  --- wiki.php	28 Nov 2008 00:49:44 -0000	1.399
  +++ wiki.php	28 Nov 2008 02:25:32 -0000	1.400
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.399 2008/11/28 00:49:44 wkpark Exp $
  +// $Id: wiki.php,v 1.400 2008/11/28 02:25:32 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.399 $',1,-1);
  +$_revision = substr('$Revision: 1.400 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -148,7 +148,7 @@
   
     function gettext ($text) {
       global $_locale,$locale;
  -    $_locale=&$locale;
  +    if (sizeof($_locale) == 0) $_locale=&$locale;
       if (!empty ($_locale[$text]))
         return $_locale[$text];
       return $text;
  
  
  


wkpark      2008/11/28 11:25:33

  Modified:    locale   make-php-trans.awk
  Log:
  fixed for without gettext() system
  
  Revision  Changes    Path
  1.2       +3 -3      moniwiki/locale/make-php-trans.awk
  
  Index: make-php-trans.awk
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/make-php-trans.awk,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- make-php-trans.awk	10 Aug 2003 13:09:49 -0000	1.1
  +++ make-php-trans.awk	28 Nov 2008 02:25:33 -0000	1.2
  @@ -1,4 +1,4 @@
  -# $Id: make-php-trans.awk,v 1.1 2003/08/10 13:09:49 wkpark Exp $
  +# $Id: make-php-trans.awk,v 1.2 2008/11/28 02:25:33 wkpark Exp $
   
   BEGIN {
     msgid=""; msgstr="";
  @@ -8,7 +8,7 @@
   /^msgid "/ { #"{
     if (msgid && str) {
       gsub(/\$/, "\\$", str);
  -    print ("$locale[\"" msgid "\"] =\n   \"" str "\";");
  +    print ("$_locale[\"" msgid "\"] =\n   \"" str "\";");
     }
     str = substr ($0, 8, length ($0) - 8);
     msgstr="";
  @@ -28,7 +28,7 @@
   END {
     if (msgid && str) {
       gsub(/\$/, "\\$", str);
  -    print ("$locale[\"" msgid "\"] =\n   \"" str "\";");
  +    print ("$_locale[\"" msgid "\"] =\n   \"" str "\";");
     }
     print ("\n?>");
   }
  
  
  


wkpark      2008/11/28 15:58:44

  Modified:    plugin/processor monimarkup.php
  Log:
  fixed table rendering bug
  
  Revision  Changes    Path
  1.8       +10 -4     moniwiki/plugin/processor/monimarkup.php
  
  Index: monimarkup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/monimarkup.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- monimarkup.php	27 Nov 2008 00:55:17 -0000	1.7
  +++ monimarkup.php	28 Nov 2008 06:58:43 -0000	1.8
  @@ -3,12 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a moniwiki formatting processor for the MoniWiki
   //
  -// $Id: monimarkup.php,v 1.7 2008/11/27 00:55:17 wkpark Exp $
  +// $Id: monimarkup.php,v 1.8 2008/11/28 06:58:43 wkpark Exp $
   /**
    * @date    2006-08-09
    * @name    Moniwiki Processor
    * @desc    Moniwiki default processor
  - * @version $Revision: 1.7 $
  + * @version $Revision: 1.8 $
    * @depend  1.1.3
    * @license GPL
    */
  @@ -130,13 +130,19 @@
           $_eop=0; // end of paragraph
           $oline=null;
           foreach ($lines as $line) {
  +            $tr=strlen(trim($line));
               if (substr($line,-1) == '&') { $oline.="\n".$line; continue; }
               if (!empty($oline) and preg_match('/^\s*\|\|/',$oline)) {
                   if ( !preg_match('/\|\|$/',$oline)) {
                       $oline.="\n".$line; continue;
  +                } else if (!$tr) {
  +                    $chunk[]= $oline."\n".$line;
  +                    $_eop=0;
  +                    $oline=null;
  +                    continue;
                   }
               }
  -            if (!trim($line)) {
  +            if (!$tr) {
                   if ($_in_li) $oline.="\n".$line;
                   else {
                       $oline.=isset($oline) ? "\n".$line:$line;
  @@ -162,7 +168,7 @@
                   $_in_li=0;
                   $chunk[]=array('tag'=>'HR','type'=>'complete','value'=>$m[1]);
                   continue;
  -            } else if (preg_match("/^((?:\>\s)*\>(\.\w+)?\s|\s+)/",$line,$m)) {
  +            } else if (preg_match("/^((?:\>\s)*\>(\.\w+)?\s?|\s+)/",$line,$m)) {
                   $_eop=0;
                   $mytype=array('tag'=>'LIST','type'=>'di');
                   $indlen=$myindlen=strlen($m[0])-strlen($m[2]);
  
  
  


wkpark      2008/11/28 15:59:50

  Modified:    plugin/processor bts.php
  Log:
  add a info. etc.
  
  Revision  Changes    Path
  1.4       +29 -12    moniwiki/plugin/processor/bts.php
  
  Index: bts.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/bts.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- bts.php	27 Nov 2008 00:55:17 -0000	1.3
  +++ bts.php	28 Nov 2008 06:59:50 -0000	1.4
  @@ -1,9 +1,17 @@
   <?php
  -// Copyright 2006 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2006-2008 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a bug track system plugin for the MoniWiki
   //
  -// $Id: bts.php,v 1.3 2008/11/27 00:55:17 wkpark Exp $
  +// Author: Won-Kyu Park <wkpark@kldp.org>
  +// Date: 2006-01-09
  +// Name: BugTrackingSystem
  +// Description: a Simpl Bug Track System for MoniWiki
  +// URL: MoniWiki:BugTrackingSystem
  +// Version: $Revision: 1.4 $
  +// License: GPL
  +//
  +// $Id: bts.php,v 1.4 2008/11/28 06:59:50 wkpark Exp $
   
   include_once("lib/metadata.php");
   
  @@ -125,8 +133,10 @@
       }
   
       $metas=getMetadata($meta);
  -    $head="##[[InputForm(form:get:bts)]]\n##[[HTML(<table><tr><td valign='top'>)]]\n";
  +    $head="##[[InputForm(form:get:bts)]]\n##[[HTML(<table width='100%'><tr><td @@ valign='top'>)]]\n";
       $extra='';
  +    $attr='<tablewidth="100%">';
  +    $sep=1;
       foreach ($metas as $k=>$v) {
           $kk=$k;
           if (in_array($k,array('Version','Component'))) {
  @@ -136,30 +146,37 @@
               if ($confs[$kk])
                   $v='[[InputForm(:'._($kk).':'.str_replace($v,$v.' 1',$confs[$kk]).')]]';
               $k=substr($k,2);
  -            if ($k=='Separator') {
  -                $head.="\n##\n##[[HTML(</td><td valign='top'>)]]\n";
  +            if (substr($k,0,9) =='Separator') {
  +                $sep++;
  +                $head.="\n##\n##[[HTML(</td><td @@ valign='top'>)]]\n";
  +                $attr='<tablewidth="100%">';
               } else {
  -                if ($k=='Date-Submitted') $v='[[DateTime('.$v.')]]';
  -                $head.="|| ''".$k."'' || ".$v." ||\n";
  +                if (substr($k,0,4)=='Date') $v='[[DateTime('.$v.')]]';
  +                $head.="||".$attr." ''".$k."'' || ".$v." ||\n";
  +                $attr='';
               }
           } else {
               if ($k=='Summary' or $k=='Keywords') {
                   $v=str_replace(':','&#58;',$v);
                   $v='[[InputForm(input:'._($k).':'.$confs[$k].':'.$v.')]]';
  -                $extra.="||'''"._($k)."'''||$v||\n";
  +                $extra.="|| '''"._($k)."'''''':'''||$v||\n";
               } else {
                   if ($confs[$kk])
                       $v='[[InputForm(:'._($kk).':'.str_replace($v,$v.' 1',$confs[$kk]).')]]';
  -                $head.="|| '''"._($k)."''' ||".$v." ||\n";
  +                $head.="||".$attr."<width='30%'> '''"._($k)."'''''':'''||".$v." ||\n";
  +                $attr='';
               }
           }
       }
  -
  -    # print '<pre>'.$head.'</pre>';
  +    $attr='width="100%"';
  +    if ($sep > 1) $attr='width="'.(100/$sep).'%"';
  +    $head=preg_replace('/@@/',$attr,$head);
  +    
       $head.=
  -        "\n##\n\n##[[HTML(</td></tr></table>)]]\n".
  +        "\n##\n##[[HTML(</td></tr></table>)]]\n".
           $extra."\n".
           "[[InputForm(submit:"._("Save Changes").")]]\n##[[InputForm]]";
  +    #print '<pre>'.$head.'</pre>';
       print <<<HEAD
   <fieldset id="bts-properties"><legend>Change Properties</legend>
   HEAD;
  
  
  


wkpark      2008/11/28 19:24:07

  Modified:    local/Wikiwyg/css moniwyg.css wysiwyg.css
  Log:
  beautified mode switcher
  
  Revision  Changes    Path
  1.6       +44 -1     moniwiki/local/Wikiwyg/css/moniwyg.css
  
  Index: moniwyg.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/css/moniwyg.css,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- moniwyg.css	19 Oct 2007 02:31:17 -0000	1.5
  +++ moniwyg.css	28 Nov 2008 10:24:07 -0000	1.6
  @@ -11,8 +11,51 @@
       padding: 4px;
   }
   
  -span.wikiwyg_control_link {
  +.wikiwyg_control_link input {
  +    font-family:'Trebuchet MS',sans-serif;
  +}
  +
  +.wikiwyg_mode_selector {
  +    font-family:'Trebuchet MS',sans-serif;
  +    list-style-image: none;
  +    list-style-type: none;
  +    list-style-position: outside;
  +    margin: 0;
  +    padding:0;
  +    display: inline;
  +}
  +
  +.wikiwyg_mode_selector li:hover {
  +    cursor: pointer;
  +    background-position: left -65px;
  +}
  +
  +.wikiwyg_mode_selector li:hover span {
  +    background-position: right -65px;
  +}
  +
  +ul.wikiwyg_mode_selector {
  +    display: inline;
  +}
  +
  +.wikiwyg_mode_selector li {
  +    padding: 5px 0px;
  +    margin-left: 5px;
  +    background: url(../images/modebtn.gif) no-repeat;
  +    background-position: left -63px;
  +    display: inline;
  +}
  +
  +.wikiwyg_mode_selector span {
  +    margin-left: 5px;
  +    background: url(../images/modebtn.gif) no-repeat;
  +}
   
  +.wikiwyg_mode_selector span {
  +    display: inline;
  +    padding: 5px 10px;
  +    padding-left:5px;
  +    background-position: right -63px;
   }
   
   .wikiwyg_toolbar label {
  
  
  
  1.5       +0 -1      moniwiki/local/Wikiwyg/css/wysiwyg.css
  
  Index: wysiwyg.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/css/wysiwyg.css,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- wysiwyg.css	6 Nov 2007 08:14:47 -0000	1.4
  +++ wysiwyg.css	28 Nov 2008 10:24:07 -0000	1.5
  @@ -1,4 +1,3 @@
  -
   td.wiki, table.wiki, table.wiki td {
       border: 1px dotted black;
       background-color: #F0F4FF;
  
  
  


wkpark      2008/11/28 19:24:08

  Added:       local/Wikiwyg/images modebtn.gif
  Log:
  beautified mode switcher
  
  Revision  Changes    Path
  1.1                  moniwiki/local/Wikiwyg/images/modebtn.gif
  
  	<<Binary file>>
  
  


wkpark      2008/11/28 19:24:08

  Modified:    local/Wikiwyg/lib/Wikiwyg Toolbar.js
  Log:
  beautified mode switcher
  
  Revision  Changes    Path
  1.7       +20 -16    moniwiki/local/Wikiwyg/lib/Wikiwyg/Toolbar.js
  
  Index: Toolbar.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/lib/Wikiwyg/Toolbar.js,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- Toolbar.js	19 Oct 2007 02:28:03 -0000	1.6
  +++ Toolbar.js	28 Nov 2008 10:24:08 -0000	1.7
  @@ -207,7 +207,11 @@
   }
   
   proto.addModeSelector = function() {
  -    var span = document.createElement('span');
  +    var cntrl = Wikiwyg.createElementWithAttrs(
  +        'ul', {
  +            class: 'wikiwyg_mode_selector'
  +        }
  +    );
   
       var control_buttons=[];
       if (this.controls) {
  @@ -217,41 +221,41 @@
           }
       }
   
  -    var radio_name = Wikiwyg.createUniqueId();
  +    var btn_name = Wikiwyg.createUniqueId();
       for (var i = 0; i < this.wikiwyg.config.modeClasses.length; i++) {
           var class_name = this.wikiwyg.config.modeClasses[i];
           if (control_buttons[class_name]) continue;
           var mode_object = this.wikiwyg.mode_objects[class_name];
    
  -        var radio_id = Wikiwyg.createUniqueId();
  +        var btn_id = Wikiwyg.createUniqueId();
    
           var checked = i == 0 ? 'checked' : '';
  -        var radio = Wikiwyg.createElementWithAttrs(
  -            'input', {
  -                type: 'radio',
  -                name: radio_name,
  -                id: radio_id,
  -                value: mode_object.classname
  +        var btn = Wikiwyg.createElementWithAttrs(
  +            'li', {
  +                id: btn_id,
  +                class: mode_object.classname
                   /* 'checked': checked */
               }
           );
  +        /*
           if (!this.firstModeRadio)
  -            this.firstModeRadio = radio;
  +            this.firstModeRadio = btn;
  +        */
    
           var self = this;
  -        radio.onclick = function() { 
  -            self.wikiwyg.switchMode(this.value);
  +        btn.onclick = function() { 
  +            self.wikiwyg.switchMode(this.className);
           };
    
           var label = Wikiwyg.createElementWithAttrs(
  -            'label', { 'for': radio_id }
  +            'span', { 'for': btn_id }
           );
           label.appendChild(document.createTextNode(mode_object.modeDescription));
   
  -        span.appendChild(radio);
  -        span.appendChild(label);
  +        cntrl.appendChild(btn);
  +        btn.appendChild(label);
       }
  -    this.div.appendChild(span);
  +    this.div.appendChild(cntrl);
   }
   
   proto.add_break = function() {
  
  
  


wkpark      2008/11/28 19:25:03

  Modified:    local    moniwyg.js
  Log:
  remove preview button to the mode switcher
  
  Revision  Changes    Path
  1.51      +2 -2      moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.50
  retrieving revision 1.51
  diff -u -r1.50 -r1.51
  --- moniwyg.js	26 Nov 2008 11:14:15 -0000	1.50
  +++ moniwyg.js	28 Nov 2008 10:25:03 -0000	1.51
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.50 2008/11/26 11:14:15 wkpark Exp $
  +// $Id: moniwyg.js,v 1.51 2008/11/28 10:25:03 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -1838,7 +1838,7 @@
   }
   
   proto.config.controlLayout = [
  -    'save', 'preview', 'cancel', 'mode_selector', '/',
  +    'save', /* 'preview', */ 'cancel', 'mode_selector', '/',
       'bold',
       'italic',
       'link',
  
  
  


wkpark      2008/11/28 20:39:43

  Modified:    local/SWFUpload moni.js swfupload.css upload.swf
  Log:
  update
  
  Revision  Changes    Path
  1.5       +5 -5      moniwiki/local/SWFUpload/moni.js
  
  Index: moni.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/SWFUpload/moni.js,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- moni.js	26 Apr 2008 03:46:48 -0000	1.4
  +++ moni.js	28 Nov 2008 11:39:43 -0000	1.5
  @@ -1,4 +1,4 @@
  -﻿Math.roundf = function(val, precision) {
  +Math.roundf = function(val, precision) {
       var p = this.pow(10, precision);
       return this.round(val * p) / p;
   }
  @@ -165,11 +165,9 @@
           isImg=1;
   
           if (jspreview) {
  -            myAlign="<div id='previewAlign'>";
  -            myAlign+=" <img src='" + img_dir + "/normal.png' class='alignImg' onclick='javascript:alignImg(this,\"normal\")' />";
  +            myAlign =" <img src='" + img_dir + "/normal.png' class='alignImg' onclick='javascript:alignImg(this,\"normal\")' />";
               myAlign+=" <img src='" + img_dir + "/left.png'  class='alignImg' onclick='javascript:alignImg(this,\"left\")' />";
               myAlign+=" <img src='" + img_dir + "/right.png'  class='alignImg' onclick='javascript:alignImg(this,\"right\")' />";
  -            myAlign+="</div>";
           }
       } else {
           if (ext.match(/^(wmv|avi|mpeg|mpg|swf|wav|mp3|ogg|midi|mid|mov)$/)) {
  @@ -192,7 +190,9 @@
           href_open="<a href=\""+ path + "\" rel=\"lightbox[mmswf]\" onclick=\"" + myclick + "; return false;\">";href_close="</a>";
       }
   
  -    preview.innerHTML=myAlign + href_open + fname + href_close;
  +    var align = document.getElementById("previewAlign");
  +    align.innerHTML=myAlign;
  +    preview.innerHTML=href_open + fname + href_close;
   }
   
   /*
  
  
  
  1.4       +8 -2      moniwiki/local/SWFUpload/swfupload.css
  
  Index: swfupload.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/SWFUpload/swfupload.css,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- swfupload.css	16 Dec 2006 00:08:56 -0000	1.3
  +++ swfupload.css	28 Nov 2008 11:39:43 -0000	1.4
  @@ -10,10 +10,16 @@
     vertical-align: top;
   }
   
  +#previewAlign {
  +  text-align:center;
  +}
  +
   #filePreview {
  -  width:100px;
  -  min-height: 13px;
  +  /* width:100px; */
  +  min-height: 64px;
  +  min-width: 64px;
     border: 1px solid #f3f3f3;
  +  background: url(./images/photo.png) no-repeat;
   }
   
   .fileList td {
  
  
  
  1.2       +9 -4      moniwiki/local/SWFUpload/upload.swf
  
  	<<Binary file>>
  
  


wkpark      2008/11/28 20:39:43

  Added:       local/SWFUpload/images photo.png
  Log:
  update
  
  Revision  Changes    Path
  1.1                  moniwiki/local/SWFUpload/images/photo.png
  
  	<<Binary file>>
  
  


wkpark      2008/11/28 20:40:31

  Modified:    plugin   SWFUpload.php
  Log:
  more enhancement
  
  Revision  Changes    Path
  1.9       +9 -6      moniwiki/plugin/SWFUpload.php
  
  Index: SWFUpload.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SWFUpload.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- SWFUpload.php	26 Apr 2008 03:46:48 -0000	1.8
  +++ SWFUpload.php	28 Nov 2008 11:40:31 -0000	1.9
  @@ -8,12 +8,12 @@
   // Name: SWF Upload
   // Description: SWF Upload Plugin
   // URL: http://labb.dev.mammon.se/swfupload/ MoniWikiDev:SWFUpload
  -// Version: $Revision: 1.8 $
  +// Version: $Revision: 1.9 $
   // License: GPL
   //
   // Usage: [[SWFUpload]]
   //
  -// $Id: SWFUpload.php,v 1.8 2008/04/26 03:46:48 wkpark Exp $
  +// $Id: SWFUpload.php,v 1.9 2008/11/28 11:40:31 wkpark Exp $
   
   function macro_SWFUpload($formatter,$value) {
       global $DBInfo;
  @@ -130,6 +130,12 @@
   	</td>
   	</tr><tr>
   	<td>
  +	<div id="previewAlign">
  +	</div>
  +	<div id="filePreview"$jsPreview>
  +	</div>
  +	</td>
  +	<td>
   	<div id="filesDisplay">
                   <form target='_blank' method='POST' action='$action'>
   		<ul id="mmUploadFileListing">$uploaded</ul>
  @@ -143,10 +149,7 @@
                   </form>
   	</div>
   	</td>
  -	<td>
  -	<div id="filePreview"$jsPreview>
  -	</div>
  -	</td></tr>
  +        </tr>
   	</table>
   	</div>
   EOF;
  
  
  


wkpark      2008/11/28 20:42:36

  Modified:    plugin   Comment.php
  Log:
  fixed message
  
  Revision  Changes    Path
  1.32      +3 -2      moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- Comment.php	19 Apr 2008 15:58:07 -0000	1.31
  +++ Comment.php	28 Nov 2008 11:42:36 -0000	1.32
  @@ -6,7 +6,7 @@
   // Usage: [[Comment]], ?action=comment
   //
   //
  -// $Id: Comment.php,v 1.31 2008/04/19 15:58:07 wkpark Exp $
  +// $Id: Comment.php,v 1.32 2008/11/28 11:42:36 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $DBInfo;
  @@ -164,7 +164,8 @@
           $button_preview=1;
         }
       } else {
  -      $options['msg']= _("You need a ticket !");
  +      if (!$button_preview)
  +        $options['msg']= _("You need a ticket !");
         $button_preview=1;
       }
     } else {
  
  
  


wkpark      2008/11/28 21:49:04

  Modified:    plugin   SmileyChooser.php
  Log:
  check the old or new wiki-engine.
  
  Revision  Changes    Path
  1.14      +3 -2      moniwiki/plugin/SmileyChooser.php
  
  Index: SmileyChooser.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SmileyChooser.php,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- SmileyChooser.php	27 Apr 2008 09:32:33 -0000	1.13
  +++ SmileyChooser.php	28 Nov 2008 12:49:04 -0000	1.14
  @@ -5,7 +5,7 @@
   //
   // Usage: [[SmileyChooser]]
   //
  -// $Id: SmileyChooser.php,v 1.13 2008/04/27 09:32:33 wkpark Exp $
  +// $Id: SmileyChooser.php,v 1.14 2008/11/28 12:49:04 wkpark Exp $
   
   function do_smileychooser($formatter,$params=array()) {
     $list=macro_SmileyChooser($formatter,$params['page'],$params);
  @@ -58,7 +58,8 @@
       var myhtml='';
       myhtml= HTTPPost(self.location, postdata);
   
  -    var m = myhtml.match(/<div>(.*)\\n<\/div>/i); // strip div tag
  +    // check the old wiki-engine or the new monimarkup
  +    var m = myhtml.match(/<div>(.*)\\n<\/div>/i) || myhtml.match(/<p class="[^"]+">(.*)<\/p>/i); // strip div tag
       if (m) {
         var html = m[1] + ' ';
         if (is_ie) {
  
  
  


wkpark      2008/11/28 22:05:56

  Modified:    plugin/processor monimarkup.php
  Log:
  textile styling workaround with flag icons
  
  Revision  Changes    Path
  1.9       +9 -3      moniwiki/plugin/processor/monimarkup.php
  
  Index: monimarkup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/monimarkup.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- monimarkup.php	28 Nov 2008 06:58:43 -0000	1.8
  +++ monimarkup.php	28 Nov 2008 13:05:56 -0000	1.9
  @@ -3,12 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a moniwiki formatting processor for the MoniWiki
   //
  -// $Id: monimarkup.php,v 1.8 2008/11/28 06:58:43 wkpark Exp $
  +// $Id: monimarkup.php,v 1.9 2008/11/28 13:05:56 wkpark Exp $
   /**
    * @date    2006-08-09
    * @name    Moniwiki Processor
    * @desc    Moniwiki default processor
  - * @version $Revision: 1.8 $
  + * @version $Revision: 1.9 $
    * @depend  1.1.3
    * @license GPL
    */
  @@ -563,7 +563,13 @@
   
                   if (preg_match('/^((\s*)(&lt;|=|>)?{([^}]+)})/s',$c,$sty)) {
                       if ($sty[3]) $sty[4].=';'.$palign[$sty[3]];
  -                    $c=$sty[2].substr($c,strlen($sty[1]));
  +                    # {es} => not style
  +                    # {color:red} => style
  +                    if (preg_match('/:/',$sty[4])) $c=$sty[2].substr($c,strlen($sty[1]));
  +                    else {
  +                        $c=$sty[2].'{'.$sty[4].'}'.substr($c,strlen($sty[1]));
  +                        $sty[4]='';
  +                    }
                   }
   
                   if ($formatter->auto_linebreak)
  
  
  


wkpark      2008/11/29 10:50:45

  Modified:    local    moniwyg.js wikibits.js
  Log:
  fixed safari/chrome/IE problem with the WikiWyg
  
  Revision  Changes    Path
  1.52      +24 -12    moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.51
  retrieving revision 1.52
  diff -u -r1.51 -r1.52
  --- moniwyg.js	28 Nov 2008 10:25:03 -0000	1.51
  +++ moniwyg.js	29 Nov 2008 01:50:45 -0000	1.52
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.51 2008/11/28 10:25:03 wkpark Exp $
  +// $Id: moniwyg.js,v 1.52 2008/11/29 01:50:45 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -780,29 +780,40 @@
           // XXX iframe need to be a element of the body.
           if (Wikiwyg.is_ie) {
               // http://dojofindings.blogspot.com/2007/09/dynamically-creating-iframes-with.html
  -            iframe = document.createElement('<iframe onload="iframeHandler()">');
  +            iframe = document.createElement('<iframe onload="iframeHandler()" frameBorder="0">');
           } else {
               iframe = document.createElement('iframe');
           }
           body = document.getElementsByTagName('body')[0];
  -        // body.appendChild(iframe);
  +        body.appendChild(iframe);
           // You can't get 'frameBorder=no' if you appendChild at this line. :( IE bug.
  -        iframe.border='0';
  -        iframe.frameBorder='no';
       }
   
       var self=this;
   
       // from http://www.codingforums.com/archive/index.php?t-63511.html
       // mozilla and IE hack !!
  -
       iframeHandler = function() {
           //Fx workaround: delay modifying editorDoc.body right after iframe onload event
  +        var w3c = iframe.contentDocument !== undefined ? true: false;
  +        var doc = w3c ? iframe.contentDocument:iframe.contentWindow.document;
  +        var head = doc.getElementsByTagName("head");
  +        if (Wikiwyg.is_ie) {
  +            iframe.setAttribute('style','padding:3px;border:1px solid gray;padding-right:0;padding-bottom:0;width:99%');
  +            iframe.style.border = '1px solid activeborder';
  +        }
  +
           setTimeout(function() {
  -            var doc = iframe.contentDocument || iframe.contentWindow;
  -            if (doc.document) doc = doc.document; // safari/chrome fix
  -            var head = doc.getElementsByTagName("head")[0];
  -            doc.designMode = 'on';
  +            // safari
  +            // http://code.google.com/p/phpwcms/source/browse/trunk/include/inc_ext/spaw2/js/safari/editor.js
  +            if (!head || head.length == 0) {
  +                head = doc.createElement("head");
  +                doc.childNodes[0].insertBefore(head, doc.body);
  +                iframe.setAttribute('style','padding:3px;border:1px solid gray;padding-right:0;padding-bottom:0;width:97%');
  +            } else {
  +                head = head[0];
  +            }
  +            doc.designMode = w3c ? 'on':'On';
   
               self.apply_stylesheets();
               var link = doc.createElement('link');
  @@ -835,7 +846,7 @@
       iframe.onload=iframeHandler; // ignored by IE :(
   
   
  -    body.appendChild(iframe);
  +    //body.appendChild(iframe);
   
       return iframe;
   }
  @@ -871,6 +882,7 @@
       this.edit_iframe.style.border = '1px solid activeborder';
       //this.edit_iframe.style.backgroundColor = '#ffffff';
       //this.edit_iframe.setAttribute('style','1px solid ThreeDFace;background:#fff;');
  +    this.edit_iframe.setAttribute('style','padding:3px;border:1px solid activeborder;padding-right:0px');
       this.edit_iframe.width = '99%';
       //this.edit_iframe.style.display='block';
       this.edit_iframe.frameBorder='no';
  @@ -2512,7 +2524,7 @@
   // dynamic section editing for MoniWiki
   //
   
  -wikiwygs = [];
  + wikiwygs = [];
   
   function sectionEdit(ev,obj,sect) {
       var area;
  
  
  
  1.6       +55 -9     moniwiki/local/wikibits.js
  
  Index: wikibits.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/wikibits.js,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- wikibits.js	21 Nov 2007 13:42:11 -0000	1.5
  +++ wikibits.js	29 Nov 2008 01:50:45 -0000	1.6
  @@ -1,7 +1,7 @@
   // from the MediaWiki
   // simplified for the MoniWiki by wkpark
   //
  -// $Id: wikibits.js,v 1.5 2007/11/21 13:42:11 wkpark Exp $
  +// $Id: wikibits.js,v 1.6 2008/11/29 01:50:45 wkpark Exp $
   //
   // Wikipedia JavaScript support functions
   // if this is true, the toolbar will no longer overwrite the infobox when you move the mouse over individual items
  @@ -109,20 +109,61 @@
   // use sampleText instead of selection if there is none
   // copied and adapted from phpBB
   function insertTags(tagOpen, tagClose, sampleText) {
  -	if (document.editform)
  -		var txtarea = document.editform.savetext;
  +	var is_ie = document.selection && document.all;
  +	var my = document.getElementById('editor_area');
  +	var doc = document;
  +	if (doc.editform)
  +		var txtarea = doc.editform.savetext;
   	else {
   		// some alternate form? take the first one we can find
  -		var areas = document.getElementsByTagName('textarea');
  -		var txtarea = areas[0];
  +		var areas = doc.getElementsByTagName('textarea');
  +		if (areas.length > 0) {
  +			var txtarea = areas[0];
  +		} else if (opener) {
  +			doc = opener.document;
  +			if (doc.editform && doc.editform.savetext) {
  +				txtarea = doc.editform.savetext;
  +			} else {
  +				txtarea = doc.getElementsByTagName('textarea')[0];
  +			}
  +        		my = doc.getElementById('editor_area');
  +		}
  +	}
  +
  +	while (my == null || my.style.display == 'none') { // wikiwyg hack
  +		txtarea = doc.getElementById('wikiwyg_wikitext_textarea');
  +
  +		// get iframe and check visibility.
  +		var myframe = doc.getElementsByTagName('iframe')[0];
  +		if (myframe.style.display == 'none' || myframe.parentNode.style.display == 'none') break;
  +
  +		var postdata = 'action=markup/ajax&value=' + encodeURIComponent(tagOpen + sampleText + tagClose);
  +		var myhtml='';
  +		myhtml= HTTPPost(self.location, postdata);
  +
  +		var mnew = myhtml.replace(/^<div>/i,''); // strip div tag
  +		mnew = mnew.replace(/<\/div>\s*$/i,''); // strip div tag
  +
  +		if (is_ie) {
  +			var range = myframe.contentWindow.document.selection.createRange();
  +			if (range.boundingTop == 2 && range.boundingLeft == 2)
  +				return;
  +			range.pasteHTML(html);
  +			range.collapse(false);
  +			range.select();
  +		} else {
  +			myframe.contentWindow.document.execCommand('inserthtml', false, mnew + ' ');
  +		}
  +
  +		return;
   	}
   
   	// IE
   	// http://www.bazon.net/mishoo/articles.epl?art_id=1292 (used by this script)
   	// http://the-stickman.com/web-development/javascript/finding-selection-cursor-position-in-a-textarea-in-internet-explorer/
  -	if(document.selection  && !is_gecko) {
  +	if(doc.selection  && !is_gecko) {
   		txtarea.focus();
  -		var r = document.selection.createRange();
  +		var r = doc.selection.createRange();
   		var range = r.duplicate();
   		var endText = '';
   
  @@ -162,6 +203,11 @@
   			subst = tagOpen + myText + tagClose;
   		}
   
  +		if (!myText.match(/== /) /* == Heading == */
  +				&& subst != sampleText && myText != sampleText) {
  +			subst=tagOpen + sampleText + tagClose;
  +		}
  +
   		txtarea.value = txtarea.value.substring(0, startPos) + subst +
   			txtarea.value.substring(endPos, txtarea.value.length);
   		txtarea.focus();
  @@ -185,7 +231,7 @@
   		}
   		if(!text) { text=sampleText;}
   		text=tagOpen+text+tagClose;
  -		document.infoform.infobox.value=text;
  +		doc.infoform.infobox.value=text;
   		// in Safari this causes scrolling
   		if(!is_safari) {
   			txtarea.focus();
  @@ -194,7 +240,7 @@
   	}
   	// reposition cursor if possible
   	if (txtarea.createTextRange)
  -		txtarea.caretPos = document.selection.createRange().duplicate();
  +		txtarea.caretPos = doc.selection.createRange().duplicate();
   }
   
   function toggleSameFormat(start, end, sel) {
  
  
  


wkpark      2008/11/29 10:50:46

  Modified:    local/SWFUpload moni.js swfupload.css
  Log:
  fixed safari/chrome/IE problem with the WikiWyg
  
  Revision  Changes    Path
  1.6       +12 -4     moniwiki/local/SWFUpload/moni.js
  
  Index: moni.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/SWFUpload/moni.js,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- moni.js	28 Nov 2008 11:39:43 -0000	1.5
  +++ moni.js	29 Nov 2008 01:50:45 -0000	1.6
  @@ -123,7 +123,7 @@
       }
   }
   
  -function showImgPreview(filename) {
  +function showImgPreview(filename,temp) {
       var preview = document.getElementById("filePreview");
       if (!preview) return;
       var tag_open='attachment:',tag_close='';
  @@ -144,12 +144,12 @@
   
       mydir = mydir ? mydir:'';
   
  -    path = _url_prefix + '/pds/.swfupload/' + mydir + filename;
  -
  -    if (preview.className=="previewTag") {
  +    if (document.editform) {
           jspreview=1;
       }
   
  +    path = _url_prefix + '/pds/.swfupload/' + mydir + filename;
  +
       if (jspreview) {
           tag_open="attachment:"; tag_close="";
   //      if (opener != value) tag_open+=opener;
  @@ -161,6 +161,14 @@
       var isImg=0;
       var myAlign='';
       if (ext && ext.match(/gif|png|jpeg|jpg|bmp/)) {
  +        if (temp) {
  +            var postdata = 'action=markup/ajax&value=' + encodeURIComponent("attachment:" + filename);
  +            var myhtml='';
  +            myhtml= HTTPPost(self.location, postdata);
  +
  +            var m = myhtml.match(/<img src=(\'|\")([^\'\"]+)\1/i); // strip div tag
  +            path = m[2];
  +        }
           fname="<img src='" + path + "' width='" + preview_width + ' ' + alt + " />";
           isImg=1;
   
  
  
  
  1.5       +1 -0      moniwiki/local/SWFUpload/swfupload.css
  
  Index: swfupload.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/SWFUpload/swfupload.css,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- swfupload.css	28 Nov 2008 11:39:43 -0000	1.4
  +++ swfupload.css	29 Nov 2008 01:50:45 -0000	1.5
  @@ -32,6 +32,7 @@
       
   #SWFUpload {
     margin-left: 20px;
  +  height:1px;
   }
       
   #mmUploadFileListing {
  
  
  


wkpark      2008/11/29 10:50:46

  Modified:    local/Wikiwyg/lib/Wikiwyg Toolbar.js
  Log:
  fixed safari/chrome/IE problem with the WikiWyg
  
  Revision  Changes    Path
  1.8       +2 -2      moniwiki/local/Wikiwyg/lib/Wikiwyg/Toolbar.js
  
  Index: Toolbar.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/lib/Wikiwyg/Toolbar.js,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Toolbar.js	28 Nov 2008 10:24:08 -0000	1.7
  +++ Toolbar.js	29 Nov 2008 01:50:46 -0000	1.8
  @@ -209,7 +209,7 @@
   proto.addModeSelector = function() {
       var cntrl = Wikiwyg.createElementWithAttrs(
           'ul', {
  -            class: 'wikiwyg_mode_selector'
  +            'class': 'wikiwyg_mode_selector'
           }
       );
   
  @@ -233,7 +233,7 @@
           var btn = Wikiwyg.createElementWithAttrs(
               'li', {
                   id: btn_id,
  -                class: mode_object.classname
  +                'class': mode_object.classname
                   /* 'checked': checked */
               }
           );
  
  
  


wkpark      2008/11/29 10:54:07

  Modified:    plugin   Attachment.php SWFUpload.php
  Log:
  enhanced SWFUpload plugin. now SWFupload can be used as a replacement of the UploadForm
  
  Revision  Changes    Path
  1.39      +42 -4     moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- Attachment.php	29 May 2008 13:45:56 -0000	1.38
  +++ Attachment.php	29 Nov 2008 01:54:07 -0000	1.39
  @@ -7,13 +7,13 @@
   // Name: Attachment
   // Description: Attachment Plugin
   // URL: MoniWiki:AttachmentPlugin
  -// Version: $Revision: 1.38 $
  +// Version: $Revision: 1.39 $
   // Depend: 1.1.3
   // License: GPL
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.38 2008/05/29 13:45:56 wkpark Exp $
  +// $Id: Attachment.php,v 1.39 2008/11/29 01:54:07 wkpark Exp $
   
   function macro_Attachment($formatter,$value,$options='') {
     global $DBInfo;
  @@ -62,7 +62,7 @@
         $fname=substr($text,11);
         $ntext=macro_Attachment($formatter,$fname,array('link'=>1));
       }
  -    if (preg_match("/\.(png|gif|jpeg|jpg)$/i",$ntext)) {
  +    if (preg_match("/\.(png|gif|jpeg|jpg|bmp)$/i",$ntext)) {
         $_l_ntext=_l_filename($ntext);
         if (!file_exists($_l_ntext)) {
           $fname=preg_replace('/^"([^"]*)"$/',"\\1",$fname);
  @@ -170,6 +170,44 @@
     $_l_upload_file=$dir.'/'.$_l_file;
   
     if (file_exists($_l_upload_file)) {
  +    $file_ok=1;
  +  } else if ($formatter->wikimarkup and !$options['nomarkup']) {
  +    if ($DBInfo->swfupload_depth > 2) {
  +      $depth=$DBInfo->swfupload_depth;
  +    } else {
  +      $depth=2;
  +    }
  +
  +    if ($DBInfo->nosession) { // ip based
  +      $myid=md5($_SERVER['REMOTE_ADDR'].'.'.'MONIWIKI'); // FIXME
  +    } else {
  +      $myid=session_id();
  +    }
  +    $prefix=substr($myid,0,$depth);
  +    $mydir=$DBInfo->upload_dir.'/.swfupload/'.$prefix.'/'.$myid;
  +    if (file_exists($mydir.'/'.$_l_file)) {
  +      if (!$img_link && preg_match("/\.(png|gif|jpeg|jpg|bmp)$/i",$upload_file)) {
  +        $ntext=qualifiedUrl($DBInfo->url_prefix.'/'.$mydir.'/'.$text);
  +        $img_link='<img src="'.$ntext.'" alt="'.$text.'" border="0" />';
  +        return $bra."<span class=\"attach\">$img_link</span>".$ket;
  +      } else {
  +        $sz=filesize($mydir.'/'.$_l_file);
  +        $unit=array('Bytes','KB','MB','GB','TB');
  +        for ($i=0;$i<4;$i++) {
  +          if ($sz <= 1024) {
  +            #$sz= round($sz,2).' '.$unit[$i];
  +            break;
  +          }
  +          $sz=$sz/1024;
  +        }
  +        $info=' ('.round($sz,2).' '.$unit[$i].') ';
  +
  +        return $bra."<span class=\"attach\">".$formatter->icon['attach'].$text.'</span>'.$info.$ket;
  +      }
  +    }
  +  }
  +
  +  if ($file_ok) {
   
       $imgcls='imgAttach';
   
  @@ -205,7 +243,7 @@
       if (!in_array('UploadedFiles',$formatter->actions))
         $formatter->actions[]='UploadedFiles';
   
  -    if (!$img_link && preg_match("/\.(png|gif|jpeg|jpg)$/i",$upload_file)) {
  +    if (!$img_link && preg_match("/\.(png|gif|jpeg|jpg|bmp)$/i",$upload_file)) {
         // thumbnail
         if ($DBInfo->use_convert_thumbs and $use_thumb) {
           $thumb_width=$thumb['thumbwidth'] ? $thumb['thumbwidth']:150;
  
  
  
  1.10      +35 -8     moniwiki/plugin/SWFUpload.php
  
  Index: SWFUpload.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SWFUpload.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- SWFUpload.php	28 Nov 2008 11:40:31 -0000	1.9
  +++ SWFUpload.php	29 Nov 2008 01:54:07 -0000	1.10
  @@ -8,14 +8,14 @@
   // Name: SWF Upload
   // Description: SWF Upload Plugin
   // URL: http://labb.dev.mammon.se/swfupload/ MoniWikiDev:SWFUpload
  -// Version: $Revision: 1.9 $
  +// Version: $Revision: 1.10 $
   // License: GPL
   //
   // Usage: [[SWFUpload]]
   //
  -// $Id: SWFUpload.php,v 1.9 2008/11/28 11:40:31 wkpark Exp $
  +// $Id: SWFUpload.php,v 1.10 2008/11/29 01:54:07 wkpark Exp $
   
  -function macro_SWFUpload($formatter,$value) {
  +function macro_SWFUpload($formatter,$value,$opts=array()) {
       global $DBInfo;
   
       if ($DBInfo->swfupload_depth > 2) {
  @@ -75,6 +75,31 @@
           }
       }
   
  +    //
  +    // check already uploaed files
  +    //
  +    if (1) {
  +        $value=$formatter->page->urlname;
  +        $key=$DBInfo->pageToKeyname($formatter->page->name);
  +        $mydir=$DBInfo->upload_dir."/$key";
  +
  +        $handle = opendir($mydir);
  +        if ($handle) {
  +            $files=array();
  +            while ($file = readdir($handle)) {
  +                if (is_dir($mydir.$file) or $file[0]=='.') continue;
  +                $files[] = $file;
  +            }
  +            closedir($handle);
  +
  +            foreach ($files as $f) {
  +                $uploaded.="<li><input checked=\"checked\" disabled=\"disabled\" type=\"checkbox\">".
  +                    "<a href='javascript:showImgPreview(\"$f\",true)'>$f</a></li>";
  +            }
  +        }
  +
  +    }
  +
       if (!$swfupload_num) {
           $swfupload_script=<<<EOS
   	<script type="text/javascript" src="$DBInfo->url_prefix/local/SWFUpload/mmSWFUpload.js"></script>
  @@ -124,11 +149,8 @@
   	</script>
   
   	<div class="fileList">
  -	<table border='0' cellpadding='0'><tr>
  -	<td colspan='2'>
  -		<div id="fileProgressInfo"></div>
  -	</td>
  -	</tr><tr>
  +	<table border='0' cellpadding='0'>
  +	<tr>
   	<td>
   	<div id="previewAlign">
   	</div>
  @@ -150,6 +172,11 @@
   	</div>
   	</td>
           </tr>
  +	<tr>
  +	<td colspan='2'>
  +		<div id="fileProgressInfo"></div>
  +	</td>
  +	</tr>
   	</table>
   	</div>
   EOF;
  
  
  


wkpark      2008/11/29 11:21:22

  Modified:    .        wiki.php
  Log:
  support message styling
  
  Revision  Changes    Path
  1.401     +6 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.400
  retrieving revision 1.401
  diff -u -r1.400 -r1.401
  --- wiki.php	28 Nov 2008 02:25:32 -0000	1.400
  +++ wiki.php	29 Nov 2008 02:21:21 -0000	1.401
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.400 2008/11/28 02:25:32 wkpark Exp $
  +// $Id: wiki.php,v 1.401 2008/11/29 02:21:21 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.400 $',1,-1);
  +$_revision = substr('$Revision: 1.401 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -4345,10 +4345,12 @@
         $DBInfo->goto_form : goto_form($action,$DBInfo->goto_type);
   
       if ($options['msg'] or $msgtitle) {
  +      $msgtype = isset($options['msgtype']) ? $options['msgtype']:'warn';
  +      
         $mtitle=$msgtitle ? "<h3>".$msgtitle."</h3>\n":"";
         $msg=<<<MSG
  -<div class="message">
  -$mtitle$options[msg]
  +<div class="message"><span class='$msgtype'>
  +$mtitle$options[msg]</span>
   </div>
   MSG;
       }
  
  
  


wkpark      2008/11/29 11:44:01

  Modified:    local    wikibits.js
  Log:
  fixed last changes
  
  Revision  Changes    Path
  1.7       +8 -3      moniwiki/local/wikibits.js
  
  Index: wikibits.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/wikibits.js,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- wikibits.js	29 Nov 2008 01:50:45 -0000	1.6
  +++ wikibits.js	29 Nov 2008 02:44:01 -0000	1.7
  @@ -1,7 +1,7 @@
   // from the MediaWiki
   // simplified for the MoniWiki by wkpark
   //
  -// $Id: wikibits.js,v 1.6 2008/11/29 01:50:45 wkpark Exp $
  +// $Id: wikibits.js,v 1.7 2008/11/29 02:44:01 wkpark Exp $
   //
   // Wikipedia JavaScript support functions
   // if this is true, the toolbar will no longer overwrite the infobox when you move the mouse over individual items
  @@ -108,7 +108,7 @@
   // apply tagOpen/tagClose to selection in textarea,
   // use sampleText instead of selection if there is none
   // copied and adapted from phpBB
  -function insertTags(tagOpen, tagClose, sampleText) {
  +function insertTags(tagOpen, tagClose, sampleText,replace) {
   	var is_ie = document.selection && document.all;
   	var my = document.getElementById('editor_area');
   	var doc = document;
  @@ -179,6 +179,11 @@
   			subst = tagOpen + myText + tagClose;
   		}
   
  +		if (replace && !myText.match(/== /) /* == Heading == */
  +				&& subst != sampleText && myText != sampleText) {
  +			subst=tagOpen + sampleText + tagClose;
  +		}
  +
   		range.text = subst + endText;
   
   		range.setEndPoint('StartToStart', r);
  @@ -203,7 +208,7 @@
   			subst = tagOpen + myText + tagClose;
   		}
   
  -		if (!myText.match(/== /) /* == Heading == */
  +		if (replace && !myText.match(/== /) /* == Heading == */
   				&& subst != sampleText && myText != sampleText) {
   			subst=tagOpen + sampleText + tagClose;
   		}
  
  
  


wkpark      2008/11/29 11:44:02

  Modified:    local/SWFUpload moni.js
  Log:
  fixed last changes
  
  Revision  Changes    Path
  1.7       +4 -3      moniwiki/local/SWFUpload/moni.js
  
  Index: moni.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/SWFUpload/moni.js,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- moni.js	29 Nov 2008 01:50:45 -0000	1.6
  +++ moni.js	29 Nov 2008 02:44:01 -0000	1.7
  @@ -142,18 +142,19 @@
           mydir = form.mysubdir.value;
       }
   
  -    mydir = mydir ? mydir:'';
  -
       if (document.editform) {
           jspreview=1;
       }
   
  +    //var loc = location.protocol + '//' + location.host;
  +    //if (location.port) loc += ':' + location.port;
  +    //path = loc + _url_prefix + '/pds/.swfupload/' + mydir + filename;
       path = _url_prefix + '/pds/.swfupload/' + mydir + filename;
   
       if (jspreview) {
           tag_open="attachment:"; tag_close="";
   //      if (opener != value) tag_open+=opener;
  -//      alt="alt='" + tag_open + filename + tag_close +"'";
  +        alt="alt='" + tag_open + filename + tag_close +"'";
       }
   
       var m=filename.match(/\.(.{1,4})$/);
  
  
  


wkpark      2008/11/29 13:07:34

  Modified:    local    textarea.js
  Log:
  do not restrict the height of the wrapper with the textarea-resizer
  
  Revision  Changes    Path
  1.5       +3 -3      moniwiki/local/textarea.js
  
  Index: textarea.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/textarea.js,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- textarea.js	5 Nov 2007 11:40:12 -0000	1.4
  +++ textarea.js	29 Nov 2008 04:07:34 -0000	1.5
  @@ -1,4 +1,4 @@
  -// $Id: textarea.js,v 1.4 2007/11/05 11:40:12 wkpark Exp $
  +// $Id: textarea.js,v 1.5 2008/11/29 04:07:34 wkpark Exp $
   // $origId: textarea.js,v 1.9 2006/04/14 13:48:56 killes Exp $
   // from drupal
   // many functions are imported from drupal.js to eliminate dependency
  @@ -136,7 +136,7 @@
     this.grippie.onmousedown = function (e) { ta.beginDrag(e); };
   
     // Set wrapper and textarea dimensions
  -  this.wrapper.style.height = this.dimensions.height + this.grippie.dimensions.height + 1 +'px';
  +  //this.wrapper.style.height = this.dimensions.height + this.grippie.dimensions.height + 1 +'px';
     this.element.style.marginBottom = '0px';
     this.element.style.width = '100%';
     this.element.style.height = this.dimensions.height +'px';
  @@ -200,7 +200,7 @@
   
     // Set new height
     var height = Math.max(32, y - this.dragOffset - this.heightOffset);
  -  this.wrapper.style.height = height + this.grippie.dimensions.height + 1 + 'px';
  +  //this.wrapper.style.height = height + this.grippie.dimensions.height + 1 + 'px';
     this.element.style.height = height + 'px';
   
     // Avoid text selection
  
  
  


wkpark      2008/11/29 16:45:44

  Modified:    plugin   Info.php
  Log:
  gettextized
  
  Revision  Changes    Path
  1.18      +8 -8      moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Info.php,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- Info.php	23 Apr 2008 10:21:17 -0000	1.17
  +++ Info.php	29 Nov 2008 07:45:44 -0000	1.18
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Info plugin for the MoniWiki
   //
  -// $Id: Info.php,v 1.17 2008/04/23 10:21:17 wkpark Exp $
  +// $Id: Info.php,v 1.18 2008/11/29 07:45:44 wkpark Exp $
   
   function _parse_rlog($formatter,$log,$options=array()) {
     global $DBInfo;
  @@ -34,12 +34,12 @@
       $out="<div class='wikiInfo'><h2>"._("Revision History")."</h2>\n";
     $out.="<form id='infoform' method='post' action='$url'>";
     $out.="<table class='info' cellpadding='3' cellspacing='2'><tr>\n";
  -  $out.="<th class='info'>ver.</th><th class='info'>Date and Changes</th>".
  -       "<th class='info'>Editor</th>".
  +  $out.="<th class='info'>"._("ver.")."</th><th class='info'>"._("Date and Changes")."</th>".
  +       "<th class='info'>"._("Editor")."</th>".
          "<th class='info'><input type='submit' value='$diff_btn'></th>";
     if (!$simple) {
  -    $out.="<th class='info'>actions</th>";
  -    if (isset($admin)) $out.= "<th class='info'>admin.</th>";
  +    $out.="<th class='info'>"._("actions")."</th>";
  +    if (isset($admin)) $out.= "<th class='info'>"._("admin.")."</th>";
     }
     $out.= "</tr>\n";
   
  @@ -144,7 +144,7 @@
   
            $rrev= $rrev ? $rrev:$rev;
            $out.="<tr>\n";
  -         $out.="<th valign='top' rowspan=$rowspan>$rrev</th><td nowrap='nowrap'>$inf $change</td><td>$ip&nbsp;</td>";
  +         $out.="<th class='rev' valign='top' rowspan=$rowspan>$rrev</th><td nowrap='nowrap'>$inf $change</td><td>$ip&nbsp;</td>";
            $rrev='';
            $achecked="";
            $bchecked="";
  @@ -186,11 +186,11 @@
        }
     }
     if (!$simple and $admin):
  -  $out.="<tr><td colspan='6' align='right'><input type='checkbox' name='show' checked='checked' />show only ";
  +  $out.="<tr><td colspan='6' align='right'><input type='checkbox' name='show' checked='checked' />"._("show only").' ';
     if ($DBInfo->security->is_protected("rcspurge",$options)) {
       $out.="<input type='password' name='passwd'>";
     }
  -  $out.="<input type='submit' name='rcspurge' value='purge'></td></tr>";
  +  $out.="<input type='submit' name='rcspurge' value='"._("purge")."'></td></tr>";
     endif;
     $out.="<input type='hidden' name='action' value='diff'/></form></table>\n";
     $out.="<script type='text/javascript' src='$DBInfo->url_prefix/local/checkbox.js'></script></div>\n";
  
  
  


wkpark      2008/11/29 17:05:48

  Modified:    .        wiki.php
  Log:
  use urlencode to set the title attr. correctly
  
  Revision  Changes    Path
  1.402     +6 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.401
  retrieving revision 1.402
  diff -u -r1.401 -r1.402
  --- wiki.php	29 Nov 2008 02:21:21 -0000	1.401
  +++ wiki.php	29 Nov 2008 08:05:48 -0000	1.402
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.401 2008/11/29 02:21:21 wkpark Exp $
  +// $Id: wiki.php,v 1.402 2008/11/29 08:05:48 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.401 $',1,-1);
  +$_revision = substr('$Revision: 1.402 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2538,7 +2538,8 @@
             #return "<a class='nonexistent' href='$url'>?</a>$word";
             return call_user_func(array(&$this,$nonexists),$word,$url,$page);
           case -1:
  -          if ($page != $word) $title="title=\"$page\" ";
  +          $tpage=urlencode($page);
  +          if ($tpage != $word) $title="title=\"$tpage\" ";
             return "<a href='$url' $title$attr>$word</a>";
           case -2:
             return "<a href='$url' $attr>$word</a>".
  @@ -2553,7 +2554,8 @@
         }
       } else if ($DBInfo->hasPage($page)) {
         $this->pagelinks[$page]=-1;
  -      if ($page != $word) $title="title=\"$page\" ";
  +      $tpage=urlencode($page);
  +      if ($tpage != $word) $title="title=\"$tpage\" ";
         return "<a href='$url' $title$attr>$word</a>";
       } else {
         if ($gpage and $DBInfo->hasPage($gpage)) {
  
  
  


wkpark      2008/11/29 19:43:54

  Modified:    plugin/processor monimarkup.php
  Log:
  fixed table render
  
  Revision  Changes    Path
  1.10      +9 -5      moniwiki/plugin/processor/monimarkup.php
  
  Index: monimarkup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/monimarkup.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- monimarkup.php	28 Nov 2008 13:05:56 -0000	1.9
  +++ monimarkup.php	29 Nov 2008 10:43:54 -0000	1.10
  @@ -3,12 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a moniwiki formatting processor for the MoniWiki
   //
  -// $Id: monimarkup.php,v 1.9 2008/11/28 13:05:56 wkpark Exp $
  +// $Id: monimarkup.php,v 1.10 2008/11/29 10:43:54 wkpark Exp $
   /**
    * @date    2006-08-09
    * @name    Moniwiki Processor
    * @desc    Moniwiki default processor
  - * @version $Revision: 1.9 $
  + * @version $Revision: 1.10 $
    * @depend  1.1.3
    * @license GPL
    */
  @@ -308,7 +308,9 @@
           $oline='';
           foreach ($lines as $line) {
               if (substr($line,-1) == '&') { $oline.=substr($line,0,-1)."\n"; continue; }
  -            if (!empty($oline) and ($_in_table or preg_match('/^\s*\|\|/',$oline))) {
  +            if (empty($oline) and preg_match('/^\s*\|\|/',$line) and !preg_match('/\|\|$/',$line)) {
  +                $oline.=$line."\n"; continue;
  +            } else if (!empty($oline) and ($_in_table or preg_match('/^\s*\|\|/',$oline))) {
                   if (!preg_match('/\|\|$/',$line)) {
                       $oline.=$line."\n"; continue;
                   } else {
  @@ -351,7 +353,9 @@
                       preg_match('/^((&lt;[^>]+>)?)(\s?)(.*)(?<!\s)(\s*)?$/s',
                       $cells[$i+1],$m);
                       $cell=$m[3].$m[4].$m[5];
  -                    $cell=str_replace("\n","<br />\n",$cell);
  +                    if (strpos($cell,"\n"))
  +                        $cell = $this->process($cell);
  +                    #$cell=str_replace("\n","<br />\n",$cell);
                       if ($m[3] and $m[5]) $align='center';
                       else if (!$m[3]) $align='';
                       else if (!$m[5]) $align='right';
  @@ -824,5 +828,5 @@
   
   }
   
  -// vim:et:sts=4
  +// vim:et:sts=4:sw=4:
   ?>
  
  
  


wkpark      2008/11/29 20:18:41

  Modified:    plugin/processor monimarkup.php
  Log:
  fixed align problem in the table with multi-lines
  
  Revision  Changes    Path
  1.11      +10 -5     moniwiki/plugin/processor/monimarkup.php
  
  Index: monimarkup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/monimarkup.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- monimarkup.php	29 Nov 2008 10:43:54 -0000	1.10
  +++ monimarkup.php	29 Nov 2008 11:18:41 -0000	1.11
  @@ -3,12 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a moniwiki formatting processor for the MoniWiki
   //
  -// $Id: monimarkup.php,v 1.10 2008/11/29 10:43:54 wkpark Exp $
  +// $Id: monimarkup.php,v 1.11 2008/11/29 11:18:41 wkpark Exp $
   /**
    * @date    2006-08-09
    * @name    Moniwiki Processor
    * @desc    Moniwiki default processor
  - * @version $Revision: 1.10 $
  + * @version $Revision: 1.11 $
    * @depend  1.1.3
    * @license GPL
    */
  @@ -353,12 +353,17 @@
                       preg_match('/^((&lt;[^>]+>)?)(\s?)(.*)(?<!\s)(\s*)?$/s',
                       $cells[$i+1],$m);
                       $cell=$m[3].$m[4].$m[5];
  -                    if (strpos($cell,"\n"))
  -                        $cell = $this->process($cell);
  -                    #$cell=str_replace("\n","<br />\n",$cell);
                       if ($m[3] and $m[5]) $align='center';
                       else if (!$m[3]) $align='';
                       else if (!$m[5]) $align='right';
  +                    #$cell=str_replace("\n","<br />\n",$cell);
  +                    if (strpos($cell,"\n")) {
  +                        $save = $formatter->section_edit;
  +                        $formatter->section_edit=0;
  +                        $cell = $this->process($cell);
  +                        $formatter->section_edit=$save;
  +                        $align='';
  +                    }
   
                       $attr=$formatter->_td_attr($m[1],$align);
                       if (!$tr_attr) $tr_attr=$m[1]; // XXX
  
  
  


wkpark      2008/11/30 17:06:51

  Modified:    .        wiki.php
  Log:
  fixed pagename detect method to recognize proper pagename with the QUERY_STRING
  
  Revision  Changes    Path
  1.403     +8 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.402
  retrieving revision 1.403
  diff -u -r1.402 -r1.403
  --- wiki.php	29 Nov 2008 08:05:48 -0000	1.402
  +++ wiki.php	30 Nov 2008 08:06:51 -0000	1.403
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.402 2008/11/29 08:05:48 wkpark Exp $
  +// $Id: wiki.php,v 1.403 2008/11/30 08:06:51 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.402 $',1,-1);
  +$_revision = substr('$Revision: 1.403 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -4780,16 +4780,20 @@
       if ($_SERVER['PATH_INFO'][0] == '/')
         $pagename=substr($_SERVER['PATH_INFO'],1);
     } else if (!empty($_SERVER['QUERY_STRING'])) {
  -    if (isset($goto)) $pagename=$goto;
  +    $goto=$_POST['goto'] ? $_POST['goto']:$_GET['goto'];
  +    if (!empty($goto)) $pagename=$goto;
       else {
         $pagename = $_SERVER['QUERY_STRING'];
         $temp = strtok($pagename,"&");
   
  -      if (!$temp or strpos($temp,"=")===false) {
  +      if (!$temp or ($p=strpos($temp,"="))===false) {
           if (preg_match('/^([^&=]+)/',$pagename,$matches)) {
             $pagename = urldecode($matches[1]);
             $_SERVER['QUERY_STRING']=substr($_SERVER['QUERY_STRING'],strlen($pagename));
           }
  +      } else if ($p>0 and substr($temp,0,$p)=='value') {
  +        $pagename= substr($temp,$p+1);
  +        $_SERVER['QUERY_STRING']=substr($_SERVER['QUERY_STRING'],strlen($temp));
         }
       }
     }
  
  
  


wkpark      2008/12/01 17:45:35

  Modified:    plugin/processor latex.php
  Log:
  support the dvipng now.
  
  Revision  Changes    Path
  1.20      +53 -24    moniwiki/plugin/processor/latex.php
  
  Index: latex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/latex.php,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- latex.php	29 Mar 2008 10:26:44 -0000	1.19
  +++ latex.php	1 Dec 2008 08:45:35 -0000	1.20
  @@ -12,7 +12,7 @@
   // $path='./bin;C:/Program Files/MiKTeX 2.5/miktex/bin;C:/Program Files/ImageMagick-6.3.6-Q16';
   // # ImagMagick and MikTeX are used in this setting.
   //
  -// $Id: latex.php,v 1.19 2008/03/29 10:26:44 wkpark Exp $
  +// $Id: latex.php,v 1.20 2008/12/01 08:45:35 wkpark Exp $
   
   function _latex_renumber($match,$tag='\\tag') {
     // XXX
  @@ -26,7 +26,7 @@
     return '\\begin{'.$match[1].$star.'}'.$math.$tag.'{'.$num.'}'."\n".'\\end{'.$match[1].$star.'}';
   }
   
  -function processor_latex(&$formatter,$value="") {
  +function processor_latex(&$formatter,$value="",$options=array()) {
     global $DBInfo;
   
     if (!$formatter->latex_uniq) {
  @@ -37,15 +37,28 @@
     $latex_convert_options=
       $DBInfo->latex_convert_options ? $DBInfo->latex_convert_options:"-trim -crop 0x0 -density 120x120";
   
  +  $raw_mode = $options['raw'] ? 1:0;
  +
     # site spesific variables
     $latex="latex";
  -  $dvips="dvips";
  +  $dvicmd="dvipng";
  +  $dviopt='-D 120';
     $convert="convert";
  +  $mogrify="mogrify";
     $vartmp_dir=&$DBInfo->vartmp_dir;
     $cache_dir=$DBInfo->upload_dir."/LaTeX";
     $cache_url=$DBInfo->upload_url ? $DBInfo->upload_url.'/LaTeX':
       $DBInfo->url_prefix.'/'.$cache_dir;
     $option='-interaction=batchmode ';
  +  $mask='';
  +
  +  if (preg_match('/ps$/',$dvicmd)) {
  +    $tmpext='ps';
  +    $dviopt='-D 600';
  +  } else {
  +    $tmpext='png';
  +    $mask='-%d';
  +  }
   
     if ($value[0]=='#' and $value[1]=='!')
       list($line,$value)=explode("\n",$value,2);
  @@ -65,7 +78,7 @@
       #print '<pre>'.$ntex.'</pre>';
       if ($tex != $ntex) { $tex=$ntex; }
       $formatter->latex_num=$GLOBALS['_latex_eq_num']; // save
  -  } else if ($DBInfo->latex_allinone) {
  +  } else if (!$raw_mode and $DBInfo->latex_allinone) {
       $ntex=preg_replace('/\\\\begin\{\s*(equation)\s*\}((.|\n)+)\\\\end\{\s*\1\s*\}/e',
         "_latex_renumber(array('','\\1','\\2'),\"\n%%\")",$tex);
       if ($tex != $ntex) { $tex=$ntex; }
  @@ -92,7 +105,7 @@
     $uniq=$tex ? md5($src):$formatter->latex_uniq[sizeof($formatter->latex_uniq)-1];
   
     // check image file exists
  -  if ($DBInfo->latex_allinone and $tex) {
  +  if (!$raw_mode and $DBInfo->latex_allinone and $tex) {
       $formatter->latex_uniq[]=$uniq;
       $formatter->latex_all.=$tex."\n\\pagebreak\n\n";
       #print '<pre>'.$tex.'</pre>';
  @@ -132,9 +145,10 @@
     while ($formatter->preview || $formatter->refresh || !$img_exists) {
     //if ($options['_tex_'.$uniq] || $formatter->refresh || !file_exists($png)) {
   
  -     if ($DBInfo->latex_allinone) {
  +     if (!$raw_mode and $DBInfo->latex_allinone) {
          if (!$value) {
            $js= '<script type="text/javascript" src="'.$DBInfo->url_prefix.'/local/latex.js"></script>';
  +    	 #if ($formatter->register_javascripts('latex.js'));
   
            $src=str_replace('@TEX@',$formatter->latex_all,$templ);
            #print '<pre>'.$src.'</pre>';
  @@ -168,23 +182,30 @@
        }
   
        if (!file_exists($uniq.".dvi")) {
  -       $log.="<pre class='errlog'><font color='red'>ERROR:</font> LaTeX does not work properly.</pre>";
  -       trigger_error ($log, E_USER_WARNING);
  +       if (!$image_mode) {
  +         $log.="<pre class='errlog'><font color='red'>ERROR:</font> LaTeX does not work properly.</pre>";
  +         trigger_error ($log, E_USER_WARNING);
  +       }
          chdir($cwd);
          return '';
        }
        #$formatter->errlog('DVIPS');
  -     $cmd= "$dvips -D 600 $uniq.dvi -o $uniq.ps";
  +     $cmd= "$dvicmd $dvipot $uniq.dvi -o $uniq$mask.$tmpext";
        $formatter->errlog('DVI',$uniq.'.log');
        $fp=popen($cmd.$formatter->NULL,'r');
        pclose($fp);
        $log2=$formatter->get_errlog();
  -     if ($log2) trigger_error ($log2, E_USER_NOTICE);
  +     if ($log2 and !$raw_mode) trigger_error ($log2, E_USER_NOTICE);
        chdir($cwd);
   
  -     #$cmd= "$convert -transparent white $latex_convert_options $vartmp_dir/$uniq.ps $outpath";
        chdir(dirname($outpath)); # XXX :(
  -     $cmd= "$convert -transparent white $latex_convert_options $vartmp_dir/$uniq.ps ".basename($outpath);
  +     if ($tmpext == 'ps') {
  +       $cmd= "$convert -transparent white $latex_convert_options $vartmp_dir/$uniq.$tmpext ".basename($outpath);
  +     } else {
  +       if (!$raw_mode and $DBInfo->latex_allinone) $outpath="$vartmp_dir/$uniq.$tmpext";
  +       $cmd= "$mogrify -transparent white $latex_convert_options $vartmp_dir/$uniq*.$tmpext";
  +     }
  +
        # ImageMagick of the RedHat AS 4.x do not support -trim option correctly
        # http://kldp.net/forum/message.php?msg_id=12024
        #$cmd= "$convert -transparent white -trim -crop 0x0 -density 120x120 $vartmp_dir/$uniq.ps $outpath";
  @@ -192,13 +213,15 @@
        $fp=popen($cmd.$formatter->LOG,'r');
        pclose($fp);
        $log2=$formatter->get_errlog(1,1);
  -     if ($log2) trigger_error ($log2, E_USER_WARNING);
  +     if (!$raw_mode and $log2) trigger_error ($log2, E_USER_WARNING);
        chdir($cwd);
   
  -     if ($DBInfo->latex_allinone) {
  +     if ($raw_mode and $tmpext == 'png') {
  +       rename("$vartmp_dir/$uniq-1.$tmpext",$outpath);
  +     } else if ($DBInfo->latex_allinone) {
           $sz=sizeof($formatter->latex_uniq);
   
  -        if ($sz > 1) {
  +        if ($tmpext == 'png') {
             $soutpath=preg_replace('/\.png/','',$outpath);
             if (file_exists($outpath.'.0')) # old convert behavior
               $soutpath="$soutpath.png.%d";
  @@ -213,35 +236,41 @@
             } else {
               $img=$cache_dir.'/'.$id.'.png';
             }
  -          if ($sz==1)
  +
  +          if ($tmpext == 'ps' and $sz==1)
               rename($outpath,$img);
             else {
  -            rename(sprintf($soutpath,$i),$img);
  +            $ii=$i;
  +            if ($tmpext == 'png') $ii++;
  +            rename(sprintf($soutpath,$ii),$img);
             }
           }
           $formatter->latex_all='';
           $formatter->latex_uniq=array();
           $formatter->postamble['latex']='';
  +     } 
   
  -     }
  -
  -     #unlink($vartmp_dir."/$uniq.log");
  -     unlink($vartmp_dir."/$uniq.aux");
  +     @unlink($vartmp_dir."/$uniq.log");
  +     @unlink($vartmp_dir."/$uniq.aux");
  +     @unlink($vartmp_dir."/$uniq.tex");
  +     @unlink($vartmp_dir."/$uniq.dvi");
        @unlink($vartmp_dir."/$uniq.bib");
        @unlink($vartmp_dir."/$uniq.ps");
        $img_exists=true;
        break;
     }
  -  if (!$value) return $js;
  +  if (!$raw_mode and !$value) return $js;
     $alt=str_replace("'","&#39;",$value);
     $title=$alt;
  -  if (!$img_exists) {
  +  if (!$raw_mode and !$img_exists) {
       $title=$png_url;
       if ($DBInfo->latex_allinone==1)
         $png_url=$DBInfo->imgs_dir.'/loading.gif';
     }
  -  return $log.$bra."<img class='tex' src='$png_url' rel='$uniq' alt='$alt' ".
  +  if (!$raw_mode)
  +    return $log.$bra."<img class='tex' src='$png_url' rel='$uniq' alt='$alt' ".
            "title='$title' />".$ket;
  +  else return $png;
   }
   
   // vim:et:sts=2:sw=2
  
  
  


wkpark      2008/12/01 17:47:00

  Modified:    plugin/processor asciimathml.php
  Log:
  check the mathplayer under the IE
  
  Revision  Changes    Path
  1.9       +12 -5     moniwiki/plugin/processor/asciimathml.php
  
  Index: asciimathml.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/asciimathml.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- asciimathml.php	6 Nov 2007 13:49:49 -0000	1.8
  +++ asciimathml.php	1 Dec 2008 08:47:00 -0000	1.9
  @@ -8,7 +8,7 @@
   // Name: a AsciiMathML processor
   // Description: It support AsciiMathML
   // URL: MoniWiki:AsciiMathML
  -// Version: $Revision: 1.8 $
  +// Version: $Revision: 1.9 $
   // License: GPL
   //
   // please see http://kldp.net/forum/message.php?msg_id=9419
  @@ -31,7 +31,7 @@
   // 1. set $inline_latex='asciimathml';
   // 2. replace the latex processor: $processors=array('latex'=>'asciimathml');
   //
  -// $Id: asciimathml.php,v 1.8 2007/11/06 13:49:49 wkpark Exp $
  +// $Id: asciimathml.php,v 1.9 2008/12/01 08:47:00 wkpark Exp $
   
   function processor_asciimathml($formatter,$value="") {
     global $DBInfo;
  @@ -87,9 +87,16 @@
     // for WikiWyg mode switching
     if (typeof math2ascii != "undefined") math2ascii(AMbody);
     if (isIE) { // for WikiWyg in the iframe
  -    AMbody.innerHTML=AMparseMath(AMbody.innerHTML.replace(/\\$/g,'')).innerHTML;
  -    //needed to match size and font of formula to surrounding text
  -    AMbody.getElementsByTagName('math')[0].update();
  +    var nd = AMisMathMLavailable();
  +    AMnoMathML = nd != null;
  +
  +    if (AMnoMathML) {
  +      AMbody.insertBefore(nd,AMbody.childNodes[0]);
  +    } else {
  +      AMbody.innerHTML=AMparseMath(AMbody.innerHTML.replace(/\\$/g,'')).innerHTML;
  +      //needed to match size and font of formula to surrounding text
  +      AMbody.getElementsByTagName('math')[0].update();
  +    }
     } else {
       AMprocessNode(AMbody, false);
     }
  
  
  


wkpark      2008/12/02 09:50:29

  Modified:    local    moniwyg.js latex.js wikibits.js
  Log:
  support math/smiley input with WikiWyg
  
  Revision  Changes    Path
  1.53      +105 -12   moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.52
  retrieving revision 1.53
  diff -u -r1.52 -r1.53
  --- moniwyg.js	29 Nov 2008 01:50:45 -0000	1.52
  +++ moniwyg.js	2 Dec 2008 00:50:28 -0000	1.53
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.52 2008/11/29 01:50:45 wkpark Exp $
  +// $Id: moniwyg.js,v 1.53 2008/12/02 00:50:28 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -36,7 +36,7 @@
       }
   }
   
  -Wikiwyg.Mode.prototype.execute_scripts = function(el) {
  +Wikiwyg.Mode.prototype.execute_scripts = function(el,scripts) {
       var doc;
       var iframe=null;
   
  @@ -51,12 +51,13 @@
       }
   
       var head = document.getElementsByTagName("head")[0];
  -    var scripts;
   
  -    if (el)
  -        scripts= el.getElementsByTagName('script');
  -    else
  -        scripts= this.div.getElementsByTagName('script');
  +    if (!scripts) {
  +        if (el)
  +            scripts= el.getElementsByTagName('script');
  +        else
  +            scripts= this.div.getElementsByTagName('script');
  +    }
   
       for (var i=0;i<scripts.length;i++) {
           if (scripts[i].src) {
  @@ -211,6 +212,7 @@
           }
           //alert(div.innerHTML);
   
  +        var scripts= div.getElementsByTagName('script');
           var n=div.firstChild;
           for (;n && n.nodeName!='SPAN';n=n.nextSibling);
   
  @@ -226,7 +228,7 @@
                   this.set_focus(n,focus);
                   //this.set_focus(n.firstChild.nextSibling,focus);
               }
  -            this.execute_scripts(n);
  +            this.execute_scripts(n,scripts);
           }
       }
       return true;
  @@ -915,9 +917,9 @@
   */
   }
   
  -proto.process_command = function(command) {
  +proto.process_command = function(command,elem) {
       if (this['do_' + command])
  -        this['do_' + command](command);
  +        this['do_' + command](command,elem);
       if (! Wikiwyg.is_ie && command != 'image' && command != 'media') // hack for open.window
           this.get_edit_window().focus();
   }
  @@ -1019,6 +1021,7 @@
           this.exec_command('indent');
   }
   
  +/*
   proto.do_math = function() {
       var node=this.check_parent_node().nodeName;
       if (node && node != 'BODY') return;
  @@ -1029,6 +1032,62 @@
           '<span>$&nbsp;$</span></span>';
       this.insert_table(html);
   }
  +*/
  +
  +proto.insert_rawmarkup = function(start, end, raw) {
  +    var node=this.check_parent_node().nodeName;
  +    if (node) {
  +        var wm = this.get_wikimarkup_node();
  +        if (wm == null) {
  +            var html =
  +                '<span class="wikiMarkupEdit" style="display:inline">' +
  +                "<!-- wiki:\n$ " + raw + " $\n-->" +
  +                '<span>$ ' + raw + ' $</span></span>';
  +            this.insert_table(html);
  +        } else {
  +            // Mozilla
  +            var sel = this.get_selection();
  +            var sf = sel.focusNode;
  +
  +            var val = sf.nodeValue;
  +            
  +            var st='', ed='', m, val0='',ret;
  +            // do we need to cleanup nodeValue ?
  +            // XXX
  +            // find tags
  +            if ((m = val.match(/^([^\$]*\$\s)(.*)(\s\$[^\$]*)$/))) {
  +                st = m[1];
  +                val = m[2];
  +                ed = m[3];
  +            } else {
  +                // XXX
  +            }
  +            if (sel.focusOffset < (st.length + val.length)) {
  +                val0 = val.substr(0,sel.focusOffset - st.length);
  +                val = val.substr(val0.length);
  +            } else {
  +                val0 = val;
  +                val = '';
  +            }
  +
  +            ret = start + val0;
  +            var spos = ret.length + 1;
  +            ret += ' ' + raw;
  +            var epos = ret.length;
  +            if (val0) ret += ' ' + val;
  +            ret += end;
  +
  +            sf.nodeValue= ret;
  +
  +            var range=this.get_range();
  +            range.setStart(sf,spos);
  +            range.setEnd(sf,epos);
  +
  +            sel.removeAllRanges(); // remove old ranges !
  +            sel.addRange(range);
  +        }
  +    }
  +}
   
   proto.do_hr = function() {
       var node=this.check_parent_node().nodeName;
  @@ -1069,6 +1128,14 @@
           this.exec_command('insertunorderedlist');
   }
   
  +proto.do_math = function(cmd,elm) {
  +    open_chooser('mathChooser',elm);
  +}
  +
  +proto.do_smiley = function(cmd,elm) {
  +    open_chooser('smileyChooser',elm);
  +}
  +
   proto.do_image = function() {
       var base = location.href.replace(/(.*?:\/\/.*?\/).*/, '$1');
   
  @@ -1864,6 +1931,7 @@
       'indent', 'outdent', '|',
       'quote', '|',
       'image',
  +    'smiley',
       'media'
   ];
   
  @@ -1896,7 +1964,6 @@
   proto.config.markupRules.media = ['bound_phrase', '[[Media(', ')]]','sample.ogg'];
   proto.config.markupRules.table = ['line_alone', '|| A || B || C ||\n||   ||   ||   ||\n||   ||   ||   ||'];
   
  -proto.do_math = Wikiwyg.Wikitext.make_do('math');
   proto.do_nowiki = Wikiwyg.Wikitext.make_do('nowiki');
   if (Wikiwyg.Wikitext.make_format) // Wikiwyg-0.12
       proto.format_image = Wikiwyg.Wikitext.make_format('image');
  @@ -1905,13 +1972,21 @@
   proto.do_image = Wikiwyg.Wikitext.make_do('image');
   proto.do_media = Wikiwyg.Wikitext.make_do('media');
   //proto.do_quote = Wikiwyg.Wikitext.make_do('quote');
  +//
  +//proto.do_math = Wikiwyg.Wikitext.make_do('math');
  +proto.do_math = function(cmd,elm) {
  +    open_chooser('mathChooser',elm);
  +}
  +
  +proto.do_smiley = function(cmd,elm) {
  +    open_chooser('smileyChooser',elm);
  +}
   
   proto.collapse = function(string) {
       return string.replace(/\r\n|\r/g, ''); // FIX
       //return string.replace(/\r\n|\r/g, "\n"); // FIX
   }
   
  -
   proto.get_macro_args = function(arg,attr) {
       var attrs=[];
       var vals=arg.split(/,/);
  @@ -2643,4 +2718,22 @@
       return false;
   }
   
  +function open_chooser(id,elm) {
  +    var base = location.href.replace(/(.*?:\/\/.*?\/).*/, '$1');
  +
  +    var div = document.getElementById(id);
  +    if (!div) return;
  +
  +    if (div.style.display == 'block') div.style.display='none';
  +    else div.style.display='block';
  +    if (div.style.position != 'absolute') {
  +        div.style.display='block';
  +        div.style.position='absolute';
  +    }
  +
  +    div.style.top = elm.offsetTop + 21 + 'px';
  +    div.style.left = elm.offsetLeft + 'px';
  +    div.style.width = '500px';
  +}
  +
   // vim:et:sts=4:sw=4:
  
  
  
  1.2       +2 -1      moniwiki/local/latex.js
  
  Index: latex.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/latex.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- latex.js	27 Dec 2006 07:21:57 -0000	1.1
  +++ latex.js	2 Dec 2008 00:50:29 -0000	1.2
  @@ -39,6 +39,7 @@
       }
   }
   
  -autoTexImgLoader(_url_prefix + '/imgs/loading.gif');
  +// autoTexImgLoader(_url_prefix + '/imgs/loading.gif');
  +addLoadEvent(function() { autoTexImgLoader(_url_prefix + '/imgs/loading.gif') })
   
   // vim:et:sts=4:sw=4:
  
  
  
  1.8       +60 -10    moniwiki/local/wikibits.js
  
  Index: wikibits.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/wikibits.js,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- wikibits.js	29 Nov 2008 02:44:01 -0000	1.7
  +++ wikibits.js	2 Dec 2008 00:50:29 -0000	1.8
  @@ -1,7 +1,7 @@
   // from the MediaWiki
   // simplified for the MoniWiki by wkpark
   //
  -// $Id: wikibits.js,v 1.7 2008/11/29 02:44:01 wkpark Exp $
  +// $Id: wikibits.js,v 1.8 2008/12/02 00:50:29 wkpark Exp $
   //
   // Wikipedia JavaScript support functions
   // if this is true, the toolbar will no longer overwrite the infobox when you move the mouse over individual items
  @@ -70,6 +70,29 @@
   	return;
   }
   
  +function addLinkButton(imageFile,speedTip,id) {
  +	document.write("<input type='image' onclick=\"javascript:openChooser(this,'" + id + "');\"");
  +        document.write(" width=\"23\" height=\"22\" src=\""+imageFile+"\" border=\"0\" alt=\""+speedTip+"\" title=\""+speedTip+"\""+" />");
  +	return;
  +}
  +
  +function openChooser(el,id) {
  +	var div = document.getElementById(id);
  +	if (!div) return;
  +
  +	if (div.style.display == 'block') div.style.display='none';
  +	else div.style.display='block';
  +	if (div.style.position != 'absolute') {
  +		div.style.display='block';
  +		div.style.position='absolute';
  +	}
  +
  +	div.style.top = el.offsetTop + 21 + 'px';
  +	div.style.left = el.offsetLeft + 'px';
  +	div.style.width = '500px';
  +	//div.onmouseout= "javascript:document.getElementById(\""+id+"\").style.display='none'";
  +}
  +
   function addInfobox(infoText,text_alert) {
   	alertText=text_alert;
   	var clientPC = navigator.userAgent.toLowerCase(); // Get client info
  @@ -133,22 +156,36 @@
   	while (my == null || my.style.display == 'none') { // wikiwyg hack
   		txtarea = doc.getElementById('wikiwyg_wikitext_textarea');
   
  +
   		// get iframe and check visibility.
   		var myframe = doc.getElementsByTagName('iframe')[0];
  +		var mnew;
   		if (myframe.style.display == 'none' || myframe.parentNode.style.display == 'none') break;
   
  -		var postdata = 'action=markup/ajax&value=' + encodeURIComponent(tagOpen + sampleText + tagClose);
  -		var myhtml='';
  -		myhtml= HTTPPost(self.location, postdata);
  +		if (tagOpen == '$ ' && tagClose == ' $') { // latex math
  +			var wikiwyg = wikiwygs[0]; // XXX
  +			//var gui = false;
  +			//if (wikiwyg.current_mode.classname.match(/WikiWyg/)) gui=true;
  +        		mnew= '<span class="wikiMarkupEdit" style="display:inline">' +
  +        			"<!-- wiki:\n$ " + sampleText + " $\n-->" +
  +        			'<span>$ ' + sampleText + ' $</span></span>';
  +
  +			wikiwyg.current_mode.insert_rawmarkup(tagOpen, tagClose, sampleText);
  +			return;
  +		} else {
  +			var postdata = 'action=markup/ajax&value=' + encodeURIComponent(tagOpen + sampleText + tagClose);
  +			var myhtml='';
  +			myhtml= HTTPPost(self.location, postdata);
   
  -		var mnew = myhtml.replace(/^<div>/i,''); // strip div tag
  -		mnew = mnew.replace(/<\/div>\s*$/i,''); // strip div tag
  +			mnew = myhtml.replace(/^<div>/i,''); // strip div tag
  +			mnew = mnew.replace(/<\/div>\s*$/i,''); // strip div tag
  +		}
   
   		if (is_ie) {
   			var range = myframe.contentWindow.document.selection.createRange();
   			if (range.boundingTop == 2 && range.boundingLeft == 2)
   				return;
  -			range.pasteHTML(html);
  +			range.pasteHTML(mnew);
   			range.collapse(false);
   			range.select();
   		} else {
  @@ -178,8 +215,10 @@
   			myText=sampleText;
   			subst = tagOpen + myText + tagClose;
   		}
  -
  -		if (replace && !myText.match(/== /) /* == Heading == */
  +		
  +		if (replace == 2 ) { // append
  +			subst=tagOpen + myText + sampleText + tagClose;
  +		} else if (replace && !myText.match(/== /) /* == Heading == */
   				&& subst != sampleText && myText != sampleText) {
   			subst=tagOpen + sampleText + tagClose;
   		}
  @@ -208,7 +247,18 @@
   			subst = tagOpen + myText + tagClose;
   		}
   
  -		if (replace && !myText.match(/== /) /* == Heading == */
  +		if (replace == 2 ) { // append
  +			var my = sampleText + tagClose;
  +    			my = my.replace(/([\^\$\*\+\.\?\[\]\{\}\(\)])/g, '\\$1');
  +    			var re = new RegExp(my + '$');
  +			if (myText != sampleText) {
  +				if (!myText.match(re)) {
  +					subst= tagOpen + subst + ' ' + sampleText + tagClose;
  +				} else {
  +					subst = myText; // do not alter
  +				}
  +			}
  +		} else if (replace && !myText.match(/== /) /* == Heading == */
   				&& subst != sampleText && myText != sampleText) {
   			subst=tagOpen + sampleText + tagClose;
   		}
  
  
  


wkpark      2008/12/02 09:50:29

  Modified:    local/Wikiwyg/lib Wikiwyg.js
  Log:
  support math/smiley input with WikiWyg
  
  Revision  Changes    Path
  1.6       +2 -2      moniwiki/local/Wikiwyg/lib/Wikiwyg.js
  
  Index: Wikiwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/lib/Wikiwyg.js,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Wikiwyg.js	21 Nov 2007 14:55:05 -0000	1.5
  +++ Wikiwyg.js	2 Dec 2008 00:50:29 -0000	1.6
  @@ -469,9 +469,9 @@
       this.div.style.display = 'none';
   }
   
  -proto.process_command = function(command) {
  +proto.process_command = function(command,elem) {
       if (this['do_' + command])
  -        this['do_' + command](command);
  +        this['do_' + command](command,elem);
   }
   
   proto.enable_keybindings = function() { // See IE
  
  
  


wkpark      2008/12/02 09:50:29

  Modified:    local/Wikiwyg/lib/Wikiwyg Toolbar.js
  Log:
  support math/smiley input with WikiWyg
  
  Revision  Changes    Path
  1.9       +2 -1      moniwiki/local/Wikiwyg/lib/Wikiwyg/Toolbar.js
  
  Index: Toolbar.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/lib/Wikiwyg/Toolbar.js,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Toolbar.js	29 Nov 2008 01:50:46 -0000	1.8
  +++ Toolbar.js	2 Dec 2008 00:50:29 -0000	1.9
  @@ -70,6 +70,7 @@
           h5: 'Heading 5',
           h6: 'Heading 6',
           link: 'Create Link',
  +        smiley: 'Smiley',
           unlink: 'Remove Linkedness',
           table: 'Create Table'
       }
  @@ -144,7 +145,7 @@
       var img = this.make_button(type, label);
       var self = this;
       img.onclick = function() {
  -        self.wikiwyg.current_mode.process_command(type);
  +        self.wikiwyg.current_mode.process_command(type,this);
       };
       this.imgdiv.appendChild(img);
   }
  
  
  


wkpark      2008/12/02 09:51:47

  Modified:    local    googlehi.js
  Log:
  check action=hightlight
  
  Revision  Changes    Path
  1.4       +12 -4     moniwiki/local/googlehi.js
  
  Index: googlehi.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/googlehi.js,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- googlehi.js	25 Apr 2008 10:29:04 -0000	1.3
  +++ googlehi.js	2 Dec 2008 00:51:47 -0000	1.4
  @@ -10,9 +10,15 @@
       if (url.indexOf('?') == -1) return [];
       var queryString = url.substr(url.indexOf('?') + 1);
       var params = queryString.split('&');
  +    var act = 0;
       for (var i=0;i<params.length;i++) {
         var param = params[i].split('=');
         if (param.length < 2) continue;
  +      if (param[0] == 'action' && param[1] == 'highlight') {
  +        act = 1;
  +      } else if (act == 1 && param[0] == 'value') {
  +        param[0] = 'q';
  +      }
         if (param[0] == 'q' || param[0] == 'p') { // q= for Google, p= for Yahoo
           if (param[1].match(/^\d+$/)) continue;
           var query = decodeURIComponent(param[1].replace(/\+/g, ' '));
  @@ -20,10 +26,12 @@
           words = query.split(/(".*?")|('.*?')|(\s+)/);
           var words2 = new Array();
           for (var w in words) {
  -          words[w] = words[w].replace(/^\s+$/, '');
  -          if (words[w] != '') {
  -            words2.push(words[w].replace(/^['"]/, '').replace(/['"]$/, ''));
  -          }
  +          try {
  +            words[w] = words[w].replace(/^\s+$/, '');
  +            if (words[w] != '') {
  +              words2.push(words[w].replace(/^['"]/, '').replace(/['"]$/, ''));
  +            }
  +          } catch(e){};
           }
           return words2;
         }
  
  
  


wkpark      2008/12/02 09:51:48

  Modified:    local/Wikiwyg/lib/Wikiwyg Wysiwyg.js
  Log:
  check action=hightlight
  
  Revision  Changes    Path
  1.4       +2 -2      moniwiki/local/Wikiwyg/lib/Wikiwyg/Wysiwyg.js
  
  Index: Wysiwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/lib/Wikiwyg/Wysiwyg.js,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Wysiwyg.js	18 Oct 2007 10:39:48 -0000	1.3
  +++ Wysiwyg.js	2 Dec 2008 00:51:48 -0000	1.4
  @@ -207,9 +207,9 @@
       head.appendChild(link);
   }
   
  -proto.process_command = function(command) {
  +proto.process_command = function(command,elem) {
       if (this['do_' + command])
  -        this['do_' + command](command);
  +        this['do_' + command](command,elem);
       if (! Wikiwyg.is_ie)
           this.get_edit_window().focus();
   }
  
  
  


wkpark      2008/12/02 09:53:14

  Modified:    .        wiki.php
  Log:
  check postamble properly.
  always set 'inline' attributes with the inline latex
  
  Revision  Changes    Path
  1.404     +47 -28    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.403
  retrieving revision 1.404
  diff -u -r1.403 -r1.404
  --- wiki.php	30 Nov 2008 08:06:51 -0000	1.403
  +++ wiki.php	2 Dec 2008 00:53:14 -0000	1.404
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.403 2008/11/30 08:06:51 wkpark Exp $
  +// $Id: wiki.php,v 1.404 2008/12/02 00:53:14 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.403 $',1,-1);
  +$_revision = substr('$Revision: 1.404 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2212,8 +2212,9 @@
       case '$':
         #return processor_latex($this,"#!latex\n".$url);
         $url=preg_replace('/<\/?sup>/','^',$url);
  -      if ($url[1] != '$') $opt=array('type'=>'inline');
  -      else $opt=array('type'=>'block');
  +      //if ($url[1] != '$') $opt=array('type'=>'inline');
  +      //else $opt=array('type'=>'block');
  +      $opt=array('type'=>'inline');
         return $this->processor_repl($this->inline_latex,$url,$opt);
         break;
       case '#': # Anchor syntax in the MoinMoin 1.1
  @@ -3157,6 +3158,30 @@
       $this->imgs_dir_url=qualifiedUrl($this->imgs_dir_url);
     }
   
  +  function postambles() {
  +    $save= $this->wikimarkup;
  +    $this->wikimarkup=0;
  +    if ($this->postamble) {
  +      $sz=sizeof($this->postamble);
  +      for ($i=0;$i<$sz;$i++) {
  +        $postamble=implode("\n",$this->postamble);
  +        if (!trim($postamble)) continue;
  +        list($type,$name,$val)=explode(':',$postamble,3);
  +        if (in_array($type,array('macro','processor'))) {
  +          switch($type) {
  +            case 'macro':
  +              print $this->macro_repl($name,$val,$options);
  +              break;
  +            case 'processor':
  +              print $this->processor_repl($name,$val,$options);
  +              break;
  +          }
  +        }
  +      }
  +    }
  +    $this->wikimarkup=$save;
  +  }
  +
     function send_page($body="",$options=array()) {
       global $DBInfo;
       if ($options['fixpath']) $this->_fixpath();
  @@ -3200,6 +3225,8 @@
             foreach ($fts as $ft)
               $text=$this->postfilter_repl($ft,$text,$options);
           }
  +	$this->postambles();
  +
           print $this->get_javascripts();
           print $text;
   
  @@ -3248,7 +3275,19 @@
         $this->pi=$pi;
         if ($pi['#format'] != 'wiki') {
           if ($pi['args']) $pi_line="#!".$pi['#format']." $pi[args]\n";
  -        print $this->processor_repl($pi['#format'],$pi_line.$body,$options);
  +        $text= $this->processor_repl($pi['#format'],$pi_line.$body,$options);
  +
  +        $fts=array();
  +        if ($pi['#postfilter']) $fts=preg_split('/(\||,)/',$pi['#postfilter']);
  +        if ($this->postfilters) $fts=array_merge($fts,$this->postfilters);
  +        if ($fts) {
  +          foreach ($fts as $ft)
  +            $text=$this->postfilter_repl($ft,$text,$options);
  +        }
  +	$this->postambles();
  +        print $this->get_javascripts();
  +        print $text;
  +
           if ($DBInfo->use_tagging and isset($pi['#keywords'])) {
             $tmp="----\n";
             if (is_string($DBInfo->use_tagging))
  @@ -3825,6 +3864,9 @@
       #$text=preg_replace("/(&lt;)(\/?del>)/i","<\\2",$text);
       $text.=$close;
     
  +    # postamble
  +    $this->postambles();
  +
       print $this->get_javascripts();
       print $text;
       if ($this->sisters and !$options['nosisters']) {
  @@ -3837,29 +3879,6 @@
         $this->sister_on=$sister_save;
       }
   
  -    # postamble
  -    $save= $this->wikimarkup;
  -    $this->wikimarkup=0;
  -    if ($this->postamble) {
  -      $sz=sizeof($this->postamble);
  -      for ($i=0;$i<$sz;$i++) {
  -        $postamble=implode("\n",$this->postamble);
  -        if (!trim($postamble)) continue;
  -        list($type,$name,$val)=explode(':',$postamble,3);
  -        if (in_array($type,array('macro','processor'))) {
  -          switch($type) {
  -            case 'macro':
  -              print $this->macro_repl($name,$val,$options);
  -              break;
  -            case 'processor':
  -              print $this->processor_repl($name,$val,$options);
  -              break;
  -          }
  -        }
  -      }
  -    }
  -    $this->wikimarkup=$save;
  -
       if ($this->foots)
         print $this->macro_repl('FootNote','',$options);
   
  
  
  


wkpark      2008/12/02 09:54:59

  Added:       local/Wikiwyg/moni/images smiley.png
  Log:
  add a smiley btn
  
  Revision  Changes    Path
  1.1                  moniwiki/local/Wikiwyg/moni/images/smiley.png
  
  	<<Binary file>>
  
  


wkpark      2008/12/02 09:56:52

  Added:       imgs/misc addbg.png btn.gif delbg.png
  Log:
  add new imgs
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/misc/addbg.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/misc/btn.gif
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/misc/delbg.png
  
  	<<Binary file>>
  
  


wkpark      2008/12/02 09:58:24

  Modified:    css      _extra.css _base.css
  Log:
  add css styles for mathChooser
  
  Revision  Changes    Path
  1.20      +77 -0     moniwiki/css/_extra.css
  
  Index: _extra.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_extra.css,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- _extra.css	28 Apr 2008 14:21:38 -0000	1.19
  +++ _extra.css	2 Dec 2008 00:58:24 -0000	1.20
  @@ -580,3 +580,80 @@
   .captcha img {
     vertical-align: middle;
   }
  +
  +#mathChooser {
  +  padding: 5px;
  +  margin-top:3px;
  +  margin-bottom:3px;
  +  background-color: #f0f0f0;
  +}
  +
  +#mathChooser .tabs {
  +  list-style-image: none;
  +  list-style-type: none;
  +  list-style-position: outside;
  +  margin: 0;
  +  padding:0;
  +  display: inline;
  +  height:14px;
  +  overflow:hidden;
  +}
  +
  +#mathChooser ul.tabs li {
  +  cursor: pointer;
  +  display:inline;
  +}
  +
  +#mathChooser .tabs li {
  +    padding: 5px 0px;
  +    padding-bottom:1px;
  +    margin-left: 2px;
  +    background: url(../imgs/misc/btn.gif) no-repeat;
  +    background-position: left -65px;
  +    display: inline;
  +}
  +
  +#mathChooser .tabs li span {
  +    margin-left: 5px;
  +    background: url(../imgs/misc/btn.gif) no-repeat;
  +}
  +
  +#mathChooser .tabs li span {
  +    display: inline;
  +    padding: 5px 10px;
  +    padding-left:5px;
  +    padding-bottom:1px;
  +    background-position: right -65px;
  +}
  +
  +#mathChooser .tabs li.active {
  +    font-weight:bold;
  +}
  +
  +.toolbar {
  +  list-style-image: none;
  +  list-style-type: none;
  +  list-style-position: outside;
  +  margin: 0;
  +  padding:0;
  +  display: inline;
  +}
  +
  +.toolbar li {
  +  cursor: pointer;
  +  display: inline;
  +}
  +
  +.toolbar a {
  +  float:left;
  +  padding:1px;
  +  margin:1px;
  +  border:1px solid gray;
  +  background:white;
  +}
  +
  +.toolbar a:hover {
  +  border:1px solid red;
  +}
  +
  +
  
  
  
  1.20      +6 -1      moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- _base.css	22 Mar 2008 02:40:08 -0000	1.19
  +++ _base.css	2 Dec 2008 00:58:24 -0000	1.20
  @@ -98,6 +98,11 @@
     width:98%; /* for IE */
   }
   
  +.resizable-textarea textarea {
  +  padding:3px;
  +  padding-right:0;
  +}
  +
   th.info {
     background-color:#E2ECE2;
   /*  border-collapse: collapse; */
  @@ -370,7 +375,7 @@
     padding: 5px;
     margin-top:3px;
     margin-bottom:3px;
  -  background-color: #d0d0d0;
  +  background-color: #f0f0f0;
   }
   
   #smileyChooser img {
  
  
  


wkpark      2008/12/02 09:59:58

  Modified:    plugin/processor latex.php
  Log:
  use register_javascripts()
  
  Revision  Changes    Path
  1.21      +4 -4      moniwiki/plugin/processor/latex.php
  
  Index: latex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/latex.php,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- latex.php	1 Dec 2008 08:45:35 -0000	1.20
  +++ latex.php	2 Dec 2008 00:59:57 -0000	1.21
  @@ -12,7 +12,7 @@
   // $path='./bin;C:/Program Files/MiKTeX 2.5/miktex/bin;C:/Program Files/ImageMagick-6.3.6-Q16';
   // # ImagMagick and MikTeX are used in this setting.
   //
  -// $Id: latex.php,v 1.20 2008/12/01 08:45:35 wkpark Exp $
  +// $Id: latex.php,v 1.21 2008/12/02 00:59:57 wkpark Exp $
   
   function _latex_renumber($match,$tag='\\tag') {
     // XXX
  @@ -147,8 +147,8 @@
   
        if (!$raw_mode and $DBInfo->latex_allinone) {
          if (!$value) {
  -         $js= '<script type="text/javascript" src="'.$DBInfo->url_prefix.'/local/latex.js"></script>';
  -    	 #if ($formatter->register_javascripts('latex.js'));
  +         #$js= '<script type="text/javascript" src="'.$DBInfo->url_prefix.'/local/latex.js"></script>';
  +    	 if ($formatter->register_javascripts('latex.js'));
   
            $src=str_replace('@TEX@',$formatter->latex_all,$templ);
            #print '<pre>'.$src.'</pre>';
  @@ -264,7 +264,7 @@
     $title=$alt;
     if (!$raw_mode and !$img_exists) {
       $title=$png_url;
  -    if ($DBInfo->latex_allinone==1)
  +    if ($DBInfo->latex_allinone==1 && !$formatter->wikimarkup)
         $png_url=$DBInfo->imgs_dir.'/loading.gif';
     }
     if (!$raw_mode)
  
  
  


wkpark      2008/12/02 10:04:31

  Modified:    lib/Gettext MO.php
  Log:
  do not add empty msgs
  
  Revision  Changes    Path
  1.3       +8 -3      moniwiki/lib/Gettext/MO.php
  
  Index: MO.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/Gettext/MO.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- MO.php	18 Jan 2006 16:10:55 -0000	1.2
  +++ MO.php	2 Dec 2008 01:04:31 -0000	1.3
  @@ -12,7 +12,7 @@
    * {@link http://prado.sourceforge.net/}
    *
    * @author Wei Zhuo <weizhuo[at]gmail[dot]com>
  - * @version $Revision: 1.2 $  $Date: 2006/01/18 16:10:55 $
  + * @version $Revision: 1.3 $  $Date: 2008/12/02 01:04:31 $
    * @package System.I18N.core
    */
   
  @@ -29,7 +29,7 @@
   // | Copyright (c) 2004 Michael Wallner <mike@iworks.at>                  |
   // +----------------------------------------------------------------------+
   //
  -// $Id: MO.php,v 1.2 2006/01/18 16:10:55 wkpark Exp $
  +// $Id: MO.php,v 1.3 2008/12/02 01:04:31 wkpark Exp $
   // orig Id: MO.php,v 1.3 2005/08/27 03:21:12 weizhuo Exp
   
   /**
  @@ -47,7 +47,7 @@
    * GNU MO file reader and writer.
    *
    * @author      Michael Wallner <mike@php.net>
  - * @version     $Revision: 1.2 $
  + * @version     $Revision: 1.3 $
    * @access      public
    * @package System.I18N.core 
    */
  @@ -280,6 +280,11 @@
               @fclose($this->_handle);
               return false;
           }
  +
  +        // delete untranslated strs
  +        foreach ($this->strings as $k=>$v) {
  +            if ($v=="") unset($this->strings[$k]);
  +        }
           
           // write magic number
           if ($this->writeBigEndian) {
  
  
  


wkpark      2008/12/02 16:31:38

  Modified:    plugin   EditToolbar.php
  Log:
  update
  
  Revision  Changes    Path
  1.6       +3 -2      moniwiki/plugin/EditToolbar.php
  
  Index: EditToolbar.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/EditToolbar.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- EditToolbar.php	14 Nov 2007 17:21:13 -0000	1.5
  +++ EditToolbar.php	2 Dec 2008 07:31:38 -0000	1.6
  @@ -7,7 +7,7 @@
   //
   // This feature is imported from the MediaWiki
   //
  -// $Id: EditToolbar.php,v 1.5 2007/11/14 17:21:13 wkpark Exp $
  +// $Id: EditToolbar.php,v 1.6 2008/12/02 07:31:38 wkpark Exp $
   
   function macro_EditToolbar($formatter,$value) {
       global $DBInfo;
  @@ -27,7 +27,8 @@
   addButton('$imgdir/button_headline.png','Level 2 headline','\\n== ',' ==\\n','Headline text');
   addButton('$imgdir/button_image.png','Embedded image','attachment:','','Example.jpg');
   addButton('$imgdir/button_media.png','Media file link','[[Media(',')]]','Example.mp3');
  -addButton('$imgdir/button_math.png','Mathematical formula (LaTeX)','\$ ',' \$','Insert formula here');
  +addLinkButton('$imgdir/button_math.png','Mathematical formula (LaTeX)','mathChooser');
  +addLinkButton('$imgdir/button_smiley.png','Smiley','smileyChooser');
   addButton('$imgdir/button_nowiki.png','Ignore wiki formatting','{{{','}}}','Insert non-formatted text here');
   
   addButton('$imgdir/button_sig.png','Your signature with timestamp','@SIG@','','');
  
  
  


wkpark      2008/12/02 17:09:03

  Modified:    .        wiki.php
  Log:
  added mathChooser and latex2png plugins
  
  Revision  Changes    Path
  1.405     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.404
  retrieving revision 1.405
  diff -u -r1.404 -r1.405
  --- wiki.php	2 Dec 2008 00:53:14 -0000	1.404
  +++ wiki.php	2 Dec 2008 08:09:03 -0000	1.405
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.404 2008/12/02 00:53:14 wkpark Exp $
  +// $Id: wiki.php,v 1.405 2008/12/02 08:09:03 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.404 $',1,-1);
  +$_revision = substr('$Revision: 1.405 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2721,7 +2721,7 @@
       $this->mid=$options['mid'] ? $options['mid']:
         (!empty($this->mid) ? ++$this->mid:1);
   
  -    preg_match("/^([A-Za-z]+)(\((.*)\))?$/",$macro,$match);
  +    preg_match("/^([A-Za-z0-9]+)(\((.*)\))?$/",$macro,$match);
       if (!$match) return $this->word_repl($macro);
       $bra='';$ket='';
       if ($this->wikimarkup and $macro != 'attachment' and !$options['nomarkup']) {
  
  
  


wkpark      2008/12/02 17:09:03

  Added:       plugin   MathChooser.php latex2png.php
  Log:
  added mathChooser and latex2png plugins
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/MathChooser.php
  
  Index: MathChooser.php
  ===================================================================
  <?php
  // Copyright 2008 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a sample plugin for the MoniWiki
  //
  // Author: Won-Kyu Park <wkpark@kldp.org>
  // Date: 2008-12-01
  // Name: MathChooser
  // Description: Latex symbol selector
  // URL: MoniWiki/MathChooserPlugin
  // Version: $Revision: 1.1 $
  // License: GPL
  //
  // Usage: [[MathChooser]]
  //
  // $Id: MathChooser.php,v 1.1 2008/12/02 08:09:03 wkpark Exp $
  
  function macro_MathChooser($formatter,$value) {
      global $DBInfo;
  
      $js=<<<JS
  <script language="javascript" type="text/javascript">
  /*<![CDATA[*/
  
  var currentMenu=false;
  
  function menuToogle(el)
  {
    if (!currentMenu) currentMenu=el.parentNode.childNodes[0];
    currentMenu.className = '';
    document.getElementById('toolbar_'+currentMenu.title).style.display='none';
  
    currentMenu = el;
    el.className = 'active';
    document.getElementById('toolbar_'+el.title).style.display='block';
  }
  
  /*]]>*/
  </script>
  JS;
  
      $mtools=array(
          'Greek'=>'\alpha & \beta & \gamma & \delta & \epsilon & \zeta & \eta & \theta & \iota & \kappa &
  \lambda & \mu & \nu & \xi & \o & \pi & \rho & \sigma & \tau & \upsilon & \phi & \chi & \psi & \omega &
  \Gamma & \Lambda & \Sigma & \Psi & \Delta & \Xi & \Upsilon & \Omega & \Theta & \Pi &\Phi &
  \Re & \Im & \aleph & \hbar & \imath & \jmath',
          'Math'=>'\frac{a}{b} & a^b & a_b & \sqrt{a} & \sqrt[n]{a} & \sum & \sum_{a}^{b} & \prod &
  \prod_{a}^{b} & \int & \int_{a}^{b} & \int_{-\infty}^{\infty} & \oint & \mathop{\lim}\limits_{a \to \infty}',
          'Symbol'=>'+ & - & \pm & \mp & * & = & \div & \equiv & \sim & \approx & \ne & \doteq & \cong & \propto &
  \forall & \exists & \neg & \vee & \wedge & \in & \ni &
  \subset & \supset & \subseteq & \supseteq & \emptyset &
  \ldots & \nabla & \partial & \prime & \circ & < & > & \le & \ge & \ll & \gg &
  \text{\euro} & \mathdollar & \mathsterling &
  \leftarrow & \rightarrow & \leftrightarrow'
      );
  
      $out='';
      $sty=' style="display:block"';
      foreach ($mtools as $k=>$tool) {
          $tool= trim($tool);
          $tmp= explode('&',$tool);
          $col= str_repeat('|@{}c@{}',sizeof($tmp));
          $tex= '\displaystyle '.implode('& \displaystyle ',$tmp);
          $tex = "$$\n\\begin{array}{ $col }\n$tex\n\\end{array}\n$$\n";
  
          $toolbar=$formatter->macro_repl('latex2png',$tex);
          $tab.='<li title="'.$k.'" onclick="menuToogle(this)"><span>'._($k).'</span></li>';
  
          $im = imagecreatefrompng($toolbar);
          $col = imagecolorallocate($im, 0, 0, 0);
          list($width, $height, $type, $attr) = getimagesize($toolbar);
  
  	$toolurl=qualifiedUrl($DBInfo->url_prefix.'/'.$toolbar); // XXX
  
          $x= 0;
          $c= imagecolorat($im,0,0);
          $xpos= array();
          while($x <= $width) {
            if ($c == imagecolorat($im,$x++,0)) {
              $xpos[]=$x;
            }
          }
          $sz=sizeof($xpos);
          $out.="<div id='toolbar_$k'$sty><ul class='toolbar' style='height:{$height}px'>\n";
          for ($i=1;$i<$sz;$i++) {
            $w=($xpos[$i]-$xpos[$i-1]-1);
            $x=$xpos[$i-1];
            $out.= "<li><a href='#' onclick=\"insertTags('$ ',' $','".str_replace('\\','\\\\',trim($tmp[$i-1]))."',2)\">".
              "<div style='background:url($toolurl);width:{$w}px;height:{$height}px;background-position:-{$x}px 0px;'></div></a></li>\n";
          }
          $out.="\n</ul></div>\n";
          $sty=' style="display:none"';
      }
      $formatter->register_javascripts($js);
      return <<<EOF
  <div id='mathChooser' style='display:block'>
  <ul class='tabs'>$tab</ul>
  <div style='clear:both;'></div>
  $out
  </div>
  <div style='clear:both;'></div>
  EOF;
  }
  
  // vim:et:sts=4:
  ?>
  
  
  
  1.1                  moniwiki/plugin/latex2png.php
  
  Index: latex2png.php
  ===================================================================
  <?php
  // Copyright 2008 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a latex2png plugin for the MoniWiki
  //
  // Author: Won-Kyu Park <wkpark@kldp.org>
  // Date: 2008-12-01
  // Name: Latex To PNG plugin
  // Description: convert latex syntax to PNGs
  // URL: MoniWiki:Latex2PngPlugin
  // Version: $Revision: 1.1 $
  // License: GPL
  //
  // Usage: ?action=latex2png&value=$\alpha$
  //
  // $Id: latex2png.php,v 1.1 2008/12/02 08:09:03 wkpark Exp $
  
  function macro_latex2png($formatter,$value,$params=array()) {
      $png= $formatter->processor_repl('latex',$value,array('raw'=>1));
      return $png;
  }
  
  function do_latex2png($formatter,$options) {
      $png= $formatter->processor_repl('latex',$options['value'],array('raw'=>1));
      if (file_exists($png)) {
          Header("Content-type: image/png");
          readfile($png);
      } else {
          Header("Content-type: image/png");
          readfile($png);
      }
  }
  
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2008/12/02 23:09:45

  Modified:    plugin   MathChooser.php
  Log:
  support user defined math toolbar
  
  Revision  Changes    Path
  1.2       +29 -4     moniwiki/plugin/MathChooser.php
  
  Index: MathChooser.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/MathChooser.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- MathChooser.php	2 Dec 2008 08:09:03 -0000	1.1
  +++ MathChooser.php	2 Dec 2008 14:09:45 -0000	1.2
  @@ -8,15 +8,16 @@
   // Name: MathChooser
   // Description: Latex symbol selector
   // URL: MoniWiki/MathChooserPlugin
  -// Version: $Revision: 1.1 $
  +// Version: $Revision: 1.2 $
   // License: GPL
   //
   // Usage: [[MathChooser]]
   //
  -// $Id: MathChooser.php,v 1.1 2008/12/02 08:09:03 wkpark Exp $
  +// $Id: MathChooser.php,v 1.2 2008/12/02 14:09:45 wkpark Exp $
   
   function macro_MathChooser($formatter,$value) {
       global $DBInfo;
  +define('USER_LATEX_MAP','LatexSymbolTable');
   
       $js=<<<JS
   <script language="javascript" type="text/javascript">
  @@ -39,12 +40,33 @@
   </script>
   JS;
   
  +    $latex_map=USER_LATEX_MAP;
  +    $lines=array();
  +    if ($DBInfo->hasPage($latex_map)) {
  +        $p=$DBInfo->getPage($latex_map);
  +        $lines=explode("\n",($p->get_raw_body()));
  +    }
  +
  +    $mytools=array();
  +    if (!empty($lines)) {
  +        $o='';
  +        foreach ($lines as $l) {
  +            $l=rtrim($l);
  +            if (empty($l)) continue;
  +            if ($l{0}=='#') continue;
  +            if (substr($l,-1)=='&') { $o.=$l; continue; }
  +            else if (!empty($o)) { $l=$o.$l; $o='';}
  +            list ($k,$v)=explode(' ',$l,2);
  +            $mytools[$k]=$v;
  +        }
  +    }
  +
       $mtools=array(
           'Greek'=>'\alpha & \beta & \gamma & \delta & \epsilon & \zeta & \eta & \theta & \iota & \kappa &
   \lambda & \mu & \nu & \xi & \o & \pi & \rho & \sigma & \tau & \upsilon & \phi & \chi & \psi & \omega &
   \Gamma & \Lambda & \Sigma & \Psi & \Delta & \Xi & \Upsilon & \Omega & \Theta & \Pi &\Phi &
   \Re & \Im & \aleph & \hbar & \imath & \jmath',
  -        'Math'=>'\frac{a}{b} & a^b & a_b & \sqrt{a} & \sqrt[n]{a} & \sum & \sum_{a}^{b} & \prod &
  +        'Math'=>'\frac{a}{b} & a^{b} & a_{b} & \sqrt{a} & \sqrt[n]{a} & \sum & \sum_{a}^{b} & \prod &
   \prod_{a}^{b} & \int & \int_{a}^{b} & \int_{-\infty}^{\infty} & \oint & \mathop{\lim}\limits_{a \to \infty}',
           'Symbol'=>'+ & - & \pm & \mp & * & = & \div & \equiv & \sim & \approx & \ne & \doteq & \cong & \propto &
   \forall & \exists & \neg & \vee & \wedge & \in & \ni &
  @@ -54,12 +76,14 @@
   \leftarrow & \rightarrow & \leftrightarrow'
       );
   
  +    $mtools=array_merge($mtools,$mytools);
  +
       $out='';
       $sty=' style="display:block"';
       foreach ($mtools as $k=>$tool) {
           $tool= trim($tool);
           $tmp= explode('&',$tool);
  -        $col= str_repeat('|@{}c@{}',sizeof($tmp));
  +        $col= str_repeat('|@{\hspace{0.2pt}}c@{}',sizeof($tmp)); // @{}: no spacing, @{\hspace{0.2pt}
           $tex= '\displaystyle '.implode('& \displaystyle ',$tmp);
           $tex = "$$\n\\begin{array}{ $col }\n$tex\n\\end{array}\n$$\n";
   
  @@ -81,7 +105,8 @@
             }
           }
           $sz=sizeof($xpos);
  -        $out.="<div id='toolbar_$k'$sty><ul class='toolbar' style='height:{$height}px'>\n";
  +        $out.="<div id='toolbar_$k'$sty><ul class='toolbar'>\n";
  +        //$out.="<div id='toolbar_$k'$sty><ul class='toolbar' style='height:{$height}px'>\n";
           for ($i=1;$i<$sz;$i++) {
             $w=($xpos[$i]-$xpos[$i-1]-1);
             $x=$xpos[$i-1];
  
  
  


wkpark      2008/12/02 23:10:24

  Modified:    plugin/processor latex.php
  Log:
  add a gamma option for the dvipng
  
  Revision  Changes    Path
  1.22      +2 -2      moniwiki/plugin/processor/latex.php
  
  Index: latex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/latex.php,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- latex.php	2 Dec 2008 00:59:57 -0000	1.21
  +++ latex.php	2 Dec 2008 14:10:24 -0000	1.22
  @@ -12,7 +12,7 @@
   // $path='./bin;C:/Program Files/MiKTeX 2.5/miktex/bin;C:/Program Files/ImageMagick-6.3.6-Q16';
   // # ImagMagick and MikTeX are used in this setting.
   //
  -// $Id: latex.php,v 1.21 2008/12/02 00:59:57 wkpark Exp $
  +// $Id: latex.php,v 1.22 2008/12/02 14:10:24 wkpark Exp $
   
   function _latex_renumber($match,$tag='\\tag') {
     // XXX
  @@ -42,7 +42,7 @@
     # site spesific variables
     $latex="latex";
     $dvicmd="dvipng";
  -  $dviopt='-D 120';
  +  $dviopt='-D 120 -gamma 1.5';
     $convert="convert";
     $mogrify="mogrify";
     $vartmp_dir=&$DBInfo->vartmp_dir;
  
  
  


wkpark      2008/12/02 23:16:40

  Modified:    local    moniwyg.js wikibits.js
  Log:
  reorder wikiwyg toolbar
  more fancy toolbar
  
  Revision  Changes    Path
  1.54      +27 -3     moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.53
  retrieving revision 1.54
  diff -u -r1.53 -r1.54
  --- moniwyg.js	2 Dec 2008 00:50:28 -0000	1.53
  +++ moniwyg.js	2 Dec 2008 14:16:40 -0000	1.54
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.53 2008/12/02 00:50:28 wkpark Exp $
  +// $Id: moniwyg.js,v 1.54 2008/12/02 14:16:40 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -1050,6 +1050,7 @@
               var sf = sel.focusNode;
   
               var val = sf.nodeValue;
  +            if (!val) return;
               
               var st='', ed='', m, val0='',ret;
               // do we need to cleanup nodeValue ?
  @@ -1931,8 +1932,8 @@
       'indent', 'outdent', '|',
       'quote', '|',
       'image',
  -    'smiley',
  -    'media'
  +    'media',
  +    'smiley'
   ];
   
   proto.config.controlLabels.math = 'Math';
  @@ -2718,6 +2719,24 @@
       return false;
   }
   
  +function getPos(el) {
  +  var sLeft = 0, sTop = 0;
  +  var isDiv = /^div$/i.test(el.tagName);
  +  if (isDiv && el.scrollLeft) {
  +    sLeft = el.scrollLeft;
  +  }
  +  if (isDiv && el.scrollTop) {
  +    sTop = el.scrollTop;
  +  }
  +  var r = { x: el.offsetLeft - sLeft, y: el.offsetTop - sTop };
  +  if (el.offsetParent) {
  +    var tmp = absolutePosition(el.offsetParent);
  +    r.x += tmp.x;
  +    r.y += tmp.y;
  +  }
  +  return r;
  +}
  +
   function open_chooser(id,elm) {
       var base = location.href.replace(/(.*?:\/\/.*?\/).*/, '$1');
   
  @@ -2731,8 +2750,13 @@
           div.style.position='absolute';
       }
   
  +    var pos=getPos(elm)
  +/*
       div.style.top = elm.offsetTop + 21 + 'px';
       div.style.left = elm.offsetLeft + 'px';
  +*/
  +    div.style.top = pos.y + 21 + 'px';
  +    div.style.left = pos.x + 'px';
       div.style.width = '500px';
   }
   
  
  
  
  1.9       +24 -5     moniwiki/local/wikibits.js
  
  Index: wikibits.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/wikibits.js,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- wikibits.js	2 Dec 2008 00:50:29 -0000	1.8
  +++ wikibits.js	2 Dec 2008 14:16:40 -0000	1.9
  @@ -1,7 +1,7 @@
   // from the MediaWiki
   // simplified for the MoniWiki by wkpark
   //
  -// $Id: wikibits.js,v 1.8 2008/12/02 00:50:29 wkpark Exp $
  +// $Id: wikibits.js,v 1.9 2008/12/02 14:16:40 wkpark Exp $
   //
   // Wikipedia JavaScript support functions
   // if this is true, the toolbar will no longer overwrite the infobox when you move the mouse over individual items
  @@ -65,17 +65,35 @@
   	document.write("<a href=\"javascript:insertTags");
   	document.write("('"+tagOpen+"','"+tagClose+"','"+sampleText+"');\">");
   
  -        document.write("<img width=\"23\" height=\"22\" src=\""+imageFile+"\" border=\"0\" alt=\""+speedTip+"\" title=\""+speedTip+"\""+mouseOver+">");
  +        document.write("<img height=\"22\" src=\""+imageFile+"\" border=\"0\" alt=\""+speedTip+"\" title=\""+speedTip+"\""+mouseOver+">");
   	document.write("</a>");
   	return;
   }
   
   function addLinkButton(imageFile,speedTip,id) {
   	document.write("<input type='image' onclick=\"javascript:openChooser(this,'" + id + "');\"");
  -        document.write(" width=\"23\" height=\"22\" src=\""+imageFile+"\" border=\"0\" alt=\""+speedTip+"\" title=\""+speedTip+"\""+" />");
  +        document.write(" width=\"22\" height=\"22\" src=\""+imageFile+"\" border=\"0\" alt=\""+speedTip+"\" title=\""+speedTip+"\""+" />");
   	return;
   }
   
  +function getPos(el) {
  +  var sLeft = 0, sTop = 0;
  +  var isDiv = /^div$/i.test(el.tagName);
  +  if (isDiv && el.scrollLeft) {
  +    sLeft = el.scrollLeft;
  +  }
  +  if (isDiv && el.scrollTop) {
  +    sTop = el.scrollTop;
  +  }
  +  var r = { x: el.offsetLeft - sLeft, y: el.offsetTop - sTop };
  +  if (el.offsetParent) {
  +    var tmp = absolutePosition(el.offsetParent);
  +    r.x += tmp.x;
  +    r.y += tmp.y;
  +  }
  +  return r;
  +}
  +
   function openChooser(el,id) {
   	var div = document.getElementById(id);
   	if (!div) return;
  @@ -87,8 +105,9 @@
   		div.style.position='absolute';
   	}
   
  -	div.style.top = el.offsetTop + 21 + 'px';
  -	div.style.left = el.offsetLeft + 'px';
  +	var pos = getPos(el);
  +	div.style.top = pos.y + 21 + 'px';
  +	div.style.left = pos.x + 'px';
   	div.style.width = '500px';
   	//div.onmouseout= "javascript:document.getElementById(\""+id+"\").style.display='none'";
   }
  
  
  


wkpark      2008/12/02 23:16:41

  Modified:    local/Wikiwyg/css moniwyg.css
  Log:
  reorder wikiwyg toolbar
  more fancy toolbar
  
  Revision  Changes    Path
  1.7       +22 -3     moniwiki/local/Wikiwyg/css/moniwyg.css
  
  Index: moniwyg.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/css/moniwyg.css,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- moniwyg.css	28 Nov 2008 10:24:07 -0000	1.6
  +++ moniwyg.css	2 Dec 2008 14:16:41 -0000	1.7
  @@ -6,6 +6,23 @@
       padding: 2px;
   }
   
  +.wikiwyg_buttons {
  +    float:left;
  +    margin-right:2px;
  +    margin-top:1px;
  +    background: url(../images/toolbg24.png) repeat-x;
  +}
  +
  +.wikiwyg_buttons span {
  +    float:left;
  +    position:relative;
  +    left:2px;
  +    margin-left:2px;
  +    padding-right:2px;
  +    background: url(../images/toolbg24.png) repeat-x;
  +    background-position: right top;
  +}
  +
   span.wikiwyg_control_link a {
       font-family:'Trebuchet MS',sans-serif;
       padding: 4px;
  @@ -55,6 +72,8 @@
       display: inline;
       padding: 5px 10px;
       padding-left:5px;
  +    position:relative;
  +    left:2px;
       background-position: right -63px;
   }
   
  @@ -80,8 +99,9 @@
   }
   
   .wikiwyg_button {
  +    float:left;
       padding:1px;
  -    background: url(../images/bg.png) repeat-x;
  +    /* background: url(../images/bg.png) repeat-x; /* */
       cursor: pointer;
       height: 22px;
       vertical-align: middle;
  @@ -99,8 +119,7 @@
   }
   
   .wikiwyg_separator {
  -    padding:1px;
  -    background: url(../images/bg.png);
  +    float:left;
       height: 22px;
       width: 9px;
       vertical-align: middle;
  
  
  


wkpark      2008/12/02 23:16:41

  Modified:    local/Wikiwyg/lib/Wikiwyg Toolbar.js
  Log:
  reorder wikiwyg toolbar
  more fancy toolbar
  
  Revision  Changes    Path
  1.10      +10 -2     moniwiki/local/Wikiwyg/lib/Wikiwyg/Toolbar.js
  
  Index: Toolbar.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/lib/Wikiwyg/Toolbar.js,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- Toolbar.js	2 Dec 2008 00:50:29 -0000	1.9
  +++ Toolbar.js	2 Dec 2008 14:16:41 -0000	1.10
  @@ -88,11 +88,12 @@
               }
           );
       }
  -    this.imgdiv = Wikiwyg.createElementWithAttrs(
  +    var wrap = Wikiwyg.createElementWithAttrs(
           'div', {
               'class': 'wikiwyg_buttons'
           }
       );
  +    this.imgdiv = document.createElement('SPAN');
   
       var config = this.config;
       for (var i = 0; i < config.controlLayout.length; i++) {
  @@ -117,7 +118,14 @@
           else
               this.add_button(action, label);
       }
  -    this.div.appendChild(this.imgdiv);
  +    this.div.appendChild(wrap);
  +    wrap.appendChild(this.imgdiv);
  +    var clear = Wikiwyg.createElementWithAttrs(
  +        'div', {
  +            'style': 'clear:both'
  +        }
  +    );
  +    this.div.appendChild(clear);
   }
   
   proto.enableThis = function() {
  
  
  


wkpark      2008/12/02 23:43:15

  Modified:    imgs/plugin/EditToolbar/moniwiki button_bold.png
                        button_extlink.png button_headline.png
                        button_hr.png button_image.png button_italic.png
                        button_link.png button_math.png button_media.png
                        button_nowiki.png button_sig.png
  Added:       imgs/plugin/EditToolbar/moniwiki button_smiley.png
                        itoolbg.png toolbar.css toolbg.png
  Log:
  more fancy toolbar by default
  
  Revision  Changes    Path
  1.2       +2 -4      moniwiki/imgs/plugin/EditToolbar/moniwiki/button_bold.png
  
  	<<Binary file>>
  
  
  1.2       +4 -6      moniwiki/imgs/plugin/EditToolbar/moniwiki/button_extlink.png
  
  	<<Binary file>>
  
  
  1.2       +3 -5      moniwiki/imgs/plugin/EditToolbar/moniwiki/button_headline.png
  
  	<<Binary file>>
  
  
  1.2       +1 -2      moniwiki/imgs/plugin/EditToolbar/moniwiki/button_hr.png
  
  	<<Binary file>>
  
  
  1.2       +1 -4      moniwiki/imgs/plugin/EditToolbar/moniwiki/button_image.png
  
  	<<Binary file>>
  
  
  1.2       +2 -3      moniwiki/imgs/plugin/EditToolbar/moniwiki/button_italic.png
  
  	<<Binary file>>
  
  
  1.2       +3 -3      moniwiki/imgs/plugin/EditToolbar/moniwiki/button_link.png
  
  	<<Binary file>>
  
  
  1.2       +2 -1      moniwiki/imgs/plugin/EditToolbar/moniwiki/button_math.png
  
  	<<Binary file>>
  
  
  1.2       +3 -1      moniwiki/imgs/plugin/EditToolbar/moniwiki/button_media.png
  
  	<<Binary file>>
  
  
  1.2       +3 -8      moniwiki/imgs/plugin/EditToolbar/moniwiki/button_nowiki.png
  
  	<<Binary file>>
  
  
  1.2       +1 -4      moniwiki/imgs/plugin/EditToolbar/moniwiki/button_sig.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/EditToolbar/moniwiki/button_smiley.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/EditToolbar/moniwiki/itoolbg.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/EditToolbar/moniwiki/toolbar.css
  
  Index: toolbar.css
  ===================================================================
  #toolbar {
    float:left;
    background:url(toolbg.png) repeat-x;
    margin-right:4px;
  }
  
  #toolbar span {
    float:left;
    padding-right:2px;
    margin-left:0px;
    background:url(toolbg.png) repeat-x;
    position:relative;
    left:2px;
    background-position:right top;
  }
  
  #toolbar img, #toolbar input {
      padding:1px;
  }
  
  #toolbar img:hover, #toolbar input:hover {
    padding:0px;
    border: 1px outset ThreeDHighlight;
    background:url(itoolbg.png) repeat-x;
  }
  
  
  
  1.1                  moniwiki/imgs/plugin/EditToolbar/moniwiki/toolbg.png
  
  	<<Binary file>>
  
  


wkpark      2008/12/02 23:43:52

  Added:       imgs/plugin/EditToolbar/mediawiki button_smiley.png
  Log:
  smiley button added
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/plugin/EditToolbar/mediawiki/button_smiley.png
  
  	<<Binary file>>
  
  


wkpark      2008/12/02 23:45:59

  Modified:    plugin   EditToolbar.php
  Log:
  reorderd toolbar to consistent with the WikiWyg.
  use toolbar.css if it exists
  
  Revision  Changes    Path
  1.7       +14 -8     moniwiki/plugin/EditToolbar.php
  
  Index: EditToolbar.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/EditToolbar.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- EditToolbar.php	2 Dec 2008 07:31:38 -0000	1.6
  +++ EditToolbar.php	2 Dec 2008 14:45:59 -0000	1.7
  @@ -7,7 +7,7 @@
   //
   // This feature is imported from the MediaWiki
   //
  -// $Id: EditToolbar.php,v 1.6 2008/12/02 07:31:38 wkpark Exp $
  +// $Id: EditToolbar.php,v 1.7 2008/12/02 14:45:59 wkpark Exp $
   
   function macro_EditToolbar($formatter,$value) {
       global $DBInfo;
  @@ -15,26 +15,32 @@
       $iconset=!empty($DBInfo->toolbar_iconset) ? $DBInfo->toolbar_iconset:
           'moniwiki';
       $imgdir=$DBInfo->imgs_dir.'/plugin/EditToolbar/'.$iconset;
  +    $formatter->register_javascripts("wikibits.js");
  +    $fcss= 'imgs/plugin/EditToolbar/'.$iconset.'/toolbar.css';
  +    $css='';
  +    if (file_exists($fcss))
  +        $css="<style type='text/css'>
  +@import url('$imgdir/toolbar.css');
  +</style>";
       $script=<<<EOS
  -<script type="text/javascript" src="$DBInfo->url_prefix/local/wikibits.js"></script>
  +$css
   <script language="JavaScript" type='text/javascript'>
   /*<![CDATA[*/
  -document.writeln("<div id='toolbar'>");
  +document.writeln("<div id='toolbar'><span>");
   addButton('$imgdir/button_bold.png','Bold text','\'\'\'','\'\'\'','Bold text');
   addButton('$imgdir/button_italic.png','Italic text','\'\'','\'\'','Italic text');
   addButton('$imgdir/button_link.png','Internal link','[',']','Link title');
   addButton('$imgdir/button_extlink.png','External link (remember http:// prefix)','[',']','http://www.example.com link title');
   addButton('$imgdir/button_headline.png','Level 2 headline','\\n== ',' ==\\n','Headline text');
  +addLinkButton('$imgdir/button_math.png','Mathematical formula (LaTeX)','mathChooser');
  +addButton('$imgdir/button_nowiki.png','Ignore wiki formatting','{{{','}}}','Insert non-formatted text here');
  +addButton('$imgdir/button_hr.png','Horizontal line (use sparingly)','\\n----\\n','','');
   addButton('$imgdir/button_image.png','Embedded image','attachment:','','Example.jpg');
   addButton('$imgdir/button_media.png','Media file link','[[Media(',')]]','Example.mp3');
  -addLinkButton('$imgdir/button_math.png','Mathematical formula (LaTeX)','mathChooser');
   addLinkButton('$imgdir/button_smiley.png','Smiley','smileyChooser');
  -addButton('$imgdir/button_nowiki.png','Ignore wiki formatting','{{{','}}}','Insert non-formatted text here');
  -
   addButton('$imgdir/button_sig.png','Your signature with timestamp','@SIG@','','');
  -addButton('$imgdir/button_hr.png','Horizontal line (use sparingly)','\\n----\\n','','');
   addInfobox('Click a button to get an example text','Please enter the text you want to be formatted.\\\\n It will be shown in the infobox for copy and pasting.\\\\nExample:\\\\n\$1\\\\nwill become:\\\\n\$2');
  -document.writeln("</div>");
  +document.writeln("</span></div><div style='clear:both'></div>");
   /*]]>*/
   </script>
   EOS;
  
  
  


wkpark      2008/12/03 17:20:15

  Modified:    plugin   MathChooser.php
  Log:
  magnify onmouseover
  
  Revision  Changes    Path
  1.3       +30 -3     moniwiki/plugin/MathChooser.php
  
  Index: MathChooser.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/MathChooser.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- MathChooser.php	2 Dec 2008 14:09:45 -0000	1.2
  +++ MathChooser.php	3 Dec 2008 08:20:15 -0000	1.3
  @@ -8,12 +8,12 @@
   // Name: MathChooser
   // Description: Latex symbol selector
   // URL: MoniWiki/MathChooserPlugin
  -// Version: $Revision: 1.2 $
  +// Version: $Revision: 1.3 $
   // License: GPL
   //
   // Usage: [[MathChooser]]
   //
  -// $Id: MathChooser.php,v 1.2 2008/12/02 14:09:45 wkpark Exp $
  +// $Id: MathChooser.php,v 1.3 2008/12/03 08:20:15 wkpark Exp $
   
   function macro_MathChooser($formatter,$value) {
       global $DBInfo;
  @@ -36,6 +36,29 @@
     document.getElementById('toolbar_'+el.title).style.display='block';
   }
   
  +function showBig(elm, e)
  +{
  +    var div=document.getElementById('magnify');
  +    while (div.firstChild) div.removeChild(div.firstChild);
  +
  +    var img = new Image();
  +    //img.src = 'http://www.codecogs.com/gif.latex?\\\\200dpi ' + elm.title;
  +    var sep = '?';
  +    var url = decodeURIComponent(String(self.location));
  +    var i;
  +    if ((i = url.indexOf(_ap)) != -1) url = url.substr(0,i); // _ap is global variable. ? or &
  +    img.src = url + _ap + 'action=latex2png&dpi=200&value=$' + encodeURIComponent(elm.title) +'$';
  +    div.appendChild(img);
  +
  +    var pos = getPos(elm);
  +    div.style.left = pos.x + elm.clientWidth + 20 + 'px';
  +    div.style.top = pos.y + elm.clientHeight + 10 + 'px';
  +
  +    div.style.display='block';
  +    div.style.position='absolute';
  +    elm.onmouseout= function() { document.getElementById('magnify').style.display='none';}
  +}
  +
   /*]]>*/
   </script>
   JS;
  @@ -110,7 +133,10 @@
           for ($i=1;$i<$sz;$i++) {
             $w=($xpos[$i]-$xpos[$i-1]-1);
             $x=$xpos[$i-1];
  -          $out.= "<li><a href='#' onclick=\"insertTags('$ ',' $','".str_replace('\\','\\\\',trim($tmp[$i-1]))."',2)\">".
  +          $tex=trim($tmp[$i-1]);
  +          $mouseover=' onmouseover="showBig(this,event)" ';
  +          $out.= "<li><a href='#' $mouseover title='$tex' ".
  +            " onclick=\"insertTags('$ ',' $','".str_replace('\\','\\\\',$tex)."',2)\">".
               "<div style='background:url($toolurl);width:{$w}px;height:{$height}px;background-position:-{$x}px 0px;'></div></a></li>\n";
           }
           $out.="\n</ul></div>\n";
  @@ -123,6 +149,7 @@
   <div style='clear:both;'></div>
   $out
   </div>
  +<div id='magnify' style='display:none'></div>
   <div style='clear:both;'></div>
   EOF;
   }
  
  
  


wkpark      2008/12/03 17:22:00

  Modified:    plugin   latex2png.php
  Log:
  support dpi option. ?ation=latex2png&dpi=300&value=$\alpha$
  
  Revision  Changes    Path
  1.2       +7 -3      moniwiki/plugin/latex2png.php
  
  Index: latex2png.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/latex2png.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- latex2png.php	2 Dec 2008 08:09:03 -0000	1.1
  +++ latex2png.php	3 Dec 2008 08:22:00 -0000	1.2
  @@ -8,12 +8,12 @@
   // Name: Latex To PNG plugin
   // Description: convert latex syntax to PNGs
   // URL: MoniWiki:Latex2PngPlugin
  -// Version: $Revision: 1.1 $
  +// Version: $Revision: 1.2 $
   // License: GPL
   //
   // Usage: ?action=latex2png&value=$\alpha$
   //
  -// $Id: latex2png.php,v 1.1 2008/12/02 08:09:03 wkpark Exp $
  +// $Id: latex2png.php,v 1.2 2008/12/03 08:22:00 wkpark Exp $
   
   function macro_latex2png($formatter,$value,$params=array()) {
       $png= $formatter->processor_repl('latex',$value,array('raw'=>1));
  @@ -21,7 +21,11 @@
   }
   
   function do_latex2png($formatter,$options) {
  -    $png= $formatter->processor_repl('latex',$options['value'],array('raw'=>1));
  +    $opts=array('raw'=>1);
  +    if (isset($options['dpi']) and $options['dpi'] > 120 and $options['dpi'] < 600)
  +        $opts['dpi']=$options['dpi'];
  +    $png= $formatter->processor_repl('latex',$options['value'],$opts);
  +
       if (file_exists($png)) {
           Header("Content-type: image/png");
           readfile($png);
  
  
  


wkpark      2008/12/03 17:22:00

  Modified:    plugin/processor latex.php
  Log:
  support dpi option. ?ation=latex2png&dpi=300&value=$\alpha$
  
  Revision  Changes    Path
  1.23      +10 -4     moniwiki/plugin/processor/latex.php
  
  Index: latex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/latex.php,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- latex.php	2 Dec 2008 14:10:24 -0000	1.22
  +++ latex.php	3 Dec 2008 08:22:00 -0000	1.23
  @@ -12,7 +12,7 @@
   // $path='./bin;C:/Program Files/MiKTeX 2.5/miktex/bin;C:/Program Files/ImageMagick-6.3.6-Q16';
   // # ImagMagick and MikTeX are used in this setting.
   //
  -// $Id: latex.php,v 1.22 2008/12/02 14:10:24 wkpark Exp $
  +// $Id: latex.php,v 1.23 2008/12/03 08:22:00 wkpark Exp $
   
   function _latex_renumber($match,$tag='\\tag') {
     // XXX
  @@ -42,7 +42,7 @@
     # site spesific variables
     $latex="latex";
     $dvicmd="dvipng";
  -  $dviopt='-D 120 -gamma 1.5';
  +  $dviopt='-D 120 -gamma 1.3';
     $convert="convert";
     $mogrify="mogrify";
     $vartmp_dir=&$DBInfo->vartmp_dir;
  @@ -54,10 +54,16 @@
   
     if (preg_match('/ps$/',$dvicmd)) {
       $tmpext='ps';
  -    $dviopt='-D 600';
  +    $dviopt='-D 300';
  +    if ($options['dpi'])
  +      $latex_convert_options.= ' -density '.$options['dpi'].'x'.$options['dpi'];
     } else {
       $tmpext='png';
       $mask='-%d';
  +    if ($options['dpi']) {
  +      $dviopt= preg_replace('/-D 120/','',$dviopt);
  +      $dviopt.=' -D '.$options['dpi'];
  +    }
     }
   
     if ($value[0]=='#' and $value[1]=='!')
  @@ -190,7 +196,7 @@
          return '';
        }
        #$formatter->errlog('DVIPS');
  -     $cmd= "$dvicmd $dvipot $uniq.dvi -o $uniq$mask.$tmpext";
  +     $cmd= "$dvicmd $dviopt $uniq.dvi -o $uniq$mask.$tmpext";
        $formatter->errlog('DVI',$uniq.'.log');
        $fp=popen($cmd.$formatter->NULL,'r');
        pclose($fp);
  
  
  


wkpark      2008/12/03 17:23:49

  Modified:    plugin   SWFUpload.php
  Log:
  suppress error msg
  
  Revision  Changes    Path
  1.11      +4 -4      moniwiki/plugin/SWFUpload.php
  
  Index: SWFUpload.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SWFUpload.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- SWFUpload.php	29 Nov 2008 01:54:07 -0000	1.10
  +++ SWFUpload.php	3 Dec 2008 08:23:49 -0000	1.11
  @@ -8,12 +8,12 @@
   // Name: SWF Upload
   // Description: SWF Upload Plugin
   // URL: http://labb.dev.mammon.se/swfupload/ MoniWikiDev:SWFUpload
  -// Version: $Revision: 1.10 $
  +// Version: $Revision: 1.11 $
   // License: GPL
   //
   // Usage: [[SWFUpload]]
   //
  -// $Id: SWFUpload.php,v 1.10 2008/11/29 01:54:07 wkpark Exp $
  +// $Id: SWFUpload.php,v 1.11 2008/12/03 08:23:49 wkpark Exp $
   
   function macro_SWFUpload($formatter,$value,$opts=array()) {
       global $DBInfo;
  @@ -59,7 +59,7 @@
       $uploaded='';
       if (is_dir($DBInfo->upload_dir.'/.swfupload/'.$mysubdir)) {
           $mydir=$DBInfo->upload_dir.'/.swfupload/'.$mysubdir;
  -        $handle = opendir($mydir);
  +        $handle = @opendir($mydir);
           if ($handle) {
               $files=array();
               while ($file = readdir($handle)) {
  @@ -83,7 +83,7 @@
           $key=$DBInfo->pageToKeyname($formatter->page->name);
           $mydir=$DBInfo->upload_dir."/$key";
   
  -        $handle = opendir($mydir);
  +        $handle = @opendir($mydir);
           if ($handle) {
               $files=array();
               while ($file = readdir($handle)) {
  
  
  


wkpark      2008/12/03 17:24:17

  Modified:    .        wiki.php
  Log:
  check needle re.
  
  Revision  Changes    Path
  1.406     +4 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.405
  retrieving revision 1.406
  diff -u -r1.405 -r1.406
  --- wiki.php	2 Dec 2008 08:09:03 -0000	1.405
  +++ wiki.php	3 Dec 2008 08:24:16 -0000	1.406
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.405 2008/12/02 08:09:03 wkpark Exp $
  +// $Id: wiki.php,v 1.406 2008/12/03 08:24:16 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.405 $',1,-1);
  +$_revision = substr('$Revision: 1.406 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -965,6 +965,8 @@
       if (!$needle) return false;
       $all= $this->getPageLists();
   
  +    $m = @preg_match("/$needle/".$opts,'dummy');
  +    if (!$m) return array(); 
       foreach ($all as $page) {
         if (preg_match("/$needle/".$opts,$page)) {
           $pages[] = $page; $count--;
  
  
  


wkpark      2008/12/03 17:26:47

  Modified:    local    moniwyg.js
  Log:
  instant off smileychooser with onclick action.
  
  Revision  Changes    Path
  1.55      +18 -5     moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.54
  retrieving revision 1.55
  diff -u -r1.54 -r1.55
  --- moniwyg.js	2 Dec 2008 14:16:40 -0000	1.54
  +++ moniwyg.js	3 Dec 2008 08:26:47 -0000	1.55
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.54 2008/12/02 14:16:40 wkpark Exp $
  +// $Id: moniwyg.js,v 1.55 2008/12/03 08:26:47 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -78,6 +78,18 @@
       }
   }
   
  +Wikiwyg.Mode.prototype.get_edit_height = function() {
  +    var height = parseInt(
  +        this.wikiwyg.divHeight * 1.1
  +    );
  +    var min = 100;
  +    
  +    var min = this.config.editHeightMinimum;
  +    return height < min
  +        ? min
  +        : height;
  +}
  +
   // Returns if current position is in a wikimarkup block or not
   Wikiwyg.Wysiwyg.prototype.get_wikimarkup_node = function() {
       var p=this.get_parent_node();
  @@ -1134,7 +1146,7 @@
   }
   
   proto.do_smiley = function(cmd,elm) {
  -    open_chooser('smileyChooser',elm);
  +    open_chooser('smileyChooser',elm,true);
   }
   
   proto.do_image = function() {
  @@ -1150,7 +1162,7 @@
   
   proto = Wikiwyg.Wikitext.prototype;
   
  -
  +proto.config.editHeightMinimum = 20;
   
   proto.enableThis = function() {
       Wikiwyg.Mode.prototype.enableThis.call(this);
  @@ -1980,7 +1992,7 @@
   }
   
   proto.do_smiley = function(cmd,elm) {
  -    open_chooser('smileyChooser',elm);
  +    open_chooser('smileyChooser',elm,true);
   }
   
   proto.collapse = function(string) {
  @@ -2737,7 +2749,7 @@
     return r;
   }
   
  -function open_chooser(id,elm) {
  +function open_chooser(id,elm,once) {
       var base = location.href.replace(/(.*?:\/\/.*?\/).*/, '$1');
   
       var div = document.getElementById(id);
  @@ -2758,6 +2770,7 @@
       div.style.top = pos.y + 21 + 'px';
       div.style.left = pos.x + 'px';
       div.style.width = '500px';
  +    if (once) div.onclick= function () { this.style.display='none'};
   }
   
   // vim:et:sts=4:sw=4:
  
  
  


wkpark      2008/12/03 17:26:47

  Modified:    plugin   EditToolbar.php
  Log:
  instant off smileychooser with onclick action.
  
  Revision  Changes    Path
  1.8       +2 -2      moniwiki/plugin/EditToolbar.php
  
  Index: EditToolbar.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/EditToolbar.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- EditToolbar.php	2 Dec 2008 14:45:59 -0000	1.7
  +++ EditToolbar.php	3 Dec 2008 08:26:47 -0000	1.8
  @@ -7,7 +7,7 @@
   //
   // This feature is imported from the MediaWiki
   //
  -// $Id: EditToolbar.php,v 1.7 2008/12/02 14:45:59 wkpark Exp $
  +// $Id: EditToolbar.php,v 1.8 2008/12/03 08:26:47 wkpark Exp $
   
   function macro_EditToolbar($formatter,$value) {
       global $DBInfo;
  @@ -37,7 +37,7 @@
   addButton('$imgdir/button_hr.png','Horizontal line (use sparingly)','\\n----\\n','','');
   addButton('$imgdir/button_image.png','Embedded image','attachment:','','Example.jpg');
   addButton('$imgdir/button_media.png','Media file link','[[Media(',')]]','Example.mp3');
  -addLinkButton('$imgdir/button_smiley.png','Smiley','smileyChooser');
  +addLinkButton('$imgdir/button_smiley.png','Smiley','smileyChooser',true);
   addButton('$imgdir/button_sig.png','Your signature with timestamp','@SIG@','','');
   addInfobox('Click a button to get an example text','Please enter the text you want to be formatted.\\\\n It will be shown in the infobox for copy and pasting.\\\\nExample:\\\\n\$1\\\\nwill become:\\\\n\$2');
   document.writeln("</span></div><div style='clear:both'></div>");
  
  
  


wkpark      2008/12/03 17:27:34

  Modified:    local    wikibits.js
  Log:
  instant off smileychooser.
  
  Revision  Changes    Path
  1.10      +6 -5      moniwiki/local/wikibits.js
  
  Index: wikibits.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/wikibits.js,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- wikibits.js	2 Dec 2008 14:16:40 -0000	1.9
  +++ wikibits.js	3 Dec 2008 08:27:34 -0000	1.10
  @@ -1,7 +1,7 @@
   // from the MediaWiki
   // simplified for the MoniWiki by wkpark
   //
  -// $Id: wikibits.js,v 1.9 2008/12/02 14:16:40 wkpark Exp $
  +// $Id: wikibits.js,v 1.10 2008/12/03 08:27:34 wkpark Exp $
   //
   // Wikipedia JavaScript support functions
   // if this is true, the toolbar will no longer overwrite the infobox when you move the mouse over individual items
  @@ -70,8 +70,9 @@
   	return;
   }
   
  -function addLinkButton(imageFile,speedTip,id) {
  -	document.write("<input type='image' onclick=\"javascript:openChooser(this,'" + id + "');\"");
  +function addLinkButton(imageFile,speedTip,id,once) {
  +	var off=once ? 'true':'false';
  +	document.write("<input type='image' onclick=\"javascript:openChooser(this,'" + id + "'," + off + ");\"");
           document.write(" width=\"22\" height=\"22\" src=\""+imageFile+"\" border=\"0\" alt=\""+speedTip+"\" title=\""+speedTip+"\""+" />");
   	return;
   }
  @@ -94,7 +95,7 @@
     return r;
   }
   
  -function openChooser(el,id) {
  +function openChooser(el,id,once) {
   	var div = document.getElementById(id);
   	if (!div) return;
   
  @@ -109,7 +110,7 @@
   	div.style.top = pos.y + 21 + 'px';
   	div.style.left = pos.x + 'px';
   	div.style.width = '500px';
  -	//div.onmouseout= "javascript:document.getElementById(\""+id+"\").style.display='none'";
  +	if (once) div.onclick= function () { this.style.display='none'};
   }
   
   function addInfobox(infoText,text_alert) {
  
  
  


wkpark      2008/12/03 17:30:15

  Modified:    imgs/plugin/EditToolbar/moniwiki toolbar.css
  Log:
  update
  
  Revision  Changes    Path
  1.2       +2 -2      moniwiki/imgs/plugin/EditToolbar/moniwiki/toolbar.css
  
  Index: toolbar.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/imgs/plugin/EditToolbar/moniwiki/toolbar.css,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- toolbar.css	2 Dec 2008 14:43:14 -0000	1.1
  +++ toolbar.css	3 Dec 2008 08:30:14 -0000	1.2
  @@ -15,11 +15,11 @@
   }
   
   #toolbar img, #toolbar input {
  -    padding:1px;
  +  padding:1px;
   }
   
   #toolbar img:hover, #toolbar input:hover {
     padding:0px;
  -  border: 1px outset ThreeDHighlight;
  +  border: 1px outset ThreeDHighlight; /* */
     background:url(itoolbg.png) repeat-x;
   }
  
  
  


wkpark      2008/12/03 20:03:55

  Modified:    css      _base.css _extra.css
  Log:
  IE css fix (form,input)
  IE css compatible fix for the wikiwyg/mathchooser tabs
  
  Revision  Changes    Path
  1.21      +8 -0      moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- _base.css	2 Dec 2008 00:58:24 -0000	1.20
  +++ _base.css	3 Dec 2008 11:03:54 -0000	1.21
  @@ -85,6 +85,10 @@
   
   textarea.wiki { width:100%; }
   
  +form { margin:0; padding:0;/* for IE */}
  +
  +input { font-size:1em;padding:2px; /* for IE */ }
  +
   .resizable-textarea .grippie {
     height: 14px;
     background: #ECE9D6 url(../imgs/misc/grippie.png) no-repeat 100% 100%;
  @@ -376,6 +380,10 @@
     margin-top:3px;
     margin-bottom:3px;
     background-color: #f0f0f0;
  +  background:url(../imgs/misc/toolbarbg.png) repeat-x;
  +  border-bottom: 1px solid #808080;
  +  border-right: 1px solid #bebebe;
  +  border-left: 1px solid #bebebe;
   }
   
   #smileyChooser img {
  
  
  
  1.21      +45 -12    moniwiki/css/_extra.css
  
  Index: _extra.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_extra.css,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- _extra.css	2 Dec 2008 00:58:24 -0000	1.20
  +++ _extra.css	3 Dec 2008 11:03:54 -0000	1.21
  @@ -582,10 +582,10 @@
   }
   
   #mathChooser {
  -  padding: 5px;
  +  padding: 2px;
     margin-top:3px;
     margin-bottom:3px;
  -  background-color: #f0f0f0;
  +  /* background-color: #f0f0f0; /* */
   }
   
   #mathChooser .tabs {
  @@ -602,46 +602,79 @@
   #mathChooser ul.tabs li {
     cursor: pointer;
     display:inline;
  +  float:left;
   }
   
   #mathChooser .tabs li {
       padding: 5px 0px;
  -    padding-bottom:1px;
  -    margin-left: 2px;
  +    padding-bottom:0px;
  +    margin-left: 3px;
  +    padding-top:0; /* */
       background: url(../imgs/misc/btn.gif) no-repeat;
  -    background-position: left -65px;
  +    background-position: left -63px; /* */
       display: inline;
   }
   
   #mathChooser .tabs li span {
       margin-left: 5px;
  -    background: url(../imgs/misc/btn.gif) no-repeat;
  +    background: url(../imgs/misc/btn.gif) no-repeat; /* */
  +    float:left;
   }
   
   #mathChooser .tabs li span {
       display: inline;
       padding: 5px 10px;
  +    padding-bottom:0px;
       padding-left:5px;
  -    padding-bottom:1px;
  -    background-position: right -65px;
  +    background-position: right -63px;
  +    position:relative;
  +    left:2px;
  +}
  +#mathChooser .tabs li:hover span {
  +  background-position: right -65px;
  +}
  +
  +#mathChooser .tabs li:hover {
  +  background-position: left -65px;
   }
   
   #mathChooser .tabs li.active {
  -    font-weight:bold;
  +  font-weight:bold;
  +  background-position: left -65px;
  +}
  +
  +#mathChooser .tabs li.active span {
  +  background-position: right -65px;
  +}
  +
  +#magnify {
  +  padding:2px;
  +  /* border:1px solid ThreeDHighlight; /* */
  +  border:1px solid black;
  +  background:#FFFFE1;
   }
   
   .toolbar {
     list-style-image: none;
     list-style-type: none;
     list-style-position: outside;
  -  margin: 0;
  +  margin: 2px;
  +  margin-top:0px;
     padding:0;
  -  display: inline;
  +  float:left;
  +  background:url(../imgs/misc/toolbarbg.png) repeat-x;
  +  border-top: 0;
  +  z-index:100;
  +  border-bottom: 1px solid #808080;
  +  border-right: 1px solid #bebebe;
  +  border-left: 1px solid #bebebe;
   }
   
   .toolbar li {
  +  margin-top:2px;
     cursor: pointer;
     display: inline;
  +  float:left;
   }
   
   .toolbar a {
  @@ -654,6 +687,6 @@
   
   .toolbar a:hover {
     border:1px solid red;
  +  background:url(../imgs/misc/btnpushed.png) repeat-x;
   }
   
  -
  
  
  


wkpark      2008/12/03 20:05:02

  Modified:    local/Wikiwyg/css moniwyg.css
  Log:
  IE css compatible fixes
  
  Revision  Changes    Path
  1.8       +12 -5     moniwiki/local/Wikiwyg/css/moniwyg.css
  
  Index: moniwyg.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/css/moniwyg.css,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- moniwyg.css	2 Dec 2008 14:16:41 -0000	1.7
  +++ moniwyg.css	3 Dec 2008 11:05:02 -0000	1.8
  @@ -9,7 +9,7 @@
   .wikiwyg_buttons {
       float:left;
       margin-right:2px;
  -    margin-top:1px;
  +    margin-top:0px;
       background: url(../images/toolbg24.png) repeat-x;
   }
   
  @@ -30,6 +30,9 @@
   
   .wikiwyg_control_link input {
       font-family:'Trebuchet MS',sans-serif;
  +    float:left;
  +    font-size:12px;
  +    padding:0 2px;
   }
   
   .wikiwyg_mode_selector {
  @@ -53,25 +56,29 @@
   
   ul.wikiwyg_mode_selector {
       display: inline;
  +    float:left;
   }
   
   .wikiwyg_mode_selector li {
  -    padding: 5px 0px;
  -    margin-left: 5px;
  +    float:left;
  +    padding: 0px 0px;
  +    margin-right: 5px;
       background: url(../images/modebtn.gif) no-repeat;
       background-position: left -63px;
       display: inline;
   }
   
   .wikiwyg_mode_selector span {
  +    float:left;
       margin-left: 5px;
       background: url(../images/modebtn.gif) no-repeat;
   }
   
   .wikiwyg_mode_selector span {
       display: inline;
  -    padding: 5px 10px;
  -    padding-left:5px;
  +    padding: 0px 0px;
  +    padding-bottom:2px;
  +    padding-right:5px;
       position:relative;
       left:2px;
       background-position: right -63px;
  
  
  


wkpark      2008/12/03 20:05:02

  Modified:    local/Wikiwyg/lib/Wikiwyg Toolbar.js
  Log:
  IE css compatible fixes
  
  Revision  Changes    Path
  1.11      +6 -1      moniwiki/local/Wikiwyg/lib/Wikiwyg/Toolbar.js
  
  Index: Toolbar.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/lib/Wikiwyg/Toolbar.js,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- Toolbar.js	2 Dec 2008 14:16:41 -0000	1.10
  +++ Toolbar.js	3 Dec 2008 11:05:02 -0000	1.11
  @@ -276,7 +276,12 @@
               }
           );
       } else {
  -        this.div.appendChild(document.createElement('br'));
  +        var clear = Wikiwyg.createElementWithAttrs(
  +            'div', {
  +                'style': 'clear:both'
  +            }
  +        );
  +        this.div.appendChild(clear);
       }
   }
   
  
  
  


wkpark      2008/12/03 20:05:40

  Modified:    local    wikibits.js
  Log:
  opera selection fix
  
  Revision  Changes    Path
  1.11      +2 -2      moniwiki/local/wikibits.js
  
  Index: wikibits.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/wikibits.js,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- wikibits.js	3 Dec 2008 08:27:34 -0000	1.10
  +++ wikibits.js	3 Dec 2008 11:05:40 -0000	1.11
  @@ -1,7 +1,7 @@
   // from the MediaWiki
   // simplified for the MoniWiki by wkpark
   //
  -// $Id: wikibits.js,v 1.10 2008/12/03 08:27:34 wkpark Exp $
  +// $Id: wikibits.js,v 1.11 2008/12/03 11:05:40 wkpark Exp $
   //
   // Wikipedia JavaScript support functions
   // if this is true, the toolbar will no longer overwrite the infobox when you move the mouse over individual items
  @@ -218,7 +218,7 @@
   	// IE
   	// http://www.bazon.net/mishoo/articles.epl?art_id=1292 (used by this script)
   	// http://the-stickman.com/web-development/javascript/finding-selection-cursor-position-in-a-textarea-in-internet-explorer/
  -	if(doc.selection  && !is_gecko) {
  +	if(doc.selection  && !is_gecko && !is_opera) {
   		txtarea.focus();
   		var r = doc.selection.createRange();
   		var range = r.duplicate();
  
  
  


wkpark      2008/12/04 14:01:58

  Modified:    .        wiki.php
  Log:
  fixed get_pagenem()
  fixed dynamic_macro detection method.
  fixed internal wiki-engine to interpret muti-lined cell contents.
  
  Revision  Changes    Path
  1.407     +24 -9     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.406
  retrieving revision 1.407
  diff -u -r1.406 -r1.407
  --- wiki.php	3 Dec 2008 08:24:16 -0000	1.406
  +++ wiki.php	4 Dec 2008 05:01:58 -0000	1.407
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.406 2008/12/03 08:24:16 wkpark Exp $
  +// $Id: wiki.php,v 1.407 2008/12/04 05:01:58 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.406 $',1,-1);
  +$_revision = substr('$Revision: 1.407 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2747,7 +2747,9 @@
         if (!function_exists ("macro_".$plugin)) return '[['.$macro.']]';
       }
   
  -    if ($this->_macrocache and empty($options['call']) and isset($this->dynamic_macros[strtolower($plugin)])) {
  +    if ($this->_macrocache and empty($options['call']) and
  +      (isset($this->dynamic_macros[strtolower($plugin)]) or
  +      isset($this->dynamic_macros[$plugin]))) {
         $macro=$plugin. ($args ? '('.$args.')':'');
         $md5sum= md5($macro);
         $this->_macros[$md5sum]=array($macro,$mid);
  @@ -3414,7 +3416,10 @@
         if ($line[$ll-1]=='&') {
           $oline.=substr($line,0,-1)."\n";
           continue;
  -      } else if (!empty($oline) and ($in_table or preg_match('/^\s*\|\|/',$oline)) and !preg_match('/\|\|$/',$line)) {
  +      } else if (empty($oline) and preg_match('/^\s*\|\|/',$line) and !preg_match('/\|\|\s*$/',$line)) {
  +        $oline.=$line."\n";
  +        continue;
  +      } else if (!empty($oline) and ($in_table or preg_match('/^\s*\|\|/',$oline)) and !preg_match('/\|\|\s*$/',$line)) {
           $oline.=$line."\n";
           continue;
         } else {
  @@ -4806,15 +4811,25 @@
       else {
         $pagename = $_SERVER['QUERY_STRING'];
         $temp = strtok($pagename,"&");
  -
  -      if (!$temp or ($p=strpos($temp,"="))===false) {
  +      $p=strpos($temp,"=");
  +      if (!$temp or $p===false) {
           if (preg_match('/^([^&=]+)/',$pagename,$matches)) {
             $pagename = urldecode($matches[1]);
             $_SERVER['QUERY_STRING']=substr($_SERVER['QUERY_STRING'],strlen($pagename));
           }
  -      } else if ($p>0 and substr($temp,0,$p)=='value') {
  -        $pagename= substr($temp,$p+1);
  -        $_SERVER['QUERY_STRING']=substr($_SERVER['QUERY_STRING'],strlen($temp));
  +      } else if ($p>0) {
  +        $k = substr($temp,0,$p);
  +        $v = substr($temp,$p+1);
  +        if ($k =='value') {
  +          $pagename= substr($temp,$p+1);
  +          $_SERVER['QUERY_STRING']=substr($_SERVER['QUERY_STRING'],strlen($temp));
  +        } else if ($k =='action' and $v =='login') {
  +          $pagename="UserPreferences";
  +        } else {
  +          $pagename='';
  +        }
  +      } else {
  +        $pagename=''; // get default pagename later in the wiki_main().
         }
       }
     }
  
  
  


wkpark      2008/12/04 14:05:06

  Modified:    .        wikilib.php
  Log:
  a duplicated css id name is removed.
  fixed style of openid input form.
  
  Revision  Changes    Path
  1.248     +3 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.247
  retrieving revision 1.248
  diff -u -r1.247 -r1.248
  --- wikilib.php	27 Nov 2008 01:12:24 -0000	1.247
  +++ wikilib.php	4 Dec 2008 05:05:06 -0000	1.248
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.247 2008/11/27 01:12:24 wkpark Exp $
  +// $Id: wikilib.php,v 1.248 2008/12/04 05:05:06 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1560,7 +1560,7 @@
       $options['savetext']=$savetext;
   
       $formatter->preview=1;
  -    print '<div id="editor_area">'.macro_EditText($formatter,$value,$options).'</div>'; # XXX
  +    print '<div id="editor_area_wrap">'.macro_EditText($formatter,$value,$options).'</div>'; # XXX
       print $DBInfo->hr;
       print $menu;
       print "<div id='wikiPreview'>\n";
  @@ -1966,7 +1966,7 @@
     <tr>
       <th>OpenID</th>
       <td>
  -      <input type="text" name="openid_url" value="" style="background:url(http://www.myopenid.com/static/openid-icon-small.gif) no-repeat scroll 3px 2px; padding: 2px 2px 2px 28px;" />
  +      <input type="text" name="openid_url" value="" style="background:url(http://www.myopenid.com/static/openid-icon-small.gif) no-repeat; padding:2px;padding-left:24px; border-width:1px" />
   	    <input type="submit" name="login" value="$button" /> &nbsp;
       </td>
     </tr>
  
  
  


wkpark      2008/12/04 14:07:43

  Added:       plugin   html2pdf.php
  Log:
  a html2pdf plugin added now.
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/html2pdf.php
  
  Index: html2pdf.php
  ===================================================================
  <?php
  // Copyright 2008 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a HTML to PDF plugin using the TCPDF for the MoniWiki
  //
  // Author: Won-Kyu Park <wkpark@kldp.org>
  // Date: 2008-12-01
  // Name: TCPDF plugin
  // Description: a HTML2PDF Plugin using the TCPDF
  // URL: MoniWiki:Html2PdfPlugin
  // Version: $Revision: 1.1 $
  // License: GPL
  // Usage: ?action=tcpdf
  //
  // $Id: html2pdf.php,v 1.1 2008/12/04 05:07:42 wkpark Exp $
  
  
  function do_html2pdf($formatter,$options) {
      global $DBInfo;
  
      $conf=_load_php_vars("config/html2pdf.php");
  
      $libdir=!empty($conf['tcpdf_dir']) ? $conf['tcpdf_dir']:'tcpdf';
      $k_path_install = 'lib/'.$libdir.'/'; # required for config/tcpdf.php
      @require_once('config/tcpdf.php');
  
      @require_once('lib/'.$libdir.'/config/lang/eng.php');
      @require_once('lib/'.$libdir.'/tcpdf.php');
  
      if (!class_exists('TCPDF')) {
          $options['title']=_("The TCPDF class not found!");
          return do_invalid($formatter,$options);
      }
  
      // define the share directory to create img
      define('X_PATH_SHARE_IMG', $DBInfo->cache_public_dir.'/html2pdf/');
  
      if (!file_exists(X_PATH_SHARE_IMG)) _mkdir_p(X_PATH_SHARE_IMG,0777); // XXX
  
      $formatter->nonexists='always';
      $formatter->section_edit=0;
  
      ob_start();
      $formatter->send_header();
      $formatter->send_page('',array('fixpath'=>1));
      print '</body></html>';
      $html=ob_get_contents();
      ob_end_clean();
  
      # begin
      $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, $DBInfo->charset);
  
      // set default header data
      //$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING);
      $pdf->SetHeaderData(PDF_HEADER_LOGO, 20, $formatter->page->name);
      $pdf->SetTitle($formatter->page->name);
      # $pdf->SetAuthor('Your name');
      $pdf->SetCreator('TCPDF/MoniWiki');
      $pdf->SetSubject($formatter->page->name);
      if ($formatter->pi['#keywords'])
          $pdf->SetKeywords($keywords=$formatter->pi['#keywords']);
  
      // load default font
      $pdf->AddFont($conf['default_unifont']);
      $pdf->SetFont($conf['default_font']);
  
      // set header and footer fonts
      $pdf->setHeaderFont(Array($conf['default_unifont'], '', PDF_FONT_SIZE_MAIN));
      //$pdf->setHeaderFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
      $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
  
      //set margins
      $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
      $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
      $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
  
      //set auto page breaks
      $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
  
      //set image scale factor
      //$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
      # initialize document
      $pdf->AliasNbPages();
  
      # add a page
      $pdf->AddPage();
      #
      $pdf->writeHTML($html, true, 0, true, true);
  
      # output
      $pdf->output(date("Ymd", time()).'.pdf', 'I');
  
      return;
  }
  
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2008/12/04 14:07:43

  Added:       config   html2pdf.php.sample
  Log:
  a html2pdf plugin added now.
  
  Revision  Changes    Path
  1.1                  moniwiki/config/html2pdf.php.sample
  
  Index: html2pdf.php.sample
  ===================================================================
  <?php
  # a html2pdf plugin config file for the TCPDF.
  
  # installed directory name
  $tcpdf_dir='tcpdf';
  
  # default font name
  $default_font='dejavusans';
  $default_font='Times';
  #$default_font='helvetica';
  
  # default UnicodeTrueType or CID font name.
  $default_unifont='undotum';
  #$default_unifont='hysmyeongjostdmedium';
  
  #
  #$default_font='undotum';
  
  ?>
  
  
  


wkpark      2008/12/04 14:08:26

  Modified:    plugin   MathChooser.php
  Log:
  set default tab and attributes.
  
  Revision  Changes    Path
  1.4       +5 -3      moniwiki/plugin/MathChooser.php
  
  Index: MathChooser.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/MathChooser.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- MathChooser.php	3 Dec 2008 08:20:15 -0000	1.3
  +++ MathChooser.php	4 Dec 2008 05:08:26 -0000	1.4
  @@ -8,12 +8,12 @@
   // Name: MathChooser
   // Description: Latex symbol selector
   // URL: MoniWiki/MathChooserPlugin
  -// Version: $Revision: 1.3 $
  +// Version: $Revision: 1.4 $
   // License: GPL
   //
   // Usage: [[MathChooser]]
   //
  -// $Id: MathChooser.php,v 1.3 2008/12/03 08:20:15 wkpark Exp $
  +// $Id: MathChooser.php,v 1.4 2008/12/04 05:08:26 wkpark Exp $
   
   function macro_MathChooser($formatter,$value) {
       global $DBInfo;
  @@ -102,6 +102,7 @@
       $mtools=array_merge($mtools,$mytools);
   
       $out='';
  +    $attr=' class="active"';
       $sty=' style="display:block"';
       foreach ($mtools as $k=>$tool) {
           $tool= trim($tool);
  @@ -111,7 +112,8 @@
           $tex = "$$\n\\begin{array}{ $col }\n$tex\n\\end{array}\n$$\n";
   
           $toolbar=$formatter->macro_repl('latex2png',$tex);
  -        $tab.='<li title="'.$k.'" onclick="menuToogle(this)"><span>'._($k).'</span></li>';
  +        $tab.='<li title="'.$k.'"'.$attr.' onclick="menuToogle(this)"><span>'._($k).'</span></li>';
  +        $attr='';
   
           $im = imagecreatefrompng($toolbar);
           $col = imagecolorallocate($im, 0, 0, 0);
  
  
  


wkpark      2008/12/09 16:51:21

  Added:       plugin/function toc.php
  Log:
  add a sample function for templete_ engine
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/function/toc.php
  
  Index: toc.php
  ===================================================================
  <?php
  // Copyright 2008 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // function plugin for the MoniWiki
  //
  // Author: Won-Kyu Park <wkpark@kldp.org>
  // Date: 2008-12-017
  // Name: TableOfContent function
  // Description: TableOfContent function
  // URL: MoniWiki:FunctionPlugin
  // Version: $Revision: 1.1 $
  // License: GPL
  //
  // Usage: $toc = function_toc($formatter);
  //
  // $Id: toc.php,v 1.1 2008/12/09 07:51:21 wkpark Exp $
  
  function function_toc($formatter) {
      $secdep = 6;
      $simple = 1;
  
      $head_num=1;
      $head_dep=0;
  
      $body=$formatter->page->get_raw_body();
      $body=preg_replace("/\{\{\{.+?\}\}\}/s",'',$body);
      $lines=explode("\n",$body);
  
      $toc = array();
      foreach ($lines as $line) {
          preg_match("/(?<!=)(={1,$secdep})\s(#?)(.*)\s+\\1\s?$/",$line,$match);
          if (!$match) continue;
  
          $dep=strlen($match[1]);
          $head=str_replace("<","&lt;",$match[3]);
          # strip some basic wikitags
          # $formatter->baserepl,$head);
          #$head=preg_replace($formatter->baserule,"\\1",$head);
          # do not strip basic wikitags
          $head=preg_replace($formatter->baserule,$formatter->baserepl,$head);
          $head=preg_replace("/\[\[.*\]\]/","",$head);
          $head=preg_replace("/(".$formatter->wordrule.")/e",
              "\$formatter->link_repl('\\1')",$head);
  
          if ($simple)
              $head=strip_tags($head,'<b><i><img><sub><sup><del><tt><u><strong>');
  
          if (!$depth_top) { $depth_top=$dep; $depth=1; }
          else {
              $depth=$dep - $depth_top + 1;
              if ($depth <= 0) $depth=1;
          }
  
          $num="".$head_num;
          $odepth=$head_dep;
          $open="";
          $close="";
  
          if ($match[2]) {
              # reset TOC numberings
              $dum=explode(".",$num);
              $i=sizeof($dum);
              for ($j=0;$j<$i;$j++) $dum[$j]=1;
              $dum[$i-1]=0;
              $num=join($dum,'.');
              if ($prefix) $prefix++;
              else $prefix=1;
          }
  
          if ($odepth && ($depth > $odepth)) {
              $num.='.1';
          } else if ($odepth) {
              $dum=explode('.',$num);
              $i=sizeof($dum)-1;
              while ($depth < $odepth && $i > 0) {
                  unset($dum[$i]);
                  $i--;
                  $odepth--;
              }
              $dum[$i]++;
              $num=join($dum,'.');
          }
          $head_dep=$depth; # save old
          $head_num=$num;
  
          $toc["$num"]=$head;
      }
  
      return $toc;
  }
  
  // vim:et:sts=4:sw=4:
  ?>
  
  
  


wkpark      2008/12/09 16:52:17

  Modified:    plugin   UploadedFiles.php
  Log:
  xhtml validate
  
  Revision  Changes    Path
  1.29      +8 -8      moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- UploadedFiles.php	26 Apr 2008 14:33:16 -0000	1.28
  +++ UploadedFiles.php	9 Dec 2008 07:52:17 -0000	1.29
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadedFiles plugin for the MoniWiki
   //
  -// $Id: UploadedFiles.php,v 1.28 2008/04/26 14:33:16 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.29 2008/12/09 07:52:17 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     $list=macro_UploadedFiles($formatter,$options['page'],$options);
  @@ -259,12 +259,12 @@
   
      $link=$formatter->link_url($formatter->page->urlname);
      $out="<form method='post' action='$link'>";
  -   $out.="<input type='hidden' name='action' value='DeleteFile' />\n";
  +   $out.="<p><input type='hidden' name='action' value='DeleteFile' />\n";
      if ($key)
        $out.="<input type='hidden' name='value' value='$value' />\n";
   
   
  -   $out.="<table style='border:0' cellpadding='2'>\n";
  +   $out.="</p><table style='border:0px' cellpadding='2'>\n";
      $colspan='';
      if ($use_admin) $colspan=" colspan='2'";
      if ($use_fileinfo) {
  @@ -384,7 +384,7 @@
                 'rpm|deb|pdf|ppt|xls|tgz|gz|bz2|zip)$/',$ext)) {
               $ext='unknown';
             }
  -          $fname="<img src='$icon_dir/$ext.png' class='icon' $alt /><div>$file</div>";
  +          $fname="<img src='$icon_dir/$ext.png' class='icon' $alt /><span>$file</span>";
           }
           if ($js_tag) {
             //if (strpos($file,' '))
  @@ -392,7 +392,7 @@
             $link="javascript:$tag";
           }
         }
  -      if ($iidx % $col == 1)
  +      if (($iidx % $col) == 0)
         $out.="<tr>";
         if ($use_admin)
           $out.="<td class='wiki'><input type='$checkbox' name='files[$idx]' value='$file' /></td>";
  @@ -400,7 +400,7 @@
         if ($use_fileinfo) {
           $out.="<td align='right' class='wiki'>$size</td><td class='wiki'>$date</td>";
         }
  -      if ($iidx % $col == 0)
  +      if (($iidx % $col) == 0)
         $out.="</tr>\n";
         $idx++;
         $iidx++;
  @@ -411,8 +411,8 @@
      $out.="</table>\n";
      if ($use_admin) {
        if ($DBInfo->security->is_protected("deletefile",$options))
  -       $out.=_("Password").": <input type='password' name='passwd' size='10' />\n";
  -     $out.="<input type='submit' value='"._("Delete selected files")."' />";
  +       $out.='<p>'._("Password").": <input type='password' name='passwd' size='10' /></p>\n";
  +     $out.="<p><input type='submit' value='"._("Delete selected files")."' /></p>";
      }
      $out.="</form>\n";
   
  
  
  


wkpark      2008/12/09 16:54:11

  Modified:    plugin/processor monimarkup.php geshi.php
  Log:
  monimarkup: ignore trailing spaces with table syntax
  geshi: check if GeSHi is exist or no
  
  Revision  Changes    Path
  1.12      +3 -3      moniwiki/plugin/processor/monimarkup.php
  
  Index: monimarkup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/monimarkup.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- monimarkup.php	29 Nov 2008 11:18:41 -0000	1.11
  +++ monimarkup.php	9 Dec 2008 07:54:11 -0000	1.12
  @@ -3,12 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a moniwiki formatting processor for the MoniWiki
   //
  -// $Id: monimarkup.php,v 1.11 2008/11/29 11:18:41 wkpark Exp $
  +// $Id: monimarkup.php,v 1.12 2008/12/09 07:54:11 wkpark Exp $
   /**
    * @date    2006-08-09
    * @name    Moniwiki Processor
    * @desc    Moniwiki default processor
  - * @version $Revision: 1.11 $
  + * @version $Revision: 1.12 $
    * @depend  1.1.3
    * @license GPL
    */
  @@ -308,7 +308,7 @@
           $oline='';
           foreach ($lines as $line) {
               if (substr($line,-1) == '&') { $oline.=substr($line,0,-1)."\n"; continue; }
  -            if (empty($oline) and preg_match('/^\s*\|\|/',$line) and !preg_match('/\|\|$/',$line)) {
  +            if (empty($oline) and preg_match('/^\s*\|\|/',$line) and !preg_match('/\|\|\s*$/',$line)) {
                   $oline.=$line."\n"; continue;
               } else if (!empty($oline) and ($_in_table or preg_match('/^\s*\|\|/',$oline))) {
                   if (!preg_match('/\|\|$/',$line)) {
  
  
  
  1.6       +4 -1      moniwiki/plugin/processor/geshi.php
  
  Index: geshi.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/geshi.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- geshi.php	1 Aug 2006 01:02:30 -0000	1.5
  +++ geshi.php	9 Dec 2008 07:54:11 -0000	1.6
  @@ -27,7 +27,7 @@
   //
   // this version was tested with geshi 1.0.6.
   //
  -// $Id: geshi.php,v 1.5 2006/08/01 01:02:30 wkpark Exp $
  +// $Id: geshi.php,v 1.6 2008/12/09 07:54:11 wkpark Exp $
   
   @include_once(dirname(__FILE__)."/../../lib/geshi/geshi.php");
   
  @@ -35,6 +35,9 @@
   function processor_geshi($formatter,$value,$options) {
     global $DBInfo;
   
  +  if (!class_exists('GeSHi'))
  +    retrun $formatter->processor_repl('vim',$value,$options);
  +
     $syntax=array(
       'actionscript', 'ada', 'apache', 'asm', 'asp', 'bash', 'c', 'c_mac',
       'caddcl', 'cadlisp', 'cpp', 'csharp', 'css-gen', 'css', 'delphi',
  
  
  


wkpark      2008/12/09 16:54:34

  Modified:    plugin/processor jmol.php
  Log:
  adopt new java behavior
  
  Revision  Changes    Path
  1.6       +9 -3      moniwiki/plugin/processor/jmol.php
  
  Index: jmol.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/jmol.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- jmol.php	10 Apr 2008 09:34:50 -0000	1.5
  +++ jmol.php	9 Dec 2008 07:54:34 -0000	1.6
  @@ -5,7 +5,7 @@
   //
   // http://jmol.sf.net
   //
  -// $Id: jmol.php,v 1.5 2008/04/10 09:34:50 wkpark Exp $
  +// $Id: jmol.php,v 1.6 2008/12/09 07:54:34 wkpark Exp $
   
   function processor_jmol($formatter,$value="") {
       $verbs=array('#sticks'=>'wireframe 0.25',
  @@ -17,6 +17,9 @@
                   '#white'=>'background [255,255,255]',
                   );
       $default_size="width='200' height='200'";
  +    $sep='';
  +    # old java behavior
  +    if ($use_sep) { $sep='|'; }
   
       $use_inline=1; // MOPAC format does not recognized with a param "loadInline"
   
  @@ -203,8 +206,11 @@
       $pubpath = $formatter->url_prefix.'/applets/JmolPlugin';
   
       if ($use_inline) {
  -        $molstring=str_replace("\n","|\n",$body);
  -        if ($molstring{0} == ' ') $molstring="|\n".$molstring;
  +        $molstring=$body;
  +        if ($use_sep) {
  +            $molstring=str_replace("\n",$sep."\n",$molstring);
  +        }
  +        if ($molstring{0} == ' ') $molstring=$sep."\n".$molstring;
           $args.="<param name='loadinline' value='$molstring' />";
       }
   
  
  
  


wkpark      2008/12/09 16:55:17

  Modified:    plugin   print.php
  Log:
  link always
  fixpath
  
  Revision  Changes    Path
  1.7       +3 -3      moniwiki/plugin/print.php
  
  Index: print.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/print.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- print.php	13 Oct 2007 00:22:01 -0000	1.6
  +++ print.php	9 Dec 2008 07:55:17 -0000	1.7
  @@ -3,13 +3,13 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a print action plugin for the MoniWiki
   //
  -// $Id: print.php,v 1.6 2007/10/13 00:22:01 wkpark Exp $
  +// $Id: print.php,v 1.7 2008/12/09 07:55:17 wkpark Exp $
   
   function do_print($formatter,$options) {
     global $DBInfo;
     $options['css_url']=$DBInfo->url_prefix."/css/print.css";
   
  -  $formatter->nonexists='simple';
  +  $formatter->nonexists='always';
   
     $formatter->send_header("",$options);
     kbd_handler();
  @@ -18,7 +18,7 @@
     print "</div>";
     print "<div id='wikiContent'>";
     $formatter->external_on=1;
  -  $formatter->send_page();
  +  $formatter->send_page('',array('fixpath'=>1));
     print "</div></div>";
     print "<div id='printFooter'>";
     print sprintf(_("Retrieved from %s"),
  
  
  


wkpark      2008/12/09 16:55:48

  Modified:    plugin   html2pdf.php
  Log:
  fix TCPDF class
  
  Revision  Changes    Path
  1.2       +98 -10    moniwiki/plugin/html2pdf.php
  
  Index: html2pdf.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/html2pdf.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- html2pdf.php	4 Dec 2008 05:07:42 -0000	1.1
  +++ html2pdf.php	9 Dec 2008 07:55:48 -0000	1.2
  @@ -8,15 +8,14 @@
   // Name: TCPDF plugin
   // Description: a HTML2PDF Plugin using the TCPDF
   // URL: MoniWiki:Html2PdfPlugin
  -// Version: $Revision: 1.1 $
  +// Version: $Revision: 1.2 $
   // License: GPL
   // Usage: ?action=tcpdf
   //
  -// $Id: html2pdf.php,v 1.1 2008/12/04 05:07:42 wkpark Exp $
  -
  +// $Id: html2pdf.php,v 1.2 2008/12/09 07:55:48 wkpark Exp $
   
   function do_html2pdf($formatter,$options) {
  -    global $DBInfo;
  +    global $DBInfo,$Config;
   
       $conf=_load_php_vars("config/html2pdf.php");
   
  @@ -32,6 +31,88 @@
           return do_invalid($formatter,$options);
       }
   
  +    if (!class_exists('XTCPDF')) {
  +        class XTCPDF extends TCPDF {
  +            var $toc = array();
  +            var $fontalias = array();
  +
  +            function setFontAlias($alias) {
  +                $this->fontalias = array();
  +                foreach($alias as $k=>$v) {
  +                    array_push($this->fontlist,$k);
  +                }
  +                $this->fontalias = $alias;
  +            }
  +
  +            function AddFont($family, $style='', $fontfile='') {
  +                $family=trim($family);
  +                if (!empty($family) and array_key_exists($family,$this->fontalias)) {
  +		    $family = strtolower($family);
  +                    $fontfile = $family;
  +                    $name = $this->fontalias[$family];
  +                    $fontfile = $this->fontalias[$family].'.php';
  +                    $fontdata = parent::AddFont($family, $style,$fontfile);
  +                    $key = $fontdata['fontkey'];
  +                    if ($this->fonts[$key]['type']=='core')
  +                        $this->fonts[$key]['name']=$this->CoreFonts[$name];
  +                    return $fontdata;
  +                }
  +                return parent::AddFont($family, $style,$fontfile);
  +            }
  +
  +            function getHtmlDomArray($html) {
  +		$html = preg_replace('@<title>.*</title>@','',$html);
  +		$html = preg_replace('@<head>.*</head>@s','',$html);
  +		$html = preg_replace('@&quot;@','"',$html);
  +		$html = preg_replace('@>\s+<@',"><",$html);
  +		$html = preg_replace('@>\n@',">",$html);
  +		$html = preg_replace('@/\*<\!\[CDATA\[.*\]\]>\*/\n?@Us','',$html);
  +                $dom = &parent::getHtmlDomArray($html);
  +                $sz = count($dom);
  +                for ($i=0; $i<$sz;$i++) {
  +                    $tag=&$dom[$i];
  +                    if (!empty($tag['opening']) and $tag['value']=='table') {
  +                        $tag['attribute']['border']=1;
  +                        #$tag['attribute']['bgcolor']=array(200,200,200);
  +                        $tag['bgcolor']=array(200,200,200);
  +                    } else if (!empty($tag['opening']) and $tag['value']=='pre') {
  +                        $tag['bgcolor']=array(0,0,0);
  +                        $tag['fgcolor']=array(255,255,255);
  +                        $tag['fontname']='courier';
  +                    #} else if (!empty($tag['opening']) and $tag['value']=='div') {
  +                    #    $tag['bgcolor']=array(100,100,100);
  +                    }
  +                }
  +                return $dom;
  +            }
  +
  +	    function closeHTMLTagHandler(&$dom, $key, $cell=false) {
  +
  +		$tag = $dom[$key];
  +                switch ($tag['value']) {
  +                case 'h1':
  +                case 'h2':
  +                case 'h3':
  +                case 'h4':
  +                case 'h5':
  +                case 'h6':
  +                    $i = $key;
  +                    $txt = '';
  +                    while ($dom[--$i]['value'] != $tag['value'] and $i > 0) {
  +                        if (!isset($dom[$i]['opening']))
  +                            $txt = $dom[$i]['value'].$txt;
  +                    }
  +
  +                    $num = key($this->toc);
  +                    $dep = count(explode('.',$num));
  +                    $this->Bookmark($num.' '.$this->toc[$num],$dep,$this->y);
  +                    next($this->toc);
  +                }
  +                parent::closeHTMLTagHandler(&$dom, $key, $cell);
  +            }
  +        }
  +    }
  +
       // define the share directory to create img
       define('X_PATH_SHARE_IMG', $DBInfo->cache_public_dir.'/html2pdf/');
   
  @@ -48,11 +129,15 @@
       ob_end_clean();
   
       # begin
  -    $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, $DBInfo->charset);
  +    $pdf = new XTCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, $DBInfo->charset);
  +    include_once('function/toc.php');
  +    $toc = function_toc($formatter);
  +    $pdf->toc = $toc;
  +    $pdf->setFontAlias(array('monospace'=>'courier'));
   
       // set default header data
  -    //$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING);
  -    $pdf->SetHeaderData(PDF_HEADER_LOGO, 20, $formatter->page->name);
  +    // $pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING);
  +    $pdf->SetHeaderData($DBInfo->logo_img, 20, $formatter->page->name);
       $pdf->SetTitle($formatter->page->name);
       # $pdf->SetAuthor('Your name');
       $pdf->SetCreator('TCPDF/MoniWiki');
  @@ -65,8 +150,8 @@
       $pdf->SetFont($conf['default_font']);
   
       // set header and footer fonts
  -    $pdf->setHeaderFont(Array($conf['default_unifont'], '', PDF_FONT_SIZE_MAIN));
  -    //$pdf->setHeaderFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
  +    // $pdf->setHeaderFont(Array($conf['default_unifont'], '', PDF_FONT_SIZE_MAIN));
  +    $pdf->setHeaderFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
       $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
   
       //set margins
  @@ -77,6 +162,8 @@
       //set auto page breaks
       $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
   
  +    //set some language-dependent strings
  +    $pdf->setLanguageArray($l); 
       //set image scale factor
       //$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
       # initialize document
  @@ -84,8 +171,9 @@
   
       # add a page
       $pdf->AddPage();
  +    $pdf->Bookmark($formatter->page->name,0,0);
       #
  -    $pdf->writeHTML($html, true, 0, true, true);
  +    $pdf->writeHTML($html, true, 0, false, false);
   
       # output
       $pdf->output(date("Ymd", time()).'.pdf', 'I');
  
  
  


wkpark      2008/12/09 17:05:13

  Added:       config   tcpdf.php
  Log:
  config file for the TCPDF
  
  Revision  Changes    Path
  1.1                  moniwiki/config/tcpdf.php
  
  Index: tcpdf.php
  ===================================================================
  <?php
  /**
   * WARNING!!
   * XXX Please do not modify this file. XXX
   */
  
  /**
   * Configuration file for TCPDF.
   * @author Nicola Asuni
   * @copyright 2004-2008 Nicola Asuni - Tecnick.com S.r.l (www.tecnick.com) Via Della Pace, 11 - 09044 - Quartucciu (CA) - ITALY - www.tecnick.com - info@tecnick.com
   * @package com.tecnick.tcpdf
   * @version 4.0.014
   * @link http://tcpdf.sourceforge.net
   * @license http://www.gnu.org/copyleft/lesser.html LGPL
   * @since 2004-10-27
   */
  
  // Define the K_TCPDF_EXTERNAL_CONFIG, to customize setting.
  
  define('K_TCPDF_EXTERNAL_CONFIG',1);
  	
  	// DOCUMENT_ROOT fix for IIS Webserver
  	if ((!isset($_SERVER['DOCUMENT_ROOT'])) OR (empty($_SERVER['DOCUMENT_ROOT']))) {
  		if(isset($_SERVER['SCRIPT_FILENAME'])) {
  			$_SERVER['DOCUMENT_ROOT'] = str_replace( '\\', '/', substr($_SERVER['SCRIPT_FILENAME'], 0, 0-strlen($_SERVER['PHP_SELF'])));
  		} elseif(isset($_SERVER['PATH_TRANSLATED'])) {
  			$_SERVER['DOCUMENT_ROOT'] = str_replace( '\\', '/', substr(str_replace('\\\\', '\\', $_SERVER['PATH_TRANSLATED']), 0, 0-strlen($_SERVER['PHP_SELF'])));
  		}	else {
  			// define here your DOCUMENT_ROOT path if the previous fails
  			$_SERVER['DOCUMENT_ROOT'] = '/var/www';
  		}
  	}
  	
  	// Automatic calculation for the following K_PATH_MAIN constant
  	$k_path_main = str_replace( '\\', '/', realpath(substr(dirname(__FILE__), 0, 0-strlen('config'))));
  	if (substr($k_path_main, -1) != '/') {
  		$k_path_main .= '/';
  	}
  
  	$k_path_install = !empty($k_path_install) ? $k_path_main.$k_path_install:$k_path_main;
  
  	/**
  	 * Installation path (/var/www/tcpdf/).
  	 * By default it is automatically calculated but you can also set it as a fixed string to improve performances.
  	 */
  	define ('K_PATH_MAIN', $k_path_main);
  
  	// Automatic calculation for the following K_PATH_URL constant
  	if (isset($_SERVER['HTTP_HOST']) AND (!empty($_SERVER['HTTP_HOST']))) {
  		if(isset($_SERVER['HTTPS']) AND (!empty($_SERVER['HTTPS'])) AND strtolower($_SERVER['HTTPS'])!='off') {
  			$k_path_url = 'https://';
  		} else {
  			$k_path_url = 'http://';
  		}
  		$k_path_url .= $_SERVER['HTTP_HOST'].$Config['url_prefix'];
  		#$k_path_url .= str_replace( '\\', '/', substr($_SERVER['PHP_SELF'], 0, -24));
  	}
  
  	/**
  	 * URL path to tcpdf installation folder (http://localhost/tcpdf/).
  	 * By default it is automatically calculated but you can also set it as a fixed string to improve performances..
  	 */
  	define ('K_PATH_URL', $k_path_url);
  	
  	/**
  	 * path for PDF fonts
  	 * use K_PATH_MAIN.'fonts/old/' for old non-UTF8 fonts
  	 */
  	define ('K_PATH_FONTS', $k_path_install.'/fonts/');
  	
  	/**
  	 * cache directory for temporary files (full path)
  	 */
  	define ('K_PATH_CACHE', K_PATH_MAIN.'cache/');
  	
  	/**
  	 * cache directory for temporary files (url path)
  	 */
  	define ('K_PATH_URL_CACHE', K_PATH_URL.'cache/');
  	
  	/**
  	 *images directory
  	 */
  	//define ('K_PATH_IMAGES', $k_path_install.'/images/');
  	define ('K_PATH_IMAGES', dirname(__FILE__).'/../../');
  	
  	/**
  	 * blank image
  	 */
  	//define ('K_BLANK_IMAGE', K_PATH_IMAGES.'_blank.png');
  	define ('K_BLANK_IMAGE', $k_path_install.'/images/_blank.png');
  	
  	/**
  	 * page format
  	 */
  	define ('PDF_PAGE_FORMAT', 'A4');
  	
  	/**
  	 * page orientation (P=portrait, L=landscape)
  	 */
  	define ('PDF_PAGE_ORIENTATION', 'P');
  	
  	/**
  	 * document creator
  	 */
  	define ('PDF_CREATOR', 'TCPDF');
  	
  	/**
  	 * document author
  	 */
  	define ('PDF_AUTHOR', 'TCPDF');
  	
  	/**
  	 * header title
  	 */
  	define ('PDF_HEADER_TITLE', 'TCPDF Example');
  	
  	/**
  	 * header description string
  	 */
  	define ('PDF_HEADER_STRING', "by Nicola Asuni - Tecnick.com\nwww.tcpdf.org");
  	
  	/**
  	 * image logo
  	 */
  	define ('PDF_HEADER_LOGO', 'tcpdf_logo.jpg');
  	
  	/**
  	 * header logo image width [mm]
  	 */
  	define ('PDF_HEADER_LOGO_WIDTH', 30);
  	
  	/**
  	 *  document unit of measure [pt=point, mm=millimeter, cm=centimeter, in=inch]
  	 */
  	define ('PDF_UNIT', 'mm');
  	
  	/**
  	 * header margin
  	 */
  	define ('PDF_MARGIN_HEADER', 5);
  	
  	/**
  	 * footer margin
  	 */
  	define ('PDF_MARGIN_FOOTER', 10);
  	
  	/**
  	 * top margin
  	 */
  	define ('PDF_MARGIN_TOP', 27);
  	
  	/**
  	 * bottom margin
  	 */
  	define ('PDF_MARGIN_BOTTOM', 25);
  	
  	/**
  	 * left margin
  	 */
  	define ('PDF_MARGIN_LEFT', 15);
  	
  	/**
  	 * right margin
  	 */
  	define ('PDF_MARGIN_RIGHT', 15);
  	
  	/**
  	 * main font name
  	 */
  	define ('PDF_FONT_NAME_MAIN', 'helvetica');
  	
  	/**
  	 * main font size
  	 */
  	define ('PDF_FONT_SIZE_MAIN', 10);
  	
  	/**
  	 * data font name
  	 */
  	define ('PDF_FONT_NAME_DATA', 'helvetica');
  	
  	/**
  	 * data font size
  	 */
  	define ('PDF_FONT_SIZE_DATA', 8);
  	
  	/**
  	 * Ratio used to scale the images
  	 */
  	define ('PDF_IMAGE_SCALE_RATIO', 4);
  	
  	/**
  	 * magnification factor for titles
  	 */
  	define('HEAD_MAGNIFICATION', 1.1);
  	
  	/**
  	 * height of cell repect font height
  	 */
  	define('K_CELL_HEIGHT_RATIO', 1.25);
  	
  	/**
  	 * title magnification respect main font size
  	 */
  	define('K_TITLE_MAGNIFICATION', 1.3);
  	
  	/**
  	 * reduction factor for small font
  	 */
  	define('K_SMALL_RATIO', 2/3);
  ?>
  
  
  


wkpark      2008/12/09 17:23:38

  Added:       local/Wikiwyg/images toolbg.png
  Log:
  add a missing file
  
  Revision  Changes    Path
  1.1                  moniwiki/local/Wikiwyg/images/toolbg.png
  
  	<<Binary file>>
  
  


wkpark      2008/12/09 17:26:07

  Modified:    local/Wikiwyg/css moniwyg.css
  Log:
  fixed img url
  
  Revision  Changes    Path
  1.9       +2 -2      moniwiki/local/Wikiwyg/css/moniwyg.css
  
  Index: moniwyg.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/css/moniwyg.css,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- moniwyg.css	3 Dec 2008 11:05:02 -0000	1.8
  +++ moniwyg.css	9 Dec 2008 08:26:07 -0000	1.9
  @@ -10,7 +10,7 @@
       float:left;
       margin-right:2px;
       margin-top:0px;
  -    background: url(../images/toolbg24.png) repeat-x;
  +    background: url(../images/toolbg.png) repeat-x;
   }
   
   .wikiwyg_buttons span {
  @@ -19,7 +19,7 @@
       left:2px;
       margin-left:2px;
       padding-right:2px;
  -    background: url(../images/toolbg24.png) repeat-x;
  +    background: url(../images/toolbg.png) repeat-x;
       background-position: right top;
   }
   
  
  
  


wkpark      2008/12/09 17:30:28

  Modified:    local/SWFUpload swfupload.css
  Log:
  update
  
  Revision  Changes    Path
  1.6       +23 -1     moniwiki/local/SWFUpload/swfupload.css
  
  Index: swfupload.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/SWFUpload/swfupload.css,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- swfupload.css	29 Nov 2008 01:50:45 -0000	1.5
  +++ swfupload.css	9 Dec 2008 08:30:28 -0000	1.6
  @@ -18,8 +18,21 @@
     /* width:100px; */
     min-height: 64px;
     min-width: 64px;
  +  width: auto !important;
  +  height: auto !important;
  +  width: 64px;
  +  height: 64px;
     border: 1px solid #f3f3f3;
     background: url(./images/photo.png) no-repeat;
  +  
  +}
  +
  +#filePreview img{
  +  border: 2px solid #50a0d0;
  +}
  +
  +#filePreview img:hover {
  +  border: 2px solid #3077CC;
   }
   
   .fileList td {
  @@ -31,7 +44,12 @@
   }
       
   #SWFUpload {
  -  margin-left: 20px;
  +  margin:0px;
  +  padding:0px;
  +  height:1px;
  +}
  +
  +#SWFUpload a {
     height:1px;
   }
       
  @@ -92,6 +110,10 @@
     border: 2px solid #e0e0e0;
   }
   
  +.alignImg:hover {
  +  border: 2px solid #65b4db;
  +}
  +
   .selected {
     border: 2px solid #0084c4;
     background-image: url(images/gray.gif);
  
  
  


wkpark      2008/12/09 17:31:30

  Added:       local/SWFUpload/images gray.gif
  Log:
  add a missing file
  
  Revision  Changes    Path
  1.1                  moniwiki/local/SWFUpload/images/gray.gif
  
  	<<Binary file>>
  
  


wkpark      2008/12/09 22:19:55

  Modified:    .        wiki.php
  Log:
  support multiple table attributes!
  read top_dir/theme.php file to read user defined icons.
  
  Revision  Changes    Path
  1.408     +88 -49    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.407
  retrieving revision 1.408
  diff -u -r1.407 -r1.408
  --- wiki.php	4 Dec 2008 05:01:58 -0000	1.407
  +++ wiki.php	9 Dec 2008 13:19:55 -0000	1.408
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.407 2008/12/04 05:01:58 wkpark Exp $
  +// $Id: wiki.php,v 1.408 2008/12/09 13:19:55 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.407 $',1,-1);
  +$_revision = substr('$Revision: 1.408 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -1944,18 +1944,31 @@
         $this->themedir.="/theme/$theme";
         $this->themeurl.="/theme/$theme";
       }
  +
  +    $data=array();
  +    if (file_exists(dirname(__FILE__).'/theme.php')) {
  +      $used=array('icons','icon');
  +      $options['themedir']='.';
  +      $options['themeurl']=$DBInfo->url_prefix;
  +      $options['frontpage']=$DBInfo->frontpage;
  +      $data=getConfig(dirname(__FILE__).'/theme.php',$options);
  +
  +      foreach ($data as $k=>$v) 
  +        if (!in_array($k, $used)) unset($data[$k]);
  +    }
       $options['themedir']=$this->themedir;
       $options['themeurl']=$this->themeurl;
       $options['frontpage']=$DBInfo->frontpage;
  +
       $this->icon=array();
       if (file_exists($this->themedir."/theme.php")) {
  -      $data=getConfig($this->themedir."/theme.php",$options);
  -      #print_r($data);
  -
  -      if ($data) {
  -        # read configurations
  -        while (list($key,$val) = each($data)) $this->$key=$val;
  -      }
  +      $data0=getConfig($this->themedir."/theme.php",$options);
  +      if (!empty($data0))
  +        $data=array_merge($data0,$data);
  +    }
  +    if (!empty($data)) {
  +      # read configurations
  +      while (list($key,$val) = each($data)) $this->$key=$val;
       }
       $this->icon=array_merge($DBInfo->icon,$this->icon);
   
  @@ -2968,9 +2981,9 @@
       return implode(' ',$attr);
     }
   
  -  function _attr($attr,$sty=array(),$myclass=array(),$align='') {
  +  function _attr($attr,&$sty,$myclass=array(),$align='') {
       $aligns=array('center'=>1,'left'=>1,'right'=>1);
  -    $attrs=preg_split('@(\w+\=(?:"[^"]*"|\'[^\']*\')\s*|\w+\=[^\s]+\s*)@',
  +    $attrs=preg_split('@(\w+\=(?:"[^"]*"|\'[^\']*\')\s*|\w+\=[^"\']+\s*)@',
         $attr,-1, PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);
   
       $myattr=array();
  @@ -2999,26 +3012,26 @@
             case 'bgcolor':
               $sty['background-color']=strtolower($v);
               break;
  +          case 'border':
             case 'width':
             case 'height':
             case 'color':
               $sty[$k]=strtolower($v);
               break;
             default:
  -            if ($v) $myattr[]=$k.'="'.$v.'"';
  +            if ($v) $myattr[$k]=$v;
               break;
           }
         }
       }
   
       if ($align) $myclass[]=$align;
  -    if ($myclass) $myattr[]='class="'.implode(' ',array_unique($myclass)).'"';
  +    if ($myclass) $myattr['class']=implode(' ',array_unique($myclass));
       if ($sty) {
         $mysty='';
         foreach ($sty as $k=>$v) $mysty.="$k:$v;";
  -      $myattr[]='style="'.substr($mysty,0,-1).'"';
  +      $myattr['style']=$mysty;
       }
  -    asort($myattr);
       return $myattr;
     }
   
  @@ -3029,7 +3042,7 @@
       for ($i=1,$s=sizeof($cells);$i<$s;$i+=2) {
         $align='';
         $m=array();
  -      preg_match('/^((&lt;[^>]+>)?)(\s?)(.*)(?<!\s)(\s*)?$/s',
  +      preg_match('/^((&lt;[^>]+>)*)(\s?)(.*)(?<!\s)(\s*)?$/s',
           $cells[$i+1],$m);
         $cell=$m[3].$m[4].$m[5];
         if ($this->use_enhanced and strpos($cell,"\n") !== false)
  @@ -3054,16 +3067,22 @@
         if ($align) return 'class="'.$align.'"';
         return '';
       }
  -    $para=substr($val,4,-1);
  +    $para=str_replace(array('&lt;','&gt'),array('<','>'),$val);
  +    $paras= explode('><',substr($para,1,-1));
       # rowspan
       $sty=array();
  +    $rsty=array();
       $attr=array();
  +    $rattr=array();
       $myattr=array();
  +    $myclass=array();
  +
  +    foreach ($paras as $para) {
       if (preg_match("/^(\^|v)?\|(\d+)$/",$para,$match)) {
  -      $attr[]="rowspan='$match[2]'";
  +      $attr['rowspan']=$match[2];
         if ($match[1]) {
  -        if ($match[1] == '^') $attr[]="valign='top'";
  -        else $attr[]="valign='bottom'";
  +        if ($match[1] == '^') $attr['valign']='top';
  +        else $attr['valign']='bottom';
         }
       }
       else if (strlen($para)==1) {
  @@ -3082,47 +3101,66 @@
         }
       }
       else if (preg_match("/^\-(\d+)$/",$para,$match))
  -      $attr[]="colspan='$match[1]'";
  +      $attr['colspan']=$match[1];
       else if ($para[0]=='#')
  -      $attr[]='style="background-color:'.strtolower($para).'"';
  +      $sty['background-color']=strtolower($para);
       else {
  -      if (substr($para,0,3)=='row' and substr($para,0,7)!='rowspan') {
  +      if (substr($para,0,7)=='rowspan') {
  +        $attr['rowspan']=substr($para,7);
  +      } else if (substr($para,0,3)=='row') {
           // row properties
  -        $val=substr($para,3); $myattr=$this->_attr($val);
  -        $val=implode(' ',$myattr);
  -        if ($align) {
  -          return 'class="'.$align.'"';
  -        } else return '';
  -      }
  -      $myattr=$this->_attr($para,$sty,$myclass,$align);
  -      $attr=array_merge($myattr,$attr);
  -    }
  -    if (!$attr and $align) {
  -      $val='';
  -      return 'class="'.$align.'"';
  +        $val=substr($para,3);
  +        $myattr=$this->_attr($val,$rsty);
  +        $rattr=array_merge($rattr,$myattr);
  +      } else {
  +        $myattr=$this->_attr($para,$sty,$myclass,$align);
  +        $attr=array_merge($attr,$myattr);
  +      }
  +    }
       }
  +    $myclass=!empty($attr['class']) ? $attr['class']:'';
  +    unset($attr['class']);
  +    if ($align) $myclass.=' '.$align;
  +    $attr['class']=trim($myclass);
   
       $val='';
  -    return implode(' ',$attr).' ';
  +    foreach ($rattr as $k=>$v) $val.=$k.'="'.$v.'" ';
  +
  +    $ret='';
  +    foreach ($attr as $k=>$v) $ret.=$k.'="'.$v.'" ';
  +    return $ret;
     }
   
     function _table($on,&$attr) {
       if (!$on) return "</table>\n";
  +
       $sty=array();
       $myattr=array();
  -    $tattr=substr($attr,4,-1);
  +    $mattr=array();
  +    $attrs=str_replace(array('&lt;','&gt'),array('<','>'),$attr);
  +    $attrs= explode('><',substr($attrs,1,-1));
       $myclass=array('wiki');
  -    if ($tattr[0]=='#') {
  -      $sty['background-color']=strtolower($tattr);
  -    } else if (substr($tattr,0,5)=='table') {
  -      $tattr=substr($tattr,5);
  -      $myattr=$this->_attr($tattr,$sty,$myclass);
  -      $attr='';
  -    } else { // not table attribute
  -      if ($tattr=='') $attr='';
  -      #else $myattr=$this->_attr($tattr,$sty,$myclass);
  +    $rattr=array();
  +    $attr='';
  +    foreach ($attrs as $tattr) {
  +      $tattr=trim($tattr);
  +      if (empty($tattr)) continue;
  +      if ($tattr[0]=='#') {
  +        $sty['background-color']=strtolower($tattr);
  +      } else if (substr($tattr,0,5)=='table') {
  +        $tattr=substr($tattr,5);
  +        $mattr=$this->_attr($tattr,$sty,$myclass);
  +        $myattr=array_merge($myattr,$mattr);
  +      } else { // not table attribute
  +        $rattr[]=$tattr;
  +        #else $myattr=$this->_attr($tattr,$sty,$myclass);
  +      }
  +    }
  +    if (!empty($rattr)) $attr='<'.implode('><',$rattr).'>';
  +    if (!empty($myattr)) {
  +      $my='';
  +      foreach ($myattr as $k=>$v) $my.=$k.'="'.$v.'" ';
       }
  -    if ($myattr) $my=implode(' ',$myattr);
       else $my='class="wiki"';
       return "<table cellpadding='3' cellspacing='2' $my>\n";
     }
  @@ -3607,7 +3645,7 @@
         }
   
         #if (!$in_pre && !$in_table && preg_match("/^\|\|.*\|\|$/",$line)) {
  -      if (!$in_pre && $line[0]=='|' && !$in_table && preg_match("/^(\|([^\|]+)?\|((\|\|)*))(&lt;[^>\|]*>)?(.*)$/s",$line,$match)) {
  +      if (!$in_pre && $line[0]=='|' && !$in_table && preg_match("/^(\|([^\|]+)?\|((\|\|)*))((?:&lt;[^>\|]*>)*)(.*)$/s",$line,$match)) {
           $open.=$this->_table(1,$match[5]);
           if ($match[2]) $open.='<caption>'.$match[2].'</caption>';
           if (!$match[5]) $line='||'.$match[3].$match[6];
  @@ -3796,7 +3834,8 @@
                                  $this->pre_line);
                 $pre=preg_replace("/&lt;(\/?)(ins|del)/","<\\1\\2",$pre);
                 # FIXME Check open/close tags in $pre
  -              $out="<pre class='wiki'>\n".$pre."</pre>";
  +              #$out="<pre class='wiki'>\n".$pre."</pre>";
  +              $out="<pre class='wiki'>".$pre."</pre>";
                 if ($this->wikimarkup) {
                   $nline=str_replace(array('=','-','&','<'),array('==','-=','&amp;','&lt;'),$this->pre_line);
                   $out='<span class="wikiMarkup">'."<!-- wiki:\n{{{\n".
  
  
  


wkpark      2008/12/09 22:19:56

  Modified:    plugin/processor monimarkup.php
  Log:
  support multiple table attributes!
  read top_dir/theme.php file to read user defined icons.
  
  Revision  Changes    Path
  1.13      +4 -4      moniwiki/plugin/processor/monimarkup.php
  
  Index: monimarkup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/monimarkup.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- monimarkup.php	9 Dec 2008 07:54:11 -0000	1.12
  +++ monimarkup.php	9 Dec 2008 13:19:55 -0000	1.13
  @@ -3,12 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a moniwiki formatting processor for the MoniWiki
   //
  -// $Id: monimarkup.php,v 1.12 2008/12/09 07:54:11 wkpark Exp $
  +// $Id: monimarkup.php,v 1.13 2008/12/09 13:19:55 wkpark Exp $
   /**
    * @date    2006-08-09
    * @name    Moniwiki Processor
    * @desc    Moniwiki default processor
  - * @version $Revision: 1.12 $
  + * @version $Revision: 1.13 $
    * @depend  1.1.3
    * @license GPL
    */
  @@ -332,7 +332,7 @@
                   $line=substr($line,1,-1);
               }
               if (!$_in_table and $line[0]=='|' and
  -                preg_match("/^(\|([^\|]+)?\|((\|\|)*))(&lt;[^>\|]*>)?(.*)(\|\|)?$/s",$line,$m)) {
  +                preg_match("/^(\|([^\|]+)?\|((\|\|)*))((?:&lt;[^>\|]*>)*)(.*)(\|\|)?$/s",$line,$m)) {
                   #print "<pre>"; print_r($m); print "</pre>";
                   $open.=$formatter->_table(1,$m[5]);
                   if ($m[2]) $open.='<caption>'.$m[2].'</caption>';
  @@ -350,7 +350,7 @@
                   $tr_attr=$tr_diff ? 'class="'.$tr_diff.'"':'';
                   for ($i=1,$s=sizeof($cells);$i<$s;$i+=2) {
                       $align='';
  -                    preg_match('/^((&lt;[^>]+>)?)(\s?)(.*)(?<!\s)(\s*)?$/s',
  +                    preg_match('/^((&lt;[^>]+>)*)(\s?)(.*)(?<!\s)(\s*)?$/s',
                       $cells[$i+1],$m);
                       $cell=$m[3].$m[4].$m[5];
                       if ($m[3] and $m[5]) $align='center';
  
  
  


wkpark      2008/12/09 23:04:41

  Added:       plugin   GoogleTrans.php
  Log:
  google translation macro
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/GoogleTrans.php
  
  Index: GoogleTrans.php
  ===================================================================
  <?php
  // Copyright 2008 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a simple Google Translation macro for the MoniWiki
  //
  // Author: Won-Kyu Park <wkpark@kldp.org>
  // Date: 2007-09-30
  // Name: GoogleTransMacro
  // Description: Google Translation Macro
  // URL: MoniWiki:GoogleTransMacro
  // Version: $Revision: 1.1 $
  // License: GPL
  //
  // Usage: [[GoogleTrans(en)]]
  //
  // $Id: GoogleTrans.php,v 1.1 2008/12/09 14:04:41 wkpark Exp $
  
  function macro_GoogleTrans($formatter,$value) {
      global $DBInfo;
  
      $url=qualifiedUrl($formatter->link_url($formatter->page->name));
      $from = empty($value) ? substr($DBInfo->lang,0,2):$value;
      $enc = strtolower($DBInfo->charset);
  
      $img_dir=$DBInfo->imgs_dir.'/interwiki';
  
      $supported=array('en'=>'English','fr'=>'Francais','de'=>'Deutsch','es'=>'Espanol',
          'it'=>'Italiano','pt'=>'Portugues','zh'=>'Chinese',
          'ru'=>'Russian','ja'=>'Japanese','ko'=>'Korean');
  
      if (array_key_exists($from,$supported)) {
          unset($supported[$from]);
      } else
          $from = 'ko';
  
      $out='';
      foreach ($supported as $k=>$v)
           $out.= "<a target='_top' href='http://www.google.com/translate?hl=$from&amp;ie=$enc&amp;langpair=$from%7C"
               .$k."&amp;u=$url' title='"._($v)."'><img src='$img_dir/".$k."-16.png' style='border:0' /></a>";
  
      return $out;
  }
  
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2008/12/10 16:08:53

  Added:       plugin/filter nforge.php
  Log:
  add a simple filter plugin for the nforge/gforge
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/filter/nforge.php
  
  Index: nforge.php
  ===================================================================
  <?php
  // Copyright 2008 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a simple filter plugin for the nforge
  //
  // Usage: set $filters='nforge'; in the config.php
  //   $filters='abbr,nforge';
  //
  // $Id: nforge.php,v 1.1 2008/12/10 07:08:53 wkpark Exp $
  
  function filter_nforge($formatter,$value,$options) {
      global $Config;
  
      preg_match("@\/([^\/]+)$@", $formatter->url_prefix, $proj_name);
      $group_id = $Config['group_id'];
  
      $issue = qualifiedUrl('/tracker/index.php?func=detail&group_id='.$group_id.'&aid=');
      $svn = qualifiedUrl('/scm/viewvc.php/?root='.$proj_name[1].'&view=rev&revision=');
  
      $_rule=array(
          # link to an issue #210
          '/(?<![a-zA-Z])\!?\#([0-9]+)/',
          # link to an revision r452
          "/(?<![a-zA-Z])\!?r([0-9]+)/",
      );
      $_repl=array(
          "[^$issue".'\\1 #\\1]',
          "[^$svn".'\\1 r\\1]',
      );
      return preg_replace($_rule,$_repl,$value);
  }
  // vim:et:sts=4:sw=4:
  ?>
  
  
  


wkpark      2008/12/10 17:07:20

  Modified:    plugin   UrlMapping.php
  Log:
  use cache
  
  Revision  Changes    Path
  1.2       +22 -2     moniwiki/plugin/UrlMapping.php
  
  Index: UrlMapping.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UrlMapping.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- UrlMapping.php	8 Jan 2006 12:53:20 -0000	1.1
  +++ UrlMapping.php	10 Dec 2008 08:07:20 -0000	1.2
  @@ -5,16 +5,30 @@
   //
   // Usage: [[UrlMapping]]
   //
  -// $Id: UrlMapping.php,v 1.1 2006/01/08 12:53:20 wkpark Exp $
  +// $Id: UrlMapping.php,v 1.2 2008/12/10 08:07:20 wkpark Exp $
   
   function macro_UrlMapping($formatter,$value,$options=array()) {
       global $DBInfo;
   
       #$options['load']=1;
   
  -    if (!isset($DBInfo->url_mapping_rule) or $options['init']) { #or $options['load']) {
  +    while (!isset($DBInfo->url_mapping_rule) or $options['init']) { #or $options['load']) {
           $mappings=array();
   
  +        $cf=new Cache_text('settings');
  +
  +        $force_init=0;
  +        if ($DBInfo->shared_url_mappings and $cf->mtime('urlmapping') < filemtime($DBInfo->shared_url_mappings) ) {
  +            $force_init=1;
  +        }
  +        if (!$formatter->refresh and $cf->exists('urlmapping') and !$force_init) {
  +            $info=unserialize($cf->fetch('urlmapping'));
  +            $DBInfo->url_mappings=$info['urlmapping'];
  +            $DBInfo->url_mapping_rule=$info['urlmappingrule'];
  +
  +            break;
  +        }
  +
           if (file_exists($DBInfo->shared_url_mappings)) {
               $map=file($DBInfo->shared_url_mappings);
   
  @@ -27,11 +41,17 @@
                       $mapping_rule.=preg_quote($url,'/').'|';
                   }
               }
  +
               $mapping_rule=substr($mapping_rule,0,-1);
               $DBInfo->url_mappings=array_merge($DBInfo->url_mappings,$mappings);
               $DBInfo->url_mapping_rule.=$DBInfo->url_mapping_rule ?
                   '|'.$mapping_rule:$mapping_rule;
           }
  +        $mappinginfo=
  +            serialize(array('urlmapping'=>$DBInfo->url_mappings,
  +                'urlmappingrule'=>$DBInfo->url_mapping_rule));
  +        $cf->update('urlmapping',$mappinginfo);
  +        break;
       }
   
       if ($options['init'] or !$DBInfo->url_mappings) return '';
  
  
  


wkpark      2008/12/10 17:08:40

  Modified:    .        wiki.php
  Log:
  fixed filters preparation.
  fixed urlmapping
  
  Revision  Changes    Path
  1.409     +9 -8      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.408
  retrieving revision 1.409
  diff -u -r1.408 -r1.409
  --- wiki.php	9 Dec 2008 13:19:55 -0000	1.408
  +++ wiki.php	10 Dec 2008 08:08:40 -0000	1.409
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.408 2008/12/09 13:19:55 wkpark Exp $
  +// $Id: wiki.php,v 1.409 2008/12/10 08:08:40 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.408 $',1,-1);
  +$_revision = substr('$Revision: 1.409 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -405,6 +405,7 @@
     var $db=array();
     function MetaDB_text($file) {
       $lines=file($file);
  +    if (!empty($lines))
       foreach ($lines as $line) {
         $line=trim($line);
         if ($line[0]=='#' or !$line) continue;
  @@ -1777,8 +1778,8 @@
       $this->section_edit=$DBInfo->use_sectionedit;
       $this->auto_linebreak=$DBInfo->auto_linebreak;
       $this->nonexists=$DBInfo->nonexists;
  -    $this->url_mappings=$DBInfo->url_mappings;
  -    $this->url_mapping_rule=$DBInfo->url_mapping_rule;
  +    $this->url_mappings=&$DBInfo->url_mappings;
  +    $this->url_mapping_rule=&$DBInfo->url_mapping_rule;
       $this->css_friendly=$DBInfo->css_friendly;
       $this->use_smartdiff=$DBInfo->use_smartdiff;
       $this->use_easyalias=$DBInfo->use_easyalias;
  @@ -3243,8 +3244,7 @@
         $fts=array();
         if ($pi['#filter']) $fts=preg_split('/(\||,)/',$pi['#filter']);
         if ($this->filters) $fts=array_merge($fts,$this->filters);
  -      if ($DBInfo->filters) $fts=array_merge($fts,$DBInfo->filters);
  -      if ($fts) {  
  +      if ($fts) {
           foreach ($fts as $ft) {
             $body=$this->filter_repl($ft,$body,$options);
           }
  @@ -5020,6 +5020,7 @@
     $formatter->refresh=$refresh;
     $formatter->popup=$popup;
     $formatter->macro_repl('InterWiki','',array('init'=>1));
  +  $formatter->macro_repl('UrlMapping','',array('init'=>1));
     $formatter->tz_offset=$options['tz_offset'];
   
     // simple black list check
  @@ -5338,8 +5339,8 @@
   if (!defined('INC_MONIWIKI')):
   # Start Main
   $Config=getConfig("config.php",array('init'=>1));
  -include("wikilib.php");
  -include("lib/win32fix.php");
  +include_once("wikilib.php");
  +include_once("lib/win32fix.php");
   
   $DBInfo= new WikiDB($Config);
   register_shutdown_function(array(&$DBInfo,'Close'));
  
  
  


wkpark      2008/12/10 18:59:08

  Modified:    .        wiki.php wikilib.php
  Log:
  do not use User, UserDB in the plugins directly
  
  Revision  Changes    Path
  1.410     +25 -27    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.409
  retrieving revision 1.410
  diff -u -r1.409 -r1.410
  --- wiki.php	10 Dec 2008 08:08:40 -0000	1.409
  +++ wiki.php	10 Dec 2008 09:59:08 -0000	1.410
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.409 2008/12/10 08:08:40 wkpark Exp $
  +// $Id: wiki.php,v 1.410 2008/12/10 09:59:08 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.409 $',1,-1);
  +$_revision = substr('$Revision: 1.410 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -982,11 +982,8 @@
     }
   
     function addLogEntry($page_name, $remote_name,$comment,$action="SAVE") {
  -    $user=new User();
  -    if ($user->id != 'Anonymous') {
  -      $udb=new UserDB($this);
  -      $udb->checkUser($user);
  -    }
  +    $user=&$this->user;
  +  
       $myid=$user->id;
       if ($user->info['nick']) {
         $myid.=' '.$user->info['nick'];
  @@ -1130,13 +1127,10 @@
     }
   
     function savePage(&$page,$comment="",$options=array()) {
  -    $user=new User();
  -    if ($user->id != 'Anonymous') {
  -      $udb=new UserDB($this);
  -      $udb->checkUser($user);
  -    } else {
  -      if (strlen($comment)>80) $comment='';
  -    }
  +    $user=&$this->user;
  +    if ($user->id == 'Anonymous')
  +      if (strlen($comment)>80) $comment=''; // restrict comment length for anon.
  +
       $REMOTE_ADDR=$_SERVER['REMOTE_ADDR'];
       $comment=escapeshellcmd($comment);
   
  @@ -1177,11 +1171,7 @@
       $REMOTE_ADDR=$_SERVER['REMOTE_ADDR'];
   
       $comment=$options['comment'];
  -    $user=new User();
  -    if ($user->id != 'Anonymous') {
  -      $udb=new UserDB($this);
  -      $udb->checkUser($user);
  -    }
  +    $user=&$this->user;
   
       $keyname=$this->_getPageKey($page->name);
   
  @@ -1793,7 +1783,8 @@
       $this->use_etable=$DBInfo->use_etable;
       $this->use_enhanced=$DBInfo->use_enhanced;
       $this->use_metadata=$DBInfo->use_metadata;
  -    $this->udb=$DBInfo->udb;
  +    $this->udb=&$DBInfo->udb;
  +    $this->user=&$DBInfo->user;
       $this->check_openid_url=$DBInfo->check_openid_url;
       $this->register_javascripts($DBInfo->javascripts);
       $this->dynamic_macros=$DBInfo->dynamic_macros;
  @@ -4883,7 +4874,20 @@
   
   function init_requests(&$options) {
     global $DBInfo;
  -$user=new User();
  +
  +  $user=new User();
  +  $udb=new UserDB($DBInfo);
  +  $DBInfo->udb=$udb;
  +
  +  if ($user->id != 'Anonymous') {
  +    $udb->checkUser($user); # is it valid user ?
  +    if ($user->id != 'Anonymous')
  +      $user=$udb->getUser($user->id); // read user info
  +    else
  +      $user->setID('Anonymous');
  +  }
  +  $options['id']=$user->id;
  +  $DBInfo->user=$user;
   
   # MoniWiki theme
   if ((empty($DBInfo->theme) or isset($_GET['action'])) and isset($_GET['theme'])) $theme=$_GET['theme'];
  @@ -4894,13 +4898,7 @@
     $options['trail']=$user->trail ? $user->trail:'';
   }
   
  -$udb=new UserDB($DBInfo);
  -$udb->checkUser($user); # is it valid user ?
  -$options['id']=$user->id;
  -$DBInfo->udb=$udb; // XXX
  -
   if ($options['id'] != 'Anonymous') {
  -  $user=$udb->getUser($user->id); // read user info
     $options['css_url']=$user->info['css_url'];
     $options['quicklinks']=$user->info['quicklinks'];
     $options['tz_offset']=$user->info['tz_offset'];
  
  
  
  1.249     +7 -9      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.248
  retrieving revision 1.249
  diff -u -r1.248 -r1.249
  --- wikilib.php	4 Dec 2008 05:05:06 -0000	1.248
  +++ wikilib.php	10 Dec 2008 09:59:08 -0000	1.249
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.248 2008/12/04 05:05:06 wkpark Exp $
  +// $Id: wikilib.php,v 1.249 2008/12/10 09:59:08 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -884,7 +884,7 @@
     }
   
     if (!$options['minor'] and $DBInfo->use_minoredit) {
  -    $user=new User(); # get from COOKIE VARS
  +    $user=&$DBInfo->user; # get from COOKIE VARS
       if ($DBInfo->owners and in_array($user->id,$DBInfo->owners)) {
         $extra_check=' '._("Minor edit")."<input type='checkbox' tabindex='3' name='minor' />";
       }
  @@ -1576,7 +1576,7 @@
   
       $options['minor'] = $DBInfo->use_minoredit ? $options['minor']:0;
       if ($options['minor']) {
  -      $user=new User(); # get from COOKIE VARS
  +      $user=$DBInfo->user; # get from COOKIE VARS
         if ($DBInfo->owners and in_array($user->id,$DBInfo->owners)) {
           $options['minor']=1;
         } else {
  @@ -1630,7 +1630,7 @@
   #  if ($options[id] != 'Anonymous')
   #
   
  -  $udb=new UserDB($DBInfo);
  +  $udb=&$DBInfo->udb;
     $subs=$udb->getPageSubscribers($options['page']);
     if (!$subs) {
       if ($options['noaction']) return 0;
  @@ -1923,11 +1923,7 @@
           $_SERVER['HTTP_USER_AGENT']) ? 1:0;
     }
   
  -  $user=new User(); # get from COOKIE VARS
  -  if ($user->id != 'Anonymous') {
  -    $udb=new UserDB($DBInfo);
  -    $udb->checkUser($user);
  -  }
  +  $user=$DBInfo->user; # get from COOKIE VARS
   
     $jscript='';
     if ($DBInfo->use_safelogin) {
  @@ -2295,6 +2291,8 @@
     global $DBInfo;
   
     $group=$formatter->group;
  +
  +  $all_pages = array();
     if ($formatter->group) {
       $group_pages = $DBInfo->getLikePages($formatter->group);
       foreach ($group_pages as $page)
  
  
  


wkpark      2008/12/10 18:59:51

  Modified:    plugin   Blog.php Comment.php RecentChanges.php bookmark.php
                        chat.php css.php login.php minilogin.php
                        msgtrans.php quicklinks.php referer.php revert.php
                        scrap.php subscribe.php theme.php userform.php
  Log:
  do not use User, UserDB in the plugins directly
  
  Revision  Changes    Path
  1.35      +4 -5      moniwiki/plugin/Blog.php
  
  Index: Blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Blog.php,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- Blog.php	16 Nov 2007 10:00:24 -0000	1.34
  +++ Blog.php	10 Dec 2008 09:59:49 -0000	1.35
  @@ -5,7 +5,7 @@
   //
   // Usage: ?action=Blog
   //
  -// $Id: Blog.php,v 1.34 2007/11/16 10:00:24 wkpark Exp $
  +// $Id: Blog.php,v 1.35 2008/12/10 09:59:49 wkpark Exp $
   
   function updateBlogList($formatter) {
     global $DBInfo;
  @@ -319,10 +319,9 @@
     $url=$formatter->link_url($formatter->page->urlname);
     $datestamp= $formatter->page->mtime();
   
  -  if (!$options['id']) {
  -    $user=new User(); # get from COOKIE VARS
  -    $options['id']=$user->id;
  -  }
  +  if (!$options['id'])
  +    $options['id']=$DBInfo->user->id;
  +
     if ($options['id'] != 'Anonymous')
       $extra='<div style="text-align:right">'.'
         <input type="submit" name="button_refresh" value="Refresh" /></div>';
  
  
  
  1.33      +2 -2      moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- Comment.php	28 Nov 2008 11:42:36 -0000	1.32
  +++ Comment.php	10 Dec 2008 09:59:49 -0000	1.33
  @@ -6,7 +6,7 @@
   // Usage: [[Comment]], ?action=comment
   //
   //
  -// $Id: Comment.php,v 1.32 2008/11/28 11:42:36 wkpark Exp $
  +// $Id: Comment.php,v 1.33 2008/12/10 09:59:49 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $DBInfo;
  @@ -73,7 +73,7 @@
     $savetext= str_replace(array("&","<"),array("&amp;","&lt;"),$savetext);
   
     if (!$options['id']) {
  -    $user=new User(); # get from COOKIE VARS
  +    $user=$DBInfo->user; # get from COOKIE VARS
       $options['id']=$user->id;
     }
   
  
  
  
  1.25      +3 -6      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- RecentChanges.php	22 Nov 2007 04:10:10 -0000	1.24
  +++ RecentChanges.php	10 Dec 2008 09:59:49 -0000	1.25
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.24 2007/11/22 04:10:10 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.25 2008/12/10 09:59:49 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     $options['trail']='';
  @@ -89,11 +89,8 @@
     $daysago=$opts['ago'] ? $daysago.'&amp;ago='.$opts['ago']:$daysago;
         
   
  -  $user=new User(); # retrive user info
  -  if ($user->id != 'Anonymous') {
  -    $udb=new UserDB($DBInfo);
  -    $udb->checkUser($user);
  -  }
  +  $user=&$DBInfo->user; # retrive user info
  +
     if ($user->id != 'Anonymous') {
       $bookmark= $user->info['bookmark'];
       $tz_offset= $user->info['tz_offset'];
  
  
  
  1.4       +3 -7      moniwiki/plugin/bookmark.php
  
  Index: bookmark.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/bookmark.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- bookmark.php	12 Jan 2007 16:28:18 -0000	1.3
  +++ bookmark.php	10 Dec 2008 09:59:49 -0000	1.4
  @@ -4,17 +4,13 @@
   // a bookmark action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: bookmark.php,v 1.3 2007/01/12 16:28:18 wkpark Exp $
  +// $Id: bookmark.php,v 1.4 2008/12/10 09:59:49 wkpark Exp $
   
   function do_bookmark($formatter,$options) {
     global $DBInfo;
     global $_COOKIE;
   
  -  $user=new User(); # get cookie
  -  if ($user->id != 'Anonymous') {
  -    $udb=new UserDB($DBInfo);
  -    $udb->checkUser($user);
  -  }
  +  $user=$DBInfo->user; # get cookie
   
     if (!$options['time']) {
        $bookmark=time();
  @@ -29,7 +25,7 @@
         $options['msg'] = 'Bookmark Changed';
       } else {
         $user->info['bookmark']=$bookmark;
  -      $udb->saveUser($user);
  +      $DBInfo->udb->saveUser($user);
         $options['msg'] = 'Bookmark Changed';
       }
     } else
  
  
  
  1.10      +3 -6      moniwiki/plugin/chat.php
  
  Index: chat.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/chat.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- chat.php	15 Aug 2006 10:58:02 -0000	1.9
  +++ chat.php	10 Dec 2008 09:59:49 -0000	1.10
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Chat]]
   //
  -// $Id: chat.php,v 1.9 2006/08/15 10:58:02 wkpark Exp $
  +// $Id: chat.php,v 1.10 2008/12/10 09:59:49 wkpark Exp $
   // http://cvs.drupal.org/viewcvs/drupal/contributions/modules/chat/
   
   function macro_Chat($formatter,$value,$options=array()) {
  @@ -72,13 +72,10 @@
   
   function ajax_chat($formatter,$options) {
       global $DBInfo;
  -    $user=new User(); # get cookie
  +    $user=&$DBInfo->user; # get cookie
       $id=$user->id;
       $nic='';
  -    $udb=new UserDB($DBInfo);
  -    if ($user->id != 'Anonymous') {
  -        $udb->checkUser($user);
  -    }
  +    $udb=&$DBInfo->udb;
       if ($options['nic']) {
           if (!$udb->_exists($options['nic'])) {
               $nic=' '.$options['nic'];
  
  
  
  1.8       +3 -3      moniwiki/plugin/css.php
  
  Index: css.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/css.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- css.php	8 Feb 2006 08:22:55 -0000	1.7
  +++ css.php	10 Dec 2008 09:59:49 -0000	1.8
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // css action plugin for the MoniWiki
   //
  -// $Id: css.php,v 1.7 2006/02/08 08:22:55 wkpark Exp $
  +// $Id: css.php,v 1.8 2008/12/10 09:59:49 wkpark Exp $
   
   function do_css($formatter,$options) {
     global $DBInfo;
  @@ -15,7 +15,7 @@
         $options['css_url']="";
       } else {
         # save profile
  -      $udb=new UserDB($DBInfo);
  +      $udb=&$DBInfo->udb;
         $userinfo=$udb->getUser($options['id']);
         $userinfo->info['css_url']="";
         $udb->saveUser($userinfo);
  @@ -29,7 +29,7 @@
       $msg=_("Back to UserPreferences");
     } else if ($options['save'] && $options[id] != "Anonymous" && isset($options['user_css'])) {
       # save profile
  -    $udb=new UserDB($DBInfo);
  +    $udb=&$DBInfo->udb;
       $userinfo=$udb->getUser($options['id']);
       $userinfo->info['css_url']=$options['user_css'];
       $udb->saveUser($userinfo);
  
  
  
  1.10      +3 -7      moniwiki/plugin/login.php
  
  Index: login.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/login.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- login.php	13 Oct 2007 00:23:40 -0000	1.9
  +++ login.php	10 Dec 2008 09:59:49 -0000	1.10
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Login]]
   //
  -// $Id: login.php,v 1.9 2007/10/13 00:23:40 wkpark Exp $
  +// $Id: login.php,v 1.10 2008/12/10 09:59:49 wkpark Exp $
   
   function macro_login($formatter,$value="",$options="") {
     global $DBInfo;
  @@ -13,11 +13,7 @@
     $url=$formatter->link_url('UserPreferences');
     $urlpage=$formatter->link_url($formatter->page->urlname);
   
  -  $user=new User(); # get from COOKIE VARS
  -  if ($user->id != 'Anonymous') {
  -    $udb=new UserDB($DBInfo);
  -    $udb->checkUser($user);
  -  }
  +  $user=&$DBInfo->user; # get from COOKIE VARS
   
     $jscript='';
     if ($user->id == 'Anonymous' and $DBInfo->use_safelogin) {
  @@ -63,7 +59,7 @@
   function do_login($formatter,$options) {
     global $DBInfo;
   
  -  $user=new User(); # get from COOKIE VARS
  +  $user=&$DBInfo->user; # get from COOKIE VARS
     if ($user->id != 'Anonymous') {
       $options['logout']=1;
       $url=$formatter->link_url($formatter->page->urlname,'?action=userform&logout=1');
  
  
  
  1.3       +2 -6      moniwiki/plugin/minilogin.php
  
  Index: minilogin.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/minilogin.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- minilogin.php	21 Oct 2004 08:27:01 -0000	1.2
  +++ minilogin.php	10 Dec 2008 09:59:49 -0000	1.3
  @@ -5,18 +5,14 @@
   //
   // Usage: [[MiniLogin]]
   //
  -// $Id: minilogin.php,v 1.2 2004/10/21 08:27:01 wkpark Exp $
  +// $Id: minilogin.php,v 1.3 2008/12/10 09:59:49 wkpark Exp $
   
   function macro_minilogin($formatter,$value="",$options="") {
     global $DBInfo;
   
     $urlpage=$formatter->link_url($formatter->page->urlname);
   
  -  $user=new User(); # get from COOKIE VARS
  -  if ($user->id != 'Anonymous') {
  -    $udb=new UserDB($DBInfo);
  -    $udb->checkUser($user);
  -  }
  +  $user=&$DBInfo->user; # get from COOKIE VARS
   
     if ($user->id == 'Anonymous') {
       $login=_("Login or Join");
  
  
  
  1.7       +3 -3      moniwiki/plugin/msgtrans.php
  
  Index: msgtrans.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/msgtrans.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- msgtrans.php	28 Nov 2008 00:09:22 -0000	1.6
  +++ msgtrans.php	10 Dec 2008 09:59:49 -0000	1.7
  @@ -8,17 +8,17 @@
   // Name: Message Translation plugin
   // Description: make a Translation *.mo from simple message files.
   // URL: MoniWiki:DynamicMessageTranslation
  -// Version: $Revision: 1.6 $
  +// Version: $Revision: 1.7 $
   // License: GPL
   //
   // Usage: [[Test]]
   //
  -// $Id: msgtrans.php,v 1.6 2008/11/28 00:09:22 wkpark Exp $
  +// $Id: msgtrans.php,v 1.7 2008/12/10 09:59:49 wkpark Exp $
   
   function macro_MsgTrans($formatter,$value,$param=array()) {
       global $DBInfo;
   
  -    $user=new User();
  +    $user=&$DBInfo->user;
       if (!is_array($DBInfo->owners) or !in_array($user->id,$DBInfo->owners)) {
           return sprintf(_("You are not allowed to \"%s\" !"),"msgtrans");
       }
  
  
  
  1.2       +2 -2      moniwiki/plugin/quicklinks.php
  
  Index: quicklinks.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/quicklinks.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- quicklinks.php	5 Aug 2003 13:03:41 -0000	1.1
  +++ quicklinks.php	10 Dec 2008 09:59:49 -0000	1.2
  @@ -3,13 +3,13 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a quicklinks macro plugin for the MoniWiki
   //
  -// $Id: quicklinks.php,v 1.1 2003/08/05 13:03:41 wkpark Exp $
  +// $Id: quicklinks.php,v 1.2 2008/12/10 09:59:49 wkpark Exp $
   
   function do_quicklinks($formatter,$options) {
     global $DBInfo;
   
     if ($options['id'] != 'Anonymous') {
  -    $udb=new UserDB($DBInfo);
  +    $udb=&$DBInfo->udb;
       $userinfo=$udb->getUser($options['id']);
       $email=$userinfo->info['email'];
     } else {
  
  
  
  1.3       +1 -1      moniwiki/plugin/referer.php
  
  Index: referer.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/referer.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- referer.php	5 Oct 2007 14:42:47 -0000	1.2
  +++ referer.php	10 Dec 2008 09:59:49 -0000	1.3
  @@ -62,7 +62,7 @@
       $logs = tail_file ($referer_log_filename, $number_of_lines);
     }
   
  -  $user=new User(); # retrive user info
  +  $user=$DBInfo->user; # retrive user info
     if ($user->id != 'Anonymous') {
       $tz_offset= $user->info['tz_offset'];
     }
  
  
  
  1.4       +3 -7      moniwiki/plugin/revert.php
  
  Index: revert.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/revert.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- revert.php	26 Apr 2008 14:38:50 -0000	1.3
  +++ revert.php	10 Dec 2008 09:59:49 -0000	1.4
  @@ -10,13 +10,13 @@
   // PluginType: macro,action
   // ActionType: protected
   // URL: to_plugin url/interwiki name etc.
  -// Version: $Revision: 1.3 $
  +// Version: $Revision: 1.4 $
   // Depend: 1.1.3
   // License: GPL
   //
   // Usage: ?action=revert&rev=1.1
   //
  -// $Id: revert.php,v 1.3 2008/04/26 14:38:50 wkpark Exp $
  +// $Id: revert.php,v 1.4 2008/12/10 09:59:49 wkpark Exp $
   
   function macro_Revert($formatter,$value,$options=array()) {
       $options['info_actions']=array('recall'=>'view','revert'=>'revert');
  @@ -38,11 +38,7 @@
           if ($DBInfo->version_class) {
               $REMOTE_ADDR=$_SERVER['REMOTE_ADDR'];
   
  -            $user=new User();
  -            if ($user->id != 'Anonymous') {
  -                $udb=new UserDB($this);
  -                $udb->checkUser($user);
  -            }
  +            $user=&$DBInfo->user;
   
               $comment=_stripslashes($options['comment']);
   
  
  
  
  1.2       +4 -8      moniwiki/plugin/scrap.php
  
  Index: scrap.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/scrap.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- scrap.php	12 Apr 2005 13:58:38 -0000	1.1
  +++ scrap.php	10 Dec 2008 09:59:49 -0000	1.2
  @@ -3,20 +3,16 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a scrap action plugin for the MoniWiki
   //
  -// $Id: scrap.php,v 1.1 2005/04/12 13:58:38 wkpark Exp $
  +// $Id: scrap.php,v 1.2 2008/12/10 09:59:49 wkpark Exp $
   
   function macro_Scrap($formatter,$value,$options) {
     global $DBInfo;
   
  -  $user=new User(); # get cookie
  -  if ($user->id != 'Anonymous') {
  -    $udb=new UserDB($DBInfo);
  -    $udb->checkUser($user);
  -  }
  +  $user=&$DBInfo->user; # get cookie
     if ($user->id == 'Anonymous') {
       return '[[Scrap]]';
     }
  -  $userinfo=$udb->getUser($user->id);
  +  $userinfo=$DBInfo->udb->getUser($user->id);
     $pages=explode("\t",$userinfo->info['scrapped_pages']);
     if (!in_array($options['page'],$pages)) $pages[]=$options['page'];
     $out='';
  @@ -43,7 +39,7 @@
       return;
     }
   
  -  $udb=new UserDB($DBInfo);
  +  $udb=&$DBInfo->udb;
     $userinfo=$udb->getUser($options['id']);
     if (isset($options['scrapped_pages'])) {
       $pages=preg_replace("/\n\s*/","\n",$options['scrapped_pages']);
  
  
  
  1.6       +4 -4      moniwiki/plugin/subscribe.php
  
  Index: subscribe.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/subscribe.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- subscribe.php	13 Oct 2007 00:21:36 -0000	1.5
  +++ subscribe.php	10 Dec 2008 09:59:49 -0000	1.6
  @@ -3,16 +3,16 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a subscribe action plugin for the MoniWiki
   //
  -// $Id: subscribe.php,v 1.5 2007/10/13 00:21:36 wkpark Exp $
  +// $Id: subscribe.php,v 1.6 2008/12/10 09:59:49 wkpark Exp $
   
   
   function macro_Subscribe($formatter,$value,$options=array()) {
     global $DBInfo;
   
  -  $user=new User(); # get cookie
  +  $user=$DBInfo->user; # get cookie
   
     if ($user->id != 'Anonymous') {
  -    $udb=new UserDB($DBInfo);
  +    $udb=&$DBInfo->udb;
       $userinfo=$udb->getUser($user->id);
       $email=$userinfo->info['email'];
     } else {
  @@ -46,7 +46,7 @@
     }
   
     if ($options['id'] != 'Anonymous') {
  -    $udb=new UserDB($DBInfo);
  +    $udb=&$DBInfo->udb;
       $userinfo=$udb->getUser($options['id']);
       $email=$userinfo->info['email'];
       #$subs=$udb->getPageSubscribers($options[page]);
  
  
  
  1.10      +3 -3      moniwiki/plugin/theme.php
  
  Index: theme.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/theme.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- theme.php	23 Dec 2006 16:45:49 -0000	1.9
  +++ theme.php	10 Dec 2008 09:59:49 -0000	1.10
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // Theme plugin for the MoniWiki
   //
  -// $Id: theme.php,v 1.9 2006/12/23 16:45:49 wkpark Exp $
  +// $Id: theme.php,v 1.10 2008/12/10 09:59:49 wkpark Exp $
   //
   
   function do_theme($formatter,$options) {
  @@ -20,7 +20,7 @@
         //$options['theme']='';
       } else {
         # save profile
  -      $udb=new UserDB($DBInfo);
  +      $udb=$DBInfo->udb;
         $userinfo=$udb->getUser($options['id']);
         $userinfo->info['theme']="";
         $userinfo->info['css_url']="";
  @@ -41,7 +41,7 @@
           $msg="Goto ".$formatter->link_repl("UserPreferences");
         } else if ($options['save'] and $options['id']!='Anonymous') {
           # save profile
  -        $udb=new UserDB($DBInfo);
  +        $udb=$DBInfo->udb;
           $userinfo=$udb->getUser($options['id']);
           $userinfo->info['theme']=$options['theme'];
           $userinfo->info['css_url']=$options['css_url'];
  
  
  
  1.26      +8 -12     moniwiki/plugin/userform.php
  
  Index: userform.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/userform.php,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- userform.php	26 Mar 2008 09:21:53 -0000	1.25
  +++ userform.php	10 Dec 2008 09:59:49 -0000	1.26
  @@ -4,16 +4,12 @@
   // a userform action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: userform.php,v 1.25 2008/03/26 09:21:53 wkpark Exp $
  +// $Id: userform.php,v 1.26 2008/12/10 09:59:49 wkpark Exp $
   
   function do_userform($formatter,$options) {
     global $DBInfo;
   
  -  $user=new User(); # get cookie
  -  if ($user->id != 'Anonymous') { # XXX
  -    $udb=new UserDB($DBInfo);
  -    $udb->checkUser($user);
  -  }
  +  $user=&$DBInfo->user; # get cookie
     $id=$options['login_id'];
   
     $use_any=0;
  @@ -28,7 +24,7 @@
   
     # e-mail conformation
     if ($options['ticket'] and $id and $id!='Anonymous') {
  -    $userdb=new UserDB($DBInfo);
  +    $userdb=&$DBInfo->udb;
       if ($userdb->_exists($id)) {
          $user=$userdb->getUser($id);
          if ($user->info['eticket']==$options['ticket']) {
  @@ -62,7 +58,7 @@
   
     if ($user->id == "Anonymous" and !empty($options['login_id']) and isset($options['password']) and !isset($options['passwordagain'])) {
       # login
  -    $userdb=new UserDB($DBInfo);
  +    $userdb=$DBInfo->udb;
       if ($userdb->_exists($id)) {
         $user=$userdb->getUser($id);
         $login_ok=0;
  @@ -123,7 +119,7 @@
       } else {
         $ok_ticket=1;
       }
  -    $userdb=new UserDB($DBInfo);
  +    $userdb=&$DBInfo->udb;
       if ($userdb->_exists($id)) {
         $user=$userdb->getUser($id);
       }
  @@ -229,7 +225,7 @@
          } else {
              if ($ret < 8 and !$DBInfo->use_safelogin)
                 $options['msg']=_("Your password is too simple to use as a password !");
  -           $udb=new UserDB($DBInfo);
  +           $udb=$DBInfo->udb;
              if ($options['email']) {
                if (preg_match('/^[a-z][a-z0-9_\-\.]+@[a-z][a-z0-9_\-]+(\.[a-z0-9_]+)+$/i',$options['email'])) {
                  #$user->info['email']=$options['email'];
  @@ -285,7 +281,7 @@
          $title= _("Invalid username !");
     } else if ($user->id != "Anonymous") {
       # save profile
  -    $udb=new UserDB($DBInfo);
  +    $udb=&$DBInfo->udb;
       $userinfo=$udb->getUser($user->id);
   
       if ($options['password'] and $options['passwordagain']) {
  @@ -390,7 +386,7 @@
   	  $openid->SetIdentity($options['openid_identity']);
   	  $openid_validation_result = $openid->ValidateWithServer();
       if ($openid_validation_result == true) { // OK HERE KEY IS VALID
  -      $userdb=new UserDB($DBInfo);
  +      $userdb=&$DBInfo->udb;
         // XXX
         $user->setID($options['openid_identity']); // XXX
         if ($options['openid_language']) $user->info['language']=strtolower($options['openid_sreg_language']);
  
  
  


wkpark      2008/12/10 19:00:57

  Modified:    plugin/function toc.php
  Log:
  toc.php: strip_tags()
  format: set_word()
  
  Revision  Changes    Path
  1.2       +3 -2      moniwiki/plugin/function/toc.php
  
  Index: toc.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/function/toc.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- toc.php	9 Dec 2008 07:51:21 -0000	1.1
  +++ toc.php	10 Dec 2008 10:00:57 -0000	1.2
  @@ -8,12 +8,12 @@
   // Name: TableOfContent function
   // Description: TableOfContent function
   // URL: MoniWiki:FunctionPlugin
  -// Version: $Revision: 1.1 $
  +// Version: $Revision: 1.2 $
   // License: GPL
   //
   // Usage: $toc = function_toc($formatter);
   //
  -// $Id: toc.php,v 1.1 2008/12/09 07:51:21 wkpark Exp $
  +// $Id: toc.php,v 1.2 2008/12/10 10:00:57 wkpark Exp $
   
   function function_toc($formatter) {
       $secdep = 6;
  @@ -43,7 +43,8 @@
               "\$formatter->link_repl('\\1')",$head);
   
           if ($simple)
  -            $head=strip_tags($head,'<b><i><img><sub><sup><del><tt><u><strong>');
  +            $head=strip_tags($head);
  +            #$head=strip_tags($head,'<b><i><sub><sup><del><tt><u><strong>');
   
           if (!$depth_top) { $depth_top=$dep; $depth=1; }
           else {
  
  
  


wkpark      2008/12/10 19:00:57

  Modified:    plugin   format.php
  Log:
  toc.php: strip_tags()
  format: set_word()
  
  Revision  Changes    Path
  1.6       +12 -2     moniwiki/plugin/format.php
  
  Index: format.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/format.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- format.php	5 Aug 2006 06:18:23 -0000	1.5
  +++ format.php	10 Dec 2008 10:00:57 -0000	1.6
  @@ -3,14 +3,16 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a format plugin to connect with processors for the MoniWiki
   //
  -// $Id: format.php,v 1.5 2006/08/05 06:18:23 wkpark Exp $
  +// $Id: format.php,v 1.6 2008/12/10 10:00:57 wkpark Exp $
   
   function do_format($formatter,$options) {
     $mimes=array('text/plain'=>'html','text/xml'=>'text_xml');
     $mimetype=$options['mimetype'];
  +  $proc=!empty($options['proc']) ? $options['proc']:'';
     if (!$mimetype) $mimetype='text/plain';
   
     $pi=$formatter->get_instructions($dummy);
  +  if (!$formatter->wordrule) $formatter->set_wordrule($pi);
     if ($pi['#format']=='xsltproc') {
       $options['title']= _("It is a XML format !");
       do_invalid($formatter,$options);
  @@ -20,9 +22,17 @@
       do_invalid($formatter,$options);
       return;
     } // Detect File type
  -  else if (array_key_exists($mimetype,$mimes)) {
  +  else if (empty($proc) and array_key_exists($mimetype,$mimes)) {
       header("Content-type: ".$mimetype);
       print $formatter->processor_repl($mimes[$mimetype],$formatter->page->get_raw_body(),$options);
  +  } else if (!empty($proc)) {
  +    #if (getProcessor($processor)) {
  +    #  do_invalid($formatter,$options);
  +    #  return;
  +    #}
  +    #header("Content-type: ".$mimetype);
  +    header("Content-type: text/plain");
  +    print $formatter->processor_repl($proc,$formatter->page->get_raw_body(),$options);
     } else {
       $processor=str_replace("/.","__",$mimetype);
       header("Content-type: text/plain");
  
  
  


wkpark      2008/12/10 21:45:17

  Modified:    css      print.css
  Log:
  fixed print.css problem. reported by Hyo Kim (http://kldp.net/forum/message.php?msg_id=66652)
  
  Revision  Changes    Path
  1.13      +7 -6      moniwiki/css/print.css
  
  Index: print.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/print.css,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- print.css	22 Mar 2008 02:40:08 -0000	1.12
  +++ print.css	10 Dec 2008 12:45:17 -0000	1.13
  @@ -149,8 +149,15 @@
   /*  border-left: 0.8em solid #7B9AC5; /* */
     padding: 0.2em 0.2em 0.2em 0.2em;
   /*  background-color:lightblue; */
  +  display:none;
   }
   
  +#wikiTrailer { display: none; }
  +
  +#wikiMenu { display:none; }
  +
  +#pTitle img {display:none;}
  +
   #wikiBody {
   }
   
  @@ -178,12 +185,6 @@
     padding: 5px 1em 5px 1em;
   }
   
  -/*
  -#wikiMenu {
  -  background-color:yellow;
  -}
  -*/
  -
   div.indent {
     background-color: lightyellow;
     padding-left:2em;
  
  
  


wkpark      2008/12/10 22:11:02

  Modified:    css      _base.css _extra.css black.css blog.css bw.css
                        cream.css darkkhaki.css darkred.css default.css
                        gray.css green.css iolo.css khaki.css log.css
                        matrix.css moinmoin.css nlog.css nsmk.css olive.css
                        print.css redandblack.css royalblue.css
                        seagreen.css sky.css slide.css white.css wood.css
  Log:
  do not include _user.css directly.
  
  Revision  Changes    Path
  1.22      +3 -2      moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- _base.css	3 Dec 2008 11:03:54 -0000	1.21
  +++ _base.css	10 Dec 2008 13:10:58 -0000	1.22
  @@ -80,7 +80,7 @@
   }
   
   table.wiki tr {
  -   background-color: #E9ECEF;
  +   background-color: #ECECEC;
   }
   
   textarea.wiki { width:100%; }
  @@ -380,7 +380,8 @@
     margin-top:3px;
     margin-bottom:3px;
     background-color: #f0f0f0;
  -  background:url(../imgs/misc/toolbarbg.png) repeat-x;
  +  background:url(../imgs/misc/panbg.png) repeat-x;
  +  border-top: 1px solid #e4e4e4;
     border-bottom: 1px solid #808080;
     border-right: 1px solid #bebebe;
     border-left: 1px solid #bebebe;
  
  
  
  1.22      +5 -3      moniwiki/css/_extra.css
  
  Index: _extra.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_extra.css,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- _extra.css	3 Dec 2008 11:03:54 -0000	1.21
  +++ _extra.css	10 Dec 2008 13:10:58 -0000	1.22
  @@ -660,11 +660,12 @@
     list-style-position: outside;
     margin: 2px;
     margin-top:0px;
  -  padding:0;
  +  padding:0 2px;
     float:left;
  -  background:url(../imgs/misc/toolbarbg.png) repeat-x;
  +  background:url(../imgs/misc/panbg.png) repeat-x;
     border-top: 0;
     z-index:100;
  +  border-top: 1px solid #e4e4e4;
     border-bottom: 1px solid #808080;
     border-right: 1px solid #bebebe;
     border-left: 1px solid #bebebe;
  @@ -672,6 +673,7 @@
   
   .toolbar li {
     margin-top:2px;
  +  margin-bottom:2px;
     cursor: pointer;
     display: inline;
     float:left;
  @@ -686,7 +688,7 @@
   }
   
   .toolbar a:hover {
  -  border:1px solid red;
  +  border:1px solid #3077CC;
     background:url(../imgs/misc/btnpushed.png) repeat-x;
   }
   
  
  
  
  1.9       +0 -1      moniwiki/css/black.css
  
  Index: black.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/black.css,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- black.css	23 Sep 2005 17:15:11 -0000	1.8
  +++ black.css	10 Dec 2008 13:10:58 -0000	1.9
  @@ -1,7 +1,6 @@
   @import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  -@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.9       +0 -1      moniwiki/css/blog.css
  
  Index: blog.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/blog.css,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- blog.css	23 Sep 2005 17:15:11 -0000	1.8
  +++ blog.css	10 Dec 2008 13:10:58 -0000	1.9
  @@ -1,7 +1,6 @@
   @import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  -@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.9       +0 -1      moniwiki/css/bw.css
  
  Index: bw.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/bw.css,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- bw.css	23 Sep 2005 17:15:11 -0000	1.8
  +++ bw.css	10 Dec 2008 13:10:58 -0000	1.9
  @@ -1,7 +1,6 @@
   @import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  -@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.9       +0 -1      moniwiki/css/cream.css
  
  Index: cream.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/cream.css,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- cream.css	23 Sep 2005 17:15:11 -0000	1.8
  +++ cream.css	10 Dec 2008 13:10:58 -0000	1.9
  @@ -1,7 +1,6 @@
   @import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  -@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.9       +0 -1      moniwiki/css/darkkhaki.css
  
  Index: darkkhaki.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/darkkhaki.css,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- darkkhaki.css	23 Sep 2005 17:15:11 -0000	1.8
  +++ darkkhaki.css	10 Dec 2008 13:10:58 -0000	1.9
  @@ -1,7 +1,6 @@
   @import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  -@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.9       +0 -1      moniwiki/css/darkred.css
  
  Index: darkred.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/darkred.css,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- darkred.css	23 Sep 2005 17:15:11 -0000	1.8
  +++ darkred.css	10 Dec 2008 13:10:58 -0000	1.9
  @@ -1,7 +1,6 @@
   @import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  -@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.9       +0 -1      moniwiki/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/default.css,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- default.css	23 Sep 2005 17:15:11 -0000	1.8
  +++ default.css	10 Dec 2008 13:10:58 -0000	1.9
  @@ -1,7 +1,6 @@
   @import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  -@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.8       +0 -1      moniwiki/css/gray.css
  
  Index: gray.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/gray.css,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- gray.css	23 Sep 2005 17:15:11 -0000	1.7
  +++ gray.css	10 Dec 2008 13:10:58 -0000	1.8
  @@ -1,7 +1,6 @@
   @import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  -@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.9       +0 -1      moniwiki/css/green.css
  
  Index: green.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/green.css,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- green.css	23 Sep 2005 17:15:11 -0000	1.8
  +++ green.css	10 Dec 2008 13:10:58 -0000	1.9
  @@ -1,7 +1,6 @@
   @import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  -@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.8       +0 -1      moniwiki/css/iolo.css
  
  Index: iolo.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/iolo.css,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- iolo.css	23 Sep 2005 17:15:11 -0000	1.7
  +++ iolo.css	10 Dec 2008 13:10:58 -0000	1.8
  @@ -6,7 +6,6 @@
   @import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  -@import url("_user.css");
   
   body {
   	font-family:"Trebuchet MS","Myungjo Newsletter","UnBatang",sans-serif;
  
  
  
  1.9       +0 -1      moniwiki/css/khaki.css
  
  Index: khaki.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/khaki.css,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- khaki.css	23 Sep 2005 17:15:11 -0000	1.8
  +++ khaki.css	10 Dec 2008 13:10:58 -0000	1.9
  @@ -1,7 +1,6 @@
   @import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  -@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.7       +0 -1      moniwiki/css/log.css
  
  Index: log.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/log.css,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- log.css	23 Sep 2005 17:15:11 -0000	1.6
  +++ log.css	10 Dec 2008 13:10:58 -0000	1.7
  @@ -2,7 +2,6 @@
   @import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  -@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;font-size:12px;
  
  
  
  1.9       +0 -1      moniwiki/css/matrix.css
  
  Index: matrix.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/matrix.css,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- matrix.css	23 Sep 2005 17:15:11 -0000	1.8
  +++ matrix.css	10 Dec 2008 13:10:58 -0000	1.9
  @@ -1,7 +1,6 @@
   @import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  -@import url("_user.css");
   
   body {font-family:Georgia,Verdana,Lucida,sans-serif;
     background-color:#000000; color: #369746;
  
  
  
  1.8       +1 -2      moniwiki/css/moinmoin.css
  
  Index: moinmoin.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/moinmoin.css,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- moinmoin.css	23 Sep 2005 17:15:11 -0000	1.7
  +++ moinmoin.css	10 Dec 2008 13:10:58 -0000	1.8
  @@ -2,7 +2,7 @@
   
       Copyright (c) 2001, 2002, 2003 by Jrgen Hermann
   
  -    $Id: moinmoin.css,v 1.7 2005/09/23 17:15:11 wkpark Exp $
  +    $Id: moinmoin.css,v 1.8 2008/12/10 13:10:58 wkpark Exp $
   */
   
   /* user interface styles */
  @@ -10,7 +10,6 @@
   @import url("_moinui");
   @import url("_extra.css");
   @import url("_calendar.css");
  -@import url("_user.css");
   
   /* content styles */
   body {
  
  
  
  1.9       +0 -1      moniwiki/css/nlog.css
  
  Index: nlog.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/nlog.css,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- nlog.css	3 Jan 2006 13:25:54 -0000	1.8
  +++ nlog.css	10 Dec 2008 13:10:58 -0000	1.9
  @@ -2,7 +2,6 @@
   @import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  -@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;font-size:12px;
  
  
  
  1.9       +0 -1      moniwiki/css/nsmk.css
  
  Index: nsmk.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/nsmk.css,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- nsmk.css	3 Jan 2006 13:25:54 -0000	1.8
  +++ nsmk.css	10 Dec 2008 13:10:58 -0000	1.9
  @@ -2,7 +2,6 @@
   @import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  -@import url("_user.css");
   
   body {
     background-color: lightyellow;
  
  
  
  1.9       +0 -1      moniwiki/css/olive.css
  
  Index: olive.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/olive.css,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- olive.css	23 Sep 2005 17:15:11 -0000	1.8
  +++ olive.css	10 Dec 2008 13:10:58 -0000	1.9
  @@ -1,7 +1,6 @@
   @import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  -@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.14      +0 -1      moniwiki/css/print.css
  
  Index: print.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/print.css,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- print.css	10 Dec 2008 12:45:17 -0000	1.13
  +++ print.css	10 Dec 2008 13:10:58 -0000	1.14
  @@ -1,4 +1,3 @@
  -@import url("_user.css");
   @import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  
  
  
  1.10      +0 -1      moniwiki/css/redandblack.css
  
  Index: redandblack.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/redandblack.css,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- redandblack.css	23 Sep 2005 17:15:11 -0000	1.9
  +++ redandblack.css	10 Dec 2008 13:10:58 -0000	1.10
  @@ -1,7 +1,6 @@
   @import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  -@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.9       +0 -1      moniwiki/css/royalblue.css
  
  Index: royalblue.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/royalblue.css,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- royalblue.css	23 Sep 2005 17:15:11 -0000	1.8
  +++ royalblue.css	10 Dec 2008 13:10:58 -0000	1.9
  @@ -1,7 +1,6 @@
   @import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  -@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.9       +0 -1      moniwiki/css/seagreen.css
  
  Index: seagreen.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/seagreen.css,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- seagreen.css	23 Sep 2005 17:15:11 -0000	1.8
  +++ seagreen.css	10 Dec 2008 13:10:58 -0000	1.9
  @@ -1,7 +1,6 @@
   @import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  -@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.9       +0 -1      moniwiki/css/sky.css
  
  Index: sky.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/sky.css,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- sky.css	23 Sep 2005 17:15:11 -0000	1.8
  +++ sky.css	10 Dec 2008 13:10:58 -0000	1.9
  @@ -1,7 +1,6 @@
   @import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  -@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.6       +0 -1      moniwiki/css/slide.css
  
  Index: slide.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/slide.css,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- slide.css	23 Dec 2006 06:10:58 -0000	1.5
  +++ slide.css	10 Dec 2008 13:10:58 -0000	1.6
  @@ -1,7 +1,6 @@
   @import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  -@import url("_user.css");
   
   body {
     /* font-family:Bitstream Vera Sans,Georgia,Verdana,Lucida,sans-serif; /* */
  
  
  
  1.9       +0 -1      moniwiki/css/white.css
  
  Index: white.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/white.css,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- white.css	23 Sep 2005 17:15:11 -0000	1.8
  +++ white.css	10 Dec 2008 13:10:58 -0000	1.9
  @@ -1,7 +1,6 @@
   @import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  -@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;
  
  
  
  1.7       +0 -1      moniwiki/css/wood.css
  
  Index: wood.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/wood.css,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- wood.css	23 Sep 2005 17:15:11 -0000	1.6
  +++ wood.css	10 Dec 2008 13:10:58 -0000	1.7
  @@ -2,7 +2,6 @@
   @import url("_base.css");
   @import url("_extra.css");
   @import url("_calendar.css");
  -@import url("_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;font-size:12px;
  
  
  


wkpark      2008/12/10 22:13:06

  Modified:    .        wiki.php
  Log:
  check if the _user.cs is exist. cleanup
  
  Revision  Changes    Path
  1.411     +14 -12    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.410
  retrieving revision 1.411
  diff -u -r1.410 -r1.411
  --- wiki.php	10 Dec 2008 09:59:08 -0000	1.410
  +++ wiki.php	10 Dec 2008 13:13:06 -0000	1.411
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.410 2008/12/10 09:59:08 wkpark Exp $
  +// $Id: wiki.php,v 1.411 2008/12/10 13:13:06 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.410 $',1,-1);
  +$_revision = substr('$Revision: 1.411 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -239,8 +239,7 @@
   FrontPage= "$Config[frontpage]";
   /*]]>*/
   </script>
  -<script type="text/javascript" src="$Config[kbd_script]">
  -</script>
  +<script type="text/javascript" src="$Config[kbd_script]"></script>\n
   EOS;
   }
   
  @@ -4044,7 +4043,7 @@
       if ($options['action_mode']=='ajax') return;
   
       if (isset($this->pi['#noindex'])) {
  -      $metatags='<meta name="robots" content="noindex,nofollow" />';
  +      $metatags='<meta name="robots" content="noindex,nofollow" />'."\n";
       } else {
         if ($options['metatags'])
           $metatags=$options['metatags'];
  @@ -4080,12 +4079,12 @@
         if ($pos > 0) $upper=substr($this->page->urlname,0,$pos);
         else if ($this->group) $upper=_urlencode(substr($this->page->name,strlen($this->group)));
         if ($this->pi['#keywords'])
  -        $keywords='<meta name="keywords" content="'.$this->pi['#keywords'].'" />';
  +        $keywords='<meta name="keywords" content="'.$this->pi['#keywords'].'" />'."\n";
         else if ($DBInfo->use_keywords) {
           $keywords=strip_tags($this->page->title);
           $keywords=str_replace(" ",", ",$keywords); # XXX
           $keywords=htmlspecialchars($keywords);
  -        $keywords="<meta name=\"keywords\" content=\"$keywords\" />";
  +        $keywords="<meta name=\"keywords\" content=\"$keywords\" />\n";
         }
         # find sub pages
         if ($DBInfo->use_subindex and !$options['action']) {
  @@ -4119,7 +4118,7 @@
         print "<head>\n";
   
         print '<meta http-equiv="Content-Type" content="'.$content_type.
  -        ';charset='.$DBInfo->charset.'" />';
  +        ';charset='.$DBInfo->charset."\" />\n";
         print <<<JSHEAD
   <script type="text/javascript">
   /*<![CDATA[*/
  @@ -4139,11 +4138,14 @@
           $raw_url."\" />\n";
         print '  <link rel="Alternate" media="print" title="Print View" href="'.
           $print_url."\" />\n";
  -      if ($options['css_url'])
  +      if ($options['css_url']) {
           print '  <link rel="stylesheet" type="text/css" '.$media.' href="'.
  -          $options['css_url'].'" />';
  +          $options['css_url']."\" />\n";
  +        if (file_exists('./css/_user.css'))
  +          print '  <link rel="stylesheet" media="screen" type="text/css" href="'.
  +            $DBInfo->url_prefix."/css/_user.css\" />\n";
   # default CSS
  -      else print <<<EOS
  +      } else print <<<EOS
   <style type="text/css">
   <!--
   body {font-family:Georgia,Verdana,Lucida,sans-serif; background-color:#FFF9F9;}
  @@ -4239,7 +4241,7 @@
   </style>
   EOS;
   
  -      print "\n</head>\n<body $options[attr]>\n";
  +      print "</head>\n<body $options[attr]>\n";
       }
     }
   
  
  
  


wkpark      2008/12/10 23:05:28

  Modified:    plugin   bookmark.php
  Log:
  set bookmark cookie
  
  Revision  Changes    Path
  1.5       +3 -2      moniwiki/plugin/bookmark.php
  
  Index: bookmark.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/bookmark.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- bookmark.php	10 Dec 2008 09:59:49 -0000	1.4
  +++ bookmark.php	10 Dec 2008 14:05:28 -0000	1.5
  @@ -4,13 +4,13 @@
   // a bookmark action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: bookmark.php,v 1.4 2008/12/10 09:59:49 wkpark Exp $
  +// $Id: bookmark.php,v 1.5 2008/12/10 14:05:28 wkpark Exp $
   
   function do_bookmark($formatter,$options) {
     global $DBInfo;
     global $_COOKIE;
   
  -  $user=$DBInfo->user; # get cookie
  +  $user=&$DBInfo->user; # get cookie
   
     if (!$options['time']) {
        $bookmark=time();
  @@ -22,6 +22,7 @@
         setcookie("MONI_BOOKMARK",$bookmark,time()+60*60*24*30,get_scriptname());
         # set the fake cookie
         $_COOKIE['MONI_BOOKMARK']=$bookmark;
  +      $user->bookmark=$bookmark;
         $options['msg'] = 'Bookmark Changed';
       } else {
         $user->info['bookmark']=$bookmark;
  
  
  


wkpark      2008/12/11 00:01:06

  Modified:    .        wikilib.php
  Log:
  check mod_rewrite
  
  Revision  Changes    Path
  1.250     +7 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.249
  retrieving revision 1.250
  diff -u -r1.249 -r1.250
  --- wikilib.php	10 Dec 2008 09:59:08 -0000	1.249
  +++ wikilib.php	10 Dec 2008 15:01:06 -0000	1.250
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.249 2008/12/10 09:59:08 wkpark Exp $
  +// $Id: wikilib.php,v 1.250 2008/12/10 15:01:06 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -32,11 +32,16 @@
   }
   
   function get_scriptname() {
  +  global $Config;
     // Return full URL of current page.
     // $_SERVER["SCRIPT_NAME"] has bad value under CGI mode
     // set 'cgi.fix_pathinfo=1' in the php.ini under
     // apache 2.0.x + php4.2.x Win32
  -  return $_SERVER["SCRIPT_NAME"];
  +  // check mod_rewrite
  +  if (strpos($_SERVER['REQUEST_URI'],$_SERVER['SCRIPT_NAME'])===false) {
  +    return preg_replace('@/[^/]+\.php@','',$_SERVER['SCRIPT_NAME']);
  +  }
  +  return $_SERVER['SCRIPT_NAME'];
   }
   
   function _rawurlencode($url) {
  
  
  


wkpark      2008/12/11 00:01:22

  Modified:    .        wiki.php
  Log:
  fix last change
  
  Revision  Changes    Path
  1.412     +7 -7      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.411
  retrieving revision 1.412
  diff -u -r1.411 -r1.412
  --- wiki.php	10 Dec 2008 13:13:06 -0000	1.411
  +++ wiki.php	10 Dec 2008 15:01:22 -0000	1.412
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.411 2008/12/10 13:13:06 wkpark Exp $
  +// $Id: wiki.php,v 1.412 2008/12/10 15:01:22 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.411 $',1,-1);
  +$_revision = substr('$Revision: 1.412 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -4679,7 +4679,7 @@
   
     function set_trailer($trailer="",$pagename,$size=5) {
       global $DBInfo;
  -    if (!$trailer) $trail=$DBInfo->frontpage;
  +    if (empty($trailer)) $trail=$DBInfo->frontpage;
       else $trail=$trailer;
       $trails=array_diff(explode("\t",trim($trail)),array($pagename));
   
  @@ -4881,6 +4881,9 @@
     $udb=new UserDB($DBInfo);
     $DBInfo->udb=$udb;
   
  +  if ($DBInfo->trail) // read COOKIE trailer
  +    $options['trail']=trim($user->trail) ? $user->trail:'';
  +
     if ($user->id != 'Anonymous') {
       $udb->checkUser($user); # is it valid user ?
       if ($user->id != 'Anonymous')
  @@ -4896,10 +4899,6 @@
   else if ($DBInfo->theme_css) $theme=$DBInfo->theme;
   if ($theme) $options['theme']=$theme;
   
  -if ($DBInfo->trail) {
  -  $options['trail']=$user->trail ? $user->trail:'';
  -}
  -
   if ($options['id'] != 'Anonymous') {
     $options['css_url']=$user->info['css_url'];
     $options['quicklinks']=$user->info['quicklinks'];
  @@ -4917,6 +4916,7 @@
     $options['css_url']=($DBInfo->themeurl ? $DBInfo->themeurl:$DBInfo->url_prefix)."/theme/$theme/css/default.css";
   
     $options['pagename']=get_pagename();
  +
   }
   
   function init_locale($lang) {
  
  
  


wkpark      2008/12/11 00:15:55

  Modified:    plugin   css.php MoniCalendar.php
  Log:
  css: fixed old bug :>
  MoniCalender: use is_array() function
  
  Revision  Changes    Path
  1.9       +5 -1      moniwiki/plugin/css.php
  
  Index: css.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/css.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- css.php	10 Dec 2008 09:59:49 -0000	1.8
  +++ css.php	10 Dec 2008 15:15:55 -0000	1.9
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // css action plugin for the MoniWiki
   //
  -// $Id: css.php,v 1.8 2008/12/10 09:59:49 wkpark Exp $
  +// $Id: css.php,v 1.9 2008/12/10 15:15:55 wkpark Exp $
   
   function do_css($formatter,$options) {
     global $DBInfo;
  @@ -20,6 +20,10 @@
         $userinfo->info['css_url']="";
         $udb->saveUser($userinfo);
       }
  +    if (!empty($options['theme'])) {
  +      $theme = $options['theme'];
  +      $options['css_url']=($DBInfo->themeurl ? $DBInfo->themeurl:$DBInfo->url_prefix)."/theme/$theme/css/default.css";
  +    }
     } else if ($options['save'] && $options['id']=="Anonymous" && isset($options['user_css'])) {
       setcookie("MONI_CSS",$options['user_css'],time()+60*60*24*30,get_scriptname());
       # set the fake cookie
  
  
  
  1.7       +2 -2      moniwiki/plugin/MoniCalendar.php
  
  Index: MoniCalendar.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/MoniCalendar.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- MoniCalendar.php	13 Oct 2005 13:07:26 -0000	1.6
  +++ MoniCalendar.php	10 Dec 2008 15:15:55 -0000	1.7
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Test]]
   //
  -// $Id: MoniCalendar.php,v 1.6 2005/10/13 13:07:26 wkpark Exp $
  +// $Id: MoniCalendar.php,v 1.7 2008/12/10 15:15:55 wkpark Exp $
   
   function _parseDays($formatter,$page,$options=array()) {
       $color_table=
  @@ -293,7 +293,7 @@
           }
           $todo='';
           $info=$dayinfo[$month][$day];
  -        if ($dayinfo['week'][$weekday])
  +        if (is_array($info) and isset($dayinfo['week'][$weekday]))
               $info = array_merge($info,$dayinfo['week'][$weekday]);
           if (is_array($info)) {
               if (sizeof($infocolor[$month][$day])>1) {
  
  
  


wkpark      2008/12/11 00:23:14

  moniwiki/imgs/plugin/Rating/big - New directory

wkpark      2008/12/11 00:23:39

  Added:       imgs/plugin/Rating/big star0.png star1.png
  Log:
  add missing pics
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/plugin/Rating/big/star0.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/plugin/Rating/big/star1.png
  
  	<<Binary file>>
  
  


wkpark      2008/12/11 00:29:08

  Added:       imgs     moniwiki-logo.png
  Log:
  add a logo file
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/moniwiki-logo.png
  
  	<<Binary file>>
  
  


wkpark      2008/12/11 01:43:39

  Modified:    .        monisetup.php
  Log:
  gettextized and cleanup
  
  Revision  Changes    Path
  1.31      +90 -70    moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- monisetup.php	20 Oct 2007 01:50:40 -0000	1.30
  +++ monisetup.php	10 Dec 2008 16:43:39 -0000	1.31
  @@ -1,7 +1,7 @@
   <?php
   // Copyright 2003-2007 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.30 2007/10/20 01:50:40 wkpark Exp $
  +// $Id: monisetup.php,v 1.31 2008/12/10 16:43:39 wkpark Exp $
   
   function _stripslashes($str) {
     return get_magic_quotes_gpc() ? stripslashes($str):$str;
  @@ -33,7 +33,7 @@
     function _getHostConfig() {
       print '<div class="check">';
       if (function_exists("dba_open")) {
  -      print '<h3>Check a dba configuration</h3>';
  +      print '<h3>'._("Check a dba configuration").'</h3>';
         $tempnam="/tmp/".time();
         if ($db=@dba_open($tempnam,"n","db4"))
           $config['dba_type']="'db4'";
  @@ -52,22 +52,22 @@
       if ($match) {
         $config['query_prefix']='"?"';
         while (ini_get('allow_url_fopen')) {
  -        print '<h3>Check a AcceptPathInfo setting for Apache 2.0.xx</h3>';
  +        print '<h3>'._("Check a AcceptPathInfo setting for Apache 2.x.xx").'</h3>';
           print '<ul>';
           $fp=@fopen('http://'.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'].'/pathinfo?action=pathinfo','r');
           $out='';
           if ($fp) {
             while (!feof($fp)) $out.=fgets($fp,2048);
           } else {
  -          print "<li><b><a href='http://moniwiki.sf.net/wiki.php/AcceptPathInfo'>AcceptPathInfo</a> <font color='red'>Off</font></b><li>\n";
  +          print "<li><b><a href='http://moniwiki.sf.net/wiki.php/AcceptPathInfo'>AcceptPathInfo</a> <font color='red'>"._("Off")."</font></b><li>\n";
             print '</ul>';
             break;
           }
           fclose($fp);
           if ($out[0] == '*') {
  -          print "<li><b><a href='http://moniwiki.sf.net/wiki.php/AcceptPathInfo'>AcceptPathInfo</a> <font color='red'>Off</font></b></li>\n";
  +          print "<li><b><a href='http://moniwiki.sf.net/wiki.php/AcceptPathInfo'>AcceptPathInfo</a> <font color='red'>"._("Off")."</font></b></li>\n";
           } else {
  -          print "<li><b>AcceptPathInfo <font color='blue'>On</font></b></li>\n";
  +          print "<li><b>AcceptPathInfo <font color='blue'>"._("On")."</font></b></li>\n";
             $config['query_prefix']='"/"';
           }
           print '</ul>';
  @@ -165,7 +165,7 @@
   
         if ($key) {
           preg_match('/\s*;\s*#(.*)?$/',rtrim($val),$match);
  -        if ($match[1]) $desc[$key]=$match[1];
  +        if (!empty($match[1])) $desc[$key]=$match[1];
         }
         $key='';
         $tag='';
  @@ -210,7 +210,7 @@
           print "<font color='red'>ERROR:</font> <tt>\$$key=$val;</tt><br/>";
       }
       $lines[]="?>\n";
  -    if ($config['dba_type']) {
  +    if (!empty($config['dba_type'])) {
         if (!file_exists('data/counter.db'))
           $db=dba_open('data/counter.db','n',substr($config['dba_type'],1,-1));
         if ($db) dba_close($db);
  @@ -224,17 +224,20 @@
     $dir=getcwd();
   
     if (!file_exists("config.php") && !is_writable(".")) {
  -     print "<h3><font color='red'>Please change the permission of some directories writable on your server to initialize your Wiki.</font></h3>\n";
  +     print "<h3><font color='red'>".
  +	_("Please change the permission of some directories writable on your server to initialize your Wiki.")."</font></h3>\n";
        print "<pre class='console'>\n<font color='green'>$</font> chmod <b>777</b> $dir/data/ $dir\n</pre>\n";
  -     print "If you want a more safe wiki, try to change the permission of directories with <font color='red'>2777(setgid).</font>\n";
  +     print sprintf(_("If you want a more safe wiki, try to change the permission of directories with %s."),
  +		"<font color='red'>2777(setgid).</font>\n");
        print "<pre class='console'>\n<font color='green'>$</font> chmod <b>2777</b> $dir/data/ $dir\n</pre>\n";
  -     print "or use <tt>monisetup.sh</tt> and select 777 or <font color='red'>2777</font>";
  +     print _("or use <tt>monisetup.sh</tt> and select 777 or <font color='red'>2777</font>");
        print "<pre class='console'>\n<font color='green'>$</font> sh monisetup.sh</pre>\n";
  -     print "After execute one of above two commands, just <a href='monisetup.php'>reload this <tt>monisetup.php</tt></a> would make a new initial <tt>config.php</tt> with detected parameters for your wiki.\n<br/>";
  -     print "<h2><a href='monisetup.php'>Reload</a></h2>";
  +     print _("After execute one of above two commands, just <a href='monisetup.php'>reload this <tt>monisetup.php</tt></a> would make a new initial <tt>config.php</tt> with detected parameters for your wiki.")."\n<br/>";
  +     print "<h2><a href='monisetup.php'>"._("Reload")."</a></h2>";
        exit;
     } else if (file_exists("config.php")) {
  -     print "<p class='notice'><span class='warn'>WARN:</span> Please execute the following command after you have completed your configuration.</p>\n";
  +     print "<p class='notice'><span class='warn'>"._("WARN").":</span> ".
  +	_("Please execute the following command after you have completed your configuration.")."</p>\n";
        print "<pre class='console'>\n<font color='green'>$</font> sh secure.sh\n</pre>\n";
     }
   
  @@ -245,8 +248,8 @@
         else
           $datadir_perm = 0777;
         $datadir_perm = decoct($datadir_perm);
  -      print "<h3><font color=red>FATAL: $config[data_dir] directory is not writable</font></h3>\n";
  -      print "<h4>Please execute the following command</h4>";
  +      print "<h3><font color=red>".sprintf(_("FATAL: %s directory is not writable"),$config['data_dir'])."</font></h3>\n";
  +      print "<h4>"._("Please execute the following command.")."</h4>";
         print "<pre class='console'>\n".
               "<font color='green'>$</font> chmod $datadir_perm $config[data_dir]\n</pre>\n";
         exit;
  @@ -265,7 +268,7 @@
              if ($dir == 'text')
                mkdir($config['data_dir']."/$dir/RCS",$DPERM);
          } else if (!is_writable("$config[data_dir]/$dir")) {
  -           print "<h4><font color=red>$dir directory is not writable</font></h4>\n";
  +           print "<h4><font color=red>".sprintf(_("%s directory is not writable"),$dir )."</font></h4>\n";
              print "<pre class='console'>\n".
                "<font color='green'>$</font> chmod a+w $config[$file]\n</pre>\n";
          }
  @@ -282,20 +285,20 @@
       foreach($writables as $file) {
         if (!is_writable($config[$file])) {
           if (file_exists($config[$file])) {
  -          print "<h3><font color=red>$config[$file] is not writable</font> :( </h3>\n";
  +          print "<h3><font color=red>".sprintf(_("%s is not writable"),$config[$file])."</font> :( </h3>\n";
             print "<pre class='console'>\n".
                 "<font color='green'>$</font> chmod a+w $config[$file]\n</pre>\n";
           } else {
             if (preg_match("/_dir/",$file)) {
               umask(000);
               mkdir($config[$file],$DPERM);
  -            print "<h3>&nbsp;&nbsp;<font color=blue>$config[$file] is created now</font> :)</h3>\n";
  +            print "<h3>&nbsp;&nbsp;<font color=blue>".sprintf(_("%s is created now"),$config[$file])."</font> :)</h3>\n";
             } else {
               $fp=@fopen($config[$file],"w+");
               if ($fp) {
                 chmod($config[$file],0666);
                 fclose($fp);
  -              print "<h4><font color='green'>$config[$file] is created now</font> ;) </h4>\n";
  +              print "<h4><font color='green'>".sprintf(_("%s is created now"),$config[$file])."</font> ;) </h4>\n";
               } else {
                 print "<pre class='console'>\n".
                 "<font color='green'>$</font> touch $config[$file]\n".
  @@ -305,7 +308,7 @@
           }
           $error=1;
         } else
  -        print "<h3><font color=blue>$config[$file] is writable</font> :)</h3>\n";
  +        print "<h3><font color=blue>".sprintf(_("%s is writable"),$config[$file])."</font> :)</h3>\n";
       }
       if (is_dir($config['upload_dir'])
         and !file_exists($config['upload_dir'].'/.htaccess')) {
  @@ -554,24 +557,24 @@
   <body>
   EOF;
   
  -print "<div class='header'><h1><img src='imgs/setup-logo.png' style='vertical-align: middle'/> MoniWiki</h1></div><div class='body'>\n";
  +print "<div class='header'><h1><img src='imgs/moniwiki-logo.png' style='vertical-align: middle'/> "._("MoniWiki")."</h1></div><div class='body'>\n";
   
   if (file_exists("config.php") && !is_writable("config.php")) {
  -  print "<h2><font color='red'>'config.php' is not writable !!</font></h2>\n";
  -  print "Please execute <tt>'monisetup.sh'</tt> or <tt>chmod a+w config.php</tt> first to change your settings.<br />\n";
  +  print "<h2><font color='red'>"._("'config.php' is not writable !")."</font></h2>\n";
  +  print _("Please execute <tt>'monisetup.sh'</tt> or <tt>chmod a+w config.php</tt> first to change your settings.")."<br />\n";
   
     return;
   }
   
   $Config=new MoniConfig();
   
  -$config=$_POST['config'];
  -$update=$_POST['update'];
  -$action=$_GET['action'] or $_POST['action'];
  -$newpasswd=$_POST['newpasswd'];
  -$oldpasswd=$_POST['oldpasswd'];
  +$config=isset($_POST['config']) ? $_POST['config']:'';
  +$update=isset($_POST['update']) ? $_POST['update']:'';
  +$action=isset($_GET['action']) ? $_GET['action']:(isset($_POST['action']) ? $_POST['action']:'');
  +$newpasswd=isset($_POST['newpasswd']) ? $_POST['newpasswd']:'';
  +$oldpasswd=isset($_POST['oldpasswd']) ? $_POST['oldpasswd']:'';
   
  -if ($_GET['action']=='pathinfo') {
  +if (!empty($_GET['action']) and $_GET['action'] =='pathinfo') {
     print $_SERVER['PATH_INFO'].'****';
     return;
   }
  @@ -581,12 +584,12 @@
     $rawconfig=$Config->_getFormConfig($config,1);
     $config=$conf;
   
  -  if ($Config->config['admin_passwd']) {
  +  if (!empty($Config->config['admin_passwd'])) {
       if (crypt($oldpasswd,$Config->config['admin_passwd']) != 
         $Config->config['admin_passwd']) {
           if ($update=='Update') {
  -        print "<h2><font color='red'>Invalid password error !!!</font></h2>\n";
  -        print "If you can't remember your admin password, delete password entry in the 'config.php' and restart 'monisetup'<br />\n";
  +        print "<h2><font color='red'>"._("Invalid password error !")."</font></h2>\n";
  +        print _("If you can't remember your admin password, delete password entry in the 'config.php' and restart 'monisetup'")."<br />\n";
           }
           $invalid=1;
       } else {
  @@ -609,7 +612,7 @@
           $charsets=array_map('strtoupper',explode(',',$dummy[0]));
           #print_r($charsets);
           $charset=$charsets[0];
  -        if ($charset_map[$charset]) $charset=$charset_map[$charset];
  +        if (!empty($charset_map[$charset])) $charset=$charset_map[$charset];
   
           # convert sitename to proper encoding
           if (isset($ncharset) and $charset != $ncharset)
  @@ -617,8 +620,8 @@
           if ($out) $rawconfig['sitename']=$out;
         }
       }
  -    if (!$invalid)
  -      print "<h2>Updated Configutations for this $config[sitename]</h2>\n";
  +    if (!empty($invalid))
  +      print "<h2>".sprintf(_("Updated Configutations for this %s"),$config['sitename'])."</h2>\n";
       $lines=$Config->_genRawConfig($rawconfig);
       print "<pre class='console'>\n";
       $rawconf=join("",$lines);
  @@ -631,15 +634,15 @@
       print $highlighted;
       print "</pre>\n";
   
  -    if (!$invalid && (is_writable("config.php") || !file_exists("config.php"))) {
  +    if (empty($invalid) && (is_writable("config.php") || !file_exists("config.php"))) {
         umask(000);
         $fp=fopen("config.php","w");
         fwrite($fp,$rawconf);
         fclose($fp);
         @chmod("config.php",0666);
  -      print "<h2><font color='blue'>Configurations are saved successfully</font></h2>\n";
  -      print "<h3><font color='green'>WARN: Please check <a href='monisetup.php'> your saved configurations</a></font></h3>\n";
  -      print "If all is good, change 'config.php' permission as 644.<br />\n";
  +      print "<h2><font color='blue'>"._("Configurations are saved successfully")."</font></h2>\n";
  +      print "<h3><font color='green'>"._("WARN: Please check <a href='monisetup.php'> your saved configurations</a>")."</font></h3>\n";
  +      print _("If all is good, change 'config.php' permission as 644.")."<br />\n";
       } else {
         if ($invalid) {
           print "<h3><font color='red'>You Can't write this settings to 'config.php'</font></h3>\n";
  @@ -651,14 +654,14 @@
     # read settings
   
     if (!$Config->config) {
  -    print "<h2>Welcome to MoniWiki ! This is your first installation</h2>\n";
  +    print "<h2>"._("Welcome to MoniWiki ! This is your first installation")."</h2>\n";
       $Config->getDefaultConfig();
       $config=$Config->config;
   
       checkConfig($config);
   
       $rawconfig=$Config->rawconfig;
  -    print "<h3 color='blue'>Default settings are loaded...</h3>\n";
  +    print "<h3 color='blue'>"._("Default settings are loaded...")."</h3>\n";
   
       $lines=$Config->_genRawConfig($rawconfig);
       $rawconf=implode("",$lines);
  @@ -667,8 +670,8 @@
       fwrite($fp,$rawconf);
       fclose($fp);
       @chmod("config.php",0666);
  -    print "<h2><font color='blue'>Initial configurations are saved successfully.</font></h2>\n";
  -    print "<h3><font color='red'>Goto <a href='monisetup.php'>MoniSetup</a> again to configure details</font></h3>\n";
  +    print "<h2><font color='blue'>"._("Initial configurations are saved successfully.")."</font></h2>\n";
  +    print "<h3><font color='red'>"._("Goto <a href='monisetup.php'>MoniSetup</a> again to configure details")."</font></h3>\n";
       exit;
     } else {
       $config=$Config->config;
  @@ -679,18 +682,18 @@
   }
   
   if ($_SERVER['REQUEST_METHOD']=="POST") {
  -  $seeds=$_POST['seeds'];
  -  $action=$_POST['action'];
  +  $seeds=isset($_POST['seeds']) ? $_POST['seeds']:'';
  +  $action=isset($_POST['action']) ? $_POST['action']:'';
     if ($action=='sow_seed' && $seeds) {
       sow_wikiseed($config,'wikiseed',$seeds);
       print "<h2>WikiSeeds are sowed successfully</h2>";
       if (file_exists('wiki.php'))
  -      print "<h2>goto <a href='wiki.php'>$config[sitename]</a></h2>";
  +      print "<h2>".sprintf(_("goto %s"),"<a href='wiki.php'>$config[sitename]</a>")."</h2>";
       else
  -      print "<h2>goto <a href='".$config[url_prefix]."'>$config[sitename]</a></h2>";
  +      print "<h2>".sprintf(_("goto %s"),"<a href='".$config[url_prefix]."'>$config[sitename]</a>")."</h2>";
       exit;
     } else if ($action=='sow_seed' && !$seeds) {
  -    print "<h2><font color='red'>No WikiSeeds are selected</font></h2>";
  +    print "<h2><font color='red'>"._("No WikiSeeds are selected")."</font></h2>";
       exit;
     }
   } else {
  @@ -701,27 +704,43 @@
   }
   
     if ($update == 'Preview')
  -  print "<h2>Preview current settings for this $config[sitename]</h2>\n";
  +  print "<h2>".sprintf(_("Preview current settings for this %s"),$config['sitename'])."</h2>\n";
     else
  -  print "<h2>Read current settings for this $config[sitename]</h2>\n";
  +  print "<h2>".sprintf(_("Read current settings for this %s"),$config['sitename'])."</h2>\n";
     print "<div class='oldset'>";
  -  print"<table class='wiki' align=center border=1 cellpadding=2 cellspacing=2>";
  +  print"<table class='wiki' align='center' border='1' cellpadding='2' cellspacing='2'>";
     print "\n";
     while (list($key,$val) = each($config)) {
       if ($key != "admin_passwd" && $key != "purge_passwd")
  -    if (!preg_match('/<img /',$val))
  +    if (is_string($val) and !preg_match('/<img /',$val))
         $val=str_replace(array('<',"\n"),array('&lt;',"<br />\n"),$val);
  +    else if (is_array($val)) {
  +      $o=array();
  +      foreach ($val as $k=>$v) {
  +        if (is_numeric($k)) {
  +          if (is_string($v)) { $o[]='"'.$v.'"'; }
  +          else $o[]=$v;
  +        } else if (is_string($k)) {
  +          // XXX
  +          if (is_string($v)) {$o[]='"'.$k.'"=>"'.$v.'"';}
  +          else $o[]='"'.$k.'"=>'.$v;
  +        }
  +        $val='array('.implode(',',$o).')'; 
  +      }
  +      $val=str_replace(array('<',"\n"),array('&lt;',"<br />\n"),$val); // XXX
  +    }
       print "<tr><td class='preview'>\$$key</td><td>$val</td></tr>\n";
     }
     print "</table>\n</div>\n";
   
   if ($_SERVER['REQUEST_METHOD']!="POST") {
  -  print "<h2>Change your settings</h2>\n";
  -  if (!$config['admin_passwd'])
  -  print "<h3><font color='red'>WARN: You have to enter your Admin Password</h3>\n";
  -  else if (file_exists('config.php') && !file_exists($config[data_dir]."/text/RecentChanges")) {
  -    print "<h3><font color='red'>WARN: You have no WikiSeed on your $config[sitename]</font></h3>\n";
  -    print "<h2>If you want to put wikiseeds on your wiki <a href='?action=seed'>Click here</a> now</h2>";
  +  print "<h2>"._("Change your settings")."</h2>\n";
  +  if (empty($config['admin_passwd']))
  +  print "<h3><font color='red'>"._("WARN: You have to enter your Admin Password")."</h3>\n";
  +  else if (file_exists('config.php') && !file_exists($config['data_dir']."/text/RecentChanges")) {
  +    print "<h3><font color='red'>".sprintf(_("WARN: You have no WikiSeed on your %s"),$config['sitename'])."</font></h3>\n";
  +    print "<h2>".sprintf(_("If you want to put wikiseeds on your wiki %s now"),
  +      "<a href='?action=seed'>"._("Click here")."</a>")."</h2>";
     }
     print "<form method='post' action=''>\n";
     print "<div class='newset'>\n";
  @@ -738,12 +757,12 @@
         } else {
           print "<td><$type name='config[$key]' rows='4' cols='60'>".$val."</$type></td></tr>\n";
         }
  -      if ($configdesc[$key])
  +      if (!empty($configdesc[$key]))
           print "<td class='desc' colspan='2'>".$configdesc[$key]."</td></tr>\n";
       }
     }
   
  -  if (!$config['admin_passwd']) {
  +  if (empty($config['admin_passwd'])) {
       print "<tr><td><b>\$admin_passwd</b></td>";
       print "<td><input type='password' name='newpasswd' size='60'></td></tr>\n";
     } else  {
  @@ -754,21 +773,22 @@
     }
     print "</table></div>";
     print "<div class='step'>";
  -  print "<input type='submit' name='update' value='Preview' /> ";
  -  if (!$config['admin_passwd'])
  -  print "<input type='submit' name='update' value='Update' />\n";
  +  print "<input type='submit' name='update' value='"._("Preview")."' /> ";
  +  if (empty($config['admin_passwd']))
  +  print "<input type='submit' name='update' value='"._("Update")."' />\n";
     else
  -  print "<input type='submit' name='update' value='Update' />\n";
  +  print "<input type='submit' name='update' value='"._("Update")."' />\n";
     print "</div></form>\n";
   
  -  if (file_exists('config.php') && !file_exists($config[data_dir]."/text/RecentChanges")) {
  -    print "<h3><font color='red'>WARN: You have no WikiSeed on your $config[sitename]</font></h3>\n";
  -    print "<h2>If you want to put wikiseeds on your wiki <a href='?action=seed'>Click here</a> now</h2>";
  +  if (file_exists('config.php') && !file_exists($config['data_dir']."/text/RecentChanges")) {
  +    print "<h3><font color='red'>".sprintf(_("WARN: You have no WikiSeed on your %s"),$config['sitename'])."</font></h3>\n";
  +    print "<h2>".sprintf(_("If you want to put wikiseeds on your wiki %s now"),
  +      "<a href='?action=seed'>"._("Click here")."</a>")."</h2>";
     } else {
       if (file_exists('wiki.php'))
  -      print "<h2>goto <a href='wiki.php'>$config[sitename]</a></h2>";
  +      print "<h2>".sprintf(_("goto %s"),"<a href='wiki.php'>".$config['sitename'])."</a></h2>";
       else
  -      print "<h2>goto <a href='".$config[url_prefix]."'>$config[sitename]</a></h2>";
  +      print "<h2>".sprintf(_("goto %s"),"<a href='".$config['url_prefix']."'>$config[sitename]")."</a></h2>";
     }
   }
     print "</div></body></html>";
  
  
  


wkpark      2008/12/11 01:46:38

  Added:       imgs/moni2 bookmark.png html2pdf.png
  Log:
  add missing pics
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/moni2/bookmark.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni2/html2pdf.png
  
  	<<Binary file>>
  
  


wkpark      2008/12/11 09:56:17

  Modified:    .        monisetup.php
  Log:
  use _t() instead of _() to get rid of the dependency of the gettext()
  
  Revision  Changes    Path
  1.32      +163 -58   moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- monisetup.php	10 Dec 2008 16:43:39 -0000	1.31
  +++ monisetup.php	11 Dec 2008 00:56:17 -0000	1.32
  @@ -1,7 +1,7 @@
   <?php
   // Copyright 2003-2007 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.31 2008/12/10 16:43:39 wkpark Exp $
  +// $Id: monisetup.php,v 1.32 2008/12/11 00:56:17 wkpark Exp $
   
   function _stripslashes($str) {
     return get_magic_quotes_gpc() ? stripslashes($str):$str;
  @@ -33,7 +33,7 @@
     function _getHostConfig() {
       print '<div class="check">';
       if (function_exists("dba_open")) {
  -      print '<h3>'._("Check a dba configuration").'</h3>';
  +      print '<h3>'._t("Check a dba configuration").'</h3>';
         $tempnam="/tmp/".time();
         if ($db=@dba_open($tempnam,"n","db4"))
           $config['dba_type']="'db4'";
  @@ -52,22 +52,22 @@
       if ($match) {
         $config['query_prefix']='"?"';
         while (ini_get('allow_url_fopen')) {
  -        print '<h3>'._("Check a AcceptPathInfo setting for Apache 2.x.xx").'</h3>';
  +        print '<h3>'._t("Check a AcceptPathInfo setting for Apache 2.x.xx").'</h3>';
           print '<ul>';
           $fp=@fopen('http://'.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'].'/pathinfo?action=pathinfo','r');
           $out='';
           if ($fp) {
             while (!feof($fp)) $out.=fgets($fp,2048);
           } else {
  -          print "<li><b><a href='http://moniwiki.sf.net/wiki.php/AcceptPathInfo'>AcceptPathInfo</a> <font color='red'>"._("Off")."</font></b><li>\n";
  +          print "<li><b><a href='http://moniwiki.sf.net/wiki.php/AcceptPathInfo'>AcceptPathInfo</a> <font color='red'>"._t("Off")."</font></b><li>\n";
             print '</ul>';
             break;
           }
           fclose($fp);
           if ($out[0] == '*') {
  -          print "<li><b><a href='http://moniwiki.sf.net/wiki.php/AcceptPathInfo'>AcceptPathInfo</a> <font color='red'>"._("Off")."</font></b></li>\n";
  +          print "<li><b><a href='http://moniwiki.sf.net/wiki.php/AcceptPathInfo'>AcceptPathInfo</a> <font color='red'>"._t("Off")."</font></b></li>\n";
           } else {
  -          print "<li><b>AcceptPathInfo <font color='blue'>"._("On")."</font></b></li>\n";
  +          print "<li><b>AcceptPathInfo <font color='blue'>"._t("On")."</font></b></li>\n";
             $config['query_prefix']='"/"';
           }
           print '</ul>';
  @@ -122,25 +122,32 @@
       $key='';
       foreach ($lines as $line) {
         $line=rtrim($line)."\n"; // for Win32
  +
         if (!$key and $line[0] != '$') continue;
         if ($key) {
           $val.=$line;
  -        if (!preg_match('/\s*;(\s*#.*)?$/',$line)) continue;
  +        if (!preg_match("/$tag\s*;(\s*#.*)?\s*$/",$line)) continue;
         } else {
           list($key,$val)=explode('=',substr($line,1),2);
           if (!preg_match('/\s*;(\s*#.*)?$/',$val)) {
  -          if (substr($val,0,3)== '<<<') $tag=substr($val,3);
  +          if (substr($val,0,3)== '<<<') $tag='^'.substr(rtrim($val),3);
  +          else {
  +            # $tag == "'" or $tag == '"'
  +            $tag = preg_quote(substr(ltrim($val),0,1),"'");
  +          }
             continue;
           }
         }
   
         if ($key) {
  +      	$val=preg_replace(array('@<@','@>@'),array('&lt;','&gt;'),$val);
  +        #print $key.'|=='.preg_quote($val);
   	$val=rtrim($val);
           $val=preg_replace('/\s*;(\s*#.*)?$/','',$val);
           $config[$key]=$val;
  +      	$key='';
  +      	$tag='';
         }
  -      $key='';
  -      $tag='';
       }
       return $config;
     }
  @@ -196,12 +203,18 @@
       while (list($key,$val) = each($config)) {
         if ($key=='admin_passwd' or $key=='purge_passwd')
            $val="'".crypt($val,md5(time()))."'";
  -      if (preg_match("/^<<<([A-Za-z0-9]+)\s[^(\\1)]*\s\\1$/",$val,$m)) {
  +      if (preg_match("/^<{3}([A-Za-z0-9]+)\s.*\\1\s*$/s",$val,$m)) {
            $save_val=$val;
            $val=str_replace("$m[1]",'',substr($val,3));
            $val=preg_quote($val,'"');
            $t=@eval("\$$key=\"$val\";");
            $val=$save_val;
  +      } else if (is_string($val)) {
  +         if (strpos($val,"\n")===false)
  +           $t=@eval("\$$key=$val;");
  +         else {
  +           $t=@eval("\$$key=$val;");
  +         }
         } else
            $t=@eval("\$$key=$val;");
         if ($t === NULL)
  @@ -225,19 +238,19 @@
   
     if (!file_exists("config.php") && !is_writable(".")) {
        print "<h3><font color='red'>".
  -	_("Please change the permission of some directories writable on your server to initialize your Wiki.")."</font></h3>\n";
  +	_t("Please change the permission of some directories writable on your server to initialize your Wiki.")."</font></h3>\n";
        print "<pre class='console'>\n<font color='green'>$</font> chmod <b>777</b> $dir/data/ $dir\n</pre>\n";
  -     print sprintf(_("If you want a more safe wiki, try to change the permission of directories with %s."),
  +     print sprintf(_t("If you want a more safe wiki, try to change the permission of directories with %s."),
   		"<font color='red'>2777(setgid).</font>\n");
        print "<pre class='console'>\n<font color='green'>$</font> chmod <b>2777</b> $dir/data/ $dir\n</pre>\n";
  -     print _("or use <tt>monisetup.sh</tt> and select 777 or <font color='red'>2777</font>");
  +     print _t("or use <tt>monisetup.sh</tt> and select 777 or <font color='red'>2777</font>");
        print "<pre class='console'>\n<font color='green'>$</font> sh monisetup.sh</pre>\n";
  -     print _("After execute one of above two commands, just <a href='monisetup.php'>reload this <tt>monisetup.php</tt></a> would make a new initial <tt>config.php</tt> with detected parameters for your wiki.")."\n<br/>";
  -     print "<h2><a href='monisetup.php'>"._("Reload")."</a></h2>";
  +     print _t("After execute one of above two commands, just <a href='monisetup.php'>reload this <tt>monisetup.php</tt></a> would make a new initial <tt>config.php</tt> with detected parameters for your wiki.")."\n<br/>";
  +     print "<h2><a href='monisetup.php'>"._t("Reload")."</a></h2>";
        exit;
     } else if (file_exists("config.php")) {
  -     print "<p class='notice'><span class='warn'>"._("WARN").":</span> ".
  -	_("Please execute the following command after you have completed your configuration.")."</p>\n";
  +     print "<p class='notice'><span class='warn'>"._t("WARN").":</span> ".
  +	_t("Please execute the following command after you have completed your configuration.")."</p>\n";
        print "<pre class='console'>\n<font color='green'>$</font> sh secure.sh\n</pre>\n";
     }
   
  @@ -248,8 +261,8 @@
         else
           $datadir_perm = 0777;
         $datadir_perm = decoct($datadir_perm);
  -      print "<h3><font color=red>".sprintf(_("FATAL: %s directory is not writable"),$config['data_dir'])."</font></h3>\n";
  -      print "<h4>"._("Please execute the following command.")."</h4>";
  +      print "<h3><font color=red>".sprintf(_t("FATAL: %s directory is not writable"),$config['data_dir'])."</font></h3>\n";
  +      print "<h4>"._t("Please execute the following command.")."</h4>";
         print "<pre class='console'>\n".
               "<font color='green'>$</font> chmod $datadir_perm $config[data_dir]\n</pre>\n";
         exit;
  @@ -268,7 +281,7 @@
              if ($dir == 'text')
                mkdir($config['data_dir']."/$dir/RCS",$DPERM);
          } else if (!is_writable("$config[data_dir]/$dir")) {
  -           print "<h4><font color=red>".sprintf(_("%s directory is not writable"),$dir )."</font></h4>\n";
  +           print "<h4><font color=red>".sprintf(_t("%s directory is not writable"),$dir )."</font></h4>\n";
              print "<pre class='console'>\n".
                "<font color='green'>$</font> chmod a+w $config[$file]\n</pre>\n";
          }
  @@ -285,20 +298,20 @@
       foreach($writables as $file) {
         if (!is_writable($config[$file])) {
           if (file_exists($config[$file])) {
  -          print "<h3><font color=red>".sprintf(_("%s is not writable"),$config[$file])."</font> :( </h3>\n";
  +          print "<h3><font color=red>".sprintf(_t("%s is not writable"),$config[$file])."</font> :( </h3>\n";
             print "<pre class='console'>\n".
                 "<font color='green'>$</font> chmod a+w $config[$file]\n</pre>\n";
           } else {
             if (preg_match("/_dir/",$file)) {
               umask(000);
               mkdir($config[$file],$DPERM);
  -            print "<h3>&nbsp;&nbsp;<font color=blue>".sprintf(_("%s is created now"),$config[$file])."</font> :)</h3>\n";
  +            print "<h3>&nbsp;&nbsp;<font color=blue>".sprintf(_t("%s is created now"),$config[$file])."</font> :)</h3>\n";
             } else {
               $fp=@fopen($config[$file],"w+");
               if ($fp) {
                 chmod($config[$file],0666);
                 fclose($fp);
  -              print "<h4><font color='green'>".sprintf(_("%s is created now"),$config[$file])."</font> ;) </h4>\n";
  +              print "<h4><font color='green'>".sprintf(_t("%s is created now"),$config[$file])."</font> ;) </h4>\n";
               } else {
                 print "<pre class='console'>\n".
                 "<font color='green'>$</font> touch $config[$file]\n".
  @@ -308,7 +321,7 @@
           }
           $error=1;
         } else
  -        print "<h3><font color=blue>".sprintf(_("%s is writable"),$config[$file])."</font> :)</h3>\n";
  +        print "<h3><font color=blue>".sprintf(_t("%s is writable"),$config[$file])."</font> :)</h3>\n";
       }
       if (is_dir($config['upload_dir'])
         and !file_exists($config['upload_dir'].'/.htaccess')) {
  @@ -322,8 +335,8 @@
   }
   
   function keyToPagename($key) {
  -#  return preg_replace("/_([a-f0-9]{2})/e","chr(hexdec('\\1'))",$key);
  -  $pagename=preg_replace("/_([a-f0-9]{2})/","%\\1",$key);
  +#  return preg_replace("/_t([a-f0-9]{2})/e","chr(hexdec('\\1'))",$key);
  +  $pagename=preg_replace("/_t([a-f0-9]{2})/","%\\1",$key);
   #  $pagename=str_replace("_","%",$key);
   #  $pagename=strtr($key,"_","%");
     return rawurldecode($pagename);
  @@ -422,10 +435,102 @@
     print "</pre>\n";
   }
   
  +# setup the locale like as the phpwiki style
  +# from wiki.php
  +function get_locales($mode=1) {
  +  $languages=array(
  +    'en'=>array('en_US','english',''),
  +    'fr'=>array('fr_FR','france',''),
  +    'ko'=>array('ko_KR','korean',''),
  +  );
  +  $lang= strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']);
  +  $lang= strtr($lang,'_','-');
  +  $langs=explode(',',preg_replace(array("/;[^;,]+/","/\-[a-z]+/"),'',$lang));
  +  if ($languages[$langs[0]]) return array($languages[$langs[0]][0]);
  +  return array($languages[0][0]);
  +}
  +
  +function set_locale($lang,$charset='') {
  +  $supported=array(
  +    'en_US'=>array('ISO-8859-1'),
  +    'fr_FR'=>array('ISO-8859-1'),
  +    'ko_KR'=>array('EUC-KR','UHC'),
  +  );
  +  if ($lang == 'auto') {
  +    # get broswer's settings
  +    $langs=get_locales();
  +    $lang= $langs[0];
  +
  +    $charset= strtoupper($charset);
  +    # XXX
  +    if (function_exists('nl_langinfo'))
  +      $server_charset= nl_langinfo(CODESET);
  +
  +    if ($charset == 'UTF-8') {
  +      if ($charset != $server_charset) $lang.=".".$charset;
  +    } else {
  +      if ($supported[$lang] && in_array($charset,$supported[$lang])) {
  +        return $lang.'.'.$charset;
  +      } else {
  +        return 'en_US'; // default
  +      }
  +    }
  +  }
  +  return $lang;
  +}
  +
  +function initlocale($lang,$charset) {
  +  global $_Config,$_locale,$locale;
  +  if (!@include_once('locale/'.$lang.'/LC_MESSAGES/moniwiki.php') or
  +     @include_once('locale/'.substr($lang,0,2).'/LC_MESSAGES/moniwiki.php')) {
  +    if (!empty($_locale)) {
  +      function _t($text) {
  +        global $_locale;
  +        if (!empty ($_locale[$text]))
  +          return $_locale[$text];
  +        return $text;
  +      }
  +      return;
  +    }
  +  }
  +  function _t($text) {
  +    return gettext($text);
  +  }
  +  
  +  if (substr($lang,0,2) == 'en') {
  +    $test=setlocale(LC_ALL, $lang);
  +  } else {
  +    if ($_Config['include_path']) $dirs=explode(':',$_Config['include_path']);
  +    else $dirs=array('.');
  +
  +    $domain='moniwiki';
  +
  +    $test=setlocale(LC_ALL, $lang);
  +    foreach ($dirs as $dir) {
  +      $ldir=$dir.'/locale';
  +      if (is_dir($ldir)) {
  +        bindtextdomain($domain, $ldir);
  +        textdomain($domain);
  +        break;
  +      }
  +    }
  +    if (function_exists('bind_textdomain_codeset'))
  +      bind_textdomain_codeset ($domain, $charset);
  +  }
  +}
  +
  +$_Config['include_path']='';
  +$_Config['charset']='UTF-8';
  +
  +$lang = 'auto';
  +$lang = set_locale($lang,$_Config['charset']);
  +initlocale($lang,$_Config['charset']);
  +
   print <<<EOF
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   <html xmlns="http://www.w3.org/1999/xhtml">
   <head><title>Moni Setup</title>
  +<meta http-equiv="Content-Type" content="text/html; charset=$_Config[charset]" /> 
   <style type="text/css">
   <!--
   html { background: #707070; }
  @@ -557,11 +662,11 @@
   <body>
   EOF;
   
  -print "<div class='header'><h1><img src='imgs/moniwiki-logo.png' style='vertical-align: middle'/> "._("MoniWiki")."</h1></div><div class='body'>\n";
  +print "<div class='header'><h1><img src='imgs/moniwiki-logo.png' style='vertical-align: middle'/> "._t("MoniWiki")."</h1></div><div class='body'>\n";
   
   if (file_exists("config.php") && !is_writable("config.php")) {
  -  print "<h2><font color='red'>"._("'config.php' is not writable !")."</font></h2>\n";
  -  print _("Please execute <tt>'monisetup.sh'</tt> or <tt>chmod a+w config.php</tt> first to change your settings.")."<br />\n";
  +  print "<h2><font color='red'>"._t("'config.php' is not writable !")."</font></h2>\n";
  +  print _t("Please execute <tt>'monisetup.sh'</tt> or <tt>chmod a+w config.php</tt> first to change your settings.")."<br />\n";
   
     return;
   }
  @@ -588,8 +693,8 @@
       if (crypt($oldpasswd,$Config->config['admin_passwd']) != 
         $Config->config['admin_passwd']) {
           if ($update=='Update') {
  -        print "<h2><font color='red'>"._("Invalid password error !")."</font></h2>\n";
  -        print _("If you can't remember your admin password, delete password entry in the 'config.php' and restart 'monisetup'")."<br />\n";
  +        print "<h2><font color='red'>"._t("Invalid password error !")."</font></h2>\n";
  +        print _t("If you can't remember your admin password, delete password entry in the 'config.php' and restart 'monisetup'")."<br />\n";
           }
           $invalid=1;
       } else {
  @@ -621,7 +726,7 @@
         }
       }
       if (!empty($invalid))
  -      print "<h2>".sprintf(_("Updated Configutations for this %s"),$config['sitename'])."</h2>\n";
  +      print "<h2>".sprintf(_t("Updated Configutations for this %s"),$config['sitename'])."</h2>\n";
       $lines=$Config->_genRawConfig($rawconfig);
       print "<pre class='console'>\n";
       $rawconf=join("",$lines);
  @@ -640,9 +745,9 @@
         fwrite($fp,$rawconf);
         fclose($fp);
         @chmod("config.php",0666);
  -      print "<h2><font color='blue'>"._("Configurations are saved successfully")."</font></h2>\n";
  -      print "<h3><font color='green'>"._("WARN: Please check <a href='monisetup.php'> your saved configurations</a>")."</font></h3>\n";
  -      print _("If all is good, change 'config.php' permission as 644.")."<br />\n";
  +      print "<h2><font color='blue'>"._t("Configurations are saved successfully")."</font></h2>\n";
  +      print "<h3><font color='green'>"._t("WARN: Please check <a href='monisetup.php'> your saved configurations</a>")."</font></h3>\n";
  +      print _t("If all is good, change 'config.php' permission as 644.")."<br />\n";
       } else {
         if ($invalid) {
           print "<h3><font color='red'>You Can't write this settings to 'config.php'</font></h3>\n";
  @@ -654,14 +759,14 @@
     # read settings
   
     if (!$Config->config) {
  -    print "<h2>"._("Welcome to MoniWiki ! This is your first installation")."</h2>\n";
  +    print "<h2>"._t("Welcome to MoniWiki ! This is your first installation")."</h2>\n";
       $Config->getDefaultConfig();
       $config=$Config->config;
   
       checkConfig($config);
   
       $rawconfig=$Config->rawconfig;
  -    print "<h3 color='blue'>"._("Default settings are loaded...")."</h3>\n";
  +    print "<h3 color='blue'>"._t("Default settings are loaded...")."</h3>\n";
   
       $lines=$Config->_genRawConfig($rawconfig);
       $rawconf=implode("",$lines);
  @@ -670,8 +775,8 @@
       fwrite($fp,$rawconf);
       fclose($fp);
       @chmod("config.php",0666);
  -    print "<h2><font color='blue'>"._("Initial configurations are saved successfully.")."</font></h2>\n";
  -    print "<h3><font color='red'>"._("Goto <a href='monisetup.php'>MoniSetup</a> again to configure details")."</font></h3>\n";
  +    print "<h2><font color='blue'>"._t("Initial configurations are saved successfully.")."</font></h2>\n";
  +    print "<h3><font color='red'>"._t("Goto <a href='monisetup.php'>MoniSetup</a> again to configure details")."</font></h3>\n";
       exit;
     } else {
       $config=$Config->config;
  @@ -688,12 +793,12 @@
       sow_wikiseed($config,'wikiseed',$seeds);
       print "<h2>WikiSeeds are sowed successfully</h2>";
       if (file_exists('wiki.php'))
  -      print "<h2>".sprintf(_("goto %s"),"<a href='wiki.php'>$config[sitename]</a>")."</h2>";
  +      print "<h2>".sprintf(_t("goto %s"),"<a href='wiki.php'>$config[sitename]</a>")."</h2>";
       else
  -      print "<h2>".sprintf(_("goto %s"),"<a href='".$config[url_prefix]."'>$config[sitename]</a>")."</h2>";
  +      print "<h2>".sprintf(_t("goto %s"),"<a href='".$config[url_prefix]."'>$config[sitename]</a>")."</h2>";
       exit;
     } else if ($action=='sow_seed' && !$seeds) {
  -    print "<h2><font color='red'>"._("No WikiSeeds are selected")."</font></h2>";
  +    print "<h2><font color='red'>"._t("No WikiSeeds are selected")."</font></h2>";
       exit;
     }
   } else {
  @@ -704,9 +809,9 @@
   }
   
     if ($update == 'Preview')
  -  print "<h2>".sprintf(_("Preview current settings for this %s"),$config['sitename'])."</h2>\n";
  +  print "<h2>".sprintf(_t("Preview current settings for this %s"),$config['sitename'])."</h2>\n";
     else
  -  print "<h2>".sprintf(_("Read current settings for this %s"),$config['sitename'])."</h2>\n";
  +  print "<h2>".sprintf(_t("Read current settings for this %s"),$config['sitename'])."</h2>\n";
     print "<div class='oldset'>";
     print"<table class='wiki' align='center' border='1' cellpadding='2' cellspacing='2'>";
     print "\n";
  @@ -734,13 +839,13 @@
     print "</table>\n</div>\n";
   
   if ($_SERVER['REQUEST_METHOD']!="POST") {
  -  print "<h2>"._("Change your settings")."</h2>\n";
  +  print "<h2>"._t("Change your settings")."</h2>\n";
     if (empty($config['admin_passwd']))
  -  print "<h3><font color='red'>"._("WARN: You have to enter your Admin Password")."</h3>\n";
  +  print "<h3><font color='red'>"._t("WARN: You have to enter your Admin Password")."</h3>\n";
     else if (file_exists('config.php') && !file_exists($config['data_dir']."/text/RecentChanges")) {
  -    print "<h3><font color='red'>".sprintf(_("WARN: You have no WikiSeed on your %s"),$config['sitename'])."</font></h3>\n";
  -    print "<h2>".sprintf(_("If you want to put wikiseeds on your wiki %s now"),
  -      "<a href='?action=seed'>"._("Click here")."</a>")."</h2>";
  +    print "<h3><font color='red'>".sprintf(_t("WARN: You have no WikiSeed on your %s"),$config['sitename'])."</font></h3>\n";
  +    print "<h2>".sprintf(_t("If you want to put wikiseeds on your wiki %s now"),
  +      "<a href='?action=seed'>"._t("Click here")."</a>")."</h2>";
     }
     print "<form method='post' action=''>\n";
     print "<div class='newset'>\n";
  @@ -773,22 +878,22 @@
     }
     print "</table></div>";
     print "<div class='step'>";
  -  print "<input type='submit' name='update' value='"._("Preview")."' /> ";
  +  print "<input type='submit' name='update' value='"._t("Preview")."' /> ";
     if (empty($config['admin_passwd']))
  -  print "<input type='submit' name='update' value='"._("Update")."' />\n";
  +  print "<input type='submit' name='update' value='"._t("Update")."' />\n";
     else
  -  print "<input type='submit' name='update' value='"._("Update")."' />\n";
  +  print "<input type='submit' name='update' value='"._t("Update")."' />\n";
     print "</div></form>\n";
   
     if (file_exists('config.php') && !file_exists($config['data_dir']."/text/RecentChanges")) {
  -    print "<h3><font color='red'>".sprintf(_("WARN: You have no WikiSeed on your %s"),$config['sitename'])."</font></h3>\n";
  -    print "<h2>".sprintf(_("If you want to put wikiseeds on your wiki %s now"),
  -      "<a href='?action=seed'>"._("Click here")."</a>")."</h2>";
  +    print "<h3><font color='red'>".sprintf(_t("WARN: You have no WikiSeed on your %s"),$config['sitename'])."</font></h3>\n";
  +    print "<h2>".sprintf(_t("If you want to put wikiseeds on your wiki %s now"),
  +      "<a href='?action=seed'>"._t("Click here")."</a>")."</h2>";
     } else {
       if (file_exists('wiki.php'))
  -      print "<h2>".sprintf(_("goto %s"),"<a href='wiki.php'>".$config['sitename'])."</a></h2>";
  +      print "<h2>".sprintf(_t("goto %s"),"<a href='wiki.php'>".$config['sitename'])."</a></h2>";
       else
  -      print "<h2>".sprintf(_("goto %s"),"<a href='".$config['url_prefix']."'>$config[sitename]")."</a></h2>";
  +      print "<h2>".sprintf(_t("goto %s"),"<a href='".$config['url_prefix']."'>$config[sitename]")."</a></h2>";
     }
   }
     print "</div></body></html>";
  
  
  


wkpark      2008/12/11 16:32:53

  Modified:    .        wiki.php
  Log:
  support user configuarable $baserule in the config.php
  fixed preg_match() test
  
  Revision  Changes    Path
  1.413     +18 -4     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.412
  retrieving revision 1.413
  diff -u -r1.412 -r1.413
  --- wiki.php	10 Dec 2008 15:01:22 -0000	1.412
  +++ wiki.php	11 Dec 2008 07:32:53 -0000	1.413
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.412 2008/12/10 15:01:22 wkpark Exp $
  +// $Id: wiki.php,v 1.413 2008/12/11 07:32:53 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.412 $',1,-1);
  +$_revision = substr('$Revision: 1.413 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -671,8 +671,10 @@
       # set user-specified configuration
       if ($config) {
         # read configurations
  -      foreach ($config as $key=>$val)
  +      foreach ($config as $key=>$val) {
  +        if ($key{0}=='_') continue; // internal variables
           $this->$key=$val;
  +      }
       }
   
       if (!$this->purge_passwd)
  @@ -966,7 +968,7 @@
       $all= $this->getPageLists();
   
       $m = @preg_match("/$needle/".$opts,'dummy');
  -    if (!$m) return array(); 
  +    if ($m===false) return array(); 
       foreach ($all as $page) {
         if (preg_match("/$needle/".$opts,$page)) {
           $pages[] = $page; $count--;
  @@ -5017,6 +5019,18 @@
     $page = $DBInfo->getPage($pagename);
   
     $formatter = new Formatter($page,$options);
  +
  +  if ($Config['baserule']) {
  +    $dummy = 'dummy';
  +    foreach ($Config['baserule'] as $rule=>$repl) {
  +      $t = @preg_match($rule,$repl);
  +      if ($t!==false) {
  +        $formatter->baserule[]=$rule;
  +        $formatter->baserepl[]=$repl;
  +      }
  +    }
  +  }
  +
     $formatter->refresh=$refresh;
     $formatter->popup=$popup;
     $formatter->macro_repl('InterWiki','',array('init'=>1));
  
  
  


wkpark      2008/12/12 16:05:24

  Modified:    plugin   FullSearch.php
  Log:
  fixed caching problem and UI enhancement
  
  Revision  Changes    Path
  1.24      +57 -54    moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- FullSearch.php	15 Oct 2007 13:55:03 -0000	1.23
  +++ FullSearch.php	12 Dec 2008 07:05:24 -0000	1.24
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
   //
  -// $Id: FullSearch.php,v 1.23 2007/10/15 13:55:03 wkpark Exp $
  +// $Id: FullSearch.php,v 1.24 2008/12/12 07:05:24 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
  @@ -19,9 +19,12 @@
       $title= sprintf(_("Full text search for \"%s\""), $options['value']);
     $out= macro_FullSearch($formatter,$options['value'],$ret);
     $options['msg']=$ret['msg'];
  +  $options['msgtype']='search';
     $formatter->send_header("",$options);
     $formatter->send_title($title,$formatter->link_url("FindPage"),$options);
   
  +  if ($ret['form'])
  +    print $ret['form'];
     print $out;
   
     $qext='';
  @@ -65,14 +68,18 @@
     $fneedle=str_replace('"',"&#34;",$needle); # XXX
     $tooshort=$DBInfo->fullsearch_tooshort ? $DBInfo->fullsearch_tooshort:2;
   
  +  $m1=_("Display context of search results");
  +  $m2=_("Search BackLinks only");
  +  $m3=_("Case-sensitive searching");
  +  $msg=_("Go");
     $form= <<<EOF
   <form method='get' action='$url'>
      <input type='hidden' name='action' value='fullsearch' />
      <input name='value' size='30' value='$fneedle' />
  -   <input type='submit' value='Go' /><br />
  -   <input type='checkbox' name='context' value='20' checked='checked' />Display context of search results<br />
  -   <input type='checkbox' name='backlinks' value='1' />Search BackLinks only<br />
  -   <input type='checkbox' name='case' value='1' />Case-sensitive searching<br />
  +   <input type='submit' value='$msg' /><br />
  +   <input type='checkbox' name='backlinks' value='1' checked='checked' />$m2<br />
  +   <input type='checkbox' name='context' value='20' />$m1<br />
  +   <input type='checkbox' name='case' value='1' />$m3<br />
      </form>
   EOF;
   
  @@ -80,6 +87,7 @@
        $opts['msg'] = _("No search text");
        return $form;
     }
  +  $opts['form'] = $form;
     # XXX
     $excl = array();
     $incl = array();
  @@ -168,9 +176,6 @@
         }
         $hits=$data;
       }
  -    if ($arena != 'fullsearch') {
  -      $hits=array_count_values($hits);
  -    }
     }
   
     $pattern = '/'.$needle.'/';
  @@ -184,58 +189,56 @@
     if ($hits) {
        $pages = $DBInfo->getPageLists();
       //continue;
  -  } else if ($opts['backlinks']) {
  -     $pages = $DBInfo->getPageLists();
  -     $opts['context']=-1; # turn off context-matching
  -     $cache=new Cache_text("pagelinks");
  -     foreach ($pages as $page_name) {
  -       $links=unserialize($cache->fetch($page_name));
  -       if (is_array($links)) {
  -         if (stristr(implode(' ',$links),$value))
  -           $hits[$page_name] = -1;
  -           // ignore count if < 0
  -       }
  -     }
  -  } else if ($opts['keywords']) {
  -     $pages = $DBInfo->getPageLists();
  -     $opts['context']=-1; # turn off context-matching
  -     $cache=new Cache_text("keywords");
  -     foreach ($pages as $page_name) {
  -       $links=unserialize($cache->fetch($page_name));
  -       #print_r($links);
  -       if (is_array($links)) {
  -         if (stristr(implode(' ',$links),$needle))
  -           $hits[$page_name] = -1;
  -           // ignore count if < 0
  -       }
  -     }
     } else {
  -     $pages = $DBInfo->getPageLists();
  -     while (list($_, $page_name) = each($pages)) {
  -       $p = new WikiPage($page_name);
  -       if (!$p->exists()) continue;
  -       $body= $p->_get_raw_body();
  -       #$count = count(preg_split($pattern, $body))-1;
  -       $count = preg_match_all($pattern, $body,$matches);
  -
  -       if ($count) {
  -         foreach($excl as $ex) if (stristr($body,$ex)) continue;
  -         foreach($incl as $in) if (!stristr($body,$in)) continue;
  -         $hits[$page_name] = $count;
  -       }
  -     }
  -  }
  -  #krsort($hits);
  -  ksort($hits);
  +    if ($opts['backlinks']) {
  +      $pages = $DBInfo->getPageLists();
  +      #$opts['context']=-1; # turn off context-matching
  +      $cache=new Cache_text("pagelinks");
  +      foreach ($pages as $page_name) {
  +        $links=unserialize($cache->fetch($page_name));
  +        if (is_array($links)) {
  +          if (stristr(implode(' ',$links),$value))
  +            $hits[$page_name] = -1;
  +            // ignore count if < 0
  +          }
  +        }
  +    } else if ($opts['keywords']) {
  +      $pages = $DBInfo->getPageLists();
  +      $opts['context']=-1; # turn off context-matching
  +      $cache=new Cache_text("keywords");
  +      foreach ($pages as $page_name) {
  +        $links=unserialize($cache->fetch($page_name));
  +        #print_r($links);
  +        if (is_array($links)) {
  +          if (stristr(implode(' ',$links),$needle))
  +            $hits[$page_name] = -1;
  +            // ignore count if < 0
  +          }
  +        }
  +    } else {
  +      $pages = $DBInfo->getPageLists();
  +      while (list($_, $page_name) = each($pages)) {
  +        $p = new WikiPage($page_name);
  +        if (!$p->exists()) continue;
  +        $body= $p->_get_raw_body();
  +        #$count = count(preg_split($pattern, $body))-1;
  +        $count = preg_match_all($pattern, $body,$matches);
  +
  +        if ($count) {
  +          foreach($excl as $ex) if (stristr($body,$ex)) continue;
  +          foreach($incl as $in) if (!stristr($body,$in)) continue;
  +          $hits[$page_name] = $count;
  +        }
  +      }
  +    }
  +    #krsort($hits);
  +    ksort($hits);
   
  -  if ($arena == 'fullsearch')
       $fc->update($sid,serialize($hits));
  -  else if ($DBInfo->hasPage($sid))
  -    $fc->update($sid,serialize(array_keys($hits)));
  +  }
   
     $out.= "<!-- RESULT LIST START -->"; // for search plugin
     $out.= "<ul>";
  -  reset($hits);
   
     $idx=1;
     while (list($page_name, $count) = each($hits)) {
  
  
  


wkpark      2008/12/12 16:07:30

  Modified:    plugin/processor monimarkup.php
  Log:
  fixed list parser bug.
  
  Revision  Changes    Path
  1.14      +11 -9     moniwiki/plugin/processor/monimarkup.php
  
  Index: monimarkup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/monimarkup.php,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- monimarkup.php	9 Dec 2008 13:19:55 -0000	1.13
  +++ monimarkup.php	12 Dec 2008 07:07:30 -0000	1.14
  @@ -3,12 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a moniwiki formatting processor for the MoniWiki
   //
  -// $Id: monimarkup.php,v 1.13 2008/12/09 13:19:55 wkpark Exp $
  +// $Id: monimarkup.php,v 1.14 2008/12/12 07:07:30 wkpark Exp $
   /**
    * @date    2006-08-09
    * @name    Moniwiki Processor
    * @desc    Moniwiki default processor
  - * @version $Revision: 1.13 $
  + * @version $Revision: 1.14 $
    * @depend  1.1.3
    * @license GPL
    */
  @@ -421,7 +421,9 @@
               }
           }
           $wordrule="({{{(?U)(.+)}}})|".
  -              "\[\[([A-Za-z0-9]+(\(((?<!\]\]).)*\))?)\]\]|"; # macro
  +              "\[\[([A-Za-z0-9]+(\(((?<!\]\]).)*\))?)\]\]|". # macro
  +              "<<([A-Za-z0-9]+(\(((?<!>>).)*\))?)>>|"; # macro
  +
           if ($Config['inline_latex']) # single line latex syntax
               $wordrule.="(?<=\s|^|>)\\$([^\\$]+)\\$(?:\s|$)|".
                    "(?<=\s|^|>)\\$\\$([^\\$]+)\\$\\$(?:\s|$)|";
  @@ -505,10 +507,9 @@
                       }
   
                       // new list/indent type
  -                    if ($_lidep[$_li] == $c['depth'] and 
  -                        $_li== 1 and $type!= $_lityp[$_li]) {
  +                    if ($type != 'cdata' and $_lidep[$_li] >= $c['depth']) {
                           // close all
  -                        while($_li>0) {
  +                        while($_li>0 and $type!= $_lityp[$_li]) {
                               $out.=$this->_li(0,$_lityp[$_li]);
                               $out.=$this->_list(0,$_lityp[$_li]);
                               --$_li;
  @@ -530,7 +531,7 @@
                               --$_li;
                           }
                           if ($c['type']!='cdata') {
  -                            $out.=$this->_li(0,$type);
  +                            $out.=$this->_li(0,$_lityp[$_li]);
                               $out.=$this->_li(1,$type,$linfo,$listy);
                           }
                       }
  @@ -621,6 +622,7 @@
       function _list($on,$type='',$linfo='')
       {
           $close=$on ? '':'/';
  +        $litype='';
           if ($type{0}=='d') {
               if ($on) {
                   $attr=$linfo ?  " class='$linfo'":" class='indent'";
  @@ -662,13 +664,13 @@
       function _div($on,$attr='',$sty='') {
           if ($sty) $sty=' style="'.$sty.'"';
           $tag=array("</div>\n","<div$attr$sty>");
  -        return $tag[$on].$close;
  +        return $tag[$on];
       }
   
       function _p($on,$attr='',$sty='') {
           if ($sty) $sty=' style="'.$sty.'"';
           $tag=array("</p>\n","<p$attr$sty>");
  -        return $tag[$on].$close;
  +        return $tag[$on];
       }
   }
   
  
  
  


wkpark      2008/12/12 18:43:55

  Modified:    plugin   Diff.php bookmark.php
  Log:
  use $msgtitle instead of $opt['msg']
  
  Revision  Changes    Path
  1.19      +2 -2      moniwiki/plugin/Diff.php
  
  Index: Diff.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Diff.php,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- Diff.php	7 May 2008 11:27:31 -0000	1.18
  +++ Diff.php	12 Dec 2008 09:43:54 -0000	1.19
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a diff plugin for the MoniWiki
   //
  -// $Id: Diff.php,v 1.18 2008/05/07 11:27:31 wkpark Exp $
  +// $Id: Diff.php,v 1.19 2008/12/12 09:43:54 wkpark Exp $
   
   function simple_diff($diff) {
     $diff=str_replace("<","&lt;",$diff);
  @@ -343,7 +343,7 @@
         $msg= sprintf(_("Difference between r%s and the current"),$rev);
       else
         $msg=_("latest changes");
  -    $options['msg']=$msg;
  +    $title=$msg;
     }
     $formatter->send_title($title,"",$options);
     if ($date) {
  
  
  
  1.6       +3 -3      moniwiki/plugin/bookmark.php
  
  Index: bookmark.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/bookmark.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- bookmark.php	10 Dec 2008 14:05:28 -0000	1.5
  +++ bookmark.php	12 Dec 2008 09:43:54 -0000	1.6
  @@ -4,7 +4,7 @@
   // a bookmark action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: bookmark.php,v 1.5 2008/12/10 14:05:28 wkpark Exp $
  +// $Id: bookmark.php,v 1.6 2008/12/12 09:43:54 wkpark Exp $
   
   function do_bookmark($formatter,$options) {
     global $DBInfo;
  @@ -23,11 +23,11 @@
         # set the fake cookie
         $_COOKIE['MONI_BOOKMARK']=$bookmark;
         $user->bookmark=$bookmark;
  -      $options['msg'] = 'Bookmark Changed';
  +      $title = 'Bookmark Changed';
       } else {
         $user->info['bookmark']=$bookmark;
         $DBInfo->udb->saveUser($user);
  -      $options['msg'] = 'Bookmark Changed';
  +      $title = 'Bookmark Changed';
       }
     } else
       $options['msg']="Invalid bookmark!";
  
  
  


wkpark      2008/12/12 18:45:51

  Modified:    .        wiki.php wikilib.php
  Log:
  support <<MacroName>> syntax like as MoinMoin.
  enhanced search UI.
  fixed table parser bug.
  
  Revision  Changes    Path
  1.414     +35 -20    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.413
  retrieving revision 1.414
  diff -u -r1.413 -r1.414
  --- wiki.php	11 Dec 2008 07:32:53 -0000	1.413
  +++ wiki.php	12 Dec 2008 09:45:51 -0000	1.414
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.413 2008/12/11 07:32:53 wkpark Exp $
  +// $Id: wiki.php,v 1.414 2008/12/12 09:45:51 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.413 $',1,-1);
  +$_revision = substr('$Revision: 1.414 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -1813,7 +1813,7 @@
       if ($DBInfo->external_target)
         $this->external_target='target="'.$DBInfo->external_target.'"';
   
  -    $this->baserule=array("/<([^\s<>])/",
  +    $this->baserule=array("/(?<!\<)<([^\s<>])/",
                        "/'''([^']*)'''/","/(?<!')'''(.*)'''(?!')/",
                        "/''([^']*)''/","/(?<!')''(.*)''(?!')/",
                        "/`(?<!\s)(?!`)([^`']+)(?<!\s)'(?=\s|$)/",
  @@ -2179,10 +2179,11 @@
     }
   
     function link_repl($url,$attr='',$opts=array()) {
  +    $nm = 0;
       if (is_array($url)) $url=$url[1];
       #if ($url[0]=='<') { print $url;return $url;}
       $url=str_replace('\"','"',$url); // XXX
  -    if ($url[0]=="[") {
  +    if ($url{0}=='[') {
         $url=substr($url,1,-1);
         $force=1;
       }
  @@ -2213,6 +2214,10 @@
           $url=substr($url,1);
         return "<tt class='wiki'>".$url."</tt>"; # No link
         break;
  +    case '<':
  +      $nm = 1; // XXX <<MacroName>> support
  +      $url=substr($url,2,-2);
  +      return $this->macro_repl($url); # No link
       case '[':
         $url=substr($url,1,-1);
         return $this->macro_repl($url); # No link
  @@ -2269,8 +2274,10 @@
           return $this->icon['mailto']."<a class='externalLink' href='mailto:$link' $attr>$myname</a>$external_icon";
         }
   
  -      if ($force or strpos($url,' ')) { # have a space ?
  -        list($url,$text)=explode(" ",$url,2);
  +      if ($force or preg_match('@ @',$url)) { # have a space ?
  +        $p = strpos($url,' ');
  +        $text = substr($url,$p+1);
  +        $url = substr($url,0,$p);
           $link=str_replace('&','&amp;',$url);
           if (!$text) $text=$url;
           else {
  @@ -2726,7 +2733,7 @@
   
     function macro_repl($macro,$value='',$options='') {
       // macro ID
  -    $this->mid=$options['mid'] ? $options['mid']:
  +    $this->mid=!empty($options['mid']) ? $options['mid']:
         (!empty($this->mid) ? ++$this->mid:1);
   
       preg_match("/^([A-Za-z0-9]+)(\((.*)\))?$/",$macro,$match);
  @@ -2762,7 +2769,7 @@
         return '[['.$md5sum.']]';
       }
   
  -    $ret=call_user_func_array("macro_$plugin",array(&$this,$args,$options));
  +    $ret=call_user_func_array("macro_$plugin",array(&$this,$args,&$options));
       if (is_array($ret)) return $ret;
       return $bra.$ret.$ket;
     }
  @@ -3055,7 +3062,6 @@
     }
   
     function _td_attr(&$val,$align='') {
  -    $myclass=array();
       if (!$val) {
         if ($align) return 'class="'.$align.'"';
         return '';
  @@ -3113,8 +3119,8 @@
       }
       $myclass=!empty($attr['class']) ? $attr['class']:'';
       unset($attr['class']);
  -    if ($align) $myclass.=' '.$align;
  -    $attr['class']=trim($myclass);
  +    if (!empty($myclass))
  +      $attr['class']=trim($myclass);
   
       $val='';
       foreach ($rattr as $k=>$v) $val.=$k.'="'.$v.'" ';
  @@ -3149,7 +3155,7 @@
           #else $myattr=$this->_attr($tattr,$sty,$myclass);
         }
       }
  -    if (!empty($rattr)) $attr='<'.implode('><',$rattr).'>';
  +    if (!empty($rattr)) $attr='&lt;'.implode('>&lt;',$rattr).'>';
       if (!empty($myattr)) {
         $my='';
         foreach ($myattr as $k=>$v) $my.=$k.'="'.$v.'" ';
  @@ -3384,7 +3390,8 @@
       $oline='';
   
       $wordrule="({{{(?U)(.+)}}})|".
  -              "\[\[([A-Za-z0-9]+(\(((?<!\]\]).)*\))?)\]\]|"; # macro
  +              "\[\[([A-Za-z0-9]+(\(((?<!\]\]).)*\))?)\]\]|". # macro
  +              "<<([A-Za-z0-9]+(\(((?<!\>\>).)*\))?)>>|"; # macro
       if ($DBInfo->inline_latex) # single line latex syntax
         $wordrule.="(?<=\s|^|>)\\$([^\\$]+)\\$(?=\s|\.|\,|$)|".
                    "(?<=\s|^|>)\\$\\$([^\\$]+)\\$\\$(?=\s|$)|";
  @@ -3639,8 +3646,9 @@
         #if (!$in_pre && !$in_table && preg_match("/^\|\|.*\|\|$/",$line)) {
         if (!$in_pre && $line[0]=='|' && !$in_table && preg_match("/^(\|([^\|]+)?\|((\|\|)*))((?:&lt;[^>\|]*>)*)(.*)$/s",$line,$match)) {
           $open.=$this->_table(1,$match[5]);
  -        if ($match[2]) $open.='<caption>'.$match[2].'</caption>';
  -        if (!$match[5]) $line='||'.$match[3].$match[6];
  +        if (!empty($match[2])) $open.='<caption>'.$match[2].'</caption>';
  +        if (empty($match[5])) $line='||'.$match[3].$match[6];
  +        else $line='||'.$match[3].$match[5].$match[6];
           $in_table=1;
           if ($this->use_etable && !preg_match('/\|\|$/',$match[6])) {
             $text.=$open;
  @@ -4407,7 +4415,7 @@
         $DBInfo->goto_form : goto_form($action,$DBInfo->goto_type);
   
       if ($options['msg'] or $msgtitle) {
  -      $msgtype = isset($options['msgtype']) ? $options['msgtype']:'warn';
  +      $msgtype = isset($options['msgtype']) ? ' '.$options['msgtype']:' warn';
         
         $mtitle=$msgtitle ? "<h3>".$msgtitle."</h3>\n":"";
         $msg=<<<MSG
  @@ -5102,17 +5110,24 @@
           $button= $formatter->link_to("?action=edit",$formatter->icon['create']._("Create this page"));
           if ($oldver) {
             $formatter->send_title(sprintf(_("%s has saved revisions"),$page->name),"",$options);
  -          print sprintf(_("%s or click %s to fullsearch this page.\n"),$button,$formatter->link_to("?action=fullsearch&amp;value=$searchval",_("title")));
  +          print '<h2>'.sprintf(_("%s or click %s to search title.\n"),$button,$formatter->link_to("?action=titlesearch&amp;value=$searchval",_("here"))).'</h2>';
             $options['info_actions']=array('recall'=>'view','revert'=>'revert');
             $options['title']='<h3>'.sprintf(_("Old Revisions of the %s"),htmlspecialchars($page->name)).'</h3>';
             print $formatter->macro_repl('Info','',$options);
           } else {
             $formatter->send_title(sprintf(_("%s is not found in this Wiki"),$page->name),"",$options);
             $searchval=htmlspecialchars($options['page']);
  -          print sprintf(_("%s or click %s to fullsearch this page.\n"),$button,$formatter->link_to("?action=fullsearch&amp;value=$searchval",_("title")));
  +          print '<h2>'.sprintf(_("%s or click %s to search title.\n"),$button,$formatter->link_to("?action=titlesearch&amp;value=$searchval",_("here"))).'</h2>';
             print $formatter->macro_repl('LikePages',$page->name,$err);
             if ($err['extra'])
               print $err['extra'];
  +
  +          print '<h2>'._("Please try to search with another word").'</h2>';
  +          $ret = array('call'=>1);
  +          $ret = $formatter->macro_repl('TitleSearch',$page->name,$ret);
  +
  +          #if ($ret['hits'] == 0)
  +          print "<div class='searchResult'>".$ret['form']."</div>";
           }
   
           print "<hr />\n";
  @@ -5135,8 +5150,8 @@
   
       if ($DBInfo->use_redirect_msg and $action=='show' and $_GET['redirect']){
         $options['msg']=
  -        sprintf(_("Redirected from page \"%s\""),
  -          $formatter->link_tag($_GET['redirect'],'?action=show'));
  +        '<h3>'.sprintf(_("Redirected from page \"%s\""),
  +          $formatter->link_tag($_GET['redirect'],'?action=show'))."</h3>";
       }
       # increase counter
       $DBInfo->counter->incCounter($pagename,$options);
  
  
  
  1.251     +44 -15    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.250
  retrieving revision 1.251
  diff -u -r1.250 -r1.251
  --- wikilib.php	10 Dec 2008 15:01:06 -0000	1.250
  +++ wikilib.php	12 Dec 2008 09:45:51 -0000	1.251
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.250 2008/12/10 15:01:06 wkpark Exp $
  +// $Id: wikilib.php,v 1.251 2008/12/12 09:45:51 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1320,23 +1320,40 @@
     }
     if (!$ret['hits'] and $options['check']) return false;
   
  +  if ($ret['hits'] == 0) {
  +    $ret2['form']=1;
  +    $out2= $formatter->macro_repl('FullSearch',$options['value'],$ret2);
  +  }
  +
     $formatter->send_header("",$options);
  +  $options['msgtype']='search';
     $formatter->send_title($ret['msg'],$formatter->link_url("FindPage"),$options);
   
     if ($options['check']) {
       $button= $formatter->link_to("?action=edit",$formatter->icon['create']._
   ("Create this page"));
  -    print $button;
  -    print sprintf(_(" or click %s to fullsearch this page.\n"),$formatter->link_to("?action=fullsearch&amp;value=$options[page]",_("title")));
  +    print "<h2>".$button;
  +    print sprintf(_(" or click %s to fullsearch this page.\n"),$formatter->link_to("?action=fullsearch&amp;value=$options[page]",_("title")))."</h2>";
     }
   
  +  if (!empty($options['value']))
  +    print $ret['form'];
     print $out;
   
     if ($options['value'])
  -    printf("Found %s matching %s out of %s total pages"."<br />",
  +    printf(_("Found %s matching %s out of %s total pages")."<br />",
   	 $ret['hits'],
  -	($ret['hits'] == 1) ? 'page' : 'pages',
  +	($ret['hits'] == 1) ? _("page") : _("pages"),
   	 $ret['all']);
  +
  +  if ($ret['hits'] == 0) {
  +    print '<h2>'._("Please try to fulltext search")."</h2>\n";
  +    print $out2;
  +  } else {
  +    print '<h2>'.sprintf(_("You can also click %s to fulltext search.\n"),
  +      $formatter->link_to("?action=fullsearch&amp;value=$options[value]",_("here")))."</h2>\n";
  +  }
  +
     $args['noaction']=1;
     $formatter->send_footer($args,$options);
     return true;
  @@ -2602,24 +2619,31 @@
   
     $url=$formatter->link_url($formatter->page->urlname);
   
  -  if (!$needle) {
  -    $opts['msg'] = _("Use more specific text");
  -    return "<form method='get' action='$url'>
  +  $msg = _("Go");
  +  $form="<form method='get' action='$url'>
         <input type='hidden' name='action' value='titlesearch' />
         <input name='value' size='30' value='$needle' />
  -      <input type='submit' value='Go' />
  +      <input type='submit' value='$msg' />
         </form>";
  +
  +  if (!$needle) {
  +    $opts['msg'] = _("Use more specific text");
  +    if ($opts['call']) {
  +      $opts['form']=$form;
  +      return $opts;
  +    }
  +    return $form;
     }
  +
  +  $opts['form'] = $form;
     $opts['msg'] = sprintf(_("Title search for \"%s\""), $needle);
     $needle=_preg_search_escape($needle);
     $test=@preg_match("/$needle/","",$match);
     if ($test === false) {
       $opts['msg'] = sprintf(_("Invalid search expression \"%s\""), $needle);
  -    return "<form method='get' action=''>
  -      <input type='hidden' name='action' value='titlesearch' />
  -      <input name='value' size='30' value='$needle' />
  -      <input type='submit' value='Go' />
  -      </form>";
  +    if ($opts['call'])
  +      return $opts;
  +    return $form;
     }
     $pages= $DBInfo->getPageLists();
     $hits=array();
  @@ -2647,15 +2671,20 @@
     if ($opts['hits']==1)
       $opts['value']=array_pop($hits);
     $opts['all']= count($pages);
  +  if ($opts['call']) {
  +    $opts['out']=$out;
  +    return $opts;
  +  }
     return $out;
   }
   
   function macro_GoTo($formatter="",$value="") {
     $url=$formatter->link_url($formatter->page->urlname);
  +  $msg = _("Go");
     return "<form method='get' action='$url'>
       <input type='hidden' name='action' value='goto' />
       <input name='value' size='30' value='$value' />
  -    <input type='submit' value='Go' />
  +    <input type='submit' value='$msg' />
       </form>";
   }
   
  
  
  


wkpark      2008/12/12 18:46:28

  Modified:    plugin   FullSearch.php
  Log:
  fixed search UI.
  
  Revision  Changes    Path
  1.25      +5 -2      moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- FullSearch.php	12 Dec 2008 07:05:24 -0000	1.24
  +++ FullSearch.php	12 Dec 2008 09:46:28 -0000	1.25
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
   //
  -// $Id: FullSearch.php,v 1.24 2008/12/12 07:05:24 wkpark Exp $
  +// $Id: FullSearch.php,v 1.25 2008/12/12 09:46:28 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
  @@ -48,6 +48,9 @@
       printf(_(" (%s search results)"),$tag);
       }
     }
  +  print '<h2>'.sprintf(_("You can also click %s to search title.\n"),
  +    $formatter->link_to("?action=titlesearch&amp;value=$options[value]",_("here")))."</h2>\n";
  +
     $args['noaction']=1;
     $formatter->send_footer($args,$options);
   }
  @@ -83,7 +86,7 @@
      </form>
   EOF;
   
  -  if (!$needle) { # or blah blah
  +  if (!$needle or !empty($opts['form'])) { # or blah blah
        $opts['msg'] = _("No search text");
        return $form;
     }
  
  
  


wkpark      2008/12/12 18:47:11

  Modified:    css      _base.css black.css
  Log:
  fixed css of msg box.
  
  Revision  Changes    Path
  1.23      +24 -2     moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- _base.css	10 Dec 2008 13:10:58 -0000	1.22
  +++ _base.css	12 Dec 2008 09:47:11 -0000	1.23
  @@ -153,11 +153,33 @@
   
   div.message {
     background-color: #E8E8E8;
  -  border:2px solid #ff0000;
  -  padding:4px;
  +  padding:0px 5px;
     vertical-align: middle;
   }
   
  +div.message span {
  +  padding-left:55px;
  +  margin:0px 0px;
  +  display:block;
  +  min-height: 60px;
  +  height: auto !important;
  +  height:60px;
  +}
  +
  +div.message span.warn {
  +  background: url(../imgs/msg/warn.png) 10px 10px no-repeat;
  +}
  +
  +div.message span.search {
  +  background: url(../imgs/msg/search.png) 10px 10px no-repeat;
  +}
  +
  +div.message h3 {
  +  margin:0px;
  +  border:0px;
  +  line-height:250%;
  +}
  +
   pre.errlog {
     background-color: #E8E8E8;
     border:2px solid #ff0000;
  
  
  
  1.10      +0 -1      moniwiki/css/black.css
  
  Index: black.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/black.css,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- black.css	10 Dec 2008 13:10:58 -0000	1.9
  +++ black.css	12 Dec 2008 09:47:11 -0000	1.10
  @@ -126,7 +126,6 @@
       border-color:#990000;
       color:#440000;
       padding:5px;
  -    width:100%;
   }
   
   .hint {
  
  
  


wkpark      2008/12/12 18:52:59

  moniwiki/imgs/info - New directory

wkpark      2008/12/12 18:53:36

  Added:       imgs/info error.png search.png warn.png
  Log:
  info icons added
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/info/error.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/info/search.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/info/warn.png
  
  	<<Binary file>>
  
  


wkpark      2008/12/12 23:41:09

  Modified:    css      _base.css kbd.js
  Log:
  _base.css: fix last changes
  kbd.js: safari/chrome fix
  
  Revision  Changes    Path
  1.24      +6 -2      moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- _base.css	12 Dec 2008 09:47:11 -0000	1.23
  +++ _base.css	12 Dec 2008 14:41:09 -0000	1.24
  @@ -167,11 +167,11 @@
   }
   
   div.message span.warn {
  -  background: url(../imgs/msg/warn.png) 10px 10px no-repeat;
  +  background: url(../imgs/info/warn.png) 10px 10px no-repeat;
   }
   
   div.message span.search {
  -  background: url(../imgs/msg/search.png) 10px 10px no-repeat;
  +  background: url(../imgs/info/search.png) 10px 10px no-repeat;
   }
   
   div.message h3 {
  @@ -560,3 +560,7 @@
     list-style:circle;
   }
   
  +.pluginInfo fieldset div {
  +  background: url(../imgs/info/plugin.png) no-repeat;
  +  padding-left:70px;
  +}
  
  
  
  1.15      +33 -2     moniwiki/css/kbd.js
  
  Index: kbd.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/kbd.js,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- kbd.js	27 Nov 2008 04:12:12 -0000	1.14
  +++ kbd.js	12 Dec 2008 14:41:09 -0000	1.15
  @@ -6,7 +6,7 @@
   
      distributable under GPL
   
  -   $Id: kbd.js,v 1.14 2008/11/27 04:12:12 wkpark Exp $
  +   $Id: kbd.js,v 1.15 2008/12/12 14:41:09 wkpark Exp $
   
      CHANGES
   
  @@ -71,9 +71,11 @@
   // go form ID
   _go= "go";
   _ap = _qp == '/' ? '?':'&';
  +var is_safari = navigator.appVersion.toLowerCase().indexOf('safari') != -1;
   
   function noBubble(e) {
   	if (e.preventDefault) e.preventDefault();
  +	if (e.stopPropagation) e.stopPropagation();
   	else e.cancelBubble = true;
   }
   
  @@ -81,6 +83,33 @@
   	if (e && e.target) var f = e.target, nn=f.nodeName; // Mozilla
   	else var e=window.event, f = e.srcElement, nn = f.tagName; // IE
   
  +	if (is_safari) {
  +		// safari/chrome
  +		var go=document.getElementById(_go);
  +		var goValue=null;
  +		if (go) goValue=go.elements['value'];
  +
  +		if ( goValue && e.charCode != undefined && e.keyCode == 27) {
  +			// 'ESC' key
  +			if (goValue && nn != 'TEXTAREA' && nn != 'INPUT') {
  +				goValue.focus();
  +			} else {
  +				goValue.blur();
  +			}
  +			noBubble(e);
  +			return false;
  +		}
  +	if (e.altKey && e.keyCode == 90) { // Z
  +		if (nn != 'INPUT') {
  +			go ? goValue.focus():null;
  +			noBubble(e);
  +		} else {
  +			var bot=document.getElementById('bottom');
  +			if (bot) bot.focus(), noBubble(e);
  +		}
  +		return;
  +	}
  +	}
   	if (e.charCode == undefined && (e.keyCode==112 || e.keyCode==114)) {
   		keypresshandler(e); // IE hack
   		noBubble(e);
  @@ -130,9 +159,11 @@
   		}
   		return;
   	}
  +	if (e.altKey) return true; // mozilla
   
   	if (!e.keyCode && (cc == 112 || cc == 114)) ch=ch; // mozilla hack
   
  +	//alert(ch + ',' + cc);
   	switch(ch || cc) {
   	case 27: ch = 27;
   	case '/':
  @@ -247,7 +278,7 @@
   function moin_init() {
   	if (document.addEventListener) {
   		document.addEventListener('keypress',keypresshandler,false);
  -		document.addEventListener('keypress',keydownhandler,false);
  +		document.addEventListener('keydown',keydownhandler,false);
   	} else {
   		document.attachEvent('onkeypress',keypresshandler);
   		document.attachEvent('onkeydown',keydownhandler);
  
  
  


wkpark      2008/12/14 20:00:35

  Modified:    .        wiki.php
  Log:
  fixed last change of titlesearch behavior.
  xhtml fix for list-style-type.
  use isset,empty functions
  forced link bug fixed.
  use "markup invisible" class
  
  Revision  Changes    Path
  1.415     +41 -18    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.414
  retrieving revision 1.415
  diff -u -r1.414 -r1.415
  --- wiki.php	12 Dec 2008 09:45:51 -0000	1.414
  +++ wiki.php	14 Dec 2008 11:00:35 -0000	1.415
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.414 2008/12/12 09:45:51 wkpark Exp $
  +// $Id: wiki.php,v 1.415 2008/12/14 11:00:35 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.414 $',1,-1);
  +$_revision = substr('$Revision: 1.415 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -25,6 +25,8 @@
   
   function getPlugin($pluginname) {
     static $plugins=array();
  +  if (is_bool($pluginname) and $pluginname)
  +    return sizeof($plugins);
     if ($plugins) return $plugins[strtolower($pluginname)];
     global $DBInfo;
   
  @@ -84,6 +86,8 @@
   
   function getProcessor($pro_name) {
     static $processors=array();
  +  if (is_bool($pro_name) and $pro_name)
  +    return sizeof($processors);
     if ($processors) return $processors[strtolower($pro_name)];
     global $DBInfo;
   
  @@ -2211,7 +2215,7 @@
           return "<span style='font-size:".$fsz[$m[1]]."'>$m[3]</span>";
         }
         if ($url[0]==' ' and in_array($url[1],array('#','-','+')) !==false)
  -        $url=substr($url,1);
  +        $url='<span class="markup invisible"> </span>'.substr($url,1);
         return "<tt class='wiki'>".$url."</tt>"; # No link
         break;
       case '<':
  @@ -2275,11 +2279,12 @@
         }
   
         if ($force or preg_match('@ @',$url)) { # have a space ?
  -        $p = strpos($url,' ');
  -        $text = substr($url,$p+1);
  -        $url = substr($url,0,$p);
  +        if (($p = strpos($url,' ')) !== false) {
  +          $text = substr($url,$p+1);
  +          $url = substr($url,0,$p);
  +        }
           $link=str_replace('&','&amp;',$url);
  -        if (!$text) $text=$url;
  +        if (empty($text)) $text=$url;
           else {
             $img_attr='';
             if (preg_match("/^attachment:/",$text)) {
  @@ -2336,6 +2341,10 @@
             return "<img alt='$link' $attr src='$url' />";
           }
         }
  +      if (substr($url,0,7)=='http://' and $url[7]=='?') {
  +        $link=substr($url,7);
  +        return "<a class='internalLink' href='$link'>$link</a>";
  +      }
         $url=urldecode($url);
         return "<a class='externalLink' $attr href='$link' $this->external_target>$url</a>";
       } else {
  @@ -2955,10 +2964,24 @@
   
       if ($on) {
         if ($numtype) {
  +        $lists=array(
  +          'c'=>'circle',
  +          's'=>'square',
  +          'i'=>'lower-roman',
  +          'I'=>'upper-roman',
  +          'a'=>'lower-latin',
  +          'A'=>'upper-latin',
  +          'n'=>'none'
  +        );
           $start=substr($numtype,1);
  -        if ($start)
  -          return "<$list_type type='$numtype[0]' start='$start'>";
  -        return "<$list_type type='$numtype[0]'>";
  +        $litype='';
  +        if (array_key_exists($numtype{0},$lists))
  +          $litype=' style="list-style-type:'.$lists[$numtype{0}].'"';
  +        if (!empty($start)) {
  +          #$litype[]='list-type-style:'.$lists[$numtype{0}];
  +          return "<$list_type$litype start='$start'>";
  +        }
  +        return "<$list_type$litype>";
         }
         return "$close$open<$list_type>"; // FIX Wikiwyg
       } else {
  @@ -2978,7 +3001,7 @@
       $len=strlen($str)/2;
       if ($len==1) return '';
       $attr[]="colspan='$len'"; #$attr[]="align='center' colspan='$len'";
  -    return implode(' ',$attr);
  +    return ' '.implode(' ',$attr);
     }
   
     function _attr($attr,&$sty,$myclass=array(),$align='') {
  @@ -3647,8 +3670,7 @@
         if (!$in_pre && $line[0]=='|' && !$in_table && preg_match("/^(\|([^\|]+)?\|((\|\|)*))((?:&lt;[^>\|]*>)*)(.*)$/s",$line,$match)) {
           $open.=$this->_table(1,$match[5]);
           if (!empty($match[2])) $open.='<caption>'.$match[2].'</caption>';
  -        if (empty($match[5])) $line='||'.$match[3].$match[6];
  -        else $line='||'.$match[3].$match[5].$match[6];
  +        $line='||'.$match[3].$match[5].$match[6];
           $in_table=1;
           if ($this->use_etable && !preg_match('/\|\|$/',$match[6])) {
             $text.=$open;
  @@ -3890,7 +3912,7 @@
       if ($in_table) $close.="</table>\n";
       # close indent
       while($in_li >= 0 && $indent_list[$in_li] > 0) {
  -      if ($indent_type[$in_li]!='dd' && $li_open == $in_li)
  +      if ($indent_type[$in_li]!='dl' && $li_open == $in_li) // XXX
           $close.=$this->_li(0);
   #     $close.=$this->_list(0,$indent_type[$in_li]);
         $close.=$this->_list(0,$indent_type[$in_li],"",$indent_type[$in_li-1]);
  @@ -4252,6 +4274,7 @@
   EOS;
   
         print "</head>\n<body $options[attr]>\n";
  +      print '<div><a id="top" name="top" accesskey="t"></a></div>'."\n";
       }
     }
   
  @@ -4305,7 +4328,7 @@
       $menus=$this->get_actions($args,$options);
   
       $hide_actions= $this->popup + $DBInfo->hide_actions;
  -
  +    $menu = '';
       if (!$hide_actions or
         ($hide_actions and $options['id']!='Anonymous')) {
         if (!$this->css_friendly) {
  @@ -5110,21 +5133,21 @@
           $button= $formatter->link_to("?action=edit",$formatter->icon['create']._("Create this page"));
           if ($oldver) {
             $formatter->send_title(sprintf(_("%s has saved revisions"),$page->name),"",$options);
  -          print '<h2>'.sprintf(_("%s or click %s to search title.\n"),$button,$formatter->link_to("?action=titlesearch&amp;value=$searchval",_("here"))).'</h2>';
  +          print '<h2>'.sprintf(_("%s or click %s to fulltext search.\n"),$button,$formatter->link_to("?action=fullsearch&amp;value=$searchval",_("here"))).'</h2>';
             $options['info_actions']=array('recall'=>'view','revert'=>'revert');
             $options['title']='<h3>'.sprintf(_("Old Revisions of the %s"),htmlspecialchars($page->name)).'</h3>';
             print $formatter->macro_repl('Info','',$options);
           } else {
             $formatter->send_title(sprintf(_("%s is not found in this Wiki"),$page->name),"",$options);
             $searchval=htmlspecialchars($options['page']);
  -          print '<h2>'.sprintf(_("%s or click %s to search title.\n"),$button,$formatter->link_to("?action=titlesearch&amp;value=$searchval",_("here"))).'</h2>';
  +          print '<h2>'.sprintf(_("%s or click %s to fulltext search.\n"),$button,$formatter->link_to("?action=fullsearch&amp;value=$searchval",_("here"))).'</h2>';
             print $formatter->macro_repl('LikePages',$page->name,$err);
             if ($err['extra'])
               print $err['extra'];
   
             print '<h2>'._("Please try to search with another word").'</h2>';
             $ret = array('call'=>1);
  -          $ret = $formatter->macro_repl('TitleSearch',$page->name,$ret);
  +          $ret = $formatter->macro_repl('TitleSearch','',$ret);
   
             #if ($ret['hits'] == 0)
             print "<div class='searchResult'>".$ret['form']."</div>";
  
  
  


wkpark      2008/12/14 20:01:49

  Modified:    .        wikilib.php
  Log:
  xhtml fixes
  
  Revision  Changes    Path
  1.252     +8 -5      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.251
  retrieving revision 1.252
  diff -u -r1.251 -r1.252
  --- wikilib.php	12 Dec 2008 09:45:51 -0000	1.251
  +++ wikilib.php	14 Dec 2008 11:01:49 -0000	1.252
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.251 2008/12/12 09:45:51 wkpark Exp $
  +// $Id: wikilib.php,v 1.252 2008/12/14 11:01:49 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -484,10 +484,13 @@
           $this->setID($id);
           return;
        }
  -     $this->ticket=substr($_COOKIE['MONI_ID'],0,32);
  -     $id=substr($_COOKIE['MONI_ID'],33);
  -
  +     $id = '';
  +     if (isset($_COOKIE['MONI_ID'])) {
  +     	$this->ticket=substr($_COOKIE['MONI_ID'],0,32);
  +     	$id=substr($_COOKIE['MONI_ID'],33);
  +     }
        $this->setID($id);
  +
        $this->css=isset($_COOKIE['MONI_CSS']) ? $_COOKIE['MONI_CSS']:'';
        $this->theme=isset($_COOKIE['MONI_THEME']) ? $_COOKIE['MONI_THEME']:'';
        $this->bookmark=isset($_COOKIE['MONI_BOOKMARK']) ? $_COOKIE['MONI_BOOKMARK']:'';
  @@ -838,7 +841,7 @@
     }
     if ($DBInfo->use_autosave)
       $form_attr='onClick="moni_autosave(this)" onsubmit="moni_autosave_reset()" ';
  -  $formh= sprintf('<form name="editform" '.$form_attr.'method="post" action="%s"'.$ajax.'>',
  +  $formh= sprintf('<form id="editform" '.$form_attr.'method="post" action="%s"'.$ajax.'>',
       $previewurl);
     if ($text) {
       $raw_body = preg_replace("/\r\n|\r/", "\n", $text);
  
  
  


wkpark      2008/12/14 20:01:50

  Modified:    plugin   RecentChanges.php Comment.php
  Log:
  xhtml fixes
  
  Revision  Changes    Path
  1.26      +2 -2      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- RecentChanges.php	10 Dec 2008 09:59:49 -0000	1.25
  +++ RecentChanges.php	14 Dec 2008 11:01:49 -0000	1.26
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.25 2008/12/10 09:59:49 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.26 2008/12/14 11:01:49 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     $options['trail']='';
  @@ -264,7 +264,7 @@
   
       $logs[$page_key]= 1;
     }
  -  return $btnlist.$out.$cat0;
  +  return $btnlist.'<div>'.$out.$cat0.'</div>';
   }
   // vim:et:sts=2:
   ?>
  
  
  
  1.34      +3 -2      moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- Comment.php	10 Dec 2008 09:59:49 -0000	1.33
  +++ Comment.php	14 Dec 2008 11:01:49 -0000	1.34
  @@ -6,7 +6,7 @@
   // Usage: [[Comment]], ?action=comment
   //
   //
  -// $Id: Comment.php,v 1.33 2008/12/10 09:59:49 wkpark Exp $
  +// $Id: Comment.php,v 1.34 2008/12/14 11:01:49 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $DBInfo;
  @@ -80,7 +80,7 @@
     $url=$formatter->link_url($formatter->page->urlname);
   
     if ($emid) $hidden.='<input type="hidden" name="comment_id" value="'.$emid.'" />';
  -  $form = "<form name='editform' method='post' action='$url'>\n";
  +  $form = "<form id='editform' method='post' action='$url'>\n<div>";
     if ($use_meta)
       $form.="<a id='add_comment' name='add_comment'></a>";
   
  @@ -110,6 +110,7 @@
   <input type="hidden" name="datestamp" value="$datestamp" />
   <input type="submit" value="$comment" />
   $preview
  +</div>
   </form>
   FORM2;
   
  
  
  


wkpark      2008/12/14 23:24:23

  Modified:    .        wiki.php
  Log:
  interwiki_repl(), word_repl() cleanup
  
  Revision  Changes    Path
  1.416     +40 -28    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.415
  retrieving revision 1.416
  diff -u -r1.415 -r1.416
  --- wiki.php	14 Dec 2008 11:00:35 -0000	1.415
  +++ wiki.php	14 Dec 2008 14:24:23 -0000	1.416
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.415 2008/12/14 11:00:35 wkpark Exp $
  +// $Id: wiki.php,v 1.416 2008/12/14 14:24:23 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.415 $',1,-1);
  +$_revision = substr('$Revision: 1.416 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2368,6 +2368,28 @@
         $wiki=$m[1]; $url=$m[2];
       }
   
  +    if (empty($wiki)) {
  +      # wiki:FrontPage (not supported in the MoinMoin)
  +      # or [wiki:FrontPage Home Page]
  +      return $this->word_repl($url,$text.$extra,$attr,1);
  +    }
  +
  +    # invalid InterWiki name
  +    if (empty($DBInfo->interwiki[$wiki])) {
  +      #$dum0=preg_replace("/(".$this->wordrule.")/e","\$this->link_repl('\\1')",$wiki);
  +      #return $dum0.':'.($page?$this->link_repl($page,$text):'');
  +
  +      return $this->word_repl("$wiki:$page",$text.$extra,$attr,1);
  +    }
  +
  +    $icon=$this->imgs_dir_interwiki.strtolower($wiki).'-16.png';
  +    $sx=16;$sy=16;
  +    if ($DBInfo->intericon[$wiki]) {
  +      $icon=$DBInfo->intericon[$wiki][2];
  +      $sx=$DBInfo->intericon[$wiki][0];
  +      $sy=$DBInfo->intericon[$wiki][1];
  +    }
  +
       # wiki:"Hello World" wiki:MoinMoin:"Hello World"
       # [wiki:"Hello World" hello world]
       if ($url[0]=='"') {
  @@ -2376,31 +2398,16 @@
           if (isset($m[5])) $text=$m[5];
         }
       } else if (($p=strpos($url,' '))!==false) {
  -      $dummy=substr($url,0,$p);
         $text=substr($url,$p+1);
  -      if (!empty($text)) $url=$dummy;
  +      $word=substr($url,0,$p);
       }
   
  -    if ($wiki== '') {
  -      # wiki:FrontPage (not supported in the MoinMoin)
  -      # or [wiki:FrontPage Home Page]
  -      $page=&$url;
  -      if (!$text)
  -        return $this->word_repl($page,''.$extra,$attr,1);
  -      return $this->word_repl($page,$text.$extra,$attr,1);
  -    }
       $page=$url;
  +    $url=$DBInfo->interwiki[$wiki];
  +
       if ($page[0]=='"') # "extended wiki name"
         $page=substr($page,1,-1);
   
  -    $url=$DBInfo->interwiki[$wiki];
  -    # invalid InterWiki name
  -    if (!$url) {
  -      #$dum0=preg_replace("/(".$this->wordrule.")/e","\$this->link_repl('\\1')",$wiki);
  -      #return $dum0.':'.($page?$this->link_repl($page,$text):'');
  -      return $this->word_repl("$wiki:$page",$text.$extra,$attr,1);
  -    }
  -
       if ($page=='/') $page='';
       if (substr($page,-1)==' ') {
         $sep='<b></b>'; // auto append SixSingleQuotes
  @@ -2420,13 +2427,6 @@
         $url=str_replace('$PAGE',$page_only,$url).$query;
       }
   
  -    $icon=$this->imgs_dir_interwiki.strtolower($wiki).'-16.png';
  -    $sx=16;$sy=16;
  -    if ($DBInfo->intericon[$wiki]) {
  -      $icon=$DBInfo->intericon[$wiki][2];
  -      $sx=$DBInfo->intericon[$wiki][0];
  -      $sy=$DBInfo->intericon[$wiki][1];
  -    }
   
       $img="<a class=\"interwiki\" href='$url' $this->interwiki_target>".
            "<img class=\"interwiki\" alt=\"$wiki:\" src='$icon' style='border:0' height='$sy' ".
  @@ -2511,6 +2511,18 @@
     function word_repl($word,$text='',$attr='',$nogroup=0,$islink=1) {
       global $DBInfo;
       $nonexists='nonexists_'.$this->nonexists;
  +    # ["Hello World"]
  +    # ["Hello World" Go to Hello]
  +    if ($word{0}=='"') {
  +      if (preg_match('/^((")?[^"]+\2)((\s+)?(.*))?$/',$word,$m)) {
  +        $word=$m[1];
  +        if (isset($m[5])) $text=$m[5];
  +      }
  +    } else if (($p=strpos($word,' '))!==false) {
  +      $text=substr($word,$p+1);
  +      $word=substr($word,0,$p);
  +    }
  +
       if ($word[0]=='"') { # ["extended wiki name"]
         $extended=1;
         $page=substr($word,1,-1);
  @@ -2881,7 +2893,7 @@
   
       $alt=str_replace("<","&lt;",$smiley);
   
  -    if (preg_match('/^(http|ftp):/',$img))
  +    if (preg_match('/^(https?|ftp):/',$img))
         return "<img src='$img' style='border:0' class='smiley' alt='$alt' title='$alt' />";
       return "<img src='$this->imgs_dir/$img' style='border:0' class='smiley' alt='$alt' title='$alt' />";
     }
  
  
  


wkpark      2008/12/15 18:53:11

  Modified:    .        wiki.php
  Log:
  fixed last changes. link ["extended wiki name"] correctly.
  
  Revision  Changes    Path
  1.417     +12 -17    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.416
  retrieving revision 1.417
  diff -u -r1.416 -r1.417
  --- wiki.php	14 Dec 2008 14:24:23 -0000	1.416
  +++ wiki.php	15 Dec 2008 09:53:11 -0000	1.417
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.416 2008/12/14 14:24:23 wkpark Exp $
  +// $Id: wiki.php,v 1.417 2008/12/15 09:53:11 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.416 $',1,-1);
  +$_revision = substr('$Revision: 1.417 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -268,6 +268,7 @@
     }
   
     function Write() {
  +    $out= '';
       while (list($name,$d) = each($this->timers)) {
         $out.=sprintf("%10s :%3.4f sec (%3.2f %%)\n",$name,$d,$d/$this->total*100);
       }
  @@ -2379,7 +2380,7 @@
         #$dum0=preg_replace("/(".$this->wordrule.")/e","\$this->link_repl('\\1')",$wiki);
         #return $dum0.':'.($page?$this->link_repl($page,$text):'');
   
  -      return $this->word_repl("$wiki:$page",$text.$extra,$attr,1);
  +      return $this->word_repl("$wiki:$url",$text.$extra,$attr,1);
       }
   
       $icon=$this->imgs_dir_interwiki.strtolower($wiki).'-16.png';
  @@ -2399,7 +2400,7 @@
         }
       } else if (($p=strpos($url,' '))!==false) {
         $text=substr($url,$p+1);
  -      $word=substr($url,0,$p);
  +      if (!empty($text)) $url=substr($url,0,$p);
       }
   
       $page=$url;
  @@ -2511,22 +2512,16 @@
     function word_repl($word,$text='',$attr='',$nogroup=0,$islink=1) {
       global $DBInfo;
       $nonexists='nonexists_'.$this->nonexists;
  -    # ["Hello World"]
  -    # ["Hello World" Go to Hello]
  -    if ($word{0}=='"') {
  +
  +    if ($word[0]=='"') {
  +      # ["extended wiki name"]
  +      # ["Hello World" Go to Hello]
         if (preg_match('/^((")?[^"]+\2)((\s+)?(.*))?$/',$word,$m)) {
  -        $word=$m[1];
  -        if (isset($m[5])) $text=$m[5];
  +        $word=substr($m[1],1,-1);
  +        if (isset($m[5])) $text=$m[5]; // text arg ignored
         }
  -    } else if (($p=strpos($word,' '))!==false) {
  -      $text=substr($word,$p+1);
  -      $word=substr($word,0,$p);
  -    }
  -
  -    if ($word[0]=='"') { # ["extended wiki name"]
         $extended=1;
  -      $page=substr($word,1,-1);
  -      $word=$page;
  +      $page=$word;
       } else
         #$page=preg_replace("/\s+/","",$word); # concat words
         $page=normalize($word); # concat words
  
  
  


wkpark      2008/12/15 19:51:42

  Modified:    .        wiki.php
  Log:
  fixed last changesed interwiki_repl()
  
  Revision  Changes    Path
  1.418     +14 -13    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.417
  retrieving revision 1.418
  diff -u -r1.417 -r1.418
  --- wiki.php	15 Dec 2008 09:53:11 -0000	1.417
  +++ wiki.php	15 Dec 2008 10:51:41 -0000	1.418
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.417 2008/12/15 09:53:11 wkpark Exp $
  +// $Id: wiki.php,v 1.418 2008/12/15 10:51:41 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.417 $',1,-1);
  +$_revision = substr('$Revision: 1.418 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2369,6 +2369,18 @@
         $wiki=$m[1]; $url=$m[2];
       }
   
  +    # wiki:"Hello World" wiki:MoinMoin:"Hello World"
  +    # [wiki:"Hello World" hello world]
  +    if (isset($url{0}) and $url[0]=='"') {
  +      if (preg_match('/^((")?[^"]+\2)((\s+)?(.*))?$/',$url,$m)) {
  +        $url=$m[1];
  +        if (isset($m[5])) $text=$m[5];
  +      }
  +    } else if (($p=strpos($url,' '))!==false) {
  +      $text=substr($url,$p+1);
  +      if (!empty($text)) $url=substr($url,0,$p);
  +    }
  +
       if (empty($wiki)) {
         # wiki:FrontPage (not supported in the MoinMoin)
         # or [wiki:FrontPage Home Page]
  @@ -2391,17 +2403,6 @@
         $sy=$DBInfo->intericon[$wiki][1];
       }
   
  -    # wiki:"Hello World" wiki:MoinMoin:"Hello World"
  -    # [wiki:"Hello World" hello world]
  -    if ($url[0]=='"') {
  -      if (preg_match('/^((")?[^"]+\2)((\s+)?(.*))?$/',$url,$m)) {
  -        $url=$m[1];
  -        if (isset($m[5])) $text=$m[5];
  -      }
  -    } else if (($p=strpos($url,' '))!==false) {
  -      $text=substr($url,$p+1);
  -      if (!empty($text)) $url=substr($url,0,$p);
  -    }
   
       $page=$url;
       $url=$DBInfo->interwiki[$wiki];
  
  
  


wkpark      2008/12/16 18:36:17

  Modified:    .        wiki.php
  Log:
  cleanup NOTICE warnings.
  
  Revision  Changes    Path
  1.419     +165 -129  moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.418
  retrieving revision 1.419
  diff -u -r1.418 -r1.419
  --- wiki.php	15 Dec 2008 10:51:41 -0000	1.418
  +++ wiki.php	16 Dec 2008 09:36:17 -0000	1.419
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.418 2008/12/15 10:51:41 wkpark Exp $
  +// $Id: wiki.php,v 1.419 2008/12/16 09:36:17 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.418 $',1,-1);
  +$_revision = substr('$Revision: 1.419 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -27,12 +27,13 @@
     static $plugins=array();
     if (is_bool($pluginname) and $pluginname)
       return sizeof($plugins);
  -  if ($plugins) return $plugins[strtolower($pluginname)];
  +  $pname = strtolower($pluginname);
  +  if (!empty($plugins)) return isset($plugins[$pname]) ? $plugins[$pname]:'';
     global $DBInfo;
   
     $cp=new Cache_text('settings');
  -  if (!$DBInfo->manual_plugin_admin) {
  -    if ($DBInfo->include_path)
  +  if (empty($DBInfo->manual_plugin_admin)) {
  +    if (!empty($DBInfo->include_path))
         $dirs=explode(':',$DBInfo->include_path);
       else
         $dirs=array('.');
  @@ -50,9 +51,9 @@
   
     if ($cp->exists('plugins')) {
       $plugins=unserialize($cp->fetch('plugins'));
  -    if (is_array($DBInfo->myplugins))
  +    if (!empty($DBInfo->myplugins) and is_array($DBInfo->myplugins))
         $plugins=array_merge($plugins,$DBInfo->myplugins);
  -    return $plugins[strtolower($pluginname)];
  +    return isset($plugins[$pname]) ? $plugins[$pname]:'';
     }
     if ($DBInfo->include_path)
       $dirs=explode(':',$DBInfo->include_path);
  @@ -69,12 +70,12 @@
       }
     }
   
  -  if ($plugins)
  +  if (!empty($plugins))
       $cp->update('plugins',serialize($plugins));
     if (is_array($DBInfo->myplugins))
       $plugins=array_merge($plugins,$DBInfo->myplugins);
   
  -  return $plugins[strtolower($pluginname)];
  +  return $plugins[$pname];
   }
   
   function getModule($module,$name) {
  @@ -88,7 +89,8 @@
     static $processors=array();
     if (is_bool($pro_name) and $pro_name)
       return sizeof($processors);
  -  if ($processors) return $processors[strtolower($pro_name)];
  +  $prog = strtolower($pro_name);
  +  if (!empty($processors)) return isset($processors[$prog]) ? $processors[$prog]:'';
     global $DBInfo;
   
     $cp=new Cache_text('settings');
  @@ -97,7 +99,7 @@
       $processors=unserialize($cp->fetch('processors'));
       if (is_array($DBInfo->myprocessors))
         $processors=array_merge($processors,$DBInfo->myprocessors);
  -    return $processors[strtolower($pro_name)];
  +    return $processors[$prog];
     }
     if ($DBInfo->include_path)
       $dirs=explode(':',$DBInfo->include_path);
  @@ -439,16 +441,16 @@
     }
   
     function hasPage($pagename) {
  -    if ($this->db[$pagename]) return true;
  +    if (isset($this->db[$pagename])) return true;
       return false;
     }
   
     function getTwinPages($pagename,$mode=1) {
  -    if (!$this->db[$pagename]) {
  -      if ($mode) return array();
  +    if (empty($this->db[$pagename])) {
  +      if (!empty($mode)) return array();
         return false;
       }
  -    if (!$mode) return true;
  +    if (empty($mode)) return true;
       $twins=$this->db[$pagename];
   
       $ret='[wiki:'.str_replace(',',"] [wiki:",$twins).']';
  @@ -458,11 +460,11 @@
       return explode(' ',$ret);
     }
     function getSisterSites($pagename,$mode=1) {
  -    if (!$this->db[$pagename]) {
  +    if (empty($this->db[$pagename])) {
         if ($mode) return '';
         return false;
       }
  -    if (!$mode) return true;
  +    if (empty($mode)) return true;
   
       $twins=$this->db[$pagename];
       $ret='[wiki:'.str_replace(',',"] [wiki:",$twins).']';
  @@ -1519,29 +1521,29 @@
       $ret='';
       
       if (($size=filesize($key)) >0) {
  -      while ($params['uniq'] and empty($params['raw'])) { # include cache if it is a valid php cache
  +      while (!empty($params['uniq']) and empty($params['raw'])) { # include cache if it is a valid php cache
           # cache header : <,?,php /* Generator Version uniqid tpl_path(optional) */
           $check=fgets($fp);
           if ($check{0}=='<' and $check{1}=='?') {
             list($tag,$sep,$generator,$ver,$id,$path,$extra)=explode(' ',$check);
             $ok=1;
             if (!empty($params['uniq']) and $params['uniq'] != $id) $ok=0;
  -          if ($ok and !empty($params['path']) and $params['path'] != $path) $ok=0;
  -          if ($ok) {
  +          if (!empty($ok) and !empty($params['path']) and $params['path'] != $path) $ok=0;
  +          if (!empty($ok)) {
               fclose($fp);
               global $Config;
               $TPL_VAR=&$params['_vars']; # builtin Template_ support
               if (isset($TPL_VAR['_theme']) and is_array($TPL_VAR['_theme']) and $TPL_VAR['_theme']['compat'])
                 extract($TPL_VAR['_theme']);
               $ehandle=false;
  -            if ($params['formatter']) {
  +            if (!empty($params['formatter'])) {
                 $formatter=&$params['formatter']; # XXX
                 if (method_exists($formatter,'internal_errorhandler')) {
                   set_error_handler(array($formatter,'internal_errorhandler'));
                   $ehandle=true;
                 }
               }
  -            if ($params['print']) {
  +            if (!empty($params['print'])) {
                 $ret= include $key; // Do we need more secure method ?
                 if ($ehandle) restore_error_handler();
                 return $ret;
  @@ -1561,7 +1563,7 @@
         $ret=fread($fp,$size);
       }
       fclose($fp);
  -    if ($params['print']) return print $ret;
  +    if (!empty($params['print'])) return print $ret;
       return $ret;
     }
   
  @@ -1594,7 +1596,7 @@
     var $body;
   
     function WikiPage($name,$options="") {
  -    if ($options['rev'])
  +    if (!empty($options['rev']))
         $this->rev=$options['rev'];
       else
         $this->rev=0; # current rev.
  @@ -1637,14 +1639,12 @@
     function get_raw_body($options='') {
       global $DBInfo;
   
  -    if ($this->body && !$options['rev'])
  +    if ($this->body && empty($options['rev']))
          return $this->body;
   
  -    if ($this->rev || $options['rev']) {
  -      if ($options['rev']) $rev=$options['rev'];
  -      else $rev=$this->rev;
  -
  -      if ($DBInfo->version_class) {
  +    $rev= !empty($options['rev']) ? $options['rev']:(!empty($this->rev) ? $this->rev:'');
  +    if (!empty($rev)) {
  +      if (!empty($DBInfo->version_class)) {
           $class=getModule('Version',$DBInfo->version_class);
           $version=new $class ($DBInfo);
           $out = $version->co($this->name,$rev);
  @@ -1654,7 +1654,7 @@
         }
       }
       $fp=@fopen($this->filename,"r");
  -    if (!$fp) {
  +    if (!is_resource($fp)) {
         if (file_exists($this->filename)) {
           $out="You have no permission to see this page.\n\n";
           $out.="See MoniWiki/AccessControl\n";
  @@ -1669,12 +1669,12 @@
       fclose($fp);
       $this->body=$body;
   
  -    return $this->body;
  +    return $body;
     }
   
     function _get_raw_body() {
       $fp=@fopen($this->filename,"r");
  -    if ($fp) {
  +    if (is_resource($fp)) {
         $size=filesize($this->filename);
         if ($size >0)
           $this->body=fread($fp,$size);
  @@ -1702,12 +1702,12 @@
     function get_rev($mtime="",$last=0) {
       global $DBInfo;
   
  -    if ($DBInfo->version_class) {
  +    if (!empty($DBInfo->version_class)) {
         $class=getModule('Version',$DBInfo->version_class);
         $version=new $class ($DBInfo);
         $rev= $version->get_rev($this->name,$mtime,$last);
   
  -      if ($rev) return $rev;
  +      if (!empty($rev)) return $rev;
       }
       return '';
     }
  @@ -1716,11 +1716,11 @@
       global $DBInfo;
   
       $info=array('','','','','');
  -    if (!$rev)
  +    if (empty($rev))
         $rev=$this->get_rev('',1);
  -    if (!$rev) return $info;
  +    if (empty($rev)) return $info;
   
  -    if ($DBInfo->version_class) {
  +    if (!empty($DBInfo->version_class)) {
         $class=getModule('Version',$DBInfo->version_class);
         $version=new $class ($DBInfo);
         $out= $version->rlog($this->name,$rev,$opt);
  @@ -1729,7 +1729,7 @@
       }
   
       $state=0;
  -    if ($out) {
  +    if (isset($out)) {
         for ($line=strtok($out,"\n"); $line !== false;$line=strtok("\n")) {
           if ($state == 0 and preg_match("/^date:\s.*$/",$line)) {
             $tmp=preg_replace("/date:\s(.*);\s+author:.*;\s+state:.*;/","\\1",rtrim($line));
  @@ -1761,8 +1761,10 @@
       $this->head_dep=0;
       $this->sect_num=0;
       $this->toc=0;
  +    $this->toc_prefix='';
       $this->highlight="";
       $this->prefix= get_scriptname();
  +    $this->self_query='';
       $this->url_prefix= $DBInfo->url_prefix;
       $this->imgs_dir= $DBInfo->imgs_dir;
       $this->imgs_dir_interwiki=$DBInfo->imgs_dir_interwiki;
  @@ -1813,6 +1815,9 @@
       $this->NULL='';
       if(getenv("OS")!="Windows_NT") $this->NULL=' 2>/dev/null';
   
  +    $this->_macrocache=0;
  +    $this->wikimarkup=0;
  +    $this->pi=array();
       $this->external_on=0;
       $this->external_target='';
       if ($DBInfo->external_target)
  @@ -1870,10 +1875,12 @@
     function set_wordrule($pis=array()) {
       global $DBInfo;
   
  +    $single=''; # single bracket
       $camelcase= isset($pis['#camelcase']) ? $pis['#camelcase']:
         $DBInfo->use_camelcase;
  -    $sbracket= isset($pis['#singlebracket']) ? $pis['#singlebracket']:
  -      $DBInfo->use_singlebracket;
  +
  +    if (!empty($pis['#singlebracket']) or !empty($DBInfo->use_singlebracket))
  +      $single='?';
   
       #$punct="<\"\'}\]\|;,\.\!";
       #$punct="<\'}\]\)\|;\.\!"; # , is omitted for the WikiPedia
  @@ -1882,22 +1889,29 @@
       $url="wiki|http|https|ftp|nntp|news|irc|telnet|mailto|file|attachment";
       if ($DBInfo->url_schemas) $url.='|'.$DBInfo->url_schemas;
       $this->urls=$url;
  -    $urlrule="((?:$url):\"[^\"]+\"[^\s$punct]*|(?:$url):([^\s$punct]|(\.?[^\s$punct]))+(?<![,\.\):;\"\'>]))";
  +    $urlrule="((?:$url):\"[^\"]+\"[^\s$punct]*|(?:$url):(?:[^\s$punct]|(\.?[^\s$punct]))+(?<![,\.\):;\"\'>]))";
       #$urlrule="((?:$url):(\.?[^\s$punct])+)";
       #$urlrule="((?:$url):[^\s$punct]+(\.?[^\s$punct]+)+\s?)";
       # solw slow slow
       #(?P<word>(?:/?[A-Z]([a-z0-9]+|[A-Z]*(?=[A-Z][a-z0-9]|\b))){2,})
       $this->wordrule=
       # single bracketed rule [http://blah.blah.com Blah Blah]
  -    "(\[\^?($url):[^\s\]]+(\s[^\]]+)?\])|".
  +    "(?:\[\^?($url):[^\s\]]+(?:\s[^\]]+)?\])|".
       # InterWiki
       # strict but slow
       #"\b(".$DBInfo->interwikirule."):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
       #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
       #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+[^\(\)<>\s\',\.:\?\!]+)|".
  -    "(\b|\^?)([A-Z][a-zA-Z]+):([^:\(\)<>\s\']?[^\s<\'\",:\?\!\010\006]*(\s(?![\x21-\x7e]))?(?<![,\.\)>]))";
  +    "(?:\b|\^?)(?:[A-Z][a-zA-Z]+):(?:[^:\(\)<>\s\']?[^\s<\'\",:\!\010\006]*(?:\s(?![\x21-\x7e]))?(?<![,\.\)>]))|".
       #"(\b|\^?)([A-Z][a-zA-Z]+):([^:\(\)<>\s\']?[^<>\s\'\",:\?\!\010\006]*(\s(?![\x21-\x7e]))?)";
       # for PR #301713
  +    #
  +    # new regex pattern for
  +    #  * double bracketted rule similar with MediaWiki [[Hello World]]
  +    #  * single bracketted words [Hello World] etc.
  +    #  * single bracketted words with double quotes ["Hello World"]
  +    #  * double bracketted words with double quotes [["Hello World"]]
  +    "(?<!\[)\!?\[(\[)$single(\")?(?:[^\[\]\",<\s'][^\[\],>]{1,255}[^\"])(?(4)\")(?(3)\])\](?!\])";
   
       if ($camelcase)
         $this->wordrule.='|'.
  @@ -1914,21 +1928,21 @@
   
       $this->wordrule.='|'.
       # double bracketed rule similar with MediaWiki [[Hello World]]
  -    "(?<!\[)\!?\[\[([^\[:,<\s'][^\[:,>]{1,255})\]\](?!\])|".
  +    #"(?<!\[)\!?\[\[([^\[:,<\s'][^\[:,>]{1,255})\]\](?!\])|".
       # bracketed with double quotes ["Hello World"]
  -    "(?<!\[)\!?\[\\\"([^\\\"]+)\\\"\](?!\])|".
  +    #"(?<!\[)\!?\[\\\"([^\\\"]+)\\\"\](?!\])|".
       # "(?<!\[)\[\\\"([^\[:,]+)\\\"\](?!\])|".
       "($urlrule)|".
       # single linkage rule ?hello ?abacus
       #"(\?[A-Z]*[a-z0-9]+)";
       "(\?[A-Za-z0-9]+)";
   
  -    if ($sbracket)
  -      # single bracketed name [Hello World]
  -      $this->wordrule.= "|(?<!\[)\!?\[([^\[,<\s'][^\[,>]{1,255})\](?!\])";
  -    else
  -      # only anchor [#hello], footnote [* note] allowed 
  -      $this->wordrule.= "|(?<!\[)\!?\[([#\*\+][^\[:,>]{1,255})\](?!\])";
  +    #if ($sbracket)
  +    #  # single bracketed name [Hello World]
  +    #  $this->_wordrule.= "|(?<!\[)\!?\[([^\[,<\s'][^\[,>]{1,255})\](?!\])";
  +    #else
  +    #  # only anchor [#hello], footnote [* note] allowed 
  +    #  $this->wordrule.= "|(?<!\[)\!?\[([#\*\+][^\[:,>]{1,255})\](?!\])";
       return $this->wordrule;
     }
   
  @@ -2063,6 +2077,7 @@
         '#singlebracket','#nosinglebracket','#rating','#norating','#nodtd');
       $pi=array();
   
  +    $update_body=false;
       $format='';
       if ( empty($this->pi['#format'])) {
         preg_match('%(:|/)%',$this->page->name,$sep);
  @@ -2088,7 +2103,7 @@
         if (!$this->page->exists()) return array();
         if ($this->pi) return $this->pi;
         $body=$this->page->get_raw_body();
  -      $update_body=1;
  +      $update_body=true;
       }
   
       if ($this->use_metadata) {
  @@ -2141,7 +2156,10 @@
       if (empty($pi['#format']) and !empty($format)) $pi['#format']=$format; // override default
       if (!isset($pi['#format'])) $pi['#format']= $Config['default_markup'];
   
  -    list($pi['#format'],$pi['args'])=explode(' ',$pi['#format'],2);
  +    if (($p = strpos($pi['#format'],' '))!== false) {
  +      $pi['args'] = substr($pi['#format'],$p+1);
  +      $pi['#format']= substr($pi['#format'],0,$p);
  +    }
   
       if ($notused) $body=join("\n",$notused)."\n".$body;
       if ($update_body) $this->page->write($body." "); # workaround XXX
  @@ -2185,6 +2203,7 @@
   
     function link_repl($url,$attr='',$opts=array()) {
       $nm = 0;
  +    $force = 0;
       if (is_array($url)) $url=$url[1];
       #if ($url[0]=='<') { print $url;return $url;}
       $url=str_replace('\"','"',$url); // XXX
  @@ -2251,10 +2270,12 @@
         break;
       }
   
  -    if (($p=strpos($url,':')) !== false and $url{$p+1}!=':') {
  +    if (($p=strpos($url,':')) !== false and isset($url{$p+1}) and $url{$p+1}!=':') {
         if ($url[0]=='a') # attachment:
           return $this->macro_repl('attachment',substr($url,11));
   
  +      $external_icon='';
  +      $external_link='';
         if ($url[0] == '^') {
           $attr.=' target="_blank" ';
           $url=substr($url,1);
  @@ -2302,25 +2323,25 @@
               $text=qualifiedUrl($this->url_prefix.'/'.$text);
             }
             if (preg_match("/^(http|ftp).*\.(png|gif|jpeg|jpg)$/i",$text)) {
  -            $atext=$atext ? $atext:$text;
  +            $atext=!empty($atext) ? $atext:$text;
               $text=str_replace('&','&amp;',$text);
               return "<a class='externalLink named' href='$link' $attr $this->external_target title='$url'><img class='external' style='border:0px' alt='$atext' src='$text' $img_attr/></a>";
             }
  -          if ($this->external_on)
  +          if (!empty($this->external_on))
               $external_link='<span class="externalLink">('.$url.')</span>';
           }
           if (substr($url,0,7)=='http://' and $url[7]=='?') {
             $link=substr($url,7);
             return "<a href='$link'>$text</a>";
           } else if ($this->check_openid_url and preg_match("@^https?://@i",$url)) {
  -          if ($this->udb->_exists($url)) {
  +          if (is_object($this->udb) and $this->udb->_exists($url)) {
               $icon='openid';
               $icon="<a class='externalLink' href='$link'><img class='url' alt='[$icon]' src='".$this->imgs_dir_url."$icon.png' /></a>";
               $attr.=' title="'.$link.'"';
               $link=$this->link_url(_rawurlencode($text));
             }
           }
  -        if (!$icon) {
  +        if (empty($icon)) {
             $icon= strtok($url,':');
             $icon="<img class='url' alt='[$icon]' src='".$this->imgs_dir_url."$icon.png' />";
           }
  @@ -2349,7 +2370,9 @@
         $url=urldecode($url);
         return "<a class='externalLink' $attr href='$link' $this->external_target>$url</a>";
       } else {
  -      if ($url[0]=="?") $url=substr($url,1);
  +      if ($url{0}=='?') {
  +          $url=substr($url,1);
  +      }
         return $this->word_repl($url,'',$attr);
       }
     }
  @@ -2411,6 +2434,7 @@
         $page=substr($page,1,-1);
   
       if ($page=='/') $page='';
  +    $sep='';
       if (substr($page,-1)==' ') {
         $sep='<b></b>'; // auto append SixSingleQuotes
         $page=rtrim($page);
  @@ -2514,6 +2538,7 @@
       global $DBInfo;
       $nonexists='nonexists_'.$this->nonexists;
   
  +    $extended = false;
       if ($word[0]=='"') {
         # ["extended wiki name"]
         # ["Hello World" Go to Hello]
  @@ -2521,13 +2546,13 @@
           $word=substr($m[1],1,-1);
           if (isset($m[5])) $text=$m[5]; // text arg ignored
         }
  -      $extended=1;
  +      $extended=true;
         $page=$word;
       } else
         #$page=preg_replace("/\s+/","",$word); # concat words
         $page=normalize($word); # concat words
   
  -    if (!$DBInfo->use_twikilink) $islink=0;
  +    if (empty($DBInfo->use_twikilink)) $islink=0;
       list($page,$page_text,$gpage)=
         normalize_word($page,$this->group,$this->page->name,$nogroup,$islink);
       if ($text) {
  @@ -2564,6 +2589,7 @@
       if ($page == $this->page->name) $attr.=' class="current"';
   
       //$url=$this->link_url(_rawurlencode($page)); # XXX
  +    $idx = 0; // XXX
       if (isset($this->pagelinks[$page])) {
         $idx=$this->pagelinks[$page];
         switch($idx) {
  @@ -2571,6 +2597,7 @@
             #return "<a class='nonexistent' href='$url'>?</a>$word";
             return call_user_func(array(&$this,$nonexists),$word,$url,$page);
           case -1:
  +          $title='';
             $tpage=urlencode($page);
             if ($tpage != $word) $title="title=\"$tpage\" ";
             return "<a href='$url' $title$attr>$word</a>";
  @@ -2586,6 +2613,7 @@
               "<tt class='sister'><a href='#sister$idx'>&#x203a;$idx</a></tt>";
         }
       } else if ($DBInfo->hasPage($page)) {
  +      $title='';
         $this->pagelinks[$page]=-1;
         $tpage=urlencode($page);
         if ($tpage != $word) $title="title=\"$tpage\" ";
  @@ -2597,16 +2625,16 @@
           return $this->link_tag(_rawurlencode($gpage),'',$this->icon['main'],'class="main"').
             "<a href='$url' $attr>$word</a>";
         }
  -      if ($this->aliases[$page]) return $this->aliases[$page];
  -      if ($this->sister_on) {
  +      if (!empty($this->aliases[$page])) return $this->aliases[$page];
  +      if (!empty($this->sister_on)) {
           $sisters=$DBInfo->metadb->getSisterSites($page, $DBInfo->use_sistersites);
           if ($sisters === true) {
             $this->pagelinks[$page]=-2;
             return "<a href='$url'>$word</a>".
               "<tt class='sister'><a href='$url'>&#x203a;</a></tt>";
           }
  -        if ($sisters) {
  -          if ($this->use_easyalias and strpos($sisters,' ') === false) {
  +        if (!empty($sisters)) {
  +          if (!empty($this->use_easyalias) and strpos($sisters,' ') === false) {
               # this is a alias
               $this->use_easyalias=0;
               $url=$this->link_repl(substr($sisters,0,-1).' '.$word.']');
  @@ -2643,6 +2671,7 @@
     }
   
     function nonexists_always($word,$url,$page) {
  +    $title='';
       if ($page != $word) $title="title=\"$page\" ";
       return "<a href='$url' $title>$word</a>";
     }
  @@ -2682,16 +2711,16 @@
       return "<a class='nonexistent' href='$url'>?</a>$word";
     }
   
  -  function head_repl($depth,$head,$attr='') {
  +  function head_repl($depth,$head,&$headinfo,$attr='') {
       $dep=$depth;
       $this->nobr=1;
   
       $head=str_replace('\"','"',$head); # revert \\" to \"
   
  -    if (!$this->depth_top) {
  -      $this->depth_top=$dep; $depth=1;
  +    if (!$headinfo['top']) {
  +      $headinfo['top']=$dep; $depth=1;
       } else {
  -      $depth=$dep - $this->depth_top + 1;
  +      $depth=$dep - $headinfo['top'] + 1;
         if ($depth <= 0) $depth=1;
       }
   
  @@ -2699,12 +2728,13 @@
   #    if ($dep==1) $depth++; # depth 1 is regarded same as depth 2
   #    $depth--;
   
  -    $num="".$this->head_num;
  -    $odepth=$this->head_dep;
  +    $num=''.$headinfo['num'];
  +    $odepth=$headinfo['dep'];
   
       if ($head[0] == '#') {
         # reset TOC numberings
  -      if ($this->toc_prefix) $this->toc_prefix++;
  +      # default prefix is empty.
  +      if (!empty($this->toc_prefix)) $this->toc_prefix++;
         else $this->toc_prefix=1;
         $head[0]=' ';
         $dum=explode(".",$num);
  @@ -2730,17 +2760,17 @@
         $num=join($dum,".");
       }
   
  -    $this->head_dep=$depth; # save old
  -    $this->head_num=$num;
  +    $headinfo['dep']=$depth; # save old
  +    $headinfo['num']=$num;
   
       $prefix=$this->toc_prefix;
       if ($this->toc)
         $head="<span class='tocnumber'><a href='#toc'>$num</a> </span>$head";
       $perma='';
  -    if ($this->perma_icon)
  +    if (!empty($this->perma_icon))
       $perma=" <a class='perma' href='#s$prefix-$num'>$this->perma_icon</a>";
   
  -    return "$close$open$edit<h$dep$attr><a id='s$prefix-$num'></a>$head$perma</h$dep>";
  +    return "$close$open<h$dep$attr><a id='s$prefix-$num'></a>$head$perma</h$dep>";
     }
   
     function include_functions()
  @@ -2754,7 +2784,7 @@
         (!empty($this->mid) ? ++$this->mid:1);
   
       preg_match("/^([A-Za-z0-9]+)(\((.*)\))?$/",$macro,$match);
  -    if (!$match) return $this->word_repl($macro);
  +    if (empty($match)) return $this->word_repl($macro);
       $bra='';$ket='';
       if ($this->wikimarkup and $macro != 'attachment' and !$options['nomarkup']) {
         $markups=str_replace(array('=','-','<'),array('==','-=','&lt;'),$macro);
  @@ -2763,30 +2793,29 @@
         $ket= '</span>';
         $options['nomarkup']=1; // for the attachment macro
       }
  -    if (!$value and $match[1] and $match[2]) { #strpos($macro,'(') !== false)) {
  -      $name=$match[1]; $args=($match[2] and !$match[3]) ? true:$match[3];
  +    if (empty($value) and isset($match[2])) { #strpos($macro,'(') !== false)) {
  +      $name=$match[1]; $args=empty($match[3]) ? true:$match[3];
       } else {
         $name=$macro; $args=$value;
       }
   
  -    $plugin=($np=getPlugin($name))?$np:$name;
  -    if (!function_exists ("macro_".$plugin)) {
  -      #if (!$np) return "[[".$name."]]";
  -      if (!$np) return $this->link_repl($name); // XXX
  -      include_once("plugin/$plugin.php");
  -      if (!function_exists ("macro_".$plugin)) return '[['.$macro.']]';
  +    if (!function_exists ('macro_'.$name)) {
  +      $np = getPlugin($name);
  +      if (empty($np)) return $this->link_repl($name);
  +      include_once('plugin/'.$np.'.php');
  +      if (!function_exists ('macro_'.$name)) return '[['.$macro.']]';
       }
   
       if ($this->_macrocache and empty($options['call']) and
  -      (isset($this->dynamic_macros[strtolower($plugin)]) or
  -      isset($this->dynamic_macros[$plugin]))) {
  -      $macro=$plugin. ($args ? '('.$args.')':'');
  +      (isset($this->dynamic_macros[strtolower($name)]) or
  +      isset($this->dynamic_macros[$name]))) {
  +      $macro=$name. ($args ? '('.$args.')':'');
         $md5sum= md5($macro);
         $this->_macros[$md5sum]=array($macro,$mid);
         return '[['.$md5sum.']]';
       }
   
  -    $ret=call_user_func_array("macro_$plugin",array(&$this,$args,&$options));
  +    $ret=call_user_func_array('macro_'.$name,array(&$this,$args,&$options));
       if (is_array($ret)) return $ret;
       return $bra.$ret.$ket;
     }
  @@ -2808,7 +2837,7 @@
       }
       if (!($f=function_exists("processor_".$processor)) and !($c=class_exists('processor_'.$processor))) {
         $pf=getProcessor($processor);
  -      if (!$pf) {
  +      if (empty($pf)) {
           $ret= call_user_func('processor_plain',$this,$value,$options);
           return $bra.$ret.$ket;
         }
  @@ -2899,7 +2928,7 @@
       $sep=$DBInfo->query_prefix;
   
       if (!$query_string) {
  -      if ($this->query_string) $query_string=$this->query_string;
  +      if (isset($this->query_string)) $query_string=$this->query_string;
       } else if ($query_string and $query_string{0}=='#') {
         $query_string= $this->self_query.$query_string;
       }
  @@ -3233,7 +3262,7 @@
     function postambles() {
       $save= $this->wikimarkup;
       $this->wikimarkup=0;
  -    if ($this->postamble) {
  +    if (!empty($this->postamble)) {
         $sz=sizeof($this->postamble);
         for ($i=0;$i<$sz;$i++) {
           $postamble=implode("\n",$this->postamble);
  @@ -3256,7 +3285,7 @@
   
     function send_page($body="",$options=array()) {
       global $DBInfo;
  -    if ($options['fixpath']) $this->_fixpath();
  +    if (!empty($options['fixpath'])) $this->_fixpath();
       // reset macro ID
       $this->mid=0;
   
  @@ -3271,15 +3300,16 @@
         }
         $this->set_wordrule($pi);
         $fts=array();
  -      if ($pi['#filter']) $fts=preg_split('/(\||,)/',$pi['#filter']);
  -      if ($this->filters) $fts=array_merge($fts,$this->filters);
  -      if ($fts) {
  +      if (isset($pi['#filter'])) $fts=preg_split('/(\||,)/',$pi['#filter']);
  +      if (!empty($this->filters)) $fts=array_merge($fts,$this->filters);
  +      if (!empty($fts)) {
           foreach ($fts as $ft) {
             $body=$this->filter_repl($ft,$body,$options);
           }
         }
  -      if ($pi['#format'] != 'wiki') {
  -        if ($pi['args']) $pi_line="#!".$pi['#format']." $pi[args]\n";
  +      if (isset($pi['#format']) and $pi['#format'] != 'wiki') {
  +        $pi_line='';
  +        if (!empty($pi['args'])) $pi_line="#!".$pi['#format']." $pi[args]\n";
           $savepi=$this->pi; // hack;;
           $this->pi=$pi;
           $text= $this->processor_repl($pi['#format'],
  @@ -3290,9 +3320,9 @@
               array(&$this,'_diff_repl'),$text);
   
           $fts=array();
  -        if ($pi['#postfilter']) $fts=preg_split('/(\||,)/',$pi['#postfilter']);
  -        if ($this->postfilters) $fts=array_merge($fts,$this->postfilters);
  -        if ($fts) {
  +        if (isset($pi['#postfilter'])) $fts=preg_split('/(\||,)/',$pi['#postfilter']);
  +        if (!empty($this->postfilters)) $fts=array_merge($fts,$this->postfilters);
  +        if (!empty($fts)) {
             foreach ($fts as $ft)
               $text=$this->postfilter_repl($ft,$text,$options);
           }
  @@ -3306,14 +3336,14 @@
         $lines=explode("\n",$body);
       } else {
         # XXX need to redesign pagelink method ?
  -      if (!$DBInfo->without_pagelinks_cache) {
  +      if (empty($DBInfo->without_pagelinks_cache)) {
           $dmt=filemtime($DBInfo->text_dir.'/.');
           $this->update_pagelinks= $dmt > $this->cache->mtime($this->page->name);
           #like as..
           #if (!$this->update_pagelinks) $this->pagelinks=$this->get_pagelinks();
         }
   
  -      if ($options['rev']) {
  +      if (isset($options['rev'])) {
           $body=$this->page->get_raw_body($options);
           $pi=$this->get_instructions($body);
         } else {
  @@ -3321,13 +3351,13 @@
           $body=$this->page->get_raw_body($options);
         }
         $this->set_wordrule($pi);
  -      if ($this->wikimarkup and $pi['raw'])
  +      if (!empty($this->wikimarkup) and !empty($pi['raw']))
           print "<span class='wikiMarkup'><!-- wiki:\n$pi[raw]\n--></span>";
   
  -      if ($this->use_rating and !$this->wikimarkup and !$pi['#norating']) {
  +      if (!empty($this->use_rating) and empty($this->wikimarkup) and empty($pi['#norating'])) {
           $this->pi=$pi;
           $old=$this->mid;
  -        if ($pi['#rating']) $rval=$pi['#rating'];
  +        if (isset($pi['#rating'])) $rval=$pi['#rating'];
           else $rval='0';
   
           print '<div class="wikiRating">'.$this->macro_repl('Rating',$rval,array('mid'=>'page'))."</div>\n";
  @@ -3335,8 +3365,8 @@
         }
   
         $fts=array();
  -      if ($pi['#filter']) $fts=preg_split('/(\||,)/',$pi['#filter']);
  -      if ($this->filters) $fts=array_merge($fts,$this->filters);
  +      if (isset($pi['#filter'])) $fts=preg_split('/(\||,)/',$pi['#filter']);
  +      if (!empty($this->filters)) $fts=array_merge($fts,$this->filters);
         if ($fts) {  
           foreach ($fts as $ft) {
             $body=$this->filter_repl($ft,$body,$options);
  @@ -3344,13 +3374,14 @@
         }
   
         $this->pi=$pi;
  -      if ($pi['#format'] != 'wiki') {
  -        if ($pi['args']) $pi_line="#!".$pi['#format']." $pi[args]\n";
  +      if (isset($pi['#format']) and $pi['#format'] != 'wiki') {
  +        $pi_line='';
  +        if (isset($pi['args'])) $pi_line="#!".$pi['#format']." $pi[args]\n";
           $text= $this->processor_repl($pi['#format'],$pi_line.$body,$options);
   
           $fts=array();
  -        if ($pi['#postfilter']) $fts=preg_split('/(\||,)/',$pi['#postfilter']);
  -        if ($this->postfilters) $fts=array_merge($fts,$this->postfilters);
  +        if (isset($pi['#postfilter'])) $fts=preg_split('/(\||,)/',$pi['#postfilter']);
  +        if (!empty($this->postfilters)) $fts=array_merge($fts,$this->postfilters);
           if ($fts) {
             foreach ($fts as $ft)
               $text=$this->postfilter_repl($ft,$text,$options);
  @@ -3359,7 +3390,7 @@
           print $this->get_javascripts();
           print $text;
   
  -        if ($DBInfo->use_tagging and isset($pi['#keywords'])) {
  +        if (!empty($DBInfo->use_tagging) and isset($pi['#keywords'])) {
             $tmp="----\n";
             if (is_string($DBInfo->use_tagging))
               $tmp.=$DBInfo->use_tagging;
  @@ -3371,13 +3402,13 @@
           return;
         }
   
  -      if ($body) {
  +      if (!empty($body)) {
           $body=rtrim($body); # delete last empty line
           $lines=explode("\n",$body);
         } else
           $lines=array();
   
  -      if ($DBInfo->use_tagging and isset($pi['#keywords'])) {
  +      if (!empty($DBInfo->use_tagging) and isset($pi['#keywords'])) {
           $lines[]="----";
           if (is_string($DBInfo->use_tagging))
             $lines[]=$DBInfo->use_tagging;
  @@ -3390,20 +3421,25 @@
         $twins=$DBInfo->metadb->getTwinPages($this->page->name,$twin_mode);
   
         if ($twins === true) {
  -        if ($DBInfo->interwiki['TwinPages']) {
  -          if ($lines) $lines[]="----";
  +        if (isset($DBInfo->interwiki['TwinPages'])) {
  +          if (!empty($lines)) $lines[]="----";
             $lines[]=sprintf(_("See %s"),"[wiki:TwinPages:".$this->page->name." "._("TwinPages")."]");
           }
  -      } else if ($twins) {
  -        if ($lines) $lines[]="----";
  -        if (sizeof($twins)>8) $twins[0]="\n".$twins[0];
  +      } else if (!empty($twins)) {
  +        if (!empty($lines)) $lines[]="----";
  +        if (sizeof($twins)>8) $twins[0]="\n".$twins[0]; // XXX
           $twins[0]=_("See [TwinPages]:").$twins[0];
           $lines=array_merge($lines,$twins);
         }
       }
   
       # have no contents
  -    if (!$lines) return;
  +    if (empty($lines)) return;
  +
  +    # for headings
  +    $headinfo['top'] = 0;
  +    $headinfo['num'] = 0;
  +    $headinfo['dep'] = 0;
   
       $text='';
       $in_p='';
  @@ -3420,12 +3456,12 @@
       $_myindlen=array(0);
       $oline='';
   
  -    $wordrule="({{{(?U)(.+)}}})|".
  -              "\[\[([A-Za-z0-9]+(\(((?<!\]\]).)*\))?)\]\]|". # macro
  -              "<<([A-Za-z0-9]+(\(((?<!\>\>).)*\))?)>>|"; # macro
  +    $wordrule="(?:{{{(?U)(?:.+)}}})|".
  +              "\[\[(?:[A-Za-z0-9]+(?:\((?:(?<!\]\]).)*\))?)\]\]|". # macro
  +              "<<(?:[A-Za-z0-9]+(?:\((?:(?<!\>\>).)*\))?)>>|"; # macro
       if ($DBInfo->inline_latex) # single line latex syntax
  -      $wordrule.="(?<=\s|^|>)\\$([^\\$]+)\\$(?=\s|\.|\,|$)|".
  -                 "(?<=\s|^|>)\\$\\$([^\\$]+)\\$\\$(?=\s|$)|";
  +      $wordrule.="(?<=\s|^|>)\\$(?:[^\\$]+)\\$(?=\s|\.|\,|$)|".
  +                 "(?<=\s|^|>)\\$\\$(?:[^\\$]+)\\$\\$(?=\s|$)|";
       #if ($DBInfo->builtin_footnote) # builtin footnote support
       $wordrule.=$this->footrule.'|';
       $wordrule.=$this->wordrule;
  @@ -3784,7 +3820,7 @@
             }
           }
   
  -        $line=$anchor.$edit.$this->head_repl(strlen($m[1]),$m[2],$attr);
  +        $line=$anchor.$edit.$this->head_repl(strlen($m[1]),$m[2],$headinfo,$attr);
           $dummy='';
           $line.=$this->_div(1,$in_div,$dummy,' id="sc-'.$this->sect_num.'"'); // for folding
           $edit='';$anchor='';
  @@ -5256,7 +5292,7 @@
               $mcache->update($pagename,serialize($_macros));
           }
         }
  -      if ($_macros) {
  +      if (!empty($_macros)) {
           $mrule=array();
           $mrepl=array();
           foreach ($_macros as $k=>$v) {
  
  
  


wkpark      2008/12/16 18:38:10

  Modified:    plugin/processor textile.php
  Log:
  version up from 2.0beta to 2.0
  do not use next() to fixup list bug with PHP5
  
  Revision  Changes    Path
  1.7       +1082 -1029moniwiki/plugin/processor/textile.php
  
  Index: textile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/textile.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- textile.php	6 Nov 2007 13:37:15 -0000	1.6
  +++ textile.php	16 Dec 2008 09:38:10 -0000	1.7
  @@ -1,49 +1,51 @@
   <?php
   // slightly modified for MoniWiki by wkpark@kldp.org
  -// $Id: textile.php,v 1.6 2007/11/06 13:37:15 wkpark Exp $
  +// $Id: textile.php,v 1.7 2008/12/16 09:38:10 wkpark Exp $
   //
   /**
  - * class Textile
  - *
  - * Class version of the original Textile 2 beta which can be found at
  - * http://www.textism.com/article/739/
  - *
  - * The original version was just a bunch of functions; since I wanted
  - * to use Textile in an OO framework, I've cleaned it up a bit (code-
  - * wise) and semi-refactored it into a PHP class. -Carlo
  - *
  - * Example: get XHTML from a given Textile-markup string ($givenstring)
  - *
  - *        $textile =& new Textile();
  - *        print $textile->TextileThis($givenstring);
  - *
  - * Example: get Textile-markup from a given XHTML string ($givenstring)
  - * Please note: This method is still work in progress.
  - *
  - *        $textile =& new Textile();
  - *        print $textile->DeTextileThis($givenstring);
  - *
    * @access		public
    * @author		Dean Allen <dean@textism.com> (Original code)
    * @author		Carlo Zottmann <carlo@g-blog.net> (Refactoring)
  + * @author		Alex Shiels http://thresholdstate.com
    * @package		Textile
    * @date		9 January, 2004
  - * @version		2.0 beta (class version)
  + * @version		2.0
  + * @depend		1.1.3
  + * @description		Textile processor
    */
   
  +/**
  + * Example: get XHTML from a given Textile-markup string ($string)
  + *
  + *        $textile = new Textile;
  + *        echo $textile->TextileThis($string);
  + *
  + */
  +
  +/*
  +$Id: textile.php,v 1.7 2008/12/16 09:38:10 wkpark Exp $
  +$LastChangedRevision: 216 $
  +*/
  +
   /*
   
  -This is Textile
  +_____________
  +T E X T I L E
  +
   A Humane Web Text Generator
   
  -Version 2.0 beta
  -8 July, 2003
  +Version 2.0
   
  -Copyright (c) 2003, Dean Allen, www.textism.com
  +Copyright (c) 2003-2004, Dean Allen <dean@textism.com>
   All rights reserved.
   
  -_______
  -LICENSE
  +Thanks to Carlo Zottmann <carlo@g-blog.net> for refactoring
  +Textile's procedural code into a class framework
  +
  +Additions and fixes Copyright (c) 2006 Alex Shiels http://thresholdstate.com/
  +
  +_____________
  +L I C E N S E
   
   Redistribution and use in source and binary forms, with or without
   modification, are permitted provided that the following conditions are met:
  @@ -71,687 +73,933 @@
   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   POSSIBILITY OF SUCH DAMAGE.
   
  -_____________
  -USING TEXTILE
  +_________
  +U S A G E
   
   Block modifier syntax:
   
  -	Header: h(1-6).
  -	Paragraphs beginning with 'hn. ' (where n is 1-6) are wrapped in header tags.
  -	Example: h1. Header... -> <h1>Header...</h1>
  -
  -	Paragraph: p. (also applied by default)
  -	Example: p. Text -> <p>Text</p>
  -
  -	Blockquote: bq.
  -	Example: bq. Block quotation... -> <blockquote>Block quotation...</blockquote>
  -
  -	Blockquote with citation: bq.:http://citation.url
  -	Example: bq.:http://textism.com/ Text...
  -	->	<blockquote cite="http://textism.com">Text...</blockquote>
  -
  -	Footnote: fn(1-100).
  -	Example: fn1. Footnote... -> <p id="fn1">Footnote...</p>
  -
  -	Numeric list: #, ##
  -	Consecutive paragraphs beginning with # are wrapped in ordered list tags.
  -	Example: <ol><li>ordered list</li></ol>
  -
  -	Bulleted list: *, **
  -	Consecutive paragraphs beginning with * are wrapped in unordered list tags.
  -	Example: <ul><li>unordered list</li></ul>
  +    Header: h(1-6).
  +    Paragraphs beginning with 'hn. ' (where n is 1-6) are wrapped in header tags.
  +    Example: h1. Header... -> <h1>Header...</h1>
  +
  +    Paragraph: p. (also applied by default)
  +    Example: p. Text -> <p>Text</p>
  +
  +    Blockquote: bq.
  +    Example: bq. Block quotation... -> <blockquote>Block quotation...</blockquote>
  +
  +    Blockquote with citation: bq.:http://citation.url
  +    Example: bq.:http://textism.com/ Text...
  +    ->  <blockquote cite="http://textism.com">Text...</blockquote>
  +
  +    Footnote: fn(1-100).
  +    Example: fn1. Footnote... -> <p id="fn1">Footnote...</p>
  +
  +    Numeric list: #, ##
  +    Consecutive paragraphs beginning with # are wrapped in ordered list tags.
  +    Example: <ol><li>ordered list</li></ol>
  +
  +    Bulleted list: *, **
  +    Consecutive paragraphs beginning with * are wrapped in unordered list tags.
  +    Example: <ul><li>unordered list</li></ul>
   
   Phrase modifier syntax:
   
  -			_emphasis_   ->   <em>emphasis</em>
  -			__italic__   ->   <i>italic</i>
  -			 *strong*   ->   <strong>strong</strong>
  -			 **bold**   ->   <b>bold</b>
  -		 ??citation??   ->   <cite>citation</cite>
  -		-deleted text-   ->   <del>deleted</del>
  -	  +inserted text+   ->   <ins>inserted</ins>
  -		^superscript^   ->   <sup>superscript</sup>
  -		  ~subscript~   ->   <sub>subscript</sub>
  -				@code@   ->   <code>computer code</code>
  -		  %(bob)span%   ->   <span class="bob">span</span>
  -
  -		==notextile==   ->   leave text alone (do not format)
  -
  -		"linktext":url   ->   <a href="url">linktext</a>
  - "linktext(title)":url   ->   <a href="url" title="title">linktext</a>
  -
  -			!imageurl!   ->   <img src="imageurl" />
  -  !imageurl(alt text)!   ->   <img src="imageurl" alt="alt text" />
  -	!imageurl!:linkurl   ->   <a href="linkurl"><img src="imageurl" /></a>
  +           _emphasis_   ->   <em>emphasis</em>
  +           __italic__   ->   <i>italic</i>
  +             *strong*   ->   <strong>strong</strong>
  +             **bold**   ->   <b>bold</b>
  +         ??citation??   ->   <cite>citation</cite>
  +       -deleted text-   ->   <del>deleted</del>
  +      +inserted text+   ->   <ins>inserted</ins>
  +        ^superscript^   ->   <sup>superscript</sup>
  +          ~subscript~   ->   <sub>subscript</sub>
  +               @code@   ->   <code>computer code</code>
  +          %(bob)span%   ->   <span class="bob">span</span>
  +
  +        ==notextile==   ->   leave text alone (do not format)
  +
  +       "linktext":url   ->   <a href="url">linktext</a>
  + "linktext(title)":url  ->   <a href="url" title="title">linktext</a>
  +
  +           !imageurl!   ->   <img src="imageurl" />
  +  !imageurl(alt text)!  ->   <img src="imageurl" alt="alt text" />
  +    !imageurl!:linkurl  ->   <a href="linkurl"><img src="imageurl" /></a>
   
  -ABC(Always Be Closing)   ->   <acronym title="Always Be Closing">ABC</acronym>
  +ABC(Always Be Closing)  ->   <acronym title="Always Be Closing">ABC</acronym>
   
   
   Table syntax:
   
  -	Simple tables:
  +    Simple tables:
   
  -		|a|simple|table|row|
  -		|And|Another|table|row|
  +        |a|simple|table|row|
  +        |And|Another|table|row|
   
  -		|_. A|_. table|_. header|_.row|
  -		|A|simple|table|row|
  +        |_. A|_. table|_. header|_.row|
  +        |A|simple|table|row|
   
  -	Tables with attributes:
  +    Tables with attributes:
   
  -		table{border:1px solid black}.
  -		{background:#ddd;color:red}. |{}| | | |
  +        table{border:1px solid black}.
  +        {background:#ddd;color:red}. |{}| | | |
   
   
   Applying Attributes:
   
  -	Most anywhere Textile code is used, attributes such as arbitrary css style,
  -	css classes, and ids can be applied. The syntax is fairly consistent.
  +    Most anywhere Textile code is used, attributes such as arbitrary css style,
  +    css classes, and ids can be applied. The syntax is fairly consistent.
   
  -	The following characters quickly alter the alignment of block elements:
  +    The following characters quickly alter the alignment of block elements:
   
  -		<  ->  left align	ex. p<. left-aligned para
  -		>  ->  right align	  h3>. right-aligned header 3
  -		=  ->  centred		  h4=. centred header 4
  -		<> ->  justified		p<>. justified paragraph
  +        <  ->  left align    ex. p<. left-aligned para
  +        >  ->  right align       h3>. right-aligned header 3
  +        =  ->  centred           h4=. centred header 4
  +        <> ->  justified         p<>. justified paragraph
   
  -	These will change vertical alignment in table cells:
  +    These will change vertical alignment in table cells:
   
  -		^  ->  top		 ex. |^. top-aligned table cell|
  -		-  ->  middle		  |-. middle aligned|
  -		~  ->  bottom		  |~. bottom aligned cell|
  +        ^  ->  top         ex. |^. top-aligned table cell|
  +        -  ->  middle          |-. middle aligned|
  +        ~  ->  bottom          |~. bottom aligned cell|
   
  -	Plain (parentheses) inserted between block syntax and the closing dot-space
  -	indicate classes and ids:
  +    Plain (parentheses) inserted between block syntax and the closing dot-space
  +    indicate classes and ids:
   
  -		p(hector). paragraph -> <p class="hector">paragraph</p>
  +        p(hector). paragraph -> <p class="hector">paragraph</p>
   
  -		p(#fluid). paragraph -> <p id="fluid">paragraph</p>
  +        p(#fluid). paragraph -> <p id="fluid">paragraph</p>
   
  -		(classes and ids can be combined)
  -		p(hector#fluid). paragraph -> <p class="hector" id="fluid">paragraph</p>
  +        (classes and ids can be combined)
  +        p(hector#fluid). paragraph -> <p class="hector" id="fluid">paragraph</p>
   
  -	Curly {brackets} insert arbitrary css style
  +    Curly {brackets} insert arbitrary css style
   
  -		p{line-height:18px}. paragraph -> <p style="line-height:18px">paragraph</p>
  +        p{line-height:18px}. paragraph -> <p style="line-height:18px">paragraph</p>
   
  -		h3{color:red}. header 3 -> <h3 style="color:red">header 3</h3>
  +        h3{color:red}. header 3 -> <h3 style="color:red">header 3</h3>
   
  -	Square [brackets] insert language attributes
  +    Square [brackets] insert language attributes
   
  -		p[no]. paragraph -> <p lang="no">paragraph</p>
  +        p[no]. paragraph -> <p lang="no">paragraph</p>
   
  -		%[fr]phrase% -> <span lang="fr">phrase</span>
  +        %[fr]phrase% -> <span lang="fr">phrase</span>
   
  -	Usually Textile block element syntax requires a dot and space before the block
  -	begins, but since lists don't, they can be styled just using braces
  +    Usually Textile block element syntax requires a dot and space before the block
  +    begins, but since lists don't, they can be styled just using braces
   
  -		#{color:blue} one  ->  <ol style="color:blue">
  -		# big				  <li>one</li>
  -		# list				 <li>big</li>
  -								<li>list</li>
  -							  </ol>
  +        #{color:blue} one  ->  <ol style="color:blue">
  +        # big                   <li>one</li>
  +        # list                  <li>big</li>
  +                                <li>list</li>
  +                               </ol>
   
  -	Using the span tag to style a phrase
  +    Using the span tag to style a phrase
   
  -		It goes like this, %{color:red}the fourth the fifth%
  -		-> It goes like this, <span style="color:red">the fourth the fifth</span>
  +        It goes like this, %{color:red}the fourth the fifth%
  +              -> It goes like this, <span style="color:red">the fourth the fifth</span>
   
   */
   
  +// define these before including this file to override the standard glyphs
  +@define('txt_quote_single_open',  '&#8216;');
  +@define('txt_quote_single_close', '&#8217;');
  +@define('txt_quote_double_open',  '&#8220;');
  +@define('txt_quote_double_close', '&#8221;');
  +@define('txt_apostrophe',         '&#8217;');
  +@define('txt_prime',              '&#8242;');
  +@define('txt_prime_double',       '&#8243;');
  +@define('txt_ellipsis',           '&#8230;');
  +@define('txt_emdash',             '&#8212;');
  +@define('txt_endash',             '&#8211;');
  +@define('txt_dimension',          '&#215;');
  +@define('txt_trademark',          '&#8482;');
  +@define('txt_registered',         '&#174;');
  +@define('txt_copyright',          '&#169;');
  +
   class processor_textile
   {
  -	var $hlgn;
  -	var $vlgn;
  -	var $clas;
  -	var $lnge;
  -	var $styl;
  -	var $cspn;
  -	var $rspn;
  -	var $a;
  -	var $s;
  -	var $c;
  -	var $pnct;
  -
  -	/**
  -     	 * return processor info
  -     	 */
  -    	function info()
  -	{
  -     		return array(
  -        		'author'  => 'Dean Allen <dean@textism.com>',
  -        		'date'    => '2004-01-09',
  -        		'name'    => 'Textile',
  -        		'desc'    => 'Textile Procssor',
  -        		'url'     => 'MoniWiki:TextileProcessor',
  -			'version' => substr('$Revision: 1.6 $',1,-1),
  -			'depend'  => '1.1.3',
  -			'license' => 'BSD style',
  -      		);
  -    	}
  -
  -	function processor_textile($formatter,$options=array())
  -	{
  -		global $Config;
  -        	$this->charset=$Config['charset'] ? $Config['charset']:'UTF-8';
  -		$this->formatter=&$formatter; // not used yet
  -
  -		$this->hlgn = "(?:\<(?!>)|(?<!<)\>|\<\>|\=|[()]+)";
  -		$this->vlgn = "[\-^~]";
  -		$this->clas = "(?:\([^)]+\))";
  -		$this->lnge = "(?:\[[^]]+\])";
  -		$this->styl = "(?:\{[^}]+\})";
  -		$this->cspn = "(?:\\\\\d+)";
  -		$this->rspn = "(?:\/\d+)";
  -		$this->a = "(?:{$this->hlgn}?{$this->vlgn}?|{$this->vlgn}?{$this->hlgn}?)";
  -		$this->s = "(?:{$this->cspn}?{$this->rspn}?|{$this->rspn}?{$this->cspn}?)";
  -		$this->c = "(?:{$this->clas}?{$this->styl}?{$this->lnge}?|{$this->styl}?{$this->lnge}?{$this->clas}?|{$this->lnge}?{$this->styl}?{$this->clas}?)";
  -		$this->pnct = '[\!"#\$%&\'()\*\+,\-\./:;<=>\?@\[\\\]\^_`{\|}\~]';
  -	}
  -
  -	/**
  -	 * main processor
  -	 */
  -	function process($text, $options=array())
  -	{
  -        	if ($text[0]=='#' and $text[1]=='!')
  -            		list($line,$text)=explode("\n",$text,2);
  -		$lite=$options['lite'];
  -
  -		#if (get_magic_quotes_gpc() == 1)
  -		#	$text = stripslashes($text);
  -
  -		$text = $this->incomingEntities($text);
  -		$text = $this->encodeEntities($text);
  -		$text = $this->fixEntities($text);
  -		$text = $this->cleanWhiteSpace($text);
  -
  -		$text = $this->getRefs($text);
  -
  -		$text = $this->noTextile($text);
  -		$text = $this->image($text);
  -		$text = $this->links($text);
  -		$text = $this->code($text);
  -		$text = $this->span($text);
  -		$text = $this->superscript($text);
  -		$text = $this->footnoteRef($text);
  -		$text = $this->glyphs($text);
  -		$text = $this->retrieve($text);
  -
  -		if ($lite == '')
  -		{
  -			$text = $this->lists($text);
  -			$text = $this->table($text);
  -			$text = $this->block($text);
  -		}
  -
  -		/* clean up <notextile> */
  -		$text = preg_replace('/<\/?notextile>/', "", $text);
  -
  -		/* turn the temp char back to an ampersand entity */
  -		$text = str_replace("x%x%", "&#38;", $text);
  -
  -		$text = str_replace("<br />", "<br />\n", $text);
  -
  -		return trim($text);
  -	}
  -	// -------------------------------------------------------------
  -	function pba($in, $element = "") // "parse block attributes"
  -	{
  -		$style = '';
  -		$class = '';
  -		$language = '';
  -		$colspan = '';
  -		$rowspan = '';
  -		$id = '';
  -		$atts = '';
  -
  -		if (!empty($in))
  -		{
  -			$matched = $in;
  -			if ($element == 'td')
  -			{
  -				if (preg_match("/\\\\(\d+)/", $matched, $csp)) $colspan = $csp[1];
  -				if (preg_match("/\/(\d+)/", $matched, $rsp)) $rowspan = $rsp[1];
  -
  -				if (preg_match("/($this->vlgn)/", $matched, $vert))
  -					$style[] = "vertical-align:" . $this->vAlign($vert[1]) . ";";
  -			}
  -
  -			if (preg_match("/\{([^}]*)\}/", $matched, $sty))
  -			{
  -				$style[] = $sty[1] . ';';
  -				$matched = str_replace($sty[0], '', $matched);
  -			}
  -
  -			if (preg_match("/\[([^)]+)\]/U", $matched, $lng))
  -			{
  -				$language = $lng[1];
  -				$matched = str_replace($lng[0], '', $matched);
  -			}
  -
  -			if (preg_match("/\(([^()]+)\)/U", $matched, $cls))
  -			{
  -				$class = $cls[1];
  -				$matched = str_replace($cls[0], '', $matched);
  -			}
  -
  -			if (preg_match("/([(]+)/", $matched, $pl))
  -			{
  -				$style[] = "padding-left:" . strlen($pl[1]) . "em;";
  -				$matched = str_replace($pl[0], '', $matched);
  -			}
  -			if (preg_match("/([)]+)/", $matched, $pr))
  -			{
  -				//dump($pr);
  -				$style[] = "padding-right:" . strlen($pr[1]) . "em;";
  -				$matched = str_replace($pr[0], '', $matched);
  -			}
  -
  -			if (preg_match("/($this->hlgn)/", $matched, $horiz))
  -				$style[] = "text-align:" . $this->hAlign($horiz[1]) . ";";
  -
  -			if (preg_match("/^(.*)#(.*)$/", $class, $ids))
  -			{
  -				$id = $ids[2];
  -				$class = $ids[1];
  -			}
  -
  -			if ($style) $atts .= ' style="' . join("", $style) . '"';
  -			if ($class) $atts .= ' class="' . $class . '"';
  -			if ($language) $atts .= ' lang="' . $language . '"';
  -			if ($id) $atts .= ' id="' . $id . '"';
  -			if ($colspan) $atts .= ' colspan="' . $colspan . '"';
  -			if ($rowspan) $atts .= ' rowspan="' . $rowspan . '"';
  -
  -			return $atts;
  -		}
  -		else
  -		{
  -			return '';
  -		}
  -	}
  -	// -------------------------------------------------------------
  -	function table($text)
  -	{
  -		$text = $text . "\n\n";
  -		return preg_replace_callback("/^(?:table(_?{$this->s}{$this->a}{$this->c})\. ?\n)?^({$this->a}{$this->c}\.? ?\|.*\|)\n\n/smU", array(&$this, "fTable"), $text);
  -	}
  -	// -------------------------------------------------------------
  -	function fTable($matches)
  -	{
  -		$tatts = $this->pba($matches[1], 'table');
  -
  -		foreach(preg_split("/\|$/m", $matches[2], -1, PREG_SPLIT_NO_EMPTY) as $row)
  -		{
  -			if (preg_match("/^($this->a$this->c\. )(.*)/m", $row, $rmtch))
  -			{
  -				$ratts = $this->pba($rmtch[1], 'tr');
  -				$row = $rmtch[2];
  -			}
  -			else $ratts = '';
  -
  -			foreach(explode("|", $row) as $cell)
  -			{
  -				$ctyp = "d";
  -				if (preg_match("/^_/", $cell)) $ctyp = "h";
  -				if (preg_match("/^(_?$this->s$this->a$this->c\. )(.*)/", $cell, $cmtch))
  -				{
  -					$catts = $this->pba($cmtch[1], 'td');
  -					$cell = $cmtch[2];
  -				}
  -				else $catts = '';
  -
  -				if (trim($cell) != '')
  -					$cells[] = "\t\t\t<t$ctyp$catts>$cell</t$ctyp>";
  -			}
  -			$rows[] = "\t\t<tr$ratts>\n" . join("\n", $cells) . "\n\t\t</tr>";
  -			unset($cells, $catts);
  -		}
  -		return "\t<table$tatts>\n" . join("\n", $rows) . "\n\t</table>\n\n";
  -	}
  -	// -------------------------------------------------------------
  -	function lists($text)
  -	{
  -		return preg_replace_callback("/^([#*]+$this->c .*)$(?![^#*])/smU", array(&$this, "fList"), $text);
  -	}
  -	// -------------------------------------------------------------
  -	function fList($m)
  -	{
  -		$text = explode("\n", $m[0]);
  -		foreach($text as $line)
  -		{
  -			$nextline = next($text);
  -			if (preg_match("/^([#*]+)($this->a$this->c) (.*)$/s", $line, $m))
  -			{
  -				list(, $tl, $atts, $content) = $m;
  -				$nl = preg_replace("/^([#*]+)\s.*/", "$1", $nextline);
  -				if (!isset($lists[$tl]))
  -				{
  -					$lists[$tl] = true;
  -					$atts = $this->pba($atts);
  -					$line = "\t<" . $this->lT($tl) . "l$atts>\n\t<li>" . $content;
  -				}
  -				else
  -				{
  -					$line = "\t\t<li>" . $content;
  -				}
  -
  -				if ($nl === $tl)
  -				{
  -					$line .= "</li>";
  -				} elseif ($nl == "*" or $nl == "#")
  -				{
  -					$line .= "</li>\n\t</" . $this->lT($tl) . "l>\n\t</li>";
  -					unset($lists[$tl]);
  -				}
  -				if (!$nl)
  -				{
  -					foreach($lists as $k => $v)
  -					{
  -						$line .= "</li>\n\t</" . $this->lT($k) . "l>";
  -						unset($lists[$k]);
  -					}
  -				}
  -			}
  -			$out[] = $line;
  -		}
  -		return join("\n", $out);
  -	}
  -	// -------------------------------------------------------------
  -	function lT($in)
  -	{
  -		return preg_match("/^#+/", $in) ? 'o' : 'u';
  -	}
  -	// -------------------------------------------------------------
  -	function block($text)
  -	{
  -		$pre = false;
  -		$find = array('bq', 'h[1-6]', 'fn\d+', 'p');
  -
  -		$text = preg_replace("/(.+)\n(?![#*\s|])/",
  -			"$1<br />", $text);
  -
  -		$text = explode("\n", $text);
  -		array_push($text, " ");
  -
  -		foreach($text as $line)
  -		{
  -			if (preg_match('/<pre>/i', $line))
  -			{
  -				$pre = true;
  -			}
  -			foreach($find as $tag)
  -			{
  -				$line = ($pre == false)
  -				? preg_replace_callback("/^($tag)($this->a$this->c)\.(?::(\S+))? (.*)$/",
  -					array(&$this, "fBlock"), $line)
  -				: $line;
  -			}
  -
  -			$line = preg_replace('/^(?!\t|<\/?pre|<\/?code|$| )(.*)/', "\t<p>$1</p>", $line);
  -
  -			$line = ($pre == true) ? str_replace("<br />", "\n", $line):$line;
  -			if (preg_match('/<\/pre>/i', $line))
  -			{
  -				$pre = false;
  -			}
  -
  -			$out[] = $line;
  -		}
  -		return join("\n", $out);
  -	}
  -	// -------------------------------------------------------------
  -	function fBlock($m)
  -	{
  -		// dump($m);
  -		list(, $tag, $atts, $cite, $content) = $m;
  -
  -		$atts = $this->pba($atts);
  -
  -		if (preg_match("/fn(\d+)/", $tag, $fns))
  -		{
  -			$tag = 'p';
  -			$atts .= ' id="fn' . $fns[1] . '"';
  -			$content = '<sup>' . $fns[1] . '</sup> ' . $content;
  -		}
  -
  -		$start = "\t<$tag";
  -		$end = "</$tag>";
  -
  -		if ($tag == "bq")
  -		{
  -			$cite = $this->checkRefs($cite);
  -			$cite = ($cite != '') ? ' cite="' . $cite . '"' : '';
  -			$start = "\t<blockquote$cite>\n\t\t<p";
  -			$end = "</p>\n\t</blockquote>";
  -		}
  -
  -		return "$start$atts>$content$end";
  -	}
  -	// -------------------------------------------------------------
  -	function span($text)
  -	{
  -		$qtags = array('\*\*', '\*', '\?\?', '-', '__', '_', '%', '\+', '~');
  -
  -		foreach($qtags as $f)
  -		{
  -			$text = preg_replace_callback("/(?<=^|\s|\>|[[:punct:]]|[{(\[])
  -				($f)
  -				($this->c)
  -				(?::(\S+))?
  -				(\w.+\w)
  -				([[:punct:]]*)
  -				$f
  -				(?=[])}]|[[:punct:]]+|\s|$)
  -			/xmU", array(&$this, "fSpan"), $text);
  -		}
  -		return $text;
  -	}
  -	// -------------------------------------------------------------
  -	function fSpan($m)
  -	{
  -		// dump($m);
  -		$qtags = array('*' => 'b',
  -			'**' => 'strong',
  -			'??' => 'cite',
  -			'_' => 'em',
  -			'__' => 'i',
  -			'-' => 'del',
  -			'%' => 'span',
  -			'+' => 'ins',
  -			'~' => 'sub');
  -
  -		list(, $tag, $atts, $cite, $content, $end) = $m;
  -		$tag = $qtags[$tag];
  -		$atts = $this->pba($atts);
  -		$atts .= ($cite != '') ? 'cite="' . $cite . '"' : '';
  +    var $hlgn;
  +    var $vlgn;
  +    var $clas;
  +    var $lnge;
  +    var $styl;
  +    var $cspn;
  +    var $rspn;
  +    var $a;
  +    var $s;
  +    var $c;
  +    var $pnct;
  +    var $rel;
  +    var $fn;
  +    
  +    var $shelf = array();
  +    var $restricted = false;
  +    var $noimage = false;
  +    var $lite = false;
  +    var $url_schemes = array();
  +    var $glyph = array();
  +    var $hu = '';
  +    
  +    var $ver = '2.0.0';
  +    var $rev = '$Rev: 216 $';
  +
  +// -------------------------------------------------------------
  +    function processor_textile($formatter,$options=array())
  +    {
  +        global $Config;
  + 	$this->charset=$Config['charset'] ? $Config['charset']:'UTF-8';
  +        $this->formatter=&$formatter; // not used yet
  +
  +        $this->hlgn = "(?:\<(?!>)|(?<!<)\>|\<\>|\=|[()]+(?! ))";
  +        $this->vlgn = "[\-^~]";
  +        $this->clas = "(?:\([^)]+\))";
  +        $this->lnge = "(?:\[[^]]+\])";
  +        $this->styl = "(?:\{[^}]+\})";
  +        $this->cspn = "(?:\\\\\d+)";
  +        $this->rspn = "(?:\/\d+)";
  +        $this->a = "(?:{$this->hlgn}|{$this->vlgn})*";
  +        $this->s = "(?:{$this->cspn}|{$this->rspn})*";
  +        $this->c = "(?:{$this->clas}|{$this->styl}|{$this->lnge}|{$this->hlgn})*";
  +
  +        $this->pnct = '[\!"#\$%&\'()\*\+,\-\./:;<=>\?@\[\\\]\^_`{\|}\~]';
  +        $this->urlch = '[\w"$\-_.+!*\'(),";\/?:@=&%#{}|\\^~\[\]`]';
  +
  +        $this->url_schemes = array('http','https','ftp','mailto');
  +
  +        $this->btag = array('bq', 'bc', 'notextile', 'pre', 'h[1-6]', 'fn\d+', 'p');
  +
  +        $this->glyph = array(
  +           'quote_single_open'  => txt_quote_single_open,
  +           'quote_single_close' => txt_quote_single_close,
  +           'quote_double_open'  => txt_quote_double_open,
  +           'quote_double_close' => txt_quote_double_close,
  +           'apostrophe'         => txt_apostrophe,
  +           'prime'              => txt_prime,
  +           'prime_double'       => txt_prime_double,
  +           'ellipsis'           => txt_ellipsis,
  +           'emdash'             => txt_emdash,
  +           'endash'             => txt_endash,
  +           'dimension'          => txt_dimension,
  +           'trademark'          => txt_trademark,
  +           'registered'         => txt_registered,
  +           'copyright'          => txt_copyright,
  +        );
  +
  +        if (defined('hu'))
  +            $this->hu = hu;
  +
  +    }
  +
  +// -------------------------------------------------------------
  +    /**
  +     * main processor
  +     */
  +    function process($text, $options=array())
  +    //function TextileThis($text, $lite='', $encode='', $noimage='', $strict='', $rel='')
  +    {
  +        if ($text[0]=='#' and $text[1]=='!')
  +            list($line,$text)=explode("\n",$text,2);
  +
  +        $lite=isset($options['lite']) ? $options['lite']:'';
  +        $noimage=isset($options['noimage']) ? $options['noimage']:'';
  +        $rel=isset($options['rel']) ? $options['rel']:'';
  +        if (!empty($options['restrict']))
  +            return $this->TextileRestricted($text, $lite, $noimage, $rel);
  +
  +
  +        if ($rel)
  +           $this->rel = ' rel="'.$rel.'" ';
  +        $this->lite = $lite;
  +        $this->noimage = $noimage;
  +
  +        if ($encode) {
  +            $text = $this->incomingEntities($text);
  +            $text = str_replace("x%x%", "&#38;", $text);
  +            return $text;
  +        } else {
  +
  +            if(!$strict) {
  +                $text = $this->cleanWhiteSpace($text);
  +            }
  +
  +            $text = $this->getRefs($text);
  +
  +            if (!$lite) {
  +                $text = $this->block($text);
  +            }
  +
  +            $text = $this->retrieve($text);
  +
  +                // just to be tidy
  +            $text = str_replace("<br />", "<br />\n", $text);
  +
  +            return $text;
  +        }
  +    }
  +
  +// -------------------------------------------------------------
  +    function TextileRestricted($text, $lite=1, $noimage=1, $rel='nofollow')
  +    {
  +        $this->restricted = true;
  +        $this->lite = $lite;
  +        $this->noimage = $noimage;
  +        if ($rel)
  +           $this->rel = ' rel="'.$rel.'" ';
  +
  +            // escape any raw html
  +            $text = $this->encode_html($text, 0);
  +
  +            $text = $this->cleanWhiteSpace($text);
  +            $text = $this->getRefs($text);
  +
  +            if ($lite) {
  +                $text = $this->blockLite($text);
  +            }
  +            else {
  +                $text = $this->block($text);
  +            }
  +
  +            $text = $this->retrieve($text);
  +
  +                // just to be tidy
  +            $text = str_replace("<br />", "<br />\n", $text);
  +
  +            return $text;
  +    }
  +
  +// -------------------------------------------------------------
  +    function pba($in, $element = "") // "parse block attributes"
  +    {
  +        $style = '';
  +        $class = '';
  +        $lang = '';
  +        $colspan = '';
  +        $rowspan = '';
  +        $id = '';
  +        $atts = '';
  +
  +        if (!empty($in)) {
  +            $matched = $in;
  +            if ($element == 'td') {
  +                if (preg_match("/\\\\(\d+)/", $matched, $csp)) $colspan = $csp[1];
  +                if (preg_match("/\/(\d+)/", $matched, $rsp)) $rowspan = $rsp[1];
  +            }
  +
  +            if ($element == 'td' or $element == 'tr') {
  +                if (preg_match("/($this->vlgn)/", $matched, $vert))
  +                    $style[] = "vertical-align:" . $this->vAlign($vert[1]) . ";";
  +            }
  +
  +            if (preg_match("/\{([^}]*)\}/", $matched, $sty)) {
  +                $style[] = rtrim($sty[1], ';') . ';';
  +                $matched = str_replace($sty[0], '', $matched);
  +            }
  +
  +            if (preg_match("/\[([^]]+)\]/U", $matched, $lng)) {
  +                $lang = $lng[1];
  +                $matched = str_replace($lng[0], '', $matched);
  +            }
  +
  +            if (preg_match("/\(([^()]+)\)/U", $matched, $cls)) {
  +                $class = $cls[1];
  +                $matched = str_replace($cls[0], '', $matched);
  +            }
  +
  +            if (preg_match("/([(]+)/", $matched, $pl)) {
  +                $style[] = "padding-left:" . strlen($pl[1]) . "em;";
  +                $matched = str_replace($pl[0], '', $matched);
  +            }
  +
  +            if (preg_match("/([)]+)/", $matched, $pr)) {
  +                // $this->dump($pr);
  +                $style[] = "padding-right:" . strlen($pr[1]) . "em;";
  +                $matched = str_replace($pr[0], '', $matched);
  +            }
  +
  +            if (preg_match("/($this->hlgn)/", $matched, $horiz))
  +                $style[] = "text-align:" . $this->hAlign($horiz[1]) . ";";
  +
  +            if (preg_match("/^(.*)#(.*)$/", $class, $ids)) {
  +                $id = $ids[2];
  +                $class = $ids[1];
  +            }
  +
  +            if ($this->restricted)
  +                return ($lang)    ? ' lang="'    . $lang            .'"':'';
  +
  +            return join('',array(
  +                ($style)   ? ' style="'   . join("", $style) .'"':'',
  +                ($class)   ? ' class="'   . $class           .'"':'',
  +                ($lang)    ? ' lang="'    . $lang            .'"':'',
  +                ($id)      ? ' id="'      . $id              .'"':'',
  +                ($colspan) ? ' colspan="' . $colspan         .'"':'',
  +                ($rowspan) ? ' rowspan="' . $rowspan         .'"':''
  +            ));
  +        }
  +        return '';
  +    }
  +
  +// -------------------------------------------------------------
  +    function hasRawText($text)
  +    {
  +        // checks whether the text has text not already enclosed by a block tag
  +        $r = trim(preg_replace('@<(p|blockquote|div|form|table|ul|ol|pre|h\d)[^>]*?>.*</\1>@s', '', trim($text)));
  +        $r = trim(preg_replace('@<(hr|br)[^>]*?/>@', '', $r));
  +        return '' != $r;
  +    }
  +
  +// -------------------------------------------------------------
  +    function table($text)
  +    {
  +        $text = $text . "\n\n";
  +        return preg_replace_callback("/^(?:table(_?{$this->s}{$this->a}{$this->c})\. ?\n)?^({$this->a}{$this->c}\.? ?\|.*\|)\n\n/smU",
  +           array(&$this, "fTable"), $text);
  +    }
  +
  +// -------------------------------------------------------------
  +    function fTable($matches)
  +    {
  +        $tatts = $this->pba($matches[1], 'table');
  +
  +        foreach(preg_split("/\|$/m", $matches[2], -1, PREG_SPLIT_NO_EMPTY) as $row) {
  +            if (preg_match("/^($this->a$this->c\. )(.*)/m", ltrim($row), $rmtch)) {
  +                $ratts = $this->pba($rmtch[1], 'tr');
  +                $row = $rmtch[2];
  +            } else $ratts = '';
  +
  +                $cells = array();
  +            foreach(explode("|", $row) as $cell) {
  +                $ctyp = "d";
  +                if (preg_match("/^_/", $cell)) $ctyp = "h";
  +                if (preg_match("/^(_?$this->s$this->a$this->c\. )(.*)/", $cell, $cmtch)) {
  +                    $catts = $this->pba($cmtch[1], 'td');
  +                    $cell = $cmtch[2];
  +                } else $catts = '';
  +
  +                $cell = $this->graf($this->span($cell));
  +
  +                if (trim($cell) != '')
  +                    $cells[] = "\t\t\t<t$ctyp$catts>$cell</t$ctyp>";
  +            }
  +            $rows[] = "\t\t<tr$ratts>\n" . join("\n", $cells) . ($cells ? "\n" : "") . "\t\t</tr>";
  +            unset($cells, $catts);
  +        }
  +        return "\t<table$tatts>\n" . join("\n", $rows) . "\n\t</table>\n\n";
  +    }
  +
  +// -------------------------------------------------------------
  +    function lists($text)
  +    {
  +        return preg_replace_callback("/^([#*]+$this->c .*)$(?![^#*])/smU", array(&$this, "fList"), $text);
  +    }
  +
  +// -------------------------------------------------------------
  +    function fList($m)
  +    {
  +        $text = explode("\n", $m[0]);
  +        $sz = sizeof($text);
  +        for($i=0;$i<$sz;$i++) {
  +        //foreach($text as $line) { // not working for PHP5.x
  +            //$nextline = next($text);
  +            $line = $text[$i];
  +            $nextline = $text[$i+1];
  +            if (preg_match("/^([#*]+)($this->a$this->c) (.*)$/s", $line, $m)) {
  +                list(, $tl, $atts, $content) = $m;
  +                $nl = '';
  +                if (preg_match("/^([#*]+)\s.*/", $nextline, $nm))
  +                	$nl = $nm[1];
  +                if (!isset($lists[$tl])) {
  +                    $lists[$tl] = true;
  +                    $atts = $this->pba($atts);
  +                    $line = "\t<" . $this->lT($tl) . "l$atts>\n\t\t<li>" . $this->graf($content);
  +                } else {
  +                    $line = "\t\t<li>" . $this->graf($content);
  +                }
  +
  +                if(strlen($nl) <= strlen($tl)) $line .= "</li>";
  +                foreach(array_reverse($lists) as $k => $v) {
  +                    if(strlen($k) > strlen($nl)) {
  +                        $line .= "\n\t</" . $this->lT($k) . "l>";
  +                        if(strlen($k) > 1)
  +                            $line .= "</li>";
  +                        unset($lists[$k]);
  +                    }
  +                }
  +            }
  +            $out[] = $line;
  +        }
  +        return join("\n", $out);
  +    }
  +
  +// -------------------------------------------------------------
  +    function lT($in)
  +    {
  +        return preg_match("/^#+/", $in) ? 'o' : 'u';
  +    }
  +
  +// -------------------------------------------------------------
  +    function doPBr($in)
  +    {
  +        return preg_replace_callback('@<(p)([^>]*?)>(.*)(</\1>)@s', array(&$this, 'doBr'), $in);
  +    }
  +
  +// -------------------------------------------------------------
  +    function doBr($m)
  +    {
  +        $content = preg_replace("@(.+)(?<!<br>|<br />)\n(?![#*\s|])@", '$1<br />', $m[3]);
  +        return '<'.$m[1].$m[2].'>'.$content.$m[4];
  +    }
  +
  +// -------------------------------------------------------------
  +    function block($text)
  +    {
  +        $find = $this->btag;
  +        $tre = join('|', $find);
  +
  +        $text = explode("\n\n", $text);
  +
  +        $tag = 'p';
  +        $atts = $cite = $graf = $ext  = '';
  +
  +        foreach($text as $line) {
  +            $anon = 0;
  +            if (preg_match("/^($tre)($this->a$this->c)\.(\.?)(?::(\S+))? (.*)$/s", $line, $m)) {
  +                // last block was extended, so close it
  +                if ($ext)
  +                    $out[count($out)-1] .= $c1;
  +                // new block
  +                list(,$tag,$atts,$ext,$cite,$graf) = $m;
  +                list($o1, $o2, $content, $c2, $c1) = $this->fBlock(array(0,$tag,$atts,$ext,$cite,$graf));
  +
  +                // leave off c1 if this block is extended, we'll close it at the start of the next block
  +                if ($ext)
  +                    $line = $o1.$o2.$content.$c2;
  +                else
  +                    $line = $o1.$o2.$content.$c2.$c1;
  +            }
  +            else {
  +                // anonymous block
  +                $anon = 1;
  +                if ($ext or !preg_match('/^ /', $line)) {
  +                    list($o1, $o2, $content, $c2, $c1) = $this->fBlock(array(0,$tag,$atts,$ext,$cite,$line));
  +                    // skip $o1/$c1 because this is part of a continuing extended block
  +                    if ($tag == 'p' and !$this->hasRawText($content)) {
  +                        $line = $content;
  +                    }
  +                    else {
  +                        $line = $o2.$content.$c2;
  +                    }
  +                }
  +                else {
  +                   $line = $this->graf($line);
  +                }
  +            }
  +
  +            $line = $this->doPBr($line);
  +            $line = preg_replace('/<br>/', '<br />', $line);
  +
  +            if ($ext and $anon)
  +                $out[count($out)-1] .= "\n".$line;
  +            else
  +                $out[] = $line;
  +
  +            if (!$ext) {
  +                $tag = 'p';
  +                $atts = '';
  +                $cite = '';
  +                $graf = '';
  +            }
  +        }
  +        if ($ext) $out[count($out)-1] .= $c1;
  +        return join("\n\n", $out);
  +    }
  +
  +
  +
  +// -------------------------------------------------------------
  +    function fBlock($m)
  +    {
  +        // $this->dump($m);
  +        list(, $tag, $atts, $ext, $cite, $content) = $m;
  +        $atts = $this->pba($atts);
  +
  +        $o1 = $o2 = $c2 = $c1 = '';
  +
  +        if (preg_match("/fn(\d+)/", $tag, $fns)) {
  +            $tag = 'p';
  +            $fnid = empty($this->fn[$fns[1]]) ? $fns[1] : $this->fn[$fns[1]];
  +            $atts .= ' id="fn' . $fnid . '"';
  +            if (strpos($atts, 'class=') === false)
  +                $atts .= ' class="footnote"';
  +            $content = '<sup>' . $fns[1] . '</sup> ' . $content;
  +        }
  +
  +        if ($tag == "bq") {
  +            $cite = $this->checkRefs($cite);
  +            $cite = ($cite != '') ? ' cite="' . $cite . '"' : '';
  +            $o1 = "\t<blockquote$cite$atts>\n";
  +            $o2 = "\t\t<p$atts>";
  +            $c2 = "</p>";
  +            $c1 = "\n\t</blockquote>";
  +        }
  +        elseif ($tag == 'bc') {
  +            $o1 = "<pre$atts>";
  +            $o2 = "<code$atts>";
  +            $c2 = "</code>";
  +            $c1 = "</pre>";
  +            $content = $this->shelve($this->encode_html(rtrim($content, "\n")."\n"));
  +        }
  +        elseif ($tag == 'notextile') {
  +            $content = $this->shelve($content);
  +            $o1 = $o2 = '';
  +            $c1 = $c2 = '';
  +        }
  +        elseif ($tag == 'pre') {
  +            $content = $this->shelve($this->encode_html(rtrim($content, "\n")."\n"));
  +            $o1 = "<pre$atts>";
  +            $o2 = $c2 = '';
  +            $c1 = "</pre>";
  +        }
  +        else {
  +            $o2 = "\t<$tag$atts>";
  +            $c2 = "</$tag>";
  +          }
  +
  +        $content = $this->graf($content);
  +
  +        return array($o1, $o2, $content, $c2, $c1);
  +    }
  +
  +// -------------------------------------------------------------
  +    function graf($text)
  +    {
  +        // handle normal paragraph text
  +        if (!$this->lite) {
  +            $text = $this->noTextile($text);
  +            $text = $this->code($text);
  +        }
  +
  +        $text = $this->links($text);
  +        if (!$this->noimage)
  +            $text = $this->image($text);
  +
  +        if (!$this->lite) {
  +            $text = $this->lists($text);
  +            $text = $this->table($text);
  +        }
  +
  +        $text = $this->span($text);
  +        $text = $this->footnoteRef($text);
  +        $text = $this->glyphs($text);
  +        return rtrim($text, "\n");
  +    }
  +
  +// -------------------------------------------------------------
  +    function span($text)
  +    {
  +        $qtags = array('\*\*','\*','\?\?','-','__','_','%','\+','~','\^');
  +        $pnct = ".,\"'?!;:";
  +
  +        foreach($qtags as $f) {
  +            $text = preg_replace_callback("/
  +                (?:^|(?<=[\s>$pnct])|([{[]))
  +                ($f)(?!$f)
  +                ({$this->c})
  +                (?::(\S+))?
  +                ([^\s$f]+|\S[^$f\n]*[^\s$f\n])
  +                ([$pnct]*)
  +                $f
  +                (?:$|([\]}])|(?=[[:punct:]]{1,2}|\s))
  +            /x", array(&$this, "fSpan"), $text);
  +        }
  +        return $text;
  +    }
  +
  +// -------------------------------------------------------------
  +    function fSpan($m)
  +    {
  +        $qtags = array(
  +            '*'  => 'strong',
  +            '**' => 'b',
  +            '??' => 'cite',
  +            '_'  => 'em',
  +            '__' => 'i',
  +            '-'  => 'del',
  +            '%'  => 'span',
  +            '+'  => 'ins',
  +            '~'  => 'sub',
  +            '^'  => 'sup',
  +        );
  +
  +        list(,, $tag, $atts, $cite, $content, $end) = $m;
  +        $tag = $qtags[$tag];
  +        $atts = $this->pba($atts);
  +        $atts .= ($cite != '') ? 'cite="' . $cite . '"' : '';
  +
  +        $out = "<$tag$atts>$content$end</$tag>";
  +
  +//      $this->dump($out);
  +
  +        return $out;
  +
  +    }
  +
  +// -------------------------------------------------------------
  +    function links($text)
  +    {
  +        return preg_replace_callback('/
  +            (?:^|(?<=[\s>.$pnct\(])|([{[])) # $pre
  +            "                            # start
  +            (' . $this->c . ')           # $atts
  +            ([^"]+)                      # $text
  +            \s?
  +            (?:\(([^)]+)\)(?="))?        # $title
  +            ":
  +            ('.$this->urlch.'+)          # $url
  +            (\/)?                        # $slash
  +            ([^\w\/;]*)                  # $post
  +            (?:([\]}])|(?=\s|$|\)))
  +        /Ux', array(&$this, "fLink"), $text);
  +    }
  +
  +// -------------------------------------------------------------
  +    function fLink($m)
  +    {
  +        list(, $pre, $atts, $text, $title, $url, $slash, $post) = $m;
  +
  +        $url = $this->checkRefs($url);
  +
  +        $atts = $this->pba($atts);
  +        $atts .= ($title != '') ? ' title="' . $this->encode_html($title) . '"' : '';
  +
  +        if (!$this->noimage)
  +            $text = $this->image($text);
  +
  +        $text = $this->span($text);
  +        $text = $this->glyphs($text);
  +
  +        $url = $this->relURL($url);
  +
  +        $out = '<a href="' . $this->encode_html($url . $slash) . '"' . $atts . $this->rel . '>' . $text . '</a>' . $post;
  +
  +        // $this->dump($out);
  +        return $this->shelve($out);
  +
  +    }
  +
  +// -------------------------------------------------------------
  +    function getRefs($text)
  +    {
  +        return preg_replace_callback("/(?<=^|\s)\[(.+)\]((?:http:\/\/|\/)\S+)(?=\s|$)/U",
  +            array(&$this, "refs"), $text);
  +    }
  +
  +// -------------------------------------------------------------
  +    function refs($m)
  +    {
  +        list(, $flag, $url) = $m;
  +        $this->urlrefs[$flag] = $url;
  +        return '';
  +    }
  +
  +// -------------------------------------------------------------
  +    function checkRefs($text)
  +    {
  +        return (isset($this->urlrefs[$text])) ? $this->urlrefs[$text] : $text;
  +    }
  +
  +// -------------------------------------------------------------
  +    function relURL($url)
  +    {
  +        $parts = parse_url($url);
  +        if ((empty($parts['scheme']) or @$parts['scheme'] == 'http') and
  +             empty($parts['host']) and
  +             preg_match('/^\w/', @$parts['path']))
  +            $url = $this->hu.$url;
  +        if ($this->restricted and !empty($parts['scheme']) and
  +              !in_array($parts['scheme'], $this->url_schemes))
  +            return '#';
  +        return $url;
  +    }
  +
  +// -------------------------------------------------------------
  +    function image($text)
  +    {
  +        return preg_replace_callback("/
  +            (?:[[{])?          # pre
  +            \!                 # opening !
  +            (\<|\=|\>)??       # optional alignment atts
  +            ($this->c)         # optional style,class atts
  +            (?:\. )?           # optional dot-space
  +            ([^\s(!]+)         # presume this is the src
  +            \s?                # optional space
  +            (?:\(([^\)]+)\))?  # optional title
  +            \!                 # closing
  +            (?::(\S+))?        # optional href
  +            (?:[\]}]|(?=\s|$)) # lookahead: space or end of string
  +        /Ux", array(&$this, "fImage"), $text);
  +    }
  +
  +// -------------------------------------------------------------
  +    function fImage($m)
  +    {
  +        list(, $algn, $atts, $url) = $m;
  +        $atts  = $this->pba($atts);
  +        $atts .= ($algn != '')  ? ' align="' . $this->iAlign($algn) . '"' : '';
  +        $atts .= (isset($m[4])) ? ' title="' . $m[4] . '"' : '';
  +        $atts .= (isset($m[4])) ? ' alt="'   . $m[4] . '"' : ' alt=""';
  +        $size = @getimagesize($url);
  +        if ($size) $atts .= " $size[3]";
  +
  +        $href = (isset($m[5])) ? $this->checkRefs($m[5]) : '';
  +        $url = $this->checkRefs($url);
  +
  +        $url = $this->relURL($url);
  +
  +        $out = array(
  +            ($href) ? '<a href="' . $href . '">' : '',
  +            '<img src="' . $url . '"' . $atts . ' />',
  +            ($href) ? '</a>' : ''
  +        );
  +
  +        return join('',$out);
  +    }
  +
  +// -------------------------------------------------------------
  +    function code($text)
  +    {
  +        $text = $this->doSpecial($text, '<code>', '</code>', 'fCode');
  +        $text = $this->doSpecial($text, '@', '@', 'fCode');
  +        $text = $this->doSpecial($text, '<pre>', '</pre>', 'fPre');
  +        return $text;
  +    }
  +
  +// -------------------------------------------------------------
  +    function fCode($m)
  +    {
  +      @list(, $before, $text, $after) = $m;
  +      if ($this->restricted)
  +          // $text is already escaped
  +            return $before.$this->shelve('<code>'.$text.'</code>').$after;
  +      else
  +            return $before.$this->shelve('<code>'.$this->encode_html($text).'</code>').$after;
  +    }
  +
  +// -------------------------------------------------------------
  +    function fPre($m)
  +    {
  +      @list(, $before, $text, $after) = $m;
  +      if ($this->restricted)
  +          // $text is already escaped
  +            return $before.'<pre>'.$this->shelve($text).'</pre>'.$after;
  +      else
  +            return $before.'<pre>'.$this->shelve($this->encode_html($text)).'</pre>'.$after;
  +    }
  +// -------------------------------------------------------------
  +    function shelve($val)
  +    {
  +        $i = uniqid(rand());
  +        $this->shelf[$i] = $val;
  +        return $i;
  +    }
  +
  +// -------------------------------------------------------------
  +    function retrieve($text)
  +    {
  +        if (is_array($this->shelf))
  +            do {
  +                $old = $text;
  +                $text = strtr($text, $this->shelf);
  +             } while ($text != $old);
  +
  +        return $text;
  +    }
  +
  +// -------------------------------------------------------------
  +// NOTE: deprecated
  +    function incomingEntities($text)
  +    {
  +        return preg_replace("/&(?![#a-z0-9]+;)/i", "x%x%", $text);
  +    }
  +
  +// -------------------------------------------------------------
  +// NOTE: deprecated
  +    function encodeEntities($text)
  +    {
  +        return (function_exists('mb_encode_numericentity'))
  +        ?    $this->encode_high($text)
  +        :    htmlentities($text, ENT_NOQUOTES, "utf-8");
  +    }
  +
  +// -------------------------------------------------------------
  +// NOTE: deprecated
  +    function fixEntities($text)
  +    {
  +        /*  de-entify any remaining angle brackets or ampersands */
  +        return str_replace(array("&gt;", "&lt;", "&amp;"),
  +            array(">", "<", "&"), $text);
  +    }
  +
  +// -------------------------------------------------------------
  +    function cleanWhiteSpace($text)
  +    {
  +        $out = str_replace("\r\n", "\n", $text);
  +        $out = preg_replace("/\n{3,}/", "\n\n", $out);
  +        $out = preg_replace("/\n *\n/", "\n\n", $out);
  +        $out = preg_replace('/"$/', "\" ", $out);
  +        return $out;
  +    }
  +
  +// -------------------------------------------------------------
  +    function doSpecial($text, $start, $end, $method='fSpecial')
  +    {
  +      return preg_replace_callback('/(^|\s|[[({>])'.preg_quote($start, '/').'(.*?)'.preg_quote($end, '/').'(\s|$|[\])}])?/ms',
  +            array(&$this, $method), $text);
  +    }
  +
  +// -------------------------------------------------------------
  +    function fSpecial($m)
  +    {
  +        // A special block like notextile or code
  +      @list(, $before, $text, $after) = $m;
  +        return $before.$this->shelve($this->encode_html($text)).$after;
  +    }
  +
  +// -------------------------------------------------------------
  +    function noTextile($text)
  +    {
  +         $text = $this->doSpecial($text, '<notextile>', '</notextile>', 'fTextile');
  +         return $this->doSpecial($text, '==', '==', 'fTextile');
  +
  +    }
  +
  +// -------------------------------------------------------------
  +    function fTextile($m)
  +    {
  +        @list(, $before, $notextile, $after) = $m;
  +        #$notextile = str_replace(array_keys($modifiers), array_values($modifiers), $notextile);
  +        return $before.$this->shelve($notextile).$after;
  +    }
  +
  +// -------------------------------------------------------------
  +    function footnoteRef($text)
  +    {
  +        return preg_replace('/\b\[([0-9]+)\](\s)?/Ue',
  +            '$this->footnoteID(\'\1\',\'\2\')', $text);
  +    }
  +
  +// -------------------------------------------------------------
  +    function footnoteID($id, $t)
  +    {
  +        if (empty($this->fn[$id]))
  +            $this->fn[$id] = uniqid(rand());
  +        $fnid = $this->fn[$id];
  +        return '<sup class="footnote"><a href="#fn'.$fnid.'">'.$id.'</a></sup>'.$t;
  +    }
   
  -		return "<$tag$atts>$content$end</$tag>";
  -	}
  -	// -------------------------------------------------------------
  -	function links($text)
  -	{
  -		return preg_replace_callback('/
  -			([\s[{(]|[[:punct:]])?		# $pre
  -			"							# start
  -			(' . $this->c . ')				# $atts
  -			([^"]+)						# $text
  -			\s?
  -			(?:\(([^)]+)\)(?="))?		# $title
  -			":
  -			(\S+\b)						# $url
  -			(\/)?						# $slash
  -			([^\w\/;]*)					# $post
  -			(?=\s|$)
  -		/Ux', array(&$this, "fLink"), $text);
  -	}
  -	// -------------------------------------------------------------
  -	function fLink($m)
  -	{
  -		list(, $pre, $atts, $text, $title, $url, $slash, $post) = $m;
  -
  -		$url = $this->checkRefs($url);
  -
  -		$atts = $this->pba($atts);
  -		$atts .= ($title != '') ? ' title="' . $title . '"' : '';
  -
  -		$atts = ($atts != '') ? $this->shelve($atts) : '';
  -
  -		return $pre . '<a href="' . $url . $slash . '"' . $atts . '>' . $text . '</a>' . $post;
  -	}
  -	// -------------------------------------------------------------
  -	function getRefs($text)
  -	{
  -		return preg_replace_callback("/(?<=^|\s)\[(.+)\]((?:http:\/\/|\/)\S+)(?=\s|$)/U",
  -			array(&$this, "refs"), $text);
  -	}
  -	// -------------------------------------------------------------
  -	function refs($m)
  -	{
  -		list(, $flag, $url) = $m;
  -		$this->urlrefs[$flag] = $url;
  -		return '';
  -	}
  -	// -------------------------------------------------------------
  -	function checkRefs($text)
  -	{
  -		return (isset($this->urlrefs[$text])) ? $this->urlrefs[$text] : $text;
  -	}
  -	// -------------------------------------------------------------
  -	function image($text)
  -	{
  -		return preg_replace_callback("/
  -			\!				  # opening
  -			(\<|\=|\>)?		 # optional alignment atts
  -			($this->c)				# optional style,class atts
  -			(?:\. )?			# optional dot-space
  -			([^\s(!]+)		  # presume this is the src
  -			\s?				 # optional space
  -			(?:\(([^\)]+)\))?	# optional title
  -			\!				  # closing
  -			(?::(\S+))?		 # optional href
  -			(?=\s|$)			# lookahead: space or end of string
  -		/Ux", array(&$this, "fImage"), $text);
  -	}
  -	// -------------------------------------------------------------
  -	function fImage($m)
  -	{
  -		list(, $algn, $atts, $url) = $m;
  -		$atts = $this->pba($atts);
  -		$atts .= ($algn != '') ? ' align="' . $this->iAlign($algn) . '"' : '';
  -		$atts .= (isset($m[4])) ? ' title="' . $m[4] . '"' : '';
  -		$atts .= (isset($m[4])) ? ' alt="' . $m[4] . '"' : ' alt=""';
  -		$size = @getimagesize($url);
  -		if ($size) $atts .= " $size[3]";
  -
  -		$href = (isset($m[5])) ? $this->checkRefs($m[5]) : '';
  -		$url = $this->checkRefs($url);
  -
  -		$out = '';
  -		$out .= ($href != '') ? '<a href="' . $href . '">' : '';
  -		$out .= '<img src="' . $url . '"' . $atts . ' />';
  -		$out .= ($href != '') ? '</a>' : '';
  -
  -		return $out;
  -	}
  -	// -------------------------------------------------------------
  -	function code($text)
  -	{
  -		return preg_replace_callback("/
  -			(?:^|(?<=[\s\(])|([[{]))		# 1 open bracket?
  -			@								# opening
  -			(?:\|(\w+)\|)?				  # 2 language
  -			(.+)							# 3 code
  -			@								# closing
  -			(?:$|([\]}])|
  -			(?=[[:punct:]]{1,2}|
  -			\s))							# 4 closing bracket?
  -		/Ux", array(&$this, "fCode"), $text);
  -	}
  -	// -------------------------------------------------------------
  -	function fCode($m)
  -	{
  -		list(, $before, $lang, $code, $after) = $m;
  -		$lang = ($lang != '') ? ' language="' . $lang . '"' : '';
  -		return $before . '<code' . $lang . '>' . $code . '</code>' . $after;
  -	}
  -	// -------------------------------------------------------------
  -	function shelve($val)
  -	{
  -		$this->shelf[] = $val;
  -		return ' <' . count($this->shelf) . '>';
  -	}
  -	// -------------------------------------------------------------
  -	function retrieve($text)
  -	{
  -		$i = 0;
  -		if (is_array($this->shelf))
  -		{
  -			foreach($this->shelf as $r)
  -			{
  -				$i++;
  -				$text = str_replace("<$i>", $r, $text);
  -			}
  -		}
  -		return $text;
  -	}
  -	// -------------------------------------------------------------
  -	function incomingEntities($text)
  -	{
  -		/*  turn any incoming ampersands into a dummy character for now.
  -			This uses a negative lookahead for alphanumerics followed by a semicolon,
  -			implying an incoming html entity, to be skipped */
  -
  -		return preg_replace("/&(?![#a-z0-9]+;)/i", "x%x%", $text);
  -	}
  -	// -------------------------------------------------------------
  -	function encodeEntities($text)
  -	{
  -		/*  Convert high and low ascii to entities. If multibyte string functions are
  -			available (on by default in php 4.3+), we convert using unicode mapping as
  -			defined in the function encode_high(). If not, we use php's nasty
  -			built-in htmlentities() */
  -
  -		return (function_exists('mb_encode_numericentity'))
  -		? $this->encode_high($text,$this->charset)
  -		: htmlentities($text, ENT_NOQUOTES,$this->charset);
  -	}
  -	// -------------------------------------------------------------
  -	function fixEntities($text)
  -	{
  -		/*  de-entify any remaining angle brackets or ampersands */
  -		return str_replace(array("&gt;", "&lt;", "&amp;"),
  -			array(">", "<", "&"), $text);
  -	}
  -	// -------------------------------------------------------------
  -	function cleanWhiteSpace($text)
  -	{
  -		$out = str_replace(array("\r\n", "\t"), array("\n", ''), $text);
  -		$out = preg_replace("/\n{3,}/", "\n\n", $out);
  -		$out = preg_replace("/\n *\n/", "\n\n", $out);
  -		$out = preg_replace('/"$/', "\" ", $out);
  -		return $out;
  -	}
  -	// -------------------------------------------------------------
  -	function noTextile($text)
  -	{
  -		return preg_replace('/(^|\s)==(.*)==(\s|$)?/msU',
  -			'$1<notextile>$2</notextile>$3', $text);
  -	}
  -	// -------------------------------------------------------------
  -	function superscript($text)
  -	{
  -		return preg_replace('/\^(.*)\^/mU', '<sup>$1</sup>', $text);
  -	}
  -	// -------------------------------------------------------------
  -	function footnoteRef($text)
  -	{
  -		return preg_replace('/\b\[([0-9]+)\](\s)?/U',
  -			'<sup><a href="#fn$1">$1</a></sup>$2', $text);
  -	}
  -	// -------------------------------------------------------------
  -	function glyphs($text)
  +// -------------------------------------------------------------
  +	function glyphs($text) /* old function work! */
   	{
   		// fix: hackish
   		$text = preg_replace('/"\z/', "\" ", $text);
  @@ -819,370 +1067,175 @@
   			return join('', $glyph_out);
   		}
   	}
  -	// -------------------------------------------------------------
  -	function iAlign($in)
  -	{
  -		$vals = array('<' => 'left',
  -			'=' => 'center',
  -			'>' => 'right');
  -		return (isset($vals[$in])) ? $vals[$in] : '';
  -	}
  -	// -------------------------------------------------------------
  -	function hAlign($in)
  -	{
  -		$vals = array('<' => 'left',
  -			'=' => 'center',
  -			'>' => 'right',
  -			'<>' => 'justify');
  -		return (isset($vals[$in])) ? $vals[$in] : '';
  -	}
  -	// -------------------------------------------------------------
  -	function vAlign($in)
  -	{
  -		$vals = array('^' => 'top',
  -			'-' => 'middle',
  -			'~' => 'bottom');
  -		return (isset($vals[$in])) ? $vals[$in] : '';
  -	}
  -	// -------------------------------------------------------------
  -	function encode_high($text, $charset = "UTF-8")
  -	{
  -		$cmap = $this->cmap($charet);
  -		return mb_encode_numericentity($text, $cmap, $charset);
  -	}
  -	// -------------------------------------------------------------
  -	function decode_high($text, $charset = "UTF-8")
  -	{
  -		$cmap = $this->cmap($charet);
  -		return mb_decode_numericentity($text, $cmap, $charset);
  -	}
  -	// -------------------------------------------------------------
  -	function cmap($charset = "UTF-8")
  -	{
  -		$f = 0xffff;
  +    function _glyphs($text) /* new but not work correctly */
  +    {
  +        // fix: hackish
  +        $text = preg_replace('/"\z/', "\" ", $text);
  +        $pnc = '[[:punct:]]';
  +
  +        $glyph_search = array(
  +            '/(\w)\'(\w)/',                                      // apostrophe's
  +            '/(\s)\'(\d+\w?)\b(?!\')/',                          // back in '88
  +            '/(\S)\'(?=\s|'.$pnc.'|<|$)/',                       //  single closing
  +            '/\'/',                                              //  single opening
  +            '/(\S)\"(?=\s|'.$pnc.'|<|$)/',                       //  double closing
  +            '/"/',                                               //  double opening
  +            '/\b([A-Z][A-Z0-9]{2,})\b(?:[(]([^)]*)[)])/',        //  3+ uppercase acronym
  +            '/\b([A-Z][A-Z\'\-]+[A-Z])(?=[\s.,\)>])/',           //  3+ uppercase
  +            '/\b( )?\.{3}/',                                     //  ellipsis
  +            '/(\s?)--(\s?)/',                                    //  em dash
  +            '/\s-(?:\s|$)/',                                     //  en dash
  +            '/(\d+)( ?)x( ?)(?=\d+)/',                           //  dimension sign
  +            '/\b ?[([]TM[])]/i',                                 //  trademark
  +            '/\b ?[([]R[])]/i',                                  //  registered
  +            '/\b ?[([]C[])]/i',                                  //  copyright
  +         );
  +
  +        extract($this->glyph, EXTR_PREFIX_ALL, 'txt');
  +
  +        $glyph_replace = array(
  +            '$1'.$txt_apostrophe.'$2',           // apostrophe's
  +            '$1'.$txt_apostrophe.'$2',           // back in '88
  +            '$1'.$txt_quote_single_close,        //  single closing
  +            $txt_quote_single_open,              //  single opening
  +            '$1'.$txt_quote_double_close,        //  double closing
  +            $txt_quote_double_open,              //  double opening
  +            '<acronym title="$2">$1</acronym>',  //  3+ uppercase acronym
  +            '<span class="caps">$1</span>',      //  3+ uppercase
  +            '$1'.$txt_ellipsis,                  //  ellipsis
  +            '$1'.$txt_emdash.'$2',               //  em dash
  +            ' '.$txt_endash.' ',                 //  en dash
  +            '$1$2'.$txt_dimension.'$3',          //  dimension sign
  +            $txt_trademark,                      //  trademark
  +            $txt_registered,                     //  registered
  +            $txt_copyright,                      //  copyright
  +         );
  +
  +         $text = preg_split("/(<.*>)/U", $text, -1, PREG_SPLIT_DELIM_CAPTURE);
  +         foreach($text as $line) {
  +             if (!preg_match("/<.*>/", $line)) {
  +                 $line = preg_replace($glyph_search, $glyph_replace, $line);
  +             }
  +              $glyph_out[] = $line;
  +         }
  +         return join('', $glyph_out);
  +    }
  +
  +// -------------------------------------------------------------
  +    function iAlign($in)
  +    {
  +        $vals = array(
  +            '<' => 'left',
  +            '=' => 'center',
  +            '>' => 'right');
  +        return (isset($vals[$in])) ? $vals[$in] : '';
  +    }
  +
  +// -------------------------------------------------------------
  +    function hAlign($in)
  +    {
  +        $vals = array(
  +            '<'  => 'left',
  +            '='  => 'center',
  +            '>'  => 'right',
  +            '<>' => 'justify');
  +        return (isset($vals[$in])) ? $vals[$in] : '';
  +    }
  +
  +// -------------------------------------------------------------
  +    function vAlign($in)
  +    {
  +        $vals = array(
  +            '^' => 'top',
  +            '-' => 'middle',
  +            '~' => 'bottom');
  +        return (isset($vals[$in])) ? $vals[$in] : '';
  +    }
  +
  +// -------------------------------------------------------------
  +// NOTE: deprecated
  +    function encode_high($text, $charset = "UTF-8")
  +    {
  +        return mb_encode_numericentity($text, $this->cmap($charet), $charset);
  +    }
  +
  +// -------------------------------------------------------------
  +// NOTE: deprecated
  +    function decode_high($text, $charset = "UTF-8")
  +    {
  +        return mb_decode_numericentity($text, $this->cmap($charet), $charset);
  +    }
  +
  +// -------------------------------------------------------------
  +// NOTE: deprecated
  +    function cmap($charset='UTF-8')
  +    {
  +        if (strtolower($charset)=='euc-kr')
  +            return array(0xac00, 0xd7a3, 0, $f); /* for euc-kr */
  +        $f = 0xffff;
  +        $cmap = array(
  +            0x0080, 0xffff, 0, $f);
  +        return $cmap;
  +    }
  +
  +// -------------------------------------------------------------
  +    function encode_html($str, $quotes=1)
  +    {
  +        $a = array(
  +            '&' => '&#38;',
  +            '<' => '&#60;',
  +            '>' => '&#62;',
  +        );
  +        if ($quotes) $a = $a + array(
  +            "'" => '&#39;',
  +            '"' => '&#34;',
  +        );
  +
  +        return strtr($str, $a);
  +    }
  +
  +// -------------------------------------------------------------
  +    function textile_popup_help($name, $helpvar, $windowW, $windowH)
  +    {
  +        return ' <a target="_blank" href="http://www.textpattern.com/help/?item=' . $helpvar . '" onclick="window.open(this.href, \'popupwindow\', \'width=' . $windowW . ',height=' . $windowH . ',scrollbars,resizable\'); return false;">' . $name . '</a><br />';
  +
  +        return $out;
  +    }
  +
  +// -------------------------------------------------------------
  +// NOTE: deprecated
  +    function txtgps($thing)
  +    {
  +        if (isset($_POST[$thing])) {
  +            if (get_magic_quotes_gpc()) {
  +                return stripslashes($_POST[$thing]);
  +            }
  +            else {
  +                return $_POST[$thing];
  +            }
  +        }
  +        else {
  +            return '';
  +        }
  +    }
  +
  +// -------------------------------------------------------------
  +// NOTE: deprecated
  +    function dump()
  +    {
  +        foreach (func_get_args() as $a)
  +            echo "\n<pre>",(is_array($a)) ? print_r($a) : $a, "</pre>\n";
  +    }
  +
  +// -------------------------------------------------------------
  +
  +    function blockLite($text)
  +    {
  +        $this->btag = array('bq', 'p');
  +        return $this->block($text."\n\n");
  +    }
   
  -		if (strtolower($charset)=='euc-kr')
  -    			return array(0xac00, 0xd7a3, 0, $f); /* for euc-kr */
  -		$cmap = array(160, 255, 0, $f,
  -			402, 402, 0, $f,
  -			913, 929, 0, $f,
  -			931, 937, 0, $f,
  -			945, 969, 0, $f,
  -			977, 978, 0, $f,
  -			982, 982, 0, $f,
  -			8226, 8226, 0, $f,
  -			8230, 8230, 0, $f,
  -			8242, 8243, 0, $f,
  -			8254, 8254, 0, $f,
  -			8260, 8260, 0, $f,
  -			8465, 8465, 0, $f,
  -			8472, 8472, 0, $f,
  -			8476, 8476, 0, $f,
  -			8482, 8482, 0, $f,
  -			8501, 8501, 0, $f,
  -			8592, 8596, 0, $f,
  -			8629, 8629, 0, $f,
  -			8656, 8660, 0, $f,
  -			8704, 8704, 0, $f,
  -			8706, 8707, 0, $f,
  -			8709, 8709, 0, $f,
  -			8711, 8713, 0, $f,
  -			8715, 8715, 0, $f,
  -			8719, 8719, 0, $f,
  -			8721, 8722, 0, $f,
  -			8727, 8727, 0, $f,
  -			8730, 8730, 0, $f,
  -			8733, 8734, 0, $f,
  -			8736, 8736, 0, $f,
  -			8743, 8747, 0, $f,
  -			8756, 8756, 0, $f,
  -			8764, 8764, 0, $f,
  -			8773, 8773, 0, $f,
  -			8776, 8776, 0, $f,
  -			8800, 8801, 0, $f,
  -			8804, 8805, 0, $f,
  -			8834, 8836, 0, $f,
  -			8838, 8839, 0, $f,
  -			8853, 8853, 0, $f,
  -			8855, 8855, 0, $f,
  -			8869, 8869, 0, $f,
  -			8901, 8901, 0, $f,
  -			8968, 8971, 0, $f,
  -			9001, 9002, 0, $f,
  -			9674, 9674, 0, $f,
  -			9824, 9824, 0, $f,
  -			9827, 9827, 0, $f,
  -			9829, 9830, 0, $f,
  -			338, 339, 0, $f,
  -			352, 353, 0, $f,
  -			376, 376, 0, $f,
  -			710, 710, 0, $f,
  -			732, 732, 0, $f,
  -			8194, 8195, 0, $f,
  -			8201, 8201, 0, $f,
  -			8204, 8207, 0, $f,
  -			8211, 8212, 0, $f,
  -			8216, 8218, 0, $f,
  -			8218, 8218, 0, $f,
  -			8220, 8222, 0, $f,
  -			8224, 8225, 0, $f,
  -			8240, 8240, 0, $f,
  -			8249, 8250, 0, $f,
  -			8364, 8364, 0, $f);
  -		return $cmap;
  -	}
  -	// -------------------------------------------------------------
  -	function textile_popup_help($name, $helpvar, $windowW, $windowH)
  -	{
  -		return ' <a target="_blank" href="http://www.textpattern.com/help/?item=' . $helpvar . '" onclick="window.open(this.href, \'popupwindow\', \'width=' . $windowW . ',height=' . $windowH . ',scrollbars,resizable\'); return false;">' . $name . '</a><br />';
   
  -		return $out;
  -	}
  -	// -------------------------------------------------------------
  -	function txtgps($thing)
  -	{
  -		if (isset($_POST[$thing]))
  -		{
  -			if (get_magic_quotes_gpc() == 1)
  -			{
  -				return stripslashes($_POST[$thing]);
  -			}
  -			else
  -			{
  -				return $_POST[$thing];
  -			}
  -		}
  -		else
  -		{
  -			return '';
  -		}
  -	}
  -	// -------------------------------------------------------------
  -	// The following functions are used to detextile html, a process
  -	// still in development.
  -	// -------------------------------------------------------------
  -	function DeTextileThis($text)
  -	{
  -		$text = preg_replace("/<br \/>\s*/", "\n", $text);
  -
  -		$oktags = array('p', 'ol', 'ul', 'li', 'i', 'b', 'em', 'strong', 'span', 'a', 'h[1-6]',
  -			'table', 'tr', 'td', 'u', 'del', 'sup', 'sub', 'blockquote');
  -
  -		foreach($oktags as $tag)
  -		{
  -			$text = preg_replace_callback("/\t*<(" . $tag . ")\s*([^>]*)>(.*)<\/\\1>/Usi",
  -				array(&$this, "processTag"), $text);
  -		}
  -
  -		$glyphs = array('&#8217;' => '\'', // single closing
  -			'&#8216;' => '\'', // single opening
  -			'&#8221;' => '"', // double closing
  -			'&#8220;' => '"', // double opening
  -			'&#8212;' => '--', // em dash
  -			'&#8211;' => ' - ', // en dash
  -			'&#215;' => 'x', // dimension sign
  -			'&#8482;' => '(TM)', // trademark
  -			'&#174;' => '(R)', // registered
  -			'&#169;' => '(C)', // copyright
  -			'&#8230;' => '...' // ellipsis
  -			);
  -
  -		foreach($glyphs as $f => $r)
  -		{
  -			$text = str_replace($f, $r, $text);
  -		}
  -
  -		$list = false;
  -
  -		$text = preg_split("/(<.*>)/U", $text, -1, PREG_SPLIT_DELIM_CAPTURE);
  -		foreach($text as $line)
  -		{
  -			if ($list == false && preg_match('/<ol/', $line))
  -			{
  -				$line = "";
  -				$list = "o";
  -			}
  -			else if (preg_match('/<\/ol/', $line))
  -			{
  -				$line = "";
  -				$list = false;
  -			}
  -			else if ($list == false && preg_match('/<ul/', $line))
  -			{
  -				$line = "";
  -				$list = "u";
  -			}
  -			else if (preg_match('/<\/ul/', $line))
  -			{
  -				$line = "";
  -				$list = false;
  -			}
  -			else if ($list == 'o')
  -			{
  -				$line = preg_replace('/<li.*>/U', '# ', $line);
  -			}
  -			else if ($list == 'u')
  -			{
  -				$line = preg_replace('/<li.*>/U', '* ', $line);
  -			}
  -			$glyph_out[] = $line;
  -		}
  -
  -		$text = implode('', $glyph_out);
  -
  -		$text = preg_replace('/^\t* *p\. /m', '', $text);
  -
  -		return $this->decode_high($text,$this->charset);
  -	}
  -	// -------------------------------------------------------------
  -	function processTag($matches)
  -	{
  -		list($all, $tag, $atts, $content) = $matches;
  -		$a = $this->splat($atts);
  -		// dump($tag); dump($content); dump($a);
  -		$phr = array('em' => '_',
  -			'i' => '__',
  -			'b' => '**',
  -			'strong' => '*',
  -			'cite' => '??',
  -			'del' => '-',
  -			'ins' => '+',
  -			'sup' => '^',
  -			'sub' => '~',
  -			'span' => '%');
  -
  -		$blk = array('p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6');
  -
  -		if (isset($phr[$tag]))
  -		{
  -			return $phr[$tag] . sci($a) . $content . $phr[$tag];
  -		} elseif ($tag == 'blockquote')
  -		{
  -			return 'bq.' . $this->sci($a) . ' ' . $content;
  -		} elseif (in_array($tag, $blk))
  -		{
  -			return $tag . $this->sci($a) . '. ' . $content;
  -		} elseif ($tag == 'a')
  -		{
  -			$t = $this->filterAtts($a, array('href', 'title'));
  -			$out = '"' . $content;
  -			$out .= (isset($t['title'])) ? ' (' . $t['title'] . ')' : '';
  -			$out .= '":' . $t['href'];
  -			return $out;
  -		}
  -		else
  -		{
  -			return $all;
  -		}
  -	}
  -	// -------------------------------------------------------------
  -	function filterAtts($atts, $ok)
  -	{
  -		foreach($atts as $a)
  -		{
  -			if (in_array($a['name'], $ok))
  -			{
  -				if ($a['att'] != '')
  -				{
  -					$out[$a['name']] = $a['att'];
  -				}
  -			}
  -		}
  -		// dump($out);
  -		return $out;
  -	}
  -	// -------------------------------------------------------------
  -	function sci($a)
  -	{
  -		$out = '';
  -		foreach($a as $t)
  -		{
  -			$out .= ($t['name'] == 'class') ? '(=' . $t['att'] . ')' : '';
  -			$out .= ($t['name'] == 'id') ? '[=' . $t['att'] . ']' : '';
  -			$out .= ($t['name'] == 'style') ? '{=' . $t['att'] . '}' : '';
  -			$out .= ($t['name'] == 'cite') ? ':' . $t['att'] : '';
  -		}
  -		return $out;
  -	}
  -	// -------------------------------------------------------------
  -	function splat($attr) // returns attributes as an array
  -	{
  -		$arr = array();
  -		$atnm = '';
  -		$mode = 0;
  -
  -		while (strlen($attr) != 0)
  -		{
  -			$ok = 0;
  -			switch ($mode)
  -			{
  -				case 0: // name
  -					if (preg_match('/^([a-z]+)/i', $attr, $match))
  -					{
  -						$atnm = $match[1];
  -						$ok = $mode = 1;
  -						$attr = preg_replace('/^[a-z]+/i', '', $attr);
  -					}
  -					break;
  -
  -				case 1: // =
  -					if (preg_match('/^\s*=\s*/', $attr))
  -					{
  -						$ok = 1;
  -						$mode = 2;
  -						$attr = preg_replace('/^\s*=\s*/', '', $attr);
  -						break;
  -					}
  -					if (preg_match('/^\s+/', $attr))
  -					{
  -						$ok = 1;
  -						$mode = 0;
  -						$arr[] = array('name' => $atnm, 'whole' => $atnm, 'att' => $atnm);
  -						$attr = preg_replace('/^\s+/', '', $attr);
  -					}
  -					break;
  -
  -				case 2: // value
  -					if (preg_match('/^("[^"]*")(\s+|$)/', $attr, $match))
  -					{
  -						$arr[] = array('name' => $atnm, 'whole' => $atnm . '=' . $match[1],
  -							'att' => str_replace('"', '', $match[1]));
  -						$ok = 1;
  -						$mode = 0;
  -						$attr = preg_replace('/^"[^"]*"(\s+|$)/', '', $attr);
  -						break;
  -					}
  -					if (preg_match("/^('[^']*')(\s+|$)/", $attr, $match))
  -					{
  -						$arr[] = array('name' => $atnm, 'whole' => $atnm . '=' . $match[1],
  -							'att' => str_replace("'", '', $match[1]));
  -						$ok = 1;
  -						$mode = 0;
  -						$attr = preg_replace("/^'[^']*'(\s+|$)/", '', $attr);
  -						break;
  -					}
  -					if (preg_match("/^(\w+)(\s+|$)/", $attr, $match))
  -					{
  -						$arr[] =
  -						array('name' => $atnm, 'whole' => $atnm . '="' . $match[1] . '"',
  -							'att' => $match[1]);
  -						$ok = 1;
  -						$mode = 0;
  -						$attr = preg_replace("/^\w+(\s+|$)/", '', $attr);
  -					}
  -					break;
  -			}
  -			if ($ok == 0)
  -			{
  -				$attr = preg_replace('/^\S*\s*/', '', $attr);
  -				$mode = 0;
  -			}
  -		}
  -		if ($mode == 1) $arr[] =
  -			array ('name' => $atnm, 'whole' => $atnm . '="' . $atnm . '"', 'att' => $atnm);
  -
  -		return $arr;
  -	}
  -}
  +} // end class
   
   ?>
  
  
  


wkpark      2008/12/16 18:39:04

  Modified:    plugin/processor monimarkup.php
  Log:
  cleanup NOTICE warnings
  
  Revision  Changes    Path
  1.15      +33 -17    moniwiki/plugin/processor/monimarkup.php
  
  Index: monimarkup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/monimarkup.php,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- monimarkup.php	12 Dec 2008 07:07:30 -0000	1.14
  +++ monimarkup.php	16 Dec 2008 09:39:04 -0000	1.15
  @@ -3,12 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a moniwiki formatting processor for the MoniWiki
   //
  -// $Id: monimarkup.php,v 1.14 2008/12/12 07:07:30 wkpark Exp $
  +// $Id: monimarkup.php,v 1.15 2008/12/16 09:39:04 wkpark Exp $
   /**
    * @date    2006-08-09
    * @name    Moniwiki Processor
    * @desc    Moniwiki default processor
  - * @version $Revision: 1.14 $
  + * @version $Revision: 1.15 $
    * @depend  1.1.3
    * @license GPL
    */
  @@ -59,6 +59,7 @@
                               $block[$j]=substr($chunk[$ci],3,-3);
                               $chunk[$ci]="\007".$j."\007";
                               list($type,$dum)= explode("\n",$block[$j],2);
  +                            $tag='';
                               if (!empty($type)) {
                                   if ($type{0}=='#' and $type{1}=='!') {
                                       list($tag,$dummy)= explode(' ',$type);
  @@ -171,7 +172,7 @@
               } else if (preg_match("/^((?:\>\s)*\>(\.\w+)?\s?|\s+)/",$line,$m)) {
                   $_eop=0;
                   $mytype=array('tag'=>'LIST','type'=>'di');
  -                $indlen=$myindlen=strlen($m[0])-strlen($m[2]);
  +                $indlen=$myindlen=strlen($m[0])-(isset($m[2]) ? strlen($m[2]):0);
                   if ($line{0}=='>') {
                       $myclass=$m[2] ? substr($m[2],1):'quote';
                       $mytype['attributes']=array('class'=>$myclass);
  @@ -184,10 +185,10 @@
                   $indtype=null;
                   if (preg_match("/^((\*\s?)|(?:([1-9]\d*|[aAiI])\.)(?:#(\d+))?\s)/",
                       $cutline,$m)) {
  -                    $myindlen=$indlen+strlen($m[1])-strlen($m[4]);
  +                    $myindlen=$indlen+strlen($m[1])-(isset($m[4]) ? strlen($m[4]):0);
                       $type=$m[2] ? 'ul':$m[3];
                       $mytype['type']=$type;
  -                    $start=$m[4] ? $m[4]:($m[3] ? $m[3]:null);
  +                    $start=isset($m[4]) ? $m[4]:(isset($m[3]) ? $m[3]:null);
                       if (isset($start) and is_numeric($start) and $start > 1)
                           $mytype['attributes']=array('start'=>$start);
                       $cutline=substr($cutline,strlen($m[1]));
  @@ -336,7 +337,7 @@
                   #print "<pre>"; print_r($m); print "</pre>";
                   $open.=$formatter->_table(1,$m[5]);
                   if ($m[2]) $open.='<caption>'.$m[2].'</caption>';
  -                if (!$m[5]) $line='||'.$m[3].$m[6].$m[7];
  +                $line='||'.$m[3].$m[5].$m[6].$m[7];
                   $_in_table=1;
               } elseif ($_in_table and $line[0]!='|') {
                   $close=$formatter->_table(0,$dumm).$close;
  @@ -420,13 +421,13 @@
                   $my_divclose='</div>';
               }
           }
  -        $wordrule="({{{(?U)(.+)}}})|".
  -              "\[\[([A-Za-z0-9]+(\(((?<!\]\]).)*\))?)\]\]|". # macro
  -              "<<([A-Za-z0-9]+(\(((?<!>>).)*\))?)>>|"; # macro
  +        $wordrule="(?:{{{(?U)(?:.+)}}})|".
  +              "\[\[(?:[A-Za-z0-9]+(?:\((?:(?<!\]\]).)*\))?)\]\]|". # macro
  +              "<<(?:[A-Za-z0-9]+(?:\((?:(?<!>>).)*\))?)>>|"; # macro
   
           if ($Config['inline_latex']) # single line latex syntax
  -            $wordrule.="(?<=\s|^|>)\\$([^\\$]+)\\$(?:\s|$)|".
  -                 "(?<=\s|^|>)\\$\\$([^\\$]+)\\$\\$(?:\s|$)|";
  +            $wordrule.="(?<=\s|^|>)\\$(?:[^\\$]+)\\$(?:\s|$)|".
  +                 "(?<=\s|^|>)\\$\\$(?:[^\\$]+)\\$\\$(?:\s|$)|";
           #if ($Config['builtin_footnote']) # builtin footnote support
           $wordrule.=$formatter->footrule.'|';
           $wordrule.=$formatter->wordrule;
  @@ -439,6 +440,12 @@
           #print "<pre>";print_r($chunk);print "</pre>";
           $hr_func=$Config['hr_type'].'_hr';
   
  +        # heading info
  +        $headinfo['top'] = 0;
  +        $headinfo['num'] = 1;
  +        $headinfo['dep'] = 0;
  +
  +        # list info
           $_lidep=array(0);
           $_lityp=array(0);
           $_li=0;
  @@ -448,6 +455,11 @@
                   $val=&$c['value'];
                   $val= preg_replace($formatter->baserule,
                       $formatter->baserepl,$val);
  +
  +                if (!empty($formatter->smiley_rule))
  +                    $val=preg_replace($formatter->smiley_rule,
  +                        $formatter->smiley_repl,$val);
  +
                   if ($_li>0 and $c['tag']!='LIST')
                       while($_li>0 and $_lidep[$_li] > 0) {
                           $out.=$this->_li(0,$_lityp[$_li]);
  @@ -483,7 +495,7 @@
   
                       if ($sect_num >1) $out.=$this->_div(0);
                       $out.=$this->_div(1," class='level$c[depth]'");
  -                    $out.= $anchor.$ed.$formatter->head_repl($c['depth'],$val);
  +                    $out.= $anchor.$ed.$formatter->head_repl($c['depth'],$val,$headinfo);
                       break;
                   case 'HR':
                       $out.= $c['value'];
  @@ -567,10 +579,16 @@
                   }
               } else {
                   $c= preg_replace($formatter->baserule,$formatter->baserepl,$c);
  +
  +                if (!empty($formatter->smiley_rule))
  +                    $c=preg_replace($formatter->smiley_rule,
  +                        $formatter->smiley_repl,$c);
  +
                   if (strpos($c,'||')!== false) {
                       $c=$this->_parseTable($c);
                   }
   
  +                $style='';
                   if (preg_match('/^((\s*)(&lt;|=|>)?{([^}]+)})/s',$c,$sty)) {
                       if ($sty[3]) $sty[4].=';'.$palign[$sty[3]];
                       # {es} => not style
  @@ -580,6 +598,7 @@
                           $c=$sty[2].'{'.$sty[4].'}'.substr($c,strlen($sty[1]));
                           $sty[4]='';
                       }
  +                    $style=$sty[4];
                   }
   
                   if ($formatter->auto_linebreak)
  @@ -596,9 +615,9 @@
                   }
   
                   if (preg_match('/<div[^>]*>/',$c))
  -                    $out.= $this->_div(1,' class="para"',$sty[4]).$c.$this->_div(0);
  +                    $out.= $this->_div(1,' class="para"',$style).$c.$this->_div(0);
                   else
  -                    $out.= $this->_p(1,' class="para"',$sty[4]).$c.$this->_p(0);
  +                    $out.= $this->_p(1,' class="para"',$style).$c.$this->_p(0);
               }
           }
           while($_li>0 and $_lidep[$_li] > 0) {
  @@ -607,9 +626,6 @@
               --$_li;
           }
           if ($formatter->sect_num >1) $out.=$this->_div(0);
  -        if (!empty($formatter->smiley_rule))
  -            $out=preg_replace($formatter->smiley_rule,
  -                $formatter->smiley_repl,$out);
   
           $out=preg_replace("/\007(\d+)\007/e",
               "\$formatter->processor_repl(\$btype[$1],\$block[$1])",$out);
  
  
  


wkpark      2008/12/16 18:40:26

  Added:       plugin   PluginInfo.php
  Log:
  add a new PluginInfo() macro
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/PluginInfo.php
  
  Index: PluginInfo.php
  ===================================================================
  <?php
  // Copyright 2008 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a PluginInfo macro plugin for the MoniWiki
  //
  // Date: 2008-12-12
  // Name: PluginInfo
  // Description: Show Plugin/Processor Info
  // URL: MoniWiki:PluginInfoMacro
  // Version: $Revision: 1.1 $
  // Depend: 1.1.3
  // License: GPL
  //
  // Usage: [[PluginInfo(name)]]
  //
  // $Id: PluginInfo.php,v 1.1 2008/12/16 09:40:26 wkpark Exp $
  
  include_once(dirname(__FILE__).'/admin.php');
  
  function macro_PluginInfo($formatter='',$value='') {
      global $_revision,$_release;
  
      $version=phpversion();
      $uname=php_uname();
      list($aversion,$dummy)=explode(" ",$_SERVER['SERVER_SOFTWARE'],2);
  
      if (!$value) {
          $num = getPlugin(true);
          return sprintf(_("Total %s plugin activated."),$num);
      }
      $file = getPlugin(strtolower($value));
      $info = get_plugin_info(dirname(__FILE__)."/$file.php");
  
      $name=!empty($info['Name']) ? $info['Name'].' ('.$value.')':$value;
      $version=$info['Version'];
      $author=$info['Author'];
      $version=$info['Version'];
      $license=$info['License'];
      $depend=$info['Depend'];
      $url=$info['URL'];
      $desc=$info['Description'] ? $info['Description']:'';
  
      $msg=_("Description");
      $pl.="<tr><td colspan='3'><fieldset class='collapsible collapsed'><legend>$msg: </legend><div>";
          $pl.='<strong>'._("Name").': '.$name."</strong><br />\n";
      if ($version)
          $pl.='<strong>'._("Version").': '.$version."</strong><br />\n";
      if ($author)
          $pl.='<strong>'._("Author").': '.$author."</strong><br />\n";
      if ($license)
          $pl.='<strong>'._("License").': '.$license."</strong><br />\n";
      if ($depend)
          $pl.='<strong>'._("Depend").': '.$depend."</strong><br />\n";
      if ($url) {
          $url=preg_replace("/(".$formatter->wordrule.")/e",
              "\$formatter->link_repl('\\1')",$url);
          $pl.='<strong>'._("URL").': '.$url."</strong><br />\n";
      }
      if ($desc) {
          $desc=preg_replace("/(".$formatter->wordrule.")/e",
              "\$formatter->link_repl('\\1')",$desc);
          $pl.="<p><pre>$desc</pre></p>\n";
      }
      $pl.="</div></fieldset></td></tr>\n";
    return <<<EOF
  <div class='pluginInfo'>
  <table border='0' cellpadding='5'>
  $pl
  </table>
  </div>
  EOF;
  
  // vim:et:sts=4:sw=4:
  }
  ?>
  
  
  


wkpark      2008/12/16 18:41:23

  Modified:    css      _base.css
  Log:
  .markup.invisible class added
  
  Revision  Changes    Path
  1.25      +4 -0      moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- _base.css	12 Dec 2008 14:41:09 -0000	1.24
  +++ _base.css	16 Dec 2008 09:41:23 -0000	1.25
  @@ -564,3 +564,7 @@
     background: url(../imgs/info/plugin.png) no-repeat;
     padding-left:70px;
   }
  +
  +span.markup.invisible {
  +  display:none;
  +}
  
  
  


wkpark      2008/12/16 19:14:17

  Modified:    .        Tag: B_1_1_2 wiki.php
  Log:
  fixed needle check
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.319.2.1 +7 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.319
  retrieving revision 1.319.2.1
  diff -u -r1.319 -r1.319.2.1
  --- wiki.php	21 Jul 2006 12:44:21 -0000	1.319
  +++ wiki.php	16 Dec 2008 10:14:17 -0000	1.319.2.1
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.319 2006/07/21 12:44:21 wkpark Exp $
  +// $Id: wiki.php,v 1.319.2.1 2008/12/16 10:14:17 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.319 $',1,-1);
  +$_revision = substr('$Revision: 1.319.2.1 $',1,-1);
   $_release = '1.1.2';
   
   #ob_start("ob_gzhandler");
  @@ -314,6 +314,8 @@
     function getLikePages($needle,$count=500) {
       $keys=array();
       if (!$needle) return $keys;
  +    $m = @preg_match("/$needle/i",'dummy');
  +    if ($m===false) return array(); 
       for ($key= dba_firstkey($this->metadb);
         $key !== false;
         $key= dba_nextkey($this->metadb)) {
  @@ -890,6 +892,9 @@
       $pages= array();
   
       $all= $this->getPageLists();
  +    if (!$needle) return $pages;
  +    $m = @preg_match("/$needle/",'dummy');
  +    if ($m===false) return $pages;
   
       foreach ($all as $page) {
         if (preg_match("/($needle)/",$page))
  
  
  


wkpark      2008/12/16 19:14:43

  Modified:    .        Tag: B_1_1_2 wikilib.php
  Log:
  update
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.210.2.1 +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.210
  retrieving revision 1.210.2.1
  diff -u -r1.210 -r1.210.2.1
  --- wikilib.php	21 Jul 2006 11:19:18 -0000	1.210
  +++ wikilib.php	16 Dec 2008 10:14:43 -0000	1.210.2.1
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.210 2006/07/21 11:19:18 wkpark Exp $
  +// $Id: wikilib.php,v 1.210.2.1 2008/12/16 10:14:43 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1846,7 +1846,7 @@
   EXTRA;
       $logout="<input type='submit' name='logout' value='"._("logout")."' /> &nbsp;";
     }
  -  if ($tz_offset=="")
  +  if (empty($tz_offset) and $jscript)
       $script=<<<EOF
   <script type="text/javascript">
   /*<![CDATA[*/
  
  
  


wkpark      2008/12/16 19:15:29

  Modified:    local    Tag: B_1_1_2 chat.js
  Log:
  fixed IE bug
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.3.2.1   +4 -3      moniwiki/local/chat.js
  
  Index: chat.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/chat.js,v
  retrieving revision 1.3
  retrieving revision 1.3.2.1
  diff -u -r1.3 -r1.3.2.1
  --- chat.js	20 Sep 2005 10:11:23 -0000	1.3
  +++ chat.js	16 Dec 2008 10:15:29 -0000	1.3.2.1
  @@ -63,10 +63,11 @@
       node.setAttribute('src',surl);
       node.setAttribute('id',id);
       node.setAttribute('autostart','false');
  -    node.setAttribute('style','visibility:hidden');
  +    if (navigator.appVersion.indexOf("MSIE")!=-1)
  +    	node.setAttribute('hidden','true');
       node.setAttribute('loop','false');
  -    node.setAttribute('height','1px');
  -    node.setAttribute('width','1px');
  +    node.setAttribute('height','0px');
  +    node.setAttribute('width','0px');
       sound.insertBefore(node,sound.firstChild);
   }
   
  
  
  


wkpark      2008/12/16 19:16:04

  Modified:    .        Tag: B_1_1_2 config.php.default
  Log:
  change default perma icon.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.35.2.1  +2 -1      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.35
  retrieving revision 1.35.2.1
  diff -u -r1.35 -r1.35.2.1
  --- config.php.default	18 Jul 2006 13:06:58 -0000	1.35
  +++ config.php.default	16 Dec 2008 10:16:04 -0000	1.35.2.1
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.35 2006/07/18 13:06:58 wkpark Exp $
  +# $Id: config.php.default,v 1.35.2.1 2008/12/16 10:16:04 wkpark Exp $
   #
   $sitename='UnnamedWiki';
   $data_dir= './data';
  @@ -94,6 +94,7 @@
   #$purple_icon=''; # obsolute
   #$use_purple='';
   #$perma_icon='<img src="/wiki/imgs/egg.png" border="0" />';
  +$perma_icon='&#xB6;';
   #$pagetype=array("KldpDsl"=>"plain","ManPage"=>"/man","DocbookSgml"=>"/jade","LinuxDoc"=>"/linuxdoc");
   # set default processor for jade
   #$default_dsssl='to_dir/kldp.dsl#html';
  
  
  


wkpark      2008/12/16 19:19:56

  Modified:    css      Tag: B_1_1_2 print.css slide.css
  Log:
  fixed
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.11.2.1  +15 -6     moniwiki/css/print.css
  
  Index: print.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/print.css,v
  retrieving revision 1.11
  retrieving revision 1.11.2.1
  diff -u -r1.11 -r1.11.2.1
  --- print.css	2 Jun 2006 15:55:02 -0000	1.11
  +++ print.css	16 Dec 2008 10:19:56 -0000	1.11.2.1
  @@ -149,8 +149,15 @@
   /*  border-left: 0.8em solid #7B9AC5; /* */
     padding: 0.2em 0.2em 0.2em 0.2em;
   /*  background-color:lightblue; */
  +  display:none;
   }
   
  +#wikiTrailer { display: none; }
  +
  +#wikiMenu { display:none; }
  +
  +#pTitle img {display:none;}
  +
   #wikiBody {
   }
   
  @@ -178,12 +185,6 @@
     padding: 5px 1em 5px 1em;
   }
   
  -/*
  -#wikiMenu {
  -  background-color:yellow;
  -}
  -*/
  -
   div.indent {
     background-color: lightyellow;
     padding-left:2em;
  @@ -246,3 +247,11 @@
   pre.wikiSyntax {
     border-left: 3px solid #c0c0c0;
   }
  +
  +.login {
  +  display:none;
  +}
  +
  +#goForm {
  +  display:none;
  +}
  
  
  
  1.4.2.1   +1 -1      moniwiki/css/slide.css
  
  Index: slide.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/slide.css,v
  retrieving revision 1.4
  retrieving revision 1.4.2.1
  diff -u -r1.4 -r1.4.2.1
  --- slide.css	1 Mar 2006 05:26:56 -0000	1.4
  +++ slide.css	16 Dec 2008 10:19:56 -0000	1.4.2.1
  @@ -4,7 +4,7 @@
   @import url("_user.css");
   
   body {
  -  font-family:Bitstream Vera Sans,Georgia,Verdana,Lucida,sans-serif;
  +  font-family:Verdana,Lucida,sans-serif;
     font-size:20px;
     margin: 10;
   }
  
  
  


wkpark      2008/12/16 20:52:08

  Modified:    .        config.php.default monisetup.php
  Log:
  use Wikiwyg by default.
  monisetup.php: toggle seed / read array() info from config.php etc.
  
  Revision  Changes    Path
  1.45      +34 -24    moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.44
  retrieving revision 1.45
  diff -u -r1.44 -r1.45
  --- config.php.default	5 Dec 2007 18:17:30 -0000	1.44
  +++ config.php.default	16 Dec 2008 11:52:08 -0000	1.45
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.44 2007/12/05 18:17:30 wkpark Exp $
  +# $Id: config.php.default,v 1.45 2008/12/16 11:52:08 wkpark Exp $
   #
   $sitename='UnnamedWiki'; # site name
   $data_dir= './data';
  @@ -15,7 +15,7 @@
   
   $url_prefix= '/moniwiki';
   $imgs_dir= $url_prefix.'/imgs';
  -$logo_img= $imgs_dir.'/moniwiki-logo.gif';
  +$logo_img= $imgs_dir.'/moniwiki-logo.png';
   $query_prefix= '/';
   
   $css_url= $url_prefix.'/css/nlog.css';
  @@ -37,7 +37,7 @@
   $charset='utf-8';
   #$charset='euc-kr';
   $auto_linebreak= 0;
  -$trail= 0;
  +$trail= 1;
   #$origin=1;
   #$arrow=' <img src="/wiki/imgs/moni-arrow.gif"/> ';
   $notify= 0;
  @@ -64,7 +64,7 @@
   #$owners=array('moniwiki','Hong');
   
   #$menu=array('MoniWiki'=>1,'FindPage'=>4,'TitleIndex'=>3,'BlogChanges'=>'','RecentChanges'=>2,'http://kldp.org KLDP'=>9);
  -$menu=array('FrontPage'=>1,'FindPage'=>4,'TitleIndex'=>3,'RecentChanges'=>2,'UserPreferences'=>'');
  +$menu=array('FrontPage'=>1,'TitleIndex'=>3,'RecentChanges'=>2,'UserPreferences'=>'');
   #$menu_sep='|';
   #$menu_bra='';
   #$menu_cat='';
  @@ -72,7 +72,7 @@
   #$path='./bin;c:/windows/command;c:/Program Files/gnuplot;c:/Program Files/vim/vim71'; # for win32
   #$path='./bin;C:/Program Files/MiKTeX 2.5/miktex/bin;C:/Program Files/ImageMagick-6.3.6-Q16'; # for MikTeX
   # ./bin to use user installed bins.
  -$theme='azblue';
  +$theme='azblue2';
   $theme_css=0;
   $hr='';
   #$title_rule='((?<=[a-z0-9])[A-Z][a-z0-9])';
  @@ -116,16 +116,17 @@
   #<script type="text/javascript" src="$url_prefix/local/subindex.js"></script>
   #EOF;
   # alternatively you can use the $javascripts option
  -#$javascripts=array(
  -#	'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',
  -#	'moniwyg.js',
  -#	'ASCIIMathML.js');
  +$javascripts=array(
  +	'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');
   
   #$diffonly=1; # show only diff infos (do not show wiki contents)
   #$goto_type=1;
  @@ -133,6 +134,7 @@
   #$purple_icon=''; # obsolute
   #$use_purple='';
   #$perma_icon='<img src="/wiki/imgs/egg.png" border="0" />';
  +$perma_icon='&#xB6;';
   #$pagetype=array("KldpDsl"=>"plain","ManPage"=>"/man","DocbookSgml"=>"/jade","LinuxDoc"=>"/linuxdoc");
   # set default processor for jade
   #$default_dsssl='to_dir/kldp.dsl#html';
  @@ -163,7 +165,8 @@
   #$vim_nocheck=0; // do not check vim syntax.
   #$vim_nocheck=1;
   #$use_resizer=1; // javascript resizer
  -#$use_resizer=2; // drupal style resizer 
  +# drupal style resizer 
  +$use_resizer=2;
   #$use_minoredit=1; // only for wiki owners
   #$auto_search='FixMoin'; # for old moinmoin users
   #$auto_search='AutoGoto';
  @@ -180,18 +183,21 @@
   #$ticket_font='TTFONT';
   #$ticket_font_size='20';
   $local_abbr='LocalDictionary';
  -$postfilters='abbr';
  +#$postfilters='abbr';
  +$postfilters='';
   $use_forcemerge=1;
   $default_language='ko';
  -$use_alias=0;
  -#$aliaspage=$data_dir.'/text/AliasPageNames';
  -$css_friendly=0;
  +$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=$data_dir.'/text/UrlMap'; # enable builtin fix url
  +$url_mappings=array('http://faq.ktug.or.kr/mywiki'=>'http://faq.ktug.or.kr/faq');
  +#$data_dir.'/text/UrlMap'; # enable builtin fix url
  +$shared_url_mappings='';
   
   #$use_category=0; # on/off categories list in the edit mode
   #$use_textbrowsers=1; # check some textbased browsers
  @@ -199,10 +205,10 @@
   #$use_camelcase=0; # turn off camelcase syntax by default
   #$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_smartdiff=1; # use the experimental smart diff XXX
   #$hide_actions=0; # hide actions list for anonymous user
   #$actions= array('DeletePage','LikePages','?action=Keywords Add keywords'); # customized act list
  -#$use_easyalias=1; # direct linking to the dest page
   #$info_options='ago,simple'; # default Info macro options
   #$force_charset=1; # overriding default charset 
   #$use_titlemenu=1; # add the current pagename to the menu list
  @@ -215,6 +221,8 @@
   #$acl_type='default'; # XXX
   #$acl_debug=1;
   #$default_download_image='/block.jpg';
  +#$force_download=1;
  +#$download_action='download';
   #$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.
  @@ -232,6 +240,7 @@
   #$toolbar_iconset='mediawiki'; # change the toolbar iconset 
   #$use_lightbox=1;
   #$gallery_use_lightbox=1;
  +#$use_hangul_search=1; # use hangul search for auto-completer
   #$use_subindex=1; # use subpage indices 
   #$nosession=1; # do not use session
   #$default_pre='pre'; # set the default pre processor
  @@ -240,8 +249,9 @@
   $jwmediaplayer_prefix='http://www.jeroenwijering.com/embed';
   #$icon_list='edit,diff,show,find,print,info,help'; # set the icon list
   #$use_folding=0; # 1:default simple js / 2:with the prototype/mootools
  -#$use_etable=0; # use new extended table syntax: experimental
  +#$use_etable=0; # use new extended table syntax: deprecated!
   #$use_openid=0; # enable openid login
   #$check_openid_url=0; # selectivly show openid icons: experimental
   #$use_autosave=1; # enable autosave feature.
  +#$use_bbs=0;
   ?>
  
  
  
  1.33      +42 -15    moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- monisetup.php	11 Dec 2008 00:56:17 -0000	1.32
  +++ monisetup.php	16 Dec 2008 11:52:08 -0000	1.33
  @@ -1,7 +1,7 @@
   <?php
   // Copyright 2003-2007 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.32 2008/12/11 00:56:17 wkpark Exp $
  +// $Id: monisetup.php,v 1.33 2008/12/16 11:52:08 wkpark Exp $
   
   function _stripslashes($str) {
     return get_magic_quotes_gpc() ? stripslashes($str):$str;
  @@ -45,9 +45,9 @@
           $config['dba_type']="'gdbm'";
   
         if ($db) dba_close($db);
  -      print '<ul><li><b>'.$config['dba_type'].'</b> is selected.</li></ul>';
  +      print '<ul><li>'.sprintf(_t("%s is selected."),"<b>$config[dba_type]</b>").'</li></ul>';
       }
  -    preg_match("/Apache\/2\.0\./",$_SERVER['SERVER_SOFTWARE'],$match);
  +    preg_match("/Apache\/2\./",$_SERVER['SERVER_SOFTWARE'],$match);
   
       if ($match) {
         $config['query_prefix']='"?"';
  @@ -132,8 +132,8 @@
           if (!preg_match('/\s*;(\s*#.*)?$/',$val)) {
             if (substr($val,0,3)== '<<<') $tag='^'.substr(rtrim($val),3);
             else {
  -            # $tag == "'" or $tag == '"'
  -            $tag = preg_quote(substr(ltrim($val),0,1),"'");
  +            $val = ltrim($val);
  +            $tag = '';
             }
             continue;
           }
  @@ -210,13 +210,15 @@
            $t=@eval("\$$key=\"$val\";");
            $val=$save_val;
         } else if (is_string($val)) {
  -         if (strpos($val,"\n")===false)
  -           $t=@eval("\$$key=$val;");
  -         else {
  +         if (strpos($val,"\n")===false) {
  +           $val = str_replace('&gt;','>',$val);
  +           $t=eval("\$$key=$val;");
  +         } else {
              $t=@eval("\$$key=$val;");
            }
  -      } else
  +      } else {
            $t=@eval("\$$key=$val;");
  +      }
         if ($t === NULL)
           $lines[]="\$$key=$val;\n";
         else
  @@ -335,8 +337,8 @@
   }
   
   function keyToPagename($key) {
  -#  return preg_replace("/_t([a-f0-9]{2})/e","chr(hexdec('\\1'))",$key);
  -  $pagename=preg_replace("/_t([a-f0-9]{2})/","%\\1",$key);
  +#  return preg_replace("/_([a-f0-9]{2})/e","chr(hexdec('\\1'))",$key);
  +  $pagename=preg_replace("/_([a-f0-9]{2})/","%\\1",$key);
   #  $pagename=str_replace("_","%",$key);
   #  $pagename=strtr($key,"_","%");
     return rawurldecode($pagename);
  @@ -392,10 +394,33 @@
   
     $wrap=1;
   
  +  $js=<<<JS
  +<script type='text/javascript'>
  +function Toggle(obj) {
  +   var p=document.getElementById(obj);
  +   var n=p.getElementsByTagName('input');
  +   for (var i=0;i<n.length;i++)
  +     if (n[i].checked) n[i].checked=false;
  +     else n[i].checked=true;
  +}
  +function deselect(obj) {
  +   var p=document.getElementById(obj);
  +   var n=p.getElementsByTagName('input');
  +   for (var i=0;i<n.length;i++)
  +     n[i].checked=false;
  +}
  +</script>
  +JS;
  +
  +  print $js;
     print "<h3>Total $num pages found</h3>\n";
  -  print "<form method='post' action=''>\n";
  +  print "<h4><a href='#' onclick='Toggle(\"seedall\")' >"._t("Click here to toggle all")."</a> / ";
  +  print "<a href='#' onclick='deselect(\"seedall\")' >"._t("Deselect all")."</a></h4>\n";
  +  print "<form id='seedall' method='post' action=''>\n";
  +  $ii=1;
     while (list($filter_name,$filter) = each($seed_filters)) {
  -    print "<h4>$filter_name</h4>\n";
  +    print "<h4>$filter_name <a href='#' onclick='Toggle(\"set$ii\")' >(toggle)</a></h4>\n";
  +    print "<div id='set$ii'>\n";
       foreach ($pages as $pagename) {
         if (preg_match($filter[0],$pagename)) {
           print "<input type='checkbox' name='seeds[$idx]' value='$pagename'";
  @@ -408,6 +433,8 @@
           unset($pages[$pagename]);
         }
       }
  +    print "</div>\n";
  +    $ii++;
       $wrap=1;
     }
     print "<input type='hidden' name='action' value='sow_seed' />\n";
  @@ -705,7 +732,7 @@
          $rawconfig['admin_passwd']=$newpasswd;
     }
   
  -  if ($update == 'Update') {
  +  if ($update == _t('Update')) {
       if ($rawconfig['charset'] && $rawconfig['sitename']) {
         if (function_exists('iconv')) {
           $ncharset=strtoupper($rawconfig['charset']);
  @@ -808,7 +835,7 @@
     }
   }
   
  -  if ($update == 'Preview')
  +  if ($update == _t('Preview'))
     print "<h2>".sprintf(_t("Preview current settings for this %s"),$config['sitename'])."</h2>\n";
     else
     print "<h2>".sprintf(_t("Read current settings for this %s"),$config['sitename'])."</h2>\n";
  
  
  


wkpark      2008/12/16 21:36:42

  Modified:    .        monisetup.php
  Log:
  fix last changes
  
  Revision  Changes    Path
  1.34      +17 -3     moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- monisetup.php	16 Dec 2008 11:52:08 -0000	1.33
  +++ monisetup.php	16 Dec 2008 12:36:41 -0000	1.34
  @@ -1,7 +1,7 @@
   <?php
   // Copyright 2003-2007 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.33 2008/12/16 11:52:08 wkpark Exp $
  +// $Id: monisetup.php,v 1.34 2008/12/16 12:36:41 wkpark Exp $
   
   function _stripslashes($str) {
     return get_magic_quotes_gpc() ? stripslashes($str):$str;
  @@ -371,6 +371,7 @@
   
     #
     $SystemPages="FrontPage|RecentChanges|TitleIndex|FindPage|WordIndex|".
  +  "EditTextForm|AliasPageNames|InterIconMap|".
     "FortuneCookies|Pages$|".
     "SystemPages|TwinPages|WikiName|SystemInfo|UserPreferences|".
     "InterMap|IsbnMap|WikiSandBox|SandBox|UploadFile|UploadedFiles|".
  @@ -402,12 +403,20 @@
      for (var i=0;i<n.length;i++)
        if (n[i].checked) n[i].checked=false;
        else n[i].checked=true;
  +   var p=document.getElementById('systemseed');
  +   var n=p.getElementsByTagName('input');
  +   for (var i=0;i<n.length;i++)
  +     n[i].checked=true;
   }
   function deselect(obj) {
      var p=document.getElementById(obj);
      var n=p.getElementsByTagName('input');
      for (var i=0;i<n.length;i++)
        n[i].checked=false;
  +   var p=document.getElementById('systemseed');
  +   var n=p.getElementsByTagName('input');
  +   for (var i=0;i<n.length;i++)
  +     n[i].checked=true;
   }
   </script>
   JS;
  @@ -419,8 +428,13 @@
     print "<form id='seedall' method='post' action=''>\n";
     $ii=1;
     while (list($filter_name,$filter) = each($seed_filters)) {
  -    print "<h4>$filter_name <a href='#' onclick='Toggle(\"set$ii\")' >(toggle)</a></h4>\n";
  -    print "<div id='set$ii'>\n";
  +    if ($filter_name == 'SystemPages') {
  +    	print "<h4>$filter_name ("._("Please be careful to deselect these pages").")</h4>\n";
  +    	print "<div id='systemseed'>\n";
  +    } else {
  +    	print "<h4>$filter_name <a href='#' onclick='Toggle(\"set$ii\")' >(toggle)</a></h4>\n";
  +    	print "<div id='set$ii'>\n";
  +    }
       foreach ($pages as $pagename) {
         if (preg_match($filter[0],$pagename)) {
           print "<input type='checkbox' name='seeds[$idx]' value='$pagename'";
  
  
  


wkpark      2008/12/16 21:37:18

  Modified:    locale   Makefile update-makefile.sh
  Log:
  update po files
  
  Revision  Changes    Path
  1.10      +53 -3     moniwiki/locale/Makefile
  
  Index: Makefile
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/Makefile,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- Makefile	15 Dec 2007 05:56:26 -0000	1.9
  +++ Makefile	16 Dec 2008 12:37:18 -0000	1.10
  @@ -1,4 +1,4 @@
  -# $Id: Makefile,v 1.9 2007/12/15 05:56:26 wkpark Exp $
  +# $Id: Makefile,v 1.10 2008/12/16 12:37:18 wkpark Exp $
   #
   # locale/Makefile
   #
  @@ -16,7 +16,7 @@
   
   ${POT_FILE} : # dependencies are auto-generated by 'make dep' , see below
   	cp -f $@ $@~
  -	xgettext -L C++ -k_ -kt_ -k__printf -k__sprintf -k__vsprintf -kfmt -o $@.extracted $^
  +	xgettext -L C++ -k_ -kt_ -k_t -k__printf -k__sprintf -k__vsprintf -kfmt -o $@.extracted $^
   	msgmerge -o $@ $@~ $@.extracted && rm -f $@.extracted
   
   po/%.po : ${POT_FILE}
  @@ -28,6 +28,13 @@
   #	mkdir -p $*/LC_MESSAGES
   	msgfmt -o $@ $<
   
  +euckr:
  +	iconv -f UTF-8 -t EUC-KR po/ko.po |sed 's/UTF-8/EUC-KR/' >po/ko_KR.po
  +	mkdir -p ko_KR/LC_MESSAGES/
  +	make ko_KR/LC_MESSAGES/moniwiki.mo
  +	make ko_KR/LC_MESSAGES/moniwiki.php
  +	rm po/ko_KR.po
  +
   # Generate .php from .mo rather than .po to maximize
   # the probability of agreement between .mo and .php files.
   %/LC_MESSAGES/moniwiki.php : %/LC_MESSAGES/moniwiki.mo
  @@ -54,7 +61,9 @@
   ${POT_FILE}: ../plugin/ABBR.php
   ${POT_FILE}: ../plugin/Anchor.php
   ${POT_FILE}: ../plugin/Attachment.php
  +${POT_FILE}: ../plugin/Attachments.php
   ${POT_FILE}: ../plugin/BabelFish.php
  +${POT_FILE}: ../plugin/Baduk.php
   ${POT_FILE}: ../plugin/Bar.php
   ${POT_FILE}: ../plugin/Blog.php
   ${POT_FILE}: ../plugin/BlogArchives.php
  @@ -75,32 +84,39 @@
   ${POT_FILE}: ../plugin/FullSearch.php
   ${POT_FILE}: ../plugin/Gallery.php
   ${POT_FILE}: ../plugin/GetText.php
  +${POT_FILE}: ../plugin/GoogleTrans.php
   ${POT_FILE}: ../plugin/ISBN.php
   ${POT_FILE}: ../plugin/Icon.php
   ${POT_FILE}: ../plugin/ImportUrl.php
   ${POT_FILE}: ../plugin/Include.php
   ${POT_FILE}: ../plugin/Info.php
  +${POT_FILE}: ../plugin/InputForm.php
  +${POT_FILE}: ../plugin/JME.php
   ${POT_FILE}: ../plugin/Keywords.php
   ${POT_FILE}: ../plugin/LikePages.php
   ${POT_FILE}: ../plugin/LineHeight.php
   ${POT_FILE}: ../plugin/MailTo.php
  +${POT_FILE}: ../plugin/MathChooser.php
   ${POT_FILE}: ../plugin/Media.php
   ${POT_FILE}: ../plugin/MoniCalendar.php
   ${POT_FILE}: ../plugin/Navigation.php
  -${POT_FILE}: ../plugin/Note.php
   ${POT_FILE}: ../plugin/OeKaki.php
   ${POT_FILE}: ../plugin/PGBR.php
   ${POT_FILE}: ../plugin/PageHits.php
   ${POT_FILE}: ../plugin/PageLinks.php
   ${POT_FILE}: ../plugin/Play.php
   ${POT_FILE}: ../plugin/RandomBanner.php
  +${POT_FILE}: ../plugin/Rating.php
   ${POT_FILE}: ../plugin/RecentChanges.php
  +${POT_FILE}: ../plugin/SWFUpload.php
   ${POT_FILE}: ../plugin/SearchPlugin.php
   ${POT_FILE}: ../plugin/ShowSmiley.php
   ${POT_FILE}: ../plugin/SlideShow.php
   ${POT_FILE}: ../plugin/SmileyChooser.php
   ${POT_FILE}: ../plugin/SystemInfo.php
  +${POT_FILE}: ../plugin/TTFText.php
   ${POT_FILE}: ../plugin/Test.php
  +${POT_FILE}: ../plugin/TextDict.php
   ${POT_FILE}: ../plugin/Tour.php
   ${POT_FILE}: ../plugin/TwinPages.php
   ${POT_FILE}: ../plugin/UWL.php
  @@ -113,10 +129,15 @@
   ${POT_FILE}: ../plugin/WantedPages.php
   ${POT_FILE}: ../plugin/WordIndex.php
   ${POT_FILE}: ../plugin/aclinfo.php
  +${POT_FILE}: ../plugin/admin.php
  +${POT_FILE}: ../plugin/atom.php
   ${POT_FILE}: ../plugin/autogoto.php
   ${POT_FILE}: ../plugin/backup.php
  +${POT_FILE}: ../plugin/bbs.php
   ${POT_FILE}: ../plugin/blogrss.php
   ${POT_FILE}: ../plugin/bookmark.php
  +${POT_FILE}: ../plugin/bts.php
  +${POT_FILE}: ../plugin/cacheadmin.php
   ${POT_FILE}: ../plugin/chat.php
   ${POT_FILE}: ../plugin/chmod.php
   ${POT_FILE}: ../plugin/css.php
  @@ -126,12 +147,20 @@
   ${POT_FILE}: ../plugin/filter/abbr.php
   ${POT_FILE}: ../plugin/filter/antispam.php
   ${POT_FILE}: ../plugin/filter/cite.php
  +${POT_FILE}: ../plugin/filter/fiximgpath.php
  +${POT_FILE}: ../plugin/filter/gtkdoc.php
  +${POT_FILE}: ../plugin/filter/indexer_ko.php
  +${POT_FILE}: ../plugin/filter/nforge.php
   ${POT_FILE}: ../plugin/filter/sample.php
   ${POT_FILE}: ../plugin/fixmoin.php
   ${POT_FILE}: ../plugin/foaf.php
   ${POT_FILE}: ../plugin/format.php
   ${POT_FILE}: ../plugin/freemind.php
  +${POT_FILE}: ../plugin/function/returnHello.php
  +${POT_FILE}: ../plugin/function/toc.php
   ${POT_FILE}: ../plugin/home.php
  +${POT_FILE}: ../plugin/html2pdf.php
  +${POT_FILE}: ../plugin/latex2png.php
   ${POT_FILE}: ../plugin/login.php
   ${POT_FILE}: ../plugin/man_get.php
   ${POT_FILE}: ../plugin/markup.php
  @@ -139,21 +168,29 @@
   ${POT_FILE}: ../plugin/moniedit.php
   ${POT_FILE}: ../plugin/moztab.php
   ${POT_FILE}: ../plugin/msgfmt.php
  +${POT_FILE}: ../plugin/msgtrans.php
   ${POT_FILE}: ../plugin/new.php
   ${POT_FILE}: ../plugin/notitle.php
  +${POT_FILE}: ../plugin/pagelist.php
   ${POT_FILE}: ../plugin/pageview.php
   ${POT_FILE}: ../plugin/print.php
   ${POT_FILE}: ../plugin/processor/abc.php
   ${POT_FILE}: ../plugin/processor/asciimathml.php
  +${POT_FILE}: ../plugin/processor/baduk.php
  +${POT_FILE}: ../plugin/processor/bbcode.php
   ${POT_FILE}: ../plugin/processor/blog.php
  +${POT_FILE}: ../plugin/processor/bts.php
   ${POT_FILE}: ../plugin/processor/chat.php
   ${POT_FILE}: ../plugin/processor/diff.php
   ${POT_FILE}: ../plugin/processor/dot.php
   ${POT_FILE}: ../plugin/processor/enscript.php
  +${POT_FILE}: ../plugin/processor/folding.php
  +${POT_FILE}: ../plugin/processor/form.php
   ${POT_FILE}: ../plugin/processor/freemind.php
   ${POT_FILE}: ../plugin/processor/geshi.php
   ${POT_FILE}: ../plugin/processor/gnuplot.php
   ${POT_FILE}: ../plugin/processor/hello.php
  +${POT_FILE}: ../plugin/processor/html.php
   ${POT_FILE}: ../plugin/processor/itex.php
   ${POT_FILE}: ../plugin/processor/jade.php
   ${POT_FILE}: ../plugin/processor/jmol.php
  @@ -163,22 +200,33 @@
   ${POT_FILE}: ../plugin/processor/man.php
   ${POT_FILE}: ../plugin/processor/metapost.php
   ${POT_FILE}: ../plugin/processor/mimetex.php
  +${POT_FILE}: ../plugin/processor/monimarkup.php
   ${POT_FILE}: ../plugin/processor/octave.php
   ${POT_FILE}: ../plugin/processor/pic.php
   ${POT_FILE}: ../plugin/processor/po.php
   ${POT_FILE}: ../plugin/processor/pre.php
   ${POT_FILE}: ../plugin/processor/python.php
   ${POT_FILE}: ../plugin/processor/randomquote.php
  +${POT_FILE}: ../plugin/processor/sfd.php
   ${POT_FILE}: ../plugin/processor/text_xml.php
  +${POT_FILE}: ../plugin/processor/textile.php
  +${POT_FILE}: ../plugin/processor/tpl_.php
   ${POT_FILE}: ../plugin/processor/vim.php
  +${POT_FILE}: ../plugin/processor/whtml.php
   ${POT_FILE}: ../plugin/processor/xslt.php
   ${POT_FILE}: ../plugin/processor/xsltproc.php
   ${POT_FILE}: ../plugin/quicklinks.php
  +${POT_FILE}: ../plugin/rawblog.php
  +${POT_FILE}: ../plugin/rawtext.php
   ${POT_FILE}: ../plugin/rcs.php
  +${POT_FILE}: ../plugin/rcsexport.php
  +${POT_FILE}: ../plugin/rcsimport.php
   ${POT_FILE}: ../plugin/rcspurge.php
   ${POT_FILE}: ../plugin/rdf_blog.php
  +${POT_FILE}: ../plugin/referer.php
   ${POT_FILE}: ../plugin/rename.php
   ${POT_FILE}: ../plugin/restore.php
  +${POT_FILE}: ../plugin/revert.php
   ${POT_FILE}: ../plugin/rss.php
   ${POT_FILE}: ../plugin/rss_blog.php
   ${POT_FILE}: ../plugin/rss_rc.php
  @@ -199,9 +247,11 @@
   ${POT_FILE}: ../plugin/ticket.php
   ${POT_FILE}: ../plugin/trackback.php
   ${POT_FILE}: ../plugin/urlencode.php
  +${POT_FILE}: ../plugin/useradmin.php
   ${POT_FILE}: ../plugin/userform.php
   ${POT_FILE}: ../plugin/whois.php
   ${POT_FILE}: ../wiki.php
   ${POT_FILE}: ../wikilib.php
  +${POT_FILE}: ../monisetup.php
   ${POT_FILE}: ../lib/difflib.php
   ${POT_FILE}: ../locale/dummy.php
  
  
  
  1.2       +2 -1      moniwiki/locale/update-makefile.sh
  
  Index: update-makefile.sh
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/update-makefile.sh,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- update-makefile.sh	10 Aug 2003 13:09:49 -0000	1.1
  +++ update-makefile.sh	16 Dec 2008 12:37:18 -0000	1.2
  @@ -1,6 +1,6 @@
   #!/bin/sh
   #
  -# $Id: update-makefile.sh,v 1.1 2003/08/10 13:09:49 wkpark Exp $
  +# $Id: update-makefile.sh,v 1.2 2008/12/16 12:37:18 wkpark Exp $
   #
   # This shell script is used to update the list of .po files and the
   # dependencies for moniwiki.pot in the Makefile.
  @@ -61,6 +61,7 @@
   cat >> Makefile.new <<'MAIN'
   ${POT_FILE}: ../wiki.php
   ${POT_FILE}: ../wikilib.php
  +${POT_FILE}: ../monisetup.php
   ${POT_FILE}: ../lib/difflib.php
   ${POT_FILE}: ../locale/dummy.php
   MAIN
  
  
  


wkpark      2008/12/16 21:37:19

  Modified:    locale/po fr.po ko.po moniwiki.pot
  Log:
  update po files
  
  Revision  Changes    Path
  1.20      +856 -265  moniwiki/locale/po/fr.po
  
  Index: fr.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/fr.po,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- fr.po	28 Nov 2008 02:22:11 -0000	1.19
  +++ fr.po	16 Dec 2008 12:37:18 -0000	1.20
  @@ -4,7 +4,7 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2008-11-28 11:21+0900\n"
  +"POT-Creation-Date: 2008-12-16 21:07+0900\n"
   "PO-Revision-Date: 2003-08-17 22:51+0900\n"
   "Last-Translator: Serge Stinckwich <Serge.Stinckwich@info.unicaen.fr>\n"
   "Language-Team: fr <fr@li.org>\n"
  @@ -13,23 +13,23 @@
   "Content-Transfer-Encoding: 8bit\n"
   
   # ../plugin/Attachment.php:24
  -#: ../plugin/Attachment.php:70 ../plugin/Attachment.php:293
  +#: ../plugin/Attachment.php:70 ../plugin/Attachment.php:331
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr "Tlcharger le nouvel attachement \"%s\""
   
   # ../plugin/OeKaki.php:118
  -#: ../plugin/Attachment.php:285
  +#: ../plugin/Attachment.php:323
   msgid "or paste a new png picture"
   msgstr "or Crer un nouveau dessin"
   
   # ../plugin/OeKaki.php:118
  -#: ../plugin/Attachment.php:290
  +#: ../plugin/Attachment.php:328
   msgid "or draw a new gif picture"
   msgstr "or Crer un nouveau dessin"
   
   # ../plugin/Attachment.php:24
  -#: ../plugin/Attachment.php:296
  +#: ../plugin/Attachment.php:334
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
  @@ -65,7 +65,7 @@
   msgid "Error: No blog entry found!"
   msgstr ""
   
  -#: ../plugin/Blog.php:164 ../plugin/Blog.php:166 ../plugin/Comment.php:219
  +#: ../plugin/Blog.php:164 ../plugin/Blog.php:166 ../plugin/Comment.php:221
   msgid "Error: Don't make a clone!"
   msgstr ""
   
  @@ -104,16 +104,16 @@
   msgid "Add Blog entry to \"%s\""
   msgstr "Ajouter une entre de blog  \"%s\""
   
  -#: ../plugin/Blog.php:260 ../plugin/Blog.php:333
  +#: ../plugin/Blog.php:260 ../plugin/Blog.php:332
   msgid "Name"
   msgstr ""
   
   # ../wiki.php:2950
  -#: ../plugin/Blog.php:262 ../plugin/Blog.php:334
  +#: ../plugin/Blog.php:262 ../plugin/Blog.php:333
   msgid "Title"
   msgstr "titre"
   
  -#: ../plugin/Blog.php:268 ../wikilib.php:900
  +#: ../plugin/Blog.php:268 ../wikilib.php:908
   msgid "GUI"
   msgstr ""
   
  @@ -161,7 +161,7 @@
   msgstr "%d commentaires"
   
   # ../plugin/processor/blog.php:70
  -#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:206
  +#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:208
   #: ../plugin/processor/blog.php:78
   msgid "Add comment"
   msgstr "Ajouter un commentaire"
  @@ -209,7 +209,7 @@
   msgstr "commentaire"
   
   # ../wikilib.php:482
  -#: ../plugin/Comment.php:88 ../wikilib.php:896
  +#: ../plugin/Comment.php:88 ../wikilib.php:904 ../monisetup.php:922
   msgid "Preview"
   msgstr "Prvisualisation"
   
  @@ -219,49 +219,49 @@
   msgstr ""
   
   # ../wikilib.php:814
  -#: ../plugin/Comment.php:124
  +#: ../plugin/Comment.php:125
   msgid "Page is not writable"
   msgstr ""
   
   # ../wiki.php:3009
  -#: ../plugin/Comment.php:127
  +#: ../plugin/Comment.php:128
   msgid "You are not allowed to add a comment."
   msgstr ""
   
   # ../plugin/restore.php:27
  -#: ../plugin/Comment.php:128 ../plugin/Keywords.php:372
  +#: ../plugin/Comment.php:129 ../plugin/Keywords.php:372
   msgid "Page does not exists"
   msgstr ""
   
  -#: ../plugin/Comment.php:163 ../plugin/userform.php:119
  -#: ../plugin/userform.php:182 ../plugin/userform.php:205
  +#: ../plugin/Comment.php:164 ../plugin/userform.php:115
  +#: ../plugin/userform.php:178 ../plugin/userform.php:201
   msgid "Invalid ticket !"
   msgstr ""
   
  -#: ../plugin/Comment.php:167 ../plugin/userform.php:121
  -#: ../plugin/userform.php:207
  +#: ../plugin/Comment.php:169 ../plugin/userform.php:117
  +#: ../plugin/userform.php:203
   msgid "You need a ticket !"
   msgstr ""
   
  -#: ../plugin/Comment.php:189 ../plugin/Gallery.php:171 ../wikilib.php:1401
  -#: ../wikilib.php:1547
  +#: ../plugin/Comment.php:191 ../plugin/Gallery.php:171 ../plugin/bbs.php:1009
  +#: ../wikilib.php:1426 ../wikilib.php:1572
   msgid ""
   "Sorry, can not save page because some messages are blocked in this wiki."
   msgstr ""
   
   # ../wikilib.php:748 ../wikilib.php:777
  -#: ../plugin/Comment.php:195
  +#: ../plugin/Comment.php:197
   msgid "Preview comment"
   msgstr ""
   
   # ../plugin/Vote.php:109
  -#: ../plugin/Comment.php:326
  +#: ../plugin/Comment.php:328
   #, c-format
   msgid "%s is commented successfully"
   msgstr "Vote russi"
   
   # ../plugin/Vote.php:109
  -#: ../plugin/Comment.php:327
  +#: ../plugin/Comment.php:329
   msgid "Comment added successfully"
   msgstr ""
   
  @@ -271,12 +271,13 @@
   msgstr "Aucune rvision plus ancienne disponible"
   
   # ../wikilib.php:803
  -#: ../plugin/Diff.php:212 ../plugin/Info.php:226
  +#: ../plugin/Diff.php:212 ../plugin/Info.php:226 ../plugin/rcsexport.php:13
  +#: ../plugin/rcsimport.php:13
   msgid "Version info is not available in this wiki"
   msgstr ""
   
   # ../wiki.php:2338 ../wiki.php:2373 ../wikilib.php:770
  -#: ../plugin/Diff.php:223 ../wikilib.php:1534
  +#: ../plugin/Diff.php:223 ../wikilib.php:1559
   msgid "No difference found"
   msgstr "Aucune diffrence trouv"
   
  @@ -340,7 +341,7 @@
   msgid "%d day(s) passed from %s."
   msgstr "%d jour(s) se sont passs depuis %s."
   
  -#: ../plugin/FastSearch.php:44 ../plugin/FullSearch.php:80
  +#: ../plugin/FastSearch.php:44 ../plugin/FullSearch.php:90
   msgid "No search text"
   msgstr ""
   
  @@ -355,16 +356,19 @@
   msgstr "Recherche en texte intgral pour \"%s\""
   
   # ../plugin/FastSearch.php:125
  -#: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:35
  +#: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:38
  +#: ../wikilib.php:1347
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr "Trouv %s s'appariant avec %s sur un total de %s pages"
   
  -#: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:37
  +#: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  +#: ../wikilib.php:1349
   msgid "page"
   msgstr ""
   
  -#: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:37
  +#: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  +#: ../wikilib.php:1349
   msgid "pages"
   msgstr ""
   
  @@ -380,25 +384,54 @@
   msgid "KeyWords search for \"%s\""
   msgstr ""
   
  -#: ../plugin/FullSearch.php:40
  +#: ../plugin/FullSearch.php:43
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:44 ../plugin/VisualTour.php:124 ../wiki.php:4203
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:124 ../wiki.php:4340
   msgid "Refresh"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:45
  +#: ../plugin/FullSearch.php:48
   #, c-format
   msgid " (%s search results)"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:129
  +# ../wiki.php:2950
  +#: ../plugin/FullSearch.php:51
  +#, fuzzy, c-format
  +msgid "You can also click %s to search title.\n"
  +msgstr ""
  +" ou cliquer sur %s pour faire une recherche en texte intgral de cette "
  +"page.\n"
  +
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5180 ../wiki.php:5187
  +#: ../wikilib.php:1357
  +msgid "here"
  +msgstr ""
  +
  +#: ../plugin/FullSearch.php:74
  +msgid "Display context of search results"
  +msgstr ""
  +
  +#: ../plugin/FullSearch.php:75
  +msgid "Search BackLinks only"
  +msgstr ""
  +
  +#: ../plugin/FullSearch.php:76
  +msgid "Case-sensitive searching"
  +msgstr ""
  +
  +#: ../plugin/FullSearch.php:77 ../wikilib.php:2625 ../wikilib.php:2686
  +msgid "Go"
  +msgstr ""
  +
  +#: ../plugin/FullSearch.php:140
   msgid "Empty expression"
   msgstr ""
   
   # ../wikilib.php:1483
  -#: ../plugin/FullSearch.php:133 ../wikilib.php:2614
  +#: ../plugin/FullSearch.php:144 ../wikilib.php:2646
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "Expression de recherche \"%s\" invalide"
  @@ -419,8 +452,8 @@
   msgstr ""
   
   # ../wikilib.php:769
  -#: ../plugin/Gallery.php:393 ../plugin/Gallery.php:397 ../wikilib.php:1388
  -#: ../wikilib.php:1532
  +#: ../plugin/Gallery.php:393 ../plugin/Gallery.php:397 ../wikilib.php:1413
  +#: ../wikilib.php:1557
   #, c-format
   msgid "Go back or return to %s"
   msgstr "Revenir en arrire ou retourner  %s"
  @@ -447,6 +480,30 @@
   msgid "Revision History"
   msgstr "Historique de rvision"
   
  +#: ../plugin/Info.php:37
  +msgid "ver."
  +msgstr ""
  +
  +# ../locale/dummy.php:3
  +#: ../plugin/Info.php:37
  +#, fuzzy
  +msgid "Date and Changes"
  +msgstr "ChangementsRcents"
  +
  +# ../wikilib.php:734
  +#: ../plugin/Info.php:38
  +#, fuzzy
  +msgid "Editor"
  +msgstr "Aller  l'diteur"
  +
  +#: ../plugin/Info.php:41
  +msgid "actions"
  +msgstr ""
  +
  +#: ../plugin/Info.php:42
  +msgid "admin."
  +msgstr ""
  +
   #: ../plugin/Info.php:58
   msgid "Show all revisions"
   msgstr ""
  @@ -474,6 +531,40 @@
   msgid "diff"
   msgstr ""
   
  +#: ../plugin/Info.php:189 ../plugin/rename.php:80
  +msgid "show only"
  +msgstr ""
  +
  +#: ../plugin/Info.php:193
  +msgid "purge"
  +msgstr ""
  +
  +# ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
  +#: ../plugin/JME.php:55
  +#, fuzzy, c-format
  +msgid "Draw a new molecule '%s'"
  +msgstr "Faire un nouveau dessin"
  +
  +# ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
  +#: ../plugin/JME.php:57
  +#, fuzzy
  +msgid "Draw a new molecule"
  +msgstr "Faire un nouveau dessin"
  +
  +# ../plugin/Vote.php:109
  +#: ../plugin/JME.php:95
  +#, fuzzy
  +msgid "Molecule successfully added"
  +msgstr "Vote russi"
  +
  +#: ../plugin/JME.php:101
  +msgid "Edit Molecule"
  +msgstr ""
  +
  +#: ../plugin/JME.php:131
  +msgid "Edit new molecule"
  +msgstr ""
  +
   #: ../plugin/Keywords.php:330
   msgid "hits"
   msgstr ""
  @@ -562,7 +653,7 @@
   msgstr ""
   
   # ../wikilib.php:672 ../wikilib.php:1472
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1230 ../wikilib.php:2603
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1238 ../wikilib.php:2633
   msgid "Use more specific text"
   msgstr "Utiliser un texte plus spcifique"
   
  @@ -620,23 +711,74 @@
   msgid "Edit Image"
   msgstr "diter l'image"
   
  -#: ../plugin/RecentChanges.php:117
  +#: ../plugin/Rating.php:58
  +msgid "Awful!"
  +msgstr ""
  +
  +#: ../plugin/Rating.php:59
  +msgid "Not the worst ever."
  +msgstr ""
  +
  +#: ../plugin/Rating.php:60
  +msgid "Not bad!"
  +msgstr ""
  +
  +#: ../plugin/Rating.php:61
  +msgid "Useful!"
  +msgstr ""
  +
  +#: ../plugin/Rating.php:62
  +msgid "Very Gooood!"
  +msgstr ""
  +
  +# ../plugin/Vote.php:66 ../plugin/security/needtologin.php:25
  +# ../plugin/security/needtologin.php:35
  +#: ../plugin/Rating.php:84 ../plugin/Vote.php:67
  +#: ../plugin/security/community.php:26 ../plugin/security/community.php:36
  +#: ../plugin/security/community.php:46 ../plugin/security/community.php:61
  +#: ../plugin/security/mustlogin.php:29 ../plugin/security/mustlogin.php:40
  +#: ../plugin/security/mustlogin.php:51 ../plugin/security/mustlogin.php:67
  +#: ../plugin/security/needtologin.php:29 ../plugin/security/needtologin.php:40
  +#: ../plugin/security/needtologin.php:51 ../plugin/security/userbased.php:60
  +msgid "Please Login or make your ID on this Wiki ;)"
  +msgstr "Merci de vous connecter ou de construire un ID sur ce Wiki ;)"
  +
  +#: ../plugin/Rating.php:188
  +msgid "Invalid rating request !"
  +msgstr ""
  +
  +# ../plugin/Vote.php:109
  +#: ../plugin/Rating.php:203
  +#, fuzzy
  +msgid "Rating successfully !"
  +msgstr "Vote russi"
  +
  +#: ../plugin/RecentChanges.php:114
   msgid "Show changes for "
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:122
  +#: ../plugin/RecentChanges.php:119
   msgid "days ago"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:209
  +#: ../plugin/RecentChanges.php:206
   msgid "set bookmark"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:244
  +#: ../plugin/RecentChanges.php:241 ../plugin/pagelist.php:107
  +#: ../plugin/pagelist.php:124
   #, c-format
   msgid "[%sh %sm ago]"
   msgstr ""
   
  +#: ../plugin/SWFUpload.php:116
  +msgid "Files..."
  +msgstr ""
  +
  +#: ../plugin/SWFUpload.php:117
  +msgid "Upload"
  +msgstr ""
  +
   # ../plugin/man_get.php:23
   #: ../plugin/SlideShow.php:28
   msgid "No page found"
  @@ -732,7 +874,7 @@
   msgstr "TwinPages de %s"
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../plugin/TwinPages.php:19 ../wiki.php:4993
  +#: ../plugin/TwinPages.php:19 ../wiki.php:5166
   msgid "See [TwinPages]: "
   msgstr "Voir [TwinPages]: "
   
  @@ -823,13 +965,13 @@
   msgstr ""
   
   # ../plugin/rename.php:36
  -#: ../plugin/UploadedFiles.php:414 ../plugin/rename.php:77 ../wikilib.php:1069
  -#: ../wikilib.php:1946
  +#: ../plugin/UploadedFiles.php:414 ../plugin/rename.php:77
  +#: ../plugin/revert.php:82 ../wikilib.php:1077 ../wikilib.php:1967
   msgid "Password"
   msgstr "Mot de passe"
   
   # ../wikilib.php:550
  -#: ../plugin/UploadedFiles.php:415 ../wikilib.php:1047
  +#: ../plugin/UploadedFiles.php:415 ../wikilib.php:1055
   msgid "Delete selected files"
   msgstr "Effacer les fichiers slectionns"
   
  @@ -848,24 +990,12 @@
   msgid "Deeper"
   msgstr "Plus profond"
   
  -# ../plugin/Vote.php:66 ../plugin/security/needtologin.php:25
  -# ../plugin/security/needtologin.php:35
  -#: ../plugin/Vote.php:67 ../plugin/security/community.php:26
  -#: ../plugin/security/community.php:36 ../plugin/security/community.php:46
  -#: ../plugin/security/community.php:61 ../plugin/security/mustlogin.php:29
  -#: ../plugin/security/mustlogin.php:40 ../plugin/security/mustlogin.php:51
  -#: ../plugin/security/mustlogin.php:67 ../plugin/security/needtologin.php:29
  -#: ../plugin/security/needtologin.php:40 ../plugin/security/needtologin.php:51
  -#: ../plugin/security/userbased.php:60
  -msgid "Please Login or make your ID on this Wiki ;)"
  -msgstr "Merci de vous connecter ou de construire un ID sur ce Wiki ;)"
  -
   # ../plugin/Vote.php:109
   #: ../plugin/Vote.php:113
   msgid "Voted successfully"
   msgstr "Vote russi"
   
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2356
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2379
   msgid "Others"
   msgstr ""
   
  @@ -897,6 +1027,57 @@
   msgid "Protected actions"
   msgstr ""
   
  +#: ../plugin/admin.php:136
  +msgid "Description"
  +msgstr ""
  +
  +#: ../plugin/admin.php:139
  +msgid "Author"
  +msgstr ""
  +
  +#: ../plugin/admin.php:141
  +msgid "License"
  +msgstr ""
  +
  +# ../plugin/VisualTour.php:59
  +#: ../plugin/admin.php:143
  +#, fuzzy
  +msgid "Depend"
  +msgstr "Plus profond"
  +
  +#: ../plugin/admin.php:147
  +msgid "URL"
  +msgstr ""
  +
  +#: ../plugin/admin.php:191
  +msgid "Enabled plugins"
  +msgstr ""
  +
  +#: ../plugin/admin.php:193
  +msgid "Disabled plugins"
  +msgstr ""
  +
  +#: ../plugin/admin.php:201
  +msgid "Enabled processors"
  +msgstr ""
  +
  +#: ../plugin/admin.php:203
  +msgid "Disabled processors"
  +msgstr ""
  +
  +#: ../plugin/admin.php:206
  +msgid "Plugin/Processor settings are updated"
  +msgstr ""
  +
  +#: ../plugin/admin.php:212
  +msgid "Enable/disable plugins and processors"
  +msgstr ""
  +
  +# ../locale/dummy.php:7
  +#: ../plugin/atom.php:64 ../plugin/rss_rc.php:62
  +msgid "show changes"
  +msgstr ""
  +
   # ../wikilib.php:887
   #: ../plugin/backup.php:42
   msgid "Your wiki is backuped successfully"
  @@ -911,6 +1092,94 @@
   msgid "Did you want to Backup your wiki ?"
   msgstr "Voulez vous faire une sauvegarde de votre wiki ?"
   
  +#: ../plugin/bbs.php:493
  +msgid "This bbs does not exists yet. Please save this page first"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:617
  +msgid "No"
  +msgstr ""
  +
  +# ../locale/dummy.php:6 ../wiki.php:2553
  +#: ../plugin/bbs.php:626 ../plugin/man_get.php:115
  +msgid "Edit"
  +msgstr ""
  +
  +# ../locale/dummy.php:5
  +#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1078
  +msgid "Delete"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:657
  +msgid "Please check article numbers."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:737
  +msgid "More"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:782
  +msgid "New"
  +msgstr ""
  +
  +# ../plugin/rename.php:27
  +#: ../plugin/bbs.php:784
  +#, fuzzy
  +msgid "Read"
  +msgstr "Renommer"
  +
  +#: ../plugin/bbs.php:800
  +#, c-format
  +msgid "Total %s articles."
  +msgstr ""
  +
  +# ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
  +# c-format
  +#: ../plugin/bbs.php:836
  +#, fuzzy, c-format
  +msgid "Your IP address is not allowed to %s at this BBS"
  +msgstr "Vous n'tes pas autoris  pouvoir '%s' cette page"
  +
  +#: ../plugin/bbs.php:890
  +msgid "Successfully deleted."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:922
  +msgid "Fail to post comment."
  +msgstr ""
  +
  +# ../wikilib.php:540
  +#: ../plugin/bbs.php:932
  +#, fuzzy, c-format
  +msgid "The article %s will be deleted."
  +msgstr "Le fichier '%s' est effac"
  +
  +#: ../plugin/bbs.php:974
  +msgid "Invalid HomePage address."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:987
  +msgid "No Name error."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:997
  +msgid "No Subject error."
  +msgstr ""
  +
  +# ../plugin/Vote.php:109
  +#: ../plugin/bbs.php:1025
  +#, fuzzy
  +msgid "New post added successfully"
  +msgstr "Vote russi"
  +
  +#: ../plugin/cacheadmin.php:105
  +msgid "You are not WikiMaster!!"
  +msgstr ""
  +
  +#: ../plugin/cacheadmin.php:120
  +msgid "Clear cache dirs"
  +msgstr ""
  +
   #: ../plugin/chat.php:36
   msgid "No messages"
   msgstr ""
  @@ -932,41 +1201,45 @@
   msgstr ""
   
   # ../plugin/css.php:29 ../plugin/css.php:37
  -#: ../plugin/css.php:29 ../plugin/css.php:37
  +#: ../plugin/css.php:33 ../plugin/css.php:41
   msgid "Back to UserPreferences"
   msgstr "Retour  UserPreferences"
   
  -#: ../plugin/css.php:63
  +#: ../plugin/css.php:67
   msgid "CSS disabled !"
   msgstr ""
   
   # ../plugin/format.php:16
  -#: ../plugin/format.php:15
  +#: ../plugin/format.php:17
   msgid "It is a XML format !"
   msgstr "C'est un format XML !"
   
  +#: ../plugin/html2pdf.php:30
  +msgid "The TCPDF class not found!"
  +msgstr ""
  +
   # ../plugin/login.php:24
  -#: ../plugin/login.php:33
  +#: ../plugin/login.php:29
   msgid "Login:"
   msgstr "Identifiant de connection :"
   
   # ../plugin/login.php:25
  -#: ../plugin/login.php:34
  +#: ../plugin/login.php:30
   msgid "Password:"
   msgstr "Mot de passe :"
   
   # ../plugin/login.php:27
  -#: ../plugin/login.php:35
  +#: ../plugin/login.php:31
   msgid "Join"
   msgstr "Se joindre "
   
   # ../plugin/login.php:41 ../plugin/minilogin.php:29
  -#: ../plugin/login.php:51 ../plugin/minilogin.php:29
  +#: ../plugin/login.php:47 ../plugin/minilogin.php:25
   msgid "Logout"
   msgstr "Se dconnecter"
   
   # ../locale/dummy.php:3 ../plugin/login.php:42 ../plugin/minilogin.php:28
  -#: ../plugin/login.php:52 ../plugin/minilogin.php:28 ../locale/dummy.php:3
  +#: ../plugin/login.php:48 ../plugin/minilogin.php:24 ../locale/dummy.php:3
   msgid "UserPreferences"
   msgstr "PrfrencesUtilisateur"
   
  @@ -980,18 +1253,13 @@
   msgid "No manpage found"
   msgstr "Aucune page de manuel trouv"
   
  -# ../locale/dummy.php:6 ../wiki.php:2553
  -#: ../plugin/man_get.php:115
  -msgid "Edit"
  -msgstr ""
  -
   # ../plugin/minilogin.php:22 ../wikilib.php:1076
  -#: ../plugin/minilogin.php:22 ../wikilib.php:2022
  +#: ../plugin/minilogin.php:18 ../wikilib.php:2043
   msgid "Login or Join"
   msgstr "Se connecter ou se joindre "
   
   # ../plugin/minilogin.php:30
  -#: ../plugin/minilogin.php:30
  +#: ../plugin/minilogin.php:26
   #, c-format
   msgid "%s or %s"
   msgstr "%s ou %s"
  @@ -1011,6 +1279,17 @@
   msgid "Fail to save translations."
   msgstr ""
   
  +# ../wiki.php:3009
  +#: ../plugin/msgtrans.php:23 ../plugin/useradmin.php:54
  +#: ../plugin/useradmin.php:58
  +#, fuzzy, c-format
  +msgid "You are not allowed to \"%s\" !"
  +msgstr "Vous n'tes pas autoris  '%s'"
  +
  +#: ../plugin/msgtrans.php:143
  +msgid "Local translation files are successfully translated !\n"
  +msgstr ""
  +
   # ../plugin/OeKaki.php:118
   #: ../plugin/new.php:13 ../plugin/new.php:28
   msgid "Create a new page"
  @@ -1043,18 +1322,28 @@
   msgid "raw"
   msgstr ""
   
  +# ../locale/dummy.php:3
  +#: ../plugin/processor/bts.php:178
  +#, fuzzy
  +msgid "Save Changes"
  +msgstr "ChangementsRcents"
  +
  +#: ../plugin/processor/monimarkup.php:489 ../wiki.php:3809
  +msgid "edit"
  +msgstr ""
  +
   #: ../plugin/processor/vim.php:58
   msgid "Toggle line numbers"
   msgstr ""
   
   # ../plugin/quicklinks.php:16 ../plugin/subscribe.php:24
  -#: ../plugin/quicklinks.php:16 ../plugin/scrap.php:37
  +#: ../plugin/quicklinks.php:16 ../plugin/scrap.php:33
   #: ../plugin/subscribe.php:19 ../plugin/subscribe.php:55
   msgid "Please login or make your ID."
   msgstr "Merci de vous connectez ou de construire un ID"
   
   # ../plugin/quicklinks.php:22 ../plugin/subscribe.php:30
  -#: ../plugin/quicklinks.php:22 ../plugin/scrap.php:40
  +#: ../plugin/quicklinks.php:22 ../plugin/scrap.php:36
   #: ../plugin/subscribe.php:61
   msgid "Goto UserPreferences"
   msgstr "Aller  UserPreferences"
  @@ -1078,6 +1367,12 @@
   msgid "Do you want to customize your quicklinks ?"
   msgstr "Voulez vous mettre  jour vos liens rapides ?"
   
  +# ../plugin/Blog.php:178
  +#: ../plugin/rawblog.php:63 ../plugin/rawblog.php:73
  +#, fuzzy, c-format
  +msgid "Delete Blog entry \"%s\""
  +msgstr "Ajouter une entre de blog  \"%s\""
  +
   # ../wikilib.php:803
   #: ../plugin/rcs.php:13
   #, c-format
  @@ -1175,14 +1470,10 @@
   msgstr "Seulement le WikiMaster peut renommer cette page"
   
   # ../plugin/rename.php:39 ../wikilib.php:588
  -#: ../plugin/rename.php:79 ../wikilib.php:1115
  +#: ../plugin/rename.php:79 ../wikilib.php:1123
   msgid "with revision history"
   msgstr "avec l'historique de rvision"
   
  -#: ../plugin/rename.php:80
  -msgid "show only"
  -msgstr ""
  -
   #: ../plugin/rename.php:82
   msgid "Check backlinks"
   msgstr ""
  @@ -1227,18 +1518,68 @@
   msgid "Select a tarball file to restore"
   msgstr ""
   
  -# ../locale/dummy.php:7
  -#: ../plugin/rss_rc.php:62
  -msgid "show changes"
  +#: ../plugin/revert.php:23 ../wiki.php:5182
  +#, c-format
  +msgid "Old Revisions of the %s"
  +msgstr ""
  +
  +# ../wiki.php:2211 ../wiki.php:2360
  +#: ../plugin/revert.php:57
  +#, fuzzy
  +msgid "No version control available."
  +msgstr "Aucune rvision plus ancienne disponible"
  +
  +# ../plugin/Vote.php:109
  +#: ../plugin/revert.php:61
  +#, fuzzy, c-format
  +msgid "%s is successfully rollback."
  +msgstr "Vote russi"
  +
  +#: ../plugin/revert.php:66
  +msgid "Are you really want to overwrite this page ?"
   msgstr ""
   
  +#: ../plugin/revert.php:67
  +msgid "Force overwrite"
  +msgstr ""
  +
  +#: ../plugin/revert.php:69
  +msgid "Are you really want to revert this page ?"
  +msgstr ""
  +
  +#: ../plugin/revert.php:74
  +msgid "Summary"
  +msgstr ""
  +
  +# ../wikilib.php:769
  +#: ../plugin/revert.php:76
  +#, fuzzy, c-format
  +msgid "Rollback to revision %s"
  +msgstr "Revenir en arrire ou retourner  %s"
  +
  +#: ../plugin/revert.php:79
  +msgid "Revert page"
  +msgstr ""
  +
  +# ../plugin/rename.php:37
  +#: ../plugin/revert.php:80
  +#, fuzzy, c-format
  +msgid "Only WikiMaster can %s this page"
  +msgstr "Seulement le WikiMaster peut renommer cette page"
  +
  +# ../wikilib.php:482
  +#: ../plugin/revert.php:80
  +#, fuzzy, c-format
  +msgid "revert"
  +msgstr "Prvisualisation"
  +
   # ../plugin/subscribe.php:46
  -#: ../plugin/scrap.php:57
  +#: ../plugin/scrap.php:53
   msgid "Scrap lists updated."
   msgstr ""
   
   # ../plugin/subscribe.php:58
  -#: ../plugin/scrap.php:69
  +#: ../plugin/scrap.php:65
   #, c-format
   msgid "Do you want to scrap \"%s\" ?"
   msgstr ""
  @@ -1426,241 +1767,253 @@
   msgid "No TrackBack entry found for %s"
   msgstr "Aucune entre de TrackBack dtect pour %s"
   
  -#: ../plugin/userform.php:39 ../plugin/userform.php:42
  +# ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
  +# c-format
  +#: ../plugin/useradmin.php:21
  +#, fuzzy, c-format
  +msgid "You are not allowed to use the \"%s\" macro."
  +msgstr "Vous n'tes pas autoris  pouvoir '%s' cette page"
  +
  +#: ../plugin/useradmin.php:25
  +#, c-format
  +msgid "Total %d users"
  +msgstr ""
  +
  +#: ../plugin/userform.php:35 ../plugin/userform.php:38
   msgid "Successfully confirmed"
   msgstr ""
   
   # ../wikilib.php:887
  -#: ../plugin/userform.php:40
  +#: ../plugin/userform.php:36
   msgid "Your e-mail address is confirmed successfully"
   msgstr "Mail envoy avec succs"
   
   # ../wikilib.php:887
  -#: ../plugin/userform.php:47
  +#: ../plugin/userform.php:43
   msgid "Your new password is confirmed successfully"
   msgstr ""
   
  -#: ../plugin/userform.php:49
  +#: ../plugin/userform.php:45
   msgid "Confirmation missmatched !"
   msgstr ""
   
   # ../plugin/subscribe.php:22
  -#: ../plugin/userform.php:50 ../plugin/userform.php:54
  +#: ../plugin/userform.php:46 ../plugin/userform.php:50
   msgid "Please try again to register your e-mail address"
   msgstr "Merci de rentrer d'abord votre adresse de messagerie"
   
   # ../plugin/restore.php:27
  -#: ../plugin/userform.php:53
  +#: ../plugin/userform.php:49
   msgid "ID does not exists !"
   msgstr "Erreur : l'archive n'existe pas"
   
  -#: ../plugin/userform.php:86 ../plugin/userform.php:275
  +#: ../plugin/userform.php:82 ../plugin/userform.php:271
   #, c-format
   msgid "Successfully login as '%s'"
   msgstr ""
   
   # ../wiki.php:3024
  -#: ../plugin/userform.php:93 ../plugin/userform.php:280
  -#: ../plugin/userform.php:323
  +#: ../plugin/userform.php:89 ../plugin/userform.php:276
  +#: ../plugin/userform.php:319
   msgid "Invalid password !"
   msgstr "Merci d'entrer un mot de passe valide"
   
  -#: ../plugin/userform.php:97
  +#: ../plugin/userform.php:93
   #, c-format
   msgid "\"%s\" does not exists on this wiki !"
   msgstr ""
   
  -#: ../plugin/userform.php:99
  +#: ../plugin/userform.php:95
   msgid "Make new ID on this wiki"
   msgstr ""
   
   # ../wikilib.php:575
  -#: ../plugin/userform.php:105
  +#: ../plugin/userform.php:101
   msgid "Cookie deleted !"
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../plugin/userform.php:108 ../wikilib.php:2092
  +#: ../plugin/userform.php:104 ../wikilib.php:2113
   msgid "E-mail new password"
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../plugin/userform.php:153
  +#: ../plugin/userform.php:149
   msgid "New password confirmation"
   msgstr ""
   
   # ../wiki.php:3024
  -#: ../plugin/userform.php:158
  +#: ../plugin/userform.php:154
   msgid "Please confirm your new password"
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../plugin/userform.php:160
  +#: ../plugin/userform.php:156
   #, c-format
   msgid "Your new password is %s"
   msgstr ""
   
  -#: ../plugin/userform.php:161 ../plugin/userform.php:267
  +#: ../plugin/userform.php:157 ../plugin/userform.php:263
   msgid "Please change your password later"
   msgstr ""
   
  -#: ../plugin/userform.php:165 ../plugin/userform.php:173
  +#: ../plugin/userform.php:161 ../plugin/userform.php:169
   msgid "Fail to e-mail notification !"
   msgstr ""
   
  -#: ../plugin/userform.php:168
  +#: ../plugin/userform.php:164
   msgid "New password is sent to your e-mail !"
   msgstr ""
   
   # ../plugin/subscribe.php:22
  -#: ../plugin/userform.php:169
  +#: ../plugin/userform.php:165
   msgid "Please check your e-mail"
   msgstr ""
   
  -#: ../plugin/userform.php:174
  +#: ../plugin/userform.php:170
   msgid "E-mail mismatch !"
   msgstr ""
   
  -#: ../plugin/userform.php:176
  +#: ../plugin/userform.php:172
   msgid "Invalid request"
   msgstr ""
   
   # ../plugin/subscribe.php:22
  -#: ../plugin/userform.php:177
  +#: ../plugin/userform.php:173
   msgid "Please confirm your e-mail address first !"
   msgstr ""
   
  -#: ../plugin/userform.php:184
  +#: ../plugin/userform.php:180
   msgid "ID and e-mail mismatch !"
   msgstr ""
   
   # ../plugin/subscribe.php:22
  -#: ../plugin/userform.php:186
  +#: ../plugin/userform.php:182
   msgid "Please try again or make a new profile"
   msgstr ""
   
  -#: ../plugin/userform.php:226 ../plugin/userform.php:311
  +#: ../plugin/userform.php:222 ../plugin/userform.php:307
   msgid "too short password!"
   msgstr ""
   
  -#: ../plugin/userform.php:227
  +#: ../plugin/userform.php:223
   msgid "mismatch password!"
   msgstr ""
   
  -#: ../plugin/userform.php:228 ../plugin/userform.php:315
  +#: ../plugin/userform.php:224 ../plugin/userform.php:311
   msgid "not acceptable character found in the password!"
   msgstr ""
   
  -#: ../plugin/userform.php:231
  +#: ../plugin/userform.php:227
   msgid "Your password is too simple to use as a password !"
   msgstr ""
   
   # ../plugin/subscribe.php:22
  -#: ../plugin/userform.php:237 ../plugin/userform.php:346
  +#: ../plugin/userform.php:233 ../plugin/userform.php:342
   msgid "Your email address is not valid"
   msgstr "Merci de rentrer d'abord votre adresse de messagerie"
   
   # ../wikilib.php:547
  -#: ../plugin/userform.php:242 ../plugin/userform.php:407
  +#: ../plugin/userform.php:238 ../plugin/userform.php:403
   msgid "Fail to register"
   msgstr ""
   
   # ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
   # c-format
  -#: ../plugin/userform.php:243 ../plugin/userform.php:408
  +#: ../plugin/userform.php:239 ../plugin/userform.php:404
   msgid "You are not allowed to register on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:244 ../plugin/userform.php:409 ../wiki.php:4947
  -#: ../wiki.php:4958
  +#: ../plugin/userform.php:240 ../plugin/userform.php:405 ../wiki.php:5120
  +#: ../wiki.php:5131
   msgid "Please contact WikiMasters"
   msgstr ""
   
  -#: ../plugin/userform.php:248
  +#: ../plugin/userform.php:244
   msgid "Successfully added!"
   msgstr ""
   
  -#: ../plugin/userform.php:254
  +#: ../plugin/userform.php:250
   #, c-format
   msgid "Successfully added as '%s'"
   msgstr ""
   
  -#: ../plugin/userform.php:255
  +#: ../plugin/userform.php:251
   msgid "Please check your mailbox"
   msgstr ""
   
  -#: ../plugin/userform.php:262 ../plugin/userform.php:340
  +#: ../plugin/userform.php:258 ../plugin/userform.php:336
   msgid "E-mail confirmation"
   msgstr ""
   
   # ../plugin/subscribe.php:22
  -#: ../plugin/userform.php:264 ../plugin/userform.php:342
  +#: ../plugin/userform.php:260 ../plugin/userform.php:338
   msgid "Please confirm your email address"
   msgstr ""
   
  -#: ../plugin/userform.php:266
  +#: ../plugin/userform.php:262
   #, c-format
   msgid "Your initial password is %s"
   msgstr ""
   
  -#: ../plugin/userform.php:270
  +#: ../plugin/userform.php:266
   msgid "Confirmation E-mail sent"
   msgstr ""
   
  -#: ../plugin/userform.php:285
  +#: ../plugin/userform.php:281
   msgid "Invalid username !"
   msgstr ""
   
  -#: ../plugin/userform.php:313
  +#: ../plugin/userform.php:309
   msgid "mismatch password !"
   msgstr ""
   
  -#: ../plugin/userform.php:316 ../plugin/userform.php:324
  +#: ../plugin/userform.php:312 ../plugin/userform.php:320
   msgid "Password is not changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:318
  +#: ../plugin/userform.php:314
   msgid "Password is changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:320
  +#: ../plugin/userform.php:316
   msgid "Password is too simple to use as a password !"
   msgstr ""
   
  -#: ../plugin/userform.php:344
  +#: ../plugin/userform.php:340
   msgid "E-mail confirmation mail sent"
   msgstr ""
   
  -#: ../plugin/userform.php:355
  +#: ../plugin/userform.php:351
   msgid "Your Nickname already used as ID in this wiki"
   msgstr ""
   
   # ../wikilib.php:887
  -#: ../plugin/userform.php:360
  +#: ../plugin/userform.php:356
   msgid "Profiles are saved successfully !"
   msgstr ""
   
  -#: ../plugin/userform.php:383 ../plugin/userform.php:429
  +#: ../plugin/userform.php:379 ../plugin/userform.php:425
   #, c-format
   msgid "Authentication request was failed: %s"
   msgstr ""
   
  -#: ../plugin/userform.php:402
  +#: ../plugin/userform.php:398
   #, c-format
   msgid "Successfully login as '%s' via OpenID."
   msgstr ""
   
  -#: ../plugin/userform.php:416
  +#: ../plugin/userform.php:412
   #, c-format
   msgid "Your Nickname %s already used as ID in this Wiki."
   msgstr ""
   
  -#: ../plugin/userform.php:424
  +#: ../plugin/userform.php:420
   #, c-format
   msgid "OpenID Authentication successful and saved as %s."
   msgstr ""
   
  -#: ../plugin/userform.php:431
  +#: ../plugin/userform.php:427
   msgid "Invalid OpenID Authentication request"
   msgstr ""
   
  @@ -1676,170 +2029,162 @@
   msgstr ""
   
   # ../wiki.php:850
  -#: ../wiki.php:1235
  +#: ../wiki.php:1236
   #, c-format
   msgid "Rename %s to %s"
   msgstr "Renommer %s en %s"
   
   # ../wikilib.php:803
  -#: ../wiki.php:1654
  +#: ../wiki.php:1653
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
   # ../plugin/restore.php:27
  -#: ../wiki.php:1664
  +#: ../wiki.php:1663
   msgid "File does not exist"
   msgstr "Erreur : l'archive n'existe pas"
   
   # ../plugin/restore.php:27
  -#: ../wiki.php:2007
  +#: ../wiki.php:2034
   #, c-format
   msgid "File '%s' does not exist."
   msgstr ""
   
   # ../wikilib.php:521
  -#: ../wiki.php:2831 ../wiki.php:2842 ../wiki.php:5173
  +#: ../wiki.php:2897 ../wiki.php:2908 ../wiki.php:5353
   msgid "Invalid ajax action."
   msgstr ""
   
  -#: ../wiki.php:3255
  +#: ../wiki.php:3398
   msgid "Tags:"
   msgstr ""
   
   # ../wiki.php:1824
  -#: ../wiki.php:3283
  +#: ../wiki.php:3426
   #, c-format
   msgid "See %s"
   msgstr "Voir %s"
   
   # ../wiki.php:1824
  -#: ../wiki.php:3283
  +#: ../wiki.php:3426
   #, c-format
   msgid "TwinPages"
   msgstr ""
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../wiki.php:3288
  +#: ../wiki.php:3431
   msgid "See [TwinPages]:"
   msgstr "Voir [TwinPages]: "
   
  -#: ../wiki.php:3657
  -msgid "edit"
  -msgstr ""
  -
  -#: ../wiki.php:3833
  +#: ../wiki.php:3989
   msgid "Sister Sites Index"
   msgstr ""
   
   # ../locale/dummy.php:6 ../wiki.php:2553
  -#: ../wiki.php:4199 ../locale/dummy.php:6
  +#: ../wiki.php:4336 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "ditionTexte"
   
   # ../wiki.php:2555
  -#: ../wiki.php:4201
  +#: ../wiki.php:4338
   msgid "NotEditable"
   msgstr "Pasditable"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wiki.php:4205 ../locale/dummy.php:6
  +#: ../wiki.php:4342 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "MontrePage"
   
   # ../locale/dummy.php:3 ../locale/dummy.php:5 ../wiki.php:2558
  -#: ../wiki.php:4206 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4343 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "TrouvePage"
   
  -#: ../wiki.php:4586
  +#: ../wiki.php:4725
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:4946
  +#: ../wiki.php:5119
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:4957
  +#: ../wiki.php:5130
   msgid "You are blocked in this wiki"
   msgstr ""
   
   # ../wiki.php:2945 ../wiki.php:2948
  -#: ../wiki.php:4995 ../wiki.php:5004 ../wikilib.php:1323
  +#: ../wiki.php:5168 ../wiki.php:5177 ../wikilib.php:1337
   msgid "Create this page"
   msgstr "Crer cette page"
   
   # ../wikilib.php:816
  -#: ../wiki.php:5006
  +#: ../wiki.php:5179
   #, c-format
   msgid "%s has saved revisions"
   msgstr "%s est sauvegard"
   
   # ../wiki.php:2950
  -#: ../wiki.php:5007 ../wiki.php:5014
  -#, c-format
  -msgid "%s or click %s to fullsearch this page.\n"
  +#: ../wiki.php:5180 ../wiki.php:5187
  +#, fuzzy, c-format
  +msgid "%s or click %s to fulltext search.\n"
   msgstr ""
  +" ou cliquer sur %s pour faire une recherche en texte intgral de cette "
  +"page.\n"
   
  -# ../wiki.php:2950
  -#: ../wiki.php:5007 ../wiki.php:5014 ../wikilib.php:1325
  -msgid "title"
  -msgstr "titre"
  -
  -#: ../wiki.php:5009
  +#: ../wiki.php:5185
   #, c-format
  -msgid "Old Revisions of the %s"
  +msgid "%s is not found in this Wiki"
   msgstr ""
   
  -#: ../wiki.php:5012
  -#, c-format
  -msgid "%s is not found in this Wiki"
  +#: ../wiki.php:5192
  +msgid "Please try to search with another word"
   msgstr ""
   
   # ../wiki.php:2956
  -#: ../wiki.php:5024
  +#: ../wiki.php:5204
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr "%s ou alternativement, utiliser un de ces modles de page :\n"
   
  -#: ../wiki.php:5027
  +#: ../wiki.php:5207
   msgid "You have no templates"
   msgstr ""
   
   # ../wikilib.php:427
  -#: ../wiki.php:5029
  +#: ../wiki.php:5209
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
   
  -#: ../wiki.php:5040
  +#: ../wiki.php:5220
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
   # ../wikilib.php:521
  -#: ../wiki.php:5175
  +#: ../wiki.php:5355
   msgid "Invalid macro action."
   msgstr ""
   
   # ../wiki.php:3009
  -#: ../wiki.php:5185
  +#: ../wiki.php:5365
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "Vous n'tes pas autoris  '%s'"
   
   # ../wiki.php:3021
  -#: ../wiki.php:5205
  +#: ../wiki.php:5385
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "Impossible de pouvoir \"%s\" !"
   
   # ../wiki.php:3024
  -#: ../wiki.php:5208
  +#: ../wiki.php:5388
   msgid "Please enter the valid password"
   msgstr "Merci d'entrer un mot de passe valide"
   
   # ../wikilib.php:368
  -#: ../wikilib.php:636
  +#: ../wikilib.php:644
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -1873,294 +2218,306 @@
   
   # ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
   # c-format
  -#: ../wikilib.php:673
  +#: ../wikilib.php:681
   msgid "You are not allowed to edit this page !"
   msgstr ""
   
  -#: ../wikilib.php:679
  +#: ../wikilib.php:687
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
   # ../wikilib.php:425
  -#: ../wikilib.php:785
  +#: ../wikilib.php:793
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   "Utiliser un des modles de pages qui suivent pour une premirecration :\n"
   
   # ../wikilib.php:427
  -#: ../wikilib.php:787
  +#: ../wikilib.php:795
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr ""
   
  -#: ../wikilib.php:791
  +#: ../wikilib.php:799
   msgid "Merge"
   msgstr ""
   
  -#: ../wikilib.php:792
  +#: ../wikilib.php:800
   msgid "Merge manually"
   msgstr ""
   
  -#: ../wikilib.php:793
  +#: ../wikilib.php:801
   msgid "Ignore conflicts"
   msgstr ""
   
   # ../wikilib.php:445
  -#: ../wikilib.php:820
  +#: ../wikilib.php:828
   msgid "ReduceEditor"
   msgstr "Rduirediteur"
   
  -#: ../wikilib.php:821
  +#: ../wikilib.php:829
   msgid "EnlargeEditor"
   msgstr ""
   
   # ../locale/dummy.php:6 ../wikilib.php:448
  -#: ../wikilib.php:825 ../locale/dummy.php:6
  +#: ../wikilib.php:833 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
   # ../wikilib.php:449
  -#: ../wikilib.php:827
  +#: ../wikilib.php:835
   msgid "HelpOnEditing"
   msgstr ""
   
   # ../wikilib.php:462
  -#: ../wikilib.php:859
  +#: ../wikilib.php:867
   #, c-format
   msgid "Describe %s here"
   msgstr "Dcrire %s ici"
   
   # ../wikilib.php:476
  -#: ../wikilib.php:879
  +#: ../wikilib.php:887
   msgid "--Select Category--"
   msgstr "-- Slectionner une catgorie"
   
  -#: ../wikilib.php:889
  +#: ../wikilib.php:897
   msgid "Minor edit"
   msgstr ""
   
   # ../wikilib.php:484
  -#: ../wikilib.php:893
  +#: ../wikilib.php:901
   msgid "Summary of Change"
   msgstr "Sommaire des modifications"
   
   # ../wikilib.php:443
  -#: ../wikilib.php:898
  +#: ../wikilib.php:906
   msgid "Skip to preview"
   msgstr "Aller  la prvisualisation"
   
   # ../wikilib.php:483 ../wikilib.php:1079
  -#: ../wikilib.php:908 ../wikilib.php:2025 ../wikilib.php:2079
  +#: ../wikilib.php:916 ../wikilib.php:2046 ../wikilib.php:2100
   msgid "Save"
   msgstr "Sauvegarder"
   
   # ../wikilib.php:517
  -#: ../wikilib.php:981
  +#: ../wikilib.php:989
   msgid "406 Not Acceptable"
   msgstr ""
   
   # ../wikilib.php:519
  -#: ../wikilib.php:986
  +#: ../wikilib.php:994
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s n'est pas une action valide"
   
   # ../wikilib.php:521
  -#: ../wikilib.php:988
  +#: ../wikilib.php:996
   msgid "Is it valid action ?"
   msgstr "Est-ce que c'est une action valide ?"
   
   # ../wikilib.php:540
  -#: ../wikilib.php:1035
  +#: ../wikilib.php:1043
   #, c-format
   msgid "File '%s' is deleted"
   msgstr "Le fichier '%s' est effac"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:1037
  +#: ../wikilib.php:1045
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr "Impossible d'effacer '%s'"
   
   # ../wikilib.php:545
  -#: ../wikilib.php:1042
  +#: ../wikilib.php:1050
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr "Le rpertoire '%s' est effac"
   
   # ../wikilib.php:547
  -#: ../wikilib.php:1044
  +#: ../wikilib.php:1052
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr "Impossible d'effacer le rpertoire '%s'"
   
   # ../wikilib.php:557 ../wikilib.php:559
  -#: ../wikilib.php:1054 ../wikilib.php:1074
  +#: ../wikilib.php:1062 ../wikilib.php:1082
   msgid "No files are selected !"
   msgstr "Aucun fichier n'est slectionn !"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:1067
  +#: ../wikilib.php:1075
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
  -# ../locale/dummy.php:5
  -#: ../wikilib.php:1070
  -msgid "Delete"
  -msgstr ""
  -
   # ../wikilib.php:550
  -#: ../wikilib.php:1071
  +#: ../wikilib.php:1079
   msgid "Delete selected file"
   msgstr ""
   
   # ../wikilib.php:575
  -#: ../wikilib.php:1092
  +#: ../wikilib.php:1100
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr "\"%s\" est effac !"
   
   # ../wikilib.php:581
  -#: ../wikilib.php:1107
  +#: ../wikilib.php:1115
   msgid "Please delete this file manually."
   msgstr "Merci d'effacer ce fichier manuellement."
   
   # ../wikilib.php:583
  -#: ../wikilib.php:1109
  +#: ../wikilib.php:1117
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "Effacer \"%s\" ?"
   
   # ../plugin/minilogin.php:30
  -#: ../wikilib.php:1162
  +#: ../wikilib.php:1170
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
   # ../wiki.php:2950
  -#: ../wikilib.php:1325
  +#: ../wikilib.php:1339
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
   " ou cliquer sur %s pour faire une recherche en texte intgral de cette "
   "page.\n"
   
  +# ../wiki.php:2950
  +#: ../wikilib.php:1339
  +msgid "title"
  +msgstr "titre"
  +
  +#: ../wikilib.php:1353
  +msgid "Please try to fulltext search"
  +msgstr ""
  +
  +# ../wiki.php:2950
  +#: ../wikilib.php:1356
  +#, fuzzy, c-format
  +msgid "You can also click %s to fulltext search.\n"
  +msgstr ""
  +" ou cliquer sur %s pour faire une recherche en texte intgral de cette "
  +"page.\n"
  +
   # ../wikilib.php:743
  -#: ../wikilib.php:1376 ../wikilib.php:1477
  +#: ../wikilib.php:1401 ../wikilib.php:1502
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "Quelqu'un a sauvegard la page tandis que vous ditiez %s"
   
  -#: ../wikilib.php:1382
  +#: ../wikilib.php:1407
   msgid "Section edit is not valid for non-exists page."
   msgstr ""
   
   # ../wikilib.php:803
  -#: ../wikilib.php:1415 ../wikilib.php:1593
  +#: ../wikilib.php:1440 ../wikilib.php:1618
   msgid "mail does not supported by default."
   msgstr "La messagerie n'est pas support par dfaut."
   
   # ../wikilib.php:807
  -#: ../wikilib.php:1419 ../wikilib.php:1597
  +#: ../wikilib.php:1444 ../wikilib.php:1622
   msgid "Sent notification mail."
   msgstr "Des notifications par messagerie ont t envoyes."
   
   # ../wikilib.php:809
  -#: ../wikilib.php:1421 ../wikilib.php:1599
  +#: ../wikilib.php:1446 ../wikilib.php:1624
   msgid "No subscribers found."
   msgstr "Aucun abonn trouv."
   
   # ../wikilib.php:814
  -#: ../wikilib.php:1426 ../wikilib.php:1604
  +#: ../wikilib.php:1451 ../wikilib.php:1629
   #, c-format
   msgid "%s is not editable"
   msgstr "%s n'est pas ditable"
   
   # ../wikilib.php:816
  -#: ../wikilib.php:1428 ../wikilib.php:1606
  +#: ../wikilib.php:1453 ../wikilib.php:1631
   #, c-format
   msgid "%s is saved"
   msgstr "%s est sauvegard"
   
   # ../wikilib.php:734
  -#: ../wikilib.php:1468
  +#: ../wikilib.php:1493
   msgid "Goto Editor"
   msgstr "Aller  l'diteur"
   
  -#: ../wikilib.php:1482
  +#: ../wikilib.php:1507
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr ""
   
   # ../plugin/Vote.php:109
  -#: ../wikilib.php:1483
  +#: ../wikilib.php:1508
   #, c-format
   msgid "%s is merged successfully"
   msgstr ""
   
  -#: ../wikilib.php:1487
  +#: ../wikilib.php:1512
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1488
  +#: ../wikilib.php:1513
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr ""
   
  -#: ../wikilib.php:1489
  +#: ../wikilib.php:1514
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1490
  +#: ../wikilib.php:1515
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1495
  +#: ../wikilib.php:1520
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr ""
   
   # ../wikilib.php:581
  -#: ../wikilib.php:1496
  +#: ../wikilib.php:1521
   msgid "Please resolve conflicts manually."
   msgstr ""
   
  -#: ../wikilib.php:1499
  +#: ../wikilib.php:1524
   #, c-format
   msgid "Force merging for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1500
  +#: ../wikilib.php:1525
   msgid "Please be careful, you could damage useful information."
   msgstr ""
   
   # ../wikilib.php:755
  -#: ../wikilib.php:1514
  +#: ../wikilib.php:1539
   msgid "Conflict error!"
   msgstr "Erreur de conflit !"
   
   # ../wikilib.php:748 ../wikilib.php:777
  -#: ../wikilib.php:1553
  +#: ../wikilib.php:1578
   #, c-format
   msgid "Preview of %s"
   msgstr "Prvisualisation de %s"
   
   # ../wikilib.php:838
  -#: ../wikilib.php:1638
  +#: ../wikilib.php:1663
   msgid "Nobody subscribed to this page."
   msgstr "Personne n'est abonn  cette page, aucun mail envoy"
   
   # ../wikilib.php:860
  -#: ../wikilib.php:1657
  +#: ../wikilib.php:1682
   #, c-format
   msgid "%s page is modified"
   msgstr "la page %s est modifi"
   
   # ../wikilib.php:870
  -#: ../wikilib.php:1686
  +#: ../wikilib.php:1711
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
  @@ -2171,105 +2528,332 @@
   "\n"
   
   # ../wikilib.php:883
  -#: ../wikilib.php:1699
  +#: ../wikilib.php:1724
   msgid "Send notification mails to all subscribers"
   msgstr "Envoyez un mail de notification  tous les abonns"
   
   # ../wikilib.php:887
  -#: ../wikilib.php:1704
  +#: ../wikilib.php:1729
   msgid "Mails are sent successfully"
   msgstr "Mail envoy avec succs"
   
   # ../wikilib.php:888
  -#: ../wikilib.php:1705
  +#: ../wikilib.php:1730
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr "un mail a t envoy  '%s'"
   
   # ../wiki.php:3021
  -#: ../wikilib.php:1707
  +#: ../wikilib.php:1732
   msgid "Fail to send mail"
   msgstr ""
   
   # ../wikilib.php:803
  -#: ../wikilib.php:1718
  +#: ../wikilib.php:1743
   msgid "This wiki does not support sendmail"
   msgstr ""
   
   # ../wikilib.php:1483
  -#: ../wikilib.php:1816
  +#: ../wikilib.php:1841
   msgid "Invalid regular expression !"
   msgstr ""
   
  -#: ../wikilib.php:1840
  +#: ../wikilib.php:1865
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:1843
  +#: ../wikilib.php:1868
   msgid "Infinite loop possible!"
   msgstr ""
   
   # ../plugin/login.php:26 ../wikilib.php:1051
  -#: ../wikilib.php:1962
  +#: ../wikilib.php:1983
   msgid "Login"
   msgstr "Se connecter"
   
  -#: ../wikilib.php:1963
  +#: ../wikilib.php:1984
   msgid "OpenID"
   msgstr ""
   
  -#: ../wikilib.php:1975 ../wikilib.php:2097
  +#: ../wikilib.php:1996 ../wikilib.php:2118
   msgid "ID"
   msgstr ""
   
   # ../wikilib.php:1070
  -#: ../wikilib.php:2005 ../wikilib.php:2090
  +#: ../wikilib.php:2026 ../wikilib.php:2111
   msgid "Make profile"
   msgstr "Faire un profil"
   
   # ../wikilib.php:1071
  -#: ../wikilib.php:2007
  +#: ../wikilib.php:2028
   msgid "password again"
   msgstr "mot de passe de nouveau"
   
  -#: ../wikilib.php:2009 ../wikilib.php:2058
  +#: ../wikilib.php:2030 ../wikilib.php:2079
   msgid "Mail"
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../wikilib.php:2031
  +#: ../wikilib.php:2052
   msgid "New password"
   msgstr "Nouveau mot de passe"
   
  -#: ../wikilib.php:2036
  +#: ../wikilib.php:2057
   msgid "Nickname"
   msgstr ""
   
  -#: ../wikilib.php:2059
  +#: ../wikilib.php:2080
   msgid "Time Zone"
   msgstr ""
   
   # ../wikilib.php:1088
  -#: ../wikilib.php:2068
  +#: ../wikilib.php:2089
   msgid "logout"
   msgstr "se dconnecter"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wikilib.php:2357
  +#: ../wikilib.php:2380
   msgid "Show all"
   msgstr ""
   
   # ../locale/dummy.php:4
  -#: ../wikilib.php:2499
  +#: ../wikilib.php:2522
   msgid "Contents"
   msgstr ""
   
   # ../wikilib.php:1479
  -#: ../wikilib.php:2610
  +#: ../wikilib.php:2642
   #, c-format
   msgid "Title search for \"%s\""
   msgstr "Recherche de titre pour \"%s\""
   
  +#: ../monisetup.php:36
  +msgid "Check a dba configuration"
  +msgstr ""
  +
  +# ../wikilib.php:575
  +#: ../monisetup.php:48
  +#, fuzzy, c-format
  +msgid "%s is selected."
  +msgstr "\"%s\" est effac !"
  +
  +#: ../monisetup.php:55
  +msgid "Check a AcceptPathInfo setting for Apache 2.x.xx"
  +msgstr ""
  +
  +#: ../monisetup.php:62 ../monisetup.php:68
  +msgid "Off"
  +msgstr ""
  +
  +#: ../monisetup.php:70
  +msgid "On"
  +msgstr ""
  +
  +#: ../monisetup.php:243
  +msgid ""
  +"Please change the permission of some directories writable on your server to "
  +"initialize your Wiki."
  +msgstr ""
  +
  +#: ../monisetup.php:245
  +#, c-format
  +msgid ""
  +"If you want a more safe wiki, try to change the permission of directories "
  +"with %s."
  +msgstr ""
  +
  +#: ../monisetup.php:248
  +msgid ""
  +"or use <tt>monisetup.sh</tt> and select 777 or <font color='red'>2777</font>"
  +msgstr ""
  +
  +#: ../monisetup.php:250
  +msgid ""
  +"After execute one of above two commands, just <a href='monisetup.php'>reload "
  +"this <tt>monisetup.php</tt></a> would make a new initial <tt>config.php</tt> "
  +"with detected parameters for your wiki."
  +msgstr ""
  +
  +# ../plugin/rename.php:27
  +#: ../monisetup.php:251
  +#, fuzzy
  +msgid "Reload"
  +msgstr "Renommer"
  +
  +#: ../monisetup.php:254
  +msgid "WARN"
  +msgstr ""
  +
  +#: ../monisetup.php:255
  +msgid ""
  +"Please execute the following command after you have completed your "
  +"configuration."
  +msgstr ""
  +
  +# ../wikilib.php:814
  +#: ../monisetup.php:266
  +#, fuzzy, c-format
  +msgid "FATAL: %s directory is not writable"
  +msgstr "%s n'est pas ditable"
  +
  +# ../wikilib.php:581
  +#: ../monisetup.php:267
  +#, fuzzy
  +msgid "Please execute the following command."
  +msgstr "Merci d'effacer ce fichier manuellement."
  +
  +# ../wikilib.php:814
  +#: ../monisetup.php:286
  +#, fuzzy, c-format
  +msgid "%s directory is not writable"
  +msgstr "%s n'est pas ditable"
  +
  +# ../wikilib.php:814
  +#: ../monisetup.php:303
  +#, fuzzy, c-format
  +msgid "%s is not writable"
  +msgstr "%s n'est pas ditable"
  +
  +# ../plugin/rename.php:14
  +#: ../monisetup.php:310 ../monisetup.php:316
  +#, fuzzy, c-format
  +msgid "%s is created now"
  +msgstr "\"%s\" est renomm !"
  +
  +# ../wikilib.php:814
  +#: ../monisetup.php:326
  +#, fuzzy, c-format
  +msgid "%s is writable"
  +msgstr "%s n'est pas ditable"
  +
  +#: ../monisetup.php:426
  +msgid "Click here to toggle all"
  +msgstr ""
  +
  +# ../wikilib.php:550
  +#: ../monisetup.php:427
  +#, fuzzy
  +msgid "Deselect all"
  +msgstr "Effacer les fichiers slectionns"
  +
  +#: ../monisetup.php:432
  +msgid "Please be careful to deselect these pages"
  +msgstr ""
  +
  +#: ../monisetup.php:706
  +msgid "MoniWiki"
  +msgstr ""
  +
  +#: ../monisetup.php:709
  +msgid "'config.php' is not writable !"
  +msgstr ""
  +
  +#: ../monisetup.php:710
  +msgid ""
  +"Please execute <tt>'monisetup.sh'</tt> or <tt>chmod a+w config.php</tt> "
  +"first to change your settings."
  +msgstr ""
  +
  +# ../wiki.php:3024
  +#: ../monisetup.php:737
  +#, fuzzy
  +msgid "Invalid password error !"
  +msgstr "Merci d'entrer un mot de passe valide"
  +
  +#: ../monisetup.php:738
  +msgid ""
  +"If you can't remember your admin password, delete password entry in the "
  +"'config.php' and restart 'monisetup'"
  +msgstr ""
  +
  +#: ../monisetup.php:770
  +#, c-format
  +msgid "Updated Configutations for this %s"
  +msgstr ""
  +
  +# ../wikilib.php:887
  +#: ../monisetup.php:789
  +#, fuzzy
  +msgid "Configurations are saved successfully"
  +msgstr "Mail envoy avec succs"
  +
  +#: ../monisetup.php:790
  +msgid ""
  +"WARN: Please check <a href='monisetup.php'> your saved configurations</a>"
  +msgstr ""
  +
  +#: ../monisetup.php:791
  +msgid "If all is good, change 'config.php' permission as 644."
  +msgstr ""
  +
  +#: ../monisetup.php:803
  +msgid "Welcome to MoniWiki ! This is your first installation"
  +msgstr ""
  +
  +#: ../monisetup.php:810
  +msgid "Default settings are loaded..."
  +msgstr ""
  +
  +# ../wikilib.php:887
  +#: ../monisetup.php:819
  +#, fuzzy
  +msgid "Initial configurations are saved successfully."
  +msgstr "Mail envoy avec succs"
  +
  +#: ../monisetup.php:820
  +msgid "Goto <a href='monisetup.php'>MoniSetup</a> again to configure details"
  +msgstr ""
  +
  +# ../plugin/minilogin.php:30
  +#: ../monisetup.php:837 ../monisetup.php:839 ../monisetup.php:935
  +#: ../monisetup.php:937
  +#, fuzzy, c-format
  +msgid "goto %s"
  +msgstr "ou %s"
  +
  +# ../wikilib.php:557 ../wikilib.php:559
  +#: ../monisetup.php:842
  +#, fuzzy
  +msgid "No WikiSeeds are selected"
  +msgstr "Aucun fichier n'est slectionn !"
  +
  +#: ../monisetup.php:853
  +#, c-format
  +msgid "Preview current settings for this %s"
  +msgstr ""
  +
  +#: ../monisetup.php:855
  +#, c-format
  +msgid "Read current settings for this %s"
  +msgstr ""
  +
  +#: ../monisetup.php:883
  +msgid "Change your settings"
  +msgstr ""
  +
  +#: ../monisetup.php:885
  +msgid "WARN: You have to enter your Admin Password"
  +msgstr ""
  +
  +#: ../monisetup.php:887 ../monisetup.php:930
  +#, c-format
  +msgid "WARN: You have no WikiSeed on your %s"
  +msgstr ""
  +
  +# ../plugin/quicklinks.php:50
  +#: ../monisetup.php:888 ../monisetup.php:931
  +#, fuzzy, c-format
  +msgid "If you want to put wikiseeds on your wiki %s now"
  +msgstr "Voulez vous mettre  jour vos liens rapides ?"
  +
  +#: ../monisetup.php:889 ../monisetup.php:932
  +msgid "Click here"
  +msgstr ""
  +
  +#: ../monisetup.php:924 ../monisetup.php:926
  +msgid "Update"
  +msgstr ""
  +
   # ../locale/dummy.php:3
   #: ../locale/dummy.php:3
   msgid "FrontPage"
  @@ -2320,6 +2904,13 @@
   msgid "TrackBack"
   msgstr ""
   
  +# ../wiki.php:2950
  +#, fuzzy
  +#~ msgid "%s or click %s to search title.\n"
  +#~ msgstr ""
  +#~ " ou cliquer sur %s pour faire une recherche en texte intgral de cette "
  +#~ "page.\n"
  +
   # ../wikilib.php:507
   #~ msgid "Info. for %s"
   #~ msgstr "Information sur %s"
  
  
  
  1.25      +1165 -631 moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- ko.po	28 Nov 2008 02:22:11 -0000	1.24
  +++ ko.po	16 Dec 2008 12:37:18 -0000	1.25
  @@ -5,160 +5,160 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1.3\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2008-11-28 11:21+0900\n"
  -"PO-Revision-Date: 2008-11-28 11:20+0900\n"
  -"Last-Translator: Won-kyu Park <wkpark@kldp.org>\n"
  -"Language-Team: ko <ko@li.org>\n"
  +"POT-Creation-Date: 2008-12-16 21:07+0900\n"
  +"PO-Revision-Date: 2008-12-11 12:20+0900\n"
  +"Last-Translator: Won-Kyu Park <wkpark@kldp.org>\n"
  +"Language-Team: Won-Kyu Park <wkpark@kldp.org>\n"
   "MIME-Version: 1.0\n"
  -"Content-Type: text/plain; charset=EUC-KR\n"
  +"Content-Type: text/plain; charset=UTF-8\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  -#: ../plugin/Attachment.php:70 ../plugin/Attachment.php:293
  +#: ../plugin/Attachment.php:70 ../plugin/Attachment.php:331
   #, c-format
   msgid "Upload new Attachment \"%s\""
  -msgstr ""
  +msgstr "새로운 첨부 \"%s\"파일 업로드"
   
  -#: ../plugin/Attachment.php:285
  +#: ../plugin/Attachment.php:323
   msgid "or paste a new png picture"
  -msgstr "Ȥ  ׸ ̱"
  +msgstr "혹은 새 그림 붙이기"
   
  -#: ../plugin/Attachment.php:290
  +#: ../plugin/Attachment.php:328
   msgid "or draw a new gif picture"
  -msgstr "Ȥ  ׸ ׸"
  +msgstr "혹은 새 그림 그리기"
   
  -#: ../plugin/Attachment.php:296
  +#: ../plugin/Attachment.php:334
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
  -msgstr ""
  +msgstr "새로운 첨부파일 \"%s\"을(를) \"%s\"(으)로 업로드"
   
   #: ../plugin/BabelFish.php:16
   msgid "BabelFish Translation"
  -msgstr ""
  +msgstr "바벨피쉬 번역"
   
   #: ../plugin/BabelFish.php:29
   #, c-format
   msgid "Translate %s to %s"
  -msgstr "%s %s() ϱ"
  +msgstr "%s에서 %s(으)로 번역하기"
   
   #: ../plugin/Blog.php:84
   #, c-format
   msgid "Blog cache of \"%s\" is refreshed"
  -msgstr ""
  +msgstr "\"%s\"에 대한 블로그 캐쉬가 갱신됨"
   
   #: ../plugin/Blog.php:108
   #, c-format
   msgid "\"%s\" is updated"
  -msgstr "\"%s\"() ŵǾϴ"
  +msgstr "\"%s\"(이)가 갱신 되었음"
   
   #: ../plugin/Blog.php:113
   msgid "Add Blog"
  -msgstr ""
  +msgstr "블로그 더하기"
   
   #: ../plugin/Blog.php:154
   msgid "Error: No blog entry found!"
  -msgstr ""
  +msgstr "오류: 블로그 항목이 없습니다!"
   
  -#: ../plugin/Blog.php:164 ../plugin/Blog.php:166 ../plugin/Comment.php:219
  +#: ../plugin/Blog.php:164 ../plugin/Blog.php:166 ../plugin/Comment.php:221
   msgid "Error: Don't make a clone!"
  -msgstr ":   !"
  +msgstr "오류: 복제를 만들지 마세요!"
   
   #: ../plugin/Blog.php:192
   #, c-format
   msgid "Comment added to \"%s\""
  -msgstr ""
  +msgstr "\"%s\"에 댓글이 더해졌습니다"
   
   #: ../plugin/Blog.php:195
   #, c-format
   msgid "Blog entry added to \"%s\""
  -msgstr "α ׸ \"%s\" ϴ"
  +msgstr "블로그 항목이 \"%s\"에 더해졌습니다"
   
   #: ../plugin/Blog.php:197
   #, c-format
   msgid "Blog entry \"%s\" added"
  -msgstr "α ׸ \"%s\" ϴ"
  +msgstr "블로그 항목 \"%s\"이 더해졌습니다"
   
   #: ../plugin/Blog.php:199
   msgid "Blog entry added"
  -msgstr "α ׸ ϴ"
  +msgstr "블로그 항목 더해졌습니다"
   
   #: ../plugin/Blog.php:240
   #, c-format
   msgid "Add Comment to \"%s\""
  -msgstr ""
  +msgstr "\"%s\"에 댓글 더하기"
   
   #: ../plugin/Blog.php:242
   #, c-format
   msgid "Add Blog entry to \"%s\""
  -msgstr "\"%s\" α ׸ ϱ"
  +msgstr "\"%s\"에 블로그 항목 더하기"
   
  -#: ../plugin/Blog.php:260 ../plugin/Blog.php:333
  +#: ../plugin/Blog.php:260 ../plugin/Blog.php:332
   msgid "Name"
  -msgstr "̸"
  +msgstr "이름"
   
  -#: ../plugin/Blog.php:262 ../plugin/Blog.php:334
  +#: ../plugin/Blog.php:262 ../plugin/Blog.php:333
   msgid "Title"
  -msgstr ""
  +msgstr "제목"
   
  -#: ../plugin/Blog.php:268 ../wikilib.php:900
  +#: ../plugin/Blog.php:268 ../wikilib.php:908
   msgid "GUI"
   msgstr ""
   
   #: ../plugin/Blog.php:277 ../plugin/Comment.php:104
   msgid "Don't add a signature"
  -msgstr " ʱ"
  +msgstr "서명하지 않기"
   
   #: ../plugin/Blog.php:299
   msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
  -msgstr "<b>μ</b> ---- α   ʽϴ."
  +msgstr "<b>가로선</b> ----는 블로그일 경우 적용되지 않습니다."
   
   #: ../plugin/BlogChanges.php:198
   msgid "Category: "
  -msgstr ""
  +msgstr "분류: "
   
   #: ../plugin/BlogChanges.php:200 ../locale/dummy.php:7
   msgid "BlogChanges"
  -msgstr "ٲ α"
  +msgstr "바뀐 블로그"
   
   #: ../plugin/BlogChanges.php:246
   #, c-format
   msgid "Invalid category expr \"%s\""
  -msgstr "߸ з Խ \"%s\""
  +msgstr "잘못된 분류 표현식\"%s\""
   
   #: ../plugin/BlogChanges.php:378 ../plugin/BlogChanges.php:380
   #: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
   msgid "Anonymous"
  -msgstr ""
  +msgstr "아무개"
   
   #: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
   #, c-format
   msgid "%d comment"
  -msgstr " %d"
  +msgstr "댓글 %d개"
   
   #: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
   #, c-format
   msgid "%d comments"
  -msgstr " %d"
  +msgstr "댓글 %d개"
   
  -#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:206
  +#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:208
   #: ../plugin/processor/blog.php:78
   msgid "Add comment"
  -msgstr " ޱ"
  +msgstr "댓글 달기"
   
   #: ../plugin/BlogChanges.php:423 ../plugin/processor/blog.php:97
   msgid "track back"
  -msgstr "Ʈ"
  +msgstr "트랙백"
   
   #: ../plugin/BlogChanges.php:443
   msgid "Previous"
  -msgstr ""
  +msgstr "이전"
   
   #: ../plugin/BlogChanges.php:446
   msgid "Next"
  -msgstr ""
  +msgstr "다음"
   
   #: ../plugin/Clip.php:28
   msgid "Paste a new picture"
  -msgstr " ׸ ̱"
  +msgstr "새 그림 붙이기"
   
   #: ../plugin/Clip.php:50 ../plugin/Draw.php:119
   msgid "Fatal error !"
  @@ -166,252 +166,331 @@
   
   #: ../plugin/Clip.php:53 ../plugin/Draw.php:122
   msgid "No filename given"
  -msgstr " ̸ "
  +msgstr "파일 이름이 없음"
   
   #: ../plugin/Clip.php:72
   msgid "Clipboard"
  -msgstr ""
  +msgstr "클립보드"
   
   #: ../plugin/Clip.php:81
   msgid "Cut & Paste a Clipboard Image"
  -msgstr "Ŭ ̹ ߸ ̱"
  +msgstr "클립보드의 이미지를 잘르고 붙이기"
   
   #: ../plugin/Comment.php:87
   msgid "Comment"
  -msgstr " ޱ"
  +msgstr "댓글 달기"
   
  -#: ../plugin/Comment.php:88 ../wikilib.php:896
  +#: ../plugin/Comment.php:88 ../wikilib.php:904 ../monisetup.php:922
   msgid "Preview"
  -msgstr "̸"
  +msgstr "미리보기"
   
   #: ../plugin/Comment.php:102
   msgid "Username"
  -msgstr "̸"
  +msgstr "이름"
   
  -#: ../plugin/Comment.php:124
  +#: ../plugin/Comment.php:125
   msgid "Page is not writable"
  -msgstr "  ϴ"
  +msgstr "쓰기가능하지 않음"
   
  -#: ../plugin/Comment.php:127
  +#: ../plugin/Comment.php:128
   msgid "You are not allowed to add a comment."
  -msgstr "Comment  ʽϴ."
  +msgstr "Comment는 허락되지 않습니다."
   
  -#: ../plugin/Comment.php:128 ../plugin/Keywords.php:372
  +#: ../plugin/Comment.php:129 ../plugin/Keywords.php:372
   msgid "Page does not exists"
  -msgstr " ϴ"
  +msgstr "페이지가 없습니다"
   
  -#: ../plugin/Comment.php:163 ../plugin/userform.php:119
  -#: ../plugin/userform.php:182 ../plugin/userform.php:205
  +#: ../plugin/Comment.php:164 ../plugin/userform.php:115
  +#: ../plugin/userform.php:178 ../plugin/userform.php:201
   msgid "Invalid ticket !"
  -msgstr ""
  +msgstr "잘못된 티켓 !"
   
  -#: ../plugin/Comment.php:167 ../plugin/userform.php:121
  -#: ../plugin/userform.php:207
  +#: ../plugin/Comment.php:169 ../plugin/userform.php:117
  +#: ../plugin/userform.php:203
   msgid "You need a ticket !"
  -msgstr ""
  +msgstr "티켓이 필요합니다 !"
   
  -#: ../plugin/Comment.php:189 ../plugin/Gallery.php:171 ../wikilib.php:1401
  -#: ../wikilib.php:1547
  +#: ../plugin/Comment.php:191 ../plugin/Gallery.php:171 ../plugin/bbs.php:1009
  +#: ../wikilib.php:1426 ../wikilib.php:1572
   msgid ""
   "Sorry, can not save page because some messages are blocked in this wiki."
  -msgstr "˼մϴ. Ư ޽ Ǿ    ϴ."
  +msgstr "죄송합니다. 특정 메시지가 금지되어 페이지를 저장할 수 없습니다."
   
  -#: ../plugin/Comment.php:195
  +#: ../plugin/Comment.php:197
   msgid "Preview comment"
  -msgstr "̸"
  +msgstr "미리보기"
   
  -#: ../plugin/Comment.php:326
  +#: ../plugin/Comment.php:328
   #, c-format
   msgid "%s is commented successfully"
  -msgstr "%s   ÷Ǿϴ"
  +msgstr "%s에 댓글이 성공적으로 첨가되었습니다"
   
  -#: ../plugin/Comment.php:327
  +#: ../plugin/Comment.php:329
   msgid "Comment added successfully"
  -msgstr " ÷Ǿϴ"
  +msgstr "댓글이 성공적으로 저장되었습니다"
   
   #: ../plugin/Diff.php:207 ../plugin/Info.php:220
   msgid "No older revisions available"
  -msgstr "  ϴ"
  +msgstr "옛 버전이 없습니다"
   
  -#: ../plugin/Diff.php:212 ../plugin/Info.php:226
  +#: ../plugin/Diff.php:212 ../plugin/Info.php:226 ../plugin/rcsexport.php:13
  +#: ../plugin/rcsimport.php:13
   msgid "Version info is not available in this wiki"
  -msgstr ""
  +msgstr "버전 정보는 현 위키에서 사용할 수 없습니다"
   
  -#: ../plugin/Diff.php:223 ../wikilib.php:1534
  +#: ../plugin/Diff.php:223 ../wikilib.php:1559
   msgid "No difference found"
  -msgstr "ȭ ϴ"
  +msgstr "변화가 없습니다"
   
   #: ../plugin/Diff.php:227
   msgid "Difference between versions"
  -msgstr " "
  +msgstr "버전간의 차이점"
   
   #: ../plugin/Diff.php:229 ../plugin/Diff.php:341
   #, c-format
   msgid "Difference between r%s and r%s"
  -msgstr "r%s r%s "
  +msgstr "r%s과 r%s의 차이점"
   
   #: ../plugin/Diff.php:232 ../plugin/Diff.php:343
   #, c-format
   msgid "Difference between r%s and the current"
  -msgstr "r%s   "
  +msgstr "r%s과 현재 버전의 차이점"
   
   #: ../plugin/Diff.php:345
   msgid "latest changes"
  -msgstr "ֱ ٲ"
  +msgstr "최근 바뀐점"
   
   #: ../plugin/Draw.php:36
   msgid "Draw new picture"
  -msgstr " ׸ "
  +msgstr "새 그림 만들기"
   
   #: ../plugin/Draw.php:92 ../plugin/UploadFile.php:250
   #, c-format
   msgid "Fail to copy \"%s\" to \"%s\""
  -msgstr ""
  +msgstr "\"%s\"를 \"%s\"로 복사하기 실패"
   
   #: ../plugin/Draw.php:146
   msgid "Edit drawing"
  -msgstr "׸ ׸"
  +msgstr "그림 그리기"
   
   #: ../plugin/Draw.php:155
   msgid "Edit new drawing"
  -msgstr " ׸ ׸"
  +msgstr "새 그림 그리기"
   
   #: ../plugin/DueDate.php:41
   #, c-format
   msgid "%d day(s) left until %s."
  -msgstr "%2$s %1$d ҽϴ."
  +msgstr "%2$s까지 %1$d일 남았습니다."
   
   #: ../plugin/DueDate.php:43
   msgid "It's today."
  -msgstr "Դϴ."
  +msgstr "오늘입니다."
   
   #: ../plugin/DueDate.php:45
   #, c-format
   msgid "%d day(s) passed from %s."
  -msgstr "%2$sκ %1$d ϴ."
  +msgstr "%2$s로부터 %1$d일 지났습니다."
   
  -#: ../plugin/FastSearch.php:44 ../plugin/FullSearch.php:80
  +#: ../plugin/FastSearch.php:44 ../plugin/FullSearch.php:90
   msgid "No search text"
  -msgstr ""
  +msgstr "서치 단어 없음"
   
   #: ../plugin/FastSearch.php:50
   msgid "Couldn't open search database, sorry."
  -msgstr ""
  +msgstr "데이타베이스 파일을 열 수 없습니다."
   
   #: ../plugin/FastSearch.php:114 ../plugin/FullSearch.php:19
   #, c-format
   msgid "Full text search for \"%s\""
  -msgstr "\"%s\"() ü ãƺ"
  +msgstr "\"%s\"을(를) 전체 찾아보기"
   
  -#: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:35
  +#: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:38
  +#: ../wikilib.php:1347
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
  -msgstr "%3$s ߿ %1$s ߰ߵǾϴ"
  +msgstr "%3$s의 페이지중에 %1$s개가 발견되었습니다"
   
  -#: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:37
  +#: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  +#: ../wikilib.php:1349
   msgid "page"
  -msgstr ""
  +msgstr "페이지"
   
  -#: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:37
  +#: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  +#: ../wikilib.php:1349
   msgid "pages"
  -msgstr ""
  +msgstr "페이지"
   
   #: ../plugin/FullSearch.php:15
   #, c-format
   msgid "BackLinks search for \"%s\""
  -msgstr "\"%s\"  ũ ã"
  +msgstr "\"%s\"에 대한 역링크 찾기"
   
   #: ../plugin/FullSearch.php:17
   #, c-format
   msgid "KeyWords search for \"%s\""
  -msgstr "\"%s\"  Ű ġ"
  +msgstr "\"%s\"에 대한 키워드 서치"
   
  -#: ../plugin/FullSearch.php:40
  +#: ../plugin/FullSearch.php:43
   msgid "Show Context."
  -msgstr ""
  +msgstr "문맥 보기."
   
  -#: ../plugin/FullSearch.php:44 ../plugin/VisualTour.php:124 ../wiki.php:4203
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:124 ../wiki.php:4340
   msgid "Refresh"
  -msgstr ""
  +msgstr "갱신"
   
  -#: ../plugin/FullSearch.php:45
  +#: ../plugin/FullSearch.php:48
   #, c-format
   msgid " (%s search results)"
  -msgstr " (ġ  %s)"
  +msgstr " (서치 결과를 %s)"
  +
  +#: ../plugin/FullSearch.php:51
  +#, c-format
  +msgid "You can also click %s to search title.\n"
  +msgstr "%s을 눌러 제목 찾기를 할 수 있습니다.\n"
  +
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5180 ../wiki.php:5187
  +#: ../wikilib.php:1357
  +msgid "here"
  +msgstr "여기"
  +
  +#: ../plugin/FullSearch.php:74
  +msgid "Display context of search results"
  +msgstr "서치 결과 문맥 보기"
   
  -#: ../plugin/FullSearch.php:129
  +#: ../plugin/FullSearch.php:75
  +msgid "Search BackLinks only"
  +msgstr "역링크만 찾기"
  +
  +#: ../plugin/FullSearch.php:76
  +msgid "Case-sensitive searching"
  +msgstr "대소문자 구별"
  +
  +#: ../plugin/FullSearch.php:77 ../wikilib.php:2625 ../wikilib.php:2686
  +msgid "Go"
  +msgstr "가기"
  +
  +#: ../plugin/FullSearch.php:140
   msgid "Empty expression"
  -msgstr ""
  +msgstr "비어있는 표현식"
   
  -#: ../plugin/FullSearch.php:133 ../wikilib.php:2614
  +#: ../plugin/FullSearch.php:144 ../wikilib.php:2646
   #, c-format
   msgid "Invalid search expression \"%s\""
  -msgstr "߸ ã ǥ \"%s\""
  +msgstr "잘못된 찾기 표현식 \"%s\""
   
   #: ../plugin/Gallery.php:242 ../plugin/UploadedFiles.php:257
   msgid "No files found"
  -msgstr " ϴ"
  +msgstr "페이지가 없습니다"
   
   #: ../plugin/Gallery.php:334 ../plugin/Gallery.php:347
   msgid "add comment"
  -msgstr " ޱ"
  +msgstr "댓글 달기"
   
   #: ../plugin/Gallery.php:344
   msgid "show comments"
  -msgstr " "
  +msgstr "댓글 보기"
   
  -#: ../plugin/Gallery.php:393 ../plugin/Gallery.php:397 ../wikilib.php:1388
  -#: ../wikilib.php:1532
  +#: ../plugin/Gallery.php:393 ../plugin/Gallery.php:397 ../wikilib.php:1413
  +#: ../wikilib.php:1557
   #, c-format
   msgid "Go back or return to %s"
  -msgstr "ڷ Ȥ %s() "
  +msgstr "뒤로 혹은 %s(으)로 가기"
   
   #: ../plugin/Gallery.php:394
   msgid "Comments are edited"
  -msgstr ""
  +msgstr "댓글이 편집되었습니다"
   
   #: ../plugin/Gallery.php:398
   msgid "Comments is added"
  -msgstr ""
  +msgstr "댓글이 더해졌습니다"
   
   #: ../plugin/ImportUrl.php:132
   msgid "Import URL"
  -msgstr ""
  +msgstr "URL 가져오기"
   
   #: ../plugin/Info.php:30
   msgid "Diff"
  -msgstr ""
  +msgstr "변화"
   
   #: ../plugin/Info.php:34
   msgid "Revision History"
  -msgstr " 丮"
  +msgstr "버전 히스토리"
  +
  +#: ../plugin/Info.php:37
  +msgid "ver."
  +msgstr "버전."
  +
  +#: ../plugin/Info.php:37
  +msgid "Date and Changes"
  +msgstr "날짜와 바뀐점"
  +
  +#: ../plugin/Info.php:38
  +msgid "Editor"
  +msgstr "고친이"
  +
  +#: ../plugin/Info.php:41
  +msgid "actions"
  +msgstr "액션"
  +
  +#: ../plugin/Info.php:42
  +msgid "admin."
  +msgstr "관리."
   
   #: ../plugin/Info.php:58
   msgid "Show all revisions"
  -msgstr ""
  +msgstr "모든 버전 보기"
   
   #: ../plugin/Info.php:91
   msgid "Yesterday"
  -msgstr ""
  +msgstr "어제"
   
   #: ../plugin/Info.php:92
   #, c-format
   msgid "%s days ago"
  -msgstr ""
  +msgstr "%s일 전"
   
   #: ../plugin/Info.php:94
   #, c-format
   msgid "%s hours ago"
  -msgstr ""
  +msgstr "%s시간 전"
   
   #: ../plugin/Info.php:96
   #, c-format
   msgid "%s min ago"
  -msgstr ""
  +msgstr "%s분 전"
   
   #: ../plugin/Info.php:166
   msgid "diff"
  -msgstr ""
  +msgstr "변경점"
  +
  +#: ../plugin/Info.php:189 ../plugin/rename.php:80
  +msgid "show only"
  +msgstr "보기만 하기"
  +
  +#: ../plugin/Info.php:193
  +msgid "purge"
  +msgstr "삭제"
  +
  +#: ../plugin/JME.php:55
  +#, c-format
  +msgid "Draw a new molecule '%s'"
  +msgstr "새 분자 그리기 '%s'"
  +
  +#: ../plugin/JME.php:57
  +msgid "Draw a new molecule"
  +msgstr "새 분자 그리기"
  +
  +#: ../plugin/JME.php:95
  +msgid "Molecule successfully added"
  +msgstr "분자가 성공적으로 저장됨"
  +
  +#: ../plugin/JME.php:101
  +msgid "Edit Molecule"
  +msgstr "분자 편집"
  +
  +#: ../plugin/JME.php:131
  +msgid "Edit new molecule"
  +msgstr "새 분자 편집"
   
   #: ../plugin/Keywords.php:330
   msgid "hits"
  @@ -419,358 +498,395 @@
   
   #: ../plugin/Keywords.php:338
   msgid "add keywords"
  -msgstr "Ű ϱ"
  +msgstr "키워드 더하기"
   
   #: ../plugin/Keywords.php:341
   msgid "Update keywords"
  -msgstr "Ű "
  +msgstr "키워드 갱신"
   
   #: ../plugin/Keywords.php:343
   msgid "Add keywords"
  -msgstr "Ű ϱ"
  +msgstr "키워드 더하기"
   
   #: ../plugin/Keywords.php:344
   msgid "Add as common words"
  -msgstr "Ϲ ܾ ߰"
  +msgstr "일반 단어로 추가"
   
   #: ../plugin/Keywords.php:345
   msgid "Unselect all"
  -msgstr "  "
  +msgstr "모두 선택 취소"
   
   #: ../plugin/Keywords.php:346
   msgid "Suggest new Keywords"
  -msgstr " Ű "
  +msgstr "새 키워드 제안"
   
   #: ../plugin/Keywords.php:355
   msgid "select language"
  -msgstr ""
  +msgstr "언어 고르기"
   
   #: ../plugin/Keywords.php:371
   msgid "You are not able to add keywords."
  -msgstr "Ű带 ߰  ϴ."
  +msgstr "키워드를 추가할 수 없습니다."
   
   #: ../plugin/Keywords.php:385
   #, c-format
   msgid "%s is not found."
  -msgstr "%s() ã  ϴ"
  +msgstr "%s을(를) 찾을 수 없습니다"
   
   #: ../plugin/Keywords.php:501
   msgid "Common words are updated"
  -msgstr ""
  +msgstr "일반 단어가 갱신됨"
   
   #: ../plugin/Keywords.php:548
   #, c-format
   msgid "Keywords for %s are updated"
  -msgstr ""
  +msgstr "%s에 대한 키워드가 갱신됨"
   
   #: ../plugin/Keywords.php:574
   msgid "Keywords are updated"
  -msgstr "Ű尡 ŵǾϴ"
  +msgstr "키워드가 갱신되었습니다"
   
   #: ../plugin/Keywords.php:576
   msgid "There are no changes found"
  -msgstr "ȭ ϴ"
  +msgstr "변화가 없습니다"
   
   #: ../plugin/Keywords.php:589
   msgid "Update with these Keywords"
  -msgstr "Ű ϱ"
  +msgstr "키워드 갱신하기"
   
   #: ../plugin/Keywords.php:609 ../plugin/Keywords.php:613
   msgid "alphabetically"
  -msgstr ""
  +msgstr "알파벳순"
   
   #: ../plugin/Keywords.php:610
   msgid "by frequency"
  -msgstr "󵵼"
  +msgstr "빈도수"
   
   #: ../plugin/Keywords.php:612
   msgid "by size"
  -msgstr "ũ"
  +msgstr "크기"
   
   #: ../plugin/Keywords.php:618
   #, c-format
   msgid "Keywords list %s (or %s)"
  -msgstr "%s Ű  (Ȥ %s)"
  +msgstr "%s순 키워드 목록 (혹은 %s순)"
   
   #: ../plugin/Keywords.php:623
   #, c-format
   msgid "Select keywords for %s"
  -msgstr "%s  Ű带 "
  +msgstr "%s에 대해 키워드를 고르세요"
   
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1230 ../wikilib.php:2603
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1238 ../wikilib.php:2633
   msgid "Use more specific text"
  -msgstr "  ڼ Էϼ"
  +msgstr "좀 더 자세히 입력하세요"
   
   #: ../plugin/LikePages.php:109
   msgid "These pages share a similar word..."
  -msgstr " ̸ κ Ե ..."
  +msgstr "비슷한 이름이 부분적으로 포함된 페이지..."
   
   #: ../plugin/LikePages.php:123
   msgid "These pages share an initial or final title word..."
  -msgstr "ó κ ̸ Ե ..."
  +msgstr "처음과 마지막부분의 이름이 포함된 페이지..."
   
   #: ../plugin/LikePages.php:143
   msgid "If you can't find this page, "
  -msgstr ""
  +msgstr "페이지를 찾으실 수 없으면"
   
   #: ../plugin/LikePages.php:148
   msgid "No similar pages found"
  -msgstr "  ϴ"
  +msgstr "비슷한 페이지가 없습니다"
   
   #: ../plugin/LikePages.php:150
   msgid "You are strongly recommened to find it in MetaWikis. "
  -msgstr ""
  +msgstr "메타위키를 찾아보실 것을 권해드립니다. "
   
   #: ../plugin/LikePages.php:153
   #, c-format
   msgid "Like \"%s\""
  -msgstr ""
  +msgstr "\"%s\"와 비슷한"
   
   #: ../plugin/LikePages.php:156
   msgid "Search all MetaWikis"
  -msgstr ""
  +msgstr "모든 메타위키 검색"
   
   #: ../plugin/LikePages.php:157
   msgid "Slow Slow"
  -msgstr ""
  +msgstr "매우 느림"
   
   #: ../plugin/Navigation.php:19
   msgid "No Index page found"
  -msgstr "ε  ϴ"
  +msgstr "인덱스 페이지가 없습니다"
   
   #: ../plugin/OeKaki.php:36
   msgid "Draw a new picture"
  -msgstr " ׸ ׸"
  +msgstr "새 그림 그리기"
   
   #: ../plugin/OeKaki.php:118
   msgid "Create new picture"
  -msgstr " ׸ "
  +msgstr "새 그림 만들기"
   
   #: ../plugin/OeKaki.php:127
   msgid "Edit Image"
  -msgstr "׸ ġ"
  +msgstr "그림 고치기"
  +
  +#: ../plugin/Rating.php:58
  +msgid "Awful!"
  +msgstr "최악!"
  +
  +#: ../plugin/Rating.php:59
  +msgid "Not the worst ever."
  +msgstr "이보다 나쁠수 없음"
  +
  +#: ../plugin/Rating.php:60
  +msgid "Not bad!"
  +msgstr "나쁘지 않음!"
  +
  +#: ../plugin/Rating.php:61
  +msgid "Useful!"
  +msgstr "유용함"
  +
  +#: ../plugin/Rating.php:62
  +msgid "Very Gooood!"
  +msgstr "매우 좋음"
  +
  +#: ../plugin/Rating.php:84 ../plugin/Vote.php:67
  +#: ../plugin/security/community.php:26 ../plugin/security/community.php:36
  +#: ../plugin/security/community.php:46 ../plugin/security/community.php:61
  +#: ../plugin/security/mustlogin.php:29 ../plugin/security/mustlogin.php:40
  +#: ../plugin/security/mustlogin.php:51 ../plugin/security/mustlogin.php:67
  +#: ../plugin/security/needtologin.php:29 ../plugin/security/needtologin.php:40
  +#: ../plugin/security/needtologin.php:51 ../plugin/security/userbased.php:60
  +msgid "Please Login or make your ID on this Wiki ;)"
  +msgstr "로그인하거나 ID를 만드세요 ;)"
  +
  +#: ../plugin/Rating.php:188
  +msgid "Invalid rating request !"
  +msgstr ""
  +
  +#: ../plugin/Rating.php:203
  +msgid "Rating successfully !"
  +msgstr ""
   
  -#: ../plugin/RecentChanges.php:117
  +#: ../plugin/RecentChanges.php:114
   msgid "Show changes for "
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:122
  +#: ../plugin/RecentChanges.php:119
   msgid "days ago"
  -msgstr ""
  +msgstr "몇일 전"
   
  -#: ../plugin/RecentChanges.php:209
  +#: ../plugin/RecentChanges.php:206
   msgid "set bookmark"
  -msgstr "ϸũ"
  +msgstr "북마크"
   
  -#: ../plugin/RecentChanges.php:244
  +#: ../plugin/RecentChanges.php:241 ../plugin/pagelist.php:107
  +#: ../plugin/pagelist.php:124
   #, c-format
   msgid "[%sh %sm ago]"
  -msgstr ""
  +msgstr "[%s시간 %s분 전]"
  +
  +#: ../plugin/SWFUpload.php:116
  +msgid "Files..."
  +msgstr "파일..."
  +
  +#: ../plugin/SWFUpload.php:117
  +msgid "Upload"
  +msgstr "올리기"
   
   #: ../plugin/SlideShow.php:28
   msgid "No page found"
  -msgstr " ϴ"
  +msgstr "페이지가 없습니다"
   
   #: ../plugin/SlideShow.php:102
   msgid "Start:"
  -msgstr ":"
  +msgstr "시작:"
   
   #: ../plugin/SlideShow.php:111
   msgid "End:"
  -msgstr ":"
  +msgstr "끝:"
   
   #: ../plugin/SlideShow.php:121 ../plugin/pageview.php:75
   msgid "Next:"
  -msgstr ":"
  +msgstr "다음:"
   
   #: ../plugin/SlideShow.php:131
   msgid "Prev:"
  -msgstr ":"
  +msgstr "이전:"
   
   #: ../plugin/SlideShow.php:138
   msgid "Return"
  -msgstr "ư"
  +msgstr "돌아가기"
   
   #: ../plugin/SystemInfo.php:16
   msgid "Number of Pages"
  -msgstr " "
  +msgstr "페이지 개수"
   
   #: ../plugin/SystemInfo.php:17
   msgid "HTTP Server Version"
  -msgstr ""
  +msgstr "HTTP 서버 버전"
   
   #: ../plugin/SystemInfo.php:18
   msgid "MoniWiki Version"
  -msgstr ""
  +msgstr "모니위키 버전"
   
   #: ../plugin/SystemInfo.php:19
   msgid "PHP Version"
  -msgstr ""
  +msgstr "PHP 버전"
   
   #: ../plugin/Tour.php:57
   msgid "BackLinks"
  -msgstr ""
  +msgstr "역링크"
   
   #: ../plugin/Tour.php:61
   msgid "Keywords"
  -msgstr "Ű"
  +msgstr "키워드"
   
   #: ../plugin/Tour.php:70
   #, c-format
   msgid " from %s"
  -msgstr " %s "
  +msgstr " %s에 대한"
   
   #: ../plugin/Tour.php:73
   #, c-format
   msgid "%s Tour %s"
  -msgstr "%2$s %1$s "
  +msgstr "%2$s %1$s 여행"
   
   #: ../plugin/Tour.php:121
   msgid "links"
  -msgstr ""
  +msgstr "연결"
   
   #: ../plugin/Tour.php:123
   msgid "deeper"
  -msgstr ""
  +msgstr "깊게"
   
   #: ../plugin/Tour.php:124
   #, c-format
   msgid "More %s or more %s"
  -msgstr "  %s Ȥ %s"
  +msgstr "더 많은 %s 혹은 %s"
   
   #: ../plugin/Tour.php:139
   #, c-format
   msgid "Total %d related keywords"
  -msgstr "%d   Ű"
  +msgstr "%d 개의 연관된 키워드"
   
   #: ../plugin/Tour.php:142
   #, c-format
   msgid "Total %d related pages"
  -msgstr "%d   "
  +msgstr "%d 개의 연관된 페이지"
   
   #: ../plugin/TwinPages.php:13
   #, c-format
   msgid "TwinPages of %s"
  -msgstr "%s ֵ "
  +msgstr "%s의 쌍둥이 페이지"
   
  -#: ../plugin/TwinPages.php:19 ../wiki.php:4993
  +#: ../plugin/TwinPages.php:19 ../wiki.php:5166
   msgid "See [TwinPages]: "
   msgstr ""
   
   #: ../plugin/TwinPages.php:21
   msgid "No TwinPages found."
  -msgstr "ֵ  ϴ"
  +msgstr "쌍둥이 페이지가 없습니다"
   
   #: ../plugin/UploadFile.php:147 ../plugin/UploadFile.php:161
   #, c-format
   msgid "The %s type of %s is not allowed to upload"
  -msgstr "%s %s  ε尡  ʽϴ"
  +msgstr "%s의 %s 형식은 업로드가 허락되지 않습니다"
   
   #: ../plugin/UploadFile.php:163
   #, c-format
   msgid "%s is not allowed to upload"
  -msgstr "%s() ε尡  ʽϴ"
  +msgstr "%s은(는) 업로드가 허락되지 않습니다"
   
   #: ../plugin/UploadFile.php:218
   #, c-format
   msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
  -msgstr ""
  +msgstr "파일 확장자를 \"%s\"에서 \"%s\"(으)로 바꿀 수 없음."
   
   #: ../plugin/UploadFile.php:251
   msgid "Please check your php.ini setting"
  -msgstr ""
  +msgstr "php.ini 세팅을 확인해보시기 바랍니다"
   
   #: ../plugin/UploadFile.php:261
   #, c-format
   msgid "File \"%s\" is uploaded successfully"
  -msgstr "\"%s\"  ö󰬽ϴ"
  +msgstr "\"%s\"파일이 성공적으로 올라갔습니다"
   
   #: ../plugin/UploadFile.php:300
   msgid "Files are uploaded successfully"
  -msgstr "  ö󰬽ϴ"
  +msgstr "파일이 성공적으로 올라갔습니다."
   
   #: ../plugin/UploadFile.php:344
   msgid "Replace original file"
  -msgstr ""
  +msgstr "원본 파일 교체"
   
   #: ../plugin/UploadFile.php:345
   msgid "Rename if it already exist"
  -msgstr ""
  +msgstr "이미 있을경우 이름 바꿈"
   
   #: ../plugin/UploadFile.php:350 ../plugin/rename.php:69
   msgid "Rename"
  -msgstr "̸ٲٱ"
  +msgstr "이름바꾸기"
   
   #: ../plugin/UploadFile.php:358
   #, c-format
   msgid "or %s."
  -msgstr "Ȥ %s"
  +msgstr "혹은 %s."
   
   #: ../plugin/UploadFile.php:358
   msgid "Upload files"
  -msgstr " ø"
  +msgstr "파일 올리기"
   
   #: ../plugin/UploadedFiles.php:271
   msgid "File name"
  -msgstr " ̸"
  +msgstr "파일 이름"
   
   #: ../plugin/UploadedFiles.php:272
   msgid "Size"
  -msgstr ""
  +msgstr "크기"
   
   #: ../plugin/UploadedFiles.php:273
   msgid "Date"
  -msgstr "¥"
  +msgstr "날짜"
   
   #: ../plugin/UploadedFiles.php:316
   msgid "Next page &raquo;"
  -msgstr ""
  +msgstr "다음 페이지 &raquo;"
   
   #: ../plugin/UploadedFiles.php:318
   msgid "&laquo; First page"
  -msgstr ""
  +msgstr "&laquo; 첫 페이지"
   
   #: ../plugin/UploadedFiles.php:409
   #, c-format
   msgid "Total %d files"
  -msgstr " %d  "
  +msgstr "총 %d 개 파일"
   
  -#: ../plugin/UploadedFiles.php:414 ../plugin/rename.php:77 ../wikilib.php:1069
  -#: ../wikilib.php:1946
  +#: ../plugin/UploadedFiles.php:414 ../plugin/rename.php:77
  +#: ../plugin/revert.php:82 ../wikilib.php:1077 ../wikilib.php:1967
   msgid "Password"
  -msgstr "йȣ"
  +msgstr "비밀번호"
   
  -#: ../plugin/UploadedFiles.php:415 ../wikilib.php:1047
  +#: ../plugin/UploadedFiles.php:415 ../wikilib.php:1055
   msgid "Delete selected files"
  -msgstr "õ  "
  +msgstr "선택된 파일 지우기"
   
   #: ../plugin/VisualTour.php:118
   msgid "Normal"
  -msgstr ""
  +msgstr "보통"
   
   #: ../plugin/VisualTour.php:120
   msgid "Wider"
  -msgstr "а"
  +msgstr "넓게"
   
   #: ../plugin/VisualTour.php:122
   msgid "Deeper"
  -msgstr ""
  -
  -#: ../plugin/Vote.php:67 ../plugin/security/community.php:26
  -#: ../plugin/security/community.php:36 ../plugin/security/community.php:46
  -#: ../plugin/security/community.php:61 ../plugin/security/mustlogin.php:29
  -#: ../plugin/security/mustlogin.php:40 ../plugin/security/mustlogin.php:51
  -#: ../plugin/security/mustlogin.php:67 ../plugin/security/needtologin.php:29
  -#: ../plugin/security/needtologin.php:40 ../plugin/security/needtologin.php:51
  -#: ../plugin/security/userbased.php:60
  -msgid "Please Login or make your ID on this Wiki ;)"
  -msgstr "αϰų ID 弼 ;)"
  +msgstr "깊게"
   
   #: ../plugin/Vote.php:113
   msgid "Voted successfully"
  -msgstr ""
  +msgstr "투표가 성공되었습니다"
   
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2356
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2379
   msgid "Others"
   msgstr ""
   
  @@ -784,39 +900,166 @@
   
   #: ../plugin/aclinfo.php:23
   msgid "You are wiki owner"
  -msgstr ""
  +msgstr "위키 소유자입니다"
   
   #: ../plugin/aclinfo.php:25
   msgid "You are wiki master"
  -msgstr ""
  +msgstr "위키 관리자입니다"
   
   #: ../plugin/aclinfo.php:27
   msgid "Allowed actions"
  -msgstr ""
  +msgstr "허락된 액션"
   
   #: ../plugin/aclinfo.php:32
   msgid "Denied actions"
  -msgstr ""
  +msgstr "거부된 액션"
   
   #: ../plugin/aclinfo.php:38
   msgid "Protected actions"
  +msgstr "제한된 액션"
  +
  +#: ../plugin/admin.php:136
  +msgid "Description"
  +msgstr "설명"
  +
  +#: ../plugin/admin.php:139
  +msgid "Author"
  +msgstr "저자"
  +
  +#: ../plugin/admin.php:141
  +msgid "License"
  +msgstr "저작권"
  +
  +#: ../plugin/admin.php:143
  +msgid "Depend"
  +msgstr "의존성"
  +
  +#: ../plugin/admin.php:147
  +msgid "URL"
   msgstr ""
   
  +#: ../plugin/admin.php:191
  +msgid "Enabled plugins"
  +msgstr "활성화된 플러그인"
  +
  +#: ../plugin/admin.php:193
  +msgid "Disabled plugins"
  +msgstr "비활성화된 플러그인"
  +
  +#: ../plugin/admin.php:201
  +msgid "Enabled processors"
  +msgstr "활성화된 프로세서"
  +
  +#: ../plugin/admin.php:203
  +msgid "Disabled processors"
  +msgstr "비활성화된 프로세서"
  +
  +#: ../plugin/admin.php:206
  +msgid "Plugin/Processor settings are updated"
  +msgstr "플러그인/프로세서 세팅이 갱신됨"
  +
  +#: ../plugin/admin.php:212
  +msgid "Enable/disable plugins and processors"
  +msgstr "플러그인과 프로세서 활성화/비활성화"
  +
  +#: ../plugin/atom.php:64 ../plugin/rss_rc.php:62
  +msgid "show changes"
  +msgstr "바뀐점 보기"
  +
   #: ../plugin/backup.php:42
   msgid "Your wiki is backuped successfully"
  -msgstr "Ű  Ǿϴ"
  +msgstr "백업이 성공적으로 완료되었습니다"
   
   #: ../plugin/backup.php:49
   msgid "Backup failed !"
  -msgstr ""
  +msgstr "백업 실패 !"
   
   #: ../plugin/backup.php:54
   msgid "Did you want to Backup your wiki ?"
  +msgstr "위키를 백업하시겠습니까 ?"
  +
  +#: ../plugin/bbs.php:493
  +msgid "This bbs does not exists yet. Please save this page first"
  +msgstr "현 BBS가 존재하지 않습ㄴ디ㅏ. 먼저 페이지를 저장하세요"
  +
  +#: ../plugin/bbs.php:617
  +msgid "No"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:626 ../plugin/man_get.php:115
  +msgid "Edit"
  +msgstr "고치기"
  +
  +#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1078
  +msgid "Delete"
  +msgstr "지우기"
  +
  +#: ../plugin/bbs.php:657
  +msgid "Please check article numbers."
  +msgstr "글번호를 확인해 주세요"
  +
  +#: ../plugin/bbs.php:737
  +msgid "More"
   msgstr ""
   
  +#: ../plugin/bbs.php:782
  +msgid "New"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:784
  +msgid "Read"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:800
  +#, c-format
  +msgid "Total %s articles."
  +msgstr "총 %d 개의 글"
  +
  +#: ../plugin/bbs.php:836
  +#, c-format
  +msgid "Your IP address is not allowed to %s at this BBS"
  +msgstr "IP 주소가 '%s' BBS에서 허락되지 않았습니다."
  +
  +#: ../plugin/bbs.php:890
  +msgid "Successfully deleted."
  +msgstr "성공적으로 지워졌음."
  +
  +#: ../plugin/bbs.php:922
  +msgid "Fail to post comment."
  +msgstr "댓글 등록 실패."
  +
  +#: ../plugin/bbs.php:932
  +#, c-format
  +msgid "The article %s will be deleted."
  +msgstr "게시글 %s(이)가 지워질 것입니다."
  +
  +#: ../plugin/bbs.php:974
  +msgid "Invalid HomePage address."
  +msgstr "잘못된 홈페이지 주소."
  +
  +#: ../plugin/bbs.php:987
  +msgid "No Name error."
  +msgstr "이름이 없습ㄴ다."
  +
  +#: ../plugin/bbs.php:997
  +msgid "No Subject error."
  +msgstr "제목이 없습니다."
  +
  +#: ../plugin/bbs.php:1025
  +msgid "New post added successfully"
  +msgstr "새글이 성공적으로 등록되었습니다."
  +
  +#: ../plugin/cacheadmin.php:105
  +msgid "You are not WikiMaster!!"
  +msgstr "위키관리자가 아닙니다!!"
  +
  +#: ../plugin/cacheadmin.php:120
  +msgid "Clear cache dirs"
  +msgstr "캐쉬 디렉토리 지우기"
  +
   #: ../plugin/chat.php:36
   msgid "No messages"
  -msgstr ""
  +msgstr "메시지 없음"
   
   #: ../plugin/chmod.php:18
   #, c-format
  @@ -833,83 +1076,93 @@
   msgid "Change permission of \"%s\""
   msgstr ""
   
  -#: ../plugin/css.php:29 ../plugin/css.php:37
  +#: ../plugin/css.php:33 ../plugin/css.php:41
   msgid "Back to UserPreferences"
  -msgstr "UserPreferences "
  +msgstr "UserPreferences로 가기"
   
  -#: ../plugin/css.php:63
  +#: ../plugin/css.php:67
   msgid "CSS disabled !"
   msgstr ""
   
  -#: ../plugin/format.php:15
  +#: ../plugin/format.php:17
   msgid "It is a XML format !"
   msgstr ""
   
  -#: ../plugin/login.php:33
  +#: ../plugin/html2pdf.php:30
  +msgid "The TCPDF class not found!"
  +msgstr "TCPDF 클래스 찾을 수 없음!"
  +
  +#: ../plugin/login.php:29
   msgid "Login:"
  -msgstr ""
  +msgstr "로그인:"
   
  -#: ../plugin/login.php:34
  +#: ../plugin/login.php:30
   msgid "Password:"
  -msgstr ""
  +msgstr "비밀번호:"
   
  -#: ../plugin/login.php:35
  +#: ../plugin/login.php:31
   msgid "Join"
  -msgstr ""
  +msgstr "가입"
   
  -#: ../plugin/login.php:51 ../plugin/minilogin.php:29
  +#: ../plugin/login.php:47 ../plugin/minilogin.php:25
   msgid "Logout"
  -msgstr ""
  +msgstr "나가기"
   
  -#: ../plugin/login.php:52 ../plugin/minilogin.php:28 ../locale/dummy.php:3
  +#: ../plugin/login.php:48 ../plugin/minilogin.php:24 ../locale/dummy.php:3
   msgid "UserPreferences"
  -msgstr "ȯ漳"
  +msgstr "환경설정"
   
   #: ../plugin/man_get.php:17
   msgid "No manpage selected"
  -msgstr "Manpage õ ʾҽϴ"
  +msgstr "맨페이지가 선택되지 않았습니다"
   
   #: ../plugin/man_get.php:43
   msgid "No manpage found"
  -msgstr "Manpage ϴ"
  +msgstr "Manpage가 없습니다"
   
  -#: ../plugin/man_get.php:115
  -msgid "Edit"
  -msgstr "ġ"
  -
  -#: ../plugin/minilogin.php:22 ../wikilib.php:2022
  +#: ../plugin/minilogin.php:18 ../wikilib.php:2043
   msgid "Login or Join"
  -msgstr ""
  +msgstr "로그인 혹은 가입"
   
  -#: ../plugin/minilogin.php:30
  +#: ../plugin/minilogin.php:26
   #, c-format
   msgid "%s or %s"
  -msgstr "%s Ȥ %s"
  +msgstr "%s 혹은 %s"
   
   #: ../plugin/msgfmt.php:75 ../plugin/msgfmt.php:153
   #, c-format
   msgid "Translation of %s"
  -msgstr "%s "
  +msgstr "%s에대한 번역"
   
   #: ../plugin/msgfmt.php:84
   msgid "Translations are successfully updated."
  -msgstr "  ŵǾϴ"
  +msgstr "번역이 성공적으로 저장되었습니다"
   
   #: ../plugin/msgfmt.php:86
   msgid "Fail to save translations."
  -msgstr "  ߽ϴ"
  +msgstr "번역 저장을 실패했습니다"
  +
  +#: ../plugin/msgtrans.php:23 ../plugin/useradmin.php:54
  +#: ../plugin/useradmin.php:58
  +#, c-format
  +msgid "You are not allowed to \"%s\" !"
  +msgstr "'%s'은(는) 허락되지 않았습니다"
  +
  +#: ../plugin/msgtrans.php:143
  +msgid "Local translation files are successfully translated !\n"
  +msgstr "번역이 성공적으로 갱신되었습니다\n"
   
   #: ../plugin/new.php:13 ../plugin/new.php:28
   msgid "Create a new page"
  -msgstr " "
  +msgstr "페이지 만들기"
   
   #: ../plugin/new.php:26
   msgid "Page Name"
  -msgstr " ̸"
  +msgstr "페이지 이름"
   
   #: ../plugin/new.php:27
   msgid "Normalize this page name"
  -msgstr "̸ ȭϱ"
  +msgstr "페이지이름 정규화하기"
   
   #: ../plugin/pageview.php:70
   msgid "First:"
  @@ -929,19 +1182,27 @@
   msgid "raw"
   msgstr ""
   
  +#: ../plugin/processor/bts.php:178
  +msgid "Save Changes"
  +msgstr "변경 저장"
  +
  +#: ../plugin/processor/monimarkup.php:489 ../wiki.php:3809
  +msgid "edit"
  +msgstr ""
  +
   #: ../plugin/processor/vim.php:58
   msgid "Toggle line numbers"
  -msgstr ""
  +msgstr "줄번호 토글"
   
  -#: ../plugin/quicklinks.php:16 ../plugin/scrap.php:37
  +#: ../plugin/quicklinks.php:16 ../plugin/scrap.php:33
   #: ../plugin/subscribe.php:19 ../plugin/subscribe.php:55
   msgid "Please login or make your ID."
  -msgstr "αϰų ID 弼"
  +msgstr "로그인하거나 ID를 만드세요"
   
  -#: ../plugin/quicklinks.php:22 ../plugin/scrap.php:40
  +#: ../plugin/quicklinks.php:22 ../plugin/scrap.php:36
   #: ../plugin/subscribe.php:61
   msgid "Goto UserPreferences"
  -msgstr "UserPreferences "
  +msgstr "UserPreferences로 가기"
   
   #: ../plugin/quicklinks.php:23
   msgid ""
  @@ -955,7 +1216,12 @@
   
   #: ../plugin/quicklinks.php:50
   msgid "Do you want to customize your quicklinks ?"
  -msgstr ""
  +msgstr "QuickLinks를 바꾸고 싶으신가요?"
  +
  +#: ../plugin/rawblog.php:63 ../plugin/rawblog.php:73
  +#, c-format
  +msgid "Delete Blog entry \"%s\""
  +msgstr "\"%s\"에서 블로그 항목 지우기"
   
   #: ../plugin/rcs.php:13
   #, c-format
  @@ -992,7 +1258,7 @@
   
   #: ../plugin/rdf_blog.php:30 ../plugin/rss_blog.php:25
   msgid "Blog Changes"
  -msgstr "ٲ α"
  +msgstr "바뀐 블로그"
   
   # c-format
   #: ../plugin/rdf_blog.php:44 ../plugin/rss_blog.php:103
  @@ -1003,17 +1269,17 @@
   #: ../plugin/rename.php:19
   #, c-format
   msgid "\"%s\" is renamed !"
  -msgstr "%s() ̸ ٲϴ !"
  +msgstr "%s(이)가 이름이 바뀌었음 !"
   
   #: ../plugin/rename.php:35
   #, c-format
   msgid "'%s' is changed"
  -msgstr "'%s'() ٲϴ"
  +msgstr "'%s'(이)가 변경됨"
   
   #: ../plugin/rename.php:43
   #, c-format
   msgid "'%s' is renamed as '%s' successfully."
  -msgstr "'%s'() '%s'() ̸ ٲϴ"
  +msgstr "'%s'(이)가 '%s'(으)로 이름이 바뀌었습니다"
   
   #: ../plugin/rename.php:51
   #, c-format
  @@ -1023,31 +1289,27 @@
   #: ../plugin/rename.php:58
   #, c-format
   msgid "Rename \"%s\" ?"
  -msgstr "\"%s\" ̸ ٲܱ ?"
  +msgstr "\"%s\"의 이름을 바꿀까요 ?"
   
   #: ../plugin/rename.php:63
   msgid "Old name:"
  -msgstr "̸:"
  +msgstr "옛이름:"
   
   #: ../plugin/rename.php:64
   msgid "New name:"
  -msgstr "̸:"
  +msgstr "새이름:"
   
   #: ../plugin/rename.php:74
   msgid "Rename and fix Backlinks"
  -msgstr "̸ ٲٰ  ũ "
  +msgstr "이름 바꾸고 그 역링크 수정"
   
   #: ../plugin/rename.php:78
   msgid "Only WikiMaster can rename this page"
   msgstr ""
   
  -#: ../plugin/rename.php:79 ../wikilib.php:1115
  +#: ../plugin/rename.php:79 ../wikilib.php:1123
   msgid "with revision history"
  -msgstr " 丮 Բ"
  -
  -#: ../plugin/rename.php:80
  -msgid "show only"
  -msgstr ""
  +msgstr "버전 히스토리와 함께"
   
   #: ../plugin/rename.php:82
   msgid "Check backlinks"
  @@ -1059,7 +1321,7 @@
   
   #: ../plugin/restore.php:24
   msgid "Please rename your old 'text_dir' first."
  -msgstr " 'text_dir' ̸  ٲּ."
  +msgstr "예전의 'text_dir'의 이름을 먼저 바꿔주세요."
   
   #: ../plugin/restore.php:25
   msgid "e.g. \\$ mv data/text data/text_old"
  @@ -1077,7 +1339,7 @@
   #: ../plugin/restore.php:50
   #, c-format
   msgid "Restore %s ?"
  -msgstr "%s() Restoreұ ?"
  +msgstr "%s을(를) Restore할까요 ?"
   
   #: ../plugin/restore.php:67
   msgid "Restore backuped data"
  @@ -1087,18 +1349,63 @@
   msgid "Select a tarball file to restore"
   msgstr ""
   
  -#: ../plugin/rss_rc.php:62
  -msgid "show changes"
  +#: ../plugin/revert.php:23 ../wiki.php:5182
  +#, c-format
  +msgid "Old Revisions of the %s"
  +msgstr ""
  +
  +#: ../plugin/revert.php:57
  +msgid "No version control available."
  +msgstr "버전 관리를 쓸 수 없습니다"
  +
  +#: ../plugin/revert.php:61
  +#, c-format
  +msgid "%s is successfully rollback."
  +msgstr "%s(이)가 성공적으로 되돌려졌습니다."
  +
  +#: ../plugin/revert.php:66
  +msgid "Are you really want to overwrite this page ?"
  +msgstr "정말로 '%s'(을)를 덮어쓰기를 원하십니까 ?"
  +
  +#: ../plugin/revert.php:67
  +msgid "Force overwrite"
  +msgstr "덮어쓰기"
  +
  +#: ../plugin/revert.php:69
  +msgid "Are you really want to revert this page ?"
  +msgstr "정말로 되돌리시겠습니까 ?"
  +
  +#: ../plugin/revert.php:74
  +msgid "Summary"
  +msgstr "요약"
  +
  +#: ../plugin/revert.php:76
  +#, c-format
  +msgid "Rollback to revision %s"
  +msgstr "%s 버전으로 돌리기"
  +
  +#: ../plugin/revert.php:79
  +msgid "Revert page"
   msgstr ""
   
  -#: ../plugin/scrap.php:57
  +#: ../plugin/revert.php:80
  +#, c-format
  +msgid "Only WikiMaster can %s this page"
  +msgstr ""
  +
  +#: ../plugin/revert.php:80
  +#, c-format
  +msgid "revert"
  +msgstr "되돌리기"
  +
  +#: ../plugin/scrap.php:53
   msgid "Scrap lists updated."
  -msgstr "ũ  ŵǾϴ"
  +msgstr "스크랩 목록이 갱신되었습니다"
   
  -#: ../plugin/scrap.php:69
  +#: ../plugin/scrap.php:65
   #, c-format
   msgid "Do you want to scrap \"%s\" ?"
  -msgstr "\"%s\"() ũϽðڽϱ ?"
  +msgstr "\"%s\"을(를) 스크랩하시겠습니까 ?"
   
   #: ../plugin/security/acl.php:222 ../plugin/security/community.php:25
   #: ../plugin/security/community.php:35 ../plugin/security/community.php:45
  @@ -1107,7 +1414,7 @@
   #: ../plugin/security/needtologin.php:39 ../plugin/security/needtologin.php:50
   #, c-format
   msgid "You are not allowed to '%s' on this page"
  -msgstr "'%s'   ׼Դϴ."
  +msgstr "'%s'는 허락되지 않은 액션입니다."
   
   #: ../plugin/security/acl.php:223
   msgid "Please contact WikiMasters :b"
  @@ -1116,7 +1423,7 @@
   #: ../plugin/security/authbasic.php:68
   #, c-format
   msgid "You have no permission to '%s'."
  -msgstr "'%s'()  ʾҽϴ"
  +msgstr "'%s'에 대한 권한이 없습니다"
   
   #: ../plugin/security/authbasic.php:71
   msgid "You must enter a valid login ID and password to access this resource.\n"
  @@ -1129,7 +1436,7 @@
   #: ../plugin/security/wikimaster.php:38 ../plugin/security/wikimaster.php:47
   #, c-format
   msgid "You are not allowed to '%s' on this page."
  -msgstr "'%s'   ׼Դϴ."
  +msgstr "'%s'는 허락되지 않은 액션입니다."
   
   #: ../plugin/security/htaccesslogin.php:47
   msgid "Please contact the system administrator for htaccess based logins."
  @@ -1155,7 +1462,7 @@
   
   #: ../plugin/sendping.php:165
   msgid "Trackback sent"
  -msgstr "Ʈ"
  +msgstr "트랙백"
   
   #: ../plugin/subscribe.php:24 ../plugin/subscribe.php:28
   msgid "You did'nt subscribed any pages yet."
  @@ -1163,35 +1470,35 @@
   
   #: ../plugin/subscribe.php:35
   msgid "No subscribed pages found."
  -msgstr "  ϴ"
  +msgstr "구독중인 페이지가 없습니다"
   
   #: ../plugin/subscribe.php:42
   msgid "EmailNotification is not activated"
  -msgstr "EmailNotification Ȱȭ ʾҽϴ !"
  +msgstr "EmailNotification이 활성화되지 않았습니다 !"
   
   #: ../plugin/subscribe.php:43
   msgid ""
   "If you want to subscribe this page please contact the WikiMaster to activate "
   "the e-mail notification"
   msgstr ""
  -"  Ͻ÷ WikiMaster ڸ Ȱȭ Ű "
  -"ϼ"
  +"페이지 변경을 구독하시려면 WikiMaster에게 전자메일 구독을활성화 시키도록 건의"
  +"하세요"
   
   #: ../plugin/subscribe.php:53
   msgid "Please enter your email address first."
  -msgstr "̸ ּҸ  "
  +msgstr "이메일 주소를 먼저 넣으세요"
   
   #: ../plugin/subscribe.php:62
   msgid ""
   "If you want to subscribe this page, just make your ID and register your "
   "email address in the UserPreferences."
   msgstr ""
  -"  Ͻ÷, ID ϰ ڸ ּҸ UserPreferences "
  -"ϼ"
  +"페이지 구독을 하시려면, ID를 등록하고 전자메일 주소를 UserPreferences에서 등"
  +"록하세요"
   
   #: ../plugin/subscribe.php:77
   msgid "Subscribe lists updated."
  -msgstr "  ŵǾϴ"
  +msgstr "구독 목록이 갱신되었습니다"
   
   #: ../plugin/subscribe.php:91
   #, c-format
  @@ -1201,23 +1508,23 @@
   #: ../plugin/subscribe.php:100
   #, c-format
   msgid "Do you want to subscribe \"%s\" ?"
  -msgstr "\"%s\"() Ͻðڽϱ ?"
  +msgstr "\"%s\"을(를) 구독하시겠습니까 ?"
   
   #: ../plugin/subscribe.php:106
   msgid "Subscribed pages"
  -msgstr " "
  +msgstr "구독 목록"
   
   #: ../plugin/theme.php:29
   msgid "Theme cleared. Goto UserPreferences."
  -msgstr "׸ . UserPreferences "
  +msgstr "테마가 지워짐. UserPreferences로 가기"
   
   #: ../plugin/theme.php:40
   msgid "Theme is changed"
  -msgstr "׸ ٲϴ"
  +msgstr "테마가 바뀌었습니다"
   
   #: ../plugin/theme.php:69
   msgid "Please select a theme properly."
  -msgstr "׸  ּ"
  +msgstr "테마를 적절히 골라주세요"
   
   #: ../plugin/theme.php:79
   msgid "Theme disabled !"
  @@ -1225,7 +1532,7 @@
   
   #: ../plugin/theme.php:97
   msgid "-- Select --"
  -msgstr "--  --"
  +msgstr "-- 선택 --"
   
   #: ../plugin/ticket.php:172
   msgid "Invalid use of ticket"
  @@ -1233,7 +1540,7 @@
   
   #: ../plugin/trackback.php:53
   msgid "TrackBack is not activated !"
  -msgstr "TrackBack Ȱȭ ʾҽϴ !"
  +msgstr "TrackBack이 활성화되지 않았습니다 !"
   
   #: ../plugin/trackback.php:54
   msgid "send ping"
  @@ -1257,222 +1564,232 @@
   msgid "No TrackBack entry found for %s"
   msgstr ""
   
  -#: ../plugin/userform.php:39 ../plugin/userform.php:42
  +#: ../plugin/useradmin.php:21
  +#, c-format
  +msgid "You are not allowed to use the \"%s\" macro."
  +msgstr "\"%s\"매크로를 쓸 수 없습니다."
  +
  +#: ../plugin/useradmin.php:25
  +#, c-format
  +msgid "Total %d users"
  +msgstr "총 %d명의 사용자"
  +
  +#: ../plugin/userform.php:35 ../plugin/userform.php:38
   msgid "Successfully confirmed"
   msgstr ""
   
  -#: ../plugin/userform.php:40
  +#: ../plugin/userform.php:36
   msgid "Your e-mail address is confirmed successfully"
  -msgstr "̸ ּ Ȯ ϷǾϴ"
  +msgstr "이메일 주소 확인이 성공되었습니다"
   
  -#: ../plugin/userform.php:47
  +#: ../plugin/userform.php:43
   msgid "Your new password is confirmed successfully"
  -msgstr " йȣ Ȯ ϷǾϴ"
  +msgstr "새로운 비밀번호가 성공적으로 확인되었습니다"
   
  -#: ../plugin/userform.php:49
  +#: ../plugin/userform.php:45
   msgid "Confirmation missmatched !"
  -msgstr "Ȯ  ʽϴ !"
  +msgstr "확인이 맞지 않습니다 !"
   
  -#: ../plugin/userform.php:50 ../plugin/userform.php:54
  +#: ../plugin/userform.php:46 ../plugin/userform.php:50
   msgid "Please try again to register your e-mail address"
  -msgstr "̸ ּ  ٽ ϼ"
  +msgstr "이메일 주소 등록을 다시 하세요"
   
  -#: ../plugin/userform.php:53
  +#: ../plugin/userform.php:49
   msgid "ID does not exists !"
  -msgstr "̵  ʽϴ !"
  +msgstr "아이디가 존재하지 않습니다 !"
   
  -#: ../plugin/userform.php:86 ../plugin/userform.php:275
  +#: ../plugin/userform.php:82 ../plugin/userform.php:271
   #, c-format
   msgid "Successfully login as '%s'"
  -msgstr " '%s'() αεǾϴ"
  +msgstr "성공적으로 '%s'(으)로 로그인되었습니다"
   
  -#: ../plugin/userform.php:93 ../plugin/userform.php:280
  -#: ../plugin/userform.php:323
  +#: ../plugin/userform.php:89 ../plugin/userform.php:276
  +#: ../plugin/userform.php:319
   msgid "Invalid password !"
  -msgstr "߸ йȣ !"
  +msgstr "잘못된 비밀번호 !"
   
  -#: ../plugin/userform.php:97
  +#: ../plugin/userform.php:93
   #, c-format
   msgid "\"%s\" does not exists on this wiki !"
   msgstr ""
   
  -#: ../plugin/userform.php:99
  +#: ../plugin/userform.php:95
   msgid "Make new ID on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:105
  +#: ../plugin/userform.php:101
   msgid "Cookie deleted !"
  -msgstr "Ű ϴ !"
  +msgstr "쿠키가 지워졌습니다 !"
   
  -#: ../plugin/userform.php:108 ../wikilib.php:2092
  +#: ../plugin/userform.php:104 ../wikilib.php:2113
   msgid "E-mail new password"
  -msgstr " йȣ ޱ"
  +msgstr "새 비밀번호 받기"
   
  -#: ../plugin/userform.php:153
  +#: ../plugin/userform.php:149
   msgid "New password confirmation"
  -msgstr " йȣ Ȯ"
  +msgstr "새 비밀번호 확인"
   
  -#: ../plugin/userform.php:158
  +#: ../plugin/userform.php:154
   msgid "Please confirm your new password"
  -msgstr " йȣ Ȯ ּ"
  +msgstr "새 비밀번호를 확인해 주세요"
   
  -#: ../plugin/userform.php:160
  +#: ../plugin/userform.php:156
   #, c-format
   msgid "Your new password is %s"
  -msgstr " йȣ %s"
  +msgstr "새 비밀번호는 %s"
   
  -#: ../plugin/userform.php:161 ../plugin/userform.php:267
  +#: ../plugin/userform.php:157 ../plugin/userform.php:263
   msgid "Please change your password later"
  -msgstr "йȣ ٲּ"
  +msgstr "비밀번호를 바꿔주세요"
   
  -#: ../plugin/userform.php:165 ../plugin/userform.php:173
  +#: ../plugin/userform.php:161 ../plugin/userform.php:169
   msgid "Fail to e-mail notification !"
  -msgstr "̸ ˸  !"
  +msgstr "이메일 알림 실패 !"
   
  -#: ../plugin/userform.php:168
  +#: ../plugin/userform.php:164
   msgid "New password is sent to your e-mail !"
  -msgstr " йȣ ̸Ϸ ۵Ǿϴ !"
  +msgstr "새 비밀번호가 이메일로 전송되었습니다 !"
   
  -#: ../plugin/userform.php:169
  +#: ../plugin/userform.php:165
   msgid "Please check your e-mail"
  -msgstr "̸ Ȯ ּ"
  +msgstr "이메일을 확인해 주세요"
   
  -#: ../plugin/userform.php:174
  +#: ../plugin/userform.php:170
   msgid "E-mail mismatch !"
  -msgstr "̸  ʽϴ !"
  +msgstr "이메일이 맞지 않습니다 !"
   
  -#: ../plugin/userform.php:176
  +#: ../plugin/userform.php:172
   msgid "Invalid request"
  -msgstr "߸ û !"
  +msgstr "잘못된 요청 !"
   
  -#: ../plugin/userform.php:177
  +#: ../plugin/userform.php:173
   msgid "Please confirm your e-mail address first !"
  -msgstr "̸ ּҸ  Ȯ ּ !"
  +msgstr "이메일 주소를 먼저 확인해 주세요 !"
   
  -#: ../plugin/userform.php:184
  +#: ../plugin/userform.php:180
   msgid "ID and e-mail mismatch !"
  -msgstr "̵ ̸ ּҰ  ʽϴ !"
  +msgstr "아이디와 이메일 주소가 맞지 않습니다 !"
   
  -#: ../plugin/userform.php:186
  +#: ../plugin/userform.php:182
   msgid "Please try again or make a new profile"
  -msgstr "̸ ּ  ٽ ϼ"
  +msgstr "이메일 주소 등록을 다시 하세요"
   
  -#: ../plugin/userform.php:226 ../plugin/userform.php:311
  +#: ../plugin/userform.php:222 ../plugin/userform.php:307
   msgid "too short password!"
  -msgstr "йȣ ªϴ"
  +msgstr "비밀번호가 짧습니다"
   
  -#: ../plugin/userform.php:227
  +#: ../plugin/userform.php:223
   msgid "mismatch password!"
  -msgstr "йȣ  ʽϴ!"
  +msgstr "비밀번호가 맞지 않습니다!"
   
  -#: ../plugin/userform.php:228 ../plugin/userform.php:315
  +#: ../plugin/userform.php:224 ../plugin/userform.php:311
   msgid "not acceptable character found in the password!"
   msgstr ""
   
  -#: ../plugin/userform.php:231
  +#: ../plugin/userform.php:227
   msgid "Your password is too simple to use as a password !"
   msgstr ""
   
  -#: ../plugin/userform.php:237 ../plugin/userform.php:346
  +#: ../plugin/userform.php:233 ../plugin/userform.php:342
   msgid "Your email address is not valid"
  -msgstr "̸ ּҰ ߸ Ǿϴ"
  +msgstr "이메일 주소가 잘못 되었습니다"
   
  -#: ../plugin/userform.php:242 ../plugin/userform.php:407
  +#: ../plugin/userform.php:238 ../plugin/userform.php:403
   msgid "Fail to register"
  -msgstr " ߽ϴ"
  +msgstr "등록을 실패했습니다"
   
  -#: ../plugin/userform.php:243 ../plugin/userform.php:408
  +#: ../plugin/userform.php:239 ../plugin/userform.php:404
   msgid "You are not allowed to register on this wiki"
  -msgstr "Ű   ʾҽϴ"
  +msgstr "위키 등록이 허락되지 않았습니다"
   
  -#: ../plugin/userform.php:244 ../plugin/userform.php:409 ../wiki.php:4947
  -#: ../wiki.php:4958
  +#: ../plugin/userform.php:240 ../plugin/userform.php:405 ../wiki.php:5120
  +#: ../wiki.php:5131
   msgid "Please contact WikiMasters"
  -msgstr "Űڿ ϼ"
  +msgstr "위키관리자에게 문의하세요"
   
  -#: ../plugin/userform.php:248
  +#: ../plugin/userform.php:244
   msgid "Successfully added!"
   msgstr ""
   
  -#: ../plugin/userform.php:254
  +#: ../plugin/userform.php:250
   #, c-format
   msgid "Successfully added as '%s'"
   msgstr ""
   
  -#: ../plugin/userform.php:255
  +#: ../plugin/userform.php:251
   msgid "Please check your mailbox"
  -msgstr "̸ Ȯ ּ"
  +msgstr "이메일을 확인해 주세요"
   
  -#: ../plugin/userform.php:262 ../plugin/userform.php:340
  +#: ../plugin/userform.php:258 ../plugin/userform.php:336
   msgid "E-mail confirmation"
  -msgstr "̸ Ȯ"
  +msgstr "이메일 확인"
   
  -#: ../plugin/userform.php:264 ../plugin/userform.php:342
  +#: ../plugin/userform.php:260 ../plugin/userform.php:338
   msgid "Please confirm your email address"
  -msgstr "̸ ּҸ Ȯ ּ"
  +msgstr "이메일 주소를 확인해 주세요"
   
  -#: ../plugin/userform.php:266
  +#: ../plugin/userform.php:262
   #, c-format
   msgid "Your initial password is %s"
   msgstr ""
   
  -#: ../plugin/userform.php:270
  +#: ../plugin/userform.php:266
   msgid "Confirmation E-mail sent"
  -msgstr "Ȯ ̸ ϴ"
  +msgstr "확인 이메일이 보내졌습니다"
   
  -#: ../plugin/userform.php:285
  +#: ../plugin/userform.php:281
   msgid "Invalid username !"
  -msgstr "߸ ̸ !"
  +msgstr "잘못된 사용자명 !"
   
  -#: ../plugin/userform.php:313
  +#: ../plugin/userform.php:309
   msgid "mismatch password !"
  -msgstr "߸ йȣ !"
  +msgstr "맞지 않는 비밀번호 !"
   
  -#: ../plugin/userform.php:316 ../plugin/userform.php:324
  +#: ../plugin/userform.php:312 ../plugin/userform.php:320
   msgid "Password is not changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:318
  +#: ../plugin/userform.php:314
   msgid "Password is changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:320
  +#: ../plugin/userform.php:316
   msgid "Password is too simple to use as a password !"
  -msgstr "йȣ ⿡ ʹ ª йȣԴϴ !"
  +msgstr "비밀번호로 쓰기에는 너무 짧은 비밀번호입니다 !"
   
  -#: ../plugin/userform.php:344
  +#: ../plugin/userform.php:340
   msgid "E-mail confirmation mail sent"
   msgstr ""
   
  -#: ../plugin/userform.php:355
  +#: ../plugin/userform.php:351
   msgid "Your Nickname already used as ID in this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:360
  +#: ../plugin/userform.php:356
   msgid "Profiles are saved successfully !"
  -msgstr "   Ǿϴ !"
  +msgstr "설정이 성공적으로 저장되었습니다 !"
   
  -#: ../plugin/userform.php:383 ../plugin/userform.php:429
  +#: ../plugin/userform.php:379 ../plugin/userform.php:425
   #, c-format
   msgid "Authentication request was failed: %s"
   msgstr ""
   
  -#: ../plugin/userform.php:402
  +#: ../plugin/userform.php:398
   #, c-format
   msgid "Successfully login as '%s' via OpenID."
  -msgstr " ID '%s'() αεǾϴ"
  +msgstr "성공적으로 오픈ID '%s'(으)로 로그인되었습니다"
   
  -#: ../plugin/userform.php:416
  +#: ../plugin/userform.php:412
   #, c-format
   msgid "Your Nickname %s already used as ID in this Wiki."
   msgstr ""
   
  -#: ../plugin/userform.php:424
  +#: ../plugin/userform.php:420
   #, c-format
   msgid "OpenID Authentication successful and saved as %s."
   msgstr ""
   
  -#: ../plugin/userform.php:431
  +#: ../plugin/userform.php:427
   msgid "Invalid OpenID Authentication request"
   msgstr ""
   
  @@ -1484,151 +1801,142 @@
   #: ../plugin/whois.php:137
   #, c-format
   msgid "Whois search result for %s"
  -msgstr "%s  Whois ġ "
  +msgstr "%s에 대한 Whois 서치 결과"
   
  -#: ../wiki.php:1235
  +#: ../wiki.php:1236
   #, c-format
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1654
  +#: ../wiki.php:1653
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
  -#: ../wiki.php:1664
  +#: ../wiki.php:1663
   msgid "File does not exist"
  -msgstr " ϴ"
  +msgstr "페이지가 없습니다"
   
  -#: ../wiki.php:2007
  +#: ../wiki.php:2034
   #, c-format
   msgid "File '%s' does not exist."
  -msgstr " '%s'() ϴ"
  +msgstr "파일 '%s'이(가) 없습니다"
   
  -#: ../wiki.php:2831 ../wiki.php:2842 ../wiki.php:5173
  +#: ../wiki.php:2897 ../wiki.php:2908 ../wiki.php:5353
   msgid "Invalid ajax action."
  -msgstr "߸ ajax ׼."
  +msgstr "잘못된 ajax 액션."
   
  -#: ../wiki.php:3255
  +#: ../wiki.php:3398
   msgid "Tags:"
  -msgstr "±:"
  +msgstr "태그:"
   
  -#: ../wiki.php:3283
  +#: ../wiki.php:3426
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:3283
  +#: ../wiki.php:3426
   #, c-format
   msgid "TwinPages"
   msgstr "TwinPages"
   
  -#: ../wiki.php:3288
  +#: ../wiki.php:3431
   msgid "See [TwinPages]:"
   msgstr ""
   
  -#: ../wiki.php:3657
  -msgid "edit"
  -msgstr ""
  -
  -#: ../wiki.php:3833
  +#: ../wiki.php:3989
   msgid "Sister Sites Index"
   msgstr ""
   
  -#: ../wiki.php:4199 ../locale/dummy.php:6
  +#: ../wiki.php:4336 ../locale/dummy.php:6
   msgid "EditText"
  -msgstr "ġ"
  +msgstr "고치기"
   
  -#: ../wiki.php:4201
  +#: ../wiki.php:4338
   msgid "NotEditable"
  -msgstr "ĥ "
  +msgstr "고칠수 없음"
   
  -#: ../wiki.php:4205 ../locale/dummy.php:6
  +#: ../wiki.php:4342 ../locale/dummy.php:6
   msgid "ShowPage"
  -msgstr ""
  +msgstr "보기"
   
  -#: ../wiki.php:4206 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4343 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
  -msgstr "ã"
  +msgstr "찾기"
   
  -#: ../wiki.php:4586
  +#: ../wiki.php:4725
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:4946
  +#: ../wiki.php:5119
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:4957
  +#: ../wiki.php:5130
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:4995 ../wiki.php:5004 ../wikilib.php:1323
  +#: ../wiki.php:5168 ../wiki.php:5177 ../wikilib.php:1337
   msgid "Create this page"
  -msgstr " "
  +msgstr "페이지 만들기"
   
  -#: ../wiki.php:5006
  +#: ../wiki.php:5179
   #, c-format
   msgid "%s has saved revisions"
  -msgstr "%s()   ֽϴ"
  +msgstr "%s이(가) 저장된 옛버전이 있습니다"
   
  -#: ../wiki.php:5007 ../wiki.php:5014
  +#: ../wiki.php:5180 ../wiki.php:5187
   #, c-format
  -msgid "%s or click %s to fullsearch this page.\n"
  -msgstr "%s  ų %s  ü ã⸦ غ.\n"
  -
  -#: ../wiki.php:5007 ../wiki.php:5014 ../wikilib.php:1325
  -msgid "title"
  -msgstr ""
  +msgid "%s or click %s to fulltext search.\n"
  +msgstr "%s 혹은 %s를 눌러 전체 찾기를 할 수 있습니다.\n"
   
  -#: ../wiki.php:5009
  -#, c-format
  -msgid "Old Revisions of the %s"
  -msgstr ""
  -
  -#: ../wiki.php:5012
  +#: ../wiki.php:5185
   #, c-format
   msgid "%s is not found in this Wiki"
  -msgstr "%s  ̰ Ű ã  ϴ"
  +msgstr "%s 페이지를 이곳 위키에서 찾을 수 없습니다"
   
  -#: ../wiki.php:5024
  +#: ../wiki.php:5192
  +msgid "Please try to search with another word"
  +msgstr "다른 단어로 찾아보세요."
  +
  +#: ../wiki.php:5204
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr ""
  -"%s  ų Ʒ øƮ  ̿   弼:\n"
  +"%s 아이콘을 누르거나 아래의 탬플리트 목록을 이용해 새 페이지를 만드세요:\n"
   
  -#: ../wiki.php:5027
  +#: ../wiki.php:5207
   msgid "You have no templates"
  -msgstr "øƮ ϴ"
  +msgstr "템플리트가 없습니다"
   
  -#: ../wiki.php:5029
  +#: ../wiki.php:5209
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
  -msgstr "øƮ ÷ '%s'  ̸   弼.\n"
  +msgstr "탬플리트를 만드시려면 '%s' 형식의 이름을 가지는 페이지를 만드세요.\n"
   
  -#: ../wiki.php:5040
  +#: ../wiki.php:5220
   #, c-format
   msgid "Redirected from page \"%s\""
  -msgstr ""
  +msgstr "\"%s\"페이지로 부터 리다리렉트됨"
   
  -#: ../wiki.php:5175
  +#: ../wiki.php:5355
   msgid "Invalid macro action."
  -msgstr "߸ ũ ׼."
  +msgstr "잘못된 마크로 액션."
   
  -#: ../wiki.php:5185
  +#: ../wiki.php:5365
   #, c-format
   msgid "You are not allowed to '%s'"
  -msgstr "'%s'()  ʾҽϴ"
  +msgstr "'%s'은(는) 허락되지 않았습니다"
   
  -#: ../wiki.php:5205
  +#: ../wiki.php:5385
   #, c-format
   msgid "Fail to \"%s\" !"
  -msgstr "\"%s\"() ߽ϴ !"
  +msgstr "\"%s\"을(를) 실패했습니다 !"
   
  -#: ../wiki.php:5208
  +#: ../wiki.php:5388
   msgid "Please enter the valid password"
  -msgstr "Ȯ йȣ ־ּ"
  +msgstr "정확한 비밀번호를 넣어주세요"
   
  -#: ../wikilib.php:636
  +#: ../wikilib.php:644
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -1644,387 +1952,610 @@
   "<b>Tables</b>: || cell text |||| cell text spanning two columns ||;\n"
   "no trailing white space allowed after tables or titles.<br />\n"
   msgstr ""
  -"<b>:</b> ''<i></i>''; '''<b></b>'''; '''''<b><i> </"
  +"<b>강조:</b> ''<i>기울임</i>''; '''<b>굵게</b>'''; '''''<b><i>굵은 기울임</"
   "i></b>''''';\n"
  -"''<i>￩ '''<b> </b>''' </i>''; ---- μ.<br />\n"
  -"<b>:</b> =  1 =; ==  2 ==; ===  3 ===;\n"
  -"====  4 ====; =====  5 =====.<br />\n"
  -"<b>:</b>  * Ѿ Ѱ; 1., a., A., i., I. ȣ޸ ;\n"
  -"1.#n  n ȣ ű; 鸸  鿩.<br />\n"
  -"<b>:</b> JoinCapitalizedWords; [\"߰ȣ ūǥ Ἥ\"];\n"
  -"[߰ȣ ȣļ ];\n"
  -"url; [url]; [url ǥõ ̸].<br />\n"
  -"<b>̺</b>: ||   |||| ĭ ģ  ||;<br />\n"
  -"̺̳     ȵ˴ϴ.<br />\n"
  +"''<i>기울여 '''<b>굵게 </b>''' 섞어서</i>''; ---- 가로선.<br />\n"
  +"<b>제목:</b> = 제목 1 =; == 제목 2 ==; === 제목 3 ===;\n"
  +"==== 제목 4 ====; ===== 제목 5 =====.<br />\n"
  +"<b>목록:</b> 공백과 * 총알 한개; 1., a., A., i., I. 번호달린 목록;\n"
  +"1.#n 숫자 n부터 번호 매기기; 공백만 있으면 들여쓰기.<br />\n"
  +"<b>연결:</b> JoinCapitalizedWords; [\"중괄호와 큰따옴표를 써서\"];\n"
  +"[중괄호로 괄호쳐서 연결];\n"
  +"url; [url]; [url 표시될 이름].<br />\n"
  +"<b>테이블</b>: || 셀 내용 |||| 두칸에 걸친 내용 ||;<br />\n"
  +"테이블이나 제목 끝에 공백이 오면 안됩니다.<br />\n"
   
  -#: ../wikilib.php:673
  +#: ../wikilib.php:681
   msgid "You are not allowed to edit this page !"
  -msgstr "  ĥ  ֵ Ǿ ʽϴ !"
  +msgstr "이 페이지를 고칠 수 있도록 허락되어있지 않습니다 !"
   
  -#: ../wikilib.php:679
  +#: ../wikilib.php:687
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
  -#: ../wikilib.php:785
  +#: ../wikilib.php:793
   msgid "Use one of the following templates as an initial release :\n"
  -msgstr "   øƮ ȰϽ  ֽϴ :\n"
  +msgstr "최초 버전으로 다음의 탬플리트를 활용하실 수 있습니다 :\n"
   
  -#: ../wikilib.php:787
  +#: ../wikilib.php:795
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
  -msgstr "øƮ ÷ '%s'  ̸  弼."
  +msgstr "탬플리트를 만드시려면 '%s' 형식의 이름으로 페이지를 만드세요."
   
  -#: ../wikilib.php:791
  +#: ../wikilib.php:799
   msgid "Merge"
  -msgstr ""
  +msgstr "병합"
   
  -#: ../wikilib.php:792
  +#: ../wikilib.php:800
   msgid "Merge manually"
  -msgstr " "
  +msgstr "수동 병합"
   
  -#: ../wikilib.php:793
  +#: ../wikilib.php:801
   msgid "Ignore conflicts"
  -msgstr "浹 "
  +msgstr "충돌 무시"
   
  -#: ../wikilib.php:820
  +#: ../wikilib.php:828
   msgid "ReduceEditor"
  -msgstr "â ̱"
  +msgstr "편집창 줄이기"
   
  -#: ../wikilib.php:821
  +#: ../wikilib.php:829
   msgid "EnlargeEditor"
  -msgstr "â ̱"
  +msgstr "편집창 늘이기"
   
  -#: ../wikilib.php:825 ../locale/dummy.php:6
  +#: ../wikilib.php:833 ../locale/dummy.php:6
   msgid "InterWiki"
  -msgstr "Ű"
  +msgstr "인터위키"
   
  -#: ../wikilib.php:827
  +#: ../wikilib.php:835
   msgid "HelpOnEditing"
  -msgstr "ġ "
  +msgstr "고치기 도움말"
   
  -#: ../wikilib.php:859
  +#: ../wikilib.php:867
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:879
  +#: ../wikilib.php:887
   msgid "--Select Category--"
  -msgstr "--īװ --"
  +msgstr "--카테고리 선택--"
   
  -#: ../wikilib.php:889
  +#: ../wikilib.php:897
   msgid "Minor edit"
   msgstr ""
   
  -#: ../wikilib.php:893
  +#: ../wikilib.php:901
   msgid "Summary of Change"
  -msgstr "ٲ "
  +msgstr "바뀐점 요약"
   
  -#: ../wikilib.php:898
  +#: ../wikilib.php:906
   msgid "Skip to preview"
  -msgstr "̸"
  +msgstr "미리보기로"
   
  -#: ../wikilib.php:908 ../wikilib.php:2025 ../wikilib.php:2079
  +#: ../wikilib.php:916 ../wikilib.php:2046 ../wikilib.php:2100
   msgid "Save"
  -msgstr ""
  +msgstr "저장"
   
  -#: ../wikilib.php:981
  +#: ../wikilib.php:989
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:986
  +#: ../wikilib.php:994
   #, c-format
   msgid "%s is not valid action"
  -msgstr "%s() ȿ ׼ ƴմϴ"
  +msgstr "%s은(는) 잘못된 액션"
   
  -#: ../wikilib.php:988
  +#: ../wikilib.php:996
   msgid "Is it valid action ?"
  -msgstr "ùٸ ׼Դϱ ?"
  +msgstr "올바른 액션입니까 ?"
   
  -#: ../wikilib.php:1035
  +#: ../wikilib.php:1043
   #, c-format
   msgid "File '%s' is deleted"
  -msgstr "'%s'  ϴ"
  +msgstr "'%s' 파일이 지워졌습니다"
   
  -#: ../wikilib.php:1037
  +#: ../wikilib.php:1045
   #, c-format
   msgid "Fail to delete '%s'"
  -msgstr "'%s' ⸦ ߽ϴ"
  +msgstr "'%s' 지우기를 실패했습니다"
   
  -#: ../wikilib.php:1042
  +#: ../wikilib.php:1050
   #, c-format
   msgid "Directory '%s' is deleted"
  -msgstr "'%s' 丮 ϴ"
  +msgstr "'%s' 디렉토리가 지우졌습니다"
   
  -#: ../wikilib.php:1044
  +#: ../wikilib.php:1052
   #, c-format
   msgid "Fail to rmdir '%s'"
  -msgstr "'%s' ⸦ ߽ϴ"
  +msgstr "'%s' 지우기를 실패했습니다"
   
  -#: ../wikilib.php:1054 ../wikilib.php:1074
  +#: ../wikilib.php:1062 ../wikilib.php:1082
   msgid "No files are selected !"
  -msgstr " õ ʾҽϴ !"
  +msgstr "파일을 선택하지 않았습니다"
   
  -#: ../wikilib.php:1067
  +#: ../wikilib.php:1075
   #, c-format
   msgid "Did you really want to delete '%s' ?"
  -msgstr " '%s'() ðڽϱ ?"
  -
  -#: ../wikilib.php:1070
  -msgid "Delete"
  -msgstr ""
  +msgstr "정말로 '%s'(을)를 지우시겠습니까 ?"
   
  -#: ../wikilib.php:1071
  +#: ../wikilib.php:1079
   msgid "Delete selected file"
  -msgstr "õ  "
  +msgstr "선택된 파일 지우기"
   
  -#: ../wikilib.php:1092
  +#: ../wikilib.php:1100
   #, c-format
   msgid "\"%s\" is deleted !"
  -msgstr ""
  +msgstr "%s(이)가 지워짐 !"
   
  -#: ../wikilib.php:1107
  +#: ../wikilib.php:1115
   msgid "Please delete this file manually."
  -msgstr ""
  +msgstr "파일을 직접 지워주세요."
   
  -#: ../wikilib.php:1109
  +#: ../wikilib.php:1117
   #, c-format
   msgid "Delete \"%s\" ?"
  -msgstr "\"%s\"()  ?"
  +msgstr "\"%s\"을(를) 지울까요 ?"
   
  -#: ../wikilib.php:1162
  +#: ../wikilib.php:1170
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
  -#: ../wikilib.php:1325
  +#: ../wikilib.php:1339
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
  -msgstr ""
  +msgstr " 혹은 %s를 눌러 전체찾기를 합니다.\n"
  +
  +#: ../wikilib.php:1339
  +msgid "title"
  +msgstr "제목"
  +
  +#: ../wikilib.php:1353
  +msgid "Please try to fulltext search"
  +msgstr "전체 찾기를 해보시기 바랍니다"
   
  -#: ../wikilib.php:1376 ../wikilib.php:1477
  +#: ../wikilib.php:1356
  +#, c-format
  +msgid "You can also click %s to fulltext search.\n"
  +msgstr "%s 아이콘을 눌러 전체 찾기를 하실 수 있습니다.\n"
  +
  +#: ../wikilib.php:1401 ../wikilib.php:1502
   #, c-format
   msgid "Someone else saved the page while you edited %s"
  -msgstr "%s() ġ  ٸ    ߽ϴ"
  +msgstr "%s을(를) 고치는 동안 다른 사람이 이 페이지를 저장했습니다"
   
  -#: ../wikilib.php:1382
  +#: ../wikilib.php:1407
   msgid "Section edit is not valid for non-exists page."
  -msgstr "      ʽϴ"
  +msgstr "없는 페이지에 대한 섹션 편집은 가능하지 않습니다"
   
  -#: ../wikilib.php:1415 ../wikilib.php:1593
  +#: ../wikilib.php:1440 ../wikilib.php:1618
   msgid "mail does not supported by default."
  -msgstr "  ʽϴ"
  +msgstr "메일이 지원되지 않습니다"
   
  -#: ../wikilib.php:1419 ../wikilib.php:1597
  +#: ../wikilib.php:1444 ../wikilib.php:1622
   msgid "Sent notification mail."
  -msgstr " ½ϴ"
  +msgstr "메일을 보냈습니다"
   
  -#: ../wikilib.php:1421 ../wikilib.php:1599
  +#: ../wikilib.php:1446 ../wikilib.php:1624
   msgid "No subscribers found."
  -msgstr "ڰ ϴ"
  +msgstr "구독자가 없습니다"
   
  -#: ../wikilib.php:1426 ../wikilib.php:1604
  +#: ../wikilib.php:1451 ../wikilib.php:1629
   #, c-format
   msgid "%s is not editable"
  -msgstr "%s()   ϴ"
  +msgstr "%s(이)가 쓰기가능하지 않음"
   
  -#: ../wikilib.php:1428 ../wikilib.php:1606
  +#: ../wikilib.php:1453 ../wikilib.php:1631
   #, c-format
   msgid "%s is saved"
  -msgstr "%s() Ǿϴ"
  +msgstr "%s(이)가 저장됨"
   
  -#: ../wikilib.php:1468
  +#: ../wikilib.php:1493
   msgid "Goto Editor"
  -msgstr " "
  +msgstr "편집기로 가기"
   
  -#: ../wikilib.php:1482
  +#: ../wikilib.php:1507
   #, c-format
   msgid "%s is merged with latest contents."
  -msgstr "%s  ֱ  յǾϴ."
  +msgstr "%s 페이지 최근 내용이 병합되었습니다."
   
  -#: ../wikilib.php:1483
  +#: ../wikilib.php:1508
   #, c-format
   msgid "%s is merged successfully"
  -msgstr "%s()  յǾϴ"
  +msgstr "설정이 성공적으로 병합되었습니다"
   
  -#: ../wikilib.php:1487
  +#: ../wikilib.php:1512
   #, c-format
   msgid "Merge conflicts are detected for %s !"
  -msgstr "%s Ͽ  浹 ߰ߵǾϴ !"
  +msgstr "%s에 대하여 병합 충돌이 발견되었습니다 !"
   
  -#: ../wikilib.php:1488
  +#: ../wikilib.php:1513
   #, c-format
   msgid "Merge cancelled on %s."
  -msgstr "%   ҵǾϴ."
  +msgstr "%에 대해 병합이 취소되었습니다."
   
  -#: ../wikilib.php:1489
  +#: ../wikilib.php:1514
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1490
  +#: ../wikilib.php:1515
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1495
  +#: ../wikilib.php:1520
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr ""
   
  -#: ../wikilib.php:1496
  +#: ../wikilib.php:1521
   msgid "Please resolve conflicts manually."
  -msgstr "浹  ذϽñ ٶϴ."
  +msgstr "충돌을 직접 해결하시기 바랍니다."
   
  -#: ../wikilib.php:1499
  +#: ../wikilib.php:1524
   #, c-format
   msgid "Force merging for %s !"
  -msgstr "%s    Ǿϴ !"
  +msgstr "%s에 대해 병합이 강제로 되었습니다 !"
   
  -#: ../wikilib.php:1500
  +#: ../wikilib.php:1525
   msgid "Please be careful, you could damage useful information."
  -msgstr "Ͻñ ٶϴ. ߿  Ҿ  ֽϴ."
  +msgstr "주의하시기 바랍니다. 중요한 정보를 잃어버릴 수도 있습니다."
   
  -#: ../wikilib.php:1514
  +#: ../wikilib.php:1539
   msgid "Conflict error!"
  -msgstr "浹 !"
  +msgstr "충돌 오류!"
   
  -#: ../wikilib.php:1553
  +#: ../wikilib.php:1578
   #, c-format
   msgid "Preview of %s"
  -msgstr "%s ̸"
  +msgstr "%s 미리보기"
   
  -#: ../wikilib.php:1638
  +#: ../wikilib.php:1663
   msgid "Nobody subscribed to this page."
  -msgstr "ƹ   ʰֽϴ."
  +msgstr "아무도 페이지를 구독하지 않고있습니다."
   
  -#: ../wikilib.php:1657
  +#: ../wikilib.php:1682
   #, c-format
   msgid "%s page is modified"
  -msgstr "%s  Ǿϴ"
  +msgstr "%s 페이지가 변경되었습니다"
   
  -#: ../wikilib.php:1686
  +#: ../wikilib.php:1711
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:1699
  +#: ../wikilib.php:1724
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:1704
  +#: ../wikilib.php:1729
   msgid "Mails are sent successfully"
  -msgstr "  ½ϴ"
  +msgstr "메일이 성공적으로 보내졌습니다"
   
  -#: ../wikilib.php:1705
  +#: ../wikilib.php:1730
   #, c-format
   msgid "mails are sent to '%s'"
  -msgstr "'%s'  ½ϴ"
  +msgstr "'%s'에게 메일을 보냈습니다"
   
  -#: ../wikilib.php:1707
  +#: ../wikilib.php:1732
   msgid "Fail to send mail"
  -msgstr "  ߽ϴ"
  +msgstr "메일 보내기 실패했습니다"
   
  -#: ../wikilib.php:1718
  +#: ../wikilib.php:1743
   msgid "This wiki does not support sendmail"
  -msgstr "Ű sendmail  մϴ"
  +msgstr "위키에서 sendmail을 지원받지 못합니다"
   
  -#: ../wikilib.php:1816
  +#: ../wikilib.php:1841
   msgid "Invalid regular expression !"
  -msgstr "߸ Խ !"
  +msgstr "잘못된 정규 표현식 !"
   
  -#: ../wikilib.php:1840
  +#: ../wikilib.php:1865
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:1843
  +#: ../wikilib.php:1868
   msgid "Infinite loop possible!"
  -msgstr "  !"
  +msgstr "무한 루프가 가능함!"
   
  -#: ../wikilib.php:1962
  +#: ../wikilib.php:1983
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:1963
  +#: ../wikilib.php:1984
   msgid "OpenID"
   msgstr ""
   
  -#: ../wikilib.php:1975 ../wikilib.php:2097
  +#: ../wikilib.php:1996 ../wikilib.php:2118
   msgid "ID"
  -msgstr "̵"
  +msgstr "아이디"
   
  -#: ../wikilib.php:2005 ../wikilib.php:2090
  +#: ../wikilib.php:2026 ../wikilib.php:2111
   msgid "Make profile"
  -msgstr " "
  +msgstr "사용자 등록"
   
  -#: ../wikilib.php:2007
  +#: ../wikilib.php:2028
   msgid "password again"
  -msgstr "йȣ Է"
  +msgstr "비밀번호 재입력"
   
  -#: ../wikilib.php:2009 ../wikilib.php:2058
  +#: ../wikilib.php:2030 ../wikilib.php:2079
   msgid "Mail"
  -msgstr ""
  +msgstr "메일"
   
  -#: ../wikilib.php:2031
  +#: ../wikilib.php:2052
   msgid "New password"
  -msgstr " йȣ"
  +msgstr "새 비밀번호"
   
  -#: ../wikilib.php:2036
  +#: ../wikilib.php:2057
   msgid "Nickname"
  -msgstr ""
  +msgstr "별명"
   
  -#: ../wikilib.php:2059
  +#: ../wikilib.php:2080
   msgid "Time Zone"
  -msgstr "ð"
  +msgstr "시간대"
   
  -#: ../wikilib.php:2068
  +#: ../wikilib.php:2089
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:2357
  +#: ../wikilib.php:2380
   msgid "Show all"
  -msgstr " "
  +msgstr "모두 보기"
   
  -#: ../wikilib.php:2499
  +#: ../wikilib.php:2522
   msgid "Contents"
  -msgstr ""
  +msgstr "목차"
   
  -#: ../wikilib.php:2610
  +#: ../wikilib.php:2642
   #, c-format
   msgid "Title search for \"%s\""
  -msgstr "\"%s\"   ã"
  +msgstr "\"%s\"에 대한 제목 찾기"
  +
  +#: ../monisetup.php:36
  +msgid "Check a dba configuration"
  +msgstr "dba 환경 검사"
  +
  +#: ../monisetup.php:48
  +#, c-format
  +msgid "%s is selected."
  +msgstr "%s(이)가 선택됨"
  +
  +#: ../monisetup.php:55
  +msgid "Check a AcceptPathInfo setting for Apache 2.x.xx"
  +msgstr "아파치 2.x.xx를 위한 AcceptPathInfo 검사"
  +
  +#: ../monisetup.php:62 ../monisetup.php:68
  +msgid "Off"
  +msgstr "꺼짐"
  +
  +#: ../monisetup.php:70
  +msgid "On"
  +msgstr "켜짐"
  +
  +#: ../monisetup.php:243
  +msgid ""
  +"Please change the permission of some directories writable on your server to "
  +"initialize your Wiki."
  +msgstr ""
  +"위키를 초기화하기 위해서 몇몇 디렉토리를 쓰기가능하도록 바꿔줘야 합니다"
  +
  +#: ../monisetup.php:245
  +#, c-format
  +msgid ""
  +"If you want a more safe wiki, try to change the permission of directories "
  +"with %s."
  +msgstr "보다 안전한 위키를 원하신다면 디렉토리의 퍼미션을 %s(으)로 바꿔주세요"
  +
  +#: ../monisetup.php:248
  +msgid ""
  +"or use <tt>monisetup.sh</tt> and select 777 or <font color='red'>2777</font>"
  +msgstr ""
  +"혹은 <tt>monisetup.sh</tt>를 사용하여 777 혹은 <font color='red'>2777</font>"
  +"를 고르세요"
  +
  +#: ../monisetup.php:250
  +msgid ""
  +"After execute one of above two commands, just <a href='monisetup.php'>reload "
  +"this <tt>monisetup.php</tt></a> would make a new initial <tt>config.php</tt> "
  +"with detected parameters for your wiki."
  +msgstr ""
  +"위의 두개중 하나의 명령을 실행한 후에 <a href='monisetup.php'><tt>monisetup."
  +"php</tt>를 다시 열어</a> 주셔서 새로운 초기 <tt>config.php</tt> 파일을, 검사"
  +"된 몇몇 기본 설정값과 함께 만들어 주셔야 합니다."
  +
  +#: ../monisetup.php:251
  +msgid "Reload"
  +msgstr "다시부르기"
  +
  +#: ../monisetup.php:254
  +msgid "WARN"
  +msgstr "경고"
  +
  +#: ../monisetup.php:255
  +msgid ""
  +"Please execute the following command after you have completed your "
  +"configuration."
  +msgstr "환경설정을 모두 마치신 후에 다음 명령을 실행해주시기 바랍니다."
  +
  +#: ../monisetup.php:266
  +#, c-format
  +msgid "FATAL: %s directory is not writable"
  +msgstr "치명적: %s 디렉토리가 쓰기가능하지 않음"
  +
  +#: ../monisetup.php:267
  +msgid "Please execute the following command."
  +msgstr "다음 명령을 실행시켜주세요."
  +
  +#: ../monisetup.php:286
  +#, c-format
  +msgid "%s directory is not writable"
  +msgstr "%s 디렉토리가 쓰기가능하지 않음"
  +
  +#: ../monisetup.php:303
  +#, c-format
  +msgid "%s is not writable"
  +msgstr "%s(이)가 쓰기가능하지 않음"
  +
  +#: ../monisetup.php:310 ../monisetup.php:316
  +#, c-format
  +msgid "%s is created now"
  +msgstr "%s(이)가 만들어졌음"
  +
  +#: ../monisetup.php:326
  +#, c-format
  +msgid "%s is writable"
  +msgstr "%s(이)가 쓰기가능"
  +
  +#: ../monisetup.php:426
  +msgid "Click here to toggle all"
  +msgstr ""
  +
  +#: ../monisetup.php:427
  +msgid "Deselect all"
  +msgstr "모두 선택 취소"
  +
  +#: ../monisetup.php:432
  +msgid "Please be careful to deselect these pages"
  +msgstr "아래의 페이지를 선택해제시 주의해주세요"
  +
  +#: ../monisetup.php:706
  +msgid "MoniWiki"
  +msgstr "모니위키"
  +
  +#: ../monisetup.php:709
  +msgid "'config.php' is not writable !"
  +msgstr "'config.php' 파일이 쓰기가능하지 않습니다 !"
  +
  +#: ../monisetup.php:710
  +msgid ""
  +"Please execute <tt>'monisetup.sh'</tt> or <tt>chmod a+w config.php</tt> "
  +"first to change your settings."
  +msgstr ""
  +"<tt>'monisetup.sh'</tt> 혹은 <tt>chmod a+w config.php</tt>를 먼저실행해 주셔"
  +"야 설정을 고칠 수 있습니다"
  +
  +#: ../monisetup.php:737
  +msgid "Invalid password error !"
  +msgstr "잘못된 비밀번호 오류 !"
  +
  +#: ../monisetup.php:738
  +msgid ""
  +"If you can't remember your admin password, delete password entry in the "
  +"'config.php' and restart 'monisetup'"
  +msgstr ""
  +
  +#: ../monisetup.php:770
  +#, c-format
  +msgid "Updated Configutations for this %s"
  +msgstr "위키 %s의 설정이 갱신되었습니다"
  +
  +#: ../monisetup.php:789
  +msgid "Configurations are saved successfully"
  +msgstr "설정이 성공적으로 저장되었습니다"
  +
  +#: ../monisetup.php:790
  +msgid ""
  +"WARN: Please check <a href='monisetup.php'> your saved configurations</a>"
  +msgstr ""
  +
  +#: ../monisetup.php:791
  +msgid "If all is good, change 'config.php' permission as 644."
  +msgstr "모두 마음에 드시면 'config.php'파일의 퍼미션을 644로 바꿔주세요"
  +
  +#: ../monisetup.php:803
  +msgid "Welcome to MoniWiki ! This is your first installation"
  +msgstr "모니위키로 오신 것을  환영합니다 ! 처음 설치 하셨군요"
  +
  +#: ../monisetup.php:810
  +msgid "Default settings are loaded..."
  +msgstr "기본 설정을 불러옵니다..."
  +
  +#: ../monisetup.php:819
  +msgid "Initial configurations are saved successfully."
  +msgstr "초기 설정치가 성공적으로 저장되었습니다."
  +
  +#: ../monisetup.php:820
  +msgid "Goto <a href='monisetup.php'>MoniSetup</a> again to configure details"
  +msgstr ""
  +"<a href='monisetup.php'>MoniSetup</a>으로 다시 가서 자세한 설정을 합니다"
  +
  +#: ../monisetup.php:837 ../monisetup.php:839 ../monisetup.php:935
  +#: ../monisetup.php:937
  +#, c-format
  +msgid "goto %s"
  +msgstr "%s으로 가기"
  +
  +#: ../monisetup.php:842
  +msgid "No WikiSeeds are selected"
  +msgstr "위키씨앗을 선택하지 않았습니다"
  +
  +#: ../monisetup.php:853
  +#, c-format
  +msgid "Preview current settings for this %s"
  +msgstr "%s 현재 설정을 미리보기"
  +
  +#: ../monisetup.php:855
  +#, c-format
  +msgid "Read current settings for this %s"
  +msgstr "%s 위키의 현재 설정 읽기"
  +
  +#: ../monisetup.php:883
  +msgid "Change your settings"
  +msgstr "세팅을 바꾸기"
  +
  +#: ../monisetup.php:885
  +msgid "WARN: You have to enter your Admin Password"
  +msgstr "주의: 관리자 비밀번호를 넣어주시기 바랍니다"
  +
  +#: ../monisetup.php:887 ../monisetup.php:930
  +#, c-format
  +msgid "WARN: You have no WikiSeed on your %s"
  +msgstr "주의: 위키씨앗이 위키 %s에 없습니다"
  +
  +#: ../monisetup.php:888 ../monisetup.php:931
  +#, c-format
  +msgid "If you want to put wikiseeds on your wiki %s now"
  +msgstr "위키씨앗을 심기를 원하신다면 %s 누르세요"
  +
  +#: ../monisetup.php:889 ../monisetup.php:932
  +msgid "Click here"
  +msgstr "여기를"
  +
  +#: ../monisetup.php:924 ../monisetup.php:926
  +msgid "Update"
  +msgstr "완료"
   
   #: ../locale/dummy.php:3
   msgid "FrontPage"
  -msgstr "빮"
  +msgstr "대문"
   
   #: ../locale/dummy.php:3
   msgid "RecentChanges"
  -msgstr "ٲ"
  +msgstr "바뀐글"
   
   #: ../locale/dummy.php:4
   msgid "TitleIndex"
  -msgstr ""
  +msgstr "목록"
   
   #: ../locale/dummy.php:4
   msgid "HelpContents"
  -msgstr ""
  +msgstr "도움말"
   
   #: ../locale/dummy.php:5
   msgid "DeletePage"
  -msgstr " "
  +msgstr "쪽 지우기"
   
   #: ../locale/dummy.php:5
   msgid "LikePages"
  -msgstr " "
  +msgstr "비슷한 쪽"
   
   #: ../locale/dummy.php:5
   msgid "UploadFile"
  -msgstr " ø"
  +msgstr "파일 올리기"
   
   #: ../locale/dummy.php:6
   msgid "UploadedFiles"
  -msgstr "ø "
  +msgstr "올린 파일"
   
   #: ../locale/dummy.php:7
   msgid "VisualTour"
  @@ -2032,10 +2563,13 @@
   
   #: ../locale/dummy.php:7
   msgid "TrackBack"
  -msgstr "Ʈ"
  +msgstr "트랙백"
  +
  +#~ msgid "%s or click %s to search title.\n"
  +#~ msgstr "%s 아이콘을 누르거나 %s을 눌러 제목을 찾습니다.\n"
   
   #~ msgid "Enter a page name"
  -#~ msgstr " ̸ "
  +#~ msgstr "페이지 이름을 넣으세요"
   
   #~ msgid "Info. for %s"
  -#~ msgstr "%s "
  +#~ msgstr "%s의 정보"
  
  
  
  1.20      +780 -258  moniwiki/locale/po/moniwiki.pot
  
  Index: moniwiki.pot
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/moniwiki.pot,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- moniwiki.pot	28 Nov 2008 02:22:11 -0000	1.19
  +++ moniwiki.pot	16 Dec 2008 12:37:18 -0000	1.20
  @@ -7,7 +7,7 @@
   msgstr ""
   "Project-Id-Version: PACKAGE VERSION\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2008-11-28 11:21+0900\n"
  +"POT-Creation-Date: 2008-12-16 21:07+0900\n"
   "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
   "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
   "Language-Team: LANGUAGE <LL@li.org>\n"
  @@ -15,20 +15,20 @@
   "Content-Type: text/plain; charset=CHARSET\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  -#: ../plugin/Attachment.php:70 ../plugin/Attachment.php:293
  +#: ../plugin/Attachment.php:70 ../plugin/Attachment.php:331
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr ""
   
  -#: ../plugin/Attachment.php:285
  +#: ../plugin/Attachment.php:323
   msgid "or paste a new png picture"
   msgstr ""
   
  -#: ../plugin/Attachment.php:290
  +#: ../plugin/Attachment.php:328
   msgid "or draw a new gif picture"
   msgstr ""
   
  -#: ../plugin/Attachment.php:296
  +#: ../plugin/Attachment.php:334
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
  @@ -60,7 +60,7 @@
   msgid "Error: No blog entry found!"
   msgstr ""
   
  -#: ../plugin/Blog.php:164 ../plugin/Blog.php:166 ../plugin/Comment.php:219
  +#: ../plugin/Blog.php:164 ../plugin/Blog.php:166 ../plugin/Comment.php:221
   msgid "Error: Don't make a clone!"
   msgstr ""
   
  @@ -93,15 +93,15 @@
   msgid "Add Blog entry to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:260 ../plugin/Blog.php:333
  +#: ../plugin/Blog.php:260 ../plugin/Blog.php:332
   msgid "Name"
   msgstr ""
   
  -#: ../plugin/Blog.php:262 ../plugin/Blog.php:334
  +#: ../plugin/Blog.php:262 ../plugin/Blog.php:333
   msgid "Title"
   msgstr ""
   
  -#: ../plugin/Blog.php:268 ../wikilib.php:900
  +#: ../plugin/Blog.php:268 ../wikilib.php:908
   msgid "GUI"
   msgstr ""
   
  @@ -141,7 +141,7 @@
   msgid "%d comments"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:206
  +#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:208
   #: ../plugin/processor/blog.php:78
   msgid "Add comment"
   msgstr ""
  @@ -182,7 +182,7 @@
   msgid "Comment"
   msgstr ""
   
  -#: ../plugin/Comment.php:88 ../wikilib.php:896
  +#: ../plugin/Comment.php:88 ../wikilib.php:904 ../monisetup.php:922
   msgid "Preview"
   msgstr ""
   
  @@ -190,44 +190,44 @@
   msgid "Username"
   msgstr ""
   
  -#: ../plugin/Comment.php:124
  +#: ../plugin/Comment.php:125
   msgid "Page is not writable"
   msgstr ""
   
  -#: ../plugin/Comment.php:127
  +#: ../plugin/Comment.php:128
   msgid "You are not allowed to add a comment."
   msgstr ""
   
  -#: ../plugin/Comment.php:128 ../plugin/Keywords.php:372
  +#: ../plugin/Comment.php:129 ../plugin/Keywords.php:372
   msgid "Page does not exists"
   msgstr ""
   
  -#: ../plugin/Comment.php:163 ../plugin/userform.php:119
  -#: ../plugin/userform.php:182 ../plugin/userform.php:205
  +#: ../plugin/Comment.php:164 ../plugin/userform.php:115
  +#: ../plugin/userform.php:178 ../plugin/userform.php:201
   msgid "Invalid ticket !"
   msgstr ""
   
  -#: ../plugin/Comment.php:167 ../plugin/userform.php:121
  -#: ../plugin/userform.php:207
  +#: ../plugin/Comment.php:169 ../plugin/userform.php:117
  +#: ../plugin/userform.php:203
   msgid "You need a ticket !"
   msgstr ""
   
  -#: ../plugin/Comment.php:189 ../plugin/Gallery.php:171 ../wikilib.php:1401
  -#: ../wikilib.php:1547
  +#: ../plugin/Comment.php:191 ../plugin/Gallery.php:171 ../plugin/bbs.php:1009
  +#: ../wikilib.php:1426 ../wikilib.php:1572
   msgid ""
   "Sorry, can not save page because some messages are blocked in this wiki."
   msgstr ""
   
  -#: ../plugin/Comment.php:195
  +#: ../plugin/Comment.php:197
   msgid "Preview comment"
   msgstr ""
   
  -#: ../plugin/Comment.php:326
  +#: ../plugin/Comment.php:328
   #, c-format
   msgid "%s is commented successfully"
   msgstr ""
   
  -#: ../plugin/Comment.php:327
  +#: ../plugin/Comment.php:329
   msgid "Comment added successfully"
   msgstr ""
   
  @@ -235,11 +235,12 @@
   msgid "No older revisions available"
   msgstr ""
   
  -#: ../plugin/Diff.php:212 ../plugin/Info.php:226
  +#: ../plugin/Diff.php:212 ../plugin/Info.php:226 ../plugin/rcsexport.php:13
  +#: ../plugin/rcsimport.php:13
   msgid "Version info is not available in this wiki"
   msgstr ""
   
  -#: ../plugin/Diff.php:223 ../wikilib.php:1534
  +#: ../plugin/Diff.php:223 ../wikilib.php:1559
   msgid "No difference found"
   msgstr ""
   
  @@ -292,7 +293,7 @@
   msgid "%d day(s) passed from %s."
   msgstr ""
   
  -#: ../plugin/FastSearch.php:44 ../plugin/FullSearch.php:80
  +#: ../plugin/FastSearch.php:44 ../plugin/FullSearch.php:90
   msgid "No search text"
   msgstr ""
   
  @@ -305,16 +306,19 @@
   msgid "Full text search for \"%s\""
   msgstr ""
   
  -#: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:35
  +#: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:38
  +#: ../wikilib.php:1347
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr ""
   
  -#: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:37
  +#: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  +#: ../wikilib.php:1349
   msgid "page"
   msgstr ""
   
  -#: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:37
  +#: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  +#: ../wikilib.php:1349
   msgid "pages"
   msgstr ""
   
  @@ -328,24 +332,50 @@
   msgid "KeyWords search for \"%s\""
   msgstr ""
   
  -#: ../plugin/FullSearch.php:40
  +#: ../plugin/FullSearch.php:43
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:44 ../plugin/VisualTour.php:124 ../wiki.php:4203
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:124 ../wiki.php:4340
   msgid "Refresh"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:45
  +#: ../plugin/FullSearch.php:48
   #, c-format
   msgid " (%s search results)"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:129
  +#: ../plugin/FullSearch.php:51
  +#, c-format
  +msgid "You can also click %s to search title.\n"
  +msgstr ""
  +
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5180 ../wiki.php:5187
  +#: ../wikilib.php:1357
  +msgid "here"
  +msgstr ""
  +
  +#: ../plugin/FullSearch.php:74
  +msgid "Display context of search results"
  +msgstr ""
  +
  +#: ../plugin/FullSearch.php:75
  +msgid "Search BackLinks only"
  +msgstr ""
  +
  +#: ../plugin/FullSearch.php:76
  +msgid "Case-sensitive searching"
  +msgstr ""
  +
  +#: ../plugin/FullSearch.php:77 ../wikilib.php:2625 ../wikilib.php:2686
  +msgid "Go"
  +msgstr ""
  +
  +#: ../plugin/FullSearch.php:140
   msgid "Empty expression"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:133 ../wikilib.php:2614
  +#: ../plugin/FullSearch.php:144 ../wikilib.php:2646
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr ""
  @@ -362,8 +392,8 @@
   msgid "show comments"
   msgstr ""
   
  -#: ../plugin/Gallery.php:393 ../plugin/Gallery.php:397 ../wikilib.php:1388
  -#: ../wikilib.php:1532
  +#: ../plugin/Gallery.php:393 ../plugin/Gallery.php:397 ../wikilib.php:1413
  +#: ../wikilib.php:1557
   #, c-format
   msgid "Go back or return to %s"
   msgstr ""
  @@ -388,6 +418,26 @@
   msgid "Revision History"
   msgstr ""
   
  +#: ../plugin/Info.php:37
  +msgid "ver."
  +msgstr ""
  +
  +#: ../plugin/Info.php:37
  +msgid "Date and Changes"
  +msgstr ""
  +
  +#: ../plugin/Info.php:38
  +msgid "Editor"
  +msgstr ""
  +
  +#: ../plugin/Info.php:41
  +msgid "actions"
  +msgstr ""
  +
  +#: ../plugin/Info.php:42
  +msgid "admin."
  +msgstr ""
  +
   #: ../plugin/Info.php:58
   msgid "Show all revisions"
   msgstr ""
  @@ -415,6 +465,35 @@
   msgid "diff"
   msgstr ""
   
  +#: ../plugin/Info.php:189 ../plugin/rename.php:80
  +msgid "show only"
  +msgstr ""
  +
  +#: ../plugin/Info.php:193
  +msgid "purge"
  +msgstr ""
  +
  +#: ../plugin/JME.php:55
  +#, c-format
  +msgid "Draw a new molecule '%s'"
  +msgstr ""
  +
  +#: ../plugin/JME.php:57
  +msgid "Draw a new molecule"
  +msgstr ""
  +
  +#: ../plugin/JME.php:95
  +msgid "Molecule successfully added"
  +msgstr ""
  +
  +#: ../plugin/JME.php:101
  +msgid "Edit Molecule"
  +msgstr ""
  +
  +#: ../plugin/JME.php:131
  +msgid "Edit new molecule"
  +msgstr ""
  +
   #: ../plugin/Keywords.php:330
   msgid "hits"
   msgstr ""
  @@ -499,7 +578,7 @@
   msgid "Select keywords for %s"
   msgstr ""
   
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1230 ../wikilib.php:2603
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1238 ../wikilib.php:2633
   msgid "Use more specific text"
   msgstr ""
   
  @@ -552,23 +631,70 @@
   msgid "Edit Image"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:117
  +#: ../plugin/Rating.php:58
  +msgid "Awful!"
  +msgstr ""
  +
  +#: ../plugin/Rating.php:59
  +msgid "Not the worst ever."
  +msgstr ""
  +
  +#: ../plugin/Rating.php:60
  +msgid "Not bad!"
  +msgstr ""
  +
  +#: ../plugin/Rating.php:61
  +msgid "Useful!"
  +msgstr ""
  +
  +#: ../plugin/Rating.php:62
  +msgid "Very Gooood!"
  +msgstr ""
  +
  +#: ../plugin/Rating.php:84 ../plugin/Vote.php:67
  +#: ../plugin/security/community.php:26 ../plugin/security/community.php:36
  +#: ../plugin/security/community.php:46 ../plugin/security/community.php:61
  +#: ../plugin/security/mustlogin.php:29 ../plugin/security/mustlogin.php:40
  +#: ../plugin/security/mustlogin.php:51 ../plugin/security/mustlogin.php:67
  +#: ../plugin/security/needtologin.php:29 ../plugin/security/needtologin.php:40
  +#: ../plugin/security/needtologin.php:51 ../plugin/security/userbased.php:60
  +msgid "Please Login or make your ID on this Wiki ;)"
  +msgstr ""
  +
  +#: ../plugin/Rating.php:188
  +msgid "Invalid rating request !"
  +msgstr ""
  +
  +#: ../plugin/Rating.php:203
  +msgid "Rating successfully !"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:114
   msgid "Show changes for "
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:122
  +#: ../plugin/RecentChanges.php:119
   msgid "days ago"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:209
  +#: ../plugin/RecentChanges.php:206
   msgid "set bookmark"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:244
  +#: ../plugin/RecentChanges.php:241 ../plugin/pagelist.php:107
  +#: ../plugin/pagelist.php:124
   #, c-format
   msgid "[%sh %sm ago]"
   msgstr ""
   
  +#: ../plugin/SWFUpload.php:116
  +msgid "Files..."
  +msgstr ""
  +
  +#: ../plugin/SWFUpload.php:117
  +msgid "Upload"
  +msgstr ""
  +
   #: ../plugin/SlideShow.php:28
   msgid "No page found"
   msgstr ""
  @@ -655,7 +781,7 @@
   msgid "TwinPages of %s"
   msgstr ""
   
  -#: ../plugin/TwinPages.php:19 ../wiki.php:4993
  +#: ../plugin/TwinPages.php:19 ../wiki.php:5166
   msgid "See [TwinPages]: "
   msgstr ""
   
  @@ -737,12 +863,12 @@
   msgid "Total %d files"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:414 ../plugin/rename.php:77 ../wikilib.php:1069
  -#: ../wikilib.php:1946
  +#: ../plugin/UploadedFiles.php:414 ../plugin/rename.php:77
  +#: ../plugin/revert.php:82 ../wikilib.php:1077 ../wikilib.php:1967
   msgid "Password"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:415 ../wikilib.php:1047
  +#: ../plugin/UploadedFiles.php:415 ../wikilib.php:1055
   msgid "Delete selected files"
   msgstr ""
   
  @@ -758,21 +884,11 @@
   msgid "Deeper"
   msgstr ""
   
  -#: ../plugin/Vote.php:67 ../plugin/security/community.php:26
  -#: ../plugin/security/community.php:36 ../plugin/security/community.php:46
  -#: ../plugin/security/community.php:61 ../plugin/security/mustlogin.php:29
  -#: ../plugin/security/mustlogin.php:40 ../plugin/security/mustlogin.php:51
  -#: ../plugin/security/mustlogin.php:67 ../plugin/security/needtologin.php:29
  -#: ../plugin/security/needtologin.php:40 ../plugin/security/needtologin.php:51
  -#: ../plugin/security/userbased.php:60
  -msgid "Please Login or make your ID on this Wiki ;)"
  -msgstr ""
  -
   #: ../plugin/Vote.php:113
   msgid "Voted successfully"
   msgstr ""
   
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2356
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2379
   msgid "Others"
   msgstr ""
   
  @@ -804,6 +920,54 @@
   msgid "Protected actions"
   msgstr ""
   
  +#: ../plugin/admin.php:136
  +msgid "Description"
  +msgstr ""
  +
  +#: ../plugin/admin.php:139
  +msgid "Author"
  +msgstr ""
  +
  +#: ../plugin/admin.php:141
  +msgid "License"
  +msgstr ""
  +
  +#: ../plugin/admin.php:143
  +msgid "Depend"
  +msgstr ""
  +
  +#: ../plugin/admin.php:147
  +msgid "URL"
  +msgstr ""
  +
  +#: ../plugin/admin.php:191
  +msgid "Enabled plugins"
  +msgstr ""
  +
  +#: ../plugin/admin.php:193
  +msgid "Disabled plugins"
  +msgstr ""
  +
  +#: ../plugin/admin.php:201
  +msgid "Enabled processors"
  +msgstr ""
  +
  +#: ../plugin/admin.php:203
  +msgid "Disabled processors"
  +msgstr ""
  +
  +#: ../plugin/admin.php:206
  +msgid "Plugin/Processor settings are updated"
  +msgstr ""
  +
  +#: ../plugin/admin.php:212
  +msgid "Enable/disable plugins and processors"
  +msgstr ""
  +
  +#: ../plugin/atom.php:64 ../plugin/rss_rc.php:62
  +msgid "show changes"
  +msgstr ""
  +
   #: ../plugin/backup.php:42
   msgid "Your wiki is backuped successfully"
   msgstr ""
  @@ -816,6 +980,85 @@
   msgid "Did you want to Backup your wiki ?"
   msgstr ""
   
  +#: ../plugin/bbs.php:493
  +msgid "This bbs does not exists yet. Please save this page first"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:617
  +msgid "No"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:626 ../plugin/man_get.php:115
  +msgid "Edit"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1078
  +msgid "Delete"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:657
  +msgid "Please check article numbers."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:737
  +msgid "More"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:782
  +msgid "New"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:784
  +msgid "Read"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:800
  +#, c-format
  +msgid "Total %s articles."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:836
  +#, c-format
  +msgid "Your IP address is not allowed to %s at this BBS"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:890
  +msgid "Successfully deleted."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:922
  +msgid "Fail to post comment."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:932
  +#, c-format
  +msgid "The article %s will be deleted."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:974
  +msgid "Invalid HomePage address."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:987
  +msgid "No Name error."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:997
  +msgid "No Subject error."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:1025
  +msgid "New post added successfully"
  +msgstr ""
  +
  +#: ../plugin/cacheadmin.php:105
  +msgid "You are not WikiMaster!!"
  +msgstr ""
  +
  +#: ../plugin/cacheadmin.php:120
  +msgid "Clear cache dirs"
  +msgstr ""
  +
   #: ../plugin/chat.php:36
   msgid "No messages"
   msgstr ""
  @@ -835,35 +1078,39 @@
   msgid "Change permission of \"%s\""
   msgstr ""
   
  -#: ../plugin/css.php:29 ../plugin/css.php:37
  +#: ../plugin/css.php:33 ../plugin/css.php:41
   msgid "Back to UserPreferences"
   msgstr ""
   
  -#: ../plugin/css.php:63
  +#: ../plugin/css.php:67
   msgid "CSS disabled !"
   msgstr ""
   
  -#: ../plugin/format.php:15
  +#: ../plugin/format.php:17
   msgid "It is a XML format !"
   msgstr ""
   
  -#: ../plugin/login.php:33
  +#: ../plugin/html2pdf.php:30
  +msgid "The TCPDF class not found!"
  +msgstr ""
  +
  +#: ../plugin/login.php:29
   msgid "Login:"
   msgstr ""
   
  -#: ../plugin/login.php:34
  +#: ../plugin/login.php:30
   msgid "Password:"
   msgstr ""
   
  -#: ../plugin/login.php:35
  +#: ../plugin/login.php:31
   msgid "Join"
   msgstr ""
   
  -#: ../plugin/login.php:51 ../plugin/minilogin.php:29
  +#: ../plugin/login.php:47 ../plugin/minilogin.php:25
   msgid "Logout"
   msgstr ""
   
  -#: ../plugin/login.php:52 ../plugin/minilogin.php:28 ../locale/dummy.php:3
  +#: ../plugin/login.php:48 ../plugin/minilogin.php:24 ../locale/dummy.php:3
   msgid "UserPreferences"
   msgstr ""
   
  @@ -875,15 +1122,11 @@
   msgid "No manpage found"
   msgstr ""
   
  -#: ../plugin/man_get.php:115
  -msgid "Edit"
  -msgstr ""
  -
  -#: ../plugin/minilogin.php:22 ../wikilib.php:2022
  +#: ../plugin/minilogin.php:18 ../wikilib.php:2043
   msgid "Login or Join"
   msgstr ""
   
  -#: ../plugin/minilogin.php:30
  +#: ../plugin/minilogin.php:26
   #, c-format
   msgid "%s or %s"
   msgstr ""
  @@ -901,6 +1144,16 @@
   msgid "Fail to save translations."
   msgstr ""
   
  +#: ../plugin/msgtrans.php:23 ../plugin/useradmin.php:54
  +#: ../plugin/useradmin.php:58
  +#, c-format
  +msgid "You are not allowed to \"%s\" !"
  +msgstr ""
  +
  +#: ../plugin/msgtrans.php:143
  +msgid "Local translation files are successfully translated !\n"
  +msgstr ""
  +
   #: ../plugin/new.php:13 ../plugin/new.php:28
   msgid "Create a new page"
   msgstr ""
  @@ -931,16 +1184,24 @@
   msgid "raw"
   msgstr ""
   
  +#: ../plugin/processor/bts.php:178
  +msgid "Save Changes"
  +msgstr ""
  +
  +#: ../plugin/processor/monimarkup.php:489 ../wiki.php:3809
  +msgid "edit"
  +msgstr ""
  +
   #: ../plugin/processor/vim.php:58
   msgid "Toggle line numbers"
   msgstr ""
   
  -#: ../plugin/quicklinks.php:16 ../plugin/scrap.php:37
  +#: ../plugin/quicklinks.php:16 ../plugin/scrap.php:33
   #: ../plugin/subscribe.php:19 ../plugin/subscribe.php:55
   msgid "Please login or make your ID."
   msgstr ""
   
  -#: ../plugin/quicklinks.php:22 ../plugin/scrap.php:40
  +#: ../plugin/quicklinks.php:22 ../plugin/scrap.php:36
   #: ../plugin/subscribe.php:61
   msgid "Goto UserPreferences"
   msgstr ""
  @@ -959,6 +1220,11 @@
   msgid "Do you want to customize your quicklinks ?"
   msgstr ""
   
  +#: ../plugin/rawblog.php:63 ../plugin/rawblog.php:73
  +#, c-format
  +msgid "Delete Blog entry \"%s\""
  +msgstr ""
  +
   #: ../plugin/rcs.php:13
   #, c-format
   msgid "%s does not support rcs options."
  @@ -1042,14 +1308,10 @@
   msgid "Only WikiMaster can rename this page"
   msgstr ""
   
  -#: ../plugin/rename.php:79 ../wikilib.php:1115
  +#: ../plugin/rename.php:79 ../wikilib.php:1123
   msgid "with revision history"
   msgstr ""
   
  -#: ../plugin/rename.php:80
  -msgid "show only"
  -msgstr ""
  -
   #: ../plugin/rename.php:82
   msgid "Check backlinks"
   msgstr ""
  @@ -1088,15 +1350,60 @@
   msgid "Select a tarball file to restore"
   msgstr ""
   
  -#: ../plugin/rss_rc.php:62
  -msgid "show changes"
  +#: ../plugin/revert.php:23 ../wiki.php:5182
  +#, c-format
  +msgid "Old Revisions of the %s"
  +msgstr ""
  +
  +#: ../plugin/revert.php:57
  +msgid "No version control available."
  +msgstr ""
  +
  +#: ../plugin/revert.php:61
  +#, c-format
  +msgid "%s is successfully rollback."
  +msgstr ""
  +
  +#: ../plugin/revert.php:66
  +msgid "Are you really want to overwrite this page ?"
  +msgstr ""
  +
  +#: ../plugin/revert.php:67
  +msgid "Force overwrite"
   msgstr ""
   
  -#: ../plugin/scrap.php:57
  +#: ../plugin/revert.php:69
  +msgid "Are you really want to revert this page ?"
  +msgstr ""
  +
  +#: ../plugin/revert.php:74
  +msgid "Summary"
  +msgstr ""
  +
  +#: ../plugin/revert.php:76
  +#, c-format
  +msgid "Rollback to revision %s"
  +msgstr ""
  +
  +#: ../plugin/revert.php:79
  +msgid "Revert page"
  +msgstr ""
  +
  +#: ../plugin/revert.php:80
  +#, c-format
  +msgid "Only WikiMaster can %s this page"
  +msgstr ""
  +
  +#: ../plugin/revert.php:80
  +#, c-format
  +msgid "revert"
  +msgstr ""
  +
  +#: ../plugin/scrap.php:53
   msgid "Scrap lists updated."
   msgstr ""
   
  -#: ../plugin/scrap.php:69
  +#: ../plugin/scrap.php:65
   #, c-format
   msgid "Do you want to scrap \"%s\" ?"
   msgstr ""
  @@ -1254,222 +1561,232 @@
   msgid "No TrackBack entry found for %s"
   msgstr ""
   
  -#: ../plugin/userform.php:39 ../plugin/userform.php:42
  +#: ../plugin/useradmin.php:21
  +#, c-format
  +msgid "You are not allowed to use the \"%s\" macro."
  +msgstr ""
  +
  +#: ../plugin/useradmin.php:25
  +#, c-format
  +msgid "Total %d users"
  +msgstr ""
  +
  +#: ../plugin/userform.php:35 ../plugin/userform.php:38
   msgid "Successfully confirmed"
   msgstr ""
   
  -#: ../plugin/userform.php:40
  +#: ../plugin/userform.php:36
   msgid "Your e-mail address is confirmed successfully"
   msgstr ""
   
  -#: ../plugin/userform.php:47
  +#: ../plugin/userform.php:43
   msgid "Your new password is confirmed successfully"
   msgstr ""
   
  -#: ../plugin/userform.php:49
  +#: ../plugin/userform.php:45
   msgid "Confirmation missmatched !"
   msgstr ""
   
  -#: ../plugin/userform.php:50 ../plugin/userform.php:54
  +#: ../plugin/userform.php:46 ../plugin/userform.php:50
   msgid "Please try again to register your e-mail address"
   msgstr ""
   
  -#: ../plugin/userform.php:53
  +#: ../plugin/userform.php:49
   msgid "ID does not exists !"
   msgstr ""
   
  -#: ../plugin/userform.php:86 ../plugin/userform.php:275
  +#: ../plugin/userform.php:82 ../plugin/userform.php:271
   #, c-format
   msgid "Successfully login as '%s'"
   msgstr ""
   
  -#: ../plugin/userform.php:93 ../plugin/userform.php:280
  -#: ../plugin/userform.php:323
  +#: ../plugin/userform.php:89 ../plugin/userform.php:276
  +#: ../plugin/userform.php:319
   msgid "Invalid password !"
   msgstr ""
   
  -#: ../plugin/userform.php:97
  +#: ../plugin/userform.php:93
   #, c-format
   msgid "\"%s\" does not exists on this wiki !"
   msgstr ""
   
  -#: ../plugin/userform.php:99
  +#: ../plugin/userform.php:95
   msgid "Make new ID on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:105
  +#: ../plugin/userform.php:101
   msgid "Cookie deleted !"
   msgstr ""
   
  -#: ../plugin/userform.php:108 ../wikilib.php:2092
  +#: ../plugin/userform.php:104 ../wikilib.php:2113
   msgid "E-mail new password"
   msgstr ""
   
  -#: ../plugin/userform.php:153
  +#: ../plugin/userform.php:149
   msgid "New password confirmation"
   msgstr ""
   
  -#: ../plugin/userform.php:158
  +#: ../plugin/userform.php:154
   msgid "Please confirm your new password"
   msgstr ""
   
  -#: ../plugin/userform.php:160
  +#: ../plugin/userform.php:156
   #, c-format
   msgid "Your new password is %s"
   msgstr ""
   
  -#: ../plugin/userform.php:161 ../plugin/userform.php:267
  +#: ../plugin/userform.php:157 ../plugin/userform.php:263
   msgid "Please change your password later"
   msgstr ""
   
  -#: ../plugin/userform.php:165 ../plugin/userform.php:173
  +#: ../plugin/userform.php:161 ../plugin/userform.php:169
   msgid "Fail to e-mail notification !"
   msgstr ""
   
  -#: ../plugin/userform.php:168
  +#: ../plugin/userform.php:164
   msgid "New password is sent to your e-mail !"
   msgstr ""
   
  -#: ../plugin/userform.php:169
  +#: ../plugin/userform.php:165
   msgid "Please check your e-mail"
   msgstr ""
   
  -#: ../plugin/userform.php:174
  +#: ../plugin/userform.php:170
   msgid "E-mail mismatch !"
   msgstr ""
   
  -#: ../plugin/userform.php:176
  +#: ../plugin/userform.php:172
   msgid "Invalid request"
   msgstr ""
   
  -#: ../plugin/userform.php:177
  +#: ../plugin/userform.php:173
   msgid "Please confirm your e-mail address first !"
   msgstr ""
   
  -#: ../plugin/userform.php:184
  +#: ../plugin/userform.php:180
   msgid "ID and e-mail mismatch !"
   msgstr ""
   
  -#: ../plugin/userform.php:186
  +#: ../plugin/userform.php:182
   msgid "Please try again or make a new profile"
   msgstr ""
   
  -#: ../plugin/userform.php:226 ../plugin/userform.php:311
  +#: ../plugin/userform.php:222 ../plugin/userform.php:307
   msgid "too short password!"
   msgstr ""
   
  -#: ../plugin/userform.php:227
  +#: ../plugin/userform.php:223
   msgid "mismatch password!"
   msgstr ""
   
  -#: ../plugin/userform.php:228 ../plugin/userform.php:315
  +#: ../plugin/userform.php:224 ../plugin/userform.php:311
   msgid "not acceptable character found in the password!"
   msgstr ""
   
  -#: ../plugin/userform.php:231
  +#: ../plugin/userform.php:227
   msgid "Your password is too simple to use as a password !"
   msgstr ""
   
  -#: ../plugin/userform.php:237 ../plugin/userform.php:346
  +#: ../plugin/userform.php:233 ../plugin/userform.php:342
   msgid "Your email address is not valid"
   msgstr ""
   
  -#: ../plugin/userform.php:242 ../plugin/userform.php:407
  +#: ../plugin/userform.php:238 ../plugin/userform.php:403
   msgid "Fail to register"
   msgstr ""
   
  -#: ../plugin/userform.php:243 ../plugin/userform.php:408
  +#: ../plugin/userform.php:239 ../plugin/userform.php:404
   msgid "You are not allowed to register on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:244 ../plugin/userform.php:409 ../wiki.php:4947
  -#: ../wiki.php:4958
  +#: ../plugin/userform.php:240 ../plugin/userform.php:405 ../wiki.php:5120
  +#: ../wiki.php:5131
   msgid "Please contact WikiMasters"
   msgstr ""
   
  -#: ../plugin/userform.php:248
  +#: ../plugin/userform.php:244
   msgid "Successfully added!"
   msgstr ""
   
  -#: ../plugin/userform.php:254
  +#: ../plugin/userform.php:250
   #, c-format
   msgid "Successfully added as '%s'"
   msgstr ""
   
  -#: ../plugin/userform.php:255
  +#: ../plugin/userform.php:251
   msgid "Please check your mailbox"
   msgstr ""
   
  -#: ../plugin/userform.php:262 ../plugin/userform.php:340
  +#: ../plugin/userform.php:258 ../plugin/userform.php:336
   msgid "E-mail confirmation"
   msgstr ""
   
  -#: ../plugin/userform.php:264 ../plugin/userform.php:342
  +#: ../plugin/userform.php:260 ../plugin/userform.php:338
   msgid "Please confirm your email address"
   msgstr ""
   
  -#: ../plugin/userform.php:266
  +#: ../plugin/userform.php:262
   #, c-format
   msgid "Your initial password is %s"
   msgstr ""
   
  -#: ../plugin/userform.php:270
  +#: ../plugin/userform.php:266
   msgid "Confirmation E-mail sent"
   msgstr ""
   
  -#: ../plugin/userform.php:285
  +#: ../plugin/userform.php:281
   msgid "Invalid username !"
   msgstr ""
   
  -#: ../plugin/userform.php:313
  +#: ../plugin/userform.php:309
   msgid "mismatch password !"
   msgstr ""
   
  -#: ../plugin/userform.php:316 ../plugin/userform.php:324
  +#: ../plugin/userform.php:312 ../plugin/userform.php:320
   msgid "Password is not changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:318
  +#: ../plugin/userform.php:314
   msgid "Password is changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:320
  +#: ../plugin/userform.php:316
   msgid "Password is too simple to use as a password !"
   msgstr ""
   
  -#: ../plugin/userform.php:344
  +#: ../plugin/userform.php:340
   msgid "E-mail confirmation mail sent"
   msgstr ""
   
  -#: ../plugin/userform.php:355
  +#: ../plugin/userform.php:351
   msgid "Your Nickname already used as ID in this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:360
  +#: ../plugin/userform.php:356
   msgid "Profiles are saved successfully !"
   msgstr ""
   
  -#: ../plugin/userform.php:383 ../plugin/userform.php:429
  +#: ../plugin/userform.php:379 ../plugin/userform.php:425
   #, c-format
   msgid "Authentication request was failed: %s"
   msgstr ""
   
  -#: ../plugin/userform.php:402
  +#: ../plugin/userform.php:398
   #, c-format
   msgid "Successfully login as '%s' via OpenID."
   msgstr ""
   
  -#: ../plugin/userform.php:416
  +#: ../plugin/userform.php:412
   #, c-format
   msgid "Your Nickname %s already used as ID in this Wiki."
   msgstr ""
   
  -#: ../plugin/userform.php:424
  +#: ../plugin/userform.php:420
   #, c-format
   msgid "OpenID Authentication successful and saved as %s."
   msgstr ""
   
  -#: ../plugin/userform.php:431
  +#: ../plugin/userform.php:427
   msgid "Invalid OpenID Authentication request"
   msgstr ""
   
  @@ -1483,148 +1800,139 @@
   msgid "Whois search result for %s"
   msgstr ""
   
  -#: ../wiki.php:1235
  +#: ../wiki.php:1236
   #, c-format
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1654
  +#: ../wiki.php:1653
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
  -#: ../wiki.php:1664
  +#: ../wiki.php:1663
   msgid "File does not exist"
   msgstr ""
   
  -#: ../wiki.php:2007
  +#: ../wiki.php:2034
   #, c-format
   msgid "File '%s' does not exist."
   msgstr ""
   
  -#: ../wiki.php:2831 ../wiki.php:2842 ../wiki.php:5173
  +#: ../wiki.php:2897 ../wiki.php:2908 ../wiki.php:5353
   msgid "Invalid ajax action."
   msgstr ""
   
  -#: ../wiki.php:3255
  +#: ../wiki.php:3398
   msgid "Tags:"
   msgstr ""
   
  -#: ../wiki.php:3283
  +#: ../wiki.php:3426
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:3283
  +#: ../wiki.php:3426
   #, c-format
   msgid "TwinPages"
   msgstr ""
   
  -#: ../wiki.php:3288
  +#: ../wiki.php:3431
   msgid "See [TwinPages]:"
   msgstr ""
   
  -#: ../wiki.php:3657
  -msgid "edit"
  -msgstr ""
  -
  -#: ../wiki.php:3833
  +#: ../wiki.php:3989
   msgid "Sister Sites Index"
   msgstr ""
   
  -#: ../wiki.php:4199 ../locale/dummy.php:6
  +#: ../wiki.php:4336 ../locale/dummy.php:6
   msgid "EditText"
   msgstr ""
   
  -#: ../wiki.php:4201
  +#: ../wiki.php:4338
   msgid "NotEditable"
   msgstr ""
   
  -#: ../wiki.php:4205 ../locale/dummy.php:6
  +#: ../wiki.php:4342 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:4206 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4343 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr ""
   
  -#: ../wiki.php:4586
  +#: ../wiki.php:4725
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:4946
  +#: ../wiki.php:5119
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:4957
  +#: ../wiki.php:5130
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:4995 ../wiki.php:5004 ../wikilib.php:1323
  +#: ../wiki.php:5168 ../wiki.php:5177 ../wikilib.php:1337
   msgid "Create this page"
   msgstr ""
   
  -#: ../wiki.php:5006
  +#: ../wiki.php:5179
   #, c-format
   msgid "%s has saved revisions"
   msgstr ""
   
  -#: ../wiki.php:5007 ../wiki.php:5014
  +#: ../wiki.php:5180 ../wiki.php:5187
   #, c-format
  -msgid "%s or click %s to fullsearch this page.\n"
  -msgstr ""
  -
  -#: ../wiki.php:5007 ../wiki.php:5014 ../wikilib.php:1325
  -msgid "title"
  +msgid "%s or click %s to fulltext search.\n"
   msgstr ""
   
  -#: ../wiki.php:5009
  +#: ../wiki.php:5185
   #, c-format
  -msgid "Old Revisions of the %s"
  +msgid "%s is not found in this Wiki"
   msgstr ""
   
  -#: ../wiki.php:5012
  -#, c-format
  -msgid "%s is not found in this Wiki"
  +#: ../wiki.php:5192
  +msgid "Please try to search with another word"
   msgstr ""
   
  -#: ../wiki.php:5024
  +#: ../wiki.php:5204
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr ""
   
  -#: ../wiki.php:5027
  +#: ../wiki.php:5207
   msgid "You have no templates"
   msgstr ""
   
  -#: ../wiki.php:5029
  +#: ../wiki.php:5209
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
   
  -#: ../wiki.php:5040
  +#: ../wiki.php:5220
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
  -#: ../wiki.php:5175
  +#: ../wiki.php:5355
   msgid "Invalid macro action."
   msgstr ""
   
  -#: ../wiki.php:5185
  +#: ../wiki.php:5365
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr ""
   
  -#: ../wiki.php:5205
  +#: ../wiki.php:5385
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:5208
  +#: ../wiki.php:5388
   msgid "Please enter the valid password"
   msgstr ""
   
  -#: ../wikilib.php:636
  +#: ../wikilib.php:644
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -1641,343 +1949,557 @@
   "no trailing white space allowed after tables or titles.<br />\n"
   msgstr ""
   
  -#: ../wikilib.php:673
  +#: ../wikilib.php:681
   msgid "You are not allowed to edit this page !"
   msgstr ""
   
  -#: ../wikilib.php:679
  +#: ../wikilib.php:687
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
  -#: ../wikilib.php:785
  +#: ../wikilib.php:793
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   
  -#: ../wikilib.php:787
  +#: ../wikilib.php:795
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr ""
   
  -#: ../wikilib.php:791
  +#: ../wikilib.php:799
   msgid "Merge"
   msgstr ""
   
  -#: ../wikilib.php:792
  +#: ../wikilib.php:800
   msgid "Merge manually"
   msgstr ""
   
  -#: ../wikilib.php:793
  +#: ../wikilib.php:801
   msgid "Ignore conflicts"
   msgstr ""
   
  -#: ../wikilib.php:820
  +#: ../wikilib.php:828
   msgid "ReduceEditor"
   msgstr ""
   
  -#: ../wikilib.php:821
  +#: ../wikilib.php:829
   msgid "EnlargeEditor"
   msgstr ""
   
  -#: ../wikilib.php:825 ../locale/dummy.php:6
  +#: ../wikilib.php:833 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
  -#: ../wikilib.php:827
  +#: ../wikilib.php:835
   msgid "HelpOnEditing"
   msgstr ""
   
  -#: ../wikilib.php:859
  +#: ../wikilib.php:867
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:879
  +#: ../wikilib.php:887
   msgid "--Select Category--"
   msgstr ""
   
  -#: ../wikilib.php:889
  +#: ../wikilib.php:897
   msgid "Minor edit"
   msgstr ""
   
  -#: ../wikilib.php:893
  +#: ../wikilib.php:901
   msgid "Summary of Change"
   msgstr ""
   
  -#: ../wikilib.php:898
  +#: ../wikilib.php:906
   msgid "Skip to preview"
   msgstr ""
   
  -#: ../wikilib.php:908 ../wikilib.php:2025 ../wikilib.php:2079
  +#: ../wikilib.php:916 ../wikilib.php:2046 ../wikilib.php:2100
   msgid "Save"
   msgstr ""
   
  -#: ../wikilib.php:981
  +#: ../wikilib.php:989
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:986
  +#: ../wikilib.php:994
   #, c-format
   msgid "%s is not valid action"
   msgstr ""
   
  -#: ../wikilib.php:988
  +#: ../wikilib.php:996
   msgid "Is it valid action ?"
   msgstr ""
   
  -#: ../wikilib.php:1035
  +#: ../wikilib.php:1043
   #, c-format
   msgid "File '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:1037
  +#: ../wikilib.php:1045
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1042
  +#: ../wikilib.php:1050
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:1044
  +#: ../wikilib.php:1052
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1054 ../wikilib.php:1074
  +#: ../wikilib.php:1062 ../wikilib.php:1082
   msgid "No files are selected !"
   msgstr ""
   
  -#: ../wikilib.php:1067
  +#: ../wikilib.php:1075
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
  -#: ../wikilib.php:1070
  -msgid "Delete"
  -msgstr ""
  -
  -#: ../wikilib.php:1071
  +#: ../wikilib.php:1079
   msgid "Delete selected file"
   msgstr ""
   
  -#: ../wikilib.php:1092
  +#: ../wikilib.php:1100
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr ""
   
  -#: ../wikilib.php:1107
  +#: ../wikilib.php:1115
   msgid "Please delete this file manually."
   msgstr ""
   
  -#: ../wikilib.php:1109
  +#: ../wikilib.php:1117
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr ""
   
  -#: ../wikilib.php:1162
  +#: ../wikilib.php:1170
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
  -#: ../wikilib.php:1325
  +#: ../wikilib.php:1339
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
   
  -#: ../wikilib.php:1376 ../wikilib.php:1477
  +#: ../wikilib.php:1339
  +msgid "title"
  +msgstr ""
  +
  +#: ../wikilib.php:1353
  +msgid "Please try to fulltext search"
  +msgstr ""
  +
  +#: ../wikilib.php:1356
  +#, c-format
  +msgid "You can also click %s to fulltext search.\n"
  +msgstr ""
  +
  +#: ../wikilib.php:1401 ../wikilib.php:1502
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr ""
   
  -#: ../wikilib.php:1382
  +#: ../wikilib.php:1407
   msgid "Section edit is not valid for non-exists page."
   msgstr ""
   
  -#: ../wikilib.php:1415 ../wikilib.php:1593
  +#: ../wikilib.php:1440 ../wikilib.php:1618
   msgid "mail does not supported by default."
   msgstr ""
   
  -#: ../wikilib.php:1419 ../wikilib.php:1597
  +#: ../wikilib.php:1444 ../wikilib.php:1622
   msgid "Sent notification mail."
   msgstr ""
   
  -#: ../wikilib.php:1421 ../wikilib.php:1599
  +#: ../wikilib.php:1446 ../wikilib.php:1624
   msgid "No subscribers found."
   msgstr ""
   
  -#: ../wikilib.php:1426 ../wikilib.php:1604
  +#: ../wikilib.php:1451 ../wikilib.php:1629
   #, c-format
   msgid "%s is not editable"
   msgstr ""
   
  -#: ../wikilib.php:1428 ../wikilib.php:1606
  +#: ../wikilib.php:1453 ../wikilib.php:1631
   #, c-format
   msgid "%s is saved"
   msgstr ""
   
  -#: ../wikilib.php:1468
  +#: ../wikilib.php:1493
   msgid "Goto Editor"
   msgstr ""
   
  -#: ../wikilib.php:1482
  +#: ../wikilib.php:1507
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr ""
   
  -#: ../wikilib.php:1483
  +#: ../wikilib.php:1508
   #, c-format
   msgid "%s is merged successfully"
   msgstr ""
   
  -#: ../wikilib.php:1487
  +#: ../wikilib.php:1512
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1488
  +#: ../wikilib.php:1513
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr ""
   
  -#: ../wikilib.php:1489
  +#: ../wikilib.php:1514
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1490
  +#: ../wikilib.php:1515
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1495
  +#: ../wikilib.php:1520
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr ""
   
  -#: ../wikilib.php:1496
  +#: ../wikilib.php:1521
   msgid "Please resolve conflicts manually."
   msgstr ""
   
  -#: ../wikilib.php:1499
  +#: ../wikilib.php:1524
   #, c-format
   msgid "Force merging for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1500
  +#: ../wikilib.php:1525
   msgid "Please be careful, you could damage useful information."
   msgstr ""
   
  -#: ../wikilib.php:1514
  +#: ../wikilib.php:1539
   msgid "Conflict error!"
   msgstr ""
   
  -#: ../wikilib.php:1553
  +#: ../wikilib.php:1578
   #, c-format
   msgid "Preview of %s"
   msgstr ""
   
  -#: ../wikilib.php:1638
  +#: ../wikilib.php:1663
   msgid "Nobody subscribed to this page."
   msgstr ""
   
  -#: ../wikilib.php:1657
  +#: ../wikilib.php:1682
   #, c-format
   msgid "%s page is modified"
   msgstr ""
   
  -#: ../wikilib.php:1686
  +#: ../wikilib.php:1711
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:1699
  +#: ../wikilib.php:1724
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:1704
  +#: ../wikilib.php:1729
   msgid "Mails are sent successfully"
   msgstr ""
   
  -#: ../wikilib.php:1705
  +#: ../wikilib.php:1730
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1707
  +#: ../wikilib.php:1732
   msgid "Fail to send mail"
   msgstr ""
   
  -#: ../wikilib.php:1718
  +#: ../wikilib.php:1743
   msgid "This wiki does not support sendmail"
   msgstr ""
   
  -#: ../wikilib.php:1816
  +#: ../wikilib.php:1841
   msgid "Invalid regular expression !"
   msgstr ""
   
  -#: ../wikilib.php:1840
  +#: ../wikilib.php:1865
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:1843
  +#: ../wikilib.php:1868
   msgid "Infinite loop possible!"
   msgstr ""
   
  -#: ../wikilib.php:1962
  +#: ../wikilib.php:1983
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:1963
  +#: ../wikilib.php:1984
   msgid "OpenID"
   msgstr ""
   
  -#: ../wikilib.php:1975 ../wikilib.php:2097
  +#: ../wikilib.php:1996 ../wikilib.php:2118
   msgid "ID"
   msgstr ""
   
  -#: ../wikilib.php:2005 ../wikilib.php:2090
  +#: ../wikilib.php:2026 ../wikilib.php:2111
   msgid "Make profile"
   msgstr ""
   
  -#: ../wikilib.php:2007
  +#: ../wikilib.php:2028
   msgid "password again"
   msgstr ""
   
  -#: ../wikilib.php:2009 ../wikilib.php:2058
  +#: ../wikilib.php:2030 ../wikilib.php:2079
   msgid "Mail"
   msgstr ""
   
  -#: ../wikilib.php:2031
  +#: ../wikilib.php:2052
   msgid "New password"
   msgstr ""
   
  -#: ../wikilib.php:2036
  +#: ../wikilib.php:2057
   msgid "Nickname"
   msgstr ""
   
  -#: ../wikilib.php:2059
  +#: ../wikilib.php:2080
   msgid "Time Zone"
   msgstr ""
   
  -#: ../wikilib.php:2068
  +#: ../wikilib.php:2089
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:2357
  +#: ../wikilib.php:2380
   msgid "Show all"
   msgstr ""
   
  -#: ../wikilib.php:2499
  +#: ../wikilib.php:2522
   msgid "Contents"
   msgstr ""
   
  -#: ../wikilib.php:2610
  +#: ../wikilib.php:2642
   #, c-format
   msgid "Title search for \"%s\""
   msgstr ""
   
  +#: ../monisetup.php:36
  +msgid "Check a dba configuration"
  +msgstr ""
  +
  +#: ../monisetup.php:48
  +#, c-format
  +msgid "%s is selected."
  +msgstr ""
  +
  +#: ../monisetup.php:55
  +msgid "Check a AcceptPathInfo setting for Apache 2.x.xx"
  +msgstr ""
  +
  +#: ../monisetup.php:62 ../monisetup.php:68
  +msgid "Off"
  +msgstr ""
  +
  +#: ../monisetup.php:70
  +msgid "On"
  +msgstr ""
  +
  +#: ../monisetup.php:243
  +msgid ""
  +"Please change the permission of some directories writable on your server to "
  +"initialize your Wiki."
  +msgstr ""
  +
  +#: ../monisetup.php:245
  +#, c-format
  +msgid ""
  +"If you want a more safe wiki, try to change the permission of directories "
  +"with %s."
  +msgstr ""
  +
  +#: ../monisetup.php:248
  +msgid ""
  +"or use <tt>monisetup.sh</tt> and select 777 or <font color='red'>2777</font>"
  +msgstr ""
  +
  +#: ../monisetup.php:250
  +msgid ""
  +"After execute one of above two commands, just <a href='monisetup.php'>reload "
  +"this <tt>monisetup.php</tt></a> would make a new initial <tt>config.php</tt> "
  +"with detected parameters for your wiki."
  +msgstr ""
  +
  +#: ../monisetup.php:251
  +msgid "Reload"
  +msgstr ""
  +
  +#: ../monisetup.php:254
  +msgid "WARN"
  +msgstr ""
  +
  +#: ../monisetup.php:255
  +msgid ""
  +"Please execute the following command after you have completed your "
  +"configuration."
  +msgstr ""
  +
  +#: ../monisetup.php:266
  +#, c-format
  +msgid "FATAL: %s directory is not writable"
  +msgstr ""
  +
  +#: ../monisetup.php:267
  +msgid "Please execute the following command."
  +msgstr ""
  +
  +#: ../monisetup.php:286
  +#, c-format
  +msgid "%s directory is not writable"
  +msgstr ""
  +
  +#: ../monisetup.php:303
  +#, c-format
  +msgid "%s is not writable"
  +msgstr ""
  +
  +#: ../monisetup.php:310 ../monisetup.php:316
  +#, c-format
  +msgid "%s is created now"
  +msgstr ""
  +
  +#: ../monisetup.php:326
  +#, c-format
  +msgid "%s is writable"
  +msgstr ""
  +
  +#: ../monisetup.php:426
  +msgid "Click here to toggle all"
  +msgstr ""
  +
  +#: ../monisetup.php:427
  +msgid "Deselect all"
  +msgstr ""
  +
  +#: ../monisetup.php:432
  +msgid "Please be careful to deselect these pages"
  +msgstr ""
  +
  +#: ../monisetup.php:706
  +msgid "MoniWiki"
  +msgstr ""
  +
  +#: ../monisetup.php:709
  +msgid "'config.php' is not writable !"
  +msgstr ""
  +
  +#: ../monisetup.php:710
  +msgid ""
  +"Please execute <tt>'monisetup.sh'</tt> or <tt>chmod a+w config.php</tt> "
  +"first to change your settings."
  +msgstr ""
  +
  +#: ../monisetup.php:737
  +msgid "Invalid password error !"
  +msgstr ""
  +
  +#: ../monisetup.php:738
  +msgid ""
  +"If you can't remember your admin password, delete password entry in the "
  +"'config.php' and restart 'monisetup'"
  +msgstr ""
  +
  +#: ../monisetup.php:770
  +#, c-format
  +msgid "Updated Configutations for this %s"
  +msgstr ""
  +
  +#: ../monisetup.php:789
  +msgid "Configurations are saved successfully"
  +msgstr ""
  +
  +#: ../monisetup.php:790
  +msgid ""
  +"WARN: Please check <a href='monisetup.php'> your saved configurations</a>"
  +msgstr ""
  +
  +#: ../monisetup.php:791
  +msgid "If all is good, change 'config.php' permission as 644."
  +msgstr ""
  +
  +#: ../monisetup.php:803
  +msgid "Welcome to MoniWiki ! This is your first installation"
  +msgstr ""
  +
  +#: ../monisetup.php:810
  +msgid "Default settings are loaded..."
  +msgstr ""
  +
  +#: ../monisetup.php:819
  +msgid "Initial configurations are saved successfully."
  +msgstr ""
  +
  +#: ../monisetup.php:820
  +msgid "Goto <a href='monisetup.php'>MoniSetup</a> again to configure details"
  +msgstr ""
  +
  +#: ../monisetup.php:837 ../monisetup.php:839 ../monisetup.php:935
  +#: ../monisetup.php:937
  +#, c-format
  +msgid "goto %s"
  +msgstr ""
  +
  +#: ../monisetup.php:842
  +msgid "No WikiSeeds are selected"
  +msgstr ""
  +
  +#: ../monisetup.php:853
  +#, c-format
  +msgid "Preview current settings for this %s"
  +msgstr ""
  +
  +#: ../monisetup.php:855
  +#, c-format
  +msgid "Read current settings for this %s"
  +msgstr ""
  +
  +#: ../monisetup.php:883
  +msgid "Change your settings"
  +msgstr ""
  +
  +#: ../monisetup.php:885
  +msgid "WARN: You have to enter your Admin Password"
  +msgstr ""
  +
  +#: ../monisetup.php:887 ../monisetup.php:930
  +#, c-format
  +msgid "WARN: You have no WikiSeed on your %s"
  +msgstr ""
  +
  +#: ../monisetup.php:888 ../monisetup.php:931
  +#, c-format
  +msgid "If you want to put wikiseeds on your wiki %s now"
  +msgstr ""
  +
  +#: ../monisetup.php:889 ../monisetup.php:932
  +msgid "Click here"
  +msgstr ""
  +
  +#: ../monisetup.php:924 ../monisetup.php:926
  +msgid "Update"
  +msgstr ""
  +
   #: ../locale/dummy.php:3
   msgid "FrontPage"
   msgstr ""
  
  
  


wkpark      2008/12/16 22:44:00

  Modified:    .        wiki.php
  Log:
  support robot protection.
  fixed null option with [[FullSearch()]].
  
  Revision  Changes    Path
  1.420     +32 -9     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.419
  retrieving revision 1.420
  diff -u -r1.419 -r1.420
  --- wiki.php	16 Dec 2008 09:36:17 -0000	1.419
  +++ wiki.php	16 Dec 2008 13:44:00 -0000	1.420
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.419 2008/12/16 09:36:17 wkpark Exp $
  +// $Id: wiki.php,v 1.420 2008/12/16 13:44:00 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.419 $',1,-1);
  +$_revision = substr('$Revision: 1.420 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2794,7 +2794,9 @@
         $options['nomarkup']=1; // for the attachment macro
       }
       if (empty($value) and isset($match[2])) { #strpos($macro,'(') !== false)) {
  -      $name=$match[1]; $args=empty($match[3]) ? true:$match[3];
  +      $name=$match[1];
  +      $args=empty($match[3]) ? true:$match[3];
  +
       } else {
         $name=$macro; $args=$value;
       }
  @@ -2809,7 +2811,10 @@
       if ($this->_macrocache and empty($options['call']) and
         (isset($this->dynamic_macros[strtolower($name)]) or
         isset($this->dynamic_macros[$name]))) {
  -      $macro=$name. ($args ? '('.$args.')':'');
  +      $arg = '';
  +      if ($args === true) $arg = '()';
  +      else if (!empty($args)) $arg = '('.$args.')';
  +      $macro=$name.$arg;
         $md5sum= md5($macro);
         $this->_macros[$md5sum]=array($macro,$mid);
         return '[['.$md5sum.']]';
  @@ -4993,7 +4998,9 @@
     $options['css_url']=($DBInfo->themeurl ? $DBInfo->themeurl:$DBInfo->url_prefix)."/theme/$theme/css/default.css";
   
     $options['pagename']=get_pagename();
  -
  +  if (!empty($DBInfo->robots)) {
  +    $options['is_robot']=isRobot($_SERVER['HTTP_USER_AGENT']);
  +  }
   }
   
   function init_locale($lang) {
  @@ -5087,6 +5094,19 @@
       $action=substr($action,0,$p);
     }
   
  +  if (isset($options['is_robot'])) {
  +    if (!empty($DBInfo->security_class_robot)) {
  +      $class='Security_'.$DBInfo->security_class_robot;
  +      include_once('plugin/security/'.$DBInfo->security_class_robot.'.php');
  +    } else {
  +      $class='Security_robot';
  +      include_once('plugin/security/robot.php');
  +    }
  +    $DBInfo->security=new $class ($DBInfo);
  +    if (!$DBInfo->security->is_allowed($action,$options))
  +      $action='show';
  +    $DBInfo->extra_macros='';
  +  }
   
     #print $_SERVER['REQUEST_URI'];
     $options['page']=$pagename;
  @@ -5152,7 +5172,7 @@
   
         $msg_404='';
         if (!$Config['no_404']) $msg_404="Status: 404 Not found"; # for IE
  -      if ($Config['nofancy_404']) {
  +      if (!empty($options['is_robot']) or $Config['nofancy_404']) {
           $formatter->header($msg_404);
           print '<html><head></head><body><h1>'.$msg_404.'</h1></body></html>';
           return;
  @@ -5221,6 +5241,7 @@
             $formatter->link_tag($_GET['redirect'],'?action=show'))."</h3>";
       }
       # increase counter
  +    if (empty($options['is_robot']))
       $DBInfo->counter->incCounter($pagename,$options);
   
       if (!$action) $options['pi']=1; # protect a recursivly called #redirect
  @@ -5236,8 +5257,9 @@
         $options['attr']=$DBInfo->body_attr;
   
       $formatter->send_header("",$options);
  -
  -    $formatter->send_title("","",$options);
  +    if (empty($options['is_robot'])) {
  +      $formatter->send_title("","",$options);
  +    }
   
       if ($formatter->pi['#title'] and $DBInfo->use_titlecache) {
         $tcache=new Cache_text('title');
  @@ -5330,7 +5352,8 @@
       }
       
       $args['editable']=1;
  -    $formatter->send_footer($args,$options);
  +    if (empty($options['is_robot']))
  +      $formatter->send_footer($args,$options);
       return;
     }
   
  
  
  


wkpark      2008/12/16 22:45:30

  Added:       plugin/security robot.php
  Log:
  a robot security module.
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/security/robot.php
  
  Index: robot.php
  ===================================================================
  <?php
  # a robot protection security plugin for the MoniWiki
  # $Id: robot.php,v 1.1 2008/12/16 13:45:30 wkpark Exp $
  
  class Security_robot extends Security {
    var $DB;
  
    function Security_robot($DB="") {
      $this->DB=$DB;
    }
  
  # $options[page]: pagename
  # $options[id]: user id
  
    function writable($options="") {
      return $this->DB->_isWritable($options['page']);
    }
  
    function is_allowed($action="read",&$options) {
      $allowed=array('read','show','ticket','titleindex','rss_rc');
      if (in_array($action, $allowed)) {
        return 1;
      }
      return 0;
    }
  }
  
  ?>
  
  
  


wkpark      2008/12/16 23:19:37

  Modified:    plugin   userform.php
  Log:
  fixed PR #305195 by oops: openid nickname patch to fix charset problem.
  
  Revision  Changes    Path
  1.27      +8 -1      moniwiki/plugin/userform.php
  
  Index: userform.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/userform.php,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- userform.php	10 Dec 2008 09:59:49 -0000	1.26
  +++ userform.php	16 Dec 2008 14:19:37 -0000	1.27
  @@ -4,7 +4,7 @@
   // a userform action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: userform.php,v 1.26 2008/12/10 09:59:49 wkpark Exp $
  +// $Id: userform.php,v 1.27 2008/12/16 14:19:37 wkpark Exp $
   
   function do_userform($formatter,$options) {
     global $DBInfo;
  @@ -359,6 +359,13 @@
       include_once('lib/openid.php');      
       session_start();
   
  +    if ( !preg_match ('/utf-?8/i', $DBInfo->charset) ) {
  +      $options['openid_sreg_nickname'] =
  +        iconv ('utf-8', $DBInfo->charset, $options['openid_sreg_nickname']);
  +      $options['openid_sreg_fullname'] =
  +        iconv ('utf-8', $DBInfo->charset, $options['openid_sreg_fullname']);
  +    }
  +
       $process_url = qualifiedUrl($formatter->link_url("UserPreferences", "?action=userform"));
       $trust_root = qualifiedUrl($formatter->link_url(""));
   
  
  
  


wkpark      2008/12/16 23:23:49

  Modified:    plugin   html2pdf.php
  Log:
  update
  
  Revision  Changes    Path
  1.3       +17 -10    moniwiki/plugin/html2pdf.php
  
  Index: html2pdf.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/html2pdf.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- html2pdf.php	9 Dec 2008 07:55:48 -0000	1.2
  +++ html2pdf.php	16 Dec 2008 14:23:49 -0000	1.3
  @@ -8,11 +8,11 @@
   // Name: TCPDF plugin
   // Description: a HTML2PDF Plugin using the TCPDF
   // URL: MoniWiki:Html2PdfPlugin
  -// Version: $Revision: 1.2 $
  +// Version: $Revision: 1.3 $
   // License: GPL
   // Usage: ?action=tcpdf
   //
  -// $Id: html2pdf.php,v 1.2 2008/12/09 07:55:48 wkpark Exp $
  +// $Id: html2pdf.php,v 1.3 2008/12/16 14:23:49 wkpark Exp $
   
   function do_html2pdf($formatter,$options) {
       global $DBInfo,$Config;
  @@ -64,25 +64,29 @@
   		$html = preg_replace('@<title>.*</title>@','',$html);
   		$html = preg_replace('@<head>.*</head>@s','',$html);
   		$html = preg_replace('@&quot;@','"',$html);
  -		$html = preg_replace('@>\s+<@',"><",$html);
  +		#$html = preg_replace('@>\s+<@',"><",$html);
   		$html = preg_replace('@>\n@',">",$html);
   		$html = preg_replace('@/\*<\!\[CDATA\[.*\]\]>\*/\n?@Us','',$html);
  +		$html = preg_replace('@<pre[^>]*>@','<pre style="background-color:black;color:white">',$html);
                   $dom = &parent::getHtmlDomArray($html);
                   $sz = count($dom);
                   for ($i=0; $i<$sz;$i++) {
                       $tag=&$dom[$i];
                       if (!empty($tag['opening']) and $tag['value']=='table') {
  -                        $tag['attribute']['border']=1;
  +                        #$tag['attribute']['border']=1;
                           #$tag['attribute']['bgcolor']=array(200,200,200);
  -                        $tag['bgcolor']=array(200,200,200);
  -                    } else if (!empty($tag['opening']) and $tag['value']=='pre') {
  -                        $tag['bgcolor']=array(0,0,0);
  -                        $tag['fgcolor']=array(255,255,255);
  -                        $tag['fontname']='courier';
  +                        #$tag['bgcolor']=array(200,200,200);
  +                    #} else if (!empty($tag['opening']) and $tag['value']=='pre') {
  +                    #    $tag['bgcolor']=array(0,0,0);
  +                    #    $tag['fgcolor']=array(255,255,255);
  +                    #    $tag['fontname']='courier';
                       #} else if (!empty($tag['opening']) and $tag['value']=='div') {
                       #    $tag['bgcolor']=array(100,100,100);
                       }
                   }
  +                #print "<pre>";
  +                #print_r($dom);
  +                #print "</pre>";
                   return $dom;
               }
   
  @@ -108,7 +112,7 @@
                       $this->Bookmark($num.' '.$this->toc[$num],$dep,$this->y);
                       next($this->toc);
                   }
  -                parent::closeHTMLTagHandler(&$dom, $key, $cell);
  +                parent::closeHTMLTagHandler($dom, $key, $cell);
               }
           }
       }
  @@ -120,6 +124,7 @@
   
       $formatter->nonexists='always';
       $formatter->section_edit=0;
  +    $formatter->perma_icon='';
   
       ob_start();
       $formatter->send_header();
  @@ -134,6 +139,8 @@
       $toc = function_toc($formatter);
       $pdf->toc = $toc;
       $pdf->setFontAlias(array('monospace'=>'courier'));
  +    $pdf->setLIsymbol(chr(42));
  +    $pdf->setLIsymbol('a');
   
       // set default header data
       // $pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING);
  
  
  


wkpark      2008/12/16 23:31:04

  Modified:    doc      theme.php.sample
  Log:
  update theme.php.sample
  
  Revision  Changes    Path
  1.5       +17 -20    moniwiki/doc/theme.php.sample
  
  Index: theme.php.sample
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/doc/theme.php.sample,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- theme.php.sample	26 Apr 2008 14:37:07 -0000	1.4
  +++ theme.php.sample	16 Dec 2008 14:31:04 -0000	1.5
  @@ -1,5 +1,8 @@
   <?php
  -$iconset='moni';
  +#
  +# $imgdir,$themeurl are locally used variables.
  +#
  +$iconset='moni2';
   $imgdir=$themeurl."/imgs";
   $icon['upper']="<img src='$imgdir/$iconset/upper.gif' alt='U' align='middle' border='0' />";
   $icon['edit']="<img src='$imgdir/$iconset/edit.gif' alt='E' align='middle' border='0' />";
  @@ -12,6 +15,7 @@
   $icon['help']="<img src='$imgdir/$iconset/help.gif' alt='H' align='middle' border='0' />";
   $icon['www']="<img src='$imgdir/$iconset/www.gif' alt='www' align='middle' border='0' />";
   $icon['mailto']="<img src='$imgdir/$iconset/email.gif' alt='M' align='middle' border='0' />";
  +$icon['bookmark']="<img src='$imgdir/$iconset/bookmark.png' alt='C' style='vertical-align:middle;border:0' />";
   $icon['create']="<img src='$imgdir/$iconset/create.gif' alt='N' align='middle' border='0' />";
   $icon['new']="<img src='$imgdir/$iconset/new.gif' alt='U' align='middle' border='0' />";
   $icon['updated']="<img src='$imgdir/$iconset/updated.gif' alt='U' align='middle' border='0' />";
  @@ -20,30 +24,23 @@
   $icon['xml']="<img src='$imgdir/$iconset/xml.gif' alt='X' align='middle' border='0' />";
   $icon['print']="<img src='$imgdir/$iconset/print.gif' alt='P' align='middle' border='0' />";
   $icon['attach']="<img src='$imgdir/$iconset/attach.gif' alt='@' align='middle' border='0' />";
  +$icon['html2pdf']="<img src='$imgdir/$iconset/html2pdf.png' alt='A' style='vertical-align:middle;border:0' />";
   
   $icon_sep=' ';
   $icon_cat=' ';
   
   $icons=array(
  -   array("","?action=edit",$icon['edit'],"accesskey='e'"),
  -   array("","?action=diff",$icon['diff'],"accesskey='c'"),
  -   array("","",$icon['show']),
  -   array("FindPage","",$icon['find']),
  -   array("","?action=info",$icon['info']),
  -   array("","?action=subscribe",$icon['mailto']),
  -   array("HelpContents","",$icon['help']),
  -   array("","?action=format&amp;mimetype=text/xml",$icon['xml']),
  -   array("","?action=print",$icon['print']),
  +   'edit'=>array("","?action=edit",$icon['edit'],"accesskey='e'"),
  +   'diff'=>array("","?action=diff",$icon['diff'],"accesskey='c'"),
  +   'show'=>array("","",$icon['show']),
  +   'find'=>array("FindPage","",$icon['find']),
  +   'info'=>array("","?action=info",$icon['info']),
  +   'subscribe'=>array("","?action=subscribe",$icon['mailto']),
  +   'scrap'=>array("","?action=scrap",$icon['bookmark']),
  +   'help'=>array("HelpContents","",$icon['help']),
  +   'xml'=>array("","?action=format&amp;mimetype=text/xml",$icon['xml']),
  +   'print'=>array("","?action=print",$icon['print']),
  +   'html2pdf'=>array("","?action=html2pdf",$icon['html2pdf']),
   );
   
  -#$icons=array(
  -#   array("","?action=edit","Edit"),
  -#   array("","?action=diff","Diff"),
  -#   array("","","Show"),
  -#   array("FindPage","","Find"),
  -#   array("","?action=info","Info"),
  -#   array("","?action=subscribe","Email"),
  -#   array("HelpContents","","Help"),
  -#);
  -
   ?>
  
  
  


wkpark      2008/12/16 23:32:54

  Modified:    data     mime.types
  Log:
  update
  
  Revision  Changes    Path
  1.3       +3 -3      moniwiki/data/mime.types
  
  Index: mime.types
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/data/mime.types,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- mime.types	26 Apr 2006 14:53:28 -0000	1.2
  +++ mime.types	16 Dec 2008 14:32:54 -0000	1.3
  @@ -117,8 +117,8 @@
   application/vnd.mitsubishi.misty-guard.trustweb
   application/vnd.ms-artgalry
   application/vnd.ms-asf
  -application/vnd.ms-excel
  -application/vnd.ms-powerpoint	ppt
  +application/vnd.ms-excel	xls xlsx
  +application/vnd.ms-powerpoint	ppt ppx
   application/vnd.ms-project
   application/vnd.ms-tnef
   application/vnd.ms-works
  @@ -260,7 +260,7 @@
   text/css			css
   text/directory
   text/enriched
  -text/plain			asc txt
  +text/plain			asc txt diff patch
   text/prs.lines.tag
   text/rfc822-headers
   text/richtext			rtx
  
  
  


wkpark      2008/12/16 23:53:41

  Modified:    .        wikilib.php
  Log:
  isRobot() function added.
  fixed euc-kr Hangul index characters.
  
  Revision  Changes    Path
  1.253     +14 -3     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.252
  retrieving revision 1.253
  diff -u -r1.252 -r1.253
  --- wikilib.php	14 Dec 2008 11:01:49 -0000	1.252
  +++ wikilib.php	16 Dec 2008 14:53:41 -0000	1.253
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.252 2008/12/14 11:01:49 wkpark Exp $
  +// $Id: wikilib.php,v 1.253 2008/12/16 14:53:41 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -332,6 +332,13 @@
     return chr($utf[0]).chr($utf[1]).chr($utf[2]);
   }
   
  +function isRobot($name) {
  +  global $Config;
  +  if (preg_match('/'.$Config['robots'].'/i',$name))
  +    return true;
  +  return false;
  +}
  +
   class UserDB {
     var $users=array();
     function UserDB($WikiDB) {
  @@ -2290,8 +2297,12 @@
       }
       # if php does not support iconv(), EUC-KR assumed
       if (strtolower($DBInfo->charset) == 'euc-kr') {
  -      $korean=array('','','','','','','','','','','','',
  -                    '','¥','','ī','Ÿ','','',"\xca");
  +      $korean=array( // Ga,GGa,Na,Da,DDa,...
  +        "\xb0\xa1","\xb1\xee","\xb3\xaa","\xb4\xd9","\xb5\xfb",
  +        "\xb6\xf3","\xb8\xb6","\xb9\xd9","\xba\xfc","\xbb\xe7",
  +        "\xbd\xce","\xbe\xc6","\xc0\xda","\xc2\xa5","\xc2\xf7",
  +        "\xc4\xab","\xc5\xb8","\xc6\xc4","\xc7\xcf","\xca");
  +
         $lastPosition='Others';
   
         $letter=substr($name,0,2);
  
  
  


wkpark      2008/12/17 00:18:31

  Modified:    plugin   download.php
  Log:
  top dir files bug fixed.
  
  Revision  Changes    Path
  1.19      +4 -1      moniwiki/plugin/download.php
  
  Index: download.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/download.php,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- download.php	21 Nov 2007 16:16:43 -0000	1.18
  +++ download.php	16 Dec 2008 15:18:31 -0000	1.19
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // download action plugin for the MoniWiki
   //
  -// $Id: download.php,v 1.18 2007/11/21 16:16:43 wkpark Exp $
  +// $Id: download.php,v 1.19 2008/12/16 15:18:31 wkpark Exp $
   //
   function do_download($formatter,$options) {
     global $DBInfo;
  @@ -57,6 +57,9 @@
     #}
     $dir=$DBInfo->upload_dir.($key ? "/$key":"");
   
  +  if ($key == 'UploadFile')
  +    $dir=$DBInfo->upload_dir;
  +
     if (file_exists($dir))
       $handle= opendir($dir);
     else {
  
  
  


wkpark      2008/12/17 00:20:01

  Modified:    .        config.php.default
  Log:
  set $use_resume_download=1 by default.
  $robots, $security_class_robot options are added
  
  Revision  Changes    Path
  1.46      +5 -2      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.45
  retrieving revision 1.46
  diff -u -r1.45 -r1.46
  --- config.php.default	16 Dec 2008 11:52:08 -0000	1.45
  +++ config.php.default	16 Dec 2008 15:20:01 -0000	1.46
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.45 2008/12/16 11:52:08 wkpark Exp $
  +# $Id: config.php.default,v 1.46 2008/12/16 15:20:01 wkpark Exp $
   #
   $sitename='UnnamedWiki'; # site name
   $data_dir= './data';
  @@ -64,7 +64,7 @@
   #$owners=array('moniwiki','Hong');
   
   #$menu=array('MoniWiki'=>1,'FindPage'=>4,'TitleIndex'=>3,'BlogChanges'=>'','RecentChanges'=>2,'http://kldp.org KLDP'=>9);
  -$menu=array('FrontPage'=>1,'TitleIndex'=>3,'RecentChanges'=>2,'UserPreferences'=>'');
  +$menu=array('FrontPage'=>1,'FindPage'=>4,'TitleIndex'=>3,'RecentChanges'=>2,'UserPreferences'=>'');
   #$menu_sep='|';
   #$menu_bra='';
   #$menu_cat='';
  @@ -223,6 +223,7 @@
   #$default_download_image='/block.jpg';
   #$force_download=1;
   #$download_action='download';
  +$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.
  @@ -254,4 +255,6 @@
   #$check_openid_url=0; # selectivly show openid icons: experimental
   #$use_autosave=1; # enable autosave feature.
   #$use_bbs=0;
  +$robots='googlebot|yahoo'; # set robots
  +#$security_class_robot='robot';
   ?>
  
  
  


wkpark      2008/12/17 11:09:42

  Modified:    plugin/processor latex.php
  Log:
  oops! fixed last change to work properly without all_in_one option.
  
  Revision  Changes    Path
  1.24      +2 -2      moniwiki/plugin/processor/latex.php
  
  Index: latex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/latex.php,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- latex.php	3 Dec 2008 08:22:00 -0000	1.23
  +++ latex.php	17 Dec 2008 02:09:42 -0000	1.24
  @@ -12,7 +12,7 @@
   // $path='./bin;C:/Program Files/MiKTeX 2.5/miktex/bin;C:/Program Files/ImageMagick-6.3.6-Q16';
   // # ImagMagick and MikTeX are used in this setting.
   //
  -// $Id: latex.php,v 1.23 2008/12/03 08:22:00 wkpark Exp $
  +// $Id: latex.php,v 1.24 2008/12/17 02:09:42 wkpark Exp $
   
   function _latex_renumber($match,$tag='\\tag') {
     // XXX
  @@ -222,7 +222,7 @@
        if (!$raw_mode and $log2) trigger_error ($log2, E_USER_WARNING);
        chdir($cwd);
   
  -     if ($raw_mode and $tmpext == 'png') {
  +     if ($raw_mode or ($tmpext == 'png' and empty($DBInfo->latex_allinone)) ) {
          rename("$vartmp_dir/$uniq-1.$tmpext",$outpath);
        } else if ($DBInfo->latex_allinone) {
           $sz=sizeof($formatter->latex_uniq);
  
  
  


wkpark      2008/12/17 11:42:43

  Modified:    .        wiki.php
  Log:
  oops!! use empty()
  
  Revision  Changes    Path
  1.421     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.420
  retrieving revision 1.421
  diff -u -r1.420 -r1.421
  --- wiki.php	16 Dec 2008 13:44:00 -0000	1.420
  +++ wiki.php	17 Dec 2008 02:42:43 -0000	1.421
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.420 2008/12/16 13:44:00 wkpark Exp $
  +// $Id: wiki.php,v 1.421 2008/12/17 02:42:43 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.420 $',1,-1);
  +$_revision = substr('$Revision: 1.421 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -5094,7 +5094,7 @@
       $action=substr($action,0,$p);
     }
   
  -  if (isset($options['is_robot'])) {
  +  if (!empty($options['is_robot'])) {
       if (!empty($DBInfo->security_class_robot)) {
         $class='Security_'.$DBInfo->security_class_robot;
         include_once('plugin/security/'.$DBInfo->security_class_robot.'.php');
  
  
  


wkpark      2008/12/17 12:38:14

  Modified:    plugin/processor vim.php enscript.php
  Log:
  check if it was called with another tpye like as #!python #!sh etc.
  
  Revision  Changes    Path
  1.41      +20 -3     moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- vim.php	6 May 2008 07:07:30 -0000	1.40
  +++ vim.php	17 Dec 2008 03:38:14 -0000	1.41
  @@ -3,6 +3,14 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a vim colorizer plugin for the MoniWiki
   //
  +// Author: Won-Kyu Park <wkpark@kldp.org>
  +// Since: 2003-06-04
  +// Date: 2008-12-17
  +// Name: a VIM syntax colorizer
  +// Description: a Syntax colorizing processor using the VIM
  +// URL: MoniWiki:VimProcessor
  +// Version: $Revision: 1.41 $
  +// License: GPL
   // Usage: {{{#!vim sh|c|sh|.. [number]
   // some codes
   // }}}
  @@ -10,7 +18,7 @@
   // Win32 note:
   //  add $path="/bin;/Program Files/Vim/VimXX"; in the config.php
   //
  -// $Id: vim.php,v 1.40 2008/05/06 07:07:30 wkpark Exp $
  +// $Id: vim.php,v 1.41 2008/12/17 03:38:14 wkpark Exp $
   
   function processor_vim($formatter,$value,$options) {
     global $DBInfo;
  @@ -28,11 +36,20 @@
   
     #$opts=array("number");
   
  +  $line='';
     if ($value[0]=='#' and $value[1]=='!')
       list($line,$value)=explode("\n",$value,2);
     # get parameters
  -  if ($line)
  -    list($tag,$type,$extra)=preg_split('/\s+/',$line,3);
  +  if ($line) {
  +    $line=substr($line,2);
  +    $tag = strtok($line,' ');
  +    $type = strtok(' ');
  +    $extra = strtok('');
  +    if ($tag != 'vim') {
  +      $extra = $type;
  +      $type = $tag;
  +    }
  +  }
     $src=$value;
     if (!preg_match('/^\w+$/',$type)) $type='nosyntax';
   
  
  
  
  1.3       +20 -3     moniwiki/plugin/processor/enscript.php
  
  Index: enscript.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/enscript.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- enscript.php	7 Jul 2006 12:59:57 -0000	1.2
  +++ enscript.php	17 Dec 2008 03:38:14 -0000	1.3
  @@ -3,10 +3,18 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a syntax colorizer plugin using the enscript for the MoniWiki
   //
  +// Author: Won-Kyu Park <wkpark@kldp.org>
  +// Since: 2003-08-10
  +// Date: 2008-12-17
  +// Name: a Enscript syntax colorizer
  +// Description: a syntax colorizing processor using the Enscript
  +// URL: MoniWiki:VimProcessor
  +// Version: $Revision: 1.3 $
   // Usage: {{{#!enscript sh|c|sh|..
   // some codes
   // }}}
  -// $Id: enscript.php,v 1.2 2006/07/07 12:59:57 wkpark Exp $
  +//
  +// $Id: enscript.php,v 1.3 2008/12/17 03:38:14 wkpark Exp $
   
   function processor_enscript($formatter,$value) {
     global $DBInfo;
  @@ -23,11 +31,20 @@
   
     $vartmp_dir=&$DBInfo->vartmp_dir;
   
  +  $line='';
     if ($value[0]=='#' and $value[1]=='!')
       list($line,$value)=explode("\n",$value,2);
     # get parameters
  -  if ($line)
  -    list($tag,$type,$extra)=explode(" ",$line,3);
  +  if ($line) {
  +    $line=substr($line,2);
  +    $tag = strtok($line,' ');
  +    $type = strtok(' ');
  +    $extra = strtok('');
  +    if ($tag != 'vim') {
  +      $extra = $type;
  +      $type = $tag;
  +    }
  +  }
   
     if ($extra == "number") $option='-C ';
   
  
  
  


wkpark      2008/12/17 12:40:01

  Modified:    plugin/processor python.php
  Log:
  python colorizer is just a wrapper of the vim processor.
  
  Revision  Changes    Path
  1.6       +8 -6      moniwiki/plugin/processor/python.php
  
  Index: python.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/python.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- python.php	8 Apr 2004 18:23:44 -0000	1.5
  +++ python.php	17 Dec 2008 03:40:01 -0000	1.6
  @@ -6,14 +6,16 @@
   // Usage: {{{#!python Name
   // print 'Hello world'
   // }}}
  -// $Id: python.php,v 1.5 2004/04/08 18:23:44 wkpark Exp $
  +// $Id: python.php,v 1.6 2008/12/17 03:40:01 wkpark Exp $
   
   function processor_python($formatter,$value="") {
  -
  -  if ($value[0]=='#' and $value[1]=='!')
  -    $value="#!vim ".substr($value,2);
  -  else
  -    $value="#!vim python\n".$value;
  +  //
  +  // for pre 1.1.3 version
  +  //
  +  #if ($value[0]=='#' and $value[1]=='!')
  +  #  $value="#!vim ".substr($value,2);
  +  #else
  +  #  $value="#!vim python\n".$value;
     # get parameters
     return $formatter->processor_repl('vim',$value);
   }
  
  
  


wkpark      2008/12/17 12:52:17

  Modified:    plugin/processor geshi.php
  Log:
  chech if it was called with #!sh, #!python etc.
  
  Revision  Changes    Path
  1.7       +19 -8     moniwiki/plugin/processor/geshi.php
  
  Index: geshi.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/geshi.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- geshi.php	9 Dec 2008 07:54:11 -0000	1.6
  +++ geshi.php	17 Dec 2008 03:52:17 -0000	1.7
  @@ -3,6 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a geshi colorizer plugin for the MoniWiki
   //
  +// Author:  Dongsu Jang <iolo at hellocity.net>
  +// Since: 2005-04-29
  +// Name: a GeSHi syntax colorizer
  +// Description: a syntax colorizing processor using the GeSHi
  +// URL: MoniWiki:GeshiProcessor
  +// Version: $Revision: 1.7 $
   // Usage: {{{#!geshi ada|apache|asm|c|css... [number|fancy]
   // some codes
   // }}}
  @@ -27,16 +33,15 @@
   //
   // this version was tested with geshi 1.0.6.
   //
  -// $Id: geshi.php,v 1.6 2008/12/09 07:54:11 wkpark Exp $
  +// $Id: geshi.php,v 1.7 2008/12/17 03:52:17 wkpark Exp $
   
   @include_once(dirname(__FILE__)."/../../lib/geshi/geshi.php");
   
  -if (defined('GESHI_VERSION')):
   function processor_geshi($formatter,$value,$options) {
     global $DBInfo;
   
  -  if (!class_exists('GeSHi'))
  -    retrun $formatter->processor_repl('vim',$value,$options);
  +  if (!defined('GESHI_VERSION'))
  +    return $formatter->processor_repl('vim',$value,$options);
   
     $syntax=array(
       'actionscript', 'ada', 'apache', 'asm', 'asp', 'bash', 'c', 'c_mac',
  @@ -49,8 +54,16 @@
     if ($value[0]=='#' and $value[1]=='!')
       list($line,$value)=explode("\n",$value,2);
     # get parameters
  -  if ($line)
  -    list($tag,$type,$extra)=explode(" ",$line,3);
  +  if ($line) {
  +    $line=substr($line,2);
  +    $tag = strtok($line,' ');
  +    $type = strtok(' ');
  +    $extra = strtok('');
  +    if ($tag != 'vim') {
  +      $extra = $type;
  +      $type = $tag;
  +    }
  +  }
     $src=rtrim($value); // XXX
     if (!$type) $type='nosyntax';
   
  @@ -104,7 +117,5 @@
     return $out;
   }
   
  -endif;
  -
   // vim:et:sts=2:
   ?>
  
  
  


wkpark      2008/12/17 13:24:24

  Modified:    lib      Template_.compiler.php
  Log:
  rename safe_mode.ini to safe_mode.php
  
  Revision  Changes    Path
  1.4       +3 -3      moniwiki/lib/Template_.compiler.php
  
  Index: Template_.compiler.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/Template_.compiler.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Template_.compiler.php	29 Mar 2008 06:50:54 -0000	1.3
  +++ Template_.compiler.php	17 Dec 2008 04:24:24 -0000	1.4
  @@ -7,13 +7,13 @@
   // Name: A modified Template_ for MoniWiki
   // Description: Template_ module (division syntax is disabled)
   // URL: MoniWiki:Template_
  -// Version: $Revision: 1.3 $
  +// Version: $Revision: 1.4 $
   // Depend: 1.1.3
   // License: LGPL
   //
   // Usage: please see http://www.xtac.net
   //
  -// $Id: Template_.compiler.php,v 1.3 2008/03/29 06:50:54 wkpark Exp $
  +// $Id: Template_.compiler.php,v 1.4 2008/12/17 04:24:24 wkpark Exp $
   
   /*---------------------------------------------------------------------------
   
  @@ -88,7 +88,7 @@
   		$this->prefilters    =array();
   		$this->postfilters   =array();
   		$this->safe_mode     =$tpl->safe_mode;
  -		$this->safe_mode_ini ='config/safe_mode.ini';
  +		$this->safe_mode_ini ='config/safe_mode.php';
   		$this->auto_constant =empty($tpl->auto_constant) ? false : $tpl->auto_constant;
   		$this->tpl_path      =$tpl_path;
   		$this->params        =$params;
  
  
  


wkpark      2008/12/17 13:27:21

  Added:       config   safe_mode.php
  Removed:     config   safe_mode.ini
  Log:
  rename safe_mode.ini.
  ereg*() functions are commented out
  
  Revision  Changes    Path
  1.1                  moniwiki/config/safe_mode.php
  
  Index: safe_mode.php
  ===================================================================
  ; safe_mode.ini
  ; <?php exit()?>
  ; This file is used when $safe_mode property is true.
  ; On Template_'s safe mode, only functions listed here operate.
  ; Functions can be separated by whitespaces (space, tab, newline).
  ; Line comments by ';' are available.
  
  
  ; string
  _
  empty
  isset
  addcslashes
  addslashes
  bin2hex
  chop
  chr
  chunk_split
  convert_cyr_string
  count_chars
  crc32
  crypt
  hebrev
  hebrevc
  html_entity_decode
  htmlentities
  htmlspecialchars
  implode
  join
  levenshtein
  ltrim
  md5
  metaphone
  money_format
  nl_langinfo
  nl2br
  number_format
  ord
  quoted_printable_decode
  quotemeta
  rtrim
  setlocale
  sha1
  similar_text
  soundex
  sprintf
  sscanf
  str_ireplace
  str_pad
  str_repeat
  str_replace
  str_rot13
  str_shuffle
  str_split
  str_word_count
  strcasecmp
  strchr
  strcmp
  strcoll
  strcspn
  strip_tags
  stripcslashes
  stripos
  stripslashes
  stristr
  strlen
  strnatcasecmp
  strnatcmp
  strncasecmp
  strncmp
  strpos
  strrchr
  strrev
  strripos
  strrpos
  strspn
  strstr
  strtok
  strtolower
  strtoupper
  strtr
  substr_count
  substr_replace
  substr
  trim
  ucfirst
  ucwords
  vsprintf
  wordwrap
  
  ; date & time
  
  checkdate
  date
  gmdate
  gmmktime
  gmstrftime
  microtime
  mktime
  strftime
  strtotime
  time
  
  ; regexp
  
  preg_match
  preg_quote
  preg_replace_callback
  preg_replace
  ereg_replace
  ;ereg
  ;eregi_replace
  ;eregi
  ;sql_regcase
  
  
  


wkpark      2008/12/17 15:06:50

  Modified:    plugin   SWFUpload.php SmileyChooser.php
  Log:
  use register_javascripts() and use swfobject v2.0
  do not use document.editform
  
  Revision  Changes    Path
  1.12      +7 -6      moniwiki/plugin/SWFUpload.php
  
  Index: SWFUpload.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SWFUpload.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- SWFUpload.php	3 Dec 2008 08:23:49 -0000	1.11
  +++ SWFUpload.php	17 Dec 2008 06:06:50 -0000	1.12
  @@ -8,12 +8,12 @@
   // Name: SWF Upload
   // Description: SWF Upload Plugin
   // URL: http://labb.dev.mammon.se/swfupload/ MoniWikiDev:SWFUpload
  -// Version: $Revision: 1.11 $
  +// Version: $Revision: 1.12 $
   // License: GPL
   //
   // Usage: [[SWFUpload]]
   //
  -// $Id: SWFUpload.php,v 1.11 2008/12/03 08:23:49 wkpark Exp $
  +// $Id: SWFUpload.php,v 1.12 2008/12/17 06:06:50 wkpark Exp $
   
   function macro_SWFUpload($formatter,$value,$opts=array()) {
       global $DBInfo;
  @@ -101,10 +101,11 @@
       }
   
       if (!$swfupload_num) {
  -        $swfupload_script=<<<EOS
  -	<script type="text/javascript" src="$DBInfo->url_prefix/local/SWFUpload/mmSWFUpload.js"></script>
  -	<script type="text/javascript" src="$DBInfo->url_prefix/local/SWFUpload/moni.js"></script>
  -EOS;
  +        $formatter->register_javascripts(array(
  +            'js/swfobject.js',
  +            'SWFUpload/mmSWFUpload.js',
  +            'SWFUpload/moni.js',
  +        ));
       }
   
       $swf_css=<<<CSS
  
  
  
  1.15      +4 -3      moniwiki/plugin/SmileyChooser.php
  
  Index: SmileyChooser.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SmileyChooser.php,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- SmileyChooser.php	28 Nov 2008 12:49:04 -0000	1.14
  +++ SmileyChooser.php	17 Dec 2008 06:06:50 -0000	1.15
  @@ -5,7 +5,7 @@
   //
   // Usage: [[SmileyChooser]]
   //
  -// $Id: SmileyChooser.php,v 1.14 2008/11/28 12:49:04 wkpark Exp $
  +// $Id: SmileyChooser.php,v 1.15 2008/12/17 06:06:50 wkpark Exp $
   
   function do_smileychooser($formatter,$params=array()) {
     $list=macro_SmileyChooser($formatter,$params['page'],$params);
  @@ -35,8 +35,9 @@
   function mySmiley(myText)
   {
     var is_ie = document.selection && document.all;
  -  if (document.$form)
  -    var txtarea = document.$form.savetext;
  +  var ef = document.getElementById('$form');
  +  if (ef)
  +    var txtarea = ef.savetext;
     else {
       // some alternate form? take the first one we can find
       var areas = document.getElementsByTagName('textarea');
  
  
  


wkpark      2008/12/17 15:07:28

  Modified:    local/SWFUpload mmSWFUpload.js moni.js
  Log:
  use swfobject 2.0
  
  Revision  Changes    Path
  1.4       +23 -188   moniwiki/local/SWFUpload/mmSWFUpload.js
  
  Index: mmSWFUpload.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/SWFUpload/mmSWFUpload.js,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- mmSWFUpload.js	16 Dec 2006 00:08:04 -0000	1.3
  +++ mmSWFUpload.js	17 Dec 2008 06:07:27 -0000	1.4
  @@ -36,25 +36,32 @@
   		} catch(e) {}
   
   		// Create SWFObject
  -		var so = new SWFObject(this._prefix + "/SWFUpload/upload.swf", "_mmSWFUploadField", "1px", "1px", this.addSetting("flash_version", "8"), "#000000");
   			
  -		if(deconcept.SWFObjectUtil.getPlayerVersion(so.getAttribute("version")).major >= 8) {
  -		
  -			so.addParam("wmode", "transparent");
  -			so.addParam("menu", "false");
  -						
  -			// Add all settings to flash
  -			so.addVariable("uploadBackend", this.addSetting("upload_backend", ""));
  -			so.addVariable("uploadStartCallback", this.addSetting("upload_start_callback", ""));
  -			so.addVariable("uploadProgressCallback", this.addSetting("upload_progress_callback", ""));
  -			so.addVariable("uploadCompleteCallback", this.addSetting("upload_complete_callback", ""));
  -			so.addVariable("uploadCancelCallback", this.addSetting("upload_cancel_callback", ""));
  -			so.addVariable("uploadErrorCallback", this.addSetting("upload_error_callback", "mmSWFUpload.handleErrors"));
  -			so.addVariable("allowedFiletypes", this.addSetting("allowed_filetypes", "*.gif;*.jpg;*.png"));
  -			so.addVariable("allowedFilesize", this.addSetting("allowed_filesize", "1000"));
  +		if(swfobject.getFlashPlayerVersion().major >= 8) {
   			
  +			var param={
  +				"wmode": "transparent",
  +				"menu":"false"
  +			};
  +			// Add all settings to flash
  +			var vars={
  +				"uploadBackend": this.addSetting("upload_backend", ""),
  +				"uploadStartCallback": this.addSetting("upload_start_callback", ""),
  +				"uploadProgressCallback": this.addSetting("upload_progress_callback", ""),
  +				"uploadCompleteCallback": this.addSetting("upload_complete_callback", ""),
  +				"uploadCancelCallback": this.addSetting("upload_cancel_callback", ""),
  +				"uploadErrorCallback": this.addSetting("upload_error_callback", "mmSWFUpload.handleErrors"),
  +				"allowedFiletypes": this.addSetting("allowed_filetypes", "*.gif;*.jpg;*.png"),
  +				"allowedFilesize": this.addSetting("allowed_filesize", "1000")
  +			};
  +			var attr={
  +				"id": "_mmSWFUploadField"
  +			}
  +			swfobject.embedSWF(this._prefix + "/SWFUpload/upload.swf", this.addSetting("target", "flashUpload"),
  +				"1px", "1px", this.addSetting("flash_version", "8"), "",vars, param, attr);
  +						
   			// Output the flash
  -			so.write(this.addSetting("target", "flashUpload"));
  +			//so.write(this.addSetting("target", "flashUpload"));
   	
   			// Set up button and styles
   			var swfc = document.getElementById(this.settings["target"])
  @@ -140,175 +147,3 @@
   
   }
   
  -/**
  - * SWFObject v1.4: Flash Player detection and embed - http://blog.deconcept.com/swfobject/
  - *
  - * SWFObject is (c) 2006 Geoff Stearns and is released under the MIT License:
  - * http://www.opensource.org/licenses/mit-license.php
  - *
  - * **SWFObject is the SWF embed script formerly known as FlashObject. The name was changed for
  - *   legal reasons.
  - */
  -if(typeof deconcept=="undefined") {var deconcept=new Object();}
  -if(typeof deconcept.util=="undefined") {deconcept.util=new Object();}
  -if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();}
  -
  -deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a,_b){
  -	
  -	if(!document.createElement||!document.getElementById) {return;}
  -	
  -	this.DETECT_KEY = _b ? _b : "detectflash";
  -	
  -	this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);
  -	this.params=new Object();
  -	this.variables=new Object();
  -	this.attributes=new Array();
  -	
  -	if(_1){this.setAttribute("swf",_1);}
  -	
  -	if(id){this.setAttribute("id",id);}
  -	
  -	if(w){this.setAttribute("width",w);}
  -	
  -	if(h){this.setAttribute("height",h);}
  -	
  -	if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}
  -	
  -	this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion(this.getAttribute("version"),_7);
  -	
  -	if(c) {this.addParam("bgcolor",c);}
  -	
  -	var q=_8?_8:"high";
  -	
  -	this.addParam("quality",q);
  -	this.setAttribute("useExpressInstall",_7);
  -	this.setAttribute("doExpressInstall",false);
  -	var _d=(_9)?_9:window.location;
  -	this.setAttribute("xiRedirectUrl",_d);
  -	this.setAttribute("redirectUrl","");
  -	
  -	if(_a) {this.setAttribute("redirectUrl",_a);}
  -};
  -
  -deconcept.SWFObject.prototype={setAttribute:function(_e,_f){
  -	
  -	this.attributes[_e]=_f;
  -	},
  -	
  -	getAttribute: function(_10){
  -		return this.attributes[_10];
  -	},
  -	
  -	addParam: function(_11,_12){
  -		this.params[_11]=_12;
  -	},
  -	
  -	getParams: function(){
  -		return this.params;
  -	},
  -
  -	addVariable: function(_13,_14) {
  -		_14=escape(_14); // fix Firefox error with urlencoded variables
  -		this.variables[_13]=_14;
  -	},
  -	
  -	getVariable: function(_15) {
  -		return this.variables[_15];
  -	},
  -	
  -	getVariables: function(){
  -		return this.variables;
  -	},
  -	
  -	getVariablePairs: function(){
  -		var _16=new Array();
  -		var key;
  -	var _18=this.getVariables();
  -for(key in _18){
  -_16.push(key+"="+_18[key]);}
  -return _16;
  -},
  -
  -	getSWFHTML:function(){
  -	var _19="";
  -	if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){
  -		if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","PlugIn");}
  -		_19="<embed type=\"application/x-shockwave-flash\" src=\""+this.getAttribute("swf")+"\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\"";
  -		_19+=" id=\""+this.getAttribute("id")+"\" name=\""+this.getAttribute("id")+"\" ";
  -		var _1a=this.getParams();
  -		for(var key in _1a){_19+=[key]+"=\""+_1a[key]+"\" ";}
  -		var _1c=this.getVariablePairs().join("&");
  -		if(_1c.length>0){_19+="flashvars=\""+_1c+"\"";}
  -		_19+="/>";
  -	} else {
  -	
  -		if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");}
  -		_19="<object id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\">";
  -		_19+="<param name=\"movie\" value=\""+this.getAttribute("swf")+"\" />";
  -		var _1d=this.getParams();
  -		for(var key in _1d){_19+="<param name=\""+key+"\" value=\""+_1d[key]+"\" />";}
  -		var _1f=this.getVariablePairs().join("&");
  -		if(_1f.length>0){_19+="<param name=\"flashvars\" value=\""+_1f+"\" />";}
  -		_19+="</object>"
  -	;}
  -		return _19;
  -	},
  -
  -write:function(_20){
  -
  -if(this.getAttribute("useExpressInstall")){
  -	var _21=new deconcept.PlayerVersion([6,0,65]);
  -	if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){
  -	this.setAttribute("doExpressInstall",true);
  -	this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));
  -	document.title=document.title.slice(0,47)+" - Flash Player Installation";
  -	this.addVariable("MMdoctitle",document.title);}}
  -	if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){
  -	var n=(typeof _20=="string")?document.getElementById(_20):_20;
  -	n.innerHTML=this.getSWFHTML();
  -	return true;
  -}
  -else{
  -if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}
  -return false;}};
  -deconcept.SWFObjectUtil.getPlayerVersion=function(_23,_24){
  -var _25=new deconcept.PlayerVersion([0,0,0]);
  -if(navigator.plugins&&navigator.mimeTypes.length){
  -var x=navigator.plugins["Shockwave Flash"];
  -if(x&&x.description){_25=new deconcept.PlayerVersion(x.description.replace(/([a-z]|[A-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}
  -}else{try{
  -var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
  -for(var i=3;axo!=null;i++){
  -axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+i);
  -_25=new deconcept.PlayerVersion([i,0,0]);}}
  -catch(e){}
  -if(_23&&_25.major>_23.major){return _25;}
  -if(!_23||((_23.minor!=0||_23.rev!=0)&&_25.major==_23.major)||_25.major!=6||_24){
  -try{_25=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}
  -catch(e){}}}
  -return _25;};
  -deconcept.PlayerVersion=function(_29){
  -this.major=parseInt(_29[0])!=null?parseInt(_29[0]):0;
  -this.minor=parseInt(_29[1])||0;
  -this.rev=parseInt(_29[2])||0;};
  -deconcept.PlayerVersion.prototype.versionIsValid=function(fv){
  -if(this.major<fv.major){return false;}
  -if(this.major>fv.major){return true;}
  -if(this.minor<fv.minor){return false;}
  -if(this.minor>fv.minor){return true;}
  -if(this.rev<fv.rev){return false;}return true;};
  -deconcept.util={getRequestParameter:function(_2b){
  -var q=document.location.search||document.location.hash;
  -if(q){
  -var _2d=q.indexOf(_2b+"=");
  -var _2e=(q.indexOf("&",_2d)>-1)?q.indexOf("&",_2d):q.length;
  -if(q.length>1&&_2d>-1){
  -return q.substring(q.indexOf("=",_2d)+1,_2e);
  -}}return "";}};
  -if(Array.prototype.push==null){
  -Array.prototype.push=function(_2f){
  -this[this.length]=_2f;
  -return this.length;};}
  -var getQueryParamValue=deconcept.util.getRequestParameter;
  -var FlashObject=deconcept.SWFObject; // for backwards compatibility
  -var SWFObject=deconcept.SWFObject;
  
  
  
  1.8       +2 -1      moniwiki/local/SWFUpload/moni.js
  
  Index: moni.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/SWFUpload/moni.js,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- moni.js	29 Nov 2008 02:44:01 -0000	1.7
  +++ moni.js	17 Dec 2008 06:07:27 -0000	1.8
  @@ -142,7 +142,8 @@
           mydir = form.mysubdir.value;
       }
   
  -    if (document.editform) {
  +    var ef = document.getElementById('editform');
  +    if (ef) {
           jspreview=1;
       }
   
  
  
  


wkpark      2008/12/17 15:07:50

  Modified:    local    wikibits.js
  Log:
  do not use document.editform
  
  Revision  Changes    Path
  1.12      +6 -5      moniwiki/local/wikibits.js
  
  Index: wikibits.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/wikibits.js,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- wikibits.js	3 Dec 2008 11:05:40 -0000	1.11
  +++ wikibits.js	17 Dec 2008 06:07:50 -0000	1.12
  @@ -1,7 +1,7 @@
   // from the MediaWiki
   // simplified for the MoniWiki by wkpark
   //
  -// $Id: wikibits.js,v 1.11 2008/12/03 11:05:40 wkpark Exp $
  +// $Id: wikibits.js,v 1.12 2008/12/17 06:07:50 wkpark Exp $
   //
   // Wikipedia JavaScript support functions
   // if this is true, the toolbar will no longer overwrite the infobox when you move the mouse over individual items
  @@ -154,9 +154,10 @@
   function insertTags(tagOpen, tagClose, sampleText,replace) {
   	var is_ie = document.selection && document.all;
   	var my = document.getElementById('editor_area');
  +	var ef = document.getElementById('editform');
   	var doc = document;
  -	if (doc.editform)
  -		var txtarea = doc.editform.savetext;
  +	if (ef)
  +		var txtarea = ef.savetext;
   	else {
   		// some alternate form? take the first one we can find
   		var areas = doc.getElementsByTagName('textarea');
  @@ -164,8 +165,8 @@
   			var txtarea = areas[0];
   		} else if (opener) {
   			doc = opener.document;
  -			if (doc.editform && doc.editform.savetext) {
  -				txtarea = doc.editform.savetext;
  +			if (ef && ef.savetext) {
  +				txtarea = ef.savetext;
   			} else {
   				txtarea = doc.getElementsByTagName('textarea')[0];
   			}
  
  
  


wkpark      2008/12/17 15:08:17

  Modified:    local/js swfobject.js
  Log:
  upgrade to ver 2.0
  
  Revision  Changes    Path
  1.5       +731 -15   moniwiki/local/js/swfobject.js
  
  Index: swfobject.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/swfobject.js,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- swfobject.js	8 Jan 2008 15:29:50 -0000	1.4
  +++ swfobject.js	17 Dec 2008 06:08:17 -0000	1.5
  @@ -1,15 +1,731 @@
  -/**
  - * SWFObject v1.5: Flash Player detection and embed - http://blog.deconcept.com/swfobject/
  - *
  - * SWFObject is (c) 2007 Geoff Stearns and is released under the MIT License:
  - * http://www.opensource.org/licenses/mit-license.php
  - *
  - */
  -if(typeof deconcept=="undefined"){var deconcept=new Object();}if(typeof deconcept.util=="undefined"){deconcept.util=new Object();}if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();}deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!document.getElementById){return;}this.DETECT_KEY=_a?_a:"detectflash";this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);this.params=new Object();this.variables=new Object();this.attributes=new Array();if(_1){this.setAttribute("swf",_1);}if(id){this.setAttribute("id",id);}if(w){this.setAttribute("width",w);}if(h){this.setAttribute("height",h);}if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=true;}if(c){this.addParam("bgcolor",c);}var q=_7?_7:"high";this.addParam("quality",q);this.setAttribute("useExpressInstall",false);this.setAttribute("doExpressInstall",false);var _c=(_8)?_8:window.location;this.setAttribute("xiRedirectUrl",_c);this.setAttribute("redirectUrl","");if(_9){this.setAttribute("redirectUrl",_9);}};deconcept.SWFObject.prototype={useExpressInstall:function(_d){this.xiSWFPath=!_d?"expressinstall.swf":_d;this.setAttribute("useExpressInstall",true);},setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=_12;},
  -getParams:function(){return this.params;},
  -addVariable:function(_13,_14){
  -_14=_14;  // oops!!! fix Firefox error with urlencoded variables
  -this.variables[_13]=_14;
  -},
  -getVariable:function(_15){return this.variables[_15];},
  -getVariables:function(){return this.variables;},getVariablePairs:function(){var _16=new Array();var key;var _18=this.getVariables();for(key in _18){_16[_16.length]=key+"="+_18[key];}return _16;},getSWFHTML:function(){var _19="";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","PlugIn");this.setAttribute("swf",this.xiSWFPath);}_19="<embed type=\"application/x-shockwave-flash\" src=\""+this.getAttribute("swf")+"\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\"";_19+=" id=\""+this.getAttribute("id")+"\" name=\""+this.getAttribute("id")+"\" ";var _1a=this.getParams();for(var key in _1a){_19+=[key]+"=\""+_1a[key]+"\" ";}var _1c=this.getVariablePairs().join("&");if(_1c.length>0){_19+="flashvars=\""+_1c+"\"";}_19+="/>";}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");this.setAttribute("swf",this.xiSWFPath);}_19="<object id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\">";_19+="<param name=\"movie\" value=\""+this.getAttribute("swf")+"\" />";var _1d=this.getParams();for(var key in _1d){_19+="<param name=\""+key+"\" value=\""+_1d[key]+"\" />";}var _1f=this.getVariablePairs().join("&");if(_1f.length>0){_19+="<param name=\"flashvars\" value=\""+_1f+"\" />";}_19+="</object>";}return _19;},write:function(_20){if(this.getAttribute("useExpressInstall")){var _21=new deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){this.setAttribute("doExpressInstall",true);this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));document.title=document.title.slice(0,47)+" - Flash Player Installation";this.addVariable("MMdoctitle",document.title);}}if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){var n=(typeof _20=="string")?document.getElementById(_20):_20;n.innerHTML=this.getSWFHTML();return true;}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}return false;}};deconcept.SWFObjectUtil.getPlayerVersion=function(){var _23=new deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins["Shockwave Flash"];if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}}else{if(navigator.userAgent&&navigator.userAgent.indexOf("Windows CE")>=0){var axo=1;var _26=3;while(axo){try{_26++;axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_26);_23=new deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=null;}}}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";}catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}}}return _23;};deconcept.PlayerVersion=function(_29){this.major=_29[0]!=null?parseInt(_29[0]):0;this.minor=_29[1]!=null?parseInt(_29[1]):0;this.rev=_29[2]!=null?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototype.versionIsValid=function(fv){if(this.major<fv.major){return false;}if(this.major>fv.major){return true;}if(this.minor<fv.minor){return false;}if(this.minor>fv.minor){return true;}if(this.rev<fv.rev){return false;}return true;};deconcept.util={getRequestParameter:function(_2b){var q=document.location.search||document.location.hash;if(_2b==null){return q;}if(q){var _2d=q.substring(1).split("&");for(var i=0;i<_2d.length;i++){if(_2d[i].substring(0,_2d[i].indexOf("="))==_2b){return _2d[i].substring((_2d[i].indexOf("=")+1));}}}return "";}};deconcept.SWFObjectUtil.cleanupSWFs=function(){var _2f=document.getElementsByTagName("OBJECT");for(var i=_2f.length-1;i>=0;i--){_2f[i].style.display="none";for(var x in _2f[i]){if(typeof _2f[i][x]=="function"){_2f[i][x]=function(){};}}}};if(deconcept.SWFObject.doPrepUnload){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};window.attachEvent("onunload",deconcept.SWFObjectUtil.cleanupSWFs);};window.attachEvent("onbeforeunload",deconcept.SWFObjectUtil.prepUnload);deconcept.unloadSet=true;}}if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all[id];};}var getQueryParamValue=deconcept.util.getRequestParameter;var FlashObject=deconcept.SWFObject;var SWFObject=deconcept.SWFObject;
  +/*! SWFObject v2.1 <http://code.google.com/p/swfobject/>
  +	Copyright (c) 2007-2008 Geoff Stearns, Michael Williams, and Bobby van der Sluis
  +	This software is released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
  +*/
  +
  +var swfobject = function() {
  +	
  +	var UNDEF = "undefined",
  +		OBJECT = "object",
  +		SHOCKWAVE_FLASH = "Shockwave Flash",
  +		SHOCKWAVE_FLASH_AX = "ShockwaveFlash.ShockwaveFlash",
  +		FLASH_MIME_TYPE = "application/x-shockwave-flash",
  +		EXPRESS_INSTALL_ID = "SWFObjectExprInst",
  +		
  +		win = window,
  +		doc = document,
  +		nav = navigator,
  +		
  +		domLoadFnArr = [],
  +		regObjArr = [],
  +		objIdArr = [],
  +		listenersArr = [],
  +		script,
  +		timer = null,
  +		storedAltContent = null,
  +		storedAltContentId = null,
  +		isDomLoaded = false,
  +		isExpressInstallActive = false;
  +	
  +	/* Centralized function for browser feature detection
  +		- Proprietary feature detection (conditional compiling) is used to detect Internet Explorer's features
  +		- User agent string detection is only used when no alternative is possible
  +		- Is executed directly for optimal performance
  +	*/	
  +	var ua = function() {
  +		var w3cdom = typeof doc.getElementById != UNDEF && typeof doc.getElementsByTagName != UNDEF && typeof doc.createElement != UNDEF,
  +			playerVersion = [0,0,0],
  +			d = null;
  +		if (typeof nav.plugins != UNDEF && typeof nav.plugins[SHOCKWAVE_FLASH] == OBJECT) {
  +			d = nav.plugins[SHOCKWAVE_FLASH].description;
  +			if (d && !(typeof nav.mimeTypes != UNDEF && nav.mimeTypes[FLASH_MIME_TYPE] && !nav.mimeTypes[FLASH_MIME_TYPE].enabledPlugin)) { // navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin indicates whether plug-ins are enabled or disabled in Safari 3+
  +				d = d.replace(/^.*\s+(\S+\s+\S+$)/, "$1");
  +				playerVersion[0] = parseInt(d.replace(/^(.*)\..*$/, "$1"), 10);
  +				playerVersion[1] = parseInt(d.replace(/^.*\.(.*)\s.*$/, "$1"), 10);
  +				playerVersion[2] = /r/.test(d) ? parseInt(d.replace(/^.*r(.*)$/, "$1"), 10) : 0;
  +			}
  +		}
  +		else if (typeof win.ActiveXObject != UNDEF) {
  +			var a = null, fp6Crash = false;
  +			try {
  +				a = new ActiveXObject(SHOCKWAVE_FLASH_AX + ".7");
  +			}
  +			catch(e) {
  +				try { 
  +					a = new ActiveXObject(SHOCKWAVE_FLASH_AX + ".6");
  +					playerVersion = [6,0,21];
  +					a.AllowScriptAccess = "always";	 // Introduced in fp6.0.47
  +				}
  +				catch(e) {
  +					if (playerVersion[0] == 6) {
  +						fp6Crash = true;
  +					}
  +				}
  +				if (!fp6Crash) {
  +					try {
  +						a = new ActiveXObject(SHOCKWAVE_FLASH_AX);
  +					}
  +					catch(e) {}
  +				}
  +			}
  +			if (!fp6Crash && a) { // a will return null when ActiveX is disabled
  +				try {
  +					d = a.GetVariable("$version");	// Will crash fp6.0.21/23/29
  +					if (d) {
  +						d = d.split(" ")[1].split(",");
  +						playerVersion = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
  +					}
  +				}
  +				catch(e) {}
  +			}
  +		}
  +		var u = nav.userAgent.toLowerCase(),
  +			p = nav.platform.toLowerCase(),
  +			webkit = /webkit/.test(u) ? parseFloat(u.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, "$1")) : false, // returns either the webkit version or false if not webkit
  +			ie = false,
  +			windows = p ? /win/.test(p) : /win/.test(u),
  +			mac = p ? /mac/.test(p) : /mac/.test(u);
  +		/*@cc_on
  +			ie = true;
  +			@if (@_win32)
  +				windows = true;
  +			@elif (@_mac)
  +				mac = true;
  +			@end
  +		@*/
  +		return { w3cdom:w3cdom, pv:playerVersion, webkit:webkit, ie:ie, win:windows, mac:mac };
  +	}();
  +
  +	/* Cross-browser onDomLoad
  +		- Based on Dean Edwards' solution: http://dean.edwards.name/weblog/2006/06/again/
  +		- Will fire an event as soon as the DOM of a page is loaded (supported by Gecko based browsers - like Firefox -, IE, Opera9+, Safari)
  +	*/ 
  +	var onDomLoad = function() {
  +		if (!ua.w3cdom) {
  +			return;
  +		}
  +		addDomLoadEvent(main);
  +		if (ua.ie && ua.win) {
  +			try {	 // Avoid a possible Operation Aborted error
  +				doc.write("<scr" + "ipt id=__ie_ondomload defer=true src=//:></scr" + "ipt>"); // String is split into pieces to avoid Norton AV to add code that can cause errors 
  +				script = getElementById("__ie_ondomload");
  +				if (script) {
  +					addListener(script, "onreadystatechange", checkReadyState);
  +				}
  +			}
  +			catch(e) {}
  +		}
  +		if (ua.webkit && typeof doc.readyState != UNDEF) {
  +			timer = setInterval(function() { if (/loaded|complete/.test(doc.readyState)) { callDomLoadFunctions(); }}, 10);
  +		}
  +		if (typeof doc.addEventListener != UNDEF) {
  +			doc.addEventListener("DOMContentLoaded", callDomLoadFunctions, null);
  +		}
  +		addLoadEvent(callDomLoadFunctions);
  +	}();
  +	
  +	function checkReadyState() {
  +		if (script.readyState == "complete") {
  +			script.parentNode.removeChild(script);
  +			callDomLoadFunctions();
  +		}
  +	}
  +	
  +	function callDomLoadFunctions() {
  +		if (isDomLoaded) {
  +			return;
  +		}
  +		if (ua.ie && ua.win) { // Test if we can really add elements to the DOM; we don't want to fire it too early
  +			var s = createElement("span");
  +			try { // Avoid a possible Operation Aborted error
  +				var t = doc.getElementsByTagName("body")[0].appendChild(s);
  +				t.parentNode.removeChild(t);
  +			}
  +			catch (e) {
  +				return;
  +			}
  +		}
  +		isDomLoaded = true;
  +		if (timer) {
  +			clearInterval(timer);
  +			timer = null;
  +		}
  +		var dl = domLoadFnArr.length;
  +		for (var i = 0; i < dl; i++) {
  +			domLoadFnArr[i]();
  +		}
  +	}
  +	
  +	function addDomLoadEvent(fn) {
  +		if (isDomLoaded) {
  +			fn();
  +		}
  +		else { 
  +			domLoadFnArr[domLoadFnArr.length] = fn; // Array.push() is only available in IE5.5+
  +		}
  +	}
  +	
  +	/* Cross-browser onload
  +		- Based on James Edwards' solution: http://brothercake.com/site/resources/scripts/onload/
  +		- Will fire an event as soon as a web page including all of its assets are loaded 
  +	 */
  +	function addLoadEvent(fn) {
  +		if (typeof win.addEventListener != UNDEF) {
  +			win.addEventListener("load", fn, false);
  +		}
  +		else if (typeof doc.addEventListener != UNDEF) {
  +			doc.addEventListener("load", fn, false);
  +		}
  +		else if (typeof win.attachEvent != UNDEF) {
  +			addListener(win, "onload", fn);
  +		}
  +		else if (typeof win.onload == "function") {
  +			var fnOld = win.onload;
  +			win.onload = function() {
  +				fnOld();
  +				fn();
  +			};
  +		}
  +		else {
  +			win.onload = fn;
  +		}
  +	}
  +	
  +	/* Main function
  +		- Will preferably execute onDomLoad, otherwise onload (as a fallback)
  +	*/
  +	function main() { // Static publishing only
  +		var rl = regObjArr.length;
  +		for (var i = 0; i < rl; i++) { // For each registered object element
  +			var id = regObjArr[i].id;
  +			if (ua.pv[0] > 0) {
  +				var obj = getElementById(id);
  +				if (obj) {
  +					regObjArr[i].width = obj.getAttribute("width") ? obj.getAttribute("width") : "0";
  +					regObjArr[i].height = obj.getAttribute("height") ? obj.getAttribute("height") : "0";
  +					if (hasPlayerVersion(regObjArr[i].swfVersion)) { // Flash plug-in version >= Flash content version: Houston, we have a match!
  +						if (ua.webkit && ua.webkit < 312) { // Older webkit engines ignore the object element's nested param elements
  +							fixParams(obj);
  +						}
  +						setVisibility(id, true);
  +					}
  +					else if (regObjArr[i].expressInstall && !isExpressInstallActive && hasPlayerVersion("6.0.65") && (ua.win || ua.mac)) { // Show the Adobe Express Install dialog if set by the web page author and if supported (fp6.0.65+ on Win/Mac OS only)
  +						showExpressInstall(regObjArr[i]);
  +					}
  +					else { // Flash plug-in and Flash content version mismatch: display alternative content instead of Flash content
  +						displayAltContent(obj);
  +					}
  +				}
  +			}
  +			else {	// If no fp is installed, we let the object element do its job (show alternative content)
  +				setVisibility(id, true);
  +			}
  +		}
  +	}
  +	
  +	/* Fix nested param elements, which are ignored by older webkit engines
  +		- This includes Safari up to and including version 1.2.2 on Mac OS 10.3
  +		- Fall back to the proprietary embed element
  +	*/
  +	function fixParams(obj) {
  +		var nestedObj = obj.getElementsByTagName(OBJECT)[0];
  +		if (nestedObj) {
  +			var e = createElement("embed"), a = nestedObj.attributes;
  +			if (a) {
  +				var al = a.length;
  +				for (var i = 0; i < al; i++) {
  +					if (a[i].nodeName == "DATA") {
  +						e.setAttribute("src", a[i].nodeValue);
  +					}
  +					else {
  +						e.setAttribute(a[i].nodeName, a[i].nodeValue);
  +					}
  +				}
  +			}
  +			var c = nestedObj.childNodes;
  +			if (c) {
  +				var cl = c.length;
  +				for (var j = 0; j < cl; j++) {
  +					if (c[j].nodeType == 1 && c[j].nodeName == "PARAM") {
  +						e.setAttribute(c[j].getAttribute("name"), c[j].getAttribute("value"));
  +					}
  +				}
  +			}
  +			obj.parentNode.replaceChild(e, obj);
  +		}
  +	}
  +	
  +	/* Show the Adobe Express Install dialog
  +		- Reference: http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=6a253b75
  +	*/
  +	function showExpressInstall(regObj) {
  +		isExpressInstallActive = true;
  +		var obj = getElementById(regObj.id);
  +		if (obj) {
  +			if (regObj.altContentId) {
  +				var ac = getElementById(regObj.altContentId);
  +				if (ac) {
  +					storedAltContent = ac;
  +					storedAltContentId = regObj.altContentId;
  +				}
  +			}
  +			else {
  +				storedAltContent = abstractAltContent(obj);
  +			}
  +			if (!(/%$/.test(regObj.width)) && parseInt(regObj.width, 10) < 310) {
  +				regObj.width = "310";
  +			}
  +			if (!(/%$/.test(regObj.height)) && parseInt(regObj.height, 10) < 137) {
  +				regObj.height = "137";
  +			}
  +			doc.title = doc.title.slice(0, 47) + " - Flash Player Installation";
  +			var pt = ua.ie && ua.win ? "ActiveX" : "PlugIn",
  +				dt = doc.title,
  +				fv = "MMredirectURL=" + win.location + "&MMplayerType=" + pt + "&MMdoctitle=" + dt,
  +				replaceId = regObj.id;
  +			// For IE when a SWF is loading (AND: not available in cache) wait for the onload event to fire to remove the original object element
  +			// In IE you cannot properly cancel a loading SWF file without breaking browser load references, also obj.onreadystatechange doesn't work
  +			if (ua.ie && ua.win && obj.readyState != 4) {
  +				var newObj = createElement("div");
  +				replaceId += "SWFObjectNew";
  +				newObj.setAttribute("id", replaceId);
  +				obj.parentNode.insertBefore(newObj, obj); // Insert placeholder div that will be replaced by the object element that loads expressinstall.swf
  +				obj.style.display = "none";
  +				var fn = function() {
  +					obj.parentNode.removeChild(obj);
  +				};
  +				addListener(win, "onload", fn);
  +			}
  +			createSWF({ data:regObj.expressInstall, id:EXPRESS_INSTALL_ID, width:regObj.width, height:regObj.height }, { flashvars:fv }, replaceId);
  +		}
  +	}
  +	
  +	/* Functions to abstract and display alternative content
  +	*/
  +	function displayAltContent(obj) {
  +		if (ua.ie && ua.win && obj.readyState != 4) {
  +			// For IE when a SWF is loading (AND: not available in cache) wait for the onload event to fire to remove the original object element
  +			// In IE you cannot properly cancel a loading SWF file without breaking browser load references, also obj.onreadystatechange doesn't work
  +			var el = createElement("div");
  +			obj.parentNode.insertBefore(el, obj); // Insert placeholder div that will be replaced by the alternative content
  +			el.parentNode.replaceChild(abstractAltContent(obj), el);
  +			obj.style.display = "none";
  +			var fn = function() {
  +				obj.parentNode.removeChild(obj);
  +			};
  +			addListener(win, "onload", fn);
  +		}
  +		else {
  +			obj.parentNode.replaceChild(abstractAltContent(obj), obj);
  +		}
  +	} 
  +
  +	function abstractAltContent(obj) {
  +		var ac = createElement("div");
  +		if (ua.win && ua.ie) {
  +			ac.innerHTML = obj.innerHTML;
  +		}
  +		else {
  +			var nestedObj = obj.getElementsByTagName(OBJECT)[0];
  +			if (nestedObj) {
  +				var c = nestedObj.childNodes;
  +				if (c) {
  +					var cl = c.length;
  +					for (var i = 0; i < cl; i++) {
  +						if (!(c[i].nodeType == 1 && c[i].nodeName == "PARAM") && !(c[i].nodeType == 8)) {
  +							ac.appendChild(c[i].cloneNode(true));
  +						}
  +					}
  +				}
  +			}
  +		}
  +		return ac;
  +	}
  +	
  +	/* Cross-browser dynamic SWF creation
  +	*/
  +	function createSWF(attObj, parObj, id) {
  +		var r, el = getElementById(id);
  +		if (el) {
  +			if (typeof attObj.id == UNDEF) { // if no 'id' is defined for the object element, it will inherit the 'id' from the alternative content
  +				attObj.id = id;
  +			}
  +			if (ua.ie && ua.win) { // IE, the object element and W3C DOM methods do not combine: fall back to outerHTML
  +				var att = "";
  +				for (var i in attObj) {
  +					if (attObj[i] != Object.prototype[i]) { // Filter out prototype additions from other potential libraries, like Object.prototype.toJSONString = function() {}
  +						if (i.toLowerCase() == "data") {
  +							parObj.movie = attObj[i];
  +						}
  +						else if (i.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword
  +							att += ' class="' + attObj[i] + '"';
  +						}
  +						else if (i.toLowerCase() != "classid") {
  +							att += ' ' + i + '="' + attObj[i] + '"';
  +						}
  +					}
  +				}
  +				var par = "";
  +				for (var j in parObj) {
  +					if (parObj[j] != Object.prototype[j]) { // Filter out prototype additions from other potential libraries
  +						par += '<param name="' + j + '" value="' + parObj[j] + '" />';
  +					}
  +				}
  +				el.outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + att + '>' + par + '</object>';
  +				objIdArr[objIdArr.length] = attObj.id; // Stored to fix object 'leaks' on unload (dynamic publishing only)
  +				r = getElementById(attObj.id);	
  +			}
  +			else if (ua.webkit && ua.webkit < 312) { // Older webkit engines ignore the object element's nested param elements: fall back to the proprietary embed element
  +				var e = createElement("embed");
  +				e.setAttribute("type", FLASH_MIME_TYPE);
  +				for (var k in attObj) {
  +					if (attObj[k] != Object.prototype[k]) { // Filter out prototype additions from other potential libraries
  +						if (k.toLowerCase() == "data") {
  +							e.setAttribute("src", attObj[k]);
  +						}
  +						else if (k.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword
  +							e.setAttribute("class", attObj[k]);
  +						}
  +						else if (k.toLowerCase() != "classid") { // Filter out IE specific attribute
  +							e.setAttribute(k, attObj[k]);
  +						}
  +					}
  +				}
  +				for (var l in parObj) {
  +					if (parObj[l] != Object.prototype[l]) { // Filter out prototype additions from other potential libraries
  +						if (l.toLowerCase() != "movie") { // Filter out IE specific param element
  +							e.setAttribute(l, parObj[l]);
  +						}
  +					}
  +				}
  +				el.parentNode.replaceChild(e, el);
  +				r = e;
  +			}
  +			else { // Well-behaving browsers
  +				var o = createElement(OBJECT);
  +				o.setAttribute("type", FLASH_MIME_TYPE);
  +				for (var m in attObj) {
  +					if (attObj[m] != Object.prototype[m]) { // Filter out prototype additions from other potential libraries
  +						if (m.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword
  +							o.setAttribute("class", attObj[m]);
  +						}
  +						else if (m.toLowerCase() != "classid") { // Filter out IE specific attribute
  +							o.setAttribute(m, attObj[m]);
  +						}
  +					}
  +				}
  +				for (var n in parObj) {
  +					if (parObj[n] != Object.prototype[n] && n.toLowerCase() != "movie") { // Filter out prototype additions from other potential libraries and IE specific param element
  +						createObjParam(o, n, parObj[n]);
  +					}
  +				}
  +				el.parentNode.replaceChild(o, el);
  +				r = o;
  +			}
  +		}
  +		return r;
  +	}
  +	
  +	function createObjParam(el, pName, pValue) {
  +		var p = createElement("param");
  +		p.setAttribute("name", pName);	
  +		p.setAttribute("value", pValue);
  +		el.appendChild(p);
  +	}
  +	
  +	/* Cross-browser SWF removal
  +		- Especially needed to safely and completely remove a SWF in Internet Explorer
  +	*/
  +	function removeSWF(id) {
  +		var obj = getElementById(id);
  +		if (obj && (obj.nodeName == "OBJECT" || obj.nodeName == "EMBED")) {
  +			if (ua.ie && ua.win) {
  +				if (obj.readyState == 4) {
  +					removeObjectInIE(id);
  +				}
  +				else {
  +					win.attachEvent("onload", function() {
  +						removeObjectInIE(id);
  +					});
  +				}
  +			}
  +			else {
  +				obj.parentNode.removeChild(obj);
  +			}
  +		}
  +	}
  +	
  +	function removeObjectInIE(id) {
  +		var obj = getElementById(id);
  +		if (obj) {
  +			for (var i in obj) {
  +				if (typeof obj[i] == "function") {
  +					obj[i] = null;
  +				}
  +			}
  +			obj.parentNode.removeChild(obj);
  +		}
  +	}
  +	
  +	/* Functions to optimize JavaScript compression
  +	*/
  +	function getElementById(id) {
  +		var el = null;
  +		try {
  +			el = doc.getElementById(id);
  +		}
  +		catch (e) {}
  +		return el;
  +	}
  +	
  +	function createElement(el) {
  +		return doc.createElement(el);
  +	}
  +	
  +	/* Updated attachEvent function for Internet Explorer
  +		- Stores attachEvent information in an Array, so on unload the detachEvent functions can be called to avoid memory leaks
  +	*/	
  +	function addListener(target, eventType, fn) {
  +		target.attachEvent(eventType, fn);
  +		listenersArr[listenersArr.length] = [target, eventType, fn];
  +	}
  +	
  +	/* Flash Player and SWF content version matching
  +	*/
  +	function hasPlayerVersion(rv) {
  +		var pv = ua.pv, v = rv.split(".");
  +		v[0] = parseInt(v[0], 10);
  +		v[1] = parseInt(v[1], 10) || 0; // supports short notation, e.g. "9" instead of "9.0.0"
  +		v[2] = parseInt(v[2], 10) || 0;
  +		return (pv[0] > v[0] || (pv[0] == v[0] && pv[1] > v[1]) || (pv[0] == v[0] && pv[1] == v[1] && pv[2] >= v[2])) ? true : false;
  +	}
  +	
  +	/* Cross-browser dynamic CSS creation
  +		- Based on Bobby van der Sluis' solution: http://www.bobbyvandersluis.com/articles/dynamicCSS.php
  +	*/	
  +	function createCSS(sel, decl) {
  +		if (ua.ie && ua.mac) {
  +			return;
  +		}
  +		var h = doc.getElementsByTagName("head")[0], s = createElement("style");
  +		s.setAttribute("type", "text/css");
  +		s.setAttribute("media", "screen");
  +		if (!(ua.ie && ua.win) && typeof doc.createTextNode != UNDEF) {
  +			s.appendChild(doc.createTextNode(sel + " {" + decl + "}"));
  +		}
  +		h.appendChild(s);
  +		if (ua.ie && ua.win && typeof doc.styleSheets != UNDEF && doc.styleSheets.length > 0) {
  +			var ls = doc.styleSheets[doc.styleSheets.length - 1];
  +			if (typeof ls.addRule == OBJECT) {
  +				ls.addRule(sel, decl);
  +			}
  +		}
  +	}
  +	
  +	function setVisibility(id, isVisible) {
  +		var v = isVisible ? "visible" : "hidden";
  +		if (isDomLoaded && getElementById(id)) {
  +			getElementById(id).style.visibility = v;
  +		}
  +		else {
  +			createCSS("#" + id, "visibility:" + v);
  +		}
  +	}
  +
  +	/* Filter to avoid XSS attacks 
  +	*/
  +	function urlEncodeIfNecessary(s) {
  +		var regex = /[\\\"<>\.;]/;
  +		var hasBadChars = regex.exec(s) != null;
  +		return hasBadChars ? encodeURIComponent(s) : s;
  +	}
  +	
  +	/* Release memory to avoid memory leaks caused by closures, fix hanging audio/video threads and force open sockets/NetConnections to disconnect (Internet Explorer only)
  +	*/
  +	var cleanup = function() {
  +		if (ua.ie && ua.win) {
  +			window.attachEvent("onunload", function() {
  +				// remove listeners to avoid memory leaks
  +				var ll = listenersArr.length;
  +				for (var i = 0; i < ll; i++) {
  +					listenersArr[i][0].detachEvent(listenersArr[i][1], listenersArr[i][2]);
  +				}
  +				// cleanup dynamically embedded objects to fix audio/video threads and force open sockets and NetConnections to disconnect
  +				var il = objIdArr.length;
  +				for (var j = 0; j < il; j++) {
  +					removeSWF(objIdArr[j]);
  +				}
  +				// cleanup library's main closures to avoid memory leaks
  +				for (var k in ua) {
  +					ua[k] = null;
  +				}
  +				ua = null;
  +				for (var l in swfobject) {
  +					swfobject[l] = null;
  +				}
  +				swfobject = null;
  +			});
  +		}
  +	}();
  +	
  +	
  +	return {
  +		/* Public API
  +			- Reference: http://code.google.com/p/swfobject/wiki/SWFObject_2_0_documentation
  +		*/ 
  +		registerObject: function(objectIdStr, swfVersionStr, xiSwfUrlStr) {
  +			if (!ua.w3cdom || !objectIdStr || !swfVersionStr) {
  +				return;
  +			}
  +			var regObj = {};
  +			regObj.id = objectIdStr;
  +			regObj.swfVersion = swfVersionStr;
  +			regObj.expressInstall = xiSwfUrlStr ? xiSwfUrlStr : false;
  +			regObjArr[regObjArr.length] = regObj;
  +			setVisibility(objectIdStr, false);
  +		},
  +		
  +		getObjectById: function(objectIdStr) {
  +			var r = null;
  +			if (ua.w3cdom) {
  +				var o = getElementById(objectIdStr);
  +				if (o) {
  +					var n = o.getElementsByTagName(OBJECT)[0];
  +					if (!n || (n && typeof o.SetVariable != UNDEF)) {
  +							r = o;
  +					}
  +					else if (typeof n.SetVariable != UNDEF) {
  +						r = n;
  +					}
  +				}
  +			}
  +			return r;
  +		},
  +		
  +		embedSWF: function(swfUrlStr, replaceElemIdStr, widthStr, heightStr, swfVersionStr, xiSwfUrlStr, flashvarsObj, parObj, attObj) {
  +			if (!ua.w3cdom || !swfUrlStr || !replaceElemIdStr || !widthStr || !heightStr || !swfVersionStr) {
  +				return;
  +			}
  +			widthStr += ""; // Auto-convert to string
  +			heightStr += "";
  +			if (hasPlayerVersion(swfVersionStr)) {
  +				setVisibility(replaceElemIdStr, false);
  +				var att = {};
  +				if (attObj && typeof attObj === OBJECT) {
  +					for (var i in attObj) {
  +						if (attObj[i] != Object.prototype[i]) { // Filter out prototype additions from other potential libraries
  +							att[i] = attObj[i];
  +						}
  +					}
  +				}
  +				att.data = swfUrlStr;
  +				att.width = widthStr;
  +				att.height = heightStr;
  +				var par = {}; 
  +				if (parObj && typeof parObj === OBJECT) {
  +					for (var j in parObj) {
  +						if (parObj[j] != Object.prototype[j]) { // Filter out prototype additions from other potential libraries
  +							par[j] = parObj[j];
  +						}
  +					}
  +				}
  +				if (flashvarsObj && typeof flashvarsObj === OBJECT) {
  +					for (var k in flashvarsObj) {
  +						if (flashvarsObj[k] != Object.prototype[k]) { // Filter out prototype additions from other potential libraries
  +							if (typeof par.flashvars != UNDEF) {
  +								par.flashvars += "&" + k + "=" + flashvarsObj[k];
  +							}
  +							else {
  +								par.flashvars = k + "=" + flashvarsObj[k];
  +							}
  +						}
  +					}
  +				}
  +				addDomLoadEvent(function() {
  +					createSWF(att, par, replaceElemIdStr);
  +					if (att.id == replaceElemIdStr) {
  +						setVisibility(replaceElemIdStr, true);
  +					}
  +				});
  +			}
  +			else if (xiSwfUrlStr && !isExpressInstallActive && hasPlayerVersion("6.0.65") && (ua.win || ua.mac)) {
  +				isExpressInstallActive = true; // deferred execution
  +				setVisibility(replaceElemIdStr, false);
  +				addDomLoadEvent(function() {
  +					var regObj = {};
  +					regObj.id = regObj.altContentId = replaceElemIdStr;
  +					regObj.width = widthStr;
  +					regObj.height = heightStr;
  +					regObj.expressInstall = xiSwfUrlStr;
  +					showExpressInstall(regObj);
  +				});
  +			}
  +		},
  +		
  +		getFlashPlayerVersion: function() {
  +			return { major:ua.pv[0], minor:ua.pv[1], release:ua.pv[2] };
  +		},
  +		
  +		hasFlashPlayerVersion: hasPlayerVersion,
  +		
  +		createSWF: function(attObj, parObj, replaceElemIdStr) {
  +			if (ua.w3cdom) {
  +				return createSWF(attObj, parObj, replaceElemIdStr);
  +			}
  +			else {
  +				return undefined;
  +			}
  +		},
  +		
  +		removeSWF: function(objElemIdStr) {
  +			if (ua.w3cdom) {
  +				removeSWF(objElemIdStr);
  +			}
  +		},
  +		
  +		createCSS: function(sel, decl) {
  +			if (ua.w3cdom) {
  +				createCSS(sel, decl);
  +			}
  +		},
  +		
  +		addDomLoadEvent: addDomLoadEvent,
  +		
  +		addLoadEvent: addLoadEvent,
  +		
  +		getQueryParamValue: function(param) {
  +			var q = doc.location.search || doc.location.hash;
  +			if (param == null) {
  +				return urlEncodeIfNecessary(q);
  +			}
  +			if (q) {
  +				var pairs = q.substring(1).split("&");
  +				for (var i = 0; i < pairs.length; i++) {
  +					if (pairs[i].substring(0, pairs[i].indexOf("=")) == param) {
  +						return urlEncodeIfNecessary(pairs[i].substring((pairs[i].indexOf("=") + 1)));
  +					}
  +				}
  +			}
  +			return "";
  +		},
  +		
  +		// For internal usage only
  +		expressInstallCallback: function() {
  +			if (isExpressInstallActive && storedAltContent) {
  +				var obj = getElementById(EXPRESS_INSTALL_ID);
  +				if (obj) {
  +					obj.parentNode.replaceChild(storedAltContent, obj);
  +					if (storedAltContentId) {
  +						setVisibility(storedAltContentId, true);
  +						if (ua.ie && ua.win) {
  +							storedAltContent.style.display = "block";
  +						}
  +					}
  +					storedAltContent = null;
  +					storedAltContentId = null;
  +					isExpressInstallActive = false;
  +				}
  +			} 
  +		}
  +	};
  +}();
  
  
  


wkpark      2008/12/17 15:19:12

  Modified:    .        wiki.php
  Log:
  use getProcessor() first.
  fixed heading number http://kldp.net/forum/message.php?msg_id=66793
  
  Revision  Changes    Path
  1.422     +11 -11    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.421
  retrieving revision 1.422
  diff -u -r1.421 -r1.422
  --- wiki.php	17 Dec 2008 02:42:43 -0000	1.421
  +++ wiki.php	17 Dec 2008 06:19:12 -0000	1.422
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.421 2008/12/17 02:42:43 wkpark Exp $
  +// $Id: wiki.php,v 1.422 2008/12/17 06:19:12 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.421 $',1,-1);
  +$_revision = substr('$Revision: 1.422 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2840,14 +2840,14 @@
         }
         $ket= '</span>';
       }
  -    if (!($f=function_exists("processor_".$processor)) and !($c=class_exists('processor_'.$processor))) {
  -      $pf=getProcessor($processor);
  -      if (empty($pf)) {
  -        $ret= call_user_func('processor_plain',$this,$value,$options);
  -        return $bra.$ret.$ket;
  -      }
  +
  +    $pf=getProcessor($processor);
  +    if (empty($pf)) {
  +      $ret= call_user_func('processor_plain',$this,$value,$options);
  +      return $bra.$ret.$ket;
  +    }
  +    if (!($f=function_exists('processor_'.$pf)) and !($c=class_exists('processor_'.$pf))) {
         include_once("plugin/processor/$pf.php");
  -      $processor=$pf;
         $name='processor_'.$pf;
         if (!($f=function_exists($name)) and !($c=class_exists($name))) {
           $processor='plain';
  @@ -2863,7 +2863,7 @@
         return $bra.$ret.$ket;
       }
   
  -    $classname='processor_'.$processor;
  +    $classname='processor_'.$pf;
       $myclass= & new $classname($this,$options);
       $ret= call_user_func(array($myclass,'process'),$value,$options);
       if ($myclass->_type=='wikimarkup') return $ret;
  @@ -3443,7 +3443,7 @@
   
       # for headings
       $headinfo['top'] = 0;
  -    $headinfo['num'] = 0;
  +    $headinfo['num'] = 1;
       $headinfo['dep'] = 0;
   
       $text='';
  
  
  


wkpark      2008/12/17 15:20:57

  Added:       plugin   TPL.php
  Log:
  add a new TPL macro. it is a wrapper of the Templete_ processor.
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/TPL.php
  
  Index: TPL.php
  ===================================================================
  <?php
  // Copyright 2008 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a TPL plugin using the Templete_ processor
  //
  // Author: Won-Kyu Park <wkpark@kldp.org>
  // Date: 2008-12-17
  // Name: a TPL plugin
  // Description: a TPL plugin wapper for the Templete_ processor
  // URL: MoniWiki:TPLProcessor
  // Version: $Revision: 1.1 $
  // License: GPL
  //
  // Usage: [[TPL({=md5(time())})]]
  //
  // $Id: TPL.php,v 1.1 2008/12/17 06:20:57 wkpark Exp $
  
  function macro_TPL($formatter, $value, $params=array()) {
      return $formatter->processor_repl('tpl_', $value, $params);
  }
  
  // vim:et:sts=4:sw=4:
  ?>
  
  
  


wkpark      2008/12/17 21:30:27

  Modified:    local/js prototype.js
  Log:
  update
  
  Revision  Changes    Path
  1.2       +3038 -1037moniwiki/local/js/prototype.js
  
  Index: prototype.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/prototype.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- prototype.js	19 Dec 2006 02:09:32 -0000	1.1
  +++ prototype.js	17 Dec 2008 12:30:27 -0000	1.2
  @@ -1,51 +1,157 @@
  -/*  Prototype JavaScript framework, version 1.5.0_rc1
  - *  (c) 2005 Sam Stephenson <sam@conio.net>
  +/*  Prototype JavaScript framework, version 1.6.0.3
  + *  (c) 2005-2008 Sam Stephenson
    *
    *  Prototype is freely distributable under the terms of an MIT-style license.
  - *  For details, see the Prototype web site: http://prototype.conio.net/
  + *  For details, see the Prototype web site: http://www.prototypejs.org/
    *
  -/*--------------------------------------------------------------------------*/
  + *--------------------------------------------------------------------------*/
   
   var Prototype = {
  -  Version: '1.5.0_rc1',
  +  Version: '1.6.0.3',
  +
  +  Browser: {
  +    IE:     !!(window.attachEvent &&
  +      navigator.userAgent.indexOf('Opera') === -1),
  +    Opera:  navigator.userAgent.indexOf('Opera') > -1,
  +    WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,
  +    Gecko:  navigator.userAgent.indexOf('Gecko') > -1 &&
  +      navigator.userAgent.indexOf('KHTML') === -1,
  +    MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)
  +  },
  +
     BrowserFeatures: {
  -    XPath: !!document.evaluate
  +    XPath: !!document.evaluate,
  +    SelectorsAPI: !!document.querySelector,
  +    ElementExtensions: !!window.HTMLElement,
  +    SpecificElementExtensions:
  +      document.createElement('div')['__proto__'] &&
  +      document.createElement('div')['__proto__'] !==
  +        document.createElement('form')['__proto__']
     },
   
  -  ScriptFragment: '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)',
  -  emptyFunction: function() {},
  +  ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>',
  +  JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/,
  +
  +  emptyFunction: function() { },
     K: function(x) { return x }
  -}
  +};
  +
  +if (Prototype.Browser.MobileSafari)
  +  Prototype.BrowserFeatures.SpecificElementExtensions = false;
   
  +
  +/* Based on Alex Arnell's inheritance implementation. */
   var Class = {
     create: function() {
  -    return function() {
  +    var parent = null, properties = $A(arguments);
  +    if (Object.isFunction(properties[0]))
  +      parent = properties.shift();
  +
  +    function klass() {
         this.initialize.apply(this, arguments);
       }
  +
  +    Object.extend(klass, Class.Methods);
  +    klass.superclass = parent;
  +    klass.subclasses = [];
  +
  +    if (parent) {
  +      var subclass = function() { };
  +      subclass.prototype = parent.prototype;
  +      klass.prototype = new subclass;
  +      parent.subclasses.push(klass);
  +    }
  +
  +    for (var i = 0; i < properties.length; i++)
  +      klass.addMethods(properties[i]);
  +
  +    if (!klass.prototype.initialize)
  +      klass.prototype.initialize = Prototype.emptyFunction;
  +
  +    klass.prototype.constructor = klass;
  +
  +    return klass;
  +  }
  +};
  +
  +Class.Methods = {
  +  addMethods: function(source) {
  +    var ancestor   = this.superclass && this.superclass.prototype;
  +    var properties = Object.keys(source);
  +
  +    if (!Object.keys({ toString: true }).length)
  +      properties.push("toString", "valueOf");
  +
  +    for (var i = 0, length = properties.length; i < length; i++) {
  +      var property = properties[i], value = source[property];
  +      if (ancestor && Object.isFunction(value) &&
  +          value.argumentNames().first() == "$super") {
  +        var method = value;
  +        value = (function(m) {
  +          return function() { return ancestor[m].apply(this, arguments) };
  +        })(property).wrap(method);
  +
  +        value.valueOf = method.valueOf.bind(method);
  +        value.toString = method.toString.bind(method);
  +      }
  +      this.prototype[property] = value;
  +    }
  +
  +    return this;
     }
  -}
  +};
   
  -var Abstract = new Object();
  +var Abstract = { };
   
   Object.extend = function(destination, source) {
  -  for (var property in source) {
  +  for (var property in source)
       destination[property] = source[property];
  -  }
     return destination;
  -}
  +};
   
   Object.extend(Object, {
     inspect: function(object) {
       try {
  -      if (object === undefined) return 'undefined';
  +      if (Object.isUndefined(object)) return 'undefined';
         if (object === null) return 'null';
  -      return object.inspect ? object.inspect() : object.toString();
  +      return object.inspect ? object.inspect() : String(object);
       } catch (e) {
         if (e instanceof RangeError) return '...';
         throw e;
       }
     },
   
  +  toJSON: function(object) {
  +    var type = typeof object;
  +    switch (type) {
  +      case 'undefined':
  +      case 'function':
  +      case 'unknown': return;
  +      case 'boolean': return object.toString();
  +    }
  +
  +    if (object === null) return 'null';
  +    if (object.toJSON) return object.toJSON();
  +    if (Object.isElement(object)) return;
  +
  +    var results = [];
  +    for (var property in object) {
  +      var value = Object.toJSON(object[property]);
  +      if (!Object.isUndefined(value))
  +        results.push(property.toJSON() + ': ' + value);
  +    }
  +
  +    return '{' + results.join(', ') + '}';
  +  },
  +
  +  toQueryString: function(object) {
  +    return $H(object).toQueryString();
  +  },
  +
  +  toHTML: function(object) {
  +    return object && object.toHTML ? object.toHTML() : String.interpret(object);
  +  },
  +
     keys: function(object) {
       var keys = [];
       for (var property in object)
  @@ -61,61 +167,131 @@
     },
   
     clone: function(object) {
  -    return Object.extend({}, object);
  +    return Object.extend({ }, object);
  +  },
  +
  +  isElement: function(object) {
  +    return !!(object && object.nodeType == 1);
  +  },
  +
  +  isArray: function(object) {
  +    return object != null && typeof object == "object" &&
  +      'splice' in object && 'join' in object;
  +  },
  +
  +  isHash: function(object) {
  +    return object instanceof Hash;
  +  },
  +
  +  isFunction: function(object) {
  +    return typeof object == "function";
  +  },
  +
  +  isString: function(object) {
  +    return typeof object == "string";
  +  },
  +
  +  isNumber: function(object) {
  +    return typeof object == "number";
  +  },
  +
  +  isUndefined: function(object) {
  +    return typeof object == "undefined";
     }
   });
   
  -Function.prototype.bind = function() {
  -  var __method = this, args = $A(arguments), object = args.shift();
  -  return function() {
  -    return __method.apply(object, args.concat($A(arguments)));
  -  }
  -}
  +Object.extend(Function.prototype, {
  +  argumentNames: function() {
  +    var names = this.toString().match(/^[\s\(]*function[^(]*\(([^\)]*)\)/)[1]
  +      .replace(/\s+/g, '').split(',');
  +    return names.length == 1 && !names[0] ? [] : names;
  +  },
   
  -Function.prototype.bindAsEventListener = function(object) {
  -  var __method = this, args = $A(arguments), object = args.shift();
  -  return function(event) {
  -    return __method.apply(object, [( event || window.event)].concat(args).concat($A(arguments)));
  -  }
  -}
  +  bind: function() {
  +    if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this;
  +    var __method = this, args = $A(arguments), object = args.shift();
  +    return function() {
  +      return __method.apply(object, args.concat($A(arguments)));
  +    }
  +  },
   
  -Object.extend(Number.prototype, {
  -  toColorPart: function() {
  -    var digits = this.toString(16);
  -    if (this < 16) return '0' + digits;
  -    return digits;
  +  bindAsEventListener: function() {
  +    var __method = this, args = $A(arguments), object = args.shift();
  +    return function(event) {
  +      return __method.apply(object, [event || window.event].concat(args));
  +    }
     },
   
  -  succ: function() {
  -    return this + 1;
  +  curry: function() {
  +    if (!arguments.length) return this;
  +    var __method = this, args = $A(arguments);
  +    return function() {
  +      return __method.apply(this, args.concat($A(arguments)));
  +    }
     },
   
  -  times: function(iterator) {
  -    $R(0, this, true).each(iterator);
  -    return this;
  +  delay: function() {
  +    var __method = this, args = $A(arguments), timeout = args.shift() * 1000;
  +    return window.setTimeout(function() {
  +      return __method.apply(__method, args);
  +    }, timeout);
  +  },
  +
  +  defer: function() {
  +    var args = [0.01].concat($A(arguments));
  +    return this.delay.apply(this, args);
  +  },
  +
  +  wrap: function(wrapper) {
  +    var __method = this;
  +    return function() {
  +      return wrapper.apply(this, [__method.bind(this)].concat($A(arguments)));
  +    }
  +  },
  +
  +  methodize: function() {
  +    if (this._methodized) return this._methodized;
  +    var __method = this;
  +    return this._methodized = function() {
  +      return __method.apply(null, [this].concat($A(arguments)));
  +    };
     }
   });
   
  +Date.prototype.toJSON = function() {
  +  return '"' + this.getUTCFullYear() + '-' +
  +    (this.getUTCMonth() + 1).toPaddedString(2) + '-' +
  +    this.getUTCDate().toPaddedString(2) + 'T' +
  +    this.getUTCHours().toPaddedString(2) + ':' +
  +    this.getUTCMinutes().toPaddedString(2) + ':' +
  +    this.getUTCSeconds().toPaddedString(2) + 'Z"';
  +};
  +
   var Try = {
     these: function() {
       var returnValue;
   
  -    for (var i = 0; i < arguments.length; i++) {
  +    for (var i = 0, length = arguments.length; i < length; i++) {
         var lambda = arguments[i];
         try {
           returnValue = lambda();
           break;
  -      } catch (e) {}
  +      } catch (e) { }
       }
   
       return returnValue;
     }
  -}
  +};
  +
  +RegExp.prototype.match = RegExp.prototype.test;
  +
  +RegExp.escape = function(str) {
  +  return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1');
  +};
   
   /*--------------------------------------------------------------------------*/
   
  -var PeriodicalExecuter = Class.create();
  -PeriodicalExecuter.prototype = {
  +var PeriodicalExecuter = Class.create({
     initialize: function(callback, frequency) {
       this.callback = callback;
       this.frequency = frequency;
  @@ -128,6 +304,10 @@
       this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
     },
   
  +  execute: function() {
  +    this.callback(this);
  +  },
  +
     stop: function() {
       if (!this.timer) return;
       clearInterval(this.timer);
  @@ -138,13 +318,27 @@
       if (!this.currentlyExecuting) {
         try {
           this.currentlyExecuting = true;
  -        this.callback(this);
  +        this.execute();
         } finally {
           this.currentlyExecuting = false;
         }
       }
     }
  -}
  +});
  +Object.extend(String, {
  +  interpret: function(value) {
  +    return value == null ? '' : String(value);
  +  },
  +  specialChar: {
  +    '\b': '\\b',
  +    '\t': '\\t',
  +    '\n': '\\n',
  +    '\f': '\\f',
  +    '\r': '\\r',
  +    '\\': '\\\\'
  +  }
  +});
  +
   Object.extend(String.prototype, {
     gsub: function(pattern, replacement) {
       var result = '', source = this, match;
  @@ -153,7 +347,7 @@
       while (source.length > 0) {
         if (match = source.match(pattern)) {
           result += source.slice(0, match.index);
  -        result += (replacement(match) || '').toString();
  +        result += String.interpret(replacement(match));
           source  = source.slice(match.index + match[0].length);
         } else {
           result += source, source = '';
  @@ -164,7 +358,7 @@
   
     sub: function(pattern, replacement, count) {
       replacement = this.gsub.prepareReplacement(replacement);
  -    count = count === undefined ? 1 : count;
  +    count = Object.isUndefined(count) ? 1 : count;
   
       return this.gsub(pattern, function(match) {
         if (--count < 0) return match[0];
  @@ -174,14 +368,14 @@
   
     scan: function(pattern, iterator) {
       this.gsub(pattern, iterator);
  -    return this;
  +    return String(this);
     },
   
     truncate: function(length, truncation) {
       length = length || 30;
  -    truncation = truncation === undefined ? '...' : truncation;
  +    truncation = Object.isUndefined(truncation) ? '...' : truncation;
       return this.length > length ?
  -      this.slice(0, length - truncation.length) + truncation : this;
  +      this.slice(0, length - truncation.length) + truncation : String(this);
     },
   
     strip: function() {
  @@ -209,27 +403,36 @@
     },
   
     escapeHTML: function() {
  -    var div = document.createElement('div');
  -    var text = document.createTextNode(this);
  -    div.appendChild(text);
  -    return div.innerHTML;
  +    var self = arguments.callee;
  +    self.text.data = this;
  +    return self.div.innerHTML;
     },
   
     unescapeHTML: function() {
  -    var div = document.createElement('div');
  +    var div = new Element('div');
       div.innerHTML = this.stripTags();
  -    return div.childNodes[0] ? div.childNodes[0].nodeValue : '';
  -  },
  -
  -  toQueryParams: function() {
  -    var match = this.strip().match(/[^?]*$/)[0];
  -    if (!match) return {};
  -    var pairs = match.split('&');
  -    return pairs.inject({}, function(params, pairString) {
  -      var pair  = pairString.split('=');
  -      var value = pair[1] ? decodeURIComponent(pair[1]) : undefined;
  -      params[decodeURIComponent(pair[0])] = value;
  -      return params;
  +    return div.childNodes[0] ? (div.childNodes.length > 1 ?
  +      $A(div.childNodes).inject('', function(memo, node) { return memo+node.nodeValue }) :
  +      div.childNodes[0].nodeValue) : '';
  +  },
  +
  +  toQueryParams: function(separator) {
  +    var match = this.strip().match(/([^?#]*)(#.*)?$/);
  +    if (!match) return { };
  +
  +    return match[1].split(separator || '&').inject({ }, function(hash, pair) {
  +      if ((pair = pair.split('='))[0]) {
  +        var key = decodeURIComponent(pair.shift());
  +        var value = pair.length > 1 ? pair.join('=') : pair[0];
  +        if (value != undefined) value = decodeURIComponent(value);
  +
  +        if (key in hash) {
  +          if (!Object.isArray(hash[key])) hash[key] = [hash[key]];
  +          hash[key].push(value);
  +        }
  +        else hash[key] = value;
  +      }
  +      return hash;
       });
     },
   
  @@ -237,69 +440,166 @@
       return this.split('');
     },
   
  +  succ: function() {
  +    return this.slice(0, this.length - 1) +
  +      String.fromCharCode(this.charCodeAt(this.length - 1) + 1);
  +  },
  +
  +  times: function(count) {
  +    return count < 1 ? '' : new Array(count + 1).join(this);
  +  },
  +
     camelize: function() {
  -    var oStringList = this.split('-');
  -    if (oStringList.length == 1) return oStringList[0];
  +    var parts = this.split('-'), len = parts.length;
  +    if (len == 1) return parts[0];
   
  -    var camelizedString = this.indexOf('-') == 0
  -      ? oStringList[0].charAt(0).toUpperCase() + oStringList[0].substring(1)
  -      : oStringList[0];
  +    var camelized = this.charAt(0) == '-'
  +      ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1)
  +      : parts[0];
   
  -    for (var i = 1, length = oStringList.length; i < length; i++) {
  -      var s = oStringList[i];
  -      camelizedString += s.charAt(0).toUpperCase() + s.substring(1);
  -    }
  +    for (var i = 1; i < len; i++)
  +      camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1);
  +
  +    return camelized;
  +  },
  +
  +  capitalize: function() {
  +    return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase();
  +  },
  +
  +  underscore: function() {
  +    return this.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase();
  +  },
   
  -    return camelizedString;
  +  dasherize: function() {
  +    return this.gsub(/_/,'-');
     },
   
     inspect: function(useDoubleQuotes) {
  -    var escapedString = this.replace(/\\/g, '\\\\');
  -    if (useDoubleQuotes)
  -      return '"' + escapedString.replace(/"/g, '\\"') + '"';
  -    else
  -      return "'" + escapedString.replace(/'/g, '\\\'') + "'";
  +    var escapedString = this.gsub(/[\x00-\x1f\\]/, function(match) {
  +      var character = String.specialChar[match[0]];
  +      return character ? character : '\\u00' + match[0].charCodeAt().toPaddedString(2, 16);
  +    });
  +    if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"';
  +    return "'" + escapedString.replace(/'/g, '\\\'') + "'";
  +  },
  +
  +  toJSON: function() {
  +    return this.inspect(true);
  +  },
  +
  +  unfilterJSON: function(filter) {
  +    return this.sub(filter || Prototype.JSONFilter, '#{1}');
  +  },
  +
  +  isJSON: function() {
  +    var str = this;
  +    if (str.blank()) return false;
  +    str = this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, '');
  +    return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);
  +  },
  +
  +  evalJSON: function(sanitize) {
  +    var json = this.unfilterJSON();
  +    try {
  +      if (!sanitize || json.isJSON()) return eval('(' + json + ')');
  +    } catch (e) { }
  +    throw new SyntaxError('Badly formed JSON string: ' + this.inspect());
  +  },
  +
  +  include: function(pattern) {
  +    return this.indexOf(pattern) > -1;
  +  },
  +
  +  startsWith: function(pattern) {
  +    return this.indexOf(pattern) === 0;
  +  },
  +
  +  endsWith: function(pattern) {
  +    var d = this.length - pattern.length;
  +    return d >= 0 && this.lastIndexOf(pattern) === d;
  +  },
  +
  +  empty: function() {
  +    return this == '';
  +  },
  +
  +  blank: function() {
  +    return /^\s*$/.test(this);
  +  },
  +
  +  interpolate: function(object, pattern) {
  +    return new Template(this, pattern).evaluate(object);
  +  }
  +});
  +
  +if (Prototype.Browser.WebKit || Prototype.Browser.IE) Object.extend(String.prototype, {
  +  escapeHTML: function() {
  +    return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
  +  },
  +  unescapeHTML: function() {
  +    return this.stripTags().replace(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;/g,'>');
     }
   });
   
   String.prototype.gsub.prepareReplacement = function(replacement) {
  -  if (typeof replacement == 'function') return replacement;
  +  if (Object.isFunction(replacement)) return replacement;
     var template = new Template(replacement);
     return function(match) { return template.evaluate(match) };
  -}
  +};
   
   String.prototype.parseQuery = String.prototype.toQueryParams;
   
  -var Template = Class.create();
  -Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/;
  -Template.prototype = {
  +Object.extend(String.prototype.escapeHTML, {
  +  div:  document.createElement('div'),
  +  text: document.createTextNode('')
  +});
  +
  +String.prototype.escapeHTML.div.appendChild(String.prototype.escapeHTML.text);
  +
  +var Template = Class.create({
     initialize: function(template, pattern) {
       this.template = template.toString();
  -    this.pattern  = pattern || Template.Pattern;
  +    this.pattern = pattern || Template.Pattern;
     },
   
     evaluate: function(object) {
  +    if (Object.isFunction(object.toTemplateReplacements))
  +      object = object.toTemplateReplacements();
  +
       return this.template.gsub(this.pattern, function(match) {
  -      var before = match[1];
  +      if (object == null) return '';
  +
  +      var before = match[1] || '';
         if (before == '\\') return match[2];
  -      return before + (object[match[3]] || '').toString();
  +
  +      var ctx = object, expr = match[3];
  +      var pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;
  +      match = pattern.exec(expr);
  +      if (match == null) return before;
  +
  +      while (match != null) {
  +        var comp = match[1].startsWith('[') ? match[2].gsub('\\\\]', ']') : match[1];
  +        ctx = ctx[comp];
  +        if (null == ctx || '' == match[3]) break;
  +        expr = expr.substring('[' == match[3] ? match[1].length : match[0].length);
  +        match = pattern.exec(expr);
  +      }
  +
  +      return before + String.interpret(ctx);
       });
     }
  -}
  +});
  +Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/;
   
  -var $break    = new Object();
  -var $continue = new Object();
  +var $break = { };
   
   var Enumerable = {
  -  each: function(iterator) {
  +  each: function(iterator, context) {
       var index = 0;
       try {
         this._each(function(value) {
  -        try {
  -          iterator(value, index++);
  -        } catch (e) {
  -          if (e != $continue) throw e;
  -        }
  +        iterator.call(context, value, index++);
         });
       } catch (e) {
         if (e != $break) throw e;
  @@ -307,43 +607,47 @@
       return this;
     },
   
  -  eachSlice: function(number, iterator) {
  +  eachSlice: function(number, iterator, context) {
       var index = -number, slices = [], array = this.toArray();
  +    if (number < 1) return array;
       while ((index += number) < array.length)
         slices.push(array.slice(index, index+number));
  -    return slices.collect(iterator || Prototype.K);
  +    return slices.collect(iterator, context);
     },
   
  -  all: function(iterator) {
  +  all: function(iterator, context) {
  +    iterator = iterator || Prototype.K;
       var result = true;
       this.each(function(value, index) {
  -      result = result && !!(iterator || Prototype.K)(value, index);
  +      result = result && !!iterator.call(context, value, index);
         if (!result) throw $break;
       });
       return result;
     },
   
  -  any: function(iterator) {
  +  any: function(iterator, context) {
  +    iterator = iterator || Prototype.K;
       var result = false;
       this.each(function(value, index) {
  -      if (result = !!(iterator || Prototype.K)(value, index))
  +      if (result = !!iterator.call(context, value, index))
           throw $break;
       });
       return result;
     },
   
  -  collect: function(iterator) {
  +  collect: function(iterator, context) {
  +    iterator = iterator || Prototype.K;
       var results = [];
       this.each(function(value, index) {
  -      results.push(iterator(value, index));
  +      results.push(iterator.call(context, value, index));
       });
       return results;
     },
   
  -  detect: function(iterator) {
  +  detect: function(iterator, context) {
       var result;
       this.each(function(value, index) {
  -      if (iterator(value, index)) {
  +      if (iterator.call(context, value, index)) {
           result = value;
           throw $break;
         }
  @@ -351,26 +655,33 @@
       return result;
     },
   
  -  findAll: function(iterator) {
  +  findAll: function(iterator, context) {
       var results = [];
       this.each(function(value, index) {
  -      if (iterator(value, index))
  +      if (iterator.call(context, value, index))
           results.push(value);
       });
       return results;
     },
   
  -  grep: function(pattern, iterator) {
  +  grep: function(filter, iterator, context) {
  +    iterator = iterator || Prototype.K;
       var results = [];
  +
  +    if (Object.isString(filter))
  +      filter = new RegExp(filter);
  +
       this.each(function(value, index) {
  -      var stringValue = value.toString();
  -      if (stringValue.match(pattern))
  -        results.push((iterator || Prototype.K)(value, index));
  -    })
  +      if (filter.match(value))
  +        results.push(iterator.call(context, value, index));
  +    });
       return results;
     },
   
     include: function(object) {
  +    if (Object.isFunction(this.indexOf))
  +      if (this.indexOf(object) != -1) return true;
  +
       var found = false;
       this.each(function(value) {
         if (value == object) {
  @@ -382,52 +693,54 @@
     },
   
     inGroupsOf: function(number, fillWith) {
  -    fillWith = fillWith || null;
  -    var results = this.eachSlice(number);
  -    if (results.length > 0) (number - results.last().length).times(function() {
  -      results.last().push(fillWith)
  +    fillWith = Object.isUndefined(fillWith) ? null : fillWith;
  +    return this.eachSlice(number, function(slice) {
  +      while(slice.length < number) slice.push(fillWith);
  +      return slice;
       });
  -    return results;
     },
   
  -  inject: function(memo, iterator) {
  +  inject: function(memo, iterator, context) {
       this.each(function(value, index) {
  -      memo = iterator(memo, value, index);
  +      memo = iterator.call(context, memo, value, index);
       });
       return memo;
     },
   
     invoke: function(method) {
       var args = $A(arguments).slice(1);
  -    return this.collect(function(value) {
  +    return this.map(function(value) {
         return value[method].apply(value, args);
       });
     },
   
  -  max: function(iterator) {
  +  max: function(iterator, context) {
  +    iterator = iterator || Prototype.K;
       var result;
       this.each(function(value, index) {
  -      value = (iterator || Prototype.K)(value, index);
  -      if (result == undefined || value >= result)
  +      value = iterator.call(context, value, index);
  +      if (result == null || value >= result)
           result = value;
       });
       return result;
     },
   
  -  min: function(iterator) {
  +  min: function(iterator, context) {
  +    iterator = iterator || Prototype.K;
       var result;
       this.each(function(value, index) {
  -      value = (iterator || Prototype.K)(value, index);
  -      if (result == undefined || value < result)
  +      value = iterator.call(context, value, index);
  +      if (result == null || value < result)
           result = value;
       });
       return result;
     },
   
  -  partition: function(iterator) {
  +  partition: function(iterator, context) {
  +    iterator = iterator || Prototype.K;
       var trues = [], falses = [];
       this.each(function(value, index) {
  -      ((iterator || Prototype.K)(value, index) ?
  +      (iterator.call(context, value, index) ?
           trues : falses).push(value);
       });
       return [trues, falses];
  @@ -435,24 +748,27 @@
   
     pluck: function(property) {
       var results = [];
  -    this.each(function(value, index) {
  +    this.each(function(value) {
         results.push(value[property]);
       });
       return results;
     },
   
  -  reject: function(iterator) {
  +  reject: function(iterator, context) {
       var results = [];
       this.each(function(value, index) {
  -      if (!iterator(value, index))
  +      if (!iterator.call(context, value, index))
           results.push(value);
       });
       return results;
     },
   
  -  sortBy: function(iterator) {
  -    return this.collect(function(value, index) {
  -      return {value: value, criteria: iterator(value, index)};
  +  sortBy: function(iterator, context) {
  +    return this.map(function(value, index) {
  +      return {
  +        value: value,
  +        criteria: iterator.call(context, value, index)
  +      };
       }).sort(function(left, right) {
         var a = left.criteria, b = right.criteria;
         return a < b ? -1 : a > b ? 1 : 0;
  @@ -460,12 +776,12 @@
     },
   
     toArray: function() {
  -    return this.collect(Prototype.K);
  +    return this.map();
     },
   
     zip: function() {
       var iterator = Prototype.K, args = $A(arguments);
  -    if (typeof args.last() == 'function')
  +    if (Object.isFunction(args.last()))
         iterator = args.pop();
   
       var collections = [this].concat(args).map($A);
  @@ -474,34 +790,53 @@
       });
     },
   
  +  size: function() {
  +    return this.toArray().length;
  +  },
  +
     inspect: function() {
       return '#<Enumerable:' + this.toArray().inspect() + '>';
     }
  -}
  +};
   
   Object.extend(Enumerable, {
     map:     Enumerable.collect,
     find:    Enumerable.detect,
     select:  Enumerable.findAll,
  +  filter:  Enumerable.findAll,
     member:  Enumerable.include,
  -  entries: Enumerable.toArray
  +  entries: Enumerable.toArray,
  +  every:   Enumerable.all,
  +  some:    Enumerable.any
   });
  -var $A = Array.from = function(iterable) {
  +function $A(iterable) {
     if (!iterable) return [];
  -  if (iterable.toArray) {
  -    return iterable.toArray();
  -  } else {
  -    var results = [];
  -    for (var i = 0, length = iterable.length; i < length; i++)
  -      results.push(iterable[i]);
  +  if (iterable.toArray) return iterable.toArray();
  +  var length = iterable.length || 0, results = new Array(length);
  +  while (length--) results[length] = iterable[length];
  +  return results;
  +}
  +
  +if (Prototype.Browser.WebKit) {
  +  $A = function(iterable) {
  +    if (!iterable) return [];
  +    // In Safari, only use the `toArray` method if it's not a NodeList.
  +    // A NodeList is a function, has an function `item` property, and a numeric
  +    // `length` property. Adapted from Google Doctype.
  +    if (!(typeof iterable === 'function' && typeof iterable.length ===
  +        'number' && typeof iterable.item === 'function') && iterable.toArray)
  +      return iterable.toArray();
  +    var length = iterable.length || 0, results = new Array(length);
  +    while (length--) results[length] = iterable[length];
       return results;
  -  }
  +  };
   }
   
  +Array.from = $A;
  +
   Object.extend(Array.prototype, Enumerable);
   
  -if (!Array.prototype._reverse)
  -  Array.prototype._reverse = Array.prototype.reverse;
  +if (!Array.prototype._reverse) Array.prototype._reverse = Array.prototype.reverse;
   
   Object.extend(Array.prototype, {
     _each: function(iterator) {
  @@ -524,13 +859,13 @@
   
     compact: function() {
       return this.select(function(value) {
  -      return value != undefined || value != null;
  +      return value != null;
       });
     },
   
     flatten: function() {
       return this.inject([], function(array, value) {
  -      return array.concat(value && value.constructor == Array ?
  +      return array.concat(Object.isArray(value) ?
           value.flatten() : [value]);
       });
     },
  @@ -542,12 +877,6 @@
       });
     },
   
  -  indexOf: function(object) {
  -    for (var i = 0, length = this.length; i < length; i++)
  -      if (this[i] == object) return i;
  -    return -1;
  -  },
  -
     reverse: function(inline) {
       return (inline !== false ? this : this.toArray())._reverse();
     },
  @@ -556,9 +885,17 @@
       return this.length > 1 ? this : this[0];
     },
   
  -  uniq: function() {
  -    return this.inject([], function(array, value) {
  -      return array.include(value) ? array : array.concat([value]);
  +  uniq: function(sorted) {
  +    return this.inject([], function(array, value, index) {
  +      if (0 == index || (sorted ? array.last() != value : !array.include(value)))
  +        array.push(value);
  +      return array;
  +    });
  +  },
  +
  +  intersect: function(array) {
  +    return this.uniq().findAll(function(item) {
  +      return array.detect(function(value) { return item === value });
       });
     },
   
  @@ -566,64 +903,195 @@
       return [].concat(this);
     },
   
  +  size: function() {
  +    return this.length;
  +  },
  +
     inspect: function() {
       return '[' + this.map(Object.inspect).join(', ') + ']';
  +  },
  +
  +  toJSON: function() {
  +    var results = [];
  +    this.each(function(object) {
  +      var value = Object.toJSON(object);
  +      if (!Object.isUndefined(value)) results.push(value);
  +    });
  +    return '[' + results.join(', ') + ']';
     }
   });
   
  +// use native browser JS 1.6 implementation if available
  +if (Object.isFunction(Array.prototype.forEach))
  +  Array.prototype._each = Array.prototype.forEach;
  +
  +if (!Array.prototype.indexOf) Array.prototype.indexOf = function(item, i) {
  +  i || (i = 0);
  +  var length = this.length;
  +  if (i < 0) i = length + i;
  +  for (; i < length; i++)
  +    if (this[i] === item) return i;
  +  return -1;
  +};
  +
  +if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf = function(item, i) {
  +  i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1;
  +  var n = this.slice(0, i).reverse().indexOf(item);
  +  return (n < 0) ? n : i - n - 1;
  +};
  +
   Array.prototype.toArray = Array.prototype.clone;
  -var Hash = {
  -  _each: function(iterator) {
  -    for (var key in this) {
  -      var value = this[key];
  -      if (typeof value == 'function') continue;
   
  -      var pair = [key, value];
  -      pair.key = key;
  -      pair.value = value;
  -      iterator(pair);
  -    }
  -  },
  +function $w(string) {
  +  if (!Object.isString(string)) return [];
  +  string = string.strip();
  +  return string ? string.split(/\s+/) : [];
  +}
   
  -  keys: function() {
  -    return this.pluck('key');
  +if (Prototype.Browser.Opera){
  +  Array.prototype.concat = function() {
  +    var array = [];
  +    for (var i = 0, length = this.length; i < length; i++) array.push(this[i]);
  +    for (var i = 0, length = arguments.length; i < length; i++) {
  +      if (Object.isArray(arguments[i])) {
  +        for (var j = 0, arrayLength = arguments[i].length; j < arrayLength; j++)
  +          array.push(arguments[i][j]);
  +      } else {
  +        array.push(arguments[i]);
  +      }
  +    }
  +    return array;
  +  };
  +}
  +Object.extend(Number.prototype, {
  +  toColorPart: function() {
  +    return this.toPaddedString(2, 16);
     },
   
  -  values: function() {
  -    return this.pluck('value');
  +  succ: function() {
  +    return this + 1;
     },
   
  -  merge: function(hash) {
  -    return $H(hash).inject(this, function(mergedHash, pair) {
  -      mergedHash[pair.key] = pair.value;
  -      return mergedHash;
  -    });
  +  times: function(iterator, context) {
  +    $R(0, this, true).each(iterator, context);
  +    return this;
     },
   
  -  toQueryString: function() {
  -    return this.map(function(pair) {
  -      if (!pair.value && pair.value !== 0) pair[1] = '';
  -      if (!pair.key) return;
  -      return pair.map(encodeURIComponent).join('=');
  -    }).join('&');
  +  toPaddedString: function(length, radix) {
  +    var string = this.toString(radix || 10);
  +    return '0'.times(length - string.length) + string;
     },
   
  -  inspect: function() {
  -    return '#<Hash:{' + this.map(function(pair) {
  -      return pair.map(Object.inspect).join(': ');
  -    }).join(', ') + '}>';
  +  toJSON: function() {
  +    return isFinite(this) ? this.toString() : 'null';
     }
  -}
  +});
   
  +$w('abs round ceil floor').each(function(method){
  +  Number.prototype[method] = Math[method].methodize();
  +});
   function $H(object) {
  -  var hash = Object.extend({}, object || {});
  -  Object.extend(hash, Enumerable);
  -  Object.extend(hash, Hash);
  -  return hash;
  -}
  -ObjectRange = Class.create();
  -Object.extend(ObjectRange.prototype, Enumerable);
  -Object.extend(ObjectRange.prototype, {
  +  return new Hash(object);
  +};
  +
  +var Hash = Class.create(Enumerable, (function() {
  +
  +  function toQueryPair(key, value) {
  +    if (Object.isUndefined(value)) return key;
  +    return key + '=' + encodeURIComponent(String.interpret(value));
  +  }
  +
  +  return {
  +    initialize: function(object) {
  +      this._object = Object.isHash(object) ? object.toObject() : Object.clone(object);
  +    },
  +
  +    _each: function(iterator) {
  +      for (var key in this._object) {
  +        var value = this._object[key], pair = [key, value];
  +        pair.key = key;
  +        pair.value = value;
  +        iterator(pair);
  +      }
  +    },
  +
  +    set: function(key, value) {
  +      return this._object[key] = value;
  +    },
  +
  +    get: function(key) {
  +      // simulating poorly supported hasOwnProperty
  +      if (this._object[key] !== Object.prototype[key])
  +        return this._object[key];
  +    },
  +
  +    unset: function(key) {
  +      var value = this._object[key];
  +      delete this._object[key];
  +      return value;
  +    },
  +
  +    toObject: function() {
  +      return Object.clone(this._object);
  +    },
  +
  +    keys: function() {
  +      return this.pluck('key');
  +    },
  +
  +    values: function() {
  +      return this.pluck('value');
  +    },
  +
  +    index: function(value) {
  +      var match = this.detect(function(pair) {
  +        return pair.value === value;
  +      });
  +      return match && match.key;
  +    },
  +
  +    merge: function(object) {
  +      return this.clone().update(object);
  +    },
  +
  +    update: function(object) {
  +      return new Hash(object).inject(this, function(result, pair) {
  +        result.set(pair.key, pair.value);
  +        return result;
  +      });
  +    },
  +
  +    toQueryString: function() {
  +      return this.inject([], function(results, pair) {
  +        var key = encodeURIComponent(pair.key), values = pair.value;
  +
  +        if (values && typeof values == 'object') {
  +          if (Object.isArray(values))
  +            return results.concat(values.map(toQueryPair.curry(key)));
  +        } else results.push(toQueryPair(key, values));
  +        return results;
  +      }).join('&');
  +    },
  +
  +    inspect: function() {
  +      return '#<Hash:{' + this.map(function(pair) {
  +        return pair.map(Object.inspect).join(': ');
  +      }).join(', ') + '}>';
  +    },
  +
  +    toJSON: function() {
  +      return Object.toJSON(this.toObject());
  +    },
  +
  +    clone: function() {
  +      return new Hash(this);
  +    }
  +  }
  +})());
  +
  +Hash.prototype.toTemplateReplacements = Hash.prototype.toObject;
  +Hash.from = $H;
  +var ObjectRange = Class.create(Enumerable, {
     initialize: function(start, end, exclusive) {
       this.start = start;
       this.end = end;
  @@ -649,7 +1117,7 @@
   
   var $R = function(start, end, exclusive) {
     return new ObjectRange(start, end, exclusive);
  -}
  +};
   
   var Ajax = {
     getTransport: function() {
  @@ -661,7 +1129,7 @@
     },
   
     activeRequestCount: 0
  -}
  +};
   
   Ajax.Responders = {
     responders: [],
  @@ -681,10 +1149,10 @@
   
     dispatch: function(callback, request, transport, json) {
       this.each(function(responder) {
  -      if (typeof responder[callback] == 'function') {
  +      if (Object.isFunction(responder[callback])) {
           try {
             responder[callback].apply(responder, [request, transport, json]);
  -        } catch (e) {}
  +        } catch (e) { }
         }
       });
     }
  @@ -693,81 +1161,82 @@
   Object.extend(Ajax.Responders, Enumerable);
   
   Ajax.Responders.register({
  -  onCreate: function() {
  -    Ajax.activeRequestCount++;
  -  },
  -  onComplete: function() {
  -    Ajax.activeRequestCount--;
  -  }
  +  onCreate:   function() { Ajax.activeRequestCount++ },
  +  onComplete: function() { Ajax.activeRequestCount-- }
   });
   
  -Ajax.Base = function() {};
  -Ajax.Base.prototype = {
  -  setOptions: function(options) {
  +Ajax.Base = Class.create({
  +  initialize: function(options) {
       this.options = {
         method:       'post',
         asynchronous: true,
         contentType:  'application/x-www-form-urlencoded',
         encoding:     'UTF-8',
  -      parameters:   ''
  -    }
  -    Object.extend(this.options, options || {});
  +      parameters:   '',
  +      evalJSON:     true,
  +      evalJS:       true
  +    };
  +    Object.extend(this.options, options || { });
   
       this.options.method = this.options.method.toLowerCase();
  -    this.options.parameters = $H(typeof this.options.parameters == 'string' ?
  -      this.options.parameters.toQueryParams() : this.options.parameters);
  +
  +    if (Object.isString(this.options.parameters))
  +      this.options.parameters = this.options.parameters.toQueryParams();
  +    else if (Object.isHash(this.options.parameters))
  +      this.options.parameters = this.options.parameters.toObject();
     }
  -}
  +});
   
  -Ajax.Request = Class.create();
  -Ajax.Request.Events =
  -  ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];
  +Ajax.Request = Class.create(Ajax.Base, {
  +  _complete: false,
   
  -Ajax.Request.prototype = Object.extend(new Ajax.Base(), {
  -  initialize: function(url, options) {
  +  initialize: function($super, url, options) {
  +    $super(options);
       this.transport = Ajax.getTransport();
  -    this.setOptions(options);
       this.request(url);
     },
   
     request: function(url) {
  -    var params = this.options.parameters;
  -    if (params.any()) params['_'] = '';
  +    this.url = url;
  +    this.method = this.options.method;
  +    var params = Object.clone(this.options.parameters);
   
  -    if (!['get', 'post'].include(this.options.method)) {
  +    if (!['get', 'post'].include(this.method)) {
         // simulate other verbs over post
  -      params['_method'] = this.options.method;
  -      this.options.method = 'post';
  +      params['_method'] = this.method;
  +      this.method = 'post';
       }
   
  -    this.url = url;
  +    this.parameters = params;
   
  -    // when GET, append parameters to URL
  -    if (this.options.method == 'get' && params.any())
  -      this.url += (this.url.indexOf('?') >= 0 ? '&' : '?') +
  -        params.toQueryString();
  +    if (params = Object.toQueryString(params)) {
  +      // when GET, append parameters to URL
  +      if (this.method == 'get')
  +        this.url += (this.url.include('?') ? '&' : '?') + params;
  +      else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent))
  +        params += '&_=';
  +    }
   
       try {
  -      Ajax.Responders.dispatch('onCreate', this, this.transport);
  +      var response = new Ajax.Response(this);
  +      if (this.options.onCreate) this.options.onCreate(response);
  +      Ajax.Responders.dispatch('onCreate', this, response);
   
  -      this.transport.open(this.options.method.toUpperCase(), this.url,
  -        this.options.asynchronous, this.options.username,
  -        this.options.password);
  +      this.transport.open(this.method.toUpperCase(), this.url,
  +        this.options.asynchronous);
   
  -      if (this.options.asynchronous)
  -        setTimeout(function() { this.respondToReadyState(1) }.bind(this), 10);
  +      if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1);
   
         this.transport.onreadystatechange = this.onStateChange.bind(this);
         this.setRequestHeaders();
   
  -      var body = this.options.method == 'post' ?
  -        (this.options.postBody || params.toQueryString()) : null;
  -
  -      this.transport.send(body);
  +      this.body = this.method == 'post' ? (this.options.postBody || params) : null;
  +      this.transport.send(this.body);
   
         /* Force Firefox to handle ready state 4 for synchronous requests */
         if (!this.options.asynchronous && this.transport.overrideMimeType)
           this.onStateChange();
  +
       }
       catch (e) {
         this.dispatchException(e);
  @@ -776,7 +1245,7 @@
   
     onStateChange: function() {
       var readyState = this.transport.readyState;
  -    if (readyState > 1)
  +    if (readyState > 1 && !((readyState == 4) && this._complete))
         this.respondToReadyState(this.transport.readyState);
     },
   
  @@ -787,7 +1256,7 @@
         'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'
       };
   
  -    if (this.options.method == 'post') {
  +    if (this.method == 'post') {
         headers['Content-type'] = this.options.contentType +
           (this.options.encoding ? '; charset=' + this.options.encoding : '');
   
  @@ -804,8 +1273,8 @@
       if (typeof this.options.requestHeaders == 'object') {
         var extras = this.options.requestHeaders;
   
  -      if (typeof extras.push == 'function')
  -        for (var i = 0; i < extras.length; i += 2)
  +      if (Object.isFunction(extras.push))
  +        for (var i = 0, length = extras.length; i < length; i += 2)
             headers[extras[i]] = extras[i+1];
         else
           $H(extras).each(function(pair) { headers[pair.key] = pair.value });
  @@ -816,57 +1285,67 @@
     },
   
     success: function() {
  -    return !this.transport.status
  -        || (this.transport.status >= 200 && this.transport.status < 300);
  +    var status = this.getStatus();
  +    return !status || (status >= 200 && status < 300);
  +  },
  +
  +  getStatus: function() {
  +    try {
  +      return this.transport.status || 0;
  +    } catch (e) { return 0 }
     },
   
     respondToReadyState: function(readyState) {
  -    var state = Ajax.Request.Events[readyState];
  -    var transport = this.transport, json = this.evalJSON();
  +    var state = Ajax.Request.Events[readyState], response = new Ajax.Response(this);
   
       if (state == 'Complete') {
         try {
  -        (this.options['on' + this.transport.status]
  +        this._complete = true;
  +        (this.options['on' + response.status]
            || this.options['on' + (this.success() ? 'Success' : 'Failure')]
  -         || Prototype.emptyFunction)(transport, json);
  +         || Prototype.emptyFunction)(response, response.headerJSON);
         } catch (e) {
           this.dispatchException(e);
         }
  +
  +      var contentType = response.getHeader('Content-type');
  +      if (this.options.evalJS == 'force'
  +          || (this.options.evalJS && this.isSameOrigin() && contentType
  +          && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i)))
  +        this.evalResponse();
       }
   
       try {
  -      (this.options['on' + state] || Prototype.emptyFunction)(transport, json);
  -      Ajax.Responders.dispatch('on' + state, this, transport, json);
  +      (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON);
  +      Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON);
       } catch (e) {
         this.dispatchException(e);
       }
   
       if (state == 'Complete') {
  -      if ((this.getHeader('Content-type') || '').strip().
  -        match(/^(text|application)\/(x-)?(java|ecma)script(;.*)?$/i))
  -          this.evalResponse();
  -
         // avoid memory leak in MSIE: clean up
         this.transport.onreadystatechange = Prototype.emptyFunction;
       }
     },
   
  -  getHeader: function(name) {
  -    try {
  -      return this.transport.getResponseHeader(name);
  -    } catch (e) { return null }
  +  isSameOrigin: function() {
  +    var m = this.url.match(/^\s*https?:\/\/[^\/]*/);
  +    return !m || (m[0] == '#{protocol}//#{domain}#{port}'.interpolate({
  +      protocol: location.protocol,
  +      domain: document.domain,
  +      port: location.port ? ':' + location.port : ''
  +    }));
     },
   
  -  evalJSON: function() {
  +  getHeader: function(name) {
       try {
  -      var json = this.getHeader('X-JSON');
  -      return json ? eval('(' + json + ')') : null;
  +      return this.transport.getResponseHeader(name) || null;
       } catch (e) { return null }
     },
   
     evalResponse: function() {
       try {
  -      return eval(this.transport.responseText);
  +      return eval((this.transport.responseText || '').unfilterJSON());
       } catch (e) {
         this.dispatchException(e);
       }
  @@ -878,57 +1357,128 @@
     }
   });
   
  -Ajax.Updater = Class.create();
  -
  -Object.extend(Object.extend(Ajax.Updater.prototype, Ajax.Request.prototype), {
  -  initialize: function(container, url, options) {
  +Ajax.Request.Events =
  +  ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];
  +
  +Ajax.Response = Class.create({
  +  initialize: function(request){
  +    this.request = request;
  +    var transport  = this.transport  = request.transport,
  +        readyState = this.readyState = transport.readyState;
  +
  +    if((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) {
  +      this.status       = this.getStatus();
  +      this.statusText   = this.getStatusText();
  +      this.responseText = String.interpret(transport.responseText);
  +      this.headerJSON   = this._getHeaderJSON();
  +    }
  +
  +    if(readyState == 4) {
  +      var xml = transport.responseXML;
  +      this.responseXML  = Object.isUndefined(xml) ? null : xml;
  +      this.responseJSON = this._getResponseJSON();
  +    }
  +  },
  +
  +  status:      0,
  +  statusText: '',
  +
  +  getStatus: Ajax.Request.prototype.getStatus,
  +
  +  getStatusText: function() {
  +    try {
  +      return this.transport.statusText || '';
  +    } catch (e) { return '' }
  +  },
  +
  +  getHeader: Ajax.Request.prototype.getHeader,
  +
  +  getAllHeaders: function() {
  +    try {
  +      return this.getAllResponseHeaders();
  +    } catch (e) { return null }
  +  },
  +
  +  getResponseHeader: function(name) {
  +    return this.transport.getResponseHeader(name);
  +  },
  +
  +  getAllResponseHeaders: function() {
  +    return this.transport.getAllResponseHeaders();
  +  },
  +
  +  _getHeaderJSON: function() {
  +    var json = this.getHeader('X-JSON');
  +    if (!json) return null;
  +    json = decodeURIComponent(escape(json));
  +    try {
  +      return json.evalJSON(this.request.options.sanitizeJSON ||
  +        !this.request.isSameOrigin());
  +    } catch (e) {
  +      this.request.dispatchException(e);
  +    }
  +  },
  +
  +  _getResponseJSON: function() {
  +    var options = this.request.options;
  +    if (!options.evalJSON || (options.evalJSON != 'force' &&
  +      !(this.getHeader('Content-type') || '').include('application/json')) ||
  +        this.responseText.blank())
  +          return null;
  +    try {
  +      return this.responseText.evalJSON(options.sanitizeJSON ||
  +        !this.request.isSameOrigin());
  +    } catch (e) {
  +      this.request.dispatchException(e);
  +    }
  +  }
  +});
  +
  +Ajax.Updater = Class.create(Ajax.Request, {
  +  initialize: function($super, container, url, options) {
       this.container = {
         success: (container.success || container),
         failure: (container.failure || (container.success ? null : container))
  -    }
  -
  -    this.transport = Ajax.getTransport();
  -    this.setOptions(options);
  +    };
   
  -    var onComplete = this.options.onComplete || Prototype.emptyFunction;
  -    this.options.onComplete = (function(transport, param) {
  -      this.updateContent();
  -      onComplete(transport, param);
  +    options = Object.clone(options);
  +    var onComplete = options.onComplete;
  +    options.onComplete = (function(response, json) {
  +      this.updateContent(response.responseText);
  +      if (Object.isFunction(onComplete)) onComplete(response, json);
       }).bind(this);
   
  -    this.request(url);
  +    $super(url, options);
     },
   
  -  updateContent: function() {
  -    var receiver = this.container[this.success() ? 'success' : 'failure'];
  -    var response = this.transport.responseText;
  +  updateContent: function(responseText) {
  +    var receiver = this.container[this.success() ? 'success' : 'failure'],
  +        options = this.options;
   
  -    if (!this.options.evalScripts) response = response.stripScripts();
  +    if (!options.evalScripts) responseText = responseText.stripScripts();
   
       if (receiver = $(receiver)) {
  -      if (this.options.insertion)
  -        new this.options.insertion(receiver, response);
  -      else
  -        receiver.update(response);
  -    }
  -
  -    if (this.success()) {
  -      if (this.onComplete)
  -        setTimeout(this.onComplete.bind(this), 10);
  +      if (options.insertion) {
  +        if (Object.isString(options.insertion)) {
  +          var insertion = { }; insertion[options.insertion] = responseText;
  +          receiver.insert(insertion);
  +        }
  +        else options.insertion(receiver, responseText);
  +      }
  +      else receiver.update(responseText);
       }
     }
   });
   
  -Ajax.PeriodicalUpdater = Class.create();
  -Ajax.PeriodicalUpdater.prototype = Object.extend(new Ajax.Base(), {
  -  initialize: function(container, url, options) {
  -    this.setOptions(options);
  +Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {
  +  initialize: function($super, container, url, options) {
  +    $super(options);
       this.onComplete = this.options.onComplete;
   
       this.frequency = (this.options.frequency || 2);
       this.decay = (this.options.decay || 1);
   
  -    this.updater = {};
  +    this.updater = { };
       this.container = container;
       this.url = url;
   
  @@ -946,15 +1496,14 @@
       (this.onComplete || Prototype.emptyFunction).apply(this, arguments);
     },
   
  -  updateComplete: function(request) {
  +  updateComplete: function(response) {
       if (this.options.decay) {
  -      this.decay = (request.responseText == this.lastText ?
  +      this.decay = (response.responseText == this.lastText ?
           this.decay * this.options.decay : 1);
   
  -      this.lastText = request.responseText;
  +      this.lastText = response.responseText;
       }
  -    this.timer = setTimeout(this.onTimerEvent.bind(this),
  -      this.decay * this.frequency * 1000);
  +    this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency);
     },
   
     onTimerEvent: function() {
  @@ -967,7 +1516,7 @@
         elements.push($(arguments[i]));
       return elements;
     }
  -  if (typeof element == 'string')
  +  if (Object.isString(element))
       element = document.getElementById(element);
     return Element.extend(element);
   }
  @@ -977,70 +1526,53 @@
       var results = [];
       var query = document.evaluate(expression, $(parentElement) || document,
         null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
  -    for (var i = 0, len = query.snapshotLength; i < len; i++)
  -      results.push(query.snapshotItem(i));
  +    for (var i = 0, length = query.snapshotLength; i < length; i++)
  +      results.push(Element.extend(query.snapshotItem(i)));
       return results;
  -  }
  -}
  -
  -document.getElementsByClassName = function(className, parentElement) {
  -  if (Prototype.BrowserFeatures.XPath) {
  -    var q = ".//*[contains(concat(' ', @class, ' '), ' " + className + " ')]";
  -    return document._getElementsByXPath(q, parentElement);
  -  } else {
  -    var children = ($(parentElement) || document.body).getElementsByTagName('*');
  -    var elements = [], child;
  -    for (var i = 0, length = children.length; i < length; i++) {
  -      child = children[i];
  -      if (Element.hasClassName(child, className))
  -        elements.push(Element.extend(child));
  -    }
  -    return elements;
  -  }
  +  };
   }
   
   /*--------------------------------------------------------------------------*/
   
  -if (!window.Element)
  -  var Element = new Object();
  -
  -Element.extend = function(element) {
  -  if (!element) return;
  -  if (_nativeExtensions || element.nodeType == 3) return element;
  -
  -  if (!element._extended && element.tagName && element != window) {
  -    var methods = Object.clone(Element.Methods), cache = Element.extend.cache;
  -
  -    if (element.tagName == 'FORM')
  -      Object.extend(methods, Form.Methods);
  -    if (['INPUT', 'TEXTAREA', 'SELECT'].include(element.tagName))
  -      Object.extend(methods, Form.Element.Methods);
  -
  -    for (var property in methods) {
  -      var value = methods[property];
  -      if (typeof value == 'function')
  -        element[property] = cache.findOrStore(value);
  -    }
  -
  -    var methods = Object.clone(Element.Methods.Simulated), cache = Element.extend.cache;
  -    for (var property in methods) {
  -      var value = methods[property];
  -      if ('function' == typeof value && !(property in element))
  -        element[property] = cache.findOrStore(value);
  -    }
  -  }
  +if (!window.Node) var Node = { };
   
  -  element._extended = true;
  -  return element;
  +if (!Node.ELEMENT_NODE) {
  +  // DOM level 2 ECMAScript Language Binding
  +  Object.extend(Node, {
  +    ELEMENT_NODE: 1,
  +    ATTRIBUTE_NODE: 2,
  +    TEXT_NODE: 3,
  +    CDATA_SECTION_NODE: 4,
  +    ENTITY_REFERENCE_NODE: 5,
  +    ENTITY_NODE: 6,
  +    PROCESSING_INSTRUCTION_NODE: 7,
  +    COMMENT_NODE: 8,
  +    DOCUMENT_NODE: 9,
  +    DOCUMENT_TYPE_NODE: 10,
  +    DOCUMENT_FRAGMENT_NODE: 11,
  +    NOTATION_NODE: 12
  +  });
   }
   
  -Element.extend.cache = {
  -  findOrStore: function(value) {
  -    return this[value] = this[value] || function() {
  -      return value.apply(null, [this].concat($A(arguments)));
  -    }
  -  }
  -}
  +(function() {
  +  var element = this.Element;
  +  this.Element = function(tagName, attributes) {
  +    attributes = attributes || { };
  +    tagName = tagName.toLowerCase();
  +    var cache = Element.cache;
  +    if (Prototype.Browser.IE && attributes.name) {
  +      tagName = '<' + tagName + ' name="' + attributes.name + '">';
  +      delete attributes.name;
  +      return Element.writeAttribute(document.createElement(tagName), attributes);
  +    }
  +    if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName));
  +    return Element.writeAttribute(cache[tagName].cloneNode(false), attributes);
  +  };
  +  Object.extend(this.Element, element || { });
  +  if (element) this.Element.prototype = element.prototype;
  +}).call(window);
  +
  +Element.cache = { };
   
   Element.Methods = {
     visible: function(element) {
  @@ -1054,12 +1586,14 @@
     },
   
     hide: function(element) {
  -    $(element).style.display = 'none';
  +    element = $(element);
  +    element.style.display = 'none';
       return element;
     },
   
     show: function(element) {
  -    $(element).style.display = '';
  +    element = $(element);
  +    element.style.display = '';
       return element;
     },
   
  @@ -1069,27 +1603,78 @@
       return element;
     },
   
  -  update: function(element, html) {
  -    html = typeof html == 'undefined' ? '' : html.toString();
  -    $(element).innerHTML = html.stripScripts();
  -    setTimeout(function() {html.evalScripts()}, 10);
  +  update: function(element, content) {
  +    element = $(element);
  +    if (content && content.toElement) content = content.toElement();
  +    if (Object.isElement(content)) return element.update().insert(content);
  +    content = Object.toHTML(content);
  +    element.innerHTML = content.stripScripts();
  +    content.evalScripts.bind(content).defer();
       return element;
     },
   
  -  replace: function(element, html) {
  +  replace: function(element, content) {
       element = $(element);
  -    if (element.outerHTML) {
  -      element.outerHTML = html.stripScripts();
  -    } else {
  +    if (content && content.toElement) content = content.toElement();
  +    else if (!Object.isElement(content)) {
  +      content = Object.toHTML(content);
         var range = element.ownerDocument.createRange();
  -      range.selectNodeContents(element);
  -      element.parentNode.replaceChild(
  -        range.createContextualFragment(html.stripScripts()), element);
  +      range.selectNode(element);
  +      content.evalScripts.bind(content).defer();
  +      content = range.createContextualFragment(content.stripScripts());
  +    }
  +    element.parentNode.replaceChild(content, element);
  +    return element;
  +  },
  +
  +  insert: function(element, insertions) {
  +    element = $(element);
  +
  +    if (Object.isString(insertions) || Object.isNumber(insertions) ||
  +        Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML)))
  +          insertions = {bottom:insertions};
  +
  +    var content, insert, tagName, childNodes;
  +
  +    for (var position in insertions) {
  +      content  = insertions[position];
  +      position = position.toLowerCase();
  +      insert = Element._insertionTranslations[position];
  +
  +      if (content && content.toElement) content = content.toElement();
  +      if (Object.isElement(content)) {
  +        insert(element, content);
  +        continue;
  +      }
  +
  +      content = Object.toHTML(content);
  +
  +      tagName = ((position == 'before' || position == 'after')
  +        ? element.parentNode : element).tagName.toUpperCase();
  +
  +      childNodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts());
  +
  +      if (position == 'top' || position == 'after') childNodes.reverse();
  +      childNodes.each(insert.curry(element));
  +
  +      content.evalScripts.bind(content).defer();
       }
  -    setTimeout(function() {html.evalScripts()}, 10);
  +
       return element;
     },
   
  +  wrap: function(element, wrapper, attributes) {
  +    element = $(element);
  +    if (Object.isElement(wrapper))
  +      $(wrapper).writeAttribute(attributes || { });
  +    else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes);
  +    else wrapper = new Element('div', wrapper);
  +    if (element.parentNode)
  +      element.parentNode.replaceChild(wrapper, element);
  +    wrapper.appendChild(element);
  +    return wrapper;
  +  },
  +
     inspect: function(element) {
       element = $(element);
       var result = '<' + element.tagName.toLowerCase();
  @@ -1115,8 +1700,20 @@
     },
   
     descendants: function(element) {
  -    element = $(element);
  -    return $A(element.getElementsByTagName('*'));
  +    return $(element).select("*");
  +  },
  +
  +  firstDescendant: function(element) {
  +    element = $(element).firstChild;
  +    while (element && element.nodeType != 1) element = element.nextSibling;
  +    return $(element);
  +  },
  +
  +  immediateDescendants: function(element) {
  +    if (!(element = $(element).firstChild)) return [];
  +    while (element && element.nodeType != 1) element = element.nextSibling;
  +    if (element) return [element].concat($(element).nextSiblings());
  +    return [];
     },
   
     previousSiblings: function(element) {
  @@ -1133,41 +1730,101 @@
     },
   
     match: function(element, selector) {
  -    element = $(element);
  -    if (typeof selector == 'string')
  +    if (Object.isString(selector))
         selector = new Selector(selector);
  -    return selector.match(element);
  +    return selector.match($(element));
     },
   
     up: function(element, expression, index) {
  -    return Selector.findElement($(element).ancestors(), expression, index);
  +    element = $(element);
  +    if (arguments.length == 1) return $(element.parentNode);
  +    var ancestors = element.ancestors();
  +    return Object.isNumber(expression) ? ancestors[expression] :
  +      Selector.findElement(ancestors, expression, index);
     },
   
     down: function(element, expression, index) {
  -    return Selector.findElement($(element).descendants(), expression, index);
  +    element = $(element);
  +    if (arguments.length == 1) return element.firstDescendant();
  +    return Object.isNumber(expression) ? element.descendants()[expression] :
  +      Element.select(element, expression)[index || 0];
     },
   
     previous: function(element, expression, index) {
  -    return Selector.findElement($(element).previousSiblings(), expression, index);
  +    element = $(element);
  +    if (arguments.length == 1) return $(Selector.handlers.previousElementSibling(element));
  +    var previousSiblings = element.previousSiblings();
  +    return Object.isNumber(expression) ? previousSiblings[expression] :
  +      Selector.findElement(previousSiblings, expression, index);
     },
   
     next: function(element, expression, index) {
  -    return Selector.findElement($(element).nextSiblings(), expression, index);
  +    element = $(element);
  +    if (arguments.length == 1) return $(Selector.handlers.nextElementSibling(element));
  +    var nextSiblings = element.nextSiblings();
  +    return Object.isNumber(expression) ? nextSiblings[expression] :
  +      Selector.findElement(nextSiblings, expression, index);
     },
   
  -  getElementsBySelector: function() {
  +  select: function() {
       var args = $A(arguments), element = $(args.shift());
       return Selector.findChildElements(element, args);
     },
   
  -  getElementsByClassName: function(element, className) {
  +  adjacent: function() {
  +    var args = $A(arguments), element = $(args.shift());
  +    return Selector.findChildElements(element.parentNode, args).without(element);
  +  },
  +
  +  identify: function(element) {
       element = $(element);
  -    return document.getElementsByClassName(className, element);
  +    var id = element.readAttribute('id'), self = arguments.callee;
  +    if (id) return id;
  +    do { id = 'anonymous_element_' + self.counter++ } while ($(id));
  +    element.writeAttribute('id', id);
  +    return id;
     },
   
  -  getHeight: function(element) {
  +  readAttribute: function(element, name) {
  +    element = $(element);
  +    if (Prototype.Browser.IE) {
  +      var t = Element._attributeTranslations.read;
  +      if (t.values[name]) return t.values[name](element, name);
  +      if (t.names[name]) name = t.names[name];
  +      if (name.include(':')) {
  +        return (!element.attributes || !element.attributes[name]) ? null :
  +         element.attributes[name].value;
  +      }
  +    }
  +    return element.getAttribute(name);
  +  },
  +
  +  writeAttribute: function(element, name, value) {
       element = $(element);
  -    return element.offsetHeight;
  +    var attributes = { }, t = Element._attributeTranslations.write;
  +
  +    if (typeof name == 'object') attributes = name;
  +    else attributes[name] = Object.isUndefined(value) ? true : value;
  +
  +    for (var attr in attributes) {
  +      name = t.names[attr] || attr;
  +      value = attributes[attr];
  +      if (t.values[attr]) name = t.values[attr](element, value);
  +      if (value === false || value === null)
  +        element.removeAttribute(name);
  +      else if (value === true)
  +        element.setAttribute(name, name);
  +      else element.setAttribute(name, value);
  +    }
  +    return element;
  +  },
  +
  +  getHeight: function(element) {
  +    return $(element).getDimensions().height;
  +  },
  +
  +  getWidth: function(element) {
  +    return $(element).getDimensions().width;
     },
   
     classNames: function(element) {
  @@ -1177,33 +1834,28 @@
     hasClassName: function(element, className) {
       if (!(element = $(element))) return;
       var elementClassName = element.className;
  -    if (elementClassName.length == 0) return false;
  -    if (elementClassName == className ||
  -        elementClassName.match(new RegExp("(^|\\s)" + className + "(\\s|$)")))
  -      return true;
  -    return false;
  +    return (elementClassName.length > 0 && (elementClassName == className ||
  +      new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName)));
     },
   
     addClassName: function(element, className) {
       if (!(element = $(element))) return;
  -    Element.classNames(element).add(className);
  +    if (!element.hasClassName(className))
  +      element.className += (element.className ? ' ' : '') + className;
       return element;
     },
   
     removeClassName: function(element, className) {
       if (!(element = $(element))) return;
  -    Element.classNames(element).remove(className);
  +    element.className = element.className.replace(
  +      new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip();
       return element;
     },
   
  -  observe: function() {
  -    Event.observe.apply(Event, arguments);
  -    return $A(arguments).first();
  -  },
  -
  -  stopObserving: function() {
  -    Event.stopObserving.apply(Event, arguments);
  -    return $A(arguments).first();
  +  toggleClassName: function(element, className) {
  +    if (!(element = $(element))) return;
  +    return element[element.hasClassName(className) ?
  +      'removeClassName' : 'addClassName'](className);
     },
   
     // removes whitespace-only text node children
  @@ -1220,52 +1872,76 @@
     },
   
     empty: function(element) {
  -    return $(element).innerHTML.match(/^\s*$/);
  +    return $(element).innerHTML.blank();
     },
   
  -  childOf: function(element, ancestor) {
  +  descendantOf: function(element, ancestor) {
       element = $(element), ancestor = $(ancestor);
  +
  +    if (element.compareDocumentPosition)
  +      return (element.compareDocumentPosition(ancestor) & 8) === 8;
  +
  +    if (ancestor.contains)
  +      return ancestor.contains(element) && ancestor !== element;
  +
       while (element = element.parentNode)
         if (element == ancestor) return true;
  +
       return false;
     },
   
     scrollTo: function(element) {
       element = $(element);
  -    var x = element.x ? element.x : element.offsetLeft,
  -        y = element.y ? element.y : element.offsetTop;
  -    window.scrollTo(x, y);
  +    var pos = element.cumulativeOffset();
  +    window.scrollTo(pos[0], pos[1]);
       return element;
     },
   
     getStyle: function(element, style) {
       element = $(element);
  -    var value = element.style[style.camelize()];
  -    if (!value) {
  -      if (document.defaultView && document.defaultView.getComputedStyle) {
  -        var css = document.defaultView.getComputedStyle(element, null);
  -        value = css ? css.getPropertyValue(style) : null;
  -      } else if (element.currentStyle) {
  -        value = element.currentStyle[style.camelize()];
  -      }
  +    style = style == 'float' ? 'cssFloat' : style.camelize();
  +    var value = element.style[style];
  +    if (!value || value == 'auto') {
  +      var css = document.defaultView.getComputedStyle(element, null);
  +      value = css ? css[style] : null;
       }
  +    if (style == 'opacity') return value ? parseFloat(value) : 1.0;
  +    return value == 'auto' ? null : value;
  +  },
  +
  +  getOpacity: function(element) {
  +    return $(element).getStyle('opacity');
  +  },
   
  -    if (window.opera && ['left', 'top', 'right', 'bottom'].include(style))
  -      if (Element.getStyle(element, 'position') == 'static') value = 'auto';
  +  setStyle: function(element, styles) {
  +    element = $(element);
  +    var elementStyle = element.style, match;
  +    if (Object.isString(styles)) {
  +      element.style.cssText += ';' + styles;
  +      return styles.include('opacity') ?
  +        element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element;
  +    }
  +    for (var property in styles)
  +      if (property == 'opacity') element.setOpacity(styles[property]);
  +      else
  +        elementStyle[(property == 'float' || property == 'cssFloat') ?
  +          (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styleFloat') :
  +            property] = styles[property];
   
  -    return value == 'auto' ? null : value;
  +    return element;
     },
   
  -  setStyle: function(element, style) {
  +  setOpacity: function(element, value) {
       element = $(element);
  -    for (var name in style)
  -      element.style[name.camelize()] = style[name];
  +    element.style.opacity = (value == 1 || value === '') ? '' :
  +      (value < 0.00001) ? 0 : value;
       return element;
     },
   
     getDimensions: function(element) {
       element = $(element);
  -    if (Element.getStyle(element, 'display') != 'none')
  +    var display = element.getStyle('display');
  +    if (display != 'none' && display != null) // Safari bug
         return {width: element.offsetWidth, height: element.offsetHeight};
   
       // All *Width and *Height properties give 0 on elements with display none,
  @@ -1273,12 +1949,13 @@
       var els = element.style;
       var originalVisibility = els.visibility;
       var originalPosition = els.position;
  +    var originalDisplay = els.display;
       els.visibility = 'hidden';
       els.position = 'absolute';
  -    els.display = '';
  +    els.display = 'block';
       var originalWidth = element.clientWidth;
       var originalHeight = element.clientHeight;
  -    els.display = 'none';
  +    els.display = originalDisplay;
       els.position = originalPosition;
       els.visibility = originalVisibility;
       return {width: originalWidth, height: originalHeight};
  @@ -1292,7 +1969,7 @@
         element.style.position = 'relative';
         // Opera returns the offset relative to the positioning context, when an
         // element is position relative but top and left have not been defined
  -      if (window.opera) {
  +      if (Prototype.Browser.Opera) {
           element.style.top = 0;
           element.style.left = 0;
         }
  @@ -1316,8 +1993,8 @@
     makeClipping: function(element) {
       element = $(element);
       if (element._overflow) return element;
  -    element._overflow = element.style.overflow || 'auto';
  -    if ((Element.getStyle(element, 'overflow') || 'visible') != 'hidden')
  +    element._overflow = Element.getStyle(element, 'overflow') || 'auto';
  +    if (element._overflow !== 'hidden')
         element.style.overflow = 'hidden';
       return element;
     },
  @@ -1328,345 +2005,1441 @@
       element.style.overflow = element._overflow == 'auto' ? '' : element._overflow;
       element._overflow = null;
       return element;
  -  }
  -}
  +  },
   
  -Element.Methods.Simulated = {
  -  hasAttribute: function(element, attribute) {
  -    return $(element).getAttributeNode(attribute).specified;
  -  }
  -}
  +  cumulativeOffset: function(element) {
  +    var valueT = 0, valueL = 0;
  +    do {
  +      valueT += element.offsetTop  || 0;
  +      valueL += element.offsetLeft || 0;
  +      element = element.offsetParent;
  +    } while (element);
  +    return Element._returnOffset(valueL, valueT);
  +  },
   
  -// IE is missing .innerHTML support for TABLE-related elements
  -if(document.all){
  -  Element.Methods.update = function(element, html) {
  -    element = $(element);
  -    html = typeof html == 'undefined' ? '' : html.toString();
  -    var tagName = element.tagName.toUpperCase();
  -    if (['THEAD','TBODY','TR','TD'].indexOf(tagName) > -1) {
  -      var div = document.createElement('div');
  -      switch (tagName) {
  -        case 'THEAD':
  -        case 'TBODY':
  -          div.innerHTML = '<table><tbody>' +  html.stripScripts() + '</tbody></table>';
  -          depth = 2;
  -          break;
  -        case 'TR':
  -          div.innerHTML = '<table><tbody><tr>' +  html.stripScripts() + '</tr></tbody></table>';
  -          depth = 3;
  -          break;
  -        case 'TD':
  -          div.innerHTML = '<table><tbody><tr><td>' +  html.stripScripts() + '</td></tr></tbody></table>';
  -          depth = 4;
  +  positionedOffset: function(element) {
  +    var valueT = 0, valueL = 0;
  +    do {
  +      valueT += element.offsetTop  || 0;
  +      valueL += element.offsetLeft || 0;
  +      element = element.offsetParent;
  +      if (element) {
  +        if (element.tagName.toUpperCase() == 'BODY') break;
  +        var p = Element.getStyle(element, 'position');
  +        if (p !== 'static') break;
         }
  -      $A(element.childNodes).each(function(node){
  -        element.removeChild(node)
  -      });
  -      depth.times(function(){ div = div.firstChild });
  -
  -      $A(div.childNodes).each(
  -        function(node){ element.appendChild(node) });
  -    } else {
  -      element.innerHTML = html.stripScripts();
  -    }
  -    setTimeout(function() {html.evalScripts()}, 10);
  -    return element;
  -  }
  -}
  -
  -Object.extend(Element, Element.Methods);
  -
  -var _nativeExtensions = false;
  -
  -if(/Konqueror|Safari|KHTML/.test(navigator.userAgent))
  -  ['', 'Form', 'Input', 'TextArea', 'Select'].each(function(tag) {
  -    var className = 'HTML' + tag + 'Element';
  -    if(window[className]) return;
  -    var klass = window[className] = {};
  -    klass.prototype = document.createElement(tag ? tag.toLowerCase() : 'div').__proto__;
  -  });
  -
  -Element.addMethods = function(methods) {
  -  Object.extend(Element.Methods, methods || {});
  +    } while (element);
  +    return Element._returnOffset(valueL, valueT);
  +  },
   
  -  function copy(methods, destination, onlyIfAbsent) {
  -    onlyIfAbsent = onlyIfAbsent || false;
  -    var cache = Element.extend.cache;
  -    for (var property in methods) {
  -      var value = methods[property];
  -      if (!onlyIfAbsent || !(property in destination))
  -        destination[property] = cache.findOrStore(value);
  -    }
  -  }
  +  absolutize: function(element) {
  +    element = $(element);
  +    if (element.getStyle('position') == 'absolute') return element;
  +    // Position.prepare(); // To be done manually by Scripty when it needs it.
   
  -  if (typeof HTMLElement != 'undefined') {
  -    copy(Element.Methods, HTMLElement.prototype);
  -    copy(Element.Methods.Simulated, HTMLElement.prototype, true);
  -    copy(Form.Methods, HTMLFormElement.prototype);
  -    [HTMLInputElement, HTMLTextAreaElement, HTMLSelectElement].each(function(klass) {
  -      copy(Form.Element.Methods, klass.prototype);
  -    });
  -    _nativeExtensions = true;
  -  }
  -}
  +    var offsets = element.positionedOffset();
  +    var top     = offsets[1];
  +    var left    = offsets[0];
  +    var width   = element.clientWidth;
  +    var height  = element.clientHeight;
   
  -var Toggle = new Object();
  -Toggle.display = Element.toggle;
  +    element._originalLeft   = left - parseFloat(element.style.left  || 0);
  +    element._originalTop    = top  - parseFloat(element.style.top || 0);
  +    element._originalWidth  = element.style.width;
  +    element._originalHeight = element.style.height;
   
  -/*--------------------------------------------------------------------------*/
  +    element.style.position = 'absolute';
  +    element.style.top    = top + 'px';
  +    element.style.left   = left + 'px';
  +    element.style.width  = width + 'px';
  +    element.style.height = height + 'px';
  +    return element;
  +  },
   
  -Abstract.Insertion = function(adjacency) {
  -  this.adjacency = adjacency;
  -}
  +  relativize: function(element) {
  +    element = $(element);
  +    if (element.getStyle('position') == 'relative') return element;
  +    // Position.prepare(); // To be done manually by Scripty when it needs it.
   
  -Abstract.Insertion.prototype = {
  -  initialize: function(element, content) {
  -    this.element = $(element);
  -    this.content = content.stripScripts();
  +    element.style.position = 'relative';
  +    var top  = parseFloat(element.style.top  || 0) - (element._originalTop || 0);
  +    var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0);
   
  -    if (this.adjacency && this.element.insertAdjacentHTML) {
  -      try {
  -        this.element.insertAdjacentHTML(this.adjacency, this.content);
  -      } catch (e) {
  -        var tagName = this.element.tagName.toLowerCase();
  -        if (tagName == 'tbody' || tagName == 'tr') {
  -          this.insertContent(this.contentFromAnonymousTable());
  -        } else {
  -          throw e;
  -        }
  -      }
  -    } else {
  -      this.range = this.element.ownerDocument.createRange();
  -      if (this.initializeRange) this.initializeRange();
  -      this.insertContent([this.range.createContextualFragment(this.content)]);
  -    }
  +    element.style.top    = top + 'px';
  +    element.style.left   = left + 'px';
  +    element.style.height = element._originalHeight;
  +    element.style.width  = element._originalWidth;
  +    return element;
  +  },
   
  -    setTimeout(function() {content.evalScripts()}, 10);
  +  cumulativeScrollOffset: function(element) {
  +    var valueT = 0, valueL = 0;
  +    do {
  +      valueT += element.scrollTop  || 0;
  +      valueL += element.scrollLeft || 0;
  +      element = element.parentNode;
  +    } while (element);
  +    return Element._returnOffset(valueL, valueT);
     },
   
  -  contentFromAnonymousTable: function() {
  -    var div = document.createElement('div');
  -    div.innerHTML = '<table><tbody>' + this.content + '</tbody></table>';
  -    return $A(div.childNodes[0].childNodes[0].childNodes);
  -  }
  -}
  +  getOffsetParent: function(element) {
  +    if (element.offsetParent) return $(element.offsetParent);
  +    if (element == document.body) return $(element);
   
  -var Insertion = new Object();
  +    while ((element = element.parentNode) && element != document.body)
  +      if (Element.getStyle(element, 'position') != 'static')
  +        return $(element);
   
  -Insertion.Before = Class.create();
  -Insertion.Before.prototype = Object.extend(new Abstract.Insertion('beforeBegin'), {
  -  initializeRange: function() {
  -    this.range.setStartBefore(this.element);
  +    return $(document.body);
     },
   
  -  insertContent: function(fragments) {
  -    fragments.each((function(fragment) {
  -      this.element.parentNode.insertBefore(fragment, this.element);
  -    }).bind(this));
  -  }
  -});
  +  viewportOffset: function(forElement) {
  +    var valueT = 0, valueL = 0;
   
  -Insertion.Top = Class.create();
  -Insertion.Top.prototype = Object.extend(new Abstract.Insertion('afterBegin'), {
  -  initializeRange: function() {
  -    this.range.selectNodeContents(this.element);
  -    this.range.collapse(true);
  -  },
  +    var element = forElement;
  +    do {
  +      valueT += element.offsetTop  || 0;
  +      valueL += element.offsetLeft || 0;
   
  -  insertContent: function(fragments) {
  -    fragments.reverse(false).each((function(fragment) {
  -      this.element.insertBefore(fragment, this.element.firstChild);
  -    }).bind(this));
  -  }
  -});
  +      // Safari fix
  +      if (element.offsetParent == document.body &&
  +        Element.getStyle(element, 'position') == 'absolute') break;
   
  -Insertion.Bottom = Class.create();
  -Insertion.Bottom.prototype = Object.extend(new Abstract.Insertion('beforeEnd'), {
  -  initializeRange: function() {
  -    this.range.selectNodeContents(this.element);
  -    this.range.collapse(this.element);
  -  },
  +    } while (element = element.offsetParent);
   
  -  insertContent: function(fragments) {
  -    fragments.each((function(fragment) {
  -      this.element.appendChild(fragment);
  -    }).bind(this));
  -  }
  -});
  +    element = forElement;
  +    do {
  +      if (!Prototype.Browser.Opera || (element.tagName && (element.tagName.toUpperCase() == 'BODY'))) {
  +        valueT -= element.scrollTop  || 0;
  +        valueL -= element.scrollLeft || 0;
  +      }
  +    } while (element = element.parentNode);
   
  -Insertion.After = Class.create();
  -Insertion.After.prototype = Object.extend(new Abstract.Insertion('afterEnd'), {
  -  initializeRange: function() {
  -    this.range.setStartAfter(this.element);
  +    return Element._returnOffset(valueL, valueT);
     },
   
  -  insertContent: function(fragments) {
  -    fragments.each((function(fragment) {
  -      this.element.parentNode.insertBefore(fragment,
  -        this.element.nextSibling);
  -    }).bind(this));
  -  }
  +  clonePosition: function(element, source) {
  +    var options = Object.extend({
  +      setLeft:    true,
  +      setTop:     true,
  +      setWidth:   true,
  +      setHeight:  true,
  +      offsetTop:  0,
  +      offsetLeft: 0
  +    }, arguments[2] || { });
  +
  +    // find page position of source
  +    source = $(source);
  +    var p = source.viewportOffset();
  +
  +    // find coordinate system to use
  +    element = $(element);
  +    var delta = [0, 0];
  +    var parent = null;
  +    // delta [0,0] will do fine with position: fixed elements,
  +    // position:absolute needs offsetParent deltas
  +    if (Element.getStyle(element, 'position') == 'absolute') {
  +      parent = element.getOffsetParent();
  +      delta = parent.viewportOffset();
  +    }
  +
  +    // correct by body offsets (fixes Safari)
  +    if (parent == document.body) {
  +      delta[0] -= document.body.offsetLeft;
  +      delta[1] -= document.body.offsetTop;
  +    }
  +
  +    // set position
  +    if (options.setLeft)   element.style.left  = (p[0] - delta[0] + options.offsetLeft) + 'px';
  +    if (options.setTop)    element.style.top   = (p[1] - delta[1] + options.offsetTop) + 'px';
  +    if (options.setWidth)  element.style.width = source.offsetWidth + 'px';
  +    if (options.setHeight) element.style.height = source.offsetHeight + 'px';
  +    return element;
  +  }
  +};
  +
  +Element.Methods.identify.counter = 1;
  +
  +Object.extend(Element.Methods, {
  +  getElementsBySelector: Element.Methods.select,
  +  childElements: Element.Methods.immediateDescendants
   });
   
  -/*--------------------------------------------------------------------------*/
  +Element._attributeTranslations = {
  +  write: {
  +    names: {
  +      className: 'class',
  +      htmlFor:   'for'
  +    },
  +    values: { }
  +  }
  +};
   
  -Element.ClassNames = Class.create();
  -Element.ClassNames.prototype = {
  -  initialize: function(element) {
  -    this.element = $(element);
  -  },
  +if (Prototype.Browser.Opera) {
  +  Element.Methods.getStyle = Element.Methods.getStyle.wrap(
  +    function(proceed, element, style) {
  +      switch (style) {
  +        case 'left': case 'top': case 'right': case 'bottom':
  +          if (proceed(element, 'position') === 'static') return null;
  +        case 'height': case 'width':
  +          // returns '0px' for hidden elements; we want it to return null
  +          if (!Element.visible(element)) return null;
  +
  +          // returns the border-box dimensions rather than the content-box
  +          // dimensions, so we subtract padding and borders from the value
  +          var dim = parseInt(proceed(element, style), 10);
  +
  +          if (dim !== element['offset' + style.capitalize()])
  +            return dim + 'px';
  +
  +          var properties;
  +          if (style === 'height') {
  +            properties = ['border-top-width', 'padding-top',
  +             'padding-bottom', 'border-bottom-width'];
  +          }
  +          else {
  +            properties = ['border-left-width', 'padding-left',
  +             'padding-right', 'border-right-width'];
  +          }
  +          return properties.inject(dim, function(memo, property) {
  +            var val = proceed(element, property);
  +            return val === null ? memo : memo - parseInt(val, 10);
  +          }) + 'px';
  +        default: return proceed(element, style);
  +      }
  +    }
  +  );
   
  -  _each: function(iterator) {
  -    this.element.className.split(/\s+/).select(function(name) {
  -      return name.length > 0;
  -    })._each(iterator);
  -  },
  +  Element.Methods.readAttribute = Element.Methods.readAttribute.wrap(
  +    function(proceed, element, attribute) {
  +      if (attribute === 'title') return element.title;
  +      return proceed(element, attribute);
  +    }
  +  );
  +}
   
  -  set: function(className) {
  -    this.element.className = className;
  +else if (Prototype.Browser.IE) {
  +  // IE doesn't report offsets correctly for static elements, so we change them
  +  // to "relative" to get the values, then change them back.
  +  Element.Methods.getOffsetParent = Element.Methods.getOffsetParent.wrap(
  +    function(proceed, element) {
  +      element = $(element);
  +      // IE throws an error if element is not in document
  +      try { element.offsetParent }
  +      catch(e) { return $(document.body) }
  +      var position = element.getStyle('position');
  +      if (position !== 'static') return proceed(element);
  +      element.setStyle({ position: 'relative' });
  +      var value = proceed(element);
  +      element.setStyle({ position: position });
  +      return value;
  +    }
  +  );
  +
  +  $w('positionedOffset viewportOffset').each(function(method) {
  +    Element.Methods[method] = Element.Methods[method].wrap(
  +      function(proceed, element) {
  +        element = $(element);
  +        try { element.offsetParent }
  +        catch(e) { return Element._returnOffset(0,0) }
  +        var position = element.getStyle('position');
  +        if (position !== 'static') return proceed(element);
  +        // Trigger hasLayout on the offset parent so that IE6 reports
  +        // accurate offsetTop and offsetLeft values for position: fixed.
  +        var offsetParent = element.getOffsetParent();
  +        if (offsetParent && offsetParent.getStyle('position') === 'fixed')
  +          offsetParent.setStyle({ zoom: 1 });
  +        element.setStyle({ position: 'relative' });
  +        var value = proceed(element);
  +        element.setStyle({ position: position });
  +        return value;
  +      }
  +    );
  +  });
  +
  +  Element.Methods.cumulativeOffset = Element.Methods.cumulativeOffset.wrap(
  +    function(proceed, element) {
  +      try { element.offsetParent }
  +      catch(e) { return Element._returnOffset(0,0) }
  +      return proceed(element);
  +    }
  +  );
  +
  +  Element.Methods.getStyle = function(element, style) {
  +    element = $(element);
  +    style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize();
  +    var value = element.style[style];
  +    if (!value && element.currentStyle) value = element.currentStyle[style];
  +
  +    if (style == 'opacity') {
  +      if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/))
  +        if (value[1]) return parseFloat(value[1]) / 100;
  +      return 1.0;
  +    }
  +
  +    if (value == 'auto') {
  +      if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none'))
  +        return element['offset' + style.capitalize()] + 'px';
  +      return null;
  +    }
  +    return value;
  +  };
  +
  +  Element.Methods.setOpacity = function(element, value) {
  +    function stripAlpha(filter){
  +      return filter.replace(/alpha\([^\)]*\)/gi,'');
  +    }
  +    element = $(element);
  +    var currentStyle = element.currentStyle;
  +    if ((currentStyle && !currentStyle.hasLayout) ||
  +      (!currentStyle && element.style.zoom == 'normal'))
  +        element.style.zoom = 1;
  +
  +    var filter = element.getStyle('filter'), style = element.style;
  +    if (value == 1 || value === '') {
  +      (filter = stripAlpha(filter)) ?
  +        style.filter = filter : style.removeAttribute('filter');
  +      return element;
  +    } else if (value < 0.00001) value = 0;
  +    style.filter = stripAlpha(filter) +
  +      'alpha(opacity=' + (value * 100) + ')';
  +    return element;
  +  };
  +
  +  Element._attributeTranslations = {
  +    read: {
  +      names: {
  +        'class': 'className',
  +        'for':   'htmlFor'
  +      },
  +      values: {
  +        _getAttr: function(element, attribute) {
  +          return element.getAttribute(attribute, 2);
  +        },
  +        _getAttrNode: function(element, attribute) {
  +          var node = element.getAttributeNode(attribute);
  +          return node ? node.value : "";
  +        },
  +        _getEv: function(element, attribute) {
  +          attribute = element.getAttribute(attribute);
  +          return attribute ? attribute.toString().slice(23, -2) : null;
  +        },
  +        _flag: function(element, attribute) {
  +          return $(element).hasAttribute(attribute) ? attribute : null;
  +        },
  +        style: function(element) {
  +          return element.style.cssText.toLowerCase();
  +        },
  +        title: function(element) {
  +          return element.title;
  +        }
  +      }
  +    }
  +  };
  +
  +  Element._attributeTranslations.write = {
  +    names: Object.extend({
  +      cellpadding: 'cellPadding',
  +      cellspacing: 'cellSpacing'
  +    }, Element._attributeTranslations.read.names),
  +    values: {
  +      checked: function(element, value) {
  +        element.checked = !!value;
  +      },
  +
  +      style: function(element, value) {
  +        element.style.cssText = value ? value : '';
  +      }
  +    }
  +  };
  +
  +  Element._attributeTranslations.has = {};
  +
  +  $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' +
  +      'encType maxLength readOnly longDesc frameBorder').each(function(attr) {
  +    Element._attributeTranslations.write.names[attr.toLowerCase()] = attr;
  +    Element._attributeTranslations.has[attr.toLowerCase()] = attr;
  +  });
  +
  +  (function(v) {
  +    Object.extend(v, {
  +      href:        v._getAttr,
  +      src:         v._getAttr,
  +      type:        v._getAttr,
  +      action:      v._getAttrNode,
  +      disabled:    v._flag,
  +      checked:     v._flag,
  +      readonly:    v._flag,
  +      multiple:    v._flag,
  +      onload:      v._getEv,
  +      onunload:    v._getEv,
  +      onclick:     v._getEv,
  +      ondblclick:  v._getEv,
  +      onmousedown: v._getEv,
  +      onmouseup:   v._getEv,
  +      onmouseover: v._getEv,
  +      onmousemove: v._getEv,
  +      onmouseout:  v._getEv,
  +      onfocus:     v._getEv,
  +      onblur:      v._getEv,
  +      onkeypress:  v._getEv,
  +      onkeydown:   v._getEv,
  +      onkeyup:     v._getEv,
  +      onsubmit:    v._getEv,
  +      onreset:     v._getEv,
  +      onselect:    v._getEv,
  +      onchange:    v._getEv
  +    });
  +  })(Element._attributeTranslations.read.values);
  +}
  +
  +else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) {
  +  Element.Methods.setOpacity = function(element, value) {
  +    element = $(element);
  +    element.style.opacity = (value == 1) ? 0.999999 :
  +      (value === '') ? '' : (value < 0.00001) ? 0 : value;
  +    return element;
  +  };
  +}
  +
  +else if (Prototype.Browser.WebKit) {
  +  Element.Methods.setOpacity = function(element, value) {
  +    element = $(element);
  +    element.style.opacity = (value == 1 || value === '') ? '' :
  +      (value < 0.00001) ? 0 : value;
  +
  +    if (value == 1)
  +      if(element.tagName.toUpperCase() == 'IMG' && element.width) {
  +        element.width++; element.width--;
  +      } else try {
  +        var n = document.createTextNode(' ');
  +        element.appendChild(n);
  +        element.removeChild(n);
  +      } catch (e) { }
  +
  +    return element;
  +  };
  +
  +  // Safari returns margins on body which is incorrect if the child is absolutely
  +  // positioned.  For performance reasons, redefine Element#cumulativeOffset for
  +  // KHTML/WebKit only.
  +  Element.Methods.cumulativeOffset = function(element) {
  +    var valueT = 0, valueL = 0;
  +    do {
  +      valueT += element.offsetTop  || 0;
  +      valueL += element.offsetLeft || 0;
  +      if (element.offsetParent == document.body)
  +        if (Element.getStyle(element, 'position') == 'absolute') break;
  +
  +      element = element.offsetParent;
  +    } while (element);
  +
  +    return Element._returnOffset(valueL, valueT);
  +  };
  +}
  +
  +if (Prototype.Browser.IE || Prototype.Browser.Opera) {
  +  // IE and Opera are missing .innerHTML support for TABLE-related and SELECT elements
  +  Element.Methods.update = function(element, content) {
  +    element = $(element);
  +
  +    if (content && content.toElement) content = content.toElement();
  +    if (Object.isElement(content)) return element.update().insert(content);
  +
  +    content = Object.toHTML(content);
  +    var tagName = element.tagName.toUpperCase();
  +
  +    if (tagName in Element._insertionTranslations.tags) {
  +      $A(element.childNodes).each(function(node) { element.removeChild(node) });
  +      Element._getContentFromAnonymousElement(tagName, content.stripScripts())
  +        .each(function(node) { element.appendChild(node) });
  +    }
  +    else element.innerHTML = content.stripScripts();
  +
  +    content.evalScripts.bind(content).defer();
  +    return element;
  +  };
  +}
  +
  +if ('outerHTML' in document.createElement('div')) {
  +  Element.Methods.replace = function(element, content) {
  +    element = $(element);
  +
  +    if (content && content.toElement) content = content.toElement();
  +    if (Object.isElement(content)) {
  +      element.parentNode.replaceChild(content, element);
  +      return element;
  +    }
  +
  +    content = Object.toHTML(content);
  +    var parent = element.parentNode, tagName = parent.tagName.toUpperCase();
  +
  +    if (Element._insertionTranslations.tags[tagName]) {
  +      var nextSibling = element.next();
  +      var fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts());
  +      parent.removeChild(element);
  +      if (nextSibling)
  +        fragments.each(function(node) { parent.insertBefore(node, nextSibling) });
  +      else
  +        fragments.each(function(node) { parent.appendChild(node) });
  +    }
  +    else element.outerHTML = content.stripScripts();
  +
  +    content.evalScripts.bind(content).defer();
  +    return element;
  +  };
  +}
  +
  +Element._returnOffset = function(l, t) {
  +  var result = [l, t];
  +  result.left = l;
  +  result.top = t;
  +  return result;
  +};
  +
  +Element._getContentFromAnonymousElement = function(tagName, html) {
  +  var div = new Element('div'), t = Element._insertionTranslations.tags[tagName];
  +  if (t) {
  +    div.innerHTML = t[0] + html + t[1];
  +    t[2].times(function() { div = div.firstChild });
  +  } else div.innerHTML = html;
  +  return $A(div.childNodes);
  +};
  +
  +Element._insertionTranslations = {
  +  before: function(element, node) {
  +    element.parentNode.insertBefore(node, element);
  +  },
  +  top: function(element, node) {
  +    element.insertBefore(node, element.firstChild);
  +  },
  +  bottom: function(element, node) {
  +    element.appendChild(node);
  +  },
  +  after: function(element, node) {
  +    element.parentNode.insertBefore(node, element.nextSibling);
  +  },
  +  tags: {
  +    TABLE:  ['<table>',                '</table>',                   1],
  +    TBODY:  ['<table><tbody>',         '</tbody></table>',           2],
  +    TR:     ['<table><tbody><tr>',     '</tr></tbody></table>',      3],
  +    TD:     ['<table><tbody><tr><td>', '</td></tr></tbody></table>', 4],
  +    SELECT: ['<select>',               '</select>',                  1]
  +  }
  +};
  +
  +(function() {
  +  Object.extend(this.tags, {
  +    THEAD: this.tags.TBODY,
  +    TFOOT: this.tags.TBODY,
  +    TH:    this.tags.TD
  +  });
  +}).call(Element._insertionTranslations);
  +
  +Element.Methods.Simulated = {
  +  hasAttribute: function(element, attribute) {
  +    attribute = Element._attributeTranslations.has[attribute] || attribute;
  +    var node = $(element).getAttributeNode(attribute);
  +    return !!(node && node.specified);
  +  }
  +};
  +
  +Element.Methods.ByTag = { };
  +
  +Object.extend(Element, Element.Methods);
  +
  +if (!Prototype.BrowserFeatures.ElementExtensions &&
  +    document.createElement('div')['__proto__']) {
  +  window.HTMLElement = { };
  +  window.HTMLElement.prototype = document.createElement('div')['__proto__'];
  +  Prototype.BrowserFeatures.ElementExtensions = true;
  +}
  +
  +Element.extend = (function() {
  +  if (Prototype.BrowserFeatures.SpecificElementExtensions)
  +    return Prototype.K;
  +
  +  var Methods = { }, ByTag = Element.Methods.ByTag;
  +
  +  var extend = Object.extend(function(element) {
  +    if (!element || element._extendedByPrototype ||
  +        element.nodeType != 1 || element == window) return element;
  +
  +    var methods = Object.clone(Methods),
  +      tagName = element.tagName.toUpperCase(), property, value;
  +
  +    // extend methods for specific tags
  +    if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]);
  +
  +    for (property in methods) {
  +      value = methods[property];
  +      if (Object.isFunction(value) && !(property in element))
  +        element[property] = value.methodize();
  +    }
  +
  +    element._extendedByPrototype = Prototype.emptyFunction;
  +    return element;
  +
  +  }, {
  +    refresh: function() {
  +      // extend methods for all tags (Safari doesn't need this)
  +      if (!Prototype.BrowserFeatures.ElementExtensions) {
  +        Object.extend(Methods, Element.Methods);
  +        Object.extend(Methods, Element.Methods.Simulated);
  +      }
  +    }
  +  });
  +
  +  extend.refresh();
  +  return extend;
  +})();
  +
  +Element.hasAttribute = function(element, attribute) {
  +  if (element.hasAttribute) return element.hasAttribute(attribute);
  +  return Element.Methods.Simulated.hasAttribute(element, attribute);
  +};
  +
  +Element.addMethods = function(methods) {
  +  var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag;
  +
  +  if (!methods) {
  +    Object.extend(Form, Form.Methods);
  +    Object.extend(Form.Element, Form.Element.Methods);
  +    Object.extend(Element.Methods.ByTag, {
  +      "FORM":     Object.clone(Form.Methods),
  +      "INPUT":    Object.clone(Form.Element.Methods),
  +      "SELECT":   Object.clone(Form.Element.Methods),
  +      "TEXTAREA": Object.clone(Form.Element.Methods)
  +    });
  +  }
  +
  +  if (arguments.length == 2) {
  +    var tagName = methods;
  +    methods = arguments[1];
  +  }
  +
  +  if (!tagName) Object.extend(Element.Methods, methods || { });
  +  else {
  +    if (Object.isArray(tagName)) tagName.each(extend);
  +    else extend(tagName);
  +  }
  +
  +  function extend(tagName) {
  +    tagName = tagName.toUpperCase();
  +    if (!Element.Methods.ByTag[tagName])
  +      Element.Methods.ByTag[tagName] = { };
  +    Object.extend(Element.Methods.ByTag[tagName], methods);
  +  }
  +
  +  function copy(methods, destination, onlyIfAbsent) {
  +    onlyIfAbsent = onlyIfAbsent || false;
  +    for (var property in methods) {
  +      var value = methods[property];
  +      if (!Object.isFunction(value)) continue;
  +      if (!onlyIfAbsent || !(property in destination))
  +        destination[property] = value.methodize();
  +    }
  +  }
  +
  +  function findDOMClass(tagName) {
  +    var klass;
  +    var trans = {
  +      "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph",
  +      "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList",
  +      "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading",
  +      "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote",
  +      "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION":
  +      "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD":
  +      "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR":
  +      "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET":
  +      "FrameSet", "IFRAME": "IFrame"
  +    };
  +    if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element';
  +    if (window[klass]) return window[klass];
  +    klass = 'HTML' + tagName + 'Element';
  +    if (window[klass]) return window[klass];
  +    klass = 'HTML' + tagName.capitalize() + 'Element';
  +    if (window[klass]) return window[klass];
  +
  +    window[klass] = { };
  +    window[klass].prototype = document.createElement(tagName)['__proto__'];
  +    return window[klass];
  +  }
  +
  +  if (F.ElementExtensions) {
  +    copy(Element.Methods, HTMLElement.prototype);
  +    copy(Element.Methods.Simulated, HTMLElement.prototype, true);
  +  }
  +
  +  if (F.SpecificElementExtensions) {
  +    for (var tag in Element.Methods.ByTag) {
  +      var klass = findDOMClass(tag);
  +      if (Object.isUndefined(klass)) continue;
  +      copy(T[tag], klass.prototype);
  +    }
  +  }
  +
  +  Object.extend(Element, Element.Methods);
  +  delete Element.ByTag;
  +
  +  if (Element.extend.refresh) Element.extend.refresh();
  +  Element.cache = { };
  +};
  +
  +document.viewport = {
  +  getDimensions: function() {
  +    var dimensions = { }, B = Prototype.Browser;
  +    $w('width height').each(function(d) {
  +      var D = d.capitalize();
  +      if (B.WebKit && !document.evaluate) {
  +        // Safari <3.0 needs self.innerWidth/Height
  +        dimensions[d] = self['inner' + D];
  +      } else if (B.Opera && parseFloat(window.opera.version()) < 9.5) {
  +        // Opera <9.5 needs document.body.clientWidth/Height
  +        dimensions[d] = document.body['client' + D]
  +      } else {
  +        dimensions[d] = document.documentElement['client' + D];
  +      }
  +    });
  +    return dimensions;
     },
   
  -  add: function(classNameToAdd) {
  -    if (this.include(classNameToAdd)) return;
  -    this.set($A(this).concat(classNameToAdd).join(' '));
  +  getWidth: function() {
  +    return this.getDimensions().width;
     },
   
  -  remove: function(classNameToRemove) {
  -    if (!this.include(classNameToRemove)) return;
  -    this.set($A(this).without(classNameToRemove).join(' '));
  +  getHeight: function() {
  +    return this.getDimensions().height;
     },
   
  -  toString: function() {
  -    return $A(this).join(' ');
  +  getScrollOffsets: function() {
  +    return Element._returnOffset(
  +      window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft,
  +      window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop);
     }
  -}
  +};
  +/* Portions of the Selector class are derived from Jack Slocum's DomQuery,
  + * part of YUI-Ext version 0.40, distributed under the terms of an MIT-style
  + * license.  Please see http://www.yui-ext.com/ for more information. */
   
  -Object.extend(Element.ClassNames.prototype, Enumerable);
  -var Selector = Class.create();
  -Selector.prototype = {
  +var Selector = Class.create({
     initialize: function(expression) {
  -    this.params = {classNames: []};
  -    this.expression = expression.toString().strip();
  -    this.parseExpression();
  -    this.compileMatcher();
  -  },
  -
  -  parseExpression: function() {
  -    function abort(message) { throw 'Parse error in selector: ' + message; }
  -
  -    if (this.expression == '')  abort('empty expression');
  -
  -    var params = this.params, expr = this.expression, match, modifier, clause, rest;
  -    while (match = expr.match(/^(.*)\[([a-z0-9_:-]+?)(?:([~\|!]?=)(?:"([^"]*)"|([^\]\s]*)))?\]$/i)) {
  -      params.attributes = params.attributes || [];
  -      params.attributes.push({name: match[2], operator: match[3], value: match[4] || match[5] || ''});
  -      expr = match[1];
  -    }
  -
  -    if (expr == '*') return this.params.wildcard = true;
  -
  -    while (match = expr.match(/^([^a-z0-9_-])?([a-z0-9_-]+)(.*)/i)) {
  -      modifier = match[1], clause = match[2], rest = match[3];
  -      switch (modifier) {
  -        case '#':       params.id = clause; break;
  -        case '.':       params.classNames.push(clause); break;
  -        case '':
  -        case undefined: params.tagName = clause.toUpperCase(); break;
  -        default:        abort(expr.inspect());
  -      }
  -      expr = rest;
  -    }
  -
  -    if (expr.length > 0) abort(expr.inspect());
  -  },
  -
  -  buildMatchExpression: function() {
  -    var params = this.params, conditions = [], clause;
  -
  -    if (params.wildcard)
  -      conditions.push('true');
  -    if (clause = params.id)
  -      conditions.push('element.id == ' + clause.inspect());
  -    if (clause = params.tagName)
  -      conditions.push('element.tagName.toUpperCase() == ' + clause.inspect());
  -    if ((clause = params.classNames).length > 0)
  -      for (var i = 0; i < clause.length; i++)
  -        conditions.push('Element.hasClassName(element, ' + clause[i].inspect() + ')');
  -    if (clause = params.attributes) {
  -      clause.each(function(attribute) {
  -        var value = 'element.getAttribute(' + attribute.name.inspect() + ')';
  -        var splitValueBy = function(delimiter) {
  -          return value + ' && ' + value + '.split(' + delimiter.inspect() + ')';
  -        }
  +    this.expression = expression.strip();
   
  -        switch (attribute.operator) {
  -          case '=':       conditions.push(value + ' == ' + attribute.value.inspect()); break;
  -          case '~=':      conditions.push(splitValueBy(' ') + '.include(' + attribute.value.inspect() + ')'); break;
  -          case '|=':      conditions.push(
  -                            splitValueBy('-') + '.first().toUpperCase() == ' + attribute.value.toUpperCase().inspect()
  -                          ); break;
  -          case '!=':      conditions.push(value + ' != ' + attribute.value.inspect()); break;
  -          case '':
  -          case undefined: conditions.push(value + ' != null'); break;
  -          default:        throw 'Unknown operator ' + attribute.operator + ' in selector';
  -        }
  -      });
  +    if (this.shouldUseSelectorsAPI()) {
  +      this.mode = 'selectorsAPI';
  +    } else if (this.shouldUseXPath()) {
  +      this.mode = 'xpath';
  +      this.compileXPathMatcher();
  +    } else {
  +      this.mode = "normal";
  +      this.compileMatcher();
       }
   
  -    return conditions.join(' && ');
  +  },
  +
  +  shouldUseXPath: function() {
  +    if (!Prototype.BrowserFeatures.XPath) return false;
  +
  +    var e = this.expression;
  +
  +    // Safari 3 chokes on :*-of-type and :empty
  +    if (Prototype.Browser.WebKit &&
  +     (e.include("-of-type") || e.include(":empty")))
  +      return false;
  +
  +    // XPath can't do namespaced attributes, nor can it read
  +    // the "checked" property from DOM nodes
  +    if ((/(\[[\w-]*?:|:checked)/).test(e))
  +      return false;
  +
  +    return true;
  +  },
  +
  +  shouldUseSelectorsAPI: function() {
  +    if (!Prototype.BrowserFeatures.SelectorsAPI) return false;
  +
  +    if (!Selector._div) Selector._div = new Element('div');
  +
  +    // Make sure the browser treats the selector as valid. Test on an
  +    // isolated element to minimize cost of this check.
  +    try {
  +      Selector._div.querySelector(this.expression);
  +    } catch(e) {
  +      return false;
  +    }
  +
  +    return true;
     },
   
     compileMatcher: function() {
  -    this.match = new Function('element', 'if (!element.tagName) return false; \
  -      return ' + this.buildMatchExpression());
  +    var e = this.expression, ps = Selector.patterns, h = Selector.handlers,
  +        c = Selector.criteria, le, p, m;
  +
  +    if (Selector._cache[e]) {
  +      this.matcher = Selector._cache[e];
  +      return;
  +    }
  +
  +    this.matcher = ["this.matcher = function(root) {",
  +                    "var r = root, h = Selector.handlers, c = false, n;"];
  +
  +    while (e && le != e && (/\S/).test(e)) {
  +      le = e;
  +      for (var i in ps) {
  +        p = ps[i];
  +        if (m = e.match(p)) {
  +          this.matcher.push(Object.isFunction(c[i]) ? c[i](m) :
  +            new Template(c[i]).evaluate(m));
  +          e = e.replace(m[0], '');
  +          break;
  +        }
  +      }
  +    }
  +
  +    this.matcher.push("return h.unique(n);\n}");
  +    eval(this.matcher.join('\n'));
  +    Selector._cache[this.expression] = this.matcher;
  +  },
  +
  +  compileXPathMatcher: function() {
  +    var e = this.expression, ps = Selector.patterns,
  +        x = Selector.xpath, le, m;
  +
  +    if (Selector._cache[e]) {
  +      this.xpath = Selector._cache[e]; return;
  +    }
  +
  +    this.matcher = ['.//*'];
  +    while (e && le != e && (/\S/).test(e)) {
  +      le = e;
  +      for (var i in ps) {
  +        if (m = e.match(ps[i])) {
  +          this.matcher.push(Object.isFunction(x[i]) ? x[i](m) :
  +            new Template(x[i]).evaluate(m));
  +          e = e.replace(m[0], '');
  +          break;
  +        }
  +      }
  +    }
  +
  +    this.xpath = this.matcher.join('');
  +    Selector._cache[this.expression] = this.xpath;
     },
   
  -  findElements: function(scope) {
  -    var element;
  +  findElements: function(root) {
  +    root = root || document;
  +    var e = this.expression, results;
  +
  +    switch (this.mode) {
  +      case 'selectorsAPI':
  +        // querySelectorAll queries document-wide, then filters to descendants
  +        // of the context element. That's not what we want.
  +        // Add an explicit context to the selector if necessary.
  +        if (root !== document) {
  +          var oldId = root.id, id = $(root).identify();
  +          e = "#" + id + " " + e;
  +        }
   
  -    if (element = $(this.params.id))
  -      if (this.match(element))
  -        if (!scope || Element.childOf(element, scope))
  -          return [element];
  +        results = $A(root.querySelectorAll(e)).map(Element.extend);
  +        root.id = oldId;
   
  -    scope = (scope || document).getElementsByTagName(this.params.tagName || '*');
  +        return results;
  +      case 'xpath':
  +        return document._getElementsByXPath(this.xpath, root);
  +      default:
  +       return this.matcher(root);
  +    }
  +  },
   
  -    var results = [];
  -    for (var i = 0, length = scope.length; i < length; i++)
  -      if (this.match(element = scope[i]))
  -        results.push(Element.extend(element));
  +  match: function(element) {
  +    this.tokens = [];
   
  -    return results;
  +    var e = this.expression, ps = Selector.patterns, as = Selector.assertions;
  +    var le, p, m;
  +
  +    while (e && le !== e && (/\S/).test(e)) {
  +      le = e;
  +      for (var i in ps) {
  +        p = ps[i];
  +        if (m = e.match(p)) {
  +          // use the Selector.assertions methods unless the selector
  +          // is too complex.
  +          if (as[i]) {
  +            this.tokens.push([i, Object.clone(m)]);
  +            e = e.replace(m[0], '');
  +          } else {
  +            // reluctantly do a document-wide search
  +            // and look for a match in the array
  +            return this.findElements(document).include(element);
  +          }
  +        }
  +      }
  +    }
  +
  +    var match = true, name, matches;
  +    for (var i = 0, token; token = this.tokens[i]; i++) {
  +      name = token[0], matches = token[1];
  +      if (!Selector.assertions[name](element, matches)) {
  +        match = false; break;
  +      }
  +    }
  +
  +    return match;
     },
   
     toString: function() {
       return this.expression;
  +  },
  +
  +  inspect: function() {
  +    return "#<Selector:" + this.expression.inspect() + ">";
     }
  -}
  +});
   
   Object.extend(Selector, {
  +  _cache: { },
  +
  +  xpath: {
  +    descendant:   "//*",
  +    child:        "/*",
  +    adjacent:     "/following-sibling::*[1]",
  +    laterSibling: '/following-sibling::*',
  +    tagName:      function(m) {
  +      if (m[1] == '*') return '';
  +      return "[local-name()='" + m[1].toLowerCase() +
  +             "' or local-name()='" + m[1].toUpperCase() + "']";
  +    },
  +    className:    "[contains(concat(' ', @class, ' '), ' #{1} ')]",
  +    id:           "[@id='#{1}']",
  +    attrPresence: function(m) {
  +      m[1] = m[1].toLowerCase();
  +      return new Template("[@#{1}]").evaluate(m);
  +    },
  +    attr: function(m) {
  +      m[1] = m[1].toLowerCase();
  +      m[3] = m[5] || m[6];
  +      return new Template(Selector.xpath.operators[m[2]]).evaluate(m);
  +    },
  +    pseudo: function(m) {
  +      var h = Selector.xpath.pseudos[m[1]];
  +      if (!h) return '';
  +      if (Object.isFunction(h)) return h(m);
  +      return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m);
  +    },
  +    operators: {
  +      '=':  "[@#{1}='#{3}']",
  +      '!=': "[@#{1}!='#{3}']",
  +      '^=': "[starts-with(@#{1}, '#{3}')]",
  +      '$=': "[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']",
  +      '*=': "[contains(@#{1}, '#{3}')]",
  +      '~=': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]",
  +      '|=': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]"
  +    },
  +    pseudos: {
  +      'first-child': '[not(preceding-sibling::*)]',
  +      'last-child':  '[not(following-sibling::*)]',
  +      'only-child':  '[not(preceding-sibling::* or following-sibling::*)]',
  +      'empty':       "[count(*) = 0 and (count(text()) = 0)]",
  +      'checked':     "[@checked]",
  +      'disabled':    "[(@disabled) and (@type!='hidden')]",
  +      'enabled':     "[not(@disabled) and (@type!='hidden')]",
  +      'not': function(m) {
  +        var e = m[6], p = Selector.patterns,
  +            x = Selector.xpath, le, v;
  +
  +        var exclusion = [];
  +        while (e && le != e && (/\S/).test(e)) {
  +          le = e;
  +          for (var i in p) {
  +            if (m = e.match(p[i])) {
  +              v = Object.isFunction(x[i]) ? x[i](m) : new Template(x[i]).evaluate(m);
  +              exclusion.push("(" + v.substring(1, v.length - 1) + ")");
  +              e = e.replace(m[0], '');
  +              break;
  +            }
  +          }
  +        }
  +        return "[not(" + exclusion.join(" and ") + ")]";
  +      },
  +      'nth-child':      function(m) {
  +        return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m);
  +      },
  +      'nth-last-child': function(m) {
  +        return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m);
  +      },
  +      'nth-of-type':    function(m) {
  +        return Selector.xpath.pseudos.nth("position() ", m);
  +      },
  +      'nth-last-of-type': function(m) {
  +        return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", m);
  +      },
  +      'first-of-type':  function(m) {
  +        m[6] = "1"; return Selector.xpath.pseudos['nth-of-type'](m);
  +      },
  +      'last-of-type':   function(m) {
  +        m[6] = "1"; return Selector.xpath.pseudos['nth-last-of-type'](m);
  +      },
  +      'only-of-type':   function(m) {
  +        var p = Selector.xpath.pseudos; return p['first-of-type'](m) + p['last-of-type'](m);
  +      },
  +      nth: function(fragment, m) {
  +        var mm, formula = m[6], predicate;
  +        if (formula == 'even') formula = '2n+0';
  +        if (formula == 'odd')  formula = '2n+1';
  +        if (mm = formula.match(/^(\d+)$/)) // digit only
  +          return '[' + fragment + "= " + mm[1] + ']';
  +        if (mm = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b
  +          if (mm[1] == "-") mm[1] = -1;
  +          var a = mm[1] ? Number(mm[1]) : 1;
  +          var b = mm[2] ? Number(mm[2]) : 0;
  +          predicate = "[((#{fragment} - #{b}) mod #{a} = 0) and " +
  +          "((#{fragment} - #{b}) div #{a} >= 0)]";
  +          return new Template(predicate).evaluate({
  +            fragment: fragment, a: a, b: b });
  +        }
  +      }
  +    }
  +  },
  +
  +  criteria: {
  +    tagName:      'n = h.tagName(n, r, "#{1}", c);      c = false;',
  +    className:    'n = h.className(n, r, "#{1}", c);    c = false;',
  +    id:           'n = h.id(n, r, "#{1}", c);           c = false;',
  +    attrPresence: 'n = h.attrPresence(n, r, "#{1}", c); c = false;',
  +    attr: function(m) {
  +      m[3] = (m[5] || m[6]);
  +      return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}", c); c = false;').evaluate(m);
  +    },
  +    pseudo: function(m) {
  +      if (m[6]) m[6] = m[6].replace(/"/g, '\\"');
  +      return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(m);
  +    },
  +    descendant:   'c = "descendant";',
  +    child:        'c = "child";',
  +    adjacent:     'c = "adjacent";',
  +    laterSibling: 'c = "laterSibling";'
  +  },
  +
  +  patterns: {
  +    // combinators must be listed first
  +    // (and descendant needs to be last combinator)
  +    laterSibling: /^\s*~\s*/,
  +    child:        /^\s*>\s*/,
  +    adjacent:     /^\s*\+\s*/,
  +    descendant:   /^\s/,
  +
  +    // selectors follow
  +    tagName:      /^\s*(\*|[\w\-]+)(\b|$)?/,
  +    id:           /^#([\w\-\*]+)(\b|$)/,
  +    className:    /^\.([\w\-\*]+)(\b|$)/,
  +    pseudo:
  +/^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s|[:+~>]))/,
  +    attrPresence: /^\[((?:[\w]+:)?[\w]+)\]/,
  +    attr:         /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/
  +  },
  +
  +  // for Selector.match and Element#match
  +  assertions: {
  +    tagName: function(element, matches) {
  +      return matches[1].toUpperCase() == element.tagName.toUpperCase();
  +    },
  +
  +    className: function(element, matches) {
  +      return Element.hasClassName(element, matches[1]);
  +    },
  +
  +    id: function(element, matches) {
  +      return element.id === matches[1];
  +    },
  +
  +    attrPresence: function(element, matches) {
  +      return Element.hasAttribute(element, matches[1]);
  +    },
  +
  +    attr: function(element, matches) {
  +      var nodeValue = Element.readAttribute(element, matches[1]);
  +      return nodeValue && Selector.operators[matches[2]](nodeValue, matches[5] || matches[6]);
  +    }
  +  },
  +
  +  handlers: {
  +    // UTILITY FUNCTIONS
  +    // joins two collections
  +    concat: function(a, b) {
  +      for (var i = 0, node; node = b[i]; i++)
  +        a.push(node);
  +      return a;
  +    },
  +
  +    // marks an array of nodes for counting
  +    mark: function(nodes) {
  +      var _true = Prototype.emptyFunction;
  +      for (var i = 0, node; node = nodes[i]; i++)
  +        node._countedByPrototype = _true;
  +      return nodes;
  +    },
  +
  +    unmark: function(nodes) {
  +      for (var i = 0, node; node = nodes[i]; i++)
  +        node._countedByPrototype = undefined;
  +      return nodes;
  +    },
  +
  +    // mark each child node with its position (for nth calls)
  +    // "ofType" flag indicates whether we're indexing for nth-of-type
  +    // rather than nth-child
  +    index: function(parentNode, reverse, ofType) {
  +      parentNode._countedByPrototype = Prototype.emptyFunction;
  +      if (reverse) {
  +        for (var nodes = parentNode.childNodes, i = nodes.length - 1, j = 1; i >= 0; i--) {
  +          var node = nodes[i];
  +          if (node.nodeType == 1 && (!ofType || node._countedByPrototype)) node.nodeIndex = j++;
  +        }
  +      } else {
  +        for (var i = 0, j = 1, nodes = parentNode.childNodes; node = nodes[i]; i++)
  +          if (node.nodeType == 1 && (!ofType || node._countedByPrototype)) node.nodeIndex = j++;
  +      }
  +    },
  +
  +    // filters out duplicates and extends all nodes
  +    unique: function(nodes) {
  +      if (nodes.length == 0) return nodes;
  +      var results = [], n;
  +      for (var i = 0, l = nodes.length; i < l; i++)
  +        if (!(n = nodes[i])._countedByPrototype) {
  +          n._countedByPrototype = Prototype.emptyFunction;
  +          results.push(Element.extend(n));
  +        }
  +      return Selector.handlers.unmark(results);
  +    },
  +
  +    // COMBINATOR FUNCTIONS
  +    descendant: function(nodes) {
  +      var h = Selector.handlers;
  +      for (var i = 0, results = [], node; node = nodes[i]; i++)
  +        h.concat(results, node.getElementsByTagName('*'));
  +      return results;
  +    },
  +
  +    child: function(nodes) {
  +      var h = Selector.handlers;
  +      for (var i = 0, results = [], node; node = nodes[i]; i++) {
  +        for (var j = 0, child; child = node.childNodes[j]; j++)
  +          if (child.nodeType == 1 && child.tagName != '!') results.push(child);
  +      }
  +      return results;
  +    },
  +
  +    adjacent: function(nodes) {
  +      for (var i = 0, results = [], node; node = nodes[i]; i++) {
  +        var next = this.nextElementSibling(node);
  +        if (next) results.push(next);
  +      }
  +      return results;
  +    },
  +
  +    laterSibling: function(nodes) {
  +      var h = Selector.handlers;
  +      for (var i = 0, results = [], node; node = nodes[i]; i++)
  +        h.concat(results, Element.nextSiblings(node));
  +      return results;
  +    },
  +
  +    nextElementSibling: function(node) {
  +      while (node = node.nextSibling)
  +        if (node.nodeType == 1) return node;
  +      return null;
  +    },
  +
  +    previousElementSibling: function(node) {
  +      while (node = node.previousSibling)
  +        if (node.nodeType == 1) return node;
  +      return null;
  +    },
  +
  +    // TOKEN FUNCTIONS
  +    tagName: function(nodes, root, tagName, combinator) {
  +      var uTagName = tagName.toUpperCase();
  +      var results = [], h = Selector.handlers;
  +      if (nodes) {
  +        if (combinator) {
  +          // fastlane for ordinary descendant combinators
  +          if (combinator == "descendant") {
  +            for (var i = 0, node; node = nodes[i]; i++)
  +              h.concat(results, node.getElementsByTagName(tagName));
  +            return results;
  +          } else nodes = this[combinator](nodes);
  +          if (tagName == "*") return nodes;
  +        }
  +        for (var i = 0, node; node = nodes[i]; i++)
  +          if (node.tagName.toUpperCase() === uTagName) results.push(node);
  +        return results;
  +      } else return root.getElementsByTagName(tagName);
  +    },
  +
  +    id: function(nodes, root, id, combinator) {
  +      var targetNode = $(id), h = Selector.handlers;
  +      if (!targetNode) return [];
  +      if (!nodes && root == document) return [targetNode];
  +      if (nodes) {
  +        if (combinator) {
  +          if (combinator == 'child') {
  +            for (var i = 0, node; node = nodes[i]; i++)
  +              if (targetNode.parentNode == node) return [targetNode];
  +          } else if (combinator == 'descendant') {
  +            for (var i = 0, node; node = nodes[i]; i++)
  +              if (Element.descendantOf(targetNode, node)) return [targetNode];
  +          } else if (combinator == 'adjacent') {
  +            for (var i = 0, node; node = nodes[i]; i++)
  +              if (Selector.handlers.previousElementSibling(targetNode) == node)
  +                return [targetNode];
  +          } else nodes = h[combinator](nodes);
  +        }
  +        for (var i = 0, node; node = nodes[i]; i++)
  +          if (node == targetNode) return [targetNode];
  +        return [];
  +      }
  +      return (targetNode && Element.descendantOf(targetNode, root)) ? [targetNode] : [];
  +    },
  +
  +    className: function(nodes, root, className, combinator) {
  +      if (nodes && combinator) nodes = this[combinator](nodes);
  +      return Selector.handlers.byClassName(nodes, root, className);
  +    },
  +
  +    byClassName: function(nodes, root, className) {
  +      if (!nodes) nodes = Selector.handlers.descendant([root]);
  +      var needle = ' ' + className + ' ';
  +      for (var i = 0, results = [], node, nodeClassName; node = nodes[i]; i++) {
  +        nodeClassName = node.className;
  +        if (nodeClassName.length == 0) continue;
  +        if (nodeClassName == className || (' ' + nodeClassName + ' ').include(needle))
  +          results.push(node);
  +      }
  +      return results;
  +    },
  +
  +    attrPresence: function(nodes, root, attr, combinator) {
  +      if (!nodes) nodes = root.getElementsByTagName("*");
  +      if (nodes && combinator) nodes = this[combinator](nodes);
  +      var results = [];
  +      for (var i = 0, node; node = nodes[i]; i++)
  +        if (Element.hasAttribute(node, attr)) results.push(node);
  +      return results;
  +    },
  +
  +    attr: function(nodes, root, attr, value, operator, combinator) {
  +      if (!nodes) nodes = root.getElementsByTagName("*");
  +      if (nodes && combinator) nodes = this[combinator](nodes);
  +      var handler = Selector.operators[operator], results = [];
  +      for (var i = 0, node; node = nodes[i]; i++) {
  +        var nodeValue = Element.readAttribute(node, attr);
  +        if (nodeValue === null) continue;
  +        if (handler(nodeValue, value)) results.push(node);
  +      }
  +      return results;
  +    },
  +
  +    pseudo: function(nodes, name, value, root, combinator) {
  +      if (nodes && combinator) nodes = this[combinator](nodes);
  +      if (!nodes) nodes = root.getElementsByTagName("*");
  +      return Selector.pseudos[name](nodes, value, root);
  +    }
  +  },
  +
  +  pseudos: {
  +    'first-child': function(nodes, value, root) {
  +      for (var i = 0, results = [], node; node = nodes[i]; i++) {
  +        if (Selector.handlers.previousElementSibling(node)) continue;
  +          results.push(node);
  +      }
  +      return results;
  +    },
  +    'last-child': function(nodes, value, root) {
  +      for (var i = 0, results = [], node; node = nodes[i]; i++) {
  +        if (Selector.handlers.nextElementSibling(node)) continue;
  +          results.push(node);
  +      }
  +      return results;
  +    },
  +    'only-child': function(nodes, value, root) {
  +      var h = Selector.handlers;
  +      for (var i = 0, results = [], node; node = nodes[i]; i++)
  +        if (!h.previousElementSibling(node) && !h.nextElementSibling(node))
  +          results.push(node);
  +      return results;
  +    },
  +    'nth-child':        function(nodes, formula, root) {
  +      return Selector.pseudos.nth(nodes, formula, root);
  +    },
  +    'nth-last-child':   function(nodes, formula, root) {
  +      return Selector.pseudos.nth(nodes, formula, root, true);
  +    },
  +    'nth-of-type':      function(nodes, formula, root) {
  +      return Selector.pseudos.nth(nodes, formula, root, false, true);
  +    },
  +    'nth-last-of-type': function(nodes, formula, root) {
  +      return Selector.pseudos.nth(nodes, formula, root, true, true);
  +    },
  +    'first-of-type':    function(nodes, formula, root) {
  +      return Selector.pseudos.nth(nodes, "1", root, false, true);
  +    },
  +    'last-of-type':     function(nodes, formula, root) {
  +      return Selector.pseudos.nth(nodes, "1", root, true, true);
  +    },
  +    'only-of-type':     function(nodes, formula, root) {
  +      var p = Selector.pseudos;
  +      return p['last-of-type'](p['first-of-type'](nodes, formula, root), formula, root);
  +    },
  +
  +    // handles the an+b logic
  +    getIndices: function(a, b, total) {
  +      if (a == 0) return b > 0 ? [b] : [];
  +      return $R(1, total).inject([], function(memo, i) {
  +        if (0 == (i - b) % a && (i - b) / a >= 0) memo.push(i);
  +        return memo;
  +      });
  +    },
  +
  +    // handles nth(-last)-child, nth(-last)-of-type, and (first|last)-of-type
  +    nth: function(nodes, formula, root, reverse, ofType) {
  +      if (nodes.length == 0) return [];
  +      if (formula == 'even') formula = '2n+0';
  +      if (formula == 'odd')  formula = '2n+1';
  +      var h = Selector.handlers, results = [], indexed = [], m;
  +      h.mark(nodes);
  +      for (var i = 0, node; node = nodes[i]; i++) {
  +        if (!node.parentNode._countedByPrototype) {
  +          h.index(node.parentNode, reverse, ofType);
  +          indexed.push(node.parentNode);
  +        }
  +      }
  +      if (formula.match(/^\d+$/)) { // just a number
  +        formula = Number(formula);
  +        for (var i = 0, node; node = nodes[i]; i++)
  +          if (node.nodeIndex == formula) results.push(node);
  +      } else if (m = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b
  +        if (m[1] == "-") m[1] = -1;
  +        var a = m[1] ? Number(m[1]) : 1;
  +        var b = m[2] ? Number(m[2]) : 0;
  +        var indices = Selector.pseudos.getIndices(a, b, nodes.length);
  +        for (var i = 0, node, l = indices.length; node = nodes[i]; i++) {
  +          for (var j = 0; j < l; j++)
  +            if (node.nodeIndex == indices[j]) results.push(node);
  +        }
  +      }
  +      h.unmark(nodes);
  +      h.unmark(indexed);
  +      return results;
  +    },
  +
  +    'empty': function(nodes, value, root) {
  +      for (var i = 0, results = [], node; node = nodes[i]; i++) {
  +        // IE treats comments as element nodes
  +        if (node.tagName == '!' || node.firstChild) continue;
  +        results.push(node);
  +      }
  +      return results;
  +    },
  +
  +    'not': function(nodes, selector, root) {
  +      var h = Selector.handlers, selectorType, m;
  +      var exclusions = new Selector(selector).findElements(root);
  +      h.mark(exclusions);
  +      for (var i = 0, results = [], node; node = nodes[i]; i++)
  +        if (!node._countedByPrototype) results.push(node);
  +      h.unmark(exclusions);
  +      return results;
  +    },
  +
  +    'enabled': function(nodes, value, root) {
  +      for (var i = 0, results = [], node; node = nodes[i]; i++)
  +        if (!node.disabled && (!node.type || node.type !== 'hidden'))
  +          results.push(node);
  +      return results;
  +    },
  +
  +    'disabled': function(nodes, value, root) {
  +      for (var i = 0, results = [], node; node = nodes[i]; i++)
  +        if (node.disabled) results.push(node);
  +      return results;
  +    },
  +
  +    'checked': function(nodes, value, root) {
  +      for (var i = 0, results = [], node; node = nodes[i]; i++)
  +        if (node.checked) results.push(node);
  +      return results;
  +    }
  +  },
  +
  +  operators: {
  +    '=':  function(nv, v) { return nv == v; },
  +    '!=': function(nv, v) { return nv != v; },
  +    '^=': function(nv, v) { return nv == v || nv && nv.startsWith(v); },
  +    '$=': function(nv, v) { return nv == v || nv && nv.endsWith(v); },
  +    '*=': function(nv, v) { return nv == v || nv && nv.include(v); },
  +    '$=': function(nv, v) { return nv.endsWith(v); },
  +    '*=': function(nv, v) { return nv.include(v); },
  +    '~=': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + ' '); },
  +    '|=': function(nv, v) { return ('-' + (nv || "").toUpperCase() +
  +     '-').include('-' + (v || "").toUpperCase() + '-'); }
  +  },
  +
  +  split: function(expression) {
  +    var expressions = [];
  +    expression.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) {
  +      expressions.push(m[1].strip());
  +    });
  +    return expressions;
  +  },
  +
     matchElements: function(elements, expression) {
  -    var selector = new Selector(expression);
  -    return elements.select(selector.match.bind(selector)).collect(Element.extend);
  +    var matches = $$(expression), h = Selector.handlers;
  +    h.mark(matches);
  +    for (var i = 0, results = [], element; element = elements[i]; i++)
  +      if (element._countedByPrototype) results.push(element);
  +    h.unmark(matches);
  +    return results;
     },
   
     findElement: function(elements, expression, index) {
  -    if (typeof expression == 'number') index = expression, expression = false;
  +    if (Object.isNumber(expression)) {
  +      index = expression; expression = false;
  +    }
       return Selector.matchElements(elements, expression || '*')[index || 0];
     },
   
     findChildElements: function(element, expressions) {
  -    return expressions.map(function(expression) {
  -      return expression.strip().split(/\s+/).inject([null], function(results, expr) {
  -        var selector = new Selector(expr);
  -        return results.inject([], function(elements, result) {
  -          return elements.concat(selector.findElements(result || element));
  -        });
  -      });
  -    }).flatten();
  +    expressions = Selector.split(expressions.join(','));
  +    var results = [], h = Selector.handlers;
  +    for (var i = 0, l = expressions.length, selector; i < l; i++) {
  +      selector = new Selector(expressions[i].strip());
  +      h.concat(results, selector.findElements(element));
  +    }
  +    return (l > 1) ? h.unique(results) : results;
     }
   });
   
  +if (Prototype.Browser.IE) {
  +  Object.extend(Selector.handlers, {
  +    // IE returns comment nodes on getElementsByTagName("*").
  +    // Filter them out.
  +    concat: function(a, b) {
  +      for (var i = 0, node; node = b[i]; i++)
  +        if (node.tagName !== "!") a.push(node);
  +      return a;
  +    },
  +
  +    // IE improperly serializes _countedByPrototype in (inner|outer)HTML.
  +    unmark: function(nodes) {
  +      for (var i = 0, node; node = nodes[i]; i++)
  +        node.removeAttribute('_countedByPrototype');
  +      return nodes;
  +    }
  +  });
  +}
  +
   function $$() {
     return Selector.findChildElements(document, $A(arguments));
   }
  @@ -1676,18 +3449,34 @@
       return form;
     },
   
  -  serializeElements: function(elements) {
  -    return elements.inject([], function(queryComponents, element) {
  -      var queryComponent = Form.Element.serialize(element);
  -      if (queryComponent) queryComponents.push(queryComponent);
  -      return queryComponents;
  -    }).join('&');
  +  serializeElements: function(elements, options) {
  +    if (typeof options != 'object') options = { hash: !!options };
  +    else if (Object.isUndefined(options.hash)) options.hash = true;
  +    var key, value, submitted = false, submit = options.submit;
  +
  +    var data = elements.inject({ }, function(result, element) {
  +      if (!element.disabled && element.name) {
  +        key = element.name; value = $(element).getValue();
  +        if (value != null && element.type != 'file' && (element.type != 'submit' || (!submitted &&
  +            submit !== false && (!submit || key == submit) && (submitted = true)))) {
  +          if (key in result) {
  +            // a key is already present; construct an array of values
  +            if (!Object.isArray(result[key])) result[key] = [result[key]];
  +            result[key].push(value);
  +          }
  +          else result[key] = value;
  +        }
  +      }
  +      return result;
  +    });
  +
  +    return options.hash ? data : Object.toQueryString(data);
     }
   };
   
   Form.Methods = {
  -  serialize: function(form) {
  -    return Form.serializeElements($(form).getElements());
  +  serialize: function(form, options) {
  +    return Form.serializeElements(Form.getElements(form), options);
     },
   
     getElements: function(form) {
  @@ -1704,14 +3493,11 @@
       form = $(form);
       var inputs = form.getElementsByTagName('input');
   
  -    if (!typeName && !name)
  -      return inputs;
  +    if (!typeName && !name) return $A(inputs).map(Element.extend);
   
  -    var matchingInputs = new Array();
  -    for (var i = 0, length = inputs.length; i < length; i++) {
  +    for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) {
         var input = inputs[i];
  -      if ((typeName && input.type != typeName) ||
  -          (name && input.name != name))
  +      if ((typeName && input.type != typeName) || (name && input.name != name))
           continue;
         matchingInputs.push(Element.extend(input));
       }
  @@ -1721,25 +3507,26 @@
   
     disable: function(form) {
       form = $(form);
  -    form.getElements().each(function(element) {
  -      element.blur();
  -      element.disabled = 'true';
  -    });
  +    Form.getElements(form).invoke('disable');
       return form;
     },
   
     enable: function(form) {
       form = $(form);
  -    form.getElements().each(function(element) {
  -      element.disabled = '';
  -    });
  +    Form.getElements(form).invoke('enable');
       return form;
     },
   
     findFirstElement: function(form) {
  -    return $(form).getElements().find(function(element) {
  -      return element.type != 'hidden' && !element.disabled &&
  -        ['input', 'select', 'textarea'].include(element.tagName.toLowerCase());
  +    var elements = $(form).getElements().findAll(function(element) {
  +      return 'hidden' != element.type && !element.disabled;
  +    });
  +    var firstByIndex = elements.findAll(function(element) {
  +      return element.hasAttribute('tabIndex') && element.tabIndex >= 0;
  +    }).sortBy(function(element) { return element.tabIndex }).first();
  +
  +    return firstByIndex ? firstByIndex : elements.find(function(element) {
  +      return ['input', 'select', 'textarea'].include(element.tagName.toLowerCase());
       });
     },
   
  @@ -1747,10 +3534,26 @@
       form = $(form);
       form.findFirstElement().activate();
       return form;
  -  }
  -}
  +  },
  +
  +  request: function(form, options) {
  +    form = $(form), options = Object.clone(options || { });
   
  -Object.extend(Form, Form.Methods);
  +    var params = options.parameters, action = form.readAttribute('action') || '';
  +    if (action.blank()) action = window.location.href;
  +    options.parameters = form.serialize(true);
  +
  +    if (params) {
  +      if (Object.isString(params)) params = params.toQueryParams();
  +      Object.extend(options.parameters, params);
  +    }
  +
  +    if (form.hasAttribute('method') && !options.method)
  +      options.method = form.method;
  +
  +    return new Ajax.Request(action, options);
  +  }
  +};
   
   /*--------------------------------------------------------------------------*/
   
  @@ -1764,35 +3567,33 @@
       $(element).select();
       return element;
     }
  -}
  +};
   
   Form.Element.Methods = {
     serialize: function(element) {
       element = $(element);
  -    if (element.disabled) return '';
  -    var method = element.tagName.toLowerCase();
  -    var parameter = Form.Element.Serializers[method](element);
  -
  -    if (parameter) {
  -      var key = encodeURIComponent(parameter[0]);
  -      if (key.length == 0) return;
  -
  -      if (parameter[1].constructor != Array)
  -        parameter[1] = [parameter[1]];
  -
  -      return parameter[1].map(function(value) {
  -        return key + '=' + encodeURIComponent(value);
  -      }).join('&');
  +    if (!element.disabled && element.name) {
  +      var value = element.getValue();
  +      if (value != undefined) {
  +        var pair = { };
  +        pair[element.name] = value;
  +        return Object.toQueryString(pair);
  +      }
       }
  +    return '';
     },
   
     getValue: function(element) {
       element = $(element);
       var method = element.tagName.toLowerCase();
  -    var parameter = Form.Element.Serializers[method](element);
  +    return Form.Element.Serializers[method](element);
  +  },
   
  -    if (parameter)
  -      return parameter[1];
  +  setValue: function(element, value) {
  +    element = $(element);
  +    var method = element.tagName.toLowerCase();
  +    Form.Element.Serializers[method](element, value);
  +    return element;
     },
   
     clear: function(element) {
  @@ -1806,9 +3607,12 @@
   
     activate: function(element) {
       element = $(element);
  -    element.focus();
  -    if (element.select)
  -      element.select();
  +    try {
  +      element.focus();
  +      if (element.select && (element.tagName.toLowerCase() != 'input' ||
  +          !['button', 'reset', 'submit'].include(element.type)))
  +        element.select();
  +    } catch (e) { }
       return element;
     },
   
  @@ -1820,104 +3624,107 @@
   
     enable: function(element) {
       element = $(element);
  -    element.blur();
       element.disabled = false;
       return element;
     }
  -}
  +};
  +
  +/*--------------------------------------------------------------------------*/
   
  -Object.extend(Form.Element, Form.Element.Methods);
   var Field = Form.Element;
  +var $F = Form.Element.Methods.getValue;
   
   /*--------------------------------------------------------------------------*/
   
   Form.Element.Serializers = {
  -  input: function(element) {
  +  input: function(element, value) {
       switch (element.type.toLowerCase()) {
         case 'checkbox':
         case 'radio':
  -        return Form.Element.Serializers.inputSelector(element);
  +        return Form.Element.Serializers.inputSelector(element, value);
         default:
  -        return Form.Element.Serializers.textarea(element);
  +        return Form.Element.Serializers.textarea(element, value);
       }
  -    return false;
     },
   
  -  inputSelector: function(element) {
  -    if (element.checked)
  -      return [element.name, element.value];
  +  inputSelector: function(element, value) {
  +    if (Object.isUndefined(value)) return element.checked ? element.value : null;
  +    else element.checked = !!value;
  +  },
  +
  +  textarea: function(element, value) {
  +    if (Object.isUndefined(value)) return element.value;
  +    else element.value = value;
  +  },
  +
  +  select: function(element, value) {
  +    if (Object.isUndefined(value))
  +      return this[element.type == 'select-one' ?
  +        'selectOne' : 'selectMany'](element);
  +    else {
  +      var opt, currentValue, single = !Object.isArray(value);
  +      for (var i = 0, length = element.length; i < length; i++) {
  +        opt = element.options[i];
  +        currentValue = this.optionValue(opt);
  +        if (single) {
  +          if (currentValue == value) {
  +            opt.selected = true;
  +            return;
  +          }
  +        }
  +        else opt.selected = value.include(currentValue);
  +      }
  +    }
     },
   
  -  textarea: function(element) {
  -    return [element.name, element.value];
  +  selectOne: function(element) {
  +    var index = element.selectedIndex;
  +    return index >= 0 ? this.optionValue(element.options[index]) : null;
     },
   
  -  select: function(element) {
  -    return Form.Element.Serializers[element.type == 'select-one' ?
  -      'selectOne' : 'selectMany'](element);
  -  },
  +  selectMany: function(element) {
  +    var values, length = element.length;
  +    if (!length) return null;
   
  -  selectOne: function(element) {
  -    var value = '', opt, index = element.selectedIndex;
  -    if (index >= 0) {
  -      opt = Element.extend(element.options[index]);
  -      // Uses the new potential extension if hasAttribute isn't native.
  -      value = opt.hasAttribute('value') ? opt.value : opt.text;
  +    for (var i = 0, values = []; i < length; i++) {
  +      var opt = element.options[i];
  +      if (opt.selected) values.push(this.optionValue(opt));
       }
  -    return [element.name, value];
  +    return values;
     },
   
  -  selectMany: function(element) {
  -    var value = [];
  -    for (var i = 0; i < element.length; i++) {
  -      var opt = Element.extend(element.options[i]);
  -      if (opt.selected)
  -        // Uses the new potential extension if hasAttribute isn't native.
  -        value.push(opt.hasAttribute('value') ? opt.value : opt.text);
  -    }
  -    return [element.name, value];
  +  optionValue: function(opt) {
  +    // extend element because hasAttribute may not be native
  +    return Element.extend(opt).hasAttribute('value') ? opt.value : opt.text;
     }
  -}
  -
  -/*--------------------------------------------------------------------------*/
  -
  -var $F = Form.Element.getValue;
  +};
   
   /*--------------------------------------------------------------------------*/
   
  -Abstract.TimedObserver = function() {}
  -Abstract.TimedObserver.prototype = {
  -  initialize: function(element, frequency, callback) {
  -    this.frequency = frequency;
  +Abstract.TimedObserver = Class.create(PeriodicalExecuter, {
  +  initialize: function($super, element, frequency, callback) {
  +    $super(callback, frequency);
       this.element   = $(element);
  -    this.callback  = callback;
  -
       this.lastValue = this.getValue();
  -    this.registerCallback();
     },
   
  -  registerCallback: function() {
  -    setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
  -  },
  -
  -  onTimerEvent: function() {
  +  execute: function() {
       var value = this.getValue();
  -    if (this.lastValue != value) {
  +    if (Object.isString(this.lastValue) && Object.isString(value) ?
  +        this.lastValue != value : String(this.lastValue) != String(value)) {
         this.callback(this.element, value);
         this.lastValue = value;
       }
     }
  -}
  +});
   
  -Form.Element.Observer = Class.create();
  -Form.Element.Observer.prototype = Object.extend(new Abstract.TimedObserver(), {
  +Form.Element.Observer = Class.create(Abstract.TimedObserver, {
     getValue: function() {
       return Form.Element.getValue(this.element);
     }
   });
   
  -Form.Observer = Class.create();
  -Form.Observer.prototype = Object.extend(new Abstract.TimedObserver(), {
  +Form.Observer = Class.create(Abstract.TimedObserver, {
     getValue: function() {
       return Form.serialize(this.element);
     }
  @@ -1925,8 +3732,7 @@
   
   /*--------------------------------------------------------------------------*/
   
  -Abstract.EventObserver = function() {}
  -Abstract.EventObserver.prototype = {
  +Abstract.EventObserver = Class.create({
     initialize: function(element, callback) {
       this.element  = $(element);
       this.callback = callback;
  @@ -1947,7 +3753,7 @@
     },
   
     registerFormCallbacks: function() {
  -    Form.getElements(this.element).each(this.registerCallback.bind(this));
  +    Form.getElements(this.element).each(this.registerCallback, this);
     },
   
     registerCallback: function(element) {
  @@ -1963,24 +3769,20 @@
         }
       }
     }
  -}
  +});
   
  -Form.Element.EventObserver = Class.create();
  -Form.Element.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), {
  +Form.Element.EventObserver = Class.create(Abstract.EventObserver, {
     getValue: function() {
       return Form.Element.getValue(this.element);
     }
   });
   
  -Form.EventObserver = Class.create();
  -Form.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), {
  +Form.EventObserver = Class.create(Abstract.EventObserver, {
     getValue: function() {
       return Form.serialize(this.element);
     }
   });
  -if (!window.Event) {
  -  var Event = new Object();
  -}
  +if (!window.Event) var Event = { };
   
   Object.extend(Event, {
     KEY_BACKSPACE: 8,
  @@ -1996,102 +3798,368 @@
     KEY_END:      35,
     KEY_PAGEUP:   33,
     KEY_PAGEDOWN: 34,
  +  KEY_INSERT:   45,
   
  -  element: function(event) {
  -    return event.target || event.srcElement;
  -  },
  +  cache: { },
   
  -  isLeftClick: function(event) {
  -    return (((event.which) && (event.which == 1)) ||
  -            ((event.button) && (event.button == 1)));
  -  },
  +  relatedTarget: function(event) {
  +    var element;
  +    switch(event.type) {
  +      case 'mouseover': element = event.fromElement; break;
  +      case 'mouseout':  element = event.toElement;   break;
  +      default: return null;
  +    }
  +    return Element.extend(element);
  +  }
  +});
   
  -  pointerX: function(event) {
  -    return event.pageX || (event.clientX +
  -      (document.documentElement.scrollLeft || document.body.scrollLeft));
  -  },
  +Event.Methods = (function() {
  +  var isButton;
   
  -  pointerY: function(event) {
  -    return event.pageY || (event.clientY +
  -      (document.documentElement.scrollTop || document.body.scrollTop));
  -  },
  +  if (Prototype.Browser.IE) {
  +    var buttonMap = { 0: 1, 1: 4, 2: 2 };
  +    isButton = function(event, code) {
  +      return event.button == buttonMap[code];
  +    };
  +
  +  } else if (Prototype.Browser.WebKit) {
  +    isButton = function(event, code) {
  +      switch (code) {
  +        case 0: return event.which == 1 && !event.metaKey;
  +        case 1: return event.which == 1 && event.metaKey;
  +        default: return false;
  +      }
  +    };
   
  -  stop: function(event) {
  -    if (event.preventDefault) {
  +  } else {
  +    isButton = function(event, code) {
  +      return event.which ? (event.which === code + 1) : (event.button === code);
  +    };
  +  }
  +
  +  return {
  +    isLeftClick:   function(event) { return isButton(event, 0) },
  +    isMiddleClick: function(event) { return isButton(event, 1) },
  +    isRightClick:  function(event) { return isButton(event, 2) },
  +
  +    element: function(event) {
  +      event = Event.extend(event);
  +
  +      var node          = event.target,
  +          type          = event.type,
  +          currentTarget = event.currentTarget;
  +
  +      if (currentTarget && currentTarget.tagName) {
  +        // Firefox screws up the "click" event when moving between radio buttons
  +        // via arrow keys. It also screws up the "load" and "error" events on images,
  +        // reporting the document as the target instead of the original image.
  +        if (type === 'load' || type === 'error' ||
  +          (type === 'click' && currentTarget.tagName.toLowerCase() === 'input'
  +            && currentTarget.type === 'radio'))
  +              node = currentTarget;
  +      }
  +      if (node.nodeType == Node.TEXT_NODE) node = node.parentNode;
  +      return Element.extend(node);
  +    },
  +
  +    findElement: function(event, expression) {
  +      var element = Event.element(event);
  +      if (!expression) return element;
  +      var elements = [element].concat(element.ancestors());
  +      return Selector.findElement(elements, expression, 0);
  +    },
  +
  +    pointer: function(event) {
  +      var docElement = document.documentElement,
  +      body = document.body || { scrollLeft: 0, scrollTop: 0 };
  +      return {
  +        x: event.pageX || (event.clientX +
  +          (docElement.scrollLeft || body.scrollLeft) -
  +          (docElement.clientLeft || 0)),
  +        y: event.pageY || (event.clientY +
  +          (docElement.scrollTop || body.scrollTop) -
  +          (docElement.clientTop || 0))
  +      };
  +    },
  +
  +    pointerX: function(event) { return Event.pointer(event).x },
  +    pointerY: function(event) { return Event.pointer(event).y },
  +
  +    stop: function(event) {
  +      Event.extend(event);
         event.preventDefault();
         event.stopPropagation();
  -    } else {
  -      event.returnValue = false;
  -      event.cancelBubble = true;
  +      event.stopped = true;
       }
  -  },
  +  };
  +})();
   
  -  // find the first node with the given tagName, starting from the
  -  // node the event was triggered on; traverses the DOM upwards
  -  findElement: function(event, tagName) {
  -    var element = Event.element(event);
  -    while (element.parentNode && (!element.tagName ||
  -        (element.tagName.toUpperCase() != tagName.toUpperCase())))
  -      element = element.parentNode;
  -    return element;
  -  },
  +Event.extend = (function() {
  +  var methods = Object.keys(Event.Methods).inject({ }, function(m, name) {
  +    m[name] = Event.Methods[name].methodize();
  +    return m;
  +  });
  +
  +  if (Prototype.Browser.IE) {
  +    Object.extend(methods, {
  +      stopPropagation: function() { this.cancelBubble = true },
  +      preventDefault:  function() { this.returnValue = false },
  +      inspect: function() { return "[object Event]" }
  +    });
  +
  +    return function(event) {
  +      if (!event) return false;
  +      if (event._extendedByPrototype) return event;
  +
  +      event._extendedByPrototype = Prototype.emptyFunction;
  +      var pointer = Event.pointer(event);
  +      Object.extend(event, {
  +        target: event.srcElement,
  +        relatedTarget: Event.relatedTarget(event),
  +        pageX:  pointer.x,
  +        pageY:  pointer.y
  +      });
  +      return Object.extend(event, methods);
  +    };
  +
  +  } else {
  +    Event.prototype = Event.prototype || document.createEvent("HTMLEvents")['__proto__'];
  +    Object.extend(Event.prototype, methods);
  +    return Prototype.K;
  +  }
  +})();
  +
  +Object.extend(Event, (function() {
  +  var cache = Event.cache;
  +
  +  function getEventID(element) {
  +    if (element._prototypeEventID) return element._prototypeEventID[0];
  +    arguments.callee.id = arguments.callee.id || 1;
  +    return element._prototypeEventID = [++arguments.callee.id];
  +  }
  +
  +  function getDOMEventName(eventName) {
  +    if (eventName && eventName.include(':')) return "dataavailable";
  +    return eventName;
  +  }
  +
  +  function getCacheForID(id) {
  +    return cache[id] = cache[id] || { };
  +  }
  +
  +  function getWrappersForEventName(id, eventName) {
  +    var c = getCacheForID(id);
  +    return c[eventName] = c[eventName] || [];
  +  }
  +
  +  function createWrapper(element, eventName, handler) {
  +    var id = getEventID(element);
  +    var c = getWrappersForEventName(id, eventName);
  +    if (c.pluck("handler").include(handler)) return false;
  +
  +    var wrapper = function(event) {
  +      if (!Event || !Event.extend ||
  +        (event.eventName && event.eventName != eventName))
  +          return false;
  +
  +      Event.extend(event);
  +      handler.call(element, event);
  +    };
  +
  +    wrapper.handler = handler;
  +    c.push(wrapper);
  +    return wrapper;
  +  }
  +
  +  function findWrapper(id, eventName, handler) {
  +    var c = getWrappersForEventName(id, eventName);
  +    return c.find(function(wrapper) { return wrapper.handler == handler });
  +  }
  +
  +  function destroyWrapper(id, eventName, handler) {
  +    var c = getCacheForID(id);
  +    if (!c[eventName]) return false;
  +    c[eventName] = c[eventName].without(findWrapper(id, eventName, handler));
  +  }
  +
  +  function destroyCache() {
  +    for (var id in cache)
  +      for (var eventName in cache[id])
  +        cache[id][eventName] = null;
  +  }
  +
  +
  +  // Internet Explorer needs to remove event handlers on page unload
  +  // in order to avoid memory leaks.
  +  if (window.attachEvent) {
  +    window.attachEvent("onunload", destroyCache);
  +  }
  +
  +  // Safari has a dummy event handler on page unload so that it won't
  +  // use its bfcache. Safari <= 3.1 has an issue with restoring the "document"
  +  // object when page is returned to via the back button using its bfcache.
  +  if (Prototype.Browser.WebKit) {
  +    window.addEventListener('unload', Prototype.emptyFunction, false);
  +  }
  +
  +  return {
  +    observe: function(element, eventName, handler) {
  +      element = $(element);
  +      var name = getDOMEventName(eventName);
   
  -  observers: false,
  +      var wrapper = createWrapper(element, eventName, handler);
  +      if (!wrapper) return element;
   
  -  _observeAndCache: function(element, name, observer, useCapture) {
  -    if (!this.observers) this.observers = [];
  -    if (element.addEventListener) {
  -      this.observers.push([element, name, observer, useCapture]);
  -      element.addEventListener(name, observer, useCapture);
  -    } else if (element.attachEvent) {
  -      this.observers.push([element, name, observer, useCapture]);
  -      element.attachEvent('on' + name, observer);
  +      if (element.addEventListener) {
  +        element.addEventListener(name, wrapper, false);
  +      } else {
  +        element.attachEvent("on" + name, wrapper);
  +      }
  +
  +      return element;
  +    },
  +
  +    stopObserving: function(element, eventName, handler) {
  +      element = $(element);
  +      var id = getEventID(element), name = getDOMEventName(eventName);
  +
  +      if (!handler && eventName) {
  +        getWrappersForEventName(id, eventName).each(function(wrapper) {
  +          element.stopObserving(eventName, wrapper.handler);
  +        });
  +        return element;
  +
  +      } else if (!eventName) {
  +        Object.keys(getCacheForID(id)).each(function(eventName) {
  +          element.stopObserving(eventName);
  +        });
  +        return element;
  +      }
  +
  +      var wrapper = findWrapper(id, eventName, handler);
  +      if (!wrapper) return element;
  +
  +      if (element.removeEventListener) {
  +        element.removeEventListener(name, wrapper, false);
  +      } else {
  +        element.detachEvent("on" + name, wrapper);
  +      }
  +
  +      destroyWrapper(id, eventName, handler);
  +
  +      return element;
  +    },
  +
  +    fire: function(element, eventName, memo) {
  +      element = $(element);
  +      if (element == document && document.createEvent && !element.dispatchEvent)
  +        element = document.documentElement;
  +
  +      var event;
  +      if (document.createEvent) {
  +        event = document.createEvent("HTMLEvents");
  +        event.initEvent("dataavailable", true, true);
  +      } else {
  +        event = document.createEventObject();
  +        event.eventType = "ondataavailable";
  +      }
  +
  +      event.eventName = eventName;
  +      event.memo = memo || { };
  +
  +      if (document.createEvent) {
  +        element.dispatchEvent(event);
  +      } else {
  +        element.fireEvent(event.eventType, event);
  +      }
  +
  +      return Event.extend(event);
       }
  -  },
  +  };
  +})());
  +
  +Object.extend(Event, Event.Methods);
  +
  +Element.addMethods({
  +  fire:          Event.fire,
  +  observe:       Event.observe,
  +  stopObserving: Event.stopObserving
  +});
  +
  +Object.extend(document, {
  +  fire:          Element.Methods.fire.methodize(),
  +  observe:       Element.Methods.observe.methodize(),
  +  stopObserving: Element.Methods.stopObserving.methodize(),
  +  loaded:        false
  +});
  +
  +(function() {
  +  /* Support for the DOMContentLoaded event is based on work by Dan Webb,
  +     Matthias Miller, Dean Edwards and John Resig. */
  +
  +  var timer;
  +
  +  function fireContentLoadedEvent() {
  +    if (document.loaded) return;
  +    if (timer) window.clearInterval(timer);
  +    document.fire("dom:loaded");
  +    document.loaded = true;
  +  }
  +
  +  if (document.addEventListener) {
  +    if (Prototype.Browser.WebKit) {
  +      timer = window.setInterval(function() {
  +        if (/loaded|complete/.test(document.readyState))
  +          fireContentLoadedEvent();
  +      }, 0);
  +
  +      Event.observe(window, "load", fireContentLoadedEvent);
   
  -  unloadCache: function() {
  -    if (!Event.observers) return;
  -    for (var i = 0, length = Event.observers.length; i < length; i++) {
  -      Event.stopObserving.apply(this, Event.observers[i]);
  -      Event.observers[i][0] = null;
  +    } else {
  +      document.addEventListener("DOMContentLoaded",
  +        fireContentLoadedEvent, false);
       }
  -    Event.observers = false;
  -  },
   
  -  observe: function(element, name, observer, useCapture) {
  -    element = $(element);
  -    useCapture = useCapture || false;
  +  } else {
  +    document.write("<script id=__onDOMContentLoaded defer src=//:><\/script>");
  +    $("__onDOMContentLoaded").onreadystatechange = function() {
  +      if (this.readyState == "complete") {
  +        this.onreadystatechange = null;
  +        fireContentLoadedEvent();
  +      }
  +    };
  +  }
  +})();
  +/*------------------------------- DEPRECATED -------------------------------*/
  +
  +Hash.toQueryString = Object.toQueryString;
   
  -    if (name == 'keypress' &&
  -        (navigator.appVersion.match(/Konqueror|Safari|KHTML/)
  -        || element.attachEvent))
  -      name = 'keydown';
  +var Toggle = { display: Element.toggle };
   
  -    Event._observeAndCache(element, name, observer, useCapture);
  +Element.Methods.childOf = Element.Methods.descendantOf;
  +
  +var Insertion = {
  +  Before: function(element, content) {
  +    return Element.insert(element, {before:content});
     },
   
  -  stopObserving: function(element, name, observer, useCapture) {
  -    element = $(element);
  -    useCapture = useCapture || false;
  +  Top: function(element, content) {
  +    return Element.insert(element, {top:content});
  +  },
   
  -    if (name == 'keypress' &&
  -        (navigator.appVersion.match(/Konqueror|Safari|KHTML/)
  -        || element.detachEvent))
  -      name = 'keydown';
  +  Bottom: function(element, content) {
  +    return Element.insert(element, {bottom:content});
  +  },
   
  -    if (element.removeEventListener) {
  -      element.removeEventListener(name, observer, useCapture);
  -    } else if (element.detachEvent) {
  -      try {
  -        element.detachEvent('on' + name, observer);
  -      } catch (e) {}
  -    }
  +  After: function(element, content) {
  +    return Element.insert(element, {after:content});
     }
  -});
  +};
   
  -/* prevent memory leaks in IE */
  -if (navigator.appVersion.match(/\bMSIE\b/))
  -  Event.observe(window, 'unload', Event.unloadCache, false);
  +var $continue = new Error('"throw $continue" is deprecated, use "return" instead');
  +
  +// This should be moved to script.aculo.us; notice the deprecated methods
  +// further below, that map to the newer Element methods.
   var Position = {
     // set to true if needed, warning: firefox performance problems
     // NOT neeeded for page scrolling, only if draggable contained in
  @@ -2111,59 +4179,13 @@
                   || 0;
     },
   
  -  realOffset: function(element) {
  -    var valueT = 0, valueL = 0;
  -    do {
  -      valueT += element.scrollTop  || 0;
  -      valueL += element.scrollLeft || 0;
  -      element = element.parentNode;
  -    } while (element);
  -    return [valueL, valueT];
  -  },
  -
  -  cumulativeOffset: function(element) {
  -    var valueT = 0, valueL = 0;
  -    do {
  -      valueT += element.offsetTop  || 0;
  -      valueL += element.offsetLeft || 0;
  -      element = element.offsetParent;
  -    } while (element);
  -    return [valueL, valueT];
  -  },
  -
  -  positionedOffset: function(element) {
  -    var valueT = 0, valueL = 0;
  -    do {
  -      valueT += element.offsetTop  || 0;
  -      valueL += element.offsetLeft || 0;
  -      element = element.offsetParent;
  -      if (element) {
  -        if(element.tagName=='BODY') break;
  -        var p = Element.getStyle(element, 'position');
  -        if (p == 'relative' || p == 'absolute') break;
  -      }
  -    } while (element);
  -    return [valueL, valueT];
  -  },
  -
  -  offsetParent: function(element) {
  -    if (element.offsetParent) return element.offsetParent;
  -    if (element == document.body) return element;
  -
  -    while ((element = element.parentNode) && element != document.body)
  -      if (Element.getStyle(element, 'position') != 'static')
  -        return element;
  -
  -    return document.body;
  -  },
  -
     // caches x/y coordinate pair to use with overlap
     within: function(element, x, y) {
       if (this.includeScrollOffsets)
         return this.withinIncludingScrolloffsets(element, x, y);
       this.xcomp = x;
       this.ycomp = y;
  -    this.offset = this.cumulativeOffset(element);
  +    this.offset = Element.cumulativeOffset(element);
   
       return (y >= this.offset[1] &&
               y <  this.offset[1] + element.offsetHeight &&
  @@ -2172,11 +4194,11 @@
     },
   
     withinIncludingScrolloffsets: function(element, x, y) {
  -    var offsetcache = this.realOffset(element);
  +    var offsetcache = Element.cumulativeScrollOffset(element);
   
       this.xcomp = x + offsetcache[0] - this.deltaX;
       this.ycomp = y + offsetcache[1] - this.deltaY;
  -    this.offset = this.cumulativeOffset(element);
  +    this.offset = Element.cumulativeOffset(element);
   
       return (this.ycomp >= this.offset[1] &&
               this.ycomp <  this.offset[1] + element.offsetHeight &&
  @@ -2195,125 +4217,104 @@
           element.offsetWidth;
     },
   
  -  page: function(forElement) {
  -    var valueT = 0, valueL = 0;
  -
  -    var element = forElement;
  -    do {
  -      valueT += element.offsetTop  || 0;
  -      valueL += element.offsetLeft || 0;
  +  // Deprecation layer -- use newer Element methods now (1.5.2).
   
  -      // Safari fix
  -      if (element.offsetParent==document.body)
  -        if (Element.getStyle(element,'position')=='absolute') break;
  +  cumulativeOffset: Element.Methods.cumulativeOffset,
   
  -    } while (element = element.offsetParent);
  +  positionedOffset: Element.Methods.positionedOffset,
   
  -    element = forElement;
  -    do {
  -      if (!window.opera || element.tagName=='BODY') {
  -        valueT -= element.scrollTop  || 0;
  -        valueL -= element.scrollLeft || 0;
  -      }
  -    } while (element = element.parentNode);
  +  absolutize: function(element) {
  +    Position.prepare();
  +    return Element.absolutize(element);
  +  },
   
  -    return [valueL, valueT];
  +  relativize: function(element) {
  +    Position.prepare();
  +    return Element.relativize(element);
     },
   
  -  clone: function(source, target) {
  -    var options = Object.extend({
  -      setLeft:    true,
  -      setTop:     true,
  -      setWidth:   true,
  -      setHeight:  true,
  -      offsetTop:  0,
  -      offsetLeft: 0
  -    }, arguments[2] || {})
  +  realOffset: Element.Methods.cumulativeScrollOffset,
   
  -    // find page position of source
  -    source = $(source);
  -    var p = Position.page(source);
  +  offsetParent: Element.Methods.getOffsetParent,
   
  -    // find coordinate system to use
  -    target = $(target);
  -    var delta = [0, 0];
  -    var parent = null;
  -    // delta [0,0] will do fine with position: fixed elements,
  -    // position:absolute needs offsetParent deltas
  -    if (Element.getStyle(target,'position') == 'absolute') {
  -      parent = Position.offsetParent(target);
  -      delta = Position.page(parent);
  -    }
  +  page: Element.Methods.viewportOffset,
   
  -    // correct by body offsets (fixes Safari)
  -    if (parent == document.body) {
  -      delta[0] -= document.body.offsetLeft;
  -      delta[1] -= document.body.offsetTop;
  +  clone: function(source, target, options) {
  +    options = options || { };
  +    return Element.clonePosition(target, source, options);
  +  }
  +};
  +
  +/*--------------------------------------------------------------------------*/
  +
  +if (!document.getElementsByClassName) document.getElementsByClassName = function(instanceMethods){
  +  function iter(name) {
  +    return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' " + name + " ')]";
  +  }
  +
  +  instanceMethods.getElementsByClassName = Prototype.BrowserFeatures.XPath ?
  +  function(element, className) {
  +    className = className.toString().strip();
  +    var cond = /\s/.test(className) ? $w(className).map(iter).join('') : iter(className);
  +    return cond ? document._getElementsByXPath('.//*' + cond, element) : [];
  +  } : function(element, className) {
  +    className = className.toString().strip();
  +    var elements = [], classNames = (/\s/.test(className) ? $w(className) : null);
  +    if (!classNames && !className) return elements;
  +
  +    var nodes = $(element).getElementsByTagName('*');
  +    className = ' ' + className + ' ';
  +
  +    for (var i = 0, child, cn; child = nodes[i]; i++) {
  +      if (child.className && (cn = ' ' + child.className + ' ') && (cn.include(className) ||
  +          (classNames && classNames.all(function(name) {
  +            return !name.toString().blank() && cn.include(' ' + name + ' ');
  +          }))))
  +        elements.push(Element.extend(child));
       }
  +    return elements;
  +  };
   
  -    // set position
  -    if(options.setLeft)   target.style.left  = (p[0] - delta[0] + options.offsetLeft) + 'px';
  -    if(options.setTop)    target.style.top   = (p[1] - delta[1] + options.offsetTop) + 'px';
  -    if(options.setWidth)  target.style.width = source.offsetWidth + 'px';
  -    if(options.setHeight) target.style.height = source.offsetHeight + 'px';
  -  },
  +  return function(className, parentElement) {
  +    return $(parentElement || document.body).getElementsByClassName(className);
  +  };
  +}(Element.Methods);
   
  -  absolutize: function(element) {
  -    element = $(element);
  -    if (element.style.position == 'absolute') return;
  -    Position.prepare();
  +/*--------------------------------------------------------------------------*/
   
  -    var offsets = Position.positionedOffset(element);
  -    var top     = offsets[1];
  -    var left    = offsets[0];
  -    var width   = element.clientWidth;
  -    var height  = element.clientHeight;
  +Element.ClassNames = Class.create();
  +Element.ClassNames.prototype = {
  +  initialize: function(element) {
  +    this.element = $(element);
  +  },
   
  -    element._originalLeft   = left - parseFloat(element.style.left  || 0);
  -    element._originalTop    = top  - parseFloat(element.style.top || 0);
  -    element._originalWidth  = element.style.width;
  -    element._originalHeight = element.style.height;
  +  _each: function(iterator) {
  +    this.element.className.split(/\s+/).select(function(name) {
  +      return name.length > 0;
  +    })._each(iterator);
  +  },
   
  -    element.style.position = 'absolute';
  -    element.style.top    = top + 'px';;
  -    element.style.left   = left + 'px';;
  -    element.style.width  = width + 'px';;
  -    element.style.height = height + 'px';;
  +  set: function(className) {
  +    this.element.className = className;
     },
   
  -  relativize: function(element) {
  -    element = $(element);
  -    if (element.style.position == 'relative') return;
  -    Position.prepare();
  +  add: function(classNameToAdd) {
  +    if (this.include(classNameToAdd)) return;
  +    this.set($A(this).concat(classNameToAdd).join(' '));
  +  },
   
  -    element.style.position = 'relative';
  -    var top  = parseFloat(element.style.top  || 0) - (element._originalTop || 0);
  -    var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0);
  +  remove: function(classNameToRemove) {
  +    if (!this.include(classNameToRemove)) return;
  +    this.set($A(this).without(classNameToRemove).join(' '));
  +  },
   
  -    element.style.top    = top + 'px';
  -    element.style.left   = left + 'px';
  -    element.style.height = element._originalHeight;
  -    element.style.width  = element._originalWidth;
  +  toString: function() {
  +    return $A(this).join(' ');
     }
  -}
  -
  -// Safari returns margins on body which is incorrect if the child is absolutely
  -// positioned.  For performance reasons, redefine Position.cumulativeOffset for
  -// KHTML/WebKit only.
  -if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) {
  -  Position.cumulativeOffset = function(element) {
  -    var valueT = 0, valueL = 0;
  -    do {
  -      valueT += element.offsetTop  || 0;
  -      valueL += element.offsetLeft || 0;
  -      if (element.offsetParent == document.body)
  -        if (Element.getStyle(element, 'position') == 'absolute') break;
  +};
   
  -      element = element.offsetParent;
  -    } while (element);
  +Object.extend(Element.ClassNames.prototype, Enumerable);
   
  -    return [valueL, valueT];
  -  }
  -}
  +/*--------------------------------------------------------------------------*/
   
   Element.addMethods();
  \ No newline at end of file
  
  
  


wkpark      2008/12/17 21:33:42

  Modified:    local    ASCIIMathML.js ajax.js moniwyg.js wikibits.js
  Log:
  add ";" char to make js more jspacker friendly
  
  Revision  Changes    Path
  1.4       +4 -4      moniwiki/local/ASCIIMathML.js
  
  Index: ASCIIMathML.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/ASCIIMathML.js,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ASCIIMathML.js	2 Nov 2007 16:19:13 -0000	1.3
  +++ ASCIIMathML.js	17 Dec 2008 12:33:41 -0000	1.4
  @@ -44,7 +44,7 @@
   var isIE = document.createElementNS==null;
   if (document.getElementById==null) 
     alert("This webpage requires a recent browser such as\
  -\nMozilla/Netscape 7+ or Internet Explorer 6+MathPlayer")
  +\nMozilla/Netscape 7+ or Internet Explorer 6+MathPlayer");
   // all further global variables start with "AM"
   function AMcreateElementXHTML(t) {
     if (isIE) return document.createElement(t);
  @@ -52,7 +52,7 @@
   }
   function AMnoMathMLNote() {
     var nd = AMcreateElementXHTML("h3");
  -  nd.setAttribute("align","center")
  +  nd.setAttribute("align","center");
     nd.appendChild(AMcreateElementXHTML("p"));
     nd.appendChild(document.createTextNode("To view the "));
     var an = AMcreateElementXHTML("a");
  @@ -301,7 +301,7 @@
   {input:"mathfrak",  tag:"mstyle", atname:"mathvariant", atval:"fraktur", output:"mathfrak", tex:null, ttype:UNARY, codes:AMfrk}
   ];
   function compareNames(s1,s2) {
  -  if (s1.input > s2.input) return 1
  +  if (s1.input > s2.input) return 1;
     else return -1;
   }
   var AMnames = []; //list of input symbols
  @@ -822,7 +822,7 @@
   function AMprocessNode(n, linebreaks, spanclassAM) {
     var frag,st;
     if (spanclassAM!=null) {;
  -    frag = document.getElementsByTagName("span")
  +    frag = document.getElementsByTagName("span");
       for (var i=0;i<frag.length;i++)
         if (frag[i].className == "AM")
           AMprocessNodeR(frag[i],linebreaks);
  
  
  
  1.4       +5 -5      moniwiki/local/ajax.js
  
  Index: ajax.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/ajax.js,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ajax.js	10 Dec 2005 12:11:42 -0000	1.3
  +++ ajax.js	17 Dec 2008 12:33:41 -0000	1.4
  @@ -27,10 +27,10 @@
    */
   if (typeof XMLHttpRequest == 'undefined') {
    XMLHttpRequest = function () {
  -   var msxmls = ['MSXML3', 'MSXML2', 'Microsoft']
  +   var msxmls = ['MSXML3', 'MSXML2', 'Microsoft'];
      for (var i=0; i < msxmls.length; i++) {
        try {
  -       return new ActiveXObject(msxmls[i]+'.XMLHTTP')
  +       return new ActiveXObject(msxmls[i]+'.XMLHTTP');
        }
        catch (e) { }
      }
  @@ -54,7 +54,7 @@
       if (callbackFunction) {
         xmlHttp.onreadystatechange = function() {
           if (xmlHttp.readyState == 4)
  -          callbackFunction(xmlHttp.responseText, xmlHttp, callbackParameter)
  +          callbackFunction(xmlHttp.responseText, xmlHttp, callbackParameter);
         }
       }
       return true;
  @@ -88,7 +88,7 @@
       if (callback_function)
         xmlhttp.onreadystatechange = function() {
           if (xmlhttp.readyState == 4)
  -          callback_function(xmlhttp.responseText, xmlhttp, callback_parameter)
  +          callback_function(xmlhttp.responseText, xmlhttp, callback_parameter);
         }
       return true;
     } else
  @@ -139,7 +139,7 @@
     if (node.className == className) {
       return true;
     }
  -  var reg = new RegExp('(^| )'+ className +'($| )')
  +  var reg = new RegExp('(^| )'+ className +'($| )');
     if (reg.test(node.className)) {
       return true;
     }
  
  
  
  1.56      +5 -5      moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.55
  retrieving revision 1.56
  diff -u -r1.55 -r1.56
  --- moniwyg.js	3 Dec 2008 08:26:47 -0000	1.55
  +++ moniwyg.js	17 Dec 2008 12:33:41 -0000	1.56
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.55 2008/12/03 08:26:47 wkpark Exp $
  +// $Id: moniwyg.js,v 1.56 2008/12/17 12:33:41 wkpark Exp $
   //
   //_url_prefix="/wiki";
   
  @@ -653,8 +653,8 @@
   
                   if (modename.match(/Preview/)) objects[i].removeChild(n);
   
  -                objects[i].setAttribute('width',w)
  -                objects[i].setAttribute('height',h)
  +                objects[i].setAttribute('width',w);
  +                objects[i].setAttribute('height',h);
                   if (applet) {
                       applet.setAttribute('width',w);
                       applet.setAttribute('height',h);
  @@ -2208,7 +2208,7 @@
                      .replace(/&amp;/g,'&')
                      .replace(/(\r\n|\n|\r)+$/, '') //.replace(/\s$/, '') IE fix
                      .replace(/\{(\w+):\s*\}/, '{$1}');
  -        this.appendOutput(Wikiwyg.htmlUnescape(text))
  +        this.appendOutput(Wikiwyg.htmlUnescape(text));
           this.smart_trailing_space_n(element);
       }
   }
  @@ -2762,7 +2762,7 @@
           div.style.position='absolute';
       }
   
  -    var pos=getPos(elm)
  +    var pos=getPos(elm);
   /*
       div.style.top = elm.offsetTop + 21 + 'px';
       div.style.left = elm.offsetLeft + 'px';
  
  
  
  1.13      +2 -2      moniwiki/local/wikibits.js
  
  Index: wikibits.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/wikibits.js,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- wikibits.js	17 Dec 2008 06:07:50 -0000	1.12
  +++ wikibits.js	17 Dec 2008 12:33:41 -0000	1.13
  @@ -1,7 +1,7 @@
   // from the MediaWiki
   // simplified for the MoniWiki by wkpark
   //
  -// $Id: wikibits.js,v 1.12 2008/12/17 06:07:50 wkpark Exp $
  +// $Id: wikibits.js,v 1.13 2008/12/17 12:33:41 wkpark Exp $
   //
   // Wikipedia JavaScript support functions
   // if this is true, the toolbar will no longer overwrite the infobox when you move the mouse over individual items
  @@ -334,7 +334,7 @@
   	var m;
   	if (m=sel.match(/^(\r\n|\n)?(={1,6})/)) { // for headings
   	    var tag='='.times(m[2].length);
  -	    start=start.replace(/=/,tag),end=end.replace(/=/,tag)
  +	    start=start.replace(/=/,tag),end=end.replace(/=/,tag);
   	    if (start.replace(/(\r\n|\n)/,'').length==8) start="\n== ",end=" ==\n"; // reset
   	} else {
               return nsel;
  
  
  


wkpark      2008/12/17 21:33:42

  Modified:    local/SWFUpload mmSWFUpload.js
  Log:
  add ";" char to make js more jspacker friendly
  
  Revision  Changes    Path
  1.5       +5 -5      moniwiki/local/SWFUpload/mmSWFUpload.js
  
  Index: mmSWFUpload.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/SWFUpload/mmSWFUpload.js,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- mmSWFUpload.js	17 Dec 2008 06:07:27 -0000	1.4
  +++ mmSWFUpload.js	17 Dec 2008 12:33:42 -0000	1.5
  @@ -56,7 +56,7 @@
   			};
   			var attr={
   				"id": "_mmSWFUploadField"
  -			}
  +			};
   			swfobject.embedSWF(this._prefix + "/SWFUpload/upload.swf", this.addSetting("target", "flashUpload"),
   				"1px", "1px", this.addSetting("flash_version", "8"), "",vars, param, attr);
   						
  @@ -64,12 +64,12 @@
   			//so.write(this.addSetting("target", "flashUpload"));
   	
   			// Set up button and styles
  -			var swfc = document.getElementById(this.settings["target"])
  +			var swfc = document.getElementById(this.settings["target"]);
   			
   			var link = document.createElement("a");
   			link.id = "_mmSWFUploadLink";
   			link.href = "javascript:mmSWFUpload.callSWF()";
  -			link.className = this.addSetting("cssClass", "SWFUploadLink")
  +			link.className = this.addSetting("cssClass", "SWFUploadLink");
   			
   			link.style.display = "block";
   			swfc.appendChild(link);
  @@ -123,9 +123,9 @@
   	
   	getMovie: function(movieName) {
   		if (navigator.appName.indexOf("Microsoft") != -1) {
  -		return window[movieName]
  +		return window[movieName];
   		}	else {
  -			return document[movieName]
  +			return document[movieName];
   		}
       },
       
  
  
  


wkpark      2008/12/17 21:33:42

  Modified:    local/Wikiwyg/lib Wikiwyg.js
  Log:
  add ";" char to make js more jspacker friendly
  
  Revision  Changes    Path
  1.7       +1 -1      moniwiki/local/Wikiwyg/lib/Wikiwyg.js
  
  Index: Wikiwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/lib/Wikiwyg.js,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- Wikiwyg.js	2 Dec 2008 00:50:29 -0000	1.6
  +++ Wikiwyg.js	17 Dec 2008 12:33:42 -0000	1.7
  @@ -122,7 +122,7 @@
   );
   Wikiwyg.is_konqueror = (
       Wikiwyg.ua.indexOf("konqueror") != -1
  -)
  +);
   Wikiwyg.browserIsSupported = (
       Wikiwyg.is_gecko ||
       Wikiwyg.is_ie
  
  
  


wkpark      2008/12/17 21:33:42

  Modified:    local/Wikiwyg/lib/Wikiwyg Util.js Wikitext.js
  Log:
  add ";" char to make js more jspacker friendly
  
  Revision  Changes    Path
  1.2       +8 -8      moniwiki/local/Wikiwyg/lib/Wikiwyg/Util.js
  
  Index: Util.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/lib/Wikiwyg/Util.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Util.js	1 Aug 2006 15:47:30 -0000	1.1
  +++ Util.js	17 Dec 2008 12:33:42 -0000	1.2
  @@ -40,15 +40,15 @@
   Cookie = {};
   
   Cookie.get = function(name) {
  -    var cookieStart = document.cookie.indexOf(name + "=")
  -    if (cookieStart == -1) return null
  -    var valueStart = document.cookie.indexOf('=', cookieStart) + 1
  +    var cookieStart = document.cookie.indexOf(name + "=");
  +    if (cookieStart == -1) return null;
  +    var valueStart = document.cookie.indexOf('=', cookieStart) + 1;
       var valueEnd = document.cookie.indexOf(';', valueStart);
  -    if (valueEnd == -1) valueEnd = document.cookie.length
  +    if (valueEnd == -1) valueEnd = document.cookie.length;
       var val = document.cookie.substring(valueStart, valueEnd);
       return val == null
           ? null
  -        : unescape(document.cookie.substring(valueStart, valueEnd))
  +        : unescape(document.cookie.substring(valueStart, valueEnd));
   }
   
   Cookie.set = function(name, val, expiration) {
  @@ -56,8 +56,8 @@
       if (typeof(expiration) == 'undefined')
           expiration = new Date(
               new Date().getTime() + 25 * 365 * 24 * 60 * 60 * 1000
  -        )
  -    var str = name + '=' + escape(val) + '; expires=' + expiration.toGMTString()
  +        );
  +    var str = name + '=' + escape(val) + '; expires=' + expiration.toGMTString();
       document.cookie = str;
   }
   
  @@ -69,7 +69,7 @@
   
   // XXX Move Wait into Wikiwyg.Util
   if ( typeof Wait == 'undefined' ) {
  -    Wait = {}
  +    Wait = {};
   }
   
   Wait.VERSION = 0.01;
  
  
  
  1.5       +1 -1      moniwiki/local/Wikiwyg/lib/Wikiwyg/Wikitext.js
  
  Index: Wikitext.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/lib/Wikiwyg/Wikitext.js,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Wikitext.js	23 Dec 2006 16:28:42 -0000	1.4
  +++ Wikitext.js	17 Dec 2008 12:33:42 -0000	1.5
  @@ -1438,7 +1438,7 @@
                      .replace(/==/g, '=') 
                      .replace(/\s$/, '')
                      .replace(/\{(\w+):\s*\}/, '{$1}');
  -        this.appendOutput(Wikiwyg.htmlUnescape(text))
  +        this.appendOutput(Wikiwyg.htmlUnescape(text));
           this.smart_trailing_space(element);
       }
   }
  
  
  


wkpark      2008/12/17 21:37:41

  Modified:    .        wiki.php
  Log:
  adopt javascript compressor. !experimental!
  
  Revision  Changes    Path
  1.423     +75 -2     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.422
  retrieving revision 1.423
  diff -u -r1.422 -r1.423
  --- wiki.php	17 Dec 2008 06:19:12 -0000	1.422
  +++ wiki.php	17 Dec 2008 12:37:41 -0000	1.423
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.422 2008/12/17 06:19:12 wkpark Exp $
  +// $Id: wiki.php,v 1.423 2008/12/17 12:37:41 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.422 $',1,-1);
  +$_revision = substr('$Revision: 1.423 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -4017,6 +4017,79 @@
     }
   
     function get_javascripts() {
  +    global $Config;
  +    if (!empty($Config['use_jspacker']) and !empty($Config['cache_public_dir'])) {
  +      include_once('lib/fckpacker.php'); # good but not work with prototype.
  +      $constProc = new FCKConstantProcessor();
  +      $constProc->RemoveDeclaration = false ;
  +      #include_once('lib/jspacker.php'); # bad!
  +      #$packer = new JavaScriptPacker('', 0);
  +      #$packer->pack(); // init
  +      #include_once('lib/jsmin.php'); # not work.
  +      
  +
  +      $out='';
  +      $packed='';
  +      $pjs = array();
  +      $keys = array_keys($this->java_scripts);
  +      sort($keys);
  +      $uniq = md5(implode(';',$keys));
  +
  +      $cache=new Cache_text('js',2,'html');
  +
  +      #if ($cache->exists($uniq))
  +      #  return $cache->fetch($uniq);
  +
  +      foreach ($this->java_scripts as $k=>$js) {
  +        if ($js) {
  +          if ($js{0} != '<') {
  +            if (preg_match('@^(http://|/)@',$js)) {
  +              $out.="<script type='text/javascript' src='$js'></script>\n";
  +            } else {
  +              if (file_exists('local/'.$js)) {
  +                $fp = fopen('local/'.$js,'r');
  +                if (is_resource($fp)) {
  +                  $_js = fread($fp,filesize('local/'.$js));
  +                  fclose($fp);
  +                  $packed.='/* '.$js.' */'."\n";
  +                  #$packed.= JSMin::minify($_js);
  +                  $packed.= FCKJavaScriptCompressor::Compress($_js, $constProc)."\n";
  +                  #$packed.= $packer->_pack($_js)."\n";
  +                  $pjs[]=$k;
  +                }
  +              } else { // is it exist ?
  +                $js=$this->url_prefix.'/local/'.$js;
  +                $out.="<script type='text/javascript' src='$js'></script>\n";
  +              }
  +            }
  +          } else { //
  +            if (preg_match('/<script[^>]+(src=("|\')([^\\2]+)\\2)?[^>]*>(.*)<\/script>\s*$/',$js,$m)) {
  +              if ($m[3]) {
  +                $out.="<script type='text/javascript' src='$js'></script>\n";
  +              } else if ($m[4]) {
  +                $packed.='/* embeded '.$k.'*/'."\n";
  +                #$packed.= $packer->_pack($js)."\n";
  +                $packed.= FCKJavaScriptCompressor::Compress($js, $constProc)."\n";
  +                #$packed.= JSMin::minify($js);
  +                $pjs[]=$k;
  +              }
  +            }
  +          }
  +          $this->java_scripts[$k]='';
  +
  +        }
  +      }
  +      sort($pjs);
  +      $suniq = md5(implode(';',$pjs));
  +
  +      $fc = new Cache_text('js',2,'js',$Config['cache_public_dir']);
  +      $jsname = $fc->_getKey($suniq,0);
  +      $out.='<script type="text/javascript" src="'.$Config['cache_public_url'].'/'.$jsname.'"></script>'."\n";
  +      $cache->update($uniq,$out);
  +
  +      $fc->_save($Config['cache_public_dir'].'/'.$jsname,$packed);
  +      return $out;
  +    }
       $out='';
       foreach ($this->java_scripts as $k=>$js) {
         if ($js) {
  
  
  


wkpark      2008/12/17 21:38:28

  Modified:    .        monisetup.php
  Log:
  create cache_public_dir.
  
  Revision  Changes    Path
  1.35      +3 -2      moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- monisetup.php	16 Dec 2008 12:36:41 -0000	1.34
  +++ monisetup.php	17 Dec 2008 12:38:28 -0000	1.35
  @@ -1,7 +1,7 @@
   <?php
   // Copyright 2003-2007 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.34 2008/12/16 12:36:41 wkpark Exp $
  +// $Id: monisetup.php,v 1.35 2008/12/17 12:38:28 wkpark Exp $
   
   function _stripslashes($str) {
     return get_magic_quotes_gpc() ? stripslashes($str):$str;
  @@ -294,10 +294,11 @@
         fclose($fp);
       }
   
  -    $writables=array("upload_dir","editlog_name");
  +    $writables=array("upload_dir",'cache_public_dir',"editlog_name");
   
       print '<div class="check">';
       foreach($writables as $file) {
  +      if (empty($config[$file])) continue;
         if (!is_writable($config[$file])) {
           if (file_exists($config[$file])) {
             print "<h3><font color=red>".sprintf(_t("%s is not writable"),$config[$file])."</font> :( </h3>\n";
  
  
  


wkpark      2008/12/18 00:21:24

  Added:       lib      fckpacker.php
  Log:
  add the FCKpackager for Javascript compression.
  
  Revision  Changes    Path
  1.1                  moniwiki/lib/fckpacker.php
  
  Index: fckpacker.php
  ===================================================================
  <?php
  /*
   * This is a reduced FCKpackager file for Javascript Compression
   * for MoniWiki.
   *
   * $Id: fckpacker.php,v 1.1 2008/12/17 15:21:23 wkpark Exp $
   *
   * ---------------------------------------------------------------------------
   * FCKpackager - JavaScript Packager and Compressor - http://www.fckeditor.net
   * Copyright (C) 2003-2008 Frederico Caldeira Knabben
   *
   * == BEGIN LICENSE ==
   *
   * Licensed under the terms of any of the following licenses at your
   * choice:
   *
   *  - GNU General Public License Version 2 or later (the "GPL")
   *    http://www.gnu.org/licenses/gpl.html
   *
   *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
   *    http://www.gnu.org/licenses/lgpl.html
   *
   *  - Mozilla Public License Version 1.1 or later (the "MPL")
   *    http://www.mozilla.org/MPL/MPL-1.1.html
   *
   * == END LICENSE ==
   *
   * This is the main file of FCKpackager.
   *
   * You can call it through command line with "php fckpackager.php".
   */
  
  
  class FCKConstantProcessor
  {
      // Public properties.
      var $RemoveDeclaration ;
      var $HasConstants ;
  
      // Private properties.
      var $_Constants ;
      var $_ContantsRegexPart ;
  
      function FCKConstantProcessor()
      {
          $this->RemoveDeclaration = TRUE ;
          $this->HasConstants = FALSE ;
  
          $this->_Constants = array() ;
          $this->_ContantsRegexPart = '' ;
      }
  
      function AddConstant( $name, $value )
      {
          if ( strlen( $this->_ContantsRegexPart ) > 0 )
              $this->_ContantsRegexPart .= '|' ;
  
          $this->_ContantsRegexPart .= $name ;
  
          $this->_Constants[ $name ] = $value ;
  
          $this->HasConstants = TRUE ;
      }
  
      function Process( $script )
      {
          if ( !$this->HasConstants )
              return $script;
  
          $output = $script ;
  
          if ( $this->RemoveDeclaration )
          {
              // /var\s+(?:BASIC_COLOR_RED|BASIC_COLOR_BLUE)\s*=.+?;/
              $output = preg_replace(
                  '/var\\s+(?:' . $this->_ContantsRegexPart . ')\\s*=.+?;/m',
                  '', $output ) ;
          }
  
          $output = preg_replace_callback(
              '/(?<!(var |...\.))(?:' . $this->_ContantsRegexPart . ')(?!(?:\s*=)|\w)/',
              array( &$this, '_Contant_Replace_Evaluator' ), $output ) ;
  
          return $output ;
      }
  
      function _Contant_Replace_Evaluator( $match )
      {
          $constantName = $match[0] ;
  
          if ( isset( $this->_Constants[ $constantName ] ) )
              return $this->_Constants[ $constantName ] ;
          else
              return $constantName ;
      }
  }
  
  class FCKFunctionProcessor
  {
      var $_Function ;
      var $_Parameters ;
  
      var $_VarChars = array( 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','w','x','y','z' ) ;
      var $_VarCharsLastIndex ;
  
      var $_VarPrefix ;
      var $_LastCharIndex ;
      var $_NextPrefixIndex ;
  
      var $_IsGlobal ;
  
      function FCKFunctionProcessor( $function, $parameters, $isGlobal )
      {
          $this->_Function        = $function ;
          $this->_Parameters      = $isGlobal ? NULL : $parameters ;
  
          $this->_VarPrefix       = $isGlobal ? '_' : '' ;
  
          $this->_IsGlobal        = $isGlobal ;
  
          $this->_LastCharIndex   = 0;
          $this->_NextPrefixIndex = 0;
  
          $this->_VarCharsLastIndex   = count( $this->_VarChars ) - 1 ;
      }
  
      function Process()
      {
          $processed = $this->_Function ;
  
          if ( !$this->_IsGlobal )
              $processed = $this->_ProcessVars( $processed, $this->_Parameters ) ;
  
          // Match "var" declarations.
          $numVarMatches = preg_match_all( '/\bvar\b\s+((?:({(?:(?>[^{}]*)|(?2))*})|[^;])+?)(?=(?:\bin\b)|;)/', $processed, $varsMatches ) ;
  
          if ( $numVarMatches > 0 )
          {
              $vars = array() ;
  
              for ( $i = 0 ; $i < $numVarMatches ; $i++ )
              {
                  $varsMatch = $varsMatches[1][$i];
                  
                  // Removed all (...), [...] and {...} blocks from the var
                  // statement to avoid problems with commas inside them.
                  $varsMatch = preg_replace( '/(\((?:(?>[^\(\)]*)|(?1))*\))+/', '', $varsMatch ) ;
                  $varsMatch = preg_replace( '/(\[(?:(?>[^\[\]]*)|(?1))*\])+/', '', $varsMatch ) ;
                  $varsMatch = preg_replace( '/({(?:(?>[^{}]*)|(?1))*})+/', '', $varsMatch ) ;
                  
                  $numVarNameMatches = preg_match_all( '/(?:^|,)\s*([^\s=,]+)/', $varsMatch, $varNameMatches ) ;
                  
                  for ( $j = 0 ; $j < $numVarNameMatches ; $j++ )
                  {
                      $vars[] = $varNameMatches[1][$j] ;
                  }
              }
  
              $processed = $this->_ProcessVars( $processed, $vars ) ;
          }
  
          return $processed ;
      }
  
      function _ProcessVars( $source, $vars )
      {
          foreach ( $vars as $var )
          {
              if ( strlen( $var) > 1 )
                  $source = preg_replace( '/(?<!\w|\d|\.)' . preg_quote( $var ) . '(?!\w|\d)/', $this->_GetVarName(), $source ) ;
          }
  
          return $source ;
      }
  
      function _GetVarName()
      {
          if ( $this->_LastCharIndex == $this->_VarCharsLastIndex )
          {
              $this->_RenewPrefix() ;
              $this->_LastCharIndex = 0 ;
          }
  
          $var = $this->_VarPrefix . $this->_VarChars[ $this->_LastCharIndex++ ] ;
  
          if ( preg_match( '/(?<!\w|\d|\.)' . preg_quote( $var ) . '(?!\w|\d)/', $this->_Function ) )
              return $this->_GetVarName() ;
          else
              return $var ;
      }
  
      function _RenewPrefix()
      {
          if ( strlen( $this->_VarPrefix) > 0 && $this->_VarPrefix != "_" )
          {
              if ( $this->_NextPrefixIndex > $this->_VarCharsLastIndex )
                  $this->_NextPrefixIndex = 0 ;
              else
                  $this->_VarPrefix = substr_replace( $this->_VarPrefix, '', strlen( $this->_VarPrefix ) - 1, 1 ) ;
          }
  
          $this->_VarPrefix .= $this->_VarChars[ $this->_NextPrefixIndex ] ;
  
          $this->_NextPrefixIndex++;
      }
  }
  
  
  class FCKJavaScriptCompressor
  {
      function FCKJavaScriptCompressor()
      {}
  
      // Call it statically. E.g.: FCKJavaScriptCompressor::Compress( ... )
      function Compress( $script, $constantsProcessor )
      {
          // Concatenates all string with escaping new lines strings (ending with \).
          $script = preg_replace(
              '/\\\\[\n\r]+/s',
              '\n', $script ) ;
  
          $stringsProc = new FCKStringsProcessor() ;
  
          // Protect the script strings.
          $script = $stringsProc->ProtectStrings( $script ) ;
  
          // Remove "/* */" comments
          $script = preg_replace(
              '/(?<!\/)\/\*.*?\*\//s',
              '', $script ) ;
  
          // Remove "//" comments
          $script = preg_replace(
                  '/\/\/.*$/m',
                  '', $script ) ;
          
          // Remove spaces before the ";" at the end of the lines
          $script = preg_replace(
              '/\s*(?=;\s*$)/m',
              '', $script ) ;
  
          // Remove spaces next to "="
          $script = preg_replace(
              '/^([^"\'\r\n]*?)\s*=\s*/m',
              '$1=', $script ) ;
  
          // Remove spaces on "()": "( content )" = "(content)"
          $script = preg_replace(
              '/^([^\r\n""\']*?\()\s+(.*?)\s+(?=\)[^\)]*$)/m',
              '$1$2', $script ) ;
  
          // Concatenate lines that doesn't end with [;{}] using a space
          $script = preg_replace(
              '/(?<![;{}\n\r\s])\s*[\n\r]+\s*(?![\s\n\r{}])/s',
              ' ', $script ) ;
  
          // Concatenate lines that end with "}" using a ";", except for "else",
          // "while", "catch" and "finally" cases, or when followed by, "'", ";",
          // "}" or ")".
          $script = preg_replace(
              '/\s*}\s*[\n\r]+\s*(?!\s*(else|catch|finally|while|[}\),;]))/s',
              '};', $script ) ;
  
          // Remove blank lines, spaces at the begining or the at the end and \n\r
          $script = preg_replace(
              '/(^\s*$)|(^\s+)|(\s+$\n)/m',
              '', $script ) ;
  
          // Remove the spaces between statements.
          $script = FCKJavaScriptCompressor::_RemoveInnerSpaces( $script ) ;
  
          // Process constants.   // CHECK
          if ( $constantsProcessor->HasConstants )
              $script = $constantsProcessor->Process( $script );
  
          // Replace "new Object()".
          $script = preg_replace(
              '/new Object\(\)/',
              '{}', $script ) ;
  
          // Replace "new Array()".
          $script = preg_replace(
              '/new Array\(\)/',
              '[]', $script ) ;
  
          // Process function contents, renaming parameters and variables.
          $script = FCKJavaScriptCompressor::_ProcessFunctions( $script ) ;
  
          // Join consecutive string concatened with a "+".
          $script = $stringsProc->ConcatProtectedStrings( $script );
  
          // Restore the protected script strings.
          $script = $stringsProc->RestoreStrings( $script );
  
          return $script ;
      }
  
      function _RemoveInnerSpaces( $script )
      {
          return preg_replace_callback(
              '/(?:\s*[=?:+\-*\/&,;><|!]\s*)|(?:[(\[]\s+)|(?:\s+[)\]])/',
              array( 'FCKJavaScriptCompressor', '_RemoveInnerSpacesMatch' ), $script ) ;
      }
  
      function _RemoveInnerSpacesMatch( $match )
      {
          return trim( $match[0] ) ;
      }
  
      function _ProcessFunctions( $script )
      {
          return preg_replace_callback(
              '/function(?:\s+\w+)?\s*\(\s*([^\)]*?)\s*\)\s*({(?:(?>[^{}]*)|(?2))*})+/',
              array( 'FCKJavaScriptCompressor', '_ProcessFunctionMatch' ), $script ) ;
      }
  
      function _ProcessFunctionMatch( $match )
      {
          // Creates an array with the parameters names ($match[1]).
          if ( strlen( trim( $match[1] ) ) == 0 )
              $parameters = array() ;
          else
              $parameters = preg_split( '/\s*,\s*/', trim( $match[1] ) ) ;
  
          $hasfuncProcessor = isset( $GLOBALS['funcProcessor'] ) ;
  
          if ( $hasfuncProcessor != TRUE )
              $GLOBALS['funcProcessor'] = new FCKFunctionProcessor( $match[0], $parameters, false ) ;
          else
          {
              $GLOBALS['funcProcessor']->_Function = $match[0];
              $GLOBALS['funcProcessor']->_Parameters = $parameters;
          }
  
          $processed = $GLOBALS['funcProcessor']->Process() ;
          
          $processed = substr_replace( $processed, '', 0, 8 ) ;
  
          $processed = FCKJavaScriptCompressor::_ProcessFunctions( $processed ) ;
  
          if ( $hasfuncProcessor != TRUE )
              unset( $GLOBALS['funcProcessor'] ) ;
          
          return 'function'. $processed ;
      }
  }
  
  class FCKStringsProcessor
  {
      var $_ProtectedStrings ;
  
      function FCKStringsProcessor()
      {
          $_ProtectedStrings = array() ;
      }
  
      function ProtectStrings( $source )
      {
          // Catches string literals, regular expressions and conditional comments.
          return preg_replace_callback(
              '/(?:("|\').*?(?<!\\\\)\1)|(?:(?<![\*\/\\\\])\/[^\/\*].*?(?<!\\\\)\/(?=([\.\w])|(\s*[,;}\)])))|(?s:\/\*@(?:cc_on|if|elif|else|end).*?@\*\/)/',
              array( &$this, '_ProtectStringsMatch' ), $source ) ;
      }
  
      function _ProtectStringsMatch( $match )
      {
          $this->_ProtectedStrings[] = $match[0] ;
          return '@' . ( count( $this->_ProtectedStrings ) - 1 ) . '@' ;
      }
  
      function ConcatProtectedStrings( $source )
      {
          return preg_replace_callback(
              '/@\d+@(?>@\d+@|\+)+@\d+@/',
              array( &$this, '_ConcatProtectedStringsMatch' ), $source ) ;
      }
  
      function _ConcatProtectedStringsMatch( $match )
      {
          // $match[0] is something like @2@+@3@+@4@+@5@
  
          $indexes = explode( '@+@', trim( $match[0], '@') ) ;
  
          $leftIndex  = (int)$indexes[0] ;
          $rightPosition = 1 ;
  
          $output = '@' . $leftIndex . '@' ;
  
          while( $rightPosition < count( $indexes ) )
          {
              $rightIndex = (int)$indexes[ $rightPosition ] ;
  
              $left   = $this->_ProtectedStrings[ $leftIndex ] ;
              $right  = $this->_ProtectedStrings[ $rightIndex ] ;
  
              if ( strncmp( $left, $right, 1 ) == 0 )
              {
                  $left = substr_replace( $left, '', strlen( $left ) - 1, 1 ) ;
                  $right = substr_replace( $right, '', 0, 1 ) ;
  
                  $this->_ProtectedStrings[ $leftIndex ] = $left . $right ;
                  $this->_ProtectedStrings[ $rightIndex ] = '' ;
              }
              else
              {
                  $leftIndex = $rightIndex ;
                  $output .= '+@' . $leftIndex . '@' ;
              }
  
              $rightPosition++ ;
          }
  
          return $output ;
      }
  
      function RestoreStrings( $source )
      {
          return preg_replace_callback(
              '/@(\d+)@/',
              array( &$this, '_RestoreStringsMatch' ), $source ) ;
      }
  
      function _RestoreStringsMatch( $match )
      {
          return $this->_ProtectedStrings[ (int)$match[1] ] ;
      }
  }
  
  ?>
  
  
  


wkpark      2008/12/18 00:40:41

  Modified:    lib      fckpacker.php
  Log:
  fixed few bugs:
  do not translate the names of object members.
  append "\n" instead of ";" its more easy :)
  
  Revision  Changes    Path
  1.2       +25 -16    moniwiki/lib/fckpacker.php
  
  Index: fckpacker.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/fckpacker.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- fckpacker.php	17 Dec 2008 15:21:23 -0000	1.1
  +++ fckpacker.php	17 Dec 2008 15:40:41 -0000	1.2
  @@ -3,7 +3,7 @@
    * This is a reduced FCKpackager file for Javascript Compression
    * for MoniWiki.
    *
  - * $Id: fckpacker.php,v 1.1 2008/12/17 15:21:23 wkpark Exp $
  + * $Id: fckpacker.php,v 1.2 2008/12/17 15:40:41 wkpark Exp $
    *
    * ---------------------------------------------------------------------------
    * FCKpackager - JavaScript Packager and Compressor - http://www.fckeditor.net
  @@ -39,7 +39,7 @@
   
       // Private properties.
       var $_Constants ;
  -    var $_ContantsRegexPart ;
  +    var $_ConstantsRegexPart ;
   
       function FCKConstantProcessor()
       {
  @@ -47,15 +47,15 @@
           $this->HasConstants = FALSE ;
   
           $this->_Constants = array() ;
  -        $this->_ContantsRegexPart = '' ;
  +        $this->_ConstantsRegexPart = '' ;
       }
   
       function AddConstant( $name, $value )
       {
  -        if ( strlen( $this->_ContantsRegexPart ) > 0 )
  -            $this->_ContantsRegexPart .= '|' ;
  +        if ( strlen( $this->_ConstantsRegexPart ) > 0 )
  +            $this->_ConstantsRegexPart .= '|' ;
   
  -        $this->_ContantsRegexPart .= $name ;
  +        $this->_ConstantsRegexPart .= $name ;
   
           $this->_Constants[ $name ] = $value ;
   
  @@ -73,12 +73,12 @@
           {
               // /var\s+(?:BASIC_COLOR_RED|BASIC_COLOR_BLUE)\s*=.+?;/
               $output = preg_replace(
  -                '/var\\s+(?:' . $this->_ContantsRegexPart . ')\\s*=.+?;/m',
  +                '/var\\s+(?:' . $this->_ConstantsRegexPart . ')\\s*=.+?;/m',
                   '', $output ) ;
           }
   
           $output = preg_replace_callback(
  -            '/(?<!(var |...\.))(?:' . $this->_ContantsRegexPart . ')(?!(?:\s*=)|\w)/',
  +            '/(?<!(var |...\.))(?:' . $this->_ConstantsRegexPart . ')(?!(?:\s*=)|\w)/', // XXX
               array( &$this, '_Contant_Replace_Evaluator' ), $output ) ;
   
           return $output ;
  @@ -166,8 +166,8 @@
       {
           foreach ( $vars as $var )
           {
  -            if ( strlen( $var) > 1 )
  -                $source = preg_replace( '/(?<!\w|\d|\.)' . preg_quote( $var ) . '(?!\w|\d)/', $this->_GetVarName(), $source ) ;
  +            if ( strlen( $var) > 2)
  +                $source = preg_replace( '/(?<!\w|\d|\.|\$)' . preg_quote( $var ) . '(?!\w|\d|:)/', $this->_GetVarName(), $source ) ;
           }
   
           return $source ;
  @@ -183,7 +183,7 @@
   
           $var = $this->_VarPrefix . $this->_VarChars[ $this->_LastCharIndex++ ] ;
   
  -        if ( preg_match( '/(?<!\w|\d|\.)' . preg_quote( $var ) . '(?!\w|\d)/', $this->_Function ) )
  +        if ( preg_match( '/(?<!\w|\d|\.)' . preg_quote( $var ) . '(?!\w|\d|:)/', $this->_Function ) )
               return $this->_GetVarName() ;
           else
               return $var ;
  @@ -249,17 +249,25 @@
               '/^([^\r\n""\']*?\()\s+(.*?)\s+(?=\)[^\)]*$)/m',
               '$1$2', $script ) ;
   
  +        # Remove spaces on "if|else (": "if|else (" = "if|else("
  +        #$script = preg_replace(
  +        #   '/^([^\r\n""\']*?(?:if|else))\s+\(/m',
  +        #   '$1(', $script ) ;
  +
           // Concatenate lines that doesn't end with [;{}] using a space
           $script = preg_replace(
               '/(?<![;{}\n\r\s])\s*[\n\r]+\s*(?![\s\n\r{}])/s',
               ' ', $script ) ;
   
  -        // Concatenate lines that end with "}" using a ";", except for "else",
  +        // Concatenate lines that end with "}" using a "\n", except for "else",
           // "while", "catch" and "finally" cases, or when followed by, "'", ";",
  -        // "}" or ")".
  +        // "}", ")" or "]".
           $script = preg_replace(
  -            '/\s*}\s*[\n\r]+\s*(?!\s*(else|catch|finally|while|[}\),;]))/s',
  -            '};', $script ) ;
  +            '/\s*}\s*[\n\r]+\s*(?!\s*(else|catch|finally|while|[\]}\),;]))/s',
  +            "}\n", $script ) ;
  +
  +	// Concat lines that end with ";"
  +        $script = preg_replace('/\s*;\s*[\n\r]+\s*/s',';', $script ) ;
   
           // Remove blank lines, spaces at the begining or the at the end and \n\r
           $script = preg_replace(
  @@ -267,7 +275,8 @@
               '', $script ) ;
   
           // Remove the spaces between statements.
  -        $script = FCKJavaScriptCompressor::_RemoveInnerSpaces( $script ) ;
  +        #$script = FCKJavaScriptCompressor::_RemoveInnerSpaces( $script ) ;
  +        # error with mootools
   
           // Process constants.   // CHECK
           if ( $constantsProcessor->HasConstants )
  
  
  


wkpark      2008/12/18 00:43:53

  Modified:    .        wiki.php
  Log:
  ok! the fckpacker is working now.
  
  Revision  Changes    Path
  1.424     +11 -11    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.423
  retrieving revision 1.424
  diff -u -r1.423 -r1.424
  --- wiki.php	17 Dec 2008 12:37:41 -0000	1.423
  +++ wiki.php	17 Dec 2008 15:43:53 -0000	1.424
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.423 2008/12/17 12:37:41 wkpark Exp $
  +// $Id: wiki.php,v 1.424 2008/12/17 15:43:53 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.423 $',1,-1);
  +$_revision = substr('$Revision: 1.424 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -4021,13 +4021,12 @@
       if (!empty($Config['use_jspacker']) and !empty($Config['cache_public_dir'])) {
         include_once('lib/fckpacker.php'); # good but not work with prototype.
         $constProc = new FCKConstantProcessor();
  -      $constProc->RemoveDeclaration = false ;
  +      #$constProc->RemoveDeclaration = false ;
         #include_once('lib/jspacker.php'); # bad!
         #$packer = new JavaScriptPacker('', 0);
  -      #$packer->pack(); // init
  +      #$packer->pack(); // init compressor
         #include_once('lib/jsmin.php'); # not work.
         
  -
         $out='';
         $packed='';
         $pjs = array();
  @@ -4037,8 +4036,8 @@
   
         $cache=new Cache_text('js',2,'html');
   
  -      #if ($cache->exists($uniq))
  -      #  return $cache->fetch($uniq);
  +      #
  +      if ($cache->exists($uniq)) return $cache->fetch($uniq);
   
         foreach ($this->java_scripts as $k=>$js) {
           if ($js) {
  @@ -4063,13 +4062,13 @@
                 }
               }
             } else { //
  -            if (preg_match('/<script[^>]+(src=("|\')([^\\2]+)\\2)?[^>]*>(.*)<\/script>\s*$/',$js,$m)) {
  -              if ($m[3]) {
  +            if (preg_match('/<script[^>]+(src=("|\')([^\\2]+)\\2)?[^>]*>(.*)<\/script>\s*$/s',$js,$m)) {
  +              if (!empty($m[3])) {
                   $out.="<script type='text/javascript' src='$js'></script>\n";
  -              } else if ($m[4]) {
  +              } else if (!empty($m[4])) {
                   $packed.='/* embeded '.$k.'*/'."\n";
                   #$packed.= $packer->_pack($js)."\n";
  -                $packed.= FCKJavaScriptCompressor::Compress($js, $constProc)."\n";
  +                $packed.= FCKJavaScriptCompressor::Compress($m[4], $constProc)."\n";
                   #$packed.= JSMin::minify($js);
                   $pjs[]=$k;
                 }
  @@ -4087,6 +4086,7 @@
         $out.='<script type="text/javascript" src="'.$Config['cache_public_url'].'/'.$jsname.'"></script>'."\n";
         $cache->update($uniq,$out);
   
  +      # save real compressed js file.
         $fc->_save($Config['cache_public_dir'].'/'.$jsname,$packed);
         return $out;
       }
  
  
  


wkpark      2008/12/18 12:36:56

  Modified:    local    folding.js
  Log:
  fix to work with mootools.
  
  Revision  Changes    Path
  1.2       +27 -14    moniwiki/local/folding.js
  
  Index: folding.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/folding.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- folding.js	30 Oct 2007 11:11:56 -0000	1.1
  +++ folding.js	18 Dec 2008 03:36:56 -0000	1.2
  @@ -1,17 +1,31 @@
  -function foldingSection(btn,id)
  +/*
  + * Builti-in section folding for MoniWiki
  + * 
  + * $Id: folding.js,v 1.2 2008/12/18 03:36:56 wkpark Exp $
  + */
  +
  +function foldingSection(btn, id)
   {
       var sect;
  -    if (typeof id == 'object') sect=id;
  +    if (typeof id == 'object') sect = id;
       else sect=document.getElementById(id);
       if (!sect) return;
  -    var toggle=true;
  +    var toggle = true;
       if (sect.style.display != 'none') {
  -        toggle=false;
  +        toggle = false;
       }
   
       var icon=null;
  -    if (btn)
  +    if (btn) {
           icon=btn.getElementsByTagName('img')[0];
  +        if (!icon) {
  +            icon = new Image();
  +            icon.src = _url_prefix + '/imgs/plugin/arrdown.png';
  +            icon.style.width = '12px';
  +            btn.insertBefore(icon, btn.firstChild);
  +            //btn.appendChild(icon);
  +        }
  +    }
   
       if (typeof Effect != 'undefined') { // prototype.js
           var dur = 0.5;
  @@ -21,20 +35,19 @@
             new Effect.SlideUp(sect, { duration: dur, afterFinish: function() {Element.hide(sect);} });
           }
       } else { // get sectpages for the first time.
  -        var mySlide = new Fx.Slide(sect); // oops!!!
  -        if (sect.style.height != 0) {
  -            mySlide.slideIn();
  -        } else {
  -            mySlide.slideOut();
  -        }
  +        var mySlide = new Fx.Slide(sect); // mootools
  +        mySlide.toggle();
       }
       if (icon) {
           var name=icon.getAttribute('class');
  -        if (name == 'close')
  +        if (name == 'close') {
  +            icon.src = _url_prefix + '/imgs/plugin/arrup.png';
               icon.setAttribute('class','');
  -        else
  +        } else {
  +            icon.src = _url_prefix + '/imgs/plugin/arrdown.png';
               icon.setAttribute('class','close');
  +        }
       }
   }
   
  -// vim:et:sts=4:sw:
  +// vim:et:sts=4:sw=4:
  
  
  


wkpark      2008/12/18 19:08:23

  Added:       local/js i18n.js
  Log:
  a simple i18n support for javascript added.
  
  Revision  Changes    Path
  1.1                  moniwiki/local/js/i18n.js
  
  Index: i18n.js
  ===================================================================
  /**
   *
   * A Simple Javascript module to support I18n for the MoniWiki.
   *
   * @author: Won-Kyu Park <wkpark@kldp.org>
   * @date: 2008-12-18
   * @name: a simple I18n javascript module.
   * @Description: a Simple Javascript module to support I18n.
   * @url: MoniWiki:JavascriptI18n
   * @version: $Revision: 1.1 $
   * @license: GPL
   *
   * _translations = {
   *  "Continue to ?": "Hello World",
   * }
   *
   */
  
  readLanguage = function(domain) {
      var supported = { 'ko': 1 };
      var lang = navigator.language || navigator.userLanguage;
  
      if (supported[lang.substr(0,2)]) {
          //
          // read a main language file
          //
          var head = document.getElementsByTagName("head")[0];
          var js = document.createElement('script');
          js.type = 'text/javascript';
          js.src = _url_prefix + '/local/js/lang/' + lang.substr(0,2) + '/' + domain + '.js';
          head.appendChild(js);
      }
  }
  
  _ = function(msgid) {
      if ( typeof _translations == "undefined") 
          return msgid;
  
      var msgstr = _translations[msgid];
      if (!msgstr)
          msgstr = msgid;
  
      return msgstr;
  }
  
  //
  // override the alert/confirm method.
  //
  
  var oldalert = window.alert;
  var oldconfirm = window.confirm;
  
  function setAlert() {
      if (document.getElementById) {
          window.alert = function(txt) {
              oldalert(_(txt));
          }
          window.confirm = function(txt) {
              oldconfirm(_(txt));
          }
      }
  }
  
  readLanguage('moniwiki');
  setAlert();
  
  // vim:et:sts=4:sw=4:
  
  
  


wkpark      2008/12/18 19:08:36

  moniwiki/local/js/lang - New directory

wkpark      2008/12/18 19:11:39

  moniwiki/local/js/locale - New directory

wkpark      2008/12/18 19:21:16

  moniwiki/local/js/locale/po - New directory

wkpark      2008/12/18 19:21:59

  Added:       local/js/locale Makefile.in dummy.js make-js-trans.awk
                        update-makefile.sh
  Log:
  JavaScript I18 files are added.
  
  Revision  Changes    Path
  1.1                  moniwiki/local/js/locale/Makefile.in
  
  Index: Makefile.in
  ===================================================================
  # $Id: Makefile.in,v 1.1 2008/12/18 10:21:59 wkpark Exp $
  #
  # local/js/locale/Makefile
  #
  # This is a replacement for locale/translate.sh to avoid remaking
  # files that don't need to be remade.
  #
  
  POT_FILE = po/moniwiki.pot
  
  .PHONY: all po clean dep ${POT_FILE}
  
  all	: po js
  po 	: # dependencies are auto-generated by 'make dep' , see below
  js	: # dependencies are auto-generated by 'make dep' , see below
  
  ${POT_FILE} : # dependencies are auto-generated by 'make dep' , see below
  	test -f $@ || touch $@
  	cp -f $@ $@~
  	xgettext -L C++ -k_ -kt_ -k_t -k__printf -k__sprintf -k__vsprintf -kfmt -o $@.extracted $^
  	msgmerge -o $@ $@~ $@.extracted && rm -f $@.extracted
  
  po/%.po : ${POT_FILE}
  	test -f $@ || touch $@
  	cp -f $@ $@~
  	msgmerge -o $@.new $@~ $^ && mv -f $@.new $@
  
  euckr:
  	iconv -f UTF-8 -t EUC-KR po/ko.po |sed 's/UTF-8/EUC-KR/' >po/ko_KR.po
  	mkdir -p ko_KR
  	rm po/ko_KR.po
  
  # Generate .php from .mo rather than .po to maximize
  # the probability of agreement between .mo and .php files.
  %/moniwiki.js : po/%.po
  	mkdir -p $*
  	cat $< | awk -f make-js-trans.awk > $@
  
  clean :
  	rm -f ${MO_FILES} ${PHP_FILES}
  
  dep :
  	$(SHELL) update-makefile.sh
  
  
  # DO NOT DELETE THIS LINE
  #
  # The remainder of this file is auto-generated
  #
  # (Run 'make dep' to regenerate this section.)
  #
  
  
  
  1.1                  moniwiki/local/js/locale/dummy.js
  
  Index: dummy.js
  ===================================================================
  _("Continue to edit current text ?");
  
  
  
  1.1                  moniwiki/local/js/locale/make-js-trans.awk
  
  Index: make-js-trans.awk
  ===================================================================
  # $Id: make-js-trans.awk,v 1.1 2008/12/18 10:21:59 wkpark Exp $
  
  BEGIN {
    msgid=""; msgstr="";
    print ("_translations = {");
  }
  
  /^msgid "/ { #"{
    if (msgid && str) {
      gsub(/\$/, "\\$", str);
      print ("\"" msgid "\":\n   \"" str "\",");
    }
    str = substr ($0, 8, length ($0) - 8);
    msgstr="";
  }
  
  /^msgstr "/ { #"{
    msgid=str;
    str = substr ($0, 9, length ($0) - 9);
    next;
  }
  
  /^"/ { #"{
    str = (str substr ($0, 2, length ($0) - 2));
    next;
  }
  
  END {
    if (msgid && str) {
      gsub(/\$/, "\\$", str);
      print ("\"" msgid "\":\n   \"" str "\"");
    }
    print ("}\n");
  }
  
  
  
  
  1.1                  moniwiki/local/js/locale/update-makefile.sh
  
  Index: update-makefile.sh
  ===================================================================
  #!/bin/sh
  #
  # $Id: update-makefile.sh,v 1.1 2008/12/18 10:21:59 wkpark Exp $
  #
  # This shell script is used to update the list of .po files and the
  # dependencies for moniwiki.pot in the Makefile.
  #
  # Do not invoke this script directly, rather run:
  #
  #    make dep
  #
  # to update the Makefile.
  #
  
  test -f Makefile || cp -f Makefile.in Makefile
  
  # Generate the head (manually-edited part) of the new Makefile
  #
  makefile_head () {
      sed '/^# DO NOT DELETE THIS LINE$/,$ d' Makefile && cat <<'EOF'
  # DO NOT DELETE THIS LINE
  #
  # The remainder of this file is auto-generated
  #
  # (Run 'make dep' to regenerate this section.)
  #
  EOF
  }
  
  # Find all .po files in po/.
  #
  po_files () {
      find po -name "*.po" |
  	sort |
  	sed 's/^/po: /p;
               s|^.*/\(.*\)\.po$|js: \1/moniwiki.js|;'
  }
  
  # Find all php and html source code which should be scanned
  # by xgettext() for localizeable strings.
  # find ../lib fails on cygwin
  pot_file_deps () {
      (cd ..; find ../SWFUpload ../Wikiwyg \( -name "*.js" \)) |
  	sed 's|^|${POT_FILE}: ../|;' |
  	sort
  }
  
  # Generate the new Makefile
  { makefile_head &&
      po_files &&
      echo "#" &&
      pot_file_deps; } > Makefile.new || exit 1
  
  if diff -q Makefile Makefile.new > /dev/null
  then
      # Don't touch the Makefile if unchanged.
      # (This avoids updating the timestamp)
      rm Makefile.new
      echo "Makefile unchanged" 1>&2
      exit 0
  fi
  
  cat >> Makefile.new <<'MAIN'
  ${POT_FILE}: dummy.js
  MAIN
  
  mv Makefile.new Makefile && echo "Makefile updated" 1>&2
  
  
  


wkpark      2008/12/18 19:21:59

  Added:       local/js/locale/po ko.po
  Log:
  JavaScript I18 files are added.
  
  Revision  Changes    Path
  1.1                  moniwiki/local/js/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  # Copyright (C) 2008 Won-Kyu Park
  # This file is distributed under the same license as the MoniWiki package.
  #
  msgid ""
  msgstr ""
  "Project-Id-Version: MoniWiki 1.1.3\n"
  "Report-Msgid-Bugs-To: \n"
  "POT-Creation-Date: 2008-12-18 19:19+0900\n"
  "PO-Revision-Date: 2008-12-18 17:00+0900\n"
  "Last-Translator: Won-Kyu Park <wkpark@kldp.org>\n"
  "MIME-Version: 1.0\n"
  "Content-Type: text/plain; charset=UTF-8\n"
  "Content-Transfer-Encoding: 8bit\n"
  
  #: dummy.js:1
  msgid "Continue to edit current text ?"
  msgstr "현재의 텍스트를 계속 편집하시겠습니까 ?"
  
  
  


wkpark      2008/12/18 19:23:11

  Modified:    local/js i18n.js
  Log:
  the path of the language file fixed
  
  Revision  Changes    Path
  1.2       +1 -1      moniwiki/local/js/i18n.js
  
  Index: i18n.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/i18n.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- i18n.js	18 Dec 2008 10:08:23 -0000	1.1
  +++ i18n.js	18 Dec 2008 10:23:11 -0000	1.2
  @@ -7,7 +7,7 @@
    * @name: a simple I18n javascript module.
    * @Description: a Simple Javascript module to support I18n.
    * @url: MoniWiki:JavascriptI18n
  - * @version: $Revision: 1.1 $
  + * @version: $Revision: 1.2 $
    * @license: GPL
    *
    * _translations = {
  @@ -27,7 +27,7 @@
           var head = document.getElementsByTagName("head")[0];
           var js = document.createElement('script');
           js.type = 'text/javascript';
  -        js.src = _url_prefix + '/local/js/lang/' + lang.substr(0,2) + '/' + domain + '.js';
  +        js.src = _url_prefix + '/local/js/locale/' + lang.substr(0,2) + '/' + domain + '.js';
           head.appendChild(js);
       }
   }
  
  
  


wkpark      2008/12/18 20:12:06

  Modified:    local/js i18n.js
  Log:
  encapsulate and cleanup
  
  Revision  Changes    Path
  1.3       +9 -9      moniwiki/local/js/i18n.js
  
  Index: i18n.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/i18n.js,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- i18n.js	18 Dec 2008 10:23:11 -0000	1.2
  +++ i18n.js	18 Dec 2008 11:12:06 -0000	1.3
  @@ -7,7 +7,7 @@
    * @name: a simple I18n javascript module.
    * @Description: a Simple Javascript module to support I18n.
    * @url: MoniWiki:JavascriptI18n
  - * @version: $Revision: 1.2 $
  + * @version: $Revision: 1.3 $
    * @license: GPL
    *
    * _translations = {
  @@ -30,27 +30,28 @@
           js.src = _url_prefix + '/local/js/locale/' + lang.substr(0,2) + '/' + domain + '.js';
           head.appendChild(js);
       }
  -}
  +};
   
   _ = function(msgid) {
  -    if ( typeof _translations == "undefined") 
  +    if ( typeof _translations == "undefined") {
           return msgid;
  +    }
   
       var msgstr = _translations[msgid];
       if (!msgstr)
           msgstr = msgid;
   
       return msgstr;
  -}
  +};
   
   //
   // override the alert/confirm method.
   //
   
  -var oldalert = window.alert;
  -var oldconfirm = window.confirm;
  +(function () {
  +    var oldalert = window.alert;
  +    var oldconfirm = window.confirm;
   
  -function setAlert() {
       if (document.getElementById) {
           window.alert = function(txt) {
               oldalert(_(txt));
  @@ -59,9 +60,8 @@
               oldconfirm(_(txt));
           }
       }
  -}
  +})();
   
   readLanguage('moniwiki');
  -setAlert();
   
   // vim:et:sts=4:sw=4:
  
  
  


wkpark      2008/12/18 20:15:09

  Modified:    local/js prototype.js scriptaculous.js
  Log:
  update
  
  Revision  Changes    Path
  1.3       +1 -1      moniwiki/local/js/prototype.js
  
  Index: prototype.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/prototype.js,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- prototype.js	17 Dec 2008 12:30:27 -0000	1.2
  +++ prototype.js	18 Dec 2008 11:15:09 -0000	1.3
  @@ -4317,4 +4317,4 @@
   
   /*--------------------------------------------------------------------------*/
   
  -Element.addMethods();
  \ No newline at end of file
  +Element.addMethods();
  
  
  
  1.2       +29 -20    moniwiki/local/js/scriptaculous.js
  
  Index: scriptaculous.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/scriptaculous.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- scriptaculous.js	19 Dec 2006 02:09:32 -0000	1.1
  +++ scriptaculous.js	18 Dec 2008 11:15:09 -0000	1.2
  @@ -1,7 +1,7 @@
  -// script.aculo.us scriptaculous.js v1.6.5, Wed Nov 08 14:17:49 CET 2006
  +// script.aculo.us scriptaculous.js v1.8.2, Tue Nov 18 18:30:58 +0100 2008
   
  -// Copyright (c) 2005, 2006 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
  -// 
  +// Copyright (c) 2005-2008 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
  +//
   // Permission is hereby granted, free of charge, to any person obtaining
   // a copy of this software and associated documentation files (the
   // "Software"), to deal in the Software without restriction, including
  @@ -9,7 +9,7 @@
   // distribute, sublicense, and/or sell copies of the Software, and to
   // permit persons to whom the Software is furnished to do so, subject to
   // the following conditions:
  -// 
  +//
   // The above copyright notice and this permission notice shall be
   // included in all copies or substantial portions of the Software.
   //
  @@ -24,28 +24,37 @@
   // For details, see the script.aculo.us web site: http://script.aculo.us/
   
   var Scriptaculous = {
  -  Version: '1.6.5',
  +  Version: '1.8.2',
     require: function(libraryName) {
       // inserting via DOM fails in Safari 2.0, so brute force approach
  -    document.write('<script type="text/javascript" src="'+libraryName+'"></script>');
  +    document.write('<script type="text/javascript" src="'+libraryName+'"><\/script>');
     },
  +  REQUIRED_PROTOTYPE: '1.6.0.3',
     load: function() {
  -    if((typeof Prototype=='undefined') || 
  -       (typeof Element == 'undefined') || 
  +    function convertVersionString(versionString) {
  +      var v = versionString.replace(/_.*|\./g, '');
  +      v = parseInt(v + '0'.times(4-v.length));
  +      return versionString.indexOf('_') > -1 ? v-1 : v;
  +    }
  +
  +    if((typeof Prototype=='undefined') ||
  +       (typeof Element == 'undefined') ||
          (typeof Element.Methods=='undefined') ||
  -       parseFloat(Prototype.Version.split(".")[0] + "." +
  -                  Prototype.Version.split(".")[1]) < 1.5)
  -       throw("script.aculo.us requires the Prototype JavaScript framework >= 1.5.0");
  -    
  -    $A(document.getElementsByTagName("script")).findAll( function(s) {
  -      return (s.src && s.src.match(/scriptaculous\.js(\?.*)?$/))
  -    }).each( function(s) {
  -      var path = s.src.replace(/scriptaculous\.js(\?.*)?$/,'');
  -      var includes = s.src.match(/\?.*load=([a-z,]*)/);
  -      (includes ? includes[1] : 'builder,effects,dragdrop,controls,slider').split(',').each(
  +       (convertVersionString(Prototype.Version) <
  +        convertVersionString(Scriptaculous.REQUIRED_PROTOTYPE)))
  +       throw("script.aculo.us requires the Prototype JavaScript framework >= " +
  +        Scriptaculous.REQUIRED_PROTOTYPE);
  +
  +    var js = /scriptaculous\.js(\?.*)?$/;
  +    $$('head script[src]').findAll(function(s) {
  +      return s.src.match(js);
  +    }).each(function(s) {
  +      var path = s.src.replace(js, ''),
  +      includes = s.src.match(/\?.*load=([a-z,]*)/);
  +      (includes ? includes[1] : 'builder,effects,dragdrop,controls,slider,sound').split(',').each(
          function(include) { Scriptaculous.require(path+include+'.js') });
       });
     }
  -}
  +};
   
  -Scriptaculous.load();
  \ No newline at end of file
  +Scriptaculous.load();
  
  
  


wkpark      2008/12/18 21:33:51

  Modified:    local    moniwyg.js
  Log:
  gettextized
  
  Revision  Changes    Path
  1.57      +61 -7     moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.56
  retrieving revision 1.57
  diff -u -r1.56 -r1.57
  --- moniwyg.js	17 Dec 2008 12:33:41 -0000	1.56
  +++ moniwyg.js	18 Dec 2008 12:33:51 -0000	1.57
  @@ -1,9 +1,22 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.56 2008/12/17 12:33:41 wkpark Exp $
  +// $Id: moniwyg.js,v 1.57 2008/12/18 12:33:51 wkpark Exp $
   //
   //_url_prefix="/wiki";
  +//
  +
  +if ( typeof N_ == 'undefined') {
  +    N_ = function(msgid) {
  +        return msgid;
  +    };
  +}
  +
  +if ( typeof _ == 'undefined') {
  +    _ = function(msgid) {
  +        return msgid;
  +    };
  +}
   
   Wikiwyg.browserIsSupported = (
       Wikiwyg.is_gecko ||
  @@ -1905,6 +1918,19 @@
   
   proto = Wikiwyg.Toolbar.prototype;
   
  +proto.make_button = function(type, label) {
  +    var base = this.config.imagesLocation;
  +    var ext = this.config.imagesExtension;
  +    return Wikiwyg.createElementWithAttrs(
  +        'img', {
  +            'class': 'wikiwyg_button',
  +            alt: _(label),
  +            title: _(label),
  +            src: base + type + ext
  +        }
  +    );
  +}
  +
   proto.addControlItem = function(text, method,arg) {
       var span = Wikiwyg.createElementWithAttrs(
           'span', { 'class': 'wikiwyg_control_link' }
  @@ -1913,7 +1939,7 @@
       var link = Wikiwyg.createElementWithAttrs(
           'input', {
               type: 'button',
  -            value: text
  +            value: _(text)
           }
       );
       //link.appendChild(document.createTextNode(text));
  @@ -1948,11 +1974,39 @@
       'smiley'
   ];
   
  -proto.config.controlLabels.math = 'Math';
  -proto.config.controlLabels.nowiki = 'As Is';
  -proto.config.controlLabels.image = 'Image';
  -proto.config.controlLabels.media = 'Media';
  -proto.config.controlLabels.quote = 'Quote';
  +proto.config.controlLabels = {
  +    save: N_("Save"),
  +    preview: N_("Preview"),
  +    cancel: N_("Cancel"),
  +    bold: N_("Bold (Ctrl+b)"),
  +    italic: N_("Italic (Ctrl+i)"),
  +    underline: N_("Underline (Ctrl+u)"),
  +    strike: N_("Strike Through (Ctrl+d)"),
  +    hr: N_("Horizontal Rule"),
  +    ordered: N_("Numbered List"),
  +    unordered: N_("Bulleted List"),
  +    indent: N_("More Indented"),
  +    outdent: N_("Less Indented"),
  +    help: N_("About Wikiwyg"),
  +    label: N_("[Style]"),
  +    p: N_("Normal Text"),
  +    pre: N_("Preformatted"),
  +    h1: N_("Heading 1"),
  +    h2: N_("Heading 2"),
  +    h3: N_("Heading 3"),
  +    h4: N_("Heading 4"),
  +    h5: N_("Heading 5"),
  +    h6: N_("Heading 6"),
  +    link: N_("Create Link"),
  +    smiley: N_("Smiley"),
  +    unlink: N_("Remove Linkedness"),
  +    table: N_("Create Table"),
  +    math: N_("Math"),
  +    nowiki: N_("As Is"),
  +    image: N_("Image"),
  +    media: N_("Media"),
  +    quote: N_("Quote")
  +};
   
   proto = Wikiwyg.Wikitext.prototype;
   proto.config.markupRules.bold = ['bound_phrase', "'''", "'''"];
  
  
  


wkpark      2008/12/18 21:35:07

  Modified:    local/SWFUpload moni.js
  Log:
  fixed msg
  
  Revision  Changes    Path
  1.9       +1 -1      moniwiki/local/SWFUpload/moni.js
  
  Index: moni.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/SWFUpload/moni.js,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- moni.js	17 Dec 2008 06:07:27 -0000	1.8
  +++ moni.js	18 Dec 2008 12:35:07 -0000	1.9
  @@ -66,7 +66,7 @@
   }
   
   uploadCancel = function() {
  -    alert("Cancel!");
  +    alert("Canceled!");
   }
   
   function delFiles() {
  
  
  


wkpark      2008/12/18 21:46:17

  Modified:    local/js/locale Makefile.in dummy.js update-makefile.sh
  Log:
  update
  
  Revision  Changes    Path
  1.2       +2 -2      moniwiki/local/js/locale/Makefile.in
  
  Index: Makefile.in
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/locale/Makefile.in,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Makefile.in	18 Dec 2008 10:21:59 -0000	1.1
  +++ Makefile.in	18 Dec 2008 12:46:17 -0000	1.2
  @@ -1,4 +1,4 @@
  -# $Id: Makefile.in,v 1.1 2008/12/18 10:21:59 wkpark Exp $
  +# $Id: Makefile.in,v 1.2 2008/12/18 12:46:17 wkpark Exp $
   #
   # local/js/locale/Makefile
   #
  @@ -17,7 +17,7 @@
   ${POT_FILE} : # dependencies are auto-generated by 'make dep' , see below
   	test -f $@ || touch $@
   	cp -f $@ $@~
  -	xgettext -L C++ -k_ -kt_ -k_t -k__printf -k__sprintf -k__vsprintf -kfmt -o $@.extracted $^
  +	xgettext -L C++ -k_ -kt_ -k_t -kN_ -k__printf -k__sprintf -k__vsprintf -kfmt -o $@.extracted $^
   	msgmerge -o $@ $@~ $@.extracted && rm -f $@.extracted
   
   po/%.po : ${POT_FILE}
  
  
  
  1.2       +2 -0      moniwiki/local/js/locale/dummy.js
  
  Index: dummy.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/locale/dummy.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- dummy.js	18 Dec 2008 10:21:59 -0000	1.1
  +++ dummy.js	18 Dec 2008 12:46:17 -0000	1.2
  @@ -1 +1,3 @@
   _("Continue to edit current text ?");
  +_("Canceled!");
  +_("Please select the text you would like to turn into a link.");
  
  
  
  1.2       +2 -1      moniwiki/local/js/locale/update-makefile.sh
  
  Index: update-makefile.sh
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/locale/update-makefile.sh,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- update-makefile.sh	18 Dec 2008 10:21:59 -0000	1.1
  +++ update-makefile.sh	18 Dec 2008 12:46:17 -0000	1.2
  @@ -1,6 +1,6 @@
   #!/bin/sh
   #
  -# $Id: update-makefile.sh,v 1.1 2008/12/18 10:21:59 wkpark Exp $
  +# $Id: update-makefile.sh,v 1.2 2008/12/18 12:46:17 wkpark Exp $
   #
   # This shell script is used to update the list of .po files and the
   # dependencies for moniwiki.pot in the Makefile.
  @@ -60,6 +60,7 @@
       exit 0
   fi
   
  +ls ../../*.js | sed 's|^|${POT_FILE}: |;' >> Makefile.new
   cat >> Makefile.new <<'MAIN'
   ${POT_FILE}: dummy.js
   MAIN
  
  
  


wkpark      2008/12/18 21:46:17

  Modified:    local/js/locale/po ko.po
  Log:
  update
  
  Revision  Changes    Path
  1.2       +133 -1    moniwiki/local/js/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/locale/po/ko.po,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ko.po	18 Dec 2008 10:21:59 -0000	1.1
  +++ ko.po	18 Dec 2008 12:46:17 -0000	1.2
  @@ -5,13 +5,145 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1.3\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2008-12-18 19:19+0900\n"
  +"POT-Creation-Date: 2008-12-18 21:45+0900\n"
   "PO-Revision-Date: 2008-12-18 17:00+0900\n"
   "Last-Translator: Won-Kyu Park <wkpark@kldp.org>\n"
   "MIME-Version: 1.0\n"
   "Content-Type: text/plain; charset=UTF-8\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  +#: ../../moniwyg.js:1978
  +msgid "Save"
  +msgstr "저장"
  +
  +#: ../../moniwyg.js:1979
  +msgid "Preview"
  +msgstr "미리보기"
  +
  +#: ../../moniwyg.js:1980
  +msgid "Cancel"
  +msgstr "취소"
  +
  +#: ../../moniwyg.js:1981
  +msgid "Bold (Ctrl+b)"
  +msgstr "굵게 (Ctrl-b)"
  +
  +#: ../../moniwyg.js:1982
  +msgid "Italic (Ctrl+i)"
  +msgstr "기울임 (Ctrl+i)"
  +
  +#: ../../moniwyg.js:1983
  +msgid "Underline (Ctrl+u)"
  +msgstr "밑줄 (Ctrl+u)"
  +
  +#: ../../moniwyg.js:1984
  +msgid "Strike Through (Ctrl+d)"
  +msgstr "삭제선 (Ctrl+d)"
  +
  +#: ../../moniwyg.js:1985
  +msgid "Horizontal Rule"
  +msgstr "수평줄"
  +
  +#: ../../moniwyg.js:1986
  +msgid "Numbered List"
  +msgstr "숫자 리스트"
  +
  +#: ../../moniwyg.js:1987
  +msgid "Bulleted List"
  +msgstr "총알 리스트"
  +
  +#: ../../moniwyg.js:1988
  +msgid "More Indented"
  +msgstr "들여쓰기"
  +
  +#: ../../moniwyg.js:1989
  +msgid "Less Indented"
  +msgstr "내어쓰기"
  +
  +#: ../../moniwyg.js:1990
  +msgid "About Wikiwyg"
  +msgstr "Wikiwyg는"
  +
  +#: ../../moniwyg.js:1991
  +msgid "[Style]"
  +msgstr ""
  +
  +#: ../../moniwyg.js:1992
  +msgid "Normal Text"
  +msgstr "일반 글씨"
  +
  +#: ../../moniwyg.js:1993
  +msgid "Preformatted"
  +msgstr ""
  +
  +#: ../../moniwyg.js:1994
  +msgid "Heading 1"
  +msgstr "제목 1"
  +
  +#: ../../moniwyg.js:1995
  +msgid "Heading 2"
  +msgstr "제목 2"
  +
  +#: ../../moniwyg.js:1996
  +msgid "Heading 3"
  +msgstr "제목 3"
  +
  +#: ../../moniwyg.js:1997
  +msgid "Heading 4"
  +msgstr "제목 4"
  +
  +#: ../../moniwyg.js:1998
  +msgid "Heading 5"
  +msgstr "제목 5"
  +
  +#: ../../moniwyg.js:1999
  +msgid "Heading 6"
  +msgstr "제목 6"
  +
  +#: ../../moniwyg.js:2000
  +msgid "Create Link"
  +msgstr "링크 생성"
  +
  +#: ../../moniwyg.js:2001
  +msgid "Smiley"
  +msgstr "스마일리"
  +
  +#: ../../moniwyg.js:2002
  +msgid "Remove Linkedness"
  +msgstr "링크 제거"
  +
  +#: ../../moniwyg.js:2003
  +msgid "Create Table"
  +msgstr "테이블"
  +
  +#: ../../moniwyg.js:2004
  +msgid "Math"
  +msgstr "수식"
  +
  +#: ../../moniwyg.js:2005
  +msgid "As Is"
  +msgstr "그대로"
  +
  +#: ../../moniwyg.js:2006
  +msgid "Image"
  +msgstr "이미지"
  +
  +#: ../../moniwyg.js:2007
  +msgid "Media"
  +msgstr "미디어"
  +
  +#: ../../moniwyg.js:2008
  +msgid "Quote"
  +msgstr "인용"
  +
   #: dummy.js:1
   msgid "Continue to edit current text ?"
   msgstr "현재의 텍스트를 계속 편집하시겠습니까 ?"
  +
  +#: dummy.js:2
  +msgid "Canceled!"
  +msgstr "취소되었습니다!"
  +
  +#: dummy.js:3
  +msgid "Please select the text you would like to turn into a link."
  +msgstr "링크로 바꾸고 싶은 텍스트를 선택해주시기 바랍니다."
  
  
  


wkpark      2008/12/18 21:52:26

  Modified:    .        wiki.php
  Log:
  do not sort the order of JSs
  
  Revision  Changes    Path
  1.425     +2 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.424
  retrieving revision 1.425
  diff -u -r1.424 -r1.425
  --- wiki.php	17 Dec 2008 15:43:53 -0000	1.424
  +++ wiki.php	18 Dec 2008 12:52:25 -0000	1.425
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.424 2008/12/17 15:43:53 wkpark Exp $
  +// $Id: wiki.php,v 1.425 2008/12/18 12:52:25 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.424 $',1,-1);
  +$_revision = substr('$Revision: 1.425 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -4031,7 +4031,6 @@
         $packed='';
         $pjs = array();
         $keys = array_keys($this->java_scripts);
  -      sort($keys);
         $uniq = md5(implode(';',$keys));
   
         $cache=new Cache_text('js',2,'html');
  @@ -4078,7 +4077,6 @@
   
           }
         }
  -      sort($pjs);
         $suniq = md5(implode(';',$pjs));
   
         $fc = new Cache_text('js',2,'js',$Config['cache_public_dir']);
  
  
  


wkpark      2008/12/18 22:35:49

  Modified:    .        wiki.php
  Log:
  fixed js packer behavior. do not reload already cached file
  
  Revision  Changes    Path
  1.426     +11 -6     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.425
  retrieving revision 1.426
  diff -u -r1.425 -r1.426
  --- wiki.php	18 Dec 2008 12:52:25 -0000	1.425
  +++ wiki.php	18 Dec 2008 13:35:49 -0000	1.426
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.425 2008/12/18 12:52:25 wkpark Exp $
  +// $Id: wiki.php,v 1.426 2008/12/18 13:35:49 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.425 $',1,-1);
  +$_revision = substr('$Revision: 1.426 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -4030,13 +4030,18 @@
         $out='';
         $packed='';
         $pjs = array();
  -      $keys = array_keys($this->java_scripts);
  -      $uniq = md5(implode(';',$keys));
  +      $keys = array();
  +      foreach ($this->java_scripts as $k=>$js)
  +        if (!empty($js)) $keys[]=$k;
   
  +      if (empty($keys)) return '';
  +      $uniq = md5(implode(';',$keys));
         $cache=new Cache_text('js',2,'html');
   
  -      #
  -      if ($cache->exists($uniq)) return $cache->fetch($uniq);
  +      if ($cache->exists($uniq)) {
  +        foreach ($keys as $k) $this->java_scripts[$k]='';
  +        return $cache->fetch($uniq);
  +      }
   
         foreach ($this->java_scripts as $k=>$js) {
           if ($js) {
  
  
  


wkpark      2008/12/18 23:49:14

  Modified:    .        wiki.php
  Log:
  fixed js packer: do not compress embeded JSs
  
  Revision  Changes    Path
  1.427     +6 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.426
  retrieving revision 1.427
  diff -u -r1.426 -r1.427
  --- wiki.php	18 Dec 2008 13:35:49 -0000	1.426
  +++ wiki.php	18 Dec 2008 14:49:13 -0000	1.427
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.426 2008/12/18 13:35:49 wkpark Exp $
  +// $Id: wiki.php,v 1.427 2008/12/18 14:49:13 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.426 $',1,-1);
  +$_revision = substr('$Revision: 1.427 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -4066,9 +4066,11 @@
                 }
               }
             } else { //
  -            if (preg_match('/<script[^>]+(src=("|\')([^\\2]+)\\2)?[^>]*>(.*)<\/script>\s*$/s',$js,$m)) {
  +            $out.=$js;
  +            if ( 0 and preg_match('/<script[^>]+(src=("|\')([^\\2]+)\\2)?[^>]*>(.*)<\/script>\s*$/s',$js,$m)) {
                 if (!empty($m[3])) {
  -                $out.="<script type='text/javascript' src='$js'></script>\n";
  +                $out.=$js;
  +                #$out.="<script type='text/javascript' src='$js'></script>\n";
                 } else if (!empty($m[4])) {
                   $packed.='/* embeded '.$k.'*/'."\n";
                   #$packed.= $packer->_pack($js)."\n";
  
  
  


wkpark      2008/12/18 23:53:52

  Modified:    lib      fckpacker.php
  Log:
  Workaround for evel(). do not convert some reserved variables.
  
  Revision  Changes    Path
  1.3       +4 -3      moniwiki/lib/fckpacker.php
  
  Index: fckpacker.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/fckpacker.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- fckpacker.php	17 Dec 2008 15:40:41 -0000	1.2
  +++ fckpacker.php	18 Dec 2008 14:53:52 -0000	1.3
  @@ -3,7 +3,7 @@
    * This is a reduced FCKpackager file for Javascript Compression
    * for MoniWiki.
    *
  - * $Id: fckpacker.php,v 1.2 2008/12/17 15:40:41 wkpark Exp $
  + * $Id: fckpacker.php,v 1.3 2008/12/18 14:53:52 wkpark Exp $
    *
    * ---------------------------------------------------------------------------
    * FCKpackager - JavaScript Packager and Compressor - http://www.fckeditor.net
  @@ -147,7 +147,6 @@
                   $varsMatch = preg_replace( '/(\((?:(?>[^\(\)]*)|(?1))*\))+/', '', $varsMatch ) ;
                   $varsMatch = preg_replace( '/(\[(?:(?>[^\[\]]*)|(?1))*\])+/', '', $varsMatch ) ;
                   $varsMatch = preg_replace( '/({(?:(?>[^{}]*)|(?1))*})+/', '', $varsMatch ) ;
  -                
                   $numVarNameMatches = preg_match_all( '/(?:^|,)\s*([^\s=,]+)/', $varsMatch, $varNameMatches ) ;
                   
                   for ( $j = 0 ; $j < $numVarNameMatches ; $j++ )
  @@ -164,9 +163,10 @@
   
       function _ProcessVars( $source, $vars )
       {
  +        $protected = array('self','event');
           foreach ( $vars as $var )
           {
  -            if ( strlen( $var) > 2)
  +            if ( strlen( $var) > 2 and !in_array($var, $protected))
                   $source = preg_replace( '/(?<!\w|\d|\.|\$)' . preg_quote( $var ) . '(?!\w|\d|:)/', $this->_GetVarName(), $source ) ;
           }
   
  @@ -435,4 +435,5 @@
       }
   }
   
  +// vim:et:sts=4:sw=4:
   ?>
  
  
  


wkpark      2008/12/19 22:32:28

  Modified:    local/js/locale Makefile.in dummy.js update-makefile.sh
  Log:
  update msgs
  
  Revision  Changes    Path
  1.3       +2 -2      moniwiki/local/js/locale/Makefile.in
  
  Index: Makefile.in
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/locale/Makefile.in,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Makefile.in	18 Dec 2008 12:46:17 -0000	1.2
  +++ Makefile.in	19 Dec 2008 13:32:28 -0000	1.3
  @@ -1,4 +1,4 @@
  -# $Id: Makefile.in,v 1.2 2008/12/18 12:46:17 wkpark Exp $
  +# $Id: Makefile.in,v 1.3 2008/12/19 13:32:28 wkpark Exp $
   #
   # local/js/locale/Makefile
   #
  @@ -17,7 +17,7 @@
   ${POT_FILE} : # dependencies are auto-generated by 'make dep' , see below
   	test -f $@ || touch $@
   	cp -f $@ $@~
  -	xgettext -L C++ -k_ -kt_ -k_t -kN_ -k__printf -k__sprintf -k__vsprintf -kfmt -o $@.extracted $^
  +	xgettext -L Perl -kt_ -k_t -kN_ -o $@.extracted $^
   	msgmerge -o $@ $@~ $@.extracted && rm -f $@.extracted
   
   po/%.po : ${POT_FILE}
  
  
  
  1.3       +3 -3      moniwiki/local/js/locale/dummy.js
  
  Index: dummy.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/locale/dummy.js,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- dummy.js	18 Dec 2008 12:46:17 -0000	1.2
  +++ dummy.js	19 Dec 2008 13:32:28 -0000	1.3
  @@ -1,3 +1,3 @@
  -_("Continue to edit current text ?");
  -_("Canceled!");
  -_("Please select the text you would like to turn into a link.");
  +N_("Continue to edit current text ?");
  +N_("Canceled!");
  +N_("Please select the text you would like to turn into a link.");
  
  
  
  1.3       +2 -1      moniwiki/local/js/locale/update-makefile.sh
  
  Index: update-makefile.sh
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/locale/update-makefile.sh,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- update-makefile.sh	18 Dec 2008 12:46:17 -0000	1.2
  +++ update-makefile.sh	19 Dec 2008 13:32:28 -0000	1.3
  @@ -1,6 +1,6 @@
   #!/bin/sh
   #
  -# $Id: update-makefile.sh,v 1.2 2008/12/18 12:46:17 wkpark Exp $
  +# $Id: update-makefile.sh,v 1.3 2008/12/19 13:32:28 wkpark Exp $
   #
   # This shell script is used to update the list of .po files and the
   # dependencies for moniwiki.pot in the Makefile.
  @@ -61,6 +61,7 @@
   fi
   
   ls ../../*.js | sed 's|^|${POT_FILE}: |;' >> Makefile.new
  +ls ../../../plugin/*.php | sed 's|^|${POT_FILE}: |;' >> Makefile.new
   cat >> Makefile.new <<'MAIN'
   ${POT_FILE}: dummy.js
   MAIN
  
  
  


wkpark      2008/12/19 22:32:28

  Modified:    local/js/locale/po ko.po
  Log:
  update msgs
  
  Revision  Changes    Path
  1.3       +107 -32   moniwiki/local/js/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/locale/po/ko.po,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ko.po	18 Dec 2008 12:46:17 -0000	1.2
  +++ ko.po	19 Dec 2008 13:32:28 -0000	1.3
  @@ -5,137 +5,211 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1.3\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2008-12-18 21:45+0900\n"
  +"POT-Creation-Date: 2008-12-19 22:24+0900\n"
   "PO-Revision-Date: 2008-12-18 17:00+0900\n"
   "Last-Translator: Won-Kyu Park <wkpark@kldp.org>\n"
   "MIME-Version: 1.0\n"
   "Content-Type: text/plain; charset=UTF-8\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  -#: ../../moniwyg.js:1978
  +#: ../../moniwyg.js:9
  +msgid "undefined"
  +msgstr ""
  +
  +#: ../../moniwyg.js:1977
   msgid "Save"
   msgstr "저장"
   
  -#: ../../moniwyg.js:1979
  +#: ../../moniwyg.js:1978
   msgid "Preview"
   msgstr "미리보기"
   
  -#: ../../moniwyg.js:1980
  +#: ../../moniwyg.js:1979
   msgid "Cancel"
   msgstr "취소"
   
  -#: ../../moniwyg.js:1981
  +#: ../../moniwyg.js:1980
   msgid "Bold (Ctrl+b)"
   msgstr "굵게 (Ctrl-b)"
   
  -#: ../../moniwyg.js:1982
  +#: ../../moniwyg.js:1981
   msgid "Italic (Ctrl+i)"
   msgstr "기울임 (Ctrl+i)"
   
  -#: ../../moniwyg.js:1983
  +#: ../../moniwyg.js:1982
   msgid "Underline (Ctrl+u)"
   msgstr "밑줄 (Ctrl+u)"
   
  -#: ../../moniwyg.js:1984
  +#: ../../moniwyg.js:1983
   msgid "Strike Through (Ctrl+d)"
   msgstr "삭제선 (Ctrl+d)"
   
  -#: ../../moniwyg.js:1985
  +#: ../../moniwyg.js:1984
   msgid "Horizontal Rule"
   msgstr "수평줄"
   
  -#: ../../moniwyg.js:1986
  +#: ../../moniwyg.js:1985
   msgid "Numbered List"
   msgstr "숫자 리스트"
   
  -#: ../../moniwyg.js:1987
  +#: ../../moniwyg.js:1986
   msgid "Bulleted List"
   msgstr "총알 리스트"
   
  -#: ../../moniwyg.js:1988
  +#: ../../moniwyg.js:1987
   msgid "More Indented"
   msgstr "들여쓰기"
   
  -#: ../../moniwyg.js:1989
  +#: ../../moniwyg.js:1988
   msgid "Less Indented"
   msgstr "내어쓰기"
   
  -#: ../../moniwyg.js:1990
  +#: ../../moniwyg.js:1989
   msgid "About Wikiwyg"
   msgstr "Wikiwyg는"
   
  -#: ../../moniwyg.js:1991
  +#: ../../moniwyg.js:1990
   msgid "[Style]"
   msgstr ""
   
  -#: ../../moniwyg.js:1992
  +#: ../../moniwyg.js:1991
   msgid "Normal Text"
   msgstr "일반 글씨"
   
  -#: ../../moniwyg.js:1993
  +#: ../../moniwyg.js:1992
   msgid "Preformatted"
   msgstr ""
   
  -#: ../../moniwyg.js:1994
  +#: ../../moniwyg.js:1993
   msgid "Heading 1"
   msgstr "제목 1"
   
  -#: ../../moniwyg.js:1995
  +#: ../../moniwyg.js:1994
   msgid "Heading 2"
   msgstr "제목 2"
   
  -#: ../../moniwyg.js:1996
  +#: ../../moniwyg.js:1995
   msgid "Heading 3"
   msgstr "제목 3"
   
  -#: ../../moniwyg.js:1997
  +#: ../../moniwyg.js:1996
   msgid "Heading 4"
   msgstr "제목 4"
   
  -#: ../../moniwyg.js:1998
  +#: ../../moniwyg.js:1997
   msgid "Heading 5"
   msgstr "제목 5"
   
  -#: ../../moniwyg.js:1999
  +#: ../../moniwyg.js:1998
   msgid "Heading 6"
   msgstr "제목 6"
   
  -#: ../../moniwyg.js:2000
  +#: ../../moniwyg.js:1999
   msgid "Create Link"
   msgstr "링크 생성"
   
  -#: ../../moniwyg.js:2001
  +#: ../../moniwyg.js:2000 ../../../plugin/EditToolbar.php:40
   msgid "Smiley"
   msgstr "스마일리"
   
  -#: ../../moniwyg.js:2002
  +#: ../../moniwyg.js:2001
   msgid "Remove Linkedness"
   msgstr "링크 제거"
   
  -#: ../../moniwyg.js:2003
  +#: ../../moniwyg.js:2002
   msgid "Create Table"
   msgstr "테이블"
   
  -#: ../../moniwyg.js:2004
  +#: ../../moniwyg.js:2003
   msgid "Math"
   msgstr "수식"
   
  -#: ../../moniwyg.js:2005
  +#: ../../moniwyg.js:2004
   msgid "As Is"
   msgstr "그대로"
   
  -#: ../../moniwyg.js:2006
  +#: ../../moniwyg.js:2005
   msgid "Image"
   msgstr "이미지"
   
  -#: ../../moniwyg.js:2007
  +#: ../../moniwyg.js:2006
   msgid "Media"
   msgstr "미디어"
   
  -#: ../../moniwyg.js:2008
  +#: ../../moniwyg.js:2007
   msgid "Quote"
   msgstr "인용"
   
  +#: ../../../plugin/EditToolbar.php:30
  +msgid "Bold text"
  +msgstr "굵게"
  +
  +#: ../../../plugin/EditToolbar.php:31
  +msgid "Italic text"
  +msgstr "기울임"
  +
  +#: ../../../plugin/EditToolbar.php:32
  +msgid "Internal link"
  +msgstr "내부링크"
  +
  +#: ../../../plugin/EditToolbar.php:32
  +msgid "Link title"
  +msgstr "링크 제목"
  +
  +#: ../../../plugin/EditToolbar.php:33
  +msgid "External link (remember http:// prefix)"
  +msgstr "외부 링크 (http://로 가리키는)"
  +
  +#: ../../../plugin/EditToolbar.php:33
  +msgid "http://www.example.com link title"
  +msgstr "http://www.example.com 링크 제목"
  +
  +#: ../../../plugin/EditToolbar.php:34
  +msgid "Level 2 headline"
  +msgstr "제목 2"
  +
  +#: ../../../plugin/EditToolbar.php:34
  +msgid "Headline text"
  +msgstr "제목"
  +
  +#: ../../../plugin/EditToolbar.php:35
  +msgid "Mathematical formula (LaTeX)"
  +msgstr "수식 넣기 (LaTeX)"
  +
  +#: ../../../plugin/EditToolbar.php:36
  +msgid "Ignore wiki formatting"
  +msgstr "위키 포맷 무시"
  +
  +#: ../../../plugin/EditToolbar.php:36
  +msgid "Insert non-formatted text here"
  +msgstr "포맷없는 글씨 넣기"
  +
  +#: ../../../plugin/EditToolbar.php:37
  +msgid "Horizontal line (use sparingly)"
  +msgstr "수평줄 (조금만 쓰세요)"
  +
  +#: ../../../plugin/EditToolbar.php:38
  +msgid "Embedded image"
  +msgstr "이미지 넣기"
  +
  +#: ../../../plugin/EditToolbar.php:39
  +msgid "Media file link"
  +msgstr "미디어 파일 링크"
  +
  +#: ../../../plugin/EditToolbar.php:41
  +msgid "Your signature with timestamp"
  +msgstr "서명 넣기 (시간과 함께)"
  +
  +#: ../../../plugin/EditToolbar.php:42
  +msgid "Click a button to get an example text"
  +msgstr "버튼을 누르면 예제 텍스트가 들어갑니다"
  +
  +#: ../../../plugin/EditToolbar.php:42
  +msgid ""
  +"Please enter the text you want to be formatted.\\\\n It will be shown in the "
  +"infobox for copy and pasting.\\\\nExample:\\\\n\\$1\\\\nwill become:\\\\n\\$2"
  +msgstr ""
  +
   #: dummy.js:1
   msgid "Continue to edit current text ?"
   msgstr "현재의 텍스트를 계속 편집하시겠습니까 ?"
  @@ -147,3 +221,4 @@
   #: dummy.js:3
   msgid "Please select the text you would like to turn into a link."
   msgstr "링크로 바꾸고 싶은 텍스트를 선택해주시기 바랍니다."
  +
  
  
  


wkpark      2008/12/19 22:34:37

  Modified:    local/js controls.js effects.js
  Log:
  update scripaculous modules
  
  Revision  Changes    Path
  1.2       +550 -419  moniwiki/local/js/controls.js
  
  Index: controls.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/controls.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- controls.js	19 Dec 2006 02:09:32 -0000	1.1
  +++ controls.js	19 Dec 2008 13:34:36 -0000	1.2
  @@ -1,24 +1,24 @@
  -// script.aculo.us controls.js v1.6.5, Wed Nov 08 14:17:49 CET 2006
  +// script.aculo.us controls.js v1.8.2, Tue Nov 18 18:30:58 +0100 2008
   
  -// Copyright (c) 2005, 2006 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
  -//           (c) 2005, 2006 Ivan Krstic (http://blogs.law.harvard.edu/ivan)
  -//           (c) 2005, 2006 Jon Tirsen (http://www.tirsen.com)
  +// Copyright (c) 2005-2008 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
  +//           (c) 2005-2008 Ivan Krstic (http://blogs.law.harvard.edu/ivan)
  +//           (c) 2005-2008 Jon Tirsen (http://www.tirsen.com)
   // Contributors:
   //  Richard Livsey
   //  Rahul Bhargava
   //  Rob Wills
  -// 
  +//
   // script.aculo.us is freely distributable under the terms of an MIT-style license.
   // For details, see the script.aculo.us web site: http://script.aculo.us/
   
  -// Autocompleter.Base handles all the autocompletion functionality 
  +// Autocompleter.Base handles all the autocompletion functionality
   // that's independent of the data source for autocompletion. This
   // includes drawing the autocompletion menu, observing keyboard
   // and mouse events, and similar.
   //
  -// Specific autocompleters need to provide, at the very least, 
  +// Specific autocompleters need to provide, at the very least,
   // a getUpdatedChoices function that will be invoked every time
  -// the text inside the monitored textbox changes. This method 
  +// the text inside the monitored textbox changes. This method
   // should get the text for which to provide autocompletion by
   // invoking this.getToken(), NOT by directly accessing
   // this.element.value. This is to allow incremental tokenized
  @@ -32,68 +32,71 @@
   // will incrementally autocomplete with a comma as the token.
   // Additionally, ',' in the above example can be replaced with
   // a token array, e.g. { tokens: [',', '\n'] } which
  -// enables autocompletion on multiple tokens. This is most 
  -// useful when one of the tokens is \n (a newline), as it 
  +// enables autocompletion on multiple tokens. This is most
  +// useful when one of the tokens is \n (a newline), as it
   // allows smart autocompletion after linebreaks.
   
   if(typeof Effect == 'undefined')
     throw("controls.js requires including script.aculo.us' effects.js library");
   
  -var Autocompleter = {}
  -Autocompleter.Base = function() {};
  -Autocompleter.Base.prototype = {
  +var Autocompleter = { };
  +Autocompleter.Base = Class.create({
     baseInitialize: function(element, update, options) {
  -    this.element     = $(element); 
  -    this.update      = $(update);  
  -    this.hasFocus    = false; 
  -    this.changed     = false; 
  -    this.active      = false; 
  -    this.index       = 0;     
  +    element          = $(element);
  +    this.element     = element;
  +    this.update      = $(update);
  +    this.hasFocus    = false;
  +    this.changed     = false;
  +    this.active      = false;
  +    this.index       = 0;
       this.entryCount  = 0;
  +    this.oldElementValue = this.element.value;
   
       if(this.setOptions)
         this.setOptions(options);
       else
  -      this.options = options || {};
  +      this.options = options || { };
   
       this.options.paramName    = this.options.paramName || this.element.name;
       this.options.tokens       = this.options.tokens || [];
       this.options.frequency    = this.options.frequency || 0.4;
       this.options.minChars     = this.options.minChars || 1;
  -    this.options.onShow       = this.options.onShow || 
  -      function(element, update){ 
  +    this.options.onShow       = this.options.onShow ||
  +      function(element, update){
           if(!update.style.position || update.style.position=='absolute') {
             update.style.position = 'absolute';
             Position.clone(element, update, {
  -            setHeight: false, 
  +            setHeight: false,
               offsetTop: element.offsetHeight
             });
           }
           Effect.Appear(update,{duration:0.15});
         };
  -    this.options.onHide = this.options.onHide || 
  +    this.options.onHide = this.options.onHide ||
         function(element, update){ new Effect.Fade(update,{duration:0.15}) };
   
  -    if(typeof(this.options.tokens) == 'string') 
  +    if(typeof(this.options.tokens) == 'string')
         this.options.tokens = new Array(this.options.tokens);
  +    // Force carriage returns as token delimiters anyway
  +    if (!this.options.tokens.include('\n'))
  +      this.options.tokens.push('\n');
   
       this.observer = null;
  -    
  +
       this.element.setAttribute('autocomplete','off');
   
       Element.hide(this.update);
   
  -    Event.observe(this.element, "blur", this.onBlur.bindAsEventListener(this));
  -    Event.observe(this.element, "keypress", this.onKeyPress.bindAsEventListener(this));
  +    Event.observe(this.element, 'blur', this.onBlur.bindAsEventListener(this));
  +    Event.observe(this.element, 'keydown', this.onKeyPress.bindAsEventListener(this));
     },
   
     show: function() {
       if(Element.getStyle(this.update, 'display')=='none') this.options.onShow(this.element, this.update);
  -    if(!this.iefix && 
  -      (navigator.appVersion.indexOf('MSIE')>0) &&
  -      (navigator.userAgent.indexOf('Opera')<0) &&
  +    if(!this.iefix &&
  +      (Prototype.Browser.IE) &&
         (Element.getStyle(this.update, 'position')=='absolute')) {
  -      new Insertion.After(this.update, 
  +      new Insertion.After(this.update,
          '<iframe id="' + this.update.id + '_iefix" '+
          'style="display:none;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);" ' +
          'src="javascript:false;" frameborder="0" scrolling="no"></iframe>');
  @@ -101,7 +104,7 @@
       }
       if(this.iefix) setTimeout(this.fixIEOverlapping.bind(this), 50);
     },
  -  
  +
     fixIEOverlapping: function() {
       Position.clone(this.update, this.iefix, {setTop:(!this.update.style.height)});
       this.iefix.style.zIndex = 1;
  @@ -141,23 +144,23 @@
          case Event.KEY_UP:
            this.markPrevious();
            this.render();
  -         if(navigator.appVersion.indexOf('AppleWebKit')>0) Event.stop(event);
  +         Event.stop(event);
            return;
          case Event.KEY_DOWN:
            this.markNext();
            this.render();
  -         if(navigator.appVersion.indexOf('AppleWebKit')>0) Event.stop(event);
  +         Event.stop(event);
            return;
         }
  -     else 
  -       if(event.keyCode==Event.KEY_TAB || event.keyCode==Event.KEY_RETURN || 
  -         (navigator.appVersion.indexOf('AppleWebKit') > 0 && event.keyCode == 0)) return;
  +     else
  +       if(event.keyCode==Event.KEY_TAB || event.keyCode==Event.KEY_RETURN ||
  +         (Prototype.Browser.WebKit > 0 && event.keyCode == 0)) return;
   
       this.changed = true;
       this.hasFocus = true;
   
       if(this.observer) clearTimeout(this.observer);
  -      this.observer = 
  +      this.observer =
           setTimeout(this.onObserverEvent.bind(this), this.options.frequency*1000);
     },
   
  @@ -169,36 +172,35 @@
   
     onHover: function(event) {
       var element = Event.findElement(event, 'LI');
  -    if(this.index != element.autocompleteIndex) 
  +    if(this.index != element.autocompleteIndex)
       {
           this.index = element.autocompleteIndex;
           this.render();
       }
       Event.stop(event);
     },
  -  
  +
     onClick: function(event) {
       var element = Event.findElement(event, 'LI');
       this.index = element.autocompleteIndex;
       this.selectEntry();
       this.hide();
     },
  -  
  +
     onBlur: function(event) {
       // needed to make click events working
       setTimeout(this.hide.bind(this), 250);
       this.hasFocus = false;
  -    this.active = false;     
  -  }, 
  -  
  +    this.active = false;
  +  },
  +
     render: function() {
       if(this.entryCount > 0) {
         for (var i = 0; i < this.entryCount; i++)
  -        this.index==i ? 
  -          Element.addClassName(this.getEntry(i),"selected") : 
  +        this.index==i ?
  +          Element.addClassName(this.getEntry(i),"selected") :
             Element.removeClassName(this.getEntry(i),"selected");
  -        
  -      if(this.hasFocus) { 
  +      if(this.hasFocus) {
           this.show();
           this.active = true;
         }
  @@ -207,27 +209,27 @@
         this.hide();
       }
     },
  -  
  +
     markPrevious: function() {
  -    if(this.index > 0) this.index--
  +    if(this.index > 0) this.index--;
         else this.index = this.entryCount-1;
       this.getEntry(this.index).scrollIntoView(true);
     },
  -  
  +
     markNext: function() {
  -    if(this.index < this.entryCount-1) this.index++
  +    if(this.index < this.entryCount-1) this.index++;
         else this.index = 0;
       this.getEntry(this.index).scrollIntoView(false);
     },
  -  
  +
     getEntry: function(index) {
       return this.update.firstChild.childNodes[index];
     },
  -  
  +
     getCurrentEntry: function() {
       return this.getEntry(this.index);
     },
  -  
  +
     selectEntry: function() {
       this.active = false;
       this.updateElement(this.getCurrentEntry());
  @@ -240,23 +242,24 @@
       }
       var value = '';
       if (this.options.select) {
  -      var nodes = document.getElementsByClassName(this.options.select, selectedElement) || [];
  +      var nodes = $(selectedElement).select('.' + this.options.select) || [];
         if(nodes.length>0) value = Element.collectTextNodes(nodes[0], this.options.select);
       } else
         value = Element.collectTextNodesIgnoreClass(selectedElement, 'informal');
  -    
  -    var lastTokenPos = this.findLastToken();
  -    if (lastTokenPos != -1) {
  -      var newValue = this.element.value.substr(0, lastTokenPos + 1);
  -      var whitespace = this.element.value.substr(lastTokenPos + 1).match(/^\s+/);
  +
  +    var bounds = this.getTokenBounds();
  +    if (bounds[0] != -1) {
  +      var newValue = this.element.value.substr(0, bounds[0]);
  +      var whitespace = this.element.value.substr(bounds[0]).match(/^\s+/);
         if (whitespace)
           newValue += whitespace[0];
  -      this.element.value = newValue + value;
  +      this.element.value = newValue + value + this.element.value.substr(bounds[1]);
       } else {
         this.element.value = value;
       }
  +    this.oldElementValue = this.element.value;
       this.element.focus();
  -    
  +
       if (this.options.afterUpdateElement)
         this.options.afterUpdateElement(this.element, selectedElement);
     },
  @@ -268,20 +271,20 @@
         Element.cleanWhitespace(this.update.down());
   
         if(this.update.firstChild && this.update.down().childNodes) {
  -        this.entryCount = 
  +        this.entryCount =
             this.update.down().childNodes.length;
           for (var i = 0; i < this.entryCount; i++) {
             var entry = this.getEntry(i);
             entry.autocompleteIndex = i;
             this.addObservers(entry);
           }
  -      } else { 
  +      } else {
           this.entryCount = 0;
         }
   
         this.stopIndicator();
         this.index = 0;
  -      
  +
         if(this.entryCount==1 && this.options.autoSelect) {
           this.selectEntry();
           this.hide();
  @@ -297,40 +300,49 @@
     },
   
     onObserverEvent: function() {
  -    this.changed = false;   
  +    this.changed = false;
  +    this.tokenBounds = null;
       if(this.getToken().length>=this.options.minChars) {
  -      this.startIndicator();
         this.getUpdatedChoices();
       } else {
         this.active = false;
         this.hide();
       }
  +    this.oldElementValue = this.element.value;
     },
   
     getToken: function() {
  -    var tokenPos = this.findLastToken();
  -    if (tokenPos != -1)
  -      var ret = this.element.value.substr(tokenPos + 1).replace(/^\s+/,'').replace(/\s+$/,'');
  -    else
  -      var ret = this.element.value;
  -
  -    return /\n/.test(ret) ? '' : ret;
  +    var bounds = this.getTokenBounds();
  +    return this.element.value.substring(bounds[0], bounds[1]).strip();
     },
   
  -  findLastToken: function() {
  -    var lastTokenPos = -1;
  -
  -    for (var i=0; i<this.options.tokens.length; i++) {
  -      var thisTokenPos = this.element.value.lastIndexOf(this.options.tokens[i]);
  -      if (thisTokenPos > lastTokenPos)
  -        lastTokenPos = thisTokenPos;
  +  getTokenBounds: function() {
  +    if (null != this.tokenBounds) return this.tokenBounds;
  +    var value = this.element.value;
  +    if (value.strip().empty()) return [-1, 0];
  +    var diff = arguments.callee.getFirstDifferencePos(value, this.oldElementValue);
  +    var offset = (diff == this.oldElementValue.length ? 1 : 0);
  +    var prevTokenPos = -1, nextTokenPos = value.length;
  +    var tp;
  +    for (var index = 0, l = this.options.tokens.length; index < l; ++index) {
  +      tp = value.lastIndexOf(this.options.tokens[index], diff + offset - 1);
  +      if (tp > prevTokenPos) prevTokenPos = tp;
  +      tp = value.indexOf(this.options.tokens[index], diff + offset);
  +      if (-1 != tp && tp < nextTokenPos) nextTokenPos = tp;
       }
  -    return lastTokenPos;
  +    return (this.tokenBounds = [prevTokenPos + 1, nextTokenPos]);
     }
  -}
  +});
   
  -Ajax.Autocompleter = Class.create();
  -Object.extend(Object.extend(Ajax.Autocompleter.prototype, Autocompleter.Base.prototype), {
  +Autocompleter.Base.prototype.getTokenBounds.getFirstDifferencePos = function(newS, oldS) {
  +  var boundary = Math.min(newS.length, oldS.length);
  +  for (var index = 0; index < boundary; ++index)
  +    if (newS[index] != oldS[index])
  +      return index;
  +  return boundary;
  +};
  +
  +Ajax.Autocompleter = Class.create(Autocompleter.Base, {
     initialize: function(element, update, url, options) {
       this.baseInitialize(element, update, options);
       this.options.asynchronous  = true;
  @@ -340,13 +352,15 @@
     },
   
     getUpdatedChoices: function() {
  -    entry = encodeURIComponent(this.options.paramName) + '=' + 
  +    this.startIndicator();
  +
  +    var entry = encodeURIComponent(this.options.paramName) + '=' +
         encodeURIComponent(this.getToken());
   
       this.options.parameters = this.options.callback ?
         this.options.callback(this.element, entry) : entry;
   
  -    if(this.options.defaultParams) 
  +    if(this.options.defaultParams)
         this.options.parameters += '&' + this.options.defaultParams;
   
       new Ajax.Request(this.url, this.options);
  @@ -355,7 +369,6 @@
     onComplete: function(request) {
       this.updateChoices(request.responseText);
     }
  -
   });
   
   // The local array autocompleter. Used when you'd prefer to
  @@ -371,7 +384,7 @@
   // - choices - How many autocompletion choices to offer
   //
   // - partialSearch - If false, the autocompleter will match entered
  -//                    text only at the beginning of strings in the 
  +//                    text only at the beginning of strings in the
   //                    autocomplete array. Defaults to true, which will
   //                    match text at the beginning of any *word* in the
   //                    strings in the autocomplete array. If you want to
  @@ -388,13 +401,12 @@
   // - ignoreCase - Whether to ignore case when autocompleting.
   //                 Defaults to true.
   //
  -// It's possible to pass in a custom function as the 'selector' 
  +// It's possible to pass in a custom function as the 'selector'
   // option, if you prefer to write your own autocompletion logic.
   // In that case, the other options above will not apply unless
   // you support them.
   
  -Autocompleter.Local = Class.create();
  -Autocompleter.Local.prototype = Object.extend(new Autocompleter.Base(), {
  +Autocompleter.Local = Class.create(Autocompleter.Base, {
     initialize: function(element, update, array, options) {
       this.baseInitialize(element, update, options);
       this.options.array = array;
  @@ -417,20 +429,20 @@
           var entry     = instance.getToken();
           var count     = 0;
   
  -        for (var i = 0; i < instance.options.array.length &&  
  -          ret.length < instance.options.choices ; i++) { 
  +        for (var i = 0; i < instance.options.array.length &&
  +          ret.length < instance.options.choices ; i++) {
   
             var elem = instance.options.array[i];
  -          var foundPos = instance.options.ignoreCase ? 
  -            elem.toLowerCase().indexOf(entry.toLowerCase()) : 
  +          var foundPos = instance.options.ignoreCase ?
  +            elem.toLowerCase().indexOf(entry.toLowerCase()) :
               elem.indexOf(entry);
   
             while (foundPos != -1) {
  -            if (foundPos == 0 && elem.length != entry.length) { 
  -              ret.push("<li><strong>" + elem.substr(0, entry.length) + "</strong>" + 
  +            if (foundPos == 0 && elem.length != entry.length) {
  +              ret.push("<li><strong>" + elem.substr(0, entry.length) + "</strong>" +
                   elem.substr(entry.length) + "</li>");
                 break;
  -            } else if (entry.length >= instance.options.partialChars && 
  +            } else if (entry.length >= instance.options.partialChars &&
                 instance.options.partialSearch && foundPos != -1) {
                 if (instance.options.fullSearch || /\s/.test(elem.substr(foundPos-1,1))) {
                   partial.push("<li>" + elem.substr(0, foundPos) + "<strong>" +
  @@ -440,23 +452,22 @@
                 }
               }
   
  -            foundPos = instance.options.ignoreCase ? 
  -              elem.toLowerCase().indexOf(entry.toLowerCase(), foundPos + 1) : 
  +            foundPos = instance.options.ignoreCase ?
  +              elem.toLowerCase().indexOf(entry.toLowerCase(), foundPos + 1) :
                 elem.indexOf(entry, foundPos + 1);
   
             }
           }
           if (partial.length)
  -          ret = ret.concat(partial.slice(0, instance.options.choices - ret.length))
  +          ret = ret.concat(partial.slice(0, instance.options.choices - ret.length));
           return "<ul>" + ret.join('') + "</ul>";
         }
  -    }, options || {});
  +    }, options || { });
     }
   });
   
  -// AJAX in-place editor
  -//
  -// see documentation on http://wiki.script.aculo.us/scriptaculous/show/Ajax.InPlaceEditor
  +// AJAX in-place editor and collection editor
  +// Full rewrite by Christophe Porteneuve <tdd@tddsworld.com> (April 2007).
   
   // Use this if you notice weird scrolling problems on some browsers,
   // the DOM might be a bit confused when this gets called so do this
  @@ -465,360 +476,480 @@
     setTimeout(function() {
       Field.activate(field);
     }, 1);
  -}
  +};
   
  -Ajax.InPlaceEditor = Class.create();
  -Ajax.InPlaceEditor.defaultHighlightColor = "#FFFF99";
  -Ajax.InPlaceEditor.prototype = {
  +Ajax.InPlaceEditor = Class.create({
     initialize: function(element, url, options) {
       this.url = url;
  -    this.element = $(element);
  -
  -    this.options = Object.extend({
  -      okButton: true,
  -      okText: "ok",
  -      cancelLink: true,
  -      cancelText: "cancel",
  -      savingText: "Saving...",
  -      clickToEditText: "Click to edit",
  -      okText: "ok",
  -      rows: 1,
  -      onComplete: function(transport, element) {
  -        new Effect.Highlight(element, {startcolor: this.options.highlightcolor});
  -      },
  -      onFailure: function(transport) {
  -        alert("Error communicating with the server: " + transport.responseText.stripTags());
  -      },
  -      callback: function(form) {
  -        return Form.serialize(form);
  -      },
  -      handleLineBreaks: true,
  -      loadingText: 'Loading...',
  -      savingClassName: 'inplaceeditor-saving',
  -      loadingClassName: 'inplaceeditor-loading',
  -      formClassName: 'inplaceeditor-form',
  -      highlightcolor: Ajax.InPlaceEditor.defaultHighlightColor,
  -      highlightendcolor: "#FFFFFF",
  -      externalControl: null,
  -      submitOnBlur: false,
  -      ajaxOptions: {},
  -      evalScripts: false
  -    }, options || {});
  -
  -    if(!this.options.formId && this.element.id) {
  -      this.options.formId = this.element.id + "-inplaceeditor";
  -      if ($(this.options.formId)) {
  -        // there's already a form with that name, don't specify an id
  -        this.options.formId = null;
  -      }
  +    this.element = element = $(element);
  +    this.prepareOptions();
  +    this._controls = { };
  +    arguments.callee.dealWithDeprecatedOptions(options); // DEPRECATION LAYER!!!
  +    Object.extend(this.options, options || { });
  +    if (!this.options.formId && this.element.id) {
  +      this.options.formId = this.element.id + '-inplaceeditor';
  +      if ($(this.options.formId))
  +        this.options.formId = '';
       }
  -    
  -    if (this.options.externalControl) {
  +    if (this.options.externalControl)
         this.options.externalControl = $(this.options.externalControl);
  -    }
  -    
  -    this.originalBackground = Element.getStyle(this.element, 'background-color');
  -    if (!this.originalBackground) {
  -      this.originalBackground = "transparent";
  -    }
  -    
  +    if (!this.options.externalControl)
  +      this.options.externalControlOnly = false;
  +    this._originalBackground = this.element.getStyle('background-color') || 'transparent';
       this.element.title = this.options.clickToEditText;
  -    
  -    this.onclickListener = this.enterEditMode.bindAsEventListener(this);
  -    this.mouseoverListener = this.enterHover.bindAsEventListener(this);
  -    this.mouseoutListener = this.leaveHover.bindAsEventListener(this);
  -    Event.observe(this.element, 'click', this.onclickListener);
  -    Event.observe(this.element, 'mouseover', this.mouseoverListener);
  -    Event.observe(this.element, 'mouseout', this.mouseoutListener);
  -    if (this.options.externalControl) {
  -      Event.observe(this.options.externalControl, 'click', this.onclickListener);
  -      Event.observe(this.options.externalControl, 'mouseover', this.mouseoverListener);
  -      Event.observe(this.options.externalControl, 'mouseout', this.mouseoutListener);
  -    }
  -  },
  -  enterEditMode: function(evt) {
  -    if (this.saving) return;
  -    if (this.editing) return;
  -    this.editing = true;
  -    this.onEnterEditMode();
  -    if (this.options.externalControl) {
  -      Element.hide(this.options.externalControl);
  -    }
  -    Element.hide(this.element);
  -    this.createForm();
  -    this.element.parentNode.insertBefore(this.form, this.element);
  -    if (!this.options.loadTextURL) Field.scrollFreeActivate(this.editField);
  -    // stop the event to avoid a page refresh in Safari
  -    if (evt) {
  -      Event.stop(evt);
  +    this._boundCancelHandler = this.handleFormCancellation.bind(this);
  +    this._boundComplete = (this.options.onComplete || Prototype.emptyFunction).bind(this);
  +    this._boundFailureHandler = this.handleAJAXFailure.bind(this);
  +    this._boundSubmitHandler = this.handleFormSubmission.bind(this);
  +    this._boundWrapperHandler = this.wrapUp.bind(this);
  +    this.registerListeners();
  +  },
  +  checkForEscapeOrReturn: function(e) {
  +    if (!this._editing || e.ctrlKey || e.altKey || e.shiftKey) return;
  +    if (Event.KEY_ESC == e.keyCode)
  +      this.handleFormCancellation(e);
  +    else if (Event.KEY_RETURN == e.keyCode)
  +      this.handleFormSubmission(e);
  +  },
  +  createControl: function(mode, handler, extraClasses) {
  +    var control = this.options[mode + 'Control'];
  +    var text = this.options[mode + 'Text'];
  +    if ('button' == control) {
  +      var btn = document.createElement('input');
  +      btn.type = 'submit';
  +      btn.value = text;
  +      btn.className = 'editor_' + mode + '_button';
  +      if ('cancel' == mode)
  +        btn.onclick = this._boundCancelHandler;
  +      this._form.appendChild(btn);
  +      this._controls[mode] = btn;
  +    } else if ('link' == control) {
  +      var link = document.createElement('a');
  +      link.href = '#';
  +      link.appendChild(document.createTextNode(text));
  +      link.onclick = 'cancel' == mode ? this._boundCancelHandler : this._boundSubmitHandler;
  +      link.className = 'editor_' + mode + '_link';
  +      if (extraClasses)
  +        link.className += ' ' + extraClasses;
  +      this._form.appendChild(link);
  +      this._controls[mode] = link;
       }
  -    return false;
  +  },
  +  createEditField: function() {
  +    var text = (this.options.loadTextURL ? this.options.loadingText : this.getText());
  +    var fld;
  +    if (1 >= this.options.rows && !/\r|\n/.test(this.getText())) {
  +      fld = document.createElement('input');
  +      fld.type = 'text';
  +      var size = this.options.size || this.options.cols || 0;
  +      if (0 < size) fld.size = size;
  +    } else {
  +      fld = document.createElement('textarea');
  +      fld.rows = (1 >= this.options.rows ? this.options.autoRows : this.options.rows);
  +      fld.cols = this.options.cols || 40;
  +    }
  +    fld.name = this.options.paramName;
  +    fld.value = text; // No HTML breaks conversion anymore
  +    fld.className = 'editor_field';
  +    if (this.options.submitOnBlur)
  +      fld.onblur = this._boundSubmitHandler;
  +    this._controls.editor = fld;
  +    if (this.options.loadTextURL)
  +      this.loadExternalText();
  +    this._form.appendChild(this._controls.editor);
     },
     createForm: function() {
  -    this.form = document.createElement("form");
  -    this.form.id = this.options.formId;
  -    Element.addClassName(this.form, this.options.formClassName)
  -    this.form.onsubmit = this.onSubmit.bind(this);
  -
  +    var ipe = this;
  +    function addText(mode, condition) {
  +      var text = ipe.options['text' + mode + 'Controls'];
  +      if (!text || condition === false) return;
  +      ipe._form.appendChild(document.createTextNode(text));
  +    };
  +    this._form = $(document.createElement('form'));
  +    this._form.id = this.options.formId;
  +    this._form.addClassName(this.options.formClassName);
  +    this._form.onsubmit = this._boundSubmitHandler;
       this.createEditField();
  -
  -    if (this.options.textarea) {
  -      var br = document.createElement("br");
  -      this.form.appendChild(br);
  -    }
  -
  -    if (this.options.okButton) {
  -      okButton = document.createElement("input");
  -      okButton.type = "submit";
  -      okButton.value = this.options.okText;
  -      okButton.className = 'editor_ok_button';
  -      this.form.appendChild(okButton);
  -    }
  -
  -    if (this.options.cancelLink) {
  -      cancelLink = document.createElement("a");
  -      cancelLink.href = "#";
  -      cancelLink.appendChild(document.createTextNode(this.options.cancelText));
  -      cancelLink.onclick = this.onclickCancel.bind(this);
  -      cancelLink.className = 'editor_cancel';      
  -      this.form.appendChild(cancelLink);
  -    }
  -  },
  -  hasHTMLLineBreaks: function(string) {
  -    if (!this.options.handleLineBreaks) return false;
  -    return string.match(/<br/i) || string.match(/<p>/i);
  +    if ('textarea' == this._controls.editor.tagName.toLowerCase())
  +      this._form.appendChild(document.createElement('br'));
  +    if (this.options.onFormCustomization)
  +      this.options.onFormCustomization(this, this._form);
  +    addText('Before', this.options.okControl || this.options.cancelControl);
  +    this.createControl('ok', this._boundSubmitHandler);
  +    addText('Between', this.options.okControl && this.options.cancelControl);
  +    this.createControl('cancel', this._boundCancelHandler, 'editor_cancel');
  +    addText('After', this.options.okControl || this.options.cancelControl);
  +  },
  +  destroy: function() {
  +    if (this._oldInnerHTML)
  +      this.element.innerHTML = this._oldInnerHTML;
  +    this.leaveEditMode();
  +    this.unregisterListeners();
     },
  -  convertHTMLLineBreaks: function(string) {
  -    return string.replace(/<br>/gi, "\n").replace(/<br\/>/gi, "\n").replace(/<\/p>/gi, "\n").replace(/<p>/gi, "");
  +  enterEditMode: function(e) {
  +    if (this._saving || this._editing) return;
  +    this._editing = true;
  +    this.triggerCallback('onEnterEditMode');
  +    if (this.options.externalControl)
  +      this.options.externalControl.hide();
  +    this.element.hide();
  +    this.createForm();
  +    this.element.parentNode.insertBefore(this._form, this.element);
  +    if (!this.options.loadTextURL)
  +      this.postProcessEditField();
  +    if (e) Event.stop(e);
  +  },
  +  enterHover: function(e) {
  +    if (this.options.hoverClassName)
  +      this.element.addClassName(this.options.hoverClassName);
  +    if (this._saving) return;
  +    this.triggerCallback('onEnterHover');
     },
  -  createEditField: function() {
  -    var text;
  -    if(this.options.loadTextURL) {
  -      text = this.options.loadingText;
  -    } else {
  -      text = this.getText();
  -    }
  -
  -    var obj = this;
  -    
  -    if (this.options.rows == 1 && !this.hasHTMLLineBreaks(text)) {
  -      this.options.textarea = false;
  -      var textField = document.createElement("input");
  -      textField.obj = this;
  -      textField.type = "text";
  -      textField.name = "value";
  -      textField.value = text;
  -      textField.style.backgroundColor = this.options.highlightcolor;
  -      textField.className = 'editor_field';
  -      var size = this.options.size || this.options.cols || 0;
  -      if (size != 0) textField.size = size;
  -      if (this.options.submitOnBlur)
  -        textField.onblur = this.onSubmit.bind(this);
  -      this.editField = textField;
  +  getText: function() {
  +    return this.element.innerHTML.unescapeHTML();
  +  },
  +  handleAJAXFailure: function(transport) {
  +    this.triggerCallback('onFailure', transport);
  +    if (this._oldInnerHTML) {
  +      this.element.innerHTML = this._oldInnerHTML;
  +      this._oldInnerHTML = null;
  +    }
  +  },
  +  handleFormCancellation: function(e) {
  +    this.wrapUp();
  +    if (e) Event.stop(e);
  +  },
  +  handleFormSubmission: function(e) {
  +    var form = this._form;
  +    var value = $F(this._controls.editor);
  +    this.prepareSubmission();
  +    var params = this.options.callback(form, value) || '';
  +    if (Object.isString(params))
  +      params = params.toQueryParams();
  +    params.editorId = this.element.id;
  +    if (this.options.htmlResponse) {
  +      var options = Object.extend({ evalScripts: true }, this.options.ajaxOptions);
  +      Object.extend(options, {
  +        parameters: params,
  +        onComplete: this._boundWrapperHandler,
  +        onFailure: this._boundFailureHandler
  +      });
  +      new Ajax.Updater({ success: this.element }, this.url, options);
       } else {
  -      this.options.textarea = true;
  -      var textArea = document.createElement("textarea");
  -      textArea.obj = this;
  -      textArea.name = "value";
  -      textArea.value = this.convertHTMLLineBreaks(text);
  -      textArea.rows = this.options.rows;
  -      textArea.cols = this.options.cols || 40;
  -      textArea.className = 'editor_field';      
  -      if (this.options.submitOnBlur)
  -        textArea.onblur = this.onSubmit.bind(this);
  -      this.editField = textArea;
  +      var options = Object.extend({ method: 'get' }, this.options.ajaxOptions);
  +      Object.extend(options, {
  +        parameters: params,
  +        onComplete: this._boundWrapperHandler,
  +        onFailure: this._boundFailureHandler
  +      });
  +      new Ajax.Request(this.url, options);
       }
  -    
  -    if(this.options.loadTextURL) {
  -      this.loadExternalText();
  -    }
  -    this.form.appendChild(this.editField);
  +    if (e) Event.stop(e);
     },
  -  getText: function() {
  -    return this.element.innerHTML;
  +  leaveEditMode: function() {
  +    this.element.removeClassName(this.options.savingClassName);
  +    this.removeForm();
  +    this.leaveHover();
  +    this.element.style.backgroundColor = this._originalBackground;
  +    this.element.show();
  +    if (this.options.externalControl)
  +      this.options.externalControl.show();
  +    this._saving = false;
  +    this._editing = false;
  +    this._oldInnerHTML = null;
  +    this.triggerCallback('onLeaveEditMode');
  +  },
  +  leaveHover: function(e) {
  +    if (this.options.hoverClassName)
  +      this.element.removeClassName(this.options.hoverClassName);
  +    if (this._saving) return;
  +    this.triggerCallback('onLeaveHover');
     },
     loadExternalText: function() {
  -    Element.addClassName(this.form, this.options.loadingClassName);
  -    this.editField.disabled = true;
  -    new Ajax.Request(
  -      this.options.loadTextURL,
  -      Object.extend({
  -        asynchronous: true,
  -        onComplete: this.onLoadedExternalText.bind(this)
  -      }, this.options.ajaxOptions)
  -    );
  -  },
  -  onLoadedExternalText: function(transport) {
  -    Element.removeClassName(this.form, this.options.loadingClassName);
  -    this.editField.disabled = false;
  -    this.editField.value = transport.responseText.stripTags();
  -    Field.scrollFreeActivate(this.editField);
  -  },
  -  onclickCancel: function() {
  -    this.onComplete();
  -    this.leaveEditMode();
  -    return false;
  +    this._form.addClassName(this.options.loadingClassName);
  +    this._controls.editor.disabled = true;
  +    var options = Object.extend({ method: 'get' }, this.options.ajaxOptions);
  +    Object.extend(options, {
  +      parameters: 'editorId=' + encodeURIComponent(this.element.id),
  +      onComplete: Prototype.emptyFunction,
  +      onSuccess: function(transport) {
  +        this._form.removeClassName(this.options.loadingClassName);
  +        var text = transport.responseText;
  +        if (this.options.stripLoadedTextTags)
  +          text = text.stripTags();
  +        this._controls.editor.value = text;
  +        this._controls.editor.disabled = false;
  +        this.postProcessEditField();
  +      }.bind(this),
  +      onFailure: this._boundFailureHandler
  +    });
  +    new Ajax.Request(this.options.loadTextURL, options);
     },
  -  onFailure: function(transport) {
  -    this.options.onFailure(transport);
  -    if (this.oldInnerHTML) {
  -      this.element.innerHTML = this.oldInnerHTML;
  -      this.oldInnerHTML = null;
  -    }
  -    return false;
  -  },
  -  onSubmit: function() {
  -    // onLoading resets these so we need to save them away for the Ajax call
  -    var form = this.form;
  -    var value = this.editField.value;
  -    
  -    // do this first, sometimes the ajax call returns before we get a chance to switch on Saving...
  -    // which means this will actually switch on Saving... *after* we've left edit mode causing Saving...
  -    // to be displayed indefinitely
  -    this.onLoading();
  -    
  -    if (this.options.evalScripts) {
  -      new Ajax.Request(
  -        this.url, Object.extend({
  -          parameters: this.options.callback(form, value),
  -          onComplete: this.onComplete.bind(this),
  -          onFailure: this.onFailure.bind(this),
  -          asynchronous:true, 
  -          evalScripts:true
  -        }, this.options.ajaxOptions));
  -    } else  {
  -      new Ajax.Updater(
  -        { success: this.element,
  -          // don't update on failure (this could be an option)
  -          failure: null }, 
  -        this.url, Object.extend({
  -          parameters: this.options.callback(form, value),
  -          onComplete: this.onComplete.bind(this),
  -          onFailure: this.onFailure.bind(this)
  -        }, this.options.ajaxOptions));
  -    }
  -    // stop the event to avoid a page refresh in Safari
  -    if (arguments.length > 1) {
  -      Event.stop(arguments[0]);
  -    }
  -    return false;
  +  postProcessEditField: function() {
  +    var fpc = this.options.fieldPostCreation;
  +    if (fpc)
  +      $(this._controls.editor)['focus' == fpc ? 'focus' : 'activate']();
  +  },
  +  prepareOptions: function() {
  +    this.options = Object.clone(Ajax.InPlaceEditor.DefaultOptions);
  +    Object.extend(this.options, Ajax.InPlaceEditor.DefaultCallbacks);
  +    [this._extraDefaultOptions].flatten().compact().each(function(defs) {
  +      Object.extend(this.options, defs);
  +    }.bind(this));
     },
  -  onLoading: function() {
  -    this.saving = true;
  +  prepareSubmission: function() {
  +    this._saving = true;
       this.removeForm();
       this.leaveHover();
       this.showSaving();
     },
  -  showSaving: function() {
  -    this.oldInnerHTML = this.element.innerHTML;
  -    this.element.innerHTML = this.options.savingText;
  -    Element.addClassName(this.element, this.options.savingClassName);
  -    this.element.style.backgroundColor = this.originalBackground;
  -    Element.show(this.element);
  +  registerListeners: function() {
  +    this._listeners = { };
  +    var listener;
  +    $H(Ajax.InPlaceEditor.Listeners).each(function(pair) {
  +      listener = this[pair.value].bind(this);
  +      this._listeners[pair.key] = listener;
  +      if (!this.options.externalControlOnly)
  +        this.element.observe(pair.key, listener);
  +      if (this.options.externalControl)
  +        this.options.externalControl.observe(pair.key, listener);
  +    }.bind(this));
     },
     removeForm: function() {
  -    if(this.form) {
  -      if (this.form.parentNode) Element.remove(this.form);
  -      this.form = null;
  -    }
  -  },
  -  enterHover: function() {
  -    if (this.saving) return;
  -    this.element.style.backgroundColor = this.options.highlightcolor;
  -    if (this.effect) {
  -      this.effect.cancel();
  -    }
  -    Element.addClassName(this.element, this.options.hoverClassName)
  -  },
  -  leaveHover: function() {
  -    if (this.options.backgroundColor) {
  -      this.element.style.backgroundColor = this.oldBackground;
  -    }
  -    Element.removeClassName(this.element, this.options.hoverClassName)
  -    if (this.saving) return;
  -    this.effect = new Effect.Highlight(this.element, {
  -      startcolor: this.options.highlightcolor,
  -      endcolor: this.options.highlightendcolor,
  -      restorecolor: this.originalBackground
  -    });
  +    if (!this._form) return;
  +    this._form.remove();
  +    this._form = null;
  +    this._controls = { };
     },
  -  leaveEditMode: function() {
  -    Element.removeClassName(this.element, this.options.savingClassName);
  -    this.removeForm();
  -    this.leaveHover();
  -    this.element.style.backgroundColor = this.originalBackground;
  -    Element.show(this.element);
  -    if (this.options.externalControl) {
  -      Element.show(this.options.externalControl);
  -    }
  -    this.editing = false;
  -    this.saving = false;
  -    this.oldInnerHTML = null;
  -    this.onLeaveEditMode();
  +  showSaving: function() {
  +    this._oldInnerHTML = this.element.innerHTML;
  +    this.element.innerHTML = this.options.savingText;
  +    this.element.addClassName(this.options.savingClassName);
  +    this.element.style.backgroundColor = this._originalBackground;
  +    this.element.show();
  +  },
  +  triggerCallback: function(cbName, arg) {
  +    if ('function' == typeof this.options[cbName]) {
  +      this.options[cbName](this, arg);
  +    }
  +  },
  +  unregisterListeners: function() {
  +    $H(this._listeners).each(function(pair) {
  +      if (!this.options.externalControlOnly)
  +        this.element.stopObserving(pair.key, pair.value);
  +      if (this.options.externalControl)
  +        this.options.externalControl.stopObserving(pair.key, pair.value);
  +    }.bind(this));
     },
  -  onComplete: function(transport) {
  +  wrapUp: function(transport) {
       this.leaveEditMode();
  -    this.options.onComplete.bind(this)(transport, this.element);
  +    // Can't use triggerCallback due to backward compatibility: requires
  +    // binding + direct element
  +    this._boundComplete(transport, this.element);
  +  }
  +});
  +
  +Object.extend(Ajax.InPlaceEditor.prototype, {
  +  dispose: Ajax.InPlaceEditor.prototype.destroy
  +});
  +
  +Ajax.InPlaceCollectionEditor = Class.create(Ajax.InPlaceEditor, {
  +  initialize: function($super, element, url, options) {
  +    this._extraDefaultOptions = Ajax.InPlaceCollectionEditor.DefaultOptions;
  +    $super(element, url, options);
     },
  -  onEnterEditMode: function() {},
  -  onLeaveEditMode: function() {},
  -  dispose: function() {
  -    if (this.oldInnerHTML) {
  -      this.element.innerHTML = this.oldInnerHTML;
  -    }
  -    this.leaveEditMode();
  -    Event.stopObserving(this.element, 'click', this.onclickListener);
  -    Event.stopObserving(this.element, 'mouseover', this.mouseoverListener);
  -    Event.stopObserving(this.element, 'mouseout', this.mouseoutListener);
  -    if (this.options.externalControl) {
  -      Event.stopObserving(this.options.externalControl, 'click', this.onclickListener);
  -      Event.stopObserving(this.options.externalControl, 'mouseover', this.mouseoverListener);
  -      Event.stopObserving(this.options.externalControl, 'mouseout', this.mouseoutListener);
  +
  +  createEditField: function() {
  +    var list = document.createElement('select');
  +    list.name = this.options.paramName;
  +    list.size = 1;
  +    this._controls.editor = list;
  +    this._collection = this.options.collection || [];
  +    if (this.options.loadCollectionURL)
  +      this.loadCollection();
  +    else
  +      this.checkForExternalText();
  +    this._form.appendChild(this._controls.editor);
  +  },
  +
  +  loadCollection: function() {
  +    this._form.addClassName(this.options.loadingClassName);
  +    this.showLoadingText(this.options.loadingCollectionText);
  +    var options = Object.extend({ method: 'get' }, this.options.ajaxOptions);
  +    Object.extend(options, {
  +      parameters: 'editorId=' + encodeURIComponent(this.element.id),
  +      onComplete: Prototype.emptyFunction,
  +      onSuccess: function(transport) {
  +        var js = transport.responseText.strip();
  +        if (!/^\[.*\]$/.test(js)) // TODO: improve sanity check
  +          throw('Server returned an invalid collection representation.');
  +        this._collection = eval(js);
  +        this.checkForExternalText();
  +      }.bind(this),
  +      onFailure: this.onFailure
  +    });
  +    new Ajax.Request(this.options.loadCollectionURL, options);
  +  },
  +
  +  showLoadingText: function(text) {
  +    this._controls.editor.disabled = true;
  +    var tempOption = this._controls.editor.firstChild;
  +    if (!tempOption) {
  +      tempOption = document.createElement('option');
  +      tempOption.value = '';
  +      this._controls.editor.appendChild(tempOption);
  +      tempOption.selected = true;
       }
  +    tempOption.update((text || '').stripScripts().stripTags());
  +  },
  +
  +  checkForExternalText: function() {
  +    this._text = this.getText();
  +    if (this.options.loadTextURL)
  +      this.loadExternalText();
  +    else
  +      this.buildOptionList();
  +  },
  +
  +  loadExternalText: function() {
  +    this.showLoadingText(this.options.loadingText);
  +    var options = Object.extend({ method: 'get' }, this.options.ajaxOptions);
  +    Object.extend(options, {
  +      parameters: 'editorId=' + encodeURIComponent(this.element.id),
  +      onComplete: Prototype.emptyFunction,
  +      onSuccess: function(transport) {
  +        this._text = transport.responseText.strip();
  +        this.buildOptionList();
  +      }.bind(this),
  +      onFailure: this.onFailure
  +    });
  +    new Ajax.Request(this.options.loadTextURL, options);
  +  },
  +
  +  buildOptionList: function() {
  +    this._form.removeClassName(this.options.loadingClassName);
  +    this._collection = this._collection.map(function(entry) {
  +      return 2 === entry.length ? entry : [entry, entry].flatten();
  +    });
  +    var marker = ('value' in this.options) ? this.options.value : this._text;
  +    var textFound = this._collection.any(function(entry) {
  +      return entry[0] == marker;
  +    }.bind(this));
  +    this._controls.editor.update('');
  +    var option;
  +    this._collection.each(function(entry, index) {
  +      option = document.createElement('option');
  +      option.value = entry[0];
  +      option.selected = textFound ? entry[0] == marker : 0 == index;
  +      option.appendChild(document.createTextNode(entry[1]));
  +      this._controls.editor.appendChild(option);
  +    }.bind(this));
  +    this._controls.editor.disabled = false;
  +    Field.scrollFreeActivate(this._controls.editor);
     }
  +});
  +
  +//**** DEPRECATION LAYER FOR InPlace[Collection]Editor! ****
  +//**** This only  exists for a while,  in order to  let ****
  +//**** users adapt to  the new API.  Read up on the new ****
  +//**** API and convert your code to it ASAP!            ****
  +
  +Ajax.InPlaceEditor.prototype.initialize.dealWithDeprecatedOptions = function(options) {
  +  if (!options) return;
  +  function fallback(name, expr) {
  +    if (name in options || expr === undefined) return;
  +    options[name] = expr;
  +  };
  +  fallback('cancelControl', (options.cancelLink ? 'link' : (options.cancelButton ? 'button' :
  +    options.cancelLink == options.cancelButton == false ? false : undefined)));
  +  fallback('okControl', (options.okLink ? 'link' : (options.okButton ? 'button' :
  +    options.okLink == options.okButton == false ? false : undefined)));
  +  fallback('highlightColor', options.highlightcolor);
  +  fallback('highlightEndColor', options.highlightendcolor);
   };
   
  -Ajax.InPlaceCollectionEditor = Class.create();
  -Object.extend(Ajax.InPlaceCollectionEditor.prototype, Ajax.InPlaceEditor.prototype);
  -Object.extend(Ajax.InPlaceCollectionEditor.prototype, {
  -  createEditField: function() {
  -    if (!this.cached_selectTag) {
  -      var selectTag = document.createElement("select");
  -      var collection = this.options.collection || [];
  -      var optionTag;
  -      collection.each(function(e,i) {
  -        optionTag = document.createElement("option");
  -        optionTag.value = (e instanceof Array) ? e[0] : e;
  -        if((typeof this.options.value == 'undefined') && 
  -          ((e instanceof Array) ? this.element.innerHTML == e[1] : e == optionTag.value)) optionTag.selected = true;
  -        if(this.options.value==optionTag.value) optionTag.selected = true;
  -        optionTag.appendChild(document.createTextNode((e instanceof Array) ? e[1] : e));
  -        selectTag.appendChild(optionTag);
  -      }.bind(this));
  -      this.cached_selectTag = selectTag;
  -    }
  -
  -    this.editField = this.cached_selectTag;
  -    if(this.options.loadTextURL) this.loadExternalText();
  -    this.form.appendChild(this.editField);
  -    this.options.callback = function(form, value) {
  -      return "value=" + encodeURIComponent(value);
  -    }
  +Object.extend(Ajax.InPlaceEditor, {
  +  DefaultOptions: {
  +    ajaxOptions: { },
  +    autoRows: 3,                                // Use when multi-line w/ rows == 1
  +    cancelControl: 'link',                      // 'link'|'button'|false
  +    cancelText: 'cancel',
  +    clickToEditText: 'Click to edit',
  +    externalControl: null,                      // id|elt
  +    externalControlOnly: false,
  +    fieldPostCreation: 'activate',              // 'activate'|'focus'|false
  +    formClassName: 'inplaceeditor-form',
  +    formId: null,                               // id|elt
  +    highlightColor: '#ffff99',
  +    highlightEndColor: '#ffffff',
  +    hoverClassName: '',
  +    htmlResponse: true,
  +    loadingClassName: 'inplaceeditor-loading',
  +    loadingText: 'Loading...',
  +    okControl: 'button',                        // 'link'|'button'|false
  +    okText: 'ok',
  +    paramName: 'value',
  +    rows: 1,                                    // If 1 and multi-line, uses autoRows
  +    savingClassName: 'inplaceeditor-saving',
  +    savingText: 'Saving...',
  +    size: 0,
  +    stripLoadedTextTags: false,
  +    submitOnBlur: false,
  +    textAfterControls: '',
  +    textBeforeControls: '',
  +    textBetweenControls: ''
  +  },
  +  DefaultCallbacks: {
  +    callback: function(form) {
  +      return Form.serialize(form);
  +    },
  +    onComplete: function(transport, element) {
  +      // For backward compatibility, this one is bound to the IPE, and passes
  +      // the element directly.  It was too often customized, so we don't break it.
  +      new Effect.Highlight(element, {
  +        startcolor: this.options.highlightColor, keepBackgroundImage: true });
  +    },
  +    onEnterEditMode: null,
  +    onEnterHover: function(ipe) {
  +      ipe.element.style.backgroundColor = ipe.options.highlightColor;
  +      if (ipe._effect)
  +        ipe._effect.cancel();
  +    },
  +    onFailure: function(transport, ipe) {
  +      alert('Error communication with the server: ' + transport.responseText.stripTags());
  +    },
  +    onFormCustomization: null, // Takes the IPE and its generated form, after editor, before controls.
  +    onLeaveEditMode: null,
  +    onLeaveHover: function(ipe) {
  +      ipe._effect = new Effect.Highlight(ipe.element, {
  +        startcolor: ipe.options.highlightColor, endcolor: ipe.options.highlightEndColor,
  +        restorecolor: ipe._originalBackground, keepBackgroundImage: true
  +      });
  +    }
  +  },
  +  Listeners: {
  +    click: 'enterEditMode',
  +    keydown: 'checkForEscapeOrReturn',
  +    mouseover: 'enterHover',
  +    mouseout: 'leaveHover'
     }
   });
   
  -// Delayed observer, like Form.Element.Observer, 
  +Ajax.InPlaceCollectionEditor.DefaultOptions = {
  +  loadingCollectionText: 'Loading options...'
  +};
  +
  +// Delayed observer, like Form.Element.Observer,
   // but waits for delay after last key input
   // Ideal for live-search fields
   
  -Form.Element.DelayedObserver = Class.create();
  -Form.Element.DelayedObserver.prototype = {
  +Form.Element.DelayedObserver = Class.create({
     initialize: function(element, delay, callback) {
       this.delay     = delay || 0.5;
       this.element   = $(element);
       this.callback  = callback;
       this.timer     = null;
  -    this.lastValue = $F(this.element); 
  +    this.lastValue = $F(this.element);
       Event.observe(this.element,'keyup',this.delayedListener.bindAsEventListener(this));
     },
     delayedListener: function(event) {
  @@ -831,4 +962,4 @@
       this.timer = null;
       this.callback(this.element, $F(this.element));
     }
  -};
  +});
  \ No newline at end of file
  
  
  
  1.2       +556 -382  moniwiki/local/js/effects.js
  
  Index: effects.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/effects.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- effects.js	19 Dec 2006 02:09:32 -0000	1.1
  +++ effects.js	19 Dec 2008 13:34:36 -0000	1.2
  @@ -1,86 +1,57 @@
  -// script.aculo.us effects.js v1.6.5, Wed Nov 08 14:17:49 CET 2006
  +// script.aculo.us effects.js v1.8.2, Tue Nov 18 18:30:58 +0100 2008
   
  -// Copyright (c) 2005, 2006 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
  +// Copyright (c) 2005-2008 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
   // Contributors:
   //  Justin Palmer (http://encytemedia.com/)
   //  Mark Pilgrim (http://diveintomark.org/)
   //  Martin Bialasinki
  -// 
  +//
   // script.aculo.us is freely distributable under the terms of an MIT-style license.
  -// For details, see the script.aculo.us web site: http://script.aculo.us/ 
  +// For details, see the script.aculo.us web site: http://script.aculo.us/
   
  -// converts rgb() and #xxx to #xxxxxx format,  
  -// returns self (or first argument) if not convertable  
  -String.prototype.parseColor = function() {  
  -  var color = '#';  
  -  if(this.slice(0,4) == 'rgb(') {  
  -    var cols = this.slice(4,this.length-1).split(',');  
  -    var i=0; do { color += parseInt(cols[i]).toColorPart() } while (++i<3);  
  -  } else {  
  -    if(this.slice(0,1) == '#') {  
  -      if(this.length==4) for(var i=1;i<4;i++) color += (this.charAt(i) + this.charAt(i)).toLowerCase();  
  -      if(this.length==7) color = this.toLowerCase();  
  -    }  
  -  }  
  -  return(color.length==7 ? color : (arguments[0] || this));  
  -}
  +// converts rgb() and #xxx to #xxxxxx format,
  +// returns self (or first argument) if not convertable
  +String.prototype.parseColor = function() {
  +  var color = '#';
  +  if (this.slice(0,4) == 'rgb(') {
  +    var cols = this.slice(4,this.length-1).split(',');
  +    var i=0; do { color += parseInt(cols[i]).toColorPart() } while (++i<3);
  +  } else {
  +    if (this.slice(0,1) == '#') {
  +      if (this.length==4) for(var i=1;i<4;i++) color += (this.charAt(i) + this.charAt(i)).toLowerCase();
  +      if (this.length==7) color = this.toLowerCase();
  +    }
  +  }
  +  return (color.length==7 ? color : (arguments[0] || this));
  +};
   
   /*--------------------------------------------------------------------------*/
   
  -Element.collectTextNodes = function(element) {  
  +Element.collectTextNodes = function(element) {
     return $A($(element).childNodes).collect( function(node) {
  -    return (node.nodeType==3 ? node.nodeValue : 
  +    return (node.nodeType==3 ? node.nodeValue :
         (node.hasChildNodes() ? Element.collectTextNodes(node) : ''));
     }).flatten().join('');
  -}
  +};
   
  -Element.collectTextNodesIgnoreClass = function(element, className) {  
  +Element.collectTextNodesIgnoreClass = function(element, className) {
     return $A($(element).childNodes).collect( function(node) {
  -    return (node.nodeType==3 ? node.nodeValue : 
  -      ((node.hasChildNodes() && !Element.hasClassName(node,className)) ? 
  +    return (node.nodeType==3 ? node.nodeValue :
  +      ((node.hasChildNodes() && !Element.hasClassName(node,className)) ?
           Element.collectTextNodesIgnoreClass(node, className) : ''));
     }).flatten().join('');
  -}
  +};
   
   Element.setContentZoom = function(element, percent) {
  -  element = $(element);  
  -  element.setStyle({fontSize: (percent/100) + 'em'});   
  -  if(navigator.appVersion.indexOf('AppleWebKit')>0) window.scrollBy(0,0);
  -  return element;
  -}
  -
  -Element.getOpacity = function(element){
     element = $(element);
  -  var opacity;
  -  if (opacity = element.getStyle('opacity'))  
  -    return parseFloat(opacity);  
  -  if (opacity = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/))  
  -    if(opacity[1]) return parseFloat(opacity[1]) / 100;  
  -  return 1.0;  
  -}
  -
  -Element.setOpacity = function(element, value){  
  -  element= $(element);  
  -  if (value == 1){
  -    element.setStyle({ opacity: 
  -      (/Gecko/.test(navigator.userAgent) && !/Konqueror|Safari|KHTML/.test(navigator.userAgent)) ? 
  -      0.999999 : 1.0 });
  -    if(/MSIE/.test(navigator.userAgent) && !window.opera)  
  -      element.setStyle({filter: Element.getStyle(element,'filter').replace(/alpha\([^\)]*\)/gi,'')});  
  -  } else {  
  -    if(value < 0.00001) value = 0;  
  -    element.setStyle({opacity: value});
  -    if(/MSIE/.test(navigator.userAgent) && !window.opera)  
  -      element.setStyle(
  -        { filter: element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'') +
  -            'alpha(opacity='+value*100+')' });  
  -  }
  +  element.setStyle({fontSize: (percent/100) + 'em'});
  +  if (Prototype.Browser.WebKit) window.scrollBy(0,0);
     return element;
  -}  
  - 
  -Element.getInlineOpacity = function(element){  
  +};
  +
  +Element.getInlineOpacity = function(element){
     return $(element).style.opacity || '';
  -}  
  +};
   
   Element.forceRerendering = function(element) {
     try {
  @@ -93,32 +64,59 @@
   
   /*--------------------------------------------------------------------------*/
   
  -Array.prototype.call = function() {
  -  var args = arguments;
  -  this.each(function(f){ f.apply(this, args) });
  -}
  -
  -/*--------------------------------------------------------------------------*/
  -
   var Effect = {
     _elementDoesNotExistError: {
       name: 'ElementDoesNotExistError',
       message: 'The specified DOM element does not exist, but is required for this effect to operate'
     },
  +  Transitions: {
  +    linear: Prototype.K,
  +    sinoidal: function(pos) {
  +      return (-Math.cos(pos*Math.PI)/2) + .5;
  +    },
  +    reverse: function(pos) {
  +      return 1-pos;
  +    },
  +    flicker: function(pos) {
  +      var pos = ((-Math.cos(pos*Math.PI)/4) + .75) + Math.random()/4;
  +      return pos > 1 ? 1 : pos;
  +    },
  +    wobble: function(pos) {
  +      return (-Math.cos(pos*Math.PI*(9*pos))/2) + .5;
  +    },
  +    pulse: function(pos, pulses) {
  +      return (-Math.cos((pos*((pulses||5)-.5)*2)*Math.PI)/2) + .5;
  +    },
  +    spring: function(pos) {
  +      return 1 - (Math.cos(pos * 4.5 * Math.PI) * Math.exp(-pos * 6));
  +    },
  +    none: function(pos) {
  +      return 0;
  +    },
  +    full: function(pos) {
  +      return 1;
  +    }
  +  },
  +  DefaultOptions: {
  +    duration:   1.0,   // seconds
  +    fps:        100,   // 100= assume 66fps max.
  +    sync:       false, // true for combining
  +    from:       0.0,
  +    to:         1.0,
  +    delay:      0.0,
  +    queue:      'parallel'
  +  },
     tagifyText: function(element) {
  -    if(typeof Builder == 'undefined')
  -      throw("Effect.tagifyText requires including script.aculo.us' builder.js library");
  -      
       var tagifyStyle = 'position:relative';
  -    if(/MSIE/.test(navigator.userAgent) && !window.opera) tagifyStyle += ';zoom:1';
  -    
  +    if (Prototype.Browser.IE) tagifyStyle += ';zoom:1';
  +
       element = $(element);
       $A(element.childNodes).each( function(child) {
  -      if(child.nodeType==3) {
  +      if (child.nodeType==3) {
           child.nodeValue.toArray().each( function(character) {
             element.insertBefore(
  -            Builder.node('span',{style: tagifyStyle},
  -              character == ' ' ? String.fromCharCode(160) : character), 
  +            new Element('span', {style: tagifyStyle}).update(
  +              character == ' ' ? String.fromCharCode(160) : character),
                 child);
           });
           Element.remove(child);
  @@ -127,17 +125,17 @@
     },
     multiple: function(element, effect) {
       var elements;
  -    if(((typeof element == 'object') || 
  -        (typeof element == 'function')) && 
  +    if (((typeof element == 'object') ||
  +        Object.isFunction(element)) &&
          (element.length))
         elements = element;
       else
         elements = $(element).childNodes;
  -      
  +
       var options = Object.extend({
         speed: 0.1,
         delay: 0.0
  -    }, arguments[2] || {});
  +    }, arguments[2] || { });
       var masterDelay = options.delay;
   
       $A(elements).each( function(element, index) {
  @@ -154,50 +152,17 @@
       effect = (effect || 'appear').toLowerCase();
       var options = Object.extend({
         queue: { position:'end', scope:(element.id || 'global'), limit: 1 }
  -    }, arguments[2] || {});
  -    Effect[element.visible() ? 
  +    }, arguments[2] || { });
  +    Effect[element.visible() ?
         Effect.PAIRS[effect][1] : Effect.PAIRS[effect][0]](element, options);
     }
   };
   
  -var Effect2 = Effect; // deprecated
  -
  -/* ------------- transitions ------------- */
  -
  -Effect.Transitions = {
  -  linear: Prototype.K,
  -  sinoidal: function(pos) {
  -    return (-Math.cos(pos*Math.PI)/2) + 0.5;
  -  },
  -  reverse: function(pos) {
  -    return 1-pos;
  -  },
  -  flicker: function(pos) {
  -    return ((-Math.cos(pos*Math.PI)/4) + 0.75) + Math.random()/4;
  -  },
  -  wobble: function(pos) {
  -    return (-Math.cos(pos*Math.PI*(9*pos))/2) + 0.5;
  -  },
  -  pulse: function(pos, pulses) { 
  -    pulses = pulses || 5; 
  -    return (
  -      Math.round((pos % (1/pulses)) * pulses) == 0 ? 
  -            ((pos * pulses * 2) - Math.floor(pos * pulses * 2)) : 
  -        1 - ((pos * pulses * 2) - Math.floor(pos * pulses * 2))
  -      );
  -  },
  -  none: function(pos) {
  -    return 0;
  -  },
  -  full: function(pos) {
  -    return 1;
  -  }
  -};
  +Effect.DefaultOptions.transition = Effect.Transitions.sinoidal;
   
   /* ------------- core effects ------------- */
   
  -Effect.ScopedQueue = Class.create();
  -Object.extend(Object.extend(Effect.ScopedQueue.prototype, Enumerable), {
  +Effect.ScopedQueue = Class.create(Enumerable, {
     initialize: function() {
       this.effects  = [];
       this.interval = null;
  @@ -207,13 +172,13 @@
     },
     add: function(effect) {
       var timestamp = new Date().getTime();
  -    
  -    var position = (typeof effect.options.queue == 'string') ? 
  +
  +    var position = Object.isString(effect.options.queue) ?
         effect.options.queue : effect.options.queue.position;
  -    
  +
       switch(position) {
         case 'front':
  -        // move unstarted effects after this effect  
  +        // move unstarted effects after this effect
           this.effects.findAll(function(e){ return e.state=='idle' }).each( function(e) {
               e.startOn  += effect.finishOn;
               e.finishOn += effect.finishOn;
  @@ -227,119 +192,127 @@
           timestamp = this.effects.pluck('finishOn').max() || timestamp;
           break;
       }
  -    
  +
       effect.startOn  += timestamp;
       effect.finishOn += timestamp;
   
  -    if(!effect.options.queue.limit || (this.effects.length < effect.options.queue.limit))
  +    if (!effect.options.queue.limit || (this.effects.length < effect.options.queue.limit))
         this.effects.push(effect);
  -    
  -    if(!this.interval) 
  -      this.interval = setInterval(this.loop.bind(this), 40);
  +
  +    if (!this.interval)
  +      this.interval = setInterval(this.loop.bind(this), 15);
     },
     remove: function(effect) {
       this.effects = this.effects.reject(function(e) { return e==effect });
  -    if(this.effects.length == 0) {
  +    if (this.effects.length == 0) {
         clearInterval(this.interval);
         this.interval = null;
       }
     },
     loop: function() {
       var timePos = new Date().getTime();
  -    this.effects.invoke('loop', timePos);
  +    for(var i=0, len=this.effects.length;i<len;i++)
  +      this.effects[i] && this.effects[i].loop(timePos);
     }
   });
   
   Effect.Queues = {
     instances: $H(),
     get: function(queueName) {
  -    if(typeof queueName != 'string') return queueName;
  -    
  -    if(!this.instances[queueName])
  -      this.instances[queueName] = new Effect.ScopedQueue();
  -      
  -    return this.instances[queueName];
  +    if (!Object.isString(queueName)) return queueName;
  +
  +    return this.instances.get(queueName) ||
  +      this.instances.set(queueName, new Effect.ScopedQueue());
     }
  -}
  +};
   Effect.Queue = Effect.Queues.get('global');
   
  -Effect.DefaultOptions = {
  -  transition: Effect.Transitions.sinoidal,
  -  duration:   1.0,   // seconds
  -  fps:        25.0,  // max. 25fps due to Effect.Queue implementation
  -  sync:       false, // true for combining
  -  from:       0.0,
  -  to:         1.0,
  -  delay:      0.0,
  -  queue:      'parallel'
  -}
  -
  -Effect.Base = function() {};
  -Effect.Base.prototype = {
  +Effect.Base = Class.create({
     position: null,
     start: function(options) {
  -    this.options      = Object.extend(Object.extend({},Effect.DefaultOptions), options || {});
  +    function codeForEvent(options,eventName){
  +      return (
  +        (options[eventName+'Internal'] ? 'this.options.'+eventName+'Internal(this);' : '') +
  +        (options[eventName] ? 'this.options.'+eventName+'(this);' : '')
  +      );
  +    }
  +    if (options && options.transition === false) options.transition = Effect.Transitions.linear;
  +    this.options      = Object.extend(Object.extend({ },Effect.DefaultOptions), options || { });
       this.currentFrame = 0;
       this.state        = 'idle';
       this.startOn      = this.options.delay*1000;
  -    this.finishOn     = this.startOn + (this.options.duration*1000);
  +    this.finishOn     = this.startOn+(this.options.duration*1000);
  +    this.fromToDelta  = this.options.to-this.options.from;
  +    this.totalTime    = this.finishOn-this.startOn;
  +    this.totalFrames  = this.options.fps*this.options.duration;
  +
  +    this.render = (function() {
  +      function dispatch(effect, eventName) {
  +        if (effect.options[eventName + 'Internal'])
  +          effect.options[eventName + 'Internal'](effect);
  +        if (effect.options[eventName])
  +          effect.options[eventName](effect);
  +      }
  +
  +      return function(pos) {
  +        if (this.state === "idle") {
  +          this.state = "running";
  +          dispatch(this, 'beforeSetup');
  +          if (this.setup) this.setup();
  +          dispatch(this, 'afterSetup');
  +        }
  +        if (this.state === "running") {
  +          pos = (this.options.transition(pos) * this.fromToDelta) + this.options.from;
  +          this.position = pos;
  +          dispatch(this, 'beforeUpdate');
  +          if (this.update) this.update(pos);
  +          dispatch(this, 'afterUpdate');
  +        }
  +      };
  +    })();
  +
       this.event('beforeStart');
  -    if(!this.options.sync)
  -      Effect.Queues.get(typeof this.options.queue == 'string' ? 
  +    if (!this.options.sync)
  +      Effect.Queues.get(Object.isString(this.options.queue) ?
           'global' : this.options.queue.scope).add(this);
     },
     loop: function(timePos) {
  -    if(timePos >= this.startOn) {
  -      if(timePos >= this.finishOn) {
  +    if (timePos >= this.startOn) {
  +      if (timePos >= this.finishOn) {
           this.render(1.0);
           this.cancel();
           this.event('beforeFinish');
  -        if(this.finish) this.finish(); 
  +        if (this.finish) this.finish();
           this.event('afterFinish');
  -        return;  
  +        return;
         }
  -      var pos   = (timePos - this.startOn) / (this.finishOn - this.startOn);
  -      var frame = Math.round(pos * this.options.fps * this.options.duration);
  -      if(frame > this.currentFrame) {
  +      var pos   = (timePos - this.startOn) / this.totalTime,
  +          frame = (pos * this.totalFrames).round();
  +      if (frame > this.currentFrame) {
           this.render(pos);
           this.currentFrame = frame;
         }
       }
     },
  -  render: function(pos) {
  -    if(this.state == 'idle') {
  -      this.state = 'running';
  -      this.event('beforeSetup');
  -      if(this.setup) this.setup();
  -      this.event('afterSetup');
  -    }
  -    if(this.state == 'running') {
  -      if(this.options.transition) pos = this.options.transition(pos);
  -      pos *= (this.options.to-this.options.from);
  -      pos += this.options.from;
  -      this.position = pos;
  -      this.event('beforeUpdate');
  -      if(this.update) this.update(pos);
  -      this.event('afterUpdate');
  -    }
  -  },
     cancel: function() {
  -    if(!this.options.sync)
  -      Effect.Queues.get(typeof this.options.queue == 'string' ? 
  +    if (!this.options.sync)
  +      Effect.Queues.get(Object.isString(this.options.queue) ?
           'global' : this.options.queue.scope).remove(this);
       this.state = 'finished';
     },
     event: function(eventName) {
  -    if(this.options[eventName + 'Internal']) this.options[eventName + 'Internal'](this);
  -    if(this.options[eventName]) this.options[eventName](this);
  +    if (this.options[eventName + 'Internal']) this.options[eventName + 'Internal'](this);
  +    if (this.options[eventName]) this.options[eventName](this);
     },
     inspect: function() {
  -    return '#<Effect:' + $H(this).inspect() + ',options:' + $H(this.options).inspect() + '>';
  +    var data = $H();
  +    for(property in this)
  +      if (!Object.isFunction(this[property])) data.set(property, this[property]);
  +    return '#<Effect:' + data.inspect() + ',options:' + $H(this.options).inspect() + '>';
     }
  -}
  +});
   
  -Effect.Parallel = Class.create();
  -Object.extend(Object.extend(Effect.Parallel.prototype, Effect.Base.prototype), {
  +Effect.Parallel = Class.create(Effect.Base, {
     initialize: function(effects) {
       this.effects = effects || [];
       this.start(arguments[1]);
  @@ -352,35 +325,45 @@
         effect.render(1.0);
         effect.cancel();
         effect.event('beforeFinish');
  -      if(effect.finish) effect.finish(position);
  +      if (effect.finish) effect.finish(position);
         effect.event('afterFinish');
       });
     }
   });
   
  -Effect.Event = Class.create();
  -Object.extend(Object.extend(Effect.Event.prototype, Effect.Base.prototype), {
  +Effect.Tween = Class.create(Effect.Base, {
  +  initialize: function(object, from, to) {
  +    object = Object.isString(object) ? $(object) : object;
  +    var args = $A(arguments), method = args.last(),
  +      options = args.length == 5 ? args[3] : null;
  +    this.method = Object.isFunction(method) ? method.bind(object) :
  +      Object.isFunction(object[method]) ? object[method].bind(object) :
  +      function(value) { object[method] = value };
  +    this.start(Object.extend({ from: from, to: to }, options || { }));
  +  },
  +  update: function(position) {
  +    this.method(position);
  +  }
  +});
  +
  +Effect.Event = Class.create(Effect.Base, {
     initialize: function() {
  -    var options = Object.extend({
  -      duration: 0
  -    }, arguments[0] || {});
  -    this.start(options);
  +    this.start(Object.extend({ duration: 0 }, arguments[0] || { }));
     },
     update: Prototype.emptyFunction
   });
   
  -Effect.Opacity = Class.create();
  -Object.extend(Object.extend(Effect.Opacity.prototype, Effect.Base.prototype), {
  +Effect.Opacity = Class.create(Effect.Base, {
     initialize: function(element) {
       this.element = $(element);
  -    if(!this.element) throw(Effect._elementDoesNotExistError);
  +    if (!this.element) throw(Effect._elementDoesNotExistError);
       // make this work on IE on elements without 'layout'
  -    if(/MSIE/.test(navigator.userAgent) && !window.opera && (!this.element.currentStyle.hasLayout))
  +    if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout))
         this.element.setStyle({zoom: 1});
       var options = Object.extend({
         from: this.element.getOpacity() || 0.0,
         to:   1.0
  -    }, arguments[1] || {});
  +    }, arguments[1] || { });
       this.start(options);
     },
     update: function(position) {
  @@ -388,139 +371,133 @@
     }
   });
   
  -Effect.Move = Class.create();
  -Object.extend(Object.extend(Effect.Move.prototype, Effect.Base.prototype), {
  +Effect.Move = Class.create(Effect.Base, {
     initialize: function(element) {
       this.element = $(element);
  -    if(!this.element) throw(Effect._elementDoesNotExistError);
  +    if (!this.element) throw(Effect._elementDoesNotExistError);
       var options = Object.extend({
         x:    0,
         y:    0,
         mode: 'relative'
  -    }, arguments[1] || {});
  +    }, arguments[1] || { });
       this.start(options);
     },
     setup: function() {
  -    // Bug in Opera: Opera returns the "real" position of a static element or
  -    // relative element that does not have top/left explicitly set.
  -    // ==> Always set top and left for position relative elements in your stylesheets 
  -    // (to 0 if you do not need them) 
       this.element.makePositioned();
       this.originalLeft = parseFloat(this.element.getStyle('left') || '0');
       this.originalTop  = parseFloat(this.element.getStyle('top')  || '0');
  -    if(this.options.mode == 'absolute') {
  -      // absolute movement, so we need to calc deltaX and deltaY
  +    if (this.options.mode == 'absolute') {
         this.options.x = this.options.x - this.originalLeft;
         this.options.y = this.options.y - this.originalTop;
       }
     },
     update: function(position) {
       this.element.setStyle({
  -      left: Math.round(this.options.x  * position + this.originalLeft) + 'px',
  -      top:  Math.round(this.options.y  * position + this.originalTop)  + 'px'
  +      left: (this.options.x  * position + this.originalLeft).round() + 'px',
  +      top:  (this.options.y  * position + this.originalTop).round()  + 'px'
       });
     }
   });
   
   // for backwards compatibility
   Effect.MoveBy = function(element, toTop, toLeft) {
  -  return new Effect.Move(element, 
  -    Object.extend({ x: toLeft, y: toTop }, arguments[3] || {}));
  +  return new Effect.Move(element,
  +    Object.extend({ x: toLeft, y: toTop }, arguments[3] || { }));
   };
   
  -Effect.Scale = Class.create();
  -Object.extend(Object.extend(Effect.Scale.prototype, Effect.Base.prototype), {
  +Effect.Scale = Class.create(Effect.Base, {
     initialize: function(element, percent) {
       this.element = $(element);
  -    if(!this.element) throw(Effect._elementDoesNotExistError);
  +    if (!this.element) throw(Effect._elementDoesNotExistError);
       var options = Object.extend({
         scaleX: true,
         scaleY: true,
         scaleContent: true,
         scaleFromCenter: false,
  -      scaleMode: 'box',        // 'box' or 'contents' or {} with provided values
  +      scaleMode: 'box',        // 'box' or 'contents' or { } with provided values
         scaleFrom: 100.0,
         scaleTo:   percent
  -    }, arguments[2] || {});
  +    }, arguments[2] || { });
       this.start(options);
     },
     setup: function() {
       this.restoreAfterFinish = this.options.restoreAfterFinish || false;
       this.elementPositioning = this.element.getStyle('position');
  -    
  -    this.originalStyle = {};
  +
  +    this.originalStyle = { };
       ['top','left','width','height','fontSize'].each( function(k) {
         this.originalStyle[k] = this.element.style[k];
       }.bind(this));
  -      
  +
       this.originalTop  = this.element.offsetTop;
       this.originalLeft = this.element.offsetLeft;
  -    
  +
       var fontSize = this.element.getStyle('font-size') || '100%';
       ['em','px','%','pt'].each( function(fontSizeType) {
  -      if(fontSize.indexOf(fontSizeType)>0) {
  +      if (fontSize.indexOf(fontSizeType)>0) {
           this.fontSize     = parseFloat(fontSize);
           this.fontSizeType = fontSizeType;
         }
       }.bind(this));
  -    
  +
       this.factor = (this.options.scaleTo - this.options.scaleFrom)/100;
  -    
  +
       this.dims = null;
  -    if(this.options.scaleMode=='box')
  +    if (this.options.scaleMode=='box')
         this.dims = [this.element.offsetHeight, this.element.offsetWidth];
  -    if(/^content/.test(this.options.scaleMode))
  +    if (/^content/.test(this.options.scaleMode))
         this.dims = [this.element.scrollHeight, this.element.scrollWidth];
  -    if(!this.dims)
  +    if (!this.dims)
         this.dims = [this.options.scaleMode.originalHeight,
                      this.options.scaleMode.originalWidth];
     },
     update: function(position) {
       var currentScale = (this.options.scaleFrom/100.0) + (this.factor * position);
  -    if(this.options.scaleContent && this.fontSize)
  +    if (this.options.scaleContent && this.fontSize)
         this.element.setStyle({fontSize: this.fontSize * currentScale + this.fontSizeType });
       this.setDimensions(this.dims[0] * currentScale, this.dims[1] * currentScale);
     },
     finish: function(position) {
  -    if(this.restoreAfterFinish) this.element.setStyle(this.originalStyle);
  +    if (this.restoreAfterFinish) this.element.setStyle(this.originalStyle);
     },
     setDimensions: function(height, width) {
  -    var d = {};
  -    if(this.options.scaleX) d.width = Math.round(width) + 'px';
  -    if(this.options.scaleY) d.height = Math.round(height) + 'px';
  -    if(this.options.scaleFromCenter) {
  +    var d = { };
  +    if (this.options.scaleX) d.width = width.round() + 'px';
  +    if (this.options.scaleY) d.height = height.round() + 'px';
  +    if (this.options.scaleFromCenter) {
         var topd  = (height - this.dims[0])/2;
         var leftd = (width  - this.dims[1])/2;
  -      if(this.elementPositioning == 'absolute') {
  -        if(this.options.scaleY) d.top = this.originalTop-topd + 'px';
  -        if(this.options.scaleX) d.left = this.originalLeft-leftd + 'px';
  +      if (this.elementPositioning == 'absolute') {
  +        if (this.options.scaleY) d.top = this.originalTop-topd + 'px';
  +        if (this.options.scaleX) d.left = this.originalLeft-leftd + 'px';
         } else {
  -        if(this.options.scaleY) d.top = -topd + 'px';
  -        if(this.options.scaleX) d.left = -leftd + 'px';
  +        if (this.options.scaleY) d.top = -topd + 'px';
  +        if (this.options.scaleX) d.left = -leftd + 'px';
         }
       }
       this.element.setStyle(d);
     }
   });
   
  -Effect.Highlight = Class.create();
  -Object.extend(Object.extend(Effect.Highlight.prototype, Effect.Base.prototype), {
  +Effect.Highlight = Class.create(Effect.Base, {
     initialize: function(element) {
       this.element = $(element);
  -    if(!this.element) throw(Effect._elementDoesNotExistError);
  -    var options = Object.extend({ startcolor: '#ffff99' }, arguments[1] || {});
  +    if (!this.element) throw(Effect._elementDoesNotExistError);
  +    var options = Object.extend({ startcolor: '#ffff99' }, arguments[1] || { });
       this.start(options);
     },
     setup: function() {
       // Prevent executing on elements not in the layout flow
  -    if(this.element.getStyle('display')=='none') { this.cancel(); return; }
  +    if (this.element.getStyle('display')=='none') { this.cancel(); return; }
       // Disable background image during the effect
  -    this.oldStyle = {
  -      backgroundImage: this.element.getStyle('background-image') };
  -    this.element.setStyle({backgroundImage: 'none'});
  -    if(!this.options.endcolor)
  +    this.oldStyle = { };
  +    if (!this.options.keepBackgroundImage) {
  +      this.oldStyle.backgroundImage = this.element.getStyle('background-image');
  +      this.element.setStyle({backgroundImage: 'none'});
  +    }
  +    if (!this.options.endcolor)
         this.options.endcolor = this.element.getStyle('background-color').parseColor('#ffffff');
  -    if(!this.options.restorecolor)
  +    if (!this.options.restorecolor)
         this.options.restorecolor = this.element.getStyle('background-color');
       // init color calculations
       this._base  = $R(0,2).map(function(i){ return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16) }.bind(this));
  @@ -528,7 +505,7 @@
     },
     update: function(position) {
       this.element.setStyle({backgroundColor: $R(0,2).inject('#',function(m,v,i){
  -      return m+(Math.round(this._base[i]+(this._delta[i]*position)).toColorPart()); }.bind(this)) });
  +      return m+((this._base[i]+(this._delta[i]*position)).round().toColorPart()); }.bind(this)) });
     },
     finish: function() {
       this.element.setStyle(Object.extend(this.oldStyle, {
  @@ -537,30 +514,20 @@
     }
   });
   
  -Effect.ScrollTo = Class.create();
  -Object.extend(Object.extend(Effect.ScrollTo.prototype, Effect.Base.prototype), {
  -  initialize: function(element) {
  -    this.element = $(element);
  -    this.start(arguments[1] || {});
  -  },
  -  setup: function() {
  -    Position.prepare();
  -    var offsets = Position.cumulativeOffset(this.element);
  -    if(this.options.offset) offsets[1] += this.options.offset;
  -    var max = window.innerHeight ? 
  -      window.height - window.innerHeight :
  -      document.body.scrollHeight - 
  -        (document.documentElement.clientHeight ? 
  -          document.documentElement.clientHeight : document.body.clientHeight);
  -    this.scrollStart = Position.deltaY;
  -    this.delta = (offsets[1] > max ? max : offsets[1]) - this.scrollStart;
  -  },
  -  update: function(position) {
  -    Position.prepare();
  -    window.scrollTo(Position.deltaX, 
  -      this.scrollStart + (position*this.delta));
  -  }
  -});
  +Effect.ScrollTo = function(element) {
  +  var options = arguments[1] || { },
  +  scrollOffsets = document.viewport.getScrollOffsets(),
  +  elementOffsets = $(element).cumulativeOffset();
  +
  +  if (options.offset) elementOffsets[1] += options.offset;
  +
  +  return new Effect.Tween(null,
  +    scrollOffsets.top,
  +    elementOffsets[1],
  +    options,
  +    function(p){ scrollTo(scrollOffsets.left, p.round()); }
  +  );
  +};
   
   /* ------------- combination effects ------------- */
   
  @@ -568,14 +535,15 @@
     element = $(element);
     var oldOpacity = element.getInlineOpacity();
     var options = Object.extend({
  -  from: element.getOpacity() || 1.0,
  -  to:   0.0,
  -  afterFinishInternal: function(effect) { 
  -    if(effect.options.to!=0) return;
  -    effect.element.hide().setStyle({opacity: oldOpacity}); 
  -  }}, arguments[1] || {});
  +    from: element.getOpacity() || 1.0,
  +    to:   0.0,
  +    afterFinishInternal: function(effect) {
  +      if (effect.options.to!=0) return;
  +      effect.element.hide().setStyle({opacity: oldOpacity});
  +    }
  +  }, arguments[1] || { });
     return new Effect.Opacity(element,options);
  -}
  +};
   
   Effect.Appear = function(element) {
     element = $(element);
  @@ -587,15 +555,15 @@
       effect.element.forceRerendering();
     },
     beforeSetup: function(effect) {
  -    effect.element.setOpacity(effect.options.from).show(); 
  -  }}, arguments[1] || {});
  +    effect.element.setOpacity(effect.options.from).show();
  +  }}, arguments[1] || { });
     return new Effect.Opacity(element,options);
  -}
  +};
   
   Effect.Puff = function(element) {
     element = $(element);
  -  var oldStyle = { 
  -    opacity: element.getInlineOpacity(), 
  +  var oldStyle = {
  +    opacity: element.getInlineOpacity(),
       position: element.getStyle('position'),
       top:  element.style.top,
       left: element.style.left,
  @@ -603,50 +571,50 @@
       height: element.style.height
     };
     return new Effect.Parallel(
  -   [ new Effect.Scale(element, 200, 
  -      { sync: true, scaleFromCenter: true, scaleContent: true, restoreAfterFinish: true }), 
  -     new Effect.Opacity(element, { sync: true, to: 0.0 } ) ], 
  -     Object.extend({ duration: 1.0, 
  +   [ new Effect.Scale(element, 200,
  +      { sync: true, scaleFromCenter: true, scaleContent: true, restoreAfterFinish: true }),
  +     new Effect.Opacity(element, { sync: true, to: 0.0 } ) ],
  +     Object.extend({ duration: 1.0,
         beforeSetupInternal: function(effect) {
  -        Position.absolutize(effect.effects[0].element)
  +        Position.absolutize(effect.effects[0].element);
         },
         afterFinishInternal: function(effect) {
            effect.effects[0].element.hide().setStyle(oldStyle); }
  -     }, arguments[1] || {})
  +     }, arguments[1] || { })
      );
  -}
  +};
   
   Effect.BlindUp = function(element) {
     element = $(element);
     element.makeClipping();
     return new Effect.Scale(element, 0,
  -    Object.extend({ scaleContent: false, 
  -      scaleX: false, 
  +    Object.extend({ scaleContent: false,
  +      scaleX: false,
         restoreAfterFinish: true,
         afterFinishInternal: function(effect) {
           effect.element.hide().undoClipping();
  -      } 
  -    }, arguments[1] || {})
  +      }
  +    }, arguments[1] || { })
     );
  -}
  +};
   
   Effect.BlindDown = function(element) {
     element = $(element);
     var elementDimensions = element.getDimensions();
  -  return new Effect.Scale(element, 100, Object.extend({ 
  -    scaleContent: false, 
  +  return new Effect.Scale(element, 100, Object.extend({
  +    scaleContent: false,
       scaleX: false,
       scaleFrom: 0,
       scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
       restoreAfterFinish: true,
       afterSetup: function(effect) {
  -      effect.element.makeClipping().setStyle({height: '0px'}).show(); 
  -    },  
  +      effect.element.makeClipping().setStyle({height: '0px'}).show();
  +    },
       afterFinishInternal: function(effect) {
         effect.element.undoClipping();
       }
  -  }, arguments[1] || {}));
  -}
  +  }, arguments[1] || { }));
  +};
   
   Effect.SwitchOff = function(element) {
     element = $(element);
  @@ -656,19 +624,19 @@
       from: 0,
       transition: Effect.Transitions.flicker,
       afterFinishInternal: function(effect) {
  -      new Effect.Scale(effect.element, 1, { 
  +      new Effect.Scale(effect.element, 1, {
           duration: 0.3, scaleFromCenter: true,
           scaleX: false, scaleContent: false, restoreAfterFinish: true,
  -        beforeSetup: function(effect) { 
  +        beforeSetup: function(effect) {
             effect.element.makePositioned().makeClipping();
           },
           afterFinishInternal: function(effect) {
             effect.element.hide().undoClipping().undoPositioned().setStyle({opacity: oldOpacity});
           }
  -      })
  +      });
       }
  -  }, arguments[1] || {}));
  -}
  +  }, arguments[1] || { }));
  +};
   
   Effect.DropOut = function(element) {
     element = $(element);
  @@ -677,107 +645,115 @@
       left: element.getStyle('left'),
       opacity: element.getInlineOpacity() };
     return new Effect.Parallel(
  -    [ new Effect.Move(element, {x: 0, y: 100, sync: true }), 
  +    [ new Effect.Move(element, {x: 0, y: 100, sync: true }),
         new Effect.Opacity(element, { sync: true, to: 0.0 }) ],
       Object.extend(
         { duration: 0.5,
           beforeSetup: function(effect) {
  -          effect.effects[0].element.makePositioned(); 
  +          effect.effects[0].element.makePositioned();
           },
           afterFinishInternal: function(effect) {
             effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle);
  -        } 
  -      }, arguments[1] || {}));
  -}
  +        }
  +      }, arguments[1] || { }));
  +};
   
   Effect.Shake = function(element) {
     element = $(element);
  +  var options = Object.extend({
  +    distance: 20,
  +    duration: 0.5
  +  }, arguments[1] || {});
  +  var distance = parseFloat(options.distance);
  +  var split = parseFloat(options.duration) / 10.0;
     var oldStyle = {
       top: element.getStyle('top'),
       left: element.getStyle('left') };
  -    return new Effect.Move(element, 
  -      { x:  20, y: 0, duration: 0.05, afterFinishInternal: function(effect) {
  +    return new Effect.Move(element,
  +      { x:  distance, y: 0, duration: split, afterFinishInternal: function(effect) {
       new Effect.Move(effect.element,
  -      { x: -40, y: 0, duration: 0.1,  afterFinishInternal: function(effect) {
  +      { x: -distance*2, y: 0, duration: split*2,  afterFinishInternal: function(effect) {
       new Effect.Move(effect.element,
  -      { x:  40, y: 0, duration: 0.1,  afterFinishInternal: function(effect) {
  +      { x:  distance*2, y: 0, duration: split*2,  afterFinishInternal: function(effect) {
       new Effect.Move(effect.element,
  -      { x: -40, y: 0, duration: 0.1,  afterFinishInternal: function(effect) {
  +      { x: -distance*2, y: 0, duration: split*2,  afterFinishInternal: function(effect) {
       new Effect.Move(effect.element,
  -      { x:  40, y: 0, duration: 0.1,  afterFinishInternal: function(effect) {
  +      { x:  distance*2, y: 0, duration: split*2,  afterFinishInternal: function(effect) {
       new Effect.Move(effect.element,
  -      { x: -20, y: 0, duration: 0.05, afterFinishInternal: function(effect) {
  +      { x: -distance, y: 0, duration: split, afterFinishInternal: function(effect) {
           effect.element.undoPositioned().setStyle(oldStyle);
  -  }}) }}) }}) }}) }}) }});
  -}
  +  }}); }}); }}); }}); }}); }});
  +};
   
   Effect.SlideDown = function(element) {
     element = $(element).cleanWhitespace();
     // SlideDown need to have the content of the element wrapped in a container element with fixed height!
     var oldInnerBottom = element.down().getStyle('bottom');
     var elementDimensions = element.getDimensions();
  -  return new Effect.Scale(element, 100, Object.extend({ 
  -    scaleContent: false, 
  -    scaleX: false, 
  +  return new Effect.Scale(element, 100, Object.extend({
  +    scaleContent: false,
  +    scaleX: false,
       scaleFrom: window.opera ? 0 : 1,
       scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
       restoreAfterFinish: true,
       afterSetup: function(effect) {
         effect.element.makePositioned();
         effect.element.down().makePositioned();
  -      if(window.opera) effect.element.setStyle({top: ''});
  -      effect.element.makeClipping().setStyle({height: '0px'}).show(); 
  +      if (window.opera) effect.element.setStyle({top: ''});
  +      effect.element.makeClipping().setStyle({height: '0px'}).show();
       },
       afterUpdateInternal: function(effect) {
         effect.element.down().setStyle({bottom:
  -        (effect.dims[0] - effect.element.clientHeight) + 'px' }); 
  +        (effect.dims[0] - effect.element.clientHeight) + 'px' });
       },
       afterFinishInternal: function(effect) {
         effect.element.undoClipping().undoPositioned();
         effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom}); }
  -    }, arguments[1] || {})
  +    }, arguments[1] || { })
     );
  -}
  +};
   
   Effect.SlideUp = function(element) {
     element = $(element).cleanWhitespace();
     var oldInnerBottom = element.down().getStyle('bottom');
  +  var elementDimensions = element.getDimensions();
     return new Effect.Scale(element, window.opera ? 0 : 1,
  -   Object.extend({ scaleContent: false, 
  -    scaleX: false, 
  +   Object.extend({ scaleContent: false,
  +    scaleX: false,
       scaleMode: 'box',
       scaleFrom: 100,
  +    scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
       restoreAfterFinish: true,
  -    beforeStartInternal: function(effect) {
  +    afterSetup: function(effect) {
         effect.element.makePositioned();
         effect.element.down().makePositioned();
  -      if(window.opera) effect.element.setStyle({top: ''});
  +      if (window.opera) effect.element.setStyle({top: ''});
         effect.element.makeClipping().show();
  -    },  
  +    },
       afterUpdateInternal: function(effect) {
         effect.element.down().setStyle({bottom:
           (effect.dims[0] - effect.element.clientHeight) + 'px' });
       },
       afterFinishInternal: function(effect) {
  -      effect.element.hide().undoClipping().undoPositioned().setStyle({bottom: oldInnerBottom});
  -      effect.element.down().undoPositioned();
  +      effect.element.hide().undoClipping().undoPositioned();
  +      effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom});
       }
  -   }, arguments[1] || {})
  +   }, arguments[1] || { })
     );
  -}
  +};
   
  -// Bug in opera makes the TD containing this element expand for a instance after finish 
  +// Bug in opera makes the TD containing this element expand for a instance after finish
   Effect.Squish = function(element) {
  -  return new Effect.Scale(element, window.opera ? 1 : 0, { 
  +  return new Effect.Scale(element, window.opera ? 1 : 0, {
       restoreAfterFinish: true,
       beforeSetup: function(effect) {
  -      effect.element.makeClipping(); 
  -    },  
  +      effect.element.makeClipping();
  +    },
       afterFinishInternal: function(effect) {
  -      effect.element.hide().undoClipping(); 
  +      effect.element.hide().undoClipping();
       }
     });
  -}
  +};
   
   Effect.Grow = function(element) {
     element = $(element);
  @@ -786,7 +762,7 @@
       moveTransition: Effect.Transitions.sinoidal,
       scaleTransition: Effect.Transitions.sinoidal,
       opacityTransition: Effect.Transitions.full
  -  }, arguments[1] || {});
  +  }, arguments[1] || { });
     var oldStyle = {
       top: element.style.top,
       left: element.style.left,
  @@ -794,13 +770,13 @@
       width: element.style.width,
       opacity: element.getInlineOpacity() };
   
  -  var dims = element.getDimensions();    
  +  var dims = element.getDimensions();
     var initialMoveX, initialMoveY;
     var moveX, moveY;
  -  
  +
     switch (options.direction) {
       case 'top-left':
  -      initialMoveX = initialMoveY = moveX = moveY = 0; 
  +      initialMoveX = initialMoveY = moveX = moveY = 0;
         break;
       case 'top-right':
         initialMoveX = dims.width;
  @@ -825,11 +801,11 @@
         moveY = -dims.height / 2;
         break;
     }
  -  
  +
     return new Effect.Move(element, {
       x: initialMoveX,
       y: initialMoveY,
  -    duration: 0.01, 
  +    duration: 0.01,
       beforeSetup: function(effect) {
         effect.element.hide().makeClipping().makePositioned();
       },
  @@ -838,20 +814,20 @@
           [ new Effect.Opacity(effect.element, { sync: true, to: 1.0, from: 0.0, transition: options.opacityTransition }),
             new Effect.Move(effect.element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }),
             new Effect.Scale(effect.element, 100, {
  -            scaleMode: { originalHeight: dims.height, originalWidth: dims.width }, 
  +            scaleMode: { originalHeight: dims.height, originalWidth: dims.width },
               sync: true, scaleFrom: window.opera ? 1 : 0, transition: options.scaleTransition, restoreAfterFinish: true})
           ], Object.extend({
                beforeSetup: function(effect) {
  -               effect.effects[0].element.setStyle({height: '0px'}).show(); 
  +               effect.effects[0].element.setStyle({height: '0px'}).show();
                },
                afterFinishInternal: function(effect) {
  -               effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle); 
  +               effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle);
                }
              }, options)
  -      )
  +      );
       }
     });
  -}
  +};
   
   Effect.Shrink = function(element) {
     element = $(element);
  @@ -860,7 +836,7 @@
       moveTransition: Effect.Transitions.sinoidal,
       scaleTransition: Effect.Transitions.sinoidal,
       opacityTransition: Effect.Transitions.none
  -  }, arguments[1] || {});
  +  }, arguments[1] || { });
     var oldStyle = {
       top: element.style.top,
       left: element.style.left,
  @@ -870,7 +846,7 @@
   
     var dims = element.getDimensions();
     var moveX, moveY;
  -  
  +
     switch (options.direction) {
       case 'top-left':
         moveX = moveY = 0;
  @@ -887,38 +863,40 @@
         moveX = dims.width;
         moveY = dims.height;
         break;
  -    case 'center':  
  +    case 'center':
         moveX = dims.width / 2;
         moveY = dims.height / 2;
         break;
     }
  -  
  +
     return new Effect.Parallel(
       [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, transition: options.opacityTransition }),
         new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, transition: options.scaleTransition, restoreAfterFinish: true}),
         new Effect.Move(element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition })
  -    ], Object.extend({            
  +    ], Object.extend({
            beforeStartInternal: function(effect) {
  -           effect.effects[0].element.makePositioned().makeClipping(); 
  +           effect.effects[0].element.makePositioned().makeClipping();
            },
            afterFinishInternal: function(effect) {
              effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle); }
          }, options)
     );
  -}
  +};
   
   Effect.Pulsate = function(element) {
     element = $(element);
  -  var options    = arguments[1] || {};
  -  var oldOpacity = element.getInlineOpacity();
  -  var transition = options.transition || Effect.Transitions.sinoidal;
  -  var reverser   = function(pos){ return transition(1-Effect.Transitions.pulse(pos, options.pulses)) };
  -  reverser.bind(transition);
  -  return new Effect.Opacity(element, 
  +  var options    = arguments[1] || { },
  +    oldOpacity = element.getInlineOpacity(),
  +    transition = options.transition || Effect.Transitions.linear,
  +    reverser   = function(pos){
  +      return 1 - transition((-Math.cos((pos*(options.pulses||5)*2)*Math.PI)/2) + .5);
  +    };
  +
  +  return new Effect.Opacity(element,
       Object.extend(Object.extend({  duration: 2.0, from: 0,
         afterFinishInternal: function(effect) { effect.element.setStyle({opacity: oldOpacity}); }
       }, options), {transition: reverser}));
  -}
  +};
   
   Effect.Fold = function(element) {
     element = $(element);
  @@ -928,29 +906,225 @@
       width: element.style.width,
       height: element.style.height };
     element.makeClipping();
  -  return new Effect.Scale(element, 5, Object.extend({   
  +  return new Effect.Scale(element, 5, Object.extend({
       scaleContent: false,
       scaleX: false,
       afterFinishInternal: function(effect) {
  -    new Effect.Scale(element, 1, { 
  -      scaleContent: false, 
  +    new Effect.Scale(element, 1, {
  +      scaleContent: false,
         scaleY: false,
         afterFinishInternal: function(effect) {
           effect.element.hide().undoClipping().setStyle(oldStyle);
         } });
  -  }}, arguments[1] || {}));
  +  }}, arguments[1] || { }));
   };
   
  -['setOpacity','getOpacity','getInlineOpacity','forceRerendering','setContentZoom',
  - 'collectTextNodes','collectTextNodesIgnoreClass'].each( 
  -  function(f) { Element.Methods[f] = Element[f]; }
  -);
  +Effect.Morph = Class.create(Effect.Base, {
  +  initialize: function(element) {
  +    this.element = $(element);
  +    if (!this.element) throw(Effect._elementDoesNotExistError);
  +    var options = Object.extend({
  +      style: { }
  +    }, arguments[1] || { });
   
  -Element.Methods.visualEffect = function(element, effect, options) {
  -  s = effect.gsub(/_/, '-').camelize();
  -  effect_class = s.charAt(0).toUpperCase() + s.substring(1);
  -  new Effect[effect_class](element, options);
  -  return $(element);
  +    if (!Object.isString(options.style)) this.style = $H(options.style);
  +    else {
  +      if (options.style.include(':'))
  +        this.style = options.style.parseStyle();
  +      else {
  +        this.element.addClassName(options.style);
  +        this.style = $H(this.element.getStyles());
  +        this.element.removeClassName(options.style);
  +        var css = this.element.getStyles();
  +        this.style = this.style.reject(function(style) {
  +          return style.value == css[style.key];
  +        });
  +        options.afterFinishInternal = function(effect) {
  +          effect.element.addClassName(effect.options.style);
  +          effect.transforms.each(function(transform) {
  +            effect.element.style[transform.style] = '';
  +          });
  +        };
  +      }
  +    }
  +    this.start(options);
  +  },
  +
  +  setup: function(){
  +    function parseColor(color){
  +      if (!color || ['rgba(0, 0, 0, 0)','transparent'].include(color)) color = '#ffffff';
  +      color = color.parseColor();
  +      return $R(0,2).map(function(i){
  +        return parseInt( color.slice(i*2+1,i*2+3), 16 );
  +      });
  +    }
  +    this.transforms = this.style.map(function(pair){
  +      var property = pair[0], value = pair[1], unit = null;
  +
  +      if (value.parseColor('#zzzzzz') != '#zzzzzz') {
  +        value = value.parseColor();
  +        unit  = 'color';
  +      } else if (property == 'opacity') {
  +        value = parseFloat(value);
  +        if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout))
  +          this.element.setStyle({zoom: 1});
  +      } else if (Element.CSS_LENGTH.test(value)) {
  +          var components = value.match(/^([\+\-]?[0-9\.]+)(.*)$/);
  +          value = parseFloat(components[1]);
  +          unit = (components.length == 3) ? components[2] : null;
  +      }
  +
  +      var originalValue = this.element.getStyle(property);
  +      return {
  +        style: property.camelize(),
  +        originalValue: unit=='color' ? parseColor(originalValue) : parseFloat(originalValue || 0),
  +        targetValue: unit=='color' ? parseColor(value) : value,
  +        unit: unit
  +      };
  +    }.bind(this)).reject(function(transform){
  +      return (
  +        (transform.originalValue == transform.targetValue) ||
  +        (
  +          transform.unit != 'color' &&
  +          (isNaN(transform.originalValue) || isNaN(transform.targetValue))
  +        )
  +      );
  +    });
  +  },
  +  update: function(position) {
  +    var style = { }, transform, i = this.transforms.length;
  +    while(i--)
  +      style[(transform = this.transforms[i]).style] =
  +        transform.unit=='color' ? '#'+
  +          (Math.round(transform.originalValue[0]+
  +            (transform.targetValue[0]-transform.originalValue[0])*position)).toColorPart() +
  +          (Math.round(transform.originalValue[1]+
  +            (transform.targetValue[1]-transform.originalValue[1])*position)).toColorPart() +
  +          (Math.round(transform.originalValue[2]+
  +            (transform.targetValue[2]-transform.originalValue[2])*position)).toColorPart() :
  +        (transform.originalValue +
  +          (transform.targetValue - transform.originalValue) * position).toFixed(3) +
  +            (transform.unit === null ? '' : transform.unit);
  +    this.element.setStyle(style, true);
  +  }
  +});
  +
  +Effect.Transform = Class.create({
  +  initialize: function(tracks){
  +    this.tracks  = [];
  +    this.options = arguments[1] || { };
  +    this.addTracks(tracks);
  +  },
  +  addTracks: function(tracks){
  +    tracks.each(function(track){
  +      track = $H(track);
  +      var data = track.values().first();
  +      this.tracks.push($H({
  +        ids:     track.keys().first(),
  +        effect:  Effect.Morph,
  +        options: { style: data }
  +      }));
  +    }.bind(this));
  +    return this;
  +  },
  +  play: function(){
  +    return new Effect.Parallel(
  +      this.tracks.map(function(track){
  +        var ids = track.get('ids'), effect = track.get('effect'), options = track.get('options');
  +        var elements = [$(ids) || $$(ids)].flatten();
  +        return elements.map(function(e){ return new effect(e, Object.extend({ sync:true }, options)) });
  +      }).flatten(),
  +      this.options
  +    );
  +  }
  +});
  +
  +Element.CSS_PROPERTIES = $w(
  +  'backgroundColor backgroundPosition borderBottomColor borderBottomStyle ' +
  +  'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth ' +
  +  'borderRightColor borderRightStyle borderRightWidth borderSpacing ' +
  +  'borderTopColor borderTopStyle borderTopWidth bottom clip color ' +
  +  'fontSize fontWeight height left letterSpacing lineHeight ' +
  +  'marginBottom marginLeft marginRight marginTop markerOffset maxHeight '+
  +  'maxWidth minHeight minWidth opacity outlineColor outlineOffset ' +
  +  'outlineWidth paddingBottom paddingLeft paddingRight paddingTop ' +
  +  'right textIndent top width wordSpacing zIndex');
  +
  +Element.CSS_LENGTH = /^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;
  +
  +String.__parseStyleElement = document.createElement('div');
  +String.prototype.parseStyle = function(){
  +  var style, styleRules = $H();
  +  if (Prototype.Browser.WebKit)
  +    style = new Element('div',{style:this}).style;
  +  else {
  +    String.__parseStyleElement.innerHTML = '<div style="' + this + '"></div>';
  +    style = String.__parseStyleElement.childNodes[0].style;
  +  }
  +
  +  Element.CSS_PROPERTIES.each(function(property){
  +    if (style[property]) styleRules.set(property, style[property]);
  +  });
  +
  +  if (Prototype.Browser.IE && this.include('opacity'))
  +    styleRules.set('opacity', this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]);
  +
  +  return styleRules;
  +};
  +
  +if (document.defaultView && document.defaultView.getComputedStyle) {
  +  Element.getStyles = function(element) {
  +    var css = document.defaultView.getComputedStyle($(element), null);
  +    return Element.CSS_PROPERTIES.inject({ }, function(styles, property) {
  +      styles[property] = css[property];
  +      return styles;
  +    });
  +  };
  +} else {
  +  Element.getStyles = function(element) {
  +    element = $(element);
  +    var css = element.currentStyle, styles;
  +    styles = Element.CSS_PROPERTIES.inject({ }, function(results, property) {
  +      results[property] = css[property];
  +      return results;
  +    });
  +    if (!styles.opacity) styles.opacity = element.getOpacity();
  +    return styles;
  +  };
  +}
  +
  +Effect.Methods = {
  +  morph: function(element, style) {
  +    element = $(element);
  +    new Effect.Morph(element, Object.extend({ style: style }, arguments[2] || { }));
  +    return element;
  +  },
  +  visualEffect: function(element, effect, options) {
  +    element = $(element);
  +    var s = effect.dasherize().camelize(), klass = s.charAt(0).toUpperCase() + s.substring(1);
  +    new Effect[klass](element, options);
  +    return element;
  +  },
  +  highlight: function(element, options) {
  +    element = $(element);
  +    new Effect.Highlight(element, options);
  +    return element;
  +  }
   };
   
  -Element.addMethods();
  \ No newline at end of file
  +$w('fade appear grow shrink fold blindUp blindDown slideUp slideDown '+
  +  'pulsate shake puff squish switchOff dropOut').each(
  +  function(effect) {
  +    Effect.Methods[effect] = function(element, options){
  +      element = $(element);
  +      Effect[effect.charAt(0).toUpperCase() + effect.substring(1)](element, options);
  +      return element;
  +    };
  +  }
  +);
  +
  +$w('getInlineOpacity forceRerendering setContentZoom collectTextNodes collectTextNodesIgnoreClass getStyles').each(
  +  function(f) { Effect.Methods[f] = Element[f]; }
  +);
  +
  +Element.addMethods(Effect.Methods);
  \ No newline at end of file
  
  
  


wkpark      2008/12/19 22:38:43

  Modified:    local    moniwyg.js
  Log:
  update
  
  Revision  Changes    Path
  1.58      +3 -4      moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.57
  retrieving revision 1.58
  diff -u -r1.57 -r1.58
  --- moniwyg.js	18 Dec 2008 12:33:51 -0000	1.57
  +++ moniwyg.js	19 Dec 2008 13:38:43 -0000	1.58
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.57 2008/12/18 12:33:51 wkpark Exp $
  +// $Id: moniwyg.js,v 1.58 2008/12/19 13:38:43 wkpark Exp $
   //
   //_url_prefix="/wiki";
   //
  @@ -50,7 +50,6 @@
   }
   
   Wikiwyg.Mode.prototype.execute_scripts = function(el,scripts) {
  -    var doc;
       var iframe=null;
   
       if (this.classname.match(/(Wysiwyg)/)) {
  @@ -511,7 +510,7 @@
           f.setAttribute('class','errorLog');
           // show error XXX
           f.innerHTML=form;
  -        alert('Can\'t save.'); // XXX
  +        alert("Can't save."); // XXX
       }
   
       return;
  @@ -1950,7 +1949,7 @@
           method=method+'("'+arg+'")';
           this.controls=this.controls ? ','+arg:arg;
       } else method=method+'()';
  -    link.onclick = function() { eval('self.wikiwyg.' + method); return false };
  +    link.onclick = function() { eval('self.wikiwyg.' + method); return false; };
   
       this.div.appendChild(span);
   }
  
  
  


wkpark      2008/12/19 22:38:58

  Modified:    local    wikibits.js
  Log:
  gettextized
  
  Revision  Changes    Path
  1.14      +18 -5     moniwiki/local/wikibits.js
  
  Index: wikibits.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/wikibits.js,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- wikibits.js	17 Dec 2008 12:33:41 -0000	1.13
  +++ wikibits.js	19 Dec 2008 13:38:58 -0000	1.14
  @@ -1,7 +1,7 @@
   // from the MediaWiki
   // simplified for the MoniWiki by wkpark
   //
  -// $Id: wikibits.js,v 1.13 2008/12/17 12:33:41 wkpark Exp $
  +// $Id: wikibits.js,v 1.14 2008/12/19 13:38:58 wkpark Exp $
   //
   // Wikipedia JavaScript support functions
   // if this is true, the toolbar will no longer overwrite the infobox when you move the mouse over individual items
  @@ -18,6 +18,18 @@
       var is_opera_seven = (window.opera && document.childNodes);
   }
   
  +if ( typeof N_ == 'undefined') {
  +    N_ = function(msgid) {
  +        return msgid;
  +    };
  +}
  +
  +if ( typeof _ == 'undefined') {
  +    _ = function(msgid) {
  +        return msgid;
  +    };
  +}
  +
   // add any onload functions in this hook (please don't hard-code any events in the xhtml source)
   function onloadhook () {
       // don't run anything below this for non-dom browsers
  @@ -46,10 +58,10 @@
   // we use it to avoid creating the toolbar where javascript is not enabled
   function addButton(imageFile, speedTip, tagOpen, tagClose, sampleText) {
   
  -	speedTip=escapeQuotes(speedTip);
  +	speedTip=escapeQuotes(_(speedTip));
   	tagOpen=escapeQuotes(tagOpen);
   	tagClose=escapeQuotes(tagClose);
  -	sampleText=escapeQuotes(sampleText);
  +	sampleText=escapeQuotes(_(sampleText));
   	var mouseOver="";
   
   	// we can't change the selection, so we show example texts
  @@ -72,6 +84,7 @@
   
   function addLinkButton(imageFile,speedTip,id,once) {
   	var off=once ? 'true':'false';
  +	speedTip=escapeQuotes(_(speedTip));
   	document.write("<input type='image' onclick=\"javascript:openChooser(this,'" + id + "'," + off + ");\"");
           document.write(" width=\"22\" height=\"22\" src=\""+imageFile+"\" border=\"0\" alt=\""+speedTip+"\" title=\""+speedTip+"\""+" />");
   	return;
  @@ -114,7 +127,7 @@
   }
   
   function addInfobox(infoText,text_alert) {
  -	alertText=text_alert;
  +	alertText=_(text_alert);
   	var clientPC = navigator.userAgent.toLowerCase(); // Get client info
   
   	var re=new RegExp("\\\\n","g");
  @@ -124,7 +137,7 @@
   	// document.selection is an IE-only property. The full toolbar works in IE and
   	// Gecko-based browsers.
   	if(!document.selection && !is_gecko && !is_safari) {
  - 		infoText=escapeQuotesHTML(infoText);
  + 		infoText=escapeQuotesHTML(_(infoText));
   	 	document.write("<form name='infoform' id='infoform'>"+
   			"<input size=80 id='infobox' name='infobox' value=\""+
   			infoText+"\" READONLY></form>");
  
  
  


wkpark      2008/12/19 22:40:18

  Modified:    plugin   Gallery.php EditToolbar.php
  Log:
  EditToolbar: gettextized embedded JS
  Gallery: fix for lightbox/lightbox clones
  
  Revision  Changes    Path
  1.36      +6 -3      moniwiki/plugin/Gallery.php
  
  Index: Gallery.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Gallery.php,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- Gallery.php	17 Apr 2008 02:46:48 -0000	1.35
  +++ Gallery.php	19 Dec 2008 13:40:18 -0000	1.36
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Gallery]]
   //
  -// $Id: Gallery.php,v 1.35 2008/04/17 02:46:48 wkpark Exp $
  +// $Id: Gallery.php,v 1.36 2008/12/19 13:40:18 wkpark Exp $
   
   function get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -67,9 +67,12 @@
     $sort=$options['sort'] ? $options['sort']:'';
     $nocomment=$options['nocomment'] ? $options['nocomment']:'';
   
  -  if ($DBInfo->gallery_use_lightbox and $DBInfo->use_lightbox) {
  +  if (!empty($DBInfo->gallery_use_lightbox) and !empty($DBInfo->use_lightbox)) {
       $use_lightbox=1;
  -    $href_attr=' rel="lightbox[gallery]" ';
  +    if (is_string($DBInfo->gallery_use_lightbox))
  +      $href_attr=' rel="'. $DBInfo->gallery_use_lightbox .'[gallery]" ';
  +    else
  +      $href_attr=' rel="lightbox[gallery]" ';
     }
   
     // parse args
  
  
  
  1.9       +14 -14    moniwiki/plugin/EditToolbar.php
  
  Index: EditToolbar.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/EditToolbar.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- EditToolbar.php	3 Dec 2008 08:26:47 -0000	1.8
  +++ EditToolbar.php	19 Dec 2008 13:40:18 -0000	1.9
  @@ -7,7 +7,7 @@
   //
   // This feature is imported from the MediaWiki
   //
  -// $Id: EditToolbar.php,v 1.8 2008/12/03 08:26:47 wkpark Exp $
  +// $Id: EditToolbar.php,v 1.9 2008/12/19 13:40:18 wkpark Exp $
   
   function macro_EditToolbar($formatter,$value) {
       global $DBInfo;
  @@ -27,19 +27,19 @@
   <script language="JavaScript" type='text/javascript'>
   /*<![CDATA[*/
   document.writeln("<div id='toolbar'><span>");
  -addButton('$imgdir/button_bold.png','Bold text','\'\'\'','\'\'\'','Bold text');
  -addButton('$imgdir/button_italic.png','Italic text','\'\'','\'\'','Italic text');
  -addButton('$imgdir/button_link.png','Internal link','[',']','Link title');
  -addButton('$imgdir/button_extlink.png','External link (remember http:// prefix)','[',']','http://www.example.com link title');
  -addButton('$imgdir/button_headline.png','Level 2 headline','\\n== ',' ==\\n','Headline text');
  -addLinkButton('$imgdir/button_math.png','Mathematical formula (LaTeX)','mathChooser');
  -addButton('$imgdir/button_nowiki.png','Ignore wiki formatting','{{{','}}}','Insert non-formatted text here');
  -addButton('$imgdir/button_hr.png','Horizontal line (use sparingly)','\\n----\\n','','');
  -addButton('$imgdir/button_image.png','Embedded image','attachment:','','Example.jpg');
  -addButton('$imgdir/button_media.png','Media file link','[[Media(',')]]','Example.mp3');
  -addLinkButton('$imgdir/button_smiley.png','Smiley','smileyChooser',true);
  -addButton('$imgdir/button_sig.png','Your signature with timestamp','@SIG@','','');
  -addInfobox('Click a button to get an example text','Please enter the text you want to be formatted.\\\\n It will be shown in the infobox for copy and pasting.\\\\nExample:\\\\n\$1\\\\nwill become:\\\\n\$2');
  +addButton('$imgdir/button_bold.png',N_('Bold text'),'\'\'\'','\'\'\'',N_('Bold text'));
  +addButton('$imgdir/button_italic.png',N_('Italic text'),'\'\'','\'\'',N_('Italic text'));
  +addButton('$imgdir/button_link.png',N_('Internal link'),'[',']',N_('Link title'));
  +addButton('$imgdir/button_extlink.png',N_('External link (remember http:// prefix)'),'[',']',N_('http://www.example.com link title'));
  +addButton('$imgdir/button_headline.png',N_('Level 2 headline'),'\\n== ',' ==\\n',N_('Headline text'));
  +addLinkButton('$imgdir/button_math.png',N_('Mathematical formula (LaTeX)'),'mathChooser');
  +addButton('$imgdir/button_nowiki.png',N_('Ignore wiki formatting'),'{{{','}}}',N_('Insert non-formatted text here'));
  +addButton('$imgdir/button_hr.png',N_('Horizontal line (use sparingly)'),'\\n----\\n','','');
  +addButton('$imgdir/button_image.png',N_('Embedded image'),'attachment:','','Example.jpg');
  +addButton('$imgdir/button_media.png',N_('Media file link'),'[[Media(',')]]','Example.mp3');
  +addLinkButton('$imgdir/button_smiley.png',N_('Smiley'),'smileyChooser',true);
  +addButton('$imgdir/button_sig.png',N_('Your signature with timestamp'),'@SIG@','','');
  +addInfobox(N_('Click a button to get an example text'),N_('Please enter the text you want to be formatted.\\\\n It will be shown in the infobox for copy and pasting.\\\\nExample:\\\\n\$1\\\\nwill become:\\\\n\$2'));
   document.writeln("</span></div><div style='clear:both'></div>");
   /*]]>*/
   </script>
  
  
  


wkpark      2008/12/19 22:51:10

  Modified:    plugin/processor sfd.php
  Log:
  plugin info added.
  cache_dir name fixed
  
  Revision  Changes    Path
  1.3       +13 -3     moniwiki/plugin/processor/sfd.php
  
  Index: sfd.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/sfd.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- sfd.php	25 Nov 2008 03:49:31 -0000	1.2
  +++ sfd.php	19 Dec 2008 13:51:10 -0000	1.3
  @@ -3,10 +3,20 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a SFD Fontforge glyph rendering plugin for the MoniWiki
   //
  -// $Id: sfd.php,v 1.2 2008/11/25 03:49:31 wkpark Exp $
  +//
  +// Author: Won-Kyu Park <wkpark@kldp.org>
  +// Since: 2008-05-20
  +// Date: 2008-12-19
  +// Name: a FontForge sfd renderer
  +// Description: a FontForge sfd glyph renderer
  +// URL: MoniWiki:FontForgePlugin
  +// Version: $Revision: 1.3 $
  +// License: GPL
   // Usage: {{{#!sfd
   // sfd char file
   // }}}
  +//
  +// $Id: sfd.php,v 1.3 2008/12/19 13:51:10 wkpark Exp $
   
   function processor_sfd($formatter,$value="") {
       global $DBInfo;
  @@ -26,8 +36,8 @@
           $vartmp_dir=getenv('TEMP');
           #$convert="wconvert";
       }
  -    $cache_dir=$DBInfo->upload_dir."/PIC";
  -    $cache_url=$DBInfo->upload_url ? $DBInfo->upload_url.'/PIC':
  +    $cache_dir=$DBInfo->upload_dir."/SFD";
  +    $cache_url=$DBInfo->upload_url ? $DBInfo->upload_url.'/SFD':
       $DBInfo->url_prefix.'/'.$cache_dir;
   
       if ($value[0]=='#' and $value[1]=='!')
  
  
  


wkpark      2008/12/20 13:14:30

  Modified:    .        upgrade.sh secure.sh monisetup.sh
  Log:
  upgrade.sh: check all files and backup now.
  secure.sh monisetup.sh: colorized :>
  
  Revision  Changes    Path
  1.3       +53 -20    moniwiki/upgrade.sh
  
  Index: upgrade.sh
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/upgrade.sh,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- upgrade.sh	3 Jan 2006 10:42:09 -0000	1.2
  +++ upgrade.sh	20 Dec 2008 04:14:30 -0000	1.3
  @@ -1,5 +1,5 @@
   #!/bin/sh
  -# $Id: upgrade.sh,v 1.2 2006/01/03 10:42:09 wkpark Exp $
  +# $Id: upgrade.sh,v 1.3 2008/12/20 04:14:30 wkpark Exp $
   
   if [ -z "$1" ]; then
   	cat <<HELP
  @@ -13,26 +13,37 @@
   WARNING="echo -en \\033[1;33m"
   MESSAGE="echo -en \\033[1;34m"
   NORMAL="echo -en \\033[0;39m"
  +MAGENTA="echo -en \\033[1;35m"
   
   $SUCCESS
   echo
   echo "+-------------------------------+"
   echo "|    MoniWiki upgrade script    |"
   echo "+-------------------------------+"
  -echo "| Warning: only PHP script will |"
  -echo "|   be updated and backuped.    |"
  -echo "|     Please update other files |"
  -echo "|   manually.                   |"
  +echo "| This script compare all files |"
  +echo "|  between current and new.     |"
  +echo "|     All different files are   |"
  +echo "|  backuped in the backup       |"
  +echo "|  directory. And so you can    |"
  +echo "|  restore old one by manually. |"
   echo "+-------------------------------+"
   echo
   $WARNING
  -echo -n " Press enter to continue or Control-C to exit "
  +echo -n " Press "
  +$MAGENTA
  +echo -n ENTER
  +$WARNING
  +echo -n " to continue or "
  +$MAGENTA
  +echo -n Control-C
  +$WARNING
  +echo -n " to exit "
   $NORMAL
   read
   
   CHECKSUM=
   PACKAGE=moniwiki
  -FILELIST="wiki.php wikilib.php wikismiley.php plugin/*.php plugin/processor/*.php plugin/filter/*.php"
  +
   for arg; do
   
           case $# in
  @@ -53,15 +64,6 @@
   	esac
   done
   
  -
  -if [ ! -f "$CHECKSUM" ];then
  -	$MESSAGE
  -	echo "*** Make a checksum for current version ***"
  -	$NORMAL
  -	md5sum $FILELIST > checksum-current
  -	CHECKSUM=checksum-current
  -fi
  -
   #
   TMP=.tmp$$
   $MESSAGE
  @@ -71,14 +73,29 @@
   echo tar xzf $TAR -C$TMP
   tar xzf $TAR -C$TMP
   $MESSAGE
  -echo "*** Make checksum list for the new version ***"
  +echo "*** Make the checksum list for the new version ***"
   $NORMAL
  -(cd $TMP/$PACKAGE; md5sum $FILELIST > ../../checksum-new)
  +
  +FILELIST=$(find $TMP/$PACKAGE -type f | sed "s@^$TMP/$PACKAGE/@@")
  +
  +rm -f checksum-new
  +(cd $TMP/$PACKAGE; for x in $FILELIST; do test -f $x && md5sum $x;done >> ../../checksum-new)
  +
  +if [ ! -f "$CHECKSUM" ];then
  +	rm -rf checksum-current
  +	$MESSAGE
  +	echo "*** Make the checksum for current version ***"
  +	$NORMAL
  +	for x in $FILELIST; do test -f $x && md5sum $x;done >> checksum-current
  +	CHECKSUM=checksum-current
  +fi
   
   UPGRADE=`diff checksum-current checksum-new |grep '^<'|cut -d' ' -f4`
   
   if [ -z "$UPGRADE" ]; then
  +	$FAILURE
   	echo "You have already installed the latest version"
  +	$NORMAL
   	exit
   fi
   $MESSAGE
  @@ -94,12 +111,28 @@
   $WARNING
   echo " Are your really want to upgrade $PACKAGE ?"
   $NORMAL
  -echo "   (Type 'yes' to upgrade or Control-C to exit)"
  +echo -n "   (Type '"
  +$MAGENTA
  +echo -n yes
  +$NORMAL
  +echo -n "' to upgrade or type others to exit)  "
   read YES
   if [ x$YES != xyes ]; then
  -	echo "Please type 'yes' to real upgrade"
  +	rm -r $TMP
  +	echo -n "Please type '"
  +	$MAGENTA
  +	echo -n yes
  +	$NORMAL
  +	echo "' to real upgrade"
   	exit -1
   fi
   (cd $TMP/$PACKAGE;tar cf - $UPGRADE|(cd ../..;tar xvf -))
   rm -r $TMP
  +$SUCCESS
   echo "$PACKAGE is successfully upgraded."
  +echo ""
  +echo ""
  +echo "   All different files are       "
  +echo "       backuped in the           "
  +echo "       $BACKUP dir now. :)       "
  +$NORMAL
  
  
  
  1.9       +20 -2     moniwiki/secure.sh
  
  Index: secure.sh
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/secure.sh,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- secure.sh	26 Aug 2004 19:41:34 -0000	1.8
  +++ secure.sh	20 Dec 2008 04:14:30 -0000	1.9
  @@ -1,18 +1,29 @@
   #!/bin/bash
  -# $Id: secure.sh,v 1.8 2004/08/26 19:41:34 wkpark Exp $
  +# $Id: secure.sh,v 1.9 2008/12/20 04:14:30 wkpark Exp $
  +SUCCESS="echo -en \\033[1;32m"
  +FAILURE="echo -en \\033[1;31m"
  +WARNING="echo -en \\033[1;33m"
  +MESSAGE="echo -en \\033[1;34m"
  +NORMAL="echo -en \\033[0;39m"
  +MAGENTA="echo -en \\033[1;35m"
  +
  +$WARNING
   echo
   echo "+-------------------------------------+"
   echo "|    MoniWiki configuration script    |"
   echo "+-------------------------------------+"
   echo
  +$NORMAL
   
   if [ -f config.php ]; then
  +    $MESSAGE
       mv config.php config.php.$$
       cp config.php.$$ config.php
       rm config.php.$$
       chmod 644 config.php
       chmod 711 . data
       echo "*** chmod 644 config.php"
  +    $NORMAL
   fi
   
   IMG_DIR=`cat config.php |grep '$imgs_dir='|cut -d\' -f2`
  @@ -23,12 +34,19 @@
   [ -n "$PDS_DIR" ] && [ -f pds_htaccess ] && [ ! -f $PDS_DIR/.htaccess ] &&
       cp pds_htaccess $PDS_DIR/.htaccess && rm pds_htaccess
   
  +$SUCCESS
   echo ""
   echo "Your MoniWiki is now secure and cannot be configured."
   echo "If you wish to reconfigure it, execute the following command:"
   echo ""
  -echo "    % sh monisetup.sh"
  +echo -n "    "
  +$MESSAGE
  +echo -n "$ "
  +$NORMAL
  +echo sh monisetup.sh
  +$SUCCESS
   echo ""
   echo "and open 'monisetup.php' on a web browser."
   echo ""
   echo ""
  +$NORMAL
  
  
  
  1.8       +29 -3     moniwiki/monisetup.sh
  
  Index: monisetup.sh
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.sh,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- monisetup.sh	14 Apr 2005 09:55:59 -0000	1.7
  +++ monisetup.sh	20 Dec 2008 04:14:30 -0000	1.8
  @@ -1,15 +1,33 @@
   #!/bin/bash
  -# $Id: monisetup.sh,v 1.7 2005/04/14 09:55:59 wkpark Exp $
  +# $Id: monisetup.sh,v 1.8 2008/12/20 04:14:30 wkpark Exp $
   
  +SUCCESS="echo -en \\033[1;32m"
  +FAILURE="echo -en \\033[1;31m"
  +WARNING="echo -en \\033[1;33m"
  +MESSAGE="echo -en \\033[1;34m"
  +NORMAL="echo -en \\033[0;39m"
  +MAGENTA="echo -en \\033[1;35m"
  +
  +$SUCCESS
   echo
   echo "+-------------------------------------+"
   echo "|    MoniWiki configuration script    |"
   echo "+-------------------------------------+"
   echo
  +$NORMAL
   
   RETVAL=1
   while [ ! $RETVAL -eq 0 ]; do
  -  echo -n " Please enter the permission 777 or 2777(default 2777): "
  +  $WARNING
  +  echo -n " Please enter the permission "
  +  $MAGENTA
  +  echo -n 777
  +  $WARNING
  +  echo -n " or "
  +  $MAGENTA
  +  echo -n 2777
  +  $WARNING
  +  echo -n "(default 2777): "
     read PERM
     if [ x$PERM = x ]; then
       PERM=2777
  @@ -23,6 +41,7 @@
       RETVAL=0
     fi
   done
  +$NORMAL
   
   if [ ! -f config.php ]; then
     echo 'Please open monisetup.php on your browser'
  @@ -43,15 +62,19 @@
       echo "*** You are the root user ***"
       PERM=755
     else
  +    $WARNING
       echo -n " Did you really want to make directories with permission '$PERM'(N/y): "
  +    $NORMAL
       read say
       if [ x$say = x ]; then
         say='n'
       fi
       if [ x$say = x'n' ]; then
  +      $WARNING
         echo ""
         echo "Please open monisetup.php again"
         echo ""
  +      $NORMAL
         exit
       fi
     fi  
  @@ -73,6 +96,7 @@
   chmod $PERM pds
   RETVAL=$?
   if [ ! $RETVAL -eq 0 ]; then
  +  $FAILURE
     echo ""
     echo "---------------------------------------------------------"
     echo "You can not change some directories permission with $PERM"
  @@ -80,6 +104,7 @@
     echo "simply ignore above error messages :)"
     echo "---------------------------------------------------------"
     echo ""
  +  $NORMAL
   fi
   
   echo "*** chmod $PERM config.php"
  @@ -115,10 +140,11 @@
     done
   fi
   
  +$SUCCESS
   echo
   echo 'Your wiki is cofiguared now.'
   echo 'Please open monisetup.php in a browser'
   echo ' to change some basic options for your wiki'
   echo
   echo
  -
  +$NORMAL
  
  
  


wkpark      2008/12/20 13:16:18

  Modified:    .        wiki.php
  Log:
  set JS Packer header
  configable $use_titlemenu; above 15 can change the length.
  
  Revision  Changes    Path
  1.428     +10 -6     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.427
  retrieving revision 1.428
  diff -u -r1.427 -r1.428
  --- wiki.php	18 Dec 2008 14:49:13 -0000	1.427
  +++ wiki.php	20 Dec 2008 04:16:18 -0000	1.428
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.427 2008/12/18 14:49:13 wkpark Exp $
  +// $Id: wiki.php,v 1.428 2008/12/20 04:16:18 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.427 $',1,-1);
  +$_revision = substr('$Revision: 1.428 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -4020,6 +4020,7 @@
       global $Config;
       if (!empty($Config['use_jspacker']) and !empty($Config['cache_public_dir'])) {
         include_once('lib/fckpacker.php'); # good but not work with prototype.
  +      define ('JS_PACKER','FCK_Packer/MoniWiki');
         $constProc = new FCKConstantProcessor();
         #$constProc->RemoveDeclaration = false ;
         #include_once('lib/jspacker.php'); # bad!
  @@ -4091,8 +4092,10 @@
         $out.='<script type="text/javascript" src="'.$Config['cache_public_url'].'/'.$jsname.'"></script>'."\n";
         $cache->update($uniq,$out);
   
  +      $ver = FCKJavaScriptCompressor::Revision();
  +      $header='/* '.JS_PACKER.' '.$ver.' '.md5($packed).' '.date('Y-m-d H:i:s').' */'."\n";
         # save real compressed js file.
  -      $fc->_save($Config['cache_public_dir'].'/'.$jsname,$packed);
  +      $fc->_save($Config['cache_public_dir'].'/'.$jsname,$header.$packed);
         return $out;
       }
       $out='';
  @@ -4603,15 +4606,16 @@
           $menu[]=$this->link_repl($item,$attr);
         }
       }
  -    if ($DBInfo->use_titlemenu and $titlemnu == 0 ) {
  +    if (!empty($DBInfo->use_titlemenu) and $titlemnu == 0 ) {
  +      $len = $DBInfo->use_titlemenu > 15 ? $DBInfo->use_titlemenu:15;
         #$attr="class='current'";
         # XXX make title more shorter ?
         $mnuname=htmlspecialchars($this->page->name);
         if ($DBInfo->hasPage($this->page->name)) {
  -        if (strlen($mnuname) < 15) {
  +        if (strlen($mnuname) < $len) {
             $menu[]=$this->word_repl($mypgname,$mnuname,$attr);
           } else if (function_exists('mb_strimwidth')) {
  -          $my=mb_strimwidth($mypgname,0,15,'...');
  +          $my=mb_strimwidth($mypgname,0,$len,'...');
             $menu[]=$this->word_repl($mypgname,htmlspecialchars($my),$attr);
           }
         }
  
  
  


wkpark      2008/12/20 13:37:50

  Modified:    locale/po fr.po ko.po moniwiki.pot
  Log:
  update
  
  Revision  Changes    Path
  1.21      +180 -180  moniwiki/locale/po/fr.po
  
  Index: fr.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/fr.po,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- fr.po	16 Dec 2008 12:37:18 -0000	1.20
  +++ fr.po	20 Dec 2008 04:37:50 -0000	1.21
  @@ -4,7 +4,7 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2008-12-16 21:07+0900\n"
  +"POT-Creation-Date: 2008-12-20 02:31+0900\n"
   "PO-Revision-Date: 2003-08-17 22:51+0900\n"
   "Last-Translator: Serge Stinckwich <Serge.Stinckwich@info.unicaen.fr>\n"
   "Language-Team: fr <fr@li.org>\n"
  @@ -113,7 +113,7 @@
   msgid "Title"
   msgstr "titre"
   
  -#: ../plugin/Blog.php:268 ../wikilib.php:908
  +#: ../plugin/Blog.php:268 ../wikilib.php:915
   msgid "GUI"
   msgstr ""
   
  @@ -209,7 +209,7 @@
   msgstr "commentaire"
   
   # ../wikilib.php:482
  -#: ../plugin/Comment.php:88 ../wikilib.php:904 ../monisetup.php:922
  +#: ../plugin/Comment.php:88 ../wikilib.php:911 ../monisetup.php:923
   msgid "Preview"
   msgstr "Prvisualisation"
   
  @@ -243,8 +243,8 @@
   msgid "You need a ticket !"
   msgstr ""
   
  -#: ../plugin/Comment.php:191 ../plugin/Gallery.php:171 ../plugin/bbs.php:1009
  -#: ../wikilib.php:1426 ../wikilib.php:1572
  +#: ../plugin/Comment.php:191 ../plugin/Gallery.php:174 ../plugin/bbs.php:1009
  +#: ../wikilib.php:1433 ../wikilib.php:1579
   msgid ""
   "Sorry, can not save page because some messages are blocked in this wiki."
   msgstr ""
  @@ -277,7 +277,7 @@
   msgstr ""
   
   # ../wiki.php:2338 ../wiki.php:2373 ../wikilib.php:770
  -#: ../plugin/Diff.php:223 ../wikilib.php:1559
  +#: ../plugin/Diff.php:223 ../wikilib.php:1566
   msgid "No difference found"
   msgstr "Aucune diffrence trouv"
   
  @@ -357,18 +357,18 @@
   
   # ../plugin/FastSearch.php:125
   #: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:38
  -#: ../wikilib.php:1347
  +#: ../wikilib.php:1354
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr "Trouv %s s'appariant avec %s sur un total de %s pages"
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1349
  +#: ../wikilib.php:1356
   msgid "page"
   msgstr ""
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1349
  +#: ../wikilib.php:1356
   msgid "pages"
   msgstr ""
   
  @@ -388,7 +388,7 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:124 ../wiki.php:4340
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:124 ../wiki.php:4426
   msgid "Refresh"
   msgstr ""
   
  @@ -405,8 +405,8 @@
   " ou cliquer sur %s pour faire une recherche en texte intgral de cette "
   "page.\n"
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5180 ../wiki.php:5187
  -#: ../wikilib.php:1357
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5281 ../wiki.php:5288
  +#: ../wikilib.php:1364
   msgid "here"
   msgstr ""
   
  @@ -422,7 +422,7 @@
   msgid "Case-sensitive searching"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:77 ../wikilib.php:2625 ../wikilib.php:2686
  +#: ../plugin/FullSearch.php:77 ../wikilib.php:2636 ../wikilib.php:2697
   msgid "Go"
   msgstr ""
   
  @@ -431,39 +431,39 @@
   msgstr ""
   
   # ../wikilib.php:1483
  -#: ../plugin/FullSearch.php:144 ../wikilib.php:2646
  +#: ../plugin/FullSearch.php:144 ../wikilib.php:2657
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "Expression de recherche \"%s\" invalide"
   
   # ../plugin/TwinPages.php:20
  -#: ../plugin/Gallery.php:242 ../plugin/UploadedFiles.php:257
  +#: ../plugin/Gallery.php:245 ../plugin/UploadedFiles.php:257
   msgid "No files found"
   msgstr ""
   
   # ../plugin/processor/blog.php:70
  -#: ../plugin/Gallery.php:334 ../plugin/Gallery.php:347
  +#: ../plugin/Gallery.php:337 ../plugin/Gallery.php:350
   msgid "add comment"
   msgstr ""
   
   # ../plugin/processor/blog.php:78
  -#: ../plugin/Gallery.php:344
  +#: ../plugin/Gallery.php:347
   msgid "show comments"
   msgstr ""
   
   # ../wikilib.php:769
  -#: ../plugin/Gallery.php:393 ../plugin/Gallery.php:397 ../wikilib.php:1413
  -#: ../wikilib.php:1557
  +#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1420
  +#: ../wikilib.php:1564
   #, c-format
   msgid "Go back or return to %s"
   msgstr "Revenir en arrire ou retourner  %s"
   
  -#: ../plugin/Gallery.php:394
  +#: ../plugin/Gallery.php:397
   msgid "Comments are edited"
   msgstr ""
   
   # ../plugin/Blog.php:137
  -#: ../plugin/Gallery.php:398
  +#: ../plugin/Gallery.php:401
   msgid "Comments is added"
   msgstr ""
   
  @@ -653,7 +653,7 @@
   msgstr ""
   
   # ../wikilib.php:672 ../wikilib.php:1472
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1238 ../wikilib.php:2633
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1245 ../wikilib.php:2644
   msgid "Use more specific text"
   msgstr "Utiliser un texte plus spcifique"
   
  @@ -771,11 +771,11 @@
   msgid "[%sh %sm ago]"
   msgstr ""
   
  -#: ../plugin/SWFUpload.php:116
  +#: ../plugin/SWFUpload.php:117
   msgid "Files..."
   msgstr ""
   
  -#: ../plugin/SWFUpload.php:117
  +#: ../plugin/SWFUpload.php:118
   msgid "Upload"
   msgstr ""
   
  @@ -874,7 +874,7 @@
   msgstr "TwinPages de %s"
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../plugin/TwinPages.php:19 ../wiki.php:5166
  +#: ../plugin/TwinPages.php:19 ../wiki.php:5267
   msgid "See [TwinPages]: "
   msgstr "Voir [TwinPages]: "
   
  @@ -966,12 +966,12 @@
   
   # ../plugin/rename.php:36
   #: ../plugin/UploadedFiles.php:414 ../plugin/rename.php:77
  -#: ../plugin/revert.php:82 ../wikilib.php:1077 ../wikilib.php:1967
  +#: ../plugin/revert.php:82 ../wikilib.php:1084 ../wikilib.php:1974
   msgid "Password"
   msgstr "Mot de passe"
   
   # ../wikilib.php:550
  -#: ../plugin/UploadedFiles.php:415 ../wikilib.php:1055
  +#: ../plugin/UploadedFiles.php:415 ../wikilib.php:1062
   msgid "Delete selected files"
   msgstr "Effacer les fichiers slectionns"
   
  @@ -995,7 +995,7 @@
   msgid "Voted successfully"
   msgstr "Vote russi"
   
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2379
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2390
   msgid "Others"
   msgstr ""
   
  @@ -1106,7 +1106,7 @@
   msgstr ""
   
   # ../locale/dummy.php:5
  -#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1078
  +#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1085
   msgid "Delete"
   msgstr ""
   
  @@ -1254,7 +1254,7 @@
   msgstr "Aucune page de manuel trouv"
   
   # ../plugin/minilogin.php:22 ../wikilib.php:1076
  -#: ../plugin/minilogin.php:18 ../wikilib.php:2043
  +#: ../plugin/minilogin.php:18 ../wikilib.php:2050
   msgid "Login or Join"
   msgstr "Se connecter ou se joindre "
   
  @@ -1328,11 +1328,11 @@
   msgid "Save Changes"
   msgstr "ChangementsRcents"
   
  -#: ../plugin/processor/monimarkup.php:489 ../wiki.php:3809
  +#: ../plugin/processor/monimarkup.php:489 ../wiki.php:3814
   msgid "edit"
   msgstr ""
   
  -#: ../plugin/processor/vim.php:58
  +#: ../plugin/processor/vim.php:75
   msgid "Toggle line numbers"
   msgstr ""
   
  @@ -1470,7 +1470,7 @@
   msgstr "Seulement le WikiMaster peut renommer cette page"
   
   # ../plugin/rename.php:39 ../wikilib.php:588
  -#: ../plugin/rename.php:79 ../wikilib.php:1123
  +#: ../plugin/rename.php:79 ../wikilib.php:1130
   msgid "with revision history"
   msgstr "avec l'historique de rvision"
   
  @@ -1518,7 +1518,7 @@
   msgid "Select a tarball file to restore"
   msgstr ""
   
  -#: ../plugin/revert.php:23 ../wiki.php:5182
  +#: ../plugin/revert.php:23 ../wiki.php:5283
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr ""
  @@ -1833,7 +1833,7 @@
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../plugin/userform.php:104 ../wikilib.php:2113
  +#: ../plugin/userform.php:104 ../wikilib.php:2120
   msgid "E-mail new password"
   msgstr ""
   
  @@ -1914,18 +1914,18 @@
   msgstr "Merci de rentrer d'abord votre adresse de messagerie"
   
   # ../wikilib.php:547
  -#: ../plugin/userform.php:238 ../plugin/userform.php:403
  +#: ../plugin/userform.php:238 ../plugin/userform.php:410
   msgid "Fail to register"
   msgstr ""
   
   # ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
   # c-format
  -#: ../plugin/userform.php:239 ../plugin/userform.php:404
  +#: ../plugin/userform.php:239 ../plugin/userform.php:411
   msgid "You are not allowed to register on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:240 ../plugin/userform.php:405 ../wiki.php:5120
  -#: ../wiki.php:5131
  +#: ../plugin/userform.php:240 ../plugin/userform.php:412 ../wiki.php:5221
  +#: ../wiki.php:5232
   msgid "Please contact WikiMasters"
   msgstr ""
   
  @@ -1993,27 +1993,27 @@
   msgid "Profiles are saved successfully !"
   msgstr ""
   
  -#: ../plugin/userform.php:379 ../plugin/userform.php:425
  +#: ../plugin/userform.php:386 ../plugin/userform.php:432
   #, c-format
   msgid "Authentication request was failed: %s"
   msgstr ""
   
  -#: ../plugin/userform.php:398
  +#: ../plugin/userform.php:405
   #, c-format
   msgid "Successfully login as '%s' via OpenID."
   msgstr ""
   
  -#: ../plugin/userform.php:412
  +#: ../plugin/userform.php:419
   #, c-format
   msgid "Your Nickname %s already used as ID in this Wiki."
   msgstr ""
   
  -#: ../plugin/userform.php:420
  +#: ../plugin/userform.php:427
   #, c-format
   msgid "OpenID Authentication successful and saved as %s."
   msgstr ""
   
  -#: ../plugin/userform.php:427
  +#: ../plugin/userform.php:434
   msgid "Invalid OpenID Authentication request"
   msgstr ""
   
  @@ -2051,140 +2051,140 @@
   msgstr ""
   
   # ../wikilib.php:521
  -#: ../wiki.php:2897 ../wiki.php:2908 ../wiki.php:5353
  +#: ../wiki.php:2902 ../wiki.php:2913 ../wiki.php:5457
   msgid "Invalid ajax action."
   msgstr ""
   
  -#: ../wiki.php:3398
  +#: ../wiki.php:3403
   msgid "Tags:"
   msgstr ""
   
   # ../wiki.php:1824
  -#: ../wiki.php:3426
  +#: ../wiki.php:3431
   #, c-format
   msgid "See %s"
   msgstr "Voir %s"
   
   # ../wiki.php:1824
  -#: ../wiki.php:3426
  +#: ../wiki.php:3431
   #, c-format
   msgid "TwinPages"
   msgstr ""
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../wiki.php:3431
  +#: ../wiki.php:3436
   msgid "See [TwinPages]:"
   msgstr "Voir [TwinPages]: "
   
  -#: ../wiki.php:3989
  +#: ../wiki.php:3994
   msgid "Sister Sites Index"
   msgstr ""
   
   # ../locale/dummy.php:6 ../wiki.php:2553
  -#: ../wiki.php:4336 ../locale/dummy.php:6
  +#: ../wiki.php:4422 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "ditionTexte"
   
   # ../wiki.php:2555
  -#: ../wiki.php:4338
  +#: ../wiki.php:4424
   msgid "NotEditable"
   msgstr "Pasditable"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wiki.php:4342 ../locale/dummy.php:6
  +#: ../wiki.php:4428 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "MontrePage"
   
   # ../locale/dummy.php:3 ../locale/dummy.php:5 ../wiki.php:2558
  -#: ../wiki.php:4343 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4429 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "TrouvePage"
   
  -#: ../wiki.php:4725
  +#: ../wiki.php:4811
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5119
  +#: ../wiki.php:5220
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5130
  +#: ../wiki.php:5231
   msgid "You are blocked in this wiki"
   msgstr ""
   
   # ../wiki.php:2945 ../wiki.php:2948
  -#: ../wiki.php:5168 ../wiki.php:5177 ../wikilib.php:1337
  +#: ../wiki.php:5269 ../wiki.php:5278 ../wikilib.php:1344
   msgid "Create this page"
   msgstr "Crer cette page"
   
   # ../wikilib.php:816
  -#: ../wiki.php:5179
  +#: ../wiki.php:5280
   #, c-format
   msgid "%s has saved revisions"
   msgstr "%s est sauvegard"
   
   # ../wiki.php:2950
  -#: ../wiki.php:5180 ../wiki.php:5187
  +#: ../wiki.php:5281 ../wiki.php:5288
   #, fuzzy, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr ""
   " ou cliquer sur %s pour faire une recherche en texte intgral de cette "
   "page.\n"
   
  -#: ../wiki.php:5185
  +#: ../wiki.php:5286
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr ""
   
  -#: ../wiki.php:5192
  +#: ../wiki.php:5293
   msgid "Please try to search with another word"
   msgstr ""
   
   # ../wiki.php:2956
  -#: ../wiki.php:5204
  +#: ../wiki.php:5305
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr "%s ou alternativement, utiliser un de ces modles de page :\n"
   
  -#: ../wiki.php:5207
  +#: ../wiki.php:5308
   msgid "You have no templates"
   msgstr ""
   
   # ../wikilib.php:427
  -#: ../wiki.php:5209
  +#: ../wiki.php:5310
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
   
  -#: ../wiki.php:5220
  +#: ../wiki.php:5321
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
   # ../wikilib.php:521
  -#: ../wiki.php:5355
  +#: ../wiki.php:5459
   msgid "Invalid macro action."
   msgstr ""
   
   # ../wiki.php:3009
  -#: ../wiki.php:5365
  +#: ../wiki.php:5469
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "Vous n'tes pas autoris  '%s'"
   
   # ../wiki.php:3021
  -#: ../wiki.php:5385
  +#: ../wiki.php:5489
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "Impossible de pouvoir \"%s\" !"
   
   # ../wiki.php:3024
  -#: ../wiki.php:5388
  +#: ../wiki.php:5492
   msgid "Please enter the valid password"
   msgstr "Merci d'entrer un mot de passe valide"
   
   # ../wikilib.php:368
  -#: ../wikilib.php:644
  +#: ../wikilib.php:651
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -2218,169 +2218,169 @@
   
   # ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
   # c-format
  -#: ../wikilib.php:681
  +#: ../wikilib.php:688
   msgid "You are not allowed to edit this page !"
   msgstr ""
   
  -#: ../wikilib.php:687
  +#: ../wikilib.php:694
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
   # ../wikilib.php:425
  -#: ../wikilib.php:793
  +#: ../wikilib.php:800
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   "Utiliser un des modles de pages qui suivent pour une premirecration :\n"
   
   # ../wikilib.php:427
  -#: ../wikilib.php:795
  +#: ../wikilib.php:802
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr ""
   
  -#: ../wikilib.php:799
  +#: ../wikilib.php:806
   msgid "Merge"
   msgstr ""
   
  -#: ../wikilib.php:800
  +#: ../wikilib.php:807
   msgid "Merge manually"
   msgstr ""
   
  -#: ../wikilib.php:801
  +#: ../wikilib.php:808
   msgid "Ignore conflicts"
   msgstr ""
   
   # ../wikilib.php:445
  -#: ../wikilib.php:828
  +#: ../wikilib.php:835
   msgid "ReduceEditor"
   msgstr "Rduirediteur"
   
  -#: ../wikilib.php:829
  +#: ../wikilib.php:836
   msgid "EnlargeEditor"
   msgstr ""
   
   # ../locale/dummy.php:6 ../wikilib.php:448
  -#: ../wikilib.php:833 ../locale/dummy.php:6
  +#: ../wikilib.php:840 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
   # ../wikilib.php:449
  -#: ../wikilib.php:835
  +#: ../wikilib.php:842
   msgid "HelpOnEditing"
   msgstr ""
   
   # ../wikilib.php:462
  -#: ../wikilib.php:867
  +#: ../wikilib.php:874
   #, c-format
   msgid "Describe %s here"
   msgstr "Dcrire %s ici"
   
   # ../wikilib.php:476
  -#: ../wikilib.php:887
  +#: ../wikilib.php:894
   msgid "--Select Category--"
   msgstr "-- Slectionner une catgorie"
   
  -#: ../wikilib.php:897
  +#: ../wikilib.php:904
   msgid "Minor edit"
   msgstr ""
   
   # ../wikilib.php:484
  -#: ../wikilib.php:901
  +#: ../wikilib.php:908
   msgid "Summary of Change"
   msgstr "Sommaire des modifications"
   
   # ../wikilib.php:443
  -#: ../wikilib.php:906
  +#: ../wikilib.php:913
   msgid "Skip to preview"
   msgstr "Aller  la prvisualisation"
   
   # ../wikilib.php:483 ../wikilib.php:1079
  -#: ../wikilib.php:916 ../wikilib.php:2046 ../wikilib.php:2100
  +#: ../wikilib.php:923 ../wikilib.php:2053 ../wikilib.php:2107
   msgid "Save"
   msgstr "Sauvegarder"
   
   # ../wikilib.php:517
  -#: ../wikilib.php:989
  +#: ../wikilib.php:996
   msgid "406 Not Acceptable"
   msgstr ""
   
   # ../wikilib.php:519
  -#: ../wikilib.php:994
  +#: ../wikilib.php:1001
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s n'est pas une action valide"
   
   # ../wikilib.php:521
  -#: ../wikilib.php:996
  +#: ../wikilib.php:1003
   msgid "Is it valid action ?"
   msgstr "Est-ce que c'est une action valide ?"
   
   # ../wikilib.php:540
  -#: ../wikilib.php:1043
  +#: ../wikilib.php:1050
   #, c-format
   msgid "File '%s' is deleted"
   msgstr "Le fichier '%s' est effac"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:1045
  +#: ../wikilib.php:1052
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr "Impossible d'effacer '%s'"
   
   # ../wikilib.php:545
  -#: ../wikilib.php:1050
  +#: ../wikilib.php:1057
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr "Le rpertoire '%s' est effac"
   
   # ../wikilib.php:547
  -#: ../wikilib.php:1052
  +#: ../wikilib.php:1059
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr "Impossible d'effacer le rpertoire '%s'"
   
   # ../wikilib.php:557 ../wikilib.php:559
  -#: ../wikilib.php:1062 ../wikilib.php:1082
  +#: ../wikilib.php:1069 ../wikilib.php:1089
   msgid "No files are selected !"
   msgstr "Aucun fichier n'est slectionn !"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:1075
  +#: ../wikilib.php:1082
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
   # ../wikilib.php:550
  -#: ../wikilib.php:1079
  +#: ../wikilib.php:1086
   msgid "Delete selected file"
   msgstr ""
   
   # ../wikilib.php:575
  -#: ../wikilib.php:1100
  +#: ../wikilib.php:1107
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr "\"%s\" est effac !"
   
   # ../wikilib.php:581
  -#: ../wikilib.php:1115
  +#: ../wikilib.php:1122
   msgid "Please delete this file manually."
   msgstr "Merci d'effacer ce fichier manuellement."
   
   # ../wikilib.php:583
  -#: ../wikilib.php:1117
  +#: ../wikilib.php:1124
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "Effacer \"%s\" ?"
   
   # ../plugin/minilogin.php:30
  -#: ../wikilib.php:1170
  +#: ../wikilib.php:1177
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
   # ../wiki.php:2950
  -#: ../wikilib.php:1339
  +#: ../wikilib.php:1346
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
  @@ -2388,16 +2388,16 @@
   "page.\n"
   
   # ../wiki.php:2950
  -#: ../wikilib.php:1339
  +#: ../wikilib.php:1346
   msgid "title"
   msgstr "titre"
   
  -#: ../wikilib.php:1353
  +#: ../wikilib.php:1360
   msgid "Please try to fulltext search"
   msgstr ""
   
   # ../wiki.php:2950
  -#: ../wikilib.php:1356
  +#: ../wikilib.php:1363
   #, fuzzy, c-format
   msgid "You can also click %s to fulltext search.\n"
   msgstr ""
  @@ -2405,119 +2405,119 @@
   "page.\n"
   
   # ../wikilib.php:743
  -#: ../wikilib.php:1401 ../wikilib.php:1502
  +#: ../wikilib.php:1408 ../wikilib.php:1509
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "Quelqu'un a sauvegard la page tandis que vous ditiez %s"
   
  -#: ../wikilib.php:1407
  +#: ../wikilib.php:1414
   msgid "Section edit is not valid for non-exists page."
   msgstr ""
   
   # ../wikilib.php:803
  -#: ../wikilib.php:1440 ../wikilib.php:1618
  +#: ../wikilib.php:1447 ../wikilib.php:1625
   msgid "mail does not supported by default."
   msgstr "La messagerie n'est pas support par dfaut."
   
   # ../wikilib.php:807
  -#: ../wikilib.php:1444 ../wikilib.php:1622
  +#: ../wikilib.php:1451 ../wikilib.php:1629
   msgid "Sent notification mail."
   msgstr "Des notifications par messagerie ont t envoyes."
   
   # ../wikilib.php:809
  -#: ../wikilib.php:1446 ../wikilib.php:1624
  +#: ../wikilib.php:1453 ../wikilib.php:1631
   msgid "No subscribers found."
   msgstr "Aucun abonn trouv."
   
   # ../wikilib.php:814
  -#: ../wikilib.php:1451 ../wikilib.php:1629
  +#: ../wikilib.php:1458 ../wikilib.php:1636
   #, c-format
   msgid "%s is not editable"
   msgstr "%s n'est pas ditable"
   
   # ../wikilib.php:816
  -#: ../wikilib.php:1453 ../wikilib.php:1631
  +#: ../wikilib.php:1460 ../wikilib.php:1638
   #, c-format
   msgid "%s is saved"
   msgstr "%s est sauvegard"
   
   # ../wikilib.php:734
  -#: ../wikilib.php:1493
  +#: ../wikilib.php:1500
   msgid "Goto Editor"
   msgstr "Aller  l'diteur"
   
  -#: ../wikilib.php:1507
  +#: ../wikilib.php:1514
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr ""
   
   # ../plugin/Vote.php:109
  -#: ../wikilib.php:1508
  +#: ../wikilib.php:1515
   #, c-format
   msgid "%s is merged successfully"
   msgstr ""
   
  -#: ../wikilib.php:1512
  +#: ../wikilib.php:1519
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1513
  +#: ../wikilib.php:1520
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr ""
   
  -#: ../wikilib.php:1514
  +#: ../wikilib.php:1521
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1515
  +#: ../wikilib.php:1522
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1520
  +#: ../wikilib.php:1527
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr ""
   
   # ../wikilib.php:581
  -#: ../wikilib.php:1521
  +#: ../wikilib.php:1528
   msgid "Please resolve conflicts manually."
   msgstr ""
   
  -#: ../wikilib.php:1524
  +#: ../wikilib.php:1531
   #, c-format
   msgid "Force merging for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1525
  +#: ../wikilib.php:1532
   msgid "Please be careful, you could damage useful information."
   msgstr ""
   
   # ../wikilib.php:755
  -#: ../wikilib.php:1539
  +#: ../wikilib.php:1546
   msgid "Conflict error!"
   msgstr "Erreur de conflit !"
   
   # ../wikilib.php:748 ../wikilib.php:777
  -#: ../wikilib.php:1578
  +#: ../wikilib.php:1585
   #, c-format
   msgid "Preview of %s"
   msgstr "Prvisualisation de %s"
   
   # ../wikilib.php:838
  -#: ../wikilib.php:1663
  +#: ../wikilib.php:1670
   msgid "Nobody subscribed to this page."
   msgstr "Personne n'est abonn  cette page, aucun mail envoy"
   
   # ../wikilib.php:860
  -#: ../wikilib.php:1682
  +#: ../wikilib.php:1689
   #, c-format
   msgid "%s page is modified"
   msgstr "la page %s est modifi"
   
   # ../wikilib.php:870
  -#: ../wikilib.php:1711
  +#: ../wikilib.php:1718
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
  @@ -2528,101 +2528,101 @@
   "\n"
   
   # ../wikilib.php:883
  -#: ../wikilib.php:1724
  +#: ../wikilib.php:1731
   msgid "Send notification mails to all subscribers"
   msgstr "Envoyez un mail de notification  tous les abonns"
   
   # ../wikilib.php:887
  -#: ../wikilib.php:1729
  +#: ../wikilib.php:1736
   msgid "Mails are sent successfully"
   msgstr "Mail envoy avec succs"
   
   # ../wikilib.php:888
  -#: ../wikilib.php:1730
  +#: ../wikilib.php:1737
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr "un mail a t envoy  '%s'"
   
   # ../wiki.php:3021
  -#: ../wikilib.php:1732
  +#: ../wikilib.php:1739
   msgid "Fail to send mail"
   msgstr ""
   
   # ../wikilib.php:803
  -#: ../wikilib.php:1743
  +#: ../wikilib.php:1750
   msgid "This wiki does not support sendmail"
   msgstr ""
   
   # ../wikilib.php:1483
  -#: ../wikilib.php:1841
  +#: ../wikilib.php:1848
   msgid "Invalid regular expression !"
   msgstr ""
   
  -#: ../wikilib.php:1865
  +#: ../wikilib.php:1872
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:1868
  +#: ../wikilib.php:1875
   msgid "Infinite loop possible!"
   msgstr ""
   
   # ../plugin/login.php:26 ../wikilib.php:1051
  -#: ../wikilib.php:1983
  +#: ../wikilib.php:1990
   msgid "Login"
   msgstr "Se connecter"
   
  -#: ../wikilib.php:1984
  +#: ../wikilib.php:1991
   msgid "OpenID"
   msgstr ""
   
  -#: ../wikilib.php:1996 ../wikilib.php:2118
  +#: ../wikilib.php:2003 ../wikilib.php:2125
   msgid "ID"
   msgstr ""
   
   # ../wikilib.php:1070
  -#: ../wikilib.php:2026 ../wikilib.php:2111
  +#: ../wikilib.php:2033 ../wikilib.php:2118
   msgid "Make profile"
   msgstr "Faire un profil"
   
   # ../wikilib.php:1071
  -#: ../wikilib.php:2028
  +#: ../wikilib.php:2035
   msgid "password again"
   msgstr "mot de passe de nouveau"
   
  -#: ../wikilib.php:2030 ../wikilib.php:2079
  +#: ../wikilib.php:2037 ../wikilib.php:2086
   msgid "Mail"
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../wikilib.php:2052
  +#: ../wikilib.php:2059
   msgid "New password"
   msgstr "Nouveau mot de passe"
   
  -#: ../wikilib.php:2057
  +#: ../wikilib.php:2064
   msgid "Nickname"
   msgstr ""
   
  -#: ../wikilib.php:2080
  +#: ../wikilib.php:2087
   msgid "Time Zone"
   msgstr ""
   
   # ../wikilib.php:1088
  -#: ../wikilib.php:2089
  +#: ../wikilib.php:2096
   msgid "logout"
   msgstr "se dconnecter"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wikilib.php:2380
  +#: ../wikilib.php:2391
   msgid "Show all"
   msgstr ""
   
   # ../locale/dummy.php:4
  -#: ../wikilib.php:2522
  +#: ../wikilib.php:2533
   msgid "Contents"
   msgstr ""
   
   # ../wikilib.php:1479
  -#: ../wikilib.php:2642
  +#: ../wikilib.php:2653
   #, c-format
   msgid "Title search for \"%s\""
   msgstr "Recherche de titre pour \"%s\""
  @@ -2709,148 +2709,148 @@
   msgstr "%s n'est pas ditable"
   
   # ../wikilib.php:814
  -#: ../monisetup.php:303
  +#: ../monisetup.php:304
   #, fuzzy, c-format
   msgid "%s is not writable"
   msgstr "%s n'est pas ditable"
   
   # ../plugin/rename.php:14
  -#: ../monisetup.php:310 ../monisetup.php:316
  +#: ../monisetup.php:311 ../monisetup.php:317
   #, fuzzy, c-format
   msgid "%s is created now"
   msgstr "\"%s\" est renomm !"
   
   # ../wikilib.php:814
  -#: ../monisetup.php:326
  +#: ../monisetup.php:327
   #, fuzzy, c-format
   msgid "%s is writable"
   msgstr "%s n'est pas ditable"
   
  -#: ../monisetup.php:426
  +#: ../monisetup.php:427
   msgid "Click here to toggle all"
   msgstr ""
   
   # ../wikilib.php:550
  -#: ../monisetup.php:427
  +#: ../monisetup.php:428
   #, fuzzy
   msgid "Deselect all"
   msgstr "Effacer les fichiers slectionns"
   
  -#: ../monisetup.php:432
  +#: ../monisetup.php:433
   msgid "Please be careful to deselect these pages"
   msgstr ""
   
  -#: ../monisetup.php:706
  +#: ../monisetup.php:707
   msgid "MoniWiki"
   msgstr ""
   
  -#: ../monisetup.php:709
  +#: ../monisetup.php:710
   msgid "'config.php' is not writable !"
   msgstr ""
   
  -#: ../monisetup.php:710
  +#: ../monisetup.php:711
   msgid ""
   "Please execute <tt>'monisetup.sh'</tt> or <tt>chmod a+w config.php</tt> "
   "first to change your settings."
   msgstr ""
   
   # ../wiki.php:3024
  -#: ../monisetup.php:737
  +#: ../monisetup.php:738
   #, fuzzy
   msgid "Invalid password error !"
   msgstr "Merci d'entrer un mot de passe valide"
   
  -#: ../monisetup.php:738
  +#: ../monisetup.php:739
   msgid ""
   "If you can't remember your admin password, delete password entry in the "
   "'config.php' and restart 'monisetup'"
   msgstr ""
   
  -#: ../monisetup.php:770
  +#: ../monisetup.php:771
   #, c-format
   msgid "Updated Configutations for this %s"
   msgstr ""
   
   # ../wikilib.php:887
  -#: ../monisetup.php:789
  +#: ../monisetup.php:790
   #, fuzzy
   msgid "Configurations are saved successfully"
   msgstr "Mail envoy avec succs"
   
  -#: ../monisetup.php:790
  +#: ../monisetup.php:791
   msgid ""
   "WARN: Please check <a href='monisetup.php'> your saved configurations</a>"
   msgstr ""
   
  -#: ../monisetup.php:791
  +#: ../monisetup.php:792
   msgid "If all is good, change 'config.php' permission as 644."
   msgstr ""
   
  -#: ../monisetup.php:803
  +#: ../monisetup.php:804
   msgid "Welcome to MoniWiki ! This is your first installation"
   msgstr ""
   
  -#: ../monisetup.php:810
  +#: ../monisetup.php:811
   msgid "Default settings are loaded..."
   msgstr ""
   
   # ../wikilib.php:887
  -#: ../monisetup.php:819
  +#: ../monisetup.php:820
   #, fuzzy
   msgid "Initial configurations are saved successfully."
   msgstr "Mail envoy avec succs"
   
  -#: ../monisetup.php:820
  +#: ../monisetup.php:821
   msgid "Goto <a href='monisetup.php'>MoniSetup</a> again to configure details"
   msgstr ""
   
   # ../plugin/minilogin.php:30
  -#: ../monisetup.php:837 ../monisetup.php:839 ../monisetup.php:935
  -#: ../monisetup.php:937
  +#: ../monisetup.php:838 ../monisetup.php:840 ../monisetup.php:936
  +#: ../monisetup.php:938
   #, fuzzy, c-format
   msgid "goto %s"
   msgstr "ou %s"
   
   # ../wikilib.php:557 ../wikilib.php:559
  -#: ../monisetup.php:842
  +#: ../monisetup.php:843
   #, fuzzy
   msgid "No WikiSeeds are selected"
   msgstr "Aucun fichier n'est slectionn !"
   
  -#: ../monisetup.php:853
  +#: ../monisetup.php:854
   #, c-format
   msgid "Preview current settings for this %s"
   msgstr ""
   
  -#: ../monisetup.php:855
  +#: ../monisetup.php:856
   #, c-format
   msgid "Read current settings for this %s"
   msgstr ""
   
  -#: ../monisetup.php:883
  +#: ../monisetup.php:884
   msgid "Change your settings"
   msgstr ""
   
  -#: ../monisetup.php:885
  +#: ../monisetup.php:886
   msgid "WARN: You have to enter your Admin Password"
   msgstr ""
   
  -#: ../monisetup.php:887 ../monisetup.php:930
  +#: ../monisetup.php:888 ../monisetup.php:931
   #, c-format
   msgid "WARN: You have no WikiSeed on your %s"
   msgstr ""
   
   # ../plugin/quicklinks.php:50
  -#: ../monisetup.php:888 ../monisetup.php:931
  +#: ../monisetup.php:889 ../monisetup.php:932
   #, fuzzy, c-format
   msgid "If you want to put wikiseeds on your wiki %s now"
   msgstr "Voulez vous mettre  jour vos liens rapides ?"
   
  -#: ../monisetup.php:889 ../monisetup.php:932
  +#: ../monisetup.php:890 ../monisetup.php:933
   msgid "Click here"
   msgstr ""
   
  -#: ../monisetup.php:924 ../monisetup.php:926
  +#: ../monisetup.php:925 ../monisetup.php:927
   msgid "Update"
   msgstr ""
   
  
  
  
  1.26      +214 -214  moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- ko.po	16 Dec 2008 12:37:18 -0000	1.25
  +++ ko.po	20 Dec 2008 04:37:50 -0000	1.26
  @@ -5,7 +5,7 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1.3\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2008-12-16 21:07+0900\n"
  +"POT-Creation-Date: 2008-12-20 02:31+0900\n"
   "PO-Revision-Date: 2008-12-11 12:20+0900\n"
   "Last-Translator: Won-Kyu Park <wkpark@kldp.org>\n"
   "Language-Team: Won-Kyu Park <wkpark@kldp.org>\n"
  @@ -99,7 +99,7 @@
   msgid "Title"
   msgstr "제목"
   
  -#: ../plugin/Blog.php:268 ../wikilib.php:908
  +#: ../plugin/Blog.php:268 ../wikilib.php:915
   msgid "GUI"
   msgstr ""
   
  @@ -180,7 +180,7 @@
   msgid "Comment"
   msgstr "댓글 달기"
   
  -#: ../plugin/Comment.php:88 ../wikilib.php:904 ../monisetup.php:922
  +#: ../plugin/Comment.php:88 ../wikilib.php:911 ../monisetup.php:923
   msgid "Preview"
   msgstr "미리보기"
   
  @@ -210,8 +210,8 @@
   msgid "You need a ticket !"
   msgstr "티켓이 필요합니다 !"
   
  -#: ../plugin/Comment.php:191 ../plugin/Gallery.php:171 ../plugin/bbs.php:1009
  -#: ../wikilib.php:1426 ../wikilib.php:1572
  +#: ../plugin/Comment.php:191 ../plugin/Gallery.php:174 ../plugin/bbs.php:1009
  +#: ../wikilib.php:1433 ../wikilib.php:1579
   msgid ""
   "Sorry, can not save page because some messages are blocked in this wiki."
   msgstr "죄송합니다. 특정 메시지가 금지되어 페이지를 저장할 수 없습니다."
  @@ -238,7 +238,7 @@
   msgid "Version info is not available in this wiki"
   msgstr "버전 정보는 현 위키에서 사용할 수 없습니다"
   
  -#: ../plugin/Diff.php:223 ../wikilib.php:1559
  +#: ../plugin/Diff.php:223 ../wikilib.php:1566
   msgid "No difference found"
   msgstr "변화가 없습니다"
   
  @@ -305,18 +305,18 @@
   msgstr "\"%s\"을(를) 전체 찾아보기"
   
   #: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:38
  -#: ../wikilib.php:1347
  +#: ../wikilib.php:1354
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr "%3$s의 페이지중에 %1$s개가 발견되었습니다"
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1349
  +#: ../wikilib.php:1356
   msgid "page"
   msgstr "페이지"
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1349
  +#: ../wikilib.php:1356
   msgid "pages"
   msgstr "페이지"
   
  @@ -334,7 +334,7 @@
   msgid "Show Context."
   msgstr "문맥 보기."
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:124 ../wiki.php:4340
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:124 ../wiki.php:4426
   msgid "Refresh"
   msgstr "갱신"
   
  @@ -348,8 +348,8 @@
   msgid "You can also click %s to search title.\n"
   msgstr "%s을 눌러 제목 찾기를 할 수 있습니다.\n"
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5180 ../wiki.php:5187
  -#: ../wikilib.php:1357
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5281 ../wiki.php:5288
  +#: ../wikilib.php:1364
   msgid "here"
   msgstr "여기"
   
  @@ -365,7 +365,7 @@
   msgid "Case-sensitive searching"
   msgstr "대소문자 구별"
   
  -#: ../plugin/FullSearch.php:77 ../wikilib.php:2625 ../wikilib.php:2686
  +#: ../plugin/FullSearch.php:77 ../wikilib.php:2636 ../wikilib.php:2697
   msgid "Go"
   msgstr "가기"
   
  @@ -373,34 +373,34 @@
   msgid "Empty expression"
   msgstr "비어있는 표현식"
   
  -#: ../plugin/FullSearch.php:144 ../wikilib.php:2646
  +#: ../plugin/FullSearch.php:144 ../wikilib.php:2657
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "잘못된 찾기 표현식 \"%s\""
   
  -#: ../plugin/Gallery.php:242 ../plugin/UploadedFiles.php:257
  +#: ../plugin/Gallery.php:245 ../plugin/UploadedFiles.php:257
   msgid "No files found"
   msgstr "페이지가 없습니다"
   
  -#: ../plugin/Gallery.php:334 ../plugin/Gallery.php:347
  +#: ../plugin/Gallery.php:337 ../plugin/Gallery.php:350
   msgid "add comment"
   msgstr "댓글 달기"
   
  -#: ../plugin/Gallery.php:344
  +#: ../plugin/Gallery.php:347
   msgid "show comments"
   msgstr "댓글 보기"
   
  -#: ../plugin/Gallery.php:393 ../plugin/Gallery.php:397 ../wikilib.php:1413
  -#: ../wikilib.php:1557
  +#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1420
  +#: ../wikilib.php:1564
   #, c-format
   msgid "Go back or return to %s"
   msgstr "뒤로 혹은 %s(으)로 가기"
   
  -#: ../plugin/Gallery.php:394
  +#: ../plugin/Gallery.php:397
   msgid "Comments are edited"
   msgstr "댓글이 편집되었습니다"
   
  -#: ../plugin/Gallery.php:398
  +#: ../plugin/Gallery.php:401
   msgid "Comments is added"
   msgstr "댓글이 더해졌습니다"
   
  @@ -576,7 +576,7 @@
   msgid "Select keywords for %s"
   msgstr "%s에 대해 키워드를 고르세요"
   
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1238 ../wikilib.php:2633
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1245 ../wikilib.php:2644
   msgid "Use more specific text"
   msgstr "좀 더 자세히 입력하세요"
   
  @@ -685,11 +685,11 @@
   msgid "[%sh %sm ago]"
   msgstr "[%s시간 %s분 전]"
   
  -#: ../plugin/SWFUpload.php:116
  +#: ../plugin/SWFUpload.php:117
   msgid "Files..."
   msgstr "파일..."
   
  -#: ../plugin/SWFUpload.php:117
  +#: ../plugin/SWFUpload.php:118
   msgid "Upload"
   msgstr "올리기"
   
  @@ -779,7 +779,7 @@
   msgid "TwinPages of %s"
   msgstr "%s의 쌍둥이 페이지"
   
  -#: ../plugin/TwinPages.php:19 ../wiki.php:5166
  +#: ../plugin/TwinPages.php:19 ../wiki.php:5267
   msgid "See [TwinPages]: "
   msgstr ""
   
  @@ -862,11 +862,11 @@
   msgstr "총 %d 개 파일"
   
   #: ../plugin/UploadedFiles.php:414 ../plugin/rename.php:77
  -#: ../plugin/revert.php:82 ../wikilib.php:1077 ../wikilib.php:1967
  +#: ../plugin/revert.php:82 ../wikilib.php:1084 ../wikilib.php:1974
   msgid "Password"
   msgstr "비밀번호"
   
  -#: ../plugin/UploadedFiles.php:415 ../wikilib.php:1055
  +#: ../plugin/UploadedFiles.php:415 ../wikilib.php:1062
   msgid "Delete selected files"
   msgstr "선택된 파일 지우기"
   
  @@ -886,7 +886,7 @@
   msgid "Voted successfully"
   msgstr "투표가 성공되었습니다"
   
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2379
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2390
   msgid "Others"
   msgstr ""
   
  @@ -990,7 +990,7 @@
   msgid "Edit"
   msgstr "고치기"
   
  -#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1078
  +#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1085
   msgid "Delete"
   msgstr "지우기"
   
  @@ -1120,7 +1120,7 @@
   msgid "No manpage found"
   msgstr "Manpage가 없습니다"
   
  -#: ../plugin/minilogin.php:18 ../wikilib.php:2043
  +#: ../plugin/minilogin.php:18 ../wikilib.php:2050
   msgid "Login or Join"
   msgstr "로그인 혹은 가입"
   
  @@ -1186,11 +1186,11 @@
   msgid "Save Changes"
   msgstr "변경 저장"
   
  -#: ../plugin/processor/monimarkup.php:489 ../wiki.php:3809
  +#: ../plugin/processor/monimarkup.php:489 ../wiki.php:3814
   msgid "edit"
  -msgstr ""
  +msgstr "편집"
   
  -#: ../plugin/processor/vim.php:58
  +#: ../plugin/processor/vim.php:75
   msgid "Toggle line numbers"
   msgstr "줄번호 토글"
   
  @@ -1212,11 +1212,11 @@
   
   #: ../plugin/quicklinks.php:38
   msgid "QucikLinks are updated."
  -msgstr ""
  +msgstr "바로가기가 갱신되었습니다."
   
   #: ../plugin/quicklinks.php:50
   msgid "Do you want to customize your quicklinks ?"
  -msgstr "QuickLinks를 바꾸고 싶으신가요?"
  +msgstr "바로가기를 바꾸고 싶으신가요?"
   
   #: ../plugin/rawblog.php:63 ../plugin/rawblog.php:73
   #, c-format
  @@ -1245,16 +1245,16 @@
   
   #: ../plugin/rcs.php:47
   msgid "Only WikiMaster can execute rcs"
  -msgstr ""
  +msgstr "위키관리자만이 rcs를 실행할 수 있습니다"
   
   #: ../plugin/rcspurge.php:24
   msgid "Invalid rcspurge range"
  -msgstr ""
  +msgstr "잘못된 rcspurge 범위"
   
   #: ../plugin/rcspurge.php:29
   #, c-format
   msgid "RCS purge \"%s\""
  -msgstr ""
  +msgstr "RCS 삭제 \"%s\""
   
   #: ../plugin/rdf_blog.php:30 ../plugin/rss_blog.php:25
   msgid "Blog Changes"
  @@ -1284,7 +1284,7 @@
   #: ../plugin/rename.php:51
   #, c-format
   msgid "Fail to rename \"%s\" !"
  -msgstr ""
  +msgstr "\"%s\" 이름바꾸기 실패 !"
   
   #: ../plugin/rename.php:58
   #, c-format
  @@ -1305,19 +1305,19 @@
   
   #: ../plugin/rename.php:78
   msgid "Only WikiMaster can rename this page"
  -msgstr ""
  +msgstr "위키관리자만이 페이지 이름을 바꿀 수 있습니다"
   
  -#: ../plugin/rename.php:79 ../wikilib.php:1123
  +#: ../plugin/rename.php:79 ../wikilib.php:1130
   msgid "with revision history"
   msgstr "버전 히스토리와 함께"
   
   #: ../plugin/rename.php:82
   msgid "Check backlinks"
  -msgstr ""
  +msgstr "역링크 검사"
   
   #: ../plugin/restore.php:23
   msgid "Error: Don't try to overwrite it"
  -msgstr ""
  +msgstr "오류: 덮어쓰기는 허락되지 않습니다"
   
   #: ../plugin/restore.php:24
   msgid "Please rename your old 'text_dir' first."
  @@ -1325,16 +1325,16 @@
   
   #: ../plugin/restore.php:25
   msgid "e.g. \\$ mv data/text data/text_old"
  -msgstr ""
  +msgstr "예. \\$ mv data/text data/text_old"
   
   #: ../plugin/restore.php:29
   msgid "Error: tarball does not exists"
  -msgstr ""
  +msgstr "오류: tarball이 없습니다"
   
   #: ../plugin/restore.php:34
   #, c-format
   msgid "Restore %s"
  -msgstr ""
  +msgstr "%s(을)를 Restore하기"
   
   #: ../plugin/restore.php:50
   #, c-format
  @@ -1343,16 +1343,16 @@
   
   #: ../plugin/restore.php:67
   msgid "Restore backuped data"
  -msgstr ""
  +msgstr "백업된 데이타를 restore하기"
   
   #: ../plugin/restore.php:68
   msgid "Select a tarball file to restore"
  -msgstr ""
  +msgstr "Restore하기 위한 tarball 파일을 고르세요"
   
  -#: ../plugin/revert.php:23 ../wiki.php:5182
  +#: ../plugin/revert.php:23 ../wiki.php:5283
   #, c-format
   msgid "Old Revisions of the %s"
  -msgstr ""
  +msgstr "%s의 옛날 버전"
   
   #: ../plugin/revert.php:57
   msgid "No version control available."
  @@ -1386,12 +1386,12 @@
   
   #: ../plugin/revert.php:79
   msgid "Revert page"
  -msgstr ""
  +msgstr "페이지 되돌리기"
   
   #: ../plugin/revert.php:80
   #, c-format
   msgid "Only WikiMaster can %s this page"
  -msgstr ""
  +msgstr "위키 관리자만 이 페이지를 %s 할 수 있습니다"
   
   #: ../plugin/revert.php:80
   #, c-format
  @@ -1418,7 +1418,7 @@
   
   #: ../plugin/security/acl.php:223
   msgid "Please contact WikiMasters :b"
  -msgstr ""
  +msgstr "위키 관리자와 연락해주세요 :b"
   
   #: ../plugin/security/authbasic.php:68
   #, c-format
  @@ -1427,7 +1427,7 @@
   
   #: ../plugin/security/authbasic.php:71
   msgid "You must enter a valid login ID and password to access this resource.\n"
  -msgstr ""
  +msgstr "ID와 비밀번호가 유효해야 접근을 할 수 있습니다.\n"
   
   #: ../plugin/security/community.php:60 ../plugin/security/htaccesslogin.php:46
   #: ../plugin/security/mustlogin.php:66 ../plugin/security/userbased.php:28
  @@ -1440,25 +1440,25 @@
   
   #: ../plugin/security/htaccesslogin.php:47
   msgid "Please contact the system administrator for htaccess based logins."
  -msgstr ""
  +msgstr "htaccess 기반 관리를 위해 시스템 관리자에게 연락을 취하세요."
   
   #: ../plugin/security/userbased.php:29 ../plugin/security/userbased.php:37
   #: ../plugin/security/userbased.php:45 ../plugin/security/wikimaster.php:30
   #: ../plugin/security/wikimaster.php:39 ../plugin/security/wikimaster.php:48
   msgid "Please contact to WikiMaster"
  -msgstr ""
  +msgstr "위키 관리자에게 연락하세요"
   
   #: ../plugin/sendping.php:13 ../plugin/trackback.php:40
   msgid "Error: Page Not found !"
  -msgstr ""
  +msgstr "오류: 페이지가 없습니다 !"
   
   #: ../plugin/sendping.php:54
   msgid "Error: No entry found!"
  -msgstr ""
  +msgstr "오류: 엔트리를 찾을 수 없습니다!"
   
   #: ../plugin/sendping.php:71
   msgid "Send TrackBack ping"
  -msgstr ""
  +msgstr "트랙백 핑 보내기"
   
   #: ../plugin/sendping.php:165
   msgid "Trackback sent"
  @@ -1466,7 +1466,7 @@
   
   #: ../plugin/subscribe.php:24 ../plugin/subscribe.php:28
   msgid "You did'nt subscribed any pages yet."
  -msgstr ""
  +msgstr "아직 구독중인 페이지가 없습니다."
   
   #: ../plugin/subscribe.php:35
   msgid "No subscribed pages found."
  @@ -1474,7 +1474,7 @@
   
   #: ../plugin/subscribe.php:42
   msgid "EmailNotification is not activated"
  -msgstr "EmailNotification이 활성화되지 않았습니다 !"
  +msgstr "EmailNotification이 활성화되지 않았습니다"
   
   #: ../plugin/subscribe.php:43
   msgid ""
  @@ -1503,7 +1503,7 @@
   #: ../plugin/subscribe.php:91
   #, c-format
   msgid "\"%s\" is already subscribed."
  -msgstr ""
  +msgstr "\"%s\"(은)는 이미 구독중입니다."
   
   #: ../plugin/subscribe.php:100
   #, c-format
  @@ -1549,20 +1549,20 @@
   #: ../plugin/trackback.php:57
   #, c-format
   msgid "TrackBack list of %s"
  -msgstr ""
  +msgstr "%s의 트랙백 리스트"
   
   #: ../plugin/trackback.php:61 ../plugin/trackback.php:78
   msgid "TrackBack URL for this page:"
  -msgstr ""
  +msgstr "이 페이지에 대한 트랙백 URL"
   
   #: ../plugin/trackback.php:62 ../plugin/trackback.php:79
   msgid "Send TrackBack Ping to another Blog:"
  -msgstr ""
  +msgstr "다른 블로그에 트랙백 보내기"
   
   #: ../plugin/trackback.php:77
   #, c-format
   msgid "No TrackBack entry found for %s"
  -msgstr ""
  +msgstr "%s에 대한 트랙백 항목을 찾을 수 없음"
   
   #: ../plugin/useradmin.php:21
   #, c-format
  @@ -1611,17 +1611,17 @@
   #: ../plugin/userform.php:93
   #, c-format
   msgid "\"%s\" does not exists on this wiki !"
  -msgstr ""
  +msgstr "\"%s\"은 이 위에에 없습니다 !"
   
   #: ../plugin/userform.php:95
   msgid "Make new ID on this wiki"
  -msgstr ""
  +msgstr "새로운 ID 만들기"
   
   #: ../plugin/userform.php:101
   msgid "Cookie deleted !"
   msgstr "쿠키가 지워졌습니다 !"
   
  -#: ../plugin/userform.php:104 ../wikilib.php:2113
  +#: ../plugin/userform.php:104 ../wikilib.php:2120
   msgid "E-mail new password"
   msgstr "새 비밀번호 받기"
   
  @@ -1694,16 +1694,16 @@
   msgid "Your email address is not valid"
   msgstr "이메일 주소가 잘못 되었습니다"
   
  -#: ../plugin/userform.php:238 ../plugin/userform.php:403
  +#: ../plugin/userform.php:238 ../plugin/userform.php:410
   msgid "Fail to register"
   msgstr "등록을 실패했습니다"
   
  -#: ../plugin/userform.php:239 ../plugin/userform.php:404
  +#: ../plugin/userform.php:239 ../plugin/userform.php:411
   msgid "You are not allowed to register on this wiki"
   msgstr "위키 등록이 허락되지 않았습니다"
   
  -#: ../plugin/userform.php:240 ../plugin/userform.php:405 ../wiki.php:5120
  -#: ../wiki.php:5131
  +#: ../plugin/userform.php:240 ../plugin/userform.php:412 ../wiki.php:5221
  +#: ../wiki.php:5232
   msgid "Please contact WikiMasters"
   msgstr "위키관리자에게 문의하세요"
   
  @@ -1769,27 +1769,27 @@
   msgid "Profiles are saved successfully !"
   msgstr "설정이 성공적으로 저장되었습니다 !"
   
  -#: ../plugin/userform.php:379 ../plugin/userform.php:425
  +#: ../plugin/userform.php:386 ../plugin/userform.php:432
   #, c-format
   msgid "Authentication request was failed: %s"
   msgstr ""
   
  -#: ../plugin/userform.php:398
  +#: ../plugin/userform.php:405
   #, c-format
   msgid "Successfully login as '%s' via OpenID."
   msgstr "성공적으로 오픈ID '%s'(으)로 로그인되었습니다"
   
  -#: ../plugin/userform.php:412
  +#: ../plugin/userform.php:419
   #, c-format
   msgid "Your Nickname %s already used as ID in this Wiki."
   msgstr ""
   
  -#: ../plugin/userform.php:420
  +#: ../plugin/userform.php:427
   #, c-format
   msgid "OpenID Authentication successful and saved as %s."
   msgstr ""
   
  -#: ../plugin/userform.php:427
  +#: ../plugin/userform.php:434
   msgid "Invalid OpenID Authentication request"
   msgstr ""
   
  @@ -1821,122 +1821,122 @@
   msgid "File '%s' does not exist."
   msgstr "파일 '%s'이(가) 없습니다"
   
  -#: ../wiki.php:2897 ../wiki.php:2908 ../wiki.php:5353
  +#: ../wiki.php:2902 ../wiki.php:2913 ../wiki.php:5457
   msgid "Invalid ajax action."
   msgstr "잘못된 ajax 액션."
   
  -#: ../wiki.php:3398
  +#: ../wiki.php:3403
   msgid "Tags:"
   msgstr "태그:"
   
  -#: ../wiki.php:3426
  +#: ../wiki.php:3431
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:3426
  +#: ../wiki.php:3431
   #, c-format
   msgid "TwinPages"
   msgstr "TwinPages"
   
  -#: ../wiki.php:3431
  +#: ../wiki.php:3436
   msgid "See [TwinPages]:"
   msgstr ""
   
  -#: ../wiki.php:3989
  +#: ../wiki.php:3994
   msgid "Sister Sites Index"
   msgstr ""
   
  -#: ../wiki.php:4336 ../locale/dummy.php:6
  +#: ../wiki.php:4422 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "고치기"
   
  -#: ../wiki.php:4338
  +#: ../wiki.php:4424
   msgid "NotEditable"
   msgstr "고칠수 없음"
   
  -#: ../wiki.php:4342 ../locale/dummy.php:6
  +#: ../wiki.php:4428 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "보기"
   
  -#: ../wiki.php:4343 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4429 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "찾기"
   
  -#: ../wiki.php:4725
  +#: ../wiki.php:4811
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5119
  +#: ../wiki.php:5220
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5130
  +#: ../wiki.php:5231
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:5168 ../wiki.php:5177 ../wikilib.php:1337
  +#: ../wiki.php:5269 ../wiki.php:5278 ../wikilib.php:1344
   msgid "Create this page"
   msgstr "페이지 만들기"
   
  -#: ../wiki.php:5179
  +#: ../wiki.php:5280
   #, c-format
   msgid "%s has saved revisions"
   msgstr "%s이(가) 저장된 옛버전이 있습니다"
   
  -#: ../wiki.php:5180 ../wiki.php:5187
  +#: ../wiki.php:5281 ../wiki.php:5288
   #, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr "%s 혹은 %s를 눌러 전체 찾기를 할 수 있습니다.\n"
   
  -#: ../wiki.php:5185
  +#: ../wiki.php:5286
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr "%s 페이지를 이곳 위키에서 찾을 수 없습니다"
   
  -#: ../wiki.php:5192
  +#: ../wiki.php:5293
   msgid "Please try to search with another word"
   msgstr "다른 단어로 찾아보세요."
   
  -#: ../wiki.php:5204
  +#: ../wiki.php:5305
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr ""
   "%s 아이콘을 누르거나 아래의 탬플리트 목록을 이용해 새 페이지를 만드세요:\n"
   
  -#: ../wiki.php:5207
  +#: ../wiki.php:5308
   msgid "You have no templates"
   msgstr "템플리트가 없습니다"
   
  -#: ../wiki.php:5209
  +#: ../wiki.php:5310
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr "탬플리트를 만드시려면 '%s' 형식의 이름을 가지는 페이지를 만드세요.\n"
   
  -#: ../wiki.php:5220
  +#: ../wiki.php:5321
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr "\"%s\"페이지로 부터 리다리렉트됨"
   
  -#: ../wiki.php:5355
  +#: ../wiki.php:5459
   msgid "Invalid macro action."
   msgstr "잘못된 마크로 액션."
   
  -#: ../wiki.php:5365
  +#: ../wiki.php:5469
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "'%s'은(는) 허락되지 않았습니다"
   
  -#: ../wiki.php:5385
  +#: ../wiki.php:5489
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "\"%s\"을(를) 실패했습니다 !"
   
  -#: ../wiki.php:5388
  +#: ../wiki.php:5492
   msgid "Please enter the valid password"
   msgstr "정확한 비밀번호를 넣어주세요"
   
  -#: ../wikilib.php:644
  +#: ../wikilib.php:651
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -1965,348 +1965,348 @@
   "<b>테이블</b>: || 셀 내용 |||| 두칸에 걸친 내용 ||;<br />\n"
   "테이블이나 제목 끝에 공백이 오면 안됩니다.<br />\n"
   
  -#: ../wikilib.php:681
  +#: ../wikilib.php:688
   msgid "You are not allowed to edit this page !"
   msgstr "이 페이지를 고칠 수 있도록 허락되어있지 않습니다 !"
   
  -#: ../wikilib.php:687
  +#: ../wikilib.php:694
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
  -#: ../wikilib.php:793
  +#: ../wikilib.php:800
   msgid "Use one of the following templates as an initial release :\n"
   msgstr "최초 버전으로 다음의 탬플리트를 활용하실 수 있습니다 :\n"
   
  -#: ../wikilib.php:795
  +#: ../wikilib.php:802
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr "탬플리트를 만드시려면 '%s' 형식의 이름으로 페이지를 만드세요."
   
  -#: ../wikilib.php:799
  +#: ../wikilib.php:806
   msgid "Merge"
   msgstr "병합"
   
  -#: ../wikilib.php:800
  +#: ../wikilib.php:807
   msgid "Merge manually"
   msgstr "수동 병합"
   
  -#: ../wikilib.php:801
  +#: ../wikilib.php:808
   msgid "Ignore conflicts"
   msgstr "충돌 무시"
   
  -#: ../wikilib.php:828
  +#: ../wikilib.php:835
   msgid "ReduceEditor"
   msgstr "편집창 줄이기"
   
  -#: ../wikilib.php:829
  +#: ../wikilib.php:836
   msgid "EnlargeEditor"
   msgstr "편집창 늘이기"
   
  -#: ../wikilib.php:833 ../locale/dummy.php:6
  +#: ../wikilib.php:840 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr "인터위키"
   
  -#: ../wikilib.php:835
  +#: ../wikilib.php:842
   msgid "HelpOnEditing"
   msgstr "고치기 도움말"
   
  -#: ../wikilib.php:867
  +#: ../wikilib.php:874
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:887
  +#: ../wikilib.php:894
   msgid "--Select Category--"
   msgstr "--카테고리 선택--"
   
  -#: ../wikilib.php:897
  +#: ../wikilib.php:904
   msgid "Minor edit"
   msgstr ""
   
  -#: ../wikilib.php:901
  +#: ../wikilib.php:908
   msgid "Summary of Change"
   msgstr "바뀐점 요약"
   
  -#: ../wikilib.php:906
  +#: ../wikilib.php:913
   msgid "Skip to preview"
   msgstr "미리보기로"
   
  -#: ../wikilib.php:916 ../wikilib.php:2046 ../wikilib.php:2100
  +#: ../wikilib.php:923 ../wikilib.php:2053 ../wikilib.php:2107
   msgid "Save"
   msgstr "저장"
   
  -#: ../wikilib.php:989
  +#: ../wikilib.php:996
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:994
  +#: ../wikilib.php:1001
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s은(는) 잘못된 액션"
   
  -#: ../wikilib.php:996
  +#: ../wikilib.php:1003
   msgid "Is it valid action ?"
   msgstr "올바른 액션입니까 ?"
   
  -#: ../wikilib.php:1043
  +#: ../wikilib.php:1050
   #, c-format
   msgid "File '%s' is deleted"
   msgstr "'%s' 파일이 지워졌습니다"
   
  -#: ../wikilib.php:1045
  +#: ../wikilib.php:1052
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr "'%s' 지우기를 실패했습니다"
   
  -#: ../wikilib.php:1050
  +#: ../wikilib.php:1057
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr "'%s' 디렉토리가 지우졌습니다"
   
  -#: ../wikilib.php:1052
  +#: ../wikilib.php:1059
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr "'%s' 지우기를 실패했습니다"
   
  -#: ../wikilib.php:1062 ../wikilib.php:1082
  +#: ../wikilib.php:1069 ../wikilib.php:1089
   msgid "No files are selected !"
   msgstr "파일을 선택하지 않았습니다"
   
  -#: ../wikilib.php:1075
  +#: ../wikilib.php:1082
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr "정말로 '%s'(을)를 지우시겠습니까 ?"
   
  -#: ../wikilib.php:1079
  +#: ../wikilib.php:1086
   msgid "Delete selected file"
   msgstr "선택된 파일 지우기"
   
  -#: ../wikilib.php:1100
  +#: ../wikilib.php:1107
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr "%s(이)가 지워짐 !"
   
  -#: ../wikilib.php:1115
  +#: ../wikilib.php:1122
   msgid "Please delete this file manually."
   msgstr "파일을 직접 지워주세요."
   
  -#: ../wikilib.php:1117
  +#: ../wikilib.php:1124
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "\"%s\"을(를) 지울까요 ?"
   
  -#: ../wikilib.php:1170
  +#: ../wikilib.php:1177
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
  -#: ../wikilib.php:1339
  +#: ../wikilib.php:1346
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr " 혹은 %s를 눌러 전체찾기를 합니다.\n"
   
  -#: ../wikilib.php:1339
  +#: ../wikilib.php:1346
   msgid "title"
   msgstr "제목"
   
  -#: ../wikilib.php:1353
  +#: ../wikilib.php:1360
   msgid "Please try to fulltext search"
   msgstr "전체 찾기를 해보시기 바랍니다"
   
  -#: ../wikilib.php:1356
  +#: ../wikilib.php:1363
   #, c-format
   msgid "You can also click %s to fulltext search.\n"
   msgstr "%s 아이콘을 눌러 전체 찾기를 하실 수 있습니다.\n"
   
  -#: ../wikilib.php:1401 ../wikilib.php:1502
  +#: ../wikilib.php:1408 ../wikilib.php:1509
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "%s을(를) 고치는 동안 다른 사람이 이 페이지를 저장했습니다"
   
  -#: ../wikilib.php:1407
  +#: ../wikilib.php:1414
   msgid "Section edit is not valid for non-exists page."
   msgstr "없는 페이지에 대한 섹션 편집은 가능하지 않습니다"
   
  -#: ../wikilib.php:1440 ../wikilib.php:1618
  +#: ../wikilib.php:1447 ../wikilib.php:1625
   msgid "mail does not supported by default."
   msgstr "메일이 지원되지 않습니다"
   
  -#: ../wikilib.php:1444 ../wikilib.php:1622
  +#: ../wikilib.php:1451 ../wikilib.php:1629
   msgid "Sent notification mail."
   msgstr "메일을 보냈습니다"
   
  -#: ../wikilib.php:1446 ../wikilib.php:1624
  +#: ../wikilib.php:1453 ../wikilib.php:1631
   msgid "No subscribers found."
   msgstr "구독자가 없습니다"
   
  -#: ../wikilib.php:1451 ../wikilib.php:1629
  +#: ../wikilib.php:1458 ../wikilib.php:1636
   #, c-format
   msgid "%s is not editable"
   msgstr "%s(이)가 쓰기가능하지 않음"
   
  -#: ../wikilib.php:1453 ../wikilib.php:1631
  +#: ../wikilib.php:1460 ../wikilib.php:1638
   #, c-format
   msgid "%s is saved"
   msgstr "%s(이)가 저장됨"
   
  -#: ../wikilib.php:1493
  +#: ../wikilib.php:1500
   msgid "Goto Editor"
   msgstr "편집기로 가기"
   
  -#: ../wikilib.php:1507
  +#: ../wikilib.php:1514
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr "%s 페이지 최근 내용이 병합되었습니다."
   
  -#: ../wikilib.php:1508
  +#: ../wikilib.php:1515
   #, c-format
   msgid "%s is merged successfully"
   msgstr "설정이 성공적으로 병합되었습니다"
   
  -#: ../wikilib.php:1512
  +#: ../wikilib.php:1519
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr "%s에 대하여 병합 충돌이 발견되었습니다 !"
   
  -#: ../wikilib.php:1513
  +#: ../wikilib.php:1520
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr "%에 대해 병합이 취소되었습니다."
   
  -#: ../wikilib.php:1514
  +#: ../wikilib.php:1521
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1515
  +#: ../wikilib.php:1522
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1520
  +#: ../wikilib.php:1527
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr ""
   
  -#: ../wikilib.php:1521
  +#: ../wikilib.php:1528
   msgid "Please resolve conflicts manually."
   msgstr "충돌을 직접 해결하시기 바랍니다."
   
  -#: ../wikilib.php:1524
  +#: ../wikilib.php:1531
   #, c-format
   msgid "Force merging for %s !"
   msgstr "%s에 대해 병합이 강제로 되었습니다 !"
   
  -#: ../wikilib.php:1525
  +#: ../wikilib.php:1532
   msgid "Please be careful, you could damage useful information."
   msgstr "주의하시기 바랍니다. 중요한 정보를 잃어버릴 수도 있습니다."
   
  -#: ../wikilib.php:1539
  +#: ../wikilib.php:1546
   msgid "Conflict error!"
   msgstr "충돌 오류!"
   
  -#: ../wikilib.php:1578
  +#: ../wikilib.php:1585
   #, c-format
   msgid "Preview of %s"
   msgstr "%s 미리보기"
   
  -#: ../wikilib.php:1663
  +#: ../wikilib.php:1670
   msgid "Nobody subscribed to this page."
   msgstr "아무도 페이지를 구독하지 않고있습니다."
   
  -#: ../wikilib.php:1682
  +#: ../wikilib.php:1689
   #, c-format
   msgid "%s page is modified"
   msgstr "%s 페이지가 변경되었습니다"
   
  -#: ../wikilib.php:1711
  +#: ../wikilib.php:1718
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:1724
  +#: ../wikilib.php:1731
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:1729
  +#: ../wikilib.php:1736
   msgid "Mails are sent successfully"
   msgstr "메일이 성공적으로 보내졌습니다"
   
  -#: ../wikilib.php:1730
  +#: ../wikilib.php:1737
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr "'%s'에게 메일을 보냈습니다"
   
  -#: ../wikilib.php:1732
  +#: ../wikilib.php:1739
   msgid "Fail to send mail"
   msgstr "메일 보내기 실패했습니다"
   
  -#: ../wikilib.php:1743
  +#: ../wikilib.php:1750
   msgid "This wiki does not support sendmail"
   msgstr "위키에서 sendmail을 지원받지 못합니다"
   
  -#: ../wikilib.php:1841
  +#: ../wikilib.php:1848
   msgid "Invalid regular expression !"
   msgstr "잘못된 정규 표현식 !"
   
  -#: ../wikilib.php:1865
  +#: ../wikilib.php:1872
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:1868
  +#: ../wikilib.php:1875
   msgid "Infinite loop possible!"
   msgstr "무한 루프가 가능함!"
   
  -#: ../wikilib.php:1983
  +#: ../wikilib.php:1990
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:1984
  +#: ../wikilib.php:1991
   msgid "OpenID"
   msgstr ""
   
  -#: ../wikilib.php:1996 ../wikilib.php:2118
  +#: ../wikilib.php:2003 ../wikilib.php:2125
   msgid "ID"
   msgstr "아이디"
   
  -#: ../wikilib.php:2026 ../wikilib.php:2111
  +#: ../wikilib.php:2033 ../wikilib.php:2118
   msgid "Make profile"
   msgstr "사용자 등록"
   
  -#: ../wikilib.php:2028
  +#: ../wikilib.php:2035
   msgid "password again"
   msgstr "비밀번호 재입력"
   
  -#: ../wikilib.php:2030 ../wikilib.php:2079
  +#: ../wikilib.php:2037 ../wikilib.php:2086
   msgid "Mail"
   msgstr "메일"
   
  -#: ../wikilib.php:2052
  +#: ../wikilib.php:2059
   msgid "New password"
   msgstr "새 비밀번호"
   
  -#: ../wikilib.php:2057
  +#: ../wikilib.php:2064
   msgid "Nickname"
   msgstr "별명"
   
  -#: ../wikilib.php:2080
  +#: ../wikilib.php:2087
   msgid "Time Zone"
   msgstr "시간대"
   
  -#: ../wikilib.php:2089
  +#: ../wikilib.php:2096
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:2380
  +#: ../wikilib.php:2391
   msgid "Show all"
   msgstr "모두 보기"
   
  -#: ../wikilib.php:2522
  +#: ../wikilib.php:2533
   msgid "Contents"
   msgstr "목차"
   
  -#: ../wikilib.php:2642
  +#: ../wikilib.php:2653
   #, c-format
   msgid "Title search for \"%s\""
   msgstr "\"%s\"에 대한 제목 찾기"
  @@ -2391,42 +2391,42 @@
   msgid "%s directory is not writable"
   msgstr "%s 디렉토리가 쓰기가능하지 않음"
   
  -#: ../monisetup.php:303
  +#: ../monisetup.php:304
   #, c-format
   msgid "%s is not writable"
   msgstr "%s(이)가 쓰기가능하지 않음"
   
  -#: ../monisetup.php:310 ../monisetup.php:316
  +#: ../monisetup.php:311 ../monisetup.php:317
   #, c-format
   msgid "%s is created now"
   msgstr "%s(이)가 만들어졌음"
   
  -#: ../monisetup.php:326
  +#: ../monisetup.php:327
   #, c-format
   msgid "%s is writable"
   msgstr "%s(이)가 쓰기가능"
   
  -#: ../monisetup.php:426
  +#: ../monisetup.php:427
   msgid "Click here to toggle all"
   msgstr ""
   
  -#: ../monisetup.php:427
  +#: ../monisetup.php:428
   msgid "Deselect all"
   msgstr "모두 선택 취소"
   
  -#: ../monisetup.php:432
  +#: ../monisetup.php:433
   msgid "Please be careful to deselect these pages"
   msgstr "아래의 페이지를 선택해제시 주의해주세요"
   
  -#: ../monisetup.php:706
  +#: ../monisetup.php:707
   msgid "MoniWiki"
   msgstr "모니위키"
   
  -#: ../monisetup.php:709
  +#: ../monisetup.php:710
   msgid "'config.php' is not writable !"
   msgstr "'config.php' 파일이 쓰기가능하지 않습니다 !"
   
  -#: ../monisetup.php:710
  +#: ../monisetup.php:711
   msgid ""
   "Please execute <tt>'monisetup.sh'</tt> or <tt>chmod a+w config.php</tt> "
   "first to change your settings."
  @@ -2434,94 +2434,94 @@
   "<tt>'monisetup.sh'</tt> 혹은 <tt>chmod a+w config.php</tt>를 먼저실행해 주셔"
   "야 설정을 고칠 수 있습니다"
   
  -#: ../monisetup.php:737
  +#: ../monisetup.php:738
   msgid "Invalid password error !"
   msgstr "잘못된 비밀번호 오류 !"
   
  -#: ../monisetup.php:738
  +#: ../monisetup.php:739
   msgid ""
   "If you can't remember your admin password, delete password entry in the "
   "'config.php' and restart 'monisetup'"
   msgstr ""
   
  -#: ../monisetup.php:770
  +#: ../monisetup.php:771
   #, c-format
   msgid "Updated Configutations for this %s"
   msgstr "위키 %s의 설정이 갱신되었습니다"
   
  -#: ../monisetup.php:789
  +#: ../monisetup.php:790
   msgid "Configurations are saved successfully"
   msgstr "설정이 성공적으로 저장되었습니다"
   
  -#: ../monisetup.php:790
  +#: ../monisetup.php:791
   msgid ""
   "WARN: Please check <a href='monisetup.php'> your saved configurations</a>"
   msgstr ""
   
  -#: ../monisetup.php:791
  +#: ../monisetup.php:792
   msgid "If all is good, change 'config.php' permission as 644."
   msgstr "모두 마음에 드시면 'config.php'파일의 퍼미션을 644로 바꿔주세요"
   
  -#: ../monisetup.php:803
  +#: ../monisetup.php:804
   msgid "Welcome to MoniWiki ! This is your first installation"
   msgstr "모니위키로 오신 것을  환영합니다 ! 처음 설치 하셨군요"
   
  -#: ../monisetup.php:810
  +#: ../monisetup.php:811
   msgid "Default settings are loaded..."
   msgstr "기본 설정을 불러옵니다..."
   
  -#: ../monisetup.php:819
  +#: ../monisetup.php:820
   msgid "Initial configurations are saved successfully."
   msgstr "초기 설정치가 성공적으로 저장되었습니다."
   
  -#: ../monisetup.php:820
  +#: ../monisetup.php:821
   msgid "Goto <a href='monisetup.php'>MoniSetup</a> again to configure details"
   msgstr ""
   "<a href='monisetup.php'>MoniSetup</a>으로 다시 가서 자세한 설정을 합니다"
   
  -#: ../monisetup.php:837 ../monisetup.php:839 ../monisetup.php:935
  -#: ../monisetup.php:937
  +#: ../monisetup.php:838 ../monisetup.php:840 ../monisetup.php:936
  +#: ../monisetup.php:938
   #, c-format
   msgid "goto %s"
   msgstr "%s으로 가기"
   
  -#: ../monisetup.php:842
  +#: ../monisetup.php:843
   msgid "No WikiSeeds are selected"
   msgstr "위키씨앗을 선택하지 않았습니다"
   
  -#: ../monisetup.php:853
  +#: ../monisetup.php:854
   #, c-format
   msgid "Preview current settings for this %s"
   msgstr "%s 현재 설정을 미리보기"
   
  -#: ../monisetup.php:855
  +#: ../monisetup.php:856
   #, c-format
   msgid "Read current settings for this %s"
   msgstr "%s 위키의 현재 설정 읽기"
   
  -#: ../monisetup.php:883
  +#: ../monisetup.php:884
   msgid "Change your settings"
   msgstr "세팅을 바꾸기"
   
  -#: ../monisetup.php:885
  +#: ../monisetup.php:886
   msgid "WARN: You have to enter your Admin Password"
   msgstr "주의: 관리자 비밀번호를 넣어주시기 바랍니다"
   
  -#: ../monisetup.php:887 ../monisetup.php:930
  +#: ../monisetup.php:888 ../monisetup.php:931
   #, c-format
   msgid "WARN: You have no WikiSeed on your %s"
   msgstr "주의: 위키씨앗이 위키 %s에 없습니다"
   
  -#: ../monisetup.php:888 ../monisetup.php:931
  +#: ../monisetup.php:889 ../monisetup.php:932
   #, c-format
   msgid "If you want to put wikiseeds on your wiki %s now"
   msgstr "위키씨앗을 심기를 원하신다면 %s 누르세요"
   
  -#: ../monisetup.php:889 ../monisetup.php:932
  +#: ../monisetup.php:890 ../monisetup.php:933
   msgid "Click here"
   msgstr "여기를"
   
  -#: ../monisetup.php:924 ../monisetup.php:926
  +#: ../monisetup.php:925 ../monisetup.php:927
   msgid "Update"
   msgstr "완료"
   
  
  
  
  1.21      +180 -180  moniwiki/locale/po/moniwiki.pot
  
  Index: moniwiki.pot
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/moniwiki.pot,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- moniwiki.pot	16 Dec 2008 12:37:18 -0000	1.20
  +++ moniwiki.pot	20 Dec 2008 04:37:50 -0000	1.21
  @@ -7,7 +7,7 @@
   msgstr ""
   "Project-Id-Version: PACKAGE VERSION\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2008-12-16 21:07+0900\n"
  +"POT-Creation-Date: 2008-12-20 02:31+0900\n"
   "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
   "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
   "Language-Team: LANGUAGE <LL@li.org>\n"
  @@ -101,7 +101,7 @@
   msgid "Title"
   msgstr ""
   
  -#: ../plugin/Blog.php:268 ../wikilib.php:908
  +#: ../plugin/Blog.php:268 ../wikilib.php:915
   msgid "GUI"
   msgstr ""
   
  @@ -182,7 +182,7 @@
   msgid "Comment"
   msgstr ""
   
  -#: ../plugin/Comment.php:88 ../wikilib.php:904 ../monisetup.php:922
  +#: ../plugin/Comment.php:88 ../wikilib.php:911 ../monisetup.php:923
   msgid "Preview"
   msgstr ""
   
  @@ -212,8 +212,8 @@
   msgid "You need a ticket !"
   msgstr ""
   
  -#: ../plugin/Comment.php:191 ../plugin/Gallery.php:171 ../plugin/bbs.php:1009
  -#: ../wikilib.php:1426 ../wikilib.php:1572
  +#: ../plugin/Comment.php:191 ../plugin/Gallery.php:174 ../plugin/bbs.php:1009
  +#: ../wikilib.php:1433 ../wikilib.php:1579
   msgid ""
   "Sorry, can not save page because some messages are blocked in this wiki."
   msgstr ""
  @@ -240,7 +240,7 @@
   msgid "Version info is not available in this wiki"
   msgstr ""
   
  -#: ../plugin/Diff.php:223 ../wikilib.php:1559
  +#: ../plugin/Diff.php:223 ../wikilib.php:1566
   msgid "No difference found"
   msgstr ""
   
  @@ -307,18 +307,18 @@
   msgstr ""
   
   #: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:38
  -#: ../wikilib.php:1347
  +#: ../wikilib.php:1354
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr ""
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1349
  +#: ../wikilib.php:1356
   msgid "page"
   msgstr ""
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1349
  +#: ../wikilib.php:1356
   msgid "pages"
   msgstr ""
   
  @@ -336,7 +336,7 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:124 ../wiki.php:4340
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:124 ../wiki.php:4426
   msgid "Refresh"
   msgstr ""
   
  @@ -350,8 +350,8 @@
   msgid "You can also click %s to search title.\n"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5180 ../wiki.php:5187
  -#: ../wikilib.php:1357
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5281 ../wiki.php:5288
  +#: ../wikilib.php:1364
   msgid "here"
   msgstr ""
   
  @@ -367,7 +367,7 @@
   msgid "Case-sensitive searching"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:77 ../wikilib.php:2625 ../wikilib.php:2686
  +#: ../plugin/FullSearch.php:77 ../wikilib.php:2636 ../wikilib.php:2697
   msgid "Go"
   msgstr ""
   
  @@ -375,34 +375,34 @@
   msgid "Empty expression"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:144 ../wikilib.php:2646
  +#: ../plugin/FullSearch.php:144 ../wikilib.php:2657
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr ""
   
  -#: ../plugin/Gallery.php:242 ../plugin/UploadedFiles.php:257
  +#: ../plugin/Gallery.php:245 ../plugin/UploadedFiles.php:257
   msgid "No files found"
   msgstr ""
   
  -#: ../plugin/Gallery.php:334 ../plugin/Gallery.php:347
  +#: ../plugin/Gallery.php:337 ../plugin/Gallery.php:350
   msgid "add comment"
   msgstr ""
   
  -#: ../plugin/Gallery.php:344
  +#: ../plugin/Gallery.php:347
   msgid "show comments"
   msgstr ""
   
  -#: ../plugin/Gallery.php:393 ../plugin/Gallery.php:397 ../wikilib.php:1413
  -#: ../wikilib.php:1557
  +#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1420
  +#: ../wikilib.php:1564
   #, c-format
   msgid "Go back or return to %s"
   msgstr ""
   
  -#: ../plugin/Gallery.php:394
  +#: ../plugin/Gallery.php:397
   msgid "Comments are edited"
   msgstr ""
   
  -#: ../plugin/Gallery.php:398
  +#: ../plugin/Gallery.php:401
   msgid "Comments is added"
   msgstr ""
   
  @@ -578,7 +578,7 @@
   msgid "Select keywords for %s"
   msgstr ""
   
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1238 ../wikilib.php:2633
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1245 ../wikilib.php:2644
   msgid "Use more specific text"
   msgstr ""
   
  @@ -687,11 +687,11 @@
   msgid "[%sh %sm ago]"
   msgstr ""
   
  -#: ../plugin/SWFUpload.php:116
  +#: ../plugin/SWFUpload.php:117
   msgid "Files..."
   msgstr ""
   
  -#: ../plugin/SWFUpload.php:117
  +#: ../plugin/SWFUpload.php:118
   msgid "Upload"
   msgstr ""
   
  @@ -781,7 +781,7 @@
   msgid "TwinPages of %s"
   msgstr ""
   
  -#: ../plugin/TwinPages.php:19 ../wiki.php:5166
  +#: ../plugin/TwinPages.php:19 ../wiki.php:5267
   msgid "See [TwinPages]: "
   msgstr ""
   
  @@ -864,11 +864,11 @@
   msgstr ""
   
   #: ../plugin/UploadedFiles.php:414 ../plugin/rename.php:77
  -#: ../plugin/revert.php:82 ../wikilib.php:1077 ../wikilib.php:1967
  +#: ../plugin/revert.php:82 ../wikilib.php:1084 ../wikilib.php:1974
   msgid "Password"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:415 ../wikilib.php:1055
  +#: ../plugin/UploadedFiles.php:415 ../wikilib.php:1062
   msgid "Delete selected files"
   msgstr ""
   
  @@ -888,7 +888,7 @@
   msgid "Voted successfully"
   msgstr ""
   
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2379
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2390
   msgid "Others"
   msgstr ""
   
  @@ -992,7 +992,7 @@
   msgid "Edit"
   msgstr ""
   
  -#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1078
  +#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1085
   msgid "Delete"
   msgstr ""
   
  @@ -1122,7 +1122,7 @@
   msgid "No manpage found"
   msgstr ""
   
  -#: ../plugin/minilogin.php:18 ../wikilib.php:2043
  +#: ../plugin/minilogin.php:18 ../wikilib.php:2050
   msgid "Login or Join"
   msgstr ""
   
  @@ -1188,11 +1188,11 @@
   msgid "Save Changes"
   msgstr ""
   
  -#: ../plugin/processor/monimarkup.php:489 ../wiki.php:3809
  +#: ../plugin/processor/monimarkup.php:489 ../wiki.php:3814
   msgid "edit"
   msgstr ""
   
  -#: ../plugin/processor/vim.php:58
  +#: ../plugin/processor/vim.php:75
   msgid "Toggle line numbers"
   msgstr ""
   
  @@ -1308,7 +1308,7 @@
   msgid "Only WikiMaster can rename this page"
   msgstr ""
   
  -#: ../plugin/rename.php:79 ../wikilib.php:1123
  +#: ../plugin/rename.php:79 ../wikilib.php:1130
   msgid "with revision history"
   msgstr ""
   
  @@ -1350,7 +1350,7 @@
   msgid "Select a tarball file to restore"
   msgstr ""
   
  -#: ../plugin/revert.php:23 ../wiki.php:5182
  +#: ../plugin/revert.php:23 ../wiki.php:5283
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr ""
  @@ -1618,7 +1618,7 @@
   msgid "Cookie deleted !"
   msgstr ""
   
  -#: ../plugin/userform.php:104 ../wikilib.php:2113
  +#: ../plugin/userform.php:104 ../wikilib.php:2120
   msgid "E-mail new password"
   msgstr ""
   
  @@ -1691,16 +1691,16 @@
   msgid "Your email address is not valid"
   msgstr ""
   
  -#: ../plugin/userform.php:238 ../plugin/userform.php:403
  +#: ../plugin/userform.php:238 ../plugin/userform.php:410
   msgid "Fail to register"
   msgstr ""
   
  -#: ../plugin/userform.php:239 ../plugin/userform.php:404
  +#: ../plugin/userform.php:239 ../plugin/userform.php:411
   msgid "You are not allowed to register on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:240 ../plugin/userform.php:405 ../wiki.php:5120
  -#: ../wiki.php:5131
  +#: ../plugin/userform.php:240 ../plugin/userform.php:412 ../wiki.php:5221
  +#: ../wiki.php:5232
   msgid "Please contact WikiMasters"
   msgstr ""
   
  @@ -1766,27 +1766,27 @@
   msgid "Profiles are saved successfully !"
   msgstr ""
   
  -#: ../plugin/userform.php:379 ../plugin/userform.php:425
  +#: ../plugin/userform.php:386 ../plugin/userform.php:432
   #, c-format
   msgid "Authentication request was failed: %s"
   msgstr ""
   
  -#: ../plugin/userform.php:398
  +#: ../plugin/userform.php:405
   #, c-format
   msgid "Successfully login as '%s' via OpenID."
   msgstr ""
   
  -#: ../plugin/userform.php:412
  +#: ../plugin/userform.php:419
   #, c-format
   msgid "Your Nickname %s already used as ID in this Wiki."
   msgstr ""
   
  -#: ../plugin/userform.php:420
  +#: ../plugin/userform.php:427
   #, c-format
   msgid "OpenID Authentication successful and saved as %s."
   msgstr ""
   
  -#: ../plugin/userform.php:427
  +#: ../plugin/userform.php:434
   msgid "Invalid OpenID Authentication request"
   msgstr ""
   
  @@ -1818,121 +1818,121 @@
   msgid "File '%s' does not exist."
   msgstr ""
   
  -#: ../wiki.php:2897 ../wiki.php:2908 ../wiki.php:5353
  +#: ../wiki.php:2902 ../wiki.php:2913 ../wiki.php:5457
   msgid "Invalid ajax action."
   msgstr ""
   
  -#: ../wiki.php:3398
  +#: ../wiki.php:3403
   msgid "Tags:"
   msgstr ""
   
  -#: ../wiki.php:3426
  +#: ../wiki.php:3431
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:3426
  +#: ../wiki.php:3431
   #, c-format
   msgid "TwinPages"
   msgstr ""
   
  -#: ../wiki.php:3431
  +#: ../wiki.php:3436
   msgid "See [TwinPages]:"
   msgstr ""
   
  -#: ../wiki.php:3989
  +#: ../wiki.php:3994
   msgid "Sister Sites Index"
   msgstr ""
   
  -#: ../wiki.php:4336 ../locale/dummy.php:6
  +#: ../wiki.php:4422 ../locale/dummy.php:6
   msgid "EditText"
   msgstr ""
   
  -#: ../wiki.php:4338
  +#: ../wiki.php:4424
   msgid "NotEditable"
   msgstr ""
   
  -#: ../wiki.php:4342 ../locale/dummy.php:6
  +#: ../wiki.php:4428 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:4343 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4429 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr ""
   
  -#: ../wiki.php:4725
  +#: ../wiki.php:4811
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5119
  +#: ../wiki.php:5220
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5130
  +#: ../wiki.php:5231
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:5168 ../wiki.php:5177 ../wikilib.php:1337
  +#: ../wiki.php:5269 ../wiki.php:5278 ../wikilib.php:1344
   msgid "Create this page"
   msgstr ""
   
  -#: ../wiki.php:5179
  +#: ../wiki.php:5280
   #, c-format
   msgid "%s has saved revisions"
   msgstr ""
   
  -#: ../wiki.php:5180 ../wiki.php:5187
  +#: ../wiki.php:5281 ../wiki.php:5288
   #, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr ""
   
  -#: ../wiki.php:5185
  +#: ../wiki.php:5286
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr ""
   
  -#: ../wiki.php:5192
  +#: ../wiki.php:5293
   msgid "Please try to search with another word"
   msgstr ""
   
  -#: ../wiki.php:5204
  +#: ../wiki.php:5305
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr ""
   
  -#: ../wiki.php:5207
  +#: ../wiki.php:5308
   msgid "You have no templates"
   msgstr ""
   
  -#: ../wiki.php:5209
  +#: ../wiki.php:5310
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
   
  -#: ../wiki.php:5220
  +#: ../wiki.php:5321
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
  -#: ../wiki.php:5355
  +#: ../wiki.php:5459
   msgid "Invalid macro action."
   msgstr ""
   
  -#: ../wiki.php:5365
  +#: ../wiki.php:5469
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr ""
   
  -#: ../wiki.php:5385
  +#: ../wiki.php:5489
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:5388
  +#: ../wiki.php:5492
   msgid "Please enter the valid password"
   msgstr ""
   
  -#: ../wikilib.php:644
  +#: ../wikilib.php:651
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -1949,348 +1949,348 @@
   "no trailing white space allowed after tables or titles.<br />\n"
   msgstr ""
   
  -#: ../wikilib.php:681
  +#: ../wikilib.php:688
   msgid "You are not allowed to edit this page !"
   msgstr ""
   
  -#: ../wikilib.php:687
  +#: ../wikilib.php:694
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
  -#: ../wikilib.php:793
  +#: ../wikilib.php:800
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   
  -#: ../wikilib.php:795
  +#: ../wikilib.php:802
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr ""
   
  -#: ../wikilib.php:799
  +#: ../wikilib.php:806
   msgid "Merge"
   msgstr ""
   
  -#: ../wikilib.php:800
  +#: ../wikilib.php:807
   msgid "Merge manually"
   msgstr ""
   
  -#: ../wikilib.php:801
  +#: ../wikilib.php:808
   msgid "Ignore conflicts"
   msgstr ""
   
  -#: ../wikilib.php:828
  +#: ../wikilib.php:835
   msgid "ReduceEditor"
   msgstr ""
   
  -#: ../wikilib.php:829
  +#: ../wikilib.php:836
   msgid "EnlargeEditor"
   msgstr ""
   
  -#: ../wikilib.php:833 ../locale/dummy.php:6
  +#: ../wikilib.php:840 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
  -#: ../wikilib.php:835
  +#: ../wikilib.php:842
   msgid "HelpOnEditing"
   msgstr ""
   
  -#: ../wikilib.php:867
  +#: ../wikilib.php:874
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:887
  +#: ../wikilib.php:894
   msgid "--Select Category--"
   msgstr ""
   
  -#: ../wikilib.php:897
  +#: ../wikilib.php:904
   msgid "Minor edit"
   msgstr ""
   
  -#: ../wikilib.php:901
  +#: ../wikilib.php:908
   msgid "Summary of Change"
   msgstr ""
   
  -#: ../wikilib.php:906
  +#: ../wikilib.php:913
   msgid "Skip to preview"
   msgstr ""
   
  -#: ../wikilib.php:916 ../wikilib.php:2046 ../wikilib.php:2100
  +#: ../wikilib.php:923 ../wikilib.php:2053 ../wikilib.php:2107
   msgid "Save"
   msgstr ""
   
  -#: ../wikilib.php:989
  +#: ../wikilib.php:996
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:994
  +#: ../wikilib.php:1001
   #, c-format
   msgid "%s is not valid action"
   msgstr ""
   
  -#: ../wikilib.php:996
  +#: ../wikilib.php:1003
   msgid "Is it valid action ?"
   msgstr ""
   
  -#: ../wikilib.php:1043
  +#: ../wikilib.php:1050
   #, c-format
   msgid "File '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:1045
  +#: ../wikilib.php:1052
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1050
  +#: ../wikilib.php:1057
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:1052
  +#: ../wikilib.php:1059
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1062 ../wikilib.php:1082
  +#: ../wikilib.php:1069 ../wikilib.php:1089
   msgid "No files are selected !"
   msgstr ""
   
  -#: ../wikilib.php:1075
  +#: ../wikilib.php:1082
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
  -#: ../wikilib.php:1079
  +#: ../wikilib.php:1086
   msgid "Delete selected file"
   msgstr ""
   
  -#: ../wikilib.php:1100
  +#: ../wikilib.php:1107
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr ""
   
  -#: ../wikilib.php:1115
  +#: ../wikilib.php:1122
   msgid "Please delete this file manually."
   msgstr ""
   
  -#: ../wikilib.php:1117
  +#: ../wikilib.php:1124
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr ""
   
  -#: ../wikilib.php:1170
  +#: ../wikilib.php:1177
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
  -#: ../wikilib.php:1339
  +#: ../wikilib.php:1346
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
   
  -#: ../wikilib.php:1339
  +#: ../wikilib.php:1346
   msgid "title"
   msgstr ""
   
  -#: ../wikilib.php:1353
  +#: ../wikilib.php:1360
   msgid "Please try to fulltext search"
   msgstr ""
   
  -#: ../wikilib.php:1356
  +#: ../wikilib.php:1363
   #, c-format
   msgid "You can also click %s to fulltext search.\n"
   msgstr ""
   
  -#: ../wikilib.php:1401 ../wikilib.php:1502
  +#: ../wikilib.php:1408 ../wikilib.php:1509
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr ""
   
  -#: ../wikilib.php:1407
  +#: ../wikilib.php:1414
   msgid "Section edit is not valid for non-exists page."
   msgstr ""
   
  -#: ../wikilib.php:1440 ../wikilib.php:1618
  +#: ../wikilib.php:1447 ../wikilib.php:1625
   msgid "mail does not supported by default."
   msgstr ""
   
  -#: ../wikilib.php:1444 ../wikilib.php:1622
  +#: ../wikilib.php:1451 ../wikilib.php:1629
   msgid "Sent notification mail."
   msgstr ""
   
  -#: ../wikilib.php:1446 ../wikilib.php:1624
  +#: ../wikilib.php:1453 ../wikilib.php:1631
   msgid "No subscribers found."
   msgstr ""
   
  -#: ../wikilib.php:1451 ../wikilib.php:1629
  +#: ../wikilib.php:1458 ../wikilib.php:1636
   #, c-format
   msgid "%s is not editable"
   msgstr ""
   
  -#: ../wikilib.php:1453 ../wikilib.php:1631
  +#: ../wikilib.php:1460 ../wikilib.php:1638
   #, c-format
   msgid "%s is saved"
   msgstr ""
   
  -#: ../wikilib.php:1493
  +#: ../wikilib.php:1500
   msgid "Goto Editor"
   msgstr ""
   
  -#: ../wikilib.php:1507
  +#: ../wikilib.php:1514
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr ""
   
  -#: ../wikilib.php:1508
  +#: ../wikilib.php:1515
   #, c-format
   msgid "%s is merged successfully"
   msgstr ""
   
  -#: ../wikilib.php:1512
  +#: ../wikilib.php:1519
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1513
  +#: ../wikilib.php:1520
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr ""
   
  -#: ../wikilib.php:1514
  +#: ../wikilib.php:1521
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1515
  +#: ../wikilib.php:1522
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1520
  +#: ../wikilib.php:1527
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr ""
   
  -#: ../wikilib.php:1521
  +#: ../wikilib.php:1528
   msgid "Please resolve conflicts manually."
   msgstr ""
   
  -#: ../wikilib.php:1524
  +#: ../wikilib.php:1531
   #, c-format
   msgid "Force merging for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1525
  +#: ../wikilib.php:1532
   msgid "Please be careful, you could damage useful information."
   msgstr ""
   
  -#: ../wikilib.php:1539
  +#: ../wikilib.php:1546
   msgid "Conflict error!"
   msgstr ""
   
  -#: ../wikilib.php:1578
  +#: ../wikilib.php:1585
   #, c-format
   msgid "Preview of %s"
   msgstr ""
   
  -#: ../wikilib.php:1663
  +#: ../wikilib.php:1670
   msgid "Nobody subscribed to this page."
   msgstr ""
   
  -#: ../wikilib.php:1682
  +#: ../wikilib.php:1689
   #, c-format
   msgid "%s page is modified"
   msgstr ""
   
  -#: ../wikilib.php:1711
  +#: ../wikilib.php:1718
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:1724
  +#: ../wikilib.php:1731
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:1729
  +#: ../wikilib.php:1736
   msgid "Mails are sent successfully"
   msgstr ""
   
  -#: ../wikilib.php:1730
  +#: ../wikilib.php:1737
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1732
  +#: ../wikilib.php:1739
   msgid "Fail to send mail"
   msgstr ""
   
  -#: ../wikilib.php:1743
  +#: ../wikilib.php:1750
   msgid "This wiki does not support sendmail"
   msgstr ""
   
  -#: ../wikilib.php:1841
  +#: ../wikilib.php:1848
   msgid "Invalid regular expression !"
   msgstr ""
   
  -#: ../wikilib.php:1865
  +#: ../wikilib.php:1872
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:1868
  +#: ../wikilib.php:1875
   msgid "Infinite loop possible!"
   msgstr ""
   
  -#: ../wikilib.php:1983
  +#: ../wikilib.php:1990
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:1984
  +#: ../wikilib.php:1991
   msgid "OpenID"
   msgstr ""
   
  -#: ../wikilib.php:1996 ../wikilib.php:2118
  +#: ../wikilib.php:2003 ../wikilib.php:2125
   msgid "ID"
   msgstr ""
   
  -#: ../wikilib.php:2026 ../wikilib.php:2111
  +#: ../wikilib.php:2033 ../wikilib.php:2118
   msgid "Make profile"
   msgstr ""
   
  -#: ../wikilib.php:2028
  +#: ../wikilib.php:2035
   msgid "password again"
   msgstr ""
   
  -#: ../wikilib.php:2030 ../wikilib.php:2079
  +#: ../wikilib.php:2037 ../wikilib.php:2086
   msgid "Mail"
   msgstr ""
   
  -#: ../wikilib.php:2052
  +#: ../wikilib.php:2059
   msgid "New password"
   msgstr ""
   
  -#: ../wikilib.php:2057
  +#: ../wikilib.php:2064
   msgid "Nickname"
   msgstr ""
   
  -#: ../wikilib.php:2080
  +#: ../wikilib.php:2087
   msgid "Time Zone"
   msgstr ""
   
  -#: ../wikilib.php:2089
  +#: ../wikilib.php:2096
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:2380
  +#: ../wikilib.php:2391
   msgid "Show all"
   msgstr ""
   
  -#: ../wikilib.php:2522
  +#: ../wikilib.php:2533
   msgid "Contents"
   msgstr ""
   
  -#: ../wikilib.php:2642
  +#: ../wikilib.php:2653
   #, c-format
   msgid "Title search for \"%s\""
   msgstr ""
  @@ -2369,134 +2369,134 @@
   msgid "%s directory is not writable"
   msgstr ""
   
  -#: ../monisetup.php:303
  +#: ../monisetup.php:304
   #, c-format
   msgid "%s is not writable"
   msgstr ""
   
  -#: ../monisetup.php:310 ../monisetup.php:316
  +#: ../monisetup.php:311 ../monisetup.php:317
   #, c-format
   msgid "%s is created now"
   msgstr ""
   
  -#: ../monisetup.php:326
  +#: ../monisetup.php:327
   #, c-format
   msgid "%s is writable"
   msgstr ""
   
  -#: ../monisetup.php:426
  +#: ../monisetup.php:427
   msgid "Click here to toggle all"
   msgstr ""
   
  -#: ../monisetup.php:427
  +#: ../monisetup.php:428
   msgid "Deselect all"
   msgstr ""
   
  -#: ../monisetup.php:432
  +#: ../monisetup.php:433
   msgid "Please be careful to deselect these pages"
   msgstr ""
   
  -#: ../monisetup.php:706
  +#: ../monisetup.php:707
   msgid "MoniWiki"
   msgstr ""
   
  -#: ../monisetup.php:709
  +#: ../monisetup.php:710
   msgid "'config.php' is not writable !"
   msgstr ""
   
  -#: ../monisetup.php:710
  +#: ../monisetup.php:711
   msgid ""
   "Please execute <tt>'monisetup.sh'</tt> or <tt>chmod a+w config.php</tt> "
   "first to change your settings."
   msgstr ""
   
  -#: ../monisetup.php:737
  +#: ../monisetup.php:738
   msgid "Invalid password error !"
   msgstr ""
   
  -#: ../monisetup.php:738
  +#: ../monisetup.php:739
   msgid ""
   "If you can't remember your admin password, delete password entry in the "
   "'config.php' and restart 'monisetup'"
   msgstr ""
   
  -#: ../monisetup.php:770
  +#: ../monisetup.php:771
   #, c-format
   msgid "Updated Configutations for this %s"
   msgstr ""
   
  -#: ../monisetup.php:789
  +#: ../monisetup.php:790
   msgid "Configurations are saved successfully"
   msgstr ""
   
  -#: ../monisetup.php:790
  +#: ../monisetup.php:791
   msgid ""
   "WARN: Please check <a href='monisetup.php'> your saved configurations</a>"
   msgstr ""
   
  -#: ../monisetup.php:791
  +#: ../monisetup.php:792
   msgid "If all is good, change 'config.php' permission as 644."
   msgstr ""
   
  -#: ../monisetup.php:803
  +#: ../monisetup.php:804
   msgid "Welcome to MoniWiki ! This is your first installation"
   msgstr ""
   
  -#: ../monisetup.php:810
  +#: ../monisetup.php:811
   msgid "Default settings are loaded..."
   msgstr ""
   
  -#: ../monisetup.php:819
  +#: ../monisetup.php:820
   msgid "Initial configurations are saved successfully."
   msgstr ""
   
  -#: ../monisetup.php:820
  +#: ../monisetup.php:821
   msgid "Goto <a href='monisetup.php'>MoniSetup</a> again to configure details"
   msgstr ""
   
  -#: ../monisetup.php:837 ../monisetup.php:839 ../monisetup.php:935
  -#: ../monisetup.php:937
  +#: ../monisetup.php:838 ../monisetup.php:840 ../monisetup.php:936
  +#: ../monisetup.php:938
   #, c-format
   msgid "goto %s"
   msgstr ""
   
  -#: ../monisetup.php:842
  +#: ../monisetup.php:843
   msgid "No WikiSeeds are selected"
   msgstr ""
   
  -#: ../monisetup.php:853
  +#: ../monisetup.php:854
   #, c-format
   msgid "Preview current settings for this %s"
   msgstr ""
   
  -#: ../monisetup.php:855
  +#: ../monisetup.php:856
   #, c-format
   msgid "Read current settings for this %s"
   msgstr ""
   
  -#: ../monisetup.php:883
  +#: ../monisetup.php:884
   msgid "Change your settings"
   msgstr ""
   
  -#: ../monisetup.php:885
  +#: ../monisetup.php:886
   msgid "WARN: You have to enter your Admin Password"
   msgstr ""
   
  -#: ../monisetup.php:887 ../monisetup.php:930
  +#: ../monisetup.php:888 ../monisetup.php:931
   #, c-format
   msgid "WARN: You have no WikiSeed on your %s"
   msgstr ""
   
  -#: ../monisetup.php:888 ../monisetup.php:931
  +#: ../monisetup.php:889 ../monisetup.php:932
   #, c-format
   msgid "If you want to put wikiseeds on your wiki %s now"
   msgstr ""
   
  -#: ../monisetup.php:889 ../monisetup.php:932
  +#: ../monisetup.php:890 ../monisetup.php:933
   msgid "Click here"
   msgstr ""
   
  -#: ../monisetup.php:924 ../monisetup.php:926
  +#: ../monisetup.php:925 ../monisetup.php:927
   msgid "Update"
   msgstr ""
   
  
  
  


wkpark      2008/12/20 13:38:30

  Modified:    locale   Makefile.in update-makefile.sh
  Log:
  rename Makefile to Makefile.in
  
  Revision  Changes    Path
  1.11      +1 -203    moniwiki/locale/Makefile.in
  
  Index: Makefile.in
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/Makefile.in,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- Makefile.in	16 Dec 2008 12:37:18 -0000	1.10
  +++ Makefile.in	20 Dec 2008 04:38:30 -0000	1.11
  @@ -1,4 +1,4 @@
  -# $Id: Makefile.in,v 1.10 2008/12/16 12:37:18 wkpark Exp $
  +# $Id: Makefile.in,v 1.11 2008/12/20 04:38:30 wkpark Exp $
   #
   # locale/Makefile
   #
  @@ -53,205 +53,3 @@
   #
   # (Run 'make dep' to regenerate this section.)
   #
  -po: po/fr.po
  -mo: fr/LC_MESSAGES/moniwiki.mo fr/LC_MESSAGES/moniwiki.php
  -po: po/ko.po
  -mo: ko/LC_MESSAGES/moniwiki.mo ko/LC_MESSAGES/moniwiki.php
  -#
  -${POT_FILE}: ../plugin/ABBR.php
  -${POT_FILE}: ../plugin/Anchor.php
  -${POT_FILE}: ../plugin/Attachment.php
  -${POT_FILE}: ../plugin/Attachments.php
  -${POT_FILE}: ../plugin/BabelFish.php
  -${POT_FILE}: ../plugin/Baduk.php
  -${POT_FILE}: ../plugin/Bar.php
  -${POT_FILE}: ../plugin/Blog.php
  -${POT_FILE}: ../plugin/BlogArchives.php
  -${POT_FILE}: ../plugin/BlogCategories.php
  -${POT_FILE}: ../plugin/BlogChanges.php
  -${POT_FILE}: ../plugin/Calendar.php
  -${POT_FILE}: ../plugin/Cite.php
  -${POT_FILE}: ../plugin/Clip.php
  -${POT_FILE}: ../plugin/Comment.php
  -${POT_FILE}: ../plugin/Diff.php
  -${POT_FILE}: ../plugin/Draw.php
  -${POT_FILE}: ../plugin/DueDate.php
  -${POT_FILE}: ../plugin/Echo.php
  -${POT_FILE}: ../plugin/EditToolbar.php
  -${POT_FILE}: ../plugin/EngDic.php
  -${POT_FILE}: ../plugin/FastSearch.php
  -${POT_FILE}: ../plugin/Fortune.php
  -${POT_FILE}: ../plugin/FullSearch.php
  -${POT_FILE}: ../plugin/Gallery.php
  -${POT_FILE}: ../plugin/GetText.php
  -${POT_FILE}: ../plugin/GoogleTrans.php
  -${POT_FILE}: ../plugin/ISBN.php
  -${POT_FILE}: ../plugin/Icon.php
  -${POT_FILE}: ../plugin/ImportUrl.php
  -${POT_FILE}: ../plugin/Include.php
  -${POT_FILE}: ../plugin/Info.php
  -${POT_FILE}: ../plugin/InputForm.php
  -${POT_FILE}: ../plugin/JME.php
  -${POT_FILE}: ../plugin/Keywords.php
  -${POT_FILE}: ../plugin/LikePages.php
  -${POT_FILE}: ../plugin/LineHeight.php
  -${POT_FILE}: ../plugin/MailTo.php
  -${POT_FILE}: ../plugin/MathChooser.php
  -${POT_FILE}: ../plugin/Media.php
  -${POT_FILE}: ../plugin/MoniCalendar.php
  -${POT_FILE}: ../plugin/Navigation.php
  -${POT_FILE}: ../plugin/OeKaki.php
  -${POT_FILE}: ../plugin/PGBR.php
  -${POT_FILE}: ../plugin/PageHits.php
  -${POT_FILE}: ../plugin/PageLinks.php
  -${POT_FILE}: ../plugin/Play.php
  -${POT_FILE}: ../plugin/RandomBanner.php
  -${POT_FILE}: ../plugin/Rating.php
  -${POT_FILE}: ../plugin/RecentChanges.php
  -${POT_FILE}: ../plugin/SWFUpload.php
  -${POT_FILE}: ../plugin/SearchPlugin.php
  -${POT_FILE}: ../plugin/ShowSmiley.php
  -${POT_FILE}: ../plugin/SlideShow.php
  -${POT_FILE}: ../plugin/SmileyChooser.php
  -${POT_FILE}: ../plugin/SystemInfo.php
  -${POT_FILE}: ../plugin/TTFText.php
  -${POT_FILE}: ../plugin/Test.php
  -${POT_FILE}: ../plugin/TextDict.php
  -${POT_FILE}: ../plugin/Tour.php
  -${POT_FILE}: ../plugin/TwinPages.php
  -${POT_FILE}: ../plugin/UWL.php
  -${POT_FILE}: ../plugin/UploadFile.php
  -${POT_FILE}: ../plugin/UploadForm.php
  -${POT_FILE}: ../plugin/UploadedFiles.php
  -${POT_FILE}: ../plugin/UrlMapping.php
  -${POT_FILE}: ../plugin/VisualTour.php
  -${POT_FILE}: ../plugin/Vote.php
  -${POT_FILE}: ../plugin/WantedPages.php
  -${POT_FILE}: ../plugin/WordIndex.php
  -${POT_FILE}: ../plugin/aclinfo.php
  -${POT_FILE}: ../plugin/admin.php
  -${POT_FILE}: ../plugin/atom.php
  -${POT_FILE}: ../plugin/autogoto.php
  -${POT_FILE}: ../plugin/backup.php
  -${POT_FILE}: ../plugin/bbs.php
  -${POT_FILE}: ../plugin/blogrss.php
  -${POT_FILE}: ../plugin/bookmark.php
  -${POT_FILE}: ../plugin/bts.php
  -${POT_FILE}: ../plugin/cacheadmin.php
  -${POT_FILE}: ../plugin/chat.php
  -${POT_FILE}: ../plugin/chmod.php
  -${POT_FILE}: ../plugin/css.php
  -${POT_FILE}: ../plugin/dot.php
  -${POT_FILE}: ../plugin/download.php
  -${POT_FILE}: ../plugin/filter.php
  -${POT_FILE}: ../plugin/filter/abbr.php
  -${POT_FILE}: ../plugin/filter/antispam.php
  -${POT_FILE}: ../plugin/filter/cite.php
  -${POT_FILE}: ../plugin/filter/fiximgpath.php
  -${POT_FILE}: ../plugin/filter/gtkdoc.php
  -${POT_FILE}: ../plugin/filter/indexer_ko.php
  -${POT_FILE}: ../plugin/filter/nforge.php
  -${POT_FILE}: ../plugin/filter/sample.php
  -${POT_FILE}: ../plugin/fixmoin.php
  -${POT_FILE}: ../plugin/foaf.php
  -${POT_FILE}: ../plugin/format.php
  -${POT_FILE}: ../plugin/freemind.php
  -${POT_FILE}: ../plugin/function/returnHello.php
  -${POT_FILE}: ../plugin/function/toc.php
  -${POT_FILE}: ../plugin/home.php
  -${POT_FILE}: ../plugin/html2pdf.php
  -${POT_FILE}: ../plugin/latex2png.php
  -${POT_FILE}: ../plugin/login.php
  -${POT_FILE}: ../plugin/man_get.php
  -${POT_FILE}: ../plugin/markup.php
  -${POT_FILE}: ../plugin/minilogin.php
  -${POT_FILE}: ../plugin/moniedit.php
  -${POT_FILE}: ../plugin/moztab.php
  -${POT_FILE}: ../plugin/msgfmt.php
  -${POT_FILE}: ../plugin/msgtrans.php
  -${POT_FILE}: ../plugin/new.php
  -${POT_FILE}: ../plugin/notitle.php
  -${POT_FILE}: ../plugin/pagelist.php
  -${POT_FILE}: ../plugin/pageview.php
  -${POT_FILE}: ../plugin/print.php
  -${POT_FILE}: ../plugin/processor/abc.php
  -${POT_FILE}: ../plugin/processor/asciimathml.php
  -${POT_FILE}: ../plugin/processor/baduk.php
  -${POT_FILE}: ../plugin/processor/bbcode.php
  -${POT_FILE}: ../plugin/processor/blog.php
  -${POT_FILE}: ../plugin/processor/bts.php
  -${POT_FILE}: ../plugin/processor/chat.php
  -${POT_FILE}: ../plugin/processor/diff.php
  -${POT_FILE}: ../plugin/processor/dot.php
  -${POT_FILE}: ../plugin/processor/enscript.php
  -${POT_FILE}: ../plugin/processor/folding.php
  -${POT_FILE}: ../plugin/processor/form.php
  -${POT_FILE}: ../plugin/processor/freemind.php
  -${POT_FILE}: ../plugin/processor/geshi.php
  -${POT_FILE}: ../plugin/processor/gnuplot.php
  -${POT_FILE}: ../plugin/processor/hello.php
  -${POT_FILE}: ../plugin/processor/html.php
  -${POT_FILE}: ../plugin/processor/itex.php
  -${POT_FILE}: ../plugin/processor/jade.php
  -${POT_FILE}: ../plugin/processor/jmol.php
  -${POT_FILE}: ../plugin/processor/latex.php
  -${POT_FILE}: ../plugin/processor/linuxdoc.php
  -${POT_FILE}: ../plugin/processor/live3d.php
  -${POT_FILE}: ../plugin/processor/man.php
  -${POT_FILE}: ../plugin/processor/metapost.php
  -${POT_FILE}: ../plugin/processor/mimetex.php
  -${POT_FILE}: ../plugin/processor/monimarkup.php
  -${POT_FILE}: ../plugin/processor/octave.php
  -${POT_FILE}: ../plugin/processor/pic.php
  -${POT_FILE}: ../plugin/processor/po.php
  -${POT_FILE}: ../plugin/processor/pre.php
  -${POT_FILE}: ../plugin/processor/python.php
  -${POT_FILE}: ../plugin/processor/randomquote.php
  -${POT_FILE}: ../plugin/processor/sfd.php
  -${POT_FILE}: ../plugin/processor/text_xml.php
  -${POT_FILE}: ../plugin/processor/textile.php
  -${POT_FILE}: ../plugin/processor/tpl_.php
  -${POT_FILE}: ../plugin/processor/vim.php
  -${POT_FILE}: ../plugin/processor/whtml.php
  -${POT_FILE}: ../plugin/processor/xslt.php
  -${POT_FILE}: ../plugin/processor/xsltproc.php
  -${POT_FILE}: ../plugin/quicklinks.php
  -${POT_FILE}: ../plugin/rawblog.php
  -${POT_FILE}: ../plugin/rawtext.php
  -${POT_FILE}: ../plugin/rcs.php
  -${POT_FILE}: ../plugin/rcsexport.php
  -${POT_FILE}: ../plugin/rcsimport.php
  -${POT_FILE}: ../plugin/rcspurge.php
  -${POT_FILE}: ../plugin/rdf_blog.php
  -${POT_FILE}: ../plugin/referer.php
  -${POT_FILE}: ../plugin/rename.php
  -${POT_FILE}: ../plugin/restore.php
  -${POT_FILE}: ../plugin/revert.php
  -${POT_FILE}: ../plugin/rss.php
  -${POT_FILE}: ../plugin/rss_blog.php
  -${POT_FILE}: ../plugin/rss_rc.php
  -${POT_FILE}: ../plugin/scrap.php
  -${POT_FILE}: ../plugin/security/acl.php
  -${POT_FILE}: ../plugin/security/authbasic.php
  -${POT_FILE}: ../plugin/security/community.php
  -${POT_FILE}: ../plugin/security/desktop.php
  -${POT_FILE}: ../plugin/security/htaccesslogin.php
  -${POT_FILE}: ../plugin/security/mustlogin.php
  -${POT_FILE}: ../plugin/security/needtologin.php
  -${POT_FILE}: ../plugin/security/sample.php
  -${POT_FILE}: ../plugin/security/userbased.php
  -${POT_FILE}: ../plugin/security/wikimaster.php
  -${POT_FILE}: ../plugin/sendping.php
  -${POT_FILE}: ../plugin/subscribe.php
  -${POT_FILE}: ../plugin/theme.php
  -${POT_FILE}: ../plugin/ticket.php
  -${POT_FILE}: ../plugin/trackback.php
  -${POT_FILE}: ../plugin/urlencode.php
  -${POT_FILE}: ../plugin/useradmin.php
  -${POT_FILE}: ../plugin/userform.php
  -${POT_FILE}: ../plugin/whois.php
  -${POT_FILE}: ../wiki.php
  -${POT_FILE}: ../wikilib.php
  -${POT_FILE}: ../monisetup.php
  -${POT_FILE}: ../lib/difflib.php
  -${POT_FILE}: ../locale/dummy.php
  
  
  
  1.3       +3 -1      moniwiki/locale/update-makefile.sh
  
  Index: update-makefile.sh
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/update-makefile.sh,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- update-makefile.sh	16 Dec 2008 12:37:18 -0000	1.2
  +++ update-makefile.sh	20 Dec 2008 04:38:30 -0000	1.3
  @@ -1,6 +1,6 @@
   #!/bin/sh
   #
  -# $Id: update-makefile.sh,v 1.2 2008/12/16 12:37:18 wkpark Exp $
  +# $Id: update-makefile.sh,v 1.3 2008/12/20 04:38:30 wkpark Exp $
   #
   # This shell script is used to update the list of .po files and the
   # dependencies for moniwiki.pot in the Makefile.
  @@ -12,6 +12,8 @@
   # to update the Makefile.
   #
   
  +test -f Makefile || cp -f Makefile.in Makefile
  +
   # Generate the head (manually-edited part) of the new Makefile
   #
   makefile_head () {
  
  
  


wkpark      2008/12/20 13:39:03

  Removed:     locale   Makefile utf8rules
  Log:
  remove


wkpark      2008/12/20 13:48:08

  Modified:    css      slide.css
  Log:
  fixed .nonexists css entry
  
  Revision  Changes    Path
  1.7       +0 -1      moniwiki/css/slide.css
  
  Index: slide.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/slide.css,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- slide.css	10 Dec 2008 13:10:58 -0000	1.6
  +++ slide.css	20 Dec 2008 04:48:08 -0000	1.7
  @@ -194,7 +194,6 @@
   }
   
   a.purple { font-size: 10px; display:none;}
  -a.nonexistent {display: none;}
   /* Blog CSS */
   a.perma { font-size: 10px; display:none;}
   a.purple { display: none;}
  
  
  


wkpark      2008/12/20 13:56:15

  Modified:    .        wiki.php
  Log:
  disable interwiki icon syntax like as MoniWiki:
  You have to always wrap explicitly with brackets like as [MoniWiki:].
  
  Revision  Changes    Path
  1.429     +5 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.428
  retrieving revision 1.429
  diff -u -r1.428 -r1.429
  --- wiki.php	20 Dec 2008 04:16:18 -0000	1.428
  +++ wiki.php	20 Dec 2008 04:56:15 -0000	1.429
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.428 2008/12/20 04:16:18 wkpark Exp $
  +// $Id: wiki.php,v 1.429 2008/12/20 04:56:15 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.428 $',1,-1);
  +$_revision = substr('$Revision: 1.429 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -1902,7 +1902,7 @@
       #"\b(".$DBInfo->interwikirule."):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
       #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
       #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+[^\(\)<>\s\',\.:\?\!]+)|".
  -    "(?:\b|\^?)(?:[A-Z][a-zA-Z]+):(?:[^:\(\)<>\s\']?[^\s<\'\",:\!\010\006]*(?:\s(?![\x21-\x7e]))?(?<![,\.\)>]))|".
  +    "(?:\b|\^?)(?:[A-Z][a-zA-Z]+):(?:[^:\(\)<>\s\']?[^\s<\'\",:\!\010\006]+(?:\s(?![\x21-\x7e]))?(?<![,\.\)>]))|".
       #"(\b|\^?)([A-Z][a-zA-Z]+):([^:\(\)<>\s\']?[^<>\s\'\",:\?\!\010\006]*(\s(?![\x21-\x7e]))?)";
       # for PR #301713
       #
  @@ -2270,7 +2270,8 @@
         break;
       }
   
  -    if (($p=strpos($url,':')) !== false and isset($url{$p+1}) and $url{$p+1}!=':') {
  +    if (($p=strpos($url,':')) !== false and
  +        (!isset($url{$p+1}) or (isset($url{$p+1}) and $url{$p+1}!=':'))) {
         if ($url[0]=='a') # attachment:
           return $this->macro_repl('attachment',substr($url,11));
   
  
  
  


wkpark      2008/12/20 14:04:07

  Modified:    .        wiki.php
  Log:
  fixed nonexists css..
  
  Revision  Changes    Path
  1.430     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.429
  retrieving revision 1.430
  diff -u -r1.429 -r1.430
  --- wiki.php	20 Dec 2008 04:56:15 -0000	1.429
  +++ wiki.php	20 Dec 2008 05:04:07 -0000	1.430
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.429 2008/12/20 04:56:15 wkpark Exp $
  +// $Id: wiki.php,v 1.430 2008/12/20 05:04:07 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.429 $',1,-1);
  +$_revision = substr('$Revision: 1.430 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2664,7 +2664,7 @@
     }
   
     function nonexists_simple($word,$url) {
  -    return "<a class='nonexistent' href='$url'>?</a>$word";
  +    return "<a class='nonexistent nomarkup' href='$url'>?</a>$word";
     }
   
     function nonexists_nolink($word,$url) {
  @@ -2692,7 +2692,7 @@
           $link=strtok($word,';').';';$last=strtok('');
         } else
           $last=substr($word,1);
  -      return "<a class='nonexistent' href='$url'>$link</a>".$last;
  +      return "<span><a class='nonexistent' href='$url'>$link</a>".$last.'<span>';
       }
       if (strtolower($DBInfo->charset) == 'utf-8')
         $utfword=$word;
  
  
  


wkpark      2008/12/20 14:04:08

  Modified:    css      print.css slide.css
  Log:
  fixed nonexists css..
  
  Revision  Changes    Path
  1.15      +1 -1      moniwiki/css/print.css
  
  Index: print.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/print.css,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- print.css	10 Dec 2008 13:10:58 -0000	1.14
  +++ print.css	20 Dec 2008 05:04:07 -0000	1.15
  @@ -190,7 +190,7 @@
   }
   
   a.purple { font-size: 10px; display:none;}
  -a.nonexistent {display: none;}
  +a.nonexistent.nomarkup {display: none;}
   /* Blog CSS */
   a.perma { font-size: 10px; display:none;}
   a.purple { display: none;}
  
  
  
  1.8       +1 -0      moniwiki/css/slide.css
  
  Index: slide.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/slide.css,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- slide.css	20 Dec 2008 04:48:08 -0000	1.7
  +++ slide.css	20 Dec 2008 05:04:07 -0000	1.8
  @@ -194,6 +194,7 @@
   }
   
   a.purple { font-size: 10px; display:none;}
  +a.nonexistent.nomarkup {display: none;}
   /* Blog CSS */
   a.perma { font-size: 10px; display:none;}
   a.purple { display: none;}
  
  
  


wkpark      2008/12/20 16:04:06

  Modified:    .        upgrade.sh
  Log:
  can backup as patch/tar
  
  Revision  Changes    Path
  1.4       +53 -8     moniwiki/upgrade.sh
  
  Index: upgrade.sh
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/upgrade.sh,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- upgrade.sh	20 Dec 2008 04:14:30 -0000	1.3
  +++ upgrade.sh	20 Dec 2008 07:04:06 -0000	1.4
  @@ -1,5 +1,5 @@
   #!/bin/sh
  -# $Id: upgrade.sh,v 1.3 2008/12/20 04:14:30 wkpark Exp $
  +# $Id: upgrade.sh,v 1.4 2008/12/20 07:04:06 wkpark Exp $
   
   if [ -z "$1" ]; then
   	cat <<HELP
  @@ -101,13 +101,57 @@
   $MESSAGE
   echo "*** Backup the old files ***"
   $NORMAL
  +
  +$WARNING
  +echo -n " What type of backup do you want to ? ("
  +$MAGENTA
  +echo -n B
  +$WARNING
  +echo -n "ackup/"
  +$MAGENTA
  +echo -n t
  +$WARNING
  +echo -n "ar/"
  +$MAGENTA
  +echo -n p
  +$WARNING
  +echo "atch) "
  +$NORMAL
  +
  +echo "   (Type 'B/t/p')"
  +read TYPE
  +
   DATE=`date +%Y%m%d-%s`
  -BACKUP=backup/$DATE
  -mkdir -p $BACKUP
  -tar cf - $UPGRADE|(cd $BACKUP;tar xvf -)
  +if [ x$TYPE != xt ] && [ x$TYPE != xp ] ; then
  +        BACKUP=backup/$DATE
  +else
  +        BACKUP=$TMP/$PACKAGE-$DATE
  +fi
   $MESSAGE
  -echo "   Old files are backuped to the $BACKUP/ dir"
  +echo "*** Backup the old files ***"
   $NORMAL
  +mkdir -p $BACKUP
  +tar cf - $UPGRADE|(cd $BACKUP;tar xvf -)
  +
  +if [ x$TYPE = xt ]; then
  +	SAVED="backup/$DATE.tar.gz"
  +        (cd $TMP; tar czvf ../backup/$DATE.tar.gz $PACKAGE-$DATE)
  +        $MESSAGE
  +        echo "   Old files are backuped as a backup/$DATE.tar.gz"
  +        $NORMAL
  +elif [ x$TYPE = xp ]; then
  +	SAVED="backup/$PACKAGE-$DATE.diff"
  +        (cd $TMP; diff -ru moniwiki-$DATE $PACKAGE > ../backup/$PACKAGE-$DATE.diff )
  +        $MESSAGE
  +        echo "   Old files are backuped as a backup/$PACKAGE-$DATE.diff"
  +        $NORMAL
  +else
  +	SAVED="$BACKUP/ dir"
  +        $MESSAGE
  +        echo "   Old files are backuped to the $SAVED"
  +        $NORMAL
  +fi
  +
   $WARNING
   echo " Are your really want to upgrade $PACKAGE ?"
   $NORMAL
  @@ -129,10 +173,11 @@
   (cd $TMP/$PACKAGE;tar cf - $UPGRADE|(cd ../..;tar xvf -))
   rm -r $TMP
   $SUCCESS
  +echo
   echo "$PACKAGE is successfully upgraded."
  -echo ""
  -echo ""
  +echo
  +echo
   echo "   All different files are       "
   echo "       backuped in the           "
  -echo "       $BACKUP dir now. :)       "
  +echo "       $SAVED now. :)       "
   $NORMAL
  
  
  


wkpark      2008/12/20 16:37:11

  Modified:    .        upgrade.sh
  Log:
  restore also supported now :>
  
  Revision  Changes    Path
  1.5       +5 -5      moniwiki/upgrade.sh
  
  Index: upgrade.sh
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/upgrade.sh,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- upgrade.sh	20 Dec 2008 07:04:06 -0000	1.4
  +++ upgrade.sh	20 Dec 2008 07:37:11 -0000	1.5
  @@ -1,5 +1,5 @@
   #!/bin/sh
  -# $Id: upgrade.sh,v 1.4 2008/12/20 07:04:06 wkpark Exp $
  +# $Id: upgrade.sh,v 1.5 2008/12/20 07:37:11 wkpark Exp $
   
   if [ -z "$1" ]; then
   	cat <<HELP
  @@ -69,9 +69,9 @@
   $MESSAGE
   echo "*** Extract tarball ***"
   $NORMAL
  -mkdir -p $TMP
  -echo tar xzf $TAR -C$TMP
  -tar xzf $TAR -C$TMP
  +mkdir -p $TMP/$PACKAGE
  +echo tar xzf $TAR --strip-components=1 -C$TMP/$PACKAGE
  +tar xzf $TAR --strip-components=1 -C$TMP/$PACKAGE
   $MESSAGE
   echo "*** Make the checksum list for the new version ***"
   $NORMAL
  @@ -93,6 +93,7 @@
   UPGRADE=`diff checksum-current checksum-new |grep '^<'|cut -d' ' -f4`
   
   if [ -z "$UPGRADE" ]; then
  +	rm -r $TMP
   	$FAILURE
   	echo "You have already installed the latest version"
   	$NORMAL
  @@ -107,7 +108,7 @@
   $MAGENTA
   echo -n B
   $WARNING
  -echo -n "ackup/"
  +echo -n "ackup(default)/"
   $MAGENTA
   echo -n t
   $WARNING
  @@ -176,7 +177,6 @@
   echo
   echo "$PACKAGE is successfully upgraded."
   echo
  -echo
   echo "   All different files are       "
   echo "       backuped in the           "
   echo "       $SAVED now. :)       "
  
  
  


wkpark      2008/12/20 19:12:30

  Modified:    lib      fckpacker.php
  Log:
  _RemoveInnerSpaces bug fixed : check object member name or not
  fixed string check problem. : correctly detect quoted strings
  
  Revision  Changes    Path
  1.4       +20 -13    moniwiki/lib/fckpacker.php
  
  Index: fckpacker.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/fckpacker.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- fckpacker.php	18 Dec 2008 14:53:52 -0000	1.3
  +++ fckpacker.php	20 Dec 2008 10:12:30 -0000	1.4
  @@ -3,7 +3,7 @@
    * This is a reduced FCKpackager file for Javascript Compression
    * for MoniWiki.
    *
  - * $Id: fckpacker.php,v 1.3 2008/12/18 14:53:52 wkpark Exp $
  + * $Id: fckpacker.php,v 1.4 2008/12/20 10:12:30 wkpark Exp $
    *
    * ---------------------------------------------------------------------------
    * FCKpackager - JavaScript Packager and Compressor - http://www.fckeditor.net
  @@ -163,7 +163,7 @@
   
       function _ProcessVars( $source, $vars )
       {
  -        $protected = array('self','event');
  +        $protected = array('self','event'); // workaround for eval()
           foreach ( $vars as $var )
           {
               if ( strlen( $var) > 2 and !in_array($var, $protected))
  @@ -183,7 +183,7 @@
   
           $var = $this->_VarPrefix . $this->_VarChars[ $this->_LastCharIndex++ ] ;
   
  -        if ( preg_match( '/(?<!\w|\d|\.)' . preg_quote( $var ) . '(?!\w|\d|:)/', $this->_Function ) )
  +        if ( preg_match( '/(?<!\w|\d|\.)' . preg_quote( $var ) . '(?!\w|\d)/', $this->_Function ) )
               return $this->_GetVarName() ;
           else
               return $var ;
  @@ -211,6 +211,11 @@
       function FCKJavaScriptCompressor()
       {}
   
  +    function Revision()
  +    {
  +        return trim(substr('$Revision: 1.4 $',10,-1));
  +    }
  +
       // Call it statically. E.g.: FCKJavaScriptCompressor::Compress( ... )
       function Compress( $script, $constantsProcessor )
       {
  @@ -249,11 +254,6 @@
               '/^([^\r\n""\']*?\()\s+(.*?)\s+(?=\)[^\)]*$)/m',
               '$1$2', $script ) ;
   
  -        # Remove spaces on "if|else (": "if|else (" = "if|else("
  -        #$script = preg_replace(
  -        #   '/^([^\r\n""\']*?(?:if|else))\s+\(/m',
  -        #   '$1(', $script ) ;
  -
           // Concatenate lines that doesn't end with [;{}] using a space
           $script = preg_replace(
               '/(?<![;{}\n\r\s])\s*[\n\r]+\s*(?![\s\n\r{}])/s',
  @@ -275,7 +275,7 @@
               '', $script ) ;
   
           // Remove the spaces between statements.
  -        #$script = FCKJavaScriptCompressor::_RemoveInnerSpaces( $script ) ;
  +        $script = FCKJavaScriptCompressor::_RemoveInnerSpaces( $script ) ;
           # error with mootools
   
           // Process constants.   // CHECK
  @@ -306,9 +306,14 @@
   
       function _RemoveInnerSpaces( $script )
       {
  -        return preg_replace_callback(
  -            '/(?:\s*[=?:+\-*\/&,;><|!]\s*)|(?:[(\[]\s+)|(?:\s+[)\]])/',
  -            array( 'FCKJavaScriptCompressor', '_RemoveInnerSpacesMatch' ), $script ) ;
  +        $script = preg_replace('/([:=?+\-*\/&,;><|!{}\[\]\(\)])[ ]+(?=\S)/', '\\1', $script);
  +        $script = preg_replace('/(?<=\S)[ ]+([:=?+\-*\/&,;><|!{}\[\]\(\)])/', '\\1', $script);
  +        // workaround for a = (b) ? c:d; case. c is not a object menber.
  +        $script = preg_replace('/(?<=\?)([^:]+):/', ' \\1 :', $script);
  +        return $script;
  +        #return preg_replace_callback(
  +        #    '/(?:\s*[=?:+\-*\/&,;><|!]\s*)|(?:[(\[]\s+)|(?:\s+[)\]])/',
  +        #    array( 'FCKJavaScriptCompressor', '_RemoveInnerSpacesMatch' ), $script ) ;
       }
   
       function _RemoveInnerSpacesMatch( $match )
  @@ -367,7 +372,9 @@
       {
           // Catches string literals, regular expressions and conditional comments.
           return preg_replace_callback(
  -            '/(?:("|\').*?(?<!\\\\)\1)|(?:(?<![\*\/\\\\])\/[^\/\*].*?(?<!\\\\)\/(?=([\.\w])|(\s*[,;}\)])))|(?s:\/\*@(?:cc_on|if|elif|else|end).*?@\*\/)/',
  +            // http://blog.stevenlevithan.com/archives/match-quoted-string
  +            #'/(?:("|\').*?(?<!\\\\)\1)|(?:(?<![\*\/\\\\])\/[^\/\*].*?(?<!\\\\)\/(?=([\.\w])|(\s*[,;}\)])))|(?s:\/\*@(?:cc_on|if|elif|else|end).*?@\*\/)/',
  +            '/(?:(["\'])(?:\\\\?+.)*?\1)|(?:(?<![\*\/\\\\])\/[^\/\*].*?(?<!\\\\)\/(?=([\.\w])|(\s*[,;}\)])))|(?s:\/\*@(?:cc_on|if|elif|else|end).*?@\*\/)/',
               array( &$this, '_ProtectStringsMatch' ), $source ) ;
       }
   
  
  
  


wkpark      2008/12/20 22:10:02

  Modified:    lib      fckpacker.php
  Log:
  remove some duplicate space compression.
  detect CRLF and replace it with "\n"
  
  Revision  Changes    Path
  1.5       +33 -33    moniwiki/lib/fckpacker.php
  
  Index: fckpacker.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/fckpacker.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- fckpacker.php	20 Dec 2008 10:12:30 -0000	1.4
  +++ fckpacker.php	20 Dec 2008 13:10:02 -0000	1.5
  @@ -3,7 +3,7 @@
    * This is a reduced FCKpackager file for Javascript Compression
    * for MoniWiki.
    *
  - * $Id: fckpacker.php,v 1.4 2008/12/20 10:12:30 wkpark Exp $
  + * $Id: fckpacker.php,v 1.5 2008/12/20 13:10:02 wkpark Exp $
    *
    * ---------------------------------------------------------------------------
    * FCKpackager - JavaScript Packager and Compressor - http://www.fckeditor.net
  @@ -213,15 +213,20 @@
   
       function Revision()
       {
  -        return trim(substr('$Revision: 1.4 $',10,-1));
  +        return trim(substr('$Revision: 1.5 $',10,-1));
       }
   
       // Call it statically. E.g.: FCKJavaScriptCompressor::Compress( ... )
       function Compress( $script, $constantsProcessor )
       {
  +        // detect cr and replace it with "\n"
  +        preg_match('/[\r\n]/s', $script, $cr);
  +        if (!empty($cr[0]) and $cr[0] != "\n")
  +            $script = str_replace($cr[0],"\n",$script);
  +
           // Concatenates all string with escaping new lines strings (ending with \).
           $script = preg_replace(
  -            '/\\\\[\n\r]+/s',
  +            '/\\\\\n+/s',
               '\n', $script ) ;
   
           $stringsProc = new FCKStringsProcessor() ;
  @@ -229,49 +234,49 @@
           // Protect the script strings.
           $script = $stringsProc->ProtectStrings( $script ) ;
   
  -        // Remove "/* */" comments
  +        // Remove "/* */" "//" comments
           $script = preg_replace(
  -            '/(?<!\/)\/\*.*?\*\//s',
  -            '', $script ) ;
  -
  -        // Remove "//" comments
  -        $script = preg_replace(
  -                '/\/\/.*$/m',
  -                '', $script ) ;
  +            array('/(?<!\/)\/\*.*?\*\//s', '/\/\/.*$/m'),
  +            array('',''),
  +            $script ) ;
           
           // Remove spaces before the ";" at the end of the lines
  -        $script = preg_replace(
  -            '/\s*(?=;\s*$)/m',
  -            '', $script ) ;
  +        //$script = preg_replace(
  +        //    '/\s*(?=;\s*$)/m',
  +        //    '', $script ) ;
   
           // Remove spaces next to "="
  -        $script = preg_replace(
  -            '/^([^"\'\r\n]*?)\s*=\s*/m',
  -            '$1=', $script ) ;
  +        //$script = preg_replace(
  +        //    '/^([^"\'\r\n]*?)\s*=\s*/m',
  +        //    '$1=', $script ) ;
   
           // Remove spaces on "()": "( content )" = "(content)"
  -        $script = preg_replace(
  -            '/^([^\r\n""\']*?\()\s+(.*?)\s+(?=\)[^\)]*$)/m',
  -            '$1$2', $script ) ;
  +        //$script = preg_replace(
  +        //    '/^([^\r\n""\']*?\()\s+(.*?)\s+(?=\)[^\)]*$)/m',
  +        //    '$1$2', $script ) ;
   
           // Concatenate lines that doesn't end with [;{}] using a space
           $script = preg_replace(
  -            '/(?<![;{}\n\r\s])\s*[\n\r]+\s*(?![\s\n\r{}])/s',
  +            '/(?<![;{}\n\s])\s*\n+\s*(?![\s\n{}])/s',
               ' ', $script ) ;
   
           // Concatenate lines that end with "}" using a "\n", except for "else",
           // "while", "catch" and "finally" cases, or when followed by, "'", ";",
           // "}", ")" or "]".
           $script = preg_replace(
  -            '/\s*}\s*[\n\r]+\s*(?!\s*(else|catch|finally|while|[\]}\),;]))/s',
  +            '/\s*}\s*\n+\s*(?!\s*(else|catch|finally|while|[\]}\),;]))/s',
               "}\n", $script ) ;
   
  -	// Concat lines that end with ";"
  -        $script = preg_replace('/\s*;\s*[\n\r]+\s*/s',';', $script ) ;
  +	// Concat lines that end with ";" or "{"
  +        // $script = preg_replace('/\s*([;{])\s*[\n\r]+\s*/s','\\1', $script ) ;
  +        $script = preg_replace('/\s*([;{])\s*/s','\\1', $script ) ;
   
           // Remove blank lines, spaces at the begining or the at the end and \n\r
  +        //$script = preg_replace(
  +        //    '/(^\s*$)|(^\s+)|(\s+$\n)/m',
  +        //    '', $script ) ;
           $script = preg_replace(
  -            '/(^\s*$)|(^\s+)|(\s+$\n)/m',
  +            '/(^\s*$)|(^\s+)/m',
               '', $script ) ;
   
           // Remove the spaces between statements.
  @@ -282,15 +287,10 @@
           if ( $constantsProcessor->HasConstants )
               $script = $constantsProcessor->Process( $script );
   
  -        // Replace "new Object()".
  -        $script = preg_replace(
  -            '/new Object\(\)/',
  -            '{}', $script ) ;
  -
  -        // Replace "new Array()".
  +        // Replace "new Object()" "new Array()".
           $script = preg_replace(
  -            '/new Array\(\)/',
  -            '[]', $script ) ;
  +            array('/new\s+Object\(\)/','/new\s+Array\(\)/'),
  +            array('{}','[]'), $script ) ;
   
           // Process function contents, renaming parameters and variables.
           $script = FCKJavaScriptCompressor::_ProcessFunctions( $script ) ;
  
  
  


wkpark      2008/12/20 22:36:46

  Modified:    .        config.php.default
  Log:
  add a $myprocessors setting to use vim processor as default colorizer
  
  Revision  Changes    Path
  1.47      +10 -1     moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.46
  retrieving revision 1.47
  diff -u -r1.46 -r1.47
  --- config.php.default	16 Dec 2008 15:20:01 -0000	1.46
  +++ config.php.default	20 Dec 2008 13:36:46 -0000	1.47
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.46 2008/12/16 15:20:01 wkpark Exp $
  +# $Id: config.php.default,v 1.47 2008/12/20 13:36:46 wkpark Exp $
   #
   $sitename='UnnamedWiki'; # site name
   $data_dir= './data';
  @@ -143,6 +143,12 @@
   #$password_length=6;
   #$use_convert_thumbs=0; # for GalleryMacro
   
  +$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',
  +);
   #$myprocessors=array('latex'=>'mimetex');
   #$myplugins=array('FullSearch'=>'FastSearch'); # substitute action/macro
   #$inline_latex='mimetex';
  @@ -236,6 +242,9 @@
   $use_save_refresh=2;
   $use_refresh=2;
   #$cache_public_dir='./_cache'; # enhanced caching
  +$cachetime=0;
  +$cache_public_dir='./_cache';
  +$cache_public_url=$url_prefix.'/_cache';
   #$no_404=1; # for IIS
   #$nofancy_404=1; # simplified 404 msg for robots etc.
   #$toolbar_iconset='mediawiki'; # change the toolbar iconset 
  
  
  


wkpark      2008/12/20 22:37:18

  Modified:    css      kbd.js
  Log:
  fix for without status (go button)
  
  Revision  Changes    Path
  1.16      +4 -4      moniwiki/css/kbd.js
  
  Index: kbd.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/kbd.js,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- kbd.js	12 Dec 2008 14:41:09 -0000	1.15
  +++ kbd.js	20 Dec 2008 13:37:18 -0000	1.16
  @@ -6,7 +6,7 @@
   
      distributable under GPL
   
  -   $Id: kbd.js,v 1.15 2008/12/12 14:41:09 wkpark Exp $
  +   $Id: kbd.js,v 1.16 2008/12/20 13:37:18 wkpark Exp $
   
      CHANGES
   
  @@ -133,9 +133,9 @@
           if (go) {
   		goValue=go.elements['value'];
   		goAction=go.elements['action'];
  -		goStatus=go.elements['status'];
  +		goStatus=go.elements['status'] || null;
   		val = goValue.value || "", act="goto";
  -		stat = goStatus.value || "Go";
  +		stat = goStatus ? goStatus.value:null;
           } else {
   		val = "", act="goto";
   		stat = "Go";
  @@ -195,7 +195,7 @@
   				if (val == "/" || val == "?") val=val.substr(0,val.length-1);
   				go ? goValue.value=val:null;
   				go ? goAction.value=act:null;
  -				go ? goStatus.value=stat:null;
  +				go && goStatus ? goStatus.value=stat:null;
   				return;
   			}
   		}
  
  
  


wkpark      2008/12/20 23:05:19

  Modified:    .        upgrade.sh
  Log:
  fixup to copy new files
  
  Revision  Changes    Path
  1.6       +30 -22    moniwiki/upgrade.sh
  
  Index: upgrade.sh
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/upgrade.sh,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- upgrade.sh	20 Dec 2008 07:37:11 -0000	1.5
  +++ upgrade.sh	20 Dec 2008 14:05:19 -0000	1.6
  @@ -1,5 +1,5 @@
   #!/bin/sh
  -# $Id: upgrade.sh,v 1.5 2008/12/20 07:37:11 wkpark Exp $
  +# $Id: upgrade.sh,v 1.6 2008/12/20 14:05:19 wkpark Exp $
   
   if [ -z "$1" ]; then
   	cat <<HELP
  @@ -91,8 +91,9 @@
   fi
   
   UPGRADE=`diff checksum-current checksum-new |grep '^<'|cut -d' ' -f4`
  +NEW=`diff checksum-current checksum-new |grep '^\(<\|>\)' | cut -d' ' -f4|sort |uniq`
   
  -if [ -z "$UPGRADE" ]; then
  +if [ -z "$UPGRADE" ] && [ -z "$NEW" ] ; then
   	rm -r $TMP
   	$FAILURE
   	echo "You have already installed the latest version"
  @@ -129,28 +130,35 @@
           BACKUP=$TMP/$PACKAGE-$DATE
   fi
   $MESSAGE
  -echo "*** Backup the old files ***"
  -$NORMAL
  -mkdir -p $BACKUP
  -tar cf - $UPGRADE|(cd $BACKUP;tar xvf -)
   
  -if [ x$TYPE = xt ]; then
  -	SAVED="backup/$DATE.tar.gz"
  -        (cd $TMP; tar czvf ../backup/$DATE.tar.gz $PACKAGE-$DATE)
  -        $MESSAGE
  -        echo "   Old files are backuped as a backup/$DATE.tar.gz"
  -        $NORMAL
  -elif [ x$TYPE = xp ]; then
  -	SAVED="backup/$PACKAGE-$DATE.diff"
  -        (cd $TMP; diff -ru moniwiki-$DATE $PACKAGE > ../backup/$PACKAGE-$DATE.diff )
  -        $MESSAGE
  -        echo "   Old files are backuped as a backup/$PACKAGE-$DATE.diff"
  -        $NORMAL
  +if [ ! -z "$UPGRADE" ]; then
  +	echo "*** Backup the old files ***"
  +	$NORMAL
  +	mkdir -p $BACKUP
  +	tar cf - $UPGRADE|(cd $BACKUP;tar xvf -)
  +
  +	if [ x$TYPE = xt ]; then
  +		SAVED="backup/$DATE.tar.gz"
  +        	(cd $TMP; tar czvf ../backup/$DATE.tar.gz $PACKAGE-$DATE)
  +        	$MESSAGE
  +        	echo "   Old files are backuped as a backup/$DATE.tar.gz"
  +        	$NORMAL
  +	elif [ x$TYPE = xp ]; then
  +		SAVED="backup/$PACKAGE-$DATE.diff"
  +        	(cd $TMP; diff -ru moniwiki-$DATE $PACKAGE > ../backup/$PACKAGE-$DATE.diff )
  +        	$MESSAGE
  +        	echo "   Old files are backuped as a backup/$PACKAGE-$DATE.diff"
  +        	$NORMAL
  +	else
  +		SAVED="$BACKUP/ dir"
  +        	$MESSAGE
  +        	echo "   Old files are backuped to the $SAVED"
  +        	$NORMAL
  +	fi
   else
  -	SAVED="$BACKUP/ dir"
  -        $MESSAGE
  -        echo "   Old files are backuped to the $SAVED"
  -        $NORMAL
  +	$WARNING
  +	echo " You don't need to backup files !"
  +	$NORMAL
   fi
   
   $WARNING
  @@ -171,7 +179,7 @@
   	echo "' to real upgrade"
   	exit -1
   fi
  -(cd $TMP/$PACKAGE;tar cf - $UPGRADE|(cd ../..;tar xvf -))
  +(cd $TMP/$PACKAGE;tar cf - $NEW|(cd ../..;tar xvf -))
   rm -r $TMP
   $SUCCESS
   echo
  
  
  


wkpark      2008/12/20 23:06:27

  Modified:    .        monisetup.php config.php.default
  Log:
  config.php: add a i18n.js
  monisetup.php: fix for array()
  
  Revision  Changes    Path
  1.36      +2 -2      moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- monisetup.php	17 Dec 2008 12:38:28 -0000	1.35
  +++ monisetup.php	20 Dec 2008 14:06:27 -0000	1.36
  @@ -1,7 +1,7 @@
   <?php
   // Copyright 2003-2007 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.35 2008/12/17 12:38:28 wkpark Exp $
  +// $Id: monisetup.php,v 1.36 2008/12/20 14:06:27 wkpark Exp $
   
   function _stripslashes($str) {
     return get_magic_quotes_gpc() ? stripslashes($str):$str;
  @@ -210,8 +210,8 @@
            $t=@eval("\$$key=\"$val\";");
            $val=$save_val;
         } else if (is_string($val)) {
  +         $val = str_replace('&gt;','>',$val);
            if (strpos($val,"\n")===false) {
  -           $val = str_replace('&gt;','>',$val);
              $t=eval("\$$key=$val;");
            } else {
              $t=@eval("\$$key=$val;");
  
  
  
  1.48      +2 -1      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.47
  retrieving revision 1.48
  diff -u -r1.47 -r1.48
  --- config.php.default	20 Dec 2008 13:36:46 -0000	1.47
  +++ config.php.default	20 Dec 2008 14:06:27 -0000	1.48
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.47 2008/12/20 13:36:46 wkpark Exp $
  +# $Id: config.php.default,v 1.48 2008/12/20 14:06:27 wkpark Exp $
   #
   $sitename='UnnamedWiki'; # site name
   $data_dir= './data';
  @@ -117,6 +117,7 @@
   #EOF;
   # alternatively you can use the $javascripts option
   $javascripts=array(
  +	'js/i18n.js',
   	'Wikiwyg/lib/Wikiwyg.js',
   	'Wikiwyg/lib/Wikiwyg/Util.js',
   	'Wikiwyg/lib/Wikiwyg/Toolbar.js',
  
  
  


wkpark      2008/12/20 23:24:48

  Modified:    .        upgrade.sh
  Log:
  check newer upgrade.sh script found or not
  
  Revision  Changes    Path
  1.7       +26 -0     moniwiki/upgrade.sh
  
  Index: upgrade.sh
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/upgrade.sh,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- upgrade.sh	20 Dec 2008 14:05:19 -0000	1.6
  +++ upgrade.sh	20 Dec 2008 14:24:48 -0000	1.7
  @@ -1,5 +1,5 @@
   #!/bin/sh
  -# $Id: upgrade.sh,v 1.6 2008/12/20 14:05:19 wkpark Exp $
  +# $Id: upgrade.sh,v 1.7 2008/12/20 14:24:48 wkpark Exp $
   
   if [ -z "$1" ]; then
   	cat <<HELP
  @@ -73,6 +73,32 @@
   echo tar xzf $TAR --strip-components=1 -C$TMP/$PACKAGE
   tar xzf $TAR --strip-components=1 -C$TMP/$PACKAGE
   $MESSAGE
  +
  +echo "*** Check new upgrade.sh script ***"
  +DIFF=$(diff $0 $TMP/$PACKAGE/upgrade.sh)
  +if [ ! -z "$DIFF" ]; then
  +	$FAILURE
  +	echo "WARN: new upgrade.sh script found ***"
  +	$NORMAL
  +	cp -f $TMP/$PACKAGE/upgrade.sh up.sh
  +	$WARNING
  +	echo " new upgrade.sh file was copied as 'up.sh'"
  +	echo " Please execute following command"
  +	echo
  +	$MAGENTA
  +	echo " sh up.sh $TAR"
  +	echo
  +	$WARNING
  +	echo -n "Ignore it and try to continue ? (y/N) "
  +	read YES
  +	if [ x$YES != xy ]; then
  +		rm -r $TMP
  +		$NORMAL
  +		exit;
  +	fi
  +fi
  +
  +$MESSAGE
   echo "*** Make the checksum list for the new version ***"
   $NORMAL
   
  
  
  


wkpark      2008/12/21 00:13:02

  Modified:    lib      fckpacker.php
  Log:
  oops detect CR correctly.
  
  Revision  Changes    Path
  1.6       +3 -3      moniwiki/lib/fckpacker.php
  
  Index: fckpacker.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/fckpacker.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- fckpacker.php	20 Dec 2008 13:10:02 -0000	1.5
  +++ fckpacker.php	20 Dec 2008 15:13:02 -0000	1.6
  @@ -3,7 +3,7 @@
    * This is a reduced FCKpackager file for Javascript Compression
    * for MoniWiki.
    *
  - * $Id: fckpacker.php,v 1.5 2008/12/20 13:10:02 wkpark Exp $
  + * $Id: fckpacker.php,v 1.6 2008/12/20 15:13:02 wkpark Exp $
    *
    * ---------------------------------------------------------------------------
    * FCKpackager - JavaScript Packager and Compressor - http://www.fckeditor.net
  @@ -213,14 +213,14 @@
   
       function Revision()
       {
  -        return trim(substr('$Revision: 1.5 $',10,-1));
  +        return trim(substr('$Revision: 1.6 $',10,-1));
       }
   
       // Call it statically. E.g.: FCKJavaScriptCompressor::Compress( ... )
       function Compress( $script, $constantsProcessor )
       {
           // detect cr and replace it with "\n"
  -        preg_match('/[\r\n]/s', $script, $cr);
  +        preg_match('/(\r\n|\r|\n)/s', $script, $cr);
           if (!empty($cr[0]) and $cr[0] != "\n")
               $script = str_replace($cr[0],"\n",$script);
   
  
  
  


wkpark      2008/12/21 18:34:13

  Modified:    .        wiki.php
  Log:
  fixed PR #305207: multi-line table parsing error with a pre block.
  use isset/empty to fixup WARNING messages
  
  Revision  Changes    Path
  1.431     +40 -32    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.430
  retrieving revision 1.431
  diff -u -r1.430 -r1.431
  --- wiki.php	20 Dec 2008 05:04:07 -0000	1.430
  +++ wiki.php	21 Dec 2008 09:34:13 -0000	1.431
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.430 2008/12/20 05:04:07 wkpark Exp $
  +// $Id: wiki.php,v 1.431 2008/12/21 09:34:13 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.430 $',1,-1);
  +$_revision = substr('$Revision: 1.431 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2988,6 +2988,7 @@
   
     function _list($on,$list_type,$numtype="",$closetype="",
       $divtype=' class="indent"') {
  +    $close='';$open='';
       if ($list_type=="dd") {
         if ($on)
            #$list_type="dl><dd";
  @@ -3238,6 +3239,7 @@
     }
   
     function _div($on,&$in_div,&$enclose,$attr='') {
  +    $close=$open='';
       $tag=array("</div>\n","<div$attr>");
       if ($on) { $in_div++; $open=$enclose;}
       else {
  @@ -3246,6 +3248,7 @@
         $in_div--;
       }
       $enclose='';
  +    $purple='';
       if (!$on) $purple=$this->_purple();
       #return "(".$in_div.")".$tag[$on];
       return $purple.$open.$tag[$on].$close;
  @@ -3253,6 +3256,7 @@
   
     function _li($on,$empty='') {
       $tag=array("</li>\n",'<li>');
  +    $purple='';
       if (!$on and !$empty) $purple=$this->_purple();
       return $purple.$tag[$on];
     }
  @@ -3452,6 +3456,7 @@
       $in_div=0;
       $in_li=0;
       $in_pre=0;
  +    $in_quote=0;
       $in_table=0;
       $li_open=0;
       $li_empty=0;
  @@ -3522,29 +3527,6 @@
           unset($out);
           continue; # comments
         }
  -      $ll=strlen($line);
  -      if ($line[$ll-1]=='&') {
  -        $oline.=substr($line,0,-1)."\n";
  -        continue;
  -      } else if (empty($oline) and preg_match('/^\s*\|\|/',$line) and !preg_match('/\|\|\s*$/',$line)) {
  -        $oline.=$line."\n";
  -        continue;
  -      } else if (!empty($oline) and ($in_table or preg_match('/^\s*\|\|/',$oline)) and !preg_match('/\|\|\s*$/',$line)) {
  -        $oline.=$line."\n";
  -        continue;
  -      } else {
  -        $line=$oline.$line;
  -        $oline='';
  -      }
  -
  -      $p_closeopen='';
  -      if (preg_match('/-{4,}$/',$line)) {
  -        if ($this->auto_linebreak) $this->nobr=1; // XXX
  -        if ($in_p) { $p_closeopen=$this->_div(0,$in_div,$div_enclose); $in_p='';}
  -      } else if ($in_p == '' and $line!=='') {
  -        $p_closeopen=$this->_div(1,$in_div,$div_enclose);
  -        $in_p= $line;
  -      }
   
         if ($in_pre) {
            if (strpos($line,"}}}")===false) {
  @@ -3565,6 +3547,7 @@
         #} else if (preg_match("/(\{{2,3})[^{}]*$/",$line,$m)) {
         } else if (!(strpos($line,"{{{")===false) and 
                    preg_match("/{{{[^{}]*$/",$line)) {
  +
            #$p=strrpos($line,"{{{")-2;
            #$p= strlen($line) - strpos(strrev($line),$m[1]) - strlen($m[1]);
            $p= strlen($line) - strpos(strrev($line),'{{{') - 3;
  @@ -3574,7 +3557,8 @@
            $np=0;
   
            # check processor
  -         if ($line[$p+3] == "#" and $line[$p+4] == "!") {
  +         $t = isset($line{$p+3});
  +         if ($t and $line[$p+3] == "#" and $line[$p+4] == "!") {
               list($tag,$dummy)=explode(" ",substr($line,$p+5),2);
   
               if (function_exists("processor_".$tag)) {
  @@ -3583,7 +3567,7 @@
                 include_once("plugin/processor/$pf.php");
                 $processor=$pf;
               }
  -         } else if ($line[$p+3] == ":") {
  +         } else if ($t and $line[$p+3] == ":") {
               # new formatting rule for a quote block (pre block + wikilinks)
               $line[$p+3]=" ";
               $np=1;
  @@ -3603,6 +3587,30 @@
            if (!$line and $this->auto_linebreak) $this->nobr=1;
         }
   
  +      $ll=strlen($line);
  +      if ($line[$ll-1]=='&') {
  +        $oline.=substr($line,0,-1)."\n";
  +        continue;
  +      } else if (empty($oline) and preg_match('/^\s*\|\|/',$line) and !preg_match('/\|\|\s*$/',$line)) {
  +        $oline.=$line."\n";
  +        continue;
  +      } else if (!empty($oline) and ($in_table or preg_match('/^\s*\|\|/',$oline)) and !preg_match('/\|\|\s*$/',$line)) {
  +        $oline.=$line."\n";
  +        continue;
  +      } else {
  +        $line=$oline.$line;
  +        $oline='';
  +      }
  +
  +      $p_closeopen='';
  +      if (preg_match('/-{4,}$/',$line)) {
  +        if ($this->auto_linebreak) $this->nobr=1; // XXX
  +        if ($in_p) { $p_closeopen=$this->_div(0,$in_div,$div_enclose); $in_p='';}
  +      } else if ($in_p == '' and $line!=='') {
  +        $p_closeopen=$this->_div(1,$in_div,$div_enclose);
  +        $in_p= $line;
  +      }
  +
         // split into chunks
         $chunk=preg_split('/({{{.+}}})/U',$line,-1,PREG_SPLIT_DELIM_CAPTURE);
         $nc='';
  @@ -3767,8 +3775,8 @@
           $line=str_replace('\"','"',$line); # revert \\" to \"
           break;
         }
  +      $tline='';
         if ($this->use_etable && !$in_table && $this->table_line) {
  -        $tline='';      
           $row=$this->_td('||'.$this->table_line,$tr_attr);
             if (!$this->in_tr) {
               $tline="<tr $tr_attr>";
  @@ -3898,7 +3906,7 @@
               $in_quote=0;
            } else {
               # htmlfy '<', '&'
  -            if ($DBInfo->default_pre) {
  +            if (!empty($DBInfo->default_pre)) {
                 $out=$this->processor_repl($DBInfo->default_pre,$this->pre_line,$options);
               } else {
                 $pre=str_replace(array('&','<'),
  @@ -3948,8 +3956,8 @@
                            "\$this->highlight_repl('\\1',\$colref)",$text);
       }
       $fts=array();
  -    if ($pi['#postfilter']) $fts=preg_split('/(\||,)/',$pi['#postfilter']);
  -    if ($this->postfilters) $fts=array_merge($fts,$this->postfilters);
  +    if (!empty($pi['#postfilter'])) $fts=preg_split('/(\||,)/',$pi['#postfilter']);
  +    if (!empty($this->postfilters)) $fts=array_merge($fts,$this->postfilters);
       if ($fts) {
         foreach ($fts as $ft)
           $text=$this->postfilter_repl($ft,$text,$options);
  @@ -4000,7 +4008,7 @@
       if ($this->foots)
         print $this->macro_repl('FootNote','',$options);
   
  -    if ($this->update_pagelinks and $options['pagelinks']) $this->store_pagelinks();
  +    if (!empty($this->update_pagelinks) and !empty($options['pagelinks'])) $this->store_pagelinks();
     }
   
     function register_javascripts($js) {
  
  
  


wkpark      2008/12/22 16:51:20

  Added:       plugin   userinfo.php
  Log:
  add a new admin plugin "UserInfo"
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/userinfo.php
  
  Index: userinfo.php
  ===================================================================
  <?php
  // Copyright 2008 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a sample plugin for the MoniWiki
  //
  // Author: Won-Kyu Park <wkpark@kldp.org>
  // Date: 2008-12-22
  // Name: User Info plugin
  // Description: show user list in this wiki
  // URL: MoniWiki:UserInfoPlugin
  // Version: $Revision: 1.1 $
  // License: GPL
  //
  // Usage: [[UserInfo]], ?action=userinfo
  //
  // $Id: userinfo.php,v 1.1 2008/12/22 07:51:20 wkpark Exp $
  
  function macro_UserInfo($formatter,$value,$options=array()) {
      global $DBInfo;
      if (!$options['id'])
          return sprintf(_("You are not allowed to use the \"%s\" macro."),"UserInfo");
  
      $udb=&$DBInfo->udb;
      $user=&$DBInfo->user;
      $users=$udb->getUserList();
      $title=sprintf(_("Total %d users"),sizeof($users));
  
      $list='';
      if (in_array($user->id,$DBInfo->owners)) {
          foreach ($users as $u) {
              $list.='<li><input type="checkbox" name="uid[]" value="'.$u.'"/>'.
                  $u."</li>\n";
          }
          $formhead="<form method='POST' action=''>";
          $formtail="<input type='hidden' name='action' value='useradmin' />".
              "<input type='submit' value='Delete Users' />".
              "</form>";
      } else {
          if (!empty($DBInfo->use_userinfo)) {
          foreach ($users as $u) {
              $list.='<li>'.$u."</li>\n";
          }
          } else {
              $list.='<li>'._("User infomation is restricted by wikimaster")."</li>\n";
          }
      }
      return "<h2>".$title."</h2>\n".$formhead."<ul>\n".$list."</ul>\n".$formtail;
  }
  
  function do_post_userinfo($formatter,$options) {
      global $DBInfo;
  
      $user=&$DBInfo->user;
  
      $formatter->send_header('',$options);
      if (is_array($DBInfo->owners) and in_array($user->id,$DBInfo->owners)) {
          if ($_POST and $options['uid'] and is_array($options['uid'])) {
              $udb=&$DBInfo->udb;
              $users=$udb->getUserList();
  
              foreach ($options['uid'] as $uid) {
                  $uid=_stripslashes($uid);
                  if (in_array($uid,$users)) {
                      $udb->delUser($uid);
                  }
              }
              $options['msg']= sprintf(_("You are not allowed to \"%s\" !"),"userinfo");
          }
          $list= macro_UserInfo($formatter,'',$options);
      } else {
          $options['msg']= sprintf(_("You are not allowed to \"%s\" !"),"userinfo");
          $list='';
      }
  
      $formatter->send_title('','',$options);
      print $list;
      $formatter->send_footer('',$options);
      return;
  }
  
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2008/12/22 17:33:13

  Modified:    plugin   userinfo.php
  Log:
  make userinfo() action protected.
  
  Revision  Changes    Path
  1.2       +21 -6     moniwiki/plugin/userinfo.php
  
  Index: userinfo.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/userinfo.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- userinfo.php	22 Dec 2008 07:51:20 -0000	1.1
  +++ userinfo.php	22 Dec 2008 08:33:13 -0000	1.2
  @@ -8,12 +8,12 @@
   // Name: User Info plugin
   // Description: show user list in this wiki
   // URL: MoniWiki:UserInfoPlugin
  -// Version: $Revision: 1.1 $
  +// Version: $Revision: 1.2 $
   // License: GPL
   //
   // Usage: [[UserInfo]], ?action=userinfo
   //
  -// $Id: userinfo.php,v 1.1 2008/12/22 07:51:20 wkpark Exp $
  +// $Id: userinfo.php,v 1.2 2008/12/22 08:33:13 wkpark Exp $
   
   function macro_UserInfo($formatter,$value,$options=array()) {
       global $DBInfo;
  @@ -32,9 +32,14 @@
                   $u."</li>\n";
           }
           $formhead="<form method='POST' action=''>";
  -        $formtail="<input type='hidden' name='action' value='useradmin' />".
  -            "<input type='submit' value='Delete Users' />".
  -            "</form>";
  +        $formtail='';
  +        if ($DBInfo->security->is_protected('userinfo',$options))
  +            $formtail= _("Password").
  +                ": <input type='password' name='passwd' /> ";
  +        $formtail.="<input type='hidden' name='action' value='userinfo' />".
  +            "<input type='submit' value='Delete Users' />";
  +
  +        $formtail.= "</form>";
       } else {
           if (!empty($DBInfo->use_userinfo)) {
           foreach ($users as $u) {
  @@ -58,13 +63,23 @@
               $udb=&$DBInfo->udb;
               $users=$udb->getUserList();
   
  +            $del=array();
               foreach ($options['uid'] as $uid) {
                   $uid=_stripslashes($uid);
                   if (in_array($uid,$users)) {
                       $udb->delUser($uid);
  +                    $del[]=$uid;
  +                    
  +                }
  +            }
  +            if (!empty($del)) {
  +                foreach ($del as $d) {
  +                    $k = array_search($d,$udb->users);
  +                    unset($udb->users[$k]);
                   }
  +                $deleted = implode(',',$del);
  +                $options['msg']= sprintf(_("User \"%s\" are deleted !"),$deleted);
               }
  -            $options['msg']= sprintf(_("You are not allowed to \"%s\" !"),"userinfo");
           }
           $list= macro_UserInfo($formatter,'',$options);
       } else {
  
  
  


wkpark      2008/12/22 17:47:40

  Modified:    plugin/security userbased.php
  Log:
  fixed Notice error.
  
  Revision  Changes    Path
  1.7       +4 -2      moniwiki/plugin/security/userbased.php
  
  Index: userbased.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/userbased.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- userbased.php	21 Oct 2004 08:27:07 -0000	1.6
  +++ userbased.php	22 Dec 2008 08:47:40 -0000	1.7
  @@ -1,6 +1,6 @@
   <?php
   # a user based security plugin for the MoniWiki
  -# $Id: userbased.php,v 1.6 2004/10/21 08:27:07 wkpark Exp $
  +# $Id: userbased.php,v 1.7 2008/12/22 08:47:40 wkpark Exp $
   
   class Security_userbased extends Security {
     var $DB;
  @@ -8,7 +8,9 @@
     function Security_userbased($DB='') {
       $this->DB=$DB;
       $this->allowed_users=array_merge($DB->wikimasters,$DB->owners);
  -    $this->public_pages=array_merge($DB->public_pages,array(
  +
  +    $pages = is_array($DB->public_pages) ? $DB->public_pages:array();
  +    $this->public_pages=array_merge($pages,array(
         'WikiSandBox','WikiSandbox','GuestBook','SandBox'));
     }
   
  
  
  


wkpark      2008/12/22 20:03:22

  Modified:    plugin/processor hello.php
  Log:
  this is a sample processor.
  
  Revision  Changes    Path
  1.7       +12 -9     moniwiki/plugin/processor/hello.php
  
  Index: hello.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/hello.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- hello.php	17 Aug 2006 08:01:30 -0000	1.6
  +++ hello.php	22 Dec 2008 11:03:22 -0000	1.7
  @@ -1,20 +1,23 @@
   <?php
  -// Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org>
  -// All rights reserved. Distributable under GPL see COPYING
  -// sample plugin for the MoniWiki
  +// This is a sample plugin for MoniWiki
  +//
  +// Copyright 200X Your Name <foobar at foo.bar>
  +// All rights reserved.
  +// Distributable under GPL/LGPL/BSD etc.
  +// a sample plugin for the MoniWiki
   //
   // Author: Your name <foobar@foo.bar>
  -// Date: 2006-01-01
  -// Name: Hello world
  -// Description: Hello world Processor
  +// Date: 200X-01-01
  +// Name: Processor name
  +// Description: this is a sample processor for the MoniWiki
   // URL: to_plugin url/interwiki name etc.
  -// Version: $Revision: 1.6 $
  +// Version: $Revision: 1.7 $
   // License: GPL
   //
   // Usage: {{{#!hello Name
   // Hello World
   // }}}
  -// $Id: hello.php,v 1.6 2006/08/17 08:01:30 wkpark Exp $
  +// $Id: hello.php,v 1.7 2008/12/22 11:03:22 wkpark Exp $
   
   function processor_hello($formatter,$value="",$options=array()) {
       if ($value[0]=='#' and $value[1]=='!')
  @@ -30,5 +33,5 @@
       return $out;
   }
   
  -// vim:et:sts=4:
  +// vim:et:sts=4:sw=4:
   ?>
  
  
  


wkpark      2008/12/22 22:20:21

  Added:       local/js sh.js
  Log:
  SyntaxHighlighter wrapper script for MoniWiki
  
  Revision  Changes    Path
  1.1                  moniwiki/local/js/sh.js
  
  Index: sh.js
  ===================================================================
  // http://code.google.com/p/syntaxhighlighter
  // syntaxhighlighter wrapper for MoniWiki
  //
  // $Id: sh.js,v 1.1 2008/12/22 13:20:21 wkpark Exp $
  // 
  function shOnload() {
      var tags = document.getElementsByTagName('pre');
      var head = document.getElementsByTagName("head")[0];
      var list = [];
      var syntax = {
          'c':'Cpp',
          'c#':'Cpp',
          'cpp':'Cpp',
          'c-sharp':'Cpp',
          'css':'Css',
          'java':'Java',
          'javascript':'JScript',
          'jscript':'JScript',
          'php':'Php',
          'python':'Python',
          'ruby':'Ruby',
          'xml':'Xml',
          'html':'Xml'
      };
  
      if (tags.length == 0) return;
      for(var i = 0; i < tags.length; i++) {
          var m = tags[i].className.match(/wiki\s+(c|cpp|c#|xml|c-sharp|css|java|javascript|php|python|ruby|xml|html)/);
          if (m && syntax[m[1]]) {
              if (!list[syntax[m[1]]]) {
                  var js = document.createElement('script');
                  js.type = 'text/javascript';
                  js.src = _url_prefix + '/local/dp.SyntaxHighlighter/Uncompressed/shBrush' + syntax[m[1]]+ '.js';
                  head.appendChild(js);
              }
              tags[i].setAttribute('name','code');
              //tags[i].className = syntax[m[1]] + ':showcolumns';
              tags[i].className = syntax[m[1]];
              list[syntax[m[1]]]= 1;
          }
      }
      dp.sh.HighlightAll('code',true,true);
  }
  
  //window.addEvent("domready", shOnload);
  (function () {
      var head = document.getElementsByTagName("head")[0];
      var js = document.createElement('script');
      js.type = 'text/javascript';
      js.src = _url_prefix + '/local/dp.SyntaxHighlighter/Uncompressed/shCore.js';
      head.appendChild(js);
  
      // onload
      var oldOnload = window.onload;
      if (typeof window.onload != 'function') {
          window.onload = shOnload;
      } else {
          window.onload = function() {
              oldOnload();
              shOnload();
          }
      }
  })();
  
  // vim:et:sts=4:sw=4:
  
  
  


wkpark      2008/12/22 22:23:06

  Modified:    .        wiki.php wikilib.php
  Log:
  wiki.php: add the userinfo action as a protected
  wikilib.php: set class name like as '#!plain cpp' to support the SyntaxHighlighter.
  
  Revision  Changes    Path
  1.432     +4 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.431
  retrieving revision 1.432
  diff -u -r1.431 -r1.432
  --- wiki.php	21 Dec 2008 09:34:13 -0000	1.431
  +++ wiki.php	22 Dec 2008 13:23:06 -0000	1.432
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.431 2008/12/21 09:34:13 wkpark Exp $
  +// $Id: wiki.php,v 1.432 2008/12/22 13:23:06 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.431 $',1,-1);
  +$_revision = substr('$Revision: 1.432 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -545,7 +545,7 @@
     function is_protected($action="read",$options) {
       # password protected POST actions
       $protected_actions=array(
  -      "deletepage","deletefile","rename","rcspurge","rcs","chmod","backup","restore","rcsimport","revert");
  +      "deletepage","deletefile","rename","rcspurge","rcs","chmod","backup","restore","rcsimport","revert","userinfo");
       $action=strtolower($action);
   
       if (in_array($action,$protected_actions)) {
  @@ -4986,6 +4986,7 @@
   
       $charset= strtoupper($charset);
       # XXX
  +    $server_charset = '';
       if (function_exists('nl_langinfo'))
         $server_charset= nl_langinfo(CODESET);
   
  
  
  
  1.254     +23 -9     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.253
  retrieving revision 1.254
  diff -u -r1.253 -r1.254
  --- wikilib.php	16 Dec 2008 14:53:41 -0000	1.253
  +++ wikilib.php	22 Dec 2008 13:23:06 -0000	1.254
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.253 2008/12/16 14:53:41 wkpark Exp $
  +// $Id: wikilib.php,v 1.254 2008/12/22 13:23:06 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2702,15 +2702,29 @@
       </form>";
   }
   
  -function processor_plain($formatter,$value) {
  -  if ($value[0]=='#' and $value[1]=='!')
  -    list($line,$value)=explode("\n",$value,2);
  -  $class='wiki'; // XXX {{{#!plain myclass
  +function processor_plain($formatter,$value, $options=array()) {
  +    if ($value[0]=='#' and $value[1]=='!')
  +        list($line,$value)=explode("\n",$value,2);
  +
  +    $cls[] = 'wiki'; // {{{#!plain class-name
  +    # get parameters
  +    if (!empty($line)) {
  +        $line = substr($line,2);
  +        $tag = strtok($line,' ');
  +        $class = strtok(' ');
  +        $extra = strtok('');
  +        if ($tag != 'plain') {
  +            $extra = !empty($extra) ? $class.' '.$extra:$class;
  +            $class = $tag;
  +        }
  +        if (!empty($class)) $cls[]=$class;
  +    }
  +    $class = implode(' ',$cls);
   
  -  $pre=str_replace(array('&','<'), array("&amp;","&lt;"), $value);
  -  $pre=preg_replace("/&lt;(\/?)(ins|del)/","<\\1\\2",$pre);
  -  $out="<pre class='$class'>\n".$pre."</pre>";
  -  return $out;
  +    $pre=str_replace(array('&','<'), array("&amp;","&lt;"), $value);
  +    $pre=preg_replace("/&lt;(\/?)(ins|del)/","<\\1\\2",$pre); // XXX
  +    $out="<pre class='$class'>\n".$pre."</pre>";
  +    return $out;
   }
   
   function processor_php($formatter="",$value="") {
  
  
  


wkpark      2008/12/22 22:23:36

  Modified:    plugin   SWFUpload.php
  Log:
  fixed do_swfupload()
  
  Revision  Changes    Path
  1.13      +5 -3      moniwiki/plugin/SWFUpload.php
  
  Index: SWFUpload.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SWFUpload.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- SWFUpload.php	17 Dec 2008 06:06:50 -0000	1.12
  +++ SWFUpload.php	22 Dec 2008 13:23:35 -0000	1.13
  @@ -8,12 +8,12 @@
   // Name: SWF Upload
   // Description: SWF Upload Plugin
   // URL: http://labb.dev.mammon.se/swfupload/ MoniWikiDev:SWFUpload
  -// Version: $Revision: 1.12 $
  +// Version: $Revision: 1.13 $
   // License: GPL
   //
   // Usage: [[SWFUpload]]
   //
  -// $Id: SWFUpload.php,v 1.12 2008/12/17 06:06:50 wkpark Exp $
  +// $Id: SWFUpload.php,v 1.13 2008/12/22 13:23:35 wkpark Exp $
   
   function macro_SWFUpload($formatter,$value,$opts=array()) {
       global $DBInfo;
  @@ -240,7 +240,9 @@
       } else {
           $formatter->send_header("",$options);
           $formatter->send_title("","",$options);
  -        print macro_SWFUpload($formatter,'');
  +        $out= macro_SWFUpload($formatter,'');
  +        print $formatter->get_javascripts();
  +        print $out;
           if (!in_array('UploadedFiles',$formatter->actions))
               $formatter->actions[]='UploadedFiles';
           $formatter->send_footer("",$options);
  
  
  


wkpark      2008/12/22 23:24:32

  Modified:    local/js sh.js
  Log:
  set clipboad swf
  
  Revision  Changes    Path
  1.2       +4 -2      moniwiki/local/js/sh.js
  
  Index: sh.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/sh.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- sh.js	22 Dec 2008 13:20:21 -0000	1.1
  +++ sh.js	22 Dec 2008 14:24:32 -0000	1.2
  @@ -1,10 +1,11 @@
   // http://code.google.com/p/syntaxhighlighter
   // syntaxhighlighter wrapper for MoniWiki
   //
  -// $Id: sh.js,v 1.1 2008/12/22 13:20:21 wkpark Exp $
  +// $Id: sh.js,v 1.2 2008/12/22 14:24:32 wkpark Exp $
   // 
   function shOnload() {
       var tags = document.getElementsByTagName('pre');
  +    if (tags.length == 0) return;
       var head = document.getElementsByTagName("head")[0];
       var list = [];
       var syntax = {
  @@ -23,7 +24,6 @@
           'html':'Xml'
       };
   
  -    if (tags.length == 0) return;
       for(var i = 0; i < tags.length; i++) {
           var m = tags[i].className.match(/wiki\s+(c|cpp|c#|xml|c-sharp|css|java|javascript|php|python|ruby|xml|html)/);
           if (m && syntax[m[1]]) {
  @@ -39,7 +39,9 @@
               list[syntax[m[1]]]= 1;
           }
       }
  +    dp.SyntaxHighlighter.ClipboardSwf = _url_prefix + '/local/dp.SyntaxHighlighter/Scripts/clipboard.swf';
       dp.sh.HighlightAll('code',true,true);
  +    return;
   }
   
   //window.addEvent("domready", shOnload);
  
  
  


wkpark      2008/12/23 00:13:37

  Modified:    .        wiki.php
  Log:
  oops! fixed processor_repl()
  
  Revision  Changes    Path
  1.433     +6 -5      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.432
  retrieving revision 1.433
  diff -u -r1.432 -r1.433
  --- wiki.php	22 Dec 2008 13:23:06 -0000	1.432
  +++ wiki.php	22 Dec 2008 15:13:37 -0000	1.433
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.432 2008/12/22 13:23:06 wkpark Exp $
  +// $Id: wiki.php,v 1.433 2008/12/22 15:13:37 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.432 $',1,-1);
  +$_revision = substr('$Revision: 1.433 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2841,13 +2841,14 @@
         }
         $ket= '</span>';
       }
  -
  -    $pf=getProcessor($processor);
  +    $pf = $processor;
  +    if (!($f = function_exists('processor_'.$processor)))
  +      $pf = getProcessor($processor);
       if (empty($pf)) {
         $ret= call_user_func('processor_plain',$this,$value,$options);
         return $bra.$ret.$ket;
       }
  -    if (!($f=function_exists('processor_'.$pf)) and !($c=class_exists('processor_'.$pf))) {
  +    if (!$f and !($c=class_exists('processor_'.$pf))) {
         include_once("plugin/processor/$pf.php");
         $name='processor_'.$pf;
         if (!($f=function_exists($name)) and !($c=class_exists($name))) {
  
  
  


wkpark      2008/12/23 00:48:24

  Modified:    plugin   rcsimport.php
  Log:
  fixed rcs_user mismatch problem
  
  Revision  Changes    Path
  1.2       +15 -2     moniwiki/plugin/rcsimport.php
  
  Index: rcsimport.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rcsimport.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- rcsimport.php	6 Aug 2006 15:58:26 -0000	1.1
  +++ rcsimport.php	22 Dec 2008 15:48:24 -0000	1.2
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Test]]
   //
  -// $Id: rcsimport.php,v 1.1 2006/08/06 15:58:26 wkpark Exp $
  +// $Id: rcsimport.php,v 1.2 2008/12/22 15:48:24 wkpark Exp $
   
   function do_post_rcsimport($formatter,$options) {
       global $DBInfo;
  @@ -29,7 +29,7 @@
   <input type='hidden' name='action' value='rcsimport' />
   FORM;
           if ($DBInfo->security->is_protected("rcsimport",$options))
  -            print " <input type='password' name='passwd' /> ";
  +            print _("Password"). ": <input type='password' name='passwd' /> ";
           print <<<FORM
   <input type='submit' value='Import RCS' />
   </form>
  @@ -44,6 +44,19 @@
       header('Content-type:text/plain');
       if (method_exists($version,'import')) {
           $content=base64_decode($options['rcsfile']);
  +
  +        $body = $content;
  +        $read = '';
  +        while(!empty($body)) {
  +            list($line,$body) = explode("\n",$body,2);
  +            if (preg_match('/^\s+(.*):(\d+\.\d+); strict;$/',$line,$m)) {
  +                $line = "\t".$DBInfo->rcs_user.':'.$m[2].';';
  +                $read.=$line."\n";
  +                break;
  +            }
  +            $read.=$line."\n";
  +        }
  +        $content= $read.$body;
           $version->import($options['page'],$content);
       }
       print 'OK';
  
  
  


wkpark      2008/12/23 01:07:27

  Modified:    plugin/security acl.php
  Log:
  gettextized
  check protected actions explicitly.
  
  Revision  Changes    Path
  1.8       +14 -6     moniwiki/plugin/security/acl.php
  
  Index: acl.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/acl.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- acl.php	5 Dec 2007 18:18:12 -0000	1.7
  +++ acl.php	22 Dec 2008 16:07:27 -0000	1.8
  @@ -1,6 +1,6 @@
   <?php
   # a ACL security plugin for the MoniWiki (experimental)
  -# $Id: acl.php,v 1.7 2007/12/05 18:18:12 wkpark Exp $
  +# $Id: acl.php,v 1.8 2008/12/22 16:07:27 wkpark Exp $
   #
   # Please see also http://www.dokuwiki.org/wiki:discussion:acl2
   #
  @@ -143,20 +143,20 @@
   
           if ($this->DB->acl_debug) {
               ob_start();
  -            print "<h4>groups</h4>\n";
  +            print "<h4>"._("ACL groups")."</h4>\n";
               print implode(',',$groups);
               print "\n";
  -            print "<h4>Allowed actions</h4>\n";
  +            print "<h4>"._("Allowed ACL actions")."</h4>\n";
               foreach ($allowed as $k=>$v)
                   print $k." ($v),";
               #print_r($allowed);
               print "\n";
  -            print "<h4>Denied actions</h4>\n";
  +            print "<h4>"._("Denied ACL actions")."</h4>\n";
               foreach ($denied as $k=>$v)
                   print $k." ($v),";
               #print_r($denied);
               print "\n";
  -            print "<h4>Protected actions</h4>\n";
  +            print "<h4>"._("Protected ACL actions")."</h4>\n";
               print implode(',',$protected);
               $options['msg'].=ob_get_contents();
               ob_end_clean();
  @@ -232,9 +232,17 @@
           if (!$this->_acl_ok) $this->get_acl($action,$options); # get acl info
   
           if (in_array($action,$this->_protected)) return 1;
  +
  +        $orig = parent::is_protected($action, $options);
  +        if ($orig) { // check explicitly
  +            $options['explicit'] = 1;
  +            $ret=$this->acl_check($action,$options);
  +            if ($ret === false) return 1;
  +            return $ret;
  +        }
           return 0;
       }
   }
   
  -// vim:et:sts=4:
  +// vim:et:sts=4:sw=4:
   ?>
  
  
  


wkpark      2008/12/23 01:20:04

  Modified:    plugin   rcsimport.php
  Log:
  fix last change. check sticky bit.
  
  Revision  Changes    Path
  1.3       +2 -2      moniwiki/plugin/rcsimport.php
  
  Index: rcsimport.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rcsimport.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- rcsimport.php	22 Dec 2008 15:48:24 -0000	1.2
  +++ rcsimport.php	22 Dec 2008 16:20:04 -0000	1.3
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Test]]
   //
  -// $Id: rcsimport.php,v 1.2 2008/12/22 15:48:24 wkpark Exp $
  +// $Id: rcsimport.php,v 1.3 2008/12/22 16:20:04 wkpark Exp $
   
   function do_post_rcsimport($formatter,$options) {
       global $DBInfo;
  @@ -49,7 +49,7 @@
           $read = '';
           while(!empty($body)) {
               list($line,$body) = explode("\n",$body,2);
  -            if (preg_match('/^\s+(.*):(\d+\.\d+); strict;$/',$line,$m)) {
  +            if (preg_match('/^\s+(.*):(\d+\.\d+);\s*(strict;)?$/',$line,$m)) {
                   $line = "\t".$DBInfo->rcs_user.':'.$m[2].';';
                   $read.=$line."\n";
                   break;
  
  
  


wkpark      2008/12/23 01:20:44

  Modified:    .        wiki.php
  Log:
  chmod RCS file to work rcsimport.
  
  Revision  Changes    Path
  1.434     +5 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.433
  retrieving revision 1.434
  diff -u -r1.433 -r1.434
  --- wiki.php	22 Dec 2008 15:13:37 -0000	1.433
  +++ wiki.php	22 Dec 2008 16:20:44 -0000	1.434
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.433 2008/12/22 15:13:37 wkpark Exp $
  +// $Id: wiki.php,v 1.434 2008/12/22 16:20:44 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.433 $',1,-1);
  +$_revision = substr('$Revision: 1.434 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -1414,6 +1414,9 @@
     function import($pagename,$rcsfile) {
       $keyname=$this->DB->_getPageKey($pagename);
       $fname=$this->DB->text_dir."/RCS/$keyname,v";
  +    $om=umask(0770);
  +    chmod($fname,0664);
  +    umask($om);
       $fp=fopen($fname,'w');
       if (is_resource($fp)) {
         fwrite($fp,$rcsfile);
  
  
  


wkpark      2008/12/23 01:26:24

  Modified:    plugin/security acl.php
  Log:
  fix last change
  
  Revision  Changes    Path
  1.9       +3 -2      moniwiki/plugin/security/acl.php
  
  Index: acl.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/acl.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- acl.php	22 Dec 2008 16:07:27 -0000	1.8
  +++ acl.php	22 Dec 2008 16:26:23 -0000	1.9
  @@ -1,6 +1,6 @@
   <?php
   # a ACL security plugin for the MoniWiki (experimental)
  -# $Id: acl.php,v 1.8 2008/12/22 16:07:27 wkpark Exp $
  +# $Id: acl.php,v 1.9 2008/12/22 16:26:23 wkpark Exp $
   #
   # Please see also http://www.dokuwiki.org/wiki:discussion:acl2
   #
  @@ -238,7 +238,8 @@
               $options['explicit'] = 1;
               $ret=$this->acl_check($action,$options);
               if ($ret === false) return 1;
  -            return $ret;
  +            // allow => not protected, deny => protected
  +            return !$ret;
           }
           return 0;
       }
  
  
  


wkpark      2008/12/23 14:37:46

  Modified:    local/js sh.js
  Log:
  check onload state
  
  Revision  Changes    Path
  1.3       +15 -3     moniwiki/local/js/sh.js
  
  Index: sh.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/sh.js,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- sh.js	22 Dec 2008 14:24:32 -0000	1.2
  +++ sh.js	23 Dec 2008 05:37:46 -0000	1.3
  @@ -1,7 +1,7 @@
   // http://code.google.com/p/syntaxhighlighter
   // syntaxhighlighter wrapper for MoniWiki
   //
  -// $Id: sh.js,v 1.2 2008/12/22 14:24:32 wkpark Exp $
  +// $Id: sh.js,v 1.3 2008/12/23 05:37:46 wkpark Exp $
   // 
   function shOnload() {
       var tags = document.getElementsByTagName('pre');
  @@ -23,12 +23,13 @@
           'xml':'Xml',
           'html':'Xml'
       };
  +    var js = null;
   
       for(var i = 0; i < tags.length; i++) {
           var m = tags[i].className.match(/wiki\s+(c|cpp|c#|xml|c-sharp|css|java|javascript|php|python|ruby|xml|html)/);
           if (m && syntax[m[1]]) {
               if (!list[syntax[m[1]]]) {
  -                var js = document.createElement('script');
  +                js = document.createElement('script');
                   js.type = 'text/javascript';
                   js.src = _url_prefix + '/local/dp.SyntaxHighlighter/Uncompressed/shBrush' + syntax[m[1]]+ '.js';
                   head.appendChild(js);
  @@ -39,8 +40,19 @@
               list[syntax[m[1]]]= 1;
           }
       }
  +    if (js) {
  +        js.onreadystatechange = function() { // IE
  +            if (this.readyState == 'complete')
  +                dp.sh.HighlightAll('code',true,true);
  +        }
  +        js.onload = function() {
  +            dp.sh.HighlightAll('code',true,true);
  +            return;
  +        }
  +    }
  +    // not work with the flash 10 :(
  +    // http://securityandthe.net/2008/10/16/flash-10-fixes-clipboard-hijacking-other-security-issues/
       dp.SyntaxHighlighter.ClipboardSwf = _url_prefix + '/local/dp.SyntaxHighlighter/Scripts/clipboard.swf';
  -    dp.sh.HighlightAll('code',true,true);
       return;
   }
   
  
  
  


wkpark      2008/12/23 16:48:48

  Modified:    local/SWFUpload moni.js
  Added:       local/SWFUpload preview.js
  Log:
  extract preview routines
  
  Revision  Changes    Path
  1.10      +0 -105    moniwiki/local/SWFUpload/moni.js
  
  Index: moni.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/SWFUpload/moni.js,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- moni.js	18 Dec 2008 12:35:07 -0000	1.9
  +++ moni.js	23 Dec 2008 07:48:48 -0000	1.10
  @@ -100,111 +100,6 @@
       }
   }
   
  -function alignImg(obj,val) {
  -    var preview = obj.parentNode;
  -    var elem = preview.getElementsByTagName("img");
  -    var i,j;
  -    for (i=0;i<elem.length;i++) {
  -        rad=elem[i].className = 'alignImg';
  -    }
  -
  -    obj.className = 'alignImg selected';
  -
  -    var tag = document.getElementById("insertTag");
  -    if (tag) {
  -        var href= tag.href;
  -        var dum=href.split(/,/);
  -        if (val == 'normal') {
  -            dum[1]="''";
  -        } else {
  -            dum[1]="'" + '?align='+val+"'";
  -        }
  -        tag.href=dum.join(",");
  -    }
  -}
  -
  -function showImgPreview(filename,temp) {
  -    var preview = document.getElementById("filePreview");
  -    if (!preview) return;
  -    var tag_open='attachment:',tag_close='';
  -    var href_open='',href_close='';
  -    var jspreview=0;
  -    var icon_dir = _url_prefix + '/imgs/plugin/UploadedFiles/gnome';
  -    var img_dir = _url_prefix + '/local/SWFUpload/images';
  -    var preview_width='100px';
  -    var alt='';
  -    var fname='';
  -    var path;
  -
  -    var form=document.getElementById("filesDisplay").getElementsByTagName("form")[0];
  -    var mydir= '';
  -    if (form.mysubdir) {
  -        mydir = form.mysubdir.value;
  -    }
  -
  -    var ef = document.getElementById('editform');
  -    if (ef) {
  -        jspreview=1;
  -    }
  -
  -    //var loc = location.protocol + '//' + location.host;
  -    //if (location.port) loc += ':' + location.port;
  -    //path = loc + _url_prefix + '/pds/.swfupload/' + mydir + filename;
  -    path = _url_prefix + '/pds/.swfupload/' + mydir + filename;
  -
  -    if (jspreview) {
  -        tag_open="attachment:"; tag_close="";
  -//      if (opener != value) tag_open+=opener;
  -        alt="alt='" + tag_open + filename + tag_close +"'";
  -    }
  -
  -    var m=filename.match(/\.(.{1,4})$/);
  -    var ext=m[1].toLowerCase();
  -    var isImg=0;
  -    var myAlign='';
  -    if (ext && ext.match(/gif|png|jpeg|jpg|bmp/)) {
  -        if (temp) {
  -            var postdata = 'action=markup/ajax&value=' + encodeURIComponent("attachment:" + filename);
  -            var myhtml='';
  -            myhtml= HTTPPost(self.location, postdata);
  -
  -            var m = myhtml.match(/<img src=(\'|\")([^\'\"]+)\1/i); // strip div tag
  -            path = m[2];
  -        }
  -        fname="<img src='" + path + "' width='" + preview_width + ' ' + alt + " />";
  -        isImg=1;
  -
  -        if (jspreview) {
  -            myAlign =" <img src='" + img_dir + "/normal.png' class='alignImg' onclick='javascript:alignImg(this,\"normal\")' />";
  -            myAlign+=" <img src='" + img_dir + "/left.png'  class='alignImg' onclick='javascript:alignImg(this,\"left\")' />";
  -            myAlign+=" <img src='" + img_dir + "/right.png'  class='alignImg' onclick='javascript:alignImg(this,\"right\")' />";
  -        }
  -    } else {
  -        if (ext.match(/^(wmv|avi|mpeg|mpg|swf|wav|mp3|ogg|midi|mid|mov)$/)) {
  -            tag_open='[[Media('; tag_close=')]]';
  -            alt=tag_open + filename + tag_close;
  -        } else if (!ext.match(/^(bmp|c|h|java|py|bak|diff|doc|css|php|xml|html|mod|rpm|deb|pdf|ppt|xls|tgz|gz|bz2|zip)$/)) {
  -            ext='unknown';
  -        }
  -        fname="<img src='" + icon_dir + "/" + ext + ".png' " +  alt + " />";
  -    }
  -    if (jspreview) {
  -        //if (strpos($file,' '))
  -        link="javascript:insertTags('" + tag_open + "','" +  tag_close + "','" + filename + "',true)";
  -        href_open="<a id='insertTag' href=\""+ link + "\">";href_close="</a>";
  -    } else if (isImg && form.use_lightbox.value) {
  -        var myclick='myLightbox.start(this)';
  -        if (form.use_lightbox.value == 2) {
  -            myclick='LightBox._show(1)';
  -        }
  -        href_open="<a href=\""+ path + "\" rel=\"lightbox[mmswf]\" onclick=\"" + myclick + "; return false;\">";href_close="</a>";
  -    }
  -
  -    var align = document.getElementById("previewAlign");
  -    align.innerHTML=myAlign;
  -    preview.innerHTML=href_open + fname + href_close;
  -}
  -
   /*
    * vim:et:sts=4:sw=4
    */
  
  
  
  1.1                  moniwiki/local/SWFUpload/preview.js
  
  Index: preview.js
  ===================================================================
  function alignImg(obj,val) {
      var preview = obj.parentNode;
      var elem = preview.getElementsByTagName("img");
      var i,j;
      for (i=0;i<elem.length;i++) {
          rad=elem[i].className = 'alignImg';
      }
  
      obj.className = 'alignImg selected';
  
      var tag = document.getElementById("insertTag");
      if (tag) {
          var href= tag.href;
          var dum=href.split(/,/);
          if (val == 'normal') {
              dum[1]="''";
          } else {
              dum[1]="'" + '?align='+val+"'";
          }
          tag.href=dum.join(",");
      }
  }
  
  function showImgPreview(filename,temp) {
      var preview = document.getElementById("filePreview");
      if (!preview) return;
      var tag_open='attachment:',tag_close='';
      var href_open='',href_close='';
      var jspreview=0;
      var icon_dir = _url_prefix + '/imgs/plugin/UploadedFiles/gnome';
      var img_dir = _url_prefix + '/local/SWFUpload/images';
      var preview_width='100px';
      var alt='';
      var fname='';
      var path;
  
      var form=document.getElementById("filesDisplay").getElementsByTagName("form")[0];
      var mydir= '';
      if (form.mysubdir) {
          mydir = form.mysubdir.value;
      }
  
      var ef = document.getElementById('editform');
      if (ef) {
          jspreview=1;
      }
  
      //var loc = location.protocol + '//' + location.host;
      //if (location.port) loc += ':' + location.port;
      //path = loc + _url_prefix + '/pds/.swfupload/' + mydir + filename;
      path = _url_prefix + '/pds/.swfupload/' + mydir + filename;
  
      if (jspreview) {
          tag_open="attachment:"; tag_close="";
  //      if (opener != value) tag_open+=opener;
          alt="alt='" + tag_open + filename + tag_close +"'";
      }
  
      var m=filename.match(/\.(.{1,4})$/);
      var ext=m[1].toLowerCase();
      var isImg=0;
      var myAlign='';
      if (ext && ext.match(/gif|png|jpeg|jpg|bmp/)) {
          if (temp) {
              var postdata = 'action=markup/ajax&value=' + encodeURIComponent("attachment:" + filename);
              var myhtml='';
              myhtml= HTTPPost(self.location, postdata);
  
              var m = myhtml.match(/<img src=(\'|\")([^\'\"]+)\1/i); // strip div tag
              path = m[2];
          }
          fname="<img src='" + path + "' width='" + preview_width + ' ' + alt + " />";
          isImg=1;
  
          if (jspreview) {
              myAlign =" <img src='" + img_dir + "/normal.png' class='alignImg' onclick='javascript:alignImg(this,\"normal\")' />";
              myAlign+=" <img src='" + img_dir + "/left.png'  class='alignImg' onclick='javascript:alignImg(this,\"left\")' />";
              myAlign+=" <img src='" + img_dir + "/right.png'  class='alignImg' onclick='javascript:alignImg(this,\"right\")' />";
          }
      } else {
          if (ext.match(/^(wmv|avi|mpeg|mpg|swf|wav|mp3|ogg|midi|mid|mov)$/)) {
              tag_open='[[Media('; tag_close=')]]';
              alt=tag_open + filename + tag_close;
          } else if (!ext.match(/^(bmp|c|h|java|py|bak|diff|doc|css|php|xml|html|mod|rpm|deb|pdf|ppt|xls|tgz|gz|bz2|zip)$/)) {
              ext='unknown';
          }
          fname="<img src='" + icon_dir + "/" + ext + ".png' " +  alt + " />";
      }
      if (jspreview) {
          //if (strpos($file,' '))
          link="javascript:insertTags('" + tag_open + "','" +  tag_close + "','" + filename + "',true)";
          href_open="<a id='insertTag' href=\""+ link + "\">";href_close="</a>";
      } else if (isImg && form.use_lightbox.value) {
          var myclick='myLightbox.start(this)';
          if (form.use_lightbox.value == 2) {
              myclick='LightBox._show(1)';
          }
          href_open="<a href=\""+ path + "\" rel=\"lightbox[mmswf]\" onclick=\"" + myclick + "; return false;\">";href_close="</a>";
      }
  
      var align = document.getElementById("previewAlign");
      align.innerHTML=myAlign;
      preview.innerHTML=href_open + fname + href_close;
  }
  
  
  
  


wkpark      2008/12/23 17:20:59

  Modified:    local/js sh.js
  Log:
  safari/chrome fix
  
  Revision  Changes    Path
  1.4       +13 -1     moniwiki/local/js/sh.js
  
  Index: sh.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/sh.js,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- sh.js	23 Dec 2008 05:37:46 -0000	1.3
  +++ sh.js	23 Dec 2008 08:20:59 -0000	1.4
  @@ -1,7 +1,7 @@
   // http://code.google.com/p/syntaxhighlighter
   // syntaxhighlighter wrapper for MoniWiki
   //
  -// $Id: sh.js,v 1.3 2008/12/23 05:37:46 wkpark Exp $
  +// $Id: sh.js,v 1.4 2008/12/23 08:20:59 wkpark Exp $
   // 
   function shOnload() {
       var tags = document.getElementsByTagName('pre');
  @@ -49,6 +49,18 @@
               dp.sh.HighlightAll('code',true,true);
               return;
           }
  +
  +        // safari fix.
  +        if (navigator.userAgent.toLowerCase().indexOf('applewebkit') != -1) {
  +            (function() {
  +                var timer = setInterval(function() { 
  +                    if (/loaded|complete/.test(document.readyState)) {  
  +                        clearInterval(timer);  
  +                        dp.sh.HighlightAll('code',true,true);
  +                    }
  +                }, 10);
  +            })();
  +        }
       }
       // not work with the flash 10 :(
       // http://securityandthe.net/2008/10/16/flash-10-fixes-clipboard-hijacking-other-security-issues/
  
  
  


wkpark      2008/12/23 17:54:02

  Modified:    local/js sh.js
  Log:
  set script dir from Uncompressed to Scripts
  
  Revision  Changes    Path
  1.5       +8 -4      moniwiki/local/js/sh.js
  
  Index: sh.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/sh.js,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- sh.js	23 Dec 2008 08:20:59 -0000	1.4
  +++ sh.js	23 Dec 2008 08:54:02 -0000	1.5
  @@ -1,13 +1,16 @@
   // http://code.google.com/p/syntaxhighlighter
   // syntaxhighlighter wrapper for MoniWiki
   //
  -// $Id: sh.js,v 1.4 2008/12/23 08:20:59 wkpark Exp $
  +// $Id: sh.js,v 1.5 2008/12/23 08:54:02 wkpark Exp $
   // 
   function shOnload() {
       var tags = document.getElementsByTagName('pre');
       if (tags.length == 0) return;
  +    var shdir = 'Scripts';
  +    // var shdir = 'Uncompressed';
       var head = document.getElementsByTagName("head")[0];
       var list = [];
  +    var js = null;
       var syntax = {
           'c':'Cpp',
           'c#':'Cpp',
  @@ -23,7 +26,6 @@
           'xml':'Xml',
           'html':'Xml'
       };
  -    var js = null;
   
       for(var i = 0; i < tags.length; i++) {
           var m = tags[i].className.match(/wiki\s+(c|cpp|c#|xml|c-sharp|css|java|javascript|php|python|ruby|xml|html)/);
  @@ -31,7 +33,7 @@
               if (!list[syntax[m[1]]]) {
                   js = document.createElement('script');
                   js.type = 'text/javascript';
  -                js.src = _url_prefix + '/local/dp.SyntaxHighlighter/Uncompressed/shBrush' + syntax[m[1]]+ '.js';
  +                js.src = _url_prefix + '/local/dp.SyntaxHighlighter/' + shdir + '/shBrush' + syntax[m[1]]+ '.js';
                   head.appendChild(js);
               }
               tags[i].setAttribute('name','code');
  @@ -70,10 +72,12 @@
   
   //window.addEvent("domready", shOnload);
   (function () {
  +    var shdir = 'Scripts';
  +    // var shdir = 'Uncompressed';
       var head = document.getElementsByTagName("head")[0];
       var js = document.createElement('script');
       js.type = 'text/javascript';
  -    js.src = _url_prefix + '/local/dp.SyntaxHighlighter/Uncompressed/shCore.js';
  +    js.src = _url_prefix + '/local/dp.SyntaxHighlighter/' + shdir + '/shCore.js';
       head.appendChild(js);
   
       // onload
  
  
  


wkpark      2008/12/23 18:02:20

  Modified:    local/js/locale dummy.js
  Log:
  dp.sh messages are added
  
  Revision  Changes    Path
  1.4       +4 -0      moniwiki/local/js/locale/dummy.js
  
  Index: dummy.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/locale/dummy.js,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- dummy.js	19 Dec 2008 13:32:28 -0000	1.3
  +++ dummy.js	23 Dec 2008 09:02:20 -0000	1.4
  @@ -1,3 +1,7 @@
   N_("Continue to edit current text ?");
   N_("Canceled!");
   N_("Please select the text you would like to turn into a link.");
  +
  +// sh
  +N_("The code is in your clipboard now");
  +N_('Printing...');
  
  
  


wkpark      2008/12/23 18:02:20

  Modified:    local/js/locale/po ko.po
  Log:
  dp.sh messages are added
  
  Revision  Changes    Path
  1.4       +9 -2      moniwiki/local/js/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/locale/po/ko.po,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ko.po	19 Dec 2008 13:32:28 -0000	1.3
  +++ ko.po	23 Dec 2008 09:02:20 -0000	1.4
  @@ -5,14 +5,14 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1.3\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2008-12-19 22:24+0900\n"
  +"POT-Creation-Date: 2008-12-23 17:57+0900\n"
   "PO-Revision-Date: 2008-12-18 17:00+0900\n"
   "Last-Translator: Won-Kyu Park <wkpark@kldp.org>\n"
   "MIME-Version: 1.0\n"
   "Content-Type: text/plain; charset=UTF-8\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  -#: ../../moniwyg.js:9
  +#: ../../moniwyg.js:9 ../../wikibits.js:21
   msgid "undefined"
   msgstr ""
   
  @@ -222,3 +222,10 @@
   msgid "Please select the text you would like to turn into a link."
   msgstr "링크로 바꾸고 싶은 텍스트를 선택해주시기 바랍니다."
   
  +#: dummy.js:6
  +msgid "The code is in your clipboard now"
  +msgstr "코드가 클립보드로 복사되었습니다"
  +
  +#: dummy.js:7
  +msgid "Printing..."
  +msgstr "인쇄중..."
  
  
  


wkpark      2008/12/23 18:28:45

  Modified:    local/js sh.js
  Log:
  gettextized
  
  Revision  Changes    Path
  1.6       +12 -2     moniwiki/local/js/sh.js
  
  Index: sh.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/sh.js,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- sh.js	23 Dec 2008 08:54:02 -0000	1.5
  +++ sh.js	23 Dec 2008 09:28:45 -0000	1.6
  @@ -1,8 +1,15 @@
   // http://code.google.com/p/syntaxhighlighter
   // syntaxhighlighter wrapper for MoniWiki
   //
  -// $Id: sh.js,v 1.5 2008/12/23 08:54:02 wkpark Exp $
  -// 
  +// $Id: sh.js,v 1.6 2008/12/23 09:28:45 wkpark Exp $
  +//
  +
  +if ( typeof _ == 'undefined') {
  +    _ = function(msgid) {
  +        return msgid;
  +    };
  +}
  +
   function shOnload() {
       var tags = document.getElementsByTagName('pre');
       if (tags.length == 0) return;
  @@ -27,6 +34,9 @@
           'html':'Xml'
       };
   
  +    //dp.sh.Toolbar.Commands.ViewSource.label = _('view plain');
  +    //dp.sh.Toolbar.Commands.CopyToClipboard.label = _('copy to clipboard');
  +
       for(var i = 0; i < tags.length; i++) {
           var m = tags[i].className.match(/wiki\s+(c|cpp|c#|xml|c-sharp|css|java|javascript|php|python|ruby|xml|html)/);
           if (m && syntax[m[1]]) {
  
  
  


wkpark      2008/12/23 18:39:12

  Modified:    lib      fckpacker.php
  Log:
  more tunning
  
  Revision  Changes    Path
  1.7       +32 -23    moniwiki/lib/fckpacker.php
  
  Index: fckpacker.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/fckpacker.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- fckpacker.php	20 Dec 2008 15:13:02 -0000	1.6
  +++ fckpacker.php	23 Dec 2008 09:39:12 -0000	1.7
  @@ -3,7 +3,7 @@
    * This is a reduced FCKpackager file for Javascript Compression
    * for MoniWiki.
    *
  - * $Id: fckpacker.php,v 1.6 2008/12/20 15:13:02 wkpark Exp $
  + * $Id: fckpacker.php,v 1.7 2008/12/23 09:39:12 wkpark Exp $
    *
    * ---------------------------------------------------------------------------
    * FCKpackager - JavaScript Packager and Compressor - http://www.fckeditor.net
  @@ -151,7 +151,8 @@
                   
                   for ( $j = 0 ; $j < $numVarNameMatches ; $j++ )
                   {
  -                    $vars[] = $varNameMatches[1][$j] ;
  +                    $var = $varNameMatches[1][$j];
  +                    if (strlen($var) > 2) $vars[$var] = $var ;
                   }
               }
   
  @@ -164,10 +165,10 @@
       function _ProcessVars( $source, $vars )
       {
           $protected = array('self','event'); // workaround for eval()
  +        foreach ($protected as $p) unset ($vars[$p]);
           foreach ( $vars as $var )
           {
  -            if ( strlen( $var) > 2 and !in_array($var, $protected))
  -                $source = preg_replace( '/(?<!\w|\d|\.|\$)' . preg_quote( $var ) . '(?!\w|\d|:)/', $this->_GetVarName(), $source ) ;
  +            $source = preg_replace( '/(?<!\w|\d|\.|\$)' . preg_quote( $var ) . '(?!\w|\d|:)/', $this->_GetVarName(), $source ) ;
           }
   
           return $source ;
  @@ -213,16 +214,18 @@
   
       function Revision()
       {
  -        return trim(substr('$Revision: 1.6 $',10,-1));
  +        return trim(substr('$Revision: 1.7 $',10,-1));
       }
   
       // Call it statically. E.g.: FCKJavaScriptCompressor::Compress( ... )
  -    function Compress( $script, $constantsProcessor )
  +    function Compress( $script, $constantsProcessor = null, $params=array('nofunc'=>0) )
       {
           // detect cr and replace it with "\n"
           preg_match('/(\r\n|\r|\n)/s', $script, $cr);
  -        if (!empty($cr[0]) and $cr[0] != "\n")
  -            $script = str_replace($cr[0],"\n",$script);
  +        if (!empty($cr[0]) and $cr[0] != "\n") {
  +            $script = strtr($script, $cr[0], "\n");
  +            //$script = str_replace($cr[0],"\n",$script);
  +        }
   
           // Concatenates all string with escaping new lines strings (ending with \).
           $script = preg_replace(
  @@ -263,28 +266,28 @@
           // Concatenate lines that end with "}" using a "\n", except for "else",
           // "while", "catch" and "finally" cases, or when followed by, "'", ";",
           // "}", ")" or "]".
  -        $script = preg_replace(
  -            '/\s*}\s*\n+\s*(?!\s*(else|catch|finally|while|[\]}\),;]))/s',
  -            "}\n", $script ) ;
  +        ///$script = preg_replace(
  +        ///    '/\s*}\s*\n+\s*(?!\s*(else|catch|finally|while|[\]}\),;]))/s',
  +        ///    "}\n", $script ) ;
  +        ## not needed ## XXX
   
   	// Concat lines that end with ";" or "{"
           // $script = preg_replace('/\s*([;{])\s*[\n\r]+\s*/s','\\1', $script ) ;
           $script = preg_replace('/\s*([;{])\s*/s','\\1', $script ) ;
  +        ## $script = preg_replace('/\s*([;{}])\s*/s','\\1', $script ) ; // shorter 
   
           // Remove blank lines, spaces at the begining or the at the end and \n\r
  -        //$script = preg_replace(
  -        //    '/(^\s*$)|(^\s+)|(\s+$\n)/m',
  -        //    '', $script ) ;
           $script = preg_replace(
  +        #    #'/(^\s*$)|(^\s+)|(\s+$\n)/m',
               '/(^\s*$)|(^\s+)/m',
               '', $script ) ;
   
           // Remove the spaces between statements.
  -        $script = FCKJavaScriptCompressor::_RemoveInnerSpaces( $script ) ;
  +        //$script = FCKJavaScriptCompressor::_RemoveInnerSpaces( $script ) ;
           # error with mootools
   
           // Process constants.   // CHECK
  -        if ( $constantsProcessor->HasConstants )
  +        if ( is_object($constantsProcessor) and $constantsProcessor->HasConstants )
               $script = $constantsProcessor->Process( $script );
   
           // Replace "new Object()" "new Array()".
  @@ -292,8 +295,15 @@
               array('/new\s+Object\(\)/','/new\s+Array\(\)/'),
               array('{}','[]'), $script ) ;
   
  +        // space + delim + space => delim, except a++ +b
  +        $delim = '([+\-])|([:=?*\/&,;><|!{}\[\]\(\)])';
  +        $script = preg_replace('/[ ]*('.$delim.')[ ]*(?(2)(?![+\-]))/', '\\1', $script);
  +        // workaround for a = (b) ? c:d; case. c is not a object menber.
  +        $script = preg_replace('/(?<=\?)([^:]+):/', '\\1 :', $script);
  +
           // Process function contents, renaming parameters and variables.
  -        $script = FCKJavaScriptCompressor::_ProcessFunctions( $script ) ;
  +        if (empty($params['nofunc']))
  +            $script = FCKJavaScriptCompressor::_ProcessFunctions( $script ) ;
   
           // Join consecutive string concatened with a "+".
           $script = $stringsProc->ConcatProtectedStrings( $script );
  @@ -306,11 +316,8 @@
   
       function _RemoveInnerSpaces( $script )
       {
  -        $script = preg_replace('/([:=?+\-*\/&,;><|!{}\[\]\(\)])[ ]+(?=\S)/', '\\1', $script);
  -        $script = preg_replace('/(?<=\S)[ ]+([:=?+\-*\/&,;><|!{}\[\]\(\)])/', '\\1', $script);
  -        // workaround for a = (b) ? c:d; case. c is not a object menber.
  -        $script = preg_replace('/(?<=\?)([^:]+):/', ' \\1 :', $script);
  -        return $script;
  +        // delim + space => delim
  +        return preg_replace('/([:=?+\-*\/&,;><|!{}\[\]\(\)])[ ]+(?=\S)/', '\\1', $script);
           #return preg_replace_callback(
           #    '/(?:\s*[=?:+\-*\/&,;><|!]\s*)|(?:[(\[]\s+)|(?:\s+[)\]])/',
           #    array( 'FCKJavaScriptCompressor', '_RemoveInnerSpacesMatch' ), $script ) ;
  @@ -402,7 +409,9 @@
   
           $output = '@' . $leftIndex . '@' ;
   
  -        while( $rightPosition < count( $indexes ) )
  +        $sz = count( $indexes );
  +
  +        while( $rightPosition < $sz )
           {
               $rightIndex = (int)$indexes[ $rightPosition ] ;
   
  
  
  


wkpark      2008/12/23 21:33:16

  Modified:    plugin   SWFUpload.php
  Log:
  do not permit change subdir.
  
  Revision  Changes    Path
  1.14      +23 -6     moniwiki/plugin/SWFUpload.php
  
  Index: SWFUpload.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SWFUpload.php,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- SWFUpload.php	22 Dec 2008 13:23:35 -0000	1.13
  +++ SWFUpload.php	23 Dec 2008 12:33:16 -0000	1.14
  @@ -1,5 +1,5 @@
   <?php
  -// Copyright 2006 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2006-2008 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // SWFUpload plugin for the MoniWiki
   //
  @@ -8,12 +8,12 @@
   // Name: SWF Upload
   // Description: SWF Upload Plugin
   // URL: http://labb.dev.mammon.se/swfupload/ MoniWikiDev:SWFUpload
  -// Version: $Revision: 1.13 $
  +// Version: $Revision: 1.14 $
   // License: GPL
   //
   // Usage: [[SWFUpload]]
   //
  -// $Id: SWFUpload.php,v 1.13 2008/12/22 13:23:35 wkpark Exp $
  +// $Id: SWFUpload.php,v 1.14 2008/12/23 12:33:16 wkpark Exp $
   
   function macro_SWFUpload($formatter,$value,$opts=array()) {
       global $DBInfo;
  @@ -104,6 +104,7 @@
           $formatter->register_javascripts(array(
               'js/swfobject.js',
               'SWFUpload/mmSWFUpload.js',
  +            'SWFUpload/preview.js',
               'SWFUpload/moni.js',
           ));
       }
  @@ -206,15 +207,33 @@
           }
       }
   
  +    // check subdir
  +    if ($DBInfo->swfupload_depth > 2) {
  +        $depth=$DBInfo->swfupload_depth;
  +    } else {
  +        $depth=2;
  +    }
  +
  +    if ($DBInfo->nosession) { // ip based
  +        $myid=md5($_SERVER['REMOTE_ADDR'].'.'.'MONIWIKI'); // FIXME
  +    } else {
  +        $myid=session_id();
  +    }
  +
  +    $prefix=substr($myid,0,$depth);
  +    $mysubdir=$prefix.'/'.$myid.'/';
  +
       // debug
       //$fp=fopen($swfupload_dir.'/swflog.txt','w+');
       //foreach ($options as $k=>$v) {
       //    if (is_string($v))
       //         fwrite($fp,sprintf("%s=>%s\n",$k,$v));
       //}
  +    //fclose($fp);
       // set the personal subdir
       if ($options['value'] and preg_match('/^[a-z0-9\/]+$/i',$options['value'])) {
  -        $mysubdir=$options['value'];
  +        //if ($mysubdir == $options['value']) // XXX check subdir
  +        //    $mysubdir = $options['value'];
   
           list($dum,$myval,$dum2)=explode('/',$options['value'],3); // XXX
           if(!is_dir($swfupload_dir.'/'.$mysubdir)) {
  @@ -223,8 +242,6 @@
               umask($om);
           }
       }
  -    //fclose($fp);
  -
   
       //move the uploaded file
       if (isset($_FILES['Filedata']['tmp_name'])) {
  
  
  


wkpark      2008/12/23 22:51:21

  Modified:    plugin/processor vim.php
  Log:
  fix for vim7.x
  
  Revision  Changes    Path
  1.42      +3 -2      moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.41
  retrieving revision 1.42
  diff -u -r1.41 -r1.42
  --- vim.php	17 Dec 2008 03:38:14 -0000	1.41
  +++ vim.php	23 Dec 2008 13:51:21 -0000	1.42
  @@ -9,7 +9,7 @@
   // Name: a VIM syntax colorizer
   // Description: a Syntax colorizing processor using the VIM
   // URL: MoniWiki:VimProcessor
  -// Version: $Revision: 1.41 $
  +// Version: $Revision: 1.42 $
   // License: GPL
   // Usage: {{{#!vim sh|c|sh|.. [number]
   // some codes
  @@ -18,7 +18,7 @@
   // Win32 note:
   //  add $path="/bin;/Program Files/Vim/VimXX"; in the config.php
   //
  -// $Id: vim.php,v 1.41 2008/12/17 03:38:14 wkpark Exp $
  +// $Id: vim.php,v 1.42 2008/12/23 13:51:21 wkpark Exp $
   
   function processor_vim($formatter,$value,$options) {
     global $DBInfo;
  @@ -169,6 +169,7 @@
     $stag="<$myspan class='wikiSyntax' id='PRE-$uniq' style='font-family:FixedSys,monospace;color:$fgcolor;background-color:$bgcolor'>\n";
     $etag="</$myspan>\n";
   
  +  $out = preg_replace(array("@^<font face[^>]*>\n@","@</font>\n?$@"),array('',''),$out); // vim7.x
   
     $lines=explode("\n",$out);
     $out="<span class=\"line\">".
  
  
  


wkpark      2008/12/23 22:52:08

  Modified:    plugin/processor monimarkup.php
  Log:
  detect block tags correctly
  
  Revision  Changes    Path
  1.16      +9 -3      moniwiki/plugin/processor/monimarkup.php
  
  Index: monimarkup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/monimarkup.php,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- monimarkup.php	16 Dec 2008 09:39:04 -0000	1.15
  +++ monimarkup.php	23 Dec 2008 13:52:08 -0000	1.16
  @@ -3,12 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a moniwiki formatting processor for the MoniWiki
   //
  -// $Id: monimarkup.php,v 1.15 2008/12/16 09:39:04 wkpark Exp $
  +// $Id: monimarkup.php,v 1.16 2008/12/23 13:52:08 wkpark Exp $
   /**
    * @date    2006-08-09
    * @name    Moniwiki Processor
    * @desc    Moniwiki default processor
  - * @version $Revision: 1.15 $
  + * @version $Revision: 1.16 $
    * @depend  1.1.3
    * @license GPL
    */
  @@ -608,13 +608,19 @@
   
                   $c=preg_replace_callback("/(".$wordrule.")/",
                       array(&$formatter,'link_repl'),$c);
  +
                   while($_li>0 and $_lidep[$_li] > 0) {
                       $out.=$this->_li(0,$_lityp[$_li]);
                       $out.=$this->_list(0,$_lityp[$_li]);
                       --$_li;
                   }
   
  -                if (preg_match('/<div[^>]*>/',$c))
  +                $c=preg_replace("/\007(\d+)\007/e",
  +                    "\$formatter->processor_repl(\$btype[$1],\$block[$1])",$c);
  +                $c=preg_replace("/\035(\d+)\035/e", 
  +                    "\$formatter->link_repl(\$inline[$1])",$c);
  +
  +                if (preg_match('/<(div|ul|ol|pre|blockquote)[^>]*>/',$c))
                       $out.= $this->_div(1,' class="para"',$style).$c.$this->_div(0);
                   else
                       $out.= $this->_p(1,' class="para"',$style).$c.$this->_p(0);
  
  
  


wkpark      2008/12/23 22:52:55

  Modified:    .        wiki.php
  Log:
  conditionally set trailer()
  
  Revision  Changes    Path
  1.435     +7 -7      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.434
  retrieving revision 1.435
  diff -u -r1.434 -r1.435
  --- wiki.php	22 Dec 2008 16:20:44 -0000	1.434
  +++ wiki.php	23 Dec 2008 13:52:55 -0000	1.435
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.434 2008/12/22 16:20:44 wkpark Exp $
  +// $Id: wiki.php,v 1.435 2008/12/23 13:52:55 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.434 $',1,-1);
  +$_revision = substr('$Revision: 1.435 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -4241,12 +4241,12 @@
   
       $js=$DBInfo->js;
   
  -    if (isset($options['trail']))
  -      $this->set_trailer($options['trail'],$this->page->name);
  -    else if ($DBInfo->origin)
  -      $this->set_origin($this->page->name);
  -
       if (!$plain) {
  +      if (isset($options['trail']))
  +        $this->set_trailer($options['trail'],$this->page->name);
  +      else if ($DBInfo->origin)
  +        $this->set_origin($this->page->name);
  +
         # find upper page
         $pos=0;
         preg_match('/(\:|\/)/',$this->page->name,$sep); # NameSpace/SubPage or NameSpace:SubNameSpacePage
  
  
  


wkpark      2008/12/23 23:04:58

  Modified:    css      _base.css
  Log:
  preserve spaces in the lineNumber
  
  Revision  Changes    Path
  1.26      +3 -0      moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- _base.css	16 Dec 2008 09:41:23 -0000	1.25
  +++ _base.css	23 Dec 2008 14:04:58 -0000	1.26
  @@ -373,6 +373,9 @@
   
   span.lineNumber {
     color:#ffff00;
  +  border-right:3px solid #4e4e4e;
  +  margin-right:4px;
  +  white-space:pre;
   }
   
   .wikiSyntax, .wikiSyntax code{  
  
  
  


wkpark      2008/12/23 23:06:25

  Modified:    plugin/processor vim.php
  Log:
  remove ending CR.
  
  Revision  Changes    Path
  1.43      +3 -3      moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.42
  retrieving revision 1.43
  diff -u -r1.42 -r1.43
  --- vim.php	23 Dec 2008 13:51:21 -0000	1.42
  +++ vim.php	23 Dec 2008 14:06:25 -0000	1.43
  @@ -9,7 +9,7 @@
   // Name: a VIM syntax colorizer
   // Description: a Syntax colorizing processor using the VIM
   // URL: MoniWiki:VimProcessor
  -// Version: $Revision: 1.42 $
  +// Version: $Revision: 1.43 $
   // License: GPL
   // Usage: {{{#!vim sh|c|sh|.. [number]
   // some codes
  @@ -18,7 +18,7 @@
   // Win32 note:
   //  add $path="/bin;/Program Files/Vim/VimXX"; in the config.php
   //
  -// $Id: vim.php,v 1.42 2008/12/23 13:51:21 wkpark Exp $
  +// $Id: vim.php,v 1.43 2008/12/23 14:06:25 wkpark Exp $
   
   function processor_vim($formatter,$value,$options) {
     global $DBInfo;
  @@ -169,7 +169,7 @@
     $stag="<$myspan class='wikiSyntax' id='PRE-$uniq' style='font-family:FixedSys,monospace;color:$fgcolor;background-color:$bgcolor'>\n";
     $etag="</$myspan>\n";
   
  -  $out = preg_replace(array("@^<font face[^>]*>\n@","@</font>\n?$@"),array('',''),$out); // vim7.x
  +  $out = preg_replace(array("@^<font face[^>]*>\n@","@\n?</font>\n?$@"),array('',''),$out); // vim7.x
   
     $lines=explode("\n",$out);
     $out="<span class=\"line\">".
  
  
  


wkpark      2008/12/24 00:38:41

  Modified:    local    numbering.js
  Log:
  safari/chrom fix etc.
  
  Revision  Changes    Path
  1.2       +19 -6     moniwiki/local/numbering.js
  
  Index: numbering.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/numbering.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- numbering.js	28 Mar 2005 05:56:43 -0000	1.1
  +++ numbering.js	23 Dec 2008 15:38:41 -0000	1.2
  @@ -3,7 +3,18 @@
   //
   
   function isnumbered(obj) {
  -  return obj.childNodes.length && obj.firstChild.childNodes.length && obj.firstChild.firstChild.className == 'lineNumber';
  +  var c = obj.firstChild;
  +  while(true) {
  +    if (c.tagName && c.className == 'line') {
  +      if (c.firstChild && c.firstChild.className == 'lineNumber') {
  +        return true;
  +      } else {
  +        return false;
  +      }
  +    }
  +    var c = c.nextSibling;
  +  }
  +  return false;
   }
   function nformat(num,chrs,add) {
     var nlen = Math.max(0,chrs-(''+num).length), res = '';
  @@ -16,8 +27,10 @@
       if (typeof nstart == 'undefined') nstart = 1;
       if (typeof nstep  == 'undefined') nstep = 1;
       n = nstart;
  -    while (l != null) {
  -      if (l.tagName == 'SPAN') {
  +    var ls = c.getElementsByTagName('span');
  +    for (var i=0;i<ls.length;i++) {
  +      var l = ls[i];
  +      if (l.tagName == 'SPAN' && l.className == 'line') {
           var s = document.createElement('SPAN');
           s.className = 'lineNumber'
           s.appendChild(document.createTextNode(nformat(n,4,' ')));
  @@ -27,16 +40,16 @@
           else
             l.appendChild(s)
         }
  -      l = l.nextSibling;
       }
     return false;
   }
   function remnumber(did) {
     var c = document.getElementById(did), l = c.firstChild;
     if (isnumbered(c))
  -    while (l != null) {
  +    var ls = c.getElementsByTagName('span');
  +    for (var i=0;i<ls.length;i++) {
  +      var l = ls[i];
         if (l.tagName == 'SPAN' && l.firstChild.className == 'lineNumber') l.removeChild(l.firstChild);
  -      l = l.nextSibling;
       }
     return false;
   }
  
  
  


wkpark      2008/12/24 17:01:27

  Modified:    .        wiki.php
  Log:
  accept ":" char in the interwiki regex.
  empty/isset() fix
  
  Revision  Changes    Path
  1.436     +5 -5      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.435
  retrieving revision 1.436
  diff -u -r1.435 -r1.436
  --- wiki.php	23 Dec 2008 13:52:55 -0000	1.435
  +++ wiki.php	24 Dec 2008 08:01:27 -0000	1.436
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.435 2008/12/23 13:52:55 wkpark Exp $
  +// $Id: wiki.php,v 1.436 2008/12/24 08:01:27 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.435 $',1,-1);
  +$_revision = substr('$Revision: 1.436 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -1905,7 +1905,8 @@
       #"\b(".$DBInfo->interwikirule."):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
       #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
       #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+[^\(\)<>\s\',\.:\?\!]+)|".
  -    "(?:\b|\^?)(?:[A-Z][a-zA-Z]+):(?:[^:\(\)<>\s\']?[^\s<\'\",:\!\010\006]+(?:\s(?![\x21-\x7e]))?(?<![,\.\)>]))|".
  +    "(?:\b|\^?)(?:[A-Z][a-zA-Z]+):(?:[^:\(\)<>\s\']?[^\s<\'\",\!\010\006]+(?:\s(?![\x21-\x7e]))?(?<![,\.\)>]))|".
  +    #"(?:\b|\^?)(?:[A-Z][a-zA-Z]+):(?:[^:\(\)<>\s\']?[^\s<\'\",:\!\010\006]+(?:\s(?![\x21-\x7e]))?(?<![,\.\)>]))|".
       #"(\b|\^?)([A-Z][a-zA-Z]+):([^:\(\)<>\s\']?[^<>\s\'\",:\?\!\010\006]*(\s(?![\x21-\x7e]))?)";
       # for PR #301713
       #
  @@ -2424,13 +2425,12 @@
   
       $icon=$this->imgs_dir_interwiki.strtolower($wiki).'-16.png';
       $sx=16;$sy=16;
  -    if ($DBInfo->intericon[$wiki]) {
  +    if (isset($DBInfo->intericon[$wiki])) {
         $icon=$DBInfo->intericon[$wiki][2];
         $sx=$DBInfo->intericon[$wiki][0];
         $sy=$DBInfo->intericon[$wiki][1];
       }
   
  -
       $page=$url;
       $url=$DBInfo->interwiki[$wiki];
   
  
  
  


wkpark      2008/12/24 17:07:10

  Modified:    plugin   autogoto.php
  Log:
  support $url_encodings option to autodetect encoding of urls.
  http://kldp.net/forum/message.php?msg_id=10120
  
  Revision  Changes    Path
  1.3       +21 -1     moniwiki/plugin/autogoto.php
  
  Index: autogoto.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/autogoto.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- autogoto.php	20 Jul 2006 10:38:22 -0000	1.2
  +++ autogoto.php	24 Dec 2008 08:07:10 -0000	1.3
  @@ -5,7 +5,7 @@
   //
   // Usage: set $auto_search='AutoGoto'; in the config.php
   //
  -// $Id: autogoto.php,v 1.2 2006/07/20 10:38:22 wkpark Exp $
  +// $Id: autogoto.php,v 1.3 2008/12/24 08:07:10 wkpark Exp $
   
   function do_AutoGoto($formatter,$options) {
       global $DBInfo;
  @@ -26,11 +26,31 @@
               }
           }
       }
  +   
       $npage=str_replace(' ','',$formatter->page->name);
       if ($DBInfo->hasPage($npage)) {
           $options['value']=$npage;
           do_goto($formatter,$options);
           return true;
  +    } else if (function_exists('iconv')) {
  +        if (strtolower($DBInfo->charset) != 'utf-8' ) {
  +            $t = @iconv('UTF-8',$DBInfo->charset,$formatter->page->name);
  +            if ($t and $DBInfo->hasPage($t)) {
  +                $options['value']=$t;
  +                do_goto($formatter,$options);
  +                return true;
  +            }
  +        } else if (!empty($DBInfo->url_encodings)) {
  +            $cs = explode(',',$DBInfo->url_encodings);
  +            foreach ($cs as $c) {
  +                $t = @iconv($c, $DBInfo->charset, $formatter->page->name);
  +                if ($t and $DBInfo->hasPage($t)) {
  +                    $options['value']=$t;
  +                    do_goto($formatter,$options);
  +                    return true;
  +                }
  +            }
  +        }
       }
       $options['value']=$formatter->page->name;
       $options['check']=1;
  
  
  


wkpark      2008/12/24 18:02:24

  Modified:    plugin/processor vim.php
  Log:
  experimental list-style line format.
  
  Revision  Changes    Path
  1.44      +15 -4     moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.43
  retrieving revision 1.44
  diff -u -r1.43 -r1.44
  --- vim.php	23 Dec 2008 14:06:25 -0000	1.43
  +++ vim.php	24 Dec 2008 09:02:24 -0000	1.44
  @@ -9,7 +9,7 @@
   // Name: a VIM syntax colorizer
   // Description: a Syntax colorizing processor using the VIM
   // URL: MoniWiki:VimProcessor
  -// Version: $Revision: 1.43 $
  +// Version: $Revision: 1.44 $
   // License: GPL
   // Usage: {{{#!vim sh|c|sh|.. [number]
   // some codes
  @@ -18,7 +18,7 @@
   // Win32 note:
   //  add $path="/bin;/Program Files/Vim/VimXX"; in the config.php
   //
  -// $Id: vim.php,v 1.43 2008/12/23 14:06:25 wkpark Exp $
  +// $Id: vim.php,v 1.44 2008/12/24 09:02:24 wkpark Exp $
   
   function processor_vim($formatter,$value,$options) {
     global $DBInfo;
  @@ -172,8 +172,19 @@
     $out = preg_replace(array("@^<font face[^>]*>\n@","@\n?</font>\n?$@"),array('',''),$out); // vim7.x
   
     $lines=explode("\n",$out);
  -  $out="<span class=\"line\">".
  -    implode("</span>\n<span class=\"line\">",$lines)."</span>\n";
  +  $out = '';
  +  if (0) { // list style
  +    $col = array(' alt','');
  +    $sz = count($lines);
  +    for ($i=0;$i<$sz;$i++) {
  +      $cls = $col[$i % 2];
  +      $out.= "<li class=\"line$cls\">".$lines[$i]."</li>\n";
  +    }
  +    $out = '<ul style="margin:0;padding:0;list-style:none;">'.$out.'</ul>';
  +  } else {
  +    $out="<span class=\"line\">".
  +      implode("</span>\n<span class=\"line\">",$lines)."</span>\n";
  +  }
     $fp=fopen($html,"w");
     fwrite($fp,$stag.$out.$etag);
     fclose($fp);
  
  
  


wkpark      2008/12/24 18:08:22

  Modified:    plugin   UploadedFiles.php
  Log:
  force download some cgi/php/pl files
  
  Revision  Changes    Path
  1.30      +10 -7     moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- UploadedFiles.php	9 Dec 2008 07:52:17 -0000	1.29
  +++ UploadedFiles.php	24 Dec 2008 09:08:22 -0000	1.30
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadedFiles plugin for the MoniWiki
   //
  -// $Id: UploadedFiles.php,v 1.29 2008/12/09 07:52:17 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.30 2008/12/24 09:08:22 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     $list=macro_UploadedFiles($formatter,$options['page'],$options);
  @@ -202,16 +202,18 @@
   
      if ($value and $value!='UploadFile') {
         $key=$DBInfo->pageToKeyname($value);
  -      if ($force_download or $key != $value)
  -        $prefix=$formatter->link_url(_rawurlencode($value),"?action=$mydownload&amp;value=");
  +      //if ($force_download or $key != $value)
  +        $down_prefix=$formatter->link_url(_rawurlencode($value),"?action=$mydownload&amp;value=");
         $dir=$DBInfo->upload_dir."/$key";
      } else {
         $value=$formatter->page->urlname;
         $key=$DBInfo->pageToKeyname($formatter->page->name);
  -      if ($force_download or $key != $formatter->page->name)
  -        $prefix=$formatter->link_url($formatter->page->urlname,"?action=$mydownload&amp;value=");
  +      //if ($force_download or $key != $formatter->page->name)
  +        $down_prefix=$formatter->link_url($formatter->page->urlname,"?action=$mydownload&amp;value=");
         $dir=$DBInfo->upload_dir."/$key";
      }
  +   if ($force_download or $key != $value)
  +      $prefix = $down_prefix;
   
      if ($formatter->preview and $formatter->page->name == $value) { 
        $opener='';
  @@ -327,8 +329,9 @@
      $iidx=1;
      foreach ($upfiles as $file) {
         $_l_file=_l_filename($file);
  -      if ($down_mode)
  -        $link=str_replace(";value=",";value=".rawurlencode($file),$prefix);
  +      // force download with some extensions. XXX
  +      if ($down_mode or preg_match('/\.(pl|cgi|py|php.?)$/',$file))
  +        $link=str_replace(";value=",";value=".rawurlencode($file),$down_prefix);
         else
           $link=$prefix.rawurlencode($file); // XXX
   
  
  
  


wkpark      2008/12/24 18:09:44

  Modified:    .        monisetup.php
  Log:
  check apache settings and set proper .htaccess settings for the $upload_dir.
  
  Revision  Changes    Path
  1.37      +73 -7     moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- monisetup.php	20 Dec 2008 14:06:27 -0000	1.36
  +++ monisetup.php	24 Dec 2008 09:09:44 -0000	1.37
  @@ -1,7 +1,7 @@
   <?php
   // Copyright 2003-2007 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.36 2008/12/20 14:06:27 wkpark Exp $
  +// $Id: monisetup.php,v 1.37 2008/12/24 09:09:44 wkpark Exp $
   
   function _stripslashes($str) {
     return get_magic_quotes_gpc() ? stripslashes($str):$str;
  @@ -326,12 +326,76 @@
         } else
           print "<h3><font color=blue>".sprintf(_t("%s is writable"),$config[$file])."</font> :)</h3>\n";
       }
  -    if (is_dir($config['upload_dir'])
  -      and !file_exists($config['upload_dir'].'/.htaccess')) {
  -      $fp=fopen('pds_htaccess','w');
  -      fwrite($fp,'#Options NoExecCGI'."\n");
  -      fwrite($fp,'AddType text/plain .sh .cgi .pl .py .php .php3 .php4 .phtml .html'."\n");
  -      fclose($fp);
  +    if (is_dir($config['upload_dir'])) {
  +      $chk=array(
  +        'AddType'=>"AddType text/plain .sh .cgi .pl .py .php .php3 .php4 .phtml .html\n",
  +        'ForceType'=>"<Files ~ '\.(php.?|pl|py|cgi)$'>\nForceType text/plain\n</Files>\n",
  +        'php_value'=>"php_value engine off\n",
  +        'NoExecCGI'=>"#Options NoExecCGI\n",
  +      );
  +      if (file_exists($config['upload_dir'].'/.htaccess')) {
  +        print '<h3>'.sprintf(_t("If you want to check .htaccess file please delete '%s' file and reload it."),
  +          $config['upload_dir'].'/.htaccess').'</h3>';
  +      } else if (ini_get('allow_url_fopen')) {
  +        $port= ($_SERVER['SERVER_PORT'] != 80) ? ':'.$_SERVER['SERVER_PORT']:'';
  +        $proto= 'http';
  +        if (!empty($_SERVER['HTTPS'])) $proto= 'https';
  +        else $proto= strtolower(strtok($_SERVER['SERVER_PROTOCOL'],'/'));
  +        $url = preg_replace('/monisetup\.php/','',$_SERVER['SCRIPT_NAME']);
  +        $path = $proto.'://'.$_SERVER['HTTP_HOST'].$port.$url;
  +
  +        print '<h3>'._t("Security check for 'upload_dir'.").'</h3>';
  +
  +        $fp = fopen('pds/test.php','w');
  +        if (is_resource($fp)) {
  +          fwrite($fp,"<?php echo 'HelloWorld';");
  +          fclose($fp);
  +        }
  +
  +        echo "<ul>";
  +        foreach ($chk as $c=>$v) {
  +          $fp = fopen('pds/.htaccess','w');
  +          if (is_resource($fp)) {
  +            fwrite($fp,preg_replace('/^#/','',$v));
  +            fclose($fp);
  +
  +            $fp=@fopen($path.'/pds/test.php','r');
  +            if ($fp) {
  +              $out='';
  +              while(!feof($fp)) {
  +                $out.=fgets($fp,1024);
  +              }
  +              fclose($fp);
  +              if ($out{0} == '<') {
  +                print "<li>$c => <span style='color:blue'>Good</span></li>\n";
  +              } else {
  +                print "<li>$c => <span style='color:red'>BAD</span></li>\n";
  +              }
  +              $work[$c]=$v;
  +            } else {
  +              print "<li>$c => "._t("Fail")."</li>";
  +            }
  +          } else {
  +            print "<li>"._t("Unable to write .htaccess")."</li>";
  +            break;
  +          }
  +        }
  +        echo "</ul>";
  +        $fp = fopen('pds_htaccess','w');
  +        if (is_resource($fp)) {
  +          fwrite($fp,implode('',$work));
  +          fclose($fp);
  +        }
  +        @unlink('pds/test.php');
  +        @unlink('pds/.htaccess');
  +      } else {
  +        print '<h3>'._t("Unable to 'url_fopen'! Please check .htaccess file manually.").'</h3>';
  +        $fp = fopen('pds_htaccess','w');
  +        if (is_resource($fp)) {
  +          fwrite($fp,implode('',$chk));
  +          fclose($fp);
  +        }
  +      }
       }
       print "</div>\n";
     }
  @@ -505,6 +569,7 @@
   
       $charset= strtoupper($charset);
       # XXX
  +    $server_charset = '';
       if (function_exists('nl_langinfo'))
         $server_charset= nl_langinfo(CODESET);
   
  @@ -940,4 +1005,5 @@
   }
     print "</div></body></html>";
   
  +// vim:et:sts=2:sw=2:
   ?>
  
  
  


wkpark      2008/12/24 18:11:31

  Modified:    local    numbering.js
  Log:
  fix for chrome
  
  Revision  Changes    Path
  1.3       +33 -18    moniwiki/local/numbering.js
  
  Index: numbering.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/numbering.js,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- numbering.js	23 Dec 2008 15:38:41 -0000	1.2
  +++ numbering.js	24 Dec 2008 09:11:31 -0000	1.3
  @@ -3,16 +3,18 @@
   //
   
   function isnumbered(obj) {
  -  var c = obj.firstChild;
  -  while(true) {
  -    if (c.tagName && c.className == 'line') {
  -      if (c.firstChild && c.firstChild.className == 'lineNumber') {
  -        return true;
  -      } else {
  -        return false;
  -      }
  +  var c = obj.getElementsByTagName('li');
  +  if (c.length == 0) {
  +    c = obj.getElementsByTagName('span');
  +  }
  +  if (c.length > 0 && c[0].className.match(/line/)) {
  +    if (c[0].tagName == 'SPAN' && c[0].className == 'lineNumber') {
  +      return true;
  +    } else if (c[0].firstChild && c[0].firstChild.tagName == 'SPAN' && c[0].firstChild.className == 'lineNumber') {
  +      return true;
  +    } else {
  +      return false;
       }
  -    var c = c.nextSibling;
     }
     return false;
   }
  @@ -22,15 +24,18 @@
     return res+num+add;
   }
   function addnumber(did, nstart, nstep) {
  -  var c = document.getElementById(did), l = c.firstChild, n = 1;
  -  if (!isnumbered(c))
  +  var c = document.getElementById(did), n = 1;
  +  if (!isnumbered(c)) {
       if (typeof nstart == 'undefined') nstart = 1;
       if (typeof nstep  == 'undefined') nstep = 1;
       n = nstart;
       var ls = c.getElementsByTagName('span');
  +    if (ls.length == 0)
  +      ls = c.getElementsByTagName('li');
  +
       for (var i=0;i<ls.length;i++) {
         var l = ls[i];
  -      if (l.tagName == 'SPAN' && l.className == 'line') {
  +      if (l.className.match(/line/) && l.className != 'lineNumber') {
           var s = document.createElement('SPAN');
           s.className = 'lineNumber'
           s.appendChild(document.createTextNode(nformat(n,4,' ')));
  @@ -41,17 +46,27 @@
             l.appendChild(s)
         }
       }
  -  return false;
  +  }
  +  return;
   }
   function remnumber(did) {
  -  var c = document.getElementById(did), l = c.firstChild;
  -  if (isnumbered(c))
  -    var ls = c.getElementsByTagName('span');
  +  var c = document.getElementById(did);
  +  if (isnumbered(c)) {
  +    ls = c.getElementsByTagName('li');
  +    if (ls.length == 0) {
  +      var ls = c.getElementsByTagName('span');
  +      for (var i=0;i<ls.length;i++) {
  +        var l = ls[i];
  +        if (l.firstChild.tagName && l.firstChild.className == 'lineNumber') l.removeChild(l.firstChild);
  +      }
  +      return;
  +    }
       for (var i=0;i<ls.length;i++) {
         var l = ls[i];
  -      if (l.tagName == 'SPAN' && l.firstChild.className == 'lineNumber') l.removeChild(l.firstChild);
  +      if (l.firstChild.className == 'lineNumber') l.removeChild(l.firstChild);
       }
  -  return false;
  +  }
  +  return;
   }
   function togglenumber(did, nstart, nstep) {
     var c = document.getElementById(did);
  
  
  


wkpark      2008/12/24 18:12:00

  Modified:    local/js/locale dummy.js
  Log:
  update
  
  Revision  Changes    Path
  1.5       +2 -0      moniwiki/local/js/locale/dummy.js
  
  Index: dummy.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/locale/dummy.js,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- dummy.js	23 Dec 2008 09:02:20 -0000	1.4
  +++ dummy.js	24 Dec 2008 09:12:00 -0000	1.5
  @@ -5,3 +5,5 @@
   // sh
   N_("The code is in your clipboard now");
   N_('Printing...');
  +N_("copy to clipboard");
  +N_("view plain");
  
  
  


wkpark      2008/12/24 18:12:00

  Modified:    local/js/locale/po ko.po
  Log:
  update
  
  Revision  Changes    Path
  1.5       +9 -1      moniwiki/local/js/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/locale/po/ko.po,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ko.po	23 Dec 2008 09:02:20 -0000	1.4
  +++ ko.po	24 Dec 2008 09:12:00 -0000	1.5
  @@ -5,7 +5,7 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1.3\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2008-12-23 17:57+0900\n"
  +"POT-Creation-Date: 2008-12-23 18:22+0900\n"
   "PO-Revision-Date: 2008-12-18 17:00+0900\n"
   "Last-Translator: Won-Kyu Park <wkpark@kldp.org>\n"
   "MIME-Version: 1.0\n"
  @@ -229,3 +229,11 @@
   #: dummy.js:7
   msgid "Printing..."
   msgstr "인쇄중..."
  +
  +#: dummy.js:8
  +msgid "copy to clipboard"
  +msgstr "클립보드 복사"
  +
  +#: dummy.js:9
  +msgid "view plain"
  +msgstr "텍스트 보기"
  
  
  


wkpark      2008/12/24 18:13:56

  Modified:    lib      fckpacker.php
  Log:
  variable,space options are added.
  BUG found! in the string protecter
  
  Revision  Changes    Path
  1.8       +22 -11    moniwiki/lib/fckpacker.php
  
  Index: fckpacker.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/fckpacker.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- fckpacker.php	23 Dec 2008 09:39:12 -0000	1.7
  +++ fckpacker.php	24 Dec 2008 09:13:56 -0000	1.8
  @@ -3,7 +3,7 @@
    * This is a reduced FCKpackager file for Javascript Compression
    * for MoniWiki.
    *
  - * $Id: fckpacker.php,v 1.7 2008/12/23 09:39:12 wkpark Exp $
  + * $Id: fckpacker.php,v 1.8 2008/12/24 09:13:56 wkpark Exp $
    *
    * ---------------------------------------------------------------------------
    * FCKpackager - JavaScript Packager and Compressor - http://www.fckeditor.net
  @@ -214,11 +214,11 @@
   
       function Revision()
       {
  -        return trim(substr('$Revision: 1.7 $',10,-1));
  +        return trim(substr('$Revision: 1.8 $',10,-1));
       }
   
       // Call it statically. E.g.: FCKJavaScriptCompressor::Compress( ... )
  -    function Compress( $script, $constantsProcessor = null, $params=array('nofunc'=>0) )
  +    function Compress( $script, $constantsProcessor = null, $params=array('variable'=>1,'space'=>1) )
       {
           // detect cr and replace it with "\n"
           preg_match('/(\r\n|\r|\n)/s', $script, $cr);
  @@ -235,6 +235,7 @@
           $stringsProc = new FCKStringsProcessor() ;
   
           // Protect the script strings.
  +        // buggy XXX
           $script = $stringsProc->ProtectStrings( $script ) ;
   
           // Remove "/* */" "//" comments
  @@ -259,9 +260,11 @@
           //    '$1$2', $script ) ;
   
           // Concatenate lines that doesn't end with [;{}] using a space
  -        $script = preg_replace(
  -            '/(?<![;{}\n\s])\s*\n+\s*(?![\s\n{}])/s',
  -            ' ', $script ) ;
  +        if (!empty($params['space'])) {
  +            $script = preg_replace(
  +                '/(?<![;{}\n\s])\s*\n+\s*(?![\s\n{}])/s',
  +                ' ', $script ) ;
  +        }
   
           // Concatenate lines that end with "}" using a "\n", except for "else",
           // "while", "catch" and "finally" cases, or when followed by, "'", ";",
  @@ -295,14 +298,19 @@
               array('/new\s+Object\(\)/','/new\s+Array\(\)/'),
               array('{}','[]'), $script ) ;
   
  -        // space + delim + space => delim, except a++ +b
  -        $delim = '([+\-])|([:=?*\/&,;><|!{}\[\]\(\)])';
  -        $script = preg_replace('/[ ]*('.$delim.')[ ]*(?(2)(?![+\-]))/', '\\1', $script);
  +        if (!empty($params['space'])) {
  +            $delim = '([+\-])|([:=?*\/&,;><|!{}\[\]\(\)])';
  +            // space + delim + space => delim, except a++ +b
  +            $script = preg_replace('/[ ]*('.$delim.')[ ]*(?(2)(?![+\-]))/', '\\1', $script);
  +        } else {
  +            // only some spaces are removed: ' : '=> ':', ' = '=> '='
  +            $script = preg_replace('/[ ]*([:=])[ ]*/', '\\1', $script);
  +        }
           // workaround for a = (b) ? c:d; case. c is not a object menber.
           $script = preg_replace('/(?<=\?)([^:]+):/', '\\1 :', $script);
   
           // Process function contents, renaming parameters and variables.
  -        if (empty($params['nofunc']))
  +        if (!empty($params['variable']))
               $script = FCKJavaScriptCompressor::_ProcessFunctions( $script ) ;
   
           // Join consecutive string concatened with a "+".
  @@ -380,8 +388,11 @@
           // Catches string literals, regular expressions and conditional comments.
           return preg_replace_callback(
               // http://blog.stevenlevithan.com/archives/match-quoted-string
  +            // second regex term is buggy XXX
               #'/(?:("|\').*?(?<!\\\\)\1)|(?:(?<![\*\/\\\\])\/[^\/\*].*?(?<!\\\\)\/(?=([\.\w])|(\s*[,;}\)])))|(?s:\/\*@(?:cc_on|if|elif|else|end).*?@\*\/)/',
  -            '/(?:(["\'])(?:\\\\?+.)*?\1)|(?:(?<![\*\/\\\\])\/[^\/\*].*?(?<!\\\\)\/(?=([\.\w])|(\s*[,;}\)])))|(?s:\/\*@(?:cc_on|if|elif|else|end).*?@\*\/)/',
  +            '/(?:(["\'])(?:\\\\?+.)*?\1)|(?s:\/\*@(?:cc_on|if|elif|else|end).*?@\*\/)/',
  +            # old
  +            #'/(?:(["\'])(?:\\\\?+.)*?\1)|(?:(?<![\*\/\\\\])\/[^\/\*].*?(?<!\\\\)\/(?=([\.\w])|(\s*[,;}\)])))|(?s:\/\*@(?:cc_on|if|elif|else|end).*?@\*\/)/',
               array( &$this, '_ProtectStringsMatch' ), $source ) ;
       }
   
  
  
  


wkpark      2008/12/24 18:14:56

  Modified:    css      _base.css
  Log:
  div.overflow fix for IE
  
  Revision  Changes    Path
  1.27      +8 -2      moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- _base.css	23 Dec 2008 14:04:58 -0000	1.26
  +++ _base.css	24 Dec 2008 09:14:56 -0000	1.27
  @@ -27,7 +27,9 @@
   }
   
   pre.wiki {
  -  font-family:Courier New,monospace;
  +  word-wrap: break-word; /* IE */
  +  overflow-x: auto;
  +  font-family:Courier,monospace;
   }
   
   pre {
  @@ -380,7 +382,11 @@
   
   .wikiSyntax, .wikiSyntax code{  
     font-family:"Bitstream Vera Sans Mono", Courier New, GulimChe, monospace !important;
  -  padding:0.5em;
  +  overflow-x:auto;
  +}
  +
  +div.wikiSyntax {
  +  word-wrap: break-word; /* IE */
   }
   
   .pageNav { margin-bottom:5px;font-size : 75%; }
  
  
  


wkpark      2008/12/24 18:16:14

  Modified:    locale/po fr.po ko.po moniwiki.pot
  Log:
  update msgs
  
  Revision  Changes    Path
  1.22      +144 -109  moniwiki/locale/po/fr.po
  
  Index: fr.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/fr.po,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- fr.po	20 Dec 2008 04:37:50 -0000	1.21
  +++ fr.po	24 Dec 2008 09:16:14 -0000	1.22
  @@ -4,7 +4,7 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2008-12-20 02:31+0900\n"
  +"POT-Creation-Date: 2008-12-23 23:10+0900\n"
   "PO-Revision-Date: 2003-08-17 22:51+0900\n"
   "Last-Translator: Serge Stinckwich <Serge.Stinckwich@info.unicaen.fr>\n"
   "Language-Team: fr <fr@li.org>\n"
  @@ -104,7 +104,7 @@
   msgid "Add Blog entry to \"%s\""
   msgstr "Ajouter une entre de blog  \"%s\""
   
  -#: ../plugin/Blog.php:260 ../plugin/Blog.php:332
  +#: ../plugin/Blog.php:260 ../plugin/Blog.php:332 ../plugin/PluginInfo.php:45
   msgid "Name"
   msgstr ""
   
  @@ -209,7 +209,7 @@
   msgstr "commentaire"
   
   # ../wikilib.php:482
  -#: ../plugin/Comment.php:88 ../wikilib.php:911 ../monisetup.php:923
  +#: ../plugin/Comment.php:88 ../wikilib.php:911 ../monisetup.php:924
   msgid "Preview"
   msgstr "Prvisualisation"
   
  @@ -388,7 +388,7 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:124 ../wiki.php:4426
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:124 ../wiki.php:4439
   msgid "Refresh"
   msgstr ""
   
  @@ -405,7 +405,7 @@
   " ou cliquer sur %s pour faire une recherche en texte intgral de cette "
   "page.\n"
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5281 ../wiki.php:5288
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5296 ../wiki.php:5303
   #: ../wikilib.php:1364
   msgid "here"
   msgstr ""
  @@ -711,6 +711,37 @@
   msgid "Edit Image"
   msgstr "diter l'image"
   
  +#: ../plugin/PluginInfo.php:29
  +#, c-format
  +msgid "Total %s plugin activated."
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:43 ../plugin/admin.php:136
  +msgid "Description"
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:47
  +msgid "Version"
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:49 ../plugin/admin.php:139
  +msgid "Author"
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:51 ../plugin/admin.php:141
  +msgid "License"
  +msgstr ""
  +
  +# ../plugin/VisualTour.php:59
  +#: ../plugin/PluginInfo.php:53 ../plugin/admin.php:143
  +#, fuzzy
  +msgid "Depend"
  +msgstr "Plus profond"
  +
  +#: ../plugin/PluginInfo.php:57 ../plugin/admin.php:147
  +msgid "URL"
  +msgstr ""
  +
   #: ../plugin/Rating.php:58
   msgid "Awful!"
   msgstr ""
  @@ -739,7 +770,7 @@
   #: ../plugin/security/mustlogin.php:29 ../plugin/security/mustlogin.php:40
   #: ../plugin/security/mustlogin.php:51 ../plugin/security/mustlogin.php:67
   #: ../plugin/security/needtologin.php:29 ../plugin/security/needtologin.php:40
  -#: ../plugin/security/needtologin.php:51 ../plugin/security/userbased.php:60
  +#: ../plugin/security/needtologin.php:51 ../plugin/security/userbased.php:62
   msgid "Please Login or make your ID on this Wiki ;)"
   msgstr "Merci de vous connecter ou de construire un ID sur ce Wiki ;)"
   
  @@ -771,11 +802,11 @@
   msgid "[%sh %sm ago]"
   msgstr ""
   
  -#: ../plugin/SWFUpload.php:117
  +#: ../plugin/SWFUpload.php:118
   msgid "Files..."
   msgstr ""
   
  -#: ../plugin/SWFUpload.php:118
  +#: ../plugin/SWFUpload.php:119
   msgid "Upload"
   msgstr ""
   
  @@ -874,7 +905,7 @@
   msgstr "TwinPages de %s"
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../plugin/TwinPages.php:19 ../wiki.php:5267
  +#: ../plugin/TwinPages.php:19 ../wiki.php:5282
   msgid "See [TwinPages]: "
   msgstr "Voir [TwinPages]: "
   
  @@ -965,8 +996,9 @@
   msgstr ""
   
   # ../plugin/rename.php:36
  -#: ../plugin/UploadedFiles.php:414 ../plugin/rename.php:77
  -#: ../plugin/revert.php:82 ../wikilib.php:1084 ../wikilib.php:1974
  +#: ../plugin/UploadedFiles.php:414 ../plugin/rcsimport.php:32
  +#: ../plugin/rename.php:77 ../plugin/revert.php:82 ../plugin/userinfo.php:37
  +#: ../wikilib.php:1084 ../wikilib.php:1974
   msgid "Password"
   msgstr "Mot de passe"
   
  @@ -1027,28 +1059,6 @@
   msgid "Protected actions"
   msgstr ""
   
  -#: ../plugin/admin.php:136
  -msgid "Description"
  -msgstr ""
  -
  -#: ../plugin/admin.php:139
  -msgid "Author"
  -msgstr ""
  -
  -#: ../plugin/admin.php:141
  -msgid "License"
  -msgstr ""
  -
  -# ../plugin/VisualTour.php:59
  -#: ../plugin/admin.php:143
  -#, fuzzy
  -msgid "Depend"
  -msgstr "Plus profond"
  -
  -#: ../plugin/admin.php:147
  -msgid "URL"
  -msgstr ""
  -
   #: ../plugin/admin.php:191
   msgid "Enabled plugins"
   msgstr ""
  @@ -1280,8 +1290,7 @@
   msgstr ""
   
   # ../wiki.php:3009
  -#: ../plugin/msgtrans.php:23 ../plugin/useradmin.php:54
  -#: ../plugin/useradmin.php:58
  +#: ../plugin/msgtrans.php:23 ../plugin/userinfo.php:86
   #, fuzzy, c-format
   msgid "You are not allowed to \"%s\" !"
   msgstr "Vous n'tes pas autoris  '%s'"
  @@ -1328,7 +1337,7 @@
   msgid "Save Changes"
   msgstr "ChangementsRcents"
   
  -#: ../plugin/processor/monimarkup.php:489 ../wiki.php:3814
  +#: ../plugin/processor/monimarkup.php:489 ../wiki.php:3827
   msgid "edit"
   msgstr ""
   
  @@ -1518,7 +1527,7 @@
   msgid "Select a tarball file to restore"
   msgstr ""
   
  -#: ../plugin/revert.php:23 ../wiki.php:5283
  +#: ../plugin/revert.php:23 ../wiki.php:5298
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr ""
  @@ -1584,6 +1593,22 @@
   msgid "Do you want to scrap \"%s\" ?"
   msgstr ""
   
  +#: ../plugin/security/acl.php:146
  +msgid "ACL groups"
  +msgstr ""
  +
  +#: ../plugin/security/acl.php:149
  +msgid "Allowed ACL actions"
  +msgstr ""
  +
  +#: ../plugin/security/acl.php:154
  +msgid "Denied ACL actions"
  +msgstr ""
  +
  +#: ../plugin/security/acl.php:159
  +msgid "Protected ACL actions"
  +msgstr ""
  +
   # ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
   # c-format
   #: ../plugin/security/acl.php:222 ../plugin/security/community.php:25
  @@ -1612,9 +1637,9 @@
   # ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
   # c-format
   #: ../plugin/security/community.php:60 ../plugin/security/htaccesslogin.php:46
  -#: ../plugin/security/mustlogin.php:66 ../plugin/security/userbased.php:28
  -#: ../plugin/security/userbased.php:36 ../plugin/security/userbased.php:44
  -#: ../plugin/security/userbased.php:59 ../plugin/security/wikimaster.php:29
  +#: ../plugin/security/mustlogin.php:66 ../plugin/security/userbased.php:30
  +#: ../plugin/security/userbased.php:38 ../plugin/security/userbased.php:46
  +#: ../plugin/security/userbased.php:61 ../plugin/security/wikimaster.php:29
   #: ../plugin/security/wikimaster.php:38 ../plugin/security/wikimaster.php:47
   #, c-format
   msgid "You are not allowed to '%s' on this page."
  @@ -1624,8 +1649,8 @@
   msgid "Please contact the system administrator for htaccess based logins."
   msgstr ""
   
  -#: ../plugin/security/userbased.php:29 ../plugin/security/userbased.php:37
  -#: ../plugin/security/userbased.php:45 ../plugin/security/wikimaster.php:30
  +#: ../plugin/security/userbased.php:31 ../plugin/security/userbased.php:39
  +#: ../plugin/security/userbased.php:47 ../plugin/security/wikimaster.php:30
   #: ../plugin/security/wikimaster.php:39 ../plugin/security/wikimaster.php:48
   msgid "Please contact to WikiMaster"
   msgstr ""
  @@ -1767,18 +1792,6 @@
   msgid "No TrackBack entry found for %s"
   msgstr "Aucune entre de TrackBack dtect pour %s"
   
  -# ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
  -# c-format
  -#: ../plugin/useradmin.php:21
  -#, fuzzy, c-format
  -msgid "You are not allowed to use the \"%s\" macro."
  -msgstr "Vous n'tes pas autoris  pouvoir '%s' cette page"
  -
  -#: ../plugin/useradmin.php:25
  -#, c-format
  -msgid "Total %d users"
  -msgstr ""
  -
   #: ../plugin/userform.php:35 ../plugin/userform.php:38
   msgid "Successfully confirmed"
   msgstr ""
  @@ -1924,8 +1937,8 @@
   msgid "You are not allowed to register on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:240 ../plugin/userform.php:412 ../wiki.php:5221
  -#: ../wiki.php:5232
  +#: ../plugin/userform.php:240 ../plugin/userform.php:412 ../wiki.php:5236
  +#: ../wiki.php:5247
   msgid "Please contact WikiMasters"
   msgstr ""
   
  @@ -2017,6 +2030,28 @@
   msgid "Invalid OpenID Authentication request"
   msgstr ""
   
  +# ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
  +# c-format
  +#: ../plugin/userinfo.php:21
  +#, fuzzy, c-format
  +msgid "You are not allowed to use the \"%s\" macro."
  +msgstr "Vous n'tes pas autoris  pouvoir '%s' cette page"
  +
  +#: ../plugin/userinfo.php:26
  +#, c-format
  +msgid "Total %d users"
  +msgstr ""
  +
  +#: ../plugin/userinfo.php:49
  +msgid "User infomation is restricted by wikimaster"
  +msgstr ""
  +
  +# ../wikilib.php:575
  +#: ../plugin/userinfo.php:81
  +#, fuzzy, c-format
  +msgid "User \"%s\" are deleted !"
  +msgstr "\"%s\" est effac !"
  +
   #: ../plugin/whois.php:119
   #, c-format
   msgid "Could not connect to %s server"
  @@ -2035,151 +2070,151 @@
   msgstr "Renommer %s en %s"
   
   # ../wikilib.php:803
  -#: ../wiki.php:1653
  +#: ../wiki.php:1656
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
   # ../plugin/restore.php:27
  -#: ../wiki.php:1663
  +#: ../wiki.php:1666
   msgid "File does not exist"
   msgstr "Erreur : l'archive n'existe pas"
   
   # ../plugin/restore.php:27
  -#: ../wiki.php:2034
  +#: ../wiki.php:2037
   #, c-format
   msgid "File '%s' does not exist."
   msgstr ""
   
   # ../wikilib.php:521
  -#: ../wiki.php:2902 ../wiki.php:2913 ../wiki.php:5457
  +#: ../wiki.php:2907 ../wiki.php:2918 ../wiki.php:5472
   msgid "Invalid ajax action."
   msgstr ""
   
  -#: ../wiki.php:3403
  +#: ../wiki.php:3412
   msgid "Tags:"
   msgstr ""
   
   # ../wiki.php:1824
  -#: ../wiki.php:3431
  +#: ../wiki.php:3440
   #, c-format
   msgid "See %s"
   msgstr "Voir %s"
   
   # ../wiki.php:1824
  -#: ../wiki.php:3431
  +#: ../wiki.php:3440
   #, c-format
   msgid "TwinPages"
   msgstr ""
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../wiki.php:3436
  +#: ../wiki.php:3445
   msgid "See [TwinPages]:"
   msgstr "Voir [TwinPages]: "
   
  -#: ../wiki.php:3994
  +#: ../wiki.php:4007
   msgid "Sister Sites Index"
   msgstr ""
   
   # ../locale/dummy.php:6 ../wiki.php:2553
  -#: ../wiki.php:4422 ../locale/dummy.php:6
  +#: ../wiki.php:4435 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "ditionTexte"
   
   # ../wiki.php:2555
  -#: ../wiki.php:4424
  +#: ../wiki.php:4437
   msgid "NotEditable"
   msgstr "Pasditable"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wiki.php:4428 ../locale/dummy.php:6
  +#: ../wiki.php:4441 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "MontrePage"
   
   # ../locale/dummy.php:3 ../locale/dummy.php:5 ../wiki.php:2558
  -#: ../wiki.php:4429 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4442 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "TrouvePage"
   
  -#: ../wiki.php:4811
  +#: ../wiki.php:4825
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5220
  +#: ../wiki.php:5235
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5231
  +#: ../wiki.php:5246
   msgid "You are blocked in this wiki"
   msgstr ""
   
   # ../wiki.php:2945 ../wiki.php:2948
  -#: ../wiki.php:5269 ../wiki.php:5278 ../wikilib.php:1344
  +#: ../wiki.php:5284 ../wiki.php:5293 ../wikilib.php:1344
   msgid "Create this page"
   msgstr "Crer cette page"
   
   # ../wikilib.php:816
  -#: ../wiki.php:5280
  +#: ../wiki.php:5295
   #, c-format
   msgid "%s has saved revisions"
   msgstr "%s est sauvegard"
   
   # ../wiki.php:2950
  -#: ../wiki.php:5281 ../wiki.php:5288
  +#: ../wiki.php:5296 ../wiki.php:5303
   #, fuzzy, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr ""
   " ou cliquer sur %s pour faire une recherche en texte intgral de cette "
   "page.\n"
   
  -#: ../wiki.php:5286
  +#: ../wiki.php:5301
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr ""
   
  -#: ../wiki.php:5293
  +#: ../wiki.php:5308
   msgid "Please try to search with another word"
   msgstr ""
   
   # ../wiki.php:2956
  -#: ../wiki.php:5305
  +#: ../wiki.php:5320
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr "%s ou alternativement, utiliser un de ces modles de page :\n"
   
  -#: ../wiki.php:5308
  +#: ../wiki.php:5323
   msgid "You have no templates"
   msgstr ""
   
   # ../wikilib.php:427
  -#: ../wiki.php:5310
  +#: ../wiki.php:5325
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
   
  -#: ../wiki.php:5321
  +#: ../wiki.php:5336
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
   # ../wikilib.php:521
  -#: ../wiki.php:5459
  +#: ../wiki.php:5474
   msgid "Invalid macro action."
   msgstr ""
   
   # ../wiki.php:3009
  -#: ../wiki.php:5469
  +#: ../wiki.php:5484
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "Vous n'tes pas autoris  '%s'"
   
   # ../wiki.php:3021
  -#: ../wiki.php:5489
  +#: ../wiki.php:5504
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "Impossible de pouvoir \"%s\" !"
   
   # ../wiki.php:3024
  -#: ../wiki.php:5492
  +#: ../wiki.php:5507
   msgid "Please enter the valid password"
   msgstr "Merci d'entrer un mot de passe valide"
   
  @@ -2740,117 +2775,117 @@
   msgid "Please be careful to deselect these pages"
   msgstr ""
   
  -#: ../monisetup.php:707
  +#: ../monisetup.php:708
   msgid "MoniWiki"
   msgstr ""
   
  -#: ../monisetup.php:710
  +#: ../monisetup.php:711
   msgid "'config.php' is not writable !"
   msgstr ""
   
  -#: ../monisetup.php:711
  +#: ../monisetup.php:712
   msgid ""
   "Please execute <tt>'monisetup.sh'</tt> or <tt>chmod a+w config.php</tt> "
   "first to change your settings."
   msgstr ""
   
   # ../wiki.php:3024
  -#: ../monisetup.php:738
  +#: ../monisetup.php:739
   #, fuzzy
   msgid "Invalid password error !"
   msgstr "Merci d'entrer un mot de passe valide"
   
  -#: ../monisetup.php:739
  +#: ../monisetup.php:740
   msgid ""
   "If you can't remember your admin password, delete password entry in the "
   "'config.php' and restart 'monisetup'"
   msgstr ""
   
  -#: ../monisetup.php:771
  +#: ../monisetup.php:772
   #, c-format
   msgid "Updated Configutations for this %s"
   msgstr ""
   
   # ../wikilib.php:887
  -#: ../monisetup.php:790
  +#: ../monisetup.php:791
   #, fuzzy
   msgid "Configurations are saved successfully"
   msgstr "Mail envoy avec succs"
   
  -#: ../monisetup.php:791
  +#: ../monisetup.php:792
   msgid ""
   "WARN: Please check <a href='monisetup.php'> your saved configurations</a>"
   msgstr ""
   
  -#: ../monisetup.php:792
  +#: ../monisetup.php:793
   msgid "If all is good, change 'config.php' permission as 644."
   msgstr ""
   
  -#: ../monisetup.php:804
  +#: ../monisetup.php:805
   msgid "Welcome to MoniWiki ! This is your first installation"
   msgstr ""
   
  -#: ../monisetup.php:811
  +#: ../monisetup.php:812
   msgid "Default settings are loaded..."
   msgstr ""
   
   # ../wikilib.php:887
  -#: ../monisetup.php:820
  +#: ../monisetup.php:821
   #, fuzzy
   msgid "Initial configurations are saved successfully."
   msgstr "Mail envoy avec succs"
   
  -#: ../monisetup.php:821
  +#: ../monisetup.php:822
   msgid "Goto <a href='monisetup.php'>MoniSetup</a> again to configure details"
   msgstr ""
   
   # ../plugin/minilogin.php:30
  -#: ../monisetup.php:838 ../monisetup.php:840 ../monisetup.php:936
  -#: ../monisetup.php:938
  +#: ../monisetup.php:839 ../monisetup.php:841 ../monisetup.php:937
  +#: ../monisetup.php:939
   #, fuzzy, c-format
   msgid "goto %s"
   msgstr "ou %s"
   
   # ../wikilib.php:557 ../wikilib.php:559
  -#: ../monisetup.php:843
  +#: ../monisetup.php:844
   #, fuzzy
   msgid "No WikiSeeds are selected"
   msgstr "Aucun fichier n'est slectionn !"
   
  -#: ../monisetup.php:854
  +#: ../monisetup.php:855
   #, c-format
   msgid "Preview current settings for this %s"
   msgstr ""
   
  -#: ../monisetup.php:856
  +#: ../monisetup.php:857
   #, c-format
   msgid "Read current settings for this %s"
   msgstr ""
   
  -#: ../monisetup.php:884
  +#: ../monisetup.php:885
   msgid "Change your settings"
   msgstr ""
   
  -#: ../monisetup.php:886
  +#: ../monisetup.php:887
   msgid "WARN: You have to enter your Admin Password"
   msgstr ""
   
  -#: ../monisetup.php:888 ../monisetup.php:931
  +#: ../monisetup.php:889 ../monisetup.php:932
   #, c-format
   msgid "WARN: You have no WikiSeed on your %s"
   msgstr ""
   
   # ../plugin/quicklinks.php:50
  -#: ../monisetup.php:889 ../monisetup.php:932
  +#: ../monisetup.php:890 ../monisetup.php:933
   #, fuzzy, c-format
   msgid "If you want to put wikiseeds on your wiki %s now"
   msgstr "Voulez vous mettre  jour vos liens rapides ?"
   
  -#: ../monisetup.php:890 ../monisetup.php:933
  +#: ../monisetup.php:891 ../monisetup.php:934
   msgid "Click here"
   msgstr ""
   
  -#: ../monisetup.php:925 ../monisetup.php:927
  +#: ../monisetup.php:926 ../monisetup.php:928
   msgid "Update"
   msgstr ""
   
  
  
  
  1.27      +140 -106  moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- ko.po	20 Dec 2008 04:37:50 -0000	1.26
  +++ ko.po	24 Dec 2008 09:16:14 -0000	1.27
  @@ -5,7 +5,7 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1.3\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2008-12-20 02:31+0900\n"
  +"POT-Creation-Date: 2008-12-23 23:10+0900\n"
   "PO-Revision-Date: 2008-12-11 12:20+0900\n"
   "Last-Translator: Won-Kyu Park <wkpark@kldp.org>\n"
   "Language-Team: Won-Kyu Park <wkpark@kldp.org>\n"
  @@ -91,7 +91,7 @@
   msgid "Add Blog entry to \"%s\""
   msgstr "\"%s\"에 블로그 항목 더하기"
   
  -#: ../plugin/Blog.php:260 ../plugin/Blog.php:332
  +#: ../plugin/Blog.php:260 ../plugin/Blog.php:332 ../plugin/PluginInfo.php:45
   msgid "Name"
   msgstr "이름"
   
  @@ -180,7 +180,7 @@
   msgid "Comment"
   msgstr "댓글 달기"
   
  -#: ../plugin/Comment.php:88 ../wikilib.php:911 ../monisetup.php:923
  +#: ../plugin/Comment.php:88 ../wikilib.php:911 ../monisetup.php:924
   msgid "Preview"
   msgstr "미리보기"
   
  @@ -334,7 +334,7 @@
   msgid "Show Context."
   msgstr "문맥 보기."
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:124 ../wiki.php:4426
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:124 ../wiki.php:4439
   msgid "Refresh"
   msgstr "갱신"
   
  @@ -348,7 +348,7 @@
   msgid "You can also click %s to search title.\n"
   msgstr "%s을 눌러 제목 찾기를 할 수 있습니다.\n"
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5281 ../wiki.php:5288
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5296 ../wiki.php:5303
   #: ../wikilib.php:1364
   msgid "here"
   msgstr "여기"
  @@ -367,7 +367,7 @@
   
   #: ../plugin/FullSearch.php:77 ../wikilib.php:2636 ../wikilib.php:2697
   msgid "Go"
  -msgstr "가기"
  +msgstr "찾기"
   
   #: ../plugin/FullSearch.php:140
   msgid "Empty expression"
  @@ -629,6 +629,35 @@
   msgid "Edit Image"
   msgstr "그림 고치기"
   
  +#: ../plugin/PluginInfo.php:29
  +#, c-format
  +msgid "Total %s plugin activated."
  +msgstr "총 %d 개의 플러그인이 활성화됨"
  +
  +#: ../plugin/PluginInfo.php:43 ../plugin/admin.php:136
  +msgid "Description"
  +msgstr "설명"
  +
  +#: ../plugin/PluginInfo.php:47
  +msgid "Version"
  +msgstr "버전"
  +
  +#: ../plugin/PluginInfo.php:49 ../plugin/admin.php:139
  +msgid "Author"
  +msgstr "저자"
  +
  +#: ../plugin/PluginInfo.php:51 ../plugin/admin.php:141
  +msgid "License"
  +msgstr "저작권"
  +
  +#: ../plugin/PluginInfo.php:53 ../plugin/admin.php:143
  +msgid "Depend"
  +msgstr "의존성"
  +
  +#: ../plugin/PluginInfo.php:57 ../plugin/admin.php:147
  +msgid "URL"
  +msgstr ""
  +
   #: ../plugin/Rating.php:58
   msgid "Awful!"
   msgstr "최악!"
  @@ -655,7 +684,7 @@
   #: ../plugin/security/mustlogin.php:29 ../plugin/security/mustlogin.php:40
   #: ../plugin/security/mustlogin.php:51 ../plugin/security/mustlogin.php:67
   #: ../plugin/security/needtologin.php:29 ../plugin/security/needtologin.php:40
  -#: ../plugin/security/needtologin.php:51 ../plugin/security/userbased.php:60
  +#: ../plugin/security/needtologin.php:51 ../plugin/security/userbased.php:62
   msgid "Please Login or make your ID on this Wiki ;)"
   msgstr "로그인하거나 ID를 만드세요 ;)"
   
  @@ -685,11 +714,11 @@
   msgid "[%sh %sm ago]"
   msgstr "[%s시간 %s분 전]"
   
  -#: ../plugin/SWFUpload.php:117
  +#: ../plugin/SWFUpload.php:118
   msgid "Files..."
   msgstr "파일..."
   
  -#: ../plugin/SWFUpload.php:118
  +#: ../plugin/SWFUpload.php:119
   msgid "Upload"
   msgstr "올리기"
   
  @@ -779,7 +808,7 @@
   msgid "TwinPages of %s"
   msgstr "%s의 쌍둥이 페이지"
   
  -#: ../plugin/TwinPages.php:19 ../wiki.php:5267
  +#: ../plugin/TwinPages.php:19 ../wiki.php:5282
   msgid "See [TwinPages]: "
   msgstr ""
   
  @@ -861,8 +890,9 @@
   msgid "Total %d files"
   msgstr "총 %d 개 파일"
   
  -#: ../plugin/UploadedFiles.php:414 ../plugin/rename.php:77
  -#: ../plugin/revert.php:82 ../wikilib.php:1084 ../wikilib.php:1974
  +#: ../plugin/UploadedFiles.php:414 ../plugin/rcsimport.php:32
  +#: ../plugin/rename.php:77 ../plugin/revert.php:82 ../plugin/userinfo.php:37
  +#: ../wikilib.php:1084 ../wikilib.php:1974
   msgid "Password"
   msgstr "비밀번호"
   
  @@ -918,26 +948,6 @@
   msgid "Protected actions"
   msgstr "제한된 액션"
   
  -#: ../plugin/admin.php:136
  -msgid "Description"
  -msgstr "설명"
  -
  -#: ../plugin/admin.php:139
  -msgid "Author"
  -msgstr "저자"
  -
  -#: ../plugin/admin.php:141
  -msgid "License"
  -msgstr "저작권"
  -
  -#: ../plugin/admin.php:143
  -msgid "Depend"
  -msgstr "의존성"
  -
  -#: ../plugin/admin.php:147
  -msgid "URL"
  -msgstr ""
  -
   #: ../plugin/admin.php:191
   msgid "Enabled plugins"
   msgstr "활성화된 플러그인"
  @@ -1142,8 +1152,7 @@
   msgid "Fail to save translations."
   msgstr "번역 저장을 실패했습니다"
   
  -#: ../plugin/msgtrans.php:23 ../plugin/useradmin.php:54
  -#: ../plugin/useradmin.php:58
  +#: ../plugin/msgtrans.php:23 ../plugin/userinfo.php:86
   #, c-format
   msgid "You are not allowed to \"%s\" !"
   msgstr "'%s'은(는) 허락되지 않았습니다"
  @@ -1186,7 +1195,7 @@
   msgid "Save Changes"
   msgstr "변경 저장"
   
  -#: ../plugin/processor/monimarkup.php:489 ../wiki.php:3814
  +#: ../plugin/processor/monimarkup.php:489 ../wiki.php:3827
   msgid "edit"
   msgstr "편집"
   
  @@ -1349,7 +1358,7 @@
   msgid "Select a tarball file to restore"
   msgstr "Restore하기 위한 tarball 파일을 고르세요"
   
  -#: ../plugin/revert.php:23 ../wiki.php:5283
  +#: ../plugin/revert.php:23 ../wiki.php:5298
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr "%s의 옛날 버전"
  @@ -1407,6 +1416,22 @@
   msgid "Do you want to scrap \"%s\" ?"
   msgstr "\"%s\"을(를) 스크랩하시겠습니까 ?"
   
  +#: ../plugin/security/acl.php:146
  +msgid "ACL groups"
  +msgstr ""
  +
  +#: ../plugin/security/acl.php:149
  +msgid "Allowed ACL actions"
  +msgstr "허락된 ACL 액션"
  +
  +#: ../plugin/security/acl.php:154
  +msgid "Denied ACL actions"
  +msgstr "거부된 ACL 액션"
  +
  +#: ../plugin/security/acl.php:159
  +msgid "Protected ACL actions"
  +msgstr "제한된 ACL 액션"
  +
   #: ../plugin/security/acl.php:222 ../plugin/security/community.php:25
   #: ../plugin/security/community.php:35 ../plugin/security/community.php:45
   #: ../plugin/security/mustlogin.php:28 ../plugin/security/mustlogin.php:39
  @@ -1430,9 +1455,9 @@
   msgstr "ID와 비밀번호가 유효해야 접근을 할 수 있습니다.\n"
   
   #: ../plugin/security/community.php:60 ../plugin/security/htaccesslogin.php:46
  -#: ../plugin/security/mustlogin.php:66 ../plugin/security/userbased.php:28
  -#: ../plugin/security/userbased.php:36 ../plugin/security/userbased.php:44
  -#: ../plugin/security/userbased.php:59 ../plugin/security/wikimaster.php:29
  +#: ../plugin/security/mustlogin.php:66 ../plugin/security/userbased.php:30
  +#: ../plugin/security/userbased.php:38 ../plugin/security/userbased.php:46
  +#: ../plugin/security/userbased.php:61 ../plugin/security/wikimaster.php:29
   #: ../plugin/security/wikimaster.php:38 ../plugin/security/wikimaster.php:47
   #, c-format
   msgid "You are not allowed to '%s' on this page."
  @@ -1442,8 +1467,8 @@
   msgid "Please contact the system administrator for htaccess based logins."
   msgstr "htaccess 기반 관리를 위해 시스템 관리자에게 연락을 취하세요."
   
  -#: ../plugin/security/userbased.php:29 ../plugin/security/userbased.php:37
  -#: ../plugin/security/userbased.php:45 ../plugin/security/wikimaster.php:30
  +#: ../plugin/security/userbased.php:31 ../plugin/security/userbased.php:39
  +#: ../plugin/security/userbased.php:47 ../plugin/security/wikimaster.php:30
   #: ../plugin/security/wikimaster.php:39 ../plugin/security/wikimaster.php:48
   msgid "Please contact to WikiMaster"
   msgstr "위키 관리자에게 연락하세요"
  @@ -1564,16 +1589,6 @@
   msgid "No TrackBack entry found for %s"
   msgstr "%s에 대한 트랙백 항목을 찾을 수 없음"
   
  -#: ../plugin/useradmin.php:21
  -#, c-format
  -msgid "You are not allowed to use the \"%s\" macro."
  -msgstr "\"%s\"매크로를 쓸 수 없습니다."
  -
  -#: ../plugin/useradmin.php:25
  -#, c-format
  -msgid "Total %d users"
  -msgstr "총 %d명의 사용자"
  -
   #: ../plugin/userform.php:35 ../plugin/userform.php:38
   msgid "Successfully confirmed"
   msgstr ""
  @@ -1702,8 +1717,8 @@
   msgid "You are not allowed to register on this wiki"
   msgstr "위키 등록이 허락되지 않았습니다"
   
  -#: ../plugin/userform.php:240 ../plugin/userform.php:412 ../wiki.php:5221
  -#: ../wiki.php:5232
  +#: ../plugin/userform.php:240 ../plugin/userform.php:412 ../wiki.php:5236
  +#: ../wiki.php:5247
   msgid "Please contact WikiMasters"
   msgstr "위키관리자에게 문의하세요"
   
  @@ -1793,6 +1808,25 @@
   msgid "Invalid OpenID Authentication request"
   msgstr ""
   
  +#: ../plugin/userinfo.php:21
  +#, c-format
  +msgid "You are not allowed to use the \"%s\" macro."
  +msgstr "\"%s\"매크로를 쓸 수 없습니다."
  +
  +#: ../plugin/userinfo.php:26
  +#, c-format
  +msgid "Total %d users"
  +msgstr "총 %d명의 사용자"
  +
  +#: ../plugin/userinfo.php:49
  +msgid "User infomation is restricted by wikimaster"
  +msgstr "사용자 정보는 위키관리자만 볼 수 있습니다"
  +
  +#: ../plugin/userinfo.php:81
  +#, c-format
  +msgid "User \"%s\" are deleted !"
  +msgstr "사용자 \"%s\"(이)가 지워짐 !"
  +
   #: ../plugin/whois.php:119
   #, c-format
   msgid "Could not connect to %s server"
  @@ -1808,131 +1842,131 @@
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1653
  +#: ../wiki.php:1656
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
  -#: ../wiki.php:1663
  +#: ../wiki.php:1666
   msgid "File does not exist"
   msgstr "페이지가 없습니다"
   
  -#: ../wiki.php:2034
  +#: ../wiki.php:2037
   #, c-format
   msgid "File '%s' does not exist."
   msgstr "파일 '%s'이(가) 없습니다"
   
  -#: ../wiki.php:2902 ../wiki.php:2913 ../wiki.php:5457
  +#: ../wiki.php:2907 ../wiki.php:2918 ../wiki.php:5472
   msgid "Invalid ajax action."
   msgstr "잘못된 ajax 액션."
   
  -#: ../wiki.php:3403
  +#: ../wiki.php:3412
   msgid "Tags:"
   msgstr "태그:"
   
  -#: ../wiki.php:3431
  +#: ../wiki.php:3440
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:3431
  +#: ../wiki.php:3440
   #, c-format
   msgid "TwinPages"
   msgstr "TwinPages"
   
  -#: ../wiki.php:3436
  +#: ../wiki.php:3445
   msgid "See [TwinPages]:"
   msgstr ""
   
  -#: ../wiki.php:3994
  +#: ../wiki.php:4007
   msgid "Sister Sites Index"
   msgstr ""
   
  -#: ../wiki.php:4422 ../locale/dummy.php:6
  +#: ../wiki.php:4435 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "고치기"
   
  -#: ../wiki.php:4424
  +#: ../wiki.php:4437
   msgid "NotEditable"
   msgstr "고칠수 없음"
   
  -#: ../wiki.php:4428 ../locale/dummy.php:6
  +#: ../wiki.php:4441 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "보기"
   
  -#: ../wiki.php:4429 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4442 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "찾기"
   
  -#: ../wiki.php:4811
  +#: ../wiki.php:4825
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5220
  +#: ../wiki.php:5235
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5231
  +#: ../wiki.php:5246
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:5269 ../wiki.php:5278 ../wikilib.php:1344
  +#: ../wiki.php:5284 ../wiki.php:5293 ../wikilib.php:1344
   msgid "Create this page"
   msgstr "페이지 만들기"
   
  -#: ../wiki.php:5280
  +#: ../wiki.php:5295
   #, c-format
   msgid "%s has saved revisions"
   msgstr "%s이(가) 저장된 옛버전이 있습니다"
   
  -#: ../wiki.php:5281 ../wiki.php:5288
  +#: ../wiki.php:5296 ../wiki.php:5303
   #, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr "%s 혹은 %s를 눌러 전체 찾기를 할 수 있습니다.\n"
   
  -#: ../wiki.php:5286
  +#: ../wiki.php:5301
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr "%s 페이지를 이곳 위키에서 찾을 수 없습니다"
   
  -#: ../wiki.php:5293
  +#: ../wiki.php:5308
   msgid "Please try to search with another word"
   msgstr "다른 단어로 찾아보세요."
   
  -#: ../wiki.php:5305
  +#: ../wiki.php:5320
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr ""
   "%s 아이콘을 누르거나 아래의 탬플리트 목록을 이용해 새 페이지를 만드세요:\n"
   
  -#: ../wiki.php:5308
  +#: ../wiki.php:5323
   msgid "You have no templates"
   msgstr "템플리트가 없습니다"
   
  -#: ../wiki.php:5310
  +#: ../wiki.php:5325
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr "탬플리트를 만드시려면 '%s' 형식의 이름을 가지는 페이지를 만드세요.\n"
   
  -#: ../wiki.php:5321
  +#: ../wiki.php:5336
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr "\"%s\"페이지로 부터 리다리렉트됨"
   
  -#: ../wiki.php:5459
  +#: ../wiki.php:5474
   msgid "Invalid macro action."
   msgstr "잘못된 마크로 액션."
   
  -#: ../wiki.php:5469
  +#: ../wiki.php:5484
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "'%s'은(는) 허락되지 않았습니다"
   
  -#: ../wiki.php:5489
  +#: ../wiki.php:5504
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "\"%s\"을(를) 실패했습니다 !"
   
  -#: ../wiki.php:5492
  +#: ../wiki.php:5507
   msgid "Please enter the valid password"
   msgstr "정확한 비밀번호를 넣어주세요"
   
  @@ -2418,15 +2452,15 @@
   msgid "Please be careful to deselect these pages"
   msgstr "아래의 페이지를 선택해제시 주의해주세요"
   
  -#: ../monisetup.php:707
  +#: ../monisetup.php:708
   msgid "MoniWiki"
   msgstr "모니위키"
   
  -#: ../monisetup.php:710
  +#: ../monisetup.php:711
   msgid "'config.php' is not writable !"
   msgstr "'config.php' 파일이 쓰기가능하지 않습니다 !"
   
  -#: ../monisetup.php:711
  +#: ../monisetup.php:712
   msgid ""
   "Please execute <tt>'monisetup.sh'</tt> or <tt>chmod a+w config.php</tt> "
   "first to change your settings."
  @@ -2434,94 +2468,94 @@
   "<tt>'monisetup.sh'</tt> 혹은 <tt>chmod a+w config.php</tt>를 먼저실행해 주셔"
   "야 설정을 고칠 수 있습니다"
   
  -#: ../monisetup.php:738
  +#: ../monisetup.php:739
   msgid "Invalid password error !"
   msgstr "잘못된 비밀번호 오류 !"
   
  -#: ../monisetup.php:739
  +#: ../monisetup.php:740
   msgid ""
   "If you can't remember your admin password, delete password entry in the "
   "'config.php' and restart 'monisetup'"
   msgstr ""
   
  -#: ../monisetup.php:771
  +#: ../monisetup.php:772
   #, c-format
   msgid "Updated Configutations for this %s"
   msgstr "위키 %s의 설정이 갱신되었습니다"
   
  -#: ../monisetup.php:790
  +#: ../monisetup.php:791
   msgid "Configurations are saved successfully"
   msgstr "설정이 성공적으로 저장되었습니다"
   
  -#: ../monisetup.php:791
  +#: ../monisetup.php:792
   msgid ""
   "WARN: Please check <a href='monisetup.php'> your saved configurations</a>"
   msgstr ""
   
  -#: ../monisetup.php:792
  +#: ../monisetup.php:793
   msgid "If all is good, change 'config.php' permission as 644."
   msgstr "모두 마음에 드시면 'config.php'파일의 퍼미션을 644로 바꿔주세요"
   
  -#: ../monisetup.php:804
  +#: ../monisetup.php:805
   msgid "Welcome to MoniWiki ! This is your first installation"
   msgstr "모니위키로 오신 것을  환영합니다 ! 처음 설치 하셨군요"
   
  -#: ../monisetup.php:811
  +#: ../monisetup.php:812
   msgid "Default settings are loaded..."
   msgstr "기본 설정을 불러옵니다..."
   
  -#: ../monisetup.php:820
  +#: ../monisetup.php:821
   msgid "Initial configurations are saved successfully."
   msgstr "초기 설정치가 성공적으로 저장되었습니다."
   
  -#: ../monisetup.php:821
  +#: ../monisetup.php:822
   msgid "Goto <a href='monisetup.php'>MoniSetup</a> again to configure details"
   msgstr ""
   "<a href='monisetup.php'>MoniSetup</a>으로 다시 가서 자세한 설정을 합니다"
   
  -#: ../monisetup.php:838 ../monisetup.php:840 ../monisetup.php:936
  -#: ../monisetup.php:938
  +#: ../monisetup.php:839 ../monisetup.php:841 ../monisetup.php:937
  +#: ../monisetup.php:939
   #, c-format
   msgid "goto %s"
   msgstr "%s으로 가기"
   
  -#: ../monisetup.php:843
  +#: ../monisetup.php:844
   msgid "No WikiSeeds are selected"
   msgstr "위키씨앗을 선택하지 않았습니다"
   
  -#: ../monisetup.php:854
  +#: ../monisetup.php:855
   #, c-format
   msgid "Preview current settings for this %s"
   msgstr "%s 현재 설정을 미리보기"
   
  -#: ../monisetup.php:856
  +#: ../monisetup.php:857
   #, c-format
   msgid "Read current settings for this %s"
   msgstr "%s 위키의 현재 설정 읽기"
   
  -#: ../monisetup.php:884
  +#: ../monisetup.php:885
   msgid "Change your settings"
   msgstr "세팅을 바꾸기"
   
  -#: ../monisetup.php:886
  +#: ../monisetup.php:887
   msgid "WARN: You have to enter your Admin Password"
   msgstr "주의: 관리자 비밀번호를 넣어주시기 바랍니다"
   
  -#: ../monisetup.php:888 ../monisetup.php:931
  +#: ../monisetup.php:889 ../monisetup.php:932
   #, c-format
   msgid "WARN: You have no WikiSeed on your %s"
   msgstr "주의: 위키씨앗이 위키 %s에 없습니다"
   
  -#: ../monisetup.php:889 ../monisetup.php:932
  +#: ../monisetup.php:890 ../monisetup.php:933
   #, c-format
   msgid "If you want to put wikiseeds on your wiki %s now"
   msgstr "위키씨앗을 심기를 원하신다면 %s 누르세요"
   
  -#: ../monisetup.php:890 ../monisetup.php:933
  +#: ../monisetup.php:891 ../monisetup.php:934
   msgid "Click here"
   msgstr "여기를"
   
  -#: ../monisetup.php:925 ../monisetup.php:927
  +#: ../monisetup.php:926 ../monisetup.php:928
   msgid "Update"
   msgstr "완료"
   
  
  
  
  1.22      +139 -105  moniwiki/locale/po/moniwiki.pot
  
  Index: moniwiki.pot
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/moniwiki.pot,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- moniwiki.pot	20 Dec 2008 04:37:50 -0000	1.21
  +++ moniwiki.pot	24 Dec 2008 09:16:14 -0000	1.22
  @@ -7,7 +7,7 @@
   msgstr ""
   "Project-Id-Version: PACKAGE VERSION\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2008-12-20 02:31+0900\n"
  +"POT-Creation-Date: 2008-12-23 23:10+0900\n"
   "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
   "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
   "Language-Team: LANGUAGE <LL@li.org>\n"
  @@ -93,7 +93,7 @@
   msgid "Add Blog entry to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:260 ../plugin/Blog.php:332
  +#: ../plugin/Blog.php:260 ../plugin/Blog.php:332 ../plugin/PluginInfo.php:45
   msgid "Name"
   msgstr ""
   
  @@ -182,7 +182,7 @@
   msgid "Comment"
   msgstr ""
   
  -#: ../plugin/Comment.php:88 ../wikilib.php:911 ../monisetup.php:923
  +#: ../plugin/Comment.php:88 ../wikilib.php:911 ../monisetup.php:924
   msgid "Preview"
   msgstr ""
   
  @@ -336,7 +336,7 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:124 ../wiki.php:4426
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:124 ../wiki.php:4439
   msgid "Refresh"
   msgstr ""
   
  @@ -350,7 +350,7 @@
   msgid "You can also click %s to search title.\n"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5281 ../wiki.php:5288
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5296 ../wiki.php:5303
   #: ../wikilib.php:1364
   msgid "here"
   msgstr ""
  @@ -631,6 +631,35 @@
   msgid "Edit Image"
   msgstr ""
   
  +#: ../plugin/PluginInfo.php:29
  +#, c-format
  +msgid "Total %s plugin activated."
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:43 ../plugin/admin.php:136
  +msgid "Description"
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:47
  +msgid "Version"
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:49 ../plugin/admin.php:139
  +msgid "Author"
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:51 ../plugin/admin.php:141
  +msgid "License"
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:53 ../plugin/admin.php:143
  +msgid "Depend"
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:57 ../plugin/admin.php:147
  +msgid "URL"
  +msgstr ""
  +
   #: ../plugin/Rating.php:58
   msgid "Awful!"
   msgstr ""
  @@ -657,7 +686,7 @@
   #: ../plugin/security/mustlogin.php:29 ../plugin/security/mustlogin.php:40
   #: ../plugin/security/mustlogin.php:51 ../plugin/security/mustlogin.php:67
   #: ../plugin/security/needtologin.php:29 ../plugin/security/needtologin.php:40
  -#: ../plugin/security/needtologin.php:51 ../plugin/security/userbased.php:60
  +#: ../plugin/security/needtologin.php:51 ../plugin/security/userbased.php:62
   msgid "Please Login or make your ID on this Wiki ;)"
   msgstr ""
   
  @@ -687,11 +716,11 @@
   msgid "[%sh %sm ago]"
   msgstr ""
   
  -#: ../plugin/SWFUpload.php:117
  +#: ../plugin/SWFUpload.php:118
   msgid "Files..."
   msgstr ""
   
  -#: ../plugin/SWFUpload.php:118
  +#: ../plugin/SWFUpload.php:119
   msgid "Upload"
   msgstr ""
   
  @@ -781,7 +810,7 @@
   msgid "TwinPages of %s"
   msgstr ""
   
  -#: ../plugin/TwinPages.php:19 ../wiki.php:5267
  +#: ../plugin/TwinPages.php:19 ../wiki.php:5282
   msgid "See [TwinPages]: "
   msgstr ""
   
  @@ -863,8 +892,9 @@
   msgid "Total %d files"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:414 ../plugin/rename.php:77
  -#: ../plugin/revert.php:82 ../wikilib.php:1084 ../wikilib.php:1974
  +#: ../plugin/UploadedFiles.php:414 ../plugin/rcsimport.php:32
  +#: ../plugin/rename.php:77 ../plugin/revert.php:82 ../plugin/userinfo.php:37
  +#: ../wikilib.php:1084 ../wikilib.php:1974
   msgid "Password"
   msgstr ""
   
  @@ -920,26 +950,6 @@
   msgid "Protected actions"
   msgstr ""
   
  -#: ../plugin/admin.php:136
  -msgid "Description"
  -msgstr ""
  -
  -#: ../plugin/admin.php:139
  -msgid "Author"
  -msgstr ""
  -
  -#: ../plugin/admin.php:141
  -msgid "License"
  -msgstr ""
  -
  -#: ../plugin/admin.php:143
  -msgid "Depend"
  -msgstr ""
  -
  -#: ../plugin/admin.php:147
  -msgid "URL"
  -msgstr ""
  -
   #: ../plugin/admin.php:191
   msgid "Enabled plugins"
   msgstr ""
  @@ -1144,8 +1154,7 @@
   msgid "Fail to save translations."
   msgstr ""
   
  -#: ../plugin/msgtrans.php:23 ../plugin/useradmin.php:54
  -#: ../plugin/useradmin.php:58
  +#: ../plugin/msgtrans.php:23 ../plugin/userinfo.php:86
   #, c-format
   msgid "You are not allowed to \"%s\" !"
   msgstr ""
  @@ -1188,7 +1197,7 @@
   msgid "Save Changes"
   msgstr ""
   
  -#: ../plugin/processor/monimarkup.php:489 ../wiki.php:3814
  +#: ../plugin/processor/monimarkup.php:489 ../wiki.php:3827
   msgid "edit"
   msgstr ""
   
  @@ -1350,7 +1359,7 @@
   msgid "Select a tarball file to restore"
   msgstr ""
   
  -#: ../plugin/revert.php:23 ../wiki.php:5283
  +#: ../plugin/revert.php:23 ../wiki.php:5298
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr ""
  @@ -1408,6 +1417,22 @@
   msgid "Do you want to scrap \"%s\" ?"
   msgstr ""
   
  +#: ../plugin/security/acl.php:146
  +msgid "ACL groups"
  +msgstr ""
  +
  +#: ../plugin/security/acl.php:149
  +msgid "Allowed ACL actions"
  +msgstr ""
  +
  +#: ../plugin/security/acl.php:154
  +msgid "Denied ACL actions"
  +msgstr ""
  +
  +#: ../plugin/security/acl.php:159
  +msgid "Protected ACL actions"
  +msgstr ""
  +
   #: ../plugin/security/acl.php:222 ../plugin/security/community.php:25
   #: ../plugin/security/community.php:35 ../plugin/security/community.php:45
   #: ../plugin/security/mustlogin.php:28 ../plugin/security/mustlogin.php:39
  @@ -1431,9 +1456,9 @@
   msgstr ""
   
   #: ../plugin/security/community.php:60 ../plugin/security/htaccesslogin.php:46
  -#: ../plugin/security/mustlogin.php:66 ../plugin/security/userbased.php:28
  -#: ../plugin/security/userbased.php:36 ../plugin/security/userbased.php:44
  -#: ../plugin/security/userbased.php:59 ../plugin/security/wikimaster.php:29
  +#: ../plugin/security/mustlogin.php:66 ../plugin/security/userbased.php:30
  +#: ../plugin/security/userbased.php:38 ../plugin/security/userbased.php:46
  +#: ../plugin/security/userbased.php:61 ../plugin/security/wikimaster.php:29
   #: ../plugin/security/wikimaster.php:38 ../plugin/security/wikimaster.php:47
   #, c-format
   msgid "You are not allowed to '%s' on this page."
  @@ -1443,8 +1468,8 @@
   msgid "Please contact the system administrator for htaccess based logins."
   msgstr ""
   
  -#: ../plugin/security/userbased.php:29 ../plugin/security/userbased.php:37
  -#: ../plugin/security/userbased.php:45 ../plugin/security/wikimaster.php:30
  +#: ../plugin/security/userbased.php:31 ../plugin/security/userbased.php:39
  +#: ../plugin/security/userbased.php:47 ../plugin/security/wikimaster.php:30
   #: ../plugin/security/wikimaster.php:39 ../plugin/security/wikimaster.php:48
   msgid "Please contact to WikiMaster"
   msgstr ""
  @@ -1561,16 +1586,6 @@
   msgid "No TrackBack entry found for %s"
   msgstr ""
   
  -#: ../plugin/useradmin.php:21
  -#, c-format
  -msgid "You are not allowed to use the \"%s\" macro."
  -msgstr ""
  -
  -#: ../plugin/useradmin.php:25
  -#, c-format
  -msgid "Total %d users"
  -msgstr ""
  -
   #: ../plugin/userform.php:35 ../plugin/userform.php:38
   msgid "Successfully confirmed"
   msgstr ""
  @@ -1699,8 +1714,8 @@
   msgid "You are not allowed to register on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:240 ../plugin/userform.php:412 ../wiki.php:5221
  -#: ../wiki.php:5232
  +#: ../plugin/userform.php:240 ../plugin/userform.php:412 ../wiki.php:5236
  +#: ../wiki.php:5247
   msgid "Please contact WikiMasters"
   msgstr ""
   
  @@ -1790,6 +1805,25 @@
   msgid "Invalid OpenID Authentication request"
   msgstr ""
   
  +#: ../plugin/userinfo.php:21
  +#, c-format
  +msgid "You are not allowed to use the \"%s\" macro."
  +msgstr ""
  +
  +#: ../plugin/userinfo.php:26
  +#, c-format
  +msgid "Total %d users"
  +msgstr ""
  +
  +#: ../plugin/userinfo.php:49
  +msgid "User infomation is restricted by wikimaster"
  +msgstr ""
  +
  +#: ../plugin/userinfo.php:81
  +#, c-format
  +msgid "User \"%s\" are deleted !"
  +msgstr ""
  +
   #: ../plugin/whois.php:119
   #, c-format
   msgid "Could not connect to %s server"
  @@ -1805,130 +1839,130 @@
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1653
  +#: ../wiki.php:1656
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
  -#: ../wiki.php:1663
  +#: ../wiki.php:1666
   msgid "File does not exist"
   msgstr ""
   
  -#: ../wiki.php:2034
  +#: ../wiki.php:2037
   #, c-format
   msgid "File '%s' does not exist."
   msgstr ""
   
  -#: ../wiki.php:2902 ../wiki.php:2913 ../wiki.php:5457
  +#: ../wiki.php:2907 ../wiki.php:2918 ../wiki.php:5472
   msgid "Invalid ajax action."
   msgstr ""
   
  -#: ../wiki.php:3403
  +#: ../wiki.php:3412
   msgid "Tags:"
   msgstr ""
   
  -#: ../wiki.php:3431
  +#: ../wiki.php:3440
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:3431
  +#: ../wiki.php:3440
   #, c-format
   msgid "TwinPages"
   msgstr ""
   
  -#: ../wiki.php:3436
  +#: ../wiki.php:3445
   msgid "See [TwinPages]:"
   msgstr ""
   
  -#: ../wiki.php:3994
  +#: ../wiki.php:4007
   msgid "Sister Sites Index"
   msgstr ""
   
  -#: ../wiki.php:4422 ../locale/dummy.php:6
  +#: ../wiki.php:4435 ../locale/dummy.php:6
   msgid "EditText"
   msgstr ""
   
  -#: ../wiki.php:4424
  +#: ../wiki.php:4437
   msgid "NotEditable"
   msgstr ""
   
  -#: ../wiki.php:4428 ../locale/dummy.php:6
  +#: ../wiki.php:4441 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:4429 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4442 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr ""
   
  -#: ../wiki.php:4811
  +#: ../wiki.php:4825
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5220
  +#: ../wiki.php:5235
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5231
  +#: ../wiki.php:5246
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:5269 ../wiki.php:5278 ../wikilib.php:1344
  +#: ../wiki.php:5284 ../wiki.php:5293 ../wikilib.php:1344
   msgid "Create this page"
   msgstr ""
   
  -#: ../wiki.php:5280
  +#: ../wiki.php:5295
   #, c-format
   msgid "%s has saved revisions"
   msgstr ""
   
  -#: ../wiki.php:5281 ../wiki.php:5288
  +#: ../wiki.php:5296 ../wiki.php:5303
   #, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr ""
   
  -#: ../wiki.php:5286
  +#: ../wiki.php:5301
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr ""
   
  -#: ../wiki.php:5293
  +#: ../wiki.php:5308
   msgid "Please try to search with another word"
   msgstr ""
   
  -#: ../wiki.php:5305
  +#: ../wiki.php:5320
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr ""
   
  -#: ../wiki.php:5308
  +#: ../wiki.php:5323
   msgid "You have no templates"
   msgstr ""
   
  -#: ../wiki.php:5310
  +#: ../wiki.php:5325
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
   
  -#: ../wiki.php:5321
  +#: ../wiki.php:5336
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
  -#: ../wiki.php:5459
  +#: ../wiki.php:5474
   msgid "Invalid macro action."
   msgstr ""
   
  -#: ../wiki.php:5469
  +#: ../wiki.php:5484
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr ""
   
  -#: ../wiki.php:5489
  +#: ../wiki.php:5504
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:5492
  +#: ../wiki.php:5507
   msgid "Please enter the valid password"
   msgstr ""
   
  @@ -2396,107 +2430,107 @@
   msgid "Please be careful to deselect these pages"
   msgstr ""
   
  -#: ../monisetup.php:707
  +#: ../monisetup.php:708
   msgid "MoniWiki"
   msgstr ""
   
  -#: ../monisetup.php:710
  +#: ../monisetup.php:711
   msgid "'config.php' is not writable !"
   msgstr ""
   
  -#: ../monisetup.php:711
  +#: ../monisetup.php:712
   msgid ""
   "Please execute <tt>'monisetup.sh'</tt> or <tt>chmod a+w config.php</tt> "
   "first to change your settings."
   msgstr ""
   
  -#: ../monisetup.php:738
  +#: ../monisetup.php:739
   msgid "Invalid password error !"
   msgstr ""
   
  -#: ../monisetup.php:739
  +#: ../monisetup.php:740
   msgid ""
   "If you can't remember your admin password, delete password entry in the "
   "'config.php' and restart 'monisetup'"
   msgstr ""
   
  -#: ../monisetup.php:771
  +#: ../monisetup.php:772
   #, c-format
   msgid "Updated Configutations for this %s"
   msgstr ""
   
  -#: ../monisetup.php:790
  +#: ../monisetup.php:791
   msgid "Configurations are saved successfully"
   msgstr ""
   
  -#: ../monisetup.php:791
  +#: ../monisetup.php:792
   msgid ""
   "WARN: Please check <a href='monisetup.php'> your saved configurations</a>"
   msgstr ""
   
  -#: ../monisetup.php:792
  +#: ../monisetup.php:793
   msgid "If all is good, change 'config.php' permission as 644."
   msgstr ""
   
  -#: ../monisetup.php:804
  +#: ../monisetup.php:805
   msgid "Welcome to MoniWiki ! This is your first installation"
   msgstr ""
   
  -#: ../monisetup.php:811
  +#: ../monisetup.php:812
   msgid "Default settings are loaded..."
   msgstr ""
   
  -#: ../monisetup.php:820
  +#: ../monisetup.php:821
   msgid "Initial configurations are saved successfully."
   msgstr ""
   
  -#: ../monisetup.php:821
  +#: ../monisetup.php:822
   msgid "Goto <a href='monisetup.php'>MoniSetup</a> again to configure details"
   msgstr ""
   
  -#: ../monisetup.php:838 ../monisetup.php:840 ../monisetup.php:936
  -#: ../monisetup.php:938
  +#: ../monisetup.php:839 ../monisetup.php:841 ../monisetup.php:937
  +#: ../monisetup.php:939
   #, c-format
   msgid "goto %s"
   msgstr ""
   
  -#: ../monisetup.php:843
  +#: ../monisetup.php:844
   msgid "No WikiSeeds are selected"
   msgstr ""
   
  -#: ../monisetup.php:854
  +#: ../monisetup.php:855
   #, c-format
   msgid "Preview current settings for this %s"
   msgstr ""
   
  -#: ../monisetup.php:856
  +#: ../monisetup.php:857
   #, c-format
   msgid "Read current settings for this %s"
   msgstr ""
   
  -#: ../monisetup.php:884
  +#: ../monisetup.php:885
   msgid "Change your settings"
   msgstr ""
   
  -#: ../monisetup.php:886
  +#: ../monisetup.php:887
   msgid "WARN: You have to enter your Admin Password"
   msgstr ""
   
  -#: ../monisetup.php:888 ../monisetup.php:931
  +#: ../monisetup.php:889 ../monisetup.php:932
   #, c-format
   msgid "WARN: You have no WikiSeed on your %s"
   msgstr ""
   
  -#: ../monisetup.php:889 ../monisetup.php:932
  +#: ../monisetup.php:890 ../monisetup.php:933
   #, c-format
   msgid "If you want to put wikiseeds on your wiki %s now"
   msgstr ""
   
  -#: ../monisetup.php:890 ../monisetup.php:933
  +#: ../monisetup.php:891 ../monisetup.php:934
   msgid "Click here"
   msgstr ""
   
  -#: ../monisetup.php:925 ../monisetup.php:927
  +#: ../monisetup.php:926 ../monisetup.php:928
   msgid "Update"
   msgstr ""
   
  
  
  


wkpark      2008/12/24 18:18:23

  Modified:    .        config.php.default
  Log:
  set $mask_hostname, $flashupload by default.
  
  Revision  Changes    Path
  1.49      +4 -2      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.48
  retrieving revision 1.49
  diff -u -r1.48 -r1.49
  --- config.php.default	20 Dec 2008 14:06:27 -0000	1.48
  +++ config.php.default	24 Dec 2008 09:18:23 -0000	1.49
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.48 2008/12/20 14:06:27 wkpark Exp $
  +# $Id: config.php.default,v 1.49 2008/12/24 09:18:23 wkpark Exp $
   #
   $sitename='UnnamedWiki'; # site name
   $data_dir= './data';
  @@ -25,7 +25,7 @@
   #$smiley='wikismiley'; # you can also use SmileyMap too.
   $use_counter= 0;
   $use_hostname= 1;
  -#$mask_hostname=1; # hide hostname or ip address
  +$mask_hostname=1; # hide hostname or ip address
   $edit_rows=16;
   $iconset= 'moni2';
   $inline_latex=0;
  @@ -258,6 +258,7 @@
   #$use_rating=1; # builtin Rating support
   $use_jwmediaplayer=1;
   $jwmediaplayer_prefix='http://www.jeroenwijering.com/embed';
  +$flashupload='swfupload';
   #$icon_list='edit,diff,show,find,print,info,help'; # set the icon list
   #$use_folding=0; # 1:default simple js / 2:with the prototype/mootools
   #$use_etable=0; # use new extended table syntax: deprecated!
  @@ -267,4 +268,5 @@
   #$use_bbs=0;
   $robots='googlebot|yahoo'; # set robots
   #$security_class_robot='robot';
  +#$url_encodings='euc-kr,uhc'; # autogoto option: search invalid urls with different encodings
   ?>
  
  
  


wkpark      2008/12/24 18:31:35

  Added:       local/SWFUpload handlers.js swfupload.js swfupload.queue.js
                        swfupload.swf swfupload.swfobject.js
  Log:
  for Flash 10
  
  Revision  Changes    Path
  1.1                  moniwiki/local/SWFUpload/handlers.js
  
  Index: handlers.js
  ===================================================================
  /* Demo Note:  This demo uses a FileProgress class that handles the UI for displaying the file name and percent complete.
  The FileProgress class is not part of SWFUpload.
  */
  
  
  /* **********************
     Event Handlers
     These are my custom event handlers to make my
     web application behave the way I went when SWFUpload
     completes different tasks.  These aren't part of the SWFUpload
     package.  They are part of my application.  Without these none
     of the actions SWFUpload makes will show up in my application.
     ********************** */
  
  /* */
  function byId(id) {
      return document.getElementById(id);
  }
  
  Math.roundf = function(val, precision) {
      var p = this.pow(10, precision);
      return this.round(val * p) / p;
  }
  /* */
  
  function swfUploadPreLoad() {
      var self = this;
      var loading = function () {
          //document.getElementById("divSWFUploadUI").style.display = "none";
          document.getElementById("divLoadingContent").style.display = "";
  
          var longLoad = function () {
              document.getElementById("divLoadingContent").style.display = "none";
              document.getElementById("divLongLoading").style.display = "";
          };
          this.customSettings.loadingTimeout = setTimeout(function () {
                  longLoad.call(self)
              },
              15 * 1000
          );
      };
      
      this.customSettings.loadingTimeout = setTimeout(function () {
              loading.call(self);
          },
          1*1000
      );
  }
  function swfUploadLoaded() {
      var self = this;
      clearTimeout(this.customSettings.loadingTimeout);
      //document.getElementById("divSWFUploadUI").style.visibility = "visible";
      //document.getElementById("divSWFUploadUI").style.display = "block";
      document.getElementById("divLoadingContent").style.display = "none";
      document.getElementById("divLongLoading").style.display = "none";
      document.getElementById("divAlternateContent").style.display = "none";
      
      //document.getElementById("btnBrowse").onclick = function () { self.selectFiles(); };
      document.getElementById("btnCancel").onclick = function () { self.cancelQueue(); };
  }
     
  function swfUploadLoadFailed() {
      clearTimeout(this.customSettings.loadingTimeout);
      //document.getElementById("divSWFUploadUI").style.display = "none";
      document.getElementById("divLoadingContent").style.display = "none";
      document.getElementById("divLongLoading").style.display = "none";
      document.getElementById("divAlternateContent").style.display = "";
  }
  
  
  function fileQueued(file) {
      try {
          //var progress = new FileProgress(file, this.customSettings.progressTarget);
          //progress.setStatus("Pending...");
          //progress.toggleCancel(true, this);
  
          byId("filesDisplay").style.display = "block";
  
          if (document.getElementById(file.name)) {
              byId(file.name).className = "uploading";
              return true; // XXX
          }
  
          var li = document.createElement("li");
          var txt = document.createTextNode(file.name);
  
          li.className = "uploading";
          li.id = file.name;
  
          var prg = document.createElement("span");
          prg.id = file.name + "progress";
          prg.className = "progressBar";
  
          li.appendChild(txt);
          li.appendChild(prg);
  
          byId("mmUploadFileListing").appendChild(li);
  
          delFiles();
      } catch (ex) {
          this.debug(ex);
      }
  
  }
  
  function fileQueueError(file, errorCode, message) {
      try {
          if (errorCode === SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED) {
              alert("You have attempted to queue too many files.\n" + (message === 0 ? "You have reached the upload limit." : "You may select " + (message > 1 ? "up to " + message + " files." : "one file.")));
              return;
          }
  
          var progress = new FileProgress(file, this.customSettings.progressTarget);
          progress.setError();
          progress.toggleCancel(false);
  
          switch (errorCode) {
          case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
              progress.setStatus("File is too big.");
              this.debug("Error Code: File too big, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
              break;
          case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
              progress.setStatus("Cannot upload Zero Byte files.");
              this.debug("Error Code: Zero byte file, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
              break;
          case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
              progress.setStatus("Invalid File Type.");
              this.debug("Error Code: Invalid File Type, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
              break;
          default:
              if (file !== null) {
                  progress.setStatus("Unhandled Error");
              }
              this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
              break;
          }
      } catch (ex) {
          this.debug(ex);
      }
  }
  
  function fileDialogComplete(numFilesSelected, numFilesQueued) {
      try {
          if (numFilesSelected > 0) {
              document.getElementById(this.customSettings.cancelButtonId).disabled = false;
          }
          
          /* I want auto start the upload and I can do that here */
          this.startUpload();
      } catch (ex)  {
          this.debug(ex);
      }
  }
  
  function uploadStart(file) {
      try {
          /* I don't want to do any file validation or anything,  I'll just update the UI and
             return true to indicate that the upload should start.
             It's important to update the UI here because in Linux no uploadProgress events are called. The best
             we can do is say we are uploading.
             */
          //var progress = new FileProgress(file, this.customSettings.progressTarget);
          //progress.setStatus("Uploading...");
          //progress.toggleCancel(true, this);
          //
  
      }
      catch (ex) {}
  
      return true;
  }
  
  function delFiles() {
      var listing = byId("mmUploadFileListing");
      var elem = listing.getElementsByTagName("li");
  
      for (var i=0;i<elem.length;i++) {
          var chk= elem[i].getElementsByTagName("input")[0];
          if (chk.type=='checkbox' && chk.checked==0) {
              elem[i].parentNode.removeChild(elem[i]);
          }
      }
  }
  
  function fileSubmit(obj) {
  
      var listing = byId("mmUploadFileListing");
      var elem = listing.getElementsByTagName("li");
      var selected = new Array();
      var form = obj.parentNode;
      var j=0;
  
      for (var i=0;i<elem.length;i++) {
          var chk= elem[i].getElementsByTagName("input")[0];
          if (chk.type=='checkbox' && chk.checked==1) {
              var inp = document.createElement('INPUT');
              inp.setAttribute("name",'MYFILES[]');
              inp.setAttribute("type",'hidden');
              inp.setAttribute("value",elem[i].id);
              form.appendChild(inp);
          }
      }
  }
  
  function uploadProgress(file, bytesLoaded, bytesTotal) {
      try {
          //var percent = Math.ceil((bytesLoaded / bytesTotal) * 100);
          //var progress = new FileProgress(file, this.customSettings.progressTarget);
          //progress.setProgress(percent);
          //progress.setStatus("Uploading...");
  
          var pie = document.getElementById("fileProgressInfo");
          var proc = Math.ceil((bytesLoaded / bytesTotal) * 100);
  
          pie.style.background = "url(" + _url_prefix + "/local/SWFUpload/images/progressbar.png) repeat-y -" + (100 - proc) + "px 0";
          pie.innerHTML = proc + " %";
  
          var progress = byId(file.name + "progress");
          progress.style.background = pie.style.background;
      } catch (ex) {
          this.debug(ex);
      }
  }
  
  function uploadSuccess(file, serverData) {
      try {
          //var progress = new FileProgress(file, this.customSettings.progressTarget);
          //progress.setComplete();
          //progress.setStatus("Complete.");
          //progress.toggleCancel(false);
  
      var unt= new Array('Bytes','KB','MB','GB','TB');
      var size=file.size;
      var i;
      for (i=0;i<4;i++) {
          if (size <= 1024) {
              break;
          }
          size=size/1024;
      }
      size= Math.roundf(size,2) + " " + unt[i];
  
      byId(file.name).className = "uploadDone";
      byId(file.name).innerHTML = "<input type='checkbox' checked='checked' />"
          + "<a href='javascript:showImgPreview(\"" + file.name + "\")'>" + file.name + "</a>" + " (" + size + ")";
  
      var pie = byId("fileProgressInfo");
      pie.style.background='';
      pie.innerHTML = "";
      } catch (ex) {
          this.debug(ex);
      }
  }
  
  function uploadError(file, errorCode, message) {
      try {
          //var progress = new FileProgress(file, this.customSettings.progressTarget);
          //progress.setError();
          //progress.toggleCancel(false);
  
          switch (errorCode) {
          case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:
              progress.setStatus("Upload Error: " + message);
              this.debug("Error Code: HTTP Error, File name: " + file.name + ", Message: " + message);
              break;
          case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:
              progress.setStatus("Upload Failed.");
              this.debug("Error Code: Upload Failed, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
              break;
          case SWFUpload.UPLOAD_ERROR.IO_ERROR:
              progress.setStatus("Server (IO) Error");
              this.debug("Error Code: IO Error, File name: " + file.name + ", Message: " + message);
              break;
          case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:
              progress.setStatus("Security Error");
              this.debug("Error Code: Security Error, File name: " + file.name + ", Message: " + message);
              break;
          case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
              progress.setStatus("Upload limit exceeded.");
              this.debug("Error Code: Upload Limit Exceeded, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
              break;
          case SWFUpload.UPLOAD_ERROR.FILE_VALIDATION_FAILED:
              progress.setStatus("Failed Validation.  Upload skipped.");
              this.debug("Error Code: File Validation Failed, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
              break;
          case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
              // If there aren't any files left (they were all cancelled) disable the cancel button
              if (this.getStats().files_queued === 0) {
                  document.getElementById(this.customSettings.cancelButtonId).disabled = true;
              }
              progress.setStatus("Cancelled");
              progress.setCancelled();
              break;
          case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
              progress.setStatus("Stopped");
              break;
          default:
              progress.setStatus("Unhandled Error: " + errorCode);
              this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
              break;
          }
      } catch (ex) {
          this.debug(ex);
      }
  }
  
  function uploadComplete(file) {
      if (this.getStats().files_queued === 0) {
          document.getElementById(this.customSettings.cancelButtonId).disabled = true;
      }
  }
  
  // This event comes from the Queue Plugin
  function queueComplete(numFilesUploaded) {
      //var status = document.getElementById("divStatus");
      //status.innerHTML = numFilesUploaded + " file" + (numFilesUploaded === 1 ? "" : "s") + " uploaded.";
  }
  
  // vim:et:sts=4:sw=4:
  
  
  
  1.1                  moniwiki/local/SWFUpload/swfupload.js
  
  Index: swfupload.js
  ===================================================================
  /**
   * SWFUpload: http://www.swfupload.org, http://swfupload.googlecode.com
   *
   * mmSWFUpload 1.0: Flash upload dialog - http://profandesign.se/swfupload/,  http://www.vinterwebb.se/
   *
   * SWFUpload is (c) 2006-2007 Lars Huring, Olov Nilzn and Mammon Media and is released under the MIT License:
   * http://www.opensource.org/licenses/mit-license.php
   *
   * SWFUpload 2 is (c) 2007-2008 Jake Roberts and is released under the MIT License:
   * http://www.opensource.org/licenses/mit-license.php
   *
   */
  
  
  /* ******************* */
  /* Constructor & Init  */
  /* ******************* */
  var SWFUpload;
  
  if (SWFUpload == undefined) {
  	SWFUpload = function (settings) {
  		this.initSWFUpload(settings);
  	};
  }
  
  SWFUpload.prototype.initSWFUpload = function (settings) {
  	try {
  		this.customSettings = {};	// A container where developers can place their own settings associated with this instance.
  		this.settings = settings;
  		this.eventQueue = [];
  		this.movieName = "SWFUpload_" + SWFUpload.movieCount++;
  		this.movieElement = null;
  
  
  		// Setup global control tracking
  		SWFUpload.instances[this.movieName] = this;
  
  		// Load the settings.  Load the Flash movie.
  		this.initSettings();
  		this.loadFlash();
  		this.displayDebugInfo();
  	} catch (ex) {
  		delete SWFUpload.instances[this.movieName];
  		throw ex;
  	}
  };
  
  /* *************** */
  /* Static Members  */
  /* *************** */
  SWFUpload.instances = {};
  SWFUpload.movieCount = 0;
  SWFUpload.version = "2.2.0 Beta 3";
  SWFUpload.QUEUE_ERROR = {
  	QUEUE_LIMIT_EXCEEDED	  		: -100,
  	FILE_EXCEEDS_SIZE_LIMIT  		: -110,
  	ZERO_BYTE_FILE			  		: -120,
  	INVALID_FILETYPE		  		: -130
  };
  SWFUpload.UPLOAD_ERROR = {
  	HTTP_ERROR				  		: -200,
  	MISSING_UPLOAD_URL	      		: -210,
  	IO_ERROR				  		: -220,
  	SECURITY_ERROR			  		: -230,
  	UPLOAD_LIMIT_EXCEEDED	  		: -240,
  	UPLOAD_FAILED			  		: -250,
  	SPECIFIED_FILE_ID_NOT_FOUND		: -260,
  	FILE_VALIDATION_FAILED	  		: -270,
  	FILE_CANCELLED			  		: -280,
  	UPLOAD_STOPPED					: -290
  };
  SWFUpload.FILE_STATUS = {
  	QUEUED		 : -1,
  	IN_PROGRESS	 : -2,
  	ERROR		 : -3,
  	COMPLETE	 : -4,
  	CANCELLED	 : -5
  };
  SWFUpload.BUTTON_ACTION = {
  	SELECT_FILE  : -100,
  	SELECT_FILES : -110,
  	START_UPLOAD : -120
  };
  SWFUpload.CURSOR = {
  	ARROW : -1,
  	HAND : -2
  };
  SWFUpload.WINDOW_MODE = {
  	WINDOW : "window",
  	TRANSPARENT : "transparent",
  	OPAQUE : "opaque"
  };
  
  /* ******************** */
  /* Instance Members  */
  /* ******************** */
  
  // Private: initSettings ensures that all the
  // settings are set, getting a default value if one was not assigned.
  SWFUpload.prototype.initSettings = function () {
  	this.ensureDefault = function (settingName, defaultValue) {
  		this.settings[settingName] = (this.settings[settingName] == undefined) ? defaultValue : this.settings[settingName];
  	};
  	
  	// Upload backend settings
  	this.ensureDefault("upload_url", "");
  	this.ensureDefault("file_post_name", "Filedata");
  	this.ensureDefault("post_params", {});
  	this.ensureDefault("use_query_string", false);
  	this.ensureDefault("requeue_on_error", false);
  	this.ensureDefault("http_success", []);
  	
  	// File Settings
  	this.ensureDefault("file_types", "*.*");
  	this.ensureDefault("file_types_description", "All Files");
  	this.ensureDefault("file_size_limit", 0);	// Default zero means "unlimited"
  	this.ensureDefault("file_upload_limit", 0);
  	this.ensureDefault("file_queue_limit", 0);
  
  	// Flash Settings
  	this.ensureDefault("flash_url", "swfupload.swf");
  	this.ensureDefault("prevent_swf_caching", true);
  	
  	// Button Settings
  	this.ensureDefault("button_image_url", "");
  	this.ensureDefault("button_width", 1);
  	this.ensureDefault("button_height", 1);
  	this.ensureDefault("button_text", "");
  	this.ensureDefault("button_text_style", "color: #000000; font-size: 16pt;");
  	this.ensureDefault("button_text_top_padding", 0);
  	this.ensureDefault("button_text_left_padding", 0);
  	this.ensureDefault("button_action", SWFUpload.BUTTON_ACTION.SELECT_FILES);
  	this.ensureDefault("button_disabled", false);
  	this.ensureDefault("button_placeholder_id", null);
  	this.ensureDefault("button_cursor", SWFUpload.CURSOR.ARROW);
  	this.ensureDefault("button_window_mode", SWFUpload.WINDOW_MODE.WINDOW);
  	
  	// Debug Settings
  	this.ensureDefault("debug", false);
  	this.settings.debug_enabled = this.settings.debug;	// Here to maintain v2 API
  	
  	// Event Handlers
  	this.settings.return_upload_start_handler = this.returnUploadStart;
  	this.ensureDefault("swfupload_loaded_handler", null);
  	this.ensureDefault("file_dialog_start_handler", null);
  	this.ensureDefault("file_queued_handler", null);
  	this.ensureDefault("file_queue_error_handler", null);
  	this.ensureDefault("file_dialog_complete_handler", null);
  	
  	this.ensureDefault("upload_start_handler", null);
  	this.ensureDefault("upload_progress_handler", null);
  	this.ensureDefault("upload_error_handler", null);
  	this.ensureDefault("upload_success_handler", null);
  	this.ensureDefault("upload_complete_handler", null);
  	
  	this.ensureDefault("debug_handler", this.debugMessage);
  
  	this.ensureDefault("custom_settings", {});
  
  	// Other settings
  	this.customSettings = this.settings.custom_settings;
  	
  	// Update the flash url if needed
  	if (this.settings.prevent_swf_caching) {
  		this.settings.flash_url = this.settings.flash_url + "?swfuploadrnd=" + Math.floor(Math.random() * 999999999);
  	}
  	
  	delete this.ensureDefault;
  };
  
  SWFUpload.prototype.loadFlash = function () {
  	if (this.settings.button_placeholder_id !== "") {
  		this.replaceWithFlash();
  	} else {
  		this.appendFlash();
  	}
  };
  
  // Private: appendFlash gets the HTML tag for the Flash
  // It then appends the flash to the body
  SWFUpload.prototype.appendFlash = function () {
  	var targetElement, container;
  
  	// Make sure an element with the ID we are going to use doesn't already exist
  	if (document.getElementById(this.movieName) !== null) {
  		throw "ID " + this.movieName + " is already in use. The Flash Object could not be added";
  	}
  
  	// Get the body tag where we will be adding the flash movie
  	targetElement = document.getElementsByTagName("body")[0];
  
  	if (targetElement == undefined) {
  		throw "Could not find the 'body' element.";
  	}
  
  	// Append the container and load the flash
  	container = document.createElement("div");
  	container.style.width = "1px";
  	container.style.height = "1px";
  	container.style.overflow = "hidden";
  
  	targetElement.appendChild(container);
  	container.innerHTML = this.getFlashHTML();	// Using innerHTML is non-standard but the only sensible way to dynamically add Flash in IE (and maybe other browsers)
  
  	// Fix IE Flash/Form bug
  	if (window[this.movieName] == undefined) {
  		window[this.movieName] = this.getMovieElement();
  	}
  	
  	
  };
  
  // Private: replaceWithFlash replaces the button_placeholder element with the flash movie.
  SWFUpload.prototype.replaceWithFlash = function () {
  	var targetElement, tempParent;
  
  	// Make sure an element with the ID we are going to use doesn't already exist
  	if (document.getElementById(this.movieName) !== null) {
  		throw "ID " + this.movieName + " is already in use. The Flash Object could not be added";
  	}
  
  	// Get the element where we will be placing the flash movie
  	targetElement = document.getElementById(this.settings.button_placeholder_id);
  
  	if (targetElement == undefined) {
  		throw "Could not find the placeholder element.";
  	}
  
  	// Append the container and load the flash
  	tempParent = document.createElement("div");
  	tempParent.innerHTML = this.getFlashHTML();	// Using innerHTML is non-standard but the only sensible way to dynamically add Flash in IE (and maybe other browsers)
  	targetElement.parentNode.replaceChild(tempParent.firstChild, targetElement);
  
  	// Fix IE Flash/Form bug
  	if (window[this.movieName] == undefined) {
  		window[this.movieName] = this.getMovieElement();
  	}
  	
  };
  
  // Private: getFlashHTML generates the object tag needed to embed the flash in to the document
  SWFUpload.prototype.getFlashHTML = function () {
  	// Flash Satay object syntax: http://www.alistapart.com/articles/flashsatay
  	return ['<object id="', this.movieName, '" type="application/x-shockwave-flash" data="', this.settings.flash_url, '" width="', this.settings.button_width, '" height="', this.settings.button_height, '" class="swfupload">',
  				'<param name="wmode" value="', this.settings.button_window_mode , '" />',
  				'<param name="movie" value="', this.settings.flash_url, '" />',
  				'<param name="quality" value="high" />',
  				'<param name="menu" value="false" />',
  				'<param name="allowScriptAccess" value="always" />',
  				'<param name="flashvars" value="' + this.getFlashVars() + '" />',
  				'</object>'].join("");
  };
  
  // Private: getFlashVars builds the parameter string that will be passed
  // to flash in the flashvars param.
  SWFUpload.prototype.getFlashVars = function () {
  	// Build a string from the post param object
  	var paramString = this.buildParamString();
  	var httpSuccessString = this.settings.http_success.join(",");
  	
  	// Build the parameter string
  	return ["movieName=", encodeURIComponent(this.movieName),
  			"&amp;uploadURL=", encodeURIComponent(this.settings.upload_url),
  			"&amp;useQueryString=", encodeURIComponent(this.settings.use_query_string),
  			"&amp;requeueOnError=", encodeURIComponent(this.settings.requeue_on_error),
  			"&amp;httpSuccess=", encodeURIComponent(httpSuccessString),
  			"&amp;params=", encodeURIComponent(paramString),
  			"&amp;filePostName=", encodeURIComponent(this.settings.file_post_name),
  			"&amp;fileTypes=", encodeURIComponent(this.settings.file_types),
  			"&amp;fileTypesDescription=", encodeURIComponent(this.settings.file_types_description),
  			"&amp;fileSizeLimit=", encodeURIComponent(this.settings.file_size_limit),
  			"&amp;fileUploadLimit=", encodeURIComponent(this.settings.file_upload_limit),
  			"&amp;fileQueueLimit=", encodeURIComponent(this.settings.file_queue_limit),
  			"&amp;debugEnabled=", encodeURIComponent(this.settings.debug_enabled),
  			"&amp;buttonImageURL=", encodeURIComponent(this.settings.button_image_url),
  			"&amp;buttonWidth=", encodeURIComponent(this.settings.button_width),
  			"&amp;buttonHeight=", encodeURIComponent(this.settings.button_height),
  			"&amp;buttonText=", encodeURIComponent(this.settings.button_text),
  			"&amp;buttonTextTopPadding=", encodeURIComponent(this.settings.button_text_top_padding),
  			"&amp;buttonTextLeftPadding=", encodeURIComponent(this.settings.button_text_left_padding),
  			"&amp;buttonTextStyle=", encodeURIComponent(this.settings.button_text_style),
  			"&amp;buttonAction=", encodeURIComponent(this.settings.button_action),
  			"&amp;buttonDisabled=", encodeURIComponent(this.settings.button_disabled),
  			"&amp;buttonCursor=", encodeURIComponent(this.settings.button_cursor)
  		].join("");
  };
  
  // Public: getMovieElement retrieves the DOM reference to the Flash element added by SWFUpload
  // The element is cached after the first lookup
  SWFUpload.prototype.getMovieElement = function () {
  	if (this.movieElement == undefined) {
  		this.movieElement = document.getElementById(this.movieName);
  	}
  
  	if (this.movieElement === null) {
  		throw "Could not find Flash element";
  	}
  	
  	return this.movieElement;
  };
  
  // Private: buildParamString takes the name/value pairs in the post_params setting object
  // and joins them up in to a string formatted "name=value&amp;name=value"
  SWFUpload.prototype.buildParamString = function () {
  	var postParams = this.settings.post_params; 
  	var paramStringPairs = [];
  
  	if (typeof(postParams) === "object") {
  		for (var name in postParams) {
  			if (postParams.hasOwnProperty(name)) {
  				paramStringPairs.push(encodeURIComponent(name.toString()) + "=" + encodeURIComponent(postParams[name].toString()));
  			}
  		}
  	}
  
  	return paramStringPairs.join("&amp;");
  };
  
  // Public: Used to remove a SWFUpload instance from the page. This method strives to remove
  // all references to the SWF, and other objects so memory is properly freed.
  // Returns true if everything was destroyed. Returns a false if a failure occurs leaving SWFUpload in an inconsistant state.
  // Credits: Major improvements provided by steffen
  SWFUpload.prototype.destroy = function () {
  	try {
  		// Make sure Flash is done before we try to remove it
  		this.cancelUpload(null, false);
  		
  		// Remove the SWFUpload DOM nodes
  		var movieElement = null;
  		movieElement = this.getMovieElement();
  		
  		if (movieElement) {
  			// Loop through all the movie's properties and remove all function references (DOM/JS IE 6/7 memory leak workaround)
  			for (var i in movieElement) {
  				try {
  					if (typeof(movieElement[i]) === "function") {
  						movieElement[i] = null;
  					}
  				} catch (ex1) {}
  			}
  
  			// Remove the Movie Element from the page
  			try {
  				movieElement.parentNode.removeChild(movieElement);
  			} catch (ex) {}
  		}
  		
  		
  		// Remove IE form fix reference
  		window[this.movieName] = null;
  
  		// Destroy other references
  		SWFUpload.instances[this.movieName] = null;
  		delete SWFUpload.instances[this.movieName];
  
  		this.movieElement = null;
  		this.settings = null;
  		this.customSettings = null;
  		this.eventQueue = null;
  		this.movieName = null;
  		
  		
  		return true;
  	} catch (ex1) {
  		return false;
  	}
  };
  
  // Public: displayDebugInfo prints out settings and configuration
  // information about this SWFUpload instance.
  // This function (and any references to it) can be deleted when placing
  // SWFUpload in production.
  SWFUpload.prototype.displayDebugInfo = function () {
  	this.debug(
  		[
  			"---SWFUpload Instance Info---\n",
  			"Version: ", SWFUpload.version, "\n",
  			"Movie Name: ", this.movieName, "\n",
  			"Settings:\n",
  			"\t", "upload_url:               ", this.settings.upload_url, "\n",
  			"\t", "flash_url:                ", this.settings.flash_url, "\n",
  			"\t", "use_query_string:         ", this.settings.use_query_string.toString(), "\n",
  			"\t", "requeue_on_error:         ", this.settings.requeue_on_error.toString(), "\n",
  			"\t", "http_success:             ", this.settings.http_success.join(", "), "\n",
  			"\t", "file_post_name:           ", this.settings.file_post_name, "\n",
  			"\t", "post_params:              ", this.settings.post_params.toString(), "\n",
  			"\t", "file_types:               ", this.settings.file_types, "\n",
  			"\t", "file_types_description:   ", this.settings.file_types_description, "\n",
  			"\t", "file_size_limit:          ", this.settings.file_size_limit, "\n",
  			"\t", "file_upload_limit:        ", this.settings.file_upload_limit, "\n",
  			"\t", "file_queue_limit:         ", this.settings.file_queue_limit, "\n",
  			"\t", "debug:                    ", this.settings.debug.toString(), "\n",
  
  			"\t", "prevent_swf_caching:      ", this.settings.prevent_swf_caching.toString(), "\n",
  
  			"\t", "button_placeholder_id:    ", this.settings.button_placeholder_id.toString(), "\n",
  			"\t", "button_image_url:         ", this.settings.button_image_url.toString(), "\n",
  			"\t", "button_width:             ", this.settings.button_width.toString(), "\n",
  			"\t", "button_height:            ", this.settings.button_height.toString(), "\n",
  			"\t", "button_text:              ", this.settings.button_text.toString(), "\n",
  			"\t", "button_text_style:        ", this.settings.button_text_style.toString(), "\n",
  			"\t", "button_text_top_padding:  ", this.settings.button_text_top_padding.toString(), "\n",
  			"\t", "button_text_left_padding: ", this.settings.button_text_left_padding.toString(), "\n",
  			"\t", "button_action:            ", this.settings.button_action.toString(), "\n",
  			"\t", "button_disabled:          ", this.settings.button_disabled.toString(), "\n",
  
  			"\t", "custom_settings:          ", this.settings.custom_settings.toString(), "\n",
  			"Event Handlers:\n",
  			"\t", "swfupload_loaded_handler assigned:  ", (typeof this.settings.swfupload_loaded_handler === "function").toString(), "\n",
  			"\t", "file_dialog_start_handler assigned: ", (typeof this.settings.file_dialog_start_handler === "function").toString(), "\n",
  			"\t", "file_queued_handler assigned:       ", (typeof this.settings.file_queued_handler === "function").toString(), "\n",
  			"\t", "file_queue_error_handler assigned:  ", (typeof this.settings.file_queue_error_handler === "function").toString(), "\n",
  			"\t", "upload_start_handler assigned:      ", (typeof this.settings.upload_start_handler === "function").toString(), "\n",
  			"\t", "upload_progress_handler assigned:   ", (typeof this.settings.upload_progress_handler === "function").toString(), "\n",
  			"\t", "upload_error_handler assigned:      ", (typeof this.settings.upload_error_handler === "function").toString(), "\n",
  			"\t", "upload_success_handler assigned:    ", (typeof this.settings.upload_success_handler === "function").toString(), "\n",
  			"\t", "upload_complete_handler assigned:   ", (typeof this.settings.upload_complete_handler === "function").toString(), "\n",
  			"\t", "debug_handler assigned:             ", (typeof this.settings.debug_handler === "function").toString(), "\n"
  		].join("")
  	);
  };
  
  /* Note: addSetting and getSetting are no longer used by SWFUpload but are included
  	the maintain v2 API compatibility
  */
  // Public: (Deprecated) addSetting adds a setting value. If the value given is undefined or null then the default_value is used.
  SWFUpload.prototype.addSetting = function (name, value, default_value) {
      if (value == undefined) {
          return (this.settings[name] = default_value);
      } else {
          return (this.settings[name] = value);
  	}
  };
  
  // Public: (Deprecated) getSetting gets a setting. Returns an empty string if the setting was not found.
  SWFUpload.prototype.getSetting = function (name) {
      if (this.settings[name] != undefined) {
          return this.settings[name];
  	}
  
      return "";
  };
  
  
  
  // Private: callFlash handles function calls made to the Flash element.
  // Calls are made with a setTimeout for some functions to work around
  // bugs in the ExternalInterface library.
  SWFUpload.prototype.callFlash = function (functionName, argumentArray) {
  	argumentArray = argumentArray || [];
  	
  	var movieElement = this.getMovieElement();
  	var returnValue, returnString;
  
  	// Flash's method if calling ExternalInterface methods (code adapted from MooTools).
  	try {
  		returnString = movieElement.CallFunction('<invoke name="' + functionName + '" returntype="javascript">' + __flash__argumentsToXML(argumentArray, 0) + '</invoke>');
  		returnValue = eval(returnString);
  	} catch (ex) {
  		throw "Call to " + functionName + " failed";
  	}
  	
  	// Unescape file post param values
  	if (returnValue != undefined && typeof returnValue.post === "object") {
  		returnValue = this.unescapeFilePostParams(returnValue);
  	}
  
  	return returnValue;
  };
  
  
  /* *****************************
  	-- Flash control methods --
  	Your UI should use these
  	to operate SWFUpload
     ***************************** */
  
  // WARNING: this function does not work in Flash Player 10
  // Public: selectFile causes a File Selection Dialog window to appear.  This
  // dialog only allows 1 file to be selected.
  SWFUpload.prototype.selectFile = function () {
  	this.callFlash("SelectFile");
  };
  
  // WARNING: this function does not work in Flash Player 10
  // Public: selectFiles causes a File Selection Dialog window to appear/ This
  // dialog allows the user to select any number of files
  // Flash Bug Warning: Flash limits the number of selectable files based on the combined length of the file names.
  // If the selection name length is too long the dialog will fail in an unpredictable manner.  There is no work-around
  // for this bug.
  SWFUpload.prototype.selectFiles = function () {
  	this.callFlash("SelectFiles");
  };
  
  
  // Public: startUpload starts uploading the first file in the queue unless
  // the optional parameter 'fileID' specifies the ID 
  SWFUpload.prototype.startUpload = function (fileID) {
  	this.callFlash("StartUpload", [fileID]);
  };
  
  // Public: cancelUpload cancels any queued file.  The fileID parameter may be the file ID or index.
  // If you do not specify a fileID the current uploading file or first file in the queue is cancelled.
  // If you do not want the uploadError event to trigger you can specify false for the triggerErrorEvent parameter.
  SWFUpload.prototype.cancelUpload = function (fileID, triggerErrorEvent) {
  	if (triggerErrorEvent !== false) {
  		triggerErrorEvent = true;
  	}
  	this.callFlash("CancelUpload", [fileID, triggerErrorEvent]);
  };
  
  // Public: stopUpload stops the current upload and requeues the file at the beginning of the queue.
  // If nothing is currently uploading then nothing happens.
  SWFUpload.prototype.stopUpload = function () {
  	this.callFlash("StopUpload");
  };
  
  /* ************************
   * Settings methods
   *   These methods change the SWFUpload settings.
   *   SWFUpload settings should not be changed directly on the settings object
   *   since many of the settings need to be passed to Flash in order to take
   *   effect.
   * *********************** */
  
  // Public: getStats gets the file statistics object.
  SWFUpload.prototype.getStats = function () {
  	return this.callFlash("GetStats");
  };
  
  // Public: setStats changes the SWFUpload statistics.  You shouldn't need to 
  // change the statistics but you can.  Changing the statistics does not
  // affect SWFUpload accept for the successful_uploads count which is used
  // by the upload_limit setting to determine how many files the user may upload.
  SWFUpload.prototype.setStats = function (statsObject) {
  	this.callFlash("SetStats", [statsObject]);
  };
  
  // Public: getFile retrieves a File object by ID or Index.  If the file is
  // not found then 'null' is returned.
  SWFUpload.prototype.getFile = function (fileID) {
  	if (typeof(fileID) === "number") {
  		return this.callFlash("GetFileByIndex", [fileID]);
  	} else {
  		return this.callFlash("GetFile", [fileID]);
  	}
  };
  
  // Public: addFileParam sets a name/value pair that will be posted with the
  // file specified by the Files ID.  If the name already exists then the
  // exiting value will be overwritten.
  SWFUpload.prototype.addFileParam = function (fileID, name, value) {
  	return this.callFlash("AddFileParam", [fileID, name, value]);
  };
  
  // Public: removeFileParam removes a previously set (by addFileParam) name/value
  // pair from the specified file.
  SWFUpload.prototype.removeFileParam = function (fileID, name) {
  	this.callFlash("RemoveFileParam", [fileID, name]);
  };
  
  // Public: setUploadUrl changes the upload_url setting.
  SWFUpload.prototype.setUploadURL = function (url) {
  	this.settings.upload_url = url.toString();
  	this.callFlash("SetUploadURL", [url]);
  };
  
  // Public: setPostParams changes the post_params setting
  SWFUpload.prototype.setPostParams = function (paramsObject) {
  	this.settings.post_params = paramsObject;
  	this.callFlash("SetPostParams", [paramsObject]);
  };
  
  // Public: addPostParam adds post name/value pair.  Each name can have only one value.
  SWFUpload.prototype.addPostParam = function (name, value) {
  	this.settings.post_params[name] = value;
  	this.callFlash("SetPostParams", [this.settings.post_params]);
  };
  
  // Public: removePostParam deletes post name/value pair.
  SWFUpload.prototype.removePostParam = function (name) {
  	delete this.settings.post_params[name];
  	this.callFlash("SetPostParams", [this.settings.post_params]);
  };
  
  // Public: setFileTypes changes the file_types setting and the file_types_description setting
  SWFUpload.prototype.setFileTypes = function (types, description) {
  	this.settings.file_types = types;
  	this.settings.file_types_description = description;
  	this.callFlash("SetFileTypes", [types, description]);
  };
  
  // Public: setFileSizeLimit changes the file_size_limit setting
  SWFUpload.prototype.setFileSizeLimit = function (fileSizeLimit) {
  	this.settings.file_size_limit = fileSizeLimit;
  	this.callFlash("SetFileSizeLimit", [fileSizeLimit]);
  };
  
  // Public: setFileUploadLimit changes the file_upload_limit setting
  SWFUpload.prototype.setFileUploadLimit = function (fileUploadLimit) {
  	this.settings.file_upload_limit = fileUploadLimit;
  	this.callFlash("SetFileUploadLimit", [fileUploadLimit]);
  };
  
  // Public: setFileQueueLimit changes the file_queue_limit setting
  SWFUpload.prototype.setFileQueueLimit = function (fileQueueLimit) {
  	this.settings.file_queue_limit = fileQueueLimit;
  	this.callFlash("SetFileQueueLimit", [fileQueueLimit]);
  };
  
  // Public: setFilePostName changes the file_post_name setting
  SWFUpload.prototype.setFilePostName = function (filePostName) {
  	this.settings.file_post_name = filePostName;
  	this.callFlash("SetFilePostName", [filePostName]);
  };
  
  // Public: setUseQueryString changes the use_query_string setting
  SWFUpload.prototype.setUseQueryString = function (useQueryString) {
  	this.settings.use_query_string = useQueryString;
  	this.callFlash("SetUseQueryString", [useQueryString]);
  };
  
  // Public: setRequeueOnError changes the requeue_on_error setting
  SWFUpload.prototype.setRequeueOnError = function (requeueOnError) {
  	this.settings.requeue_on_error = requeueOnError;
  	this.callFlash("SetRequeueOnError", [requeueOnError]);
  };
  
  // Public: setHTTPSuccess changes the http_success setting
  SWFUpload.prototype.setHTTPSuccess = function (http_status_codes) {
  	if (typeof http_status_codes === "string") {
  		http_status_codes = http_status_codes.replace(" ", "").split(",");
  	}
  	
  	this.settings.http_success = http_status_codes;
  	this.callFlash("SetHTTPSuccess", [http_status_codes]);
  };
  
  
  // Public: setDebugEnabled changes the debug_enabled setting
  SWFUpload.prototype.setDebugEnabled = function (debugEnabled) {
  	this.settings.debug_enabled = debugEnabled;
  	this.callFlash("SetDebugEnabled", [debugEnabled]);
  };
  
  // Public: setButtonImageURL loads a button image sprite
  SWFUpload.prototype.setButtonImageURL = function (buttonImageURL) {
  	if (buttonImageURL == undefined) {
  		buttonImageURL = "";
  	}
  	
  	this.settings.button_image_url = buttonImageURL;
  	this.callFlash("SetButtonImageURL", [buttonImageURL]);
  };
  
  // Public: setButtonDimensions resizes the Flash Movie and button
  SWFUpload.prototype.setButtonDimensions = function (width, height) {
  	this.settings.button_width = width;
  	this.settings.button_height = height;
  	
  	var movie = this.getMovieElement();
  	if (movie != undefined) {
  		movie.style.width = width + "px";
  		movie.style.height = height + "px";
  	}
  	
  	this.callFlash("SetButtonDimensions", [width, height]);
  };
  // Public: setButtonText Changes the text overlaid on the button
  SWFUpload.prototype.setButtonText = function (html) {
  	this.settings.button_text = html;
  	this.callFlash("SetButtonText", [html]);
  };
  // Public: setButtonTextPadding changes the top and left padding of the text overlay
  SWFUpload.prototype.setButtonTextPadding = function (left, top) {
  	this.settings.button_text_top_padding = top;
  	this.settings.button_text_left_padding = left;
  	this.callFlash("SetButtonTextPadding", [left, top]);
  };
  
  // Public: setButtonTextStyle changes the CSS used to style the HTML/Text overlaid on the button
  SWFUpload.prototype.setButtonTextStyle = function (css) {
  	this.settings.button_text_style = css;
  	this.callFlash("SetButtonTextStyle", [css]);
  };
  // Public: setButtonDisabled disables/enables the button
  SWFUpload.prototype.setButtonDisabled = function (isDisabled) {
  	this.settings.button_disabled = isDisabled;
  	this.callFlash("SetButtonDisabled", [isDisabled]);
  };
  // Public: setButtonAction sets the action that occurs when the button is clicked
  SWFUpload.prototype.setButtonAction = function (buttonAction) {
  	this.settings.button_action = buttonAction;
  	this.callFlash("SetButtonAction", [buttonAction]);
  };
  
  // Public: setButtonCursor changes the mouse cursor displayed when hovering over the button
  SWFUpload.prototype.setButtonCursor = function (cursor) {
  	this.settings.button_cursor = cursor;
  	this.callFlash("SetButtonCursor", [cursor]);
  };
  
  /* *******************************
  	Flash Event Interfaces
  	These functions are used by Flash to trigger the various
  	events.
  	
  	All these functions a Private.
  	
  	Because the ExternalInterface library is buggy the event calls
  	are added to a queue and the queue then executed by a setTimeout.
  	This ensures that events are executed in a determinate order and that
  	the ExternalInterface bugs are avoided.
  ******************************* */
  
  SWFUpload.prototype.queueEvent = function (handlerName, argumentArray) {
  	// Warning: Don't call this.debug inside here or you'll create an infinite loop
  	
  	if (argumentArray == undefined) {
  		argumentArray = [];
  	} else if (!(argumentArray instanceof Array)) {
  		argumentArray = [argumentArray];
  	}
  	
  	var self = this;
  	if (typeof this.settings[handlerName] === "function") {
  		// Queue the event
  		this.eventQueue.push(function () {
  			this.settings[handlerName].apply(this, argumentArray);
  		});
  		
  		// Execute the next queued event
  		setTimeout(function () {
  			self.executeNextEvent();
  		}, 0);
  		
  	} else if (this.settings[handlerName] !== null) {
  		throw "Event handler " + handlerName + " is unknown or is not a function";
  	}
  };
  
  // Private: Causes the next event in the queue to be executed.  Since events are queued using a setTimeout
  // we must queue them in order to garentee that they are executed in order.
  SWFUpload.prototype.executeNextEvent = function () {
  	// Warning: Don't call this.debug inside here or you'll create an infinite loop
  
  	var  f = this.eventQueue ? this.eventQueue.shift() : null;
  	if (typeof(f) === "function") {
  		f.apply(this);
  	}
  };
  
  // Private: unescapeFileParams is part of a workaround for a flash bug where objects passed through ExternalInterface cannot have
  // properties that contain characters that are not valid for JavaScript identifiers. To work around this
  // the Flash Component escapes the parameter names and we must unescape again before passing them along.
  SWFUpload.prototype.unescapeFilePostParams = function (file) {
  	var reg = /[$]([0-9a-f]{4})/i;
  	var unescapedPost = {};
  	var uk;
  
  	if (file != undefined) {
  		for (var k in file.post) {
  			if (file.post.hasOwnProperty(k)) {
  				uk = k;
  				var match;
  				while ((match = reg.exec(uk)) !== null) {
  					uk = uk.replace(match[0], String.fromCharCode(parseInt("0x" + match[1], 16)));
  				}
  				unescapedPost[uk] = file.post[k];
  			}
  		}
  
  		file.post = unescapedPost;
  	}
  
  	return file;
  };
  
  SWFUpload.prototype.flashReady = function () {
  	// Check that the movie element is loaded correctly with its ExternalInterface methods defined
  	var movieElement = this.getMovieElement();
  
  	// Pro-actively unhook all the Flash functions
  	if (typeof(movieElement.CallFunction) === "unknown") { // We only want to do this in IE
  		this.debug("Removing Flash functions hooks (this should only run in IE and should prevent memory leaks)");
  		for (var key in movieElement) {
  			try {
  				if (typeof(movieElement[key]) === "function") {
  					movieElement[key] = null;
  				}
  			} catch (ex) {
  			}
  		}
  	}
  	
  	this.queueEvent("swfupload_loaded_handler");
  };
  
  
  /* This is a chance to do something before the browse window opens */
  SWFUpload.prototype.fileDialogStart = function () {
  	this.queueEvent("file_dialog_start_handler");
  };
  
  
  /* Called when a file is successfully added to the queue. */
  SWFUpload.prototype.fileQueued = function (file) {
  	file = this.unescapeFilePostParams(file);
  	this.queueEvent("file_queued_handler", file);
  };
  
  
  /* Handle errors that occur when an attempt to queue a file fails. */
  SWFUpload.prototype.fileQueueError = function (file, errorCode, message) {
  	file = this.unescapeFilePostParams(file);
  	this.queueEvent("file_queue_error_handler", [file, errorCode, message]);
  };
  
  /* Called after the file dialog has closed and the selected files have been queued.
  	You could call startUpload here if you want the queued files to begin uploading immediately. */
  SWFUpload.prototype.fileDialogComplete = function (numFilesSelected, numFilesQueued) {
  	this.queueEvent("file_dialog_complete_handler", [numFilesSelected, numFilesQueued]);
  };
  
  SWFUpload.prototype.uploadStart = function (file) {
  	file = this.unescapeFilePostParams(file);
  	this.queueEvent("return_upload_start_handler", file);
  };
  
  SWFUpload.prototype.returnUploadStart = function (file) {
  	var returnValue;
  	if (typeof this.settings.upload_start_handler === "function") {
  		file = this.unescapeFilePostParams(file);
  		returnValue = this.settings.upload_start_handler.call(this, file);
  	} else if (this.settings.upload_start_handler != undefined) {
  		throw "upload_start_handler must be a function";
  	}
  
  	// Convert undefined to true so if nothing is returned from the upload_start_handler it is
  	// interpretted as 'true'.
  	if (returnValue === undefined) {
  		returnValue = true;
  	}
  	
  	returnValue = !!returnValue;
  	
  	this.callFlash("ReturnUploadStart", [returnValue]);
  };
  
  
  
  SWFUpload.prototype.uploadProgress = function (file, bytesComplete, bytesTotal) {
  	file = this.unescapeFilePostParams(file);
  	this.queueEvent("upload_progress_handler", [file, bytesComplete, bytesTotal]);
  };
  
  SWFUpload.prototype.uploadError = function (file, errorCode, message) {
  	file = this.unescapeFilePostParams(file);
  	this.queueEvent("upload_error_handler", [file, errorCode, message]);
  };
  
  SWFUpload.prototype.uploadSuccess = function (file, serverData) {
  	file = this.unescapeFilePostParams(file);
  	this.queueEvent("upload_success_handler", [file, serverData]);
  };
  
  SWFUpload.prototype.uploadComplete = function (file) {
  	file = this.unescapeFilePostParams(file);
  	this.queueEvent("upload_complete_handler", file);
  };
  
  /* Called by SWFUpload JavaScript and Flash functions when debug is enabled. By default it writes messages to the
     internal debug console.  You can override this event and have messages written where you want. */
  SWFUpload.prototype.debug = function (message) {
  	this.queueEvent("debug_handler", message);
  };
  
  
  /* **********************************
  	Debug Console
  	The debug console is a self contained, in page location
  	for debug message to be sent.  The Debug Console adds
  	itself to the body if necessary.
  
  	The console is automatically scrolled as messages appear.
  	
  	If you are using your own debug handler or when you deploy to production and
  	have debug disabled you can remove these functions to reduce the file size
  	and complexity.
  ********************************** */
     
  // Private: debugMessage is the default debug_handler.  If you want to print debug messages
  // call the debug() function.  When overriding the function your own function should
  // check to see if the debug setting is true before outputting debug information.
  SWFUpload.prototype.debugMessage = function (message) {
  	if (this.settings.debug) {
  		var exceptionMessage, exceptionValues = [];
  
  		// Check for an exception object and print it nicely
  		if (typeof message === "object" && typeof message.name === "string" && typeof message.message === "string") {
  			for (var key in message) {
  				if (message.hasOwnProperty(key)) {
  					exceptionValues.push(key + ": " + message[key]);
  				}
  			}
  			exceptionMessage = exceptionValues.join("\n") || "";
  			exceptionValues = exceptionMessage.split("\n");
  			exceptionMessage = "EXCEPTION: " + exceptionValues.join("\nEXCEPTION: ");
  			SWFUpload.Console.writeLine(exceptionMessage);
  		} else {
  			SWFUpload.Console.writeLine(message);
  		}
  	}
  };
  
  SWFUpload.Console = {};
  SWFUpload.Console.writeLine = function (message) {
  	var console, documentForm;
  
  	try {
  		console = document.getElementById("SWFUpload_Console");
  
  		if (!console) {
  			documentForm = document.createElement("form");
  			document.getElementsByTagName("body")[0].appendChild(documentForm);
  
  			console = document.createElement("textarea");
  			console.id = "SWFUpload_Console";
  			console.style.fontFamily = "monospace";
  			console.setAttribute("wrap", "off");
  			console.wrap = "off";
  			console.style.overflow = "auto";
  			console.style.width = "700px";
  			console.style.height = "350px";
  			console.style.margin = "5px";
  			documentForm.appendChild(console);
  		}
  
  		console.value += message + "\n";
  
  		console.scrollTop = console.scrollHeight - console.clientHeight;
  	} catch (ex) {
  		alert("Exception: " + ex.name + " Message: " + ex.message);
  	}
  };
  
  
  
  1.1                  moniwiki/local/SWFUpload/swfupload.queue.js
  
  Index: swfupload.queue.js
  ===================================================================
  /*
  	Queue Plug-in
  	
  	Features:
  		*Adds a cancelQueue() method for cancelling the entire queue.
  		*All queued files are uploaded when startUpload() is called.
  		*If false is returned from uploadComplete then the queue upload is stopped.
  		 If false is not returned (strict comparison) then the queue upload is continued.
  		*Adds a QueueComplete event that is fired when all the queued files have finished uploading.
  		 Set the event handler with the queue_complete_handler setting.
  		
  	*/
  
  var SWFUpload;
  if (typeof(SWFUpload) === "function") {
  	SWFUpload.queue = {};
  	
  	SWFUpload.prototype.initSettings = (function (oldInitSettings) {
  		return function () {
  			if (typeof(oldInitSettings) === "function") {
  				oldInitSettings.call(this);
  			}
  			
  			this.customSettings.queue_cancelled_flag = false;
  			this.customSettings.queue_upload_count = 0;
  			
  			this.settings.user_upload_complete_handler = this.settings.upload_complete_handler;
  			this.settings.user_upload_start_handler = this.settings.upload_start_handler;
  			this.settings.upload_complete_handler = SWFUpload.queue.uploadCompleteHandler;
  			this.settings.upload_start_handler = SWFUpload.queue.uploadStartHandler;
  			
  			this.settings.queue_complete_handler = this.settings.queue_complete_handler || null;
  		};
  	})(SWFUpload.prototype.initSettings);
  
  	SWFUpload.prototype.startUpload = function (fileID) {
  		this.customSettings.queue_cancelled_flag = false;
  		this.callFlash("StartUpload", [fileID]);
  	};
  
  	SWFUpload.prototype.cancelQueue = function () {
  		this.customSettings.queue_cancelled_flag = true;
  		this.stopUpload();
  		
  		var stats = this.getStats();
  		while (stats.files_queued > 0) {
  			this.cancelUpload();
  			stats = this.getStats();
  		}
  	};
  	
  	SWFUpload.queue.uploadStartHandler = function (file) {
  		var returnValue;
  		if (typeof(this.customSettings.user_upload_start_handler) === "function") {
  			returnValue = this.customSettings.user_upload_start_handler.call(this, file);
  		}
  		
  		// To prevent upload a real "FALSE" value must be returned, otherwise default to a real "TRUE" value.
  		returnValue = (returnValue === false) ? false : true;
  		
  		this.customSettings.queue_cancelled_flag = !returnValue;
  
  		return returnValue;
  	};
  	
  	SWFUpload.queue.uploadCompleteHandler = function (file) {
  		var user_upload_complete_handler = this.settings.user_upload_complete_handler;
  		var continueUpload;
  		
  		if (file.filestatus === SWFUpload.FILE_STATUS.COMPLETE) {
  			this.customSettings.queue_upload_count++;
  		}
  
  		if (typeof(user_upload_complete_handler) === "function") {
  			continueUpload = (user_upload_complete_handler.call(this, file) === false) ? false : true;
  		} else {
  			continueUpload = true;
  		}
  		
  		if (continueUpload) {
  			var stats = this.getStats();
  			if (stats.files_queued > 0 && this.customSettings.queue_cancelled_flag === false) {
  				this.startUpload();
  			} else if (this.customSettings.queue_cancelled_flag === false) {
  				this.queueEvent("queue_complete_handler", [this.customSettings.queue_upload_count]);
  				this.customSettings.queue_upload_count = 0;
  			} else {
  				this.customSettings.queue_cancelled_flag = false;
  				this.customSettings.queue_upload_count = 0;
  			}
  		}
  	};
  }
  
  
  1.1                  moniwiki/local/SWFUpload/swfupload.swf
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/local/SWFUpload/swfupload.swfobject.js
  
  Index: swfupload.swfobject.js
  ===================================================================
  /*
  	SWFUpload.SWFObject Plugin
  
  	Summary:
  		This plugin uses SWFObject to embed SWFUpload dynamically in the page.  SWFObject provides accurate Flash Player detection and DOM Ready loading.
  		This plugin replaces the Graceful Degradation plugin.
  
  	Features:
  		* swfupload_load_failed_hander event
  		* swfupload_pre_load_handler event
  		* minimum_flash_version setting (default: "9.0.28")
  		* SWFUpload.onload event for early loading
  
  	Usage:
  		Provide handlers and settings as needed.  When using the SWFUpload.SWFObject plugin you should initialize SWFUploading
  		in SWFUpload.onload rather than in window.onload.  When initialized this way SWFUpload can load earlier preventing the UI flicker
  		that was seen using the Graceful Degradation plugin.
  
  		<script type="text/javascript">
  			var swfu;
  			SWFUpload.onload = function () {
  				swfu = new SWFUpload({
  					minimum_flash_version: "9.0.28",
  					swfupload_pre_load_handler: swfuploadPreLoad,
  					swfupload_load_failed_handler: swfuploadLoadFailed
  				});
  			};
  		</script>
  		
  	Notes:
  		You must provide set minimum_flash_version setting to "8" if you are using SWFUpload for Flash Player 8.
  		The swfuploadLoadFailed event is only fired if the minimum version of Flash Player is not met.  Other issues such as missing SWF files, browser bugs
  		 or corrupt Flash Player installations will not trigger this event.
  		The swfuploadPreLoad event is fired as soon as the minimum version of Flash Player is found.  It does not wait for SWFUpload to load and can
  		 be used to prepare the SWFUploadUI and hide alternate content.
  		swfobject's onDomReady event is cross-browser safe but will default to the window.onload event when DOMReady is not supported by the browser.
  		 Early DOM Loading is supported in major modern browsers but cannot be guaranteed for every browser ever made.
  */
  
  
  
  var SWFUpload;
  if (typeof(SWFUpload) === "function") {
  	SWFUpload.onload = function () {};
  	
  	swfobject.addDomLoadEvent(function () {
  		if (typeof(SWFUpload.onload) === "function") {
  			SWFUpload.onload.call(window);
  		}
  	});
  	
  	SWFUpload.prototype.initSettings = (function (oldInitSettings) {
  		return function () {
  			if (typeof(oldInitSettings) === "function") {
  				oldInitSettings.call(this);
  			}
  
  			this.ensureDefault = function (settingName, defaultValue) {
  				this.settings[settingName] = (this.settings[settingName] == undefined) ? defaultValue : this.settings[settingName];
  			};
  
  			this.ensureDefault("minimum_flash_version", "9.0.28");
  			this.ensureDefault("swfupload_pre_load_handler", null);
  			this.ensureDefault("swfupload_load_failed_handler", null);
  
  			delete this.ensureDefault;
  
  		};
  	})(SWFUpload.prototype.initSettings);
  
  
  	SWFUpload.prototype.loadFlash = function (oldLoadFlash) {
  		return function () {
  			var hasFlash = swfobject.hasFlashPlayerVersion(this.settings.minimum_flash_version);
  			
  			if (hasFlash) {
  				this.queueEvent("swfupload_pre_load_handler");
  				if (typeof(oldLoadFlash) === "function") {
  					oldLoadFlash.call(this);
  				}
  			} else {
  				this.queueEvent("swfupload_load_failed_handler");
  			}
  		};
  		
  	}(SWFUpload.prototype.loadFlash);
  			
  	SWFUpload.prototype.displayDebugInfo = function (oldDisplayDebugInfo) {
  		return function () {
  			if (typeof(oldDisplayDebugInfo) === "function") {
  				oldDisplayDebugInfo.call(this);
  			}
  			
  			this.debug(
  				[
  					"SWFUpload.SWFObject Plugin settings:", "\n",
  					"\t", "minimum_flash_version:                      ", this.settings.minimum_flash_version, "\n",
  					"\t", "swfupload_pre_load_handler assigned:     ", (typeof(this.settings.swfupload_pre_load_handler) === "function").toString(), "\n",
  					"\t", "swfupload_load_failed_handler assigned:     ", (typeof(this.settings.swfupload_load_failed_handler) === "function").toString(), "\n",
  				].join("")
  			);
  		};	
  	}(SWFUpload.prototype.displayDebugInfo);
  }
  
  
  


wkpark      2008/12/24 18:31:58

  Added:       local/SWFUpload/images btn.png
  Log:
  for Flash 10
  
  Revision  Changes    Path
  1.1                  moniwiki/local/SWFUpload/images/btn.png
  
  	<<Binary file>>
  
  


wkpark      2008/12/25 14:51:45

  Added:       plugin   sitemap.php
  Log:
  add a sitemp action by Yeon-Hyeong Yang.
  lastmod field added.
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/sitemap.php
  
  Index: sitemap.php
  ===================================================================
  <?php
  // Copyright (C) 2008 Yeon-Hyeong Yang <lbird94@gmail.com>
  // All rights reserved. Can be distributed under GPL v2.
  // a sitemap plugin for MoniWiki
  //
  // Author: Yeon-Hyeong Yang <lbird94@gmail.com>
  // Date: 2008-12-25
  // Name: Sitemap plugin
  // Description: Sitemap action plugin
  // URL: http://computing.lbird.net/2631012
  // Release: 0.1
  // Version: $Revision: 1.1 $
  // License: GPL v2
  //
  // Imported and modified from do_rss_rc() and macro_TitleIndex()
  // $Id: sitemap.php,v 1.1 2008/12/25 05:51:45 wkpark Exp $
  
  function do_sitemap($formatter,$options) {
      global $DBInfo;
  
      # get page list 
      if ($formater->group) {
  	$group_pages = $DBInfo->getLikePages($formater->group);
  	foreach ($group_pages as $page)
  	    $all_pages[] = str_replace($formatter->group,'',$page);
      } else
  	$all_pages = $DBInfo->getPageLists();
      usort($all_pages, 'strcasecmp');
      $items = ''; // empty string
  
      # process page list
      $zone = '+00:00';
      foreach ($all_pages as $page) {
  	$url = qualifiedUrl($formatter->link_url(_rawurlencode($page)));
          $p = new WikiPage($page);
          $t = $p->mtime();
          $date = gmdate("Y-m-d\TH:i:s",$t).$zone; // W3C datetime format
  
  	$item = "<url>\n";
  	$item.= "  <loc>".$url."</loc>\n";
  	$item.= "  <lastmod>".$date."</lastmod>\n";
  	$item.= "</url>\n";
  	$items.= $item;
      }
  
      # process output
      $out = $items;
      if ($options['oe'] and (strtolower($options['oe']) != $DBInfo->charset)) {
  	$charset = $options['oe'];
  	if (function_exists('iconv')) {
  	    $new=iconv($DBInfo->charset,$charset,$items);
  	    if (!$new) $charset = $DBInfo->charset;
  	    if ($new) $out = $new;
  	}
      } else $charset = $DBInfo->charset;
  
      $head=<<<HEAD
  <?xml version="1.0" encoding="$charset"?>
  <urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9"
           url="http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"
           xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  
  HEAD;
      $foot=<<<FOOT
  </urlset>
  FOOT;
  
      # output
      header("Content-Type: text/xml");
      print $head.$out.$foot;
  }
  
  // vim:et:sts=4:sw=4:
  
  
  


wkpark      2008/12/25 17:36:23

  Modified:    plugin   rcsimport.php
  Log:
  support charset conversion
  
  Revision  Changes    Path
  1.4       +63 -4     moniwiki/plugin/rcsimport.php
  
  Index: rcsimport.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rcsimport.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- rcsimport.php	22 Dec 2008 16:20:04 -0000	1.3
  +++ rcsimport.php	25 Dec 2008 08:36:22 -0000	1.4
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Test]]
   //
  -// $Id: rcsimport.php,v 1.3 2008/12/22 16:20:04 wkpark Exp $
  +// $Id: rcsimport.php,v 1.4 2008/12/25 08:36:22 wkpark Exp $
   
   function do_post_rcsimport($formatter,$options) {
       global $DBInfo;
  @@ -43,9 +43,58 @@
       $version=new $class ($DBInfo);
       header('Content-type:text/plain');
       if (method_exists($version,'import')) {
  -        $content=base64_decode($options['rcsfile']);
  +        $body = $options['rcsfile'];
  +        $meta = array();
  +        while(!empty($body)) {
  +            list($line,$body) = explode("\n",$body,2);
  +            if (!trim($line)) continue;
  +            if (preg_match('/^#(.*)$/',$line,$m)) {
  +                $p = strpos($line,' ');
  +                if ($p !== false) {
  +                    $tag = substr($line,0,$p);
  +                    $val = substr($line,$p+1);
  +                    if (in_array($tag, array('#title','#charset','#encrypt'))) {
  +                        $meta[$tag] = $val;
  +                    }
  +                }
  +            } else {
  +                $body = $line."\n".$body;
  +                break;
  +            }
  +        }
  +        if (isset($meta['#title']) or isset($meta['#charset'])) {
  +            $title = isset($meta['#title']) ? $meta['#title']: $options['page'];
  +            $charset = $meta['#charset'];
  +
  +            $formatter->send_header('',$options);
  +            $formatter->send_title('','',$options);
  +            $COLS_MSIE= 80;
  +            $COLS_OTHER= 85;
  +
  +            $cols= preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']) ? $COLS_MSIE : $COLS_OTHER;
  +
  +            $tmsg = _("Page name");
  +            print <<<FORM
  +<form method='post' action=''>
  +<div>
  +<textarea name='rcsfile' class='' cols='$cols' rows='20'>
  +$body
  +</textarea></div>
  +$tmsg: <input type='text' size='40' name='title' value='$title' /><br />
  +<input type='hidden' name='charset' value='$charset' />
  +<input type='hidden' name='action' value='rcsimport' />
  +FORM;
  +            if ($DBInfo->security->is_protected("rcsimport",$options))
  +                print _("Password"). ": <input type='password' name='passwd' /> ";
  +            print <<<FORM
  +<input type='submit' value='Import RCS' />
  +</form>
  +FORM;
  +            $formatter->send_footer('',$options);
  +            return;
  +        }
  +        $body = base64_decode($body);
   
  -        $body = $content;
           $read = '';
           while(!empty($body)) {
               list($line,$body) = explode("\n",$body,2);
  @@ -57,9 +106,19 @@
               $read.=$line."\n";
           }
           $content= $read.$body;
  +
  +        if (!empty($options['title'])) $options['page'] = $options['title'];
  +        if ($options['charset'] and (strcasecmp($options['charset'],$DBInfo->charset) != 0) and function_exists('iconv')) {
  +            $t = @iconv($options['charset'], $DBInfo->charset, $content);
  +            if (!empty($t))
  +                $content = $t;
  +        }
           $version->import($options['page'],$content);
  +
  +        $options['value'] = $options['page'];
  +        do_goto($formatter, $options);
  +        return;
       }
  -    print 'OK';
   }
   
   // vim:et:sts=4:
  
  
  


wkpark      2008/12/25 18:14:14

  Modified:    plugin   rcsexport.php
  Log:
  rcsexport.php: export pagename/charset info.
  vim.php: vim7.x fix (http://kldp.org/node/101257#comment-470284)
  
  Revision  Changes    Path
  1.2       +9 -5      moniwiki/plugin/rcsexport.php
  
  Index: rcsexport.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rcsexport.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- rcsexport.php	6 Aug 2006 15:58:26 -0000	1.1
  +++ rcsexport.php	25 Dec 2008 09:14:14 -0000	1.2
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Test]]
   //
  -// $Id: rcsexport.php,v 1.1 2006/08/06 15:58:26 wkpark Exp $
  +// $Id: rcsexport.php,v 1.2 2008/12/25 09:14:14 wkpark Exp $
   
   function do_rcsexport($formatter,$options) {
       global $DBInfo;
  @@ -18,10 +18,14 @@
       $class='Version_'.$DBInfo->version_class;
       $version=new $class ($DBInfo);
       header('Content-type:text/plain');
  -    if (method_exists($version,'export'))
  -        print chunk_split(base64_encode($version->export($options['page'])));
  -    else
  -        print 'Not supported';
  +    if (method_exists($version,'export')) {
  +        echo '#title '.$formatter->page->name."\n";
  +        echo '#charset '.strtoupper($DBInfo->charset)."\n";
  +        echo '#encrypt base64'."\n";
  +        echo chunk_split(base64_encode($version->export($options['page'])));
  +    } else {
  +        echo 'Not supported';
  +    }
   }
   
   // vim:et:sts=4:
  
  
  


wkpark      2008/12/25 18:14:14

  Modified:    plugin/processor vim.php
  Log:
  rcsexport.php: export pagename/charset info.
  vim.php: vim7.x fix (http://kldp.org/node/101257#comment-470284)
  
  Revision  Changes    Path
  1.45      +3 -3      moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.44
  retrieving revision 1.45
  diff -u -r1.44 -r1.45
  --- vim.php	24 Dec 2008 09:02:24 -0000	1.44
  +++ vim.php	25 Dec 2008 09:14:14 -0000	1.45
  @@ -9,7 +9,7 @@
   // Name: a VIM syntax colorizer
   // Description: a Syntax colorizing processor using the VIM
   // URL: MoniWiki:VimProcessor
  -// Version: $Revision: 1.44 $
  +// Version: $Revision: 1.45 $
   // License: GPL
   // Usage: {{{#!vim sh|c|sh|.. [number]
   // some codes
  @@ -18,7 +18,7 @@
   // Win32 note:
   //  add $path="/bin;/Program Files/Vim/VimXX"; in the config.php
   //
  -// $Id: vim.php,v 1.44 2008/12/24 09:02:24 wkpark Exp $
  +// $Id: vim.php,v 1.45 2008/12/25 09:14:14 wkpark Exp $
   
   function processor_vim($formatter,$value,$options) {
     global $DBInfo;
  @@ -162,6 +162,7 @@
       $tpos=strpos($out,'</body>');
       $out=substr($out,$fpos+7,$tpos-$fpos-7);
       $out=preg_replace('/^[^>]+>/','',$out);
  +    $out = preg_replace(array("@^<font face[^>]*>\n@","@\n?</font>\n?$@"),array('',''),$out); // vim7.x
     } else {
       $tpos=strpos($out,'</pre>');
       $out=substr($out,$fpos+6,$tpos-$fpos-7);
  @@ -169,7 +170,6 @@
     $stag="<$myspan class='wikiSyntax' id='PRE-$uniq' style='font-family:FixedSys,monospace;color:$fgcolor;background-color:$bgcolor'>\n";
     $etag="</$myspan>\n";
   
  -  $out = preg_replace(array("@^<font face[^>]*>\n@","@\n?</font>\n?$@"),array('',''),$out); // vim7.x
   
     $lines=explode("\n",$out);
     $out = '';
  
  
  


wkpark      2008/12/25 18:15:09

  Modified:    plugin   autogoto.php
  Log:
  man, tpl, google option added :>
  
  Revision  Changes    Path
  1.4       +5 -5      moniwiki/plugin/autogoto.php
  
  Index: autogoto.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/autogoto.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- autogoto.php	24 Dec 2008 08:07:10 -0000	1.3
  +++ autogoto.php	25 Dec 2008 09:15:09 -0000	1.4
  @@ -5,21 +5,21 @@
   //
   // Usage: set $auto_search='AutoGoto'; in the config.php
   //
  -// $Id: autogoto.php,v 1.3 2008/12/24 08:07:10 wkpark Exp $
  +// $Id: autogoto.php,v 1.4 2008/12/25 09:15:09 wkpark Exp $
   
   function do_AutoGoto($formatter,$options) {
       global $DBInfo;
   
       if ($DBInfo->autogoto_options) {
           $opts=explode(',',$DBInfo->autogoto_options);
  +        $supported=array('man'=>'Man','google'=>'Google','macro'=>'Macro','tpl'=>'TPL');
           foreach ($opts as $opt) {
               $opt=trim($opt);
               if ($opt=='man') {
                   $v=explode(' ',trim($formatter->page->name));
  -                if (strtolower($v[0])=='man') {
  -                    $options['url']=
  -                        $formatter->link_url('ManPage',
  -                        "?action=man_get&man=".$v[1]);
  +                if (array_key_exists(strtolower($v[0]),$supported)) {
  +                    $val = urlencode($v[1]);
  +                    $options['value'] = $supported[strtolower($v[0])].':'.$val;
                       do_goto($formatter,$options);
                       return true;
                   }
  
  
  


wkpark      2008/12/25 18:15:41

  Modified:    plugin   SWFUpload.php
  Log:
  print msg for Flash 10
  
  Revision  Changes    Path
  1.15      +3 -2      moniwiki/plugin/SWFUpload.php
  
  Index: SWFUpload.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SWFUpload.php,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- SWFUpload.php	23 Dec 2008 12:33:16 -0000	1.14
  +++ SWFUpload.php	25 Dec 2008 09:15:41 -0000	1.15
  @@ -8,12 +8,12 @@
   // Name: SWF Upload
   // Description: SWF Upload Plugin
   // URL: http://labb.dev.mammon.se/swfupload/ MoniWikiDev:SWFUpload
  -// Version: $Revision: 1.14 $
  +// Version: $Revision: 1.15 $
   // License: GPL
   //
   // Usage: [[SWFUpload]]
   //
  -// $Id: SWFUpload.php,v 1.14 2008/12/23 12:33:16 wkpark Exp $
  +// $Id: SWFUpload.php,v 1.15 2008/12/25 09:15:41 wkpark Exp $
   
   function macro_SWFUpload($formatter,$value,$opts=array()) {
       global $DBInfo;
  @@ -247,6 +247,7 @@
       if (isset($_FILES['Filedata']['tmp_name'])) {
           move_uploaded_file($_FILES['Filedata']['tmp_name'],
               $swfupload_dir.'/'.$mysubdir.$_FILES['Filedata']['name']);
  +        echo "Success";
           return;
       } else if (is_array($options['MYFILES'])) {
           include_once('plugin/UploadFile.php');
  
  
  


wkpark      2008/12/25 18:16:11

  Modified:    .        wikilib.php
  Log:
  mod_rewrite fix
  
  Revision  Changes    Path
  1.255     +3 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.254
  retrieving revision 1.255
  diff -u -r1.254 -r1.255
  --- wikilib.php	22 Dec 2008 13:23:06 -0000	1.254
  +++ wikilib.php	25 Dec 2008 09:16:11 -0000	1.255
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.254 2008/12/22 13:23:06 wkpark Exp $
  +// $Id: wikilib.php,v 1.255 2008/12/25 09:16:11 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -38,7 +38,8 @@
     // set 'cgi.fix_pathinfo=1' in the php.ini under
     // apache 2.0.x + php4.2.x Win32
     // check mod_rewrite
  -  if (strpos($_SERVER['REQUEST_URI'],$_SERVER['SCRIPT_NAME'])===false) {
  +  if (isset($_SERVER['REDIRECT_URL']) and
  +      strpos($_SERVER['REQUEST_URI'],$_SERVER['SCRIPT_NAME'])===false) {
       return preg_replace('@/[^/]+\.php@','',$_SERVER['SCRIPT_NAME']);
     }
     return $_SERVER['SCRIPT_NAME'];
  
  
  


wkpark      2008/12/26 13:52:52

  Modified:    .        wiki.php
  Log:
  wiki.php: fixed get_options(), fixed send_title() for $msgtitle
  man_get.php: fixed $msgtitle.
  
  Revision  Changes    Path
  1.437     +13 -4     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.436
  retrieving revision 1.437
  diff -u -r1.436 -r1.437
  --- wiki.php	24 Dec 2008 08:01:27 -0000	1.436
  +++ wiki.php	26 Dec 2008 04:52:51 -0000	1.437
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.436 2008/12/24 08:01:27 wkpark Exp $
  +// $Id: wiki.php,v 1.437 2008/12/26 04:52:51 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.436 $',1,-1);
  +$_revision = substr('$Revision: 1.437 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -4445,7 +4445,11 @@
         foreach ($this->actions as $action) {
           if (strpos($action,' ')) {
             list($act,$text)=explode(' ',$action,2);
  -          $menu[]= $this->link_to($act,_($text));
  +          if ($options['page'] == $this->page->name) {
  +            $menu[]= $this->link_to($act,_($text));
  +          } else {
  +            $menu[]= $this->link_tag($options['page'],$act,_($text));
  +          }
           } else {
             $menu[]= $this->link_to("?action=$action",_($action));
           }
  @@ -4553,7 +4557,12 @@
       }
   
       $title=htmlspecialchars($this->pi['#title']);
  -    $msgtitle=htmlspecialchars($msgtitle);
  +    if (!empty($msgtitle)) {
  +      $msgtitle = htmlspecialchars($msgtitle);
  +    } else if (isset($options['msgtitle'])) {
  +      $msgtitle = $options['msgtitle'];
  +    }
  +
       if (!$msgtitle) $msgtitle=$options['title'];
       if (!$title) {
         if ($group) { # for UserNameSpace
  
  
  


wkpark      2008/12/26 13:52:52

  Modified:    plugin   man_get.php
  Log:
  wiki.php: fixed get_options(), fixed send_title() for $msgtitle
  man_get.php: fixed $msgtitle.
  
  Revision  Changes    Path
  1.9       +10 -5     moniwiki/plugin/man_get.php
  
  Index: man_get.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/man_get.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- man_get.php	10 Apr 2008 09:36:16 -0000	1.8
  +++ man_get.php	26 Dec 2008 04:52:52 -0000	1.9
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a man_get action plugin for the MoniWiki
   //
  -// $Id: man_get.php,v 1.8 2008/04/10 09:36:16 wkpark Exp $
  +// $Id: man_get.php,v 1.9 2008/12/26 04:52:52 wkpark Exp $
   // vim:et:sts=2:sw=2
   
   function do_man_get($formatter,$options) {
  @@ -78,12 +78,17 @@
           if ($m[1] != 'man') $lang=$m[1];
           $myman=$m[2];
           $mysec=$m[3];
  -        if ($lang) $lang='&amp;lang='.$lang;
  +        $tag='';
  +        if ($lang) {
  +            $tag = ($lang == 'ko') ? '('.$lang.')':'';
  +            $lang='&amp;lang='.$lang;
  +        }
           $lnk[]=$formatter->link_tag('ManPage/'.$myman.'.'.$mysec,
  -            '?action=man_get&amp;man='.$myman.'&amp;sec='.$mysec.$lang);
  +            '?action=man_get&amp;man='.$myman.'&amp;sec='.$mysec.$lang,$myman.'.'.$mysec).$tag;
         }
       }
  -    $options['msg']=implode(', ',$lnk);
  +    if (sizeof($lnk) > 0)
  +        $options['msgtitle'] = implode(', ',$lnk);
     }
     if ($DBInfo->man_charset and
       $DBInfo->man_charset != $DBInfo->charset) {
  @@ -112,7 +117,7 @@
       if ($options['sec']) $extra='&amp;sec='.$options['sec'];
       if ($options['lang']) $extra='&amp;lang='.$options['lang'];
       $formatter->actions[]='?action=man_get&man='.$options['man'].
  -        $extra.'&amp;edit=1 '._("Edit");
  +        $extra.'&amp;edit=1 '._("Edit man page");
     }
     $formatter->send_footer('',$options);
     return;
  
  
  


wkpark      2008/12/26 14:43:34

  Modified:    plugin   man_get.php
  Log:
  SimpleReFilter added.
  adopt simpleReFilter to man_get() action
  
  Revision  Changes    Path
  1.10      +3 -1      moniwiki/plugin/man_get.php
  
  Index: man_get.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/man_get.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- man_get.php	26 Dec 2008 04:52:52 -0000	1.9
  +++ man_get.php	26 Dec 2008 05:43:34 -0000	1.10
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a man_get action plugin for the MoniWiki
   //
  -// $Id: man_get.php,v 1.9 2008/12/26 04:52:52 wkpark Exp $
  +// $Id: man_get.php,v 1.10 2008/12/26 05:43:34 wkpark Exp $
   // vim:et:sts=2:sw=2
   
   function do_man_get($formatter,$options) {
  @@ -97,6 +97,8 @@
         $raw=iconv($DBInfo->man_charset,$DBInfo->charset.$ignore,$raw);
       }
     }
  +  if ($DBInfo->man_filter)
  +    $raw = $formatter->filter_repl('simplere',$raw,array('page'=>$DBInfo->man_filter) );
     $options['savetext']=$raw;
   
     if ($options['edit']) {
  
  
  


wkpark      2008/12/26 14:43:35

  Added:       plugin/filter simplere.php
  Log:
  SimpleReFilter added.
  adopt simpleReFilter to man_get() action
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/filter/simplere.php
  
  Index: simplere.php
  ===================================================================
  <?php
  // Copyright 2008 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a simple regex filter plugin for the MoniWiki
  //
  // Author: Won-Kyu Park <wkpark@kldp.org>
  // Date: 2008-12-26
  // Name: a simple regex filter plugin
  // Description: a simple regex filter plugin
  // URL: MoniWiki:SimpleReFilter
  // Version: $Revision: 1.1 $
  // License: GPL
  //
  // $Id: simplere.php,v 1.1 2008/12/26 05:43:35 wkpark Exp $
  
  function filter_simplere($formatter,$value,$options) {
      global $DBInfo;
  
      if (!empty($options['page']) and $DBInfo->hasPage($options['page'])) {
          $p = $DBInfo->getPage($options['page']);
          $raw = $p->get_raw_body();
          $lines = explode("\n",$raw);
          $rule = array();
          $repl = array();
          foreach ($lines as $line) {
              $line=trim($line);
              if ($line{0}=='#' or $line=='') continue;
              if (preg_match('/^([\/@])([^\\1]+)\\1([^\\1]+)\\1$/',$line,$match)) {
                  $rule[] = $match[1].$match[2].$match[1];
                  $repl[] = $match[3];
              }
          }
          $filter = new SimpleReFilter($rule,$repl);
          return $filter->process($value);
      }
  
      return $value;
  }
  
  class SimpleReFilter {
      var $rule = array();
      var $repl = array();
  
      function SimpleReFilter($rule, $repl) {
          $this->rule = $rule;
          $this->repl = $repl;
      }
  
      function process($text) {
          return preg_replace($this->rule, $this->repl, $text);
      }
  }
  
  // vim:et:sts=4:sw=4:
  ?>
  
  
  


wkpark      2008/12/26 14:53:41

  Modified:    plugin   userform.php
  Log:
  oops! fixed patch position.
  
  Revision  Changes    Path
  1.28      +8 -8      moniwiki/plugin/userform.php
  
  Index: userform.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/userform.php,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- userform.php	16 Dec 2008 14:19:37 -0000	1.27
  +++ userform.php	26 Dec 2008 05:53:40 -0000	1.28
  @@ -4,7 +4,7 @@
   // a userform action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: userform.php,v 1.27 2008/12/16 14:19:37 wkpark Exp $
  +// $Id: userform.php,v 1.28 2008/12/26 05:53:40 wkpark Exp $
   
   function do_userform($formatter,$options) {
     global $DBInfo;
  @@ -359,13 +359,6 @@
       include_once('lib/openid.php');      
       session_start();
   
  -    if ( !preg_match ('/utf-?8/i', $DBInfo->charset) ) {
  -      $options['openid_sreg_nickname'] =
  -        iconv ('utf-8', $DBInfo->charset, $options['openid_sreg_nickname']);
  -      $options['openid_sreg_fullname'] =
  -        iconv ('utf-8', $DBInfo->charset, $options['openid_sreg_fullname']);
  -    }
  -
       $process_url = qualifiedUrl($formatter->link_url("UserPreferences", "?action=userform"));
       $trust_root = qualifiedUrl($formatter->link_url(""));
   
  @@ -389,6 +382,13 @@
       include_once('lib/openid.php');      
       session_start();
   
  +    if ( !preg_match ('/utf-?8/i', $DBInfo->charset) ) {
  +      $options['openid_sreg_nickname'] =
  +        iconv ('utf-8', $DBInfo->charset, $options['openid_sreg_nickname']);
  +      $options['openid_sreg_fullname'] =
  +        iconv ('utf-8', $DBInfo->charset, $options['openid_sreg_fullname']);
  +    }
  +
       $openid = new SimpleOpenID;
   	  $openid->SetIdentity($options['openid_identity']);
   	  $openid_validation_result = $openid->ValidateWithServer();
  
  
  


wkpark      2008/12/26 19:37:21

  Modified:    .        wiki.php
  Log:
  fixed submenu behavior. show main submenu conditionally. $submenu, $submain can be used in a theme.
  option $submenu_showmain added.
  
  Revision  Changes    Path
  1.438     +16 -8     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.437
  retrieving revision 1.438
  diff -u -r1.437 -r1.438
  --- wiki.php	26 Dec 2008 04:52:51 -0000	1.437
  +++ wiki.php	26 Dec 2008 10:37:21 -0000	1.438
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.437 2008/12/26 04:52:51 wkpark Exp $
  +// $Id: wiki.php,v 1.438 2008/12/26 10:37:21 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.437 $',1,-1);
  +$_revision = substr('$Revision: 1.438 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -4675,16 +4675,24 @@
             }
           }
   
  -        #print_r($smenu);
   
  +        # make $submenu, $submain
           $cmenu=null;
  -        if ($smenu[$this->page->name]) {
  +        if (isset($smenu[$this->page->name])) {
             $cmenu=&$smenu[$this->page->name];
  -        } else if ($smenu['Main']) {
  -          $cmenu=&$smenu['Main'];
           }
   
  -        if ($cmenu) {
  +        $submain='';
  +        if (isset($smenu['Main'])) {
  +          $submenus=array();
  +          foreach ($smenu['Main'] as $item) {
  +            $submenus[]=$this->link_repl($item);
  +          }
  +          $submain='<ul><li>'.implode("</li><li>",$submenus)."</li></ul>\n";
  +        }
  +
  +        $submenu='';
  +        if ($cmenu and ($cmenu != 'Main' or !empty($DBInfo->submenu_showmain))) {
             if (is_array($cmenu)) {
               $smenua=$cmenu;
             } else {
  @@ -4696,7 +4704,7 @@
               $submenus[]=$this->link_repl($item);
             }
             #print_r($submenus);
  -          $submenu='<div id="subMenu"><ul><li>'.implode("</li><li>",$submenus)."</li></ul></div>\n";
  +          $submenu='<ul><li>'.implode("</li><li>",$submenus)."</li></ul>\n";
             # set current attribute.
             $submenu=preg_replace("/(li)>(<a\s[^>]+current[^>]+)/",
               "$1 class='current'>$2",$submenu);
  
  
  


wkpark      2008/12/26 19:38:56

  Modified:    plugin/processor monimarkup.php
  Log:
  revert smiley_repl() fix.
  smiley regardes as postfilter and it must be called after all rendering finished.
  
  Revision  Changes    Path
  1.17      +6 -10     moniwiki/plugin/processor/monimarkup.php
  
  Index: monimarkup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/monimarkup.php,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- monimarkup.php	23 Dec 2008 13:52:08 -0000	1.16
  +++ monimarkup.php	26 Dec 2008 10:38:56 -0000	1.17
  @@ -3,12 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a moniwiki formatting processor for the MoniWiki
   //
  -// $Id: monimarkup.php,v 1.16 2008/12/23 13:52:08 wkpark Exp $
  +// $Id: monimarkup.php,v 1.17 2008/12/26 10:38:56 wkpark Exp $
   /**
    * @date    2006-08-09
    * @name    Moniwiki Processor
    * @desc    Moniwiki default processor
  - * @version $Revision: 1.16 $
  + * @version $Revision: 1.17 $
    * @depend  1.1.3
    * @license GPL
    */
  @@ -456,10 +456,6 @@
                   $val= preg_replace($formatter->baserule,
                       $formatter->baserepl,$val);
   
  -                if (!empty($formatter->smiley_rule))
  -                    $val=preg_replace($formatter->smiley_rule,
  -                        $formatter->smiley_repl,$val);
  -
                   if ($_li>0 and $c['tag']!='LIST')
                       while($_li>0 and $_lidep[$_li] > 0) {
                           $out.=$this->_li(0,$_lityp[$_li]);
  @@ -580,10 +576,6 @@
               } else {
                   $c= preg_replace($formatter->baserule,$formatter->baserepl,$c);
   
  -                if (!empty($formatter->smiley_rule))
  -                    $c=preg_replace($formatter->smiley_rule,
  -                        $formatter->smiley_repl,$c);
  -
                   if (strpos($c,'||')!== false) {
                       $c=$this->_parseTable($c);
                   }
  @@ -633,6 +625,10 @@
           }
           if ($formatter->sect_num >1) $out.=$this->_div(0);
   
  +        if (!empty($formatter->smiley_rule))
  +            $out=preg_replace($formatter->smiley_rule,
  +                 $formatter->smiley_repl,$out);
  +
           $out=preg_replace("/\007(\d+)\007/e",
               "\$formatter->processor_repl(\$btype[$1],\$block[$1])",$out);
           $out=preg_replace("/\035(\d+)\035/e", 
  
  
  


wkpark      2008/12/26 19:56:35

  Modified:    plugin/processor man.php
  Log:
  support groff. but it is not work with UTF-8 charset :(
  
  Revision  Changes    Path
  1.6       +8 -4      moniwiki/plugin/processor/man.php
  
  Index: man.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/man.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- man.php	7 Jul 2006 13:53:07 -0000	1.5
  +++ man.php	26 Dec 2008 10:56:35 -0000	1.6
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a man processor plugin for the MoniWiki
   //
  -// $Id: man.php,v 1.5 2006/07/07 13:53:07 wkpark Exp $
  +// $Id: man.php,v 1.6 2008/12/26 10:56:35 wkpark Exp $
   
   function processor_man($formatter,$value="") {
     global $DBInfo;
  @@ -20,7 +20,10 @@
     fwrite($fp, $value);
     fclose($fp);
   
  -  $man2html= "man2html $tmpf";
  +  if (!empty($DBInfo->man_man2html) and $DBInfo->man_man2html == 'groff')
  +    $man2html= "groff -Thtml -mman $tmpf";
  +  else
  +    $man2html= "man2html $tmpf";
     $html='';
     $fp=popen($man2html.$formatter->NULL,'r');
     while($s = fgets($fp, 1024)) $html.= $s;
  @@ -28,8 +31,9 @@
     pclose($fp);
     unlink($tmpf);
   
  -  $html=str_replace('Content-type: text/html','',$html);
  -  $html=preg_replace('/<HTML>|<\/HTML>|<HEAD>|<\/HEAD>|<BODY>|<\/BODY>|<TITLE>.*<\/TITLE>/','',$html);
  +  $html=preg_replace('@^Content-type: text/html@','',$html);
  +  $html=preg_replace('/<\/?META[^>]*>|<\/?HTML>|<\/?HEAD>|<\/?BODY>|<TITLE>[^>]+<\/TITLE>/i','',$html);
  +
     $html=preg_replace('/http:\/\/localhost\/cgi\-bin\/man\/man2html\?.\+/',
                   '?action=man_get&man=',$html);
     $html=preg_replace('/http:\/\/localhost\/cgi\-bin\/man\/man2html/',
  
  
  


wkpark      2008/12/26 20:55:44

  Modified:    .        config.php.default
  Log:
  update
  
  Revision  Changes    Path
  1.50      +14 -12    moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.49
  retrieving revision 1.50
  diff -u -r1.49 -r1.50
  --- config.php.default	24 Dec 2008 09:18:23 -0000	1.49
  +++ config.php.default	26 Dec 2008 11:55:44 -0000	1.50
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.49 2008/12/24 09:18:23 wkpark Exp $
  +# $Id: config.php.default,v 1.50 2008/12/26 11:55:44 wkpark Exp $
   #
   $sitename='UnnamedWiki'; # site name
   $data_dir= './data';
  @@ -83,17 +83,18 @@
   #$date_fmt_blog='Y-m-d';
   
   #$sistermap=$data_dir.'/sistermap.txt';
  -#$metatags='
  -#<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" />
  -#';
  +$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;
   
   # set global javascripts
   #$js=<<<EOF
  @@ -265,6 +266,7 @@
   #$use_openid=0; # enable openid login
   #$check_openid_url=0; # selectivly show openid icons: experimental
   #$use_autosave=1; # enable autosave feature.
  +#$delayindex=60*60*24*5 # delayed indexing
   #$use_bbs=0;
   $robots='googlebot|yahoo'; # set robots
   #$security_class_robot='robot';
  
  
  


wkpark      2008/12/26 20:55:44

  Modified:    config   bbs.default.php.sample
  Log:
  update
  
  Revision  Changes    Path
  1.2       +1 -0      moniwiki/config/bbs.default.php.sample
  
  Index: bbs.default.php.sample
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config/bbs.default.php.sample,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- bbs.default.php.sample	29 Mar 2008 06:45:41 -0000	1.1
  +++ bbs.default.php.sample	26 Dec 2008 11:55:44 -0000	1.2
  @@ -3,5 +3,6 @@
   $umask=022;
   $use_counter=1;
   $use_comment=1;
  +$use_attach=0; # check attachments
   
   ?>
  
  
  


wkpark      2008/12/26 21:48:45

  Modified:    .        monisetup.php
  Log:
  use fsockopen().
  check ErrorDocument directive in the imgs/.htaccess
  
  Revision  Changes    Path
  1.38      +114 -55   moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- monisetup.php	24 Dec 2008 09:09:44 -0000	1.37
  +++ monisetup.php	26 Dec 2008 12:48:45 -0000	1.38
  @@ -1,7 +1,7 @@
   <?php
   // Copyright 2003-2007 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.37 2008/12/24 09:09:44 wkpark Exp $
  +// $Id: monisetup.php,v 1.38 2008/12/26 12:48:45 wkpark Exp $
   
   function _stripslashes($str) {
     return get_magic_quotes_gpc() ? stripslashes($str):$str;
  @@ -24,11 +24,10 @@
   
       $hostconfig=$this->_getHostConfig();
       $this->rawconfig=array_merge($this->_rawConfig("config.php.default"),$hostconfig);
  -    while (list($key,$val)=each($this->rawconfig)) {
  +    while (list($key,$val)=each($hostconfig)) {
         eval("\$$key=$val;");
         eval("\$this->config[\$key]=$val;");
       }
  -
     }
     function _getHostConfig() {
       print '<div class="check">';
  @@ -203,6 +202,7 @@
       while (list($key,$val) = each($config)) {
         if ($key=='admin_passwd' or $key=='purge_passwd')
            $val="'".crypt($val,md5(time()))."'";
  +      $val = str_replace('&lt;','<',$val);
         if (preg_match("/^<{3}([A-Za-z0-9]+)\s.*\\1\s*$/s",$val,$m)) {
            $save_val=$val;
            $val=str_replace("$m[1]",'',substr($val,3));
  @@ -288,14 +288,13 @@
                "<font color='green'>$</font> chmod a+w $config[$file]\n</pre>\n";
          }
       }
  -    if (is_dir('imgs') and !file_exists('imgs/.htaccess')) {
  -      $fp=fopen('imgs_htaccess','w');
  -      fwrite($fp,'ErrorDocument 404 '.$config['url_prefix'].'/imgs/moni/inter.png'."\n");
  -      fclose($fp);
  -    }
   
       $writables=array("upload_dir",'cache_public_dir',"editlog_name");
   
  +    $port= ($_SERVER['SERVER_PORT'] != 80) ? $_SERVER['SERVER_PORT']:80;
  +    $path = preg_replace('/monisetup\.php/','',$_SERVER['SCRIPT_NAME']);
  +    $host = $_SERVER['HTTP_HOST'];
  +
       print '<div class="check">';
       foreach($writables as $file) {
         if (empty($config[$file])) continue;
  @@ -328,22 +327,22 @@
       }
       if (is_dir($config['upload_dir'])) {
         $chk=array(
  -        'AddType'=>"AddType text/plain .sh .cgi .pl .py .php .php3 .php4 .phtml .html\n",
  -        'ForceType'=>"<Files ~ '\.(php.?|pl|py|cgi)$'>\nForceType text/plain\n</Files>\n",
  -        'php_value'=>"php_value engine off\n",
  -        'NoExecCGI'=>"#Options NoExecCGI\n",
  -      );
  +          'AddType'=>"AddType text/plain .sh .cgi .pl .py .php .php3 .php4 .phtml .html\n",
  +          'ForceType'=>"<Files ~ '\.(php.?|pl|py|cgi)$'>\nForceType text/plain\n</Files>\n",
  +          'php_value'=>"AddType text/plain .php\nphp_value engine off\n",
  +          'NoExecCGI'=>"#Options NoExecCGI\n",
  +          );
  +      $re = array(
  +          '@^HTTP/1.1\s+\d+\s+OK$@'=>1, //
  +          '@^HTTP/1.1\s+500\s+@'=>-1, // Fail
  +          '@^Content-Type: text/plain@'=> 2, // OK
  +          '@^Content-Type: text/html@'=> 0, // BAD
  +          );
  +
         if (file_exists($config['upload_dir'].'/.htaccess')) {
           print '<h3>'.sprintf(_t("If you want to check .htaccess file please delete '%s' file and reload it."),
  -          $config['upload_dir'].'/.htaccess').'</h3>';
  -      } else if (ini_get('allow_url_fopen')) {
  -        $port= ($_SERVER['SERVER_PORT'] != 80) ? ':'.$_SERVER['SERVER_PORT']:'';
  -        $proto= 'http';
  -        if (!empty($_SERVER['HTTPS'])) $proto= 'https';
  -        else $proto= strtolower(strtok($_SERVER['SERVER_PROTOCOL'],'/'));
  -        $url = preg_replace('/monisetup\.php/','',$_SERVER['SCRIPT_NAME']);
  -        $path = $proto.'://'.$_SERVER['HTTP_HOST'].$port.$url;
  -
  +            $config['upload_dir'].'/.htaccess').'</h3>';
  +      } else {
           print '<h3>'._t("Security check for 'upload_dir'.").'</h3>';
   
           $fp = fopen('pds/test.php','w');
  @@ -352,47 +351,38 @@
             fclose($fp);
           }
   
  -        echo "<ul>";
  -        foreach ($chk as $c=>$v) {
  -          $fp = fopen('pds/.htaccess','w');
  -          if (is_resource($fp)) {
  -            fwrite($fp,preg_replace('/^#/','',$v));
  -            fclose($fp);
  +        $work = check_htaccess($chk, $re, $host, $port,
  +          $path.'/'.$config['upload_dir'].'/test.php',
  +          $config['upload_dir']);
   
  -            $fp=@fopen($path.'/pds/test.php','r');
  -            if ($fp) {
  -              $out='';
  -              while(!feof($fp)) {
  -                $out.=fgets($fp,1024);
  -              }
  -              fclose($fp);
  -              if ($out{0} == '<') {
  -                print "<li>$c => <span style='color:blue'>Good</span></li>\n";
  -              } else {
  -                print "<li>$c => <span style='color:red'>BAD</span></li>\n";
  -              }
  -              $work[$c]=$v;
  -            } else {
  -              print "<li>$c => "._t("Fail")."</li>";
  -            }
  -          } else {
  -            print "<li>"._t("Unable to write .htaccess")."</li>";
  -            break;
  -          }
  -        }
  -        echo "</ul>";
           $fp = fopen('pds_htaccess','w');
           if (is_resource($fp)) {
             fwrite($fp,implode('',$work));
             fclose($fp);
           }
           @unlink('pds/test.php');
  -        @unlink('pds/.htaccess');
  -      } else {
  -        print '<h3>'._t("Unable to 'url_fopen'! Please check .htaccess file manually.").'</h3>';
  -        $fp = fopen('pds_htaccess','w');
  +      }
  +      # 
  +      $chk2=array(
  +          'ErrorDocument'=>
  +            "#ErrorDocument 404 ".$config['url_prefix'].'/imgs/moni/inter.png'."\n",
  +          );
  +      $re = array(
  +          '@^HTTP/1.1\s+\d+\s+OK$@'=>1, //
  +          '@^HTTP/1.1\s+500\s+@'=>-1, // Fail
  +          '@^HTTP/1.1\s+404\s+@'=>2, // OK
  +          '@^Content-Type: text/png@'=> 2, // OK
  +          );
  +      if (is_dir('imgs') and
  +          !file_exists($config['upload_dir'].'/.htaccess')) {
  +        print '<h3>'._t(".htaccess for 'imgs_dir'.").'</h3>';
  +        $work = check_htaccess($chk2, $re, $host, $port,
  +          $path.'/'.$config['upload_dir'].'/nonexists.png',
  +          $config['upload_dir']);
  +
  +        $fp=fopen('imgs_htaccess','w');
           if (is_resource($fp)) {
  -          fwrite($fp,implode('',$chk));
  +          fwrite($fp,implode('',$work));
             fclose($fp);
           }
         }
  @@ -401,6 +391,75 @@
     }
   }
   
  +function check_htaccess($chk, $re, $host, $port, $path, $dir) {
  +  $work = array();
  +
  +  echo "<ul>";
  +  foreach ($chk as $c=>$v) {
  +    $fp = fopen($dir.'/.htaccess','w');
  +    if (is_resource($fp)) {
  +      fwrite($fp,preg_replace('/^#/','',$v));
  +      fclose($fp);
  +
  +      $fp=@fopen($url,'r');
  +      $fp = fsockopen($host, $port, $errno, $errstr, 30);
  +
  +      if (is_resource($fp)) {
  +        $send = "GET $path HTTP/1.1\r\n";
  +        $send.= "Host: $host\r\n";
  +        $send.= "Connection: Close\r\n\r\n";
  +        fwrite($fp, $send);
  +
  +        $out='';
  +        $ok = false;
  +        while(!feof($fp)) {
  +          $line = fgets($fp,1024);
  +          $line = rtrim($line);
  +        
  +          foreach ($re as $kk=>$vv) {
  +            if ($vv > 0 and preg_match($kk,$line)) {
  +              $ok = $vv;
  +              $out .= $line."\n";
  +              if ($vv == 1) continue;
  +              if ($vv == 2) break 2;
  +            } else if ($vv <= 0 and preg_match($kk,$line)) {
  +              $ok = $vv;
  +              $out .= $line."\n";
  +              if ($vv == 0) continue;
  +              if ($vv == -1) break 2;
  +              break;
  +            }
  +          }
  +        }
  +        fclose($fp);
  +
  +        print "<pre>".$out."</pre>";
  +        if ($ok > 0) {
  +          print "<li>$c => <span style='color:blue'>Good</span></li>\n";
  +          $v = preg_replace('/^#/','',$v);
  +        } else if ($ok == 0) {
  +          print "<li>$c => <span style='color:red'>BAD</span></li>\n";
  +        } else {
  +          print "<li>$c => <span style='color:red'>Fail</span></li>\n";
  +          $v = preg_replace('/^## /','',$v);
  +        }
  +        $work[$c]=$v;
  +      } else {
  +        echo "<li>$c => "._t("Fail")."<br />\n";
  +        echo "$errstr ($errno)<br />\n";
  +        echo "</li>";
  +        $work[$c]='## '.$v;
  +      }
  +    } else {
  +      print "<li>"._t("Unable to write .htaccess")."</li>";
  +      break;
  +    }
  +  }
  +  @unlink($dir.'/.htaccess');
  +  echo "</ul>";
  +  return $work;
  +}
  +
   function keyToPagename($key) {
   #  return preg_replace("/_([a-f0-9]{2})/e","chr(hexdec('\\1'))",$key);
     $pagename=preg_replace("/_([a-f0-9]{2})/","%\\1",$key);
  
  
  


wkpark      2008/12/26 21:51:34

  Modified:    .        monisetup.php
  Log:
  fixed win32 vim path
  
  Revision  Changes    Path
  1.39      +2 -2      moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- monisetup.php	26 Dec 2008 12:48:45 -0000	1.38
  +++ monisetup.php	26 Dec 2008 12:51:34 -0000	1.39
  @@ -1,7 +1,7 @@
   <?php
   // Copyright 2003-2007 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.38 2008/12/26 12:48:45 wkpark Exp $
  +// $Id: monisetup.php,v 1.39 2008/12/26 12:51:34 wkpark Exp $
   
   function _stripslashes($str) {
     return get_magic_quotes_gpc() ? stripslashes($str):$str;
  @@ -86,7 +86,7 @@
         // http://kldp.net/forum/message.php?msg_id=7675
         // http://bugs.php.net/bug.php?id=22418
         //$config['version_class']="'RcsLite'";
  -      $config['path']="./bin;c:/program files/vim/vimXX'";
  +      $config['path']="'./bin;c:/program files/vim/vimXX'";
       }
   
       if (!file_exists('wikilib.php')) {
  
  
  


wkpark      2008/12/26 22:37:04

  Modified:    .        wiki.php
  Log:
  check file_exists(alias_page)
  
  Revision  Changes    Path
  1.439     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.438
  retrieving revision 1.439
  diff -u -r1.438 -r1.439
  --- wiki.php	26 Dec 2008 10:37:21 -0000	1.438
  +++ wiki.php	26 Dec 2008 13:37:04 -0000	1.439
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.438 2008/12/26 10:37:21 wkpark Exp $
  +// $Id: wiki.php,v 1.439 2008/12/26 13:37:04 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.438 $',1,-1);
  +$_revision = substr('$Revision: 1.439 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -804,7 +804,7 @@
   
       $this->interwiki=null;
   
  -    if ($this->use_alias)
  +    if (file_exists($this->use_alias))
         $this->alias=new MetaDB_text($this->aliaspage);
       else
         $this->alias=new MetaDB();
  
  
  


wkpark      2008/12/27 01:51:28

  Modified:    plugin   MathChooser.php
  Log:
  vim: do not use document.write()
  MathChooser: return false; to avoid of change of focusing.
  
  Revision  Changes    Path
  1.5       +3 -3      moniwiki/plugin/MathChooser.php
  
  Index: MathChooser.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/MathChooser.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- MathChooser.php	4 Dec 2008 05:08:26 -0000	1.4
  +++ MathChooser.php	26 Dec 2008 16:51:28 -0000	1.5
  @@ -8,12 +8,12 @@
   // Name: MathChooser
   // Description: Latex symbol selector
   // URL: MoniWiki/MathChooserPlugin
  -// Version: $Revision: 1.4 $
  +// Version: $Revision: 1.5 $
   // License: GPL
   //
   // Usage: [[MathChooser]]
   //
  -// $Id: MathChooser.php,v 1.4 2008/12/04 05:08:26 wkpark Exp $
  +// $Id: MathChooser.php,v 1.5 2008/12/26 16:51:28 wkpark Exp $
   
   function macro_MathChooser($formatter,$value) {
       global $DBInfo;
  @@ -138,7 +138,7 @@
             $tex=trim($tmp[$i-1]);
             $mouseover=' onmouseover="showBig(this,event)" ';
             $out.= "<li><a href='#' $mouseover title='$tex' ".
  -            " onclick=\"insertTags('$ ',' $','".str_replace('\\','\\\\',$tex)."',2)\">".
  +            " onclick=\"return insertTags('$ ',' $','".str_replace('\\','\\\\',$tex)."',2)\">".
               "<div style='background:url($toolurl);width:{$w}px;height:{$height}px;background-position:-{$x}px 0px;'></div></a></li>\n";
           }
           $out.="\n</ul></div>\n";
  
  
  


wkpark      2008/12/27 01:51:28

  Modified:    plugin/processor vim.php
  Log:
  vim: do not use document.write()
  MathChooser: return false; to avoid of change of focusing.
  
  Revision  Changes    Path
  1.46      +8 -9      moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.45
  retrieving revision 1.46
  diff -u -r1.45 -r1.46
  --- vim.php	25 Dec 2008 09:14:14 -0000	1.45
  +++ vim.php	26 Dec 2008 16:51:28 -0000	1.46
  @@ -9,7 +9,7 @@
   // Name: a VIM syntax colorizer
   // Description: a Syntax colorizing processor using the VIM
   // URL: MoniWiki:VimProcessor
  -// Version: $Revision: 1.45 $
  +// Version: $Revision: 1.46 $
   // License: GPL
   // Usage: {{{#!vim sh|c|sh|.. [number]
   // some codes
  @@ -18,7 +18,7 @@
   // Win32 note:
   //  add $path="/bin;/Program Files/Vim/VimXX"; in the config.php
   //
  -// $Id: vim.php,v 1.45 2008/12/25 09:14:14 wkpark Exp $
  +// $Id: vim.php,v 1.46 2008/12/26 16:51:28 wkpark Exp $
   
   function processor_vim($formatter,$value,$options) {
     global $DBInfo;
  @@ -72,12 +72,11 @@
   
     $script='';
     if ($DBInfo->use_numbering and empty($formatter->no_js)) {
  -    $button=_("Toggle line numbers");
  -    if (!$jsloaded) 
  -      $script='<script type="text/javascript" src="'.$DBInfo->url_prefix.'/local/numbering.js"></script>';
  -    $script.="<script type=\"text/javascript\">
  +    $formatter->register_javascripts('numbering.js');
  +
  +    $script="<script type=\"text/javascript\">
   /*<![CDATA[*/
  -document.write('<a href=\"#\" onclick=\"return togglenumber(\'PRE-$uniq\', 1, 1);\" class=\"codenumbers\">$button</a>');
  +addtogglebutton('PRE-$uniq');
   /*]]>*/
   </script>";
     }
  @@ -93,7 +92,7 @@
       $fp=fopen($html,"r");
       while (!feof($fp)) $out .= fread($fp, 1024);
       @fclose($fp);
  -    return '<div>'.$script.$out.'</div>';
  +    return '<div>'.$out.$script.'</div>';
     }
   
     if (!empty($DBInfo->vim_nocheck) and !in_array($type,$syntax)) {
  @@ -188,7 +187,7 @@
     $fp=fopen($html,"w");
     fwrite($fp,$stag.$out.$etag);
     fclose($fp);
  -  return $log.'<div>'.$script.$stag.$out.$etag.'</div>';
  +  return $log.'<div>'.$stag.$out.$etag.$script.'</div>';
   }
   
   // vim:et:sts=2:
  
  
  


wkpark      2008/12/27 01:55:02

  Modified:    .        wikilib.php
  Log:
  $wikiwyg_confirm added. do not confirm to continue edit or not. (suggested by pyj200)
  accesskey added for save action: ctrl-Enter / accesskey=x for save action. (suggested by pyj200)
  http://kldp.net/forum/message.php?msg_id=66854
  
  Revision  Changes    Path
  1.256     +6 -4      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.255
  retrieving revision 1.256
  diff -u -r1.255 -r1.256
  --- wikilib.php	25 Dec 2008 09:16:11 -0000	1.255
  +++ wikilib.php	26 Dec 2008 16:55:02 -0000	1.256
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.255 2008/12/25 09:16:11 wkpark Exp $
  +// $Id: wikilib.php,v 1.256 2008/12/26 16:55:02 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -912,10 +912,12 @@
         'value="'._("Preview").'" />';
       if ($preview)
         $skip_preview= ' '.$formatter->link_to('#preview',_("Skip to preview"));
  -    if ($DBInfo->use_wikiwyg) {
  +    if (!empty($DBInfo->use_wikiwyg)) {
  +      $confirm = 'null';
  +      if (!empty($DBInfo->wikiwyg_confirm)) $confirm = 'false';
         $wysiwyg_msg=_("GUI");
         $wysiwyg_btn.='&nbsp;<input type="button" tabindex="7" value="'.$wysiwyg_msg.
  -        '" onclick="javascript:sectionEdit(null,null,null)" />';
  +        '" onclick="javascript:sectionEdit(null,'.$confirm .',null)" />';
       }
       $summary=<<<EOS
   $summary_msg: <input name="comment" value="$editlog" size="70" maxlength="70" style="width:80%" tabindex="2" />$extra_check<br />
  @@ -968,7 +970,7 @@
   <input type="hidden" name="action" value="$saveaction" />
   <input type="hidden" name="datestamp" value="$datestamp" />
   $hidden$select_category
  -<input type="submit" tabindex="5" value="$save_msg" />
  +<input type="submit" tabindex="5" value="$save_msg" accesskey="x" />
   <!-- <input type="reset" value="Reset" />&nbsp; -->
   $preview_btn$wysiwyg_btn$skip_preview
   $extra
  
  
  


wkpark      2008/12/27 01:55:02

  Modified:    local    moniwyg.js
  Log:
  $wikiwyg_confirm added. do not confirm to continue edit or not. (suggested by pyj200)
  accesskey added for save action: ctrl-Enter / accesskey=x for save action. (suggested by pyj200)
  http://kldp.net/forum/message.php?msg_id=66854
  
  Revision  Changes    Path
  1.59      +4 -1      moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.58
  retrieving revision 1.59
  diff -u -r1.58 -r1.59
  --- moniwyg.js	19 Dec 2008 13:38:43 -0000	1.58
  +++ moniwyg.js	26 Dec 2008 16:55:02 -0000	1.59
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.58 2008/12/19 13:38:43 wkpark Exp $
  +// $Id: moniwyg.js,v 1.59 2008/12/26 16:55:02 wkpark Exp $
   //
   //_url_prefix="/wiki";
   //
  @@ -2694,6 +2694,9 @@
   
           if (obj == null && confirm('Continue to edit current text ?') )
               text=textarea;
  +        else if (obj == false) // continue to confirm :)
  +            text=textarea;
  +        // else // ignore all and restart
   
           var toolbar=document.getElementById('toolbar');
           if (toolbar) { // hide toolbar
  
  
  


wkpark      2008/12/27 01:55:02

  Modified:    css      kbd.js
  Log:
  $wikiwyg_confirm added. do not confirm to continue edit or not. (suggested by pyj200)
  accesskey added for save action: ctrl-Enter / accesskey=x for save action. (suggested by pyj200)
  http://kldp.net/forum/message.php?msg_id=66854
  
  Revision  Changes    Path
  1.17      +19 -9     moniwiki/css/kbd.js
  
  Index: kbd.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/kbd.js,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- kbd.js	20 Dec 2008 13:37:18 -0000	1.16
  +++ kbd.js	26 Dec 2008 16:55:02 -0000	1.17
  @@ -6,7 +6,7 @@
   
      distributable under GPL
   
  -   $Id: kbd.js,v 1.16 2008/12/20 13:37:18 wkpark Exp $
  +   $Id: kbd.js,v 1.17 2008/12/26 16:55:02 wkpark Exp $
   
      CHANGES
   
  @@ -99,16 +99,26 @@
   			noBubble(e);
   			return false;
   		}
  -	if (e.altKey && e.keyCode == 90) { // Z
  -		if (nn != 'INPUT') {
  -			go ? goValue.focus():null;
  -			noBubble(e);
  -		} else {
  -			var bot=document.getElementById('bottom');
  -			if (bot) bot.focus(), noBubble(e);
  +		if (e.altKey && e.keyCode == 90) { // Z
  +			if (nn != 'INPUT') {
  +				go ? goValue.focus():null;
  +				noBubble(e);
  +			} else {
  +				var bot=document.getElementById('bottom');
  +				if (bot) bot.focus(), noBubble(e);
  +			}
  +			return;
   		}
  -		return;
   	}
  +
  +	if (e.ctrlKey && e.keyCode == 13 && nn == 'TEXTAREA') {
  +		// ctrl-Enter to submit
  +		var p = f.parentNode;
  +		while(p.tagName != 'FORM' && p.tagName != 'BODY') p = p.parentNode;
  +		if (p.tagName == 'FORM') {
  +			p.submit();
  +			return;
  +		}
   	}
   	if (e.charCode == undefined && (e.keyCode==112 || e.keyCode==114)) {
   		keypresshandler(e); // IE hack
  
  
  


wkpark      2008/12/27 01:58:01

  Modified:    local    numbering.js wikibits.js
  Log:
  numbering.js: do not use document.write() / gettextized.
  wikibits.js: return false to avoid focus changing
  
  Revision  Changes    Path
  1.4       +18 -0     moniwiki/local/numbering.js
  
  Index: numbering.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/numbering.js,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- numbering.js	24 Dec 2008 09:11:31 -0000	1.3
  +++ numbering.js	26 Dec 2008 16:58:00 -0000	1.4
  @@ -1,6 +1,11 @@
   //
   // from the MoinMoin: http://moinmoin.wikiwikiweb.de
   //
  +if ( typeof _ == 'undefined') {
  +    _ = function(msgid) {
  +        return msgid;
  +    };
  +}
   
   function isnumbered(obj) {
     var c = obj.getElementsByTagName('li');
  @@ -77,3 +82,16 @@
     }
     return false;
   }
  +
  +function addtogglebutton(id) {
  +    var c = document.getElementById(id);
  +    var a = document.createElement('a');
  +    var txt = document.createTextNode(_('Toggle line numbers'));
  +    a.appendChild(txt);
  +    a.href = '#';
  +    a.className = 'codenumbers';
  +    a.onclick = function() { return togglenumber(id,1,1); };
  +    c.parentNode.insertBefore(a,c);
  +}
  +
  +// vim:et:sts=4:sw=4:
  
  
  
  1.15      +5 -4      moniwiki/local/wikibits.js
  
  Index: wikibits.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/wikibits.js,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- wikibits.js	19 Dec 2008 13:38:58 -0000	1.14
  +++ wikibits.js	26 Dec 2008 16:58:00 -0000	1.15
  @@ -1,7 +1,7 @@
   // from the MediaWiki
   // simplified for the MoniWiki by wkpark
   //
  -// $Id: wikibits.js,v 1.14 2008/12/19 13:38:58 wkpark Exp $
  +// $Id: wikibits.js,v 1.15 2008/12/26 16:58:00 wkpark Exp $
   //
   // Wikipedia JavaScript support functions
   // if this is true, the toolbar will no longer overwrite the infobox when you move the mouse over individual items
  @@ -205,7 +205,7 @@
           			'<span>$ ' + sampleText + ' $</span></span>';
   
   			wikiwyg.current_mode.insert_rawmarkup(tagOpen, tagClose, sampleText);
  -			return;
  +			return false;
   		} else {
   			var postdata = 'action=markup/ajax&value=' + encodeURIComponent(tagOpen + sampleText + tagClose);
   			var myhtml='';
  @@ -218,7 +218,7 @@
   		if (is_ie) {
   			var range = myframe.contentWindow.document.selection.createRange();
   			if (range.boundingTop == 2 && range.boundingLeft == 2)
  -				return;
  +				return false;
   			range.pasteHTML(mnew);
   			range.collapse(false);
   			range.select();
  @@ -226,7 +226,7 @@
   			myframe.contentWindow.document.execCommand('inserthtml', false, mnew + ' ');
   		}
   
  -		return;
  +		return false;
   	}
   
   	// IE
  @@ -330,6 +330,7 @@
   	// reposition cursor if possible
   	if (txtarea.createTextRange)
   		txtarea.caretPos = doc.selection.createRange().duplicate();
  +	return false;
   }
   
   function toggleSameFormat(start, end, sel) {
  
  
  


wkpark      2008/12/27 01:58:01

  Modified:    local/js/locale dummy.js
  Log:
  numbering.js: do not use document.write() / gettextized.
  wikibits.js: return false to avoid focus changing
  
  Revision  Changes    Path
  1.6       +1 -0      moniwiki/local/js/locale/dummy.js
  
  Index: dummy.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/locale/dummy.js,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- dummy.js	24 Dec 2008 09:12:00 -0000	1.5
  +++ dummy.js	26 Dec 2008 16:58:01 -0000	1.6
  @@ -7,3 +7,4 @@
   N_('Printing...');
   N_("copy to clipboard");
   N_("view plain");
  +N_("Toggle line numbers");
  
  
  


wkpark      2008/12/27 01:58:01

  Modified:    local/js/locale/po ko.po
  Log:
  numbering.js: do not use document.write() / gettextized.
  wikibits.js: return false to avoid focus changing
  
  Revision  Changes    Path
  1.6       +5 -1      moniwiki/local/js/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/locale/po/ko.po,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ko.po	24 Dec 2008 09:12:00 -0000	1.5
  +++ ko.po	26 Dec 2008 16:58:01 -0000	1.6
  @@ -5,7 +5,7 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1.3\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2008-12-23 18:22+0900\n"
  +"POT-Creation-Date: 2008-12-27 01:12+0900\n"
   "PO-Revision-Date: 2008-12-18 17:00+0900\n"
   "Last-Translator: Won-Kyu Park <wkpark@kldp.org>\n"
   "MIME-Version: 1.0\n"
  @@ -237,3 +237,7 @@
   #: dummy.js:9
   msgid "view plain"
   msgstr "텍스트 보기"
  +
  +#: dummy.js:10
  +msgid "Toggle line numbers"
  +msgstr "줄 번호 토글"
  
  
  


wkpark      2008/12/27 11:41:26

  Modified:    plugin   EditToolbar.php
  Log:
  fallback behavior fixed for the SmileyChooser/MathChooser.
  
  Revision  Changes    Path
  1.10      +3 -3      moniwiki/plugin/EditToolbar.php
  
  Index: EditToolbar.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/EditToolbar.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- EditToolbar.php	19 Dec 2008 13:40:18 -0000	1.9
  +++ EditToolbar.php	27 Dec 2008 02:41:26 -0000	1.10
  @@ -7,7 +7,7 @@
   //
   // This feature is imported from the MediaWiki
   //
  -// $Id: EditToolbar.php,v 1.9 2008/12/19 13:40:18 wkpark Exp $
  +// $Id: EditToolbar.php,v 1.10 2008/12/27 02:41:26 wkpark Exp $
   
   function macro_EditToolbar($formatter,$value) {
       global $DBInfo;
  @@ -32,12 +32,12 @@
   addButton('$imgdir/button_link.png',N_('Internal link'),'[',']',N_('Link title'));
   addButton('$imgdir/button_extlink.png',N_('External link (remember http:// prefix)'),'[',']',N_('http://www.example.com link title'));
   addButton('$imgdir/button_headline.png',N_('Level 2 headline'),'\\n== ',' ==\\n',N_('Headline text'));
  -addLinkButton('$imgdir/button_math.png',N_('Mathematical formula (LaTeX)'),'mathChooser');
  +addLinkButton('$imgdir/button_math.png',N_('Mathematical formula (LaTeX)'),'\$ ',' \$',N_('Insert latex formula here'),'mathChooser');
   addButton('$imgdir/button_nowiki.png',N_('Ignore wiki formatting'),'{{{','}}}',N_('Insert non-formatted text here'));
   addButton('$imgdir/button_hr.png',N_('Horizontal line (use sparingly)'),'\\n----\\n','','');
   addButton('$imgdir/button_image.png',N_('Embedded image'),'attachment:','','Example.jpg');
   addButton('$imgdir/button_media.png',N_('Media file link'),'[[Media(',')]]','Example.mp3');
  -addLinkButton('$imgdir/button_smiley.png',N_('Smiley'),'smileyChooser',true);
  +addLinkButton('$imgdir/button_smiley.png',N_('Smiley'),'','',':)','smileyChooser',true);
   addButton('$imgdir/button_sig.png',N_('Your signature with timestamp'),'@SIG@','','');
   addInfobox(N_('Click a button to get an example text'),N_('Please enter the text you want to be formatted.\\\\n It will be shown in the infobox for copy and pasting.\\\\nExample:\\\\n\$1\\\\nwill become:\\\\n\$2'));
   document.writeln("</span></div><div style='clear:both'></div>");
  
  
  


wkpark      2008/12/27 11:41:26

  Modified:    local    moniwyg.js
  Log:
  fallback behavior fixed for the SmileyChooser/MathChooser.
  
  Revision  Changes    Path
  1.60      +49 -33    moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.59
  retrieving revision 1.60
  diff -u -r1.59 -r1.60
  --- moniwyg.js	26 Dec 2008 16:55:02 -0000	1.59
  +++ moniwyg.js	27 Dec 2008 02:41:26 -0000	1.60
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.59 2008/12/26 16:55:02 wkpark Exp $
  +// $Id: moniwyg.js,v 1.60 2008/12/27 02:41:26 wkpark Exp $
   //
   //_url_prefix="/wiki";
   //
  @@ -272,6 +272,35 @@
               if (window.event) e.cancelBubble = true;
               else e.preventDefault(), e.stopPropagation();
           }
  +        if (e.keyCode == 35 || e.keyCode == 39) { // right arrow or end key.
  +            var sel = self.get_selection();
  +            var sf = sel.focusNode;
  +            var p = sf.parentNode;
  +            // XXX
  +            if ((p.nodeName=='A' && sf.nodeType==3) || (p.nodeName == 'SPAN' && p.className.match(/wikiMarkup/) )) { // XXX
  +                if (e.keyCode == 35 ||
  +                        (e.keyCode == 39 && sel.focusOffset == sf.nodeValue.length)) {
  +                    sel.removeAllRanges();
  +                    range=self.get_range();
  +                    if (p.nextSibling) {
  +                        range.selectNode(p.nextSibling);
  +                        range.setStart(p.nextSibling,0);
  +                        range.setEnd(p.nextSibling,0); // XXX not work in the chrome :(
  +                        range.collapse(false); // not work ;;
  +                    }
  +                    else {
  +                        range.setStartAfter(p);
  +                        range.setEndAfter(p);
  +                        range.collapse(true);
  +                    }
  +                    sel.addRange(range);
  +
  +                    if (Wikiwyg.is_ie) e.cancelBubble = true;
  +                    else e.preventDefault(), e.stopPropagation();
  +                    return true;
  +                }
  +            }
  +        }
           if (wm && wm.className.match(/wikiMarkup/)) {
               var focus=0;
               var stop=false;
  @@ -363,30 +392,6 @@
                           }
                       }
                   }
  -            } else if (e.keyCode == 35 || e.keyCode == 39) { // right arrow or end key.
  -                var sel = self.get_selection();
  -                var sf = sel.focusNode;
  -                var p = sf.parentNode;
  -                if (p.nodeName=='A' && sf.nodeType==3) {
  -                    if (e.keyCode == 35 ||
  -                            (e.keyCode == 39 && sel.focusOffset == sf.nodeValue.length)) {
  -                        range=self.get_range();
  -                        if (p.nextSibling) {
  -                            range.selectNode(p.nextSibling);
  -                            range.setStart(p.nextSibling,0);
  -                            range.setEnd(p.nextSibling,0);
  -                            //range.collapse(true); // not work ;;
  -                        }
  -                        else
  -                            range.setStartAfter(p);
  -                        sel.removeAllRanges();
  -                        sel.addRange(range);
  -
  -                        if (Wikiwyg.is_ie) e.cancelBubble = true;
  -                        else e.preventDefault(), e.stopPropagation();
  -                        return true;
  -                    }
  -                }
               }
               /* if (e.keyCode == 8) { // backspace
                   var p = self.get_parent_node();
  @@ -1045,8 +1050,7 @@
           this.exec_command('indent');
   }
   
  -/*
  -proto.do_math = function() {
  +proto.do_math_raw = function() {
       var node=this.check_parent_node().nodeName;
       if (node && node != 'BODY') return;
   
  @@ -1056,7 +1060,6 @@
           '<span>$&nbsp;$</span></span>';
       this.insert_table(html);
   }
  -*/
   
   proto.insert_rawmarkup = function(start, end, raw) {
       var node=this.check_parent_node().nodeName;
  @@ -1154,11 +1157,18 @@
   }
   
   proto.do_math = function(cmd,elm) {
  -    open_chooser('mathChooser',elm);
  +    if (document.getElementById('mathChooser'))
  +        open_chooser('mathChooser',elm);
  +    else
  +        this.do_math_raw();
  +
   }
   
   proto.do_smiley = function(cmd,elm) {
  -    open_chooser('smileyChooser',elm,true);
  +    if (document.getElementById('smileyChooser'))
  +        open_chooser('smileyChooser',elm,true);
  +    //else //
  +    //  this.insert_text_at_cursor(':)');
   }
   
   proto.do_image = function() {
  @@ -2039,13 +2049,19 @@
   proto.do_media = Wikiwyg.Wikitext.make_do('media');
   //proto.do_quote = Wikiwyg.Wikitext.make_do('quote');
   //
  -//proto.do_math = Wikiwyg.Wikitext.make_do('math');
  +proto.do_math_tag = Wikiwyg.Wikitext.make_do('math');
   proto.do_math = function(cmd,elm) {
  -    open_chooser('mathChooser',elm);
  +    if (document.getElementById('mathChooser'))
  +        open_chooser('mathChooser',elm);
  +    else
  +        this.do_math_tag(cmd,elm);
   }
   
   proto.do_smiley = function(cmd,elm) {
  -    open_chooser('smileyChooser',elm,true);
  +    if (document.getElementById('smileyChooser'))
  +        open_chooser('smileyChooser',elm,true);
  +    else
  +        this.insert_text_at_cursor(':)');
   }
   
   proto.collapse = function(string) {
  
  
  


wkpark      2008/12/27 11:43:09

  Modified:    .        wikilib.php
  Log:
  oops! fixed last change.
  
  Revision  Changes    Path
  1.257     +3 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.256
  retrieving revision 1.257
  diff -u -r1.256 -r1.257
  --- wikilib.php	26 Dec 2008 16:55:02 -0000	1.256
  +++ wikilib.php	27 Dec 2008 02:43:08 -0000	1.257
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.256 2008/12/26 16:55:02 wkpark Exp $
  +// $Id: wikilib.php,v 1.257 2008/12/27 02:43:08 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -913,8 +913,8 @@
       if ($preview)
         $skip_preview= ' '.$formatter->link_to('#preview',_("Skip to preview"));
       if (!empty($DBInfo->use_wikiwyg)) {
  -      $confirm = 'null';
  -      if (!empty($DBInfo->wikiwyg_confirm)) $confirm = 'false';
  +      $confirm = 'false';
  +      if (!empty($DBInfo->wikiwyg_confirm)) $confirm = 'null';
         $wysiwyg_msg=_("GUI");
         $wysiwyg_btn.='&nbsp;<input type="button" tabindex="7" value="'.$wysiwyg_msg.
           '" onclick="javascript:sectionEdit(null,'.$confirm .',null)" />';
  
  
  


wkpark      2008/12/27 11:55:37

  moniwiki/applets/JMEPlugin - New directory

wkpark      2008/12/27 11:56:21

  Added:       applets/JMEPlugin Makefile
  Log:
  JME plugin added
  http://www.molinspiration.com/jme/doc/
  
  Revision  Changes    Path
  1.1                  moniwiki/applets/JMEPlugin/Makefile
  
  Index: Makefile
  ===================================================================
  all:
  	wget http://www.molinspiration.com/jme/doc/JME.jar
  
  
  


wkpark      2008/12/27 11:57:17

  moniwiki/applets/JmolPlugin - New directory

wkpark      2008/12/27 12:05:32

  Added:       applets/JmolPlugin Makefile
  Log:
  JmolPlugin added
  
  Revision  Changes    Path
  1.1                  moniwiki/applets/JmolPlugin/Makefile
  
  Index: Makefile
  ===================================================================
  ver=11.6.10
  install:
  	wget -N http://downloads.sourceforge.net/jmol/jmol-$(ver)-binary.zip ; \
  	unzip jmol-$(ver)-binary.zip -d jmol
  	cp jmol/jmol-$(ver)/JmolApplet.jar .
  	rm -r jmol
  	#rm jmol-$(ver)-binary.zip
  uninstall:
  	rm -f JmolApplet.jar
  
  
  


wkpark      2008/12/27 12:12:30

  Modified:    local    wikibits.js
  Log:
  fixed fallback behavior of the EditToolBar
  
  Revision  Changes    Path
  1.16      +9 -5      moniwiki/local/wikibits.js
  
  Index: wikibits.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/wikibits.js,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- wikibits.js	26 Dec 2008 16:58:00 -0000	1.15
  +++ wikibits.js	27 Dec 2008 03:12:30 -0000	1.16
  @@ -1,7 +1,7 @@
   // from the MediaWiki
   // simplified for the MoniWiki by wkpark
   //
  -// $Id: wikibits.js,v 1.15 2008/12/26 16:58:00 wkpark Exp $
  +// $Id: wikibits.js,v 1.16 2008/12/27 03:12:30 wkpark Exp $
   //
   // Wikipedia JavaScript support functions
   // if this is true, the toolbar will no longer overwrite the infobox when you move the mouse over individual items
  @@ -82,10 +82,11 @@
   	return;
   }
   
  -function addLinkButton(imageFile,speedTip,id,once) {
  +function addLinkButton(imageFile,speedTip,tagOpen,tagClose, sampleText, id,once) {
   	var off=once ? 'true':'false';
   	speedTip=escapeQuotes(_(speedTip));
  -	document.write("<input type='image' onclick=\"javascript:openChooser(this,'" + id + "'," + off + ");\"");
  +	document.write("<input type='image' onclick=\"javascript:openChooser(this,'"
  +		+ tagOpen+"','" + tagClose + "','" + sampleText + "','" + id + "'," + off + ");\"");
           document.write(" width=\"22\" height=\"22\" src=\""+imageFile+"\" border=\"0\" alt=\""+speedTip+"\" title=\""+speedTip+"\""+" />");
   	return;
   }
  @@ -108,9 +109,12 @@
     return r;
   }
   
  -function openChooser(el,id,once) {
  +function openChooser(el, tagOpen, tagClose, sampleText, id,once) {
   	var div = document.getElementById(id);
  -	if (!div) return;
  +	if (!div) {
  +		insertTags(tagOpen, tagClose, sampleText);
  +		return;
  +	}
   
   	if (div.style.display == 'block') div.style.display='none';
   	else div.style.display='block';
  
  
  


wkpark      2008/12/27 12:13:54

  Modified:    local/js/locale/po ko.po
  Log:
  update
  
  Revision  Changes    Path
  1.7       +37 -33    moniwiki/local/js/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/locale/po/ko.po,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- ko.po	26 Dec 2008 16:58:01 -0000	1.6
  +++ ko.po	27 Dec 2008 03:13:54 -0000	1.7
  @@ -5,7 +5,7 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1.3\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2008-12-27 01:12+0900\n"
  +"POT-Creation-Date: 2008-12-27 11:39+0900\n"
   "PO-Revision-Date: 2008-12-18 17:00+0900\n"
   "Last-Translator: Won-Kyu Park <wkpark@kldp.org>\n"
   "MIME-Version: 1.0\n"
  @@ -16,127 +16,127 @@
   msgid "undefined"
   msgstr ""
   
  -#: ../../moniwyg.js:1977
  +#: ../../moniwyg.js:1987
   msgid "Save"
   msgstr "저장"
   
  -#: ../../moniwyg.js:1978
  +#: ../../moniwyg.js:1988
   msgid "Preview"
   msgstr "미리보기"
   
  -#: ../../moniwyg.js:1979
  +#: ../../moniwyg.js:1989
   msgid "Cancel"
   msgstr "취소"
   
  -#: ../../moniwyg.js:1980
  +#: ../../moniwyg.js:1990
   msgid "Bold (Ctrl+b)"
   msgstr "굵게 (Ctrl-b)"
   
  -#: ../../moniwyg.js:1981
  +#: ../../moniwyg.js:1991
   msgid "Italic (Ctrl+i)"
   msgstr "기울임 (Ctrl+i)"
   
  -#: ../../moniwyg.js:1982
  +#: ../../moniwyg.js:1992
   msgid "Underline (Ctrl+u)"
   msgstr "밑줄 (Ctrl+u)"
   
  -#: ../../moniwyg.js:1983
  +#: ../../moniwyg.js:1993
   msgid "Strike Through (Ctrl+d)"
   msgstr "삭제선 (Ctrl+d)"
   
  -#: ../../moniwyg.js:1984
  +#: ../../moniwyg.js:1994
   msgid "Horizontal Rule"
   msgstr "수평줄"
   
  -#: ../../moniwyg.js:1985
  +#: ../../moniwyg.js:1995
   msgid "Numbered List"
   msgstr "숫자 리스트"
   
  -#: ../../moniwyg.js:1986
  +#: ../../moniwyg.js:1996
   msgid "Bulleted List"
   msgstr "총알 리스트"
   
  -#: ../../moniwyg.js:1987
  +#: ../../moniwyg.js:1997
   msgid "More Indented"
   msgstr "들여쓰기"
   
  -#: ../../moniwyg.js:1988
  +#: ../../moniwyg.js:1998
   msgid "Less Indented"
   msgstr "내어쓰기"
   
  -#: ../../moniwyg.js:1989
  +#: ../../moniwyg.js:1999
   msgid "About Wikiwyg"
   msgstr "Wikiwyg는"
   
  -#: ../../moniwyg.js:1990
  +#: ../../moniwyg.js:2000
   msgid "[Style]"
   msgstr ""
   
  -#: ../../moniwyg.js:1991
  +#: ../../moniwyg.js:2001
   msgid "Normal Text"
   msgstr "일반 글씨"
   
  -#: ../../moniwyg.js:1992
  +#: ../../moniwyg.js:2002
   msgid "Preformatted"
   msgstr ""
   
  -#: ../../moniwyg.js:1993
  +#: ../../moniwyg.js:2003
   msgid "Heading 1"
   msgstr "제목 1"
   
  -#: ../../moniwyg.js:1994
  +#: ../../moniwyg.js:2004
   msgid "Heading 2"
   msgstr "제목 2"
   
  -#: ../../moniwyg.js:1995
  +#: ../../moniwyg.js:2005
   msgid "Heading 3"
   msgstr "제목 3"
   
  -#: ../../moniwyg.js:1996
  +#: ../../moniwyg.js:2006
   msgid "Heading 4"
   msgstr "제목 4"
   
  -#: ../../moniwyg.js:1997
  +#: ../../moniwyg.js:2007
   msgid "Heading 5"
   msgstr "제목 5"
   
  -#: ../../moniwyg.js:1998
  +#: ../../moniwyg.js:2008
   msgid "Heading 6"
   msgstr "제목 6"
   
  -#: ../../moniwyg.js:1999
  +#: ../../moniwyg.js:2009
   msgid "Create Link"
   msgstr "링크 생성"
   
  -#: ../../moniwyg.js:2000 ../../../plugin/EditToolbar.php:40
  +#: ../../moniwyg.js:2010 ../../../plugin/EditToolbar.php:40
   msgid "Smiley"
   msgstr "스마일리"
   
  -#: ../../moniwyg.js:2001
  +#: ../../moniwyg.js:2011
   msgid "Remove Linkedness"
   msgstr "링크 제거"
   
  -#: ../../moniwyg.js:2002
  +#: ../../moniwyg.js:2012
   msgid "Create Table"
   msgstr "테이블"
   
  -#: ../../moniwyg.js:2003
  +#: ../../moniwyg.js:2013
   msgid "Math"
   msgstr "수식"
   
  -#: ../../moniwyg.js:2004
  +#: ../../moniwyg.js:2014
   msgid "As Is"
   msgstr "그대로"
   
  -#: ../../moniwyg.js:2005
  +#: ../../moniwyg.js:2015
   msgid "Image"
   msgstr "이미지"
   
  -#: ../../moniwyg.js:2006
  +#: ../../moniwyg.js:2016
   msgid "Media"
   msgstr "미디어"
   
  -#: ../../moniwyg.js:2007
  +#: ../../moniwyg.js:2017
   msgid "Quote"
   msgstr "인용"
   
  @@ -176,13 +176,17 @@
   msgid "Mathematical formula (LaTeX)"
   msgstr "수식 넣기 (LaTeX)"
   
  +#: ../../../plugin/EditToolbar.php:35
  +msgid "Insert latex formula here"
  +msgstr "LaTeX 수식을 넣으세요"
  +
   #: ../../../plugin/EditToolbar.php:36
   msgid "Ignore wiki formatting"
   msgstr "위키 포맷 무시"
   
   #: ../../../plugin/EditToolbar.php:36
   msgid "Insert non-formatted text here"
  -msgstr "포맷없는 글씨 넣기"
  +msgstr "포맷없는 텍스트를 넣으세요"
   
   #: ../../../plugin/EditToolbar.php:37
   msgid "Horizontal line (use sparingly)"
  
  
  


wkpark      2008/12/27 12:18:04

  Modified:    plugin   UploadedFiles.php
  Log:
  support q=moniwiki-.* query arg.
  
  Revision  Changes    Path
  1.31      +15 -3     moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- UploadedFiles.php	24 Dec 2008 09:08:22 -0000	1.30
  +++ UploadedFiles.php	27 Dec 2008 03:18:04 -0000	1.31
  @@ -3,9 +3,16 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadedFiles plugin for the MoniWiki
   //
  -// $Id: UploadedFiles.php,v 1.30 2008/12/24 09:08:22 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.31 2008/12/27 03:18:04 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
  +  if (!empty($options['q'])) {
  +    $q = $options['q'];
  +    $t = @preg_match('@'.$q.'@','');
  +    if ($t !== false) {
  +      $options['needle']=$q;
  +    }
  +  }
     $list=macro_UploadedFiles($formatter,$options['page'],$options);
   
     $formatter->send_header("",$options);
  @@ -188,13 +195,13 @@
      if ($DBInfo->download_action) $mydownload=$DBInfo->download_action;
      else $mydownload='download';
      $checkbox='checkbox';
  -   $needle="//";
  +   $needle= "//";
      if ($options['download'] || $DBInfo->force_download) {
        $force_download=1;
        if ($options['download'])
          $mydownload=$options['download'];
      }
  -   if ($options['needle']) $needle=$options['needle'];
  +   if ($options['needle']) $needle='@'.$options['needle'].'@';
      if ($options['checkbox']) $checkbox=$options['checkbox'];
   
      if (!in_array('UploadFile',$formatter->actions))
  @@ -303,6 +310,9 @@
           #$attr=' target="_blank"';
           $extra='&amp;popup=1&amp;tag=1';
         }
  +      if ($options['needle'])
  +        $extra.='&amp;q='.$options['needle'];
  +
         $link=$formatter->link_tag('UploadFile',"?action=uploadedfiles&amp;value=top$extra",
           "<img src='".$icon_dir."/32/up.png' style='border:0' class='upper' alt='..' />",$attr);
         $out.="<tr>";
  @@ -314,6 +324,8 @@
         }
         $out.="</tr>\n";
      }
  +   if ($options['needle'])
  +      $extra.='&amp;q='.$options['needle'];
      if ($plink)
         $plink=$formatter->link_tag('',"?action=uploadedfiles$extra&amp;p=".($p+1),_("Next page &raquo;"),$attr);
      else if ($p > 1)
  
  
  


wkpark      2008/12/27 12:29:14

  Added:       plugin   JME.php
  Log:
  a Molecular 2D editer plugin added.
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/JME.php
  
  Index: JME.php
  ===================================================================
  <?php
  // Copyright 2006-2008 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a JME plugin for the MoniWiki
  //
  // Author: Won-Kyu Park <wkpark@kldp.org>
  // Since: 2006-07-20
  // Name: a JME molecular editor plugin
  // Description: a JME molecular editor plugin.
  // URL: MoniWiki:JMEProcessor
  // Version: $Revision: 1.1 $
  // License: GPL
  // Usage: [[JME(molname)]]
  //
  // $Id: JME.php,v 1.1 2008/12/27 03:29:14 wkpark Exp $
  
  function _mol2gau($mol) {
      $line=explode("\n",$mol);
      if (preg_match('/radical/',$line[0]))
          $chmu='0 2';
      else if (preg_match('/cation/',$line[0]))
          $chmu='1 1';
      else if (preg_match('/anion/',$line[0]))
          $chmu='-1 1';
      else
          $chmu='0 1';
      $gau=<<<HEADER
  %chk=
  # ub3lyp/6-311g(d,p) OPT FREQ POP=full
  
  from NIST: $line[0]
  $chmu
  
  HEADER;
      foreach ($line as $l) {
  #    0.0000    0.0000    0.0000 H   0  0  0  0  0  1           0  0  0
          preg_match('/\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)\s([A-Z]{1,2})\s+.*$/',$l,$m);
          if ($m)
              $gau.= $m[4].'  '.$m[1].'  '.$m[2].'  '.$m[3]."\n";
      }
      $gau.="\n";
      return $gau;
  }
  
  function macro_JME($formatter,$value) {
      global $DBInfo;
      $jar = 'JME.zip'; // XXX
      $jar = 'JME.jar';
  
      $draw_dir=str_replace('./','',$DBInfo->upload_dir.'/JME');
      if (!file_exists($draw_dir)) {
          umask(000);
          mkdir($draw_dir, 0777);
      }
      $name=$value;
      $urlname=_rawurlencode($value);
      $molname=$name.".mol";
      $now=time();
  
      $url=$formatter->link_url($formatter->page->name,"?action=jme&amp;value=$urlname&amp;now=$now");
  
      if (!file_exists($draw_dir."/$molname")) {
          if ($name)
              return "<a href='$url'>".sprintf(_("Draw a new molecule '%s'"),$name)."</a>";
          else
              return "<a href='$url'>"._("Draw a new molecule")."</a>";
      }
  
      $fp=fopen($draw_dir.'/'.$molname,'r');
      if ($fp) {
          while(!feof($fp)) $mol.=fgets($fp,2048);
          fclose($fp);
          $mol=str_replace("\r\n","|\n",$mol);
      }
      $pubpath=$DBInfo->url_prefix."/applets/JMEPlugin";
      return <<<APPLET
  <applet code="JME.class" name="JME" codebase="$pubpath" archive="$jar">
  <param name="options" value="depict" />
  <param name="mol" value="$mol" />
  You have to enable Java and JavaScript on your machine !
  </applet>
  APPLET;
  }
  
  function do_post_jme($formatter,$options) {
      global $DBInfo;
  
      $draw_dir=str_replace("./",'',$DBInfo->upload_dir.'/JME');
      $pagename=$options['page'];
  
      $name=$options['value'] ? $options['value']:$options['name'];
      if (!$name) $name=time();
  
      if ($_SERVER['REQUEST_METHOD']=='POST' and $options['mol']) {
          $dummy=explode('/',$name);
          $name=$dummy[count($dummy)-1];
          $molname=$name.'.mol';
          $fp=fopen($draw_dir.'/'.$molname,'w');
          if ($fp) {
              fwrite($fp,$options['mol']);
              fclose($fp);
          }
          $formatter->send_header('',$options);
          $formatter->send_title(_("Molecule successfully added"),'',$options);
          $formatter->send_footer('',$options);
          return;
      }
  
      $formatter->send_header('',$options);
      $formatter->send_title(_("Edit Molecule"),'',$options);
      $script=<<<SCRIPT
  <script type="text/javascript">
  /*<![CDATA[*/
  function setMolFile(obj) {
      var mol = document.JME.molFile();
      obj.mol.value = mol;
  }
  
  function getGauFile(obj) {
      var mol = document.JME.molFile();
      var lines = mol.split("\\n");
      var i=0;
      var gau="%chk=\\n# ub3lyp/6-311g(d,p) OPT FREQ POP=full\\n\\n";
      gau += obj.name.value + "\\n\\n0 1\\n";
  
      while (i < lines.length) {
          var mat = lines[i].match(/^\\s+([^\\s]+)\\s+([^\\s]+)\\s+([^\\s]+)\\s+([A-Z]{1,2})\\s+.*/);
          if (mat != null) {
              gau += mat[4] + ' ' + mat[1] + ' ' + mat[2] + ' ' + mat[3] + "\\n";
          }
          i++;
      }
  
      obj.mol.value = gau + "\\n";
  }
  /*]]>*/
  </script>
  SCRIPT;
      $pubpath=$DBInfo->url_prefix."/applets/JMEPlugin";
      print "<h2>"._("Edit new molecule")."</h2>\n";
      print <<<FORM
  $script
  <form method="POST" action="">
  <applet code="JME.class" name="JME" codebase="$pubpath" archive="JME.zip"
  width="360" height="315">
  <param name=" options"  value="multipart; autoez";>
  You have to enable Java and JavaScritpt on your machine !
  </applet><br />
  <input type="hidden" name="action" value="jme" />
  <input type="hidden" name="name" value="$name" />
  <input type="submit" name="submit_button" value="Submit" onclick="setMolFile(this.form)" />
  <input type="button" name="gau_button" value="Get Gaussian input" onclick="getGauFile(this.form)" />
  <input type="button" value="Get Mol" onclick="setMolFile(this.form)" />
  <input type="reset" value="reset" />
  <div class="molecule">
  <textarea cols="50" rows="20" name="mol" /></textarea></div>
  </form>
  FORM;
  
      $formatter->send_footer("",$options);
      return;
  }
  
  // vim:et:sts=4:sw=4:
  ?>
  
  
  


wkpark      2008/12/27 15:55:12

  Modified:    local    moniwyg.js
  Log:
  safari/chrome workaround :(
  
  Revision  Changes    Path
  1.61      +43 -8     moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.60
  retrieving revision 1.61
  diff -u -r1.60 -r1.61
  --- moniwyg.js	27 Dec 2008 02:41:26 -0000	1.60
  +++ moniwyg.js	27 Dec 2008 06:55:12 -0000	1.61
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.60 2008/12/27 02:41:26 wkpark Exp $
  +// $Id: moniwyg.js,v 1.61 2008/12/27 06:55:12 wkpark Exp $
   //
   //_url_prefix="/wiki";
   //
  @@ -285,13 +285,24 @@
                       if (p.nextSibling) {
                           range.selectNode(p.nextSibling);
                           range.setStart(p.nextSibling,0);
  -                        range.setEnd(p.nextSibling,0); // XXX not work in the chrome :(
  +                        if (Wikiwyg.is_safari) {
  +                            range.setEnd(p.nextSibling,1); // XXX safari/chrome bug.
  +                        } else {
  +                            range.setEnd(p.nextSibling,0);
  +                        }
                           range.collapse(false); // not work ;;
  -                    }
  -                    else {
  -                        range.setStartAfter(p);
  -                        range.setEndAfter(p);
  -                        range.collapse(true);
  +                    } else {
  +                        if (Wikiwyg.is_safari) {
  +                            var txt = document.createTextNode(' ');
  +                            p.parentNode.appendChild(txt);
  +                            range.selectNode(txt);
  +                            range.setStart(txt,0);
  +                            range.setEnd(txt,1);
  +                        } else {
  +                            range.setStartAfter(p);
  +                            range.setEndAfter(p);
  +                        }
  +                        range.collapse(false);
                       }
                       sel.addRange(range);
   
  @@ -344,7 +355,31 @@
                   if (!Wikiwyg.is_ie) {
                       var sf=sel.focusNode;
                       var wm=self.get_wikimarkup_node();
  -                    if (sf.nodeType == 3 && sel.toString() == ''
  +                    if (cc == 13
  +                            && sf.nodeType == 3 && sel.toString() == ''
  +                            && sf.parentNode.nodeName.match(/H\d/) && wm == null) {
  +                        // safari/chrome hack XXX :(
  +                        if (Wikiwyg.is_safari) {
  +                            var txt;
  +                            if (sf.parentNode.nextSibling) {
  +                                txt = document.createElement('br');
  +                                sf.parentNode.parentNode.insertBefore(txt,sf.parentNode.nextSibling);
  +                            } else {
  +                                txt = document.createElement('br');
  +                                sf.parentNode.parentNode.appendChild(txt);
  +                            }
  +                            var range = self.get_range();
  +                            sel.removeAllRanges();
  +                            range.selectNode(txt);
  +                            range.setStart(txt,0);
  +                            range.setEnd(txt,0);
  +                            range.collapse(false);
  +                            sel.addRange(range);
  +
  +                            e.preventDefault();
  +                            e.stopPropagation();
  +                        }
  +                    } else if (sf.nodeType == 3 && sel.toString() == ''
                               && sf.parentNode.nodeName != 'A' && wm == null) {
                           // text node
                           var range=self.get_range();
  
  
  


wkpark      2008/12/27 16:29:18

  Modified:    plugin/processor enscript.php
  Log:
  latest enscript does not accept '-W' option :(
  
  Revision  Changes    Path
  1.4       +10 -6     moniwiki/plugin/processor/enscript.php
  
  Index: enscript.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/enscript.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- enscript.php	17 Dec 2008 03:38:14 -0000	1.3
  +++ enscript.php	27 Dec 2008 07:29:17 -0000	1.4
  @@ -9,12 +9,12 @@
   // Name: a Enscript syntax colorizer
   // Description: a syntax colorizing processor using the Enscript
   // URL: MoniWiki:VimProcessor
  -// Version: $Revision: 1.3 $
  +// Version: $Revision: 1.4 $
   // Usage: {{{#!enscript sh|c|sh|..
   // some codes
   // }}}
   //
  -// $Id: enscript.php,v 1.3 2008/12/17 03:38:14 wkpark Exp $
  +// $Id: enscript.php,v 1.4 2008/12/27 07:29:17 wkpark Exp $
   
   function processor_enscript($formatter,$value) {
     global $DBInfo;
  @@ -40,7 +40,7 @@
       $tag = strtok($line,' ');
       $type = strtok(' ');
       $extra = strtok('');
  -    if ($tag != 'vim') {
  +    if ($tag != 'enscript') {
         $extra = $type;
         $type = $tag;
       }
  @@ -53,7 +53,7 @@
     if (!in_array($type,$syntax)) 
       return "<pre class='code'>\n$line\n$src\n</pre>\n";
   
  -  if ($type=='php') {
  +  if ($type == 'php') {
       ob_start();
       highlight_string($src);
       $html= ob_get_contents();
  @@ -66,8 +66,12 @@
   
   #-E%s -W html -J "" -B --color --word-wrap 
   
  -    #$cmd="ENSCRIPT_LIBRARY=/home/httpd/wiki/lib $enscript -q -o - -E$type -W html --color=ifh --word-wrap ".$tmpf;
  -    $cmd="$enscript -q -o - $option -E$type -W html --color=ifh --word-wrap ".$tmpf;
  +    #$cmd="ENSCRIPT_LIBRARY=/home/httpd/wiki/lib $enscript -q -o - -E$type -W html --color --word-wrap ".$tmpf;
  +    if ($DBInfo->enscript_style)
  +        $cmd="$enscript -q -o - $option -E$type --language=html $DBInfo->enscript_style --color --word-wrap ".$tmpf;
  +    else
  +        $cmd="$enscript -q -o - $option -E$type --language=html --style=ifh --color --word-wrap ".$tmpf;
  +
       $fp=popen($cmd.$formatter->NULL, 'r');
       $html='';
       while($s = fgets($fp, 1024)) $html.= $s;
  
  
  


wkpark      2008/12/27 16:41:33

  Modified:    .        wiki.php
  Log:
  fixed PR #300890 (reported by barosl)
  
  Revision  Changes    Path
  1.440     +4 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.439
  retrieving revision 1.440
  diff -u -r1.439 -r1.440
  --- wiki.php	26 Dec 2008 13:37:04 -0000	1.439
  +++ wiki.php	27 Dec 2008 07:41:33 -0000	1.440
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.439 2008/12/26 13:37:04 wkpark Exp $
  +// $Id: wiki.php,v 1.440 2008/12/27 07:41:33 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.439 $',1,-1);
  +$_revision = substr('$Revision: 1.440 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -1827,6 +1827,7 @@
         $this->external_target='target="'.$DBInfo->external_target.'"';
   
       $this->baserule=array("/(?<!\<)<([^\s<>])/",
  +                     "/&(?!([^&;]+|#[0-9]+|#x[0-9a-fA-F]+);)/",
                        "/'''([^']*)'''/","/(?<!')'''(.*)'''(?!')/",
                        "/''([^']*)''/","/(?<!')''(.*)''(?!')/",
                        "/`(?<!\s)(?!`)([^`']+)(?<!\s)'(?=\s|$)/",
  @@ -1842,6 +1843,7 @@
                        #"/(\\\\\\\\)/", # tex, pmWiki
                        );
       $this->baserepl=array("&lt;\\1",
  +                     "&amp;",
                        "<strong>\\1</strong>","<strong>\\1</strong>",
                        "<em>\\1</em>","<em>\\1</em>",
                        "&#96;\\1'","<tt>\\1</tt>",
  
  
  


wkpark      2008/12/27 16:56:24

  Modified:    plugin   SWFUpload.php
  Log:
  Flash 10 fix with the SWFUpload v2.x
  
  Revision  Changes    Path
  1.16      +113 -20   moniwiki/plugin/SWFUpload.php
  
  Index: SWFUpload.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SWFUpload.php,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- SWFUpload.php	25 Dec 2008 09:15:41 -0000	1.15
  +++ SWFUpload.php	27 Dec 2008 07:56:24 -0000	1.16
  @@ -8,16 +8,17 @@
   // Name: SWF Upload
   // Description: SWF Upload Plugin
   // URL: http://labb.dev.mammon.se/swfupload/ MoniWikiDev:SWFUpload
  -// Version: $Revision: 1.15 $
  +// Version: $Revision: 1.16 $
   // License: GPL
   //
   // Usage: [[SWFUpload]]
   //
  -// $Id: SWFUpload.php,v 1.15 2008/12/25 09:15:41 wkpark Exp $
  +// $Id: SWFUpload.php,v 1.16 2008/12/27 07:56:24 wkpark Exp $
   
   function macro_SWFUpload($formatter,$value,$opts=array()) {
       global $DBInfo;
   
  +    $swf_ver = 10;
       if ($DBInfo->swfupload_depth > 2) {
           $depth=$DBInfo->swfupload_depth;
       } else {
  @@ -101,12 +102,24 @@
       }
   
       if (!$swfupload_num) {
  -        $formatter->register_javascripts(array(
  -            'js/swfobject.js',
  -            'SWFUpload/mmSWFUpload.js',
  -            'SWFUpload/preview.js',
  -            'SWFUpload/moni.js',
  -        ));
  +        if ($swf_ver == 9) {
  +            $formatter->register_javascripts(array(
  +                'js/swfobject.js',
  +                'SWFUpload/mmSWFUpload.js',
  +                'SWFUpload/preview.js',
  +                'SWFUpload/moni.js',
  +            ));
  +        } else {
  +            $formatter->register_javascripts(array(
  +                'js/swfobject.js',
  +                'SWFUpload/swfupload.js',
  +                'SWFUpload/swfupload.swfobject.js',
  +                'SWFUpload/swfupload.queue.js',
  +                'SWFUpload/preview.js',
  +                'SWFUpload/handlers.js',
  +                #'SWFUpload/fileprogress.js',
  +            ));
  +        }
       }
   
       $swf_css=<<<CSS
  @@ -117,20 +130,16 @@
   
       $btn=_("Files...");
       $btn2=_("Upload");
  +    $btn3=_("Cancel All files");
       $prefix=qualifiedUrl($DBInfo->url_prefix.'/local');
       $action=$formatter->link_url($formatter->page->urlname);
       $action2=$action.'----swfupload';
       if ($mysubdir) $action2.='----'.$mysubdir;
       $action2=qualifiedUrl($action2);
       $myprefix=qualifiedUrl($DBInfo->url_prefix);
  -    $form=<<<EOF
  -	<div id="SWFUpload">
  -		<form action="" onsubmit="return false;">
  -			<input type="file" name="upload" />
  -			<input type="submit" value="Upload" onclick="javascript:alert('disabled...'); return false;" />
  -		</form>
  -	</div>
   
  +    if ($swf_ver == 9) {
  +        $swf_js=<<<EOF
           <script type="text/javascript">
           /*<![CDATA[*/
   		mmSWFUpload.init({
  @@ -149,7 +158,74 @@
                   });
           /*]]>*/
   	</script>
  +EOF;
  +        $submit_btn="<input type='button' value='$btn' onclick='javascript:mmSWFUpload.callSWF();' />\n";
  +        $cancel_btn='';
  +    } else {
  +        $submit_btn='<span id="spanButtonPlaceHolder"><input type="file" name="upload" /></span>';
  +        $cancel_btn="<input id='btnCancel' type='button' value='$btn3' onclick='swfu.cancelQueue();' disabled='disabled' />\n";
  +        $swf_js=<<<EOF
  +<script type="text/javascript">
  +/*<![CDATA[*/
  +var swfu;
  +
  +SWFUpload.onload = function () {
  +    var settings = {
  +        flash_url : "$DBInfo->url_prefix/local/SWFUpload/swfupload.swf",
  +        upload_url: "$action2", // Relative to the SWF file
  +        file_size_limit : "10 MB",
  +        file_types : "$allowed",
  +        file_types_description : "Files",
  +        file_upload_limit : 100,
  +        file_queue_limit : 0,
  +        custom_settings : {
  +            progressTarget : "fsUploadProgress",
  +            cancelButtonId : "btnCancel"
  +        },
  +        debug: false, // true
  +
  +        // Button Settings
  +        button_image_url : "$DBInfo->url_prefix/local/SWFUpload/images/btn.png",
  +        button_placeholder_id : "spanButtonPlaceHolder",
  +        button_width: 61,
  +        button_height: 22,
  +        button_window_mode: SWFUpload.WINDOW_MODE.TRANSPARENT,
  +        button_cursor: SWFUpload.CURSOR.HAND,
  +
  +        // The event handler functions are defined in handlers.js
  +        swfupload_loaded_handler : swfUploadLoaded,
  +        file_queued_handler : fileQueued,
  +        file_queue_error_handler : fileQueueError,
  +        file_dialog_complete_handler : fileDialogComplete,
  +        upload_start_handler : uploadStart,
  +        upload_progress_handler : uploadProgress,
  +        upload_error_handler : uploadError,
  +        upload_success_handler : uploadSuccess,
  +        upload_complete_handler : uploadComplete,
  +        queue_complete_handler : queueComplete, // Queue plugin event
  +        
  +        // SWFObject settings
  +        minimum_flash_version : "9.0.28",
  +        swfupload_pre_load_handler : swfUploadPreLoad,
  +        swfupload_load_failed_handler : swfUploadLoadFailed
  +    };
   
  +    swfu = new SWFUpload(settings);
  +}
  +/*]]>*/
  +</script>
  +
  +EOF;
  +
  +    }
  +    $form=<<<EOF
  +	<div id="SWFUpload" style='display:none'>
  +		<form action="" onsubmit="return false;">
  +			<input type="file" name="upload" />
  +			<input type="submit" value="Upload" onclick="javascript:alert('disabled...'); return false;" />
  +		</form>
  +	</div>
  +$swf_js
   	<div class="fileList">
   	<table border='0' cellpadding='0'>
   	<tr>
  @@ -160,18 +236,35 @@
   	</div>
   	</td>
   	<td>
  +
   	<div id="filesDisplay">
  -                <form target='_blank' method='POST' action='$action'>
  -		<ul id="mmUploadFileListing">$uploaded</ul>
  +            <form id="form1" target='_blanl' action="$action" method="POST" enctype="multipart/form-data">
  +	        <ul id="mmUploadFileListing">$uploaded</ul>
   		<span id="fileButton">
                   <input type='hidden' name='action' value='swfupload' />
                   <input type='hidden' name='popup' value='1' />
                   $myoptions
  -		<input type='button' value="$btn" onclick='javascript:mmSWFUpload.callSWF();' />
  +                $submit_btn
   		<input type='submit' value="$btn2" onclick='javascript:fileSubmit(this);' />
  +                $cancel_btn
   		</span>
  -                </form>
  -	</div>
  +            </form>
  +        </div>
  +        <noscript style="background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px;">
  +            We're sorry.  SWFUpload could not load.  You must have JavaScript enabled to enjoy SWFUpload.
  +        </noscript>
  +        <div id="divLoadingContent" class="content" style="background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px; display: none;">
  +            SWFUpload is loading. Please wait a moment...
  +        </div>
  +        <div id="divLongLoading" class="content" style="background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px; display: none;">
  +            SWFUpload is taking a long time to load or the load has failed.  Please make sure that the Flash Plugin is enabled and that a working version of the Adobe Flash Player is installed.
  +        </div>
  +        <div id="divAlternateContent" class="content" style="background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px; display: none;">
  +
  +            We're sorry.  SWFUpload could not load.  You may need to install or upgrade Flash Player.
  +            Visit the <a href="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash">Adobe website</a> to get the Flash Player.
  +        </div>
  +
   	</td>
           </tr>
   	<tr>
  
  
  


wkpark      2008/12/27 19:06:48

  Modified:    plugin   referer.php
  Log:
  always use tail_file()
  
  Revision  Changes    Path
  1.4       +129 -85   moniwiki/plugin/referer.php
  
  Index: referer.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/referer.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- referer.php	10 Dec 2008 09:59:49 -0000	1.3
  +++ referer.php	27 Dec 2008 10:06:48 -0000	1.4
  @@ -1,105 +1,149 @@
   <?php
  +// Copyright 2007-2008 kz <Keizi@mail.co.kr>
  +// All rights reserved. Distributable under GPL see COPYING
  +// a referer plugin for the MoniWiki
  +//
  +// Author: kz name <Keizi@mail.co.kr>
  +// Date: 2007-04-30
  +// Name: a referer plugin
  +// Description: show referer plugin
  +// URL: MoniWiki:RefererPlugin
  +// Version: $Revision: 1.4 $
  +// License: GPL
  +//
  +// Usage: [[Referer]]
   
   function do_referer($formatter, $options)
   {
  -  $out= macro_referer($formatter,$options['value'],&$options);
  +    $out= macro_referer($formatter,$options['value'],&$options);
   
  -  return $out;
  +    return $out;
   }
   
   /* snippet from http://au2.php.net/manual/en/function.fseek.php */
   function tail_file($file, $lines)
   {
  -        $handle = fopen($file, "r");
  -        $linecounter = $lines;
  -        $pos = -2;
  -        $beginning = false;
  -        $text = array();
  -        while ($linecounter > 0) {
  -                $t = " ";
  -                while ($t != "\n") {
  -                        if(fseek($handle, $pos, SEEK_END) == -1) {
  -                                $beginning = true; break; }
  -                        $t = fgetc($handle);
  -                        $pos --;
  -                }
  -                $linecounter --;
  -                if($beginning) rewind($handle);
  -                $text[$lines-$linecounter-1] = fgets($handle);
  -                if($beginning) break;
  +    $handle = fopen($file, "r");
  +    if (!is_resource($handle)) return '';
  +
  +    $linecounter = $lines;
  +    $pos = -2;
  +    $beginning = false;
  +    $text = array();
  +    while ($linecounter > 0) {
  +        $t = " ";
  +        while ($t != "\n") {
  +            if(fseek($handle, $pos, SEEK_END) == -1) {
  +                $beginning = true; break; }
  +            $t = fgetc($handle);
  +            $pos --;
           }
  -        fclose ($handle);
  -        return $text;
  +        $linecounter --;
  +        if($beginning) rewind($handle);
  +        $text[$lines-$linecounter-1] = fgets($handle);
  +        if($beginning) break;
  +    }
  +    fclose ($handle);
  +    return $text;
   }
   
  -function macro_referer($formatter="",$value, &$options) {
  -  global $DBInfo;
  -  if (!$DBInfo->use_referer)
  -    return "[[referer macro: $use_referer is off.]]";
  -  $referer_log_filename = $DBInfo->cache_dir."/referer/referer.log";
  -
  -  if ($value !== true) {
  -    // [[referer]] or ?action=referer
  -    $needle = $formatter->page->name;
  -  } else {
  -    // [[referer()]]
  -    unset($needle);
  -  }
  -
  -  if ($needle) {
  -    $handle = fopen($referer_log_filename, 'r');
  -    $logs = array();
  -    while(!feof($handle)) {
  -      $line = fgets($handle);
  -      list(, $pagename,) = explode("\t", $line);
  -      if ($pagename == $needle)
  -        $logs[] = $line;
  -    }
  -    fclose($handle);
  -    $logs = array_reverse($logs);
  -  } else {
  -    $number_of_lines = 10;
  -    $logs = tail_file ($referer_log_filename, $number_of_lines);
  -  }
  -
  -  $user=$DBInfo->user; # retrive user info
  -  if ($user->id != 'Anonymous') {
  -    $tz_offset= $user->info['tz_offset'];
  -  }
  -  if ($tz_offset == '') {
  -    $tz_offset=date("Z");
  -  }
  -  
  -  $length = sizeof($logs);
  -  for ($c = 0; $c < $length; $c++) {
  -    $fields = explode("\t", $logs[$c]);
  -    $fields[0] = date("Y-m-d H:i:s", strtotime($fields[0])+$tz_offset);
  -    $fields[1] = $formatter->link_tag(urlencode($fields[1]), "", $fields[1]);
  -    if (ereg("[?&][pqQ](uery)?=([^&]+)&?", $fields[2], $regs)) {
  -      $found = urldecode($regs[2]);
  -      if (@iconv("utf-8", "cp949", $found)) {
  -        $found = iconv("utf-8", "cp949", $found);
  -      }
  +function macro_Referer($formatter, $value, &$options) {
  +    global $DBInfo;
  +
  +    if (empty($DBInfo->use_referer))
  +        return "[[Referer macro: $use_referer is off.]]";
  +    $referer_log_filename = $DBInfo->cache_dir."/referer/referer.log";
  +
  +    if ($value !== true) {
  +        // [[referer]] or ?action=referer
  +        $needle = $formatter->page->urlname;
  +    } else {
  +        // [[referer()]]
  +        unset($needle);
  +    }
  +
  +    if ($needle and false) {
  +        // so slow XXX
  +        $handle = fopen($referer_log_filename, 'r');
  +        if (!is_resource($handle)) return '';
  +        $logs = array();
  +        while(!feof($handle)) {
  +            $line = fgets($handle);
  +            list(, $pagename,) = explode("\t", $line);
  +            if ($pagename == $needle)
  +                $logs[] = $line;
  +            if ($count > 100) break;
  +            $count++;
  +        }
  +        fclose($handle);
  +        $logs = array_reverse($logs);
       } else {
  -      unset($found);
  +        $number_of_lines = 200; // XXX
  +        $logs = tail_file ($referer_log_filename, $number_of_lines);
       }
  -    $fields[2] = ($found ? "[ $found ] " : "") ."<a href='$fields[2]'>".$fields[2]."</a>";
   
  -    if (isset($needle)) unset($fields[1]);
  -    $logs[$c] = "<td>". implode("</td><td>", $fields) ."<td>";
  -  }
  -  if ($length > 0) {
  -    $ret = "\n<table>";
  -    $ret.= "<caption>Referer history</caption>";
  -    $ret.= "<tr>";
  -    $ret.= implode("</tr>\n<tr>", $logs);
  -    $ret.= "</tr></table>\n";
  -  } else {
  -    $ret = "";
  -  }
  +    $log = array();
  +    $counter = 10; // XXX
  +    $count = 0;
  +    foreach ($logs as $line) {
  +        list(, $pagename,) = explode("\t", $line);
  +        if (strcmp($pagename,$needle) == 0)
  +            $log[] = $line;
  +        if ($count > $counter) break;
  +        $count++;
  +    }
  +    $logs = $log;
  +
  +    $tz_offset= $formatter->tz_offset;
  +
  +    $length = sizeof($logs);
  +    for ($c = 0; $c < $length; $c++) {
  +        $fields = explode("\t", $logs[$c]);
  +        $fields[0] = date("Y-m-d H:i:s", strtotime($fields[0])+$tz_offset);
  +        $fields[1] = $formatter->link_tag(_rawurlencode($fields[1]), "", urldecode($fields[1]));
  +        $found = '';
  +        if (ereg("[?&][pqQ](uery)?=([^&]+)&?", $fields[2], $regs)) {
  +            $check = strpos($regs[2],'%'); # is it urlecnoded ?
  +            if ($check !== false) {
  +                $found = urldecode($regs[2]);
  +                if (function_exists('iconv')) {
  +                    $test = false;
  +                    if (strcasecmp('utf-8',$DBInfo->charset) != 0) {
  +                        $test = iconv('utf-8', $DBInfo->charset, $found);
  +                        if ($test !== false)
  +                            $found = $test;
  +                    }
  +                    if ($test === false and !empty($DBInfo->url_encodings)) {
  +                        $cs = explode(',',$DBInfo->url_encodings);
  +                        foreach ($cs as $c) {
  +                            $test = @iconv($c, $DBInfo->charset, $found);
  +                            if ($test !== false) {
  +                                $found = $test;
  +                                break;
  +                            }
  +                        }
  +                    }
  +                }
  +            } else {
  +                $found = $regs[2];
  +            }
  +        }
  +        $fields[2] = (!empty($found) ? "[ $found ] " : '') ."<a href='$fields[2]'>".urldecode($fields[2])."</a>";
  +
  +        if (isset($needle)) unset($fields[1]);
  +        $logs[$c] = "<td class='date' style='width:20%'>". implode("</td><td>", $fields) ."<td>";
  +    }
  +    $ret = '';
  +    if ($length > 0) {
  +        $ret = "\n<table>";
  +        $ret.= "<caption>"._("Referer history")."</caption>";
  +        $ret.= "<tr>";
  +        $ret.= implode("</tr>\n<tr>", $logs);
  +        $ret.= "</tr></table>\n";
  +    }
   
  -  return $ret;
  +    return '<div class="Referer">'.$ret.'</div>';
   }
   
  -// vim:et:ts=2:
  +// vim:et:sts=4:sw=4:
   ?>
  
  
  


wkpark      2008/12/27 19:22:38

  Modified:    plugin   referer.php
  Log:
  author name fixed
  
  Revision  Changes    Path
  1.5       +3 -3      moniwiki/plugin/referer.php
  
  Index: referer.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/referer.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- referer.php	27 Dec 2008 10:06:48 -0000	1.4
  +++ referer.php	27 Dec 2008 10:22:38 -0000	1.5
  @@ -1,14 +1,14 @@
   <?php
  -// Copyright 2007-2008 kz <Keizi@mail.co.kr>
  +// Copyright 2007-2008 Keizie <keizie at gmail.com>
   // All rights reserved. Distributable under GPL see COPYING
   // a referer plugin for the MoniWiki
   //
  -// Author: kz name <Keizi@mail.co.kr>
  +// Author: Keizie <keizie at gmail.com>
   // Date: 2007-04-30
   // Name: a referer plugin
   // Description: show referer plugin
   // URL: MoniWiki:RefererPlugin
  -// Version: $Revision: 1.4 $
  +// Version: $Revision: 1.5 $
   // License: GPL
   //
   // Usage: [[Referer]]
  
  
  


wkpark      2008/12/27 21:02:21

  Modified:    plugin   SWFUpload.php
  Log:
  fixed session problem with flash
  
  Revision  Changes    Path
  1.17      +21 -5     moniwiki/plugin/SWFUpload.php
  
  Index: SWFUpload.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SWFUpload.php,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- SWFUpload.php	27 Dec 2008 07:56:24 -0000	1.16
  +++ SWFUpload.php	27 Dec 2008 12:02:21 -0000	1.17
  @@ -8,12 +8,12 @@
   // Name: SWF Upload
   // Description: SWF Upload Plugin
   // URL: http://labb.dev.mammon.se/swfupload/ MoniWikiDev:SWFUpload
  -// Version: $Revision: 1.16 $
  +// Version: $Revision: 1.17 $
   // License: GPL
   //
   // Usage: [[SWFUpload]]
   //
  -// $Id: SWFUpload.php,v 1.16 2008/12/27 07:56:24 wkpark Exp $
  +// $Id: SWFUpload.php,v 1.17 2008/12/27 12:02:21 wkpark Exp $
   
   function macro_SWFUpload($formatter,$value,$opts=array()) {
       global $DBInfo;
  @@ -28,7 +28,12 @@
       if ($DBInfo->nosession) { // ip based
           $myid=md5($_SERVER['REMOTE_ADDR'].'.'.'MONIWIKI'); // FIXME
       } else {
  -        $myid=session_id();
  +        if ($_SESSION['_swfupload'])
  +            $myid = $_SESSION['_swfupload'];
  +        else {
  +            $myid=session_id();
  +            $_SESSION['_swfupload'] = $myid;
  +        }
       }
   
       $prefix=substr($myid,0,$depth);
  @@ -242,6 +247,7 @@
   	        <ul id="mmUploadFileListing">$uploaded</ul>
   		<span id="fileButton">
                   <input type='hidden' name='action' value='swfupload' />
  +                <input type='hidden' name='value' value='$mysubdir' />
                   <input type='hidden' name='popup' value='1' />
                   $myoptions
                   $submit_btn
  @@ -310,18 +316,28 @@
       if ($DBInfo->nosession) { // ip based
           $myid=md5($_SERVER['REMOTE_ADDR'].'.'.'MONIWIKI'); // FIXME
       } else {
  -        $myid=session_id();
  +        if (0 and $_SESSION['_swfupload']) // XXX flash bug?
  +            $myid = $_SESSION['_swfupload'];
  +        else {
  +            list($dum,$myid,$dum2)=explode('/',$options['value'],3);
  +        }
       }
   
       $prefix=substr($myid,0,$depth);
       $mysubdir=$prefix.'/'.$myid.'/';
   
       // debug
  -    //$fp=fopen($swfupload_dir.'/swflog.txt','w+');
  +    //$options['_mysubdir']=$mysubdir;
  +    //$fp=fopen($swfupload_dir.'/swflog.txt','a+');
       //foreach ($options as $k=>$v) {
       //    if (is_string($v))
       //         fwrite($fp,sprintf("%s=>%s\n",$k,$v));
       //}
  +    //foreach ($_SESSION as $k=>$v) {
  +    //    if (is_string($v))
  +    //         fwrite($fp,sprintf("%s=>%s\n",$k,$v));
  +    //}
  +    //fwrite($fp,"------------------------\n");
       //fclose($fp);
       // set the personal subdir
       if ($options['value'] and preg_match('/^[a-z0-9\/]+$/i',$options['value'])) {
  
  
  


wkpark      2008/12/27 23:25:34

  Modified:    plugin   autogoto.php
  Log:
  cleanup. you can register new autogoto keyword like as $autogoto_options=array('man'=>'Man');
  
  Revision  Changes    Path
  1.5       +20 -14    moniwiki/plugin/autogoto.php
  
  Index: autogoto.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/autogoto.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- autogoto.php	25 Dec 2008 09:15:09 -0000	1.4
  +++ autogoto.php	27 Dec 2008 14:25:34 -0000	1.5
  @@ -5,26 +5,32 @@
   //
   // Usage: set $auto_search='AutoGoto'; in the config.php
   //
  -// $Id: autogoto.php,v 1.4 2008/12/25 09:15:09 wkpark Exp $
  +// $Id: autogoto.php,v 1.5 2008/12/27 14:25:34 wkpark Exp $
   
   function do_AutoGoto($formatter,$options) {
       global $DBInfo;
   
  +    $supported=array('man'=>'Man','google'=>'Google','macro'=>'Macro','tpl'=>'TPL');
  +
       if ($DBInfo->autogoto_options) {
  -        $opts=explode(',',$DBInfo->autogoto_options);
  -        $supported=array('man'=>'Man','google'=>'Google','macro'=>'Macro','tpl'=>'TPL');
  -        foreach ($opts as $opt) {
  -            $opt=trim($opt);
  -            if ($opt=='man') {
  -                $v=explode(' ',trim($formatter->page->name));
  -                if (array_key_exists(strtolower($v[0]),$supported)) {
  -                    $val = urlencode($v[1]);
  -                    $options['value'] = $supported[strtolower($v[0])].':'.$val;
  -                    do_goto($formatter,$options);
  -                    return true;
  -                }
  +        if (is_array($DBInfo->autogoto_options)) {
  +            $supported = array_merge($supported, $DBInfo->autogoto_options);
  +        } else if (is_string($DBInfo->autogoto_options)) {
  +            $opts=explode(',',$DBInfo->autogoto_options);
  +            foreach ($opts as $opt) {
  +                $opt=trim($opt);
  +                if (empty($opt)) continue;
  +                $v=explode(' ',$opt);
  +                if (!empty($v[1])) $supported[$v[0]]=$v[1];
               }
           }
  +        $v=explode(' ',trim($formatter->page->name));
  +        if ($v[1] and array_key_exists(strtolower($v[0]),$supported)) {
  +            $val = urlencode($v[1]);
  +            $options['value'] = $supported[strtolower($v[0])].':'.$val;
  +            do_goto($formatter,$options);
  +            return true;
  +        }
       }
      
       $npage=str_replace(' ','',$formatter->page->name);
  @@ -63,5 +69,5 @@
       return true;
   }
   
  -// vim:et:sts=4:
  +// vim:et:sts=4:sw=4:
   ?>
  
  
  


wkpark      2008/12/28 16:14:16

  Modified:    .        wiki.php
  Log:
  oops! check aliaspage correctly.
  
  Revision  Changes    Path
  1.441     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.440
  retrieving revision 1.441
  diff -u -r1.440 -r1.441
  --- wiki.php	27 Dec 2008 07:41:33 -0000	1.440
  +++ wiki.php	28 Dec 2008 07:14:16 -0000	1.441
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.440 2008/12/27 07:41:33 wkpark Exp $
  +// $Id: wiki.php,v 1.441 2008/12/28 07:14:16 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.440 $',1,-1);
  +$_revision = substr('$Revision: 1.441 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -804,7 +804,7 @@
   
       $this->interwiki=null;
   
  -    if (file_exists($this->use_alias))
  +    if (!empty($this->use_alias) and file_exists($this->aliaspage))
         $this->alias=new MetaDB_text($this->aliaspage);
       else
         $this->alias=new MetaDB();
  
  
  


wkpark      2008/12/28 23:33:43

  Modified:    .        wiki.php
  Log:
  support scrap feature.
  
  Revision  Changes    Path
  1.442     +16 -2     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.441
  retrieving revision 1.442
  diff -u -r1.441 -r1.442
  --- wiki.php	28 Dec 2008 07:14:16 -0000	1.441
  +++ wiki.php	28 Dec 2008 14:33:43 -0000	1.442
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.441 2008/12/28 07:14:16 wkpark Exp $
  +// $Id: wiki.php,v 1.442 2008/12/28 14:33:43 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.441 $',1,-1);
  +$_revision = substr('$Revision: 1.442 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -738,6 +738,8 @@
       $this->icon['home']="<img src='$imgdir/${iconset}home.$ext' alt='M' style='vertical-align:middle;border:0px' />";
       $this->icon['main']="<img src='$imgdir/${iconset}main.$ext' class='icon' alt='^' style='vertical-align:middle;border:0px' />";
       $this->icon['print']="<img src='$imgdir/${iconset}print.$ext' alt='P' style='vertical-align:middle;border:0px' />";
  +    $this->icon['scrap']="<img src='$imgdir/${iconset}scrap.$ext' alt='S' style='vertical-align:middle;border:0px' />";
  +    $this->icon['unscrap']="<img src='$imgdir/${iconset}unscrap.$ext' alt='S' style='vertical-align:middle;border:0px' />";
       $this->icon['attach']="<img src='$imgdir/${iconset}attach.$ext' alt='@' style='vertical-align:middle;border:0px' />";
       $this->icon['external']="<img class='externalLink' src='$imgdir/${iconset}external.$ext' alt='[]' style='vertical-align:middle;border:0px' />";
       $this->icon_sep=" ";
  @@ -4728,6 +4730,9 @@
           $this->icons['pref']=array("UserPreferences","",$this->icon['pref']);
         } else
           $this->icons['pref']=array("UserPreferences","",$this->icon['pref']);
  +      if ($options['scrapped'])
  +        $this->icons['scrap']=array("","?action=scrap&amp;unscrap=1",$this->icon['unscrap']);
  +
       } else
         $user_link=$this->link_tag("UserPreferences","",_($this->icon['user']));
   
  @@ -5116,6 +5121,15 @@
     if (!empty($DBInfo->robots)) {
       $options['is_robot']=isRobot($_SERVER['HTTP_USER_AGENT']);
     }
  +
  +  if ($user->id != 'Anonymous' and !empty($DBInfo->use_scrap)) {
  +    $pages = explode("\t",$user->info['scrapped_pages']);
  +    $tmp = array_flip($pages);
  +    if (isset($tmp[$options['pagename']]))
  +      $options['scrapped']=1;
  +    else
  +      $options['scrapped']=0;
  +  }
   }
   
   function init_locale($lang) {
  
  
  


wkpark      2008/12/28 23:33:43

  Modified:    plugin   scrap.php pagelist.php
  Log:
  support scrap feature.
  
  Revision  Changes    Path
  1.3       +37 -13    moniwiki/plugin/scrap.php
  
  Index: scrap.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/scrap.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- scrap.php	10 Dec 2008 09:59:49 -0000	1.2
  +++ scrap.php	28 Dec 2008 14:33:43 -0000	1.3
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a scrap action plugin for the MoniWiki
   //
  -// $Id: scrap.php,v 1.2 2008/12/10 09:59:49 wkpark Exp $
  +// $Id: scrap.php,v 1.3 2008/12/28 14:33:43 wkpark Exp $
   
   function macro_Scrap($formatter,$value,$options) {
     global $DBInfo;
  @@ -19,8 +19,9 @@
     foreach ($pages as $p) {
       if ($DBInfo->hasPage($p))
         $out.='<li>'.($formatter->link_tag(_urlencode($p),'',$p)).'</li>';
  -    else if ($p)
  -      $out.=substr($formatter->macro_repl('PageList',$p),4,-6);
  +    else if (!empty($p)) {
  +      $out.=substr($formatter->macro_repl('PageList',$p),4,-6,array('rawre'=>1));
  +    }
     }
     return '<ul>'.$out.'</ul>';
   }
  @@ -41,17 +42,39 @@
   
     $udb=&$DBInfo->udb;
     $userinfo=$udb->getUser($options['id']);
  -  if (isset($options['scrapped_pages'])) {
  -    $pages=preg_replace("/\n\s*/","\n",$options['scrapped_pages']);
  -    $pages=preg_replace("/\s*\n/","\n",$pages);
  -    $pages=explode("\n",$pages);
  -    $pages=array_unique ($pages);
  -    $page_list=join("\t",$pages);
  -    $userinfo->info['scrapped_pages']=$page_list;
  +  if (isset($options['scrapped_pages']) or (empty($DBInfo->scrap_manual) and empty($options['manual']))) {
  +    $pages = array();
  +    if (isset($options['scrapped_pages'])) {
  +        $pages = preg_replace("/\n\s*/","\n",$options['scrapped_pages']);
  +        $pages = preg_replace("/\s*\n/","\n",$pages);
  +        $pages = explode("\n",$pages);
  +        $pages = array_unique ($pages);
  +        $title = _("Scrap lists updated.");
  +    } else {
  +        $pages = explode("\t",$userinfo->info['scrapped_pages']);
  +        if (!empty($options['unscrap'])) {
  +            $tmp = array_flip($pages);
  +            if (isset($tmp[$formatter->page->name]))
  +                unset($tmp[$formatter->page->name]);
  +            $pages = array_flip($tmp);
  +            $title = sprintf(_("\"%s\" is unscrapped."), $formatter->page->name);
  +        } else {
  +            $pages[] = $formatter->page->name;
  +            $title = sprintf(_("\"%s\" is scrapped."), $formatter->page->name);
  +        }
  +        $pages = array_unique ($pages);
  +    }
  +    $page_list = join("\t",$pages);
  +    $userinfo->info['scrapped_pages'] = $page_list;
       $udb->saveUser($userinfo);
   
  -    $title = _("Scrap lists updated.");
  -    $formatter->send_header("",$options);
  +    if ($DBInfo->use_refresh) {
  +      $sec = $DBInfo->use_refresh - 1;
  +      $lnk = $formatter->link_url($formatter->page->urlname,'?action=show');
  +      $myrefresh = 'Refresh: '.$sec.'; url='.qualifiedURL($lnk);
  +    }
  +
  +    $formatter->send_header($myrefresh,$options);
       $formatter->send_title($title,"",$options);
       $formatter->send_page("Goto [$options[page]]\n");
       $formatter->send_footer();
  @@ -65,9 +88,10 @@
     $title = sprintf(_("Do you want to scrap \"%s\" ?"), $options['page']);
     $formatter->send_header("",$options);
     $formatter->send_title($title,"",$options);
  +  $msg = _("Scrapped pages");
     print "<form method='post'>
   <table border='0'><tr>
  -<th>Scrap pages:</th><td><textarea name='scrapped_pages' cols='30' rows='5' value='' />$page_lists</textarea></td></tr>
  +<th>$msg :</th><td><textarea name='scrapped_pages' cols='40' rows='5' value='' />$page_lists</textarea></td></tr>
   <tr><td></td><td>
       <input type='hidden' name='action' value='scrap' />
       <input type='submit' value='Scrap' />
  
  
  
  1.4       +4 -2      moniwiki/plugin/pagelist.php
  
  Index: pagelist.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/pagelist.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- pagelist.php	20 Dec 2006 22:58:55 -0000	1.3
  +++ pagelist.php	28 Dec 2008 14:33:43 -0000	1.4
  @@ -5,7 +5,7 @@
   //
   // Usage: [[PageList(a needle for list,dir,info,date]]
   //
  -// $Id: pagelist.php,v 1.3 2006/12/20 22:58:55 wkpark Exp $
  +// $Id: pagelist.php,v 1.4 2008/12/28 14:33:43 wkpark Exp $
   
   function macro_PageList($formatter,$arg="",$options=array()) {
     global $DBInfo;
  @@ -29,7 +29,9 @@
     if ($options['subdir']) {
       $needle=_preg_search_escape($formatter->page->name);
       $needle='^'.$needle.'\/';
  -  } else
  +  } else if (!empty($options['rawre']))
  +    $needle = $arg;
  +  else
       $needle=_preg_search_escape($arg);
   
     $test=@preg_match("/$needle/","",$match);
  
  
  


wkpark      2008/12/28 23:34:03

  Added:       imgs/moni2 scrap.png unscrap.png
  Log:
  and icons
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/moni2/scrap.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/moni2/unscrap.png
  
  	<<Binary file>>
  
  


wkpark      2008/12/28 23:40:16

  Modified:    plugin   scrap.php
  Log:
  return null string if user->id == Anonymous
  
  Revision  Changes    Path
  1.4       +3 -4      moniwiki/plugin/scrap.php
  
  Index: scrap.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/scrap.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- scrap.php	28 Dec 2008 14:33:43 -0000	1.3
  +++ scrap.php	28 Dec 2008 14:40:16 -0000	1.4
  @@ -3,15 +3,14 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a scrap action plugin for the MoniWiki
   //
  -// $Id: scrap.php,v 1.3 2008/12/28 14:33:43 wkpark Exp $
  +// $Id: scrap.php,v 1.4 2008/12/28 14:40:16 wkpark Exp $
   
   function macro_Scrap($formatter,$value,$options) {
     global $DBInfo;
   
     $user=&$DBInfo->user; # get cookie
  -  if ($user->id == 'Anonymous') {
  -    return '[[Scrap]]';
  -  }
  +  if ($user->id == 'Anonymous') return '';
  +
     $userinfo=$DBInfo->udb->getUser($user->id);
     $pages=explode("\t",$userinfo->info['scrapped_pages']);
     if (!in_array($options['page'],$pages)) $pages[]=$options['page'];
  
  
  


wkpark      2008/12/29 14:41:12

  Modified:    plugin/security acl.php
  Log:
  simplified.
  
  Revision  Changes    Path
  1.10      +5 -10     moniwiki/plugin/security/acl.php
  
  Index: acl.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/acl.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- acl.php	22 Dec 2008 16:26:23 -0000	1.9
  +++ acl.php	29 Dec 2008 05:41:12 -0000	1.10
  @@ -1,6 +1,6 @@
   <?php
   # a ACL security plugin for the MoniWiki (experimental)
  -# $Id: acl.php,v 1.9 2008/12/22 16:26:23 wkpark Exp $
  +# $Id: acl.php,v 1.10 2008/12/29 05:41:12 wkpark Exp $
   #
   # Please see also http://www.dokuwiki.org/wiki:discussion:acl2
   #
  @@ -107,13 +107,10 @@
                               unset($tmp[$t]);
                           else
                               $tmp[$t]=$pri;
  +                        if (isset($denied[$t]) and $denied[$t] <= $pri)
  +                            unset($denied[$t]);
                       }
  -
                       $allowed=array_merge($allowed,$tmp);
  -                    if ($acl[3]=='*' and isset($denied['*'])) {
  -                        if ($allowed['*']>=$denied['*']) unset($denied['*']);
  -                        else $unset($allowed['*']);
  -                    }
                   } else if ($acl[2] == 'deny') {
                       $tmp=split(',',$acl[3]);
                       $tmp=array_flip($tmp);
  @@ -126,12 +123,10 @@
                               unset($tmp[$t]);
                           else
                               $tmp[$t]=$pri;
  +                        if (isset($allowed[$t]) and $allowed[$t] <= $pri)
  +                            unset($allowed[$t]);
                       }
                       $denied=array_merge($denied,$tmp);
  -                    if ($acl[3]=='*' and isset($allowed['*'])) {
  -                        if ($allowed['*']<=$denied['*']) unset($allowed['*']);
  -                        else unset($denied['*']);
  -                    }
                   } else if ($acl[2] == 'protect') {
                       $tmp=split(',',$acl[3]);
                       $tmp=array_flip($tmp);
  
  
  


wkpark      2008/12/29 16:21:15

  Modified:    local/js i18n.js
  Log:
  oops! return oldconfirm()
  
  Revision  Changes    Path
  1.4       +2 -2      moniwiki/local/js/i18n.js
  
  Index: i18n.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/i18n.js,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- i18n.js	18 Dec 2008 11:12:06 -0000	1.3
  +++ i18n.js	29 Dec 2008 07:21:14 -0000	1.4
  @@ -7,7 +7,7 @@
    * @name: a simple I18n javascript module.
    * @Description: a Simple Javascript module to support I18n.
    * @url: MoniWiki:JavascriptI18n
  - * @version: $Revision: 1.3 $
  + * @version: $Revision: 1.4 $
    * @license: GPL
    *
    * _translations = {
  @@ -57,7 +57,7 @@
               oldalert(_(txt));
           }
           window.confirm = function(txt) {
  -            oldconfirm(_(txt));
  +            return oldconfirm(_(txt));
           }
       }
   })();
  
  
  


wkpark      2008/12/29 16:28:04

  Modified:    local    autosave.js
  Log:
  set expires. fixed msg
  
  Revision  Changes    Path
  1.2       +11 -2     moniwiki/local/autosave.js
  
  Index: autosave.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/autosave.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- autosave.js	27 Nov 2007 00:34:24 -0000	1.1
  +++ autosave.js	29 Dec 2008 07:28:04 -0000	1.2
  @@ -35,8 +35,13 @@
           txts=cookieToVar(val);
   
           if (txts[key]) {
  -            if (confirm('Are you sure to restore page ?') )
  +            if (true && confirm('Auto saved text found.\nAre you sure to restore page ?') ) {
                   form.elements['savetext'].value=txts[key];
  +
  +                delete txts[key];
  +                var cookie = varToCookie(txts);
  +                setCookie(_cookie_autosave, cookie);
  +            }
           }
           self = this;
           self.form=form;
  @@ -48,7 +53,11 @@
               key=key.replace(/^https?:\/\//,'');
               txts[key]=self.form.elements['savetext'].value;
               cookie=varToCookie(txts);
  -            setCookie(_cookie_autosave,cookie);
  +
  +            var exp = new Date(); // 7-days
  +            exp.setTime(exp.getTime() + 7*24*60*60*1000);
  +
  +            setCookie(_cookie_autosave, cookie, exp );
               } ,2000);
       }
   }
  
  
  


wkpark      2008/12/30 03:37:53

  Modified:    .        wiki.php
  Log:
  fixed wordrule.
  empty/isset fix.
  
  Revision  Changes    Path
  1.443     +8 -7      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.442
  retrieving revision 1.443
  diff -u -r1.442 -r1.443
  --- wiki.php	28 Dec 2008 14:33:43 -0000	1.442
  +++ wiki.php	29 Dec 2008 18:37:52 -0000	1.443
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.442 2008/12/28 14:33:43 wkpark Exp $
  +// $Id: wiki.php,v 1.443 2008/12/29 18:37:52 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.442 $',1,-1);
  +$_revision = substr('$Revision: 1.443 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -101,7 +101,7 @@
         $processors=array_merge($processors,$DBInfo->myprocessors);
       return $processors[$prog];
     }
  -  if ($DBInfo->include_path)
  +  if (!empty($DBInfo->include_path))
       $dirs=explode(':',$DBInfo->include_path);
     else
       $dirs=array('.');
  @@ -500,8 +500,8 @@
     }
   
     function pageCounter($pagename) {
  -    $count=dba_fetch($pagename,$this->counter);
  -    return $count;
  +    $count = dba_fetch($pagename,$this->counter);
  +    return $count ? $count: 0;
     }
   
     function close() {
  @@ -1891,8 +1891,9 @@
   
       #$punct="<\"\'}\]\|;,\.\!";
       #$punct="<\'}\]\)\|;\.\!"; # , is omitted for the WikiPedia
  -    $punct="<\'}\]\|\.\!"; # , is omitted for the WikiPedia
  +    #$punct="<\'}\]\|\.\!"; # , is omitted for the WikiPedia
       $punct="<\'}\]\|\.\!\010\006"; # , is omitted for the WikiPedia
  +    $punct="<>\"\'}\]\|\.\!\010\006"; # " and > added
       $url="wiki|http|https|ftp|nntp|news|irc|telnet|mailto|file|attachment";
       if ($DBInfo->url_schemas) $url.='|'.$DBInfo->url_schemas;
       $this->urls=$url;
  @@ -1919,7 +1920,7 @@
       #  * single bracketted words [Hello World] etc.
       #  * single bracketted words with double quotes ["Hello World"]
       #  * double bracketted words with double quotes [["Hello World"]]
  -    "(?<!\[)\!?\[(\[)$single(\")?(?:[^\[\]\",<\s'][^\[\],>]{1,255}[^\"])(?(4)\")(?(3)\])\](?!\])";
  +    "(?<!\[)\!?\[(\[)$single(\")?(?:[^\[\]\",<\s'][^\[\],>]{0,255}[^\"])(?(4)\")(?(3)\])\](?!\])";
   
       if ($camelcase)
         $this->wordrule.='|'.
  
  
  


wkpark      2008/12/30 03:38:22

  Modified:    plugin   RecentChanges.php
  Log:
  new 'board' type added.
  support hits.
  
  Revision  Changes    Path
  1.27      +22 -5     moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- RecentChanges.php	14 Dec 2008 11:01:49 -0000	1.26
  +++ RecentChanges.php	29 Dec 2008 18:38:22 -0000	1.27
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.26 2008/12/14 11:01:49 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.27 2008/12/29 18:38:22 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     $options['trail']='';
  @@ -36,6 +36,7 @@
     $date_fmt=$DBInfo->date_fmt_rc;
     $days=$DBInfo->rc_days ? $DBInfo->rc_days:RC_DEFAULT_DAYS;
     $perma_icon=$formatter->perma_icon;
  +  $changed_time_fmt = $DBInfo->changed_time_fmt;
   
     $args=explode(',',$value);
   
  @@ -56,10 +57,12 @@
         else if ($arg=="nonew") $checknew=0;
         else if ($arg=="showhost") $showhost=1;
         else if ($arg=="comment") $comment=1;
  +      else if ($arg=="comments") $comment=1;
         else if ($arg=="nobookmark") $nobookmark=1;
         else if ($arg=="noperma") $perma_icon='';
         else if ($arg=="button") $button=1;
         else if ($arg=="timesago") $timesago=1;
  +      else if ($arg=="hits") $use_hits=1;
         else if ($arg=="daysago") $use_daysago=1;
         else if ($arg=="simple") {
           $use_day=0;
  @@ -71,9 +74,16 @@
         } else if ($arg=="table") {
           $bra="<table border='0' cellpadding='0' cellspacing='0' width='100%'>";
           $template=
  -  '$out.= "<tr><td style=\'white-space:nowrap;width:2%\'>$icon</td><td style=\'width:40%\'>$title</td><td style=\'width:15%\'>$date</td><td>$user $count $extra</td></tr>\n";';
  +  '$out.= "<tr><td style=\'white-space:nowrap;width:2%\'>$icon</td><td style=\'width:40%\'>$title</td><td class=\'date\' style=\'width:15%\'>$date</td><td>$user $count $extra</td></tr>\n";';
           $cat="</table>";
           $cat0="";
  +      } else if ($arg=="board") {
  +        $changed_time_fmt = 'm-d [H:i]';
  +        $use_day=0;
  +        $template_bra="<table border='0' cellpadding='0' cellspacing='0' width='100%'>";
  +        $template=
  +  '$out.= "<tr$alt><td style=\'white-space:nowrap;width:2%\'>$icon</td><td style=\'width:40%\'>$title</td><td class=\'date\' style=\'width:15%\'>$date</td><td class=\'user\'>$user</td><td class=\'editinfo\'>$count</td><td>$extra</td><td class=\'hits\'>$hits</td></tr>\n";';
  +        $template_cat="</table>";
         }
       }
     }
  @@ -163,6 +173,7 @@
     $out="";
     $ratchet_day= FALSE;
     $br="";
  +  $ii = 0;
     foreach ($lines as $line) {
       $parts= explode("\t", $line);
       $page_key=$parts[0];
  @@ -233,8 +244,8 @@
       $title=htmlspecialchars($title);
       $title= $formatter->link_tag($pageurl,"",$title,$target);
   
  -    if (! empty($DBInfo->changed_time_fmt)) {
  -      $date= gmdate($DBInfo->changed_time_fmt, $ed_time+$tz_offset);
  +    if (! empty($changed_time_fmt)) {
  +      $date= gmdate($changed_time_fmt, $ed_time+$tz_offset);
         if ($timesago) {
           $time_diff=(int)($time_current - $ed_time)/60;
           if ($time_diff < 1440) {
  @@ -243,6 +254,10 @@
         }
       }
   
  +    if ($use_hits) {
  +      $hits = $DBInfo->counter->pageCounter($page_name);
  +    }
  +
       if ($DBInfo->show_hosts) {
         if ($showhost && $user == 'Anonymous')
           $user= $addr;
  @@ -260,11 +275,13 @@
       if ($comment && $log)
         $extra="&nbsp; &nbsp; &nbsp; <small>$log</small>";
   
  +    $alt = ($ii % 2 == 0) ? ' class="alt"':'';
       eval($template);
   
       $logs[$page_key]= 1;
  +    ++$ii;
     }
  -  return $btnlist.'<div>'.$out.$cat0.'</div>';
  +  return $btnlist.'<div class="recentChanges">'.$template_bra.$out.$template_cat.$cat0.'</div>';
   }
   // vim:et:sts=2:
   ?>
  
  
  


wkpark      2008/12/30 07:09:49

  Modified:    plugin   scrap.php
  Log:
  more fixup
  
  Revision  Changes    Path
  1.5       +5 -3      moniwiki/plugin/scrap.php
  
  Index: scrap.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/scrap.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- scrap.php	28 Dec 2008 14:40:16 -0000	1.4
  +++ scrap.php	29 Dec 2008 22:09:49 -0000	1.5
  @@ -3,9 +3,9 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a scrap action plugin for the MoniWiki
   //
  -// $Id: scrap.php,v 1.4 2008/12/28 14:40:16 wkpark Exp $
  +// $Id: scrap.php,v 1.5 2008/12/29 22:09:49 wkpark Exp $
   
  -function macro_Scrap($formatter,$value,$options) {
  +function macro_Scrap($formatter,$value='',$options=array()) {
     global $DBInfo;
   
     $user=&$DBInfo->user; # get cookie
  @@ -19,7 +19,9 @@
       if ($DBInfo->hasPage($p))
         $out.='<li>'.($formatter->link_tag(_urlencode($p),'',$p)).'</li>';
       else if (!empty($p)) {
  -      $out.=substr($formatter->macro_repl('PageList',$p),4,-6,array('rawre'=>1));
  +      $list = $formatter->macro_repl('PageList',$p,array('rawre'=>1));
  +      if (empty($list))
  +      	$out.=substr($list,4,-6);
       }
     }
     return '<ul>'.$out.'</ul>';
  
  
  


wkpark      2008/12/30 07:10:29

  Added:       plugin   autosave.php
  Log:
  AutoSave action plugin added
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/autosave.php
  
  Index: autosave.php
  ===================================================================
  <?php
  // Copyright 2008 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a savepage action plugin for the MoniWiki
  //
  // Author: Won-Kyu Park <wkpark@kldp.org>
  // Date: 2008-12-29
  // Name: a autosave action plugin
  // Description: a autosave action plugin
  // URL: MoniWiki:AutoSavePlugin
  // Version: $Revision: 1.1 $
  // License: GPL
  // Usage: add the config variable $use_autosave=1; to config.php
  //
  // $Id: autosave.php,v 1.1 2008/12/29 22:10:29 wkpark Exp $
  
  function do_autosave($formatter,$options) {
      global $DBInfo;
  
      if ($DBInfo->nosession) { // ip based
          if ($DBInfo->user->id == 'Anonymous') {
              $myid = md5($_SERVER['REMOTE_ADDR'].'.'.'MONIWIKI'); // IP based for Anonymous user XXX
          } else {
              $myid = md5($DBInfo->user->id.$_SERVER['REMOTE_ADDR'].'.'.'MONIWIKI');
          }
      } else {
          if (0) {
              if ($_SESSION['_autosave'])
                  $myid = $_SESSION['_autosave'];
              else {
                  $myid = session_id();
                  $_SESSION['_autosave'] = $myid;
              }
          } else {
              if ($DBInfo->user->id == 'Anonymous') {
                  $myid = md5($_SERVER['REMOTE_ADDR'].'.'.'MONIWIKI'); // IP based for Anonymous user XXX
              } else {
                  $myid = md5($DBInfo->user->id.$_SERVER['REMOTE_ADDR'].'.'.'MONIWIKI');
              }
          }
      }
      $savetext = $options['savetext'];
      $datestamp = substr($options['datestamp'], 0, 10); // only 10-digits used
  
      $myid = md5($myid . $formatter->page->name);
      if (isset($options['section']))
          $myid.= '.'.$options['section']; // XXX section support
  
      $savetext = preg_replace("/\r\n|\r/", "\n", $savetext);
      $savetext = _stripslashes($savetext);
  
      $save = new Cache_text('autosave');
  
      if ($options['retrive']) {
          $saved = $save->fetch($myid);
          $os = rtrim($saved);
  
          $stamp = $save->mtime($myid);
          echo $stamp."\n".$os;
          return true;
      }
      if ($save->exists($myid) and $save->mtime($myid) > $datestamp) {
          echo 'false';
          return false;
      }
      $save->update($myid, $savetext);
      echo 'true';
      return true;
  }
  
  // vim:et:sts=4:sw=4:
  ?>
  
  
  


wkpark      2008/12/30 07:14:47

  Modified:    .        wikilib.php
  Log:
  revert safari/chrome fix for cookie bug.
  
  Revision  Changes    Path
  1.258     +10 -6     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.257
  retrieving revision 1.258
  diff -u -r1.257 -r1.258
  --- wikilib.php	27 Dec 2008 02:43:08 -0000	1.257
  +++ wikilib.php	29 Dec 2008 22:14:47 -0000	1.258
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.257 2008/12/27 02:43:08 wkpark Exp $
  +// $Id: wikilib.php,v 1.258 2008/12/29 22:14:47 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -535,8 +535,10 @@
        $_COOKIE['MONI_ID']=$ticket.'.'.$this->id;
        if ($this->info['nick']) $_COOKIE['MONI_NICK']=$this->info['nick'];
   
  -     $path=strpos($_SERVER['HTTP_USER_AGENT'],'Safari')===false ?
  -       get_scriptname():'/';
  +     #$path=strpos($_SERVER['HTTP_USER_AGENT'],'Safari')===false ?
  +     #  get_scriptname():'/';
  +     $path = get_scriptname();
  +     #$path = preg_replace('@(?<=/)[^/]+$@','',$path);
        return "Set-Cookie: MONI_ID=".$ticket.'.'.$this->id.'; expires='.gmdate('l, d-M-Y H:i:s',time()+60*60*24*30).' GMT; Path='.$path;
     }
   
  @@ -545,8 +547,10 @@
        $_COOKIE['MONI_ID']="Anonymous";
   
        # check safari
  -     $path=strpos($_SERVER['HTTP_USER_AGENT'],'Safari')===false ?
  -       get_scriptname():'/';
  +     #$path=strpos($_SERVER['HTTP_USER_AGENT'],'Safari')===false ?
  +     #  get_scriptname():'/';
  +     $path = get_scriptname();
  +     #$path = preg_replace('@(?<=/)[^/]+$@','',$path);
        return "Set-Cookie: MONI_ID=".$this->id."; expires=Tuesday, 01-Jan-1999 12:00:00 GMT; Path=".$path;
     }
   
  @@ -973,7 +977,7 @@
   <input type="submit" tabindex="5" value="$save_msg" accesskey="x" />
   <!-- <input type="reset" value="Reset" />&nbsp; -->
   $preview_btn$wysiwyg_btn$skip_preview
  -$extra
  +$extra<span id="save_state"></span>
   </div>
   </form>
   </div>
  
  
  


wkpark      2008/12/30 07:17:13

  Modified:    .        wiki.php
  Log:
  strtr <,> to numerical entities
  
  Revision  Changes    Path
  1.444     +14 -9     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.443
  retrieving revision 1.444
  diff -u -r1.443 -r1.444
  --- wiki.php	29 Dec 2008 18:37:52 -0000	1.443
  +++ wiki.php	29 Dec 2008 22:17:13 -0000	1.444
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.443 2008/12/29 18:37:52 wkpark Exp $
  +// $Id: wiki.php,v 1.444 2008/12/29 22:17:13 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.443 $',1,-1);
  +$_revision = substr('$Revision: 1.444 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -40,7 +40,7 @@
       $updated=false;
       $mt=$cp->mtime('plugins');
       foreach ($dirs as $d) {
  -      $ct=filemtime($d.'/plugin/.');
  +      $ct=filemtime($d.'/plugin/.'); // XXX mtime fix
         $updated=$ct > $mt ? true:$updated;
       }
       if ($updated) {
  @@ -128,7 +128,7 @@
     static $filters=array();
     if ($filters) return $filters[strtolower($filtername)];
     global $DBInfo;
  -  if ($DBInfo->include_path)
  +  if (!empty($DBInfo->include_path))
       $dirs=explode(':',$DBInfo->include_path);
     else
       $dirs=array('.');
  @@ -143,7 +143,7 @@
       }
     }
   
  -  if (is_array($DBInfo->myfilters))
  +  if (!empty($DBInfo->myfilters) and is_array($DBInfo->myfilters))
       $filters=array_merge($filters,$DBInfo->myfilters);
   
     return $filters[strtolower($filtername)];
  @@ -2279,6 +2279,9 @@
         break;
       }
   
  +    $url=str_replace('&lt;','<',$url); // revert from baserule
  +    $url=preg_replace('/&(?!#?[a-z0-9]+;)/i','&amp;',$url);
  +
       if (($p=strpos($url,':')) !== false and
           (!isset($url{$p+1}) or (isset($url{$p+1}) and $url{$p+1}!=':'))) {
         if ($url[0]=='a') # attachment:
  @@ -2306,7 +2309,7 @@
           $myname=strtok('');
           $link=email_guard($link,$this->email_guard);
           $myname=!empty($myname) ? $myname:$link;
  -        $link=preg_replace('/&(?!#?[a-z0-9]+;)/i','&amp;',$link);
  +        #$link=preg_replace('/&(?!#?[a-z0-9]+;)/i','&amp;',$link);
           return $this->icon['mailto']."<a class='externalLink' href='mailto:$link' $attr>$myname</a>$external_icon";
         }
   
  @@ -2357,9 +2360,9 @@
           }
           if ($text != $url) $eclass='named';
           else $eclass='unnamed';
  +        $link =str_replace(array('<','>'),array('&#x3c;','&#x3e;'),$link);
           return $icon. "<a class='externalLink $eclass' $attr $this->external_target href='$link'>$text</a>".$external_icon.$external_link;
         } # have no space
  -      $link=str_replace('&','&amp;',$url);
         if (preg_match("/^(http|https|ftp)/",$url)) {
           if (preg_match("/(^.*\.(png|gif|jpeg|jpg))(([\?&]([a-z]+=[0-9a-z]+))*)$/i",$url,$match)) {
             $url=$match[1];
  @@ -2375,9 +2378,11 @@
         }
         if (substr($url,0,7)=='http://' and $url[7]=='?') {
           $link=substr($url,7);
  +        $link = str_replace(array('<','>'),array('&#x3c;','&#x3e;'),$link);
           return "<a class='internalLink' href='$link'>$link</a>";
         }
         $url=urldecode($url);
  +      $link = str_replace(array('<','>'),array('&#x3c;','&#x3e;'),$link);
         return "<a class='externalLink' $attr href='$link' $this->external_target>$url</a>";
       } else {
         if ($url{0}=='?') {
  @@ -3356,7 +3361,7 @@
       } else {
         # XXX need to redesign pagelink method ?
         if (empty($DBInfo->without_pagelinks_cache)) {
  -        $dmt=filemtime($DBInfo->text_dir.'/.');
  +        $dmt=filemtime($DBInfo->text_dir.'/.'); // mtime fix XXX
           $this->update_pagelinks= $dmt > $this->cache->mtime($this->page->name);
           #like as..
           #if (!$this->update_pagelinks) $this->pagelinks=$this->get_pagelinks();
  @@ -5418,7 +5423,7 @@
         $cache=new Cache_text('pages',2,'html');
         $mcache=new Cache_text('dynamicmacros',2);
         $mtime=$cache->mtime($pagename);
  -      $dtime=filemtime($Config['data_dir'].'/text/.'); // XXX
  +      $dtime=filemtime($Config['text_dir'].'/.'); // mtime fix XXX
         $now=time();
         $check=$now-$mtime;
         $extra_out='';
  
  
  


wkpark      2008/12/30 07:18:47

  Modified:    local    autosave.js folding.js
  Log:
  autosave.js: enhanced.
  folding.js: fix for with/without mootools/prototype
  
  Revision  Changes    Path
  1.3       +91 -12    moniwiki/local/autosave.js
  
  Index: autosave.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/autosave.js,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- autosave.js	29 Dec 2008 07:28:04 -0000	1.2
  +++ autosave.js	29 Dec 2008 22:18:46 -0000	1.3
  @@ -1,5 +1,25 @@
  +/**
  + *
  + * @author: Won-Kyu Park <wkpark@kldp.org>
  + * @date: 2008-12-29
  + * @name: a autosave javascript module.
  + * @Description: a autosave Javascript module.
  + * @url: MoniWiki:AutoSave
  + * @version: $Revision: 1.3 $
  + * @license: GPL
  + *
  + * $Id: autosave.js,v 1.3 2008/12/29 22:18:46 wkpark Exp $
  + *
  + */
  +
   var _cookie_autosave='_MONI_SAVE_';
   
  +if ( typeof _ == 'undefined') {
  +    _ = function(msgid) {
  +        return msgid;
  +    };
  +}
  +
   function cookieToVar(cookie) {
       if (!cookie) return {};
       var txt=cookie.split(/\0\0/);
  @@ -26,42 +46,101 @@
       setCookie(_cookie_autosave,'');
   }
   
  -function moni_autosave(form) {
  +function moni_autosave(form, min, sec) {
       var val=getCookie(_cookie_autosave);
   
  -    if (!this.timer) {
  -        var key=location+'';
  -        key=key.replace(/^https?:\/\//,'');
  -        txts=cookieToVar(val);
  +    if (typeof min == 'undefined')
  +        min = 3; // 3-minuite
  +    if (typeof sec == 'undefined')
  +        sec = 10; // 10-second
   
  +    if (!this.timer) {
  +        var key = location+'';
  +        var ret = '';
  +        var stamp = 0;
  +        key = key.replace(/^https?:\/\//,'');
  +        txts = cookieToVar(val);
  +
  +        {
  +            var href = location+'';
  +            var postdata = 'action=autosave/ajax&retrive=1';
  +            ret = HTTPPost(href, postdata);
  +            if (ret.match(/^false/)) {
  +                ret = null;
  +            } else {
  +                var p = ret.indexOf("\n");
  +                // 1230555376142
  +                if (p > 0) {
  +                    stamp = ret.substr(0, p) + '000'; // 10-digits
  +                    ret = ret.substr(p+1);
  +                }
  +            }
  +        }
           if (txts[key]) {
  -            if (true && confirm('Auto saved text found.\nAre you sure to restore page ?') ) {
  -                form.elements['savetext'].value=txts[key];
  +            if ( confirm("Auto saved text found.\nAre you sure to restore page ?\n(You can undo/redo with Ctrl-Z/Ctrl-Shift-Z)") ) {
  +                var p = txts[key].indexOf("\n");
  +                var cstamp = 0;
  +                var saved = '';
  +                if (p > 0) {
  +                    cstamp = txts[key].substr(0,p);
  +                    saved = txts[key].substr(p+1);
  +                }
  +
  +                if (stamp > cstamp) saved = ret;
  +                form.elements['savetext'].value = saved;
   
                   delete txts[key];
                   var cookie = varToCookie(txts);
                   setCookie(_cookie_autosave, cookie);
               }
  +        } else if (ret && confirm("Auto saved text found.\nAre you sure to restore page ?\n(You can undo/redo with Ctrl-Z/Ctrl-Shift-Z)") ) {
  +            form.elements['savetext'].value = ret;
           }
           self = this;
  -        self.form=form;
  +        self.form = form;
  +        this.timer2 = setInterval(function() { ajax_save(self.form); } ,min * 60*1000);
           this.timer = setInterval(function() {
               var val=getCookie(_cookie_autosave);
               var cookie;
               var txts=cookieToVar(val);
               var key=location+'';
               key=key.replace(/^https?:\/\//,'');
  -            txts[key]=self.form.elements['savetext'].value;
  +            var time = new Date();
  +            var stamp = time.getTime();
  +
  +            txts[key] = stamp + "\n" + self.form.elements['savetext'].value;
               cookie=varToCookie(txts);
   
  -            var exp = new Date(); // 7-days
  +            var exp = new Date(); // 7-days expires
               exp.setTime(exp.getTime() + 7*24*60*60*1000);
   
               setCookie(_cookie_autosave, cookie, exp );
  -            } ,2000);
  +        } , sec * 1000); // cookie save
       }
   }
   
  +function ajax_save(form) {
  +    var href = location+'';
  +    var time = new Date();
  +    var stamp = time.getTime();
  +    var postdata = 'action=autosave/ajax&savetext=' + encodeURIComponent(form.elements['savetext'].value);
  +    postdata += '&datestamp=' + stamp;
  +
  +    var loading = new Image();
  +    loading.src = _url_prefix + '/imgs/loading.gif';
  +    loading.setAttribute('style','vertical-align:middle');
  +
  +    var state = document.getElementById('save_state');
  +    if (state) {
  +        txt = document.createTextNode(_("Current text saved temporary."));
  +        state.appendChild(loading);
  +        state.appendChild(txt);
  +    }
  +
  +    setTimeout(function() { state.removeChild(loading); state.removeChild(txt); }, 5000);
  +    var ret = HTTPPost(href, postdata);
  +}
  +
   function setCookie(name, value, expires, path, domain, secure) {
       var curCookie = name + "=" + escape(value) +
       ((expires) ? "; expires=" + expires.toGMTString() : "") +
  @@ -87,5 +166,5 @@
   
   
   /*
  - * vim:et:sts=4:sw=4
  + * vim:et:sts=4:sw=4:
    */
  
  
  
  1.3       +8 -2      moniwiki/local/folding.js
  
  Index: folding.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/folding.js,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- folding.js	18 Dec 2008 03:36:56 -0000	1.2
  +++ folding.js	29 Dec 2008 22:18:46 -0000	1.3
  @@ -1,7 +1,7 @@
   /*
    * Builti-in section folding for MoniWiki
    * 
  - * $Id: folding.js,v 1.2 2008/12/18 03:36:56 wkpark Exp $
  + * $Id: folding.js,v 1.3 2008/12/29 22:18:46 wkpark Exp $
    */
   
   function foldingSection(btn, id)
  @@ -34,9 +34,15 @@
           } else {
             new Effect.SlideUp(sect, { duration: dur, afterFinish: function() {Element.hide(sect);} });
           }
  -    } else { // get sectpages for the first time.
  +    } else if (typeof MooTools != 'undefined') { // get sectpages for the first time.
           var mySlide = new Fx.Slide(sect); // mootools
           mySlide.toggle();
  +    } else {
  +        if (sect.style.display == 'none') {
  +            sect.style.display = 'block';
  +        } else {
  +            sect.style.display = 'none';
  +        }
       }
       if (icon) {
           var name=icon.getAttribute('class');
  
  
  


wkpark      2008/12/30 15:54:33

  Modified:    plugin   RecentChanges.php
  Log:
  fixed last changes.
  
  Revision  Changes    Path
  1.28      +32 -27    moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- RecentChanges.php	29 Dec 2008 18:38:22 -0000	1.27
  +++ RecentChanges.php	30 Dec 2008 06:54:33 -0000	1.28
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.27 2008/12/29 18:38:22 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.28 2008/12/30 06:54:33 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     $options['trail']='';
  @@ -203,24 +203,39 @@
       }
   
       $day = gmdate('Y-m-d', $ed_time+$tz_offset);
  -    if ($use_day and $day != $ratchet_day) {
  -      $tag=str_replace('-','',$day);
  -      $perma="<a name='$tag'></a><a class='perma' href='#$tag'>$perma_icon</a>";
  -      $out.=$cat0;
  -      $rcdate=gmdate($date_fmt,$ed_time+$tz_offset);
   
  -      $out.=sprintf("%s<span class='rc-date' style='font-size:large'>%s ",
  -            $br, $rcdate);
  -      if (!$nobookmark)
  -        $out.="<span class='rc-bookmark' style='font-size:small'>[".
  -          $formatter->link_tag($formatter->page->urlname,"?action=bookmark&amp;time=$ed_time".$daysago,
  -          _("set bookmark"))."]</span>\n";
  +    if (! empty($changed_time_fmt)) {
  +      $date= gmdate($changed_time_fmt, $ed_time+$tz_offset);
  +      if ($timesago) {
  +        $time_diff=(int)($time_current - $ed_time)/60;
  +        if ($time_diff < 1440) {
  +          $date=sprintf(_("[%sh %sm ago]"),(int)($time_diff/60),$time_diff%60);
  +        }
  +      }
  +    }
  +
  +    if ($day != $ratchet_day) {
         $ratchet_day = $day;
  -      $br="<br />";
  -      $out.='</span>'.$perma.'<br />'.$bra;
  -      $cat0=$cat;
  -    } else
  -      $day=$formatter->link_to("?action=bookmark&amp;time=$ed_time".$daysago,$day);
  +      if (!empty($use_day)) {
  +        $tag=str_replace('-','',$day);
  +        $perma="<a name='$tag'></a><a class='perma' href='#$tag'>$perma_icon</a>";
  +        $out.=$cat0;
  +        $rcdate=gmdate($date_fmt,$ed_time+$tz_offset);
  +
  +        $out.=sprintf("%s<span class='rc-date' style='font-size:large'>%s ",
  +            $br, $rcdate);
  +        if (!$nobookmark)
  +          $out.="<span class='rc-bookmark' style='font-size:small'>[".
  +            $formatter->link_tag($formatter->page->urlname,"?action=bookmark&amp;time=$ed_time".$daysago,
  +            _("set bookmark"))."]</span>\n";
  +        $br="<br />";
  +        $out.='</span>'.$perma.'<br />'.$bra;
  +        $cat0=$cat;
  +      }
  +    }
  +    if (empty($use_day)) {
  +      $date=$formatter->link_to("?action=bookmark&amp;time=$ed_time".$daysago,$date);
  +    }
   
       $pageurl=_rawurlencode($page_name);
   
  @@ -244,16 +259,6 @@
       $title=htmlspecialchars($title);
       $title= $formatter->link_tag($pageurl,"",$title,$target);
   
  -    if (! empty($changed_time_fmt)) {
  -      $date= gmdate($changed_time_fmt, $ed_time+$tz_offset);
  -      if ($timesago) {
  -        $time_diff=(int)($time_current - $ed_time)/60;
  -        if ($time_diff < 1440) {
  -          $date=sprintf(_("[%sh %sm ago]"),(int)($time_diff/60),$time_diff%60);
  -        }
  -      }
  -    }
  -
       if ($use_hits) {
         $hits = $DBInfo->counter->pageCounter($page_name);
       }
  
  
  


wkpark      2008/12/30 15:55:37

  Modified:    .        wiki.php
  Log:
  check RCS keywords with the inline_latex. $Id$ $Revision$
  
  Revision  Changes    Path
  1.445     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.444
  retrieving revision 1.445
  diff -u -r1.444 -r1.445
  --- wiki.php	29 Dec 2008 22:17:13 -0000	1.444
  +++ wiki.php	30 Dec 2008 06:55:37 -0000	1.445
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.444 2008/12/29 22:17:13 wkpark Exp $
  +// $Id: wiki.php,v 1.445 2008/12/30 06:55:37 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.444 $',1,-1);
  +$_revision = substr('$Revision: 1.445 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -3485,7 +3485,7 @@
                 "\[\[(?:[A-Za-z0-9]+(?:\((?:(?<!\]\]).)*\))?)\]\]|". # macro
                 "<<(?:[A-Za-z0-9]+(?:\((?:(?<!\>\>).)*\))?)>>|"; # macro
       if ($DBInfo->inline_latex) # single line latex syntax
  -      $wordrule.="(?<=\s|^|>)\\$(?:[^\\$]+)\\$(?=\s|\.|\,|$)|".
  +      $wordrule.="(?<=\s|^|>)\\$(?!(?:Id|Revision))(?:[^\\$]+)\\$(?=\s|\.|\,|$)|".
                    "(?<=\s|^|>)\\$\\$(?:[^\\$]+)\\$\\$(?=\s|$)|";
       #if ($DBInfo->builtin_footnote) # builtin footnote support
       $wordrule.=$this->footrule.'|';
  
  
  


wkpark      2008/12/30 15:55:37

  Modified:    plugin/processor monimarkup.php
  Log:
  check RCS keywords with the inline_latex. $Id$ $Revision$
  
  Revision  Changes    Path
  1.18      +3 -3      moniwiki/plugin/processor/monimarkup.php
  
  Index: monimarkup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/monimarkup.php,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- monimarkup.php	26 Dec 2008 10:38:56 -0000	1.17
  +++ monimarkup.php	30 Dec 2008 06:55:37 -0000	1.18
  @@ -3,12 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a moniwiki formatting processor for the MoniWiki
   //
  -// $Id: monimarkup.php,v 1.17 2008/12/26 10:38:56 wkpark Exp $
  +// $Id: monimarkup.php,v 1.18 2008/12/30 06:55:37 wkpark Exp $
   /**
    * @date    2006-08-09
    * @name    Moniwiki Processor
    * @desc    Moniwiki default processor
  - * @version $Revision: 1.17 $
  + * @version $Revision: 1.18 $
    * @depend  1.1.3
    * @license GPL
    */
  @@ -426,7 +426,7 @@
                 "<<(?:[A-Za-z0-9]+(?:\((?:(?<!>>).)*\))?)>>|"; # macro
   
           if ($Config['inline_latex']) # single line latex syntax
  -            $wordrule.="(?<=\s|^|>)\\$(?:[^\\$]+)\\$(?:\s|$)|".
  +            $wordrule.="(?<=\s|^|>)\\$(?!(?:Id|Revision))(?:[^\\$]+)\\$(?:\s|$)|".
                    "(?<=\s|^|>)\\$\\$(?:[^\\$]+)\\$\\$(?:\s|$)|";
           #if ($Config['builtin_footnote']) # builtin footnote support
           $wordrule.=$formatter->footrule.'|';
  
  
  


wkpark      2008/12/30 15:56:48

  Added:       imgs/misc saving.gif
  Log:
  add a new icon
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/misc/saving.gif
  
  	<<Binary file>>
  
  


wkpark      2008/12/30 15:57:31

  Modified:    local    autosave.js
  Log:
  change loading icon.
  
  Revision  Changes    Path
  1.4       +4 -4      moniwiki/local/autosave.js
  
  Index: autosave.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/autosave.js,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- autosave.js	29 Dec 2008 22:18:46 -0000	1.3
  +++ autosave.js	30 Dec 2008 06:57:31 -0000	1.4
  @@ -5,10 +5,10 @@
    * @name: a autosave javascript module.
    * @Description: a autosave Javascript module.
    * @url: MoniWiki:AutoSave
  - * @version: $Revision: 1.3 $
  + * @version: $Revision: 1.4 $
    * @license: GPL
    *
  - * $Id: autosave.js,v 1.3 2008/12/29 22:18:46 wkpark Exp $
  + * $Id: autosave.js,v 1.4 2008/12/30 06:57:31 wkpark Exp $
    *
    */
   
  @@ -127,12 +127,12 @@
       postdata += '&datestamp=' + stamp;
   
       var loading = new Image();
  -    loading.src = _url_prefix + '/imgs/loading.gif';
  +    loading.src = _url_prefix + '/imgs/misc/saving.gif';
       loading.setAttribute('style','vertical-align:middle');
   
       var state = document.getElementById('save_state');
       if (state) {
  -        txt = document.createTextNode(_("Current text saved temporary."));
  +        txt = document.createTextNode(_("Current text is saved in a temporary file."));
           state.appendChild(loading);
           state.appendChild(txt);
       }
  
  
  


wkpark      2008/12/30 17:40:22

  Added:       plugin/processor markdown.php
  Log:
  add the markdown processor
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/processor/markdown.php
  
  Index: markdown.php
  ===================================================================
  <?php
  //
  // Author: Michel Fortin
  // Name: Markdown Extra for MoniWiki
  // Description: Markdown allows you to write using an easy-to-read, easy-to-write plain text format.
  // Description: Based on the original Perl version by John Gruber
  // Author URI: http://www.michelf.com/
  // Author URI: http://daringfireball.net/
  // URI: http://www.michelf.com/projects/php-markdown/
  // URI: http://daringfireball.net/projects/markdown/syntax
  // Version: 1.1.7
  // Depend: 1.1.3
  // License: BSD Like
  //
  
  #
  # Markdown Extra  -  A text-to-HTML conversion tool for web writers
  #
  # PHP Markdown & Extra
  # Copyright (c) 2004-2007 Michel Fortin  
  # <http://www.michelf.com/projects/php-markdown/>
  #
  # Original Markdown
  # Copyright (c) 2004-2006 John Gruber  
  # <http://daringfireball.net/projects/markdown/>
  #
  
  define( 'MARKDOWN_VERSION',  "1.0.1k" ); # Wed 26 Sep 2007
  define( 'MARKDOWNEXTRA_VERSION',  "1.1.7" ); # Wed 26 Sep 2007
  
  #
  # Global default settings:
  #
  
  # Change to ">" for HTML output
  @define( 'MARKDOWN_EMPTY_ELEMENT_SUFFIX',  " />");
  
  # Define the width of a tab for code blocks.
  @define( 'MARKDOWN_TAB_WIDTH',     4 );
  
  # Optional title attribute for footnote links and backlinks.
  @define( 'MARKDOWN_FN_LINK_TITLE',         "" );
  @define( 'MARKDOWN_FN_BACKLINK_TITLE',     "" );
  
  # Optional class attribute for footnote links and backlinks.
  @define( 'MARKDOWN_FN_LINK_CLASS',         "" );
  @define( 'MARKDOWN_FN_BACKLINK_CLASS',     "" );
  
  //@define( 'MARKDOWN_PARSER_CLASS',  'MarkdownExtra_Parser' );
  #
  # Markdown Parser Class
  #
  
  class Markdown_Parser {
  
  	# Regex to match balanced [brackets].
  	# Needed to insert a maximum bracked depth while converting to PHP.
  	var $nested_brackets_depth = 6;
  	var $nested_brackets;
  	
  	var $nested_url_parenthesis_depth = 4;
  	var $nested_url_parenthesis;
  
  	# Table of hash values for escaped characters:
  	var $escape_chars = '\`*_{}[]()>#+-.!';
  
  	# Change to ">" for HTML output.
  	var $empty_element_suffix = MARKDOWN_EMPTY_ELEMENT_SUFFIX;
  	var $tab_width = MARKDOWN_TAB_WIDTH;
  	
  	# Change to `true` to disallow markup or entities.
  	var $no_markup = false;
  	var $no_entities = false;
  
  
  	function Markdown_Parser() {
  	#
  	# Constructor function. Initialize appropriate member variables.
  	#
  		$this->_initDetab();
  	
  		$this->nested_brackets = 
  			str_repeat('(?>[^\[\]]+|\[', $this->nested_brackets_depth).
  			str_repeat('\])*', $this->nested_brackets_depth);
  	
  		$this->nested_url_parenthesis = 
  			str_repeat('(?>[^()\s]+|\(', $this->nested_url_parenthesis_depth).
  			str_repeat('(?>\)))*', $this->nested_url_parenthesis_depth);
  		
  		# Sort document, block, and span gamut in ascendent priority order.
  		asort($this->document_gamut);
  		asort($this->block_gamut);
  		asort($this->span_gamut);
  	}
  
  
  	# Internal hashes used during transformation.
  	var $urls = array();
  	var $titles = array();
  	var $html_hashes = array();
  	
  	# Status flag to avoid invalid nesting.
  	var $in_anchor = false;
  
  
  	function transform($text) {
  	#
  	# Main function. The order in which other subs are called here is
  	# essential. Link and image substitutions need to happen before
  	# _EscapeSpecialCharsWithinTagAttributes(), so that any *'s or _'s in the <a>
  	# and <img> tags get encoded.
  	#
  		# Clear the global hashes. If we don't clear these, you get conflicts
  		# from other articles when generating a page which contains more than
  		# one article (e.g. an index page that shows the N most recent
  		# articles):
  		$this->urls = array();
  		$this->titles = array();
  		$this->html_hashes = array();
  
  		# Standardize line endings:
  		#   DOS to Unix and Mac to Unix
  		$text = preg_replace('{\r\n?}', "\n", $text);
  
  		# Make sure $text ends with a couple of newlines:
  		$text .= "\n\n";
  
  		# Convert all tabs to spaces.
  		$text = $this->detab($text);
  
  		# Turn block-level HTML blocks into hash entries
  		$text = $this->hashHTMLBlocks($text);
  
  		# Strip any lines consisting only of spaces and tabs.
  		# This makes subsequent regexen easier to write, because we can
  		# match consecutive blank lines with /\n+/ instead of something
  		# contorted like /[ ]*\n+/ .
  		$text = preg_replace('/^[ ]+$/m', '', $text);
  
  		# Run document gamut methods.
  		foreach ($this->document_gamut as $method => $priority) {
  			$text = $this->$method($text);
  		}
  
  		return $text . "\n";
  	}
  	
  	var $document_gamut = array(
  		# Strip link definitions, store in hashes.
  		"stripLinkDefinitions" => 20,
  		
  		"runBasicBlockGamut"   => 30,
  		);
  
  
  	function stripLinkDefinitions($text) {
  	#
  	# Strips link definitions from text, stores the URLs and titles in
  	# hash references.
  	#
  		$less_than_tab = $this->tab_width - 1;
  
  		# Link defs are in the form: ^[id]: url "optional title"
  		$text = preg_replace_callback('{
  							^[ ]{0,'.$less_than_tab.'}\[(.+)\][ ]?:	# id = $1
  							  [ ]*
  							  \n?				# maybe *one* newline
  							  [ ]*
  							<?(\S+?)>?			# url = $2
  							  [ ]*
  							  \n?				# maybe one newline
  							  [ ]*
  							(?:
  								(?<=\s)			# lookbehind for whitespace
  								["(]
  								(.*?)			# title = $3
  								[")]
  								[ ]*
  							)?	# title is optional
  							(?:\n+|\Z)
  			}xm',
  			array(&$this, '_stripLinkDefinitions_callback'),
  			$text);
  		return $text;
  	}
  	function _stripLinkDefinitions_callback($matches) {
  		$link_id = strtolower($matches[1]);
  		$this->urls[$link_id] = $this->encodeAmpsAndAngles($matches[2]);
  		if (isset($matches[3]))
  			$this->titles[$link_id] = str_replace('"', '&quot;', $matches[3]);
  		return ''; # String that will replace the block
  	}
  
  
  	function hashHTMLBlocks($text) {
  		if ($this->no_markup)  return $text;
  
  		$less_than_tab = $this->tab_width - 1;
  
  		# Hashify HTML blocks:
  		# We only want to do this for block-level HTML tags, such as headers,
  		# lists, and tables. That's because we still want to wrap <p>s around
  		# "paragraphs" that are wrapped in non-block-level tags, such as anchors,
  		# phrase emphasis, and spans. The list of tags we're looking for is
  		# hard-coded:
  		#
  		# *  List "a" is made of tags which can be both inline or block-level.
  		#    These will be treated block-level when the start tag is alone on 
  		#    its line, otherwise they're not matched here and will be taken as 
  		#    inline later.
  		# *  List "b" is made of tags which are always block-level;
  		#
  		$block_tags_a = 'ins|del';
  		$block_tags_b = 'p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|address|'.
  						'script|noscript|form|fieldset|iframe|math';
  
  		# Regular expression for the content of a block tag.
  		$nested_tags_level = 4;
  		$attr = '
  			(?>				# optional tag attributes
  			  \s			# starts with whitespace
  			  (?>
  				[^>"/]+		# text outside quotes
  			  |
  				/+(?!>)		# slash not followed by ">"
  			  |
  				"[^"]*"		# text inside double quotes (tolerate ">")
  			  |
  				\'[^\']*\'	# text inside single quotes (tolerate ">")
  			  )*
  			)?	
  			';
  		$content =
  			str_repeat('
  				(?>
  				  [^<]+			# content without tag
  				|
  				  <\2			# nested opening tag
  					'.$attr.'	# attributes
  					(?>
  					  />
  					|
  					  >', $nested_tags_level).	# end of opening tag
  					  '.*?'.					# last level nested tag content
  			str_repeat('
  					  </\2\s*>	# closing nested tag
  					)
  				  |				
  					<(?!/\2\s*>	# other tags with a different name
  				  )
  				)*',
  				$nested_tags_level);
  		$content2 = str_replace('\2', '\3', $content);
  
  		# First, look for nested blocks, e.g.:
  		# 	<div>
  		# 		<div>
  		# 		tags for inner block must be indented.
  		# 		</div>
  		# 	</div>
  		#
  		# The outermost tags must start at the left margin for this to match, and
  		# the inner nested divs must be indented.
  		# We need to do this before the next, more liberal match, because the next
  		# match will start at the first `<div>` and stop at the first `</div>`.
  		$text = preg_replace_callback('{(?>
  			(?>
  				(?<=\n\n)		# Starting after a blank line
  				|				# or
  				\A\n?			# the beginning of the doc
  			)
  			(						# save in $1
  
  			  # Match from `\n<tag>` to `</tag>\n`, handling nested tags 
  			  # in between.
  					
  						[ ]{0,'.$less_than_tab.'}
  						<('.$block_tags_b.')# start tag = $2
  						'.$attr.'>			# attributes followed by > and \n
  						'.$content.'		# content, support nesting
  						</\2>				# the matching end tag
  						[ ]*				# trailing spaces/tabs
  						(?=\n+|\Z)	# followed by a newline or end of document
  
  			| # Special version for tags of group a.
  
  						[ ]{0,'.$less_than_tab.'}
  						<('.$block_tags_a.')# start tag = $3
  						'.$attr.'>[ ]*\n	# attributes followed by >
  						'.$content2.'		# content, support nesting
  						</\3>				# the matching end tag
  						[ ]*				# trailing spaces/tabs
  						(?=\n+|\Z)	# followed by a newline or end of document
  					
  			| # Special case just for <hr />. It was easier to make a special 
  			  # case than to make the other regex more complicated.
  			
  						[ ]{0,'.$less_than_tab.'}
  						<(hr)				# start tag = $2
  						\b					# word break
  						([^<>])*?			# 
  						/?>					# the matching end tag
  						[ ]*
  						(?=\n{2,}|\Z)		# followed by a blank line or end of document
  			
  			| # Special case for standalone HTML comments:
  			
  					[ ]{0,'.$less_than_tab.'}
  					(?s:
  						<!-- .*? -->
  					)
  					[ ]*
  					(?=\n{2,}|\Z)		# followed by a blank line or end of document
  			
  			| # PHP and ASP-style processor instructions (<? and <%)
  			
  					[ ]{0,'.$less_than_tab.'}
  					(?s:
  						<([?%])			# $2
  						.*?
  						\2>
  					)
  					[ ]*
  					(?=\n{2,}|\Z)		# followed by a blank line or end of document
  					
  			)
  			)}Sxmi',
  			array(&$this, '_hashHTMLBlocks_callback'),
  			$text);
  
  		return $text;
  	}
  	function _hashHTMLBlocks_callback($matches) {
  		$text = $matches[1];
  		$key  = $this->hashBlock($text);
  		return "\n\n$key\n\n";
  	}
  	
  	
  	function hashPart($text, $boundary = 'X') {
  	#
  	# Called whenever a tag must be hashed when a function insert an atomic 
  	# element in the text stream. Passing $text to through this function gives
  	# a unique text-token which will be reverted back when calling unhash.
  	#
  	# The $boundary argument specify what character should be used to surround
  	# the token. By convension, "B" is used for block elements that needs not
  	# to be wrapped into paragraph tags at the end, ":" is used for elements
  	# that are word separators and "S" is used for general span-level elements.
  	#
  		# Swap back any tag hash found in $text so we do not have to `unhash`
  		# multiple times at the end.
  		$text = $this->unhash($text);
  		
  		# Then hash the block.
  		static $i = 0;
  		$key = "$boundary\x1A" . ++$i . $boundary;
  		$this->html_hashes[$key] = $text;
  		return $key; # String that will replace the tag.
  	}
  
  
  	function hashBlock($text) {
  	#
  	# Shortcut function for hashPart with block-level boundaries.
  	#
  		return $this->hashPart($text, 'B');
  	}
  
  
  	var $block_gamut = array(
  	#
  	# These are all the transformations that form block-level
  	# tags like paragraphs, headers, and list items.
  	#
  		"doHeaders"         => 10,
  		"doHorizontalRules" => 20,
  		
  		"doLists"           => 40,
  		"doCodeBlocks"      => 50,
  		"doBlockQuotes"     => 60,
  		);
  
  	function runBlockGamut($text) {
  	#
  	# Run block gamut tranformations.
  	#
  		# We need to escape raw HTML in Markdown source before doing anything 
  		# else. This need to be done for each block, and not only at the 
  		# begining in the Markdown function since hashed blocks can be part of
  		# list items and could have been indented. Indented blocks would have 
  		# been seen as a code block in a previous pass of hashHTMLBlocks.
  		$text = $this->hashHTMLBlocks($text);
  		
  		return $this->runBasicBlockGamut($text);
  	}
  	
  	function runBasicBlockGamut($text) {
  	#
  	# Run block gamut tranformations, without hashing HTML blocks. This is 
  	# useful when HTML blocks are known to be already hashed, like in the first
  	# whole-document pass.
  	#
  		foreach ($this->block_gamut as $method => $priority) {
  			$text = $this->$method($text);
  		}
  		
  		# Finally form paragraph and restore hashed blocks.
  		$text = $this->formParagraphs($text);
  
  		return $text;
  	}
  	
  	
  	function doHorizontalRules($text) {
  		# Do Horizontal Rules:
  		return preg_replace(
  			'{
  				^[ ]{0,3}	# Leading space
  				([-*_])		# $1: First marker
  				(?>			# Repeated marker group
  					[ ]{0,2}	# Zero, one, or two spaces.
  					\1			# Marker character
  				){2,}		# Group repeated at least twice
  				[ ]*		# Tailing spaces
  				$			# End of line.
  			}mx',
  			"\n".$this->hashBlock("<hr$this->empty_element_suffix")."\n", 
  			$text);
  	}
  
  
  	var $span_gamut = array(
  	#
  	# These are all the transformations that occur *within* block-level
  	# tags like paragraphs, headers, and list items.
  	#
  		# Process character escapes, code spans, and inline HTML
  		# in one shot.
  		"parseSpan"           => -30,
  
  		# Process anchor and image tags. Images must come first,
  		# because ![foo][f] looks like an anchor.
  		"doImages"            =>  10,
  		"doAnchors"           =>  20,
  		
  		# Make links out of things like `<http://example.com/>`
  		# Must come after doAnchors, because you can use < and >
  		# delimiters in inline links like [this](<url>).
  		"doAutoLinks"         =>  30,
  		"encodeAmpsAndAngles" =>  40,
  
  		"doItalicsAndBold"    =>  50,
  		"doHardBreaks"        =>  60,
  		);
  
  	function runSpanGamut($text) {
  	#
  	# Run span gamut tranformations.
  	#
  		foreach ($this->span_gamut as $method => $priority) {
  			$text = $this->$method($text);
  		}
  
  		return $text;
  	}
  	
  	
  	function doHardBreaks($text) {
  		# Do hard breaks:
  		return preg_replace_callback('/ {2,}\n/', 
  			array(&$this, '_doHardBreaks_callback'), $text);
  	}
  	function _doHardBreaks_callback($matches) {
  		return $this->hashPart("<br$this->empty_element_suffix\n");
  	}
  
  
  	function doAnchors($text) {
  	#
  	# Turn Markdown link shortcuts into XHTML <a> tags.
  	#
  		if ($this->in_anchor) return $text;
  		$this->in_anchor = true;
  		
  		#
  		# First, handle reference-style links: [link text] [id]
  		#
  		$text = preg_replace_callback('{
  			(					# wrap whole match in $1
  			  \[
  				('.$this->nested_brackets.')	# link text = $2
  			  \]
  
  			  [ ]?				# one optional space
  			  (?:\n[ ]*)?		# one optional newline followed by spaces
  
  			  \[
  				(.*?)		# id = $3
  			  \]
  			)
  			}xs',
  			array(&$this, '_doAnchors_reference_callback'), $text);
  
  		#
  		# Next, inline-style links: [link text](url "optional title")
  		#
  		$text = preg_replace_callback('{
  			(				# wrap whole match in $1
  			  \[
  				('.$this->nested_brackets.')	# link text = $2
  			  \]
  			  \(			# literal paren
  				[ ]*
  				(?:
  					<(\S*)>	# href = $3
  				|
  					('.$this->nested_url_parenthesis.')	# href = $4
  				)
  				[ ]*
  				(			# $5
  				  ([\'"])	# quote char = $6
  				  (.*?)		# Title = $7
  				  \6		# matching quote
  				  [ ]*	# ignore any spaces/tabs between closing quote and )
  				)?			# title is optional
  			  \)
  			)
  			}xs',
  			array(&$this, '_DoAnchors_inline_callback'), $text);
  
  		#
  		# Last, handle reference-style shortcuts: [link text]
  		# These must come last in case you've also got [link test][1]
  		# or [link test](/foo)
  		#
  //		$text = preg_replace_callback('{
  //			(					# wrap whole match in $1
  //			  \[
  //				([^\[\]]+)		# link text = $2; can\'t contain [ or ]
  //			  \]
  //			)
  //			}xs',
  //			array(&$this, '_doAnchors_reference_callback'), $text);
  
  		$this->in_anchor = false;
  		return $text;
  	}
  	function _doAnchors_reference_callback($matches) {
  		$whole_match =  $matches[1];
  		$link_text   =  $matches[2];
  		$link_id     =& $matches[3];
  
  		if ($link_id == "") {
  			# for shortcut links like [this][] or [this].
  			$link_id = $link_text;
  		}
  		
  		# lower-case and turn embedded newlines into spaces
  		$link_id = strtolower($link_id);
  		$link_id = preg_replace('{[ ]?\n}', ' ', $link_id);
  
  		if (isset($this->urls[$link_id])) {
  			$url = $this->urls[$link_id];
  			$url = $this->encodeAmpsAndAngles($url);
  			
  			$result = "<a href=\"$url\"";
  			if ( isset( $this->titles[$link_id] ) ) {
  				$title = $this->titles[$link_id];
  				$title = $this->encodeAmpsAndAngles($title);
  				$result .=  " title=\"$title\"";
  			}
  		
  			$link_text = $this->runSpanGamut($link_text);
  			$result .= ">$link_text</a>";
  			$result = $this->hashPart($result);
  		}
  		else {
  			$result = $whole_match;
  		}
  		return $result;
  	}
  	function _doAnchors_inline_callback($matches) {
  		$whole_match	=  $matches[1];
  		$link_text		=  $this->runSpanGamut($matches[2]);
  		$url			=  $matches[3] == '' ? $matches[4] : $matches[3];
  		$title			=& $matches[7];
  
  		$url = $this->encodeAmpsAndAngles($url);
  
  		$result = "<a href=\"$url\"";
  		if (isset($title)) {
  			$title = str_replace('"', '&quot;', $title);
  			$title = $this->encodeAmpsAndAngles($title);
  			$result .=  " title=\"$title\"";
  		}
  		
  		$link_text = $this->runSpanGamut($link_text);
  		$result .= ">$link_text</a>";
  
  		return $this->hashPart($result);
  	}
  
  
  	function doImages($text) {
  	#
  	# Turn Markdown image shortcuts into <img> tags.
  	#
  		#
  		# First, handle reference-style labeled images: ![alt text][id]
  		#
  		$text = preg_replace_callback('{
  			(				# wrap whole match in $1
  			  !\[
  				('.$this->nested_brackets.')		# alt text = $2
  			  \]
  
  			  [ ]?				# one optional space
  			  (?:\n[ ]*)?		# one optional newline followed by spaces
  
  			  \[
  				(.*?)		# id = $3
  			  \]
  
  			)
  			}xs', 
  			array(&$this, '_doImages_reference_callback'), $text);
  
  		#
  		# Next, handle inline images:  ![alt text](url "optional title")
  		# Don't forget: encode * and _
  		#
  		$text = preg_replace_callback('{
  			(				# wrap whole match in $1
  			  !\[
  				('.$this->nested_brackets.')		# alt text = $2
  			  \]
  			  \s?			# One optional whitespace character
  			  \(			# literal paren
  				[ ]*
  				(?:
  					<(\S*)>	# src url = $3
  				|
  					('.$this->nested_url_parenthesis.')	# src url = $4
  				)
  				[ ]*
  				(			# $5
  				  ([\'"])	# quote char = $6
  				  (.*?)		# title = $7
  				  \6		# matching quote
  				  [ ]*
  				)?			# title is optional
  			  \)
  			)
  			}xs',
  			array(&$this, '_doImages_inline_callback'), $text);
  
  		return $text;
  	}
  	function _doImages_reference_callback($matches) {
  		$whole_match = $matches[1];
  		$alt_text    = $matches[2];
  		$link_id     = strtolower($matches[3]);
  
  		if ($link_id == "") {
  			$link_id = strtolower($alt_text); # for shortcut links like ![this][].
  		}
  
  		$alt_text = str_replace('"', '&quot;', $alt_text);
  		if (isset($this->urls[$link_id])) {
  			$url = $this->urls[$link_id];
  			$result = "<img src=\"$url\" alt=\"$alt_text\"";
  			if (isset($this->titles[$link_id])) {
  				$title = $this->titles[$link_id];
  				$result .=  " title=\"$title\"";
  			}
  			$result .= $this->empty_element_suffix;
  			$result = $this->hashPart($result);
  		}
  		else {
  			# If there's no such link ID, leave intact:
  			$result = $whole_match;
  		}
  
  		return $result;
  	}
  	function _doImages_inline_callback($matches) {
  		$whole_match	= $matches[1];
  		$alt_text		= $matches[2];
  		$url			= $matches[3] == '' ? $matches[4] : $matches[3];
  		$title			=& $matches[7];
  
  		$alt_text = str_replace('"', '&quot;', $alt_text);
  		$result = "<img src=\"$url\" alt=\"$alt_text\"";
  		if (isset($title)) {
  			$title = str_replace('"', '&quot;', $title);
  			$result .=  " title=\"$title\""; # $title already quoted
  		}
  		$result .= $this->empty_element_suffix;
  
  		return $this->hashPart($result);
  	}
  
  
  	function doHeaders($text) {
  		# Setext-style headers:
  		#	  Header 1
  		#	  ========
  		#  
  		#	  Header 2
  		#	  --------
  		#
  		$text = preg_replace_callback('{ ^(.+?)[ ]*\n(=+|-+)[ ]*\n+ }mx',
  			array(&$this, '_doHeaders_callback_setext'), $text);
  
  		# atx-style headers:
  		#	# Header 1
  		#	## Header 2
  		#	## Header 2 with closing hashes ##
  		#	...
  		#	###### Header 6
  		#
  		$text = preg_replace_callback('{
  				^(\#{1,6})	# $1 = string of #\'s
  				[ ]*
  				(.+?)		# $2 = Header text
  				[ ]*
  				\#*			# optional closing #\'s (not counted)
  				\n+
  			}xm',
  			array(&$this, '_doHeaders_callback_atx'), $text);
  
  		return $text;
  	}
  	function _doHeaders_callback_setext($matches) {
  		$level = $matches[2]{0} == '=' ? 1 : 2;
  		$block = "<h$level>".$this->runSpanGamut($matches[1])."</h$level>";
  		return "\n" . $this->hashBlock($block) . "\n\n";
  	}
  	function _doHeaders_callback_atx($matches) {
  		$level = strlen($matches[1]);
  		$block = "<h$level>".$this->runSpanGamut($matches[2])."</h$level>";
  		return "\n" . $this->hashBlock($block) . "\n\n";
  	}
  
  
  	function doLists($text) {
  	#
  	# Form HTML ordered (numbered) and unordered (bulleted) lists.
  	#
  		$less_than_tab = $this->tab_width - 1;
  
  		# Re-usable patterns to match list item bullets and number markers:
  		$marker_ul  = '[*+-]';
  		$marker_ol  = '\d+[.]';
  		$marker_any = "(?:$marker_ul|$marker_ol)";
  
  		$markers = array($marker_ul, $marker_ol);
  
  		foreach ($markers as $marker) {
  			# Re-usable pattern to match any entirel ul or ol list:
  			$whole_list = '
  				(								# $1 = whole list
  				  (								# $2
  					[ ]{0,'.$less_than_tab.'}
  					('.$marker.')				# $3 = first list item marker
  					[ ]+
  				  )
  				  (?s:.+?)
  				  (								# $4
  					  \z
  					|
  					  \n{2,}
  					  (?=\S)
  					  (?!						# Negative lookahead for another list item marker
  						[ ]*
  						'.$marker.'[ ]+
  					  )
  				  )
  				)
  			'; // mx
  			
  			# We use a different prefix before nested lists than top-level lists.
  			# See extended comment in _ProcessListItems().
  		
  			if ($this->list_level) {
  				$text = preg_replace_callback('{
  						^
  						'.$whole_list.'
  					}mx',
  					array(&$this, '_doLists_callback'), $text);
  			}
  			else {
  				$text = preg_replace_callback('{
  						(?:(?<=\n)\n|\A\n?) # Must eat the newline
  						'.$whole_list.'
  					}mx',
  					array(&$this, '_doLists_callback'), $text);
  			}
  		}
  
  		return $text;
  	}
  	function _doLists_callback($matches) {
  		# Re-usable patterns to match list item bullets and number markers:
  		$marker_ul  = '[*+-]';
  		$marker_ol  = '\d+[.]';
  		$marker_any = "(?:$marker_ul|$marker_ol)";
  		
  		$list = $matches[1];
  		$list_type = preg_match("/$marker_ul/", $matches[3]) ? "ul" : "ol";
  		
  		$marker_any = ( $list_type == "ul" ? $marker_ul : $marker_ol );
  		
  		$list .= "\n";
  		$result = $this->processListItems($list, $marker_any);
  		
  		$result = $this->hashBlock("<$list_type>\n" . $result . "</$list_type>");
  		return "\n". $result ."\n\n";
  	}
  
  	var $list_level = 0;
  
  	function processListItems($list_str, $marker_any) {
  	#
  	#	Process the contents of a single ordered or unordered list, splitting it
  	#	into individual list items.
  	#
  		# The $this->list_level global keeps track of when we're inside a list.
  		# Each time we enter a list, we increment it; when we leave a list,
  		# we decrement. If it's zero, we're not in a list anymore.
  		#
  		# We do this because when we're not inside a list, we want to treat
  		# something like this:
  		#
  		#		I recommend upgrading to version
  		#		8. Oops, now this line is treated
  		#		as a sub-list.
  		#
  		# As a single paragraph, despite the fact that the second line starts
  		# with a digit-period-space sequence.
  		#
  		# Whereas when we're inside a list (or sub-list), that line will be
  		# treated as the start of a sub-list. What a kludge, huh? This is
  		# an aspect of Markdown's syntax that's hard to parse perfectly
  		# without resorting to mind-reading. Perhaps the solution is to
  		# change the syntax rules such that sub-lists must start with a
  		# starting cardinal number; e.g. "1." or "a.".
  		
  		$this->list_level++;
  
  		# trim trailing blank lines:
  		$list_str = preg_replace("/\n{2,}\\z/", "\n", $list_str);
  
  		$list_str = preg_replace_callback('{
  			(\n)?							# leading line = $1
  			(^[ ]*)						# leading whitespace = $2
  			('.$marker_any.') [ ]+		# list marker = $3
  			((?s:.+?))						# list item text   = $4
  			(?:(\n+(?=\n))|\n)				# tailing blank line = $5
  			(?= \n* (\z | \2 ('.$marker_any.') [ ]+))
  			}xm',
  			array(&$this, '_processListItems_callback'), $list_str);
  
  		$this->list_level--;
  		return $list_str;
  	}
  	function _processListItems_callback($matches) {
  		$item = $matches[4];
  		$leading_line =& $matches[1];
  		$leading_space =& $matches[2];
  		$tailing_blank_line =& $matches[5];
  
  		if ($leading_line || $tailing_blank_line || 
  			preg_match('/\n{2,}/', $item))
  		{
  			$item = $this->runBlockGamut($this->outdent($item)."\n");
  		}
  		else {
  			# Recursion for sub-lists:
  			$item = $this->doLists($this->outdent($item));
  			$item = preg_replace('/\n+$/', '', $item);
  			$item = $this->runSpanGamut($item);
  		}
  
  		return "<li>" . $item . "</li>\n";
  	}
  
  
  	function doCodeBlocks($text) {
  	#
  	#	Process Markdown `<pre><code>` blocks.
  	#
  		$text = preg_replace_callback('{
  				(?:\n\n|\A)
  				(	            # $1 = the code block -- one or more lines, starting with a space/tab
  				  (?>
  					[ ]{'.$this->tab_width.'}  # Lines must start with a tab or a tab-width of spaces
  					.*\n+
  				  )+
  				)
  				((?=^[ ]{0,'.$this->tab_width.'}\S)|\Z)	# Lookahead for non-space at line-start, or end of doc
  			}xm',
  			array(&$this, '_doCodeBlocks_callback'), $text);
  
  		return $text;
  	}
  	function _doCodeBlocks_callback($matches) {
  		$codeblock = $matches[1];
  
  		$codeblock = $this->outdent($codeblock);
  		$codeblock = htmlspecialchars($codeblock, ENT_NOQUOTES);
  
  		# trim leading newlines and trailing newlines
  		$codeblock = preg_replace('/\A\n+|\n+\z/', '', $codeblock);
  
  		$codeblock = "<pre><code>$codeblock\n</code></pre>";
  		return "\n\n".$this->hashBlock($codeblock)."\n\n";
  	}
  
  
  	function makeCodeSpan($code) {
  	#
  	# Create a code span markup for $code. Called from handleSpanToken.
  	#
  		$code = htmlspecialchars(trim($code), ENT_NOQUOTES);
  		return $this->hashPart("<code>$code</code>");
  	}
  
  
  	function doItalicsAndBold($text) {
  		# <strong> must go first:
  		$text = preg_replace_callback('{
  				(						# $1: Marker
  					(?<!\*\*) \* |		#     (not preceded by two chars of
  					(?<!__)   _			#      the same marker)
  				)
  				\1
  				(?=\S) 					# Not followed by whitespace 
  				(?!\1\1)				#   or two others marker chars.
  				(						# $2: Content
  					(?>
  						[^*_]+?			# Anthing not em markers.
  					|
  										# Balence any regular emphasis inside.
  						\1 (?=\S) .+? (?<=\S) \1
  					|
  						.				# Allow unbalenced * and _.
  					)+?
  				)
  				(?<=\S) \1\1			# End mark not preceded by whitespace.
  			}sx',
  			array(&$this, '_doItalicAndBold_strong_callback'), $text);
  		# Then <em>:
  		$text = preg_replace_callback(
  			'{ ( (?<!\*)\* | (?<!_)_ ) (?=\S) (?! \1) (.+?) (?<=\S)(?<!\s(?=\1).) \1 }sx',
  			array(&$this, '_doItalicAndBold_em_callback'), $text);
  
  		return $text;
  	}
  	function _doItalicAndBold_em_callback($matches) {
  		$text = $matches[2];
  		$text = $this->runSpanGamut($text);
  		return $this->hashPart("<em>$text</em>");
  	}
  	function _doItalicAndBold_strong_callback($matches) {
  		$text = $matches[2];
  		$text = $this->runSpanGamut($text);
  		return $this->hashPart("<strong>$text</strong>");
  	}
  
  
  	function doBlockQuotes($text) {
  		$text = preg_replace_callback('/
  			  (								# Wrap whole match in $1
  				(?>
  				  ^[ ]*>[ ]?			# ">" at the start of a line
  					.+\n					# rest of the first line
  				  (.+\n)*					# subsequent consecutive lines
  				  \n*						# blanks
  				)+
  			  )
  			/xm',
  			array(&$this, '_doBlockQuotes_callback'), $text);
  
  		return $text;
  	}
  	function _doBlockQuotes_callback($matches) {
  		$bq = $matches[1];
  		# trim one level of quoting - trim whitespace-only lines
  		$bq = preg_replace('/^[ ]*>[ ]?|^[ ]+$/m', '', $bq);
  		$bq = $this->runBlockGamut($bq);		# recurse
  
  		$bq = preg_replace('/^/m', "  ", $bq);
  		# These leading spaces cause problem with <pre> content, 
  		# so we need to fix that:
  		$bq = preg_replace_callback('{(\s*<pre>.+?</pre>)}sx', 
  			array(&$this, '_DoBlockQuotes_callback2'), $bq);
  
  		return "\n". $this->hashBlock("<blockquote>\n$bq\n</blockquote>")."\n\n";
  	}
  	function _doBlockQuotes_callback2($matches) {
  		$pre = $matches[1];
  		$pre = preg_replace('/^  /m', '', $pre);
  		return $pre;
  	}
  
  
  	function formParagraphs($text) {
  	#
  	#	Params:
  	#		$text - string to process with html <p> tags
  	#
  		# Strip leading and trailing lines:
  		$text = preg_replace('/\A\n+|\n+\z/', '', $text);
  
  		$grafs = preg_split('/\n{2,}/', $text, -1, PREG_SPLIT_NO_EMPTY);
  
  		#
  		# Wrap <p> tags and unhashify HTML blocks
  		#
  		foreach ($grafs as $key => $value) {
  			if (!preg_match('/^B\x1A[0-9]+B$/', $value)) {
  				# Is a paragraph.
  				$value = $this->runSpanGamut($value);
  				$value = preg_replace('/^([ ]*)/', "<p>", $value);
  				$value .= "</p>";
  				$grafs[$key] = $this->unhash($value);
  			}
  			else {
  				# Is a block.
  				# Modify elements of @grafs in-place...
  				$graf = $value;
  				$block = $this->html_hashes[$graf];
  				$graf = $block;
  //				if (preg_match('{
  //					\A
  //					(							# $1 = <div> tag
  //					  <div  \s+
  //					  [^>]*
  //					  \b
  //					  markdown\s*=\s*  ([\'"])	#	$2 = attr quote char
  //					  1
  //					  \2
  //					  [^>]*
  //					  >
  //					)
  //					(							# $3 = contents
  //					.*
  //					)
  //					(</div>)					# $4 = closing tag
  //					\z
  //					}xs', $block, $matches))
  //				{
  //					list(, $div_open, , $div_content, $div_close) = $matches;
  //
  //					# We can't call Markdown(), because that resets the hash;
  //					# that initialization code should be pulled into its own sub, though.
  //					$div_content = $this->hashHTMLBlocks($div_content);
  //					
  //					# Run document gamut methods on the content.
  //					foreach ($this->document_gamut as $method => $priority) {
  //						$div_content = $this->$method($div_content);
  //					}
  //
  //					$div_open = preg_replace(
  //						'{\smarkdown\s*=\s*([\'"]).+?\1}', '', $div_open);
  //
  //					$graf = $div_open . "\n" . $div_content . "\n" . $div_close;
  //				}
  				$grafs[$key] = $graf;
  			}
  		}
  
  		return implode("\n\n", $grafs);
  	}
  
  
  	function encodeAmpsAndAngles($text) {
  	# Smart processing for ampersands and angle brackets that need to be encoded.
  		if ($this->no_entities) {
  			$text = str_replace('&', '&amp;', $text);
  			$text = str_replace('<', '&lt;', $text);
  			return $text;
  		}
  
  		# Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin:
  		#   http://bumppo.net/projects/amputator/
  		$text = preg_replace('/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/', 
  							 '&amp;', $text);;
  
  		# Encode naked <'s
  		$text = preg_replace('{<(?![a-z/?\$!%])}i', '&lt;', $text);
  
  		return $text;
  	}
  
  
  	function doAutoLinks($text) {
  		$text = preg_replace_callback('{<((https?|ftp|dict):[^\'">\s]+)>}', 
  			array(&$this, '_doAutoLinks_url_callback'), $text);
  
  		# Email addresses: <address@domain.foo>
  		$text = preg_replace_callback('{
  			<
  			(?:mailto:)?
  			(
  				[-.\w\x80-\xFF]+
  				\@
  				[-a-z0-9\x80-\xFF]+(\.[-a-z0-9\x80-\xFF]+)*\.[a-z]+
  			)
  			>
  			}xi',
  			array(&$this, '_doAutoLinks_email_callback'), $text);
  
  		return $text;
  	}
  	function _doAutoLinks_url_callback($matches) {
  		$url = $this->encodeAmpsAndAngles($matches[1]);
  		$link = "<a href=\"$url\">$url</a>";
  		return $this->hashPart($link);
  	}
  	function _doAutoLinks_email_callback($matches) {
  		$address = $matches[1];
  		$link = $this->encodeEmailAddress($address);
  		return $this->hashPart($link);
  	}
  
  
  	function encodeEmailAddress($addr) {
  	#
  	#	Input: an email address, e.g. "foo@example.com"
  	#
  	#	Output: the email address as a mailto link, with each character
  	#		of the address encoded as either a decimal or hex entity, in
  	#		the hopes of foiling most address harvesting spam bots. E.g.:
  	#
  	#	  <p><a href="&#109;&#x61;&#105;&#x6c;&#116;&#x6f;&#58;&#x66;o&#111;
  	#        &#x40;&#101;&#x78;&#97;&#x6d;&#112;&#x6c;&#101;&#46;&#x63;&#111;
  	#        &#x6d;">&#x66;o&#111;&#x40;&#101;&#x78;&#97;&#x6d;&#112;&#x6c;
  	#        &#101;&#46;&#x63;&#111;&#x6d;</a></p>
  	#
  	#	Based by a filter by Matthew Wickline, posted to BBEdit-Talk.
  	#   With some optimizations by Milian Wolff.
  	#
  		$addr = "mailto:" . $addr;
  		$chars = preg_split('/(?<!^)(?!$)/', $addr);
  		$seed = (int)abs(crc32($addr) / strlen($addr)); # Deterministic seed.
  		
  		foreach ($chars as $key => $char) {
  			$ord = ord($char);
  			# Ignore non-ascii chars.
  			if ($ord < 128) {
  				$r = ($seed * (1 + $key)) % 100; # Pseudo-random function.
  				# roughly 10% raw, 45% hex, 45% dec
  				# '@' *must* be encoded. I insist.
  				if ($r > 90 && $char != '@') /* do nothing */;
  				else if ($r < 45) $chars[$key] = '&#x'.dechex($ord).';';
  				else              $chars[$key] = '&#'.$ord.';';
  			}
  		}
  		
  		$addr = implode('', $chars);
  		$text = implode('', array_slice($chars, 7)); # text without `mailto:`
  		$addr = "<a href=\"$addr\">$text</a>";
  
  		return $addr;
  	}
  
  
  	function parseSpan($str) {
  	#
  	# Take the string $str and parse it into tokens, hashing embeded HTML,
  	# escaped characters and handling code spans.
  	#
  		$output = '';
  		
  		$regex = '{
  				(
  					\\\\['.preg_quote($this->escape_chars).']
  				|
  					(?<![`\\\\])
  					`+						# code span marker
  			'.( $this->no_markup ? '' : '
  				|
  					<!--    .*?     -->		# comment
  				|
  					<\?.*?\?> | <%.*?%>		# processing instruction
  				|
  					<[/!$]?[-a-zA-Z0-9:]+	# regular tags
  					(?>
  						\s
  						(?>[^"\'>]+|"[^"]*"|\'[^\']*\')*
  					)?
  					>
  			').'
  				)
  				}xs';
  
  		while (1) {
  			#
  			# Each loop iteration seach for either the next tag, the next 
  			# openning code span marker, or the next escaped character. 
  			# Each token is then passed to handleSpanToken.
  			#
  			$parts = preg_split($regex, $str, 2, PREG_SPLIT_DELIM_CAPTURE);
  			
  			# Create token from text preceding tag.
  			if ($parts[0] != "") {
  				$output .= $parts[0];
  			}
  			
  			# Check if we reach the end.
  			if (isset($parts[1])) {
  				$output .= $this->handleSpanToken($parts[1], $parts[2]);
  				$str = $parts[2];
  			}
  			else {
  				break;
  			}
  		}
  		
  		return $output;
  	}
  	
  	
  	function handleSpanToken($token, &$str) {
  	#
  	# Handle $token provided by parseSpan by determining its nature and 
  	# returning the corresponding value that should replace it.
  	#
  		switch ($token{0}) {
  			case "\\":
  				return $this->hashPart("&#". ord($token{1}). ";");
  			case "`":
  				# Search for end marker in remaining text.
  				if (preg_match('/^(.*?[^`])'.$token.'(?!`)(.*)$/sm', 
  					$str, $matches))
  				{
  					$str = $matches[2];
  					$codespan = $this->makeCodeSpan($matches[1]);
  					return $this->hashPart($codespan);
  				}
  				return $token; // return as text since no ending marker found.
  			default:
  				return $this->hashPart($token);
  		}
  	}
  
  
  	function outdent($text) {
  	#
  	# Remove one level of line-leading tabs or spaces
  	#
  		return preg_replace('/^(\t|[ ]{1,'.$this->tab_width.'})/m', '', $text);
  	}
  
  
  	# String length function for detab. `_initDetab` will create a function to 
  	# hanlde UTF-8 if the default function does not exist.
  	var $utf8_strlen = 'mb_strlen';
  	
  	function detab($text) {
  	#
  	# Replace tabs with the appropriate amount of space.
  	#
  		# For each line we separate the line in blocks delemited by
  		# tab characters. Then we reconstruct every line by adding the 
  		# appropriate number of space between each blocks.
  		
  		$text = preg_replace_callback('/^.*\t.*$/m',
  			array(&$this, '_detab_callback'), $text);
  
  		return $text;
  	}
  	function _detab_callback($matches) {
  		$line = $matches[0];
  		$strlen = $this->utf8_strlen; # strlen function for UTF-8.
  		
  		# Split in blocks.
  		$blocks = explode("\t", $line);
  		# Add each blocks to the line.
  		$line = $blocks[0];
  		unset($blocks[0]); # Do not add first block twice.
  		foreach ($blocks as $block) {
  			# Calculate amount of space, insert spaces, insert block.
  			$amount = $this->tab_width - 
  				$strlen($line, 'UTF-8') % $this->tab_width;
  			$line .= str_repeat(" ", $amount) . $block;
  		}
  		return $line;
  	}
  	function _initDetab() {
  	#
  	# Check for the availability of the function in the `utf8_strlen` property
  	# (initially `mb_strlen`). If the function is not available, create a 
  	# function that will loosely count the number of UTF-8 characters with a
  	# regular expression.
  	#
  		if (function_exists($this->utf8_strlen)) return;
  		$this->utf8_strlen = create_function('$text', 'return preg_match_all(
  			"/[\\\\x00-\\\\xBF]|[\\\\xC0-\\\\xFF][\\\\x80-\\\\xBF]*/", 
  			$text, $m);');
  	}
  
  
  	function unhash($text) {
  	#
  	# Swap back in all the tags hashed by _HashHTMLBlocks.
  	#
  		return preg_replace_callback('/(.)\x1A[0-9]+\1/', 
  			array(&$this, '_unhash_callback'), $text);
  	}
  	function _unhash_callback($matches) {
  		return $this->html_hashes[$matches[0]];
  	}
  
  }
  
  
  #
  # Markdown Extra Parser Class
  #
  
  class Processor_Markdown extends Markdown_Parser {
  
  	# Prefix for footnote ids.
  	var $fn_id_prefix = "";
  	
  	# Optional title attribute for footnote links and backlinks.
  	var $fn_link_title = MARKDOWN_FN_LINK_TITLE;
  	var $fn_backlink_title = MARKDOWN_FN_BACKLINK_TITLE;
  	
  	# Optional class attribute for footnote links and backlinks.
  	var $fn_link_class = MARKDOWN_FN_LINK_CLASS;
  	var $fn_backlink_class = MARKDOWN_FN_BACKLINK_CLASS;
  
  
  	function Processor_Markdown() {
  	#
  	# Constructor function. Initialize the parser object.
  	#
  		# Add extra escapable characters before parent constructor 
  		# initialize the table.
  		$this->escape_chars .= ':|';
  		
  		# Insert extra document, block, and span transformations. 
  		# Parent constructor will do the sorting.
  		$this->document_gamut += array(
  			"stripFootnotes"     => 15,
  			"stripAbbreviations" => 25,
  			"appendFootnotes"    => 50,
  			);
  		$this->block_gamut += array(
  			"doTables"           => 15,
  			"doDefLists"         => 45,
  			);
  		$this->span_gamut += array(
  			"doFootnotes"        => 5,
  			"doAbbreviations"    => 70,
  			);
  		
  		parent::Markdown_Parser();
  	}
  	
  	
  	# Extra hashes used during extra transformations.
  	var $footnotes = array();
  	var $footnotes_ordered = array();
  	var $abbr_desciptions = array();
  	var $abbr_matches = array();
  	
  	# Status flag to avoid invalid nesting.
  	var $in_footnote = false;
  	
  	
  	function process($text,$params=array()) {
  	#
  	# strip bang-path #!markdown
  	#
          	if ($text{0}=='#' and $text{1}=='!') {
              		list($line,$text)=explode("\n",$text,2);
              		$dum = preg_split('/\s+/', $line);
              		$myarg = $dum[1];
          	}
  	#
  	# Added clear to the new $html_hashes, reordered `hashHTMLBlocks` before 
  	# blank line stripping and added extra parameter to `runBlockGamut`.
  	#
  		# Clear the global hashes. If we don't clear these, you get conflicts
  		# from other articles when generating a page which contains more than
  		# one article (e.g. an index page that shows the N most recent
  		# articles):
  		$this->footnotes = array();
  		$this->footnotes_ordered = array();
  		$this->abbr_desciptions = array();
  		$this->abbr_matches = array();
  
  		return parent::transform($text);
  	}
  	
  	
  	### HTML Block Parser ###
  	
  	# Tags that are always treated as block tags:
  	var $block_tags = 'p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|address|form|fieldset|iframe|hr|legend';
  	
  	# Tags treated as block tags only if the opening tag is alone on it's line:
  	var $context_block_tags = 'script|noscript|math|ins|del';
  	
  	# Tags where markdown="1" default to span mode:
  	var $contain_span_tags = 'p|h[1-6]|li|dd|dt|td|th|legend|address';
  	
  	# Tags which must not have their contents modified, no matter where 
  	# they appear:
  	var $clean_tags = 'script|math';
  	
  	# Tags that do not need to be closed.
  	var $auto_close_tags = 'hr|img';
  	
  
  	function hashHTMLBlocks($text) {
  	#
  	# Hashify HTML Blocks and "clean tags".
  	#
  	# We only want to do this for block-level HTML tags, such as headers,
  	# lists, and tables. That's because we still want to wrap <p>s around
  	# "paragraphs" that are wrapped in non-block-level tags, such as anchors,
  	# phrase emphasis, and spans. The list of tags we're looking for is
  	# hard-coded.
  	#
  	# This works by calling _HashHTMLBlocks_InMarkdown, which then calls
  	# _HashHTMLBlocks_InHTML when it encounter block tags. When the markdown="1" 
  	# attribute is found whitin a tag, _HashHTMLBlocks_InHTML calls back
  	#  _HashHTMLBlocks_InMarkdown to handle the Markdown syntax within the tag.
  	# These two functions are calling each other. It's recursive!
  	#
  		#
  		# Call the HTML-in-Markdown hasher.
  		#
  		list($text, ) = $this->_hashHTMLBlocks_inMarkdown($text);
  		
  		return $text;
  	}
  	function _hashHTMLBlocks_inMarkdown($text, $indent = 0, 
  										$enclosing_tag = '', $span = false)
  	{
  	#
  	# Parse markdown text, calling _HashHTMLBlocks_InHTML for block tags.
  	#
  	# *   $indent is the number of space to be ignored when checking for code 
  	#     blocks. This is important because if we don't take the indent into 
  	#     account, something like this (which looks right) won't work as expected:
  	#
  	#     <div>
  	#         <div markdown="1">
  	#         Hello World.  <-- Is this a Markdown code block or text?
  	#         </div>  <-- Is this a Markdown code block or a real tag?
  	#     <div>
  	#
  	#     If you don't like this, just don't indent the tag on which
  	#     you apply the markdown="1" attribute.
  	#
  	# *   If $enclosing_tag is not empty, stops at the first unmatched closing 
  	#     tag with that name. Nested tags supported.
  	#
  	# *   If $span is true, text inside must treated as span. So any double 
  	#     newline will be replaced by a single newline so that it does not create 
  	#     paragraphs.
  	#
  	# Returns an array of that form: ( processed text , remaining text )
  	#
  		if ($text === '') return array('', '');
  
  		# Regex to check for the presense of newlines around a block tag.
  		$newline_match_before = '/(?:^\n?|\n\n)*$/';
  		$newline_match_after = 
  			'{
  				^						# Start of text following the tag.
  				(?:[ ]*<!--.*?-->)?		# Optional comment.
  				[ ]*\n					# Must be followed by newline.
  			}xs';
  		
  		# Regex to match any tag.
  		$block_tag_match =
  			'{
  				(					# $2: Capture hole tag.
  					</?					# Any opening or closing tag.
  						(?:				# Tag name.
  							'.$this->block_tags.'			|
  							'.$this->context_block_tags.'	|
  							'.$this->clean_tags.'        	|
  							(?!\s)'.$enclosing_tag.'
  						)
  						\s*				# Whitespace.
  						(?>
  							".*?"		|	# Double quotes (can contain `>`)
  							\'.*?\'   	|	# Single quotes (can contain `>`)
  							.+?				# Anything but quotes and `>`.
  						)*?
  					>					# End of tag.
  				|
  					<!--    .*?     -->	# HTML Comment
  				|
  					<\?.*?\?> | <%.*?%>	# Processing instruction
  				|
  					<!\[CDATA\[.*?\]\]>	# CData Block
  				)
  			}xs';
  
  		
  		$depth = 0;		# Current depth inside the tag tree.
  		$parsed = "";	# Parsed text that will be returned.
  
  		#
  		# Loop through every tag until we find the closing tag of the parent
  		# or loop until reaching the end of text if no parent tag specified.
  		#
  		do {
  			#
  			# Split the text using the first $tag_match pattern found.
  			# Text before  pattern will be first in the array, text after
  			# pattern will be at the end, and between will be any catches made 
  			# by the pattern.
  			#
  			$parts = preg_split($block_tag_match, $text, 2, 
  								PREG_SPLIT_DELIM_CAPTURE);
  			
  			# If in Markdown span mode, add a empty-string span-level hash 
  			# after each newline to prevent triggering any block element.
  			if ($span) {
  				$void = $this->hashPart("", ':');
  				$newline = "$void\n";
  				$parts[0] = $void . str_replace("\n", $newline, $parts[0]) . $void;
  			}
  			
  			$parsed .= $parts[0]; # Text before current tag.
  			
  			# If end of $text has been reached. Stop loop.
  			if (count($parts) < 3) {
  				$text = "";
  				break;
  			}
  			
  			$tag  = $parts[1]; # Tag to handle.
  			$text = $parts[2]; # Remaining text after current tag.
  			
  			#
  			# Check for: Tag inside code block or span
  			#
  			if (# Find current paragraph
  				preg_match('/(?>^\n?|\n\n)((?>.+\n?)*?)$/', $parsed, $matches) &&
  				(
  				# Then match in it either a code block...
  				preg_match('/^ {'.($indent+4).'}.*(?>\n {'.($indent+4).'}.*)*'.
  							'(?!\n)$/', $matches[1], $x) ||
  				# ...or unbalenced code span markers. (the regex matches balenced)
  				!preg_match('/^(?>[^`]+|(`+)(?>[^`]+|(?!\1[^`])`)*?\1(?!`))*$/s',
  							 $matches[1])
  				))
  			{
  				# Tag is in code block or span and may not be a tag at all. So we
  				# simply skip the first char (should be a `<`).
  				$parsed .= $tag{0};
  				$text = substr($tag, 1) . $text; # Put back $tag minus first char.
  			}
  			#
  			# Check for: Opening Block level tag or
  			#            Opening Content Block tag (like ins and del) 
  			#               used as a block tag (tag is alone on it's line).
  			#
  			else if (preg_match("{^<(?:$this->block_tags)\b}", $tag) ||
  				(	preg_match("{^<(?:$this->context_block_tags)\b}", $tag) &&
  					preg_match($newline_match_before, $parsed) &&
  					preg_match($newline_match_after, $text)	)
  				)
  			{
  				# Need to parse tag and following text using the HTML parser.
  				list($block_text, $text) = 
  					$this->_hashHTMLBlocks_inHTML($tag . $text, "hashBlock", true);
  				
  				# Make sure it stays outside of any paragraph by adding newlines.
  				$parsed .= "\n\n$block_text\n\n";
  			}
  			#
  			# Check for: Clean tag (like script, math)
  			#            HTML Comments, processing instructions.
  			#
  			else if (preg_match("{^<(?:$this->clean_tags)\b}", $tag) ||
  				$tag{1} == '!' || $tag{1} == '?')
  			{
  				# Need to parse tag and following text using the HTML parser.
  				# (don't check for markdown attribute)
  				list($block_text, $text) = 
  					$this->_hashHTMLBlocks_inHTML($tag . $text, "hashClean", false);
  				
  				$parsed .= $block_text;
  			}
  			#
  			# Check for: Tag with same name as enclosing tag.
  			#
  			else if ($enclosing_tag !== '' &&
  				# Same name as enclosing tag.
  				preg_match("{^</?(?:$enclosing_tag)\b}", $tag))
  			{
  				#
  				# Increase/decrease nested tag count.
  				#
  				if ($tag{1} == '/')						$depth--;
  				else if ($tag{strlen($tag)-2} != '/')	$depth++;
  
  				if ($depth < 0) {
  					#
  					# Going out of parent element. Clean up and break so we
  					# return to the calling function.
  					#
  					$text = $tag . $text;
  					break;
  				}
  				
  				$parsed .= $tag;
  			}
  			else {
  				$parsed .= $tag;
  			}
  		} while ($depth >= 0);
  		
  		return array($parsed, $text);
  	}
  	function _hashHTMLBlocks_inHTML($text, $hash_method, $md_attr) {
  	#
  	# Parse HTML, calling _HashHTMLBlocks_InMarkdown for block tags.
  	#
  	# *   Calls $hash_method to convert any blocks.
  	# *   Stops when the first opening tag closes.
  	# *   $md_attr indicate if the use of the `markdown="1"` attribute is allowed.
  	#     (it is not inside clean tags)
  	#
  	# Returns an array of that form: ( processed text , remaining text )
  	#
  		if ($text === '') return array('', '');
  		
  		# Regex to match `markdown` attribute inside of a tag.
  		$markdown_attr_match = '
  			{
  				\s*			# Eat whitespace before the `markdown` attribute
  				markdown
  				\s*=\s*
  				(?:
  					(["\'])		# $1: quote delimiter		
  					(.*?)		# $2: attribute value
  					\1			# matching delimiter	
  				|
  					([^\s>]*)	# $3: unquoted attribute value
  				)
  				()				# $4: make $3 always defined (avoid warnings)
  			}xs';
  		
  		# Regex to match any tag.
  		$tag_match = '{
  				(					# $2: Capture hole tag.
  					</?					# Any opening or closing tag.
  						[\w:$]+			# Tag name.
  						\s*				# Whitespace.
  						(?>
  							".*?"		|	# Double quotes (can contain `>`)
  							\'.*?\'   	|	# Single quotes (can contain `>`)
  							.+?				# Anything but quotes and `>`.
  						)*?
  					>					# End of tag.
  				|
  					<!--    .*?     -->	# HTML Comment
  				|
  					<\?.*?\?> | <%.*?%>	# Processing instruction
  				|
  					<!\[CDATA\[.*?\]\]>	# CData Block
  				)
  			}xs';
  		
  		$original_text = $text;		# Save original text in case of faliure.
  		
  		$depth		= 0;	# Current depth inside the tag tree.
  		$block_text	= "";	# Temporary text holder for current text.
  		$parsed		= "";	# Parsed text that will be returned.
  
  		#
  		# Get the name of the starting tag.
  		#
  		if (preg_match("/^<([\w:$]*)\b/", $text, $matches))
  			$base_tag_name = $matches[1];
  
  		#
  		# Loop through every tag until we find the corresponding closing tag.
  		#
  		do {
  			#
  			# Split the text using the first $tag_match pattern found.
  			# Text before  pattern will be first in the array, text after
  			# pattern will be at the end, and between will be any catches made 
  			# by the pattern.
  			#
  			$parts = preg_split($tag_match, $text, 2, PREG_SPLIT_DELIM_CAPTURE);
  			
  			if (count($parts) < 3) {
  				#
  				# End of $text reached with unbalenced tag(s).
  				# In that case, we return original text unchanged and pass the
  				# first character as filtered to prevent an infinite loop in the 
  				# parent function.
  				#
  				return array($original_text{0}, substr($original_text, 1));
  			}
  			
  			$block_text .= $parts[0]; # Text before current tag.
  			$tag         = $parts[1]; # Tag to handle.
  			$text        = $parts[2]; # Remaining text after current tag.
  			
  			#
  			# Check for: Auto-close tag (like <hr/>)
  			#			 Comments and Processing Instructions.
  			#
  			if (preg_match("{^</?(?:$this->auto_close_tags)\b}", $tag) ||
  				$tag{1} == '!' || $tag{1} == '?')
  			{
  				# Just add the tag to the block as if it was text.
  				$block_text .= $tag;
  			}
  			else {
  				#
  				# Increase/decrease nested tag count. Only do so if
  				# the tag's name match base tag's.
  				#
  				if (preg_match("{^</?$base_tag_name\b}", $tag)) {
  					if ($tag{1} == '/')						$depth--;
  					else if ($tag{strlen($tag)-2} != '/')	$depth++;
  				}
  				
  				#
  				# Check for `markdown="1"` attribute and handle it.
  				#
  				if ($md_attr && 
  					preg_match($markdown_attr_match, $tag, $attr_m) &&
  					preg_match('/^1|block|span$/', $attr_m[2] . $attr_m[3]))
  				{
  					# Remove `markdown` attribute from opening tag.
  					$tag = preg_replace($markdown_attr_match, '', $tag);
  					
  					# Check if text inside this tag must be parsed in span mode.
  					$this->mode = $attr_m[2] . $attr_m[3];
  					$span_mode = $this->mode == 'span' || $this->mode != 'block' &&
  						preg_match("{^<(?:$this->contain_span_tags)\b}", $tag);
  					
  					# Calculate indent before tag.
  					preg_match('/(?:^|\n)( *?)(?! ).*?$/', $block_text, $matches);
  					$indent = strlen($matches[1]);
  					
  					# End preceding block with this tag.
  					$block_text .= $tag;
  					$parsed .= $this->$hash_method($block_text);
  					
  					# Get enclosing tag name for the ParseMarkdown function.
  					preg_match('/^<([\w:$]*)\b/', $tag, $matches);
  					$tag_name = $matches[1];
  					
  					# Parse the content using the HTML-in-Markdown parser.
  					list ($block_text, $text)
  						= $this->_hashHTMLBlocks_inMarkdown($text, $indent, 
  														$tag_name, $span_mode);
  					
  					# Outdent markdown text.
  					if ($indent > 0) {
  						$block_text = preg_replace("/^[ ]{1,$indent}/m", "", 
  													$block_text);
  					}
  					
  					# Append tag content to parsed text.
  					if (!$span_mode)	$parsed .= "\n\n$block_text\n\n";
  					else				$parsed .= "$block_text";
  					
  					# Start over a new block.
  					$block_text = "";
  				}
  				else $block_text .= $tag;
  			}
  			
  		} while ($depth > 0);
  		
  		#
  		# Hash last block text that wasn't processed inside the loop.
  		#
  		$parsed .= $this->$hash_method($block_text);
  		
  		return array($parsed, $text);
  	}
  
  
  	function hashClean($text) {
  	#
  	# Called whenever a tag must be hashed when a function insert a "clean" tag
  	# in $text, it pass through this function and is automaticaly escaped, 
  	# blocking invalid nested overlap.
  	#
  		return $this->hashPart($text, 'C');
  	}
  
  
  	function doHeaders($text) {
  	#
  	# Redefined to add id attribute support.
  	#
  		# Setext-style headers:
  		#	  Header 1  {#header1}
  		#	  ========
  		#  
  		#	  Header 2  {#header2}
  		#	  --------
  		#
  		$text = preg_replace_callback(
  			'{
  				(^.+?)								# $1: Header text
  				(?:[ ]+\{\#([-_:a-zA-Z0-9]+)\})?	# $2: Id attribute
  				[ ]*\n(=+|-+)[ ]*\n+				# $3: Header footer
  			}mx',
  			array(&$this, '_doHeaders_callback_setext'), $text);
  
  		# atx-style headers:
  		#	# Header 1        {#header1}
  		#	## Header 2       {#header2}
  		#	## Header 2 with closing hashes ##  {#header3}
  		#	...
  		#	###### Header 6   {#header2}
  		#
  		$text = preg_replace_callback('{
  				^(\#{1,6})	# $1 = string of #\'s
  				[ ]*
  				(.+?)		# $2 = Header text
  				[ ]*
  				\#*			# optional closing #\'s (not counted)
  				(?:[ ]+\{\#([-_:a-zA-Z0-9]+)\})? # id attribute
  				[ ]*
  				\n+
  			}xm',
  			array(&$this, '_doHeaders_callback_atx'), $text);
  
  		return $text;
  	}
  	function _doHeaders_attr($attr) {
  		if (empty($attr))  return "";
  		return " id=\"$attr\"";
  	}
  	function _doHeaders_callback_setext($matches) {
  		$level = $matches[3]{0} == '=' ? 1 : 2;
  		$attr  = $this->_doHeaders_attr($id =& $matches[2]);
  		$block = "<h$level$attr>".$this->runSpanGamut($matches[1])."</h$level>";
  		return "\n" . $this->hashBlock($block) . "\n\n";
  	}
  	function _doHeaders_callback_atx($matches) {
  		$level = strlen($matches[1]);
  		$attr  = $this->_doHeaders_attr($id =& $matches[3]);
  		$block = "<h$level$attr>".$this->runSpanGamut($matches[2])."</h$level>";
  		return "\n" . $this->hashBlock($block) . "\n\n";
  	}
  
  
  	function doTables($text) {
  	#
  	# Form HTML tables.
  	#
  		$less_than_tab = $this->tab_width - 1;
  		#
  		# Find tables with leading pipe.
  		#
  		#	| Header 1 | Header 2
  		#	| -------- | --------
  		#	| Cell 1   | Cell 2
  		#	| Cell 3   | Cell 4
  		#
  		$text = preg_replace_callback('
  			{
  				^							# Start of a line
  				[ ]{0,'.$less_than_tab.'}	# Allowed whitespace.
  				[|]							# Optional leading pipe (present)
  				(.+) \n						# $1: Header row (at least one pipe)
  				
  				[ ]{0,'.$less_than_tab.'}	# Allowed whitespace.
  				[|] ([ ]*[-:]+[-| :]*) \n	# $2: Header underline
  				
  				(							# $3: Cells
  					(?>
  						[ ]*				# Allowed whitespace.
  						[|] .* \n			# Row content.
  					)*
  				)
  				(?=\n|\Z)					# Stop at final double newline.
  			}xm',
  			array(&$this, '_doTable_leadingPipe_callback'), $text);
  		
  		#
  		# Find tables without leading pipe.
  		#
  		#	Header 1 | Header 2
  		#	-------- | --------
  		#	Cell 1   | Cell 2
  		#	Cell 3   | Cell 4
  		#
  		$text = preg_replace_callback('
  			{
  				^							# Start of a line
  				[ ]{0,'.$less_than_tab.'}	# Allowed whitespace.
  				(\S.*[|].*) \n				# $1: Header row (at least one pipe)
  				
  				[ ]{0,'.$less_than_tab.'}	# Allowed whitespace.
  				([-:]+[ ]*[|][-| :]*) \n	# $2: Header underline
  				
  				(							# $3: Cells
  					(?>
  						.* [|] .* \n		# Row content
  					)*
  				)
  				(?=\n|\Z)					# Stop at final double newline.
  			}xm',
  			array(&$this, '_DoTable_callback'), $text);
  
  		return $text;
  	}
  	function _doTable_leadingPipe_callback($matches) {
  		$head		= $matches[1];
  		$underline	= $matches[2];
  		$content	= $matches[3];
  		
  		# Remove leading pipe for each row.
  		$content	= preg_replace('/^ *[|]/m', '', $content);
  		
  		return $this->_doTable_callback(array($matches[0], $head, $underline, $content));
  	}
  	function _doTable_callback($matches) {
  		$head		= $matches[1];
  		$underline	= $matches[2];
  		$content	= $matches[3];
  
  		# Remove any tailing pipes for each line.
  		$head		= preg_replace('/[|] *$/m', '', $head);
  		$underline	= preg_replace('/[|] *$/m', '', $underline);
  		$content	= preg_replace('/[|] *$/m', '', $content);
  		
  		# Reading alignement from header underline.
  		$separators	= preg_split('/ *[|] */', $underline);
  		foreach ($separators as $n => $s) {
  			if (preg_match('/^ *-+: *$/', $s))		$attr[$n] = ' align="right"';
  			else if (preg_match('/^ *:-+: *$/', $s))$attr[$n] = ' align="center"';
  			else if (preg_match('/^ *:-+ *$/', $s))	$attr[$n] = ' align="left"';
  			else									$attr[$n] = '';
  		}
  		
  		# Parsing span elements, including code spans, character escapes, 
  		# and inline HTML tags, so that pipes inside those gets ignored.
  		$head		= $this->parseSpan($head);
  		$headers	= preg_split('/ *[|] */', $head);
  		$col_count	= count($headers);
  		
  		# Write column headers.
  		$text = "<table>\n";
  		$text .= "<thead>\n";
  		$text .= "<tr>\n";
  		foreach ($headers as $n => $header)
  			$text .= "  <th$attr[$n]>".$this->runSpanGamut(trim($header))."</th>\n";
  		$text .= "</tr>\n";
  		$text .= "</thead>\n";
  		
  		# Split content by row.
  		$rows = explode("\n", trim($content, "\n"));
  		
  		$text .= "<tbody>\n";
  		foreach ($rows as $row) {
  			# Parsing span elements, including code spans, character escapes, 
  			# and inline HTML tags, so that pipes inside those gets ignored.
  			$row = $this->parseSpan($row);
  			
  			# Split row by cell.
  			$row_cells = preg_split('/ *[|] */', $row, $col_count);
  			$row_cells = array_pad($row_cells, $col_count, '');
  			
  			$text .= "<tr>\n";
  			foreach ($row_cells as $n => $cell)
  				$text .= "  <td$attr[$n]>".$this->runSpanGamut(trim($cell))."</td>\n";
  			$text .= "</tr>\n";
  		}
  		$text .= "</tbody>\n";
  		$text .= "</table>";
  		
  		return $this->hashBlock($text) . "\n";
  	}
  
  	
  	function doDefLists($text) {
  	#
  	# Form HTML definition lists.
  	#
  		$less_than_tab = $this->tab_width - 1;
  
  		# Re-usable pattern to match any entire dl list:
  		$whole_list = '(?>
  			(								# $1 = whole list
  			  (								# $2
  				[ ]{0,'.$less_than_tab.'}
  				((?>.*\S.*\n)+)				# $3 = defined term
  				\n?
  				[ ]{0,'.$less_than_tab.'}:[ ]+ # colon starting definition
  			  )
  			  (?s:.+?)
  			  (								# $4
  				  \z
  				|
  				  \n{2,}
  				  (?=\S)
  				  (?!						# Negative lookahead for another term
  					[ ]{0,'.$less_than_tab.'}
  					(?: \S.*\n )+?			# defined term
  					\n?
  					[ ]{0,'.$less_than_tab.'}:[ ]+ # colon starting definition
  				  )
  				  (?!						# Negative lookahead for another definition
  					[ ]{0,'.$less_than_tab.'}:[ ]+ # colon starting definition
  				  )
  			  )
  			)
  		)'; // mx
  
  		$text = preg_replace_callback('{
  				(?:(?<=\n\n)|\A\n?)
  				'.$whole_list.'
  			}mx',
  			array(&$this, '_doDefLists_callback'), $text);
  
  		return $text;
  	}
  	function _doDefLists_callback($matches) {
  		# Re-usable patterns to match list item bullets and number markers:
  		$list = $matches[1];
  		
  		# Turn double returns into triple returns, so that we can make a
  		# paragraph for the last item in a list, if necessary:
  		$result = trim($this->processDefListItems($list));
  		$result = "<dl>\n" . $result . "\n</dl>";
  		return $this->hashBlock($result) . "\n\n";
  	}
  
  
  	function processDefListItems($list_str) {
  	#
  	#	Process the contents of a single definition list, splitting it
  	#	into individual term and definition list items.
  	#
  		$less_than_tab = $this->tab_width - 1;
  		
  		# trim trailing blank lines:
  		$list_str = preg_replace("/\n{2,}\\z/", "\n", $list_str);
  
  		# Process definition terms.
  		$list_str = preg_replace_callback('{
  			(?:\n\n+|\A\n?)					# leading line
  			(								# definition terms = $1
  				[ ]{0,'.$less_than_tab.'}	# leading whitespace
  				(?![:][ ]|[ ])				# negative lookahead for a definition 
  											#   mark (colon) or more whitespace.
  				(?: \S.* \n)+?				# actual term (not whitespace).	
  			)			
  			(?=\n?[ ]{0,3}:[ ])				# lookahead for following line feed 
  											#   with a definition mark.
  			}xm',
  			array(&$this, '_processDefListItems_callback_dt'), $list_str);
  
  		# Process actual definitions.
  		$list_str = preg_replace_callback('{
  			\n(\n+)?						# leading line = $1
  			[ ]{0,'.$less_than_tab.'}		# whitespace before colon
  			[:][ ]+							# definition mark (colon)
  			((?s:.+?))						# definition text = $2
  			(?= \n+ 						# stop at next definition mark,
  				(?:							# next term or end of text
  					[ ]{0,'.$less_than_tab.'} [:][ ]	|
  					<dt> | \z
  				)						
  			)					
  			}xm',
  			array(&$this, '_processDefListItems_callback_dd'), $list_str);
  
  		return $list_str;
  	}
  	function _processDefListItems_callback_dt($matches) {
  		$terms = explode("\n", trim($matches[1]));
  		$text = '';
  		foreach ($terms as $term) {
  			$term = $this->runSpanGamut(trim($term));
  			$text .= "\n<dt>" . $term . "</dt>";
  		}
  		return $text . "\n";
  	}
  	function _processDefListItems_callback_dd($matches) {
  		$leading_line	= $matches[1];
  		$def			= $matches[2];
  
  		if ($leading_line || preg_match('/\n{2,}/', $def)) {
  			$def = $this->runBlockGamut($this->outdent($def . "\n\n"));
  			$def = "\n". $def ."\n";
  		}
  		else {
  			$def = rtrim($def);
  			$def = $this->runSpanGamut($this->outdent($def));
  		}
  
  		return "\n<dd>" . $def . "</dd>\n";
  	}
  
  
  	function doItalicsAndBold($text) {
  	#
  	# Redefined to change emphasis by underscore behaviour so that it does not 
  	# work in the middle of a word.
  	#
  		# <strong> must go first:
  		$text = preg_replace_callback(array(
  			'{
  				(						# $1: Marker
  					(?<![a-zA-Z0-9])	# Not preceded by alphanum
  					(?<!__)				#	or by two marker chars.
  					__
  				)
  				(?=\S) 					# Not followed by whitespace 
  				(?!__)					#   or two others marker chars.
  				(						# $2: Content
  					(?>
  						[^_]+?			# Anthing not em markers.
  					|
  										# Balence any regular _ emphasis inside.
  						(?<![a-zA-Z0-9]) _ (?=\S) (.+?) 
  						(?<=\S) _ (?![a-zA-Z0-9])
  					|
  						_+				# Allow unbalenced as last resort.
  					)+?
  				)
  				(?<=\S) __				# End mark not preceded by whitespace.
  				(?![a-zA-Z0-9])			# Not followed by alphanum
  				(?!__)					#   or two others marker chars.
  			}sx',
  			'{
  				( (?<!\*\*) \*\* )		# $1: Marker (not preceded by two *)
  				(?=\S) 					# Not followed by whitespace 
  				(?!\1)					#   or two others marker chars.
  				(						# $2: Content
  					(?>
  						[^*]+?			# Anthing not em markers.
  					|
  										# Balence any regular * emphasis inside.
  						\* (?=\S) (.+?) (?<=\S) \*
  					|
  						\*				# Allow unbalenced as last resort.
  					)+?
  				)
  				(?<=\S) \*\*			# End mark not preceded by whitespace.
  			}sx',
  			),
  			array(&$this, '_doItalicAndBold_strong_callback'), $text);
  		# Then <em>:
  		$text = preg_replace_callback(array(
  			'{ ( (?<![a-zA-Z0-9])(?<!_)_ ) (?=\S) (?! \1) (.+?) (?<=\S) \1(?![a-zA-Z0-9]) }sx',
  			'{ ( (?<!\*)\* ) (?=\S) (?! \1) (.+?) (?<=\S)(?<!\s\*) \1 }sx',
  			),
  			array(&$this, '_doItalicAndBold_em_callback'), $text);
  
  		return $text;
  	}
  
  
  	function formParagraphs($text) {
  	#
  	#	Params:
  	#		$text - string to process with html <p> tags
  	#
  		# Strip leading and trailing lines:
  		$text = preg_replace('/\A\n+|\n+\z/', '', $text);
  		
  		$grafs = preg_split('/\n{2,}/', $text, -1, PREG_SPLIT_NO_EMPTY);
  
  		#
  		# Wrap <p> tags and unhashify HTML blocks
  		#
  		foreach ($grafs as $key => $value) {
  			$value = trim($this->runSpanGamut($value));
  			
  			# Check if this should be enclosed in a paragraph.
  			# Clean tag hashes & block tag hashes are left alone.
  			$is_p = !preg_match('/^B\x1A[0-9]+B|^C\x1A[0-9]+C$/', $value);
  			
  			if ($is_p) {
  				$value = "<p>$value</p>";
  			}
  			$grafs[$key] = $value;
  		}
  		
  		# Join grafs in one text, then unhash HTML tags. 
  		$text = implode("\n\n", $grafs);
  		
  		# Finish by removing any tag hashes still present in $text.
  		$text = $this->unhash($text);
  		
  		return $text;
  	}
  	
  	
  	### Footnotes
  	
  	function stripFootnotes($text) {
  	#
  	# Strips link definitions from text, stores the URLs and titles in
  	# hash references.
  	#
  		$less_than_tab = $this->tab_width - 1;
  
  		# Link defs are in the form: [^id]: url "optional title"
  		$text = preg_replace_callback('{
  			^[ ]{0,'.$less_than_tab.'}\[\^(.+?)\][ ]?:	# note_id = $1
  			  [ ]*
  			  \n?					# maybe *one* newline
  			(						# text = $2 (no blank lines allowed)
  				(?:					
  					.+				# actual text
  				|
  					\n				# newlines but 
  					(?!\[\^.+?\]:\s)# negative lookahead for footnote marker.
  					(?!\n+[ ]{0,3}\S)# ensure line is not blank and followed 
  									# by non-indented content
  				)*
  			)		
  			}xm',
  			array(&$this, '_stripFootnotes_callback'),
  			$text);
  		return $text;
  	}
  	function _stripFootnotes_callback($matches) {
  		$note_id = $this->fn_id_prefix . $matches[1];
  		$this->footnotes[$note_id] = $this->outdent($matches[2]);
  		return ''; # String that will replace the block
  	}
  
  
  	function doFootnotes($text) {
  	#
  	# Replace footnote references in $text [^id] with a special text-token 
  	# which will be can be
  	#
  		if (!$this->in_footnote && !$this->in_anchor) {
  			$text = preg_replace('{\[\^(.+?)\]}', "F\x1Afn:\\1\x1A:", $text);
  		}
  		return $text;
  	}
  
  	
  	function appendFootnotes($text) {
  	#
  	# Append footnote list to text.
  	#
  	
  		$text = preg_replace_callback('{F\x1Afn:(.*?)\x1A:}', 
  			array(&$this, '_appendFootnotes_callback'), $text);
  	
  		if (!empty($this->footnotes_ordered)) {
  			$text .= "\n\n";
  			$text .= "<div class=\"footnotes\">\n";
  			$text .= "<hr". MARKDOWN_EMPTY_ELEMENT_SUFFIX ."\n";
  			$text .= "<ol>\n\n";
  			
  			$attr = " rev=\"footnote\"";
  			if ($this->fn_backlink_class != "") {
  				$class = $this->fn_backlink_class;
  				$class = $this->encodeAmpsAndAngles($class);
  				$class = str_replace('"', '&quot;', $class);
  				$attr .= " class=\"$class\"";
  			}
  			if ($this->fn_backlink_title != "") {
  				$title = $this->fn_backlink_title;
  				$title = $this->encodeAmpsAndAngles($title);
  				$title = str_replace('"', '&quot;', $title);
  				$attr .= " title=\"$title\"";
  			}
  			$num = 0;
  			
  			$this->in_footnote = true;
  			
  			foreach ($this->footnotes_ordered as $note_id => $footnote) {
  				$footnote .= "\n"; # Need to append newline before parsing.
  				$footnote = $this->runBlockGamut("$footnote\n");
  				
  				$attr2 = str_replace("%%", ++$num, $attr);
  				
  				# Add backlink to last paragraph; create new paragraph if needed.
  				$backlink = "<a href=\"#fnref:$note_id\"$attr2>&#8617;</a>";
  				if (preg_match('{</p>$}', $footnote)) {
  					$footnote = substr($footnote, 0, -4) . "&#160;$backlink</p>";
  				} else {
  					$footnote .= "\n\n<p>$backlink</p>";
  				}
  				
  				$text .= "<li id=\"fn:$note_id\">\n";
  				$text .= $footnote . "\n";
  				$text .= "</li>\n\n";
  			}
  			
  			$this->in_footnote = false;
  			
  			$text .= "</ol>\n";
  			$text .= "</div>";
  		}
  		return $text;
  	}
  	function _appendFootnotes_callback($matches) {
  		$node_id = $this->fn_id_prefix . $matches[1];
  		
  		# Create footnote marker only if it has a corresponding footnote *and*
  		# the footnote hasn't been used by another marker.
  		if (isset($this->footnotes[$node_id])) {
  			# Transfert footnote content to the ordered list.
  			$this->footnotes_ordered[$node_id] = $this->footnotes[$node_id];
  			unset($this->footnotes[$node_id]);
  			
  			$num = count($this->footnotes_ordered);
  			$attr = " rel=\"footnote\"";
  			if ($this->fn_link_class != "") {
  				$class = $this->fn_link_class;
  				$class = $this->encodeAmpsAndAngles($class);
  				$class = str_replace('"', '&quot;', $class);
  				$attr .= " class=\"$class\"";
  			}
  			if ($this->fn_link_title != "") {
  				$title = $this->fn_link_title;
  				$title = $this->encodeAmpsAndAngles($title);
  				$title = str_replace('"', '&quot;', $title);
  				$attr .= " title=\"$title\"";
  			}
  			$attr = str_replace("%%", $num, $attr);
  			
  			return
  				"<sup id=\"fnref:$node_id\">".
  				"<a href=\"#fn:$node_id\"$attr>$num</a>".
  				"</sup>";
  		}
  		
  		return "[^".$matches[1]."]";
  	}
  		
  	
  	### Abbreviations ###
  	
  	function stripAbbreviations($text) {
  	#
  	# Strips abbreviations from text, stores titles in hash references.
  	#
  		$less_than_tab = $this->tab_width - 1;
  
  		# Link defs are in the form: [id]*: url "optional title"
  		$text = preg_replace_callback('{
  			^[ ]{0,'.$less_than_tab.'}\*\[(.+?)\][ ]?:	# abbr_id = $1
  			(.*)					# text = $2 (no blank lines allowed)	
  			}xm',
  			array(&$this, '_stripAbbreviations_callback'),
  			$text);
  		return $text;
  	}
  	function _stripAbbreviations_callback($matches) {
  		$abbr_word = $matches[1];
  		$abbr_desc = $matches[2];
  		$this->abbr_matches[] = preg_quote($abbr_word);
  		$this->abbr_desciptions[$abbr_word] = trim($abbr_desc);
  		return ''; # String that will replace the block
  	}
  	
  	
  	function doAbbreviations($text) {
  	#
  	# Find defined abbreviations in text and wrap them in <abbr> elements.
  	#
  		if ($this->abbr_matches) {
  			// cannot use the /x modifier because abbr_matches may 
  			// contain spaces:
  			$text = preg_replace_callback('{'.
  				'(?<![\w\x1A])'.
  				'(?:'. implode('|', $this->abbr_matches) .')'.
  				'(?![\w\x1A])'.
  				'}', 
  				array(&$this, '_doAbbreviations_callback'), $text);
  		}
  		return $text;
  	}
  	function _doAbbreviations_callback($matches) {
  		$abbr = $matches[0];
  		if (isset($this->abbr_desciptions[$abbr])) {
  			$desc = $this->abbr_desciptions[$abbr];
  			if (empty($desc)) {
  				return $this->hashPart("<abbr>$abbr</abbr>");
  			} else {
  				$desc = htmlspecialchars($desc, ENT_NOQUOTES);
  				return $this->hashPart("<abbr title=\"$desc\">$abbr</abbr>");
  			}
  		} else {
  			return $matches[0];
  		}
  	}
  
  }
  
  
  /*
  
  PHP Markdown Extra
  ==================
  
  Description
  -----------
  
  This is a PHP port of the original Markdown formatter written in Perl 
  by John Gruber. This special "Extra" version of PHP Markdown features 
  further enhancements to the syntax for making additional constructs 
  such as tables and definition list.
  
  Markdown is a text-to-HTML filter; it translates an easy-to-read /
  easy-to-write structured text format into HTML. Markdown's text format
  is most similar to that of plain text email, and supports features such
  as headers, *emphasis*, code blocks, blockquotes, and links.
  
  Markdown's syntax is designed not as a generic markup language, but
  specifically to serve as a front-end to (X)HTML. You can use span-level
  HTML tags anywhere in a Markdown document, and you can use block level
  HTML tags (like <div> and <table> as well).
  
  For more information about Markdown's syntax, see:
  
  <http://daringfireball.net/projects/markdown/>
  
  
  Bugs
  ----
  
  To file bug reports please send email to:
  
  <michel.fortin@michelf.com>
  
  Please include with your report: (1) the example input; (2) the output you
  expected; (3) the output Markdown actually produced.
  
  
  Version History
  --------------- 
  
  See the readme file for detailed release notes for this version.
  
  
  Copyright and License
  ---------------------
  
  PHP Markdown & Extra
  Copyright (c) 2004-2007 Michel Fortin  
  <http://www.michelf.com/>  
  All rights reserved.
  
  Based on Markdown  
  Copyright (c) 2003-2006 John Gruber   
  <http://daringfireball.net/>   
  All rights reserved.
  
  Redistribution and use in source and binary forms, with or without
  modification, are permitted provided that the following conditions are
  met:
  
  *	Redistributions of source code must retain the above copyright notice,
  	this list of conditions and the following disclaimer.
  
  *	Redistributions in binary form must reproduce the above copyright
  	notice, this list of conditions and the following disclaimer in the
  	documentation and/or other materials provided with the distribution.
  
  *	Neither the name "Markdown" nor the names of its contributors may
  	be used to endorse or promote products derived from this software
  	without specific prior written permission.
  
  This software is provided by the copyright holders and contributors "as
  is" and any express or implied warranties, including, but not limited
  to, the implied warranties of merchantability and fitness for a
  particular purpose are disclaimed. In no event shall the copyright owner
  or contributors be liable for any direct, indirect, incidental, special,
  exemplary, or consequential damages (including, but not limited to,
  procurement of substitute goods or services; loss of use, data, or
  profits; or business interruption) however caused and on any theory of
  liability, whether in contract, strict liability, or tort (including
  negligence or otherwise) arising in any way out of the use of this
  software, even if advised of the possibility of such damage.
  
  */
  ?>
  
  
  


wkpark      2008/12/30 18:03:02

  Added:       plugin/filter texturize.php
  Log:
  texturize processor form the wp/b2. suggested by Anonymous
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/filter/texturize.php
  
  Index: texturize.php
  ===================================================================
  <?php
  // Copyright 2008 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a texturize posfilter plugin for the MoniWiki
  //
  // Author: Michel Valdrighi
  // Description: wp/b2 texturize postfilter plugin
  // URL: http://trac.wordpress.org/browser/trunk/wp-includes/functions.php?rev=601
  // License: GPLv2
  // 
  // $Id: texturize.php,v 1.1 2008/12/30 09:03:02 wkpark Exp $
  
  function postfilter_texturize($formatter, $text, $options) {
      $output = '';
      // Capture tags and everything inside them
      $textarr = preg_split("/(<[^>]+>)/s", $text, -1, PREG_SPLIT_DELIM_CAPTURE);
      $stop = count($textarr); $next = true; // loop stuff
      for ($i = 0; $i < $stop; $i++) {
          $curl = $textarr[$i];
  
          if (isset($curl{0}) && '<' != $curl{0} && $next) { // If it's not a tag
              $curl = str_replace('---', '&#8212;', $curl);
              $curl = str_replace(' -- ', ' &#8212; ', $curl);
              $curl = str_replace('--', '&#8211;', $curl);
              $curl = str_replace('xn&#8211;', 'xn--', $curl);
              $curl = str_replace('...', '&#8230;', $curl);
              $curl = str_replace('``', '&#8220;', $curl);
  
              // This is a hack, look at this more later. It works pretty well though.
              $cockney = array("'tain't","'twere","'twas","'tis","'twill","'til","'bout","'nuff","'round","'cause");
              $cockneyreplace = array("&#8217;tain&#8217;t","&#8217;twere","&#8217;twas","&#8217;tis","&#8217;twill","&#8217;til","&#8217;bout","&#8217;nuff","&#8217;round","&#8217;cause");
              $curl = str_replace($cockney, $cockneyreplace, $curl);
  
              $curl = preg_replace("/'s/", '&#8217;s', $curl);
              $curl = preg_replace("/'(\d\d(?:&#8217;|')?s)/", "&#8217;$1", $curl);
              $curl = preg_replace('/(\s|\A|")\'/', '$1&#8216;', $curl);
              $curl = preg_replace('/(\d+)"/', '$1&#8243;', $curl);
              $curl = preg_replace("/(\d+)'/", '$1&#8242;', $curl);
              $curl = preg_replace("/(\S)'([^'\s])/", "$1&#8217;$2", $curl);
              $curl = preg_replace('/(\s|\A)"(?!\s)/', '$1&#8220;$2', $curl);
              $curl = preg_replace('/"(\s|\S|\Z)/', '&#8221;$1', $curl);
              $curl = preg_replace("/'([\s.]|\Z)/", '&#8217;$1', $curl);
              $curl = preg_replace("/ \(tm\)/i", ' &#8482;', $curl);
              $curl = str_replace("''", '&#8221;', $curl);
              
              $curl = preg_replace('/(\d+)x(\d+)/', "$1&#215;$2", $curl);
  
          } elseif (strstr($curl, '<code') || strstr($curl, '<pre') || strstr($curl, '<kbd' || strstr($curl, '<style') || strstr($curl, '<script'))) {
              // strstr is fast
              $next = false;
          } else {
              $next = true;
          }
          $curl = preg_replace('/&([^#])(?![a-z12]{1,8};)/', '&#038;$1', $curl);
          $output .= $curl;
      }
      return $output;
  }
  // vim:et:sts=4:
  ?>
  
  
  


wkpark      2008/12/30 18:15:40

  Modified:    config   html2pdf.php.sample
  Log:
  fixed sample config for the html2pdf processor(TCPDF)
  
  Revision  Changes    Path
  1.2       +4 -6      moniwiki/config/html2pdf.php.sample
  
  Index: html2pdf.php.sample
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config/html2pdf.php.sample,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- html2pdf.php.sample	4 Dec 2008 05:07:43 -0000	1.1
  +++ html2pdf.php.sample	30 Dec 2008 09:15:40 -0000	1.2
  @@ -5,15 +5,13 @@
   $tcpdf_dir='tcpdf';
   
   # default font name
  -$default_font='dejavusans';
  +#$default_font='dejavusans';
   $default_font='Times';
   #$default_font='helvetica';
   
   # default UnicodeTrueType or CID font name.
  -$default_unifont='undotum';
  -#$default_unifont='hysmyeongjostdmedium';
  -
  -#
  -#$default_font='undotum';
  +#$default_unifont='undotum';
  +#$default_unifont='malgun';
  +$default_unifont='hysmyeongjostdmedium';
   
   ?>
  
  
  


wkpark      2008/12/30 18:39:26

  Modified:    plugin   userform.php
  Log:
  do not use & $DBInfo->user.
  
  Revision  Changes    Path
  1.29      +2 -2      moniwiki/plugin/userform.php
  
  Index: userform.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/userform.php,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- userform.php	26 Dec 2008 05:53:40 -0000	1.28
  +++ userform.php	30 Dec 2008 09:39:26 -0000	1.29
  @@ -4,12 +4,12 @@
   // a userform action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: userform.php,v 1.28 2008/12/26 05:53:40 wkpark Exp $
  +// $Id: userform.php,v 1.29 2008/12/30 09:39:26 wkpark Exp $
   
   function do_userform($formatter,$options) {
     global $DBInfo;
   
  -  $user=&$DBInfo->user; # get cookie
  +  $user=$DBInfo->user; # get cookie
     $id=$options['login_id'];
   
     $use_any=0;
  
  
  


wkpark      2008/12/30 18:49:08

  Modified:    .        wiki.php
  Log:
  oops! fixed last change of the link_repl()
  
  Revision  Changes    Path
  1.446     +3 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.445
  retrieving revision 1.446
  diff -u -r1.445 -r1.446
  --- wiki.php	30 Dec 2008 06:55:37 -0000	1.445
  +++ wiki.php	30 Dec 2008 09:49:08 -0000	1.446
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.445 2008/12/30 06:55:37 wkpark Exp $
  +// $Id: wiki.php,v 1.446 2008/12/30 09:49:08 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.445 $',1,-1);
  +$_revision = substr('$Revision: 1.446 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2363,6 +2363,7 @@
           $link =str_replace(array('<','>'),array('&#x3c;','&#x3e;'),$link);
           return $icon. "<a class='externalLink $eclass' $attr $this->external_target href='$link'>$text</a>".$external_icon.$external_link;
         } # have no space
  +      $link = str_replace(array('<','>'),array('&#x3c;','&#x3e;'),$url);
         if (preg_match("/^(http|https|ftp)/",$url)) {
           if (preg_match("/(^.*\.(png|gif|jpeg|jpg))(([\?&]([a-z]+=[0-9a-z]+))*)$/i",$url,$match)) {
             $url=$match[1];
  @@ -2378,11 +2379,9 @@
         }
         if (substr($url,0,7)=='http://' and $url[7]=='?') {
           $link=substr($url,7);
  -        $link = str_replace(array('<','>'),array('&#x3c;','&#x3e;'),$link);
           return "<a class='internalLink' href='$link'>$link</a>";
         }
         $url=urldecode($url);
  -      $link = str_replace(array('<','>'),array('&#x3c;','&#x3e;'),$link);
         return "<a class='externalLink' $attr href='$link' $this->external_target>$url</a>";
       } else {
         if ($url{0}=='?') {
  
  
  


wkpark      2008/12/30 23:13:57

  Modified:    .        wikilib.php
  Log:
  macro_TitleIndex() fix to support namespace.
  
  Revision  Changes    Path
  1.259     +23 -9     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.258
  retrieving revision 1.259
  diff -u -r1.258 -r1.259
  --- wikilib.php	29 Dec 2008 22:14:47 -0000	1.258
  +++ wikilib.php	30 Dec 2008 14:13:57 -0000	1.259
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.258 2008/12/29 22:14:47 wkpark Exp $
  +// $Id: wikilib.php,v 1.259 2008/12/30 14:13:57 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -176,14 +176,14 @@
     return array($page,$text,$main_page);
   }
   
  -function get_title($page) {
  +function get_title($page,$title='') {
     global $DBInfo;
     if ($DBInfo->use_titlecache) {
       $cache=new Cache_text('title');
       if ($cache->exists($page)) $title=$cache->fetch($page);
  -    else $title=$page;
  +    else $title=$title ? $title:$page;
     } else
  -    $title=$page;
  +    $title=$title ? $title: $page;
   
     #return preg_replace("/((?<=[a-z0-9]|[B-Z]{2}|A)([A-Z][a-z]|A))/"," \\1",$title);
     if ($DBInfo->title_rule)
  @@ -2330,6 +2330,15 @@
     return $DBInfo->getCounter();
   }
   
  +function _setpagekey(&$page,$k) {
  +  if (($p = strpos($k, '~'))!== false) {
  +    $g = ' ('.substr($k,0,$p).')';
  +    $page = substr($k, $p+1).$g;
  +  } else {
  +    $page = $k;
  +  }
  +}
  +
   function macro_TitleIndex($formatter,$value) {
     global $DBInfo;
   
  @@ -2342,9 +2351,14 @@
         $all_pages[]=str_replace($formatter->group,'',$page);
     } else
       $all_pages = $DBInfo->getPageLists();
  +
     #natcasesort($all_pages);
     #sort($all_pages,SORT_STRING);
  -  usort($all_pages, 'strcasecmp');
  +  //usort($all_pages, 'strcasecmp');
  +  $pages = array_flip($all_pages);
  +  array_walk($pages,'_setpagekey');
  +  $all_pages = array_flip($pages);
  +  uksort($all_pages, 'strcasecmp');
   
     $key=-1;
     $out="";
  @@ -2356,7 +2370,7 @@
   
   #  if ($DBInfo->use_titlecache)
   #    $cache=new Cache_text('title');
  -  foreach ($all_pages as $page) {
  +  foreach ($all_pages as $page=>$rpage) {
       $p=ltrim($page);
       $pkey=get_key("$p");
       if ($key != $pkey) {
  @@ -2372,12 +2386,12 @@
   #    if ($DBInfo->use_titlecache and $cache->exists($page))
   #      $title=$cache->fetch($page);
   #    else
  -      $title=get_title($page);
  +      $title=get_title($rpage,$page);
   
       #$out.= '<li>' . $formatter->word_repl('"'.$page.'"',$title,'',0,0);
  -    $urlname=_urlencode($group.$page);
  +    $urlname=_urlencode($group.$rpage);
       $out.= '<li>' . $formatter->link_tag($urlname,'',htmlspecialchars($title));
  -    $keyname=$DBInfo->pageToKeyname(urldecode($page));
  +    $keyname=$DBInfo->pageToKeyname(urldecode($rpage));
       if (is_dir($DBInfo->upload_dir."/$keyname"))
          $out.=' '.$formatter->link_tag($urlname,"?action=uploadedfiles",
            $formatter->icon['attach']);
  
  
  


wkpark      2008/12/31 00:17:50

  Modified:    plugin   userform.php
  Log:
  fix last changes.
  
  Revision  Changes    Path
  1.30      +4 -1      moniwiki/plugin/userform.php
  
  Index: userform.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/userform.php,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- userform.php	30 Dec 2008 09:39:26 -0000	1.29
  +++ userform.php	30 Dec 2008 15:17:49 -0000	1.30
  @@ -4,7 +4,7 @@
   // a userform action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: userform.php,v 1.29 2008/12/30 09:39:26 wkpark Exp $
  +// $Id: userform.php,v 1.30 2008/12/30 15:17:49 wkpark Exp $
   
   function do_userform($formatter,$options) {
     global $DBInfo;
  @@ -83,6 +83,7 @@
           $options['id']=$user->id;
           $formatter->header($user->setCookie());
   
  +        $DBInfo->user=$user;
           $userdb->saveUser($user); # XXX
           $use_refresh=1;
         } else {
  @@ -99,6 +100,8 @@
       # logout
       $formatter->header($user->unsetCookie());
       $options['msg']= _("Cookie deleted !");
  +    $user->id = 'Anonymous';
  +    $DBInfo->user=$user;
       $use_refresh=1;
     } else if ($DBInfo->use_sendmail and
       $options['login'] == _("E-mail new password") and
  
  
  


wkpark      2008/12/31 07:36:56

  Modified:    .        wiki.php
  Log:
  cleanup $extra_macros
  use get_javascripts() with $extra_macros
  
  Revision  Changes    Path
  1.447     +20 -16    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.446
  retrieving revision 1.447
  diff -u -r1.446 -r1.447
  --- wiki.php	30 Dec 2008 09:49:08 -0000	1.446
  +++ wiki.php	30 Dec 2008 22:36:55 -0000	1.447
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.446 2008/12/30 09:49:08 wkpark Exp $
  +// $Id: wiki.php,v 1.447 2008/12/30 22:36:55 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.446 $',1,-1);
  +$_revision = substr('$Revision: 1.447 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -5466,23 +5466,27 @@
       $options['timer']->Check("send_page");
       $formatter->write("<!-- wikiContent --></div>\n");
   
  -    // XXX
       if ($DBInfo->extra_macros and
           $formatter->pi['#format'] == $DBInfo->default_markup) {
  -      if ($formatter->pi['#nocomment']) $options['nocomment']=1;
  -      $options['mid']='dummy';
  -      $extra=$DBInfo->extra_macros;
  -      if (!is_array($extra)) {
  -        print '<div id="wikiExtra">'."\n";
  -        print $formatter->macro_repl($DBInfo->extra_macros,'',$options);
  -        print '</div>'."\n";
  -      } else {
  -        if ($formatter->pi['#comment']) array_unshift($extra,'Comment');
  -        print '<div id="wikiExtra">'."\n";
  -        foreach ($extra as $macro)
  -          print $formatter->macro_repl($macro,'',$options);
  -        print '</div>'."\n";
  +      if ($formatter->pi['#nocomment']) {
  +        $options['nocomment']=1;
  +        $options['notoolbar']=1;
         }
  +      $options['mid']='dummy';
  +      print '<div id="wikiExtra">'."\n";
  +      $mout = '';
  +      $extra = array();
  +      if (is_array($DBInfo->extra_macros))
  +        $extra = $DBInfo->extra_macros;
  +      else
  +        $extra[] = $DBInfo->extra_macros; // XXX
  +      if ($formatter->pi['#comment']) array_unshift($extra,'Comment');
  +
  +      foreach ($extra as $macro)
  +        $mout.= $formatter->macro_repl($macro,'',$options);
  +      print $formatter->get_javascripts();
  +      print $mout;
  +      print '</div>'."\n";
       }
       
       $args['editable']=1;
  
  
  


wkpark      2008/12/31 07:38:15

  Modified:    .        wikilib.php
  Log:
  PR #305232 make xhtml valid reported by acooda.
  
  Revision  Changes    Path
  1.260     +12 -3     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.259
  retrieving revision 1.260
  diff -u -r1.259 -r1.260
  --- wikilib.php	30 Dec 2008 14:13:57 -0000	1.259
  +++ wikilib.php	30 Dec 2008 22:38:15 -0000	1.260
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.259 2008/12/30 14:13:57 wkpark Exp $
  +// $Id: wikilib.php,v 1.260 2008/12/30 22:38:15 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2008,7 +2008,7 @@
   OPENID;
       }
     $id_btn=_("ID");
  -  $sep="<tr><td colspan='2'><hr></td></tr>\n";
  +  $sep="<tr><td colspan='2'><hr /></td></tr>\n";
     if ($user->id == 'Anonymous' and !isset($options['login_id']) and $value!="simple") {
       if (isset($openid_form) and $value != 'openid') $sep0=$sep;
       if ($value != 'openid')
  @@ -2016,20 +2016,25 @@
     <tr><th>$id_btn&nbsp;</th><td>$idform</td></tr>
     <tr>
        <th>$passwd_btn&nbsp;</th><td><input type="password" size="15" maxlength="$pw_len" name="password" value="" /></td>
  +  </tr>
     <tr><td></td><td>
       $passwd_hidden
       <input type="submit" name="login" value="$button" /> &nbsp;
     </td></tr>
   MYFORM;
       $login=<<<FORM
  +<div>
   <form method="post" action="$url"$onsubmit>
  +<div>
   <input type="hidden" name="action" value="userform" />
   <table border="0">
   $openid_form
   $sep0
   $default_form
   </table>
  +</div>
   </form>
  +</div>
   FORM;
       $openid_form='';
     }
  @@ -2049,7 +2054,7 @@
           $seed=md5(base64_encode(time()));
           $ticketimg=$formatter->link_url($formatter->page->name,'?action=ticket&amp;__seed='.$seed);
           $extra.=<<<EXTRA
  -  <tr><td><img src="$ticketimg" />&nbsp;</td><td><input type="text" size="10" name="check" />
  +  <tr><td><img src="$ticketimg" alt="captcha" />&nbsp;</td><td><input type="text" size="10" name="check" />
   <input type="hidden" name="__seed" value="$seed" /></td></tr>
   EXTRA;
         }
  @@ -2134,7 +2139,9 @@
     return <<<EOF
   $login
   $jscript
  +<div>
   <form method="post" action="$url"$onsubmit>
  +<div>
   <input type="hidden" name="action" value="userform" />
   <table border="0">
   $openid_form
  @@ -2150,7 +2157,9 @@
       $logout
     </td></tr>
   </table>
  +</div>
   </form>
  +</div>
   $script
   EOF;
   }
  
  
  


wkpark      2008/12/31 07:40:05

  Modified:    plugin   EditToolbar.php VisualTour.php login.php
  Log:
  EditToolbar : support simple option arg
  VisualTour : use cmapx by default. (imagemap does not supported by some distro for a security reason)
  login : make xhtml valid.
  
  Revision  Changes    Path
  1.11      +48 -15    moniwiki/plugin/EditToolbar.php
  
  Index: EditToolbar.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/EditToolbar.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- EditToolbar.php	27 Dec 2008 02:41:26 -0000	1.10
  +++ EditToolbar.php	30 Dec 2008 22:40:05 -0000	1.11
  @@ -7,14 +7,54 @@
   //
   // This feature is imported from the MediaWiki
   //
  -// $Id: EditToolbar.php,v 1.10 2008/12/27 02:41:26 wkpark Exp $
  +// $Id: EditToolbar.php,v 1.11 2008/12/30 22:40:05 wkpark Exp $
   
  -function macro_EditToolbar($formatter,$value) {
  +function macro_EditToolbar($formatter,$value, $options=array()) {
       global $DBInfo;
  +    if ($options['notoolbar']) return '';
  +
  +    $default = array('bold','italic','link','extlink','headline',
  +        'math','nowiki','hr','image','media','smiley','sig','infobox');
  +
  +    $simple = array('bold','italic','link','extlink',
  +        'math','nowiki','image','media','smiley','sig','infobox');
  +
  +    $btnset = 'default';
  +    if ($value == 'simple')
  +        $btnset = $value;
   
       $iconset=!empty($DBInfo->toolbar_iconset) ? $DBInfo->toolbar_iconset:
           'moniwiki';
       $imgdir=$DBInfo->imgs_dir.'/plugin/EditToolbar/'.$iconset;
  +
  +    $buttons = array(
  +        'bold'=>
  +            "addButton('$imgdir/button_bold.png',N_('Bold text'),'\'\'\'','\'\'\'',N_('Bold text'));\n",
  +        'italic'=>
  +            "addButton('$imgdir/button_italic.png',N_('Italic text'),'\'\'','\'\'',N_('Italic text'));\n",
  +        'link'=>
  +            "addButton('$imgdir/button_link.png',N_('Internal link'),'[',']',N_('Link title'));\n",
  +        'extlink'=>
  +            "addButton('$imgdir/button_extlink.png',N_('External link (remember http:// prefix)'),'[',']',N_('http://www.example.com link title'));\n",
  +        'headline'=>
  +            "addButton('$imgdir/button_headline.png',N_('Level 2 headline'),'\\n== ',' ==\\n',N_('Headline text'));\n",
  +        'math'=>
  +            "addLinkButton('$imgdir/button_math.png',N_('Mathematical formula (LaTeX)'),'\$ ',' \$',N_('Insert latex formula here'),'mathChooser');\n",
  +        'nowiki'=>
  +            "addButton('$imgdir/button_nowiki.png',N_('Ignore wiki formatting'),'{{{','}}}',N_('Insert non-formatted text here'));\n",
  +        'hr'=>
  +            "addButton('$imgdir/button_hr.png',N_('Horizontal line (use sparingly)'),'\\n----\\n','','');\n",
  +        'image'=>
  +            "addButton('$imgdir/button_image.png',N_('Embedded image'),'attachment:','','Example.jpg');\n",
  +        'media'=>
  +            "addButton('$imgdir/button_media.png',N_('Media file link'),'[[Media(',')]]','Example.mp3');\n",
  +        'smiley'=>
  +            "addLinkButton('$imgdir/button_smiley.png',N_('Smiley'),'','',':)','smileyChooser',true);\n",
  +        'sig'=>
  +            "addButton('$imgdir/button_sig.png',N_('Your signature with timestamp'),'@SIG@','','');\n",
  +        'infobox'=>
  +            "addInfobox(N_('Click a button to get an example text'),N_('Please enter the text you want to be formatted.\\\\n It will be shown in the infobox for copy and pasting.\\\\nExample:\\\\n\$1\\\\nwill become:\\\\n\$2'));\n",
  +    );
       $formatter->register_javascripts("wikibits.js");
       $fcss= 'imgs/plugin/EditToolbar/'.$iconset.'/toolbar.css';
       $css='';
  @@ -27,19 +67,12 @@
   <script language="JavaScript" type='text/javascript'>
   /*<![CDATA[*/
   document.writeln("<div id='toolbar'><span>");
  -addButton('$imgdir/button_bold.png',N_('Bold text'),'\'\'\'','\'\'\'',N_('Bold text'));
  -addButton('$imgdir/button_italic.png',N_('Italic text'),'\'\'','\'\'',N_('Italic text'));
  -addButton('$imgdir/button_link.png',N_('Internal link'),'[',']',N_('Link title'));
  -addButton('$imgdir/button_extlink.png',N_('External link (remember http:// prefix)'),'[',']',N_('http://www.example.com link title'));
  -addButton('$imgdir/button_headline.png',N_('Level 2 headline'),'\\n== ',' ==\\n',N_('Headline text'));
  -addLinkButton('$imgdir/button_math.png',N_('Mathematical formula (LaTeX)'),'\$ ',' \$',N_('Insert latex formula here'),'mathChooser');
  -addButton('$imgdir/button_nowiki.png',N_('Ignore wiki formatting'),'{{{','}}}',N_('Insert non-formatted text here'));
  -addButton('$imgdir/button_hr.png',N_('Horizontal line (use sparingly)'),'\\n----\\n','','');
  -addButton('$imgdir/button_image.png',N_('Embedded image'),'attachment:','','Example.jpg');
  -addButton('$imgdir/button_media.png',N_('Media file link'),'[[Media(',')]]','Example.mp3');
  -addLinkButton('$imgdir/button_smiley.png',N_('Smiley'),'','',':)','smileyChooser',true);
  -addButton('$imgdir/button_sig.png',N_('Your signature with timestamp'),'@SIG@','','');
  -addInfobox(N_('Click a button to get an example text'),N_('Please enter the text you want to be formatted.\\\\n It will be shown in the infobox for copy and pasting.\\\\nExample:\\\\n\$1\\\\nwill become:\\\\n\$2'));
  +
  +EOS;
  +    foreach (${$btnset} as $btn)
  +        $script.= $buttons[$btn];
  +
  +    $script.=<<<EOS
   document.writeln("</span></div><div style='clear:both'></div>");
   /*]]>*/
   </script>
  
  
  
  1.9       +18 -3     moniwiki/plugin/VisualTour.php
  
  Index: VisualTour.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/VisualTour.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- VisualTour.php	29 Jul 2006 15:01:14 -0000	1.8
  +++ VisualTour.php	30 Dec 2008 22:40:05 -0000	1.9
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a VisualTour plugin for the MoniWiki
   //
  -// $Id: VisualTour.php,v 1.8 2006/07/29 15:01:14 wkpark Exp $
  +// $Id: VisualTour.php,v 1.9 2008/12/30 22:40:05 wkpark Exp $
   
   function macro_VisualTour($formatter,$value,$options=array()) {
     global $DBInfo;
  @@ -12,6 +12,8 @@
     $dotcmd="dot";
     #$dotcmd="twopi";
     #$dotcmd="neato";
  +  $maptype = 'imap';
  +  $maptype = 'cmap';
   
     if (!$formatter->page->exists())
       return "";
  @@ -92,7 +94,7 @@
       $fp=popen($cmd.$formatter->LOG,'r');
       pclose($fp);
       $err=$formatter->get_errlog();
  -    $cmd="$dotcmd -Timap $dotfile -o $mapfile";
  +    $cmd="$dotcmd -T$maptype $dotfile -o $mapfile";
       $formatter->errlog('Dot');
       $fp=popen($cmd.$formatter->LOG,'r');
       pclose($fp);
  @@ -102,7 +104,20 @@
   
     }
   
  -  return $err."<span class='VisualTour'><a href='$map_url'><img src='$png_url' alt='VisualTour' ismap></a></span>\n";
  +  if ($maptype == 'imap') {
  +    $attr = ' ismap="ismap"';
  +    return $err."<span class='VisualTour'><a href='$map_url'><img src='$png_url' alt='VisualTour'$attr></a></span>\n";
  +  } else {
  +    $attr = ' usemap="#mainmap"';
  +    $fp = fopen($mapfile,'r');
  +    $map = '';
  +    if (is_resource($fp)) {
  +      while(!feof($fp)) $map.= fgets($fp,1024);
  +      fclose($fp);
  +      $map = '<map name="mainmap">'.$map.'</map>';
  +    }
  +    return $err."<span class='VisualTour'><img src='$png_url' alt='VisualTour'$attr>$map</span>\n";
  +  }
   }
   
   function do_VisualTour($formatter,$options) {
  
  
  
  1.11      +3 -1      moniwiki/plugin/login.php
  
  Index: login.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/login.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- login.php	10 Dec 2008 09:59:49 -0000	1.10
  +++ login.php	30 Dec 2008 22:40:05 -0000	1.11
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Login]]
   //
  -// $Id: login.php,v 1.10 2008/12/10 09:59:49 wkpark Exp $
  +// $Id: login.php,v 1.11 2008/12/30 22:40:05 wkpark Exp $
   
   function macro_login($formatter,$value="",$options="") {
     global $DBInfo;
  @@ -34,12 +34,14 @@
     return <<<LOGIN
   <div id='wikiLogin'>$jscript
   <form method='post' action='$urlpage' $onsubmit>
  +<div>
   <input type="hidden" name="action" value="userform" />
   <table border='0' cellpadding='2' cellspacing='0'>
   <tr><td align='right'>$login</td><td><input name='login_id' size='10' /></td></tr>
   <tr><td align='right'>$pass</td><td><input name='password' type='password' size='10' /></td></tr>
   <tr><td align='right'><a href='$url'>$join</a></td><td><input type='submit' value='OK' />$passwd_hidden</td></tr>
   </table>
  +</div>
   </form>
   </div>
   LOGIN;
  
  
  


wkpark      2008/12/31 18:38:11

  Modified:    .        wikilib.php
  Log:
  fix for inline {{{foobar}}} in the headings.
  
  Revision  Changes    Path
  1.261     +21 -2     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.260
  retrieving revision 1.261
  diff -u -r1.260 -r1.261
  --- wikilib.php	30 Dec 2008 22:38:15 -0000	1.260
  +++ wikilib.php	31 Dec 2008 09:38:11 -0000	1.261
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.260 2008/12/30 22:38:15 wkpark Exp $
  +// $Id: wikilib.php,v 1.261 2008/12/31 09:38:11 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -736,7 +736,26 @@
   }
   
   function _get_sections($body,$lim=5) {
  -  $chunks=preg_split("/(\{\{\{.+?\}\}\})/s",$body,-1, PREG_SPLIT_DELIM_CAPTURE);
  +  $tmp = preg_split("/(\{\{\{.+?\}\}\})/s",$body,-1, PREG_SPLIT_DELIM_CAPTURE);
  +
  +  // fix for inline {{{foobar}}} in the headings.
  +  $chunks = array();
  +  $i = $j = 0;
  +  $c = count($tmp);
  +  while ($i < $c) {
  +    if ($i % 2) {
  +      if (strpos($tmp[$i],"\n") === false) {
  +        $chunks[$j-1].= $tmp[$i].$tmp[$i+1];
  +        $i+=2;
  +      } else {
  +        $chunks[$j++] = $tmp[$i++];
  +      }
  +    } else {
  +      $chunks[$j++] = $tmp[$i++];
  +    }
  +  }
  +  unset($tmp);
  +
     $sects=array();
     $sects[]='';
     if ($lim > 1 and $lim < 6) $lim=','.$lim;
  
  
  


wkpark      2008/12/31 20:04:07

  Modified:    plugin   PluginInfo.php
  Log:
  check if it is internal plugin or not
  
  Revision  Changes    Path
  1.2       +9 -2      moniwiki/plugin/PluginInfo.php
  
  Index: PluginInfo.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/PluginInfo.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- PluginInfo.php	16 Dec 2008 09:40:26 -0000	1.1
  +++ PluginInfo.php	31 Dec 2008 11:04:07 -0000	1.2
  @@ -7,13 +7,13 @@
   // Name: PluginInfo
   // Description: Show Plugin/Processor Info
   // URL: MoniWiki:PluginInfoMacro
  -// Version: $Revision: 1.1 $
  +// Version: $Revision: 1.2 $
   // Depend: 1.1.3
   // License: GPL
   //
   // Usage: [[PluginInfo(name)]]
   //
  -// $Id: PluginInfo.php,v 1.1 2008/12/16 09:40:26 wkpark Exp $
  +// $Id: PluginInfo.php,v 1.2 2008/12/31 11:04:07 wkpark Exp $
   
   include_once(dirname(__FILE__).'/admin.php');
   
  @@ -29,6 +29,13 @@
           return sprintf(_("Total %s plugin activated."),$num);
       }
       $file = getPlugin(strtolower($value));
  +    if (empty($file)) {
  +        if (($m = function_exists('macro_'.$value)) or ($m = function_exists('do_'.$value))) {
  +            return sprintf(_("%s is internal plugin."),$value);
  +        } else {
  +            return sprintf(_("%s plugin is not found."),$value);
  +        }
  +    }
       $info = get_plugin_info(dirname(__FILE__)."/$file.php");
   
       $name=!empty($info['Name']) ? $info['Name'].' ('.$value.')':$value;
  
  
  


wkpark      2008/12/31 20:12:51

  Modified:    local    wikibits.js
  Log:
  fix for Comment txtarea
  
  Revision  Changes    Path
  1.17      +7 -6      moniwiki/local/wikibits.js
  
  Index: wikibits.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/wikibits.js,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- wikibits.js	27 Dec 2008 03:12:30 -0000	1.16
  +++ wikibits.js	31 Dec 2008 11:12:51 -0000	1.17
  @@ -1,7 +1,7 @@
   // from the MediaWiki
   // simplified for the MoniWiki by wkpark
   //
  -// $Id: wikibits.js,v 1.16 2008/12/27 03:12:30 wkpark Exp $
  +// $Id: wikibits.js,v 1.17 2008/12/31 11:12:51 wkpark Exp $
   //
   // Wikipedia JavaScript support functions
   // if this is true, the toolbar will no longer overwrite the infobox when you move the mouse over individual items
  @@ -173,13 +173,14 @@
   	var my = document.getElementById('editor_area');
   	var ef = document.getElementById('editform');
   	var doc = document;
  +	var txtarea;
   	if (ef)
  -		var txtarea = ef.savetext;
  +		txtarea = ef.savetext;
   	else {
   		// some alternate form? take the first one we can find
   		var areas = doc.getElementsByTagName('textarea');
   		if (areas.length > 0) {
  -			var txtarea = areas[0];
  +			txtarea = areas[0];
   		} else if (opener) {
   			doc = opener.document;
   			if (ef && ef.savetext) {
  @@ -192,14 +193,14 @@
   	}
   
   	while (my == null || my.style.display == 'none') { // wikiwyg hack
  -		txtarea = doc.getElementById('wikiwyg_wikitext_textarea');
  -
  -
   		// get iframe and check visibility.
   		var myframe = doc.getElementsByTagName('iframe')[0];
   		var mnew;
  +		if (! myframe) break;
   		if (myframe.style.display == 'none' || myframe.parentNode.style.display == 'none') break;
   
  +		txtarea = doc.getElementById('wikiwyg_wikitext_textarea');
  +
   		if (tagOpen == '$ ' && tagClose == ' $') { // latex math
   			var wikiwyg = wikiwygs[0]; // XXX
   			//var gui = false;
  
  
  


wkpark      2008/12/31 20:13:24

  Modified:    local/js/locale dummy.js
  Log:
  gettextize some msgs
  
  Revision  Changes    Path
  1.7       +4 -0      moniwiki/local/js/locale/dummy.js
  
  Index: dummy.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/locale/dummy.js,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- dummy.js	26 Dec 2008 16:58:01 -0000	1.6
  +++ dummy.js	31 Dec 2008 11:13:24 -0000	1.7
  @@ -2,6 +2,10 @@
   N_("Canceled!");
   N_("Please select the text you would like to turn into a link.");
   
  +//
  +N_("Auto saved text found.\nAre you sure to restore page ?\n(You can undo/redo with Ctrl-Z/Ctrl-Shift-Z)");
  +N_("Current text is saved in a temporary file.");
  +
   // sh
   N_("The code is in your clipboard now");
   N_('Printing...');
  
  
  


wkpark      2008/12/31 20:22:39

  Added:       imgs/info plugin.png
  Log:
  add a missing png
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/info/plugin.png
  
  	<<Binary file>>
  
  


wkpark      2009/01/01 14:08:05

  Modified:    .        wiki.php
  Log:
  merge icons
  
  Revision  Changes    Path
  1.448     +6 -5      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.447
  retrieving revision 1.448
  diff -u -r1.447 -r1.448
  --- wiki.php	30 Dec 2008 22:36:55 -0000	1.447
  +++ wiki.php	1 Jan 2009 05:08:05 -0000	1.448
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.447 2008/12/30 22:36:55 wkpark Exp $
  +// $Id: wiki.php,v 1.448 2009/01/01 05:08:05 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.447 $',1,-1);
  +$_revision = substr('$Revision: 1.448 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2009,9 +2009,10 @@
         $this->menu_sep=$DBInfo->menu_sep;
       }
   
  -    if (!$this->icons) {
  -      $this->icons=$DBInfo->icons ? $DBInfo->icons:null;
  -    }
  +    if (!$this->icons)
  +      $this->icons = array();
  +    $this->icons = array_merge($DBInfo->icons,$this->icons);
  +
       if (!$this->icon_list) {
         $this->icon_list=$DBInfo->icon_list ? $DBInfo->icon_list:null;
       }
  
  
  


wkpark      2009/01/01 14:10:23

  Modified:    plugin   RecentChanges.php
  Log:
  change implicit icons new/updated to explicit
  
  Revision  Changes    Path
  1.29      +11 -7     moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- RecentChanges.php	30 Dec 2008 06:54:33 -0000	1.28
  +++ RecentChanges.php	1 Jan 2009 05:10:23 -0000	1.29
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.28 2008/12/30 06:54:33 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.29 2009/01/01 05:10:23 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     $options['trail']='';
  @@ -26,7 +26,7 @@
   
     $template_bra="";
     $template=
  -  '$out.= "$icon&nbsp;&nbsp;$title $date . . . . $user $count $extra<br />\n";';
  +  '$out.= "$icon&nbsp;&nbsp;$title$updated $date . . . . $user $count $extra<br />\n";';
     $template_cat="";
     $use_day=1;
   
  @@ -74,7 +74,7 @@
         } else if ($arg=="table") {
           $bra="<table border='0' cellpadding='0' cellspacing='0' width='100%'>";
           $template=
  -  '$out.= "<tr><td style=\'white-space:nowrap;width:2%\'>$icon</td><td style=\'width:40%\'>$title</td><td class=\'date\' style=\'width:15%\'>$date</td><td>$user $count $extra</td></tr>\n";';
  +  '$out.= "<tr><td style=\'white-space:nowrap;width:2%\'>$icon</td><td style=\'width:40%\'>$title$updated</td><td class=\'date\' style=\'width:15%\'>$date</td><td>$user $count $extra</td></tr>\n";';
           $cat="</table>";
           $cat0="";
         } else if ($arg=="board") {
  @@ -82,7 +82,7 @@
           $use_day=0;
           $template_bra="<table border='0' cellpadding='0' cellspacing='0' width='100%'>";
           $template=
  -  '$out.= "<tr$alt><td style=\'white-space:nowrap;width:2%\'>$icon</td><td style=\'width:40%\'>$title</td><td class=\'date\' style=\'width:15%\'>$date</td><td class=\'user\'>$user</td><td class=\'editinfo\'>$count</td><td>$extra</td><td class=\'hits\'>$hits</td></tr>\n";';
  +  '$out.= "<tr$alt><td style=\'white-space:nowrap;width:2%\'>$icon</td><td style=\'width:40%\'>$title$updated</td><td class=\'date\' style=\'width:15%\'>$date</td><td class=\'user\'>$user</td><td class=\'editinfo\'>$count</td><td>$extra</td><td class=\'hits\'>$hits</td></tr>\n";';
           $template_cat="</table>";
         }
       }
  @@ -240,16 +240,20 @@
       $pageurl=_rawurlencode($page_name);
   
       #print $ed_time."/".$bookmark."//";
  +    $updated = '';
       if (!$DBInfo->hasPage($page_name))
         $icon= $formatter->link_tag($pageurl,"?action=info",$formatter->icon['del']);
       else if ($ed_time > $bookmark) {
  -      $icon= $formatter->link_tag($pageurl,"?action=diff&amp;date=$bookmark",$formatter->icon['updated']);
  +      $icon= $formatter->link_tag($pageurl,"?action=diff&amp;date=$bookmark",$formatter->icon['diff']);
  +      $updated= ' '.$formatter->link_tag($pageurl,"?action=diff&amp;date=$bookmark",$formatter->icon['updated']);
         if ($checknew) {
           $p= new WikiPage($page_name);
           $v= $p->get_rev($bookmark);
  -        if (!$v)
  +        if (empty($v)) {
             $icon=
  -            $formatter->link_tag($pageurl,"?action=info",$formatter->icon['new']);
  +            $formatter->link_tag($pageurl,"?action=info",$formatter->icon['show']);
  +          $updated = ' '.$formatter->link_tag($pageurl,"?action=info",$formatter->icon['new']);
  +        }
         }
       } else
         $icon= $formatter->link_tag($pageurl,"?action=diff",$formatter->icon['diff']);
  
  
  


wkpark      2009/01/01 16:27:21

  Modified:    plugin   Keywords.php
  Log:
  support 'call' option
  
  Revision  Changes    Path
  1.28      +4 -3      moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- Keywords.php	6 May 2008 09:28:50 -0000	1.27
  +++ Keywords.php	1 Jan 2009 07:27:21 -0000	1.28
  @@ -8,16 +8,16 @@
   // Name: a Keywords Plugin
   // Description: a Keywords plugin to generate keywords of a page
   // URL: MoniWiki:KeywordsPlugin
  -// Version: $Revision: 1.27 $
  +// Version: $Revision: 1.28 $
   // License: GPL
   //
   // Usage: [[Keywords(options)]]
   //
  -// $Id: Keywords.php,v 1.27 2008/05/06 09:28:50 wkpark Exp $
  +// $Id: Keywords.php,v 1.28 2009/01/01 07:27:21 wkpark Exp $
   
   define(LOCAL_KEYWORDS,'LocalKeywords');
   
  -function macro_Keywords($formatter,$value,$options='') {
  +function macro_Keywords($formatter,$value,$options=array()) {
       global $DBInfo;
   define(MAX_FONT_SZ,24);
   define(MIN_FONT_SZ,10);
  @@ -256,6 +256,7 @@
   
       endif;
       //
  +    if ($options['call']) return $words;
   
       if ($limit and ($sz=sizeof($words))>$limit) {
           arsort($words);
  
  
  


wkpark      2009/01/01 19:18:16

  Added:       imgs/misc btnpushed.png panbg.png
  Log:
  add missing images
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/misc/btnpushed.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/misc/panbg.png
  
  	<<Binary file>>
  
  


wkpark      2009/01/02 00:03:24

  Modified:    plugin   ISBN.php
  Log:
  fixed PR #301436: fixed Aladdin bug
  check ISBN-13
  
  Revision  Changes    Path
  1.11      +8 -4      moniwiki/plugin/ISBN.php
  
  Index: ISBN.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/ISBN.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- ISBN.php	23 Dec 2006 16:45:49 -0000	1.10
  +++ ISBN.php	1 Jan 2009 15:03:24 -0000	1.11
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a ISBN macro plugin for the MoniWiki
   //
  -// $Id: ISBN.php,v 1.10 2006/12/23 16:45:49 wkpark Exp $
  +// $Id: ISBN.php,v 1.11 2009/01/01 15:03:24 wkpark Exp $
   
   function macro_ISBN($formatter,$value="") {
     global $DBInfo;
  @@ -14,12 +14,12 @@
     $ISBN_MAP="IsbnMap";
     $DEFAULT=<<<EOS
   Amazon http://www.amazon.com/exec/obidos/ISBN= http://images.amazon.com/images/P/\$ISBN.01.MZZZZZZZ.gif
  -Aladdin http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN= http://image.aladdin.co.kr/cover/cover/\$ISBN_1.gif @/cover/([^\s_/]+_1\..{3,4})\s@\\\$ISBN_1\.gif
  +Aladdin http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN= http://image.aladdin.co.kr/cover/cover/\$ISBN_1.gif @/cover/([^\s_/]+_\d\..{3,4})\s@\\\$ISBN_1\.gif
   Gang http://kangcom.com/common/qsearch/search.asp?s_flag=T&s_text= http://kangcom.com/l_pic/\$ISBN.jpg @bookinfo\.asp\?sku=(\d+)"@\n
   EOS;
   
     $DEFAULT_ISBN="Amazon";
  -  $re_isbn="/([0-9\-]+[xX]?)(?:,\s*)?(([A-Z][A-Za-z]*)?(?:,)?(.*))?/x";
  +  $re_isbn="/^([0-9\-]+[xX]?)(?:,\s*)?(([A-Z][A-Za-z]*)?(?:,)?(.*))?/x";
   
     if ($value!='') {
        $test=preg_match($re_isbn,$value,$match);
  @@ -88,7 +88,11 @@
       if (strtolower($match[2][0])=='k') $lang='Aladdin';
       else $lang=$match[3];
     } else {
  -    $lang_code=substr($isbn,0,2);
  +    $cl = strlen($isbn);
  +    if ($cl == 13)
  +      $lang_code=substr($isbn,3,2); // 978 89
  +    else
  +      $lang_code=substr($isbn,0,2); // 89
       if ($default_map[$lang_code])
         $lang=$default_map[$lang_code];
       else
  
  
  


wkpark      2009/01/02 01:24:02

  Modified:    .        wiki.php
  Log:
  disable toc,sectionedit within tables
  
  Revision  Changes    Path
  1.449     +14 -10    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.448
  retrieving revision 1.449
  diff -u -r1.448 -r1.449
  --- wiki.php	1 Jan 2009 05:08:05 -0000	1.448
  +++ wiki.php	1 Jan 2009 16:24:02 -0000	1.449
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.448 2009/01/01 05:08:05 wkpark Exp $
  +// $Id: wiki.php,v 1.449 2009/01/01 16:24:02 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.448 $',1,-1);
  +$_revision = substr('$Revision: 1.449 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -1794,7 +1794,6 @@
       $this->postfilters=$DBInfo->postfilters;
       $this->use_rating=$DBInfo->use_rating;
       $this->use_etable=$DBInfo->use_etable;
  -    $this->use_enhanced=$DBInfo->use_enhanced;
       $this->use_metadata=$DBInfo->use_metadata;
       $this->udb=&$DBInfo->udb;
       $this->user=&$DBInfo->user;
  @@ -2729,6 +2728,9 @@
       $dep=$depth;
       $this->nobr=1;
   
  +    if ($headinfo == null)
  +      return "<h$dep$attr>$head</h$dep>";
  +
       $head=str_replace('\"','"',$head); # revert \\" to \"
   
       if (!$headinfo['top']) {
  @@ -3126,10 +3128,8 @@
         preg_match('/^((&lt;[^>]+>)*)(\s?)(.*)(?<!\s)(\s*)?$/s',
           $cells[$i+1],$m);
         $cell=$m[3].$m[4].$m[5];
  -      if ($this->use_enhanced and strpos($cell,"\n") !== false)
  -        $cell=$this->processor_repl('monimarkup',$cell);
  -      else
  -        $cell=str_replace("\n","<br />\n",$cell);
  +      if (strpos($cell,"\n") !== false)
  +        $cell=$this->processor_repl('monimarkup',$cell, array('notoc'=>1));
         if ($m[3] and $m[5]) $align='center';
         else if (!$m[3]) $align='';
         else if (!$m[5]) $align='right';
  @@ -3461,9 +3461,13 @@
       if (empty($lines)) return;
   
       # for headings
  -    $headinfo['top'] = 0;
  -    $headinfo['num'] = 1;
  -    $headinfo['dep'] = 0;
  +    if (isset($options['notoc'])) {
  +      $headinfo = null;
  +    } else {
  +      $headinfo['top'] = 0;
  +      $headinfo['num'] = 1;
  +      $headinfo['dep'] = 0;
  +    }
   
       $text='';
       $in_p='';
  
  
  


wkpark      2009/01/02 01:24:02

  Modified:    plugin/processor monimarkup.php
  Log:
  disable toc,sectionedit within tables
  
  Revision  Changes    Path
  1.19      +11 -7     moniwiki/plugin/processor/monimarkup.php
  
  Index: monimarkup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/monimarkup.php,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- monimarkup.php	30 Dec 2008 06:55:37 -0000	1.18
  +++ monimarkup.php	1 Jan 2009 16:24:02 -0000	1.19
  @@ -3,12 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a moniwiki formatting processor for the MoniWiki
   //
  -// $Id: monimarkup.php,v 1.18 2008/12/30 06:55:37 wkpark Exp $
  +// $Id: monimarkup.php,v 1.19 2009/01/01 16:24:02 wkpark Exp $
   /**
    * @date    2006-08-09
    * @name    Moniwiki Processor
    * @desc    Moniwiki default processor
  - * @version $Revision: 1.18 $
  + * @version $Revision: 1.19 $
    * @depend  1.1.3
    * @license GPL
    */
  @@ -361,7 +361,7 @@
                       if (strpos($cell,"\n")) {
                           $save = $formatter->section_edit;
                           $formatter->section_edit=0;
  -                        $cell = $this->process($cell);
  +                        $cell = $this->process($cell, array('notoc'=>1));
                           $formatter->section_edit=$save;
                           $align='';
                       }
  @@ -441,9 +441,13 @@
           $hr_func=$Config['hr_type'].'_hr';
   
           # heading info
  -        $headinfo['top'] = 0;
  -        $headinfo['num'] = 1;
  -        $headinfo['dep'] = 0;
  +        if (isset($options['notoc'])) {
  +            $headinfo = null;
  +        } else {
  +            $headinfo['top'] = 0;
  +            $headinfo['num'] = 1;
  +            $headinfo['dep'] = 0;
  +        }
   
           # list info
           $_lidep=array(0);
  @@ -468,7 +472,7 @@
                           array(&$formatter,'link_repl'),$val);
                       ++$formatter->sect_num;
                       $anchor=$ed='';
  -                    if (!empty($formatter->section_edit) &&
  +                    if ($headinfo != null and !empty($formatter->section_edit) &&
                               empty($formatter->preview)) {
                           $act='edit';
                           $sect_num=&$formatter->sect_num;
  
  
  


wkpark      2009/01/02 01:56:30

  Modified:    plugin/processor monimarkup.php
  Log:
  check $inline, $btype blocks
  
  Revision  Changes    Path
  1.20      +15 -10    moniwiki/plugin/processor/monimarkup.php
  
  Index: monimarkup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/monimarkup.php,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- monimarkup.php	1 Jan 2009 16:24:02 -0000	1.19
  +++ monimarkup.php	1 Jan 2009 16:56:30 -0000	1.20
  @@ -3,12 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a moniwiki formatting processor for the MoniWiki
   //
  -// $Id: monimarkup.php,v 1.19 2009/01/01 16:24:02 wkpark Exp $
  +// $Id: monimarkup.php,v 1.20 2009/01/01 16:56:30 wkpark Exp $
   /**
    * @date    2006-08-09
    * @name    Moniwiki Processor
    * @desc    Moniwiki default processor
  - * @version $Revision: 1.19 $
  + * @version $Revision: 1.20 $
    * @depend  1.1.3
    * @license GPL
    */
  @@ -332,6 +332,7 @@
                   $tr_diff=$line{0} == "\010" ? 'diff-added':'diff-removed';
                   $line=substr($line,1,-1);
               }
  +            $open = '';
               if (!$_in_table and $line[0]=='|' and
                   preg_match("/^(\|([^\|]+)?\|((\|\|)*))((?:&lt;[^>\|]*>)*)(.*)(\|\|)?$/s",$line,$m)) {
                   #print "<pre>"; print_r($m); print "</pre>";
  @@ -611,10 +612,12 @@
                       --$_li;
                   }
   
  -                $c=preg_replace("/\007(\d+)\007/e",
  -                    "\$formatter->processor_repl(\$btype[$1],\$block[$1])",$c);
  -                $c=preg_replace("/\035(\d+)\035/e", 
  -                    "\$formatter->link_repl(\$inline[$1])",$c);
  +                if (isset($btype[1]))
  +                    $c=preg_replace("/\007(\d+)\007/e",
  +                        "\$formatter->processor_repl(\$btype[$1],\$block[$1])",$c);
  +                if (isset($inline[1]))
  +                    $c=preg_replace("/\035(\d+)\035/e", 
  +                        "\$formatter->link_repl(\$inline[$1])",$c);
   
                   if (preg_match('/<(div|ul|ol|pre|blockquote)[^>]*>/',$c))
                       $out.= $this->_div(1,' class="para"',$style).$c.$this->_div(0);
  @@ -633,10 +636,12 @@
               $out=preg_replace($formatter->smiley_rule,
                    $formatter->smiley_repl,$out);
   
  -        $out=preg_replace("/\007(\d+)\007/e",
  -            "\$formatter->processor_repl(\$btype[$1],\$block[$1])",$out);
  -        $out=preg_replace("/\035(\d+)\035/e", 
  -            "\$formatter->link_repl(\$inline[$1])",$out);
  +        if (isset($btype[1]))
  +            $out=preg_replace("/\007(\d+)\007/e",
  +                "\$formatter->processor_repl(\$btype[$1],\$block[$1])",$out);
  +        if (isset($inline[1]))
  +            $out=preg_replace("/\035(\d+)\035/e", 
  +                "\$formatter->link_repl(\$inline[$1])",$out);
   
           return $my_divopen.$out.$my_divclose;
       }
  
  
  


wkpark      2009/01/02 14:45:20

  Modified:    locale/po fr.po ko.po moniwiki.pot
  Log:
  
  
  Revision  Changes    Path
  1.23      +962 -895  moniwiki/locale/po/fr.po
  
  Index: fr.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/fr.po,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- fr.po	24 Dec 2008 09:16:14 -0000	1.22
  +++ fr.po	2 Jan 2009 05:45:20 -0000	1.23
  @@ -4,7 +4,7 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2008-12-23 23:10+0900\n"
  +"POT-Creation-Date: 2008-12-31 20:11+0900\n"
   "PO-Revision-Date: 2003-08-17 22:51+0900\n"
   "Last-Translator: Serge Stinckwich <Serge.Stinckwich@info.unicaen.fr>\n"
   "Language-Team: fr <fr@li.org>\n"
  @@ -12,6 +12,85 @@
   "Content-Type: text/plain; charset=iso-8859-1\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  +#: ../plugin/aclinfo.php:15
  +msgid "ACL is not enabled on this Wiki"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:21
  +msgid "Your ACL Info"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:23
  +msgid "You are wiki owner"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:25
  +msgid "You are wiki master"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:27
  +msgid "Allowed actions"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:32
  +msgid "Denied actions"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:38
  +msgid "Protected actions"
  +msgstr ""
  +
  +#: ../plugin/admin.php:136 ../plugin/PluginInfo.php:50
  +msgid "Description"
  +msgstr ""
  +
  +#: ../plugin/admin.php:139 ../plugin/PluginInfo.php:56
  +msgid "Author"
  +msgstr ""
  +
  +#: ../plugin/admin.php:141 ../plugin/PluginInfo.php:58
  +msgid "License"
  +msgstr ""
  +
  +# ../plugin/VisualTour.php:59
  +#: ../plugin/admin.php:143 ../plugin/PluginInfo.php:60
  +#, fuzzy
  +msgid "Depend"
  +msgstr "Plus profond"
  +
  +#: ../plugin/admin.php:147 ../plugin/PluginInfo.php:64
  +msgid "URL"
  +msgstr ""
  +
  +#: ../plugin/admin.php:191
  +msgid "Enabled plugins"
  +msgstr ""
  +
  +#: ../plugin/admin.php:193
  +msgid "Disabled plugins"
  +msgstr ""
  +
  +#: ../plugin/admin.php:201
  +msgid "Enabled processors"
  +msgstr ""
  +
  +#: ../plugin/admin.php:203
  +msgid "Disabled processors"
  +msgstr ""
  +
  +#: ../plugin/admin.php:206
  +msgid "Plugin/Processor settings are updated"
  +msgstr ""
  +
  +#: ../plugin/admin.php:212
  +msgid "Enable/disable plugins and processors"
  +msgstr ""
  +
  +# ../locale/dummy.php:7
  +#: ../plugin/atom.php:64 ../plugin/rss_rc.php:62
  +msgid "show changes"
  +msgstr ""
  +
   # ../plugin/Attachment.php:24
   #: ../plugin/Attachment.php:70 ../plugin/Attachment.php:331
   #, c-format
  @@ -44,6 +123,159 @@
   msgid "Translate %s to %s"
   msgstr "Translate %s en %s"
   
  +# ../wikilib.php:887
  +#: ../plugin/backup.php:42
  +msgid "Your wiki is backuped successfully"
  +msgstr ""
  +
  +#: ../plugin/backup.php:49
  +msgid "Backup failed !"
  +msgstr ""
  +
  +# ../plugin/backup.php:46
  +#: ../plugin/backup.php:54
  +msgid "Did you want to Backup your wiki ?"
  +msgstr "Voulez vous faire une sauvegarde de votre wiki ?"
  +
  +#: ../plugin/bbs.php:493
  +msgid "This bbs does not exists yet. Please save this page first"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:617
  +msgid "No"
  +msgstr ""
  +
  +# ../locale/dummy.php:6 ../wiki.php:2553
  +#: ../plugin/bbs.php:626
  +msgid "Edit"
  +msgstr ""
  +
  +# ../locale/dummy.php:5
  +#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1111
  +msgid "Delete"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:657
  +msgid "Please check article numbers."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:737
  +msgid "More"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:782
  +msgid "New"
  +msgstr ""
  +
  +# ../plugin/rename.php:27
  +#: ../plugin/bbs.php:784
  +#, fuzzy
  +msgid "Read"
  +msgstr "Renommer"
  +
  +#: ../plugin/bbs.php:800
  +#, c-format
  +msgid "Total %s articles."
  +msgstr ""
  +
  +# ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
  +# c-format
  +#: ../plugin/bbs.php:836
  +#, fuzzy, c-format
  +msgid "Your IP address is not allowed to %s at this BBS"
  +msgstr "Vous n'tes pas autoris  pouvoir '%s' cette page"
  +
  +#: ../plugin/bbs.php:890
  +msgid "Successfully deleted."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:922
  +msgid "Fail to post comment."
  +msgstr ""
  +
  +# ../wikilib.php:540
  +#: ../plugin/bbs.php:932
  +#, fuzzy, c-format
  +msgid "The article %s will be deleted."
  +msgstr "Le fichier '%s' est effac"
  +
  +#: ../plugin/bbs.php:974
  +msgid "Invalid HomePage address."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:987
  +msgid "No Name error."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:997
  +msgid "No Subject error."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:1009 ../plugin/Comment.php:191 ../plugin/Gallery.php:174
  +#: ../wikilib.php:1459 ../wikilib.php:1605
  +msgid ""
  +"Sorry, can not save page because some messages are blocked in this wiki."
  +msgstr ""
  +
  +# ../plugin/Vote.php:109
  +#: ../plugin/bbs.php:1025
  +#, fuzzy
  +msgid "New post added successfully"
  +msgstr "Vote russi"
  +
  +#: ../plugin/BlogChanges.php:198
  +msgid "Category: "
  +msgstr ""
  +
  +# ../locale/dummy.php:7
  +#: ../plugin/BlogChanges.php:200 ../locale/dummy.php:7
  +msgid "BlogChanges"
  +msgstr "ModificationsBlog"
  +
  +# ../wikilib.php:1483
  +#: ../plugin/BlogChanges.php:246
  +#, c-format
  +msgid "Invalid category expr \"%s\""
  +msgstr ""
  +
  +# ../plugin/processor/blog.php:43 ../plugin/processor/blog.php:45
  +#: ../plugin/BlogChanges.php:378 ../plugin/BlogChanges.php:380
  +#: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
  +msgid "Anonymous"
  +msgstr "Anonyme"
  +
  +# ../plugin/processor/blog.php:78
  +#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  +#, c-format
  +msgid "%d comment"
  +msgstr "%d commentaire"
  +
  +# ../plugin/processor/blog.php:78
  +#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  +#, c-format
  +msgid "%d comments"
  +msgstr "%d commentaires"
  +
  +# ../plugin/processor/blog.php:70
  +#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:208
  +#: ../plugin/processor/blog.php:78
  +msgid "Add comment"
  +msgstr "Ajouter un commentaire"
  +
  +# ../plugin/processor/blog.php:89
  +#: ../plugin/BlogChanges.php:423 ../plugin/processor/blog.php:97
  +msgid "track back"
  +msgstr ""
  +
  +# ../plugin/BlogChanges.php:226
  +#: ../plugin/BlogChanges.php:443
  +msgid "Previous"
  +msgstr "Prcdent"
  +
  +#: ../plugin/BlogChanges.php:446
  +msgid "Next"
  +msgstr ""
  +
   #: ../plugin/Blog.php:84
   #, c-format
   msgid "Blog cache of \"%s\" is refreshed"
  @@ -104,7 +336,7 @@
   msgid "Add Blog entry to \"%s\""
   msgstr "Ajouter une entre de blog  \"%s\""
   
  -#: ../plugin/Blog.php:260 ../plugin/Blog.php:332 ../plugin/PluginInfo.php:45
  +#: ../plugin/Blog.php:260 ../plugin/Blog.php:332 ../plugin/PluginInfo.php:52
   msgid "Name"
   msgstr ""
   
  @@ -113,7 +345,7 @@
   msgid "Title"
   msgstr "titre"
   
  -#: ../plugin/Blog.php:268 ../wikilib.php:915
  +#: ../plugin/Blog.php:268 ../wikilib.php:941
   msgid "GUI"
   msgstr ""
   
  @@ -127,57 +359,32 @@
   msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
   msgstr "<b>Une rgle horizontale</b> ---- ne s'applique pas au mode blog."
   
  -#: ../plugin/BlogChanges.php:198
  -msgid "Category: "
  +#: ../plugin/cacheadmin.php:105
  +msgid "You are not WikiMaster!!"
   msgstr ""
   
  -# ../locale/dummy.php:7
  -#: ../plugin/BlogChanges.php:200 ../locale/dummy.php:7
  -msgid "BlogChanges"
  -msgstr "ModificationsBlog"
  +#: ../plugin/cacheadmin.php:120
  +msgid "Clear cache dirs"
  +msgstr ""
   
  -# ../wikilib.php:1483
  -#: ../plugin/BlogChanges.php:246
  +#: ../plugin/chat.php:36
  +msgid "No messages"
  +msgstr ""
  +
  +#: ../plugin/chmod.php:18
   #, c-format
  -msgid "Invalid category expr \"%s\""
  +msgid "Permission of \"%s\" changed !"
   msgstr ""
   
  -# ../plugin/processor/blog.php:43 ../plugin/processor/blog.php:45
  -#: ../plugin/BlogChanges.php:378 ../plugin/BlogChanges.php:380
  -#: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
  -msgid "Anonymous"
  -msgstr "Anonyme"
  +# ../wiki.php:3021
  +#: ../plugin/chmod.php:24
  +#, c-format
  +msgid "Fail to chmod \"%s\" !"
  +msgstr "Impossible de pouvoir \"%s\" !"
   
  -# ../plugin/processor/blog.php:78
  -#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  +#: ../plugin/chmod.php:35
   #, c-format
  -msgid "%d comment"
  -msgstr "%d commentaire"
  -
  -# ../plugin/processor/blog.php:78
  -#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  -#, c-format
  -msgid "%d comments"
  -msgstr "%d commentaires"
  -
  -# ../plugin/processor/blog.php:70
  -#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:208
  -#: ../plugin/processor/blog.php:78
  -msgid "Add comment"
  -msgstr "Ajouter un commentaire"
  -
  -# ../plugin/processor/blog.php:89
  -#: ../plugin/BlogChanges.php:423 ../plugin/processor/blog.php:97
  -msgid "track back"
  -msgstr ""
  -
  -# ../plugin/BlogChanges.php:226
  -#: ../plugin/BlogChanges.php:443
  -msgid "Previous"
  -msgstr "Prcdent"
  -
  -#: ../plugin/BlogChanges.php:446
  -msgid "Next"
  +msgid "Change permission of \"%s\""
   msgstr ""
   
   # ../plugin/OeKaki.php:118
  @@ -209,7 +416,7 @@
   msgstr "commentaire"
   
   # ../wikilib.php:482
  -#: ../plugin/Comment.php:88 ../wikilib.php:911 ../monisetup.php:924
  +#: ../plugin/Comment.php:88 ../wikilib.php:935 ../monisetup.php:1047
   msgid "Preview"
   msgstr "Prvisualisation"
   
  @@ -233,22 +440,16 @@
   msgid "Page does not exists"
   msgstr ""
   
  -#: ../plugin/Comment.php:164 ../plugin/userform.php:115
  -#: ../plugin/userform.php:178 ../plugin/userform.php:201
  +#: ../plugin/Comment.php:164 ../plugin/userform.php:118
  +#: ../plugin/userform.php:181 ../plugin/userform.php:204
   msgid "Invalid ticket !"
   msgstr ""
   
  -#: ../plugin/Comment.php:169 ../plugin/userform.php:117
  -#: ../plugin/userform.php:203
  +#: ../plugin/Comment.php:169 ../plugin/userform.php:120
  +#: ../plugin/userform.php:206
   msgid "You need a ticket !"
   msgstr ""
   
  -#: ../plugin/Comment.php:191 ../plugin/Gallery.php:174 ../plugin/bbs.php:1009
  -#: ../wikilib.php:1433 ../wikilib.php:1579
  -msgid ""
  -"Sorry, can not save page because some messages are blocked in this wiki."
  -msgstr ""
  -
   # ../wikilib.php:748 ../wikilib.php:777
   #: ../plugin/Comment.php:197
   msgid "Preview comment"
  @@ -265,6 +466,15 @@
   msgid "Comment added successfully"
   msgstr ""
   
  +# ../plugin/css.php:29 ../plugin/css.php:37
  +#: ../plugin/css.php:33 ../plugin/css.php:41
  +msgid "Back to UserPreferences"
  +msgstr "Retour  UserPreferences"
  +
  +#: ../plugin/css.php:67
  +msgid "CSS disabled !"
  +msgstr ""
  +
   # ../wiki.php:2211 ../wiki.php:2360
   #: ../plugin/Diff.php:207 ../plugin/Info.php:220
   msgid "No older revisions available"
  @@ -277,7 +487,7 @@
   msgstr ""
   
   # ../wiki.php:2338 ../wiki.php:2373 ../wikilib.php:770
  -#: ../plugin/Diff.php:223 ../wikilib.php:1566
  +#: ../plugin/Diff.php:223 ../wikilib.php:1592
   msgid "No difference found"
   msgstr "Aucune diffrence trouv"
   
  @@ -357,21 +567,26 @@
   
   # ../plugin/FastSearch.php:125
   #: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:38
  -#: ../wikilib.php:1354
  +#: ../wikilib.php:1380
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr "Trouv %s s'appariant avec %s sur un total de %s pages"
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1356
  +#: ../wikilib.php:1382
   msgid "page"
   msgstr ""
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1356
  +#: ../wikilib.php:1382
   msgid "pages"
   msgstr ""
   
  +# ../plugin/format.php:16
  +#: ../plugin/format.php:17
  +msgid "It is a XML format !"
  +msgstr "C'est un format XML !"
  +
   # ../wikilib.php:1479
   #: ../plugin/FullSearch.php:15
   #, c-format
  @@ -388,7 +603,7 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:124 ../wiki.php:4439
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4448
   msgid "Refresh"
   msgstr ""
   
  @@ -405,8 +620,8 @@
   " ou cliquer sur %s pour faire une recherche en texte intgral de cette "
   "page.\n"
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5296 ../wiki.php:5303
  -#: ../wikilib.php:1364
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5334 ../wiki.php:5341
  +#: ../wikilib.php:1390
   msgid "here"
   msgstr ""
   
  @@ -422,7 +637,7 @@
   msgid "Case-sensitive searching"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:77 ../wikilib.php:2636 ../wikilib.php:2697
  +#: ../plugin/FullSearch.php:77 ../wikilib.php:2685 ../wikilib.php:2746
   msgid "Go"
   msgstr ""
   
  @@ -431,13 +646,13 @@
   msgstr ""
   
   # ../wikilib.php:1483
  -#: ../plugin/FullSearch.php:144 ../wikilib.php:2657
  +#: ../plugin/FullSearch.php:144 ../wikilib.php:2706
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "Expression de recherche \"%s\" invalide"
   
   # ../plugin/TwinPages.php:20
  -#: ../plugin/Gallery.php:245 ../plugin/UploadedFiles.php:257
  +#: ../plugin/Gallery.php:245 ../plugin/UploadedFiles.php:266
   msgid "No files found"
   msgstr ""
   
  @@ -452,8 +667,8 @@
   msgstr ""
   
   # ../wikilib.php:769
  -#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1420
  -#: ../wikilib.php:1564
  +#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1446
  +#: ../wikilib.php:1590
   #, c-format
   msgid "Go back or return to %s"
   msgstr "Revenir en arrire ou retourner  %s"
  @@ -467,6 +682,10 @@
   msgid "Comments is added"
   msgstr ""
   
  +#: ../plugin/html2pdf.php:30
  +msgid "The TCPDF class not found!"
  +msgstr ""
  +
   #: ../plugin/ImportUrl.php:132
   msgid "Import URL"
   msgstr ""
  @@ -540,692 +759,155 @@
   msgstr ""
   
   # ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
  -#: ../plugin/JME.php:55
  +#: ../plugin/JME.php:64
   #, fuzzy, c-format
   msgid "Draw a new molecule '%s'"
   msgstr "Faire un nouveau dessin"
   
   # ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
  -#: ../plugin/JME.php:57
  +#: ../plugin/JME.php:66
   #, fuzzy
   msgid "Draw a new molecule"
   msgstr "Faire un nouveau dessin"
   
   # ../plugin/Vote.php:109
  -#: ../plugin/JME.php:95
  +#: ../plugin/JME.php:104
   #, fuzzy
   msgid "Molecule successfully added"
   msgstr "Vote russi"
   
  -#: ../plugin/JME.php:101
  -msgid "Edit Molecule"
  -msgstr ""
  -
  -#: ../plugin/JME.php:131
  -msgid "Edit new molecule"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:330
  -msgid "hits"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:338
  -msgid "add keywords"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:341
  -msgid "Update keywords"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:343
  -msgid "Add keywords"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:344
  -msgid "Add as common words"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:345
  -msgid "Unselect all"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:346
  -msgid "Suggest new Keywords"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:355
  -msgid "select language"
  -msgstr ""
  -
  -# ../wiki.php:3009
  -#: ../plugin/Keywords.php:371
  -msgid "You are not able to add keywords."
  -msgstr ""
  -
  -# ../wikilib.php:814
  -#: ../plugin/Keywords.php:385
  -#, c-format
  -msgid "%s is not found."
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:501
  -msgid "Common words are updated"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:548
  -#, c-format
  -msgid "Keywords for %s are updated"
  -msgstr ""
  -
  -# ../plugin/quicklinks.php:38
  -#: ../plugin/Keywords.php:574
  -msgid "Keywords are updated"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:576
  -msgid "There are no changes found"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:589
  -msgid "Update with these Keywords"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:609 ../plugin/Keywords.php:613
  -msgid "alphabetically"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:610
  -msgid "by frequency"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:612
  -msgid "by size"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:618
  -#, c-format
  -msgid "Keywords list %s (or %s)"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:623
  -#, c-format
  -msgid "Select keywords for %s"
  -msgstr ""
  -
  -# ../wikilib.php:672 ../wikilib.php:1472
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1245 ../wikilib.php:2644
  -msgid "Use more specific text"
  -msgstr "Utiliser un texte plus spcifique"
  -
  -#: ../plugin/LikePages.php:109
  -msgid "These pages share a similar word..."
  -msgstr ""
  -
  -#: ../plugin/LikePages.php:123
  -msgid "These pages share an initial or final title word..."
  -msgstr ""
  -
  -#: ../plugin/LikePages.php:143
  -msgid "If you can't find this page, "
  -msgstr ""
  -
  -# ../plugin/man_get.php:23
  -#: ../plugin/LikePages.php:148
  -msgid "No similar pages found"
  -msgstr ""
  -
  -#: ../plugin/LikePages.php:150
  -msgid "You are strongly recommened to find it in MetaWikis. "
  -msgstr ""
  -
  -#: ../plugin/LikePages.php:153
  -#, c-format
  -msgid "Like \"%s\""
  -msgstr ""
  -
  -#: ../plugin/LikePages.php:156
  -msgid "Search all MetaWikis"
  -msgstr ""
  -
  -#: ../plugin/LikePages.php:157
  -msgid "Slow Slow"
  -msgstr ""
  -
  -# ../plugin/man_get.php:23
  -#: ../plugin/Navigation.php:19
  -msgid "No Index page found"
  -msgstr ""
  -
  -# ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
  -#: ../plugin/OeKaki.php:36
  -msgid "Draw a new picture"
  -msgstr ""
  -
  -# ../plugin/OeKaki.php:118
  -#: ../plugin/OeKaki.php:118
  -msgid "Create new picture"
  -msgstr "Crer un nouveau dessin"
  -
  -# ../plugin/OeKaki.php:125
  -#: ../plugin/OeKaki.php:127
  -msgid "Edit Image"
  -msgstr "diter l'image"
  -
  -#: ../plugin/PluginInfo.php:29
  -#, c-format
  -msgid "Total %s plugin activated."
  -msgstr ""
  -
  -#: ../plugin/PluginInfo.php:43 ../plugin/admin.php:136
  -msgid "Description"
  -msgstr ""
  -
  -#: ../plugin/PluginInfo.php:47
  -msgid "Version"
  -msgstr ""
  -
  -#: ../plugin/PluginInfo.php:49 ../plugin/admin.php:139
  -msgid "Author"
  -msgstr ""
  -
  -#: ../plugin/PluginInfo.php:51 ../plugin/admin.php:141
  -msgid "License"
  -msgstr ""
  -
  -# ../plugin/VisualTour.php:59
  -#: ../plugin/PluginInfo.php:53 ../plugin/admin.php:143
  -#, fuzzy
  -msgid "Depend"
  -msgstr "Plus profond"
  -
  -#: ../plugin/PluginInfo.php:57 ../plugin/admin.php:147
  -msgid "URL"
  -msgstr ""
  -
  -#: ../plugin/Rating.php:58
  -msgid "Awful!"
  -msgstr ""
  -
  -#: ../plugin/Rating.php:59
  -msgid "Not the worst ever."
  -msgstr ""
  -
  -#: ../plugin/Rating.php:60
  -msgid "Not bad!"
  -msgstr ""
  -
  -#: ../plugin/Rating.php:61
  -msgid "Useful!"
  -msgstr ""
  -
  -#: ../plugin/Rating.php:62
  -msgid "Very Gooood!"
  -msgstr ""
  -
  -# ../plugin/Vote.php:66 ../plugin/security/needtologin.php:25
  -# ../plugin/security/needtologin.php:35
  -#: ../plugin/Rating.php:84 ../plugin/Vote.php:67
  -#: ../plugin/security/community.php:26 ../plugin/security/community.php:36
  -#: ../plugin/security/community.php:46 ../plugin/security/community.php:61
  -#: ../plugin/security/mustlogin.php:29 ../plugin/security/mustlogin.php:40
  -#: ../plugin/security/mustlogin.php:51 ../plugin/security/mustlogin.php:67
  -#: ../plugin/security/needtologin.php:29 ../plugin/security/needtologin.php:40
  -#: ../plugin/security/needtologin.php:51 ../plugin/security/userbased.php:62
  -msgid "Please Login or make your ID on this Wiki ;)"
  -msgstr "Merci de vous connecter ou de construire un ID sur ce Wiki ;)"
  -
  -#: ../plugin/Rating.php:188
  -msgid "Invalid rating request !"
  -msgstr ""
  -
  -# ../plugin/Vote.php:109
  -#: ../plugin/Rating.php:203
  -#, fuzzy
  -msgid "Rating successfully !"
  -msgstr "Vote russi"
  -
  -#: ../plugin/RecentChanges.php:114
  -msgid "Show changes for "
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:119
  -msgid "days ago"
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:206
  -msgid "set bookmark"
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:241 ../plugin/pagelist.php:107
  -#: ../plugin/pagelist.php:124
  -#, c-format
  -msgid "[%sh %sm ago]"
  -msgstr ""
  -
  -#: ../plugin/SWFUpload.php:118
  -msgid "Files..."
  -msgstr ""
  -
  -#: ../plugin/SWFUpload.php:119
  -msgid "Upload"
  -msgstr ""
  -
  -# ../plugin/man_get.php:23
  -#: ../plugin/SlideShow.php:28
  -msgid "No page found"
  -msgstr ""
  -
  -#: ../plugin/SlideShow.php:102
  -msgid "Start:"
  -msgstr ""
  -
  -#: ../plugin/SlideShow.php:111
  -msgid "End:"
  -msgstr ""
  -
  -#: ../plugin/SlideShow.php:121 ../plugin/pageview.php:75
  -msgid "Next:"
  -msgstr ""
  -
  -# ../wikilib.php:482
  -#: ../plugin/SlideShow.php:131
  -msgid "Prev:"
  -msgstr ""
  -
  -#: ../plugin/SlideShow.php:138
  -msgid "Return"
  -msgstr ""
  -
  -# ../wikilib.php:484
  -#: ../plugin/SystemInfo.php:16
  -msgid "Number of Pages"
  -msgstr ""
  -
  -#: ../plugin/SystemInfo.php:17
  -msgid "HTTP Server Version"
  -msgstr ""
  -
  -#: ../plugin/SystemInfo.php:18
  -msgid "MoniWiki Version"
  -msgstr ""
  -
  -#: ../plugin/SystemInfo.php:19
  -msgid "PHP Version"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:57
  -msgid "BackLinks"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:61
  -msgid "Keywords"
  -msgstr ""
  -
  -# ../plugin/minilogin.php:30
  -#: ../plugin/Tour.php:70
  -#, c-format
  -msgid " from %s"
  -msgstr ""
  -
  -# ../plugin/minilogin.php:30
  -#: ../plugin/Tour.php:73
  -#, c-format
  -msgid "%s Tour %s"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:121
  -msgid "links"
  -msgstr ""
  -
  -# ../plugin/VisualTour.php:59
  -#: ../plugin/Tour.php:123
  -msgid "deeper"
  -msgstr ""
  -
  -# ../plugin/minilogin.php:30
  -#: ../plugin/Tour.php:124
  -#, c-format
  -msgid "More %s or more %s"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:139
  -#, c-format
  -msgid "Total %d related keywords"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:142
  -#, c-format
  -msgid "Total %d related pages"
  -msgstr ""
  -
  -# ../plugin/TwinPages.php:13
  -#: ../plugin/TwinPages.php:13
  -#, c-format
  -msgid "TwinPages of %s"
  -msgstr "TwinPages de %s"
  -
  -# ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../plugin/TwinPages.php:19 ../wiki.php:5282
  -msgid "See [TwinPages]: "
  -msgstr "Voir [TwinPages]: "
  -
  -# ../plugin/TwinPages.php:20
  -#: ../plugin/TwinPages.php:21
  -msgid "No TwinPages found."
  -msgstr "Aucune TwinPages trouv"
  -
  -# ../wikilib.php:519
  -#: ../plugin/UploadFile.php:147 ../plugin/UploadFile.php:161
  -#, c-format
  -msgid "The %s type of %s is not allowed to upload"
  -msgstr ""
  -
  -# ../wikilib.php:519
  -#: ../plugin/UploadFile.php:163
  -#, c-format
  -msgid "%s is not allowed to upload"
  -msgstr "%s n'est pas une action valide"
  -
  -#: ../plugin/UploadFile.php:218
  -#, c-format
  -msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:251
  -msgid "Please check your php.ini setting"
  -msgstr ""
  -
  -# ../wikilib.php:887
  -#: ../plugin/UploadFile.php:261
  -#, c-format
  -msgid "File \"%s\" is uploaded successfully"
  -msgstr ""
  -
  -# ../wikilib.php:887
  -#: ../plugin/UploadFile.php:300
  -msgid "Files are uploaded successfully"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:344
  -msgid "Replace original file"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:345
  -msgid "Rename if it already exist"
  -msgstr ""
  -
  -# ../plugin/rename.php:27
  -#: ../plugin/UploadFile.php:350 ../plugin/rename.php:69
  -msgid "Rename"
  -msgstr "Renommer"
  -
  -# ../plugin/minilogin.php:30
  -#: ../plugin/UploadFile.php:358
  -#, c-format
  -msgid "or %s."
  -msgstr "ou %s"
  -
  -#: ../plugin/UploadFile.php:358
  -msgid "Upload files"
  -msgstr ""
  -
  -# ../plugin/rename.php:27
  -#: ../plugin/UploadedFiles.php:271
  -msgid "File name"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:272
  -msgid "Size"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:273
  -msgid "Date"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:316
  -msgid "Next page &raquo;"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:318
  -msgid "&laquo; First page"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:409
  -#, c-format
  -msgid "Total %d files"
  -msgstr ""
  -
  -# ../plugin/rename.php:36
  -#: ../plugin/UploadedFiles.php:414 ../plugin/rcsimport.php:32
  -#: ../plugin/rename.php:77 ../plugin/revert.php:82 ../plugin/userinfo.php:37
  -#: ../wikilib.php:1084 ../wikilib.php:1974
  -msgid "Password"
  -msgstr "Mot de passe"
  -
  -# ../wikilib.php:550
  -#: ../plugin/UploadedFiles.php:415 ../wikilib.php:1062
  -msgid "Delete selected files"
  -msgstr "Effacer les fichiers slectionns"
  -
  -# ../plugin/VisualTour.php:55
  -#: ../plugin/VisualTour.php:118
  -msgid "Normal"
  -msgstr ""
  -
  -# ../plugin/VisualTour.php:57
  -#: ../plugin/VisualTour.php:120
  -msgid "Wider"
  -msgstr "Plus large"
  -
  -# ../plugin/VisualTour.php:59
  -#: ../plugin/VisualTour.php:122
  -msgid "Deeper"
  -msgstr "Plus profond"
  -
  -# ../plugin/Vote.php:109
  -#: ../plugin/Vote.php:113
  -msgid "Voted successfully"
  -msgstr "Vote russi"
  -
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2390
  -msgid "Others"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:15
  -msgid "ACL is not enabled on this Wiki"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:21
  -msgid "Your ACL Info"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:23
  -msgid "You are wiki owner"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:25
  -msgid "You are wiki master"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:27
  -msgid "Allowed actions"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:32
  -msgid "Denied actions"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:38
  -msgid "Protected actions"
  -msgstr ""
  -
  -#: ../plugin/admin.php:191
  -msgid "Enabled plugins"
  -msgstr ""
  -
  -#: ../plugin/admin.php:193
  -msgid "Disabled plugins"
  -msgstr ""
  -
  -#: ../plugin/admin.php:201
  -msgid "Enabled processors"
  +#: ../plugin/JME.php:110
  +msgid "Edit Molecule"
   msgstr ""
   
  -#: ../plugin/admin.php:203
  -msgid "Disabled processors"
  +#: ../plugin/JME.php:140
  +msgid "Edit new molecule"
   msgstr ""
   
  -#: ../plugin/admin.php:206
  -msgid "Plugin/Processor settings are updated"
  +#: ../plugin/Keywords.php:330
  +msgid "hits"
   msgstr ""
   
  -#: ../plugin/admin.php:212
  -msgid "Enable/disable plugins and processors"
  +#: ../plugin/Keywords.php:338
  +msgid "add keywords"
   msgstr ""
   
  -# ../locale/dummy.php:7
  -#: ../plugin/atom.php:64 ../plugin/rss_rc.php:62
  -msgid "show changes"
  +#: ../plugin/Keywords.php:341
  +msgid "Update keywords"
   msgstr ""
   
  -# ../wikilib.php:887
  -#: ../plugin/backup.php:42
  -msgid "Your wiki is backuped successfully"
  +#: ../plugin/Keywords.php:343
  +msgid "Add keywords"
   msgstr ""
   
  -#: ../plugin/backup.php:49
  -msgid "Backup failed !"
  +#: ../plugin/Keywords.php:344
  +msgid "Add as common words"
   msgstr ""
   
  -# ../plugin/backup.php:46
  -#: ../plugin/backup.php:54
  -msgid "Did you want to Backup your wiki ?"
  -msgstr "Voulez vous faire une sauvegarde de votre wiki ?"
  -
  -#: ../plugin/bbs.php:493
  -msgid "This bbs does not exists yet. Please save this page first"
  +#: ../plugin/Keywords.php:345
  +msgid "Unselect all"
   msgstr ""
   
  -#: ../plugin/bbs.php:617
  -msgid "No"
  +#: ../plugin/Keywords.php:346
  +msgid "Suggest new Keywords"
   msgstr ""
   
  -# ../locale/dummy.php:6 ../wiki.php:2553
  -#: ../plugin/bbs.php:626 ../plugin/man_get.php:115
  -msgid "Edit"
  +#: ../plugin/Keywords.php:355
  +msgid "select language"
   msgstr ""
   
  -# ../locale/dummy.php:5
  -#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1085
  -msgid "Delete"
  +# ../wiki.php:3009
  +#: ../plugin/Keywords.php:371
  +msgid "You are not able to add keywords."
   msgstr ""
   
  -#: ../plugin/bbs.php:657
  -msgid "Please check article numbers."
  +# ../wikilib.php:814
  +#: ../plugin/Keywords.php:385
  +#, c-format
  +msgid "%s is not found."
   msgstr ""
   
  -#: ../plugin/bbs.php:737
  -msgid "More"
  +#: ../plugin/Keywords.php:501
  +msgid "Common words are updated"
   msgstr ""
   
  -#: ../plugin/bbs.php:782
  -msgid "New"
  +#: ../plugin/Keywords.php:548
  +#, c-format
  +msgid "Keywords for %s are updated"
   msgstr ""
   
  -# ../plugin/rename.php:27
  -#: ../plugin/bbs.php:784
  -#, fuzzy
  -msgid "Read"
  -msgstr "Renommer"
  -
  -#: ../plugin/bbs.php:800
  -#, c-format
  -msgid "Total %s articles."
  +# ../plugin/quicklinks.php:38
  +#: ../plugin/Keywords.php:574
  +msgid "Keywords are updated"
   msgstr ""
   
  -# ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
  -# c-format
  -#: ../plugin/bbs.php:836
  -#, fuzzy, c-format
  -msgid "Your IP address is not allowed to %s at this BBS"
  -msgstr "Vous n'tes pas autoris  pouvoir '%s' cette page"
  +#: ../plugin/Keywords.php:576
  +msgid "There are no changes found"
  +msgstr ""
   
  -#: ../plugin/bbs.php:890
  -msgid "Successfully deleted."
  +#: ../plugin/Keywords.php:589
  +msgid "Update with these Keywords"
   msgstr ""
   
  -#: ../plugin/bbs.php:922
  -msgid "Fail to post comment."
  +#: ../plugin/Keywords.php:609 ../plugin/Keywords.php:613
  +msgid "alphabetically"
   msgstr ""
   
  -# ../wikilib.php:540
  -#: ../plugin/bbs.php:932
  -#, fuzzy, c-format
  -msgid "The article %s will be deleted."
  -msgstr "Le fichier '%s' est effac"
  +#: ../plugin/Keywords.php:610
  +msgid "by frequency"
  +msgstr ""
   
  -#: ../plugin/bbs.php:974
  -msgid "Invalid HomePage address."
  +#: ../plugin/Keywords.php:612
  +msgid "by size"
   msgstr ""
   
  -#: ../plugin/bbs.php:987
  -msgid "No Name error."
  +#: ../plugin/Keywords.php:618
  +#, c-format
  +msgid "Keywords list %s (or %s)"
   msgstr ""
   
  -#: ../plugin/bbs.php:997
  -msgid "No Subject error."
  +#: ../plugin/Keywords.php:623
  +#, c-format
  +msgid "Select keywords for %s"
   msgstr ""
   
  -# ../plugin/Vote.php:109
  -#: ../plugin/bbs.php:1025
  -#, fuzzy
  -msgid "New post added successfully"
  -msgstr "Vote russi"
  +# ../wikilib.php:672 ../wikilib.php:1472
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1271 ../wikilib.php:2693
  +msgid "Use more specific text"
  +msgstr "Utiliser un texte plus spcifique"
   
  -#: ../plugin/cacheadmin.php:105
  -msgid "You are not WikiMaster!!"
  +#: ../plugin/LikePages.php:109
  +msgid "These pages share a similar word..."
   msgstr ""
   
  -#: ../plugin/cacheadmin.php:120
  -msgid "Clear cache dirs"
  +#: ../plugin/LikePages.php:123
  +msgid "These pages share an initial or final title word..."
   msgstr ""
   
  -#: ../plugin/chat.php:36
  -msgid "No messages"
  +#: ../plugin/LikePages.php:143
  +msgid "If you can't find this page, "
   msgstr ""
   
  -#: ../plugin/chmod.php:18
  -#, c-format
  -msgid "Permission of \"%s\" changed !"
  +# ../plugin/man_get.php:23
  +#: ../plugin/LikePages.php:148
  +msgid "No similar pages found"
   msgstr ""
   
  -# ../wiki.php:3021
  -#: ../plugin/chmod.php:24
  -#, c-format
  -msgid "Fail to chmod \"%s\" !"
  -msgstr "Impossible de pouvoir \"%s\" !"
  +#: ../plugin/LikePages.php:150
  +msgid "You are strongly recommened to find it in MetaWikis. "
  +msgstr ""
   
  -#: ../plugin/chmod.php:35
  +#: ../plugin/LikePages.php:153
   #, c-format
  -msgid "Change permission of \"%s\""
  +msgid "Like \"%s\""
   msgstr ""
   
  -# ../plugin/css.php:29 ../plugin/css.php:37
  -#: ../plugin/css.php:33 ../plugin/css.php:41
  -msgid "Back to UserPreferences"
  -msgstr "Retour  UserPreferences"
  -
  -#: ../plugin/css.php:67
  -msgid "CSS disabled !"
  +#: ../plugin/LikePages.php:156
  +msgid "Search all MetaWikis"
   msgstr ""
   
  -# ../plugin/format.php:16
  -#: ../plugin/format.php:17
  -msgid "It is a XML format !"
  -msgstr "C'est un format XML !"
  -
  -#: ../plugin/html2pdf.php:30
  -msgid "The TCPDF class not found!"
  +#: ../plugin/LikePages.php:157
  +msgid "Slow Slow"
   msgstr ""
   
   # ../plugin/login.php:24
  @@ -1244,12 +926,12 @@
   msgstr "Se joindre "
   
   # ../plugin/login.php:41 ../plugin/minilogin.php:29
  -#: ../plugin/login.php:47 ../plugin/minilogin.php:25
  +#: ../plugin/login.php:49 ../plugin/minilogin.php:25
   msgid "Logout"
   msgstr "Se dconnecter"
   
   # ../locale/dummy.php:3 ../plugin/login.php:42 ../plugin/minilogin.php:28
  -#: ../plugin/login.php:48 ../plugin/minilogin.php:24 ../locale/dummy.php:3
  +#: ../plugin/login.php:50 ../plugin/minilogin.php:24 ../locale/dummy.php:3
   msgid "UserPreferences"
   msgstr "PrfrencesUtilisateur"
   
  @@ -1263,8 +945,14 @@
   msgid "No manpage found"
   msgstr "Aucune page de manuel trouv"
   
  +# ../plugin/OeKaki.php:125
  +#: ../plugin/man_get.php:122
  +#, fuzzy
  +msgid "Edit man page"
  +msgstr "diter l'image"
  +
   # ../plugin/minilogin.php:22 ../wikilib.php:1076
  -#: ../plugin/minilogin.php:18 ../wikilib.php:2050
  +#: ../plugin/minilogin.php:18 ../wikilib.php:2081
   msgid "Login or Join"
   msgstr "Se connecter ou se joindre "
   
  @@ -1299,6 +987,11 @@
   msgid "Local translation files are successfully translated !\n"
   msgstr ""
   
  +# ../plugin/man_get.php:23
  +#: ../plugin/Navigation.php:19
  +msgid "No Index page found"
  +msgstr ""
  +
   # ../plugin/OeKaki.php:118
   #: ../plugin/new.php:13 ../plugin/new.php:28
   msgid "Create a new page"
  @@ -1313,10 +1006,54 @@
   msgid "Normalize this page name"
   msgstr ""
   
  +# ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
  +#: ../plugin/OeKaki.php:36
  +msgid "Draw a new picture"
  +msgstr ""
  +
  +# ../plugin/OeKaki.php:118
  +#: ../plugin/OeKaki.php:118
  +msgid "Create new picture"
  +msgstr "Crer un nouveau dessin"
  +
  +# ../plugin/OeKaki.php:125
  +#: ../plugin/OeKaki.php:127
  +msgid "Edit Image"
  +msgstr "diter l'image"
  +
  +#: ../plugin/pagelist.php:109 ../plugin/pagelist.php:126
  +#: ../plugin/RecentChanges.php:212
  +#, c-format
  +msgid "[%sh %sm ago]"
  +msgstr ""
  +
   #: ../plugin/pageview.php:70
   msgid "First:"
   msgstr ""
   
  +#: ../plugin/pageview.php:75 ../plugin/SlideShow.php:121
  +msgid "Next:"
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:29
  +#, c-format
  +msgid "Total %s plugin activated."
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:34
  +#, c-format
  +msgid "%s is internal plugin."
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:36
  +#, c-format
  +msgid "%s plugin is not found."
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:54
  +msgid "Version"
  +msgstr ""
  +
   #: ../plugin/print.php:24
   #, c-format
   msgid "Retrieved from %s"
  @@ -1337,22 +1074,18 @@
   msgid "Save Changes"
   msgstr "ChangementsRcents"
   
  -#: ../plugin/processor/monimarkup.php:489 ../wiki.php:3827
  +#: ../plugin/processor/monimarkup.php:485 ../wiki.php:3836
   msgid "edit"
   msgstr ""
   
  -#: ../plugin/processor/vim.php:75
  -msgid "Toggle line numbers"
  -msgstr ""
  -
   # ../plugin/quicklinks.php:16 ../plugin/subscribe.php:24
  -#: ../plugin/quicklinks.php:16 ../plugin/scrap.php:33
  +#: ../plugin/quicklinks.php:16 ../plugin/scrap.php:35
   #: ../plugin/subscribe.php:19 ../plugin/subscribe.php:55
   msgid "Please login or make your ID."
   msgstr "Merci de vous connectez ou de construire un ID"
   
   # ../plugin/quicklinks.php:22 ../plugin/subscribe.php:30
  -#: ../plugin/quicklinks.php:22 ../plugin/scrap.php:36
  +#: ../plugin/quicklinks.php:22 ../plugin/scrap.php:38
   #: ../plugin/subscribe.php:61
   msgid "Goto UserPreferences"
   msgstr "Aller  UserPreferences"
  @@ -1376,12 +1109,68 @@
   msgid "Do you want to customize your quicklinks ?"
   msgstr "Voulez vous mettre  jour vos liens rapides ?"
   
  +#: ../plugin/Rating.php:58
  +msgid "Awful!"
  +msgstr ""
  +
  +#: ../plugin/Rating.php:59
  +msgid "Not the worst ever."
  +msgstr ""
  +
  +#: ../plugin/Rating.php:60
  +msgid "Not bad!"
  +msgstr ""
  +
  +#: ../plugin/Rating.php:61
  +msgid "Useful!"
  +msgstr ""
  +
  +#: ../plugin/Rating.php:62
  +msgid "Very Gooood!"
  +msgstr ""
  +
  +# ../plugin/Vote.php:66 ../plugin/security/needtologin.php:25
  +# ../plugin/security/needtologin.php:35
  +#: ../plugin/Rating.php:84 ../plugin/security/community.php:26
  +#: ../plugin/security/community.php:36 ../plugin/security/community.php:46
  +#: ../plugin/security/community.php:61 ../plugin/security/mustlogin.php:29
  +#: ../plugin/security/mustlogin.php:40 ../plugin/security/mustlogin.php:51
  +#: ../plugin/security/mustlogin.php:67 ../plugin/security/needtologin.php:29
  +#: ../plugin/security/needtologin.php:40 ../plugin/security/needtologin.php:51
  +#: ../plugin/security/userbased.php:62 ../plugin/Vote.php:67
  +msgid "Please Login or make your ID on this Wiki ;)"
  +msgstr "Merci de vous connecter ou de construire un ID sur ce Wiki ;)"
  +
  +#: ../plugin/Rating.php:188
  +msgid "Invalid rating request !"
  +msgstr ""
  +
  +# ../plugin/Vote.php:109
  +#: ../plugin/Rating.php:203
  +#, fuzzy
  +msgid "Rating successfully !"
  +msgstr "Vote russi"
  +
   # ../plugin/Blog.php:178
   #: ../plugin/rawblog.php:63 ../plugin/rawblog.php:73
   #, fuzzy, c-format
   msgid "Delete Blog entry \"%s\""
   msgstr "Ajouter une entre de blog  \"%s\""
   
  +# ../plugin/rename.php:36
  +#: ../plugin/rcsimport.php:32 ../plugin/rcsimport.php:88
  +#: ../plugin/rename.php:77 ../plugin/revert.php:82
  +#: ../plugin/UploadedFiles.php:429 ../plugin/userinfo.php:37
  +#: ../wikilib.php:1110 ../wikilib.php:2000
  +msgid "Password"
  +msgstr "Mot de passe"
  +
  +# ../plugin/rename.php:27
  +#: ../plugin/rcsimport.php:76
  +#, fuzzy
  +msgid "Page name"
  +msgstr "Renommer"
  +
   # ../wikilib.php:803
   #: ../plugin/rcs.php:13
   #, c-format
  @@ -1430,6 +1219,22 @@
   msgid "BlogChanges at %s"
   msgstr "ModificationsBlog at %s"
   
  +#: ../plugin/RecentChanges.php:124
  +msgid "Show changes for "
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:129
  +msgid "days ago"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:230
  +msgid "set bookmark"
  +msgstr ""
  +
  +#: ../plugin/referer.php:139
  +msgid "Referer history"
  +msgstr ""
  +
   # ../plugin/rename.php:14
   #: ../plugin/rename.php:19
   #, c-format
  @@ -1469,6 +1274,11 @@
   msgid "New name:"
   msgstr ""
   
  +# ../plugin/rename.php:27
  +#: ../plugin/rename.php:69 ../plugin/UploadFile.php:350
  +msgid "Rename"
  +msgstr "Renommer"
  +
   #: ../plugin/rename.php:74
   msgid "Rename and fix Backlinks"
   msgstr ""
  @@ -1479,7 +1289,7 @@
   msgstr "Seulement le WikiMaster peut renommer cette page"
   
   # ../plugin/rename.php:39 ../wikilib.php:588
  -#: ../plugin/rename.php:79 ../wikilib.php:1130
  +#: ../plugin/rename.php:79 ../wikilib.php:1156
   msgid "with revision history"
   msgstr "avec l'historique de rvision"
   
  @@ -1527,7 +1337,7 @@
   msgid "Select a tarball file to restore"
   msgstr ""
   
  -#: ../plugin/revert.php:23 ../wiki.php:5298
  +#: ../plugin/revert.php:23 ../wiki.php:5336
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr ""
  @@ -1587,31 +1397,49 @@
   msgid "Scrap lists updated."
   msgstr ""
   
  +# ../plugin/Blog.php:78
  +#: ../plugin/scrap.php:61
  +#, fuzzy, c-format
  +msgid "\"%s\" is unscrapped."
  +msgstr "\"%s\" est mis  jour"
  +
  +# ../wikilib.php:816
  +#: ../plugin/scrap.php:64
  +#, fuzzy, c-format
  +msgid "\"%s\" is scrapped."
  +msgstr "%s est sauvegard"
  +
   # ../plugin/subscribe.php:58
  -#: ../plugin/scrap.php:65
  +#: ../plugin/scrap.php:89
   #, c-format
   msgid "Do you want to scrap \"%s\" ?"
   msgstr ""
   
  -#: ../plugin/security/acl.php:146
  +# ../locale/dummy.php:3
  +#: ../plugin/scrap.php:92
  +#, fuzzy
  +msgid "Scrapped pages"
  +msgstr "ChangementsRcents"
  +
  +#: ../plugin/security/acl.php:141
   msgid "ACL groups"
   msgstr ""
   
  -#: ../plugin/security/acl.php:149
  +#: ../plugin/security/acl.php:144
   msgid "Allowed ACL actions"
   msgstr ""
   
  -#: ../plugin/security/acl.php:154
  +#: ../plugin/security/acl.php:149
   msgid "Denied ACL actions"
   msgstr ""
   
  -#: ../plugin/security/acl.php:159
  +#: ../plugin/security/acl.php:154
   msgid "Protected ACL actions"
   msgstr ""
   
   # ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
   # c-format
  -#: ../plugin/security/acl.php:222 ../plugin/security/community.php:25
  +#: ../plugin/security/acl.php:217 ../plugin/security/community.php:25
   #: ../plugin/security/community.php:35 ../plugin/security/community.php:45
   #: ../plugin/security/mustlogin.php:28 ../plugin/security/mustlogin.php:39
   #: ../plugin/security/mustlogin.php:50 ../plugin/security/needtologin.php:28
  @@ -1620,7 +1448,7 @@
   msgid "You are not allowed to '%s' on this page"
   msgstr "Vous n'tes pas autoris  pouvoir '%s' cette page"
   
  -#: ../plugin/security/acl.php:223
  +#: ../plugin/security/acl.php:218
   msgid "Please contact WikiMasters :b"
   msgstr ""
   
  @@ -1675,6 +1503,28 @@
   msgid "Trackback sent"
   msgstr "Trackback envoy"
   
  +# ../plugin/man_get.php:23
  +#: ../plugin/SlideShow.php:28
  +msgid "No page found"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:102
  +msgid "Start:"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:111
  +msgid "End:"
  +msgstr ""
  +
  +# ../wikilib.php:482
  +#: ../plugin/SlideShow.php:131
  +msgid "Prev:"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:138
  +msgid "Return"
  +msgstr ""
  +
   #: ../plugin/subscribe.php:24 ../plugin/subscribe.php:28
   msgid "You did'nt subscribed any pages yet."
   msgstr ""
  @@ -1733,6 +1583,35 @@
   msgid "Subscribed pages"
   msgstr ""
   
  +#: ../plugin/SWFUpload.php:136
  +msgid "Files..."
  +msgstr ""
  +
  +#: ../plugin/SWFUpload.php:137
  +msgid "Upload"
  +msgstr ""
  +
  +#: ../plugin/SWFUpload.php:138
  +msgid "Cancel All files"
  +msgstr ""
  +
  +# ../wikilib.php:484
  +#: ../plugin/SystemInfo.php:16
  +msgid "Number of Pages"
  +msgstr ""
  +
  +#: ../plugin/SystemInfo.php:17
  +msgid "HTTP Server Version"
  +msgstr ""
  +
  +#: ../plugin/SystemInfo.php:18
  +msgid "MoniWiki Version"
  +msgstr ""
  +
  +#: ../plugin/SystemInfo.php:19
  +msgid "PHP Version"
  +msgstr ""
  +
   # ../plugin/theme.php:24
   #: ../plugin/theme.php:29
   msgid "Theme cleared. Goto UserPreferences."
  @@ -1760,6 +1639,51 @@
   msgid "Invalid use of ticket"
   msgstr ""
   
  +#: ../plugin/Tour.php:57
  +msgid "BackLinks"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:61
  +msgid "Keywords"
  +msgstr ""
  +
  +# ../plugin/minilogin.php:30
  +#: ../plugin/Tour.php:70
  +#, c-format
  +msgid " from %s"
  +msgstr ""
  +
  +# ../plugin/minilogin.php:30
  +#: ../plugin/Tour.php:73
  +#, c-format
  +msgid "%s Tour %s"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:121
  +msgid "links"
  +msgstr ""
  +
  +# ../plugin/VisualTour.php:59
  +#: ../plugin/Tour.php:123
  +msgid "deeper"
  +msgstr ""
  +
  +# ../plugin/minilogin.php:30
  +#: ../plugin/Tour.php:124
  +#, c-format
  +msgid "More %s or more %s"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:139
  +#, c-format
  +msgid "Total %d related keywords"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:142
  +#, c-format
  +msgid "Total %d related pages"
  +msgstr ""
  +
   # ../plugin/trackback.php:54
   #: ../plugin/trackback.php:53
   msgid "TrackBack is not activated !"
  @@ -1792,6 +1716,103 @@
   msgid "No TrackBack entry found for %s"
   msgstr "Aucune entre de TrackBack dtect pour %s"
   
  +# ../plugin/TwinPages.php:13
  +#: ../plugin/TwinPages.php:13
  +#, c-format
  +msgid "TwinPages of %s"
  +msgstr "TwinPages de %s"
  +
  +# ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  +#: ../plugin/TwinPages.php:19 ../wiki.php:5320
  +msgid "See [TwinPages]: "
  +msgstr "Voir [TwinPages]: "
  +
  +# ../plugin/TwinPages.php:20
  +#: ../plugin/TwinPages.php:21
  +msgid "No TwinPages found."
  +msgstr "Aucune TwinPages trouv"
  +
  +# ../plugin/rename.php:27
  +#: ../plugin/UploadedFiles.php:280
  +msgid "File name"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:281
  +msgid "Size"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:282
  +msgid "Date"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:330
  +msgid "Next page &raquo;"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:332
  +msgid "&laquo; First page"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:424
  +#, c-format
  +msgid "Total %d files"
  +msgstr ""
  +
  +# ../wikilib.php:550
  +#: ../plugin/UploadedFiles.php:430 ../wikilib.php:1088
  +msgid "Delete selected files"
  +msgstr "Effacer les fichiers slectionns"
  +
  +# ../wikilib.php:519
  +#: ../plugin/UploadFile.php:147 ../plugin/UploadFile.php:161
  +#, c-format
  +msgid "The %s type of %s is not allowed to upload"
  +msgstr ""
  +
  +# ../wikilib.php:519
  +#: ../plugin/UploadFile.php:163
  +#, c-format
  +msgid "%s is not allowed to upload"
  +msgstr "%s n'est pas une action valide"
  +
  +#: ../plugin/UploadFile.php:218
  +#, c-format
  +msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:251
  +msgid "Please check your php.ini setting"
  +msgstr ""
  +
  +# ../wikilib.php:887
  +#: ../plugin/UploadFile.php:261
  +#, c-format
  +msgid "File \"%s\" is uploaded successfully"
  +msgstr ""
  +
  +# ../wikilib.php:887
  +#: ../plugin/UploadFile.php:300
  +msgid "Files are uploaded successfully"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:344
  +msgid "Replace original file"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:345
  +msgid "Rename if it already exist"
  +msgstr ""
  +
  +# ../plugin/minilogin.php:30
  +#: ../plugin/UploadFile.php:358
  +#, c-format
  +msgid "or %s."
  +msgstr "ou %s"
  +
  +#: ../plugin/UploadFile.php:358
  +msgid "Upload files"
  +msgstr ""
  +
   #: ../plugin/userform.php:35 ../plugin/userform.php:38
   msgid "Successfully confirmed"
   msgstr ""
  @@ -1820,213 +1841,213 @@
   msgid "ID does not exists !"
   msgstr "Erreur : l'archive n'existe pas"
   
  -#: ../plugin/userform.php:82 ../plugin/userform.php:271
  +#: ../plugin/userform.php:82 ../plugin/userform.php:274
   #, c-format
   msgid "Successfully login as '%s'"
   msgstr ""
   
   # ../wiki.php:3024
  -#: ../plugin/userform.php:89 ../plugin/userform.php:276
  -#: ../plugin/userform.php:319
  +#: ../plugin/userform.php:90 ../plugin/userform.php:279
  +#: ../plugin/userform.php:322
   msgid "Invalid password !"
   msgstr "Merci d'entrer un mot de passe valide"
   
  -#: ../plugin/userform.php:93
  +#: ../plugin/userform.php:94
   #, c-format
   msgid "\"%s\" does not exists on this wiki !"
   msgstr ""
   
  -#: ../plugin/userform.php:95
  +#: ../plugin/userform.php:96
   msgid "Make new ID on this wiki"
   msgstr ""
   
   # ../wikilib.php:575
  -#: ../plugin/userform.php:101
  +#: ../plugin/userform.php:102
   msgid "Cookie deleted !"
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../plugin/userform.php:104 ../wikilib.php:2120
  +#: ../plugin/userform.php:107 ../wikilib.php:2151
   msgid "E-mail new password"
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../plugin/userform.php:149
  +#: ../plugin/userform.php:152
   msgid "New password confirmation"
   msgstr ""
   
   # ../wiki.php:3024
  -#: ../plugin/userform.php:154
  +#: ../plugin/userform.php:157
   msgid "Please confirm your new password"
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../plugin/userform.php:156
  +#: ../plugin/userform.php:159
   #, c-format
   msgid "Your new password is %s"
   msgstr ""
   
  -#: ../plugin/userform.php:157 ../plugin/userform.php:263
  +#: ../plugin/userform.php:160 ../plugin/userform.php:266
   msgid "Please change your password later"
   msgstr ""
   
  -#: ../plugin/userform.php:161 ../plugin/userform.php:169
  +#: ../plugin/userform.php:164 ../plugin/userform.php:172
   msgid "Fail to e-mail notification !"
   msgstr ""
   
  -#: ../plugin/userform.php:164
  +#: ../plugin/userform.php:167
   msgid "New password is sent to your e-mail !"
   msgstr ""
   
   # ../plugin/subscribe.php:22
  -#: ../plugin/userform.php:165
  +#: ../plugin/userform.php:168
   msgid "Please check your e-mail"
   msgstr ""
   
  -#: ../plugin/userform.php:170
  +#: ../plugin/userform.php:173
   msgid "E-mail mismatch !"
   msgstr ""
   
  -#: ../plugin/userform.php:172
  +#: ../plugin/userform.php:175
   msgid "Invalid request"
   msgstr ""
   
   # ../plugin/subscribe.php:22
  -#: ../plugin/userform.php:173
  +#: ../plugin/userform.php:176
   msgid "Please confirm your e-mail address first !"
   msgstr ""
   
  -#: ../plugin/userform.php:180
  +#: ../plugin/userform.php:183
   msgid "ID and e-mail mismatch !"
   msgstr ""
   
   # ../plugin/subscribe.php:22
  -#: ../plugin/userform.php:182
  +#: ../plugin/userform.php:185
   msgid "Please try again or make a new profile"
   msgstr ""
   
  -#: ../plugin/userform.php:222 ../plugin/userform.php:307
  +#: ../plugin/userform.php:225 ../plugin/userform.php:310
   msgid "too short password!"
   msgstr ""
   
  -#: ../plugin/userform.php:223
  +#: ../plugin/userform.php:226
   msgid "mismatch password!"
   msgstr ""
   
  -#: ../plugin/userform.php:224 ../plugin/userform.php:311
  +#: ../plugin/userform.php:227 ../plugin/userform.php:314
   msgid "not acceptable character found in the password!"
   msgstr ""
   
  -#: ../plugin/userform.php:227
  +#: ../plugin/userform.php:230
   msgid "Your password is too simple to use as a password !"
   msgstr ""
   
   # ../plugin/subscribe.php:22
  -#: ../plugin/userform.php:233 ../plugin/userform.php:342
  +#: ../plugin/userform.php:236 ../plugin/userform.php:345
   msgid "Your email address is not valid"
   msgstr "Merci de rentrer d'abord votre adresse de messagerie"
   
   # ../wikilib.php:547
  -#: ../plugin/userform.php:238 ../plugin/userform.php:410
  +#: ../plugin/userform.php:241 ../plugin/userform.php:413
   msgid "Fail to register"
   msgstr ""
   
   # ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
   # c-format
  -#: ../plugin/userform.php:239 ../plugin/userform.php:411
  +#: ../plugin/userform.php:242 ../plugin/userform.php:414
   msgid "You are not allowed to register on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:240 ../plugin/userform.php:412 ../wiki.php:5236
  -#: ../wiki.php:5247
  +#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5274
  +#: ../wiki.php:5285
   msgid "Please contact WikiMasters"
   msgstr ""
   
  -#: ../plugin/userform.php:244
  +#: ../plugin/userform.php:247
   msgid "Successfully added!"
   msgstr ""
   
  -#: ../plugin/userform.php:250
  +#: ../plugin/userform.php:253
   #, c-format
   msgid "Successfully added as '%s'"
   msgstr ""
   
  -#: ../plugin/userform.php:251
  +#: ../plugin/userform.php:254
   msgid "Please check your mailbox"
   msgstr ""
   
  -#: ../plugin/userform.php:258 ../plugin/userform.php:336
  +#: ../plugin/userform.php:261 ../plugin/userform.php:339
   msgid "E-mail confirmation"
   msgstr ""
   
   # ../plugin/subscribe.php:22
  -#: ../plugin/userform.php:260 ../plugin/userform.php:338
  +#: ../plugin/userform.php:263 ../plugin/userform.php:341
   msgid "Please confirm your email address"
   msgstr ""
   
  -#: ../plugin/userform.php:262
  +#: ../plugin/userform.php:265
   #, c-format
   msgid "Your initial password is %s"
   msgstr ""
   
  -#: ../plugin/userform.php:266
  +#: ../plugin/userform.php:269
   msgid "Confirmation E-mail sent"
   msgstr ""
   
  -#: ../plugin/userform.php:281
  +#: ../plugin/userform.php:284
   msgid "Invalid username !"
   msgstr ""
   
  -#: ../plugin/userform.php:309
  +#: ../plugin/userform.php:312
   msgid "mismatch password !"
   msgstr ""
   
  -#: ../plugin/userform.php:312 ../plugin/userform.php:320
  +#: ../plugin/userform.php:315 ../plugin/userform.php:323
   msgid "Password is not changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:314
  +#: ../plugin/userform.php:317
   msgid "Password is changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:316
  +#: ../plugin/userform.php:319
   msgid "Password is too simple to use as a password !"
   msgstr ""
   
  -#: ../plugin/userform.php:340
  +#: ../plugin/userform.php:343
   msgid "E-mail confirmation mail sent"
   msgstr ""
   
  -#: ../plugin/userform.php:351
  +#: ../plugin/userform.php:354
   msgid "Your Nickname already used as ID in this wiki"
   msgstr ""
   
   # ../wikilib.php:887
  -#: ../plugin/userform.php:356
  +#: ../plugin/userform.php:359
   msgid "Profiles are saved successfully !"
   msgstr ""
   
  -#: ../plugin/userform.php:386 ../plugin/userform.php:432
  +#: ../plugin/userform.php:382 ../plugin/userform.php:435
   #, c-format
   msgid "Authentication request was failed: %s"
   msgstr ""
   
  -#: ../plugin/userform.php:405
  +#: ../plugin/userform.php:408
   #, c-format
   msgid "Successfully login as '%s' via OpenID."
   msgstr ""
   
  -#: ../plugin/userform.php:419
  +#: ../plugin/userform.php:422
   #, c-format
   msgid "Your Nickname %s already used as ID in this Wiki."
   msgstr ""
   
  -#: ../plugin/userform.php:427
  +#: ../plugin/userform.php:430
   #, c-format
   msgid "OpenID Authentication successful and saved as %s."
   msgstr ""
   
  -#: ../plugin/userform.php:434
  +#: ../plugin/userform.php:437
   msgid "Invalid OpenID Authentication request"
   msgstr ""
   
  @@ -2052,6 +2073,26 @@
   msgid "User \"%s\" are deleted !"
   msgstr "\"%s\" est effac !"
   
  +# ../plugin/VisualTour.php:55
  +#: ../plugin/VisualTour.php:133
  +msgid "Normal"
  +msgstr ""
  +
  +# ../plugin/VisualTour.php:57
  +#: ../plugin/VisualTour.php:135
  +msgid "Wider"
  +msgstr "Plus large"
  +
  +# ../plugin/VisualTour.php:59
  +#: ../plugin/VisualTour.php:137
  +msgid "Deeper"
  +msgstr "Plus profond"
  +
  +# ../plugin/Vote.php:109
  +#: ../plugin/Vote.php:113
  +msgid "Voted successfully"
  +msgstr "Vote russi"
  +
   #: ../plugin/whois.php:119
   #, c-format
   msgid "Could not connect to %s server"
  @@ -2063,163 +2104,167 @@
   msgid "Whois search result for %s"
   msgstr ""
   
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2439
  +msgid "Others"
  +msgstr ""
  +
   # ../wiki.php:850
  -#: ../wiki.php:1236
  +#: ../wiki.php:1238
   #, c-format
   msgid "Rename %s to %s"
   msgstr "Renommer %s en %s"
   
   # ../wikilib.php:803
  -#: ../wiki.php:1656
  +#: ../wiki.php:1658
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
   # ../plugin/restore.php:27
  -#: ../wiki.php:1666
  +#: ../wiki.php:1668
   msgid "File does not exist"
   msgstr "Erreur : l'archive n'existe pas"
   
   # ../plugin/restore.php:27
  -#: ../wiki.php:2037
  +#: ../wiki.php:2043
   #, c-format
   msgid "File '%s' does not exist."
   msgstr ""
   
   # ../wikilib.php:521
  -#: ../wiki.php:2907 ../wiki.php:2918 ../wiki.php:5472
  +#: ../wiki.php:2916 ../wiki.php:2927 ../wiki.php:5514
   msgid "Invalid ajax action."
   msgstr ""
   
  -#: ../wiki.php:3412
  +#: ../wiki.php:3421
   msgid "Tags:"
   msgstr ""
   
   # ../wiki.php:1824
  -#: ../wiki.php:3440
  +#: ../wiki.php:3449
   #, c-format
   msgid "See %s"
   msgstr "Voir %s"
   
   # ../wiki.php:1824
  -#: ../wiki.php:3440
  +#: ../wiki.php:3449
   #, c-format
   msgid "TwinPages"
   msgstr ""
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../wiki.php:3445
  +#: ../wiki.php:3454
   msgid "See [TwinPages]:"
   msgstr "Voir [TwinPages]: "
   
  -#: ../wiki.php:4007
  +#: ../wiki.php:4016
   msgid "Sister Sites Index"
   msgstr ""
   
   # ../locale/dummy.php:6 ../wiki.php:2553
  -#: ../wiki.php:4435 ../locale/dummy.php:6
  +#: ../wiki.php:4444 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "ditionTexte"
   
   # ../wiki.php:2555
  -#: ../wiki.php:4437
  +#: ../wiki.php:4446
   msgid "NotEditable"
   msgstr "Pasditable"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wiki.php:4441 ../locale/dummy.php:6
  +#: ../wiki.php:4450 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "MontrePage"
   
   # ../locale/dummy.php:3 ../locale/dummy.php:5 ../wiki.php:2558
  -#: ../wiki.php:4442 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4451 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "TrouvePage"
   
  -#: ../wiki.php:4825
  +#: ../wiki.php:4854
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5235
  +#: ../wiki.php:5273
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5246
  +#: ../wiki.php:5284
   msgid "You are blocked in this wiki"
   msgstr ""
   
   # ../wiki.php:2945 ../wiki.php:2948
  -#: ../wiki.php:5284 ../wiki.php:5293 ../wikilib.php:1344
  +#: ../wiki.php:5322 ../wiki.php:5331 ../wikilib.php:1370
   msgid "Create this page"
   msgstr "Crer cette page"
   
   # ../wikilib.php:816
  -#: ../wiki.php:5295
  +#: ../wiki.php:5333
   #, c-format
   msgid "%s has saved revisions"
   msgstr "%s est sauvegard"
   
   # ../wiki.php:2950
  -#: ../wiki.php:5296 ../wiki.php:5303
  +#: ../wiki.php:5334 ../wiki.php:5341
   #, fuzzy, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr ""
   " ou cliquer sur %s pour faire une recherche en texte intgral de cette "
   "page.\n"
   
  -#: ../wiki.php:5301
  +#: ../wiki.php:5339
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr ""
   
  -#: ../wiki.php:5308
  +#: ../wiki.php:5346
   msgid "Please try to search with another word"
   msgstr ""
   
   # ../wiki.php:2956
  -#: ../wiki.php:5320
  +#: ../wiki.php:5358
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr "%s ou alternativement, utiliser un de ces modles de page :\n"
   
  -#: ../wiki.php:5323
  +#: ../wiki.php:5361
   msgid "You have no templates"
   msgstr ""
   
   # ../wikilib.php:427
  -#: ../wiki.php:5325
  +#: ../wiki.php:5363
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
   
  -#: ../wiki.php:5336
  +#: ../wiki.php:5374
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
   # ../wikilib.php:521
  -#: ../wiki.php:5474
  +#: ../wiki.php:5516
   msgid "Invalid macro action."
   msgstr ""
   
   # ../wiki.php:3009
  -#: ../wiki.php:5484
  +#: ../wiki.php:5526
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "Vous n'tes pas autoris  '%s'"
   
   # ../wiki.php:3021
  -#: ../wiki.php:5504
  +#: ../wiki.php:5546
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "Impossible de pouvoir \"%s\" !"
   
   # ../wiki.php:3024
  -#: ../wiki.php:5507
  +#: ../wiki.php:5549
   msgid "Please enter the valid password"
   msgstr "Merci d'entrer un mot de passe valide"
   
   # ../wikilib.php:368
  -#: ../wikilib.php:651
  +#: ../wikilib.php:656
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -2253,169 +2298,169 @@
   
   # ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
   # c-format
  -#: ../wikilib.php:688
  +#: ../wikilib.php:693
   msgid "You are not allowed to edit this page !"
   msgstr ""
   
  -#: ../wikilib.php:694
  +#: ../wikilib.php:699
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
   # ../wikilib.php:425
  -#: ../wikilib.php:800
  +#: ../wikilib.php:824
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   "Utiliser un des modles de pages qui suivent pour une premirecration :\n"
   
   # ../wikilib.php:427
  -#: ../wikilib.php:802
  +#: ../wikilib.php:826
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr ""
   
  -#: ../wikilib.php:806
  +#: ../wikilib.php:830
   msgid "Merge"
   msgstr ""
   
  -#: ../wikilib.php:807
  +#: ../wikilib.php:831
   msgid "Merge manually"
   msgstr ""
   
  -#: ../wikilib.php:808
  +#: ../wikilib.php:832
   msgid "Ignore conflicts"
   msgstr ""
   
   # ../wikilib.php:445
  -#: ../wikilib.php:835
  +#: ../wikilib.php:859
   msgid "ReduceEditor"
   msgstr "Rduirediteur"
   
  -#: ../wikilib.php:836
  +#: ../wikilib.php:860
   msgid "EnlargeEditor"
   msgstr ""
   
   # ../locale/dummy.php:6 ../wikilib.php:448
  -#: ../wikilib.php:840 ../locale/dummy.php:6
  +#: ../wikilib.php:864 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
   # ../wikilib.php:449
  -#: ../wikilib.php:842
  +#: ../wikilib.php:866
   msgid "HelpOnEditing"
   msgstr ""
   
   # ../wikilib.php:462
  -#: ../wikilib.php:874
  +#: ../wikilib.php:898
   #, c-format
   msgid "Describe %s here"
   msgstr "Dcrire %s ici"
   
   # ../wikilib.php:476
  -#: ../wikilib.php:894
  +#: ../wikilib.php:918
   msgid "--Select Category--"
   msgstr "-- Slectionner une catgorie"
   
  -#: ../wikilib.php:904
  +#: ../wikilib.php:928
   msgid "Minor edit"
   msgstr ""
   
   # ../wikilib.php:484
  -#: ../wikilib.php:908
  +#: ../wikilib.php:932
   msgid "Summary of Change"
   msgstr "Sommaire des modifications"
   
   # ../wikilib.php:443
  -#: ../wikilib.php:913
  +#: ../wikilib.php:937
   msgid "Skip to preview"
   msgstr "Aller  la prvisualisation"
   
   # ../wikilib.php:483 ../wikilib.php:1079
  -#: ../wikilib.php:923 ../wikilib.php:2053 ../wikilib.php:2107
  +#: ../wikilib.php:949 ../wikilib.php:2084 ../wikilib.php:2138
   msgid "Save"
   msgstr "Sauvegarder"
   
   # ../wikilib.php:517
  -#: ../wikilib.php:996
  +#: ../wikilib.php:1022
   msgid "406 Not Acceptable"
   msgstr ""
   
   # ../wikilib.php:519
  -#: ../wikilib.php:1001
  +#: ../wikilib.php:1027
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s n'est pas une action valide"
   
   # ../wikilib.php:521
  -#: ../wikilib.php:1003
  +#: ../wikilib.php:1029
   msgid "Is it valid action ?"
   msgstr "Est-ce que c'est une action valide ?"
   
   # ../wikilib.php:540
  -#: ../wikilib.php:1050
  +#: ../wikilib.php:1076
   #, c-format
   msgid "File '%s' is deleted"
   msgstr "Le fichier '%s' est effac"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:1052
  +#: ../wikilib.php:1078
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr "Impossible d'effacer '%s'"
   
   # ../wikilib.php:545
  -#: ../wikilib.php:1057
  +#: ../wikilib.php:1083
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr "Le rpertoire '%s' est effac"
   
   # ../wikilib.php:547
  -#: ../wikilib.php:1059
  +#: ../wikilib.php:1085
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr "Impossible d'effacer le rpertoire '%s'"
   
   # ../wikilib.php:557 ../wikilib.php:559
  -#: ../wikilib.php:1069 ../wikilib.php:1089
  +#: ../wikilib.php:1095 ../wikilib.php:1115
   msgid "No files are selected !"
   msgstr "Aucun fichier n'est slectionn !"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:1082
  +#: ../wikilib.php:1108
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
   # ../wikilib.php:550
  -#: ../wikilib.php:1086
  +#: ../wikilib.php:1112
   msgid "Delete selected file"
   msgstr ""
   
   # ../wikilib.php:575
  -#: ../wikilib.php:1107
  +#: ../wikilib.php:1133
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr "\"%s\" est effac !"
   
   # ../wikilib.php:581
  -#: ../wikilib.php:1122
  +#: ../wikilib.php:1148
   msgid "Please delete this file manually."
   msgstr "Merci d'effacer ce fichier manuellement."
   
   # ../wikilib.php:583
  -#: ../wikilib.php:1124
  +#: ../wikilib.php:1150
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "Effacer \"%s\" ?"
   
   # ../plugin/minilogin.php:30
  -#: ../wikilib.php:1177
  +#: ../wikilib.php:1203
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
   # ../wiki.php:2950
  -#: ../wikilib.php:1346
  +#: ../wikilib.php:1372
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
  @@ -2423,16 +2468,16 @@
   "page.\n"
   
   # ../wiki.php:2950
  -#: ../wikilib.php:1346
  +#: ../wikilib.php:1372
   msgid "title"
   msgstr "titre"
   
  -#: ../wikilib.php:1360
  +#: ../wikilib.php:1386
   msgid "Please try to fulltext search"
   msgstr ""
   
   # ../wiki.php:2950
  -#: ../wikilib.php:1363
  +#: ../wikilib.php:1389
   #, fuzzy, c-format
   msgid "You can also click %s to fulltext search.\n"
   msgstr ""
  @@ -2440,119 +2485,119 @@
   "page.\n"
   
   # ../wikilib.php:743
  -#: ../wikilib.php:1408 ../wikilib.php:1509
  +#: ../wikilib.php:1434 ../wikilib.php:1535
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "Quelqu'un a sauvegard la page tandis que vous ditiez %s"
   
  -#: ../wikilib.php:1414
  +#: ../wikilib.php:1440
   msgid "Section edit is not valid for non-exists page."
   msgstr ""
   
   # ../wikilib.php:803
  -#: ../wikilib.php:1447 ../wikilib.php:1625
  +#: ../wikilib.php:1473 ../wikilib.php:1651
   msgid "mail does not supported by default."
   msgstr "La messagerie n'est pas support par dfaut."
   
   # ../wikilib.php:807
  -#: ../wikilib.php:1451 ../wikilib.php:1629
  +#: ../wikilib.php:1477 ../wikilib.php:1655
   msgid "Sent notification mail."
   msgstr "Des notifications par messagerie ont t envoyes."
   
   # ../wikilib.php:809
  -#: ../wikilib.php:1453 ../wikilib.php:1631
  +#: ../wikilib.php:1479 ../wikilib.php:1657
   msgid "No subscribers found."
   msgstr "Aucun abonn trouv."
   
   # ../wikilib.php:814
  -#: ../wikilib.php:1458 ../wikilib.php:1636
  +#: ../wikilib.php:1484 ../wikilib.php:1662
   #, c-format
   msgid "%s is not editable"
   msgstr "%s n'est pas ditable"
   
   # ../wikilib.php:816
  -#: ../wikilib.php:1460 ../wikilib.php:1638
  +#: ../wikilib.php:1486 ../wikilib.php:1664
   #, c-format
   msgid "%s is saved"
   msgstr "%s est sauvegard"
   
   # ../wikilib.php:734
  -#: ../wikilib.php:1500
  +#: ../wikilib.php:1526
   msgid "Goto Editor"
   msgstr "Aller  l'diteur"
   
  -#: ../wikilib.php:1514
  +#: ../wikilib.php:1540
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr ""
   
   # ../plugin/Vote.php:109
  -#: ../wikilib.php:1515
  +#: ../wikilib.php:1541
   #, c-format
   msgid "%s is merged successfully"
   msgstr ""
   
  -#: ../wikilib.php:1519
  +#: ../wikilib.php:1545
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1520
  +#: ../wikilib.php:1546
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr ""
   
  -#: ../wikilib.php:1521
  +#: ../wikilib.php:1547
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1522
  +#: ../wikilib.php:1548
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1527
  +#: ../wikilib.php:1553
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr ""
   
   # ../wikilib.php:581
  -#: ../wikilib.php:1528
  +#: ../wikilib.php:1554
   msgid "Please resolve conflicts manually."
   msgstr ""
   
  -#: ../wikilib.php:1531
  +#: ../wikilib.php:1557
   #, c-format
   msgid "Force merging for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1532
  +#: ../wikilib.php:1558
   msgid "Please be careful, you could damage useful information."
   msgstr ""
   
   # ../wikilib.php:755
  -#: ../wikilib.php:1546
  +#: ../wikilib.php:1572
   msgid "Conflict error!"
   msgstr "Erreur de conflit !"
   
   # ../wikilib.php:748 ../wikilib.php:777
  -#: ../wikilib.php:1585
  +#: ../wikilib.php:1611
   #, c-format
   msgid "Preview of %s"
   msgstr "Prvisualisation de %s"
   
   # ../wikilib.php:838
  -#: ../wikilib.php:1670
  +#: ../wikilib.php:1696
   msgid "Nobody subscribed to this page."
   msgstr "Personne n'est abonn  cette page, aucun mail envoy"
   
   # ../wikilib.php:860
  -#: ../wikilib.php:1689
  +#: ../wikilib.php:1715
   #, c-format
   msgid "%s page is modified"
   msgstr "la page %s est modifi"
   
   # ../wikilib.php:870
  -#: ../wikilib.php:1718
  +#: ../wikilib.php:1744
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
  @@ -2563,124 +2608,124 @@
   "\n"
   
   # ../wikilib.php:883
  -#: ../wikilib.php:1731
  +#: ../wikilib.php:1757
   msgid "Send notification mails to all subscribers"
   msgstr "Envoyez un mail de notification  tous les abonns"
   
   # ../wikilib.php:887
  -#: ../wikilib.php:1736
  +#: ../wikilib.php:1762
   msgid "Mails are sent successfully"
   msgstr "Mail envoy avec succs"
   
   # ../wikilib.php:888
  -#: ../wikilib.php:1737
  +#: ../wikilib.php:1763
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr "un mail a t envoy  '%s'"
   
   # ../wiki.php:3021
  -#: ../wikilib.php:1739
  +#: ../wikilib.php:1765
   msgid "Fail to send mail"
   msgstr ""
   
   # ../wikilib.php:803
  -#: ../wikilib.php:1750
  +#: ../wikilib.php:1776
   msgid "This wiki does not support sendmail"
   msgstr ""
   
   # ../wikilib.php:1483
  -#: ../wikilib.php:1848
  +#: ../wikilib.php:1874
   msgid "Invalid regular expression !"
   msgstr ""
   
  -#: ../wikilib.php:1872
  +#: ../wikilib.php:1898
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:1875
  +#: ../wikilib.php:1901
   msgid "Infinite loop possible!"
   msgstr ""
   
   # ../plugin/login.php:26 ../wikilib.php:1051
  -#: ../wikilib.php:1990
  +#: ../wikilib.php:2016
   msgid "Login"
   msgstr "Se connecter"
   
  -#: ../wikilib.php:1991
  +#: ../wikilib.php:2017
   msgid "OpenID"
   msgstr ""
   
  -#: ../wikilib.php:2003 ../wikilib.php:2125
  +#: ../wikilib.php:2029 ../wikilib.php:2156
   msgid "ID"
   msgstr ""
   
   # ../wikilib.php:1070
  -#: ../wikilib.php:2033 ../wikilib.php:2118
  +#: ../wikilib.php:2064 ../wikilib.php:2149
   msgid "Make profile"
   msgstr "Faire un profil"
   
   # ../wikilib.php:1071
  -#: ../wikilib.php:2035
  +#: ../wikilib.php:2066
   msgid "password again"
   msgstr "mot de passe de nouveau"
   
  -#: ../wikilib.php:2037 ../wikilib.php:2086
  +#: ../wikilib.php:2068 ../wikilib.php:2117
   msgid "Mail"
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../wikilib.php:2059
  +#: ../wikilib.php:2090
   msgid "New password"
   msgstr "Nouveau mot de passe"
   
  -#: ../wikilib.php:2064
  +#: ../wikilib.php:2095
   msgid "Nickname"
   msgstr ""
   
  -#: ../wikilib.php:2087
  +#: ../wikilib.php:2118
   msgid "Time Zone"
   msgstr ""
   
   # ../wikilib.php:1088
  -#: ../wikilib.php:2096
  +#: ../wikilib.php:2127
   msgid "logout"
   msgstr "se dconnecter"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wikilib.php:2391
  +#: ../wikilib.php:2440
   msgid "Show all"
   msgstr ""
   
   # ../locale/dummy.php:4
  -#: ../wikilib.php:2533
  +#: ../wikilib.php:2582
   msgid "Contents"
   msgstr ""
   
   # ../wikilib.php:1479
  -#: ../wikilib.php:2653
  +#: ../wikilib.php:2702
   #, c-format
   msgid "Title search for \"%s\""
   msgstr "Recherche de titre pour \"%s\""
   
  -#: ../monisetup.php:36
  +#: ../monisetup.php:35
   msgid "Check a dba configuration"
   msgstr ""
   
   # ../wikilib.php:575
  -#: ../monisetup.php:48
  +#: ../monisetup.php:47
   #, fuzzy, c-format
   msgid "%s is selected."
   msgstr "\"%s\" est effac !"
   
  -#: ../monisetup.php:55
  +#: ../monisetup.php:54
   msgid "Check a AcceptPathInfo setting for Apache 2.x.xx"
   msgstr ""
   
  -#: ../monisetup.php:62 ../monisetup.php:68
  +#: ../monisetup.php:61 ../monisetup.php:67
   msgid "Off"
   msgstr ""
   
  -#: ../monisetup.php:70
  +#: ../monisetup.php:69
   msgid "On"
   msgstr ""
   
  @@ -2744,148 +2789,170 @@
   msgstr "%s n'est pas ditable"
   
   # ../wikilib.php:814
  -#: ../monisetup.php:304
  +#: ../monisetup.php:303
   #, fuzzy, c-format
   msgid "%s is not writable"
   msgstr "%s n'est pas ditable"
   
   # ../plugin/rename.php:14
  -#: ../monisetup.php:311 ../monisetup.php:317
  +#: ../monisetup.php:310 ../monisetup.php:316
   #, fuzzy, c-format
   msgid "%s is created now"
   msgstr "\"%s\" est renomm !"
   
   # ../wikilib.php:814
  -#: ../monisetup.php:327
  +#: ../monisetup.php:326
   #, fuzzy, c-format
   msgid "%s is writable"
   msgstr "%s n'est pas ditable"
   
  -#: ../monisetup.php:427
  +#: ../monisetup.php:343
  +#, c-format
  +msgid ""
  +"If you want to check .htaccess file please delete '%s' file and reload it."
  +msgstr ""
  +
  +#: ../monisetup.php:346
  +msgid "Security check for 'upload_dir'."
  +msgstr ""
  +
  +#: ../monisetup.php:378
  +msgid ".htaccess for 'imgs_dir'."
  +msgstr ""
  +
  +#: ../monisetup.php:448
  +msgid "Fail"
  +msgstr ""
  +
  +#: ../monisetup.php:454
  +msgid "Unable to write .htaccess"
  +msgstr ""
  +
  +#: ../monisetup.php:550
   msgid "Click here to toggle all"
   msgstr ""
   
   # ../wikilib.php:550
  -#: ../monisetup.php:428
  +#: ../monisetup.php:551
   #, fuzzy
   msgid "Deselect all"
   msgstr "Effacer les fichiers slectionns"
   
  -#: ../monisetup.php:433
  +#: ../monisetup.php:556
   msgid "Please be careful to deselect these pages"
   msgstr ""
   
  -#: ../monisetup.php:708
  +#: ../monisetup.php:831
   msgid "MoniWiki"
   msgstr ""
   
  -#: ../monisetup.php:711
  +#: ../monisetup.php:834
   msgid "'config.php' is not writable !"
   msgstr ""
   
  -#: ../monisetup.php:712
  +#: ../monisetup.php:835
   msgid ""
   "Please execute <tt>'monisetup.sh'</tt> or <tt>chmod a+w config.php</tt> "
   "first to change your settings."
   msgstr ""
   
   # ../wiki.php:3024
  -#: ../monisetup.php:739
  +#: ../monisetup.php:862
   #, fuzzy
   msgid "Invalid password error !"
   msgstr "Merci d'entrer un mot de passe valide"
   
  -#: ../monisetup.php:740
  +#: ../monisetup.php:863
   msgid ""
   "If you can't remember your admin password, delete password entry in the "
   "'config.php' and restart 'monisetup'"
   msgstr ""
   
  -#: ../monisetup.php:772
  +#: ../monisetup.php:895
   #, c-format
   msgid "Updated Configutations for this %s"
   msgstr ""
   
   # ../wikilib.php:887
  -#: ../monisetup.php:791
  +#: ../monisetup.php:914
   #, fuzzy
   msgid "Configurations are saved successfully"
   msgstr "Mail envoy avec succs"
   
  -#: ../monisetup.php:792
  +#: ../monisetup.php:915
   msgid ""
   "WARN: Please check <a href='monisetup.php'> your saved configurations</a>"
   msgstr ""
   
  -#: ../monisetup.php:793
  +#: ../monisetup.php:916
   msgid "If all is good, change 'config.php' permission as 644."
   msgstr ""
   
  -#: ../monisetup.php:805
  +#: ../monisetup.php:928
   msgid "Welcome to MoniWiki ! This is your first installation"
   msgstr ""
   
  -#: ../monisetup.php:812
  +#: ../monisetup.php:935
   msgid "Default settings are loaded..."
   msgstr ""
   
   # ../wikilib.php:887
  -#: ../monisetup.php:821
  +#: ../monisetup.php:944
   #, fuzzy
   msgid "Initial configurations are saved successfully."
   msgstr "Mail envoy avec succs"
   
  -#: ../monisetup.php:822
  +#: ../monisetup.php:945
   msgid "Goto <a href='monisetup.php'>MoniSetup</a> again to configure details"
   msgstr ""
   
   # ../plugin/minilogin.php:30
  -#: ../monisetup.php:839 ../monisetup.php:841 ../monisetup.php:937
  -#: ../monisetup.php:939
  +#: ../monisetup.php:962 ../monisetup.php:964 ../monisetup.php:1060
  +#: ../monisetup.php:1062
   #, fuzzy, c-format
   msgid "goto %s"
   msgstr "ou %s"
   
   # ../wikilib.php:557 ../wikilib.php:559
  -#: ../monisetup.php:844
  +#: ../monisetup.php:967
   #, fuzzy
   msgid "No WikiSeeds are selected"
   msgstr "Aucun fichier n'est slectionn !"
   
  -#: ../monisetup.php:855
  +#: ../monisetup.php:978
   #, c-format
   msgid "Preview current settings for this %s"
   msgstr ""
   
  -#: ../monisetup.php:857
  +#: ../monisetup.php:980
   #, c-format
   msgid "Read current settings for this %s"
   msgstr ""
   
  -#: ../monisetup.php:885
  +#: ../monisetup.php:1008
   msgid "Change your settings"
   msgstr ""
   
  -#: ../monisetup.php:887
  +#: ../monisetup.php:1010
   msgid "WARN: You have to enter your Admin Password"
   msgstr ""
   
  -#: ../monisetup.php:889 ../monisetup.php:932
  +#: ../monisetup.php:1012 ../monisetup.php:1055
   #, c-format
   msgid "WARN: You have no WikiSeed on your %s"
   msgstr ""
   
   # ../plugin/quicklinks.php:50
  -#: ../monisetup.php:890 ../monisetup.php:933
  +#: ../monisetup.php:1013 ../monisetup.php:1056
   #, fuzzy, c-format
   msgid "If you want to put wikiseeds on your wiki %s now"
   msgstr "Voulez vous mettre  jour vos liens rapides ?"
   
  -#: ../monisetup.php:891 ../monisetup.php:934
  +#: ../monisetup.php:1014 ../monisetup.php:1057
   msgid "Click here"
   msgstr ""
   
  -#: ../monisetup.php:926 ../monisetup.php:928
  +#: ../monisetup.php:1049 ../monisetup.php:1051
   msgid "Update"
   msgstr ""
   
  
  
  
  1.28      +890 -828  moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- ko.po	24 Dec 2008 09:16:14 -0000	1.27
  +++ ko.po	2 Jan 2009 05:45:20 -0000	1.28
  @@ -5,7 +5,7 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1.3\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2008-12-23 23:10+0900\n"
  +"POT-Creation-Date: 2008-12-31 20:11+0900\n"
   "PO-Revision-Date: 2008-12-11 12:20+0900\n"
   "Last-Translator: Won-Kyu Park <wkpark@kldp.org>\n"
   "Language-Team: Won-Kyu Park <wkpark@kldp.org>\n"
  @@ -13,6 +13,82 @@
   "Content-Type: text/plain; charset=UTF-8\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  +#: ../plugin/aclinfo.php:15
  +msgid "ACL is not enabled on this Wiki"
  +msgstr "ACL이 활성화되어있지 않습니다"
  +
  +#: ../plugin/aclinfo.php:21
  +msgid "Your ACL Info"
  +msgstr "ACL 정보"
  +
  +#: ../plugin/aclinfo.php:23
  +msgid "You are wiki owner"
  +msgstr "위키 소유자입니다"
  +
  +#: ../plugin/aclinfo.php:25
  +msgid "You are wiki master"
  +msgstr "위키 관리자입니다"
  +
  +#: ../plugin/aclinfo.php:27
  +msgid "Allowed actions"
  +msgstr "허락된 액션"
  +
  +#: ../plugin/aclinfo.php:32
  +msgid "Denied actions"
  +msgstr "거부된 액션"
  +
  +#: ../plugin/aclinfo.php:38
  +msgid "Protected actions"
  +msgstr "제한된 액션"
  +
  +#: ../plugin/admin.php:136 ../plugin/PluginInfo.php:50
  +msgid "Description"
  +msgstr "설명"
  +
  +#: ../plugin/admin.php:139 ../plugin/PluginInfo.php:56
  +msgid "Author"
  +msgstr "저자"
  +
  +#: ../plugin/admin.php:141 ../plugin/PluginInfo.php:58
  +msgid "License"
  +msgstr "저작권"
  +
  +#: ../plugin/admin.php:143 ../plugin/PluginInfo.php:60
  +msgid "Depend"
  +msgstr "의존성"
  +
  +#: ../plugin/admin.php:147 ../plugin/PluginInfo.php:64
  +msgid "URL"
  +msgstr ""
  +
  +#: ../plugin/admin.php:191
  +msgid "Enabled plugins"
  +msgstr "활성화된 플러그인"
  +
  +#: ../plugin/admin.php:193
  +msgid "Disabled plugins"
  +msgstr "비활성화된 플러그인"
  +
  +#: ../plugin/admin.php:201
  +msgid "Enabled processors"
  +msgstr "활성화된 프로세서"
  +
  +#: ../plugin/admin.php:203
  +msgid "Disabled processors"
  +msgstr "비활성화된 프로세서"
  +
  +#: ../plugin/admin.php:206
  +msgid "Plugin/Processor settings are updated"
  +msgstr "플러그인/프로세서 세팅이 갱신됨"
  +
  +#: ../plugin/admin.php:212
  +msgid "Enable/disable plugins and processors"
  +msgstr "플러그인과 프로세서 활성화/비활성화"
  +
  +#: ../plugin/atom.php:64 ../plugin/rss_rc.php:62
  +msgid "show changes"
  +msgstr "바뀐점 보기"
  +
   #: ../plugin/Attachment.php:70 ../plugin/Attachment.php:331
   #, c-format
   msgid "Upload new Attachment \"%s\""
  @@ -40,6 +116,140 @@
   msgid "Translate %s to %s"
   msgstr "%s에서 %s(으)로 번역하기"
   
  +#: ../plugin/backup.php:42
  +msgid "Your wiki is backuped successfully"
  +msgstr "백업이 성공적으로 완료되었습니다"
  +
  +#: ../plugin/backup.php:49
  +msgid "Backup failed !"
  +msgstr "백업 실패 !"
  +
  +#: ../plugin/backup.php:54
  +msgid "Did you want to Backup your wiki ?"
  +msgstr "위키를 백업하시겠습니까 ?"
  +
  +#: ../plugin/bbs.php:493
  +msgid "This bbs does not exists yet. Please save this page first"
  +msgstr "현 BBS가 존재하지 않습ㄴ디ㅏ. 먼저 페이지를 저장하세요"
  +
  +#: ../plugin/bbs.php:617
  +msgid "No"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:626
  +msgid "Edit"
  +msgstr "고치기"
  +
  +#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1111
  +msgid "Delete"
  +msgstr "지우기"
  +
  +#: ../plugin/bbs.php:657
  +msgid "Please check article numbers."
  +msgstr "글번호를 확인해 주세요"
  +
  +#: ../plugin/bbs.php:737
  +msgid "More"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:782
  +msgid "New"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:784
  +msgid "Read"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:800
  +#, c-format
  +msgid "Total %s articles."
  +msgstr "총 %d 개의 글"
  +
  +#: ../plugin/bbs.php:836
  +#, c-format
  +msgid "Your IP address is not allowed to %s at this BBS"
  +msgstr "IP 주소가 '%s' BBS에서 허락되지 않았습니다."
  +
  +#: ../plugin/bbs.php:890
  +msgid "Successfully deleted."
  +msgstr "성공적으로 지워졌음."
  +
  +#: ../plugin/bbs.php:922
  +msgid "Fail to post comment."
  +msgstr "댓글 등록 실패."
  +
  +#: ../plugin/bbs.php:932
  +#, c-format
  +msgid "The article %s will be deleted."
  +msgstr "게시글 %s(이)가 지워질 것입니다."
  +
  +#: ../plugin/bbs.php:974
  +msgid "Invalid HomePage address."
  +msgstr "잘못된 홈페이지 주소."
  +
  +#: ../plugin/bbs.php:987
  +msgid "No Name error."
  +msgstr "이름이 없습ㄴ다."
  +
  +#: ../plugin/bbs.php:997
  +msgid "No Subject error."
  +msgstr "제목이 없습니다."
  +
  +#: ../plugin/bbs.php:1009 ../plugin/Comment.php:191 ../plugin/Gallery.php:174
  +#: ../wikilib.php:1459 ../wikilib.php:1605
  +msgid ""
  +"Sorry, can not save page because some messages are blocked in this wiki."
  +msgstr "죄송합니다. 특정 메시지가 금지되어 페이지를 저장할 수 없습니다."
  +
  +#: ../plugin/bbs.php:1025
  +msgid "New post added successfully"
  +msgstr "새글이 성공적으로 등록되었습니다."
  +
  +#: ../plugin/BlogChanges.php:198
  +msgid "Category: "
  +msgstr "분류: "
  +
  +#: ../plugin/BlogChanges.php:200 ../locale/dummy.php:7
  +msgid "BlogChanges"
  +msgstr "바뀐 블로그"
  +
  +#: ../plugin/BlogChanges.php:246
  +#, c-format
  +msgid "Invalid category expr \"%s\""
  +msgstr "잘못된 분류 표현식\"%s\""
  +
  +#: ../plugin/BlogChanges.php:378 ../plugin/BlogChanges.php:380
  +#: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
  +msgid "Anonymous"
  +msgstr "아무개"
  +
  +#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  +#, c-format
  +msgid "%d comment"
  +msgstr "댓글 %d개"
  +
  +#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  +#, c-format
  +msgid "%d comments"
  +msgstr "댓글 %d개"
  +
  +#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:208
  +#: ../plugin/processor/blog.php:78
  +msgid "Add comment"
  +msgstr "댓글 달기"
  +
  +#: ../plugin/BlogChanges.php:423 ../plugin/processor/blog.php:97
  +msgid "track back"
  +msgstr "트랙백"
  +
  +#: ../plugin/BlogChanges.php:443
  +msgid "Previous"
  +msgstr "이전"
  +
  +#: ../plugin/BlogChanges.php:446
  +msgid "Next"
  +msgstr "다음"
  +
   #: ../plugin/Blog.php:84
   #, c-format
   msgid "Blog cache of \"%s\" is refreshed"
  @@ -91,7 +301,7 @@
   msgid "Add Blog entry to \"%s\""
   msgstr "\"%s\"에 블로그 항목 더하기"
   
  -#: ../plugin/Blog.php:260 ../plugin/Blog.php:332 ../plugin/PluginInfo.php:45
  +#: ../plugin/Blog.php:260 ../plugin/Blog.php:332 ../plugin/PluginInfo.php:52
   msgid "Name"
   msgstr "이름"
   
  @@ -99,7 +309,7 @@
   msgid "Title"
   msgstr "제목"
   
  -#: ../plugin/Blog.php:268 ../wikilib.php:915
  +#: ../plugin/Blog.php:268 ../wikilib.php:941
   msgid "GUI"
   msgstr ""
   
  @@ -111,50 +321,32 @@
   msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
   msgstr "<b>가로선</b> ----는 블로그일 경우 적용되지 않습니다."
   
  -#: ../plugin/BlogChanges.php:198
  -msgid "Category: "
  -msgstr "분류: "
  -
  -#: ../plugin/BlogChanges.php:200 ../locale/dummy.php:7
  -msgid "BlogChanges"
  -msgstr "바뀐 블로그"
  +#: ../plugin/cacheadmin.php:105
  +msgid "You are not WikiMaster!!"
  +msgstr "위키관리자가 아닙니다!!"
   
  -#: ../plugin/BlogChanges.php:246
  -#, c-format
  -msgid "Invalid category expr \"%s\""
  -msgstr "잘못된 분류 표현식\"%s\""
  +#: ../plugin/cacheadmin.php:120
  +msgid "Clear cache dirs"
  +msgstr "캐쉬 디렉토리 지우기"
   
  -#: ../plugin/BlogChanges.php:378 ../plugin/BlogChanges.php:380
  -#: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
  -msgid "Anonymous"
  -msgstr "아무개"
  +#: ../plugin/chat.php:36
  +msgid "No messages"
  +msgstr "메시지 없음"
   
  -#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  +#: ../plugin/chmod.php:18
   #, c-format
  -msgid "%d comment"
  -msgstr "댓글 %d개"
  +msgid "Permission of \"%s\" changed !"
  +msgstr ""
   
  -#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  +#: ../plugin/chmod.php:24
   #, c-format
  -msgid "%d comments"
  -msgstr "댓글 %d개"
  -
  -#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:208
  -#: ../plugin/processor/blog.php:78
  -msgid "Add comment"
  -msgstr "댓글 달기"
  -
  -#: ../plugin/BlogChanges.php:423 ../plugin/processor/blog.php:97
  -msgid "track back"
  -msgstr "트랙백"
  -
  -#: ../plugin/BlogChanges.php:443
  -msgid "Previous"
  -msgstr "이전"
  +msgid "Fail to chmod \"%s\" !"
  +msgstr ""
   
  -#: ../plugin/BlogChanges.php:446
  -msgid "Next"
  -msgstr "다음"
  +#: ../plugin/chmod.php:35
  +#, c-format
  +msgid "Change permission of \"%s\""
  +msgstr ""
   
   #: ../plugin/Clip.php:28
   msgid "Paste a new picture"
  @@ -180,7 +372,7 @@
   msgid "Comment"
   msgstr "댓글 달기"
   
  -#: ../plugin/Comment.php:88 ../wikilib.php:911 ../monisetup.php:924
  +#: ../plugin/Comment.php:88 ../wikilib.php:935 ../monisetup.php:1047
   msgid "Preview"
   msgstr "미리보기"
   
  @@ -200,22 +392,16 @@
   msgid "Page does not exists"
   msgstr "페이지가 없습니다"
   
  -#: ../plugin/Comment.php:164 ../plugin/userform.php:115
  -#: ../plugin/userform.php:178 ../plugin/userform.php:201
  +#: ../plugin/Comment.php:164 ../plugin/userform.php:118
  +#: ../plugin/userform.php:181 ../plugin/userform.php:204
   msgid "Invalid ticket !"
   msgstr "잘못된 티켓 !"
   
  -#: ../plugin/Comment.php:169 ../plugin/userform.php:117
  -#: ../plugin/userform.php:203
  +#: ../plugin/Comment.php:169 ../plugin/userform.php:120
  +#: ../plugin/userform.php:206
   msgid "You need a ticket !"
   msgstr "티켓이 필요합니다 !"
   
  -#: ../plugin/Comment.php:191 ../plugin/Gallery.php:174 ../plugin/bbs.php:1009
  -#: ../wikilib.php:1433 ../wikilib.php:1579
  -msgid ""
  -"Sorry, can not save page because some messages are blocked in this wiki."
  -msgstr "죄송합니다. 특정 메시지가 금지되어 페이지를 저장할 수 없습니다."
  -
   #: ../plugin/Comment.php:197
   msgid "Preview comment"
   msgstr "미리보기"
  @@ -229,6 +415,14 @@
   msgid "Comment added successfully"
   msgstr "댓글이 성공적으로 저장되었습니다"
   
  +#: ../plugin/css.php:33 ../plugin/css.php:41
  +msgid "Back to UserPreferences"
  +msgstr "UserPreferences로 가기"
  +
  +#: ../plugin/css.php:67
  +msgid "CSS disabled !"
  +msgstr ""
  +
   #: ../plugin/Diff.php:207 ../plugin/Info.php:220
   msgid "No older revisions available"
   msgstr "옛 버전이 없습니다"
  @@ -238,7 +432,7 @@
   msgid "Version info is not available in this wiki"
   msgstr "버전 정보는 현 위키에서 사용할 수 없습니다"
   
  -#: ../plugin/Diff.php:223 ../wikilib.php:1566
  +#: ../plugin/Diff.php:223 ../wikilib.php:1592
   msgid "No difference found"
   msgstr "변화가 없습니다"
   
  @@ -305,21 +499,25 @@
   msgstr "\"%s\"을(를) 전체 찾아보기"
   
   #: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:38
  -#: ../wikilib.php:1354
  +#: ../wikilib.php:1380
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr "%3$s의 페이지중에 %1$s개가 발견되었습니다"
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1356
  +#: ../wikilib.php:1382
   msgid "page"
   msgstr "페이지"
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1356
  +#: ../wikilib.php:1382
   msgid "pages"
   msgstr "페이지"
   
  +#: ../plugin/format.php:17
  +msgid "It is a XML format !"
  +msgstr ""
  +
   #: ../plugin/FullSearch.php:15
   #, c-format
   msgid "BackLinks search for \"%s\""
  @@ -334,7 +532,7 @@
   msgid "Show Context."
   msgstr "문맥 보기."
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:124 ../wiki.php:4439
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4448
   msgid "Refresh"
   msgstr "갱신"
   
  @@ -348,8 +546,8 @@
   msgid "You can also click %s to search title.\n"
   msgstr "%s을 눌러 제목 찾기를 할 수 있습니다.\n"
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5296 ../wiki.php:5303
  -#: ../wikilib.php:1364
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5334 ../wiki.php:5341
  +#: ../wikilib.php:1390
   msgid "here"
   msgstr "여기"
   
  @@ -365,7 +563,7 @@
   msgid "Case-sensitive searching"
   msgstr "대소문자 구별"
   
  -#: ../plugin/FullSearch.php:77 ../wikilib.php:2636 ../wikilib.php:2697
  +#: ../plugin/FullSearch.php:77 ../wikilib.php:2685 ../wikilib.php:2746
   msgid "Go"
   msgstr "찾기"
   
  @@ -373,12 +571,12 @@
   msgid "Empty expression"
   msgstr "비어있는 표현식"
   
  -#: ../plugin/FullSearch.php:144 ../wikilib.php:2657
  +#: ../plugin/FullSearch.php:144 ../wikilib.php:2706
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "잘못된 찾기 표현식 \"%s\""
   
  -#: ../plugin/Gallery.php:245 ../plugin/UploadedFiles.php:257
  +#: ../plugin/Gallery.php:245 ../plugin/UploadedFiles.php:266
   msgid "No files found"
   msgstr "페이지가 없습니다"
   
  @@ -390,8 +588,8 @@
   msgid "show comments"
   msgstr "댓글 보기"
   
  -#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1420
  -#: ../wikilib.php:1564
  +#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1446
  +#: ../wikilib.php:1590
   #, c-format
   msgid "Go back or return to %s"
   msgstr "뒤로 혹은 %s(으)로 가기"
  @@ -404,6 +602,10 @@
   msgid "Comments is added"
   msgstr "댓글이 더해졌습니다"
   
  +#: ../plugin/html2pdf.php:30
  +msgid "The TCPDF class not found!"
  +msgstr "TCPDF 클래스 찾을 수 없음!"
  +
   #: ../plugin/ImportUrl.php:132
   msgid "Import URL"
   msgstr "URL 가져오기"
  @@ -471,24 +673,24 @@
   msgid "purge"
   msgstr "삭제"
   
  -#: ../plugin/JME.php:55
  +#: ../plugin/JME.php:64
   #, c-format
   msgid "Draw a new molecule '%s'"
   msgstr "새 분자 그리기 '%s'"
   
  -#: ../plugin/JME.php:57
  +#: ../plugin/JME.php:66
   msgid "Draw a new molecule"
   msgstr "새 분자 그리기"
   
  -#: ../plugin/JME.php:95
  +#: ../plugin/JME.php:104
   msgid "Molecule successfully added"
   msgstr "분자가 성공적으로 저장됨"
   
  -#: ../plugin/JME.php:101
  +#: ../plugin/JME.php:110
   msgid "Edit Molecule"
   msgstr "분자 편집"
   
  -#: ../plugin/JME.php:131
  +#: ../plugin/JME.php:140
   msgid "Edit new molecule"
   msgstr "새 분자 편집"
   
  @@ -576,7 +778,7 @@
   msgid "Select keywords for %s"
   msgstr "%s에 대해 키워드를 고르세요"
   
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1245 ../wikilib.php:2644
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1271 ../wikilib.php:2693
   msgid "Use more specific text"
   msgstr "좀 더 자세히 입력하세요"
   
  @@ -613,625 +815,230 @@
   msgid "Slow Slow"
   msgstr "매우 느림"
   
  -#: ../plugin/Navigation.php:19
  -msgid "No Index page found"
  -msgstr "인덱스 페이지가 없습니다"
  +#: ../plugin/login.php:29
  +msgid "Login:"
  +msgstr "로그인:"
   
  -#: ../plugin/OeKaki.php:36
  -msgid "Draw a new picture"
  -msgstr "새 그림 그리기"
  +#: ../plugin/login.php:30
  +msgid "Password:"
  +msgstr "비밀번호:"
   
  -#: ../plugin/OeKaki.php:118
  -msgid "Create new picture"
  -msgstr "새 그림 만들기"
  +#: ../plugin/login.php:31
  +msgid "Join"
  +msgstr "가입"
   
  -#: ../plugin/OeKaki.php:127
  -msgid "Edit Image"
  -msgstr "그림 고치기"
  +#: ../plugin/login.php:49 ../plugin/minilogin.php:25
  +msgid "Logout"
  +msgstr "나가기"
   
  -#: ../plugin/PluginInfo.php:29
  -#, c-format
  -msgid "Total %s plugin activated."
  -msgstr "총 %d 개의 플러그인이 활성화됨"
  +#: ../plugin/login.php:50 ../plugin/minilogin.php:24 ../locale/dummy.php:3
  +msgid "UserPreferences"
  +msgstr "환경설정"
   
  -#: ../plugin/PluginInfo.php:43 ../plugin/admin.php:136
  -msgid "Description"
  -msgstr "설명"
  +#: ../plugin/man_get.php:17
  +msgid "No manpage selected"
  +msgstr "맨페이지가 선택되지 않았습니다"
   
  -#: ../plugin/PluginInfo.php:47
  -msgid "Version"
  -msgstr "버전"
  +#: ../plugin/man_get.php:43
  +msgid "No manpage found"
  +msgstr "Manpage가 없습니다"
   
  -#: ../plugin/PluginInfo.php:49 ../plugin/admin.php:139
  -msgid "Author"
  -msgstr "저자"
  +#: ../plugin/man_get.php:122
  +msgid "Edit man page"
  +msgstr "man 페이지 고치기"
   
  -#: ../plugin/PluginInfo.php:51 ../plugin/admin.php:141
  -msgid "License"
  -msgstr "저작권"
  +#: ../plugin/minilogin.php:18 ../wikilib.php:2081
  +msgid "Login or Join"
  +msgstr "로그인 혹은 가입"
   
  -#: ../plugin/PluginInfo.php:53 ../plugin/admin.php:143
  -msgid "Depend"
  -msgstr "의존성"
  +#: ../plugin/minilogin.php:26
  +#, c-format
  +msgid "%s or %s"
  +msgstr "%s 혹은 %s"
   
  -#: ../plugin/PluginInfo.php:57 ../plugin/admin.php:147
  -msgid "URL"
  -msgstr ""
  +#: ../plugin/msgfmt.php:75 ../plugin/msgfmt.php:153
  +#, c-format
  +msgid "Translation of %s"
  +msgstr "%s에대한 번역"
   
  -#: ../plugin/Rating.php:58
  -msgid "Awful!"
  -msgstr "최악!"
  +#: ../plugin/msgfmt.php:84
  +msgid "Translations are successfully updated."
  +msgstr "번역이 성공적으로 저장되었습니다"
   
  -#: ../plugin/Rating.php:59
  -msgid "Not the worst ever."
  -msgstr "이보다 나쁠수 없음"
  +#: ../plugin/msgfmt.php:86
  +msgid "Fail to save translations."
  +msgstr "번역 저장을 실패했습니다"
   
  -#: ../plugin/Rating.php:60
  -msgid "Not bad!"
  -msgstr "나쁘지 않음!"
  +#: ../plugin/msgtrans.php:23 ../plugin/userinfo.php:86
  +#, c-format
  +msgid "You are not allowed to \"%s\" !"
  +msgstr "'%s'은(는) 허락되지 않았습니다"
   
  -#: ../plugin/Rating.php:61
  -msgid "Useful!"
  -msgstr "유용함"
  +#: ../plugin/msgtrans.php:143
  +msgid "Local translation files are successfully translated !\n"
  +msgstr "번역이 성공적으로 갱신되었습니다\n"
   
  -#: ../plugin/Rating.php:62
  -msgid "Very Gooood!"
  -msgstr "매우 좋음"
  +#: ../plugin/Navigation.php:19
  +msgid "No Index page found"
  +msgstr "인덱스 페이지가 없습니다"
   
  -#: ../plugin/Rating.php:84 ../plugin/Vote.php:67
  -#: ../plugin/security/community.php:26 ../plugin/security/community.php:36
  -#: ../plugin/security/community.php:46 ../plugin/security/community.php:61
  -#: ../plugin/security/mustlogin.php:29 ../plugin/security/mustlogin.php:40
  -#: ../plugin/security/mustlogin.php:51 ../plugin/security/mustlogin.php:67
  -#: ../plugin/security/needtologin.php:29 ../plugin/security/needtologin.php:40
  -#: ../plugin/security/needtologin.php:51 ../plugin/security/userbased.php:62
  -msgid "Please Login or make your ID on this Wiki ;)"
  -msgstr "로그인하거나 ID를 만드세요 ;)"
  +#: ../plugin/new.php:13 ../plugin/new.php:28
  +msgid "Create a new page"
  +msgstr "페이지 만들기"
   
  -#: ../plugin/Rating.php:188
  -msgid "Invalid rating request !"
  -msgstr ""
  +#: ../plugin/new.php:26
  +msgid "Page Name"
  +msgstr "페이지 이름"
   
  -#: ../plugin/Rating.php:203
  -msgid "Rating successfully !"
  -msgstr ""
  +#: ../plugin/new.php:27
  +msgid "Normalize this page name"
  +msgstr "페이지이름 정규화하기"
   
  -#: ../plugin/RecentChanges.php:114
  -msgid "Show changes for "
  -msgstr ""
  +#: ../plugin/OeKaki.php:36
  +msgid "Draw a new picture"
  +msgstr "새 그림 그리기"
   
  -#: ../plugin/RecentChanges.php:119
  -msgid "days ago"
  -msgstr "몇일 전"
  +#: ../plugin/OeKaki.php:118
  +msgid "Create new picture"
  +msgstr "새 그림 만들기"
   
  -#: ../plugin/RecentChanges.php:206
  -msgid "set bookmark"
  -msgstr "북마크"
  +#: ../plugin/OeKaki.php:127
  +msgid "Edit Image"
  +msgstr "그림 고치기"
   
  -#: ../plugin/RecentChanges.php:241 ../plugin/pagelist.php:107
  -#: ../plugin/pagelist.php:124
  +#: ../plugin/pagelist.php:109 ../plugin/pagelist.php:126
  +#: ../plugin/RecentChanges.php:212
   #, c-format
   msgid "[%sh %sm ago]"
   msgstr "[%s시간 %s분 전]"
   
  -#: ../plugin/SWFUpload.php:118
  -msgid "Files..."
  -msgstr "파일..."
  -
  -#: ../plugin/SWFUpload.php:119
  -msgid "Upload"
  -msgstr "올리기"
  -
  -#: ../plugin/SlideShow.php:28
  -msgid "No page found"
  -msgstr "페이지가 없습니다"
  -
  -#: ../plugin/SlideShow.php:102
  -msgid "Start:"
  -msgstr "시작:"
  -
  -#: ../plugin/SlideShow.php:111
  -msgid "End:"
  -msgstr "끝:"
  +#: ../plugin/pageview.php:70
  +msgid "First:"
  +msgstr ""
   
  -#: ../plugin/SlideShow.php:121 ../plugin/pageview.php:75
  +#: ../plugin/pageview.php:75 ../plugin/SlideShow.php:121
   msgid "Next:"
   msgstr "다음:"
   
  -#: ../plugin/SlideShow.php:131
  -msgid "Prev:"
  -msgstr "이전:"
  -
  -#: ../plugin/SlideShow.php:138
  -msgid "Return"
  -msgstr "돌아가기"
  -
  -#: ../plugin/SystemInfo.php:16
  -msgid "Number of Pages"
  -msgstr "페이지 개수"
  -
  -#: ../plugin/SystemInfo.php:17
  -msgid "HTTP Server Version"
  -msgstr "HTTP 서버 버전"
  -
  -#: ../plugin/SystemInfo.php:18
  -msgid "MoniWiki Version"
  -msgstr "모니위키 버전"
  -
  -#: ../plugin/SystemInfo.php:19
  -msgid "PHP Version"
  -msgstr "PHP 버전"
  -
  -#: ../plugin/Tour.php:57
  -msgid "BackLinks"
  -msgstr "역링크"
  -
  -#: ../plugin/Tour.php:61
  -msgid "Keywords"
  -msgstr "키워드"
  -
  -#: ../plugin/Tour.php:70
  +#: ../plugin/PluginInfo.php:29
   #, c-format
  -msgid " from %s"
  -msgstr " %s에 대한"
  +msgid "Total %s plugin activated."
  +msgstr "총 %d 개의 플러그인이 활성화됨"
   
  -#: ../plugin/Tour.php:73
  +#: ../plugin/PluginInfo.php:34
   #, c-format
  -msgid "%s Tour %s"
  -msgstr "%2$s %1$s 여행"
  -
  -#: ../plugin/Tour.php:121
  -msgid "links"
  -msgstr "연결"
  -
  -#: ../plugin/Tour.php:123
  -msgid "deeper"
  -msgstr "깊게"
  +msgid "%s is internal plugin."
  +msgstr "%s은(는) 내부 플러그인입니다."
   
  -#: ../plugin/Tour.php:124
  +#: ../plugin/PluginInfo.php:36
   #, c-format
  -msgid "More %s or more %s"
  -msgstr "더 많은 %s 혹은 %s"
  +msgid "%s plugin is not found."
  +msgstr "%s 플러그인을 찾을 수 없습니다"
   
  -#: ../plugin/Tour.php:139
  -#, c-format
  -msgid "Total %d related keywords"
  -msgstr "%d 개의 연관된 키워드"
  +#: ../plugin/PluginInfo.php:54
  +msgid "Version"
  +msgstr "버전"
   
  -#: ../plugin/Tour.php:142
  +#: ../plugin/print.php:24
   #, c-format
  -msgid "Total %d related pages"
  -msgstr "%d 개의 연관된 페이지"
  +msgid "Retrieved from %s"
  +msgstr ""
   
  -#: ../plugin/TwinPages.php:13
  +#: ../plugin/print.php:29
   #, c-format
  -msgid "TwinPages of %s"
  -msgstr "%s의 쌍둥이 페이지"
  -
  -#: ../plugin/TwinPages.php:19 ../wiki.php:5282
  -msgid "See [TwinPages]: "
  +msgid "last modified %s %s"
   msgstr ""
   
  -#: ../plugin/TwinPages.php:21
  -msgid "No TwinPages found."
  -msgstr "쌍둥이 페이지가 없습니다"
  +#: ../plugin/processor/blog.php:99
  +msgid "raw"
  +msgstr ""
   
  -#: ../plugin/UploadFile.php:147 ../plugin/UploadFile.php:161
  -#, c-format
  -msgid "The %s type of %s is not allowed to upload"
  -msgstr "%s의 %s 형식은 업로드가 허락되지 않습니다"
  +#: ../plugin/processor/bts.php:178
  +msgid "Save Changes"
  +msgstr "변경 저장"
   
  -#: ../plugin/UploadFile.php:163
  -#, c-format
  -msgid "%s is not allowed to upload"
  -msgstr "%s은(는) 업로드가 허락되지 않습니다"
  +#: ../plugin/processor/monimarkup.php:485 ../wiki.php:3836
  +msgid "edit"
  +msgstr "편집"
   
  -#: ../plugin/UploadFile.php:218
  -#, c-format
  -msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
  -msgstr "파일 확장자를 \"%s\"에서 \"%s\"(으)로 바꿀 수 없음."
  +#: ../plugin/quicklinks.php:16 ../plugin/scrap.php:35
  +#: ../plugin/subscribe.php:19 ../plugin/subscribe.php:55
  +msgid "Please login or make your ID."
  +msgstr "로그인하거나 ID를 만드세요"
   
  -#: ../plugin/UploadFile.php:251
  -msgid "Please check your php.ini setting"
  -msgstr "php.ini 세팅을 확인해보시기 바랍니다"
  -
  -#: ../plugin/UploadFile.php:261
  -#, c-format
  -msgid "File \"%s\" is uploaded successfully"
  -msgstr "\"%s\"파일이 성공적으로 올라갔습니다"
  -
  -#: ../plugin/UploadFile.php:300
  -msgid "Files are uploaded successfully"
  -msgstr "파일이 성공적으로 올라갔습니다."
  -
  -#: ../plugin/UploadFile.php:344
  -msgid "Replace original file"
  -msgstr "원본 파일 교체"
  -
  -#: ../plugin/UploadFile.php:345
  -msgid "Rename if it already exist"
  -msgstr "이미 있을경우 이름 바꿈"
  -
  -#: ../plugin/UploadFile.php:350 ../plugin/rename.php:69
  -msgid "Rename"
  -msgstr "이름바꾸기"
  -
  -#: ../plugin/UploadFile.php:358
  -#, c-format
  -msgid "or %s."
  -msgstr "혹은 %s."
  -
  -#: ../plugin/UploadFile.php:358
  -msgid "Upload files"
  -msgstr "파일 올리기"
  -
  -#: ../plugin/UploadedFiles.php:271
  -msgid "File name"
  -msgstr "파일 이름"
  -
  -#: ../plugin/UploadedFiles.php:272
  -msgid "Size"
  -msgstr "크기"
  -
  -#: ../plugin/UploadedFiles.php:273
  -msgid "Date"
  -msgstr "날짜"
  -
  -#: ../plugin/UploadedFiles.php:316
  -msgid "Next page &raquo;"
  -msgstr "다음 페이지 &raquo;"
  -
  -#: ../plugin/UploadedFiles.php:318
  -msgid "&laquo; First page"
  -msgstr "&laquo; 첫 페이지"
  -
  -#: ../plugin/UploadedFiles.php:409
  -#, c-format
  -msgid "Total %d files"
  -msgstr "총 %d 개 파일"
  -
  -#: ../plugin/UploadedFiles.php:414 ../plugin/rcsimport.php:32
  -#: ../plugin/rename.php:77 ../plugin/revert.php:82 ../plugin/userinfo.php:37
  -#: ../wikilib.php:1084 ../wikilib.php:1974
  -msgid "Password"
  -msgstr "비밀번호"
  -
  -#: ../plugin/UploadedFiles.php:415 ../wikilib.php:1062
  -msgid "Delete selected files"
  -msgstr "선택된 파일 지우기"
  -
  -#: ../plugin/VisualTour.php:118
  -msgid "Normal"
  -msgstr "보통"
  -
  -#: ../plugin/VisualTour.php:120
  -msgid "Wider"
  -msgstr "넓게"
  -
  -#: ../plugin/VisualTour.php:122
  -msgid "Deeper"
  -msgstr "깊게"
  -
  -#: ../plugin/Vote.php:113
  -msgid "Voted successfully"
  -msgstr "투표가 성공되었습니다"
  -
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2390
  -msgid "Others"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:15
  -msgid "ACL is not enabled on this Wiki"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:21
  -msgid "Your ACL Info"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:23
  -msgid "You are wiki owner"
  -msgstr "위키 소유자입니다"
  -
  -#: ../plugin/aclinfo.php:25
  -msgid "You are wiki master"
  -msgstr "위키 관리자입니다"
  -
  -#: ../plugin/aclinfo.php:27
  -msgid "Allowed actions"
  -msgstr "허락된 액션"
  -
  -#: ../plugin/aclinfo.php:32
  -msgid "Denied actions"
  -msgstr "거부된 액션"
  -
  -#: ../plugin/aclinfo.php:38
  -msgid "Protected actions"
  -msgstr "제한된 액션"
  -
  -#: ../plugin/admin.php:191
  -msgid "Enabled plugins"
  -msgstr "활성화된 플러그인"
  -
  -#: ../plugin/admin.php:193
  -msgid "Disabled plugins"
  -msgstr "비활성화된 플러그인"
  -
  -#: ../plugin/admin.php:201
  -msgid "Enabled processors"
  -msgstr "활성화된 프로세서"
  -
  -#: ../plugin/admin.php:203
  -msgid "Disabled processors"
  -msgstr "비활성화된 프로세서"
  -
  -#: ../plugin/admin.php:206
  -msgid "Plugin/Processor settings are updated"
  -msgstr "플러그인/프로세서 세팅이 갱신됨"
  -
  -#: ../plugin/admin.php:212
  -msgid "Enable/disable plugins and processors"
  -msgstr "플러그인과 프로세서 활성화/비활성화"
  -
  -#: ../plugin/atom.php:64 ../plugin/rss_rc.php:62
  -msgid "show changes"
  -msgstr "바뀐점 보기"
  -
  -#: ../plugin/backup.php:42
  -msgid "Your wiki is backuped successfully"
  -msgstr "백업이 성공적으로 완료되었습니다"
  -
  -#: ../plugin/backup.php:49
  -msgid "Backup failed !"
  -msgstr "백업 실패 !"
  -
  -#: ../plugin/backup.php:54
  -msgid "Did you want to Backup your wiki ?"
  -msgstr "위키를 백업하시겠습니까 ?"
  -
  -#: ../plugin/bbs.php:493
  -msgid "This bbs does not exists yet. Please save this page first"
  -msgstr "현 BBS가 존재하지 않습ㄴ디ㅏ. 먼저 페이지를 저장하세요"
  -
  -#: ../plugin/bbs.php:617
  -msgid "No"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:626 ../plugin/man_get.php:115
  -msgid "Edit"
  -msgstr "고치기"
  -
  -#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1085
  -msgid "Delete"
  -msgstr "지우기"
  -
  -#: ../plugin/bbs.php:657
  -msgid "Please check article numbers."
  -msgstr "글번호를 확인해 주세요"
  -
  -#: ../plugin/bbs.php:737
  -msgid "More"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:782
  -msgid "New"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:784
  -msgid "Read"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:800
  -#, c-format
  -msgid "Total %s articles."
  -msgstr "총 %d 개의 글"
  -
  -#: ../plugin/bbs.php:836
  -#, c-format
  -msgid "Your IP address is not allowed to %s at this BBS"
  -msgstr "IP 주소가 '%s' BBS에서 허락되지 않았습니다."
  -
  -#: ../plugin/bbs.php:890
  -msgid "Successfully deleted."
  -msgstr "성공적으로 지워졌음."
  -
  -#: ../plugin/bbs.php:922
  -msgid "Fail to post comment."
  -msgstr "댓글 등록 실패."
  -
  -#: ../plugin/bbs.php:932
  -#, c-format
  -msgid "The article %s will be deleted."
  -msgstr "게시글 %s(이)가 지워질 것입니다."
  -
  -#: ../plugin/bbs.php:974
  -msgid "Invalid HomePage address."
  -msgstr "잘못된 홈페이지 주소."
  -
  -#: ../plugin/bbs.php:987
  -msgid "No Name error."
  -msgstr "이름이 없습ㄴ다."
  -
  -#: ../plugin/bbs.php:997
  -msgid "No Subject error."
  -msgstr "제목이 없습니다."
  -
  -#: ../plugin/bbs.php:1025
  -msgid "New post added successfully"
  -msgstr "새글이 성공적으로 등록되었습니다."
  -
  -#: ../plugin/cacheadmin.php:105
  -msgid "You are not WikiMaster!!"
  -msgstr "위키관리자가 아닙니다!!"
  -
  -#: ../plugin/cacheadmin.php:120
  -msgid "Clear cache dirs"
  -msgstr "캐쉬 디렉토리 지우기"
  -
  -#: ../plugin/chat.php:36
  -msgid "No messages"
  -msgstr "메시지 없음"
  -
  -#: ../plugin/chmod.php:18
  -#, c-format
  -msgid "Permission of \"%s\" changed !"
  -msgstr ""
  -
  -#: ../plugin/chmod.php:24
  -#, c-format
  -msgid "Fail to chmod \"%s\" !"
  -msgstr ""
  -
  -#: ../plugin/chmod.php:35
  -#, c-format
  -msgid "Change permission of \"%s\""
  -msgstr ""
  -
  -#: ../plugin/css.php:33 ../plugin/css.php:41
  -msgid "Back to UserPreferences"
  +#: ../plugin/quicklinks.php:22 ../plugin/scrap.php:38
  +#: ../plugin/subscribe.php:61
  +msgid "Goto UserPreferences"
   msgstr "UserPreferences로 가기"
   
  -#: ../plugin/css.php:67
  -msgid "CSS disabled !"
  -msgstr ""
  -
  -#: ../plugin/format.php:17
  -msgid "It is a XML format !"
  -msgstr ""
  -
  -#: ../plugin/html2pdf.php:30
  -msgid "The TCPDF class not found!"
  -msgstr "TCPDF 클래스 찾을 수 없음!"
  -
  -#: ../plugin/login.php:29
  -msgid "Login:"
  -msgstr "로그인:"
  -
  -#: ../plugin/login.php:30
  -msgid "Password:"
  -msgstr "비밀번호:"
  -
  -#: ../plugin/login.php:31
  -msgid "Join"
  -msgstr "가입"
  -
  -#: ../plugin/login.php:47 ../plugin/minilogin.php:25
  -msgid "Logout"
  -msgstr "나가기"
  -
  -#: ../plugin/login.php:48 ../plugin/minilogin.php:24 ../locale/dummy.php:3
  -msgid "UserPreferences"
  -msgstr "환경설정"
  -
  -#: ../plugin/man_get.php:17
  -msgid "No manpage selected"
  -msgstr "맨페이지가 선택되지 않았습니다"
  -
  -#: ../plugin/man_get.php:43
  -msgid "No manpage found"
  -msgstr "Manpage가 없습니다"
  -
  -#: ../plugin/minilogin.php:18 ../wikilib.php:2050
  -msgid "Login or Join"
  -msgstr "로그인 혹은 가입"
  -
  -#: ../plugin/minilogin.php:26
  -#, c-format
  -msgid "%s or %s"
  -msgstr "%s 혹은 %s"
  -
  -#: ../plugin/msgfmt.php:75 ../plugin/msgfmt.php:153
  -#, c-format
  -msgid "Translation of %s"
  -msgstr "%s에대한 번역"
  -
  -#: ../plugin/msgfmt.php:84
  -msgid "Translations are successfully updated."
  -msgstr "번역이 성공적으로 저장되었습니다"
  -
  -#: ../plugin/msgfmt.php:86
  -msgid "Fail to save translations."
  -msgstr "번역 저장을 실패했습니다"
  -
  -#: ../plugin/msgtrans.php:23 ../plugin/userinfo.php:86
  -#, c-format
  -msgid "You are not allowed to \"%s\" !"
  -msgstr "'%s'은(는) 허락되지 않았습니다"
  -
  -#: ../plugin/msgtrans.php:143
  -msgid "Local translation files are successfully translated !\n"
  -msgstr "번역이 성공적으로 갱신되었습니다\n"
  -
  -#: ../plugin/new.php:13 ../plugin/new.php:28
  -msgid "Create a new page"
  -msgstr "페이지 만들기"
  -
  -#: ../plugin/new.php:26
  -msgid "Page Name"
  -msgstr "페이지 이름"
  -
  -#: ../plugin/new.php:27
  -msgid "Normalize this page name"
  -msgstr "페이지이름 정규화하기"
  -
  -#: ../plugin/pageview.php:70
  -msgid "First:"
  +#: ../plugin/quicklinks.php:23
  +msgid ""
  +"If you want to custumize your quicklinks, just make your ID and register "
  +"your email address in the UserPreferences."
   msgstr ""
   
  -#: ../plugin/print.php:24
  -#, c-format
  -msgid "Retrieved from %s"
  -msgstr ""
  +#: ../plugin/quicklinks.php:38
  +msgid "QucikLinks are updated."
  +msgstr "바로가기가 갱신되었습니다."
   
  -#: ../plugin/print.php:29
  -#, c-format
  -msgid "last modified %s %s"
  -msgstr ""
  +#: ../plugin/quicklinks.php:50
  +msgid "Do you want to customize your quicklinks ?"
  +msgstr "바로가기를 바꾸고 싶으신가요?"
   
  -#: ../plugin/processor/blog.php:99
  -msgid "raw"
  -msgstr ""
  +#: ../plugin/Rating.php:58
  +msgid "Awful!"
  +msgstr "최악!"
   
  -#: ../plugin/processor/bts.php:178
  -msgid "Save Changes"
  -msgstr "변경 저장"
  +#: ../plugin/Rating.php:59
  +msgid "Not the worst ever."
  +msgstr "이보다 나쁠수 없음"
   
  -#: ../plugin/processor/monimarkup.php:489 ../wiki.php:3827
  -msgid "edit"
  -msgstr "편집"
  +#: ../plugin/Rating.php:60
  +msgid "Not bad!"
  +msgstr "나쁘지 않음!"
   
  -#: ../plugin/processor/vim.php:75
  -msgid "Toggle line numbers"
  -msgstr "줄번호 토글"
  +#: ../plugin/Rating.php:61
  +msgid "Useful!"
  +msgstr "유용함"
   
  -#: ../plugin/quicklinks.php:16 ../plugin/scrap.php:33
  -#: ../plugin/subscribe.php:19 ../plugin/subscribe.php:55
  -msgid "Please login or make your ID."
  -msgstr "로그인하거나 ID를 만드세요"
  +#: ../plugin/Rating.php:62
  +msgid "Very Gooood!"
  +msgstr "매우 좋음"
   
  -#: ../plugin/quicklinks.php:22 ../plugin/scrap.php:36
  -#: ../plugin/subscribe.php:61
  -msgid "Goto UserPreferences"
  -msgstr "UserPreferences로 가기"
  +#: ../plugin/Rating.php:84 ../plugin/security/community.php:26
  +#: ../plugin/security/community.php:36 ../plugin/security/community.php:46
  +#: ../plugin/security/community.php:61 ../plugin/security/mustlogin.php:29
  +#: ../plugin/security/mustlogin.php:40 ../plugin/security/mustlogin.php:51
  +#: ../plugin/security/mustlogin.php:67 ../plugin/security/needtologin.php:29
  +#: ../plugin/security/needtologin.php:40 ../plugin/security/needtologin.php:51
  +#: ../plugin/security/userbased.php:62 ../plugin/Vote.php:67
  +msgid "Please Login or make your ID on this Wiki ;)"
  +msgstr "로그인하거나 ID를 만드세요 ;)"
   
  -#: ../plugin/quicklinks.php:23
  -msgid ""
  -"If you want to custumize your quicklinks, just make your ID and register "
  -"your email address in the UserPreferences."
  +#: ../plugin/Rating.php:188
  +msgid "Invalid rating request !"
   msgstr ""
   
  -#: ../plugin/quicklinks.php:38
  -msgid "QucikLinks are updated."
  -msgstr "바로가기가 갱신되었습니다."
  -
  -#: ../plugin/quicklinks.php:50
  -msgid "Do you want to customize your quicklinks ?"
  -msgstr "바로가기를 바꾸고 싶으신가요?"
  +#: ../plugin/Rating.php:203
  +msgid "Rating successfully !"
  +msgstr ""
   
   #: ../plugin/rawblog.php:63 ../plugin/rawblog.php:73
   #, c-format
   msgid "Delete Blog entry \"%s\""
   msgstr "\"%s\"에서 블로그 항목 지우기"
   
  +#: ../plugin/rcsimport.php:32 ../plugin/rcsimport.php:88
  +#: ../plugin/rename.php:77 ../plugin/revert.php:82
  +#: ../plugin/UploadedFiles.php:429 ../plugin/userinfo.php:37
  +#: ../wikilib.php:1110 ../wikilib.php:2000
  +msgid "Password"
  +msgstr "비밀번호"
  +
  +#: ../plugin/rcsimport.php:76
  +msgid "Page name"
  +msgstr "페이지 이름"
  +
   #: ../plugin/rcs.php:13
   #, c-format
   msgid "%s does not support rcs options."
  @@ -1275,6 +1082,22 @@
   msgid "BlogChanges at %s"
   msgstr ""
   
  +#: ../plugin/RecentChanges.php:124
  +msgid "Show changes for "
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:129
  +msgid "days ago"
  +msgstr "몇일 전"
  +
  +#: ../plugin/RecentChanges.php:230
  +msgid "set bookmark"
  +msgstr "북마크"
  +
  +#: ../plugin/referer.php:139
  +msgid "Referer history"
  +msgstr ""
  +
   #: ../plugin/rename.php:19
   #, c-format
   msgid "\"%s\" is renamed !"
  @@ -1308,6 +1131,10 @@
   msgid "New name:"
   msgstr "새이름:"
   
  +#: ../plugin/rename.php:69 ../plugin/UploadFile.php:350
  +msgid "Rename"
  +msgstr "이름바꾸기"
  +
   #: ../plugin/rename.php:74
   msgid "Rename and fix Backlinks"
   msgstr "이름 바꾸고 그 역링크 수정"
  @@ -1316,7 +1143,7 @@
   msgid "Only WikiMaster can rename this page"
   msgstr "위키관리자만이 페이지 이름을 바꿀 수 있습니다"
   
  -#: ../plugin/rename.php:79 ../wikilib.php:1130
  +#: ../plugin/rename.php:79 ../wikilib.php:1156
   msgid "with revision history"
   msgstr "버전 히스토리와 함께"
   
  @@ -1358,7 +1185,7 @@
   msgid "Select a tarball file to restore"
   msgstr "Restore하기 위한 tarball 파일을 고르세요"
   
  -#: ../plugin/revert.php:23 ../wiki.php:5298
  +#: ../plugin/revert.php:23 ../wiki.php:5336
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr "%s의 옛날 버전"
  @@ -1411,28 +1238,42 @@
   msgid "Scrap lists updated."
   msgstr "스크랩 목록이 갱신되었습니다"
   
  -#: ../plugin/scrap.php:65
  +#: ../plugin/scrap.php:61
  +#, c-format
  +msgid "\"%s\" is unscrapped."
  +msgstr "\"%s\" 스크랩이 취소 되었습니다."
  +
  +#: ../plugin/scrap.php:64
  +#, c-format
  +msgid "\"%s\" is scrapped."
  +msgstr "%s(이)가 스크랩되었습니다."
  +
  +#: ../plugin/scrap.php:89
   #, c-format
   msgid "Do you want to scrap \"%s\" ?"
   msgstr "\"%s\"을(를) 스크랩하시겠습니까 ?"
   
  -#: ../plugin/security/acl.php:146
  +#: ../plugin/scrap.php:92
  +msgid "Scrapped pages"
  +msgstr "스크랩 목록"
  +
  +#: ../plugin/security/acl.php:141
   msgid "ACL groups"
  -msgstr ""
  +msgstr "ACL 그룹"
   
  -#: ../plugin/security/acl.php:149
  +#: ../plugin/security/acl.php:144
   msgid "Allowed ACL actions"
   msgstr "허락된 ACL 액션"
   
  -#: ../plugin/security/acl.php:154
  +#: ../plugin/security/acl.php:149
   msgid "Denied ACL actions"
   msgstr "거부된 ACL 액션"
   
  -#: ../plugin/security/acl.php:159
  +#: ../plugin/security/acl.php:154
   msgid "Protected ACL actions"
   msgstr "제한된 ACL 액션"
   
  -#: ../plugin/security/acl.php:222 ../plugin/security/community.php:25
  +#: ../plugin/security/acl.php:217 ../plugin/security/community.php:25
   #: ../plugin/security/community.php:35 ../plugin/security/community.php:45
   #: ../plugin/security/mustlogin.php:28 ../plugin/security/mustlogin.php:39
   #: ../plugin/security/mustlogin.php:50 ../plugin/security/needtologin.php:28
  @@ -1441,7 +1282,7 @@
   msgid "You are not allowed to '%s' on this page"
   msgstr "'%s'는 허락되지 않은 액션입니다."
   
  -#: ../plugin/security/acl.php:223
  +#: ../plugin/security/acl.php:218
   msgid "Please contact WikiMasters :b"
   msgstr "위키 관리자와 연락해주세요 :b"
   
  @@ -1489,6 +1330,26 @@
   msgid "Trackback sent"
   msgstr "트랙백"
   
  +#: ../plugin/SlideShow.php:28
  +msgid "No page found"
  +msgstr "페이지가 없습니다"
  +
  +#: ../plugin/SlideShow.php:102
  +msgid "Start:"
  +msgstr "시작:"
  +
  +#: ../plugin/SlideShow.php:111
  +msgid "End:"
  +msgstr "끝:"
  +
  +#: ../plugin/SlideShow.php:131
  +msgid "Prev:"
  +msgstr "이전:"
  +
  +#: ../plugin/SlideShow.php:138
  +msgid "Return"
  +msgstr "돌아가기"
  +
   #: ../plugin/subscribe.php:24 ../plugin/subscribe.php:28
   msgid "You did'nt subscribed any pages yet."
   msgstr "아직 구독중인 페이지가 없습니다."
  @@ -1539,6 +1400,34 @@
   msgid "Subscribed pages"
   msgstr "구독 목록"
   
  +#: ../plugin/SWFUpload.php:136
  +msgid "Files..."
  +msgstr "파일..."
  +
  +#: ../plugin/SWFUpload.php:137
  +msgid "Upload"
  +msgstr "올리기"
  +
  +#: ../plugin/SWFUpload.php:138
  +msgid "Cancel All files"
  +msgstr "모두 취소"
  +
  +#: ../plugin/SystemInfo.php:16
  +msgid "Number of Pages"
  +msgstr "페이지 개수"
  +
  +#: ../plugin/SystemInfo.php:17
  +msgid "HTTP Server Version"
  +msgstr "HTTP 서버 버전"
  +
  +#: ../plugin/SystemInfo.php:18
  +msgid "MoniWiki Version"
  +msgstr "모니위키 버전"
  +
  +#: ../plugin/SystemInfo.php:19
  +msgid "PHP Version"
  +msgstr "PHP 버전"
  +
   #: ../plugin/theme.php:29
   msgid "Theme cleared. Goto UserPreferences."
   msgstr "테마가 지워짐. UserPreferences로 가기"
  @@ -1563,6 +1452,47 @@
   msgid "Invalid use of ticket"
   msgstr ""
   
  +#: ../plugin/Tour.php:57
  +msgid "BackLinks"
  +msgstr "역링크"
  +
  +#: ../plugin/Tour.php:61
  +msgid "Keywords"
  +msgstr "키워드"
  +
  +#: ../plugin/Tour.php:70
  +#, c-format
  +msgid " from %s"
  +msgstr " %s에 대한"
  +
  +#: ../plugin/Tour.php:73
  +#, c-format
  +msgid "%s Tour %s"
  +msgstr "%2$s %1$s 여행"
  +
  +#: ../plugin/Tour.php:121
  +msgid "links"
  +msgstr "연결"
  +
  +#: ../plugin/Tour.php:123
  +msgid "deeper"
  +msgstr "깊게"
  +
  +#: ../plugin/Tour.php:124
  +#, c-format
  +msgid "More %s or more %s"
  +msgstr "더 많은 %s 혹은 %s"
  +
  +#: ../plugin/Tour.php:139
  +#, c-format
  +msgid "Total %d related keywords"
  +msgstr "%d 개의 연관된 키워드"
  +
  +#: ../plugin/Tour.php:142
  +#, c-format
  +msgid "Total %d related pages"
  +msgstr "%d 개의 연관된 페이지"
  +
   #: ../plugin/trackback.php:53
   msgid "TrackBack is not activated !"
   msgstr "TrackBack이 활성화되지 않았습니다 !"
  @@ -1589,6 +1519,93 @@
   msgid "No TrackBack entry found for %s"
   msgstr "%s에 대한 트랙백 항목을 찾을 수 없음"
   
  +#: ../plugin/TwinPages.php:13
  +#, c-format
  +msgid "TwinPages of %s"
  +msgstr "%s의 쌍둥이 페이지"
  +
  +#: ../plugin/TwinPages.php:19 ../wiki.php:5320
  +msgid "See [TwinPages]: "
  +msgstr ""
  +
  +#: ../plugin/TwinPages.php:21
  +msgid "No TwinPages found."
  +msgstr "쌍둥이 페이지가 없습니다"
  +
  +#: ../plugin/UploadedFiles.php:280
  +msgid "File name"
  +msgstr "파일 이름"
  +
  +#: ../plugin/UploadedFiles.php:281
  +msgid "Size"
  +msgstr "크기"
  +
  +#: ../plugin/UploadedFiles.php:282
  +msgid "Date"
  +msgstr "날짜"
  +
  +#: ../plugin/UploadedFiles.php:330
  +msgid "Next page &raquo;"
  +msgstr "다음 페이지 &raquo;"
  +
  +#: ../plugin/UploadedFiles.php:332
  +msgid "&laquo; First page"
  +msgstr "&laquo; 첫 페이지"
  +
  +#: ../plugin/UploadedFiles.php:424
  +#, c-format
  +msgid "Total %d files"
  +msgstr "총 %d 개 파일"
  +
  +#: ../plugin/UploadedFiles.php:430 ../wikilib.php:1088
  +msgid "Delete selected files"
  +msgstr "선택된 파일 지우기"
  +
  +#: ../plugin/UploadFile.php:147 ../plugin/UploadFile.php:161
  +#, c-format
  +msgid "The %s type of %s is not allowed to upload"
  +msgstr "%s의 %s 형식은 업로드가 허락되지 않습니다"
  +
  +#: ../plugin/UploadFile.php:163
  +#, c-format
  +msgid "%s is not allowed to upload"
  +msgstr "%s은(는) 업로드가 허락되지 않습니다"
  +
  +#: ../plugin/UploadFile.php:218
  +#, c-format
  +msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
  +msgstr "파일 확장자를 \"%s\"에서 \"%s\"(으)로 바꿀 수 없음."
  +
  +#: ../plugin/UploadFile.php:251
  +msgid "Please check your php.ini setting"
  +msgstr "php.ini 세팅을 확인해보시기 바랍니다"
  +
  +#: ../plugin/UploadFile.php:261
  +#, c-format
  +msgid "File \"%s\" is uploaded successfully"
  +msgstr "\"%s\"파일이 성공적으로 올라갔습니다"
  +
  +#: ../plugin/UploadFile.php:300
  +msgid "Files are uploaded successfully"
  +msgstr "파일이 성공적으로 올라갔습니다."
  +
  +#: ../plugin/UploadFile.php:344
  +msgid "Replace original file"
  +msgstr "원본 파일 교체"
  +
  +#: ../plugin/UploadFile.php:345
  +msgid "Rename if it already exist"
  +msgstr "이미 있을경우 이름 바꿈"
  +
  +#: ../plugin/UploadFile.php:358
  +#, c-format
  +msgid "or %s."
  +msgstr "혹은 %s."
  +
  +#: ../plugin/UploadFile.php:358
  +msgid "Upload files"
  +msgstr "파일 올리기"
  +
   #: ../plugin/userform.php:35 ../plugin/userform.php:38
   msgid "Successfully confirmed"
   msgstr ""
  @@ -1613,198 +1630,198 @@
   msgid "ID does not exists !"
   msgstr "아이디가 존재하지 않습니다 !"
   
  -#: ../plugin/userform.php:82 ../plugin/userform.php:271
  +#: ../plugin/userform.php:82 ../plugin/userform.php:274
   #, c-format
   msgid "Successfully login as '%s'"
   msgstr "성공적으로 '%s'(으)로 로그인되었습니다"
   
  -#: ../plugin/userform.php:89 ../plugin/userform.php:276
  -#: ../plugin/userform.php:319
  +#: ../plugin/userform.php:90 ../plugin/userform.php:279
  +#: ../plugin/userform.php:322
   msgid "Invalid password !"
   msgstr "잘못된 비밀번호 !"
   
  -#: ../plugin/userform.php:93
  +#: ../plugin/userform.php:94
   #, c-format
   msgid "\"%s\" does not exists on this wiki !"
   msgstr "\"%s\"은 이 위에에 없습니다 !"
   
  -#: ../plugin/userform.php:95
  +#: ../plugin/userform.php:96
   msgid "Make new ID on this wiki"
   msgstr "새로운 ID 만들기"
   
  -#: ../plugin/userform.php:101
  +#: ../plugin/userform.php:102
   msgid "Cookie deleted !"
   msgstr "쿠키가 지워졌습니다 !"
   
  -#: ../plugin/userform.php:104 ../wikilib.php:2120
  +#: ../plugin/userform.php:107 ../wikilib.php:2151
   msgid "E-mail new password"
   msgstr "새 비밀번호 받기"
   
  -#: ../plugin/userform.php:149
  +#: ../plugin/userform.php:152
   msgid "New password confirmation"
   msgstr "새 비밀번호 확인"
   
  -#: ../plugin/userform.php:154
  +#: ../plugin/userform.php:157
   msgid "Please confirm your new password"
   msgstr "새 비밀번호를 확인해 주세요"
   
  -#: ../plugin/userform.php:156
  +#: ../plugin/userform.php:159
   #, c-format
   msgid "Your new password is %s"
   msgstr "새 비밀번호는 %s"
   
  -#: ../plugin/userform.php:157 ../plugin/userform.php:263
  +#: ../plugin/userform.php:160 ../plugin/userform.php:266
   msgid "Please change your password later"
   msgstr "비밀번호를 바꿔주세요"
   
  -#: ../plugin/userform.php:161 ../plugin/userform.php:169
  +#: ../plugin/userform.php:164 ../plugin/userform.php:172
   msgid "Fail to e-mail notification !"
   msgstr "이메일 알림 실패 !"
   
  -#: ../plugin/userform.php:164
  +#: ../plugin/userform.php:167
   msgid "New password is sent to your e-mail !"
   msgstr "새 비밀번호가 이메일로 전송되었습니다 !"
   
  -#: ../plugin/userform.php:165
  +#: ../plugin/userform.php:168
   msgid "Please check your e-mail"
   msgstr "이메일을 확인해 주세요"
   
  -#: ../plugin/userform.php:170
  +#: ../plugin/userform.php:173
   msgid "E-mail mismatch !"
   msgstr "이메일이 맞지 않습니다 !"
   
  -#: ../plugin/userform.php:172
  +#: ../plugin/userform.php:175
   msgid "Invalid request"
   msgstr "잘못된 요청 !"
   
  -#: ../plugin/userform.php:173
  +#: ../plugin/userform.php:176
   msgid "Please confirm your e-mail address first !"
   msgstr "이메일 주소를 먼저 확인해 주세요 !"
   
  -#: ../plugin/userform.php:180
  +#: ../plugin/userform.php:183
   msgid "ID and e-mail mismatch !"
   msgstr "아이디와 이메일 주소가 맞지 않습니다 !"
   
  -#: ../plugin/userform.php:182
  +#: ../plugin/userform.php:185
   msgid "Please try again or make a new profile"
   msgstr "이메일 주소 등록을 다시 하세요"
   
  -#: ../plugin/userform.php:222 ../plugin/userform.php:307
  +#: ../plugin/userform.php:225 ../plugin/userform.php:310
   msgid "too short password!"
   msgstr "비밀번호가 짧습니다"
   
  -#: ../plugin/userform.php:223
  +#: ../plugin/userform.php:226
   msgid "mismatch password!"
   msgstr "비밀번호가 맞지 않습니다!"
   
  -#: ../plugin/userform.php:224 ../plugin/userform.php:311
  +#: ../plugin/userform.php:227 ../plugin/userform.php:314
   msgid "not acceptable character found in the password!"
   msgstr ""
   
  -#: ../plugin/userform.php:227
  +#: ../plugin/userform.php:230
   msgid "Your password is too simple to use as a password !"
   msgstr ""
   
  -#: ../plugin/userform.php:233 ../plugin/userform.php:342
  +#: ../plugin/userform.php:236 ../plugin/userform.php:345
   msgid "Your email address is not valid"
   msgstr "이메일 주소가 잘못 되었습니다"
   
  -#: ../plugin/userform.php:238 ../plugin/userform.php:410
  +#: ../plugin/userform.php:241 ../plugin/userform.php:413
   msgid "Fail to register"
   msgstr "등록을 실패했습니다"
   
  -#: ../plugin/userform.php:239 ../plugin/userform.php:411
  +#: ../plugin/userform.php:242 ../plugin/userform.php:414
   msgid "You are not allowed to register on this wiki"
   msgstr "위키 등록이 허락되지 않았습니다"
   
  -#: ../plugin/userform.php:240 ../plugin/userform.php:412 ../wiki.php:5236
  -#: ../wiki.php:5247
  +#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5274
  +#: ../wiki.php:5285
   msgid "Please contact WikiMasters"
   msgstr "위키관리자에게 문의하세요"
   
  -#: ../plugin/userform.php:244
  +#: ../plugin/userform.php:247
   msgid "Successfully added!"
   msgstr ""
   
  -#: ../plugin/userform.php:250
  +#: ../plugin/userform.php:253
   #, c-format
   msgid "Successfully added as '%s'"
   msgstr ""
   
  -#: ../plugin/userform.php:251
  +#: ../plugin/userform.php:254
   msgid "Please check your mailbox"
   msgstr "이메일을 확인해 주세요"
   
  -#: ../plugin/userform.php:258 ../plugin/userform.php:336
  +#: ../plugin/userform.php:261 ../plugin/userform.php:339
   msgid "E-mail confirmation"
   msgstr "이메일 확인"
   
  -#: ../plugin/userform.php:260 ../plugin/userform.php:338
  +#: ../plugin/userform.php:263 ../plugin/userform.php:341
   msgid "Please confirm your email address"
   msgstr "이메일 주소를 확인해 주세요"
   
  -#: ../plugin/userform.php:262
  +#: ../plugin/userform.php:265
   #, c-format
   msgid "Your initial password is %s"
   msgstr ""
   
  -#: ../plugin/userform.php:266
  +#: ../plugin/userform.php:269
   msgid "Confirmation E-mail sent"
   msgstr "확인 이메일이 보내졌습니다"
   
  -#: ../plugin/userform.php:281
  +#: ../plugin/userform.php:284
   msgid "Invalid username !"
   msgstr "잘못된 사용자명 !"
   
  -#: ../plugin/userform.php:309
  +#: ../plugin/userform.php:312
   msgid "mismatch password !"
   msgstr "맞지 않는 비밀번호 !"
   
  -#: ../plugin/userform.php:312 ../plugin/userform.php:320
  +#: ../plugin/userform.php:315 ../plugin/userform.php:323
   msgid "Password is not changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:314
  +#: ../plugin/userform.php:317
   msgid "Password is changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:316
  +#: ../plugin/userform.php:319
   msgid "Password is too simple to use as a password !"
   msgstr "비밀번호로 쓰기에는 너무 짧은 비밀번호입니다 !"
   
  -#: ../plugin/userform.php:340
  +#: ../plugin/userform.php:343
   msgid "E-mail confirmation mail sent"
   msgstr ""
   
  -#: ../plugin/userform.php:351
  +#: ../plugin/userform.php:354
   msgid "Your Nickname already used as ID in this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:356
  +#: ../plugin/userform.php:359
   msgid "Profiles are saved successfully !"
   msgstr "설정이 성공적으로 저장되었습니다 !"
   
  -#: ../plugin/userform.php:386 ../plugin/userform.php:432
  +#: ../plugin/userform.php:382 ../plugin/userform.php:435
   #, c-format
   msgid "Authentication request was failed: %s"
   msgstr ""
   
  -#: ../plugin/userform.php:405
  +#: ../plugin/userform.php:408
   #, c-format
   msgid "Successfully login as '%s' via OpenID."
   msgstr "성공적으로 오픈ID '%s'(으)로 로그인되었습니다"
   
  -#: ../plugin/userform.php:419
  +#: ../plugin/userform.php:422
   #, c-format
   msgid "Your Nickname %s already used as ID in this Wiki."
   msgstr ""
   
  -#: ../plugin/userform.php:427
  +#: ../plugin/userform.php:430
   #, c-format
   msgid "OpenID Authentication successful and saved as %s."
   msgstr ""
   
  -#: ../plugin/userform.php:434
  +#: ../plugin/userform.php:437
   msgid "Invalid OpenID Authentication request"
   msgstr ""
   
  @@ -1827,6 +1844,22 @@
   msgid "User \"%s\" are deleted !"
   msgstr "사용자 \"%s\"(이)가 지워짐 !"
   
  +#: ../plugin/VisualTour.php:133
  +msgid "Normal"
  +msgstr "보통"
  +
  +#: ../plugin/VisualTour.php:135
  +msgid "Wider"
  +msgstr "넓게"
  +
  +#: ../plugin/VisualTour.php:137
  +msgid "Deeper"
  +msgstr "깊게"
  +
  +#: ../plugin/Vote.php:113
  +msgid "Voted successfully"
  +msgstr "투표가 성공되었습니다"
  +
   #: ../plugin/whois.php:119
   #, c-format
   msgid "Could not connect to %s server"
  @@ -1837,140 +1870,144 @@
   msgid "Whois search result for %s"
   msgstr "%s에 대한 Whois 서치 결과"
   
  -#: ../wiki.php:1236
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2439
  +msgid "Others"
  +msgstr ""
  +
  +#: ../wiki.php:1238
   #, c-format
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1656
  +#: ../wiki.php:1658
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
  -#: ../wiki.php:1666
  +#: ../wiki.php:1668
   msgid "File does not exist"
   msgstr "페이지가 없습니다"
   
  -#: ../wiki.php:2037
  +#: ../wiki.php:2043
   #, c-format
   msgid "File '%s' does not exist."
   msgstr "파일 '%s'이(가) 없습니다"
   
  -#: ../wiki.php:2907 ../wiki.php:2918 ../wiki.php:5472
  +#: ../wiki.php:2916 ../wiki.php:2927 ../wiki.php:5514
   msgid "Invalid ajax action."
   msgstr "잘못된 ajax 액션."
   
  -#: ../wiki.php:3412
  +#: ../wiki.php:3421
   msgid "Tags:"
   msgstr "태그:"
   
  -#: ../wiki.php:3440
  +#: ../wiki.php:3449
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:3440
  +#: ../wiki.php:3449
   #, c-format
   msgid "TwinPages"
   msgstr "TwinPages"
   
  -#: ../wiki.php:3445
  +#: ../wiki.php:3454
   msgid "See [TwinPages]:"
   msgstr ""
   
  -#: ../wiki.php:4007
  +#: ../wiki.php:4016
   msgid "Sister Sites Index"
   msgstr ""
   
  -#: ../wiki.php:4435 ../locale/dummy.php:6
  +#: ../wiki.php:4444 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "고치기"
   
  -#: ../wiki.php:4437
  +#: ../wiki.php:4446
   msgid "NotEditable"
   msgstr "고칠수 없음"
   
  -#: ../wiki.php:4441 ../locale/dummy.php:6
  +#: ../wiki.php:4450 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "보기"
   
  -#: ../wiki.php:4442 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4451 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "찾기"
   
  -#: ../wiki.php:4825
  +#: ../wiki.php:4854
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5235
  +#: ../wiki.php:5273
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5246
  +#: ../wiki.php:5284
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:5284 ../wiki.php:5293 ../wikilib.php:1344
  +#: ../wiki.php:5322 ../wiki.php:5331 ../wikilib.php:1370
   msgid "Create this page"
   msgstr "페이지 만들기"
   
  -#: ../wiki.php:5295
  +#: ../wiki.php:5333
   #, c-format
   msgid "%s has saved revisions"
   msgstr "%s이(가) 저장된 옛버전이 있습니다"
   
  -#: ../wiki.php:5296 ../wiki.php:5303
  +#: ../wiki.php:5334 ../wiki.php:5341
   #, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr "%s 혹은 %s를 눌러 전체 찾기를 할 수 있습니다.\n"
   
  -#: ../wiki.php:5301
  +#: ../wiki.php:5339
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr "%s 페이지를 이곳 위키에서 찾을 수 없습니다"
   
  -#: ../wiki.php:5308
  +#: ../wiki.php:5346
   msgid "Please try to search with another word"
   msgstr "다른 단어로 찾아보세요."
   
  -#: ../wiki.php:5320
  +#: ../wiki.php:5358
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr ""
   "%s 아이콘을 누르거나 아래의 탬플리트 목록을 이용해 새 페이지를 만드세요:\n"
   
  -#: ../wiki.php:5323
  +#: ../wiki.php:5361
   msgid "You have no templates"
   msgstr "템플리트가 없습니다"
   
  -#: ../wiki.php:5325
  +#: ../wiki.php:5363
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr "탬플리트를 만드시려면 '%s' 형식의 이름을 가지는 페이지를 만드세요.\n"
   
  -#: ../wiki.php:5336
  +#: ../wiki.php:5374
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr "\"%s\"페이지로 부터 리다리렉트됨"
   
  -#: ../wiki.php:5474
  +#: ../wiki.php:5516
   msgid "Invalid macro action."
   msgstr "잘못된 마크로 액션."
   
  -#: ../wiki.php:5484
  +#: ../wiki.php:5526
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "'%s'은(는) 허락되지 않았습니다"
   
  -#: ../wiki.php:5504
  +#: ../wiki.php:5546
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "\"%s\"을(를) 실패했습니다 !"
   
  -#: ../wiki.php:5507
  +#: ../wiki.php:5549
   msgid "Please enter the valid password"
   msgstr "정확한 비밀번호를 넣어주세요"
   
  -#: ../wikilib.php:651
  +#: ../wikilib.php:656
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -1999,370 +2036,370 @@
   "<b>테이블</b>: || 셀 내용 |||| 두칸에 걸친 내용 ||;<br />\n"
   "테이블이나 제목 끝에 공백이 오면 안됩니다.<br />\n"
   
  -#: ../wikilib.php:688
  +#: ../wikilib.php:693
   msgid "You are not allowed to edit this page !"
   msgstr "이 페이지를 고칠 수 있도록 허락되어있지 않습니다 !"
   
  -#: ../wikilib.php:694
  +#: ../wikilib.php:699
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
  -#: ../wikilib.php:800
  +#: ../wikilib.php:824
   msgid "Use one of the following templates as an initial release :\n"
   msgstr "최초 버전으로 다음의 탬플리트를 활용하실 수 있습니다 :\n"
   
  -#: ../wikilib.php:802
  +#: ../wikilib.php:826
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr "탬플리트를 만드시려면 '%s' 형식의 이름으로 페이지를 만드세요."
   
  -#: ../wikilib.php:806
  +#: ../wikilib.php:830
   msgid "Merge"
   msgstr "병합"
   
  -#: ../wikilib.php:807
  +#: ../wikilib.php:831
   msgid "Merge manually"
   msgstr "수동 병합"
   
  -#: ../wikilib.php:808
  +#: ../wikilib.php:832
   msgid "Ignore conflicts"
   msgstr "충돌 무시"
   
  -#: ../wikilib.php:835
  +#: ../wikilib.php:859
   msgid "ReduceEditor"
   msgstr "편집창 줄이기"
   
  -#: ../wikilib.php:836
  +#: ../wikilib.php:860
   msgid "EnlargeEditor"
   msgstr "편집창 늘이기"
   
  -#: ../wikilib.php:840 ../locale/dummy.php:6
  +#: ../wikilib.php:864 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr "인터위키"
   
  -#: ../wikilib.php:842
  +#: ../wikilib.php:866
   msgid "HelpOnEditing"
   msgstr "고치기 도움말"
   
  -#: ../wikilib.php:874
  +#: ../wikilib.php:898
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:894
  +#: ../wikilib.php:918
   msgid "--Select Category--"
   msgstr "--카테고리 선택--"
   
  -#: ../wikilib.php:904
  +#: ../wikilib.php:928
   msgid "Minor edit"
   msgstr ""
   
  -#: ../wikilib.php:908
  +#: ../wikilib.php:932
   msgid "Summary of Change"
   msgstr "바뀐점 요약"
   
  -#: ../wikilib.php:913
  +#: ../wikilib.php:937
   msgid "Skip to preview"
   msgstr "미리보기로"
   
  -#: ../wikilib.php:923 ../wikilib.php:2053 ../wikilib.php:2107
  +#: ../wikilib.php:949 ../wikilib.php:2084 ../wikilib.php:2138
   msgid "Save"
   msgstr "저장"
   
  -#: ../wikilib.php:996
  +#: ../wikilib.php:1022
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:1001
  +#: ../wikilib.php:1027
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s은(는) 잘못된 액션"
   
  -#: ../wikilib.php:1003
  +#: ../wikilib.php:1029
   msgid "Is it valid action ?"
   msgstr "올바른 액션입니까 ?"
   
  -#: ../wikilib.php:1050
  +#: ../wikilib.php:1076
   #, c-format
   msgid "File '%s' is deleted"
   msgstr "'%s' 파일이 지워졌습니다"
   
  -#: ../wikilib.php:1052
  +#: ../wikilib.php:1078
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr "'%s' 지우기를 실패했습니다"
   
  -#: ../wikilib.php:1057
  +#: ../wikilib.php:1083
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr "'%s' 디렉토리가 지우졌습니다"
   
  -#: ../wikilib.php:1059
  +#: ../wikilib.php:1085
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr "'%s' 지우기를 실패했습니다"
   
  -#: ../wikilib.php:1069 ../wikilib.php:1089
  +#: ../wikilib.php:1095 ../wikilib.php:1115
   msgid "No files are selected !"
   msgstr "파일을 선택하지 않았습니다"
   
  -#: ../wikilib.php:1082
  +#: ../wikilib.php:1108
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr "정말로 '%s'(을)를 지우시겠습니까 ?"
   
  -#: ../wikilib.php:1086
  +#: ../wikilib.php:1112
   msgid "Delete selected file"
   msgstr "선택된 파일 지우기"
   
  -#: ../wikilib.php:1107
  +#: ../wikilib.php:1133
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr "%s(이)가 지워짐 !"
   
  -#: ../wikilib.php:1122
  +#: ../wikilib.php:1148
   msgid "Please delete this file manually."
   msgstr "파일을 직접 지워주세요."
   
  -#: ../wikilib.php:1124
  +#: ../wikilib.php:1150
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "\"%s\"을(를) 지울까요 ?"
   
  -#: ../wikilib.php:1177
  +#: ../wikilib.php:1203
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
  -#: ../wikilib.php:1346
  +#: ../wikilib.php:1372
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr " 혹은 %s를 눌러 전체찾기를 합니다.\n"
   
  -#: ../wikilib.php:1346
  +#: ../wikilib.php:1372
   msgid "title"
   msgstr "제목"
   
  -#: ../wikilib.php:1360
  +#: ../wikilib.php:1386
   msgid "Please try to fulltext search"
   msgstr "전체 찾기를 해보시기 바랍니다"
   
  -#: ../wikilib.php:1363
  +#: ../wikilib.php:1389
   #, c-format
   msgid "You can also click %s to fulltext search.\n"
   msgstr "%s 아이콘을 눌러 전체 찾기를 하실 수 있습니다.\n"
   
  -#: ../wikilib.php:1408 ../wikilib.php:1509
  +#: ../wikilib.php:1434 ../wikilib.php:1535
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "%s을(를) 고치는 동안 다른 사람이 이 페이지를 저장했습니다"
   
  -#: ../wikilib.php:1414
  +#: ../wikilib.php:1440
   msgid "Section edit is not valid for non-exists page."
   msgstr "없는 페이지에 대한 섹션 편집은 가능하지 않습니다"
   
  -#: ../wikilib.php:1447 ../wikilib.php:1625
  +#: ../wikilib.php:1473 ../wikilib.php:1651
   msgid "mail does not supported by default."
   msgstr "메일이 지원되지 않습니다"
   
  -#: ../wikilib.php:1451 ../wikilib.php:1629
  +#: ../wikilib.php:1477 ../wikilib.php:1655
   msgid "Sent notification mail."
   msgstr "메일을 보냈습니다"
   
  -#: ../wikilib.php:1453 ../wikilib.php:1631
  +#: ../wikilib.php:1479 ../wikilib.php:1657
   msgid "No subscribers found."
   msgstr "구독자가 없습니다"
   
  -#: ../wikilib.php:1458 ../wikilib.php:1636
  +#: ../wikilib.php:1484 ../wikilib.php:1662
   #, c-format
   msgid "%s is not editable"
   msgstr "%s(이)가 쓰기가능하지 않음"
   
  -#: ../wikilib.php:1460 ../wikilib.php:1638
  +#: ../wikilib.php:1486 ../wikilib.php:1664
   #, c-format
   msgid "%s is saved"
   msgstr "%s(이)가 저장됨"
   
  -#: ../wikilib.php:1500
  +#: ../wikilib.php:1526
   msgid "Goto Editor"
   msgstr "편집기로 가기"
   
  -#: ../wikilib.php:1514
  +#: ../wikilib.php:1540
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr "%s 페이지 최근 내용이 병합되었습니다."
   
  -#: ../wikilib.php:1515
  +#: ../wikilib.php:1541
   #, c-format
   msgid "%s is merged successfully"
   msgstr "설정이 성공적으로 병합되었습니다"
   
  -#: ../wikilib.php:1519
  +#: ../wikilib.php:1545
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr "%s에 대하여 병합 충돌이 발견되었습니다 !"
   
  -#: ../wikilib.php:1520
  +#: ../wikilib.php:1546
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr "%에 대해 병합이 취소되었습니다."
   
  -#: ../wikilib.php:1521
  +#: ../wikilib.php:1547
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1522
  +#: ../wikilib.php:1548
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1527
  +#: ../wikilib.php:1553
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr ""
   
  -#: ../wikilib.php:1528
  +#: ../wikilib.php:1554
   msgid "Please resolve conflicts manually."
   msgstr "충돌을 직접 해결하시기 바랍니다."
   
  -#: ../wikilib.php:1531
  +#: ../wikilib.php:1557
   #, c-format
   msgid "Force merging for %s !"
   msgstr "%s에 대해 병합이 강제로 되었습니다 !"
   
  -#: ../wikilib.php:1532
  +#: ../wikilib.php:1558
   msgid "Please be careful, you could damage useful information."
   msgstr "주의하시기 바랍니다. 중요한 정보를 잃어버릴 수도 있습니다."
   
  -#: ../wikilib.php:1546
  +#: ../wikilib.php:1572
   msgid "Conflict error!"
   msgstr "충돌 오류!"
   
  -#: ../wikilib.php:1585
  +#: ../wikilib.php:1611
   #, c-format
   msgid "Preview of %s"
   msgstr "%s 미리보기"
   
  -#: ../wikilib.php:1670
  +#: ../wikilib.php:1696
   msgid "Nobody subscribed to this page."
   msgstr "아무도 페이지를 구독하지 않고있습니다."
   
  -#: ../wikilib.php:1689
  +#: ../wikilib.php:1715
   #, c-format
   msgid "%s page is modified"
   msgstr "%s 페이지가 변경되었습니다"
   
  -#: ../wikilib.php:1718
  +#: ../wikilib.php:1744
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:1731
  +#: ../wikilib.php:1757
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:1736
  +#: ../wikilib.php:1762
   msgid "Mails are sent successfully"
   msgstr "메일이 성공적으로 보내졌습니다"
   
  -#: ../wikilib.php:1737
  +#: ../wikilib.php:1763
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr "'%s'에게 메일을 보냈습니다"
   
  -#: ../wikilib.php:1739
  +#: ../wikilib.php:1765
   msgid "Fail to send mail"
   msgstr "메일 보내기 실패했습니다"
   
  -#: ../wikilib.php:1750
  +#: ../wikilib.php:1776
   msgid "This wiki does not support sendmail"
   msgstr "위키에서 sendmail을 지원받지 못합니다"
   
  -#: ../wikilib.php:1848
  +#: ../wikilib.php:1874
   msgid "Invalid regular expression !"
   msgstr "잘못된 정규 표현식 !"
   
  -#: ../wikilib.php:1872
  +#: ../wikilib.php:1898
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:1875
  +#: ../wikilib.php:1901
   msgid "Infinite loop possible!"
   msgstr "무한 루프가 가능함!"
   
  -#: ../wikilib.php:1990
  +#: ../wikilib.php:2016
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:1991
  +#: ../wikilib.php:2017
   msgid "OpenID"
   msgstr ""
   
  -#: ../wikilib.php:2003 ../wikilib.php:2125
  +#: ../wikilib.php:2029 ../wikilib.php:2156
   msgid "ID"
   msgstr "아이디"
   
  -#: ../wikilib.php:2033 ../wikilib.php:2118
  +#: ../wikilib.php:2064 ../wikilib.php:2149
   msgid "Make profile"
   msgstr "사용자 등록"
   
  -#: ../wikilib.php:2035
  +#: ../wikilib.php:2066
   msgid "password again"
   msgstr "비밀번호 재입력"
   
  -#: ../wikilib.php:2037 ../wikilib.php:2086
  +#: ../wikilib.php:2068 ../wikilib.php:2117
   msgid "Mail"
   msgstr "메일"
   
  -#: ../wikilib.php:2059
  +#: ../wikilib.php:2090
   msgid "New password"
   msgstr "새 비밀번호"
   
  -#: ../wikilib.php:2064
  +#: ../wikilib.php:2095
   msgid "Nickname"
   msgstr "별명"
   
  -#: ../wikilib.php:2087
  +#: ../wikilib.php:2118
   msgid "Time Zone"
   msgstr "시간대"
   
  -#: ../wikilib.php:2096
  +#: ../wikilib.php:2127
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:2391
  +#: ../wikilib.php:2440
   msgid "Show all"
   msgstr "모두 보기"
   
  -#: ../wikilib.php:2533
  +#: ../wikilib.php:2582
   msgid "Contents"
   msgstr "목차"
   
  -#: ../wikilib.php:2653
  +#: ../wikilib.php:2702
   #, c-format
   msgid "Title search for \"%s\""
   msgstr "\"%s\"에 대한 제목 찾기"
   
  -#: ../monisetup.php:36
  +#: ../monisetup.php:35
   msgid "Check a dba configuration"
   msgstr "dba 환경 검사"
   
  -#: ../monisetup.php:48
  +#: ../monisetup.php:47
   #, c-format
   msgid "%s is selected."
   msgstr "%s(이)가 선택됨"
   
  -#: ../monisetup.php:55
  +#: ../monisetup.php:54
   msgid "Check a AcceptPathInfo setting for Apache 2.x.xx"
   msgstr "아파치 2.x.xx를 위한 AcceptPathInfo 검사"
   
  -#: ../monisetup.php:62 ../monisetup.php:68
  +#: ../monisetup.php:61 ../monisetup.php:67
   msgid "Off"
   msgstr "꺼짐"
   
  -#: ../monisetup.php:70
  +#: ../monisetup.php:69
   msgid "On"
   msgstr "켜짐"
   
  @@ -2425,42 +2462,64 @@
   msgid "%s directory is not writable"
   msgstr "%s 디렉토리가 쓰기가능하지 않음"
   
  -#: ../monisetup.php:304
  +#: ../monisetup.php:303
   #, c-format
   msgid "%s is not writable"
   msgstr "%s(이)가 쓰기가능하지 않음"
   
  -#: ../monisetup.php:311 ../monisetup.php:317
  +#: ../monisetup.php:310 ../monisetup.php:316
   #, c-format
   msgid "%s is created now"
   msgstr "%s(이)가 만들어졌음"
   
  -#: ../monisetup.php:327
  +#: ../monisetup.php:326
   #, c-format
   msgid "%s is writable"
   msgstr "%s(이)가 쓰기가능"
   
  -#: ../monisetup.php:427
  -msgid "Click here to toggle all"
  +#: ../monisetup.php:343
  +#, c-format
  +msgid ""
  +"If you want to check .htaccess file please delete '%s' file and reload it."
  +msgstr ""
  +
  +#: ../monisetup.php:346
  +msgid "Security check for 'upload_dir'."
   msgstr ""
   
  -#: ../monisetup.php:428
  +#: ../monisetup.php:378
  +msgid ".htaccess for 'imgs_dir'."
  +msgstr ""
  +
  +#: ../monisetup.php:448
  +msgid "Fail"
  +msgstr "실패"
  +
  +#: ../monisetup.php:454
  +msgid "Unable to write .htaccess"
  +msgstr ""
  +
  +#: ../monisetup.php:550
  +msgid "Click here to toggle all"
  +msgstr "여기를 눌러 모두 토글합니다"
  +
  +#: ../monisetup.php:551
   msgid "Deselect all"
   msgstr "모두 선택 취소"
   
  -#: ../monisetup.php:433
  +#: ../monisetup.php:556
   msgid "Please be careful to deselect these pages"
   msgstr "아래의 페이지를 선택해제시 주의해주세요"
   
  -#: ../monisetup.php:708
  +#: ../monisetup.php:831
   msgid "MoniWiki"
   msgstr "모니위키"
   
  -#: ../monisetup.php:711
  +#: ../monisetup.php:834
   msgid "'config.php' is not writable !"
   msgstr "'config.php' 파일이 쓰기가능하지 않습니다 !"
   
  -#: ../monisetup.php:712
  +#: ../monisetup.php:835
   msgid ""
   "Please execute <tt>'monisetup.sh'</tt> or <tt>chmod a+w config.php</tt> "
   "first to change your settings."
  @@ -2468,94 +2527,94 @@
   "<tt>'monisetup.sh'</tt> 혹은 <tt>chmod a+w config.php</tt>를 먼저실행해 주셔"
   "야 설정을 고칠 수 있습니다"
   
  -#: ../monisetup.php:739
  +#: ../monisetup.php:862
   msgid "Invalid password error !"
   msgstr "잘못된 비밀번호 오류 !"
   
  -#: ../monisetup.php:740
  +#: ../monisetup.php:863
   msgid ""
   "If you can't remember your admin password, delete password entry in the "
   "'config.php' and restart 'monisetup'"
   msgstr ""
   
  -#: ../monisetup.php:772
  +#: ../monisetup.php:895
   #, c-format
   msgid "Updated Configutations for this %s"
   msgstr "위키 %s의 설정이 갱신되었습니다"
   
  -#: ../monisetup.php:791
  +#: ../monisetup.php:914
   msgid "Configurations are saved successfully"
   msgstr "설정이 성공적으로 저장되었습니다"
   
  -#: ../monisetup.php:792
  +#: ../monisetup.php:915
   msgid ""
   "WARN: Please check <a href='monisetup.php'> your saved configurations</a>"
   msgstr ""
   
  -#: ../monisetup.php:793
  +#: ../monisetup.php:916
   msgid "If all is good, change 'config.php' permission as 644."
   msgstr "모두 마음에 드시면 'config.php'파일의 퍼미션을 644로 바꿔주세요"
   
  -#: ../monisetup.php:805
  +#: ../monisetup.php:928
   msgid "Welcome to MoniWiki ! This is your first installation"
   msgstr "모니위키로 오신 것을  환영합니다 ! 처음 설치 하셨군요"
   
  -#: ../monisetup.php:812
  +#: ../monisetup.php:935
   msgid "Default settings are loaded..."
   msgstr "기본 설정을 불러옵니다..."
   
  -#: ../monisetup.php:821
  +#: ../monisetup.php:944
   msgid "Initial configurations are saved successfully."
   msgstr "초기 설정치가 성공적으로 저장되었습니다."
   
  -#: ../monisetup.php:822
  +#: ../monisetup.php:945
   msgid "Goto <a href='monisetup.php'>MoniSetup</a> again to configure details"
   msgstr ""
   "<a href='monisetup.php'>MoniSetup</a>으로 다시 가서 자세한 설정을 합니다"
   
  -#: ../monisetup.php:839 ../monisetup.php:841 ../monisetup.php:937
  -#: ../monisetup.php:939
  +#: ../monisetup.php:962 ../monisetup.php:964 ../monisetup.php:1060
  +#: ../monisetup.php:1062
   #, c-format
   msgid "goto %s"
   msgstr "%s으로 가기"
   
  -#: ../monisetup.php:844
  +#: ../monisetup.php:967
   msgid "No WikiSeeds are selected"
   msgstr "위키씨앗을 선택하지 않았습니다"
   
  -#: ../monisetup.php:855
  +#: ../monisetup.php:978
   #, c-format
   msgid "Preview current settings for this %s"
   msgstr "%s 현재 설정을 미리보기"
   
  -#: ../monisetup.php:857
  +#: ../monisetup.php:980
   #, c-format
   msgid "Read current settings for this %s"
   msgstr "%s 위키의 현재 설정 읽기"
   
  -#: ../monisetup.php:885
  +#: ../monisetup.php:1008
   msgid "Change your settings"
   msgstr "세팅을 바꾸기"
   
  -#: ../monisetup.php:887
  +#: ../monisetup.php:1010
   msgid "WARN: You have to enter your Admin Password"
   msgstr "주의: 관리자 비밀번호를 넣어주시기 바랍니다"
   
  -#: ../monisetup.php:889 ../monisetup.php:932
  +#: ../monisetup.php:1012 ../monisetup.php:1055
   #, c-format
   msgid "WARN: You have no WikiSeed on your %s"
   msgstr "주의: 위키씨앗이 위키 %s에 없습니다"
   
  -#: ../monisetup.php:890 ../monisetup.php:933
  +#: ../monisetup.php:1013 ../monisetup.php:1056
   #, c-format
   msgid "If you want to put wikiseeds on your wiki %s now"
   msgstr "위키씨앗을 심기를 원하신다면 %s 누르세요"
   
  -#: ../monisetup.php:891 ../monisetup.php:934
  +#: ../monisetup.php:1014 ../monisetup.php:1057
   msgid "Click here"
   msgstr "여기를"
   
  -#: ../monisetup.php:926 ../monisetup.php:928
  +#: ../monisetup.php:1049 ../monisetup.php:1051
   msgid "Update"
   msgstr "완료"
   
  @@ -2599,6 +2658,9 @@
   msgid "TrackBack"
   msgstr "트랙백"
   
  +#~ msgid "Toggle line numbers"
  +#~ msgstr "줄번호 토글"
  +
   #~ msgid "%s or click %s to search title.\n"
   #~ msgstr "%s 아이콘을 누르거나 %s을 눌러 제목을 찾습니다.\n"
   
  
  
  
  1.23      +932 -873  moniwiki/locale/po/moniwiki.pot
  
  Index: moniwiki.pot
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/moniwiki.pot,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- moniwiki.pot	24 Dec 2008 09:16:14 -0000	1.22
  +++ moniwiki.pot	2 Jan 2009 05:45:20 -0000	1.23
  @@ -7,7 +7,7 @@
   msgstr ""
   "Project-Id-Version: PACKAGE VERSION\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2008-12-23 23:10+0900\n"
  +"POT-Creation-Date: 2008-12-31 20:11+0900\n"
   "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
   "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
   "Language-Team: LANGUAGE <LL@li.org>\n"
  @@ -15,6 +15,82 @@
   "Content-Type: text/plain; charset=CHARSET\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  +#: ../plugin/aclinfo.php:15
  +msgid "ACL is not enabled on this Wiki"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:21
  +msgid "Your ACL Info"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:23
  +msgid "You are wiki owner"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:25
  +msgid "You are wiki master"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:27
  +msgid "Allowed actions"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:32
  +msgid "Denied actions"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:38
  +msgid "Protected actions"
  +msgstr ""
  +
  +#: ../plugin/admin.php:136 ../plugin/PluginInfo.php:50
  +msgid "Description"
  +msgstr ""
  +
  +#: ../plugin/admin.php:139 ../plugin/PluginInfo.php:56
  +msgid "Author"
  +msgstr ""
  +
  +#: ../plugin/admin.php:141 ../plugin/PluginInfo.php:58
  +msgid "License"
  +msgstr ""
  +
  +#: ../plugin/admin.php:143 ../plugin/PluginInfo.php:60
  +msgid "Depend"
  +msgstr ""
  +
  +#: ../plugin/admin.php:147 ../plugin/PluginInfo.php:64
  +msgid "URL"
  +msgstr ""
  +
  +#: ../plugin/admin.php:191
  +msgid "Enabled plugins"
  +msgstr ""
  +
  +#: ../plugin/admin.php:193
  +msgid "Disabled plugins"
  +msgstr ""
  +
  +#: ../plugin/admin.php:201
  +msgid "Enabled processors"
  +msgstr ""
  +
  +#: ../plugin/admin.php:203
  +msgid "Disabled processors"
  +msgstr ""
  +
  +#: ../plugin/admin.php:206
  +msgid "Plugin/Processor settings are updated"
  +msgstr ""
  +
  +#: ../plugin/admin.php:212
  +msgid "Enable/disable plugins and processors"
  +msgstr ""
  +
  +#: ../plugin/atom.php:64 ../plugin/rss_rc.php:62
  +msgid "show changes"
  +msgstr ""
  +
   #: ../plugin/Attachment.php:70 ../plugin/Attachment.php:331
   #, c-format
   msgid "Upload new Attachment \"%s\""
  @@ -42,6 +118,140 @@
   msgid "Translate %s to %s"
   msgstr ""
   
  +#: ../plugin/backup.php:42
  +msgid "Your wiki is backuped successfully"
  +msgstr ""
  +
  +#: ../plugin/backup.php:49
  +msgid "Backup failed !"
  +msgstr ""
  +
  +#: ../plugin/backup.php:54
  +msgid "Did you want to Backup your wiki ?"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:493
  +msgid "This bbs does not exists yet. Please save this page first"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:617
  +msgid "No"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:626
  +msgid "Edit"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1111
  +msgid "Delete"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:657
  +msgid "Please check article numbers."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:737
  +msgid "More"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:782
  +msgid "New"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:784
  +msgid "Read"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:800
  +#, c-format
  +msgid "Total %s articles."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:836
  +#, c-format
  +msgid "Your IP address is not allowed to %s at this BBS"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:890
  +msgid "Successfully deleted."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:922
  +msgid "Fail to post comment."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:932
  +#, c-format
  +msgid "The article %s will be deleted."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:974
  +msgid "Invalid HomePage address."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:987
  +msgid "No Name error."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:997
  +msgid "No Subject error."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:1009 ../plugin/Comment.php:191 ../plugin/Gallery.php:174
  +#: ../wikilib.php:1459 ../wikilib.php:1605
  +msgid ""
  +"Sorry, can not save page because some messages are blocked in this wiki."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:1025
  +msgid "New post added successfully"
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:198
  +msgid "Category: "
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:200 ../locale/dummy.php:7
  +msgid "BlogChanges"
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:246
  +#, c-format
  +msgid "Invalid category expr \"%s\""
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:378 ../plugin/BlogChanges.php:380
  +#: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
  +msgid "Anonymous"
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  +#, c-format
  +msgid "%d comment"
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  +#, c-format
  +msgid "%d comments"
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:208
  +#: ../plugin/processor/blog.php:78
  +msgid "Add comment"
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:423 ../plugin/processor/blog.php:97
  +msgid "track back"
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:443
  +msgid "Previous"
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:446
  +msgid "Next"
  +msgstr ""
  +
   #: ../plugin/Blog.php:84
   #, c-format
   msgid "Blog cache of \"%s\" is refreshed"
  @@ -93,7 +303,7 @@
   msgid "Add Blog entry to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:260 ../plugin/Blog.php:332 ../plugin/PluginInfo.php:45
  +#: ../plugin/Blog.php:260 ../plugin/Blog.php:332 ../plugin/PluginInfo.php:52
   msgid "Name"
   msgstr ""
   
  @@ -101,7 +311,7 @@
   msgid "Title"
   msgstr ""
   
  -#: ../plugin/Blog.php:268 ../wikilib.php:915
  +#: ../plugin/Blog.php:268 ../wikilib.php:941
   msgid "GUI"
   msgstr ""
   
  @@ -113,49 +323,31 @@
   msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:198
  -msgid "Category: "
  -msgstr ""
  -
  -#: ../plugin/BlogChanges.php:200 ../locale/dummy.php:7
  -msgid "BlogChanges"
  +#: ../plugin/cacheadmin.php:105
  +msgid "You are not WikiMaster!!"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:246
  -#, c-format
  -msgid "Invalid category expr \"%s\""
  +#: ../plugin/cacheadmin.php:120
  +msgid "Clear cache dirs"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:378 ../plugin/BlogChanges.php:380
  -#: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
  -msgid "Anonymous"
  +#: ../plugin/chat.php:36
  +msgid "No messages"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  +#: ../plugin/chmod.php:18
   #, c-format
  -msgid "%d comment"
  +msgid "Permission of \"%s\" changed !"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  +#: ../plugin/chmod.php:24
   #, c-format
  -msgid "%d comments"
  -msgstr ""
  -
  -#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:208
  -#: ../plugin/processor/blog.php:78
  -msgid "Add comment"
  -msgstr ""
  -
  -#: ../plugin/BlogChanges.php:423 ../plugin/processor/blog.php:97
  -msgid "track back"
  -msgstr ""
  -
  -#: ../plugin/BlogChanges.php:443
  -msgid "Previous"
  +msgid "Fail to chmod \"%s\" !"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:446
  -msgid "Next"
  +#: ../plugin/chmod.php:35
  +#, c-format
  +msgid "Change permission of \"%s\""
   msgstr ""
   
   #: ../plugin/Clip.php:28
  @@ -182,7 +374,7 @@
   msgid "Comment"
   msgstr ""
   
  -#: ../plugin/Comment.php:88 ../wikilib.php:911 ../monisetup.php:924
  +#: ../plugin/Comment.php:88 ../wikilib.php:935 ../monisetup.php:1047
   msgid "Preview"
   msgstr ""
   
  @@ -202,22 +394,16 @@
   msgid "Page does not exists"
   msgstr ""
   
  -#: ../plugin/Comment.php:164 ../plugin/userform.php:115
  -#: ../plugin/userform.php:178 ../plugin/userform.php:201
  +#: ../plugin/Comment.php:164 ../plugin/userform.php:118
  +#: ../plugin/userform.php:181 ../plugin/userform.php:204
   msgid "Invalid ticket !"
   msgstr ""
   
  -#: ../plugin/Comment.php:169 ../plugin/userform.php:117
  -#: ../plugin/userform.php:203
  +#: ../plugin/Comment.php:169 ../plugin/userform.php:120
  +#: ../plugin/userform.php:206
   msgid "You need a ticket !"
   msgstr ""
   
  -#: ../plugin/Comment.php:191 ../plugin/Gallery.php:174 ../plugin/bbs.php:1009
  -#: ../wikilib.php:1433 ../wikilib.php:1579
  -msgid ""
  -"Sorry, can not save page because some messages are blocked in this wiki."
  -msgstr ""
  -
   #: ../plugin/Comment.php:197
   msgid "Preview comment"
   msgstr ""
  @@ -231,16 +417,24 @@
   msgid "Comment added successfully"
   msgstr ""
   
  -#: ../plugin/Diff.php:207 ../plugin/Info.php:220
  -msgid "No older revisions available"
  +#: ../plugin/css.php:33 ../plugin/css.php:41
  +msgid "Back to UserPreferences"
   msgstr ""
   
  -#: ../plugin/Diff.php:212 ../plugin/Info.php:226 ../plugin/rcsexport.php:13
  -#: ../plugin/rcsimport.php:13
  -msgid "Version info is not available in this wiki"
  +#: ../plugin/css.php:67
  +msgid "CSS disabled !"
  +msgstr ""
  +
  +#: ../plugin/Diff.php:207 ../plugin/Info.php:220
  +msgid "No older revisions available"
   msgstr ""
   
  -#: ../plugin/Diff.php:223 ../wikilib.php:1566
  +#: ../plugin/Diff.php:212 ../plugin/Info.php:226 ../plugin/rcsexport.php:13
  +#: ../plugin/rcsimport.php:13
  +msgid "Version info is not available in this wiki"
  +msgstr ""
  +
  +#: ../plugin/Diff.php:223 ../wikilib.php:1592
   msgid "No difference found"
   msgstr ""
   
  @@ -307,21 +501,25 @@
   msgstr ""
   
   #: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:38
  -#: ../wikilib.php:1354
  +#: ../wikilib.php:1380
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr ""
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1356
  +#: ../wikilib.php:1382
   msgid "page"
   msgstr ""
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1356
  +#: ../wikilib.php:1382
   msgid "pages"
   msgstr ""
   
  +#: ../plugin/format.php:17
  +msgid "It is a XML format !"
  +msgstr ""
  +
   #: ../plugin/FullSearch.php:15
   #, c-format
   msgid "BackLinks search for \"%s\""
  @@ -336,7 +534,7 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:124 ../wiki.php:4439
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4448
   msgid "Refresh"
   msgstr ""
   
  @@ -350,8 +548,8 @@
   msgid "You can also click %s to search title.\n"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5296 ../wiki.php:5303
  -#: ../wikilib.php:1364
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5334 ../wiki.php:5341
  +#: ../wikilib.php:1390
   msgid "here"
   msgstr ""
   
  @@ -367,7 +565,7 @@
   msgid "Case-sensitive searching"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:77 ../wikilib.php:2636 ../wikilib.php:2697
  +#: ../plugin/FullSearch.php:77 ../wikilib.php:2685 ../wikilib.php:2746
   msgid "Go"
   msgstr ""
   
  @@ -375,12 +573,12 @@
   msgid "Empty expression"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:144 ../wikilib.php:2657
  +#: ../plugin/FullSearch.php:144 ../wikilib.php:2706
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr ""
   
  -#: ../plugin/Gallery.php:245 ../plugin/UploadedFiles.php:257
  +#: ../plugin/Gallery.php:245 ../plugin/UploadedFiles.php:266
   msgid "No files found"
   msgstr ""
   
  @@ -392,8 +590,8 @@
   msgid "show comments"
   msgstr ""
   
  -#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1420
  -#: ../wikilib.php:1564
  +#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1446
  +#: ../wikilib.php:1590
   #, c-format
   msgid "Go back or return to %s"
   msgstr ""
  @@ -406,6 +604,10 @@
   msgid "Comments is added"
   msgstr ""
   
  +#: ../plugin/html2pdf.php:30
  +msgid "The TCPDF class not found!"
  +msgstr ""
  +
   #: ../plugin/ImportUrl.php:132
   msgid "Import URL"
   msgstr ""
  @@ -419,689 +621,200 @@
   msgstr ""
   
   #: ../plugin/Info.php:37
  -msgid "ver."
  -msgstr ""
  -
  -#: ../plugin/Info.php:37
  -msgid "Date and Changes"
  -msgstr ""
  -
  -#: ../plugin/Info.php:38
  -msgid "Editor"
  -msgstr ""
  -
  -#: ../plugin/Info.php:41
  -msgid "actions"
  -msgstr ""
  -
  -#: ../plugin/Info.php:42
  -msgid "admin."
  -msgstr ""
  -
  -#: ../plugin/Info.php:58
  -msgid "Show all revisions"
  -msgstr ""
  -
  -#: ../plugin/Info.php:91
  -msgid "Yesterday"
  -msgstr ""
  -
  -#: ../plugin/Info.php:92
  -#, c-format
  -msgid "%s days ago"
  -msgstr ""
  -
  -#: ../plugin/Info.php:94
  -#, c-format
  -msgid "%s hours ago"
  -msgstr ""
  -
  -#: ../plugin/Info.php:96
  -#, c-format
  -msgid "%s min ago"
  -msgstr ""
  -
  -#: ../plugin/Info.php:166
  -msgid "diff"
  -msgstr ""
  -
  -#: ../plugin/Info.php:189 ../plugin/rename.php:80
  -msgid "show only"
  -msgstr ""
  -
  -#: ../plugin/Info.php:193
  -msgid "purge"
  -msgstr ""
  -
  -#: ../plugin/JME.php:55
  -#, c-format
  -msgid "Draw a new molecule '%s'"
  -msgstr ""
  -
  -#: ../plugin/JME.php:57
  -msgid "Draw a new molecule"
  -msgstr ""
  -
  -#: ../plugin/JME.php:95
  -msgid "Molecule successfully added"
  -msgstr ""
  -
  -#: ../plugin/JME.php:101
  -msgid "Edit Molecule"
  -msgstr ""
  -
  -#: ../plugin/JME.php:131
  -msgid "Edit new molecule"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:330
  -msgid "hits"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:338
  -msgid "add keywords"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:341
  -msgid "Update keywords"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:343
  -msgid "Add keywords"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:344
  -msgid "Add as common words"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:345
  -msgid "Unselect all"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:346
  -msgid "Suggest new Keywords"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:355
  -msgid "select language"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:371
  -msgid "You are not able to add keywords."
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:385
  -#, c-format
  -msgid "%s is not found."
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:501
  -msgid "Common words are updated"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:548
  -#, c-format
  -msgid "Keywords for %s are updated"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:574
  -msgid "Keywords are updated"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:576
  -msgid "There are no changes found"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:589
  -msgid "Update with these Keywords"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:609 ../plugin/Keywords.php:613
  -msgid "alphabetically"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:610
  -msgid "by frequency"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:612
  -msgid "by size"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:618
  -#, c-format
  -msgid "Keywords list %s (or %s)"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:623
  -#, c-format
  -msgid "Select keywords for %s"
  -msgstr ""
  -
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1245 ../wikilib.php:2644
  -msgid "Use more specific text"
  -msgstr ""
  -
  -#: ../plugin/LikePages.php:109
  -msgid "These pages share a similar word..."
  -msgstr ""
  -
  -#: ../plugin/LikePages.php:123
  -msgid "These pages share an initial or final title word..."
  -msgstr ""
  -
  -#: ../plugin/LikePages.php:143
  -msgid "If you can't find this page, "
  -msgstr ""
  -
  -#: ../plugin/LikePages.php:148
  -msgid "No similar pages found"
  -msgstr ""
  -
  -#: ../plugin/LikePages.php:150
  -msgid "You are strongly recommened to find it in MetaWikis. "
  -msgstr ""
  -
  -#: ../plugin/LikePages.php:153
  -#, c-format
  -msgid "Like \"%s\""
  -msgstr ""
  -
  -#: ../plugin/LikePages.php:156
  -msgid "Search all MetaWikis"
  -msgstr ""
  -
  -#: ../plugin/LikePages.php:157
  -msgid "Slow Slow"
  -msgstr ""
  -
  -#: ../plugin/Navigation.php:19
  -msgid "No Index page found"
  -msgstr ""
  -
  -#: ../plugin/OeKaki.php:36
  -msgid "Draw a new picture"
  -msgstr ""
  -
  -#: ../plugin/OeKaki.php:118
  -msgid "Create new picture"
  -msgstr ""
  -
  -#: ../plugin/OeKaki.php:127
  -msgid "Edit Image"
  -msgstr ""
  -
  -#: ../plugin/PluginInfo.php:29
  -#, c-format
  -msgid "Total %s plugin activated."
  -msgstr ""
  -
  -#: ../plugin/PluginInfo.php:43 ../plugin/admin.php:136
  -msgid "Description"
  -msgstr ""
  -
  -#: ../plugin/PluginInfo.php:47
  -msgid "Version"
  -msgstr ""
  -
  -#: ../plugin/PluginInfo.php:49 ../plugin/admin.php:139
  -msgid "Author"
  -msgstr ""
  -
  -#: ../plugin/PluginInfo.php:51 ../plugin/admin.php:141
  -msgid "License"
  -msgstr ""
  -
  -#: ../plugin/PluginInfo.php:53 ../plugin/admin.php:143
  -msgid "Depend"
  -msgstr ""
  -
  -#: ../plugin/PluginInfo.php:57 ../plugin/admin.php:147
  -msgid "URL"
  -msgstr ""
  -
  -#: ../plugin/Rating.php:58
  -msgid "Awful!"
  -msgstr ""
  -
  -#: ../plugin/Rating.php:59
  -msgid "Not the worst ever."
  -msgstr ""
  -
  -#: ../plugin/Rating.php:60
  -msgid "Not bad!"
  -msgstr ""
  -
  -#: ../plugin/Rating.php:61
  -msgid "Useful!"
  -msgstr ""
  -
  -#: ../plugin/Rating.php:62
  -msgid "Very Gooood!"
  -msgstr ""
  -
  -#: ../plugin/Rating.php:84 ../plugin/Vote.php:67
  -#: ../plugin/security/community.php:26 ../plugin/security/community.php:36
  -#: ../plugin/security/community.php:46 ../plugin/security/community.php:61
  -#: ../plugin/security/mustlogin.php:29 ../plugin/security/mustlogin.php:40
  -#: ../plugin/security/mustlogin.php:51 ../plugin/security/mustlogin.php:67
  -#: ../plugin/security/needtologin.php:29 ../plugin/security/needtologin.php:40
  -#: ../plugin/security/needtologin.php:51 ../plugin/security/userbased.php:62
  -msgid "Please Login or make your ID on this Wiki ;)"
  -msgstr ""
  -
  -#: ../plugin/Rating.php:188
  -msgid "Invalid rating request !"
  -msgstr ""
  -
  -#: ../plugin/Rating.php:203
  -msgid "Rating successfully !"
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:114
  -msgid "Show changes for "
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:119
  -msgid "days ago"
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:206
  -msgid "set bookmark"
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:241 ../plugin/pagelist.php:107
  -#: ../plugin/pagelist.php:124
  -#, c-format
  -msgid "[%sh %sm ago]"
  -msgstr ""
  -
  -#: ../plugin/SWFUpload.php:118
  -msgid "Files..."
  -msgstr ""
  -
  -#: ../plugin/SWFUpload.php:119
  -msgid "Upload"
  -msgstr ""
  -
  -#: ../plugin/SlideShow.php:28
  -msgid "No page found"
  -msgstr ""
  -
  -#: ../plugin/SlideShow.php:102
  -msgid "Start:"
  -msgstr ""
  -
  -#: ../plugin/SlideShow.php:111
  -msgid "End:"
  -msgstr ""
  -
  -#: ../plugin/SlideShow.php:121 ../plugin/pageview.php:75
  -msgid "Next:"
  -msgstr ""
  -
  -#: ../plugin/SlideShow.php:131
  -msgid "Prev:"
  -msgstr ""
  -
  -#: ../plugin/SlideShow.php:138
  -msgid "Return"
  -msgstr ""
  -
  -#: ../plugin/SystemInfo.php:16
  -msgid "Number of Pages"
  -msgstr ""
  -
  -#: ../plugin/SystemInfo.php:17
  -msgid "HTTP Server Version"
  -msgstr ""
  -
  -#: ../plugin/SystemInfo.php:18
  -msgid "MoniWiki Version"
  -msgstr ""
  -
  -#: ../plugin/SystemInfo.php:19
  -msgid "PHP Version"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:57
  -msgid "BackLinks"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:61
  -msgid "Keywords"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:70
  -#, c-format
  -msgid " from %s"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:73
  -#, c-format
  -msgid "%s Tour %s"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:121
  -msgid "links"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:123
  -msgid "deeper"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:124
  -#, c-format
  -msgid "More %s or more %s"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:139
  -#, c-format
  -msgid "Total %d related keywords"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:142
  -#, c-format
  -msgid "Total %d related pages"
  -msgstr ""
  -
  -#: ../plugin/TwinPages.php:13
  -#, c-format
  -msgid "TwinPages of %s"
  -msgstr ""
  -
  -#: ../plugin/TwinPages.php:19 ../wiki.php:5282
  -msgid "See [TwinPages]: "
  -msgstr ""
  -
  -#: ../plugin/TwinPages.php:21
  -msgid "No TwinPages found."
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:147 ../plugin/UploadFile.php:161
  -#, c-format
  -msgid "The %s type of %s is not allowed to upload"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:163
  -#, c-format
  -msgid "%s is not allowed to upload"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:218
  -#, c-format
  -msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:251
  -msgid "Please check your php.ini setting"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:261
  -#, c-format
  -msgid "File \"%s\" is uploaded successfully"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:300
  -msgid "Files are uploaded successfully"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:344
  -msgid "Replace original file"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:345
  -msgid "Rename if it already exist"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:350 ../plugin/rename.php:69
  -msgid "Rename"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:358
  -#, c-format
  -msgid "or %s."
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:358
  -msgid "Upload files"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:271
  -msgid "File name"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:272
  -msgid "Size"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:273
  -msgid "Date"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:316
  -msgid "Next page &raquo;"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:318
  -msgid "&laquo; First page"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:409
  -#, c-format
  -msgid "Total %d files"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:414 ../plugin/rcsimport.php:32
  -#: ../plugin/rename.php:77 ../plugin/revert.php:82 ../plugin/userinfo.php:37
  -#: ../wikilib.php:1084 ../wikilib.php:1974
  -msgid "Password"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:415 ../wikilib.php:1062
  -msgid "Delete selected files"
  -msgstr ""
  -
  -#: ../plugin/VisualTour.php:118
  -msgid "Normal"
  -msgstr ""
  -
  -#: ../plugin/VisualTour.php:120
  -msgid "Wider"
  -msgstr ""
  -
  -#: ../plugin/VisualTour.php:122
  -msgid "Deeper"
  +msgid "ver."
   msgstr ""
   
  -#: ../plugin/Vote.php:113
  -msgid "Voted successfully"
  +#: ../plugin/Info.php:37
  +msgid "Date and Changes"
   msgstr ""
   
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2390
  -msgid "Others"
  +#: ../plugin/Info.php:38
  +msgid "Editor"
   msgstr ""
   
  -#: ../plugin/aclinfo.php:15
  -msgid "ACL is not enabled on this Wiki"
  +#: ../plugin/Info.php:41
  +msgid "actions"
   msgstr ""
   
  -#: ../plugin/aclinfo.php:21
  -msgid "Your ACL Info"
  +#: ../plugin/Info.php:42
  +msgid "admin."
   msgstr ""
   
  -#: ../plugin/aclinfo.php:23
  -msgid "You are wiki owner"
  +#: ../plugin/Info.php:58
  +msgid "Show all revisions"
   msgstr ""
   
  -#: ../plugin/aclinfo.php:25
  -msgid "You are wiki master"
  +#: ../plugin/Info.php:91
  +msgid "Yesterday"
   msgstr ""
   
  -#: ../plugin/aclinfo.php:27
  -msgid "Allowed actions"
  +#: ../plugin/Info.php:92
  +#, c-format
  +msgid "%s days ago"
   msgstr ""
   
  -#: ../plugin/aclinfo.php:32
  -msgid "Denied actions"
  +#: ../plugin/Info.php:94
  +#, c-format
  +msgid "%s hours ago"
   msgstr ""
   
  -#: ../plugin/aclinfo.php:38
  -msgid "Protected actions"
  +#: ../plugin/Info.php:96
  +#, c-format
  +msgid "%s min ago"
   msgstr ""
   
  -#: ../plugin/admin.php:191
  -msgid "Enabled plugins"
  +#: ../plugin/Info.php:166
  +msgid "diff"
   msgstr ""
   
  -#: ../plugin/admin.php:193
  -msgid "Disabled plugins"
  +#: ../plugin/Info.php:189 ../plugin/rename.php:80
  +msgid "show only"
   msgstr ""
   
  -#: ../plugin/admin.php:201
  -msgid "Enabled processors"
  +#: ../plugin/Info.php:193
  +msgid "purge"
   msgstr ""
   
  -#: ../plugin/admin.php:203
  -msgid "Disabled processors"
  +#: ../plugin/JME.php:64
  +#, c-format
  +msgid "Draw a new molecule '%s'"
   msgstr ""
   
  -#: ../plugin/admin.php:206
  -msgid "Plugin/Processor settings are updated"
  +#: ../plugin/JME.php:66
  +msgid "Draw a new molecule"
   msgstr ""
   
  -#: ../plugin/admin.php:212
  -msgid "Enable/disable plugins and processors"
  +#: ../plugin/JME.php:104
  +msgid "Molecule successfully added"
   msgstr ""
   
  -#: ../plugin/atom.php:64 ../plugin/rss_rc.php:62
  -msgid "show changes"
  +#: ../plugin/JME.php:110
  +msgid "Edit Molecule"
   msgstr ""
   
  -#: ../plugin/backup.php:42
  -msgid "Your wiki is backuped successfully"
  +#: ../plugin/JME.php:140
  +msgid "Edit new molecule"
   msgstr ""
   
  -#: ../plugin/backup.php:49
  -msgid "Backup failed !"
  +#: ../plugin/Keywords.php:330
  +msgid "hits"
   msgstr ""
   
  -#: ../plugin/backup.php:54
  -msgid "Did you want to Backup your wiki ?"
  +#: ../plugin/Keywords.php:338
  +msgid "add keywords"
   msgstr ""
   
  -#: ../plugin/bbs.php:493
  -msgid "This bbs does not exists yet. Please save this page first"
  +#: ../plugin/Keywords.php:341
  +msgid "Update keywords"
   msgstr ""
   
  -#: ../plugin/bbs.php:617
  -msgid "No"
  +#: ../plugin/Keywords.php:343
  +msgid "Add keywords"
   msgstr ""
   
  -#: ../plugin/bbs.php:626 ../plugin/man_get.php:115
  -msgid "Edit"
  +#: ../plugin/Keywords.php:344
  +msgid "Add as common words"
   msgstr ""
   
  -#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1085
  -msgid "Delete"
  +#: ../plugin/Keywords.php:345
  +msgid "Unselect all"
   msgstr ""
   
  -#: ../plugin/bbs.php:657
  -msgid "Please check article numbers."
  +#: ../plugin/Keywords.php:346
  +msgid "Suggest new Keywords"
   msgstr ""
   
  -#: ../plugin/bbs.php:737
  -msgid "More"
  +#: ../plugin/Keywords.php:355
  +msgid "select language"
   msgstr ""
   
  -#: ../plugin/bbs.php:782
  -msgid "New"
  +#: ../plugin/Keywords.php:371
  +msgid "You are not able to add keywords."
   msgstr ""
   
  -#: ../plugin/bbs.php:784
  -msgid "Read"
  +#: ../plugin/Keywords.php:385
  +#, c-format
  +msgid "%s is not found."
   msgstr ""
   
  -#: ../plugin/bbs.php:800
  -#, c-format
  -msgid "Total %s articles."
  +#: ../plugin/Keywords.php:501
  +msgid "Common words are updated"
   msgstr ""
   
  -#: ../plugin/bbs.php:836
  +#: ../plugin/Keywords.php:548
   #, c-format
  -msgid "Your IP address is not allowed to %s at this BBS"
  +msgid "Keywords for %s are updated"
   msgstr ""
   
  -#: ../plugin/bbs.php:890
  -msgid "Successfully deleted."
  +#: ../plugin/Keywords.php:574
  +msgid "Keywords are updated"
   msgstr ""
   
  -#: ../plugin/bbs.php:922
  -msgid "Fail to post comment."
  +#: ../plugin/Keywords.php:576
  +msgid "There are no changes found"
   msgstr ""
   
  -#: ../plugin/bbs.php:932
  -#, c-format
  -msgid "The article %s will be deleted."
  +#: ../plugin/Keywords.php:589
  +msgid "Update with these Keywords"
   msgstr ""
   
  -#: ../plugin/bbs.php:974
  -msgid "Invalid HomePage address."
  +#: ../plugin/Keywords.php:609 ../plugin/Keywords.php:613
  +msgid "alphabetically"
   msgstr ""
   
  -#: ../plugin/bbs.php:987
  -msgid "No Name error."
  +#: ../plugin/Keywords.php:610
  +msgid "by frequency"
   msgstr ""
   
  -#: ../plugin/bbs.php:997
  -msgid "No Subject error."
  +#: ../plugin/Keywords.php:612
  +msgid "by size"
   msgstr ""
   
  -#: ../plugin/bbs.php:1025
  -msgid "New post added successfully"
  +#: ../plugin/Keywords.php:618
  +#, c-format
  +msgid "Keywords list %s (or %s)"
   msgstr ""
   
  -#: ../plugin/cacheadmin.php:105
  -msgid "You are not WikiMaster!!"
  +#: ../plugin/Keywords.php:623
  +#, c-format
  +msgid "Select keywords for %s"
   msgstr ""
   
  -#: ../plugin/cacheadmin.php:120
  -msgid "Clear cache dirs"
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1271 ../wikilib.php:2693
  +msgid "Use more specific text"
   msgstr ""
   
  -#: ../plugin/chat.php:36
  -msgid "No messages"
  +#: ../plugin/LikePages.php:109
  +msgid "These pages share a similar word..."
   msgstr ""
   
  -#: ../plugin/chmod.php:18
  -#, c-format
  -msgid "Permission of \"%s\" changed !"
  +#: ../plugin/LikePages.php:123
  +msgid "These pages share an initial or final title word..."
   msgstr ""
   
  -#: ../plugin/chmod.php:24
  -#, c-format
  -msgid "Fail to chmod \"%s\" !"
  +#: ../plugin/LikePages.php:143
  +msgid "If you can't find this page, "
   msgstr ""
   
  -#: ../plugin/chmod.php:35
  -#, c-format
  -msgid "Change permission of \"%s\""
  +#: ../plugin/LikePages.php:148
  +msgid "No similar pages found"
   msgstr ""
   
  -#: ../plugin/css.php:33 ../plugin/css.php:41
  -msgid "Back to UserPreferences"
  +#: ../plugin/LikePages.php:150
  +msgid "You are strongly recommened to find it in MetaWikis. "
   msgstr ""
   
  -#: ../plugin/css.php:67
  -msgid "CSS disabled !"
  +#: ../plugin/LikePages.php:153
  +#, c-format
  +msgid "Like \"%s\""
   msgstr ""
   
  -#: ../plugin/format.php:17
  -msgid "It is a XML format !"
  +#: ../plugin/LikePages.php:156
  +msgid "Search all MetaWikis"
   msgstr ""
   
  -#: ../plugin/html2pdf.php:30
  -msgid "The TCPDF class not found!"
  +#: ../plugin/LikePages.php:157
  +msgid "Slow Slow"
   msgstr ""
   
   #: ../plugin/login.php:29
  @@ -1116,11 +829,11 @@
   msgid "Join"
   msgstr ""
   
  -#: ../plugin/login.php:47 ../plugin/minilogin.php:25
  +#: ../plugin/login.php:49 ../plugin/minilogin.php:25
   msgid "Logout"
   msgstr ""
   
  -#: ../plugin/login.php:48 ../plugin/minilogin.php:24 ../locale/dummy.php:3
  +#: ../plugin/login.php:50 ../plugin/minilogin.php:24 ../locale/dummy.php:3
   msgid "UserPreferences"
   msgstr ""
   
  @@ -1132,7 +845,11 @@
   msgid "No manpage found"
   msgstr ""
   
  -#: ../plugin/minilogin.php:18 ../wikilib.php:2050
  +#: ../plugin/man_get.php:122
  +msgid "Edit man page"
  +msgstr ""
  +
  +#: ../plugin/minilogin.php:18 ../wikilib.php:2081
   msgid "Login or Join"
   msgstr ""
   
  @@ -1163,6 +880,10 @@
   msgid "Local translation files are successfully translated !\n"
   msgstr ""
   
  +#: ../plugin/Navigation.php:19
  +msgid "No Index page found"
  +msgstr ""
  +
   #: ../plugin/new.php:13 ../plugin/new.php:28
   msgid "Create a new page"
   msgstr ""
  @@ -1175,10 +896,51 @@
   msgid "Normalize this page name"
   msgstr ""
   
  +#: ../plugin/OeKaki.php:36
  +msgid "Draw a new picture"
  +msgstr ""
  +
  +#: ../plugin/OeKaki.php:118
  +msgid "Create new picture"
  +msgstr ""
  +
  +#: ../plugin/OeKaki.php:127
  +msgid "Edit Image"
  +msgstr ""
  +
  +#: ../plugin/pagelist.php:109 ../plugin/pagelist.php:126
  +#: ../plugin/RecentChanges.php:212
  +#, c-format
  +msgid "[%sh %sm ago]"
  +msgstr ""
  +
   #: ../plugin/pageview.php:70
   msgid "First:"
   msgstr ""
   
  +#: ../plugin/pageview.php:75 ../plugin/SlideShow.php:121
  +msgid "Next:"
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:29
  +#, c-format
  +msgid "Total %s plugin activated."
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:34
  +#, c-format
  +msgid "%s is internal plugin."
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:36
  +#, c-format
  +msgid "%s plugin is not found."
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:54
  +msgid "Version"
  +msgstr ""
  +
   #: ../plugin/print.php:24
   #, c-format
   msgid "Retrieved from %s"
  @@ -1197,36 +959,70 @@
   msgid "Save Changes"
   msgstr ""
   
  -#: ../plugin/processor/monimarkup.php:489 ../wiki.php:3827
  -msgid "edit"
  +#: ../plugin/processor/monimarkup.php:485 ../wiki.php:3836
  +msgid "edit"
  +msgstr ""
  +
  +#: ../plugin/quicklinks.php:16 ../plugin/scrap.php:35
  +#: ../plugin/subscribe.php:19 ../plugin/subscribe.php:55
  +msgid "Please login or make your ID."
  +msgstr ""
  +
  +#: ../plugin/quicklinks.php:22 ../plugin/scrap.php:38
  +#: ../plugin/subscribe.php:61
  +msgid "Goto UserPreferences"
  +msgstr ""
  +
  +#: ../plugin/quicklinks.php:23
  +msgid ""
  +"If you want to custumize your quicklinks, just make your ID and register "
  +"your email address in the UserPreferences."
  +msgstr ""
  +
  +#: ../plugin/quicklinks.php:38
  +msgid "QucikLinks are updated."
  +msgstr ""
  +
  +#: ../plugin/quicklinks.php:50
  +msgid "Do you want to customize your quicklinks ?"
  +msgstr ""
  +
  +#: ../plugin/Rating.php:58
  +msgid "Awful!"
  +msgstr ""
  +
  +#: ../plugin/Rating.php:59
  +msgid "Not the worst ever."
   msgstr ""
   
  -#: ../plugin/processor/vim.php:75
  -msgid "Toggle line numbers"
  +#: ../plugin/Rating.php:60
  +msgid "Not bad!"
   msgstr ""
   
  -#: ../plugin/quicklinks.php:16 ../plugin/scrap.php:33
  -#: ../plugin/subscribe.php:19 ../plugin/subscribe.php:55
  -msgid "Please login or make your ID."
  +#: ../plugin/Rating.php:61
  +msgid "Useful!"
   msgstr ""
   
  -#: ../plugin/quicklinks.php:22 ../plugin/scrap.php:36
  -#: ../plugin/subscribe.php:61
  -msgid "Goto UserPreferences"
  +#: ../plugin/Rating.php:62
  +msgid "Very Gooood!"
   msgstr ""
   
  -#: ../plugin/quicklinks.php:23
  -msgid ""
  -"If you want to custumize your quicklinks, just make your ID and register "
  -"your email address in the UserPreferences."
  +#: ../plugin/Rating.php:84 ../plugin/security/community.php:26
  +#: ../plugin/security/community.php:36 ../plugin/security/community.php:46
  +#: ../plugin/security/community.php:61 ../plugin/security/mustlogin.php:29
  +#: ../plugin/security/mustlogin.php:40 ../plugin/security/mustlogin.php:51
  +#: ../plugin/security/mustlogin.php:67 ../plugin/security/needtologin.php:29
  +#: ../plugin/security/needtologin.php:40 ../plugin/security/needtologin.php:51
  +#: ../plugin/security/userbased.php:62 ../plugin/Vote.php:67
  +msgid "Please Login or make your ID on this Wiki ;)"
   msgstr ""
   
  -#: ../plugin/quicklinks.php:38
  -msgid "QucikLinks are updated."
  +#: ../plugin/Rating.php:188
  +msgid "Invalid rating request !"
   msgstr ""
   
  -#: ../plugin/quicklinks.php:50
  -msgid "Do you want to customize your quicklinks ?"
  +#: ../plugin/Rating.php:203
  +msgid "Rating successfully !"
   msgstr ""
   
   #: ../plugin/rawblog.php:63 ../plugin/rawblog.php:73
  @@ -1234,6 +1030,17 @@
   msgid "Delete Blog entry \"%s\""
   msgstr ""
   
  +#: ../plugin/rcsimport.php:32 ../plugin/rcsimport.php:88
  +#: ../plugin/rename.php:77 ../plugin/revert.php:82
  +#: ../plugin/UploadedFiles.php:429 ../plugin/userinfo.php:37
  +#: ../wikilib.php:1110 ../wikilib.php:2000
  +msgid "Password"
  +msgstr ""
  +
  +#: ../plugin/rcsimport.php:76
  +msgid "Page name"
  +msgstr ""
  +
   #: ../plugin/rcs.php:13
   #, c-format
   msgid "%s does not support rcs options."
  @@ -1276,6 +1083,22 @@
   msgid "BlogChanges at %s"
   msgstr ""
   
  +#: ../plugin/RecentChanges.php:124
  +msgid "Show changes for "
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:129
  +msgid "days ago"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:230
  +msgid "set bookmark"
  +msgstr ""
  +
  +#: ../plugin/referer.php:139
  +msgid "Referer history"
  +msgstr ""
  +
   #: ../plugin/rename.php:19
   #, c-format
   msgid "\"%s\" is renamed !"
  @@ -1309,6 +1132,10 @@
   msgid "New name:"
   msgstr ""
   
  +#: ../plugin/rename.php:69 ../plugin/UploadFile.php:350
  +msgid "Rename"
  +msgstr ""
  +
   #: ../plugin/rename.php:74
   msgid "Rename and fix Backlinks"
   msgstr ""
  @@ -1317,7 +1144,7 @@
   msgid "Only WikiMaster can rename this page"
   msgstr ""
   
  -#: ../plugin/rename.php:79 ../wikilib.php:1130
  +#: ../plugin/rename.php:79 ../wikilib.php:1156
   msgid "with revision history"
   msgstr ""
   
  @@ -1359,7 +1186,7 @@
   msgid "Select a tarball file to restore"
   msgstr ""
   
  -#: ../plugin/revert.php:23 ../wiki.php:5298
  +#: ../plugin/revert.php:23 ../wiki.php:5336
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr ""
  @@ -1412,28 +1239,42 @@
   msgid "Scrap lists updated."
   msgstr ""
   
  -#: ../plugin/scrap.php:65
  +#: ../plugin/scrap.php:61
  +#, c-format
  +msgid "\"%s\" is unscrapped."
  +msgstr ""
  +
  +#: ../plugin/scrap.php:64
  +#, c-format
  +msgid "\"%s\" is scrapped."
  +msgstr ""
  +
  +#: ../plugin/scrap.php:89
   #, c-format
   msgid "Do you want to scrap \"%s\" ?"
   msgstr ""
   
  -#: ../plugin/security/acl.php:146
  +#: ../plugin/scrap.php:92
  +msgid "Scrapped pages"
  +msgstr ""
  +
  +#: ../plugin/security/acl.php:141
   msgid "ACL groups"
   msgstr ""
   
  -#: ../plugin/security/acl.php:149
  +#: ../plugin/security/acl.php:144
   msgid "Allowed ACL actions"
   msgstr ""
   
  -#: ../plugin/security/acl.php:154
  +#: ../plugin/security/acl.php:149
   msgid "Denied ACL actions"
   msgstr ""
   
  -#: ../plugin/security/acl.php:159
  +#: ../plugin/security/acl.php:154
   msgid "Protected ACL actions"
   msgstr ""
   
  -#: ../plugin/security/acl.php:222 ../plugin/security/community.php:25
  +#: ../plugin/security/acl.php:217 ../plugin/security/community.php:25
   #: ../plugin/security/community.php:35 ../plugin/security/community.php:45
   #: ../plugin/security/mustlogin.php:28 ../plugin/security/mustlogin.php:39
   #: ../plugin/security/mustlogin.php:50 ../plugin/security/needtologin.php:28
  @@ -1442,7 +1283,7 @@
   msgid "You are not allowed to '%s' on this page"
   msgstr ""
   
  -#: ../plugin/security/acl.php:223
  +#: ../plugin/security/acl.php:218
   msgid "Please contact WikiMasters :b"
   msgstr ""
   
  @@ -1490,6 +1331,26 @@
   msgid "Trackback sent"
   msgstr ""
   
  +#: ../plugin/SlideShow.php:28
  +msgid "No page found"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:102
  +msgid "Start:"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:111
  +msgid "End:"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:131
  +msgid "Prev:"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:138
  +msgid "Return"
  +msgstr ""
  +
   #: ../plugin/subscribe.php:24 ../plugin/subscribe.php:28
   msgid "You did'nt subscribed any pages yet."
   msgstr ""
  @@ -1536,6 +1397,34 @@
   msgid "Subscribed pages"
   msgstr ""
   
  +#: ../plugin/SWFUpload.php:136
  +msgid "Files..."
  +msgstr ""
  +
  +#: ../plugin/SWFUpload.php:137
  +msgid "Upload"
  +msgstr ""
  +
  +#: ../plugin/SWFUpload.php:138
  +msgid "Cancel All files"
  +msgstr ""
  +
  +#: ../plugin/SystemInfo.php:16
  +msgid "Number of Pages"
  +msgstr ""
  +
  +#: ../plugin/SystemInfo.php:17
  +msgid "HTTP Server Version"
  +msgstr ""
  +
  +#: ../plugin/SystemInfo.php:18
  +msgid "MoniWiki Version"
  +msgstr ""
  +
  +#: ../plugin/SystemInfo.php:19
  +msgid "PHP Version"
  +msgstr ""
  +
   #: ../plugin/theme.php:29
   msgid "Theme cleared. Goto UserPreferences."
   msgstr ""
  @@ -1560,6 +1449,47 @@
   msgid "Invalid use of ticket"
   msgstr ""
   
  +#: ../plugin/Tour.php:57
  +msgid "BackLinks"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:61
  +msgid "Keywords"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:70
  +#, c-format
  +msgid " from %s"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:73
  +#, c-format
  +msgid "%s Tour %s"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:121
  +msgid "links"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:123
  +msgid "deeper"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:124
  +#, c-format
  +msgid "More %s or more %s"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:139
  +#, c-format
  +msgid "Total %d related keywords"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:142
  +#, c-format
  +msgid "Total %d related pages"
  +msgstr ""
  +
   #: ../plugin/trackback.php:53
   msgid "TrackBack is not activated !"
   msgstr ""
  @@ -1586,6 +1516,93 @@
   msgid "No TrackBack entry found for %s"
   msgstr ""
   
  +#: ../plugin/TwinPages.php:13
  +#, c-format
  +msgid "TwinPages of %s"
  +msgstr ""
  +
  +#: ../plugin/TwinPages.php:19 ../wiki.php:5320
  +msgid "See [TwinPages]: "
  +msgstr ""
  +
  +#: ../plugin/TwinPages.php:21
  +msgid "No TwinPages found."
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:280
  +msgid "File name"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:281
  +msgid "Size"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:282
  +msgid "Date"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:330
  +msgid "Next page &raquo;"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:332
  +msgid "&laquo; First page"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:424
  +#, c-format
  +msgid "Total %d files"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:430 ../wikilib.php:1088
  +msgid "Delete selected files"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:147 ../plugin/UploadFile.php:161
  +#, c-format
  +msgid "The %s type of %s is not allowed to upload"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:163
  +#, c-format
  +msgid "%s is not allowed to upload"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:218
  +#, c-format
  +msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:251
  +msgid "Please check your php.ini setting"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:261
  +#, c-format
  +msgid "File \"%s\" is uploaded successfully"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:300
  +msgid "Files are uploaded successfully"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:344
  +msgid "Replace original file"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:345
  +msgid "Rename if it already exist"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:358
  +#, c-format
  +msgid "or %s."
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:358
  +msgid "Upload files"
  +msgstr ""
  +
   #: ../plugin/userform.php:35 ../plugin/userform.php:38
   msgid "Successfully confirmed"
   msgstr ""
  @@ -1610,198 +1627,198 @@
   msgid "ID does not exists !"
   msgstr ""
   
  -#: ../plugin/userform.php:82 ../plugin/userform.php:271
  +#: ../plugin/userform.php:82 ../plugin/userform.php:274
   #, c-format
   msgid "Successfully login as '%s'"
   msgstr ""
   
  -#: ../plugin/userform.php:89 ../plugin/userform.php:276
  -#: ../plugin/userform.php:319
  +#: ../plugin/userform.php:90 ../plugin/userform.php:279
  +#: ../plugin/userform.php:322
   msgid "Invalid password !"
   msgstr ""
   
  -#: ../plugin/userform.php:93
  +#: ../plugin/userform.php:94
   #, c-format
   msgid "\"%s\" does not exists on this wiki !"
   msgstr ""
   
  -#: ../plugin/userform.php:95
  +#: ../plugin/userform.php:96
   msgid "Make new ID on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:101
  +#: ../plugin/userform.php:102
   msgid "Cookie deleted !"
   msgstr ""
   
  -#: ../plugin/userform.php:104 ../wikilib.php:2120
  +#: ../plugin/userform.php:107 ../wikilib.php:2151
   msgid "E-mail new password"
   msgstr ""
   
  -#: ../plugin/userform.php:149
  +#: ../plugin/userform.php:152
   msgid "New password confirmation"
   msgstr ""
   
  -#: ../plugin/userform.php:154
  +#: ../plugin/userform.php:157
   msgid "Please confirm your new password"
   msgstr ""
   
  -#: ../plugin/userform.php:156
  +#: ../plugin/userform.php:159
   #, c-format
   msgid "Your new password is %s"
   msgstr ""
   
  -#: ../plugin/userform.php:157 ../plugin/userform.php:263
  +#: ../plugin/userform.php:160 ../plugin/userform.php:266
   msgid "Please change your password later"
   msgstr ""
   
  -#: ../plugin/userform.php:161 ../plugin/userform.php:169
  +#: ../plugin/userform.php:164 ../plugin/userform.php:172
   msgid "Fail to e-mail notification !"
   msgstr ""
   
  -#: ../plugin/userform.php:164
  +#: ../plugin/userform.php:167
   msgid "New password is sent to your e-mail !"
   msgstr ""
   
  -#: ../plugin/userform.php:165
  +#: ../plugin/userform.php:168
   msgid "Please check your e-mail"
   msgstr ""
   
  -#: ../plugin/userform.php:170
  +#: ../plugin/userform.php:173
   msgid "E-mail mismatch !"
   msgstr ""
   
  -#: ../plugin/userform.php:172
  +#: ../plugin/userform.php:175
   msgid "Invalid request"
   msgstr ""
   
  -#: ../plugin/userform.php:173
  +#: ../plugin/userform.php:176
   msgid "Please confirm your e-mail address first !"
   msgstr ""
   
  -#: ../plugin/userform.php:180
  +#: ../plugin/userform.php:183
   msgid "ID and e-mail mismatch !"
   msgstr ""
   
  -#: ../plugin/userform.php:182
  +#: ../plugin/userform.php:185
   msgid "Please try again or make a new profile"
   msgstr ""
   
  -#: ../plugin/userform.php:222 ../plugin/userform.php:307
  +#: ../plugin/userform.php:225 ../plugin/userform.php:310
   msgid "too short password!"
   msgstr ""
   
  -#: ../plugin/userform.php:223
  +#: ../plugin/userform.php:226
   msgid "mismatch password!"
   msgstr ""
   
  -#: ../plugin/userform.php:224 ../plugin/userform.php:311
  +#: ../plugin/userform.php:227 ../plugin/userform.php:314
   msgid "not acceptable character found in the password!"
   msgstr ""
   
  -#: ../plugin/userform.php:227
  +#: ../plugin/userform.php:230
   msgid "Your password is too simple to use as a password !"
   msgstr ""
   
  -#: ../plugin/userform.php:233 ../plugin/userform.php:342
  +#: ../plugin/userform.php:236 ../plugin/userform.php:345
   msgid "Your email address is not valid"
   msgstr ""
   
  -#: ../plugin/userform.php:238 ../plugin/userform.php:410
  +#: ../plugin/userform.php:241 ../plugin/userform.php:413
   msgid "Fail to register"
   msgstr ""
   
  -#: ../plugin/userform.php:239 ../plugin/userform.php:411
  +#: ../plugin/userform.php:242 ../plugin/userform.php:414
   msgid "You are not allowed to register on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:240 ../plugin/userform.php:412 ../wiki.php:5236
  -#: ../wiki.php:5247
  +#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5274
  +#: ../wiki.php:5285
   msgid "Please contact WikiMasters"
   msgstr ""
   
  -#: ../plugin/userform.php:244
  +#: ../plugin/userform.php:247
   msgid "Successfully added!"
   msgstr ""
   
  -#: ../plugin/userform.php:250
  +#: ../plugin/userform.php:253
   #, c-format
   msgid "Successfully added as '%s'"
   msgstr ""
   
  -#: ../plugin/userform.php:251
  +#: ../plugin/userform.php:254
   msgid "Please check your mailbox"
   msgstr ""
   
  -#: ../plugin/userform.php:258 ../plugin/userform.php:336
  +#: ../plugin/userform.php:261 ../plugin/userform.php:339
   msgid "E-mail confirmation"
   msgstr ""
   
  -#: ../plugin/userform.php:260 ../plugin/userform.php:338
  +#: ../plugin/userform.php:263 ../plugin/userform.php:341
   msgid "Please confirm your email address"
   msgstr ""
   
  -#: ../plugin/userform.php:262
  +#: ../plugin/userform.php:265
   #, c-format
   msgid "Your initial password is %s"
   msgstr ""
   
  -#: ../plugin/userform.php:266
  +#: ../plugin/userform.php:269
   msgid "Confirmation E-mail sent"
   msgstr ""
   
  -#: ../plugin/userform.php:281
  +#: ../plugin/userform.php:284
   msgid "Invalid username !"
   msgstr ""
   
  -#: ../plugin/userform.php:309
  +#: ../plugin/userform.php:312
   msgid "mismatch password !"
   msgstr ""
   
  -#: ../plugin/userform.php:312 ../plugin/userform.php:320
  +#: ../plugin/userform.php:315 ../plugin/userform.php:323
   msgid "Password is not changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:314
  +#: ../plugin/userform.php:317
   msgid "Password is changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:316
  +#: ../plugin/userform.php:319
   msgid "Password is too simple to use as a password !"
   msgstr ""
   
  -#: ../plugin/userform.php:340
  +#: ../plugin/userform.php:343
   msgid "E-mail confirmation mail sent"
   msgstr ""
   
  -#: ../plugin/userform.php:351
  +#: ../plugin/userform.php:354
   msgid "Your Nickname already used as ID in this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:356
  +#: ../plugin/userform.php:359
   msgid "Profiles are saved successfully !"
   msgstr ""
   
  -#: ../plugin/userform.php:386 ../plugin/userform.php:432
  +#: ../plugin/userform.php:382 ../plugin/userform.php:435
   #, c-format
   msgid "Authentication request was failed: %s"
   msgstr ""
   
  -#: ../plugin/userform.php:405
  +#: ../plugin/userform.php:408
   #, c-format
   msgid "Successfully login as '%s' via OpenID."
   msgstr ""
   
  -#: ../plugin/userform.php:419
  +#: ../plugin/userform.php:422
   #, c-format
   msgid "Your Nickname %s already used as ID in this Wiki."
   msgstr ""
   
  -#: ../plugin/userform.php:427
  +#: ../plugin/userform.php:430
   #, c-format
   msgid "OpenID Authentication successful and saved as %s."
   msgstr ""
   
  -#: ../plugin/userform.php:434
  +#: ../plugin/userform.php:437
   msgid "Invalid OpenID Authentication request"
   msgstr ""
   
  @@ -1824,6 +1841,22 @@
   msgid "User \"%s\" are deleted !"
   msgstr ""
   
  +#: ../plugin/VisualTour.php:133
  +msgid "Normal"
  +msgstr ""
  +
  +#: ../plugin/VisualTour.php:135
  +msgid "Wider"
  +msgstr ""
  +
  +#: ../plugin/VisualTour.php:137
  +msgid "Deeper"
  +msgstr ""
  +
  +#: ../plugin/Vote.php:113
  +msgid "Voted successfully"
  +msgstr ""
  +
   #: ../plugin/whois.php:119
   #, c-format
   msgid "Could not connect to %s server"
  @@ -1834,139 +1867,143 @@
   msgid "Whois search result for %s"
   msgstr ""
   
  -#: ../wiki.php:1236
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2439
  +msgid "Others"
  +msgstr ""
  +
  +#: ../wiki.php:1238
   #, c-format
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1656
  +#: ../wiki.php:1658
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
  -#: ../wiki.php:1666
  +#: ../wiki.php:1668
   msgid "File does not exist"
   msgstr ""
   
  -#: ../wiki.php:2037
  +#: ../wiki.php:2043
   #, c-format
   msgid "File '%s' does not exist."
   msgstr ""
   
  -#: ../wiki.php:2907 ../wiki.php:2918 ../wiki.php:5472
  +#: ../wiki.php:2916 ../wiki.php:2927 ../wiki.php:5514
   msgid "Invalid ajax action."
   msgstr ""
   
  -#: ../wiki.php:3412
  +#: ../wiki.php:3421
   msgid "Tags:"
   msgstr ""
   
  -#: ../wiki.php:3440
  +#: ../wiki.php:3449
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:3440
  +#: ../wiki.php:3449
   #, c-format
   msgid "TwinPages"
   msgstr ""
   
  -#: ../wiki.php:3445
  +#: ../wiki.php:3454
   msgid "See [TwinPages]:"
   msgstr ""
   
  -#: ../wiki.php:4007
  +#: ../wiki.php:4016
   msgid "Sister Sites Index"
   msgstr ""
   
  -#: ../wiki.php:4435 ../locale/dummy.php:6
  +#: ../wiki.php:4444 ../locale/dummy.php:6
   msgid "EditText"
   msgstr ""
   
  -#: ../wiki.php:4437
  +#: ../wiki.php:4446
   msgid "NotEditable"
   msgstr ""
   
  -#: ../wiki.php:4441 ../locale/dummy.php:6
  +#: ../wiki.php:4450 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:4442 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4451 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr ""
   
  -#: ../wiki.php:4825
  +#: ../wiki.php:4854
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5235
  +#: ../wiki.php:5273
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5246
  +#: ../wiki.php:5284
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:5284 ../wiki.php:5293 ../wikilib.php:1344
  +#: ../wiki.php:5322 ../wiki.php:5331 ../wikilib.php:1370
   msgid "Create this page"
   msgstr ""
   
  -#: ../wiki.php:5295
  +#: ../wiki.php:5333
   #, c-format
   msgid "%s has saved revisions"
   msgstr ""
   
  -#: ../wiki.php:5296 ../wiki.php:5303
  +#: ../wiki.php:5334 ../wiki.php:5341
   #, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr ""
   
  -#: ../wiki.php:5301
  +#: ../wiki.php:5339
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr ""
   
  -#: ../wiki.php:5308
  +#: ../wiki.php:5346
   msgid "Please try to search with another word"
   msgstr ""
   
  -#: ../wiki.php:5320
  +#: ../wiki.php:5358
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr ""
   
  -#: ../wiki.php:5323
  +#: ../wiki.php:5361
   msgid "You have no templates"
   msgstr ""
   
  -#: ../wiki.php:5325
  +#: ../wiki.php:5363
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
   
  -#: ../wiki.php:5336
  +#: ../wiki.php:5374
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
  -#: ../wiki.php:5474
  +#: ../wiki.php:5516
   msgid "Invalid macro action."
   msgstr ""
   
  -#: ../wiki.php:5484
  +#: ../wiki.php:5526
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr ""
   
  -#: ../wiki.php:5504
  +#: ../wiki.php:5546
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:5507
  +#: ../wiki.php:5549
   msgid "Please enter the valid password"
   msgstr ""
   
  -#: ../wikilib.php:651
  +#: ../wikilib.php:656
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -1983,370 +2020,370 @@
   "no trailing white space allowed after tables or titles.<br />\n"
   msgstr ""
   
  -#: ../wikilib.php:688
  +#: ../wikilib.php:693
   msgid "You are not allowed to edit this page !"
   msgstr ""
   
  -#: ../wikilib.php:694
  +#: ../wikilib.php:699
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
  -#: ../wikilib.php:800
  +#: ../wikilib.php:824
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   
  -#: ../wikilib.php:802
  +#: ../wikilib.php:826
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr ""
   
  -#: ../wikilib.php:806
  +#: ../wikilib.php:830
   msgid "Merge"
   msgstr ""
   
  -#: ../wikilib.php:807
  +#: ../wikilib.php:831
   msgid "Merge manually"
   msgstr ""
   
  -#: ../wikilib.php:808
  +#: ../wikilib.php:832
   msgid "Ignore conflicts"
   msgstr ""
   
  -#: ../wikilib.php:835
  +#: ../wikilib.php:859
   msgid "ReduceEditor"
   msgstr ""
   
  -#: ../wikilib.php:836
  +#: ../wikilib.php:860
   msgid "EnlargeEditor"
   msgstr ""
   
  -#: ../wikilib.php:840 ../locale/dummy.php:6
  +#: ../wikilib.php:864 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
  -#: ../wikilib.php:842
  +#: ../wikilib.php:866
   msgid "HelpOnEditing"
   msgstr ""
   
  -#: ../wikilib.php:874
  +#: ../wikilib.php:898
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:894
  +#: ../wikilib.php:918
   msgid "--Select Category--"
   msgstr ""
   
  -#: ../wikilib.php:904
  +#: ../wikilib.php:928
   msgid "Minor edit"
   msgstr ""
   
  -#: ../wikilib.php:908
  +#: ../wikilib.php:932
   msgid "Summary of Change"
   msgstr ""
   
  -#: ../wikilib.php:913
  +#: ../wikilib.php:937
   msgid "Skip to preview"
   msgstr ""
   
  -#: ../wikilib.php:923 ../wikilib.php:2053 ../wikilib.php:2107
  +#: ../wikilib.php:949 ../wikilib.php:2084 ../wikilib.php:2138
   msgid "Save"
   msgstr ""
   
  -#: ../wikilib.php:996
  +#: ../wikilib.php:1022
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:1001
  +#: ../wikilib.php:1027
   #, c-format
   msgid "%s is not valid action"
   msgstr ""
   
  -#: ../wikilib.php:1003
  +#: ../wikilib.php:1029
   msgid "Is it valid action ?"
   msgstr ""
   
  -#: ../wikilib.php:1050
  +#: ../wikilib.php:1076
   #, c-format
   msgid "File '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:1052
  +#: ../wikilib.php:1078
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1057
  +#: ../wikilib.php:1083
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:1059
  +#: ../wikilib.php:1085
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1069 ../wikilib.php:1089
  +#: ../wikilib.php:1095 ../wikilib.php:1115
   msgid "No files are selected !"
   msgstr ""
   
  -#: ../wikilib.php:1082
  +#: ../wikilib.php:1108
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
  -#: ../wikilib.php:1086
  +#: ../wikilib.php:1112
   msgid "Delete selected file"
   msgstr ""
   
  -#: ../wikilib.php:1107
  +#: ../wikilib.php:1133
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr ""
   
  -#: ../wikilib.php:1122
  +#: ../wikilib.php:1148
   msgid "Please delete this file manually."
   msgstr ""
   
  -#: ../wikilib.php:1124
  +#: ../wikilib.php:1150
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr ""
   
  -#: ../wikilib.php:1177
  +#: ../wikilib.php:1203
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
  -#: ../wikilib.php:1346
  +#: ../wikilib.php:1372
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
   
  -#: ../wikilib.php:1346
  +#: ../wikilib.php:1372
   msgid "title"
   msgstr ""
   
  -#: ../wikilib.php:1360
  +#: ../wikilib.php:1386
   msgid "Please try to fulltext search"
   msgstr ""
   
  -#: ../wikilib.php:1363
  +#: ../wikilib.php:1389
   #, c-format
   msgid "You can also click %s to fulltext search.\n"
   msgstr ""
   
  -#: ../wikilib.php:1408 ../wikilib.php:1509
  +#: ../wikilib.php:1434 ../wikilib.php:1535
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr ""
   
  -#: ../wikilib.php:1414
  +#: ../wikilib.php:1440
   msgid "Section edit is not valid for non-exists page."
   msgstr ""
   
  -#: ../wikilib.php:1447 ../wikilib.php:1625
  +#: ../wikilib.php:1473 ../wikilib.php:1651
   msgid "mail does not supported by default."
   msgstr ""
   
  -#: ../wikilib.php:1451 ../wikilib.php:1629
  +#: ../wikilib.php:1477 ../wikilib.php:1655
   msgid "Sent notification mail."
   msgstr ""
   
  -#: ../wikilib.php:1453 ../wikilib.php:1631
  +#: ../wikilib.php:1479 ../wikilib.php:1657
   msgid "No subscribers found."
   msgstr ""
   
  -#: ../wikilib.php:1458 ../wikilib.php:1636
  +#: ../wikilib.php:1484 ../wikilib.php:1662
   #, c-format
   msgid "%s is not editable"
   msgstr ""
   
  -#: ../wikilib.php:1460 ../wikilib.php:1638
  +#: ../wikilib.php:1486 ../wikilib.php:1664
   #, c-format
   msgid "%s is saved"
   msgstr ""
   
  -#: ../wikilib.php:1500
  +#: ../wikilib.php:1526
   msgid "Goto Editor"
   msgstr ""
   
  -#: ../wikilib.php:1514
  +#: ../wikilib.php:1540
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr ""
   
  -#: ../wikilib.php:1515
  +#: ../wikilib.php:1541
   #, c-format
   msgid "%s is merged successfully"
   msgstr ""
   
  -#: ../wikilib.php:1519
  +#: ../wikilib.php:1545
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1520
  +#: ../wikilib.php:1546
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr ""
   
  -#: ../wikilib.php:1521
  +#: ../wikilib.php:1547
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1522
  +#: ../wikilib.php:1548
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1527
  +#: ../wikilib.php:1553
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr ""
   
  -#: ../wikilib.php:1528
  +#: ../wikilib.php:1554
   msgid "Please resolve conflicts manually."
   msgstr ""
   
  -#: ../wikilib.php:1531
  +#: ../wikilib.php:1557
   #, c-format
   msgid "Force merging for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1532
  +#: ../wikilib.php:1558
   msgid "Please be careful, you could damage useful information."
   msgstr ""
   
  -#: ../wikilib.php:1546
  +#: ../wikilib.php:1572
   msgid "Conflict error!"
   msgstr ""
   
  -#: ../wikilib.php:1585
  +#: ../wikilib.php:1611
   #, c-format
   msgid "Preview of %s"
   msgstr ""
   
  -#: ../wikilib.php:1670
  +#: ../wikilib.php:1696
   msgid "Nobody subscribed to this page."
   msgstr ""
   
  -#: ../wikilib.php:1689
  +#: ../wikilib.php:1715
   #, c-format
   msgid "%s page is modified"
   msgstr ""
   
  -#: ../wikilib.php:1718
  +#: ../wikilib.php:1744
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:1731
  +#: ../wikilib.php:1757
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:1736
  +#: ../wikilib.php:1762
   msgid "Mails are sent successfully"
   msgstr ""
   
  -#: ../wikilib.php:1737
  +#: ../wikilib.php:1763
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1739
  +#: ../wikilib.php:1765
   msgid "Fail to send mail"
   msgstr ""
   
  -#: ../wikilib.php:1750
  +#: ../wikilib.php:1776
   msgid "This wiki does not support sendmail"
   msgstr ""
   
  -#: ../wikilib.php:1848
  +#: ../wikilib.php:1874
   msgid "Invalid regular expression !"
   msgstr ""
   
  -#: ../wikilib.php:1872
  +#: ../wikilib.php:1898
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:1875
  +#: ../wikilib.php:1901
   msgid "Infinite loop possible!"
   msgstr ""
   
  -#: ../wikilib.php:1990
  +#: ../wikilib.php:2016
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:1991
  +#: ../wikilib.php:2017
   msgid "OpenID"
   msgstr ""
   
  -#: ../wikilib.php:2003 ../wikilib.php:2125
  +#: ../wikilib.php:2029 ../wikilib.php:2156
   msgid "ID"
   msgstr ""
   
  -#: ../wikilib.php:2033 ../wikilib.php:2118
  +#: ../wikilib.php:2064 ../wikilib.php:2149
   msgid "Make profile"
   msgstr ""
   
  -#: ../wikilib.php:2035
  +#: ../wikilib.php:2066
   msgid "password again"
   msgstr ""
   
  -#: ../wikilib.php:2037 ../wikilib.php:2086
  +#: ../wikilib.php:2068 ../wikilib.php:2117
   msgid "Mail"
   msgstr ""
   
  -#: ../wikilib.php:2059
  +#: ../wikilib.php:2090
   msgid "New password"
   msgstr ""
   
  -#: ../wikilib.php:2064
  +#: ../wikilib.php:2095
   msgid "Nickname"
   msgstr ""
   
  -#: ../wikilib.php:2087
  +#: ../wikilib.php:2118
   msgid "Time Zone"
   msgstr ""
   
  -#: ../wikilib.php:2096
  +#: ../wikilib.php:2127
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:2391
  +#: ../wikilib.php:2440
   msgid "Show all"
   msgstr ""
   
  -#: ../wikilib.php:2533
  +#: ../wikilib.php:2582
   msgid "Contents"
   msgstr ""
   
  -#: ../wikilib.php:2653
  +#: ../wikilib.php:2702
   #, c-format
   msgid "Title search for \"%s\""
   msgstr ""
   
  -#: ../monisetup.php:36
  +#: ../monisetup.php:35
   msgid "Check a dba configuration"
   msgstr ""
   
  -#: ../monisetup.php:48
  +#: ../monisetup.php:47
   #, c-format
   msgid "%s is selected."
   msgstr ""
   
  -#: ../monisetup.php:55
  +#: ../monisetup.php:54
   msgid "Check a AcceptPathInfo setting for Apache 2.x.xx"
   msgstr ""
   
  -#: ../monisetup.php:62 ../monisetup.php:68
  +#: ../monisetup.php:61 ../monisetup.php:67
   msgid "Off"
   msgstr ""
   
  -#: ../monisetup.php:70
  +#: ../monisetup.php:69
   msgid "On"
   msgstr ""
   
  @@ -2403,134 +2440,156 @@
   msgid "%s directory is not writable"
   msgstr ""
   
  -#: ../monisetup.php:304
  +#: ../monisetup.php:303
   #, c-format
   msgid "%s is not writable"
   msgstr ""
   
  -#: ../monisetup.php:311 ../monisetup.php:317
  +#: ../monisetup.php:310 ../monisetup.php:316
   #, c-format
   msgid "%s is created now"
   msgstr ""
   
  -#: ../monisetup.php:327
  +#: ../monisetup.php:326
   #, c-format
   msgid "%s is writable"
   msgstr ""
   
  -#: ../monisetup.php:427
  +#: ../monisetup.php:343
  +#, c-format
  +msgid ""
  +"If you want to check .htaccess file please delete '%s' file and reload it."
  +msgstr ""
  +
  +#: ../monisetup.php:346
  +msgid "Security check for 'upload_dir'."
  +msgstr ""
  +
  +#: ../monisetup.php:378
  +msgid ".htaccess for 'imgs_dir'."
  +msgstr ""
  +
  +#: ../monisetup.php:448
  +msgid "Fail"
  +msgstr ""
  +
  +#: ../monisetup.php:454
  +msgid "Unable to write .htaccess"
  +msgstr ""
  +
  +#: ../monisetup.php:550
   msgid "Click here to toggle all"
   msgstr ""
   
  -#: ../monisetup.php:428
  +#: ../monisetup.php:551
   msgid "Deselect all"
   msgstr ""
   
  -#: ../monisetup.php:433
  +#: ../monisetup.php:556
   msgid "Please be careful to deselect these pages"
   msgstr ""
   
  -#: ../monisetup.php:708
  +#: ../monisetup.php:831
   msgid "MoniWiki"
   msgstr ""
   
  -#: ../monisetup.php:711
  +#: ../monisetup.php:834
   msgid "'config.php' is not writable !"
   msgstr ""
   
  -#: ../monisetup.php:712
  +#: ../monisetup.php:835
   msgid ""
   "Please execute <tt>'monisetup.sh'</tt> or <tt>chmod a+w config.php</tt> "
   "first to change your settings."
   msgstr ""
   
  -#: ../monisetup.php:739
  +#: ../monisetup.php:862
   msgid "Invalid password error !"
   msgstr ""
   
  -#: ../monisetup.php:740
  +#: ../monisetup.php:863
   msgid ""
   "If you can't remember your admin password, delete password entry in the "
   "'config.php' and restart 'monisetup'"
   msgstr ""
   
  -#: ../monisetup.php:772
  +#: ../monisetup.php:895
   #, c-format
   msgid "Updated Configutations for this %s"
   msgstr ""
   
  -#: ../monisetup.php:791
  +#: ../monisetup.php:914
   msgid "Configurations are saved successfully"
   msgstr ""
   
  -#: ../monisetup.php:792
  +#: ../monisetup.php:915
   msgid ""
   "WARN: Please check <a href='monisetup.php'> your saved configurations</a>"
   msgstr ""
   
  -#: ../monisetup.php:793
  +#: ../monisetup.php:916
   msgid "If all is good, change 'config.php' permission as 644."
   msgstr ""
   
  -#: ../monisetup.php:805
  +#: ../monisetup.php:928
   msgid "Welcome to MoniWiki ! This is your first installation"
   msgstr ""
   
  -#: ../monisetup.php:812
  +#: ../monisetup.php:935
   msgid "Default settings are loaded..."
   msgstr ""
   
  -#: ../monisetup.php:821
  +#: ../monisetup.php:944
   msgid "Initial configurations are saved successfully."
   msgstr ""
   
  -#: ../monisetup.php:822
  +#: ../monisetup.php:945
   msgid "Goto <a href='monisetup.php'>MoniSetup</a> again to configure details"
   msgstr ""
   
  -#: ../monisetup.php:839 ../monisetup.php:841 ../monisetup.php:937
  -#: ../monisetup.php:939
  +#: ../monisetup.php:962 ../monisetup.php:964 ../monisetup.php:1060
  +#: ../monisetup.php:1062
   #, c-format
   msgid "goto %s"
   msgstr ""
   
  -#: ../monisetup.php:844
  +#: ../monisetup.php:967
   msgid "No WikiSeeds are selected"
   msgstr ""
   
  -#: ../monisetup.php:855
  +#: ../monisetup.php:978
   #, c-format
   msgid "Preview current settings for this %s"
   msgstr ""
   
  -#: ../monisetup.php:857
  +#: ../monisetup.php:980
   #, c-format
   msgid "Read current settings for this %s"
   msgstr ""
   
  -#: ../monisetup.php:885
  +#: ../monisetup.php:1008
   msgid "Change your settings"
   msgstr ""
   
  -#: ../monisetup.php:887
  +#: ../monisetup.php:1010
   msgid "WARN: You have to enter your Admin Password"
   msgstr ""
   
  -#: ../monisetup.php:889 ../monisetup.php:932
  +#: ../monisetup.php:1012 ../monisetup.php:1055
   #, c-format
   msgid "WARN: You have no WikiSeed on your %s"
   msgstr ""
   
  -#: ../monisetup.php:890 ../monisetup.php:933
  +#: ../monisetup.php:1013 ../monisetup.php:1056
   #, c-format
   msgid "If you want to put wikiseeds on your wiki %s now"
   msgstr ""
   
  -#: ../monisetup.php:891 ../monisetup.php:934
  +#: ../monisetup.php:1014 ../monisetup.php:1057
   msgid "Click here"
   msgstr ""
   
  -#: ../monisetup.php:926 ../monisetup.php:928
  +#: ../monisetup.php:1049 ../monisetup.php:1051
   msgid "Update"
   msgstr ""
   
  
  
  


wkpark      2009/01/02 14:51:22

  Modified:    locale/po fr.po ko.po moniwiki.pot
  Log:
  update msg
  
  Revision  Changes    Path
  1.24      +226 -250  moniwiki/locale/po/fr.po
  
  Index: fr.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/fr.po,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- fr.po	2 Jan 2009 05:45:20 -0000	1.23
  +++ fr.po	2 Jan 2009 05:51:21 -0000	1.24
  @@ -4,7 +4,7 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2008-12-31 20:11+0900\n"
  +"POT-Creation-Date: 2009-01-02 14:50+0900\n"
   "PO-Revision-Date: 2003-08-17 22:51+0900\n"
   "Last-Translator: Serge Stinckwich <Serge.Stinckwich@info.unicaen.fr>\n"
   "Language-Team: fr <fr@li.org>\n"
  @@ -54,9 +54,8 @@
   
   # ../plugin/VisualTour.php:59
   #: ../plugin/admin.php:143 ../plugin/PluginInfo.php:60
  -#, fuzzy
   msgid "Depend"
  -msgstr "Plus profond"
  +msgstr ""
   
   #: ../plugin/admin.php:147 ../plugin/PluginInfo.php:64
   msgid "URL"
  @@ -95,17 +94,17 @@
   #: ../plugin/Attachment.php:70 ../plugin/Attachment.php:331
   #, c-format
   msgid "Upload new Attachment \"%s\""
  -msgstr "Tlcharger le nouvel attachement \"%s\""
  +msgstr "T?l?charger le nouvel attachement \"%s\""
   
   # ../plugin/OeKaki.php:118
   #: ../plugin/Attachment.php:323
   msgid "or paste a new png picture"
  -msgstr "or Crer un nouveau dessin"
  +msgstr "or Cr?er un nouveau dessin"
   
   # ../plugin/OeKaki.php:118
   #: ../plugin/Attachment.php:328
   msgid "or draw a new gif picture"
  -msgstr "or Crer un nouveau dessin"
  +msgstr "or Cr?er un nouveau dessin"
   
   # ../plugin/Attachment.php:24
   #: ../plugin/Attachment.php:334
  @@ -169,7 +168,6 @@
   
   # ../plugin/rename.php:27
   #: ../plugin/bbs.php:784
  -#, fuzzy
   msgid "Read"
   msgstr "Renommer"
   
  @@ -181,9 +179,9 @@
   # ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
   # c-format
   #: ../plugin/bbs.php:836
  -#, fuzzy, c-format
  +#, c-format
   msgid "Your IP address is not allowed to %s at this BBS"
  -msgstr "Vous n'tes pas autoris  pouvoir '%s' cette page"
  +msgstr ""
   
   #: ../plugin/bbs.php:890
   msgid "Successfully deleted."
  @@ -195,9 +193,9 @@
   
   # ../wikilib.php:540
   #: ../plugin/bbs.php:932
  -#, fuzzy, c-format
  +#, c-format
   msgid "The article %s will be deleted."
  -msgstr "Le fichier '%s' est effac"
  +msgstr ""
   
   #: ../plugin/bbs.php:974
   msgid "Invalid HomePage address."
  @@ -219,9 +217,8 @@
   
   # ../plugin/Vote.php:109
   #: ../plugin/bbs.php:1025
  -#, fuzzy
   msgid "New post added successfully"
  -msgstr "Vote russi"
  +msgstr ""
   
   #: ../plugin/BlogChanges.php:198
   msgid "Category: "
  @@ -270,7 +267,7 @@
   # ../plugin/BlogChanges.php:226
   #: ../plugin/BlogChanges.php:443
   msgid "Previous"
  -msgstr "Prcdent"
  +msgstr "Pr?c?dent"
   
   #: ../plugin/BlogChanges.php:446
   msgid "Next"
  @@ -285,7 +282,7 @@
   #: ../plugin/Blog.php:108
   #, c-format
   msgid "\"%s\" is updated"
  -msgstr "\"%s\" est mis  jour"
  +msgstr "\"%s\" est mis ? jour"
   
   # ../plugin/Blog.php:83
   #: ../plugin/Blog.php:113
  @@ -305,36 +302,36 @@
   #: ../plugin/Blog.php:192
   #, c-format
   msgid "Comment added to \"%s\""
  -msgstr "Commentaire ajout  \"%s\""
  +msgstr "Commentaire ajout? ? \"%s\""
   
   # ../plugin/Blog.php:140
   #: ../plugin/Blog.php:195
   #, c-format
   msgid "Blog entry added to \"%s\""
  -msgstr "Entre de blog ajout  \"%s\""
  +msgstr "Entr?e de blog ajout? ? \"%s\""
   
   # ../plugin/Blog.php:140
   #: ../plugin/Blog.php:197
   #, c-format
   msgid "Blog entry \"%s\" added"
  -msgstr "Entre de blog ajout  \"%s\""
  +msgstr "Entr?e de blog ajout? ? \"%s\""
   
   # ../plugin/Blog.php:140
   #: ../plugin/Blog.php:199
   msgid "Blog entry added"
  -msgstr "Entre de blog ajout "
  +msgstr "Entr?e de blog ajout? ?"
   
   # ../plugin/Blog.php:176
   #: ../plugin/Blog.php:240
   #, c-format
   msgid "Add Comment to \"%s\""
  -msgstr "Ajouter un commentaire  \"%s\""
  +msgstr "Ajouter un commentaire ? \"%s\""
   
   # ../plugin/Blog.php:178
   #: ../plugin/Blog.php:242
   #, c-format
   msgid "Add Blog entry to \"%s\""
  -msgstr "Ajouter une entre de blog  \"%s\""
  +msgstr "Ajouter une entr?e de blog ? \"%s\""
   
   #: ../plugin/Blog.php:260 ../plugin/Blog.php:332 ../plugin/PluginInfo.php:52
   msgid "Name"
  @@ -357,7 +354,7 @@
   # ../plugin/Blog.php:210
   #: ../plugin/Blog.php:299
   msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
  -msgstr "<b>Une rgle horizontale</b> ---- ne s'applique pas au mode blog."
  +msgstr "<b>Une r?gle horizontale</b> ---- ne s'applique pas au mode blog."
   
   #: ../plugin/cacheadmin.php:105
   msgid "You are not WikiMaster!!"
  @@ -400,7 +397,7 @@
   # ../plugin/Draw.php:61
   #: ../plugin/Clip.php:53 ../plugin/Draw.php:122
   msgid "No filename given"
  -msgstr "Aucun nom de fichier donn"
  +msgstr "Aucun nom de fichier donn?"
   
   #: ../plugin/Clip.php:72
   msgid "Clipboard"
  @@ -418,7 +415,7 @@
   # ../wikilib.php:482
   #: ../plugin/Comment.php:88 ../wikilib.php:935 ../monisetup.php:1047
   msgid "Preview"
  -msgstr "Prvisualisation"
  +msgstr "Pr?visualisation"
   
   # ../plugin/rename.php:27
   #: ../plugin/Comment.php:102
  @@ -436,7 +433,7 @@
   msgstr ""
   
   # ../plugin/restore.php:27
  -#: ../plugin/Comment.php:129 ../plugin/Keywords.php:372
  +#: ../plugin/Comment.php:129 ../plugin/Keywords.php:373
   msgid "Page does not exists"
   msgstr ""
   
  @@ -459,7 +456,7 @@
   #: ../plugin/Comment.php:328
   #, c-format
   msgid "%s is commented successfully"
  -msgstr "Vote russi"
  +msgstr "Vote r?ussi"
   
   # ../plugin/Vote.php:109
   #: ../plugin/Comment.php:329
  @@ -469,7 +466,7 @@
   # ../plugin/css.php:29 ../plugin/css.php:37
   #: ../plugin/css.php:33 ../plugin/css.php:41
   msgid "Back to UserPreferences"
  -msgstr "Retour  UserPreferences"
  +msgstr "Retour ? UserPreferences"
   
   #: ../plugin/css.php:67
   msgid "CSS disabled !"
  @@ -478,7 +475,7 @@
   # ../wiki.php:2211 ../wiki.php:2360
   #: ../plugin/Diff.php:207 ../plugin/Info.php:220
   msgid "No older revisions available"
  -msgstr "Aucune rvision plus ancienne disponible"
  +msgstr "Aucune r?vision plus ancienne disponible"
   
   # ../wikilib.php:803
   #: ../plugin/Diff.php:212 ../plugin/Info.php:226 ../plugin/rcsexport.php:13
  @@ -489,24 +486,24 @@
   # ../wiki.php:2338 ../wiki.php:2373 ../wikilib.php:770
   #: ../plugin/Diff.php:223 ../wikilib.php:1592
   msgid "No difference found"
  -msgstr "Aucune diffrence trouv"
  +msgstr "Aucune diff?rence trouv?"
   
   # ../wiki.php:2376
   #: ../plugin/Diff.php:227
   msgid "Difference between versions"
  -msgstr "Diffrence entre les versions"
  +msgstr "Diff?rence entre les versions"
   
   # ../wiki.php:2378
   #: ../plugin/Diff.php:229 ../plugin/Diff.php:341
   #, c-format
   msgid "Difference between r%s and r%s"
  -msgstr "Diffrence entre r%s et r%s"
  +msgstr "Diff?rence entre r%s et r%s"
   
   # ../wiki.php:2382
   #: ../plugin/Diff.php:232 ../plugin/Diff.php:343
   #, c-format
   msgid "Difference between r%s and the current"
  -msgstr "Diffrence entre r%s et la version courante"
  +msgstr "Diff?rence entre r%s et la version courante"
   
   # ../locale/dummy.php:7
   #: ../plugin/Diff.php:345
  @@ -527,12 +524,12 @@
   # ../plugin/Draw.php:82
   #: ../plugin/Draw.php:146
   msgid "Edit drawing"
  -msgstr "diter le dessin"
  +msgstr "?diter le dessin"
   
   # ../plugin/Draw.php:91
   #: ../plugin/Draw.php:155
   msgid "Edit new drawing"
  -msgstr "diter un nouveau dessin"
  +msgstr "?diter un nouveau dessin"
   
   # ../plugin/DueDate.php:41
   #: ../plugin/DueDate.php:41
  @@ -549,7 +546,7 @@
   #: ../plugin/DueDate.php:45
   #, c-format
   msgid "%d day(s) passed from %s."
  -msgstr "%d jour(s) se sont passs depuis %s."
  +msgstr "%d jour(s) se sont pass?s depuis %s."
   
   #: ../plugin/FastSearch.php:44 ../plugin/FullSearch.php:90
   msgid "No search text"
  @@ -563,14 +560,14 @@
   #: ../plugin/FastSearch.php:114 ../plugin/FullSearch.php:19
   #, c-format
   msgid "Full text search for \"%s\""
  -msgstr "Recherche en texte intgral pour \"%s\""
  +msgstr "Recherche en texte int?gral pour \"%s\""
   
   # ../plugin/FastSearch.php:125
   #: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:38
   #: ../wikilib.php:1380
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
  -msgstr "Trouv %s s'appariant avec %s sur un total de %s pages"
  +msgstr "Trouv? %s s'appariant avec %s sur un total de %s pages"
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
   #: ../wikilib.php:1382
  @@ -603,7 +600,7 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4448
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4453
   msgid "Refresh"
   msgstr ""
   
  @@ -614,13 +611,13 @@
   
   # ../wiki.php:2950
   #: ../plugin/FullSearch.php:51
  -#, fuzzy, c-format
  +#, c-format
   msgid "You can also click %s to search title.\n"
   msgstr ""
  -" ou cliquer sur %s pour faire une recherche en texte intgral de cette "
  +" ou cliquer sur %s pour faire une recherche en texte int?gral de cette "
   "page.\n"
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5334 ../wiki.php:5341
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5339 ../wiki.php:5346
   #: ../wikilib.php:1390
   msgid "here"
   msgstr ""
  @@ -671,7 +668,7 @@
   #: ../wikilib.php:1590
   #, c-format
   msgid "Go back or return to %s"
  -msgstr "Revenir en arrire ou retourner  %s"
  +msgstr "Revenir en arri?re ou retourner ? %s"
   
   #: ../plugin/Gallery.php:397
   msgid "Comments are edited"
  @@ -697,7 +694,7 @@
   # ../wiki.php:2110
   #: ../plugin/Info.php:34
   msgid "Revision History"
  -msgstr "Historique de rvision"
  +msgstr "Historique de r?vision"
   
   #: ../plugin/Info.php:37
   msgid "ver."
  @@ -705,15 +702,13 @@
   
   # ../locale/dummy.php:3
   #: ../plugin/Info.php:37
  -#, fuzzy
   msgid "Date and Changes"
  -msgstr "ChangementsRcents"
  +msgstr ""
   
   # ../wikilib.php:734
   #: ../plugin/Info.php:38
  -#, fuzzy
   msgid "Editor"
  -msgstr "Aller  l'diteur"
  +msgstr ""
   
   #: ../plugin/Info.php:41
   msgid "actions"
  @@ -760,21 +755,19 @@
   
   # ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
   #: ../plugin/JME.php:64
  -#, fuzzy, c-format
  +#, c-format
   msgid "Draw a new molecule '%s'"
  -msgstr "Faire un nouveau dessin"
  +msgstr ""
   
   # ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
   #: ../plugin/JME.php:66
  -#, fuzzy
   msgid "Draw a new molecule"
  -msgstr "Faire un nouveau dessin"
  +msgstr ""
   
   # ../plugin/Vote.php:109
   #: ../plugin/JME.php:104
  -#, fuzzy
   msgid "Molecule successfully added"
  -msgstr "Vote russi"
  +msgstr ""
   
   #: ../plugin/JME.php:110
   msgid "Edit Molecule"
  @@ -784,89 +777,89 @@
   msgid "Edit new molecule"
   msgstr ""
   
  -#: ../plugin/Keywords.php:330
  +#: ../plugin/Keywords.php:331
   msgid "hits"
   msgstr ""
   
  -#: ../plugin/Keywords.php:338
  +#: ../plugin/Keywords.php:339
   msgid "add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:341
  +#: ../plugin/Keywords.php:342
   msgid "Update keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:343
  +#: ../plugin/Keywords.php:344
   msgid "Add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:344
  +#: ../plugin/Keywords.php:345
   msgid "Add as common words"
   msgstr ""
   
  -#: ../plugin/Keywords.php:345
  +#: ../plugin/Keywords.php:346
   msgid "Unselect all"
   msgstr ""
   
  -#: ../plugin/Keywords.php:346
  +#: ../plugin/Keywords.php:347
   msgid "Suggest new Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:355
  +#: ../plugin/Keywords.php:356
   msgid "select language"
   msgstr ""
   
   # ../wiki.php:3009
  -#: ../plugin/Keywords.php:371
  +#: ../plugin/Keywords.php:372
   msgid "You are not able to add keywords."
   msgstr ""
   
   # ../wikilib.php:814
  -#: ../plugin/Keywords.php:385
  +#: ../plugin/Keywords.php:386
   #, c-format
   msgid "%s is not found."
   msgstr ""
   
  -#: ../plugin/Keywords.php:501
  +#: ../plugin/Keywords.php:502
   msgid "Common words are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:548
  +#: ../plugin/Keywords.php:549
   #, c-format
   msgid "Keywords for %s are updated"
   msgstr ""
   
   # ../plugin/quicklinks.php:38
  -#: ../plugin/Keywords.php:574
  +#: ../plugin/Keywords.php:575
   msgid "Keywords are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:576
  +#: ../plugin/Keywords.php:577
   msgid "There are no changes found"
   msgstr ""
   
  -#: ../plugin/Keywords.php:589
  +#: ../plugin/Keywords.php:590
   msgid "Update with these Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:609 ../plugin/Keywords.php:613
  +#: ../plugin/Keywords.php:610 ../plugin/Keywords.php:614
   msgid "alphabetically"
   msgstr ""
   
  -#: ../plugin/Keywords.php:610
  +#: ../plugin/Keywords.php:611
   msgid "by frequency"
   msgstr ""
   
  -#: ../plugin/Keywords.php:612
  +#: ../plugin/Keywords.php:613
   msgid "by size"
   msgstr ""
   
  -#: ../plugin/Keywords.php:618
  +#: ../plugin/Keywords.php:619
   #, c-format
   msgid "Keywords list %s (or %s)"
   msgstr ""
   
  -#: ../plugin/Keywords.php:623
  +#: ../plugin/Keywords.php:624
   #, c-format
   msgid "Select keywords for %s"
   msgstr ""
  @@ -874,7 +867,7 @@
   # ../wikilib.php:672 ../wikilib.php:1472
   #: ../plugin/LikePages.php:31 ../wikilib.php:1271 ../wikilib.php:2693
   msgid "Use more specific text"
  -msgstr "Utiliser un texte plus spcifique"
  +msgstr "Utiliser un texte plus sp?cifique"
   
   #: ../plugin/LikePages.php:109
   msgid "These pages share a similar word..."
  @@ -923,38 +916,37 @@
   # ../plugin/login.php:27
   #: ../plugin/login.php:31
   msgid "Join"
  -msgstr "Se joindre "
  +msgstr "Se joindre ?"
   
   # ../plugin/login.php:41 ../plugin/minilogin.php:29
   #: ../plugin/login.php:49 ../plugin/minilogin.php:25
   msgid "Logout"
  -msgstr "Se dconnecter"
  +msgstr "Se d?connecter"
   
   # ../locale/dummy.php:3 ../plugin/login.php:42 ../plugin/minilogin.php:28
   #: ../plugin/login.php:50 ../plugin/minilogin.php:24 ../locale/dummy.php:3
   msgid "UserPreferences"
  -msgstr "PrfrencesUtilisateur"
  +msgstr "Pr?f?rencesUtilisateur"
   
   # ../plugin/man_get.php:13
   #: ../plugin/man_get.php:17
   msgid "No manpage selected"
  -msgstr "Aucune page de manuel slectionn"
  +msgstr "Aucune page de manuel s?lectionn?"
   
   # ../plugin/man_get.php:23
   #: ../plugin/man_get.php:43
   msgid "No manpage found"
  -msgstr "Aucune page de manuel trouv"
  +msgstr "Aucune page de manuel trouv?"
   
   # ../plugin/OeKaki.php:125
   #: ../plugin/man_get.php:122
  -#, fuzzy
   msgid "Edit man page"
  -msgstr "diter l'image"
  +msgstr ""
   
   # ../plugin/minilogin.php:22 ../wikilib.php:1076
   #: ../plugin/minilogin.php:18 ../wikilib.php:2081
   msgid "Login or Join"
  -msgstr "Se connecter ou se joindre "
  +msgstr "Se connecter ou se joindre ?"
   
   # ../plugin/minilogin.php:30
   #: ../plugin/minilogin.php:26
  @@ -979,9 +971,9 @@
   
   # ../wiki.php:3009
   #: ../plugin/msgtrans.php:23 ../plugin/userinfo.php:86
  -#, fuzzy, c-format
  +#, c-format
   msgid "You are not allowed to \"%s\" !"
  -msgstr "Vous n'tes pas autoris  '%s'"
  +msgstr ""
   
   #: ../plugin/msgtrans.php:143
   msgid "Local translation files are successfully translated !\n"
  @@ -1014,12 +1006,12 @@
   # ../plugin/OeKaki.php:118
   #: ../plugin/OeKaki.php:118
   msgid "Create new picture"
  -msgstr "Crer un nouveau dessin"
  +msgstr "Cr?er un nouveau dessin"
   
   # ../plugin/OeKaki.php:125
   #: ../plugin/OeKaki.php:127
   msgid "Edit Image"
  -msgstr "diter l'image"
  +msgstr "?diter l'image"
   
   #: ../plugin/pagelist.php:109 ../plugin/pagelist.php:126
   #: ../plugin/RecentChanges.php:212
  @@ -1070,11 +1062,10 @@
   
   # ../locale/dummy.php:3
   #: ../plugin/processor/bts.php:178
  -#, fuzzy
   msgid "Save Changes"
  -msgstr "ChangementsRcents"
  +msgstr ""
   
  -#: ../plugin/processor/monimarkup.php:485 ../wiki.php:3836
  +#: ../plugin/processor/monimarkup.php:490 ../wiki.php:3841
   msgid "edit"
   msgstr ""
   
  @@ -1088,7 +1079,7 @@
   #: ../plugin/quicklinks.php:22 ../plugin/scrap.php:38
   #: ../plugin/subscribe.php:61
   msgid "Goto UserPreferences"
  -msgstr "Aller  UserPreferences"
  +msgstr "Aller ? UserPreferences"
   
   # ../plugin/quicklinks.php:23
   #: ../plugin/quicklinks.php:23
  @@ -1102,12 +1093,12 @@
   # ../plugin/quicklinks.php:38
   #: ../plugin/quicklinks.php:38
   msgid "QucikLinks are updated."
  -msgstr "Les liens rapides ont t mis  jour."
  +msgstr "Les liens rapides ont ?t? mis ? jour."
   
   # ../plugin/quicklinks.php:50
   #: ../plugin/quicklinks.php:50
   msgid "Do you want to customize your quicklinks ?"
  -msgstr "Voulez vous mettre  jour vos liens rapides ?"
  +msgstr "Voulez vous mettre ? jour vos liens rapides ?"
   
   #: ../plugin/Rating.php:58
   msgid "Awful!"
  @@ -1147,15 +1138,14 @@
   
   # ../plugin/Vote.php:109
   #: ../plugin/Rating.php:203
  -#, fuzzy
   msgid "Rating successfully !"
  -msgstr "Vote russi"
  +msgstr ""
   
   # ../plugin/Blog.php:178
   #: ../plugin/rawblog.php:63 ../plugin/rawblog.php:73
  -#, fuzzy, c-format
  +#, c-format
   msgid "Delete Blog entry \"%s\""
  -msgstr "Ajouter une entre de blog  \"%s\""
  +msgstr ""
   
   # ../plugin/rename.php:36
   #: ../plugin/rcsimport.php:32 ../plugin/rcsimport.php:88
  @@ -1167,9 +1157,8 @@
   
   # ../plugin/rename.php:27
   #: ../plugin/rcsimport.php:76
  -#, fuzzy
   msgid "Page name"
  -msgstr "Renommer"
  +msgstr ""
   
   # ../wikilib.php:803
   #: ../plugin/rcs.php:13
  @@ -1239,7 +1228,7 @@
   #: ../plugin/rename.php:19
   #, c-format
   msgid "\"%s\" is renamed !"
  -msgstr "\"%s\" est renomm !"
  +msgstr "\"%s\" est renomm? !"
   
   # ../wikilib.php:816
   #: ../plugin/rename.php:35
  @@ -1291,7 +1280,7 @@
   # ../plugin/rename.php:39 ../wikilib.php:588
   #: ../plugin/rename.php:79 ../wikilib.php:1156
   msgid "with revision history"
  -msgstr "avec l'historique de rvision"
  +msgstr "avec l'historique de r?vision"
   
   #: ../plugin/rename.php:82
   msgid "Check backlinks"
  @@ -1300,7 +1289,7 @@
   # ../plugin/restore.php:23
   #: ../plugin/restore.php:23
   msgid "Error: Don't try to overwrite it"
  -msgstr "Erreur : n'essayez pas d'crire par dessus"
  +msgstr "Erreur : n'essayez pas d'?crire par dessus"
   
   # ../plugin/subscribe.php:22
   #: ../plugin/restore.php:24
  @@ -1331,28 +1320,27 @@
   # ../plugin/restore.php:62
   #: ../plugin/restore.php:67
   msgid "Restore backuped data"
  -msgstr "Restaurer des donnes sauvegardes"
  +msgstr "Restaurer des donn?es sauvegard?es"
   
   #: ../plugin/restore.php:68
   msgid "Select a tarball file to restore"
   msgstr ""
   
  -#: ../plugin/revert.php:23 ../wiki.php:5336
  +#: ../plugin/revert.php:23 ../wiki.php:5341
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr ""
   
   # ../wiki.php:2211 ../wiki.php:2360
   #: ../plugin/revert.php:57
  -#, fuzzy
   msgid "No version control available."
  -msgstr "Aucune rvision plus ancienne disponible"
  +msgstr ""
   
   # ../plugin/Vote.php:109
   #: ../plugin/revert.php:61
  -#, fuzzy, c-format
  +#, c-format
   msgid "%s is successfully rollback."
  -msgstr "Vote russi"
  +msgstr ""
   
   #: ../plugin/revert.php:66
   msgid "Are you really want to overwrite this page ?"
  @@ -1372,9 +1360,9 @@
   
   # ../wikilib.php:769
   #: ../plugin/revert.php:76
  -#, fuzzy, c-format
  +#, c-format
   msgid "Rollback to revision %s"
  -msgstr "Revenir en arrire ou retourner  %s"
  +msgstr ""
   
   #: ../plugin/revert.php:79
   msgid "Revert page"
  @@ -1382,15 +1370,15 @@
   
   # ../plugin/rename.php:37
   #: ../plugin/revert.php:80
  -#, fuzzy, c-format
  +#, c-format
   msgid "Only WikiMaster can %s this page"
  -msgstr "Seulement le WikiMaster peut renommer cette page"
  +msgstr ""
   
   # ../wikilib.php:482
   #: ../plugin/revert.php:80
  -#, fuzzy, c-format
  +#, c-format
   msgid "revert"
  -msgstr "Prvisualisation"
  +msgstr ""
   
   # ../plugin/subscribe.php:46
   #: ../plugin/scrap.php:53
  @@ -1399,15 +1387,15 @@
   
   # ../plugin/Blog.php:78
   #: ../plugin/scrap.php:61
  -#, fuzzy, c-format
  +#, c-format
   msgid "\"%s\" is unscrapped."
  -msgstr "\"%s\" est mis  jour"
  +msgstr ""
   
   # ../wikilib.php:816
   #: ../plugin/scrap.php:64
  -#, fuzzy, c-format
  +#, c-format
   msgid "\"%s\" is scrapped."
  -msgstr "%s est sauvegard"
  +msgstr ""
   
   # ../plugin/subscribe.php:58
   #: ../plugin/scrap.php:89
  @@ -1417,9 +1405,8 @@
   
   # ../locale/dummy.php:3
   #: ../plugin/scrap.php:92
  -#, fuzzy
   msgid "Scrapped pages"
  -msgstr "ChangementsRcents"
  +msgstr ""
   
   #: ../plugin/security/acl.php:141
   msgid "ACL groups"
  @@ -1446,7 +1433,7 @@
   #: ../plugin/security/needtologin.php:39 ../plugin/security/needtologin.php:50
   #, c-format
   msgid "You are not allowed to '%s' on this page"
  -msgstr "Vous n'tes pas autoris  pouvoir '%s' cette page"
  +msgstr "Vous n'?tes pas autoris? ? pouvoir '%s' cette page"
   
   #: ../plugin/security/acl.php:218
   msgid "Please contact WikiMasters :b"
  @@ -1471,7 +1458,7 @@
   #: ../plugin/security/wikimaster.php:38 ../plugin/security/wikimaster.php:47
   #, c-format
   msgid "You are not allowed to '%s' on this page."
  -msgstr "Vous n'tes pas autoris  pouvoir '%s' cette page"
  +msgstr "Vous n'?tes pas autoris? ? pouvoir '%s' cette page"
   
   #: ../plugin/security/htaccesslogin.php:47
   msgid "Please contact the system administrator for htaccess based logins."
  @@ -1486,22 +1473,22 @@
   # ../plugin/sendping.php:14 ../plugin/trackback.php:41
   #: ../plugin/sendping.php:13 ../plugin/trackback.php:40
   msgid "Error: Page Not found !"
  -msgstr "Erreur : page non trouv !"
  +msgstr "Erreur : page non trouv? !"
   
   # ../plugin/sendping.php:55
   #: ../plugin/sendping.php:54
   msgid "Error: No entry found!"
  -msgstr "Erreur : entre non trouv !"
  +msgstr "Erreur : entr?e non trouv? !"
   
   # ../plugin/sendping.php:73
   #: ../plugin/sendping.php:71
   msgid "Send TrackBack ping"
  -msgstr "Envoy un ping de TrackBack"
  +msgstr "Envoy? un ping de TrackBack"
   
   # ../plugin/sendping.php:158
   #: ../plugin/sendping.php:165
   msgid "Trackback sent"
  -msgstr "Trackback envoy"
  +msgstr "Trackback envoy?"
   
   # ../plugin/man_get.php:23
   #: ../plugin/SlideShow.php:28
  @@ -1537,7 +1524,7 @@
   # ../plugin/subscribe.php:12
   #: ../plugin/subscribe.php:42
   msgid "EmailNotification is not activated"
  -msgstr "EmailNotification n'est pas activ"
  +msgstr "EmailNotification n'est pas activ?"
   
   # ../plugin/subscribe.php:13
   #: ../plugin/subscribe.php:43
  @@ -1545,7 +1532,7 @@
   "If you want to subscribe this page please contact the WikiMaster to activate "
   "the e-mail notification"
   msgstr ""
  -"Si vous voulez vous abonner  cette page, merci de contacter le "
  +"Si vous voulez vous abonner ? cette page, merci de contacter le "
   "WikiMasterpour activer la notification par email"
   
   # ../plugin/subscribe.php:22
  @@ -1559,13 +1546,13 @@
   "If you want to subscribe this page, just make your ID and register your "
   "email address in the UserPreferences."
   msgstr ""
  -"Si vous voulez vous abonner  cette page, construire votre ID et enregistrer "
  +"Si vous voulez vous abonner ? cette page, construire votre ID et enregistrer "
   "votre adresse de messagerie dans UserPreferences."
   
   # ../plugin/subscribe.php:46
   #: ../plugin/subscribe.php:77
   msgid "Subscribe lists updated."
  -msgstr "Listes d'abonnement mises  jour"
  +msgstr "Listes d'abonnement mises ? jour"
   
   #: ../plugin/subscribe.php:91
   #, c-format
  @@ -1576,7 +1563,7 @@
   #: ../plugin/subscribe.php:100
   #, c-format
   msgid "Do you want to subscribe \"%s\" ?"
  -msgstr "Voulez vous abonner  \"%s\" ?"
  +msgstr "Voulez vous abonner ? \"%s\" ?"
   
   # ../plugin/subscribe.php:46
   #: ../plugin/subscribe.php:106
  @@ -1615,7 +1602,7 @@
   # ../plugin/theme.php:24
   #: ../plugin/theme.php:29
   msgid "Theme cleared. Goto UserPreferences."
  -msgstr "Thme effac. Allez  UserPreferences."
  +msgstr "Th?me effac?. Allez ? UserPreferences."
   
   #: ../plugin/theme.php:40
   msgid "Theme is changed"
  @@ -1624,7 +1611,7 @@
   # ../plugin/theme.php:64
   #: ../plugin/theme.php:69
   msgid "Please select a theme properly."
  -msgstr "Merci de slectionner un thme de manire satisfaisante"
  +msgstr "Merci de s?lectionner un th?me de mani?re satisfaisante"
   
   #: ../plugin/theme.php:79
   msgid "Theme disabled !"
  @@ -1687,7 +1674,7 @@
   # ../plugin/trackback.php:54
   #: ../plugin/trackback.php:53
   msgid "TrackBack is not activated !"
  -msgstr "Le TrackBack n'est pas activ !"
  +msgstr "Le TrackBack n'est pas activ? !"
   
   # ../plugin/trackback.php:55
   #: ../plugin/trackback.php:54
  @@ -1708,13 +1695,13 @@
   # ../plugin/trackback.php:63 ../plugin/trackback.php:80
   #: ../plugin/trackback.php:62 ../plugin/trackback.php:79
   msgid "Send TrackBack Ping to another Blog:"
  -msgstr "Envoyer un ping de TrackBack  un autre blog :"
  +msgstr "Envoyer un ping de TrackBack ? un autre blog :"
   
   # ../plugin/trackback.php:78
   #: ../plugin/trackback.php:77
   #, c-format
   msgid "No TrackBack entry found for %s"
  -msgstr "Aucune entre de TrackBack dtect pour %s"
  +msgstr "Aucune entr?e de TrackBack d?tect? pour %s"
   
   # ../plugin/TwinPages.php:13
   #: ../plugin/TwinPages.php:13
  @@ -1723,14 +1710,14 @@
   msgstr "TwinPages de %s"
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../plugin/TwinPages.php:19 ../wiki.php:5320
  +#: ../plugin/TwinPages.php:19 ../wiki.php:5325
   msgid "See [TwinPages]: "
   msgstr "Voir [TwinPages]: "
   
   # ../plugin/TwinPages.php:20
   #: ../plugin/TwinPages.php:21
   msgid "No TwinPages found."
  -msgstr "Aucune TwinPages trouv"
  +msgstr "Aucune TwinPages trouv?"
   
   # ../plugin/rename.php:27
   #: ../plugin/UploadedFiles.php:280
  @@ -1761,7 +1748,7 @@
   # ../wikilib.php:550
   #: ../plugin/UploadedFiles.php:430 ../wikilib.php:1088
   msgid "Delete selected files"
  -msgstr "Effacer les fichiers slectionns"
  +msgstr "Effacer les fichiers s?lectionn?s"
   
   # ../wikilib.php:519
   #: ../plugin/UploadFile.php:147 ../plugin/UploadFile.php:161
  @@ -1820,7 +1807,7 @@
   # ../wikilib.php:887
   #: ../plugin/userform.php:36
   msgid "Your e-mail address is confirmed successfully"
  -msgstr "Mail envoy avec succs"
  +msgstr "Mail envoy? avec succ?s"
   
   # ../wikilib.php:887
   #: ../plugin/userform.php:43
  @@ -1958,8 +1945,8 @@
   msgid "You are not allowed to register on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5274
  -#: ../wiki.php:5285
  +#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5279
  +#: ../wiki.php:5290
   msgid "Please contact WikiMasters"
   msgstr ""
   
  @@ -2054,9 +2041,9 @@
   # ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
   # c-format
   #: ../plugin/userinfo.php:21
  -#, fuzzy, c-format
  +#, c-format
   msgid "You are not allowed to use the \"%s\" macro."
  -msgstr "Vous n'tes pas autoris  pouvoir '%s' cette page"
  +msgstr ""
   
   #: ../plugin/userinfo.php:26
   #, c-format
  @@ -2069,9 +2056,9 @@
   
   # ../wikilib.php:575
   #: ../plugin/userinfo.php:81
  -#, fuzzy, c-format
  +#, c-format
   msgid "User \"%s\" are deleted !"
  -msgstr "\"%s\" est effac !"
  +msgstr ""
   
   # ../plugin/VisualTour.php:55
   #: ../plugin/VisualTour.php:133
  @@ -2091,7 +2078,7 @@
   # ../plugin/Vote.php:109
   #: ../plugin/Vote.php:113
   msgid "Voted successfully"
  -msgstr "Vote russi"
  +msgstr "Vote r?ussi"
   
   #: ../plugin/whois.php:119
   #, c-format
  @@ -2131,135 +2118,133 @@
   msgstr ""
   
   # ../wikilib.php:521
  -#: ../wiki.php:2916 ../wiki.php:2927 ../wiki.php:5514
  +#: ../wiki.php:2919 ../wiki.php:2930 ../wiki.php:5519
   msgid "Invalid ajax action."
   msgstr ""
   
  -#: ../wiki.php:3421
  +#: ../wiki.php:3422
   msgid "Tags:"
   msgstr ""
   
   # ../wiki.php:1824
  -#: ../wiki.php:3449
  +#: ../wiki.php:3450
   #, c-format
   msgid "See %s"
   msgstr "Voir %s"
   
   # ../wiki.php:1824
  -#: ../wiki.php:3449
  +#: ../wiki.php:3450
   #, c-format
   msgid "TwinPages"
   msgstr ""
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../wiki.php:3454
  +#: ../wiki.php:3455
   msgid "See [TwinPages]:"
   msgstr "Voir [TwinPages]: "
   
  -#: ../wiki.php:4016
  +#: ../wiki.php:4021
   msgid "Sister Sites Index"
   msgstr ""
   
   # ../locale/dummy.php:6 ../wiki.php:2553
  -#: ../wiki.php:4444 ../locale/dummy.php:6
  +#: ../wiki.php:4449 ../locale/dummy.php:6
   msgid "EditText"
  -msgstr "ditionTexte"
  +msgstr "?ditionTexte"
   
   # ../wiki.php:2555
  -#: ../wiki.php:4446
  +#: ../wiki.php:4451
   msgid "NotEditable"
  -msgstr "Pasditable"
  +msgstr "Pas?ditable"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wiki.php:4450 ../locale/dummy.php:6
  +#: ../wiki.php:4455 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "MontrePage"
   
   # ../locale/dummy.php:3 ../locale/dummy.php:5 ../wiki.php:2558
  -#: ../wiki.php:4451 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4456 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "TrouvePage"
   
  -#: ../wiki.php:4854
  +#: ../wiki.php:4859
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5273
  +#: ../wiki.php:5278
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5284
  +#: ../wiki.php:5289
   msgid "You are blocked in this wiki"
   msgstr ""
   
   # ../wiki.php:2945 ../wiki.php:2948
  -#: ../wiki.php:5322 ../wiki.php:5331 ../wikilib.php:1370
  +#: ../wiki.php:5327 ../wiki.php:5336 ../wikilib.php:1370
   msgid "Create this page"
  -msgstr "Crer cette page"
  +msgstr "Cr?er cette page"
   
   # ../wikilib.php:816
  -#: ../wiki.php:5333
  +#: ../wiki.php:5338
   #, c-format
   msgid "%s has saved revisions"
  -msgstr "%s est sauvegard"
  +msgstr "%s est sauvegard?"
   
   # ../wiki.php:2950
  -#: ../wiki.php:5334 ../wiki.php:5341
  -#, fuzzy, c-format
  +#: ../wiki.php:5339 ../wiki.php:5346
  +#, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr ""
  -" ou cliquer sur %s pour faire une recherche en texte intgral de cette "
  -"page.\n"
   
  -#: ../wiki.php:5339
  +#: ../wiki.php:5344
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr ""
   
  -#: ../wiki.php:5346
  +#: ../wiki.php:5351
   msgid "Please try to search with another word"
   msgstr ""
   
   # ../wiki.php:2956
  -#: ../wiki.php:5358
  +#: ../wiki.php:5363
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
  -msgstr "%s ou alternativement, utiliser un de ces modles de page :\n"
  +msgstr "%s ou alternativement, utiliser un de ces mod?les de page :\n"
   
  -#: ../wiki.php:5361
  +#: ../wiki.php:5366
   msgid "You have no templates"
   msgstr ""
   
   # ../wikilib.php:427
  -#: ../wiki.php:5363
  +#: ../wiki.php:5368
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
   
  -#: ../wiki.php:5374
  +#: ../wiki.php:5379
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
   # ../wikilib.php:521
  -#: ../wiki.php:5516
  +#: ../wiki.php:5521
   msgid "Invalid macro action."
   msgstr ""
   
   # ../wiki.php:3009
  -#: ../wiki.php:5526
  +#: ../wiki.php:5531
   #, c-format
   msgid "You are not allowed to '%s'"
  -msgstr "Vous n'tes pas autoris  '%s'"
  +msgstr "Vous n'?tes pas autoris? ? '%s'"
   
   # ../wiki.php:3021
  -#: ../wiki.php:5546
  +#: ../wiki.php:5551
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "Impossible de pouvoir \"%s\" !"
   
   # ../wiki.php:3024
  -#: ../wiki.php:5549
  +#: ../wiki.php:5554
   msgid "Please enter the valid password"
   msgstr "Merci d'entrer un mot de passe valide"
   
  @@ -2282,19 +2267,19 @@
   msgstr ""
   "<b>Accentuation :</b> ''<i>italique</i>''; '''<b>gras</b>'''; "
   "'''''<b><i>italique gras</i></b>''''';\n"
  -"''<i>mlange de '''<b>gras</b>''' et italique</i>''; ---- rgle horizontale."
  +"''<i>m?lange de '''<b>gras</b>''' et italique</i>''; ---- r?gle horizontale."
   "<br />\n"
  -"<b>Enttes :</b> = Titre 1 =; == Titre 2 ==; === Titre 3 ===;\n"
  +"<b>Ent?tes :</b> = Titre 1 =; == Titre 2 ==; === Titre 3 ===;\n"
   "==== Titre 4 ====; ===== Titre 5 =====.<br />\n"
  -"<b>Listes :</b> un espace et une des * puces; 1., a., A., i., I. "
  -"numrations ;\n"
  -"1.#n commence  partir de n; l'espace seul provoque une indentation.<br />\n"
  -"<b>Liens :</b> MotsAttachsEnMajuscules; [\"crochets et guillemets\"];\n"
  +"<b>Listes :</b> un espace et une des * puces; 1., a., A., i., I. ?num?"
  +"rations ;\n"
  +"1.#n commence ? partir de n; l'espace seul provoque une indentation.<br />\n"
  +"<b>Liens :</b> MotsAttach?sEnMajuscules; [\"crochets et guillemets\"];\n"
   "[mots entre crochets];\n"
   "url; [url]; [url label].<br />\n"
  -"<b>Tableaux</b> : || cellule de texte |||| cellule de texte s'tendant sur "
  +"<b>Tableaux</b> : || cellule de texte |||| cellule de texte s'?tendant sur "
   "deux colonnes ||;\n"
  -"Les espaces aprs un tableau ou un titre ne sont pas autoriss.<br />\n"
  +"Les espaces apr?s un tableau ou un titre ne sont pas autoris?s.<br />\n"
   
   # ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
   # c-format
  @@ -2311,7 +2296,7 @@
   #: ../wikilib.php:824
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
  -"Utiliser un des modles de pages qui suivent pour une premirecration :\n"
  +"Utiliser un des mod?les de pages qui suivent pour une premi?recr?ation :\n"
   
   # ../wikilib.php:427
   #: ../wikilib.php:826
  @@ -2334,7 +2319,7 @@
   # ../wikilib.php:445
   #: ../wikilib.php:859
   msgid "ReduceEditor"
  -msgstr "Rduirediteur"
  +msgstr "R?duire?diteur"
   
   #: ../wikilib.php:860
   msgid "EnlargeEditor"
  @@ -2354,12 +2339,12 @@
   #: ../wikilib.php:898
   #, c-format
   msgid "Describe %s here"
  -msgstr "Dcrire %s ici"
  +msgstr "D?crire %s ici"
   
   # ../wikilib.php:476
   #: ../wikilib.php:918
   msgid "--Select Category--"
  -msgstr "-- Slectionner une catgorie"
  +msgstr "-- S?lectionner une cat?gorie"
   
   #: ../wikilib.php:928
   msgid "Minor edit"
  @@ -2373,7 +2358,7 @@
   # ../wikilib.php:443
   #: ../wikilib.php:937
   msgid "Skip to preview"
  -msgstr "Aller  la prvisualisation"
  +msgstr "Aller ? la pr?visualisation"
   
   # ../wikilib.php:483 ../wikilib.php:1079
   #: ../wikilib.php:949 ../wikilib.php:2084 ../wikilib.php:2138
  @@ -2400,7 +2385,7 @@
   #: ../wikilib.php:1076
   #, c-format
   msgid "File '%s' is deleted"
  -msgstr "Le fichier '%s' est effac"
  +msgstr "Le fichier '%s' est effac?"
   
   # ../wikilib.php:542
   #: ../wikilib.php:1078
  @@ -2412,18 +2397,18 @@
   #: ../wikilib.php:1083
   #, c-format
   msgid "Directory '%s' is deleted"
  -msgstr "Le rpertoire '%s' est effac"
  +msgstr "Le r?pertoire '%s' est effac?"
   
   # ../wikilib.php:547
   #: ../wikilib.php:1085
   #, c-format
   msgid "Fail to rmdir '%s'"
  -msgstr "Impossible d'effacer le rpertoire '%s'"
  +msgstr "Impossible d'effacer le r?pertoire '%s'"
   
   # ../wikilib.php:557 ../wikilib.php:559
   #: ../wikilib.php:1095 ../wikilib.php:1115
   msgid "No files are selected !"
  -msgstr "Aucun fichier n'est slectionn !"
  +msgstr "Aucun fichier n'est s?lectionn? !"
   
   # ../wikilib.php:542
   #: ../wikilib.php:1108
  @@ -2440,7 +2425,7 @@
   #: ../wikilib.php:1133
   #, c-format
   msgid "\"%s\" is deleted !"
  -msgstr "\"%s\" est effac !"
  +msgstr "\"%s\" est effac? !"
   
   # ../wikilib.php:581
   #: ../wikilib.php:1148
  @@ -2464,7 +2449,7 @@
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
  -" ou cliquer sur %s pour faire une recherche en texte intgral de cette "
  +" ou cliquer sur %s pour faire une recherche en texte int?gral de cette "
   "page.\n"
   
   # ../wiki.php:2950
  @@ -2478,17 +2463,15 @@
   
   # ../wiki.php:2950
   #: ../wikilib.php:1389
  -#, fuzzy, c-format
  +#, c-format
   msgid "You can also click %s to fulltext search.\n"
   msgstr ""
  -" ou cliquer sur %s pour faire une recherche en texte intgral de cette "
  -"page.\n"
   
   # ../wikilib.php:743
   #: ../wikilib.php:1434 ../wikilib.php:1535
   #, c-format
   msgid "Someone else saved the page while you edited %s"
  -msgstr "Quelqu'un a sauvegard la page tandis que vous ditiez %s"
  +msgstr "Quelqu'un a sauvegard? la page tandis que vous ?ditiez %s"
   
   #: ../wikilib.php:1440
   msgid "Section edit is not valid for non-exists page."
  @@ -2497,34 +2480,34 @@
   # ../wikilib.php:803
   #: ../wikilib.php:1473 ../wikilib.php:1651
   msgid "mail does not supported by default."
  -msgstr "La messagerie n'est pas support par dfaut."
  +msgstr "La messagerie n'est pas support? par d?faut."
   
   # ../wikilib.php:807
   #: ../wikilib.php:1477 ../wikilib.php:1655
   msgid "Sent notification mail."
  -msgstr "Des notifications par messagerie ont t envoyes."
  +msgstr "Des notifications par messagerie ont ?t? envoy?es."
   
   # ../wikilib.php:809
   #: ../wikilib.php:1479 ../wikilib.php:1657
   msgid "No subscribers found."
  -msgstr "Aucun abonn trouv."
  +msgstr "Aucun abonn? trouv?."
   
   # ../wikilib.php:814
   #: ../wikilib.php:1484 ../wikilib.php:1662
   #, c-format
   msgid "%s is not editable"
  -msgstr "%s n'est pas ditable"
  +msgstr "%s n'est pas ?ditable"
   
   # ../wikilib.php:816
   #: ../wikilib.php:1486 ../wikilib.php:1664
   #, c-format
   msgid "%s is saved"
  -msgstr "%s est sauvegard"
  +msgstr "%s est sauvegard?"
   
   # ../wikilib.php:734
   #: ../wikilib.php:1526
   msgid "Goto Editor"
  -msgstr "Aller  l'diteur"
  +msgstr "Aller ? l'?diteur"
   
   #: ../wikilib.php:1540
   #, c-format
  @@ -2583,18 +2566,18 @@
   #: ../wikilib.php:1611
   #, c-format
   msgid "Preview of %s"
  -msgstr "Prvisualisation de %s"
  +msgstr "Pr?visualisation de %s"
   
   # ../wikilib.php:838
   #: ../wikilib.php:1696
   msgid "Nobody subscribed to this page."
  -msgstr "Personne n'est abonn  cette page, aucun mail envoy"
  +msgstr "Personne n'est abonn? ? cette page, aucun mail envoy?"
   
   # ../wikilib.php:860
   #: ../wikilib.php:1715
   #, c-format
   msgid "%s page is modified"
  -msgstr "la page %s est modifi"
  +msgstr "la page %s est modifi?"
   
   # ../wikilib.php:870
   #: ../wikilib.php:1744
  @@ -2603,25 +2586,25 @@
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
  -"Vous vous tes abonn  cette page du wiki \"%s\" pour recevoir des "
  +"Vous vous ?tes abonn? ? cette page du wiki \"%s\" pour recevoir des "
   "notifications de modification.\n"
   "\n"
   
   # ../wikilib.php:883
   #: ../wikilib.php:1757
   msgid "Send notification mails to all subscribers"
  -msgstr "Envoyez un mail de notification  tous les abonns"
  +msgstr "Envoyez un mail de notification ? tous les abonn?s"
   
   # ../wikilib.php:887
   #: ../wikilib.php:1762
   msgid "Mails are sent successfully"
  -msgstr "Mail envoy avec succs"
  +msgstr "Mail envoy? avec succ?s"
   
   # ../wikilib.php:888
   #: ../wikilib.php:1763
   #, c-format
   msgid "mails are sent to '%s'"
  -msgstr "un mail a t envoy  '%s'"
  +msgstr "un mail a ?t? envoy? ? '%s'"
   
   # ../wiki.php:3021
   #: ../wikilib.php:1765
  @@ -2689,7 +2672,7 @@
   # ../wikilib.php:1088
   #: ../wikilib.php:2127
   msgid "logout"
  -msgstr "se dconnecter"
  +msgstr "se d?connecter"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
   #: ../wikilib.php:2440
  @@ -2713,9 +2696,9 @@
   
   # ../wikilib.php:575
   #: ../monisetup.php:47
  -#, fuzzy, c-format
  +#, c-format
   msgid "%s is selected."
  -msgstr "\"%s\" est effac !"
  +msgstr ""
   
   #: ../monisetup.php:54
   msgid "Check a AcceptPathInfo setting for Apache 2.x.xx"
  @@ -2756,9 +2739,8 @@
   
   # ../plugin/rename.php:27
   #: ../monisetup.php:251
  -#, fuzzy
   msgid "Reload"
  -msgstr "Renommer"
  +msgstr ""
   
   #: ../monisetup.php:254
   msgid "WARN"
  @@ -2772,39 +2754,38 @@
   
   # ../wikilib.php:814
   #: ../monisetup.php:266
  -#, fuzzy, c-format
  +#, c-format
   msgid "FATAL: %s directory is not writable"
  -msgstr "%s n'est pas ditable"
  +msgstr ""
   
   # ../wikilib.php:581
   #: ../monisetup.php:267
  -#, fuzzy
   msgid "Please execute the following command."
  -msgstr "Merci d'effacer ce fichier manuellement."
  +msgstr ""
   
   # ../wikilib.php:814
   #: ../monisetup.php:286
  -#, fuzzy, c-format
  +#, c-format
   msgid "%s directory is not writable"
  -msgstr "%s n'est pas ditable"
  +msgstr ""
   
   # ../wikilib.php:814
   #: ../monisetup.php:303
  -#, fuzzy, c-format
  +#, c-format
   msgid "%s is not writable"
  -msgstr "%s n'est pas ditable"
  +msgstr ""
   
   # ../plugin/rename.php:14
   #: ../monisetup.php:310 ../monisetup.php:316
  -#, fuzzy, c-format
  +#, c-format
   msgid "%s is created now"
  -msgstr "\"%s\" est renomm !"
  +msgstr ""
   
   # ../wikilib.php:814
   #: ../monisetup.php:326
  -#, fuzzy, c-format
  +#, c-format
   msgid "%s is writable"
  -msgstr "%s n'est pas ditable"
  +msgstr ""
   
   #: ../monisetup.php:343
   #, c-format
  @@ -2834,9 +2815,8 @@
   
   # ../wikilib.php:550
   #: ../monisetup.php:551
  -#, fuzzy
   msgid "Deselect all"
  -msgstr "Effacer les fichiers slectionns"
  +msgstr ""
   
   #: ../monisetup.php:556
   msgid "Please be careful to deselect these pages"
  @@ -2858,9 +2838,8 @@
   
   # ../wiki.php:3024
   #: ../monisetup.php:862
  -#, fuzzy
   msgid "Invalid password error !"
  -msgstr "Merci d'entrer un mot de passe valide"
  +msgstr ""
   
   #: ../monisetup.php:863
   msgid ""
  @@ -2875,9 +2854,8 @@
   
   # ../wikilib.php:887
   #: ../monisetup.php:914
  -#, fuzzy
   msgid "Configurations are saved successfully"
  -msgstr "Mail envoy avec succs"
  +msgstr ""
   
   #: ../monisetup.php:915
   msgid ""
  @@ -2898,9 +2876,8 @@
   
   # ../wikilib.php:887
   #: ../monisetup.php:944
  -#, fuzzy
   msgid "Initial configurations are saved successfully."
  -msgstr "Mail envoy avec succs"
  +msgstr ""
   
   #: ../monisetup.php:945
   msgid "Goto <a href='monisetup.php'>MoniSetup</a> again to configure details"
  @@ -2909,15 +2886,14 @@
   # ../plugin/minilogin.php:30
   #: ../monisetup.php:962 ../monisetup.php:964 ../monisetup.php:1060
   #: ../monisetup.php:1062
  -#, fuzzy, c-format
  +#, c-format
   msgid "goto %s"
  -msgstr "ou %s"
  +msgstr ""
   
   # ../wikilib.php:557 ../wikilib.php:559
   #: ../monisetup.php:967
  -#, fuzzy
   msgid "No WikiSeeds are selected"
  -msgstr "Aucun fichier n'est slectionn !"
  +msgstr ""
   
   #: ../monisetup.php:978
   #, c-format
  @@ -2944,9 +2920,9 @@
   
   # ../plugin/quicklinks.php:50
   #: ../monisetup.php:1013 ../monisetup.php:1056
  -#, fuzzy, c-format
  +#, c-format
   msgid "If you want to put wikiseeds on your wiki %s now"
  -msgstr "Voulez vous mettre  jour vos liens rapides ?"
  +msgstr ""
   
   #: ../monisetup.php:1014 ../monisetup.php:1057
   msgid "Click here"
  @@ -2964,7 +2940,7 @@
   # ../locale/dummy.php:3
   #: ../locale/dummy.php:3
   msgid "RecentChanges"
  -msgstr "ChangementsRcents"
  +msgstr "ChangementsR?cents"
   
   # ../locale/dummy.php:4
   #: ../locale/dummy.php:4
  @@ -3010,7 +2986,7 @@
   #, fuzzy
   #~ msgid "%s or click %s to search title.\n"
   #~ msgstr ""
  -#~ " ou cliquer sur %s pour faire une recherche en texte intgral de cette "
  +#~ " ou cliquer sur %s pour faire une recherche en texte int?gral de cette "
   #~ "page.\n"
   
   # ../wikilib.php:507
  
  
  
  1.29      +55 -55    moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- ko.po	2 Jan 2009 05:45:20 -0000	1.28
  +++ ko.po	2 Jan 2009 05:51:21 -0000	1.29
  @@ -5,7 +5,7 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1.3\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2008-12-31 20:11+0900\n"
  +"POT-Creation-Date: 2009-01-02 14:50+0900\n"
   "PO-Revision-Date: 2008-12-11 12:20+0900\n"
   "Last-Translator: Won-Kyu Park <wkpark@kldp.org>\n"
   "Language-Team: Won-Kyu Park <wkpark@kldp.org>\n"
  @@ -388,7 +388,7 @@
   msgid "You are not allowed to add a comment."
   msgstr "Comment는 허락되지 않습니다."
   
  -#: ../plugin/Comment.php:129 ../plugin/Keywords.php:372
  +#: ../plugin/Comment.php:129 ../plugin/Keywords.php:373
   msgid "Page does not exists"
   msgstr "페이지가 없습니다"
   
  @@ -532,7 +532,7 @@
   msgid "Show Context."
   msgstr "문맥 보기."
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4448
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4453
   msgid "Refresh"
   msgstr "갱신"
   
  @@ -546,7 +546,7 @@
   msgid "You can also click %s to search title.\n"
   msgstr "%s을 눌러 제목 찾기를 할 수 있습니다.\n"
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5334 ../wiki.php:5341
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5339 ../wiki.php:5346
   #: ../wikilib.php:1390
   msgid "here"
   msgstr "여기"
  @@ -694,86 +694,86 @@
   msgid "Edit new molecule"
   msgstr "새 분자 편집"
   
  -#: ../plugin/Keywords.php:330
  +#: ../plugin/Keywords.php:331
   msgid "hits"
   msgstr ""
   
  -#: ../plugin/Keywords.php:338
  +#: ../plugin/Keywords.php:339
   msgid "add keywords"
   msgstr "키워드 더하기"
   
  -#: ../plugin/Keywords.php:341
  +#: ../plugin/Keywords.php:342
   msgid "Update keywords"
   msgstr "키워드 갱신"
   
  -#: ../plugin/Keywords.php:343
  +#: ../plugin/Keywords.php:344
   msgid "Add keywords"
   msgstr "키워드 더하기"
   
  -#: ../plugin/Keywords.php:344
  +#: ../plugin/Keywords.php:345
   msgid "Add as common words"
   msgstr "일반 단어로 추가"
   
  -#: ../plugin/Keywords.php:345
  +#: ../plugin/Keywords.php:346
   msgid "Unselect all"
   msgstr "모두 선택 취소"
   
  -#: ../plugin/Keywords.php:346
  +#: ../plugin/Keywords.php:347
   msgid "Suggest new Keywords"
   msgstr "새 키워드 제안"
   
  -#: ../plugin/Keywords.php:355
  +#: ../plugin/Keywords.php:356
   msgid "select language"
   msgstr "언어 고르기"
   
  -#: ../plugin/Keywords.php:371
  +#: ../plugin/Keywords.php:372
   msgid "You are not able to add keywords."
   msgstr "키워드를 추가할 수 없습니다."
   
  -#: ../plugin/Keywords.php:385
  +#: ../plugin/Keywords.php:386
   #, c-format
   msgid "%s is not found."
   msgstr "%s을(를) 찾을 수 없습니다"
   
  -#: ../plugin/Keywords.php:501
  +#: ../plugin/Keywords.php:502
   msgid "Common words are updated"
   msgstr "일반 단어가 갱신됨"
   
  -#: ../plugin/Keywords.php:548
  +#: ../plugin/Keywords.php:549
   #, c-format
   msgid "Keywords for %s are updated"
   msgstr "%s에 대한 키워드가 갱신됨"
   
  -#: ../plugin/Keywords.php:574
  +#: ../plugin/Keywords.php:575
   msgid "Keywords are updated"
   msgstr "키워드가 갱신되었습니다"
   
  -#: ../plugin/Keywords.php:576
  +#: ../plugin/Keywords.php:577
   msgid "There are no changes found"
   msgstr "변화가 없습니다"
   
  -#: ../plugin/Keywords.php:589
  +#: ../plugin/Keywords.php:590
   msgid "Update with these Keywords"
   msgstr "키워드 갱신하기"
   
  -#: ../plugin/Keywords.php:609 ../plugin/Keywords.php:613
  +#: ../plugin/Keywords.php:610 ../plugin/Keywords.php:614
   msgid "alphabetically"
   msgstr "알파벳순"
   
  -#: ../plugin/Keywords.php:610
  +#: ../plugin/Keywords.php:611
   msgid "by frequency"
   msgstr "빈도수"
   
  -#: ../plugin/Keywords.php:612
  +#: ../plugin/Keywords.php:613
   msgid "by size"
   msgstr "크기"
   
  -#: ../plugin/Keywords.php:618
  +#: ../plugin/Keywords.php:619
   #, c-format
   msgid "Keywords list %s (or %s)"
   msgstr "%s순 키워드 목록 (혹은 %s순)"
   
  -#: ../plugin/Keywords.php:623
  +#: ../plugin/Keywords.php:624
   #, c-format
   msgid "Select keywords for %s"
   msgstr "%s에 대해 키워드를 고르세요"
  @@ -957,7 +957,7 @@
   msgid "Save Changes"
   msgstr "변경 저장"
   
  -#: ../plugin/processor/monimarkup.php:485 ../wiki.php:3836
  +#: ../plugin/processor/monimarkup.php:490 ../wiki.php:3841
   msgid "edit"
   msgstr "편집"
   
  @@ -1185,7 +1185,7 @@
   msgid "Select a tarball file to restore"
   msgstr "Restore하기 위한 tarball 파일을 고르세요"
   
  -#: ../plugin/revert.php:23 ../wiki.php:5336
  +#: ../plugin/revert.php:23 ../wiki.php:5341
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr "%s의 옛날 버전"
  @@ -1524,7 +1524,7 @@
   msgid "TwinPages of %s"
   msgstr "%s의 쌍둥이 페이지"
   
  -#: ../plugin/TwinPages.php:19 ../wiki.php:5320
  +#: ../plugin/TwinPages.php:19 ../wiki.php:5325
   msgid "See [TwinPages]: "
   msgstr ""
   
  @@ -1734,8 +1734,8 @@
   msgid "You are not allowed to register on this wiki"
   msgstr "위키 등록이 허락되지 않았습니다"
   
  -#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5274
  -#: ../wiki.php:5285
  +#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5279
  +#: ../wiki.php:5290
   msgid "Please contact WikiMasters"
   msgstr "위키관리자에게 문의하세요"
   
  @@ -1892,118 +1892,118 @@
   msgid "File '%s' does not exist."
   msgstr "파일 '%s'이(가) 없습니다"
   
  -#: ../wiki.php:2916 ../wiki.php:2927 ../wiki.php:5514
  +#: ../wiki.php:2919 ../wiki.php:2930 ../wiki.php:5519
   msgid "Invalid ajax action."
   msgstr "잘못된 ajax 액션."
   
  -#: ../wiki.php:3421
  +#: ../wiki.php:3422
   msgid "Tags:"
   msgstr "태그:"
   
  -#: ../wiki.php:3449
  +#: ../wiki.php:3450
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:3449
  +#: ../wiki.php:3450
   #, c-format
   msgid "TwinPages"
   msgstr "TwinPages"
   
  -#: ../wiki.php:3454
  +#: ../wiki.php:3455
   msgid "See [TwinPages]:"
   msgstr ""
   
  -#: ../wiki.php:4016
  +#: ../wiki.php:4021
   msgid "Sister Sites Index"
   msgstr ""
   
  -#: ../wiki.php:4444 ../locale/dummy.php:6
  +#: ../wiki.php:4449 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "고치기"
   
  -#: ../wiki.php:4446
  +#: ../wiki.php:4451
   msgid "NotEditable"
   msgstr "고칠수 없음"
   
  -#: ../wiki.php:4450 ../locale/dummy.php:6
  +#: ../wiki.php:4455 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "보기"
   
  -#: ../wiki.php:4451 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4456 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "찾기"
   
  -#: ../wiki.php:4854
  +#: ../wiki.php:4859
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5273
  +#: ../wiki.php:5278
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5284
  +#: ../wiki.php:5289
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:5322 ../wiki.php:5331 ../wikilib.php:1370
  +#: ../wiki.php:5327 ../wiki.php:5336 ../wikilib.php:1370
   msgid "Create this page"
   msgstr "페이지 만들기"
   
  -#: ../wiki.php:5333
  +#: ../wiki.php:5338
   #, c-format
   msgid "%s has saved revisions"
   msgstr "%s이(가) 저장된 옛버전이 있습니다"
   
  -#: ../wiki.php:5334 ../wiki.php:5341
  +#: ../wiki.php:5339 ../wiki.php:5346
   #, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr "%s 혹은 %s를 눌러 전체 찾기를 할 수 있습니다.\n"
   
  -#: ../wiki.php:5339
  +#: ../wiki.php:5344
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr "%s 페이지를 이곳 위키에서 찾을 수 없습니다"
   
  -#: ../wiki.php:5346
  +#: ../wiki.php:5351
   msgid "Please try to search with another word"
   msgstr "다른 단어로 찾아보세요."
   
  -#: ../wiki.php:5358
  +#: ../wiki.php:5363
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr ""
   "%s 아이콘을 누르거나 아래의 탬플리트 목록을 이용해 새 페이지를 만드세요:\n"
   
  -#: ../wiki.php:5361
  +#: ../wiki.php:5366
   msgid "You have no templates"
   msgstr "템플리트가 없습니다"
   
  -#: ../wiki.php:5363
  +#: ../wiki.php:5368
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr "탬플리트를 만드시려면 '%s' 형식의 이름을 가지는 페이지를 만드세요.\n"
   
  -#: ../wiki.php:5374
  +#: ../wiki.php:5379
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr "\"%s\"페이지로 부터 리다리렉트됨"
   
  -#: ../wiki.php:5516
  +#: ../wiki.php:5521
   msgid "Invalid macro action."
   msgstr "잘못된 마크로 액션."
   
  -#: ../wiki.php:5526
  +#: ../wiki.php:5531
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "'%s'은(는) 허락되지 않았습니다"
   
  -#: ../wiki.php:5546
  +#: ../wiki.php:5551
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "\"%s\"을(를) 실패했습니다 !"
   
  -#: ../wiki.php:5549
  +#: ../wiki.php:5554
   msgid "Please enter the valid password"
   msgstr "정확한 비밀번호를 넣어주세요"
   
  
  
  
  1.24      +55 -55    moniwiki/locale/po/moniwiki.pot
  
  Index: moniwiki.pot
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/moniwiki.pot,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- moniwiki.pot	2 Jan 2009 05:45:20 -0000	1.23
  +++ moniwiki.pot	2 Jan 2009 05:51:21 -0000	1.24
  @@ -7,7 +7,7 @@
   msgstr ""
   "Project-Id-Version: PACKAGE VERSION\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2008-12-31 20:11+0900\n"
  +"POT-Creation-Date: 2009-01-02 14:50+0900\n"
   "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
   "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
   "Language-Team: LANGUAGE <LL@li.org>\n"
  @@ -390,7 +390,7 @@
   msgid "You are not allowed to add a comment."
   msgstr ""
   
  -#: ../plugin/Comment.php:129 ../plugin/Keywords.php:372
  +#: ../plugin/Comment.php:129 ../plugin/Keywords.php:373
   msgid "Page does not exists"
   msgstr ""
   
  @@ -534,7 +534,7 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4448
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4453
   msgid "Refresh"
   msgstr ""
   
  @@ -548,7 +548,7 @@
   msgid "You can also click %s to search title.\n"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5334 ../wiki.php:5341
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5339 ../wiki.php:5346
   #: ../wikilib.php:1390
   msgid "here"
   msgstr ""
  @@ -696,86 +696,86 @@
   msgid "Edit new molecule"
   msgstr ""
   
  -#: ../plugin/Keywords.php:330
  +#: ../plugin/Keywords.php:331
   msgid "hits"
   msgstr ""
   
  -#: ../plugin/Keywords.php:338
  +#: ../plugin/Keywords.php:339
   msgid "add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:341
  +#: ../plugin/Keywords.php:342
   msgid "Update keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:343
  +#: ../plugin/Keywords.php:344
   msgid "Add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:344
  +#: ../plugin/Keywords.php:345
   msgid "Add as common words"
   msgstr ""
   
  -#: ../plugin/Keywords.php:345
  +#: ../plugin/Keywords.php:346
   msgid "Unselect all"
   msgstr ""
   
  -#: ../plugin/Keywords.php:346
  +#: ../plugin/Keywords.php:347
   msgid "Suggest new Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:355
  +#: ../plugin/Keywords.php:356
   msgid "select language"
   msgstr ""
   
  -#: ../plugin/Keywords.php:371
  +#: ../plugin/Keywords.php:372
   msgid "You are not able to add keywords."
   msgstr ""
   
  -#: ../plugin/Keywords.php:385
  +#: ../plugin/Keywords.php:386
   #, c-format
   msgid "%s is not found."
   msgstr ""
   
  -#: ../plugin/Keywords.php:501
  +#: ../plugin/Keywords.php:502
   msgid "Common words are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:548
  +#: ../plugin/Keywords.php:549
   #, c-format
   msgid "Keywords for %s are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:574
  +#: ../plugin/Keywords.php:575
   msgid "Keywords are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:576
  +#: ../plugin/Keywords.php:577
   msgid "There are no changes found"
   msgstr ""
   
  -#: ../plugin/Keywords.php:589
  +#: ../plugin/Keywords.php:590
   msgid "Update with these Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:609 ../plugin/Keywords.php:613
  +#: ../plugin/Keywords.php:610 ../plugin/Keywords.php:614
   msgid "alphabetically"
   msgstr ""
   
  -#: ../plugin/Keywords.php:610
  +#: ../plugin/Keywords.php:611
   msgid "by frequency"
   msgstr ""
   
  -#: ../plugin/Keywords.php:612
  +#: ../plugin/Keywords.php:613
   msgid "by size"
   msgstr ""
   
  -#: ../plugin/Keywords.php:618
  +#: ../plugin/Keywords.php:619
   #, c-format
   msgid "Keywords list %s (or %s)"
   msgstr ""
   
  -#: ../plugin/Keywords.php:623
  +#: ../plugin/Keywords.php:624
   #, c-format
   msgid "Select keywords for %s"
   msgstr ""
  @@ -959,7 +959,7 @@
   msgid "Save Changes"
   msgstr ""
   
  -#: ../plugin/processor/monimarkup.php:485 ../wiki.php:3836
  +#: ../plugin/processor/monimarkup.php:490 ../wiki.php:3841
   msgid "edit"
   msgstr ""
   
  @@ -1186,7 +1186,7 @@
   msgid "Select a tarball file to restore"
   msgstr ""
   
  -#: ../plugin/revert.php:23 ../wiki.php:5336
  +#: ../plugin/revert.php:23 ../wiki.php:5341
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr ""
  @@ -1521,7 +1521,7 @@
   msgid "TwinPages of %s"
   msgstr ""
   
  -#: ../plugin/TwinPages.php:19 ../wiki.php:5320
  +#: ../plugin/TwinPages.php:19 ../wiki.php:5325
   msgid "See [TwinPages]: "
   msgstr ""
   
  @@ -1731,8 +1731,8 @@
   msgid "You are not allowed to register on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5274
  -#: ../wiki.php:5285
  +#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5279
  +#: ../wiki.php:5290
   msgid "Please contact WikiMasters"
   msgstr ""
   
  @@ -1889,117 +1889,117 @@
   msgid "File '%s' does not exist."
   msgstr ""
   
  -#: ../wiki.php:2916 ../wiki.php:2927 ../wiki.php:5514
  +#: ../wiki.php:2919 ../wiki.php:2930 ../wiki.php:5519
   msgid "Invalid ajax action."
   msgstr ""
   
  -#: ../wiki.php:3421
  +#: ../wiki.php:3422
   msgid "Tags:"
   msgstr ""
   
  -#: ../wiki.php:3449
  +#: ../wiki.php:3450
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:3449
  +#: ../wiki.php:3450
   #, c-format
   msgid "TwinPages"
   msgstr ""
   
  -#: ../wiki.php:3454
  +#: ../wiki.php:3455
   msgid "See [TwinPages]:"
   msgstr ""
   
  -#: ../wiki.php:4016
  +#: ../wiki.php:4021
   msgid "Sister Sites Index"
   msgstr ""
   
  -#: ../wiki.php:4444 ../locale/dummy.php:6
  +#: ../wiki.php:4449 ../locale/dummy.php:6
   msgid "EditText"
   msgstr ""
   
  -#: ../wiki.php:4446
  +#: ../wiki.php:4451
   msgid "NotEditable"
   msgstr ""
   
  -#: ../wiki.php:4450 ../locale/dummy.php:6
  +#: ../wiki.php:4455 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:4451 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4456 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr ""
   
  -#: ../wiki.php:4854
  +#: ../wiki.php:4859
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5273
  +#: ../wiki.php:5278
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5284
  +#: ../wiki.php:5289
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:5322 ../wiki.php:5331 ../wikilib.php:1370
  +#: ../wiki.php:5327 ../wiki.php:5336 ../wikilib.php:1370
   msgid "Create this page"
   msgstr ""
   
  -#: ../wiki.php:5333
  +#: ../wiki.php:5338
   #, c-format
   msgid "%s has saved revisions"
   msgstr ""
   
  -#: ../wiki.php:5334 ../wiki.php:5341
  +#: ../wiki.php:5339 ../wiki.php:5346
   #, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr ""
   
  -#: ../wiki.php:5339
  +#: ../wiki.php:5344
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr ""
   
  -#: ../wiki.php:5346
  +#: ../wiki.php:5351
   msgid "Please try to search with another word"
   msgstr ""
   
  -#: ../wiki.php:5358
  +#: ../wiki.php:5363
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr ""
   
  -#: ../wiki.php:5361
  +#: ../wiki.php:5366
   msgid "You have no templates"
   msgstr ""
   
  -#: ../wiki.php:5363
  +#: ../wiki.php:5368
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
   
  -#: ../wiki.php:5374
  +#: ../wiki.php:5379
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
  -#: ../wiki.php:5516
  +#: ../wiki.php:5521
   msgid "Invalid macro action."
   msgstr ""
   
  -#: ../wiki.php:5526
  +#: ../wiki.php:5531
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr ""
   
  -#: ../wiki.php:5546
  +#: ../wiki.php:5551
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:5549
  +#: ../wiki.php:5554
   msgid "Please enter the valid password"
   msgstr ""
   
  
  
  


wkpark      2009/01/02 14:52:30

  Modified:    data     mime.types
  Log:
  add svg entry
  
  Revision  Changes    Path
  1.4       +1 -0      moniwiki/data/mime.types
  
  Index: mime.types
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/data/mime.types,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- mime.types	16 Dec 2008 14:32:54 -0000	1.3
  +++ mime.types	2 Jan 2009 05:52:30 -0000	1.4
  @@ -233,6 +233,7 @@
   image/x-xbitmap			xbm
   image/x-xpixmap			xpm
   image/x-xwindowdump		xwd
  +image/svg+xml			svg
   message/delivery-status
   message/disposition-notification
   message/external-body
  
  
  


wkpark      2009/01/02 14:52:49

  Modified:    .        config.php.default
  Log:
  update
  
  Revision  Changes    Path
  1.51      +4 -1      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.50
  retrieving revision 1.51
  diff -u -r1.50 -r1.51
  --- config.php.default	26 Dec 2008 11:55:44 -0000	1.50
  +++ config.php.default	2 Jan 2009 05:52:49 -0000	1.51
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.50 2008/12/26 11:55:44 wkpark Exp $
  +# $Id: config.php.default,v 1.51 2009/01/02 05:52:49 wkpark Exp $
   #
   $sitename='UnnamedWiki'; # site name
   $data_dir= './data';
  @@ -180,6 +180,7 @@
   #$auto_search='AutoGoto';
   #$hr_type='fancy';
   $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=0;
   #$sectionedit_attr=1; # enable wikiwyg section editing
   $spam_filter='antispam';
  @@ -221,6 +222,7 @@
   #$force_charset=1; # overriding default charset 
   #$use_titlemenu=1; # add the current pagename to the menu list
   #$submenu='SubMenu'; # dynamic submenu
  +#$submenu_showmain=1;
   #$shared_smileymap=$data_dir.'/text/SmileyMap'; # customizable smileymap
   #$use_clipmacro=1; # use the clip macro with the attachment macro
   $use_errlog=1;
  @@ -271,4 +273,5 @@
   $robots='googlebot|yahoo'; # set robots
   #$security_class_robot='robot';
   #$url_encodings='euc-kr,uhc'; # autogoto option: search invalid urls with different encodings
  +#$use_scrap=1; # use scrap
   ?>
  
  
  


wkpark      2009/01/02 15:05:22

  Modified:    .        wikilib.php
  Log:
  change method name
  
  Revision  Changes    Path
  1.262     +3 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.261
  retrieving revision 1.262
  diff -u -r1.261 -r1.262
  --- wikilib.php	31 Dec 2008 09:38:11 -0000	1.261
  +++ wikilib.php	2 Jan 2009 06:05:22 -0000	1.262
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.261 2008/12/31 09:38:11 wkpark Exp $
  +// $Id: wikilib.php,v 1.262 2009/01/02 06:05:22 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -379,7 +379,7 @@
       $subs=array();
       foreach ($users as $id) {
         $usr=$this->getUser($id);
  -      if ($usr->isSubscribedPage($pagename)) $subs[]=$usr->info['email'];
  +      if ($usr->hasSubscribePage($pagename)) $subs[]=$usr->info['email'];
       }
       return $subs;
     }
  @@ -624,7 +624,7 @@
       return $ok;
     }
   
  -  function isSubscribedPage($pagename) {
  +  function hasSubscribePage($pagename) {
       if (!$this->info['email'] or !$this->info['subscribed_pages']) return false;
       $page_list=_preg_search_escape($this->info['subscribed_pages']);
       if (!trim($page_list)) return false;
  
  
  


wkpark      2009/01/02 15:16:57

  Modified:    data     intermap.txt
  Log:
  update
  
  Revision  Changes    Path
  1.8       +3 -2      moniwiki/data/intermap.txt
  
  Index: intermap.txt
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/data/intermap.txt,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- intermap.txt	19 Jul 2006 15:48:46 -0000	1.7
  +++ intermap.txt	2 Jan 2009 06:16:57 -0000	1.8
  @@ -1,4 +1,4 @@
  -# $Id: intermap.txt,v 1.7 2006/07/19 15:48:46 wkpark Exp $
  +# $Id: intermap.txt,v 1.8 2009/01/02 06:16:57 wkpark Exp $
   # see http://usemod.com/intermap.txt 
   ISBN http://www.amazon.com/exec/obidos/ISBN=
   Wiki http://c2.com/cgi/wiki?
  @@ -36,5 +36,6 @@
   Xper http://xper.org/wiki/xp/
   PyKug http://www.python.or.kr/pykug/
   KTUG http://faq.ktug.or.kr/faq/
  -MoniWiki http://moniwiki.sf.net/wiki.php/
  +MoniWiki http://moniwiki.kldp.org/wiki.php/
  +MoniWikiDev http://moniwiki.kldp.org/dev/wiki.php/
   KLDPWiki http://wiki.kldp.org/wiki.php/
  
  
  


wkpark      2009/01/02 17:04:45

  Modified:    .        wiki.php
  Log:
  support MediaWiki like TR ending mark (|- or |---..)
  
  Revision  Changes    Path
  1.450     +12 -9     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.449
  retrieving revision 1.450
  diff -u -r1.449 -r1.450
  --- wiki.php	1 Jan 2009 16:24:02 -0000	1.449
  +++ wiki.php	2 Jan 2009 08:04:45 -0000	1.450
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.449 2009/01/01 16:24:02 wkpark Exp $
  +// $Id: wiki.php,v 1.450 2009/01/02 08:04:45 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.449 $',1,-1);
  +$_revision = substr('$Revision: 1.450 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -1833,7 +1833,7 @@
                        "/''([^']*)''/","/(?<!')''(.*)''(?!')/",
                        "/`(?<!\s)(?!`)([^`']+)(?<!\s)'(?=\s|$)/",
                        "/`(?<!\s)(?U)(.*)(?<!\s)`/",
  -                     "/(-{4,})$/e",
  +                     "/^[ ]*(-{4,})$/e",
                        "/^(={4,})$/",
                        "/,,([^,]{1,40}),,/",
                        "/\^([^ \^]+)\^(?=\s|$)/",
  @@ -3128,6 +3128,9 @@
         preg_match('/^((&lt;[^>]+>)*)(\s?)(.*)(?<!\s)(\s*)?$/s',
           $cells[$i+1],$m);
         $cell=$m[3].$m[4].$m[5];
  +      if (isset($cell{0}) and $cell{strlen($cell)-1} == "\n")
  +        $cell = substr($cell,0,-1).' '; // XXX
  +
         if (strpos($cell,"\n") !== false)
           $cell=$this->processor_repl('monimarkup',$cell, array('notoc'=>1));
         if ($m[3] and $m[5]) $align='center';
  @@ -3609,10 +3612,10 @@
         if ($line[$ll-1]=='&') {
           $oline.=substr($line,0,-1)."\n";
           continue;
  -      } else if (empty($oline) and preg_match('/^\s*\|\|/',$line) and !preg_match('/\|\|\s*$/',$line)) {
  +      } else if (empty($oline) and preg_match('/^\s*\|\|/',$line) and !preg_match('/\|(\||-+)\s*$/',$line)) {
           $oline.=$line."\n";
           continue;
  -      } else if (!empty($oline) and ($in_table or preg_match('/^\s*\|\|/',$oline)) and !preg_match('/\|\|\s*$/',$line)) {
  +      } else if (!empty($oline) and ($in_table or preg_match('/^\s*\|\|/',$oline)) and !preg_match('/\|(\||-+)\s*$/',$line)) {
           $oline.=$line."\n";
           continue;
         } else {
  @@ -3621,7 +3624,7 @@
         }
   
         $p_closeopen='';
  -      if (preg_match('/-{4,}$/',$line)) {
  +      if (preg_match('/^[ ]*-{4,}$/',$line)) {
           if ($this->auto_linebreak) $this->nobr=1; // XXX
           if ($in_p) { $p_closeopen=$this->_div(0,$in_div,$div_enclose); $in_p='';}
         } else if ($in_p == '' and $line!=='') {
  @@ -3748,13 +3751,13 @@
           if (!empty($match[2])) $open.='<caption>'.$match[2].'</caption>';
           $line='||'.$match[3].$match[5].$match[6];
           $in_table=1;
  -        if ($this->use_etable && !preg_match('/\|\|$/',$match[6])) {
  +        if ($this->use_etable && !preg_match('/\|(\||-+)$/',$match[6])) {
             $text.=$open;
             $this->table_line.=substr($line,2)."\n";
             continue;
           }
         } elseif ($in_table && ($line[0]!='|' or
  -              !preg_match("/^\|{2}.*\|{2}$/s",$line))) {
  +              !preg_match("/^\|{2}.*(?:\|(\||-+))$/s",$line))) {
           if ($this->use_etable && $in_table && preg_match('/^\|\|/',$line)) {
             $this->table_line.=substr($line,2)."\n";
             continue;
  @@ -3763,7 +3766,7 @@
           $in_table=0;
         }
         while ($in_table) {
  -        $line=substr($line,0,-2);
  +        $line=preg_replace('/(\|\||\|-+)$/','',$line);
           if ($this->use_etable && $this->table_line) {
             $nline='||'.$this->table_line;
             $this->table_line='';
  
  
  


wkpark      2009/01/02 17:04:45

  Modified:    plugin/processor monimarkup.php
  Log:
  support MediaWiki like TR ending mark (|- or |---..)
  
  Revision  Changes    Path
  1.21      +11 -8     moniwiki/plugin/processor/monimarkup.php
  
  Index: monimarkup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/monimarkup.php,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- monimarkup.php	1 Jan 2009 16:56:30 -0000	1.20
  +++ monimarkup.php	2 Jan 2009 08:04:45 -0000	1.21
  @@ -3,12 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a moniwiki formatting processor for the MoniWiki
   //
  -// $Id: monimarkup.php,v 1.20 2009/01/01 16:56:30 wkpark Exp $
  +// $Id: monimarkup.php,v 1.21 2009/01/02 08:04:45 wkpark Exp $
   /**
    * @date    2006-08-09
    * @name    Moniwiki Processor
    * @desc    Moniwiki default processor
  - * @version $Revision: 1.20 $
  + * @version $Revision: 1.21 $
    * @depend  1.1.3
    * @license GPL
    */
  @@ -134,7 +134,7 @@
               $tr=strlen(trim($line));
               if (substr($line,-1) == '&') { $oline.="\n".$line; continue; }
               if (!empty($oline) and preg_match('/^\s*\|\|/',$oline)) {
  -                if ( !preg_match('/\|\|$/',$oline)) {
  +                if ( !preg_match('/(\|\||\|-+)$/',$oline)) {
                       $oline.="\n".$line; continue;
                   } else if (!$tr) {
                       $chunk[]= $oline."\n".$line;
  @@ -309,10 +309,10 @@
           $oline='';
           foreach ($lines as $line) {
               if (substr($line,-1) == '&') { $oline.=substr($line,0,-1)."\n"; continue; }
  -            if (empty($oline) and preg_match('/^\s*\|\|/',$line) and !preg_match('/\|\|\s*$/',$line)) {
  +            if (empty($oline) and preg_match('/^\s*\|\|/',$line) and !preg_match('/(\|\||\|-+)\s*$/',$line)) {
                   $oline.=$line."\n"; continue;
               } else if (!empty($oline) and ($_in_table or preg_match('/^\s*\|\|/',$oline))) {
  -                if (!preg_match('/\|\|$/',$line)) {
  +                if (!preg_match('/(\|\||\|-+)$/',$line)) {
                       $oline.=$line."\n"; continue;
                   } else {
                       $line=$oline.$line; $oline='';
  @@ -334,7 +334,7 @@
               }
               $open = '';
               if (!$_in_table and $line[0]=='|' and
  -                preg_match("/^(\|([^\|]+)?\|((\|\|)*))((?:&lt;[^>\|]*>)*)(.*)(\|\|)?$/s",$line,$m)) {
  +                preg_match("/^(\|([^\|]+)?\|((\|\|)*))((?:&lt;[^>\|]*>)*)(.*)(\|\||\|-+)?$/s",$line,$m)) {
                   #print "<pre>"; print_r($m); print "</pre>";
                   $open.=$formatter->_table(1,$m[5]);
                   if ($m[2]) $open.='<caption>'.$m[2].'</caption>';
  @@ -345,9 +345,10 @@
                   $_in_table=0;
               }
               if ($_in_table) {
  -                $line=substr($line,0,-2);
  +                $line=preg_replace('/(\|\||\|-+)$/','',$line);
                   $cells=preg_split('/((?:\|\|)+)/',$line,-1,
                       PREG_SPLIT_DELIM_CAPTURE);
  +
                   $row='';
                   $tr_attr=$tr_diff ? 'class="'.$tr_diff.'"':'';
                   for ($i=1,$s=sizeof($cells);$i<$s;$i+=2) {
  @@ -358,6 +359,8 @@
                       if ($m[3] and $m[5]) $align='center';
                       else if (!$m[3]) $align='';
                       else if (!$m[5]) $align='right';
  +                    if (isset($cell{0}) and $cell{strlen($cell)-1} == "\n")
  +                        $cell = substr($cell,0,-1).' '; // XXX
                       #$cell=str_replace("\n","<br />\n",$cell);
                       if (strpos($cell,"\n")) {
                           $save = $formatter->section_edit;
  @@ -427,7 +430,7 @@
                 "<<(?:[A-Za-z0-9]+(?:\((?:(?<!>>).)*\))?)>>|"; # macro
   
           if ($Config['inline_latex']) # single line latex syntax
  -            $wordrule.="(?<=\s|^|>)\\$(?!(?:Id|Revision))(?:[^\\$]+)\\$(?:\s|$)|".
  +            $wordrule.="(?<=\s|^|>)\\$(?!(?:Id|Revision|Date))(?:[^\\$]+)\\$(?:\s|$)|".
                    "(?<=\s|^|>)\\$\\$(?:[^\\$]+)\\$\\$(?:\s|$)|";
           #if ($Config['builtin_footnote']) # builtin footnote support
           $wordrule.=$formatter->footrule.'|';
  
  
  


wkpark      2009/01/02 19:19:52

  Modified:    local/js/locale/po ko.po
  Log:
  update msg
  
  Revision  Changes    Path
  1.8       +50 -36    moniwiki/local/js/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/locale/po/ko.po,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- ko.po	27 Dec 2008 03:13:54 -0000	1.7
  +++ ko.po	2 Jan 2009 10:19:52 -0000	1.8
  @@ -5,7 +5,7 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1.3\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2008-12-27 11:39+0900\n"
  +"POT-Creation-Date: 2008-12-30 15:59+0900\n"
   "PO-Revision-Date: 2008-12-18 17:00+0900\n"
   "Last-Translator: Won-Kyu Park <wkpark@kldp.org>\n"
   "MIME-Version: 1.0\n"
  @@ -16,127 +16,127 @@
   msgid "undefined"
   msgstr ""
   
  -#: ../../moniwyg.js:1987
  +#: ../../moniwyg.js:2022
   msgid "Save"
   msgstr "저장"
   
  -#: ../../moniwyg.js:1988
  +#: ../../moniwyg.js:2023
   msgid "Preview"
   msgstr "미리보기"
   
  -#: ../../moniwyg.js:1989
  +#: ../../moniwyg.js:2024
   msgid "Cancel"
   msgstr "취소"
   
  -#: ../../moniwyg.js:1990
  +#: ../../moniwyg.js:2025
   msgid "Bold (Ctrl+b)"
   msgstr "굵게 (Ctrl-b)"
   
  -#: ../../moniwyg.js:1991
  +#: ../../moniwyg.js:2026
   msgid "Italic (Ctrl+i)"
   msgstr "기울임 (Ctrl+i)"
   
  -#: ../../moniwyg.js:1992
  +#: ../../moniwyg.js:2027
   msgid "Underline (Ctrl+u)"
   msgstr "밑줄 (Ctrl+u)"
   
  -#: ../../moniwyg.js:1993
  +#: ../../moniwyg.js:2028
   msgid "Strike Through (Ctrl+d)"
   msgstr "삭제선 (Ctrl+d)"
   
  -#: ../../moniwyg.js:1994
  +#: ../../moniwyg.js:2029
   msgid "Horizontal Rule"
   msgstr "수평줄"
   
  -#: ../../moniwyg.js:1995
  +#: ../../moniwyg.js:2030
   msgid "Numbered List"
   msgstr "숫자 리스트"
   
  -#: ../../moniwyg.js:1996
  +#: ../../moniwyg.js:2031
   msgid "Bulleted List"
   msgstr "총알 리스트"
   
  -#: ../../moniwyg.js:1997
  +#: ../../moniwyg.js:2032
   msgid "More Indented"
   msgstr "들여쓰기"
   
  -#: ../../moniwyg.js:1998
  +#: ../../moniwyg.js:2033
   msgid "Less Indented"
   msgstr "내어쓰기"
   
  -#: ../../moniwyg.js:1999
  +#: ../../moniwyg.js:2034
   msgid "About Wikiwyg"
   msgstr "Wikiwyg는"
   
  -#: ../../moniwyg.js:2000
  +#: ../../moniwyg.js:2035
   msgid "[Style]"
   msgstr ""
   
  -#: ../../moniwyg.js:2001
  +#: ../../moniwyg.js:2036
   msgid "Normal Text"
   msgstr "일반 글씨"
   
  -#: ../../moniwyg.js:2002
  +#: ../../moniwyg.js:2037
   msgid "Preformatted"
   msgstr ""
   
  -#: ../../moniwyg.js:2003
  +#: ../../moniwyg.js:2038
   msgid "Heading 1"
   msgstr "제목 1"
   
  -#: ../../moniwyg.js:2004
  +#: ../../moniwyg.js:2039
   msgid "Heading 2"
   msgstr "제목 2"
   
  -#: ../../moniwyg.js:2005
  +#: ../../moniwyg.js:2040
   msgid "Heading 3"
   msgstr "제목 3"
   
  -#: ../../moniwyg.js:2006
  +#: ../../moniwyg.js:2041
   msgid "Heading 4"
   msgstr "제목 4"
   
  -#: ../../moniwyg.js:2007
  +#: ../../moniwyg.js:2042
   msgid "Heading 5"
   msgstr "제목 5"
   
  -#: ../../moniwyg.js:2008
  +#: ../../moniwyg.js:2043
   msgid "Heading 6"
   msgstr "제목 6"
   
  -#: ../../moniwyg.js:2009
  +#: ../../moniwyg.js:2044
   msgid "Create Link"
   msgstr "링크 생성"
   
  -#: ../../moniwyg.js:2010 ../../../plugin/EditToolbar.php:40
  +#: ../../moniwyg.js:2045 ../../../plugin/EditToolbar.php:40
   msgid "Smiley"
   msgstr "스마일리"
   
  -#: ../../moniwyg.js:2011
  +#: ../../moniwyg.js:2046
   msgid "Remove Linkedness"
   msgstr "링크 제거"
   
  -#: ../../moniwyg.js:2012
  +#: ../../moniwyg.js:2047
   msgid "Create Table"
   msgstr "테이블"
   
  -#: ../../moniwyg.js:2013
  +#: ../../moniwyg.js:2048
   msgid "Math"
   msgstr "수식"
   
  -#: ../../moniwyg.js:2014
  +#: ../../moniwyg.js:2049
   msgid "As Is"
   msgstr "그대로"
   
  -#: ../../moniwyg.js:2015
  +#: ../../moniwyg.js:2050
   msgid "Image"
   msgstr "이미지"
   
  -#: ../../moniwyg.js:2016
  +#: ../../moniwyg.js:2051
   msgid "Media"
   msgstr "미디어"
   
  -#: ../../moniwyg.js:2017
  +#: ../../moniwyg.js:2052
   msgid "Quote"
   msgstr "인용"
   
  @@ -227,21 +227,35 @@
   msgstr "링크로 바꾸고 싶은 텍스트를 선택해주시기 바랍니다."
   
   #: dummy.js:6
  +msgid ""
  +"Auto saved text found.\n"
  +"Are you sure to restore page ?\n"
  +"(You can undo/redo with Ctrl-Z/Ctrl-Shift-Z)"
  +msgstr ""
  +"자동 저장된 텍스트가 있습니다.\n"
  +"저장된 것으로 편집하시겠습니까 ?\n"
  +"(Ctrl-Z/Ctrl-Shift-Z를 누르시면 undo/redo를 하실 수 있습니다)"
  +
  +#: dummy.js:7
  +msgid "Current text is saved in a temporary file."
  +msgstr "텍스트가 보존되었습니다."
  +
  +#: dummy.js:10
   msgid "The code is in your clipboard now"
   msgstr "코드가 클립보드로 복사되었습니다"
   
  -#: dummy.js:7
  +#: dummy.js:11
   msgid "Printing..."
   msgstr "인쇄중..."
   
  -#: dummy.js:8
  +#: dummy.js:12
   msgid "copy to clipboard"
   msgstr "클립보드 복사"
   
  -#: dummy.js:9
  +#: dummy.js:13
   msgid "view plain"
   msgstr "텍스트 보기"
   
  -#: dummy.js:10
  +#: dummy.js:14
   msgid "Toggle line numbers"
   msgstr "줄 번호 토글"
  
  
  


wkpark      2009/01/02 19:45:07

  Modified:    plugin   html2pdf.php
  Log:
  do not use LISymbol()
  
  Revision  Changes    Path
  1.4       +4 -4      moniwiki/plugin/html2pdf.php
  
  Index: html2pdf.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/html2pdf.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- html2pdf.php	16 Dec 2008 14:23:49 -0000	1.3
  +++ html2pdf.php	2 Jan 2009 10:45:07 -0000	1.4
  @@ -8,11 +8,11 @@
   // Name: TCPDF plugin
   // Description: a HTML2PDF Plugin using the TCPDF
   // URL: MoniWiki:Html2PdfPlugin
  -// Version: $Revision: 1.3 $
  +// Version: $Revision: 1.4 $
   // License: GPL
   // Usage: ?action=tcpdf
   //
  -// $Id: html2pdf.php,v 1.3 2008/12/16 14:23:49 wkpark Exp $
  +// $Id: html2pdf.php,v 1.4 2009/01/02 10:45:07 wkpark Exp $
   
   function do_html2pdf($formatter,$options) {
       global $DBInfo,$Config;
  @@ -139,8 +139,8 @@
       $toc = function_toc($formatter);
       $pdf->toc = $toc;
       $pdf->setFontAlias(array('monospace'=>'courier'));
  -    $pdf->setLIsymbol(chr(42));
  -    $pdf->setLIsymbol('a');
  +    #$pdf->setLIsymbol(chr(42));
  +    #$pdf->setLIsymbol('a');
   
       // set default header data
       // $pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING);
  
  
  


wkpark      2009/01/02 20:02:49

  Modified:    theme/azblue/css default.css
  Log:
  update
  
  Revision  Changes    Path
  1.17      +0 -3      moniwiki/theme/azblue/css/default.css
  
  Index: default.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/theme/azblue/css/default.css,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- default.css	1 May 2008 10:30:22 -0000	1.16
  +++ default.css	2 Jan 2009 11:02:49 -0000	1.17
  @@ -1,7 +1,6 @@
   @import url("../../../css/_base.css");
   @import url("../../../css/_extra.css");
   @import url("../../../css/_calendar.css");
  -@import url("../../../css/_user.css");
   
   body {
     font-family:Georgia,Verdana,Lucida,sans-serif;font-size:12px;
  @@ -307,8 +306,6 @@
     border-color:#ee0000;
     color:#440000;
     padding:5px;
  -  padding-left:55px;
  -  background: #FFF1B9 url(../imgs/warn.png) 10px 10px no-repeat;
     min-height: 40px;
     height: auto !important;
     height:40px;
  
  
  


wkpark      2009/01/03 01:05:24

  Added:       css      _feed.css
  Log:
  add a new css file for rss_rc.
  
  Revision  Changes    Path
  1.1                  moniwiki/css/_feed.css
  
  Index: _feed.css
  ===================================================================
  rss channel, feed, RDF {
    font-family: Bitstream Vera Sans,Trebuchet MS, Georgia, Verdana, Lucida, Helvetica, Arial, sans-serif;
    font-size: 80%;
    background-color: White;
    color: Black;
  }
  
  
  link, description, language, managingEditor, copyright, lastBuildDate, date,
  pubDate, generator, webMaster, ttl, docs, tagline, author, copyright,
  generator, content, created, issued, modified, subject, id, format, creator,
  category {
    display: none;
  }
  
  item link, entry id {
    display: block;
    text-decoration:underline;
  }
  
  channel title, feed title {
    display: block;
    font-size:2em;
    font-weight:bolder;
    text-decoration:none;
  }
  
  :root:before, :root:before {
    content: "This data file is meant to be read in a XML feed reader. See document source.";
    background-color:#eee;
  }
  
  item, entry {
    display: block;
    margin: 1em 180px 1em 1em;
    border-bottom: 1px solid #a0a0a0;
    padding-bottom: 1em;
  }
  
  item title, entry title {
    display: block;
    background: transparent none;
    border: 0px solid #ffffff;
    padding: 0;
    color: #222;
    font-size: 1.4em;
    font-weight: bold;
  }
  
  item pubDate, entry modified, item date {
    display: inline;
    color: #AAA;
    font: 1em trebuchet ms, arial, helvetica, sans-serif;
  }
  
  item description, entry summary {
    display: block;
    clear: both;
    padding-top: 0.5em;
  }
  
  
  


wkpark      2009/01/03 01:05:56

  Modified:    plugin   rss_rc.php
  Log:
  uncomment css style.
  
  Revision  Changes    Path
  1.17      +2 -2      moniwiki/plugin/rss_rc.php
  
  Index: rss_rc.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rss_rc.php,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- rss_rc.php	27 Apr 2008 09:32:00 -0000	1.16
  +++ rss_rc.php	2 Jan 2009 16:05:56 -0000	1.17
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // rss_rc action plugin for the MoniWiki
   //
  -// $Id: rss_rc.php,v 1.16 2008/04/27 09:32:00 wkpark Exp $
  +// $Id: rss_rc.php,v 1.17 2009/01/02 16:05:56 wkpark Exp $
   
   function do_rss_rc($formatter,$options) {
     global $DBInfo;
  @@ -161,7 +161,7 @@
   
     $head=<<<HEAD
   <?xml version="1.0" encoding="$charset"?>
  -<!--<?xml-stylesheet href="$DBInfo->url_prefix/css/_feed.css" type="text/css"?>-->
  +<?xml-stylesheet href="$DBInfo->url_prefix/css/_feed.css" type="text/css"?>
   <rdf:RDF xmlns="http://purl.org/rss/1.0/"
   	xmlns:wiki="http://purl.org/rss/1.0/modules/wiki/"
   	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  
  
  


wkpark      2009/01/03 01:15:01

  Modified:    .        wiki.php
  Log:
  set scrap icon correctly.
  
  Revision  Changes    Path
  1.451     +8 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.450
  retrieving revision 1.451
  diff -u -r1.450 -r1.451
  --- wiki.php	2 Jan 2009 08:04:45 -0000	1.450
  +++ wiki.php	2 Jan 2009 16:15:01 -0000	1.451
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.450 2009/01/02 08:04:45 wkpark Exp $
  +// $Id: wiki.php,v 1.451 2009/01/02 16:15:01 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.450 $',1,-1);
  +$_revision = substr('$Revision: 1.451 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -4743,8 +4743,12 @@
           $this->icons['pref']=array("UserPreferences","",$this->icon['pref']);
         } else
           $this->icons['pref']=array("UserPreferences","",$this->icon['pref']);
  -      if ($options['scrapped'])
  -        $this->icons['scrap']=array("","?action=scrap&amp;unscrap=1",$this->icon['unscrap']);
  +      if (isset($options['scrapped'])) {
  +        if ($options['scrapped'])
  +          $this->icons['scrap']=array('','?action=scrap&amp;unscrap=1',$this->icon['unscrap']);
  +        else
  +          $this->icons['scrap']=array('','?action=scrap',$this->icon['scrap']);
  +      }
   
       } else
         $user_link=$this->link_tag("UserPreferences","",_($this->icon['user']));
  
  
  


wkpark      2009/01/03 01:22:31

  Modified:    plugin   PageHits.php
  Log:
  XSS fix
  
  Revision  Changes    Path
  1.2       +2 -2      moniwiki/plugin/PageHits.php
  
  Index: PageHits.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/PageHits.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- PageHits.php	15 Aug 2003 21:30:36 -0000	1.1
  +++ PageHits.php	2 Jan 2009 16:22:31 -0000	1.2
  @@ -4,7 +4,7 @@
   // a PageHits macro plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: PageHits.php,v 1.1 2003/08/15 21:30:36 wkpark Exp $
  +// $Id: PageHits.php,v 1.2 2009/01/02 16:22:31 wkpark Exp $
   
   function macro_PageHits($formatter="",$value) {
     global $DBInfo;
  @@ -22,7 +22,7 @@
     else arsort($hits);
     while(list($name,$hit)=each($hits)) {
       if (!$hit) $hit=0;
  -    $name=$formatter->link_tag(_rawurlencode($name),"",$name);
  +    $name=$formatter->link_tag(_rawurlencode($name),"",htmlspecialchars($name));
       $out.="<li>$name . . . . [$hit]</li>\n";
     }
     return "<ol>\n".$out."</ol>\n";
  
  
  


wkpark      2009/01/03 01:38:23

  Modified:    local    folding.js
  Log:
  change folding icons
  
  Revision  Changes    Path
  1.4       +4 -5      moniwiki/local/folding.js
  
  Index: folding.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/folding.js,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- folding.js	29 Dec 2008 22:18:46 -0000	1.3
  +++ folding.js	2 Jan 2009 16:38:23 -0000	1.4
  @@ -1,7 +1,7 @@
   /*
    * Builti-in section folding for MoniWiki
    * 
  - * $Id: folding.js,v 1.3 2008/12/29 22:18:46 wkpark Exp $
  + * $Id: folding.js,v 1.4 2009/01/02 16:38:23 wkpark Exp $
    */
   
   function foldingSection(btn, id)
  @@ -20,8 +20,7 @@
           icon=btn.getElementsByTagName('img')[0];
           if (!icon) {
               icon = new Image();
  -            icon.src = _url_prefix + '/imgs/plugin/arrdown.png';
  -            icon.style.width = '12px';
  +            icon.src = _url_prefix + '/imgs/misc/open.png';
               btn.insertBefore(icon, btn.firstChild);
               //btn.appendChild(icon);
           }
  @@ -47,10 +46,10 @@
       if (icon) {
           var name=icon.getAttribute('class');
           if (name == 'close') {
  -            icon.src = _url_prefix + '/imgs/plugin/arrup.png';
  +            icon.src = _url_prefix + '/imgs/misc/close.png';
               icon.setAttribute('class','');
           } else {
  -            icon.src = _url_prefix + '/imgs/plugin/arrdown.png';
  +            icon.src = _url_prefix + '/imgs/misc/open.png';
               icon.setAttribute('class','close');
           }
       }
  
  
  


wkpark      2009/01/03 01:39:50

  Modified:    .        wikilib.php
  Log:
  add a class name for macro_BR()
  
  Revision  Changes    Path
  1.263     +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.262
  retrieving revision 1.263
  diff -u -r1.262 -r1.263
  --- wikilib.php	2 Jan 2009 06:05:22 -0000	1.262
  +++ wikilib.php	2 Jan 2009 16:39:50 -0000	1.263
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.262 2009/01/02 06:05:22 wkpark Exp $
  +// $Id: wikilib.php,v 1.263 2009/01/02 16:39:50 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2451,7 +2451,7 @@
   }
   
   function macro_BR($formatter) {
  -  return "<br />\n";
  +  return "<br class='macro' />\n";
   }
   
   function macro_FootNote(&$formatter,$value="") {
  
  
  


wkpark      2009/01/03 02:06:24

  Added:       imgs/misc close.png open.png
  Log:
  add missing icons
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/misc/close.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/misc/open.png
  
  	<<Binary file>>
  
  


wkpark      2009/01/03 02:06:48

  Modified:    imgs/moni2 rss.png
  Log:
  update rss icon
  
  Revision  Changes    Path
  1.3       +3 -5      moniwiki/imgs/moni2/rss.png
  
  	<<Binary file>>
  
  


wkpark      2009/01/03 02:07:57

  Modified:    .        config.php.default
  Log:
  add $toc_options='simple,toggle' by default
  
  Revision  Changes    Path
  1.52      +3 -3      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.51
  retrieving revision 1.52
  diff -u -r1.51 -r1.52
  --- config.php.default	2 Jan 2009 05:52:49 -0000	1.51
  +++ config.php.default	2 Jan 2009 17:07:57 -0000	1.52
  @@ -1,6 +1,6 @@
   <?php
   #
  -# $Id: config.php.default,v 1.51 2009/01/02 05:52:49 wkpark Exp $
  +# $Id: config.php.default,v 1.52 2009/01/02 17:07:57 wkpark Exp $
   #
   $sitename='UnnamedWiki'; # site name
   $data_dir= './data';
  @@ -184,7 +184,7 @@
   $use_sectionedit=0;
   #$sectionedit_attr=1; # enable wikiwyg section editing
   $spam_filter='antispam';
  -$use_toctoggle=0;
  +$toc_options='simple,toggle';
   #$toc_options='title=Contents,toggle,simple';
   #$use_ticket=1; # use ticket image to block spam bots.
   #$ticket_gdfont=5; # use a builtin gd bitmap font
  @@ -262,7 +262,7 @@
   $use_jwmediaplayer=1;
   $jwmediaplayer_prefix='http://www.jeroenwijering.com/embed';
   $flashupload='swfupload';
  -#$icon_list='edit,diff,show,find,print,info,help'; # set the icon list
  +#$icon_list='edit,diff,show,find,print,info,help,pref,rss'; # set the icon list
   #$use_folding=0; # 1:default simple js / 2:with the prototype/mootools
   #$use_etable=0; # use new extended table syntax: deprecated!
   #$use_openid=0; # enable openid login
  
  
  


wkpark      2009/01/03 02:57:01

  Modified:    .        wiki.php
  Log:
  override table align correctly.
  
  Revision  Changes    Path
  1.452     +4 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.451
  retrieving revision 1.452
  diff -u -r1.451 -r1.452
  --- wiki.php	2 Jan 2009 16:15:01 -0000	1.451
  +++ wiki.php	2 Jan 2009 17:57:01 -0000	1.452
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.451 2009/01/02 16:15:01 wkpark Exp $
  +// $Id: wiki.php,v 1.452 2009/01/02 17:57:01 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.451 $',1,-1);
  +$_revision = substr('$Revision: 1.452 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -3182,6 +3182,8 @@
         default:
           break;
         }
  +      $myattr=$this->_attr('',$sty,$myclass,$align);
  +      $attr=array_merge($attr,$myattr);
       }
       else if (preg_match("/^\-(\d+)$/",$para,$match))
         $attr['colspan']=$match[1];
  
  
  


wkpark      2009/01/03 03:45:25

  Modified:    local    moniwyg.js
  Log:
  multiline table fix
  
  Revision  Changes    Path
  1.62      +32 -5     moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.61
  retrieving revision 1.62
  diff -u -r1.61 -r1.62
  --- moniwyg.js	27 Dec 2008 06:55:12 -0000	1.61
  +++ moniwyg.js	2 Jan 2009 18:45:25 -0000	1.62
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.61 2008/12/27 06:55:12 wkpark Exp $
  +// $Id: moniwyg.js,v 1.62 2009/01/02 18:45:25 wkpark Exp $
   //
   //_url_prefix="/wiki";
   //
  @@ -1441,6 +1441,7 @@
       this.make_list(element,'quote');
       //this.make_list(element,'indent');
       this.chomp();
  +    //if (element.parentNode.tagName != 'TD') // XXX
       this.appendOutput("\n");
       return;
   
  @@ -1638,13 +1639,25 @@
   proto.assert_blank_line = function() {
       if (! this.should_whitespace()) return;
       this.chomp_n(); // FIX
  -    this.insert_new_line();
  +    var str = this.output[this.output.length - 1];
  +    if (!str.match(/||/)) // is it TD ? XXX FIXME
  +        this.insert_new_line();
       //this.insert_new_line(); // FIX for line_alone (----)
   }
   
   proto.handle_line_alone = function (element, markup) {
  +    if (element.parentNode.tagName != 'TD')
  +        this.assert_blank_line();
  +    this.appendOutput(markup[1]);
       this.assert_blank_line();
  +}
  +
  +proto.handle_bound_line = function(element,markup) {
  +    if (element.parentNode.tagName != 'TD')
  +        this.assert_blank_line();
       this.appendOutput(markup[1]);
  +    this.walk(element);
  +    this.appendOutput(markup[2]);
       this.assert_blank_line();
   }
   
  @@ -1766,18 +1779,32 @@
           else
               this.make_list(element,'indent');
           this.chomp();
  +        if (element.parentNode.tagName != 'TD') // XXX
           this.appendOutput("\n");
           return;
       }
       this.walk(element);
   }
   
  +proto.format_p = function(element) {
  +    if (this.is_indented(element)) {
  +        this.format_blockquote(element);
  +        return;
  +    }
  +    if (element.parentNode.tagName != 'TD') // XXX
  +        this.assert_blank_line();
  +    this.walk(element);
  +    this.assert_blank_line();
  +}
  +
   proto.make_list = function(element, list_type) { 
       //this.assert_new_line();
   
  -    if (! this.previous_was_newline_or_start())
  -        this.appendOutput("\n");
  -        //this.insert_new_line(); // XXX
  +    if (! this.previous_was_newline_or_start()) {
  +        if (element.parentNode.tagName != 'TD') // XXX
  +            this.appendOutput("\n");
  +        // this.insert_new_line();
  +    }
   
       this.list_type.push(list_type);
       if (this.list_type.length) {
  
  
  


wkpark      2009/01/03 04:50:36

  Modified:    plugin/filter nforge.php
  Log:
  add a postfilter
  
  Revision  Changes    Path
  1.2       +29 -1     moniwiki/plugin/filter/nforge.php
  
  Index: nforge.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/filter/nforge.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- nforge.php	10 Dec 2008 07:08:53 -0000	1.1
  +++ nforge.php	2 Jan 2009 19:50:36 -0000	1.2
  @@ -6,7 +6,7 @@
   // Usage: set $filters='nforge'; in the config.php
   //   $filters='abbr,nforge';
   //
  -// $Id: nforge.php,v 1.1 2008/12/10 07:08:53 wkpark Exp $
  +// $Id: nforge.php,v 1.2 2009/01/02 19:50:36 wkpark Exp $
   
   function filter_nforge($formatter,$value,$options) {
       global $Config;
  @@ -29,5 +29,33 @@
       );
       return preg_replace($_rule,$_repl,$value);
   }
  +
  +function postfilter_nforge($formatter,$value,$options) {
  +    global $Config;
  +
  +    preg_match("@\/([^\/]+)$@", $formatter->url_prefix, $proj_name);
  +    $group_id = $Config['group_id'];
  +    $issue = qualifiedUrl('/tracker/index.php?func=detail&group_id='.$group_id.'&aid=');
  +    $svn = qualifiedUrl('/scm/viewvc.php/?root='.$proj_name[1].'&view=rev&revision=');
  +
  +    $_rule=array(
  +        # link to an issue #210
  +        '/(?<![a-zA-Z&])\!?\#([0-9]+)/',
  +        # link to an revision r452
  +        "/(?<![a-zA-Z&])\!?r([0-9]+)/",
  +    );
  +    $_repl=array(
  +        "<a href='$issue".'\\1\'>#\\1</a>',
  +        "<a href='$svn".'\\1\'>r\\1</a>',
  +    );
  +
  +    $chunks=preg_split('/(<[^>]+>)/',$value,-1, PREG_SPLIT_DELIM_CAPTURE);
  +    for ($i=0,$sz=count($chunks); $i<$sz; $i++) {
  +        if ($i % 2 == 0) {
  +            $chunks[$i] = preg_replace($_rule,$_repl,$chunks[$i]);
  +        }
  +    }
  +    return implode('',$chunks);
  +}
   // vim:et:sts=4:sw=4:
   ?>
  
  
  


wkpark      2009/01/05 22:24:03

  Modified:    plugin   Keywords.php
  Log:
  fixed Keywords cache bug.
  
  Revision  Changes    Path
  1.29      +10 -9     moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- Keywords.php	1 Jan 2009 07:27:21 -0000	1.28
  +++ Keywords.php	5 Jan 2009 13:24:03 -0000	1.29
  @@ -8,12 +8,12 @@
   // Name: a Keywords Plugin
   // Description: a Keywords plugin to generate keywords of a page
   // URL: MoniWiki:KeywordsPlugin
  -// Version: $Revision: 1.28 $
  +// Version: $Revision: 1.29 $
   // License: GPL
   //
   // Usage: [[Keywords(options)]]
   //
  -// $Id: Keywords.php,v 1.28 2009/01/01 07:27:21 wkpark Exp $
  +// $Id: Keywords.php,v 1.29 2009/01/05 13:24:03 wkpark Exp $
   
   define(LOCAL_KEYWORDS,'LocalKeywords');
   
  @@ -68,14 +68,18 @@
   
       if (!$pagename) $pagename=$formatter->page->name;
   
  +    # get cached keywords
  +    $cache=new Cache_text('keywords');
  +    $pkey=$pagename;
  +
       $mc=new Cache_text('macro');
       $mkey='Keywords.'.md5($pagename.$value);
       $mykeys=array();
   
  -    if (!$formatter->refresh and $mc->exists($mkey)) {
  -        # check cache mtime
  -        $cmt=$mc->mtime($mkey);
  -
  +    # check cache mtime
  +    $cmt=$mc->mtime($mkey);
  +    $pmt=$cache->mtime($pkey);
  +    if ($cmt > $pmt) {
           # check update or not
           $dmt=filemtime($DBInfo->cache_dir.'/keywords/.');
           if ($dmt > $cmt) { # XXX crude method
  @@ -89,9 +93,6 @@
       if ($options['all']) $pages=$DBInfo->getPageLists();
       else $pages=array($pagename);
   
  -    # get cached keywords
  -    $cache=new Cache_text('keywords');
  -
       foreach ($pages as $pn) {
           if ($cache->exists($pn)) {
               $keys=$cache->fetch($pn);
  
  
  


wkpark      2009/01/07 02:36:47

  Modified:    .        wikilib.php
  Log:
  fixed intericonmap
  
  Revision  Changes    Path
  1.264     +4 -4      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.263
  retrieving revision 1.264
  diff -u -r1.263 -r1.264
  --- wikilib.php	2 Jan 2009 16:39:50 -0000	1.263
  +++ wikilib.php	6 Jan 2009 17:36:47 -0000	1.264
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.263 2009/01/02 16:39:50 wkpark Exp $
  +// $Id: wikilib.php,v 1.264 2009/01/06 17:36:47 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2251,13 +2251,13 @@
         if (preg_match("/^[A-Z]+/",$line)) {
           $wiki=strtok($line,' ');$icon=trim(strtok(' '));
           if (!preg_match('/^(http|ftp|attachment):/',$icon,$match)) continue;
  +        preg_match('/^(\d+)(x(\d+))?\b/',strtok(''),$sz);
  +        $sx=$sz[1];$sy=$sz[3];
  +        $sx=$sx ? $sx:16; $sy=$sy ? $sy:16;
           if ($icon[0]=='a') {
             $url=$formatter->macro_repl('Attachment',substr($icon,11),1);
             $icon=qualifiedUrl($DBInfo->url_prefix.'/'.$url);
           }
  -        preg_match('/^(\d+)(x(\d+))?\b/',strtok(''),$sz);
  -        $sx=$sz[1];$sy=$sz[3];
  -        $sx=$sx ? $sx:16; $sy=$sy ? $sy:16;
           $intericon[$wiki]=array($sx,$sy,trim($icon));
         }
       }
  
  
  


wkpark      2009/01/07 02:54:37

  Modified:    plugin   Attachment.php
  Log:
  fixed thumbnail dir. reported by Kim Daehyeon.
  http://kldp.net/forum/message.php?msg_id=66913
  
  Revision  Changes    Path
  1.40      +4 -4      moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.39
  retrieving revision 1.40
  diff -u -r1.39 -r1.40
  --- Attachment.php	29 Nov 2008 01:54:07 -0000	1.39
  +++ Attachment.php	6 Jan 2009 17:54:37 -0000	1.40
  @@ -7,13 +7,13 @@
   // Name: Attachment
   // Description: Attachment Plugin
   // URL: MoniWiki:AttachmentPlugin
  -// Version: $Revision: 1.39 $
  +// Version: $Revision: 1.40 $
   // Depend: 1.1.3
   // License: GPL
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.39 2008/11/29 01:54:07 wkpark Exp $
  +// $Id: Attachment.php,v 1.40 2009/01/06 17:54:37 wkpark Exp $
   
   function macro_Attachment($formatter,$value,$options='') {
     global $DBInfo;
  @@ -291,9 +291,9 @@
           $url=$formatter->link_url(_urlencode($pagename),"?action=$mydownload&amp;value=".$val);
         } else {
           if ($use_thumb)
  -          $url=$DBInfo->url_prefix."/thumbnails/"._urlencode($upload_file);
  +          $url=$DBInfo->url_prefix.'/'.$dir.'/thumbnails/'._urlencode($_l_file);
           else
  -          $url=$DBInfo->url_prefix."/"._urlencode($upload_file);
  +          $url=$DBInfo->url_prefix.'/'._urlencode($_l_upload_file);
         }
   
         $img="<img src='$url' title='$alt' alt='$alt' style='border:0' $attr/>";
  
  
  


wkpark      2009/01/08 06:44:09

  Modified:    plugin/processor monimarkup.php
  Log:
  empty/isset fixes
  fixed table block parsing
  
  Revision  Changes    Path
  1.22      +18 -9     moniwiki/plugin/processor/monimarkup.php
  
  Index: monimarkup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/monimarkup.php,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- monimarkup.php	2 Jan 2009 08:04:45 -0000	1.21
  +++ monimarkup.php	7 Jan 2009 21:44:09 -0000	1.22
  @@ -3,12 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a moniwiki formatting processor for the MoniWiki
   //
  -// $Id: monimarkup.php,v 1.21 2009/01/02 08:04:45 wkpark Exp $
  +// $Id: monimarkup.php,v 1.22 2009/01/07 21:44:09 wkpark Exp $
   /**
    * @date    2006-08-09
    * @name    Moniwiki Processor
    * @desc    Moniwiki default processor
  - * @version $Revision: 1.21 $
  + * @version $Revision: 1.22 $
    * @depend  1.1.3
    * @license GPL
    */
  @@ -137,7 +137,13 @@
                   if ( !preg_match('/(\|\||\|-+)$/',$oline)) {
                       $oline.="\n".$line; continue;
                   } else if (!$tr) {
  -                    $chunk[]= $oline."\n".$line;
  +                    $oline.="\n".$line;
  +                    if ($_indlen[$_in_li]) {
  +                        $chunk[]= $this->_node($_in_li,$_nodtype,$oline);
  +                        $_in_li=0;
  +                    } else {
  +                        $chunk[]= $oline;
  +                    }
                       $_eop=0;
                       $oline=null;
                       continue;
  @@ -186,7 +192,7 @@
                   if (preg_match("/^((\*\s?)|(?:([1-9]\d*|[aAiI])\.)(?:#(\d+))?\s)/",
                       $cutline,$m)) {
                       $myindlen=$indlen+strlen($m[1])-(isset($m[4]) ? strlen($m[4]):0);
  -                    $type=$m[2] ? 'ul':$m[3];
  +                    $type=!empty($m[2]) ? 'ul':$m[3];
                       $mytype['type']=$type;
                       $start=isset($m[4]) ? $m[4]:(isset($m[3]) ? $m[3]:null);
                       if (isset($start) and is_numeric($start) and $start > 1)
  @@ -218,9 +224,9 @@
                   }
                   if ($_indtype[$_in_li] == $indtype) {
                       if ($indlen == $_indlen[$_in_li]) {
  -                        if ($indtype or
  -                            $_nodtype[$_in_li]['attributes']['class'] !=
  -                            $mytype['attributes']['class']) {
  +                        $class = isset($mytype['attributes']['class']) ? $mytype['attributes']['class']:'';
  +                        if ($indtype or (isset($_nodtype[$_in_li]['attributes']['class']) and
  +                            $_nodtype[$_in_li]['attributes']['class'] != $class)) {
                               # another list/indent
                               if ($oline)
                                   $chunk[]=
  @@ -298,6 +304,7 @@
               $_del_cr=1;
               $text=substr($text,0,-1);
           }
  +        $_diff='';
           if (preg_match("/^(\010|\006).*\\1/s",$text,$m)) {
               $_diff=$m[1];
               $text=substr($text,1,-1);
  @@ -306,6 +313,7 @@
           $_in_table=0;
           $lines=explode("\n",$text);
           $tout='';
  +        $close='';
           $oline='';
           foreach ($lines as $line) {
               if (substr($line,-1) == '&') { $oline.=substr($line,0,-1)."\n"; continue; }
  @@ -335,6 +343,7 @@
               $open = '';
               if (!$_in_table and $line[0]=='|' and
                   preg_match("/^(\|([^\|]+)?\|((\|\|)*))((?:&lt;[^>\|]*>)*)(.*)(\|\||\|-+)?$/s",$line,$m)) {
  +                $m[7] = isset($m[7]) ? $m[7]:'';
                   #print "<pre>"; print_r($m); print "</pre>";
                   $open.=$formatter->_table(1,$m[5]);
                   if ($m[2]) $open.='<caption>'.$m[2].'</caption>';
  @@ -511,9 +520,9 @@
                       $linfo='';
                       $listy='';
                       if ($type!='ul' and $type{0} !='d')
  -                        $linfo=$c['attributes'] ? $c['attributes']['start']:'';
  +                        $linfo=!empty($c['attributes']['start']) ? $c['attributes']['start']:'';
                       else if ($type{0}=='d') {
  -                        $linfo=$c['attributes'] ? $c['attributes']['class']:'';
  +                        $linfo=!empty($c['attributes']['class']) ? $c['attributes']['class']:'';
                           if (preg_match('/^((\s*)(&lt;|=|>)?{([^}]+)})/s',$val,
                                   $sty)) {
                               if ($sty[3]) $sty[4].=';'.$palign[$sty[3]];
  
  
  


wkpark      2009/01/08 17:11:24

  Modified:    local    moniwyg.js
  Log:
  oops!! fixed last change.
  
  Revision  Changes    Path
  1.63      +6 -2      moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.62
  retrieving revision 1.63
  diff -u -r1.62 -r1.63
  --- moniwyg.js	2 Jan 2009 18:45:25 -0000	1.62
  +++ moniwyg.js	8 Jan 2009 08:11:24 -0000	1.63
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.62 2009/01/02 18:45:25 wkpark Exp $
  +// $Id: moniwyg.js,v 1.63 2009/01/08 08:11:24 wkpark Exp $
   //
   //_url_prefix="/wiki";
   //
  @@ -1640,8 +1640,12 @@
       if (! this.should_whitespace()) return;
       this.chomp_n(); // FIX
       var str = this.output[this.output.length - 1];
  -    if (!str.match(/||/)) // is it TD ? XXX FIXME
  +    if (str) {
  +        if (!str.match(/\|\|/)) // is it TD ? XXX FIXME
  +            this.insert_new_line();
  +    } else {
           this.insert_new_line();
  +    }
       //this.insert_new_line(); // FIX for line_alone (----)
   }
   
  
  
  


wkpark      2009/01/09 00:38:11

  Modified:    .        wikilib.php
  Log:
  show conflict merge correctly.
  
  Revision  Changes    Path
  1.265     +3 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.264
  retrieving revision 1.265
  diff -u -r1.264 -r1.265
  --- wikilib.php	6 Jan 2009 17:36:47 -0000	1.264
  +++ wikilib.php	8 Jan 2009 15:38:11 -0000	1.265
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.264 2009/01/06 17:36:47 wkpark Exp $
  +// $Id: wikilib.php,v 1.265 2009/01/08 15:38:11 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1577,9 +1577,9 @@
         print $menu;
         print "<div id='wikiPreview'>\n";
         if ($options['conflict'] and $merge)
  -        print $formatter->macro_repl('Diff','',array('text'=>$merge));
  +        print $formatter->macro_repl('Diff','',array('text'=>$merge,'raw'=>1));
         else
  -        print $formatter->macro_repl('Diff','',array('text'=>$savetext));
  +        print $formatter->macro_repl('Diff','',array('text'=>$savetext,'raw'=>1));
         print "</div>\n";
         $formatter->send_footer();
         return;
  
  
  


wkpark      2009/01/09 01:25:37

  Modified:    plugin   Comment.php
  Log:
  do not show captcha for registerd user
  
  Revision  Changes    Path
  1.35      +14 -9     moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- Comment.php	14 Dec 2008 11:01:49 -0000	1.34
  +++ Comment.php	8 Jan 2009 16:25:36 -0000	1.35
  @@ -3,14 +3,24 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Wiki comment plugin for the MoniWiki
   //
  +// Author: Won-Kyu Park <wkpark@kldp.org>
  +// Since: 2004-08-16
  +// Modified: $Date: 2009/01/08 16:25:36 $
  +// Name: Comment plugin
  +// Description: Comment Plugin
  +// URL: MoniWiki:CommentPlugin
  +// Version: $Revision: 1.35 $
  +// License: GPL
   // Usage: [[Comment]], ?action=comment
   //
  -//
  -// $Id: Comment.php,v 1.34 2008/12/14 11:01:49 wkpark Exp $
  +// $Id: Comment.php,v 1.35 2009/01/08 16:25:36 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $DBInfo;
   
  +  $user=$DBInfo->user; # get from COOKIE VARS
  +  $options['id']=$user->id;
  +
     $use_any=0;
     if ($DBInfo->use_textbrowsers) {
       if (is_string($DBInfo->use_textbrowsers))
  @@ -21,7 +31,7 @@
           $_SERVER['HTTP_USER_AGENT']) ? 1:0;
     }
     $captcha='';
  -  if (!$use_any and $DBInfo->use_ticket) {
  +  if (!$use_any and $DBInfo->use_ticket and $options['id'] == 'Anonymous') {
        $seed=md5(base64_encode(time()));
        $ticketimg=$formatter->link_url($formatter->page->urlname,'?action=ticket&amp;__seed='.$seed);
        $captcha=<<<EXTRA
  @@ -72,11 +82,6 @@
     $savetext=$options['savetext'];
     $savetext= str_replace(array("&","<"),array("&amp;","&lt;"),$savetext);
   
  -  if (!$options['id']) {
  -    $user=$DBInfo->user; # get from COOKIE VARS
  -    $options['id']=$user->id;
  -  }
  -
     $url=$formatter->link_url($formatter->page->urlname);
   
     if ($emid) $hidden.='<input type="hidden" name="comment_id" value="'.$emid.'" />';
  @@ -155,7 +160,7 @@
     }
   
     $ok_ticket=0;
  -  if (!$use_any and $DBInfo->use_ticket) {
  +  if (!$use_any and $DBInfo->use_ticket and $options['id'] == 'Anonymous') {
       if ($options['__seed'] and $options['check']) {
         $mycheck=getTicket($options['__seed'],$_SERVER['REMOTE_ADDR'],4);
         if ($mycheck==$options['check'])
  
  
  


wkpark      2009/01/09 02:19:43

  Modified:    .        wiki.php
  Log:
  support MoniWiki:NoFollow
  
  Revision  Changes    Path
  1.453     +11 -10    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.452
  retrieving revision 1.453
  diff -u -r1.452 -r1.453
  --- wiki.php	2 Jan 2009 17:57:01 -0000	1.452
  +++ wiki.php	8 Jan 2009 17:19:43 -0000	1.453
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.452 2009/01/02 17:57:01 wkpark Exp $
  +// $Id: wiki.php,v 1.453 2009/01/08 17:19:43 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.452 $',1,-1);
  +$_revision = substr('$Revision: 1.453 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2676,7 +2676,7 @@
     }
   
     function nonexists_simple($word,$url) {
  -    return "<a class='nonexistent nomarkup' href='$url'>?</a>$word";
  +    return "<a class='nonexistent nomarkup' href='$url' rel='nofollow'>?</a>$word";
     }
   
     function nonexists_nolink($word,$url) {
  @@ -2686,17 +2686,17 @@
     function nonexists_always($word,$url,$page) {
       $title='';
       if ($page != $word) $title="title=\"$page\" ";
  -    return "<a href='$url' $title>$word</a>";
  +    return "<a href='$url' $title rel='nofollow'>$word</a>";
     }
   
     function nonexists_forcelink($word,$url) {
  -    return "<a class='nonexistent' href='$url'>$word</a>";
  +    return "<a class='nonexistent' rel='nofollow' href='$url'>$word</a>";
     }
   
     function nonexists_fancy($word,$url) {
       global $DBInfo;
       if ($word[0]=='<' and preg_match('/^<[^>]+>/',$word))
  -      return "<a class='nonexistent' href='$url'>$word</a>";
  +      return "<a class='nonexistent' rel='nofollow' href='$url'>$word</a>";
       #if (preg_match("/^[a-zA-Z0-9\/~]/",$word))
       if (ord($word[0]) < 125) {
         $link=$word[0];
  @@ -2704,7 +2704,7 @@
           $link=strtok($word,';').';';$last=strtok('');
         } else
           $last=substr($word,1);
  -      return "<span><a class='nonexistent' href='$url'>$link</a>".$last.'<span>';
  +      return "<span><a class='nonexistent' rel='nofollow' href='$url'>$link</a>".$last.'<span>';
       }
       if (strtolower($DBInfo->charset) == 'utf-8')
         $utfword=$word;
  @@ -2719,9 +2719,9 @@
         }
         $tag=strtok($mbword,';').';'; $last=strtok('');
         if ($tag)
  -        return "<a class='nonexistent' href='$url'>$tag</a>".$last;
  +        return "<span><a class='nonexistent' rel='nofollow' href='$url'>$tag</a>".$last.'<span>';
       }
  -    return "<a class='nonexistent' href='$url'>?</a>$word";
  +    return "<a class='nonexistent nomarkup' rel='nofollow' href='$url'>?</a>$word";
     }
   
     function head_repl($depth,$head,&$headinfo,$attr='') {
  @@ -2981,6 +2981,7 @@
         $text= $pageurl; # XXX
       if (!$pageurl)
         $pageurl=$this->page->urlname;
  +    if ($query_string{0}=='?') $attr=empty($attr) ? 'rel="nofollow"':$attr.' rel="nofollow"';
       $url=$this->link_url($pageurl,$query_string);
       return sprintf("<a href=\"%s\" %s>%s</a>", $url, $attr, $text);
     }
  @@ -4154,7 +4155,7 @@
       $opts['rev']=$this->page->get_rev();
       $orig=$this->page->get_raw_body($opts);
   
  -    if ($DBInfo->use_external_merge) {
  +    if (!empty($DBInfo->use_external_merge)) {
         # save new
         $tmpf3=tempnam($DBInfo->vartmp_dir,'MERGE_NEW');
         $fp= fopen($tmpf3, 'w');
  
  
  


wkpark      2009/01/09 02:19:44

  Modified:    plugin   Keywords.php
  Log:
  support MoniWiki:NoFollow
  
  Revision  Changes    Path
  1.30      +9 -6      moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- Keywords.php	5 Jan 2009 13:24:03 -0000	1.29
  +++ Keywords.php	8 Jan 2009 17:19:43 -0000	1.30
  @@ -8,12 +8,12 @@
   // Name: a Keywords Plugin
   // Description: a Keywords plugin to generate keywords of a page
   // URL: MoniWiki:KeywordsPlugin
  -// Version: $Revision: 1.29 $
  +// Version: $Revision: 1.30 $
   // License: GPL
   //
   // Usage: [[Keywords(options)]]
   //
  -// $Id: Keywords.php,v 1.29 2009/01/05 13:24:03 wkpark Exp $
  +// $Id: Keywords.php,v 1.30 2009/01/08 17:19:43 wkpark Exp $
   
   define(LOCAL_KEYWORDS,'LocalKeywords');
   
  @@ -332,7 +332,7 @@
                   $out.=" $style title=\"$val "._("hits").'"';
               }
               $out.=">$checkbox"."<a href='".str_replace('$TAG',$key,$tag_link).
  -                "'>".$key."</a></li>\n";
  +                "' rel='nofollow'>".$key."</a></li>\n";
           }
       }
   
  @@ -368,7 +368,10 @@
       global $DBInfo;
       $supported_lang=array('ko');
   
  -    $page=$formatter->page->name;
  +    $page = $formatter->page->name;
  +    if (empty($options['update']) and !empty($options['value']))
  +        $page = $options['value'];
  +
       if (!$DBInfo->hasPage($page)) {
           $options['err']=_("You are not able to add keywords.");
           $options['title']=_("Page does not exists");
  @@ -548,7 +551,7 @@
           }
   
           $formatter->send_title(sprintf(_("Keywords for %s are updated"),
  -            $options['page']),'', $options);
  +            $page),'', $options);
           $ret='';
           foreach ($keys as $key=>$val) {
               $ret.=$key.',';
  @@ -601,7 +604,7 @@
           return;
       }
   
  -    if ($options['all']) {
  +    if ($options['all'] or $options['tour']) {
           if ($options['sort']=='freq') $sort= 'freq';
           $formatter->send_title('','', $options);
           $myq='?'.$_SERVER['QUERY_STRING'];
  
  
  


wkpark      2009/01/09 19:15:12

  Modified:    .        Tag: B_1_1_3 wiki.php wikilib.php
  Log:
  fix 1.1.3 bugs (merge trunk)
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.452.2.1 +11 -10    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.452
  retrieving revision 1.452.2.1
  diff -u -r1.452 -r1.452.2.1
  --- wiki.php	2 Jan 2009 17:57:01 -0000	1.452
  +++ wiki.php	9 Jan 2009 10:15:12 -0000	1.452.2.1
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.452 2009/01/02 17:57:01 wkpark Exp $
  +// $Id: wiki.php,v 1.452.2.1 2009/01/09 10:15:12 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.452 $',1,-1);
  +$_revision = substr('$Revision: 1.452.2.1 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2676,7 +2676,7 @@
     }
   
     function nonexists_simple($word,$url) {
  -    return "<a class='nonexistent nomarkup' href='$url'>?</a>$word";
  +    return "<a class='nonexistent nomarkup' href='$url' rel='nofollow'>?</a>$word";
     }
   
     function nonexists_nolink($word,$url) {
  @@ -2686,17 +2686,17 @@
     function nonexists_always($word,$url,$page) {
       $title='';
       if ($page != $word) $title="title=\"$page\" ";
  -    return "<a href='$url' $title>$word</a>";
  +    return "<a href='$url' $title rel='nofollow'>$word</a>";
     }
   
     function nonexists_forcelink($word,$url) {
  -    return "<a class='nonexistent' href='$url'>$word</a>";
  +    return "<a class='nonexistent' rel='nofollow' href='$url'>$word</a>";
     }
   
     function nonexists_fancy($word,$url) {
       global $DBInfo;
       if ($word[0]=='<' and preg_match('/^<[^>]+>/',$word))
  -      return "<a class='nonexistent' href='$url'>$word</a>";
  +      return "<a class='nonexistent' rel='nofollow' href='$url'>$word</a>";
       #if (preg_match("/^[a-zA-Z0-9\/~]/",$word))
       if (ord($word[0]) < 125) {
         $link=$word[0];
  @@ -2704,7 +2704,7 @@
           $link=strtok($word,';').';';$last=strtok('');
         } else
           $last=substr($word,1);
  -      return "<span><a class='nonexistent' href='$url'>$link</a>".$last.'<span>';
  +      return "<span><a class='nonexistent' rel='nofollow' href='$url'>$link</a>".$last.'<span>';
       }
       if (strtolower($DBInfo->charset) == 'utf-8')
         $utfword=$word;
  @@ -2719,9 +2719,9 @@
         }
         $tag=strtok($mbword,';').';'; $last=strtok('');
         if ($tag)
  -        return "<a class='nonexistent' href='$url'>$tag</a>".$last;
  +        return "<span><a class='nonexistent' rel='nofollow' href='$url'>$tag</a>".$last.'<span>';
       }
  -    return "<a class='nonexistent' href='$url'>?</a>$word";
  +    return "<a class='nonexistent nomarkup' rel='nofollow' href='$url'>?</a>$word";
     }
   
     function head_repl($depth,$head,&$headinfo,$attr='') {
  @@ -2981,6 +2981,7 @@
         $text= $pageurl; # XXX
       if (!$pageurl)
         $pageurl=$this->page->urlname;
  +    if ($query_string{0}=='?') $attr=empty($attr) ? 'rel="nofollow"':$attr.' rel="nofollow"';
       $url=$this->link_url($pageurl,$query_string);
       return sprintf("<a href=\"%s\" %s>%s</a>", $url, $attr, $text);
     }
  @@ -4154,7 +4155,7 @@
       $opts['rev']=$this->page->get_rev();
       $orig=$this->page->get_raw_body($opts);
   
  -    if ($DBInfo->use_external_merge) {
  +    if (!empty($DBInfo->use_external_merge)) {
         # save new
         $tmpf3=tempnam($DBInfo->vartmp_dir,'MERGE_NEW');
         $fp= fopen($tmpf3, 'w');
  
  
  
  1.263.2.1 +6 -6      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.263
  retrieving revision 1.263.2.1
  diff -u -r1.263 -r1.263.2.1
  --- wikilib.php	2 Jan 2009 16:39:50 -0000	1.263
  +++ wikilib.php	9 Jan 2009 10:15:12 -0000	1.263.2.1
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.263 2009/01/02 16:39:50 wkpark Exp $
  +// $Id: wikilib.php,v 1.263.2.1 2009/01/09 10:15:12 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1577,9 +1577,9 @@
         print $menu;
         print "<div id='wikiPreview'>\n";
         if ($options['conflict'] and $merge)
  -        print $formatter->macro_repl('Diff','',array('text'=>$merge));
  +        print $formatter->macro_repl('Diff','',array('text'=>$merge,'raw'=>1));
         else
  -        print $formatter->macro_repl('Diff','',array('text'=>$savetext));
  +        print $formatter->macro_repl('Diff','',array('text'=>$savetext,'raw'=>1));
         print "</div>\n";
         $formatter->send_footer();
         return;
  @@ -2251,13 +2251,13 @@
         if (preg_match("/^[A-Z]+/",$line)) {
           $wiki=strtok($line,' ');$icon=trim(strtok(' '));
           if (!preg_match('/^(http|ftp|attachment):/',$icon,$match)) continue;
  +        preg_match('/^(\d+)(x(\d+))?\b/',strtok(''),$sz);
  +        $sx=$sz[1];$sy=$sz[3];
  +        $sx=$sx ? $sx:16; $sy=$sy ? $sy:16;
           if ($icon[0]=='a') {
             $url=$formatter->macro_repl('Attachment',substr($icon,11),1);
             $icon=qualifiedUrl($DBInfo->url_prefix.'/'.$url);
           }
  -        preg_match('/^(\d+)(x(\d+))?\b/',strtok(''),$sz);
  -        $sx=$sz[1];$sy=$sz[3];
  -        $sx=$sx ? $sx:16; $sy=$sy ? $sy:16;
           $intericon[$wiki]=array($sx,$sy,trim($icon));
         }
       }
  
  
  


wkpark      2009/01/09 19:15:13

  Modified:    local    Tag: B_1_1_3 moniwyg.js
  Log:
  fix 1.1.3 bugs (merge trunk)
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.62.2.1  +6 -2      moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.62
  retrieving revision 1.62.2.1
  diff -u -r1.62 -r1.62.2.1
  --- moniwyg.js	2 Jan 2009 18:45:25 -0000	1.62
  +++ moniwyg.js	9 Jan 2009 10:15:12 -0000	1.62.2.1
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.62 2009/01/02 18:45:25 wkpark Exp $
  +// $Id: moniwyg.js,v 1.62.2.1 2009/01/09 10:15:12 wkpark Exp $
   //
   //_url_prefix="/wiki";
   //
  @@ -1640,8 +1640,12 @@
       if (! this.should_whitespace()) return;
       this.chomp_n(); // FIX
       var str = this.output[this.output.length - 1];
  -    if (!str.match(/||/)) // is it TD ? XXX FIXME
  +    if (str) {
  +        if (!str.match(/\|\|/)) // is it TD ? XXX FIXME
  +            this.insert_new_line();
  +    } else {
           this.insert_new_line();
  +    }
       //this.insert_new_line(); // FIX for line_alone (----)
   }
   
  
  
  


wkpark      2009/01/09 19:15:13

  Modified:    locale/po Tag: B_1_1_3 fr.po ko.po moniwiki.pot
  Log:
  fix 1.1.3 bugs (merge trunk)
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.24.2.1  +69 -69    moniwiki/locale/po/fr.po
  
  Index: fr.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/fr.po,v
  retrieving revision 1.24
  retrieving revision 1.24.2.1
  diff -u -r1.24 -r1.24.2.1
  --- fr.po	2 Jan 2009 05:51:21 -0000	1.24
  +++ fr.po	9 Jan 2009 10:15:13 -0000	1.24.2.1
  @@ -4,7 +4,7 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2009-01-02 14:50+0900\n"
  +"POT-Creation-Date: 2009-01-09 19:13+0900\n"
   "PO-Revision-Date: 2003-08-17 22:51+0900\n"
   "Last-Translator: Serge Stinckwich <Serge.Stinckwich@info.unicaen.fr>\n"
   "Language-Team: fr <fr@li.org>\n"
  @@ -209,7 +209,7 @@
   msgid "No Subject error."
   msgstr ""
   
  -#: ../plugin/bbs.php:1009 ../plugin/Comment.php:191 ../plugin/Gallery.php:174
  +#: ../plugin/bbs.php:1009 ../plugin/Comment.php:196 ../plugin/Gallery.php:174
   #: ../wikilib.php:1459 ../wikilib.php:1605
   msgid ""
   "Sorry, can not save page because some messages are blocked in this wiki."
  @@ -254,7 +254,7 @@
   msgstr "%d commentaires"
   
   # ../plugin/processor/blog.php:70
  -#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:208
  +#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:213
   #: ../plugin/processor/blog.php:78
   msgid "Add comment"
   msgstr "Ajouter un commentaire"
  @@ -294,7 +294,7 @@
   msgid "Error: No blog entry found!"
   msgstr ""
   
  -#: ../plugin/Blog.php:164 ../plugin/Blog.php:166 ../plugin/Comment.php:221
  +#: ../plugin/Blog.php:164 ../plugin/Blog.php:166 ../plugin/Comment.php:226
   msgid "Error: Don't make a clone!"
   msgstr ""
   
  @@ -347,7 +347,7 @@
   msgstr ""
   
   # ../plugin/Blog.php:197
  -#: ../plugin/Blog.php:277 ../plugin/Comment.php:104
  +#: ../plugin/Blog.php:277 ../plugin/Comment.php:109
   msgid "Don't add a signature"
   msgstr "Ne pas ajouter de signature"
   
  @@ -408,58 +408,58 @@
   msgstr ""
   
   # ../plugin/processor/blog.php:78
  -#: ../plugin/Comment.php:87
  +#: ../plugin/Comment.php:92
   msgid "Comment"
   msgstr "commentaire"
   
   # ../wikilib.php:482
  -#: ../plugin/Comment.php:88 ../wikilib.php:935 ../monisetup.php:1047
  +#: ../plugin/Comment.php:93 ../wikilib.php:935 ../monisetup.php:1047
   msgid "Preview"
   msgstr "Pr?visualisation"
   
   # ../plugin/rename.php:27
  -#: ../plugin/Comment.php:102
  +#: ../plugin/Comment.php:107
   msgid "Username"
   msgstr ""
   
   # ../wikilib.php:814
  -#: ../plugin/Comment.php:125
  +#: ../plugin/Comment.php:130
   msgid "Page is not writable"
   msgstr ""
   
   # ../wiki.php:3009
  -#: ../plugin/Comment.php:128
  +#: ../plugin/Comment.php:133
   msgid "You are not allowed to add a comment."
   msgstr ""
   
   # ../plugin/restore.php:27
  -#: ../plugin/Comment.php:129 ../plugin/Keywords.php:373
  +#: ../plugin/Comment.php:134 ../plugin/Keywords.php:377
   msgid "Page does not exists"
   msgstr ""
   
  -#: ../plugin/Comment.php:164 ../plugin/userform.php:118
  +#: ../plugin/Comment.php:169 ../plugin/userform.php:118
   #: ../plugin/userform.php:181 ../plugin/userform.php:204
   msgid "Invalid ticket !"
   msgstr ""
   
  -#: ../plugin/Comment.php:169 ../plugin/userform.php:120
  +#: ../plugin/Comment.php:174 ../plugin/userform.php:120
   #: ../plugin/userform.php:206
   msgid "You need a ticket !"
   msgstr ""
   
   # ../wikilib.php:748 ../wikilib.php:777
  -#: ../plugin/Comment.php:197
  +#: ../plugin/Comment.php:202
   msgid "Preview comment"
   msgstr ""
   
   # ../plugin/Vote.php:109
  -#: ../plugin/Comment.php:328
  +#: ../plugin/Comment.php:333
   #, c-format
   msgid "%s is commented successfully"
   msgstr "Vote r?ussi"
   
   # ../plugin/Vote.php:109
  -#: ../plugin/Comment.php:329
  +#: ../plugin/Comment.php:334
   msgid "Comment added successfully"
   msgstr ""
   
  @@ -600,7 +600,7 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4453
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4459
   msgid "Refresh"
   msgstr ""
   
  @@ -617,7 +617,7 @@
   " ou cliquer sur %s pour faire une recherche en texte int?gral de cette "
   "page.\n"
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5339 ../wiki.php:5346
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5349 ../wiki.php:5356
   #: ../wikilib.php:1390
   msgid "here"
   msgstr ""
  @@ -777,89 +777,89 @@
   msgid "Edit new molecule"
   msgstr ""
   
  -#: ../plugin/Keywords.php:331
  +#: ../plugin/Keywords.php:332
   msgid "hits"
   msgstr ""
   
  -#: ../plugin/Keywords.php:339
  +#: ../plugin/Keywords.php:340
   msgid "add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:342
  +#: ../plugin/Keywords.php:343
   msgid "Update keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:344
  +#: ../plugin/Keywords.php:345
   msgid "Add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:345
  +#: ../plugin/Keywords.php:346
   msgid "Add as common words"
   msgstr ""
   
  -#: ../plugin/Keywords.php:346
  +#: ../plugin/Keywords.php:347
   msgid "Unselect all"
   msgstr ""
   
  -#: ../plugin/Keywords.php:347
  +#: ../plugin/Keywords.php:348
   msgid "Suggest new Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:356
  +#: ../plugin/Keywords.php:357
   msgid "select language"
   msgstr ""
   
   # ../wiki.php:3009
  -#: ../plugin/Keywords.php:372
  +#: ../plugin/Keywords.php:376
   msgid "You are not able to add keywords."
   msgstr ""
   
   # ../wikilib.php:814
  -#: ../plugin/Keywords.php:386
  +#: ../plugin/Keywords.php:390
   #, c-format
   msgid "%s is not found."
   msgstr ""
   
  -#: ../plugin/Keywords.php:502
  +#: ../plugin/Keywords.php:506
   msgid "Common words are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:549
  +#: ../plugin/Keywords.php:553
   #, c-format
   msgid "Keywords for %s are updated"
   msgstr ""
   
   # ../plugin/quicklinks.php:38
  -#: ../plugin/Keywords.php:575
  +#: ../plugin/Keywords.php:579
   msgid "Keywords are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:577
  +#: ../plugin/Keywords.php:581
   msgid "There are no changes found"
   msgstr ""
   
  -#: ../plugin/Keywords.php:590
  +#: ../plugin/Keywords.php:594
   msgid "Update with these Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:610 ../plugin/Keywords.php:614
  +#: ../plugin/Keywords.php:614 ../plugin/Keywords.php:618
   msgid "alphabetically"
   msgstr ""
   
  -#: ../plugin/Keywords.php:611
  +#: ../plugin/Keywords.php:615
   msgid "by frequency"
   msgstr ""
   
  -#: ../plugin/Keywords.php:613
  +#: ../plugin/Keywords.php:617
   msgid "by size"
   msgstr ""
   
  -#: ../plugin/Keywords.php:619
  +#: ../plugin/Keywords.php:623
   #, c-format
   msgid "Keywords list %s (or %s)"
   msgstr ""
   
  -#: ../plugin/Keywords.php:624
  +#: ../plugin/Keywords.php:628
   #, c-format
   msgid "Select keywords for %s"
   msgstr ""
  @@ -1065,7 +1065,7 @@
   msgid "Save Changes"
   msgstr ""
   
  -#: ../plugin/processor/monimarkup.php:490 ../wiki.php:3841
  +#: ../plugin/processor/monimarkup.php:502 ../wiki.php:3847
   msgid "edit"
   msgstr ""
   
  @@ -1326,7 +1326,7 @@
   msgid "Select a tarball file to restore"
   msgstr ""
   
  -#: ../plugin/revert.php:23 ../wiki.php:5341
  +#: ../plugin/revert.php:23 ../wiki.php:5351
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr ""
  @@ -1710,7 +1710,7 @@
   msgstr "TwinPages de %s"
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../plugin/TwinPages.php:19 ../wiki.php:5325
  +#: ../plugin/TwinPages.php:19 ../wiki.php:5335
   msgid "See [TwinPages]: "
   msgstr "Voir [TwinPages]: "
   
  @@ -1945,8 +1945,8 @@
   msgid "You are not allowed to register on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5279
  -#: ../wiki.php:5290
  +#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5289
  +#: ../wiki.php:5300
   msgid "Please contact WikiMasters"
   msgstr ""
   
  @@ -2118,133 +2118,133 @@
   msgstr ""
   
   # ../wikilib.php:521
  -#: ../wiki.php:2919 ../wiki.php:2930 ../wiki.php:5519
  +#: ../wiki.php:2919 ../wiki.php:2930 ../wiki.php:5529
   msgid "Invalid ajax action."
   msgstr ""
   
  -#: ../wiki.php:3422
  +#: ../wiki.php:3428
   msgid "Tags:"
   msgstr ""
   
   # ../wiki.php:1824
  -#: ../wiki.php:3450
  +#: ../wiki.php:3456
   #, c-format
   msgid "See %s"
   msgstr "Voir %s"
   
   # ../wiki.php:1824
  -#: ../wiki.php:3450
  +#: ../wiki.php:3456
   #, c-format
   msgid "TwinPages"
   msgstr ""
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../wiki.php:3455
  +#: ../wiki.php:3461
   msgid "See [TwinPages]:"
   msgstr "Voir [TwinPages]: "
   
  -#: ../wiki.php:4021
  +#: ../wiki.php:4027
   msgid "Sister Sites Index"
   msgstr ""
   
   # ../locale/dummy.php:6 ../wiki.php:2553
  -#: ../wiki.php:4449 ../locale/dummy.php:6
  +#: ../wiki.php:4455 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "?ditionTexte"
   
   # ../wiki.php:2555
  -#: ../wiki.php:4451
  +#: ../wiki.php:4457
   msgid "NotEditable"
   msgstr "Pas?ditable"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wiki.php:4455 ../locale/dummy.php:6
  +#: ../wiki.php:4461 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "MontrePage"
   
   # ../locale/dummy.php:3 ../locale/dummy.php:5 ../wiki.php:2558
  -#: ../wiki.php:4456 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4462 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "TrouvePage"
   
  -#: ../wiki.php:4859
  +#: ../wiki.php:4869
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5278
  +#: ../wiki.php:5288
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5289
  +#: ../wiki.php:5299
   msgid "You are blocked in this wiki"
   msgstr ""
   
   # ../wiki.php:2945 ../wiki.php:2948
  -#: ../wiki.php:5327 ../wiki.php:5336 ../wikilib.php:1370
  +#: ../wiki.php:5337 ../wiki.php:5346 ../wikilib.php:1370
   msgid "Create this page"
   msgstr "Cr?er cette page"
   
   # ../wikilib.php:816
  -#: ../wiki.php:5338
  +#: ../wiki.php:5348
   #, c-format
   msgid "%s has saved revisions"
   msgstr "%s est sauvegard?"
   
   # ../wiki.php:2950
  -#: ../wiki.php:5339 ../wiki.php:5346
  +#: ../wiki.php:5349 ../wiki.php:5356
   #, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr ""
   
  -#: ../wiki.php:5344
  +#: ../wiki.php:5354
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr ""
   
  -#: ../wiki.php:5351
  +#: ../wiki.php:5361
   msgid "Please try to search with another word"
   msgstr ""
   
   # ../wiki.php:2956
  -#: ../wiki.php:5363
  +#: ../wiki.php:5373
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr "%s ou alternativement, utiliser un de ces mod?les de page :\n"
   
  -#: ../wiki.php:5366
  +#: ../wiki.php:5376
   msgid "You have no templates"
   msgstr ""
   
   # ../wikilib.php:427
  -#: ../wiki.php:5368
  +#: ../wiki.php:5378
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
   
  -#: ../wiki.php:5379
  +#: ../wiki.php:5389
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
   # ../wikilib.php:521
  -#: ../wiki.php:5521
  +#: ../wiki.php:5531
   msgid "Invalid macro action."
   msgstr ""
   
   # ../wiki.php:3009
  -#: ../wiki.php:5531
  +#: ../wiki.php:5541
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "Vous n'?tes pas autoris? ? '%s'"
   
   # ../wiki.php:3021
  -#: ../wiki.php:5551
  +#: ../wiki.php:5561
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "Impossible de pouvoir \"%s\" !"
   
   # ../wiki.php:3024
  -#: ../wiki.php:5554
  +#: ../wiki.php:5564
   msgid "Please enter the valid password"
   msgstr "Merci d'entrer un mot de passe valide"
   
  
  
  
  1.29.2.1  +74 -74    moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.29
  retrieving revision 1.29.2.1
  diff -u -r1.29 -r1.29.2.1
  --- ko.po	2 Jan 2009 05:51:21 -0000	1.29
  +++ ko.po	9 Jan 2009 10:15:13 -0000	1.29.2.1
  @@ -5,7 +5,7 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1.3\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2009-01-02 14:50+0900\n"
  +"POT-Creation-Date: 2009-01-09 19:13+0900\n"
   "PO-Revision-Date: 2008-12-11 12:20+0900\n"
   "Last-Translator: Won-Kyu Park <wkpark@kldp.org>\n"
   "Language-Team: Won-Kyu Park <wkpark@kldp.org>\n"
  @@ -195,7 +195,7 @@
   msgid "No Subject error."
   msgstr "제목이 없습니다."
   
  -#: ../plugin/bbs.php:1009 ../plugin/Comment.php:191 ../plugin/Gallery.php:174
  +#: ../plugin/bbs.php:1009 ../plugin/Comment.php:196 ../plugin/Gallery.php:174
   #: ../wikilib.php:1459 ../wikilib.php:1605
   msgid ""
   "Sorry, can not save page because some messages are blocked in this wiki."
  @@ -233,7 +233,7 @@
   msgid "%d comments"
   msgstr "댓글 %d개"
   
  -#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:208
  +#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:213
   #: ../plugin/processor/blog.php:78
   msgid "Add comment"
   msgstr "댓글 달기"
  @@ -268,7 +268,7 @@
   msgid "Error: No blog entry found!"
   msgstr "오류: 블로그 항목이 없습니다!"
   
  -#: ../plugin/Blog.php:164 ../plugin/Blog.php:166 ../plugin/Comment.php:221
  +#: ../plugin/Blog.php:164 ../plugin/Blog.php:166 ../plugin/Comment.php:226
   msgid "Error: Don't make a clone!"
   msgstr "오류: 복제를 만들지 마세요!"
   
  @@ -313,7 +313,7 @@
   msgid "GUI"
   msgstr ""
   
  -#: ../plugin/Blog.php:277 ../plugin/Comment.php:104
  +#: ../plugin/Blog.php:277 ../plugin/Comment.php:109
   msgid "Don't add a signature"
   msgstr "서명하지 않기"
   
  @@ -368,50 +368,50 @@
   msgid "Cut & Paste a Clipboard Image"
   msgstr "클립보드의 이미지를 잘르고 붙이기"
   
  -#: ../plugin/Comment.php:87
  +#: ../plugin/Comment.php:92
   msgid "Comment"
   msgstr "댓글 달기"
   
  -#: ../plugin/Comment.php:88 ../wikilib.php:935 ../monisetup.php:1047
  +#: ../plugin/Comment.php:93 ../wikilib.php:935 ../monisetup.php:1047
   msgid "Preview"
   msgstr "미리보기"
   
  -#: ../plugin/Comment.php:102
  +#: ../plugin/Comment.php:107
   msgid "Username"
   msgstr "이름"
   
  -#: ../plugin/Comment.php:125
  +#: ../plugin/Comment.php:130
   msgid "Page is not writable"
   msgstr "쓰기가능하지 않음"
   
  -#: ../plugin/Comment.php:128
  +#: ../plugin/Comment.php:133
   msgid "You are not allowed to add a comment."
   msgstr "Comment는 허락되지 않습니다."
   
  -#: ../plugin/Comment.php:129 ../plugin/Keywords.php:373
  +#: ../plugin/Comment.php:134 ../plugin/Keywords.php:377
   msgid "Page does not exists"
   msgstr "페이지가 없습니다"
   
  -#: ../plugin/Comment.php:164 ../plugin/userform.php:118
  +#: ../plugin/Comment.php:169 ../plugin/userform.php:118
   #: ../plugin/userform.php:181 ../plugin/userform.php:204
   msgid "Invalid ticket !"
   msgstr "잘못된 티켓 !"
   
  -#: ../plugin/Comment.php:169 ../plugin/userform.php:120
  +#: ../plugin/Comment.php:174 ../plugin/userform.php:120
   #: ../plugin/userform.php:206
   msgid "You need a ticket !"
   msgstr "티켓이 필요합니다 !"
   
  -#: ../plugin/Comment.php:197
  +#: ../plugin/Comment.php:202
   msgid "Preview comment"
   msgstr "미리보기"
   
  -#: ../plugin/Comment.php:328
  +#: ../plugin/Comment.php:333
   #, c-format
   msgid "%s is commented successfully"
   msgstr "%s에 댓글이 성공적으로 첨가되었습니다"
   
  -#: ../plugin/Comment.php:329
  +#: ../plugin/Comment.php:334
   msgid "Comment added successfully"
   msgstr "댓글이 성공적으로 저장되었습니다"
   
  @@ -532,7 +532,7 @@
   msgid "Show Context."
   msgstr "문맥 보기."
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4453
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4459
   msgid "Refresh"
   msgstr "갱신"
   
  @@ -546,7 +546,7 @@
   msgid "You can also click %s to search title.\n"
   msgstr "%s을 눌러 제목 찾기를 할 수 있습니다.\n"
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5339 ../wiki.php:5346
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5349 ../wiki.php:5356
   #: ../wikilib.php:1390
   msgid "here"
   msgstr "여기"
  @@ -694,86 +694,86 @@
   msgid "Edit new molecule"
   msgstr "새 분자 편집"
   
  -#: ../plugin/Keywords.php:331
  +#: ../plugin/Keywords.php:332
   msgid "hits"
   msgstr ""
   
  -#: ../plugin/Keywords.php:339
  +#: ../plugin/Keywords.php:340
   msgid "add keywords"
   msgstr "키워드 더하기"
   
  -#: ../plugin/Keywords.php:342
  +#: ../plugin/Keywords.php:343
   msgid "Update keywords"
   msgstr "키워드 갱신"
   
  -#: ../plugin/Keywords.php:344
  +#: ../plugin/Keywords.php:345
   msgid "Add keywords"
   msgstr "키워드 더하기"
   
  -#: ../plugin/Keywords.php:345
  +#: ../plugin/Keywords.php:346
   msgid "Add as common words"
   msgstr "일반 단어로 추가"
   
  -#: ../plugin/Keywords.php:346
  +#: ../plugin/Keywords.php:347
   msgid "Unselect all"
   msgstr "모두 선택 취소"
   
  -#: ../plugin/Keywords.php:347
  +#: ../plugin/Keywords.php:348
   msgid "Suggest new Keywords"
   msgstr "새 키워드 제안"
   
  -#: ../plugin/Keywords.php:356
  +#: ../plugin/Keywords.php:357
   msgid "select language"
   msgstr "언어 고르기"
   
  -#: ../plugin/Keywords.php:372
  +#: ../plugin/Keywords.php:376
   msgid "You are not able to add keywords."
   msgstr "키워드를 추가할 수 없습니다."
   
  -#: ../plugin/Keywords.php:386
  +#: ../plugin/Keywords.php:390
   #, c-format
   msgid "%s is not found."
   msgstr "%s을(를) 찾을 수 없습니다"
   
  -#: ../plugin/Keywords.php:502
  +#: ../plugin/Keywords.php:506
   msgid "Common words are updated"
   msgstr "일반 단어가 갱신됨"
   
  -#: ../plugin/Keywords.php:549
  +#: ../plugin/Keywords.php:553
   #, c-format
   msgid "Keywords for %s are updated"
   msgstr "%s에 대한 키워드가 갱신됨"
   
  -#: ../plugin/Keywords.php:575
  +#: ../plugin/Keywords.php:579
   msgid "Keywords are updated"
   msgstr "키워드가 갱신되었습니다"
   
  -#: ../plugin/Keywords.php:577
  +#: ../plugin/Keywords.php:581
   msgid "There are no changes found"
   msgstr "변화가 없습니다"
   
  -#: ../plugin/Keywords.php:590
  +#: ../plugin/Keywords.php:594
   msgid "Update with these Keywords"
   msgstr "키워드 갱신하기"
   
  -#: ../plugin/Keywords.php:610 ../plugin/Keywords.php:614
  +#: ../plugin/Keywords.php:614 ../plugin/Keywords.php:618
   msgid "alphabetically"
  -msgstr "알파벳순"
  +msgstr "알파벳"
   
  -#: ../plugin/Keywords.php:611
  +#: ../plugin/Keywords.php:615
   msgid "by frequency"
   msgstr "빈도수"
   
  -#: ../plugin/Keywords.php:613
  +#: ../plugin/Keywords.php:617
   msgid "by size"
   msgstr "크기"
   
  -#: ../plugin/Keywords.php:619
  +#: ../plugin/Keywords.php:623
   #, c-format
   msgid "Keywords list %s (or %s)"
   msgstr "%s순 키워드 목록 (혹은 %s순)"
   
  -#: ../plugin/Keywords.php:624
  +#: ../plugin/Keywords.php:628
   #, c-format
   msgid "Select keywords for %s"
   msgstr "%s에 대해 키워드를 고르세요"
  @@ -957,7 +957,7 @@
   msgid "Save Changes"
   msgstr "변경 저장"
   
  -#: ../plugin/processor/monimarkup.php:490 ../wiki.php:3841
  +#: ../plugin/processor/monimarkup.php:502 ../wiki.php:3847
   msgid "edit"
   msgstr "편집"
   
  @@ -1185,7 +1185,7 @@
   msgid "Select a tarball file to restore"
   msgstr "Restore하기 위한 tarball 파일을 고르세요"
   
  -#: ../plugin/revert.php:23 ../wiki.php:5341
  +#: ../plugin/revert.php:23 ../wiki.php:5351
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr "%s의 옛날 버전"
  @@ -1524,7 +1524,7 @@
   msgid "TwinPages of %s"
   msgstr "%s의 쌍둥이 페이지"
   
  -#: ../plugin/TwinPages.php:19 ../wiki.php:5325
  +#: ../plugin/TwinPages.php:19 ../wiki.php:5335
   msgid "See [TwinPages]: "
   msgstr ""
   
  @@ -1643,7 +1643,7 @@
   #: ../plugin/userform.php:94
   #, c-format
   msgid "\"%s\" does not exists on this wiki !"
  -msgstr "\"%s\"은 이 위에에 없습니다 !"
  +msgstr "\"%s\"은 이 위키에 없습니다 !"
   
   #: ../plugin/userform.php:96
   msgid "Make new ID on this wiki"
  @@ -1734,8 +1734,8 @@
   msgid "You are not allowed to register on this wiki"
   msgstr "위키 등록이 허락되지 않았습니다"
   
  -#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5279
  -#: ../wiki.php:5290
  +#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5289
  +#: ../wiki.php:5300
   msgid "Please contact WikiMasters"
   msgstr "위키관리자에게 문의하세요"
   
  @@ -1892,118 +1892,118 @@
   msgid "File '%s' does not exist."
   msgstr "파일 '%s'이(가) 없습니다"
   
  -#: ../wiki.php:2919 ../wiki.php:2930 ../wiki.php:5519
  +#: ../wiki.php:2919 ../wiki.php:2930 ../wiki.php:5529
   msgid "Invalid ajax action."
   msgstr "잘못된 ajax 액션."
   
  -#: ../wiki.php:3422
  +#: ../wiki.php:3428
   msgid "Tags:"
   msgstr "태그:"
   
  -#: ../wiki.php:3450
  +#: ../wiki.php:3456
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:3450
  +#: ../wiki.php:3456
   #, c-format
   msgid "TwinPages"
   msgstr "TwinPages"
   
  -#: ../wiki.php:3455
  +#: ../wiki.php:3461
   msgid "See [TwinPages]:"
   msgstr ""
   
  -#: ../wiki.php:4021
  +#: ../wiki.php:4027
   msgid "Sister Sites Index"
   msgstr ""
   
  -#: ../wiki.php:4449 ../locale/dummy.php:6
  +#: ../wiki.php:4455 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "고치기"
   
  -#: ../wiki.php:4451
  +#: ../wiki.php:4457
   msgid "NotEditable"
   msgstr "고칠수 없음"
   
  -#: ../wiki.php:4455 ../locale/dummy.php:6
  +#: ../wiki.php:4461 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "보기"
   
  -#: ../wiki.php:4456 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4462 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "찾기"
   
  -#: ../wiki.php:4859
  +#: ../wiki.php:4869
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5278
  +#: ../wiki.php:5288
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5289
  +#: ../wiki.php:5299
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:5327 ../wiki.php:5336 ../wikilib.php:1370
  +#: ../wiki.php:5337 ../wiki.php:5346 ../wikilib.php:1370
   msgid "Create this page"
   msgstr "페이지 만들기"
   
  -#: ../wiki.php:5338
  +#: ../wiki.php:5348
   #, c-format
   msgid "%s has saved revisions"
   msgstr "%s이(가) 저장된 옛버전이 있습니다"
   
  -#: ../wiki.php:5339 ../wiki.php:5346
  +#: ../wiki.php:5349 ../wiki.php:5356
   #, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr "%s 혹은 %s를 눌러 전체 찾기를 할 수 있습니다.\n"
   
  -#: ../wiki.php:5344
  +#: ../wiki.php:5354
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr "%s 페이지를 이곳 위키에서 찾을 수 없습니다"
   
  -#: ../wiki.php:5351
  +#: ../wiki.php:5361
   msgid "Please try to search with another word"
   msgstr "다른 단어로 찾아보세요."
   
  -#: ../wiki.php:5363
  +#: ../wiki.php:5373
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr ""
   "%s 아이콘을 누르거나 아래의 탬플리트 목록을 이용해 새 페이지를 만드세요:\n"
   
  -#: ../wiki.php:5366
  +#: ../wiki.php:5376
   msgid "You have no templates"
   msgstr "템플리트가 없습니다"
   
  -#: ../wiki.php:5368
  +#: ../wiki.php:5378
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr "탬플리트를 만드시려면 '%s' 형식의 이름을 가지는 페이지를 만드세요.\n"
   
  -#: ../wiki.php:5379
  +#: ../wiki.php:5389
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr "\"%s\"페이지로 부터 리다리렉트됨"
   
  -#: ../wiki.php:5521
  +#: ../wiki.php:5531
   msgid "Invalid macro action."
   msgstr "잘못된 마크로 액션."
   
  -#: ../wiki.php:5531
  +#: ../wiki.php:5541
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "'%s'은(는) 허락되지 않았습니다"
   
  -#: ../wiki.php:5551
  +#: ../wiki.php:5561
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "\"%s\"을(를) 실패했습니다 !"
   
  -#: ../wiki.php:5554
  +#: ../wiki.php:5564
   msgid "Please enter the valid password"
   msgstr "정확한 비밀번호를 넣어주세요"
   
  @@ -2243,7 +2243,7 @@
   #: ../wikilib.php:1546
   #, c-format
   msgid "Merge cancelled on %s."
  -msgstr "%에 대해 병합이 취소되었습니다."
  +msgstr "%s에 대해 병합이 취소되었습니다."
   
   #: ../wikilib.php:1547
   msgid "NEW"
  @@ -2256,7 +2256,7 @@
   #: ../wikilib.php:1553
   #, c-format
   msgid "Get merge conflicts for %s"
  -msgstr ""
  +msgstr "%s에 대해 병합을 합니다"
   
   #: ../wikilib.php:1554
   msgid "Please resolve conflicts manually."
  @@ -2298,7 +2298,7 @@
   
   #: ../wikilib.php:1757
   msgid "Send notification mails to all subscribers"
  -msgstr ""
  +msgstr "모든 구독자에게 메일을 보냅니다"
   
   #: ../wikilib.php:1762
   msgid "Mails are sent successfully"
  
  
  
  1.24.2.1  +69 -69    moniwiki/locale/po/moniwiki.pot
  
  Index: moniwiki.pot
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/moniwiki.pot,v
  retrieving revision 1.24
  retrieving revision 1.24.2.1
  diff -u -r1.24 -r1.24.2.1
  --- moniwiki.pot	2 Jan 2009 05:51:21 -0000	1.24
  +++ moniwiki.pot	9 Jan 2009 10:15:13 -0000	1.24.2.1
  @@ -7,7 +7,7 @@
   msgstr ""
   "Project-Id-Version: PACKAGE VERSION\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2009-01-02 14:50+0900\n"
  +"POT-Creation-Date: 2009-01-09 19:13+0900\n"
   "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
   "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
   "Language-Team: LANGUAGE <LL@li.org>\n"
  @@ -197,7 +197,7 @@
   msgid "No Subject error."
   msgstr ""
   
  -#: ../plugin/bbs.php:1009 ../plugin/Comment.php:191 ../plugin/Gallery.php:174
  +#: ../plugin/bbs.php:1009 ../plugin/Comment.php:196 ../plugin/Gallery.php:174
   #: ../wikilib.php:1459 ../wikilib.php:1605
   msgid ""
   "Sorry, can not save page because some messages are blocked in this wiki."
  @@ -235,7 +235,7 @@
   msgid "%d comments"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:208
  +#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:213
   #: ../plugin/processor/blog.php:78
   msgid "Add comment"
   msgstr ""
  @@ -270,7 +270,7 @@
   msgid "Error: No blog entry found!"
   msgstr ""
   
  -#: ../plugin/Blog.php:164 ../plugin/Blog.php:166 ../plugin/Comment.php:221
  +#: ../plugin/Blog.php:164 ../plugin/Blog.php:166 ../plugin/Comment.php:226
   msgid "Error: Don't make a clone!"
   msgstr ""
   
  @@ -315,7 +315,7 @@
   msgid "GUI"
   msgstr ""
   
  -#: ../plugin/Blog.php:277 ../plugin/Comment.php:104
  +#: ../plugin/Blog.php:277 ../plugin/Comment.php:109
   msgid "Don't add a signature"
   msgstr ""
   
  @@ -370,50 +370,50 @@
   msgid "Cut & Paste a Clipboard Image"
   msgstr ""
   
  -#: ../plugin/Comment.php:87
  +#: ../plugin/Comment.php:92
   msgid "Comment"
   msgstr ""
   
  -#: ../plugin/Comment.php:88 ../wikilib.php:935 ../monisetup.php:1047
  +#: ../plugin/Comment.php:93 ../wikilib.php:935 ../monisetup.php:1047
   msgid "Preview"
   msgstr ""
   
  -#: ../plugin/Comment.php:102
  +#: ../plugin/Comment.php:107
   msgid "Username"
   msgstr ""
   
  -#: ../plugin/Comment.php:125
  +#: ../plugin/Comment.php:130
   msgid "Page is not writable"
   msgstr ""
   
  -#: ../plugin/Comment.php:128
  +#: ../plugin/Comment.php:133
   msgid "You are not allowed to add a comment."
   msgstr ""
   
  -#: ../plugin/Comment.php:129 ../plugin/Keywords.php:373
  +#: ../plugin/Comment.php:134 ../plugin/Keywords.php:377
   msgid "Page does not exists"
   msgstr ""
   
  -#: ../plugin/Comment.php:164 ../plugin/userform.php:118
  +#: ../plugin/Comment.php:169 ../plugin/userform.php:118
   #: ../plugin/userform.php:181 ../plugin/userform.php:204
   msgid "Invalid ticket !"
   msgstr ""
   
  -#: ../plugin/Comment.php:169 ../plugin/userform.php:120
  +#: ../plugin/Comment.php:174 ../plugin/userform.php:120
   #: ../plugin/userform.php:206
   msgid "You need a ticket !"
   msgstr ""
   
  -#: ../plugin/Comment.php:197
  +#: ../plugin/Comment.php:202
   msgid "Preview comment"
   msgstr ""
   
  -#: ../plugin/Comment.php:328
  +#: ../plugin/Comment.php:333
   #, c-format
   msgid "%s is commented successfully"
   msgstr ""
   
  -#: ../plugin/Comment.php:329
  +#: ../plugin/Comment.php:334
   msgid "Comment added successfully"
   msgstr ""
   
  @@ -534,7 +534,7 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4453
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4459
   msgid "Refresh"
   msgstr ""
   
  @@ -548,7 +548,7 @@
   msgid "You can also click %s to search title.\n"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5339 ../wiki.php:5346
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5349 ../wiki.php:5356
   #: ../wikilib.php:1390
   msgid "here"
   msgstr ""
  @@ -696,86 +696,86 @@
   msgid "Edit new molecule"
   msgstr ""
   
  -#: ../plugin/Keywords.php:331
  +#: ../plugin/Keywords.php:332
   msgid "hits"
   msgstr ""
   
  -#: ../plugin/Keywords.php:339
  +#: ../plugin/Keywords.php:340
   msgid "add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:342
  +#: ../plugin/Keywords.php:343
   msgid "Update keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:344
  +#: ../plugin/Keywords.php:345
   msgid "Add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:345
  +#: ../plugin/Keywords.php:346
   msgid "Add as common words"
   msgstr ""
   
  -#: ../plugin/Keywords.php:346
  +#: ../plugin/Keywords.php:347
   msgid "Unselect all"
   msgstr ""
   
  -#: ../plugin/Keywords.php:347
  +#: ../plugin/Keywords.php:348
   msgid "Suggest new Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:356
  +#: ../plugin/Keywords.php:357
   msgid "select language"
   msgstr ""
   
  -#: ../plugin/Keywords.php:372
  +#: ../plugin/Keywords.php:376
   msgid "You are not able to add keywords."
   msgstr ""
   
  -#: ../plugin/Keywords.php:386
  +#: ../plugin/Keywords.php:390
   #, c-format
   msgid "%s is not found."
   msgstr ""
   
  -#: ../plugin/Keywords.php:502
  +#: ../plugin/Keywords.php:506
   msgid "Common words are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:549
  +#: ../plugin/Keywords.php:553
   #, c-format
   msgid "Keywords for %s are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:575
  +#: ../plugin/Keywords.php:579
   msgid "Keywords are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:577
  +#: ../plugin/Keywords.php:581
   msgid "There are no changes found"
   msgstr ""
   
  -#: ../plugin/Keywords.php:590
  +#: ../plugin/Keywords.php:594
   msgid "Update with these Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:610 ../plugin/Keywords.php:614
  +#: ../plugin/Keywords.php:614 ../plugin/Keywords.php:618
   msgid "alphabetically"
   msgstr ""
   
  -#: ../plugin/Keywords.php:611
  +#: ../plugin/Keywords.php:615
   msgid "by frequency"
   msgstr ""
   
  -#: ../plugin/Keywords.php:613
  +#: ../plugin/Keywords.php:617
   msgid "by size"
   msgstr ""
   
  -#: ../plugin/Keywords.php:619
  +#: ../plugin/Keywords.php:623
   #, c-format
   msgid "Keywords list %s (or %s)"
   msgstr ""
   
  -#: ../plugin/Keywords.php:624
  +#: ../plugin/Keywords.php:628
   #, c-format
   msgid "Select keywords for %s"
   msgstr ""
  @@ -959,7 +959,7 @@
   msgid "Save Changes"
   msgstr ""
   
  -#: ../plugin/processor/monimarkup.php:490 ../wiki.php:3841
  +#: ../plugin/processor/monimarkup.php:502 ../wiki.php:3847
   msgid "edit"
   msgstr ""
   
  @@ -1186,7 +1186,7 @@
   msgid "Select a tarball file to restore"
   msgstr ""
   
  -#: ../plugin/revert.php:23 ../wiki.php:5341
  +#: ../plugin/revert.php:23 ../wiki.php:5351
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr ""
  @@ -1521,7 +1521,7 @@
   msgid "TwinPages of %s"
   msgstr ""
   
  -#: ../plugin/TwinPages.php:19 ../wiki.php:5325
  +#: ../plugin/TwinPages.php:19 ../wiki.php:5335
   msgid "See [TwinPages]: "
   msgstr ""
   
  @@ -1731,8 +1731,8 @@
   msgid "You are not allowed to register on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5279
  -#: ../wiki.php:5290
  +#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5289
  +#: ../wiki.php:5300
   msgid "Please contact WikiMasters"
   msgstr ""
   
  @@ -1889,117 +1889,117 @@
   msgid "File '%s' does not exist."
   msgstr ""
   
  -#: ../wiki.php:2919 ../wiki.php:2930 ../wiki.php:5519
  +#: ../wiki.php:2919 ../wiki.php:2930 ../wiki.php:5529
   msgid "Invalid ajax action."
   msgstr ""
   
  -#: ../wiki.php:3422
  +#: ../wiki.php:3428
   msgid "Tags:"
   msgstr ""
   
  -#: ../wiki.php:3450
  +#: ../wiki.php:3456
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:3450
  +#: ../wiki.php:3456
   #, c-format
   msgid "TwinPages"
   msgstr ""
   
  -#: ../wiki.php:3455
  +#: ../wiki.php:3461
   msgid "See [TwinPages]:"
   msgstr ""
   
  -#: ../wiki.php:4021
  +#: ../wiki.php:4027
   msgid "Sister Sites Index"
   msgstr ""
   
  -#: ../wiki.php:4449 ../locale/dummy.php:6
  +#: ../wiki.php:4455 ../locale/dummy.php:6
   msgid "EditText"
   msgstr ""
   
  -#: ../wiki.php:4451
  +#: ../wiki.php:4457
   msgid "NotEditable"
   msgstr ""
   
  -#: ../wiki.php:4455 ../locale/dummy.php:6
  +#: ../wiki.php:4461 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:4456 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4462 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr ""
   
  -#: ../wiki.php:4859
  +#: ../wiki.php:4869
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5278
  +#: ../wiki.php:5288
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5289
  +#: ../wiki.php:5299
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:5327 ../wiki.php:5336 ../wikilib.php:1370
  +#: ../wiki.php:5337 ../wiki.php:5346 ../wikilib.php:1370
   msgid "Create this page"
   msgstr ""
   
  -#: ../wiki.php:5338
  +#: ../wiki.php:5348
   #, c-format
   msgid "%s has saved revisions"
   msgstr ""
   
  -#: ../wiki.php:5339 ../wiki.php:5346
  +#: ../wiki.php:5349 ../wiki.php:5356
   #, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr ""
   
  -#: ../wiki.php:5344
  +#: ../wiki.php:5354
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr ""
   
  -#: ../wiki.php:5351
  +#: ../wiki.php:5361
   msgid "Please try to search with another word"
   msgstr ""
   
  -#: ../wiki.php:5363
  +#: ../wiki.php:5373
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr ""
   
  -#: ../wiki.php:5366
  +#: ../wiki.php:5376
   msgid "You have no templates"
   msgstr ""
   
  -#: ../wiki.php:5368
  +#: ../wiki.php:5378
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
   
  -#: ../wiki.php:5379
  +#: ../wiki.php:5389
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
  -#: ../wiki.php:5521
  +#: ../wiki.php:5531
   msgid "Invalid macro action."
   msgstr ""
   
  -#: ../wiki.php:5531
  +#: ../wiki.php:5541
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr ""
   
  -#: ../wiki.php:5551
  +#: ../wiki.php:5561
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:5554
  +#: ../wiki.php:5564
   msgid "Please enter the valid password"
   msgstr ""
   
  
  
  


wkpark      2009/01/09 19:15:14

  Modified:    plugin   Tag: B_1_1_3 Attachment.php Comment.php
                        Keywords.php
  Log:
  fix 1.1.3 bugs (merge trunk)
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.39.2.1  +4 -4      moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.39
  retrieving revision 1.39.2.1
  diff -u -r1.39 -r1.39.2.1
  --- Attachment.php	29 Nov 2008 01:54:07 -0000	1.39
  +++ Attachment.php	9 Jan 2009 10:15:13 -0000	1.39.2.1
  @@ -7,13 +7,13 @@
   // Name: Attachment
   // Description: Attachment Plugin
   // URL: MoniWiki:AttachmentPlugin
  -// Version: $Revision: 1.39 $
  +// Version: $Revision: 1.39.2.1 $
   // Depend: 1.1.3
   // License: GPL
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.39 2008/11/29 01:54:07 wkpark Exp $
  +// $Id: Attachment.php,v 1.39.2.1 2009/01/09 10:15:13 wkpark Exp $
   
   function macro_Attachment($formatter,$value,$options='') {
     global $DBInfo;
  @@ -291,9 +291,9 @@
           $url=$formatter->link_url(_urlencode($pagename),"?action=$mydownload&amp;value=".$val);
         } else {
           if ($use_thumb)
  -          $url=$DBInfo->url_prefix."/thumbnails/"._urlencode($upload_file);
  +          $url=$DBInfo->url_prefix.'/'.$dir.'/thumbnails/'._urlencode($_l_file);
           else
  -          $url=$DBInfo->url_prefix."/"._urlencode($upload_file);
  +          $url=$DBInfo->url_prefix.'/'._urlencode($_l_upload_file);
         }
   
         $img="<img src='$url' title='$alt' alt='$alt' style='border:0' $attr/>";
  
  
  
  1.34.2.1  +14 -9     moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.34
  retrieving revision 1.34.2.1
  diff -u -r1.34 -r1.34.2.1
  --- Comment.php	14 Dec 2008 11:01:49 -0000	1.34
  +++ Comment.php	9 Jan 2009 10:15:13 -0000	1.34.2.1
  @@ -3,14 +3,24 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Wiki comment plugin for the MoniWiki
   //
  +// Author: Won-Kyu Park <wkpark@kldp.org>
  +// Since: 2004-08-16
  +// Modified: $Date: 2009/01/09 10:15:13 $
  +// Name: Comment plugin
  +// Description: Comment Plugin
  +// URL: MoniWiki:CommentPlugin
  +// Version: $Revision: 1.34.2.1 $
  +// License: GPL
   // Usage: [[Comment]], ?action=comment
   //
  -//
  -// $Id: Comment.php,v 1.34 2008/12/14 11:01:49 wkpark Exp $
  +// $Id: Comment.php,v 1.34.2.1 2009/01/09 10:15:13 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $DBInfo;
   
  +  $user=$DBInfo->user; # get from COOKIE VARS
  +  $options['id']=$user->id;
  +
     $use_any=0;
     if ($DBInfo->use_textbrowsers) {
       if (is_string($DBInfo->use_textbrowsers))
  @@ -21,7 +31,7 @@
           $_SERVER['HTTP_USER_AGENT']) ? 1:0;
     }
     $captcha='';
  -  if (!$use_any and $DBInfo->use_ticket) {
  +  if (!$use_any and $DBInfo->use_ticket and $options['id'] == 'Anonymous') {
        $seed=md5(base64_encode(time()));
        $ticketimg=$formatter->link_url($formatter->page->urlname,'?action=ticket&amp;__seed='.$seed);
        $captcha=<<<EXTRA
  @@ -72,11 +82,6 @@
     $savetext=$options['savetext'];
     $savetext= str_replace(array("&","<"),array("&amp;","&lt;"),$savetext);
   
  -  if (!$options['id']) {
  -    $user=$DBInfo->user; # get from COOKIE VARS
  -    $options['id']=$user->id;
  -  }
  -
     $url=$formatter->link_url($formatter->page->urlname);
   
     if ($emid) $hidden.='<input type="hidden" name="comment_id" value="'.$emid.'" />';
  @@ -155,7 +160,7 @@
     }
   
     $ok_ticket=0;
  -  if (!$use_any and $DBInfo->use_ticket) {
  +  if (!$use_any and $DBInfo->use_ticket and $options['id'] == 'Anonymous') {
       if ($options['__seed'] and $options['check']) {
         $mycheck=getTicket($options['__seed'],$_SERVER['REMOTE_ADDR'],4);
         if ($mycheck==$options['check'])
  
  
  
  1.28.2.1  +17 -13    moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.28
  retrieving revision 1.28.2.1
  diff -u -r1.28 -r1.28.2.1
  --- Keywords.php	1 Jan 2009 07:27:21 -0000	1.28
  +++ Keywords.php	9 Jan 2009 10:15:13 -0000	1.28.2.1
  @@ -8,12 +8,12 @@
   // Name: a Keywords Plugin
   // Description: a Keywords plugin to generate keywords of a page
   // URL: MoniWiki:KeywordsPlugin
  -// Version: $Revision: 1.28 $
  +// Version: $Revision: 1.28.2.1 $
   // License: GPL
   //
   // Usage: [[Keywords(options)]]
   //
  -// $Id: Keywords.php,v 1.28 2009/01/01 07:27:21 wkpark Exp $
  +// $Id: Keywords.php,v 1.28.2.1 2009/01/09 10:15:13 wkpark Exp $
   
   define(LOCAL_KEYWORDS,'LocalKeywords');
   
  @@ -68,14 +68,18 @@
   
       if (!$pagename) $pagename=$formatter->page->name;
   
  +    # get cached keywords
  +    $cache=new Cache_text('keywords');
  +    $pkey=$pagename;
  +
       $mc=new Cache_text('macro');
       $mkey='Keywords.'.md5($pagename.$value);
       $mykeys=array();
   
  -    if (!$formatter->refresh and $mc->exists($mkey)) {
  -        # check cache mtime
  -        $cmt=$mc->mtime($mkey);
  -
  +    # check cache mtime
  +    $cmt=$mc->mtime($mkey);
  +    $pmt=$cache->mtime($pkey);
  +    if ($cmt > $pmt) {
           # check update or not
           $dmt=filemtime($DBInfo->cache_dir.'/keywords/.');
           if ($dmt > $cmt) { # XXX crude method
  @@ -89,9 +93,6 @@
       if ($options['all']) $pages=$DBInfo->getPageLists();
       else $pages=array($pagename);
   
  -    # get cached keywords
  -    $cache=new Cache_text('keywords');
  -
       foreach ($pages as $pn) {
           if ($cache->exists($pn)) {
               $keys=$cache->fetch($pn);
  @@ -331,7 +332,7 @@
                   $out.=" $style title=\"$val "._("hits").'"';
               }
               $out.=">$checkbox"."<a href='".str_replace('$TAG',$key,$tag_link).
  -                "'>".$key."</a></li>\n";
  +                "' rel='nofollow'>".$key."</a></li>\n";
           }
       }
   
  @@ -367,7 +368,10 @@
       global $DBInfo;
       $supported_lang=array('ko');
   
  -    $page=$formatter->page->name;
  +    $page = $formatter->page->name;
  +    if (empty($options['update']) and !empty($options['value']))
  +        $page = $options['value'];
  +
       if (!$DBInfo->hasPage($page)) {
           $options['err']=_("You are not able to add keywords.");
           $options['title']=_("Page does not exists");
  @@ -547,7 +551,7 @@
           }
   
           $formatter->send_title(sprintf(_("Keywords for %s are updated"),
  -            $options['page']),'', $options);
  +            $page),'', $options);
           $ret='';
           foreach ($keys as $key=>$val) {
               $ret.=$key.',';
  @@ -600,7 +604,7 @@
           return;
       }
   
  -    if ($options['all']) {
  +    if ($options['all'] or $options['tour']) {
           if ($options['sort']=='freq') $sort= 'freq';
           $formatter->send_title('','', $options);
           $myq='?'.$_SERVER['QUERY_STRING'];
  
  
  


wkpark      2009/01/09 19:15:14

  Modified:    plugin/processor Tag: B_1_1_3 monimarkup.php
  Log:
  fix 1.1.3 bugs (merge trunk)
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.21.2.1  +18 -9     moniwiki/plugin/processor/monimarkup.php
  
  Index: monimarkup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/monimarkup.php,v
  retrieving revision 1.21
  retrieving revision 1.21.2.1
  diff -u -r1.21 -r1.21.2.1
  --- monimarkup.php	2 Jan 2009 08:04:45 -0000	1.21
  +++ monimarkup.php	9 Jan 2009 10:15:14 -0000	1.21.2.1
  @@ -3,12 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a moniwiki formatting processor for the MoniWiki
   //
  -// $Id: monimarkup.php,v 1.21 2009/01/02 08:04:45 wkpark Exp $
  +// $Id: monimarkup.php,v 1.21.2.1 2009/01/09 10:15:14 wkpark Exp $
   /**
    * @date    2006-08-09
    * @name    Moniwiki Processor
    * @desc    Moniwiki default processor
  - * @version $Revision: 1.21 $
  + * @version $Revision: 1.21.2.1 $
    * @depend  1.1.3
    * @license GPL
    */
  @@ -137,7 +137,13 @@
                   if ( !preg_match('/(\|\||\|-+)$/',$oline)) {
                       $oline.="\n".$line; continue;
                   } else if (!$tr) {
  -                    $chunk[]= $oline."\n".$line;
  +                    $oline.="\n".$line;
  +                    if ($_indlen[$_in_li]) {
  +                        $chunk[]= $this->_node($_in_li,$_nodtype,$oline);
  +                        $_in_li=0;
  +                    } else {
  +                        $chunk[]= $oline;
  +                    }
                       $_eop=0;
                       $oline=null;
                       continue;
  @@ -186,7 +192,7 @@
                   if (preg_match("/^((\*\s?)|(?:([1-9]\d*|[aAiI])\.)(?:#(\d+))?\s)/",
                       $cutline,$m)) {
                       $myindlen=$indlen+strlen($m[1])-(isset($m[4]) ? strlen($m[4]):0);
  -                    $type=$m[2] ? 'ul':$m[3];
  +                    $type=!empty($m[2]) ? 'ul':$m[3];
                       $mytype['type']=$type;
                       $start=isset($m[4]) ? $m[4]:(isset($m[3]) ? $m[3]:null);
                       if (isset($start) and is_numeric($start) and $start > 1)
  @@ -218,9 +224,9 @@
                   }
                   if ($_indtype[$_in_li] == $indtype) {
                       if ($indlen == $_indlen[$_in_li]) {
  -                        if ($indtype or
  -                            $_nodtype[$_in_li]['attributes']['class'] !=
  -                            $mytype['attributes']['class']) {
  +                        $class = isset($mytype['attributes']['class']) ? $mytype['attributes']['class']:'';
  +                        if ($indtype or (isset($_nodtype[$_in_li]['attributes']['class']) and
  +                            $_nodtype[$_in_li]['attributes']['class'] != $class)) {
                               # another list/indent
                               if ($oline)
                                   $chunk[]=
  @@ -298,6 +304,7 @@
               $_del_cr=1;
               $text=substr($text,0,-1);
           }
  +        $_diff='';
           if (preg_match("/^(\010|\006).*\\1/s",$text,$m)) {
               $_diff=$m[1];
               $text=substr($text,1,-1);
  @@ -306,6 +313,7 @@
           $_in_table=0;
           $lines=explode("\n",$text);
           $tout='';
  +        $close='';
           $oline='';
           foreach ($lines as $line) {
               if (substr($line,-1) == '&') { $oline.=substr($line,0,-1)."\n"; continue; }
  @@ -335,6 +343,7 @@
               $open = '';
               if (!$_in_table and $line[0]=='|' and
                   preg_match("/^(\|([^\|]+)?\|((\|\|)*))((?:&lt;[^>\|]*>)*)(.*)(\|\||\|-+)?$/s",$line,$m)) {
  +                $m[7] = isset($m[7]) ? $m[7]:'';
                   #print "<pre>"; print_r($m); print "</pre>";
                   $open.=$formatter->_table(1,$m[5]);
                   if ($m[2]) $open.='<caption>'.$m[2].'</caption>';
  @@ -511,9 +520,9 @@
                       $linfo='';
                       $listy='';
                       if ($type!='ul' and $type{0} !='d')
  -                        $linfo=$c['attributes'] ? $c['attributes']['start']:'';
  +                        $linfo=!empty($c['attributes']['start']) ? $c['attributes']['start']:'';
                       else if ($type{0}=='d') {
  -                        $linfo=$c['attributes'] ? $c['attributes']['class']:'';
  +                        $linfo=!empty($c['attributes']['class']) ? $c['attributes']['class']:'';
                           if (preg_match('/^((\s*)(&lt;|=|>)?{([^}]+)})/s',$val,
                                   $sty)) {
                               if ($sty[3]) $sty[4].=';'.$palign[$sty[3]];
  
  
  


wkpark      2009/01/09 19:16:10

  Modified:    locale/po fr.po ko.po moniwiki.pot
  Log:
  fixed msgs, add some msgs
  
  Revision  Changes    Path
  1.25      +64 -64    moniwiki/locale/po/fr.po
  
  Index: fr.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/fr.po,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- fr.po	2 Jan 2009 05:51:21 -0000	1.24
  +++ fr.po	9 Jan 2009 10:16:09 -0000	1.25
  @@ -4,7 +4,7 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2009-01-02 14:50+0900\n"
  +"POT-Creation-Date: 2009-01-09 01:09+0900\n"
   "PO-Revision-Date: 2003-08-17 22:51+0900\n"
   "Last-Translator: Serge Stinckwich <Serge.Stinckwich@info.unicaen.fr>\n"
   "Language-Team: fr <fr@li.org>\n"
  @@ -433,7 +433,7 @@
   msgstr ""
   
   # ../plugin/restore.php:27
  -#: ../plugin/Comment.php:129 ../plugin/Keywords.php:373
  +#: ../plugin/Comment.php:129 ../plugin/Keywords.php:377
   msgid "Page does not exists"
   msgstr ""
   
  @@ -600,7 +600,7 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4453
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4458
   msgid "Refresh"
   msgstr ""
   
  @@ -617,7 +617,7 @@
   " ou cliquer sur %s pour faire une recherche en texte int?gral de cette "
   "page.\n"
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5339 ../wiki.php:5346
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5348 ../wiki.php:5355
   #: ../wikilib.php:1390
   msgid "here"
   msgstr ""
  @@ -777,89 +777,89 @@
   msgid "Edit new molecule"
   msgstr ""
   
  -#: ../plugin/Keywords.php:331
  +#: ../plugin/Keywords.php:332
   msgid "hits"
   msgstr ""
   
  -#: ../plugin/Keywords.php:339
  +#: ../plugin/Keywords.php:340
   msgid "add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:342
  +#: ../plugin/Keywords.php:343
   msgid "Update keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:344
  +#: ../plugin/Keywords.php:345
   msgid "Add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:345
  +#: ../plugin/Keywords.php:346
   msgid "Add as common words"
   msgstr ""
   
  -#: ../plugin/Keywords.php:346
  +#: ../plugin/Keywords.php:347
   msgid "Unselect all"
   msgstr ""
   
  -#: ../plugin/Keywords.php:347
  +#: ../plugin/Keywords.php:348
   msgid "Suggest new Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:356
  +#: ../plugin/Keywords.php:357
   msgid "select language"
   msgstr ""
   
   # ../wiki.php:3009
  -#: ../plugin/Keywords.php:372
  +#: ../plugin/Keywords.php:376
   msgid "You are not able to add keywords."
   msgstr ""
   
   # ../wikilib.php:814
  -#: ../plugin/Keywords.php:386
  +#: ../plugin/Keywords.php:390
   #, c-format
   msgid "%s is not found."
   msgstr ""
   
  -#: ../plugin/Keywords.php:502
  +#: ../plugin/Keywords.php:506
   msgid "Common words are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:549
  +#: ../plugin/Keywords.php:553
   #, c-format
   msgid "Keywords for %s are updated"
   msgstr ""
   
   # ../plugin/quicklinks.php:38
  -#: ../plugin/Keywords.php:575
  +#: ../plugin/Keywords.php:579
   msgid "Keywords are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:577
  +#: ../plugin/Keywords.php:581
   msgid "There are no changes found"
   msgstr ""
   
  -#: ../plugin/Keywords.php:590
  +#: ../plugin/Keywords.php:594
   msgid "Update with these Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:610 ../plugin/Keywords.php:614
  +#: ../plugin/Keywords.php:614 ../plugin/Keywords.php:618
   msgid "alphabetically"
   msgstr ""
   
  -#: ../plugin/Keywords.php:611
  +#: ../plugin/Keywords.php:615
   msgid "by frequency"
   msgstr ""
   
  -#: ../plugin/Keywords.php:613
  +#: ../plugin/Keywords.php:617
   msgid "by size"
   msgstr ""
   
  -#: ../plugin/Keywords.php:619
  +#: ../plugin/Keywords.php:623
   #, c-format
   msgid "Keywords list %s (or %s)"
   msgstr ""
   
  -#: ../plugin/Keywords.php:624
  +#: ../plugin/Keywords.php:628
   #, c-format
   msgid "Select keywords for %s"
   msgstr ""
  @@ -1065,7 +1065,7 @@
   msgid "Save Changes"
   msgstr ""
   
  -#: ../plugin/processor/monimarkup.php:490 ../wiki.php:3841
  +#: ../plugin/processor/monimarkup.php:502 ../wiki.php:3846
   msgid "edit"
   msgstr ""
   
  @@ -1326,7 +1326,7 @@
   msgid "Select a tarball file to restore"
   msgstr ""
   
  -#: ../plugin/revert.php:23 ../wiki.php:5341
  +#: ../plugin/revert.php:23 ../wiki.php:5350
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr ""
  @@ -1626,47 +1626,47 @@
   msgid "Invalid use of ticket"
   msgstr ""
   
  -#: ../plugin/Tour.php:57
  +#: ../plugin/Tour.php:81
   msgid "BackLinks"
   msgstr ""
   
  -#: ../plugin/Tour.php:61
  +#: ../plugin/Tour.php:85
   msgid "Keywords"
   msgstr ""
   
   # ../plugin/minilogin.php:30
  -#: ../plugin/Tour.php:70
  +#: ../plugin/Tour.php:94
   #, c-format
   msgid " from %s"
   msgstr ""
   
   # ../plugin/minilogin.php:30
  -#: ../plugin/Tour.php:73
  +#: ../plugin/Tour.php:97
   #, c-format
   msgid "%s Tour %s"
   msgstr ""
   
  -#: ../plugin/Tour.php:121
  +#: ../plugin/Tour.php:156
   msgid "links"
   msgstr ""
   
   # ../plugin/VisualTour.php:59
  -#: ../plugin/Tour.php:123
  +#: ../plugin/Tour.php:158
   msgid "deeper"
   msgstr ""
   
   # ../plugin/minilogin.php:30
  -#: ../plugin/Tour.php:124
  +#: ../plugin/Tour.php:159
   #, c-format
   msgid "More %s or more %s"
   msgstr ""
   
  -#: ../plugin/Tour.php:139
  +#: ../plugin/Tour.php:174
   #, c-format
   msgid "Total %d related keywords"
   msgstr ""
   
  -#: ../plugin/Tour.php:142
  +#: ../plugin/Tour.php:177
   #, c-format
   msgid "Total %d related pages"
   msgstr ""
  @@ -1710,7 +1710,7 @@
   msgstr "TwinPages de %s"
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../plugin/TwinPages.php:19 ../wiki.php:5325
  +#: ../plugin/TwinPages.php:19 ../wiki.php:5334
   msgid "See [TwinPages]: "
   msgstr "Voir [TwinPages]: "
   
  @@ -1945,8 +1945,8 @@
   msgid "You are not allowed to register on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5279
  -#: ../wiki.php:5290
  +#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5288
  +#: ../wiki.php:5299
   msgid "Please contact WikiMasters"
   msgstr ""
   
  @@ -2118,133 +2118,133 @@
   msgstr ""
   
   # ../wikilib.php:521
  -#: ../wiki.php:2919 ../wiki.php:2930 ../wiki.php:5519
  +#: ../wiki.php:2919 ../wiki.php:2930 ../wiki.php:5528
   msgid "Invalid ajax action."
   msgstr ""
   
  -#: ../wiki.php:3422
  +#: ../wiki.php:3427
   msgid "Tags:"
   msgstr ""
   
   # ../wiki.php:1824
  -#: ../wiki.php:3450
  +#: ../wiki.php:3455
   #, c-format
   msgid "See %s"
   msgstr "Voir %s"
   
   # ../wiki.php:1824
  -#: ../wiki.php:3450
  +#: ../wiki.php:3455
   #, c-format
   msgid "TwinPages"
   msgstr ""
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../wiki.php:3455
  +#: ../wiki.php:3460
   msgid "See [TwinPages]:"
   msgstr "Voir [TwinPages]: "
   
  -#: ../wiki.php:4021
  +#: ../wiki.php:4026
   msgid "Sister Sites Index"
   msgstr ""
   
   # ../locale/dummy.php:6 ../wiki.php:2553
  -#: ../wiki.php:4449 ../locale/dummy.php:6
  +#: ../wiki.php:4454 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "?ditionTexte"
   
   # ../wiki.php:2555
  -#: ../wiki.php:4451
  +#: ../wiki.php:4456
   msgid "NotEditable"
   msgstr "Pas?ditable"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wiki.php:4455 ../locale/dummy.php:6
  +#: ../wiki.php:4460 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "MontrePage"
   
   # ../locale/dummy.php:3 ../locale/dummy.php:5 ../wiki.php:2558
  -#: ../wiki.php:4456 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4461 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "TrouvePage"
   
  -#: ../wiki.php:4859
  +#: ../wiki.php:4868
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5278
  +#: ../wiki.php:5287
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5289
  +#: ../wiki.php:5298
   msgid "You are blocked in this wiki"
   msgstr ""
   
   # ../wiki.php:2945 ../wiki.php:2948
  -#: ../wiki.php:5327 ../wiki.php:5336 ../wikilib.php:1370
  +#: ../wiki.php:5336 ../wiki.php:5345 ../wikilib.php:1370
   msgid "Create this page"
   msgstr "Cr?er cette page"
   
   # ../wikilib.php:816
  -#: ../wiki.php:5338
  +#: ../wiki.php:5347
   #, c-format
   msgid "%s has saved revisions"
   msgstr "%s est sauvegard?"
   
   # ../wiki.php:2950
  -#: ../wiki.php:5339 ../wiki.php:5346
  +#: ../wiki.php:5348 ../wiki.php:5355
   #, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr ""
   
  -#: ../wiki.php:5344
  +#: ../wiki.php:5353
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr ""
   
  -#: ../wiki.php:5351
  +#: ../wiki.php:5360
   msgid "Please try to search with another word"
   msgstr ""
   
   # ../wiki.php:2956
  -#: ../wiki.php:5363
  +#: ../wiki.php:5372
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr "%s ou alternativement, utiliser un de ces mod?les de page :\n"
   
  -#: ../wiki.php:5366
  +#: ../wiki.php:5375
   msgid "You have no templates"
   msgstr ""
   
   # ../wikilib.php:427
  -#: ../wiki.php:5368
  +#: ../wiki.php:5377
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
   
  -#: ../wiki.php:5379
  +#: ../wiki.php:5388
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
   # ../wikilib.php:521
  -#: ../wiki.php:5521
  +#: ../wiki.php:5530
   msgid "Invalid macro action."
   msgstr ""
   
   # ../wiki.php:3009
  -#: ../wiki.php:5531
  +#: ../wiki.php:5540
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "Vous n'?tes pas autoris? ? '%s'"
   
   # ../wiki.php:3021
  -#: ../wiki.php:5551
  +#: ../wiki.php:5560
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "Impossible de pouvoir \"%s\" !"
   
   # ../wiki.php:3024
  -#: ../wiki.php:5554
  +#: ../wiki.php:5563
   msgid "Please enter the valid password"
   msgstr "Merci d'entrer un mot de passe valide"
   
  
  
  
  1.30      +69 -69    moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- ko.po	2 Jan 2009 05:51:21 -0000	1.29
  +++ ko.po	9 Jan 2009 10:16:09 -0000	1.30
  @@ -5,7 +5,7 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1.3\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2009-01-02 14:50+0900\n"
  +"POT-Creation-Date: 2009-01-09 01:09+0900\n"
   "PO-Revision-Date: 2008-12-11 12:20+0900\n"
   "Last-Translator: Won-Kyu Park <wkpark@kldp.org>\n"
   "Language-Team: Won-Kyu Park <wkpark@kldp.org>\n"
  @@ -388,7 +388,7 @@
   msgid "You are not allowed to add a comment."
   msgstr "Comment는 허락되지 않습니다."
   
  -#: ../plugin/Comment.php:129 ../plugin/Keywords.php:373
  +#: ../plugin/Comment.php:129 ../plugin/Keywords.php:377
   msgid "Page does not exists"
   msgstr "페이지가 없습니다"
   
  @@ -532,7 +532,7 @@
   msgid "Show Context."
   msgstr "문맥 보기."
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4453
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4458
   msgid "Refresh"
   msgstr "갱신"
   
  @@ -546,7 +546,7 @@
   msgid "You can also click %s to search title.\n"
   msgstr "%s을 눌러 제목 찾기를 할 수 있습니다.\n"
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5339 ../wiki.php:5346
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5348 ../wiki.php:5355
   #: ../wikilib.php:1390
   msgid "here"
   msgstr "여기"
  @@ -694,86 +694,86 @@
   msgid "Edit new molecule"
   msgstr "새 분자 편집"
   
  -#: ../plugin/Keywords.php:331
  +#: ../plugin/Keywords.php:332
   msgid "hits"
   msgstr ""
   
  -#: ../plugin/Keywords.php:339
  +#: ../plugin/Keywords.php:340
   msgid "add keywords"
   msgstr "키워드 더하기"
   
  -#: ../plugin/Keywords.php:342
  +#: ../plugin/Keywords.php:343
   msgid "Update keywords"
   msgstr "키워드 갱신"
   
  -#: ../plugin/Keywords.php:344
  +#: ../plugin/Keywords.php:345
   msgid "Add keywords"
   msgstr "키워드 더하기"
   
  -#: ../plugin/Keywords.php:345
  +#: ../plugin/Keywords.php:346
   msgid "Add as common words"
   msgstr "일반 단어로 추가"
   
  -#: ../plugin/Keywords.php:346
  +#: ../plugin/Keywords.php:347
   msgid "Unselect all"
   msgstr "모두 선택 취소"
   
  -#: ../plugin/Keywords.php:347
  +#: ../plugin/Keywords.php:348
   msgid "Suggest new Keywords"
   msgstr "새 키워드 제안"
   
  -#: ../plugin/Keywords.php:356
  +#: ../plugin/Keywords.php:357
   msgid "select language"
   msgstr "언어 고르기"
   
  -#: ../plugin/Keywords.php:372
  +#: ../plugin/Keywords.php:376
   msgid "You are not able to add keywords."
   msgstr "키워드를 추가할 수 없습니다."
   
  -#: ../plugin/Keywords.php:386
  +#: ../plugin/Keywords.php:390
   #, c-format
   msgid "%s is not found."
   msgstr "%s을(를) 찾을 수 없습니다"
   
  -#: ../plugin/Keywords.php:502
  +#: ../plugin/Keywords.php:506
   msgid "Common words are updated"
   msgstr "일반 단어가 갱신됨"
   
  -#: ../plugin/Keywords.php:549
  +#: ../plugin/Keywords.php:553
   #, c-format
   msgid "Keywords for %s are updated"
   msgstr "%s에 대한 키워드가 갱신됨"
   
  -#: ../plugin/Keywords.php:575
  +#: ../plugin/Keywords.php:579
   msgid "Keywords are updated"
   msgstr "키워드가 갱신되었습니다"
   
  -#: ../plugin/Keywords.php:577
  +#: ../plugin/Keywords.php:581
   msgid "There are no changes found"
   msgstr "변화가 없습니다"
   
  -#: ../plugin/Keywords.php:590
  +#: ../plugin/Keywords.php:594
   msgid "Update with these Keywords"
   msgstr "키워드 갱신하기"
   
  -#: ../plugin/Keywords.php:610 ../plugin/Keywords.php:614
  +#: ../plugin/Keywords.php:614 ../plugin/Keywords.php:618
   msgid "alphabetically"
  -msgstr "알파벳순"
  +msgstr "알파벳"
   
  -#: ../plugin/Keywords.php:611
  +#: ../plugin/Keywords.php:615
   msgid "by frequency"
   msgstr "빈도수"
   
  -#: ../plugin/Keywords.php:613
  +#: ../plugin/Keywords.php:617
   msgid "by size"
   msgstr "크기"
   
  -#: ../plugin/Keywords.php:619
  +#: ../plugin/Keywords.php:623
   #, c-format
   msgid "Keywords list %s (or %s)"
   msgstr "%s순 키워드 목록 (혹은 %s순)"
   
  -#: ../plugin/Keywords.php:624
  +#: ../plugin/Keywords.php:628
   #, c-format
   msgid "Select keywords for %s"
   msgstr "%s에 대해 키워드를 고르세요"
  @@ -957,7 +957,7 @@
   msgid "Save Changes"
   msgstr "변경 저장"
   
  -#: ../plugin/processor/monimarkup.php:490 ../wiki.php:3841
  +#: ../plugin/processor/monimarkup.php:502 ../wiki.php:3846
   msgid "edit"
   msgstr "편집"
   
  @@ -1185,7 +1185,7 @@
   msgid "Select a tarball file to restore"
   msgstr "Restore하기 위한 tarball 파일을 고르세요"
   
  -#: ../plugin/revert.php:23 ../wiki.php:5341
  +#: ../plugin/revert.php:23 ../wiki.php:5350
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr "%s의 옛날 버전"
  @@ -1452,43 +1452,43 @@
   msgid "Invalid use of ticket"
   msgstr ""
   
  -#: ../plugin/Tour.php:57
  +#: ../plugin/Tour.php:81
   msgid "BackLinks"
   msgstr "역링크"
   
  -#: ../plugin/Tour.php:61
  +#: ../plugin/Tour.php:85
   msgid "Keywords"
   msgstr "키워드"
   
  -#: ../plugin/Tour.php:70
  +#: ../plugin/Tour.php:94
   #, c-format
   msgid " from %s"
   msgstr " %s에 대한"
   
  -#: ../plugin/Tour.php:73
  +#: ../plugin/Tour.php:97
   #, c-format
   msgid "%s Tour %s"
   msgstr "%2$s %1$s 여행"
   
  -#: ../plugin/Tour.php:121
  +#: ../plugin/Tour.php:156
   msgid "links"
   msgstr "연결"
   
  -#: ../plugin/Tour.php:123
  +#: ../plugin/Tour.php:158
   msgid "deeper"
   msgstr "깊게"
   
  -#: ../plugin/Tour.php:124
  +#: ../plugin/Tour.php:159
   #, c-format
   msgid "More %s or more %s"
   msgstr "더 많은 %s 혹은 %s"
   
  -#: ../plugin/Tour.php:139
  +#: ../plugin/Tour.php:174
   #, c-format
   msgid "Total %d related keywords"
   msgstr "%d 개의 연관된 키워드"
   
  -#: ../plugin/Tour.php:142
  +#: ../plugin/Tour.php:177
   #, c-format
   msgid "Total %d related pages"
   msgstr "%d 개의 연관된 페이지"
  @@ -1524,7 +1524,7 @@
   msgid "TwinPages of %s"
   msgstr "%s의 쌍둥이 페이지"
   
  -#: ../plugin/TwinPages.php:19 ../wiki.php:5325
  +#: ../plugin/TwinPages.php:19 ../wiki.php:5334
   msgid "See [TwinPages]: "
   msgstr ""
   
  @@ -1643,7 +1643,7 @@
   #: ../plugin/userform.php:94
   #, c-format
   msgid "\"%s\" does not exists on this wiki !"
  -msgstr "\"%s\"은 이 위에에 없습니다 !"
  +msgstr "\"%s\"은 이 위키에 없습니다 !"
   
   #: ../plugin/userform.php:96
   msgid "Make new ID on this wiki"
  @@ -1734,8 +1734,8 @@
   msgid "You are not allowed to register on this wiki"
   msgstr "위키 등록이 허락되지 않았습니다"
   
  -#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5279
  -#: ../wiki.php:5290
  +#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5288
  +#: ../wiki.php:5299
   msgid "Please contact WikiMasters"
   msgstr "위키관리자에게 문의하세요"
   
  @@ -1892,118 +1892,118 @@
   msgid "File '%s' does not exist."
   msgstr "파일 '%s'이(가) 없습니다"
   
  -#: ../wiki.php:2919 ../wiki.php:2930 ../wiki.php:5519
  +#: ../wiki.php:2919 ../wiki.php:2930 ../wiki.php:5528
   msgid "Invalid ajax action."
   msgstr "잘못된 ajax 액션."
   
  -#: ../wiki.php:3422
  +#: ../wiki.php:3427
   msgid "Tags:"
   msgstr "태그:"
   
  -#: ../wiki.php:3450
  +#: ../wiki.php:3455
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:3450
  +#: ../wiki.php:3455
   #, c-format
   msgid "TwinPages"
   msgstr "TwinPages"
   
  -#: ../wiki.php:3455
  +#: ../wiki.php:3460
   msgid "See [TwinPages]:"
   msgstr ""
   
  -#: ../wiki.php:4021
  +#: ../wiki.php:4026
   msgid "Sister Sites Index"
   msgstr ""
   
  -#: ../wiki.php:4449 ../locale/dummy.php:6
  +#: ../wiki.php:4454 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "고치기"
   
  -#: ../wiki.php:4451
  +#: ../wiki.php:4456
   msgid "NotEditable"
   msgstr "고칠수 없음"
   
  -#: ../wiki.php:4455 ../locale/dummy.php:6
  +#: ../wiki.php:4460 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "보기"
   
  -#: ../wiki.php:4456 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4461 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "찾기"
   
  -#: ../wiki.php:4859
  +#: ../wiki.php:4868
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5278
  +#: ../wiki.php:5287
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5289
  +#: ../wiki.php:5298
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:5327 ../wiki.php:5336 ../wikilib.php:1370
  +#: ../wiki.php:5336 ../wiki.php:5345 ../wikilib.php:1370
   msgid "Create this page"
   msgstr "페이지 만들기"
   
  -#: ../wiki.php:5338
  +#: ../wiki.php:5347
   #, c-format
   msgid "%s has saved revisions"
   msgstr "%s이(가) 저장된 옛버전이 있습니다"
   
  -#: ../wiki.php:5339 ../wiki.php:5346
  +#: ../wiki.php:5348 ../wiki.php:5355
   #, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr "%s 혹은 %s를 눌러 전체 찾기를 할 수 있습니다.\n"
   
  -#: ../wiki.php:5344
  +#: ../wiki.php:5353
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr "%s 페이지를 이곳 위키에서 찾을 수 없습니다"
   
  -#: ../wiki.php:5351
  +#: ../wiki.php:5360
   msgid "Please try to search with another word"
   msgstr "다른 단어로 찾아보세요."
   
  -#: ../wiki.php:5363
  +#: ../wiki.php:5372
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr ""
   "%s 아이콘을 누르거나 아래의 탬플리트 목록을 이용해 새 페이지를 만드세요:\n"
   
  -#: ../wiki.php:5366
  +#: ../wiki.php:5375
   msgid "You have no templates"
   msgstr "템플리트가 없습니다"
   
  -#: ../wiki.php:5368
  +#: ../wiki.php:5377
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr "탬플리트를 만드시려면 '%s' 형식의 이름을 가지는 페이지를 만드세요.\n"
   
  -#: ../wiki.php:5379
  +#: ../wiki.php:5388
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr "\"%s\"페이지로 부터 리다리렉트됨"
   
  -#: ../wiki.php:5521
  +#: ../wiki.php:5530
   msgid "Invalid macro action."
   msgstr "잘못된 마크로 액션."
   
  -#: ../wiki.php:5531
  +#: ../wiki.php:5540
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "'%s'은(는) 허락되지 않았습니다"
   
  -#: ../wiki.php:5551
  +#: ../wiki.php:5560
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "\"%s\"을(를) 실패했습니다 !"
   
  -#: ../wiki.php:5554
  +#: ../wiki.php:5563
   msgid "Please enter the valid password"
   msgstr "정확한 비밀번호를 넣어주세요"
   
  @@ -2243,7 +2243,7 @@
   #: ../wikilib.php:1546
   #, c-format
   msgid "Merge cancelled on %s."
  -msgstr "%에 대해 병합이 취소되었습니다."
  +msgstr "%s에 대해 병합이 취소되었습니다."
   
   #: ../wikilib.php:1547
   msgid "NEW"
  @@ -2256,7 +2256,7 @@
   #: ../wikilib.php:1553
   #, c-format
   msgid "Get merge conflicts for %s"
  -msgstr ""
  +msgstr "%s에 대해 병합을 합니다"
   
   #: ../wikilib.php:1554
   msgid "Please resolve conflicts manually."
  @@ -2298,7 +2298,7 @@
   
   #: ../wikilib.php:1757
   msgid "Send notification mails to all subscribers"
  -msgstr ""
  +msgstr "모든 구독자에게 메일을 보냅니다"
   
   #: ../wikilib.php:1762
   msgid "Mails are sent successfully"
  
  
  
  1.25      +64 -64    moniwiki/locale/po/moniwiki.pot
  
  Index: moniwiki.pot
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/moniwiki.pot,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- moniwiki.pot	2 Jan 2009 05:51:21 -0000	1.24
  +++ moniwiki.pot	9 Jan 2009 10:16:09 -0000	1.25
  @@ -7,7 +7,7 @@
   msgstr ""
   "Project-Id-Version: PACKAGE VERSION\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2009-01-02 14:50+0900\n"
  +"POT-Creation-Date: 2009-01-09 01:09+0900\n"
   "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
   "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
   "Language-Team: LANGUAGE <LL@li.org>\n"
  @@ -390,7 +390,7 @@
   msgid "You are not allowed to add a comment."
   msgstr ""
   
  -#: ../plugin/Comment.php:129 ../plugin/Keywords.php:373
  +#: ../plugin/Comment.php:129 ../plugin/Keywords.php:377
   msgid "Page does not exists"
   msgstr ""
   
  @@ -534,7 +534,7 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4453
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4458
   msgid "Refresh"
   msgstr ""
   
  @@ -548,7 +548,7 @@
   msgid "You can also click %s to search title.\n"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5339 ../wiki.php:5346
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5348 ../wiki.php:5355
   #: ../wikilib.php:1390
   msgid "here"
   msgstr ""
  @@ -696,86 +696,86 @@
   msgid "Edit new molecule"
   msgstr ""
   
  -#: ../plugin/Keywords.php:331
  +#: ../plugin/Keywords.php:332
   msgid "hits"
   msgstr ""
   
  -#: ../plugin/Keywords.php:339
  +#: ../plugin/Keywords.php:340
   msgid "add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:342
  +#: ../plugin/Keywords.php:343
   msgid "Update keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:344
  +#: ../plugin/Keywords.php:345
   msgid "Add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:345
  +#: ../plugin/Keywords.php:346
   msgid "Add as common words"
   msgstr ""
   
  -#: ../plugin/Keywords.php:346
  +#: ../plugin/Keywords.php:347
   msgid "Unselect all"
   msgstr ""
   
  -#: ../plugin/Keywords.php:347
  +#: ../plugin/Keywords.php:348
   msgid "Suggest new Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:356
  +#: ../plugin/Keywords.php:357
   msgid "select language"
   msgstr ""
   
  -#: ../plugin/Keywords.php:372
  +#: ../plugin/Keywords.php:376
   msgid "You are not able to add keywords."
   msgstr ""
   
  -#: ../plugin/Keywords.php:386
  +#: ../plugin/Keywords.php:390
   #, c-format
   msgid "%s is not found."
   msgstr ""
   
  -#: ../plugin/Keywords.php:502
  +#: ../plugin/Keywords.php:506
   msgid "Common words are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:549
  +#: ../plugin/Keywords.php:553
   #, c-format
   msgid "Keywords for %s are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:575
  +#: ../plugin/Keywords.php:579
   msgid "Keywords are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:577
  +#: ../plugin/Keywords.php:581
   msgid "There are no changes found"
   msgstr ""
   
  -#: ../plugin/Keywords.php:590
  +#: ../plugin/Keywords.php:594
   msgid "Update with these Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:610 ../plugin/Keywords.php:614
  +#: ../plugin/Keywords.php:614 ../plugin/Keywords.php:618
   msgid "alphabetically"
   msgstr ""
   
  -#: ../plugin/Keywords.php:611
  +#: ../plugin/Keywords.php:615
   msgid "by frequency"
   msgstr ""
   
  -#: ../plugin/Keywords.php:613
  +#: ../plugin/Keywords.php:617
   msgid "by size"
   msgstr ""
   
  -#: ../plugin/Keywords.php:619
  +#: ../plugin/Keywords.php:623
   #, c-format
   msgid "Keywords list %s (or %s)"
   msgstr ""
   
  -#: ../plugin/Keywords.php:624
  +#: ../plugin/Keywords.php:628
   #, c-format
   msgid "Select keywords for %s"
   msgstr ""
  @@ -959,7 +959,7 @@
   msgid "Save Changes"
   msgstr ""
   
  -#: ../plugin/processor/monimarkup.php:490 ../wiki.php:3841
  +#: ../plugin/processor/monimarkup.php:502 ../wiki.php:3846
   msgid "edit"
   msgstr ""
   
  @@ -1186,7 +1186,7 @@
   msgid "Select a tarball file to restore"
   msgstr ""
   
  -#: ../plugin/revert.php:23 ../wiki.php:5341
  +#: ../plugin/revert.php:23 ../wiki.php:5350
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr ""
  @@ -1449,43 +1449,43 @@
   msgid "Invalid use of ticket"
   msgstr ""
   
  -#: ../plugin/Tour.php:57
  +#: ../plugin/Tour.php:81
   msgid "BackLinks"
   msgstr ""
   
  -#: ../plugin/Tour.php:61
  +#: ../plugin/Tour.php:85
   msgid "Keywords"
   msgstr ""
   
  -#: ../plugin/Tour.php:70
  +#: ../plugin/Tour.php:94
   #, c-format
   msgid " from %s"
   msgstr ""
   
  -#: ../plugin/Tour.php:73
  +#: ../plugin/Tour.php:97
   #, c-format
   msgid "%s Tour %s"
   msgstr ""
   
  -#: ../plugin/Tour.php:121
  +#: ../plugin/Tour.php:156
   msgid "links"
   msgstr ""
   
  -#: ../plugin/Tour.php:123
  +#: ../plugin/Tour.php:158
   msgid "deeper"
   msgstr ""
   
  -#: ../plugin/Tour.php:124
  +#: ../plugin/Tour.php:159
   #, c-format
   msgid "More %s or more %s"
   msgstr ""
   
  -#: ../plugin/Tour.php:139
  +#: ../plugin/Tour.php:174
   #, c-format
   msgid "Total %d related keywords"
   msgstr ""
   
  -#: ../plugin/Tour.php:142
  +#: ../plugin/Tour.php:177
   #, c-format
   msgid "Total %d related pages"
   msgstr ""
  @@ -1521,7 +1521,7 @@
   msgid "TwinPages of %s"
   msgstr ""
   
  -#: ../plugin/TwinPages.php:19 ../wiki.php:5325
  +#: ../plugin/TwinPages.php:19 ../wiki.php:5334
   msgid "See [TwinPages]: "
   msgstr ""
   
  @@ -1731,8 +1731,8 @@
   msgid "You are not allowed to register on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5279
  -#: ../wiki.php:5290
  +#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5288
  +#: ../wiki.php:5299
   msgid "Please contact WikiMasters"
   msgstr ""
   
  @@ -1889,117 +1889,117 @@
   msgid "File '%s' does not exist."
   msgstr ""
   
  -#: ../wiki.php:2919 ../wiki.php:2930 ../wiki.php:5519
  +#: ../wiki.php:2919 ../wiki.php:2930 ../wiki.php:5528
   msgid "Invalid ajax action."
   msgstr ""
   
  -#: ../wiki.php:3422
  +#: ../wiki.php:3427
   msgid "Tags:"
   msgstr ""
   
  -#: ../wiki.php:3450
  +#: ../wiki.php:3455
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:3450
  +#: ../wiki.php:3455
   #, c-format
   msgid "TwinPages"
   msgstr ""
   
  -#: ../wiki.php:3455
  +#: ../wiki.php:3460
   msgid "See [TwinPages]:"
   msgstr ""
   
  -#: ../wiki.php:4021
  +#: ../wiki.php:4026
   msgid "Sister Sites Index"
   msgstr ""
   
  -#: ../wiki.php:4449 ../locale/dummy.php:6
  +#: ../wiki.php:4454 ../locale/dummy.php:6
   msgid "EditText"
   msgstr ""
   
  -#: ../wiki.php:4451
  +#: ../wiki.php:4456
   msgid "NotEditable"
   msgstr ""
   
  -#: ../wiki.php:4455 ../locale/dummy.php:6
  +#: ../wiki.php:4460 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:4456 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4461 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr ""
   
  -#: ../wiki.php:4859
  +#: ../wiki.php:4868
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5278
  +#: ../wiki.php:5287
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5289
  +#: ../wiki.php:5298
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:5327 ../wiki.php:5336 ../wikilib.php:1370
  +#: ../wiki.php:5336 ../wiki.php:5345 ../wikilib.php:1370
   msgid "Create this page"
   msgstr ""
   
  -#: ../wiki.php:5338
  +#: ../wiki.php:5347
   #, c-format
   msgid "%s has saved revisions"
   msgstr ""
   
  -#: ../wiki.php:5339 ../wiki.php:5346
  +#: ../wiki.php:5348 ../wiki.php:5355
   #, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr ""
   
  -#: ../wiki.php:5344
  +#: ../wiki.php:5353
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr ""
   
  -#: ../wiki.php:5351
  +#: ../wiki.php:5360
   msgid "Please try to search with another word"
   msgstr ""
   
  -#: ../wiki.php:5363
  +#: ../wiki.php:5372
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr ""
   
  -#: ../wiki.php:5366
  +#: ../wiki.php:5375
   msgid "You have no templates"
   msgstr ""
   
  -#: ../wiki.php:5368
  +#: ../wiki.php:5377
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
   
  -#: ../wiki.php:5379
  +#: ../wiki.php:5388
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
  -#: ../wiki.php:5521
  +#: ../wiki.php:5530
   msgid "Invalid macro action."
   msgstr ""
   
  -#: ../wiki.php:5531
  +#: ../wiki.php:5540
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr ""
   
  -#: ../wiki.php:5551
  +#: ../wiki.php:5560
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:5554
  +#: ../wiki.php:5563
   msgid "Please enter the valid password"
   msgstr ""
   
  
  
  


wkpark      2009/01/09 21:49:09

  Modified:    lib      version.Git.php
  Log:
  do not return rlog if it has no history infos
  
  Revision  Changes    Path
  1.4       +5 -4      moniwiki/lib/version.Git.php
  
  Index: version.Git.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/version.Git.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- version.Git.php	23 Apr 2008 14:14:06 -0000	1.3
  +++ version.Git.php	9 Jan 2009 12:49:09 -0000	1.4
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Git versioning plugin for the MoniWiki
   //
  -// $Id: version.Git.php,v 1.3 2008/04/23 14:14:06 wkpark Exp $
  +// $Id: version.Git.php,v 1.4 2009/01/09 12:49:09 wkpark Exp $
   // WARNING: experimental
   //
   
  @@ -109,15 +109,16 @@
       $fp= popen("git-log $rlog_format $opt $rev ".$filename.$this->NULL,"r");
       chdir($this->cwd);
       $out='';
  -    if ($fp) {
  +    if (is_resource($fp)) {
         while (!feof($fp)) {
           $line=fgets($fp,1024);
           $out .= $line;
         }
         pclose($fp);
  +      if ($out)
  +        return $out."\n$sep2\n";
       }
  -
  -    return $out."\n$sep2\n";
  +    return '';
     }
   
     function diff($pagename,$rev='',$rev2='') {
  
  
  


wkpark      2009/01/10 01:54:27

  Modified:    plugin   pagelist.php
  Log:
  show upper icon with the 'subdir' option
  
  Revision  Changes    Path
  1.5       +9 -1      moniwiki/plugin/pagelist.php
  
  Index: pagelist.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/pagelist.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- pagelist.php	28 Dec 2008 14:33:43 -0000	1.4
  +++ pagelist.php	9 Jan 2009 16:54:27 -0000	1.5
  @@ -5,7 +5,7 @@
   //
   // Usage: [[PageList(a needle for list,dir,info,date]]
   //
  -// $Id: pagelist.php,v 1.4 2008/12/28 14:33:43 wkpark Exp $
  +// $Id: pagelist.php,v 1.5 2009/01/09 16:54:27 wkpark Exp $
   
   function macro_PageList($formatter,$arg="",$options=array()) {
     global $DBInfo;
  @@ -26,7 +26,10 @@
         $options['metawiki']=1;
     }
   
  +  $upper = '';
     if ($options['subdir']) {
  +    if (($p = strrpos($formatter->page->name,'/')) !== false)
  +      $upper = substr($formatter->page->name,0,$p);
       $needle=_preg_search_escape($formatter->page->name);
       $needle='^'.$needle.'\/';
     } else if (!empty($options['rawre']))
  @@ -95,8 +98,13 @@
           $iconset='tango';
           $icon_dir=$DBInfo->imgs_dir.'/plugin/UploadedFiles/'.$iconset;
           $dicon="<img src='$icon_dir/folder-16.png' width='16px'/>";
  +        $uicon="<img src='$icon_dir/up-16.png' width='16px'/>";
           $ficon="<img src='$icon_dir/text-16.png' width='16px'/>";
           $now=time();
  +        if ($upper)
  +            $out.= '<tr><td>'.$uicon.'</td><td>'.
  +                $formatter->link_tag(_rawurlencode($upper),"",'..').'</td>';
  +            
           foreach ($dirs as $pg=>$name) {
               $out.= '<tr><td>'.$dicon.'</td><td>'.
                   $formatter->link_tag(_rawurlencode($pg),"",
  
  
  


wkpark      2009/01/10 01:55:46

  Modified:    .        wiki.php
  Log:
  search upper dir with $use_subindex option.
  
  Revision  Changes    Path
  1.454     +7 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.453
  retrieving revision 1.454
  diff -u -r1.453 -r1.454
  --- wiki.php	8 Jan 2009 17:19:43 -0000	1.453
  +++ wiki.php	9 Jan 2009 16:55:46 -0000	1.454
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.453 2009/01/08 17:19:43 wkpark Exp $
  +// $Id: wiki.php,v 1.454 2009/01/09 16:55:46 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.453 $',1,-1);
  +$_revision = substr('$Revision: 1.454 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -4285,11 +4285,14 @@
         if ($DBInfo->use_subindex and !$options['action']) {
           $scache=new Cache_text('subpages');
           if (!($subs=$scache->exists($this->page->name))) {
  -          $rule=_preg_search_escape($this->page->name);
  +          if (($p = strrpos($this->page->name,'/')) !== false)
  +            $rule=_preg_search_escape(substr($this->page->name,0,$p));
  +          else
  +            $rule=_preg_search_escape($this->page->name);
             $subs=$DBInfo->getLikePages('^'.$rule.'\/',1);
             if ($subs) $scache->update($this->page->name,1);
           }
  -        if ($subs) {
  +        if (!empty($subs)) {
             $subindices='';
             if (!$DBInfo->use_ajax) {
               $subindices= '<div>'.$this->macro_repl('PageList','',array('subdir'=>1)).'</div>';
  
  
  


wkpark      2009/01/10 02:08:20

  Added:       imgs/plugin/UploadedFiles/tango up-16.png
  Log:
  add upper icon
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/plugin/UploadedFiles/tango/up-16.png
  
  	<<Binary file>>
  
  


wkpark      2009/01/10 02:25:34

  Modified:    local    subindex.js
  Log:
  check mootools correctly
  
  Revision  Changes    Path
  1.5       +6 -1      moniwiki/local/subindex.js
  
  Index: subindex.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/subindex.js,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- subindex.js	8 Jan 2008 15:28:58 -0000	1.4
  +++ subindex.js	9 Jan 2009 17:25:33 -0000	1.5
  @@ -30,6 +30,11 @@
                   } else {
   	            new Effect.SlideUp(sub, { duration: 0.3, afterFinish: function() {Element.hide(sub);} });
                   }
  +            } else if (typeof Fx.Slide == 'undefined') { // get sectpages for the first time.
  +                if (sub.style.display == 'none')
  +                    sub.style.display = 'block';
  +                else
  +                    sub.style.display = 'none';
               }
           } else { // get subpages for the first time.
               var sub=document.createElement('div');
  @@ -45,7 +50,7 @@
               if (typeof Effect != 'undefined') { // prototype.js
                   sub.setAttribute('style','display:none');
   	        new Effect.SlideDown(sub, { duration: 0.4,afterFinish: function() {Element.show(sub);} });
  -            } else { // mootools
  +            } else if (typeof Fx.Slide != 'undefined') { // get sectpages for the first time.
                   var mySlide = new Fx.Slide(sub);
                   //mySlide.wrapper.setStyle('height',0);
   
  
  
  


wkpark      2009/01/14 01:49:30

  Added:       imgs/misc diffbg.png
  Log:
  add a missing png
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/misc/diffbg.png
  
  	<<Binary file>>
  
  


wkpark      2009/01/14 06:22:54

  Modified:    local    subindex.js
  Log:
  fixed prototype support
  
  Revision  Changes    Path
  1.6       +4 -1      moniwiki/local/subindex.js
  
  Index: subindex.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/subindex.js,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- subindex.js	9 Jan 2009 17:25:33 -0000	1.5
  +++ subindex.js	13 Jan 2009 21:22:54 -0000	1.6
  @@ -22,7 +22,10 @@
                   else
                       toggle=false;
               } else if (mode) {
  -                toggle=true;
  +                if (sub.style.display == 'none')
  +                    toggle = true;
  +                else
  +                    toggle = false;
               }
               if (typeof Effect != 'undefined') { // prototype.js
                   if (toggle) {
  
  
  


wkpark      2009/01/14 06:26:07

  Modified:    plugin   FullSearch.php
  Log:
  do not delete dashes in the needle
  
  Revision  Changes    Path
  1.26      +2 -2      moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- FullSearch.php	12 Dec 2008 09:46:28 -0000	1.25
  +++ FullSearch.php	13 Jan 2009 21:26:06 -0000	1.26
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
   //
  -// $Id: FullSearch.php,v 1.25 2008/12/12 09:46:28 wkpark Exp $
  +// $Id: FullSearch.php,v 1.26 2009/01/13 21:26:06 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
  @@ -110,7 +110,7 @@
       foreach($terms as $term) {
         if (trim($term)=='') continue;
         if (preg_match('/^([-+]?)("?)([^\\2]+?)\\2$/',$term,$match)) {
  -        $word=str_replace(array('-','\\','.','*'),'',$match[3]);
  +        $word=str_replace(array('\\','.','*'),'',$match[3]);
           $len=strlen($word);
   
           if (!$match[1] and $match[2] != '"') {
  
  
  


wkpark      2009/01/14 13:56:52

  Modified:    .        wiki.php
  Log:
  $login_strict option added (suggested by smcho)
  bugfix with the new namespaces [20:22] etc. (reported by Kim Daehyeon)
  $use_namespace option added
  
  Revision  Changes    Path
  1.455     +31 -8     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.454
  retrieving revision 1.455
  diff -u -r1.454 -r1.455
  --- wiki.php	9 Jan 2009 16:55:46 -0000	1.454
  +++ wiki.php	14 Jan 2009 04:56:52 -0000	1.455
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.454 2009/01/09 16:55:46 wkpark Exp $
  +// $Id: wiki.php,v 1.455 2009/01/14 04:56:52 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.454 $',1,-1);
  +$_revision = substr('$Revision: 1.455 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -674,6 +674,7 @@
       $this->use_purple=0;
       $this->version_class='RCS';
       $this->title_rule='((?<=[a-z0-9]|[B-Z]{2})([A-Z][a-z]))';
  +    $this->login_strict=1;
   
       # set user-specified configuration
       if ($config) {
  @@ -1795,6 +1796,7 @@
       $this->use_rating=$DBInfo->use_rating;
       $this->use_etable=$DBInfo->use_etable;
       $this->use_metadata=$DBInfo->use_metadata;
  +    $this->use_namespace=$DBInfo->use_namespace;
       $this->udb=&$DBInfo->udb;
       $this->user=&$DBInfo->user;
       $this->check_openid_url=$DBInfo->check_openid_url;
  @@ -2216,7 +2218,11 @@
       if (is_array($url)) $url=$url[1];
       #if ($url[0]=='<') { print $url;return $url;}
       $url=str_replace('\"','"',$url); // XXX
  +    $bra = '';
  +    $ket = '';
       if ($url{0}=='[') {
  +      $bra='[';
  +      $ket=']';
         $url=substr($url,1,-1);
         $force=1;
       }
  @@ -2300,8 +2306,14 @@
             preg_replace('/('.$this->url_mapping_rule.')/ie',"\$this->url_mappings['\\1']",$url);
         }
   
  -      if (preg_match("/^(:|w|[A-Z])/",$url)) # InterWiki or wiki:
  +      if (preg_match("/^(:|w|[A-Z])/",$url))
           return $this->interwiki_repl($url,'',$attr,$external_icon);
  +      else if (!preg_match('/^('.$this->urls.')/',$url)) {
  +        if ($this->use_namespace)
  +          return $this->interwiki_repl($url,'',$attr,$external_icon);
  +        else
  +          return $bra.$url.$ket;
  +      }
   
         if (preg_match("/^mailto:/",$url)) {
           $email=substr($url,7);
  @@ -2365,14 +2377,15 @@
         } # have no space
         $link = str_replace(array('<','>'),array('&#x3c;','&#x3e;'),$url);
         if (preg_match("/^(http|https|ftp)/",$url)) {
  -        if (preg_match("/(^.*\.(png|gif|jpeg|jpg))(([\?&]([a-z]+=[0-9a-z]+))*)$/i",$url,$match)) {
  +        if (preg_match("/(^.*\.(png|gif|jpeg|jpg))(\?.*?)$/i",$url,$match)) {
  +          $url=preg_replace('/&amp;/','&',$url);
             $url=$match[1];
             $attrs=explode('&',substr($match[3],1));
             foreach ($attrs as $arg) {
               $name=strtok($arg,'=');
               $val=strtok(' ');
  -            if ($name and $val) $attr.=$name.'="'.$val.'" ';
  -            if ($name == 'align') $attr.='class="img'.ucfirst($val).'" ';
  +            if ($name and $val) $attr.=' '.$name.'="'.urldecode($val).'"';
  +            if ($name == 'align') $attr.=' class="img'.ucfirst($val).'"';
             }
             return "<img alt='$link' $attr src='$url' />";
           }
  @@ -4210,8 +4223,10 @@
         do_goto($this,$options);
         return;
       }
  +    $header = !empty($header) ? $header:(!empty($options['header']) ? $options['header']:null) ;
  +    #print_r($header);
       #$this->header("Expires: Tue, 01 Jan 2002 00:00:00 GMT");
  -    if ($header) {
  +    if (!empty($header)) {
         if (is_array($header))
           foreach ($header as $head) {
             $this->header($head);
  @@ -5110,11 +5125,19 @@
       $options['trail']=trim($user->trail) ? $user->trail:'';
   
     if ($user->id != 'Anonymous') {
  -    $udb->checkUser($user); # is it valid user ?
  +    $test = $udb->checkUser($user); # is it valid user ?
       if ($user->id != 'Anonymous')
         $user=$udb->getUser($user->id); // read user info
       else
         $user->setID('Anonymous');
  +    if ($test == 1) {
  +      if ($DBInfo->login_strict > 0 ) {
  +        # auto logout
  +        $options['header'] = $user->unsetCookie();
  +      } else if ($DBInfo->login_strict < 0 ) {
  +        $options['msg'] = _("Someone logged in at another place !");
  +      }
  +    }
     }
     $options['id']=$user->id;
     $DBInfo->user=$user;
  
  
  


wkpark      2009/01/14 14:02:51

  Modified:    .        wikilib.php
  Log:
  $login_strict option.
  
  Revision  Changes    Path
  1.266     +4 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.265
  retrieving revision 1.266
  diff -u -r1.265 -r1.266
  --- wikilib.php	8 Jan 2009 15:38:11 -0000	1.265
  +++ wikilib.php	14 Jan 2009 05:02:51 -0000	1.266
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.265 2009/01/08 15:38:11 wkpark Exp $
  +// $Id: wikilib.php,v 1.266 2009/01/14 05:02:51 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -344,6 +344,7 @@
     var $users=array();
     function UserDB($WikiDB) {
       $this->user_dir=$WikiDB->data_dir.'/user';
  +    $this->strict = $WikiDB->login_strict;
     }
   
     function _id_to_key($id) {
  @@ -432,7 +433,8 @@
     function checkUser(&$user) {
       $tmp=$this->getUser($user->id);
       if ($tmp->info['ticket'] != $user->ticket) {
  -      $user->id='Anonymous';
  +      if ($this->strict > 0)
  +        $user->id='Anonymous';
         return 1;
       }
       $user=$tmp;
  
  
  


wkpark      2009/01/16 19:25:54

  Modified:    .        wiki.php
  Log:
  check $use_wikiwyg mode in the sectonEdit().
  
  Revision  Changes    Path
  1.456     +8 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.455
  retrieving revision 1.456
  diff -u -r1.455 -r1.456
  --- wiki.php	14 Jan 2009 04:56:52 -0000	1.455
  +++ wiki.php	16 Jan 2009 10:25:54 -0000	1.456
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.455 2009/01/14 04:56:52 wkpark Exp $
  +// $Id: wiki.php,v 1.456 2009/01/16 10:25:54 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.455 $',1,-1);
  +$_revision = substr('$Revision: 1.456 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -3848,10 +3848,15 @@
           $in_p='';
           if ($this->section_edit && !$this->preview) {
             $act='edit';
  +
  +          $wikiwyg_mode='';
  +          if ($DBInfo->use_wikiwyg ==1) {
  +            $wikiwyg_mode=',true';
  +          }
             if ($DBInfo->sectionedit_attr) {
               if (!is_string($DBInfo->sectionedit_attr))
                 $sect_attr=' onclick="javascript:sectionEdit(null,this,'.
  -                $this->sect_num.');return false;"';
  +                $this->sect_num.$wikiwyg_mode.');return false;"';
               else
                 $sect_attr=$DBInfo->sectionedit_attr;
             }
  
  
  


wkpark      2009/01/16 19:25:54

  Modified:    local    moniwyg.js
  Log:
  check $use_wikiwyg mode in the sectonEdit().
  
  Revision  Changes    Path
  1.64      +10 -6     moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.63
  retrieving revision 1.64
  diff -u -r1.63 -r1.64
  --- moniwyg.js	8 Jan 2009 08:11:24 -0000	1.63
  +++ moniwyg.js	16 Jan 2009 10:25:54 -0000	1.64
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.63 2009/01/08 08:11:24 wkpark Exp $
  +// $Id: moniwyg.js,v 1.64 2009/01/16 10:25:54 wkpark Exp $
   //
   //_url_prefix="/wiki";
   //
  @@ -614,7 +614,7 @@
   
   
   
  -Wikiwyg.prototype.editMode = function(form,text) {
  +Wikiwyg.prototype.editMode = function(form,text,mode) {
       var self = this;
       var dom = document.createElement('div');
   
  @@ -625,7 +625,11 @@
       var wikitext = text == null ? mytext.value:text;
       this.mylocation = form.getAttribute('action');
   
  -    this.current_mode = this.first_mode;
  +    if (typeof mode == 'undefined')
  +        this.current_mode = this.first_mode;
  +    else
  +        this.current_mode = this.modeByName('Wikiwyg.Wikitext');
  +
       if (this.current_mode.classname.match(/(Wysiwyg|HTML|Preview)/)) {
           var myWikiwyg = new Wikiwyg.Wikitext();
   
  @@ -2749,7 +2753,7 @@
   
    wikiwygs = [];
   
  -function sectionEdit(ev,obj,sect) {
  +function sectionEdit(ev,obj,sect,mode) {
       var area;
       var text=null;
       var form=null;
  @@ -2798,7 +2802,7 @@
           if (mycheck && mycheck.match(/WikiWygArea/)) {
               var tmp = mycheck.split(/_/); // get already loaded WikiWygArea XXX hack
   
  -            wikiwygs[tmp[1]].editMode(form,text);
  +            wikiwygs[tmp[1]].editMode(form,text,mode);
               return;
           }
           break;
  @@ -2830,7 +2834,7 @@
               var myWikiwyg = new Wikiwyg();
               myWikiwyg.createWikiwygArea(area, myConfig, area_id);
               wikiwygs.push(myWikiwyg);
  -            myWikiwyg.editMode(form,text);
  +            myWikiwyg.editMode(form,text,mode);
   
       }
       return;
  
  
  


wkpark      2009/01/16 19:49:56

  Modified:    data     metaparse.py
  Log:
  fixed MediaWiki support.
  fixed IndexError bug by smcho
  
  Revision  Changes    Path
  1.9       +63 -20    moniwiki/data/metaparse.py
  
  Index: metaparse.py
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/data/metaparse.py,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- metaparse.py	25 Nov 2008 03:34:41 -0000	1.8
  +++ metaparse.py	16 Jan 2009 10:49:56 -0000	1.9
  @@ -1,5 +1,5 @@
   #!/usr/bin/python
  -# $Id: metaparse.py,v 1.8 2008/11/25 03:34:41 wkpark Exp $
  +# $Id: metaparse.py,v 1.9 2009/01/16 10:49:56 wkpark Exp $
   # python version metaparse.py by wkpark@kldp.org
   
   import string,os,sys,re,urllib
  @@ -46,7 +46,7 @@
           ("?action=titleindex", NO_CUT_REGEX, DEFAULT_MATCH_REGEX),
         "PediaWiki":
           #("Special:Allpages", '<table (.*)</table>', DEFAULT_MATCH_REGEX),
  -        ("Special:Allpages", '<table (.*)</table>', '/wiki/(.*?)"'),
  +        ("Special:AllPages", '<\!\-\- start content \-\->(.*)<\!\-\- end content \-\->', '"/wiki/([^"]+)"'),
         "foldoc":
           ("http://foldoc.doc.ic.ac.uk/foldoc/contents/all.html",
            NO_CUT_REGEX, r'\?(.*)"'),
  @@ -70,9 +70,9 @@
         "TWiki":
           ("?topic=WebIndex",NO_CUT_REGEX,TWIKI_MATCH_REGEX),
         "PediaIndex":
  -        ("Special:Allpages",
  -         '^<table>(.*)</table>',
  -         '(http://.*/w/wiki.phtml\?title=Special:Allpages&amp;from.*?)"'),
  +        ("Special:AllPages",
  +         '<\!\-\- start content -->(.*)<\!\-\- end content \-\->',
  +         '/w/index.php\?title=(Special:AllPages&amp;from=.*?)"'),
         "GtkDoc":
           ("?", NO_CUT_REGEX, '<dt>\s*([^,]+),\s*<a href="([^"]+)">'),
       };
  @@ -82,18 +82,23 @@
               os.mkdir(cache_dir, 0777)
   	return
   
  -    def _fetch(self,wikiname,type,urls):
  +    def _fetch(self,wikiname,type,urls,findall=False):
  +        class MyURLopener(urllib.FancyURLopener):
  +            version = "App/0.1"
  +
  +        myurllib = MyURLopener()
  +
           catcmd = 'cat %s'
           num=0
           for url in urls:
               sys.stderr.write("Fetching %s\n" % url)
               try:
  -                archive, headers = urllib.urlretrieve(url, None, progress)
  +                archive, headers = myurllib.retrieve(url, None, progress,None)
                   #archive, headers = urllib.urlretrieve(url, None)
   
               except TypeError:           # 1.5.1 does not accept 3rd argument
                   try:
  -                    archive, headers = urllib.urlretrieve(url, None)
  +                    archive, headers = myurllib.retrieve(url, None,None,None)
                   except IOError:
                       sys.stderr.write(" apparently not found\n")
                       continue
  @@ -102,6 +107,20 @@
                   continue
   #        if os.system(catcmd % archive) != 0:
   #            raise "Fetch failed"
  +            # 
  +	    fp = open(archive)
  +            all = fp.readlines()
  +            fp.close()
  +            content = "".join(all);
  +
  +            p = re.compile(self.RULES[type][1],re.M | re.S)
  +
  +            dummy=p.search(content)
  +            if dummy:
  +                cache=open(archive,'w')
  +                cache.write(dummy.group(1))
  +                cache.close()
  +
               if num==0:
                   cache=open(os.path.join(cache_dir,wikiname),'w')
               else:
  @@ -109,14 +128,20 @@
               num=num+1
               for line in os.popen(catcmd % archive).readlines():
                   if self.RULES.has_key(type):
  -                    dummy=re.search(self.RULES[type][2],line)
  -                    if dummy:
  -			if dummy.group(2):
  -                            cache.write(dummy.group(1)+"\t"+dummy.group(2)+"\n")
  -                    	else:
  -                            cache.write(dummy.group(1)+"\n")
  +                    if findall:
  +                        dummy=re.findall(self.RULES[type][2],line)
  +                        if dummy:
  +                            sa = set(dummy)
  +                            cache.write("\n".join(sa) + "\n")
  +                    else:
  +                        dummy=re.search(self.RULES[type][2],line)
  +                        if dummy:
  +                            try:
  +                                cache.write(dummy.group(1)+"\t"+dummy.group(2)+"\n")
  +                    	    except IndexError:
  +                                cache.write(dummy.group(1)+"\n")
                   else:
  -		    cache.write(line)
  +                    cache.write(line)
               cache.close()
   
       def _get_url(self,wikiname,type,url):
  @@ -157,14 +182,30 @@
           urls.append(self._get_url(wikiname,type,url))
           #urls.append("http://www.wikipedia.org/w/wiki.phtml?title=Special:Allpages&from=!")
           #self._fetch(wikiname,type,urls)
  -        self._fetch(wikiname,"PediaIndex",urls)
  -	fp=open("cache/metawiki/WikiPedia")
  +        self._fetch(wikiname,"PediaIndex",urls,True)
  +	fp=open("cache/metawiki/" + wikiname)
           all=fp.readlines()
           fp.close()
           urls=[]
  -        for url in all:
  -          urls.append(string.replace(url,'&amp;','&'))
  -        self._fetch(wikiname,type,urls)
  +        for idx in all:
  +          urls.append(url + string.replace(idx,'&amp;','&'))
  +        self._fetch("PediaIndex","PediaIndex",urls,True)
  +
  +	fp=open("cache/metawiki/PediaIndex")
  +        all=fp.readlines()
  +        fp.close()
  +        urls=[]
  +        for idx in all:
  +          urls.append(url + string.replace(idx,'&amp;','&'))
  +        self._fetch("PediaIndex","PediaIndex",urls,True)
  +
  +	fp=open("cache/metawiki/PediaIndex")
  +        all=fp.readlines()
  +        fp.close()
  +        urls=[]
  +        for idx in all:
  +          urls.append(url + string.replace(idx,'&amp;','&'))
  +        self._fetch(wikiname,type,urls,True)
   
       def _foldoc_rule(self,wikiname,type,url):
           urls=[]
  @@ -369,3 +410,5 @@
       if not fetchonly:
          updateMetaCache(wikis,shared_metadb,db_type)
       sys.stderr.write("\nOK!\n")
  +
  +# vim:et:sts=4:sw=4:
  
  
  


wkpark      2009/01/16 20:53:50

  Modified:    .        wikilib.php
  Log:
  fixed XSS vulnerability.
  
  Revision  Changes    Path
  1.267     +4 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.266
  retrieving revision 1.267
  diff -u -r1.266 -r1.267
  --- wikilib.php	14 Jan 2009 05:02:51 -0000	1.266
  +++ wikilib.php	16 Jan 2009 11:53:50 -0000	1.267
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.266 2009/01/14 05:02:51 wkpark Exp $
  +// $Id: wikilib.php,v 1.267 2009/01/16 11:53:50 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2724,10 +2724,11 @@
     if ($opts['linkto']) $idx=10;
     $out='';
     foreach ($hits as $pagename) {
  +    $pagetext=htmlspecialchars(urldecode($pagename));
       if ($opts['linkto'])
  -      $out.= '<li>' . $formatter->link_to("$opts[linkto]$pagename",$pagename,"tabindex='$idx'")."</li>\n";
  +      $out.= '<li>' . $formatter->link_to("$opts[linkto]$pagename",$pagetext,"tabindex='$idx'")."</li>\n";
       else
  -      $out.= '<li>' . $formatter->link_tag(_rawurlencode($pagename),"",$pagename,"tabindex='$idx'")."</li>\n";
  +      $out.= '<li>' . $formatter->link_tag(_rawurlencode($pagename),"",$pagetext,"tabindex='$idx'")."</li>\n";
       $idx++;
     }
   
  
  
  


wkpark      2009/01/17 01:11:17

  Added:       local/js jquery.js
  Log:
  add the jQuery
  
  Revision  Changes    Path
  1.1                  moniwiki/local/js/jquery.js
  
  Index: jquery.js
  ===================================================================
  /*!
   * jQuery JavaScript Library v1.3
   * http://jquery.com/
   *
   * Copyright (c) 2009 John Resig
   * Dual licensed under the MIT and GPL licenses.
   * http://docs.jquery.com/License
   *
   * Date: 2009-01-13 12:50:31 -0500 (Tue, 13 Jan 2009)
   * Revision: 6104
   */
  (function(){
  
  var 
  	// Will speed up references to window, and allows munging its name.
  	window = this,
  	// Will speed up references to undefined, and allows munging its name.
  	undefined,
  	// Map over jQuery in case of overwrite
  	_jQuery = window.jQuery,
  	// Map over the $ in case of overwrite
  	_$ = window.$,
  
  	jQuery = window.jQuery = window.$ = function( selector, context ) {
  		// The jQuery object is actually just the init constructor 'enhanced'
  		return new jQuery.fn.init( selector, context );
  	},
  
  	// A simple way to check for HTML strings or ID strings
  	// (both of which we optimize for)
  	quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,
  	// Is it a simple selector
  	isSimple = /^.[^:#\[\.,]*$/;
  
  jQuery.fn = jQuery.prototype = {
  	init: function( selector, context ) {
  		// Make sure that a selection was provided
  		selector = selector || document;
  
  		// Handle $(DOMElement)
  		if ( selector.nodeType ) {
  			this[0] = selector;
  			this.length = 1;
  			this.context = selector;
  			return this;
  		}
  		// Handle HTML strings
  		if ( typeof selector === "string" ) {
  			// Are we dealing with HTML string or an ID?
  			var match = quickExpr.exec( selector );
  
  			// Verify a match, and that no context was specified for #id
  			if ( match && (match[1] || !context) ) {
  
  				// HANDLE: $(html) -> $(array)
  				if ( match[1] )
  					selector = jQuery.clean( [ match[1] ], context );
  
  				// HANDLE: $("#id")
  				else {
  					var elem = document.getElementById( match[3] );
  
  					// Make sure an element was located
  					if ( elem ){
  						// Handle the case where IE and Opera return items
  						// by name instead of ID
  						if ( elem.id != match[3] )
  							return jQuery().find( selector );
  
  						// Otherwise, we inject the element directly into the jQuery object
  						var ret = jQuery( elem );
  						ret.context = document;
  						ret.selector = selector;
  						return ret;
  					}
  					selector = [];
  				}
  
  			// HANDLE: $(expr, [context])
  			// (which is just equivalent to: $(content).find(expr)
  			} else
  				return jQuery( context ).find( selector );
  
  		// HANDLE: $(function)
  		// Shortcut for document ready
  		} else if ( jQuery.isFunction( selector ) )
  			return jQuery( document ).ready( selector );
  
  		// Make sure that old selector state is passed along
  		if ( selector.selector && selector.context ) {
  			this.selector = selector.selector;
  			this.context = selector.context;
  		}
  
  		return this.setArray(jQuery.makeArray(selector));
  	},
  
  	// Start with an empty selector
  	selector: "",
  
  	// The current version of jQuery being used
  	jquery: "1.3",
  
  	// The number of elements contained in the matched element set
  	size: function() {
  		return this.length;
  	},
  
  	// Get the Nth element in the matched element set OR
  	// Get the whole matched element set as a clean array
  	get: function( num ) {
  		return num === undefined ?
  
  			// Return a 'clean' array
  			jQuery.makeArray( this ) :
  
  			// Return just the object
  			this[ num ];
  	},
  
  	// Take an array of elements and push it onto the stack
  	// (returning the new matched element set)
  	pushStack: function( elems, name, selector ) {
  		// Build a new jQuery matched element set
  		var ret = jQuery( elems );
  
  		// Add the old object onto the stack (as a reference)
  		ret.prevObject = this;
  
  		ret.context = this.context;
  
  		if ( name === "find" )
  			ret.selector = this.selector + (this.selector ? " " : "") + selector;
  		else if ( name )
  			ret.selector = this.selector + "." + name + "(" + selector + ")";
  
  		// Return the newly-formed element set
  		return ret;
  	},
  
  	// Force the current matched set of elements to become
  	// the specified array of elements (destroying the stack in the process)
  	// You should use pushStack() in order to do this, but maintain the stack
  	setArray: function( elems ) {
  		// Resetting the length to 0, then using the native Array push
  		// is a super-fast way to populate an object with array-like properties
  		this.length = 0;
  		Array.prototype.push.apply( this, elems );
  
  		return this;
  	},
  
  	// Execute a callback for every element in the matched set.
  	// (You can seed the arguments with an array of args, but this is
  	// only used internally.)
  	each: function( callback, args ) {
  		return jQuery.each( this, callback, args );
  	},
  
  	// Determine the position of an element within
  	// the matched set of elements
  	index: function( elem ) {
  		// Locate the position of the desired element
  		return jQuery.inArray(
  			// If it receives a jQuery object, the first element is used
  			elem && elem.jquery ? elem[0] : elem
  		, this );
  	},
  
  	attr: function( name, value, type ) {
  		var options = name;
  
  		// Look for the case where we're accessing a style value
  		if ( typeof name === "string" )
  			if ( value === undefined )
  				return this[0] && jQuery[ type || "attr" ]( this[0], name );
  
  			else {
  				options = {};
  				options[ name ] = value;
  			}
  
  		// Check to see if we're setting style values
  		return this.each(function(i){
  			// Set all the styles
  			for ( name in options )
  				jQuery.attr(
  					type ?
  						this.style :
  						this,
  					name, jQuery.prop( this, options[ name ], type, i, name )
  				);
  		});
  	},
  
  	css: function( key, value ) {
  		// ignore negative width and height values
  		if ( (key == 'width' || key == 'height') && parseFloat(value) < 0 )
  			value = undefined;
  		return this.attr( key, value, "curCSS" );
  	},
  
  	text: function( text ) {
  		if ( typeof text !== "object" && text != null )
  			return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
  
  		var ret = "";
  
  		jQuery.each( text || this, function(){
  			jQuery.each( this.childNodes, function(){
  				if ( this.nodeType != 8 )
  					ret += this.nodeType != 1 ?
  						this.nodeValue :
  						jQuery.fn.text( [ this ] );
  			});
  		});
  
  		return ret;
  	},
  
  	wrapAll: function( html ) {
  		if ( this[0] ) {
  			// The elements to wrap the target around
  			var wrap = jQuery( html, this[0].ownerDocument ).clone();
  
  			if ( this[0].parentNode )
  				wrap.insertBefore( this[0] );
  
  			wrap.map(function(){
  				var elem = this;
  
  				while ( elem.firstChild )
  					elem = elem.firstChild;
  
  				return elem;
  			}).append(this);
  		}
  
  		return this;
  	},
  
  	wrapInner: function( html ) {
  		return this.each(function(){
  			jQuery( this ).contents().wrapAll( html );
  		});
  	},
  
  	wrap: function( html ) {
  		return this.each(function(){
  			jQuery( this ).wrapAll( html );
  		});
  	},
  
  	append: function() {
  		return this.domManip(arguments, true, function(elem){
  			if (this.nodeType == 1)
  				this.appendChild( elem );
  		});
  	},
  
  	prepend: function() {
  		return this.domManip(arguments, true, function(elem){
  			if (this.nodeType == 1)
  				this.insertBefore( elem, this.firstChild );
  		});
  	},
  
  	before: function() {
  		return this.domManip(arguments, false, function(elem){
  			this.parentNode.insertBefore( elem, this );
  		});
  	},
  
  	after: function() {
  		return this.domManip(arguments, false, function(elem){
  			this.parentNode.insertBefore( elem, this.nextSibling );
  		});
  	},
  
  	end: function() {
  		return this.prevObject || jQuery( [] );
  	},
  
  	// For internal use only.
  	// Behaves like an Array's .push method, not like a jQuery method.
  	push: [].push,
  
  	find: function( selector ) {
  		if ( this.length === 1 && !/,/.test(selector) ) {
  			var ret = this.pushStack( [], "find", selector );
  			ret.length = 0;
  			jQuery.find( selector, this[0], ret );
  			return ret;
  		} else {
  			var elems = jQuery.map(this, function(elem){
  				return jQuery.find( selector, elem );
  			});
  
  			return this.pushStack( /[^+>] [^+>]/.test( selector ) ?
  				jQuery.unique( elems ) :
  				elems, "find", selector );
  		}
  	},
  
  	clone: function( events ) {
  		// Do the clone
  		var ret = this.map(function(){
  			if ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {
  				// IE copies events bound via attachEvent when
  				// using cloneNode. Calling detachEvent on the
  				// clone will also remove the events from the orignal
  				// In order to get around this, we use innerHTML.
  				// Unfortunately, this means some modifications to
  				// attributes in IE that are actually only stored
  				// as properties will not be copied (such as the
  				// the name attribute on an input).
  				var clone = this.cloneNode(true),
  					container = document.createElement("div");
  				container.appendChild(clone);
  				return jQuery.clean([container.innerHTML])[0];
  			} else
  				return this.cloneNode(true);
  		});
  
  		// Need to set the expando to null on the cloned set if it exists
  		// removeData doesn't work here, IE removes it from the original as well
  		// this is primarily for IE but the data expando shouldn't be copied over in any browser
  		var clone = ret.find("*").andSelf().each(function(){
  			if ( this[ expando ] !== undefined )
  				this[ expando ] = null;
  		});
  
  		// Copy the events from the original to the clone
  		if ( events === true )
  			this.find("*").andSelf().each(function(i){
  				if (this.nodeType == 3)
  					return;
  				var events = jQuery.data( this, "events" );
  
  				for ( var type in events )
  					for ( var handler in events[ type ] )
  						jQuery.event.add( clone[ i ], type, events[ type ][ handler ], events[ type ][ handler ].data );
  			});
  
  		// Return the cloned set
  		return ret;
  	},
  
  	filter: function( selector ) {
  		return this.pushStack(
  			jQuery.isFunction( selector ) &&
  			jQuery.grep(this, function(elem, i){
  				return selector.call( elem, i );
  			}) ||
  
  			jQuery.multiFilter( selector, jQuery.grep(this, function(elem){
  				return elem.nodeType === 1;
  			}) ), "filter", selector );
  	},
  
  	closest: function( selector ) {
  		var pos = jQuery.expr.match.POS.test( selector ) ? jQuery(selector) : null;
  
  		return this.map(function(){
  			var cur = this;
  			while ( cur && cur.ownerDocument ) {
  				if ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selector) )
  					return cur;
  				cur = cur.parentNode;
  			}
  		});
  	},
  
  	not: function( selector ) {
  		if ( typeof selector === "string" )
  			// test special case where just one selector is passed in
  			if ( isSimple.test( selector ) )
  				return this.pushStack( jQuery.multiFilter( selector, this, true ), "not", selector );
  			else
  				selector = jQuery.multiFilter( selector, this );
  
  		var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType;
  		return this.filter(function() {
  			return isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector;
  		});
  	},
  
  	add: function( selector ) {
  		return this.pushStack( jQuery.unique( jQuery.merge(
  			this.get(),
  			typeof selector === "string" ?
  				jQuery( selector ) :
  				jQuery.makeArray( selector )
  		)));
  	},
  
  	is: function( selector ) {
  		return !!selector && jQuery.multiFilter( selector, this ).length > 0;
  	},
  
  	hasClass: function( selector ) {
  		return !!selector && this.is( "." + selector );
  	},
  
  	val: function( value ) {
  		if ( value === undefined ) {			
  			var elem = this[0];
  
  			if ( elem ) {
  				if( jQuery.nodeName( elem, 'option' ) )
  					return (elem.attributes.value || {}).specified ? elem.value : elem.text;
  				
  				// We need to handle select boxes special
  				if ( jQuery.nodeName( elem, "select" ) ) {
  					var index = elem.selectedIndex,
  						values = [],
  						options = elem.options,
  						one = elem.type == "select-one";
  
  					// Nothing was selected
  					if ( index < 0 )
  						return null;
  
  					// Loop through all the selected options
  					for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
  						var option = options[ i ];
  
  						if ( option.selected ) {
  							// Get the specifc value for the option
  							value = jQuery(option).val();
  
  							// We don't need an array for one selects
  							if ( one )
  								return value;
  
  							// Multi-Selects return an array
  							values.push( value );
  						}
  					}
  
  					return values;				
  				}
  
  				// Everything else, we just grab the value
  				return (elem.value || "").replace(/\r/g, "");
  
  			}
  
  			return undefined;
  		}
  
  		if ( typeof value === "number" )
  			value += '';
  
  		return this.each(function(){
  			if ( this.nodeType != 1 )
  				return;
  
  			if ( jQuery.isArray(value) && /radio|checkbox/.test( this.type ) )
  				this.checked = (jQuery.inArray(this.value, value) >= 0 ||
  					jQuery.inArray(this.name, value) >= 0);
  
  			else if ( jQuery.nodeName( this, "select" ) ) {
  				var values = jQuery.makeArray(value);
  
  				jQuery( "option", this ).each(function(){
  					this.selected = (jQuery.inArray( this.value, values ) >= 0 ||
  						jQuery.inArray( this.text, values ) >= 0);
  				});
  
  				if ( !values.length )
  					this.selectedIndex = -1;
  
  			} else
  				this.value = value;
  		});
  	},
  
  	html: function( value ) {
  		return value === undefined ?
  			(this[0] ?
  				this[0].innerHTML :
  				null) :
  			this.empty().append( value );
  	},
  
  	replaceWith: function( value ) {
  		return this.after( value ).remove();
  	},
  
  	eq: function( i ) {
  		return this.slice( i, +i + 1 );
  	},
  
  	slice: function() {
  		return this.pushStack( Array.prototype.slice.apply( this, arguments ),
  			"slice", Array.prototype.slice.call(arguments).join(",") );
  	},
  
  	map: function( callback ) {
  		return this.pushStack( jQuery.map(this, function(elem, i){
  			return callback.call( elem, i, elem );
  		}));
  	},
  
  	andSelf: function() {
  		return this.add( this.prevObject );
  	},
  
  	domManip: function( args, table, callback ) {
  		if ( this[0] ) {
  			var fragment = (this[0].ownerDocument || this[0]).createDocumentFragment(),
  				scripts = jQuery.clean( args, (this[0].ownerDocument || this[0]), fragment ),
  				first = fragment.firstChild,
  				extra = this.length > 1 ? fragment.cloneNode(true) : fragment;
  
  			if ( first )
  				for ( var i = 0, l = this.length; i < l; i++ )
  					callback.call( root(this[i], first), i > 0 ? extra.cloneNode(true) : fragment );
  			
  			if ( scripts )
  				jQuery.each( scripts, evalScript );
  		}
  
  		return this;
  		
  		function root( elem, cur ) {
  			return table && jQuery.nodeName(elem, "table") && jQuery.nodeName(cur, "tr") ?
  				(elem.getElementsByTagName("tbody")[0] ||
  				elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
  				elem;
  		}
  	}
  };
  
  // Give the init function the jQuery prototype for later instantiation
  jQuery.fn.init.prototype = jQuery.fn;
  
  function evalScript( i, elem ) {
  	if ( elem.src )
  		jQuery.ajax({
  			url: elem.src,
  			async: false,
  			dataType: "script"
  		});
  
  	else
  		jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );
  
  	if ( elem.parentNode )
  		elem.parentNode.removeChild( elem );
  }
  
  function now(){
  	return +new Date;
  }
  
  jQuery.extend = jQuery.fn.extend = function() {
  	// copy reference to target object
  	var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options;
  
  	// Handle a deep copy situation
  	if ( typeof target === "boolean" ) {
  		deep = target;
  		target = arguments[1] || {};
  		// skip the boolean and the target
  		i = 2;
  	}
  
  	// Handle case when target is a string or something (possible in deep copy)
  	if ( typeof target !== "object" && !jQuery.isFunction(target) )
  		target = {};
  
  	// extend jQuery itself if only one argument is passed
  	if ( length == i ) {
  		target = this;
  		--i;
  	}
  
  	for ( ; i < length; i++ )
  		// Only deal with non-null/undefined values
  		if ( (options = arguments[ i ]) != null )
  			// Extend the base object
  			for ( var name in options ) {
  				var src = target[ name ], copy = options[ name ];
  
  				// Prevent never-ending loop
  				if ( target === copy )
  					continue;
  
  				// Recurse if we're merging object values
  				if ( deep && copy && typeof copy === "object" && !copy.nodeType )
  					target[ name ] = jQuery.extend( deep, 
  						// Never move original objects, clone them
  						src || ( copy.length != null ? [ ] : { } )
  					, copy );
  
  				// Don't bring in undefined values
  				else if ( copy !== undefined )
  					target[ name ] = copy;
  
  			}
  
  	// Return the modified object
  	return target;
  };
  
  // exclude the following css properties to add px
  var	exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,
  	// cache defaultView
  	defaultView = document.defaultView || {},
  	toString = Object.prototype.toString;
  
  jQuery.extend({
  	noConflict: function( deep ) {
  		window.$ = _$;
  
  		if ( deep )
  			window.jQuery = _jQuery;
  
  		return jQuery;
  	},
  
  	// See test/unit/core.js for details concerning isFunction.
  	// Since version 1.3, DOM methods and functions like alert
  	// aren't supported. They return false on IE (#2968).
  	isFunction: function( obj ) {
  		return toString.call(obj) === "[object Function]";
  	},
  
  	isArray: function( obj ) {
  		return toString.call(obj) === "[object Array]";
  	},
  
  	// check if an element is in a (or is an) XML document
  	isXMLDoc: function( elem ) {
  		return elem.documentElement && !elem.body ||
  			elem.tagName && elem.ownerDocument && !elem.ownerDocument.body;
  	},
  
  	// Evalulates a script in a global context
  	globalEval: function( data ) {
  		data = jQuery.trim( data );
  
  		if ( data ) {
  			// Inspired by code by Andrea Giammarchi
  			// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
  			var head = document.getElementsByTagName("head")[0] || document.documentElement,
  				script = document.createElement("script");
  
  			script.type = "text/javascript";
  			if ( jQuery.support.scriptEval )
  				script.appendChild( document.createTextNode( data ) );
  			else
  				script.text = data;
  
  			// Use insertBefore instead of appendChild  to circumvent an IE6 bug.
  			// This arises when a base node is used (#2709).
  			head.insertBefore( script, head.firstChild );
  			head.removeChild( script );
  		}
  	},
  
  	nodeName: function( elem, name ) {
  		return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase();
  	},
  
  	// args is for internal usage only
  	each: function( object, callback, args ) {
  		var name, i = 0, length = object.length;
  
  		if ( args ) {
  			if ( length === undefined ) {
  				for ( name in object )
  					if ( callback.apply( object[ name ], args ) === false )
  						break;
  			} else
  				for ( ; i < length; )
  					if ( callback.apply( object[ i++ ], args ) === false )
  						break;
  
  		// A special, fast, case for the most common use of each
  		} else {
  			if ( length === undefined ) {
  				for ( name in object )
  					if ( callback.call( object[ name ], name, object[ name ] ) === false )
  						break;
  			} else
  				for ( var value = object[0];
  					i < length && callback.call( value, i, value ) !== false; value = object[++i] ){}
  		}
  
  		return object;
  	},
  
  	prop: function( elem, value, type, i, name ) {
  		// Handle executable functions
  		if ( jQuery.isFunction( value ) )
  			value = value.call( elem, i );
  
  		// Handle passing in a number to a CSS property
  		return typeof value === "number" && type == "curCSS" && !exclude.test( name ) ?
  			value + "px" :
  			value;
  	},
  
  	className: {
  		// internal only, use addClass("class")
  		add: function( elem, classNames ) {
  			jQuery.each((classNames || "").split(/\s+/), function(i, className){
  				if ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) )
  					elem.className += (elem.className ? " " : "") + className;
  			});
  		},
  
  		// internal only, use removeClass("class")
  		remove: function( elem, classNames ) {
  			if (elem.nodeType == 1)
  				elem.className = classNames !== undefined ?
  					jQuery.grep(elem.className.split(/\s+/), function(className){
  						return !jQuery.className.has( classNames, className );
  					}).join(" ") :
  					"";
  		},
  
  		// internal only, use hasClass("class")
  		has: function( elem, className ) {
  			return jQuery.inArray( className, (elem.className || elem).toString().split(/\s+/) ) > -1;
  		}
  	},
  
  	// A method for quickly swapping in/out CSS properties to get correct calculations
  	swap: function( elem, options, callback ) {
  		var old = {};
  		// Remember the old values, and insert the new ones
  		for ( var name in options ) {
  			old[ name ] = elem.style[ name ];
  			elem.style[ name ] = options[ name ];
  		}
  
  		callback.call( elem );
  
  		// Revert the old values
  		for ( var name in options )
  			elem.style[ name ] = old[ name ];
  	},
  
  	css: function( elem, name, force ) {
  		if ( name == "width" || name == "height" ) {
  			var val, props = { position: "absolute", visibility: "hidden", display:"block" }, which = name == "width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ];
  
  			function getWH() {
  				val = name == "width" ? elem.offsetWidth : elem.offsetHeight;
  				var padding = 0, border = 0;
  				jQuery.each( which, function() {
  					padding += parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0;
  					border += parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0;
  				});
  				val -= Math.round(padding + border);
  			}
  
  			if ( jQuery(elem).is(":visible") )
  				getWH();
  			else
  				jQuery.swap( elem, props, getWH );
  
  			return Math.max(0, val);
  		}
  
  		return jQuery.curCSS( elem, name, force );
  	},
  
  	curCSS: function( elem, name, force ) {
  		var ret, style = elem.style;
  
  		// We need to handle opacity special in IE
  		if ( name == "opacity" && !jQuery.support.opacity ) {
  			ret = jQuery.attr( style, "opacity" );
  
  			return ret == "" ?
  				"1" :
  				ret;
  		}
  
  		// Make sure we're using the right name for getting the float value
  		if ( name.match( /float/i ) )
  			name = styleFloat;
  
  		if ( !force && style && style[ name ] )
  			ret = style[ name ];
  
  		else if ( defaultView.getComputedStyle ) {
  
  			// Only "float" is needed here
  			if ( name.match( /float/i ) )
  				name = "float";
  
  			name = name.replace( /([A-Z])/g, "-$1" ).toLowerCase();
  
  			var computedStyle = defaultView.getComputedStyle( elem, null );
  
  			if ( computedStyle )
  				ret = computedStyle.getPropertyValue( name );
  
  			// We should always get a number back from opacity
  			if ( name == "opacity" && ret == "" )
  				ret = "1";
  
  		} else if ( elem.currentStyle ) {
  			var camelCase = name.replace(/\-(\w)/g, function(all, letter){
  				return letter.toUpperCase();
  			});
  
  			ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];
  
  			// From the awesome hack by Dean Edwards
  			// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
  
  			// If we're not dealing with a regular pixel number
  			// but a number that has a weird ending, we need to convert it to pixels
  			if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) {
  				// Remember the original values
  				var left = style.left, rsLeft = elem.runtimeStyle.left;
  
  				// Put in the new values to get a computed value out
  				elem.runtimeStyle.left = elem.currentStyle.left;
  				style.left = ret || 0;
  				ret = style.pixelLeft + "px";
  
  				// Revert the changed values
  				style.left = left;
  				elem.runtimeStyle.left = rsLeft;
  			}
  		}
  
  		return ret;
  	},
  
  	clean: function( elems, context, fragment ) {
  		context = context || document;
  
  		// !context.createElement fails in IE with an error but returns typeof 'object'
  		if ( typeof context.createElement === "undefined" )
  			context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
  
  		// If a single string is passed in and it's a single tag
  		// just do a createElement and skip the rest
  		if ( !fragment && elems.length === 1 && typeof elems[0] === "string" ) {
  			var match = /^<(\w+)\s*\/?>$/.exec(elems[0]);
  			if ( match )
  				return [ context.createElement( match[1] ) ];
  		}
  
  		var ret = [], scripts = [], div = context.createElement("div");
  
  		jQuery.each(elems, function(i, elem){
  			if ( typeof elem === "number" )
  				elem += '';
  
  			if ( !elem )
  				return;
  
  			// Convert html string into DOM nodes
  			if ( typeof elem === "string" ) {
  				// Fix "XHTML"-style tags in all browsers
  				elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, tag){
  					return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ?
  						all :
  						front + "></" + tag + ">";
  				});
  
  				// Trim whitespace, otherwise indexOf won't work as expected
  				var tags = jQuery.trim( elem ).toLowerCase();
  
  				var wrap =
  					// option or optgroup
  					!tags.indexOf("<opt") &&
  					[ 1, "<select multiple='multiple'>", "</select>" ] ||
  
  					!tags.indexOf("<leg") &&
  					[ 1, "<fieldset>", "</fieldset>" ] ||
  
  					tags.match(/^<(thead|tbody|tfoot|colg|cap)/) &&
  					[ 1, "<table>", "</table>" ] ||
  
  					!tags.indexOf("<tr") &&
  					[ 2, "<table><tbody>", "</tbody></table>" ] ||
  
  				 	// <thead> matched above
  					(!tags.indexOf("<td") || !tags.indexOf("<th")) &&
  					[ 3, "<table><tbody><tr>", "</tr></tbody></table>" ] ||
  
  					!tags.indexOf("<col") &&
  					[ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ] ||
  
  					// IE can't serialize <link> and <script> tags normally
  					!jQuery.support.htmlSerialize &&
  					[ 1, "div<div>", "</div>" ] ||
  
  					[ 0, "", "" ];
  
  				// Go to html and back, then peel off extra wrappers
  				div.innerHTML = wrap[1] + elem + wrap[2];
  
  				// Move to the right depth
  				while ( wrap[0]-- )
  					div = div.lastChild;
  
  				// Remove IE's autoinserted <tbody> from table fragments
  				if ( !jQuery.support.tbody ) {
  
  					// String was a <table>, *may* have spurious <tbody>
  					var tbody = !tags.indexOf("<table") && tags.indexOf("<tbody") < 0 ?
  						div.firstChild && div.firstChild.childNodes :
  
  						// String was a bare <thead> or <tfoot>
  						wrap[1] == "<table>" && tags.indexOf("<tbody") < 0 ?
  							div.childNodes :
  							[];
  
  					for ( var j = tbody.length - 1; j >= 0 ; --j )
  						if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length )
  							tbody[ j ].parentNode.removeChild( tbody[ j ] );
  
  					}
  
  				// IE completely kills leading whitespace when innerHTML is used
  				if ( !jQuery.support.leadingWhitespace && /^\s/.test( elem ) )
  					div.insertBefore( context.createTextNode( elem.match(/^\s*/)[0] ), div.firstChild );
  				
  				elem = jQuery.makeArray( div.childNodes );
  			}
  
  			if ( elem.nodeType )
  				ret.push( elem );
  			else
  				ret = jQuery.merge( ret, elem );
  
  		});
  
  		if ( fragment ) {
  			for ( var i = 0; ret[i]; i++ ) {
  				if ( jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
  					scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
  				} else {
  					if ( ret[i].nodeType === 1 )
  						ret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))) );
  					fragment.appendChild( ret[i] );
  				}
  			}
  			
  			return scripts;
  		}
  
  		return ret;
  	},
  
  	attr: function( elem, name, value ) {
  		// don't set attributes on text and comment nodes
  		if (!elem || elem.nodeType == 3 || elem.nodeType == 8)
  			return undefined;
  
  		var notxml = !jQuery.isXMLDoc( elem ),
  			// Whether we are setting (or getting)
  			set = value !== undefined;
  
  		// Try to normalize/fix the name
  		name = notxml && jQuery.props[ name ] || name;
  
  		// Only do all the following if this is a node (faster for style)
  		// IE elem.getAttribute passes even for style
  		if ( elem.tagName ) {
  
  			// These attributes require special treatment
  			var special = /href|src|style/.test( name );
  
  			// Safari mis-reports the default selected property of a hidden option
  			// Accessing the parent's selectedIndex property fixes it
  			if ( name == "selected" && elem.parentNode )
  				elem.parentNode.selectedIndex;
  
  			// If applicable, access the attribute via the DOM 0 way
  			if ( name in elem && notxml && !special ) {
  				if ( set ){
  					// We can't allow the type property to be changed (since it causes problems in IE)
  					if ( name == "type" && jQuery.nodeName( elem, "input" ) && elem.parentNode )
  						throw "type property can't be changed";
  
  					elem[ name ] = value;
  				}
  
  				// browsers index elements by id/name on forms, give priority to attributes.
  				if( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) )
  					return elem.getAttributeNode( name ).nodeValue;
  
  				// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
  				// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
  				if ( name == "tabIndex" ) {
  					var attributeNode = elem.getAttributeNode( "tabIndex" );
  					return attributeNode && attributeNode.specified
  						? attributeNode.value
  						: elem.nodeName.match(/^(a|area|button|input|object|select|textarea)$/i)
  							? 0
  							: undefined;
  				}
  
  				return elem[ name ];
  			}
  
  			if ( !jQuery.support.style && notxml &&  name == "style" )
  				return jQuery.attr( elem.style, "cssText", value );
  
  			if ( set )
  				// convert the value to a string (all browsers do this but IE) see #1070
  				elem.setAttribute( name, "" + value );
  
  			var attr = !jQuery.support.hrefNormalized && notxml && special
  					// Some attributes require a special call on IE
  					? elem.getAttribute( name, 2 )
  					: elem.getAttribute( name );
  
  			// Non-existent attributes return null, we normalize to undefined
  			return attr === null ? undefined : attr;
  		}
  
  		// elem is actually elem.style ... set the style
  
  		// IE uses filters for opacity
  		if ( !jQuery.support.opacity && name == "opacity" ) {
  			if ( set ) {
  				// IE has trouble with opacity if it does not have layout
  				// Force it by setting the zoom level
  				elem.zoom = 1;
  
  				// Set the alpha filter to set the opacity
  				elem.filter = (elem.filter || "").replace( /alpha\([^)]*\)/, "" ) +
  					(parseInt( value ) + '' == "NaN" ? "" : "alpha(opacity=" + value * 100 + ")");
  			}
  
  			return elem.filter && elem.filter.indexOf("opacity=") >= 0 ?
  				(parseFloat( elem.filter.match(/opacity=([^)]*)/)[1] ) / 100) + '':
  				"";
  		}
  
  		name = name.replace(/-([a-z])/ig, function(all, letter){
  			return letter.toUpperCase();
  		});
  
  		if ( set )
  			elem[ name ] = value;
  
  		return elem[ name ];
  	},
  
  	trim: function( text ) {
  		return (text || "").replace( /^\s+|\s+$/g, "" );
  	},
  
  	makeArray: function( array ) {
  		var ret = [];
  
  		if( array != null ){
  			var i = array.length;
  			// The window, strings (and functions) also have 'length'
  			if( i == null || typeof array === "string" || jQuery.isFunction(array) || array.setInterval )
  				ret[0] = array;
  			else
  				while( i )
  					ret[--i] = array[i];
  		}
  
  		return ret;
  	},
  
  	inArray: function( elem, array ) {
  		for ( var i = 0, length = array.length; i < length; i++ )
  		// Use === because on IE, window == document
  			if ( array[ i ] === elem )
  				return i;
  
  		return -1;
  	},
  
  	merge: function( first, second ) {
  		// We have to loop this way because IE & Opera overwrite the length
  		// expando of getElementsByTagName
  		var i = 0, elem, pos = first.length;
  		// Also, we need to make sure that the correct elements are being returned
  		// (IE returns comment nodes in a '*' query)
  		if ( !jQuery.support.getAll ) {
  			while ( (elem = second[ i++ ]) != null )
  				if ( elem.nodeType != 8 )
  					first[ pos++ ] = elem;
  
  		} else
  			while ( (elem = second[ i++ ]) != null )
  				first[ pos++ ] = elem;
  
  		return first;
  	},
  
  	unique: function( array ) {
  		var ret = [], done = {};
  
  		try {
  
  			for ( var i = 0, length = array.length; i < length; i++ ) {
  				var id = jQuery.data( array[ i ] );
  
  				if ( !done[ id ] ) {
  					done[ id ] = true;
  					ret.push( array[ i ] );
  				}
  			}
  
  		} catch( e ) {
  			ret = array;
  		}
  
  		return ret;
  	},
  
  	grep: function( elems, callback, inv ) {
  		var ret = [];
  
  		// Go through the array, only saving the items
  		// that pass the validator function
  		for ( var i = 0, length = elems.length; i < length; i++ )
  			if ( !inv != !callback( elems[ i ], i ) )
  				ret.push( elems[ i ] );
  
  		return ret;
  	},
  
  	map: function( elems, callback ) {
  		var ret = [];
  
  		// Go through the array, translating each of the items to their
  		// new value (or values).
  		for ( var i = 0, length = elems.length; i < length; i++ ) {
  			var value = callback( elems[ i ], i );
  
  			if ( value != null )
  				ret[ ret.length ] = value;
  		}
  
  		return ret.concat.apply( [], ret );
  	}
  });
  
  // Use of jQuery.browser is deprecated.
  // It's included for backwards compatibility and plugins,
  // although they should work to migrate away.
  
  var userAgent = navigator.userAgent.toLowerCase();
  
  // Figure out what browser is being used
  jQuery.browser = {
  	version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1],
  	safari: /webkit/.test( userAgent ),
  	opera: /opera/.test( userAgent ),
  	msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
  	mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )
  };
  
  jQuery.each({
  	parent: function(elem){return elem.parentNode;},
  	parents: function(elem){return jQuery.dir(elem,"parentNode");},
  	next: function(elem){return jQuery.nth(elem,2,"nextSibling");},
  	prev: function(elem){return jQuery.nth(elem,2,"previousSibling");},
  	nextAll: function(elem){return jQuery.dir(elem,"nextSibling");},
  	prevAll: function(elem){return jQuery.dir(elem,"previousSibling");},
  	siblings: function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},
  	children: function(elem){return jQuery.sibling(elem.firstChild);},
  	contents: function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}
  }, function(name, fn){
  	jQuery.fn[ name ] = function( selector ) {
  		var ret = jQuery.map( this, fn );
  
  		if ( selector && typeof selector == "string" )
  			ret = jQuery.multiFilter( selector, ret );
  
  		return this.pushStack( jQuery.unique( ret ), name, selector );
  	};
  });
  
  jQuery.each({
  	appendTo: "append",
  	prependTo: "prepend",
  	insertBefore: "before",
  	insertAfter: "after",
  	replaceAll: "replaceWith"
  }, function(name, original){
  	jQuery.fn[ name ] = function() {
  		var args = arguments;
  
  		return this.each(function(){
  			for ( var i = 0, length = args.length; i < length; i++ )
  				jQuery( args[ i ] )[ original ]( this );
  		});
  	};
  });
  
  jQuery.each({
  	removeAttr: function( name ) {
  		jQuery.attr( this, name, "" );
  		if (this.nodeType == 1)
  			this.removeAttribute( name );
  	},
  
  	addClass: function( classNames ) {
  		jQuery.className.add( this, classNames );
  	},
  
  	removeClass: function( classNames ) {
  		jQuery.className.remove( this, classNames );
  	},
  
  	toggleClass: function( classNames, state ) {
  		if( typeof state !== "boolean" )
  			state = !jQuery.className.has( this, classNames );
  		jQuery.className[ state ? "add" : "remove" ]( this, classNames );
  	},
  
  	remove: function( selector ) {
  		if ( !selector || jQuery.filter( selector, [ this ] ).length ) {
  			// Prevent memory leaks
  			jQuery( "*", this ).add([this]).each(function(){
  				jQuery.event.remove(this);
  				jQuery.removeData(this);
  			});
  			if (this.parentNode)
  				this.parentNode.removeChild( this );
  		}
  	},
  
  	empty: function() {
  		// Remove element nodes and prevent memory leaks
  		jQuery( ">*", this ).remove();
  
  		// Remove any remaining nodes
  		while ( this.firstChild )
  			this.removeChild( this.firstChild );
  	}
  }, function(name, fn){
  	jQuery.fn[ name ] = function(){
  		return this.each( fn, arguments );
  	};
  });
  
  // Helper function used by the dimensions and offset modules
  function num(elem, prop) {
  	return elem[0] && parseInt( jQuery.curCSS(elem[0], prop, true), 10 ) || 0;
  }
  var expando = "jQuery" + now(), uuid = 0, windowData = {};
  
  jQuery.extend({
  	cache: {},
  
  	data: function( elem, name, data ) {
  		elem = elem == window ?
  			windowData :
  			elem;
  
  		var id = elem[ expando ];
  
  		// Compute a unique ID for the element
  		if ( !id )
  			id = elem[ expando ] = ++uuid;
  
  		// Only generate the data cache if we're
  		// trying to access or manipulate it
  		if ( name && !jQuery.cache[ id ] )
  			jQuery.cache[ id ] = {};
  
  		// Prevent overriding the named cache with undefined values
  		if ( data !== undefined )
  			jQuery.cache[ id ][ name ] = data;
  
  		// Return the named cache data, or the ID for the element
  		return name ?
  			jQuery.cache[ id ][ name ] :
  			id;
  	},
  
  	removeData: function( elem, name ) {
  		elem = elem == window ?
  			windowData :
  			elem;
  
  		var id = elem[ expando ];
  
  		// If we want to remove a specific section of the element's data
  		if ( name ) {
  			if ( jQuery.cache[ id ] ) {
  				// Remove the section of cache data
  				delete jQuery.cache[ id ][ name ];
  
  				// If we've removed all the data, remove the element's cache
  				name = "";
  
  				for ( name in jQuery.cache[ id ] )
  					break;
  
  				if ( !name )
  					jQuery.removeData( elem );
  			}
  
  		// Otherwise, we want to remove all of the element's data
  		} else {
  			// Clean up the element expando
  			try {
  				delete elem[ expando ];
  			} catch(e){
  				// IE has trouble directly removing the expando
  				// but it's ok with using removeAttribute
  				if ( elem.removeAttribute )
  					elem.removeAttribute( expando );
  			}
  
  			// Completely remove the data cache
  			delete jQuery.cache[ id ];
  		}
  	},
  	queue: function( elem, type, data ) {
  		if ( elem ){
  	
  			type = (type || "fx") + "queue";
  	
  			var q = jQuery.data( elem, type );
  	
  			if ( !q || jQuery.isArray(data) )
  				q = jQuery.data( elem, type, jQuery.makeArray(data) );
  			else if( data )
  				q.push( data );
  	
  		}
  		return q;
  	},
  
  	dequeue: function( elem, type ){
  		var queue = jQuery.queue( elem, type ),
  			fn = queue.shift();
  		
  		if( !type || type === "fx" )
  			fn = queue[0];
  			
  		if( fn !== undefined )
  			fn.call(elem);
  	}
  });
  
  jQuery.fn.extend({
  	data: function( key, value ){
  		var parts = key.split(".");
  		parts[1] = parts[1] ? "." + parts[1] : "";
  
  		if ( value === undefined ) {
  			var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
  
  			if ( data === undefined && this.length )
  				data = jQuery.data( this[0], key );
  
  			return data === undefined && parts[1] ?
  				this.data( parts[0] ) :
  				data;
  		} else
  			return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function(){
  				jQuery.data( this, key, value );
  			});
  	},
  
  	removeData: function( key ){
  		return this.each(function(){
  			jQuery.removeData( this, key );
  		});
  	},
  	queue: function(type, data){
  		if ( typeof type !== "string" ) {
  			data = type;
  			type = "fx";
  		}
  
  		if ( data === undefined )
  			return jQuery.queue( this[0], type );
  
  		return this.each(function(){
  			var queue = jQuery.queue( this, type, data );
  			
  			 if( type == "fx" && queue.length == 1 )
  				queue[0].call(this);
  		});
  	},
  	dequeue: function(type){
  		return this.each(function(){
  			jQuery.dequeue( this, type );
  		});
  	}
  });/*!
   * Sizzle CSS Selector Engine - v0.9.1
   *  Copyright 2009, The Dojo Foundation
   *  Released under the MIT, BSD, and GPL Licenses.
   *  More information: http://sizzlejs.com/
   */
  (function(){
  
  var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|[^[\]]+)+\]|\\.|[^ >+~,(\[]+)+|[>+~])(\s*,\s*)?/g,
  	done = 0,
  	toString = Object.prototype.toString;
  
  var Sizzle = function(selector, context, results, seed) {
  	results = results || [];
  	context = context || document;
  
  	if ( context.nodeType !== 1 && context.nodeType !== 9 )
  		return [];
  	
  	if ( !selector || typeof selector !== "string" ) {
  		return results;
  	}
  
  	var parts = [], m, set, checkSet, check, mode, extra, prune = true;
  	
  	// Reset the position of the chunker regexp (start from head)
  	chunker.lastIndex = 0;
  	
  	while ( (m = chunker.exec(selector)) !== null ) {
  		parts.push( m[1] );
  		
  		if ( m[2] ) {
  			extra = RegExp.rightContext;
  			break;
  		}
  	}
  
  	if ( parts.length > 1 && Expr.match.POS.exec( selector ) ) {
  		if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
  			var later = "", match;
  
  			// Position selectors must be done after the filter
  			while ( (match = Expr.match.POS.exec( selector )) ) {
  				later += match[0];
  				selector = selector.replace( Expr.match.POS, "" );
  			}
  
  			set = Sizzle.filter( later, Sizzle( /\s$/.test(selector) ? selector + "*" : selector, context ) );
  		} else {
  			set = Expr.relative[ parts[0] ] ?
  				[ context ] :
  				Sizzle( parts.shift(), context );
  
  			while ( parts.length ) {
  				var tmpSet = [];
  
  				selector = parts.shift();
  				if ( Expr.relative[ selector ] )
  					selector += parts.shift();
  
  				for ( var i = 0, l = set.length; i < l; i++ ) {
  					Sizzle( selector, set[i], tmpSet );
  				}
  
  				set = tmpSet;
  			}
  		}
  	} else {
  		var ret = seed ?
  			{ expr: parts.pop(), set: makeArray(seed) } :
  			Sizzle.find( parts.pop(), parts.length === 1 && context.parentNode ? context.parentNode : context );
  		set = Sizzle.filter( ret.expr, ret.set );
  
  		if ( parts.length > 0 ) {
  			checkSet = makeArray(set);
  		} else {
  			prune = false;
  		}
  
  		while ( parts.length ) {
  			var cur = parts.pop(), pop = cur;
  
  			if ( !Expr.relative[ cur ] ) {
  				cur = "";
  			} else {
  				pop = parts.pop();
  			}
  
  			if ( pop == null ) {
  				pop = context;
  			}
  
  			Expr.relative[ cur ]( checkSet, pop, isXML(context) );
  		}
  	}
  
  	if ( !checkSet ) {
  		checkSet = set;
  	}
  
  	if ( !checkSet ) {
  		throw "Syntax error, unrecognized expression: " + (cur || selector);
  	}
  
  	if ( toString.call(checkSet) === "[object Array]" ) {
  		if ( !prune ) {
  			results.push.apply( results, checkSet );
  		} else if ( context.nodeType === 1 ) {
  			for ( var i = 0; checkSet[i] != null; i++ ) {
  				if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
  					results.push( set[i] );
  				}
  			}
  		} else {
  			for ( var i = 0; checkSet[i] != null; i++ ) {
  				if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
  					results.push( set[i] );
  				}
  			}
  		}
  	} else {
  		makeArray( checkSet, results );
  	}
  
  	if ( extra ) {
  		Sizzle( extra, context, results, seed );
  	}
  
  	return results;
  };
  
  Sizzle.matches = function(expr, set){
  	return Sizzle(expr, null, null, set);
  };
  
  Sizzle.find = function(expr, context){
  	var set, match;
  
  	if ( !expr ) {
  		return [];
  	}
  
  	for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
  		var type = Expr.order[i], match;
  		
  		if ( (match = Expr.match[ type ].exec( expr )) ) {
  			var left = RegExp.leftContext;
  
  			if ( left.substr( left.length - 1 ) !== "\\" ) {
  				match[1] = (match[1] || "").replace(/\\/g, "");
  				set = Expr.find[ type ]( match, context );
  				if ( set != null ) {
  					expr = expr.replace( Expr.match[ type ], "" );
  					break;
  				}
  			}
  		}
  	}
  
  	if ( !set ) {
  		set = context.getElementsByTagName("*");
  	}
  
  	return {set: set, expr: expr};
  };
  
  Sizzle.filter = function(expr, set, inplace, not){
  	var old = expr, result = [], curLoop = set, match, anyFound;
  
  	while ( expr && set.length ) {
  		for ( var type in Expr.filter ) {
  			if ( (match = Expr.match[ type ].exec( expr )) != null ) {
  				var filter = Expr.filter[ type ], goodArray = null, goodPos = 0, found, item;
  				anyFound = false;
  
  				if ( curLoop == result ) {
  					result = [];
  				}
  
  				if ( Expr.preFilter[ type ] ) {
  					match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not );
  
  					if ( !match ) {
  						anyFound = found = true;
  					} else if ( match === true ) {
  						continue;
  					} else if ( match[0] === true ) {
  						goodArray = [];
  						var last = null, elem;
  						for ( var i = 0; (elem = curLoop[i]) !== undefined; i++ ) {
  							if ( elem && last !== elem ) {
  								goodArray.push( elem );
  								last = elem;
  							}
  						}
  					}
  				}
  
  				if ( match ) {
  					for ( var i = 0; (item = curLoop[i]) !== undefined; i++ ) {
  						if ( item ) {
  							if ( goodArray && item != goodArray[goodPos] ) {
  								goodPos++;
  							}
  	
  							found = filter( item, match, goodPos, goodArray );
  							var pass = not ^ !!found;
  
  							if ( inplace && found != null ) {
  								if ( pass ) {
  									anyFound = true;
  								} else {
  									curLoop[i] = false;
  								}
  							} else if ( pass ) {
  								result.push( item );
  								anyFound = true;
  							}
  						}
  					}
  				}
  
  				if ( found !== undefined ) {
  					if ( !inplace ) {
  						curLoop = result;
  					}
  
  					expr = expr.replace( Expr.match[ type ], "" );
  
  					if ( !anyFound ) {
  						return [];
  					}
  
  					break;
  				}
  			}
  		}
  
  		expr = expr.replace(/\s*,\s*/, "");
  
  		// Improper expression
  		if ( expr == old ) {
  			if ( anyFound == null ) {
  				throw "Syntax error, unrecognized expression: " + expr;
  			} else {
  				break;
  			}
  		}
  
  		old = expr;
  	}
  
  	return curLoop;
  };
  
  var Expr = Sizzle.selectors = {
  	order: [ "ID", "NAME", "TAG" ],
  	match: {
  		ID: /#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
  		CLASS: /\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
  		NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,
  		ATTR: /\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
  		TAG: /^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,
  		CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
  		POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
  		PSEUDO: /:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
  	},
  	attrMap: {
  		"class": "className",
  		"for": "htmlFor"
  	},
  	attrHandle: {
  		href: function(elem){
  			return elem.getAttribute("href");
  		}
  	},
  	relative: {
  		"+": function(checkSet, part){
  			for ( var i = 0, l = checkSet.length; i < l; i++ ) {
  				var elem = checkSet[i];
  				if ( elem ) {
  					var cur = elem.previousSibling;
  					while ( cur && cur.nodeType !== 1 ) {
  						cur = cur.previousSibling;
  					}
  					checkSet[i] = typeof part === "string" ?
  						cur || false :
  						cur === part;
  				}
  			}
  
  			if ( typeof part === "string" ) {
  				Sizzle.filter( part, checkSet, true );
  			}
  		},
  		">": function(checkSet, part, isXML){
  			if ( typeof part === "string" && !/\W/.test(part) ) {
  				part = isXML ? part : part.toUpperCase();
  
  				for ( var i = 0, l = checkSet.length; i < l; i++ ) {
  					var elem = checkSet[i];
  					if ( elem ) {
  						var parent = elem.parentNode;
  						checkSet[i] = parent.nodeName === part ? parent : false;
  					}
  				}
  			} else {
  				for ( var i = 0, l = checkSet.length; i < l; i++ ) {
  					var elem = checkSet[i];
  					if ( elem ) {
  						checkSet[i] = typeof part === "string" ?
  							elem.parentNode :
  							elem.parentNode === part;
  					}
  				}
  
  				if ( typeof part === "string" ) {
  					Sizzle.filter( part, checkSet, true );
  				}
  			}
  		},
  		"": function(checkSet, part, isXML){
  			var doneName = "done" + (done++), checkFn = dirCheck;
  
  			if ( !part.match(/\W/) ) {
  				var nodeCheck = part = isXML ? part : part.toUpperCase();
  				checkFn = dirNodeCheck;
  			}
  
  			checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
  		},
  		"~": function(checkSet, part, isXML){
  			var doneName = "done" + (done++), checkFn = dirCheck;
  
  			if ( typeof part === "string" && !part.match(/\W/) ) {
  				var nodeCheck = part = isXML ? part : part.toUpperCase();
  				checkFn = dirNodeCheck;
  			}
  
  			checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
  		}
  	},
  	find: {
  		ID: function(match, context){
  			if ( context.getElementById ) {
  				var m = context.getElementById(match[1]);
  				return m ? [m] : [];
  			}
  		},
  		NAME: function(match, context){
  			return context.getElementsByName ? context.getElementsByName(match[1]) : null;
  		},
  		TAG: function(match, context){
  			return context.getElementsByTagName(match[1]);
  		}
  	},
  	preFilter: {
  		CLASS: function(match, curLoop, inplace, result, not){
  			match = " " + match[1].replace(/\\/g, "") + " ";
  
  			for ( var i = 0; curLoop[i]; i++ ) {
  				if ( not ^ (" " + curLoop[i].className + " ").indexOf(match) >= 0 ) {
  					if ( !inplace )
  						result.push( curLoop[i] );
  				} else if ( inplace ) {
  					curLoop[i] = false;
  				}
  			}
  
  			return false;
  		},
  		ID: function(match){
  			return match[1].replace(/\\/g, "");
  		},
  		TAG: function(match, curLoop){
  			for ( var i = 0; !curLoop[i]; i++ ){}
  			return isXML(curLoop[i]) ? match[1] : match[1].toUpperCase();
  		},
  		CHILD: function(match){
  			if ( match[1] == "nth" ) {
  				// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
  				var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
  					match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" ||
  					!/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
  
  				// calculate the numbers (first)n+(last) including if they are negative
  				match[2] = (test[1] + (test[2] || 1)) - 0;
  				match[3] = test[3] - 0;
  			}
  
  			// TODO: Move to normal caching system
  			match[0] = "done" + (done++);
  
  			return match;
  		},
  		ATTR: function(match){
  			var name = match[1];
  			
  			if ( Expr.attrMap[name] ) {
  				match[1] = Expr.attrMap[name];
  			}
  
  			if ( match[2] === "~=" ) {
  				match[4] = " " + match[4] + " ";
  			}
  
  			return match;
  		},
  		PSEUDO: function(match, curLoop, inplace, result, not){
  			if ( match[1] === "not" ) {
  				// If we're dealing with a complex expression, or a simple one
  				if ( match[3].match(chunker).length > 1 ) {
  					match[3] = Sizzle(match[3], null, null, curLoop);
  				} else {
  					var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
  					if ( !inplace ) {
  						result.push.apply( result, ret );
  					}
  					return false;
  				}
  			} else if ( Expr.match.POS.test( match[0] ) ) {
  				return true;
  			}
  			
  			return match;
  		},
  		POS: function(match){
  			match.unshift( true );
  			return match;
  		}
  	},
  	filters: {
  		enabled: function(elem){
  			return elem.disabled === false && elem.type !== "hidden";
  		},
  		disabled: function(elem){
  			return elem.disabled === true;
  		},
  		checked: function(elem){
  			return elem.checked === true;
  		},
  		selected: function(elem){
  			// Accessing this property makes selected-by-default
  			// options in Safari work properly
  			elem.parentNode.selectedIndex;
  			return elem.selected === true;
  		},
  		parent: function(elem){
  			return !!elem.firstChild;
  		},
  		empty: function(elem){
  			return !elem.firstChild;
  		},
  		has: function(elem, i, match){
  			return !!Sizzle( match[3], elem ).length;
  		},
  		header: function(elem){
  			return /h\d/i.test( elem.nodeName );
  		},
  		text: function(elem){
  			return "text" === elem.type;
  		},
  		radio: function(elem){
  			return "radio" === elem.type;
  		},
  		checkbox: function(elem){
  			return "checkbox" === elem.type;
  		},
  		file: function(elem){
  			return "file" === elem.type;
  		},
  		password: function(elem){
  			return "password" === elem.type;
  		},
  		submit: function(elem){
  			return "submit" === elem.type;
  		},
  		image: function(elem){
  			return "image" === elem.type;
  		},
  		reset: function(elem){
  			return "reset" === elem.type;
  		},
  		button: function(elem){
  			return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON";
  		},
  		input: function(elem){
  			return /input|select|textarea|button/i.test(elem.nodeName);
  		}
  	},
  	setFilters: {
  		first: function(elem, i){
  			return i === 0;
  		},
  		last: function(elem, i, match, array){
  			return i === array.length - 1;
  		},
  		even: function(elem, i){
  			return i % 2 === 0;
  		},
  		odd: function(elem, i){
  			return i % 2 === 1;
  		},
  		lt: function(elem, i, match){
  			return i < match[3] - 0;
  		},
  		gt: function(elem, i, match){
  			return i > match[3] - 0;
  		},
  		nth: function(elem, i, match){
  			return match[3] - 0 == i;
  		},
  		eq: function(elem, i, match){
  			return match[3] - 0 == i;
  		}
  	},
  	filter: {
  		CHILD: function(elem, match){
  			var type = match[1], parent = elem.parentNode;
  
  			var doneName = "child" + parent.childNodes.length;
  			
  			if ( parent && (!parent[ doneName ] || !elem.nodeIndex) ) {
  				var count = 1;
  
  				for ( var node = parent.firstChild; node; node = node.nextSibling ) {
  					if ( node.nodeType == 1 ) {
  						node.nodeIndex = count++;
  					}
  				}
  
  				parent[ doneName ] = count - 1;
  			}
  
  			if ( type == "first" ) {
  				return elem.nodeIndex == 1;
  			} else if ( type == "last" ) {
  				return elem.nodeIndex == parent[ doneName ];
  			} else if ( type == "only" ) {
  				return parent[ doneName ] == 1;
  			} else if ( type == "nth" ) {
  				var add = false, first = match[2], last = match[3];
  
  				if ( first == 1 && last == 0 ) {
  					return true;
  				}
  
  				if ( first == 0 ) {
  					if ( elem.nodeIndex == last ) {
  						add = true;
  					}
  				} else if ( (elem.nodeIndex - last) % first == 0 && (elem.nodeIndex - last) / first >= 0 ) {
  					add = true;
  				}
  
  				return add;
  			}
  		},
  		PSEUDO: function(elem, match, i, array){
  			var name = match[1], filter = Expr.filters[ name ];
  
  			if ( filter ) {
  				return filter( elem, i, match, array );
  			} else if ( name === "contains" ) {
  				return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0;
  			} else if ( name === "not" ) {
  				var not = match[3];
  
  				for ( var i = 0, l = not.length; i < l; i++ ) {
  					if ( not[i] === elem ) {
  						return false;
  					}
  				}
  
  				return true;
  			}
  		},
  		ID: function(elem, match){
  			return elem.nodeType === 1 && elem.getAttribute("id") === match;
  		},
  		TAG: function(elem, match){
  			return (match === "*" && elem.nodeType === 1) || elem.nodeName === match;
  		},
  		CLASS: function(elem, match){
  			return match.test( elem.className );
  		},
  		ATTR: function(elem, match){
  			var result = Expr.attrHandle[ match[1] ] ? Expr.attrHandle[ match[1] ]( elem ) : elem[ match[1] ] || elem.getAttribute( match[1] ), value = result + "", type = match[2], check = match[4];
  			return result == null ?
  				false :
  				type === "=" ?
  				value === check :
  				type === "*=" ?
  				value.indexOf(check) >= 0 :
  				type === "~=" ?
  				(" " + value + " ").indexOf(check) >= 0 :
  				!match[4] ?
  				result :
  				type === "!=" ?
  				value != check :
  				type === "^=" ?
  				value.indexOf(check) === 0 :
  				type === "$=" ?
  				value.substr(value.length - check.length) === check :
  				type === "|=" ?
  				value === check || value.substr(0, check.length + 1) === check + "-" :
  				false;
  		},
  		POS: function(elem, match, i, array){
  			var name = match[2], filter = Expr.setFilters[ name ];
  
  			if ( filter ) {
  				return filter( elem, i, match, array );
  			}
  		}
  	}
  };
  
  for ( var type in Expr.match ) {
  	Expr.match[ type ] = RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
  }
  
  var makeArray = function(array, results) {
  	array = Array.prototype.slice.call( array );
  
  	if ( results ) {
  		results.push.apply( results, array );
  		return results;
  	}
  	
  	return array;
  };
  
  // Perform a simple check to determine if the browser is capable of
  // converting a NodeList to an array using builtin methods.
  try {
  	Array.prototype.slice.call( document.documentElement.childNodes );
  
  // Provide a fallback method if it does not work
  } catch(e){
  	makeArray = function(array, results) {
  		var ret = results || [];
  
  		if ( toString.call(array) === "[object Array]" ) {
  			Array.prototype.push.apply( ret, array );
  		} else {
  			if ( typeof array.length === "number" ) {
  				for ( var i = 0, l = array.length; i < l; i++ ) {
  					ret.push( array[i] );
  				}
  			} else {
  				for ( var i = 0; array[i]; i++ ) {
  					ret.push( array[i] );
  				}
  			}
  		}
  
  		return ret;
  	};
  }
  
  // Check to see if the browser returns elements by name when
  // querying by getElementById (and provide a workaround)
  (function(){
  	// We're going to inject a fake input element with a specified name
  	var form = document.createElement("form"),
  		id = "script" + (new Date).getTime();
  	form.innerHTML = "<input name='" + id + "'/>";
  
  	// Inject it into the root element, check its status, and remove it quickly
  	var root = document.documentElement;
  	root.insertBefore( form, root.firstChild );
  
  	// The workaround has to do additional checks after a getElementById
  	// Which slows things down for other browsers (hence the branching)
  	if ( !!document.getElementById( id ) ) {
  		Expr.find.ID = function(match, context){
  			if ( context.getElementById ) {
  				var m = context.getElementById(match[1]);
  				return m ? m.id === match[1] || m.getAttributeNode && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
  			}
  		};
  
  		Expr.filter.ID = function(elem, match){
  			var node = elem.getAttributeNode && elem.getAttributeNode("id");
  			return elem.nodeType === 1 && node && node.nodeValue === match;
  		};
  	}
  
  	root.removeChild( form );
  })();
  
  (function(){
  	// Check to see if the browser returns only elements
  	// when doing getElementsByTagName("*")
  
  	// Create a fake element
  	var div = document.createElement("div");
  	div.appendChild( document.createComment("") );
  
  	// Make sure no comments are found
  	if ( div.getElementsByTagName("*").length > 0 ) {
  		Expr.find.TAG = function(match, context){
  			var results = context.getElementsByTagName(match[1]);
  
  			// Filter out possible comments
  			if ( match[1] === "*" ) {
  				var tmp = [];
  
  				for ( var i = 0; results[i]; i++ ) {
  					if ( results[i].nodeType === 1 ) {
  						tmp.push( results[i] );
  					}
  				}
  
  				results = tmp;
  			}
  
  			return results;
  		};
  	}
  
  	// Check to see if an attribute returns normalized href attributes
  	div.innerHTML = "<a href='#'></a>";
  	if ( div.firstChild.getAttribute("href") !== "#" ) {
  		Expr.attrHandle.href = function(elem){
  			return elem.getAttribute("href", 2);
  		};
  	}
  })();
  
  if ( document.querySelectorAll ) (function(){
  	var oldSizzle = Sizzle;
  	
  	Sizzle = function(query, context, extra, seed){
  		context = context || document;
  
  		if ( !seed && context.nodeType === 9 ) {
  			try {
  				return makeArray( context.querySelectorAll(query), extra );
  			} catch(e){}
  		}
  		
  		return oldSizzle(query, context, extra, seed);
  	};
  
  	Sizzle.find = oldSizzle.find;
  	Sizzle.filter = oldSizzle.filter;
  	Sizzle.selectors = oldSizzle.selectors;
  	Sizzle.matches = oldSizzle.matches;
  })();
  
  if ( document.documentElement.getElementsByClassName ) {
  	Expr.order.splice(1, 0, "CLASS");
  	Expr.find.CLASS = function(match, context) {
  		return context.getElementsByClassName(match[1]);
  	};
  }
  
  function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
  	for ( var i = 0, l = checkSet.length; i < l; i++ ) {
  		var elem = checkSet[i];
  		if ( elem ) {
  			elem = elem[dir];
  			var match = false;
  
  			while ( elem && elem.nodeType ) {
  				var done = elem[doneName];
  				if ( done ) {
  					match = checkSet[ done ];
  					break;
  				}
  
  				if ( elem.nodeType === 1 && !isXML )
  					elem[doneName] = i;
  
  				if ( elem.nodeName === cur ) {
  					match = elem;
  					break;
  				}
  
  				elem = elem[dir];
  			}
  
  			checkSet[i] = match;
  		}
  	}
  }
  
  function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
  	for ( var i = 0, l = checkSet.length; i < l; i++ ) {
  		var elem = checkSet[i];
  		if ( elem ) {
  			elem = elem[dir];
  			var match = false;
  
  			while ( elem && elem.nodeType ) {
  				if ( elem[doneName] ) {
  					match = checkSet[ elem[doneName] ];
  					break;
  				}
  
  				if ( elem.nodeType === 1 ) {
  					if ( !isXML )
  						elem[doneName] = i;
  
  					if ( typeof cur !== "string" ) {
  						if ( elem === cur ) {
  							match = true;
  							break;
  						}
  
  					} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
  						match = elem;
  						break;
  					}
  				}
  
  				elem = elem[dir];
  			}
  
  			checkSet[i] = match;
  		}
  	}
  }
  
  var contains = document.compareDocumentPosition ?  function(a, b){
  	return a.compareDocumentPosition(b) & 16;
  } : function(a, b){
  	return a !== b && (a.contains ? a.contains(b) : true);
  };
  
  var isXML = function(elem){
  	return elem.documentElement && !elem.body ||
  		elem.tagName && elem.ownerDocument && !elem.ownerDocument.body;
  };
  
  // EXPOSE
  jQuery.find = Sizzle;
  jQuery.filter = Sizzle.filter;
  jQuery.expr = Sizzle.selectors;
  jQuery.expr[":"] = jQuery.expr.filters;
  
  Sizzle.selectors.filters.hidden = function(elem){
  	return "hidden" === elem.type ||
  		jQuery.css(elem, "display") === "none" ||
  		jQuery.css(elem, "visibility") === "hidden";
  };
  
  Sizzle.selectors.filters.visible = function(elem){
  	return "hidden" !== elem.type &&
  		jQuery.css(elem, "display") !== "none" &&
  		jQuery.css(elem, "visibility") !== "hidden";
  };
  
  Sizzle.selectors.filters.animated = function(elem){
  	return jQuery.grep(jQuery.timers, function(fn){
  		return elem === fn.elem;
  	}).length;
  };
  
  jQuery.multiFilter = function( expr, elems, not ) {
  	if ( not ) {
  		expr = ":not(" + expr + ")";
  	}
  
  	return Sizzle.matches(expr, elems);
  };
  
  jQuery.dir = function( elem, dir ){
  	var matched = [], cur = elem[dir];
  	while ( cur && cur != document ) {
  		if ( cur.nodeType == 1 )
  			matched.push( cur );
  		cur = cur[dir];
  	}
  	return matched;
  };
  
  jQuery.nth = function(cur, result, dir, elem){
  	result = result || 1;
  	var num = 0;
  
  	for ( ; cur; cur = cur[dir] )
  		if ( cur.nodeType == 1 && ++num == result )
  			break;
  
  	return cur;
  };
  
  jQuery.sibling = function(n, elem){
  	var r = [];
  
  	for ( ; n; n = n.nextSibling ) {
  		if ( n.nodeType == 1 && n != elem )
  			r.push( n );
  	}
  
  	return r;
  };
  
  return;
  
  window.Sizzle = Sizzle;
  
  })();
  /*
   * A number of helper functions used for managing events.
   * Many of the ideas behind this code originated from
   * Dean Edwards' addEvent library.
   */
  jQuery.event = {
  
  	// Bind an event to an element
  	// Original by Dean Edwards
  	add: function(elem, types, handler, data) {
  		if ( elem.nodeType == 3 || elem.nodeType == 8 )
  			return;
  
  		// For whatever reason, IE has trouble passing the window object
  		// around, causing it to be cloned in the process
  		if ( elem.setInterval && elem != window )
  			elem = window;
  
  		// Make sure that the function being executed has a unique ID
  		if ( !handler.guid )
  			handler.guid = this.guid++;
  
  		// if data is passed, bind to handler
  		if ( data !== undefined ) {
  			// Create temporary function pointer to original handler
  			var fn = handler;
  
  			// Create unique handler function, wrapped around original handler
  			handler = this.proxy( fn );
  
  			// Store data in unique handler
  			handler.data = data;
  		}
  
  		// Init the element's event structure
  		var events = jQuery.data(elem, "events") || jQuery.data(elem, "events", {}),
  			handle = jQuery.data(elem, "handle") || jQuery.data(elem, "handle", function(){
  				// Handle the second event of a trigger and when
  				// an event is called after a page has unloaded
  				return typeof jQuery !== "undefined" && !jQuery.event.triggered ?
  					jQuery.event.handle.apply(arguments.callee.elem, arguments) :
  					undefined;
  			});
  		// Add elem as a property of the handle function
  		// This is to prevent a memory leak with non-native
  		// event in IE.
  		handle.elem = elem;
  
  		// Handle multiple events separated by a space
  		// jQuery(...).bind("mouseover mouseout", fn);
  		jQuery.each(types.split(/\s+/), function(index, type) {
  			// Namespaced event handlers
  			var namespaces = type.split(".");
  			type = namespaces.shift();
  			handler.type = namespaces.slice().sort().join(".");
  
  			// Get the current list of functions bound to this event
  			var handlers = events[type];
  			
  			if ( jQuery.event.specialAll[type] )
  				jQuery.event.specialAll[type].setup.call(elem, data, namespaces);
  
  			// Init the event handler queue
  			if (!handlers) {
  				handlers = events[type] = {};
  
  				// Check for a special event handler
  				// Only use addEventListener/attachEvent if the special
  				// events handler returns false
  				if ( !jQuery.event.special[type] || jQuery.event.special[type].setup.call(elem, data, namespaces) === false ) {
  					// Bind the global event handler to the element
  					if (elem.addEventListener)
  						elem.addEventListener(type, handle, false);
  					else if (elem.attachEvent)
  						elem.attachEvent("on" + type, handle);
  				}
  			}
  
  			// Add the function to the element's handler list
  			handlers[handler.guid] = handler;
  
  			// Keep track of which events have been used, for global triggering
  			jQuery.event.global[type] = true;
  		});
  
  		// Nullify elem to prevent memory leaks in IE
  		elem = null;
  	},
  
  	guid: 1,
  	global: {},
  
  	// Detach an event or set of events from an element
  	remove: function(elem, types, handler) {
  		// don't do events on text and comment nodes
  		if ( elem.nodeType == 3 || elem.nodeType == 8 )
  			return;
  
  		var events = jQuery.data(elem, "events"), ret, index;
  
  		if ( events ) {
  			// Unbind all events for the element
  			if ( types === undefined || (typeof types === "string" && types.charAt(0) == ".") )
  				for ( var type in events )
  					this.remove( elem, type + (types || "") );
  			else {
  				// types is actually an event object here
  				if ( types.type ) {
  					handler = types.handler;
  					types = types.type;
  				}
  
  				// Handle multiple events seperated by a space
  				// jQuery(...).unbind("mouseover mouseout", fn);
  				jQuery.each(types.split(/\s+/), function(index, type){
  					// Namespaced event handlers
  					var namespaces = type.split(".");
  					type = namespaces.shift();
  					var namespace = RegExp("(^|\\.)" + namespaces.slice().sort().join(".*\\.") + "(\\.|$)");
  
  					if ( events[type] ) {
  						// remove the given handler for the given type
  						if ( handler )
  							delete events[type][handler.guid];
  
  						// remove all handlers for the given type
  						else
  							for ( var handle in events[type] )
  								// Handle the removal of namespaced events
  								if ( namespace.test(events[type][handle].type) )
  									delete events[type][handle];
  									
  						if ( jQuery.event.specialAll[type] )
  							jQuery.event.specialAll[type].teardown.call(elem, namespaces);
  
  						// remove generic event handler if no more handlers exist
  						for ( ret in events[type] ) break;
  						if ( !ret ) {
  							if ( !jQuery.event.special[type] || jQuery.event.special[type].teardown.call(elem, namespaces) === false ) {
  								if (elem.removeEventListener)
  									elem.removeEventListener(type, jQuery.data(elem, "handle"), false);
  								else if (elem.detachEvent)
  									elem.detachEvent("on" + type, jQuery.data(elem, "handle"));
  							}
  							ret = null;
  							delete events[type];
  						}
  					}
  				});
  			}
  
  			// Remove the expando if it's no longer used
  			for ( ret in events ) break;
  			if ( !ret ) {
  				var handle = jQuery.data( elem, "handle" );
  				if ( handle ) handle.elem = null;
  				jQuery.removeData( elem, "events" );
  				jQuery.removeData( elem, "handle" );
  			}
  		}
  	},
  
  	// bubbling is internal
  	trigger: function( event, data, elem, bubbling ) {
  		// Event object or event type
  		var type = event.type || event;
  
  		if( !bubbling ){
  			event = typeof event === "object" ?
  				// jQuery.Event object
  				event[expando] ? event :
  				// Object literal
  				jQuery.extend( jQuery.Event(type), event ) :
  				// Just the event type (string)
  				jQuery.Event(type);
  
  			if ( type.indexOf("!") >= 0 ) {
  				event.type = type = type.slice(0, -1);
  				event.exclusive = true;
  			}
  
  			// Handle a global trigger
  			if ( !elem ) {
  				// Don't bubble custom events when global (to avoid too much overhead)
  				event.stopPropagation();
  				// Only trigger if we've ever bound an event for it
  				if ( this.global[type] )
  					jQuery.each( jQuery.cache, function(){
  						if ( this.events && this.events[type] )
  							jQuery.event.trigger( event, data, this.handle.elem );
  					});
  			}
  
  			// Handle triggering a single element
  
  			// don't do events on text and comment nodes
  			if ( !elem || elem.nodeType == 3 || elem.nodeType == 8 )
  				return undefined;
  			
  			// Clean up in case it is reused
  			event.result = undefined;
  			event.target = elem;
  			
  			// Clone the incoming data, if any
  			data = jQuery.makeArray(data);
  			data.unshift( event );
  		}
  
  		event.currentTarget = elem;
  
  		// Trigger the event, it is assumed that "handle" is a function
  		var handle = jQuery.data(elem, "handle");
  		if ( handle )
  			handle.apply( elem, data );
  
  		// Handle triggering native .onfoo handlers (and on links since we don't call .click() for links)
  		if ( (!elem[type] || (jQuery.nodeName(elem, 'a') && type == "click")) && elem["on"+type] && elem["on"+type].apply( elem, data ) === false )
  			event.result = false;
  
  		// Trigger the native events (except for clicks on links)
  		if ( !bubbling && elem[type] && !event.isDefaultPrevented() && !(jQuery.nodeName(elem, 'a') && type == "click") ) {
  			this.triggered = true;
  			try {
  				elem[ type ]();
  			// prevent IE from throwing an error for some hidden elements
  			} catch (e) {}
  		}
  
  		this.triggered = false;
  
  		if ( !event.isPropagationStopped() ) {
  			var parent = elem.parentNode || elem.ownerDocument;
  			if ( parent )
  				jQuery.event.trigger(event, data, parent, true);
  		}
  	},
  
  	handle: function(event) {
  		// returned undefined or false
  		var all, handlers;
  
  		event = arguments[0] = jQuery.event.fix( event || window.event );
  
  		// Namespaced event handlers
  		var namespaces = event.type.split(".");
  		event.type = namespaces.shift();
  
  		// Cache this now, all = true means, any handler
  		all = !namespaces.length && !event.exclusive;
  		
  		var namespace = RegExp("(^|\\.)" + namespaces.slice().sort().join(".*\\.") + "(\\.|$)");
  
  		handlers = ( jQuery.data(this, "events") || {} )[event.type];
  
  		for ( var j in handlers ) {
  			var handler = handlers[j];
  
  			// Filter the functions by class
  			if ( all || namespace.test(handler.type) ) {
  				// Pass in a reference to the handler function itself
  				// So that we can later remove it
  				event.handler = handler;
  				event.data = handler.data;
  
  				var ret = handler.apply(this, arguments);
  
  				if( ret !== undefined ){
  					event.result = ret;
  					if ( ret === false ) {
  						event.preventDefault();
  						event.stopPropagation();
  					}
  				}
  
  				if( event.isImmediatePropagationStopped() )
  					break;
  
  			}
  		}
  	},
  
  	props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
  
  	fix: function(event) {
  		if ( event[expando] )
  			return event;
  
  		// store a copy of the original event object
  		// and "clone" to set read-only properties
  		var originalEvent = event;
  		event = jQuery.Event( originalEvent );
  
  		for ( var i = this.props.length, prop; i; ){
  			prop = this.props[ --i ];
  			event[ prop ] = originalEvent[ prop ];
  		}
  
  		// Fix target property, if necessary
  		if ( !event.target )
  			event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either
  
  		// check if target is a textnode (safari)
  		if ( event.target.nodeType == 3 )
  			event.target = event.target.parentNode;
  
  		// Add relatedTarget, if necessary
  		if ( !event.relatedTarget && event.fromElement )
  			event.relatedTarget = event.fromElement == event.target ? event.toElement : event.fromElement;
  
  		// Calculate pageX/Y if missing and clientX/Y available
  		if ( event.pageX == null && event.clientX != null ) {
  			var doc = document.documentElement, body = document.body;
  			event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0);
  			event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0);
  		}
  
  		// Add which for key events
  		if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) )
  			event.which = event.charCode || event.keyCode;
  
  		// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
  		if ( !event.metaKey && event.ctrlKey )
  			event.metaKey = event.ctrlKey;
  
  		// Add which for click: 1 == left; 2 == middle; 3 == right
  		// Note: button is not normalized, so don't use it
  		if ( !event.which && event.button )
  			event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
  
  		return event;
  	},
  
  	proxy: function( fn, proxy ){
  		proxy = proxy || function(){ return fn.apply(this, arguments); };
  		// Set the guid of unique handler to the same of original handler, so it can be removed
  		proxy.guid = fn.guid = fn.guid || proxy.guid || this.guid++;
  		// So proxy can be declared as an argument
  		return proxy;
  	},
  
  	special: {
  		ready: {
  			// Make sure the ready event is setup
  			setup: bindReady,
  			teardown: function() {}
  		}
  	},
  	
  	specialAll: {
  		live: {
  			setup: function( selector, namespaces ){
  				jQuery.event.add( this, namespaces[0], liveHandler );
  			},
  			teardown:  function( namespaces ){
  				if ( namespaces.length ) {
  					var remove = 0, name = RegExp("(^|\\.)" + namespaces[0] + "(\\.|$)");
  					
  					jQuery.each( (jQuery.data(this, "events").live || {}), function(){
  						if ( name.test(this.type) )
  							remove++;
  					});
  					
  					if ( remove < 1 )
  						jQuery.event.remove( this, namespaces[0], liveHandler );
  				}
  			}
  		}
  	}
  };
  
  jQuery.Event = function( src ){
  	// Allow instantiation without the 'new' keyword
  	if( !this.preventDefault )
  		return new jQuery.Event(src);
  	
  	// Event object
  	if( src && src.type ){
  		this.originalEvent = src;
  		this.type = src.type;
  		this.timeStamp = src.timeStamp;
  	// Event type
  	}else
  		this.type = src;
  
  	if( !this.timeStamp )
  		this.timeStamp = now();
  	
  	// Mark it as fixed
  	this[expando] = true;
  };
  
  function returnFalse(){
  	return false;
  }
  function returnTrue(){
  	return true;
  }
  
  // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
  // http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
  jQuery.Event.prototype = {
  	preventDefault: function() {
  		this.isDefaultPrevented = returnTrue;
  
  		var e = this.originalEvent;
  		if( !e )
  			return;
  		// if preventDefault exists run it on the original event
  		if (e.preventDefault)
  			e.preventDefault();
  		// otherwise set the returnValue property of the original event to false (IE)
  		e.returnValue = false;
  	},
  	stopPropagation: function() {
  		this.isPropagationStopped = returnTrue;
  
  		var e = this.originalEvent;
  		if( !e )
  			return;
  		// if stopPropagation exists run it on the original event
  		if (e.stopPropagation)
  			e.stopPropagation();
  		// otherwise set the cancelBubble property of the original event to true (IE)
  		e.cancelBubble = true;
  	},
  	stopImmediatePropagation:function(){
  		this.isImmediatePropagationStopped = returnTrue;
  		this.stopPropagation();
  	},
  	isDefaultPrevented: returnFalse,
  	isPropagationStopped: returnFalse,
  	isImmediatePropagationStopped: returnFalse
  };
  // Checks if an event happened on an element within another element
  // Used in jQuery.event.special.mouseenter and mouseleave handlers
  var withinElement = function(event) {
  	// Check if mouse(over|out) are still within the same parent element
  	var parent = event.relatedTarget;
  	// Traverse up the tree
  	while ( parent && parent != this )
  		try { parent = parent.parentNode; }
  		catch(e) { parent = this; }
  	
  	if( parent != this ){
  		// set the correct event type
  		event.type = event.data;
  		// handle event if we actually just moused on to a non sub-element
  		jQuery.event.handle.apply( this, arguments );
  	}
  };
  	
  jQuery.each({ 
  	mouseover: 'mouseenter', 
  	mouseout: 'mouseleave'
  }, function( orig, fix ){
  	jQuery.event.special[ fix ] = {
  		setup: function(){
  			jQuery.event.add( this, orig, withinElement, fix );
  		},
  		teardown: function(){
  			jQuery.event.remove( this, orig, withinElement );
  		}
  	};			   
  });
  
  jQuery.fn.extend({
  	bind: function( type, data, fn ) {
  		return type == "unload" ? this.one(type, data, fn) : this.each(function(){
  			jQuery.event.add( this, type, fn || data, fn && data );
  		});
  	},
  
  	one: function( type, data, fn ) {
  		var one = jQuery.event.proxy( fn || data, function(event) {
  			jQuery(this).unbind(event, one);
  			return (fn || data).apply( this, arguments );
  		});
  		return this.each(function(){
  			jQuery.event.add( this, type, one, fn && data);
  		});
  	},
  
  	unbind: function( type, fn ) {
  		return this.each(function(){
  			jQuery.event.remove( this, type, fn );
  		});
  	},
  
  	trigger: function( type, data ) {
  		return this.each(function(){
  			jQuery.event.trigger( type, data, this );
  		});
  	},
  
  	triggerHandler: function( type, data ) {
  		if( this[0] ){
  			var event = jQuery.Event(type);
  			event.preventDefault();
  			event.stopPropagation();
  			jQuery.event.trigger( event, data, this[0] );
  			return event.result;
  		}		
  	},
  
  	toggle: function( fn ) {
  		// Save reference to arguments for access in closure
  		var args = arguments, i = 1;
  
  		// link all the functions, so any of them can unbind this click handler
  		while( i < args.length )
  			jQuery.event.proxy( fn, args[i++] );
  
  		return this.click( jQuery.event.proxy( fn, function(event) {
  			// Figure out which function to execute
  			this.lastToggle = ( this.lastToggle || 0 ) % i;
  
  			// Make sure that clicks stop
  			event.preventDefault();
  
  			// and execute the function
  			return args[ this.lastToggle++ ].apply( this, arguments ) || false;
  		}));
  	},
  
  	hover: function(fnOver, fnOut) {
  		return this.mouseenter(fnOver).mouseleave(fnOut);
  	},
  
  	ready: function(fn) {
  		// Attach the listeners
  		bindReady();
  
  		// If the DOM is already ready
  		if ( jQuery.isReady )
  			// Execute the function immediately
  			fn.call( document, jQuery );
  
  		// Otherwise, remember the function for later
  		else
  			// Add the function to the wait list
  			jQuery.readyList.push( fn );
  
  		return this;
  	},
  	
  	live: function( type, fn ){
  		var proxy = jQuery.event.proxy( fn );
  		proxy.guid += this.selector + type;
  
  		jQuery(document).bind( liveConvert(type, this.selector), this.selector, proxy );
  
  		return this;
  	},
  	
  	die: function( type, fn ){
  		jQuery(document).unbind( liveConvert(type, this.selector), fn ? { guid: fn.guid + this.selector + type } : null );
  		return this;
  	}
  });
  
  function liveHandler( event ){
  	var check = RegExp("(^|\\.)" + event.type + "(\\.|$)"),
  		stop = true,
  		elems = [];
  
  	jQuery.each(jQuery.data(this, "events").live || [], function(i, fn){
  		if ( check.test(fn.type) ) {
  			var elem = jQuery(event.target).closest(fn.data)[0];
  			if ( elem )
  				elems.push({ elem: elem, fn: fn });
  		}
  	});
  
  	jQuery.each(elems, function(){
  		if ( !event.isImmediatePropagationStopped() &&
  			this.fn.call(this.elem, event, this.fn.data) === false )
  				stop = false;
  	});
  
  	return stop;
  }
  
  function liveConvert(type, selector){
  	return ["live", type, selector.replace(/\./g, "`").replace(/ /g, "|")].join(".");
  }
  
  jQuery.extend({
  	isReady: false,
  	readyList: [],
  	// Handle when the DOM is ready
  	ready: function() {
  		// Make sure that the DOM is not already loaded
  		if ( !jQuery.isReady ) {
  			// Remember that the DOM is ready
  			jQuery.isReady = true;
  
  			// If there are functions bound, to execute
  			if ( jQuery.readyList ) {
  				// Execute all of them
  				jQuery.each( jQuery.readyList, function(){
  					this.call( document, jQuery );
  				});
  
  				// Reset the list of functions
  				jQuery.readyList = null;
  			}
  
  			// Trigger any bound ready events
  			jQuery(document).triggerHandler("ready");
  		}
  	}
  });
  
  var readyBound = false;
  
  function bindReady(){
  	if ( readyBound ) return;
  	readyBound = true;
  
  	// Mozilla, Opera and webkit nightlies currently support this event
  	if ( document.addEventListener ) {
  		// Use the handy event callback
  		document.addEventListener( "DOMContentLoaded", function(){
  			document.removeEventListener( "DOMContentLoaded", arguments.callee, false );
  			jQuery.ready();
  		}, false );
  
  	// If IE event model is used
  	} else if ( document.attachEvent ) {
  		// ensure firing before onload,
  		// maybe late but safe also for iframes
  		document.attachEvent("onreadystatechange", function(){
  			if ( document.readyState === "complete" ) {
  				document.detachEvent( "onreadystatechange", arguments.callee );
  				jQuery.ready();
  			}
  		});
  
  		// If IE and not an iframe
  		// continually check to see if the document is ready
  		if ( document.documentElement.doScroll && !window.frameElement ) (function(){
  			if ( jQuery.isReady ) return;
  
  			try {
  				// If IE is used, use the trick by Diego Perini
  				// http://javascript.nwbox.com/IEContentLoaded/
  				document.documentElement.doScroll("left");
  			} catch( error ) {
  				setTimeout( arguments.callee, 0 );
  				return;
  			}
  
  			// and execute any waiting functions
  			jQuery.ready();
  		})();
  	}
  
  	// A fallback to window.onload, that will always work
  	jQuery.event.add( window, "load", jQuery.ready );
  }
  
  jQuery.each( ("blur,focus,load,resize,scroll,unload,click,dblclick," +
  	"mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave," +
  	"change,select,submit,keydown,keypress,keyup,error").split(","), function(i, name){
  
  	// Handle event binding
  	jQuery.fn[name] = function(fn){
  		return fn ? this.bind(name, fn) : this.trigger(name);
  	};
  });
  
  // Prevent memory leaks in IE
  // And prevent errors on refresh with events like mouseover in other browsers
  // Window isn't included so as not to unbind existing unload events
  jQuery( window ).bind( 'unload', function(){ 
  	for ( var id in jQuery.cache )
  		// Skip the window
  		if ( id != 1 && jQuery.cache[ id ].handle )
  			jQuery.event.remove( jQuery.cache[ id ].handle.elem );
  }); 
  (function(){
  
  	jQuery.support = {};
  
  	var root = document.documentElement,
  		script = document.createElement("script"),
  		div = document.createElement("div"),
  		id = "script" + (new Date).getTime();
  
  	div.style.display = "none";
  	div.innerHTML = '   <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';
  
  	var all = div.getElementsByTagName("*"),
  		a = div.getElementsByTagName("a")[0];
  
  	// Can't get basic test support
  	if ( !all || !all.length || !a ) {
  		return;
  	}
  
  	jQuery.support = {
  		// IE strips leading whitespace when .innerHTML is used
  		leadingWhitespace: div.firstChild.nodeType == 3,
  		
  		// Make sure that tbody elements aren't automatically inserted
  		// IE will insert them into empty tables
  		tbody: !div.getElementsByTagName("tbody").length,
  		
  		// Make sure that you can get all elements in an <object> element
  		// IE 7 always returns no results
  		objectAll: !!div.getElementsByTagName("object")[0]
  			.getElementsByTagName("*").length,
  		
  		// Make sure that link elements get serialized correctly by innerHTML
  		// This requires a wrapper element in IE
  		htmlSerialize: !!div.getElementsByTagName("link").length,
  		
  		// Get the style information from getAttribute
  		// (IE uses .cssText insted)
  		style: /red/.test( a.getAttribute("style") ),
  		
  		// Make sure that URLs aren't manipulated
  		// (IE normalizes it by default)
  		hrefNormalized: a.getAttribute("href") === "/a",
  		
  		// Make sure that element opacity exists
  		// (IE uses filter instead)
  		opacity: a.style.opacity === "0.5",
  		
  		// Verify style float existence
  		// (IE uses styleFloat instead of cssFloat)
  		cssFloat: !!a.style.cssFloat,
  
  		// Will be defined later
  		scriptEval: false,
  		noCloneEvent: true,
  		boxModel: null
  	};
  	
  	script.type = "text/javascript";
  	try {
  		script.appendChild( document.createTextNode( "window." + id + "=1;" ) );
  	} catch(e){}
  
  	root.insertBefore( script, root.firstChild );
  	
  	// Make sure that the execution of code works by injecting a script
  	// tag with appendChild/createTextNode
  	// (IE doesn't support this, fails, and uses .text instead)
  	if ( window[ id ] ) {
  		jQuery.support.scriptEval = true;
  		delete window[ id ];
  	}
  
  	root.removeChild( script );
  
  	if ( div.attachEvent && div.fireEvent ) {
  		div.attachEvent("onclick", function(){
  			// Cloning a node shouldn't copy over any
  			// bound event handlers (IE does this)
  			jQuery.support.noCloneEvent = false;
  			div.detachEvent("onclick", arguments.callee);
  		});
  		div.cloneNode(true).fireEvent("onclick");
  	}
  
  	// Figure out if the W3C box model works as expected
  	// document.body must exist before we can do this
  	jQuery(function(){
  		var div = document.createElement("div");
  		div.style.width = "1px";
  		div.style.paddingLeft = "1px";
  
  		document.body.appendChild( div );
  		jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;
  		document.body.removeChild( div );
  	});
  })();
  
  var styleFloat = jQuery.support.cssFloat ? "cssFloat" : "styleFloat";
  
  jQuery.props = {
  	"for": "htmlFor",
  	"class": "className",
  	"float": styleFloat,
  	cssFloat: styleFloat,
  	styleFloat: styleFloat,
  	readonly: "readOnly",
  	maxlength: "maxLength",
  	cellspacing: "cellSpacing",
  	rowspan: "rowSpan",
  	tabindex: "tabIndex"
  };
  jQuery.fn.extend({
  	// Keep a copy of the old load
  	_load: jQuery.fn.load,
  
  	load: function( url, params, callback ) {
  		if ( typeof url !== "string" )
  			return this._load( url );
  
  		var off = url.indexOf(" ");
  		if ( off >= 0 ) {
  			var selector = url.slice(off, url.length);
  			url = url.slice(0, off);
  		}
  
  		// Default to a GET request
  		var type = "GET";
  
  		// If the second parameter was provided
  		if ( params )
  			// If it's a function
  			if ( jQuery.isFunction( params ) ) {
  				// We assume that it's the callback
  				callback = params;
  				params = null;
  
  			// Otherwise, build a param string
  			} else if( typeof params === "object" ) {
  				params = jQuery.param( params );
  				type = "POST";
  			}
  
  		var self = this;
  
  		// Request the remote document
  		jQuery.ajax({
  			url: url,
  			type: type,
  			dataType: "html",
  			data: params,
  			complete: function(res, status){
  				// If successful, inject the HTML into all the matched elements
  				if ( status == "success" || status == "notmodified" )
  					// See if a selector was specified
  					self.html( selector ?
  						// Create a dummy div to hold the results
  						jQuery("<div/>")
  							// inject the contents of the document in, removing the scripts
  							// to avoid any 'Permission Denied' errors in IE
  							.append(res.responseText.replace(/<script(.|\s)*?\/script>/g, ""))
  
  							// Locate the specified elements
  							.find(selector) :
  
  						// If not, just inject the full result
  						res.responseText );
  
  				if( callback )
  					self.each( callback, [res.responseText, status, res] );
  			}
  		});
  		return this;
  	},
  
  	serialize: function() {
  		return jQuery.param(this.serializeArray());
  	},
  	serializeArray: function() {
  		return this.map(function(){
  			return this.elements ? jQuery.makeArray(this.elements) : this;
  		})
  		.filter(function(){
  			return this.name && !this.disabled &&
  				(this.checked || /select|textarea/i.test(this.nodeName) ||
  					/text|hidden|password/i.test(this.type));
  		})
  		.map(function(i, elem){
  			var val = jQuery(this).val();
  			return val == null ? null :
  				jQuery.isArray(val) ?
  					jQuery.map( val, function(val, i){
  						return {name: elem.name, value: val};
  					}) :
  					{name: elem.name, value: val};
  		}).get();
  	}
  });
  
  // Attach a bunch of functions for handling common AJAX events
  jQuery.each( "ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","), function(i,o){
  	jQuery.fn[o] = function(f){
  		return this.bind(o, f);
  	};
  });
  
  var jsc = now();
  
  jQuery.extend({
    
  	get: function( url, data, callback, type ) {
  		// shift arguments if data argument was ommited
  		if ( jQuery.isFunction( data ) ) {
  			callback = data;
  			data = null;
  		}
  
  		return jQuery.ajax({
  			type: "GET",
  			url: url,
  			data: data,
  			success: callback,
  			dataType: type
  		});
  	},
  
  	getScript: function( url, callback ) {
  		return jQuery.get(url, null, callback, "script");
  	},
  
  	getJSON: function( url, data, callback ) {
  		return jQuery.get(url, data, callback, "json");
  	},
  
  	post: function( url, data, callback, type ) {
  		if ( jQuery.isFunction( data ) ) {
  			callback = data;
  			data = {};
  		}
  
  		return jQuery.ajax({
  			type: "POST",
  			url: url,
  			data: data,
  			success: callback,
  			dataType: type
  		});
  	},
  
  	ajaxSetup: function( settings ) {
  		jQuery.extend( jQuery.ajaxSettings, settings );
  	},
  
  	ajaxSettings: {
  		url: location.href,
  		global: true,
  		type: "GET",
  		contentType: "application/x-www-form-urlencoded",
  		processData: true,
  		async: true,
  		/*
  		timeout: 0,
  		data: null,
  		username: null,
  		password: null,
  		*/
  		// Create the request object; Microsoft failed to properly
  		// implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available
  		// This function can be overriden by calling jQuery.ajaxSetup
  		xhr:function(){
  			return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
  		},
  		accepts: {
  			xml: "application/xml, text/xml",
  			html: "text/html",
  			script: "text/javascript, application/javascript",
  			json: "application/json, text/javascript",
  			text: "text/plain",
  			_default: "*/*"
  		}
  	},
  
  	// Last-Modified header cache for next request
  	lastModified: {},
  
  	ajax: function( s ) {
  		// Extend the settings, but re-extend 's' so that it can be
  		// checked again later (in the test suite, specifically)
  		s = jQuery.extend(true, s, jQuery.extend(true, {}, jQuery.ajaxSettings, s));
  
  		var jsonp, jsre = /=\?(&|$)/g, status, data,
  			type = s.type.toUpperCase();
  
  		// convert data if not already a string
  		if ( s.data && s.processData && typeof s.data !== "string" )
  			s.data = jQuery.param(s.data);
  
  		// Handle JSONP Parameter Callbacks
  		if ( s.dataType == "jsonp" ) {
  			if ( type == "GET" ) {
  				if ( !s.url.match(jsre) )
  					s.url += (s.url.match(/\?/) ? "&" : "?") + (s.jsonp || "callback") + "=?";
  			} else if ( !s.data || !s.data.match(jsre) )
  				s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?";
  			s.dataType = "json";
  		}
  
  		// Build temporary JSONP function
  		if ( s.dataType == "json" && (s.data && s.data.match(jsre) || s.url.match(jsre)) ) {
  			jsonp = "jsonp" + jsc++;
  
  			// Replace the =? sequence both in the query string and the data
  			if ( s.data )
  				s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1");
  			s.url = s.url.replace(jsre, "=" + jsonp + "$1");
  
  			// We need to make sure
  			// that a JSONP style response is executed properly
  			s.dataType = "script";
  
  			// Handle JSONP-style loading
  			window[ jsonp ] = function(tmp){
  				data = tmp;
  				success();
  				complete();
  				// Garbage collect
  				window[ jsonp ] = undefined;
  				try{ delete window[ jsonp ]; } catch(e){}
  				if ( head )
  					head.removeChild( script );
  			};
  		}
  
  		if ( s.dataType == "script" && s.cache == null )
  			s.cache = false;
  
  		if ( s.cache === false && type == "GET" ) {
  			var ts = now();
  			// try replacing _= if it is there
  			var ret = s.url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + ts + "$2");
  			// if nothing was replaced, add timestamp to the end
  			s.url = ret + ((ret == s.url) ? (s.url.match(/\?/) ? "&" : "?") + "_=" + ts : "");
  		}
  
  		// If data is available, append data to url for get requests
  		if ( s.data && type == "GET" ) {
  			s.url += (s.url.match(/\?/) ? "&" : "?") + s.data;
  
  			// IE likes to send both get and post data, prevent this
  			s.data = null;
  		}
  
  		// Watch for a new set of requests
  		if ( s.global && ! jQuery.active++ )
  			jQuery.event.trigger( "ajaxStart" );
  
  		// Matches an absolute URL, and saves the domain
  		var parts = /^(\w+:)?\/\/([^\/?#]+)/.exec( s.url );
  
  		// If we're requesting a remote document
  		// and trying to load JSON or Script with a GET
  		if ( s.dataType == "script" && type == "GET" && parts
  			&& ( parts[1] && parts[1] != location.protocol || parts[2] != location.host )){
  
  			var head = document.getElementsByTagName("head")[0];
  			var script = document.createElement("script");
  			script.src = s.url;
  			if (s.scriptCharset)
  				script.charset = s.scriptCharset;
  
  			// Handle Script loading
  			if ( !jsonp ) {
  				var done = false;
  
  				// Attach handlers for all browsers
  				script.onload = script.onreadystatechange = function(){
  					if ( !done && (!this.readyState ||
  							this.readyState == "loaded" || this.readyState == "complete") ) {
  						done = true;
  						success();
  						complete();
  						head.removeChild( script );
  					}
  				};
  			}
  
  			head.appendChild(script);
  
  			// We handle everything using the script element injection
  			return undefined;
  		}
  
  		var requestDone = false;
  
  		// Create the request object
  		var xhr = s.xhr();
  
  		// Open the socket
  		// Passing null username, generates a login popup on Opera (#2865)
  		if( s.username )
  			xhr.open(type, s.url, s.async, s.username, s.password);
  		else
  			xhr.open(type, s.url, s.async);
  
  		// Need an extra try/catch for cross domain requests in Firefox 3
  		try {
  			// Set the correct header, if data is being sent
  			if ( s.data )
  				xhr.setRequestHeader("Content-Type", s.contentType);
  
  			// Set the If-Modified-Since header, if ifModified mode.
  			if ( s.ifModified )
  				xhr.setRequestHeader("If-Modified-Since",
  					jQuery.lastModified[s.url] || "Thu, 01 Jan 1970 00:00:00 GMT" );
  
  			// Set header so the called script knows that it's an XMLHttpRequest
  			xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
  
  			// Set the Accepts header for the server, depending on the dataType
  			xhr.setRequestHeader("Accept", s.dataType && s.accepts[ s.dataType ] ?
  				s.accepts[ s.dataType ] + ", */*" :
  				s.accepts._default );
  		} catch(e){}
  
  		// Allow custom headers/mimetypes and early abort
  		if ( s.beforeSend && s.beforeSend(xhr, s) === false ) {
  			// Handle the global AJAX counter
  			if ( s.global && ! --jQuery.active )
  				jQuery.event.trigger( "ajaxStop" );
  			// close opended socket
  			xhr.abort();
  			return false;
  		}
  
  		if ( s.global )
  			jQuery.event.trigger("ajaxSend", [xhr, s]);
  
  		// Wait for a response to come back
  		var onreadystatechange = function(isTimeout){
  			// The request was aborted, clear the interval and decrement jQuery.active
  			if (xhr.readyState == 0) {
  				if (ival) {
  					// clear poll interval
  					clearInterval(ival);
  					ival = null;
  					// Handle the global AJAX counter
  					if ( s.global && ! --jQuery.active )
  						jQuery.event.trigger( "ajaxStop" );
  				}
  			// The transfer is complete and the data is available, or the request timed out
  			} else if ( !requestDone && xhr && (xhr.readyState == 4 || isTimeout == "timeout") ) {
  				requestDone = true;
  
  				// clear poll interval
  				if (ival) {
  					clearInterval(ival);
  					ival = null;
  				}
  
  				status = isTimeout == "timeout" ? "timeout" :
  					!jQuery.httpSuccess( xhr ) ? "error" :
  					s.ifModified && jQuery.httpNotModified( xhr, s.url ) ? "notmodified" :
  					"success";
  
  				if ( status == "success" ) {
  					// Watch for, and catch, XML document parse errors
  					try {
  						// process the data (runs the xml through httpData regardless of callback)
  						data = jQuery.httpData( xhr, s.dataType, s );
  					} catch(e) {
  						status = "parsererror";
  					}
  				}
  
  				// Make sure that the request was successful or notmodified
  				if ( status == "success" ) {
  					// Cache Last-Modified header, if ifModified mode.
  					var modRes;
  					try {
  						modRes = xhr.getResponseHeader("Last-Modified");
  					} catch(e) {} // swallow exception thrown by FF if header is not available
  
  					if ( s.ifModified && modRes )
  						jQuery.lastModified[s.url] = modRes;
  
  					// JSONP handles its own success callback
  					if ( !jsonp )
  						success();
  				} else
  					jQuery.handleError(s, xhr, status);
  
  				// Fire the complete handlers
  				complete();
  
  				// Stop memory leaks
  				if ( s.async )
  					xhr = null;
  			}
  		};
  
  		if ( s.async ) {
  			// don't attach the handler to the request, just poll it instead
  			var ival = setInterval(onreadystatechange, 13);
  
  			// Timeout checker
  			if ( s.timeout > 0 )
  				setTimeout(function(){
  					// Check to see if the request is still happening
  					if ( xhr ) {
  						if( !requestDone )
  							onreadystatechange( "timeout" );
  
  						// Cancel the request
  						if ( xhr )
  							xhr.abort();
  					}
  				}, s.timeout);
  		}
  
  		// Send the data
  		try {
  			xhr.send(s.data);
  		} catch(e) {
  			jQuery.handleError(s, xhr, null, e);
  		}
  
  		// firefox 1.5 doesn't fire statechange for sync requests
  		if ( !s.async )
  			onreadystatechange();
  
  		function success(){
  			// If a local callback was specified, fire it and pass it the data
  			if ( s.success )
  				s.success( data, status );
  
  			// Fire the global callback
  			if ( s.global )
  				jQuery.event.trigger( "ajaxSuccess", [xhr, s] );
  		}
  
  		function complete(){
  			// Process result
  			if ( s.complete )
  				s.complete(xhr, status);
  
  			// The request was completed
  			if ( s.global )
  				jQuery.event.trigger( "ajaxComplete", [xhr, s] );
  
  			// Handle the global AJAX counter
  			if ( s.global && ! --jQuery.active )
  				jQuery.event.trigger( "ajaxStop" );
  		}
  
  		// return XMLHttpRequest to allow aborting the request etc.
  		return xhr;
  	},
  
  	handleError: function( s, xhr, status, e ) {
  		// If a local callback was specified, fire it
  		if ( s.error ) s.error( xhr, status, e );
  
  		// Fire the global callback
  		if ( s.global )
  			jQuery.event.trigger( "ajaxError", [xhr, s, e] );
  	},
  
  	// Counter for holding the number of active queries
  	active: 0,
  
  	// Determines if an XMLHttpRequest was successful or not
  	httpSuccess: function( xhr ) {
  		try {
  			// IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450
  			return !xhr.status && location.protocol == "file:" ||
  				( xhr.status >= 200 && xhr.status < 300 ) || xhr.status == 304 || xhr.status == 1223;
  		} catch(e){}
  		return false;
  	},
  
  	// Determines if an XMLHttpRequest returns NotModified
  	httpNotModified: function( xhr, url ) {
  		try {
  			var xhrRes = xhr.getResponseHeader("Last-Modified");
  
  			// Firefox always returns 200. check Last-Modified date
  			return xhr.status == 304 || xhrRes == jQuery.lastModified[url];
  		} catch(e){}
  		return false;
  	},
  
  	httpData: function( xhr, type, s ) {
  		var ct = xhr.getResponseHeader("content-type"),
  			xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0,
  			data = xml ? xhr.responseXML : xhr.responseText;
  
  		if ( xml && data.documentElement.tagName == "parsererror" )
  			throw "parsererror";
  			
  		// Allow a pre-filtering function to sanitize the response
  		// s != null is checked to keep backwards compatibility
  		if( s && s.dataFilter )
  			data = s.dataFilter( data, type );
  
  		// The filter can actually parse the response
  		if( typeof data === "string" ){
  
  			// If the type is "script", eval it in global context
  			if ( type == "script" )
  				jQuery.globalEval( data );
  
  			// Get the JavaScript object, if JSON is used.
  			if ( type == "json" )
  				data = window["eval"]("(" + data + ")");
  		}
  		
  		return data;
  	},
  
  	// Serialize an array of form elements or a set of
  	// key/values into a query string
  	param: function( a ) {
  		var s = [ ];
  
  		function add( key, value ){
  			s[ s.length ] = encodeURIComponent(key) + '=' + encodeURIComponent(value);
  		};
  
  		// If an array was passed in, assume that it is an array
  		// of form elements
  		if ( jQuery.isArray(a) || a.jquery )
  			// Serialize the form elements
  			jQuery.each( a, function(){
  				add( this.name, this.value );
  			});
  
  		// Otherwise, assume that it's an object of key/value pairs
  		else
  			// Serialize the key/values
  			for ( var j in a )
  				// If the value is an array then the key names need to be repeated
  				if ( jQuery.isArray(a[j]) )
  					jQuery.each( a[j], function(){
  						add( j, this );
  					});
  				else
  					add( j, jQuery.isFunction(a[j]) ? a[j]() : a[j] );
  
  		// Return the resulting serialization
  		return s.join("&").replace(/%20/g, "+");
  	}
  
  });
  var elemdisplay = {},
  	fxAttrs = [
  		// height animations
  		[ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
  		// width animations
  		[ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
  		// opacity animations
  		[ "opacity" ]
  	];
  
  function genFx( type, num ){
  	var obj = {};
  	jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function(){
  		obj[ this ] = type;
  	});
  	return obj;
  }
  
  jQuery.fn.extend({
  	show: function(speed,callback){
  		if ( speed ) {
  			return this.animate( genFx("show", 3), speed, callback);
  		} else {
  			for ( var i = 0, l = this.length; i < l; i++ ){
  				var old = jQuery.data(this[i], "olddisplay");
  				
  				this[i].style.display = old || "";
  				
  				if ( jQuery.css(this[i], "display") === "none" ) {
  					var tagName = this[i].tagName, display;
  					
  					if ( elemdisplay[ tagName ] ) {
  						display = elemdisplay[ tagName ];
  					} else {
  						var elem = jQuery("<" + tagName + " />").appendTo("body");
  						
  						display = elem.css("display");
  						if ( display === "none" )
  							display = "block";
  						
  						elem.remove();
  						
  						elemdisplay[ tagName ] = display;
  					}
  					
  					this[i].style.display = jQuery.data(this[i], "olddisplay", display);
  				}
  			}
  			
  			return this;
  		}
  	},
  
  	hide: function(speed,callback){
  		if ( speed ) {
  			return this.animate( genFx("hide", 3), speed, callback);
  		} else {
  			for ( var i = 0, l = this.length; i < l; i++ ){
  				var old = jQuery.data(this[i], "olddisplay");
  				if ( !old && old !== "none" )
  					jQuery.data(this[i], "olddisplay", jQuery.css(this[i], "display"));
  				this[i].style.display = "none";
  			}
  			return this;
  		}
  	},
  
  	// Save the old toggle function
  	_toggle: jQuery.fn.toggle,
  
  	toggle: function( fn, fn2 ){
  		var bool = typeof fn === "boolean";
  
  		return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ?
  			this._toggle.apply( this, arguments ) :
  			fn == null || bool ?
  				this.each(function(){
  					var state = bool ? fn : jQuery(this).is(":hidden");
  					jQuery(this)[ state ? "show" : "hide" ]();
  				}) :
  				this.animate(genFx("toggle", 3), fn, fn2);
  	},
  
  	fadeTo: function(speed,to,callback){
  		return this.animate({opacity: to}, speed, callback);
  	},
  
  	animate: function( prop, speed, easing, callback ) {
  		var optall = jQuery.speed(speed, easing, callback);
  
  		return this[ optall.queue === false ? "each" : "queue" ](function(){
  		
  			var opt = jQuery.extend({}, optall), p,
  				hidden = this.nodeType == 1 && jQuery(this).is(":hidden"),
  				self = this;
  	
  			for ( p in prop ) {
  				if ( prop[p] == "hide" && hidden || prop[p] == "show" && !hidden )
  					return opt.complete.call(this);
  
  				if ( ( p == "height" || p == "width" ) && this.style ) {
  					// Store display property
  					opt.display = jQuery.css(this, "display");
  
  					// Make sure that nothing sneaks out
  					opt.overflow = this.style.overflow;
  				}
  			}
  
  			if ( opt.overflow != null )
  				this.style.overflow = "hidden";
  
  			opt.curAnim = jQuery.extend({}, prop);
  
  			jQuery.each( prop, function(name, val){
  				var e = new jQuery.fx( self, opt, name );
  
  				if ( /toggle|show|hide/.test(val) )
  					e[ val == "toggle" ? hidden ? "show" : "hide" : val ]( prop );
  				else {
  					var parts = val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),
  						start = e.cur(true) || 0;
  
  					if ( parts ) {
  						var end = parseFloat(parts[2]),
  							unit = parts[3] || "px";
  
  						// We need to compute starting value
  						if ( unit != "px" ) {
  							self.style[ name ] = (end || 1) + unit;
  							start = ((end || 1) / e.cur(true)) * start;
  							self.style[ name ] = start + unit;
  						}
  
  						// If a +=/-= token was provided, we're doing a relative animation
  						if ( parts[1] )
  							end = ((parts[1] == "-=" ? -1 : 1) * end) + start;
  
  						e.custom( start, end, unit );
  					} else
  						e.custom( start, val, "" );
  				}
  			});
  
  			// For JS strict compliance
  			return true;
  		});
  	},
  
  	stop: function(clearQueue, gotoEnd){
  		var timers = jQuery.timers;
  
  		if (clearQueue)
  			this.queue([]);
  
  		this.each(function(){
  			// go in reverse order so anything added to the queue during the loop is ignored
  			for ( var i = timers.length - 1; i >= 0; i-- )
  				if ( timers[i].elem == this ) {
  					if (gotoEnd)
  						// force the next step to be the last
  						timers[i](true);
  					timers.splice(i, 1);
  				}
  		});
  
  		// start the next in the queue if the last step wasn't forced
  		if (!gotoEnd)
  			this.dequeue();
  
  		return this;
  	}
  
  });
  
  // Generate shortcuts for custom animations
  jQuery.each({
  	slideDown: genFx("show", 1),
  	slideUp: genFx("hide", 1),
  	slideToggle: genFx("toggle", 1),
  	fadeIn: { opacity: "show" },
  	fadeOut: { opacity: "hide" }
  }, function( name, props ){
  	jQuery.fn[ name ] = function( speed, callback ){
  		return this.animate( props, speed, callback );
  	};
  });
  
  jQuery.extend({
  
  	speed: function(speed, easing, fn) {
  		var opt = typeof speed === "object" ? speed : {
  			complete: fn || !fn && easing ||
  				jQuery.isFunction( speed ) && speed,
  			duration: speed,
  			easing: fn && easing || easing && !jQuery.isFunction(easing) && easing
  		};
  
  		opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
  			jQuery.fx.speeds[opt.duration] || jQuery.fx.speeds._default;
  
  		// Queueing
  		opt.old = opt.complete;
  		opt.complete = function(){
  			if ( opt.queue !== false )
  				jQuery(this).dequeue();
  			if ( jQuery.isFunction( opt.old ) )
  				opt.old.call( this );
  		};
  
  		return opt;
  	},
  
  	easing: {
  		linear: function( p, n, firstNum, diff ) {
  			return firstNum + diff * p;
  		},
  		swing: function( p, n, firstNum, diff ) {
  			return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;
  		}
  	},
  
  	timers: [],
  	timerId: null,
  
  	fx: function( elem, options, prop ){
  		this.options = options;
  		this.elem = elem;
  		this.prop = prop;
  
  		if ( !options.orig )
  			options.orig = {};
  	}
  
  });
  
  jQuery.fx.prototype = {
  
  	// Simple function for setting a style value
  	update: function(){
  		if ( this.options.step )
  			this.options.step.call( this.elem, this.now, this );
  
  		(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );
  
  		// Set display property to block for height/width animations
  		if ( ( this.prop == "height" || this.prop == "width" ) && this.elem.style )
  			this.elem.style.display = "block";
  	},
  
  	// Get the current size
  	cur: function(force){
  		if ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) )
  			return this.elem[ this.prop ];
  
  		var r = parseFloat(jQuery.css(this.elem, this.prop, force));
  		return r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0;
  	},
  
  	// Start an animation from one number to another
  	custom: function(from, to, unit){
  		this.startTime = now();
  		this.start = from;
  		this.end = to;
  		this.unit = unit || this.unit || "px";
  		this.now = this.start;
  		this.pos = this.state = 0;
  
  		var self = this;
  		function t(gotoEnd){
  			return self.step(gotoEnd);
  		}
  
  		t.elem = this.elem;
  
  		jQuery.timers.push(t);
  
  		if ( t() && jQuery.timerId == null ) {
  			jQuery.timerId = setInterval(function(){
  				var timers = jQuery.timers;
  
  				for ( var i = 0; i < timers.length; i++ )
  					if ( !timers[i]() )
  						timers.splice(i--, 1);
  
  				if ( !timers.length ) {
  					clearInterval( jQuery.timerId );
  					jQuery.timerId = null;
  				}
  			}, 13);
  		}
  	},
  
  	// Simple 'show' function
  	show: function(){
  		// Remember where we started, so that we can go back to it later
  		this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );
  		this.options.show = true;
  
  		// Begin the animation
  		// Make sure that we start at a small width/height to avoid any
  		// flash of content
  		this.custom(this.prop == "width" || this.prop == "height" ? 1 : 0, this.cur());
  
  		// Start by showing the element
  		jQuery(this.elem).show();
  	},
  
  	// Simple 'hide' function
  	hide: function(){
  		// Remember where we started, so that we can go back to it later
  		this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );
  		this.options.hide = true;
  
  		// Begin the animation
  		this.custom(this.cur(), 0);
  	},
  
  	// Each step of an animation
  	step: function(gotoEnd){
  		var t = now();
  
  		if ( gotoEnd || t >= this.options.duration + this.startTime ) {
  			this.now = this.end;
  			this.pos = this.state = 1;
  			this.update();
  
  			this.options.curAnim[ this.prop ] = true;
  
  			var done = true;
  			for ( var i in this.options.curAnim )
  				if ( this.options.curAnim[i] !== true )
  					done = false;
  
  			if ( done ) {
  				if ( this.options.display != null ) {
  					// Reset the overflow
  					this.elem.style.overflow = this.options.overflow;
  
  					// Reset the display
  					this.elem.style.display = this.options.display;
  					if ( jQuery.css(this.elem, "display") == "none" )
  						this.elem.style.display = "block";
  				}
  
  				// Hide the element if the "hide" operation was done
  				if ( this.options.hide )
  					jQuery(this.elem).hide();
  
  				// Reset the properties, if the item has been hidden or shown
  				if ( this.options.hide || this.options.show )
  					for ( var p in this.options.curAnim )
  						jQuery.attr(this.elem.style, p, this.options.orig[p]);
  			}
  
  			if ( done )
  				// Execute the complete function
  				this.options.complete.call( this.elem );
  
  			return false;
  		} else {
  			var n = t - this.startTime;
  			this.state = n / this.options.duration;
  
  			// Perform the easing function, defaults to swing
  			this.pos = jQuery.easing[this.options.easing || (jQuery.easing.swing ? "swing" : "linear")](this.state, n, 0, 1, this.options.duration);
  			this.now = this.start + ((this.end - this.start) * this.pos);
  
  			// Perform the next step of the animation
  			this.update();
  		}
  
  		return true;
  	}
  
  };
  
  jQuery.extend( jQuery.fx, {
  	speeds:{
  		slow: 600,
   		fast: 200,
   		// Default speed
   		_default: 400
  	},
  	step: {
  
  		opacity: function(fx){
  			jQuery.attr(fx.elem.style, "opacity", fx.now);
  		},
  
  		_default: function(fx){
  			if ( fx.elem.style && fx.elem.style[ fx.prop ] != null )
  				fx.elem.style[ fx.prop ] = fx.now + fx.unit;
  			else
  				fx.elem[ fx.prop ] = fx.now;
  		}
  	}
  });
  if ( document.documentElement["getBoundingClientRect"] )
  	jQuery.fn.offset = function() {
  		if ( !this[0] ) return { top: 0, left: 0 };
  		if ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );
  		var box  = this[0].getBoundingClientRect(), doc = this[0].ownerDocument, body = doc.body, docElem = doc.documentElement,
  			clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,
  			top  = box.top  + (self.pageYOffset || jQuery.boxModel && docElem.scrollTop  || body.scrollTop ) - clientTop,
  			left = box.left + (self.pageXOffset || jQuery.boxModel && docElem.scrollLeft || body.scrollLeft) - clientLeft;
  		return { top: top, left: left };
  	};
  else 
  	jQuery.fn.offset = function() {
  		if ( !this[0] ) return { top: 0, left: 0 };
  		if ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );
  		jQuery.offset.initialized || jQuery.offset.initialize();
  
  		var elem = this[0], offsetParent = elem.offsetParent, prevOffsetParent = elem,
  			doc = elem.ownerDocument, computedStyle, docElem = doc.documentElement,
  			body = doc.body, defaultView = doc.defaultView,
  			prevComputedStyle = defaultView.getComputedStyle(elem, null),
  			top = elem.offsetTop, left = elem.offsetLeft;
  
  		while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
  			computedStyle = defaultView.getComputedStyle(elem, null);
  			top -= elem.scrollTop, left -= elem.scrollLeft;
  			if ( elem === offsetParent ) {
  				top += elem.offsetTop, left += elem.offsetLeft;
  				if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(elem.tagName)) )
  					top  += parseInt( computedStyle.borderTopWidth,  10) || 0,
  					left += parseInt( computedStyle.borderLeftWidth, 10) || 0;
  				prevOffsetParent = offsetParent, offsetParent = elem.offsetParent;
  			}
  			if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" )
  				top  += parseInt( computedStyle.borderTopWidth,  10) || 0,
  				left += parseInt( computedStyle.borderLeftWidth, 10) || 0;
  			prevComputedStyle = computedStyle;
  		}
  
  		if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" )
  			top  += body.offsetTop,
  			left += body.offsetLeft;
  
  		if ( prevComputedStyle.position === "fixed" )
  			top  += Math.max(docElem.scrollTop, body.scrollTop),
  			left += Math.max(docElem.scrollLeft, body.scrollLeft);
  
  		return { top: top, left: left };
  	};
  
  jQuery.offset = {
  	initialize: function() {
  		if ( this.initialized ) return;
  		var body = document.body, container = document.createElement('div'), innerDiv, checkDiv, table, td, rules, prop, bodyMarginTop = body.style.marginTop,
  			html = '<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"cellpadding="0"cellspacing="0"><tr><td></td></tr></table>';
  
  		rules = { position: 'absolute', top: 0, left: 0, margin: 0, border: 0, width: '1px', height: '1px', visibility: 'hidden' };
  		for ( prop in rules ) container.style[prop] = rules[prop];
  
  		container.innerHTML = html;
  		body.insertBefore(container, body.firstChild);
  		innerDiv = container.firstChild, checkDiv = innerDiv.firstChild, td = innerDiv.nextSibling.firstChild.firstChild;
  
  		this.doesNotAddBorder = (checkDiv.offsetTop !== 5);
  		this.doesAddBorderForTableAndCells = (td.offsetTop === 5);
  
  		innerDiv.style.overflow = 'hidden', innerDiv.style.position = 'relative';
  		this.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);
  
  		body.style.marginTop = '1px';
  		this.doesNotIncludeMarginInBodyOffset = (body.offsetTop === 0);
  		body.style.marginTop = bodyMarginTop;
  
  		body.removeChild(container);
  		this.initialized = true;
  	},
  
  	bodyOffset: function(body) {
  		jQuery.offset.initialized || jQuery.offset.initialize();
  		var top = body.offsetTop, left = body.offsetLeft;
  		if ( jQuery.offset.doesNotIncludeMarginInBodyOffset )
  			top  += parseInt( jQuery.curCSS(body, 'marginTop',  true), 10 ) || 0,
  			left += parseInt( jQuery.curCSS(body, 'marginLeft', true), 10 ) || 0;
  		return { top: top, left: left };
  	}
  };
  
  
  jQuery.fn.extend({
  	position: function() {
  		var left = 0, top = 0, results;
  
  		if ( this[0] ) {
  			// Get *real* offsetParent
  			var offsetParent = this.offsetParent(),
  
  			// Get correct offsets
  			offset       = this.offset(),
  			parentOffset = /^body|html$/i.test(offsetParent[0].tagName) ? { top: 0, left: 0 } : offsetParent.offset();
  
  			// Subtract element margins
  			// note: when an element has margin: auto the offsetLeft and marginLeft 
  			// are the same in Safari causing offset.left to incorrectly be 0
  			offset.top  -= num( this, 'marginTop'  );
  			offset.left -= num( this, 'marginLeft' );
  
  			// Add offsetParent borders
  			parentOffset.top  += num( offsetParent, 'borderTopWidth'  );
  			parentOffset.left += num( offsetParent, 'borderLeftWidth' );
  
  			// Subtract the two offsets
  			results = {
  				top:  offset.top  - parentOffset.top,
  				left: offset.left - parentOffset.left
  			};
  		}
  
  		return results;
  	},
  
  	offsetParent: function() {
  		var offsetParent = this[0].offsetParent || document.body;
  		while ( offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && jQuery.css(offsetParent, 'position') == 'static') )
  			offsetParent = offsetParent.offsetParent;
  		return jQuery(offsetParent);
  	}
  });
  
  
  // Create scrollLeft and scrollTop methods
  jQuery.each( ['Left', 'Top'], function(i, name) {
  	var method = 'scroll' + name;
  	
  	jQuery.fn[ method ] = function(val) {
  		if (!this[0]) return null;
  
  		return val !== undefined ?
  
  			// Set the scroll offset
  			this.each(function() {
  				this == window || this == document ?
  					window.scrollTo(
  						!i ? val : jQuery(window).scrollLeft(),
  						 i ? val : jQuery(window).scrollTop()
  					) :
  					this[ method ] = val;
  			}) :
  
  			// Return the scroll offset
  			this[0] == window || this[0] == document ?
  				self[ i ? 'pageYOffset' : 'pageXOffset' ] ||
  					jQuery.boxModel && document.documentElement[ method ] ||
  					document.body[ method ] :
  				this[0][ method ];
  	};
  });
  // Create innerHeight, innerWidth, outerHeight and outerWidth methods
  jQuery.each([ "Height", "Width" ], function(i, name){
  
  	var tl = i ? "Left"  : "Top",  // top or left
  		br = i ? "Right" : "Bottom"; // bottom or right
  
  	// innerHeight and innerWidth
  	jQuery.fn["inner" + name] = function(){
  		return this[ name.toLowerCase() ]() +
  			num(this, "padding" + tl) +
  			num(this, "padding" + br);
  	};
  
  	// outerHeight and outerWidth
  	jQuery.fn["outer" + name] = function(margin) {
  		return this["inner" + name]() +
  			num(this, "border" + tl + "Width") +
  			num(this, "border" + br + "Width") +
  			(margin ?
  				num(this, "margin" + tl) + num(this, "margin" + br) : 0);
  	};
  	
  	var type = name.toLowerCase();
  
  	jQuery.fn[ type ] = function( size ) {
  		// Get window width or height
  		return this[0] == window ?
  			// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
  			document.compatMode == "CSS1Compat" && document.documentElement[ "client" + name ] ||
  			document.body[ "client" + name ] :
  
  			// Get document width or height
  			this[0] == document ?
  				// Either scroll[Width/Height] or offset[Width/Height], whichever is greater
  				Math.max(
  					document.documentElement["client" + name],
  					document.body["scroll" + name], document.documentElement["scroll" + name],
  					document.body["offset" + name], document.documentElement["offset" + name]
  				) :
  
  				// Get or set width or height on the element
  				size === undefined ?
  					// Get width or height on the element
  					(this.length ? jQuery.css( this[0], type ) : null) :
  
  					// Set the width or height on the element (default to pixels if value is unitless)
  					this.css( type, typeof size === "string" ? size : size + "px" );
  	};
  
  });})();
  
  
  


wkpark      2009/01/24 03:47:48

  Modified:    .        monisetup.php
  Log:
  fixed http://kldp.net/forum/message.php?msg_id=66994
  
  Revision  Changes    Path
  1.40      +4 -2      moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.39
  retrieving revision 1.40
  diff -u -r1.39 -r1.40
  --- monisetup.php	26 Dec 2008 12:51:34 -0000	1.39
  +++ monisetup.php	23 Jan 2009 18:47:47 -0000	1.40
  @@ -1,7 +1,7 @@
   <?php
   // Copyright 2003-2007 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.39 2008/12/26 12:51:34 wkpark Exp $
  +// $Id: monisetup.php,v 1.40 2009/01/23 18:47:47 wkpark Exp $
   
   function _stripslashes($str) {
     return get_magic_quotes_gpc() ? stripslashes($str):$str;
  @@ -645,9 +645,11 @@
     return $lang;
   }
   
  +$_locale = array();
  +
   function initlocale($lang,$charset) {
     global $_Config,$_locale,$locale;
  -  if (!@include_once('locale/'.$lang.'/LC_MESSAGES/moniwiki.php') or
  +  if (!@include_once('locale/'.$lang.'/LC_MESSAGES/moniwiki.php') and
        @include_once('locale/'.substr($lang,0,2).'/LC_MESSAGES/moniwiki.php')) {
       if (!empty($_locale)) {
         function _t($text) {
  
  
  


wkpark      2009/01/30 07:05:30

  Modified:    plugin   download.php
  Log:
  strtolower(extension)
  
  Revision  Changes    Path
  1.20      +2 -2      moniwiki/plugin/download.php
  
  Index: download.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/download.php,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- download.php	16 Dec 2008 15:18:31 -0000	1.19
  +++ download.php	29 Jan 2009 22:05:30 -0000	1.20
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // download action plugin for the MoniWiki
   //
  -// $Id: download.php,v 1.19 2008/12/16 15:18:31 wkpark Exp $
  +// $Id: download.php,v 1.20 2009/01/29 22:05:30 wkpark Exp $
   //
   function do_download($formatter,$options) {
     global $DBInfo;
  @@ -93,7 +93,7 @@
   
     # set filename
     if (preg_match("/\.(.{1,4})$/",$file,$match))
  -    $mimetype=strtolower($mime[$match[1]]);
  +    $mimetype=$mime[strtolower($match[1])];
     if (!$mimetype) $mimetype="application/x-unknown";
   
     if (strstr($_SERVER['HTTP_USER_AGENT'], 'MSIE')) {
  
  
  


wkpark      2009/02/02 22:51:44

  Modified:    plugin   Gallery.php
  Log:
  fixed thumnail bug with the gd. (reported by rhealove)
  
  Revision  Changes    Path
  1.37      +2 -2      moniwiki/plugin/Gallery.php
  
  Index: Gallery.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Gallery.php,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- Gallery.php	19 Dec 2008 13:40:18 -0000	1.36
  +++ Gallery.php	2 Feb 2009 13:51:44 -0000	1.37
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Gallery]]
   //
  -// $Id: Gallery.php,v 1.36 2008/12/19 13:40:18 wkpark Exp $
  +// $Id: Gallery.php,v 1.37 2009/02/02 13:51:44 wkpark Exp $
   
   function get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -279,7 +279,7 @@
             $fname=$dir.'/'.$file;
             list($w, $h) = getimagesize($fname);
             if ($w > $thumb_width) {
  -            $nh=$width*$h/$w;
  +            $nh=$thumb_width*$h/$w;
               $thumb= imagecreatetruecolor($thumb_width,$nh);
               // XXX only jpeg for testing now.
               if (preg_match("/\.(jpg|jpeg)$/i",$file))
  
  
  


wkpark      2009/03/09 17:57:23

  Modified:    .        wiki.php
  Log:
  revert &amp; to & for the attachment macro to parse a quary string properly
  
  Revision  Changes    Path
  1.457     +5 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.456
  retrieving revision 1.457
  diff -u -r1.456 -r1.457
  --- wiki.php	16 Jan 2009 10:25:54 -0000	1.456
  +++ wiki.php	9 Mar 2009 08:57:23 -0000	1.457
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.456 2009/01/16 10:25:54 wkpark Exp $
  +// $Id: wiki.php,v 1.457 2009/03/09 08:57:23 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.456 $',1,-1);
  +$_revision = substr('$Revision: 1.457 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2290,8 +2290,10 @@
   
       if (($p=strpos($url,':')) !== false and
           (!isset($url{$p+1}) or (isset($url{$p+1}) and $url{$p+1}!=':'))) {
  -      if ($url[0]=='a') # attachment:
  +      if ($url[0]=='a') { # attachment:
  +        $url=preg_replace('/&amp;/i','&',$url);
           return $this->macro_repl('attachment',substr($url,11));
  +      }
   
         $external_icon='';
         $external_link='';
  
  
  


wkpark      2009/04/03 23:58:54

  Modified:    lib      dict.text.php indexer.ko.php unicode.php
  Added:       lib      stemmer.php
  Log:
  dict.text.php : try to find similar text
  indexer.ko.php : split to smaller chunks and try to find it
  unicode.php : define constants correctly
  stemmer.php : Poter's simple stemmer by Richard Heyes (http://www.phpguru.org/)
  
  Revision  Changes    Path
  1.6       +42 -3     moniwiki/lib/dict.text.php
  
  Index: dict.text.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/dict.text.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- dict.text.php	7 May 2008 08:10:33 -0000	1.5
  +++ dict.text.php	3 Apr 2009 14:58:54 -0000	1.6
  @@ -8,10 +8,10 @@
   // Name: TextDictModule
   // Description: A Simple Text-based Dictionary Module
   // URL: MoniWiki:TextDictModule etc.
  -// Version: $Revision: 1.5 $
  +// Version: $Revision: 1.6 $
   // License: GPL
   //
  -// $Id: dict.text.php,v 1.5 2008/05/07 08:10:33 wkpark Exp $
  +// $Id: dict.text.php,v 1.6 2009/04/03 14:58:54 wkpark Exp $
   //
   
   function _fuzzy_bsearch_file($fp, $key, $seek, $fuzzyoffset=0, $klen=0,$fz=0,$encoding='UTF-8') {
  @@ -140,6 +140,7 @@
   
           if ($l{0} == '#') continue;
           $mykey= strtok($l,' \t\n,:');
  +        #print '==>'.$l;
           #$llen = mb_strlen($mykey,$encoding);
           $llen = strlen(utf8_decode($mykey));
           if ($llen < $ki) {
  @@ -156,6 +157,7 @@
               $count++;
           } else if ($ckey == $cmykey and $pkey == $pmykey) {
               if ($ki < $klen) {
  +                $plast = $l;
                   $ki++;
                   $pkey.=$ckey;
                   //print 'pkey='.$pkey."<br />\n";
  @@ -164,6 +166,7 @@
                           $cmykey=mb_substr($mykey,$ki,1,$encoding);
                           if ($ckey == $cmykey) {
                               $pkey.=$ckey;
  +                            $plast = $l;
                               //print '++pkey='.$pkey."<br />\n";
                               continue;
                           }
  @@ -179,7 +182,7 @@
                   continue;
               }
               if ($ki == $klen) $match = true;
  -            print '+pkey='.$pkey."<br />\n";
  +            #print '+pkey='.$pkey."<br />\n";
               if ($ki == $klen) $buf.=$l;
           } else if ($pkey != $pmykey) {
               break;
  @@ -197,6 +200,41 @@
       }
       if ($count) return array ($count, $buf, null);
       if (!empty($pkey)) {
  +        # not found but try to return similar patterns
  +        $seek -= strlen($l) + 1; // +1 mean do not read last "\n"
  +        fseek($fp,$seek);
  +
  +        # backward seek dictionary
  +        $ll = '';
  +        $guess = array();
  +        $maxcheck = 0;
  +        while ( $seek > 0 ) {
  +            $rlen = $fsize - $seek;
  +            if ($rlen > 1024) { $rlen = 1024;}
  +            else if ($rlen <= 0) break;
  +            $seek -= $rlen;
  +            fseek($fp,$seek);
  +
  +            $l = fread($fp, $rlen);
  +            if ($rlen != 1024) $l = "\n" . $l; // hack, for the first dict entry.
  +            while( ($p = strrpos($l,"\n") ) !== false) {
  +                $check++;
  +                $line = substr($l, $p+1) . $ll;
  +                #print '*'.$line."\n";
  +                $ll = '';
  +                $l = substr($l, 0, $p);
  +                $mykey= strtok($line,' \t\n,:');
  +                $cmykey = mb_substr($mykey, 0, $ki, $encoding); // XXX
  +                if ($cmykey != $pkey) break 2;
  +                $guess[] = $line;
  +                $ll = '';
  +                if ($maxcheck > 10) break 2;
  +            }
  +            $ll = $l.$ll;
  +        }
  +        $guess = array_reverse($guess);
  +        $buf = implode("\n",$guess);
  +
           $lastmatch= strtok($last,' \t\n,:');
           $len = strlen($pkey);
           // XXX matching ratio + fuzzy factor etc.
  @@ -205,6 +243,7 @@
               print $klen.' - '.$llen;
               $suffix = substr($lastmatch,$len);
               print 'matching ratio: '.$match_ratio.'/ suffix= "'.$suffix.'" '.$last."<br />\n";
  +            print 'pkey='.$pkey.','.$plast."<br />\n";
           }
           return array (0, $buf, $last);
       }
  
  
  
  1.7       +74 -20    moniwiki/lib/indexer.ko.php
  
  Index: indexer.ko.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/indexer.ko.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- indexer.ko.php	6 May 2008 15:58:11 -0000	1.6
  +++ indexer.ko.php	3 Apr 2009 14:58:54 -0000	1.7
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a KoreanIndexer class for the MoniWiki
   //
  -// $Id: indexer.ko.php,v 1.6 2008/05/06 15:58:11 wkpark Exp $
  +// $Id: indexer.ko.php,v 1.7 2009/04/03 14:58:54 wkpark Exp $
   //
   // EXPERIMENTAL !!
   
  @@ -209,7 +209,7 @@
           $lines=file(dirname(__FILE__).'/../data/dict/josa.txt.utf-8');
           foreach ($lines as $l) {
               $l=strtr($l,"*","?");
  -            $l=preg_replace('/^(.*\?)/','(\\1)',$l);
  +            $l=preg_replace('/^(.*)\?/','(\\1)?',$l);
               $this->_josa[]=trim($l);
           }
   
  @@ -245,31 +245,79 @@
           return $rule;
       }
   
  -    function isWord($word,$flag=false,$fuzzy=0.7) {
  +    function isWord($word, $flag=false, $fuzzy=0.7) {
           // simple caching
  -        if (array_key_exists($word,$this->_cache))
  -            return $this->_cache[$word];
  +        $encoding = 'UTF-8';
  +
  +        $words = preg_split('/\s+/',$word);
  +        $cword = implode($words);
  +        if (array_key_exists($cword,$this->_cache))
  +            return $this->_cache[$cword];
  +
  +        $word = array_pop($words);
   
           list($l,$min_seek,$max_seek,$scount)=
               _fuzzy_bsearch_file($this->_dict,$word,0,$this->_dict_size/2,0,$this->_dict_size);
           list($c,$buf,$last)=
  -            _file_match($this->_dict,$word,$min_seek,$max_seek,$this->_dict_size,0,$flag,'UTF-8');
  +            _file_match($this->_dict,$word,$min_seek,$max_seek,$this->_dict_size,0,$flag,$encoding);
           
           $cand=array();
           if (!empty($c)) {
  +            $pre = '';
  +            if (!empty($words))
  +                $pre = implode('-',$words).'-';
               $list=explode("\n",rtrim($buf));
  +
               foreach ($list as $l) {
                   list($k,$t,$r) = explode(':',$l);
  -                $cand[]=array($k,$this->tagName($t),$r);
  +                $cand[]=array($pre.$k,$this->tagName($t),$r);
               }
  -            print_r($cand);
  -        } else if (!empty($buf)) {
  -            $list=explode("\n",rtrim($buf));
  -            foreach ($list as $l) {
  -                list($k,$t,$r) = explode(':',$l);
  -                $cand[]=array($k,$this->tagName($t),$r);
  +            #print_r($cand);
  +        } else if (!empty($last)) {
  +            // similar match found 
  +            $list = rtrim($buf);
  +            list($k,$t,$r) = explode(':',$buf); // XXX get shortest match word
  +            #print($buf);
  +            $type = $this->tagName($t);
  +            $pre = $k;
  +            $pl = strlen(utf8_decode($pre));
  +            if ($pl == 1 and strlen($word) > 1) { // not found
  +                // split word to prefix + new word
  +                // 5 => 2 + 3, 3 + 2 / 1 + 4
  +                // 4 => 2 + 2 / 1 + 3
  +                // 6 => 2 + 4, 3 + 3 / 1 + 5
  +                #$nword = substr($word, strlen($pre)); // 1-char + new word
  +                #$words[] = $pre;
  +                #$pre = implode('-',$words);
  +                #$nret = $this->isWord($pre.' '.$nword);
  +                #if (!empty($nret[0])) {
  +                #    #print_r($nret[1][0]);
  +                #    return $nret;
  +                #} else {
  +                #    array_pop($words);
  +                #    $pre = mb_substr($word,0,2,$encoding);
  +                #}
  +                $pre = mb_substr($word,0,2,$encoding);
  +            }
  +            $nword = substr($word, strlen($pre)); // next word
  +
  +            $words[] = $pre;
  +            $pre = implode('-',$words);
  +
  +            if (!empty($nword)) {
  +                if ($type{0} == 'n') { // noun
  +                    $stem = $this->getNoun($nword, $match);
  +                    #print '*** stem'.$nword.'=='.$stem."\n";
  +                    if (!empty($stem))
  +                        return $this->isWord($pre.' '.$stem);
  +                } else { // not noun
  +                    $stem = $this->getNoun($nword, $match);
  +                    #print '*** stem'.$nword.'=='.$stem."\n";
  +                    if (!empty($stem))
  +                        return $this->isWord($pre.' '.$stem);
  +                }
               }
  -            print_r($cand);
  +
           }
           $ret=array($c,$cand,$last);
           $this->_cache[$word]=&$ret;
  @@ -277,10 +325,11 @@
       }
   
       function getStem($word,&$match,&$type) {
  -        // XXX
           $type=1;
           list($r, $cand, $last) = $this->isWord($word);
  -        if ($cand[0][1]{0} == 'n') return $word;
  +
  +        // return first candidate XXX
  +        if (isset($cand[0]) and $cand[0][1]{0} == 'n') return $cand[0][0];
           else $stem=$this->getNoun($word,$match);
   
           if ($stem) {
  @@ -307,6 +356,10 @@
           // XXX
           # remove josa
           preg_match('/('.$this->_josa_rule.')$/S',$word,$match);
  +
  +        #print 'getNoun ('.$word.")\n";
  +        #print $this->_josa_rule;
  +        #print_r($match);
           if (!empty($match[1])) {
               $pword=substr($word,0,-strlen($match[1]));
               if ($pword) {
  @@ -319,11 +372,11 @@
               $word=$this->getWordRule($word);
               preg_match('/('.$this->_josa_rule.')$/S',$word,$match);
           }
  -        if ($match[1] and $nmatch[1] and (strlen($match[1]) < strlen($nmatch[1]))) {
  +        if (isset($match[1]) and isset($nmatch[1]) and (strlen($match[1]) < strlen($nmatch[1]))) {
               $match=$nmatch;
               $word=$pword;
           }
  -        if ($match) {
  +        if (!empty($match)) {
               #print "<pre>";
               #print_r($match);
               #print "</pre>";
  @@ -345,7 +398,7 @@
           preg_match('/('.$this->_eomi_rule.')$/S',$word,$match);
           $word1=$this->getWordRule($word);
           preg_match('/('.$this->_eomi_rule.')$/S',$word1,$match1);
  -        if ($match[1] and $match1[1]) {
  +        if (!empty($match[1]) and !empty($match1[1])) {
               if ((strlen($match[1]) <= strlen($match1[1])) ) {
                   $match=$match1;
                   $word=$word1;
  @@ -381,6 +434,7 @@
           $uend= utf8_to_unicode($match[1]);
           $ch= array_pop($ustem);
           $ed= $uend[0];
  +        $save='';
   
           if ($this->isHangul($ch)) {
               $j= hangul_to_jamo($ch);
  @@ -449,7 +503,7 @@
                   }
                   $ed= $uend[0];
                   $ej= hangul_to_jamo($ed);
  -            } else if (in_array($j[2],array(0x11ab, 0x11af,0x11b8)) /* ㄴ,ㄹ,ㅂ */ ) {
  +            } else if (!empty($j[2]) and in_array($j[2],array(0x11ab, 0x11af,0x11b8)) /* ㄴ,ㄹ,ㅂ */ ) {
                   // 합-시다   갑-시다   갈-래
                   // 하-ㅂ시다 가-ㅂ시다 가-ㄹ래
                   //
  
  
  
  1.3       +9 -9      moniwiki/lib/unicode.php
  
  Index: unicode.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/unicode.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- unicode.php	18 Apr 2008 14:16:30 -0000	1.2
  +++ unicode.php	3 Apr 2009 14:58:54 -0000	1.3
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a unicode module for the MoniWiki
   //
  -// $Id: unicode.php,v 1.2 2008/04/18 14:16:30 wkpark Exp $
  +// $Id: unicode.php,v 1.3 2009/04/03 14:58:54 wkpark Exp $
   //
   // from http://www.randomchaos.com/document.php?source=php_and_unicode
   // with some modifications
  @@ -72,7 +72,7 @@
       return ( $found == TRUE ) ? $position : FALSE;
   }
   
  -$position = strpos_unicode( $unicode , utf8_to_unicode( '42' ) );
  +#$position = strpos_unicode( $unicode , utf8_to_unicode( '42' ) );
   
   function unicode_to_utf8( $str ) {
       $utf8 = '';
  @@ -176,14 +176,14 @@
       return hangul_to_jamo($unicode);
   }
   
  -function jamo_to_syllable($jamo) {
  -    define('hangul_base', 0xac00);
  -    define('choseong_base', 0x1100);
  -    define('jungseong_base', 0x1161);
  -    define('jongseong_base', 0x11a7);
  -    define('njungseong', 21);
  -    define('njongseong', 28);
  +define('hangul_base', 0xac00);
  +define('choseong_base', 0x1100);
  +define('jungseong_base', 0x1161);
  +define('jongseong_base', 0x11a7);
  +define('njungseong', 21);
  +define('njongseong', 28);
   
  +function jamo_to_syllable($jamo) {
       if (sizeof($jamo)<=3) {
           $choseong=$jamo[0];
           $jungseong=$jamo[1];
  
  
  
  1.1                  moniwiki/lib/stemmer.php
  
  Index: stemmer.php
  ===================================================================
  <?php
  /**
   * Copyright (c) 2005 Richard Heyes (http://www.phpguru.org/)
   *
   * All rights reserved.
   *
   * This script is free software.
   *
   * PHP5 Implementation of the Porter Stemmer algorithm. Certain elements
   * were borrowed from the (broken) implementation by Jon Abernathy.
   *
   * Usage:
   *
   *  $stem = PorterStemmer::Stem($word);
   *
   * How easy is that?
   */
  
  class PorterStemmer
  {
      /**
      * Regex for matching a consonant
      * @var string
      */
      static $regex_consonant = '(?:[bcdfghjklmnpqrstvwxz]|(?<=[aeiou])y|^y)';
  
  
      /**
      * Regex for matching a vowel
      * @var string
      */
      static $regex_vowel = '(?:[aeiou]|(?<![aeiou])y)';
  
  
      /**
      * Stems a word. Simple huh?
      *
      * @param  string $word Word to stem
      * @return string       Stemmed word
      */
      function Stem($word)
      {
          if (strlen($word) <= 2) {
              return $word;
          }
  
          $word = self::step1ab($word);
          $word = self::step1c($word);
          $word = self::step2($word);
          $word = self::step3($word);
          $word = self::step4($word);
          #$word = self::step5($word);
  
          return $word;
      }
  
  
      /**
      * Step 1
      */
      function step1ab($word)
      {
          // Part a
          if (substr($word, -1) == 's') {
  
                 self::replace($word, 'sses', 'ss')
              OR self::replace($word, 'ies', 'i')
              OR self::replace($word, 'ss', 'ss')
              OR self::replace($word, 's', '');
          }
  
          // Part b
          if (substr($word, -2, 1) != 'e' OR !self::replace($word, 'eed', 'ee', 0)) { // First rule
              $v = self::$regex_vowel;
  
              // ing and ed
              if (   preg_match("#$v+#", substr($word, 0, -3)) && self::replace($word, 'ing', '')
                  OR preg_match("#$v+#", substr($word, 0, -2)) && self::replace($word, 'ed', '')) { // Note use of && and OR, for precedence reasons
  
                  // If one of above two test successful
                  if (    !self::replace($word, 'at', 'ate')
                      AND !self::replace($word, 'bl', 'ble')
                      AND !self::replace($word, 'iz', 'ize')) {
  
                      // Double consonant ending
                      if (    self::doubleConsonant($word)
                          AND substr($word, -2) != 'll'
                          AND substr($word, -2) != 'ss'
                          AND substr($word, -2) != 'zz') {
  
                          $word = substr($word, 0, -1);
  
                      } else if (self::m($word) == 1 AND self::cvc($word)) {
                          $word .= 'e';
                      }
                  }
              }
          }
  
          return $word;
      }
  
  
      /**
      * Step 1c
      *
      * @param string $word Word to stem
      */
      function step1c($word)
      {
          $v = self::$regex_vowel;
  
          if (substr($word, -1) == 'y' && preg_match("#$v+#", substr($word, 0, -1))) {
              self::replace($word, 'y', 'i');
          }
  
          return $word;
      }
  
  
      /**
      * Step 2
      *
      * @param string $word Word to stem
      */
      function step2($word)
      {
          switch (substr($word, -2, 1)) {
              case 'a':
                     self::replace($word, 'ational', 'ate', 0)
                  OR self::replace($word, 'tional', 'tion', 0);
                  break;
  
              case 'c':
                     self::replace($word, 'enci', 'ence', 0)
                  OR self::replace($word, 'anci', 'ance', 0);
                  break;
  
              case 'e':
                  self::replace($word, 'izer', 'ize', 0);
                  break;
  
              case 'g':
                  self::replace($word, 'logi', 'log', 0);
                  break;
  
              case 'l':
                     self::replace($word, 'entli', 'ent', 0)
                  OR self::replace($word, 'ousli', 'ous', 0)
                  OR self::replace($word, 'alli', 'al', 0)
                  OR self::replace($word, 'bli', 'ble', 0)
                  OR self::replace($word, 'eli', 'e', 0);
                  break;
  
              case 'o':
                     self::replace($word, 'ization', 'ize', 0)
                  OR self::replace($word, 'ation', 'ate', 0)
                  OR self::replace($word, 'ator', 'ate', 0);
                  break;
  
              case 's':
                     self::replace($word, 'iveness', 'ive', 0)
                  OR self::replace($word, 'fulness', 'ful', 0)
                  OR self::replace($word, 'ousness', 'ous', 0)
                  OR self::replace($word, 'alism', 'al', 0);
                  break;
  
              case 't':
                     self::replace($word, 'biliti', 'ble', 0)
                  OR self::replace($word, 'aliti', 'al', 0)
                  OR self::replace($word, 'iviti', 'ive', 0);
                  break;
          }
  
          return $word;
      }
  
  
      /**
      * Step 3
      *
      * @param string $word String to stem
      */
      function step3($word)
      {
          switch (substr($word, -2, 1)) {
              case 'a':
                  self::replace($word, 'ical', 'ic', 0);
                  break;
  
              case 's':
                  self::replace($word, 'ness', '', 0);
                  break;
  
              case 't':
                     self::replace($word, 'icate', 'ic', 0)
                  OR self::replace($word, 'iciti', 'ic', 0);
                  break;
  
              case 'u':
                  self::replace($word, 'ful', '', 0);
                  break;
  
              case 'v':
                  self::replace($word, 'ative', '', 0);
                  break;
  
              case 'z':
                  self::replace($word, 'alize', 'al', 0);
                  break;
          }
  
          return $word;
      }
  
  
      /**
      * Step 4
      *
      * @param string $word Word to stem
      */
      function step4($word)
      {
          switch (substr($word, -2, 1)) {
              case 'a':
                  self::replace($word, 'al', '', 1);
                  break;
  
              case 'c':
                     self::replace($word, 'ance', '', 1)
                  OR self::replace($word, 'ence', '', 1);
                  break;
  
              case 'e':
                  self::replace($word, 'er', '', 1);
                  break;
  
              case 'i':
                  self::replace($word, 'ic', '', 1);
                  break;
  
              case 'l':
                     self::replace($word, 'able', '', 1)
                  OR self::replace($word, 'ible', '', 1);
                  break;
  
              case 'n':
                     self::replace($word, 'ant', '', 1)
                  OR self::replace($word, 'ement', '', 1)
                  OR self::replace($word, 'ment', '', 1)
                  OR self::replace($word, 'ent', '', 1);
                  break;
  
              case 'o':
                  if (substr($word, -4) == 'tion' OR substr($word, -4) == 'sion') {
                     self::replace($word, 'ion', '', 1);
                  } else {
                      self::replace($word, 'ou', '', 1);
                  }
                  break;
  
              case 's':
                  self::replace($word, 'ism', '', 1);
                  break;
  
              case 't':
                     self::replace($word, 'ate', '', 1)
                  OR self::replace($word, 'iti', '', 1);
                  break;
  
              case 'u':
                  self::replace($word, 'ous', '', 1);
                  break;
  
              case 'v':
                  self::replace($word, 'ive', '', 1);
                  break;
  
              case 'z':
                  self::replace($word, 'ize', '', 1);
                  break;
          }
  
          return $word;
      }
  
  
      /**
      * Step 5
      *
      * @param string $word Word to stem
      */
      function step5($word)
      {
          // Part a
          if (substr($word, -1) == 'e') {
              if (self::m(substr($word, 0, -1)) > 1) {
                  self::replace($word, 'e', '');
  
              } else if (self::m(substr($word, 0, -1)) == 1) {
  
                  if (!self::cvc(substr($word, 0, -1))) {
                      self::replace($word, 'e', '');
                  }
              }
          }
  
          // Part b
          if (self::m($word) > 1 AND self::doubleConsonant($word) AND substr($word, -1) == 'l') {
              $word = substr($word, 0, -1);
          }
  
          return $word;
      }
  
  
      /**
      * Replaces the first string with the second, at the end of the string. If third
      * arg is given, then the preceding string must match that m count at least.
      *
      * @param  string $str   String to check
      * @param  string $check Ending to check for
      * @param  string $repl  Replacement string
      * @param  int    $m     Optional minimum number of m() to meet
      * @return bool          Whether the $check string was at the end
      *                       of the $str string. True does not necessarily mean
      *                       that it was replaced.
      */
      function replace(&$str, $check, $repl, $m = null)
      {
          $len = 0 - strlen($check);
  
          if (substr($str, $len) == $check) {
              $substr = substr($str, 0, $len);
              if (is_null($m) OR self::m($substr) > $m) {
                  $str = $substr . $repl;
              }
  
              return true;
          }
  
          return false;
      }
  
  
      /**
      * What, you mean it's not obvious from the name?
      *
      * m() measures the number of consonant sequences in $str. if c is
      * a consonant sequence and v a vowel sequence, and <..> indicates arbitrary
      * presence,
      *
      * <c><v>       gives 0
      * <c>vc<v>     gives 1
      * <c>vcvc<v>   gives 2
      * <c>vcvcvc<v> gives 3
      *
      * @param  string $str The string to return the m count for
      * @return int         The m count
      */
      function m($str)
      {
          $c = self::$regex_consonant;
          $v = self::$regex_vowel;
  
          $str = preg_replace("#^$c+#", '', $str);
          $str = preg_replace("#$v+$#", '', $str);
  
          preg_match_all("#($v+$c+)#", $str, $matches);
  
          return count($matches[1]);
      }
  
  
      /**
      * Returns true/false as to whether the given string contains two
      * of the same consonant next to each other at the end of the string.
      *
      * @param  string $str String to check
      * @return bool        Result
      */
      function doubleConsonant($str)
      {
          $c = self::$regex_consonant;
  
          return preg_match("#$c{2}$#", $str, $matches) AND $matches[0]{0} == $matches[0]{1};
      }
  
  
      /**
      * Checks for ending CVC sequence where second C is not W, X or Y
      *
      * @param  string $str String to check
      * @return bool        Result
      */
      function cvc($str)
      {
          $c = self::$regex_consonant;
          $v = self::$regex_vowel;
  
          return     preg_match("#($c$v$c)$#", $str, $matches)
                 AND strlen($matches[1]) == 3
                 AND $matches[1]{2} != 'w'
                 AND $matches[1]{2} != 'x'
                 AND $matches[1]{2} != 'y';
      }
  }
  ?>
  
  
  


wkpark      2009/04/04 00:01:09

  Modified:    .        wiki.php
  Log:
  fix for section links to replace it with a image icon.
  use $trail option to control the uumber of the trailer.
  
  Revision  Changes    Path
  1.458     +7 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.457
  retrieving revision 1.458
  diff -u -r1.457 -r1.458
  --- wiki.php	9 Mar 2009 08:57:23 -0000	1.457
  +++ wiki.php	3 Apr 2009 15:01:09 -0000	1.458
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.457 2009/03/09 08:57:23 wkpark Exp $
  +// $Id: wiki.php,v 1.458 2009/04/03 15:01:09 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.457 $',1,-1);
  +$_revision = substr('$Revision: 1.458 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -3865,7 +3865,7 @@
             $url=$this->link_url($this->page->urlname,
               '?action='.$act.'&amp;section='.$this->sect_num);
             $lab=_("edit");
  -          $edit="<div class='sectionEdit' style='float:right;'>[<a href='$url'$sect_attr>$lab</a>]</div>\n";
  +          $edit="<div class='sectionEdit' style='float:right;'><span class='sep'>[</span><span><a href='$url'$sect_attr><span>$lab</span></a></span><span class='sep'>]</span></div>\n";
             $anchor_id='sect-'.$this->sect_num;
             $anchor="<a id='$anchor_id'></a>";
           }
  @@ -4943,6 +4943,9 @@
   
       if (!in_array($pagename,$trails)) $trails[]=$pagename;
   
  +    if (!empty($DBInfo->trail) and $DBInfo->trail > 5)
  +      $size = $DBInfo->trail;
  +
       $idx=count($trails) - $size;
       if ($idx > 0) $trails=array_slice($trails,$idx);
       $trail=join("\t",$trails);
  @@ -5128,7 +5131,7 @@
     $udb=new UserDB($DBInfo);
     $DBInfo->udb=$udb;
   
  -  if ($DBInfo->trail) // read COOKIE trailer
  +  if (!empty($DBInfo->trail)) // read COOKIE trailer
       $options['trail']=trim($user->trail) ? $user->trail:'';
   
     if ($user->id != 'Anonymous') {
  
  
  


wkpark      2009/04/04 00:01:36

  Modified:    .        wikilib.php
  Log:
  fix for the new autocompleter.
  
  Revision  Changes    Path
  1.268     +9 -5      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.267
  retrieving revision 1.268
  diff -u -r1.267 -r1.268
  --- wikilib.php	16 Jan 2009 11:53:50 -0000	1.267
  +++ wikilib.php	3 Apr 2009 15:01:36 -0000	1.268
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.267 2009/01/16 11:53:50 wkpark Exp $
  +// $Id: wikilib.php,v 1.268 2009/04/03 15:01:36 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1283,7 +1283,8 @@
     global $DBInfo;
   
     if (isset($options['q'])) {
  -    if (!$options['q']) { print "<ul></ul>"; return; }
  +    if (!$options['q']) { print ''; return; }
  +    #if (!$options['q']) { print "<ul></ul>"; return; }
   
       $val='';
       $rule='';
  @@ -1304,7 +1305,8 @@
       if (!$rule) $rule=$options['q'];
   
       $test=@preg_match("/^$rule/",'');
  -    if ($test === false) { print "<ul></ul>"; return; }
  +    if ($test === false) { print ''; return; }
  +    #if ($test === false) { print "<ul></ul>"; return; }
   
       $pages= array();
   
  @@ -1319,10 +1321,12 @@
       //array_unshift($pages, $options['q']);
       header("Content-Type: text/plain");
       if ($pages) {
  -    	$ret= "<ul>\n<li>".implode("</li>\n<li>",$pages)."</li>\n</ul>\n";
  +    	$ret= implode("\n",$pages);
  +    	#$ret= "<ul>\n<li>".implode("</li>\n<li>",$pages)."</li>\n</ul>\n";
       } else {
           #$ret= "<ul>\n<li>".$options['q']."</li></ul>";
  -        $ret= "<ul>\n</ul>";
  +        $ret= '';
  +        #$ret= "<ul>\n</ul>";
       }
       if (strtoupper($DBInfo->charset) != 'UTF-8' and function_exists('iconv')) {
         $val=iconv('UTF-8',$DBInfo->charset,$ret);
  
  
  


wkpark      2009/04/04 00:03:35

  Modified:    plugin   Info.php
  Log:
  add a css class for the Info Title.
  
  Revision  Changes    Path
  1.19      +4 -3      moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Info.php,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- Info.php	29 Nov 2008 07:45:44 -0000	1.18
  +++ Info.php	3 Apr 2009 15:03:35 -0000	1.19
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Info plugin for the MoniWiki
   //
  -// $Id: Info.php,v 1.18 2008/11/29 07:45:44 wkpark Exp $
  +// $Id: Info.php,v 1.19 2009/04/03 15:03:35 wkpark Exp $
   
   function _parse_rlog($formatter,$log,$options=array()) {
     global $DBInfo;
  @@ -28,10 +28,11 @@
     $url=$formatter->link_url($formatter->page->urlname);
   
     $diff_btn=_("Diff");
  +  $out = "<div class='wikiInfo'>\n";
     if ($options['title'])
  -    $out=$options['title'];
  +    $out.=$options['title'];
     else
  -    $out="<div class='wikiInfo'><h2>"._("Revision History")."</h2>\n";
  +    $out.="<h2>"._("Revision History")."</h2>\n";
     $out.="<form id='infoform' method='post' action='$url'>";
     $out.="<table class='info' cellpadding='3' cellspacing='2'><tr>\n";
     $out.="<th class='info'>"._("ver.")."</th><th class='info'>"._("Date and Changes")."</th>".
  
  
  


wkpark      2009/04/04 00:04:47

  Modified:    plugin   Keywords.php
  Log:
  first try to use the Korean stemmer etc.
  
  Revision  Changes    Path
  1.31      +46 -17    moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- Keywords.php	8 Jan 2009 17:19:43 -0000	1.30
  +++ Keywords.php	3 Apr 2009 15:04:47 -0000	1.31
  @@ -8,19 +8,19 @@
   // Name: a Keywords Plugin
   // Description: a Keywords plugin to generate keywords of a page
   // URL: MoniWiki:KeywordsPlugin
  -// Version: $Revision: 1.30 $
  +// Version: $Revision: 1.31 $
   // License: GPL
   //
   // Usage: [[Keywords(options)]]
   //
  -// $Id: Keywords.php,v 1.30 2009/01/08 17:19:43 wkpark Exp $
  +// $Id: Keywords.php,v 1.31 2009/04/03 15:04:47 wkpark Exp $
   
  -define(LOCAL_KEYWORDS,'LocalKeywords');
  +define('LOCAL_KEYWORDS','LocalKeywords');
   
   function macro_Keywords($formatter,$value,$options=array()) {
       global $DBInfo;
  -define(MAX_FONT_SZ,24);
  -define(MIN_FONT_SZ,10);
  +define('MAX_FONT_SZ',24);
  +define('MIN_FONT_SZ',10);
       $supported_lang=array('ko');
   
       $limit=isset($options['limit']) ? $options['limit']:40;
  @@ -63,8 +63,8 @@
           }
       }
   
  -    if ($options['random'] and !$limit) $limit=0;
  -    if ($options['sort']=='freq') $sort= 'freq';
  +    if (isset($options['random']) and empty($limit)) $limit=0;
  +    if (isset($options['sort']) and $options['sort']=='freq') $sort= 'freq';
   
       if (!$pagename) $pagename=$formatter->page->name;
   
  @@ -90,7 +90,7 @@
       }
   
       if (!$mykeys):
  -    if ($options['all']) $pages=$DBInfo->getPageLists();
  +    if (!empty($options['all'])) $pages=$DBInfo->getPageLists();
       else $pages=array($pagename);
   
       foreach ($pages as $pn) {
  @@ -107,7 +107,7 @@
       endif;
   
   
  -    if ($options['all']) {
  +    if (!empty($options['all'])) {
           $use_sty=1;
           $words=array_count_values($mykeys);
           unset($words['']);
  @@ -139,7 +139,7 @@
       }
   
       # automatically generate list of keywords
  -    if (!$options['all'] and (!$words or $options['suggest'])):
  +    if (empty($options['all']) and (empty($words) or isset($options['suggest']))):
   
       $common= <<<EOF
   am an a b c d e f g h i j k l m n o p q r s t u v w x y z
  @@ -167,6 +167,7 @@
   
       // strip macros, entities
       $raw=preg_replace("/&[^;\s]+;|\[\[[^\[]+\]\]/",' ',$raw);
  +    $raw=preg_replace("/^##.*$/m",' ',$raw);
       $raw=preg_replace("/([;\"',`\\\\\/\.:@#\!\?\$%\^&\*\(\)\{\}\[\]\-_\+=\|<>])/",
           ' ', strip_tags($raw.' '.$pagename)); // pagename also
       $raw=preg_replace("/((?<=[a-z0-9]|[B-Z]{2})([A-Z][a-z]))/"," \\1",$raw);
  @@ -183,7 +184,7 @@
           $lines0=explode("\n",($p->get_raw_body()));
       }
   
  -    $lang=$formatter->pi['#language'] ? $formatter->pi['#language']:
  +    $lang=isset($formatter->pi['#language']) ? $formatter->pi['#language']:
           $DBInfo->default_language;
   
       if ($lang and in_array($lang,$supported_lang)) {
  @@ -193,7 +194,7 @@
               $lines=explode("\n",($p->get_raw_body()));
               $lines=array_merge($lines,$lines0);
               foreach ($lines as $line) {
  -                if ($line[0]=='#') continue;
  +                if (isset($line{0}) and $line{0}=='#') continue;
                   $common.="\n".$line;
               }
               $common=rtrim($common);
  @@ -201,6 +202,33 @@
       }
       $words=array_diff($words,preg_split("/\s+|\n/",$common));
   
  +    while (!empty($DBInfo->use_indexer)) {
  +        include_once(dirname(__FILE__).'/../lib/indexer.ko.php');
  +        include_once(dirname(__FILE__).'/../lib/stemmer.php');
  +        $indexer=new KoreanIndexer();
  +
  +        if (!is_resource($indexer->_dict)) break;
  +        $founds = array();
  +        foreach ($words as $key) {
  +            if (preg_match('/^[a-zA-Z0-9]+$/',$key)) {
  +                // ignore alphanumeric
  +                $stem = PorterStemmer::Stem($key);
  +                $founds[] = $stem;
  +                continue;
  +            }
  +            $match=null;
  +            $stem = $indexer->getStem(trim($key),$match,$type);
  +            if (!empty($stem))
  +                $founds[] = $stem;
  +            else if (!empty($last)) {
  +                //print_r($match);
  +            }
  +        }
  +        $words = $founds;
  +        $indexer->close();
  +        break;
  +    }
  +
       $preword='';
       $bigwords=array();
       foreach ($words as $word) {
  @@ -208,15 +236,16 @@
               if ($word == $preword) continue;
               $key= $preword.' '.$word;
               $rkey= $word.' '.$preword;
  -            if ($bigwords[$key]) $bigwords[$key]++;
  -            else if ($bigwords[$rkey]) $bigwords[$rkey]++;
  -            else $bigwords[$key]++;
  +            if (isset($bigwords[$key])) $bigwords[$key]++;
  +            else if (isset($bigwords[$rkey])) $bigwords[$rkey]++;
  +            else $bigwords[$key]=1;
           }
           $preword= $word;
       }
   
       $words=array_count_values($words);
       unset($words['']);
  +
       $ncount=array_sum($words); // total count
   
   /*   
  @@ -244,7 +273,7 @@
       $max=current($words); // get max hit number
   
       $nwords=array();
  -    if ($options['merge']) {
  +    if (isset($options['merge'])) {
           foreach ($mykeys as $key) {
               $nwords[$key]=$max;
               // give weight to all selected keywords
  @@ -257,7 +286,7 @@
   
       endif;
       //
  -    if ($options['call']) return $words;
  +    if (!empty($options['call'])) return $words;
   
       if ($limit and ($sz=sizeof($words))>$limit) {
           arsort($words);
  
  
  


wkpark      2009/04/04 00:07:29

  Modified:    plugin   UploadedFiles.php
  Log:
  support the 'nodir' option.
  parse args properly with "Page,Name" like page args.
  
  Revision  Changes    Path
  1.32      +29 -8     moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- UploadedFiles.php	27 Dec 2008 03:18:04 -0000	1.31
  +++ UploadedFiles.php	3 Apr 2009 15:07:29 -0000	1.32
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadedFiles plugin for the MoniWiki
   //
  -// $Id: UploadedFiles.php,v 1.31 2008/12/27 03:18:04 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.32 2009/04/03 15:07:29 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     if (!empty($options['q'])) {
  @@ -43,7 +43,11 @@
      $iconset='gnome';
      $icon_dir=$DBInfo->imgs_dir.'/plugin/UploadedFiles/'.$iconset;
   
  -   $args=explode(',',$value);
  +   $args = !empty($DBInfo->uploadedfiles_options) ?
  +      explode(',',$DBInfo->uploadedfiles_options):array();
  +   $nargs = explode(',',$value);
  +   if (!empty($nargs)) $args = array_merge($args,$nargs);
  +
      $value='';
   
      $default_column=8;
  @@ -71,12 +75,14 @@
      if ($DBInfo->use_lightbox and !$js_tag)
        $href_attr=' rel="lightbox[upload]" ';
   
  +   $nodir = 0;
      foreach ($args as $arg) {
         $arg=trim($arg);
         if (($p=strpos($arg,'='))!==false) {
            $k=substr($arg,0,$p);
            $v=substr($arg,$p+1);
            if ($k=='preview') { $use_preview=$v; }
  +         else if ($k == 'nodir') { $nodir=$v; }
            else if ($k == 'tag') {
              $js_tag=1; $use_preview=1;
            }
  @@ -84,6 +90,13 @@
            $value=$arg;
         }
      }
  +   if (!isset($options['nodir']))
  +      $options['nodir'] = $nodir;
  +
  +   if (!empty($options['page']))
  +      $value = $options['page'];
  +   // avoid to set the pagename of the "page,name" as "name"
  +
      if ($js_tag) {
         $form='editform';
         $js_script=<<<EOS
  @@ -254,11 +267,17 @@
      $count=0;
      while ($file= readdir($handle)) {
         if ($file[0]=='.') continue;
  -      if (!$options['nodir'] and is_dir($dir."/".$file)) {
  -        if ($value =='UploadFile')
  -          $dirs[]= $DBInfo->keyToPagename($file);
  -      } else if (preg_match($needle,$file) and $count >= $pfrom)
  -        $upfiles[]= _p_filename($file);
  +      if ($count >= $pfrom) {
  +        if (is_dir($dir."/".$file)) {
  +          if ($options['nodir']) continue;
  +          if ($value =='UploadFile')
  +            $dirs[]= $DBInfo->keyToPagename($file);
  +        } else if (preg_match($needle,$file) and $count >= $pfrom) {
  +          if ($count < $pto) {
  +            $upfiles[]= _p_filename($file);
  +          }
  +        }
  +      }
         $count++;
         if ($count >= $pto) { $plink=1; break;}
      }
  @@ -305,7 +324,7 @@
         $idx++;
      }
   
  -   if (!$options['nodir'] and !$dirs) {
  +   if (!empty($value) and $value!='UploadFile') {
         if ($js_tag) {
           #$attr=' target="_blank"';
           $extra='&amp;popup=1&amp;tag=1';
  @@ -326,6 +345,8 @@
      }
      if ($options['needle'])
         $extra.='&amp;q='.$options['needle'];
  +   if (isset($options['nodir']))
  +      $extra.='&amp;nodir='.$options['nodir'];
      if ($plink)
         $plink=$formatter->link_tag('',"?action=uploadedfiles$extra&amp;p=".($p+1),_("Next page &raquo;"),$attr);
      else if ($p > 1)
  
  
  


wkpark      2009/04/04 01:31:47

  Modified:    .        wiki.php
  Log:
  fixed 1.455 bug with a image link with attributes
  
  Revision  Changes    Path
  1.459     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.458
  retrieving revision 1.459
  diff -u -r1.458 -r1.459
  --- wiki.php	3 Apr 2009 15:01:09 -0000	1.458
  +++ wiki.php	3 Apr 2009 16:31:47 -0000	1.459
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.458 2009/04/03 15:01:09 wkpark Exp $
  +// $Id: wiki.php,v 1.459 2009/04/03 16:31:47 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.458 $',1,-1);
  +$_revision = substr('$Revision: 1.459 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -2379,7 +2379,7 @@
         } # have no space
         $link = str_replace(array('<','>'),array('&#x3c;','&#x3e;'),$url);
         if (preg_match("/^(http|https|ftp)/",$url)) {
  -        if (preg_match("/(^.*\.(png|gif|jpeg|jpg))(\?.*?)$/i",$url,$match)) {
  +        if (preg_match("/(^.*\.(png|gif|jpeg|jpg))(\?.*?)?$/i",$url,$match)) {
             $url=preg_replace('/&amp;/','&',$url);
             $url=$match[1];
             $attrs=explode('&',substr($match[3],1));
  
  
  


wkpark      2009/04/04 12:28:45

  Modified:    .        wikilib.php
  Log:
  captcha adapted in the main editor.
  
  Revision  Changes    Path
  1.269     +43 -1     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.268
  retrieving revision 1.269
  diff -u -r1.268 -r1.269
  --- wikilib.php	3 Apr 2009 15:01:36 -0000	1.268
  +++ wikilib.php	4 Apr 2009 03:28:45 -0000	1.269
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.268 2009/04/03 15:01:36 wkpark Exp $
  +// $Id: wikilib.php,v 1.269 2009/04/04 03:28:45 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -931,6 +931,16 @@
       }
     }
   
  +  $captcha='';
  +  if ($use_js and $DBInfo->use_ticket and $options['id'] == 'Anonymous') {
  +     $seed=md5(base64_encode(time()));
  +     $ticketimg=$formatter->link_url($formatter->page->urlname,'?action=ticket&amp;__seed='.$seed);
  +     $captcha=<<<EXTRA
  +  <div class='captcha'><span class='captchaImg'><img src="$ticketimg" alt="captcha" /></span><input type="text" size="10" name="check" />
  +<input type="hidden" name="__seed" value="$seed" /></div>
  +EXTRA;
  +  }
  +
     $summary_msg=_("Summary of Change");
     if (!$options['simple']) {
       $preview_btn='<input type="submit" tabindex="6" name="button_preview" '.
  @@ -1000,6 +1010,7 @@
   $preview_btn$wysiwyg_btn$skip_preview
   $extra<span id="save_state"></span>
   </div>
  +$captcha
   </form>
   </div>
   EOS;
  @@ -1600,6 +1611,37 @@
       return;
     }
   
  +  // XXX captcha
  +  $use_any=0;
  +  if ($DBInfo->use_textbrowsers) {
  +    if (is_string($DBInfo->use_textbrowsers))
  +      $use_any= preg_match('/'.$DBInfo->use_textbrowsers.'/',
  +        $_SERVER['HTTP_USER_AGENT']) ? 1:0;
  +    else
  +      $use_any= preg_match('/Lynx|w3m|links/',
  +        $_SERVER['HTTP_USER_AGENT']) ? 1:0;
  +  }
  +
  +  $ok_ticket=0;
  +  if (!$button_preview and !$use_any and $DBInfo->use_ticket and $options['id'] == 'Anonymous') {
  +    if ($options['__seed'] and $options['check']) {
  +      $mycheck=getTicket($options['__seed'],$_SERVER['REMOTE_ADDR'],4);
  +      if ($mycheck==$options['check'])
  +        $ok_ticket=1;
  +      else {
  +        $options['msg']= _("Invalid ticket !");
  +        $button_preview=1;
  +      }
  +    } else {
  +      if (!$button_preview)
  +        $options['msg']= _("You need a ticket !");
  +      $button_preview=1;
  +    }
  +  } else {
  +    $ok_ticket=1;
  +  }
  +  // XXX
  +
     if (!$button_preview and $DBInfo->spam_filter) {
       $text=$savetext;
       $fts=preg_split('/(\||,)/',$DBInfo->spam_filter);
  
  
  


wkpark      2009/04/04 12:30:43

  Modified:    local/Wikiwyg/css wysiwyg.css
  Log:
  set background-color of a iframe of the wysywyg editor.
  
  Revision  Changes    Path
  1.6       +1 -0      moniwiki/local/Wikiwyg/css/wysiwyg.css
  
  Index: wysiwyg.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/css/wysiwyg.css,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- wysiwyg.css	28 Nov 2008 10:24:07 -0000	1.5
  +++ wysiwyg.css	4 Apr 2009 03:30:43 -0000	1.6
  @@ -19,3 +19,4 @@
   * html .separator { font-size:1px; height:1px; }
   * html hr { padding:0;margin:0; }
   
  +body { background-color: #ffffff; }
  
  
  


wkpark      2009/04/05 15:52:15

  Modified:    plugin   Diff.php
  Log:
  fixed smart_diff (inline diff) bug.
  
  Revision  Changes    Path
  1.20      +7 -3      moniwiki/plugin/Diff.php
  
  Index: Diff.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Diff.php,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- Diff.php	12 Dec 2008 09:43:54 -0000	1.19
  +++ Diff.php	5 Apr 2009 06:52:14 -0000	1.20
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a diff plugin for the MoniWiki
   //
  -// $Id: Diff.php,v 1.19 2008/12/12 09:43:54 wkpark Exp $
  +// $Id: Diff.php,v 1.20 2009/04/05 06:52:14 wkpark Exp $
   
   function simple_diff($diff) {
     $diff=str_replace("<","&lt;",$diff);
  @@ -235,8 +235,12 @@
         $ret= call_user_func($type,$out);
         if (is_array($ret)) { // for smart_diff
           $dels=$ret[1]; $ret=$ret[0];
  -        $rev=($rev2 and $rev2) ? $rev2:''; // get newest rev.
  -        $current=$formatter->page->_get_raw_body(array('rev'=>$rev));
  +        $rev=($rev1 and $rev2) ? $rev2:''; // get newest rev.
  +        if (!empty($rev)) {
  +          $current=$formatter->page->get_raw_body(array('rev'=>$rev));
  +        } else {
  +          $current=$formatter->page->_get_raw_body();
  +        }
           $lines=explode("\n",$current);
           $nret=$ret;
           foreach ($ret as $k => $v) {
  
  
  


wkpark      2009/04/06 23:49:05

  Modified:    plugin   Play.php
  Log:
  fix for the swfobject 2.x
  
  Revision  Changes    Path
  1.8       +19 -13    moniwiki/plugin/Play.php
  
  Index: Play.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Play.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Play.php	9 Oct 2007 05:11:45 -0000	1.7
  +++ Play.php	6 Apr 2009 14:49:05 -0000	1.8
  @@ -8,12 +8,12 @@
   // Name: Play macro
   // Description: media Player Plugin
   // URL: MoniWikiDev:PlayMacro
  -// Version: $Revision: 1.7 $
  +// Version: $Revision: 1.8 $
   // License: GPL
   //
   // Usage: [[Play(http://blah.net/blah.mp3)]]
   //
  -// $Id: Play.php,v 1.7 2007/10/09 05:11:45 wkpark Exp $
  +// $Id: Play.php,v 1.8 2009/04/06 14:49:05 wkpark Exp $
   
   function macro_Play($formatter,$value) {
     global $DBInfo;
  @@ -165,9 +165,7 @@
         }
         $displayheight=$height;
         $height+=$sz*40; // XXX
  -      $addparam=<<<EOS
  -        _s$num.addVariable("displayheight","$displayheight");
  -EOS;
  +      $addparam="displayheight: '$displayheight'";
         $filelist=qualifiedUrl($playlist);
       } else {
         $filelist=$url[0];
  @@ -176,14 +174,22 @@
       $jw_script=<<<EOS
   <p id="mediaplayer$num"></p>
   <script type="text/javascript">
  -        var _s$num = new SWFObject("$_swf_prefix/mediaplayer.swf","_mediaplayer$num","$width","$height","7");
  -        _s$num.addParam("allowfullscreen","true");
  -        _s$num.addVariable("width","$width");
  -        _s$num.addVariable("height","$height");
  -        $addparam
  -        _s$num.addVariable("file","$filelist");
  -        //_s$num.addVariable("image","preview.jpg");
  -        _s$num.write("mediaplayer$num");
  +    (function() {
  +        var params = {
  +          allowfullscreen: "true"
  +        };
  +
  +        var flashvars = {
  +          width: "$width",
  +          height: "$height",
  +          // image: "preview.jpg",
  +          $addparam
  +          file: "$filelist"
  +        };
  +
  +        swfobject.embedSWF("$_swf_prefix/mediaplayer.swf","mediaplayer$num","$width","$height","0.0.9",
  +        "expressInstall.swf",flashvars,params);
  +    })();
   </script>
   EOS;
   
  
  
  


wkpark      2009/04/06 23:52:33

  Modified:    plugin   Keywords.php
  Log:
  support the wp-cumulus flash cloud plugin. use "cloud" option like as [[Keywords(cloud)]]
  
  Revision  Changes    Path
  1.32      +57 -4     moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- Keywords.php	3 Apr 2009 15:04:47 -0000	1.31
  +++ Keywords.php	6 Apr 2009 14:52:33 -0000	1.32
  @@ -4,16 +4,16 @@
   // a 'Keywords' plugin for the MoniWiki
   //
   // Author: Won-Kyu Park <wkpark@kldp.org>
  -// Date: 2005-08-17
  +// Since: 2005-08-17
   // Name: a Keywords Plugin
   // Description: a Keywords plugin to generate keywords of a page
   // URL: MoniWiki:KeywordsPlugin
  -// Version: $Revision: 1.31 $
  +// Version: $Revision: 1.32 $
   // License: GPL
   //
   // Usage: [[Keywords(options)]]
   //
  -// $Id: Keywords.php,v 1.31 2009/04/03 15:04:47 wkpark Exp $
  +// $Id: Keywords.php,v 1.32 2009/04/06 14:52:33 wkpark Exp $
   
   define('LOCAL_KEYWORDS','LocalKeywords');
   
  @@ -38,6 +38,7 @@
               $options['random']=$options['all']=1; }
           else if ($opt=='suggest') $options['suggest']=1;
           else if ($opt=='tour') $options['tour']=1;
  +        else if ($opt=='cloud') $options['cloud']=1;
           else if ($opt=='freq') $sort='freq';
           else if (($p=strpos($opt,'='))!==false) {
               $k=substr($opt,0,$p);
  @@ -318,7 +319,7 @@
       $fs=MAX_FONT_SZ; // max font-size:24px;
       for ($i=0;$i<$fz;$i++) {
           $ifs=(int)($fs+0.5);
  -        $sty[]= " style='font-size:${ifs}px'";
  +        $sty[]= " style='font-size:${ifs}px;'";
           #print '/'.$ifs;
           $fs-=$fsh;
           $fs=max($fs,9); // min font-size:9px
  @@ -341,6 +342,58 @@
           $out.="<input type='hidden' name='action' value='keywords' />\n";
       }
   
  +    if (isset($options['cloud'])) {
  +        $out = '';
  +        
  +        foreach ($words as $key=>$val) {
  +            $style=$sty[$fz-1];
  +            for ($i=0;$i<$fz;$i++) {
  +                if ($val>$fact[$i]) {
  +                    $style=$sty[$i];
  +                    break;
  +                }
  +            }
  +            if ($val > $min) {
  +                $out .= "<a href='" . qualifiedUrl(str_replace('$TAG',$key,$tag_link))."'";
  +                if ($use_sty)
  +                    $out .= ' ' . $style;
  +                else
  +                    $out .= " style='12'";
  +                $out .= ">".$key."</a>";
  +            }
  +        }
  +        $out = preg_replace('/&amp;/',urlencode('&'),$out);
  +
  +        $tout = "<a href='http://www.roytanck.com/tag1' style='font-size:20px'>Tag name</a><a href='http://www.roytanck.com/tag2' style='font-size:10px'>Tag two</a>";
  +
  +        $formatter->register_javascripts(array('js/swfobject.js'));
  +        $_swf_prefix=qualifiedUrl("$DBInfo->url_prefix/local/wp-cumulus"); // FIXME
  +        return <<<SWF
  +<script type="text/javascript">
  +var flashvars = {
  +   mode : "tags",
  +   distr : "true",
  +   tcolor : "0xffffff",
  +   tcolor2 : "0x86B9F2",
  +   hicolor : "0xBAD8F8",
  +   tagcloud : "<tags>$out</tags>"
  +};
  +
  +var params = {
  +   wmode: "opaque",
  +   bgcolor: "#333333"
  +};
  +
  +var attrs = {
  +   id: "myCloudContent"
  +};
  +
  +swfobject.embedSWF("$_swf_prefix/tagcloud.swf", "myCloud", "200", "200", "9.0.0","expressInstall.swf", flashvars, params, attrs);
  +</script>
  +<div id="myCloud">
  +</div>
  +SWF;
  +    }
       $out.='<ul>';
       foreach ($words as $key=>$val) {
           $style=$sty[$fz-1];
  
  
  


wkpark      2009/04/07 15:20:03

  Modified:    .        wiki.php
  Log:
  fix for without theme sites like as no-smoke.
  
  Revision  Changes    Path
  1.460     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.459
  retrieving revision 1.460
  diff -u -r1.459 -r1.460
  --- wiki.php	3 Apr 2009 16:31:47 -0000	1.459
  +++ wiki.php	7 Apr 2009 06:20:03 -0000	1.460
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.459 2009/04/03 16:31:47 wkpark Exp $
  +// $Id: wiki.php,v 1.460 2009/04/07 06:20:03 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.459 $',1,-1);
  +$_revision = substr('$Revision: 1.460 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -4841,10 +4841,10 @@
         print "<div id='wikiHeader'>\n";
         print $header;
         if (!$this->css_friendly)
  -        print $menu." ".$user_link." ".$upper_icon.$icons.$home.$rss_icon;
  +        print $menu." ".$user_link." ".$upper_icon.$icons.$rss_icon;
         else {
           print "<div id='wikiLogin'>".$user_link."</div>";
  -        print "<div id='wikiIcon'>".$upper_icon.$icons.$home.$rss_icon.'</div>';
  +        print "<div id='wikiIcon'>".$upper_icon.$icons.$rss_icon.'</div>';
           print $menu;
         }
         print $msg;
  
  
  


wkpark      2009/04/07 18:06:12

  Modified:    .        wiki.php
  Log:
  fix to support $use_userlink http://kldp.net/forum/message.php?msg_id=75335
  
  Revision  Changes    Path
  1.461     +19 -11    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.460
  retrieving revision 1.461
  diff -u -r1.460 -r1.461
  --- wiki.php	7 Apr 2009 06:20:03 -0000	1.460
  +++ wiki.php	7 Apr 2009 09:06:12 -0000	1.461
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.460 2009/04/07 06:20:03 wkpark Exp $
  +// $Id: wiki.php,v 1.461 2009/04/07 09:06:12 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.460 $',1,-1);
  +$_revision = substr('$Revision: 1.461 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -4658,32 +4658,40 @@
       $sister_save=$this->sister_on;
       $this->sister_on=0;
       $titlemnu=0;
  +    if (isset($quicklinks[$this->page->name])) {
  +      #$attr.=" class='current'";
  +      $titlemnu=1;
  +    } else {
  +      $quicklinks[$this->page->name]='';
  +    }
  +
  +    if ($DBInfo->use_userlink and isset($quicklinks['UserPreferences']) and $options['id'] != 'Anonymous') {
  +        $tmpid= 'wiki:UserPreferences '.$options['id'];
  +        $quicklinks[$tmpid]= $quicklinks['UserPreferences'];
  +        unset($quicklinks['UserPreferences']);
  +    }
  +
       foreach ($quicklinks as $item=>$attr) {
         if (strpos($item,' ') === false) {
           if (strpos($attr,'=') === false) $attr="accesskey='$attr'";
  -        if ($item == $this->page->name) {
  -          #$attr.=" class='current'";
  -          $titlemnu=1;
  -        }
           # like 'MoniWiki'=>'accesskey="1"'
  -        $menu[]=$this->word_repl($item,_($item),$attr);
  +        $menu[$item]=$this->word_repl($item,_($item),$attr);
   #        $menu[]=$this->link_tag($item,"",_($item),$attr);
         } else {
           # like a 'http://moniwiki.sf.net MoniWiki'
  -        $menu[]=$this->link_repl($item,$attr);
  +        $menu[$item]=$this->link_repl($item,$attr);
         }
       }
       if (!empty($DBInfo->use_titlemenu) and $titlemnu == 0 ) {
         $len = $DBInfo->use_titlemenu > 15 ? $DBInfo->use_titlemenu:15;
         #$attr="class='current'";
  -      # XXX make title more shorter ?
         $mnuname=htmlspecialchars($this->page->name);
         if ($DBInfo->hasPage($this->page->name)) {
           if (strlen($mnuname) < $len) {
  -          $menu[]=$this->word_repl($mypgname,$mnuname,$attr);
  +          $menu[$this->page->name]=$this->word_repl($mypgname,$mnuname,$attr);
           } else if (function_exists('mb_strimwidth')) {
             $my=mb_strimwidth($mypgname,0,$len,'...');
  -          $menu[]=$this->word_repl($mypgname,htmlspecialchars($my),$attr);
  +          $menu[$this->page->name]=$this->word_repl($mypgname,htmlspecialchars($my),$attr);
           }
         }
       }
  
  
  


wkpark      2009/04/08 06:25:17

  Modified:    .        wikilib.php
  Log:
  urlencode the id cookie for the Chrome browser.
  
  Revision  Changes    Path
  1.270     +5 -5      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.269
  retrieving revision 1.270
  diff -u -r1.269 -r1.270
  --- wikilib.php	4 Apr 2009 03:28:45 -0000	1.269
  +++ wikilib.php	7 Apr 2009 21:25:17 -0000	1.270
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.269 2009/04/04 03:28:45 wkpark Exp $
  +// $Id: wikilib.php,v 1.270 2009/04/07 21:25:17 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -497,7 +497,7 @@
        $id = '';
        if (isset($_COOKIE['MONI_ID'])) {
        	$this->ticket=substr($_COOKIE['MONI_ID'],0,32);
  -     	$id=substr($_COOKIE['MONI_ID'],33);
  +     	$id=urldecode(substr($_COOKIE['MONI_ID'],33));
        }
        $this->setID($id);
   
  @@ -534,14 +534,14 @@
        $ticket=getTicket($this->id,$_SERVER['REMOTE_ADDR']);
        $this->ticket=$ticket;
        # set the fake cookie
  -     $_COOKIE['MONI_ID']=$ticket.'.'.$this->id;
  +     $_COOKIE['MONI_ID']=$ticket.'.'.urlencode($this->id);
        if ($this->info['nick']) $_COOKIE['MONI_NICK']=$this->info['nick'];
   
        #$path=strpos($_SERVER['HTTP_USER_AGENT'],'Safari')===false ?
        #  get_scriptname():'/';
        $path = get_scriptname();
        #$path = preg_replace('@(?<=/)[^/]+$@','',$path);
  -     return "Set-Cookie: MONI_ID=".$ticket.'.'.$this->id.'; expires='.gmdate('l, d-M-Y H:i:s',time()+60*60*24*30).' GMT; Path='.$path;
  +     return "Set-Cookie: MONI_ID=".$ticket.'.'.urlencode($this->id).'; expires='.gmdate('l, d-M-Y H:i:s',time()+60*60*24*30).' GMT; Path='.$path;
     }
   
     function unsetCookie() {
  @@ -1313,7 +1313,7 @@
         if ($test === false) $rule=$options['q'];
         break;     
       }
  -    if (!$rule) $rule=$options['q'];
  +    if (!$rule) $rule=trim($options['q']);
   
       $test=@preg_match("/^$rule/",'');
       if ($test === false) { print ''; return; }
  
  
  


wkpark      2009/04/08 06:26:12

  Modified:    .        wiki.php
  Log:
  use $umask and set the textfile permission correctly
  
  Revision  Changes    Path
  1.462     +8 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.461
  retrieving revision 1.462
  diff -u -r1.461 -r1.462
  --- wiki.php	7 Apr 2009 09:06:12 -0000	1.461
  +++ wiki.php	7 Apr 2009 21:26:12 -0000	1.462
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.461 2009/04/07 09:06:12 wkpark Exp $
  +// $Id: wiki.php,v 1.462 2009/04/07 21:26:12 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.461 $',1,-1);
  +$_revision = substr('$Revision: 1.462 $',1,-1);
   $_release = '1.1.3';
   
   #ob_start("ob_gzhandler");
  @@ -1116,14 +1116,15 @@
     function _savePage($filename,$body,$options=array()) {
       $dir=dirname($filename);
       if (!is_dir($dir)) {
  -      $om=umask(000);
  +      $om=umask(~$this->umask);
         _mkdir_p($dir, 0777);
         umask($om);
       }
   
       $fp=fopen($filename,"w");
  -    if (!$fp)
  +    if (!is_resource($fp))
          return -1;
  +
       flock($fp,LOCK_EX);
       fwrite($fp, $body);
       flock($fp,LOCK_UN);
  @@ -1132,7 +1133,10 @@
       if ($this->version_class) {
         $class=getModule('Version',$this->version_class);
         $version=new $class ($this);
  +      $om=umask(~$this->umask);
         $ret=$version->_ci($filename,$options['log']);
  +      chmod($filename,0666 & $this->umask);
  +      umask($om);
       }
       return 0;
     }
  
  
  


wkpark      2009/04/09 22:15:40

  Modified:    plugin   FullSearch.php
  Log:
  fixed backlink search bug. reported by HyoKim
  http://kldp.net/forum/message.php?msg_id=75351
  
  Revision  Changes    Path
  1.27      +4 -4      moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- FullSearch.php	13 Jan 2009 21:26:06 -0000	1.26
  +++ FullSearch.php	9 Apr 2009 13:15:40 -0000	1.27
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
   //
  -// $Id: FullSearch.php,v 1.26 2009/01/13 21:26:06 wkpark Exp $
  +// $Id: FullSearch.php,v 1.27 2009/04/09 13:15:40 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
  @@ -200,18 +200,18 @@
         foreach ($pages as $page_name) {
           $links=unserialize($cache->fetch($page_name));
           if (is_array($links)) {
  -          if (stristr(implode(' ',$links),$value))
  +          if (in_array($value,$links))
               $hits[$page_name] = -1;
               // ignore count if < 0
  -          }
           }
  +      }
       } else if ($opts['keywords']) {
         $pages = $DBInfo->getPageLists();
         $opts['context']=-1; # turn off context-matching
         $cache=new Cache_text("keywords");
         foreach ($pages as $page_name) {
           $links=unserialize($cache->fetch($page_name));
  -        #print_r($links);
  +        // XXX
           if (is_array($links)) {
             if (stristr(implode(' ',$links),$needle))
               $hits[$page_name] = -1;
  
  
  


wkpark      2009/04/10 01:30:35

  Modified:    .        monisetup.php
  Log:
  read config.php.default and replace it with new variables.
  all comments are preserved now!
  
  Revision  Changes    Path
  1.41      +107 -8    moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- monisetup.php	23 Jan 2009 18:47:47 -0000	1.40
  +++ monisetup.php	9 Apr 2009 16:30:35 -0000	1.41
  @@ -1,7 +1,7 @@
   <?php
   // Copyright 2003-2007 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.40 2009/01/23 18:47:47 wkpark Exp $
  +// $Id: monisetup.php,v 1.41 2009/04/09 16:30:35 wkpark Exp $
   
   function _stripslashes($str) {
     return get_magic_quotes_gpc() ? stripslashes($str):$str;
  @@ -197,7 +197,108 @@
       return $conf;
     }
   
  -  function _genRawConfig($config) {
  +  function _genRawConfig($newconfig, $mode = 0, $configfile='config.php', $default='config.php.default') {
  +    if ($mode == 1) {
  +      foreach ($newconfig as $k=>$v) {
  +        if (is_string($v)) {
  +          $v='"'.$v.'"';
  +        } else if (is_bool($v)) {
  +          if ($v) $nline="true";
  +          else $v="false";
  +        }
  +        $newconfig[$k] = $v;
  +      }
  +    }
  +
  +    if (file_exists($configfile))
  +      $conf_file = $configfile;
  +    else if (file_exists($default))
  +      $conf_file = $default;
  +    else
  +      return _genRawConfigSimple($newconfig);
  +  
  +    $lines = file($conf_file);
  +
  +    $nlines='';
  +    $key='';
  +    $tag='';
  +    foreach ($lines as $line) {
  +      $line=rtrim($line)."\n"; // for Win32
  +
  +      if (!$key and $line[0] != '$') {
  +        $nlines[]=$line;
  +        continue;
  +      }
  +
  +      if ($key) {
  +        $val.=$line;
  +        if (!preg_match("/$tag\s*;(\s*#.*)?\s*$/",$line)) continue;
  +      } else {
  +        list($key,$val)=explode('=',substr($line,1),2);
  +        $key = trim($key);
  +        if (!preg_match('/\s*;(\s*#.*)?$/',$val,$match)) {
  +          if (substr($val,0,3)== '<<<') $tag='^'.substr(rtrim($val),3);
  +          else {
  +            $val = ltrim($val);
  +            $tag = '';
  +          }
  +          continue;
  +        } else {
  +          if ($match[1]) {
  +            $desc[$key] = rtrim($match[1]);
  +          }
  +        }
  +      }
  +
  +      if ($key) {
  +        if (isset($newconfig[$key])) {
  +          $val=$newconfig[$key];
  +          unset($newconfig[$key]);
  +        } else {
  +          $val=preg_replace(array('@<@','@>@'),array('&lt;','&gt;'),$val);
  +          #print $key.'|=='.preg_quote($val);
  +          $val=rtrim($val);
  +          $val=preg_replace('/\s*;(\s*#.*)?$/','',$val);
  +          $config[$key] = $val;
  +        }
  +        $val = str_replace(array('&lt;','&gt;'),array('<','>'),$val);
  +        if (preg_match("/^<{3}([A-Za-z0-9]+)\s.*\\1\s*$/s",$val,$m)) {
  +          $save_val=$val;
  +          $val=str_replace("$m[1]",'',substr($val,3));
  +          $val=str_replace('"','\"',$val);
  +          $t=eval("\$$key=\"$val\";");
  +          $val=$save_val;
  +          $nline="\$$key=$val;\n";
  +        } else if (is_string($val)) {
  +          $val = str_replace('&gt;','>',$val);
  +          if (strpos($val,"\n")===false) {
  +            $t=eval("\$$key=$val;");
  +          } else {
  +            $t=@eval("\$$key=$val;");
  +          }
  +          $nline="\$$key=$val;";
  +          if ($desc[$key]) $nline .= $desc[$key];
  +          $nline .= "\n";
  +        } else {
  +          $t=@eval("\$$key=$val;");
  +        }
  +        if ($t === NULL)
  +          $nlines[]=$nline;
  +        else
  +          print "ERROR: \$$key =$val;\n";
  +        $key = '';
  +        $tag = '';
  +      }
  +    }
  +    if (!empty($newconfig)) {
  +      foreach ($newconfig as $k=>$v)
  +        $nlines[] = '$'.$k.'='.$v.";\n";
  +    }
  +
  +    return join('',$nlines);
  +  }
  +
  +  function _genRawConfigSimple($config) {
       $lines=array("<?php\n","# automatically generated by monisetup\n");
       while (list($key,$val) = each($config)) {
         if ($key=='admin_passwd' or $key=='purge_passwd')
  @@ -230,7 +331,7 @@
           $db=dba_open('data/counter.db','n',substr($config['dba_type'],1,-1));
         if ($db) dba_close($db);
       }
  -    return $lines;
  +    return implode('',$lines);
     }
   }
   
  @@ -259,7 +360,7 @@
     if (file_exists("config.php")) {
       if (!is_writable($config['data_dir'])) {
         if (02000 & fileperms(".")) # check sgid
  -        $datadir_perm = 0775;
  +        $datadir_perm = 02777;
         else
           $datadir_perm = 0777;
         $datadir_perm = decoct($datadir_perm);
  @@ -895,9 +996,8 @@
       }
       if (!empty($invalid))
         print "<h2>".sprintf(_t("Updated Configutations for this %s"),$config['sitename'])."</h2>\n";
  -    $lines=$Config->_genRawConfig($rawconfig);
  +    $rawconf=$Config->_genRawConfig($rawconfig);
       print "<pre class='console'>\n";
  -    $rawconf=join("",$lines);
       #
       ob_start();
       highlight_string($rawconf);
  @@ -936,8 +1036,7 @@
       $rawconfig=$Config->rawconfig;
       print "<h3 color='blue'>"._t("Default settings are loaded...")."</h3>\n";
   
  -    $lines=$Config->_genRawConfig($rawconfig);
  -    $rawconf=implode("",$lines);
  +    $rawconf=$Config->_genRawConfig($rawconfig);
       umask(000);
       $fp=fopen("config.php","w");
       fwrite($fp,$rawconf);
  
  
  


wkpark      2009/04/10 11:22:48

  Modified:    lib      difflib.php
  Log:
  fixed WordAccumulator for block+inline elements
  
  Revision  Changes    Path
  1.12      +44 -12    moniwiki/lib/difflib.php
  
  Index: difflib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/difflib.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- difflib.php	5 May 2008 07:12:53 -0000	1.11
  +++ difflib.php	10 Apr 2009 02:22:48 -0000	1.12
  @@ -11,7 +11,7 @@
   //
   // FIXME: possibly remove assert()'s for production version?
   //
  -// $Id: difflib.php,v 1.11 2008/05/05 07:12:53 wkpark Exp $
  +// $Id: difflib.php,v 1.12 2009/04/10 02:22:48 wkpark Exp $
   // original Id: difflib.php,v 1.5 2002/01/21 06:55:47 dairiki Exp
   // PHP3 does not have assert()
   define('USE_ASSERTS', function_exists('assert'));
  @@ -850,24 +850,22 @@
   
   class _HWLDF_WordAccumulator {
       function _HWLDF_WordAccumulator ($tags=
  -        array("<del class='diff-removed'>\n","</del>",
  -            "<ins class='diff-added'>\n","</ins>")) {
  +        array("<del class='diff-removed'>","</del>",
  +            "<ins class='diff-added'>","</ins>")) {
           $this->_lines = array();
           $this->_line = '';
           $this->_group = '';
           $this->_tag = '';
  -        $this->_tag_del_open=$tags[0];
  -        $this->_tag_del_close=$tags[1];
  -        $this->_tag_ins_open=$tags[2];
  -        $this->_tag_ins_close=$tags[3];
  +        $this->_tag_open['del']=$tags[0];
  +        $this->_tag_close['del']=$tags[1];
  +        $this->_tag_open['ins']=$tags[2];
  +        $this->_tag_close['ins']=$tags[3];
       }
   
       function _flushGroup ($new_tag) {
           if ($this->_group !== '') {
  -	  if ($this->_tag == 'del') 
  -            $this->_line .= $this->_tag_del_open.$this->_group.$this->_tag_del_close;
  -	  else if ($this->_tag == 'ins')
  -            $this->_line .= $this->_tag_ins_open.$this->_group.$this->_tag_ins_close;
  +	  if ($this->_tag != '') 
  +            $this->_line .= $this->_tag_open[$this->_tag].$this->_group.$this->_tag_close[$this->_tag];
   	  else
   	    $this->_line .= $this->_group;
   	}
  @@ -877,8 +875,14 @@
       
       function _flushLine ($new_tag) {
           $this->_flushGroup($new_tag);
  +        $tag_open = '';
  +        $tag_close = '';
  +        if ($this->_tag) {
  +            $tag_open = str_replace(array('ins','del'),array('div','div'),$this->_tag_open[$this->_tag]);
  +            $tag_close = str_replace(array('ins','del'),array('div','div'),$this->_tag_close[$this->_tag]);
  +        }
           if ($this->_line != '')
  -            $this->_lines[] = $this->_line;
  +            $this->_lines[] = $tag_open.$this->_line.$tag_close;
           $this->_line = '';
       }
                   
  @@ -1016,6 +1020,34 @@
   }
   
   /**
  + * "Inline" diff formatter.
  + *
  + * This class formats the diff in classic "unified diff" format.
  + */
  +class InlineDiffFormatter extends DiffFormatter
  +{
  +    function InlineDiffFormatter($context_lines = 10000) {
  +        $this->leading_context_lines = $context_lines;
  +        $this->trailing_context_lines = $context_lines;
  +    }
  +    
  +    function _block_header($xbeg, $xlen, $ybeg, $ylen) {
  +        return '';
  +    }
  +
  +    function _added($lines) {
  +        $this->_lines($lines, "");
  +    }
  +    function _deleted($lines) {
  +        $this->_lines($lines, "");
  +    }
  +    function _changed($orig, $_final) {
  +        $this->_deleted($orig);
  +        $this->_added($_final);
  +    }
  +}
  +
  +/**
    * "Delta" diff formatter for the RcsLite
    *
    * This class formats the diff in classic "Delta diff" format.
  
  
  


wkpark      2009/04/18 02:11:58

  Modified:    .        wiki.php
  Log:
  use forcelink() with trails and menus
  
  Revision  Changes    Path
  1.463     +9 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.462
  retrieving revision 1.463
  diff -u -r1.462 -r1.463
  --- wiki.php	7 Apr 2009 21:26:12 -0000	1.462
  +++ wiki.php	17 Apr 2009 17:11:57 -0000	1.463
  @@ -11,10 +11,10 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.462 2009/04/07 21:26:12 wkpark Exp $
  +// $Id: wiki.php,v 1.463 2009/04/17 17:11:57 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.462 $',1,-1);
  -$_release = '1.1.3';
  +$_revision = substr('$Revision: 1.463 $',1,-1);
  +$_release = '1.1.4-CVS';
   
   #ob_start("ob_gzhandler");
   
  @@ -4675,6 +4675,8 @@
           unset($quicklinks['UserPreferences']);
       }
   
  +    $save = $this->nonexists;
  +    $this->nonexists = 'forcelink';
       foreach ($quicklinks as $item=>$attr) {
         if (strpos($item,' ') === false) {
           if (strpos($attr,'=') === false) $attr="accesskey='$attr'";
  @@ -4699,6 +4701,7 @@
           }
         }
       }
  +    $this->nonexists = $save;
       $this->sister_on=$sister_save;
       if (!$this->css_friendly) {
         $menu=$this->menu_bra.join($this->menu_sep,$menu).$this->menu_cat;
  @@ -4944,9 +4947,12 @@
       $sister_save=$this->sister_on;
       $this->sister_on=0;
       $this->trail="";
  +    $save = $this->nonexists;
  +    $this->nonexists = 'forcelink';
       foreach ($trails as $page) {
         $this->trail.=$this->word_repl('"'.$page.'"','','',1,0).$DBInfo->arrow;
       }
  +    $this->nonexists = $save;
       $this->trail.= ' '.htmlspecialchars($pagename);
       $this->pagelinks=array(); # reset pagelinks
       $this->sister_on=$sister_save;
  
  
  


wkpark      2009/04/18 02:23:37

  moniwiki/plugin/user - New directory

wkpark      2009/04/18 02:25:25

  Modified:    .        wiki.php
  Log:
  support user plugins. a nFORGE user plugin added.
  bump up to v1.1.4-CVS
  
  Revision  Changes    Path
  1.464     +10 -3     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.463
  retrieving revision 1.464
  diff -u -r1.463 -r1.464
  --- wiki.php	17 Apr 2009 17:11:57 -0000	1.463
  +++ wiki.php	17 Apr 2009 17:25:24 -0000	1.464
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.463 2009/04/17 17:11:57 wkpark Exp $
  +// $Id: wiki.php,v 1.464 2009/04/17 17:25:24 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.463 $',1,-1);
  +$_revision = substr('$Revision: 1.464 $',1,-1);
   $_release = '1.1.4-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -5145,7 +5145,14 @@
   function init_requests(&$options) {
     global $DBInfo;
   
  -  $user=new User();
  +  if (!empty($DBInfo->user_class)) {
  +    include_once('user/'.$DBInfo->user_class.'.php');
  +    $class = 'User_'.$this->user_class;
  +    $user = new $class();
  +  } else {
  +    $user = new User();
  +  }
  +
     $udb=new UserDB($DBInfo);
     $DBInfo->udb=$udb;
   
  
  
  


wkpark      2009/04/18 02:25:25

  Added:       plugin/user nforge.php
  Log:
  support user plugins. a nFORGE user plugin added.
  bump up to v1.1.4-CVS
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/user/nforge.php
  
  Index: nforge.php
  ===================================================================
  <?php
  // Copyright 2009 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a sample plugin for the MoniWiki
  //
  // Author: Won-Kyu Park <wkpark@kldp.org>
  // Author: nFORGE Team 2008
  // Since: 2009-04-18
  // Name: nFORGE Unix based User plugin
  // Description: nFORGE Unix user plugin
  // URL: MoniWiki:NForgeUserPlugin
  // Version: $Revision: 1.1 $
  // License: GPL
  //
  // Usage: set $user_class = 'nforge'; in the config.php
  //
  // $Id: nforge.php,v 1.1 2009/04/17 17:25:25 wkpark Exp $
  
  class User_nforge extends User {
      function WikiUser($id = '') {
          if ($id) {
              $this->setID($id);
              $u =& user_get_object_by_name($id);
          } else {
              $u =& user_get_object(user_getid());
              if ($u) {
                  $id = $u->getUnixName();
              }
              $this->setID($id);
          }
  
          $this->css=isset($_COOKIE['MONI_CSS']) ? $_COOKIE['MONI_CSS']:'';
          $this->theme=isset($_COOKIE['MONI_THEME']) ? $_COOKIE['MONI_THEME']:'';
          $this->bookmark=isset($_COOKIE['MONI_BOOKMARK']) ? $_COOKIE['MONI_BOOKMARK']:'';
          $this->trail=isset($_COOKIE['MONI_TRAIL']) ? _stripslashes($_COOKIE['MONI_TRAIL']):'';
          $this->tz_offset=isset($_COOKIE['MONI_TZ']) ?_stripslashes($_COOKIE['MONI_TZ']):'';
          $this->nick=isset($_COOKIE['MONI_NICK']) ?_stripslashes($_COOKIE['MONI_NICK']):'';
          if ($this->tz_offset == '') $this->tz_offset = date('Z');
      }
  }
  
  // vim:et:sts=4:sw=4:
  
  
  


wkpark      2009/04/18 02:26:33

  Modified:    local    wikibits.js
  Log:
  fixed wikibits for the chrome/safari browser.
  
  Revision  Changes    Path
  1.18      +2 -2      moniwiki/local/wikibits.js
  
  Index: wikibits.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/wikibits.js,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- wikibits.js	31 Dec 2008 11:12:51 -0000	1.17
  +++ wikibits.js	17 Apr 2009 17:26:33 -0000	1.18
  @@ -1,7 +1,7 @@
   // from the MediaWiki
   // simplified for the MoniWiki by wkpark
   //
  -// $Id: wikibits.js,v 1.17 2008/12/31 11:12:51 wkpark Exp $
  +// $Id: wikibits.js,v 1.18 2009/04/17 17:26:33 wkpark Exp $
   //
   // Wikipedia JavaScript support functions
   // if this is true, the toolbar will no longer overwrite the infobox when you move the mouse over individual items
  @@ -74,7 +74,7 @@
   		mouseOver = "onMouseover=\"if(!noOverwrite){document.infoform.infobox.value='"+tagOpen+sampleText+tagClose+"'};\"";
   	}
   
  -	document.write("<a href=\"javascript:insertTags");
  +	document.write("<a href='#' onclick=\"javascript:insertTags");
   	document.write("('"+tagOpen+"','"+tagClose+"','"+sampleText+"');\">");
   
           document.write("<img height=\"22\" src=\""+imageFile+"\" border=\"0\" alt=\""+speedTip+"\" title=\""+speedTip+"\""+mouseOver+">");
  
  
  


wkpark      2009/04/18 06:18:10

  Modified:    .        wikilib.php wiki.php
  Log:
  oops! fixed last change
  
  Revision  Changes    Path
  1.271     +4 -4      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.270
  retrieving revision 1.271
  diff -u -r1.270 -r1.271
  --- wikilib.php	7 Apr 2009 21:25:17 -0000	1.270
  +++ wikilib.php	17 Apr 2009 21:18:10 -0000	1.271
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.270 2009/04/07 21:25:17 wkpark Exp $
  +// $Id: wikilib.php,v 1.271 2009/04/17 21:18:10 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -458,7 +458,7 @@
          $val=substr($line,$p+1,-1);
          $info[$key]=$val;
       }
  -    $user=new User($id);
  +    $user=new WikiUser($id);
       $user->info=$info;
       return $user;
     }
  @@ -488,8 +488,8 @@
     }
   }
   
  -class User {
  -  function User($id="") {
  +class WikiUser {
  +  function WikiUser($id="") {
        if ($id) {
           $this->setID($id);
           return;
  
  
  
  1.465     +9 -6      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.464
  retrieving revision 1.465
  diff -u -r1.464 -r1.465
  --- wiki.php	17 Apr 2009 17:25:24 -0000	1.464
  +++ wiki.php	17 Apr 2009 21:18:10 -0000	1.465
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.464 2009/04/17 17:25:24 wkpark Exp $
  +// $Id: wiki.php,v 1.465 2009/04/17 21:18:10 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.464 $',1,-1);
  +$_revision = substr('$Revision: 1.465 $',1,-1);
   $_release = '1.1.4-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -565,6 +565,7 @@
       if ($options['init']) {
         $script= preg_replace("/\/([^\/]+)\.php$/","/monisetup.php",
                  $_SERVER['SCRIPT_NAME']);
  +      if (is_string($options['init'])) $script .= '?init='.$options['init'];
         header("Location: $script");
         exit;
       }
  @@ -703,7 +704,8 @@
       $this->imgs_dir_url=$this->imgs_dir.'/';
       $this->imgs_dir_interwiki=$this->imgs_dir.'/';
   
  -    $imgs_realdir=basename($this->imgs_dir);
  +    $doc_root = getenv("DOCUMENT_ROOT"); // for Unix
  +    $imgs_realdir= $doc_root.$this->imgs_dir;
       if (file_exists($imgs_realdir.'/interwiki/'.'moniwiki-16.png'))
         $this->imgs_dir_interwiki=$this->imgs_dir.'/interwiki/';
   
  @@ -715,6 +717,7 @@
       $ext='png';
       if (is_dir($imgs_realdir.'/'.$iconset)) $iconset.='/';
       else $iconset.='-';
  +
       if (!file_exists($imgs_realdir.'/'.$iconset.'home.png')) $ext='gif';
   
       if (file_exists($imgs_realdir.'/'.$iconset.'http.png'))
  @@ -5146,11 +5149,11 @@
     global $DBInfo;
   
     if (!empty($DBInfo->user_class)) {
  -    include_once('user/'.$DBInfo->user_class.'.php');
  -    $class = 'User_'.$this->user_class;
  +    include_once('plugin/user/'.$DBInfo->user_class.'.php');
  +    $class = 'User_'.$DBInfo->user_class;
       $user = new $class();
     } else {
  -    $user = new User();
  +    $user = new WikiUser();
     }
   
     $udb=new UserDB($DBInfo);
  
  
  


wkpark      2009/04/18 06:18:10

  Modified:    plugin/user nforge.php
  Log:
  oops! fixed last change
  
  Revision  Changes    Path
  1.2       +14 -4     moniwiki/plugin/user/nforge.php
  
  Index: nforge.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/user/nforge.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- nforge.php	17 Apr 2009 17:25:25 -0000	1.1
  +++ nforge.php	17 Apr 2009 21:18:10 -0000	1.2
  @@ -9,15 +9,15 @@
   // Name: nFORGE Unix based User plugin
   // Description: nFORGE Unix user plugin
   // URL: MoniWiki:NForgeUserPlugin
  -// Version: $Revision: 1.1 $
  +// Version: $Revision: 1.2 $
   // License: GPL
   //
   // Usage: set $user_class = 'nforge'; in the config.php
   //
  -// $Id: nforge.php,v 1.1 2009/04/17 17:25:25 wkpark Exp $
  +// $Id: nforge.php,v 1.2 2009/04/17 21:18:10 wkpark Exp $
   
  -class User_nforge extends User {
  -    function WikiUser($id = '') {
  +class User_nforge extends WikiUser {
  +    function User_nforge($id = '') {
           if ($id) {
               $this->setID($id);
               $u =& user_get_object_by_name($id);
  @@ -36,6 +36,16 @@
           $this->tz_offset=isset($_COOKIE['MONI_TZ']) ?_stripslashes($_COOKIE['MONI_TZ']):'';
           $this->nick=isset($_COOKIE['MONI_NICK']) ?_stripslashes($_COOKIE['MONI_NICK']):'';
           if ($this->tz_offset == '') $this->tz_offset = date('Z');
  +
  +        if (!empty($id)) {
  +            global $DBInfo;
  +            $udb = new UserDB($DBInfo);
  +
  +            if (!$udb->_exists($id)) {
  +                $this->ticket = md5(time());
  +	        $dummy=$udb->saveUser($this);
  +            }
  +        }
       }
   }
   
  
  
  


wkpark      2009/04/18 06:23:51

  Modified:    .        monisetup.php
  Log:
   * support init arg like as ?init=config.php.my to make a config.php based on the user specific file.
   * set $include_path correctly.
   * find the wikiseed dir correctly
  
  Revision  Changes    Path
  1.42      +40 -16    moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.41
  retrieving revision 1.42
  diff -u -r1.41 -r1.42
  --- monisetup.php	9 Apr 2009 16:30:35 -0000	1.41
  +++ monisetup.php	17 Apr 2009 21:23:51 -0000	1.42
  @@ -1,7 +1,7 @@
   <?php
   // Copyright 2003-2007 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.41 2009/04/09 16:30:35 wkpark Exp $
  +// $Id: monisetup.php,v 1.42 2009/04/17 21:23:51 wkpark Exp $
   
   function _stripslashes($str) {
     return get_magic_quotes_gpc() ? stripslashes($str):$str;
  @@ -19,11 +19,11 @@
       }
     }
   
  -  function getDefaultConfig() {
  -    $this->config=$this->_getConfig("config.php.default");
  +  function getDefaultConfig($configfile = 'config.php.default') {
  +    $this->config=$this->_getConfig($configfile);
   
       $hostconfig=$this->_getHostConfig();
  -    $this->rawconfig=array_merge($this->_rawConfig("config.php.default"),$hostconfig);
  +    $this->rawconfig=array_merge($this->_rawConfig($configfile),$hostconfig);
       while (list($key,$val)=each($hostconfig)) {
         eval("\$$key=$val;");
         eval("\$this->config[\$key]=$val;");
  @@ -90,7 +90,14 @@
       }
   
       if (!file_exists('wikilib.php')) {
  -      $config['include_path']="'.:/usr/local/share/moniwiki:/usr/share/moniwiki'";
  +      $checkfile = array('index.php','plugin');
  +      $dir='';
  +      foreach ($checkfile as $f) {
  +        if (is_link($f)) {
  +          $dir = dirname(readlink($f));
  +        }
  +      }
  +      $config['include_path']="'.:$dir'";
       }
       print '</div>';
       return $config;
  @@ -574,21 +581,29 @@
   }
   
   function show_wikiseed($config,$seeddir='wikiseed') {
  -  $path='.:/usr/share/moniwiki:/usr/local/share/moniwiki';
  +  if ($config['include_path'])
  +    $path = $config['include_path'];
  +  else
  +    $path='.:/usr/share/moniwiki:/usr/local/share/moniwiki';
     $pages= array();
     foreach (explode(':',$path) as $dir) {
  -    $handle= @opendir($dir.'/'.$seeddir);
  -    if ($handle) {
  +    if (is_dir($dir.'/'.$seeddir)) {
         $seeddir=$dir.'/'.$seeddir;
         break;
  +    } else if (is_dir($dir.'/data/text') and file_exists($dir.'/data/text/FrontPage')) {
  +      $seeddir=$dir.'/data/text';
  +      break;
       }
     }
  -  while ($file = readdir($handle)) {
  -    if (is_dir($seeddir."/".$file)) continue;
  -    $pagename = keyToPagename($file);
  -    $pages[$pagename] = $pagename;
  +  $handle= @opendir($seeddir);
  +  if (is_resource($handle)) {
  +    while ($file = readdir($handle)) {
  +      if (is_dir($seeddir."/".$file)) continue;
  +      $pagename = keyToPagename($file);
  +      $pages[$pagename] = $pagename;
  +    }
  +    closedir($handle);
     }
  -  closedir($handle);
   #  sort($pages);
     $idx=1;
   
  @@ -681,12 +696,18 @@
   }
   
   function sow_wikiseed($config,$seeddir='wikiseed',$seeds) {
  -  $path='.:/usr/share/moniwiki:/usr/local/share/moniwiki';
  +  if ($config['include_path'])
  +    $path = $config['include_path'];
  +  else
  +    $path='.:/usr/share/moniwiki:/usr/local/share/moniwiki';
     $pages= array();
     foreach (explode(':',$path) as $dir) {
       if (is_dir($dir.'/'.$seeddir)) {
         $seeddir=$dir.'/'.$seeddir;
         break;
  +    } else if (is_dir($dir.'/data/text') and file_exists($dir.'/data/text/FrontPage')) {
  +      $seeddir=$dir.'/data/text';
  +      break;
       }
     }
     umask(0133);
  @@ -1028,7 +1049,10 @@
   
     if (!$Config->config) {
       print "<h2>"._t("Welcome to MoniWiki ! This is your first installation")."</h2>\n";
  -    $Config->getDefaultConfig();
  +    $initconfig = 'config.php.default';
  +    if (!empty($_GET['init']) and file_exists($_GET['init']))
  +      $initconfig = $_GET['init'];
  +    $Config->getDefaultConfig($initconfig);
       $config=$Config->config;
   
       checkConfig($config);
  @@ -1036,7 +1060,7 @@
       $rawconfig=$Config->rawconfig;
       print "<h3 color='blue'>"._t("Default settings are loaded...")."</h3>\n";
   
  -    $rawconf=$Config->_genRawConfig($rawconfig);
  +    $rawconf=$Config->_genRawConfig($rawconfig, 0, 'config.php', $initconfig);
       umask(000);
       $fp=fopen("config.php","w");
       fwrite($fp,$rawconf);
  
  
  


wkpark      2009/04/18 12:18:31

  Modified:    .        config.php.default
  Log:
  update and cleanup
  
  Revision  Changes    Path
  1.53      +42 -43    moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.52
  retrieving revision 1.53
  diff -u -r1.52 -r1.53
  --- config.php.default	2 Jan 2009 17:07:57 -0000	1.52
  +++ config.php.default	18 Apr 2009 03:18:30 -0000	1.53
  @@ -1,6 +1,7 @@
   <?php
  +# This is a default 
   #
  -# $Id: config.php.default,v 1.52 2009/01/02 17:07:57 wkpark Exp $
  +# $Id: config.php.default,v 1.53 2009/04/18 03:18:30 wkpark Exp $
   #
   $sitename='UnnamedWiki'; # site name
   $data_dir= './data';
  @@ -23,35 +24,38 @@
   $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;
  -$use_hostname= 1;
  -$mask_hostname=1; # hide hostname or ip address
  -$edit_rows=16;
  -$iconset= 'moni2';
  -$inline_latex=0;
  +$use_counter= 0; # counter
  +$use_hostname= 1; # use hostname or ip address
  +$mask_hostname=1; # hide some part of hostnames or ip addresses
  +$edit_rows=16; # editer rows
  +$iconset= 'moni2'; # moni, moni2
  +$inline_latex=0; # 0/1(on/off), mimetex, itex, etc.
   #$inline_latex='mimetex';
  +#$mimetex_path='/cgi-bin/mimetex.cgi'; # cgi mode
  +#$mimetex_path='shell:mimetex'; # command line mode
  +#$mimetex_path='shell:/usr/bin/mimetex';
  +#$inline_latex='latex';
  +#$inline_latex='itex'; # use alternative inline latex (experimental)
  +#$inline_latex='1'; # use inline latex (default)
   #$latex_convert_options='-crop 0x0 -density 120x120'; # change convert options for the latex processor
   #$latex_renumbering=1; # renumbering tex equations
  -#$latex_allinone=1; # XXX
  -$lang='auto';
  -$charset='utf-8';
  -#$charset='euc-kr';
  -$auto_linebreak= 0;
  -$trail= 1;
  -#$origin=1;
  +#$latex_allinone=1; # experimental feature. make a temporary latex file into all in one text.
  +$lang='auto'; # check language automatically.
  +$charset='utf-8'; # default character set. euc-kr etc.
  +$auto_linebreak= 0; # NoSmoke style insert <br> automatically.
  +$trail= 1; # 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;
  -#$notify= 0; # enable email notification
  -$use_referer= 0;
  -$use_sistersites=1;
  -#$use_singlebracket=1;
  +$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"';
  -#$vim_options='+"set expandtab" +"retab" +"let g:html_use_css=0"';
  -# with vim7.1 but hang... why ? :(
  -$pds_allowed="png|jpg|jpeg|gif|mp3|zip|tgz|gz|txt|css|exe|hwp|pdf|flv";
  +$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';
   #$nonexists='nolink'; # do not link non exists pages
   #$nonexists='forcelink'; # link always
  @@ -60,23 +64,24 @@
   #$security_class="needtologin";
   #$security_class="desktop";
   #$security_class="wikimaster";
  +#$security_class="community";
   #$wikimasters=array('CsKim','SjPark');
   #$owners=array('moniwiki','Hong');
   
   #$menu=array('MoniWiki'=>1,'FindPage'=>4,'TitleIndex'=>3,'BlogChanges'=>'','RecentChanges'=>2,'http://kldp.org KLDP'=>9);
   $menu=array('FrontPage'=>1,'FindPage'=>4,'TitleIndex'=>3,'RecentChanges'=>2,'UserPreferences'=>'');
  -#$menu_sep='|';
  -#$menu_bra='';
  -#$menu_cat='';
  +#$menu_sep='|'; # obsolute
  +#$menu_bra=''; # obsolute
  +#$menu_cat=''; # obsolut
   #$path='/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin'; # for unixes
   #$path='./bin;c:/windows/command;c:/Program Files/gnuplot;c:/Program Files/vim/vim71'; # for win32
   #$path='./bin;C:/Program Files/MiKTeX 2.5/miktex/bin;C:/Program Files/ImageMagick-6.3.6-Q16'; # for MikTeX
   # ./bin to use user installed bins.
  -$theme='azblue2';
  -$theme_css=0;
  -$hr='';
  -#$title_rule='((?<=[a-z0-9])[A-Z][a-z0-9])';
  -#$blog_comments=1; # show all comments
  +$theme='azblue2'; # set the theme
  +$theme_css=0; # change css of theme or not
  +$hr=''; # obsolute
  +#$title_rule='((?<=[a-z0-9])[A-Z][a-z0-9])'; #
  +#$blog_comments=1; # show all comments of a blog entry
   
   #$date_fmt='Y-m-d';
   #$date_fmt_rc='Y-m-d';
  @@ -96,7 +101,7 @@
   <link rel="Alternate" title="Wiki Markup" type="text/plain" href="?action=raw" />
   META;
   
  -# set global javascripts
  +# set global javascripts (lowlevel)
   #$js=<<<EOF
   #<script type="text/javascript" src="$url_prefix/local/ajax.js"></script>
   #<script type="text/javascript" src="$url_prefix/local/se.js"></script>
  @@ -116,7 +121,7 @@
   #<script type="text/javascript" src="$url_prefix/local/autocomplete.js"></script>
   #<script type="text/javascript" src="$url_prefix/local/subindex.js"></script>
   #EOF;
  -# alternatively you can use the $javascripts option
  +# alternatively you can use the $javascripts option (more inteligent method)
   $javascripts=array(
   	'js/i18n.js',
   	'Wikiwyg/lib/Wikiwyg.js',
  @@ -134,8 +139,8 @@
   #$goto_type=1;
   
   #$purple_icon=''; # obsolute
  -#$use_purple='';
  -#$perma_icon='<img src="/wiki/imgs/egg.png" border="0" />';
  +#$use_purple=''; # obsolute
  +#$perma_icon='<img src="/wiki/imgs/egg.png" border="0" />'; # obsolute
   $perma_icon='&#xB6;';
   #$pagetype=array("KldpDsl"=>"plain","ManPage"=>"/man","DocbookSgml"=>"/jade","LinuxDoc"=>"/linuxdoc");
   # set default processor for jade
  @@ -153,13 +158,6 @@
   );
   #$myprocessors=array('latex'=>'mimetex');
   #$myplugins=array('FullSearch'=>'FastSearch'); # substitute action/macro
  -#$inline_latex='mimetex';
  -#$mimetex_path='/cgi-bin/mimetex.cgi'; # cgi mode
  -#$mimetex_path='shell:mimetex'; # command line mode
  -#$mimetex_path='shell:/usr/bin/mimetex';
  -#$inline_latex='latex';
  -#$inline_latex='itex'; # use alternative inline latex (experimental)
  -#$inline_latex='1'; # use inline latex (default)
   
   #$url_schemas='mms';
   #$blacklist='127.0.0.0/24:192.168.1.0/24:192.168.1.67'; # block ip
  @@ -274,4 +272,5 @@
   #$security_class_robot='robot';
   #$url_encodings='euc-kr,uhc'; # autogoto option: search invalid urls with different encodings
   #$use_scrap=1; # use scrap
  -?>
  +#$login_strict=0; # strict check
  +#$use_userlink=0; # replace the UserPreference link to the UserHomePage
  
  
  


wkpark      2009/04/18 12:20:45

  Modified:    .        Makefile moni-install.in monisetup.php
  Log:
  Makefile: add a missing dir. use symlinks
  moni-install: $MAIN option added
  
  Revision  Changes    Path
  1.4       +2 -2      moniwiki/Makefile
  
  Index: Makefile
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/Makefile,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Makefile	19 Jul 2006 23:57:08 -0000	1.3
  +++ Makefile	18 Apr 2009 03:20:45 -0000	1.4
  @@ -6,14 +6,14 @@
   	mkdir -p $(DESTDIR)$(prefix)/share/moniwiki/data
   	cp data/*.* $(DESTDIR)$(prefix)/share/moniwiki/data
   	cp -ar wikiseed imgs css $(DESTDIR)$(prefix)/share/moniwiki
  -	cp -ar lib plugin $(DESTDIR)$(prefix)/share/moniwiki
  +	cp -ar lib plugin local $(DESTDIR)$(prefix)/share/moniwiki
   	cp -ar locale tools $(DESTDIR)$(prefix)/share/moniwiki
   	cp -ar local config $(DESTDIR)$(prefix)/share/moniwiki
   	cp -ar theme $(DESTDIR)$(prefix)/share/moniwiki
   	cp -ar applets $(DESTDIR)$(prefix)/share/moniwiki
   	cp wiki.php wikilib.php $(DESTDIR)$(prefix)/share/moniwiki
   	cp wikismiley.php $(DESTDIR)$(prefix)/share/moniwiki
  -	cp config.php.default monisetup.php $(DESTDIR)$(prefix)/share/moniwiki
  +	cp config.php.* monisetup.php $(DESTDIR)$(prefix)/share/moniwiki
   	cp monisetup.sh secure.sh $(DESTDIR)$(prefix)/share/moniwiki
   	cp moni-install $(DESTDIR)$(prefix)/share/moniwiki/bin
   
  
  
  
  1.5       +23 -9     moniwiki/moni-install.in
  
  Index: moni-install.in
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/moni-install.in,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- moni-install.in	19 Jul 2006 23:58:19 -0000	1.4
  +++ moni-install.in	18 Apr 2009 03:20:45 -0000	1.5
  @@ -5,18 +5,32 @@
   echo "+------------------------------------+"
   echo
   
  -INSTDIR=@@INSTDIR@@
  +if [ -z $INSTDIR ]; then
  +  INSTDIR=@@INSTDIR@@
  +fi
  +
  +if [ -z $MAIN ]; then
  +  MAIN=wiki.php
  +fi
  +
   [ ! -d data ] && cp -a $INSTDIR/data .
  -[ ! -d imgs ] && cp -a $INSTDIR/imgs .
  -[ ! -d theme ] && cp -a $INSTDIR/theme .
  -[ ! -d css ] && cp -a $INSTDIR/css .
  -[ ! -d local ] && cp -a $INSTDIR/local .
  -[ ! -d config ] && cp -a $INSTDIR/config .
  -[ ! -d applets ] && cp -a $INSTDIR/applets .
  -cp $INSTDIR/{monisetup.*,secure.sh,config.php.default} .
  +[ ! -d imgs ] && ln -s $INSTDIR/imgs .
  +[ ! -d images ] && ln -s $INSTDIR/imgs .
  +[ ! -d theme ] && ln -s $INSTDIR/theme .
  +[ ! -d css ] && ln -s $INSTDIR/css .
  +[ ! -d local ] && ln -s $INSTDIR/local .
  +[ ! -d locale ] && ln -s $INSTDIR/locale .
  +[ ! -d config ] && ln -s $INSTDIR/config .
  +[ ! -d applets ] && ln -s $INSTDIR/applets .
  +[ ! -d plugin ] && ln -s $INSTDIR/plugin .
  +[ ! -f config.php.default ] && ln -s $INSTDIR/config.php.default .
  +[ ! -f monisetup.php ] && ln -s $INSTDIR/monisetup.php .
  +conf=`ls $INSTDIR/config.php.*|grep -v config.php.default`
  +cp -a $INSTDIR/{monisetup.sh,secure.sh} .
  +cp -a $conf .
   
   cat <<PHP >index.php
   <?php
  -include("$INSTDIR/wiki.php");
  +include("$INSTDIR/$MAIN");
   ?>
   PHP
  
  
  
  1.43      +2 -2      moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.42
  retrieving revision 1.43
  diff -u -r1.42 -r1.43
  --- monisetup.php	17 Apr 2009 21:23:51 -0000	1.42
  +++ monisetup.php	18 Apr 2009 03:20:45 -0000	1.43
  @@ -1,7 +1,7 @@
   <?php
   // Copyright 2003-2007 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.42 2009/04/17 21:23:51 wkpark Exp $
  +// $Id: monisetup.php,v 1.43 2009/04/18 03:20:45 wkpark Exp $
   
   function _stripslashes($str) {
     return get_magic_quotes_gpc() ? stripslashes($str):$str;
  @@ -90,7 +90,7 @@
       }
   
       if (!file_exists('wikilib.php')) {
  -      $checkfile = array('index.php','plugin');
  +      $checkfile = array('plugin','locale');
         $dir='';
         foreach ($checkfile as $f) {
           if (is_link($f)) {
  
  
  


wkpark      2009/04/18 15:28:29

  Modified:    .        wikilib.php
  Log:
  extract the HTML macro plugin
  
  Revision  Changes    Path
  1.272     +1 -5      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.271
  retrieving revision 1.272
  diff -u -r1.271 -r1.272
  --- wikilib.php	17 Apr 2009 21:18:10 -0000	1.271
  +++ wikilib.php	18 Apr 2009 06:28:29 -0000	1.272
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.271 2009/04/17 21:18:10 wkpark Exp $
  +// $Id: wikilib.php,v 1.272 2009/04/18 06:28:29 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2494,10 +2494,6 @@
   }
   
   
  -function macro_HTML($formatter,$value) {
  -  return str_replace("&lt;","<",$value);
  -}
  -
   function macro_BR($formatter) {
     return "<br class='macro' />\n";
   }
  
  
  


wkpark      2009/04/18 15:28:30

  Added:       plugin   HTML.php
  Log:
  extract the HTML macro plugin
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/HTML.php
  
  Index: HTML.php
  ===================================================================
  <?php
  // Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a sample plugin for the MoniWiki
  //
  // Author: Your name <foobar@foo.bar>
  // Date: 2006-01-01
  // Name: a simple HTML macro plugin
  // Description: a simple macro plugin
  // URL: to_plugin url/interwiki name etc.
  // Version: $Revision: 1.1 $
  // License: GPL
  //
  // Usage: [[HTML(<font size="+6">Hello World!</font>)]]
  //
  // $Id: HTML.php,v 1.1 2009/04/18 06:28:29 wkpark Exp $
  
  function macro_HTML($formatter,$value) {
    return str_replace("&lt;","<",$value);
  }
  
  // vim:et:sts=4:sw=4:
  ?>
  
  
  


wkpark      2009/04/18 16:21:08

  Modified:    css      kbd.js
  Log:
  fix for nFORGE. configuarable name of the go input form
  fixed last changes. check extra input fields correctly.
  
  Revision  Changes    Path
  1.18      +14 -13    moniwiki/css/kbd.js
  
  Index: kbd.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/kbd.js,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- kbd.js	26 Dec 2008 16:55:02 -0000	1.17
  +++ kbd.js	18 Apr 2009 07:21:08 -0000	1.18
  @@ -6,7 +6,7 @@
   
      distributable under GPL
   
  -   $Id: kbd.js,v 1.17 2008/12/26 16:55:02 wkpark Exp $
  +   $Id: kbd.js,v 1.18 2009/04/18 07:21:08 wkpark Exp $
   
      CHANGES
   
  @@ -70,6 +70,7 @@
   
   // go form ID
   _go= "go";
  +_govalue= _govalue || "value";
   _ap = _qp == '/' ? '?':'&';
   var is_safari = navigator.appVersion.toLowerCase().indexOf('safari') != -1;
   
  @@ -87,7 +88,7 @@
   		// safari/chrome
   		var go=document.getElementById(_go);
   		var goValue=null;
  -		if (go) goValue=go.elements['value'];
  +		if (go) goValue=go.elements[_govalue];
   
   		if ( goValue && e.charCode != undefined && e.keyCode == 27) {
   			// 'ESC' key
  @@ -141,8 +142,8 @@
   	var val, stat, act;
   	go=document.getElementById(_go);
           if (go) {
  -		goValue=go.elements['value'];
  -		goAction=go.elements['action'];
  +		goValue=go.elements[_govalue];
  +		goAction=go.elements['action'] || null;
   		goStatus=go.elements['status'] || null;
   		val = goValue.value || "", act="goto";
   		stat = goStatus ? goStatus.value:null;
  @@ -204,7 +205,7 @@
   				}
   				if (val == "/" || val == "?") val=val.substr(0,val.length-1);
   				go ? goValue.value=val:null;
  -				go ? goAction.value=act:null;
  +				goAction ? goAction.value=act:null;
   				go && goStatus ? goStatus.value=stat:null;
   				return;
   			}
  @@ -221,15 +222,15 @@
   	switch(ch || cc) {
   	case '?':
   		// Title search as vi way
  -		go ? goAction.value="titlesearch":null;
  -		go ? goStatus.value='?':null;
  -		go ? goValue.focus():null;
  +		goAction ? goAction.value="titlesearch":null;
  +		goStatus ? goStatus.value='?':null;
  +		goValue ? goValue.focus():null;
   		break;
   	case '/':
   		// Contents search
  -		go ? goAction.value="fullsearch":null;
  -		go ? goStatus.value='/':null;
  -		go ? goValue.focus():null;
  +		goAction ? goAction.value="fullsearch":null;
  +		goStatus ? goStatus.value='/':null;
  +		goValue ? goValue.focus():null;
   		break;
   	case 27: // 'ESC' key
   		go ? goValue.focus():null;
  @@ -298,9 +299,9 @@
   function moin_submit(form) {
   	if (form == null) form=document.getElementById(_go);
   	if (form == null) return true;
  -	if (form.elements['value'].value.replace(/\s+/,'') == "") return false;
  +	if (form.elements[_govalue].value.replace(/\s+/,'') == "") return false;
   	if (form.elements['action'].value =="goto") {
  -		go.elements['value'].name='goto';
  +		go.elements[_govalue].name='goto';
   		go.elements['action'].name='';
   		return true;
   	}
  
  
  


wkpark      2009/04/18 17:38:58

  Modified:    plugin/user nforge.php
  Log:
  fixed last change
  
  Revision  Changes    Path
  1.3       +2 -3      moniwiki/plugin/user/nforge.php
  
  Index: nforge.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/user/nforge.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- nforge.php	17 Apr 2009 21:18:10 -0000	1.2
  +++ nforge.php	18 Apr 2009 08:38:58 -0000	1.3
  @@ -9,12 +9,12 @@
   // Name: nFORGE Unix based User plugin
   // Description: nFORGE Unix user plugin
   // URL: MoniWiki:NForgeUserPlugin
  -// Version: $Revision: 1.2 $
  +// Version: $Revision: 1.3 $
   // License: GPL
   //
   // Usage: set $user_class = 'nforge'; in the config.php
   //
  -// $Id: nforge.php,v 1.2 2009/04/17 21:18:10 wkpark Exp $
  +// $Id: nforge.php,v 1.3 2009/04/18 08:38:58 wkpark Exp $
   
   class User_nforge extends WikiUser {
       function User_nforge($id = '') {
  @@ -42,7 +42,6 @@
               $udb = new UserDB($DBInfo);
   
               if (!$udb->_exists($id)) {
  -                $this->ticket = md5(time());
   	        $dummy=$udb->saveUser($this);
               }
           }
  
  
  


wkpark      2009/04/18 17:40:25

  Modified:    plugin   Diff.php
  Log:
  support 'code' style diff
  
  Revision  Changes    Path
  1.21      +204 -1    moniwiki/plugin/Diff.php
  
  Index: Diff.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Diff.php,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- Diff.php	5 Apr 2009 06:52:14 -0000	1.20
  +++ Diff.php	18 Apr 2009 08:40:25 -0000	1.21
  @@ -3,7 +3,210 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a diff plugin for the MoniWiki
   //
  -// $Id: Diff.php,v 1.20 2009/04/05 06:52:14 wkpark Exp $
  +// $Id: Diff.php,v 1.21 2009/04/18 08:40:25 wkpark Exp $
  +
  +
  +function code_diff($diff, $options = array()) {
  +  global $Config;
  +  include_once("lib/difflib.php");
  +  $click = '';
  +  $numid = '';
  +  $divs = array();
  +  $anums = array();
  +  $fid = 0;
  +
  +  $header = '';
  +  $buf = str_replace('<','&lt;', $diff);
  +  #$buf = str_replace(array('<',"\t"),array('&lt;','        '), $diff);
  +  $lines = explode("\n",$buf);
  +  $sz = sizeof($lines);
  +  $i = 0;
  +  while($i < $sz) {
  +    for (; $i < $sz; $i++) {
  +      if ($lines[$i]{0} == '@') {
  +        break;
  +      } else if (preg_match('/^-{3} ([^ \t]+)/',$lines[$i], $m)
  +        and preg_match('/^\+{3} /',$lines[$i+1])) {
  +        // get filename
  +        //$files[] = $m[1];
  +        break;
  +      } else if (preg_match('/^={66}/',$lines[$i])) {
  +        $lines[$i] = "\n";
  +      }
  +      $header .= $lines[$i];
  +    }
  +    $omarker = 0;
  +    $orig = array();
  +    $new = array();
  +
  +    // for pre block
  +    $br="\n"; $nl='';
  +    // for div block
  +    #$br="<br />"; $nl="\n";
  +    $next_patch = 0;
  +    for (;$i < $sz; $i++) {
  +      $line = $lines[$i];
  +      $marker = $line{0};
  +      if (in_array($marker, array('-','+','@',' '))) $line = substr($line, 1);
  +      else {
  +        if (empty($new) and empty($orig)) break;
  +        $next_patch = 1;
  +      }
  +      if ($marker=='@' and preg_match('/^@\s\-(\d+)(?:,\d+)?\s\+(\d+)(?:,\d+)?\s@@/',$line,$mat)) {
  +        $orig = array(); $new=array();
  +        $omarker = 0;
  +        $lp = intval($mat[2]); $lm = intval($mat[1]);
  +
  +        $line = '<div class="diff-sep">@' . "$line</div>";
  +        $out .= $line . $nl;
  +        continue;
  +      }
  +      else if ($marker == "-") {
  +        $omarker = 1; $orig[] = $line; continue;
  +      }
  +      else if ($marker == "+") {
  +        $omarker = 1; $new[] = $line; continue;
  +      }
  +      else if ($marker == "\\") continue;
  +      else if ($omarker) {
  +        $tabidx = ' tabindex="'.($anum + 1).'"';
  +        $bp = "<a href='#' name='#cr_view".$anum."' id='cr_view".$anum."' class='diffBlock'></a>";
  +
  +        $anums[] = $fid;
  +        $anum++;
  +
  +        $count = sizeof($new);
  +        $ocount = sizeof($orig);
  +
  +        $omarker = 0;
  +        $buf = '';
  +        $result = new WordLevelDiff($orig, $new, $Config['charset']);
  +        if (1 or $options['oldstyle']) {
  +          foreach ($result->orig() as $ll) {
  +            if (isset($fid)) {
  +              $key = "f$fid"."_o$lm";
  +              $anchor = "<a name='but_f$fid"."_o$lm' href='#'></a>";
  +              $cmtag = '';
  +              if (isset($review_ar[$key])) {
  +                $cmtag = "<span class='commentflag selected' onmouseover=\"df_view('overdiv_$key')\" onmouseout=\"hide_div('overdiv_$key')\">".
  +                  $anchor. $review_ar[$key]['count'] . "</span>";
  +
  +                $overdivs .= "<div id='overdiv_$key' class='reviewComment'>\n".
  +                "<strong>".$review_ar[$key]['user']." ".$review_ar[$key]['date']."</strong><br>\n".
  +                nl2br($review_ar[$key]['body']);
  +                for ($li=2; $li <= $review_ar[$key]['count']; $li++) {
  +                  $aikey = 'ai'.$li.$key;
  +                  $overdivs .= "<br><br>\n<strong>".$review_ar[$aikey]['user']." ".
  +                    $review_ar[$aikey]['date']."</strong><br>\n".
  +                    nl2br($review_ar[$aikey]['body']);
  +                }
  +                $overdivs .= "</div>\n";
  +              } else {
  +                $cmtag = $anchor."<span class='commentflag'></span>";
  +              }
  +              $click = " onclick=\"ccmt('o$lm', '$fid');\"";
  +              $numid = " id='f$fid"."_o$lm'";
  +            }
  +            $lm1 = $lm;
  +            if ($tabidx) {
  +              $lm1 = "<a href='#but_f$key'$tabidx>".$lm.'</a>';
  +              $tabidx = '';
  +            }
  +
  +            $lll = preg_replace('/^\s*(<div[^>]+>)/',
  +                "$1<span class='num'>$lm1</span>",$ll,1);
  +            if ($lll == $ll) $lmm = "<span class='num'>$lm1</span>";
  +            $buf.= "<div class=\"diff-removed\"$numid$click>$bp$cmtag$lmm$lll</div>".$nl;
  +            $lmm = '';
  +            $bp = '';
  +            $lm++;
  +          }
  +          foreach ($result->_final() as $ll) {
  +            if (isset($fid)) {
  +              $key = "f$fid"."_n$lp";
  +              $anchor = "<a name='but_f$fid"."_n$lp'></a>";
  +              $cmtag = '';
  +              if (isset($review_ar[$key])) {
  +                $cmtag = "<span class='commentflag selected' onmouseover=\"df_view('overdiv_$key')\" onmouseout=\"hide_div('overdiv_$key')\">".
  +                  $anchor. $review_ar[$key]['count'] . "</span>";
  +
  +                $overdivs .= "<div id='overdiv_$key' class='reviewComment'>\n".
  +                "<strong>".$review_ar[$key]['user']." ".$review_ar[$key]['date']."</strong><br>\n".
  +                nl2br($review_ar[$key]['body']);
  +                for ($li=2; $li <= $review_ar[$key]['count']; $li++) {
  +                  $aikey = 'ai'.$li.$key;
  +                  $overdivs .= "<br><br>\n<strong>".$review_ar[$aikey]['user']." ".
  +                    $review_ar[$aikey]['date']."</strong><br>\n".
  +                    nl2br($review_ar[$aikey]['body']);
  +                }
  +                $overdivs .= "</div>\n";
  +              } else {
  +                $cmtag = $anchor."<span class='commentflag'></span>";
  +              }
  +              $click = " onclick=\"ccmt('n$lp', '$fid');\"";
  +              $numid = " id='f$fid"."_n$lp'";
  +            }
  +            $lp1 = $lp;
  +            if ($tabidx) {
  +              $lp1 = "<a href='#but_f$key'$tabidx>".$lp.'</a>';
  +              $tabidx = '';
  +            }
  +
  +            $lll = preg_replace('/^\s*(<div[^>]+>)/',
  +                "$1<span class='num'>$lp1</span>",$ll,1);
  +            if ($lll == $ll) $lpp = "<span class='num'>$lp1</span>";
  +            $buf.= "<div class=\"diff-added\"$numid$click>$bp$cmtag$lpp$lll</div>".$nl;
  +            $lpp = '';
  +            $bp = '';
  +            $lp++;
  +          }
  +        } else {
  +          foreach ($result->all() as $ll)
  +            $buf.= "<div class=\"diff\"><span class='num'>$lp</span>$ll</div>".$nl;
  +        }
  +        $orig = array(); $new = array();
  +        $out .= $buf;
  +        if ($next_patch) {
  +          $i --;
  +          break;
  +        }
  +        $line .= $br;
  +        $line = '<span class="num">'.$lm.'</span>'.$line;
  +        $lp++;
  +        $lm++;
  +      }
  +      else if ($marker==" " and !$omarker) {
  +        $line .= $br;
  +        $line = '<span class="num">'.$lm.'</span>'.$line;
  +        $lp++;
  +        $lm++;
  +      } else {
  +        $line .= $br;
  +        $line = '<span class="num">'.$lm.'</span>'.$line;
  +        $lp++;
  +        $lm++;
  +      }
  +      $out .= $line . $nl;
  +    }
  +    $click = " onclick=\"var d=$('diffdiv$fid');d.style.display=(d.style.display=='none') ? 'block':'none'; hide_click_comment_div(); \"";
  +    $divs[] = "<div class='label2'$click><h4 class='h_label'><span>$header</span></h4></div>".'<pre>'.$out.'</pre>';
  +    $header = '';
  +    $out = '';
  +    if (isset($fid)) $fid ++;
  +  }
  +  $anumary = "'". implode("','", $anums) ."'";
  +
  +  $out = '';
  +  $j = 0;
  +  $divview = 'block'; # XXX
  +  foreach ($divs as $d) {
  +    $out .= "<div class='label_box codeDiff' id='diffdiv$j' style='display:$divview;'>".
  +      "<a name='difftit$j'></a>" . $d . "</div>\n";
  +    $j ++;
  +  }
  +
  +  return $out.$overdivs;
  +}
   
   function simple_diff($diff) {
     $diff=str_replace("<","&lt;",$diff);
  
  
  


wkpark      2009/04/19 00:02:55

  Modified:    .        monisetup.php
  Log:
   * read a config file with autodetected config variables.
   * uncomment some commented variables and preserve the order of defined val.
  
  Revision  Changes    Path
  1.44      +111 -51   moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.43
  retrieving revision 1.44
  diff -u -r1.43 -r1.44
  --- monisetup.php	18 Apr 2009 03:20:45 -0000	1.43
  +++ monisetup.php	18 Apr 2009 15:02:55 -0000	1.44
  @@ -1,7 +1,7 @@
   <?php
   // Copyright 2003-2007 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.43 2009/04/18 03:20:45 wkpark Exp $
  +// $Id: monisetup.php,v 1.44 2009/04/18 15:02:55 wkpark Exp $
   
   function _stripslashes($str) {
     return get_magic_quotes_gpc() ? stripslashes($str):$str;
  @@ -10,7 +10,9 @@
   class MoniConfig {
     function MoniConfig($configfile="config.php") {
       if (file_exists($configfile)) {
  -      $this->config=$this->_getConfig($configfile);
  +      $url_prefix= preg_replace("/\/([^\/]+)\.php$/","",$_SERVER['SCRIPT_NAME']);
  +      $config['url_prefix']=$url_prefix;
  +      $this->config=$this->_getConfig($configfile,$config);
         $this->rawconfig=$this->_rawConfig($configfile);
         $this->configdesc=$this->_getConfigDesc($configfile);
       } else {
  @@ -20,11 +22,12 @@
     }
   
     function getDefaultConfig($configfile = 'config.php.default') {
  -    $this->config=$this->_getConfig($configfile);
  -
       $hostconfig=$this->_getHostConfig();
  -    $this->rawconfig=array_merge($this->_rawConfig($configfile),$hostconfig);
  -    while (list($key,$val)=each($hostconfig)) {
  +    $this->config=$this->_getConfig($configfile,$hostconfig);
  +
  +    $hostconf = $this->_quote_config($hostconfig);
  +    $this->rawconfig=array_merge($this->_rawConfig($configfile),$hostconf);
  +    while (list($key,$val)=each($hostconf)) {
         eval("\$$key=$val;");
         eval("\$this->config[\$key]=$val;");
       }
  @@ -35,13 +38,13 @@
         print '<h3>'._t("Check a dba configuration").'</h3>';
         $tempnam="/tmp/".time();
         if ($db=@dba_open($tempnam,"n","db4"))
  -        $config['dba_type']="'db4'";
  +        $config['dba_type']="db4";
         else if ($db=@dba_open($tempnam,"n","db3"))
  -        $config['dba_type']="'db3'";
  +        $config['dba_type']="db3";
         else if ($db=@dba_open($tempnam,"n","db2"))
  -        $config['dba_type']="'db2'";
  +        $config['dba_type']="db2";
         else if ($db=@dba_open($tempnam,"n","gdbm"))
  -        $config['dba_type']="'gdbm'";
  +        $config['dba_type']="gdbm";
   
         if ($db) dba_close($db);
         print '<ul><li>'.sprintf(_t("%s is selected."),"<b>$config[dba_type]</b>").'</li></ul>';
  @@ -49,7 +52,7 @@
       preg_match("/Apache\/2\./",$_SERVER['SERVER_SOFTWARE'],$match);
   
       if ($match) {
  -      $config['query_prefix']='"?"';
  +      $config['query_prefix']='?';
         while (ini_get('allow_url_fopen')) {
           print '<h3>'._t("Check a AcceptPathInfo setting for Apache 2.x.xx").'</h3>';
           print '<ul>';
  @@ -67,7 +70,7 @@
             print "<li><b><a href='http://moniwiki.sf.net/wiki.php/AcceptPathInfo'>AcceptPathInfo</a> <font color='red'>"._t("Off")."</font></b></li>\n";
           } else {
             print "<li><b>AcceptPathInfo <font color='blue'>"._t("On")."</font></b></li>\n";
  -          $config['query_prefix']='"/"';
  +          $config['query_prefix']='/';
           }
           print '</ul>';
           break;
  @@ -75,18 +78,18 @@
       }
   
       $url_prefix= preg_replace("/\/([^\/]+)\.php$/","",$_SERVER['SCRIPT_NAME']);
  -    $config['url_prefix']="'".$url_prefix."'";
  +    $config['url_prefix']=$url_prefix;
   
       $user = getenv('LOGNAME');
       $user = $user ? $user : get_current_user();
  -    $config['rcs_user']="'".$user."'";
  +    $config['rcs_user']=$user;
   
       if(getenv("OS")=="Windows_NT") {
         $config['timezone']="'-09-09'";
         // http://kldp.net/forum/message.php?msg_id=7675
         // http://bugs.php.net/bug.php?id=22418
         //$config['version_class']="'RcsLite'";
  -      $config['path']="'./bin;c:/program files/vim/vimXX'";
  +      $config['path']="./bin;c:/program files/vim/vimXX";
       }
   
       if (!file_exists('wikilib.php')) {
  @@ -97,7 +100,7 @@
             $dir = dirname(readlink($f));
           }
         }
  -      $config['include_path']="'.:$dir'";
  +      $config['include_path']=".:$dir";
       }
       print '</div>';
       return $config;
  @@ -111,19 +114,20 @@
       $this->rawconfig=$config;
     }
   
  -  function _getConfig($configfile) {
  +  function _getConfig($configfile, $options = array()) {
       if (!file_exists($configfile))
         return array();
   
  -    $org=array();
  -    $org=get_defined_vars();
  +    extract($options);
  +    unset($options);
       include($configfile);
  -    $new=get_defined_vars();
  +    unset($configfile);
  +    $config=get_defined_vars();
   
  -    return array_diff($new,$org);
  +    return $config;
     }
   
  -  function _rawConfig($configfile) {
  +  function _rawConfig($configfile, $options = array()) {
       $lines=file($configfile);
       $key='';
       foreach ($lines as $line) {
  @@ -204,78 +208,130 @@
       return $conf;
     }
   
  -  function _genRawConfig($newconfig, $mode = 0, $configfile='config.php', $default='config.php.default') {
  -    if ($mode == 1) {
  -      foreach ($newconfig as $k=>$v) {
  -        if (is_string($v)) {
  -          $v='"'.$v.'"';
  -        } else if (is_bool($v)) {
  -          if ($v) $nline="true";
  -          else $v="false";
  -        }
  -        $newconfig[$k] = $v;
  +  function _quote_config($config) {
  +    foreach ($config as $k=>$v) {
  +      if (is_string($v)) {
  +        $v='"'.$v.'"'; // XXX need to check quotes
  +      } else if (is_bool($v)) {
  +        if ($v) $nline="true";
  +        else $v="false";
         }
  +      $config[$k] = $v;
       }
  +    return $config;
  +  }
  +
  +  function _genRawConfig($newconfig, $mode = 0, $configfile='config.php', $default='config.php.default') {
  +    if ($mode == 1)
  +      $newconfig = $this->_quote_config($newconfig);
   
       if (file_exists($configfile))
         $conf_file = $configfile;
       else if (file_exists($default))
         $conf_file = $default;
       else
  -      return _genRawConfigSimple($newconfig);
  +      return $this->_genRawConfigSimple($newconfig);
     
       $lines = file($conf_file);
   
  +    $config = array();
       $nlines='';
       $key='';
       $tag='';
       foreach ($lines as $line) {
         $line=rtrim($line)."\n"; // for Win32
   
  -      if (!$key and $line[0] != '$') {
  -        $nlines[]=$line;
  -        continue;
  +      if (!$key) {
  +        // first line
  +        if ($line{0} == '<' and $line{1} == '?') {
  +          $date = date('Y-m-d h:i:s');
  +          $nlines[]='<'.'?php'."\n";
  +          $nlines[]=<<<HEADER
  +# This is a config.php file for the MoniWiki
  +# automatically detect your environment and set some default variables.
  +# $date by monisetup.php\n
  +HEADER;
  +          continue;
  +        } else if (preg_match('/^(#{1,}\s*)?\$[a-zA-Z][a-zA-Z0-9_]*\s*=/', $line, $m)) {
  +          $marker = $m[1];
  +          if ($marker != '')
  +            $mre = '#{1,}';
  +          else
  +            $mre = '';
  +          $mlen = strlen($marker.'$');
  +        } else {
  +          $nlines[]=$line;
  +          continue;
  +        }
         }
   
         if ($key) {
           $val.=$line;
  -        if (!preg_match("/$tag\s*;(\s*#.*)?\s*$/",$line)) continue;
  +        if (!preg_match("/$tag\s*;(\s*#.*)?\s*$/",$line,$m)) continue;
  +        $mre = '';
  +        $desc[$key] = rtrim($m[1]);
         } else {
  -        list($key,$val)=explode('=',substr($line,1),2);
  +        list($key,$val)=explode('=',substr($line,$mlen),2);
           $key = trim($key);
  -        if (!preg_match('/\s*;(\s*#.*)?$/',$val,$match)) {
  -          if (substr($val,0,3)== '<<<') $tag='^'.substr(rtrim($val),3);
  -          else {
  +        if (!preg_match('/(\s*;(\s*#.*)?)$/',$val,$match)) {
  +          if (substr($val,0,3)== '<<<') {
  +            $tag='^'.$mre.substr(rtrim($val),3);
  +          } else {
               $val = ltrim($val);
               $tag = '';
             }
             continue;
           } else {
  -          if ($match[1]) {
  -            $desc[$key] = rtrim($match[1]);
  +          $val = substr($val,0,-strlen($match[1])-1);
  +          #$val .= '##########X'.$val.'==='.$match[1].'XX####';
  +          if ($match[2]) {
  +            $desc[$key] = rtrim($match[2]);
  +          } else {
  +            $desc[$key] = '';
             }
           }
         }
   
  -      if ($key) {
  +      if (trim($key)) {
  +        $t = true;
           if (isset($newconfig[$key])) {
  -          $val=$newconfig[$key];
  -          unset($newconfig[$key]);
  +          if (!isset($config[$key])) {
  +            $val=$newconfig[$key];
  +            $newconfig[$key] = NULL;
  +            $marker = ''; # uncomment marker
  +          }
           } else {
             $val=preg_replace(array('@<@','@>@'),array('&lt;','&gt;'),$val);
             #print $key.'|=='.preg_quote($val);
             $val=rtrim($val);
  -          $val=preg_replace('/\s*;(\s*#.*)?$/','',$val);
  -          $config[$key] = $val;
  +          if (empty($marker))
  +            $val=preg_replace('/\s*;(\s*#.*)?$/','',$val);
           }
           $val = str_replace(array('&lt;','&gt;'),array('<','>'),$val);
  -        if (preg_match("/^<{3}([A-Za-z0-9]+)\s.*\\1\s*$/s",$val,$m)) {
  +        if (isset($config[$key])) {
  +          $val = rtrim($val);
  +          $val = str_replace("\n", "\n#", $val);
  +          if (!$marker) $marker = '#';
  +          $nline=$marker."\$$key=$val;"; # XXX
  +          if ($desc[$key]) $nline .= $desc[$key];
  +          $nline .= "\n";
  +          $t=NULL;
  +        } else if (empty($marker) and preg_match("/^<{3}([A-Za-z0-9]+)\s.*\\1\s*$/s",$val,$m)) {
  +          $config[$key] = $val;
             $save_val=$val;
             $val=str_replace("$m[1]",'',substr($val,3));
             $val=str_replace('"','\"',$val);
             $t=eval("\$$key=\"$val\";");
             $val=$save_val;
             $nline="\$$key=$val;\n";
  +        } else if ($marker) {
  +          $val = str_replace('&gt;','>',$val);
  +          $nline=$marker."\$$key=$val";
  +          if (empty($tag)) $nline .=';';
  +          if ($desc[$key]) $nline .= $desc[$key];
  +          $nline .= "\n";
  +          $config[$key] = $val;
  +          $t=NULL;
           } else if (is_string($val)) {
             $val = str_replace('&gt;','>',$val);
             if (strpos($val,"\n")===false) {
  @@ -289,8 +345,10 @@
           } else {
             $t=@eval("\$$key=$val;");
           }
  -        if ($t === NULL)
  +        if ($t === NULL) {
             $nlines[]=$nline;
  +          $config[$key] = $val;
  +        }
           else
             print "ERROR: \$$key =$val;\n";
           $key = '';
  @@ -298,8 +356,10 @@
         }
       }
       if (!empty($newconfig)) {
  -      foreach ($newconfig as $k=>$v)
  +      foreach ($newconfig as $k=>$v) {
  +        if ($v != NULL)
           $nlines[] = '$'.$k.'='.$v.";\n";
  +      }
       }
   
       return join('',$nlines);
  
  
  


wkpark      2009/04/19 00:13:07

  Modified:    .        moni-install.in
  Log:
  copy local configs
  
  Revision  Changes    Path
  1.6       +1 -1      moniwiki/moni-install.in
  
  Index: moni-install.in
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/moni-install.in,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- moni-install.in	18 Apr 2009 03:20:45 -0000	1.5
  +++ moni-install.in	18 Apr 2009 15:13:07 -0000	1.6
  @@ -20,7 +20,7 @@
   [ ! -d css ] && ln -s $INSTDIR/css .
   [ ! -d local ] && ln -s $INSTDIR/local .
   [ ! -d locale ] && ln -s $INSTDIR/locale .
  -[ ! -d config ] && ln -s $INSTDIR/config .
  +[ ! -d config ] && mkdir config && cp -a $INSTDIR/config/* config/
   [ ! -d applets ] && ln -s $INSTDIR/applets .
   [ ! -d plugin ] && ln -s $INSTDIR/plugin .
   [ ! -f config.php.default ] && ln -s $INSTDIR/config.php.default .
  
  
  


wkpark      2009/04/19 00:35:09

  Modified:    css      kbd.js
  Log:
   * support contrl-Enter
   * focus on the input form
   * changeable name of the input form.
  
  Revision  Changes    Path
  1.19      +33 -13    moniwiki/css/kbd.js
  
  Index: kbd.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/kbd.js,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- kbd.js	18 Apr 2009 07:21:08 -0000	1.18
  +++ kbd.js	18 Apr 2009 15:35:09 -0000	1.19
  @@ -6,7 +6,7 @@
   
      distributable under GPL
   
  -   $Id: kbd.js,v 1.18 2009/04/18 07:21:08 wkpark Exp $
  +   $Id: kbd.js,v 1.19 2009/04/18 15:35:09 wkpark Exp $
   
      CHANGES
   
  @@ -70,7 +70,7 @@
   
   // go form ID
   _go= "go";
  -_govalue= _govalue || "value";
  +_govalue= _govalue || "value"; // elements['value']
   _ap = _qp == '/' ? '?':'&';
   var is_safari = navigator.appVersion.toLowerCase().indexOf('safari') != -1;
   
  @@ -112,15 +112,18 @@
   		}
   	}
   
  -	if (e.ctrlKey && e.keyCode == 13 && nn == 'TEXTAREA') {
  -		// ctrl-Enter to submit
  -		var p = f.parentNode;
  -		while(p.tagName != 'FORM' && p.tagName != 'BODY') p = p.parentNode;
  -		if (p.tagName == 'FORM') {
  -			p.submit();
  -			return;
  +	if (e.ctrlKey && nn == 'TEXTAREA') {
  +		if (e.keyCode == 13) {
  +			// ctrl-Enter to submit
  +			var p = f.parentNode;
  +			while(p.tagName != 'FORM' && p.tagName != 'BODY') p = p.parentNode;
  +			if (p.tagName == 'FORM') {
  +				p.submit();
  +				return;
  +			}
   		}
   	}
  +
   	if (e.charCode == undefined && (e.keyCode==112 || e.keyCode==114)) {
   		keypresshandler(e); // IE hack
   		noBubble(e);
  @@ -288,14 +291,33 @@
   
   function moin_init() {
   	if (document.addEventListener) {
  -		document.addEventListener('keypress',keypresshandler,false);
  -		document.addEventListener('keydown',keydownhandler,false);
  +		document.addEventListener('keypress', keypresshandler,false);
  +		document.addEventListener('keydown', keydownhandler,false);
   	} else {
   		document.attachEvent('onkeypress',keypresshandler);
   		document.attachEvent('onkeydown',keydownhandler);
   	}
  +	// check the editor_area
  +	var form = document.getElementById('editor_area');
  +	if (form) return;
  +	var go = document.getElementById(_go);
  +	// focus on to the input form
  +	if (go) go.elements[_govalue].focus();
   }
   
  +(function () {
  +	// onload
  +	var oldOnload = window.onload;
  +	if (typeof window.onload != 'function') {
  +		window.onload = moin_init();
  +	} else {
  +        	window.onload = function() {
  +			oldOnload();
  +			moin_init();
  +		}
  +        }
  +})();
  +
   function moin_submit(form) {
   	if (form == null) form=document.getElementById(_go);
   	if (form == null) return true;
  @@ -306,5 +328,3 @@
   		return true;
   	}
   }
  -
  -moin_init();
  
  
  


wkpark      2009/04/19 00:42:05

  Modified:    .        config.php.default
  Log:
  reordering config variables
  
  Revision  Changes    Path
  1.54      +6 -6      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.53
  retrieving revision 1.54
  diff -u -r1.53 -r1.54
  --- config.php.default	18 Apr 2009 03:18:30 -0000	1.53
  +++ config.php.default	18 Apr 2009 15:42:05 -0000	1.54
  @@ -1,7 +1,7 @@
   <?php
   # This is a default 
   #
  -# $Id: config.php.default,v 1.53 2009/04/18 03:18:30 wkpark Exp $
  +# $Id: config.php.default,v 1.54 2009/04/18 15:42:05 wkpark Exp $
   #
   $sitename='UnnamedWiki'; # site name
   $data_dir= './data';
  @@ -68,8 +68,8 @@
   #$wikimasters=array('CsKim','SjPark');
   #$owners=array('moniwiki','Hong');
   
  -#$menu=array('MoniWiki'=>1,'FindPage'=>4,'TitleIndex'=>3,'BlogChanges'=>'','RecentChanges'=>2,'http://kldp.org KLDP'=>9);
   $menu=array('FrontPage'=>1,'FindPage'=>4,'TitleIndex'=>3,'RecentChanges'=>2,'UserPreferences'=>'');
  +#$menu=array('MoniWiki'=>1,'FindPage'=>4,'TitleIndex'=>3,'BlogChanges'=>'','RecentChanges'=>2,'http://kldp.org KLDP'=>9);
   #$menu_sep='|'; # obsolute
   #$menu_bra=''; # obsolute
   #$menu_cat=''; # obsolut
  @@ -140,8 +140,8 @@
   
   #$purple_icon=''; # obsolute
   #$use_purple=''; # obsolute
  -#$perma_icon='<img src="/wiki/imgs/egg.png" border="0" />'; # obsolute
   $perma_icon='&#xB6;';
  +#$perma_icon='<img src="/wiki/imgs/egg.png" border="0" />';
   #$pagetype=array("KldpDsl"=>"plain","ManPage"=>"/man","DocbookSgml"=>"/jade","LinuxDoc"=>"/linuxdoc");
   # set default processor for jade
   #$default_dsssl='to_dir/kldp.dsl#html';
  @@ -203,8 +203,8 @@
   #$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');
  -#$data_dir.'/text/UrlMap'; # enable builtin fix url
   $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
  @@ -243,9 +243,8 @@
   #$dot_options="size \"6,6\"\n"; # extra webdot options
   $use_save_refresh=2;
   $use_refresh=2;
  -#$cache_public_dir='./_cache'; # enhanced caching
   $cachetime=0;
  -$cache_public_dir='./_cache';
  +$cache_public_dir='./_cache'; # enhanced caching
   $cache_public_url=$url_prefix.'/_cache';
   #$no_404=1; # for IIS
   #$nofancy_404=1; # simplified 404 msg for robots etc.
  @@ -274,3 +273,4 @@
   #$use_scrap=1; # use scrap
   #$login_strict=0; # strict check
   #$use_userlink=0; # replace the UserPreference link to the UserHomePage
  +$use_local_translation=0; # automatic translation
  
  
  


wkpark      2009/04/19 19:00:11

  Modified:    .        wiki.php
  Log:
  do not send <body> tag at the send_header() and send it at the send_title()
  if the setting of a theme has $newtheme=2.
  
  Revision  Changes    Path
  1.466     +6 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.465
  retrieving revision 1.466
  diff -u -r1.465 -r1.466
  --- wiki.php	17 Apr 2009 21:18:10 -0000	1.465
  +++ wiki.php	19 Apr 2009 10:00:11 -0000	1.466
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.465 2009/04/17 21:18:10 wkpark Exp $
  +// $Id: wiki.php,v 1.466 2009/04/19 10:00:11 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.465 $',1,-1);
  +$_revision = substr('$Revision: 1.466 $',1,-1);
   $_release = '1.1.4-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -4468,8 +4468,6 @@
   </style>
   EOS;
   
  -      print "</head>\n<body $options[attr]>\n";
  -      print '<div><a id="top" name="top" accesskey="t"></a></div>'."\n";
       }
     }
   
  @@ -4834,6 +4832,10 @@
       # print the title
       kbd_handler();
   
  +    if (empty($this->newtheme) or $this->newtheme != 2) {
  +      print "</head>\n<body $options[attr]>\n";
  +      print '<div><a id="top" name="top" accesskey="t"></a></div>'."\n";
  +    }
       #
       if (file_exists($this->themedir."/header.php")) {
         $trail="<div id='wikiTrailer'>\n".$this->trail."</div>\n";
  
  
  


wkpark      2009/04/21 05:01:08

  Modified:    .        wiki.php
  Log:
  check security_class is empty or not
  
  Revision  Changes    Path
  1.467     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.466
  retrieving revision 1.467
  diff -u -r1.466 -r1.467
  --- wiki.php	19 Apr 2009 10:00:11 -0000	1.466
  +++ wiki.php	20 Apr 2009 20:01:08 -0000	1.467
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.466 2009/04/19 10:00:11 wkpark Exp $
  +// $Id: wiki.php,v 1.467 2009/04/20 20:01:08 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.466 $',1,-1);
  +$_revision = substr('$Revision: 1.467 $',1,-1);
   $_release = '1.1.4-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -829,7 +829,7 @@
       if (!$this->counter->counter)
         $this->counter=new Counter();
   
  -    if (isset($this->security_class)) {
  +    if (!empty($this->security_class)) {
         include_once("plugin/security/$this->security_class.php");
         $class="Security_".$this->security_class;
         $this->security=new $class ($this);
  
  
  


wkpark      2009/04/21 05:02:46

  Modified:    .        monisetup.php
  Log:
   * fix the last changes: set password correctly.
   * protect config.php for some env.
  
  Revision  Changes    Path
  1.45      +75 -4     moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.44
  retrieving revision 1.45
  diff -u -r1.44 -r1.45
  --- monisetup.php	18 Apr 2009 15:02:55 -0000	1.44
  +++ monisetup.php	20 Apr 2009 20:02:46 -0000	1.45
  @@ -1,7 +1,7 @@
   <?php
   // Copyright 2003-2007 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.44 2009/04/18 15:02:55 wkpark Exp $
  +// $Id: monisetup.php,v 1.45 2009/04/20 20:02:46 wkpark Exp $
   
   function _stripslashes($str) {
     return get_magic_quotes_gpc() ? stripslashes($str):$str;
  @@ -90,6 +90,8 @@
         // http://bugs.php.net/bug.php?id=22418
         //$config['version_class']="'RcsLite'";
         $config['path']="./bin;c:/program files/vim/vimXX";
  +    } else {
  +      $config['rcs_user']='root'; // XXX
       }
   
       if (!file_exists('wikilib.php')) {
  @@ -222,8 +224,19 @@
     }
   
     function _genRawConfig($newconfig, $mode = 0, $configfile='config.php', $default='config.php.default') {
  -    if ($mode == 1)
  +    if ($newconfig['admin_passwd'])
  +      $newconfig['admin_passwd']=crypt($newconfig['admin_passwd'],md5(time()));
  +    if ($newconfig['purge_passwd'])
  +      $newconfig['purge_passwd']=crypt($newconfig['purge_passwd'],md5(time()));
  +
  +    if ($mode == 1) {
         $newconfig = $this->_quote_config($newconfig);
  +    } else {
  +      if ($newconfig['admin_passwd'])
  +        $newconfig['admin_passwd']="'".$newconfig['admin_passwd']."'";
  +      if ($newconfig['purge_passwd'])
  +        $newconfig['purge_passwd']="'".$newconfig['purge_passwd']."'";
  +    }
   
       if (file_exists($configfile))
         $conf_file = $configfile;
  @@ -422,6 +435,21 @@
        print "<p class='notice'><span class='warn'>"._t("WARN").":</span> ".
   	_t("Please execute the following command after you have completed your configuration.")."</p>\n";
        print "<pre class='console'>\n<font color='green'>$</font> sh secure.sh\n</pre>\n";
  +     if (is_writable('config.php')) {
  +       if (empty($config['admin_passwd'])) {
  +         print "<h2><font color='red'>"._t("WARN: You have to enter your Admin Password")."</font></h2>\n";
  +       } else {
  +         $owner = fileowner('.');
  +         print "<h2><font color='red'>"._t("WARN: If you have any permission to execute 'secure.sh'. press the following button")."</font></h2>\n";
  +         
  +         $msg = _t("Protect my config.php now!");
  +         echo <<<FORM
  +<form method='post' action=''>
  +<div class='protect'><input type='hidden' name='action' value='protect' /><input type='submit' name='protect' value='$msg' /></div>
  +</form>
  +FORM;
  +       }
  +     }
     }
   
     if (file_exists("config.php")) {
  @@ -1006,6 +1034,17 @@
     font-family: Trebuchet MS, "Times New Roman", Times, serif;
   }
   
  +.protect {
  +  font-size: 30px;
  +  font-family: Trebuchet MS, "Times New Roman", Times, serif;
  +}
  +
  +.protect input {
  +  font-size: 30px;
  +  font-weight:bold;
  +  font-family: Trebuchet MS, "Times New Roman", Times, serif;
  +}
  +
   -->
   </style>
   </head>
  @@ -1014,10 +1053,20 @@
   
   print "<div class='header'><h1><img src='imgs/moniwiki-logo.png' style='vertical-align: middle'/> "._t("MoniWiki")."</h1></div><div class='body'>\n";
   
  -if (file_exists("config.php") && !is_writable("config.php")) {
  +if (empty($_POST['action']) && file_exists("config.php") && !is_writable("config.php")) {
     print "<h2><font color='red'>"._t("'config.php' is not writable !")."</font></h2>\n";
     print _t("Please execute <tt>'monisetup.sh'</tt> or <tt>chmod a+w config.php</tt> first to change your settings.")."<br />\n";
   
  +  $msg = _t("Unprotect my config.php");
  +  echo "<form method='post' action=''>";
  +  echo "<div class='protect'>";
  +  echo "<table><tr><td><strong>Password</strong></td>";
  +  echo "<td><input type='password' name='oldpasswd' size='10'></td></tr>\n";
  +  echo "</table>";
  +  echo <<<FORM
  +<input type='hidden' name='action' value='protect' /><input type='submit' name='protect' value='$msg' /></div>
  +</form>
  +FORM;
     return;
   }
   
  @@ -1034,7 +1083,29 @@
     return;
   }
   
  -if ($_SERVER['REQUEST_METHOD']=="POST" && $config) {
  +if ($_SERVER['REQUEST_METHOD']=="POST" && ($config or $action == 'protect')) {
  +
  +  if ($action == 'protect') {
  +    if (is_writable('config.php')) {
  +      $old = 0222 & fileperms("config.php"); # check permission
  +      if ($old) {
  +        chmod('config.php',0444);
  +        print "<h2><font color='red'>"._t("config.php is protected now !")."</font></h2>\n";
  +      }
  +    } else if (!empty($Config->config['admin_passwd'])) {
  +      if (crypt($oldpasswd,$Config->config['admin_passwd']) != 
  +          $Config->config['admin_passwd']) {
  +        print "<h2><font color='red'>"._t("Invalid password error !")."</font></h2>\n";
  +        print _t("If you can't remember your admin password, delete password entry in the 'config.php' and restart 'monisetup'")."<br />\n";
  +        $invalid=1;
  +        return;
  +      }
  +      chmod('config.php',0644);
  +      print "<h2><font color='red'>"._t("config.php is unprotected now !")."</font></h2>\n";
  +    }
  +    return;
  +  }
  +
     $conf=$Config->_getFormConfig($config);
     $rawconfig=$Config->_getFormConfig($config,1);
     $config=$conf;
  
  
  


wkpark      2009/04/21 13:21:06

  Modified:    plugin/processor monimarkup.php
  Log:
  fixed table rendering bug.
  
  Revision  Changes    Path
  1.23      +3 -3      moniwiki/plugin/processor/monimarkup.php
  
  Index: monimarkup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/monimarkup.php,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- monimarkup.php	7 Jan 2009 21:44:09 -0000	1.22
  +++ monimarkup.php	21 Apr 2009 04:21:06 -0000	1.23
  @@ -3,12 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a moniwiki formatting processor for the MoniWiki
   //
  -// $Id: monimarkup.php,v 1.22 2009/01/07 21:44:09 wkpark Exp $
  +// $Id: monimarkup.php,v 1.23 2009/04/21 04:21:06 wkpark Exp $
   /**
    * @date    2006-08-09
    * @name    Moniwiki Processor
    * @desc    Moniwiki default processor
  - * @version $Revision: 1.22 $
  + * @version $Revision: 1.23 $
    * @depend  1.1.3
    * @license GPL
    */
  @@ -136,7 +136,7 @@
               if (!empty($oline) and preg_match('/^\s*\|\|/',$oline)) {
                   if ( !preg_match('/(\|\||\|-+)$/',$oline)) {
                       $oline.="\n".$line; continue;
  -                } else if (!$tr) {
  +                } else {
                       $oline.="\n".$line;
                       if ($_indlen[$_in_li]) {
                           $chunk[]= $this->_node($_in_li,$_nodtype,$oline);
  
  
  


wkpark      2009/04/21 20:08:09

  Modified:    plugin/processor monimarkup.php
  Log:
  fix last changes: support mediawiki style tables
  
  Revision  Changes    Path
  1.24      +12 -7     moniwiki/plugin/processor/monimarkup.php
  
  Index: monimarkup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/monimarkup.php,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- monimarkup.php	21 Apr 2009 04:21:06 -0000	1.23
  +++ monimarkup.php	21 Apr 2009 11:08:08 -0000	1.24
  @@ -3,12 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a moniwiki formatting processor for the MoniWiki
   //
  -// $Id: monimarkup.php,v 1.23 2009/04/21 04:21:06 wkpark Exp $
  +// $Id: monimarkup.php,v 1.24 2009/04/21 11:08:08 wkpark Exp $
   /**
    * @date    2006-08-09
    * @name    Moniwiki Processor
    * @desc    Moniwiki default processor
  - * @version $Revision: 1.23 $
  + * @version $Revision: 1.24 $
    * @depend  1.1.3
    * @license GPL
    */
  @@ -133,10 +133,15 @@
           foreach ($lines as $line) {
               $tr=strlen(trim($line));
               if (substr($line,-1) == '&') { $oline.="\n".$line; continue; }
  -            if (!empty($oline) and preg_match('/^\s*\|\|/',$oline)) {
  -                if ( !preg_match('/(\|\||\|-+)$/',$oline)) {
  +            if (empty($oline) and preg_match('/^\s*\|\|/',$line)
  +                    and !preg_match('/(\|\||\|-+)\s*$/',$line)) {
  +                $oline.=$line;
  +                continue;
  +            } else if (!empty($oline) and preg_match('/^\s*\|\|/',$oline)) {
  +                if ( !preg_match('/(\|\||\|-+)\s*$/',$oline)
  +                        and !preg_match('/^(={1,6})\s+.*(\1)\s*$/',$line)) {
                       $oline.="\n".$line; continue;
  -                } else {
  +                } else if (!$tr) {
                       $oline.="\n".$line;
                       if ($_indlen[$_in_li]) {
                           $chunk[]= $this->_node($_in_li,$_nodtype,$oline);
  @@ -320,7 +325,7 @@
               if (empty($oline) and preg_match('/^\s*\|\|/',$line) and !preg_match('/(\|\||\|-+)\s*$/',$line)) {
                   $oline.=$line."\n"; continue;
               } else if (!empty($oline) and ($_in_table or preg_match('/^\s*\|\|/',$oline))) {
  -                if (!preg_match('/(\|\||\|-+)$/',$line)) {
  +                if (!preg_match('/(\|\||\|-+)\s*$/',$line)) {
                       $oline.=$line."\n"; continue;
                   } else {
                       $line=$oline.$line; $oline='';
  @@ -631,7 +636,7 @@
                       $c=preg_replace("/\035(\d+)\035/e", 
                           "\$formatter->link_repl(\$inline[$1])",$c);
   
  -                if (preg_match('/<(div|ul|ol|pre|blockquote)[^>]*>/',$c))
  +                if (preg_match('/<(div|ul|ol|pre|table|blockquote)[^>]*>/',$c))
                       $out.= $this->_div(1,' class="para"',$style).$c.$this->_div(0);
                   else
                       $out.= $this->_p(1,' class="para"',$style).$c.$this->_p(0);
  
  
  


wkpark      2009/04/23 16:16:59

  Modified:    .        moni-install.in
  Log:
  do not overwrite index.php
  
  Revision  Changes    Path
  1.7       +3 -1      moniwiki/moni-install.in
  
  Index: moni-install.in
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/moni-install.in,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- moni-install.in	18 Apr 2009 15:13:07 -0000	1.6
  +++ moni-install.in	23 Apr 2009 07:16:59 -0000	1.7
  @@ -29,8 +29,10 @@
   cp -a $INSTDIR/{monisetup.sh,secure.sh} .
   cp -a $conf .
   
  -cat <<PHP >index.php
  +if [ ! -f index.php ]; then
  +  cat <<PHP >index.php
   <?php
   include("$INSTDIR/$MAIN");
   ?>
   PHP
  +fi
  
  
  


wkpark      2009/04/24 23:25:02

  Added:       plugin/security nforge.php
  Log:
  add a new security class plugin for the nFORGE
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/security/nforge.php
  
  Index: nforge.php
  ===================================================================
  <?php
  #
  # nFORGE plugin by semtlnori
  #
  # based on needtologin security plugin.
  #
  # $Id: nforge.php,v 1.1 2009/04/24 14:25:02 wkpark Exp $
  
  class Security_nforge extends Security {
    var $DB;
  
    function Security_nforge($DB='') {
      $this->DB=$DB;
    }
  
    function help($formatter) {
      return $formatter->macro_repl('UserPreferences');
    }
  
  # $options[page]: pagename
  # $options[id]: user id
  
    function writable($options="") {
      return $this->DB->_isWritable($options['page']);
    }
  
    function may_edit($action,&$options) {
      # $public_pages=array('WikiSandBox','WikiSandbox','GuestBook','SandBox');
      if (!$options['page']) return 0; # XXX
      if (in_array($options['page'],$public_pages)) return 1;
      if ($options['id']=='Anonymous') {
        $options['err']=sprintf(_("You are not allowed to '%s' on this page"),$action);
        $options['err'].="\n"._("Please Login or make your ID on this Wiki ;)");
        $options['help']='help';
        return 0;
      }
      return 1;
    }
  
    function may_blog($action,&$options) {
      if (!$options['page']) return 0; # XXX
      if ($options['id']=='Anonymous') {
        $options['err']=sprintf(_("You are not allowed to '%s' on this page"),$action);
        $options['err'].="\n"._("Please Login or make your ID on this Wiki ;)");
        $options['help']='help';
        return 0;
      }
      return 1;
    }
  
    function may_uploadfile($action,&$options) {
      if (!$options['page']) return 0;
      if ($options['id']=='Anonymous') {
        $options['err']=sprintf(_("You are not allowed to '%s' on this page"),$action);
        $options['err'].="\n"._("Please Login or make your ID on this Wiki ;)");
        $options['help']='help';
        return 0;
      }
      return 1;
    }
  
    function is_allowed($action="read",&$options) {
      $method='may_'.$action;
      if (method_exists($this, $method)) {
        if (!$this->$method($action,$options)) {
          header('Location: /account/login.php?return_to='.$_SERVER['SCRIPT_URI']);
          exit;
        }
      }
      return 1;
    }
  
  }
  
  ?>
  
  
  


wkpark      2009/04/25 13:51:29

  Modified:    .        monisetup.php
  Log:
  using basename()
  
  Revision  Changes    Path
  1.46      +5 -3      moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.45
  retrieving revision 1.46
  diff -u -r1.45 -r1.46
  --- monisetup.php	20 Apr 2009 20:02:46 -0000	1.45
  +++ monisetup.php	25 Apr 2009 04:51:29 -0000	1.46
  @@ -1,7 +1,7 @@
   <?php
   // Copyright 2003-2007 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.45 2009/04/20 20:02:46 wkpark Exp $
  +// $Id: monisetup.php,v 1.46 2009/04/25 04:51:29 wkpark Exp $
   
   function _stripslashes($str) {
     return get_magic_quotes_gpc() ? stripslashes($str):$str;
  @@ -117,13 +117,15 @@
     }
   
     function _getConfig($configfile, $options = array()) {
  -    if (!file_exists($configfile))
  +    $myconfig = basename($configfile);
  +    if (!file_exists($myconfig))
         return array();
   
       extract($options);
       unset($options);
  -    include($configfile);
  +    include($myconfig);
       unset($configfile);
  +    unset($myconfig);
       $config=get_defined_vars();
   
       return $config;
  
  
  


wkpark      2009/04/26 16:16:00

  Modified:    .        Tag: B_1_1_3 wiki.php wikilib.php monisetup.php
  Log:
  apply important patch from main trunk
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.452.2.2 +43 -17    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.452.2.1
  retrieving revision 1.452.2.2
  diff -u -r1.452.2.1 -r1.452.2.2
  --- wiki.php	9 Jan 2009 10:15:12 -0000	1.452.2.1
  +++ wiki.php	26 Apr 2009 07:16:00 -0000	1.452.2.2
  @@ -11,10 +11,10 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.452.2.1 2009/01/09 10:15:12 wkpark Exp $
  +// $Id: wiki.php,v 1.452.2.2 2009/04/26 07:16:00 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.452.2.1 $',1,-1);
  -$_release = '1.1.3';
  +$_revision = substr('$Revision: 1.452.2.2 $',1,-1);
  +$_release = '1.1.3.5';
   
   #ob_start("ob_gzhandler");
   
  @@ -565,6 +565,7 @@
       if ($options['init']) {
         $script= preg_replace("/\/([^\/]+)\.php$/","/monisetup.php",
                  $_SERVER['SCRIPT_NAME']);
  +      if (is_string($options['init'])) $script .= '?init='.$options['init'];
         header("Location: $script");
         exit;
       }
  @@ -702,7 +703,8 @@
       $this->imgs_dir_url=$this->imgs_dir.'/';
       $this->imgs_dir_interwiki=$this->imgs_dir.'/';
   
  -    $imgs_realdir=basename($this->imgs_dir);
  +    $doc_root = getenv("DOCUMENT_ROOT"); // for Unix
  +    $imgs_realdir= $doc_root.$this->imgs_dir;
       if (file_exists($imgs_realdir.'/interwiki/'.'moniwiki-16.png'))
         $this->imgs_dir_interwiki=$this->imgs_dir.'/interwiki/';
   
  @@ -825,7 +827,7 @@
       if (!$this->counter->counter)
         $this->counter=new Counter();
   
  -    if (isset($this->security_class)) {
  +    if (!empty($this->security_class)) {
         include_once("plugin/security/$this->security_class.php");
         $class="Security_".$this->security_class;
         $this->security=new $class ($this);
  @@ -1115,14 +1117,15 @@
     function _savePage($filename,$body,$options=array()) {
       $dir=dirname($filename);
       if (!is_dir($dir)) {
  -      $om=umask(000);
  +      $om=umask(~$this->umask);
         _mkdir_p($dir, 0777);
         umask($om);
       }
   
       $fp=fopen($filename,"w");
  -    if (!$fp)
  +    if (!is_resource($fp))
          return -1;
  +
       flock($fp,LOCK_EX);
       fwrite($fp, $body);
       flock($fp,LOCK_UN);
  @@ -1131,7 +1134,10 @@
       if ($this->version_class) {
         $class=getModule('Version',$this->version_class);
         $version=new $class ($this);
  +      $om=umask(~$this->umask);
         $ret=$version->_ci($filename,$options['log']);
  +      chmod($filename,0666 & $this->umask);
  +      umask($om);
       }
       return 0;
     }
  @@ -2216,7 +2222,11 @@
       if (is_array($url)) $url=$url[1];
       #if ($url[0]=='<') { print $url;return $url;}
       $url=str_replace('\"','"',$url); // XXX
  +    $bra = '';
  +    $ket = '';
       if ($url{0}=='[') {
  +      $bra='[';
  +      $ket=']';
         $url=substr($url,1,-1);
         $force=1;
       }
  @@ -2284,8 +2294,10 @@
   
       if (($p=strpos($url,':')) !== false and
           (!isset($url{$p+1}) or (isset($url{$p+1}) and $url{$p+1}!=':'))) {
  -      if ($url[0]=='a') # attachment:
  +      if ($url[0]=='a') { # attachment:
  +        $url=preg_replace('/&amp;/i','&',$url);
           return $this->macro_repl('attachment',substr($url,11));
  +      }
   
         $external_icon='';
         $external_link='';
  @@ -2318,7 +2330,8 @@
             $text = substr($url,$p+1);
             $url = substr($url,0,$p);
           }
  -        $link=str_replace('&','&amp;',$url);
  +        #$link=str_replace('&','&amp;',$url);
  +        $link=preg_replace('/&(?!#?[a-z0-9]+;)/i','&amp;',$url);
           if (empty($text)) $text=$url;
           else {
             $img_attr='';
  @@ -2365,14 +2378,15 @@
         } # have no space
         $link = str_replace(array('<','>'),array('&#x3c;','&#x3e;'),$url);
         if (preg_match("/^(http|https|ftp)/",$url)) {
  -        if (preg_match("/(^.*\.(png|gif|jpeg|jpg))(([\?&]([a-z]+=[0-9a-z]+))*)$/i",$url,$match)) {
  +        if (preg_match("/(^.*\.(png|gif|jpeg|jpg))(\?.*?)?$/i",$url,$match)) {
  +          $url=preg_replace('/&amp;/','&',$url);
             $url=$match[1];
             $attrs=explode('&',substr($match[3],1));
             foreach ($attrs as $arg) {
               $name=strtok($arg,'=');
               $val=strtok(' ');
  -            if ($name and $val) $attr.=$name.'="'.$val.'" ';
  -            if ($name == 'align') $attr.='class="img'.ucfirst($val).'" ';
  +            if ($name and $val) $attr.=' '.$name.'="'.urldecode($val).'"';
  +            if ($name == 'align') $attr.=' class="img'.ucfirst($val).'"';
             }
             return "<img alt='$link' $attr src='$url' />";
           }
  @@ -4210,8 +4224,10 @@
         do_goto($this,$options);
         return;
       }
  +    $header = !empty($header) ? $header:(!empty($options['header']) ? $options['header']:null) ;
  +    #print_r($header);
       #$this->header("Expires: Tue, 01 Jan 2002 00:00:00 GMT");
  -    if ($header) {
  +    if (!empty($header)) {
         if (is_array($header))
           foreach ($header as $head) {
             $this->header($head);
  @@ -4285,11 +4301,14 @@
         if ($DBInfo->use_subindex and !$options['action']) {
           $scache=new Cache_text('subpages');
           if (!($subs=$scache->exists($this->page->name))) {
  -          $rule=_preg_search_escape($this->page->name);
  +          if (($p = strrpos($this->page->name,'/')) !== false)
  +            $rule=_preg_search_escape(substr($this->page->name,0,$p));
  +          else
  +            $rule=_preg_search_escape($this->page->name);
             $subs=$DBInfo->getLikePages('^'.$rule.'\/',1);
             if ($subs) $scache->update($this->page->name,1);
           }
  -        if ($subs) {
  +        if (!empty($subs)) {
             $subindices='';
             if (!$DBInfo->use_ajax) {
               $subindices= '<div>'.$this->macro_repl('PageList','',array('subdir'=>1)).'</div>';
  @@ -4791,6 +4810,10 @@
       # print the title
       kbd_handler();
   
  +    if (empty($this->newtheme) or $this->newtheme != 2) {
  +      print "</head>\n<body $options[attr]>\n";
  +      print '<div><a id="top" name="top" accesskey="t"></a></div>'."\n";
  +    }
       #
       if (file_exists($this->themedir."/header.php")) {
         $trail="<div id='wikiTrailer'>\n".$this->trail."</div>\n";
  @@ -4816,10 +4839,10 @@
         print "<div id='wikiHeader'>\n";
         print $header;
         if (!$this->css_friendly)
  -        print $menu." ".$user_link." ".$upper_icon.$icons.$home.$rss_icon;
  +        print $menu." ".$user_link." ".$upper_icon.$icons.$rss_icon;
         else {
           print "<div id='wikiLogin'>".$user_link."</div>";
  -        print "<div id='wikiIcon'>".$upper_icon.$icons.$home.$rss_icon.'</div>';
  +        print "<div id='wikiIcon'>".$upper_icon.$icons.$rss_icon.'</div>';
           print $menu;
         }
         print $msg;
  @@ -4907,9 +4930,12 @@
       $sister_save=$this->sister_on;
       $this->sister_on=0;
       $this->trail="";
  +    $save = $this->nonexists;
  +    $this->nonexists = 'forcelink';
       foreach ($trails as $page) {
         $this->trail.=$this->word_repl('"'.$page.'"','','',1,0).$DBInfo->arrow;
       }
  +    $this->nonexists = $save;
       $this->trail.= ' '.htmlspecialchars($pagename);
       $this->pagelinks=array(); # reset pagelinks
       $this->sister_on=$sister_save;
  
  
  
  1.263.2.2 +61 -12    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.263.2.1
  retrieving revision 1.263.2.2
  diff -u -r1.263.2.1 -r1.263.2.2
  --- wikilib.php	9 Jan 2009 10:15:12 -0000	1.263.2.1
  +++ wikilib.php	26 Apr 2009 07:16:00 -0000	1.263.2.2
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.263.2.1 2009/01/09 10:15:12 wkpark Exp $
  +// $Id: wikilib.php,v 1.263.2.2 2009/04/26 07:16:00 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -344,6 +344,7 @@
     var $users=array();
     function UserDB($WikiDB) {
       $this->user_dir=$WikiDB->data_dir.'/user';
  +    $this->strict = $WikiDB->login_strict;
     }
   
     function _id_to_key($id) {
  @@ -432,7 +433,8 @@
     function checkUser(&$user) {
       $tmp=$this->getUser($user->id);
       if ($tmp->info['ticket'] != $user->ticket) {
  -      $user->id='Anonymous';
  +      if ($this->strict > 0)
  +        $user->id='Anonymous';
         return 1;
       }
       $user=$tmp;
  @@ -495,7 +497,7 @@
        $id = '';
        if (isset($_COOKIE['MONI_ID'])) {
        	$this->ticket=substr($_COOKIE['MONI_ID'],0,32);
  -     	$id=substr($_COOKIE['MONI_ID'],33);
  +     	$id=urldecode(substr($_COOKIE['MONI_ID'],33));
        }
        $this->setID($id);
   
  @@ -532,14 +534,14 @@
        $ticket=getTicket($this->id,$_SERVER['REMOTE_ADDR']);
        $this->ticket=$ticket;
        # set the fake cookie
  -     $_COOKIE['MONI_ID']=$ticket.'.'.$this->id;
  +     $_COOKIE['MONI_ID']=$ticket.'.'.urlencode($this->id);
        if ($this->info['nick']) $_COOKIE['MONI_NICK']=$this->info['nick'];
   
        #$path=strpos($_SERVER['HTTP_USER_AGENT'],'Safari')===false ?
        #  get_scriptname():'/';
        $path = get_scriptname();
        #$path = preg_replace('@(?<=/)[^/]+$@','',$path);
  -     return "Set-Cookie: MONI_ID=".$ticket.'.'.$this->id.'; expires='.gmdate('l, d-M-Y H:i:s',time()+60*60*24*30).' GMT; Path='.$path;
  +     return "Set-Cookie: MONI_ID=".$ticket.'.'.urlencode($this->id).'; expires='.gmdate('l, d-M-Y H:i:s',time()+60*60*24*30).' GMT; Path='.$path;
     }
   
     function unsetCookie() {
  @@ -929,6 +931,16 @@
       }
     }
   
  +  $captcha='';
  +  if ($use_js and $DBInfo->use_ticket and $options['id'] == 'Anonymous') {
  +     $seed=md5(base64_encode(time()));
  +     $ticketimg=$formatter->link_url($formatter->page->urlname,'?action=ticket&amp;__seed='.$seed);
  +     $captcha=<<<EXTRA
  +  <div class='captcha'><span class='captchaImg'><img src="$ticketimg" alt="captcha" /></span><input type="text" size="10" name="check" />
  +<input type="hidden" name="__seed" value="$seed" /></div>
  +EXTRA;
  +  }
  +
     $summary_msg=_("Summary of Change");
     if (!$options['simple']) {
       $preview_btn='<input type="submit" tabindex="6" name="button_preview" '.
  @@ -998,6 +1010,7 @@
   $preview_btn$wysiwyg_btn$skip_preview
   $extra<span id="save_state"></span>
   </div>
  +$captcha
   </form>
   </div>
   EOS;
  @@ -1281,7 +1294,8 @@
     global $DBInfo;
   
     if (isset($options['q'])) {
  -    if (!$options['q']) { print "<ul></ul>"; return; }
  +    if (!$options['q']) { print ''; return; }
  +    #if (!$options['q']) { print "<ul></ul>"; return; }
   
       $val='';
       $rule='';
  @@ -1299,10 +1313,11 @@
         if ($test === false) $rule=$options['q'];
         break;     
       }
  -    if (!$rule) $rule=$options['q'];
  +    if (!$rule) $rule=trim($options['q']);
   
       $test=@preg_match("/^$rule/",'');
  -    if ($test === false) { print "<ul></ul>"; return; }
  +    if ($test === false) { print ''; return; }
  +    #if ($test === false) { print "<ul></ul>"; return; }
   
       $pages= array();
   
  @@ -1317,10 +1332,12 @@
       //array_unshift($pages, $options['q']);
       header("Content-Type: text/plain");
       if ($pages) {
  -    	$ret= "<ul>\n<li>".implode("</li>\n<li>",$pages)."</li>\n</ul>\n";
  +    	$ret= implode("\n",$pages);
  +    	#$ret= "<ul>\n<li>".implode("</li>\n<li>",$pages)."</li>\n</ul>\n";
       } else {
           #$ret= "<ul>\n<li>".$options['q']."</li></ul>";
  -        $ret= "<ul>\n</ul>";
  +        $ret= '';
  +        #$ret= "<ul>\n</ul>";
       }
       if (strtoupper($DBInfo->charset) != 'UTF-8' and function_exists('iconv')) {
         $val=iconv('UTF-8',$DBInfo->charset,$ret);
  @@ -1594,6 +1611,37 @@
       return;
     }
   
  +  // XXX captcha
  +  $use_any=0;
  +  if ($DBInfo->use_textbrowsers) {
  +    if (is_string($DBInfo->use_textbrowsers))
  +      $use_any= preg_match('/'.$DBInfo->use_textbrowsers.'/',
  +        $_SERVER['HTTP_USER_AGENT']) ? 1:0;
  +    else
  +      $use_any= preg_match('/Lynx|w3m|links/',
  +        $_SERVER['HTTP_USER_AGENT']) ? 1:0;
  +  }
  +
  +  $ok_ticket=0;
  +  if (!$button_preview and !$use_any and $DBInfo->use_ticket and $options['id'] == 'Anonymous') {
  +    if ($options['__seed'] and $options['check']) {
  +      $mycheck=getTicket($options['__seed'],$_SERVER['REMOTE_ADDR'],4);
  +      if ($mycheck==$options['check'])
  +        $ok_ticket=1;
  +      else {
  +        $options['msg']= _("Invalid ticket !");
  +        $button_preview=1;
  +      }
  +    } else {
  +      if (!$button_preview)
  +        $options['msg']= _("You need a ticket !");
  +      $button_preview=1;
  +    }
  +  } else {
  +    $ok_ticket=1;
  +  }
  +  // XXX
  +
     if (!$button_preview and $DBInfo->spam_filter) {
       $text=$savetext;
       $fts=preg_split('/(\||,)/',$DBInfo->spam_filter);
  @@ -2722,10 +2770,11 @@
     if ($opts['linkto']) $idx=10;
     $out='';
     foreach ($hits as $pagename) {
  +    $pagetext=htmlspecialchars(urldecode($pagename));
       if ($opts['linkto'])
  -      $out.= '<li>' . $formatter->link_to("$opts[linkto]$pagename",$pagename,"tabindex='$idx'")."</li>\n";
  +      $out.= '<li>' . $formatter->link_to("$opts[linkto]$pagename",$pagetext,"tabindex='$idx'")."</li>\n";
       else
  -      $out.= '<li>' . $formatter->link_tag(_rawurlencode($pagename),"",$pagename,"tabindex='$idx'")."</li>\n";
  +      $out.= '<li>' . $formatter->link_tag(_rawurlencode($pagename),"",$pagetext,"tabindex='$idx'")."</li>\n";
       $idx++;
     }
   
  
  
  
  1.39.2.1  +299 -43   moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.39
  retrieving revision 1.39.2.1
  diff -u -r1.39 -r1.39.2.1
  --- monisetup.php	26 Dec 2008 12:51:34 -0000	1.39
  +++ monisetup.php	26 Apr 2009 07:16:00 -0000	1.39.2.1
  @@ -1,7 +1,7 @@
   <?php
   // Copyright 2003-2007 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.39 2008/12/26 12:51:34 wkpark Exp $
  +// $Id: monisetup.php,v 1.39.2.1 2009/04/26 07:16:00 wkpark Exp $
   
   function _stripslashes($str) {
     return get_magic_quotes_gpc() ? stripslashes($str):$str;
  @@ -10,7 +10,9 @@
   class MoniConfig {
     function MoniConfig($configfile="config.php") {
       if (file_exists($configfile)) {
  -      $this->config=$this->_getConfig($configfile);
  +      $url_prefix= preg_replace("/\/([^\/]+)\.php$/","",$_SERVER['SCRIPT_NAME']);
  +      $config['url_prefix']=$url_prefix;
  +      $this->config=$this->_getConfig($configfile,$config);
         $this->rawconfig=$this->_rawConfig($configfile);
         $this->configdesc=$this->_getConfigDesc($configfile);
       } else {
  @@ -19,12 +21,13 @@
       }
     }
   
  -  function getDefaultConfig() {
  -    $this->config=$this->_getConfig("config.php.default");
  -
  +  function getDefaultConfig($configfile = 'config.php.default') {
       $hostconfig=$this->_getHostConfig();
  -    $this->rawconfig=array_merge($this->_rawConfig("config.php.default"),$hostconfig);
  -    while (list($key,$val)=each($hostconfig)) {
  +    $this->config=$this->_getConfig($configfile,$hostconfig);
  +
  +    $hostconf = $this->_quote_config($hostconfig);
  +    $this->rawconfig=array_merge($this->_rawConfig($configfile),$hostconf);
  +    while (list($key,$val)=each($hostconf)) {
         eval("\$$key=$val;");
         eval("\$this->config[\$key]=$val;");
       }
  @@ -35,13 +38,13 @@
         print '<h3>'._t("Check a dba configuration").'</h3>';
         $tempnam="/tmp/".time();
         if ($db=@dba_open($tempnam,"n","db4"))
  -        $config['dba_type']="'db4'";
  +        $config['dba_type']="db4";
         else if ($db=@dba_open($tempnam,"n","db3"))
  -        $config['dba_type']="'db3'";
  +        $config['dba_type']="db3";
         else if ($db=@dba_open($tempnam,"n","db2"))
  -        $config['dba_type']="'db2'";
  +        $config['dba_type']="db2";
         else if ($db=@dba_open($tempnam,"n","gdbm"))
  -        $config['dba_type']="'gdbm'";
  +        $config['dba_type']="gdbm";
   
         if ($db) dba_close($db);
         print '<ul><li>'.sprintf(_t("%s is selected."),"<b>$config[dba_type]</b>").'</li></ul>';
  @@ -49,7 +52,7 @@
       preg_match("/Apache\/2\./",$_SERVER['SERVER_SOFTWARE'],$match);
   
       if ($match) {
  -      $config['query_prefix']='"?"';
  +      $config['query_prefix']='?';
         while (ini_get('allow_url_fopen')) {
           print '<h3>'._t("Check a AcceptPathInfo setting for Apache 2.x.xx").'</h3>';
           print '<ul>';
  @@ -67,7 +70,7 @@
             print "<li><b><a href='http://moniwiki.sf.net/wiki.php/AcceptPathInfo'>AcceptPathInfo</a> <font color='red'>"._t("Off")."</font></b></li>\n";
           } else {
             print "<li><b>AcceptPathInfo <font color='blue'>"._t("On")."</font></b></li>\n";
  -          $config['query_prefix']='"/"';
  +          $config['query_prefix']='/';
           }
           print '</ul>';
           break;
  @@ -75,22 +78,31 @@
       }
   
       $url_prefix= preg_replace("/\/([^\/]+)\.php$/","",$_SERVER['SCRIPT_NAME']);
  -    $config['url_prefix']="'".$url_prefix."'";
  +    $config['url_prefix']=$url_prefix;
   
       $user = getenv('LOGNAME');
       $user = $user ? $user : get_current_user();
  -    $config['rcs_user']="'".$user."'";
  +    $config['rcs_user']=$user;
   
       if(getenv("OS")=="Windows_NT") {
         $config['timezone']="'-09-09'";
         // http://kldp.net/forum/message.php?msg_id=7675
         // http://bugs.php.net/bug.php?id=22418
         //$config['version_class']="'RcsLite'";
  -      $config['path']="'./bin;c:/program files/vim/vimXX'";
  +      $config['path']="./bin;c:/program files/vim/vimXX";
  +    } else {
  +      $config['rcs_user']='root'; // XXX
       }
   
       if (!file_exists('wikilib.php')) {
  -      $config['include_path']="'.:/usr/local/share/moniwiki:/usr/share/moniwiki'";
  +      $checkfile = array('plugin','locale');
  +      $dir='';
  +      foreach ($checkfile as $f) {
  +        if (is_link($f)) {
  +          $dir = dirname(readlink($f));
  +        }
  +      }
  +      $config['include_path']=".:$dir";
       }
       print '</div>';
       return $config;
  @@ -104,19 +116,20 @@
       $this->rawconfig=$config;
     }
   
  -  function _getConfig($configfile) {
  +  function _getConfig($configfile, $options = array()) {
       if (!file_exists($configfile))
         return array();
   
  -    $org=array();
  -    $org=get_defined_vars();
  +    extract($options);
  +    unset($options);
       include($configfile);
  -    $new=get_defined_vars();
  +    unset($configfile);
  +    $config=get_defined_vars();
   
  -    return array_diff($new,$org);
  +    return $config;
     }
   
  -  function _rawConfig($configfile) {
  +  function _rawConfig($configfile, $options = array()) {
       $lines=file($configfile);
       $key='';
       foreach ($lines as $line) {
  @@ -197,7 +210,175 @@
       return $conf;
     }
   
  -  function _genRawConfig($config) {
  +  function _quote_config($config) {
  +    foreach ($config as $k=>$v) {
  +      if (is_string($v)) {
  +        $v='"'.$v.'"'; // XXX need to check quotes
  +      } else if (is_bool($v)) {
  +        if ($v) $nline="true";
  +        else $v="false";
  +      }
  +      $config[$k] = $v;
  +    }
  +    return $config;
  +  }
  +
  +  function _genRawConfig($newconfig, $mode = 0, $configfile='config.php', $default='config.php.default') {
  +    if ($newconfig['admin_passwd'])
  +      $newconfig['admin_passwd']=crypt($newconfig['admin_passwd'],md5(time()));
  +    if ($newconfig['purge_passwd'])
  +      $newconfig['purge_passwd']=crypt($newconfig['purge_passwd'],md5(time()));
  +
  +    if ($mode == 1) {
  +      $newconfig = $this->_quote_config($newconfig);
  +    } else {
  +      if ($newconfig['admin_passwd'])
  +        $newconfig['admin_passwd']="'".$newconfig['admin_passwd']."'";
  +      if ($newconfig['purge_passwd'])
  +        $newconfig['purge_passwd']="'".$newconfig['purge_passwd']."'";
  +    }
  +
  +    if (file_exists($configfile))
  +      $conf_file = $configfile;
  +    else if (file_exists($default))
  +      $conf_file = $default;
  +    else
  +      return $this->_genRawConfigSimple($newconfig);
  +  
  +    $lines = file($conf_file);
  +
  +    $config = array();
  +    $nlines='';
  +    $key='';
  +    $tag='';
  +    foreach ($lines as $line) {
  +      $line=rtrim($line)."\n"; // for Win32
  +
  +      if (!$key) {
  +        // first line
  +        if ($line{0} == '<' and $line{1} == '?') {
  +          $date = date('Y-m-d h:i:s');
  +          $nlines[]='<'.'?php'."\n";
  +          $nlines[]=<<<HEADER
  +# This is a config.php file for the MoniWiki
  +# automatically detect your environment and set some default variables.
  +# $date by monisetup.php\n
  +HEADER;
  +          continue;
  +        } else if (preg_match('/^(#{1,}\s*)?\$[a-zA-Z][a-zA-Z0-9_]*\s*=/', $line, $m)) {
  +          $marker = $m[1];
  +          if ($marker != '')
  +            $mre = '#{1,}';
  +          else
  +            $mre = '';
  +          $mlen = strlen($marker.'$');
  +        } else {
  +          $nlines[]=$line;
  +          continue;
  +        }
  +      }
  +
  +      if ($key) {
  +        $val.=$line;
  +        if (!preg_match("/$tag\s*;(\s*#.*)?\s*$/",$line,$m)) continue;
  +        $mre = '';
  +        $desc[$key] = rtrim($m[1]);
  +      } else {
  +        list($key,$val)=explode('=',substr($line,$mlen),2);
  +        $key = trim($key);
  +        if (!preg_match('/(\s*;(\s*#.*)?)$/',$val,$match)) {
  +          if (substr($val,0,3)== '<<<') {
  +            $tag='^'.$mre.substr(rtrim($val),3);
  +          } else {
  +            $val = ltrim($val);
  +            $tag = '';
  +          }
  +          continue;
  +        } else {
  +          $val = substr($val,0,-strlen($match[1])-1);
  +          #$val .= '##########X'.$val.'==='.$match[1].'XX####';
  +          if ($match[2]) {
  +            $desc[$key] = rtrim($match[2]);
  +          } else {
  +            $desc[$key] = '';
  +          }
  +        }
  +      }
  +
  +      if (trim($key)) {
  +        $t = true;
  +        if (isset($newconfig[$key])) {
  +          if (!isset($config[$key])) {
  +            $val=$newconfig[$key];
  +            $newconfig[$key] = NULL;
  +            $marker = ''; # uncomment marker
  +          }
  +        } else {
  +          $val=preg_replace(array('@<@','@>@'),array('&lt;','&gt;'),$val);
  +          #print $key.'|=='.preg_quote($val);
  +          $val=rtrim($val);
  +          if (empty($marker))
  +            $val=preg_replace('/\s*;(\s*#.*)?$/','',$val);
  +        }
  +        $val = str_replace(array('&lt;','&gt;'),array('<','>'),$val);
  +        if (isset($config[$key])) {
  +          $val = rtrim($val);
  +          $val = str_replace("\n", "\n#", $val);
  +          if (!$marker) $marker = '#';
  +          $nline=$marker."\$$key=$val;"; # XXX
  +          if ($desc[$key]) $nline .= $desc[$key];
  +          $nline .= "\n";
  +          $t=NULL;
  +        } else if (empty($marker) and preg_match("/^<{3}([A-Za-z0-9]+)\s.*\\1\s*$/s",$val,$m)) {
  +          $config[$key] = $val;
  +          $save_val=$val;
  +          $val=str_replace("$m[1]",'',substr($val,3));
  +          $val=str_replace('"','\"',$val);
  +          $t=eval("\$$key=\"$val\";");
  +          $val=$save_val;
  +          $nline="\$$key=$val;\n";
  +        } else if ($marker) {
  +          $val = str_replace('&gt;','>',$val);
  +          $nline=$marker."\$$key=$val";
  +          if (empty($tag)) $nline .=';';
  +          if ($desc[$key]) $nline .= $desc[$key];
  +          $nline .= "\n";
  +          $config[$key] = $val;
  +          $t=NULL;
  +        } else if (is_string($val)) {
  +          $val = str_replace('&gt;','>',$val);
  +          if (strpos($val,"\n")===false) {
  +            $t=eval("\$$key=$val;");
  +          } else {
  +            $t=@eval("\$$key=$val;");
  +          }
  +          $nline="\$$key=$val;";
  +          if ($desc[$key]) $nline .= $desc[$key];
  +          $nline .= "\n";
  +        } else {
  +          $t=@eval("\$$key=$val;");
  +        }
  +        if ($t === NULL) {
  +          $nlines[]=$nline;
  +          $config[$key] = $val;
  +        }
  +        else
  +          print "ERROR: \$$key =$val;\n";
  +        $key = '';
  +        $tag = '';
  +      }
  +    }
  +    if (!empty($newconfig)) {
  +      foreach ($newconfig as $k=>$v) {
  +        if ($v != NULL)
  +        $nlines[] = '$'.$k.'='.$v.";\n";
  +      }
  +    }
  +
  +    return join('',$nlines);
  +  }
  +
  +  function _genRawConfigSimple($config) {
       $lines=array("<?php\n","# automatically generated by monisetup\n");
       while (list($key,$val) = each($config)) {
         if ($key=='admin_passwd' or $key=='purge_passwd')
  @@ -230,7 +411,7 @@
           $db=dba_open('data/counter.db','n',substr($config['dba_type'],1,-1));
         if ($db) dba_close($db);
       }
  -    return $lines;
  +    return implode('',$lines);
     }
   }
   
  @@ -254,12 +435,27 @@
        print "<p class='notice'><span class='warn'>"._t("WARN").":</span> ".
   	_t("Please execute the following command after you have completed your configuration.")."</p>\n";
        print "<pre class='console'>\n<font color='green'>$</font> sh secure.sh\n</pre>\n";
  +     if (is_writable('config.php')) {
  +       if (empty($config['admin_passwd'])) {
  +         print "<h2><font color='red'>"._t("WARN: You have to enter your Admin Password")."</font></h2>\n";
  +       } else {
  +         $owner = fileowner('.');
  +         print "<h2><font color='red'>"._t("WARN: If you have any permission to execute 'secure.sh'. press the following button")."</font></h2>\n";
  +         
  +         $msg = _t("Protect my config.php now!");
  +         echo <<<FORM
  +<form method='post' action=''>
  +<div class='protect'><input type='hidden' name='action' value='protect' /><input type='submit' name='protect' value='$msg' /></div>
  +</form>
  +FORM;
  +       }
  +     }
     }
   
     if (file_exists("config.php")) {
       if (!is_writable($config['data_dir'])) {
         if (02000 & fileperms(".")) # check sgid
  -        $datadir_perm = 0775;
  +        $datadir_perm = 02777;
         else
           $datadir_perm = 0777;
         $datadir_perm = decoct($datadir_perm);
  @@ -473,21 +669,29 @@
   }
   
   function show_wikiseed($config,$seeddir='wikiseed') {
  -  $path='.:/usr/share/moniwiki:/usr/local/share/moniwiki';
  +  if ($config['include_path'])
  +    $path = $config['include_path'];
  +  else
  +    $path='.:/usr/share/moniwiki:/usr/local/share/moniwiki';
     $pages= array();
     foreach (explode(':',$path) as $dir) {
  -    $handle= @opendir($dir.'/'.$seeddir);
  -    if ($handle) {
  +    if (is_dir($dir.'/'.$seeddir)) {
         $seeddir=$dir.'/'.$seeddir;
         break;
  +    } else if (is_dir($dir.'/data/text') and file_exists($dir.'/data/text/FrontPage')) {
  +      $seeddir=$dir.'/data/text';
  +      break;
       }
     }
  -  while ($file = readdir($handle)) {
  -    if (is_dir($seeddir."/".$file)) continue;
  -    $pagename = keyToPagename($file);
  -    $pages[$pagename] = $pagename;
  +  $handle= @opendir($seeddir);
  +  if (is_resource($handle)) {
  +    while ($file = readdir($handle)) {
  +      if (is_dir($seeddir."/".$file)) continue;
  +      $pagename = keyToPagename($file);
  +      $pages[$pagename] = $pagename;
  +    }
  +    closedir($handle);
     }
  -  closedir($handle);
   #  sort($pages);
     $idx=1;
   
  @@ -580,12 +784,18 @@
   }
   
   function sow_wikiseed($config,$seeddir='wikiseed',$seeds) {
  -  $path='.:/usr/share/moniwiki:/usr/local/share/moniwiki';
  +  if ($config['include_path'])
  +    $path = $config['include_path'];
  +  else
  +    $path='.:/usr/share/moniwiki:/usr/local/share/moniwiki';
     $pages= array();
     foreach (explode(':',$path) as $dir) {
       if (is_dir($dir.'/'.$seeddir)) {
         $seeddir=$dir.'/'.$seeddir;
         break;
  +    } else if (is_dir($dir.'/data/text') and file_exists($dir.'/data/text/FrontPage')) {
  +      $seeddir=$dir.'/data/text';
  +      break;
       }
     }
     umask(0133);
  @@ -645,9 +855,11 @@
     return $lang;
   }
   
  +$_locale = array();
  +
   function initlocale($lang,$charset) {
     global $_Config,$_locale,$locale;
  -  if (!@include_once('locale/'.$lang.'/LC_MESSAGES/moniwiki.php') or
  +  if (!@include_once('locale/'.$lang.'/LC_MESSAGES/moniwiki.php') and
        @include_once('locale/'.substr($lang,0,2).'/LC_MESSAGES/moniwiki.php')) {
       if (!empty($_locale)) {
         function _t($text) {
  @@ -822,6 +1034,17 @@
     font-family: Trebuchet MS, "Times New Roman", Times, serif;
   }
   
  +.protect {
  +  font-size: 30px;
  +  font-family: Trebuchet MS, "Times New Roman", Times, serif;
  +}
  +
  +.protect input {
  +  font-size: 30px;
  +  font-weight:bold;
  +  font-family: Trebuchet MS, "Times New Roman", Times, serif;
  +}
  +
   -->
   </style>
   </head>
  @@ -830,10 +1053,20 @@
   
   print "<div class='header'><h1><img src='imgs/moniwiki-logo.png' style='vertical-align: middle'/> "._t("MoniWiki")."</h1></div><div class='body'>\n";
   
  -if (file_exists("config.php") && !is_writable("config.php")) {
  +if (empty($_POST['action']) && file_exists("config.php") && !is_writable("config.php")) {
     print "<h2><font color='red'>"._t("'config.php' is not writable !")."</font></h2>\n";
     print _t("Please execute <tt>'monisetup.sh'</tt> or <tt>chmod a+w config.php</tt> first to change your settings.")."<br />\n";
   
  +  $msg = _t("Unprotect my config.php");
  +  echo "<form method='post' action=''>";
  +  echo "<div class='protect'>";
  +  echo "<table><tr><td><strong>Password</strong></td>";
  +  echo "<td><input type='password' name='oldpasswd' size='10'></td></tr>\n";
  +  echo "</table>";
  +  echo <<<FORM
  +<input type='hidden' name='action' value='protect' /><input type='submit' name='protect' value='$msg' /></div>
  +</form>
  +FORM;
     return;
   }
   
  @@ -850,7 +1083,29 @@
     return;
   }
   
  -if ($_SERVER['REQUEST_METHOD']=="POST" && $config) {
  +if ($_SERVER['REQUEST_METHOD']=="POST" && ($config or $action == 'protect')) {
  +
  +  if ($action == 'protect') {
  +    if (is_writable('config.php')) {
  +      $old = 0222 & fileperms("config.php"); # check permission
  +      if ($old) {
  +        chmod('config.php',0444);
  +        print "<h2><font color='red'>"._t("config.php is protected now !")."</font></h2>\n";
  +      }
  +    } else if (!empty($Config->config['admin_passwd'])) {
  +      if (crypt($oldpasswd,$Config->config['admin_passwd']) != 
  +          $Config->config['admin_passwd']) {
  +        print "<h2><font color='red'>"._t("Invalid password error !")."</font></h2>\n";
  +        print _t("If you can't remember your admin password, delete password entry in the 'config.php' and restart 'monisetup'")."<br />\n";
  +        $invalid=1;
  +        return;
  +      }
  +      chmod('config.php',0644);
  +      print "<h2><font color='red'>"._t("config.php is unprotected now !")."</font></h2>\n";
  +    }
  +    return;
  +  }
  +
     $conf=$Config->_getFormConfig($config);
     $rawconfig=$Config->_getFormConfig($config,1);
     $config=$conf;
  @@ -893,9 +1148,8 @@
       }
       if (!empty($invalid))
         print "<h2>".sprintf(_t("Updated Configutations for this %s"),$config['sitename'])."</h2>\n";
  -    $lines=$Config->_genRawConfig($rawconfig);
  +    $rawconf=$Config->_genRawConfig($rawconfig);
       print "<pre class='console'>\n";
  -    $rawconf=join("",$lines);
       #
       ob_start();
       highlight_string($rawconf);
  @@ -926,7 +1180,10 @@
   
     if (!$Config->config) {
       print "<h2>"._t("Welcome to MoniWiki ! This is your first installation")."</h2>\n";
  -    $Config->getDefaultConfig();
  +    $initconfig = 'config.php.default';
  +    if (!empty($_GET['init']) and file_exists($_GET['init']))
  +      $initconfig = $_GET['init'];
  +    $Config->getDefaultConfig($initconfig);
       $config=$Config->config;
   
       checkConfig($config);
  @@ -934,8 +1191,7 @@
       $rawconfig=$Config->rawconfig;
       print "<h3 color='blue'>"._t("Default settings are loaded...")."</h3>\n";
   
  -    $lines=$Config->_genRawConfig($rawconfig);
  -    $rawconf=implode("",$lines);
  +    $rawconf=$Config->_genRawConfig($rawconfig, 0, 'config.php', $initconfig);
       umask(000);
       $fp=fopen("config.php","w");
       fwrite($fp,$rawconf);
  
  
  


wkpark      2009/04/26 16:18:53

  Modified:    local    Tag: B_1_1_3 moniwyg.js subindex.js wikibits.js
  Log:
  apply important patch from main trunk
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.62.2.2  +10 -6     moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.62.2.1
  retrieving revision 1.62.2.2
  diff -u -r1.62.2.1 -r1.62.2.2
  --- moniwyg.js	9 Jan 2009 10:15:12 -0000	1.62.2.1
  +++ moniwyg.js	26 Apr 2009 07:18:53 -0000	1.62.2.2
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.62.2.1 2009/01/09 10:15:12 wkpark Exp $
  +// $Id: moniwyg.js,v 1.62.2.2 2009/04/26 07:18:53 wkpark Exp $
   //
   //_url_prefix="/wiki";
   //
  @@ -614,7 +614,7 @@
   
   
   
  -Wikiwyg.prototype.editMode = function(form,text) {
  +Wikiwyg.prototype.editMode = function(form,text,mode) {
       var self = this;
       var dom = document.createElement('div');
   
  @@ -625,7 +625,11 @@
       var wikitext = text == null ? mytext.value:text;
       this.mylocation = form.getAttribute('action');
   
  -    this.current_mode = this.first_mode;
  +    if (typeof mode == 'undefined')
  +        this.current_mode = this.first_mode;
  +    else
  +        this.current_mode = this.modeByName('Wikiwyg.Wikitext');
  +
       if (this.current_mode.classname.match(/(Wysiwyg|HTML|Preview)/)) {
           var myWikiwyg = new Wikiwyg.Wikitext();
   
  @@ -2749,7 +2753,7 @@
   
    wikiwygs = [];
   
  -function sectionEdit(ev,obj,sect) {
  +function sectionEdit(ev,obj,sect,mode) {
       var area;
       var text=null;
       var form=null;
  @@ -2798,7 +2802,7 @@
           if (mycheck && mycheck.match(/WikiWygArea/)) {
               var tmp = mycheck.split(/_/); // get already loaded WikiWygArea XXX hack
   
  -            wikiwygs[tmp[1]].editMode(form,text);
  +            wikiwygs[tmp[1]].editMode(form,text,mode);
               return;
           }
           break;
  @@ -2830,7 +2834,7 @@
               var myWikiwyg = new Wikiwyg();
               myWikiwyg.createWikiwygArea(area, myConfig, area_id);
               wikiwygs.push(myWikiwyg);
  -            myWikiwyg.editMode(form,text);
  +            myWikiwyg.editMode(form,text,mode);
   
       }
       return;
  
  
  
  1.4.2.1   +10 -2     moniwiki/local/subindex.js
  
  Index: subindex.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/subindex.js,v
  retrieving revision 1.4
  retrieving revision 1.4.2.1
  diff -u -r1.4 -r1.4.2.1
  --- subindex.js	8 Jan 2008 15:28:58 -0000	1.4
  +++ subindex.js	26 Apr 2009 07:18:53 -0000	1.4.2.1
  @@ -22,7 +22,10 @@
                   else
                       toggle=false;
               } else if (mode) {
  -                toggle=true;
  +                if (sub.style.display == 'none')
  +                    toggle = true;
  +                else
  +                    toggle = false;
               }
               if (typeof Effect != 'undefined') { // prototype.js
                   if (toggle) {
  @@ -30,6 +33,11 @@
                   } else {
   	            new Effect.SlideUp(sub, { duration: 0.3, afterFinish: function() {Element.hide(sub);} });
                   }
  +            } else if (typeof Fx.Slide == 'undefined') { // get sectpages for the first time.
  +                if (sub.style.display == 'none')
  +                    sub.style.display = 'block';
  +                else
  +                    sub.style.display = 'none';
               }
           } else { // get subpages for the first time.
               var sub=document.createElement('div');
  @@ -45,7 +53,7 @@
               if (typeof Effect != 'undefined') { // prototype.js
                   sub.setAttribute('style','display:none');
   	        new Effect.SlideDown(sub, { duration: 0.4,afterFinish: function() {Element.show(sub);} });
  -            } else { // mootools
  +            } else if (typeof Fx.Slide != 'undefined') { // get sectpages for the first time.
                   var mySlide = new Fx.Slide(sub);
                   //mySlide.wrapper.setStyle('height',0);
   
  
  
  
  1.17.2.1  +2 -2      moniwiki/local/wikibits.js
  
  Index: wikibits.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/wikibits.js,v
  retrieving revision 1.17
  retrieving revision 1.17.2.1
  diff -u -r1.17 -r1.17.2.1
  --- wikibits.js	31 Dec 2008 11:12:51 -0000	1.17
  +++ wikibits.js	26 Apr 2009 07:18:53 -0000	1.17.2.1
  @@ -1,7 +1,7 @@
   // from the MediaWiki
   // simplified for the MoniWiki by wkpark
   //
  -// $Id: wikibits.js,v 1.17 2008/12/31 11:12:51 wkpark Exp $
  +// $Id: wikibits.js,v 1.17.2.1 2009/04/26 07:18:53 wkpark Exp $
   //
   // Wikipedia JavaScript support functions
   // if this is true, the toolbar will no longer overwrite the infobox when you move the mouse over individual items
  @@ -74,7 +74,7 @@
   		mouseOver = "onMouseover=\"if(!noOverwrite){document.infoform.infobox.value='"+tagOpen+sampleText+tagClose+"'};\"";
   	}
   
  -	document.write("<a href=\"javascript:insertTags");
  +	document.write("<a href='#' onclick=\"javascript:insertTags");
   	document.write("('"+tagOpen+"','"+tagClose+"','"+sampleText+"');\">");
   
           document.write("<img height=\"22\" src=\""+imageFile+"\" border=\"0\" alt=\""+speedTip+"\" title=\""+speedTip+"\""+mouseOver+">");
  
  
  


wkpark      2009/04/26 16:18:54

  Modified:    locale/po Tag: B_1_1_3 moniwiki.pot
  Log:
  apply important patch from main trunk
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.24.2.2  +1 -1      moniwiki/locale/po/moniwiki.pot
  
  Index: moniwiki.pot
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/moniwiki.pot,v
  retrieving revision 1.24.2.1
  retrieving revision 1.24.2.2
  diff -u -r1.24.2.1 -r1.24.2.2
  --- moniwiki.pot	9 Jan 2009 10:15:13 -0000	1.24.2.1
  +++ moniwiki.pot	26 Apr 2009 07:18:53 -0000	1.24.2.2
  @@ -7,7 +7,7 @@
   msgstr ""
   "Project-Id-Version: PACKAGE VERSION\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2009-01-09 19:13+0900\n"
  +"POT-Creation-Date: 2009-01-09 19:25+0900\n"
   "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
   "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
   "Language-Team: LANGUAGE <LL@li.org>\n"
  
  
  


wkpark      2009/04/26 16:18:54

  Modified:    plugin   Tag: B_1_1_3 Diff.php FullSearch.php Gallery.php
                        Info.php Play.php UploadedFiles.php download.php
                        pagelist.php
  Log:
  apply important patch from main trunk
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.19.2.1  +7 -3      moniwiki/plugin/Diff.php
  
  Index: Diff.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Diff.php,v
  retrieving revision 1.19
  retrieving revision 1.19.2.1
  diff -u -r1.19 -r1.19.2.1
  --- Diff.php	12 Dec 2008 09:43:54 -0000	1.19
  +++ Diff.php	26 Apr 2009 07:18:54 -0000	1.19.2.1
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a diff plugin for the MoniWiki
   //
  -// $Id: Diff.php,v 1.19 2008/12/12 09:43:54 wkpark Exp $
  +// $Id: Diff.php,v 1.19.2.1 2009/04/26 07:18:54 wkpark Exp $
   
   function simple_diff($diff) {
     $diff=str_replace("<","&lt;",$diff);
  @@ -235,8 +235,12 @@
         $ret= call_user_func($type,$out);
         if (is_array($ret)) { // for smart_diff
           $dels=$ret[1]; $ret=$ret[0];
  -        $rev=($rev2 and $rev2) ? $rev2:''; // get newest rev.
  -        $current=$formatter->page->_get_raw_body(array('rev'=>$rev));
  +        $rev=($rev1 and $rev2) ? $rev2:''; // get newest rev.
  +        if (!empty($rev)) {
  +          $current=$formatter->page->get_raw_body(array('rev'=>$rev));
  +        } else {
  +          $current=$formatter->page->_get_raw_body();
  +        }
           $lines=explode("\n",$current);
           $nret=$ret;
           foreach ($ret as $k => $v) {
  
  
  
  1.25.2.1  +5 -5      moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.25
  retrieving revision 1.25.2.1
  diff -u -r1.25 -r1.25.2.1
  --- FullSearch.php	12 Dec 2008 09:46:28 -0000	1.25
  +++ FullSearch.php	26 Apr 2009 07:18:54 -0000	1.25.2.1
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
   //
  -// $Id: FullSearch.php,v 1.25 2008/12/12 09:46:28 wkpark Exp $
  +// $Id: FullSearch.php,v 1.25.2.1 2009/04/26 07:18:54 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
  @@ -110,7 +110,7 @@
       foreach($terms as $term) {
         if (trim($term)=='') continue;
         if (preg_match('/^([-+]?)("?)([^\\2]+?)\\2$/',$term,$match)) {
  -        $word=str_replace(array('-','\\','.','*'),'',$match[3]);
  +        $word=str_replace(array('\\','.','*'),'',$match[3]);
           $len=strlen($word);
   
           if (!$match[1] and $match[2] != '"') {
  @@ -200,18 +200,18 @@
         foreach ($pages as $page_name) {
           $links=unserialize($cache->fetch($page_name));
           if (is_array($links)) {
  -          if (stristr(implode(' ',$links),$value))
  +          if (in_array($value,$links))
               $hits[$page_name] = -1;
               // ignore count if < 0
  -          }
           }
  +      }
       } else if ($opts['keywords']) {
         $pages = $DBInfo->getPageLists();
         $opts['context']=-1; # turn off context-matching
         $cache=new Cache_text("keywords");
         foreach ($pages as $page_name) {
           $links=unserialize($cache->fetch($page_name));
  -        #print_r($links);
  +        // XXX
           if (is_array($links)) {
             if (stristr(implode(' ',$links),$needle))
               $hits[$page_name] = -1;
  
  
  
  1.36.2.1  +2 -2      moniwiki/plugin/Gallery.php
  
  Index: Gallery.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Gallery.php,v
  retrieving revision 1.36
  retrieving revision 1.36.2.1
  diff -u -r1.36 -r1.36.2.1
  --- Gallery.php	19 Dec 2008 13:40:18 -0000	1.36
  +++ Gallery.php	26 Apr 2009 07:18:54 -0000	1.36.2.1
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Gallery]]
   //
  -// $Id: Gallery.php,v 1.36 2008/12/19 13:40:18 wkpark Exp $
  +// $Id: Gallery.php,v 1.36.2.1 2009/04/26 07:18:54 wkpark Exp $
   
   function get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -279,7 +279,7 @@
             $fname=$dir.'/'.$file;
             list($w, $h) = getimagesize($fname);
             if ($w > $thumb_width) {
  -            $nh=$width*$h/$w;
  +            $nh=$thumb_width*$h/$w;
               $thumb= imagecreatetruecolor($thumb_width,$nh);
               // XXX only jpeg for testing now.
               if (preg_match("/\.(jpg|jpeg)$/i",$file))
  
  
  
  1.18.2.1  +4 -3      moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Info.php,v
  retrieving revision 1.18
  retrieving revision 1.18.2.1
  diff -u -r1.18 -r1.18.2.1
  --- Info.php	29 Nov 2008 07:45:44 -0000	1.18
  +++ Info.php	26 Apr 2009 07:18:54 -0000	1.18.2.1
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Info plugin for the MoniWiki
   //
  -// $Id: Info.php,v 1.18 2008/11/29 07:45:44 wkpark Exp $
  +// $Id: Info.php,v 1.18.2.1 2009/04/26 07:18:54 wkpark Exp $
   
   function _parse_rlog($formatter,$log,$options=array()) {
     global $DBInfo;
  @@ -28,10 +28,11 @@
     $url=$formatter->link_url($formatter->page->urlname);
   
     $diff_btn=_("Diff");
  +  $out = "<div class='wikiInfo'>\n";
     if ($options['title'])
  -    $out=$options['title'];
  +    $out.=$options['title'];
     else
  -    $out="<div class='wikiInfo'><h2>"._("Revision History")."</h2>\n";
  +    $out.="<h2>"._("Revision History")."</h2>\n";
     $out.="<form id='infoform' method='post' action='$url'>";
     $out.="<table class='info' cellpadding='3' cellspacing='2'><tr>\n";
     $out.="<th class='info'>"._("ver.")."</th><th class='info'>"._("Date and Changes")."</th>".
  
  
  
  1.7.2.1   +19 -13    moniwiki/plugin/Play.php
  
  Index: Play.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Play.php,v
  retrieving revision 1.7
  retrieving revision 1.7.2.1
  diff -u -r1.7 -r1.7.2.1
  --- Play.php	9 Oct 2007 05:11:45 -0000	1.7
  +++ Play.php	26 Apr 2009 07:18:54 -0000	1.7.2.1
  @@ -8,12 +8,12 @@
   // Name: Play macro
   // Description: media Player Plugin
   // URL: MoniWikiDev:PlayMacro
  -// Version: $Revision: 1.7 $
  +// Version: $Revision: 1.7.2.1 $
   // License: GPL
   //
   // Usage: [[Play(http://blah.net/blah.mp3)]]
   //
  -// $Id: Play.php,v 1.7 2007/10/09 05:11:45 wkpark Exp $
  +// $Id: Play.php,v 1.7.2.1 2009/04/26 07:18:54 wkpark Exp $
   
   function macro_Play($formatter,$value) {
     global $DBInfo;
  @@ -165,9 +165,7 @@
         }
         $displayheight=$height;
         $height+=$sz*40; // XXX
  -      $addparam=<<<EOS
  -        _s$num.addVariable("displayheight","$displayheight");
  -EOS;
  +      $addparam="displayheight: '$displayheight'";
         $filelist=qualifiedUrl($playlist);
       } else {
         $filelist=$url[0];
  @@ -176,14 +174,22 @@
       $jw_script=<<<EOS
   <p id="mediaplayer$num"></p>
   <script type="text/javascript">
  -        var _s$num = new SWFObject("$_swf_prefix/mediaplayer.swf","_mediaplayer$num","$width","$height","7");
  -        _s$num.addParam("allowfullscreen","true");
  -        _s$num.addVariable("width","$width");
  -        _s$num.addVariable("height","$height");
  -        $addparam
  -        _s$num.addVariable("file","$filelist");
  -        //_s$num.addVariable("image","preview.jpg");
  -        _s$num.write("mediaplayer$num");
  +    (function() {
  +        var params = {
  +          allowfullscreen: "true"
  +        };
  +
  +        var flashvars = {
  +          width: "$width",
  +          height: "$height",
  +          // image: "preview.jpg",
  +          $addparam
  +          file: "$filelist"
  +        };
  +
  +        swfobject.embedSWF("$_swf_prefix/mediaplayer.swf","mediaplayer$num","$width","$height","0.0.9",
  +        "expressInstall.swf",flashvars,params);
  +    })();
   </script>
   EOS;
   
  
  
  
  1.31.2.1  +29 -8     moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.31
  retrieving revision 1.31.2.1
  diff -u -r1.31 -r1.31.2.1
  --- UploadedFiles.php	27 Dec 2008 03:18:04 -0000	1.31
  +++ UploadedFiles.php	26 Apr 2009 07:18:54 -0000	1.31.2.1
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadedFiles plugin for the MoniWiki
   //
  -// $Id: UploadedFiles.php,v 1.31 2008/12/27 03:18:04 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.31.2.1 2009/04/26 07:18:54 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     if (!empty($options['q'])) {
  @@ -43,7 +43,11 @@
      $iconset='gnome';
      $icon_dir=$DBInfo->imgs_dir.'/plugin/UploadedFiles/'.$iconset;
   
  -   $args=explode(',',$value);
  +   $args = !empty($DBInfo->uploadedfiles_options) ?
  +      explode(',',$DBInfo->uploadedfiles_options):array();
  +   $nargs = explode(',',$value);
  +   if (!empty($nargs)) $args = array_merge($args,$nargs);
  +
      $value='';
   
      $default_column=8;
  @@ -71,12 +75,14 @@
      if ($DBInfo->use_lightbox and !$js_tag)
        $href_attr=' rel="lightbox[upload]" ';
   
  +   $nodir = 0;
      foreach ($args as $arg) {
         $arg=trim($arg);
         if (($p=strpos($arg,'='))!==false) {
            $k=substr($arg,0,$p);
            $v=substr($arg,$p+1);
            if ($k=='preview') { $use_preview=$v; }
  +         else if ($k == 'nodir') { $nodir=$v; }
            else if ($k == 'tag') {
              $js_tag=1; $use_preview=1;
            }
  @@ -84,6 +90,13 @@
            $value=$arg;
         }
      }
  +   if (!isset($options['nodir']))
  +      $options['nodir'] = $nodir;
  +
  +   if (!empty($options['page']))
  +      $value = $options['page'];
  +   // avoid to set the pagename of the "page,name" as "name"
  +
      if ($js_tag) {
         $form='editform';
         $js_script=<<<EOS
  @@ -254,11 +267,17 @@
      $count=0;
      while ($file= readdir($handle)) {
         if ($file[0]=='.') continue;
  -      if (!$options['nodir'] and is_dir($dir."/".$file)) {
  -        if ($value =='UploadFile')
  -          $dirs[]= $DBInfo->keyToPagename($file);
  -      } else if (preg_match($needle,$file) and $count >= $pfrom)
  -        $upfiles[]= _p_filename($file);
  +      if ($count >= $pfrom) {
  +        if (is_dir($dir."/".$file)) {
  +          if ($options['nodir']) continue;
  +          if ($value =='UploadFile')
  +            $dirs[]= $DBInfo->keyToPagename($file);
  +        } else if (preg_match($needle,$file) and $count >= $pfrom) {
  +          if ($count < $pto) {
  +            $upfiles[]= _p_filename($file);
  +          }
  +        }
  +      }
         $count++;
         if ($count >= $pto) { $plink=1; break;}
      }
  @@ -305,7 +324,7 @@
         $idx++;
      }
   
  -   if (!$options['nodir'] and !$dirs) {
  +   if (!empty($value) and $value!='UploadFile') {
         if ($js_tag) {
           #$attr=' target="_blank"';
           $extra='&amp;popup=1&amp;tag=1';
  @@ -326,6 +345,8 @@
      }
      if ($options['needle'])
         $extra.='&amp;q='.$options['needle'];
  +   if (isset($options['nodir']))
  +      $extra.='&amp;nodir='.$options['nodir'];
      if ($plink)
         $plink=$formatter->link_tag('',"?action=uploadedfiles$extra&amp;p=".($p+1),_("Next page &raquo;"),$attr);
      else if ($p > 1)
  
  
  
  1.19.2.1  +2 -2      moniwiki/plugin/download.php
  
  Index: download.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/download.php,v
  retrieving revision 1.19
  retrieving revision 1.19.2.1
  diff -u -r1.19 -r1.19.2.1
  --- download.php	16 Dec 2008 15:18:31 -0000	1.19
  +++ download.php	26 Apr 2009 07:18:54 -0000	1.19.2.1
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // download action plugin for the MoniWiki
   //
  -// $Id: download.php,v 1.19 2008/12/16 15:18:31 wkpark Exp $
  +// $Id: download.php,v 1.19.2.1 2009/04/26 07:18:54 wkpark Exp $
   //
   function do_download($formatter,$options) {
     global $DBInfo;
  @@ -93,7 +93,7 @@
   
     # set filename
     if (preg_match("/\.(.{1,4})$/",$file,$match))
  -    $mimetype=strtolower($mime[$match[1]]);
  +    $mimetype=$mime[strtolower($match[1])];
     if (!$mimetype) $mimetype="application/x-unknown";
   
     if (strstr($_SERVER['HTTP_USER_AGENT'], 'MSIE')) {
  
  
  
  1.4.2.1   +9 -1      moniwiki/plugin/pagelist.php
  
  Index: pagelist.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/pagelist.php,v
  retrieving revision 1.4
  retrieving revision 1.4.2.1
  diff -u -r1.4 -r1.4.2.1
  --- pagelist.php	28 Dec 2008 14:33:43 -0000	1.4
  +++ pagelist.php	26 Apr 2009 07:18:54 -0000	1.4.2.1
  @@ -5,7 +5,7 @@
   //
   // Usage: [[PageList(a needle for list,dir,info,date]]
   //
  -// $Id: pagelist.php,v 1.4 2008/12/28 14:33:43 wkpark Exp $
  +// $Id: pagelist.php,v 1.4.2.1 2009/04/26 07:18:54 wkpark Exp $
   
   function macro_PageList($formatter,$arg="",$options=array()) {
     global $DBInfo;
  @@ -26,7 +26,10 @@
         $options['metawiki']=1;
     }
   
  +  $upper = '';
     if ($options['subdir']) {
  +    if (($p = strrpos($formatter->page->name,'/')) !== false)
  +      $upper = substr($formatter->page->name,0,$p);
       $needle=_preg_search_escape($formatter->page->name);
       $needle='^'.$needle.'\/';
     } else if (!empty($options['rawre']))
  @@ -95,8 +98,13 @@
           $iconset='tango';
           $icon_dir=$DBInfo->imgs_dir.'/plugin/UploadedFiles/'.$iconset;
           $dicon="<img src='$icon_dir/folder-16.png' width='16px'/>";
  +        $uicon="<img src='$icon_dir/up-16.png' width='16px'/>";
           $ficon="<img src='$icon_dir/text-16.png' width='16px'/>";
           $now=time();
  +        if ($upper)
  +            $out.= '<tr><td>'.$uicon.'</td><td>'.
  +                $formatter->link_tag(_rawurlencode($upper),"",'..').'</td>';
  +            
           foreach ($dirs as $pg=>$name) {
               $out.= '<tr><td>'.$dicon.'</td><td>'.
                   $formatter->link_tag(_rawurlencode($pg),"",
  
  
  


wkpark      2009/04/26 16:24:22

  Modified:    css      kbd.js
  Log:
  fixed last change
  
  Revision  Changes    Path
  1.20      +3 -2      moniwiki/css/kbd.js
  
  Index: kbd.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/kbd.js,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- kbd.js	18 Apr 2009 15:35:09 -0000	1.19
  +++ kbd.js	26 Apr 2009 07:24:22 -0000	1.20
  @@ -6,7 +6,7 @@
   
      distributable under GPL
   
  -   $Id: kbd.js,v 1.19 2009/04/18 15:35:09 wkpark Exp $
  +   $Id: kbd.js,v 1.20 2009/04/26 07:24:22 wkpark Exp $
   
      CHANGES
   
  @@ -18,6 +18,7 @@
      * 2004/10/03 : more intelligent behavior with search keys '?' '/'
      * 2007/11/09 : simplified and cleanup.
      * 2008/11/25 : do not assume the "go" form is always defined.
  +   * 2009/04/19 : changeable name of the default input form. use control-Enter to save.
   */
   
   /*
  @@ -70,7 +71,7 @@
   
   // go form ID
   _go= "go";
  -_govalue= _govalue || "value"; // elements['value']
  +_govalue= (typeof _govalue != 'undefined') ? _govalue:"value"; // elements['value']
   _ap = _qp == '/' ? '?':'&';
   var is_safari = navigator.appVersion.toLowerCase().indexOf('safari') != -1;
   
  
  
  


wkpark      2009/04/26 16:25:40

  Modified:    css      _base.css _extra.css
  Log:
  support codeDiff
  
  Revision  Changes    Path
  1.28      +20 -4     moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- _base.css	24 Dec 2008 09:14:56 -0000	1.27
  +++ _base.css	26 Apr 2009 07:25:40 -0000	1.28
  @@ -85,7 +85,10 @@
      background-color: #ECECEC;
   }
   
  -textarea.wiki { width:100%; }
  +textarea {
  +  font-family: monospace;
  +  font-size:14px; width:100%;
  +}
   
   form { margin:0; padding:0;/* for IE */}
   
  @@ -133,7 +136,7 @@
   }
   
   div.diff-removed, tr.diff-removed {
  -  background-color:#EEBfbb;
  +  background-color:#FFDDDD;
   }
   
   div.diff-sep {
  @@ -144,15 +147,28 @@
   }
   
   span.diff-added, ins.diff-added {
  -  background-color: #60FF60;
  +  background-color: #DDFFDD;
     text-decoration: none;
   }
   
   span.diff-removed, del.diff-removed {
  -  background-color: #FF0000;
  +  background-color: #FFDDDD;
     text-decoration: none;
   }
   
  +div.codeDiff span.num { padding-right:4px; text-align:right; width:40px; display:inline-block; }
  +div.codeDiff span.num { background-color:#dddddd; border-right:3px solid #9b9b9b;}
  +div.diff-added span.num { background-color:#00ea00; border-right:3px solid #00b700 ;}
  +div.diff-removed span.num { background-color:#ff6a6a; border-right:3px solid #cc0000; }
  +div.diff-removed span.num:hover { background-color:#ffecec; border-right:3px solid #cc0000; }
  +div.diff-added span.num:hover { background-color:#BBFFBB; border-right:3px solid #00b700 ;}
  +.codeDiff span.num:hover { background-color:#f0f0f0; border-right:3px solid #9b9b9b;}
  +
  +.codeDiff h2 { padding-left:5px; }
  +
  +div.diff-removed.selected { background-color: #FFB5B5; }
  +div.diff-added.selected { background-color: #26FF26; }
  +
   div.message {
     background-color: #E8E8E8;
     padding:0px 5px;
  
  
  
  1.23      +53 -0     moniwiki/css/_extra.css
  
  Index: _extra.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_extra.css,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- _extra.css	10 Dec 2008 13:10:58 -0000	1.22
  +++ _extra.css	26 Apr 2009 07:25:40 -0000	1.23
  @@ -692,3 +692,56 @@
     background:url(../imgs/misc/btnpushed.png) repeat-x;
   }
   
  +.commentflag {
  +cursor:pointer;
  +font-size:90%;
  +font-weight:normal;
  +height:21px;
  +line-height:1.9em;
  +margin-top:-1px;
  +padding-left:5px;
  +margin-left:-10px;
  +position:absolute;
  +text-align:left;
  +vertical-align:top;
  +width:25px;
  +z-index:900;
  +}
  +
  +.commentflag.selected {
  +  background:transparent url(../imgs/misc/comment.png) no-repeat scroll 0 0 !important;
  +}
  +
  +.reviewComment {
  + position:absolute;
  + display:none;
  + background:#ffff88;
  + border:1px solid #333333;
  + z-index:901;
  + padding:5px;
  + color: black;
  +}
  +
  +div.diff-removed:hover .commentflag, div.diff-added:hover .commentflag {
  +  background:transparent url(../imgs/misc/comment-ghost.png) no-repeat scroll 0 0 !important;
  +}
  +
  +div.diff-removed:hover .commentflag.selected, div.diff-added:hover .commentflag.selected {
  +  background:transparent url(../imgs/misc/comment.png) no-repeat scroll 0 0 !important;
  +}
  +
  +div.diff-removed.selected .commentflag.selected, div.diff-added.selected .commentflag.selected {
  +  background: url('../imgs/misc/comment-draft.png') no-repeat !important;
  +}
  +
  +div.diff-added.selected .commentflag, div.diff-removed.selected .commentflag {
  +  background: url('../imgs/misc/comment-draft.png') no-repeat !important;
  +}
  +
  +.commentflag.draft {
  +  background: url('../imgs/misc/comment-draft.png') no-repeat !important;
  +}
  +
  +.commentflag.selected {
  +  background: url('../imgs/misc/comment.png') no-repeat !important;
  +}
  
  
  


wkpark      2009/04/26 16:27:55

  Modified:    .        wiki.php
  Log:
  fixed [url text] rendering bug.
  
  Revision  Changes    Path
  1.468     +4 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.467
  retrieving revision 1.468
  diff -u -r1.467 -r1.468
  --- wiki.php	20 Apr 2009 20:01:08 -0000	1.467
  +++ wiki.php	26 Apr 2009 07:27:55 -0000	1.468
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.467 2009/04/20 20:01:08 wkpark Exp $
  +// $Id: wiki.php,v 1.468 2009/04/26 07:27:55 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.467 $',1,-1);
  +$_revision = substr('$Revision: 1.468 $',1,-1);
   $_release = '1.1.4-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -2339,7 +2339,8 @@
             $text = substr($url,$p+1);
             $url = substr($url,0,$p);
           }
  -        $link=str_replace('&','&amp;',$url);
  +        #$link=str_replace('&','&amp;',$url);
  +        $link=preg_replace('/&(?!#?[a-z0-9]+;)/i','&amp;',$url);
           if (empty($text)) $text=$url;
           else {
             $img_attr='';
  
  
  


wkpark      2009/04/28 02:07:28

  Modified:    .        wiki.php
  Log:
  override $formatter->prefix optionally
  
  Revision  Changes    Path
  1.469     +8 -6      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.468
  retrieving revision 1.469
  diff -u -r1.468 -r1.469
  --- wiki.php	26 Apr 2009 07:27:55 -0000	1.468
  +++ wiki.php	27 Apr 2009 17:07:28 -0000	1.469
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.468 2009/04/26 07:27:55 wkpark Exp $
  +// $Id: wiki.php,v 1.469 2009/04/27 17:07:28 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.468 $',1,-1);
  +$_revision = substr('$Revision: 1.469 $',1,-1);
   $_release = '1.1.4-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -40,8 +40,10 @@
       $updated=false;
       $mt=$cp->mtime('plugins');
       foreach ($dirs as $d) {
  -      $ct=filemtime($d.'/plugin/.'); // XXX mtime fix
  -      $updated=$ct > $mt ? true:$updated;
  +      if (is_dir($d.'/plugin/')) {
  +        $ct=filemtime($d.'/plugin/.'); // XXX mtime fix
  +        $updated=$ct > $mt ? true:$updated;
  +      }
       }
       if ($updated) {
         $cp->remove('plugins');
  @@ -1766,7 +1768,7 @@
     var $purple_number=0;
     var $java_scripts=array();
   
  -  function Formatter($page="",$options="") {
  +  function Formatter($page="",$options=array() {
       global $DBInfo;
   
       $this->page=$page;
  @@ -1776,7 +1778,7 @@
       $this->toc=0;
       $this->toc_prefix='';
       $this->highlight="";
  -    $this->prefix= get_scriptname();
  +    $this->prefix= (isset($options['prefix'])) ? $options['prefix']:get_scriptname();
       $this->self_query='';
       $this->url_prefix= $DBInfo->url_prefix;
       $this->imgs_dir= $DBInfo->imgs_dir;
  
  
  


wkpark      2009/04/28 02:09:43

  Modified:    .        wiki.php
  Log:
  oops! add a missing brace;
  
  Revision  Changes    Path
  1.470     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.469
  retrieving revision 1.470
  diff -u -r1.469 -r1.470
  --- wiki.php	27 Apr 2009 17:07:28 -0000	1.469
  +++ wiki.php	27 Apr 2009 17:09:43 -0000	1.470
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.469 2009/04/27 17:07:28 wkpark Exp $
  +// $Id: wiki.php,v 1.470 2009/04/27 17:09:43 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.469 $',1,-1);
  +$_revision = substr('$Revision: 1.470 $',1,-1);
   $_release = '1.1.4-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -1768,7 +1768,7 @@
     var $purple_number=0;
     var $java_scripts=array();
   
  -  function Formatter($page="",$options=array() {
  +  function Formatter($page="",$options=array()) {
       global $DBInfo;
   
       $this->page=$page;
  
  
  


wkpark      2009/04/29 06:21:31

  Modified:    .        wiki.php
  Log:
   * fixed replace processor method.
   * fixed nforge is_protected() method : use isAdmin() and do not use $admin_passwd;
  
  Revision  Changes    Path
  1.471     +4 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.470
  retrieving revision 1.471
  diff -u -r1.470 -r1.471
  --- wiki.php	27 Apr 2009 17:09:43 -0000	1.470
  +++ wiki.php	28 Apr 2009 21:21:31 -0000	1.471
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.470 2009/04/27 17:09:43 wkpark Exp $
  +// $Id: wiki.php,v 1.471 2009/04/28 21:21:31 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.470 $',1,-1);
  +$_revision = substr('$Revision: 1.471 $',1,-1);
   $_release = '1.1.4-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -3613,7 +3613,8 @@
               if (function_exists("processor_".$tag)) {
                 $processor=$tag;
               } else if ($pf=getProcessor($tag)) {
  -              include_once("plugin/processor/$pf.php");
  +              if (!function_exists("processor_".$pf))
  +                include_once("plugin/processor/$pf.php");
                 $processor=$pf;
               }
            } else if ($t and $line[$p+3] == ":") {
  
  
  


wkpark      2009/04/29 06:21:31

  Modified:    plugin/security nforge.php
  Log:
   * fixed replace processor method.
   * fixed nforge is_protected() method : use isAdmin() and do not use $admin_passwd;
  
  Revision  Changes    Path
  1.2       +17 -2     moniwiki/plugin/security/nforge.php
  
  Index: nforge.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/nforge.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- nforge.php	24 Apr 2009 14:25:02 -0000	1.1
  +++ nforge.php	28 Apr 2009 21:21:31 -0000	1.2
  @@ -4,7 +4,7 @@
   #
   # based on needtologin security plugin.
   #
  -# $Id: nforge.php,v 1.1 2009/04/24 14:25:02 wkpark Exp $
  +# $Id: nforge.php,v 1.2 2009/04/28 21:21:31 wkpark Exp $
   
   class Security_nforge extends Security {
     var $DB;
  @@ -25,7 +25,7 @@
     }
   
     function may_edit($action,&$options) {
  -    # $public_pages=array('WikiSandBox','WikiSandbox','GuestBook','SandBox');
  +    $public_pages=array('WikiSandBox');
       if (!$options['page']) return 0; # XXX
       if (in_array($options['page'],$public_pages)) return 1;
       if ($options['id']=='Anonymous') {
  @@ -70,6 +70,21 @@
       return 1;
     }
   
  +  function is_protected($action="read",&$options) {
  +    if ($this->DB->group->userIsAdmin())
  +        return 0;
  +
  +    # password protected POST actions
  +    $protected_actions=array("rcs","rcspurge","chmod","backup","restore","deletefile","deletepage");
  +    $notprotected_actions=array("userform");
  +    $action=strtolower($action);
  +
  +    if (in_array($action,$protected_actions)) return 1;
  +    if (in_array($action,$notprotected_actions)) return 0;
  +    if ($options['id']=='Anonymous') return 1;
  +
  +    return 0;
  +  }
   }
   
   ?>
  
  
  


wkpark      2009/04/30 08:15:10

  Modified:    .        wiki.php
  Log:
  support $upload_dir_url for $upload_dir != $upload_dir_url
  Info.php: hide IP address for registerd user optionally.
  nforge.php: use Permission class to check isDocWriter()
  
  Revision  Changes    Path
  1.472     +5 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.471
  retrieving revision 1.472
  diff -u -r1.471 -r1.472
  --- wiki.php	28 Apr 2009 21:21:31 -0000	1.471
  +++ wiki.php	29 Apr 2009 23:15:10 -0000	1.472
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.471 2009/04/28 21:21:31 wkpark Exp $
  +// $Id: wiki.php,v 1.472 2009/04/29 23:15:10 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.471 $',1,-1);
  +$_revision = substr('$Revision: 1.472 $',1,-1);
   $_release = '1.1.4-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -706,6 +706,9 @@
       $this->imgs_dir_url=$this->imgs_dir.'/';
       $this->imgs_dir_interwiki=$this->imgs_dir.'/';
   
  +    if (empty($this->upload_dir_url))
  +      $this->upload_dir_url= $this->upload_dir;
  +
       $doc_root = getenv("DOCUMENT_ROOT"); // for Unix
       $imgs_realdir= $doc_root.$this->imgs_dir;
       if (file_exists($imgs_realdir.'/interwiki/'.'moniwiki-16.png'))
  
  
  


wkpark      2009/04/30 08:15:11

  Modified:    plugin   Attachment.php EditToolbar.php Info.php Play.php
                        UploadedFiles.php
  Log:
  support $upload_dir_url for $upload_dir != $upload_dir_url
  Info.php: hide IP address for registerd user optionally.
  nforge.php: use Permission class to check isDocWriter()
  
  Revision  Changes    Path
  1.41      +8 -6      moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- Attachment.php	6 Jan 2009 17:54:37 -0000	1.40
  +++ Attachment.php	29 Apr 2009 23:15:10 -0000	1.41
  @@ -7,13 +7,13 @@
   // Name: Attachment
   // Description: Attachment Plugin
   // URL: MoniWiki:AttachmentPlugin
  -// Version: $Revision: 1.40 $
  +// Version: $Revision: 1.41 $
   // Depend: 1.1.3
   // License: GPL
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.40 2009/01/06 17:54:37 wkpark Exp $
  +// $Id: Attachment.php,v 1.41 2009/04/29 23:15:10 wkpark Exp $
   
   function macro_Attachment($formatter,$value,$options='') {
     global $DBInfo;
  @@ -290,10 +290,12 @@
           }
           $url=$formatter->link_url(_urlencode($pagename),"?action=$mydownload&amp;value=".$val);
         } else {
  -        if ($use_thumb)
  -          $url=$DBInfo->url_prefix.'/'.$dir.'/thumbnails/'._urlencode($_l_file);
  -        else
  -          $url=$DBInfo->url_prefix.'/'._urlencode($_l_upload_file);
  +        if ($use_thumb) {
  +          $url=$DBInfo->upload_dir_url.'/thumbnails/'._urlencode($_l_file);
  +        } else {
  +          $_l_upload_file=str_replace($DBInfo->upload_dir, $DBInfo->upload_dir_url,$_l_upload_file);
  +          $url=_urlencode($_l_upload_file);
  +        }
         }
   
         $img="<img src='$url' title='$alt' alt='$alt' style='border:0' $attr/>";
  
  
  
  1.12      +2 -2      moniwiki/plugin/EditToolbar.php
  
  Index: EditToolbar.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/EditToolbar.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- EditToolbar.php	30 Dec 2008 22:40:05 -0000	1.11
  +++ EditToolbar.php	29 Apr 2009 23:15:10 -0000	1.12
  @@ -7,7 +7,7 @@
   //
   // This feature is imported from the MediaWiki
   //
  -// $Id: EditToolbar.php,v 1.11 2008/12/30 22:40:05 wkpark Exp $
  +// $Id: EditToolbar.php,v 1.12 2009/04/29 23:15:10 wkpark Exp $
   
   function macro_EditToolbar($formatter,$value, $options=array()) {
       global $DBInfo;
  @@ -56,7 +56,7 @@
               "addInfobox(N_('Click a button to get an example text'),N_('Please enter the text you want to be formatted.\\\\n It will be shown in the infobox for copy and pasting.\\\\nExample:\\\\n\$1\\\\nwill become:\\\\n\$2'));\n",
       );
       $formatter->register_javascripts("wikibits.js");
  -    $fcss= 'imgs/plugin/EditToolbar/'.$iconset.'/toolbar.css';
  +    $fcss= getenv('DOCUMENT_ROOT') . '/'.$DBInfo->imgs_dir.'/plugin/EditToolbar/'.$iconset.'/toolbar.css';
       $css='';
       if (file_exists($fcss))
           $css="<style type='text/css'>
  
  
  
  1.20      +2 -2      moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Info.php,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- Info.php	3 Apr 2009 15:03:35 -0000	1.19
  +++ Info.php	29 Apr 2009 23:15:10 -0000	1.20
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Info plugin for the MoniWiki
   //
  -// $Id: Info.php,v 1.19 2009/04/03 15:03:35 wkpark Exp $
  +// $Id: Info.php,v 1.20 2009/04/29 23:15:10 wkpark Exp $
   
   function _parse_rlog($formatter,$log,$options=array()) {
     global $DBInfo;
  @@ -124,7 +124,7 @@
              else if (strpos($user,' ') !== false) {
                $ip=$formatter->link_repl($user);
                $users[$user]=$ip;
  -           } else if ($DBInfo->hasPage($user)) {
  +           } else if (empty($DBInfo->use_hostname) or $DBInfo->hasPage($user)) {
                $ip=$formatter->link_tag($user);
                $users[$user]=$ip;
              } else if (!$DBInfo->mask_hostname and $DBInfo->interwiki['Whois']) {
  
  
  
  1.9       +4 -3      moniwiki/plugin/Play.php
  
  Index: Play.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Play.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Play.php	6 Apr 2009 14:49:05 -0000	1.8
  +++ Play.php	29 Apr 2009 23:15:10 -0000	1.9
  @@ -8,12 +8,12 @@
   // Name: Play macro
   // Description: media Player Plugin
   // URL: MoniWikiDev:PlayMacro
  -// Version: $Revision: 1.8 $
  +// Version: $Revision: 1.9 $
   // License: GPL
   //
   // Usage: [[Play(http://blah.net/blah.mp3)]]
   //
  -// $Id: Play.php,v 1.8 2009/04/06 14:49:05 wkpark Exp $
  +// $Id: Play.php,v 1.9 2009/04/29 23:15:10 wkpark Exp $
   
   function macro_Play($formatter,$value) {
     global $DBInfo;
  @@ -60,7 +60,8 @@
           return $formatter->macro_repl('Attachment',$value);
         }
         $my_check=1; // check only first file.
  -      $url[]=qualifiedUrl($DBInfo->url_prefix."/"._urlencode($fname));
  +      $fname=str_replace($DBInfo->upload_dir, $DBInfo->upload_dir_url,$fname);
  +      $url[]=qualifiedUrl(_urlencode($fname));
       } else {
         $url[]=$media[$i];
       }
  
  
  
  1.33      +2 -2      moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- UploadedFiles.php	3 Apr 2009 15:07:29 -0000	1.32
  +++ UploadedFiles.php	29 Apr 2009 23:15:10 -0000	1.33
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadedFiles plugin for the MoniWiki
   //
  -// $Id: UploadedFiles.php,v 1.32 2009/04/03 15:07:29 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.33 2009/04/29 23:15:10 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     if (!empty($options['q'])) {
  @@ -352,7 +352,7 @@
      else if ($p > 1)
         $plink=$formatter->link_tag('',"?action=uploadedfiles$extra",_("&laquo; First page"),$attr);
   
  -   if (!$prefix) $prefix=$DBInfo->url_prefix."/".$dir."/";
  +   if (!$prefix) $prefix=str_replace($DBInfo->upload_dir, $DBInfo->upload_dir_url,$dir).'/';
   
      $unit=array('Bytes','KB','MB','GB','TB');
   
  
  
  


wkpark      2009/04/30 08:15:11

  Modified:    plugin/security nforge.php
  Log:
  support $upload_dir_url for $upload_dir != $upload_dir_url
  Info.php: hide IP address for registerd user optionally.
  nforge.php: use Permission class to check isDocWriter()
  
  Revision  Changes    Path
  1.3       +10 -4     moniwiki/plugin/security/nforge.php
  
  Index: nforge.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/nforge.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- nforge.php	28 Apr 2009 21:21:31 -0000	1.2
  +++ nforge.php	29 Apr 2009 23:15:11 -0000	1.3
  @@ -4,7 +4,7 @@
   #
   # based on needtologin security plugin.
   #
  -# $Id: nforge.php,v 1.2 2009/04/28 21:21:31 wkpark Exp $
  +# $Id: nforge.php,v 1.3 2009/04/29 23:15:11 wkpark Exp $
   
   class Security_nforge extends Security {
     var $DB;
  @@ -71,11 +71,16 @@
     }
   
     function is_protected($action="read",&$options) {
  -    if ($this->DB->group->userIsAdmin())
  -        return 0;
  +    $perm =& $this->DB->group->getPermission( session_get_user() );
  +    // check if the user is docman's admin
  +    if (!$perm || $perm->isError() || !$perm->isDocEditor() || !$perm->isAdmin()) {
  +      return 1;
  +    } else {
  +      return 0;
  +    }
   
       # password protected POST actions
  -    $protected_actions=array("rcs","rcspurge","chmod","backup","restore","deletefile","deletepage");
  +    $protected_actions=array("rcs","rename", "revert", "rcspurge","chmod","backup","restore","deletefile","deletepage");
       $notprotected_actions=array("userform");
       $action=strtolower($action);
   
  @@ -85,6 +90,7 @@
   
       return 0;
     }
  +
   }
   
   ?>
  
  
  


wkpark      2009/05/02 01:47:23

  Modified:    .        wiki.php wikilib.php
  Log:
   * support nick. ($use_nick=1 to show nickname.)
   * $user_dir option added in case of $data_dir/user != $user_dir.
  
  Revision  Changes    Path
  1.473     +4 -6      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.472
  retrieving revision 1.473
  diff -u -r1.472 -r1.473
  --- wiki.php	29 Apr 2009 23:15:10 -0000	1.472
  +++ wiki.php	1 May 2009 16:47:23 -0000	1.473
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.472 2009/04/29 23:15:10 wkpark Exp $
  +// $Id: wiki.php,v 1.473 2009/05/01 16:47:23 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.472 $',1,-1);
  +$_revision = substr('$Revision: 1.473 $',1,-1);
   $_release = '1.1.4-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -609,6 +609,7 @@
   
       $this->text_dir= $this->data_dir.'/text';
       $this->cache_dir= $this->data_dir.'/cache';
  +    $this->user_dir= $this->data_dir.'/user';
       $this->vartmp_dir= '/var/tmp';
       $this->intermap= $this->data_dir.'/intermap.txt';
       $this->interwikirule='';
  @@ -1004,10 +1005,7 @@
       $user=&$this->user;
     
       $myid=$user->id;
  -    if ($user->info['nick']) {
  -      $myid.=' '.$user->info['nick'];
  -      $options['nick']=$user->info['nick'];
  -    }
  +
       $comment=strtr($comment,"\t"," ");
       $fp_editlog = fopen($this->editlog_name, 'a+');
       $time= time();
  
  
  
  1.273     +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.272
  retrieving revision 1.273
  diff -u -r1.272 -r1.273
  --- wikilib.php	18 Apr 2009 06:28:29 -0000	1.272
  +++ wikilib.php	1 May 2009 16:47:23 -0000	1.273
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.272 2009/04/18 06:28:29 wkpark Exp $
  +// $Id: wikilib.php,v 1.273 2009/05/01 16:47:23 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -343,7 +343,7 @@
   class UserDB {
     var $users=array();
     function UserDB($WikiDB) {
  -    $this->user_dir=$WikiDB->data_dir.'/user';
  +    $this->user_dir=$WikiDB->user_dir;
       $this->strict = $WikiDB->login_strict;
     }
   
  
  
  


wkpark      2009/05/02 01:47:23

  Modified:    plugin   Info.php RecentChanges.php
  Log:
   * support nick. ($use_nick=1 to show nickname.)
   * $user_dir option added in case of $data_dir/user != $user_dir.
  
  Revision  Changes    Path
  1.21      +12 -3     moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Info.php,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- Info.php	29 Apr 2009 23:15:10 -0000	1.20
  +++ Info.php	1 May 2009 16:47:23 -0000	1.21
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Info plugin for the MoniWiki
   //
  -// $Id: Info.php,v 1.20 2009/04/29 23:15:10 wkpark Exp $
  +// $Id: Info.php,v 1.21 2009/05/01 16:47:23 wkpark Exp $
   
   function _parse_rlog($formatter,$log,$options=array()) {
     global $DBInfo;
  @@ -118,10 +118,19 @@
         case 3:
            $dummy=explode(';;',$line,3);
            $ip=$dummy[0];
  -         $user=$dummy[1];
  +         $user=trim($dummy[1]);
  +         if (!empty($DBInfo->use_nick) and ($p = strpos($user,' ')) !== false) // XXX
  +           $user = substr($user, 0, $p);
  +
            if ($user and $user!='Anonymous') {
              if (in_array($user,$users)) $ip=$users[$user];
  -           else if (strpos($user,' ') !== false) {
  +           else if (!empty($DBInfo->use_nick)) {
  +             $u = $DBInfo->udb->getUser($user);
  +             if (!empty($u->info['nick'])) {
  +               $ip=$formatter->link_repl('[wiki:'.$user.' '.$u->info['nick'].']');
  +             }
  +             $users[$user]=$ip;
  +           } else if (strpos($user,' ') !== false) {
                $ip=$formatter->link_repl($user);
                $users[$user]=$ip;
              } else if (empty($DBInfo->use_hostname) or $DBInfo->hasPage($user)) {
  
  
  
  1.30      +20 -3     moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- RecentChanges.php	1 Jan 2009 05:10:23 -0000	1.29
  +++ RecentChanges.php	1 May 2009 16:47:23 -0000	1.30
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.29 2009/01/01 05:10:23 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.30 2009/05/01 16:47:23 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     $options['trail']='';
  @@ -29,6 +29,7 @@
     '$out.= "$icon&nbsp;&nbsp;$title$updated $date . . . . $user $count $extra<br />\n";';
     $template_cat="";
     $use_day=1;
  +  $users = array();
   
     if ($options['target']) $target="target='$options[target]'";
   
  @@ -271,12 +272,28 @@
         if ($showhost && $user == 'Anonymous')
           $user= $addr;
         else {
  -        if (strpos($user,' ')!==false) $user= $formatter->link_repl($user);
  -        else if ($DBInfo->hasPage($user)) {
  +        $ouser= $user;
  +        if (isset($users[$ouser])) $user = $users[$ouser];
  +        else if (!empty($DBInfo->use_nick)) {
  +          $uid = $user;
  +          if (($p = strpos($uid,' '))!==false)
  +            $uid= substr($uid, 0, $p);
  +          $u = $DBInfo->udb->getUser($uid);
  +          if (!empty($u->info['nick'])) {
  +            $user = $formatter->link_repl('[wiki:'.$uid.' '.$u->info['nick'].']');
  +          }
  +          $users[$ouser] = $user;
  +        } else if (strpos($user,' ')!==false) {
  +          $user= $formatter->link_repl($user);
  +          $users[$ouser] = $user;
  +        } else if ($DBInfo->hasPage($user)) {
             $user= $formatter->link_tag(_rawurlencode($user),"",$user);
  +          $users[$ouser] = $user;
           } else
             $user= $user;
         }
  +    } else {
  +      $user = '&nbsp;';
       }
       $count=""; $extra="";
       if ($editcount[$page_key] > 1)
  
  
  


wkpark      2009/05/11 20:20:31

  Modified:    lib/Gettext MO.php PO.php TGettext.php
  Added:       lib/Gettext package.xml LICENSE
  Log:
  update Gettext lib from PEAR Repo.
  
  Revision  Changes    Path
  1.4       +27 -53    moniwiki/lib/Gettext/MO.php
  
  Index: MO.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/Gettext/MO.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- MO.php	2 Dec 2008 01:04:31 -0000	1.3
  +++ MO.php	11 May 2009 11:20:31 -0000	1.4
  @@ -1,44 +1,23 @@
   <?php
  +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
  +
   /**
  - * TGettext_MO class file.
  - *
  - * This program is free software; you can redistribute it and/or modify
  - * it under the terms of the BSD License.
  - *
  - * Copyright(c) 2004 by Qiang Xue. All rights reserved.
  - *
  - * To contact the author write to {@link mailto:qiang.xue@gmail.com Qiang Xue}
  - * The latest version of PRADO can be obtained from:
  - * {@link http://prado.sourceforge.net/}
  + * File::Gettext
  + * 
  + * PHP versions 4 and 5
    *
  - * @author Wei Zhuo <weizhuo[at]gmail[dot]com>
  - * @version $Revision: 1.3 $  $Date: 2008/12/02 01:04:31 $
  - * @package System.I18N.core
  + * @category   FileFormats
  + * @package    File_Gettext
  + * @author     Michael Wallner <mike@php.net>
  + * @copyright  2004-2005 Michael Wallner
  + * @license    BSD, revised
  + * @version    CVS: $Id: MO.php,v 1.4 2009/05/11 11:20:31 wkpark Exp $
  + * @link       http://pear.php.net/package/File_Gettext
    */
   
  - 
  -// +----------------------------------------------------------------------+
  -// | PEAR :: File :: Gettext :: MO                                        |
  -// +----------------------------------------------------------------------+
  -// | This source file is subject to version 3.0 of the PHP license,       |
  -// | that is available at http://www.php.net/license/3_0.txt              |
  -// | If you did not receive a copy of the PHP license and are unable      |
  -// | to obtain it through the world-wide-web, please send a note to       |
  -// | license@php.net so we can mail you a copy immediately.               |
  -// +----------------------------------------------------------------------+
  -// | Copyright (c) 2004 Michael Wallner <mike@iworks.at>                  |
  -// +----------------------------------------------------------------------+
  -//
  -// $Id: MO.php,v 1.3 2008/12/02 01:04:31 wkpark Exp $
  -// orig Id: MO.php,v 1.3 2005/08/27 03:21:12 weizhuo Exp
  -
   /**
  - * File::Gettext::MO
  - * 
  - * @author      Michael Wallner <mike@php.net>
  - * @license     PHP License
  + * Requires File_Gettext
    */
  -
   require_once dirname(__FILE__).'/TGettext.php';
   
   /** 
  @@ -47,11 +26,10 @@
    * GNU MO file reader and writer.
    *
    * @author      Michael Wallner <mike@php.net>
  - * @version     $Revision: 1.3 $
  + * @version     $Revision: 1.4 $
    * @access      public
  - * @package System.I18N.core 
    */
  -class TGettext_MO extends TGettext
  +class File_Gettext_MO extends File_Gettext
   {
       /**
        * file handle
  @@ -78,7 +56,7 @@
        * @return  object      File_Gettext_MO
        * @param   string      $file   path to GNU MO file
        */
  -    function TGettext_MO($file = '')
  +    function File_Gettext_MO($file = '')
       {
           $this->file = $file;
       }
  @@ -107,9 +85,7 @@
        */
       function _readInt($bigendian = false)
       {
  -		//unpack returns a reference????
  -		$unpacked = unpack($bigendian ? 'N' : 'V', $this->_read(4));
  -        return array_shift($unpacked);
  +        return current($array = unpack($bigendian ? 'N' : 'V', $this->_read(4)));
       }
       
       /**
  @@ -171,25 +147,24 @@
        */
       function load($file = null)
       {
  +        $this->strings = array();
  +        
           if (!isset($file)) {
               $file = $this->file;
           }
           
           // open MO file
           if (!is_resource($this->_handle = @fopen($file, 'rb'))) {
  -            return false;
  +            return parent::raiseError($php_errormsg . ' ' . $file);
           }
           // lock MO file shared
           if (!@flock($this->_handle, LOCK_SH)) {
               @fclose($this->_handle);
  -            return false;
  +            return parent::raiseError($php_errormsg . ' ' . $file);
           }
           
           // read (part of) magic number from MO file header and define endianess
  -
  -		//unpack returns a reference????
  -		$unpacked = unpack('c', $this->_read(4));
  -        switch ($magic = array_shift($unpacked))
  +        switch ($magic = current($array = unpack('c', $this->_read(4))))
           {
               case -34:
                   $be = false;
  @@ -200,12 +175,12 @@
               break;
               
               default:
  -                return false;
  +                return parent::raiseError("No GNU mo file: $file (magic: $magic)");
           }
   
           // check file format revision - we currently only support 0
           if (0 !== ($_rev = $this->_readInt($be))) {
  -            return false;
  +            return parent::raiseError('Invalid file format revision: ' . $_rev);
           }
          
           // count of strings in this file
  @@ -273,17 +248,16 @@
           
           // open MO file
           if (!is_resource($this->_handle = @fopen($file, 'wb'))) {
  -            return false;
  +            return parent::raiseError($php_errormsg . ' ' . $file);
           }
           // lock MO file exclusively
           if (!@flock($this->_handle, LOCK_EX)) {
               @fclose($this->_handle);
  -            return false;
  +            return parent::raiseError($php_errormsg . ' ' . $file);
           }
  -
           // delete untranslated strs
           foreach ($this->strings as $k=>$v) {
  -            if ($v=="") unset($this->strings[$k]);
  +            if ($v=='') unset($this->strings[$k]);
           }
           
           // write magic number
  
  
  
  1.3       +29 -53    moniwiki/lib/Gettext/PO.php
  
  Index: PO.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/Gettext/PO.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- PO.php	18 Jan 2006 16:10:55 -0000	1.2
  +++ PO.php	11 May 2009 11:20:31 -0000	1.3
  @@ -1,43 +1,23 @@
   <?php
  +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
  +
   /**
  - * TGettext_PO class file.
  - *
  - * This program is free software; you can redistribute it and/or modify
  - * it under the terms of the BSD License.
  - *
  - * Copyright(c) 2004 by Qiang Xue. All rights reserved.
  - *
  - * To contact the author write to {@link mailto:qiang.xue@gmail.com Qiang Xue}
  - * The latest version of PRADO can be obtained from:
  - * {@link http://prado.sourceforge.net/}
  + * File::Gettext
  + * 
  + * PHP versions 4 and 5
    *
  - * @author Wei Zhuo <weizhuo[at]gmail[dot]com>
  - * @version $Revision: 1.2 $  $Date: 2006/01/18 16:10:55 $
  - * @package System.I18N.core
  + * @category   FileFormats
  + * @package    File_Gettext
  + * @author     Michael Wallner <mike@php.net>
  + * @copyright  2004-2005 Michael Wallner
  + * @license    BSD, revised
  + * @version    CVS: $Id: PO.php,v 1.3 2009/05/11 11:20:31 wkpark Exp $
  + * @link       http://pear.php.net/package/File_Gettext
    */
   
  -// +----------------------------------------------------------------------+
  -// | PEAR :: File :: Gettext :: PO                                        |
  -// +----------------------------------------------------------------------+
  -// | This source file is subject to version 3.0 of the PHP license,       |
  -// | that is available at http://www.php.net/license/3_0.txt              |
  -// | If you did not receive a copy of the PHP license and are unable      |
  -// | to obtain it through the world-wide-web, please send a note to       |
  -// | license@php.net so we can mail you a copy immediately.               |
  -// +----------------------------------------------------------------------+
  -// | Copyright (c) 2004 Michael Wallner <mike@iworks.at>                  |
  -// +----------------------------------------------------------------------+
  -//
  -// $Id: PO.php,v 1.2 2006/01/18 16:10:55 wkpark Exp $
  -// orig Id: PO.php,v 1.2 2005/01/05 03:15:14 weizhuo Exp
  -
   /**
  - * File::Gettext::PO
  - * 
  - * @author      Michael Wallner <mike@php.net>
  - * @license     PHP License
  + * Requires File_Gettext
    */
  - 
   require_once dirname(__FILE__).'/TGettext.php';
   
   /** 
  @@ -46,11 +26,10 @@
    * GNU PO file reader and writer.
    * 
    * @author      Michael Wallner <mike@php.net>
  - * @version     $Revision: 1.2 $
  + * @version     $Revision: 1.3 $
    * @access      public
  - * @package System.I18N.core 
    */
  -class TGettext_PO extends TGettext
  +class File_Gettext_PO extends File_Gettext
   {
       /**
        * Constructor
  @@ -59,7 +38,7 @@
        * @return  object      File_Gettext_PO
        * @param   string      path to GNU PO file
        */
  -    function TGettext_PO($file = '')
  +    function File_Gettext_PO($file = '')
       {
           $this->file = $file;
       }
  @@ -71,21 +50,19 @@
        * @return  mixed   Returns true on success or PEAR_Error on failure.
        * @param   string  $file
        */
  -    function load($file = null,$isfile=1)
  +    function load($file = null)
       {
  +        $this->strings = array();
  +        
           if (!isset($file)) {
               $file = $this->file;
           }
           
           // load file
  -	if ($isfile) {
  -            if (!$contents = @file($file)) {
  -                return false;
  -            }
  -            $contents = implode('', $contents);
  -        } else {
  -            $contents = &$file; // just read po contents
  +        if (!$contents = @file($file)) {
  +            return parent::raiseError($php_errormsg . ' ' . $file);
           }
  +        $contents = implode('', $contents);
           
           // match all msgid/msgstr entries
           $matched = preg_match_all(
  @@ -96,8 +73,7 @@
           unset($contents);
           
           if (!$matched) {
  -            print "fail to match msgid/msgstr\n";
  -            return false;
  +            return parent::raiseError('No msgid/msgstr entries found');
           }
           
           // get all msgids and msgtrs
  @@ -130,17 +106,17 @@
           if (!isset($file)) {
               $file = $this->file;
           }
  -
  +        
           // open PO file
           if (!is_resource($fh = @fopen($file, 'w'))) {
  -            return false;
  +            return parent::raiseError($php_errormsg . ' ' . $file);
           }
  -
           // lock PO file exclusively
  -        if (!flock($fh, LOCK_EX)) {
  -            fclose($fh);
  -            return false;
  +        if (!@flock($fh, LOCK_EX)) {
  +            @fclose($fh);
  +            return parent::raiseError($php_errmsg . ' ' . $file);
           }
  +        
           // write meta info
           if (count($this->meta)) {
               $meta = 'msgid ""' . "\nmsgstr " . '""' . "\n";
  
  
  
  1.3       +45 -53    moniwiki/lib/Gettext/TGettext.php
  
  Index: TGettext.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/Gettext/TGettext.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TGettext.php	18 Jan 2006 16:10:55 -0000	1.2
  +++ TGettext.php	11 May 2009 11:20:31 -0000	1.3
  @@ -1,41 +1,18 @@
   <?php
  -/**
  - * TGettext class file.
  - *
  - * This program is free software; you can redistribute it and/or modify
  - * it under the terms of the BSD License.
  - *
  - * Copyright(c) 2004 by Qiang Xue. All rights reserved.
  - *
  - * To contact the author write to {@link mailto:qiang.xue@gmail.com Qiang Xue}
  - * The latest version of PRADO can be obtained from:
  - * {@link http://prado.sourceforge.net/}
  - *
  - * @author Wei Zhuo <weizhuo[at]gmail[dot]com>
  - * @version $Revision: 1.2 $  $Date: 2006/01/18 16:10:55 $
  - * @package System.I18N.core
  - */
  -
  -// +----------------------------------------------------------------------+
  -// | PEAR :: File :: Gettext                                              |
  -// +----------------------------------------------------------------------+
  -// | This source file is subject to version 3.0 of the PHP license,       |
  -// | that is available at http://www.php.net/license/3_0.txt              |
  -// | If you did not receive a copy of the PHP license and are unable      |
  -// | to obtain it through the world-wide-web, please send a note to       |
  -// | license@php.net so we can mail you a copy immediately.               |
  -// +----------------------------------------------------------------------+
  -// | Copyright (c) 2004 Michael Wallner <mike@iworks.at>                  |
  -// +----------------------------------------------------------------------+
  -//
  -// $Id: TGettext.php,v 1.2 2006/01/18 16:10:55 wkpark Exp $
  -// orig Id: TGettext.php,v 1.4 2005/01/09 23:36:23 qiangxue Exp
  +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
   
   /**
    * File::Gettext
    * 
  - * @author      Michael Wallner <mike@php.net>
  - * @license     PHP License
  + * PHP versions 4 and 5
  + *
  + * @category   FileFormats
  + * @package    File_Gettext
  + * @author     Michael Wallner <mike@php.net>
  + * @copyright  2004-2005 Michael Wallner
  + * @license    BSD, revised
  + * @version    CVS: $Id: TGettext.php,v 1.3 2009/05/11 11:20:31 wkpark Exp $
  + * @link       http://pear.php.net/package/File_Gettext
    */
   
   /**
  @@ -53,11 +30,10 @@
    * #################################################################
    *
    * @author      Michael Wallner <mike@php.net>
  - * @version     $Revision: 1.2 $
  + * @version     $Revision: 1.3 $
    * @access      public
  - * @package System.I18N.core 
    */
  -class TGettext
  +class File_Gettext
   {
       /**
        * strings
  @@ -98,17 +74,15 @@
        * @param   string  $format MO or PO
        * @param   string  $file   path to GNU gettext file
        */
  -    function factory($format, $file = '')
  +    function &factory($format, $file = '')
       {
           $format = strToUpper($format);
  -        $filename = dirname(__FILE__).'/'.$format.'.php';
  -        if(is_file($filename) == false) return false;
  -#        	throw new Exception ("Class file $file not found");
  -        	
  -        include_once $filename;
  -        $class = 'TGettext_' . $format;
  -
  -        return new $class($file);
  +        if (!@include_once dirname(__FILE__) . $format . '.php') {
  +            return File_Gettext::raiseError($php_errormsg);
  +        }
  +        $class = 'File_Gettext_' . $format;
  +        $obref = &new $class($file);
  +        return $obref;
       }
   
       /**
  @@ -126,18 +100,17 @@
       function poFile2moFile($pofile, $mofile)
       {
           if (!is_file($pofile)) {
  -            return false;
  -            #throw new Exception("File $pofile doesn't exist.");
  +            return File_Gettext::raiseError("File $pofile doesn't exist.");
           }
           
           include_once dirname(__FILE__).'/PO.php';
           
  -        $PO = new TGettext_PO($pofile);
  +        $PO = &new File_Gettext_PO($pofile);
           if (true !== ($e = $PO->load())) {
               return $e;
           }
           
  -        $MO = $PO->toMO();
  +        $MO = &$PO->toMO();
           if (true !== ($e = $MO->save($mofile))) {
               return $e;
           }
  @@ -263,10 +236,10 @@
        * @access  protected
        * @return  object  File_Gettext_MO
        */
  -    function toMO()
  +    function &toMO()
       {
           include_once dirname(__FILE__).'/MO.php';
  -        $MO = new TGettext_MO;
  +        $MO = &new File_Gettext_MO;
           $MO->fromArray($this->toArray());
           return $MO;
       }
  @@ -277,12 +250,31 @@
        * @access  protected
        * @return  object      File_Gettext_PO
        */
  -    function toPO()
  +    function &toPO()
       {
           include_once dirname(__FILE__).'/PO.php';
  -        $PO = new TGettext_PO;
  +        $PO = &new File_Gettext_PO;
           $PO->fromArray($this->toArray());
           return $PO;
       }
  +    
  +    /**
  +     * Raise PEAR error
  +     *
  +     * @static
  +     * @access  protected
  +     * @return  object
  +     * @param   string  $error
  +     * @param   int     $code
  +     */
  +    function raiseError($error = null, $code = null)
  +    {
  +/*
  +        include_once 'PEAR.php';
  +        return PEAR::raiseError($error, $code);
  +*/
  +        echo $error,'::', $code;
  +        return exit($code);
  +    }
   }
   ?>
  
  
  
  1.1                  moniwiki/lib/Gettext/package.xml
  
  Index: package.xml
  ===================================================================
  <?xml version="1.0" encoding="UTF-8"?>
  <package packagerversion="1.7.0RC1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0  http://pear.php.net/dtd/tasks-1.0.xsd  http://pear.php.net/dtd/package-2.0  http://pear.php.net/dtd/package-2.0.xsd">
   <name>File_Gettext</name>
   <channel>pear.php.net</channel>
   <summary>GNU Gettext file parser</summary>
   <description>Reader and writer for GNU PO and MO files.</description>
   <lead>
    <name>Michael Wallner</name>
    <user>mike</user>
    <email>mike@php.net</email>
    <active>yes</active>
   </lead>
   <date>2007-12-02</date>
   <time>16:09:47</time>
   <version>
    <release>0.4.1</release>
    <api>0.4.1</api>
   </version>
   <stability>
    <release>beta</release>
    <api>beta</api>
   </stability>
   <license uri="http://www.opensource.org/licenses/bsd-license.php">BSD</license>
   <notes>* Fixed Bug #6426 - load() should empty $this-&gt;strings
  QA release:
  * Fix bug #12570: license in package.xml (was listed as PHP, but is BSD)</notes>
   <contents>
    <dir name="/">
     <file baseinstalldir="File" md5sum="cd350895149d546cb6747e9283b3aeaa" name="Gettext/MO.php" role="php" />
     <file baseinstalldir="File" md5sum="08e6b38c411b693e7f603400284db88f" name="Gettext/PO.php" role="php" />
     <file baseinstalldir="File" md5sum="df46668ac39a0c67e4c9ee028e751700" name="Gettext.php" role="php" />
     <file baseinstalldir="File" md5sum="3a57c260ac0ddc41126ff52a46b9c807" name="LICENSE" role="doc" />
    </dir>
   </contents>
   <dependencies>
    <required>
     <php>
      <min>4.1.0</min>
     </php>
     <pearinstaller>
      <min>1.4.0b1</min>
     </pearinstaller>
     <package>
      <name>PEAR</name>
      <channel>pear.php.net</channel>
     </package>
     <extension>
      <name>pcre</name>
     </extension>
    </required>
   </dependencies>
   <phprelease />
   <changelog>
    <release>
     <version>
      <release>0.4.1</release>
      <api>0.4.1</api>
     </version>
     <stability>
      <release>beta</release>
      <api>beta</api>
     </stability>
     <date>2007-12-02</date>
     <license uri="http://www.opensource.org/licenses/bsd-license.php">BSD</license>
     <notes>* Fixed Bug #6426 - load() should empty $this-&gt;strings
  QA release:
  * Fix bug #12570: license in package.xml (was listed as PHP, but is BSD)
  * Convert package.xml to version 2</notes>
    </release>
    <release>
     <version>
      <release>0.4.0</release>
      <api>0.4.0</api>
     </version>
     <stability>
      <release>beta</release>
      <api>beta</api>
     </stability>
     <date>2005-11-14</date>
     <license uri="http://www.opensource.org/licenses/bsd-license.php">BSD</license>
     <notes>* Fixed bug #5712 - only variables can be passed by reference
  * Changed license to BSD</notes>
    </release>
    <release>
     <version>
      <release>0.3.4</release>
      <api>0.3.4</api>
     </version>
     <stability>
      <release>beta</release>
      <api>beta</api>
     </stability>
     <date>2005-07-18</date>
     <license uri="http://www.php.net/license/3_01.txt">PHP</license>
     <notes>* Fixed PHP 4.4 compatibility</notes>
    </release>
    <release>
     <version>
      <release>0.3.3</release>
      <api>0.3.3</api>
     </version>
     <stability>
      <release>beta</release>
      <api>beta</api>
     </stability>
     <date>2004-12-29</date>
     <license uri="http://www.php.net/license/3_01.txt">PHP</license>
     <notes>* Fixed Bug #3044 (double quotes in PO file strings not properly un/escaped)</notes>
    </release>
    <release>
     <version>
      <release>0.3.2</release>
      <api>0.3.2</api>
     </version>
     <stability>
      <release>beta</release>
      <api>beta</api>
     </stability>
     <date>2004-12-06</date>
     <license uri="http://www.php.net/license/3_01.txt">PHP</license>
     <notes>* Fixed handling of magic number (corrupt MO files)</notes>
    </release>
    <release>
     <version>
      <release>0.3.1</release>
      <api>0.3.1</api>
     </version>
     <stability>
      <release>beta</release>
      <api>beta</api>
     </stability>
     <date>2004-12-06</date>
     <license uri="http://www.php.net/license/3_01.txt">PHP</license>
     <notes>* Fixed handling of magic number (corrupt MO files with PHP5)</notes>
    </release>
    <release>
     <version>
      <release>0.3.0</release>
      <api>0.3.0</api>
     </version>
     <stability>
      <release>beta</release>
      <api>beta</api>
     </stability>
     <date>2004-04-29</date>
     <license uri="http://www.php.net/license/3_01.txt">PHP</license>
     <notes>* Moved package state to BETA
  * Do not include PEAR.php by default
  * Added File_Gettext::raiseError() which includes PEAR.php</notes>
    </release>
    <release>
     <version>
      <release>0.2.0</release>
      <api>0.2.0</api>
     </version>
     <stability>
      <release>alpha</release>
      <api>alpha</api>
     </stability>
     <date>2004-03-30</date>
     <license uri="http://www.php.net/license/3_01.txt">PHP</license>
     <notes>* Initial PEAR release</notes>
    </release>
   </changelog>
  </package>
  
  
  
  1.1                  moniwiki/lib/Gettext/LICENSE
  
  Index: LICENSE
  ===================================================================
  Copyright (c) 2004-2005, Michael Wallner <mike@iworks.at>.
  All rights reserved.
  
  Redistribution and use in source and binary forms, with or without 
  modification, are permitted provided that the following conditions are met:
  
      * Redistributions of source code must retain the above copyright notice, 
        this list of conditions and the following disclaimer.
      * Redistributions in binary form must reproduce the above copyright 
        notice, this list of conditions and the following disclaimer in the 
        documentation and/or other materials provided with the distribution.
  
  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE 
  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  
  
  


wkpark      2009/05/23 21:54:16

  Modified:    plugin/user nforge.php
  Log:
  for nforge 1.0.1
  
  Revision  Changes    Path
  1.4       +10 -2     moniwiki/plugin/user/nforge.php
  
  Index: nforge.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/user/nforge.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- nforge.php	18 Apr 2009 08:38:58 -0000	1.3
  +++ nforge.php	23 May 2009 12:54:16 -0000	1.4
  @@ -9,12 +9,12 @@
   // Name: nFORGE Unix based User plugin
   // Description: nFORGE Unix user plugin
   // URL: MoniWiki:NForgeUserPlugin
  -// Version: $Revision: 1.3 $
  +// Version: $Revision: 1.4 $
   // License: GPL
   //
   // Usage: set $user_class = 'nforge'; in the config.php
   //
  -// $Id: nforge.php,v 1.3 2009/04/18 08:38:58 wkpark Exp $
  +// $Id: nforge.php,v 1.4 2009/05/23 12:54:16 wkpark Exp $
   
   class User_nforge extends WikiUser {
       function User_nforge($id = '') {
  @@ -24,9 +24,17 @@
           } else {
               $u =& user_get_object(user_getid());
               if ($u) {
  +                global $DBInfo;
                   $id = $u->getUnixName();
               }
               $this->setID($id);
  +            $udb=new UserDB($DBInfo);
  +            $tmp = $udb->getUser($id);
  +            if (empty($tmp->info['nick']) or $tmp->info['nick']!=$u->data_array['realname']) {
  +                // register user
  +                $tmp->info['nick']=$u->data_array['realname'];
  +                $udb->saveUser($tmp);
  +            }
           }
   
           $this->css=isset($_COOKIE['MONI_CSS']) ? $_COOKIE['MONI_CSS']:'';
  
  
  


wkpark      2009/05/23 21:54:52

  Modified:    plugin   referer.php
  Log:
  fixed call by reference error
  
  Revision  Changes    Path
  1.6       +2 -2      moniwiki/plugin/referer.php
  
  Index: referer.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/referer.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- referer.php	27 Dec 2008 10:22:38 -0000	1.5
  +++ referer.php	23 May 2009 12:54:52 -0000	1.6
  @@ -8,14 +8,14 @@
   // Name: a referer plugin
   // Description: show referer plugin
   // URL: MoniWiki:RefererPlugin
  -// Version: $Revision: 1.5 $
  +// Version: $Revision: 1.6 $
   // License: GPL
   //
   // Usage: [[Referer]]
   
   function do_referer($formatter, $options)
   {
  -    $out= macro_referer($formatter,$options['value'],&$options);
  +    $out= macro_referer($formatter,$options['value'],$options);
   
       return $out;
   }
  
  
  


wkpark      2009/05/23 21:56:48

  Modified:    plugin   msgtrans.php
  Log:
  adapt new Gettext engine
  
  Revision  Changes    Path
  1.8       +4 -4      moniwiki/plugin/msgtrans.php
  
  Index: msgtrans.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/msgtrans.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- msgtrans.php	10 Dec 2008 09:59:49 -0000	1.7
  +++ msgtrans.php	23 May 2009 12:56:48 -0000	1.8
  @@ -8,12 +8,12 @@
   // Name: Message Translation plugin
   // Description: make a Translation *.mo from simple message files.
   // URL: MoniWiki:DynamicMessageTranslation
  -// Version: $Revision: 1.7 $
  +// Version: $Revision: 1.8 $
   // License: GPL
   //
   // Usage: [[Test]]
   //
  -// $Id: msgtrans.php,v 1.7 2008/12/10 09:59:49 wkpark Exp $
  +// $Id: msgtrans.php,v 1.8 2009/05/23 12:56:48 wkpark Exp $
   
   function macro_MsgTrans($formatter,$value,$param=array()) {
       global $DBInfo;
  @@ -71,7 +71,7 @@
               $pofile = 'locale/po/'.$mylang.'.po';
               if (file_exists($pofile)) {
                   include_once 'lib/Gettext/PO.php';
  -                $myPO = new TGettext_PO;
  +                $myPO = new File_Gettext_PO;
                   if ( ($e = $myPO->load($pofile)) == true) {
                       $myMO = $myPO->toMO();
                       preg_match('/charset=(.*)$/',$myMO->meta['Content-Type'],$cs);
  @@ -91,7 +91,7 @@
           } else {
               # load *.mo file
               include_once 'lib/Gettext/MO.php';
  -            $myMO = new TGettext_MO;
  +            $myMO = new File_Gettext_MO;
               $e = $myMO->load($mofile);
           }
   
  
  
  


wkpark      2009/05/25 15:15:09

  Modified:    .        upgrade.sh
  Log:
  sort checksum
  use $PACKAGE name
  
  Revision  Changes    Path
  1.8       +13 -9     moniwiki/upgrade.sh
  
  Index: upgrade.sh
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/upgrade.sh,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- upgrade.sh	20 Dec 2008 14:24:48 -0000	1.7
  +++ upgrade.sh	25 May 2009 06:15:09 -0000	1.8
  @@ -1,9 +1,12 @@
   #!/bin/sh
  -# $Id: upgrade.sh,v 1.7 2008/12/20 14:24:48 wkpark Exp $
  +# $Id: upgrade.sh,v 1.8 2009/05/25 06:15:09 wkpark Exp $
  +
  +CHECKSUM=
  +PACKAGE=moniwiki
   
   if [ -z "$1" ]; then
   	cat <<HELP
  -Usage: $0 moniwiki-<ver>.tgz
  +Usage: $0 $PACKAGE-<ver>.tgz
   HELP
   	exit 0
   fi
  @@ -15,10 +18,12 @@
   NORMAL="echo -en \\033[0;39m"
   MAGENTA="echo -en \\033[1;35m"
   
  +NAME="MoniWiki"
  +
   $SUCCESS
   echo
   echo "+-------------------------------+"
  -echo "|    MoniWiki upgrade script    |"
  +echo "|    $NAME upgrade script    |"
   echo "+-------------------------------+"
   echo "| This script compare all files |"
   echo "|  between current and new.     |"
  @@ -41,9 +46,6 @@
   $NORMAL
   read
   
  -CHECKSUM=
  -PACKAGE=moniwiki
  -
   for arg; do
   
           case $# in
  @@ -75,7 +77,8 @@
   $MESSAGE
   
   echo "*** Check new upgrade.sh script ***"
  -DIFF=$(diff $0 $TMP/$PACKAGE/upgrade.sh)
  +DIFF=
  +[ -f $TMP/$PACKAGE/upgrade.sh ] && DIFF=$(diff $0 $TMP/$PACKAGE/upgrade.sh)
   if [ ! -z "$DIFF" ]; then
   	$FAILURE
   	echo "WARN: new upgrade.sh script found ***"
  @@ -102,7 +105,7 @@
   echo "*** Make the checksum list for the new version ***"
   $NORMAL
   
  -FILELIST=$(find $TMP/$PACKAGE -type f | sed "s@^$TMP/$PACKAGE/@@")
  +FILELIST=$(find $TMP/$PACKAGE -type f | sort | sed "s@^$TMP/$PACKAGE/@@")
   
   rm -f checksum-new
   (cd $TMP/$PACKAGE; for x in $FILELIST; do test -f $x && md5sum $x;done >> ../../checksum-new)
  @@ -160,6 +163,7 @@
   if [ ! -z "$UPGRADE" ]; then
   	echo "*** Backup the old files ***"
   	$NORMAL
  +	mkdir -p backup
   	mkdir -p $BACKUP
   	tar cf - $UPGRADE|(cd $BACKUP;tar xvf -)
   
  @@ -171,7 +175,7 @@
           	$NORMAL
   	elif [ x$TYPE = xp ]; then
   		SAVED="backup/$PACKAGE-$DATE.diff"
  -        	(cd $TMP; diff -ru moniwiki-$DATE $PACKAGE > ../backup/$PACKAGE-$DATE.diff )
  +        	(cd $TMP; diff -ruN $PACKAGE-$DATE $PACKAGE > ../backup/$PACKAGE-$DATE.diff )
           	$MESSAGE
           	echo "   Old files are backuped as a backup/$PACKAGE-$DATE.diff"
           	$NORMAL
  
  
  


wkpark      2009/06/04 02:16:17

  Modified:    plugin   FullSearch.php
  Log:
  return $hits info with $opts['call'] param.
  
  Revision  Changes    Path
  1.28      +9 -5      moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- FullSearch.php	9 Apr 2009 13:15:40 -0000	1.27
  +++ FullSearch.php	3 Jun 2009 17:16:16 -0000	1.28
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
   //
  -// $Id: FullSearch.php,v 1.27 2009/04/09 13:15:40 wkpark Exp $
  +// $Id: FullSearch.php,v 1.28 2009/06/03 17:16:16 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
  @@ -36,8 +36,8 @@
     if ($options['value']) {
       $val=htmlspecialchars($options['value']);
       printf(_("Found %s matching %s out of %s total pages")."<br />",
  -         $ret['hits'],
  -        ($ret['hits'] == 1) ? _("page") : _("pages"),
  +         $ret['hit'],
  +        ($ret['hit'] == 1) ? _("page") : _("pages"),
            $ret['all']);
       if ($ret['context']==0) {
         $tag=$formatter->link_to("?action=fullsearch&amp;value=$val&amp;context=20",_("Show Context."));
  @@ -240,6 +240,12 @@
       $fc->update($sid,serialize($hits));
     }
   
  +  $opts['hits']= $hits;
  +  $opts['hit']= count($hits);
  +  $opts['all']= count($pages);
  +
  +  if ($opts['call']) return $hits;
  +
     $out.= "<!-- RESULT LIST START -->"; // for search plugin
     $out.= "<ul>";
   
  @@ -268,8 +274,6 @@
     $out.= "</ul>\n";
     $out.= "<!-- RESULT LIST END -->"; // for search plugin
   
  -  $opts['hits']= count($hits);
  -  $opts['all']= count($pages);
     return $out;
   }
   
  
  
  


wkpark      2009/06/04 02:18:23

  Modified:    .        wiki.php
  Log:
  do not override include_path. just append $include_path
  
  Revision  Changes    Path
  1.474     +5 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.473
  retrieving revision 1.474
  diff -u -r1.473 -r1.474
  --- wiki.php	1 May 2009 16:47:23 -0000	1.473
  +++ wiki.php	3 Jun 2009 17:18:23 -0000	1.474
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.473 2009/05/01 16:47:23 wkpark Exp $
  +// $Id: wiki.php,v 1.474 2009/06/03 17:18:23 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.473 $',1,-1);
  +$_revision = substr('$Revision: 1.474 $',1,-1);
   $_release = '1.1.4-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -588,7 +588,7 @@
   #  if ($icon) $config['icon']=$icon;
   #  if ($actions) $config['actions']=$actions;
     if (isset($config['include_path']))
  -    ini_set('include_path',$config['include_path']);
  +    ini_set('include_path',ini_get('include_path').PATH_SEPARATOR.$config['include_path']);
   
     return $config;
   }
  @@ -1562,6 +1562,7 @@
               if (!empty($params['print'])) {
                 $ret= include $key; // Do we need more secure method ?
                 if ($ehandle) restore_error_handler();
  +              fclose($fp);
                 return $ret;
               } else {
                 ob_start();
  @@ -1569,6 +1570,7 @@
                 if ($ehandle) restore_error_handler();
                 $fetch = ob_get_contents();
                 ob_end_clean();
  +              fclose($fp);
                 return $fetch;
               }
             }
  
  
  


wkpark      2009/06/04 18:44:09

  Modified:    plugin   Play.php
  Log:
  support silverlight-2. by smcho
  
  Revision  Changes    Path
  1.10      +17 -12    moniwiki/plugin/Play.php
  
  Index: Play.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Play.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- Play.php	29 Apr 2009 23:15:10 -0000	1.9
  +++ Play.php	4 Jun 2009 09:44:09 -0000	1.10
  @@ -8,12 +8,12 @@
   // Name: Play macro
   // Description: media Player Plugin
   // URL: MoniWikiDev:PlayMacro
  -// Version: $Revision: 1.9 $
  +// Version: $Revision: 1.10 $
   // License: GPL
   //
   // Usage: [[Play(http://blah.net/blah.mp3)]]
   //
  -// $Id: Play.php,v 1.9 2009/04/29 23:15:10 wkpark Exp $
  +// $Id: Play.php,v 1.10 2009/06/04 09:44:09 wkpark Exp $
   
   function macro_Play($formatter,$value) {
     global $DBInfo;
  @@ -201,33 +201,38 @@
       $out='';
   
       for ($i=0,$sz=count($media);$i<$sz;$i++) {
  +      $classid = '';
         if (preg_match("/(wmv|mpeg4|mp4|avi|asf)$/",$media[$i])) {
  -        $classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95";
  +        $classid="classid='clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95'";
           $type='type="application/x-mplayer2"';
           $attr='width="320" height="280" autoplay="'.$play.'"';
  -        $params="<param name='FileName' value='".$url[$i]."'>\n".
  -          "<param name='AutoStart' value='False'>\n".
  -          "<param name='ShowControls' value='True'>";
  +        $params="<param name='FileName' value='".$url[$i]."' />\n".
  +          "<param name='AutoStart' value='False' />\n".
  +          "<param name='ShowControls' value='True' />";
         } else if (preg_match("/(wav|mp3|ogg)$/",$media[$i])) {
  -        $classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B";
  +        $classid="classid='clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B'";
           $type='';
           $attr='codebase="http://www.apple.com/qtactivex/qtplugin.cab" height="30"';
           $attr.=' autoplay="'.$play.'"';
           $params="<param name='src' value='".$url[$i]."'>\n".
  -          "<param name='AutoStart' value='$play'>";
  +          "<param name='AutoStart' value='$play' />";
         } else if (preg_match("/swf$/",$media[$i])) {
           $type='type="application/x-shockwave-flash"';
  -        $classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000";
  +        $classid="classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'";
           $attr='codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"';
           $attr.=' autoplay="'.$play.'"';
  -        $params="<param name='movie' value='".$url[$i]."'>\n".
  -          "<param name='AutoStart' value='$play'>";
  +        $params="<param name='movie' value='".$url[$i]."' />\n".
  +          "<param name='AutoStart' value='$play' />";
  +      } else if (preg_match("/\.xap/",$media[$i])) {
  +        $type='type="application/x-silverlight-2"';
  +        $attr='width="320" height="320" data="data:application/x-silverlight,"';
  +        $params="<param name='source' value='".$url[$i]."' />\n";
         }
         $autoplay=0; $play='false';
   
         $myurl=$url[$i];
         $out.=<<<OBJECT
  -<object classid="$classid" $type $attr>
  +<object $classid $type $attr>
   $params
   <param name="AutoRewind" value="True">
   <embed $type src="$myurl" $attr></embed>
  
  
  


wkpark      2009/06/15 22:56:56

  Modified:    plugin   download.php
  Log:
  download_resume problem fixed
  
  Revision  Changes    Path
  1.21      +8 -4      moniwiki/plugin/download.php
  
  Index: download.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/download.php,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- download.php	29 Jan 2009 22:05:30 -0000	1.20
  +++ download.php	15 Jun 2009 13:56:56 -0000	1.21
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // download action plugin for the MoniWiki
   //
  -// $Id: download.php,v 1.20 2009/01/29 22:05:30 wkpark Exp $
  +// $Id: download.php,v 1.21 2009/06/15 13:56:56 wkpark Exp $
   //
   function do_download($formatter,$options) {
     global $DBInfo;
  @@ -166,6 +166,7 @@
     
      $size=filesize($file);
      //check if http_range is sent by browser (or download manager)
  +   $range = 0;
      if(isset($_SERVER['HTTP_RANGE'])) {
          list($a, $range)=explode("=",$_SERVER['HTTP_RANGE']);
          //if yes, download missing part
  @@ -193,12 +194,15 @@
      //seek to start of missing part
      fseek($fp,$range);
      //start buffered download
  +   //reset time limit for big files
  +   set_time_limit(0);
  +   $chunksize = 1*(1024*1024); // 1MB chunks
  +   $left = $size;
      while(!feof($fp)){
  -       //reset time limit for big files
  -       set_time_limit(0);
  -       print(fread($fp,1024*8));
  +       print(fread($fp, $chunksize < $left ? $chunksize: $left));
          flush();
          ob_flush();
  +       $left -= $chunksize;
      }
      fclose($fp);
      exit;
  
  
  


wkpark      2009/07/10 13:23:46

  Modified:    imgs/moni2 scrap.png unscrap.png
  Log:
  update icons
  
  Revision  Changes    Path
  1.2       +2 -3      moniwiki/imgs/moni2/scrap.png
  
  	<<Binary file>>
  
  
  1.2       +3 -2      moniwiki/imgs/moni2/unscrap.png
  
  	<<Binary file>>
  
  


wkpark      2009/07/10 23:09:58

  Added:       imgs/interwiki naver-16.png
  Log:
  add naver 16x16 interwiki icon
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/interwiki/naver-16.png
  
  	<<Binary file>>
  
  


wkpark      2009/07/12 00:50:56

  Modified:    plugin/user nforge.php
  Log:
  do not try to save null user.
  
  Revision  Changes    Path
  1.5       +12 -10    moniwiki/plugin/user/nforge.php
  
  Index: nforge.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/user/nforge.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- nforge.php	23 May 2009 12:54:16 -0000	1.4
  +++ nforge.php	11 Jul 2009 15:50:56 -0000	1.5
  @@ -9,12 +9,12 @@
   // Name: nFORGE Unix based User plugin
   // Description: nFORGE Unix user plugin
   // URL: MoniWiki:NForgeUserPlugin
  -// Version: $Revision: 1.4 $
  +// Version: $Revision: 1.5 $
   // License: GPL
   //
   // Usage: set $user_class = 'nforge'; in the config.php
   //
  -// $Id: nforge.php,v 1.4 2009/05/23 12:54:16 wkpark Exp $
  +// $Id: nforge.php,v 1.5 2009/07/11 15:50:56 wkpark Exp $
   
   class User_nforge extends WikiUser {
       function User_nforge($id = '') {
  @@ -23,17 +23,19 @@
               $u =& user_get_object_by_name($id);
           } else {
               $u =& user_get_object(user_getid());
  -            if ($u) {
  +            if ($u and is_object($u) and !$u->isError()) {
                   global $DBInfo;
                   $id = $u->getUnixName();
               }
  -            $this->setID($id);
  -            $udb=new UserDB($DBInfo);
  -            $tmp = $udb->getUser($id);
  -            if (empty($tmp->info['nick']) or $tmp->info['nick']!=$u->data_array['realname']) {
  -                // register user
  -                $tmp->info['nick']=$u->data_array['realname'];
  -                $udb->saveUser($tmp);
  +            if (!empty($id)) {
  +                $this->setID($id);
  +                $udb=new UserDB($DBInfo);
  +                $tmp = $udb->getUser($id);
  +                if (empty($tmp->info['nick']) or $tmp->info['nick']!=$u->data_array['realname']) {
  +                    // register user
  +                    $tmp->info['nick']=$u->data_array['realname'];
  +                    $udb->saveUser($tmp);
  +                }
               }
           }
   
  
  
  


wkpark      2009/07/12 22:27:30

  Modified:    css      kbd.js
  Log:
  fix IE js err.
  
  Revision  Changes    Path
  1.21      +4 -2      moniwiki/css/kbd.js
  
  Index: kbd.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/kbd.js,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- kbd.js	26 Apr 2009 07:24:22 -0000	1.20
  +++ kbd.js	12 Jul 2009 13:27:30 -0000	1.21
  @@ -6,7 +6,7 @@
   
      distributable under GPL
   
  -   $Id: kbd.js,v 1.20 2009/04/26 07:24:22 wkpark Exp $
  +   $Id: kbd.js,v 1.21 2009/07/12 13:27:30 wkpark Exp $
   
      CHANGES
   
  @@ -310,7 +310,9 @@
   	// onload
   	var oldOnload = window.onload;
   	if (typeof window.onload != 'function') {
  -		window.onload = moin_init();
  +		window.onload = function() {
  +			moin_init();
  +		}
   	} else {
           	window.onload = function() {
   			oldOnload();
  
  
  


wkpark      2009/07/12 23:07:21

  Modified:    plugin/user nforge.php
  Log:
  fix the last change. set Anonymous correctly.
  
  Revision  Changes    Path
  1.6       +6 -3      moniwiki/plugin/user/nforge.php
  
  Index: nforge.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/user/nforge.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- nforge.php	11 Jul 2009 15:50:56 -0000	1.5
  +++ nforge.php	12 Jul 2009 14:07:20 -0000	1.6
  @@ -9,12 +9,12 @@
   // Name: nFORGE Unix based User plugin
   // Description: nFORGE Unix user plugin
   // URL: MoniWiki:NForgeUserPlugin
  -// Version: $Revision: 1.5 $
  +// Version: $Revision: 1.6 $
   // License: GPL
   //
   // Usage: set $user_class = 'nforge'; in the config.php
   //
  -// $Id: nforge.php,v 1.5 2009/07/11 15:50:56 wkpark Exp $
  +// $Id: nforge.php,v 1.6 2009/07/12 14:07:20 wkpark Exp $
   
   class User_nforge extends WikiUser {
       function User_nforge($id = '') {
  @@ -36,6 +36,9 @@
                       $tmp->info['nick']=$u->data_array['realname'];
                       $udb->saveUser($tmp);
                   }
  +            } else {
  +                $id = 'Anonymous';
  +                $this->setID('Anonymous');
               }
           }
   
  @@ -47,7 +50,7 @@
           $this->nick=isset($_COOKIE['MONI_NICK']) ?_stripslashes($_COOKIE['MONI_NICK']):'';
           if ($this->tz_offset == '') $this->tz_offset = date('Z');
   
  -        if (!empty($id)) {
  +        if (!empty($id) and $id != 'Anonymous') {
               global $DBInfo;
               $udb = new UserDB($DBInfo);
   
  
  
  


wkpark      2009/07/13 16:41:25

  Modified:    .        monisetup.php
  Log:
  use isset() / empty() to fix notice warning
  
  Revision  Changes    Path
  1.47      +8 -8      moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.46
  retrieving revision 1.47
  diff -u -r1.46 -r1.47
  --- monisetup.php	25 Apr 2009 04:51:29 -0000	1.46
  +++ monisetup.php	13 Jul 2009 07:41:25 -0000	1.47
  @@ -1,7 +1,7 @@
   <?php
   // Copyright 2003-2007 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.46 2009/04/25 04:51:29 wkpark Exp $
  +// $Id: monisetup.php,v 1.47 2009/07/13 07:41:25 wkpark Exp $
   
   function _stripslashes($str) {
     return get_magic_quotes_gpc() ? stripslashes($str):$str;
  @@ -226,17 +226,17 @@
     }
   
     function _genRawConfig($newconfig, $mode = 0, $configfile='config.php', $default='config.php.default') {
  -    if ($newconfig['admin_passwd'])
  +    if (!empty($newconfig['admin_passwd']))
         $newconfig['admin_passwd']=crypt($newconfig['admin_passwd'],md5(time()));
  -    if ($newconfig['purge_passwd'])
  +    if (!empty($newconfig['purge_passwd']))
         $newconfig['purge_passwd']=crypt($newconfig['purge_passwd'],md5(time()));
   
       if ($mode == 1) {
         $newconfig = $this->_quote_config($newconfig);
       } else {
  -      if ($newconfig['admin_passwd'])
  +      if (isset($newconfig['admin_passwd']))
           $newconfig['admin_passwd']="'".$newconfig['admin_passwd']."'";
  -      if ($newconfig['purge_passwd'])
  +      if (isset($newconfig['purge_passwd']))
           $newconfig['purge_passwd']="'".$newconfig['purge_passwd']."'";
       }
   
  @@ -268,7 +268,7 @@
   HEADER;
             continue;
           } else if (preg_match('/^(#{1,}\s*)?\$[a-zA-Z][a-zA-Z0-9_]*\s*=/', $line, $m)) {
  -          $marker = $m[1];
  +          $marker = isset($m[1]) ? $m[1] : '';
             if ($marker != '')
               $mre = '#{1,}';
             else
  @@ -284,7 +284,7 @@
           $val.=$line;
           if (!preg_match("/$tag\s*;(\s*#.*)?\s*$/",$line,$m)) continue;
           $mre = '';
  -        $desc[$key] = rtrim($m[1]);
  +        $desc[$key] = isset($m[1]) ? rtrim($m[1]) : '';
         } else {
           list($key,$val)=explode('=',substr($line,$mlen),2);
           $key = trim($key);
  @@ -299,7 +299,7 @@
           } else {
             $val = substr($val,0,-strlen($match[1])-1);
             #$val .= '##########X'.$val.'==='.$match[1].'XX####';
  -          if ($match[2]) {
  +          if (isset($match[2])) {
               $desc[$key] = rtrim($match[2]);
             } else {
               $desc[$key] = '';
  
  
  


wkpark      2009/07/14 00:25:48

  Modified:    plugin   UploadForm.php
  Log:
  styling file input form and more css styling.
  i18nize
  
  Revision  Changes    Path
  1.9       +78 -15    moniwiki/plugin/UploadForm.php
  
  Index: UploadForm.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadForm.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- UploadForm.php	20 Dec 2006 23:00:42 -0000	1.8
  +++ UploadForm.php	13 Jul 2009 15:25:48 -0000	1.9
  @@ -5,49 +5,104 @@
   //
   // Usage: [[UploadForm]]
   //
  -// $Id: UploadForm.php,v 1.8 2006/12/20 23:00:42 wkpark Exp $
  +// $Id: UploadForm.php,v 1.9 2009/07/13 15:25:48 wkpark Exp $
   
   function macro_UploadForm($formatter,$value) {
       global $DBInfo;
       static $id=1;
   
  +    $use_fake = 1;
  +
  +    $msg = _("Choose File");
       if ($id==1)
          $script=<<<EOF
   <script type="text/javascript">
   /*<![CDATA[*/
  -function addRow(id) {
  +function addRow(id, size) {
  +    if (size == undefined)
  +        size = 50;
  +
       var fform = document.getElementById(id);
       var lastRow = fform.rows.length;
       var row = fform.insertRow(lastRow);
   
       var cell = row.insertCell(0);
  -    var span = document.createElement('span');
  -    var rmbtn = document.createElement('input');
  +    var div = document.createElement('div');
  +    div.setAttribute('style', 'position:relative');
       var newInput = document.createElement('input');
       newInput.setAttribute('type', 'file');
       newInput.setAttribute('name', 'upfile[]');
  -    newInput.setAttribute('size', '50');
  +    newInput.setAttribute('size', size);
  +    newInput.setAttribute('style', 'font-size:14px;position:absolute;width:65px;right:0;padding:0;filter:alpha(opacity=0);opacity:0;cursor:pointer;');
  +
  +EOF;
  +    if ($id == 1 and $use_fake)
  +        $script.=<<<EOF
  +    newInput.className = 'form-file';
  +    // get basename with replace() for IE
  +    newInput.onchange = function() { fakeInp.value = this.value.replace(/^.*[\\\\]/g, '');};
   
  -    rmbtn.setAttribute('type','button');
  -    rmbtn.setAttribute('value','x');
  -    rmbtn.setAttribute('onclick',"delRow(this)");
  -    rmbtn.onclick=Function("delRow(this)"); // for IE
  +    var span = document.createElement('span');
  +    var fakeInp = document.createElement('input');
  +    fakeInp.setAttribute('type', 'text');
  +    fakeInp.setAttribute('size', size);
  +    fakeInp.className = 'fake-file';
  +    fakeInp.setAttribute('readonly', 'true');
  +    if (document.all)
  +        fakeInp.readOnly = true; // for IE
  +    fakeInp.onclick = function() {if (this.value) { this.value = ''; newInput.value = ''; } else {delRow(this);} };
  +
  +    var addbtn = document.createElement('button');
  +    var span2 = document.createElement('span');
  +    var txt = document.createTextNode('$msg');
  +    span2.appendChild(txt);
  +    addbtn.appendChild(span2);
  +    addbtn.setAttribute('onclick',"return false;");
   
  +    div.appendChild(fakeInp);
  +    span.appendChild(addbtn);
       span.appendChild(newInput);
  -    span.appendChild(rmbtn);
  -    cell.appendChild(span);
  +    div.appendChild(span);
  +    cell.appendChild(div);
  +EOF;
  +    else if ($id == 1)
  +        $script .=<<<EOF
  +    div.appendChild(newInput);
  +    cell.appendChild(div);
  +EOF;
  +    
  +    if ($id == 1)
  +        $script .=<<<EOF
   }
   
   function delRow(obj) {
       obj.parentNode.parentNode.parentNode.removeChild(obj.parentNode.parentNode);
   }
   
  +function check_attach(id) {
  +    // check if the form has attached files.
  +    var attach = document.getElementById(id);
  +    inputs = attach.getElementsByTagName('input');
  +    for (i = 0; i < inputs.length; i++) {
  +        if (inputs[i].type == 'file' && inputs[i].value != '') {
  +            return true;
  +        }
  +    }
  +    return false;
  +}
  +
   /*]]>*/
   </script>
   EOF;
  +    $msg = _("add files");
  +    $msg2 = _("add a file");
  +    $msg3 = _("Upload files");
  +    $msg4 = _("Reset");
  +    $attach_msg = _("Attachments");
       $url=$formatter->link_url($formatter->page->urlname);
       $form=<<<EOS
     <form target='_blank' method="post" action="$url" enctype="multipart/form-data">
  +  <div class='uploadForm'>
     <input type='hidden' name='action' value='UploadFile' />
   EOS;
       $icon=$DBInfo->icon['attach'];
  @@ -55,7 +110,7 @@
     <table border="0" cellspacing="0" cellpadding="0">
       <tr>
         <td valign='top' rowspan='2'>
  -        <span onclick="addRow('upload$id')" title="add files">$icon</span>
  +        <span onclick="addRow('upload$id')" class='icon-clip' title="$msg">$attach_msg</span>
         </td>
         <td>
           <table cellspacing="0" cellpadding="0" border="0">
  @@ -69,15 +124,23 @@
       </tr>
       <tr>
         <td>
  -  <input type='button' onclick="addRow('upload$id')" value="add a file" />
  +      <div class='buttons'>
  +  <button type='button' class='add-file' onclick="addRow('upload$id')"><span>$msg2</span></button>
     <input type="hidden" name="uploadid" value="upload$id" />
     <input type="hidden" name="popup" value="1" />
  -  <input type="submit" name="upload" value="Upload files" />
  -  <input type="reset" name="reset" value="Reset" />
  +  <button type="submit" class='upload-file save-button' onclick="return check_attach('upload$id')" name="upload"><span>$msg3</span></button>
  +  <!-- <input type="reset" name="reset" value="$msg4" /> -->
  +      </div>
         </td>
       </tr>
     </table>
  +  </div>
     </form>
  +<script type="text/javascript">
  +/*<![CDATA[*/
  +//addRow('upload$id');
  +/*]]>*/
  +</script>
   EOF;
   
       if (!in_array('UploadedFiles',$formatter->actions))
  
  
  


wkpark      2009/07/14 00:29:05

  Modified:    .        wiki.php
  Log:
  add #notitle PI
  add the $hide_log option to hide the feedback message with the Effect.hide().
  
  Revision  Changes    Path
  1.475     +23 -6     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.474
  retrieving revision 1.475
  diff -u -r1.474 -r1.475
  --- wiki.php	3 Jun 2009 17:18:23 -0000	1.474
  +++ wiki.php	13 Jul 2009 15:29:05 -0000	1.475
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.474 2009/06/03 17:18:23 wkpark Exp $
  +// $Id: wiki.php,v 1.475 2009/07/13 15:29:05 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.474 $',1,-1);
  +$_revision = substr('$Revision: 1.475 $',1,-1);
   $_release = '1.1.4-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -2094,7 +2094,7 @@
   
     function get_instructions(&$body) {
       global $Config;
  -    $pikeys=array('#redirect','#action','#title','#keywords','#noindex',
  +    $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');
  @@ -4639,8 +4639,10 @@
       else if (empty($options['nolink']))
         $title=$this->link_to("?action=fullsearch$qext&amp;value="._urlencode($mypgname),$title);
   
  -    $title="$groupt<span class='wikiTitle'>$title</span>";
  -    #$title="<span class='wikiTitle'><b>$title</b></span>";
  +    if (isset($this->pi['#notitle']))
  +      $title = '';
  +    else
  +      $title="$groupt<span class='wikiTitle'>$title</span>";
   
       $logo=$this->link_tag($DBInfo->logo_page,'',$DBInfo->logo_string);
       $goto_form=$DBInfo->goto_form ?
  @@ -4651,10 +4653,25 @@
         
         $mtitle=$msgtitle ? "<h3>".$msgtitle."</h3>\n":"";
         $msg=<<<MSG
  -<div class="message"><span class='$msgtype'>
  +<div class="message" id="wiki-message"><span class='$msgtype'>
   $mtitle$options[msg]</span>
   </div>
   MSG;
  +      if (isset($DBInfo->hide_log) and $DBInfo->hide_log > 0 and preg_match('/timer/', $msgtype)) {
  +        $time = intval($DBInfo->hide_log * 1000); // sec to ms
  +        $js = array('js/scriptaculous.js', 'js/effects.js');
  +        $this->register_javascripts(array($js));
  +        $msg .= $this->get_javascripts();
  +          $msg .=<<<MSG
  +<script type="text/javascript">
  +/*<![CDATA[*/
  +Event.observe(window, 'load', function() {
  +    setTimeout("$('wiki-message').fade()", $time);
  +});
  +/*]]>*/
  +</script>
  +MSG;
  +      }
       }
   
       # navi bar
  
  
  


wkpark      2009/07/14 00:31:04

  Modified:    local    textarea.js
  Log:
  fix for safari / chrome. add a span tag to styling the grippie drag icon.
  
  Revision  Changes    Path
  1.6       +9 -1      moniwiki/local/textarea.js
  
  Index: textarea.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/textarea.js,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- textarea.js	29 Nov 2008 04:07:34 -0000	1.5
  +++ textarea.js	13 Jul 2009 15:31:04 -0000	1.6
  @@ -1,4 +1,4 @@
  -// $Id: textarea.js,v 1.5 2008/11/29 04:07:34 wkpark Exp $
  +// $Id: textarea.js,v 1.6 2009/07/13 15:31:04 wkpark Exp $
   // $origId: textarea.js,v 1.9 2006/04/14 13:48:56 killes Exp $
   // from drupal
   // many functions are imported from drupal.js to eliminate dependency
  @@ -130,8 +130,10 @@
   
     // Add grippie and measure it
     this.grippie = document.createElement('div');
  +  var icon = document.createElement('span');
     this.grippie.className = 'grippie';
     this.wrapper.appendChild(this.grippie);
  +  this.grippie.appendChild(icon);
     this.grippie.dimensions = dimensions(this.grippie);
     this.grippie.onmousedown = function (e) { ta.beginDrag(e); };
   
  @@ -159,6 +161,12 @@
       // IE
       this.grippie.style.width = '100%';
       this.grippie.style.paddingLeft = '2px';
  +    this.grippie.style.paddingRight = '1px';
  +  }
  +  if (/Safari/.test(navigator.userAgent)) {
  +    // Safari / chrome
  +    var test = this.element.offsetWidth - 10;
  +    this.element.style.width = test + 'px';
     }
     // Mozilla
     this.element.style.MozBoxSizing = 'border-box';
  
  
  


wkpark      2009/07/14 00:35:47

  Modified:    locale/po fr.po ko.po moniwiki.pot
  Log:
  update po msgs
  
  Revision  Changes    Path
  1.26      +974 -922  moniwiki/locale/po/fr.po
  
  Index: fr.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/fr.po,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- fr.po	9 Jan 2009 10:16:09 -0000	1.25
  +++ fr.po	13 Jul 2009 15:35:47 -0000	1.26
  @@ -4,7 +4,7 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2009-01-09 01:09+0900\n"
  +"POT-Creation-Date: 2009-07-14 00:35+0900\n"
   "PO-Revision-Date: 2003-08-17 22:51+0900\n"
   "Last-Translator: Serge Stinckwich <Serge.Stinckwich@info.unicaen.fr>\n"
   "Language-Team: fr <fr@li.org>\n"
  @@ -12,102 +12,24 @@
   "Content-Type: text/plain; charset=iso-8859-1\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  -#: ../plugin/aclinfo.php:15
  -msgid "ACL is not enabled on this Wiki"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:21
  -msgid "Your ACL Info"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:23
  -msgid "You are wiki owner"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:25
  -msgid "You are wiki master"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:27
  -msgid "Allowed actions"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:32
  -msgid "Denied actions"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:38
  -msgid "Protected actions"
  -msgstr ""
  -
  -#: ../plugin/admin.php:136 ../plugin/PluginInfo.php:50
  -msgid "Description"
  -msgstr ""
  -
  -#: ../plugin/admin.php:139 ../plugin/PluginInfo.php:56
  -msgid "Author"
  -msgstr ""
  -
  -#: ../plugin/admin.php:141 ../plugin/PluginInfo.php:58
  -msgid "License"
  -msgstr ""
  -
  -# ../plugin/VisualTour.php:59
  -#: ../plugin/admin.php:143 ../plugin/PluginInfo.php:60
  -msgid "Depend"
  -msgstr ""
  -
  -#: ../plugin/admin.php:147 ../plugin/PluginInfo.php:64
  -msgid "URL"
  -msgstr ""
  -
  -#: ../plugin/admin.php:191
  -msgid "Enabled plugins"
  -msgstr ""
  -
  -#: ../plugin/admin.php:193
  -msgid "Disabled plugins"
  -msgstr ""
  -
  -#: ../plugin/admin.php:201
  -msgid "Enabled processors"
  -msgstr ""
  -
  -#: ../plugin/admin.php:203
  -msgid "Disabled processors"
  -msgstr ""
  -
  -#: ../plugin/admin.php:206
  -msgid "Plugin/Processor settings are updated"
  -msgstr ""
  -
  -#: ../plugin/admin.php:212
  -msgid "Enable/disable plugins and processors"
  -msgstr ""
  -
  -# ../locale/dummy.php:7
  -#: ../plugin/atom.php:64 ../plugin/rss_rc.php:62
  -msgid "show changes"
  -msgstr ""
  -
   # ../plugin/Attachment.php:24
  -#: ../plugin/Attachment.php:70 ../plugin/Attachment.php:331
  +#: ../plugin/Attachment.php:70 ../plugin/Attachment.php:333
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr "T?l?charger le nouvel attachement \"%s\""
   
   # ../plugin/OeKaki.php:118
  -#: ../plugin/Attachment.php:323
  +#: ../plugin/Attachment.php:325
   msgid "or paste a new png picture"
   msgstr "or Cr?er un nouveau dessin"
   
   # ../plugin/OeKaki.php:118
  -#: ../plugin/Attachment.php:328
  +#: ../plugin/Attachment.php:330
   msgid "or draw a new gif picture"
   msgstr "or Cr?er un nouveau dessin"
   
   # ../plugin/Attachment.php:24
  -#: ../plugin/Attachment.php:334
  +#: ../plugin/Attachment.php:336
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
  @@ -122,157 +44,6 @@
   msgid "Translate %s to %s"
   msgstr "Translate %s en %s"
   
  -# ../wikilib.php:887
  -#: ../plugin/backup.php:42
  -msgid "Your wiki is backuped successfully"
  -msgstr ""
  -
  -#: ../plugin/backup.php:49
  -msgid "Backup failed !"
  -msgstr ""
  -
  -# ../plugin/backup.php:46
  -#: ../plugin/backup.php:54
  -msgid "Did you want to Backup your wiki ?"
  -msgstr "Voulez vous faire une sauvegarde de votre wiki ?"
  -
  -#: ../plugin/bbs.php:493
  -msgid "This bbs does not exists yet. Please save this page first"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:617
  -msgid "No"
  -msgstr ""
  -
  -# ../locale/dummy.php:6 ../wiki.php:2553
  -#: ../plugin/bbs.php:626
  -msgid "Edit"
  -msgstr ""
  -
  -# ../locale/dummy.php:5
  -#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1111
  -msgid "Delete"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:657
  -msgid "Please check article numbers."
  -msgstr ""
  -
  -#: ../plugin/bbs.php:737
  -msgid "More"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:782
  -msgid "New"
  -msgstr ""
  -
  -# ../plugin/rename.php:27
  -#: ../plugin/bbs.php:784
  -msgid "Read"
  -msgstr "Renommer"
  -
  -#: ../plugin/bbs.php:800
  -#, c-format
  -msgid "Total %s articles."
  -msgstr ""
  -
  -# ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
  -# c-format
  -#: ../plugin/bbs.php:836
  -#, c-format
  -msgid "Your IP address is not allowed to %s at this BBS"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:890
  -msgid "Successfully deleted."
  -msgstr ""
  -
  -#: ../plugin/bbs.php:922
  -msgid "Fail to post comment."
  -msgstr ""
  -
  -# ../wikilib.php:540
  -#: ../plugin/bbs.php:932
  -#, c-format
  -msgid "The article %s will be deleted."
  -msgstr ""
  -
  -#: ../plugin/bbs.php:974
  -msgid "Invalid HomePage address."
  -msgstr ""
  -
  -#: ../plugin/bbs.php:987
  -msgid "No Name error."
  -msgstr ""
  -
  -#: ../plugin/bbs.php:997
  -msgid "No Subject error."
  -msgstr ""
  -
  -#: ../plugin/bbs.php:1009 ../plugin/Comment.php:191 ../plugin/Gallery.php:174
  -#: ../wikilib.php:1459 ../wikilib.php:1605
  -msgid ""
  -"Sorry, can not save page because some messages are blocked in this wiki."
  -msgstr ""
  -
  -# ../plugin/Vote.php:109
  -#: ../plugin/bbs.php:1025
  -msgid "New post added successfully"
  -msgstr ""
  -
  -#: ../plugin/BlogChanges.php:198
  -msgid "Category: "
  -msgstr ""
  -
  -# ../locale/dummy.php:7
  -#: ../plugin/BlogChanges.php:200 ../locale/dummy.php:7
  -msgid "BlogChanges"
  -msgstr "ModificationsBlog"
  -
  -# ../wikilib.php:1483
  -#: ../plugin/BlogChanges.php:246
  -#, c-format
  -msgid "Invalid category expr \"%s\""
  -msgstr ""
  -
  -# ../plugin/processor/blog.php:43 ../plugin/processor/blog.php:45
  -#: ../plugin/BlogChanges.php:378 ../plugin/BlogChanges.php:380
  -#: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
  -msgid "Anonymous"
  -msgstr "Anonyme"
  -
  -# ../plugin/processor/blog.php:78
  -#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  -#, c-format
  -msgid "%d comment"
  -msgstr "%d commentaire"
  -
  -# ../plugin/processor/blog.php:78
  -#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  -#, c-format
  -msgid "%d comments"
  -msgstr "%d commentaires"
  -
  -# ../plugin/processor/blog.php:70
  -#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:208
  -#: ../plugin/processor/blog.php:78
  -msgid "Add comment"
  -msgstr "Ajouter un commentaire"
  -
  -# ../plugin/processor/blog.php:89
  -#: ../plugin/BlogChanges.php:423 ../plugin/processor/blog.php:97
  -msgid "track back"
  -msgstr ""
  -
  -# ../plugin/BlogChanges.php:226
  -#: ../plugin/BlogChanges.php:443
  -msgid "Previous"
  -msgstr "Pr?c?dent"
  -
  -#: ../plugin/BlogChanges.php:446
  -msgid "Next"
  -msgstr ""
  -
   #: ../plugin/Blog.php:84
   #, c-format
   msgid "Blog cache of \"%s\" is refreshed"
  @@ -294,7 +65,7 @@
   msgid "Error: No blog entry found!"
   msgstr ""
   
  -#: ../plugin/Blog.php:164 ../plugin/Blog.php:166 ../plugin/Comment.php:221
  +#: ../plugin/Blog.php:164 ../plugin/Blog.php:166 ../plugin/Comment.php:226
   msgid "Error: Don't make a clone!"
   msgstr ""
   
  @@ -342,12 +113,12 @@
   msgid "Title"
   msgstr "titre"
   
  -#: ../plugin/Blog.php:268 ../wikilib.php:941
  +#: ../plugin/Blog.php:268 ../wikilib.php:972
   msgid "GUI"
   msgstr ""
   
   # ../plugin/Blog.php:197
  -#: ../plugin/Blog.php:277 ../plugin/Comment.php:104
  +#: ../plugin/Blog.php:277 ../plugin/Comment.php:109
   msgid "Don't add a signature"
   msgstr "Ne pas ajouter de signature"
   
  @@ -356,34 +127,59 @@
   msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
   msgstr "<b>Une r?gle horizontale</b> ---- ne s'applique pas au mode blog."
   
  -#: ../plugin/cacheadmin.php:105
  -msgid "You are not WikiMaster!!"
  -msgstr ""
  -
  -#: ../plugin/cacheadmin.php:120
  -msgid "Clear cache dirs"
  +#: ../plugin/BlogChanges.php:198
  +msgid "Category: "
   msgstr ""
   
  -#: ../plugin/chat.php:36
  -msgid "No messages"
  -msgstr ""
  +# ../locale/dummy.php:7
  +#: ../plugin/BlogChanges.php:200 ../locale/dummy.php:7
  +msgid "BlogChanges"
  +msgstr "ModificationsBlog"
   
  -#: ../plugin/chmod.php:18
  +# ../wikilib.php:1483
  +#: ../plugin/BlogChanges.php:246
   #, c-format
  -msgid "Permission of \"%s\" changed !"
  +msgid "Invalid category expr \"%s\""
   msgstr ""
   
  -# ../wiki.php:3021
  -#: ../plugin/chmod.php:24
  -#, c-format
  -msgid "Fail to chmod \"%s\" !"
  -msgstr "Impossible de pouvoir \"%s\" !"
  +# ../plugin/processor/blog.php:43 ../plugin/processor/blog.php:45
  +#: ../plugin/BlogChanges.php:378 ../plugin/BlogChanges.php:380
  +#: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
  +msgid "Anonymous"
  +msgstr "Anonyme"
   
  -#: ../plugin/chmod.php:35
  +# ../plugin/processor/blog.php:78
  +#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
   #, c-format
  -msgid "Change permission of \"%s\""
  -msgstr ""
  -
  +msgid "%d comment"
  +msgstr "%d commentaire"
  +
  +# ../plugin/processor/blog.php:78
  +#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  +#, c-format
  +msgid "%d comments"
  +msgstr "%d commentaires"
  +
  +# ../plugin/processor/blog.php:70
  +#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:213
  +#: ../plugin/processor/blog.php:78
  +msgid "Add comment"
  +msgstr "Ajouter un commentaire"
  +
  +# ../plugin/processor/blog.php:89
  +#: ../plugin/BlogChanges.php:423 ../plugin/processor/blog.php:97
  +msgid "track back"
  +msgstr ""
  +
  +# ../plugin/BlogChanges.php:226
  +#: ../plugin/BlogChanges.php:443
  +msgid "Previous"
  +msgstr "Pr?c?dent"
  +
  +#: ../plugin/BlogChanges.php:446
  +msgid "Next"
  +msgstr ""
  +
   # ../plugin/OeKaki.php:118
   #: ../plugin/Clip.php:28
   msgid "Paste a new picture"
  @@ -408,105 +204,102 @@
   msgstr ""
   
   # ../plugin/processor/blog.php:78
  -#: ../plugin/Comment.php:87
  +#: ../plugin/Comment.php:92
   msgid "Comment"
   msgstr "commentaire"
   
   # ../wikilib.php:482
  -#: ../plugin/Comment.php:88 ../wikilib.php:935 ../monisetup.php:1047
  +#: ../plugin/Comment.php:93 ../wikilib.php:966 ../monisetup.php:1305
   msgid "Preview"
   msgstr "Pr?visualisation"
   
   # ../plugin/rename.php:27
  -#: ../plugin/Comment.php:102
  +#: ../plugin/Comment.php:107
   msgid "Username"
   msgstr ""
   
   # ../wikilib.php:814
  -#: ../plugin/Comment.php:125
  +#: ../plugin/Comment.php:130
   msgid "Page is not writable"
   msgstr ""
   
   # ../wiki.php:3009
  -#: ../plugin/Comment.php:128
  +#: ../plugin/Comment.php:133
   msgid "You are not allowed to add a comment."
   msgstr ""
   
   # ../plugin/restore.php:27
  -#: ../plugin/Comment.php:129 ../plugin/Keywords.php:377
  +#: ../plugin/Comment.php:134 ../plugin/Keywords.php:459
   msgid "Page does not exists"
   msgstr ""
   
  -#: ../plugin/Comment.php:164 ../plugin/userform.php:118
  -#: ../plugin/userform.php:181 ../plugin/userform.php:204
  +#: ../plugin/Comment.php:169 ../plugin/userform.php:118
  +#: ../plugin/userform.php:181 ../plugin/userform.php:204 ../wikilib.php:1665
   msgid "Invalid ticket !"
   msgstr ""
   
  -#: ../plugin/Comment.php:169 ../plugin/userform.php:120
  -#: ../plugin/userform.php:206
  +#: ../plugin/Comment.php:174 ../plugin/userform.php:120
  +#: ../plugin/userform.php:206 ../wikilib.php:1670
   msgid "You need a ticket !"
   msgstr ""
   
  +#: ../plugin/Comment.php:196 ../plugin/Gallery.php:174 ../plugin/bbs.php:1009
  +#: ../wikilib.php:1509 ../wikilib.php:1686
  +msgid ""
  +"Sorry, can not save page because some messages are blocked in this wiki."
  +msgstr ""
  +
   # ../wikilib.php:748 ../wikilib.php:777
  -#: ../plugin/Comment.php:197
  +#: ../plugin/Comment.php:202
   msgid "Preview comment"
   msgstr ""
   
   # ../plugin/Vote.php:109
  -#: ../plugin/Comment.php:328
  +#: ../plugin/Comment.php:333
   #, c-format
   msgid "%s is commented successfully"
   msgstr "Vote r?ussi"
   
   # ../plugin/Vote.php:109
  -#: ../plugin/Comment.php:329
  +#: ../plugin/Comment.php:334
   msgid "Comment added successfully"
   msgstr ""
   
  -# ../plugin/css.php:29 ../plugin/css.php:37
  -#: ../plugin/css.php:33 ../plugin/css.php:41
  -msgid "Back to UserPreferences"
  -msgstr "Retour ? UserPreferences"
  -
  -#: ../plugin/css.php:67
  -msgid "CSS disabled !"
  -msgstr ""
  -
   # ../wiki.php:2211 ../wiki.php:2360
  -#: ../plugin/Diff.php:207 ../plugin/Info.php:220
  +#: ../plugin/Diff.php:410 ../plugin/Info.php:230
   msgid "No older revisions available"
   msgstr "Aucune r?vision plus ancienne disponible"
   
   # ../wikilib.php:803
  -#: ../plugin/Diff.php:212 ../plugin/Info.php:226 ../plugin/rcsexport.php:13
  +#: ../plugin/Diff.php:415 ../plugin/Info.php:236 ../plugin/rcsexport.php:13
   #: ../plugin/rcsimport.php:13
   msgid "Version info is not available in this wiki"
   msgstr ""
   
   # ../wiki.php:2338 ../wiki.php:2373 ../wikilib.php:770
  -#: ../plugin/Diff.php:223 ../wikilib.php:1592
  +#: ../plugin/Diff.php:426 ../wikilib.php:1642
   msgid "No difference found"
   msgstr "Aucune diff?rence trouv?"
   
   # ../wiki.php:2376
  -#: ../plugin/Diff.php:227
  +#: ../plugin/Diff.php:430
   msgid "Difference between versions"
   msgstr "Diff?rence entre les versions"
   
   # ../wiki.php:2378
  -#: ../plugin/Diff.php:229 ../plugin/Diff.php:341
  +#: ../plugin/Diff.php:432 ../plugin/Diff.php:548
   #, c-format
   msgid "Difference between r%s and r%s"
   msgstr "Diff?rence entre r%s et r%s"
   
   # ../wiki.php:2382
  -#: ../plugin/Diff.php:232 ../plugin/Diff.php:343
  +#: ../plugin/Diff.php:435 ../plugin/Diff.php:550
   #, c-format
   msgid "Difference between r%s and the current"
   msgstr "Diff?rence entre r%s et la version courante"
   
   # ../locale/dummy.php:7
  -#: ../plugin/Diff.php:345
  +#: ../plugin/Diff.php:552
   msgid "latest changes"
   msgstr ""
   
  @@ -564,26 +357,21 @@
   
   # ../plugin/FastSearch.php:125
   #: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:38
  -#: ../wikilib.php:1380
  +#: ../wikilib.php:1430
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr "Trouv? %s s'appariant avec %s sur un total de %s pages"
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1382
  +#: ../wikilib.php:1432
   msgid "page"
   msgstr ""
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1382
  +#: ../wikilib.php:1432
   msgid "pages"
   msgstr ""
   
  -# ../plugin/format.php:16
  -#: ../plugin/format.php:17
  -msgid "It is a XML format !"
  -msgstr "C'est un format XML !"
  -
   # ../wikilib.php:1479
   #: ../plugin/FullSearch.php:15
   #, c-format
  @@ -600,7 +388,8 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4458
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4496
  +#: ../wikilib.php:948
   msgid "Refresh"
   msgstr ""
   
  @@ -617,8 +406,8 @@
   " ou cliquer sur %s pour faire une recherche en texte int?gral de cette "
   "page.\n"
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5348 ../wiki.php:5355
  -#: ../wikilib.php:1390
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5439 ../wiki.php:5446
  +#: ../wikilib.php:1440
   msgid "here"
   msgstr ""
   
  @@ -634,7 +423,7 @@
   msgid "Case-sensitive searching"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:77 ../wikilib.php:2685 ../wikilib.php:2746
  +#: ../plugin/FullSearch.php:77 ../wikilib.php:2762 ../wikilib.php:2824
   msgid "Go"
   msgstr ""
   
  @@ -643,13 +432,13 @@
   msgstr ""
   
   # ../wikilib.php:1483
  -#: ../plugin/FullSearch.php:144 ../wikilib.php:2706
  +#: ../plugin/FullSearch.php:144 ../wikilib.php:2783
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "Expression de recherche \"%s\" invalide"
   
   # ../plugin/TwinPages.php:20
  -#: ../plugin/Gallery.php:245 ../plugin/UploadedFiles.php:266
  +#: ../plugin/Gallery.php:245 ../plugin/UploadedFiles.php:285
   msgid "No files found"
   msgstr ""
   
  @@ -664,8 +453,8 @@
   msgstr ""
   
   # ../wikilib.php:769
  -#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1446
  -#: ../wikilib.php:1590
  +#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1496
  +#: ../wikilib.php:1640
   #, c-format
   msgid "Go back or return to %s"
   msgstr "Revenir en arri?re ou retourner ? %s"
  @@ -679,10 +468,6 @@
   msgid "Comments is added"
   msgstr ""
   
  -#: ../plugin/html2pdf.php:30
  -msgid "The TCPDF class not found!"
  -msgstr ""
  -
   #: ../plugin/ImportUrl.php:132
   msgid "Import URL"
   msgstr ""
  @@ -692,215 +477,782 @@
   msgstr ""
   
   # ../wiki.php:2110
  -#: ../plugin/Info.php:34
  +#: ../plugin/Info.php:35
   msgid "Revision History"
   msgstr "Historique de r?vision"
   
  -#: ../plugin/Info.php:37
  +#: ../plugin/Info.php:38
   msgid "ver."
   msgstr ""
   
   # ../locale/dummy.php:3
  -#: ../plugin/Info.php:37
  +#: ../plugin/Info.php:38
   msgid "Date and Changes"
   msgstr ""
   
   # ../wikilib.php:734
  -#: ../plugin/Info.php:38
  +#: ../plugin/Info.php:39
   msgid "Editor"
   msgstr ""
   
  -#: ../plugin/Info.php:41
  +#: ../plugin/Info.php:42
   msgid "actions"
   msgstr ""
   
  -#: ../plugin/Info.php:42
  +#: ../plugin/Info.php:43
   msgid "admin."
   msgstr ""
   
  -#: ../plugin/Info.php:58
  +#: ../plugin/Info.php:59
   msgid "Show all revisions"
   msgstr ""
   
  -#: ../plugin/Info.php:91
  +#: ../plugin/Info.php:92
   msgid "Yesterday"
   msgstr ""
   
  -#: ../plugin/Info.php:92
  +#: ../plugin/Info.php:93
   #, c-format
   msgid "%s days ago"
   msgstr ""
   
  -#: ../plugin/Info.php:94
  +#: ../plugin/Info.php:95
   #, c-format
   msgid "%s hours ago"
   msgstr ""
   
  -#: ../plugin/Info.php:96
  +#: ../plugin/Info.php:97
   #, c-format
   msgid "%s min ago"
   msgstr ""
   
  -#: ../plugin/Info.php:166
  +#: ../plugin/Info.php:176
   msgid "diff"
   msgstr ""
   
  -#: ../plugin/Info.php:189 ../plugin/rename.php:80
  +#: ../plugin/Info.php:199 ../plugin/rename.php:80
   msgid "show only"
   msgstr ""
   
  -#: ../plugin/Info.php:193
  +#: ../plugin/Info.php:203
   msgid "purge"
   msgstr ""
   
  -# ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
  -#: ../plugin/JME.php:64
  -#, c-format
  -msgid "Draw a new molecule '%s'"
  +# ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
  +#: ../plugin/JME.php:64
  +#, c-format
  +msgid "Draw a new molecule '%s'"
  +msgstr ""
  +
  +# ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
  +#: ../plugin/JME.php:66
  +msgid "Draw a new molecule"
  +msgstr ""
  +
  +# ../plugin/Vote.php:109
  +#: ../plugin/JME.php:104
  +msgid "Molecule successfully added"
  +msgstr ""
  +
  +#: ../plugin/JME.php:110
  +msgid "Edit Molecule"
  +msgstr ""
  +
  +#: ../plugin/JME.php:140
  +msgid "Edit new molecule"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:414
  +msgid "hits"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:422
  +msgid "add keywords"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:425
  +msgid "Update keywords"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:427
  +msgid "Add keywords"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:428
  +msgid "Add as common words"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:429
  +msgid "Unselect all"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:430
  +msgid "Suggest new Keywords"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:439
  +msgid "select language"
  +msgstr ""
  +
  +# ../wiki.php:3009
  +#: ../plugin/Keywords.php:458
  +msgid "You are not able to add keywords."
  +msgstr ""
  +
  +# ../wikilib.php:814
  +#: ../plugin/Keywords.php:472
  +#, c-format
  +msgid "%s is not found."
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:588
  +msgid "Common words are updated"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:635
  +#, c-format
  +msgid "Keywords for %s are updated"
  +msgstr ""
  +
  +# ../plugin/quicklinks.php:38
  +#: ../plugin/Keywords.php:661
  +msgid "Keywords are updated"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:663
  +msgid "There are no changes found"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:676
  +msgid "Update with these Keywords"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:696 ../plugin/Keywords.php:700
  +msgid "alphabetically"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:697
  +msgid "by frequency"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:699
  +msgid "by size"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:705
  +#, c-format
  +msgid "Keywords list %s (or %s)"
  +msgstr ""
  +
  +#: ../plugin/Keywords.php:710
  +#, c-format
  +msgid "Select keywords for %s"
  +msgstr ""
  +
  +# ../wikilib.php:672 ../wikilib.php:1472
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1317 ../wikilib.php:2770
  +msgid "Use more specific text"
  +msgstr "Utiliser un texte plus sp?cifique"
  +
  +#: ../plugin/LikePages.php:109
  +msgid "These pages share a similar word..."
  +msgstr ""
  +
  +#: ../plugin/LikePages.php:123
  +msgid "These pages share an initial or final title word..."
  +msgstr ""
  +
  +#: ../plugin/LikePages.php:143
  +msgid "If you can't find this page, "
  +msgstr ""
  +
  +# ../plugin/man_get.php:23
  +#: ../plugin/LikePages.php:148
  +msgid "No similar pages found"
  +msgstr ""
  +
  +#: ../plugin/LikePages.php:150
  +msgid "You are strongly recommened to find it in MetaWikis. "
  +msgstr ""
  +
  +#: ../plugin/LikePages.php:153
  +#, c-format
  +msgid "Like \"%s\""
  +msgstr ""
  +
  +#: ../plugin/LikePages.php:156
  +msgid "Search all MetaWikis"
  +msgstr ""
  +
  +#: ../plugin/LikePages.php:157
  +msgid "Slow Slow"
  +msgstr ""
  +
  +# ../plugin/man_get.php:23
  +#: ../plugin/Navigation.php:19
  +msgid "No Index page found"
  +msgstr ""
  +
  +# ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
  +#: ../plugin/OeKaki.php:36
  +msgid "Draw a new picture"
  +msgstr ""
  +
  +# ../plugin/OeKaki.php:118
  +#: ../plugin/OeKaki.php:118
  +msgid "Create new picture"
  +msgstr "Cr?er un nouveau dessin"
  +
  +# ../plugin/OeKaki.php:125
  +#: ../plugin/OeKaki.php:127
  +msgid "Edit Image"
  +msgstr "?diter l'image"
  +
  +#: ../plugin/PluginInfo.php:29
  +#, c-format
  +msgid "Total %s plugin activated."
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:34
  +#, c-format
  +msgid "%s is internal plugin."
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:36
  +#, c-format
  +msgid "%s plugin is not found."
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:50 ../plugin/admin.php:136
  +msgid "Description"
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:54
  +msgid "Version"
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:56 ../plugin/admin.php:139
  +msgid "Author"
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:58 ../plugin/admin.php:141
  +msgid "License"
  +msgstr ""
  +
  +# ../plugin/VisualTour.php:59
  +#: ../plugin/PluginInfo.php:60 ../plugin/admin.php:143
  +msgid "Depend"
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:64 ../plugin/admin.php:147
  +msgid "URL"
  +msgstr ""
  +
  +#: ../plugin/Rating.php:58
  +msgid "Awful!"
  +msgstr ""
  +
  +#: ../plugin/Rating.php:59
  +msgid "Not the worst ever."
  +msgstr ""
  +
  +#: ../plugin/Rating.php:60
  +msgid "Not bad!"
  +msgstr ""
  +
  +#: ../plugin/Rating.php:61
  +msgid "Useful!"
  +msgstr ""
  +
  +#: ../plugin/Rating.php:62
  +msgid "Very Gooood!"
  +msgstr ""
  +
  +# ../plugin/Vote.php:66 ../plugin/security/needtologin.php:25
  +# ../plugin/security/needtologin.php:35
  +#: ../plugin/Rating.php:84 ../plugin/Vote.php:67
  +#: ../plugin/security/community.php:26 ../plugin/security/community.php:36
  +#: ../plugin/security/community.php:46 ../plugin/security/community.php:61
  +#: ../plugin/security/mustlogin.php:29 ../plugin/security/mustlogin.php:40
  +#: ../plugin/security/mustlogin.php:51 ../plugin/security/mustlogin.php:67
  +#: ../plugin/security/needtologin.php:29 ../plugin/security/needtologin.php:40
  +#: ../plugin/security/needtologin.php:51 ../plugin/security/userbased.php:62
  +msgid "Please Login or make your ID on this Wiki ;)"
  +msgstr "Merci de vous connecter ou de construire un ID sur ce Wiki ;)"
  +
  +#: ../plugin/Rating.php:188
  +msgid "Invalid rating request !"
  +msgstr ""
  +
  +# ../plugin/Vote.php:109
  +#: ../plugin/Rating.php:203
  +msgid "Rating successfully !"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:125
  +msgid "Show changes for "
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:130
  +msgid "days ago"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:213 ../plugin/pagelist.php:117
  +#: ../plugin/pagelist.php:134
  +#, c-format
  +msgid "[%sh %sm ago]"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:231
  +msgid "set bookmark"
  +msgstr ""
  +
  +#: ../plugin/SWFUpload.php:136
  +msgid "Files..."
  +msgstr ""
  +
  +#: ../plugin/SWFUpload.php:137
  +msgid "Upload"
  +msgstr ""
  +
  +#: ../plugin/SWFUpload.php:138
  +msgid "Cancel All files"
  +msgstr ""
  +
  +# ../plugin/man_get.php:23
  +#: ../plugin/SlideShow.php:28
  +msgid "No page found"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:102
  +msgid "Start:"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:111
  +msgid "End:"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:121 ../plugin/pageview.php:75
  +msgid "Next:"
  +msgstr ""
  +
  +# ../wikilib.php:482
  +#: ../plugin/SlideShow.php:131
  +msgid "Prev:"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:138
  +msgid "Return"
  +msgstr ""
  +
  +# ../wikilib.php:484
  +#: ../plugin/SystemInfo.php:16
  +msgid "Number of Pages"
  +msgstr ""
  +
  +#: ../plugin/SystemInfo.php:17
  +msgid "HTTP Server Version"
  +msgstr ""
  +
  +#: ../plugin/SystemInfo.php:18
  +msgid "MoniWiki Version"
  +msgstr ""
  +
  +#: ../plugin/SystemInfo.php:19
  +msgid "PHP Version"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:57
  +msgid "BackLinks"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:61
  +msgid "Keywords"
  +msgstr ""
  +
  +# ../plugin/minilogin.php:30
  +#: ../plugin/Tour.php:70
  +#, c-format
  +msgid " from %s"
  +msgstr ""
  +
  +# ../plugin/minilogin.php:30
  +#: ../plugin/Tour.php:73
  +#, c-format
  +msgid "%s Tour %s"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:121
  +msgid "links"
  +msgstr ""
  +
  +# ../plugin/VisualTour.php:59
  +#: ../plugin/Tour.php:123
  +msgid "deeper"
  +msgstr ""
  +
  +# ../plugin/minilogin.php:30
  +#: ../plugin/Tour.php:124
  +#, c-format
  +msgid "More %s or more %s"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:139
  +#, c-format
  +msgid "Total %d related keywords"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:142
  +#, c-format
  +msgid "Total %d related pages"
  +msgstr ""
  +
  +# ../plugin/TwinPages.php:13
  +#: ../plugin/TwinPages.php:13
  +#, c-format
  +msgid "TwinPages of %s"
  +msgstr "TwinPages de %s"
  +
  +# ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  +#: ../plugin/TwinPages.php:19 ../wiki.php:5425
  +msgid "See [TwinPages]: "
  +msgstr "Voir [TwinPages]: "
  +
  +# ../plugin/TwinPages.php:20
  +#: ../plugin/TwinPages.php:21
  +msgid "No TwinPages found."
  +msgstr "Aucune TwinPages trouv?"
  +
  +# ../wikilib.php:519
  +#: ../plugin/UploadFile.php:147 ../plugin/UploadFile.php:161
  +#, c-format
  +msgid "The %s type of %s is not allowed to upload"
  +msgstr ""
  +
  +# ../wikilib.php:519
  +#: ../plugin/UploadFile.php:163
  +#, c-format
  +msgid "%s is not allowed to upload"
  +msgstr "%s n'est pas une action valide"
  +
  +#: ../plugin/UploadFile.php:218
  +#, c-format
  +msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:251
  +msgid "Please check your php.ini setting"
  +msgstr ""
  +
  +# ../wikilib.php:887
  +#: ../plugin/UploadFile.php:261
  +#, c-format
  +msgid "File \"%s\" is uploaded successfully"
  +msgstr ""
  +
  +# ../wikilib.php:887
  +#: ../plugin/UploadFile.php:300
  +msgid "Files are uploaded successfully"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:344
  +msgid "Replace original file"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:345
  +msgid "Rename if it already exist"
  +msgstr ""
  +
  +# ../plugin/rename.php:27
  +#: ../plugin/UploadFile.php:350 ../plugin/rename.php:69
  +msgid "Rename"
  +msgstr "Renommer"
  +
  +# ../plugin/minilogin.php:30
  +#: ../plugin/UploadFile.php:358
  +#, c-format
  +msgid "or %s."
  +msgstr "ou %s"
  +
  +#: ../plugin/UploadFile.php:358 ../plugin/UploadForm.php:99
  +msgid "Upload files"
  +msgstr ""
  +
  +#: ../plugin/UploadForm.php:16
  +msgid "Choose File"
  +msgstr ""
  +
  +#: ../plugin/UploadForm.php:97
  +msgid "add files"
  +msgstr ""
  +
  +#: ../plugin/UploadForm.php:98
  +msgid "add a file"
  +msgstr ""
  +
  +#: ../plugin/UploadForm.php:100
  +msgid "Reset"
  +msgstr ""
  +
  +#: ../plugin/UploadForm.php:101
  +msgid "Attachments"
  +msgstr ""
  +
  +# ../plugin/rename.php:27
  +#: ../plugin/UploadedFiles.php:299
  +msgid "File name"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:300
  +msgid "Size"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:301
  +msgid "Date"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:351
  +msgid "Next page &raquo;"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:353
  +msgid "&laquo; First page"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:445
  +#, c-format
  +msgid "Total %d files"
  +msgstr ""
  +
  +# ../plugin/rename.php:36
  +#: ../plugin/UploadedFiles.php:450 ../plugin/rcsimport.php:32
  +#: ../plugin/rcsimport.php:88 ../plugin/rename.php:77 ../plugin/revert.php:82
  +#: ../plugin/userinfo.php:37 ../wikilib.php:1156 ../wikilib.php:2081
  +msgid "Password"
  +msgstr "Mot de passe"
  +
  +# ../wikilib.php:550
  +#: ../plugin/UploadedFiles.php:451 ../wikilib.php:1134
  +msgid "Delete selected files"
  +msgstr "Effacer les fichiers s?lectionn?s"
  +
  +# ../plugin/VisualTour.php:55
  +#: ../plugin/VisualTour.php:133
  +msgid "Normal"
  +msgstr ""
  +
  +# ../plugin/VisualTour.php:57
  +#: ../plugin/VisualTour.php:135
  +msgid "Wider"
  +msgstr "Plus large"
  +
  +# ../plugin/VisualTour.php:59
  +#: ../plugin/VisualTour.php:137
  +msgid "Deeper"
  +msgstr "Plus profond"
  +
  +# ../plugin/Vote.php:109
  +#: ../plugin/Vote.php:113
  +msgid "Voted successfully"
  +msgstr "Vote r?ussi"
  +
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2520
  +msgid "Others"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:15
  +msgid "ACL is not enabled on this Wiki"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:21
  +msgid "Your ACL Info"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:23
  +msgid "You are wiki owner"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:25
  +msgid "You are wiki master"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:27
  +msgid "Allowed actions"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:32
  +msgid "Denied actions"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:38
  +msgid "Protected actions"
  +msgstr ""
  +
  +#: ../plugin/admin.php:191
  +msgid "Enabled plugins"
   msgstr ""
   
  -# ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
  -#: ../plugin/JME.php:66
  -msgid "Draw a new molecule"
  +#: ../plugin/admin.php:193
  +msgid "Disabled plugins"
   msgstr ""
   
  -# ../plugin/Vote.php:109
  -#: ../plugin/JME.php:104
  -msgid "Molecule successfully added"
  +#: ../plugin/admin.php:201
  +msgid "Enabled processors"
   msgstr ""
   
  -#: ../plugin/JME.php:110
  -msgid "Edit Molecule"
  +#: ../plugin/admin.php:203
  +msgid "Disabled processors"
   msgstr ""
   
  -#: ../plugin/JME.php:140
  -msgid "Edit new molecule"
  +#: ../plugin/admin.php:206
  +msgid "Plugin/Processor settings are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:332
  -msgid "hits"
  +#: ../plugin/admin.php:212
  +msgid "Enable/disable plugins and processors"
   msgstr ""
   
  -#: ../plugin/Keywords.php:340
  -msgid "add keywords"
  +# ../locale/dummy.php:7
  +#: ../plugin/atom.php:64 ../plugin/rss_rc.php:62
  +msgid "show changes"
   msgstr ""
   
  -#: ../plugin/Keywords.php:343
  -msgid "Update keywords"
  +# ../wikilib.php:887
  +#: ../plugin/backup.php:42
  +msgid "Your wiki is backuped successfully"
   msgstr ""
   
  -#: ../plugin/Keywords.php:345
  -msgid "Add keywords"
  +#: ../plugin/backup.php:49
  +msgid "Backup failed !"
   msgstr ""
   
  -#: ../plugin/Keywords.php:346
  -msgid "Add as common words"
  +# ../plugin/backup.php:46
  +#: ../plugin/backup.php:54
  +msgid "Did you want to Backup your wiki ?"
  +msgstr "Voulez vous faire une sauvegarde de votre wiki ?"
  +
  +#: ../plugin/bbs.php:493
  +msgid "This bbs does not exists yet. Please save this page first"
   msgstr ""
   
  -#: ../plugin/Keywords.php:347
  -msgid "Unselect all"
  +#: ../plugin/bbs.php:617
  +msgid "No"
   msgstr ""
   
  -#: ../plugin/Keywords.php:348
  -msgid "Suggest new Keywords"
  +# ../locale/dummy.php:6 ../wiki.php:2553
  +#: ../plugin/bbs.php:626
  +msgid "Edit"
   msgstr ""
   
  -#: ../plugin/Keywords.php:357
  -msgid "select language"
  +# ../locale/dummy.php:5
  +#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1157
  +msgid "Delete"
   msgstr ""
   
  -# ../wiki.php:3009
  -#: ../plugin/Keywords.php:376
  -msgid "You are not able to add keywords."
  +#: ../plugin/bbs.php:657
  +msgid "Please check article numbers."
   msgstr ""
   
  -# ../wikilib.php:814
  -#: ../plugin/Keywords.php:390
  -#, c-format
  -msgid "%s is not found."
  +#: ../plugin/bbs.php:737
  +msgid "More"
   msgstr ""
   
  -#: ../plugin/Keywords.php:506
  -msgid "Common words are updated"
  +#: ../plugin/bbs.php:782
  +msgid "New"
   msgstr ""
   
  -#: ../plugin/Keywords.php:553
  +# ../plugin/rename.php:27
  +#: ../plugin/bbs.php:784
  +msgid "Read"
  +msgstr "Renommer"
  +
  +#: ../plugin/bbs.php:800
   #, c-format
  -msgid "Keywords for %s are updated"
  +msgid "Total %s articles."
   msgstr ""
   
  -# ../plugin/quicklinks.php:38
  -#: ../plugin/Keywords.php:579
  -msgid "Keywords are updated"
  +# ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
  +# c-format
  +#: ../plugin/bbs.php:836
  +#, c-format
  +msgid "Your IP address is not allowed to %s at this BBS"
   msgstr ""
   
  -#: ../plugin/Keywords.php:581
  -msgid "There are no changes found"
  +#: ../plugin/bbs.php:890
  +msgid "Successfully deleted."
   msgstr ""
   
  -#: ../plugin/Keywords.php:594
  -msgid "Update with these Keywords"
  +#: ../plugin/bbs.php:922
  +msgid "Fail to post comment."
   msgstr ""
   
  -#: ../plugin/Keywords.php:614 ../plugin/Keywords.php:618
  -msgid "alphabetically"
  +# ../wikilib.php:540
  +#: ../plugin/bbs.php:932
  +#, c-format
  +msgid "The article %s will be deleted."
   msgstr ""
   
  -#: ../plugin/Keywords.php:615
  -msgid "by frequency"
  +#: ../plugin/bbs.php:974
  +msgid "Invalid HomePage address."
   msgstr ""
   
  -#: ../plugin/Keywords.php:617
  -msgid "by size"
  +#: ../plugin/bbs.php:987
  +msgid "No Name error."
   msgstr ""
   
  -#: ../plugin/Keywords.php:623
  -#, c-format
  -msgid "Keywords list %s (or %s)"
  +#: ../plugin/bbs.php:997
  +msgid "No Subject error."
   msgstr ""
   
  -#: ../plugin/Keywords.php:628
  -#, c-format
  -msgid "Select keywords for %s"
  +# ../plugin/Vote.php:109
  +#: ../plugin/bbs.php:1025
  +msgid "New post added successfully"
   msgstr ""
   
  -# ../wikilib.php:672 ../wikilib.php:1472
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1271 ../wikilib.php:2693
  -msgid "Use more specific text"
  -msgstr "Utiliser un texte plus sp?cifique"
  -
  -#: ../plugin/LikePages.php:109
  -msgid "These pages share a similar word..."
  +#: ../plugin/cacheadmin.php:105
  +msgid "You are not WikiMaster!!"
   msgstr ""
   
  -#: ../plugin/LikePages.php:123
  -msgid "These pages share an initial or final title word..."
  +#: ../plugin/cacheadmin.php:120
  +msgid "Clear cache dirs"
   msgstr ""
   
  -#: ../plugin/LikePages.php:143
  -msgid "If you can't find this page, "
  +#: ../plugin/chat.php:36
  +msgid "No messages"
   msgstr ""
   
  -# ../plugin/man_get.php:23
  -#: ../plugin/LikePages.php:148
  -msgid "No similar pages found"
  +#: ../plugin/chmod.php:18
  +#, c-format
  +msgid "Permission of \"%s\" changed !"
   msgstr ""
   
  -#: ../plugin/LikePages.php:150
  -msgid "You are strongly recommened to find it in MetaWikis. "
  -msgstr ""
  +# ../wiki.php:3021
  +#: ../plugin/chmod.php:24
  +#, c-format
  +msgid "Fail to chmod \"%s\" !"
  +msgstr "Impossible de pouvoir \"%s\" !"
   
  -#: ../plugin/LikePages.php:153
  +#: ../plugin/chmod.php:35
   #, c-format
  -msgid "Like \"%s\""
  +msgid "Change permission of \"%s\""
   msgstr ""
   
  -#: ../plugin/LikePages.php:156
  -msgid "Search all MetaWikis"
  +# ../plugin/css.php:29 ../plugin/css.php:37
  +#: ../plugin/css.php:33 ../plugin/css.php:41
  +msgid "Back to UserPreferences"
  +msgstr "Retour ? UserPreferences"
  +
  +#: ../plugin/css.php:67
  +msgid "CSS disabled !"
   msgstr ""
   
  -#: ../plugin/LikePages.php:157
  -msgid "Slow Slow"
  +# ../plugin/format.php:16
  +#: ../plugin/format.php:17
  +msgid "It is a XML format !"
  +msgstr "C'est un format XML !"
  +
  +#: ../plugin/html2pdf.php:30
  +msgid "The TCPDF class not found!"
   msgstr ""
   
   # ../plugin/login.php:24
  @@ -944,7 +1296,7 @@
   msgstr ""
   
   # ../plugin/minilogin.php:22 ../wikilib.php:1076
  -#: ../plugin/minilogin.php:18 ../wikilib.php:2081
  +#: ../plugin/minilogin.php:18 ../wikilib.php:2162
   msgid "Login or Join"
   msgstr "Se connecter ou se joindre ?"
   
  @@ -979,11 +1331,6 @@
   msgid "Local translation files are successfully translated !\n"
   msgstr ""
   
  -# ../plugin/man_get.php:23
  -#: ../plugin/Navigation.php:19
  -msgid "No Index page found"
  -msgstr ""
  -
   # ../plugin/OeKaki.php:118
   #: ../plugin/new.php:13 ../plugin/new.php:28
   msgid "Create a new page"
  @@ -998,54 +1345,10 @@
   msgid "Normalize this page name"
   msgstr ""
   
  -# ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
  -#: ../plugin/OeKaki.php:36
  -msgid "Draw a new picture"
  -msgstr ""
  -
  -# ../plugin/OeKaki.php:118
  -#: ../plugin/OeKaki.php:118
  -msgid "Create new picture"
  -msgstr "Cr?er un nouveau dessin"
  -
  -# ../plugin/OeKaki.php:125
  -#: ../plugin/OeKaki.php:127
  -msgid "Edit Image"
  -msgstr "?diter l'image"
  -
  -#: ../plugin/pagelist.php:109 ../plugin/pagelist.php:126
  -#: ../plugin/RecentChanges.php:212
  -#, c-format
  -msgid "[%sh %sm ago]"
  -msgstr ""
  -
   #: ../plugin/pageview.php:70
   msgid "First:"
   msgstr ""
   
  -#: ../plugin/pageview.php:75 ../plugin/SlideShow.php:121
  -msgid "Next:"
  -msgstr ""
  -
  -#: ../plugin/PluginInfo.php:29
  -#, c-format
  -msgid "Total %s plugin activated."
  -msgstr ""
  -
  -#: ../plugin/PluginInfo.php:34
  -#, c-format
  -msgid "%s is internal plugin."
  -msgstr ""
  -
  -#: ../plugin/PluginInfo.php:36
  -#, c-format
  -msgid "%s plugin is not found."
  -msgstr ""
  -
  -#: ../plugin/PluginInfo.php:54
  -msgid "Version"
  -msgstr ""
  -
   #: ../plugin/print.php:24
   #, c-format
   msgid "Retrieved from %s"
  @@ -1065,7 +1368,7 @@
   msgid "Save Changes"
   msgstr ""
   
  -#: ../plugin/processor/monimarkup.php:502 ../wiki.php:3846
  +#: ../plugin/processor/monimarkup.php:507 ../wiki.php:3881
   msgid "edit"
   msgstr ""
   
  @@ -1098,66 +1401,12 @@
   # ../plugin/quicklinks.php:50
   #: ../plugin/quicklinks.php:50
   msgid "Do you want to customize your quicklinks ?"
  -msgstr "Voulez vous mettre ? jour vos liens rapides ?"
  -
  -#: ../plugin/Rating.php:58
  -msgid "Awful!"
  -msgstr ""
  -
  -#: ../plugin/Rating.php:59
  -msgid "Not the worst ever."
  -msgstr ""
  -
  -#: ../plugin/Rating.php:60
  -msgid "Not bad!"
  -msgstr ""
  -
  -#: ../plugin/Rating.php:61
  -msgid "Useful!"
  -msgstr ""
  -
  -#: ../plugin/Rating.php:62
  -msgid "Very Gooood!"
  -msgstr ""
  -
  -# ../plugin/Vote.php:66 ../plugin/security/needtologin.php:25
  -# ../plugin/security/needtologin.php:35
  -#: ../plugin/Rating.php:84 ../plugin/security/community.php:26
  -#: ../plugin/security/community.php:36 ../plugin/security/community.php:46
  -#: ../plugin/security/community.php:61 ../plugin/security/mustlogin.php:29
  -#: ../plugin/security/mustlogin.php:40 ../plugin/security/mustlogin.php:51
  -#: ../plugin/security/mustlogin.php:67 ../plugin/security/needtologin.php:29
  -#: ../plugin/security/needtologin.php:40 ../plugin/security/needtologin.php:51
  -#: ../plugin/security/userbased.php:62 ../plugin/Vote.php:67
  -msgid "Please Login or make your ID on this Wiki ;)"
  -msgstr "Merci de vous connecter ou de construire un ID sur ce Wiki ;)"
  -
  -#: ../plugin/Rating.php:188
  -msgid "Invalid rating request !"
  -msgstr ""
  -
  -# ../plugin/Vote.php:109
  -#: ../plugin/Rating.php:203
  -msgid "Rating successfully !"
  -msgstr ""
  -
  -# ../plugin/Blog.php:178
  -#: ../plugin/rawblog.php:63 ../plugin/rawblog.php:73
  -#, c-format
  -msgid "Delete Blog entry \"%s\""
  -msgstr ""
  -
  -# ../plugin/rename.php:36
  -#: ../plugin/rcsimport.php:32 ../plugin/rcsimport.php:88
  -#: ../plugin/rename.php:77 ../plugin/revert.php:82
  -#: ../plugin/UploadedFiles.php:429 ../plugin/userinfo.php:37
  -#: ../wikilib.php:1110 ../wikilib.php:2000
  -msgid "Password"
  -msgstr "Mot de passe"
  -
  -# ../plugin/rename.php:27
  -#: ../plugin/rcsimport.php:76
  -msgid "Page name"
  +msgstr "Voulez vous mettre ? jour vos liens rapides ?"
  +
  +# ../plugin/Blog.php:178
  +#: ../plugin/rawblog.php:63 ../plugin/rawblog.php:73
  +#, c-format
  +msgid "Delete Blog entry \"%s\""
   msgstr ""
   
   # ../wikilib.php:803
  @@ -1187,6 +1436,11 @@
   msgid "Only WikiMaster can execute rcs"
   msgstr ""
   
  +# ../plugin/rename.php:27
  +#: ../plugin/rcsimport.php:76
  +msgid "Page name"
  +msgstr ""
  +
   #: ../plugin/rcspurge.php:24
   msgid "Invalid rcspurge range"
   msgstr ""
  @@ -1208,18 +1462,6 @@
   msgid "BlogChanges at %s"
   msgstr "ModificationsBlog at %s"
   
  -#: ../plugin/RecentChanges.php:124
  -msgid "Show changes for "
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:129
  -msgid "days ago"
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:230
  -msgid "set bookmark"
  -msgstr ""
  -
   #: ../plugin/referer.php:139
   msgid "Referer history"
   msgstr ""
  @@ -1263,11 +1505,6 @@
   msgid "New name:"
   msgstr ""
   
  -# ../plugin/rename.php:27
  -#: ../plugin/rename.php:69 ../plugin/UploadFile.php:350
  -msgid "Rename"
  -msgstr "Renommer"
  -
   #: ../plugin/rename.php:74
   msgid "Rename and fix Backlinks"
   msgstr ""
  @@ -1278,7 +1515,7 @@
   msgstr "Seulement le WikiMaster peut renommer cette page"
   
   # ../plugin/rename.php:39 ../wikilib.php:588
  -#: ../plugin/rename.php:79 ../wikilib.php:1156
  +#: ../plugin/rename.php:79 ../wikilib.php:1202
   msgid "with revision history"
   msgstr "avec l'historique de r?vision"
   
  @@ -1326,7 +1563,7 @@
   msgid "Select a tarball file to restore"
   msgstr ""
   
  -#: ../plugin/revert.php:23 ../wiki.php:5350
  +#: ../plugin/revert.php:23 ../wiki.php:5441
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr ""
  @@ -1354,7 +1591,7 @@
   msgid "Are you really want to revert this page ?"
   msgstr ""
   
  -#: ../plugin/revert.php:74
  +#: ../plugin/revert.php:74 ../wikilib.php:963
   msgid "Summary"
   msgstr ""
   
  @@ -1490,28 +1727,6 @@
   msgid "Trackback sent"
   msgstr "Trackback envoy?"
   
  -# ../plugin/man_get.php:23
  -#: ../plugin/SlideShow.php:28
  -msgid "No page found"
  -msgstr ""
  -
  -#: ../plugin/SlideShow.php:102
  -msgid "Start:"
  -msgstr ""
  -
  -#: ../plugin/SlideShow.php:111
  -msgid "End:"
  -msgstr ""
  -
  -# ../wikilib.php:482
  -#: ../plugin/SlideShow.php:131
  -msgid "Prev:"
  -msgstr ""
  -
  -#: ../plugin/SlideShow.php:138
  -msgid "Return"
  -msgstr ""
  -
   #: ../plugin/subscribe.php:24 ../plugin/subscribe.php:28
   msgid "You did'nt subscribed any pages yet."
   msgstr ""
  @@ -1570,35 +1785,6 @@
   msgid "Subscribed pages"
   msgstr ""
   
  -#: ../plugin/SWFUpload.php:136
  -msgid "Files..."
  -msgstr ""
  -
  -#: ../plugin/SWFUpload.php:137
  -msgid "Upload"
  -msgstr ""
  -
  -#: ../plugin/SWFUpload.php:138
  -msgid "Cancel All files"
  -msgstr ""
  -
  -# ../wikilib.php:484
  -#: ../plugin/SystemInfo.php:16
  -msgid "Number of Pages"
  -msgstr ""
  -
  -#: ../plugin/SystemInfo.php:17
  -msgid "HTTP Server Version"
  -msgstr ""
  -
  -#: ../plugin/SystemInfo.php:18
  -msgid "MoniWiki Version"
  -msgstr ""
  -
  -#: ../plugin/SystemInfo.php:19
  -msgid "PHP Version"
  -msgstr ""
  -
   # ../plugin/theme.php:24
   #: ../plugin/theme.php:29
   msgid "Theme cleared. Goto UserPreferences."
  @@ -1626,51 +1812,6 @@
   msgid "Invalid use of ticket"
   msgstr ""
   
  -#: ../plugin/Tour.php:81
  -msgid "BackLinks"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:85
  -msgid "Keywords"
  -msgstr ""
  -
  -# ../plugin/minilogin.php:30
  -#: ../plugin/Tour.php:94
  -#, c-format
  -msgid " from %s"
  -msgstr ""
  -
  -# ../plugin/minilogin.php:30
  -#: ../plugin/Tour.php:97
  -#, c-format
  -msgid "%s Tour %s"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:156
  -msgid "links"
  -msgstr ""
  -
  -# ../plugin/VisualTour.php:59
  -#: ../plugin/Tour.php:158
  -msgid "deeper"
  -msgstr ""
  -
  -# ../plugin/minilogin.php:30
  -#: ../plugin/Tour.php:159
  -#, c-format
  -msgid "More %s or more %s"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:174
  -#, c-format
  -msgid "Total %d related keywords"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:177
  -#, c-format
  -msgid "Total %d related pages"
  -msgstr ""
  -
   # ../plugin/trackback.php:54
   #: ../plugin/trackback.php:53
   msgid "TrackBack is not activated !"
  @@ -1703,103 +1844,6 @@
   msgid "No TrackBack entry found for %s"
   msgstr "Aucune entr?e de TrackBack d?tect? pour %s"
   
  -# ../plugin/TwinPages.php:13
  -#: ../plugin/TwinPages.php:13
  -#, c-format
  -msgid "TwinPages of %s"
  -msgstr "TwinPages de %s"
  -
  -# ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../plugin/TwinPages.php:19 ../wiki.php:5334
  -msgid "See [TwinPages]: "
  -msgstr "Voir [TwinPages]: "
  -
  -# ../plugin/TwinPages.php:20
  -#: ../plugin/TwinPages.php:21
  -msgid "No TwinPages found."
  -msgstr "Aucune TwinPages trouv?"
  -
  -# ../plugin/rename.php:27
  -#: ../plugin/UploadedFiles.php:280
  -msgid "File name"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:281
  -msgid "Size"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:282
  -msgid "Date"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:330
  -msgid "Next page &raquo;"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:332
  -msgid "&laquo; First page"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:424
  -#, c-format
  -msgid "Total %d files"
  -msgstr ""
  -
  -# ../wikilib.php:550
  -#: ../plugin/UploadedFiles.php:430 ../wikilib.php:1088
  -msgid "Delete selected files"
  -msgstr "Effacer les fichiers s?lectionn?s"
  -
  -# ../wikilib.php:519
  -#: ../plugin/UploadFile.php:147 ../plugin/UploadFile.php:161
  -#, c-format
  -msgid "The %s type of %s is not allowed to upload"
  -msgstr ""
  -
  -# ../wikilib.php:519
  -#: ../plugin/UploadFile.php:163
  -#, c-format
  -msgid "%s is not allowed to upload"
  -msgstr "%s n'est pas une action valide"
  -
  -#: ../plugin/UploadFile.php:218
  -#, c-format
  -msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:251
  -msgid "Please check your php.ini setting"
  -msgstr ""
  -
  -# ../wikilib.php:887
  -#: ../plugin/UploadFile.php:261
  -#, c-format
  -msgid "File \"%s\" is uploaded successfully"
  -msgstr ""
  -
  -# ../wikilib.php:887
  -#: ../plugin/UploadFile.php:300
  -msgid "Files are uploaded successfully"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:344
  -msgid "Replace original file"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:345
  -msgid "Rename if it already exist"
  -msgstr ""
  -
  -# ../plugin/minilogin.php:30
  -#: ../plugin/UploadFile.php:358
  -#, c-format
  -msgid "or %s."
  -msgstr "ou %s"
  -
  -#: ../plugin/UploadFile.php:358
  -msgid "Upload files"
  -msgstr ""
  -
   #: ../plugin/userform.php:35 ../plugin/userform.php:38
   msgid "Successfully confirmed"
   msgstr ""
  @@ -1854,7 +1898,7 @@
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../plugin/userform.php:107 ../wikilib.php:2151
  +#: ../plugin/userform.php:107 ../wikilib.php:2232
   msgid "E-mail new password"
   msgstr ""
   
  @@ -1945,8 +1989,8 @@
   msgid "You are not allowed to register on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5288
  -#: ../wiki.php:5299
  +#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5379
  +#: ../wiki.php:5390
   msgid "Please contact WikiMasters"
   msgstr ""
   
  @@ -2060,26 +2104,6 @@
   msgid "User \"%s\" are deleted !"
   msgstr ""
   
  -# ../plugin/VisualTour.php:55
  -#: ../plugin/VisualTour.php:133
  -msgid "Normal"
  -msgstr ""
  -
  -# ../plugin/VisualTour.php:57
  -#: ../plugin/VisualTour.php:135
  -msgid "Wider"
  -msgstr "Plus large"
  -
  -# ../plugin/VisualTour.php:59
  -#: ../plugin/VisualTour.php:137
  -msgid "Deeper"
  -msgstr "Plus profond"
  -
  -# ../plugin/Vote.php:109
  -#: ../plugin/Vote.php:113
  -msgid "Voted successfully"
  -msgstr "Vote r?ussi"
  -
   #: ../plugin/whois.php:119
   #, c-format
   msgid "Could not connect to %s server"
  @@ -2091,165 +2115,165 @@
   msgid "Whois search result for %s"
   msgstr ""
   
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2439
  -msgid "Others"
  -msgstr ""
  -
   # ../wiki.php:850
  -#: ../wiki.php:1238
  +#: ../wiki.php:1249
   #, c-format
   msgid "Rename %s to %s"
   msgstr "Renommer %s en %s"
   
   # ../wikilib.php:803
  -#: ../wiki.php:1658
  +#: ../wiki.php:1671
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
   # ../plugin/restore.php:27
  -#: ../wiki.php:1668
  +#: ../wiki.php:1681
   msgid "File does not exist"
   msgstr "Erreur : l'archive n'existe pas"
   
   # ../plugin/restore.php:27
  -#: ../wiki.php:2043
  +#: ../wiki.php:2057
   #, c-format
   msgid "File '%s' does not exist."
   msgstr ""
   
   # ../wikilib.php:521
  -#: ../wiki.php:2919 ../wiki.php:2930 ../wiki.php:5528
  +#: ../wiki.php:2947 ../wiki.php:2958 ../wiki.php:5619
   msgid "Invalid ajax action."
   msgstr ""
   
  -#: ../wiki.php:3427
  +#: ../wiki.php:3456
   msgid "Tags:"
   msgstr ""
   
   # ../wiki.php:1824
  -#: ../wiki.php:3455
  +#: ../wiki.php:3484
   #, c-format
   msgid "See %s"
   msgstr "Voir %s"
   
   # ../wiki.php:1824
  -#: ../wiki.php:3455
  +#: ../wiki.php:3484
   #, c-format
   msgid "TwinPages"
   msgstr ""
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../wiki.php:3460
  +#: ../wiki.php:3489
   msgid "See [TwinPages]:"
   msgstr "Voir [TwinPages]: "
   
  -#: ../wiki.php:4026
  +#: ../wiki.php:4061
   msgid "Sister Sites Index"
   msgstr ""
   
   # ../locale/dummy.php:6 ../wiki.php:2553
  -#: ../wiki.php:4454 ../locale/dummy.php:6
  +#: ../wiki.php:4492 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "?ditionTexte"
   
   # ../wiki.php:2555
  -#: ../wiki.php:4456
  +#: ../wiki.php:4494
   msgid "NotEditable"
   msgstr "Pas?ditable"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wiki.php:4460 ../locale/dummy.php:6
  +#: ../wiki.php:4498 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "MontrePage"
   
   # ../locale/dummy.php:3 ../locale/dummy.php:5 ../wiki.php:2558
  -#: ../wiki.php:4461 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4499 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "TrouvePage"
   
  -#: ../wiki.php:4868
  +#: ../wiki.php:4938
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5287
  +#: ../wiki.php:5202
  +msgid "Someone logged in at another place !"
  +msgstr ""
  +
  +#: ../wiki.php:5378
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5298
  +#: ../wiki.php:5389
   msgid "You are blocked in this wiki"
   msgstr ""
   
   # ../wiki.php:2945 ../wiki.php:2948
  -#: ../wiki.php:5336 ../wiki.php:5345 ../wikilib.php:1370
  +#: ../wiki.php:5427 ../wiki.php:5436 ../wikilib.php:1420
   msgid "Create this page"
   msgstr "Cr?er cette page"
   
   # ../wikilib.php:816
  -#: ../wiki.php:5347
  +#: ../wiki.php:5438
   #, c-format
   msgid "%s has saved revisions"
   msgstr "%s est sauvegard?"
   
   # ../wiki.php:2950
  -#: ../wiki.php:5348 ../wiki.php:5355
  +#: ../wiki.php:5439 ../wiki.php:5446
   #, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr ""
   
  -#: ../wiki.php:5353
  +#: ../wiki.php:5444
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr ""
   
  -#: ../wiki.php:5360
  +#: ../wiki.php:5451
   msgid "Please try to search with another word"
   msgstr ""
   
   # ../wiki.php:2956
  -#: ../wiki.php:5372
  +#: ../wiki.php:5463
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr "%s ou alternativement, utiliser un de ces mod?les de page :\n"
   
  -#: ../wiki.php:5375
  +#: ../wiki.php:5466
   msgid "You have no templates"
   msgstr ""
   
   # ../wikilib.php:427
  -#: ../wiki.php:5377
  +#: ../wiki.php:5468
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
   
  -#: ../wiki.php:5388
  +#: ../wiki.php:5479
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
   # ../wikilib.php:521
  -#: ../wiki.php:5530
  +#: ../wiki.php:5621
   msgid "Invalid macro action."
   msgstr ""
   
   # ../wiki.php:3009
  -#: ../wiki.php:5540
  +#: ../wiki.php:5631
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "Vous n'?tes pas autoris? ? '%s'"
   
   # ../wiki.php:3021
  -#: ../wiki.php:5560
  +#: ../wiki.php:5651
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "Impossible de pouvoir \"%s\" !"
   
   # ../wiki.php:3024
  -#: ../wiki.php:5563
  +#: ../wiki.php:5654
   msgid "Please enter the valid password"
   msgstr "Merci d'entrer un mot de passe valide"
   
   # ../wikilib.php:368
  -#: ../wikilib.php:656
  +#: ../wikilib.php:658
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -2283,169 +2307,167 @@
   
   # ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
   # c-format
  -#: ../wikilib.php:693
  +#: ../wikilib.php:695
   msgid "You are not allowed to edit this page !"
   msgstr ""
   
  -#: ../wikilib.php:699
  +#: ../wikilib.php:702
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
   # ../wikilib.php:425
  -#: ../wikilib.php:824
  +#: ../wikilib.php:827
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   "Utiliser un des mod?les de pages qui suivent pour une premi?recr?ation :\n"
   
   # ../wikilib.php:427
  -#: ../wikilib.php:826
  +#: ../wikilib.php:829
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr ""
   
  -#: ../wikilib.php:830
  +#: ../wikilib.php:833
   msgid "Merge"
   msgstr ""
   
  -#: ../wikilib.php:831
  +#: ../wikilib.php:834
   msgid "Merge manually"
   msgstr ""
   
  -#: ../wikilib.php:832
  +#: ../wikilib.php:835
   msgid "Ignore conflicts"
   msgstr ""
   
   # ../wikilib.php:445
  -#: ../wikilib.php:859
  +#: ../wikilib.php:862
   msgid "ReduceEditor"
   msgstr "R?duire?diteur"
   
  -#: ../wikilib.php:860
  +#: ../wikilib.php:863
   msgid "EnlargeEditor"
   msgstr ""
   
   # ../locale/dummy.php:6 ../wikilib.php:448
  -#: ../wikilib.php:864 ../locale/dummy.php:6
  +#: ../wikilib.php:867 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
   # ../wikilib.php:449
  -#: ../wikilib.php:866
  +#: ../wikilib.php:869
   msgid "HelpOnEditing"
   msgstr ""
   
   # ../wikilib.php:462
  -#: ../wikilib.php:898
  +#: ../wikilib.php:901
   #, c-format
   msgid "Describe %s here"
   msgstr "D?crire %s ici"
   
  -# ../wikilib.php:476
  -#: ../wikilib.php:918
  -msgid "--Select Category--"
  -msgstr "-- S?lectionner une cat?gorie"
  +#: ../wikilib.php:923
  +msgid "Category"
  +msgstr ""
   
  -#: ../wikilib.php:928
  -msgid "Minor edit"
  +#: ../wikilib.php:931
  +msgid " Select "
   msgstr ""
   
  -# ../wikilib.php:484
  -#: ../wikilib.php:932
  -msgid "Summary of Change"
  -msgstr "Sommaire des modifications"
  +#: ../wikilib.php:942
  +msgid "Minor edit"
  +msgstr ""
   
   # ../wikilib.php:443
  -#: ../wikilib.php:937
  +#: ../wikilib.php:968
   msgid "Skip to preview"
   msgstr "Aller ? la pr?visualisation"
   
   # ../wikilib.php:483 ../wikilib.php:1079
  -#: ../wikilib.php:949 ../wikilib.php:2084 ../wikilib.php:2138
  +#: ../wikilib.php:981 ../wikilib.php:2165 ../wikilib.php:2219
   msgid "Save"
   msgstr "Sauvegarder"
   
   # ../wikilib.php:517
  -#: ../wikilib.php:1022
  +#: ../wikilib.php:1068
   msgid "406 Not Acceptable"
   msgstr ""
   
   # ../wikilib.php:519
  -#: ../wikilib.php:1027
  +#: ../wikilib.php:1073
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s n'est pas une action valide"
   
   # ../wikilib.php:521
  -#: ../wikilib.php:1029
  +#: ../wikilib.php:1075
   msgid "Is it valid action ?"
   msgstr "Est-ce que c'est une action valide ?"
   
   # ../wikilib.php:540
  -#: ../wikilib.php:1076
  +#: ../wikilib.php:1122
   #, c-format
   msgid "File '%s' is deleted"
   msgstr "Le fichier '%s' est effac?"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:1078
  +#: ../wikilib.php:1124
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr "Impossible d'effacer '%s'"
   
   # ../wikilib.php:545
  -#: ../wikilib.php:1083
  +#: ../wikilib.php:1129
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr "Le r?pertoire '%s' est effac?"
   
   # ../wikilib.php:547
  -#: ../wikilib.php:1085
  +#: ../wikilib.php:1131
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr "Impossible d'effacer le r?pertoire '%s'"
   
   # ../wikilib.php:557 ../wikilib.php:559
  -#: ../wikilib.php:1095 ../wikilib.php:1115
  +#: ../wikilib.php:1141 ../wikilib.php:1161
   msgid "No files are selected !"
   msgstr "Aucun fichier n'est s?lectionn? !"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:1108
  +#: ../wikilib.php:1154
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
   # ../wikilib.php:550
  -#: ../wikilib.php:1112
  +#: ../wikilib.php:1158
   msgid "Delete selected file"
   msgstr ""
   
   # ../wikilib.php:575
  -#: ../wikilib.php:1133
  +#: ../wikilib.php:1179
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr "\"%s\" est effac? !"
   
   # ../wikilib.php:581
  -#: ../wikilib.php:1148
  +#: ../wikilib.php:1194
   msgid "Please delete this file manually."
   msgstr "Merci d'effacer ce fichier manuellement."
   
   # ../wikilib.php:583
  -#: ../wikilib.php:1150
  +#: ../wikilib.php:1196
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "Effacer \"%s\" ?"
   
   # ../plugin/minilogin.php:30
  -#: ../wikilib.php:1203
  +#: ../wikilib.php:1249
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
   # ../wiki.php:2950
  -#: ../wikilib.php:1372
  +#: ../wikilib.php:1422
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
  @@ -2453,134 +2475,134 @@
   "page.\n"
   
   # ../wiki.php:2950
  -#: ../wikilib.php:1372
  +#: ../wikilib.php:1422
   msgid "title"
   msgstr "titre"
   
  -#: ../wikilib.php:1386
  +#: ../wikilib.php:1436
   msgid "Please try to fulltext search"
   msgstr ""
   
   # ../wiki.php:2950
  -#: ../wikilib.php:1389
  +#: ../wikilib.php:1439
   #, c-format
   msgid "You can also click %s to fulltext search.\n"
   msgstr ""
   
   # ../wikilib.php:743
  -#: ../wikilib.php:1434 ../wikilib.php:1535
  +#: ../wikilib.php:1484 ../wikilib.php:1585
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "Quelqu'un a sauvegard? la page tandis que vous ?ditiez %s"
   
  -#: ../wikilib.php:1440
  +#: ../wikilib.php:1490
   msgid "Section edit is not valid for non-exists page."
   msgstr ""
   
   # ../wikilib.php:803
  -#: ../wikilib.php:1473 ../wikilib.php:1651
  +#: ../wikilib.php:1523 ../wikilib.php:1732
   msgid "mail does not supported by default."
   msgstr "La messagerie n'est pas support? par d?faut."
   
   # ../wikilib.php:807
  -#: ../wikilib.php:1477 ../wikilib.php:1655
  +#: ../wikilib.php:1527 ../wikilib.php:1736
   msgid "Sent notification mail."
   msgstr "Des notifications par messagerie ont ?t? envoy?es."
   
   # ../wikilib.php:809
  -#: ../wikilib.php:1479 ../wikilib.php:1657
  +#: ../wikilib.php:1529 ../wikilib.php:1738
   msgid "No subscribers found."
   msgstr "Aucun abonn? trouv?."
   
   # ../wikilib.php:814
  -#: ../wikilib.php:1484 ../wikilib.php:1662
  +#: ../wikilib.php:1534 ../wikilib.php:1743
   #, c-format
   msgid "%s is not editable"
   msgstr "%s n'est pas ?ditable"
   
   # ../wikilib.php:816
  -#: ../wikilib.php:1486 ../wikilib.php:1664
  +#: ../wikilib.php:1536 ../wikilib.php:1745
   #, c-format
   msgid "%s is saved"
   msgstr "%s est sauvegard?"
   
   # ../wikilib.php:734
  -#: ../wikilib.php:1526
  +#: ../wikilib.php:1576
   msgid "Goto Editor"
   msgstr "Aller ? l'?diteur"
   
  -#: ../wikilib.php:1540
  +#: ../wikilib.php:1590
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr ""
   
   # ../plugin/Vote.php:109
  -#: ../wikilib.php:1541
  +#: ../wikilib.php:1591
   #, c-format
   msgid "%s is merged successfully"
   msgstr ""
   
  -#: ../wikilib.php:1545
  +#: ../wikilib.php:1595
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1546
  +#: ../wikilib.php:1596
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr ""
   
  -#: ../wikilib.php:1547
  +#: ../wikilib.php:1597
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1548
  +#: ../wikilib.php:1598
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1553
  +#: ../wikilib.php:1603
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr ""
   
   # ../wikilib.php:581
  -#: ../wikilib.php:1554
  +#: ../wikilib.php:1604
   msgid "Please resolve conflicts manually."
   msgstr ""
   
  -#: ../wikilib.php:1557
  +#: ../wikilib.php:1607
   #, c-format
   msgid "Force merging for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1558
  +#: ../wikilib.php:1608
   msgid "Please be careful, you could damage useful information."
   msgstr ""
   
   # ../wikilib.php:755
  -#: ../wikilib.php:1572
  +#: ../wikilib.php:1622
   msgid "Conflict error!"
   msgstr "Erreur de conflit !"
   
   # ../wikilib.php:748 ../wikilib.php:777
  -#: ../wikilib.php:1611
  +#: ../wikilib.php:1692
   #, c-format
   msgid "Preview of %s"
   msgstr "Pr?visualisation de %s"
   
   # ../wikilib.php:838
  -#: ../wikilib.php:1696
  +#: ../wikilib.php:1777
   msgid "Nobody subscribed to this page."
   msgstr "Personne n'est abonn? ? cette page, aucun mail envoy?"
   
   # ../wikilib.php:860
  -#: ../wikilib.php:1715
  +#: ../wikilib.php:1796
   #, c-format
   msgid "%s page is modified"
   msgstr "la page %s est modifi?"
   
   # ../wikilib.php:870
  -#: ../wikilib.php:1744
  +#: ../wikilib.php:1825
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
  @@ -2591,146 +2613,146 @@
   "\n"
   
   # ../wikilib.php:883
  -#: ../wikilib.php:1757
  +#: ../wikilib.php:1838
   msgid "Send notification mails to all subscribers"
   msgstr "Envoyez un mail de notification ? tous les abonn?s"
   
   # ../wikilib.php:887
  -#: ../wikilib.php:1762
  +#: ../wikilib.php:1843
   msgid "Mails are sent successfully"
   msgstr "Mail envoy? avec succ?s"
   
   # ../wikilib.php:888
  -#: ../wikilib.php:1763
  +#: ../wikilib.php:1844
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr "un mail a ?t? envoy? ? '%s'"
   
   # ../wiki.php:3021
  -#: ../wikilib.php:1765
  +#: ../wikilib.php:1846
   msgid "Fail to send mail"
   msgstr ""
   
   # ../wikilib.php:803
  -#: ../wikilib.php:1776
  +#: ../wikilib.php:1857
   msgid "This wiki does not support sendmail"
   msgstr ""
   
   # ../wikilib.php:1483
  -#: ../wikilib.php:1874
  +#: ../wikilib.php:1955
   msgid "Invalid regular expression !"
   msgstr ""
   
  -#: ../wikilib.php:1898
  +#: ../wikilib.php:1979
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:1901
  +#: ../wikilib.php:1982
   msgid "Infinite loop possible!"
   msgstr ""
   
   # ../plugin/login.php:26 ../wikilib.php:1051
  -#: ../wikilib.php:2016
  +#: ../wikilib.php:2097
   msgid "Login"
   msgstr "Se connecter"
   
  -#: ../wikilib.php:2017
  +#: ../wikilib.php:2098
   msgid "OpenID"
   msgstr ""
   
  -#: ../wikilib.php:2029 ../wikilib.php:2156
  +#: ../wikilib.php:2110 ../wikilib.php:2237
   msgid "ID"
   msgstr ""
   
   # ../wikilib.php:1070
  -#: ../wikilib.php:2064 ../wikilib.php:2149
  +#: ../wikilib.php:2145 ../wikilib.php:2230
   msgid "Make profile"
   msgstr "Faire un profil"
   
   # ../wikilib.php:1071
  -#: ../wikilib.php:2066
  +#: ../wikilib.php:2147
   msgid "password again"
   msgstr "mot de passe de nouveau"
   
  -#: ../wikilib.php:2068 ../wikilib.php:2117
  +#: ../wikilib.php:2149 ../wikilib.php:2198
   msgid "Mail"
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../wikilib.php:2090
  +#: ../wikilib.php:2171
   msgid "New password"
   msgstr "Nouveau mot de passe"
   
  -#: ../wikilib.php:2095
  +#: ../wikilib.php:2176
   msgid "Nickname"
   msgstr ""
   
  -#: ../wikilib.php:2118
  +#: ../wikilib.php:2199
   msgid "Time Zone"
   msgstr ""
   
   # ../wikilib.php:1088
  -#: ../wikilib.php:2127
  +#: ../wikilib.php:2208
   msgid "logout"
   msgstr "se d?connecter"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wikilib.php:2440
  +#: ../wikilib.php:2521
   msgid "Show all"
   msgstr ""
   
   # ../locale/dummy.php:4
  -#: ../wikilib.php:2582
  +#: ../wikilib.php:2659
   msgid "Contents"
   msgstr ""
   
   # ../wikilib.php:1479
  -#: ../wikilib.php:2702
  +#: ../wikilib.php:2779
   #, c-format
   msgid "Title search for \"%s\""
   msgstr "Recherche de titre pour \"%s\""
   
  -#: ../monisetup.php:35
  +#: ../monisetup.php:38
   msgid "Check a dba configuration"
   msgstr ""
   
   # ../wikilib.php:575
  -#: ../monisetup.php:47
  +#: ../monisetup.php:50
   #, c-format
   msgid "%s is selected."
   msgstr ""
   
  -#: ../monisetup.php:54
  +#: ../monisetup.php:57
   msgid "Check a AcceptPathInfo setting for Apache 2.x.xx"
   msgstr ""
   
  -#: ../monisetup.php:61 ../monisetup.php:67
  +#: ../monisetup.php:64 ../monisetup.php:70
   msgid "Off"
   msgstr ""
   
  -#: ../monisetup.php:69
  +#: ../monisetup.php:72
   msgid "On"
   msgstr ""
   
  -#: ../monisetup.php:243
  +#: ../monisetup.php:426
   msgid ""
   "Please change the permission of some directories writable on your server to "
   "initialize your Wiki."
   msgstr ""
   
  -#: ../monisetup.php:245
  +#: ../monisetup.php:428
   #, c-format
   msgid ""
   "If you want a more safe wiki, try to change the permission of directories "
   "with %s."
   msgstr ""
   
  -#: ../monisetup.php:248
  +#: ../monisetup.php:431
   msgid ""
   "or use <tt>monisetup.sh</tt> and select 777 or <font color='red'>2777</font>"
   msgstr ""
   
  -#: ../monisetup.php:250
  +#: ../monisetup.php:433
   msgid ""
   "After execute one of above two commands, just <a href='monisetup.php'>reload "
   "this <tt>monisetup.php</tt></a> would make a new initial <tt>config.php</tt> "
  @@ -2738,197 +2760,219 @@
   msgstr ""
   
   # ../plugin/rename.php:27
  -#: ../monisetup.php:251
  +#: ../monisetup.php:434
   msgid "Reload"
   msgstr ""
   
  -#: ../monisetup.php:254
  +#: ../monisetup.php:437
   msgid "WARN"
   msgstr ""
   
  -#: ../monisetup.php:255
  +#: ../monisetup.php:438
   msgid ""
   "Please execute the following command after you have completed your "
   "configuration."
   msgstr ""
   
  +#: ../monisetup.php:442 ../monisetup.php:1268
  +msgid "WARN: You have to enter your Admin Password"
  +msgstr ""
  +
  +#: ../monisetup.php:445
  +msgid ""
  +"WARN: If you have any permission to execute 'secure.sh'. press the following "
  +"button"
  +msgstr ""
  +
  +#: ../monisetup.php:447
  +msgid "Protect my config.php now!"
  +msgstr ""
  +
   # ../wikilib.php:814
  -#: ../monisetup.php:266
  +#: ../monisetup.php:464
   #, c-format
   msgid "FATAL: %s directory is not writable"
   msgstr ""
   
   # ../wikilib.php:581
  -#: ../monisetup.php:267
  +#: ../monisetup.php:465
   msgid "Please execute the following command."
   msgstr ""
   
   # ../wikilib.php:814
  -#: ../monisetup.php:286
  +#: ../monisetup.php:484
   #, c-format
   msgid "%s directory is not writable"
   msgstr ""
   
   # ../wikilib.php:814
  -#: ../monisetup.php:303
  +#: ../monisetup.php:501
   #, c-format
   msgid "%s is not writable"
   msgstr ""
   
   # ../plugin/rename.php:14
  -#: ../monisetup.php:310 ../monisetup.php:316
  +#: ../monisetup.php:508 ../monisetup.php:514
   #, c-format
   msgid "%s is created now"
   msgstr ""
   
   # ../wikilib.php:814
  -#: ../monisetup.php:326
  +#: ../monisetup.php:524
   #, c-format
   msgid "%s is writable"
   msgstr ""
   
  -#: ../monisetup.php:343
  +#: ../monisetup.php:541
   #, c-format
   msgid ""
   "If you want to check .htaccess file please delete '%s' file and reload it."
   msgstr ""
   
  -#: ../monisetup.php:346
  +#: ../monisetup.php:544
   msgid "Security check for 'upload_dir'."
   msgstr ""
   
  -#: ../monisetup.php:378
  +#: ../monisetup.php:576
   msgid ".htaccess for 'imgs_dir'."
   msgstr ""
   
  -#: ../monisetup.php:448
  +#: ../monisetup.php:646
   msgid "Fail"
   msgstr ""
   
  -#: ../monisetup.php:454
  +#: ../monisetup.php:652
   msgid "Unable to write .htaccess"
   msgstr ""
   
  -#: ../monisetup.php:550
  +#: ../monisetup.php:756
   msgid "Click here to toggle all"
   msgstr ""
   
   # ../wikilib.php:550
  -#: ../monisetup.php:551
  +#: ../monisetup.php:757
   msgid "Deselect all"
   msgstr ""
   
  -#: ../monisetup.php:556
  +#: ../monisetup.php:762
   msgid "Please be careful to deselect these pages"
   msgstr ""
   
  -#: ../monisetup.php:831
  +#: ../monisetup.php:1056
   msgid "MoniWiki"
   msgstr ""
   
  -#: ../monisetup.php:834
  +#: ../monisetup.php:1059
   msgid "'config.php' is not writable !"
   msgstr ""
   
  -#: ../monisetup.php:835
  +#: ../monisetup.php:1060
   msgid ""
   "Please execute <tt>'monisetup.sh'</tt> or <tt>chmod a+w config.php</tt> "
   "first to change your settings."
   msgstr ""
   
  +#: ../monisetup.php:1062
  +msgid "Unprotect my config.php"
  +msgstr ""
  +
  +#: ../monisetup.php:1095
  +msgid "config.php is protected now !"
  +msgstr ""
  +
   # ../wiki.php:3024
  -#: ../monisetup.php:862
  +#: ../monisetup.php:1100 ../monisetup.php:1119
   msgid "Invalid password error !"
   msgstr ""
   
  -#: ../monisetup.php:863
  +#: ../monisetup.php:1101 ../monisetup.php:1120
   msgid ""
   "If you can't remember your admin password, delete password entry in the "
   "'config.php' and restart 'monisetup'"
   msgstr ""
   
  -#: ../monisetup.php:895
  +#: ../monisetup.php:1106
  +msgid "config.php is unprotected now !"
  +msgstr ""
  +
  +#: ../monisetup.php:1152
   #, c-format
   msgid "Updated Configutations for this %s"
   msgstr ""
   
   # ../wikilib.php:887
  -#: ../monisetup.php:914
  +#: ../monisetup.php:1170
   msgid "Configurations are saved successfully"
   msgstr ""
   
  -#: ../monisetup.php:915
  +#: ../monisetup.php:1171
   msgid ""
   "WARN: Please check <a href='monisetup.php'> your saved configurations</a>"
   msgstr ""
   
  -#: ../monisetup.php:916
  +#: ../monisetup.php:1172
   msgid "If all is good, change 'config.php' permission as 644."
   msgstr ""
   
  -#: ../monisetup.php:928
  +#: ../monisetup.php:1184
   msgid "Welcome to MoniWiki ! This is your first installation"
   msgstr ""
   
  -#: ../monisetup.php:935
  +#: ../monisetup.php:1194
   msgid "Default settings are loaded..."
   msgstr ""
   
   # ../wikilib.php:887
  -#: ../monisetup.php:944
  +#: ../monisetup.php:1202
   msgid "Initial configurations are saved successfully."
   msgstr ""
   
  -#: ../monisetup.php:945
  +#: ../monisetup.php:1203
   msgid "Goto <a href='monisetup.php'>MoniSetup</a> again to configure details"
   msgstr ""
   
   # ../plugin/minilogin.php:30
  -#: ../monisetup.php:962 ../monisetup.php:964 ../monisetup.php:1060
  -#: ../monisetup.php:1062
  +#: ../monisetup.php:1220 ../monisetup.php:1222 ../monisetup.php:1318
  +#: ../monisetup.php:1320
   #, c-format
   msgid "goto %s"
   msgstr ""
   
   # ../wikilib.php:557 ../wikilib.php:559
  -#: ../monisetup.php:967
  +#: ../monisetup.php:1225
   msgid "No WikiSeeds are selected"
   msgstr ""
   
  -#: ../monisetup.php:978
  +#: ../monisetup.php:1236
   #, c-format
   msgid "Preview current settings for this %s"
   msgstr ""
   
  -#: ../monisetup.php:980
  +#: ../monisetup.php:1238
   #, c-format
   msgid "Read current settings for this %s"
   msgstr ""
   
  -#: ../monisetup.php:1008
  +#: ../monisetup.php:1266
   msgid "Change your settings"
   msgstr ""
   
  -#: ../monisetup.php:1010
  -msgid "WARN: You have to enter your Admin Password"
  -msgstr ""
  -
  -#: ../monisetup.php:1012 ../monisetup.php:1055
  +#: ../monisetup.php:1270 ../monisetup.php:1313
   #, c-format
   msgid "WARN: You have no WikiSeed on your %s"
   msgstr ""
   
   # ../plugin/quicklinks.php:50
  -#: ../monisetup.php:1013 ../monisetup.php:1056
  +#: ../monisetup.php:1271 ../monisetup.php:1314
   #, c-format
   msgid "If you want to put wikiseeds on your wiki %s now"
   msgstr ""
   
  -#: ../monisetup.php:1014 ../monisetup.php:1057
  +#: ../monisetup.php:1272 ../monisetup.php:1315
   msgid "Click here"
   msgstr ""
   
  -#: ../monisetup.php:1049 ../monisetup.php:1051
  +#: ../monisetup.php:1307 ../monisetup.php:1309
   msgid "Update"
   msgstr ""
   
  @@ -2982,6 +3026,14 @@
   msgid "TrackBack"
   msgstr ""
   
  +# ../wikilib.php:476
  +#~ msgid "--Select Category--"
  +#~ msgstr "-- S?lectionner une cat?gorie"
  +
  +# ../wikilib.php:484
  +#~ msgid "Summary of Change"
  +#~ msgstr "Sommaire des modifications"
  +
   # ../wiki.php:2950
   #, fuzzy
   #~ msgid "%s or click %s to search title.\n"
  
  
  
  1.31      +894 -842  moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- ko.po	9 Jan 2009 10:16:09 -0000	1.30
  +++ ko.po	13 Jul 2009 15:35:47 -0000	1.31
  @@ -5,7 +5,7 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1.3\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2009-01-09 01:09+0900\n"
  +"POT-Creation-Date: 2009-07-14 00:35+0900\n"
   "PO-Revision-Date: 2008-12-11 12:20+0900\n"
   "Last-Translator: Won-Kyu Park <wkpark@kldp.org>\n"
   "Language-Team: Won-Kyu Park <wkpark@kldp.org>\n"
  @@ -13,96 +13,20 @@
   "Content-Type: text/plain; charset=UTF-8\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  -#: ../plugin/aclinfo.php:15
  -msgid "ACL is not enabled on this Wiki"
  -msgstr "ACL이 활성화되어있지 않습니다"
  -
  -#: ../plugin/aclinfo.php:21
  -msgid "Your ACL Info"
  -msgstr "ACL 정보"
  -
  -#: ../plugin/aclinfo.php:23
  -msgid "You are wiki owner"
  -msgstr "위키 소유자입니다"
  -
  -#: ../plugin/aclinfo.php:25
  -msgid "You are wiki master"
  -msgstr "위키 관리자입니다"
  -
  -#: ../plugin/aclinfo.php:27
  -msgid "Allowed actions"
  -msgstr "허락된 액션"
  -
  -#: ../plugin/aclinfo.php:32
  -msgid "Denied actions"
  -msgstr "거부된 액션"
  -
  -#: ../plugin/aclinfo.php:38
  -msgid "Protected actions"
  -msgstr "제한된 액션"
  -
  -#: ../plugin/admin.php:136 ../plugin/PluginInfo.php:50
  -msgid "Description"
  -msgstr "설명"
  -
  -#: ../plugin/admin.php:139 ../plugin/PluginInfo.php:56
  -msgid "Author"
  -msgstr "저자"
  -
  -#: ../plugin/admin.php:141 ../plugin/PluginInfo.php:58
  -msgid "License"
  -msgstr "저작권"
  -
  -#: ../plugin/admin.php:143 ../plugin/PluginInfo.php:60
  -msgid "Depend"
  -msgstr "의존성"
  -
  -#: ../plugin/admin.php:147 ../plugin/PluginInfo.php:64
  -msgid "URL"
  -msgstr ""
  -
  -#: ../plugin/admin.php:191
  -msgid "Enabled plugins"
  -msgstr "활성화된 플러그인"
  -
  -#: ../plugin/admin.php:193
  -msgid "Disabled plugins"
  -msgstr "비활성화된 플러그인"
  -
  -#: ../plugin/admin.php:201
  -msgid "Enabled processors"
  -msgstr "활성화된 프로세서"
  -
  -#: ../plugin/admin.php:203
  -msgid "Disabled processors"
  -msgstr "비활성화된 프로세서"
  -
  -#: ../plugin/admin.php:206
  -msgid "Plugin/Processor settings are updated"
  -msgstr "플러그인/프로세서 세팅이 갱신됨"
  -
  -#: ../plugin/admin.php:212
  -msgid "Enable/disable plugins and processors"
  -msgstr "플러그인과 프로세서 활성화/비활성화"
  -
  -#: ../plugin/atom.php:64 ../plugin/rss_rc.php:62
  -msgid "show changes"
  -msgstr "바뀐점 보기"
  -
  -#: ../plugin/Attachment.php:70 ../plugin/Attachment.php:331
  +#: ../plugin/Attachment.php:70 ../plugin/Attachment.php:333
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr "새로운 첨부 \"%s\"파일 업로드"
   
  -#: ../plugin/Attachment.php:323
  +#: ../plugin/Attachment.php:325
   msgid "or paste a new png picture"
   msgstr "혹은 새 그림 붙이기"
   
  -#: ../plugin/Attachment.php:328
  +#: ../plugin/Attachment.php:330
   msgid "or draw a new gif picture"
   msgstr "혹은 새 그림 그리기"
   
  -#: ../plugin/Attachment.php:334
  +#: ../plugin/Attachment.php:336
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr "새로운 첨부파일 \"%s\"을(를) \"%s\"(으)로 업로드"
  @@ -116,140 +40,6 @@
   msgid "Translate %s to %s"
   msgstr "%s에서 %s(으)로 번역하기"
   
  -#: ../plugin/backup.php:42
  -msgid "Your wiki is backuped successfully"
  -msgstr "백업이 성공적으로 완료되었습니다"
  -
  -#: ../plugin/backup.php:49
  -msgid "Backup failed !"
  -msgstr "백업 실패 !"
  -
  -#: ../plugin/backup.php:54
  -msgid "Did you want to Backup your wiki ?"
  -msgstr "위키를 백업하시겠습니까 ?"
  -
  -#: ../plugin/bbs.php:493
  -msgid "This bbs does not exists yet. Please save this page first"
  -msgstr "현 BBS가 존재하지 않습ㄴ디ㅏ. 먼저 페이지를 저장하세요"
  -
  -#: ../plugin/bbs.php:617
  -msgid "No"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:626
  -msgid "Edit"
  -msgstr "고치기"
  -
  -#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1111
  -msgid "Delete"
  -msgstr "지우기"
  -
  -#: ../plugin/bbs.php:657
  -msgid "Please check article numbers."
  -msgstr "글번호를 확인해 주세요"
  -
  -#: ../plugin/bbs.php:737
  -msgid "More"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:782
  -msgid "New"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:784
  -msgid "Read"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:800
  -#, c-format
  -msgid "Total %s articles."
  -msgstr "총 %d 개의 글"
  -
  -#: ../plugin/bbs.php:836
  -#, c-format
  -msgid "Your IP address is not allowed to %s at this BBS"
  -msgstr "IP 주소가 '%s' BBS에서 허락되지 않았습니다."
  -
  -#: ../plugin/bbs.php:890
  -msgid "Successfully deleted."
  -msgstr "성공적으로 지워졌음."
  -
  -#: ../plugin/bbs.php:922
  -msgid "Fail to post comment."
  -msgstr "댓글 등록 실패."
  -
  -#: ../plugin/bbs.php:932
  -#, c-format
  -msgid "The article %s will be deleted."
  -msgstr "게시글 %s(이)가 지워질 것입니다."
  -
  -#: ../plugin/bbs.php:974
  -msgid "Invalid HomePage address."
  -msgstr "잘못된 홈페이지 주소."
  -
  -#: ../plugin/bbs.php:987
  -msgid "No Name error."
  -msgstr "이름이 없습ㄴ다."
  -
  -#: ../plugin/bbs.php:997
  -msgid "No Subject error."
  -msgstr "제목이 없습니다."
  -
  -#: ../plugin/bbs.php:1009 ../plugin/Comment.php:191 ../plugin/Gallery.php:174
  -#: ../wikilib.php:1459 ../wikilib.php:1605
  -msgid ""
  -"Sorry, can not save page because some messages are blocked in this wiki."
  -msgstr "죄송합니다. 특정 메시지가 금지되어 페이지를 저장할 수 없습니다."
  -
  -#: ../plugin/bbs.php:1025
  -msgid "New post added successfully"
  -msgstr "새글이 성공적으로 등록되었습니다."
  -
  -#: ../plugin/BlogChanges.php:198
  -msgid "Category: "
  -msgstr "분류: "
  -
  -#: ../plugin/BlogChanges.php:200 ../locale/dummy.php:7
  -msgid "BlogChanges"
  -msgstr "바뀐 블로그"
  -
  -#: ../plugin/BlogChanges.php:246
  -#, c-format
  -msgid "Invalid category expr \"%s\""
  -msgstr "잘못된 분류 표현식\"%s\""
  -
  -#: ../plugin/BlogChanges.php:378 ../plugin/BlogChanges.php:380
  -#: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
  -msgid "Anonymous"
  -msgstr "아무개"
  -
  -#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  -#, c-format
  -msgid "%d comment"
  -msgstr "댓글 %d개"
  -
  -#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  -#, c-format
  -msgid "%d comments"
  -msgstr "댓글 %d개"
  -
  -#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:208
  -#: ../plugin/processor/blog.php:78
  -msgid "Add comment"
  -msgstr "댓글 달기"
  -
  -#: ../plugin/BlogChanges.php:423 ../plugin/processor/blog.php:97
  -msgid "track back"
  -msgstr "트랙백"
  -
  -#: ../plugin/BlogChanges.php:443
  -msgid "Previous"
  -msgstr "이전"
  -
  -#: ../plugin/BlogChanges.php:446
  -msgid "Next"
  -msgstr "다음"
  -
   #: ../plugin/Blog.php:84
   #, c-format
   msgid "Blog cache of \"%s\" is refreshed"
  @@ -268,7 +58,7 @@
   msgid "Error: No blog entry found!"
   msgstr "오류: 블로그 항목이 없습니다!"
   
  -#: ../plugin/Blog.php:164 ../plugin/Blog.php:166 ../plugin/Comment.php:221
  +#: ../plugin/Blog.php:164 ../plugin/Blog.php:166 ../plugin/Comment.php:226
   msgid "Error: Don't make a clone!"
   msgstr "오류: 복제를 만들지 마세요!"
   
  @@ -309,11 +99,11 @@
   msgid "Title"
   msgstr "제목"
   
  -#: ../plugin/Blog.php:268 ../wikilib.php:941
  +#: ../plugin/Blog.php:268 ../wikilib.php:972
   msgid "GUI"
   msgstr ""
   
  -#: ../plugin/Blog.php:277 ../plugin/Comment.php:104
  +#: ../plugin/Blog.php:277 ../plugin/Comment.php:109
   msgid "Don't add a signature"
   msgstr "서명하지 않기"
   
  @@ -321,32 +111,50 @@
   msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
   msgstr "<b>가로선</b> ----는 블로그일 경우 적용되지 않습니다."
   
  -#: ../plugin/cacheadmin.php:105
  -msgid "You are not WikiMaster!!"
  -msgstr "위키관리자가 아닙니다!!"
  -
  -#: ../plugin/cacheadmin.php:120
  -msgid "Clear cache dirs"
  -msgstr "캐쉬 디렉토리 지우기"
  +#: ../plugin/BlogChanges.php:198
  +msgid "Category: "
  +msgstr "분류: "
   
  -#: ../plugin/chat.php:36
  -msgid "No messages"
  -msgstr "메시지 없음"
  +#: ../plugin/BlogChanges.php:200 ../locale/dummy.php:7
  +msgid "BlogChanges"
  +msgstr "바뀐 블로그"
   
  -#: ../plugin/chmod.php:18
  +#: ../plugin/BlogChanges.php:246
   #, c-format
  -msgid "Permission of \"%s\" changed !"
  -msgstr ""
  +msgid "Invalid category expr \"%s\""
  +msgstr "잘못된 분류 표현식\"%s\""
   
  -#: ../plugin/chmod.php:24
  +#: ../plugin/BlogChanges.php:378 ../plugin/BlogChanges.php:380
  +#: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
  +msgid "Anonymous"
  +msgstr "아무개"
  +
  +#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
   #, c-format
  -msgid "Fail to chmod \"%s\" !"
  -msgstr ""
  +msgid "%d comment"
  +msgstr "댓글 %d개"
   
  -#: ../plugin/chmod.php:35
  +#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
   #, c-format
  -msgid "Change permission of \"%s\""
  -msgstr ""
  +msgid "%d comments"
  +msgstr "댓글 %d개"
  +
  +#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:213
  +#: ../plugin/processor/blog.php:78
  +msgid "Add comment"
  +msgstr "댓글 달기"
  +
  +#: ../plugin/BlogChanges.php:423 ../plugin/processor/blog.php:97
  +msgid "track back"
  +msgstr "트랙백"
  +
  +#: ../plugin/BlogChanges.php:443
  +msgid "Previous"
  +msgstr "이전"
  +
  +#: ../plugin/BlogChanges.php:446
  +msgid "Next"
  +msgstr "다음"
   
   #: ../plugin/Clip.php:28
   msgid "Paste a new picture"
  @@ -368,89 +176,87 @@
   msgid "Cut & Paste a Clipboard Image"
   msgstr "클립보드의 이미지를 잘르고 붙이기"
   
  -#: ../plugin/Comment.php:87
  +#: ../plugin/Comment.php:92
   msgid "Comment"
   msgstr "댓글 달기"
   
  -#: ../plugin/Comment.php:88 ../wikilib.php:935 ../monisetup.php:1047
  +#: ../plugin/Comment.php:93 ../wikilib.php:966 ../monisetup.php:1305
   msgid "Preview"
   msgstr "미리보기"
   
  -#: ../plugin/Comment.php:102
  +#: ../plugin/Comment.php:107
   msgid "Username"
   msgstr "이름"
   
  -#: ../plugin/Comment.php:125
  +#: ../plugin/Comment.php:130
   msgid "Page is not writable"
   msgstr "쓰기가능하지 않음"
   
  -#: ../plugin/Comment.php:128
  +#: ../plugin/Comment.php:133
   msgid "You are not allowed to add a comment."
   msgstr "Comment는 허락되지 않습니다."
   
  -#: ../plugin/Comment.php:129 ../plugin/Keywords.php:377
  +#: ../plugin/Comment.php:134 ../plugin/Keywords.php:459
   msgid "Page does not exists"
   msgstr "페이지가 없습니다"
   
  -#: ../plugin/Comment.php:164 ../plugin/userform.php:118
  -#: ../plugin/userform.php:181 ../plugin/userform.php:204
  +#: ../plugin/Comment.php:169 ../plugin/userform.php:118
  +#: ../plugin/userform.php:181 ../plugin/userform.php:204 ../wikilib.php:1665
   msgid "Invalid ticket !"
   msgstr "잘못된 티켓 !"
   
  -#: ../plugin/Comment.php:169 ../plugin/userform.php:120
  -#: ../plugin/userform.php:206
  +#: ../plugin/Comment.php:174 ../plugin/userform.php:120
  +#: ../plugin/userform.php:206 ../wikilib.php:1670
   msgid "You need a ticket !"
   msgstr "티켓이 필요합니다 !"
   
  -#: ../plugin/Comment.php:197
  +#: ../plugin/Comment.php:196 ../plugin/Gallery.php:174 ../plugin/bbs.php:1009
  +#: ../wikilib.php:1509 ../wikilib.php:1686
  +msgid ""
  +"Sorry, can not save page because some messages are blocked in this wiki."
  +msgstr "죄송합니다. 특정 메시지가 금지되어 페이지를 저장할 수 없습니다."
  +
  +#: ../plugin/Comment.php:202
   msgid "Preview comment"
   msgstr "미리보기"
   
  -#: ../plugin/Comment.php:328
  +#: ../plugin/Comment.php:333
   #, c-format
   msgid "%s is commented successfully"
   msgstr "%s에 댓글이 성공적으로 첨가되었습니다"
   
  -#: ../plugin/Comment.php:329
  +#: ../plugin/Comment.php:334
   msgid "Comment added successfully"
   msgstr "댓글이 성공적으로 저장되었습니다"
   
  -#: ../plugin/css.php:33 ../plugin/css.php:41
  -msgid "Back to UserPreferences"
  -msgstr "UserPreferences로 가기"
  -
  -#: ../plugin/css.php:67
  -msgid "CSS disabled !"
  -msgstr ""
  -
  -#: ../plugin/Diff.php:207 ../plugin/Info.php:220
  +#: ../plugin/Diff.php:410 ../plugin/Info.php:230
   msgid "No older revisions available"
   msgstr "옛 버전이 없습니다"
   
  -#: ../plugin/Diff.php:212 ../plugin/Info.php:226 ../plugin/rcsexport.php:13
  +#: ../plugin/Diff.php:415 ../plugin/Info.php:236 ../plugin/rcsexport.php:13
   #: ../plugin/rcsimport.php:13
   msgid "Version info is not available in this wiki"
   msgstr "버전 정보는 현 위키에서 사용할 수 없습니다"
   
  -#: ../plugin/Diff.php:223 ../wikilib.php:1592
  +#: ../plugin/Diff.php:426 ../wikilib.php:1642
   msgid "No difference found"
   msgstr "변화가 없습니다"
   
  -#: ../plugin/Diff.php:227
  +#: ../plugin/Diff.php:430
   msgid "Difference between versions"
   msgstr "버전간의 차이점"
   
  -#: ../plugin/Diff.php:229 ../plugin/Diff.php:341
  +#: ../plugin/Diff.php:432 ../plugin/Diff.php:548
   #, c-format
   msgid "Difference between r%s and r%s"
   msgstr "r%s과 r%s의 차이점"
   
  -#: ../plugin/Diff.php:232 ../plugin/Diff.php:343
  +#: ../plugin/Diff.php:435 ../plugin/Diff.php:550
   #, c-format
   msgid "Difference between r%s and the current"
   msgstr "r%s과 현재 버전의 차이점"
   
  -#: ../plugin/Diff.php:345
  +#: ../plugin/Diff.php:552
   msgid "latest changes"
   msgstr "최근 바뀐점"
   
  @@ -499,25 +305,21 @@
   msgstr "\"%s\"을(를) 전체 찾아보기"
   
   #: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:38
  -#: ../wikilib.php:1380
  +#: ../wikilib.php:1430
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr "%3$s의 페이지중에 %1$s개가 발견되었습니다"
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1382
  +#: ../wikilib.php:1432
   msgid "page"
   msgstr "페이지"
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1382
  +#: ../wikilib.php:1432
   msgid "pages"
   msgstr "페이지"
   
  -#: ../plugin/format.php:17
  -msgid "It is a XML format !"
  -msgstr ""
  -
   #: ../plugin/FullSearch.php:15
   #, c-format
   msgid "BackLinks search for \"%s\""
  @@ -532,7 +334,8 @@
   msgid "Show Context."
   msgstr "문맥 보기."
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4458
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4496
  +#: ../wikilib.php:948
   msgid "Refresh"
   msgstr "갱신"
   
  @@ -546,8 +349,8 @@
   msgid "You can also click %s to search title.\n"
   msgstr "%s을 눌러 제목 찾기를 할 수 있습니다.\n"
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5348 ../wiki.php:5355
  -#: ../wikilib.php:1390
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5439 ../wiki.php:5446
  +#: ../wikilib.php:1440
   msgid "here"
   msgstr "여기"
   
  @@ -563,7 +366,7 @@
   msgid "Case-sensitive searching"
   msgstr "대소문자 구별"
   
  -#: ../plugin/FullSearch.php:77 ../wikilib.php:2685 ../wikilib.php:2746
  +#: ../plugin/FullSearch.php:77 ../wikilib.php:2762 ../wikilib.php:2824
   msgid "Go"
   msgstr "찾기"
   
  @@ -571,12 +374,12 @@
   msgid "Empty expression"
   msgstr "비어있는 표현식"
   
  -#: ../plugin/FullSearch.php:144 ../wikilib.php:2706
  +#: ../plugin/FullSearch.php:144 ../wikilib.php:2783
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "잘못된 찾기 표현식 \"%s\""
   
  -#: ../plugin/Gallery.php:245 ../plugin/UploadedFiles.php:266
  +#: ../plugin/Gallery.php:245 ../plugin/UploadedFiles.php:285
   msgid "No files found"
   msgstr "페이지가 없습니다"
   
  @@ -588,8 +391,8 @@
   msgid "show comments"
   msgstr "댓글 보기"
   
  -#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1446
  -#: ../wikilib.php:1590
  +#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1496
  +#: ../wikilib.php:1640
   #, c-format
   msgid "Go back or return to %s"
   msgstr "뒤로 혹은 %s(으)로 가기"
  @@ -602,10 +405,6 @@
   msgid "Comments is added"
   msgstr "댓글이 더해졌습니다"
   
  -#: ../plugin/html2pdf.php:30
  -msgid "The TCPDF class not found!"
  -msgstr "TCPDF 클래스 찾을 수 없음!"
  -
   #: ../plugin/ImportUrl.php:132
   msgid "Import URL"
   msgstr "URL 가져오기"
  @@ -614,62 +413,62 @@
   msgid "Diff"
   msgstr "변화"
   
  -#: ../plugin/Info.php:34
  +#: ../plugin/Info.php:35
   msgid "Revision History"
   msgstr "버전 히스토리"
   
  -#: ../plugin/Info.php:37
  +#: ../plugin/Info.php:38
   msgid "ver."
   msgstr "버전."
   
  -#: ../plugin/Info.php:37
  +#: ../plugin/Info.php:38
   msgid "Date and Changes"
   msgstr "날짜와 바뀐점"
   
  -#: ../plugin/Info.php:38
  +#: ../plugin/Info.php:39
   msgid "Editor"
   msgstr "고친이"
   
  -#: ../plugin/Info.php:41
  +#: ../plugin/Info.php:42
   msgid "actions"
   msgstr "액션"
   
  -#: ../plugin/Info.php:42
  +#: ../plugin/Info.php:43
   msgid "admin."
   msgstr "관리."
   
  -#: ../plugin/Info.php:58
  +#: ../plugin/Info.php:59
   msgid "Show all revisions"
   msgstr "모든 버전 보기"
   
  -#: ../plugin/Info.php:91
  +#: ../plugin/Info.php:92
   msgid "Yesterday"
   msgstr "어제"
   
  -#: ../plugin/Info.php:92
  +#: ../plugin/Info.php:93
   #, c-format
   msgid "%s days ago"
   msgstr "%s일 전"
   
  -#: ../plugin/Info.php:94
  +#: ../plugin/Info.php:95
   #, c-format
   msgid "%s hours ago"
   msgstr "%s시간 전"
   
  -#: ../plugin/Info.php:96
  +#: ../plugin/Info.php:97
   #, c-format
   msgid "%s min ago"
   msgstr "%s분 전"
   
  -#: ../plugin/Info.php:166
  +#: ../plugin/Info.php:176
   msgid "diff"
   msgstr "변경점"
   
  -#: ../plugin/Info.php:189 ../plugin/rename.php:80
  +#: ../plugin/Info.php:199 ../plugin/rename.php:80
   msgid "show only"
   msgstr "보기만 하기"
   
  -#: ../plugin/Info.php:193
  +#: ../plugin/Info.php:203
   msgid "purge"
   msgstr "삭제"
   
  @@ -694,91 +493,91 @@
   msgid "Edit new molecule"
   msgstr "새 분자 편집"
   
  -#: ../plugin/Keywords.php:332
  +#: ../plugin/Keywords.php:414
   msgid "hits"
   msgstr ""
   
  -#: ../plugin/Keywords.php:340
  +#: ../plugin/Keywords.php:422
   msgid "add keywords"
   msgstr "키워드 더하기"
   
  -#: ../plugin/Keywords.php:343
  +#: ../plugin/Keywords.php:425
   msgid "Update keywords"
   msgstr "키워드 갱신"
   
  -#: ../plugin/Keywords.php:345
  +#: ../plugin/Keywords.php:427
   msgid "Add keywords"
   msgstr "키워드 더하기"
   
  -#: ../plugin/Keywords.php:346
  +#: ../plugin/Keywords.php:428
   msgid "Add as common words"
   msgstr "일반 단어로 추가"
   
  -#: ../plugin/Keywords.php:347
  +#: ../plugin/Keywords.php:429
   msgid "Unselect all"
   msgstr "모두 선택 취소"
   
  -#: ../plugin/Keywords.php:348
  +#: ../plugin/Keywords.php:430
   msgid "Suggest new Keywords"
   msgstr "새 키워드 제안"
   
  -#: ../plugin/Keywords.php:357
  +#: ../plugin/Keywords.php:439
   msgid "select language"
   msgstr "언어 고르기"
   
  -#: ../plugin/Keywords.php:376
  +#: ../plugin/Keywords.php:458
   msgid "You are not able to add keywords."
   msgstr "키워드를 추가할 수 없습니다."
   
  -#: ../plugin/Keywords.php:390
  +#: ../plugin/Keywords.php:472
   #, c-format
   msgid "%s is not found."
   msgstr "%s을(를) 찾을 수 없습니다"
   
  -#: ../plugin/Keywords.php:506
  +#: ../plugin/Keywords.php:588
   msgid "Common words are updated"
   msgstr "일반 단어가 갱신됨"
   
  -#: ../plugin/Keywords.php:553
  +#: ../plugin/Keywords.php:635
   #, c-format
   msgid "Keywords for %s are updated"
   msgstr "%s에 대한 키워드가 갱신됨"
   
  -#: ../plugin/Keywords.php:579
  +#: ../plugin/Keywords.php:661
   msgid "Keywords are updated"
   msgstr "키워드가 갱신되었습니다"
   
  -#: ../plugin/Keywords.php:581
  +#: ../plugin/Keywords.php:663
   msgid "There are no changes found"
   msgstr "변화가 없습니다"
   
  -#: ../plugin/Keywords.php:594
  +#: ../plugin/Keywords.php:676
   msgid "Update with these Keywords"
   msgstr "키워드 갱신하기"
   
  -#: ../plugin/Keywords.php:614 ../plugin/Keywords.php:618
  +#: ../plugin/Keywords.php:696 ../plugin/Keywords.php:700
   msgid "alphabetically"
   msgstr "알파벳"
   
  -#: ../plugin/Keywords.php:615
  +#: ../plugin/Keywords.php:697
   msgid "by frequency"
   msgstr "빈도수"
   
  -#: ../plugin/Keywords.php:617
  +#: ../plugin/Keywords.php:699
   msgid "by size"
   msgstr "크기"
   
  -#: ../plugin/Keywords.php:623
  +#: ../plugin/Keywords.php:705
   #, c-format
   msgid "Keywords list %s (or %s)"
   msgstr "%s순 키워드 목록 (혹은 %s순)"
   
  -#: ../plugin/Keywords.php:628
  +#: ../plugin/Keywords.php:710
   #, c-format
   msgid "Select keywords for %s"
   msgstr "%s에 대해 키워드를 고르세요"
   
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1271 ../wikilib.php:2693
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1317 ../wikilib.php:2770
   msgid "Use more specific text"
   msgstr "좀 더 자세히 입력하세요"
   
  @@ -815,129 +614,607 @@
   msgid "Slow Slow"
   msgstr "매우 느림"
   
  -#: ../plugin/login.php:29
  -msgid "Login:"
  -msgstr "로그인:"
  +#: ../plugin/Navigation.php:19
  +msgid "No Index page found"
  +msgstr "인덱스 페이지가 없습니다"
   
  -#: ../plugin/login.php:30
  -msgid "Password:"
  -msgstr "비밀번호:"
  +#: ../plugin/OeKaki.php:36
  +msgid "Draw a new picture"
  +msgstr "새 그림 그리기"
   
  -#: ../plugin/login.php:31
  -msgid "Join"
  -msgstr "가입"
  +#: ../plugin/OeKaki.php:118
  +msgid "Create new picture"
  +msgstr "새 그림 만들기"
   
  -#: ../plugin/login.php:49 ../plugin/minilogin.php:25
  -msgid "Logout"
  -msgstr "나가기"
  +#: ../plugin/OeKaki.php:127
  +msgid "Edit Image"
  +msgstr "그림 고치기"
   
  -#: ../plugin/login.php:50 ../plugin/minilogin.php:24 ../locale/dummy.php:3
  -msgid "UserPreferences"
  -msgstr "환경설정"
  +#: ../plugin/PluginInfo.php:29
  +#, c-format
  +msgid "Total %s plugin activated."
  +msgstr "총 %d 개의 플러그인이 활성화됨"
   
  -#: ../plugin/man_get.php:17
  -msgid "No manpage selected"
  -msgstr "맨페이지가 선택되지 않았습니다"
  +#: ../plugin/PluginInfo.php:34
  +#, c-format
  +msgid "%s is internal plugin."
  +msgstr "%s은(는) 내부 플러그인입니다."
   
  -#: ../plugin/man_get.php:43
  -msgid "No manpage found"
  -msgstr "Manpage가 없습니다"
  +#: ../plugin/PluginInfo.php:36
  +#, c-format
  +msgid "%s plugin is not found."
  +msgstr "%s 플러그인을 찾을 수 없습니다"
   
  -#: ../plugin/man_get.php:122
  -msgid "Edit man page"
  -msgstr "man 페이지 고치기"
  +#: ../plugin/PluginInfo.php:50 ../plugin/admin.php:136
  +msgid "Description"
  +msgstr "설명"
   
  -#: ../plugin/minilogin.php:18 ../wikilib.php:2081
  -msgid "Login or Join"
  -msgstr "로그인 혹은 가입"
  +#: ../plugin/PluginInfo.php:54
  +msgid "Version"
  +msgstr "버전"
   
  -#: ../plugin/minilogin.php:26
  -#, c-format
  -msgid "%s or %s"
  -msgstr "%s 혹은 %s"
  +#: ../plugin/PluginInfo.php:56 ../plugin/admin.php:139
  +msgid "Author"
  +msgstr "저자"
   
  -#: ../plugin/msgfmt.php:75 ../plugin/msgfmt.php:153
  -#, c-format
  -msgid "Translation of %s"
  -msgstr "%s에대한 번역"
  +#: ../plugin/PluginInfo.php:58 ../plugin/admin.php:141
  +msgid "License"
  +msgstr "저작권"
   
  -#: ../plugin/msgfmt.php:84
  -msgid "Translations are successfully updated."
  -msgstr "번역이 성공적으로 저장되었습니다"
  +#: ../plugin/PluginInfo.php:60 ../plugin/admin.php:143
  +msgid "Depend"
  +msgstr "의존성"
   
  -#: ../plugin/msgfmt.php:86
  -msgid "Fail to save translations."
  -msgstr "번역 저장을 실패했습니다"
  +#: ../plugin/PluginInfo.php:64 ../plugin/admin.php:147
  +msgid "URL"
  +msgstr ""
   
  -#: ../plugin/msgtrans.php:23 ../plugin/userinfo.php:86
  -#, c-format
  -msgid "You are not allowed to \"%s\" !"
  -msgstr "'%s'은(는) 허락되지 않았습니다"
  +#: ../plugin/Rating.php:58
  +msgid "Awful!"
  +msgstr "최악!"
   
  -#: ../plugin/msgtrans.php:143
  -msgid "Local translation files are successfully translated !\n"
  -msgstr "번역이 성공적으로 갱신되었습니다\n"
  +#: ../plugin/Rating.php:59
  +msgid "Not the worst ever."
  +msgstr "이보다 나쁠수 없음"
   
  -#: ../plugin/Navigation.php:19
  -msgid "No Index page found"
  -msgstr "인덱스 페이지가 없습니다"
  +#: ../plugin/Rating.php:60
  +msgid "Not bad!"
  +msgstr "나쁘지 않음!"
   
  -#: ../plugin/new.php:13 ../plugin/new.php:28
  -msgid "Create a new page"
  -msgstr "페이지 만들기"
  +#: ../plugin/Rating.php:61
  +msgid "Useful!"
  +msgstr "유용함"
   
  -#: ../plugin/new.php:26
  -msgid "Page Name"
  -msgstr "페이지 이름"
  +#: ../plugin/Rating.php:62
  +msgid "Very Gooood!"
  +msgstr "매우 좋음"
   
  -#: ../plugin/new.php:27
  -msgid "Normalize this page name"
  -msgstr "페이지이름 정규화하기"
  +#: ../plugin/Rating.php:84 ../plugin/Vote.php:67
  +#: ../plugin/security/community.php:26 ../plugin/security/community.php:36
  +#: ../plugin/security/community.php:46 ../plugin/security/community.php:61
  +#: ../plugin/security/mustlogin.php:29 ../plugin/security/mustlogin.php:40
  +#: ../plugin/security/mustlogin.php:51 ../plugin/security/mustlogin.php:67
  +#: ../plugin/security/needtologin.php:29 ../plugin/security/needtologin.php:40
  +#: ../plugin/security/needtologin.php:51 ../plugin/security/userbased.php:62
  +msgid "Please Login or make your ID on this Wiki ;)"
  +msgstr "로그인하거나 ID를 만드세요 ;)"
   
  -#: ../plugin/OeKaki.php:36
  -msgid "Draw a new picture"
  -msgstr "새 그림 그리기"
  +#: ../plugin/Rating.php:188
  +msgid "Invalid rating request !"
  +msgstr ""
   
  -#: ../plugin/OeKaki.php:118
  -msgid "Create new picture"
  -msgstr "새 그림 만들기"
  +#: ../plugin/Rating.php:203
  +msgid "Rating successfully !"
  +msgstr ""
   
  -#: ../plugin/OeKaki.php:127
  -msgid "Edit Image"
  -msgstr "그림 고치기"
  +#: ../plugin/RecentChanges.php:125
  +msgid "Show changes for "
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:130
  +msgid "days ago"
  +msgstr "몇일 전"
   
  -#: ../plugin/pagelist.php:109 ../plugin/pagelist.php:126
  -#: ../plugin/RecentChanges.php:212
  +#: ../plugin/RecentChanges.php:213 ../plugin/pagelist.php:117
  +#: ../plugin/pagelist.php:134
   #, c-format
   msgid "[%sh %sm ago]"
   msgstr "[%s시간 %s분 전]"
   
  -#: ../plugin/pageview.php:70
  -msgid "First:"
  -msgstr ""
  +#: ../plugin/RecentChanges.php:231
  +msgid "set bookmark"
  +msgstr "북마크"
  +
  +#: ../plugin/SWFUpload.php:136
  +msgid "Files..."
  +msgstr "파일..."
  +
  +#: ../plugin/SWFUpload.php:137
  +msgid "Upload"
  +msgstr "올리기"
  +
  +#: ../plugin/SWFUpload.php:138
  +msgid "Cancel All files"
  +msgstr "모두 취소"
  +
  +#: ../plugin/SlideShow.php:28
  +msgid "No page found"
  +msgstr "페이지가 없습니다"
  +
  +#: ../plugin/SlideShow.php:102
  +msgid "Start:"
  +msgstr "시작:"
  +
  +#: ../plugin/SlideShow.php:111
  +msgid "End:"
  +msgstr "끝:"
   
  -#: ../plugin/pageview.php:75 ../plugin/SlideShow.php:121
  +#: ../plugin/SlideShow.php:121 ../plugin/pageview.php:75
   msgid "Next:"
   msgstr "다음:"
   
  -#: ../plugin/PluginInfo.php:29
  +#: ../plugin/SlideShow.php:131
  +msgid "Prev:"
  +msgstr "이전:"
  +
  +#: ../plugin/SlideShow.php:138
  +msgid "Return"
  +msgstr "돌아가기"
  +
  +#: ../plugin/SystemInfo.php:16
  +msgid "Number of Pages"
  +msgstr "페이지 개수"
  +
  +#: ../plugin/SystemInfo.php:17
  +msgid "HTTP Server Version"
  +msgstr "HTTP 서버 버전"
  +
  +#: ../plugin/SystemInfo.php:18
  +msgid "MoniWiki Version"
  +msgstr "모니위키 버전"
  +
  +#: ../plugin/SystemInfo.php:19
  +msgid "PHP Version"
  +msgstr "PHP 버전"
  +
  +#: ../plugin/Tour.php:57
  +msgid "BackLinks"
  +msgstr "역링크"
  +
  +#: ../plugin/Tour.php:61
  +msgid "Keywords"
  +msgstr "키워드"
  +
  +#: ../plugin/Tour.php:70
   #, c-format
  -msgid "Total %s plugin activated."
  -msgstr "총 %d 개의 플러그인이 활성화됨"
  +msgid " from %s"
  +msgstr " %s에 대한"
   
  -#: ../plugin/PluginInfo.php:34
  +#: ../plugin/Tour.php:73
   #, c-format
  -msgid "%s is internal plugin."
  -msgstr "%s은(는) 내부 플러그인입니다."
  +msgid "%s Tour %s"
  +msgstr "%2$s %1$s 여행"
   
  -#: ../plugin/PluginInfo.php:36
  +#: ../plugin/Tour.php:121
  +msgid "links"
  +msgstr "연결"
  +
  +#: ../plugin/Tour.php:123
  +msgid "deeper"
  +msgstr "깊게"
  +
  +#: ../plugin/Tour.php:124
   #, c-format
  -msgid "%s plugin is not found."
  -msgstr "%s 플러그인을 찾을 수 없습니다"
  +msgid "More %s or more %s"
  +msgstr "더 많은 %s 혹은 %s"
   
  -#: ../plugin/PluginInfo.php:54
  -msgid "Version"
  -msgstr "버전"
  +#: ../plugin/Tour.php:139
  +#, c-format
  +msgid "Total %d related keywords"
  +msgstr "%d 개의 연관된 키워드"
  +
  +#: ../plugin/Tour.php:142
  +#, c-format
  +msgid "Total %d related pages"
  +msgstr "%d 개의 연관된 페이지"
  +
  +#: ../plugin/TwinPages.php:13
  +#, c-format
  +msgid "TwinPages of %s"
  +msgstr "%s의 쌍둥이 페이지"
  +
  +#: ../plugin/TwinPages.php:19 ../wiki.php:5425
  +msgid "See [TwinPages]: "
  +msgstr ""
  +
  +#: ../plugin/TwinPages.php:21
  +msgid "No TwinPages found."
  +msgstr "쌍둥이 페이지가 없습니다"
  +
  +#: ../plugin/UploadFile.php:147 ../plugin/UploadFile.php:161
  +#, c-format
  +msgid "The %s type of %s is not allowed to upload"
  +msgstr "%s의 %s 형식은 업로드가 허락되지 않습니다"
  +
  +#: ../plugin/UploadFile.php:163
  +#, c-format
  +msgid "%s is not allowed to upload"
  +msgstr "%s은(는) 업로드가 허락되지 않습니다"
  +
  +#: ../plugin/UploadFile.php:218
  +#, c-format
  +msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
  +msgstr "파일 확장자를 \"%s\"에서 \"%s\"(으)로 바꿀 수 없음."
  +
  +#: ../plugin/UploadFile.php:251
  +msgid "Please check your php.ini setting"
  +msgstr "php.ini 세팅을 확인해보시기 바랍니다"
  +
  +#: ../plugin/UploadFile.php:261
  +#, c-format
  +msgid "File \"%s\" is uploaded successfully"
  +msgstr "\"%s\"파일이 성공적으로 올라갔습니다"
  +
  +#: ../plugin/UploadFile.php:300
  +msgid "Files are uploaded successfully"
  +msgstr "파일이 성공적으로 올라갔습니다."
  +
  +#: ../plugin/UploadFile.php:344
  +msgid "Replace original file"
  +msgstr "원본 파일 교체"
  +
  +#: ../plugin/UploadFile.php:345
  +msgid "Rename if it already exist"
  +msgstr "이미 있을경우 이름 바꿈"
  +
  +#: ../plugin/UploadFile.php:350 ../plugin/rename.php:69
  +msgid "Rename"
  +msgstr "이름바꾸기"
  +
  +#: ../plugin/UploadFile.php:358
  +#, c-format
  +msgid "or %s."
  +msgstr "혹은 %s."
  +
  +#: ../plugin/UploadFile.php:358 ../plugin/UploadForm.php:99
  +msgid "Upload files"
  +msgstr "파일올리기"
  +
  +#: ../plugin/UploadForm.php:16
  +msgid "Choose File"
  +msgstr "파일찾기"
  +
  +#: ../plugin/UploadForm.php:97
  +msgid "add files"
  +msgstr "파일추가"
  +
  +#: ../plugin/UploadForm.php:98
  +msgid "add a file"
  +msgstr "파일추가"
  +
  +#: ../plugin/UploadForm.php:100
  +msgid "Reset"
  +msgstr ""
  +
  +#: ../plugin/UploadForm.php:101
  +msgid "Attachments"
  +msgstr "첨부"
  +
  +#: ../plugin/UploadedFiles.php:299
  +msgid "File name"
  +msgstr "파일 이름"
  +
  +#: ../plugin/UploadedFiles.php:300
  +msgid "Size"
  +msgstr "크기"
  +
  +#: ../plugin/UploadedFiles.php:301
  +msgid "Date"
  +msgstr "날짜"
  +
  +#: ../plugin/UploadedFiles.php:351
  +msgid "Next page &raquo;"
  +msgstr "다음 페이지 &raquo;"
  +
  +#: ../plugin/UploadedFiles.php:353
  +msgid "&laquo; First page"
  +msgstr "&laquo; 첫 페이지"
  +
  +#: ../plugin/UploadedFiles.php:445
  +#, c-format
  +msgid "Total %d files"
  +msgstr "총 %d 개 파일"
  +
  +#: ../plugin/UploadedFiles.php:450 ../plugin/rcsimport.php:32
  +#: ../plugin/rcsimport.php:88 ../plugin/rename.php:77 ../plugin/revert.php:82
  +#: ../plugin/userinfo.php:37 ../wikilib.php:1156 ../wikilib.php:2081
  +msgid "Password"
  +msgstr "비밀번호"
  +
  +#: ../plugin/UploadedFiles.php:451 ../wikilib.php:1134
  +msgid "Delete selected files"
  +msgstr "선택된 파일 지우기"
  +
  +#: ../plugin/VisualTour.php:133
  +msgid "Normal"
  +msgstr "보통"
  +
  +#: ../plugin/VisualTour.php:135
  +msgid "Wider"
  +msgstr "넓게"
  +
  +#: ../plugin/VisualTour.php:137
  +msgid "Deeper"
  +msgstr "깊게"
  +
  +#: ../plugin/Vote.php:113
  +msgid "Voted successfully"
  +msgstr "투표가 성공되었습니다"
  +
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2520
  +msgid "Others"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:15
  +msgid "ACL is not enabled on this Wiki"
  +msgstr "ACL이 활성화되어있지 않습니다"
  +
  +#: ../plugin/aclinfo.php:21
  +msgid "Your ACL Info"
  +msgstr "ACL 정보"
  +
  +#: ../plugin/aclinfo.php:23
  +msgid "You are wiki owner"
  +msgstr "위키 소유자입니다"
  +
  +#: ../plugin/aclinfo.php:25
  +msgid "You are wiki master"
  +msgstr "위키 관리자입니다"
  +
  +#: ../plugin/aclinfo.php:27
  +msgid "Allowed actions"
  +msgstr "허락된 액션"
  +
  +#: ../plugin/aclinfo.php:32
  +msgid "Denied actions"
  +msgstr "거부된 액션"
  +
  +#: ../plugin/aclinfo.php:38
  +msgid "Protected actions"
  +msgstr "제한된 액션"
  +
  +#: ../plugin/admin.php:191
  +msgid "Enabled plugins"
  +msgstr "활성화된 플러그인"
  +
  +#: ../plugin/admin.php:193
  +msgid "Disabled plugins"
  +msgstr "비활성화된 플러그인"
  +
  +#: ../plugin/admin.php:201
  +msgid "Enabled processors"
  +msgstr "활성화된 프로세서"
  +
  +#: ../plugin/admin.php:203
  +msgid "Disabled processors"
  +msgstr "비활성화된 프로세서"
  +
  +#: ../plugin/admin.php:206
  +msgid "Plugin/Processor settings are updated"
  +msgstr "플러그인/프로세서 세팅이 갱신됨"
  +
  +#: ../plugin/admin.php:212
  +msgid "Enable/disable plugins and processors"
  +msgstr "플러그인과 프로세서 활성화/비활성화"
  +
  +#: ../plugin/atom.php:64 ../plugin/rss_rc.php:62
  +msgid "show changes"
  +msgstr "바뀐점 보기"
  +
  +#: ../plugin/backup.php:42
  +msgid "Your wiki is backuped successfully"
  +msgstr "백업이 성공적으로 완료되었습니다"
  +
  +#: ../plugin/backup.php:49
  +msgid "Backup failed !"
  +msgstr "백업 실패 !"
  +
  +#: ../plugin/backup.php:54
  +msgid "Did you want to Backup your wiki ?"
  +msgstr "위키를 백업하시겠습니까 ?"
  +
  +#: ../plugin/bbs.php:493
  +msgid "This bbs does not exists yet. Please save this page first"
  +msgstr "현 BBS가 존재하지 않습ㄴ디ㅏ. 먼저 페이지를 저장하세요"
  +
  +#: ../plugin/bbs.php:617
  +msgid "No"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:626
  +msgid "Edit"
  +msgstr "고치기"
  +
  +#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1157
  +msgid "Delete"
  +msgstr "지우기"
  +
  +#: ../plugin/bbs.php:657
  +msgid "Please check article numbers."
  +msgstr "글번호를 확인해 주세요"
  +
  +#: ../plugin/bbs.php:737
  +msgid "More"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:782
  +msgid "New"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:784
  +msgid "Read"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:800
  +#, c-format
  +msgid "Total %s articles."
  +msgstr "총 %d 개의 글"
  +
  +#: ../plugin/bbs.php:836
  +#, c-format
  +msgid "Your IP address is not allowed to %s at this BBS"
  +msgstr "IP 주소가 '%s' BBS에서 허락되지 않았습니다."
  +
  +#: ../plugin/bbs.php:890
  +msgid "Successfully deleted."
  +msgstr "성공적으로 지워졌음."
  +
  +#: ../plugin/bbs.php:922
  +msgid "Fail to post comment."
  +msgstr "댓글 등록 실패."
  +
  +#: ../plugin/bbs.php:932
  +#, c-format
  +msgid "The article %s will be deleted."
  +msgstr "게시글 %s(이)가 지워질 것입니다."
  +
  +#: ../plugin/bbs.php:974
  +msgid "Invalid HomePage address."
  +msgstr "잘못된 홈페이지 주소."
  +
  +#: ../plugin/bbs.php:987
  +msgid "No Name error."
  +msgstr "이름이 없습ㄴ다."
  +
  +#: ../plugin/bbs.php:997
  +msgid "No Subject error."
  +msgstr "제목이 없습니다."
  +
  +#: ../plugin/bbs.php:1025
  +msgid "New post added successfully"
  +msgstr "새글이 성공적으로 등록되었습니다."
  +
  +#: ../plugin/cacheadmin.php:105
  +msgid "You are not WikiMaster!!"
  +msgstr "위키관리자가 아닙니다!!"
  +
  +#: ../plugin/cacheadmin.php:120
  +msgid "Clear cache dirs"
  +msgstr "캐쉬 디렉토리 지우기"
  +
  +#: ../plugin/chat.php:36
  +msgid "No messages"
  +msgstr "메시지 없음"
  +
  +#: ../plugin/chmod.php:18
  +#, c-format
  +msgid "Permission of \"%s\" changed !"
  +msgstr ""
  +
  +#: ../plugin/chmod.php:24
  +#, c-format
  +msgid "Fail to chmod \"%s\" !"
  +msgstr ""
  +
  +#: ../plugin/chmod.php:35
  +#, c-format
  +msgid "Change permission of \"%s\""
  +msgstr ""
  +
  +#: ../plugin/css.php:33 ../plugin/css.php:41
  +msgid "Back to UserPreferences"
  +msgstr "UserPreferences로 가기"
  +
  +#: ../plugin/css.php:67
  +msgid "CSS disabled !"
  +msgstr ""
  +
  +#: ../plugin/format.php:17
  +msgid "It is a XML format !"
  +msgstr ""
  +
  +#: ../plugin/html2pdf.php:30
  +msgid "The TCPDF class not found!"
  +msgstr "TCPDF 클래스 찾을 수 없음!"
  +
  +#: ../plugin/login.php:29
  +msgid "Login:"
  +msgstr "로그인:"
  +
  +#: ../plugin/login.php:30
  +msgid "Password:"
  +msgstr "비밀번호:"
  +
  +#: ../plugin/login.php:31
  +msgid "Join"
  +msgstr "가입"
  +
  +#: ../plugin/login.php:49 ../plugin/minilogin.php:25
  +msgid "Logout"
  +msgstr "나가기"
  +
  +#: ../plugin/login.php:50 ../plugin/minilogin.php:24 ../locale/dummy.php:3
  +msgid "UserPreferences"
  +msgstr "환경설정"
  +
  +#: ../plugin/man_get.php:17
  +msgid "No manpage selected"
  +msgstr "맨페이지가 선택되지 않았습니다"
  +
  +#: ../plugin/man_get.php:43
  +msgid "No manpage found"
  +msgstr "Manpage가 없습니다"
  +
  +#: ../plugin/man_get.php:122
  +msgid "Edit man page"
  +msgstr "man 페이지 고치기"
  +
  +#: ../plugin/minilogin.php:18 ../wikilib.php:2162
  +msgid "Login or Join"
  +msgstr "로그인 혹은 가입"
  +
  +#: ../plugin/minilogin.php:26
  +#, c-format
  +msgid "%s or %s"
  +msgstr "%s 혹은 %s"
  +
  +#: ../plugin/msgfmt.php:75 ../plugin/msgfmt.php:153
  +#, c-format
  +msgid "Translation of %s"
  +msgstr "%s에대한 번역"
  +
  +#: ../plugin/msgfmt.php:84
  +msgid "Translations are successfully updated."
  +msgstr "번역이 성공적으로 저장되었습니다"
  +
  +#: ../plugin/msgfmt.php:86
  +msgid "Fail to save translations."
  +msgstr "번역 저장을 실패했습니다"
  +
  +#: ../plugin/msgtrans.php:23 ../plugin/userinfo.php:86
  +#, c-format
  +msgid "You are not allowed to \"%s\" !"
  +msgstr "'%s'은(는) 허락되지 않았습니다"
  +
  +#: ../plugin/msgtrans.php:143
  +msgid "Local translation files are successfully translated !\n"
  +msgstr "번역이 성공적으로 갱신되었습니다\n"
  +
  +#: ../plugin/new.php:13 ../plugin/new.php:28
  +msgid "Create a new page"
  +msgstr "페이지 만들기"
  +
  +#: ../plugin/new.php:26
  +msgid "Page Name"
  +msgstr "페이지 이름"
  +
  +#: ../plugin/new.php:27
  +msgid "Normalize this page name"
  +msgstr "페이지이름 정규화하기"
  +
  +#: ../plugin/pageview.php:70
  +msgid "First:"
  +msgstr ""
   
   #: ../plugin/print.php:24
   #, c-format
  @@ -957,7 +1234,7 @@
   msgid "Save Changes"
   msgstr "변경 저장"
   
  -#: ../plugin/processor/monimarkup.php:502 ../wiki.php:3846
  +#: ../plugin/processor/monimarkup.php:507 ../wiki.php:3881
   msgid "edit"
   msgstr "편집"
   
  @@ -985,60 +1262,11 @@
   msgid "Do you want to customize your quicklinks ?"
   msgstr "바로가기를 바꾸고 싶으신가요?"
   
  -#: ../plugin/Rating.php:58
  -msgid "Awful!"
  -msgstr "최악!"
  -
  -#: ../plugin/Rating.php:59
  -msgid "Not the worst ever."
  -msgstr "이보다 나쁠수 없음"
  -
  -#: ../plugin/Rating.php:60
  -msgid "Not bad!"
  -msgstr "나쁘지 않음!"
  -
  -#: ../plugin/Rating.php:61
  -msgid "Useful!"
  -msgstr "유용함"
  -
  -#: ../plugin/Rating.php:62
  -msgid "Very Gooood!"
  -msgstr "매우 좋음"
  -
  -#: ../plugin/Rating.php:84 ../plugin/security/community.php:26
  -#: ../plugin/security/community.php:36 ../plugin/security/community.php:46
  -#: ../plugin/security/community.php:61 ../plugin/security/mustlogin.php:29
  -#: ../plugin/security/mustlogin.php:40 ../plugin/security/mustlogin.php:51
  -#: ../plugin/security/mustlogin.php:67 ../plugin/security/needtologin.php:29
  -#: ../plugin/security/needtologin.php:40 ../plugin/security/needtologin.php:51
  -#: ../plugin/security/userbased.php:62 ../plugin/Vote.php:67
  -msgid "Please Login or make your ID on this Wiki ;)"
  -msgstr "로그인하거나 ID를 만드세요 ;)"
  -
  -#: ../plugin/Rating.php:188
  -msgid "Invalid rating request !"
  -msgstr ""
  -
  -#: ../plugin/Rating.php:203
  -msgid "Rating successfully !"
  -msgstr ""
  -
   #: ../plugin/rawblog.php:63 ../plugin/rawblog.php:73
   #, c-format
   msgid "Delete Blog entry \"%s\""
   msgstr "\"%s\"에서 블로그 항목 지우기"
   
  -#: ../plugin/rcsimport.php:32 ../plugin/rcsimport.php:88
  -#: ../plugin/rename.php:77 ../plugin/revert.php:82
  -#: ../plugin/UploadedFiles.php:429 ../plugin/userinfo.php:37
  -#: ../wikilib.php:1110 ../wikilib.php:2000
  -msgid "Password"
  -msgstr "비밀번호"
  -
  -#: ../plugin/rcsimport.php:76
  -msgid "Page name"
  -msgstr "페이지 이름"
  -
   #: ../plugin/rcs.php:13
   #, c-format
   msgid "%s does not support rcs options."
  @@ -1063,6 +1291,10 @@
   msgid "Only WikiMaster can execute rcs"
   msgstr "위키관리자만이 rcs를 실행할 수 있습니다"
   
  +#: ../plugin/rcsimport.php:76
  +msgid "Page name"
  +msgstr "페이지 이름"
  +
   #: ../plugin/rcspurge.php:24
   msgid "Invalid rcspurge range"
   msgstr "잘못된 rcspurge 범위"
  @@ -1082,18 +1314,6 @@
   msgid "BlogChanges at %s"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:124
  -msgid "Show changes for "
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:129
  -msgid "days ago"
  -msgstr "몇일 전"
  -
  -#: ../plugin/RecentChanges.php:230
  -msgid "set bookmark"
  -msgstr "북마크"
  -
   #: ../plugin/referer.php:139
   msgid "Referer history"
   msgstr ""
  @@ -1131,10 +1351,6 @@
   msgid "New name:"
   msgstr "새이름:"
   
  -#: ../plugin/rename.php:69 ../plugin/UploadFile.php:350
  -msgid "Rename"
  -msgstr "이름바꾸기"
  -
   #: ../plugin/rename.php:74
   msgid "Rename and fix Backlinks"
   msgstr "이름 바꾸고 그 역링크 수정"
  @@ -1143,7 +1359,7 @@
   msgid "Only WikiMaster can rename this page"
   msgstr "위키관리자만이 페이지 이름을 바꿀 수 있습니다"
   
  -#: ../plugin/rename.php:79 ../wikilib.php:1156
  +#: ../plugin/rename.php:79 ../wikilib.php:1202
   msgid "with revision history"
   msgstr "버전 히스토리와 함께"
   
  @@ -1185,7 +1401,7 @@
   msgid "Select a tarball file to restore"
   msgstr "Restore하기 위한 tarball 파일을 고르세요"
   
  -#: ../plugin/revert.php:23 ../wiki.php:5350
  +#: ../plugin/revert.php:23 ../wiki.php:5441
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr "%s의 옛날 버전"
  @@ -1211,7 +1427,7 @@
   msgid "Are you really want to revert this page ?"
   msgstr "정말로 되돌리시겠습니까 ?"
   
  -#: ../plugin/revert.php:74
  +#: ../plugin/revert.php:74 ../wikilib.php:963
   msgid "Summary"
   msgstr "요약"
   
  @@ -1330,26 +1546,6 @@
   msgid "Trackback sent"
   msgstr "트랙백"
   
  -#: ../plugin/SlideShow.php:28
  -msgid "No page found"
  -msgstr "페이지가 없습니다"
  -
  -#: ../plugin/SlideShow.php:102
  -msgid "Start:"
  -msgstr "시작:"
  -
  -#: ../plugin/SlideShow.php:111
  -msgid "End:"
  -msgstr "끝:"
  -
  -#: ../plugin/SlideShow.php:131
  -msgid "Prev:"
  -msgstr "이전:"
  -
  -#: ../plugin/SlideShow.php:138
  -msgid "Return"
  -msgstr "돌아가기"
  -
   #: ../plugin/subscribe.php:24 ../plugin/subscribe.php:28
   msgid "You did'nt subscribed any pages yet."
   msgstr "아직 구독중인 페이지가 없습니다."
  @@ -1400,34 +1596,6 @@
   msgid "Subscribed pages"
   msgstr "구독 목록"
   
  -#: ../plugin/SWFUpload.php:136
  -msgid "Files..."
  -msgstr "파일..."
  -
  -#: ../plugin/SWFUpload.php:137
  -msgid "Upload"
  -msgstr "올리기"
  -
  -#: ../plugin/SWFUpload.php:138
  -msgid "Cancel All files"
  -msgstr "모두 취소"
  -
  -#: ../plugin/SystemInfo.php:16
  -msgid "Number of Pages"
  -msgstr "페이지 개수"
  -
  -#: ../plugin/SystemInfo.php:17
  -msgid "HTTP Server Version"
  -msgstr "HTTP 서버 버전"
  -
  -#: ../plugin/SystemInfo.php:18
  -msgid "MoniWiki Version"
  -msgstr "모니위키 버전"
  -
  -#: ../plugin/SystemInfo.php:19
  -msgid "PHP Version"
  -msgstr "PHP 버전"
  -
   #: ../plugin/theme.php:29
   msgid "Theme cleared. Goto UserPreferences."
   msgstr "테마가 지워짐. UserPreferences로 가기"
  @@ -1452,47 +1620,6 @@
   msgid "Invalid use of ticket"
   msgstr ""
   
  -#: ../plugin/Tour.php:81
  -msgid "BackLinks"
  -msgstr "역링크"
  -
  -#: ../plugin/Tour.php:85
  -msgid "Keywords"
  -msgstr "키워드"
  -
  -#: ../plugin/Tour.php:94
  -#, c-format
  -msgid " from %s"
  -msgstr " %s에 대한"
  -
  -#: ../plugin/Tour.php:97
  -#, c-format
  -msgid "%s Tour %s"
  -msgstr "%2$s %1$s 여행"
  -
  -#: ../plugin/Tour.php:156
  -msgid "links"
  -msgstr "연결"
  -
  -#: ../plugin/Tour.php:158
  -msgid "deeper"
  -msgstr "깊게"
  -
  -#: ../plugin/Tour.php:159
  -#, c-format
  -msgid "More %s or more %s"
  -msgstr "더 많은 %s 혹은 %s"
  -
  -#: ../plugin/Tour.php:174
  -#, c-format
  -msgid "Total %d related keywords"
  -msgstr "%d 개의 연관된 키워드"
  -
  -#: ../plugin/Tour.php:177
  -#, c-format
  -msgid "Total %d related pages"
  -msgstr "%d 개의 연관된 페이지"
  -
   #: ../plugin/trackback.php:53
   msgid "TrackBack is not activated !"
   msgstr "TrackBack이 활성화되지 않았습니다 !"
  @@ -1519,93 +1646,6 @@
   msgid "No TrackBack entry found for %s"
   msgstr "%s에 대한 트랙백 항목을 찾을 수 없음"
   
  -#: ../plugin/TwinPages.php:13
  -#, c-format
  -msgid "TwinPages of %s"
  -msgstr "%s의 쌍둥이 페이지"
  -
  -#: ../plugin/TwinPages.php:19 ../wiki.php:5334
  -msgid "See [TwinPages]: "
  -msgstr ""
  -
  -#: ../plugin/TwinPages.php:21
  -msgid "No TwinPages found."
  -msgstr "쌍둥이 페이지가 없습니다"
  -
  -#: ../plugin/UploadedFiles.php:280
  -msgid "File name"
  -msgstr "파일 이름"
  -
  -#: ../plugin/UploadedFiles.php:281
  -msgid "Size"
  -msgstr "크기"
  -
  -#: ../plugin/UploadedFiles.php:282
  -msgid "Date"
  -msgstr "날짜"
  -
  -#: ../plugin/UploadedFiles.php:330
  -msgid "Next page &raquo;"
  -msgstr "다음 페이지 &raquo;"
  -
  -#: ../plugin/UploadedFiles.php:332
  -msgid "&laquo; First page"
  -msgstr "&laquo; 첫 페이지"
  -
  -#: ../plugin/UploadedFiles.php:424
  -#, c-format
  -msgid "Total %d files"
  -msgstr "총 %d 개 파일"
  -
  -#: ../plugin/UploadedFiles.php:430 ../wikilib.php:1088
  -msgid "Delete selected files"
  -msgstr "선택된 파일 지우기"
  -
  -#: ../plugin/UploadFile.php:147 ../plugin/UploadFile.php:161
  -#, c-format
  -msgid "The %s type of %s is not allowed to upload"
  -msgstr "%s의 %s 형식은 업로드가 허락되지 않습니다"
  -
  -#: ../plugin/UploadFile.php:163
  -#, c-format
  -msgid "%s is not allowed to upload"
  -msgstr "%s은(는) 업로드가 허락되지 않습니다"
  -
  -#: ../plugin/UploadFile.php:218
  -#, c-format
  -msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
  -msgstr "파일 확장자를 \"%s\"에서 \"%s\"(으)로 바꿀 수 없음."
  -
  -#: ../plugin/UploadFile.php:251
  -msgid "Please check your php.ini setting"
  -msgstr "php.ini 세팅을 확인해보시기 바랍니다"
  -
  -#: ../plugin/UploadFile.php:261
  -#, c-format
  -msgid "File \"%s\" is uploaded successfully"
  -msgstr "\"%s\"파일이 성공적으로 올라갔습니다"
  -
  -#: ../plugin/UploadFile.php:300
  -msgid "Files are uploaded successfully"
  -msgstr "파일이 성공적으로 올라갔습니다."
  -
  -#: ../plugin/UploadFile.php:344
  -msgid "Replace original file"
  -msgstr "원본 파일 교체"
  -
  -#: ../plugin/UploadFile.php:345
  -msgid "Rename if it already exist"
  -msgstr "이미 있을경우 이름 바꿈"
  -
  -#: ../plugin/UploadFile.php:358
  -#, c-format
  -msgid "or %s."
  -msgstr "혹은 %s."
  -
  -#: ../plugin/UploadFile.php:358
  -msgid "Upload files"
  -msgstr "파일 올리기"
  -
   #: ../plugin/userform.php:35 ../plugin/userform.php:38
   msgid "Successfully confirmed"
   msgstr ""
  @@ -1653,7 +1693,7 @@
   msgid "Cookie deleted !"
   msgstr "쿠키가 지워졌습니다 !"
   
  -#: ../plugin/userform.php:107 ../wikilib.php:2151
  +#: ../plugin/userform.php:107 ../wikilib.php:2232
   msgid "E-mail new password"
   msgstr "새 비밀번호 받기"
   
  @@ -1734,8 +1774,8 @@
   msgid "You are not allowed to register on this wiki"
   msgstr "위키 등록이 허락되지 않았습니다"
   
  -#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5288
  -#: ../wiki.php:5299
  +#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5379
  +#: ../wiki.php:5390
   msgid "Please contact WikiMasters"
   msgstr "위키관리자에게 문의하세요"
   
  @@ -1844,22 +1884,6 @@
   msgid "User \"%s\" are deleted !"
   msgstr "사용자 \"%s\"(이)가 지워짐 !"
   
  -#: ../plugin/VisualTour.php:133
  -msgid "Normal"
  -msgstr "보통"
  -
  -#: ../plugin/VisualTour.php:135
  -msgid "Wider"
  -msgstr "넓게"
  -
  -#: ../plugin/VisualTour.php:137
  -msgid "Deeper"
  -msgstr "깊게"
  -
  -#: ../plugin/Vote.php:113
  -msgid "Voted successfully"
  -msgstr "투표가 성공되었습니다"
  -
   #: ../plugin/whois.php:119
   #, c-format
   msgid "Could not connect to %s server"
  @@ -1870,144 +1894,144 @@
   msgid "Whois search result for %s"
   msgstr "%s에 대한 Whois 서치 결과"
   
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2439
  -msgid "Others"
  -msgstr ""
  -
  -#: ../wiki.php:1238
  +#: ../wiki.php:1249
   #, c-format
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1658
  +#: ../wiki.php:1671
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
  -#: ../wiki.php:1668
  +#: ../wiki.php:1681
   msgid "File does not exist"
   msgstr "페이지가 없습니다"
   
  -#: ../wiki.php:2043
  +#: ../wiki.php:2057
   #, c-format
   msgid "File '%s' does not exist."
   msgstr "파일 '%s'이(가) 없습니다"
   
  -#: ../wiki.php:2919 ../wiki.php:2930 ../wiki.php:5528
  +#: ../wiki.php:2947 ../wiki.php:2958 ../wiki.php:5619
   msgid "Invalid ajax action."
   msgstr "잘못된 ajax 액션."
   
  -#: ../wiki.php:3427
  +#: ../wiki.php:3456
   msgid "Tags:"
   msgstr "태그:"
   
  -#: ../wiki.php:3455
  +#: ../wiki.php:3484
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:3455
  +#: ../wiki.php:3484
   #, c-format
   msgid "TwinPages"
   msgstr "TwinPages"
   
  -#: ../wiki.php:3460
  +#: ../wiki.php:3489
   msgid "See [TwinPages]:"
   msgstr ""
   
  -#: ../wiki.php:4026
  +#: ../wiki.php:4061
   msgid "Sister Sites Index"
   msgstr ""
   
  -#: ../wiki.php:4454 ../locale/dummy.php:6
  +#: ../wiki.php:4492 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "고치기"
   
  -#: ../wiki.php:4456
  +#: ../wiki.php:4494
   msgid "NotEditable"
   msgstr "고칠수 없음"
   
  -#: ../wiki.php:4460 ../locale/dummy.php:6
  +#: ../wiki.php:4498 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "보기"
   
  -#: ../wiki.php:4461 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4499 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "찾기"
   
  -#: ../wiki.php:4868
  +#: ../wiki.php:4938
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5287
  +#: ../wiki.php:5202
  +msgid "Someone logged in at another place !"
  +msgstr ""
  +
  +#: ../wiki.php:5378
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5298
  +#: ../wiki.php:5389
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:5336 ../wiki.php:5345 ../wikilib.php:1370
  +#: ../wiki.php:5427 ../wiki.php:5436 ../wikilib.php:1420
   msgid "Create this page"
   msgstr "페이지 만들기"
   
  -#: ../wiki.php:5347
  +#: ../wiki.php:5438
   #, c-format
   msgid "%s has saved revisions"
   msgstr "%s이(가) 저장된 옛버전이 있습니다"
   
  -#: ../wiki.php:5348 ../wiki.php:5355
  +#: ../wiki.php:5439 ../wiki.php:5446
   #, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr "%s 혹은 %s를 눌러 전체 찾기를 할 수 있습니다.\n"
   
  -#: ../wiki.php:5353
  +#: ../wiki.php:5444
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr "%s 페이지를 이곳 위키에서 찾을 수 없습니다"
   
  -#: ../wiki.php:5360
  +#: ../wiki.php:5451
   msgid "Please try to search with another word"
   msgstr "다른 단어로 찾아보세요."
   
  -#: ../wiki.php:5372
  +#: ../wiki.php:5463
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr ""
   "%s 아이콘을 누르거나 아래의 탬플리트 목록을 이용해 새 페이지를 만드세요:\n"
   
  -#: ../wiki.php:5375
  +#: ../wiki.php:5466
   msgid "You have no templates"
   msgstr "템플리트가 없습니다"
   
  -#: ../wiki.php:5377
  +#: ../wiki.php:5468
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr "탬플리트를 만드시려면 '%s' 형식의 이름을 가지는 페이지를 만드세요.\n"
   
  -#: ../wiki.php:5388
  +#: ../wiki.php:5479
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr "\"%s\"페이지로 부터 리다리렉트됨"
   
  -#: ../wiki.php:5530
  +#: ../wiki.php:5621
   msgid "Invalid macro action."
   msgstr "잘못된 마크로 액션."
   
  -#: ../wiki.php:5540
  +#: ../wiki.php:5631
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "'%s'은(는) 허락되지 않았습니다"
   
  -#: ../wiki.php:5560
  +#: ../wiki.php:5651
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "\"%s\"을(를) 실패했습니다 !"
   
  -#: ../wiki.php:5563
  +#: ../wiki.php:5654
   msgid "Please enter the valid password"
   msgstr "정확한 비밀번호를 넣어주세요"
   
  -#: ../wikilib.php:656
  +#: ../wikilib.php:658
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -2036,395 +2060,395 @@
   "<b>테이블</b>: || 셀 내용 |||| 두칸에 걸친 내용 ||;<br />\n"
   "테이블이나 제목 끝에 공백이 오면 안됩니다.<br />\n"
   
  -#: ../wikilib.php:693
  +#: ../wikilib.php:695
   msgid "You are not allowed to edit this page !"
   msgstr "이 페이지를 고칠 수 있도록 허락되어있지 않습니다 !"
   
  -#: ../wikilib.php:699
  +#: ../wikilib.php:702
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
  -#: ../wikilib.php:824
  +#: ../wikilib.php:827
   msgid "Use one of the following templates as an initial release :\n"
   msgstr "최초 버전으로 다음의 탬플리트를 활용하실 수 있습니다 :\n"
   
  -#: ../wikilib.php:826
  +#: ../wikilib.php:829
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr "탬플리트를 만드시려면 '%s' 형식의 이름으로 페이지를 만드세요."
   
  -#: ../wikilib.php:830
  +#: ../wikilib.php:833
   msgid "Merge"
   msgstr "병합"
   
  -#: ../wikilib.php:831
  +#: ../wikilib.php:834
   msgid "Merge manually"
   msgstr "수동 병합"
   
  -#: ../wikilib.php:832
  +#: ../wikilib.php:835
   msgid "Ignore conflicts"
   msgstr "충돌 무시"
   
  -#: ../wikilib.php:859
  +#: ../wikilib.php:862
   msgid "ReduceEditor"
   msgstr "편집창 줄이기"
   
  -#: ../wikilib.php:860
  +#: ../wikilib.php:863
   msgid "EnlargeEditor"
   msgstr "편집창 늘이기"
   
  -#: ../wikilib.php:864 ../locale/dummy.php:6
  +#: ../wikilib.php:867 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr "인터위키"
   
  -#: ../wikilib.php:866
  +#: ../wikilib.php:869
   msgid "HelpOnEditing"
   msgstr "고치기 도움말"
   
  -#: ../wikilib.php:898
  +#: ../wikilib.php:901
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:918
  -msgid "--Select Category--"
  -msgstr "--카테고리 선택--"
  +#: ../wikilib.php:923
  +msgid "Category"
  +msgstr "분류"
  +
  +#: ../wikilib.php:931
  +msgid " Select "
  +msgstr " 선택 "
   
  -#: ../wikilib.php:928
  +#: ../wikilib.php:942
   msgid "Minor edit"
   msgstr ""
   
  -#: ../wikilib.php:932
  -msgid "Summary of Change"
  -msgstr "바뀐점 요약"
  -
  -#: ../wikilib.php:937
  +#: ../wikilib.php:968
   msgid "Skip to preview"
   msgstr "미리보기로"
   
  -#: ../wikilib.php:949 ../wikilib.php:2084 ../wikilib.php:2138
  +#: ../wikilib.php:981 ../wikilib.php:2165 ../wikilib.php:2219
   msgid "Save"
   msgstr "저장"
   
  -#: ../wikilib.php:1022
  +#: ../wikilib.php:1068
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:1027
  +#: ../wikilib.php:1073
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s은(는) 잘못된 액션"
   
  -#: ../wikilib.php:1029
  +#: ../wikilib.php:1075
   msgid "Is it valid action ?"
   msgstr "올바른 액션입니까 ?"
   
  -#: ../wikilib.php:1076
  +#: ../wikilib.php:1122
   #, c-format
   msgid "File '%s' is deleted"
   msgstr "'%s' 파일이 지워졌습니다"
   
  -#: ../wikilib.php:1078
  +#: ../wikilib.php:1124
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr "'%s' 지우기를 실패했습니다"
   
  -#: ../wikilib.php:1083
  +#: ../wikilib.php:1129
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr "'%s' 디렉토리가 지우졌습니다"
   
  -#: ../wikilib.php:1085
  +#: ../wikilib.php:1131
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr "'%s' 지우기를 실패했습니다"
   
  -#: ../wikilib.php:1095 ../wikilib.php:1115
  +#: ../wikilib.php:1141 ../wikilib.php:1161
   msgid "No files are selected !"
   msgstr "파일을 선택하지 않았습니다"
   
  -#: ../wikilib.php:1108
  +#: ../wikilib.php:1154
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr "정말로 '%s'(을)를 지우시겠습니까 ?"
   
  -#: ../wikilib.php:1112
  +#: ../wikilib.php:1158
   msgid "Delete selected file"
   msgstr "선택된 파일 지우기"
   
  -#: ../wikilib.php:1133
  +#: ../wikilib.php:1179
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr "%s(이)가 지워짐 !"
   
  -#: ../wikilib.php:1148
  +#: ../wikilib.php:1194
   msgid "Please delete this file manually."
   msgstr "파일을 직접 지워주세요."
   
  -#: ../wikilib.php:1150
  +#: ../wikilib.php:1196
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "\"%s\"을(를) 지울까요 ?"
   
  -#: ../wikilib.php:1203
  +#: ../wikilib.php:1249
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
  -#: ../wikilib.php:1372
  +#: ../wikilib.php:1422
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr " 혹은 %s를 눌러 전체찾기를 합니다.\n"
   
  -#: ../wikilib.php:1372
  +#: ../wikilib.php:1422
   msgid "title"
   msgstr "제목"
   
  -#: ../wikilib.php:1386
  +#: ../wikilib.php:1436
   msgid "Please try to fulltext search"
   msgstr "전체 찾기를 해보시기 바랍니다"
   
  -#: ../wikilib.php:1389
  +#: ../wikilib.php:1439
   #, c-format
   msgid "You can also click %s to fulltext search.\n"
   msgstr "%s 아이콘을 눌러 전체 찾기를 하실 수 있습니다.\n"
   
  -#: ../wikilib.php:1434 ../wikilib.php:1535
  +#: ../wikilib.php:1484 ../wikilib.php:1585
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "%s을(를) 고치는 동안 다른 사람이 이 페이지를 저장했습니다"
   
  -#: ../wikilib.php:1440
  +#: ../wikilib.php:1490
   msgid "Section edit is not valid for non-exists page."
   msgstr "없는 페이지에 대한 섹션 편집은 가능하지 않습니다"
   
  -#: ../wikilib.php:1473 ../wikilib.php:1651
  +#: ../wikilib.php:1523 ../wikilib.php:1732
   msgid "mail does not supported by default."
   msgstr "메일이 지원되지 않습니다"
   
  -#: ../wikilib.php:1477 ../wikilib.php:1655
  +#: ../wikilib.php:1527 ../wikilib.php:1736
   msgid "Sent notification mail."
   msgstr "메일을 보냈습니다"
   
  -#: ../wikilib.php:1479 ../wikilib.php:1657
  +#: ../wikilib.php:1529 ../wikilib.php:1738
   msgid "No subscribers found."
   msgstr "구독자가 없습니다"
   
  -#: ../wikilib.php:1484 ../wikilib.php:1662
  +#: ../wikilib.php:1534 ../wikilib.php:1743
   #, c-format
   msgid "%s is not editable"
   msgstr "%s(이)가 쓰기가능하지 않음"
   
  -#: ../wikilib.php:1486 ../wikilib.php:1664
  +#: ../wikilib.php:1536 ../wikilib.php:1745
   #, c-format
   msgid "%s is saved"
   msgstr "%s(이)가 저장됨"
   
  -#: ../wikilib.php:1526
  +#: ../wikilib.php:1576
   msgid "Goto Editor"
   msgstr "편집기로 가기"
   
  -#: ../wikilib.php:1540
  +#: ../wikilib.php:1590
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr "%s 페이지 최근 내용이 병합되었습니다."
   
  -#: ../wikilib.php:1541
  +#: ../wikilib.php:1591
   #, c-format
   msgid "%s is merged successfully"
   msgstr "설정이 성공적으로 병합되었습니다"
   
  -#: ../wikilib.php:1545
  +#: ../wikilib.php:1595
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr "%s에 대하여 병합 충돌이 발견되었습니다 !"
   
  -#: ../wikilib.php:1546
  +#: ../wikilib.php:1596
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr "%s에 대해 병합이 취소되었습니다."
   
  -#: ../wikilib.php:1547
  +#: ../wikilib.php:1597
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1548
  +#: ../wikilib.php:1598
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1553
  +#: ../wikilib.php:1603
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr "%s에 대해 병합을 합니다"
   
  -#: ../wikilib.php:1554
  +#: ../wikilib.php:1604
   msgid "Please resolve conflicts manually."
   msgstr "충돌을 직접 해결하시기 바랍니다."
   
  -#: ../wikilib.php:1557
  +#: ../wikilib.php:1607
   #, c-format
   msgid "Force merging for %s !"
   msgstr "%s에 대해 병합이 강제로 되었습니다 !"
   
  -#: ../wikilib.php:1558
  +#: ../wikilib.php:1608
   msgid "Please be careful, you could damage useful information."
   msgstr "주의하시기 바랍니다. 중요한 정보를 잃어버릴 수도 있습니다."
   
  -#: ../wikilib.php:1572
  +#: ../wikilib.php:1622
   msgid "Conflict error!"
   msgstr "충돌 오류!"
   
  -#: ../wikilib.php:1611
  +#: ../wikilib.php:1692
   #, c-format
   msgid "Preview of %s"
   msgstr "%s 미리보기"
   
  -#: ../wikilib.php:1696
  +#: ../wikilib.php:1777
   msgid "Nobody subscribed to this page."
   msgstr "아무도 페이지를 구독하지 않고있습니다."
   
  -#: ../wikilib.php:1715
  +#: ../wikilib.php:1796
   #, c-format
   msgid "%s page is modified"
   msgstr "%s 페이지가 변경되었습니다"
   
  -#: ../wikilib.php:1744
  +#: ../wikilib.php:1825
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:1757
  +#: ../wikilib.php:1838
   msgid "Send notification mails to all subscribers"
   msgstr "모든 구독자에게 메일을 보냅니다"
   
  -#: ../wikilib.php:1762
  +#: ../wikilib.php:1843
   msgid "Mails are sent successfully"
   msgstr "메일이 성공적으로 보내졌습니다"
   
  -#: ../wikilib.php:1763
  +#: ../wikilib.php:1844
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr "'%s'에게 메일을 보냈습니다"
   
  -#: ../wikilib.php:1765
  +#: ../wikilib.php:1846
   msgid "Fail to send mail"
   msgstr "메일 보내기 실패했습니다"
   
  -#: ../wikilib.php:1776
  +#: ../wikilib.php:1857
   msgid "This wiki does not support sendmail"
   msgstr "위키에서 sendmail을 지원받지 못합니다"
   
  -#: ../wikilib.php:1874
  +#: ../wikilib.php:1955
   msgid "Invalid regular expression !"
   msgstr "잘못된 정규 표현식 !"
   
  -#: ../wikilib.php:1898
  +#: ../wikilib.php:1979
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:1901
  +#: ../wikilib.php:1982
   msgid "Infinite loop possible!"
   msgstr "무한 루프가 가능함!"
   
  -#: ../wikilib.php:2016
  +#: ../wikilib.php:2097
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:2017
  +#: ../wikilib.php:2098
   msgid "OpenID"
   msgstr ""
   
  -#: ../wikilib.php:2029 ../wikilib.php:2156
  +#: ../wikilib.php:2110 ../wikilib.php:2237
   msgid "ID"
   msgstr "아이디"
   
  -#: ../wikilib.php:2064 ../wikilib.php:2149
  +#: ../wikilib.php:2145 ../wikilib.php:2230
   msgid "Make profile"
   msgstr "사용자 등록"
   
  -#: ../wikilib.php:2066
  +#: ../wikilib.php:2147
   msgid "password again"
   msgstr "비밀번호 재입력"
   
  -#: ../wikilib.php:2068 ../wikilib.php:2117
  +#: ../wikilib.php:2149 ../wikilib.php:2198
   msgid "Mail"
   msgstr "메일"
   
  -#: ../wikilib.php:2090
  +#: ../wikilib.php:2171
   msgid "New password"
   msgstr "새 비밀번호"
   
  -#: ../wikilib.php:2095
  +#: ../wikilib.php:2176
   msgid "Nickname"
   msgstr "별명"
   
  -#: ../wikilib.php:2118
  +#: ../wikilib.php:2199
   msgid "Time Zone"
   msgstr "시간대"
   
  -#: ../wikilib.php:2127
  +#: ../wikilib.php:2208
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:2440
  +#: ../wikilib.php:2521
   msgid "Show all"
   msgstr "모두 보기"
   
  -#: ../wikilib.php:2582
  +#: ../wikilib.php:2659
   msgid "Contents"
   msgstr "목차"
   
  -#: ../wikilib.php:2702
  +#: ../wikilib.php:2779
   #, c-format
   msgid "Title search for \"%s\""
   msgstr "\"%s\"에 대한 제목 찾기"
   
  -#: ../monisetup.php:35
  +#: ../monisetup.php:38
   msgid "Check a dba configuration"
   msgstr "dba 환경 검사"
   
  -#: ../monisetup.php:47
  +#: ../monisetup.php:50
   #, c-format
   msgid "%s is selected."
   msgstr "%s(이)가 선택됨"
   
  -#: ../monisetup.php:54
  +#: ../monisetup.php:57
   msgid "Check a AcceptPathInfo setting for Apache 2.x.xx"
   msgstr "아파치 2.x.xx를 위한 AcceptPathInfo 검사"
   
  -#: ../monisetup.php:61 ../monisetup.php:67
  +#: ../monisetup.php:64 ../monisetup.php:70
   msgid "Off"
   msgstr "꺼짐"
   
  -#: ../monisetup.php:69
  +#: ../monisetup.php:72
   msgid "On"
   msgstr "켜짐"
   
  -#: ../monisetup.php:243
  +#: ../monisetup.php:426
   msgid ""
   "Please change the permission of some directories writable on your server to "
   "initialize your Wiki."
   msgstr ""
   "위키를 초기화하기 위해서 몇몇 디렉토리를 쓰기가능하도록 바꿔줘야 합니다"
   
  -#: ../monisetup.php:245
  +#: ../monisetup.php:428
   #, c-format
   msgid ""
   "If you want a more safe wiki, try to change the permission of directories "
   "with %s."
   msgstr "보다 안전한 위키를 원하신다면 디렉토리의 퍼미션을 %s(으)로 바꿔주세요"
   
  -#: ../monisetup.php:248
  +#: ../monisetup.php:431
   msgid ""
   "or use <tt>monisetup.sh</tt> and select 777 or <font color='red'>2777</font>"
   msgstr ""
   "혹은 <tt>monisetup.sh</tt>를 사용하여 777 혹은 <font color='red'>2777</font>"
   "를 고르세요"
   
  -#: ../monisetup.php:250
  +#: ../monisetup.php:433
   msgid ""
   "After execute one of above two commands, just <a href='monisetup.php'>reload "
   "this <tt>monisetup.php</tt></a> would make a new initial <tt>config.php</tt> "
  @@ -2434,92 +2458,106 @@
   "php</tt>를 다시 열어</a> 주셔서 새로운 초기 <tt>config.php</tt> 파일을, 검사"
   "된 몇몇 기본 설정값과 함께 만들어 주셔야 합니다."
   
  -#: ../monisetup.php:251
  +#: ../monisetup.php:434
   msgid "Reload"
   msgstr "다시부르기"
   
  -#: ../monisetup.php:254
  +#: ../monisetup.php:437
   msgid "WARN"
   msgstr "경고"
   
  -#: ../monisetup.php:255
  +#: ../monisetup.php:438
   msgid ""
   "Please execute the following command after you have completed your "
   "configuration."
   msgstr "환경설정을 모두 마치신 후에 다음 명령을 실행해주시기 바랍니다."
   
  -#: ../monisetup.php:266
  +#: ../monisetup.php:442 ../monisetup.php:1268
  +msgid "WARN: You have to enter your Admin Password"
  +msgstr "주의: 관리자 비밀번호를 넣어주시기 바랍니다"
  +
  +#: ../monisetup.php:445
  +msgid ""
  +"WARN: If you have any permission to execute 'secure.sh'. press the following "
  +"button"
  +msgstr ""
  +
  +#: ../monisetup.php:447
  +msgid "Protect my config.php now!"
  +msgstr ""
  +
  +#: ../monisetup.php:464
   #, c-format
   msgid "FATAL: %s directory is not writable"
   msgstr "치명적: %s 디렉토리가 쓰기가능하지 않음"
   
  -#: ../monisetup.php:267
  +#: ../monisetup.php:465
   msgid "Please execute the following command."
   msgstr "다음 명령을 실행시켜주세요."
   
  -#: ../monisetup.php:286
  +#: ../monisetup.php:484
   #, c-format
   msgid "%s directory is not writable"
   msgstr "%s 디렉토리가 쓰기가능하지 않음"
   
  -#: ../monisetup.php:303
  +#: ../monisetup.php:501
   #, c-format
   msgid "%s is not writable"
   msgstr "%s(이)가 쓰기가능하지 않음"
   
  -#: ../monisetup.php:310 ../monisetup.php:316
  +#: ../monisetup.php:508 ../monisetup.php:514
   #, c-format
   msgid "%s is created now"
   msgstr "%s(이)가 만들어졌음"
   
  -#: ../monisetup.php:326
  +#: ../monisetup.php:524
   #, c-format
   msgid "%s is writable"
   msgstr "%s(이)가 쓰기가능"
   
  -#: ../monisetup.php:343
  +#: ../monisetup.php:541
   #, c-format
   msgid ""
   "If you want to check .htaccess file please delete '%s' file and reload it."
   msgstr ""
   
  -#: ../monisetup.php:346
  +#: ../monisetup.php:544
   msgid "Security check for 'upload_dir'."
   msgstr ""
   
  -#: ../monisetup.php:378
  +#: ../monisetup.php:576
   msgid ".htaccess for 'imgs_dir'."
   msgstr ""
   
  -#: ../monisetup.php:448
  +#: ../monisetup.php:646
   msgid "Fail"
   msgstr "실패"
   
  -#: ../monisetup.php:454
  +#: ../monisetup.php:652
   msgid "Unable to write .htaccess"
   msgstr ""
   
  -#: ../monisetup.php:550
  +#: ../monisetup.php:756
   msgid "Click here to toggle all"
   msgstr "여기를 눌러 모두 토글합니다"
   
  -#: ../monisetup.php:551
  +#: ../monisetup.php:757
   msgid "Deselect all"
   msgstr "모두 선택 취소"
   
  -#: ../monisetup.php:556
  +#: ../monisetup.php:762
   msgid "Please be careful to deselect these pages"
   msgstr "아래의 페이지를 선택해제시 주의해주세요"
   
  -#: ../monisetup.php:831
  +#: ../monisetup.php:1056
   msgid "MoniWiki"
   msgstr "모니위키"
   
  -#: ../monisetup.php:834
  +#: ../monisetup.php:1059
   msgid "'config.php' is not writable !"
   msgstr "'config.php' 파일이 쓰기가능하지 않습니다 !"
   
  -#: ../monisetup.php:835
  +#: ../monisetup.php:1060
   msgid ""
   "Please execute <tt>'monisetup.sh'</tt> or <tt>chmod a+w config.php</tt> "
   "first to change your settings."
  @@ -2527,94 +2565,102 @@
   "<tt>'monisetup.sh'</tt> 혹은 <tt>chmod a+w config.php</tt>를 먼저실행해 주셔"
   "야 설정을 고칠 수 있습니다"
   
  -#: ../monisetup.php:862
  +#: ../monisetup.php:1062
  +msgid "Unprotect my config.php"
  +msgstr ""
  +
  +#: ../monisetup.php:1095
  +msgid "config.php is protected now !"
  +msgstr "config.php 파일이 보호되었습니다. !"
  +
  +#: ../monisetup.php:1100 ../monisetup.php:1119
   msgid "Invalid password error !"
   msgstr "잘못된 비밀번호 오류 !"
   
  -#: ../monisetup.php:863
  +#: ../monisetup.php:1101 ../monisetup.php:1120
   msgid ""
   "If you can't remember your admin password, delete password entry in the "
   "'config.php' and restart 'monisetup'"
   msgstr ""
   
  -#: ../monisetup.php:895
  +#: ../monisetup.php:1106
  +msgid "config.php is unprotected now !"
  +msgstr "config.php 파일이 보호 해제되었습니다 !"
  +
  +#: ../monisetup.php:1152
   #, c-format
   msgid "Updated Configutations for this %s"
   msgstr "위키 %s의 설정이 갱신되었습니다"
   
  -#: ../monisetup.php:914
  +#: ../monisetup.php:1170
   msgid "Configurations are saved successfully"
   msgstr "설정이 성공적으로 저장되었습니다"
   
  -#: ../monisetup.php:915
  +#: ../monisetup.php:1171
   msgid ""
   "WARN: Please check <a href='monisetup.php'> your saved configurations</a>"
   msgstr ""
   
  -#: ../monisetup.php:916
  +#: ../monisetup.php:1172
   msgid "If all is good, change 'config.php' permission as 644."
   msgstr "모두 마음에 드시면 'config.php'파일의 퍼미션을 644로 바꿔주세요"
   
  -#: ../monisetup.php:928
  +#: ../monisetup.php:1184
   msgid "Welcome to MoniWiki ! This is your first installation"
   msgstr "모니위키로 오신 것을  환영합니다 ! 처음 설치 하셨군요"
   
  -#: ../monisetup.php:935
  +#: ../monisetup.php:1194
   msgid "Default settings are loaded..."
   msgstr "기본 설정을 불러옵니다..."
   
  -#: ../monisetup.php:944
  +#: ../monisetup.php:1202
   msgid "Initial configurations are saved successfully."
   msgstr "초기 설정치가 성공적으로 저장되었습니다."
   
  -#: ../monisetup.php:945
  +#: ../monisetup.php:1203
   msgid "Goto <a href='monisetup.php'>MoniSetup</a> again to configure details"
   msgstr ""
   "<a href='monisetup.php'>MoniSetup</a>으로 다시 가서 자세한 설정을 합니다"
   
  -#: ../monisetup.php:962 ../monisetup.php:964 ../monisetup.php:1060
  -#: ../monisetup.php:1062
  +#: ../monisetup.php:1220 ../monisetup.php:1222 ../monisetup.php:1318
  +#: ../monisetup.php:1320
   #, c-format
   msgid "goto %s"
   msgstr "%s으로 가기"
   
  -#: ../monisetup.php:967
  +#: ../monisetup.php:1225
   msgid "No WikiSeeds are selected"
   msgstr "위키씨앗을 선택하지 않았습니다"
   
  -#: ../monisetup.php:978
  +#: ../monisetup.php:1236
   #, c-format
   msgid "Preview current settings for this %s"
   msgstr "%s 현재 설정을 미리보기"
   
  -#: ../monisetup.php:980
  +#: ../monisetup.php:1238
   #, c-format
   msgid "Read current settings for this %s"
   msgstr "%s 위키의 현재 설정 읽기"
   
  -#: ../monisetup.php:1008
  +#: ../monisetup.php:1266
   msgid "Change your settings"
   msgstr "세팅을 바꾸기"
   
  -#: ../monisetup.php:1010
  -msgid "WARN: You have to enter your Admin Password"
  -msgstr "주의: 관리자 비밀번호를 넣어주시기 바랍니다"
  -
  -#: ../monisetup.php:1012 ../monisetup.php:1055
  +#: ../monisetup.php:1270 ../monisetup.php:1313
   #, c-format
   msgid "WARN: You have no WikiSeed on your %s"
   msgstr "주의: 위키씨앗이 위키 %s에 없습니다"
   
  -#: ../monisetup.php:1013 ../monisetup.php:1056
  +#: ../monisetup.php:1271 ../monisetup.php:1314
   #, c-format
   msgid "If you want to put wikiseeds on your wiki %s now"
   msgstr "위키씨앗을 심기를 원하신다면 %s 누르세요"
   
  -#: ../monisetup.php:1014 ../monisetup.php:1057
  +#: ../monisetup.php:1272 ../monisetup.php:1315
   msgid "Click here"
   msgstr "여기를"
   
  -#: ../monisetup.php:1049 ../monisetup.php:1051
  +#: ../monisetup.php:1307 ../monisetup.php:1309
   msgid "Update"
   msgstr "완료"
   
  @@ -2658,6 +2704,12 @@
   msgid "TrackBack"
   msgstr "트랙백"
   
  +#~ msgid "--Select Category--"
  +#~ msgstr "--카테고리 선택--"
  +
  +#~ msgid "Summary of Change"
  +#~ msgstr "바뀐점 요약"
  +
   #~ msgid "Toggle line numbers"
   #~ msgstr "줄번호 토글"
   
  
  
  
  1.26      +860 -814  moniwiki/locale/po/moniwiki.pot
  
  Index: moniwiki.pot
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/moniwiki.pot,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- moniwiki.pot	9 Jan 2009 10:16:09 -0000	1.25
  +++ moniwiki.pot	13 Jul 2009 15:35:47 -0000	1.26
  @@ -7,7 +7,7 @@
   msgstr ""
   "Project-Id-Version: PACKAGE VERSION\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2009-01-09 01:09+0900\n"
  +"POT-Creation-Date: 2009-07-14 00:35+0900\n"
   "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
   "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
   "Language-Team: LANGUAGE <LL@li.org>\n"
  @@ -15,96 +15,20 @@
   "Content-Type: text/plain; charset=CHARSET\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  -#: ../plugin/aclinfo.php:15
  -msgid "ACL is not enabled on this Wiki"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:21
  -msgid "Your ACL Info"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:23
  -msgid "You are wiki owner"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:25
  -msgid "You are wiki master"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:27
  -msgid "Allowed actions"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:32
  -msgid "Denied actions"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:38
  -msgid "Protected actions"
  -msgstr ""
  -
  -#: ../plugin/admin.php:136 ../plugin/PluginInfo.php:50
  -msgid "Description"
  -msgstr ""
  -
  -#: ../plugin/admin.php:139 ../plugin/PluginInfo.php:56
  -msgid "Author"
  -msgstr ""
  -
  -#: ../plugin/admin.php:141 ../plugin/PluginInfo.php:58
  -msgid "License"
  -msgstr ""
  -
  -#: ../plugin/admin.php:143 ../plugin/PluginInfo.php:60
  -msgid "Depend"
  -msgstr ""
  -
  -#: ../plugin/admin.php:147 ../plugin/PluginInfo.php:64
  -msgid "URL"
  -msgstr ""
  -
  -#: ../plugin/admin.php:191
  -msgid "Enabled plugins"
  -msgstr ""
  -
  -#: ../plugin/admin.php:193
  -msgid "Disabled plugins"
  -msgstr ""
  -
  -#: ../plugin/admin.php:201
  -msgid "Enabled processors"
  -msgstr ""
  -
  -#: ../plugin/admin.php:203
  -msgid "Disabled processors"
  -msgstr ""
  -
  -#: ../plugin/admin.php:206
  -msgid "Plugin/Processor settings are updated"
  -msgstr ""
  -
  -#: ../plugin/admin.php:212
  -msgid "Enable/disable plugins and processors"
  -msgstr ""
  -
  -#: ../plugin/atom.php:64 ../plugin/rss_rc.php:62
  -msgid "show changes"
  -msgstr ""
  -
  -#: ../plugin/Attachment.php:70 ../plugin/Attachment.php:331
  +#: ../plugin/Attachment.php:70 ../plugin/Attachment.php:333
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr ""
   
  -#: ../plugin/Attachment.php:323
  +#: ../plugin/Attachment.php:325
   msgid "or paste a new png picture"
   msgstr ""
   
  -#: ../plugin/Attachment.php:328
  +#: ../plugin/Attachment.php:330
   msgid "or draw a new gif picture"
   msgstr ""
   
  -#: ../plugin/Attachment.php:334
  +#: ../plugin/Attachment.php:336
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
  @@ -118,140 +42,6 @@
   msgid "Translate %s to %s"
   msgstr ""
   
  -#: ../plugin/backup.php:42
  -msgid "Your wiki is backuped successfully"
  -msgstr ""
  -
  -#: ../plugin/backup.php:49
  -msgid "Backup failed !"
  -msgstr ""
  -
  -#: ../plugin/backup.php:54
  -msgid "Did you want to Backup your wiki ?"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:493
  -msgid "This bbs does not exists yet. Please save this page first"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:617
  -msgid "No"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:626
  -msgid "Edit"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1111
  -msgid "Delete"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:657
  -msgid "Please check article numbers."
  -msgstr ""
  -
  -#: ../plugin/bbs.php:737
  -msgid "More"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:782
  -msgid "New"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:784
  -msgid "Read"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:800
  -#, c-format
  -msgid "Total %s articles."
  -msgstr ""
  -
  -#: ../plugin/bbs.php:836
  -#, c-format
  -msgid "Your IP address is not allowed to %s at this BBS"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:890
  -msgid "Successfully deleted."
  -msgstr ""
  -
  -#: ../plugin/bbs.php:922
  -msgid "Fail to post comment."
  -msgstr ""
  -
  -#: ../plugin/bbs.php:932
  -#, c-format
  -msgid "The article %s will be deleted."
  -msgstr ""
  -
  -#: ../plugin/bbs.php:974
  -msgid "Invalid HomePage address."
  -msgstr ""
  -
  -#: ../plugin/bbs.php:987
  -msgid "No Name error."
  -msgstr ""
  -
  -#: ../plugin/bbs.php:997
  -msgid "No Subject error."
  -msgstr ""
  -
  -#: ../plugin/bbs.php:1009 ../plugin/Comment.php:191 ../plugin/Gallery.php:174
  -#: ../wikilib.php:1459 ../wikilib.php:1605
  -msgid ""
  -"Sorry, can not save page because some messages are blocked in this wiki."
  -msgstr ""
  -
  -#: ../plugin/bbs.php:1025
  -msgid "New post added successfully"
  -msgstr ""
  -
  -#: ../plugin/BlogChanges.php:198
  -msgid "Category: "
  -msgstr ""
  -
  -#: ../plugin/BlogChanges.php:200 ../locale/dummy.php:7
  -msgid "BlogChanges"
  -msgstr ""
  -
  -#: ../plugin/BlogChanges.php:246
  -#, c-format
  -msgid "Invalid category expr \"%s\""
  -msgstr ""
  -
  -#: ../plugin/BlogChanges.php:378 ../plugin/BlogChanges.php:380
  -#: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
  -msgid "Anonymous"
  -msgstr ""
  -
  -#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  -#, c-format
  -msgid "%d comment"
  -msgstr ""
  -
  -#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  -#, c-format
  -msgid "%d comments"
  -msgstr ""
  -
  -#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:208
  -#: ../plugin/processor/blog.php:78
  -msgid "Add comment"
  -msgstr ""
  -
  -#: ../plugin/BlogChanges.php:423 ../plugin/processor/blog.php:97
  -msgid "track back"
  -msgstr ""
  -
  -#: ../plugin/BlogChanges.php:443
  -msgid "Previous"
  -msgstr ""
  -
  -#: ../plugin/BlogChanges.php:446
  -msgid "Next"
  -msgstr ""
  -
   #: ../plugin/Blog.php:84
   #, c-format
   msgid "Blog cache of \"%s\" is refreshed"
  @@ -270,7 +60,7 @@
   msgid "Error: No blog entry found!"
   msgstr ""
   
  -#: ../plugin/Blog.php:164 ../plugin/Blog.php:166 ../plugin/Comment.php:221
  +#: ../plugin/Blog.php:164 ../plugin/Blog.php:166 ../plugin/Comment.php:226
   msgid "Error: Don't make a clone!"
   msgstr ""
   
  @@ -311,11 +101,11 @@
   msgid "Title"
   msgstr ""
   
  -#: ../plugin/Blog.php:268 ../wikilib.php:941
  +#: ../plugin/Blog.php:268 ../wikilib.php:972
   msgid "GUI"
   msgstr ""
   
  -#: ../plugin/Blog.php:277 ../plugin/Comment.php:104
  +#: ../plugin/Blog.php:277 ../plugin/Comment.php:109
   msgid "Don't add a signature"
   msgstr ""
   
  @@ -323,31 +113,49 @@
   msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
   msgstr ""
   
  -#: ../plugin/cacheadmin.php:105
  -msgid "You are not WikiMaster!!"
  +#: ../plugin/BlogChanges.php:198
  +msgid "Category: "
   msgstr ""
   
  -#: ../plugin/cacheadmin.php:120
  -msgid "Clear cache dirs"
  +#: ../plugin/BlogChanges.php:200 ../locale/dummy.php:7
  +msgid "BlogChanges"
   msgstr ""
   
  -#: ../plugin/chat.php:36
  -msgid "No messages"
  +#: ../plugin/BlogChanges.php:246
  +#, c-format
  +msgid "Invalid category expr \"%s\""
   msgstr ""
   
  -#: ../plugin/chmod.php:18
  -#, c-format
  -msgid "Permission of \"%s\" changed !"
  +#: ../plugin/BlogChanges.php:378 ../plugin/BlogChanges.php:380
  +#: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
  +msgid "Anonymous"
   msgstr ""
   
  -#: ../plugin/chmod.php:24
  +#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
   #, c-format
  -msgid "Fail to chmod \"%s\" !"
  +msgid "%d comment"
   msgstr ""
   
  -#: ../plugin/chmod.php:35
  +#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
   #, c-format
  -msgid "Change permission of \"%s\""
  +msgid "%d comments"
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:213
  +#: ../plugin/processor/blog.php:78
  +msgid "Add comment"
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:423 ../plugin/processor/blog.php:97
  +msgid "track back"
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:443
  +msgid "Previous"
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:446
  +msgid "Next"
   msgstr ""
   
   #: ../plugin/Clip.php:28
  @@ -370,89 +178,87 @@
   msgid "Cut & Paste a Clipboard Image"
   msgstr ""
   
  -#: ../plugin/Comment.php:87
  +#: ../plugin/Comment.php:92
   msgid "Comment"
   msgstr ""
   
  -#: ../plugin/Comment.php:88 ../wikilib.php:935 ../monisetup.php:1047
  +#: ../plugin/Comment.php:93 ../wikilib.php:966 ../monisetup.php:1305
   msgid "Preview"
   msgstr ""
   
  -#: ../plugin/Comment.php:102
  +#: ../plugin/Comment.php:107
   msgid "Username"
   msgstr ""
   
  -#: ../plugin/Comment.php:125
  +#: ../plugin/Comment.php:130
   msgid "Page is not writable"
   msgstr ""
   
  -#: ../plugin/Comment.php:128
  +#: ../plugin/Comment.php:133
   msgid "You are not allowed to add a comment."
   msgstr ""
   
  -#: ../plugin/Comment.php:129 ../plugin/Keywords.php:377
  +#: ../plugin/Comment.php:134 ../plugin/Keywords.php:459
   msgid "Page does not exists"
   msgstr ""
   
  -#: ../plugin/Comment.php:164 ../plugin/userform.php:118
  -#: ../plugin/userform.php:181 ../plugin/userform.php:204
  +#: ../plugin/Comment.php:169 ../plugin/userform.php:118
  +#: ../plugin/userform.php:181 ../plugin/userform.php:204 ../wikilib.php:1665
   msgid "Invalid ticket !"
   msgstr ""
   
  -#: ../plugin/Comment.php:169 ../plugin/userform.php:120
  -#: ../plugin/userform.php:206
  +#: ../plugin/Comment.php:174 ../plugin/userform.php:120
  +#: ../plugin/userform.php:206 ../wikilib.php:1670
   msgid "You need a ticket !"
   msgstr ""
   
  -#: ../plugin/Comment.php:197
  +#: ../plugin/Comment.php:196 ../plugin/Gallery.php:174 ../plugin/bbs.php:1009
  +#: ../wikilib.php:1509 ../wikilib.php:1686
  +msgid ""
  +"Sorry, can not save page because some messages are blocked in this wiki."
  +msgstr ""
  +
  +#: ../plugin/Comment.php:202
   msgid "Preview comment"
   msgstr ""
   
  -#: ../plugin/Comment.php:328
  +#: ../plugin/Comment.php:333
   #, c-format
   msgid "%s is commented successfully"
   msgstr ""
   
  -#: ../plugin/Comment.php:329
  +#: ../plugin/Comment.php:334
   msgid "Comment added successfully"
   msgstr ""
   
  -#: ../plugin/css.php:33 ../plugin/css.php:41
  -msgid "Back to UserPreferences"
  -msgstr ""
  -
  -#: ../plugin/css.php:67
  -msgid "CSS disabled !"
  -msgstr ""
  -
  -#: ../plugin/Diff.php:207 ../plugin/Info.php:220
  +#: ../plugin/Diff.php:410 ../plugin/Info.php:230
   msgid "No older revisions available"
   msgstr ""
   
  -#: ../plugin/Diff.php:212 ../plugin/Info.php:226 ../plugin/rcsexport.php:13
  +#: ../plugin/Diff.php:415 ../plugin/Info.php:236 ../plugin/rcsexport.php:13
   #: ../plugin/rcsimport.php:13
   msgid "Version info is not available in this wiki"
   msgstr ""
   
  -#: ../plugin/Diff.php:223 ../wikilib.php:1592
  +#: ../plugin/Diff.php:426 ../wikilib.php:1642
   msgid "No difference found"
   msgstr ""
   
  -#: ../plugin/Diff.php:227
  +#: ../plugin/Diff.php:430
   msgid "Difference between versions"
   msgstr ""
   
  -#: ../plugin/Diff.php:229 ../plugin/Diff.php:341
  +#: ../plugin/Diff.php:432 ../plugin/Diff.php:548
   #, c-format
   msgid "Difference between r%s and r%s"
   msgstr ""
   
  -#: ../plugin/Diff.php:232 ../plugin/Diff.php:343
  +#: ../plugin/Diff.php:435 ../plugin/Diff.php:550
   #, c-format
   msgid "Difference between r%s and the current"
   msgstr ""
   
  -#: ../plugin/Diff.php:345
  +#: ../plugin/Diff.php:552
   msgid "latest changes"
   msgstr ""
   
  @@ -501,25 +307,21 @@
   msgstr ""
   
   #: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:38
  -#: ../wikilib.php:1380
  +#: ../wikilib.php:1430
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr ""
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1382
  +#: ../wikilib.php:1432
   msgid "page"
   msgstr ""
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1382
  +#: ../wikilib.php:1432
   msgid "pages"
   msgstr ""
   
  -#: ../plugin/format.php:17
  -msgid "It is a XML format !"
  -msgstr ""
  -
   #: ../plugin/FullSearch.php:15
   #, c-format
   msgid "BackLinks search for \"%s\""
  @@ -534,7 +336,8 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4458
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4496
  +#: ../wikilib.php:948
   msgid "Refresh"
   msgstr ""
   
  @@ -548,8 +351,8 @@
   msgid "You can also click %s to search title.\n"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5348 ../wiki.php:5355
  -#: ../wikilib.php:1390
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5439 ../wiki.php:5446
  +#: ../wikilib.php:1440
   msgid "here"
   msgstr ""
   
  @@ -565,7 +368,7 @@
   msgid "Case-sensitive searching"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:77 ../wikilib.php:2685 ../wikilib.php:2746
  +#: ../plugin/FullSearch.php:77 ../wikilib.php:2762 ../wikilib.php:2824
   msgid "Go"
   msgstr ""
   
  @@ -573,12 +376,12 @@
   msgid "Empty expression"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:144 ../wikilib.php:2706
  +#: ../plugin/FullSearch.php:144 ../wikilib.php:2783
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr ""
   
  -#: ../plugin/Gallery.php:245 ../plugin/UploadedFiles.php:266
  +#: ../plugin/Gallery.php:245 ../plugin/UploadedFiles.php:285
   msgid "No files found"
   msgstr ""
   
  @@ -590,8 +393,8 @@
   msgid "show comments"
   msgstr ""
   
  -#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1446
  -#: ../wikilib.php:1590
  +#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1496
  +#: ../wikilib.php:1640
   #, c-format
   msgid "Go back or return to %s"
   msgstr ""
  @@ -604,10 +407,6 @@
   msgid "Comments is added"
   msgstr ""
   
  -#: ../plugin/html2pdf.php:30
  -msgid "The TCPDF class not found!"
  -msgstr ""
  -
   #: ../plugin/ImportUrl.php:132
   msgid "Import URL"
   msgstr ""
  @@ -616,62 +415,62 @@
   msgid "Diff"
   msgstr ""
   
  -#: ../plugin/Info.php:34
  +#: ../plugin/Info.php:35
   msgid "Revision History"
   msgstr ""
   
  -#: ../plugin/Info.php:37
  +#: ../plugin/Info.php:38
   msgid "ver."
   msgstr ""
   
  -#: ../plugin/Info.php:37
  +#: ../plugin/Info.php:38
   msgid "Date and Changes"
   msgstr ""
   
  -#: ../plugin/Info.php:38
  +#: ../plugin/Info.php:39
   msgid "Editor"
   msgstr ""
   
  -#: ../plugin/Info.php:41
  +#: ../plugin/Info.php:42
   msgid "actions"
   msgstr ""
   
  -#: ../plugin/Info.php:42
  +#: ../plugin/Info.php:43
   msgid "admin."
   msgstr ""
   
  -#: ../plugin/Info.php:58
  +#: ../plugin/Info.php:59
   msgid "Show all revisions"
   msgstr ""
   
  -#: ../plugin/Info.php:91
  +#: ../plugin/Info.php:92
   msgid "Yesterday"
   msgstr ""
   
  -#: ../plugin/Info.php:92
  +#: ../plugin/Info.php:93
   #, c-format
   msgid "%s days ago"
   msgstr ""
   
  -#: ../plugin/Info.php:94
  +#: ../plugin/Info.php:95
   #, c-format
   msgid "%s hours ago"
   msgstr ""
   
  -#: ../plugin/Info.php:96
  +#: ../plugin/Info.php:97
   #, c-format
   msgid "%s min ago"
   msgstr ""
   
  -#: ../plugin/Info.php:166
  +#: ../plugin/Info.php:176
   msgid "diff"
   msgstr ""
   
  -#: ../plugin/Info.php:189 ../plugin/rename.php:80
  +#: ../plugin/Info.php:199 ../plugin/rename.php:80
   msgid "show only"
   msgstr ""
   
  -#: ../plugin/Info.php:193
  +#: ../plugin/Info.php:203
   msgid "purge"
   msgstr ""
   
  @@ -696,91 +495,91 @@
   msgid "Edit new molecule"
   msgstr ""
   
  -#: ../plugin/Keywords.php:332
  +#: ../plugin/Keywords.php:414
   msgid "hits"
   msgstr ""
   
  -#: ../plugin/Keywords.php:340
  +#: ../plugin/Keywords.php:422
   msgid "add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:343
  +#: ../plugin/Keywords.php:425
   msgid "Update keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:345
  +#: ../plugin/Keywords.php:427
   msgid "Add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:346
  +#: ../plugin/Keywords.php:428
   msgid "Add as common words"
   msgstr ""
   
  -#: ../plugin/Keywords.php:347
  +#: ../plugin/Keywords.php:429
   msgid "Unselect all"
   msgstr ""
   
  -#: ../plugin/Keywords.php:348
  +#: ../plugin/Keywords.php:430
   msgid "Suggest new Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:357
  +#: ../plugin/Keywords.php:439
   msgid "select language"
   msgstr ""
   
  -#: ../plugin/Keywords.php:376
  +#: ../plugin/Keywords.php:458
   msgid "You are not able to add keywords."
   msgstr ""
   
  -#: ../plugin/Keywords.php:390
  +#: ../plugin/Keywords.php:472
   #, c-format
   msgid "%s is not found."
   msgstr ""
   
  -#: ../plugin/Keywords.php:506
  +#: ../plugin/Keywords.php:588
   msgid "Common words are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:553
  +#: ../plugin/Keywords.php:635
   #, c-format
   msgid "Keywords for %s are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:579
  +#: ../plugin/Keywords.php:661
   msgid "Keywords are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:581
  +#: ../plugin/Keywords.php:663
   msgid "There are no changes found"
   msgstr ""
   
  -#: ../plugin/Keywords.php:594
  +#: ../plugin/Keywords.php:676
   msgid "Update with these Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:614 ../plugin/Keywords.php:618
  +#: ../plugin/Keywords.php:696 ../plugin/Keywords.php:700
   msgid "alphabetically"
   msgstr ""
   
  -#: ../plugin/Keywords.php:615
  +#: ../plugin/Keywords.php:697
   msgid "by frequency"
   msgstr ""
   
  -#: ../plugin/Keywords.php:617
  +#: ../plugin/Keywords.php:699
   msgid "by size"
   msgstr ""
   
  -#: ../plugin/Keywords.php:623
  +#: ../plugin/Keywords.php:705
   #, c-format
   msgid "Keywords list %s (or %s)"
   msgstr ""
   
  -#: ../plugin/Keywords.php:628
  +#: ../plugin/Keywords.php:710
   #, c-format
   msgid "Select keywords for %s"
   msgstr ""
   
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1271 ../wikilib.php:2693
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1317 ../wikilib.php:2770
   msgid "Use more specific text"
   msgstr ""
   
  @@ -817,212 +616,652 @@
   msgid "Slow Slow"
   msgstr ""
   
  -#: ../plugin/login.php:29
  -msgid "Login:"
  +#: ../plugin/Navigation.php:19
  +msgid "No Index page found"
   msgstr ""
   
  -#: ../plugin/login.php:30
  -msgid "Password:"
  +#: ../plugin/OeKaki.php:36
  +msgid "Draw a new picture"
   msgstr ""
   
  -#: ../plugin/login.php:31
  -msgid "Join"
  +#: ../plugin/OeKaki.php:118
  +msgid "Create new picture"
   msgstr ""
   
  -#: ../plugin/login.php:49 ../plugin/minilogin.php:25
  -msgid "Logout"
  +#: ../plugin/OeKaki.php:127
  +msgid "Edit Image"
   msgstr ""
   
  -#: ../plugin/login.php:50 ../plugin/minilogin.php:24 ../locale/dummy.php:3
  -msgid "UserPreferences"
  +#: ../plugin/PluginInfo.php:29
  +#, c-format
  +msgid "Total %s plugin activated."
   msgstr ""
   
  -#: ../plugin/man_get.php:17
  -msgid "No manpage selected"
  +#: ../plugin/PluginInfo.php:34
  +#, c-format
  +msgid "%s is internal plugin."
   msgstr ""
   
  -#: ../plugin/man_get.php:43
  -msgid "No manpage found"
  +#: ../plugin/PluginInfo.php:36
  +#, c-format
  +msgid "%s plugin is not found."
   msgstr ""
   
  -#: ../plugin/man_get.php:122
  -msgid "Edit man page"
  +#: ../plugin/PluginInfo.php:50 ../plugin/admin.php:136
  +msgid "Description"
   msgstr ""
   
  -#: ../plugin/minilogin.php:18 ../wikilib.php:2081
  -msgid "Login or Join"
  +#: ../plugin/PluginInfo.php:54
  +msgid "Version"
   msgstr ""
   
  -#: ../plugin/minilogin.php:26
  -#, c-format
  -msgid "%s or %s"
  +#: ../plugin/PluginInfo.php:56 ../plugin/admin.php:139
  +msgid "Author"
   msgstr ""
   
  -#: ../plugin/msgfmt.php:75 ../plugin/msgfmt.php:153
  -#, c-format
  -msgid "Translation of %s"
  +#: ../plugin/PluginInfo.php:58 ../plugin/admin.php:141
  +msgid "License"
   msgstr ""
   
  -#: ../plugin/msgfmt.php:84
  -msgid "Translations are successfully updated."
  +#: ../plugin/PluginInfo.php:60 ../plugin/admin.php:143
  +msgid "Depend"
   msgstr ""
   
  -#: ../plugin/msgfmt.php:86
  -msgid "Fail to save translations."
  +#: ../plugin/PluginInfo.php:64 ../plugin/admin.php:147
  +msgid "URL"
   msgstr ""
   
  -#: ../plugin/msgtrans.php:23 ../plugin/userinfo.php:86
  -#, c-format
  -msgid "You are not allowed to \"%s\" !"
  +#: ../plugin/Rating.php:58
  +msgid "Awful!"
   msgstr ""
   
  -#: ../plugin/msgtrans.php:143
  -msgid "Local translation files are successfully translated !\n"
  +#: ../plugin/Rating.php:59
  +msgid "Not the worst ever."
   msgstr ""
   
  -#: ../plugin/Navigation.php:19
  -msgid "No Index page found"
  +#: ../plugin/Rating.php:60
  +msgid "Not bad!"
   msgstr ""
   
  -#: ../plugin/new.php:13 ../plugin/new.php:28
  -msgid "Create a new page"
  +#: ../plugin/Rating.php:61
  +msgid "Useful!"
   msgstr ""
   
  -#: ../plugin/new.php:26
  -msgid "Page Name"
  +#: ../plugin/Rating.php:62
  +msgid "Very Gooood!"
   msgstr ""
   
  -#: ../plugin/new.php:27
  -msgid "Normalize this page name"
  +#: ../plugin/Rating.php:84 ../plugin/Vote.php:67
  +#: ../plugin/security/community.php:26 ../plugin/security/community.php:36
  +#: ../plugin/security/community.php:46 ../plugin/security/community.php:61
  +#: ../plugin/security/mustlogin.php:29 ../plugin/security/mustlogin.php:40
  +#: ../plugin/security/mustlogin.php:51 ../plugin/security/mustlogin.php:67
  +#: ../plugin/security/needtologin.php:29 ../plugin/security/needtologin.php:40
  +#: ../plugin/security/needtologin.php:51 ../plugin/security/userbased.php:62
  +msgid "Please Login or make your ID on this Wiki ;)"
   msgstr ""
   
  -#: ../plugin/OeKaki.php:36
  -msgid "Draw a new picture"
  +#: ../plugin/Rating.php:188
  +msgid "Invalid rating request !"
   msgstr ""
   
  -#: ../plugin/OeKaki.php:118
  -msgid "Create new picture"
  +#: ../plugin/Rating.php:203
  +msgid "Rating successfully !"
   msgstr ""
   
  -#: ../plugin/OeKaki.php:127
  -msgid "Edit Image"
  +#: ../plugin/RecentChanges.php:125
  +msgid "Show changes for "
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:130
  +msgid "days ago"
   msgstr ""
   
  -#: ../plugin/pagelist.php:109 ../plugin/pagelist.php:126
  -#: ../plugin/RecentChanges.php:212
  +#: ../plugin/RecentChanges.php:213 ../plugin/pagelist.php:117
  +#: ../plugin/pagelist.php:134
   #, c-format
   msgid "[%sh %sm ago]"
   msgstr ""
   
  -#: ../plugin/pageview.php:70
  -msgid "First:"
  +#: ../plugin/RecentChanges.php:231
  +msgid "set bookmark"
  +msgstr ""
  +
  +#: ../plugin/SWFUpload.php:136
  +msgid "Files..."
  +msgstr ""
  +
  +#: ../plugin/SWFUpload.php:137
  +msgid "Upload"
  +msgstr ""
  +
  +#: ../plugin/SWFUpload.php:138
  +msgid "Cancel All files"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:28
  +msgid "No page found"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:102
  +msgid "Start:"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:111
  +msgid "End:"
   msgstr ""
   
  -#: ../plugin/pageview.php:75 ../plugin/SlideShow.php:121
  +#: ../plugin/SlideShow.php:121 ../plugin/pageview.php:75
   msgid "Next:"
   msgstr ""
   
  -#: ../plugin/PluginInfo.php:29
  +#: ../plugin/SlideShow.php:131
  +msgid "Prev:"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:138
  +msgid "Return"
  +msgstr ""
  +
  +#: ../plugin/SystemInfo.php:16
  +msgid "Number of Pages"
  +msgstr ""
  +
  +#: ../plugin/SystemInfo.php:17
  +msgid "HTTP Server Version"
  +msgstr ""
  +
  +#: ../plugin/SystemInfo.php:18
  +msgid "MoniWiki Version"
  +msgstr ""
  +
  +#: ../plugin/SystemInfo.php:19
  +msgid "PHP Version"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:57
  +msgid "BackLinks"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:61
  +msgid "Keywords"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:70
   #, c-format
  -msgid "Total %s plugin activated."
  +msgid " from %s"
   msgstr ""
   
  -#: ../plugin/PluginInfo.php:34
  +#: ../plugin/Tour.php:73
   #, c-format
  -msgid "%s is internal plugin."
  +msgid "%s Tour %s"
   msgstr ""
   
  -#: ../plugin/PluginInfo.php:36
  +#: ../plugin/Tour.php:121
  +msgid "links"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:123
  +msgid "deeper"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:124
   #, c-format
  -msgid "%s plugin is not found."
  +msgid "More %s or more %s"
   msgstr ""
   
  -#: ../plugin/PluginInfo.php:54
  -msgid "Version"
  +#: ../plugin/Tour.php:139
  +#, c-format
  +msgid "Total %d related keywords"
   msgstr ""
   
  -#: ../plugin/print.php:24
  +#: ../plugin/Tour.php:142
   #, c-format
  -msgid "Retrieved from %s"
  +msgid "Total %d related pages"
   msgstr ""
   
  -#: ../plugin/print.php:29
  +#: ../plugin/TwinPages.php:13
   #, c-format
  -msgid "last modified %s %s"
  +msgid "TwinPages of %s"
   msgstr ""
   
  -#: ../plugin/processor/blog.php:99
  -msgid "raw"
  +#: ../plugin/TwinPages.php:19 ../wiki.php:5425
  +msgid "See [TwinPages]: "
   msgstr ""
   
  -#: ../plugin/processor/bts.php:178
  -msgid "Save Changes"
  +#: ../plugin/TwinPages.php:21
  +msgid "No TwinPages found."
   msgstr ""
   
  -#: ../plugin/processor/monimarkup.php:502 ../wiki.php:3846
  -msgid "edit"
  +#: ../plugin/UploadFile.php:147 ../plugin/UploadFile.php:161
  +#, c-format
  +msgid "The %s type of %s is not allowed to upload"
   msgstr ""
   
  -#: ../plugin/quicklinks.php:16 ../plugin/scrap.php:35
  -#: ../plugin/subscribe.php:19 ../plugin/subscribe.php:55
  -msgid "Please login or make your ID."
  +#: ../plugin/UploadFile.php:163
  +#, c-format
  +msgid "%s is not allowed to upload"
   msgstr ""
   
  -#: ../plugin/quicklinks.php:22 ../plugin/scrap.php:38
  -#: ../plugin/subscribe.php:61
  -msgid "Goto UserPreferences"
  +#: ../plugin/UploadFile.php:218
  +#, c-format
  +msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
   msgstr ""
   
  -#: ../plugin/quicklinks.php:23
  -msgid ""
  -"If you want to custumize your quicklinks, just make your ID and register "
  -"your email address in the UserPreferences."
  +#: ../plugin/UploadFile.php:251
  +msgid "Please check your php.ini setting"
   msgstr ""
   
  -#: ../plugin/quicklinks.php:38
  -msgid "QucikLinks are updated."
  +#: ../plugin/UploadFile.php:261
  +#, c-format
  +msgid "File \"%s\" is uploaded successfully"
   msgstr ""
   
  -#: ../plugin/quicklinks.php:50
  -msgid "Do you want to customize your quicklinks ?"
  +#: ../plugin/UploadFile.php:300
  +msgid "Files are uploaded successfully"
   msgstr ""
   
  -#: ../plugin/Rating.php:58
  -msgid "Awful!"
  +#: ../plugin/UploadFile.php:344
  +msgid "Replace original file"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:345
  +msgid "Rename if it already exist"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:350 ../plugin/rename.php:69
  +msgid "Rename"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:358
  +#, c-format
  +msgid "or %s."
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:358 ../plugin/UploadForm.php:99
  +msgid "Upload files"
  +msgstr ""
  +
  +#: ../plugin/UploadForm.php:16
  +msgid "Choose File"
  +msgstr ""
  +
  +#: ../plugin/UploadForm.php:97
  +msgid "add files"
  +msgstr ""
  +
  +#: ../plugin/UploadForm.php:98
  +msgid "add a file"
  +msgstr ""
  +
  +#: ../plugin/UploadForm.php:100
  +msgid "Reset"
  +msgstr ""
  +
  +#: ../plugin/UploadForm.php:101
  +msgid "Attachments"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:299
  +msgid "File name"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:300
  +msgid "Size"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:301
  +msgid "Date"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:351
  +msgid "Next page &raquo;"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:353
  +msgid "&laquo; First page"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:445
  +#, c-format
  +msgid "Total %d files"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:450 ../plugin/rcsimport.php:32
  +#: ../plugin/rcsimport.php:88 ../plugin/rename.php:77 ../plugin/revert.php:82
  +#: ../plugin/userinfo.php:37 ../wikilib.php:1156 ../wikilib.php:2081
  +msgid "Password"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:451 ../wikilib.php:1134
  +msgid "Delete selected files"
  +msgstr ""
  +
  +#: ../plugin/VisualTour.php:133
  +msgid "Normal"
  +msgstr ""
  +
  +#: ../plugin/VisualTour.php:135
  +msgid "Wider"
  +msgstr ""
  +
  +#: ../plugin/VisualTour.php:137
  +msgid "Deeper"
  +msgstr ""
  +
  +#: ../plugin/Vote.php:113
  +msgid "Voted successfully"
  +msgstr ""
  +
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2520
  +msgid "Others"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:15
  +msgid "ACL is not enabled on this Wiki"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:21
  +msgid "Your ACL Info"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:23
  +msgid "You are wiki owner"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:25
  +msgid "You are wiki master"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:27
  +msgid "Allowed actions"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:32
  +msgid "Denied actions"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:38
  +msgid "Protected actions"
  +msgstr ""
  +
  +#: ../plugin/admin.php:191
  +msgid "Enabled plugins"
  +msgstr ""
  +
  +#: ../plugin/admin.php:193
  +msgid "Disabled plugins"
  +msgstr ""
  +
  +#: ../plugin/admin.php:201
  +msgid "Enabled processors"
  +msgstr ""
  +
  +#: ../plugin/admin.php:203
  +msgid "Disabled processors"
  +msgstr ""
  +
  +#: ../plugin/admin.php:206
  +msgid "Plugin/Processor settings are updated"
  +msgstr ""
  +
  +#: ../plugin/admin.php:212
  +msgid "Enable/disable plugins and processors"
  +msgstr ""
  +
  +#: ../plugin/atom.php:64 ../plugin/rss_rc.php:62
  +msgid "show changes"
  +msgstr ""
  +
  +#: ../plugin/backup.php:42
  +msgid "Your wiki is backuped successfully"
  +msgstr ""
  +
  +#: ../plugin/backup.php:49
  +msgid "Backup failed !"
  +msgstr ""
  +
  +#: ../plugin/backup.php:54
  +msgid "Did you want to Backup your wiki ?"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:493
  +msgid "This bbs does not exists yet. Please save this page first"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:617
  +msgid "No"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:626
  +msgid "Edit"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1157
  +msgid "Delete"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:657
  +msgid "Please check article numbers."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:737
  +msgid "More"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:782
  +msgid "New"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:784
  +msgid "Read"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:800
  +#, c-format
  +msgid "Total %s articles."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:836
  +#, c-format
  +msgid "Your IP address is not allowed to %s at this BBS"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:890
  +msgid "Successfully deleted."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:922
  +msgid "Fail to post comment."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:932
  +#, c-format
  +msgid "The article %s will be deleted."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:974
  +msgid "Invalid HomePage address."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:987
  +msgid "No Name error."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:997
  +msgid "No Subject error."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:1025
  +msgid "New post added successfully"
  +msgstr ""
  +
  +#: ../plugin/cacheadmin.php:105
  +msgid "You are not WikiMaster!!"
  +msgstr ""
  +
  +#: ../plugin/cacheadmin.php:120
  +msgid "Clear cache dirs"
  +msgstr ""
  +
  +#: ../plugin/chat.php:36
  +msgid "No messages"
  +msgstr ""
  +
  +#: ../plugin/chmod.php:18
  +#, c-format
  +msgid "Permission of \"%s\" changed !"
  +msgstr ""
  +
  +#: ../plugin/chmod.php:24
  +#, c-format
  +msgid "Fail to chmod \"%s\" !"
  +msgstr ""
  +
  +#: ../plugin/chmod.php:35
  +#, c-format
  +msgid "Change permission of \"%s\""
  +msgstr ""
  +
  +#: ../plugin/css.php:33 ../plugin/css.php:41
  +msgid "Back to UserPreferences"
  +msgstr ""
  +
  +#: ../plugin/css.php:67
  +msgid "CSS disabled !"
  +msgstr ""
  +
  +#: ../plugin/format.php:17
  +msgid "It is a XML format !"
  +msgstr ""
  +
  +#: ../plugin/html2pdf.php:30
  +msgid "The TCPDF class not found!"
  +msgstr ""
  +
  +#: ../plugin/login.php:29
  +msgid "Login:"
  +msgstr ""
  +
  +#: ../plugin/login.php:30
  +msgid "Password:"
  +msgstr ""
  +
  +#: ../plugin/login.php:31
  +msgid "Join"
  +msgstr ""
  +
  +#: ../plugin/login.php:49 ../plugin/minilogin.php:25
  +msgid "Logout"
  +msgstr ""
  +
  +#: ../plugin/login.php:50 ../plugin/minilogin.php:24 ../locale/dummy.php:3
  +msgid "UserPreferences"
  +msgstr ""
  +
  +#: ../plugin/man_get.php:17
  +msgid "No manpage selected"
  +msgstr ""
  +
  +#: ../plugin/man_get.php:43
  +msgid "No manpage found"
  +msgstr ""
  +
  +#: ../plugin/man_get.php:122
  +msgid "Edit man page"
  +msgstr ""
  +
  +#: ../plugin/minilogin.php:18 ../wikilib.php:2162
  +msgid "Login or Join"
  +msgstr ""
  +
  +#: ../plugin/minilogin.php:26
  +#, c-format
  +msgid "%s or %s"
  +msgstr ""
  +
  +#: ../plugin/msgfmt.php:75 ../plugin/msgfmt.php:153
  +#, c-format
  +msgid "Translation of %s"
  +msgstr ""
  +
  +#: ../plugin/msgfmt.php:84
  +msgid "Translations are successfully updated."
  +msgstr ""
  +
  +#: ../plugin/msgfmt.php:86
  +msgid "Fail to save translations."
  +msgstr ""
  +
  +#: ../plugin/msgtrans.php:23 ../plugin/userinfo.php:86
  +#, c-format
  +msgid "You are not allowed to \"%s\" !"
  +msgstr ""
  +
  +#: ../plugin/msgtrans.php:143
  +msgid "Local translation files are successfully translated !\n"
  +msgstr ""
  +
  +#: ../plugin/new.php:13 ../plugin/new.php:28
  +msgid "Create a new page"
  +msgstr ""
  +
  +#: ../plugin/new.php:26
  +msgid "Page Name"
  +msgstr ""
  +
  +#: ../plugin/new.php:27
  +msgid "Normalize this page name"
  +msgstr ""
  +
  +#: ../plugin/pageview.php:70
  +msgid "First:"
  +msgstr ""
  +
  +#: ../plugin/print.php:24
  +#, c-format
  +msgid "Retrieved from %s"
  +msgstr ""
  +
  +#: ../plugin/print.php:29
  +#, c-format
  +msgid "last modified %s %s"
  +msgstr ""
  +
  +#: ../plugin/processor/blog.php:99
  +msgid "raw"
   msgstr ""
   
  -#: ../plugin/Rating.php:59
  -msgid "Not the worst ever."
  +#: ../plugin/processor/bts.php:178
  +msgid "Save Changes"
   msgstr ""
   
  -#: ../plugin/Rating.php:60
  -msgid "Not bad!"
  +#: ../plugin/processor/monimarkup.php:507 ../wiki.php:3881
  +msgid "edit"
   msgstr ""
   
  -#: ../plugin/Rating.php:61
  -msgid "Useful!"
  +#: ../plugin/quicklinks.php:16 ../plugin/scrap.php:35
  +#: ../plugin/subscribe.php:19 ../plugin/subscribe.php:55
  +msgid "Please login or make your ID."
   msgstr ""
   
  -#: ../plugin/Rating.php:62
  -msgid "Very Gooood!"
  +#: ../plugin/quicklinks.php:22 ../plugin/scrap.php:38
  +#: ../plugin/subscribe.php:61
  +msgid "Goto UserPreferences"
   msgstr ""
   
  -#: ../plugin/Rating.php:84 ../plugin/security/community.php:26
  -#: ../plugin/security/community.php:36 ../plugin/security/community.php:46
  -#: ../plugin/security/community.php:61 ../plugin/security/mustlogin.php:29
  -#: ../plugin/security/mustlogin.php:40 ../plugin/security/mustlogin.php:51
  -#: ../plugin/security/mustlogin.php:67 ../plugin/security/needtologin.php:29
  -#: ../plugin/security/needtologin.php:40 ../plugin/security/needtologin.php:51
  -#: ../plugin/security/userbased.php:62 ../plugin/Vote.php:67
  -msgid "Please Login or make your ID on this Wiki ;)"
  +#: ../plugin/quicklinks.php:23
  +msgid ""
  +"If you want to custumize your quicklinks, just make your ID and register "
  +"your email address in the UserPreferences."
   msgstr ""
   
  -#: ../plugin/Rating.php:188
  -msgid "Invalid rating request !"
  +#: ../plugin/quicklinks.php:38
  +msgid "QucikLinks are updated."
   msgstr ""
   
  -#: ../plugin/Rating.php:203
  -msgid "Rating successfully !"
  +#: ../plugin/quicklinks.php:50
  +msgid "Do you want to customize your quicklinks ?"
   msgstr ""
   
   #: ../plugin/rawblog.php:63 ../plugin/rawblog.php:73
  @@ -1030,17 +1269,6 @@
   msgid "Delete Blog entry \"%s\""
   msgstr ""
   
  -#: ../plugin/rcsimport.php:32 ../plugin/rcsimport.php:88
  -#: ../plugin/rename.php:77 ../plugin/revert.php:82
  -#: ../plugin/UploadedFiles.php:429 ../plugin/userinfo.php:37
  -#: ../wikilib.php:1110 ../wikilib.php:2000
  -msgid "Password"
  -msgstr ""
  -
  -#: ../plugin/rcsimport.php:76
  -msgid "Page name"
  -msgstr ""
  -
   #: ../plugin/rcs.php:13
   #, c-format
   msgid "%s does not support rcs options."
  @@ -1065,6 +1293,10 @@
   msgid "Only WikiMaster can execute rcs"
   msgstr ""
   
  +#: ../plugin/rcsimport.php:76
  +msgid "Page name"
  +msgstr ""
  +
   #: ../plugin/rcspurge.php:24
   msgid "Invalid rcspurge range"
   msgstr ""
  @@ -1083,18 +1315,6 @@
   msgid "BlogChanges at %s"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:124
  -msgid "Show changes for "
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:129
  -msgid "days ago"
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:230
  -msgid "set bookmark"
  -msgstr ""
  -
   #: ../plugin/referer.php:139
   msgid "Referer history"
   msgstr ""
  @@ -1132,10 +1352,6 @@
   msgid "New name:"
   msgstr ""
   
  -#: ../plugin/rename.php:69 ../plugin/UploadFile.php:350
  -msgid "Rename"
  -msgstr ""
  -
   #: ../plugin/rename.php:74
   msgid "Rename and fix Backlinks"
   msgstr ""
  @@ -1144,7 +1360,7 @@
   msgid "Only WikiMaster can rename this page"
   msgstr ""
   
  -#: ../plugin/rename.php:79 ../wikilib.php:1156
  +#: ../plugin/rename.php:79 ../wikilib.php:1202
   msgid "with revision history"
   msgstr ""
   
  @@ -1186,7 +1402,7 @@
   msgid "Select a tarball file to restore"
   msgstr ""
   
  -#: ../plugin/revert.php:23 ../wiki.php:5350
  +#: ../plugin/revert.php:23 ../wiki.php:5441
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr ""
  @@ -1212,7 +1428,7 @@
   msgid "Are you really want to revert this page ?"
   msgstr ""
   
  -#: ../plugin/revert.php:74
  +#: ../plugin/revert.php:74 ../wikilib.php:963
   msgid "Summary"
   msgstr ""
   
  @@ -1331,26 +1547,6 @@
   msgid "Trackback sent"
   msgstr ""
   
  -#: ../plugin/SlideShow.php:28
  -msgid "No page found"
  -msgstr ""
  -
  -#: ../plugin/SlideShow.php:102
  -msgid "Start:"
  -msgstr ""
  -
  -#: ../plugin/SlideShow.php:111
  -msgid "End:"
  -msgstr ""
  -
  -#: ../plugin/SlideShow.php:131
  -msgid "Prev:"
  -msgstr ""
  -
  -#: ../plugin/SlideShow.php:138
  -msgid "Return"
  -msgstr ""
  -
   #: ../plugin/subscribe.php:24 ../plugin/subscribe.php:28
   msgid "You did'nt subscribed any pages yet."
   msgstr ""
  @@ -1397,34 +1593,6 @@
   msgid "Subscribed pages"
   msgstr ""
   
  -#: ../plugin/SWFUpload.php:136
  -msgid "Files..."
  -msgstr ""
  -
  -#: ../plugin/SWFUpload.php:137
  -msgid "Upload"
  -msgstr ""
  -
  -#: ../plugin/SWFUpload.php:138
  -msgid "Cancel All files"
  -msgstr ""
  -
  -#: ../plugin/SystemInfo.php:16
  -msgid "Number of Pages"
  -msgstr ""
  -
  -#: ../plugin/SystemInfo.php:17
  -msgid "HTTP Server Version"
  -msgstr ""
  -
  -#: ../plugin/SystemInfo.php:18
  -msgid "MoniWiki Version"
  -msgstr ""
  -
  -#: ../plugin/SystemInfo.php:19
  -msgid "PHP Version"
  -msgstr ""
  -
   #: ../plugin/theme.php:29
   msgid "Theme cleared. Goto UserPreferences."
   msgstr ""
  @@ -1449,47 +1617,6 @@
   msgid "Invalid use of ticket"
   msgstr ""
   
  -#: ../plugin/Tour.php:81
  -msgid "BackLinks"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:85
  -msgid "Keywords"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:94
  -#, c-format
  -msgid " from %s"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:97
  -#, c-format
  -msgid "%s Tour %s"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:156
  -msgid "links"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:158
  -msgid "deeper"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:159
  -#, c-format
  -msgid "More %s or more %s"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:174
  -#, c-format
  -msgid "Total %d related keywords"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:177
  -#, c-format
  -msgid "Total %d related pages"
  -msgstr ""
  -
   #: ../plugin/trackback.php:53
   msgid "TrackBack is not activated !"
   msgstr ""
  @@ -1516,93 +1643,6 @@
   msgid "No TrackBack entry found for %s"
   msgstr ""
   
  -#: ../plugin/TwinPages.php:13
  -#, c-format
  -msgid "TwinPages of %s"
  -msgstr ""
  -
  -#: ../plugin/TwinPages.php:19 ../wiki.php:5334
  -msgid "See [TwinPages]: "
  -msgstr ""
  -
  -#: ../plugin/TwinPages.php:21
  -msgid "No TwinPages found."
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:280
  -msgid "File name"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:281
  -msgid "Size"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:282
  -msgid "Date"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:330
  -msgid "Next page &raquo;"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:332
  -msgid "&laquo; First page"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:424
  -#, c-format
  -msgid "Total %d files"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:430 ../wikilib.php:1088
  -msgid "Delete selected files"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:147 ../plugin/UploadFile.php:161
  -#, c-format
  -msgid "The %s type of %s is not allowed to upload"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:163
  -#, c-format
  -msgid "%s is not allowed to upload"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:218
  -#, c-format
  -msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:251
  -msgid "Please check your php.ini setting"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:261
  -#, c-format
  -msgid "File \"%s\" is uploaded successfully"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:300
  -msgid "Files are uploaded successfully"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:344
  -msgid "Replace original file"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:345
  -msgid "Rename if it already exist"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:358
  -#, c-format
  -msgid "or %s."
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:358
  -msgid "Upload files"
  -msgstr ""
  -
   #: ../plugin/userform.php:35 ../plugin/userform.php:38
   msgid "Successfully confirmed"
   msgstr ""
  @@ -1650,7 +1690,7 @@
   msgid "Cookie deleted !"
   msgstr ""
   
  -#: ../plugin/userform.php:107 ../wikilib.php:2151
  +#: ../plugin/userform.php:107 ../wikilib.php:2232
   msgid "E-mail new password"
   msgstr ""
   
  @@ -1731,8 +1771,8 @@
   msgid "You are not allowed to register on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5288
  -#: ../wiki.php:5299
  +#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5379
  +#: ../wiki.php:5390
   msgid "Please contact WikiMasters"
   msgstr ""
   
  @@ -1841,22 +1881,6 @@
   msgid "User \"%s\" are deleted !"
   msgstr ""
   
  -#: ../plugin/VisualTour.php:133
  -msgid "Normal"
  -msgstr ""
  -
  -#: ../plugin/VisualTour.php:135
  -msgid "Wider"
  -msgstr ""
  -
  -#: ../plugin/VisualTour.php:137
  -msgid "Deeper"
  -msgstr ""
  -
  -#: ../plugin/Vote.php:113
  -msgid "Voted successfully"
  -msgstr ""
  -
   #: ../plugin/whois.php:119
   #, c-format
   msgid "Could not connect to %s server"
  @@ -1867,143 +1891,143 @@
   msgid "Whois search result for %s"
   msgstr ""
   
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2439
  -msgid "Others"
  -msgstr ""
  -
  -#: ../wiki.php:1238
  +#: ../wiki.php:1249
   #, c-format
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1658
  +#: ../wiki.php:1671
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
  -#: ../wiki.php:1668
  +#: ../wiki.php:1681
   msgid "File does not exist"
   msgstr ""
   
  -#: ../wiki.php:2043
  +#: ../wiki.php:2057
   #, c-format
   msgid "File '%s' does not exist."
   msgstr ""
   
  -#: ../wiki.php:2919 ../wiki.php:2930 ../wiki.php:5528
  +#: ../wiki.php:2947 ../wiki.php:2958 ../wiki.php:5619
   msgid "Invalid ajax action."
   msgstr ""
   
  -#: ../wiki.php:3427
  +#: ../wiki.php:3456
   msgid "Tags:"
   msgstr ""
   
  -#: ../wiki.php:3455
  +#: ../wiki.php:3484
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:3455
  +#: ../wiki.php:3484
   #, c-format
   msgid "TwinPages"
   msgstr ""
   
  -#: ../wiki.php:3460
  +#: ../wiki.php:3489
   msgid "See [TwinPages]:"
   msgstr ""
   
  -#: ../wiki.php:4026
  +#: ../wiki.php:4061
   msgid "Sister Sites Index"
   msgstr ""
   
  -#: ../wiki.php:4454 ../locale/dummy.php:6
  +#: ../wiki.php:4492 ../locale/dummy.php:6
   msgid "EditText"
   msgstr ""
   
  -#: ../wiki.php:4456
  +#: ../wiki.php:4494
   msgid "NotEditable"
   msgstr ""
   
  -#: ../wiki.php:4460 ../locale/dummy.php:6
  +#: ../wiki.php:4498 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:4461 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4499 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr ""
   
  -#: ../wiki.php:4868
  +#: ../wiki.php:4938
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5287
  +#: ../wiki.php:5202
  +msgid "Someone logged in at another place !"
  +msgstr ""
  +
  +#: ../wiki.php:5378
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5298
  +#: ../wiki.php:5389
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:5336 ../wiki.php:5345 ../wikilib.php:1370
  +#: ../wiki.php:5427 ../wiki.php:5436 ../wikilib.php:1420
   msgid "Create this page"
   msgstr ""
   
  -#: ../wiki.php:5347
  +#: ../wiki.php:5438
   #, c-format
   msgid "%s has saved revisions"
   msgstr ""
   
  -#: ../wiki.php:5348 ../wiki.php:5355
  +#: ../wiki.php:5439 ../wiki.php:5446
   #, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr ""
   
  -#: ../wiki.php:5353
  +#: ../wiki.php:5444
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr ""
   
  -#: ../wiki.php:5360
  +#: ../wiki.php:5451
   msgid "Please try to search with another word"
   msgstr ""
   
  -#: ../wiki.php:5372
  +#: ../wiki.php:5463
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr ""
   
  -#: ../wiki.php:5375
  +#: ../wiki.php:5466
   msgid "You have no templates"
   msgstr ""
   
  -#: ../wiki.php:5377
  +#: ../wiki.php:5468
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
   
  -#: ../wiki.php:5388
  +#: ../wiki.php:5479
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
  -#: ../wiki.php:5530
  +#: ../wiki.php:5621
   msgid "Invalid macro action."
   msgstr ""
   
  -#: ../wiki.php:5540
  +#: ../wiki.php:5631
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr ""
   
  -#: ../wiki.php:5560
  +#: ../wiki.php:5651
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:5563
  +#: ../wiki.php:5654
   msgid "Please enter the valid password"
   msgstr ""
   
  -#: ../wikilib.php:656
  +#: ../wikilib.php:658
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -2020,576 +2044,598 @@
   "no trailing white space allowed after tables or titles.<br />\n"
   msgstr ""
   
  -#: ../wikilib.php:693
  +#: ../wikilib.php:695
   msgid "You are not allowed to edit this page !"
   msgstr ""
   
  -#: ../wikilib.php:699
  +#: ../wikilib.php:702
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
  -#: ../wikilib.php:824
  +#: ../wikilib.php:827
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   
  -#: ../wikilib.php:826
  +#: ../wikilib.php:829
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr ""
   
  -#: ../wikilib.php:830
  +#: ../wikilib.php:833
   msgid "Merge"
   msgstr ""
   
  -#: ../wikilib.php:831
  +#: ../wikilib.php:834
   msgid "Merge manually"
   msgstr ""
   
  -#: ../wikilib.php:832
  +#: ../wikilib.php:835
   msgid "Ignore conflicts"
   msgstr ""
   
  -#: ../wikilib.php:859
  +#: ../wikilib.php:862
   msgid "ReduceEditor"
   msgstr ""
   
  -#: ../wikilib.php:860
  +#: ../wikilib.php:863
   msgid "EnlargeEditor"
   msgstr ""
   
  -#: ../wikilib.php:864 ../locale/dummy.php:6
  +#: ../wikilib.php:867 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
  -#: ../wikilib.php:866
  +#: ../wikilib.php:869
   msgid "HelpOnEditing"
   msgstr ""
   
  -#: ../wikilib.php:898
  +#: ../wikilib.php:901
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:918
  -msgid "--Select Category--"
  +#: ../wikilib.php:923
  +msgid "Category"
   msgstr ""
   
  -#: ../wikilib.php:928
  -msgid "Minor edit"
  +#: ../wikilib.php:931
  +msgid " Select "
   msgstr ""
   
  -#: ../wikilib.php:932
  -msgid "Summary of Change"
  +#: ../wikilib.php:942
  +msgid "Minor edit"
   msgstr ""
   
  -#: ../wikilib.php:937
  +#: ../wikilib.php:968
   msgid "Skip to preview"
   msgstr ""
   
  -#: ../wikilib.php:949 ../wikilib.php:2084 ../wikilib.php:2138
  +#: ../wikilib.php:981 ../wikilib.php:2165 ../wikilib.php:2219
   msgid "Save"
   msgstr ""
   
  -#: ../wikilib.php:1022
  +#: ../wikilib.php:1068
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:1027
  +#: ../wikilib.php:1073
   #, c-format
   msgid "%s is not valid action"
   msgstr ""
   
  -#: ../wikilib.php:1029
  +#: ../wikilib.php:1075
   msgid "Is it valid action ?"
   msgstr ""
   
  -#: ../wikilib.php:1076
  +#: ../wikilib.php:1122
   #, c-format
   msgid "File '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:1078
  +#: ../wikilib.php:1124
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1083
  +#: ../wikilib.php:1129
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:1085
  +#: ../wikilib.php:1131
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1095 ../wikilib.php:1115
  +#: ../wikilib.php:1141 ../wikilib.php:1161
   msgid "No files are selected !"
   msgstr ""
   
  -#: ../wikilib.php:1108
  +#: ../wikilib.php:1154
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
  -#: ../wikilib.php:1112
  +#: ../wikilib.php:1158
   msgid "Delete selected file"
   msgstr ""
   
  -#: ../wikilib.php:1133
  +#: ../wikilib.php:1179
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr ""
   
  -#: ../wikilib.php:1148
  +#: ../wikilib.php:1194
   msgid "Please delete this file manually."
   msgstr ""
   
  -#: ../wikilib.php:1150
  +#: ../wikilib.php:1196
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr ""
   
  -#: ../wikilib.php:1203
  +#: ../wikilib.php:1249
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
  -#: ../wikilib.php:1372
  +#: ../wikilib.php:1422
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
   
  -#: ../wikilib.php:1372
  +#: ../wikilib.php:1422
   msgid "title"
   msgstr ""
   
  -#: ../wikilib.php:1386
  +#: ../wikilib.php:1436
   msgid "Please try to fulltext search"
   msgstr ""
   
  -#: ../wikilib.php:1389
  +#: ../wikilib.php:1439
   #, c-format
   msgid "You can also click %s to fulltext search.\n"
   msgstr ""
   
  -#: ../wikilib.php:1434 ../wikilib.php:1535
  +#: ../wikilib.php:1484 ../wikilib.php:1585
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr ""
   
  -#: ../wikilib.php:1440
  +#: ../wikilib.php:1490
   msgid "Section edit is not valid for non-exists page."
   msgstr ""
   
  -#: ../wikilib.php:1473 ../wikilib.php:1651
  +#: ../wikilib.php:1523 ../wikilib.php:1732
   msgid "mail does not supported by default."
   msgstr ""
   
  -#: ../wikilib.php:1477 ../wikilib.php:1655
  +#: ../wikilib.php:1527 ../wikilib.php:1736
   msgid "Sent notification mail."
   msgstr ""
   
  -#: ../wikilib.php:1479 ../wikilib.php:1657
  +#: ../wikilib.php:1529 ../wikilib.php:1738
   msgid "No subscribers found."
   msgstr ""
   
  -#: ../wikilib.php:1484 ../wikilib.php:1662
  +#: ../wikilib.php:1534 ../wikilib.php:1743
   #, c-format
   msgid "%s is not editable"
   msgstr ""
   
  -#: ../wikilib.php:1486 ../wikilib.php:1664
  +#: ../wikilib.php:1536 ../wikilib.php:1745
   #, c-format
   msgid "%s is saved"
   msgstr ""
   
  -#: ../wikilib.php:1526
  +#: ../wikilib.php:1576
   msgid "Goto Editor"
   msgstr ""
   
  -#: ../wikilib.php:1540
  +#: ../wikilib.php:1590
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr ""
   
  -#: ../wikilib.php:1541
  +#: ../wikilib.php:1591
   #, c-format
   msgid "%s is merged successfully"
   msgstr ""
   
  -#: ../wikilib.php:1545
  +#: ../wikilib.php:1595
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1546
  +#: ../wikilib.php:1596
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr ""
   
  -#: ../wikilib.php:1547
  +#: ../wikilib.php:1597
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1548
  +#: ../wikilib.php:1598
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1553
  +#: ../wikilib.php:1603
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr ""
   
  -#: ../wikilib.php:1554
  +#: ../wikilib.php:1604
   msgid "Please resolve conflicts manually."
   msgstr ""
   
  -#: ../wikilib.php:1557
  +#: ../wikilib.php:1607
   #, c-format
   msgid "Force merging for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1558
  +#: ../wikilib.php:1608
   msgid "Please be careful, you could damage useful information."
   msgstr ""
   
  -#: ../wikilib.php:1572
  +#: ../wikilib.php:1622
   msgid "Conflict error!"
   msgstr ""
   
  -#: ../wikilib.php:1611
  +#: ../wikilib.php:1692
   #, c-format
   msgid "Preview of %s"
   msgstr ""
   
  -#: ../wikilib.php:1696
  +#: ../wikilib.php:1777
   msgid "Nobody subscribed to this page."
   msgstr ""
   
  -#: ../wikilib.php:1715
  +#: ../wikilib.php:1796
   #, c-format
   msgid "%s page is modified"
   msgstr ""
   
  -#: ../wikilib.php:1744
  +#: ../wikilib.php:1825
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:1757
  +#: ../wikilib.php:1838
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:1762
  +#: ../wikilib.php:1843
   msgid "Mails are sent successfully"
   msgstr ""
   
  -#: ../wikilib.php:1763
  +#: ../wikilib.php:1844
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1765
  +#: ../wikilib.php:1846
   msgid "Fail to send mail"
   msgstr ""
   
  -#: ../wikilib.php:1776
  +#: ../wikilib.php:1857
   msgid "This wiki does not support sendmail"
   msgstr ""
   
  -#: ../wikilib.php:1874
  +#: ../wikilib.php:1955
   msgid "Invalid regular expression !"
   msgstr ""
   
  -#: ../wikilib.php:1898
  +#: ../wikilib.php:1979
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:1901
  +#: ../wikilib.php:1982
   msgid "Infinite loop possible!"
   msgstr ""
   
  -#: ../wikilib.php:2016
  +#: ../wikilib.php:2097
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:2017
  +#: ../wikilib.php:2098
   msgid "OpenID"
   msgstr ""
   
  -#: ../wikilib.php:2029 ../wikilib.php:2156
  +#: ../wikilib.php:2110 ../wikilib.php:2237
   msgid "ID"
   msgstr ""
   
  -#: ../wikilib.php:2064 ../wikilib.php:2149
  +#: ../wikilib.php:2145 ../wikilib.php:2230
   msgid "Make profile"
   msgstr ""
   
  -#: ../wikilib.php:2066
  +#: ../wikilib.php:2147
   msgid "password again"
   msgstr ""
   
  -#: ../wikilib.php:2068 ../wikilib.php:2117
  +#: ../wikilib.php:2149 ../wikilib.php:2198
   msgid "Mail"
   msgstr ""
   
  -#: ../wikilib.php:2090
  +#: ../wikilib.php:2171
   msgid "New password"
   msgstr ""
   
  -#: ../wikilib.php:2095
  +#: ../wikilib.php:2176
   msgid "Nickname"
   msgstr ""
   
  -#: ../wikilib.php:2118
  +#: ../wikilib.php:2199
   msgid "Time Zone"
   msgstr ""
   
  -#: ../wikilib.php:2127
  +#: ../wikilib.php:2208
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:2440
  +#: ../wikilib.php:2521
   msgid "Show all"
   msgstr ""
   
  -#: ../wikilib.php:2582
  +#: ../wikilib.php:2659
   msgid "Contents"
   msgstr ""
   
  -#: ../wikilib.php:2702
  +#: ../wikilib.php:2779
   #, c-format
   msgid "Title search for \"%s\""
   msgstr ""
   
  -#: ../monisetup.php:35
  +#: ../monisetup.php:38
   msgid "Check a dba configuration"
   msgstr ""
   
  -#: ../monisetup.php:47
  +#: ../monisetup.php:50
   #, c-format
   msgid "%s is selected."
   msgstr ""
   
  -#: ../monisetup.php:54
  +#: ../monisetup.php:57
   msgid "Check a AcceptPathInfo setting for Apache 2.x.xx"
   msgstr ""
   
  -#: ../monisetup.php:61 ../monisetup.php:67
  +#: ../monisetup.php:64 ../monisetup.php:70
   msgid "Off"
   msgstr ""
   
  -#: ../monisetup.php:69
  +#: ../monisetup.php:72
   msgid "On"
   msgstr ""
   
  -#: ../monisetup.php:243
  +#: ../monisetup.php:426
   msgid ""
   "Please change the permission of some directories writable on your server to "
   "initialize your Wiki."
   msgstr ""
   
  -#: ../monisetup.php:245
  +#: ../monisetup.php:428
   #, c-format
   msgid ""
   "If you want a more safe wiki, try to change the permission of directories "
   "with %s."
   msgstr ""
   
  -#: ../monisetup.php:248
  +#: ../monisetup.php:431
   msgid ""
   "or use <tt>monisetup.sh</tt> and select 777 or <font color='red'>2777</font>"
   msgstr ""
   
  -#: ../monisetup.php:250
  +#: ../monisetup.php:433
   msgid ""
   "After execute one of above two commands, just <a href='monisetup.php'>reload "
   "this <tt>monisetup.php</tt></a> would make a new initial <tt>config.php</tt> "
   "with detected parameters for your wiki."
   msgstr ""
   
  -#: ../monisetup.php:251
  +#: ../monisetup.php:434
   msgid "Reload"
   msgstr ""
   
  -#: ../monisetup.php:254
  +#: ../monisetup.php:437
   msgid "WARN"
   msgstr ""
   
  -#: ../monisetup.php:255
  +#: ../monisetup.php:438
   msgid ""
   "Please execute the following command after you have completed your "
   "configuration."
   msgstr ""
   
  -#: ../monisetup.php:266
  +#: ../monisetup.php:442 ../monisetup.php:1268
  +msgid "WARN: You have to enter your Admin Password"
  +msgstr ""
  +
  +#: ../monisetup.php:445
  +msgid ""
  +"WARN: If you have any permission to execute 'secure.sh'. press the following "
  +"button"
  +msgstr ""
  +
  +#: ../monisetup.php:447
  +msgid "Protect my config.php now!"
  +msgstr ""
  +
  +#: ../monisetup.php:464
   #, c-format
   msgid "FATAL: %s directory is not writable"
   msgstr ""
   
  -#: ../monisetup.php:267
  +#: ../monisetup.php:465
   msgid "Please execute the following command."
   msgstr ""
   
  -#: ../monisetup.php:286
  +#: ../monisetup.php:484
   #, c-format
   msgid "%s directory is not writable"
   msgstr ""
   
  -#: ../monisetup.php:303
  +#: ../monisetup.php:501
   #, c-format
   msgid "%s is not writable"
   msgstr ""
   
  -#: ../monisetup.php:310 ../monisetup.php:316
  +#: ../monisetup.php:508 ../monisetup.php:514
   #, c-format
   msgid "%s is created now"
   msgstr ""
   
  -#: ../monisetup.php:326
  +#: ../monisetup.php:524
   #, c-format
   msgid "%s is writable"
   msgstr ""
   
  -#: ../monisetup.php:343
  +#: ../monisetup.php:541
   #, c-format
   msgid ""
   "If you want to check .htaccess file please delete '%s' file and reload it."
   msgstr ""
   
  -#: ../monisetup.php:346
  +#: ../monisetup.php:544
   msgid "Security check for 'upload_dir'."
   msgstr ""
   
  -#: ../monisetup.php:378
  +#: ../monisetup.php:576
   msgid ".htaccess for 'imgs_dir'."
   msgstr ""
   
  -#: ../monisetup.php:448
  +#: ../monisetup.php:646
   msgid "Fail"
   msgstr ""
   
  -#: ../monisetup.php:454
  +#: ../monisetup.php:652
   msgid "Unable to write .htaccess"
   msgstr ""
   
  -#: ../monisetup.php:550
  +#: ../monisetup.php:756
   msgid "Click here to toggle all"
   msgstr ""
   
  -#: ../monisetup.php:551
  +#: ../monisetup.php:757
   msgid "Deselect all"
   msgstr ""
   
  -#: ../monisetup.php:556
  +#: ../monisetup.php:762
   msgid "Please be careful to deselect these pages"
   msgstr ""
   
  -#: ../monisetup.php:831
  +#: ../monisetup.php:1056
   msgid "MoniWiki"
   msgstr ""
   
  -#: ../monisetup.php:834
  +#: ../monisetup.php:1059
   msgid "'config.php' is not writable !"
   msgstr ""
   
  -#: ../monisetup.php:835
  +#: ../monisetup.php:1060
   msgid ""
   "Please execute <tt>'monisetup.sh'</tt> or <tt>chmod a+w config.php</tt> "
   "first to change your settings."
   msgstr ""
   
  -#: ../monisetup.php:862
  +#: ../monisetup.php:1062
  +msgid "Unprotect my config.php"
  +msgstr ""
  +
  +#: ../monisetup.php:1095
  +msgid "config.php is protected now !"
  +msgstr ""
  +
  +#: ../monisetup.php:1100 ../monisetup.php:1119
   msgid "Invalid password error !"
   msgstr ""
   
  -#: ../monisetup.php:863
  +#: ../monisetup.php:1101 ../monisetup.php:1120
   msgid ""
   "If you can't remember your admin password, delete password entry in the "
   "'config.php' and restart 'monisetup'"
   msgstr ""
   
  -#: ../monisetup.php:895
  +#: ../monisetup.php:1106
  +msgid "config.php is unprotected now !"
  +msgstr ""
  +
  +#: ../monisetup.php:1152
   #, c-format
   msgid "Updated Configutations for this %s"
   msgstr ""
   
  -#: ../monisetup.php:914
  +#: ../monisetup.php:1170
   msgid "Configurations are saved successfully"
   msgstr ""
   
  -#: ../monisetup.php:915
  +#: ../monisetup.php:1171
   msgid ""
   "WARN: Please check <a href='monisetup.php'> your saved configurations</a>"
   msgstr ""
   
  -#: ../monisetup.php:916
  +#: ../monisetup.php:1172
   msgid "If all is good, change 'config.php' permission as 644."
   msgstr ""
   
  -#: ../monisetup.php:928
  +#: ../monisetup.php:1184
   msgid "Welcome to MoniWiki ! This is your first installation"
   msgstr ""
   
  -#: ../monisetup.php:935
  +#: ../monisetup.php:1194
   msgid "Default settings are loaded..."
   msgstr ""
   
  -#: ../monisetup.php:944
  +#: ../monisetup.php:1202
   msgid "Initial configurations are saved successfully."
   msgstr ""
   
  -#: ../monisetup.php:945
  +#: ../monisetup.php:1203
   msgid "Goto <a href='monisetup.php'>MoniSetup</a> again to configure details"
   msgstr ""
   
  -#: ../monisetup.php:962 ../monisetup.php:964 ../monisetup.php:1060
  -#: ../monisetup.php:1062
  +#: ../monisetup.php:1220 ../monisetup.php:1222 ../monisetup.php:1318
  +#: ../monisetup.php:1320
   #, c-format
   msgid "goto %s"
   msgstr ""
   
  -#: ../monisetup.php:967
  +#: ../monisetup.php:1225
   msgid "No WikiSeeds are selected"
   msgstr ""
   
  -#: ../monisetup.php:978
  +#: ../monisetup.php:1236
   #, c-format
   msgid "Preview current settings for this %s"
   msgstr ""
   
  -#: ../monisetup.php:980
  +#: ../monisetup.php:1238
   #, c-format
   msgid "Read current settings for this %s"
   msgstr ""
   
  -#: ../monisetup.php:1008
  +#: ../monisetup.php:1266
   msgid "Change your settings"
   msgstr ""
   
  -#: ../monisetup.php:1010
  -msgid "WARN: You have to enter your Admin Password"
  -msgstr ""
  -
  -#: ../monisetup.php:1012 ../monisetup.php:1055
  +#: ../monisetup.php:1270 ../monisetup.php:1313
   #, c-format
   msgid "WARN: You have no WikiSeed on your %s"
   msgstr ""
   
  -#: ../monisetup.php:1013 ../monisetup.php:1056
  +#: ../monisetup.php:1271 ../monisetup.php:1314
   #, c-format
   msgid "If you want to put wikiseeds on your wiki %s now"
   msgstr ""
   
  -#: ../monisetup.php:1014 ../monisetup.php:1057
  +#: ../monisetup.php:1272 ../monisetup.php:1315
   msgid "Click here"
   msgstr ""
   
  -#: ../monisetup.php:1049 ../monisetup.php:1051
  +#: ../monisetup.php:1307 ../monisetup.php:1309
   msgid "Update"
   msgstr ""
   
  
  
  


wkpark      2009/07/14 00:41:18

  Modified:    .        wikilib.php
  Log:
  fix for css styling.
  more i18nize
  
  Revision  Changes    Path
  1.274     +48 -15    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.273
  retrieving revision 1.274
  diff -u -r1.273 -r1.274
  --- wikilib.php	1 May 2009 16:47:23 -0000	1.273
  +++ wikilib.php	13 Jul 2009 15:41:18 -0000	1.274
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.273 2009/05/01 16:47:23 wkpark Exp $
  +// $Id: wikilib.php,v 1.274 2009/07/13 15:41:18 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -698,6 +698,7 @@
     $formatter->send_header("",$options);
     if ($options['section'])
       $sec=' (Section)';
  +  $options['msgtype'] = isset($options['msgtype']) ? $options['msgtype'] : 'warn timer';
     $formatter->send_title(sprintf(_("Edit %s"),$options['page']).$sec,"",$options);
     //print '<div id="editor_area">'.macro_EditText($formatter,$value,$options).'</div>';
     print macro_EditText($formatter,$value,$options);
  @@ -913,13 +914,24 @@
     $raw_body = str_replace(array("&","<"),array("&amp;","&lt;"),$raw_body);
   
     # get categories
  +  $has_extra = 0;
     if ($DBInfo->use_category and !$options['nocategories']) {
  +    $has_extra = 1;
       $categories=array();
       $categories= $DBInfo->getLikePages($DBInfo->category_regex);
       if ($categories) {
  -      $select_category="<select name='category' tabindex='4'>\n<option value=''>"._("--Select Category--")."</option>\n";
  -      foreach ($categories as $category)
  -        $select_category.="<option value='$category'>$category</option>\n";
  +      $select_category="<label for='category-select'>"._("Category")."</label><select id='category-select' name='category' tabindex='4'>\n";
  +      $mlen = 0;
  +      $opts = '';
  +      foreach ($categories as $category) {
  +        $len = mb_strwidth($category);
  +        if ($len > $mlen) $mlen = $len;
  +        $opts .= "<option value='$category'>$category</option>\n";
  +      }
  +      $lab = _(" Select ");
  +      $len = intval(($mlen - mb_strwidth($lab)) / 2);
  +      $pad = str_repeat('-', $len);
  +      $select_category.= "<option value=''>".$pad.$lab.$pad."</option>\n".$opts;
         $select_category.="</select>\n";
       }
     }
  @@ -933,29 +945,37 @@
   
     $captcha='';
     if ($use_js and $DBInfo->use_ticket and $options['id'] == 'Anonymous') {
  +     $msg = _("Refresh");
        $seed=md5(base64_encode(time()));
  -     $ticketimg=$formatter->link_url($formatter->page->urlname,'?action=ticket&amp;__seed='.$seed);
  +     $ticketimg=$formatter->link_url($formatter->page->urlname,'?action=ticket&amp;__seed='.$seed.'&amp;t=');
  +     $trows = '';
  +     if ($has_extra) $trows = " rowspan='2' width='10%'";
  +     $onclick = " onclick=\"document.getElementById('captcha_img').src ='".$ticketimg."'+ Math.random()\"";
        $captcha=<<<EXTRA
  -  <div class='captcha'><span class='captchaImg'><img src="$ticketimg" alt="captcha" /></span><input type="text" size="10" name="check" />
  +  <td$trows>
  +  <div class='captcha'><div><span class='captchaImg'><img id="captcha_img" src="$ticketimg" alt="captcha" /></span></div>
  +  <button type='button' class='refresh-icon'$onclick><span>$msg</span></button><input type="text" tabindex="4" size="10" name="check" />
   <input type="hidden" name="__seed" value="$seed" /></div>
  +  </td>
   EXTRA;
     }
   
  -  $summary_msg=_("Summary of Change");
  +  $summary_msg=_("Summary");
     if (!$options['simple']) {
  -    $preview_btn='<input type="submit" tabindex="6" name="button_preview" '.
  -      'value="'._("Preview").'" />';
  +    $preview_btn='<button type="submit" tabindex="6" name="button_preview" value="1"><span>'.
  +      _("Preview").'</span></button>';
       if ($preview)
         $skip_preview= ' '.$formatter->link_to('#preview',_("Skip to preview"));
       if (!empty($DBInfo->use_wikiwyg)) {
         $confirm = 'false';
         if (!empty($DBInfo->wikiwyg_confirm)) $confirm = 'null';
         $wysiwyg_msg=_("GUI");
  -      $wysiwyg_btn.='&nbsp;<input type="button" tabindex="7" value="'.$wysiwyg_msg.
  -        '" onclick="javascript:sectionEdit(null,'.$confirm .',null)" />';
  +      $wysiwyg_btn.='&nbsp;<button type="button" tabindex="7"'.
  +        '" onclick="javascript:sectionEdit(null,'.$confirm .',null)" ><span>'.
  +	$wysiwyg_msg.'</span></button>';
       }
       $summary=<<<EOS
  -$summary_msg: <input name="comment" value="$editlog" size="70" maxlength="70" style="width:80%" tabindex="2" />$extra_check<br />
  +<span id='edit-summary'><label for='input-summary'>$summary_msg</label><input name="comment" id='input-summary' value="$editlog" size="60" maxlength="128" tabindex="2" />$extra_check</span>
   EOS;
     }
     $save_msg=_("Save");
  @@ -1000,17 +1020,30 @@
    rows="$rows" cols="$cols" class="wiki resizable">$raw_body</textarea>
   </div>
   $extraform
  +<div id="editor_info">
  +<table cellpadding='0' cellspacing='0' border='0'>
  +<tr>
  +<td>
   <div>
  -$summary
  +<ul>
  +<li>$summary</li>
  +<li>$select_category
  +<span>
   <input type="hidden" name="action" value="$saveaction" />
   <input type="hidden" name="datestamp" value="$datestamp" />
  -$hidden$select_category
  -<input type="submit" tabindex="5" value="$save_msg" accesskey="x" />
  +$hidden
  +<button type="submit" class='save-button' tabindex="5" accesskey="x" ><span>$save_msg</span></button>
   <!-- <input type="reset" value="Reset" />&nbsp; -->
   $preview_btn$wysiwyg_btn$skip_preview
   $extra<span id="save_state"></span>
  +</span>
  +</li></ul>
   </div>
  +</td>
   $captcha
  +</tr>
  +</table>
  +</div>
   </form>
   </div>
   EOS;
  
  
  


wkpark      2009/07/14 00:43:32

  Modified:    css      _base.css
  Log:
  add a button styling
  
  Revision  Changes    Path
  1.29      +8 -3      moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- _base.css	26 Apr 2009 07:25:40 -0000	1.28
  +++ _base.css	13 Jul 2009 15:43:32 -0000	1.29
  @@ -92,7 +92,11 @@
   
   form { margin:0; padding:0;/* for IE */}
   
  -input { font-size:1em;padding:2px; /* for IE */ }
  +input { font-size:1em; padding:2px; /* for IE */ }
  +button { font-size:1em; padding:2px; /* for IE */ }
  +
  +#editor_info ul {list-style:none; margin:2px 0 2px 0; padding:0;}
  +#editor_info li {padding:2px;}
   
   .resizable-textarea .grippie {
     height: 14px;
  @@ -176,7 +180,7 @@
   }
   
   div.message span {
  -  padding-left:55px;
  +  padding-left:65px;
     margin:0px 0px;
     display:block;
     min-height: 60px;
  @@ -275,7 +279,7 @@
   }
   
   #wikiFooter {
  -  padding: 0.5em 2em;
  +/*  padding: 0.5em 2em; */
   /*  background-color:yellow; */
   }
   
  @@ -593,3 +597,4 @@
   span.markup.invisible {
     display:none;
   }
  +
  
  
  


wkpark      2009/07/14 01:18:20

  Modified:    local/SWFUpload swfupload.css
  Log:
  fixup button position
  
  Revision  Changes    Path
  1.7       +6 -1      moniwiki/local/SWFUpload/swfupload.css
  
  Index: swfupload.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/SWFUpload/swfupload.css,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- swfupload.css	9 Dec 2008 08:30:28 -0000	1.6
  +++ swfupload.css	13 Jul 2009 16:18:20 -0000	1.7
  @@ -40,7 +40,12 @@
   }
   
   .fileList input {
  -  vertical-align: middle;
  +  vertical-align: top;
  +  padding:auto;
  +  padding-bottom:1px;
  +  font-size:11px;
  +  font-family:DotumChe, sans-serif;
  +  letter-spacing:-1px;
   }
       
   #SWFUpload {
  
  
  


wkpark      2009/07/15 14:59:34

  Modified:    .        wikilib.php
  Log:
  add overall save/preview button at the bottom of the editform.
  repositioning the captcha img
  
  Revision  Changes    Path
  1.275     +123 -23   moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.274
  retrieving revision 1.275
  diff -u -r1.274 -r1.275
  --- wikilib.php	13 Jul 2009 15:41:18 -0000	1.274
  +++ wikilib.php	15 Jul 2009 05:59:34 -0000	1.275
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.274 2009/07/13 15:41:18 wkpark Exp $
  +// $Id: wikilib.php,v 1.275 2009/07/15 05:59:34 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -660,10 +660,11 @@
     return $hints;
   }
   
  -function macro_EditText($formatter,$value,$options='') {
  +function macro_EditText($formatter,$value,$options) {
     global $DBInfo;
   
     # simple == 1 : do not use EditTextForm, simple == 2 : do not use GUI/Preview
  +  $has_form = false;
     if ($options['simple']!=1 and $DBInfo->hasPage('EditTextForm')) {
       $p=$DBInfo->getPage('EditTextForm');
       $form=$p->get_raw_body();
  @@ -677,6 +678,10 @@
       $formatter->pi=$opi; // restore pi
       $form= ob_get_contents();
       ob_end_clean();
  +    preg_match('@(</form>)@i', $form, $m);
  +    if (isset($options['has_form']))
  +      $has_form = &$options['has_form'];
  +    if (isset($m[1])) $has_form = true;
   
       $editform= macro_Edit($formatter,'nohints,nomenu',$options);
       $new=str_replace("#editform",$editform,$form); // XXX
  @@ -685,7 +690,65 @@
     } else {
       $form = macro_Edit($formatter,$value,$options);
     }
  -  return $form;
  +  $js = '';
  +  if ($has_form) {
  +    $js=<<<JS
  +<style type='text/css'>
  +#mycontent button.save-button { display: none; }
  +button.save-button { display: none; }
  +</style>
  +<script type='text/javascript'>
  +/*<![CDATA[*/
  +function submit_all_forms() {
  +  var form = document.getElementById('editform'); // main edit form
  +  var all = document.getElementById('all-forms');
  +  var all_forms = all.getElementsByTagName('form'); // all extra forms
  +  for (var i=0; i < all_forms.length; i++) {
  +    if (all_forms[i] == form) continue;
  +    if (all_forms[i].encoding == "multipart/form-data" || all_forms[i].enctype == "multipart/form-data") {
  +      form.encoding = "multipart/form-data";
  +      form.encoding = "multipart/form-data";
  +    }
  +    for (var j=0; j < all_forms[i].elements.length; j++) {
  +      if (all_forms[i].elements[j].type == 'button' || all_forms[i].elements[j].type == 'submit') continue;
  +      if (all_forms[i].elements[j].name == 'action' || all_forms[i].elements[j].name == '') continue;
  +      var newopt = all_forms[i].elements[j];
  +      //newopt.setAttribute('style', 'display:none');
  +      form.appendChild(newopt);
  +    }
  +  }
  +  form.elements['button_preview'].value = '';
  +  form.submit();
  +}
  +
  +function check_uploadform() {
  +  var form = document.getElementById('editform'); // main edit form
  +  var all = document.getElementById('all-forms');
  +  var all_forms = all.getElementsByTagName('form'); // all extra forms
  +  for (var i=0; i < all_forms.length; i++) {
  +    if (all_forms[i].encoding == "multipart/form-data" || all_forms[i].enctype == "multipart/form-data") {
  +      for (var j=0; j < all_forms[i].elements.length; j++) {
  +        if (all_forms[i].elements[j].type == 'file' && all_forms[i].elements[j].value != '') {
  +          alert("Please upload your files first!");
  +          return;
  +        }
  +      }
  +    }
  +  }
  +  if (form.elements['button_preview']) {
  +    var newopt = document.createElement('input');
  +    newopt.setAttribute('name','button_preview');
  +    newopt.setAttribute('value','preview');
  +    newopt.setAttribute('type','hidden');
  +    form.appendChild(newopt);
  +  }
  +  form.submit();
  +}
  +/*]]>*/
  +</script>\n
  +JS;
  +  }
  +  return $js.'<div id="all-forms">'.$form.'</div>';
   }
   
   function do_edit($formatter,$options) {
  @@ -701,7 +764,9 @@
     $options['msgtype'] = isset($options['msgtype']) ? $options['msgtype'] : 'warn timer';
     $formatter->send_title(sprintf(_("Edit %s"),$options['page']).$sec,"",$options);
     //print '<div id="editor_area">'.macro_EditText($formatter,$value,$options).'</div>';
  -  print macro_EditText($formatter,$value,$options);
  +  $has_form = false;
  +  $options['has_form'] = &$has_form;
  +  echo macro_EditText($formatter,$value,$options);
     if ($DBInfo->use_wikiwyg>=2) {
       $js=<<<JS
   <script type='text/javascript'>
  @@ -717,6 +782,19 @@
   	print $js;
       }
     }
  +  if ($has_form) {
  +    $msg = _("Save");
  +    $onclick=' onclick="submit_all_forms()"';
  +    $onclick1=' onclick="check_uploadform()"';
  +    echo "<div id='save-buttons'>\n";
  +    echo "<button type='button'$onclick tabindex='10'><span>$msg</span></button>\n";
  +    echo "<button type='button'$onclick1 tabindex='11' name='button_preview' value='1'><span>".
  +      _("Preview").'</span></button>';
  +    if ($preview)
  +      echo ' '.$formatter->link_to('#preview',_("Skip to preview"));
  +    echo "</div>\n";
  +  }
  +
     $formatter->send_footer($args,$options);
   }
   
  @@ -914,9 +992,7 @@
     $raw_body = str_replace(array("&","<"),array("&amp;","&lt;"),$raw_body);
   
     # get categories
  -  $has_extra = 0;
     if ($DBInfo->use_category and !$options['nocategories']) {
  -    $has_extra = 1;
       $categories=array();
       $categories= $DBInfo->getLikePages($DBInfo->category_regex);
       if ($categories) {
  @@ -948,15 +1024,11 @@
        $msg = _("Refresh");
        $seed=md5(base64_encode(time()));
        $ticketimg=$formatter->link_url($formatter->page->urlname,'?action=ticket&amp;__seed='.$seed.'&amp;t=');
  -     $trows = '';
  -     if ($has_extra) $trows = " rowspan='2' width='10%'";
        $onclick = " onclick=\"document.getElementById('captcha_img').src ='".$ticketimg."'+ Math.random()\"";
        $captcha=<<<EXTRA
  -  <td$trows>
  -  <div class='captcha'><div><span class='captchaImg'><img id="captcha_img" src="$ticketimg" alt="captcha" /></span></div>
  -  <button type='button' class='refresh-icon'$onclick><span>$msg</span></button><input type="text" tabindex="4" size="10" name="check" />
  +  <div class='captcha' style='float:right'><div><span class='captchaImg'><img id="captcha_img" src="$ticketimg" alt="captcha" /></span></div>
  +  <button type='button' class='refresh-icon'$onclick><span>$msg</span></button><input type="text" tabindex="2" size="10" name="check" />
   <input type="hidden" name="__seed" value="$seed" /></div>
  -  </td>
   EXTRA;
     }
   
  @@ -1015,16 +1087,13 @@
     $form.=<<<EOS
   <div id="editor_area">
   $formh
  -<div class="resizable-textarea"><!-- IE hack -->
  +<div class="resizable-textarea" style='position:relative'><!-- IE hack -->
   <textarea id="content" wrap="virtual" name="savetext" tabindex="1"
    rows="$rows" cols="$cols" class="wiki resizable">$raw_body</textarea>
  +$captcha
   </div>
   $extraform
   <div id="editor_info">
  -<table cellpadding='0' cellspacing='0' border='0'>
  -<tr>
  -<td>
  -<div>
   <ul>
   <li>$summary</li>
   <li>$select_category
  @@ -1039,11 +1108,6 @@
   </span>
   </li></ul>
   </div>
  -</td>
  -$captcha
  -</tr>
  -</table>
  -</div>
   </form>
   </div>
   EOS;
  @@ -1546,6 +1610,13 @@
       return do_invalid($formatter,$options);
     }
   
  +  if ((isset($_FILES['upfile']) and is_array($_FILES)) or is_array($options['MYFILES'])) {
  +    $retstr = false;
  +    $options['retval'] = &$retstr;
  +    include_once('plugin/UploadFile.php');
  +    do_uploadfile($formatter, $options);
  +  }
  +
     $savetext=$options['savetext'];
     $datestamp=$options['datestamp'];
     $button_preview=$options['button_preview'];
  @@ -1622,8 +1693,22 @@
           $formatter->send_title(_("Conflict error!"),"",$options);
         $options['savetext']=$savetext;
         #print '<div id="editor_area">'.macro_EditText($formatter,$value,$options).'</div>'; # XXX
  +      $has_form = false;
  +      $options['has_form'] = &$has_form;
         print macro_EditText($formatter,$value,$options); # XXX
   
  +      if ($has_form) {
  +        $msg = _("Save");
  +        $onclick=' onclick="submit_all_forms()"';
  +        $onclick1=' onclick="check_uploadform()"';
  +        echo "<div id='save-buttons'>\n";
  +        echo "<button type='button'$onclick tabindex='10'><span>$msg</span></button>\n";
  +        echo "<button type='button'$onclick1 tabindex='11' name='button_preview' value='1'><span>".
  +          _("Preview").'</span></button>';
  +        if ($preview)
  +          echo ' '.$formatter->link_to('#preview',_("Skip to preview"));
  +	echo "</div>\n";
  +      }
         print $menu;
         print "<div id='wikiPreview'>\n";
         if ($options['conflict'] and $merge)
  @@ -1699,7 +1784,22 @@
       $options['savetext']=$savetext;
   
       $formatter->preview=1;
  -    print '<div id="editor_area_wrap">'.macro_EditText($formatter,$value,$options).'</div>'; # XXX
  +    $has_form = false;
  +    $options['has_form'] = &$has_form;
  +    print '<div id="editor_area_wrap">'.macro_EditText($formatter,$value,$options);
  +    if ($has_form) {
  +      $msg = _("Save");
  +      $onclick=' onclick="submit_all_forms()"';
  +      $onclick1=' onclick="check_uploadform()"';
  +      echo "<div id='save-buttons'>\n";
  +      echo "<button type='button'$onclick tabindex='10'><span>$msg</span></button>\n";
  +      echo "<button type='button'$onclick1 tabindex='11' name='button_preview' value='1'><span>".
  +      	_("Preview").'</span></button>';
  +      if ($preview)
  +        echo ' '.$formatter->link_to('#preview',_("Skip to preview"));
  +      echo "</div>\n";
  +    }
  +    print '</div>'; # XXX
       print $DBInfo->hr;
       print $menu;
       print "<div id='wikiPreview'>\n";
  
  
  


wkpark      2009/07/15 15:04:38

  Modified:    css      _extra.css
  Log:
  repositioning captcha img.
  comment out ReviewComment related css classes (for IE;)
  
  Revision  Changes    Path
  1.24      +29 -6     moniwiki/css/_extra.css
  
  Index: _extra.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_extra.css,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- _extra.css	26 Apr 2009 07:25:40 -0000	1.23
  +++ _extra.css	15 Jul 2009 06:04:38 -0000	1.24
  @@ -574,8 +574,25 @@
     margin-right:auto; /* Moz */
   }
   
  -.captcha { vertical-align:middle; }
  -.captcha input { height:20px; vertical-align:middle; }
  +.captcha input {
  +  vertical-align:middle;
  +  height:17px; /* reload icon height */
  +}
  +
  +.captcha {
  +  vertical-align:middle;
  +  position:absolute;
  +  padding:0px;
  +  right:17px; /* ~ scrollbar width */
  +  bottom:14px; /* ~ resizer grip height */
  +  opacity:0.7;filter:alpha(opacity=70);
  +  _opacity:1;
  +  _filter:alpha(opacity=100);
  +}
  +
  +.captcha:hover {
  +  opacity:1;filter:alpha(opacity=100);
  +}
   
   .captcha img {
     vertical-align: middle;
  @@ -708,10 +725,7 @@
   z-index:900;
   }
   
  -.commentflag.selected {
  -  background:transparent url(../imgs/misc/comment.png) no-repeat scroll 0 0 !important;
  -}
  -
  +/*
   .reviewComment {
    position:absolute;
    display:none;
  @@ -745,3 +759,12 @@
   .commentflag.selected {
     background: url('../imgs/misc/comment.png') no-repeat !important;
   }
  +.commentflag.selected {
  +  background:transparent url(../imgs/misc/comment.png) no-repeat scroll 0 0 !important;
  +}
  +*/
  +
  +#category-select {
  +  font-family:monospace, sans-serif;
  +}
  +
  
  
  


wkpark      2009/07/15 15:08:17

  Modified:    plugin   UploadForm.php
  Log:
  fixes for more natural behavior
   - check editform and use iframe conditionally.
  
  Revision  Changes    Path
  1.10      +50 -6     moniwiki/plugin/UploadForm.php
  
  Index: UploadForm.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadForm.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- UploadForm.php	13 Jul 2009 15:25:48 -0000	1.9
  +++ UploadForm.php	15 Jul 2009 06:08:17 -0000	1.10
  @@ -5,7 +5,7 @@
   //
   // Usage: [[UploadForm]]
   //
  -// $Id: UploadForm.php,v 1.9 2009/07/13 15:25:48 wkpark Exp $
  +// $Id: UploadForm.php,v 1.10 2009/07/15 06:08:17 wkpark Exp $
   
   function macro_UploadForm($formatter,$value) {
       global $DBInfo;
  @@ -22,6 +22,23 @@
       if (size == undefined)
           size = 50;
   
  +    // check editform
  +    var editform = document.getElementById('editform');
  +    if (editform) {
  +        var iframe = document.getElementById('upload-iframe');
  +        if (!iframe) {
  +            if (document.all)
  +                iframe = document.createElement('<iframe frameBorder="0" name="upload-iframe" width="1px" height="1px">');
  +            else
  +                iframe = document.createElement('iframe');
  +            iframe.setAttribute('id','upload-iframe');
  +            iframe.setAttribute('name','upload-iframe');
  +            iframe.setAttribute('style','display:none;border:0;');
  +            //iframe.setAttribute('style','border:0;');
  +            var body = document.getElementsByTagName('body')[0];
  +            body.appendChild(iframe);
  +        }
  +    }
       var fform = document.getElementById(id);
       var lastRow = fform.rows.length;
       var row = fform.insertRow(lastRow);
  @@ -81,14 +98,41 @@
   
   function check_attach(id) {
       // check if the form has attached files.
  -    var attach = document.getElementById(id);
  +    attach = document.getElementById(id);
  +    var ok = false;
       inputs = attach.getElementsByTagName('input');
       for (i = 0; i < inputs.length; i++) {
           if (inputs[i].type == 'file' && inputs[i].value != '') {
  -            return true;
  +            ok = true;
  +            break;
  +        }
  +    }
  +    if (ok == false)
  +        return false;
  +    // check editform
  +    var editform = document.getElementById('editform');
  +    if (editform) {
  +        // iframe upload
  +        iframe = document.getElementById('upload-iframe');
  +        var attachform = document.getElementById('form-'+id);
  +        if (attachform) {
  +            attachform.setAttribute('target', 'upload-iframe');
  +        }
  +
  +        // TODO check success or fail
  +        setTimeout("iframe.parentNode.removeChild(iframe);resetForm(attach)", 1500);
  +        //alert(_("Successfully Uploaded"));
  +        return ok;
  +    }
  +    return ok;
  +}
  +
  +function resetForm(form) {
  +    if (form && form.rows.length) { // for UploadForm
  +        for (var i=form.rows.length;i>0;i--) {
  +            form.deleteRow(i-1);
           }
       }
  -    return false;
   }
   
   /*]]>*/
  @@ -101,7 +145,7 @@
       $attach_msg = _("Attachments");
       $url=$formatter->link_url($formatter->page->urlname);
       $form=<<<EOS
  -  <form target='_blank' method="post" action="$url" enctype="multipart/form-data">
  +  <form target='_blank' id="form-upload$id" method="post" action="$url" enctype="multipart/form-data">
     <div class='uploadForm'>
     <input type='hidden' name='action' value='UploadFile' />
   EOS;
  @@ -128,7 +172,7 @@
     <button type='button' class='add-file' onclick="addRow('upload$id')"><span>$msg2</span></button>
     <input type="hidden" name="uploadid" value="upload$id" />
     <input type="hidden" name="popup" value="1" />
  -  <button type="submit" class='upload-file save-button' onclick="return check_attach('upload$id')" name="upload"><span>$msg3</span></button>
  +  <button type="submit" class='upload-file' onclick="check_attach('upload$id')" name="upload"><span>$msg3</span></button>
     <!-- <input type="reset" name="reset" value="$msg4" /> -->
         </div>
         </td>
  
  
  


wkpark      2009/07/16 08:56:18

  Modified:    css      _extra.css
  Log:
  positionin captcha img in the editor_area
  
  Revision  Changes    Path
  1.25      +1 -1      moniwiki/css/_extra.css
  
  Index: _extra.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_extra.css,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- _extra.css	15 Jul 2009 06:04:38 -0000	1.24
  +++ _extra.css	15 Jul 2009 23:56:17 -0000	1.25
  @@ -579,7 +579,7 @@
     height:17px; /* reload icon height */
   }
   
  -.captcha {
  +#editor_area .captcha {
     vertical-align:middle;
     position:absolute;
     padding:0px;
  
  
  


wkpark      2009/07/16 15:05:01

  Modified:    .        wikilib.php
  Log:
  hide sidebar without $edit_with_sidebar option.
  replace input buttons with buttons
  
  Revision  Changes    Path
  1.276     +7 -4      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.275
  retrieving revision 1.276
  diff -u -r1.275 -r1.276
  --- wikilib.php	15 Jul 2009 05:59:34 -0000	1.275
  +++ wikilib.php	16 Jul 2009 06:05:01 -0000	1.276
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.275 2009/07/15 05:59:34 wkpark Exp $
  +// $Id: wikilib.php,v 1.276 2009/07/16 06:05:01 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -691,11 +691,14 @@
       $form = macro_Edit($formatter,$value,$options);
     }
     $js = '';
  +  if (empty($DBInfo->edit_with_sidebar))
  +    $sidebar_style="#wikiSideMenuContainer { display: none; }\n";
     if ($has_form) {
       $js=<<<JS
   <style type='text/css'>
   #mycontent button.save-button { display: none; }
   button.save-button { display: none; }
  +$sidebar_style
   </style>
   <script type='text/javascript'>
   /*<![CDATA[*/
  @@ -912,11 +915,11 @@
     $merge_btn2=_("Merge manually");
     $merge_btn3=_("Ignore conflicts");
     if ($options['conflict']) {
  -    $extra='<input type="submit" name="button_merge" value="'.$merge_btn.'" />';
  +    $extra='<button type="submit" name="button_merge" value="1"><span>'.$merge_btn.'</span></button>';
       if ($options['conflict']==2) {
  -      $extra.=' <input type="submit" name="manual_merge" value="'.$merge_btn2.'" />';
  +      $extra.=' <button type="submit" name="manual_merge" value="1"><span>'.$merge_btn2.'</span></button>';
         if ($DBInfo->use_forcemerge)
  -        $extra.=' <input type="submit" name="force_merge" value="'.$merge_btn3.'" />';
  +        $extra.=' <button type="submit" name="force_merge" value="1"><span>'.$merge_btn3.'</span></button>';
       }
     }
     if ($options['section'])
  
  
  


wkpark      2009/07/16 15:08:54

  Modified:    plugin   UploadFile.php
  Log:
  return $options['retval'] to use as a function call in the do_edit();
  
  Revision  Changes    Path
  1.42      +10 -2     moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.41
  retrieving revision 1.42
  diff -u -r1.41 -r1.42
  --- UploadFile.php	7 May 2008 07:58:00 -0000	1.41
  +++ UploadFile.php	16 Jul 2009 06:08:54 -0000	1.42
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.41 2008/05/07 07:58:00 wkpark Exp $
  +// $Id: UploadFile.php,v 1.42 2009/07/16 06:08:54 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -43,6 +43,7 @@
   <script type="text/javascript">
   /*<![CDATA[*/
   function delAllForm(id) {
  +  if (!opener) return;
     var fform = opener.document.getElementById(id);
   
     if (fform && fform.rows.length) { // for UploadForm
  @@ -72,6 +73,7 @@
     }
   
     if (!$ok) {
  +    if (isset($options['retval'])) return; // ignore
       #$title="No file selected";
       $formatter->send_header("",$options);
       $formatter->send_title($title,"",$options);
  @@ -290,7 +292,13 @@
       $DBInfo->savePage($p,$comment,$options);
     } else
       $DBInfo->addLogEntry($key, $REMOTE_ADDR,$comment,"UPLOAD");
  -  
  +
  +  if (isset($options['retval'])) {
  +    $retval = array('title'=>$title, 'msg'=>$msg, 'uploaded'=>$uploaded);
  +    $ret = &$options['retval'];
  +    $ret = $retval;
  +    return;
  +  } 
     $formatter->send_header("",$options);
     if ($uploaded < 2) {
       $formatter->send_title($title,"",$options);
  
  
  


wkpark      2009/07/17 03:58:44

  Modified:    plugin   UploadedFiles.php
  Log:
  preview images with one row and scroll bar.
  
  Revision  Changes    Path
  1.34      +7 -1      moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- UploadedFiles.php	29 Apr 2009 23:15:10 -0000	1.33
  +++ UploadedFiles.php	16 Jul 2009 18:58:44 -0000	1.34
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadedFiles plugin for the MoniWiki
   //
  -// $Id: UploadedFiles.php,v 1.33 2009/04/29 23:15:10 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.34 2009/07/16 18:58:44 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     if (!empty($options['q'])) {
  @@ -58,6 +58,7 @@
        $uploader='UploadForm';
        $use_admin=0;
        $use_fileinfo=0;
  +     $col = 10000;
      } else if ($options['preview']) {
        $use_preview=1;
        $use_admin=0;
  @@ -68,6 +69,7 @@
        $js_tag=1;$use_preview=1;
        $use_admin=0;
        $use_fileinfo=0;
  +     $col = 10000;
      }
   
      if ($use_fileinfo) $col=1;
  @@ -458,6 +460,10 @@
      if ($uploader and !in_array('UploadedFiles',$formatter->actions)) {
        $out.=$formatter->macro_repl($uploader);
      }
  +   if ($use_preview) {
  +     $class = ' class="fileList preview"';
  +     return $js_script."<div$class>".$out."</div>\n";
  +   }
      return $js_script.$out;
   }
   
  
  
  


wkpark      2009/07/17 04:03:29

  Modified:    plugin   ticket.php
  Log:
  add $captcha_bgcolor option
  
  Revision  Changes    Path
  1.5       +11 -4     moniwiki/plugin/ticket.php
  
  Index: ticket.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/ticket.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ticket.php	13 Jul 2006 06:24:33 -0000	1.4
  +++ ticket.php	16 Jul 2009 19:03:29 -0000	1.5
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a simple CAPTCHA ticket plugin for the MoniWiki
   //
  -// $Id: ticket.php,v 1.4 2006/07/13 06:24:33 wkpark Exp $
  +// $Id: ticket.php,v 1.5 2009/07/16 19:03:29 wkpark Exp $
   
   function _effect_distort($image,$factor=40,$grad=1) {
       // from http://www.codeproject.com/aspnet/CaptchaNET_2.asp Farshid Hosseini
  @@ -188,7 +188,6 @@
               }
           }
       }
  -        
       if ($use_ttf) {
           $pointsize=$DBInfo->ticket_font_size ? $DBInfo->ticket_font_size:16;
           $angle=0;
  @@ -213,10 +212,18 @@
       Header("Content-type: image/png");
       $im= ImageCreate($w,$h);
       $color=array();
  -    $color[]= ImageColorAllocate($im, 240, 240, 240); // background
  +    if (isset($DBInfo->captcha_bgcolor) and preg_match('/^#[0-9a-fA-F]$/', $DBInfo->captcha_bgcolor)) {
  +        $r = substr($DBInfo->captcha_bgcolor, 1, 2);
  +        $g = substr($DBInfo->captcha_bgcolor, 3, 2);
  +        $b = substr($DBInfo->captcha_bgcolor, 5, 2);
  +        $color[]= ImageColorAllocate($im, hexdec($r), hexdec($g), hexdec($b)); // background
  +    } else {
  +        $color[]= ImageColorAllocate($im, 240, 240, 240); // default background
  +    }
       $color[]= ImageColorAllocate($im, 0, 0, 0); // black
       $color[]= ImageColorAllocate($im, 255, 255, 255); // white
       $pen=rand(3,19);
  +    $pen1=rand(3,19);
       for ($i=0;$i<18;$i++)
           $color[]= ImageColorAllocate($im,rand(100,200),rand(100,200),rand(100,200));
       if ($use_ttf) {
  @@ -237,7 +244,7 @@
       if ($DBInfo->use_ticket & 1)
           _effect_blur($im,$color,1,1);
       if ($DBInfo->use_ticket & 2)
  -        _effect_grid($im,$color,$pen);
  +        _effect_grid($im,$color,$pen1);
   
       ImagePng($im);
       ImageDestroy($im);
  
  
  


wkpark      2009/07/17 04:04:40

  Modified:    .        wiki.php
  Log:
  set the png_url and the png real path correctly.
  
  Revision  Changes    Path
  1.476     +4 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.475
  retrieving revision 1.476
  diff -u -r1.475 -r1.476
  --- wiki.php	13 Jul 2009 15:29:05 -0000	1.475
  +++ wiki.php	16 Jul 2009 19:04:39 -0000	1.476
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.475 2009/07/13 15:29:05 wkpark Exp $
  +// $Id: wiki.php,v 1.476 2009/07/16 19:04:39 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.475 $',1,-1);
  +$_revision = substr('$Revision: 1.476 $',1,-1);
   $_release = '1.1.4-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -2905,6 +2905,7 @@
           preg_match("/\006|\010/", $value)) $processor='plain';
   
         $ret= call_user_func_array("processor_$processor",array(&$this,$value,$options));
  +      if (!is_string($ret)) return $ret;
         return $bra.$ret.$ket;
       }
   
  @@ -2912,7 +2913,7 @@
       $myclass= & new $classname($this,$options);
       $ret= call_user_func(array($myclass,'process'),$value,$options);
       if ($myclass->_type=='wikimarkup') return $ret;
  -
  +    if (!is_string($ret)) return $ret;
       return $bra.$ret.$ket;
     }
   
  
  
  


wkpark      2009/07/17 04:04:40

  Modified:    plugin   MathChooser.php latex2png.php
  Log:
  set the png_url and the png real path correctly.
  
  Revision  Changes    Path
  1.6       +10 -4     moniwiki/plugin/MathChooser.php
  
  Index: MathChooser.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/MathChooser.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- MathChooser.php	26 Dec 2008 16:51:28 -0000	1.5
  +++ MathChooser.php	16 Jul 2009 19:04:40 -0000	1.6
  @@ -8,12 +8,12 @@
   // Name: MathChooser
   // Description: Latex symbol selector
   // URL: MoniWiki/MathChooserPlugin
  -// Version: $Revision: 1.5 $
  +// Version: $Revision: 1.6 $
   // License: GPL
   //
   // Usage: [[MathChooser]]
   //
  -// $Id: MathChooser.php,v 1.5 2008/12/26 16:51:28 wkpark Exp $
  +// $Id: MathChooser.php,v 1.6 2009/07/16 19:04:40 wkpark Exp $
   
   function macro_MathChooser($formatter,$value) {
       global $DBInfo;
  @@ -111,7 +111,13 @@
           $tex= '\displaystyle '.implode('& \displaystyle ',$tmp);
           $tex = "$$\n\\begin{array}{ $col }\n$tex\n\\end{array}\n$$\n";
   
  -        $toolbar=$formatter->macro_repl('latex2png',$tex);
  +        $my = $formatter->macro_repl('latex2png',$tex);
  +        if (!is_array($my)) {
  +            $toolbar = $my;
  +        } else {
  +            $toolbar = $my[0];
  +            $turl = $my[1];
  +        }
           $tab.='<li title="'.$k.'"'.$attr.' onclick="menuToogle(this)"><span>'._($k).'</span></li>';
           $attr='';
   
  @@ -119,7 +125,7 @@
           $col = imagecolorallocate($im, 0, 0, 0);
           list($width, $height, $type, $attr) = getimagesize($toolbar);
   
  -	$toolurl=qualifiedUrl($DBInfo->url_prefix.'/'.$toolbar); // XXX
  +	$toolurl=qualifiedUrl($turl); // XXX
   
           $x= 0;
           $c= imagecolorat($im,0,0);
  
  
  
  1.3       +7 -3      moniwiki/plugin/latex2png.php
  
  Index: latex2png.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/latex2png.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- latex2png.php	3 Dec 2008 08:22:00 -0000	1.2
  +++ latex2png.php	16 Jul 2009 19:04:40 -0000	1.3
  @@ -8,12 +8,12 @@
   // Name: Latex To PNG plugin
   // Description: convert latex syntax to PNGs
   // URL: MoniWiki:Latex2PngPlugin
  -// Version: $Revision: 1.2 $
  +// Version: $Revision: 1.3 $
   // License: GPL
   //
   // Usage: ?action=latex2png&value=$\alpha$
   //
  -// $Id: latex2png.php,v 1.2 2008/12/03 08:22:00 wkpark Exp $
  +// $Id: latex2png.php,v 1.3 2009/07/16 19:04:40 wkpark Exp $
   
   function macro_latex2png($formatter,$value,$params=array()) {
       $png= $formatter->processor_repl('latex',$value,array('raw'=>1));
  @@ -24,7 +24,11 @@
       $opts=array('raw'=>1);
       if (isset($options['dpi']) and $options['dpi'] > 120 and $options['dpi'] < 600)
           $opts['dpi']=$options['dpi'];
  -    $png= $formatter->processor_repl('latex',$options['value'],$opts);
  +    $my= $formatter->processor_repl('latex',$options['value'],$opts);
  +    if (!is_array($my))
  +        $png = $my;
  +    else
  +        $png = $my[0];
   
       if (file_exists($png)) {
           Header("Content-type: image/png");
  
  
  


wkpark      2009/07/17 04:04:40

  Modified:    plugin/processor latex.php
  Log:
  set the png_url and the png real path correctly.
  
  Revision  Changes    Path
  1.25      +2 -2      moniwiki/plugin/processor/latex.php
  
  Index: latex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/latex.php,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- latex.php	17 Dec 2008 02:09:42 -0000	1.24
  +++ latex.php	16 Jul 2009 19:04:40 -0000	1.25
  @@ -12,7 +12,7 @@
   // $path='./bin;C:/Program Files/MiKTeX 2.5/miktex/bin;C:/Program Files/ImageMagick-6.3.6-Q16';
   // # ImagMagick and MikTeX are used in this setting.
   //
  -// $Id: latex.php,v 1.24 2008/12/17 02:09:42 wkpark Exp $
  +// $Id: latex.php,v 1.25 2009/07/16 19:04:40 wkpark Exp $
   
   function _latex_renumber($match,$tag='\\tag') {
     // XXX
  @@ -276,7 +276,7 @@
     if (!$raw_mode)
       return $log.$bra."<img class='tex' src='$png_url' rel='$uniq' alt='$alt' ".
            "title='$title' />".$ket;
  -  else return $png;
  +  return array($png, $png_url);
   }
   
   // vim:et:sts=2:sw=2
  
  
  


wkpark      2009/07/21 23:43:27

  Modified:    local    csshover.htc
  Log:
  update csshover.htc
  
  Revision  Changes    Path
  1.4       +262 -120  moniwiki/local/csshover.htc
  
  Index: csshover.htc
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/csshover.htc,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- csshover.htc	21 Nov 2007 15:34:43 -0000	1.3
  +++ csshover.htc	21 Jul 2009 14:43:27 -0000	1.4
  @@ -1,120 +1,262 @@
  -<attach event="ondocumentready" handler="parseStylesheets" />
  -<script>
  -/**
  - *	Whatever:hover - V1.42.060206 - hover & active
  - *	------------------------------------------------------------
  - *	(c) 2005 - Peter Nederlof
  - *	Peterned - http://www.xs4all.nl/~peterned/
  - *	License  - http://creativecommons.org/licenses/LGPL/2.1/
  - *
  - *	Whatever:hover is free software; you can redistribute it and/or
  - *	modify it under the terms of the GNU Lesser General Public
  - *	License as published by the Free Software Foundation; either
  - *	version 2.1 of the License, or (at your option) any later version.
  - *
  - *	Whatever:hover is distributed in the hope that it will be useful,
  - *	but WITHOUT ANY WARRANTY; without even the implied warranty of
  - *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  - *	Lesser General Public License for more details.
  - *
  - *	Credits and thanks to:
  - *	Arnoud Berendsen, Martin Reurings, Robert Hanson
  - *
  - *	howto: body { behavior:url("csshover.htc"); }
  - *	------------------------------------------------------------
  - */
  -
  -var csshoverReg = /(^|\s)(([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active)/i,
  -currentSheet, doc = window.document, hoverEvents = [], activators = {
  -	onhover:{on:'onmouseover', off:'onmouseout'},
  -	onactive:{on:'onmousedown', off:'onmouseup'}
  -}
  -
  -function parseStylesheets() {
  -	if(!/MSIE (5|6)/.test(navigator.userAgent)) return;
  -	window.attachEvent('onunload', unhookHoverEvents);
  -	var sheets = doc.styleSheets, l = sheets.length;
  -	for(var i=0; i<l; i++) 
  -		parseStylesheet(sheets[i]);
  -}
  -	function parseStylesheet(sheet) {
  -		if(sheet.imports) {
  -			try {
  -				var imports = sheet.imports, l = imports.length;
  -				for(var i=0; i<l; i++) parseStylesheet(sheet.imports[i]);
  -			} catch(securityException){}
  -		}
  -
  -		try {
  -			var rules = (currentSheet = sheet).rules, l = rules.length;
  -			for(var j=0; j<l; j++) parseCSSRule(rules[j]);
  -		} catch(securityException){}
  -	}
  -
  -	function parseCSSRule(rule) {
  -		var select = rule.selectorText, style = rule.style.cssText;
  -		if(!csshoverReg.test(select) || !style) return;
  -
  -		var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1');
  -		var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo);
  -		var className = (/\.([a-z0-9_-]*on(hover|active))/i).exec(newSelect)[1];
  -		var affected = select.replace(/:(hover|active).*$/, '');
  -		var elements = getElementsBySelect(affected);
  -		if(elements.length == 0) return;
  -
  -		currentSheet.addRule(newSelect, style);
  -		for(var i=0; i<elements.length; i++)
  -			new HoverElement(elements[i], className, activators[pseudo]);
  -	}
  -
  -function HoverElement(node, className, events) {
  -	if(!node.hovers) node.hovers = {};
  -	if(node.hovers[className]) return;
  -	node.hovers[className] = true;
  -	hookHoverEvent(node, events.on, function() { node.className += ' ' + className; });
  -	hookHoverEvent(node, events.off, function() { node.className = node.className.replace(new RegExp('\\s+'+className, 'g'),''); });
  -}
  -	function hookHoverEvent(node, type, handler) {
  -		node.attachEvent(type, handler);
  -		hoverEvents[hoverEvents.length] = { 
  -			node:node, type:type, handler:handler 
  -		};
  -	}
  -
  -	function unhookHoverEvents() {
  -		for(var e,i=0; i<hoverEvents.length; i++) {
  -			e = hoverEvents[i]; 
  -			e.node.detachEvent(e.type, e.handler);
  -		}
  -	}
  -
  -function getElementsBySelect(rule) {
  -	var parts, nodes = [doc];
  -	parts = rule.split(' ');
  -	for(var i=0; i<parts.length; i++) {
  -		nodes = getSelectedNodes(parts[i], nodes);
  -	}	return nodes;
  -}
  -	function getSelectedNodes(select, elements) {
  -		var result, node, nodes = [];
  -		var identify = (/\#([a-z0-9_-]+)/i).exec(select);
  -		if(identify) {
  -			var element = doc.getElementById(identify[1]);
  -			return element? [element]:nodes;
  -		}
  -		
  -		var classname = (/\.([a-z0-9_-]+)/i).exec(select);
  -		var tagName = select.replace(/(\.|\#|\:)[a-z0-9_-]+/i, '');
  -		var classReg = classname? new RegExp('\\b' + classname[1] + '\\b'):false;
  -		for(var i=0; i<elements.length; i++) {
  -			result = tagName? elements[i].all.tags(tagName):elements[i].all; 
  -			for(var j=0; j<result.length; j++) {
  -				node = result[j];
  -				if(classReg && !classReg.test(node.className)) continue;
  -				nodes[nodes.length] = node;
  -			}
  -		}	
  -		
  -		return nodes;
  -	}
  -</script>
  \ No newline at end of file
  +<public:attach event="ondocumentready" onevent="CSSHover()" />
  +<script>
  +// <![CDATA[
  +/**
  + *	Whatever:hover - V3.00.081222
  + *	------------------------------------------------------------
  + *	Author  - Peter Nederlof, http://www.xs4all.nl/~peterned
  + *	License - http://creativecommons.org/licenses/LGPL/2.1
  + *
  + *	Whatever:hover is free software; you can redistribute it and/or
  + *	modify it under the terms of the GNU Lesser General Public
  + *	License as published by the Free Software Foundation; either
  + *	version 2.1 of the License, or (at your option) any later version.
  + *
  + *	Whatever:hover is distributed in the hope that it will be useful,
  + *	but WITHOUT ANY WARRANTY; without even the implied warranty of
  + *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  + *	Lesser General Public License for more details.
  + *
  + *	howto: body { behavior:url("csshover3.htc"); }
  + *	------------------------------------------------------------
  + */
  +
  +window.CSSHover = (function(){
  +
  +	// regular expressions, used and explained later on.
  +	var REG_INTERACTIVE = /(^|\s)((([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active|focus))/i,
  +		REG_AFFECTED = /(.*?)\:(hover|active|focus)/i,
  +		REG_PSEUDO = /[^:]+:([a-z-]+).*/i,
  +		REG_SELECT = /(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi,
  +		REG_CLASS = /\.([a-z0-9_-]*on(hover|active|focus))/i,
  +		REG_MSIE = /msie (5|6|7)/i,
  +		REG_COMPAT = /backcompat/i;
  +
  +	// css prefix, a leading dash would be nice (spec), but IE6 doesn't like that.
  +	var CSSHOVER_PREFIX = 'csh-';
  +	
  +	/**
  +	 *	Local CSSHover object
  +	 *	--------------------------
  +	 */
  +	
  +	var CSSHover = {
  +		
  +		// array of CSSHoverElements, used to unload created events
  +		elements: [], 
  +		
  +		// buffer used for checking on duplicate expressions
  +		callbacks: {}, 
  +		
  +		// init, called once ondomcontentready via the exposed window.CSSHover function
  +		init:function() {
  +			// don't run in IE8 standards; expressions don't work in standards mode anyway, 
  +			// and the stuff we're trying to fix should already work properly
  +			if(!REG_MSIE.test(navigator.userAgent) && !REG_COMPAT.test(window.document.compatMode)) return;
  +
  +			// start parsing the existing stylesheets
  +			var sheets = window.document.styleSheets, l = sheets.length;
  +			for(var i=0; i<l; i++) {
  +				this.parseStylesheet(sheets[i]);
  +			}
  +		},
  +
  +		// called from init, parses individual stylesheets
  +		parseStylesheet:function(sheet) {
  +			// check sheet imports and parse those recursively
  +			if(sheet.imports) {
  +				try {
  +					var imports = sheet.imports, l = imports.length;
  +					for(var i=0; i<l; i++) {
  +						this.parseStylesheet(sheet.imports[i]);
  +					}
  +				} catch(securityException){
  +					// trycatch for various possible errors,
  +					// todo; might need to be placed inside the for loop, since an error
  +					// on an import stops following imports from being processed.
  +				}
  +			}
  +			
  +			// interate the sheet's rules and send them to the parser
  +			try {
  +				var rules = sheet.rules, l = rules.length;
  +				for(var j=0; j<l; j++) {
  +					this.parseCSSRule(rules[j], sheet);
  +				}
  +			} catch(securityException){
  +				// trycatch for various errors, most likely accessing the sheet's rules,
  +				// don't see how individual rules would throw errors, but you never know.
  +			}
  +		},
  +
  +		// magic starts here ...
  +		parseCSSRule:function(rule, sheet) {
  +			
  +			// The sheet is used to insert new rules into, this must be the same sheet the rule 
  +			// came from, to ensure that relative paths keep pointing to the right location.
  +
  +			// only parse a rule if it contains an interactive pseudo.
  +			var select = rule.selectorText;
  +			if(REG_INTERACTIVE.test(select)) {
  +				var style = rule.style.cssText,
  +					
  +					// affected elements are found by truncating the selector after the interactive pseudo,
  +					// eg: "div li:hover" >>  "div li"
  +					affected = REG_AFFECTED.exec(select)[1],
  +					
  +					// that pseudo is needed for a classname, and defines the type of interaction (focus, hover, active)
  +					// eg: "li:hover" >> "onhover"
  +					pseudo = select.replace(REG_PSEUDO, 'on$1'),
  +					
  +					// the new selector is going to use that classname in a new css rule,
  +					// since IE6 doesn't support multiple classnames, this is merged into one classname
  +					// eg: "li:hover" >> "li.onhover",  "li.folder:hover" >> "li.folderonhover"
  +					newSelect = select.replace(REG_SELECT, '.$2' + pseudo),
  +					
  +					// the classname is needed for the events that are going to be set on affected nodes
  +					// eg: "li.folder:hover" >> "folderonhover"
  +					className = REG_CLASS.exec(newSelect)[1];
  +
  +				// no need to set the same callback more than once when the same selector uses the same classname
  +				var hash = affected + className;
  +				if(!this.callbacks[hash]) {
  +
  +					// affected elements are given an expression under a fake css property, the classname is used
  +					// because a unique name (eg "behavior:") would be overruled (in IE6, not 7) by a following rule 
  +					// selecting the same element. The expression does a callback to CSSHover.patch, rerouted via the
  +					// exposed window.CSSHover function. 
  +
  +					// because the expression is added to the stylesheet, and styles are always applied to html that is
  +					// dynamically added to the dom, the expression will also trigger for those new elements (provided
  +					// they are selected by the affected selector). 
  +
  +					sheet.addRule(affected, CSSHOVER_PREFIX + className + ':expression(CSSHover(this, "'+pseudo+'", "'+className+'"))');
  +					
  +					// hash it, so an identical selector/class combo does not duplicate the expression
  +					this.callbacks[hash] = true;
  +				}
  +				
  +				// duplicate expressions need not be set, but the style could differ
  +				sheet.addRule(newSelect, style);
  +			}
  +		},
  +
  +		// called via the expression, patches individual nodes
  +		patch:function(node, type, className) {
  +			
  +			// the patch's type is returned to the expression. That way the expression property
  +			// can be found and removed, to stop it from calling patch over and over. 
  +			// The if will fail the first time, since the expression has not yet received a value.
  +			var property = CSSHOVER_PREFIX + className;
  +			if(node.style[property]) {
  +				node.style[property] = null;
  +			}
  +
  +			// just to make sure, also keep track of patched classnames locally on the node
  +			if(!node.csshover) node.csshover = [];
  +
  +			// and check for it to prevent duplicate events with the same classname from being set
  +			if(!node.csshover[className]) {
  +				node.csshover[className] = true;
  +
  +				// create an instance for the given type and class
  +				var element = new CSSHoverElement(node, type, className);
  +				
  +				// and store that instance for unloading later on
  +				this.elements.push(element);
  +			}
  +
  +			// returns a dummy value to the expression
  +			return type;
  +		},
  +
  +		// unload stuff onbeforeunload
  +		unload:function() {
  +			try {
  +				
  +				// remove events
  +				var l = this.elements.length;
  +				for(var i=0; i<l; i++) {
  +					this.elements[i].unload();
  +				}
  +
  +				// and set properties to null 
  +				this.elements = [];
  +				this.callbacks = {};
  +
  +			} catch (e) {
  +			}
  +		}
  +	};
  +
  +	// add the unload to the onbeforeunload event
  +	window.attachEvent('onbeforeunload', function(){
  +		CSSHover.unload();
  +	});
  +
  +	/**
  +	 *	CSSHoverElement
  +	 *	--------------------------
  +	 */
  +
  +	// the event types associated with the interactive pseudos
  +	var CSSEvents = {
  +		onhover:  { activator: 'onmouseenter', deactivator: 'onmouseleave' },
  +		onactive: { activator: 'onmousedown',  deactivator: 'onmouseup' },
  +		onfocus:  { activator: 'onfocus',      deactivator: 'onblur' }
  +	};
  +	
  +	// CSSHoverElement constructor, called via CSSHover.patch
  +	function CSSHoverElement(node, type, className) {
  +
  +		// the CSSHoverElement patches individual nodes by manually applying the events that should 
  +		// have fired by the css pseudoclasses, eg mouseenter and mouseleave for :hover. 
  +
  +		this.node = node;
  +		this.type = type;
  +		var replacer = new RegExp('(^|\\s)'+className+'(\\s|$)', 'g');
  +
  +		// store event handlers for removal onunload
  +		this.activator =   function(){ node.className += ' ' + className; };
  +		this.deactivator = function(){ node.className = node.className.replace(replacer, ' '); };
  +		
  +		// add the events
  +		node.attachEvent(CSSEvents[type].activator, this.activator);
  +		node.attachEvent(CSSEvents[type].deactivator, this.deactivator);
  +	}
  +	
  +	CSSHoverElement.prototype = {
  +		// onbeforeunload, called via CSSHover.unload
  +		unload:function() {
  +
  +			// remove events 
  +			this.node.detachEvent(CSSEvents[this.type].activator, this.activator);
  +			this.node.detachEvent(CSSEvents[this.type].deactivator, this.deactivator);
  +
  +			// and set properties to null 
  +			this.activator = null;
  +			this.deactivator = null;
  +			this.node = null;
  +			this.type = null;
  +		}
  +	};
  +
  +	/**
  +	 *	Public hook
  +	 *	--------------------------
  +	 */
  +	
  +	return function(node, type, className) {
  +		if(node) {
  +			// called via the css expression; patches individual nodes
  +			return CSSHover.patch(node, type, className);
  +		} else {
  +			// called ondomcontentready via the public:attach node
  +			CSSHover.init();
  +		}
  +	};
  +
  +})();
  +
  +// ]]>
  +</script>
  
  
  


wkpark      2009/07/22 01:09:44

  Modified:    .        wiki.php
  Log:
  set $params['retval'] as the real path of the img conditionally instead of setting ret val as an array.
  
  Revision  Changes    Path
  1.477     +7 -6      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.476
  retrieving revision 1.477
  diff -u -r1.476 -r1.477
  --- wiki.php	16 Jul 2009 19:04:39 -0000	1.476
  +++ wiki.php	21 Jul 2009 16:09:44 -0000	1.477
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.476 2009/07/16 19:04:39 wkpark Exp $
  +// $Id: wiki.php,v 1.477 2009/07/21 16:09:44 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.476 $',1,-1);
  +$_revision = substr('$Revision: 1.477 $',1,-1);
   $_release = '1.1.4-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -2869,7 +2869,7 @@
       return $bra.$ret.$ket;
     }
   
  -  function processor_repl($processor,$value,$options="") {
  +  function processor_repl($processor,$value,&$options) {
       $bra='';$ket='';
       if (!empty($this->wikimarkup) and empty($options['nomarkup'])) {
         if ($options['type'] == 'inline') {
  @@ -2913,7 +2913,6 @@
       $myclass= & new $classname($this,$options);
       $ret= call_user_func(array($myclass,'process'),$value,$options);
       if ($myclass->_type=='wikimarkup') return $ret;
  -    if (!is_string($ret)) return $ret;
       return $bra.$ret.$ket;
     }
   
  @@ -3161,8 +3160,10 @@
         if (isset($cell{0}) and $cell{strlen($cell)-1} == "\n")
           $cell = substr($cell,0,-1).' '; // XXX
   
  -      if (strpos($cell,"\n") !== false)
  -        $cell=$this->processor_repl('monimarkup',$cell, array('notoc'=>1));
  +      if (strpos($cell,"\n") !== false) {
  +        $params = array('notoc'=>1);
  +        $cell=$this->processor_repl('monimarkup',$cell, $params);
  +      }
         if ($m[3] and $m[5]) $align='center';
         else if (!$m[3]) $align='';
         else if (!$m[5]) $align='right';
  
  
  


wkpark      2009/07/22 01:09:44

  Modified:    plugin   MathChooser.php latex2png.php
  Log:
  set $params['retval'] as the real path of the img conditionally instead of setting ret val as an array.
  
  Revision  Changes    Path
  1.7       +11 -6     moniwiki/plugin/MathChooser.php
  
  Index: MathChooser.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/MathChooser.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- MathChooser.php	16 Jul 2009 19:04:40 -0000	1.6
  +++ MathChooser.php	21 Jul 2009 16:09:44 -0000	1.7
  @@ -8,12 +8,12 @@
   // Name: MathChooser
   // Description: Latex symbol selector
   // URL: MoniWiki/MathChooserPlugin
  -// Version: $Revision: 1.6 $
  +// Version: $Revision: 1.7 $
   // License: GPL
   //
   // Usage: [[MathChooser]]
   //
  -// $Id: MathChooser.php,v 1.6 2009/07/16 19:04:40 wkpark Exp $
  +// $Id: MathChooser.php,v 1.7 2009/07/21 16:09:44 wkpark Exp $
   
   function macro_MathChooser($formatter,$value) {
       global $DBInfo;
  @@ -111,12 +111,17 @@
           $tex= '\displaystyle '.implode('& \displaystyle ',$tmp);
           $tex = "$$\n\\begin{array}{ $col }\n$tex\n\\end{array}\n$$\n";
   
  -        $my = $formatter->macro_repl('latex2png',$tex);
  -        if (!is_array($my)) {
  +        $retval = false;
  +        $params = array();
  +        $params['retval'] = &$retval;
  +        
  +        $my = $formatter->macro_repl('latex2png',$tex, $params);
  +        if (empty($params['retval'])) {
               $toolbar = $my;
  +            $turl = $my;
           } else {
  -            $toolbar = $my[0];
  -            $turl = $my[1];
  +            $toolbar = $params['retval'];
  +            $turl = $my;
           }
           $tab.='<li title="'.$k.'"'.$attr.' onclick="menuToogle(this)"><span>'._($k).'</span></li>';
           $attr='';
  
  
  
  1.4       +9 -7      moniwiki/plugin/latex2png.php
  
  Index: latex2png.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/latex2png.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- latex2png.php	16 Jul 2009 19:04:40 -0000	1.3
  +++ latex2png.php	21 Jul 2009 16:09:44 -0000	1.4
  @@ -8,27 +8,29 @@
   // Name: Latex To PNG plugin
   // Description: convert latex syntax to PNGs
   // URL: MoniWiki:Latex2PngPlugin
  -// Version: $Revision: 1.3 $
  +// Version: $Revision: 1.4 $
   // License: GPL
   //
   // Usage: ?action=latex2png&value=$\alpha$
   //
  -// $Id: latex2png.php,v 1.3 2009/07/16 19:04:40 wkpark Exp $
  +// $Id: latex2png.php,v 1.4 2009/07/21 16:09:44 wkpark Exp $
   
   function macro_latex2png($formatter,$value,$params=array()) {
  -    $png= $formatter->processor_repl('latex',$value,array('raw'=>1));
  +    $png= $formatter->processor_repl('latex',$value, $params);
       return $png;
   }
   
   function do_latex2png($formatter,$options) {
  -    $opts=array('raw'=>1);
  +    $retval = false;
  +    $opts = array();
  +    $opts['retval'] = &$retval;
       if (isset($options['dpi']) and $options['dpi'] > 120 and $options['dpi'] < 600)
           $opts['dpi']=$options['dpi'];
       $my= $formatter->processor_repl('latex',$options['value'],$opts);
  -    if (!is_array($my))
  -        $png = $my;
  +    if (!empty($opts['retval']))
  +        $png = $opts['retval'];
       else
  -        $png = $my[0];
  +        $png = $my;
   
       if (file_exists($png)) {
           Header("Content-type: image/png");
  
  
  


wkpark      2009/07/22 01:09:44

  Modified:    plugin/processor latex.php
  Log:
  set $params['retval'] as the real path of the img conditionally instead of setting ret val as an array.
  
  Revision  Changes    Path
  1.26      +5 -3      moniwiki/plugin/processor/latex.php
  
  Index: latex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/latex.php,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- latex.php	16 Jul 2009 19:04:40 -0000	1.25
  +++ latex.php	21 Jul 2009 16:09:44 -0000	1.26
  @@ -12,7 +12,7 @@
   // $path='./bin;C:/Program Files/MiKTeX 2.5/miktex/bin;C:/Program Files/ImageMagick-6.3.6-Q16';
   // # ImagMagick and MikTeX are used in this setting.
   //
  -// $Id: latex.php,v 1.25 2009/07/16 19:04:40 wkpark Exp $
  +// $Id: latex.php,v 1.26 2009/07/21 16:09:44 wkpark Exp $
   
   function _latex_renumber($match,$tag='\\tag') {
     // XXX
  @@ -37,7 +37,7 @@
     $latex_convert_options=
       $DBInfo->latex_convert_options ? $DBInfo->latex_convert_options:"-trim -crop 0x0 -density 120x120";
   
  -  $raw_mode = $options['raw'] ? 1:0;
  +  $raw_mode = isset($options['retval']) ? 1:0;
   
     # site spesific variables
     $latex="latex";
  @@ -276,7 +276,9 @@
     if (!$raw_mode)
       return $log.$bra."<img class='tex' src='$png_url' rel='$uniq' alt='$alt' ".
            "title='$title' />".$ket;
  -  return array($png, $png_url);
  +  $retval = &$options['retval'];
  +  $retval = $png;
  +  return $png_url;
   }
   
   // vim:et:sts=2:sw=2
  
  
  


wkpark      2009/07/22 18:05:36

  Modified:    css      _base.css
  Log:
  strip class='info' / separate changes info / buttonize some links etc.
  
  Revision  Changes    Path
  1.30      +11 -5     moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- _base.css	13 Jul 2009 15:43:32 -0000	1.29
  +++ _base.css	22 Jul 2009 09:05:36 -0000	1.30
  @@ -116,8 +116,8 @@
     padding-right:0;
   }
   
  -th.info {
  -  background-color:#E2ECE2;
  +.info th {
  +  background-color:#FBFBFB;
   /*  border-collapse: collapse; */
   /*  border: 1px solid silver; */
   }
  @@ -127,8 +127,14 @@
     color:gray;
   }
   
  -td.info {
  -  background-color:#E2ECE2;
  +.info td {
  +  background-color:#FEFEFE;
  +}
  +table.info {
  +  border-spacing:2px;
  +/*  border-collapse:collapse; /* */
  +  border-collapse:separate;
  +  padding:3px;
   }
   
   h1,h2,h3,h4,h5 {
  @@ -275,7 +281,7 @@
   }
   
   #wikiBody {
  -  margin: 10px 10px 10px 15px; 
  +  margin: 10px 10px 0px 15px;
   }
   
   #wikiFooter {
  
  
  


wkpark      2009/07/22 18:05:36

  Modified:    plugin   Info.php
  Log:
  strip class='info' / separate changes info / buttonize some links etc.
  
  Revision  Changes    Path
  1.22      +16 -15    moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Info.php,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- Info.php	1 May 2009 16:47:23 -0000	1.21
  +++ Info.php	22 Jul 2009 09:05:36 -0000	1.22
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Info plugin for the MoniWiki
   //
  -// $Id: Info.php,v 1.21 2009/05/01 16:47:23 wkpark Exp $
  +// $Id: Info.php,v 1.22 2009/07/22 09:05:36 wkpark Exp $
   
   function _parse_rlog($formatter,$log,$options=array()) {
     global $DBInfo;
  @@ -13,10 +13,10 @@
   
     if ($options['info_actions'])
       $actions=$options['info_actions'];
  -  else if ($DBInfo->info_actions)
  +  else if (isset($DBInfo->info_actions))
       $actions=$DBInfo->info_actions;
     else
  -    $actions=array('recall'=>'view','raw'=>'raw');
  +    $actions=array('recall'=>'view','raw'=>'source');
   
     $state=0;
     $flag=0;
  @@ -27,20 +27,21 @@
   
     $url=$formatter->link_url($formatter->page->urlname);
   
  -  $diff_btn=_("Diff");
  +  $diff_btn=_("Compare");
     $out = "<div class='wikiInfo'>\n";
     if ($options['title'])
       $out.=$options['title'];
     else
       $out.="<h2>"._("Revision History")."</h2>\n";
     $out.="<form id='infoform' method='post' action='$url'>";
  -  $out.="<table class='info' cellpadding='3' cellspacing='2'><tr>\n";
  -  $out.="<th class='info'>"._("ver.")."</th><th class='info'>"._("Date and Changes")."</th>".
  -       "<th class='info'>"._("Editor")."</th>".
  -       "<th class='info'><input type='submit' value='$diff_btn'></th>";
  +  $out.="<div><table class='info'><tr class='head'>\n";
  +  $out.="<th>"._("Ver.")."</th><th>"._("Date")."</th>".
  +       "<th>"._("Changes")."</th>".
  +       "<th>"._("Editor")."</th>".
  +       "<th><button type='submit'><span>$diff_btn</span></button></th>";
     if (!$simple) {
  -    $out.="<th class='info'>"._("actions")."</th>";
  -    if (isset($admin)) $out.= "<th class='info'>"._("admin.")."</th>";
  +    $out.="<th>"._("View")."</th>";
  +    if (isset($admin)) $out.= "<th>"._("admin.")."</th>";
     }
     $out.= "</tr>\n";
   
  @@ -152,9 +153,9 @@
            $rowspan=1;
            if (!$simple and $comment) $rowspan=2;
   
  -         $rrev= $rrev ? $rrev:$rev;
  +         $rrev= $rrev ? $rrev:$formatter->link_to("?action=recall&rev=$rev",$rev);
            $out.="<tr>\n";
  -         $out.="<th class='rev' valign='top' rowspan=$rowspan>$rrev</th><td nowrap='nowrap'>$inf $change</td><td>$ip&nbsp;</td>";
  +         $out.="<th class='rev' valign='top' rowspan=$rowspan>$rrev</th><td nowrap='nowrap'>$inf</td><td>$change</td><td>$ip&nbsp;</td>";
            $rrev='';
            $achecked="";
            $bchecked="";
  @@ -170,10 +171,10 @@
            $out.="<td nowrap='nowrap'>";
            foreach ($actions as $k=>$v) {
              $k=is_numeric($k) ? $v:$k;
  -           $out.=$formatter->link_to("?action=$k&amp;rev=$rev",_($v)).' ';
  +           $out.=$formatter->link_to("?action=$k&amp;rev=$rev",'<span>'._($v).'</span>', ' class="button small"').' ';
            }
            if ($flag) {
  -            $out.= " ".$formatter->link_to("?action=diff&amp;rev=$rev",_("diff"));
  +            $out.= " ".$formatter->link_to("?action=diff&amp;rev=$rev",'<span>'._("diff").'</span>', ' class="button small"');
               $out.="</td>";
               if (isset($admin))
                 $out.=
  @@ -202,7 +203,7 @@
     }
     $out.="<input type='submit' name='rcspurge' value='"._("purge")."'></td></tr>";
     endif;
  -  $out.="<input type='hidden' name='action' value='diff'/></form></table>\n";
  +  $out.="<input type='hidden' name='action' value='diff'/></table></div></form>\n";
     $out.="<script type='text/javascript' src='$DBInfo->url_prefix/local/checkbox.js'></script></div>\n";
     return $out; 
   }
  
  
  


wkpark      2009/07/27 21:33:01

  Modified:    plugin   Info.php
  Log:
  make Info page more css friendly
  
  Revision  Changes    Path
  1.23      +21 -12    moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Info.php,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- Info.php	22 Jul 2009 09:05:36 -0000	1.22
  +++ Info.php	27 Jul 2009 12:33:01 -0000	1.23
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Info plugin for the MoniWiki
   //
  -// $Id: Info.php,v 1.22 2009/07/22 09:05:36 wkpark Exp $
  +// $Id: Info.php,v 1.23 2009/07/27 12:33:01 wkpark Exp $
   
   function _parse_rlog($formatter,$log,$options=array()) {
     global $DBInfo;
  @@ -16,7 +16,13 @@
     else if (isset($DBInfo->info_actions))
       $actions=$DBInfo->info_actions;
     else
  -    $actions=array('recall'=>'view','raw'=>'source');
  +    $actions=array('recall'=>'view','raw'=>'source','diff'=>'diff');
  +
  +  $diff_action = null;
  +  if (isset($actions['diff'])) {
  +    $diff_action = _($actions['diff']);
  +    unset($actions['diff']);
  +  }
   
     $state=0;
     $flag=0;
  @@ -34,17 +40,19 @@
     else
       $out.="<h2>"._("Revision History")."</h2>\n";
     $out.="<form id='infoform' method='post' action='$url'>";
  -  $out.="<div><table class='info'><tr class='head'>\n";
  +  $out.="<div><table class='info'><thead><tr>\n";
     $out.="<th>"._("Ver.")."</th><th>"._("Date")."</th>".
          "<th>"._("Changes")."</th>".
          "<th>"._("Editor")."</th>".
  -       "<th><button type='submit'><span>$diff_btn</span></button></th>";
  +       "<th><button type='submit'><span>$diff_btn</span></button></th>\n";
     if (!$simple) {
  -    $out.="<th>"._("View")."</th>";
  +    if (!empty($actions))
  +      $out.="<th>"._("View")."</th>";
       if (isset($admin)) $out.= "<th>"._("admin.")."</th>";
     }
  -  $out.= "</tr>\n";
  +  $out.= "</tr>\n</thead>\n";
   
  +  $out.= "<tbody>\n";
     $users=array();
     $rr=0;
    
  @@ -155,7 +163,7 @@
   
            $rrev= $rrev ? $rrev:$formatter->link_to("?action=recall&rev=$rev",$rev);
            $out.="<tr>\n";
  -         $out.="<th class='rev' valign='top' rowspan=$rowspan>$rrev</th><td nowrap='nowrap'>$inf</td><td>$change</td><td>$ip&nbsp;</td>";
  +         $out.="<th class='rev' valign='top' rowspan=$rowspan>$rrev</th><td nowrap='nowrap' class='date'>$inf</td><td class='change'>$change</td><td class='author'>$ip&nbsp;</td>";
            $rrev='';
            $achecked="";
            $bchecked="";
  @@ -164,17 +172,18 @@
            else if (!$flag)
               $bchecked="checked ";
            $onclick="onclick='ToggleRev(this)'";
  -         $out.="<th nowrap='nowrap'><input type='radio' name='rev' value='$rev' $achecked $onclick />";
  +         $out.="<th nowrap='nowrap' class='check'><input type='radio' name='rev' value='$rev' $achecked $onclick />\n";
            $out.="<input type='radio' name='rev2' value='$rev' $bchecked $onclick /></th>";
   
            if (!$simple):
            $out.="<td nowrap='nowrap'>";
            foreach ($actions as $k=>$v) {
              $k=is_numeric($k) ? $v:$k;
  -           $out.=$formatter->link_to("?action=$k&amp;rev=$rev",'<span>'._($v).'</span>', ' class="button small"').' ';
  +           $out.=$formatter->link_to("?action=$k&amp;rev=$rev",'<span>'._($v).'</span>', ' class="button-small"').' ';
            }
            if ($flag) {
  -            $out.= " ".$formatter->link_to("?action=diff&amp;rev=$rev",'<span>'._("diff").'</span>', ' class="button small"');
  +            if ($diff_action)
  +              $out.= " ".$formatter->link_to("?action=diff&amp;rev=$rev",'<span>'.$diff_action.'</span>', ' class="button-small"');
               $out.="</td>";
               if (isset($admin))
                 $out.=
  @@ -188,7 +197,7 @@
            endif;
            $out.="</tr>\n";
            if (!$simple and $comment)
  -            $out.="<tr><td class='info' colspan='5'>$comment&nbsp;</td></tr>\n";
  +            $out.="<tr class='log'><td colspan='5'>$comment&nbsp;</td></tr>\n";
            $state=1;
            $flag++;
            $count++;
  @@ -203,7 +212,7 @@
     }
     $out.="<input type='submit' name='rcspurge' value='"._("purge")."'></td></tr>";
     endif;
  -  $out.="<input type='hidden' name='action' value='diff'/></table></div></form>\n";
  +  $out.="<input type='hidden' name='action' value='diff'/>\n</tbody></table></div></form>\n";
     $out.="<script type='text/javascript' src='$DBInfo->url_prefix/local/checkbox.js'></script></div>\n";
     return $out; 
   }
  
  
  


wkpark      2009/07/27 21:44:24

  Modified:    css      _extra.css
  Log:
  fixup some css for IE using css hack
  
  Revision  Changes    Path
  1.26      +18 -8     moniwiki/css/_extra.css
  
  Index: _extra.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_extra.css,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- _extra.css	15 Jul 2009 23:56:17 -0000	1.25
  +++ _extra.css	27 Jul 2009 12:44:24 -0000	1.26
  @@ -472,9 +472,9 @@
   td.name { padding-left:0.5em; }
   
   /* from the zeroboard */
  -
  -a.button, span.button, del.button {
  -  background-position:0px 0px; /* XXX */
  +/*
  +#mycontent a.button, span.button, del.button {
  +  background-position:0px 0px;
     background-repeat:no-repeat;
     border:medium none;
     color:#2E523B;
  @@ -494,7 +494,7 @@
   a.button, span.button, del.button, a.button span, span.button button, span.button input, del.button span {
     background-image:url(../imgs/plugin/BBS/form_btns.png);
   }
  -a.button span, span.button button, span.button input, del.button span {
  +#mycontent a.button span, span.button button, span.button input, del.button span {
     background-color:transparent;
     background-position:100% 0pt;
     background-repeat:no-repeat;
  @@ -559,6 +559,8 @@
   span.button button, del.button span, span.button input {
   }
   
  +*/
  +
   /* */
   .pnut {
     text-align:center;
  @@ -582,15 +584,19 @@
   #editor_area .captcha {
     vertical-align:middle;
     position:absolute;
  -  padding:0px;
     right:17px; /* ~ scrollbar width */
     bottom:14px; /* ~ resizer grip height */
     opacity:0.7;filter:alpha(opacity=70);
  +  /* IE Fix */
  +  _float:right;
  +  _margin-top:-73px;
  +  _margin-right:0px;
  +  _position:relative;
     _opacity:1;
     _filter:alpha(opacity=100);
   }
   
  -.captcha:hover {
  +#editor_area .captcha:hover {
     opacity:1;filter:alpha(opacity=100);
   }
   
  @@ -602,6 +608,7 @@
     padding: 2px;
     margin-top:3px;
     margin-bottom:3px;
  +  display:inline-block;
     /* background-color: #f0f0f0; /* */
   }
   
  @@ -671,13 +678,16 @@
     background:#FFFFE1;
   }
   
  -.toolbar {
  +#wikiBody ul.toolbar {
  +  display:inline-block;
     list-style-image: none;
     list-style-type: none;
     list-style-position: outside;
     margin: 2px;
     margin-top:0px;
     padding:0 2px;
  +  _padding-bottom:2px;
  +  _margin-left:1px;
     float:left;
     background:url(../imgs/misc/panbg.png) repeat-x;
     border-top: 0;
  @@ -692,7 +702,7 @@
     margin-top:2px;
     margin-bottom:2px;
     cursor: pointer;
  -  display: inline;
  +  display: inline-block;
     float:left;
   }
   
  
  
  


wkpark      2009/07/30 01:21:36

  Modified:    plugin   Info.php RecentChanges.php
  Log:
  more bbs like recentchanges. some i18nize
  
  Revision  Changes    Path
  1.24      +3 -3      moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Info.php,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- Info.php	27 Jul 2009 12:33:01 -0000	1.23
  +++ Info.php	29 Jul 2009 16:21:36 -0000	1.24
  @@ -1,9 +1,9 @@
   <?php
  -// Copyright 2003-2004 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2009 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a Info plugin for the MoniWiki
   //
  -// $Id: Info.php,v 1.23 2009/07/27 12:33:01 wkpark Exp $
  +// $Id: Info.php,v 1.24 2009/07/29 16:21:36 wkpark Exp $
   
   function _parse_rlog($formatter,$log,$options=array()) {
     global $DBInfo;
  @@ -176,7 +176,7 @@
            $out.="<input type='radio' name='rev2' value='$rev' $bchecked $onclick /></th>";
   
            if (!$simple):
  -         $out.="<td nowrap='nowrap'>";
  +         $out.="<td nowrap='nowrap' class='view'>";
            foreach ($actions as $k=>$v) {
              $k=is_numeric($k) ? $v:$k;
              $out.=$formatter->link_to("?action=$k&amp;rev=$rev",'<span>'._($v).'</span>', ' class="button-small"').' ';
  
  
  
  1.31      +48 -7     moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- RecentChanges.php	1 May 2009 16:47:23 -0000	1.30
  +++ RecentChanges.php	29 Jul 2009 16:21:36 -0000	1.31
  @@ -1,9 +1,9 @@
   <?php
  -// Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2009 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.30 2009/05/01 16:47:23 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.31 2009/07/29 16:21:36 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     $options['trail']='';
  @@ -15,6 +15,27 @@
     return;
   }
   
  +function _timesago($timestamp, $date_fmt='Y-m-d', $tz_offset = 0) {
  +	// FIXME use $sys_datafmt ?
  +	$time_current = time();
  +	$diff=(int)($time_current - $timestamp);
  +
  +	if ($diff < 0) {
  +		$ago = gmdate( $date_fmt, $timestamp + $tz_offset);
  +		return $ago;
  +	}
  +	if ($diff < 60*60 or $diff < 0) {
  +		$ago = sprintf(_("%d minute ago"),(int)($diff / 60), $diff % 60);
  +	} else if ( $diff < 60*60*24) {
  +		$ago = sprintf(_("%d hours ago"),(int)($diff / 60 / 60), ($diff / 60) % 60);
  +	} else if ( $diff < 60*60*24*7*2) {
  +		$ago = sprintf(_("%d days ago"),(int)($diff / 60 / 60 / 24), ($diff / 60 / 60) % 24);
  +	} else {
  +		$ago = gmdate( $date_fmt, $timestamp + $tz_offset);
  +	}
  +	return $ago;
  +}
  +
   function macro_RecentChanges($formatter,$value='',$options='') {
     global $DBInfo;
   
  @@ -82,9 +103,18 @@
           $changed_time_fmt = 'm-d [H:i]';
           $use_day=0;
           $template_bra="<table border='0' cellpadding='0' cellspacing='0' width='100%'>";
  +        $template_bra.="<thead><th colspan='3' class='title'>"._("Title")."</th><th class='date'>"._("Change Date").
  +          "</th><th class='author'>"._("Editor")."</th><th class='editinfo'>"._("Changes").'</th>';
  +        if ($DBInfo->use_counter)
  +          $template_bra.="<th class='hits'>"._("Hits")."</th>";
  +        $template_bra.="</thead>\n<tbody>\n";
           $template=
  -  '$out.= "<tr$alt><td style=\'white-space:nowrap;width:2%\'>$icon</td><td style=\'width:40%\'>$title$updated</td><td class=\'date\' style=\'width:15%\'>$date</td><td class=\'user\'>$user</td><td class=\'editinfo\'>$count</td><td>$extra</td><td class=\'hits\'>$hits</td></tr>\n";';
  -        $template_cat="</table>";
  +  '$out.= "<tr$alt><td style=\'white-space:nowrap;width:2%\'>$icon</td><td class=\'title\' style=\'width:40%\'>$title$updated</td><td>$bmark</td><td class=\'date\' style=\'width:15%\'>$date</td><td class=\'author\'>$user</td><td class=\'editinfo\'>$count</td>';
  +        if ($DBInfo->use_counter)
  +          $template.='<td class=\'hits\'>$hits</td>';
  +        $template_extra=$template.'</tr>\n<tr><td class=\'log\' colspan=\'6\'>$extra</td></tr>\n";';
  +        $template.='</tr>\n";';
  +        $template_cat="</tbody></table>";
         }
       }
     }
  @@ -208,13 +238,17 @@
       if (! empty($changed_time_fmt)) {
         $date= gmdate($changed_time_fmt, $ed_time+$tz_offset);
         if ($timesago) {
  +        $date = _timesago($ed_time, 'Y-m-d', $tz_offset);
  +        /*
           $time_diff=(int)($time_current - $ed_time)/60;
           if ($time_diff < 1440) {
             $date=sprintf(_("[%sh %sm ago]"),(int)($time_diff/60),$time_diff%60);
           }
  +        */
         }
       }
   
  +    $bmark = '';
       if ($day != $ratchet_day) {
         $ratchet_day = $day;
         if (!empty($use_day)) {
  @@ -232,6 +266,8 @@
           $br="<br />";
           $out.='</span>'.$perma.'<br />'.$bra;
           $cat0=$cat;
  +      } else {
  +        $bmark=$formatter->link_to("?action=bookmark&amp;time=$ed_time".$daysago,'<span>'._("Bookmark").'</span>', 'class="button-small"');
         }
       }
       if (empty($use_day)) {
  @@ -297,17 +333,22 @@
       }
       $count=""; $extra="";
       if ($editcount[$page_key] > 1)
  -      $count=" [".$editcount[$page_key]." changes]";
  +      $count=sprintf(_("%s changes"), " <span class='num'>".$editcount[$page_key]."</span>");
       if ($comment && $log)
         $extra="&nbsp; &nbsp; &nbsp; <small>$log</small>";
   
       $alt = ($ii % 2 == 0) ? ' class="alt"':'';
  -    eval($template);
  +    if ($extra and isset($template_extra)) {
  +      eval($template_extra);
  +    } else {
  +      eval($template);
  +    }
   
       $logs[$page_key]= 1;
       ++$ii;
     }
  -  return $btnlist.'<div class="recentChanges">'.$template_bra.$out.$template_cat.$cat0.'</div>';
  +  $title = "<h2>"._("Recent Changes")."</h2>";
  +  return $btnlist.'<div class="recentChanges">'.$title.$template_bra.$out.$template_cat.$cat0.'</div>';
   }
   // vim:et:sts=2:
   ?>
  
  
  


wkpark      2009/07/30 01:22:37

  Modified:    .        wikilib.php
  Log:
  add $use_preview_anchor option.
  
  Revision  Changes    Path
  1.277     +8 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.276
  retrieving revision 1.277
  diff -u -r1.276 -r1.277
  --- wikilib.php	16 Jul 2009 06:05:01 -0000	1.276
  +++ wikilib.php	29 Jul 2009 16:22:37 -0000	1.277
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.276 2009/07/16 06:05:01 wkpark Exp $
  +// $Id: wikilib.php,v 1.277 2009/07/29 16:22:37 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -932,10 +932,15 @@
     if (!$options['simple'])
       $form.= "<a id='editor'></a>\n";
   
  +  if (isset($DBInfo->use_preview_anchor))
  +    $preview_anchor = '#preview';
  +  else
  +    $preview_anchor = '';
  +
     if ($options['page'])
  -    $previewurl=$formatter->link_url(_rawurlencode($options['page']),'#preview');
  +    $previewurl=$formatter->link_url(_rawurlencode($options['page']), $preview_anchor);
     else
  -    $previewurl=$formatter->link_url($formatter->page->urlname,'#preview');
  +    $previewurl=$formatter->link_url($formatter->page->urlname, $preview_anchor);
   
     $menu= ''; $sep= '';
     if (!$DBInfo->use_resizer and (!$options['noresizer'] or !$use_js)) {
  
  
  


wkpark      2009/07/30 02:52:45

  Modified:    locale   dummy.php
  Log:
  update msgs
  
  Revision  Changes    Path
  1.2       +2 -1      moniwiki/locale/dummy.php
  
  Index: dummy.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/dummy.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- dummy.php	10 Aug 2003 13:09:49 -0000	1.1
  +++ dummy.php	29 Jul 2009 17:52:45 -0000	1.2
  @@ -4,7 +4,8 @@
     _("TitleIndex"), _("HelpContents"),
     _("DeletePage"), _("LikePages"), _("FindPage"), _("UploadFile"),
     _("UploadedFiles"), _("EditText"), _("ShowPage"), _("InterWiki"),
  -  _("BlogChanges"),_("VisualTour"),_("TrackBack")
  +  _("BlogChanges"),_("VisualTour"),_("TrackBack"),
  +  _("source"),_("diff"), _("recall"), _("view")
   );
   
   ?>
  
  
  


wkpark      2009/07/30 02:52:45

  Modified:    locale/po fr.po ko.po moniwiki.pot
  Log:
  update msgs
  
  Revision  Changes    Path
  1.27      +261 -221  moniwiki/locale/po/fr.po
  
  Index: fr.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/fr.po,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- fr.po	13 Jul 2009 15:35:47 -0000	1.26
  +++ fr.po	29 Jul 2009 17:52:45 -0000	1.27
  @@ -4,7 +4,7 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2009-07-14 00:35+0900\n"
  +"POT-Creation-Date: 2009-07-30 00:37+0900\n"
   "PO-Revision-Date: 2003-08-17 22:51+0900\n"
   "Last-Translator: Serge Stinckwich <Serge.Stinckwich@info.unicaen.fr>\n"
   "Language-Team: fr <fr@li.org>\n"
  @@ -110,10 +110,11 @@
   
   # ../wiki.php:2950
   #: ../plugin/Blog.php:262 ../plugin/Blog.php:333
  +#: ../plugin/RecentChanges.php:106
   msgid "Title"
   msgstr "titre"
   
  -#: ../plugin/Blog.php:268 ../wikilib.php:972
  +#: ../plugin/Blog.php:268 ../wikilib.php:1052
   msgid "GUI"
   msgstr ""
   
  @@ -209,7 +210,8 @@
   msgstr "commentaire"
   
   # ../wikilib.php:482
  -#: ../plugin/Comment.php:93 ../wikilib.php:966 ../monisetup.php:1305
  +#: ../plugin/Comment.php:93 ../wikilib.php:795 ../wikilib.php:1046
  +#: ../wikilib.php:1715 ../wikilib.php:1805 ../monisetup.php:1305
   msgid "Preview"
   msgstr "Pr?visualisation"
   
  @@ -234,17 +236,17 @@
   msgstr ""
   
   #: ../plugin/Comment.php:169 ../plugin/userform.php:118
  -#: ../plugin/userform.php:181 ../plugin/userform.php:204 ../wikilib.php:1665
  +#: ../plugin/userform.php:181 ../plugin/userform.php:204 ../wikilib.php:1758
   msgid "Invalid ticket !"
   msgstr ""
   
   #: ../plugin/Comment.php:174 ../plugin/userform.php:120
  -#: ../plugin/userform.php:206 ../wikilib.php:1670
  +#: ../plugin/userform.php:206 ../wikilib.php:1763
   msgid "You need a ticket !"
   msgstr ""
   
   #: ../plugin/Comment.php:196 ../plugin/Gallery.php:174 ../plugin/bbs.php:1009
  -#: ../wikilib.php:1509 ../wikilib.php:1686
  +#: ../wikilib.php:1581 ../wikilib.php:1779
   msgid ""
   "Sorry, can not save page because some messages are blocked in this wiki."
   msgstr ""
  @@ -266,18 +268,18 @@
   msgstr ""
   
   # ../wiki.php:2211 ../wiki.php:2360
  -#: ../plugin/Diff.php:410 ../plugin/Info.php:230
  +#: ../plugin/Diff.php:410 ../plugin/Info.php:240
   msgid "No older revisions available"
   msgstr "Aucune r?vision plus ancienne disponible"
   
   # ../wikilib.php:803
  -#: ../plugin/Diff.php:415 ../plugin/Info.php:236 ../plugin/rcsexport.php:13
  +#: ../plugin/Diff.php:415 ../plugin/Info.php:246 ../plugin/rcsexport.php:13
   #: ../plugin/rcsimport.php:13
   msgid "Version info is not available in this wiki"
   msgstr ""
   
   # ../wiki.php:2338 ../wiki.php:2373 ../wikilib.php:770
  -#: ../plugin/Diff.php:426 ../wikilib.php:1642
  +#: ../plugin/Diff.php:426 ../wikilib.php:1735
   msgid "No difference found"
   msgstr "Aucune diff?rence trouv?"
   
  @@ -309,7 +311,7 @@
   msgstr "Faire un nouveau dessin"
   
   # ../plugin/Draw.php:48
  -#: ../plugin/Draw.php:92 ../plugin/UploadFile.php:250
  +#: ../plugin/Draw.php:92 ../plugin/UploadFile.php:252
   #, c-format
   msgid "Fail to copy \"%s\" to \"%s\""
   msgstr "Impossible de copier \"%s\" vers \"%s\""
  @@ -357,18 +359,18 @@
   
   # ../plugin/FastSearch.php:125
   #: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:38
  -#: ../wikilib.php:1430
  +#: ../wikilib.php:1502
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr "Trouv? %s s'appariant avec %s sur un total de %s pages"
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1432
  +#: ../wikilib.php:1504
   msgid "page"
   msgstr ""
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1432
  +#: ../wikilib.php:1504
   msgid "pages"
   msgstr ""
   
  @@ -388,8 +390,8 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4496
  -#: ../wikilib.php:948
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4498
  +#: ../wikilib.php:1032
   msgid "Refresh"
   msgstr ""
   
  @@ -406,8 +408,8 @@
   " ou cliquer sur %s pour faire une recherche en texte int?gral de cette "
   "page.\n"
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5439 ../wiki.php:5446
  -#: ../wikilib.php:1440
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5441 ../wiki.php:5448
  +#: ../wikilib.php:1512
   msgid "here"
   msgstr ""
   
  @@ -423,7 +425,7 @@
   msgid "Case-sensitive searching"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:77 ../wikilib.php:2762 ../wikilib.php:2824
  +#: ../plugin/FullSearch.php:77 ../wikilib.php:2870 ../wikilib.php:2932
   msgid "Go"
   msgstr ""
   
  @@ -432,13 +434,13 @@
   msgstr ""
   
   # ../wikilib.php:1483
  -#: ../plugin/FullSearch.php:144 ../wikilib.php:2783
  +#: ../plugin/FullSearch.php:144 ../wikilib.php:2891
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "Expression de recherche \"%s\" invalide"
   
   # ../plugin/TwinPages.php:20
  -#: ../plugin/Gallery.php:245 ../plugin/UploadedFiles.php:285
  +#: ../plugin/Gallery.php:245 ../plugin/UploadedFiles.php:287
   msgid "No files found"
   msgstr ""
   
  @@ -453,8 +455,8 @@
   msgstr ""
   
   # ../wikilib.php:769
  -#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1496
  -#: ../wikilib.php:1640
  +#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1568
  +#: ../wikilib.php:1733
   #, c-format
   msgid "Go back or return to %s"
   msgstr "Revenir en arri?re ou retourner ? %s"
  @@ -472,69 +474,69 @@
   msgid "Import URL"
   msgstr ""
   
  -#: ../plugin/Info.php:30
  -msgid "Diff"
  +#: ../plugin/Info.php:36
  +msgid "Compare"
   msgstr ""
   
   # ../wiki.php:2110
  -#: ../plugin/Info.php:35
  +#: ../plugin/Info.php:41
   msgid "Revision History"
   msgstr "Historique de r?vision"
   
  -#: ../plugin/Info.php:38
  -msgid "ver."
  +#: ../plugin/Info.php:44
  +msgid "Ver."
   msgstr ""
   
  -# ../locale/dummy.php:3
  -#: ../plugin/Info.php:38
  -msgid "Date and Changes"
  +#: ../plugin/Info.php:44 ../plugin/UploadedFiles.php:303
  +msgid "Date"
  +msgstr ""
  +
  +# ../locale/dummy.php:7
  +#: ../plugin/Info.php:45 ../plugin/RecentChanges.php:107
  +msgid "Changes"
   msgstr ""
   
   # ../wikilib.php:734
  -#: ../plugin/Info.php:39
  +#: ../plugin/Info.php:46 ../plugin/RecentChanges.php:107
   msgid "Editor"
   msgstr ""
   
  -#: ../plugin/Info.php:42
  -msgid "actions"
  +#: ../plugin/Info.php:50
  +msgid "View"
   msgstr ""
   
  -#: ../plugin/Info.php:43
  +#: ../plugin/Info.php:51
   msgid "admin."
   msgstr ""
   
  -#: ../plugin/Info.php:59
  +#: ../plugin/Info.php:68
   msgid "Show all revisions"
   msgstr ""
   
  -#: ../plugin/Info.php:92
  +#: ../plugin/Info.php:101
   msgid "Yesterday"
   msgstr ""
   
  -#: ../plugin/Info.php:93
  +#: ../plugin/Info.php:102
   #, c-format
   msgid "%s days ago"
   msgstr ""
   
  -#: ../plugin/Info.php:95
  +#: ../plugin/Info.php:104
   #, c-format
   msgid "%s hours ago"
   msgstr ""
   
  -#: ../plugin/Info.php:97
  +#: ../plugin/Info.php:106
   #, c-format
   msgid "%s min ago"
   msgstr ""
   
  -#: ../plugin/Info.php:176
  -msgid "diff"
  -msgstr ""
  -
  -#: ../plugin/Info.php:199 ../plugin/rename.php:80
  +#: ../plugin/Info.php:209 ../plugin/rename.php:80
   msgid "show only"
   msgstr ""
   
  -#: ../plugin/Info.php:203
  +#: ../plugin/Info.php:213
   msgid "purge"
   msgstr ""
   
  @@ -650,7 +652,7 @@
   msgstr ""
   
   # ../wikilib.php:672 ../wikilib.php:1472
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1317 ../wikilib.php:2770
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1389 ../wikilib.php:2878
   msgid "Use more specific text"
   msgstr "Utiliser un texte plus sp?cifique"
   
  @@ -789,24 +791,57 @@
   msgid "Rating successfully !"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:125
  -msgid "Show changes for "
  +#: ../plugin/RecentChanges.php:28
  +#, c-format
  +msgid "%d minute ago"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:130
  -msgid "days ago"
  +#: ../plugin/RecentChanges.php:30
  +#, c-format
  +msgid "%d hours ago"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:213 ../plugin/pagelist.php:117
  -#: ../plugin/pagelist.php:134
  +#: ../plugin/RecentChanges.php:32
   #, c-format
  -msgid "[%sh %sm ago]"
  +msgid "%d days ago"
  +msgstr ""
  +
  +# ../locale/dummy.php:7
  +#: ../plugin/RecentChanges.php:106
  +msgid "Change Date"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:109
  +msgid "Hits"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:231
  +#: ../plugin/RecentChanges.php:155
  +msgid "Show changes for "
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:160
  +msgid "days ago"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:264
   msgid "set bookmark"
   msgstr ""
   
  +#: ../plugin/RecentChanges.php:273
  +msgid "Bookmark"
  +msgstr ""
  +
  +# ../locale/dummy.php:7
  +#: ../plugin/RecentChanges.php:335
  +#, c-format
  +msgid "%s changes"
  +msgstr ""
  +
  +# ../locale/dummy.php:3
  +#: ../plugin/RecentChanges.php:349
  +msgid "Recent Changes"
  +msgstr "ChangementsR?cents"
  +
   #: ../plugin/SWFUpload.php:136
   msgid "Files..."
   msgstr ""
  @@ -914,7 +949,7 @@
   msgstr "TwinPages de %s"
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../plugin/TwinPages.php:19 ../wiki.php:5425
  +#: ../plugin/TwinPages.php:19 ../wiki.php:5427
   msgid "See [TwinPages]: "
   msgstr "Voir [TwinPages]: "
   
  @@ -924,57 +959,57 @@
   msgstr "Aucune TwinPages trouv?"
   
   # ../wikilib.php:519
  -#: ../plugin/UploadFile.php:147 ../plugin/UploadFile.php:161
  +#: ../plugin/UploadFile.php:149 ../plugin/UploadFile.php:163
   #, c-format
   msgid "The %s type of %s is not allowed to upload"
   msgstr ""
   
   # ../wikilib.php:519
  -#: ../plugin/UploadFile.php:163
  +#: ../plugin/UploadFile.php:165
   #, c-format
   msgid "%s is not allowed to upload"
   msgstr "%s n'est pas une action valide"
   
  -#: ../plugin/UploadFile.php:218
  +#: ../plugin/UploadFile.php:220
   #, c-format
   msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
   msgstr ""
   
  -#: ../plugin/UploadFile.php:251
  +#: ../plugin/UploadFile.php:253
   msgid "Please check your php.ini setting"
   msgstr ""
   
   # ../wikilib.php:887
  -#: ../plugin/UploadFile.php:261
  +#: ../plugin/UploadFile.php:263
   #, c-format
   msgid "File \"%s\" is uploaded successfully"
   msgstr ""
   
   # ../wikilib.php:887
  -#: ../plugin/UploadFile.php:300
  +#: ../plugin/UploadFile.php:308
   msgid "Files are uploaded successfully"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:344
  +#: ../plugin/UploadFile.php:352
   msgid "Replace original file"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:345
  +#: ../plugin/UploadFile.php:353
   msgid "Rename if it already exist"
   msgstr ""
   
   # ../plugin/rename.php:27
  -#: ../plugin/UploadFile.php:350 ../plugin/rename.php:69
  +#: ../plugin/UploadFile.php:358 ../plugin/rename.php:69
   msgid "Rename"
   msgstr "Renommer"
   
   # ../plugin/minilogin.php:30
  -#: ../plugin/UploadFile.php:358
  +#: ../plugin/UploadFile.php:366
   #, c-format
   msgid "or %s."
   msgstr "ou %s"
   
  -#: ../plugin/UploadFile.php:358 ../plugin/UploadForm.php:99
  +#: ../plugin/UploadFile.php:366 ../plugin/UploadForm.php:143
   msgid "Upload files"
   msgstr ""
   
  @@ -982,57 +1017,53 @@
   msgid "Choose File"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:97
  +#: ../plugin/UploadForm.php:141
   msgid "add files"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:98
  +#: ../plugin/UploadForm.php:142
   msgid "add a file"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:100
  +#: ../plugin/UploadForm.php:144
   msgid "Reset"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:101
  +#: ../plugin/UploadForm.php:145
   msgid "Attachments"
   msgstr ""
   
   # ../plugin/rename.php:27
  -#: ../plugin/UploadedFiles.php:299
  +#: ../plugin/UploadedFiles.php:301
   msgid "File name"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:300
  +#: ../plugin/UploadedFiles.php:302
   msgid "Size"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:301
  -msgid "Date"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:351
  +#: ../plugin/UploadedFiles.php:353
   msgid "Next page &raquo;"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:353
  +#: ../plugin/UploadedFiles.php:355
   msgid "&laquo; First page"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:445
  +#: ../plugin/UploadedFiles.php:447
   #, c-format
   msgid "Total %d files"
   msgstr ""
   
   # ../plugin/rename.php:36
  -#: ../plugin/UploadedFiles.php:450 ../plugin/rcsimport.php:32
  +#: ../plugin/UploadedFiles.php:452 ../plugin/rcsimport.php:32
   #: ../plugin/rcsimport.php:88 ../plugin/rename.php:77 ../plugin/revert.php:82
  -#: ../plugin/userinfo.php:37 ../wikilib.php:1156 ../wikilib.php:2081
  +#: ../plugin/userinfo.php:37 ../wikilib.php:1228 ../wikilib.php:2189
   msgid "Password"
   msgstr "Mot de passe"
   
   # ../wikilib.php:550
  -#: ../plugin/UploadedFiles.php:451 ../wikilib.php:1134
  +#: ../plugin/UploadedFiles.php:453 ../wikilib.php:1206
   msgid "Delete selected files"
   msgstr "Effacer les fichiers s?lectionn?s"
   
  @@ -1056,7 +1087,7 @@
   msgid "Voted successfully"
   msgstr "Vote r?ussi"
   
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2520
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2628
   msgid "Others"
   msgstr ""
   
  @@ -1145,7 +1176,7 @@
   msgstr ""
   
   # ../locale/dummy.php:5
  -#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1157
  +#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1229
   msgid "Delete"
   msgstr ""
   
  @@ -1296,7 +1327,7 @@
   msgstr ""
   
   # ../plugin/minilogin.php:22 ../wikilib.php:1076
  -#: ../plugin/minilogin.php:18 ../wikilib.php:2162
  +#: ../plugin/minilogin.php:18 ../wikilib.php:2270
   msgid "Login or Join"
   msgstr "Se connecter ou se joindre ?"
   
  @@ -1345,6 +1376,11 @@
   msgid "Normalize this page name"
   msgstr ""
   
  +#: ../plugin/pagelist.php:117 ../plugin/pagelist.php:134
  +#, c-format
  +msgid "[%sh %sm ago]"
  +msgstr ""
  +
   #: ../plugin/pageview.php:70
   msgid "First:"
   msgstr ""
  @@ -1368,7 +1404,7 @@
   msgid "Save Changes"
   msgstr ""
   
  -#: ../plugin/processor/monimarkup.php:507 ../wiki.php:3881
  +#: ../plugin/processor/monimarkup.php:507 ../wiki.php:3883
   msgid "edit"
   msgstr ""
   
  @@ -1515,7 +1551,7 @@
   msgstr "Seulement le WikiMaster peut renommer cette page"
   
   # ../plugin/rename.php:39 ../wikilib.php:588
  -#: ../plugin/rename.php:79 ../wikilib.php:1202
  +#: ../plugin/rename.php:79 ../wikilib.php:1274
   msgid "with revision history"
   msgstr "avec l'historique de r?vision"
   
  @@ -1563,7 +1599,7 @@
   msgid "Select a tarball file to restore"
   msgstr ""
   
  -#: ../plugin/revert.php:23 ../wiki.php:5441
  +#: ../plugin/revert.php:23 ../wiki.php:5443
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr ""
  @@ -1591,7 +1627,7 @@
   msgid "Are you really want to revert this page ?"
   msgstr ""
   
  -#: ../plugin/revert.php:74 ../wikilib.php:963
  +#: ../plugin/revert.php:74 ../wikilib.php:1043
   msgid "Summary"
   msgstr ""
   
  @@ -1898,7 +1934,7 @@
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../plugin/userform.php:107 ../wikilib.php:2232
  +#: ../plugin/userform.php:107 ../wikilib.php:2340
   msgid "E-mail new password"
   msgstr ""
   
  @@ -1989,8 +2025,8 @@
   msgid "You are not allowed to register on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5379
  -#: ../wiki.php:5390
  +#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5381
  +#: ../wiki.php:5392
   msgid "Please contact WikiMasters"
   msgstr ""
   
  @@ -2138,137 +2174,137 @@
   msgstr ""
   
   # ../wikilib.php:521
  -#: ../wiki.php:2947 ../wiki.php:2958 ../wiki.php:5619
  +#: ../wiki.php:2947 ../wiki.php:2958 ../wiki.php:5621
   msgid "Invalid ajax action."
   msgstr ""
   
  -#: ../wiki.php:3456
  +#: ../wiki.php:3458
   msgid "Tags:"
   msgstr ""
   
   # ../wiki.php:1824
  -#: ../wiki.php:3484
  +#: ../wiki.php:3486
   #, c-format
   msgid "See %s"
   msgstr "Voir %s"
   
   # ../wiki.php:1824
  -#: ../wiki.php:3484
  +#: ../wiki.php:3486
   #, c-format
   msgid "TwinPages"
   msgstr ""
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../wiki.php:3489
  +#: ../wiki.php:3491
   msgid "See [TwinPages]:"
   msgstr "Voir [TwinPages]: "
   
  -#: ../wiki.php:4061
  +#: ../wiki.php:4063
   msgid "Sister Sites Index"
   msgstr ""
   
   # ../locale/dummy.php:6 ../wiki.php:2553
  -#: ../wiki.php:4492 ../locale/dummy.php:6
  +#: ../wiki.php:4494 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "?ditionTexte"
   
   # ../wiki.php:2555
  -#: ../wiki.php:4494
  +#: ../wiki.php:4496
   msgid "NotEditable"
   msgstr "Pas?ditable"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wiki.php:4498 ../locale/dummy.php:6
  +#: ../wiki.php:4500 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "MontrePage"
   
   # ../locale/dummy.php:3 ../locale/dummy.php:5 ../wiki.php:2558
  -#: ../wiki.php:4499 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4501 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "TrouvePage"
   
  -#: ../wiki.php:4938
  +#: ../wiki.php:4940
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5202
  +#: ../wiki.php:5204
   msgid "Someone logged in at another place !"
   msgstr ""
   
  -#: ../wiki.php:5378
  +#: ../wiki.php:5380
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5389
  +#: ../wiki.php:5391
   msgid "You are blocked in this wiki"
   msgstr ""
   
   # ../wiki.php:2945 ../wiki.php:2948
  -#: ../wiki.php:5427 ../wiki.php:5436 ../wikilib.php:1420
  +#: ../wiki.php:5429 ../wiki.php:5438 ../wikilib.php:1492
   msgid "Create this page"
   msgstr "Cr?er cette page"
   
   # ../wikilib.php:816
  -#: ../wiki.php:5438
  +#: ../wiki.php:5440
   #, c-format
   msgid "%s has saved revisions"
   msgstr "%s est sauvegard?"
   
   # ../wiki.php:2950
  -#: ../wiki.php:5439 ../wiki.php:5446
  +#: ../wiki.php:5441 ../wiki.php:5448
   #, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr ""
   
  -#: ../wiki.php:5444
  +#: ../wiki.php:5446
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr ""
   
  -#: ../wiki.php:5451
  +#: ../wiki.php:5453
   msgid "Please try to search with another word"
   msgstr ""
   
   # ../wiki.php:2956
  -#: ../wiki.php:5463
  +#: ../wiki.php:5465
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr "%s ou alternativement, utiliser un de ces mod?les de page :\n"
   
  -#: ../wiki.php:5466
  +#: ../wiki.php:5468
   msgid "You have no templates"
   msgstr ""
   
   # ../wikilib.php:427
  -#: ../wiki.php:5468
  +#: ../wiki.php:5470
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
   
  -#: ../wiki.php:5479
  +#: ../wiki.php:5481
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
   # ../wikilib.php:521
  -#: ../wiki.php:5621
  +#: ../wiki.php:5623
   msgid "Invalid macro action."
   msgstr ""
   
   # ../wiki.php:3009
  -#: ../wiki.php:5631
  +#: ../wiki.php:5633
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "Vous n'?tes pas autoris? ? '%s'"
   
   # ../wiki.php:3021
  -#: ../wiki.php:5651
  +#: ../wiki.php:5653
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "Impossible de pouvoir \"%s\" !"
   
   # ../wiki.php:3024
  -#: ../wiki.php:5654
  +#: ../wiki.php:5656
   msgid "Please enter the valid password"
   msgstr "Merci d'entrer un mot de passe valide"
   
  @@ -2307,167 +2343,169 @@
   
   # ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
   # c-format
  -#: ../wikilib.php:695
  +#: ../wikilib.php:761
   msgid "You are not allowed to edit this page !"
   msgstr ""
   
  -#: ../wikilib.php:702
  +#: ../wikilib.php:768
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
  +# ../wikilib.php:483 ../wikilib.php:1079
  +#: ../wikilib.php:789 ../wikilib.php:1061 ../wikilib.php:1709
  +#: ../wikilib.php:1799 ../wikilib.php:2273 ../wikilib.php:2327
  +msgid "Save"
  +msgstr "Sauvegarder"
  +
  +# ../wikilib.php:443
  +#: ../wikilib.php:797 ../wikilib.php:1048 ../wikilib.php:1717
  +#: ../wikilib.php:1807
  +msgid "Skip to preview"
  +msgstr "Aller ? la pr?visualisation"
  +
   # ../wikilib.php:425
  -#: ../wikilib.php:827
  +#: ../wikilib.php:908
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   "Utiliser un des mod?les de pages qui suivent pour une premi?recr?ation :\n"
   
   # ../wikilib.php:427
  -#: ../wikilib.php:829
  +#: ../wikilib.php:910
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr ""
   
  -#: ../wikilib.php:833
  +#: ../wikilib.php:914
   msgid "Merge"
   msgstr ""
   
  -#: ../wikilib.php:834
  +#: ../wikilib.php:915
   msgid "Merge manually"
   msgstr ""
   
  -#: ../wikilib.php:835
  +#: ../wikilib.php:916
   msgid "Ignore conflicts"
   msgstr ""
   
   # ../wikilib.php:445
  -#: ../wikilib.php:862
  +#: ../wikilib.php:948
   msgid "ReduceEditor"
   msgstr "R?duire?diteur"
   
  -#: ../wikilib.php:863
  +#: ../wikilib.php:949
   msgid "EnlargeEditor"
   msgstr ""
   
   # ../locale/dummy.php:6 ../wikilib.php:448
  -#: ../wikilib.php:867 ../locale/dummy.php:6
  +#: ../wikilib.php:953 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
   # ../wikilib.php:449
  -#: ../wikilib.php:869
  +#: ../wikilib.php:955
   msgid "HelpOnEditing"
   msgstr ""
   
   # ../wikilib.php:462
  -#: ../wikilib.php:901
  +#: ../wikilib.php:987
   #, c-format
   msgid "Describe %s here"
   msgstr "D?crire %s ici"
   
  -#: ../wikilib.php:923
  +#: ../wikilib.php:1007
   msgid "Category"
   msgstr ""
   
  -#: ../wikilib.php:931
  +#: ../wikilib.php:1015
   msgid " Select "
   msgstr ""
   
  -#: ../wikilib.php:942
  +#: ../wikilib.php:1026
   msgid "Minor edit"
   msgstr ""
   
  -# ../wikilib.php:443
  -#: ../wikilib.php:968
  -msgid "Skip to preview"
  -msgstr "Aller ? la pr?visualisation"
  -
  -# ../wikilib.php:483 ../wikilib.php:1079
  -#: ../wikilib.php:981 ../wikilib.php:2165 ../wikilib.php:2219
  -msgid "Save"
  -msgstr "Sauvegarder"
  -
   # ../wikilib.php:517
  -#: ../wikilib.php:1068
  +#: ../wikilib.php:1140
   msgid "406 Not Acceptable"
   msgstr ""
   
   # ../wikilib.php:519
  -#: ../wikilib.php:1073
  +#: ../wikilib.php:1145
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s n'est pas une action valide"
   
   # ../wikilib.php:521
  -#: ../wikilib.php:1075
  +#: ../wikilib.php:1147
   msgid "Is it valid action ?"
   msgstr "Est-ce que c'est une action valide ?"
   
   # ../wikilib.php:540
  -#: ../wikilib.php:1122
  +#: ../wikilib.php:1194
   #, c-format
   msgid "File '%s' is deleted"
   msgstr "Le fichier '%s' est effac?"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:1124
  +#: ../wikilib.php:1196
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr "Impossible d'effacer '%s'"
   
   # ../wikilib.php:545
  -#: ../wikilib.php:1129
  +#: ../wikilib.php:1201
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr "Le r?pertoire '%s' est effac?"
   
   # ../wikilib.php:547
  -#: ../wikilib.php:1131
  +#: ../wikilib.php:1203
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr "Impossible d'effacer le r?pertoire '%s'"
   
   # ../wikilib.php:557 ../wikilib.php:559
  -#: ../wikilib.php:1141 ../wikilib.php:1161
  +#: ../wikilib.php:1213 ../wikilib.php:1233
   msgid "No files are selected !"
   msgstr "Aucun fichier n'est s?lectionn? !"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:1154
  +#: ../wikilib.php:1226
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
   # ../wikilib.php:550
  -#: ../wikilib.php:1158
  +#: ../wikilib.php:1230
   msgid "Delete selected file"
   msgstr ""
   
   # ../wikilib.php:575
  -#: ../wikilib.php:1179
  +#: ../wikilib.php:1251
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr "\"%s\" est effac? !"
   
   # ../wikilib.php:581
  -#: ../wikilib.php:1194
  +#: ../wikilib.php:1266
   msgid "Please delete this file manually."
   msgstr "Merci d'effacer ce fichier manuellement."
   
   # ../wikilib.php:583
  -#: ../wikilib.php:1196
  +#: ../wikilib.php:1268
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "Effacer \"%s\" ?"
   
   # ../plugin/minilogin.php:30
  -#: ../wikilib.php:1249
  +#: ../wikilib.php:1321
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
   # ../wiki.php:2950
  -#: ../wikilib.php:1422
  +#: ../wikilib.php:1494
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
  @@ -2475,134 +2513,134 @@
   "page.\n"
   
   # ../wiki.php:2950
  -#: ../wikilib.php:1422
  +#: ../wikilib.php:1494
   msgid "title"
   msgstr "titre"
   
  -#: ../wikilib.php:1436
  +#: ../wikilib.php:1508
   msgid "Please try to fulltext search"
   msgstr ""
   
   # ../wiki.php:2950
  -#: ../wikilib.php:1439
  +#: ../wikilib.php:1511
   #, c-format
   msgid "You can also click %s to fulltext search.\n"
   msgstr ""
   
   # ../wikilib.php:743
  -#: ../wikilib.php:1484 ../wikilib.php:1585
  +#: ../wikilib.php:1556 ../wikilib.php:1664
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "Quelqu'un a sauvegard? la page tandis que vous ?ditiez %s"
   
  -#: ../wikilib.php:1490
  +#: ../wikilib.php:1562
   msgid "Section edit is not valid for non-exists page."
   msgstr ""
   
   # ../wikilib.php:803
  -#: ../wikilib.php:1523 ../wikilib.php:1732
  +#: ../wikilib.php:1595 ../wikilib.php:1840
   msgid "mail does not supported by default."
   msgstr "La messagerie n'est pas support? par d?faut."
   
   # ../wikilib.php:807
  -#: ../wikilib.php:1527 ../wikilib.php:1736
  +#: ../wikilib.php:1599 ../wikilib.php:1844
   msgid "Sent notification mail."
   msgstr "Des notifications par messagerie ont ?t? envoy?es."
   
   # ../wikilib.php:809
  -#: ../wikilib.php:1529 ../wikilib.php:1738
  +#: ../wikilib.php:1601 ../wikilib.php:1846
   msgid "No subscribers found."
   msgstr "Aucun abonn? trouv?."
   
   # ../wikilib.php:814
  -#: ../wikilib.php:1534 ../wikilib.php:1743
  +#: ../wikilib.php:1606 ../wikilib.php:1851
   #, c-format
   msgid "%s is not editable"
   msgstr "%s n'est pas ?ditable"
   
   # ../wikilib.php:816
  -#: ../wikilib.php:1536 ../wikilib.php:1745
  +#: ../wikilib.php:1608 ../wikilib.php:1853
   #, c-format
   msgid "%s is saved"
   msgstr "%s est sauvegard?"
   
   # ../wikilib.php:734
  -#: ../wikilib.php:1576
  +#: ../wikilib.php:1655
   msgid "Goto Editor"
   msgstr "Aller ? l'?diteur"
   
  -#: ../wikilib.php:1590
  +#: ../wikilib.php:1669
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr ""
   
   # ../plugin/Vote.php:109
  -#: ../wikilib.php:1591
  +#: ../wikilib.php:1670
   #, c-format
   msgid "%s is merged successfully"
   msgstr ""
   
  -#: ../wikilib.php:1595
  +#: ../wikilib.php:1674
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1596
  +#: ../wikilib.php:1675
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr ""
   
  -#: ../wikilib.php:1597
  +#: ../wikilib.php:1676
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1598
  +#: ../wikilib.php:1677
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1603
  +#: ../wikilib.php:1682
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr ""
   
   # ../wikilib.php:581
  -#: ../wikilib.php:1604
  +#: ../wikilib.php:1683
   msgid "Please resolve conflicts manually."
   msgstr ""
   
  -#: ../wikilib.php:1607
  +#: ../wikilib.php:1686
   #, c-format
   msgid "Force merging for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1608
  +#: ../wikilib.php:1687
   msgid "Please be careful, you could damage useful information."
   msgstr ""
   
   # ../wikilib.php:755
  -#: ../wikilib.php:1622
  +#: ../wikilib.php:1701
   msgid "Conflict error!"
   msgstr "Erreur de conflit !"
   
   # ../wikilib.php:748 ../wikilib.php:777
  -#: ../wikilib.php:1692
  +#: ../wikilib.php:1785
   #, c-format
   msgid "Preview of %s"
   msgstr "Pr?visualisation de %s"
   
   # ../wikilib.php:838
  -#: ../wikilib.php:1777
  +#: ../wikilib.php:1885
   msgid "Nobody subscribed to this page."
   msgstr "Personne n'est abonn? ? cette page, aucun mail envoy?"
   
   # ../wikilib.php:860
  -#: ../wikilib.php:1796
  +#: ../wikilib.php:1904
   #, c-format
   msgid "%s page is modified"
   msgstr "la page %s est modifi?"
   
   # ../wikilib.php:870
  -#: ../wikilib.php:1825
  +#: ../wikilib.php:1933
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
  @@ -2613,101 +2651,101 @@
   "\n"
   
   # ../wikilib.php:883
  -#: ../wikilib.php:1838
  +#: ../wikilib.php:1946
   msgid "Send notification mails to all subscribers"
   msgstr "Envoyez un mail de notification ? tous les abonn?s"
   
   # ../wikilib.php:887
  -#: ../wikilib.php:1843
  +#: ../wikilib.php:1951
   msgid "Mails are sent successfully"
   msgstr "Mail envoy? avec succ?s"
   
   # ../wikilib.php:888
  -#: ../wikilib.php:1844
  +#: ../wikilib.php:1952
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr "un mail a ?t? envoy? ? '%s'"
   
   # ../wiki.php:3021
  -#: ../wikilib.php:1846
  +#: ../wikilib.php:1954
   msgid "Fail to send mail"
   msgstr ""
   
   # ../wikilib.php:803
  -#: ../wikilib.php:1857
  +#: ../wikilib.php:1965
   msgid "This wiki does not support sendmail"
   msgstr ""
   
   # ../wikilib.php:1483
  -#: ../wikilib.php:1955
  +#: ../wikilib.php:2063
   msgid "Invalid regular expression !"
   msgstr ""
   
  -#: ../wikilib.php:1979
  +#: ../wikilib.php:2087
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:1982
  +#: ../wikilib.php:2090
   msgid "Infinite loop possible!"
   msgstr ""
   
   # ../plugin/login.php:26 ../wikilib.php:1051
  -#: ../wikilib.php:2097
  +#: ../wikilib.php:2205
   msgid "Login"
   msgstr "Se connecter"
   
  -#: ../wikilib.php:2098
  +#: ../wikilib.php:2206
   msgid "OpenID"
   msgstr ""
   
  -#: ../wikilib.php:2110 ../wikilib.php:2237
  +#: ../wikilib.php:2218 ../wikilib.php:2345
   msgid "ID"
   msgstr ""
   
   # ../wikilib.php:1070
  -#: ../wikilib.php:2145 ../wikilib.php:2230
  +#: ../wikilib.php:2253 ../wikilib.php:2338
   msgid "Make profile"
   msgstr "Faire un profil"
   
   # ../wikilib.php:1071
  -#: ../wikilib.php:2147
  +#: ../wikilib.php:2255
   msgid "password again"
   msgstr "mot de passe de nouveau"
   
  -#: ../wikilib.php:2149 ../wikilib.php:2198
  +#: ../wikilib.php:2257 ../wikilib.php:2306
   msgid "Mail"
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../wikilib.php:2171
  +#: ../wikilib.php:2279
   msgid "New password"
   msgstr "Nouveau mot de passe"
   
  -#: ../wikilib.php:2176
  +#: ../wikilib.php:2284
   msgid "Nickname"
   msgstr ""
   
  -#: ../wikilib.php:2199
  +#: ../wikilib.php:2307
   msgid "Time Zone"
   msgstr ""
   
   # ../wikilib.php:1088
  -#: ../wikilib.php:2208
  +#: ../wikilib.php:2316
   msgid "logout"
   msgstr "se d?connecter"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wikilib.php:2521
  +#: ../wikilib.php:2629
   msgid "Show all"
   msgstr ""
   
   # ../locale/dummy.php:4
  -#: ../wikilib.php:2659
  +#: ../wikilib.php:2767
   msgid "Contents"
   msgstr ""
   
   # ../wikilib.php:1479
  -#: ../wikilib.php:2779
  +#: ../wikilib.php:2887
   #, c-format
   msgid "Title search for \"%s\""
   msgstr "Recherche de titre pour \"%s\""
  @@ -3026,21 +3064,23 @@
   msgid "TrackBack"
   msgstr ""
   
  +#: ../locale/dummy.php:8
  +msgid "source"
  +msgstr ""
  +
  +#: ../locale/dummy.php:8
  +msgid "diff"
  +msgstr ""
  +
  +#: ../locale/dummy.php:8
  +msgid "recall"
  +msgstr ""
  +
  +# ../wikilib.php:482
  +#: ../locale/dummy.php:8
  +msgid "view"
  +msgstr ""
  +
   # ../wikilib.php:476
   #~ msgid "--Select Category--"
   #~ msgstr "-- S?lectionner une cat?gorie"
  -
  -# ../wikilib.php:484
  -#~ msgid "Summary of Change"
  -#~ msgstr "Sommaire des modifications"
  -
  -# ../wiki.php:2950
  -#, fuzzy
  -#~ msgid "%s or click %s to search title.\n"
  -#~ msgstr ""
  -#~ " ou cliquer sur %s pour faire une recherche en texte int?gral de cette "
  -#~ "page.\n"
  -
  -# ../wikilib.php:507
  -#~ msgid "Info. for %s"
  -#~ msgstr "Information sur %s"
  
  
  
  1.32      +271 -211  moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- ko.po	13 Jul 2009 15:35:47 -0000	1.31
  +++ ko.po	29 Jul 2009 17:52:45 -0000	1.32
  @@ -5,7 +5,7 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1.3\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2009-07-14 00:35+0900\n"
  +"POT-Creation-Date: 2009-07-30 00:37+0900\n"
   "PO-Revision-Date: 2008-12-11 12:20+0900\n"
   "Last-Translator: Won-Kyu Park <wkpark@kldp.org>\n"
   "Language-Team: Won-Kyu Park <wkpark@kldp.org>\n"
  @@ -96,10 +96,11 @@
   msgstr "이름"
   
   #: ../plugin/Blog.php:262 ../plugin/Blog.php:333
  +#: ../plugin/RecentChanges.php:106
   msgid "Title"
   msgstr "제목"
   
  -#: ../plugin/Blog.php:268 ../wikilib.php:972
  +#: ../plugin/Blog.php:268 ../wikilib.php:1052
   msgid "GUI"
   msgstr ""
   
  @@ -180,7 +181,8 @@
   msgid "Comment"
   msgstr "댓글 달기"
   
  -#: ../plugin/Comment.php:93 ../wikilib.php:966 ../monisetup.php:1305
  +#: ../plugin/Comment.php:93 ../wikilib.php:795 ../wikilib.php:1046
  +#: ../wikilib.php:1715 ../wikilib.php:1805 ../monisetup.php:1305
   msgid "Preview"
   msgstr "미리보기"
   
  @@ -201,17 +203,17 @@
   msgstr "페이지가 없습니다"
   
   #: ../plugin/Comment.php:169 ../plugin/userform.php:118
  -#: ../plugin/userform.php:181 ../plugin/userform.php:204 ../wikilib.php:1665
  +#: ../plugin/userform.php:181 ../plugin/userform.php:204 ../wikilib.php:1758
   msgid "Invalid ticket !"
   msgstr "잘못된 티켓 !"
   
   #: ../plugin/Comment.php:174 ../plugin/userform.php:120
  -#: ../plugin/userform.php:206 ../wikilib.php:1670
  +#: ../plugin/userform.php:206 ../wikilib.php:1763
   msgid "You need a ticket !"
   msgstr "티켓이 필요합니다 !"
   
   #: ../plugin/Comment.php:196 ../plugin/Gallery.php:174 ../plugin/bbs.php:1009
  -#: ../wikilib.php:1509 ../wikilib.php:1686
  +#: ../wikilib.php:1581 ../wikilib.php:1779
   msgid ""
   "Sorry, can not save page because some messages are blocked in this wiki."
   msgstr "죄송합니다. 특정 메시지가 금지되어 페이지를 저장할 수 없습니다."
  @@ -229,16 +231,16 @@
   msgid "Comment added successfully"
   msgstr "댓글이 성공적으로 저장되었습니다"
   
  -#: ../plugin/Diff.php:410 ../plugin/Info.php:230
  +#: ../plugin/Diff.php:410 ../plugin/Info.php:240
   msgid "No older revisions available"
   msgstr "옛 버전이 없습니다"
   
  -#: ../plugin/Diff.php:415 ../plugin/Info.php:236 ../plugin/rcsexport.php:13
  +#: ../plugin/Diff.php:415 ../plugin/Info.php:246 ../plugin/rcsexport.php:13
   #: ../plugin/rcsimport.php:13
   msgid "Version info is not available in this wiki"
   msgstr "버전 정보는 현 위키에서 사용할 수 없습니다"
   
  -#: ../plugin/Diff.php:426 ../wikilib.php:1642
  +#: ../plugin/Diff.php:426 ../wikilib.php:1735
   msgid "No difference found"
   msgstr "변화가 없습니다"
   
  @@ -264,7 +266,7 @@
   msgid "Draw new picture"
   msgstr "새 그림 만들기"
   
  -#: ../plugin/Draw.php:92 ../plugin/UploadFile.php:250
  +#: ../plugin/Draw.php:92 ../plugin/UploadFile.php:252
   #, c-format
   msgid "Fail to copy \"%s\" to \"%s\""
   msgstr "\"%s\"를 \"%s\"로 복사하기 실패"
  @@ -305,18 +307,18 @@
   msgstr "\"%s\"을(를) 전체 찾아보기"
   
   #: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:38
  -#: ../wikilib.php:1430
  +#: ../wikilib.php:1502
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr "%3$s의 페이지중에 %1$s개가 발견되었습니다"
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1432
  +#: ../wikilib.php:1504
   msgid "page"
   msgstr "페이지"
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1432
  +#: ../wikilib.php:1504
   msgid "pages"
   msgstr "페이지"
   
  @@ -334,8 +336,8 @@
   msgid "Show Context."
   msgstr "문맥 보기."
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4496
  -#: ../wikilib.php:948
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4498
  +#: ../wikilib.php:1032
   msgid "Refresh"
   msgstr "갱신"
   
  @@ -349,8 +351,8 @@
   msgid "You can also click %s to search title.\n"
   msgstr "%s을 눌러 제목 찾기를 할 수 있습니다.\n"
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5439 ../wiki.php:5446
  -#: ../wikilib.php:1440
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5441 ../wiki.php:5448
  +#: ../wikilib.php:1512
   msgid "here"
   msgstr "여기"
   
  @@ -366,7 +368,7 @@
   msgid "Case-sensitive searching"
   msgstr "대소문자 구별"
   
  -#: ../plugin/FullSearch.php:77 ../wikilib.php:2762 ../wikilib.php:2824
  +#: ../plugin/FullSearch.php:77 ../wikilib.php:2870 ../wikilib.php:2932
   msgid "Go"
   msgstr "찾기"
   
  @@ -374,12 +376,12 @@
   msgid "Empty expression"
   msgstr "비어있는 표현식"
   
  -#: ../plugin/FullSearch.php:144 ../wikilib.php:2783
  +#: ../plugin/FullSearch.php:144 ../wikilib.php:2891
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "잘못된 찾기 표현식 \"%s\""
   
  -#: ../plugin/Gallery.php:245 ../plugin/UploadedFiles.php:285
  +#: ../plugin/Gallery.php:245 ../plugin/UploadedFiles.php:287
   msgid "No files found"
   msgstr "페이지가 없습니다"
   
  @@ -391,8 +393,8 @@
   msgid "show comments"
   msgstr "댓글 보기"
   
  -#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1496
  -#: ../wikilib.php:1640
  +#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1568
  +#: ../wikilib.php:1733
   #, c-format
   msgid "Go back or return to %s"
   msgstr "뒤로 혹은 %s(으)로 가기"
  @@ -409,66 +411,66 @@
   msgid "Import URL"
   msgstr "URL 가져오기"
   
  -#: ../plugin/Info.php:30
  -msgid "Diff"
  -msgstr "변화"
  +#: ../plugin/Info.php:36
  +msgid "Compare"
  +msgstr "선택비교"
   
  -#: ../plugin/Info.php:35
  +#: ../plugin/Info.php:41
   msgid "Revision History"
   msgstr "버전 히스토리"
   
  -#: ../plugin/Info.php:38
  -msgid "ver."
  -msgstr "버전."
  -
  -#: ../plugin/Info.php:38
  -msgid "Date and Changes"
  -msgstr "날짜와 바뀐점"
  +#: ../plugin/Info.php:44
  +msgid "Ver."
  +msgstr "버전"
  +
  +#: ../plugin/Info.php:44 ../plugin/UploadedFiles.php:303
  +msgid "Date"
  +msgstr "날짜"
   
  -#: ../plugin/Info.php:39
  +#: ../plugin/Info.php:45 ../plugin/RecentChanges.php:107
  +msgid "Changes"
  +msgstr "변경점"
  +
  +#: ../plugin/Info.php:46 ../plugin/RecentChanges.php:107
   msgid "Editor"
   msgstr "고친이"
   
  -#: ../plugin/Info.php:42
  -msgid "actions"
  -msgstr "액션"
  +#: ../plugin/Info.php:50
  +msgid "View"
  +msgstr "보기"
   
  -#: ../plugin/Info.php:43
  +#: ../plugin/Info.php:51
   msgid "admin."
  -msgstr "관리."
  +msgstr "관리"
   
  -#: ../plugin/Info.php:59
  +#: ../plugin/Info.php:68
   msgid "Show all revisions"
   msgstr "모든 버전 보기"
   
  -#: ../plugin/Info.php:92
  +#: ../plugin/Info.php:101
   msgid "Yesterday"
   msgstr "어제"
   
  -#: ../plugin/Info.php:93
  +#: ../plugin/Info.php:102
   #, c-format
   msgid "%s days ago"
   msgstr "%s일 전"
   
  -#: ../plugin/Info.php:95
  +#: ../plugin/Info.php:104
   #, c-format
   msgid "%s hours ago"
   msgstr "%s시간 전"
   
  -#: ../plugin/Info.php:97
  +#: ../plugin/Info.php:106
   #, c-format
   msgid "%s min ago"
   msgstr "%s분 전"
   
  -#: ../plugin/Info.php:176
  -msgid "diff"
  -msgstr "변경점"
  -
  -#: ../plugin/Info.php:199 ../plugin/rename.php:80
  +#: ../plugin/Info.php:209 ../plugin/rename.php:80
   msgid "show only"
   msgstr "보기만 하기"
   
  -#: ../plugin/Info.php:203
  +#: ../plugin/Info.php:213
   msgid "purge"
   msgstr "삭제"
   
  @@ -577,7 +579,7 @@
   msgid "Select keywords for %s"
   msgstr "%s에 대해 키워드를 고르세요"
   
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1317 ../wikilib.php:2770
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1389 ../wikilib.php:2878
   msgid "Use more specific text"
   msgstr "좀 더 자세히 입력하세요"
   
  @@ -707,24 +709,54 @@
   msgid "Rating successfully !"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:125
  +#: ../plugin/RecentChanges.php:28
  +#, c-format
  +msgid "%d minute ago"
  +msgstr "%s분 전"
  +
  +#: ../plugin/RecentChanges.php:30
  +#, c-format
  +msgid "%d hours ago"
  +msgstr "%s시간 전"
  +
  +#: ../plugin/RecentChanges.php:32
  +#, c-format
  +msgid "%d days ago"
  +msgstr "%s일 전"
  +
  +#: ../plugin/RecentChanges.php:106
  +msgid "Change Date"
  +msgstr "변경일"
  +
  +#: ../plugin/RecentChanges.php:109
  +msgid "Hits"
  +msgstr "조회수"
  +
  +#: ../plugin/RecentChanges.php:155
   msgid "Show changes for "
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:130
  +#: ../plugin/RecentChanges.php:160
   msgid "days ago"
   msgstr "몇일 전"
   
  -#: ../plugin/RecentChanges.php:213 ../plugin/pagelist.php:117
  -#: ../plugin/pagelist.php:134
  -#, c-format
  -msgid "[%sh %sm ago]"
  -msgstr "[%s시간 %s분 전]"
  -
  -#: ../plugin/RecentChanges.php:231
  +#: ../plugin/RecentChanges.php:264
   msgid "set bookmark"
   msgstr "북마크"
   
  +#: ../plugin/RecentChanges.php:273
  +msgid "Bookmark"
  +msgstr "북마크"
  +
  +#: ../plugin/RecentChanges.php:335
  +#, c-format
  +msgid "%s changes"
  +msgstr "%s회 고침"
  +
  +#: ../plugin/RecentChanges.php:349
  +msgid "Recent Changes"
  +msgstr "최근 변경내역"
  +
   #: ../plugin/SWFUpload.php:136
   msgid "Files..."
   msgstr "파일..."
  @@ -823,7 +855,7 @@
   msgid "TwinPages of %s"
   msgstr "%s의 쌍둥이 페이지"
   
  -#: ../plugin/TwinPages.php:19 ../wiki.php:5425
  +#: ../plugin/TwinPages.php:19 ../wiki.php:5427
   msgid "See [TwinPages]: "
   msgstr ""
   
  @@ -831,52 +863,52 @@
   msgid "No TwinPages found."
   msgstr "쌍둥이 페이지가 없습니다"
   
  -#: ../plugin/UploadFile.php:147 ../plugin/UploadFile.php:161
  +#: ../plugin/UploadFile.php:149 ../plugin/UploadFile.php:163
   #, c-format
   msgid "The %s type of %s is not allowed to upload"
   msgstr "%s의 %s 형식은 업로드가 허락되지 않습니다"
   
  -#: ../plugin/UploadFile.php:163
  +#: ../plugin/UploadFile.php:165
   #, c-format
   msgid "%s is not allowed to upload"
   msgstr "%s은(는) 업로드가 허락되지 않습니다"
   
  -#: ../plugin/UploadFile.php:218
  +#: ../plugin/UploadFile.php:220
   #, c-format
   msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
   msgstr "파일 확장자를 \"%s\"에서 \"%s\"(으)로 바꿀 수 없음."
   
  -#: ../plugin/UploadFile.php:251
  +#: ../plugin/UploadFile.php:253
   msgid "Please check your php.ini setting"
   msgstr "php.ini 세팅을 확인해보시기 바랍니다"
   
  -#: ../plugin/UploadFile.php:261
  +#: ../plugin/UploadFile.php:263
   #, c-format
   msgid "File \"%s\" is uploaded successfully"
   msgstr "\"%s\"파일이 성공적으로 올라갔습니다"
   
  -#: ../plugin/UploadFile.php:300
  +#: ../plugin/UploadFile.php:308
   msgid "Files are uploaded successfully"
   msgstr "파일이 성공적으로 올라갔습니다."
   
  -#: ../plugin/UploadFile.php:344
  +#: ../plugin/UploadFile.php:352
   msgid "Replace original file"
   msgstr "원본 파일 교체"
   
  -#: ../plugin/UploadFile.php:345
  +#: ../plugin/UploadFile.php:353
   msgid "Rename if it already exist"
   msgstr "이미 있을경우 이름 바꿈"
   
  -#: ../plugin/UploadFile.php:350 ../plugin/rename.php:69
  +#: ../plugin/UploadFile.php:358 ../plugin/rename.php:69
   msgid "Rename"
   msgstr "이름바꾸기"
   
  -#: ../plugin/UploadFile.php:358
  +#: ../plugin/UploadFile.php:366
   #, c-format
   msgid "or %s."
   msgstr "혹은 %s."
   
  -#: ../plugin/UploadFile.php:358 ../plugin/UploadForm.php:99
  +#: ../plugin/UploadFile.php:366 ../plugin/UploadForm.php:143
   msgid "Upload files"
   msgstr "파일올리기"
   
  @@ -884,54 +916,50 @@
   msgid "Choose File"
   msgstr "파일찾기"
   
  -#: ../plugin/UploadForm.php:97
  +#: ../plugin/UploadForm.php:141
   msgid "add files"
   msgstr "파일추가"
   
  -#: ../plugin/UploadForm.php:98
  +#: ../plugin/UploadForm.php:142
   msgid "add a file"
   msgstr "파일추가"
   
  -#: ../plugin/UploadForm.php:100
  +#: ../plugin/UploadForm.php:144
   msgid "Reset"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:101
  +#: ../plugin/UploadForm.php:145
   msgid "Attachments"
   msgstr "첨부"
   
  -#: ../plugin/UploadedFiles.php:299
  +#: ../plugin/UploadedFiles.php:301
   msgid "File name"
   msgstr "파일 이름"
   
  -#: ../plugin/UploadedFiles.php:300
  +#: ../plugin/UploadedFiles.php:302
   msgid "Size"
   msgstr "크기"
   
  -#: ../plugin/UploadedFiles.php:301
  -msgid "Date"
  -msgstr "날짜"
  -
  -#: ../plugin/UploadedFiles.php:351
  +#: ../plugin/UploadedFiles.php:353
   msgid "Next page &raquo;"
   msgstr "다음 페이지 &raquo;"
   
  -#: ../plugin/UploadedFiles.php:353
  +#: ../plugin/UploadedFiles.php:355
   msgid "&laquo; First page"
   msgstr "&laquo; 첫 페이지"
   
  -#: ../plugin/UploadedFiles.php:445
  +#: ../plugin/UploadedFiles.php:447
   #, c-format
   msgid "Total %d files"
   msgstr "총 %d 개 파일"
   
  -#: ../plugin/UploadedFiles.php:450 ../plugin/rcsimport.php:32
  +#: ../plugin/UploadedFiles.php:452 ../plugin/rcsimport.php:32
   #: ../plugin/rcsimport.php:88 ../plugin/rename.php:77 ../plugin/revert.php:82
  -#: ../plugin/userinfo.php:37 ../wikilib.php:1156 ../wikilib.php:2081
  +#: ../plugin/userinfo.php:37 ../wikilib.php:1228 ../wikilib.php:2189
   msgid "Password"
   msgstr "비밀번호"
   
  -#: ../plugin/UploadedFiles.php:451 ../wikilib.php:1134
  +#: ../plugin/UploadedFiles.php:453 ../wikilib.php:1206
   msgid "Delete selected files"
   msgstr "선택된 파일 지우기"
   
  @@ -951,7 +979,7 @@
   msgid "Voted successfully"
   msgstr "투표가 성공되었습니다"
   
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2520
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2628
   msgid "Others"
   msgstr ""
   
  @@ -1035,7 +1063,7 @@
   msgid "Edit"
   msgstr "고치기"
   
  -#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1157
  +#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1229
   msgid "Delete"
   msgstr "지우기"
   
  @@ -1169,7 +1197,7 @@
   msgid "Edit man page"
   msgstr "man 페이지 고치기"
   
  -#: ../plugin/minilogin.php:18 ../wikilib.php:2162
  +#: ../plugin/minilogin.php:18 ../wikilib.php:2270
   msgid "Login or Join"
   msgstr "로그인 혹은 가입"
   
  @@ -1212,6 +1240,11 @@
   msgid "Normalize this page name"
   msgstr "페이지이름 정규화하기"
   
  +#: ../plugin/pagelist.php:117 ../plugin/pagelist.php:134
  +#, c-format
  +msgid "[%sh %sm ago]"
  +msgstr "[%s시간 %s분 전]"
  +
   #: ../plugin/pageview.php:70
   msgid "First:"
   msgstr ""
  @@ -1234,7 +1267,7 @@
   msgid "Save Changes"
   msgstr "변경 저장"
   
  -#: ../plugin/processor/monimarkup.php:507 ../wiki.php:3881
  +#: ../plugin/processor/monimarkup.php:507 ../wiki.php:3883
   msgid "edit"
   msgstr "편집"
   
  @@ -1359,7 +1392,7 @@
   msgid "Only WikiMaster can rename this page"
   msgstr "위키관리자만이 페이지 이름을 바꿀 수 있습니다"
   
  -#: ../plugin/rename.php:79 ../wikilib.php:1202
  +#: ../plugin/rename.php:79 ../wikilib.php:1274
   msgid "with revision history"
   msgstr "버전 히스토리와 함께"
   
  @@ -1401,7 +1434,7 @@
   msgid "Select a tarball file to restore"
   msgstr "Restore하기 위한 tarball 파일을 고르세요"
   
  -#: ../plugin/revert.php:23 ../wiki.php:5441
  +#: ../plugin/revert.php:23 ../wiki.php:5443
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr "%s의 옛날 버전"
  @@ -1427,7 +1460,7 @@
   msgid "Are you really want to revert this page ?"
   msgstr "정말로 되돌리시겠습니까 ?"
   
  -#: ../plugin/revert.php:74 ../wikilib.php:963
  +#: ../plugin/revert.php:74 ../wikilib.php:1043
   msgid "Summary"
   msgstr "요약"
   
  @@ -1693,7 +1726,7 @@
   msgid "Cookie deleted !"
   msgstr "쿠키가 지워졌습니다 !"
   
  -#: ../plugin/userform.php:107 ../wikilib.php:2232
  +#: ../plugin/userform.php:107 ../wikilib.php:2340
   msgid "E-mail new password"
   msgstr "새 비밀번호 받기"
   
  @@ -1774,8 +1807,8 @@
   msgid "You are not allowed to register on this wiki"
   msgstr "위키 등록이 허락되지 않았습니다"
   
  -#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5379
  -#: ../wiki.php:5390
  +#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5381
  +#: ../wiki.php:5392
   msgid "Please contact WikiMasters"
   msgstr "위키관리자에게 문의하세요"
   
  @@ -1912,122 +1945,122 @@
   msgid "File '%s' does not exist."
   msgstr "파일 '%s'이(가) 없습니다"
   
  -#: ../wiki.php:2947 ../wiki.php:2958 ../wiki.php:5619
  +#: ../wiki.php:2947 ../wiki.php:2958 ../wiki.php:5621
   msgid "Invalid ajax action."
   msgstr "잘못된 ajax 액션."
   
  -#: ../wiki.php:3456
  +#: ../wiki.php:3458
   msgid "Tags:"
   msgstr "태그:"
   
  -#: ../wiki.php:3484
  +#: ../wiki.php:3486
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:3484
  +#: ../wiki.php:3486
   #, c-format
   msgid "TwinPages"
   msgstr "TwinPages"
   
  -#: ../wiki.php:3489
  +#: ../wiki.php:3491
   msgid "See [TwinPages]:"
   msgstr ""
   
  -#: ../wiki.php:4061
  +#: ../wiki.php:4063
   msgid "Sister Sites Index"
   msgstr ""
   
  -#: ../wiki.php:4492 ../locale/dummy.php:6
  +#: ../wiki.php:4494 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "고치기"
   
  -#: ../wiki.php:4494
  +#: ../wiki.php:4496
   msgid "NotEditable"
   msgstr "고칠수 없음"
   
  -#: ../wiki.php:4498 ../locale/dummy.php:6
  +#: ../wiki.php:4500 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "보기"
   
  -#: ../wiki.php:4499 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4501 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "찾기"
   
  -#: ../wiki.php:4938
  +#: ../wiki.php:4940
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5202
  +#: ../wiki.php:5204
   msgid "Someone logged in at another place !"
   msgstr ""
   
  -#: ../wiki.php:5378
  +#: ../wiki.php:5380
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5389
  +#: ../wiki.php:5391
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:5427 ../wiki.php:5436 ../wikilib.php:1420
  +#: ../wiki.php:5429 ../wiki.php:5438 ../wikilib.php:1492
   msgid "Create this page"
   msgstr "페이지 만들기"
   
  -#: ../wiki.php:5438
  +#: ../wiki.php:5440
   #, c-format
   msgid "%s has saved revisions"
   msgstr "%s이(가) 저장된 옛버전이 있습니다"
   
  -#: ../wiki.php:5439 ../wiki.php:5446
  +#: ../wiki.php:5441 ../wiki.php:5448
   #, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr "%s 혹은 %s를 눌러 전체 찾기를 할 수 있습니다.\n"
   
  -#: ../wiki.php:5444
  +#: ../wiki.php:5446
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr "%s 페이지를 이곳 위키에서 찾을 수 없습니다"
   
  -#: ../wiki.php:5451
  +#: ../wiki.php:5453
   msgid "Please try to search with another word"
   msgstr "다른 단어로 찾아보세요."
   
  -#: ../wiki.php:5463
  +#: ../wiki.php:5465
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr ""
   "%s 아이콘을 누르거나 아래의 탬플리트 목록을 이용해 새 페이지를 만드세요:\n"
   
  -#: ../wiki.php:5466
  +#: ../wiki.php:5468
   msgid "You have no templates"
   msgstr "템플리트가 없습니다"
   
  -#: ../wiki.php:5468
  +#: ../wiki.php:5470
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr "탬플리트를 만드시려면 '%s' 형식의 이름을 가지는 페이지를 만드세요.\n"
   
  -#: ../wiki.php:5479
  +#: ../wiki.php:5481
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr "\"%s\"페이지로 부터 리다리렉트됨"
   
  -#: ../wiki.php:5621
  +#: ../wiki.php:5623
   msgid "Invalid macro action."
   msgstr "잘못된 마크로 액션."
   
  -#: ../wiki.php:5631
  +#: ../wiki.php:5633
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "'%s'은(는) 허락되지 않았습니다"
   
  -#: ../wiki.php:5651
  +#: ../wiki.php:5653
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "\"%s\"을(를) 실패했습니다 !"
   
  -#: ../wiki.php:5654
  +#: ../wiki.php:5656
   msgid "Please enter the valid password"
   msgstr "정확한 비밀번호를 넣어주세요"
   
  @@ -2060,348 +2093,350 @@
   "<b>테이블</b>: || 셀 내용 |||| 두칸에 걸친 내용 ||;<br />\n"
   "테이블이나 제목 끝에 공백이 오면 안됩니다.<br />\n"
   
  -#: ../wikilib.php:695
  +#: ../wikilib.php:761
   msgid "You are not allowed to edit this page !"
   msgstr "이 페이지를 고칠 수 있도록 허락되어있지 않습니다 !"
   
  -#: ../wikilib.php:702
  +#: ../wikilib.php:768
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
  -#: ../wikilib.php:827
  +#: ../wikilib.php:789 ../wikilib.php:1061 ../wikilib.php:1709
  +#: ../wikilib.php:1799 ../wikilib.php:2273 ../wikilib.php:2327
  +msgid "Save"
  +msgstr "저장"
  +
  +#: ../wikilib.php:797 ../wikilib.php:1048 ../wikilib.php:1717
  +#: ../wikilib.php:1807
  +msgid "Skip to preview"
  +msgstr "미리보기로"
  +
  +#: ../wikilib.php:908
   msgid "Use one of the following templates as an initial release :\n"
   msgstr "최초 버전으로 다음의 탬플리트를 활용하실 수 있습니다 :\n"
   
  -#: ../wikilib.php:829
  +#: ../wikilib.php:910
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr "탬플리트를 만드시려면 '%s' 형식의 이름으로 페이지를 만드세요."
   
  -#: ../wikilib.php:833
  +#: ../wikilib.php:914
   msgid "Merge"
   msgstr "병합"
   
  -#: ../wikilib.php:834
  +#: ../wikilib.php:915
   msgid "Merge manually"
   msgstr "수동 병합"
   
  -#: ../wikilib.php:835
  +#: ../wikilib.php:916
   msgid "Ignore conflicts"
   msgstr "충돌 무시"
   
  -#: ../wikilib.php:862
  +#: ../wikilib.php:948
   msgid "ReduceEditor"
   msgstr "편집창 줄이기"
   
  -#: ../wikilib.php:863
  +#: ../wikilib.php:949
   msgid "EnlargeEditor"
   msgstr "편집창 늘이기"
   
  -#: ../wikilib.php:867 ../locale/dummy.php:6
  +#: ../wikilib.php:953 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr "인터위키"
   
  -#: ../wikilib.php:869
  +#: ../wikilib.php:955
   msgid "HelpOnEditing"
   msgstr "고치기 도움말"
   
  -#: ../wikilib.php:901
  +#: ../wikilib.php:987
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:923
  +#: ../wikilib.php:1007
   msgid "Category"
   msgstr "분류"
   
  -#: ../wikilib.php:931
  +#: ../wikilib.php:1015
   msgid " Select "
   msgstr " 선택 "
   
  -#: ../wikilib.php:942
  +#: ../wikilib.php:1026
   msgid "Minor edit"
   msgstr ""
   
  -#: ../wikilib.php:968
  -msgid "Skip to preview"
  -msgstr "미리보기로"
  -
  -#: ../wikilib.php:981 ../wikilib.php:2165 ../wikilib.php:2219
  -msgid "Save"
  -msgstr "저장"
  -
  -#: ../wikilib.php:1068
  +#: ../wikilib.php:1140
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:1073
  +#: ../wikilib.php:1145
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s은(는) 잘못된 액션"
   
  -#: ../wikilib.php:1075
  +#: ../wikilib.php:1147
   msgid "Is it valid action ?"
   msgstr "올바른 액션입니까 ?"
   
  -#: ../wikilib.php:1122
  +#: ../wikilib.php:1194
   #, c-format
   msgid "File '%s' is deleted"
   msgstr "'%s' 파일이 지워졌습니다"
   
  -#: ../wikilib.php:1124
  +#: ../wikilib.php:1196
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr "'%s' 지우기를 실패했습니다"
   
  -#: ../wikilib.php:1129
  +#: ../wikilib.php:1201
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr "'%s' 디렉토리가 지우졌습니다"
   
  -#: ../wikilib.php:1131
  +#: ../wikilib.php:1203
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr "'%s' 지우기를 실패했습니다"
   
  -#: ../wikilib.php:1141 ../wikilib.php:1161
  +#: ../wikilib.php:1213 ../wikilib.php:1233
   msgid "No files are selected !"
   msgstr "파일을 선택하지 않았습니다"
   
  -#: ../wikilib.php:1154
  +#: ../wikilib.php:1226
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr "정말로 '%s'(을)를 지우시겠습니까 ?"
   
  -#: ../wikilib.php:1158
  +#: ../wikilib.php:1230
   msgid "Delete selected file"
   msgstr "선택된 파일 지우기"
   
  -#: ../wikilib.php:1179
  +#: ../wikilib.php:1251
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr "%s(이)가 지워짐 !"
   
  -#: ../wikilib.php:1194
  +#: ../wikilib.php:1266
   msgid "Please delete this file manually."
   msgstr "파일을 직접 지워주세요."
   
  -#: ../wikilib.php:1196
  +#: ../wikilib.php:1268
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "\"%s\"을(를) 지울까요 ?"
   
  -#: ../wikilib.php:1249
  +#: ../wikilib.php:1321
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
  -#: ../wikilib.php:1422
  +#: ../wikilib.php:1494
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr " 혹은 %s를 눌러 전체찾기를 합니다.\n"
   
  -#: ../wikilib.php:1422
  +#: ../wikilib.php:1494
   msgid "title"
   msgstr "제목"
   
  -#: ../wikilib.php:1436
  +#: ../wikilib.php:1508
   msgid "Please try to fulltext search"
   msgstr "전체 찾기를 해보시기 바랍니다"
   
  -#: ../wikilib.php:1439
  +#: ../wikilib.php:1511
   #, c-format
   msgid "You can also click %s to fulltext search.\n"
   msgstr "%s 아이콘을 눌러 전체 찾기를 하실 수 있습니다.\n"
   
  -#: ../wikilib.php:1484 ../wikilib.php:1585
  +#: ../wikilib.php:1556 ../wikilib.php:1664
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "%s을(를) 고치는 동안 다른 사람이 이 페이지를 저장했습니다"
   
  -#: ../wikilib.php:1490
  +#: ../wikilib.php:1562
   msgid "Section edit is not valid for non-exists page."
   msgstr "없는 페이지에 대한 섹션 편집은 가능하지 않습니다"
   
  -#: ../wikilib.php:1523 ../wikilib.php:1732
  +#: ../wikilib.php:1595 ../wikilib.php:1840
   msgid "mail does not supported by default."
   msgstr "메일이 지원되지 않습니다"
   
  -#: ../wikilib.php:1527 ../wikilib.php:1736
  +#: ../wikilib.php:1599 ../wikilib.php:1844
   msgid "Sent notification mail."
   msgstr "메일을 보냈습니다"
   
  -#: ../wikilib.php:1529 ../wikilib.php:1738
  +#: ../wikilib.php:1601 ../wikilib.php:1846
   msgid "No subscribers found."
   msgstr "구독자가 없습니다"
   
  -#: ../wikilib.php:1534 ../wikilib.php:1743
  +#: ../wikilib.php:1606 ../wikilib.php:1851
   #, c-format
   msgid "%s is not editable"
   msgstr "%s(이)가 쓰기가능하지 않음"
   
  -#: ../wikilib.php:1536 ../wikilib.php:1745
  +#: ../wikilib.php:1608 ../wikilib.php:1853
   #, c-format
   msgid "%s is saved"
   msgstr "%s(이)가 저장됨"
   
  -#: ../wikilib.php:1576
  +#: ../wikilib.php:1655
   msgid "Goto Editor"
   msgstr "편집기로 가기"
   
  -#: ../wikilib.php:1590
  +#: ../wikilib.php:1669
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr "%s 페이지 최근 내용이 병합되었습니다."
   
  -#: ../wikilib.php:1591
  +#: ../wikilib.php:1670
   #, c-format
   msgid "%s is merged successfully"
  -msgstr "설정이 성공적으로 병합되었습니다"
  +msgstr "%s 페이지가 성공적으로 병합되었습니다"
   
  -#: ../wikilib.php:1595
  +#: ../wikilib.php:1674
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr "%s에 대하여 병합 충돌이 발견되었습니다 !"
   
  -#: ../wikilib.php:1596
  +#: ../wikilib.php:1675
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr "%s에 대해 병합이 취소되었습니다."
   
  -#: ../wikilib.php:1597
  +#: ../wikilib.php:1676
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1598
  +#: ../wikilib.php:1677
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1603
  +#: ../wikilib.php:1682
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr "%s에 대해 병합을 합니다"
   
  -#: ../wikilib.php:1604
  +#: ../wikilib.php:1683
   msgid "Please resolve conflicts manually."
   msgstr "충돌을 직접 해결하시기 바랍니다."
   
  -#: ../wikilib.php:1607
  +#: ../wikilib.php:1686
   #, c-format
   msgid "Force merging for %s !"
   msgstr "%s에 대해 병합이 강제로 되었습니다 !"
   
  -#: ../wikilib.php:1608
  +#: ../wikilib.php:1687
   msgid "Please be careful, you could damage useful information."
   msgstr "주의하시기 바랍니다. 중요한 정보를 잃어버릴 수도 있습니다."
   
  -#: ../wikilib.php:1622
  +#: ../wikilib.php:1701
   msgid "Conflict error!"
   msgstr "충돌 오류!"
   
  -#: ../wikilib.php:1692
  +#: ../wikilib.php:1785
   #, c-format
   msgid "Preview of %s"
   msgstr "%s 미리보기"
   
  -#: ../wikilib.php:1777
  +#: ../wikilib.php:1885
   msgid "Nobody subscribed to this page."
   msgstr "아무도 페이지를 구독하지 않고있습니다."
   
  -#: ../wikilib.php:1796
  +#: ../wikilib.php:1904
   #, c-format
   msgid "%s page is modified"
   msgstr "%s 페이지가 변경되었습니다"
   
  -#: ../wikilib.php:1825
  +#: ../wikilib.php:1933
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:1838
  +#: ../wikilib.php:1946
   msgid "Send notification mails to all subscribers"
   msgstr "모든 구독자에게 메일을 보냅니다"
   
  -#: ../wikilib.php:1843
  +#: ../wikilib.php:1951
   msgid "Mails are sent successfully"
   msgstr "메일이 성공적으로 보내졌습니다"
   
  -#: ../wikilib.php:1844
  +#: ../wikilib.php:1952
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr "'%s'에게 메일을 보냈습니다"
   
  -#: ../wikilib.php:1846
  +#: ../wikilib.php:1954
   msgid "Fail to send mail"
   msgstr "메일 보내기 실패했습니다"
   
  -#: ../wikilib.php:1857
  +#: ../wikilib.php:1965
   msgid "This wiki does not support sendmail"
   msgstr "위키에서 sendmail을 지원받지 못합니다"
   
  -#: ../wikilib.php:1955
  +#: ../wikilib.php:2063
   msgid "Invalid regular expression !"
   msgstr "잘못된 정규 표현식 !"
   
  -#: ../wikilib.php:1979
  +#: ../wikilib.php:2087
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:1982
  +#: ../wikilib.php:2090
   msgid "Infinite loop possible!"
   msgstr "무한 루프가 가능함!"
   
  -#: ../wikilib.php:2097
  +#: ../wikilib.php:2205
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:2098
  +#: ../wikilib.php:2206
   msgid "OpenID"
   msgstr ""
   
  -#: ../wikilib.php:2110 ../wikilib.php:2237
  +#: ../wikilib.php:2218 ../wikilib.php:2345
   msgid "ID"
   msgstr "아이디"
   
  -#: ../wikilib.php:2145 ../wikilib.php:2230
  +#: ../wikilib.php:2253 ../wikilib.php:2338
   msgid "Make profile"
   msgstr "사용자 등록"
   
  -#: ../wikilib.php:2147
  +#: ../wikilib.php:2255
   msgid "password again"
   msgstr "비밀번호 재입력"
   
  -#: ../wikilib.php:2149 ../wikilib.php:2198
  +#: ../wikilib.php:2257 ../wikilib.php:2306
   msgid "Mail"
   msgstr "메일"
   
  -#: ../wikilib.php:2171
  +#: ../wikilib.php:2279
   msgid "New password"
   msgstr "새 비밀번호"
   
  -#: ../wikilib.php:2176
  +#: ../wikilib.php:2284
   msgid "Nickname"
   msgstr "별명"
   
  -#: ../wikilib.php:2199
  +#: ../wikilib.php:2307
   msgid "Time Zone"
   msgstr "시간대"
   
  -#: ../wikilib.php:2208
  +#: ../wikilib.php:2316
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:2521
  +#: ../wikilib.php:2629
   msgid "Show all"
   msgstr "모두 보기"
   
  -#: ../wikilib.php:2659
  +#: ../wikilib.php:2767
   msgid "Contents"
   msgstr "목차"
   
  -#: ../wikilib.php:2779
  +#: ../wikilib.php:2887
   #, c-format
   msgid "Title search for \"%s\""
   msgstr "\"%s\"에 대한 제목 찾기"
  @@ -2704,6 +2739,31 @@
   msgid "TrackBack"
   msgstr "트랙백"
   
  +#: ../locale/dummy.php:8
  +msgid "source"
  +msgstr "소스"
  +
  +#: ../locale/dummy.php:8
  +msgid "diff"
  +msgstr "차이"
  +
  +#: ../locale/dummy.php:8
  +msgid "recall"
  +msgstr "이전보기"
  +
  +#: ../locale/dummy.php:8
  +msgid "view"
  +msgstr "보기"
  +
  +#~ msgid "Diff"
  +#~ msgstr "변화"
  +
  +#~ msgid "Date and Changes"
  +#~ msgstr "날짜와 바뀐점"
  +
  +#~ msgid "actions"
  +#~ msgstr "액션"
  +
   #~ msgid "--Select Category--"
   #~ msgstr "--카테고리 선택--"
   
  
  
  
  1.27      +253 -202  moniwiki/locale/po/moniwiki.pot
  
  Index: moniwiki.pot
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/moniwiki.pot,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- moniwiki.pot	13 Jul 2009 15:35:47 -0000	1.26
  +++ moniwiki.pot	29 Jul 2009 17:52:45 -0000	1.27
  @@ -7,7 +7,7 @@
   msgstr ""
   "Project-Id-Version: PACKAGE VERSION\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2009-07-14 00:35+0900\n"
  +"POT-Creation-Date: 2009-07-30 00:37+0900\n"
   "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
   "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
   "Language-Team: LANGUAGE <LL@li.org>\n"
  @@ -98,10 +98,11 @@
   msgstr ""
   
   #: ../plugin/Blog.php:262 ../plugin/Blog.php:333
  +#: ../plugin/RecentChanges.php:106
   msgid "Title"
   msgstr ""
   
  -#: ../plugin/Blog.php:268 ../wikilib.php:972
  +#: ../plugin/Blog.php:268 ../wikilib.php:1052
   msgid "GUI"
   msgstr ""
   
  @@ -182,7 +183,8 @@
   msgid "Comment"
   msgstr ""
   
  -#: ../plugin/Comment.php:93 ../wikilib.php:966 ../monisetup.php:1305
  +#: ../plugin/Comment.php:93 ../wikilib.php:795 ../wikilib.php:1046
  +#: ../wikilib.php:1715 ../wikilib.php:1805 ../monisetup.php:1305
   msgid "Preview"
   msgstr ""
   
  @@ -203,17 +205,17 @@
   msgstr ""
   
   #: ../plugin/Comment.php:169 ../plugin/userform.php:118
  -#: ../plugin/userform.php:181 ../plugin/userform.php:204 ../wikilib.php:1665
  +#: ../plugin/userform.php:181 ../plugin/userform.php:204 ../wikilib.php:1758
   msgid "Invalid ticket !"
   msgstr ""
   
   #: ../plugin/Comment.php:174 ../plugin/userform.php:120
  -#: ../plugin/userform.php:206 ../wikilib.php:1670
  +#: ../plugin/userform.php:206 ../wikilib.php:1763
   msgid "You need a ticket !"
   msgstr ""
   
   #: ../plugin/Comment.php:196 ../plugin/Gallery.php:174 ../plugin/bbs.php:1009
  -#: ../wikilib.php:1509 ../wikilib.php:1686
  +#: ../wikilib.php:1581 ../wikilib.php:1779
   msgid ""
   "Sorry, can not save page because some messages are blocked in this wiki."
   msgstr ""
  @@ -231,16 +233,16 @@
   msgid "Comment added successfully"
   msgstr ""
   
  -#: ../plugin/Diff.php:410 ../plugin/Info.php:230
  +#: ../plugin/Diff.php:410 ../plugin/Info.php:240
   msgid "No older revisions available"
   msgstr ""
   
  -#: ../plugin/Diff.php:415 ../plugin/Info.php:236 ../plugin/rcsexport.php:13
  +#: ../plugin/Diff.php:415 ../plugin/Info.php:246 ../plugin/rcsexport.php:13
   #: ../plugin/rcsimport.php:13
   msgid "Version info is not available in this wiki"
   msgstr ""
   
  -#: ../plugin/Diff.php:426 ../wikilib.php:1642
  +#: ../plugin/Diff.php:426 ../wikilib.php:1735
   msgid "No difference found"
   msgstr ""
   
  @@ -266,7 +268,7 @@
   msgid "Draw new picture"
   msgstr ""
   
  -#: ../plugin/Draw.php:92 ../plugin/UploadFile.php:250
  +#: ../plugin/Draw.php:92 ../plugin/UploadFile.php:252
   #, c-format
   msgid "Fail to copy \"%s\" to \"%s\""
   msgstr ""
  @@ -307,18 +309,18 @@
   msgstr ""
   
   #: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:38
  -#: ../wikilib.php:1430
  +#: ../wikilib.php:1502
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr ""
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1432
  +#: ../wikilib.php:1504
   msgid "page"
   msgstr ""
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1432
  +#: ../wikilib.php:1504
   msgid "pages"
   msgstr ""
   
  @@ -336,8 +338,8 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4496
  -#: ../wikilib.php:948
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4498
  +#: ../wikilib.php:1032
   msgid "Refresh"
   msgstr ""
   
  @@ -351,8 +353,8 @@
   msgid "You can also click %s to search title.\n"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5439 ../wiki.php:5446
  -#: ../wikilib.php:1440
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5441 ../wiki.php:5448
  +#: ../wikilib.php:1512
   msgid "here"
   msgstr ""
   
  @@ -368,7 +370,7 @@
   msgid "Case-sensitive searching"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:77 ../wikilib.php:2762 ../wikilib.php:2824
  +#: ../plugin/FullSearch.php:77 ../wikilib.php:2870 ../wikilib.php:2932
   msgid "Go"
   msgstr ""
   
  @@ -376,12 +378,12 @@
   msgid "Empty expression"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:144 ../wikilib.php:2783
  +#: ../plugin/FullSearch.php:144 ../wikilib.php:2891
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr ""
   
  -#: ../plugin/Gallery.php:245 ../plugin/UploadedFiles.php:285
  +#: ../plugin/Gallery.php:245 ../plugin/UploadedFiles.php:287
   msgid "No files found"
   msgstr ""
   
  @@ -393,8 +395,8 @@
   msgid "show comments"
   msgstr ""
   
  -#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1496
  -#: ../wikilib.php:1640
  +#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1568
  +#: ../wikilib.php:1733
   #, c-format
   msgid "Go back or return to %s"
   msgstr ""
  @@ -411,66 +413,66 @@
   msgid "Import URL"
   msgstr ""
   
  -#: ../plugin/Info.php:30
  -msgid "Diff"
  +#: ../plugin/Info.php:36
  +msgid "Compare"
   msgstr ""
   
  -#: ../plugin/Info.php:35
  +#: ../plugin/Info.php:41
   msgid "Revision History"
   msgstr ""
   
  -#: ../plugin/Info.php:38
  -msgid "ver."
  +#: ../plugin/Info.php:44
  +msgid "Ver."
   msgstr ""
   
  -#: ../plugin/Info.php:38
  -msgid "Date and Changes"
  +#: ../plugin/Info.php:44 ../plugin/UploadedFiles.php:303
  +msgid "Date"
   msgstr ""
   
  -#: ../plugin/Info.php:39
  +#: ../plugin/Info.php:45 ../plugin/RecentChanges.php:107
  +msgid "Changes"
  +msgstr ""
  +
  +#: ../plugin/Info.php:46 ../plugin/RecentChanges.php:107
   msgid "Editor"
   msgstr ""
   
  -#: ../plugin/Info.php:42
  -msgid "actions"
  +#: ../plugin/Info.php:50
  +msgid "View"
   msgstr ""
   
  -#: ../plugin/Info.php:43
  +#: ../plugin/Info.php:51
   msgid "admin."
   msgstr ""
   
  -#: ../plugin/Info.php:59
  +#: ../plugin/Info.php:68
   msgid "Show all revisions"
   msgstr ""
   
  -#: ../plugin/Info.php:92
  +#: ../plugin/Info.php:101
   msgid "Yesterday"
   msgstr ""
   
  -#: ../plugin/Info.php:93
  +#: ../plugin/Info.php:102
   #, c-format
   msgid "%s days ago"
   msgstr ""
   
  -#: ../plugin/Info.php:95
  +#: ../plugin/Info.php:104
   #, c-format
   msgid "%s hours ago"
   msgstr ""
   
  -#: ../plugin/Info.php:97
  +#: ../plugin/Info.php:106
   #, c-format
   msgid "%s min ago"
   msgstr ""
   
  -#: ../plugin/Info.php:176
  -msgid "diff"
  -msgstr ""
  -
  -#: ../plugin/Info.php:199 ../plugin/rename.php:80
  +#: ../plugin/Info.php:209 ../plugin/rename.php:80
   msgid "show only"
   msgstr ""
   
  -#: ../plugin/Info.php:203
  +#: ../plugin/Info.php:213
   msgid "purge"
   msgstr ""
   
  @@ -579,7 +581,7 @@
   msgid "Select keywords for %s"
   msgstr ""
   
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1317 ../wikilib.php:2770
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1389 ../wikilib.php:2878
   msgid "Use more specific text"
   msgstr ""
   
  @@ -709,22 +711,52 @@
   msgid "Rating successfully !"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:125
  +#: ../plugin/RecentChanges.php:28
  +#, c-format
  +msgid "%d minute ago"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:30
  +#, c-format
  +msgid "%d hours ago"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:32
  +#, c-format
  +msgid "%d days ago"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:106
  +msgid "Change Date"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:109
  +msgid "Hits"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:155
   msgid "Show changes for "
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:130
  +#: ../plugin/RecentChanges.php:160
   msgid "days ago"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:213 ../plugin/pagelist.php:117
  -#: ../plugin/pagelist.php:134
  +#: ../plugin/RecentChanges.php:264
  +msgid "set bookmark"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:273
  +msgid "Bookmark"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:335
   #, c-format
  -msgid "[%sh %sm ago]"
  +msgid "%s changes"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:231
  -msgid "set bookmark"
  +#: ../plugin/RecentChanges.php:349
  +msgid "Recent Changes"
   msgstr ""
   
   #: ../plugin/SWFUpload.php:136
  @@ -825,7 +857,7 @@
   msgid "TwinPages of %s"
   msgstr ""
   
  -#: ../plugin/TwinPages.php:19 ../wiki.php:5425
  +#: ../plugin/TwinPages.php:19 ../wiki.php:5427
   msgid "See [TwinPages]: "
   msgstr ""
   
  @@ -833,52 +865,52 @@
   msgid "No TwinPages found."
   msgstr ""
   
  -#: ../plugin/UploadFile.php:147 ../plugin/UploadFile.php:161
  +#: ../plugin/UploadFile.php:149 ../plugin/UploadFile.php:163
   #, c-format
   msgid "The %s type of %s is not allowed to upload"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:163
  +#: ../plugin/UploadFile.php:165
   #, c-format
   msgid "%s is not allowed to upload"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:218
  +#: ../plugin/UploadFile.php:220
   #, c-format
   msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
   msgstr ""
   
  -#: ../plugin/UploadFile.php:251
  +#: ../plugin/UploadFile.php:253
   msgid "Please check your php.ini setting"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:261
  +#: ../plugin/UploadFile.php:263
   #, c-format
   msgid "File \"%s\" is uploaded successfully"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:300
  +#: ../plugin/UploadFile.php:308
   msgid "Files are uploaded successfully"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:344
  +#: ../plugin/UploadFile.php:352
   msgid "Replace original file"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:345
  +#: ../plugin/UploadFile.php:353
   msgid "Rename if it already exist"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:350 ../plugin/rename.php:69
  +#: ../plugin/UploadFile.php:358 ../plugin/rename.php:69
   msgid "Rename"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:358
  +#: ../plugin/UploadFile.php:366
   #, c-format
   msgid "or %s."
   msgstr ""
   
  -#: ../plugin/UploadFile.php:358 ../plugin/UploadForm.php:99
  +#: ../plugin/UploadFile.php:366 ../plugin/UploadForm.php:143
   msgid "Upload files"
   msgstr ""
   
  @@ -886,54 +918,50 @@
   msgid "Choose File"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:97
  +#: ../plugin/UploadForm.php:141
   msgid "add files"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:98
  +#: ../plugin/UploadForm.php:142
   msgid "add a file"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:100
  +#: ../plugin/UploadForm.php:144
   msgid "Reset"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:101
  +#: ../plugin/UploadForm.php:145
   msgid "Attachments"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:299
  +#: ../plugin/UploadedFiles.php:301
   msgid "File name"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:300
  +#: ../plugin/UploadedFiles.php:302
   msgid "Size"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:301
  -msgid "Date"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:351
  +#: ../plugin/UploadedFiles.php:353
   msgid "Next page &raquo;"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:353
  +#: ../plugin/UploadedFiles.php:355
   msgid "&laquo; First page"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:445
  +#: ../plugin/UploadedFiles.php:447
   #, c-format
   msgid "Total %d files"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:450 ../plugin/rcsimport.php:32
  +#: ../plugin/UploadedFiles.php:452 ../plugin/rcsimport.php:32
   #: ../plugin/rcsimport.php:88 ../plugin/rename.php:77 ../plugin/revert.php:82
  -#: ../plugin/userinfo.php:37 ../wikilib.php:1156 ../wikilib.php:2081
  +#: ../plugin/userinfo.php:37 ../wikilib.php:1228 ../wikilib.php:2189
   msgid "Password"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:451 ../wikilib.php:1134
  +#: ../plugin/UploadedFiles.php:453 ../wikilib.php:1206
   msgid "Delete selected files"
   msgstr ""
   
  @@ -953,7 +981,7 @@
   msgid "Voted successfully"
   msgstr ""
   
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2520
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2628
   msgid "Others"
   msgstr ""
   
  @@ -1037,7 +1065,7 @@
   msgid "Edit"
   msgstr ""
   
  -#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1157
  +#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1229
   msgid "Delete"
   msgstr ""
   
  @@ -1171,7 +1199,7 @@
   msgid "Edit man page"
   msgstr ""
   
  -#: ../plugin/minilogin.php:18 ../wikilib.php:2162
  +#: ../plugin/minilogin.php:18 ../wikilib.php:2270
   msgid "Login or Join"
   msgstr ""
   
  @@ -1214,6 +1242,11 @@
   msgid "Normalize this page name"
   msgstr ""
   
  +#: ../plugin/pagelist.php:117 ../plugin/pagelist.php:134
  +#, c-format
  +msgid "[%sh %sm ago]"
  +msgstr ""
  +
   #: ../plugin/pageview.php:70
   msgid "First:"
   msgstr ""
  @@ -1236,7 +1269,7 @@
   msgid "Save Changes"
   msgstr ""
   
  -#: ../plugin/processor/monimarkup.php:507 ../wiki.php:3881
  +#: ../plugin/processor/monimarkup.php:507 ../wiki.php:3883
   msgid "edit"
   msgstr ""
   
  @@ -1360,7 +1393,7 @@
   msgid "Only WikiMaster can rename this page"
   msgstr ""
   
  -#: ../plugin/rename.php:79 ../wikilib.php:1202
  +#: ../plugin/rename.php:79 ../wikilib.php:1274
   msgid "with revision history"
   msgstr ""
   
  @@ -1402,7 +1435,7 @@
   msgid "Select a tarball file to restore"
   msgstr ""
   
  -#: ../plugin/revert.php:23 ../wiki.php:5441
  +#: ../plugin/revert.php:23 ../wiki.php:5443
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr ""
  @@ -1428,7 +1461,7 @@
   msgid "Are you really want to revert this page ?"
   msgstr ""
   
  -#: ../plugin/revert.php:74 ../wikilib.php:963
  +#: ../plugin/revert.php:74 ../wikilib.php:1043
   msgid "Summary"
   msgstr ""
   
  @@ -1690,7 +1723,7 @@
   msgid "Cookie deleted !"
   msgstr ""
   
  -#: ../plugin/userform.php:107 ../wikilib.php:2232
  +#: ../plugin/userform.php:107 ../wikilib.php:2340
   msgid "E-mail new password"
   msgstr ""
   
  @@ -1771,8 +1804,8 @@
   msgid "You are not allowed to register on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5379
  -#: ../wiki.php:5390
  +#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5381
  +#: ../wiki.php:5392
   msgid "Please contact WikiMasters"
   msgstr ""
   
  @@ -1909,121 +1942,121 @@
   msgid "File '%s' does not exist."
   msgstr ""
   
  -#: ../wiki.php:2947 ../wiki.php:2958 ../wiki.php:5619
  +#: ../wiki.php:2947 ../wiki.php:2958 ../wiki.php:5621
   msgid "Invalid ajax action."
   msgstr ""
   
  -#: ../wiki.php:3456
  +#: ../wiki.php:3458
   msgid "Tags:"
   msgstr ""
   
  -#: ../wiki.php:3484
  +#: ../wiki.php:3486
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:3484
  +#: ../wiki.php:3486
   #, c-format
   msgid "TwinPages"
   msgstr ""
   
  -#: ../wiki.php:3489
  +#: ../wiki.php:3491
   msgid "See [TwinPages]:"
   msgstr ""
   
  -#: ../wiki.php:4061
  +#: ../wiki.php:4063
   msgid "Sister Sites Index"
   msgstr ""
   
  -#: ../wiki.php:4492 ../locale/dummy.php:6
  +#: ../wiki.php:4494 ../locale/dummy.php:6
   msgid "EditText"
   msgstr ""
   
  -#: ../wiki.php:4494
  +#: ../wiki.php:4496
   msgid "NotEditable"
   msgstr ""
   
  -#: ../wiki.php:4498 ../locale/dummy.php:6
  +#: ../wiki.php:4500 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:4499 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4501 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr ""
   
  -#: ../wiki.php:4938
  +#: ../wiki.php:4940
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5202
  +#: ../wiki.php:5204
   msgid "Someone logged in at another place !"
   msgstr ""
   
  -#: ../wiki.php:5378
  +#: ../wiki.php:5380
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5389
  +#: ../wiki.php:5391
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:5427 ../wiki.php:5436 ../wikilib.php:1420
  +#: ../wiki.php:5429 ../wiki.php:5438 ../wikilib.php:1492
   msgid "Create this page"
   msgstr ""
   
  -#: ../wiki.php:5438
  +#: ../wiki.php:5440
   #, c-format
   msgid "%s has saved revisions"
   msgstr ""
   
  -#: ../wiki.php:5439 ../wiki.php:5446
  +#: ../wiki.php:5441 ../wiki.php:5448
   #, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr ""
   
  -#: ../wiki.php:5444
  +#: ../wiki.php:5446
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr ""
   
  -#: ../wiki.php:5451
  +#: ../wiki.php:5453
   msgid "Please try to search with another word"
   msgstr ""
   
  -#: ../wiki.php:5463
  +#: ../wiki.php:5465
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr ""
   
  -#: ../wiki.php:5466
  +#: ../wiki.php:5468
   msgid "You have no templates"
   msgstr ""
   
  -#: ../wiki.php:5468
  +#: ../wiki.php:5470
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
   
  -#: ../wiki.php:5479
  +#: ../wiki.php:5481
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
  -#: ../wiki.php:5621
  +#: ../wiki.php:5623
   msgid "Invalid macro action."
   msgstr ""
   
  -#: ../wiki.php:5631
  +#: ../wiki.php:5633
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr ""
   
  -#: ../wiki.php:5651
  +#: ../wiki.php:5653
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:5654
  +#: ../wiki.php:5656
   msgid "Please enter the valid password"
   msgstr ""
   
  @@ -2044,348 +2077,350 @@
   "no trailing white space allowed after tables or titles.<br />\n"
   msgstr ""
   
  -#: ../wikilib.php:695
  +#: ../wikilib.php:761
   msgid "You are not allowed to edit this page !"
   msgstr ""
   
  -#: ../wikilib.php:702
  +#: ../wikilib.php:768
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
  -#: ../wikilib.php:827
  +#: ../wikilib.php:789 ../wikilib.php:1061 ../wikilib.php:1709
  +#: ../wikilib.php:1799 ../wikilib.php:2273 ../wikilib.php:2327
  +msgid "Save"
  +msgstr ""
  +
  +#: ../wikilib.php:797 ../wikilib.php:1048 ../wikilib.php:1717
  +#: ../wikilib.php:1807
  +msgid "Skip to preview"
  +msgstr ""
  +
  +#: ../wikilib.php:908
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   
  -#: ../wikilib.php:829
  +#: ../wikilib.php:910
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr ""
   
  -#: ../wikilib.php:833
  +#: ../wikilib.php:914
   msgid "Merge"
   msgstr ""
   
  -#: ../wikilib.php:834
  +#: ../wikilib.php:915
   msgid "Merge manually"
   msgstr ""
   
  -#: ../wikilib.php:835
  +#: ../wikilib.php:916
   msgid "Ignore conflicts"
   msgstr ""
   
  -#: ../wikilib.php:862
  +#: ../wikilib.php:948
   msgid "ReduceEditor"
   msgstr ""
   
  -#: ../wikilib.php:863
  +#: ../wikilib.php:949
   msgid "EnlargeEditor"
   msgstr ""
   
  -#: ../wikilib.php:867 ../locale/dummy.php:6
  +#: ../wikilib.php:953 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
  -#: ../wikilib.php:869
  +#: ../wikilib.php:955
   msgid "HelpOnEditing"
   msgstr ""
   
  -#: ../wikilib.php:901
  +#: ../wikilib.php:987
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:923
  +#: ../wikilib.php:1007
   msgid "Category"
   msgstr ""
   
  -#: ../wikilib.php:931
  +#: ../wikilib.php:1015
   msgid " Select "
   msgstr ""
   
  -#: ../wikilib.php:942
  +#: ../wikilib.php:1026
   msgid "Minor edit"
   msgstr ""
   
  -#: ../wikilib.php:968
  -msgid "Skip to preview"
  -msgstr ""
  -
  -#: ../wikilib.php:981 ../wikilib.php:2165 ../wikilib.php:2219
  -msgid "Save"
  -msgstr ""
  -
  -#: ../wikilib.php:1068
  +#: ../wikilib.php:1140
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:1073
  +#: ../wikilib.php:1145
   #, c-format
   msgid "%s is not valid action"
   msgstr ""
   
  -#: ../wikilib.php:1075
  +#: ../wikilib.php:1147
   msgid "Is it valid action ?"
   msgstr ""
   
  -#: ../wikilib.php:1122
  +#: ../wikilib.php:1194
   #, c-format
   msgid "File '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:1124
  +#: ../wikilib.php:1196
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1129
  +#: ../wikilib.php:1201
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:1131
  +#: ../wikilib.php:1203
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1141 ../wikilib.php:1161
  +#: ../wikilib.php:1213 ../wikilib.php:1233
   msgid "No files are selected !"
   msgstr ""
   
  -#: ../wikilib.php:1154
  +#: ../wikilib.php:1226
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
  -#: ../wikilib.php:1158
  +#: ../wikilib.php:1230
   msgid "Delete selected file"
   msgstr ""
   
  -#: ../wikilib.php:1179
  +#: ../wikilib.php:1251
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr ""
   
  -#: ../wikilib.php:1194
  +#: ../wikilib.php:1266
   msgid "Please delete this file manually."
   msgstr ""
   
  -#: ../wikilib.php:1196
  +#: ../wikilib.php:1268
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr ""
   
  -#: ../wikilib.php:1249
  +#: ../wikilib.php:1321
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
  -#: ../wikilib.php:1422
  +#: ../wikilib.php:1494
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
   
  -#: ../wikilib.php:1422
  +#: ../wikilib.php:1494
   msgid "title"
   msgstr ""
   
  -#: ../wikilib.php:1436
  +#: ../wikilib.php:1508
   msgid "Please try to fulltext search"
   msgstr ""
   
  -#: ../wikilib.php:1439
  +#: ../wikilib.php:1511
   #, c-format
   msgid "You can also click %s to fulltext search.\n"
   msgstr ""
   
  -#: ../wikilib.php:1484 ../wikilib.php:1585
  +#: ../wikilib.php:1556 ../wikilib.php:1664
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr ""
   
  -#: ../wikilib.php:1490
  +#: ../wikilib.php:1562
   msgid "Section edit is not valid for non-exists page."
   msgstr ""
   
  -#: ../wikilib.php:1523 ../wikilib.php:1732
  +#: ../wikilib.php:1595 ../wikilib.php:1840
   msgid "mail does not supported by default."
   msgstr ""
   
  -#: ../wikilib.php:1527 ../wikilib.php:1736
  +#: ../wikilib.php:1599 ../wikilib.php:1844
   msgid "Sent notification mail."
   msgstr ""
   
  -#: ../wikilib.php:1529 ../wikilib.php:1738
  +#: ../wikilib.php:1601 ../wikilib.php:1846
   msgid "No subscribers found."
   msgstr ""
   
  -#: ../wikilib.php:1534 ../wikilib.php:1743
  +#: ../wikilib.php:1606 ../wikilib.php:1851
   #, c-format
   msgid "%s is not editable"
   msgstr ""
   
  -#: ../wikilib.php:1536 ../wikilib.php:1745
  +#: ../wikilib.php:1608 ../wikilib.php:1853
   #, c-format
   msgid "%s is saved"
   msgstr ""
   
  -#: ../wikilib.php:1576
  +#: ../wikilib.php:1655
   msgid "Goto Editor"
   msgstr ""
   
  -#: ../wikilib.php:1590
  +#: ../wikilib.php:1669
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr ""
   
  -#: ../wikilib.php:1591
  +#: ../wikilib.php:1670
   #, c-format
   msgid "%s is merged successfully"
   msgstr ""
   
  -#: ../wikilib.php:1595
  +#: ../wikilib.php:1674
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1596
  +#: ../wikilib.php:1675
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr ""
   
  -#: ../wikilib.php:1597
  +#: ../wikilib.php:1676
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1598
  +#: ../wikilib.php:1677
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1603
  +#: ../wikilib.php:1682
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr ""
   
  -#: ../wikilib.php:1604
  +#: ../wikilib.php:1683
   msgid "Please resolve conflicts manually."
   msgstr ""
   
  -#: ../wikilib.php:1607
  +#: ../wikilib.php:1686
   #, c-format
   msgid "Force merging for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1608
  +#: ../wikilib.php:1687
   msgid "Please be careful, you could damage useful information."
   msgstr ""
   
  -#: ../wikilib.php:1622
  +#: ../wikilib.php:1701
   msgid "Conflict error!"
   msgstr ""
   
  -#: ../wikilib.php:1692
  +#: ../wikilib.php:1785
   #, c-format
   msgid "Preview of %s"
   msgstr ""
   
  -#: ../wikilib.php:1777
  +#: ../wikilib.php:1885
   msgid "Nobody subscribed to this page."
   msgstr ""
   
  -#: ../wikilib.php:1796
  +#: ../wikilib.php:1904
   #, c-format
   msgid "%s page is modified"
   msgstr ""
   
  -#: ../wikilib.php:1825
  +#: ../wikilib.php:1933
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:1838
  +#: ../wikilib.php:1946
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:1843
  +#: ../wikilib.php:1951
   msgid "Mails are sent successfully"
   msgstr ""
   
  -#: ../wikilib.php:1844
  +#: ../wikilib.php:1952
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1846
  +#: ../wikilib.php:1954
   msgid "Fail to send mail"
   msgstr ""
   
  -#: ../wikilib.php:1857
  +#: ../wikilib.php:1965
   msgid "This wiki does not support sendmail"
   msgstr ""
   
  -#: ../wikilib.php:1955
  +#: ../wikilib.php:2063
   msgid "Invalid regular expression !"
   msgstr ""
   
  -#: ../wikilib.php:1979
  +#: ../wikilib.php:2087
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:1982
  +#: ../wikilib.php:2090
   msgid "Infinite loop possible!"
   msgstr ""
   
  -#: ../wikilib.php:2097
  +#: ../wikilib.php:2205
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:2098
  +#: ../wikilib.php:2206
   msgid "OpenID"
   msgstr ""
   
  -#: ../wikilib.php:2110 ../wikilib.php:2237
  +#: ../wikilib.php:2218 ../wikilib.php:2345
   msgid "ID"
   msgstr ""
   
  -#: ../wikilib.php:2145 ../wikilib.php:2230
  +#: ../wikilib.php:2253 ../wikilib.php:2338
   msgid "Make profile"
   msgstr ""
   
  -#: ../wikilib.php:2147
  +#: ../wikilib.php:2255
   msgid "password again"
   msgstr ""
   
  -#: ../wikilib.php:2149 ../wikilib.php:2198
  +#: ../wikilib.php:2257 ../wikilib.php:2306
   msgid "Mail"
   msgstr ""
   
  -#: ../wikilib.php:2171
  +#: ../wikilib.php:2279
   msgid "New password"
   msgstr ""
   
  -#: ../wikilib.php:2176
  +#: ../wikilib.php:2284
   msgid "Nickname"
   msgstr ""
   
  -#: ../wikilib.php:2199
  +#: ../wikilib.php:2307
   msgid "Time Zone"
   msgstr ""
   
  -#: ../wikilib.php:2208
  +#: ../wikilib.php:2316
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:2521
  +#: ../wikilib.php:2629
   msgid "Show all"
   msgstr ""
   
  -#: ../wikilib.php:2659
  +#: ../wikilib.php:2767
   msgid "Contents"
   msgstr ""
   
  -#: ../wikilib.php:2779
  +#: ../wikilib.php:2887
   #, c-format
   msgid "Title search for \"%s\""
   msgstr ""
  @@ -2678,3 +2713,19 @@
   #: ../locale/dummy.php:7
   msgid "TrackBack"
   msgstr ""
  +
  +#: ../locale/dummy.php:8
  +msgid "source"
  +msgstr ""
  +
  +#: ../locale/dummy.php:8
  +msgid "diff"
  +msgstr ""
  +
  +#: ../locale/dummy.php:8
  +msgid "recall"
  +msgstr ""
  +
  +#: ../locale/dummy.php:8
  +msgid "view"
  +msgstr ""
  
  
  


wkpark      2009/07/30 03:07:43

  Modified:    .        wiki.php config.php.default
  Log:
  misc update and tagging 1.1.4-RC1
  
  Revision  Changes    Path
  1.478     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.477
  retrieving revision 1.478
  diff -u -r1.477 -r1.478
  --- wiki.php	21 Jul 2009 16:09:44 -0000	1.477
  +++ wiki.php	29 Jul 2009 18:07:43 -0000	1.478
  @@ -1,5 +1,5 @@
   <?php
  -// Copyright 2003-2007 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
  +// Copyright 2003-2009 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING
   //
   // many codes are imported from the MoinMoin
  @@ -11,10 +11,10 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.477 2009/07/21 16:09:44 wkpark Exp $
  +// $Id: wiki.php,v 1.478 2009/07/29 18:07:43 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.477 $',1,-1);
  -$_release = '1.1.4-CVS';
  +$_revision = substr('$Revision: 1.478 $',1,-1);
  +$_release = '1.1.4-RC1';
   
   #ob_start("ob_gzhandler");
   
  
  
  
  1.55      +6 -2      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.54
  retrieving revision 1.55
  diff -u -r1.54 -r1.55
  --- config.php.default	18 Apr 2009 15:42:05 -0000	1.54
  +++ config.php.default	29 Jul 2009 18:07:43 -0000	1.55
  @@ -1,7 +1,7 @@
   <?php
   # This is a default 
   #
  -# $Id: config.php.default,v 1.54 2009/04/18 15:42:05 wkpark Exp $
  +# $Id: config.php.default,v 1.55 2009/07/29 18:07:43 wkpark Exp $
   #
   $sitename='UnnamedWiki'; # site name
   $data_dir= './data';
  @@ -27,6 +27,7 @@
   $use_counter= 0; # counter
   $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.
  @@ -157,7 +158,8 @@
   	'awk'=>'vim','nosyntax'=>'vim','make'=>'vim',
   );
   #$myprocessors=array('latex'=>'mimetex');
  -#$myplugins=array('FullSearch'=>'FastSearch'); # substitute action/macro
  +#$myplugins=array('fullsearch'=>'FastSearch'); # substitute action/macro
  +#$myplugins=array('swfupload'=>false); # disable some macro
   
   #$url_schemas='mms';
   #$blacklist='127.0.0.0/24:192.168.1.0/24:192.168.1.67'; # block ip
  @@ -217,6 +219,8 @@
   #$hide_actions=0; # hide actions list for anonymous user
   #$actions= array('DeletePage','LikePages','?action=Keywords Add keywords'); # customized act list
   #$info_options='ago,simple'; # default Info macro options
  +#$info_actions=array('raw'=>'source');
  +#$info_actions=array('raw'=>'source','diff'=>'diff');
   #$force_charset=1; # overriding default charset 
   #$use_titlemenu=1; # add the current pagename to the menu list
   #$submenu='SubMenu'; # dynamic submenu
  
  
  


wkpark      2009/07/30 03:07:44

  Modified:    local    textarea.js
  Log:
  misc update and tagging 1.1.4-RC1
  
  Revision  Changes    Path
  1.7       +2 -1      moniwiki/local/textarea.js
  
  Index: textarea.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/textarea.js,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- textarea.js	13 Jul 2009 15:31:04 -0000	1.6
  +++ textarea.js	29 Jul 2009 18:07:44 -0000	1.7
  @@ -1,4 +1,4 @@
  -// $Id: textarea.js,v 1.6 2009/07/13 15:31:04 wkpark Exp $
  +// $Id: textarea.js,v 1.7 2009/07/29 18:07:44 wkpark Exp $
   // $origId: textarea.js,v 1.9 2006/04/14 13:48:56 killes Exp $
   // from drupal
   // many functions are imported from drupal.js to eliminate dependency
  @@ -141,6 +141,7 @@
     //this.wrapper.style.height = this.dimensions.height + this.grippie.dimensions.height + 1 +'px';
     this.element.style.marginBottom = '0px';
     this.element.style.width = '100%';
  +  //this.element.style.marginLeft = '0'; // XXX
     this.element.style.height = this.dimensions.height +'px';
   
     // Wrap textarea
  
  
  


wkpark      2009/07/30 03:07:44

  Modified:    local/js/locale/po ko.po
  Log:
  misc update and tagging 1.1.4-RC1
  
  Revision  Changes    Path
  1.9       +82 -105   moniwiki/local/js/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/locale/po/ko.po,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- ko.po	2 Jan 2009 10:19:52 -0000	1.8
  +++ ko.po	29 Jul 2009 18:07:44 -0000	1.9
  @@ -16,204 +16,130 @@
   msgid "undefined"
   msgstr ""
   
  -#: ../../moniwyg.js:2022
  +#: ../../moniwyg.js:2057
   msgid "Save"
   msgstr "저장"
   
  -#: ../../moniwyg.js:2023
  +#: ../../moniwyg.js:2058
   msgid "Preview"
   msgstr "미리보기"
   
  -#: ../../moniwyg.js:2024
  +#: ../../moniwyg.js:2059
   msgid "Cancel"
   msgstr "취소"
   
  -#: ../../moniwyg.js:2025
  +#: ../../moniwyg.js:2060
   msgid "Bold (Ctrl+b)"
   msgstr "굵게 (Ctrl-b)"
   
  -#: ../../moniwyg.js:2026
  +#: ../../moniwyg.js:2061
   msgid "Italic (Ctrl+i)"
   msgstr "기울임 (Ctrl+i)"
   
  -#: ../../moniwyg.js:2027
  +#: ../../moniwyg.js:2062
   msgid "Underline (Ctrl+u)"
   msgstr "밑줄 (Ctrl+u)"
   
  -#: ../../moniwyg.js:2028
  +#: ../../moniwyg.js:2063
   msgid "Strike Through (Ctrl+d)"
   msgstr "삭제선 (Ctrl+d)"
   
  -#: ../../moniwyg.js:2029
  +#: ../../moniwyg.js:2064
   msgid "Horizontal Rule"
   msgstr "수평줄"
   
  -#: ../../moniwyg.js:2030
  +#: ../../moniwyg.js:2065
   msgid "Numbered List"
   msgstr "숫자 리스트"
   
  -#: ../../moniwyg.js:2031
  +#: ../../moniwyg.js:2066
   msgid "Bulleted List"
   msgstr "총알 리스트"
   
  -#: ../../moniwyg.js:2032
  +#: ../../moniwyg.js:2067
   msgid "More Indented"
   msgstr "들여쓰기"
   
  -#: ../../moniwyg.js:2033
  +#: ../../moniwyg.js:2068
   msgid "Less Indented"
   msgstr "내어쓰기"
   
  -#: ../../moniwyg.js:2034
  +#: ../../moniwyg.js:2069
   msgid "About Wikiwyg"
   msgstr "Wikiwyg는"
   
  -#: ../../moniwyg.js:2035
  +#: ../../moniwyg.js:2070
   msgid "[Style]"
   msgstr ""
   
  -#: ../../moniwyg.js:2036
  +#: ../../moniwyg.js:2071
   msgid "Normal Text"
   msgstr "일반 글씨"
   
  -#: ../../moniwyg.js:2037
  +#: ../../moniwyg.js:2072
   msgid "Preformatted"
   msgstr ""
   
  -#: ../../moniwyg.js:2038
  +#: ../../moniwyg.js:2073
   msgid "Heading 1"
   msgstr "제목 1"
   
  -#: ../../moniwyg.js:2039
  +#: ../../moniwyg.js:2074
   msgid "Heading 2"
   msgstr "제목 2"
   
  -#: ../../moniwyg.js:2040
  +#: ../../moniwyg.js:2075
   msgid "Heading 3"
   msgstr "제목 3"
   
  -#: ../../moniwyg.js:2041
  +#: ../../moniwyg.js:2076
   msgid "Heading 4"
   msgstr "제목 4"
   
  -#: ../../moniwyg.js:2042
  +#: ../../moniwyg.js:2077
   msgid "Heading 5"
   msgstr "제목 5"
   
  -#: ../../moniwyg.js:2043
  +#: ../../moniwyg.js:2078
   msgid "Heading 6"
   msgstr "제목 6"
   
  -#: ../../moniwyg.js:2044
  +#: ../../moniwyg.js:2079
   msgid "Create Link"
   msgstr "링크 생성"
   
  -#: ../../moniwyg.js:2045 ../../../plugin/EditToolbar.php:40
  +#: ../../moniwyg.js:2080
   msgid "Smiley"
   msgstr "스마일리"
   
  -#: ../../moniwyg.js:2046
  +#: ../../moniwyg.js:2081
   msgid "Remove Linkedness"
   msgstr "링크 제거"
   
  -#: ../../moniwyg.js:2047
  +#: ../../moniwyg.js:2082
   msgid "Create Table"
   msgstr "테이블"
   
  -#: ../../moniwyg.js:2048
  +#: ../../moniwyg.js:2083
   msgid "Math"
   msgstr "수식"
   
  -#: ../../moniwyg.js:2049
  +#: ../../moniwyg.js:2084
   msgid "As Is"
   msgstr "그대로"
   
  -#: ../../moniwyg.js:2050
  +#: ../../moniwyg.js:2085
   msgid "Image"
   msgstr "이미지"
   
  -#: ../../moniwyg.js:2051
  +#: ../../moniwyg.js:2086
   msgid "Media"
   msgstr "미디어"
   
  -#: ../../moniwyg.js:2052
  +#: ../../moniwyg.js:2087
   msgid "Quote"
   msgstr "인용"
   
  -#: ../../../plugin/EditToolbar.php:30
  -msgid "Bold text"
  -msgstr "굵게"
  -
  -#: ../../../plugin/EditToolbar.php:31
  -msgid "Italic text"
  -msgstr "기울임"
  -
  -#: ../../../plugin/EditToolbar.php:32
  -msgid "Internal link"
  -msgstr "내부링크"
  -
  -#: ../../../plugin/EditToolbar.php:32
  -msgid "Link title"
  -msgstr "링크 제목"
  -
  -#: ../../../plugin/EditToolbar.php:33
  -msgid "External link (remember http:// prefix)"
  -msgstr "외부 링크 (http://로 가리키는)"
  -
  -#: ../../../plugin/EditToolbar.php:33
  -msgid "http://www.example.com link title"
  -msgstr "http://www.example.com 링크 제목"
  -
  -#: ../../../plugin/EditToolbar.php:34
  -msgid "Level 2 headline"
  -msgstr "제목 2"
  -
  -#: ../../../plugin/EditToolbar.php:34
  -msgid "Headline text"
  -msgstr "제목"
  -
  -#: ../../../plugin/EditToolbar.php:35
  -msgid "Mathematical formula (LaTeX)"
  -msgstr "수식 넣기 (LaTeX)"
  -
  -#: ../../../plugin/EditToolbar.php:35
  -msgid "Insert latex formula here"
  -msgstr "LaTeX 수식을 넣으세요"
  -
  -#: ../../../plugin/EditToolbar.php:36
  -msgid "Ignore wiki formatting"
  -msgstr "위키 포맷 무시"
  -
  -#: ../../../plugin/EditToolbar.php:36
  -msgid "Insert non-formatted text here"
  -msgstr "포맷없는 텍스트를 넣으세요"
  -
  -#: ../../../plugin/EditToolbar.php:37
  -msgid "Horizontal line (use sparingly)"
  -msgstr "수평줄 (조금만 쓰세요)"
  -
  -#: ../../../plugin/EditToolbar.php:38
  -msgid "Embedded image"
  -msgstr "이미지 넣기"
  -
  -#: ../../../plugin/EditToolbar.php:39
  -msgid "Media file link"
  -msgstr "미디어 파일 링크"
  -
  -#: ../../../plugin/EditToolbar.php:41
  -msgid "Your signature with timestamp"
  -msgstr "서명 넣기 (시간과 함께)"
  -
  -#: ../../../plugin/EditToolbar.php:42
  -msgid "Click a button to get an example text"
  -msgstr "버튼을 누르면 예제 텍스트가 들어갑니다"
  -
  -#: ../../../plugin/EditToolbar.php:42
  -msgid ""
  -"Please enter the text you want to be formatted.\\\\n It will be shown in the "
  -"infobox for copy and pasting.\\\\nExample:\\\\n\\$1\\\\nwill become:\\\\n\\$2"
  -msgstr ""
  -
   #: dummy.js:1
   msgid "Continue to edit current text ?"
   msgstr "현재의 텍스트를 계속 편집하시겠습니까 ?"
  @@ -259,3 +185,54 @@
   #: dummy.js:14
   msgid "Toggle line numbers"
   msgstr "줄 번호 토글"
  +
  +#~ msgid "Bold text"
  +#~ msgstr "굵게"
  +
  +#~ msgid "Italic text"
  +#~ msgstr "기울임"
  +
  +#~ msgid "Internal link"
  +#~ msgstr "내부링크"
  +
  +#~ msgid "Link title"
  +#~ msgstr "링크 제목"
  +
  +#~ msgid "External link (remember http:// prefix)"
  +#~ msgstr "외부 링크 (http://로 가리키는)"
  +
  +#~ msgid "http://www.example.com link title"
  +#~ msgstr "http://www.example.com 링크 제목"
  +
  +#~ msgid "Level 2 headline"
  +#~ msgstr "제목 2"
  +
  +#~ msgid "Headline text"
  +#~ msgstr "제목"
  +
  +#~ msgid "Mathematical formula (LaTeX)"
  +#~ msgstr "수식 넣기 (LaTeX)"
  +
  +#~ msgid "Insert latex formula here"
  +#~ msgstr "LaTeX 수식을 넣으세요"
  +
  +#~ msgid "Ignore wiki formatting"
  +#~ msgstr "위키 포맷 무시"
  +
  +#~ msgid "Insert non-formatted text here"
  +#~ msgstr "포맷없는 텍스트를 넣으세요"
  +
  +#~ msgid "Horizontal line (use sparingly)"
  +#~ msgstr "수평줄 (조금만 쓰세요)"
  +
  +#~ msgid "Embedded image"
  +#~ msgstr "이미지 넣기"
  +
  +#~ msgid "Media file link"
  +#~ msgstr "미디어 파일 링크"
  +
  +#~ msgid "Your signature with timestamp"
  +#~ msgstr "서명 넣기 (시간과 함께)"
  +
  +#~ msgid "Click a button to get an example text"
  +#~ msgstr "버튼을 누르면 예제 텍스트가 들어갑니다"
  
  
  


wkpark      2009/07/30 03:21:56

  Modified:    data/dict josa.txt.utf-8
  Log:
  update
  
  Revision  Changes    Path
  1.2       +45 -45    moniwiki/data/dict/josa.txt.utf-8
  
  Index: josa.txt.utf-8
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/data/dict/josa.txt.utf-8,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- josa.txt.utf-8	18 Apr 2008 21:46:16 -0000	1.1
  +++ josa.txt.utf-8	29 Jul 2009 18:21:56 -0000	1.2
  @@ -310,51 +310,51 @@
   와처럼
   와한테
   요
  -으로
  -으로가
  -으로까지
  -으로까지만은
  -으로나
  -으로나든지
  -으로는
  -으로도
  -으로든지
  -으로라도
  -으로랑
  -으로만
  -으로만은
  -으로부터
  -으로부터는
  -으로부터는커녕
  -으로부터도
  -으로부터만
  -으로부터만은
  -으로부터서는
  -으로부터서도
  -으로부터서만
  -으로부터의
  -으로서
  -으로서가
  -으로서나
  -으로서는
  -으로서도
  -으로서든지
  -으로서라도
  -으로서만
  -으로서만도
  -으로서만은
  -으로서야
  -으로서의
  -으로선
  -으로써
  -으로써나
  -으로써는
  -으로써라도
  -으로써만
  -으로써야
  -으로야
  -으로의
  -으론
  +으*로
  +으*로가
  +으*로까지
  +으*로까지만은
  +으*로나
  +으*로나든지
  +으*로는
  +으*로도
  +으*로든지
  +으*로라도
  +으*로랑
  +으*로만
  +으*로만은
  +으*로부터
  +으*로부터는
  +으*로부터는커녕
  +으*로부터도
  +으*로부터만
  +으*로부터만은
  +으*로부터서는
  +으*로부터서도
  +으*로부터서만
  +으*로부터의
  +으*로서
  +으*로서가
  +으*로서나
  +으*로서는
  +으*로서도
  +으*로서든지
  +으*로서라도
  +으*로서만
  +으*로서만도
  +으*로서만은
  +으*로서야
  +으*로서의
  +으*로선
  +으*로써
  +으*로써나
  +으*로써는
  +으*로써라도
  +으*로써만
  +으*로써야
  +으*로야
  +으*로의
  +으*론
   은
   은커녕
   을
  
  
  


wkpark      2009/07/30 03:22:34

  Modified:    css      _base.css
  Log:
  update
  
  Revision  Changes    Path
  1.31      +2 -0      moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- _base.css	22 Jul 2009 09:05:36 -0000	1.30
  +++ _base.css	29 Jul 2009 18:22:34 -0000	1.31
  @@ -95,6 +95,8 @@
   input { font-size:1em; padding:2px; /* for IE */ }
   button { font-size:1em; padding:2px; /* for IE */ }
   
  +label { padding-right:3px; }
  +
   #editor_info ul {list-style:none; margin:2px 0 2px 0; padding:0;}
   #editor_info li {padding:2px;}
   
  
  
  


wkpark      2009/07/30 09:28:48

  Modified:    .        wiki.php
  Log:
  support $_newtheme == 2 to insert html headers into the theme.
  
  Revision  Changes    Path
  1.479     +68 -33    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.478
  retrieving revision 1.479
  diff -u -r1.478 -r1.479
  --- wiki.php	29 Jul 2009 18:07:43 -0000	1.478
  +++ wiki.php	30 Jul 2009 00:28:47 -0000	1.479
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.478 2009/07/29 18:07:43 wkpark Exp $
  +// $Id: wiki.php,v 1.479 2009/07/30 00:28:47 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.478 $',1,-1);
  +$_revision = substr('$Revision: 1.479 $',1,-1);
   $_release = '1.1.4-RC1';
   
   #ob_start("ob_gzhandler");
  @@ -233,13 +233,13 @@
     }
   }
   
  -function kbd_handler() {
  +function kbd_handler($prefix = '') {
     global $Config;
   
     if (!$Config['kbd_script']) return '';
  -  $prefix=get_scriptname();
  +  $prefix ? null : $prefix = get_scriptname();
     $sep= $Config['query_prefix'];
  -  print <<<EOS
  +  return <<<EOS
   <script type="text/javascript">
   /*<![CDATA[*/
   url_prefix="$prefix";
  @@ -4244,7 +4244,7 @@
         $options['redirect']=1;
         $this->pi['#redirect']='';
         do_goto($this,$options);
  -      return;
  +      return true;
       }
       $header = !empty($header) ? $header:(!empty($options['header']) ? $options['header']:null) ;
       #print_r($header);
  @@ -4273,7 +4273,7 @@
   #    if (!$plain)
   #      $this->header('Content-type: '.$content_type);
   
  -    if ($options['action_mode']=='ajax') return;
  +    if ($options['action_mode']=='ajax') return true;
   
       if (isset($this->pi['#noindex'])) {
         $metatags='<meta name="robots" content="noindex,nofollow" />'."\n";
  @@ -4350,38 +4350,41 @@
             htmlspecialchars($options['title']);
         }
         if (empty($options['css_url'])) $options['css_url']=$DBInfo->css_url;
  -      if (!$this->pi['#nodtd']) print $DBInfo->doctype;
  -      print "<head>\n";
  +      if (!$this->pi['#nodtd'] and !isset($options['retstr']) and $this->_newtheme != 2) echo $DBInfo->doctype;
  +      if ((isset($this->_newtheme) and $this->_newtheme == 2) or isset($options['retstr']))
  +        ob_start();
  +      else
  +        echo "<head>\n";
   
  -      print '<meta http-equiv="Content-Type" content="'.$content_type.
  +      echo '<meta http-equiv="Content-Type" content="'.$content_type.
           ';charset='.$DBInfo->charset."\" />\n";
  -      print <<<JSHEAD
  +      echo <<<JSHEAD
   <script type="text/javascript">
   /*<![CDATA[*/
   _url_prefix="$DBInfo->url_prefix";
   /*]]>*/
   </script>
   JSHEAD;
  -      print $metatags.$js."\n";
  -      print $this->get_javascripts();
  -      print $keywords;
  -      print "  <title>$DBInfo->sitename: ".$options['title']."</title>\n";
  +      echo $metatags.$js."\n";
  +      echo $this->get_javascripts();
  +      echo $keywords;
  +      echo "  <title>$DBInfo->sitename: ".$options['title']."</title>\n";
         if ($upper)
  -        print '  <link rel="Up" href="'.$this->link_url($upper)."\" />\n";
  +        echo '  <link rel="Up" href="'.$this->link_url($upper)."\" />\n";
         $raw_url=$this->link_url($this->page->urlname,"?action=raw");
         $print_url=$this->link_url($this->page->urlname,"?action=print");
  -      print '  <link rel="Alternate" title="Wiki Markup" href="'.
  +      echo '  <link rel="Alternate" title="Wiki Markup" href="'.
           $raw_url."\" />\n";
  -      print '  <link rel="Alternate" media="print" title="Print View" href="'.
  +      echo '  <link rel="Alternate" media="print" title="Print View" href="'.
           $print_url."\" />\n";
         if ($options['css_url']) {
  -        print '  <link rel="stylesheet" type="text/css" '.$media.' href="'.
  +        echo '  <link rel="stylesheet" type="text/css" '.$media.' href="'.
             $options['css_url']."\" />\n";
           if (file_exists('./css/_user.css'))
  -          print '  <link rel="stylesheet" media="screen" type="text/css" href="'.
  +          echo '  <link rel="stylesheet" media="screen" type="text/css" href="'.
               $DBInfo->url_prefix."/css/_user.css\" />\n";
   # default CSS
  -      } else print <<<EOS
  +      } else echo <<<EOS
   <style type="text/css">
   <!--
   body {font-family:Georgia,Verdana,Lucida,sans-serif; background-color:#FFF9F9;}
  @@ -4478,6 +4481,19 @@
   EOS;
   
       }
  +
  +    echo kbd_handler(!empty($options['prefix']) ? $options['prefix'] : '');
  +
  +    if ((isset($this->_newtheme) and $this->_newtheme == 2) or isset($options['retstr'])) {
  +      $ret = ob_get_contents();
  +      ob_end_clean();
  +      if (isset($options['retstr']))
  +        $options['retstr'] = $ret;
  +      $this->header_html = $ret;
  +    } else {
  +      echo "</head>\n";
  +    }
  +    return true;
     }
   
     function get_actions($args='',$options) {
  @@ -4586,7 +4602,8 @@
         else print "<div id='wikiBanner'>$banner</div>\n";
         print "\n</div>\n";
       }
  -    print "</body>\n</html>\n";
  +    if (empty($this->_newtheme) or $this->_newtheme != 2)
  +      print "</body>\n</html>\n";
       #include "prof_results.php";
     }
   
  @@ -4854,13 +4871,17 @@
       $this->_vars['menu']=$menu;
       $this->_vars['upper_icon']=$upper_icon;
       $this->_vars['home']=$home;
  +    if (!empty($options['header']))
  +      $this->_vars['header'] = $header = $options['header'];
  +    else if (isset($this->_newtheme) and $this->_newtheme == 2 and !empty($this->header_html))
  +      $this->_vars['header'] = $header = $this->header_html;
   
       # print the title
  -    kbd_handler();
   
  -    if (empty($this->newtheme) or $this->newtheme != 2) {
  -      print "</head>\n<body $options[attr]>\n";
  -      print '<div><a id="top" name="top" accesskey="t"></a></div>'."\n";
  +    if (empty($this->_newtheme) or $this->_newtheme != 2) {
  +      if ($this->_newtheme != 2)
  +        echo "<body $options[attr]>\n";
  +      echo '<div><a id="top" name="top" accesskey="t"></a></div>'."\n";
       }
       #
       if (file_exists($this->themedir."/header.php")) {
  @@ -5297,9 +5318,14 @@
   function wiki_main($options) {
     global $DBInfo,$Config;
     $pagename=$options['pagename'] ? $options['pagename']: $DBInfo->frontpage;
  -  
  +
     # get primary variables
     if ($_SERVER['REQUEST_METHOD']=="POST") {
  +    if (isset($_POST['retstr']))
  +      unset($_POST['retstr']);
  +    if (isset($_POST['header']))
  +      unset($_POST['header']);
  +
       # hack for TWiki plugin
       if ($_FILES['filepath']['name']) $action='draw';
       if ($GLOBALS['HTTP_RAW_POST_DATA']) {
  @@ -5321,6 +5347,11 @@
       $goto=$_POST['goto'];
       $popup=$_POST['popup'];
     } else if ($_SERVER['REQUEST_METHOD']=="GET") {
  +    if (isset($_GET['retstr']))
  +      unset($_GET['retstr']);
  +    if (isset($_POST['header']))
  +      unset($_POST['header']);
  +
       $action=$_GET['action'];
       $value=$_GET['value'];
       $goto=$_GET['goto'];
  @@ -5380,7 +5411,7 @@
         $options['title']=_("You are in the black list");
         $options['msg']=_("Please contact WikiMasters");
         do_invalid($formatter,$options);
  -      return;
  +      return false;
       }
     }
     if (!empty($DBInfo->kiwirian)) {
  @@ -5391,7 +5422,7 @@
         $options['title']=_("You are blocked in this wiki");
         $options['msg']=_("Please contact WikiMasters");
         do_invalid($formatter,$options);
  -      return;
  +      return false;
       }
     }
   
  @@ -5399,13 +5430,15 @@
       if ($value) { # ?value=Hello
         $options['value']=$value;
         do_goto($formatter,$options);
  -      return;
  +      return true;
       } else if ($goto) { # ?goto=Hello
         $options['value']=$goto;
         do_goto($formatter,$options);
  -      return;
  +      return true;
       }
       if (!$page->exists()) {
  +      if (isset($options['retstr']))
  +        return false;
         if ($DBInfo->auto_search && $action!='show' && $p=getPlugin($DBInfo->auto_search)) {
           $action=$DBInfo->auto_search;
           break;
  @@ -5416,7 +5449,7 @@
         if (!empty($options['is_robot']) or $Config['nofancy_404']) {
           $formatter->header($msg_404);
           print '<html><head></head><body><h1>'.$msg_404.'</h1></body></html>';
  -        return;
  +        return true;
         }
         $formatter->send_header($msg_404,$options);
   
  @@ -5497,7 +5530,8 @@
       if ($DBInfo->body_attr)
         $options['attr']=$DBInfo->body_attr;
   
  -    $formatter->send_header("",$options);
  +    $ret = $formatter->send_header('', $options);
  +
       if (empty($options['is_robot'])) {
         $formatter->send_title("","",$options);
       }
  @@ -5684,6 +5718,7 @@
           $options=array_merge($_POST,$options);
         else
           $options=array_merge($_GET,$options);
  +
         call_user_func("do_$plugin",$formatter,$options);
         return;
       } else if (function_exists("do_post_".$plugin)) {
  
  
  


wkpark      2009/08/07 23:12:29

  Modified:    plugin   UploadForm.php
  Log:
  hide or not the submit btn of the upload form
  
  Revision  Changes    Path
  1.11      +35 -8     moniwiki/plugin/UploadForm.php
  
  Index: UploadForm.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadForm.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- UploadForm.php	15 Jul 2009 06:08:17 -0000	1.10
  +++ UploadForm.php	7 Aug 2009 14:12:29 -0000	1.11
  @@ -5,13 +5,14 @@
   //
   // Usage: [[UploadForm]]
   //
  -// $Id: UploadForm.php,v 1.10 2009/07/15 06:08:17 wkpark Exp $
  +// $Id: UploadForm.php,v 1.11 2009/08/07 14:12:29 wkpark Exp $
   
   function macro_UploadForm($formatter,$value) {
       global $DBInfo;
       static $id=1;
   
       $use_fake = 1;
  +    $hide_btn = 1;
   
       $msg = _("Choose File");
       if ($id==1)
  @@ -53,6 +54,13 @@
       newInput.setAttribute('style', 'font-size:14px;position:absolute;width:65px;right:0;padding:0;filter:alpha(opacity=0);opacity:0;cursor:pointer;');
   
   EOF;
  +    if ($id == 1 and $hide_btn)
  +        $script .=<<<EOF
  +    var btn = document.getElementById('button-' + id);
  +    btn.setAttribute('style','display:inline-block;');
  +    btn.style.display = 'inline-block';
  +
  +EOF;
       if ($id == 1 and $use_fake)
           $script.=<<<EOF
       newInput.className = 'form-file';
  @@ -67,7 +75,7 @@
       fakeInp.setAttribute('readonly', 'true');
       if (document.all)
           fakeInp.readOnly = true; // for IE
  -    fakeInp.onclick = function() {if (this.value) { this.value = ''; newInput.value = ''; } else {delRow(this);} };
  +    fakeInp.onclick = function() {if (this.value) { this.value = ''; newInput.value = ''; } else {delRow(id,this);} };
   
       var addbtn = document.createElement('button');
       var span2 = document.createElement('span');
  @@ -92,8 +100,27 @@
           $script .=<<<EOF
   }
   
  -function delRow(obj) {
  -    obj.parentNode.parentNode.parentNode.removeChild(obj.parentNode.parentNode);
  +function delRow(id,obj) {
  +    obj.parentNode.parentNode.parentNode.parentNode.removeChild(obj.parentNode.parentNode.parentNode);
  +
  +EOF;
  +    if ($id == 1 and $hide_btn)
  +        $script .=<<<EOF
  +    var form = document.getElementById("form-" + id);
  +    var inputs = form.getElementsByTagName('input');
  +    var mysubmit = null;
  +    for (i = 0; i < inputs.length; i++) {
  +        if (inputs[i].type == 'file') {
  +            return;
  +        }
  +    }
  +    var btn = document.getElementById('button-' + id);
  +    btn.style.display = 'none';
  +
  +EOF;
  +    if ($id == 1)
  +        $script .=<<<EOF
  +    
   }
   
   function check_attach(id) {
  @@ -159,9 +186,6 @@
         <td>
           <table cellspacing="0" cellpadding="0" border="0">
             <tbody id="upload$id">
  -            <tr>
  -              <td></td>
  -            </tr>
             </tbody>
           </table>
         </td>
  @@ -172,7 +196,7 @@
     <button type='button' class='add-file' onclick="addRow('upload$id')"><span>$msg2</span></button>
     <input type="hidden" name="uploadid" value="upload$id" />
     <input type="hidden" name="popup" value="1" />
  -  <button type="submit" class='upload-file' onclick="check_attach('upload$id')" name="upload"><span>$msg3</span></button>
  +  <button type="submit" class='upload-file' id='button-upload$id' onclick="check_attach('upload$id')" name="upload"><span>$msg3</span></button>
     <!-- <input type="reset" name="reset" value="$msg4" /> -->
         </div>
         </td>
  @@ -182,6 +206,9 @@
     </form>
   <script type="text/javascript">
   /*<![CDATA[*/
  +(function () {
  +    var btn = document.getElementById('button-upload$id'); btn.style.display = 'none';
  +})();
   //addRow('upload$id');
   /*]]>*/
   </script>
  
  
  


wkpark      2009/08/07 23:13:58

  Modified:    lib      difflib.php
  Log:
  fix for "~done" line
  
  Revision  Changes    Path
  1.13      +2 -2      moniwiki/lib/difflib.php
  
  Index: difflib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/difflib.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- difflib.php	10 Apr 2009 02:22:48 -0000	1.12
  +++ difflib.php	7 Aug 2009 14:13:58 -0000	1.13
  @@ -11,7 +11,7 @@
   //
   // FIXME: possibly remove assert()'s for production version?
   //
  -// $Id: difflib.php,v 1.12 2009/04/10 02:22:48 wkpark Exp $
  +// $Id: difflib.php,v 1.13 2009/08/07 14:13:58 wkpark Exp $
   // original Id: difflib.php,v 1.5 2002/01/21 06:55:47 dairiki Exp
   // PHP3 does not have assert()
   define('USE_ASSERTS', function_exists('assert'));
  @@ -877,7 +877,7 @@
           $this->_flushGroup($new_tag);
           $tag_open = '';
           $tag_close = '';
  -        if ($this->_tag) {
  +        if ($this->_tag and $this->_tag != '~done') {
               $tag_open = str_replace(array('ins','del'),array('div','div'),$this->_tag_open[$this->_tag]);
               $tag_close = str_replace(array('ins','del'),array('div','div'),$this->_tag_close[$this->_tag]);
           }
  
  
  


wkpark      2009/08/10 20:14:47

  Modified:    .        wiki.php
  Log:
  revert fix processor_repl() / RC2 tag
  
  Revision  Changes    Path
  1.480     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.479
  retrieving revision 1.480
  diff -u -r1.479 -r1.480
  --- wiki.php	30 Jul 2009 00:28:47 -0000	1.479
  +++ wiki.php	10 Aug 2009 11:14:47 -0000	1.480
  @@ -11,10 +11,10 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.479 2009/07/30 00:28:47 wkpark Exp $
  +// $Id: wiki.php,v 1.480 2009/08/10 11:14:47 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.479 $',1,-1);
  -$_release = '1.1.4-RC1';
  +$_revision = substr('$Revision: 1.480 $',1,-1);
  +$_release = '1.1.4-RC2';
   
   #ob_start("ob_gzhandler");
   
  @@ -2869,7 +2869,7 @@
       return $bra.$ret.$ket;
     }
   
  -  function processor_repl($processor,$value,&$options) {
  +  function processor_repl($processor,$value, $options = false) {
       $bra='';$ket='';
       if (!empty($this->wikimarkup) and empty($options['nomarkup'])) {
         if ($options['type'] == 'inline') {
  
  
  


wkpark      2009/08/10 20:17:00

  Removed:     imgs     egg.png
  Log:
  remove useless img


wkpark      2009/08/13 18:05:21

  Modified:    .        wiki.php wikilib.php
  Log:
  remove table attribute to style tables.
  fix sidebar auto-hide facility
  
  Revision  Changes    Path
  1.481     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.480
  retrieving revision 1.481
  diff -u -r1.480 -r1.481
  --- wiki.php	10 Aug 2009 11:14:47 -0000	1.480
  +++ wiki.php	13 Aug 2009 09:05:20 -0000	1.481
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.480 2009/08/10 11:14:47 wkpark Exp $
  +// $Id: wiki.php,v 1.481 2009/08/13 09:05:20 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.480 $',1,-1);
  +$_revision = substr('$Revision: 1.481 $',1,-1);
   $_release = '1.1.4-RC2';
   
   #ob_start("ob_gzhandler");
  @@ -3278,7 +3278,7 @@
         foreach ($myattr as $k=>$v) $my.=$k.'="'.$v.'" ';
       }
       else $my='class="wiki"';
  -    return "<table cellpadding='3' cellspacing='2' $my>\n";
  +    return "<table cellspacing='0' $my>\n";
     }
   
     function _purple() {
  
  
  
  1.278     +5 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.277
  retrieving revision 1.278
  diff -u -r1.277 -r1.278
  --- wikilib.php	29 Jul 2009 16:22:37 -0000	1.277
  +++ wikilib.php	13 Aug 2009 09:05:20 -0000	1.278
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.277 2009/07/29 16:22:37 wkpark Exp $
  +// $Id: wikilib.php,v 1.278 2009/08/13 09:05:20 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -692,13 +692,15 @@
     }
     $js = '';
     if (empty($DBInfo->edit_with_sidebar))
  -    $sidebar_style="#wikiSideMenuContainer { display: none; }\n";
  +    $sidebar_style="#wikiSideMenu { display: none; }\n";
     if ($has_form) {
       $js=<<<JS
   <style type='text/css'>
  +/*<![CDATA[*/
   #mycontent button.save-button { display: none; }
   button.save-button { display: none; }
   $sidebar_style
  +/*]]>*/
   </style>
   <script type='text/javascript'>
   /*<![CDATA[*/
  @@ -1096,7 +1098,7 @@
   <div id="editor_area">
   $formh
   <div class="resizable-textarea" style='position:relative'><!-- IE hack -->
  -<textarea id="content" wrap="virtual" name="savetext" tabindex="1"
  +<textarea id="wikicontent" wrap="virtual" name="savetext" tabindex="1"
    rows="$rows" cols="$cols" class="wiki resizable">$raw_body</textarea>
   $captcha
   </div>
  
  
  


wkpark      2009/08/14 20:04:58

  Modified:    .        wiki.php
  Log:
  fixed r1.479 problem.
  
  Revision  Changes    Path
  1.482     +12 -13    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.481
  retrieving revision 1.482
  diff -u -r1.481 -r1.482
  --- wiki.php	13 Aug 2009 09:05:20 -0000	1.481
  +++ wiki.php	14 Aug 2009 11:04:58 -0000	1.482
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.481 2009/08/13 09:05:20 wkpark Exp $
  +// $Id: wiki.php,v 1.482 2009/08/14 11:04:58 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.481 $',1,-1);
  +$_revision = substr('$Revision: 1.482 $',1,-1);
   $_release = '1.1.4-RC2';
   
   #ob_start("ob_gzhandler");
  @@ -4480,18 +4480,17 @@
   </style>
   EOS;
   
  -    }
  -
  -    echo kbd_handler(!empty($options['prefix']) ? $options['prefix'] : '');
  +      echo kbd_handler(!empty($options['prefix']) ? $options['prefix'] : '');
   
  -    if ((isset($this->_newtheme) and $this->_newtheme == 2) or isset($options['retstr'])) {
  -      $ret = ob_get_contents();
  -      ob_end_clean();
  -      if (isset($options['retstr']))
  -        $options['retstr'] = $ret;
  -      $this->header_html = $ret;
  -    } else {
  -      echo "</head>\n";
  +      if ((isset($this->_newtheme) and $this->_newtheme == 2) or isset($options['retstr'])) {
  +        $ret = ob_get_contents();
  +        ob_end_clean();
  +        if (isset($options['retstr']))
  +          $options['retstr'] = $ret;
  +        $this->header_html = $ret;
  +      } else {
  +        echo "</head>\n";
  +      }
       }
       return true;
     }
  
  
  


wkpark      2009/08/14 20:06:03

  Modified:    css      _base.css
  Log:
  remove some basic css styling
  
  Revision  Changes    Path
  1.32      +1 -5      moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- _base.css	29 Jul 2009 18:22:34 -0000	1.31
  +++ _base.css	14 Aug 2009 11:06:03 -0000	1.32
  @@ -139,10 +139,6 @@
     padding:3px;
   }
   
  -h1,h2,h3,h4,h5 {
  -  font-family:sans-serif;
  -}
  -
   div.diff-added, tr.diff-added {
     background-color:#ccffcc;
   }
  @@ -255,7 +251,7 @@
   #wikiHeader a:visited {color:#505050;}
   
   .wikiTitle {
  -  font-family:Trebuchet MS,Georgia,Verdana,sans-serif;
  +  font-family:sans-serif;
     font-size:28px;
     font-weight:bold;
     display:block;
  
  
  


wkpark      2009/08/17 17:47:04

  Modified:    css      _base.css
  Log:
  _base.css: remove anonymous styling
  UploadForm : cleanup
  nforge.php : fixed is_protected() method
  
  Revision  Changes    Path
  1.33      +1 -4      moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- _base.css	14 Aug 2009 11:06:03 -0000	1.32
  +++ _base.css	17 Aug 2009 08:47:04 -0000	1.33
  @@ -90,10 +90,7 @@
     font-size:14px; width:100%;
   }
   
  -form { margin:0; padding:0;/* for IE */}
  -
  -input { font-size:1em; padding:2px; /* for IE */ }
  -button { font-size:1em; padding:2px; /* for IE */ }
  +form, input, button { margin:0; padding:0;/* for IE */}
   
   label { padding-right:3px; }
   
  
  
  


wkpark      2009/08/17 17:47:04

  Modified:    plugin   UploadForm.php
  Log:
  _base.css: remove anonymous styling
  UploadForm : cleanup
  nforge.php : fixed is_protected() method
  
  Revision  Changes    Path
  1.12      +5 -2      moniwiki/plugin/UploadForm.php
  
  Index: UploadForm.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadForm.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- UploadForm.php	7 Aug 2009 14:12:29 -0000	1.11
  +++ UploadForm.php	17 Aug 2009 08:47:04 -0000	1.12
  @@ -5,7 +5,7 @@
   //
   // Usage: [[UploadForm]]
   //
  -// $Id: UploadForm.php,v 1.11 2009/08/07 14:12:29 wkpark Exp $
  +// $Id: UploadForm.php,v 1.12 2009/08/17 08:47:04 wkpark Exp $
   
   function macro_UploadForm($formatter,$value) {
       global $DBInfo;
  @@ -51,7 +51,9 @@
       newInput.setAttribute('type', 'file');
       newInput.setAttribute('name', 'upfile[]');
       newInput.setAttribute('size', size);
  -    newInput.setAttribute('style', 'font-size:14px;position:absolute;width:65px;right:0;padding:0;filter:alpha(opacity=0);opacity:0;cursor:pointer;');
  +    newInput.style.position = 'absolute'; // IE
  +    newInput.style.left = -8; // IE
  +    newInput.setAttribute('style', 'position:absolute;left:-5;');
   
   EOF;
       if ($id == 1 and $hide_btn)
  @@ -68,6 +70,7 @@
       newInput.onchange = function() { fakeInp.value = this.value.replace(/^.*[\\\\]/g, '');};
   
       var span = document.createElement('span');
  +    span.style.position='relative';
       var fakeInp = document.createElement('input');
       fakeInp.setAttribute('type', 'text');
       fakeInp.setAttribute('size', size);
  
  
  


wkpark      2009/08/17 17:47:05

  Modified:    plugin/security nforge.php
  Log:
  _base.css: remove anonymous styling
  UploadForm : cleanup
  nforge.php : fixed is_protected() method
  
  Revision  Changes    Path
  1.4       +4 -5      moniwiki/plugin/security/nforge.php
  
  Index: nforge.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/nforge.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- nforge.php	29 Apr 2009 23:15:11 -0000	1.3
  +++ nforge.php	17 Aug 2009 08:47:05 -0000	1.4
  @@ -4,7 +4,7 @@
   #
   # based on needtologin security plugin.
   #
  -# $Id: nforge.php,v 1.3 2009/04/29 23:15:11 wkpark Exp $
  +# $Id: nforge.php,v 1.4 2009/08/17 08:47:05 wkpark Exp $
   
   class Security_nforge extends Security {
     var $DB;
  @@ -73,10 +73,9 @@
     function is_protected($action="read",&$options) {
       $perm =& $this->DB->group->getPermission( session_get_user() );
       // check if the user is docman's admin
  -    if (!$perm || $perm->isError() || !$perm->isDocEditor() || !$perm->isAdmin()) {
  -      return 1;
  -    } else {
  -      return 0;
  +    if ($perm and !$perm->isError()) {
  +      if ($perm->isDocEditor() || $perm->isAdmin())
  +        return 0;
       }
   
       # password protected POST actions
  
  
  


wkpark      2009/08/19 14:29:37

  Modified:    .        wiki.php wikilib.php
  Log:
  version 1.1.4-RC3
  * set $title instead of $msg with the savepage action
  * add $use_home_url option. (in the nforge user plugin)
  * wikibits.js : replace = 3 option to append at the current cur pos.
  * change some input submit btns to buttons for css styling
  * add some gettext msgs.
  * show result msgs in the UploadForm macro with the iframe upload hack.
  
  Revision  Changes    Path
  1.483     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.482
  retrieving revision 1.483
  diff -u -r1.482 -r1.483
  --- wiki.php	14 Aug 2009 11:04:58 -0000	1.482
  +++ wiki.php	19 Aug 2009 05:29:37 -0000	1.483
  @@ -11,10 +11,10 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.482 2009/08/14 11:04:58 wkpark Exp $
  +// $Id: wiki.php,v 1.483 2009/08/19 05:29:37 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.482 $',1,-1);
  -$_release = '1.1.4-RC2';
  +$_revision = substr('$Revision: 1.483 $',1,-1);
  +$_release = '1.1.4-RC3';
   
   #ob_start("ob_gzhandler");
   
  
  
  
  1.279     +7 -6      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.278
  retrieving revision 1.279
  diff -u -r1.278 -r1.279
  --- wikilib.php	13 Aug 2009 09:05:20 -0000	1.278
  +++ wikilib.php	19 Aug 2009 05:29:37 -0000	1.279
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.278 2009/08/13 09:05:20 wkpark Exp $
  +// $Id: wikilib.php,v 1.279 2009/08/19 05:29:37 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -399,7 +399,7 @@
     }
   
     function saveUser($user,$options=array()) {
  -    $config=array("css_url","datatime_fmt","email","bookmark","language",
  +    $config=array("css_url","datatime_fmt","email","bookmark","language","home",
                     "name","nick","password","wikiname_add_spaces","subscribed_pages",
                     "scrapped_pages","quicklinks","theme","ticket","eticket",
   	  	  "tz_offset","npassword","nticket","idtype");
  @@ -1849,10 +1849,11 @@
         }
       }
         
  -    if ($ret == -1)
  -      $options['msg'].=sprintf(_("%s is not editable"),$formatter->link_tag($formatter->page->urlname,"",htmlspecialchars($options['page'])));
  -    else
  -      $options['msg'].=sprintf(_("%s is saved"),$formatter->link_tag($formatter->page->urlname,"?action=show",htmlspecialchars($options['page'])));
  +    if ($ret == -1) {
  +      $options['title'] = sprintf(_("%s is not editable"),$formatter->link_tag($formatter->page->urlname,"",htmlspecialchars($options['page'])));
  +    } else {
  +      $options['title'] = sprintf(_("%s is saved"),$formatter->link_tag($formatter->page->urlname,"?action=show",htmlspecialchars($options['page'])));
  +    }
   
       $myrefresh='';
       if ($DBInfo->use_save_refresh) {
  
  
  


wkpark      2009/08/19 14:29:37

  Modified:    local    wikibits.js
  Log:
  version 1.1.4-RC3
  * set $title instead of $msg with the savepage action
  * add $use_home_url option. (in the nforge user plugin)
  * wikibits.js : replace = 3 option to append at the current cur pos.
  * change some input submit btns to buttons for css styling
  * add some gettext msgs.
  * show result msgs in the UploadForm macro with the iframe upload hack.
  
  Revision  Changes    Path
  1.19      +11 -3     moniwiki/local/wikibits.js
  
  Index: wikibits.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/wikibits.js,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- wikibits.js	17 Apr 2009 17:26:33 -0000	1.18
  +++ wikibits.js	19 Aug 2009 05:29:37 -0000	1.19
  @@ -1,7 +1,7 @@
   // from the MediaWiki
   // simplified for the MoniWiki by wkpark
   //
  -// $Id: wikibits.js,v 1.18 2009/04/17 17:26:33 wkpark Exp $
  +// $Id: wikibits.js,v 1.19 2009/08/19 05:29:37 wkpark Exp $
   //
   // Wikipedia JavaScript support functions
   // if this is true, the toolbar will no longer overwrite the infobox when you move the mouse over individual items
  @@ -264,9 +264,14 @@
   
   		range.text = subst + endText;
   
  -		range.setEndPoint('StartToStart', r);
  +		if (replace == 3 ) {
  +			range.setEndPoint('StartToEnd', r);
  +		} else {
  +			range.setEndPoint('StartToStart', r);
  +		}
   		txtarea.focus();
  -		range.select();
  +		if (replace != 3 )
  +			range.select();
   	// Mozilla
   	} else if(txtarea.selectionStart || txtarea.selectionStart == '0') {
   		var startPos = txtarea.selectionStart;
  @@ -307,6 +312,9 @@
   		txtarea.focus();
   		//set new selection
   		txtarea.selectionStart = startPos;
  +		if (replace == 3 ) { // append
  +			txtarea.selectionStart = startPos + subst.length;
  +		}
   		txtarea.selectionEnd = startPos+subst.length;
   
   		txtarea.scrollTop = scrollTop;
  
  
  


wkpark      2009/08/19 14:29:37

  Modified:    local/SWFUpload swfupload.css
  Log:
  version 1.1.4-RC3
  * set $title instead of $msg with the savepage action
  * add $use_home_url option. (in the nforge user plugin)
  * wikibits.js : replace = 3 option to append at the current cur pos.
  * change some input submit btns to buttons for css styling
  * add some gettext msgs.
  * show result msgs in the UploadForm macro with the iframe upload hack.
  
  Revision  Changes    Path
  1.8       +1 -1      moniwiki/local/SWFUpload/swfupload.css
  
  Index: swfupload.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/SWFUpload/swfupload.css,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- swfupload.css	13 Jul 2009 16:18:20 -0000	1.7
  +++ swfupload.css	19 Aug 2009 05:29:37 -0000	1.8
  @@ -119,7 +119,7 @@
     border: 2px solid #65b4db;
   }
   
  -.selected {
  +.fileList .selected {
     border: 2px solid #0084c4;
     background-image: url(images/gray.gif);
     filter:alpha(opacity=60);
  
  
  


wkpark      2009/08/19 14:29:38

  Modified:    plugin   Info.php RecentChanges.php SWFUpload.php
                        UploadFile.php UploadForm.php bookmark.php
  Log:
  version 1.1.4-RC3
  * set $title instead of $msg with the savepage action
  * add $use_home_url option. (in the nforge user plugin)
  * wikibits.js : replace = 3 option to append at the current cur pos.
  * change some input submit btns to buttons for css styling
  * add some gettext msgs.
  * show result msgs in the UploadForm macro with the iframe upload hack.
  
  Revision  Changes    Path
  1.25      +2 -2      moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Info.php,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- Info.php	29 Jul 2009 16:21:36 -0000	1.24
  +++ Info.php	19 Aug 2009 05:29:37 -0000	1.25
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Info plugin for the MoniWiki
   //
  -// $Id: Info.php,v 1.24 2009/07/29 16:21:36 wkpark Exp $
  +// $Id: Info.php,v 1.25 2009/08/19 05:29:37 wkpark Exp $
   
   function _parse_rlog($formatter,$log,$options=array()) {
     global $DBInfo;
  @@ -65,7 +65,7 @@
         else {$state=1; continue;}
       }
       if ($state==1 and $ok==1) {
  -      $lnk=$formatter->link_to("?action=info&all=1",_("Show all revisions"));
  +      $lnk=$formatter->link_to("?action=info&all=1",'<span>'._("Show all revisions").'</span>',' class="button small"');
         $out.='<tr><td colspan="2"></td><th colspan="4">'.$lnk.'</th></tr>';
         break;
       }
  
  
  
  1.32      +4 -2      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- RecentChanges.php	29 Jul 2009 16:21:36 -0000	1.31
  +++ RecentChanges.php	19 Aug 2009 05:29:37 -0000	1.32
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.31 2009/07/29 16:21:36 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.32 2009/08/19 05:29:37 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     $options['trail']='';
  @@ -315,7 +315,9 @@
             if (($p = strpos($uid,' '))!==false)
               $uid= substr($uid, 0, $p);
             $u = $DBInfo->udb->getUser($uid);
  -          if (!empty($u->info['nick'])) {
  +          if (!empty($u->info['home'])) {
  +            $user = $formatter->link_repl('['.$u->info['home'].' '.$u->info['nick'].']');
  +          } else if (!empty($u->info['nick'])) {
               $user = $formatter->link_repl('[wiki:'.$uid.' '.$u->info['nick'].']');
             }
             $users[$ouser] = $user;
  
  
  
  1.18      +4 -4      moniwiki/plugin/SWFUpload.php
  
  Index: SWFUpload.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SWFUpload.php,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- SWFUpload.php	27 Dec 2008 12:02:21 -0000	1.17
  +++ SWFUpload.php	19 Aug 2009 05:29:38 -0000	1.18
  @@ -8,12 +8,12 @@
   // Name: SWF Upload
   // Description: SWF Upload Plugin
   // URL: http://labb.dev.mammon.se/swfupload/ MoniWikiDev:SWFUpload
  -// Version: $Revision: 1.17 $
  +// Version: $Revision: 1.18 $
   // License: GPL
   //
   // Usage: [[SWFUpload]]
   //
  -// $Id: SWFUpload.php,v 1.17 2008/12/27 12:02:21 wkpark Exp $
  +// $Id: SWFUpload.php,v 1.18 2009/08/19 05:29:38 wkpark Exp $
   
   function macro_SWFUpload($formatter,$value,$opts=array()) {
       global $DBInfo;
  @@ -168,7 +168,7 @@
           $cancel_btn='';
       } else {
           $submit_btn='<span id="spanButtonPlaceHolder"><input type="file" name="upload" /></span>';
  -        $cancel_btn="<input id='btnCancel' type='button' value='$btn3' onclick='swfu.cancelQueue();' disabled='disabled' />\n";
  +        $cancel_btn="<button id='btnCancel' onclick='swfu.cancelQueue();' disabled='disabled' ><span>".$btn3."</span></button>\n";
           $swf_js=<<<EOF
   <script type="text/javascript">
   /*<![CDATA[*/
  @@ -251,7 +251,7 @@
                   <input type='hidden' name='popup' value='1' />
                   $myoptions
                   $submit_btn
  -		<input type='submit' value="$btn2" onclick='javascript:fileSubmit(this);' />
  +		<button type='submit' onclick='javascript:fileSubmit(this);' ><span>$btn2</span></button>
                   $cancel_btn
   		</span>
               </form>
  
  
  
  1.43      +5 -5      moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.42
  retrieving revision 1.43
  diff -u -r1.42 -r1.43
  --- UploadFile.php	16 Jul 2009 06:08:54 -0000	1.42
  +++ UploadFile.php	19 Aug 2009 05:29:38 -0000	1.43
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.42 2009/07/16 06:08:54 wkpark Exp $
  +// $Id: UploadFile.php,v 1.43 2009/08/19 05:29:38 wkpark Exp $
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -340,7 +340,7 @@
       $multiform="<select name='multiform' />\n";
       for ($i=2;$i<=10;$i++)
         $multiform.="<option value='$i'>$i</option>\n";
  -    $multiform.="</select><input type='submit' value='Multi upload form' />\n";
  +    $multiform.="</select><button type='submit'><span>"._("Multi upload form")."</span></button>\n";
     }
   
     $url=$formatter->link_url($formatter->page->urlname);
  @@ -360,10 +360,10 @@
       $form.= <<<EOF
      <input type='file' name='upfile$suffix' size='30' />
   EOF;
  -    if ($count == 1) $form.="<input type='submit' value='Upload' />";
  +    if ($count == 1) $form.="<button type='submit'><span>"._("Upload") ."</span></button>";
   
       if ($DBInfo->flashupload)
  -      $form.=' '.sprintf(_("or %s."),$formatter->link_to('?action='.$DBInfo->flashupload,_("Upload files")));
  +      $form.=' '.sprintf(_("or %s."),$formatter->link_to('?action='.$DBInfo->flashupload,_("Multiple Upload files")));
       $form.= <<<EOF
   <br/>
      $extra
  @@ -371,7 +371,7 @@
      <input type='radio' name='replace$suffix' value='0' checked='checked' />$msg2<br />\n
   EOF;
     }
  -  if ($count > 1) $form.="<input type='submit' value='Upload files' />";
  +  if ($count > 1) $form.="<button type='submit'><span>"._("Upload files")."</span></button>";
     $form.="</form>\n";
   
     if ($use_multi) {
  
  
  
  1.13      +10 -4     moniwiki/plugin/UploadForm.php
  
  Index: UploadForm.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadForm.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- UploadForm.php	17 Aug 2009 08:47:04 -0000	1.12
  +++ UploadForm.php	19 Aug 2009 05:29:38 -0000	1.13
  @@ -5,7 +5,7 @@
   //
   // Usage: [[UploadForm]]
   //
  -// $Id: UploadForm.php,v 1.12 2009/08/17 08:47:04 wkpark Exp $
  +// $Id: UploadForm.php,v 1.13 2009/08/19 05:29:38 wkpark Exp $
   
   function macro_UploadForm($formatter,$value) {
       global $DBInfo;
  @@ -14,7 +14,9 @@
       $use_fake = 1;
       $hide_btn = 1;
   
  +    $msg2 = _("Successfully Uploaded");
       $msg = _("Choose File");
  +    $formatter->register_javascripts("wikibits.js");
       if ($id==1)
          $script=<<<EOF
   <script type="text/javascript">
  @@ -130,11 +132,16 @@
       // check if the form has attached files.
       attach = document.getElementById(id);
       var ok = false;
  +    files = '';
  +    js = '';
  +    var tmp = '';
       inputs = attach.getElementsByTagName('input');
       for (i = 0; i < inputs.length; i++) {
           if (inputs[i].type == 'file' && inputs[i].value != '') {
               ok = true;
  -            break;
  +            tmp = inputs[i].value.replace(/^.*[\\\\]/g, '');
  +            files += 'attachment:'+tmp + "\\n";
  +            js += "insertTags('attachment:',' ','" + tmp + "',3);";
           }
       }
       if (ok == false)
  @@ -150,8 +157,7 @@
           }
   
           // TODO check success or fail
  -        setTimeout("iframe.parentNode.removeChild(iframe);resetForm(attach)", 1500);
  -        //alert(_("Successfully Uploaded"));
  +        setTimeout("iframe.parentNode.removeChild(iframe);alert(files + '$msg2');"+js+"resetForm(attach)", 1500);
           return ok;
       }
       return ok;
  
  
  
  1.7       +4 -4      moniwiki/plugin/bookmark.php
  
  Index: bookmark.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/bookmark.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- bookmark.php	12 Dec 2008 09:43:54 -0000	1.6
  +++ bookmark.php	19 Aug 2009 05:29:38 -0000	1.7
  @@ -4,7 +4,7 @@
   // a bookmark action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: bookmark.php,v 1.6 2008/12/12 09:43:54 wkpark Exp $
  +// $Id: bookmark.php,v 1.7 2009/08/19 05:29:38 wkpark Exp $
   
   function do_bookmark($formatter,$options) {
     global $DBInfo;
  @@ -23,14 +23,14 @@
         # set the fake cookie
         $_COOKIE['MONI_BOOKMARK']=$bookmark;
         $user->bookmark=$bookmark;
  -      $title = 'Bookmark Changed';
  +      $title = _('Bookmark Changed');
       } else {
         $user->info['bookmark']=$bookmark;
         $DBInfo->udb->saveUser($user);
  -      $title = 'Bookmark Changed';
  +      $title = _('Bookmark Changed');
       }
     } else
  -    $options['msg']="Invalid bookmark!";
  +    $options['msg']=_("Invalid bookmark!");
     $formatter->send_header("",$options);
     $formatter->send_title($title,"",$options);
     if (!$DBInfo->control_read or $DBInfo->security->is_allowed('read',$options)) {
  
  
  


wkpark      2009/08/19 14:29:38

  Modified:    plugin/user nforge.php
  Log:
  version 1.1.4-RC3
  * set $title instead of $msg with the savepage action
  * add $use_home_url option. (in the nforge user plugin)
  * wikibits.js : replace = 3 option to append at the current cur pos.
  * change some input submit btns to buttons for css styling
  * add some gettext msgs.
  * show result msgs in the UploadForm macro with the iframe upload hack.
  
  Revision  Changes    Path
  1.7       +4 -2      moniwiki/plugin/user/nforge.php
  
  Index: nforge.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/user/nforge.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- nforge.php	12 Jul 2009 14:07:20 -0000	1.6
  +++ nforge.php	19 Aug 2009 05:29:38 -0000	1.7
  @@ -9,12 +9,12 @@
   // Name: nFORGE Unix based User plugin
   // Description: nFORGE Unix user plugin
   // URL: MoniWiki:NForgeUserPlugin
  -// Version: $Revision: 1.6 $
  +// Version: $Revision: 1.7 $
   // License: GPL
   //
   // Usage: set $user_class = 'nforge'; in the config.php
   //
  -// $Id: nforge.php,v 1.6 2009/07/12 14:07:20 wkpark Exp $
  +// $Id: nforge.php,v 1.7 2009/08/19 05:29:38 wkpark Exp $
   
   class User_nforge extends WikiUser {
       function User_nforge($id = '') {
  @@ -34,6 +34,8 @@
                   if (empty($tmp->info['nick']) or $tmp->info['nick']!=$u->data_array['realname']) {
                       // register user
                       $tmp->info['nick']=$u->data_array['realname'];
  +                    if (!empty($DBInfo->use_homepage_url))
  +                        $tmp->info['home']=util_make_url_u($u->getID(), true);
                       $udb->saveUser($tmp);
                   }
               } else {
  
  
  


wkpark      2009/08/19 15:46:15

  Modified:    .        wiki.php
  Log:
  close span tag
  
  Revision  Changes    Path
  1.484     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.483
  retrieving revision 1.484
  diff -u -r1.483 -r1.484
  --- wiki.php	19 Aug 2009 05:29:37 -0000	1.483
  +++ wiki.php	19 Aug 2009 06:46:14 -0000	1.484
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.483 2009/08/19 05:29:37 wkpark Exp $
  +// $Id: wiki.php,v 1.484 2009/08/19 06:46:14 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.483 $',1,-1);
  +$_revision = substr('$Revision: 1.484 $',1,-1);
   $_release = '1.1.4-RC3';
   
   #ob_start("ob_gzhandler");
  @@ -2732,7 +2732,7 @@
           $link=strtok($word,';').';';$last=strtok('');
         } else
           $last=substr($word,1);
  -      return "<span><a class='nonexistent' rel='nofollow' href='$url'>$link</a>".$last.'<span>';
  +      return "<span><a class='nonexistent' rel='nofollow' href='$url'>$link</a>".$last.'</span>';
       }
       if (strtolower($DBInfo->charset) == 'utf-8')
         $utfword=$word;
  @@ -2747,7 +2747,7 @@
         }
         $tag=strtok($mbword,';').';'; $last=strtok('');
         if ($tag)
  -        return "<span><a class='nonexistent' rel='nofollow' href='$url'>$tag</a>".$last.'<span>';
  +        return "<span><a class='nonexistent' rel='nofollow' href='$url'>$tag</a>".$last.'</span>';
       }
       return "<a class='nonexistent nomarkup' rel='nofollow' href='$url'>?</a>$word";
     }
  
  
  


wkpark      2009/08/19 16:35:01

  Modified:    locale/po fr.po ko.po moniwiki.pot
  Log:
  update po msgs
  
  Revision  Changes    Path
  1.28      +164 -146  moniwiki/locale/po/fr.po
  
  Index: fr.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/fr.po,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- fr.po	29 Jul 2009 17:52:45 -0000	1.27
  +++ fr.po	19 Aug 2009 07:35:01 -0000	1.28
  @@ -4,7 +4,7 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2009-07-30 00:37+0900\n"
  +"POT-Creation-Date: 2009-08-19 16:34+0900\n"
   "PO-Revision-Date: 2003-08-17 22:51+0900\n"
   "Last-Translator: Serge Stinckwich <Serge.Stinckwich@info.unicaen.fr>\n"
   "Language-Team: fr <fr@li.org>\n"
  @@ -114,7 +114,7 @@
   msgid "Title"
   msgstr "titre"
   
  -#: ../plugin/Blog.php:268 ../wikilib.php:1052
  +#: ../plugin/Blog.php:268 ../wikilib.php:1054
   msgid "GUI"
   msgstr ""
   
  @@ -210,8 +210,8 @@
   msgstr "commentaire"
   
   # ../wikilib.php:482
  -#: ../plugin/Comment.php:93 ../wikilib.php:795 ../wikilib.php:1046
  -#: ../wikilib.php:1715 ../wikilib.php:1805 ../monisetup.php:1305
  +#: ../plugin/Comment.php:93 ../wikilib.php:797 ../wikilib.php:1048
  +#: ../wikilib.php:1717 ../wikilib.php:1807 ../monisetup.php:1305
   msgid "Preview"
   msgstr "Pr?visualisation"
   
  @@ -236,17 +236,17 @@
   msgstr ""
   
   #: ../plugin/Comment.php:169 ../plugin/userform.php:118
  -#: ../plugin/userform.php:181 ../plugin/userform.php:204 ../wikilib.php:1758
  +#: ../plugin/userform.php:181 ../plugin/userform.php:204 ../wikilib.php:1760
   msgid "Invalid ticket !"
   msgstr ""
   
   #: ../plugin/Comment.php:174 ../plugin/userform.php:120
  -#: ../plugin/userform.php:206 ../wikilib.php:1763
  +#: ../plugin/userform.php:206 ../wikilib.php:1765
   msgid "You need a ticket !"
   msgstr ""
   
   #: ../plugin/Comment.php:196 ../plugin/Gallery.php:174 ../plugin/bbs.php:1009
  -#: ../wikilib.php:1581 ../wikilib.php:1779
  +#: ../wikilib.php:1583 ../wikilib.php:1781
   msgid ""
   "Sorry, can not save page because some messages are blocked in this wiki."
   msgstr ""
  @@ -279,7 +279,7 @@
   msgstr ""
   
   # ../wiki.php:2338 ../wiki.php:2373 ../wikilib.php:770
  -#: ../plugin/Diff.php:426 ../wikilib.php:1735
  +#: ../plugin/Diff.php:426 ../wikilib.php:1737
   msgid "No difference found"
   msgstr "Aucune diff?rence trouv?"
   
  @@ -359,18 +359,18 @@
   
   # ../plugin/FastSearch.php:125
   #: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:38
  -#: ../wikilib.php:1502
  +#: ../wikilib.php:1504
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr "Trouv? %s s'appariant avec %s sur un total de %s pages"
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1504
  +#: ../wikilib.php:1506
   msgid "page"
   msgstr ""
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1504
  +#: ../wikilib.php:1506
   msgid "pages"
   msgstr ""
   
  @@ -390,8 +390,8 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4498
  -#: ../wikilib.php:1032
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4513
  +#: ../wikilib.php:1034
   msgid "Refresh"
   msgstr ""
   
  @@ -408,8 +408,8 @@
   " ou cliquer sur %s pour faire une recherche en texte int?gral de cette "
   "page.\n"
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5441 ../wiki.php:5448
  -#: ../wikilib.php:1512
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5473 ../wiki.php:5480
  +#: ../wikilib.php:1514
   msgid "here"
   msgstr ""
   
  @@ -425,7 +425,7 @@
   msgid "Case-sensitive searching"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:77 ../wikilib.php:2870 ../wikilib.php:2932
  +#: ../plugin/FullSearch.php:77 ../wikilib.php:2873 ../wikilib.php:2935
   msgid "Go"
   msgstr ""
   
  @@ -434,7 +434,7 @@
   msgstr ""
   
   # ../wikilib.php:1483
  -#: ../plugin/FullSearch.php:144 ../wikilib.php:2891
  +#: ../plugin/FullSearch.php:144 ../wikilib.php:2894
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "Expression de recherche \"%s\" invalide"
  @@ -455,8 +455,8 @@
   msgstr ""
   
   # ../wikilib.php:769
  -#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1568
  -#: ../wikilib.php:1733
  +#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1570
  +#: ../wikilib.php:1735
   #, c-format
   msgid "Go back or return to %s"
   msgstr "Revenir en arri?re ou retourner ? %s"
  @@ -652,7 +652,7 @@
   msgstr ""
   
   # ../wikilib.php:672 ../wikilib.php:1472
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1389 ../wikilib.php:2878
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1391 ../wikilib.php:2881
   msgid "Use more specific text"
   msgstr "Utiliser un texte plus sp?cifique"
   
  @@ -823,22 +823,22 @@
   msgid "days ago"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:264
  +#: ../plugin/RecentChanges.php:265
   msgid "set bookmark"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:273
  +#: ../plugin/RecentChanges.php:270
   msgid "Bookmark"
   msgstr ""
   
   # ../locale/dummy.php:7
  -#: ../plugin/RecentChanges.php:335
  +#: ../plugin/RecentChanges.php:338
   #, c-format
   msgid "%s changes"
   msgstr ""
   
   # ../locale/dummy.php:3
  -#: ../plugin/RecentChanges.php:349
  +#: ../plugin/RecentChanges.php:352
   msgid "Recent Changes"
   msgstr "ChangementsR?cents"
   
  @@ -846,7 +846,7 @@
   msgid "Files..."
   msgstr ""
   
  -#: ../plugin/SWFUpload.php:137
  +#: ../plugin/SWFUpload.php:137 ../plugin/UploadFile.php:363
   msgid "Upload"
   msgstr ""
   
  @@ -949,7 +949,7 @@
   msgstr "TwinPages de %s"
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../plugin/TwinPages.php:19 ../wiki.php:5427
  +#: ../plugin/TwinPages.php:19 ../wiki.php:5459
   msgid "See [TwinPages]: "
   msgstr "Voir [TwinPages]: "
   
  @@ -990,6 +990,10 @@
   msgid "Files are uploaded successfully"
   msgstr ""
   
  +#: ../plugin/UploadFile.php:343
  +msgid "Multi upload form"
  +msgstr ""
  +
   #: ../plugin/UploadFile.php:352
   msgid "Replace original file"
   msgstr ""
  @@ -1009,27 +1013,35 @@
   msgid "or %s."
   msgstr "ou %s"
   
  -#: ../plugin/UploadFile.php:366 ../plugin/UploadForm.php:143
  +#: ../plugin/UploadFile.php:366
  +msgid "Multiple Upload files"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:374 ../plugin/UploadForm.php:179
   msgid "Upload files"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:16
  +#: ../plugin/UploadForm.php:17
  +msgid "Successfully Uploaded"
  +msgstr ""
  +
  +#: ../plugin/UploadForm.php:18
   msgid "Choose File"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:141
  +#: ../plugin/UploadForm.php:177
   msgid "add files"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:142
  +#: ../plugin/UploadForm.php:178
   msgid "add a file"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:144
  +#: ../plugin/UploadForm.php:180
   msgid "Reset"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:145
  +#: ../plugin/UploadForm.php:181
   msgid "Attachments"
   msgstr ""
   
  @@ -1058,12 +1070,12 @@
   # ../plugin/rename.php:36
   #: ../plugin/UploadedFiles.php:452 ../plugin/rcsimport.php:32
   #: ../plugin/rcsimport.php:88 ../plugin/rename.php:77 ../plugin/revert.php:82
  -#: ../plugin/userinfo.php:37 ../wikilib.php:1228 ../wikilib.php:2189
  +#: ../plugin/userinfo.php:37 ../wikilib.php:1230 ../wikilib.php:2192
   msgid "Password"
   msgstr "Mot de passe"
   
   # ../wikilib.php:550
  -#: ../plugin/UploadedFiles.php:453 ../wikilib.php:1206
  +#: ../plugin/UploadedFiles.php:453 ../wikilib.php:1208
   msgid "Delete selected files"
   msgstr "Effacer les fichiers s?lectionn?s"
   
  @@ -1087,7 +1099,7 @@
   msgid "Voted successfully"
   msgstr "Vote r?ussi"
   
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2628
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2631
   msgid "Others"
   msgstr ""
   
  @@ -1176,7 +1188,7 @@
   msgstr ""
   
   # ../locale/dummy.php:5
  -#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1229
  +#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1231
   msgid "Delete"
   msgstr ""
   
  @@ -1240,6 +1252,12 @@
   msgid "New post added successfully"
   msgstr ""
   
  +# ../wiki.php:3024
  +#: ../plugin/bookmark.php:33
  +#, fuzzy
  +msgid "Invalid bookmark!"
  +msgstr "Merci d'entrer un mot de passe valide"
  +
   #: ../plugin/cacheadmin.php:105
   msgid "You are not WikiMaster!!"
   msgstr ""
  @@ -1327,7 +1345,7 @@
   msgstr ""
   
   # ../plugin/minilogin.php:22 ../wikilib.php:1076
  -#: ../plugin/minilogin.php:18 ../wikilib.php:2270
  +#: ../plugin/minilogin.php:18 ../wikilib.php:2273
   msgid "Login or Join"
   msgstr "Se connecter ou se joindre ?"
   
  @@ -1551,7 +1569,7 @@
   msgstr "Seulement le WikiMaster peut renommer cette page"
   
   # ../plugin/rename.php:39 ../wikilib.php:588
  -#: ../plugin/rename.php:79 ../wikilib.php:1274
  +#: ../plugin/rename.php:79 ../wikilib.php:1276
   msgid "with revision history"
   msgstr "avec l'historique de r?vision"
   
  @@ -1599,7 +1617,7 @@
   msgid "Select a tarball file to restore"
   msgstr ""
   
  -#: ../plugin/revert.php:23 ../wiki.php:5443
  +#: ../plugin/revert.php:23 ../wiki.php:5475
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr ""
  @@ -1627,7 +1645,7 @@
   msgid "Are you really want to revert this page ?"
   msgstr ""
   
  -#: ../plugin/revert.php:74 ../wikilib.php:1043
  +#: ../plugin/revert.php:74 ../wikilib.php:1045
   msgid "Summary"
   msgstr ""
   
  @@ -1934,7 +1952,7 @@
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../plugin/userform.php:107 ../wikilib.php:2340
  +#: ../plugin/userform.php:107 ../wikilib.php:2343
   msgid "E-mail new password"
   msgstr ""
   
  @@ -2025,8 +2043,8 @@
   msgid "You are not allowed to register on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5381
  -#: ../wiki.php:5392
  +#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5411
  +#: ../wiki.php:5422
   msgid "Please contact WikiMasters"
   msgstr ""
   
  @@ -2174,7 +2192,7 @@
   msgstr ""
   
   # ../wikilib.php:521
  -#: ../wiki.php:2947 ../wiki.php:2958 ../wiki.php:5621
  +#: ../wiki.php:2947 ../wiki.php:2958 ../wiki.php:5654
   msgid "Invalid ajax action."
   msgstr ""
   
  @@ -2204,107 +2222,107 @@
   msgstr ""
   
   # ../locale/dummy.php:6 ../wiki.php:2553
  -#: ../wiki.php:4494 ../locale/dummy.php:6
  +#: ../wiki.php:4509 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "?ditionTexte"
   
   # ../wiki.php:2555
  -#: ../wiki.php:4496
  +#: ../wiki.php:4511
   msgid "NotEditable"
   msgstr "Pas?ditable"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wiki.php:4500 ../locale/dummy.php:6
  +#: ../wiki.php:4515 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "MontrePage"
   
   # ../locale/dummy.php:3 ../locale/dummy.php:5 ../wiki.php:2558
  -#: ../wiki.php:4501 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4516 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "TrouvePage"
   
  -#: ../wiki.php:4940
  +#: ../wiki.php:4960
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5204
  +#: ../wiki.php:5224
   msgid "Someone logged in at another place !"
   msgstr ""
   
  -#: ../wiki.php:5380
  +#: ../wiki.php:5410
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5391
  +#: ../wiki.php:5421
   msgid "You are blocked in this wiki"
   msgstr ""
   
   # ../wiki.php:2945 ../wiki.php:2948
  -#: ../wiki.php:5429 ../wiki.php:5438 ../wikilib.php:1492
  +#: ../wiki.php:5461 ../wiki.php:5470 ../wikilib.php:1494
   msgid "Create this page"
   msgstr "Cr?er cette page"
   
   # ../wikilib.php:816
  -#: ../wiki.php:5440
  +#: ../wiki.php:5472
   #, c-format
   msgid "%s has saved revisions"
   msgstr "%s est sauvegard?"
   
   # ../wiki.php:2950
  -#: ../wiki.php:5441 ../wiki.php:5448
  +#: ../wiki.php:5473 ../wiki.php:5480
   #, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr ""
   
  -#: ../wiki.php:5446
  +#: ../wiki.php:5478
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr ""
   
  -#: ../wiki.php:5453
  +#: ../wiki.php:5485
   msgid "Please try to search with another word"
   msgstr ""
   
   # ../wiki.php:2956
  -#: ../wiki.php:5465
  +#: ../wiki.php:5497
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr "%s ou alternativement, utiliser un de ces mod?les de page :\n"
   
  -#: ../wiki.php:5468
  +#: ../wiki.php:5500
   msgid "You have no templates"
   msgstr ""
   
   # ../wikilib.php:427
  -#: ../wiki.php:5470
  +#: ../wiki.php:5502
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
   
  -#: ../wiki.php:5481
  +#: ../wiki.php:5513
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
   # ../wikilib.php:521
  -#: ../wiki.php:5623
  +#: ../wiki.php:5656
   msgid "Invalid macro action."
   msgstr ""
   
   # ../wiki.php:3009
  -#: ../wiki.php:5633
  +#: ../wiki.php:5666
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "Vous n'?tes pas autoris? ? '%s'"
   
   # ../wiki.php:3021
  -#: ../wiki.php:5653
  +#: ../wiki.php:5686
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "Impossible de pouvoir \"%s\" !"
   
   # ../wiki.php:3024
  -#: ../wiki.php:5656
  +#: ../wiki.php:5689
   msgid "Please enter the valid password"
   msgstr "Merci d'entrer un mot de passe valide"
   
  @@ -2343,169 +2361,169 @@
   
   # ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
   # c-format
  -#: ../wikilib.php:761
  +#: ../wikilib.php:763
   msgid "You are not allowed to edit this page !"
   msgstr ""
   
  -#: ../wikilib.php:768
  +#: ../wikilib.php:770
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
   # ../wikilib.php:483 ../wikilib.php:1079
  -#: ../wikilib.php:789 ../wikilib.php:1061 ../wikilib.php:1709
  -#: ../wikilib.php:1799 ../wikilib.php:2273 ../wikilib.php:2327
  +#: ../wikilib.php:791 ../wikilib.php:1063 ../wikilib.php:1711
  +#: ../wikilib.php:1801 ../wikilib.php:2276 ../wikilib.php:2330
   msgid "Save"
   msgstr "Sauvegarder"
   
   # ../wikilib.php:443
  -#: ../wikilib.php:797 ../wikilib.php:1048 ../wikilib.php:1717
  -#: ../wikilib.php:1807
  +#: ../wikilib.php:799 ../wikilib.php:1050 ../wikilib.php:1719
  +#: ../wikilib.php:1809
   msgid "Skip to preview"
   msgstr "Aller ? la pr?visualisation"
   
   # ../wikilib.php:425
  -#: ../wikilib.php:908
  +#: ../wikilib.php:910
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   "Utiliser un des mod?les de pages qui suivent pour une premi?recr?ation :\n"
   
   # ../wikilib.php:427
  -#: ../wikilib.php:910
  +#: ../wikilib.php:912
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr ""
   
  -#: ../wikilib.php:914
  +#: ../wikilib.php:916
   msgid "Merge"
   msgstr ""
   
  -#: ../wikilib.php:915
  +#: ../wikilib.php:917
   msgid "Merge manually"
   msgstr ""
   
  -#: ../wikilib.php:916
  +#: ../wikilib.php:918
   msgid "Ignore conflicts"
   msgstr ""
   
   # ../wikilib.php:445
  -#: ../wikilib.php:948
  +#: ../wikilib.php:950
   msgid "ReduceEditor"
   msgstr "R?duire?diteur"
   
  -#: ../wikilib.php:949
  +#: ../wikilib.php:951
   msgid "EnlargeEditor"
   msgstr ""
   
   # ../locale/dummy.php:6 ../wikilib.php:448
  -#: ../wikilib.php:953 ../locale/dummy.php:6
  +#: ../wikilib.php:955 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
   # ../wikilib.php:449
  -#: ../wikilib.php:955
  +#: ../wikilib.php:957
   msgid "HelpOnEditing"
   msgstr ""
   
   # ../wikilib.php:462
  -#: ../wikilib.php:987
  +#: ../wikilib.php:989
   #, c-format
   msgid "Describe %s here"
   msgstr "D?crire %s ici"
   
  -#: ../wikilib.php:1007
  +#: ../wikilib.php:1009
   msgid "Category"
   msgstr ""
   
  -#: ../wikilib.php:1015
  +#: ../wikilib.php:1017
   msgid " Select "
   msgstr ""
   
  -#: ../wikilib.php:1026
  +#: ../wikilib.php:1028
   msgid "Minor edit"
   msgstr ""
   
   # ../wikilib.php:517
  -#: ../wikilib.php:1140
  +#: ../wikilib.php:1142
   msgid "406 Not Acceptable"
   msgstr ""
   
   # ../wikilib.php:519
  -#: ../wikilib.php:1145
  +#: ../wikilib.php:1147
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s n'est pas une action valide"
   
   # ../wikilib.php:521
  -#: ../wikilib.php:1147
  +#: ../wikilib.php:1149
   msgid "Is it valid action ?"
   msgstr "Est-ce que c'est une action valide ?"
   
   # ../wikilib.php:540
  -#: ../wikilib.php:1194
  +#: ../wikilib.php:1196
   #, c-format
   msgid "File '%s' is deleted"
   msgstr "Le fichier '%s' est effac?"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:1196
  +#: ../wikilib.php:1198
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr "Impossible d'effacer '%s'"
   
   # ../wikilib.php:545
  -#: ../wikilib.php:1201
  +#: ../wikilib.php:1203
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr "Le r?pertoire '%s' est effac?"
   
   # ../wikilib.php:547
  -#: ../wikilib.php:1203
  +#: ../wikilib.php:1205
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr "Impossible d'effacer le r?pertoire '%s'"
   
   # ../wikilib.php:557 ../wikilib.php:559
  -#: ../wikilib.php:1213 ../wikilib.php:1233
  +#: ../wikilib.php:1215 ../wikilib.php:1235
   msgid "No files are selected !"
   msgstr "Aucun fichier n'est s?lectionn? !"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:1226
  +#: ../wikilib.php:1228
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
   # ../wikilib.php:550
  -#: ../wikilib.php:1230
  +#: ../wikilib.php:1232
   msgid "Delete selected file"
   msgstr ""
   
   # ../wikilib.php:575
  -#: ../wikilib.php:1251
  +#: ../wikilib.php:1253
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr "\"%s\" est effac? !"
   
   # ../wikilib.php:581
  -#: ../wikilib.php:1266
  +#: ../wikilib.php:1268
   msgid "Please delete this file manually."
   msgstr "Merci d'effacer ce fichier manuellement."
   
   # ../wikilib.php:583
  -#: ../wikilib.php:1268
  +#: ../wikilib.php:1270
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "Effacer \"%s\" ?"
   
   # ../plugin/minilogin.php:30
  -#: ../wikilib.php:1321
  +#: ../wikilib.php:1323
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
   # ../wiki.php:2950
  -#: ../wikilib.php:1494
  +#: ../wikilib.php:1496
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
  @@ -2513,134 +2531,134 @@
   "page.\n"
   
   # ../wiki.php:2950
  -#: ../wikilib.php:1494
  +#: ../wikilib.php:1496
   msgid "title"
   msgstr "titre"
   
  -#: ../wikilib.php:1508
  +#: ../wikilib.php:1510
   msgid "Please try to fulltext search"
   msgstr ""
   
   # ../wiki.php:2950
  -#: ../wikilib.php:1511
  +#: ../wikilib.php:1513
   #, c-format
   msgid "You can also click %s to fulltext search.\n"
   msgstr ""
   
   # ../wikilib.php:743
  -#: ../wikilib.php:1556 ../wikilib.php:1664
  +#: ../wikilib.php:1558 ../wikilib.php:1666
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "Quelqu'un a sauvegard? la page tandis que vous ?ditiez %s"
   
  -#: ../wikilib.php:1562
  +#: ../wikilib.php:1564
   msgid "Section edit is not valid for non-exists page."
   msgstr ""
   
   # ../wikilib.php:803
  -#: ../wikilib.php:1595 ../wikilib.php:1840
  +#: ../wikilib.php:1597 ../wikilib.php:1842
   msgid "mail does not supported by default."
   msgstr "La messagerie n'est pas support? par d?faut."
   
   # ../wikilib.php:807
  -#: ../wikilib.php:1599 ../wikilib.php:1844
  +#: ../wikilib.php:1601 ../wikilib.php:1846
   msgid "Sent notification mail."
   msgstr "Des notifications par messagerie ont ?t? envoy?es."
   
   # ../wikilib.php:809
  -#: ../wikilib.php:1601 ../wikilib.php:1846
  +#: ../wikilib.php:1603 ../wikilib.php:1848
   msgid "No subscribers found."
   msgstr "Aucun abonn? trouv?."
   
   # ../wikilib.php:814
  -#: ../wikilib.php:1606 ../wikilib.php:1851
  +#: ../wikilib.php:1608 ../wikilib.php:1853
   #, c-format
   msgid "%s is not editable"
   msgstr "%s n'est pas ?ditable"
   
   # ../wikilib.php:816
  -#: ../wikilib.php:1608 ../wikilib.php:1853
  +#: ../wikilib.php:1610 ../wikilib.php:1855
   #, c-format
   msgid "%s is saved"
   msgstr "%s est sauvegard?"
   
   # ../wikilib.php:734
  -#: ../wikilib.php:1655
  +#: ../wikilib.php:1657
   msgid "Goto Editor"
   msgstr "Aller ? l'?diteur"
   
  -#: ../wikilib.php:1669
  +#: ../wikilib.php:1671
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr ""
   
   # ../plugin/Vote.php:109
  -#: ../wikilib.php:1670
  +#: ../wikilib.php:1672
   #, c-format
   msgid "%s is merged successfully"
   msgstr ""
   
  -#: ../wikilib.php:1674
  +#: ../wikilib.php:1676
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1675
  +#: ../wikilib.php:1677
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr ""
   
  -#: ../wikilib.php:1676
  +#: ../wikilib.php:1678
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1677
  +#: ../wikilib.php:1679
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1682
  +#: ../wikilib.php:1684
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr ""
   
   # ../wikilib.php:581
  -#: ../wikilib.php:1683
  +#: ../wikilib.php:1685
   msgid "Please resolve conflicts manually."
   msgstr ""
   
  -#: ../wikilib.php:1686
  +#: ../wikilib.php:1688
   #, c-format
   msgid "Force merging for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1687
  +#: ../wikilib.php:1689
   msgid "Please be careful, you could damage useful information."
   msgstr ""
   
   # ../wikilib.php:755
  -#: ../wikilib.php:1701
  +#: ../wikilib.php:1703
   msgid "Conflict error!"
   msgstr "Erreur de conflit !"
   
   # ../wikilib.php:748 ../wikilib.php:777
  -#: ../wikilib.php:1785
  +#: ../wikilib.php:1787
   #, c-format
   msgid "Preview of %s"
   msgstr "Pr?visualisation de %s"
   
   # ../wikilib.php:838
  -#: ../wikilib.php:1885
  +#: ../wikilib.php:1888
   msgid "Nobody subscribed to this page."
   msgstr "Personne n'est abonn? ? cette page, aucun mail envoy?"
   
   # ../wikilib.php:860
  -#: ../wikilib.php:1904
  +#: ../wikilib.php:1907
   #, c-format
   msgid "%s page is modified"
   msgstr "la page %s est modifi?"
   
   # ../wikilib.php:870
  -#: ../wikilib.php:1933
  +#: ../wikilib.php:1936
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
  @@ -2651,101 +2669,101 @@
   "\n"
   
   # ../wikilib.php:883
  -#: ../wikilib.php:1946
  +#: ../wikilib.php:1949
   msgid "Send notification mails to all subscribers"
   msgstr "Envoyez un mail de notification ? tous les abonn?s"
   
   # ../wikilib.php:887
  -#: ../wikilib.php:1951
  +#: ../wikilib.php:1954
   msgid "Mails are sent successfully"
   msgstr "Mail envoy? avec succ?s"
   
   # ../wikilib.php:888
  -#: ../wikilib.php:1952
  +#: ../wikilib.php:1955
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr "un mail a ?t? envoy? ? '%s'"
   
   # ../wiki.php:3021
  -#: ../wikilib.php:1954
  +#: ../wikilib.php:1957
   msgid "Fail to send mail"
   msgstr ""
   
   # ../wikilib.php:803
  -#: ../wikilib.php:1965
  +#: ../wikilib.php:1968
   msgid "This wiki does not support sendmail"
   msgstr ""
   
   # ../wikilib.php:1483
  -#: ../wikilib.php:2063
  +#: ../wikilib.php:2066
   msgid "Invalid regular expression !"
   msgstr ""
   
  -#: ../wikilib.php:2087
  +#: ../wikilib.php:2090
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:2090
  +#: ../wikilib.php:2093
   msgid "Infinite loop possible!"
   msgstr ""
   
   # ../plugin/login.php:26 ../wikilib.php:1051
  -#: ../wikilib.php:2205
  +#: ../wikilib.php:2208
   msgid "Login"
   msgstr "Se connecter"
   
  -#: ../wikilib.php:2206
  +#: ../wikilib.php:2209
   msgid "OpenID"
   msgstr ""
   
  -#: ../wikilib.php:2218 ../wikilib.php:2345
  +#: ../wikilib.php:2221 ../wikilib.php:2348
   msgid "ID"
   msgstr ""
   
   # ../wikilib.php:1070
  -#: ../wikilib.php:2253 ../wikilib.php:2338
  +#: ../wikilib.php:2256 ../wikilib.php:2341
   msgid "Make profile"
   msgstr "Faire un profil"
   
   # ../wikilib.php:1071
  -#: ../wikilib.php:2255
  +#: ../wikilib.php:2258
   msgid "password again"
   msgstr "mot de passe de nouveau"
   
  -#: ../wikilib.php:2257 ../wikilib.php:2306
  +#: ../wikilib.php:2260 ../wikilib.php:2309
   msgid "Mail"
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../wikilib.php:2279
  +#: ../wikilib.php:2282
   msgid "New password"
   msgstr "Nouveau mot de passe"
   
  -#: ../wikilib.php:2284
  +#: ../wikilib.php:2287
   msgid "Nickname"
   msgstr ""
   
  -#: ../wikilib.php:2307
  +#: ../wikilib.php:2310
   msgid "Time Zone"
   msgstr ""
   
   # ../wikilib.php:1088
  -#: ../wikilib.php:2316
  +#: ../wikilib.php:2319
   msgid "logout"
   msgstr "se d?connecter"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wikilib.php:2629
  +#: ../wikilib.php:2632
   msgid "Show all"
   msgstr ""
   
   # ../locale/dummy.php:4
  -#: ../wikilib.php:2767
  +#: ../wikilib.php:2770
   msgid "Contents"
   msgstr ""
   
   # ../wikilib.php:1479
  -#: ../wikilib.php:2887
  +#: ../wikilib.php:2890
   #, c-format
   msgid "Title search for \"%s\""
   msgstr "Recherche de titre pour \"%s\""
  
  
  
  1.33      +165 -149  moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- ko.po	29 Jul 2009 17:52:45 -0000	1.32
  +++ ko.po	19 Aug 2009 07:35:01 -0000	1.33
  @@ -5,7 +5,7 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1.3\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2009-07-30 00:37+0900\n"
  +"POT-Creation-Date: 2009-08-19 16:34+0900\n"
   "PO-Revision-Date: 2008-12-11 12:20+0900\n"
   "Last-Translator: Won-Kyu Park <wkpark@kldp.org>\n"
   "Language-Team: Won-Kyu Park <wkpark@kldp.org>\n"
  @@ -100,7 +100,7 @@
   msgid "Title"
   msgstr "제목"
   
  -#: ../plugin/Blog.php:268 ../wikilib.php:1052
  +#: ../plugin/Blog.php:268 ../wikilib.php:1054
   msgid "GUI"
   msgstr ""
   
  @@ -181,8 +181,8 @@
   msgid "Comment"
   msgstr "댓글 달기"
   
  -#: ../plugin/Comment.php:93 ../wikilib.php:795 ../wikilib.php:1046
  -#: ../wikilib.php:1715 ../wikilib.php:1805 ../monisetup.php:1305
  +#: ../plugin/Comment.php:93 ../wikilib.php:797 ../wikilib.php:1048
  +#: ../wikilib.php:1717 ../wikilib.php:1807 ../monisetup.php:1305
   msgid "Preview"
   msgstr "미리보기"
   
  @@ -203,17 +203,17 @@
   msgstr "페이지가 없습니다"
   
   #: ../plugin/Comment.php:169 ../plugin/userform.php:118
  -#: ../plugin/userform.php:181 ../plugin/userform.php:204 ../wikilib.php:1758
  +#: ../plugin/userform.php:181 ../plugin/userform.php:204 ../wikilib.php:1760
   msgid "Invalid ticket !"
   msgstr "잘못된 티켓 !"
   
   #: ../plugin/Comment.php:174 ../plugin/userform.php:120
  -#: ../plugin/userform.php:206 ../wikilib.php:1763
  +#: ../plugin/userform.php:206 ../wikilib.php:1765
   msgid "You need a ticket !"
   msgstr "티켓이 필요합니다 !"
   
   #: ../plugin/Comment.php:196 ../plugin/Gallery.php:174 ../plugin/bbs.php:1009
  -#: ../wikilib.php:1581 ../wikilib.php:1779
  +#: ../wikilib.php:1583 ../wikilib.php:1781
   msgid ""
   "Sorry, can not save page because some messages are blocked in this wiki."
   msgstr "죄송합니다. 특정 메시지가 금지되어 페이지를 저장할 수 없습니다."
  @@ -240,7 +240,7 @@
   msgid "Version info is not available in this wiki"
   msgstr "버전 정보는 현 위키에서 사용할 수 없습니다"
   
  -#: ../plugin/Diff.php:426 ../wikilib.php:1735
  +#: ../plugin/Diff.php:426 ../wikilib.php:1737
   msgid "No difference found"
   msgstr "변화가 없습니다"
   
  @@ -295,7 +295,7 @@
   
   #: ../plugin/FastSearch.php:44 ../plugin/FullSearch.php:90
   msgid "No search text"
  -msgstr "서치 단어 없음"
  +msgstr "검색 단어 없음"
   
   #: ../plugin/FastSearch.php:50
   msgid "Couldn't open search database, sorry."
  @@ -307,18 +307,18 @@
   msgstr "\"%s\"을(를) 전체 찾아보기"
   
   #: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:38
  -#: ../wikilib.php:1502
  +#: ../wikilib.php:1504
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr "%3$s의 페이지중에 %1$s개가 발견되었습니다"
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1504
  +#: ../wikilib.php:1506
   msgid "page"
   msgstr "페이지"
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1504
  +#: ../wikilib.php:1506
   msgid "pages"
   msgstr "페이지"
   
  @@ -330,14 +330,14 @@
   #: ../plugin/FullSearch.php:17
   #, c-format
   msgid "KeyWords search for \"%s\""
  -msgstr "\"%s\"에 대한 키워드 서치"
  +msgstr "\"%s\"에 대한 키워드 검색"
   
   #: ../plugin/FullSearch.php:43
   msgid "Show Context."
   msgstr "문맥 보기."
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4498
  -#: ../wikilib.php:1032
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4513
  +#: ../wikilib.php:1034
   msgid "Refresh"
   msgstr "갱신"
   
  @@ -351,14 +351,14 @@
   msgid "You can also click %s to search title.\n"
   msgstr "%s을 눌러 제목 찾기를 할 수 있습니다.\n"
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5441 ../wiki.php:5448
  -#: ../wikilib.php:1512
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5473 ../wiki.php:5480
  +#: ../wikilib.php:1514
   msgid "here"
   msgstr "여기"
   
   #: ../plugin/FullSearch.php:74
   msgid "Display context of search results"
  -msgstr "서치 결과 문맥 보기"
  +msgstr "검색 결과 문맥 보기"
   
   #: ../plugin/FullSearch.php:75
   msgid "Search BackLinks only"
  @@ -368,7 +368,7 @@
   msgid "Case-sensitive searching"
   msgstr "대소문자 구별"
   
  -#: ../plugin/FullSearch.php:77 ../wikilib.php:2870 ../wikilib.php:2932
  +#: ../plugin/FullSearch.php:77 ../wikilib.php:2873 ../wikilib.php:2935
   msgid "Go"
   msgstr "찾기"
   
  @@ -376,7 +376,7 @@
   msgid "Empty expression"
   msgstr "비어있는 표현식"
   
  -#: ../plugin/FullSearch.php:144 ../wikilib.php:2891
  +#: ../plugin/FullSearch.php:144 ../wikilib.php:2894
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "잘못된 찾기 표현식 \"%s\""
  @@ -393,8 +393,8 @@
   msgid "show comments"
   msgstr "댓글 보기"
   
  -#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1568
  -#: ../wikilib.php:1733
  +#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1570
  +#: ../wikilib.php:1735
   #, c-format
   msgid "Go back or return to %s"
   msgstr "뒤로 혹은 %s(으)로 가기"
  @@ -579,7 +579,7 @@
   msgid "Select keywords for %s"
   msgstr "%s에 대해 키워드를 고르세요"
   
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1389 ../wikilib.php:2878
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1391 ../wikilib.php:2881
   msgid "Use more specific text"
   msgstr "좀 더 자세히 입력하세요"
   
  @@ -740,20 +740,20 @@
   msgid "days ago"
   msgstr "몇일 전"
   
  -#: ../plugin/RecentChanges.php:264
  +#: ../plugin/RecentChanges.php:265
   msgid "set bookmark"
   msgstr "북마크"
   
  -#: ../plugin/RecentChanges.php:273
  +#: ../plugin/RecentChanges.php:270
   msgid "Bookmark"
   msgstr "북마크"
   
  -#: ../plugin/RecentChanges.php:335
  +#: ../plugin/RecentChanges.php:338
   #, c-format
   msgid "%s changes"
   msgstr "%s회 고침"
   
  -#: ../plugin/RecentChanges.php:349
  +#: ../plugin/RecentChanges.php:352
   msgid "Recent Changes"
   msgstr "최근 변경내역"
   
  @@ -761,7 +761,7 @@
   msgid "Files..."
   msgstr "파일..."
   
  -#: ../plugin/SWFUpload.php:137
  +#: ../plugin/SWFUpload.php:137 ../plugin/UploadFile.php:363
   msgid "Upload"
   msgstr "올리기"
   
  @@ -855,7 +855,7 @@
   msgid "TwinPages of %s"
   msgstr "%s의 쌍둥이 페이지"
   
  -#: ../plugin/TwinPages.php:19 ../wiki.php:5427
  +#: ../plugin/TwinPages.php:19 ../wiki.php:5459
   msgid "See [TwinPages]: "
   msgstr ""
   
  @@ -891,6 +891,10 @@
   msgid "Files are uploaded successfully"
   msgstr "파일이 성공적으로 올라갔습니다."
   
  +#: ../plugin/UploadFile.php:343
  +msgid "Multi upload form"
  +msgstr ""
  +
   #: ../plugin/UploadFile.php:352
   msgid "Replace original file"
   msgstr "원본 파일 교체"
  @@ -908,27 +912,35 @@
   msgid "or %s."
   msgstr "혹은 %s."
   
  -#: ../plugin/UploadFile.php:366 ../plugin/UploadForm.php:143
  +#: ../plugin/UploadFile.php:366
  +msgid "Multiple Upload files"
  +msgstr "여러파일 올리기"
  +
  +#: ../plugin/UploadFile.php:374 ../plugin/UploadForm.php:179
   msgid "Upload files"
   msgstr "파일올리기"
   
  -#: ../plugin/UploadForm.php:16
  +#: ../plugin/UploadForm.php:17
  +msgid "Successfully Uploaded"
  +msgstr "성공적으로 올라감"
  +
  +#: ../plugin/UploadForm.php:18
   msgid "Choose File"
   msgstr "파일찾기"
   
  -#: ../plugin/UploadForm.php:141
  +#: ../plugin/UploadForm.php:177
   msgid "add files"
   msgstr "파일추가"
   
  -#: ../plugin/UploadForm.php:142
  +#: ../plugin/UploadForm.php:178
   msgid "add a file"
   msgstr "파일추가"
   
  -#: ../plugin/UploadForm.php:144
  +#: ../plugin/UploadForm.php:180
   msgid "Reset"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:145
  +#: ../plugin/UploadForm.php:181
   msgid "Attachments"
   msgstr "첨부"
   
  @@ -955,11 +967,11 @@
   
   #: ../plugin/UploadedFiles.php:452 ../plugin/rcsimport.php:32
   #: ../plugin/rcsimport.php:88 ../plugin/rename.php:77 ../plugin/revert.php:82
  -#: ../plugin/userinfo.php:37 ../wikilib.php:1228 ../wikilib.php:2189
  +#: ../plugin/userinfo.php:37 ../wikilib.php:1230 ../wikilib.php:2192
   msgid "Password"
   msgstr "비밀번호"
   
  -#: ../plugin/UploadedFiles.php:453 ../wikilib.php:1206
  +#: ../plugin/UploadedFiles.php:453 ../wikilib.php:1208
   msgid "Delete selected files"
   msgstr "선택된 파일 지우기"
   
  @@ -979,7 +991,7 @@
   msgid "Voted successfully"
   msgstr "투표가 성공되었습니다"
   
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2628
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2631
   msgid "Others"
   msgstr ""
   
  @@ -1063,7 +1075,7 @@
   msgid "Edit"
   msgstr "고치기"
   
  -#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1229
  +#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1231
   msgid "Delete"
   msgstr "지우기"
   
  @@ -1122,6 +1134,10 @@
   msgid "New post added successfully"
   msgstr "새글이 성공적으로 등록되었습니다."
   
  +#: ../plugin/bookmark.php:33
  +msgid "Invalid bookmark!"
  +msgstr "잘못된 북마크!"
  +
   #: ../plugin/cacheadmin.php:105
   msgid "You are not WikiMaster!!"
   msgstr "위키관리자가 아닙니다!!"
  @@ -1197,7 +1213,7 @@
   msgid "Edit man page"
   msgstr "man 페이지 고치기"
   
  -#: ../plugin/minilogin.php:18 ../wikilib.php:2270
  +#: ../plugin/minilogin.php:18 ../wikilib.php:2273
   msgid "Login or Join"
   msgstr "로그인 혹은 가입"
   
  @@ -1392,7 +1408,7 @@
   msgid "Only WikiMaster can rename this page"
   msgstr "위키관리자만이 페이지 이름을 바꿀 수 있습니다"
   
  -#: ../plugin/rename.php:79 ../wikilib.php:1274
  +#: ../plugin/rename.php:79 ../wikilib.php:1276
   msgid "with revision history"
   msgstr "버전 히스토리와 함께"
   
  @@ -1434,7 +1450,7 @@
   msgid "Select a tarball file to restore"
   msgstr "Restore하기 위한 tarball 파일을 고르세요"
   
  -#: ../plugin/revert.php:23 ../wiki.php:5443
  +#: ../plugin/revert.php:23 ../wiki.php:5475
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr "%s의 옛날 버전"
  @@ -1460,7 +1476,7 @@
   msgid "Are you really want to revert this page ?"
   msgstr "정말로 되돌리시겠습니까 ?"
   
  -#: ../plugin/revert.php:74 ../wikilib.php:1043
  +#: ../plugin/revert.php:74 ../wikilib.php:1045
   msgid "Summary"
   msgstr "요약"
   
  @@ -1726,7 +1742,7 @@
   msgid "Cookie deleted !"
   msgstr "쿠키가 지워졌습니다 !"
   
  -#: ../plugin/userform.php:107 ../wikilib.php:2340
  +#: ../plugin/userform.php:107 ../wikilib.php:2343
   msgid "E-mail new password"
   msgstr "새 비밀번호 받기"
   
  @@ -1807,8 +1823,8 @@
   msgid "You are not allowed to register on this wiki"
   msgstr "위키 등록이 허락되지 않았습니다"
   
  -#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5381
  -#: ../wiki.php:5392
  +#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5411
  +#: ../wiki.php:5422
   msgid "Please contact WikiMasters"
   msgstr "위키관리자에게 문의하세요"
   
  @@ -1945,7 +1961,7 @@
   msgid "File '%s' does not exist."
   msgstr "파일 '%s'이(가) 없습니다"
   
  -#: ../wiki.php:2947 ../wiki.php:2958 ../wiki.php:5621
  +#: ../wiki.php:2947 ../wiki.php:2958 ../wiki.php:5654
   msgid "Invalid ajax action."
   msgstr "잘못된 ajax 액션."
   
  @@ -1971,96 +1987,96 @@
   msgid "Sister Sites Index"
   msgstr ""
   
  -#: ../wiki.php:4494 ../locale/dummy.php:6
  +#: ../wiki.php:4509 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "고치기"
   
  -#: ../wiki.php:4496
  +#: ../wiki.php:4511
   msgid "NotEditable"
   msgstr "고칠수 없음"
   
  -#: ../wiki.php:4500 ../locale/dummy.php:6
  +#: ../wiki.php:4515 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "보기"
   
  -#: ../wiki.php:4501 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4516 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "찾기"
   
  -#: ../wiki.php:4940
  +#: ../wiki.php:4960
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5204
  +#: ../wiki.php:5224
   msgid "Someone logged in at another place !"
   msgstr ""
   
  -#: ../wiki.php:5380
  +#: ../wiki.php:5410
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5391
  +#: ../wiki.php:5421
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:5429 ../wiki.php:5438 ../wikilib.php:1492
  +#: ../wiki.php:5461 ../wiki.php:5470 ../wikilib.php:1494
   msgid "Create this page"
   msgstr "페이지 만들기"
   
  -#: ../wiki.php:5440
  +#: ../wiki.php:5472
   #, c-format
   msgid "%s has saved revisions"
   msgstr "%s이(가) 저장된 옛버전이 있습니다"
   
  -#: ../wiki.php:5441 ../wiki.php:5448
  +#: ../wiki.php:5473 ../wiki.php:5480
   #, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr "%s 혹은 %s를 눌러 전체 찾기를 할 수 있습니다.\n"
   
  -#: ../wiki.php:5446
  +#: ../wiki.php:5478
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr "%s 페이지를 이곳 위키에서 찾을 수 없습니다"
   
  -#: ../wiki.php:5453
  +#: ../wiki.php:5485
   msgid "Please try to search with another word"
   msgstr "다른 단어로 찾아보세요."
   
  -#: ../wiki.php:5465
  +#: ../wiki.php:5497
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr ""
   "%s 아이콘을 누르거나 아래의 탬플리트 목록을 이용해 새 페이지를 만드세요:\n"
   
  -#: ../wiki.php:5468
  +#: ../wiki.php:5500
   msgid "You have no templates"
   msgstr "템플리트가 없습니다"
   
  -#: ../wiki.php:5470
  +#: ../wiki.php:5502
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr "탬플리트를 만드시려면 '%s' 형식의 이름을 가지는 페이지를 만드세요.\n"
   
  -#: ../wiki.php:5481
  +#: ../wiki.php:5513
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr "\"%s\"페이지로 부터 리다리렉트됨"
   
  -#: ../wiki.php:5623
  +#: ../wiki.php:5656
   msgid "Invalid macro action."
   msgstr "잘못된 마크로 액션."
   
  -#: ../wiki.php:5633
  +#: ../wiki.php:5666
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "'%s'은(는) 허락되지 않았습니다"
   
  -#: ../wiki.php:5653
  +#: ../wiki.php:5686
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "\"%s\"을(를) 실패했습니다 !"
   
  -#: ../wiki.php:5656
  +#: ../wiki.php:5689
   msgid "Please enter the valid password"
   msgstr "정확한 비밀번호를 넣어주세요"
   
  @@ -2093,350 +2109,350 @@
   "<b>테이블</b>: || 셀 내용 |||| 두칸에 걸친 내용 ||;<br />\n"
   "테이블이나 제목 끝에 공백이 오면 안됩니다.<br />\n"
   
  -#: ../wikilib.php:761
  +#: ../wikilib.php:763
   msgid "You are not allowed to edit this page !"
   msgstr "이 페이지를 고칠 수 있도록 허락되어있지 않습니다 !"
   
  -#: ../wikilib.php:768
  +#: ../wikilib.php:770
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
  -#: ../wikilib.php:789 ../wikilib.php:1061 ../wikilib.php:1709
  -#: ../wikilib.php:1799 ../wikilib.php:2273 ../wikilib.php:2327
  +#: ../wikilib.php:791 ../wikilib.php:1063 ../wikilib.php:1711
  +#: ../wikilib.php:1801 ../wikilib.php:2276 ../wikilib.php:2330
   msgid "Save"
   msgstr "저장"
   
  -#: ../wikilib.php:797 ../wikilib.php:1048 ../wikilib.php:1717
  -#: ../wikilib.php:1807
  +#: ../wikilib.php:799 ../wikilib.php:1050 ../wikilib.php:1719
  +#: ../wikilib.php:1809
   msgid "Skip to preview"
   msgstr "미리보기로"
   
  -#: ../wikilib.php:908
  +#: ../wikilib.php:910
   msgid "Use one of the following templates as an initial release :\n"
   msgstr "최초 버전으로 다음의 탬플리트를 활용하실 수 있습니다 :\n"
   
  -#: ../wikilib.php:910
  +#: ../wikilib.php:912
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr "탬플리트를 만드시려면 '%s' 형식의 이름으로 페이지를 만드세요."
   
  -#: ../wikilib.php:914
  +#: ../wikilib.php:916
   msgid "Merge"
   msgstr "병합"
   
  -#: ../wikilib.php:915
  +#: ../wikilib.php:917
   msgid "Merge manually"
   msgstr "수동 병합"
   
  -#: ../wikilib.php:916
  +#: ../wikilib.php:918
   msgid "Ignore conflicts"
   msgstr "충돌 무시"
   
  -#: ../wikilib.php:948
  +#: ../wikilib.php:950
   msgid "ReduceEditor"
   msgstr "편집창 줄이기"
   
  -#: ../wikilib.php:949
  +#: ../wikilib.php:951
   msgid "EnlargeEditor"
   msgstr "편집창 늘이기"
   
  -#: ../wikilib.php:953 ../locale/dummy.php:6
  +#: ../wikilib.php:955 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr "인터위키"
   
  -#: ../wikilib.php:955
  +#: ../wikilib.php:957
   msgid "HelpOnEditing"
   msgstr "고치기 도움말"
   
  -#: ../wikilib.php:987
  +#: ../wikilib.php:989
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:1007
  +#: ../wikilib.php:1009
   msgid "Category"
   msgstr "분류"
   
  -#: ../wikilib.php:1015
  +#: ../wikilib.php:1017
   msgid " Select "
   msgstr " 선택 "
   
  -#: ../wikilib.php:1026
  +#: ../wikilib.php:1028
   msgid "Minor edit"
   msgstr ""
   
  -#: ../wikilib.php:1140
  +#: ../wikilib.php:1142
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:1145
  +#: ../wikilib.php:1147
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s은(는) 잘못된 액션"
   
  -#: ../wikilib.php:1147
  +#: ../wikilib.php:1149
   msgid "Is it valid action ?"
   msgstr "올바른 액션입니까 ?"
   
  -#: ../wikilib.php:1194
  +#: ../wikilib.php:1196
   #, c-format
   msgid "File '%s' is deleted"
   msgstr "'%s' 파일이 지워졌습니다"
   
  -#: ../wikilib.php:1196
  +#: ../wikilib.php:1198
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr "'%s' 지우기를 실패했습니다"
   
  -#: ../wikilib.php:1201
  +#: ../wikilib.php:1203
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr "'%s' 디렉토리가 지우졌습니다"
   
  -#: ../wikilib.php:1203
  +#: ../wikilib.php:1205
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr "'%s' 지우기를 실패했습니다"
   
  -#: ../wikilib.php:1213 ../wikilib.php:1233
  +#: ../wikilib.php:1215 ../wikilib.php:1235
   msgid "No files are selected !"
   msgstr "파일을 선택하지 않았습니다"
   
  -#: ../wikilib.php:1226
  +#: ../wikilib.php:1228
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr "정말로 '%s'(을)를 지우시겠습니까 ?"
   
  -#: ../wikilib.php:1230
  +#: ../wikilib.php:1232
   msgid "Delete selected file"
   msgstr "선택된 파일 지우기"
   
  -#: ../wikilib.php:1251
  +#: ../wikilib.php:1253
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr "%s(이)가 지워짐 !"
   
  -#: ../wikilib.php:1266
  +#: ../wikilib.php:1268
   msgid "Please delete this file manually."
   msgstr "파일을 직접 지워주세요."
   
  -#: ../wikilib.php:1268
  +#: ../wikilib.php:1270
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "\"%s\"을(를) 지울까요 ?"
   
  -#: ../wikilib.php:1321
  +#: ../wikilib.php:1323
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
  -#: ../wikilib.php:1494
  +#: ../wikilib.php:1496
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr " 혹은 %s를 눌러 전체찾기를 합니다.\n"
   
  -#: ../wikilib.php:1494
  +#: ../wikilib.php:1496
   msgid "title"
   msgstr "제목"
   
  -#: ../wikilib.php:1508
  +#: ../wikilib.php:1510
   msgid "Please try to fulltext search"
   msgstr "전체 찾기를 해보시기 바랍니다"
   
  -#: ../wikilib.php:1511
  +#: ../wikilib.php:1513
   #, c-format
   msgid "You can also click %s to fulltext search.\n"
   msgstr "%s 아이콘을 눌러 전체 찾기를 하실 수 있습니다.\n"
   
  -#: ../wikilib.php:1556 ../wikilib.php:1664
  +#: ../wikilib.php:1558 ../wikilib.php:1666
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "%s을(를) 고치는 동안 다른 사람이 이 페이지를 저장했습니다"
   
  -#: ../wikilib.php:1562
  +#: ../wikilib.php:1564
   msgid "Section edit is not valid for non-exists page."
   msgstr "없는 페이지에 대한 섹션 편집은 가능하지 않습니다"
   
  -#: ../wikilib.php:1595 ../wikilib.php:1840
  +#: ../wikilib.php:1597 ../wikilib.php:1842
   msgid "mail does not supported by default."
   msgstr "메일이 지원되지 않습니다"
   
  -#: ../wikilib.php:1599 ../wikilib.php:1844
  +#: ../wikilib.php:1601 ../wikilib.php:1846
   msgid "Sent notification mail."
   msgstr "메일을 보냈습니다"
   
  -#: ../wikilib.php:1601 ../wikilib.php:1846
  +#: ../wikilib.php:1603 ../wikilib.php:1848
   msgid "No subscribers found."
   msgstr "구독자가 없습니다"
   
  -#: ../wikilib.php:1606 ../wikilib.php:1851
  +#: ../wikilib.php:1608 ../wikilib.php:1853
   #, c-format
   msgid "%s is not editable"
   msgstr "%s(이)가 쓰기가능하지 않음"
   
  -#: ../wikilib.php:1608 ../wikilib.php:1853
  +#: ../wikilib.php:1610 ../wikilib.php:1855
   #, c-format
   msgid "%s is saved"
   msgstr "%s(이)가 저장됨"
   
  -#: ../wikilib.php:1655
  +#: ../wikilib.php:1657
   msgid "Goto Editor"
   msgstr "편집기로 가기"
   
  -#: ../wikilib.php:1669
  +#: ../wikilib.php:1671
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr "%s 페이지 최근 내용이 병합되었습니다."
   
  -#: ../wikilib.php:1670
  +#: ../wikilib.php:1672
   #, c-format
   msgid "%s is merged successfully"
   msgstr "%s 페이지가 성공적으로 병합되었습니다"
   
  -#: ../wikilib.php:1674
  +#: ../wikilib.php:1676
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr "%s에 대하여 병합 충돌이 발견되었습니다 !"
   
  -#: ../wikilib.php:1675
  +#: ../wikilib.php:1677
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr "%s에 대해 병합이 취소되었습니다."
   
  -#: ../wikilib.php:1676
  +#: ../wikilib.php:1678
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1677
  +#: ../wikilib.php:1679
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1682
  +#: ../wikilib.php:1684
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr "%s에 대해 병합을 합니다"
   
  -#: ../wikilib.php:1683
  +#: ../wikilib.php:1685
   msgid "Please resolve conflicts manually."
   msgstr "충돌을 직접 해결하시기 바랍니다."
   
  -#: ../wikilib.php:1686
  +#: ../wikilib.php:1688
   #, c-format
   msgid "Force merging for %s !"
   msgstr "%s에 대해 병합이 강제로 되었습니다 !"
   
  -#: ../wikilib.php:1687
  +#: ../wikilib.php:1689
   msgid "Please be careful, you could damage useful information."
   msgstr "주의하시기 바랍니다. 중요한 정보를 잃어버릴 수도 있습니다."
   
  -#: ../wikilib.php:1701
  +#: ../wikilib.php:1703
   msgid "Conflict error!"
   msgstr "충돌 오류!"
   
  -#: ../wikilib.php:1785
  +#: ../wikilib.php:1787
   #, c-format
   msgid "Preview of %s"
   msgstr "%s 미리보기"
   
  -#: ../wikilib.php:1885
  +#: ../wikilib.php:1888
   msgid "Nobody subscribed to this page."
   msgstr "아무도 페이지를 구독하지 않고있습니다."
   
  -#: ../wikilib.php:1904
  +#: ../wikilib.php:1907
   #, c-format
   msgid "%s page is modified"
   msgstr "%s 페이지가 변경되었습니다"
   
  -#: ../wikilib.php:1933
  +#: ../wikilib.php:1936
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:1946
  +#: ../wikilib.php:1949
   msgid "Send notification mails to all subscribers"
   msgstr "모든 구독자에게 메일을 보냅니다"
   
  -#: ../wikilib.php:1951
  +#: ../wikilib.php:1954
   msgid "Mails are sent successfully"
   msgstr "메일이 성공적으로 보내졌습니다"
   
  -#: ../wikilib.php:1952
  +#: ../wikilib.php:1955
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr "'%s'에게 메일을 보냈습니다"
   
  -#: ../wikilib.php:1954
  +#: ../wikilib.php:1957
   msgid "Fail to send mail"
   msgstr "메일 보내기 실패했습니다"
   
  -#: ../wikilib.php:1965
  +#: ../wikilib.php:1968
   msgid "This wiki does not support sendmail"
   msgstr "위키에서 sendmail을 지원받지 못합니다"
   
  -#: ../wikilib.php:2063
  +#: ../wikilib.php:2066
   msgid "Invalid regular expression !"
   msgstr "잘못된 정규 표현식 !"
   
  -#: ../wikilib.php:2087
  +#: ../wikilib.php:2090
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:2090
  +#: ../wikilib.php:2093
   msgid "Infinite loop possible!"
   msgstr "무한 루프가 가능함!"
   
  -#: ../wikilib.php:2205
  +#: ../wikilib.php:2208
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:2206
  +#: ../wikilib.php:2209
   msgid "OpenID"
   msgstr ""
   
  -#: ../wikilib.php:2218 ../wikilib.php:2345
  +#: ../wikilib.php:2221 ../wikilib.php:2348
   msgid "ID"
   msgstr "아이디"
   
  -#: ../wikilib.php:2253 ../wikilib.php:2338
  +#: ../wikilib.php:2256 ../wikilib.php:2341
   msgid "Make profile"
   msgstr "사용자 등록"
   
  -#: ../wikilib.php:2255
  +#: ../wikilib.php:2258
   msgid "password again"
   msgstr "비밀번호 재입력"
   
  -#: ../wikilib.php:2257 ../wikilib.php:2306
  +#: ../wikilib.php:2260 ../wikilib.php:2309
   msgid "Mail"
   msgstr "메일"
   
  -#: ../wikilib.php:2279
  +#: ../wikilib.php:2282
   msgid "New password"
   msgstr "새 비밀번호"
   
  -#: ../wikilib.php:2284
  +#: ../wikilib.php:2287
   msgid "Nickname"
   msgstr "별명"
   
  -#: ../wikilib.php:2307
  +#: ../wikilib.php:2310
   msgid "Time Zone"
   msgstr "시간대"
   
  -#: ../wikilib.php:2316
  +#: ../wikilib.php:2319
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:2629
  +#: ../wikilib.php:2632
   msgid "Show all"
   msgstr "모두 보기"
   
  -#: ../wikilib.php:2767
  +#: ../wikilib.php:2770
   msgid "Contents"
   msgstr "목차"
   
  -#: ../wikilib.php:2887
  +#: ../wikilib.php:2890
   #, c-format
   msgid "Title search for \"%s\""
   msgstr "\"%s\"에 대한 제목 찾기"
  
  
  
  1.28      +162 -146  moniwiki/locale/po/moniwiki.pot
  
  Index: moniwiki.pot
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/moniwiki.pot,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- moniwiki.pot	29 Jul 2009 17:52:45 -0000	1.27
  +++ moniwiki.pot	19 Aug 2009 07:35:01 -0000	1.28
  @@ -7,7 +7,7 @@
   msgstr ""
   "Project-Id-Version: PACKAGE VERSION\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2009-07-30 00:37+0900\n"
  +"POT-Creation-Date: 2009-08-19 16:34+0900\n"
   "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
   "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
   "Language-Team: LANGUAGE <LL@li.org>\n"
  @@ -102,7 +102,7 @@
   msgid "Title"
   msgstr ""
   
  -#: ../plugin/Blog.php:268 ../wikilib.php:1052
  +#: ../plugin/Blog.php:268 ../wikilib.php:1054
   msgid "GUI"
   msgstr ""
   
  @@ -183,8 +183,8 @@
   msgid "Comment"
   msgstr ""
   
  -#: ../plugin/Comment.php:93 ../wikilib.php:795 ../wikilib.php:1046
  -#: ../wikilib.php:1715 ../wikilib.php:1805 ../monisetup.php:1305
  +#: ../plugin/Comment.php:93 ../wikilib.php:797 ../wikilib.php:1048
  +#: ../wikilib.php:1717 ../wikilib.php:1807 ../monisetup.php:1305
   msgid "Preview"
   msgstr ""
   
  @@ -205,17 +205,17 @@
   msgstr ""
   
   #: ../plugin/Comment.php:169 ../plugin/userform.php:118
  -#: ../plugin/userform.php:181 ../plugin/userform.php:204 ../wikilib.php:1758
  +#: ../plugin/userform.php:181 ../plugin/userform.php:204 ../wikilib.php:1760
   msgid "Invalid ticket !"
   msgstr ""
   
   #: ../plugin/Comment.php:174 ../plugin/userform.php:120
  -#: ../plugin/userform.php:206 ../wikilib.php:1763
  +#: ../plugin/userform.php:206 ../wikilib.php:1765
   msgid "You need a ticket !"
   msgstr ""
   
   #: ../plugin/Comment.php:196 ../plugin/Gallery.php:174 ../plugin/bbs.php:1009
  -#: ../wikilib.php:1581 ../wikilib.php:1779
  +#: ../wikilib.php:1583 ../wikilib.php:1781
   msgid ""
   "Sorry, can not save page because some messages are blocked in this wiki."
   msgstr ""
  @@ -242,7 +242,7 @@
   msgid "Version info is not available in this wiki"
   msgstr ""
   
  -#: ../plugin/Diff.php:426 ../wikilib.php:1735
  +#: ../plugin/Diff.php:426 ../wikilib.php:1737
   msgid "No difference found"
   msgstr ""
   
  @@ -309,18 +309,18 @@
   msgstr ""
   
   #: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:38
  -#: ../wikilib.php:1502
  +#: ../wikilib.php:1504
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr ""
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1504
  +#: ../wikilib.php:1506
   msgid "page"
   msgstr ""
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1504
  +#: ../wikilib.php:1506
   msgid "pages"
   msgstr ""
   
  @@ -338,8 +338,8 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4498
  -#: ../wikilib.php:1032
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4513
  +#: ../wikilib.php:1034
   msgid "Refresh"
   msgstr ""
   
  @@ -353,8 +353,8 @@
   msgid "You can also click %s to search title.\n"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5441 ../wiki.php:5448
  -#: ../wikilib.php:1512
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5473 ../wiki.php:5480
  +#: ../wikilib.php:1514
   msgid "here"
   msgstr ""
   
  @@ -370,7 +370,7 @@
   msgid "Case-sensitive searching"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:77 ../wikilib.php:2870 ../wikilib.php:2932
  +#: ../plugin/FullSearch.php:77 ../wikilib.php:2873 ../wikilib.php:2935
   msgid "Go"
   msgstr ""
   
  @@ -378,7 +378,7 @@
   msgid "Empty expression"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:144 ../wikilib.php:2891
  +#: ../plugin/FullSearch.php:144 ../wikilib.php:2894
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr ""
  @@ -395,8 +395,8 @@
   msgid "show comments"
   msgstr ""
   
  -#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1568
  -#: ../wikilib.php:1733
  +#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1570
  +#: ../wikilib.php:1735
   #, c-format
   msgid "Go back or return to %s"
   msgstr ""
  @@ -581,7 +581,7 @@
   msgid "Select keywords for %s"
   msgstr ""
   
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1389 ../wikilib.php:2878
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1391 ../wikilib.php:2881
   msgid "Use more specific text"
   msgstr ""
   
  @@ -742,20 +742,20 @@
   msgid "days ago"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:264
  +#: ../plugin/RecentChanges.php:265
   msgid "set bookmark"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:273
  +#: ../plugin/RecentChanges.php:270
   msgid "Bookmark"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:335
  +#: ../plugin/RecentChanges.php:338
   #, c-format
   msgid "%s changes"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:349
  +#: ../plugin/RecentChanges.php:352
   msgid "Recent Changes"
   msgstr ""
   
  @@ -763,7 +763,7 @@
   msgid "Files..."
   msgstr ""
   
  -#: ../plugin/SWFUpload.php:137
  +#: ../plugin/SWFUpload.php:137 ../plugin/UploadFile.php:363
   msgid "Upload"
   msgstr ""
   
  @@ -857,7 +857,7 @@
   msgid "TwinPages of %s"
   msgstr ""
   
  -#: ../plugin/TwinPages.php:19 ../wiki.php:5427
  +#: ../plugin/TwinPages.php:19 ../wiki.php:5459
   msgid "See [TwinPages]: "
   msgstr ""
   
  @@ -893,6 +893,10 @@
   msgid "Files are uploaded successfully"
   msgstr ""
   
  +#: ../plugin/UploadFile.php:343
  +msgid "Multi upload form"
  +msgstr ""
  +
   #: ../plugin/UploadFile.php:352
   msgid "Replace original file"
   msgstr ""
  @@ -910,27 +914,35 @@
   msgid "or %s."
   msgstr ""
   
  -#: ../plugin/UploadFile.php:366 ../plugin/UploadForm.php:143
  +#: ../plugin/UploadFile.php:366
  +msgid "Multiple Upload files"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:374 ../plugin/UploadForm.php:179
   msgid "Upload files"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:16
  +#: ../plugin/UploadForm.php:17
  +msgid "Successfully Uploaded"
  +msgstr ""
  +
  +#: ../plugin/UploadForm.php:18
   msgid "Choose File"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:141
  +#: ../plugin/UploadForm.php:177
   msgid "add files"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:142
  +#: ../plugin/UploadForm.php:178
   msgid "add a file"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:144
  +#: ../plugin/UploadForm.php:180
   msgid "Reset"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:145
  +#: ../plugin/UploadForm.php:181
   msgid "Attachments"
   msgstr ""
   
  @@ -957,11 +969,11 @@
   
   #: ../plugin/UploadedFiles.php:452 ../plugin/rcsimport.php:32
   #: ../plugin/rcsimport.php:88 ../plugin/rename.php:77 ../plugin/revert.php:82
  -#: ../plugin/userinfo.php:37 ../wikilib.php:1228 ../wikilib.php:2189
  +#: ../plugin/userinfo.php:37 ../wikilib.php:1230 ../wikilib.php:2192
   msgid "Password"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:453 ../wikilib.php:1206
  +#: ../plugin/UploadedFiles.php:453 ../wikilib.php:1208
   msgid "Delete selected files"
   msgstr ""
   
  @@ -981,7 +993,7 @@
   msgid "Voted successfully"
   msgstr ""
   
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2628
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2631
   msgid "Others"
   msgstr ""
   
  @@ -1065,7 +1077,7 @@
   msgid "Edit"
   msgstr ""
   
  -#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1229
  +#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1231
   msgid "Delete"
   msgstr ""
   
  @@ -1124,6 +1136,10 @@
   msgid "New post added successfully"
   msgstr ""
   
  +#: ../plugin/bookmark.php:33
  +msgid "Invalid bookmark!"
  +msgstr ""
  +
   #: ../plugin/cacheadmin.php:105
   msgid "You are not WikiMaster!!"
   msgstr ""
  @@ -1199,7 +1215,7 @@
   msgid "Edit man page"
   msgstr ""
   
  -#: ../plugin/minilogin.php:18 ../wikilib.php:2270
  +#: ../plugin/minilogin.php:18 ../wikilib.php:2273
   msgid "Login or Join"
   msgstr ""
   
  @@ -1393,7 +1409,7 @@
   msgid "Only WikiMaster can rename this page"
   msgstr ""
   
  -#: ../plugin/rename.php:79 ../wikilib.php:1274
  +#: ../plugin/rename.php:79 ../wikilib.php:1276
   msgid "with revision history"
   msgstr ""
   
  @@ -1435,7 +1451,7 @@
   msgid "Select a tarball file to restore"
   msgstr ""
   
  -#: ../plugin/revert.php:23 ../wiki.php:5443
  +#: ../plugin/revert.php:23 ../wiki.php:5475
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr ""
  @@ -1461,7 +1477,7 @@
   msgid "Are you really want to revert this page ?"
   msgstr ""
   
  -#: ../plugin/revert.php:74 ../wikilib.php:1043
  +#: ../plugin/revert.php:74 ../wikilib.php:1045
   msgid "Summary"
   msgstr ""
   
  @@ -1723,7 +1739,7 @@
   msgid "Cookie deleted !"
   msgstr ""
   
  -#: ../plugin/userform.php:107 ../wikilib.php:2340
  +#: ../plugin/userform.php:107 ../wikilib.php:2343
   msgid "E-mail new password"
   msgstr ""
   
  @@ -1804,8 +1820,8 @@
   msgid "You are not allowed to register on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5381
  -#: ../wiki.php:5392
  +#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5411
  +#: ../wiki.php:5422
   msgid "Please contact WikiMasters"
   msgstr ""
   
  @@ -1942,7 +1958,7 @@
   msgid "File '%s' does not exist."
   msgstr ""
   
  -#: ../wiki.php:2947 ../wiki.php:2958 ../wiki.php:5621
  +#: ../wiki.php:2947 ../wiki.php:2958 ../wiki.php:5654
   msgid "Invalid ajax action."
   msgstr ""
   
  @@ -1968,95 +1984,95 @@
   msgid "Sister Sites Index"
   msgstr ""
   
  -#: ../wiki.php:4494 ../locale/dummy.php:6
  +#: ../wiki.php:4509 ../locale/dummy.php:6
   msgid "EditText"
   msgstr ""
   
  -#: ../wiki.php:4496
  +#: ../wiki.php:4511
   msgid "NotEditable"
   msgstr ""
   
  -#: ../wiki.php:4500 ../locale/dummy.php:6
  +#: ../wiki.php:4515 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:4501 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4516 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr ""
   
  -#: ../wiki.php:4940
  +#: ../wiki.php:4960
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5204
  +#: ../wiki.php:5224
   msgid "Someone logged in at another place !"
   msgstr ""
   
  -#: ../wiki.php:5380
  +#: ../wiki.php:5410
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5391
  +#: ../wiki.php:5421
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:5429 ../wiki.php:5438 ../wikilib.php:1492
  +#: ../wiki.php:5461 ../wiki.php:5470 ../wikilib.php:1494
   msgid "Create this page"
   msgstr ""
   
  -#: ../wiki.php:5440
  +#: ../wiki.php:5472
   #, c-format
   msgid "%s has saved revisions"
   msgstr ""
   
  -#: ../wiki.php:5441 ../wiki.php:5448
  +#: ../wiki.php:5473 ../wiki.php:5480
   #, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr ""
   
  -#: ../wiki.php:5446
  +#: ../wiki.php:5478
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr ""
   
  -#: ../wiki.php:5453
  +#: ../wiki.php:5485
   msgid "Please try to search with another word"
   msgstr ""
   
  -#: ../wiki.php:5465
  +#: ../wiki.php:5497
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr ""
   
  -#: ../wiki.php:5468
  +#: ../wiki.php:5500
   msgid "You have no templates"
   msgstr ""
   
  -#: ../wiki.php:5470
  +#: ../wiki.php:5502
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
   
  -#: ../wiki.php:5481
  +#: ../wiki.php:5513
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
  -#: ../wiki.php:5623
  +#: ../wiki.php:5656
   msgid "Invalid macro action."
   msgstr ""
   
  -#: ../wiki.php:5633
  +#: ../wiki.php:5666
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr ""
   
  -#: ../wiki.php:5653
  +#: ../wiki.php:5686
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:5656
  +#: ../wiki.php:5689
   msgid "Please enter the valid password"
   msgstr ""
   
  @@ -2077,350 +2093,350 @@
   "no trailing white space allowed after tables or titles.<br />\n"
   msgstr ""
   
  -#: ../wikilib.php:761
  +#: ../wikilib.php:763
   msgid "You are not allowed to edit this page !"
   msgstr ""
   
  -#: ../wikilib.php:768
  +#: ../wikilib.php:770
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
  -#: ../wikilib.php:789 ../wikilib.php:1061 ../wikilib.php:1709
  -#: ../wikilib.php:1799 ../wikilib.php:2273 ../wikilib.php:2327
  +#: ../wikilib.php:791 ../wikilib.php:1063 ../wikilib.php:1711
  +#: ../wikilib.php:1801 ../wikilib.php:2276 ../wikilib.php:2330
   msgid "Save"
   msgstr ""
   
  -#: ../wikilib.php:797 ../wikilib.php:1048 ../wikilib.php:1717
  -#: ../wikilib.php:1807
  +#: ../wikilib.php:799 ../wikilib.php:1050 ../wikilib.php:1719
  +#: ../wikilib.php:1809
   msgid "Skip to preview"
   msgstr ""
   
  -#: ../wikilib.php:908
  +#: ../wikilib.php:910
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   
  -#: ../wikilib.php:910
  +#: ../wikilib.php:912
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr ""
   
  -#: ../wikilib.php:914
  +#: ../wikilib.php:916
   msgid "Merge"
   msgstr ""
   
  -#: ../wikilib.php:915
  +#: ../wikilib.php:917
   msgid "Merge manually"
   msgstr ""
   
  -#: ../wikilib.php:916
  +#: ../wikilib.php:918
   msgid "Ignore conflicts"
   msgstr ""
   
  -#: ../wikilib.php:948
  +#: ../wikilib.php:950
   msgid "ReduceEditor"
   msgstr ""
   
  -#: ../wikilib.php:949
  +#: ../wikilib.php:951
   msgid "EnlargeEditor"
   msgstr ""
   
  -#: ../wikilib.php:953 ../locale/dummy.php:6
  +#: ../wikilib.php:955 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
  -#: ../wikilib.php:955
  +#: ../wikilib.php:957
   msgid "HelpOnEditing"
   msgstr ""
   
  -#: ../wikilib.php:987
  +#: ../wikilib.php:989
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:1007
  +#: ../wikilib.php:1009
   msgid "Category"
   msgstr ""
   
  -#: ../wikilib.php:1015
  +#: ../wikilib.php:1017
   msgid " Select "
   msgstr ""
   
  -#: ../wikilib.php:1026
  +#: ../wikilib.php:1028
   msgid "Minor edit"
   msgstr ""
   
  -#: ../wikilib.php:1140
  +#: ../wikilib.php:1142
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:1145
  +#: ../wikilib.php:1147
   #, c-format
   msgid "%s is not valid action"
   msgstr ""
   
  -#: ../wikilib.php:1147
  +#: ../wikilib.php:1149
   msgid "Is it valid action ?"
   msgstr ""
   
  -#: ../wikilib.php:1194
  +#: ../wikilib.php:1196
   #, c-format
   msgid "File '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:1196
  +#: ../wikilib.php:1198
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1201
  +#: ../wikilib.php:1203
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:1203
  +#: ../wikilib.php:1205
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1213 ../wikilib.php:1233
  +#: ../wikilib.php:1215 ../wikilib.php:1235
   msgid "No files are selected !"
   msgstr ""
   
  -#: ../wikilib.php:1226
  +#: ../wikilib.php:1228
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
  -#: ../wikilib.php:1230
  +#: ../wikilib.php:1232
   msgid "Delete selected file"
   msgstr ""
   
  -#: ../wikilib.php:1251
  +#: ../wikilib.php:1253
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr ""
   
  -#: ../wikilib.php:1266
  +#: ../wikilib.php:1268
   msgid "Please delete this file manually."
   msgstr ""
   
  -#: ../wikilib.php:1268
  +#: ../wikilib.php:1270
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr ""
   
  -#: ../wikilib.php:1321
  +#: ../wikilib.php:1323
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
  -#: ../wikilib.php:1494
  +#: ../wikilib.php:1496
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
   
  -#: ../wikilib.php:1494
  +#: ../wikilib.php:1496
   msgid "title"
   msgstr ""
   
  -#: ../wikilib.php:1508
  +#: ../wikilib.php:1510
   msgid "Please try to fulltext search"
   msgstr ""
   
  -#: ../wikilib.php:1511
  +#: ../wikilib.php:1513
   #, c-format
   msgid "You can also click %s to fulltext search.\n"
   msgstr ""
   
  -#: ../wikilib.php:1556 ../wikilib.php:1664
  +#: ../wikilib.php:1558 ../wikilib.php:1666
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr ""
   
  -#: ../wikilib.php:1562
  +#: ../wikilib.php:1564
   msgid "Section edit is not valid for non-exists page."
   msgstr ""
   
  -#: ../wikilib.php:1595 ../wikilib.php:1840
  +#: ../wikilib.php:1597 ../wikilib.php:1842
   msgid "mail does not supported by default."
   msgstr ""
   
  -#: ../wikilib.php:1599 ../wikilib.php:1844
  +#: ../wikilib.php:1601 ../wikilib.php:1846
   msgid "Sent notification mail."
   msgstr ""
   
  -#: ../wikilib.php:1601 ../wikilib.php:1846
  +#: ../wikilib.php:1603 ../wikilib.php:1848
   msgid "No subscribers found."
   msgstr ""
   
  -#: ../wikilib.php:1606 ../wikilib.php:1851
  +#: ../wikilib.php:1608 ../wikilib.php:1853
   #, c-format
   msgid "%s is not editable"
   msgstr ""
   
  -#: ../wikilib.php:1608 ../wikilib.php:1853
  +#: ../wikilib.php:1610 ../wikilib.php:1855
   #, c-format
   msgid "%s is saved"
   msgstr ""
   
  -#: ../wikilib.php:1655
  +#: ../wikilib.php:1657
   msgid "Goto Editor"
   msgstr ""
   
  -#: ../wikilib.php:1669
  +#: ../wikilib.php:1671
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr ""
   
  -#: ../wikilib.php:1670
  +#: ../wikilib.php:1672
   #, c-format
   msgid "%s is merged successfully"
   msgstr ""
   
  -#: ../wikilib.php:1674
  +#: ../wikilib.php:1676
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1675
  +#: ../wikilib.php:1677
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr ""
   
  -#: ../wikilib.php:1676
  +#: ../wikilib.php:1678
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1677
  +#: ../wikilib.php:1679
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1682
  +#: ../wikilib.php:1684
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr ""
   
  -#: ../wikilib.php:1683
  +#: ../wikilib.php:1685
   msgid "Please resolve conflicts manually."
   msgstr ""
   
  -#: ../wikilib.php:1686
  +#: ../wikilib.php:1688
   #, c-format
   msgid "Force merging for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1687
  +#: ../wikilib.php:1689
   msgid "Please be careful, you could damage useful information."
   msgstr ""
   
  -#: ../wikilib.php:1701
  +#: ../wikilib.php:1703
   msgid "Conflict error!"
   msgstr ""
   
  -#: ../wikilib.php:1785
  +#: ../wikilib.php:1787
   #, c-format
   msgid "Preview of %s"
   msgstr ""
   
  -#: ../wikilib.php:1885
  +#: ../wikilib.php:1888
   msgid "Nobody subscribed to this page."
   msgstr ""
   
  -#: ../wikilib.php:1904
  +#: ../wikilib.php:1907
   #, c-format
   msgid "%s page is modified"
   msgstr ""
   
  -#: ../wikilib.php:1933
  +#: ../wikilib.php:1936
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:1946
  +#: ../wikilib.php:1949
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:1951
  +#: ../wikilib.php:1954
   msgid "Mails are sent successfully"
   msgstr ""
   
  -#: ../wikilib.php:1952
  +#: ../wikilib.php:1955
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1954
  +#: ../wikilib.php:1957
   msgid "Fail to send mail"
   msgstr ""
   
  -#: ../wikilib.php:1965
  +#: ../wikilib.php:1968
   msgid "This wiki does not support sendmail"
   msgstr ""
   
  -#: ../wikilib.php:2063
  +#: ../wikilib.php:2066
   msgid "Invalid regular expression !"
   msgstr ""
   
  -#: ../wikilib.php:2087
  +#: ../wikilib.php:2090
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:2090
  +#: ../wikilib.php:2093
   msgid "Infinite loop possible!"
   msgstr ""
   
  -#: ../wikilib.php:2205
  +#: ../wikilib.php:2208
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:2206
  +#: ../wikilib.php:2209
   msgid "OpenID"
   msgstr ""
   
  -#: ../wikilib.php:2218 ../wikilib.php:2345
  +#: ../wikilib.php:2221 ../wikilib.php:2348
   msgid "ID"
   msgstr ""
   
  -#: ../wikilib.php:2253 ../wikilib.php:2338
  +#: ../wikilib.php:2256 ../wikilib.php:2341
   msgid "Make profile"
   msgstr ""
   
  -#: ../wikilib.php:2255
  +#: ../wikilib.php:2258
   msgid "password again"
   msgstr ""
   
  -#: ../wikilib.php:2257 ../wikilib.php:2306
  +#: ../wikilib.php:2260 ../wikilib.php:2309
   msgid "Mail"
   msgstr ""
   
  -#: ../wikilib.php:2279
  +#: ../wikilib.php:2282
   msgid "New password"
   msgstr ""
   
  -#: ../wikilib.php:2284
  +#: ../wikilib.php:2287
   msgid "Nickname"
   msgstr ""
   
  -#: ../wikilib.php:2307
  +#: ../wikilib.php:2310
   msgid "Time Zone"
   msgstr ""
   
  -#: ../wikilib.php:2316
  +#: ../wikilib.php:2319
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:2629
  +#: ../wikilib.php:2632
   msgid "Show all"
   msgstr ""
   
  -#: ../wikilib.php:2767
  +#: ../wikilib.php:2770
   msgid "Contents"
   msgstr ""
   
  -#: ../wikilib.php:2887
  +#: ../wikilib.php:2890
   #, c-format
   msgid "Title search for \"%s\""
   msgstr ""
  
  
  


wkpark      2009/08/22 13:35:18

  Modified:    .        wiki.php wikilib.php
  Log:
  wiki.php : enclose text with <span> in the anchor.
  set locale correctly.
  wikilib.php : check comment length. strip CRs.
  
  Revision  Changes    Path
  1.485     +18 -18    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.484
  retrieving revision 1.485
  diff -u -r1.484 -r1.485
  --- wiki.php	19 Aug 2009 06:46:14 -0000	1.484
  +++ wiki.php	22 Aug 2009 04:35:18 -0000	1.485
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.484 2009/08/19 06:46:14 wkpark Exp $
  +// $Id: wiki.php,v 1.485 2009/08/22 04:35:18 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.484 $',1,-1);
  +$_revision = substr('$Revision: 1.485 $',1,-1);
   $_release = '1.1.4-RC3';
   
   #ob_start("ob_gzhandler");
  @@ -1006,6 +1006,7 @@
     
       $myid=$user->id;
   
  +    $comment=preg_replace("/\r\n|\r/", " ", $comment);
       $comment=strtr($comment,"\t"," ");
       $fp_editlog = fopen($this->editlog_name, 'a+');
       $time= time();
  @@ -3011,7 +3012,7 @@
         $pageurl=$this->page->urlname;
       if ($query_string{0}=='?') $attr=empty($attr) ? 'rel="nofollow"':$attr.' rel="nofollow"';
       $url=$this->link_url($pageurl,$query_string);
  -    return sprintf("<a href=\"%s\" %s>%s</a>", $url, $attr, $text);
  +    return sprintf("<a href=\"%s\" %s><span>%s</span></a>", $url, $attr, $text);
     }
   
     function link_to($query_string="",$text="",$attr="") {
  @@ -4556,7 +4557,7 @@
           $menu=$this->menu_bra.implode($this->menu_sep,$menus).$this->menu_cat;
         } else {
           $menu="<div id='wikiAction'>";
  -        $menu.='<ul><li>'.implode("</li>\n<li>\n",$menus)."</li></ul>";
  +        $menu.='<ul><li class="first">'.implode("</li>\n<li>\n",$menus)."</li></ul>";
           $menu.="</div>";
         }
       }
  @@ -5124,25 +5125,24 @@
       'fr_FR'=>array('ISO-8859-1'),
       'ko_KR'=>array('EUC-KR','UHC'),
     );
  +  $charset= strtoupper($charset);
     if ($lang == 'auto') {
       # get broswer's settings
       $langs=get_locales();
  -    $lang= $langs[0];
  -
  -    $charset= strtoupper($charset);
  -    # XXX
  -    $server_charset = '';
  -    if (function_exists('nl_langinfo'))
  -      $server_charset= nl_langinfo(CODESET);
  +    $lang= $langs[0]; // XXX
  +  }
  +  // check server charset
  +  $server_charset = '';
  +  if (function_exists('nl_langinfo'))
  +    $server_charset= nl_langinfo(CODESET);
   
  -    if ($charset == 'UTF-8') {
  -      if ($charset != $server_charset) $lang.=".".$charset;
  +  if ($charset == 'UTF-8') {
  +    if ($charset != $server_charset) $lang.=".".$charset;
  +  } else {
  +    if ($supported[$lang] && in_array($charset,$supported[$lang])) {
  +      return $lang.'.'.$charset;
       } else {
  -      if ($supported[$lang] && in_array($charset,$supported[$lang])) {
  -        return $lang.'.'.$charset;
  -      } else {
  -        return 'en_US'; // default
  -      }
  +      return 'en_US'; // default
       }
     }
     return $lang;
  
  
  
  1.280     +9 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.279
  retrieving revision 1.280
  diff -u -r1.279 -r1.280
  --- wikilib.php	19 Aug 2009 05:29:37 -0000	1.279
  +++ wikilib.php	22 Aug 2009 04:35:18 -0000	1.280
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.279 2009/08/19 05:29:37 wkpark Exp $
  +// $Id: wikilib.php,v 1.280 2009/08/22 04:35:18 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1636,6 +1636,7 @@
   
     $savetext=preg_replace("/\r\n|\r/", "\n", $savetext);
     $savetext=_stripslashes($savetext);
  +  $comment=_stripslashes($options['comment']);
     $section_savetext='';
     if (isset($options['section'])) {
       if ($formatter->page->exists()) {
  @@ -1738,6 +1739,13 @@
       $formatter->send_footer();
       return;
     }
  +  if ($comment && (function_exists('mb_strlen') and mb_strlen($comment, $DBInfo->charset) > 256) or (strlen($comment) > 256) ) {
  +    $options['msg']=sprintf(_("Go back or return to %s"),$formatter->link_tag($formatter->page->urlname,"",htmlspecialchars($options['page'])));
  +    $formatter->send_header("",$options);
  +    $formatter->send_title(_("Too long Comment"),"",$options);
  +    $formatter->send_footer();
  +    return;
  +  }
   
     // XXX captcha
     $use_any=0;
  @@ -1833,7 +1841,6 @@
         }
       }
   
  -    $comment=_stripslashes($options['comment']);
       $formatter->page->write($savetext);
       $ret=$DBInfo->savePage($formatter->page,$comment,$options);
       if (($ret != -1) and $DBInfo->notify and ($options['minor'] != 1)) {
  
  
  


wkpark      2009/08/22 13:36:20

  Modified:    plugin   Info.php
  Log:
  remove <span> tags
  
  Revision  Changes    Path
  1.26      +8 -4      moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Info.php,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- Info.php	19 Aug 2009 05:29:37 -0000	1.25
  +++ Info.php	22 Aug 2009 04:36:20 -0000	1.26
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Info plugin for the MoniWiki
   //
  -// $Id: Info.php,v 1.25 2009/08/19 05:29:37 wkpark Exp $
  +// $Id: Info.php,v 1.26 2009/08/22 04:36:20 wkpark Exp $
   
   function _parse_rlog($formatter,$log,$options=array()) {
     global $DBInfo;
  @@ -65,7 +65,7 @@
         else {$state=1; continue;}
       }
       if ($state==1 and $ok==1) {
  -      $lnk=$formatter->link_to("?action=info&all=1",'<span>'._("Show all revisions").'</span>',' class="button small"');
  +      $lnk=$formatter->link_to("?action=info&all=1",_("Show all revisions"),' class="button small"');
         $out.='<tr><td colspan="2"></td><th colspan="4">'.$lnk.'</th></tr>';
         break;
       }
  @@ -136,8 +136,12 @@
              else if (!empty($DBInfo->use_nick)) {
                $u = $DBInfo->udb->getUser($user);
                if (!empty($u->info['nick'])) {
  +               if ($DBInfo->interwiki['User']) {
  +                 $ip=$formatter->link_repl('[wiki:User:'.$user.' '.$u->info['nick'].']');
  +               } else {
                  $ip=$formatter->link_repl('[wiki:'.$user.' '.$u->info['nick'].']');
                }
  +             }
                $users[$user]=$ip;
              } else if (strpos($user,' ') !== false) {
                $ip=$formatter->link_repl($user);
  @@ -179,11 +183,11 @@
            $out.="<td nowrap='nowrap' class='view'>";
            foreach ($actions as $k=>$v) {
              $k=is_numeric($k) ? $v:$k;
  -           $out.=$formatter->link_to("?action=$k&amp;rev=$rev",'<span>'._($v).'</span>', ' class="button-small"').' ';
  +           $out.=$formatter->link_to("?action=$k&amp;rev=$rev",_($v), ' class="button-small"').' ';
            }
            if ($flag) {
               if ($diff_action)
  -              $out.= " ".$formatter->link_to("?action=diff&amp;rev=$rev",'<span>'.$diff_action.'</span>', ' class="button-small"');
  +              $out.= " ".$formatter->link_to("?action=diff&amp;rev=$rev",$diff_action, ' class="button-small"');
               $out.="</td>";
               if (isset($admin))
                 $out.=
  
  
  


wkpark      2009/08/22 13:37:28

  Modified:    plugin   RecentChanges.php
  Log:
  remove span tags. fixed do_RecentChanges() default behavior.
  
  Revision  Changes    Path
  1.33      +24 -7     moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- RecentChanges.php	19 Aug 2009 05:29:37 -0000	1.32
  +++ RecentChanges.php	22 Aug 2009 04:37:28 -0000	1.33
  @@ -3,15 +3,28 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.32 2009/08/19 05:29:37 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.33 2009/08/22 04:37:28 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
  +  global $DBInfo;
  +  if ($options['moztab']) {
     $options['trail']='';
     $options['css_url']=$formatter->url_prefix.'/css/sidebar.css';
  -  $formatter->send_header("",$options);
  -  print "<div id='wikiBody'>";
  -  print macro_RecentChanges($formatter,'nobookmark,moztab',array('target'=>'_content'));
  -  print "</div></body></html>";
  +    $arg = 'nobookmark,moztab';
  +    $formatter->send_header('',$options);
  +    echo "<div id='wikiBody'>";
  +    echo macro_RecentChanges($formatter, $arg, array('target'=>'_content'));
  +    echo "</div></body></html>";
  +    return;
  +  } else if (!empty($DBInfo->rc_options)) {
  +    $arg = $DBInfo->rc_options;
  +  } else {
  +    $arg = 'table,comment,timesago,item=20';
  +  }
  +  $formatter->send_header('',$options);
  +  $formatter->send_title('',$options);
  +  echo macro_RecentChanges($formatter, $arg, $options);
  +  $formatter->send_footer('',$options);
     return;
   }
   
  @@ -267,7 +280,7 @@
           $out.='</span>'.$perma.'<br />'.$bra;
           $cat0=$cat;
         } else {
  -        $bmark=$formatter->link_to("?action=bookmark&amp;time=$ed_time".$daysago,'<span>'._("Bookmark").'</span>', 'class="button-small"');
  +        $bmark=$formatter->link_to("?action=bookmark&amp;time=$ed_time".$daysago,_("Bookmark"), 'class="button-small"');
         }
       }
       if (empty($use_day)) {
  @@ -315,11 +328,15 @@
             if (($p = strpos($uid,' '))!==false)
               $uid= substr($uid, 0, $p);
             $u = $DBInfo->udb->getUser($uid);
  -          if (!empty($u->info['home'])) {
  +          if (!empty($u->info)) {
  +            if (!empty($DBInfo->interwiki['User'])) {
  +              $user = $formatter->link_repl('[wiki:User:'.$uid.' '.$u->info['nick'].']');
  +            } else if (!empty($u->info['home'])) {
               $user = $formatter->link_repl('['.$u->info['home'].' '.$u->info['nick'].']');
             } else if (!empty($u->info['nick'])) {
               $user = $formatter->link_repl('[wiki:'.$uid.' '.$u->info['nick'].']');
             }
  +          }
             $users[$ouser] = $user;
           } else if (strpos($user,' ')!==false) {
             $user= $formatter->link_repl($user);
  
  
  


wkpark      2009/08/22 13:40:36

  Modified:    plugin   UploadFile.php UploadForm.php
  Log:
  support ajax action for UploadFile.
  check $_FILE['foo']['error'] and set error msgs by it.
  use ajax action for fake ajax action(using iframe) with the uploadfile action.
  
  Revision  Changes    Path
  1.44      +78 -23    moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.43
  retrieving revision 1.44
  diff -u -r1.43 -r1.44
  --- UploadFile.php	19 Aug 2009 05:29:38 -0000	1.43
  +++ UploadFile.php	22 Aug 2009 04:40:36 -0000	1.44
  @@ -1,9 +1,31 @@
   <?php
  -// Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2009 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.43 2009/08/19 05:29:38 wkpark Exp $
  +// $Id: UploadFile.php,v 1.44 2009/08/22 04:40:36 wkpark Exp $
  +
  +function _upload_err_msg($error_code) {
  +    switch ($error_code) { 
  +    case UPLOAD_ERR_INI_SIZE:
  +        return _("The uploaded file exceeds the upload_max_filesize directive in php.ini");
  +    case UPLOAD_ERR_FORM_SIZE:
  +        return _("The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form");
  +    case UPLOAD_ERR_PARTIAL:
  +        return _("The uploaded file was only partially uploaded");
  +    case UPLOAD_ERR_NO_FILE:
  +        return _("No file was uploaded");
  +    case UPLOAD_ERR_NO_TMP_DIR:
  +        return _("Missing a temporary folder");
  +    case UPLOAD_ERR_CANT_WRITE:
  +        return _("Failed to write file to disk");
  +    case UPLOAD_ERR_EXTENSION:
  +        return _("File upload stopped by extension");
  +    default:
  +        return _("Unknown upload error");
  +    } 
  +} 
  +
   function do_uploadfile($formatter,$options) {
     global $DBInfo;
   
  @@ -20,6 +42,7 @@
         $count=1;
         $files['upfile']['name'][]=&$_FILES['upfile']['name'];
         $files['upfile']['tmp_name'][]=&$_FILES['upfile']['tmp_name'];
  +      $files['upfile']['error'][]=&$_FILES['upfile']['error'];
         $files['upfile']['type'][]=&$_FILES['upfile']['type'];
         $options['rename']=array($options['rename']);
         $options['replace']=array($options['replace']);
  @@ -36,6 +59,14 @@
         $files['replace'][]='';
       }
     }
  +  // Set upload err msg func.
  +  if (!empty($DBInfo->upload_err_func) and function_exists($DBInfo->upload_err_func))
  +    $upload_err_func = $DBInfo->upload_err_func;
  +  else
  +    $upload_err_func = '_upload_err_msg';
  +  $msg = array();
  +  $err_msg = array();
  +  $upload_ok = array();
   
     $js='';
     if ($options['uploadid'] or $options['MYFILES']) {
  @@ -73,7 +104,7 @@
     }
   
     if (!$ok) {
  -    if (isset($options['retval'])) return; // ignore
  +    if (isset($options['retval'])) return false; // ignore
       #$title="No file selected";
       $formatter->send_header("",$options);
       $formatter->send_title($title,"",$options);
  @@ -81,7 +112,7 @@
       if (!in_array('UploadedFiles',$formatter->actions))
         $formatter->actions[]='UploadedFiles';
       $formatter->send_footer("",$options);
  -    return;
  +    return false;
     }
   
     $key=$DBInfo->pageToKeyname($formatter->page->name);
  @@ -146,7 +177,7 @@
           $allowed=1;
           $fname[2]= $fname[2] ? $fname[2]:$safe_types[$mtype];
         } else if ($no_ext) {
  -        $msg.=sprintf(_("The %s type of %s is not allowed to upload"),$type,$upfilename)."<br/>\n";
  +        $err_msg[]=sprintf(_("The %s type of %s is not allowed to upload"),$type,$upfilename);
           continue;
         }
       } else {
  @@ -160,9 +191,9 @@
     if (!$allowed) {
       if (!$no_ext and !preg_match("/(".$pds_exts.")$/i",$fname[2])) {
         if ($DBInfo->use_filetype and !empty($type))
  -        $msg.=sprintf(_("The %s type of %s is not allowed to upload"),$type,$upfilename)."<br/>\n";
  +        $err_msg[]=sprintf(_("The %s type of %s is not allowed to upload"),$type,$upfilename);
         else
  -        $msg.=sprintf(_("%s is not allowed to upload"),$upfilename)."<br/>\n";
  +        $err_msg[]=sprintf(_("%s is not allowed to upload"),$upfilename);
         continue;
       } else if ($fname[2] and in_array(strtolower($fname[2]),$safe)) {
         $upfilename=$fname[1].'.'.$fname[2];
  @@ -217,7 +248,7 @@
           # change the case of the file ext. is allowed
           $newfile_path = $dir."/".$tname[1].".$tname[2]";
         } else {
  -        $msg.=sprintf(_("It is not allowed to change file ext. \"%s\" to \"%s\"."),$fname[2],$tname[2]).'<br />';
  +        $err_msg[]=sprintf(_("It is not allowed to change file ext. \"%s\" to \"%s\"."),$fname[2],$tname[2]);
         }
       }
     }
  @@ -233,6 +264,12 @@
     }
    
     $upfile=$files['upfile']['tmp_name'][$j];
  +  if ($files['upfile']['error'][$j] != UPLOAD_ERR_OK) {
  +    $err_msg[]=_("ERROR:").' <tt>'.$upload_err_func($files['upfile']['error'][$j]).' : '.$upfilename .'</tt>';
  +    if ($files['upfile']['error'][$j] == UPLOAD_ERR_INI_SIZE)
  +      $err_msg[]="<tt>upload_max_filesize=".ini_get('upload_max_filesize').'</tt>';
  +    continue;
  +  }
   
     $_l_path=_l_filename($file_path);
     $new_l_path=_l_filename($newfile_path);
  @@ -249,9 +286,9 @@
     }
     @unlink($upfile);
     if (!$test) {
  -    $msg.=sprintf(_("Fail to copy \"%s\" to \"%s\""),$upfilename,$file_path);
  -    $msg.='<br />'._("Please check your php.ini setting");
  -    $msg.='<br />'."<tt>upload_max_filesize=".ini_get('upload_max_filesize').'</tt><br />';
  +    $err_msg[]=sprintf(_("Fail to copy \"%s\" to \"%s\""),$upfilename,$file_path);
  +    if ($files['upfile']['error'][$j] == UPLOAD_ERR_INI_SIZE)
  +      $err_msg[]="<tt>upload_max_filesize=".ini_get('upload_max_filesize').'</tt>';
       continue;
     }
   
  @@ -259,7 +296,7 @@
   
     $comment.="'$upfilename' ";
   
  -  $title.=($title ? '<br />':'').
  +  $title.=($title ? "\n":'').
       sprintf(_("File \"%s\" is uploaded successfully"),$upfilename);
   
     $fullname=$formatter->page->name."/$upfilename";
  @@ -270,12 +307,13 @@
       $upname='"'.$upname.'"';
   
     if ($key == 'UploadFile') {
  -    $msg.= "<ins>Uploads:$upname</ins> or<br />";
  -    $msg.= "<ins>attachment:/$upname</ins><br />";
  +    $msg[]= "<ins>attachment:/$upname</ins>";
  +    $upload_ok[] = '/'.$upname;
       $log_entry.=" * attachment:/$upname?action=deletefile . . . @USERNAME@ @DATE@\n";
     } else {
  -    $msg.= "<ins>attachment:$upname</ins> or<br />";
  -    $msg.= "<ins>attachment:$fullname</ins><br />";
  +    $msg[]= "<ins>attachment:$upname</ins> or";
  +    $msg[]= "<ins>attachment:$fullname</ins>";
  +    $upload_ok[] = $upname;
       $log_entry.=" * attachment:$fullname?action=deletefile . . . @USERNAME@ @DATE@\n";
     }
   
  @@ -293,21 +331,33 @@
     } else
       $DBInfo->addLogEntry($key, $REMOTE_ADDR,$comment,"UPLOAD");
   
  +  if (!empty($options['action_mode']) and $options['action_mode'] == 'ajax') {
  +    echo '
  +    {"title": "' . str_replace(array('"','<'), array("'",'&lt;'), $title) . '",
  +     "msg": ["' . strip_tags(implode("\\n", $msg )) . '"],
  +     "uploaded":' . $uploaded.',
  +     "files": ["' . implode("\"\n,\"", $upload_ok ) . '"]
  +    }';
  +    return true;
  +  }
  +
  +  $msgs = implode("<br />\n", $err_msg);
  +  $msgs.= implode("<br />\n", $msg);
     if (isset($options['retval'])) {
  -    $retval = array('title'=>$title, 'msg'=>$msg, 'uploaded'=>$uploaded);
  +    $retval = array('title'=>$title, 'msg'=>$msgs, 'uploaded'=>$uploaded, 'files'=>$upload_ok);
       $ret = &$options['retval'];
       $ret = $retval;
  -    return;
  +    return true;
     } 
     $formatter->send_header("",$options);
     if ($uploaded < 2) {
       $formatter->send_title($title,"",$options);
  -    print $msg;
  +    print $msgs;
     } else {
       $msg=$title.'<br />'.$msg;
       $title=sprintf(_("Files are uploaded successfully"),$upfilename);
       $formatter->send_title($title,"",$options);
  -    print $msg;
  +    print $msgs;
     }
   
     print $js;
  @@ -315,6 +365,7 @@
   
     if (is_array($options['MYFILES']) and !$DBInfo->nosession)
       session_destroy();
  +  return true;
   }
   
   function macro_UploadFile($formatter,$value='',$options='') {
  @@ -347,8 +398,12 @@
   
     $count= ($options['multiform'] > 1) ? $options['multiform']:1;
   
  +  $mode = '';
  +  if ($options['action_mode'] == 'ajax') {
  +    $mode = '/ajax';
  +  }
     $form="<form enctype='multipart/form-data' method='post' action='$url'>\n";
  -  $form.="<input type='hidden' name='action' value='UploadFile' />\n";
  +  $form.="<input type='hidden' name='action' value='UploadFile$mode' />\n";
     $msg1=_("Replace original file");
     $msg2=_("Rename if it already exist");
     for ($j=0;$j<$count;$j++) {
  @@ -377,7 +432,7 @@
     if ($use_multi) {
       $multiform= <<<EOF
   <form enctype="multipart/form-data" method='post' action='$url'>
  -   <input type='hidden' name='action' value='UploadFile' />
  +   <input type='hidden' name='action' value='UploadFile$mode' />
      $multiform
   </form>
   EOF;
  @@ -391,5 +446,5 @@
     return $form.$multiform;
   }
   
  -// vim:et:sts=2:sw=2:
  +// vim:et:sts=4:sw=4:
   ?>
  
  
  
  1.14      +18 -7     moniwiki/plugin/UploadForm.php
  
  Index: UploadForm.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadForm.php,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- UploadForm.php	19 Aug 2009 05:29:38 -0000	1.13
  +++ UploadForm.php	22 Aug 2009 04:40:36 -0000	1.14
  @@ -5,7 +5,7 @@
   //
   // Usage: [[UploadForm]]
   //
  -// $Id: UploadForm.php,v 1.13 2009/08/19 05:29:38 wkpark Exp $
  +// $Id: UploadForm.php,v 1.14 2009/08/22 04:40:36 wkpark Exp $
   
   function macro_UploadForm($formatter,$value) {
       global $DBInfo;
  @@ -133,15 +133,12 @@
       attach = document.getElementById(id);
       var ok = false;
       files = '';
  -    js = '';
       var tmp = '';
       inputs = attach.getElementsByTagName('input');
       for (i = 0; i < inputs.length; i++) {
           if (inputs[i].type == 'file' && inputs[i].value != '') {
               ok = true;
  -            tmp = inputs[i].value.replace(/^.*[\\\\]/g, '');
  -            files += 'attachment:'+tmp + "\\n";
  -            js += "insertTags('attachment:',' ','" + tmp + "',3);";
  +            break;
           }
       }
       if (ok == false)
  @@ -154,15 +151,29 @@
           var attachform = document.getElementById('form-'+id);
           if (attachform) {
               attachform.setAttribute('target', 'upload-iframe');
  +            attachform.elements['action'].value='UploadFile/ajax';
           }
   
  -        // TODO check success or fail
  -        setTimeout("iframe.parentNode.removeChild(iframe);alert(files + '$msg2');"+js+"resetForm(attach)", 1500);
  +        setTimeout("check_upload_result(iframe);resetForm(attach)", 1500);
           return ok;
       }
       return ok;
   }
   
  +function check_upload_result (iframe) {
  +    var doc = iframe.contentDocument || iframe.contentWindow.document;
  +    var p = doc.body.firstChild;
  +    if (p.nodeType == 3 && p.nodeValue) { // text node
  +        eval("var ret = " + p.nodeValue);
  +        // remove iframe;
  +        iframe.parentNode.removeChild(iframe);
  +        alert(ret['title'] + "\\n" + ret['msg']);
  +        for (var i = 0; i < ret['files'].length; i++) {
  +            insertTags('attachment:',' ', ret['files'][i], 3);
  +        }
  +    }
  +}
  +
   function resetForm(form) {
       if (form && form.rows.length) { // for UploadForm
           for (var i=form.rows.length;i>0;i--) {
  
  
  


wkpark      2009/08/22 13:58:01

  Modified:    plugin   UploadFile.php UploadForm.php
  Log:
  set err msg correctly
  
  Revision  Changes    Path
  1.45      +5 -2      moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.44
  retrieving revision 1.45
  diff -u -r1.44 -r1.45
  --- UploadFile.php	22 Aug 2009 04:40:36 -0000	1.44
  +++ UploadFile.php	22 Aug 2009 04:58:00 -0000	1.45
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.44 2009/08/22 04:40:36 wkpark Exp $
  +// $Id: UploadFile.php,v 1.45 2009/08/22 04:58:00 wkpark Exp $
   
   function _upload_err_msg($error_code) {
       switch ($error_code) { 
  @@ -332,9 +332,12 @@
       $DBInfo->addLogEntry($key, $REMOTE_ADDR,$comment,"UPLOAD");
   
     if (!empty($options['action_mode']) and $options['action_mode'] == 'ajax') {
  +    $err = implode("\\n", $err_msg);
  +    $err = strip_tags($err);
  +    if ($err) $err .= "\\n";
       echo '
       {"title": "' . str_replace(array('"','<'), array("'",'&lt;'), $title) . '",
  -     "msg": ["' . strip_tags(implode("\\n", $msg )) . '"],
  +     "msg": ["' . $err.strip_tags(implode("\\n", $msg )) . '"],
        "uploaded":' . $uploaded.',
        "files": ["' . implode("\"\n,\"", $upload_ok ) . '"]
       }';
  
  
  
  1.15      +2 -1      moniwiki/plugin/UploadForm.php
  
  Index: UploadForm.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadForm.php,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- UploadForm.php	22 Aug 2009 04:40:36 -0000	1.14
  +++ UploadForm.php	22 Aug 2009 04:58:00 -0000	1.15
  @@ -5,7 +5,7 @@
   //
   // Usage: [[UploadForm]]
   //
  -// $Id: UploadForm.php,v 1.14 2009/08/22 04:40:36 wkpark Exp $
  +// $Id: UploadForm.php,v 1.15 2009/08/22 04:58:00 wkpark Exp $
   
   function macro_UploadForm($formatter,$value) {
       global $DBInfo;
  @@ -169,6 +169,7 @@
           iframe.parentNode.removeChild(iframe);
           alert(ret['title'] + "\\n" + ret['msg']);
           for (var i = 0; i < ret['files'].length; i++) {
  +            if (ret['files'][i] == '') continue;
               insertTags('attachment:',' ', ret['files'][i], 3);
           }
       }
  
  
  


wkpark      2009/08/22 15:27:49

  Modified:    .        wikilib.php
  Log:
  remove timer class from the message box with do_edit() action
  
  Revision  Changes    Path
  1.281     +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.280
  retrieving revision 1.281
  diff -u -r1.280 -r1.281
  --- wikilib.php	22 Aug 2009 04:35:18 -0000	1.280
  +++ wikilib.php	22 Aug 2009 06:27:49 -0000	1.281
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.280 2009/08/22 04:35:18 wkpark Exp $
  +// $Id: wikilib.php,v 1.281 2009/08/22 06:27:49 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -766,7 +766,7 @@
     $formatter->send_header("",$options);
     if ($options['section'])
       $sec=' (Section)';
  -  $options['msgtype'] = isset($options['msgtype']) ? $options['msgtype'] : 'warn timer';
  +  $options['msgtype'] = isset($options['msgtype']) ? $options['msgtype'] : 'warn';
     $formatter->send_title(sprintf(_("Edit %s"),$options['page']).$sec,"",$options);
     //print '<div id="editor_area">'.macro_EditText($formatter,$value,$options).'</div>';
     $has_form = false;
  
  
  


wkpark      2009/08/22 18:19:52

  Modified:    plugin   Info.php
  Log:
  use $user->info[home]
  
  Revision  Changes    Path
  1.27      +5 -3      moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Info.php,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- Info.php	22 Aug 2009 04:36:20 -0000	1.26
  +++ Info.php	22 Aug 2009 09:19:52 -0000	1.27
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Info plugin for the MoniWiki
   //
  -// $Id: Info.php,v 1.26 2009/08/22 04:36:20 wkpark Exp $
  +// $Id: Info.php,v 1.27 2009/08/22 09:19:52 wkpark Exp $
   
   function _parse_rlog($formatter,$log,$options=array()) {
     global $DBInfo;
  @@ -138,9 +138,11 @@
                if (!empty($u->info['nick'])) {
                  if ($DBInfo->interwiki['User']) {
                    $ip=$formatter->link_repl('[wiki:User:'.$user.' '.$u->info['nick'].']');
  +               } else if (!empty($u->info['home'])) {
  +                 $ip=$formatter->link_repl('['.$u->info['home'].' '.$u->info['nick'].']');
                  } else {
  -               $ip=$formatter->link_repl('[wiki:'.$user.' '.$u->info['nick'].']');
  -             }
  +                 $ip=$formatter->link_repl('[wiki:'.$user.' '.$u->info['nick'].']');
  +               }
                }
                $users[$user]=$ip;
              } else if (strpos($user,' ') !== false) {
  
  
  


wkpark      2009/09/03 21:10:14

  Modified:    .        wiki.php
  Log:
  use dynamic translation for the first time
  
  Revision  Changes    Path
  1.486     +5 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.485
  retrieving revision 1.486
  diff -u -r1.485 -r1.486
  --- wiki.php	22 Aug 2009 04:35:18 -0000	1.485
  +++ wiki.php	3 Sep 2009 12:10:14 -0000	1.486
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.485 2009/08/22 04:35:18 wkpark Exp $
  +// $Id: wiki.php,v 1.486 2009/09/03 12:10:14 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.485 $',1,-1);
  +$_revision = substr('$Revision: 1.486 $',1,-1);
   $_release = '1.1.4-RC3';
   
   #ob_start("ob_gzhandler");
  @@ -5288,6 +5288,9 @@
           $domain=$domain.'-'.$tmp[0];
           array_unshift($dirs,$Config['cache_dir']);
         }
  +    } else {
  +      include_once(dirname(__FILE__).'/plugin/msgtrans.php');
  +      macro_msgtrans(null,null,array('init'=>1));
       }
     }
   
  
  
  


wkpark      2009/09/03 21:11:57

  Modified:    plugin   msgtrans.php
  Log:
  support init option to use get *.mo file dynamically
  
  Revision  Changes    Path
  1.9       +11 -6     moniwiki/plugin/msgtrans.php
  
  Index: msgtrans.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/msgtrans.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- msgtrans.php	23 May 2009 12:56:48 -0000	1.8
  +++ msgtrans.php	3 Sep 2009 12:11:57 -0000	1.9
  @@ -8,25 +8,27 @@
   // Name: Message Translation plugin
   // Description: make a Translation *.mo from simple message files.
   // URL: MoniWiki:DynamicMessageTranslation
  -// Version: $Revision: 1.8 $
  +// Version: $Revision: 1.9 $
   // License: GPL
   //
   // Usage: [[Test]]
   //
  -// $Id: msgtrans.php,v 1.8 2009/05/23 12:56:48 wkpark Exp $
  +// $Id: msgtrans.php,v 1.9 2009/09/03 12:11:57 wkpark Exp $
   
   function macro_MsgTrans($formatter,$value,$param=array()) {
       global $DBInfo;
   
       $user=&$DBInfo->user;
  -    if (!is_array($DBInfo->owners) or !in_array($user->id,$DBInfo->owners)) {
  +    if (empty($param['init']) and (!is_array($DBInfo->owners) or !in_array($user->id,$DBInfo->owners))) {
           return sprintf(_("You are not allowed to \"%s\" !"),"msgtrans");
       }
   
       if (!$pagename)
           $pagename=$DBInfo->default_translation ? $DBInfo->default_translation:'LocalTranslationKo';
       $page=$DBInfo->getPage($pagename);
  -    if (!$page->exists()) return '';
  +    $strs = array();
  +
  +    if ($page->exists()) {
       $raw=$page->get_raw_body();$raw=rtrim($raw);
   
       $lines = explode("\n",$raw);
  @@ -34,7 +36,6 @@
       $charset = strtoupper($DBInfo->charset);
       $lang = $DBInfo->lang ? $DBInfo->lang:'en_US.'.$charset;
   
  -    $strs = array();
       foreach ($lines as $l) {
           $l=trim($l);
           if ($l{0}=='#') {
  @@ -56,11 +57,12 @@
           }
           $strs[$w]=$t;
       }
  +    }
   
       if(getenv("OS")=="Windows_NT") $lang=substr($lang,0,2);
   
       //print_r($strs);
  -    if (!empty($strs)) {
  +    if (!empty($strs) or !empty($param['init'])) {
           $myMO = null;
           $ldir='locale/'.$lang.'/LC_MESSAGES';
           $mofile=$ldir.'/moniwiki.mo';
  @@ -69,6 +71,9 @@
               # load *.po file
               $mylang = substr($lang,0,2);
               $pofile = 'locale/po/'.$mylang.'.po';
  +            if (!file_exists($pofile)) {
  +                $pofile = dirname(__FILE__).'/../locale/po/'.$mylang.'.po';
  +            }
               if (file_exists($pofile)) {
                   include_once 'lib/Gettext/PO.php';
                   $myPO = new File_Gettext_PO;
  
  
  


wkpark      2009/09/03 22:46:52

  Modified:    plugin   msgtrans.php
  Log:
  support without gettext() env.
  
  Revision  Changes    Path
  1.10      +32 -3     moniwiki/plugin/msgtrans.php
  
  Index: msgtrans.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/msgtrans.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- msgtrans.php	3 Sep 2009 12:11:57 -0000	1.9
  +++ msgtrans.php	3 Sep 2009 13:46:52 -0000	1.10
  @@ -8,12 +8,28 @@
   // Name: Message Translation plugin
   // Description: make a Translation *.mo from simple message files.
   // URL: MoniWiki:DynamicMessageTranslation
  -// Version: $Revision: 1.9 $
  +// Version: $Revision: 1.10 $
   // License: GPL
   //
   // Usage: [[Test]]
   //
  -// $Id: msgtrans.php,v 1.9 2009/09/03 12:11:57 wkpark Exp $
  +// $Id: msgtrans.php,v 1.10 2009/09/03 13:46:52 wkpark Exp $
  +
  +function _msgs_to_php($strs) {
  +    $smap = array('"', '$', '\\',"\n");
  +    $rmap = array('\\"','\\$','\\',"\\n");
  +    $php = '<'.'?php'."\n";
  +    $php.= '# automatically generated by MoniWiki '.date('Y-m-d H:i:s', time())."\n";
  +    $php.= '$_locale = array('."\n";
  +    foreach ($strs as $msgid=>$msgstr) {
  +        $id = str_replace($smap, $rmap, $msgid);
  +        $str = str_replace($smap, $rmap, $msgstr);
  +        $php.= '"'.$id.'" => '."\n".
  +        "\t\"".$str."\",\n";
  +    }
  +    $php.= ');'."\n";
  +    return $php;
  +}
   
   function macro_MsgTrans($formatter,$value,$param=array()) {
       global $DBInfo;
  @@ -39,7 +55,7 @@
       foreach ($lines as $l) {
           $l=trim($l);
           if ($l{0}=='#') {
  -            if (preg_match('/^#lang(?>uage)? (ko_KR|en_US|fr_FR)$/',$l,$m)) {
  +            if (preg_match('/^#lang(?'.'>uage)? (ko_KR|en_US|fr_FR)$/',$l,$m)) {
                   $lang=$m[1];
                   if ($DBInfo->charset) $lang.='.'.$charset;
               }
  @@ -126,6 +142,19 @@
           if (true !== ($e = $myMO->save($tmp))) {
               return "Fail to save mo file.\n";
           }
  +        if (!function_exists('bindtextdomain')) {
  +            // FIXME use cache class
  +            $tmp2 = tempnam($vartmp_dir,"GETTEXT");
  +            $fp = fopen($tmp2, 'w');
  +            if (is_resource($fp)) {
  +                fwrite($fp, _msgs_to_php($myMO->strings));
  +                fclose($fp);
  +                $ldir2=$DBInfo->cache_dir.'/'.$ldir;
  +                if (!rename($tmp2,$ldir2.'/moniwiki.php')) {
  +                    unlink($tmp2); // fail to copy ?
  +                }
  +            }
  +        }
           # gettext cache workaround
           # http://kr2.php.net/manual/en/function.gettext.php#58310
           # use md5sum instead
  
  
  


wkpark      2009/09/07 00:19:26

  Modified:    plugin   Info.php
  Log:
  fixed column mismatch under admin mode.
  add a name tag "word-break" to log entry.
  
  Revision  Changes    Path
  1.28      +6 -6      moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Info.php,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- Info.php	22 Aug 2009 09:19:52 -0000	1.27
  +++ Info.php	6 Sep 2009 15:19:26 -0000	1.28
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Info plugin for the MoniWiki
   //
  -// $Id: Info.php,v 1.27 2009/08/22 09:19:52 wkpark Exp $
  +// $Id: Info.php,v 1.28 2009/09/06 15:19:26 wkpark Exp $
   
   function _parse_rlog($formatter,$log,$options=array()) {
     global $DBInfo;
  @@ -66,7 +66,7 @@
       }
       if ($state==1 and $ok==1) {
         $lnk=$formatter->link_to("?action=info&all=1",_("Show all revisions"),' class="button small"');
  -      $out.='<tr><td colspan="2"></td><th colspan="4">'.$lnk.'</th></tr>';
  +      $out.='<tr><td colspan="2"></td><td colspan="'.(!empty($admin) ? 5:4).'">'.$lnk.'</td></tr>';
         break;
       }
       
  @@ -193,17 +193,17 @@
               $out.="</td>";
               if (isset($admin))
                 $out.=
  -                "<th><input type='checkbox' name='range[$flag]' value='$rev' /></th>";
  +                "<td><input type='checkbox' name='range[$flag]' value='$rev' /></td>";
            } else {
               $out.="</td>";
               if (isset($admin)) {
  -              $out.="<th><input type='image' src='$DBInfo->imgs_dir/smile/checkmark.png' onClick=\"ToggleAll('infoform');return false;\"/></th>";
  +              $out.="<td><input type='image' src='$DBInfo->imgs_dir/smile/checkmark.png' onClick=\"ToggleAll('infoform');return false;\"/></td>";
               }
            }
            endif;
            $out.="</tr>\n";
            if (!$simple and $comment)
  -            $out.="<tr class='log'><td colspan='5'>$comment&nbsp;</td></tr>\n";
  +            $out.="<tr class='log'><td colspan='".(!empty($admin) ? 6:5). "'><p name='word-break'>$comment</p>&nbsp;</td></tr>\n";
            $state=1;
            $flag++;
            $count++;
  @@ -212,7 +212,7 @@
        }
     }
     if (!$simple and $admin):
  -  $out.="<tr><td colspan='6' align='right'><input type='checkbox' name='show' checked='checked' />"._("show only").' ';
  +  $out.="<tr><td colspan='".(!empty($admin) ? 7:6)."' align='right'><input type='checkbox' name='show' checked='checked' />"._("show only").' ';
     if ($DBInfo->security->is_protected("rcspurge",$options)) {
       $out.="<input type='password' name='passwd'>";
     }
  
  
  


wkpark      2009/09/07 00:20:53

  Modified:    plugin   RecentChanges.php
  Log:
  add a name tag "word-break" to log entries.
  mb_strimwidth() titles
  
  Revision  Changes    Path
  1.34      +10 -5     moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- RecentChanges.php	22 Aug 2009 04:37:28 -0000	1.33
  +++ RecentChanges.php	6 Sep 2009 15:20:53 -0000	1.34
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.33 2009/08/22 04:37:28 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.34 2009/09/06 15:20:53 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     global $DBInfo;
  @@ -309,9 +309,14 @@
         $icon= $formatter->link_tag($pageurl,"?action=diff",$formatter->icon['diff']);
   
       #$title= preg_replace("/((?<=[a-z0-9])[A-Z][a-z0-9])/"," \\1",$page_name);
  -    $title= get_title($title).$group;
  -    $title=htmlspecialchars($title);
  -    $title= $formatter->link_tag($pageurl,"",$title,$target);
  +    $title0= get_title($title).$group;
  +    $title0=htmlspecialchars($title0);
  +    $attr = '';
  +    if (strlen(get_title($title)) > 20 and function_exists('mb_strimwidth')) {
  +      $title0=mb_strimwidth($title0,0,20,'...');
  +      $attr = ' title="'.$title.'"';
  +    }
  +    $title= $formatter->link_tag($pageurl,"",$title0,$target.$attr);
   
       if ($use_hits) {
         $hits = $DBInfo->counter->pageCounter($page_name);
  @@ -354,7 +359,7 @@
       if ($editcount[$page_key] > 1)
         $count=sprintf(_("%s changes"), " <span class='num'>".$editcount[$page_key]."</span>");
       if ($comment && $log)
  -      $extra="&nbsp; &nbsp; &nbsp; <small>$log</small>";
  +      $extra="&nbsp; &nbsp; &nbsp; <small name='word-break'>$log</small>";
   
       $alt = ($ii % 2 == 0) ? ' class="alt"':'';
       if ($extra and isset($template_extra)) {
  
  
  


wkpark      2009/09/07 00:22:54

  Modified:    plugin/security nforge.php
  Log:
  add the admin user to the $wikimasters conditionally
  
  Revision  Changes    Path
  1.5       +11 -2     moniwiki/plugin/security/nforge.php
  
  Index: nforge.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/nforge.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- nforge.php	17 Aug 2009 08:47:05 -0000	1.4
  +++ nforge.php	6 Sep 2009 15:22:54 -0000	1.5
  @@ -4,13 +4,22 @@
   #
   # based on needtologin security plugin.
   #
  -# $Id: nforge.php,v 1.4 2009/08/17 08:47:05 wkpark Exp $
  +# $Id: nforge.php,v 1.5 2009/09/06 15:22:54 wkpark Exp $
   
   class Security_nforge extends Security {
     var $DB;
   
  -  function Security_nforge($DB='') {
  +  function Security_nforge(&$DB) {
       $this->DB=$DB;
  +    $u = session_get_user();
  +    $group =& group_get_object($DB->group_id);
  +    $perm =& $group->getPermission( $u );
  +    // check if the user is docman's admin
  +    if ($perm and !$perm->isError()) {
  +      if ($perm->isDocEditor() || $perm->isAdmin()) {
  +        $DB->wikimasters=array($u->getUnixName());
  +      }
  +    }
     }
   
     function help($formatter) {
  
  
  


wkpark      2009/09/07 00:23:21

  Modified:    plugin   FullSearch.php
  Log:
  localize some msg strs
  
  Revision  Changes    Path
  1.29      +2 -2      moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- FullSearch.php	3 Jun 2009 17:16:16 -0000	1.28
  +++ FullSearch.php	6 Sep 2009 15:23:21 -0000	1.29
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
   //
  -// $Id: FullSearch.php,v 1.28 2009/06/03 17:16:16 wkpark Exp $
  +// $Id: FullSearch.php,v 1.29 2009/09/06 15:23:21 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
  @@ -257,7 +257,7 @@
             '?action=highlight&amp;value='._urlencode($value),
             $page_name,'tabindex="'.$idx.'"');
       if ($count > 0)
  -      $out.= ' . . . . ' . $count . (($count == 1) ? ' match' : ' matches');
  +      $out.= ' . . . . ' . $count . (($count == 1) ? _(" match") : _(" matches"));
       if ($opts['context']>0) {
         # search matching contexts
         $p = new WikiPage($page_name);
  
  
  


wkpark      2009/09/09 21:17:00

  Modified:    plugin   RecentChanges.php
  Log:
  fixed recentchanges default option to use "board" style.
  
  Revision  Changes    Path
  1.35      +8 -8      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- RecentChanges.php	6 Sep 2009 15:20:53 -0000	1.34
  +++ RecentChanges.php	9 Sep 2009 12:17:00 -0000	1.35
  @@ -3,13 +3,13 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.34 2009/09/06 15:20:53 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.35 2009/09/09 12:17:00 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     global $DBInfo;
     if ($options['moztab']) {
  -  $options['trail']='';
  -  $options['css_url']=$formatter->url_prefix.'/css/sidebar.css';
  +    $options['trail']='';
  +    $options['css_url']=$formatter->url_prefix.'/css/sidebar.css';
       $arg = 'nobookmark,moztab';
       $formatter->send_header('',$options);
       echo "<div id='wikiBody'>";
  @@ -19,7 +19,7 @@
     } else if (!empty($DBInfo->rc_options)) {
       $arg = $DBInfo->rc_options;
     } else {
  -    $arg = 'table,comment,timesago,item=20';
  +    $arg = 'board,comment,timesago,item=20';
     }
     $formatter->send_header('',$options);
     $formatter->send_title('',$options);
  @@ -337,10 +337,10 @@
               if (!empty($DBInfo->interwiki['User'])) {
                 $user = $formatter->link_repl('[wiki:User:'.$uid.' '.$u->info['nick'].']');
               } else if (!empty($u->info['home'])) {
  -            $user = $formatter->link_repl('['.$u->info['home'].' '.$u->info['nick'].']');
  -          } else if (!empty($u->info['nick'])) {
  -            $user = $formatter->link_repl('[wiki:'.$uid.' '.$u->info['nick'].']');
  -          }
  +              $user = $formatter->link_repl('['.$u->info['home'].' '.$u->info['nick'].']');
  +            } else if (!empty($u->info['nick'])) {
  +              $user = $formatter->link_repl('[wiki:'.$uid.' '.$u->info['nick'].']');
  +            }
             }
             $users[$ouser] = $user;
           } else if (strpos($user,' ')!==false) {
  
  
  


wkpark      2009/09/09 21:19:26

  Modified:    plugin   UploadFile.php UploadForm.php
  Log:
  use $use_preview_uploads option correctly.
  
  Revision  Changes    Path
  1.46      +6 -2      moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.45
  retrieving revision 1.46
  diff -u -r1.45 -r1.46
  --- UploadFile.php	22 Aug 2009 04:58:00 -0000	1.45
  +++ UploadFile.php	9 Sep 2009 12:19:26 -0000	1.46
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.45 2009/08/22 04:58:00 wkpark Exp $
  +// $Id: UploadFile.php,v 1.46 2009/09/09 12:19:26 wkpark Exp $
   
   function _upload_err_msg($error_code) {
       switch ($error_code) { 
  @@ -444,7 +444,11 @@
     if (!in_array('UploadedFiles',$formatter->actions))
       $formatter->actions[]='UploadedFiles';
     if ($formatter->preview and !in_array('UploadFile',$formatter->actions)) {
  -    $form=$formatter->macro_repl('UploadedFiles(tag=1)').$form;
  +    if (!empty($DBInfo->use_preview_uploads)) {
  +      $keyname=$DBInfo->pageToKeyname($formatter->page->name);
  +      if (is_dir($DBInfo->upload_dir.'/'.$keyname))
  +        $form=$formatter->macro_repl('UploadedFiles(tag=1)').$form;
  +    }
     }
     return $form.$multiform;
   }
  
  
  
  1.16      +6 -4      moniwiki/plugin/UploadForm.php
  
  Index: UploadForm.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadForm.php,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- UploadForm.php	22 Aug 2009 04:58:00 -0000	1.15
  +++ UploadForm.php	9 Sep 2009 12:19:26 -0000	1.16
  @@ -5,7 +5,7 @@
   //
   // Usage: [[UploadForm]]
   //
  -// $Id: UploadForm.php,v 1.15 2009/08/22 04:58:00 wkpark Exp $
  +// $Id: UploadForm.php,v 1.16 2009/09/09 12:19:26 wkpark Exp $
   
   function macro_UploadForm($formatter,$value) {
       global $DBInfo;
  @@ -239,9 +239,11 @@
           $formatter->actions[]='UploadedFiles';
       $id++;
       if ($formatter->preview and !in_array('UploadFile',$formatter->actions)) {
  -        $keyname=$DBInfo->pageToKeyname($formatter->page->name);
  -        if (is_dir($DBInfo->upload_dir.'/'.$keyname))
  -        $form=$formatter->macro_repl('UploadedFiles(tag=1)').$form;
  +        if (!empty($DBInfo->use_preview_uploads)) {
  +            $keyname=$DBInfo->pageToKeyname($formatter->page->name);
  +            if (is_dir($DBInfo->upload_dir.'/'.$keyname))
  +            $form=$formatter->macro_repl('UploadedFiles(tag=1)').$form;
  +        }
       }
       return $script.$form.$multiform;
   }
  
  
  


wkpark      2009/09/12 22:39:02

  Modified:    .        wikilib.php
  Log:
  add "preview-anchor" class to preview anchors
  
  Revision  Changes    Path
  1.282     +9 -7      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.281
  retrieving revision 1.282
  diff -u -r1.281 -r1.282
  --- wikilib.php	22 Aug 2009 06:27:49 -0000	1.281
  +++ wikilib.php	12 Sep 2009 13:39:02 -0000	1.282
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.281 2009/08/22 06:27:49 wkpark Exp $
  +// $Id: wikilib.php,v 1.282 2009/09/12 13:39:02 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -793,10 +793,10 @@
       $onclick1=' onclick="check_uploadform()"';
       echo "<div id='save-buttons'>\n";
       echo "<button type='button'$onclick tabindex='10'><span>$msg</span></button>\n";
  -    echo "<button type='button'$onclick1 tabindex='11' name='button_preview' value='1'><span>".
  +    echo "<button type='submit'$onclick1 tabindex='11' name='button_preview' value='1'><span>".
         _("Preview").'</span></button>';
       if ($preview)
  -      echo ' '.$formatter->link_to('#preview',_("Skip to preview"));
  +      echo ' '.$formatter->link_to('#preview',_("Skip to preview"),' class="preview-anchor"');
       echo "</div>\n";
     }
   
  @@ -889,6 +889,8 @@
   
     $text= $options['savetext'];
     $editlog= $options['editlog'] ? $options['editlog'] : "";
  +  if (empty($editlog) and !empty($options['comment']))
  +      $editlog=_stripslashes($options['comment']);
   
     $args= explode(',',$value);
     if (in_array('nohints',$args)) $options['nohints']=1;
  @@ -1047,7 +1049,7 @@
       $preview_btn='<button type="submit" tabindex="6" name="button_preview" value="1"><span>'.
         _("Preview").'</span></button>';
       if ($preview)
  -      $skip_preview= ' '.$formatter->link_to('#preview',_("Skip to preview"));
  +      $skip_preview= ' '.$formatter->link_to('#preview',_("Skip to preview"),' class="preview-anchor"');
       if (!empty($DBInfo->use_wikiwyg)) {
         $confirm = 'false';
         if (!empty($DBInfo->wikiwyg_confirm)) $confirm = 'null';
  @@ -1655,7 +1657,7 @@
   
     $new=md5($savetext);
   
  -  $menu = $formatter->link_to("#editor",_("Goto Editor"));
  +  $menu = $formatter->link_to("#editor",_("Goto Editor"), ' class="preview-anchor"');
   
     if ($formatter->page->exists()) {
       # check difference
  @@ -1717,7 +1719,7 @@
           echo "<button type='button'$onclick1 tabindex='11' name='button_preview' value='1'><span>".
             _("Preview").'</span></button>';
           if ($preview)
  -          echo ' '.$formatter->link_to('#preview',_("Skip to preview"));
  +          echo ' '.$formatter->link_to('#preview',_("Skip to preview"), ' class="preview-anchor"');
   	echo "</div>\n";
         }
         print $menu;
  @@ -1814,7 +1816,7 @@
         echo "<button type='button'$onclick1 tabindex='11' name='button_preview' value='1'><span>".
         	_("Preview").'</span></button>';
         if ($preview)
  -        echo ' '.$formatter->link_to('#preview',_("Skip to preview"));
  +        echo ' '.$formatter->link_to('#preview',_("Skip to preview"),' class="preview-anchor"');
         echo "</div>\n";
       }
       print '</div>'; # XXX
  
  
  


wkpark      2009/09/12 22:39:29

  Modified:    .        wiki.php
  Log:
  set $lang properly
  
  Revision  Changes    Path
  1.487     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.486
  retrieving revision 1.487
  diff -u -r1.486 -r1.487
  --- wiki.php	3 Sep 2009 12:10:14 -0000	1.486
  +++ wiki.php	12 Sep 2009 13:39:29 -0000	1.487
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.486 2009/09/03 12:10:14 wkpark Exp $
  +// $Id: wiki.php,v 1.487 2009/09/12 13:39:29 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.486 $',1,-1);
  +$_revision = substr('$Revision: 1.487 $',1,-1);
   $_release = '1.1.4-RC3';
   
   #ob_start("ob_gzhandler");
  @@ -5290,7 +5290,7 @@
         }
       } else {
         include_once(dirname(__FILE__).'/plugin/msgtrans.php');
  -      macro_msgtrans(null,null,array('init'=>1));
  +      macro_msgtrans(null,$lang,array('init'=>1));
       }
     }
   
  
  
  


wkpark      2009/09/12 22:43:37

  Modified:    plugin   UploadFile.php UploadForm.php
  Log:
  support cross-domain iframe upload form
  
  Revision  Changes    Path
  1.47      +7 -2      moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.46
  retrieving revision 1.47
  diff -u -r1.46 -r1.47
  --- UploadFile.php	9 Sep 2009 12:19:26 -0000	1.46
  +++ UploadFile.php	12 Sep 2009 13:43:37 -0000	1.47
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.46 2009/09/09 12:19:26 wkpark Exp $
  +// $Id: UploadFile.php,v 1.47 2009/09/12 13:43:37 wkpark Exp $
   
   function _upload_err_msg($error_code) {
       switch ($error_code) { 
  @@ -335,7 +335,12 @@
       $err = implode("\\n", $err_msg);
       $err = strip_tags($err);
       if ($err) $err .= "\\n";
  -    echo '
  +
  +    $scr = '';
  +    if (!empty($options['domain']) and preg_match('/^[a-z][a-z0-9]+(\.[a-z][a-z0-9]+)*$/i', $options['domain'])) {
  +        $scr = '<script type="text/javascript">document.domain="'.$options['domain'].'";</script>';
  +    }
  +    echo $scr.'
       {"title": "' . str_replace(array('"','<'), array("'",'&lt;'), $title) . '",
        "msg": ["' . $err.strip_tags(implode("\\n", $msg )) . '"],
        "uploaded":' . $uploaded.',
  
  
  
  1.17      +37 -6     moniwiki/plugin/UploadForm.php
  
  Index: UploadForm.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadForm.php,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- UploadForm.php	9 Sep 2009 12:19:26 -0000	1.16
  +++ UploadForm.php	12 Sep 2009 13:43:37 -0000	1.17
  @@ -5,7 +5,7 @@
   //
   // Usage: [[UploadForm]]
   //
  -// $Id: UploadForm.php,v 1.16 2009/09/09 12:19:26 wkpark Exp $
  +// $Id: UploadForm.php,v 1.17 2009/09/12 13:43:37 wkpark Exp $
   
   function macro_UploadForm($formatter,$value) {
       global $DBInfo;
  @@ -37,7 +37,12 @@
               iframe.setAttribute('id','upload-iframe');
               iframe.setAttribute('name','upload-iframe');
               iframe.setAttribute('style','display:none;border:0;');
  -            //iframe.setAttribute('style','border:0;');
  +            if (document.all) {
  +                var IE6 = false /*@cc_on || @_jscript_version < 5.7 @*/;
  +                // magic for IE6
  +                if (IE6)
  +                    iframe.src = 'javascript:document.write("' + "<script>document.domain='" + document.domain + "';</" + "script>" + '");';
  +            }
               var body = document.getElementsByTagName('body')[0];
               body.appendChild(iframe);
           }
  @@ -150,20 +155,44 @@
           iframe = document.getElementById('upload-iframe');
           var attachform = document.getElementById('form-'+id);
           if (attachform) {
  +            // set domain name.
  +            if (location.host != document.domain) {
  +                if (document.all) {
  +                    var mydomain = document.createElement('<input name="domain">');
  +                } else {
  +                    var mydomain = document.createElement('input');
  +                    mydomain.setAttribute('name', 'domain');
  +                }
  +
  +                mydomain.setAttribute('type', 'hidden');
  +                mydomain.setAttribute('value', document.domain + '');
  +                attachform.appendChild(mydomain);
  +            }
  +
               attachform.setAttribute('target', 'upload-iframe');
               attachform.elements['action'].value='UploadFile/ajax';
           }
   
  -        setTimeout("check_upload_result(iframe);resetForm(attach)", 1500);
  +        var timer = setInterval(function() {check_upload_result(iframe, attach, timer);}, 1500);
           return ok;
       }
       return ok;
   }
   
  -function check_upload_result (iframe) {
  -    var doc = iframe.contentDocument || iframe.contentWindow.document;
  +function check_upload_result (iframe,attach, timer) {
  +    if (!iframe) return;
  +
  +    try {
  +        var doc = iframe.contentDocument || iframe.contentWindow.document;
  +    } catch(e) {
  +        // silently ignore
  +        alert('Error: '+ e + ' - Security restriction detected !\\nPlease check your "document.domain=' + document.domain + '"');
  +        return;
  +    }
  +    if (!doc || !doc.body) return;
  +
       var p = doc.body.firstChild;
  -    if (p.nodeType == 3 && p.nodeValue) { // text node
  +    if (p && p.nodeType == 3 && p.nodeValue) { // text node
           eval("var ret = " + p.nodeValue);
           // remove iframe;
           iframe.parentNode.removeChild(iframe);
  @@ -172,6 +201,8 @@
               if (ret['files'][i] == '') continue;
               insertTags('attachment:',' ', ret['files'][i], 3);
           }
  +        clearInterval(timer);
  +        resetForm(attach);
       }
   }
   
  
  
  


wkpark      2009/09/15 00:48:33

  Modified:    plugin   download.php
  Log:
  fixed download.php bug. calc size of left bytes correctly. do not read empty file etc.
  
  Revision  Changes    Path
  1.22      +12 -6     moniwiki/plugin/download.php
  
  Index: download.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/download.php,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- download.php	15 Jun 2009 13:56:56 -0000	1.21
  +++ download.php	14 Sep 2009 15:48:33 -0000	1.22
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // download action plugin for the MoniWiki
   //
  -// $Id: download.php,v 1.21 2009/06/15 13:56:56 wkpark Exp $
  +// $Id: download.php,v 1.22 2009/09/14 15:48:33 wkpark Exp $
   //
   function do_download($formatter,$options) {
     global $DBInfo;
  @@ -146,7 +146,8 @@
      # ans some modification
     
      //Gather relevent info about file
  -   $len = filesize($file);
  +   $size = filesize($file);
  +   if ($size == 0) return;
     
      //Begin writing headers
      header("Cache-Control:");
  @@ -164,7 +165,6 @@
      }
      header("Accept-Ranges: bytes");
     
  -   $size=filesize($file);
      //check if http_range is sent by browser (or download manager)
      $range = 0;
      if(isset($_SERVER['HTTP_RANGE'])) {
  @@ -191,6 +191,7 @@
      }
      //open the file
      $fp=fopen("$file","rb");
  +   if (!is_resource($fp)) return;
      //seek to start of missing part
      fseek($fp,$range);
      //start buffered download
  @@ -198,13 +199,18 @@
      set_time_limit(0);
      $chunksize = 1*(1024*1024); // 1MB chunks
      $left = $size;
  -   while(!feof($fp)){
  -       print(fread($fp, $chunksize < $left ? $chunksize: $left));
  +
  +   // start output buffering
  +   ob_start();
  +   while(!feof($fp) and $left > 0){
  +       $sz = $chunksize < $left ? $chunksize : $left;
  +       echo fread($fp, $sz);
          flush();
          ob_flush();
  -       $left -= $chunksize;
  +       $left -= $sz;
      }
      fclose($fp);
  +   ob_end_flush();
      exit;
   }
   
  
  
  


wkpark      2009/09/15 09:52:04

  Modified:    plugin   msgtrans.php
  Log:
  set lang correctly
  
  Revision  Changes    Path
  1.11      +5 -5      moniwiki/plugin/msgtrans.php
  
  Index: msgtrans.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/msgtrans.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- msgtrans.php	3 Sep 2009 13:46:52 -0000	1.10
  +++ msgtrans.php	15 Sep 2009 00:52:04 -0000	1.11
  @@ -8,12 +8,12 @@
   // Name: Message Translation plugin
   // Description: make a Translation *.mo from simple message files.
   // URL: MoniWiki:DynamicMessageTranslation
  -// Version: $Revision: 1.10 $
  +// Version: $Revision: 1.11 $
   // License: GPL
   //
   // Usage: [[Test]]
   //
  -// $Id: msgtrans.php,v 1.10 2009/09/03 13:46:52 wkpark Exp $
  +// $Id: msgtrans.php,v 1.11 2009/09/15 00:52:04 wkpark Exp $
   
   function _msgs_to_php($strs) {
       $smap = array('"', '$', '\\',"\n");
  @@ -44,14 +44,14 @@
       $page=$DBInfo->getPage($pagename);
       $strs = array();
   
  +    $charset = strtoupper($DBInfo->charset);
  +    $lang = !empty($value) ? $value:($DBInfo->lang ? $DBInfo->lang:'en_US.'.$charset);
  +
       if ($page->exists()) {
       $raw=$page->get_raw_body();$raw=rtrim($raw);
   
       $lines = explode("\n",$raw);
   
  -    $charset = strtoupper($DBInfo->charset);
  -    $lang = $DBInfo->lang ? $DBInfo->lang:'en_US.'.$charset;
  -
       foreach ($lines as $l) {
           $l=trim($l);
           if ($l{0}=='#') {
  
  
  


wkpark      2009/09/15 11:01:38

  Modified:    plugin   msgtrans.php
  Log:
  fixed msgtrans without any mo/po file
  
  Revision  Changes    Path
  1.12      +7 -5      moniwiki/plugin/msgtrans.php
  
  Index: msgtrans.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/msgtrans.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- msgtrans.php	15 Sep 2009 00:52:04 -0000	1.11
  +++ msgtrans.php	15 Sep 2009 02:01:38 -0000	1.12
  @@ -8,12 +8,12 @@
   // Name: Message Translation plugin
   // Description: make a Translation *.mo from simple message files.
   // URL: MoniWiki:DynamicMessageTranslation
  -// Version: $Revision: 1.11 $
  +// Version: $Revision: 1.12 $
   // License: GPL
   //
   // Usage: [[Test]]
   //
  -// $Id: msgtrans.php,v 1.11 2009/09/15 00:52:04 wkpark Exp $
  +// $Id: msgtrans.php,v 1.12 2009/09/15 02:01:38 wkpark Exp $
   
   function _msgs_to_php($strs) {
       $smap = array('"', '$', '\\',"\n");
  @@ -85,6 +85,7 @@
   
           if (!file_exists($mofile)) {
               # load *.po file
  +            $e = false;
               $mylang = substr($lang,0,2);
               $pofile = 'locale/po/'.$mylang.'.po';
               if (!file_exists($pofile)) {
  @@ -116,19 +117,20 @@
               $e = $myMO->load($mofile);
           }
   
  -        if ($myMO and $e == true) {
  +        if (!is_object($myMO)) return;
  +        if ($e == true) {
               $myMO->strings = array_merge($myMO->strings,$strs);
               #$myMO->meta['PO-Revision-Date']= date('Y-m-d H:iO');
               ksort($myMO->strings); // important!
               #print_r($myMO->strings);
           } else {
  -           $meta = array(
  +            $meta = array(
                   'Content-Type'      => 'text/plain; charset='.$charset,
                   'Last-Translator'   => 'MoniWiki Translator',
                   'PO-Revision-Date'  => date('Y-m-d H:iO'),
                   'MIME-Version'      => '1.0',
                   'Language-Team'     => 'MoniWiki Translator',
  -           );
  +            );
               if (true !== ($e = $myMO->fromArray(array('meta'=>$meta,'strings'=>$strs)))) {
                   return "Fail to make a mo file.\n";
               }
  
  
  


wkpark      2009/09/15 11:10:11

  Modified:    .        wiki.php
  Log:
  use rel='nofollow' with action links
  
  Revision  Changes    Path
  1.488     +6 -6      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.487
  retrieving revision 1.488
  diff -u -r1.487 -r1.488
  --- wiki.php	12 Sep 2009 13:39:29 -0000	1.487
  +++ wiki.php	15 Sep 2009 02:10:10 -0000	1.488
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.487 2009/09/12 13:39:29 wkpark Exp $
  +// $Id: wiki.php,v 1.488 2009/09/15 02:10:10 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.487 $',1,-1);
  +$_revision = substr('$Revision: 1.488 $',1,-1);
   $_release = '1.1.4-RC3';
   
   #ob_start("ob_gzhandler");
  @@ -4501,17 +4501,17 @@
       if ($this->pi['#action'] && !in_array($this->pi['#action'],$this->actions)){
         list($act,$txt)=explode(" ",$this->pi['#action'],2);
         if (!$txt) $txt=$act;
  -      $menu[]= $this->link_to("?action=$act",_($txt),"accesskey='x'");
  +      $menu[]= $this->link_to("?action=$act",_($txt)," rel='nofollow' accesskey='x'");
         if (strtolower($act) == 'blog')
           $this->actions[]='BlogRss';
           
       } else if ($args['editable']) {
         if ($args['editable']==1)
  -        $menu[]= $this->link_to("?action=edit",_("EditText"),"accesskey='x'");
  +        $menu[]= $this->link_to("?action=edit",_("EditText")," rel='nofollow' accesskey='x'");
         else
           $menu[]= _("NotEditable");
         if ($args['refresh']==1)
  -        $menu[]= $this->link_to("?refresh=1",_("Refresh"),"accesskey='n'");
  +        $menu[]= $this->link_to("?refresh=1",_("Refresh")," rel='nofollow' accesskey='n'");
       } else
         $menu[]= $this->link_to('?action=show',_("ShowPage"));
       $menu[]=$this->link_tag("FindPage","",_("FindPage"));
  @@ -4526,7 +4526,7 @@
               $menu[]= $this->link_tag($options['page'],$act,_($text));
             }
           } else {
  -          $menu[]= $this->link_to("?action=$action",_($action));
  +          $menu[]= $this->link_to("?action=$action",_($action), " rel='nofollow'");
           }
         }
       }
  
  
  


wkpark      2009/09/15 19:54:16

  Modified:    plugin   Tag: B_1_1_3 download.php
  Log:
  fixed download.php infinite loop bug.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.19.2.2  +17 -7     moniwiki/plugin/download.php
  
  Index: download.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/download.php,v
  retrieving revision 1.19.2.1
  retrieving revision 1.19.2.2
  diff -u -r1.19.2.1 -r1.19.2.2
  --- download.php	26 Apr 2009 07:18:54 -0000	1.19.2.1
  +++ download.php	15 Sep 2009 10:54:16 -0000	1.19.2.2
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // download action plugin for the MoniWiki
   //
  -// $Id: download.php,v 1.19.2.1 2009/04/26 07:18:54 wkpark Exp $
  +// $Id: download.php,v 1.19.2.2 2009/09/15 10:54:16 wkpark Exp $
   //
   function do_download($formatter,$options) {
     global $DBInfo;
  @@ -146,7 +146,8 @@
      # ans some modification
     
      //Gather relevent info about file
  -   $len = filesize($file);
  +   $size = filesize($file);
  +   if ($size == 0) return;
     
      //Begin writing headers
      header("Cache-Control:");
  @@ -164,8 +165,8 @@
      }
      header("Accept-Ranges: bytes");
     
  -   $size=filesize($file);
      //check if http_range is sent by browser (or download manager)
  +   $range = 0;
      if(isset($_SERVER['HTTP_RANGE'])) {
          list($a, $range)=explode("=",$_SERVER['HTTP_RANGE']);
          //if yes, download missing part
  @@ -190,17 +191,26 @@
      }
      //open the file
      $fp=fopen("$file","rb");
  +   if (!is_resource($fp)) return;
      //seek to start of missing part
      fseek($fp,$range);
      //start buffered download
  -   while(!feof($fp)){
  -       //reset time limit for big files
  -       set_time_limit(0);
  -       print(fread($fp,1024*8));
  +   //reset time limit for big files
  +   set_time_limit(0);
  +   $chunksize = 1*(1024*1024); // 1MB chunks
  +   $left = $size;
  +
  +   // start output buffering
  +   ob_start();
  +   while(!feof($fp) and $left > 0){
  +       $sz = $chunksize < $left ? $chunksize : $left;
  +       echo fread($fp, $sz);
          flush();
          ob_flush();
  +       $left -= $sz;
      }
      fclose($fp);
  +   ob_end_flush();
      exit;
   }
   
  
  
  


wkpark      2009/09/15 19:58:52

  Modified:    .        Tag: B_1_1_3 wiki.php
  Log:
  update patch level as 6
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.452.2.3 +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.452.2.2
  retrieving revision 1.452.2.3
  diff -u -r1.452.2.2 -r1.452.2.3
  --- wiki.php	26 Apr 2009 07:16:00 -0000	1.452.2.2
  +++ wiki.php	15 Sep 2009 10:58:52 -0000	1.452.2.3
  @@ -11,10 +11,10 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.452.2.2 2009/04/26 07:16:00 wkpark Exp $
  +// $Id: wiki.php,v 1.452.2.3 2009/09/15 10:58:52 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.452.2.2 $',1,-1);
  -$_release = '1.1.3.5';
  +$_revision = substr('$Revision: 1.452.2.3 $',1,-1);
  +$_release = '1.1.3.6';
   
   #ob_start("ob_gzhandler");
   
  
  
  


wkpark      2009/09/16 18:48:40

  Modified:    css      kbd.js
  Log:
  [#305355] MetaKey patch by McKkabi
  
  Revision  Changes    Path
  1.22      +4 -3      moniwiki/css/kbd.js
  
  Index: kbd.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/kbd.js,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- kbd.js	12 Jul 2009 13:27:30 -0000	1.21
  +++ kbd.js	16 Sep 2009 09:48:40 -0000	1.22
  @@ -6,19 +6,20 @@
   
      distributable under GPL
   
  -   $Id: kbd.js,v 1.21 2009/07/12 13:27:30 wkpark Exp $
  +   $Id: kbd.js,v 1.22 2009/09/16 09:48:40 wkpark Exp $
   
      CHANGES
   
      * 2002/09/06 : From http://linux.sarang.net/ and heavily modified by wkpark
      * 2003/04/16 : simlified by wkpark
  -   * 2003/06/01 : added patch by Kkabi
  +   * 2003/06/01 : added patch by McKkabi
      * 2003/07/14 : fixed element indices
      * 2004/08/24 : no PATH_INFO support merged
      * 2004/10/03 : more intelligent behavior with search keys '?' '/'
      * 2007/11/09 : simplified and cleanup.
      * 2008/11/25 : do not assume the "go" form is always defined.
      * 2009/04/19 : changeable name of the default input form. use control-Enter to save.
  +   * 2009/09/16 : MetaKey patch by McKkabi [#305355]
   */
   
   /*
  @@ -174,7 +175,7 @@
   		}
   		return;
   	}
  -	if (e.altKey) return true; // mozilla
  +	if (e.altKey || e.metaKey) return true; // mozilla
   
   	if (!e.keyCode && (cc == 112 || cc == 114)) ch=ch; // mozilla hack
   
  
  
  


wkpark      2009/09/17 20:13:52

  Modified:    locale/po ko.po
  Log:
  update msg
  
  Revision  Changes    Path
  1.34      +1 -1      moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- ko.po	19 Aug 2009 07:35:01 -0000	1.33
  +++ ko.po	17 Sep 2009 11:13:51 -0000	1.34
  @@ -2116,7 +2116,7 @@
   #: ../wikilib.php:770
   #, c-format
   msgid "Edit %s"
  -msgstr ""
  +msgstr "%s 고치기"
   
   #: ../wikilib.php:791 ../wikilib.php:1063 ../wikilib.php:1711
   #: ../wikilib.php:1801 ../wikilib.php:2276 ../wikilib.php:2330
  
  
  


wkpark      2009/09/17 20:24:44

  Modified:    plugin/user nforge.php
  Log:
  sync timezone with the nforge core
  
  Revision  Changes    Path
  1.8       +11 -3     moniwiki/plugin/user/nforge.php
  
  Index: nforge.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/user/nforge.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- nforge.php	19 Aug 2009 05:29:38 -0000	1.7
  +++ nforge.php	17 Sep 2009 11:24:44 -0000	1.8
  @@ -9,12 +9,12 @@
   // Name: nFORGE Unix based User plugin
   // Description: nFORGE Unix user plugin
   // URL: MoniWiki:NForgeUserPlugin
  -// Version: $Revision: 1.7 $
  +// Version: $Revision: 1.8 $
   // License: GPL
   //
   // Usage: set $user_class = 'nforge'; in the config.php
   //
  -// $Id: nforge.php,v 1.7 2009/08/19 05:29:38 wkpark Exp $
  +// $Id: nforge.php,v 1.8 2009/09/17 11:24:44 wkpark Exp $
   
   class User_nforge extends WikiUser {
       function User_nforge($id = '') {
  @@ -31,8 +31,16 @@
                   $this->setID($id);
                   $udb=new UserDB($DBInfo);
                   $tmp = $udb->getUser($id);
  -                if (empty($tmp->info['nick']) or $tmp->info['nick']!=$u->data_array['realname']) {
  +                // get timezone and make timezone offset
  +                $tz_offset = date('Z');
  +                $update = 0;
  +                if ($tz_offset != $tmp->info['tz_offset'])
  +                    $update = 1;
  +
  +                if ((!empty($DBInfo->use_homepage_url) and empty($tmp->info['home'])) or $update or
  +                        empty($tmp->info['nick']) or $tmp->info['nick']!=$u->data_array['realname']) {
                       // register user
  +                    $tmp->info['tz_offset'] = $tz_offset;
                       $tmp->info['nick']=$u->data_array['realname'];
                       if (!empty($DBInfo->use_homepage_url))
                           $tmp->info['home']=util_make_url_u($u->getID(), true);
  
  
  


wkpark      2009/09/24 02:02:22

  Modified:    plugin   Rating.php
  Log:
  nofollow fix
  
  Revision  Changes    Path
  1.7       +3 -3      moniwiki/plugin/Rating.php
  
  Index: Rating.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Rating.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- Rating.php	9 Jan 2007 06:13:33 -0000	1.6
  +++ Rating.php	23 Sep 2009 17:02:21 -0000	1.7
  @@ -7,12 +7,12 @@
   // Name: Rating
   // Description: Rating Plugin
   // URL: MoniWiki:RatingPlugin
  -// Version: $Revision: 1.6 $
  +// Version: $Revision: 1.7 $
   // License: GPL
   //
   // Usage: [[Rating(totalscore,count)]] or [[Rating(initial score)]]
   //
  -// $Id: Rating.php,v 1.6 2007/01/09 06:13:33 wkpark Exp $
  +// $Id: Rating.php,v 1.7 2009/09/23 17:02:21 wkpark Exp $
   
   function macro_Rating($formatter,$value='',$options=array()) {
       global $Config;
  @@ -64,7 +64,7 @@
       for ($i=1;$i<=5;++$i) {
           $t=($i <= $value) ? '1':'0';
           $alt=$t ? '{*}':'{o}';
  -        $star.='<a href="?action=rating'.$mid.'&amp;rating='.$i.'">'.
  +        $star.='<a href="?action=rating'.$mid.'&amp;rating='.$i.'" rel="nofollow">'.
               '<img alt="'.$alt.'" src="'.$imgs_dir.'/star'.$t.'.png" '.
               'onmouseover="showstars(this,'.$i.')" title="'.$msg[$i].'" '.
               'onmouseout="showstars(this,'.intval($value).')" '.
  
  
  


wkpark      2009/09/24 04:48:22

  Modified:    local/SWFUpload swfupload.js swfupload.queue.js
                        swfupload.swfobject.js
  Log:
  dos2unix
  
  Revision  Changes    Path
  1.2       +945 -945  moniwiki/local/SWFUpload/swfupload.js
  
  Index: swfupload.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/SWFUpload/swfupload.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- swfupload.js	24 Dec 2008 09:31:35 -0000	1.1
  +++ swfupload.js	23 Sep 2009 19:48:22 -0000	1.2
  @@ -1,945 +1,945 @@
  -/**
  - * SWFUpload: http://www.swfupload.org, http://swfupload.googlecode.com
  - *
  - * mmSWFUpload 1.0: Flash upload dialog - http://profandesign.se/swfupload/,  http://www.vinterwebb.se/
  - *
  - * SWFUpload is (c) 2006-2007 Lars Huring, Olov Nilzn and Mammon Media and is released under the MIT License:
  - * http://www.opensource.org/licenses/mit-license.php
  - *
  - * SWFUpload 2 is (c) 2007-2008 Jake Roberts and is released under the MIT License:
  - * http://www.opensource.org/licenses/mit-license.php
  - *
  - */
  -
  -
  -/* ******************* */
  -/* Constructor & Init  */
  -/* ******************* */
  -var SWFUpload;
  -
  -if (SWFUpload == undefined) {
  -	SWFUpload = function (settings) {
  -		this.initSWFUpload(settings);
  -	};
  -}
  -
  -SWFUpload.prototype.initSWFUpload = function (settings) {
  -	try {
  -		this.customSettings = {};	// A container where developers can place their own settings associated with this instance.
  -		this.settings = settings;
  -		this.eventQueue = [];
  -		this.movieName = "SWFUpload_" + SWFUpload.movieCount++;
  -		this.movieElement = null;
  -
  -
  -		// Setup global control tracking
  -		SWFUpload.instances[this.movieName] = this;
  -
  -		// Load the settings.  Load the Flash movie.
  -		this.initSettings();
  -		this.loadFlash();
  -		this.displayDebugInfo();
  -	} catch (ex) {
  -		delete SWFUpload.instances[this.movieName];
  -		throw ex;
  -	}
  -};
  -
  -/* *************** */
  -/* Static Members  */
  -/* *************** */
  -SWFUpload.instances = {};
  -SWFUpload.movieCount = 0;
  -SWFUpload.version = "2.2.0 Beta 3";
  -SWFUpload.QUEUE_ERROR = {
  -	QUEUE_LIMIT_EXCEEDED	  		: -100,
  -	FILE_EXCEEDS_SIZE_LIMIT  		: -110,
  -	ZERO_BYTE_FILE			  		: -120,
  -	INVALID_FILETYPE		  		: -130
  -};
  -SWFUpload.UPLOAD_ERROR = {
  -	HTTP_ERROR				  		: -200,
  -	MISSING_UPLOAD_URL	      		: -210,
  -	IO_ERROR				  		: -220,
  -	SECURITY_ERROR			  		: -230,
  -	UPLOAD_LIMIT_EXCEEDED	  		: -240,
  -	UPLOAD_FAILED			  		: -250,
  -	SPECIFIED_FILE_ID_NOT_FOUND		: -260,
  -	FILE_VALIDATION_FAILED	  		: -270,
  -	FILE_CANCELLED			  		: -280,
  -	UPLOAD_STOPPED					: -290
  -};
  -SWFUpload.FILE_STATUS = {
  -	QUEUED		 : -1,
  -	IN_PROGRESS	 : -2,
  -	ERROR		 : -3,
  -	COMPLETE	 : -4,
  -	CANCELLED	 : -5
  -};
  -SWFUpload.BUTTON_ACTION = {
  -	SELECT_FILE  : -100,
  -	SELECT_FILES : -110,
  -	START_UPLOAD : -120
  -};
  -SWFUpload.CURSOR = {
  -	ARROW : -1,
  -	HAND : -2
  -};
  -SWFUpload.WINDOW_MODE = {
  -	WINDOW : "window",
  -	TRANSPARENT : "transparent",
  -	OPAQUE : "opaque"
  -};
  -
  -/* ******************** */
  -/* Instance Members  */
  -/* ******************** */
  -
  -// Private: initSettings ensures that all the
  -// settings are set, getting a default value if one was not assigned.
  -SWFUpload.prototype.initSettings = function () {
  -	this.ensureDefault = function (settingName, defaultValue) {
  -		this.settings[settingName] = (this.settings[settingName] == undefined) ? defaultValue : this.settings[settingName];
  -	};
  -	
  -	// Upload backend settings
  -	this.ensureDefault("upload_url", "");
  -	this.ensureDefault("file_post_name", "Filedata");
  -	this.ensureDefault("post_params", {});
  -	this.ensureDefault("use_query_string", false);
  -	this.ensureDefault("requeue_on_error", false);
  -	this.ensureDefault("http_success", []);
  -	
  -	// File Settings
  -	this.ensureDefault("file_types", "*.*");
  -	this.ensureDefault("file_types_description", "All Files");
  -	this.ensureDefault("file_size_limit", 0);	// Default zero means "unlimited"
  -	this.ensureDefault("file_upload_limit", 0);
  -	this.ensureDefault("file_queue_limit", 0);
  -
  -	// Flash Settings
  -	this.ensureDefault("flash_url", "swfupload.swf");
  -	this.ensureDefault("prevent_swf_caching", true);
  -	
  -	// Button Settings
  -	this.ensureDefault("button_image_url", "");
  -	this.ensureDefault("button_width", 1);
  -	this.ensureDefault("button_height", 1);
  -	this.ensureDefault("button_text", "");
  -	this.ensureDefault("button_text_style", "color: #000000; font-size: 16pt;");
  -	this.ensureDefault("button_text_top_padding", 0);
  -	this.ensureDefault("button_text_left_padding", 0);
  -	this.ensureDefault("button_action", SWFUpload.BUTTON_ACTION.SELECT_FILES);
  -	this.ensureDefault("button_disabled", false);
  -	this.ensureDefault("button_placeholder_id", null);
  -	this.ensureDefault("button_cursor", SWFUpload.CURSOR.ARROW);
  -	this.ensureDefault("button_window_mode", SWFUpload.WINDOW_MODE.WINDOW);
  -	
  -	// Debug Settings
  -	this.ensureDefault("debug", false);
  -	this.settings.debug_enabled = this.settings.debug;	// Here to maintain v2 API
  -	
  -	// Event Handlers
  -	this.settings.return_upload_start_handler = this.returnUploadStart;
  -	this.ensureDefault("swfupload_loaded_handler", null);
  -	this.ensureDefault("file_dialog_start_handler", null);
  -	this.ensureDefault("file_queued_handler", null);
  -	this.ensureDefault("file_queue_error_handler", null);
  -	this.ensureDefault("file_dialog_complete_handler", null);
  -	
  -	this.ensureDefault("upload_start_handler", null);
  -	this.ensureDefault("upload_progress_handler", null);
  -	this.ensureDefault("upload_error_handler", null);
  -	this.ensureDefault("upload_success_handler", null);
  -	this.ensureDefault("upload_complete_handler", null);
  -	
  -	this.ensureDefault("debug_handler", this.debugMessage);
  -
  -	this.ensureDefault("custom_settings", {});
  -
  -	// Other settings
  -	this.customSettings = this.settings.custom_settings;
  -	
  -	// Update the flash url if needed
  -	if (this.settings.prevent_swf_caching) {
  -		this.settings.flash_url = this.settings.flash_url + "?swfuploadrnd=" + Math.floor(Math.random() * 999999999);
  -	}
  -	
  -	delete this.ensureDefault;
  -};
  -
  -SWFUpload.prototype.loadFlash = function () {
  -	if (this.settings.button_placeholder_id !== "") {
  -		this.replaceWithFlash();
  -	} else {
  -		this.appendFlash();
  -	}
  -};
  -
  -// Private: appendFlash gets the HTML tag for the Flash
  -// It then appends the flash to the body
  -SWFUpload.prototype.appendFlash = function () {
  -	var targetElement, container;
  -
  -	// Make sure an element with the ID we are going to use doesn't already exist
  -	if (document.getElementById(this.movieName) !== null) {
  -		throw "ID " + this.movieName + " is already in use. The Flash Object could not be added";
  -	}
  -
  -	// Get the body tag where we will be adding the flash movie
  -	targetElement = document.getElementsByTagName("body")[0];
  -
  -	if (targetElement == undefined) {
  -		throw "Could not find the 'body' element.";
  -	}
  -
  -	// Append the container and load the flash
  -	container = document.createElement("div");
  -	container.style.width = "1px";
  -	container.style.height = "1px";
  -	container.style.overflow = "hidden";
  -
  -	targetElement.appendChild(container);
  -	container.innerHTML = this.getFlashHTML();	// Using innerHTML is non-standard but the only sensible way to dynamically add Flash in IE (and maybe other browsers)
  -
  -	// Fix IE Flash/Form bug
  -	if (window[this.movieName] == undefined) {
  -		window[this.movieName] = this.getMovieElement();
  -	}
  -	
  -	
  -};
  -
  -// Private: replaceWithFlash replaces the button_placeholder element with the flash movie.
  -SWFUpload.prototype.replaceWithFlash = function () {
  -	var targetElement, tempParent;
  -
  -	// Make sure an element with the ID we are going to use doesn't already exist
  -	if (document.getElementById(this.movieName) !== null) {
  -		throw "ID " + this.movieName + " is already in use. The Flash Object could not be added";
  -	}
  -
  -	// Get the element where we will be placing the flash movie
  -	targetElement = document.getElementById(this.settings.button_placeholder_id);
  -
  -	if (targetElement == undefined) {
  -		throw "Could not find the placeholder element.";
  -	}
  -
  -	// Append the container and load the flash
  -	tempParent = document.createElement("div");
  -	tempParent.innerHTML = this.getFlashHTML();	// Using innerHTML is non-standard but the only sensible way to dynamically add Flash in IE (and maybe other browsers)
  -	targetElement.parentNode.replaceChild(tempParent.firstChild, targetElement);
  -
  -	// Fix IE Flash/Form bug
  -	if (window[this.movieName] == undefined) {
  -		window[this.movieName] = this.getMovieElement();
  -	}
  -	
  -};
  -
  -// Private: getFlashHTML generates the object tag needed to embed the flash in to the document
  -SWFUpload.prototype.getFlashHTML = function () {
  -	// Flash Satay object syntax: http://www.alistapart.com/articles/flashsatay
  -	return ['<object id="', this.movieName, '" type="application/x-shockwave-flash" data="', this.settings.flash_url, '" width="', this.settings.button_width, '" height="', this.settings.button_height, '" class="swfupload">',
  -				'<param name="wmode" value="', this.settings.button_window_mode , '" />',
  -				'<param name="movie" value="', this.settings.flash_url, '" />',
  -				'<param name="quality" value="high" />',
  -				'<param name="menu" value="false" />',
  -				'<param name="allowScriptAccess" value="always" />',
  -				'<param name="flashvars" value="' + this.getFlashVars() + '" />',
  -				'</object>'].join("");
  -};
  -
  -// Private: getFlashVars builds the parameter string that will be passed
  -// to flash in the flashvars param.
  -SWFUpload.prototype.getFlashVars = function () {
  -	// Build a string from the post param object
  -	var paramString = this.buildParamString();
  -	var httpSuccessString = this.settings.http_success.join(",");
  -	
  -	// Build the parameter string
  -	return ["movieName=", encodeURIComponent(this.movieName),
  -			"&amp;uploadURL=", encodeURIComponent(this.settings.upload_url),
  -			"&amp;useQueryString=", encodeURIComponent(this.settings.use_query_string),
  -			"&amp;requeueOnError=", encodeURIComponent(this.settings.requeue_on_error),
  -			"&amp;httpSuccess=", encodeURIComponent(httpSuccessString),
  -			"&amp;params=", encodeURIComponent(paramString),
  -			"&amp;filePostName=", encodeURIComponent(this.settings.file_post_name),
  -			"&amp;fileTypes=", encodeURIComponent(this.settings.file_types),
  -			"&amp;fileTypesDescription=", encodeURIComponent(this.settings.file_types_description),
  -			"&amp;fileSizeLimit=", encodeURIComponent(this.settings.file_size_limit),
  -			"&amp;fileUploadLimit=", encodeURIComponent(this.settings.file_upload_limit),
  -			"&amp;fileQueueLimit=", encodeURIComponent(this.settings.file_queue_limit),
  -			"&amp;debugEnabled=", encodeURIComponent(this.settings.debug_enabled),
  -			"&amp;buttonImageURL=", encodeURIComponent(this.settings.button_image_url),
  -			"&amp;buttonWidth=", encodeURIComponent(this.settings.button_width),
  -			"&amp;buttonHeight=", encodeURIComponent(this.settings.button_height),
  -			"&amp;buttonText=", encodeURIComponent(this.settings.button_text),
  -			"&amp;buttonTextTopPadding=", encodeURIComponent(this.settings.button_text_top_padding),
  -			"&amp;buttonTextLeftPadding=", encodeURIComponent(this.settings.button_text_left_padding),
  -			"&amp;buttonTextStyle=", encodeURIComponent(this.settings.button_text_style),
  -			"&amp;buttonAction=", encodeURIComponent(this.settings.button_action),
  -			"&amp;buttonDisabled=", encodeURIComponent(this.settings.button_disabled),
  -			"&amp;buttonCursor=", encodeURIComponent(this.settings.button_cursor)
  -		].join("");
  -};
  -
  -// Public: getMovieElement retrieves the DOM reference to the Flash element added by SWFUpload
  -// The element is cached after the first lookup
  -SWFUpload.prototype.getMovieElement = function () {
  -	if (this.movieElement == undefined) {
  -		this.movieElement = document.getElementById(this.movieName);
  -	}
  -
  -	if (this.movieElement === null) {
  -		throw "Could not find Flash element";
  -	}
  -	
  -	return this.movieElement;
  -};
  -
  -// Private: buildParamString takes the name/value pairs in the post_params setting object
  -// and joins them up in to a string formatted "name=value&amp;name=value"
  -SWFUpload.prototype.buildParamString = function () {
  -	var postParams = this.settings.post_params; 
  -	var paramStringPairs = [];
  -
  -	if (typeof(postParams) === "object") {
  -		for (var name in postParams) {
  -			if (postParams.hasOwnProperty(name)) {
  -				paramStringPairs.push(encodeURIComponent(name.toString()) + "=" + encodeURIComponent(postParams[name].toString()));
  -			}
  -		}
  -	}
  -
  -	return paramStringPairs.join("&amp;");
  -};
  -
  -// Public: Used to remove a SWFUpload instance from the page. This method strives to remove
  -// all references to the SWF, and other objects so memory is properly freed.
  -// Returns true if everything was destroyed. Returns a false if a failure occurs leaving SWFUpload in an inconsistant state.
  -// Credits: Major improvements provided by steffen
  -SWFUpload.prototype.destroy = function () {
  -	try {
  -		// Make sure Flash is done before we try to remove it
  -		this.cancelUpload(null, false);
  -		
  -		// Remove the SWFUpload DOM nodes
  -		var movieElement = null;
  -		movieElement = this.getMovieElement();
  -		
  -		if (movieElement) {
  -			// Loop through all the movie's properties and remove all function references (DOM/JS IE 6/7 memory leak workaround)
  -			for (var i in movieElement) {
  -				try {
  -					if (typeof(movieElement[i]) === "function") {
  -						movieElement[i] = null;
  -					}
  -				} catch (ex1) {}
  -			}
  -
  -			// Remove the Movie Element from the page
  -			try {
  -				movieElement.parentNode.removeChild(movieElement);
  -			} catch (ex) {}
  -		}
  -		
  -		
  -		// Remove IE form fix reference
  -		window[this.movieName] = null;
  -
  -		// Destroy other references
  -		SWFUpload.instances[this.movieName] = null;
  -		delete SWFUpload.instances[this.movieName];
  -
  -		this.movieElement = null;
  -		this.settings = null;
  -		this.customSettings = null;
  -		this.eventQueue = null;
  -		this.movieName = null;
  -		
  -		
  -		return true;
  -	} catch (ex1) {
  -		return false;
  -	}
  -};
  -
  -// Public: displayDebugInfo prints out settings and configuration
  -// information about this SWFUpload instance.
  -// This function (and any references to it) can be deleted when placing
  -// SWFUpload in production.
  -SWFUpload.prototype.displayDebugInfo = function () {
  -	this.debug(
  -		[
  -			"---SWFUpload Instance Info---\n",
  -			"Version: ", SWFUpload.version, "\n",
  -			"Movie Name: ", this.movieName, "\n",
  -			"Settings:\n",
  -			"\t", "upload_url:               ", this.settings.upload_url, "\n",
  -			"\t", "flash_url:                ", this.settings.flash_url, "\n",
  -			"\t", "use_query_string:         ", this.settings.use_query_string.toString(), "\n",
  -			"\t", "requeue_on_error:         ", this.settings.requeue_on_error.toString(), "\n",
  -			"\t", "http_success:             ", this.settings.http_success.join(", "), "\n",
  -			"\t", "file_post_name:           ", this.settings.file_post_name, "\n",
  -			"\t", "post_params:              ", this.settings.post_params.toString(), "\n",
  -			"\t", "file_types:               ", this.settings.file_types, "\n",
  -			"\t", "file_types_description:   ", this.settings.file_types_description, "\n",
  -			"\t", "file_size_limit:          ", this.settings.file_size_limit, "\n",
  -			"\t", "file_upload_limit:        ", this.settings.file_upload_limit, "\n",
  -			"\t", "file_queue_limit:         ", this.settings.file_queue_limit, "\n",
  -			"\t", "debug:                    ", this.settings.debug.toString(), "\n",
  -
  -			"\t", "prevent_swf_caching:      ", this.settings.prevent_swf_caching.toString(), "\n",
  -
  -			"\t", "button_placeholder_id:    ", this.settings.button_placeholder_id.toString(), "\n",
  -			"\t", "button_image_url:         ", this.settings.button_image_url.toString(), "\n",
  -			"\t", "button_width:             ", this.settings.button_width.toString(), "\n",
  -			"\t", "button_height:            ", this.settings.button_height.toString(), "\n",
  -			"\t", "button_text:              ", this.settings.button_text.toString(), "\n",
  -			"\t", "button_text_style:        ", this.settings.button_text_style.toString(), "\n",
  -			"\t", "button_text_top_padding:  ", this.settings.button_text_top_padding.toString(), "\n",
  -			"\t", "button_text_left_padding: ", this.settings.button_text_left_padding.toString(), "\n",
  -			"\t", "button_action:            ", this.settings.button_action.toString(), "\n",
  -			"\t", "button_disabled:          ", this.settings.button_disabled.toString(), "\n",
  -
  -			"\t", "custom_settings:          ", this.settings.custom_settings.toString(), "\n",
  -			"Event Handlers:\n",
  -			"\t", "swfupload_loaded_handler assigned:  ", (typeof this.settings.swfupload_loaded_handler === "function").toString(), "\n",
  -			"\t", "file_dialog_start_handler assigned: ", (typeof this.settings.file_dialog_start_handler === "function").toString(), "\n",
  -			"\t", "file_queued_handler assigned:       ", (typeof this.settings.file_queued_handler === "function").toString(), "\n",
  -			"\t", "file_queue_error_handler assigned:  ", (typeof this.settings.file_queue_error_handler === "function").toString(), "\n",
  -			"\t", "upload_start_handler assigned:      ", (typeof this.settings.upload_start_handler === "function").toString(), "\n",
  -			"\t", "upload_progress_handler assigned:   ", (typeof this.settings.upload_progress_handler === "function").toString(), "\n",
  -			"\t", "upload_error_handler assigned:      ", (typeof this.settings.upload_error_handler === "function").toString(), "\n",
  -			"\t", "upload_success_handler assigned:    ", (typeof this.settings.upload_success_handler === "function").toString(), "\n",
  -			"\t", "upload_complete_handler assigned:   ", (typeof this.settings.upload_complete_handler === "function").toString(), "\n",
  -			"\t", "debug_handler assigned:             ", (typeof this.settings.debug_handler === "function").toString(), "\n"
  -		].join("")
  -	);
  -};
  -
  -/* Note: addSetting and getSetting are no longer used by SWFUpload but are included
  -	the maintain v2 API compatibility
  -*/
  -// Public: (Deprecated) addSetting adds a setting value. If the value given is undefined or null then the default_value is used.
  -SWFUpload.prototype.addSetting = function (name, value, default_value) {
  -    if (value == undefined) {
  -        return (this.settings[name] = default_value);
  -    } else {
  -        return (this.settings[name] = value);
  -	}
  -};
  -
  -// Public: (Deprecated) getSetting gets a setting. Returns an empty string if the setting was not found.
  -SWFUpload.prototype.getSetting = function (name) {
  -    if (this.settings[name] != undefined) {
  -        return this.settings[name];
  -	}
  -
  -    return "";
  -};
  -
  -
  -
  -// Private: callFlash handles function calls made to the Flash element.
  -// Calls are made with a setTimeout for some functions to work around
  -// bugs in the ExternalInterface library.
  -SWFUpload.prototype.callFlash = function (functionName, argumentArray) {
  -	argumentArray = argumentArray || [];
  -	
  -	var movieElement = this.getMovieElement();
  -	var returnValue, returnString;
  -
  -	// Flash's method if calling ExternalInterface methods (code adapted from MooTools).
  -	try {
  -		returnString = movieElement.CallFunction('<invoke name="' + functionName + '" returntype="javascript">' + __flash__argumentsToXML(argumentArray, 0) + '</invoke>');
  -		returnValue = eval(returnString);
  -	} catch (ex) {
  -		throw "Call to " + functionName + " failed";
  -	}
  -	
  -	// Unescape file post param values
  -	if (returnValue != undefined && typeof returnValue.post === "object") {
  -		returnValue = this.unescapeFilePostParams(returnValue);
  -	}
  -
  -	return returnValue;
  -};
  -
  -
  -/* *****************************
  -	-- Flash control methods --
  -	Your UI should use these
  -	to operate SWFUpload
  -   ***************************** */
  -
  -// WARNING: this function does not work in Flash Player 10
  -// Public: selectFile causes a File Selection Dialog window to appear.  This
  -// dialog only allows 1 file to be selected.
  -SWFUpload.prototype.selectFile = function () {
  -	this.callFlash("SelectFile");
  -};
  -
  -// WARNING: this function does not work in Flash Player 10
  -// Public: selectFiles causes a File Selection Dialog window to appear/ This
  -// dialog allows the user to select any number of files
  -// Flash Bug Warning: Flash limits the number of selectable files based on the combined length of the file names.
  -// If the selection name length is too long the dialog will fail in an unpredictable manner.  There is no work-around
  -// for this bug.
  -SWFUpload.prototype.selectFiles = function () {
  -	this.callFlash("SelectFiles");
  -};
  -
  -
  -// Public: startUpload starts uploading the first file in the queue unless
  -// the optional parameter 'fileID' specifies the ID 
  -SWFUpload.prototype.startUpload = function (fileID) {
  -	this.callFlash("StartUpload", [fileID]);
  -};
  -
  -// Public: cancelUpload cancels any queued file.  The fileID parameter may be the file ID or index.
  -// If you do not specify a fileID the current uploading file or first file in the queue is cancelled.
  -// If you do not want the uploadError event to trigger you can specify false for the triggerErrorEvent parameter.
  -SWFUpload.prototype.cancelUpload = function (fileID, triggerErrorEvent) {
  -	if (triggerErrorEvent !== false) {
  -		triggerErrorEvent = true;
  -	}
  -	this.callFlash("CancelUpload", [fileID, triggerErrorEvent]);
  -};
  -
  -// Public: stopUpload stops the current upload and requeues the file at the beginning of the queue.
  -// If nothing is currently uploading then nothing happens.
  -SWFUpload.prototype.stopUpload = function () {
  -	this.callFlash("StopUpload");
  -};
  -
  -/* ************************
  - * Settings methods
  - *   These methods change the SWFUpload settings.
  - *   SWFUpload settings should not be changed directly on the settings object
  - *   since many of the settings need to be passed to Flash in order to take
  - *   effect.
  - * *********************** */
  -
  -// Public: getStats gets the file statistics object.
  -SWFUpload.prototype.getStats = function () {
  -	return this.callFlash("GetStats");
  -};
  -
  -// Public: setStats changes the SWFUpload statistics.  You shouldn't need to 
  -// change the statistics but you can.  Changing the statistics does not
  -// affect SWFUpload accept for the successful_uploads count which is used
  -// by the upload_limit setting to determine how many files the user may upload.
  -SWFUpload.prototype.setStats = function (statsObject) {
  -	this.callFlash("SetStats", [statsObject]);
  -};
  -
  -// Public: getFile retrieves a File object by ID or Index.  If the file is
  -// not found then 'null' is returned.
  -SWFUpload.prototype.getFile = function (fileID) {
  -	if (typeof(fileID) === "number") {
  -		return this.callFlash("GetFileByIndex", [fileID]);
  -	} else {
  -		return this.callFlash("GetFile", [fileID]);
  -	}
  -};
  -
  -// Public: addFileParam sets a name/value pair that will be posted with the
  -// file specified by the Files ID.  If the name already exists then the
  -// exiting value will be overwritten.
  -SWFUpload.prototype.addFileParam = function (fileID, name, value) {
  -	return this.callFlash("AddFileParam", [fileID, name, value]);
  -};
  -
  -// Public: removeFileParam removes a previously set (by addFileParam) name/value
  -// pair from the specified file.
  -SWFUpload.prototype.removeFileParam = function (fileID, name) {
  -	this.callFlash("RemoveFileParam", [fileID, name]);
  -};
  -
  -// Public: setUploadUrl changes the upload_url setting.
  -SWFUpload.prototype.setUploadURL = function (url) {
  -	this.settings.upload_url = url.toString();
  -	this.callFlash("SetUploadURL", [url]);
  -};
  -
  -// Public: setPostParams changes the post_params setting
  -SWFUpload.prototype.setPostParams = function (paramsObject) {
  -	this.settings.post_params = paramsObject;
  -	this.callFlash("SetPostParams", [paramsObject]);
  -};
  -
  -// Public: addPostParam adds post name/value pair.  Each name can have only one value.
  -SWFUpload.prototype.addPostParam = function (name, value) {
  -	this.settings.post_params[name] = value;
  -	this.callFlash("SetPostParams", [this.settings.post_params]);
  -};
  -
  -// Public: removePostParam deletes post name/value pair.
  -SWFUpload.prototype.removePostParam = function (name) {
  -	delete this.settings.post_params[name];
  -	this.callFlash("SetPostParams", [this.settings.post_params]);
  -};
  -
  -// Public: setFileTypes changes the file_types setting and the file_types_description setting
  -SWFUpload.prototype.setFileTypes = function (types, description) {
  -	this.settings.file_types = types;
  -	this.settings.file_types_description = description;
  -	this.callFlash("SetFileTypes", [types, description]);
  -};
  -
  -// Public: setFileSizeLimit changes the file_size_limit setting
  -SWFUpload.prototype.setFileSizeLimit = function (fileSizeLimit) {
  -	this.settings.file_size_limit = fileSizeLimit;
  -	this.callFlash("SetFileSizeLimit", [fileSizeLimit]);
  -};
  -
  -// Public: setFileUploadLimit changes the file_upload_limit setting
  -SWFUpload.prototype.setFileUploadLimit = function (fileUploadLimit) {
  -	this.settings.file_upload_limit = fileUploadLimit;
  -	this.callFlash("SetFileUploadLimit", [fileUploadLimit]);
  -};
  -
  -// Public: setFileQueueLimit changes the file_queue_limit setting
  -SWFUpload.prototype.setFileQueueLimit = function (fileQueueLimit) {
  -	this.settings.file_queue_limit = fileQueueLimit;
  -	this.callFlash("SetFileQueueLimit", [fileQueueLimit]);
  -};
  -
  -// Public: setFilePostName changes the file_post_name setting
  -SWFUpload.prototype.setFilePostName = function (filePostName) {
  -	this.settings.file_post_name = filePostName;
  -	this.callFlash("SetFilePostName", [filePostName]);
  -};
  -
  -// Public: setUseQueryString changes the use_query_string setting
  -SWFUpload.prototype.setUseQueryString = function (useQueryString) {
  -	this.settings.use_query_string = useQueryString;
  -	this.callFlash("SetUseQueryString", [useQueryString]);
  -};
  -
  -// Public: setRequeueOnError changes the requeue_on_error setting
  -SWFUpload.prototype.setRequeueOnError = function (requeueOnError) {
  -	this.settings.requeue_on_error = requeueOnError;
  -	this.callFlash("SetRequeueOnError", [requeueOnError]);
  -};
  -
  -// Public: setHTTPSuccess changes the http_success setting
  -SWFUpload.prototype.setHTTPSuccess = function (http_status_codes) {
  -	if (typeof http_status_codes === "string") {
  -		http_status_codes = http_status_codes.replace(" ", "").split(",");
  -	}
  -	
  -	this.settings.http_success = http_status_codes;
  -	this.callFlash("SetHTTPSuccess", [http_status_codes]);
  -};
  -
  -
  -// Public: setDebugEnabled changes the debug_enabled setting
  -SWFUpload.prototype.setDebugEnabled = function (debugEnabled) {
  -	this.settings.debug_enabled = debugEnabled;
  -	this.callFlash("SetDebugEnabled", [debugEnabled]);
  -};
  -
  -// Public: setButtonImageURL loads a button image sprite
  -SWFUpload.prototype.setButtonImageURL = function (buttonImageURL) {
  -	if (buttonImageURL == undefined) {
  -		buttonImageURL = "";
  -	}
  -	
  -	this.settings.button_image_url = buttonImageURL;
  -	this.callFlash("SetButtonImageURL", [buttonImageURL]);
  -};
  -
  -// Public: setButtonDimensions resizes the Flash Movie and button
  -SWFUpload.prototype.setButtonDimensions = function (width, height) {
  -	this.settings.button_width = width;
  -	this.settings.button_height = height;
  -	
  -	var movie = this.getMovieElement();
  -	if (movie != undefined) {
  -		movie.style.width = width + "px";
  -		movie.style.height = height + "px";
  -	}
  -	
  -	this.callFlash("SetButtonDimensions", [width, height]);
  -};
  -// Public: setButtonText Changes the text overlaid on the button
  -SWFUpload.prototype.setButtonText = function (html) {
  -	this.settings.button_text = html;
  -	this.callFlash("SetButtonText", [html]);
  -};
  -// Public: setButtonTextPadding changes the top and left padding of the text overlay
  -SWFUpload.prototype.setButtonTextPadding = function (left, top) {
  -	this.settings.button_text_top_padding = top;
  -	this.settings.button_text_left_padding = left;
  -	this.callFlash("SetButtonTextPadding", [left, top]);
  -};
  -
  -// Public: setButtonTextStyle changes the CSS used to style the HTML/Text overlaid on the button
  -SWFUpload.prototype.setButtonTextStyle = function (css) {
  -	this.settings.button_text_style = css;
  -	this.callFlash("SetButtonTextStyle", [css]);
  -};
  -// Public: setButtonDisabled disables/enables the button
  -SWFUpload.prototype.setButtonDisabled = function (isDisabled) {
  -	this.settings.button_disabled = isDisabled;
  -	this.callFlash("SetButtonDisabled", [isDisabled]);
  -};
  -// Public: setButtonAction sets the action that occurs when the button is clicked
  -SWFUpload.prototype.setButtonAction = function (buttonAction) {
  -	this.settings.button_action = buttonAction;
  -	this.callFlash("SetButtonAction", [buttonAction]);
  -};
  -
  -// Public: setButtonCursor changes the mouse cursor displayed when hovering over the button
  -SWFUpload.prototype.setButtonCursor = function (cursor) {
  -	this.settings.button_cursor = cursor;
  -	this.callFlash("SetButtonCursor", [cursor]);
  -};
  -
  -/* *******************************
  -	Flash Event Interfaces
  -	These functions are used by Flash to trigger the various
  -	events.
  -	
  -	All these functions a Private.
  -	
  -	Because the ExternalInterface library is buggy the event calls
  -	are added to a queue and the queue then executed by a setTimeout.
  -	This ensures that events are executed in a determinate order and that
  -	the ExternalInterface bugs are avoided.
  -******************************* */
  -
  -SWFUpload.prototype.queueEvent = function (handlerName, argumentArray) {
  -	// Warning: Don't call this.debug inside here or you'll create an infinite loop
  -	
  -	if (argumentArray == undefined) {
  -		argumentArray = [];
  -	} else if (!(argumentArray instanceof Array)) {
  -		argumentArray = [argumentArray];
  -	}
  -	
  -	var self = this;
  -	if (typeof this.settings[handlerName] === "function") {
  -		// Queue the event
  -		this.eventQueue.push(function () {
  -			this.settings[handlerName].apply(this, argumentArray);
  -		});
  -		
  -		// Execute the next queued event
  -		setTimeout(function () {
  -			self.executeNextEvent();
  -		}, 0);
  -		
  -	} else if (this.settings[handlerName] !== null) {
  -		throw "Event handler " + handlerName + " is unknown or is not a function";
  -	}
  -};
  -
  -// Private: Causes the next event in the queue to be executed.  Since events are queued using a setTimeout
  -// we must queue them in order to garentee that they are executed in order.
  -SWFUpload.prototype.executeNextEvent = function () {
  -	// Warning: Don't call this.debug inside here or you'll create an infinite loop
  -
  -	var  f = this.eventQueue ? this.eventQueue.shift() : null;
  -	if (typeof(f) === "function") {
  -		f.apply(this);
  -	}
  -};
  -
  -// Private: unescapeFileParams is part of a workaround for a flash bug where objects passed through ExternalInterface cannot have
  -// properties that contain characters that are not valid for JavaScript identifiers. To work around this
  -// the Flash Component escapes the parameter names and we must unescape again before passing them along.
  -SWFUpload.prototype.unescapeFilePostParams = function (file) {
  -	var reg = /[$]([0-9a-f]{4})/i;
  -	var unescapedPost = {};
  -	var uk;
  -
  -	if (file != undefined) {
  -		for (var k in file.post) {
  -			if (file.post.hasOwnProperty(k)) {
  -				uk = k;
  -				var match;
  -				while ((match = reg.exec(uk)) !== null) {
  -					uk = uk.replace(match[0], String.fromCharCode(parseInt("0x" + match[1], 16)));
  -				}
  -				unescapedPost[uk] = file.post[k];
  -			}
  -		}
  -
  -		file.post = unescapedPost;
  -	}
  -
  -	return file;
  -};
  -
  -SWFUpload.prototype.flashReady = function () {
  -	// Check that the movie element is loaded correctly with its ExternalInterface methods defined
  -	var movieElement = this.getMovieElement();
  -
  -	// Pro-actively unhook all the Flash functions
  -	if (typeof(movieElement.CallFunction) === "unknown") { // We only want to do this in IE
  -		this.debug("Removing Flash functions hooks (this should only run in IE and should prevent memory leaks)");
  -		for (var key in movieElement) {
  -			try {
  -				if (typeof(movieElement[key]) === "function") {
  -					movieElement[key] = null;
  -				}
  -			} catch (ex) {
  -			}
  -		}
  -	}
  -	
  -	this.queueEvent("swfupload_loaded_handler");
  -};
  -
  -
  -/* This is a chance to do something before the browse window opens */
  -SWFUpload.prototype.fileDialogStart = function () {
  -	this.queueEvent("file_dialog_start_handler");
  -};
  -
  -
  -/* Called when a file is successfully added to the queue. */
  -SWFUpload.prototype.fileQueued = function (file) {
  -	file = this.unescapeFilePostParams(file);
  -	this.queueEvent("file_queued_handler", file);
  -};
  -
  -
  -/* Handle errors that occur when an attempt to queue a file fails. */
  -SWFUpload.prototype.fileQueueError = function (file, errorCode, message) {
  -	file = this.unescapeFilePostParams(file);
  -	this.queueEvent("file_queue_error_handler", [file, errorCode, message]);
  -};
  -
  -/* Called after the file dialog has closed and the selected files have been queued.
  -	You could call startUpload here if you want the queued files to begin uploading immediately. */
  -SWFUpload.prototype.fileDialogComplete = function (numFilesSelected, numFilesQueued) {
  -	this.queueEvent("file_dialog_complete_handler", [numFilesSelected, numFilesQueued]);
  -};
  -
  -SWFUpload.prototype.uploadStart = function (file) {
  -	file = this.unescapeFilePostParams(file);
  -	this.queueEvent("return_upload_start_handler", file);
  -};
  -
  -SWFUpload.prototype.returnUploadStart = function (file) {
  -	var returnValue;
  -	if (typeof this.settings.upload_start_handler === "function") {
  -		file = this.unescapeFilePostParams(file);
  -		returnValue = this.settings.upload_start_handler.call(this, file);
  -	} else if (this.settings.upload_start_handler != undefined) {
  -		throw "upload_start_handler must be a function";
  -	}
  -
  -	// Convert undefined to true so if nothing is returned from the upload_start_handler it is
  -	// interpretted as 'true'.
  -	if (returnValue === undefined) {
  -		returnValue = true;
  -	}
  -	
  -	returnValue = !!returnValue;
  -	
  -	this.callFlash("ReturnUploadStart", [returnValue]);
  -};
  -
  -
  -
  -SWFUpload.prototype.uploadProgress = function (file, bytesComplete, bytesTotal) {
  -	file = this.unescapeFilePostParams(file);
  -	this.queueEvent("upload_progress_handler", [file, bytesComplete, bytesTotal]);
  -};
  -
  -SWFUpload.prototype.uploadError = function (file, errorCode, message) {
  -	file = this.unescapeFilePostParams(file);
  -	this.queueEvent("upload_error_handler", [file, errorCode, message]);
  -};
  -
  -SWFUpload.prototype.uploadSuccess = function (file, serverData) {
  -	file = this.unescapeFilePostParams(file);
  -	this.queueEvent("upload_success_handler", [file, serverData]);
  -};
  -
  -SWFUpload.prototype.uploadComplete = function (file) {
  -	file = this.unescapeFilePostParams(file);
  -	this.queueEvent("upload_complete_handler", file);
  -};
  -
  -/* Called by SWFUpload JavaScript and Flash functions when debug is enabled. By default it writes messages to the
  -   internal debug console.  You can override this event and have messages written where you want. */
  -SWFUpload.prototype.debug = function (message) {
  -	this.queueEvent("debug_handler", message);
  -};
  -
  -
  -/* **********************************
  -	Debug Console
  -	The debug console is a self contained, in page location
  -	for debug message to be sent.  The Debug Console adds
  -	itself to the body if necessary.
  -
  -	The console is automatically scrolled as messages appear.
  -	
  -	If you are using your own debug handler or when you deploy to production and
  -	have debug disabled you can remove these functions to reduce the file size
  -	and complexity.
  -********************************** */
  -   
  -// Private: debugMessage is the default debug_handler.  If you want to print debug messages
  -// call the debug() function.  When overriding the function your own function should
  -// check to see if the debug setting is true before outputting debug information.
  -SWFUpload.prototype.debugMessage = function (message) {
  -	if (this.settings.debug) {
  -		var exceptionMessage, exceptionValues = [];
  -
  -		// Check for an exception object and print it nicely
  -		if (typeof message === "object" && typeof message.name === "string" && typeof message.message === "string") {
  -			for (var key in message) {
  -				if (message.hasOwnProperty(key)) {
  -					exceptionValues.push(key + ": " + message[key]);
  -				}
  -			}
  -			exceptionMessage = exceptionValues.join("\n") || "";
  -			exceptionValues = exceptionMessage.split("\n");
  -			exceptionMessage = "EXCEPTION: " + exceptionValues.join("\nEXCEPTION: ");
  -			SWFUpload.Console.writeLine(exceptionMessage);
  -		} else {
  -			SWFUpload.Console.writeLine(message);
  -		}
  -	}
  -};
  -
  -SWFUpload.Console = {};
  -SWFUpload.Console.writeLine = function (message) {
  -	var console, documentForm;
  -
  -	try {
  -		console = document.getElementById("SWFUpload_Console");
  -
  -		if (!console) {
  -			documentForm = document.createElement("form");
  -			document.getElementsByTagName("body")[0].appendChild(documentForm);
  -
  -			console = document.createElement("textarea");
  -			console.id = "SWFUpload_Console";
  -			console.style.fontFamily = "monospace";
  -			console.setAttribute("wrap", "off");
  -			console.wrap = "off";
  -			console.style.overflow = "auto";
  -			console.style.width = "700px";
  -			console.style.height = "350px";
  -			console.style.margin = "5px";
  -			documentForm.appendChild(console);
  -		}
  -
  -		console.value += message + "\n";
  -
  -		console.scrollTop = console.scrollHeight - console.clientHeight;
  -	} catch (ex) {
  -		alert("Exception: " + ex.name + " Message: " + ex.message);
  -	}
  -};
  +/**
  + * SWFUpload: http://www.swfupload.org, http://swfupload.googlecode.com
  + *
  + * mmSWFUpload 1.0: Flash upload dialog - http://profandesign.se/swfupload/,  http://www.vinterwebb.se/
  + *
  + * SWFUpload is (c) 2006-2007 Lars Huring, Olov Nilzn and Mammon Media and is released under the MIT License:
  + * http://www.opensource.org/licenses/mit-license.php
  + *
  + * SWFUpload 2 is (c) 2007-2008 Jake Roberts and is released under the MIT License:
  + * http://www.opensource.org/licenses/mit-license.php
  + *
  + */
  +
  +
  +/* ******************* */
  +/* Constructor & Init  */
  +/* ******************* */
  +var SWFUpload;
  +
  +if (SWFUpload == undefined) {
  +	SWFUpload = function (settings) {
  +		this.initSWFUpload(settings);
  +	};
  +}
  +
  +SWFUpload.prototype.initSWFUpload = function (settings) {
  +	try {
  +		this.customSettings = {};	// A container where developers can place their own settings associated with this instance.
  +		this.settings = settings;
  +		this.eventQueue = [];
  +		this.movieName = "SWFUpload_" + SWFUpload.movieCount++;
  +		this.movieElement = null;
  +
  +
  +		// Setup global control tracking
  +		SWFUpload.instances[this.movieName] = this;
  +
  +		// Load the settings.  Load the Flash movie.
  +		this.initSettings();
  +		this.loadFlash();
  +		this.displayDebugInfo();
  +	} catch (ex) {
  +		delete SWFUpload.instances[this.movieName];
  +		throw ex;
  +	}
  +};
  +
  +/* *************** */
  +/* Static Members  */
  +/* *************** */
  +SWFUpload.instances = {};
  +SWFUpload.movieCount = 0;
  +SWFUpload.version = "2.2.0 Beta 3";
  +SWFUpload.QUEUE_ERROR = {
  +	QUEUE_LIMIT_EXCEEDED	  		: -100,
  +	FILE_EXCEEDS_SIZE_LIMIT  		: -110,
  +	ZERO_BYTE_FILE			  		: -120,
  +	INVALID_FILETYPE		  		: -130
  +};
  +SWFUpload.UPLOAD_ERROR = {
  +	HTTP_ERROR				  		: -200,
  +	MISSING_UPLOAD_URL	      		: -210,
  +	IO_ERROR				  		: -220,
  +	SECURITY_ERROR			  		: -230,
  +	UPLOAD_LIMIT_EXCEEDED	  		: -240,
  +	UPLOAD_FAILED			  		: -250,
  +	SPECIFIED_FILE_ID_NOT_FOUND		: -260,
  +	FILE_VALIDATION_FAILED	  		: -270,
  +	FILE_CANCELLED			  		: -280,
  +	UPLOAD_STOPPED					: -290
  +};
  +SWFUpload.FILE_STATUS = {
  +	QUEUED		 : -1,
  +	IN_PROGRESS	 : -2,
  +	ERROR		 : -3,
  +	COMPLETE	 : -4,
  +	CANCELLED	 : -5
  +};
  +SWFUpload.BUTTON_ACTION = {
  +	SELECT_FILE  : -100,
  +	SELECT_FILES : -110,
  +	START_UPLOAD : -120
  +};
  +SWFUpload.CURSOR = {
  +	ARROW : -1,
  +	HAND : -2
  +};
  +SWFUpload.WINDOW_MODE = {
  +	WINDOW : "window",
  +	TRANSPARENT : "transparent",
  +	OPAQUE : "opaque"
  +};
  +
  +/* ******************** */
  +/* Instance Members  */
  +/* ******************** */
  +
  +// Private: initSettings ensures that all the
  +// settings are set, getting a default value if one was not assigned.
  +SWFUpload.prototype.initSettings = function () {
  +	this.ensureDefault = function (settingName, defaultValue) {
  +		this.settings[settingName] = (this.settings[settingName] == undefined) ? defaultValue : this.settings[settingName];
  +	};
  +	
  +	// Upload backend settings
  +	this.ensureDefault("upload_url", "");
  +	this.ensureDefault("file_post_name", "Filedata");
  +	this.ensureDefault("post_params", {});
  +	this.ensureDefault("use_query_string", false);
  +	this.ensureDefault("requeue_on_error", false);
  +	this.ensureDefault("http_success", []);
  +	
  +	// File Settings
  +	this.ensureDefault("file_types", "*.*");
  +	this.ensureDefault("file_types_description", "All Files");
  +	this.ensureDefault("file_size_limit", 0);	// Default zero means "unlimited"
  +	this.ensureDefault("file_upload_limit", 0);
  +	this.ensureDefault("file_queue_limit", 0);
  +
  +	// Flash Settings
  +	this.ensureDefault("flash_url", "swfupload.swf");
  +	this.ensureDefault("prevent_swf_caching", true);
  +	
  +	// Button Settings
  +	this.ensureDefault("button_image_url", "");
  +	this.ensureDefault("button_width", 1);
  +	this.ensureDefault("button_height", 1);
  +	this.ensureDefault("button_text", "");
  +	this.ensureDefault("button_text_style", "color: #000000; font-size: 16pt;");
  +	this.ensureDefault("button_text_top_padding", 0);
  +	this.ensureDefault("button_text_left_padding", 0);
  +	this.ensureDefault("button_action", SWFUpload.BUTTON_ACTION.SELECT_FILES);
  +	this.ensureDefault("button_disabled", false);
  +	this.ensureDefault("button_placeholder_id", null);
  +	this.ensureDefault("button_cursor", SWFUpload.CURSOR.ARROW);
  +	this.ensureDefault("button_window_mode", SWFUpload.WINDOW_MODE.WINDOW);
  +	
  +	// Debug Settings
  +	this.ensureDefault("debug", false);
  +	this.settings.debug_enabled = this.settings.debug;	// Here to maintain v2 API
  +	
  +	// Event Handlers
  +	this.settings.return_upload_start_handler = this.returnUploadStart;
  +	this.ensureDefault("swfupload_loaded_handler", null);
  +	this.ensureDefault("file_dialog_start_handler", null);
  +	this.ensureDefault("file_queued_handler", null);
  +	this.ensureDefault("file_queue_error_handler", null);
  +	this.ensureDefault("file_dialog_complete_handler", null);
  +	
  +	this.ensureDefault("upload_start_handler", null);
  +	this.ensureDefault("upload_progress_handler", null);
  +	this.ensureDefault("upload_error_handler", null);
  +	this.ensureDefault("upload_success_handler", null);
  +	this.ensureDefault("upload_complete_handler", null);
  +	
  +	this.ensureDefault("debug_handler", this.debugMessage);
  +
  +	this.ensureDefault("custom_settings", {});
  +
  +	// Other settings
  +	this.customSettings = this.settings.custom_settings;
  +	
  +	// Update the flash url if needed
  +	if (this.settings.prevent_swf_caching) {
  +		this.settings.flash_url = this.settings.flash_url + "?swfuploadrnd=" + Math.floor(Math.random() * 999999999);
  +	}
  +	
  +	delete this.ensureDefault;
  +};
  +
  +SWFUpload.prototype.loadFlash = function () {
  +	if (this.settings.button_placeholder_id !== "") {
  +		this.replaceWithFlash();
  +	} else {
  +		this.appendFlash();
  +	}
  +};
  +
  +// Private: appendFlash gets the HTML tag for the Flash
  +// It then appends the flash to the body
  +SWFUpload.prototype.appendFlash = function () {
  +	var targetElement, container;
  +
  +	// Make sure an element with the ID we are going to use doesn't already exist
  +	if (document.getElementById(this.movieName) !== null) {
  +		throw "ID " + this.movieName + " is already in use. The Flash Object could not be added";
  +	}
  +
  +	// Get the body tag where we will be adding the flash movie
  +	targetElement = document.getElementsByTagName("body")[0];
  +
  +	if (targetElement == undefined) {
  +		throw "Could not find the 'body' element.";
  +	}
  +
  +	// Append the container and load the flash
  +	container = document.createElement("div");
  +	container.style.width = "1px";
  +	container.style.height = "1px";
  +	container.style.overflow = "hidden";
  +
  +	targetElement.appendChild(container);
  +	container.innerHTML = this.getFlashHTML();	// Using innerHTML is non-standard but the only sensible way to dynamically add Flash in IE (and maybe other browsers)
  +
  +	// Fix IE Flash/Form bug
  +	if (window[this.movieName] == undefined) {
  +		window[this.movieName] = this.getMovieElement();
  +	}
  +	
  +	
  +};
  +
  +// Private: replaceWithFlash replaces the button_placeholder element with the flash movie.
  +SWFUpload.prototype.replaceWithFlash = function () {
  +	var targetElement, tempParent;
  +
  +	// Make sure an element with the ID we are going to use doesn't already exist
  +	if (document.getElementById(this.movieName) !== null) {
  +		throw "ID " + this.movieName + " is already in use. The Flash Object could not be added";
  +	}
  +
  +	// Get the element where we will be placing the flash movie
  +	targetElement = document.getElementById(this.settings.button_placeholder_id);
  +
  +	if (targetElement == undefined) {
  +		throw "Could not find the placeholder element.";
  +	}
  +
  +	// Append the container and load the flash
  +	tempParent = document.createElement("div");
  +	tempParent.innerHTML = this.getFlashHTML();	// Using innerHTML is non-standard but the only sensible way to dynamically add Flash in IE (and maybe other browsers)
  +	targetElement.parentNode.replaceChild(tempParent.firstChild, targetElement);
  +
  +	// Fix IE Flash/Form bug
  +	if (window[this.movieName] == undefined) {
  +		window[this.movieName] = this.getMovieElement();
  +	}
  +	
  +};
  +
  +// Private: getFlashHTML generates the object tag needed to embed the flash in to the document
  +SWFUpload.prototype.getFlashHTML = function () {
  +	// Flash Satay object syntax: http://www.alistapart.com/articles/flashsatay
  +	return ['<object id="', this.movieName, '" type="application/x-shockwave-flash" data="', this.settings.flash_url, '" width="', this.settings.button_width, '" height="', this.settings.button_height, '" class="swfupload">',
  +				'<param name="wmode" value="', this.settings.button_window_mode , '" />',
  +				'<param name="movie" value="', this.settings.flash_url, '" />',
  +				'<param name="quality" value="high" />',
  +				'<param name="menu" value="false" />',
  +				'<param name="allowScriptAccess" value="always" />',
  +				'<param name="flashvars" value="' + this.getFlashVars() + '" />',
  +				'</object>'].join("");
  +};
  +
  +// Private: getFlashVars builds the parameter string that will be passed
  +// to flash in the flashvars param.
  +SWFUpload.prototype.getFlashVars = function () {
  +	// Build a string from the post param object
  +	var paramString = this.buildParamString();
  +	var httpSuccessString = this.settings.http_success.join(",");
  +	
  +	// Build the parameter string
  +	return ["movieName=", encodeURIComponent(this.movieName),
  +			"&amp;uploadURL=", encodeURIComponent(this.settings.upload_url),
  +			"&amp;useQueryString=", encodeURIComponent(this.settings.use_query_string),
  +			"&amp;requeueOnError=", encodeURIComponent(this.settings.requeue_on_error),
  +			"&amp;httpSuccess=", encodeURIComponent(httpSuccessString),
  +			"&amp;params=", encodeURIComponent(paramString),
  +			"&amp;filePostName=", encodeURIComponent(this.settings.file_post_name),
  +			"&amp;fileTypes=", encodeURIComponent(this.settings.file_types),
  +			"&amp;fileTypesDescription=", encodeURIComponent(this.settings.file_types_description),
  +			"&amp;fileSizeLimit=", encodeURIComponent(this.settings.file_size_limit),
  +			"&amp;fileUploadLimit=", encodeURIComponent(this.settings.file_upload_limit),
  +			"&amp;fileQueueLimit=", encodeURIComponent(this.settings.file_queue_limit),
  +			"&amp;debugEnabled=", encodeURIComponent(this.settings.debug_enabled),
  +			"&amp;buttonImageURL=", encodeURIComponent(this.settings.button_image_url),
  +			"&amp;buttonWidth=", encodeURIComponent(this.settings.button_width),
  +			"&amp;buttonHeight=", encodeURIComponent(this.settings.button_height),
  +			"&amp;buttonText=", encodeURIComponent(this.settings.button_text),
  +			"&amp;buttonTextTopPadding=", encodeURIComponent(this.settings.button_text_top_padding),
  +			"&amp;buttonTextLeftPadding=", encodeURIComponent(this.settings.button_text_left_padding),
  +			"&amp;buttonTextStyle=", encodeURIComponent(this.settings.button_text_style),
  +			"&amp;buttonAction=", encodeURIComponent(this.settings.button_action),
  +			"&amp;buttonDisabled=", encodeURIComponent(this.settings.button_disabled),
  +			"&amp;buttonCursor=", encodeURIComponent(this.settings.button_cursor)
  +		].join("");
  +};
  +
  +// Public: getMovieElement retrieves the DOM reference to the Flash element added by SWFUpload
  +// The element is cached after the first lookup
  +SWFUpload.prototype.getMovieElement = function () {
  +	if (this.movieElement == undefined) {
  +		this.movieElement = document.getElementById(this.movieName);
  +	}
  +
  +	if (this.movieElement === null) {
  +		throw "Could not find Flash element";
  +	}
  +	
  +	return this.movieElement;
  +};
  +
  +// Private: buildParamString takes the name/value pairs in the post_params setting object
  +// and joins them up in to a string formatted "name=value&amp;name=value"
  +SWFUpload.prototype.buildParamString = function () {
  +	var postParams = this.settings.post_params; 
  +	var paramStringPairs = [];
  +
  +	if (typeof(postParams) === "object") {
  +		for (var name in postParams) {
  +			if (postParams.hasOwnProperty(name)) {
  +				paramStringPairs.push(encodeURIComponent(name.toString()) + "=" + encodeURIComponent(postParams[name].toString()));
  +			}
  +		}
  +	}
  +
  +	return paramStringPairs.join("&amp;");
  +};
  +
  +// Public: Used to remove a SWFUpload instance from the page. This method strives to remove
  +// all references to the SWF, and other objects so memory is properly freed.
  +// Returns true if everything was destroyed. Returns a false if a failure occurs leaving SWFUpload in an inconsistant state.
  +// Credits: Major improvements provided by steffen
  +SWFUpload.prototype.destroy = function () {
  +	try {
  +		// Make sure Flash is done before we try to remove it
  +		this.cancelUpload(null, false);
  +		
  +		// Remove the SWFUpload DOM nodes
  +		var movieElement = null;
  +		movieElement = this.getMovieElement();
  +		
  +		if (movieElement) {
  +			// Loop through all the movie's properties and remove all function references (DOM/JS IE 6/7 memory leak workaround)
  +			for (var i in movieElement) {
  +				try {
  +					if (typeof(movieElement[i]) === "function") {
  +						movieElement[i] = null;
  +					}
  +				} catch (ex1) {}
  +			}
  +
  +			// Remove the Movie Element from the page
  +			try {
  +				movieElement.parentNode.removeChild(movieElement);
  +			} catch (ex) {}
  +		}
  +		
  +		
  +		// Remove IE form fix reference
  +		window[this.movieName] = null;
  +
  +		// Destroy other references
  +		SWFUpload.instances[this.movieName] = null;
  +		delete SWFUpload.instances[this.movieName];
  +
  +		this.movieElement = null;
  +		this.settings = null;
  +		this.customSettings = null;
  +		this.eventQueue = null;
  +		this.movieName = null;
  +		
  +		
  +		return true;
  +	} catch (ex1) {
  +		return false;
  +	}
  +};
  +
  +// Public: displayDebugInfo prints out settings and configuration
  +// information about this SWFUpload instance.
  +// This function (and any references to it) can be deleted when placing
  +// SWFUpload in production.
  +SWFUpload.prototype.displayDebugInfo = function () {
  +	this.debug(
  +		[
  +			"---SWFUpload Instance Info---\n",
  +			"Version: ", SWFUpload.version, "\n",
  +			"Movie Name: ", this.movieName, "\n",
  +			"Settings:\n",
  +			"\t", "upload_url:               ", this.settings.upload_url, "\n",
  +			"\t", "flash_url:                ", this.settings.flash_url, "\n",
  +			"\t", "use_query_string:         ", this.settings.use_query_string.toString(), "\n",
  +			"\t", "requeue_on_error:         ", this.settings.requeue_on_error.toString(), "\n",
  +			"\t", "http_success:             ", this.settings.http_success.join(", "), "\n",
  +			"\t", "file_post_name:           ", this.settings.file_post_name, "\n",
  +			"\t", "post_params:              ", this.settings.post_params.toString(), "\n",
  +			"\t", "file_types:               ", this.settings.file_types, "\n",
  +			"\t", "file_types_description:   ", this.settings.file_types_description, "\n",
  +			"\t", "file_size_limit:          ", this.settings.file_size_limit, "\n",
  +			"\t", "file_upload_limit:        ", this.settings.file_upload_limit, "\n",
  +			"\t", "file_queue_limit:         ", this.settings.file_queue_limit, "\n",
  +			"\t", "debug:                    ", this.settings.debug.toString(), "\n",
  +
  +			"\t", "prevent_swf_caching:      ", this.settings.prevent_swf_caching.toString(), "\n",
  +
  +			"\t", "button_placeholder_id:    ", this.settings.button_placeholder_id.toString(), "\n",
  +			"\t", "button_image_url:         ", this.settings.button_image_url.toString(), "\n",
  +			"\t", "button_width:             ", this.settings.button_width.toString(), "\n",
  +			"\t", "button_height:            ", this.settings.button_height.toString(), "\n",
  +			"\t", "button_text:              ", this.settings.button_text.toString(), "\n",
  +			"\t", "button_text_style:        ", this.settings.button_text_style.toString(), "\n",
  +			"\t", "button_text_top_padding:  ", this.settings.button_text_top_padding.toString(), "\n",
  +			"\t", "button_text_left_padding: ", this.settings.button_text_left_padding.toString(), "\n",
  +			"\t", "button_action:            ", this.settings.button_action.toString(), "\n",
  +			"\t", "button_disabled:          ", this.settings.button_disabled.toString(), "\n",
  +
  +			"\t", "custom_settings:          ", this.settings.custom_settings.toString(), "\n",
  +			"Event Handlers:\n",
  +			"\t", "swfupload_loaded_handler assigned:  ", (typeof this.settings.swfupload_loaded_handler === "function").toString(), "\n",
  +			"\t", "file_dialog_start_handler assigned: ", (typeof this.settings.file_dialog_start_handler === "function").toString(), "\n",
  +			"\t", "file_queued_handler assigned:       ", (typeof this.settings.file_queued_handler === "function").toString(), "\n",
  +			"\t", "file_queue_error_handler assigned:  ", (typeof this.settings.file_queue_error_handler === "function").toString(), "\n",
  +			"\t", "upload_start_handler assigned:      ", (typeof this.settings.upload_start_handler === "function").toString(), "\n",
  +			"\t", "upload_progress_handler assigned:   ", (typeof this.settings.upload_progress_handler === "function").toString(), "\n",
  +			"\t", "upload_error_handler assigned:      ", (typeof this.settings.upload_error_handler === "function").toString(), "\n",
  +			"\t", "upload_success_handler assigned:    ", (typeof this.settings.upload_success_handler === "function").toString(), "\n",
  +			"\t", "upload_complete_handler assigned:   ", (typeof this.settings.upload_complete_handler === "function").toString(), "\n",
  +			"\t", "debug_handler assigned:             ", (typeof this.settings.debug_handler === "function").toString(), "\n"
  +		].join("")
  +	);
  +};
  +
  +/* Note: addSetting and getSetting are no longer used by SWFUpload but are included
  +	the maintain v2 API compatibility
  +*/
  +// Public: (Deprecated) addSetting adds a setting value. If the value given is undefined or null then the default_value is used.
  +SWFUpload.prototype.addSetting = function (name, value, default_value) {
  +    if (value == undefined) {
  +        return (this.settings[name] = default_value);
  +    } else {
  +        return (this.settings[name] = value);
  +	}
  +};
  +
  +// Public: (Deprecated) getSetting gets a setting. Returns an empty string if the setting was not found.
  +SWFUpload.prototype.getSetting = function (name) {
  +    if (this.settings[name] != undefined) {
  +        return this.settings[name];
  +	}
  +
  +    return "";
  +};
  +
  +
  +
  +// Private: callFlash handles function calls made to the Flash element.
  +// Calls are made with a setTimeout for some functions to work around
  +// bugs in the ExternalInterface library.
  +SWFUpload.prototype.callFlash = function (functionName, argumentArray) {
  +	argumentArray = argumentArray || [];
  +	
  +	var movieElement = this.getMovieElement();
  +	var returnValue, returnString;
  +
  +	// Flash's method if calling ExternalInterface methods (code adapted from MooTools).
  +	try {
  +		returnString = movieElement.CallFunction('<invoke name="' + functionName + '" returntype="javascript">' + __flash__argumentsToXML(argumentArray, 0) + '</invoke>');
  +		returnValue = eval(returnString);
  +	} catch (ex) {
  +		throw "Call to " + functionName + " failed";
  +	}
  +	
  +	// Unescape file post param values
  +	if (returnValue != undefined && typeof returnValue.post === "object") {
  +		returnValue = this.unescapeFilePostParams(returnValue);
  +	}
  +
  +	return returnValue;
  +};
  +
  +
  +/* *****************************
  +	-- Flash control methods --
  +	Your UI should use these
  +	to operate SWFUpload
  +   ***************************** */
  +
  +// WARNING: this function does not work in Flash Player 10
  +// Public: selectFile causes a File Selection Dialog window to appear.  This
  +// dialog only allows 1 file to be selected.
  +SWFUpload.prototype.selectFile = function () {
  +	this.callFlash("SelectFile");
  +};
  +
  +// WARNING: this function does not work in Flash Player 10
  +// Public: selectFiles causes a File Selection Dialog window to appear/ This
  +// dialog allows the user to select any number of files
  +// Flash Bug Warning: Flash limits the number of selectable files based on the combined length of the file names.
  +// If the selection name length is too long the dialog will fail in an unpredictable manner.  There is no work-around
  +// for this bug.
  +SWFUpload.prototype.selectFiles = function () {
  +	this.callFlash("SelectFiles");
  +};
  +
  +
  +// Public: startUpload starts uploading the first file in the queue unless
  +// the optional parameter 'fileID' specifies the ID 
  +SWFUpload.prototype.startUpload = function (fileID) {
  +	this.callFlash("StartUpload", [fileID]);
  +};
  +
  +// Public: cancelUpload cancels any queued file.  The fileID parameter may be the file ID or index.
  +// If you do not specify a fileID the current uploading file or first file in the queue is cancelled.
  +// If you do not want the uploadError event to trigger you can specify false for the triggerErrorEvent parameter.
  +SWFUpload.prototype.cancelUpload = function (fileID, triggerErrorEvent) {
  +	if (triggerErrorEvent !== false) {
  +		triggerErrorEvent = true;
  +	}
  +	this.callFlash("CancelUpload", [fileID, triggerErrorEvent]);
  +};
  +
  +// Public: stopUpload stops the current upload and requeues the file at the beginning of the queue.
  +// If nothing is currently uploading then nothing happens.
  +SWFUpload.prototype.stopUpload = function () {
  +	this.callFlash("StopUpload");
  +};
  +
  +/* ************************
  + * Settings methods
  + *   These methods change the SWFUpload settings.
  + *   SWFUpload settings should not be changed directly on the settings object
  + *   since many of the settings need to be passed to Flash in order to take
  + *   effect.
  + * *********************** */
  +
  +// Public: getStats gets the file statistics object.
  +SWFUpload.prototype.getStats = function () {
  +	return this.callFlash("GetStats");
  +};
  +
  +// Public: setStats changes the SWFUpload statistics.  You shouldn't need to 
  +// change the statistics but you can.  Changing the statistics does not
  +// affect SWFUpload accept for the successful_uploads count which is used
  +// by the upload_limit setting to determine how many files the user may upload.
  +SWFUpload.prototype.setStats = function (statsObject) {
  +	this.callFlash("SetStats", [statsObject]);
  +};
  +
  +// Public: getFile retrieves a File object by ID or Index.  If the file is
  +// not found then 'null' is returned.
  +SWFUpload.prototype.getFile = function (fileID) {
  +	if (typeof(fileID) === "number") {
  +		return this.callFlash("GetFileByIndex", [fileID]);
  +	} else {
  +		return this.callFlash("GetFile", [fileID]);
  +	}
  +};
  +
  +// Public: addFileParam sets a name/value pair that will be posted with the
  +// file specified by the Files ID.  If the name already exists then the
  +// exiting value will be overwritten.
  +SWFUpload.prototype.addFileParam = function (fileID, name, value) {
  +	return this.callFlash("AddFileParam", [fileID, name, value]);
  +};
  +
  +// Public: removeFileParam removes a previously set (by addFileParam) name/value
  +// pair from the specified file.
  +SWFUpload.prototype.removeFileParam = function (fileID, name) {
  +	this.callFlash("RemoveFileParam", [fileID, name]);
  +};
  +
  +// Public: setUploadUrl changes the upload_url setting.
  +SWFUpload.prototype.setUploadURL = function (url) {
  +	this.settings.upload_url = url.toString();
  +	this.callFlash("SetUploadURL", [url]);
  +};
  +
  +// Public: setPostParams changes the post_params setting
  +SWFUpload.prototype.setPostParams = function (paramsObject) {
  +	this.settings.post_params = paramsObject;
  +	this.callFlash("SetPostParams", [paramsObject]);
  +};
  +
  +// Public: addPostParam adds post name/value pair.  Each name can have only one value.
  +SWFUpload.prototype.addPostParam = function (name, value) {
  +	this.settings.post_params[name] = value;
  +	this.callFlash("SetPostParams", [this.settings.post_params]);
  +};
  +
  +// Public: removePostParam deletes post name/value pair.
  +SWFUpload.prototype.removePostParam = function (name) {
  +	delete this.settings.post_params[name];
  +	this.callFlash("SetPostParams", [this.settings.post_params]);
  +};
  +
  +// Public: setFileTypes changes the file_types setting and the file_types_description setting
  +SWFUpload.prototype.setFileTypes = function (types, description) {
  +	this.settings.file_types = types;
  +	this.settings.file_types_description = description;
  +	this.callFlash("SetFileTypes", [types, description]);
  +};
  +
  +// Public: setFileSizeLimit changes the file_size_limit setting
  +SWFUpload.prototype.setFileSizeLimit = function (fileSizeLimit) {
  +	this.settings.file_size_limit = fileSizeLimit;
  +	this.callFlash("SetFileSizeLimit", [fileSizeLimit]);
  +};
  +
  +// Public: setFileUploadLimit changes the file_upload_limit setting
  +SWFUpload.prototype.setFileUploadLimit = function (fileUploadLimit) {
  +	this.settings.file_upload_limit = fileUploadLimit;
  +	this.callFlash("SetFileUploadLimit", [fileUploadLimit]);
  +};
  +
  +// Public: setFileQueueLimit changes the file_queue_limit setting
  +SWFUpload.prototype.setFileQueueLimit = function (fileQueueLimit) {
  +	this.settings.file_queue_limit = fileQueueLimit;
  +	this.callFlash("SetFileQueueLimit", [fileQueueLimit]);
  +};
  +
  +// Public: setFilePostName changes the file_post_name setting
  +SWFUpload.prototype.setFilePostName = function (filePostName) {
  +	this.settings.file_post_name = filePostName;
  +	this.callFlash("SetFilePostName", [filePostName]);
  +};
  +
  +// Public: setUseQueryString changes the use_query_string setting
  +SWFUpload.prototype.setUseQueryString = function (useQueryString) {
  +	this.settings.use_query_string = useQueryString;
  +	this.callFlash("SetUseQueryString", [useQueryString]);
  +};
  +
  +// Public: setRequeueOnError changes the requeue_on_error setting
  +SWFUpload.prototype.setRequeueOnError = function (requeueOnError) {
  +	this.settings.requeue_on_error = requeueOnError;
  +	this.callFlash("SetRequeueOnError", [requeueOnError]);
  +};
  +
  +// Public: setHTTPSuccess changes the http_success setting
  +SWFUpload.prototype.setHTTPSuccess = function (http_status_codes) {
  +	if (typeof http_status_codes === "string") {
  +		http_status_codes = http_status_codes.replace(" ", "").split(",");
  +	}
  +	
  +	this.settings.http_success = http_status_codes;
  +	this.callFlash("SetHTTPSuccess", [http_status_codes]);
  +};
  +
  +
  +// Public: setDebugEnabled changes the debug_enabled setting
  +SWFUpload.prototype.setDebugEnabled = function (debugEnabled) {
  +	this.settings.debug_enabled = debugEnabled;
  +	this.callFlash("SetDebugEnabled", [debugEnabled]);
  +};
  +
  +// Public: setButtonImageURL loads a button image sprite
  +SWFUpload.prototype.setButtonImageURL = function (buttonImageURL) {
  +	if (buttonImageURL == undefined) {
  +		buttonImageURL = "";
  +	}
  +	
  +	this.settings.button_image_url = buttonImageURL;
  +	this.callFlash("SetButtonImageURL", [buttonImageURL]);
  +};
  +
  +// Public: setButtonDimensions resizes the Flash Movie and button
  +SWFUpload.prototype.setButtonDimensions = function (width, height) {
  +	this.settings.button_width = width;
  +	this.settings.button_height = height;
  +	
  +	var movie = this.getMovieElement();
  +	if (movie != undefined) {
  +		movie.style.width = width + "px";
  +		movie.style.height = height + "px";
  +	}
  +	
  +	this.callFlash("SetButtonDimensions", [width, height]);
  +};
  +// Public: setButtonText Changes the text overlaid on the button
  +SWFUpload.prototype.setButtonText = function (html) {
  +	this.settings.button_text = html;
  +	this.callFlash("SetButtonText", [html]);
  +};
  +// Public: setButtonTextPadding changes the top and left padding of the text overlay
  +SWFUpload.prototype.setButtonTextPadding = function (left, top) {
  +	this.settings.button_text_top_padding = top;
  +	this.settings.button_text_left_padding = left;
  +	this.callFlash("SetButtonTextPadding", [left, top]);
  +};
  +
  +// Public: setButtonTextStyle changes the CSS used to style the HTML/Text overlaid on the button
  +SWFUpload.prototype.setButtonTextStyle = function (css) {
  +	this.settings.button_text_style = css;
  +	this.callFlash("SetButtonTextStyle", [css]);
  +};
  +// Public: setButtonDisabled disables/enables the button
  +SWFUpload.prototype.setButtonDisabled = function (isDisabled) {
  +	this.settings.button_disabled = isDisabled;
  +	this.callFlash("SetButtonDisabled", [isDisabled]);
  +};
  +// Public: setButtonAction sets the action that occurs when the button is clicked
  +SWFUpload.prototype.setButtonAction = function (buttonAction) {
  +	this.settings.button_action = buttonAction;
  +	this.callFlash("SetButtonAction", [buttonAction]);
  +};
  +
  +// Public: setButtonCursor changes the mouse cursor displayed when hovering over the button
  +SWFUpload.prototype.setButtonCursor = function (cursor) {
  +	this.settings.button_cursor = cursor;
  +	this.callFlash("SetButtonCursor", [cursor]);
  +};
  +
  +/* *******************************
  +	Flash Event Interfaces
  +	These functions are used by Flash to trigger the various
  +	events.
  +	
  +	All these functions a Private.
  +	
  +	Because the ExternalInterface library is buggy the event calls
  +	are added to a queue and the queue then executed by a setTimeout.
  +	This ensures that events are executed in a determinate order and that
  +	the ExternalInterface bugs are avoided.
  +******************************* */
  +
  +SWFUpload.prototype.queueEvent = function (handlerName, argumentArray) {
  +	// Warning: Don't call this.debug inside here or you'll create an infinite loop
  +	
  +	if (argumentArray == undefined) {
  +		argumentArray = [];
  +	} else if (!(argumentArray instanceof Array)) {
  +		argumentArray = [argumentArray];
  +	}
  +	
  +	var self = this;
  +	if (typeof this.settings[handlerName] === "function") {
  +		// Queue the event
  +		this.eventQueue.push(function () {
  +			this.settings[handlerName].apply(this, argumentArray);
  +		});
  +		
  +		// Execute the next queued event
  +		setTimeout(function () {
  +			self.executeNextEvent();
  +		}, 0);
  +		
  +	} else if (this.settings[handlerName] !== null) {
  +		throw "Event handler " + handlerName + " is unknown or is not a function";
  +	}
  +};
  +
  +// Private: Causes the next event in the queue to be executed.  Since events are queued using a setTimeout
  +// we must queue them in order to garentee that they are executed in order.
  +SWFUpload.prototype.executeNextEvent = function () {
  +	// Warning: Don't call this.debug inside here or you'll create an infinite loop
  +
  +	var  f = this.eventQueue ? this.eventQueue.shift() : null;
  +	if (typeof(f) === "function") {
  +		f.apply(this);
  +	}
  +};
  +
  +// Private: unescapeFileParams is part of a workaround for a flash bug where objects passed through ExternalInterface cannot have
  +// properties that contain characters that are not valid for JavaScript identifiers. To work around this
  +// the Flash Component escapes the parameter names and we must unescape again before passing them along.
  +SWFUpload.prototype.unescapeFilePostParams = function (file) {
  +	var reg = /[$]([0-9a-f]{4})/i;
  +	var unescapedPost = {};
  +	var uk;
  +
  +	if (file != undefined) {
  +		for (var k in file.post) {
  +			if (file.post.hasOwnProperty(k)) {
  +				uk = k;
  +				var match;
  +				while ((match = reg.exec(uk)) !== null) {
  +					uk = uk.replace(match[0], String.fromCharCode(parseInt("0x" + match[1], 16)));
  +				}
  +				unescapedPost[uk] = file.post[k];
  +			}
  +		}
  +
  +		file.post = unescapedPost;
  +	}
  +
  +	return file;
  +};
  +
  +SWFUpload.prototype.flashReady = function () {
  +	// Check that the movie element is loaded correctly with its ExternalInterface methods defined
  +	var movieElement = this.getMovieElement();
  +
  +	// Pro-actively unhook all the Flash functions
  +	if (typeof(movieElement.CallFunction) === "unknown") { // We only want to do this in IE
  +		this.debug("Removing Flash functions hooks (this should only run in IE and should prevent memory leaks)");
  +		for (var key in movieElement) {
  +			try {
  +				if (typeof(movieElement[key]) === "function") {
  +					movieElement[key] = null;
  +				}
  +			} catch (ex) {
  +			}
  +		}
  +	}
  +	
  +	this.queueEvent("swfupload_loaded_handler");
  +};
  +
  +
  +/* This is a chance to do something before the browse window opens */
  +SWFUpload.prototype.fileDialogStart = function () {
  +	this.queueEvent("file_dialog_start_handler");
  +};
  +
  +
  +/* Called when a file is successfully added to the queue. */
  +SWFUpload.prototype.fileQueued = function (file) {
  +	file = this.unescapeFilePostParams(file);
  +	this.queueEvent("file_queued_handler", file);
  +};
  +
  +
  +/* Handle errors that occur when an attempt to queue a file fails. */
  +SWFUpload.prototype.fileQueueError = function (file, errorCode, message) {
  +	file = this.unescapeFilePostParams(file);
  +	this.queueEvent("file_queue_error_handler", [file, errorCode, message]);
  +};
  +
  +/* Called after the file dialog has closed and the selected files have been queued.
  +	You could call startUpload here if you want the queued files to begin uploading immediately. */
  +SWFUpload.prototype.fileDialogComplete = function (numFilesSelected, numFilesQueued) {
  +	this.queueEvent("file_dialog_complete_handler", [numFilesSelected, numFilesQueued]);
  +};
  +
  +SWFUpload.prototype.uploadStart = function (file) {
  +	file = this.unescapeFilePostParams(file);
  +	this.queueEvent("return_upload_start_handler", file);
  +};
  +
  +SWFUpload.prototype.returnUploadStart = function (file) {
  +	var returnValue;
  +	if (typeof this.settings.upload_start_handler === "function") {
  +		file = this.unescapeFilePostParams(file);
  +		returnValue = this.settings.upload_start_handler.call(this, file);
  +	} else if (this.settings.upload_start_handler != undefined) {
  +		throw "upload_start_handler must be a function";
  +	}
  +
  +	// Convert undefined to true so if nothing is returned from the upload_start_handler it is
  +	// interpretted as 'true'.
  +	if (returnValue === undefined) {
  +		returnValue = true;
  +	}
  +	
  +	returnValue = !!returnValue;
  +	
  +	this.callFlash("ReturnUploadStart", [returnValue]);
  +};
  +
  +
  +
  +SWFUpload.prototype.uploadProgress = function (file, bytesComplete, bytesTotal) {
  +	file = this.unescapeFilePostParams(file);
  +	this.queueEvent("upload_progress_handler", [file, bytesComplete, bytesTotal]);
  +};
  +
  +SWFUpload.prototype.uploadError = function (file, errorCode, message) {
  +	file = this.unescapeFilePostParams(file);
  +	this.queueEvent("upload_error_handler", [file, errorCode, message]);
  +};
  +
  +SWFUpload.prototype.uploadSuccess = function (file, serverData) {
  +	file = this.unescapeFilePostParams(file);
  +	this.queueEvent("upload_success_handler", [file, serverData]);
  +};
  +
  +SWFUpload.prototype.uploadComplete = function (file) {
  +	file = this.unescapeFilePostParams(file);
  +	this.queueEvent("upload_complete_handler", file);
  +};
  +
  +/* Called by SWFUpload JavaScript and Flash functions when debug is enabled. By default it writes messages to the
  +   internal debug console.  You can override this event and have messages written where you want. */
  +SWFUpload.prototype.debug = function (message) {
  +	this.queueEvent("debug_handler", message);
  +};
  +
  +
  +/* **********************************
  +	Debug Console
  +	The debug console is a self contained, in page location
  +	for debug message to be sent.  The Debug Console adds
  +	itself to the body if necessary.
  +
  +	The console is automatically scrolled as messages appear.
  +	
  +	If you are using your own debug handler or when you deploy to production and
  +	have debug disabled you can remove these functions to reduce the file size
  +	and complexity.
  +********************************** */
  +   
  +// Private: debugMessage is the default debug_handler.  If you want to print debug messages
  +// call the debug() function.  When overriding the function your own function should
  +// check to see if the debug setting is true before outputting debug information.
  +SWFUpload.prototype.debugMessage = function (message) {
  +	if (this.settings.debug) {
  +		var exceptionMessage, exceptionValues = [];
  +
  +		// Check for an exception object and print it nicely
  +		if (typeof message === "object" && typeof message.name === "string" && typeof message.message === "string") {
  +			for (var key in message) {
  +				if (message.hasOwnProperty(key)) {
  +					exceptionValues.push(key + ": " + message[key]);
  +				}
  +			}
  +			exceptionMessage = exceptionValues.join("\n") || "";
  +			exceptionValues = exceptionMessage.split("\n");
  +			exceptionMessage = "EXCEPTION: " + exceptionValues.join("\nEXCEPTION: ");
  +			SWFUpload.Console.writeLine(exceptionMessage);
  +		} else {
  +			SWFUpload.Console.writeLine(message);
  +		}
  +	}
  +};
  +
  +SWFUpload.Console = {};
  +SWFUpload.Console.writeLine = function (message) {
  +	var console, documentForm;
  +
  +	try {
  +		console = document.getElementById("SWFUpload_Console");
  +
  +		if (!console) {
  +			documentForm = document.createElement("form");
  +			document.getElementsByTagName("body")[0].appendChild(documentForm);
  +
  +			console = document.createElement("textarea");
  +			console.id = "SWFUpload_Console";
  +			console.style.fontFamily = "monospace";
  +			console.setAttribute("wrap", "off");
  +			console.wrap = "off";
  +			console.style.overflow = "auto";
  +			console.style.width = "700px";
  +			console.style.height = "350px";
  +			console.style.margin = "5px";
  +			documentForm.appendChild(console);
  +		}
  +
  +		console.value += message + "\n";
  +
  +		console.scrollTop = console.scrollHeight - console.clientHeight;
  +	} catch (ex) {
  +		alert("Exception: " + ex.name + " Message: " + ex.message);
  +	}
  +};
  
  
  
  1.2       +92 -92    moniwiki/local/SWFUpload/swfupload.queue.js
  
  Index: swfupload.queue.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/SWFUpload/swfupload.queue.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- swfupload.queue.js	24 Dec 2008 09:31:35 -0000	1.1
  +++ swfupload.queue.js	23 Sep 2009 19:48:22 -0000	1.2
  @@ -1,93 +1,93 @@
  -/*
  -	Queue Plug-in
  -	
  -	Features:
  -		*Adds a cancelQueue() method for cancelling the entire queue.
  -		*All queued files are uploaded when startUpload() is called.
  -		*If false is returned from uploadComplete then the queue upload is stopped.
  -		 If false is not returned (strict comparison) then the queue upload is continued.
  -		*Adds a QueueComplete event that is fired when all the queued files have finished uploading.
  -		 Set the event handler with the queue_complete_handler setting.
  -		
  -	*/
  -
  -var SWFUpload;
  -if (typeof(SWFUpload) === "function") {
  -	SWFUpload.queue = {};
  -	
  -	SWFUpload.prototype.initSettings = (function (oldInitSettings) {
  -		return function () {
  -			if (typeof(oldInitSettings) === "function") {
  -				oldInitSettings.call(this);
  -			}
  -			
  -			this.customSettings.queue_cancelled_flag = false;
  -			this.customSettings.queue_upload_count = 0;
  -			
  -			this.settings.user_upload_complete_handler = this.settings.upload_complete_handler;
  -			this.settings.user_upload_start_handler = this.settings.upload_start_handler;
  -			this.settings.upload_complete_handler = SWFUpload.queue.uploadCompleteHandler;
  -			this.settings.upload_start_handler = SWFUpload.queue.uploadStartHandler;
  -			
  -			this.settings.queue_complete_handler = this.settings.queue_complete_handler || null;
  -		};
  -	})(SWFUpload.prototype.initSettings);
  -
  -	SWFUpload.prototype.startUpload = function (fileID) {
  -		this.customSettings.queue_cancelled_flag = false;
  -		this.callFlash("StartUpload", [fileID]);
  -	};
  -
  -	SWFUpload.prototype.cancelQueue = function () {
  -		this.customSettings.queue_cancelled_flag = true;
  -		this.stopUpload();
  -		
  -		var stats = this.getStats();
  -		while (stats.files_queued > 0) {
  -			this.cancelUpload();
  -			stats = this.getStats();
  -		}
  -	};
  -	
  -	SWFUpload.queue.uploadStartHandler = function (file) {
  -		var returnValue;
  -		if (typeof(this.customSettings.user_upload_start_handler) === "function") {
  -			returnValue = this.customSettings.user_upload_start_handler.call(this, file);
  -		}
  -		
  -		// To prevent upload a real "FALSE" value must be returned, otherwise default to a real "TRUE" value.
  -		returnValue = (returnValue === false) ? false : true;
  -		
  -		this.customSettings.queue_cancelled_flag = !returnValue;
  -
  -		return returnValue;
  -	};
  -	
  -	SWFUpload.queue.uploadCompleteHandler = function (file) {
  -		var user_upload_complete_handler = this.settings.user_upload_complete_handler;
  -		var continueUpload;
  -		
  -		if (file.filestatus === SWFUpload.FILE_STATUS.COMPLETE) {
  -			this.customSettings.queue_upload_count++;
  -		}
  -
  -		if (typeof(user_upload_complete_handler) === "function") {
  -			continueUpload = (user_upload_complete_handler.call(this, file) === false) ? false : true;
  -		} else {
  -			continueUpload = true;
  -		}
  -		
  -		if (continueUpload) {
  -			var stats = this.getStats();
  -			if (stats.files_queued > 0 && this.customSettings.queue_cancelled_flag === false) {
  -				this.startUpload();
  -			} else if (this.customSettings.queue_cancelled_flag === false) {
  -				this.queueEvent("queue_complete_handler", [this.customSettings.queue_upload_count]);
  -				this.customSettings.queue_upload_count = 0;
  -			} else {
  -				this.customSettings.queue_cancelled_flag = false;
  -				this.customSettings.queue_upload_count = 0;
  -			}
  -		}
  -	};
  +/*
  +	Queue Plug-in
  +	
  +	Features:
  +		*Adds a cancelQueue() method for cancelling the entire queue.
  +		*All queued files are uploaded when startUpload() is called.
  +		*If false is returned from uploadComplete then the queue upload is stopped.
  +		 If false is not returned (strict comparison) then the queue upload is continued.
  +		*Adds a QueueComplete event that is fired when all the queued files have finished uploading.
  +		 Set the event handler with the queue_complete_handler setting.
  +		
  +	*/
  +
  +var SWFUpload;
  +if (typeof(SWFUpload) === "function") {
  +	SWFUpload.queue = {};
  +	
  +	SWFUpload.prototype.initSettings = (function (oldInitSettings) {
  +		return function () {
  +			if (typeof(oldInitSettings) === "function") {
  +				oldInitSettings.call(this);
  +			}
  +			
  +			this.customSettings.queue_cancelled_flag = false;
  +			this.customSettings.queue_upload_count = 0;
  +			
  +			this.settings.user_upload_complete_handler = this.settings.upload_complete_handler;
  +			this.settings.user_upload_start_handler = this.settings.upload_start_handler;
  +			this.settings.upload_complete_handler = SWFUpload.queue.uploadCompleteHandler;
  +			this.settings.upload_start_handler = SWFUpload.queue.uploadStartHandler;
  +			
  +			this.settings.queue_complete_handler = this.settings.queue_complete_handler || null;
  +		};
  +	})(SWFUpload.prototype.initSettings);
  +
  +	SWFUpload.prototype.startUpload = function (fileID) {
  +		this.customSettings.queue_cancelled_flag = false;
  +		this.callFlash("StartUpload", [fileID]);
  +	};
  +
  +	SWFUpload.prototype.cancelQueue = function () {
  +		this.customSettings.queue_cancelled_flag = true;
  +		this.stopUpload();
  +		
  +		var stats = this.getStats();
  +		while (stats.files_queued > 0) {
  +			this.cancelUpload();
  +			stats = this.getStats();
  +		}
  +	};
  +	
  +	SWFUpload.queue.uploadStartHandler = function (file) {
  +		var returnValue;
  +		if (typeof(this.customSettings.user_upload_start_handler) === "function") {
  +			returnValue = this.customSettings.user_upload_start_handler.call(this, file);
  +		}
  +		
  +		// To prevent upload a real "FALSE" value must be returned, otherwise default to a real "TRUE" value.
  +		returnValue = (returnValue === false) ? false : true;
  +		
  +		this.customSettings.queue_cancelled_flag = !returnValue;
  +
  +		return returnValue;
  +	};
  +	
  +	SWFUpload.queue.uploadCompleteHandler = function (file) {
  +		var user_upload_complete_handler = this.settings.user_upload_complete_handler;
  +		var continueUpload;
  +		
  +		if (file.filestatus === SWFUpload.FILE_STATUS.COMPLETE) {
  +			this.customSettings.queue_upload_count++;
  +		}
  +
  +		if (typeof(user_upload_complete_handler) === "function") {
  +			continueUpload = (user_upload_complete_handler.call(this, file) === false) ? false : true;
  +		} else {
  +			continueUpload = true;
  +		}
  +		
  +		if (continueUpload) {
  +			var stats = this.getStats();
  +			if (stats.files_queued > 0 && this.customSettings.queue_cancelled_flag === false) {
  +				this.startUpload();
  +			} else if (this.customSettings.queue_cancelled_flag === false) {
  +				this.queueEvent("queue_complete_handler", [this.customSettings.queue_upload_count]);
  +				this.customSettings.queue_upload_count = 0;
  +			} else {
  +				this.customSettings.queue_cancelled_flag = false;
  +				this.customSettings.queue_upload_count = 0;
  +			}
  +		}
  +	};
   }
  \ No newline at end of file
  
  
  
  1.2       +104 -104  moniwiki/local/SWFUpload/swfupload.swfobject.js
  
  Index: swfupload.swfobject.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/SWFUpload/swfupload.swfobject.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- swfupload.swfobject.js	24 Dec 2008 09:31:35 -0000	1.1
  +++ swfupload.swfobject.js	23 Sep 2009 19:48:22 -0000	1.2
  @@ -1,104 +1,104 @@
  -/*
  -	SWFUpload.SWFObject Plugin
  -
  -	Summary:
  -		This plugin uses SWFObject to embed SWFUpload dynamically in the page.  SWFObject provides accurate Flash Player detection and DOM Ready loading.
  -		This plugin replaces the Graceful Degradation plugin.
  -
  -	Features:
  -		* swfupload_load_failed_hander event
  -		* swfupload_pre_load_handler event
  -		* minimum_flash_version setting (default: "9.0.28")
  -		* SWFUpload.onload event for early loading
  -
  -	Usage:
  -		Provide handlers and settings as needed.  When using the SWFUpload.SWFObject plugin you should initialize SWFUploading
  -		in SWFUpload.onload rather than in window.onload.  When initialized this way SWFUpload can load earlier preventing the UI flicker
  -		that was seen using the Graceful Degradation plugin.
  -
  -		<script type="text/javascript">
  -			var swfu;
  -			SWFUpload.onload = function () {
  -				swfu = new SWFUpload({
  -					minimum_flash_version: "9.0.28",
  -					swfupload_pre_load_handler: swfuploadPreLoad,
  -					swfupload_load_failed_handler: swfuploadLoadFailed
  -				});
  -			};
  -		</script>
  -		
  -	Notes:
  -		You must provide set minimum_flash_version setting to "8" if you are using SWFUpload for Flash Player 8.
  -		The swfuploadLoadFailed event is only fired if the minimum version of Flash Player is not met.  Other issues such as missing SWF files, browser bugs
  -		 or corrupt Flash Player installations will not trigger this event.
  -		The swfuploadPreLoad event is fired as soon as the minimum version of Flash Player is found.  It does not wait for SWFUpload to load and can
  -		 be used to prepare the SWFUploadUI and hide alternate content.
  -		swfobject's onDomReady event is cross-browser safe but will default to the window.onload event when DOMReady is not supported by the browser.
  -		 Early DOM Loading is supported in major modern browsers but cannot be guaranteed for every browser ever made.
  -*/
  -
  -
  -
  -var SWFUpload;
  -if (typeof(SWFUpload) === "function") {
  -	SWFUpload.onload = function () {};
  -	
  -	swfobject.addDomLoadEvent(function () {
  -		if (typeof(SWFUpload.onload) === "function") {
  -			SWFUpload.onload.call(window);
  -		}
  -	});
  -	
  -	SWFUpload.prototype.initSettings = (function (oldInitSettings) {
  -		return function () {
  -			if (typeof(oldInitSettings) === "function") {
  -				oldInitSettings.call(this);
  -			}
  -
  -			this.ensureDefault = function (settingName, defaultValue) {
  -				this.settings[settingName] = (this.settings[settingName] == undefined) ? defaultValue : this.settings[settingName];
  -			};
  -
  -			this.ensureDefault("minimum_flash_version", "9.0.28");
  -			this.ensureDefault("swfupload_pre_load_handler", null);
  -			this.ensureDefault("swfupload_load_failed_handler", null);
  -
  -			delete this.ensureDefault;
  -
  -		};
  -	})(SWFUpload.prototype.initSettings);
  -
  -
  -	SWFUpload.prototype.loadFlash = function (oldLoadFlash) {
  -		return function () {
  -			var hasFlash = swfobject.hasFlashPlayerVersion(this.settings.minimum_flash_version);
  -			
  -			if (hasFlash) {
  -				this.queueEvent("swfupload_pre_load_handler");
  -				if (typeof(oldLoadFlash) === "function") {
  -					oldLoadFlash.call(this);
  -				}
  -			} else {
  -				this.queueEvent("swfupload_load_failed_handler");
  -			}
  -		};
  -		
  -	}(SWFUpload.prototype.loadFlash);
  -			
  -	SWFUpload.prototype.displayDebugInfo = function (oldDisplayDebugInfo) {
  -		return function () {
  -			if (typeof(oldDisplayDebugInfo) === "function") {
  -				oldDisplayDebugInfo.call(this);
  -			}
  -			
  -			this.debug(
  -				[
  -					"SWFUpload.SWFObject Plugin settings:", "\n",
  -					"\t", "minimum_flash_version:                      ", this.settings.minimum_flash_version, "\n",
  -					"\t", "swfupload_pre_load_handler assigned:     ", (typeof(this.settings.swfupload_pre_load_handler) === "function").toString(), "\n",
  -					"\t", "swfupload_load_failed_handler assigned:     ", (typeof(this.settings.swfupload_load_failed_handler) === "function").toString(), "\n",
  -				].join("")
  -			);
  -		};	
  -	}(SWFUpload.prototype.displayDebugInfo);
  -}
  +/*
  +	SWFUpload.SWFObject Plugin
  +
  +	Summary:
  +		This plugin uses SWFObject to embed SWFUpload dynamically in the page.  SWFObject provides accurate Flash Player detection and DOM Ready loading.
  +		This plugin replaces the Graceful Degradation plugin.
  +
  +	Features:
  +		* swfupload_load_failed_hander event
  +		* swfupload_pre_load_handler event
  +		* minimum_flash_version setting (default: "9.0.28")
  +		* SWFUpload.onload event for early loading
  +
  +	Usage:
  +		Provide handlers and settings as needed.  When using the SWFUpload.SWFObject plugin you should initialize SWFUploading
  +		in SWFUpload.onload rather than in window.onload.  When initialized this way SWFUpload can load earlier preventing the UI flicker
  +		that was seen using the Graceful Degradation plugin.
  +
  +		<script type="text/javascript">
  +			var swfu;
  +			SWFUpload.onload = function () {
  +				swfu = new SWFUpload({
  +					minimum_flash_version: "9.0.28",
  +					swfupload_pre_load_handler: swfuploadPreLoad,
  +					swfupload_load_failed_handler: swfuploadLoadFailed
  +				});
  +			};
  +		</script>
  +		
  +	Notes:
  +		You must provide set minimum_flash_version setting to "8" if you are using SWFUpload for Flash Player 8.
  +		The swfuploadLoadFailed event is only fired if the minimum version of Flash Player is not met.  Other issues such as missing SWF files, browser bugs
  +		 or corrupt Flash Player installations will not trigger this event.
  +		The swfuploadPreLoad event is fired as soon as the minimum version of Flash Player is found.  It does not wait for SWFUpload to load and can
  +		 be used to prepare the SWFUploadUI and hide alternate content.
  +		swfobject's onDomReady event is cross-browser safe but will default to the window.onload event when DOMReady is not supported by the browser.
  +		 Early DOM Loading is supported in major modern browsers but cannot be guaranteed for every browser ever made.
  +*/
  +
  +
  +
  +var SWFUpload;
  +if (typeof(SWFUpload) === "function") {
  +	SWFUpload.onload = function () {};
  +	
  +	swfobject.addDomLoadEvent(function () {
  +		if (typeof(SWFUpload.onload) === "function") {
  +			SWFUpload.onload.call(window);
  +		}
  +	});
  +	
  +	SWFUpload.prototype.initSettings = (function (oldInitSettings) {
  +		return function () {
  +			if (typeof(oldInitSettings) === "function") {
  +				oldInitSettings.call(this);
  +			}
  +
  +			this.ensureDefault = function (settingName, defaultValue) {
  +				this.settings[settingName] = (this.settings[settingName] == undefined) ? defaultValue : this.settings[settingName];
  +			};
  +
  +			this.ensureDefault("minimum_flash_version", "9.0.28");
  +			this.ensureDefault("swfupload_pre_load_handler", null);
  +			this.ensureDefault("swfupload_load_failed_handler", null);
  +
  +			delete this.ensureDefault;
  +
  +		};
  +	})(SWFUpload.prototype.initSettings);
  +
  +
  +	SWFUpload.prototype.loadFlash = function (oldLoadFlash) {
  +		return function () {
  +			var hasFlash = swfobject.hasFlashPlayerVersion(this.settings.minimum_flash_version);
  +			
  +			if (hasFlash) {
  +				this.queueEvent("swfupload_pre_load_handler");
  +				if (typeof(oldLoadFlash) === "function") {
  +					oldLoadFlash.call(this);
  +				}
  +			} else {
  +				this.queueEvent("swfupload_load_failed_handler");
  +			}
  +		};
  +		
  +	}(SWFUpload.prototype.loadFlash);
  +			
  +	SWFUpload.prototype.displayDebugInfo = function (oldDisplayDebugInfo) {
  +		return function () {
  +			if (typeof(oldDisplayDebugInfo) === "function") {
  +				oldDisplayDebugInfo.call(this);
  +			}
  +			
  +			this.debug(
  +				[
  +					"SWFUpload.SWFObject Plugin settings:", "\n",
  +					"\t", "minimum_flash_version:                      ", this.settings.minimum_flash_version, "\n",
  +					"\t", "swfupload_pre_load_handler assigned:     ", (typeof(this.settings.swfupload_pre_load_handler) === "function").toString(), "\n",
  +					"\t", "swfupload_load_failed_handler assigned:     ", (typeof(this.settings.swfupload_load_failed_handler) === "function").toString(), "\n",
  +				].join("")
  +			);
  +		};	
  +	}(SWFUpload.prototype.displayDebugInfo);
  +}
  
  
  


wkpark      2009/09/24 16:29:18

  Modified:    lib      difflib.php
  Log:
  disable assert(). use xor to swap some variables. adopt recent fix of the difflib.php found at PEAR Text_Diff(LGPL)
  
  Revision  Changes    Path
  1.14      +64 -55    moniwiki/lib/difflib.php
  
  Index: difflib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/difflib.php,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- difflib.php	7 Aug 2009 14:13:58 -0000	1.13
  +++ difflib.php	24 Sep 2009 07:29:18 -0000	1.14
  @@ -9,12 +9,10 @@
   // Copyright (C) 2000, 2001 Geoffrey T. Dairiki <dairiki@dairiki.org>
   // You may copy this code freely under the conditions of the GPL.
   //
  -// FIXME: possibly remove assert()'s for production version?
  -//
  -// $Id: difflib.php,v 1.13 2009/08/07 14:13:58 wkpark Exp $
  +// $Id: difflib.php,v 1.14 2009/09/24 07:29:18 wkpark Exp $
   // original Id: difflib.php,v 1.5 2002/01/21 06:55:47 dairiki Exp
  -// PHP3 does not have assert()
  -define('USE_ASSERTS', function_exists('assert'));
  +//assert_options(ASSERT_ACTIVE, 0);
  +define('USE_ASSERTS', false);
   
   class _DiffOp {
       var $type;
  @@ -44,8 +42,9 @@
           $this->_final = $_final;
       }
   
  -    function reverse() {
  -        return new _DiffOp_Copy($this->_final, $this->orig);
  +    function &reverse() {
  +        $rev = &new _DiffOp_Copy($this->_final, $this->orig);
  +        return $rev;
       }
   }
   
  @@ -57,8 +56,9 @@
           $this->_final = false;
       }
   
  -    function reverse() {
  -        return new _DiffOp_Add($this->orig);
  +    function &reverse() {
  +        $rev = &new _DiffOp_Add($this->orig);
  +        return $rev;
       }
   }
   
  @@ -70,8 +70,9 @@
           $this->orig = false;
       }
   
  -    function reverse() {
  -        return new _DiffOp_Delete($this->_final);
  +    function &reverse() {
  +        $rev = &new _DiffOp_Delete($this->_final);
  +        return $rev;
       }
   }
   
  @@ -83,8 +84,9 @@
           $this->_final = $_final;
       }
   
  -    function reverse() {
  -        return new _DiffOp_Change($this->_final, $this->orig);
  +    function &reverse() {
  +        $rev = &new _DiffOp_Change($this->_final, $this->orig);
  +        return $rev;
       }
   }
           
  @@ -124,14 +126,14 @@
            
           // Skip leading common lines.
           for ($skip = 0; $skip < $n_from && $skip < $n_to; $skip++) {
  -            if ($from_lines[$skip] != $to_lines[$skip])
  +            if ($from_lines[$skip] !== $to_lines[$skip])
                   break;
               $this->xchanged[$skip] = $this->ychanged[$skip] = false;
           }
           // Skip trailing common lines.
           $xi = $n_from; $yi = $n_to;
           for ($endskip = 0; --$xi > $skip && --$yi > $skip; $endskip++) {
  -            if ($from_lines[$xi] != $to_lines[$yi])
  +            if ($from_lines[$xi] !== $to_lines[$yi])
                   break;
               $this->xchanged[$xi] = $this->ychanged[$yi] = false;
           }
  @@ -166,8 +168,8 @@
           $edits = array();
           $xi = $yi = 0;
           while ($xi < $n_from || $yi < $n_to) {
  -            USE_ASSERTS && assert($yi < $n_to || $this->xchanged[$xi]);
  -            USE_ASSERTS && assert($xi < $n_from || $this->ychanged[$yi]);
  +            //USE_ASSERTS && assert($yi < $n_to || $this->xchanged[$xi]);
  +            //USE_ASSERTS && assert($xi < $n_from || $this->ychanged[$yi]);
   
               // Skip matching "snake".
               $copy = array();
  @@ -177,7 +179,7 @@
                   ++$yi;
               }
               if ($copy)
  -                $edits[] = new _DiffOp_Copy($copy);
  +                $edits[] = &new _DiffOp_Copy($copy);
   
               // Find deletes & adds.
               $delete = array();
  @@ -189,11 +191,11 @@
                   $add[] = $to_lines[$yi++];
               
               if ($delete && $add)
  -                $edits[] = new _DiffOp_Change($delete, $add);
  +                $edits[] = &new _DiffOp_Change($delete, $add);
               elseif ($delete)
  -                $edits[] = new _DiffOp_Delete($delete);
  +                $edits[] = &new _DiffOp_Delete($delete);
               elseif ($add)
  -                $edits[] = new _DiffOp_Add($add);
  +                $edits[] = &new _DiffOp_Add($add);
           }
           return $edits;
       }
  @@ -217,13 +219,16 @@
        */
       function _diag ($xoff, $xlim, $yoff, $ylim, $nchunks) {
   	$flip = false;
  -	
  +
   	if ($xlim - $xoff > $ylim - $yoff) {
   	    // Things seems faster (I'm not sure I understand why)
               // when the shortest sequence in X.
               $flip = true;
  -	    list ($xoff, $xlim, $yoff, $ylim)
  -		= array( $yoff, $ylim, $xoff, $xlim);
  +	    #list ($xoff, $xlim, $yoff, $ylim)
  +		#= array( $yoff, $ylim, $xoff, $xlim);
  +            # XOR swap is slightly faster and less memory consumed.
  +            $xoff ^= $yoff ^= $xoff ^= $yoff;
  +            $xlim ^= $ylim ^= $xlim ^= $ylim;
           }
   
   	if ($flip)
  @@ -255,13 +260,13 @@
   		while (list ($junk, $y) = each($matches))
   		    if (empty($this->in_seq[$y])) {
   			$k = $this->_lcs_pos($y);
  -			USE_ASSERTS && assert($k > 0);
  +			//USE_ASSERTS && assert($k > 0);
   			$ymids[$k] = $ymids[$k-1];
   			break;
                       }
   		while (list ($junk, $y) = each($matches)) {
   		    if ($y > $this->seq[$k-1]) {
  -			USE_ASSERTS && assert($y < $this->seq[$k]);
  +			//USE_ASSERTS && assert($y < $this->seq[$k]);
   			// Optimization: this is a common case:
   			//  next match is just replacing previous match.
   			$this->in_seq[$this->seq[$k]] = false;
  @@ -270,7 +275,7 @@
                       }
   		    else if (empty($this->in_seq[$y])) {
   			$k = $this->_lcs_pos($y);
  -			USE_ASSERTS && assert($k > 0);
  +			//USE_ASSERTS && assert($k > 0);
   			$ymids[$k] = $ymids[$k-1];
                       }
                   }
  @@ -406,7 +411,7 @@
   		$j++;
   	    
   	    while ($i < $len && ! $changed[$i]) {
  -		USE_ASSERTS && assert('$j < $other_len && ! $other_changed[$j]');
  +		//USE_ASSERTS && assert('$j < $other_len && ! $other_changed[$j]');
   		$i++; $j++;
   		while ($j < $other_len && $other_changed[$j])
   		    $j++;
  @@ -438,10 +443,10 @@
   		    $changed[--$i] = false;
   		    while ($start > 0 && $changed[$start - 1])
   			$start--;
  -		    USE_ASSERTS && assert('$j > 0');
  +		    //USE_ASSERTS && assert('$j > 0');
   		    while ($other_changed[--$j])
   			continue;
  -		    USE_ASSERTS && assert('$j >= 0 && !$other_changed[$j]');
  +		    //USE_ASSERTS && assert('$j >= 0 && !$other_changed[$j]');
                   }
   
   		/*
  @@ -464,7 +469,7 @@
   		    while ($i < $len && $changed[$i])
   			$i++;
   
  -		    USE_ASSERTS && assert('$j < $other_len && ! $other_changed[$j]');
  +		    //USE_ASSERTS && assert('$j < $other_len && ! $other_changed[$j]');
   		    $j++;
   		    if ($j < $other_len && $other_changed[$j]) {
   			$corresponding = $i;
  @@ -481,10 +486,10 @@
   	    while ($corresponding < $i) {
   		$changed[--$start] = 1;
   		$changed[--$i] = 0;
  -		USE_ASSERTS && assert('$j > 0');
  +		//USE_ASSERTS && assert('$j > 0');
   		while ($other_changed[--$j])
   		    continue;
  -		USE_ASSERTS && assert('$j >= 0 && !$other_changed[$j]');
  +		//USE_ASSERTS && assert('$j >= 0 && !$other_changed[$j]');
               }
           }
       }
  @@ -538,7 +543,7 @@
        */
       function isEmpty () {
           foreach ($this->edits as $edit) {
  -            if ($edit->type != 'copy')
  +            if (!is_a($edit, '_DiffOp_Copy'))
                   return false;
           }
           return true;
  @@ -554,7 +559,7 @@
       function lcs () {
   	$lcs = 0;
           foreach ($this->edits as $edit) {
  -            if ($edit->type == 'copy')
  +            if (is_a($edit, '_DiffOp_Copy'))
                   $lcs += sizeof($edit->orig);
           }
   	return $lcs;
  @@ -614,11 +619,11 @@
               trigger_error("Reversed final doesn't match", E_USER_ERROR);
   
   
  -        $prevtype = 'none';
  +        $prevtype = null;
           foreach ($this->edits as $edit) {
  -            if ( $prevtype == $edit->type )
  +            if ( $prevtype == get_class($edit) )
                   trigger_error("Edit sequence is non-optimal", E_USER_ERROR);
  -            $prevtype = $edit->type;
  +            $prevtype = get_class($edit);
           }
   
           $lcs = $this->lcs();
  @@ -728,8 +733,13 @@
   
           $this->_start_diff();
   
  -        foreach ($diff->edits as $edit) {
  -            if ($edit->type == 'copy') {
  +        if (is_object($diff))
  +            $edits = &$diff->edits;
  +        else
  +            $edits = &$diff;
  +
  +        foreach ($edits as $edit) {
  +            if (is_a($edit, '_DiffOp_Copy')) {
                   if (is_array($block)) {
                       if (sizeof($edit->orig) <= $nlead + $ntrail) {
                           $block[] = $edit;
  @@ -737,7 +747,7 @@
                       else{
                           if ($ntrail) {
                               $context = array_slice($edit->orig, 0, $ntrail);
  -                            $block[] = new _DiffOp_Copy($context);
  +                            $block[] = &new _DiffOp_Copy($context);
                           }
                           $this->_block($x0, $ntrail + $xi - $x0,
                                         $y0, $ntrail + $yi - $y0,
  @@ -754,7 +764,7 @@
                       $y0 = $yi - sizeof($context);
                       $block = array();
                       if ($context)
  -                        $block[] = new _DiffOp_Copy($context);
  +                        $block[] = &new _DiffOp_Copy($context);
                   }
                   $block[] = $edit;
               }
  @@ -776,13 +786,13 @@
       function _block($xbeg, $xlen, $ybeg, $ylen, &$edits) {
           $this->_start_block($this->_block_header($xbeg, $xlen, $ybeg, $ylen));
           foreach ($edits as $edit) {
  -            if ($edit->type == 'copy')
  +            if (is_a($edit, '_DiffOp_Copy'))
                   $this->_context($edit->orig);
  -            elseif ($edit->type == 'add')
  +            elseif (is_a($edit, '_DiffOp_Add'))
                   $this->_added($edit->_final);
  -            elseif ($edit->type == 'delete')
  +            elseif (is_a($edit, '_DiffOp_Delete'))
                   $this->_deleted($edit->orig);
  -            elseif ($edit->type == 'change')
  +            elseif (is_a($edit, '_DiffOp_Change'))
                   $this->_changed($edit->orig, $edit->_final);
               else
                   trigger_error("Unknown edit type", E_USER_ERROR);
  @@ -947,7 +957,7 @@
           $orig = new _HWLDF_WordAccumulator;
           
           foreach ($this->edits as $edit) {
  -            if ($edit->type == 'copy')
  +            if (is_a($edit, '_DiffOp_Copy'))
                   $orig->addWords($edit->orig);
               elseif ($edit->orig)
                   $orig->addWords($edit->orig, 'del');
  @@ -959,7 +969,7 @@
           $_final = new _HWLDF_WordAccumulator;
           
           foreach ($this->edits as $edit) {
  -            if ($edit->type == 'copy')
  +            if (is_a($edit, '_DiffOp_Copy'))
                   $_final->addWords($edit->_final);
               elseif ($edit->_final)
                   $_final->addWords($edit->_final, 'ins');
  @@ -973,10 +983,9 @@
               $text = new _HWLDF_WordAccumulator($tags);
   
           foreach ($this->edits as $edit) {
  -            if ($edit->type == 'copy')
  +            if (is_a($edit, '_DiffOp_Copy'))
                   $text->addWords($edit->orig);
               else {
  -                #print "$edit->type:";
                   if ($edit->orig)
                       $text->addWords($edit->orig, 'del');
               	if ($edit->_final)
  @@ -1076,7 +1085,7 @@
   /**
    * a Plain Diff formatter.
    */
  -class PlainDiffFormatter
  +class PlainDiffFormatter 
   {
       var $trailing_cr = "\n";
   
  @@ -1105,13 +1114,13 @@
   
       function format($diff) {
           foreach ($diff->edits as $edit) {
  -            if ($edit->type == 'copy')
  +            if (is_a($edit, '_DiffOp_Copy'))
                   $this->_context($edit->orig);
  -            elseif ($edit->type == 'add')
  +            elseif (is_a($edit, '_DiffOp_Add'))
                   $this->_added($edit->_final);
  -            elseif ($edit->type == 'delete')
  +            elseif (is_a($edit, '_DiffOp_Delete'))
                   $this->_deleted($edit->orig);
  -            elseif ($edit->type == 'change')
  +            elseif (is_a($edit, '_DiffOp_Change'))
                   $this->_changed($edit->orig, $edit->_final);
               else
                   trigger_error("Unknown edit type", E_USER_ERROR);
  
  
  


wkpark      2009/09/24 17:19:28

  Modified:    lib/Gettext PO.php
  Log:
  fix po parser
  
  Revision  Changes    Path
  1.4       +5 -5      moniwiki/lib/Gettext/PO.php
  
  Index: PO.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/Gettext/PO.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- PO.php	11 May 2009 11:20:31 -0000	1.3
  +++ PO.php	24 Sep 2009 08:19:28 -0000	1.4
  @@ -11,7 +11,7 @@
    * @author     Michael Wallner <mike@php.net>
    * @copyright  2004-2005 Michael Wallner
    * @license    BSD, revised
  - * @version    CVS: $Id: PO.php,v 1.3 2009/05/11 11:20:31 wkpark Exp $
  + * @version    CVS: $Id: PO.php,v 1.4 2009/09/24 08:19:28 wkpark Exp $
    * @link       http://pear.php.net/package/File_Gettext
    */
   
  @@ -26,7 +26,7 @@
    * GNU PO file reader and writer.
    * 
    * @author      Michael Wallner <mike@php.net>
  - * @version     $Revision: 1.3 $
  + * @version     $Revision: 1.4 $
    * @access      public
    */
   class File_Gettext_PO extends File_Gettext
  @@ -67,11 +67,11 @@
           // match all msgid/msgstr entries
           $matched = preg_match_all(
               '/(msgid\s+("([^"]|\\\\")*?"\s*)+)\s+' .
  -            '(msgstr\s+("([^"]|\\\\")*?"\s*)+)\s*(?=$|#)/',
  +            '(msgstr\s+(\s*"([^"]|\\\\")*?"\s*)+)\s*(?=$|#)/m',
               $contents, $matches
           );
           unset($contents);
  -        
  +
           if (!$matched) {
               return parent::raiseError('No msgid/msgstr entries found');
           }
  @@ -114,7 +114,7 @@
           // lock PO file exclusively
           if (!@flock($fh, LOCK_EX)) {
               @fclose($fh);
  -            return parent::raiseError($php_errmsg . ' ' . $file);
  +            return parent::raiseError($php_errormsg . ' ' . $file);
           }
           
           // write meta info
  
  
  


wkpark      2009/09/25 03:06:28

  Modified:    .        wiki.php
  Log:
  $imgs_real_dir config var added
  
  Revision  Changes    Path
  1.491     +7 -7      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.490
  retrieving revision 1.491
  diff -u -r1.490 -r1.491
  --- wiki.php	24 Sep 2009 08:32:41 -0000	1.490
  +++ wiki.php	24 Sep 2009 18:06:28 -0000	1.491
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.490 2009/09/24 08:32:41 wkpark Exp $
  +// $Id: wiki.php,v 1.491 2009/09/24 18:06:28 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.490 $',1,-1);
  +$_revision = substr('$Revision: 1.491 $',1,-1);
   $_release = '1.1.4-RC3';
   
   #ob_start("ob_gzhandler");
  @@ -714,8 +714,8 @@
       $doc_root = isset($this->doc_root) ? $this->doc_root : dirname(dirname(__FILE__));
       $doc_root = preg_replace('@/$@', '', $doc_root);
   
  -    $imgs_realdir= $doc_root.'/'.$this->imgs_dir;
  -    if (file_exists($imgs_realdir.'/interwiki/'.'moniwiki-16.png'))
  +    $imgs_real_dir= !empty($this->imgs_real_dir) ? $this->imgs_real_dir : $doc_root.'/'.$this->imgs_dir;
  +    if (file_exists($imgs_real_dir.'/interwiki/'.'moniwiki-16.png'))
         $this->imgs_dir_interwiki=$this->imgs_dir.'/interwiki/';
   
       if (empty($this->icon)) {
  @@ -724,12 +724,12 @@
   
       // for lower version compatibility
       $ext='png';
  -    if (is_dir($imgs_realdir.'/'.$iconset)) $iconset.='/';
  +    if (is_dir($imgs_real_dir.'/'.$iconset)) $iconset.='/';
       else $iconset.='-';
   
  -    if (!file_exists($imgs_realdir.'/'.$iconset.'home.png')) $ext='gif';
  +    if (!file_exists($imgs_real_dir.'/'.$iconset.'home.png')) $ext='gif';
   
  -    if (file_exists($imgs_realdir.'/'.$iconset.'http.png'))
  +    if (file_exists($imgs_real_dir.'/'.$iconset.'http.png'))
         $this->imgs_dir_url=$this->imgs_dir.'/'.$iconset;
   
       $this->icon['upper']="<img src='$imgdir/${iconset}upper.$ext' alt='U' style='vertical-align:middle;border:0px' />";
  
  
  


wkpark      2009/09/26 04:03:04

  Modified:    .        wiki.php
  Log:
  use echo
  isset(),empty() fixes
  
  Revision  Changes    Path
  1.492     +119 -116  moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.491
  retrieving revision 1.492
  diff -u -r1.491 -r1.492
  --- wiki.php	24 Sep 2009 18:06:28 -0000	1.491
  +++ wiki.php	25 Sep 2009 19:03:03 -0000	1.492
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.491 2009/09/24 18:06:28 wkpark Exp $
  +// $Id: wiki.php,v 1.492 2009/09/25 19:03:03 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.491 $',1,-1);
  +$_revision = substr('$Revision: 1.492 $',1,-1);
   $_release = '1.1.4-RC3';
   
   #ob_start("ob_gzhandler");
  @@ -1078,8 +1078,8 @@
           }
           $last=$l.$last;
         }
  -      #print $a;
  -      #print sizeof($lines);
  +      #echo $a;
  +      #echo sizeof($lines);
         #print_r($lines);
         fclose($fp);
         break;   
  @@ -1221,7 +1221,7 @@
           if ($file == 'blogchanges') {
             $handle2= opendir("$this->cache_dir/$file");
             while ($fcache= readdir($handle2)) {
  -            #print $keyname.';'.$fcache."\n";
  +            #echo $keyname.';'.$fcache."\n";
               if (preg_match("/\d+_2e$keyname$/",$fcache))
                 unlink("$this->cache_dir/$file/$fcache");
             }
  @@ -2223,14 +2223,14 @@
     }
   
     function write($raw) {
  -    print $raw;
  +    echo $raw;
     }
   
     function link_repl($url,$attr='',$opts=array()) {
       $nm = 0;
       $force = 0;
       if (is_array($url)) $url=$url[1];
  -    #if ($url[0]=='<') { print $url;return $url;}
  +    #if ($url[0]=='<') { echo $url;return $url;}
       $url=str_replace('\"','"',$url); // XXX
       $bra = '';
       $ket = '';
  @@ -2616,7 +2616,7 @@
         } else $word=$text;
       } else {
         $word=$text=$page_text ? $page_text:$word;
  -      #print $text;
  +      #echo $text;
         $word=htmlspecialchars($word);
         $word=str_replace('&amp;#','&#',$word); # hack
       }
  @@ -2954,7 +2954,7 @@
           call_user_func('do_'.$plugin,$this,$options);
           return;
         } else if (function_exists('macro_'.$plugin)) {
  -        print call_user_func_array('macro_'.$plugin,array(&$this,'',$options));
  +        echo call_user_func_array('macro_'.$plugin,array(&$this,'',$options));
           return;
         }
         return ajax_invalid($this,array('title'=>_("Invalid ajax action.")));
  @@ -3333,10 +3333,10 @@
           if (in_array($type,array('macro','processor'))) {
             switch($type) {
               case 'macro':
  -              print $this->macro_repl($name,$val,$options);
  +              echo $this->macro_repl($name,$val,$options);
                 break;
               case 'processor':
  -              print $this->processor_repl($name,$val,$options);
  +              echo $this->processor_repl($name,$val,$options);
                 break;
             }
           }
  @@ -3358,7 +3358,7 @@
   
         if ($this->wikimarkup and $pi['raw']) {
           $pi_html=str_replace("\n","<br />\n",$pi['raw']);
  -        print "<span class='wikiMarkup'><!-- wiki:\n$pi[raw]\n-->$pi_html</span>";
  +        echo "<span class='wikiMarkup'><!-- wiki:\n$pi[raw]\n-->$pi_html</span>";
         }
         $this->set_wordrule($pi);
         $fts=array();
  @@ -3390,8 +3390,8 @@
           }
   	$this->postambles();
   
  -        print $this->get_javascripts();
  -        print $text;
  +        echo $this->get_javascripts();
  +        echo $text;
   
           return;
         }
  @@ -3414,7 +3414,7 @@
         }
         $this->set_wordrule($pi);
         if (!empty($this->wikimarkup) and !empty($pi['raw']))
  -        print "<span class='wikiMarkup'><!-- wiki:\n$pi[raw]\n--></span>";
  +        echo "<span class='wikiMarkup'><!-- wiki:\n$pi[raw]\n--></span>";
   
         if (!empty($this->use_rating) and empty($this->wikimarkup) and empty($pi['#norating'])) {
           $this->pi=$pi;
  @@ -3422,7 +3422,7 @@
           if (isset($pi['#rating'])) $rval=$pi['#rating'];
           else $rval='0';
   
  -        print '<div class="wikiRating">'.$this->macro_repl('Rating',$rval,array('mid'=>'page'))."</div>\n";
  +        echo '<div class="wikiRating">'.$this->macro_repl('Rating',$rval,array('mid'=>'page'))."</div>\n";
           $this->mid=$old;
         }
   
  @@ -3449,8 +3449,8 @@
               $text=$this->postfilter_repl($ft,$text,$options);
           }
   	$this->postambles();
  -        print $this->get_javascripts();
  -        print $text;
  +        echo $this->get_javascripts();
  +        echo $text;
   
           if (!empty($DBInfo->use_tagging) and isset($pi['#keywords'])) {
             $tmp="----\n";
  @@ -3689,7 +3689,7 @@
         if ($in_pre != -1 &&
           preg_match("/^(((>\s)*>(?!>))|(\s*>*))/",$line,$match)) {
         #if (preg_match("/^(\s*)/",$line,$match)) {
  -         #print "{".$match[1].'}';
  +         #echo "{".$match[1].'}';
            $open="";
            $close="";
            $indtype="dd";
  @@ -4055,20 +4055,20 @@
       # postamble
       $this->postambles();
   
  -    print $this->get_javascripts();
  -    print $text;
  +    echo $this->get_javascripts();
  +    echo $text;
       if ($this->sisters and !$options['nosisters']) {
         $sister_save=$this->sister_on;
         $this->sister_on=0;
         $sisters=join("\n",$this->sisters);
         $sisters=preg_replace("/(".$wordrule.")/e","\$this->link_repl('\\1')",$sisters);
         $msg=_("Sister Sites Index");
  -      print "<div id='wikiSister'>\n<div class='separator'><tt class='foot'>----</tt></div>\n$msg<br />\n<ul>$sisters</ul></div>\n";
  +      echo "<div id='wikiSister'>\n<div class='separator'><tt class='foot'>----</tt></div>\n$msg<br />\n<ul>$sisters</ul></div>\n";
         $this->sister_on=$sister_save;
       }
   
       if ($this->foots)
  -      print $this->macro_repl('FootNote','',$options);
  +      echo $this->macro_repl('FootNote','',$options);
   
       if (!empty($this->update_pagelinks) and !empty($options['pagelinks'])) $this->store_pagelinks();
     }
  @@ -4539,8 +4539,8 @@
   
       if ($options['action_mode']=='ajax') return;
   
  -    print "<!-- wikiBody --></div>\n";
  -    print $DBInfo->hr;
  +    echo "<!-- wikiBody --></div>\n";
  +    echo $DBInfo->hr;
       if ($args['editable'] and !$DBInfo->security->writable($options))
         $args['editable']=-1;
   
  @@ -4597,14 +4597,14 @@
         $themeurl=$this->themeurl;
         include($this->themedir."/footer.php");
       } else {
  -      print "<div id='wikiFooter'>";
  -      print $menu;
  -      if (!$this->css_friendly) print $banner;
  -      else print "<div id='wikiBanner'>$banner</div>\n";
  -      print "\n</div>\n";
  +      echo "<div id='wikiFooter'>";
  +      echo $menu;
  +      if (!$this->css_friendly) echo $banner;
  +      else echo "<div id='wikiBanner'>$banner</div>\n";
  +      echo "\n</div>\n";
       }
       if (empty($this->_newtheme) or $this->_newtheme != 2)
  -      print "</body>\n</html>\n";
  +      echo "</body>\n</html>\n";
       #include "prof_results.php";
     }
   
  @@ -4621,30 +4621,32 @@
       # find upper page
       $pos=0;
       preg_match('/(\:|\/)/',$name,$sep); # NameSpace/SubPage or NameSpace:SubNameSpacePage
  -    if ($sep[1]) $pos=strrpos($name,$sep[1]);
  +    if (isset($sep[1])) $pos=strrpos($name,$sep[1]);
       $mypgname=$this->page->name;
       if ($pos > 0) {
         $upper=substr($name,0,$pos);
         $upper_icon=$this->link_tag($upper,'',$this->icon['upper'])." ";
  -    } else if ($this->group) {
  +    } else if (!empty($this->group)) {
         $group=$this->group;
         $mypgname=substr($this->page->name,strlen($group));
         $upper=_urlencode($mypgname);
         $upper_icon=$this->link_tag($upper,'',$this->icon['main'])." ";
       }
   
  -    $title=htmlspecialchars($this->pi['#title']);
  +    $title = '';
  +    if (isset($this->pi['#title']))
  +      $title=htmlspecialchars($this->pi['#title']);
       if (!empty($msgtitle)) {
         $msgtitle = htmlspecialchars($msgtitle);
       } else if (isset($options['msgtitle'])) {
         $msgtitle = $options['msgtitle'];
       }
   
  -    if (!$msgtitle) $msgtitle=$options['title'];
  -    if (!$title) {
  -      if ($group) { # for UserNameSpace
  +    if (empty($msgtitle) and !empty($options['title'])) $msgtitle=$options['title'];
  +    if (empty($title)) {
  +      if (!empty($group)) { # for UserNameSpace
           $title=$mypgname;
  -        $groupt=substr($group,0,-1).' &raquo;';
  +        $groupt=substr($group,0,-1).' &raquo;'; // XXX
           $groupt=
             "<span class='wikiGroup'>$groupt</span>";
         } else     
  @@ -4653,8 +4655,8 @@
       }
       # setup title variables
       #$heading=$this->link_to("?action=fullsearch&amp;value="._urlencode($name),$title);
  -    if ($DBInfo->use_backlinks) $qext='&amp;backlinks=1';
  -    if ($link)
  +    if (!empty($DBInfo->use_backlinks)) $qext='&amp;backlinks=1';
  +    if (!empty($link))
         $title="<a href=\"$link\">$title</a>";
       else if (empty($options['nolink']))
         $title=$this->link_to("?action=fullsearch$qext&amp;value="._urlencode($mypgname),$title);
  @@ -4662,16 +4664,16 @@
       if (isset($this->pi['#notitle']))
         $title = '';
       else
  -      $title="$groupt<span class='wikiTitle'>$title</span>";
  +      $title=$groupt."<span class='wikiTitle'>$title</span>";
   
       $logo=$this->link_tag($DBInfo->logo_page,'',$DBInfo->logo_string);
       $goto_form=$DBInfo->goto_form ?
         $DBInfo->goto_form : goto_form($action,$DBInfo->goto_type);
   
  -    if ($options['msg'] or $msgtitle) {
  +    if (!empty($options['msg']) or !empty($msgtitle)) {
         $msgtype = isset($options['msgtype']) ? ' '.$options['msgtype']:' warn';
         
  -      $mtitle=$msgtitle ? "<h3>".$msgtitle."</h3>\n":"";
  +      $mtitle=!empty($msgtitle) ? "<h3>".$msgtitle."</h3>\n":"";
         $msg=<<<MSG
   <div class="message" id="wiki-message"><span class='$msgtype'>
   $mtitle$options[msg]</span>
  @@ -4714,7 +4716,7 @@
         $quicklinks[$this->page->name]='';
       }
   
  -    if ($DBInfo->use_userlink and isset($quicklinks['UserPreferences']) and $options['id'] != 'Anonymous') {
  +    if (!empty($DBInfo->use_userlink) and isset($quicklinks['UserPreferences']) and $options['id'] != 'Anonymous') {
           $tmpid= 'wiki:UserPreferences '.$options['id'];
           $quicklinks[$tmpid]= $quicklinks['UserPreferences'];
           unset($quicklinks['UserPreferences']);
  @@ -4748,8 +4750,8 @@
       }
       $this->nonexists = $save;
       $this->sister_on=$sister_save;
  -    if (!$this->css_friendly) {
  -      $menu=$this->menu_bra.join($this->menu_sep,$menu).$this->menu_cat;
  +    if (empty($this->css_friendly)) {
  +      $menu=$this->menu_bra.implode($this->menu_sep,$menu).$this->menu_cat;
       } else {
         #for ($i=0,$szm=sizeof($menu);$i<$szm;$i++) {
         #  #if $menu[$i]==
  @@ -4763,7 +4765,7 @@
       $this->topmenu=$menu;
   
       # submenu XXX
  -    if ($this->submenu) {
  +    if (!empty($this->submenu)) {
         $smenu=array();
         $mnu_pgname=($group ? $group.'~':'').$this->submenu;
         if ($DBInfo->hasPage($mnu_pgname)) {
  @@ -4841,11 +4843,11 @@
       } else
         $user_link=$this->link_tag("UserPreferences","",_($this->icon['user']));
   
  -    if ($this->icons) {
  +    if (!empty($this->icons)) {
         $icon=array();
         $myicons=array();
   
  -      if ($this->icon_list) {
  +      if (!empty($this->icon_list)) {
           $inames=explode(',',$this->icon_list);
           foreach ($inames as $item) {
             if (isset($this->icons[$item])) {
  @@ -4906,35 +4908,35 @@
         $header.="</td></tr></table>\n";
   
         # menu
  -      print "<div id='wikiHeader'>\n";
  -      print $header;
  +      echo "<div id='wikiHeader'>\n";
  +      echo $header;
         if (!$this->css_friendly)
  -        print $menu." ".$user_link." ".$upper_icon.$icons.$rss_icon;
  +        echo $menu." ".$user_link." ".$upper_icon.$icons.$rss_icon;
         else {
  -        print "<div id='wikiLogin'>".$user_link."</div>";
  -        print "<div id='wikiIcon'>".$upper_icon.$icons.$rss_icon.'</div>';
  -        print $menu;
  +        echo "<div id='wikiLogin'>".$user_link."</div>";
  +        echo "<div id='wikiIcon'>".$upper_icon.$icons.$rss_icon.'</div>';
  +        echo $menu;
         }
  -      print $msg;
  -      print "</div>\n";
  +      echo $msg;
  +      echo "</div>\n";
       }
  -    if (!$this->popup and (empty($themeurl) or !$this->_newtheme)) {
  -      print $DBInfo->hr;
  +    if (empty($this->popup) and (empty($themeurl) or !$this->_newtheme)) {
  +      echo $DBInfo->hr;
         if ($options['trail']) {
  -        print "<div id='wikiTrailer'>\n";
  -        print $this->trail;
  -        print "</div>\n";
  +        echo "<div id='wikiTrailer'>\n";
  +        echo $this->trail;
  +        echo "</div>\n";
         }
         if ($this->origin) {
  -        print "<div id='wikiOrigin'>\n";
  -        print $this->origin;
  -        print "</div>\n";
  +        echo "<div id='wikiOrigin'>\n";
  +        echo $this->origin;
  +        echo "</div>\n";
         }
  -      print $this->subindex;
  +      echo $this->subindex;
       }
  -    print "<div id='wikiBody'>\n";
  +    echo "<div id='wikiBody'>\n";
       #if ($this->subindex and !$this->popup and (empty($themeurl) or !$this->_newtheme))
  -    #  print $this->subindex;
  +    #  echo $this->subindex;
       $this->pagelinks=$saved_pagelinks;
     }
   
  @@ -5324,10 +5326,9 @@
   
     # get primary variables
     if ($_SERVER['REQUEST_METHOD']=="POST") {
  -    if (isset($_POST['retstr']))
  -      unset($_POST['retstr']);
  -    if (isset($_POST['header']))
  -      unset($_POST['header']);
  +    // reset some reserved variables
  +    if (isset($_POST['retstr'])) unset($_POST['retstr']);
  +    if (isset($_POST['header'])) unset($_POST['header']);
   
       # hack for TWiki plugin
       if ($_FILES['filepath']['name']) $action='draw';
  @@ -5350,10 +5351,9 @@
       $goto=$_POST['goto'];
       $popup=$_POST['popup'];
     } else if ($_SERVER['REQUEST_METHOD']=="GET") {
  -    if (isset($_GET['retstr']))
  -      unset($_GET['retstr']);
  -    if (isset($_POST['header']))
  -      unset($_POST['header']);
  +    // reset some reserved variables
  +    if (isset($_GET['retstr'])) unset($_GET['retstr']);
  +    if (isset($_POST['header'])) unset($_POST['header']);
   
       $action=$_GET['action'];
       $value=$_GET['value'];
  @@ -5362,6 +5362,8 @@
       $refresh=($options['id'] == 'Anonymous') ? 0:$_GET['refresh'];
       $popup=$_GET['popup'];
     }
  +  // parse action
  +  // action=foobar, action=foobar/macro, action=foobar/json etc.
     $full_action=$action;
     if (($p=strpos($action,'/'))!==false) {
       $full_action=strtr($action,'/','-');
  @@ -5369,6 +5371,7 @@
       $action=substr($action,0,$p);
     }
   
  +  // is it robot ?
     if (!empty($options['is_robot'])) {
       if (!empty($DBInfo->security_class_robot)) {
         $class='Security_'.$DBInfo->security_class_robot;
  @@ -5377,18 +5380,18 @@
         $class='Security_robot';
         include_once('plugin/security/robot.php');
       }
  -    $DBInfo->security=new $class ($DBInfo);
  +    $DBInfo->security = &new $class ($DBInfo);
  +    // is it allowed to robot ?
       if (!$DBInfo->security->is_allowed($action,$options))
         $action='show';
       $DBInfo->extra_macros='';
     }
   
  -  #print $_SERVER['REQUEST_URI'];
     $options['page']=$pagename;
   
     $page = $DBInfo->getPage($pagename);
   
  -  $formatter = new Formatter($page,$options);
  +  $formatter = &new Formatter($page,$options);
   
     if ($Config['baserule']) {
       $dummy = 'dummy';
  @@ -5451,7 +5454,7 @@
         if (!$Config['no_404']) $msg_404="Status: 404 Not found"; # for IE
         if (!empty($options['is_robot']) or $Config['nofancy_404']) {
           $formatter->header($msg_404);
  -        print '<html><head></head><body><h1>'.$msg_404.'</h1></body></html>';
  +        echo '<html><head></head><body><h1>'.$msg_404.'</h1></body></html>';
           return true;
         }
         $formatter->send_header($msg_404,$options);
  @@ -5474,36 +5477,36 @@
           $button= $formatter->link_to("?action=edit",$formatter->icon['create']._("Create this page"));
           if ($oldver) {
             $formatter->send_title(sprintf(_("%s has saved revisions"),$page->name),"",$options);
  -          print '<h2>'.sprintf(_("%s or click %s to fulltext search.\n"),$button,$formatter->link_to("?action=fullsearch&amp;value=$searchval",_("here"))).'</h2>';
  +          echo '<h2>'.sprintf(_("%s or click %s to fulltext search.\n"),$button,$formatter->link_to("?action=fullsearch&amp;value=$searchval",_("here"))).'</h2>';
             $options['info_actions']=array('recall'=>'view','revert'=>'revert');
             $options['title']='<h3>'.sprintf(_("Old Revisions of the %s"),htmlspecialchars($page->name)).'</h3>';
  -          print $formatter->macro_repl('Info','',$options);
  +          echo $formatter->macro_repl('Info','',$options);
           } else {
             $formatter->send_title(sprintf(_("%s is not found in this Wiki"),$page->name),"",$options);
             $searchval=htmlspecialchars($options['page']);
  -          print '<h2>'.sprintf(_("%s or click %s to fulltext search.\n"),$button,$formatter->link_to("?action=fullsearch&amp;value=$searchval",_("here"))).'</h2>';
  -          print $formatter->macro_repl('LikePages',$page->name,$err);
  +          echo '<h2>'.sprintf(_("%s or click %s to fulltext search.\n"),$button,$formatter->link_to("?action=fullsearch&amp;value=$searchval",_("here"))).'</h2>';
  +          echo $formatter->macro_repl('LikePages',$page->name,$err);
             if ($err['extra'])
  -            print $err['extra'];
  +            echo $err['extra'];
   
  -          print '<h2>'._("Please try to search with another word").'</h2>';
  +          echo '<h2>'._("Please try to search with another word").'</h2>';
             $ret = array('call'=>1);
             $ret = $formatter->macro_repl('TitleSearch','',$ret);
   
             #if ($ret['hits'] == 0)
  -          print "<div class='searchResult'>".$ret['form']."</div>";
  +          echo "<div class='searchResult'>".$ret['form']."</div>";
           }
   
  -        print "<hr />\n";
  +        echo "<hr />\n";
           $options['linkto']="?action=edit&amp;template=";
           $tmpls= macro_TitleSearch($formatter,$DBInfo->template_regex,$options);
           if ($tmpls) {
  -          print sprintf(_("%s or alternativly, use one of these templates:\n"),$button);
  -          print $tmpls;
  +          echo sprintf(_("%s or alternativly, use one of these templates:\n"),$button);
  +          echo $tmpls;
           } else {
  -          print "<h3>"._("You have no templates")."</h3>";
  +          echo "<h3>"._("You have no templates")."</h3>";
           }
  -        print sprintf(_("To create your own templates, add a page with '%s' pattern.\n"),$DBInfo->template_regex);
  +        echo sprintf(_("To create your own templates, add a page with '%s' pattern.\n"),$DBInfo->template_regex);
         }
   
         $args['editable']=1;
  @@ -5512,25 +5515,25 @@
       }
       # display this page
   
  -    if ($DBInfo->use_redirect_msg and $action=='show' and $_GET['redirect']){
  +    if (isset($_GET['redirect']) and !empty($DBInfo->use_redirect_msg) and $action=='show'){
         $options['msg']=
           '<h3>'.sprintf(_("Redirected from page \"%s\""),
             $formatter->link_tag($_GET['redirect'],'?action=show'))."</h3>";
       }
       # increase counter
       if (empty($options['is_robot']))
  -    $DBInfo->counter->incCounter($pagename,$options);
  +      $DBInfo->counter->incCounter($pagename,$options);
   
  -    if (!$action) $options['pi']=1; # protect a recursivly called #redirect
  +    if (empty($action)) $options['pi']=1; # protect a recursivly called #redirect
   
  -    if ($DBInfo->control_read and !$DBInfo->security->is_allowed('read',$options)) {
  +    if (!empty($DBInfo->control_read) and !$DBInfo->security->is_allowed('read',$options)) {
         do_invalid($formatter,$options);
         return;
       }
   
   
       $formatter->pi=$formatter->get_instructions($dum);
  -    if ($DBInfo->body_attr)
  +    if (!empty($DBInfo->body_attr))
         $options['attr']=$DBInfo->body_attr;
   
       $ret = $formatter->send_header('', $options);
  @@ -5539,32 +5542,32 @@
         $formatter->send_title("","",$options);
       }
   
  -    if ($formatter->pi['#title'] and $DBInfo->use_titlecache) {
  -      $tcache=new Cache_text('title');
  +    if (!empty($formatter->pi['#title']) and !empty($DBInfo->use_titlecache)) {
  +      $tcache=&new Cache_text('title');
         if (!$tcache->exists($pagename) or $_GET['update_title'])
           $tcache->update($pagename,$formatter->pi['#title']);
       }
  -    if ($DBInfo->use_keywords or $DBInfo->use_tagging or $_GET['update_keywords']) {
  -      $tcache=new Cache_text('keywords');
  -      if (!$formatter->pi['#keywords']) {
  +    if (!empty($DBInfo->use_keywords) or !empty($DBInfo->use_tagging) or !empty($_GET['update_keywords'])) {
  +      $tcache=&new Cache_text('keywords');
  +      if (empty($formatter->pi['#keywords'])) {
           $tcache->remove($pagename);
         } else if (!$tcache->exists($pagename) or
           $tcache->mtime($pagename) < $formatter->page->mtime() or
  -        $_GET['update_keywords']) {
  +        !empty($_GET['update_keywords'])) {
           $keys=explode(',',$formatter->pi['#keywords']);
           $keys=array_map('trim',$keys);
           $tcache->update($pagename,serialize($keys));
         }
       }
  -    if ($DBInfo->use_referer)
  +    if (!empty($DBInfo->use_referer))
         log_referer($_SERVER['HTTP_REFERER'],$pagename);
   
       $formatter->write("<div id='wikiContent'>\n");
       $options['timer']->Check("init");
       $options['pagelinks']=1;
       if ($Config['cachetime'] > 0 and !$formatter->pi['#nocache']) {
  -      $cache=new Cache_text('pages',2,'html');
  -      $mcache=new Cache_text('dynamicmacros',2);
  +      $cache=&new Cache_text('pages',2,'html');
  +      $mcache=&new Cache_text('dynamicmacros',2);
         $mtime=$cache->mtime($pagename);
         $dtime=filemtime($Config['text_dir'].'/.'); // mtime fix XXX
         $now=time();
  @@ -5602,7 +5605,7 @@
           }
           $out=str_replace($mrule,$mrepl,$out);
         }
  -      print $out.$extra_out;
  +      echo $out,$extra_out;
         $args['refresh']=1; // add refresh menu
       } else {
         $formatter->send_page('',$options);
  @@ -5617,7 +5620,7 @@
           $options['notoolbar']=1;
         }
         $options['mid']='dummy';
  -      print '<div id="wikiExtra">'."\n";
  +      echo '<div id="wikiExtra">'."\n";
         $mout = '';
         $extra = array();
         if (is_array($DBInfo->extra_macros))
  @@ -5628,11 +5631,11 @@
   
         foreach ($extra as $macro)
           $mout.= $formatter->macro_repl($macro,'',$options);
  -      print $formatter->get_javascripts();
  -      print $mout;
  -      print '</div>'."\n";
  +      echo $formatter->get_javascripts();
  +      echo $mout;
  +      echo '</div>'."\n";
       }
  -    
  +
       $args['editable']=1;
       if (empty($options['is_robot']))
         $formatter->send_footer($args,$options);
  @@ -5675,9 +5678,9 @@
   
         if ($options['help'] and
             method_exists($DBInfo->security,$options['help'])) {
  -        print "<div id='wikiHelper'>";
  -        print call_user_method($options['help'],$DBInfo->security,$formatter,$options);
  -        print "</div>\n";
  +        echo "<div id='wikiHelper'>";
  +        echo call_user_method($options['help'],$DBInfo->security,$formatter,$options);
  +        echo "</div>\n";
         }
   
         $formatter->send_footer($args,$options);
  @@ -5704,7 +5707,7 @@
         if ($action_mode=='ajax')
           $formatter->ajax_repl($action,$options);
         else if ($DBInfo->use_macro_as_action) # XXX
  -        print $formatter->macro_repl($action,$options['value'],$options);
  +        echo $formatter->macro_repl($action,$options['value'],$options);
         else
           do_invalid($formatter,$options);
         return;
  
  
  


wkpark      2009/09/26 04:07:38

  Modified:    .        wiki.php
  Log:
  cleanup init_locale().
  
  Revision  Changes    Path
  1.493     +42 -39    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.492
  retrieving revision 1.493
  diff -u -r1.492 -r1.493
  --- wiki.php	25 Sep 2009 19:03:03 -0000	1.492
  +++ wiki.php	25 Sep 2009 19:07:38 -0000	1.493
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.492 2009/09/25 19:03:03 wkpark Exp $
  +// $Id: wiki.php,v 1.493 2009/09/25 19:07:38 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.492 $',1,-1);
  +$_revision = substr('$Revision: 1.493 $',1,-1);
   $_release = '1.1.4-RC3';
   
   #ob_start("ob_gzhandler");
  @@ -5267,50 +5267,53 @@
     }
   }
   
  -function init_locale($lang) {
  -  global $Config,$_locale,$locale;
  -if (isset($_locale)) {
  -  if (!@include_once('locale/'.$lang.'/LC_MESSAGES/moniwiki.php'))
  -    @include_once('locale/'.substr($lang,0,2).'/LC_MESSAGES/moniwiki.php');
  -} else if (substr($lang,0,2) == 'en') {
  -  $test=setlocale(LC_ALL, $lang);
  -} else {
  -  if ($Config['include_path']) $dirs=explode(':',$Config['include_path']);
  -  else $dirs=array('.');
  +function init_locale($lang, $domain = 'moniwiki', $init = false) {
  +  global $Config,$_locale;
  +  if (isset($_locale)) {
  +    if (!@include_once('locale/'.$lang.'/LC_MESSAGES/'.$domain.'.php'))
  +      @include_once('locale/'.substr($lang,0,2).'/LC_MESSAGES/'.$domain.'.php');
  +  } else if (substr($lang,0,2) == 'en') {
  +    $test=setlocale(LC_ALL, $lang);
  +  } else {
  +    if ($Config['include_path']) $dirs=explode(':',$Config['include_path']);
  +    else $dirs=array('.');
   
  -  $domain='moniwiki';
  -  if ($Config['use_local_translation']) {
  -    $langdir=$lang;
  -    if(getenv("OS")=="Windows_NT") $langdir=substr($lang,0,2);
  -    # gettext cache workaround
  -    # http://kr2.php.net/manual/en/function.gettext.php#58310
  -    $ldir=$Config['cache_dir']."/locale/$langdir/LC_MESSAGES/";
  -    if (file_exists($ldir.'md5sum')) {
  -      $tmp=file($ldir.'md5sum');
  -      if (file_exists($ldir.'moniwiki-'.$tmp[0].'.mo')) {
  -        $domain=$domain.'-'.$tmp[0];
  +    while ($Config['use_local_translation']) {
  +      $langdir=$lang;
  +      if(getenv("OS")=="Windows_NT") $langdir=substr($lang,0,2);
  +      # gettext cache workaround
  +      # http://kr2.php.net/manual/en/function.gettext.php#58310
  +      $ldir=$Config['cache_dir']."/locale/$langdir/LC_MESSAGES/";
  +
  +      $tmp = '';
  +      $fp = fopen($ldir.'md5sum', 'r');
  +      if (is_resource($fp)) {
  +        $tmp = '-'.trim(fgets($fp,1024));
  +        fclose($fp);
  +      }
  +      if ($init and !file_exists($ldir.$domain.$tmp.'mo')) {
  +        include_once(dirname(__FILE__).'/plugin/msgtrans.php');
  +        macro_msgtrans(null,$lang,array('init'=>1));
  +      } else {
  +        $domain=$domain.$tmp;
           array_unshift($dirs,$Config['cache_dir']);
         }
  -    } else {
  -      include_once(dirname(__FILE__).'/plugin/msgtrans.php');
  -      macro_msgtrans(null,$lang,array('init'=>1));
  +      break;
       }
  -  }
   
  -  $test=setlocale(LC_ALL, $lang);
  -  foreach ($dirs as $dir) {
  -    $ldir=$dir.'/locale';
  -    if (is_dir($ldir)) {
  -      bindtextdomain($domain, $ldir);
  -      textdomain($domain);
  -      break;
  +    $test=setlocale(LC_ALL, $lang);
  +    foreach ($dirs as $dir) {
  +      $ldir=$dir.'/locale';
  +      if (is_dir($ldir)) {
  +        bindtextdomain($domain, $ldir);
  +        textdomain($domain);
  +        break;
  +      }
       }
  +    if ($Config['set_lang']) putenv("LANG=".$lang);
  +    if (function_exists('bind_textdomain_codeset'))
  +      bind_textdomain_codeset ($domain, $Config['charset']);
     }
  -  if ($Config['set_lang']) putenv("LANG=".$lang);
  -  if (function_exists('bind_textdomain_codeset'))
  -    bind_textdomain_codeset ($domain, $Config['charset']);
  -}
  -
   }
   
   function get_frontpage($lang) {
  
  
  


wkpark      2009/09/26 04:12:17

  Modified:    .        wiki.php
  Log:
  use register_shutdown_function correct place
  
  Revision  Changes    Path
  1.494     +7 -5      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.493
  retrieving revision 1.494
  diff -u -r1.493 -r1.494
  --- wiki.php	25 Sep 2009 19:07:38 -0000	1.493
  +++ wiki.php	25 Sep 2009 19:12:17 -0000	1.494
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.493 2009/09/25 19:07:38 wkpark Exp $
  +// $Id: wiki.php,v 1.494 2009/09/25 19:12:17 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.493 $',1,-1);
  +$_revision = substr('$Revision: 1.494 $',1,-1);
   $_release = '1.1.4-RC3';
   
   #ob_start("ob_gzhandler");
  @@ -873,11 +873,14 @@
           $this->url_mapping_rule=substr($rule,0,-1);
         }
       }
  +    register_shutdown_function(array(&$this,'Close'));
     }
   
     function Close() {
  -    $this->metadb->close();
  -    $this->counter->close();
  +    if (is_object($this->metadb))
  +      $this->metadb->close();
  +    if (is_object($this->counter))
  +      $this->counter->close();
     }
   
     function _getPageKey($pagename) {
  @@ -5751,7 +5754,6 @@
   include_once("lib/win32fix.php");
   
   $DBInfo= new WikiDB($Config);
  -register_shutdown_function(array(&$DBInfo,'Close'));
   
   $options=array();
   $options['timer']=&$timing;
  
  
  


wkpark      2009/09/26 04:14:07

  Modified:    plugin   RecentChanges.php
  Log:
  use a encoding param with mb_strimwidth()
  
  Revision  Changes    Path
  1.36      +2 -2      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- RecentChanges.php	9 Sep 2009 12:17:00 -0000	1.35
  +++ RecentChanges.php	25 Sep 2009 19:14:07 -0000	1.36
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.35 2009/09/09 12:17:00 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.36 2009/09/25 19:14:07 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     global $DBInfo;
  @@ -313,7 +313,7 @@
       $title0=htmlspecialchars($title0);
       $attr = '';
       if (strlen(get_title($title)) > 20 and function_exists('mb_strimwidth')) {
  -      $title0=mb_strimwidth($title0,0,20,'...');
  +      $title0=mb_strimwidth($title0,0,20,'...', $DBInfo->charset);
         $attr = ' title="'.$title.'"';
       }
       $title= $formatter->link_tag($pageurl,"",$title0,$target.$attr);
  
  
  


wkpark      2009/09/26 07:51:59

  Modified:    .        wiki.php
  Log:
  use empty,isset
  
  Revision  Changes    Path
  1.495     +41 -48    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.494
  retrieving revision 1.495
  diff -u -r1.494 -r1.495
  --- wiki.php	25 Sep 2009 19:12:17 -0000	1.494
  +++ wiki.php	25 Sep 2009 22:51:59 -0000	1.495
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.494 2009/09/25 19:12:17 wkpark Exp $
  +// $Id: wiki.php,v 1.495 2009/09/25 22:51:59 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.494 $',1,-1);
  +$_revision = substr('$Revision: 1.495 $',1,-1);
   $_release = '1.1.4-RC3';
   
   #ob_start("ob_gzhandler");
  @@ -681,22 +681,22 @@
       $this->login_strict=1;
   
       # set user-specified configuration
  -    if ($config) {
  +    if (!empty($config)) {
         # read configurations
         foreach ($config as $key=>$val) {
  -        if ($key{0}=='_') continue; // internal variables
  +        if ($key[0]=='_') continue; // internal variables
           $this->$key=$val;
         }
       }
   
  -    if (!$this->purge_passwd)
  +    if (empty($this->purge_passwd))
         $this->purge_passwd=$this->admin_passwd;
   
  -    if ($this->use_wikiwyg and !$this->sectionedit_attr)
  +    if (!empty($this->use_wikiwyg) and empty($this->sectionedit_attr))
         $this->sectionedit_attr=1;
   
   #
  -    if (!$this->menu) {
  +    if (empty($this->menu)) {
         $this->menu= array($this->frontpage=>"accesskey='1'",'FindPage'=>"accesskey='4'",'TitleIndex'=>"accesskey='3'",'RecentChanges'=>"accesskey='2'");
         $this->menu_bra="";
         $this->menu_cat="|";
  @@ -727,10 +727,10 @@
       if (is_dir($imgs_real_dir.'/'.$iconset)) $iconset.='/';
       else $iconset.='-';
   
  -    if (!file_exists($imgs_real_dir.'/'.$iconset.'home.png')) $ext='gif';
  -
  -    if (file_exists($imgs_real_dir.'/'.$iconset.'http.png'))
  +    if (file_exists($imgs_real_dir.'/'.$iconset.'home.png'))
         $this->imgs_dir_url=$this->imgs_dir.'/'.$iconset;
  +    else
  +      $ext = 'gif';
   
       $this->icon['upper']="<img src='$imgdir/${iconset}upper.$ext' alt='U' style='vertical-align:middle;border:0px' />";
       $this->icon['edit']="<img src='$imgdir/${iconset}edit.$ext' alt='E' style='vertical-align:middle;border:0px' />";
  @@ -767,7 +767,7 @@
                 'show'=>array("","",$this->icon['show']),
                 'find'=>array("FindPage","",$this->icon['find']),
                 'info'=>array("","?action=info",$this->icon['info']));
  -      if ($this->notify)
  +      if (!empty($this->notify))
           $this->icons['subscribe']=array("","?action=subscribe",$this->icon['mailto']);
         $this->icons['help']=array("HelpContents","",$this->icon['help']);
         $this->icons['pref']=array("UserPreferences","",$this->icon['pref']);
  @@ -775,8 +775,8 @@
       $config=get_object_vars($this); // merge default settings to $config
   
       # load smileys
  -    if ($this->use_smileys){
  -      include_once($this->smiley.".php");
  +    if (!empty($this->use_smileys)) {
  +      include_once($this->smiley.'.php');
         # set smileys rule
         if ($this->shared_smileymap and file_exists($this->shared_smileymap)) {
           $myicons=array();
  @@ -809,54 +809,54 @@
       # ??? Is mod_rewrite being used to translate 'WikiWord' to
       // $this->rewrite = true;
   
  -    if ($this->path)
  +    if (!empty($this->path))
         putenv("PATH=".$this->path);
   
  -    if ($this->rcs_user)
  +    if (!empty($this->rcs_user))
         putenv('LOGNAME='.$this->rcs_user);
  -    if ($this->timezone)
  +    if (!empty($this->timezone))
         putenv('TZ='.$this->timezone);
   
       $this->interwiki=null;
   
       if (!empty($this->use_alias) and file_exists($this->aliaspage))
  -      $this->alias=new MetaDB_text($this->aliaspage);
  +      $this->alias=&new MetaDB_text($this->aliaspage);
       else
  -      $this->alias=new MetaDB();
  +      $this->alias=&new MetaDB();
   
  -    if ($this->shared_metadb)
  -      $this->metadb=new MetaDB_dba($this->shared_metadb,$this->dba_type);
  -    if (!$this->metadb->metadb) {
  -      if ($this->alias) $this->metadb=$this->alias;
  -      else $this->metadb=new MetaDB();
  +    if (!empty($this->shared_metadb))
  +      $this->metadb=&new MetaDB_dba($this->shared_metadb,$this->dba_type);
  +    if (empty($this->metadb->metadb)) {
  +      if (is_object($this->alias)) $this->metadb=$this->alias;
  +      else $this->metadb=&new MetaDB();
       } else {
         $this->metadb->attachDB($this->alias);
       }
   
  -    if ($this->use_counter)
  -      $this->counter=new Counter_dba($this);
  +    if (!empty($this->use_counter))
  +      $this->counter=&new Counter_dba($this);
       if (!$this->counter->counter)
  -      $this->counter=new Counter();
  +      $this->counter=&new Counter();
   
       if (!empty($this->security_class)) {
         include_once("plugin/security/$this->security_class.php");
  -      $class="Security_".$this->security_class;
  +      $class='Security_'.$this->security_class;
         $this->security=new $class ($this);
       } else
         $this->security=new Security($this);
  -    if ($this->filters) {
  +    if (!empty($this->filters)) {
         if (!is_array($this->filters)) {
           $this->filters=preg_split('/(\||,)/',$this->filters);
         }
       }
  -    if ($this->postfilters) {
  +    if (!empty($this->postfilters)) {
         if (!is_array($this->postfilters)) {
           $this->postfilters=preg_split('/(\||,)/',$this->postfilters);
         }
       }
   
       # check and prepare $url_mappings
  -    if ($this->url_mappings) {
  +    if (!empty($this->url_mappings)) {
         if (!is_array($this->url_mappings)) {
           $maps=explode("\n",$this->url_mappings);
           $tmap=array();
  @@ -2978,25 +2978,18 @@
       return "<img src='$this->imgs_dir/$img' style='border:0' class='smiley' alt='$alt' title='$alt' />";
     }
   
  -  function link_url($pageurl,$query_string="") {
  +  function link_url($pageurl, $query_string='') {
       global $DBInfo;
       $sep=$DBInfo->query_prefix;
   
  -    if (!$query_string) {
  +    if (empty($query_string)) {
         if (isset($this->query_string)) $query_string=$this->query_string;
  -    } else if ($query_string and $query_string{0}=='#') {
  +    } else if ($query_string[0] == '#') {
         $query_string= $this->self_query.$query_string;
       }
  -    #{
  -    #    $query_string = $this->query_string;
  -    #  } else if ($query_string[0]=='?') {
  -    #    $query_string= $this->query_string.'&amp;'.substr($query_string,1);
  -    #  } else {
  -    #  }
  -    #}
   
       if ($sep == '?') {
  -      if ($pageurl && $query_string[0]=='?')
  +      if (isset($pageurl[0]) && $query_string[0]=='?')
           # add 'dummy=1' to work around the buggy php
           $query_string= '&amp;'.substr($query_string,1).'&amp;dummy=1';
           # Did you have a problem with &amp;dummy=1 ?
  @@ -3005,22 +2998,22 @@
         $query_string= $pageurl.$query_string;
       } else
         $query_string= $pageurl.$query_string;
  -    return sprintf("%s%s%s", $this->prefix, $sep, $query_string);
  +    return $this->prefix . $sep . $query_string;
     }
   
     function link_tag($pageurl,$query_string="", $text="",$attr="") {
       # Return a link with given query_string.
  -    if (!$text)
  +    if (empty($text))
         $text= $pageurl; # XXX
  -    if (!$pageurl)
  +    if (empty($pageurl))
         $pageurl=$this->page->urlname;
  -    if ($query_string{0}=='?') $attr=empty($attr) ? 'rel="nofollow"':$attr.' rel="nofollow"';
  +    if ($query_string[0]=='?') $attr=empty($attr) ? 'rel="nofollow"':$attr.' rel="nofollow"';
       $url=$this->link_url($pageurl,$query_string);
  -    return sprintf("<a href=\"%s\" %s><span>%s</span></a>", $url, $attr, $text);
  +    return '<a href="'.$url.'" '. $attr .'><span>'.$text.'</span></a>';
     }
   
     function link_to($query_string="",$text="",$attr="") {
  -    if (!$text)
  +    if (empty($text))
         $text=htmlspecialchars($this->page->name);
   
       return $this->link_tag($this->page->urlname,$query_string,$text,$attr);
  @@ -4701,7 +4694,7 @@
   
       # navi bar
       $menu=array();
  -    if ($options['quicklinks']) {
  +    if (!empty($options['quicklinks'])) {
         # get from the user setting
         $quicklinks=array_flip(explode("\t",$options['quicklinks']));
       } else {
  
  
  


wkpark      2009/09/26 14:35:48

  Modified:    .        wiki.php wikilib.php
  Log:
  extract getSmileys() func.
  
  Revision  Changes    Path
  1.496     +12 -35    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.495
  retrieving revision 1.496
  diff -u -r1.495 -r1.496
  --- wiki.php	25 Sep 2009 22:51:59 -0000	1.495
  +++ wiki.php	26 Sep 2009 05:35:48 -0000	1.496
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.495 2009/09/25 22:51:59 wkpark Exp $
  +// $Id: wiki.php,v 1.496 2009/09/26 05:35:48 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.495 $',1,-1);
  +$_revision = substr('$Revision: 1.496 $',1,-1);
   $_release = '1.1.4-RC3';
   
   #ob_start("ob_gzhandler");
  @@ -774,35 +774,6 @@
       }
       $config=get_object_vars($this); // merge default settings to $config
   
  -    # load smileys
  -    if (!empty($this->use_smileys)) {
  -      include_once($this->smiley.'.php');
  -      # set smileys rule
  -      if ($this->shared_smileymap and file_exists($this->shared_smileymap)) {
  -        $myicons=array();
  -        $lines=file($this->shared_smileymap);
  -        foreach ($lines as $l) {
  -          if ($l[0] != ' ') continue;
  -          if (!preg_match('/^ \*\s*([^ ]+)\s(.*)$/',$l,$m)) continue;
  -          $name=_preg_escape($m[1]);
  -          list($img,$extra)=explode(' ',$m[2]);
  -          if (preg_match('/^(http|ftp):.*\.(png|jpg|jpeg|gif)/',$img)) {
  -            $myicons[$name]=array(16,16,0,$img);
  -          } else {
  -            continue;
  -          }
  -        }
  -        #print_r($myicons);
  -        $smileys=array_merge($smileys,$myicons);
  -      }
  -
  -      $tmp=array_keys($smileys);
  -      $tmp=array_map("_preg_escape",$tmp);
  -      $rule=join($tmp,"|");
  -      $this->smiley_rule=$rule;
  -      $this->smileys=$smileys;
  -    }
  -
       # ??? Number of lines output per each flush() call.
       // $this->lines_per_flush = 10;
   
  @@ -1883,7 +1854,15 @@
       $this->extrarepl=array("<table class='closure'><tr class='closure'><td class='closure'>\\1</td></tr></table>","</div><table class='closure'><tr class='closure'><td class='closure'><div>","</div></td></tr></table><div>");
       
       # set smily_rule,_repl
  -    if ($DBInfo->smileys) {
  +    # load smileys
  +    if (!empty($DBInfo->use_smileys)) {
  +      $this->smileys = getSmileys();
  +
  +      $tmp=array_keys($this->smileys);
  +      $tmp=array_map('_preg_escape',$tmp);
  +      $rule=join($tmp,'|');
  +      $DBInfo->smiley_rule=$rule;
  +
         $this->smiley_rule='/(?<=\s|^|>)('.$DBInfo->smiley_rule.')(?=\s|<|$)/e';
         $this->smiley_repl="\$formatter->smiley_repl('\\1')";
   
  @@ -2967,9 +2946,7 @@
     }
   
     function smiley_repl($smiley) {
  -    global $DBInfo;
  -
  -    $img=$DBInfo->smileys[$smiley][3];
  +    $img=$this->smileys[$smiley][3];
   
       $alt=str_replace("<","&lt;",$smiley);
   
  
  
  
  1.283     +25 -1     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.282
  retrieving revision 1.283
  diff -u -r1.282 -r1.283
  --- wikilib.php	12 Sep 2009 13:39:02 -0000	1.282
  +++ wikilib.php	26 Sep 2009 05:35:48 -0000	1.283
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.282 2009/09/12 13:39:02 wkpark Exp $
  +// $Id: wikilib.php,v 1.283 2009/09/26 05:35:48 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -340,6 +340,30 @@
     return false;
   }
   
  +function getSmileys() {
  +  global $DBInfo;
  +
  +  include_once($DBInfo->smiley.'.php');
  +  # set smileys
  +  if (!empty($DBInfo->shared_smileymap) and file_exists($DBInfo->shared_smileymap)) {
  +    $myicons=array();
  +    $lines=file($DBInfo->shared_smileymap);
  +    foreach ($lines as $l) {
  +      if ($l[0] != ' ') continue;
  +      if (!preg_match('/^ \*\s*([^ ]+)\s(.*)$/',$l,$m)) continue;
  +      $name=_preg_escape($m[1]);
  +      list($img,$extra)=explode(' ',$m[2]);
  +      if (preg_match('/^(http|ftp):.*\.(png|jpg|jpeg|gif)/',$img)) {
  +        $myicons[$name]=array(16,16,0,$img);
  +      } else {
  +        continue;
  +      }
  +    }
  +    $smileys=array_merge($smileys,$myicons);
  +  }
  +  return $smileys;
  +}
  +
   class UserDB {
     var $users=array();
     function UserDB($WikiDB) {
  
  
  


wkpark      2009/09/26 14:35:48

  Modified:    plugin   ShowSmiley.php SmileyChooser.php
  Log:
  extract getSmileys() func.
  
  Revision  Changes    Path
  1.2       +2 -4      moniwiki/plugin/ShowSmiley.php
  
  Index: ShowSmiley.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/ShowSmiley.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ShowSmiley.php	31 Aug 2004 16:15:49 -0000	1.1
  +++ ShowSmiley.php	26 Sep 2009 05:35:48 -0000	1.2
  @@ -5,11 +5,9 @@
   //
   // Usage: [[ShowSmiley]]
   //
  -// $Id: ShowSmiley.php,v 1.1 2004/08/31 16:15:49 wkpark Exp $
  +// $Id: ShowSmiley.php,v 1.2 2009/09/26 05:35:48 wkpark Exp $
   
   function macro_ShowSmiley($formatter,$value) {
  -  global $DBInfo;
  -
     $idx=0;
     $out='<table class="wiki"><tr class="wiki">';
     $col=4;
  @@ -19,7 +17,7 @@
     }
     $out.='</tr><tr class="wiki">';
   
  -  foreach ($DBInfo->smileys as $key=>$value) {
  +  foreach ($formatter->smileys as $key=>$value) {
       $skey=str_replace("\\","\\\\",$key);
       $out.= '<td>'.$key.'</td><td>'.$formatter->smiley_repl($key)."</td>";
       $idx++;
  
  
  
  1.16      +2 -2      moniwiki/plugin/SmileyChooser.php
  
  Index: SmileyChooser.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SmileyChooser.php,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- SmileyChooser.php	17 Dec 2008 06:06:50 -0000	1.15
  +++ SmileyChooser.php	26 Sep 2009 05:35:48 -0000	1.16
  @@ -5,7 +5,7 @@
   //
   // Usage: [[SmileyChooser]]
   //
  -// $Id: SmileyChooser.php,v 1.15 2008/12/17 06:06:50 wkpark Exp $
  +// $Id: SmileyChooser.php,v 1.16 2009/09/26 05:35:48 wkpark Exp $
   
   function do_smileychooser($formatter,$params=array()) {
     $list=macro_SmileyChooser($formatter,$params['page'],$params);
  @@ -113,7 +113,7 @@
     $chooser.= "<div id=\"smileyChooser\">\n";
     $last_img = '';
     $idx=0;
  -  while (list($key,$value) = each($DBInfo->smileys)) {
  +  while (list($key,$value) = each($formatter->smileys)) {
       if ($last_img != $value[3]) {
         $skey=str_replace(array("\\","'"),array("\\\\","&#39;"),$key);
         $chooser.= "<span onclick='mySmiley(\"$skey\")'>".$formatter->smiley_repl($key)."</span>&shy;";
  
  
  


wkpark      2009/09/26 15:35:20

  Modified:    .        wiki.php
  Log:
  rollback some last change
  
  Revision  Changes    Path
  1.497     +5 -5      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.496
  retrieving revision 1.497
  diff -u -r1.496 -r1.497
  --- wiki.php	26 Sep 2009 05:35:48 -0000	1.496
  +++ wiki.php	26 Sep 2009 06:35:19 -0000	1.497
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.496 2009/09/26 05:35:48 wkpark Exp $
  +// $Id: wiki.php,v 1.497 2009/09/26 06:35:19 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.496 $',1,-1);
  +$_revision = substr('$Revision: 1.497 $',1,-1);
   $_release = '1.1.4-RC3';
   
   #ob_start("ob_gzhandler");
  @@ -727,10 +727,10 @@
       if (is_dir($imgs_real_dir.'/'.$iconset)) $iconset.='/';
       else $iconset.='-';
   
  -    if (file_exists($imgs_real_dir.'/'.$iconset.'home.png'))
  +    if (!file_exists($imgs_real_dir.'/'.$iconset.'home.png')) $ext = 'gif';
  +
  +    if (file_exists($imgs_real_dir.'/'.$iconset.'http.png'))
         $this->imgs_dir_url=$this->imgs_dir.'/'.$iconset;
  -    else
  -      $ext = 'gif';
   
       $this->icon['upper']="<img src='$imgdir/${iconset}upper.$ext' alt='U' style='vertical-align:middle;border:0px' />";
       $this->icon['edit']="<img src='$imgdir/${iconset}edit.$ext' alt='E' style='vertical-align:middle;border:0px' />";
  
  
  


wkpark      2009/10/01 01:04:54

  Modified:    locale/po fr.po ko.po moniwiki.pot
  Log:
  update msgs
  
  Revision  Changes    Path
  1.29      +920 -872  moniwiki/locale/po/fr.po
  
  Index: fr.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/fr.po,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- fr.po	19 Aug 2009 07:35:01 -0000	1.28
  +++ fr.po	30 Sep 2009 16:04:54 -0000	1.29
  @@ -4,7 +4,7 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2009-08-19 16:34+0900\n"
  +"POT-Creation-Date: 2009-10-01 01:04+0900\n"
   "PO-Revision-Date: 2003-08-17 22:51+0900\n"
   "Last-Translator: Serge Stinckwich <Serge.Stinckwich@info.unicaen.fr>\n"
   "Language-Team: fr <fr@li.org>\n"
  @@ -12,6 +12,84 @@
   "Content-Type: text/plain; charset=iso-8859-1\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  +#: ../plugin/aclinfo.php:15
  +msgid "ACL is not enabled on this Wiki"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:21
  +msgid "Your ACL Info"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:23
  +msgid "You are wiki owner"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:25
  +msgid "You are wiki master"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:27
  +msgid "Allowed actions"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:32
  +msgid "Denied actions"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:38
  +msgid "Protected actions"
  +msgstr ""
  +
  +#: ../plugin/admin.php:136 ../plugin/PluginInfo.php:50
  +msgid "Description"
  +msgstr ""
  +
  +#: ../plugin/admin.php:139 ../plugin/PluginInfo.php:56
  +msgid "Author"
  +msgstr ""
  +
  +#: ../plugin/admin.php:141 ../plugin/PluginInfo.php:58
  +msgid "License"
  +msgstr ""
  +
  +# ../plugin/VisualTour.php:59
  +#: ../plugin/admin.php:143 ../plugin/PluginInfo.php:60
  +msgid "Depend"
  +msgstr ""
  +
  +#: ../plugin/admin.php:147 ../plugin/PluginInfo.php:64
  +msgid "URL"
  +msgstr ""
  +
  +#: ../plugin/admin.php:191
  +msgid "Enabled plugins"
  +msgstr ""
  +
  +#: ../plugin/admin.php:193
  +msgid "Disabled plugins"
  +msgstr ""
  +
  +#: ../plugin/admin.php:201
  +msgid "Enabled processors"
  +msgstr ""
  +
  +#: ../plugin/admin.php:203
  +msgid "Disabled processors"
  +msgstr ""
  +
  +#: ../plugin/admin.php:206
  +msgid "Plugin/Processor settings are updated"
  +msgstr ""
  +
  +#: ../plugin/admin.php:212
  +msgid "Enable/disable plugins and processors"
  +msgstr ""
  +
  +# ../locale/dummy.php:7
  +#: ../plugin/atom.php:64 ../plugin/rss_rc.php:62
  +msgid "show changes"
  +msgstr ""
  +
   # ../plugin/Attachment.php:24
   #: ../plugin/Attachment.php:70 ../plugin/Attachment.php:333
   #, c-format
  @@ -44,6 +122,157 @@
   msgid "Translate %s to %s"
   msgstr "Translate %s en %s"
   
  +# ../wikilib.php:887
  +#: ../plugin/backup.php:42
  +msgid "Your wiki is backuped successfully"
  +msgstr ""
  +
  +#: ../plugin/backup.php:49
  +msgid "Backup failed !"
  +msgstr ""
  +
  +# ../plugin/backup.php:46
  +#: ../plugin/backup.php:54
  +msgid "Did you want to Backup your wiki ?"
  +msgstr "Voulez vous faire une sauvegarde de votre wiki ?"
  +
  +#: ../plugin/bbs.php:493
  +msgid "This bbs does not exists yet. Please save this page first"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:617
  +msgid "No"
  +msgstr ""
  +
  +# ../locale/dummy.php:6 ../wiki.php:2553
  +#: ../plugin/bbs.php:626
  +msgid "Edit"
  +msgstr ""
  +
  +# ../locale/dummy.php:5
  +#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1257
  +msgid "Delete"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:657
  +msgid "Please check article numbers."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:737
  +msgid "More"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:782
  +msgid "New"
  +msgstr ""
  +
  +# ../plugin/rename.php:27
  +#: ../plugin/bbs.php:784
  +msgid "Read"
  +msgstr "Renommer"
  +
  +#: ../plugin/bbs.php:800
  +#, c-format
  +msgid "Total %s articles."
  +msgstr ""
  +
  +# ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
  +# c-format
  +#: ../plugin/bbs.php:836
  +#, c-format
  +msgid "Your IP address is not allowed to %s at this BBS"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:890
  +msgid "Successfully deleted."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:922
  +msgid "Fail to post comment."
  +msgstr ""
  +
  +# ../wikilib.php:540
  +#: ../plugin/bbs.php:932
  +#, c-format
  +msgid "The article %s will be deleted."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:974
  +msgid "Invalid HomePage address."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:987
  +msgid "No Name error."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:997
  +msgid "No Subject error."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:1009 ../plugin/Comment.php:196 ../plugin/Gallery.php:174
  +#: ../wikilib.php:1609 ../wikilib.php:1815
  +msgid ""
  +"Sorry, can not save page because some messages are blocked in this wiki."
  +msgstr ""
  +
  +# ../plugin/Vote.php:109
  +#: ../plugin/bbs.php:1025
  +msgid "New post added successfully"
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:198
  +msgid "Category: "
  +msgstr ""
  +
  +# ../locale/dummy.php:7
  +#: ../plugin/BlogChanges.php:200 ../locale/dummy.php:7
  +msgid "BlogChanges"
  +msgstr "ModificationsBlog"
  +
  +# ../wikilib.php:1483
  +#: ../plugin/BlogChanges.php:246
  +#, c-format
  +msgid "Invalid category expr \"%s\""
  +msgstr ""
  +
  +# ../plugin/processor/blog.php:43 ../plugin/processor/blog.php:45
  +#: ../plugin/BlogChanges.php:378 ../plugin/BlogChanges.php:380
  +#: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
  +msgid "Anonymous"
  +msgstr "Anonyme"
  +
  +# ../plugin/processor/blog.php:78
  +#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  +#, c-format
  +msgid "%d comment"
  +msgstr "%d commentaire"
  +
  +# ../plugin/processor/blog.php:78
  +#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  +#, c-format
  +msgid "%d comments"
  +msgstr "%d commentaires"
  +
  +# ../plugin/processor/blog.php:70
  +#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:213
  +#: ../plugin/processor/blog.php:78
  +msgid "Add comment"
  +msgstr "Ajouter un commentaire"
  +
  +# ../plugin/processor/blog.php:89
  +#: ../plugin/BlogChanges.php:423 ../plugin/processor/blog.php:97
  +msgid "track back"
  +msgstr ""
  +
  +# ../plugin/BlogChanges.php:226
  +#: ../plugin/BlogChanges.php:443
  +msgid "Previous"
  +msgstr "Pr?c?dent"
  +
  +#: ../plugin/BlogChanges.php:446
  +msgid "Next"
  +msgstr ""
  +
   #: ../plugin/Blog.php:84
   #, c-format
   msgid "Blog cache of \"%s\" is refreshed"
  @@ -110,11 +339,11 @@
   
   # ../wiki.php:2950
   #: ../plugin/Blog.php:262 ../plugin/Blog.php:333
  -#: ../plugin/RecentChanges.php:106
  +#: ../plugin/RecentChanges.php:119
   msgid "Title"
   msgstr "titre"
   
  -#: ../plugin/Blog.php:268 ../wikilib.php:1054
  +#: ../plugin/Blog.php:268 ../wikilib.php:1080
   msgid "GUI"
   msgstr ""
   
  @@ -128,57 +357,37 @@
   msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
   msgstr "<b>Une r?gle horizontale</b> ---- ne s'applique pas au mode blog."
   
  -#: ../plugin/BlogChanges.php:198
  -msgid "Category: "
  +# ../wiki.php:3024
  +#: ../plugin/bookmark.php:33
  +msgid "Invalid bookmark!"
   msgstr ""
   
  -# ../locale/dummy.php:7
  -#: ../plugin/BlogChanges.php:200 ../locale/dummy.php:7
  -msgid "BlogChanges"
  -msgstr "ModificationsBlog"
  +#: ../plugin/cacheadmin.php:105
  +msgid "You are not WikiMaster!!"
  +msgstr ""
   
  -# ../wikilib.php:1483
  -#: ../plugin/BlogChanges.php:246
  -#, c-format
  -msgid "Invalid category expr \"%s\""
  +#: ../plugin/cacheadmin.php:120
  +msgid "Clear cache dirs"
   msgstr ""
   
  -# ../plugin/processor/blog.php:43 ../plugin/processor/blog.php:45
  -#: ../plugin/BlogChanges.php:378 ../plugin/BlogChanges.php:380
  -#: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
  -msgid "Anonymous"
  -msgstr "Anonyme"
  +#: ../plugin/chat.php:36
  +msgid "No messages"
  +msgstr ""
   
  -# ../plugin/processor/blog.php:78
  -#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  +#: ../plugin/chmod.php:18
   #, c-format
  -msgid "%d comment"
  -msgstr "%d commentaire"
  +msgid "Permission of \"%s\" changed !"
  +msgstr ""
   
  -# ../plugin/processor/blog.php:78
  -#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  +# ../wiki.php:3021
  +#: ../plugin/chmod.php:24
   #, c-format
  -msgid "%d comments"
  -msgstr "%d commentaires"
  -
  -# ../plugin/processor/blog.php:70
  -#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:213
  -#: ../plugin/processor/blog.php:78
  -msgid "Add comment"
  -msgstr "Ajouter un commentaire"
  -
  -# ../plugin/processor/blog.php:89
  -#: ../plugin/BlogChanges.php:423 ../plugin/processor/blog.php:97
  -msgid "track back"
  -msgstr ""
  -
  -# ../plugin/BlogChanges.php:226
  -#: ../plugin/BlogChanges.php:443
  -msgid "Previous"
  -msgstr "Pr?c?dent"
  +msgid "Fail to chmod \"%s\" !"
  +msgstr "Impossible de pouvoir \"%s\" !"
   
  -#: ../plugin/BlogChanges.php:446
  -msgid "Next"
  +#: ../plugin/chmod.php:35
  +#, c-format
  +msgid "Change permission of \"%s\""
   msgstr ""
   
   # ../plugin/OeKaki.php:118
  @@ -210,8 +419,8 @@
   msgstr "commentaire"
   
   # ../wikilib.php:482
  -#: ../plugin/Comment.php:93 ../wikilib.php:797 ../wikilib.php:1048
  -#: ../wikilib.php:1717 ../wikilib.php:1807 ../monisetup.php:1305
  +#: ../plugin/Comment.php:93 ../wikilib.php:821 ../wikilib.php:1074
  +#: ../wikilib.php:1744 ../wikilib.php:1841 ../monisetup.php:1305
   msgid "Preview"
   msgstr "Pr?visualisation"
   
  @@ -236,21 +445,15 @@
   msgstr ""
   
   #: ../plugin/Comment.php:169 ../plugin/userform.php:118
  -#: ../plugin/userform.php:181 ../plugin/userform.php:204 ../wikilib.php:1760
  +#: ../plugin/userform.php:181 ../plugin/userform.php:204 ../wikilib.php:1794
   msgid "Invalid ticket !"
   msgstr ""
   
   #: ../plugin/Comment.php:174 ../plugin/userform.php:120
  -#: ../plugin/userform.php:206 ../wikilib.php:1765
  +#: ../plugin/userform.php:206 ../wikilib.php:1799
   msgid "You need a ticket !"
   msgstr ""
   
  -#: ../plugin/Comment.php:196 ../plugin/Gallery.php:174 ../plugin/bbs.php:1009
  -#: ../wikilib.php:1583 ../wikilib.php:1781
  -msgid ""
  -"Sorry, can not save page because some messages are blocked in this wiki."
  -msgstr ""
  -
   # ../wikilib.php:748 ../wikilib.php:777
   #: ../plugin/Comment.php:202
   msgid "Preview comment"
  @@ -267,19 +470,28 @@
   msgid "Comment added successfully"
   msgstr ""
   
  +# ../plugin/css.php:29 ../plugin/css.php:37
  +#: ../plugin/css.php:33 ../plugin/css.php:41
  +msgid "Back to UserPreferences"
  +msgstr "Retour ? UserPreferences"
  +
  +#: ../plugin/css.php:67
  +msgid "CSS disabled !"
  +msgstr ""
  +
   # ../wiki.php:2211 ../wiki.php:2360
  -#: ../plugin/Diff.php:410 ../plugin/Info.php:240
  +#: ../plugin/Diff.php:410 ../plugin/Info.php:246
   msgid "No older revisions available"
   msgstr "Aucune r?vision plus ancienne disponible"
   
   # ../wikilib.php:803
  -#: ../plugin/Diff.php:415 ../plugin/Info.php:246 ../plugin/rcsexport.php:13
  +#: ../plugin/Diff.php:415 ../plugin/Info.php:252 ../plugin/rcsexport.php:13
   #: ../plugin/rcsimport.php:13
   msgid "Version info is not available in this wiki"
   msgstr ""
   
   # ../wiki.php:2338 ../wiki.php:2373 ../wikilib.php:770
  -#: ../plugin/Diff.php:426 ../wikilib.php:1737
  +#: ../plugin/Diff.php:426 ../wikilib.php:1764
   msgid "No difference found"
   msgstr "Aucune diff?rence trouv?"
   
  @@ -311,7 +523,7 @@
   msgstr "Faire un nouveau dessin"
   
   # ../plugin/Draw.php:48
  -#: ../plugin/Draw.php:92 ../plugin/UploadFile.php:252
  +#: ../plugin/Draw.php:92 ../plugin/UploadFile.php:289
   #, c-format
   msgid "Fail to copy \"%s\" to \"%s\""
   msgstr "Impossible de copier \"%s\" vers \"%s\""
  @@ -359,21 +571,26 @@
   
   # ../plugin/FastSearch.php:125
   #: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:38
  -#: ../wikilib.php:1504
  +#: ../wikilib.php:1530
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr "Trouv? %s s'appariant avec %s sur un total de %s pages"
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1506
  +#: ../wikilib.php:1532
   msgid "page"
   msgstr ""
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1506
  +#: ../wikilib.php:1532
   msgid "pages"
   msgstr ""
   
  +# ../plugin/format.php:16
  +#: ../plugin/format.php:17
  +msgid "It is a XML format !"
  +msgstr "C'est un format XML !"
  +
   # ../wikilib.php:1479
   #: ../plugin/FullSearch.php:15
   #, c-format
  @@ -390,8 +607,8 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4513
  -#: ../wikilib.php:1034
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4488
  +#: ../wikilib.php:1060
   msgid "Refresh"
   msgstr ""
   
  @@ -408,8 +625,8 @@
   " ou cliquer sur %s pour faire une recherche en texte int?gral de cette "
   "page.\n"
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5473 ../wiki.php:5480
  -#: ../wikilib.php:1514
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5456 ../wiki.php:5463
  +#: ../wikilib.php:1540
   msgid "here"
   msgstr ""
   
  @@ -425,7 +642,7 @@
   msgid "Case-sensitive searching"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:77 ../wikilib.php:2873 ../wikilib.php:2935
  +#: ../plugin/FullSearch.php:77 ../wikilib.php:2906 ../wikilib.php:2968
   msgid "Go"
   msgstr ""
   
  @@ -434,11 +651,19 @@
   msgstr ""
   
   # ../wikilib.php:1483
  -#: ../plugin/FullSearch.php:144 ../wikilib.php:2894
  +#: ../plugin/FullSearch.php:144 ../wikilib.php:2927
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "Expression de recherche \"%s\" invalide"
   
  +#: ../plugin/FullSearch.php:260
  +msgid " match"
  +msgstr ""
  +
  +#: ../plugin/FullSearch.php:260
  +msgid " matches"
  +msgstr ""
  +
   # ../plugin/TwinPages.php:20
   #: ../plugin/Gallery.php:245 ../plugin/UploadedFiles.php:287
   msgid "No files found"
  @@ -455,8 +680,8 @@
   msgstr ""
   
   # ../wikilib.php:769
  -#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1570
  -#: ../wikilib.php:1735
  +#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1596
  +#: ../wikilib.php:1762 ../wikilib.php:1769
   #, c-format
   msgid "Go back or return to %s"
   msgstr "Revenir en arri?re ou retourner ? %s"
  @@ -470,6 +695,10 @@
   msgid "Comments is added"
   msgstr ""
   
  +#: ../plugin/html2pdf.php:30
  +msgid "The TCPDF class not found!"
  +msgstr ""
  +
   #: ../plugin/ImportUrl.php:132
   msgid "Import URL"
   msgstr ""
  @@ -492,12 +721,12 @@
   msgstr ""
   
   # ../locale/dummy.php:7
  -#: ../plugin/Info.php:45 ../plugin/RecentChanges.php:107
  +#: ../plugin/Info.php:45 ../plugin/RecentChanges.php:120
   msgid "Changes"
   msgstr ""
   
   # ../wikilib.php:734
  -#: ../plugin/Info.php:46 ../plugin/RecentChanges.php:107
  +#: ../plugin/Info.php:46 ../plugin/RecentChanges.php:120
   msgid "Editor"
   msgstr ""
   
  @@ -532,11 +761,11 @@
   msgid "%s min ago"
   msgstr ""
   
  -#: ../plugin/Info.php:209 ../plugin/rename.php:80
  +#: ../plugin/Info.php:215 ../plugin/rename.php:80
   msgid "show only"
   msgstr ""
   
  -#: ../plugin/Info.php:213
  +#: ../plugin/Info.php:219
   msgid "purge"
   msgstr ""
   
  @@ -588,720 +817,106 @@
   msgid "Unselect all"
   msgstr ""
   
  -#: ../plugin/Keywords.php:430
  -msgid "Suggest new Keywords"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:439
  -msgid "select language"
  -msgstr ""
  -
  -# ../wiki.php:3009
  -#: ../plugin/Keywords.php:458
  -msgid "You are not able to add keywords."
  -msgstr ""
  -
  -# ../wikilib.php:814
  -#: ../plugin/Keywords.php:472
  -#, c-format
  -msgid "%s is not found."
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:588
  -msgid "Common words are updated"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:635
  -#, c-format
  -msgid "Keywords for %s are updated"
  -msgstr ""
  -
  -# ../plugin/quicklinks.php:38
  -#: ../plugin/Keywords.php:661
  -msgid "Keywords are updated"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:663
  -msgid "There are no changes found"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:676
  -msgid "Update with these Keywords"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:696 ../plugin/Keywords.php:700
  -msgid "alphabetically"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:697
  -msgid "by frequency"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:699
  -msgid "by size"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:705
  -#, c-format
  -msgid "Keywords list %s (or %s)"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:710
  -#, c-format
  -msgid "Select keywords for %s"
  -msgstr ""
  -
  -# ../wikilib.php:672 ../wikilib.php:1472
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1391 ../wikilib.php:2881
  -msgid "Use more specific text"
  -msgstr "Utiliser un texte plus sp?cifique"
  -
  -#: ../plugin/LikePages.php:109
  -msgid "These pages share a similar word..."
  -msgstr ""
  -
  -#: ../plugin/LikePages.php:123
  -msgid "These pages share an initial or final title word..."
  -msgstr ""
  -
  -#: ../plugin/LikePages.php:143
  -msgid "If you can't find this page, "
  -msgstr ""
  -
  -# ../plugin/man_get.php:23
  -#: ../plugin/LikePages.php:148
  -msgid "No similar pages found"
  -msgstr ""
  -
  -#: ../plugin/LikePages.php:150
  -msgid "You are strongly recommened to find it in MetaWikis. "
  -msgstr ""
  -
  -#: ../plugin/LikePages.php:153
  -#, c-format
  -msgid "Like \"%s\""
  -msgstr ""
  -
  -#: ../plugin/LikePages.php:156
  -msgid "Search all MetaWikis"
  -msgstr ""
  -
  -#: ../plugin/LikePages.php:157
  -msgid "Slow Slow"
  -msgstr ""
  -
  -# ../plugin/man_get.php:23
  -#: ../plugin/Navigation.php:19
  -msgid "No Index page found"
  -msgstr ""
  -
  -# ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
  -#: ../plugin/OeKaki.php:36
  -msgid "Draw a new picture"
  -msgstr ""
  -
  -# ../plugin/OeKaki.php:118
  -#: ../plugin/OeKaki.php:118
  -msgid "Create new picture"
  -msgstr "Cr?er un nouveau dessin"
  -
  -# ../plugin/OeKaki.php:125
  -#: ../plugin/OeKaki.php:127
  -msgid "Edit Image"
  -msgstr "?diter l'image"
  -
  -#: ../plugin/PluginInfo.php:29
  -#, c-format
  -msgid "Total %s plugin activated."
  -msgstr ""
  -
  -#: ../plugin/PluginInfo.php:34
  -#, c-format
  -msgid "%s is internal plugin."
  -msgstr ""
  -
  -#: ../plugin/PluginInfo.php:36
  -#, c-format
  -msgid "%s plugin is not found."
  -msgstr ""
  -
  -#: ../plugin/PluginInfo.php:50 ../plugin/admin.php:136
  -msgid "Description"
  -msgstr ""
  -
  -#: ../plugin/PluginInfo.php:54
  -msgid "Version"
  -msgstr ""
  -
  -#: ../plugin/PluginInfo.php:56 ../plugin/admin.php:139
  -msgid "Author"
  -msgstr ""
  -
  -#: ../plugin/PluginInfo.php:58 ../plugin/admin.php:141
  -msgid "License"
  -msgstr ""
  -
  -# ../plugin/VisualTour.php:59
  -#: ../plugin/PluginInfo.php:60 ../plugin/admin.php:143
  -msgid "Depend"
  -msgstr ""
  -
  -#: ../plugin/PluginInfo.php:64 ../plugin/admin.php:147
  -msgid "URL"
  -msgstr ""
  -
  -#: ../plugin/Rating.php:58
  -msgid "Awful!"
  -msgstr ""
  -
  -#: ../plugin/Rating.php:59
  -msgid "Not the worst ever."
  -msgstr ""
  -
  -#: ../plugin/Rating.php:60
  -msgid "Not bad!"
  -msgstr ""
  -
  -#: ../plugin/Rating.php:61
  -msgid "Useful!"
  -msgstr ""
  -
  -#: ../plugin/Rating.php:62
  -msgid "Very Gooood!"
  -msgstr ""
  -
  -# ../plugin/Vote.php:66 ../plugin/security/needtologin.php:25
  -# ../plugin/security/needtologin.php:35
  -#: ../plugin/Rating.php:84 ../plugin/Vote.php:67
  -#: ../plugin/security/community.php:26 ../plugin/security/community.php:36
  -#: ../plugin/security/community.php:46 ../plugin/security/community.php:61
  -#: ../plugin/security/mustlogin.php:29 ../plugin/security/mustlogin.php:40
  -#: ../plugin/security/mustlogin.php:51 ../plugin/security/mustlogin.php:67
  -#: ../plugin/security/needtologin.php:29 ../plugin/security/needtologin.php:40
  -#: ../plugin/security/needtologin.php:51 ../plugin/security/userbased.php:62
  -msgid "Please Login or make your ID on this Wiki ;)"
  -msgstr "Merci de vous connecter ou de construire un ID sur ce Wiki ;)"
  -
  -#: ../plugin/Rating.php:188
  -msgid "Invalid rating request !"
  -msgstr ""
  -
  -# ../plugin/Vote.php:109
  -#: ../plugin/Rating.php:203
  -msgid "Rating successfully !"
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:28
  -#, c-format
  -msgid "%d minute ago"
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:30
  -#, c-format
  -msgid "%d hours ago"
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:32
  -#, c-format
  -msgid "%d days ago"
  -msgstr ""
  -
  -# ../locale/dummy.php:7
  -#: ../plugin/RecentChanges.php:106
  -msgid "Change Date"
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:109
  -msgid "Hits"
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:155
  -msgid "Show changes for "
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:160
  -msgid "days ago"
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:265
  -msgid "set bookmark"
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:270
  -msgid "Bookmark"
  -msgstr ""
  -
  -# ../locale/dummy.php:7
  -#: ../plugin/RecentChanges.php:338
  -#, c-format
  -msgid "%s changes"
  -msgstr ""
  -
  -# ../locale/dummy.php:3
  -#: ../plugin/RecentChanges.php:352
  -msgid "Recent Changes"
  -msgstr "ChangementsR?cents"
  -
  -#: ../plugin/SWFUpload.php:136
  -msgid "Files..."
  -msgstr ""
  -
  -#: ../plugin/SWFUpload.php:137 ../plugin/UploadFile.php:363
  -msgid "Upload"
  -msgstr ""
  -
  -#: ../plugin/SWFUpload.php:138
  -msgid "Cancel All files"
  -msgstr ""
  -
  -# ../plugin/man_get.php:23
  -#: ../plugin/SlideShow.php:28
  -msgid "No page found"
  -msgstr ""
  -
  -#: ../plugin/SlideShow.php:102
  -msgid "Start:"
  -msgstr ""
  -
  -#: ../plugin/SlideShow.php:111
  -msgid "End:"
  -msgstr ""
  -
  -#: ../plugin/SlideShow.php:121 ../plugin/pageview.php:75
  -msgid "Next:"
  -msgstr ""
  -
  -# ../wikilib.php:482
  -#: ../plugin/SlideShow.php:131
  -msgid "Prev:"
  -msgstr ""
  -
  -#: ../plugin/SlideShow.php:138
  -msgid "Return"
  -msgstr ""
  -
  -# ../wikilib.php:484
  -#: ../plugin/SystemInfo.php:16
  -msgid "Number of Pages"
  -msgstr ""
  -
  -#: ../plugin/SystemInfo.php:17
  -msgid "HTTP Server Version"
  -msgstr ""
  -
  -#: ../plugin/SystemInfo.php:18
  -msgid "MoniWiki Version"
  -msgstr ""
  -
  -#: ../plugin/SystemInfo.php:19
  -msgid "PHP Version"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:57
  -msgid "BackLinks"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:61
  -msgid "Keywords"
  -msgstr ""
  -
  -# ../plugin/minilogin.php:30
  -#: ../plugin/Tour.php:70
  -#, c-format
  -msgid " from %s"
  -msgstr ""
  -
  -# ../plugin/minilogin.php:30
  -#: ../plugin/Tour.php:73
  -#, c-format
  -msgid "%s Tour %s"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:121
  -msgid "links"
  -msgstr ""
  -
  -# ../plugin/VisualTour.php:59
  -#: ../plugin/Tour.php:123
  -msgid "deeper"
  -msgstr ""
  -
  -# ../plugin/minilogin.php:30
  -#: ../plugin/Tour.php:124
  -#, c-format
  -msgid "More %s or more %s"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:139
  -#, c-format
  -msgid "Total %d related keywords"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:142
  -#, c-format
  -msgid "Total %d related pages"
  -msgstr ""
  -
  -# ../plugin/TwinPages.php:13
  -#: ../plugin/TwinPages.php:13
  -#, c-format
  -msgid "TwinPages of %s"
  -msgstr "TwinPages de %s"
  -
  -# ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../plugin/TwinPages.php:19 ../wiki.php:5459
  -msgid "See [TwinPages]: "
  -msgstr "Voir [TwinPages]: "
  -
  -# ../plugin/TwinPages.php:20
  -#: ../plugin/TwinPages.php:21
  -msgid "No TwinPages found."
  -msgstr "Aucune TwinPages trouv?"
  -
  -# ../wikilib.php:519
  -#: ../plugin/UploadFile.php:149 ../plugin/UploadFile.php:163
  -#, c-format
  -msgid "The %s type of %s is not allowed to upload"
  -msgstr ""
  -
  -# ../wikilib.php:519
  -#: ../plugin/UploadFile.php:165
  -#, c-format
  -msgid "%s is not allowed to upload"
  -msgstr "%s n'est pas une action valide"
  -
  -#: ../plugin/UploadFile.php:220
  -#, c-format
  -msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:253
  -msgid "Please check your php.ini setting"
  -msgstr ""
  -
  -# ../wikilib.php:887
  -#: ../plugin/UploadFile.php:263
  -#, c-format
  -msgid "File \"%s\" is uploaded successfully"
  -msgstr ""
  -
  -# ../wikilib.php:887
  -#: ../plugin/UploadFile.php:308
  -msgid "Files are uploaded successfully"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:343
  -msgid "Multi upload form"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:352
  -msgid "Replace original file"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:353
  -msgid "Rename if it already exist"
  -msgstr ""
  -
  -# ../plugin/rename.php:27
  -#: ../plugin/UploadFile.php:358 ../plugin/rename.php:69
  -msgid "Rename"
  -msgstr "Renommer"
  -
  -# ../plugin/minilogin.php:30
  -#: ../plugin/UploadFile.php:366
  -#, c-format
  -msgid "or %s."
  -msgstr "ou %s"
  -
  -#: ../plugin/UploadFile.php:366
  -msgid "Multiple Upload files"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:374 ../plugin/UploadForm.php:179
  -msgid "Upload files"
  -msgstr ""
  -
  -#: ../plugin/UploadForm.php:17
  -msgid "Successfully Uploaded"
  -msgstr ""
  -
  -#: ../plugin/UploadForm.php:18
  -msgid "Choose File"
  -msgstr ""
  -
  -#: ../plugin/UploadForm.php:177
  -msgid "add files"
  -msgstr ""
  -
  -#: ../plugin/UploadForm.php:178
  -msgid "add a file"
  -msgstr ""
  -
  -#: ../plugin/UploadForm.php:180
  -msgid "Reset"
  -msgstr ""
  -
  -#: ../plugin/UploadForm.php:181
  -msgid "Attachments"
  -msgstr ""
  -
  -# ../plugin/rename.php:27
  -#: ../plugin/UploadedFiles.php:301
  -msgid "File name"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:302
  -msgid "Size"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:353
  -msgid "Next page &raquo;"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:355
  -msgid "&laquo; First page"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:447
  -#, c-format
  -msgid "Total %d files"
  -msgstr ""
  -
  -# ../plugin/rename.php:36
  -#: ../plugin/UploadedFiles.php:452 ../plugin/rcsimport.php:32
  -#: ../plugin/rcsimport.php:88 ../plugin/rename.php:77 ../plugin/revert.php:82
  -#: ../plugin/userinfo.php:37 ../wikilib.php:1230 ../wikilib.php:2192
  -msgid "Password"
  -msgstr "Mot de passe"
  -
  -# ../wikilib.php:550
  -#: ../plugin/UploadedFiles.php:453 ../wikilib.php:1208
  -msgid "Delete selected files"
  -msgstr "Effacer les fichiers s?lectionn?s"
  -
  -# ../plugin/VisualTour.php:55
  -#: ../plugin/VisualTour.php:133
  -msgid "Normal"
  -msgstr ""
  -
  -# ../plugin/VisualTour.php:57
  -#: ../plugin/VisualTour.php:135
  -msgid "Wider"
  -msgstr "Plus large"
  -
  -# ../plugin/VisualTour.php:59
  -#: ../plugin/VisualTour.php:137
  -msgid "Deeper"
  -msgstr "Plus profond"
  -
  -# ../plugin/Vote.php:109
  -#: ../plugin/Vote.php:113
  -msgid "Voted successfully"
  -msgstr "Vote r?ussi"
  -
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2631
  -msgid "Others"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:15
  -msgid "ACL is not enabled on this Wiki"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:21
  -msgid "Your ACL Info"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:23
  -msgid "You are wiki owner"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:25
  -msgid "You are wiki master"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:27
  -msgid "Allowed actions"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:32
  -msgid "Denied actions"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:38
  -msgid "Protected actions"
  -msgstr ""
  -
  -#: ../plugin/admin.php:191
  -msgid "Enabled plugins"
  -msgstr ""
  -
  -#: ../plugin/admin.php:193
  -msgid "Disabled plugins"
  -msgstr ""
  -
  -#: ../plugin/admin.php:201
  -msgid "Enabled processors"
  -msgstr ""
  -
  -#: ../plugin/admin.php:203
  -msgid "Disabled processors"
  -msgstr ""
  -
  -#: ../plugin/admin.php:206
  -msgid "Plugin/Processor settings are updated"
  -msgstr ""
  -
  -#: ../plugin/admin.php:212
  -msgid "Enable/disable plugins and processors"
  -msgstr ""
  -
  -# ../locale/dummy.php:7
  -#: ../plugin/atom.php:64 ../plugin/rss_rc.php:62
  -msgid "show changes"
  -msgstr ""
  -
  -# ../wikilib.php:887
  -#: ../plugin/backup.php:42
  -msgid "Your wiki is backuped successfully"
  -msgstr ""
  -
  -#: ../plugin/backup.php:49
  -msgid "Backup failed !"
  -msgstr ""
  -
  -# ../plugin/backup.php:46
  -#: ../plugin/backup.php:54
  -msgid "Did you want to Backup your wiki ?"
  -msgstr "Voulez vous faire une sauvegarde de votre wiki ?"
  -
  -#: ../plugin/bbs.php:493
  -msgid "This bbs does not exists yet. Please save this page first"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:617
  -msgid "No"
  -msgstr ""
  -
  -# ../locale/dummy.php:6 ../wiki.php:2553
  -#: ../plugin/bbs.php:626
  -msgid "Edit"
  -msgstr ""
  -
  -# ../locale/dummy.php:5
  -#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1231
  -msgid "Delete"
  +#: ../plugin/Keywords.php:430
  +msgid "Suggest new Keywords"
   msgstr ""
   
  -#: ../plugin/bbs.php:657
  -msgid "Please check article numbers."
  +#: ../plugin/Keywords.php:439
  +msgid "select language"
   msgstr ""
   
  -#: ../plugin/bbs.php:737
  -msgid "More"
  +# ../wiki.php:3009
  +#: ../plugin/Keywords.php:458
  +msgid "You are not able to add keywords."
   msgstr ""
   
  -#: ../plugin/bbs.php:782
  -msgid "New"
  +# ../wikilib.php:814
  +#: ../plugin/Keywords.php:472
  +#, c-format
  +msgid "%s is not found."
   msgstr ""
   
  -# ../plugin/rename.php:27
  -#: ../plugin/bbs.php:784
  -msgid "Read"
  -msgstr "Renommer"
  +#: ../plugin/Keywords.php:588
  +msgid "Common words are updated"
  +msgstr ""
   
  -#: ../plugin/bbs.php:800
  +#: ../plugin/Keywords.php:635
   #, c-format
  -msgid "Total %s articles."
  +msgid "Keywords for %s are updated"
   msgstr ""
   
  -# ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
  -# c-format
  -#: ../plugin/bbs.php:836
  -#, c-format
  -msgid "Your IP address is not allowed to %s at this BBS"
  +# ../plugin/quicklinks.php:38
  +#: ../plugin/Keywords.php:661
  +msgid "Keywords are updated"
   msgstr ""
   
  -#: ../plugin/bbs.php:890
  -msgid "Successfully deleted."
  +#: ../plugin/Keywords.php:663
  +msgid "There are no changes found"
   msgstr ""
   
  -#: ../plugin/bbs.php:922
  -msgid "Fail to post comment."
  +#: ../plugin/Keywords.php:676
  +msgid "Update with these Keywords"
   msgstr ""
   
  -# ../wikilib.php:540
  -#: ../plugin/bbs.php:932
  -#, c-format
  -msgid "The article %s will be deleted."
  +#: ../plugin/Keywords.php:696 ../plugin/Keywords.php:700
  +msgid "alphabetically"
   msgstr ""
   
  -#: ../plugin/bbs.php:974
  -msgid "Invalid HomePage address."
  +#: ../plugin/Keywords.php:697
  +msgid "by frequency"
   msgstr ""
   
  -#: ../plugin/bbs.php:987
  -msgid "No Name error."
  +#: ../plugin/Keywords.php:699
  +msgid "by size"
   msgstr ""
   
  -#: ../plugin/bbs.php:997
  -msgid "No Subject error."
  +#: ../plugin/Keywords.php:705
  +#, c-format
  +msgid "Keywords list %s (or %s)"
   msgstr ""
   
  -# ../plugin/Vote.php:109
  -#: ../plugin/bbs.php:1025
  -msgid "New post added successfully"
  +#: ../plugin/Keywords.php:710
  +#, c-format
  +msgid "Select keywords for %s"
   msgstr ""
   
  -# ../wiki.php:3024
  -#: ../plugin/bookmark.php:33
  -#, fuzzy
  -msgid "Invalid bookmark!"
  -msgstr "Merci d'entrer un mot de passe valide"
  +# ../wikilib.php:672 ../wikilib.php:1472
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1417 ../wikilib.php:2914
  +msgid "Use more specific text"
  +msgstr "Utiliser un texte plus sp?cifique"
   
  -#: ../plugin/cacheadmin.php:105
  -msgid "You are not WikiMaster!!"
  +#: ../plugin/LikePages.php:109
  +msgid "These pages share a similar word..."
   msgstr ""
   
  -#: ../plugin/cacheadmin.php:120
  -msgid "Clear cache dirs"
  +#: ../plugin/LikePages.php:123
  +msgid "These pages share an initial or final title word..."
   msgstr ""
   
  -#: ../plugin/chat.php:36
  -msgid "No messages"
  +#: ../plugin/LikePages.php:143
  +msgid "If you can't find this page, "
   msgstr ""
   
  -#: ../plugin/chmod.php:18
  -#, c-format
  -msgid "Permission of \"%s\" changed !"
  +# ../plugin/man_get.php:23
  +#: ../plugin/LikePages.php:148
  +msgid "No similar pages found"
   msgstr ""
   
  -# ../wiki.php:3021
  -#: ../plugin/chmod.php:24
  -#, c-format
  -msgid "Fail to chmod \"%s\" !"
  -msgstr "Impossible de pouvoir \"%s\" !"
  +#: ../plugin/LikePages.php:150
  +msgid "You are strongly recommened to find it in MetaWikis. "
  +msgstr ""
   
  -#: ../plugin/chmod.php:35
  +#: ../plugin/LikePages.php:153
   #, c-format
  -msgid "Change permission of \"%s\""
  +msgid "Like \"%s\""
   msgstr ""
   
  -# ../plugin/css.php:29 ../plugin/css.php:37
  -#: ../plugin/css.php:33 ../plugin/css.php:41
  -msgid "Back to UserPreferences"
  -msgstr "Retour ? UserPreferences"
  -
  -#: ../plugin/css.php:67
  -msgid "CSS disabled !"
  +#: ../plugin/LikePages.php:156
  +msgid "Search all MetaWikis"
   msgstr ""
   
  -# ../plugin/format.php:16
  -#: ../plugin/format.php:17
  -msgid "It is a XML format !"
  -msgstr "C'est un format XML !"
  -
  -#: ../plugin/html2pdf.php:30
  -msgid "The TCPDF class not found!"
  +#: ../plugin/LikePages.php:157
  +msgid "Slow Slow"
   msgstr ""
   
   # ../plugin/login.php:24
  @@ -1345,7 +960,7 @@
   msgstr ""
   
   # ../plugin/minilogin.php:22 ../wikilib.php:1076
  -#: ../plugin/minilogin.php:18 ../wikilib.php:2273
  +#: ../plugin/minilogin.php:18 ../wikilib.php:2306
   msgid "Login or Join"
   msgstr "Se connecter ou se joindre ?"
   
  @@ -1371,15 +986,20 @@
   msgstr ""
   
   # ../wiki.php:3009
  -#: ../plugin/msgtrans.php:23 ../plugin/userinfo.php:86
  +#: ../plugin/msgtrans.php:39 ../plugin/userinfo.php:86
   #, c-format
   msgid "You are not allowed to \"%s\" !"
   msgstr ""
   
  -#: ../plugin/msgtrans.php:143
  +#: ../plugin/msgtrans.php:179
   msgid "Local translation files are successfully translated !\n"
   msgstr ""
   
  +# ../plugin/man_get.php:23
  +#: ../plugin/Navigation.php:19
  +msgid "No Index page found"
  +msgstr ""
  +
   # ../plugin/OeKaki.php:118
   #: ../plugin/new.php:13 ../plugin/new.php:28
   msgid "Create a new page"
  @@ -1394,6 +1014,21 @@
   msgid "Normalize this page name"
   msgstr ""
   
  +# ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
  +#: ../plugin/OeKaki.php:36
  +msgid "Draw a new picture"
  +msgstr ""
  +
  +# ../plugin/OeKaki.php:118
  +#: ../plugin/OeKaki.php:118
  +msgid "Create new picture"
  +msgstr "Cr?er un nouveau dessin"
  +
  +# ../plugin/OeKaki.php:125
  +#: ../plugin/OeKaki.php:127
  +msgid "Edit Image"
  +msgstr "?diter l'image"
  +
   #: ../plugin/pagelist.php:117 ../plugin/pagelist.php:134
   #, c-format
   msgid "[%sh %sm ago]"
  @@ -1403,6 +1038,29 @@
   msgid "First:"
   msgstr ""
   
  +#: ../plugin/pageview.php:75 ../plugin/SlideShow.php:121
  +msgid "Next:"
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:29
  +#, c-format
  +msgid "Total %s plugin activated."
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:34
  +#, c-format
  +msgid "%s is internal plugin."
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:36
  +#, c-format
  +msgid "%s plugin is not found."
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:54
  +msgid "Version"
  +msgstr ""
  +
   #: ../plugin/print.php:24
   #, c-format
   msgid "Retrieved from %s"
  @@ -1422,7 +1080,7 @@
   msgid "Save Changes"
   msgstr ""
   
  -#: ../plugin/processor/monimarkup.php:507 ../wiki.php:3883
  +#: ../plugin/processor/monimarkup.php:507 ../wiki.php:3858
   msgid "edit"
   msgstr ""
   
  @@ -1457,12 +1115,66 @@
   msgid "Do you want to customize your quicklinks ?"
   msgstr "Voulez vous mettre ? jour vos liens rapides ?"
   
  +#: ../plugin/Rating.php:58
  +msgid "Awful!"
  +msgstr ""
  +
  +#: ../plugin/Rating.php:59
  +msgid "Not the worst ever."
  +msgstr ""
  +
  +#: ../plugin/Rating.php:60
  +msgid "Not bad!"
  +msgstr ""
  +
  +#: ../plugin/Rating.php:61
  +msgid "Useful!"
  +msgstr ""
  +
  +#: ../plugin/Rating.php:62
  +msgid "Very Gooood!"
  +msgstr ""
  +
  +# ../plugin/Vote.php:66 ../plugin/security/needtologin.php:25
  +# ../plugin/security/needtologin.php:35
  +#: ../plugin/Rating.php:84 ../plugin/security/community.php:26
  +#: ../plugin/security/community.php:36 ../plugin/security/community.php:46
  +#: ../plugin/security/community.php:61 ../plugin/security/mustlogin.php:29
  +#: ../plugin/security/mustlogin.php:40 ../plugin/security/mustlogin.php:51
  +#: ../plugin/security/mustlogin.php:67 ../plugin/security/needtologin.php:29
  +#: ../plugin/security/needtologin.php:40 ../plugin/security/needtologin.php:51
  +#: ../plugin/security/userbased.php:62 ../plugin/Vote.php:67
  +msgid "Please Login or make your ID on this Wiki ;)"
  +msgstr "Merci de vous connecter ou de construire un ID sur ce Wiki ;)"
  +
  +#: ../plugin/Rating.php:188
  +msgid "Invalid rating request !"
  +msgstr ""
  +
  +# ../plugin/Vote.php:109
  +#: ../plugin/Rating.php:203
  +msgid "Rating successfully !"
  +msgstr ""
  +
   # ../plugin/Blog.php:178
   #: ../plugin/rawblog.php:63 ../plugin/rawblog.php:73
   #, c-format
   msgid "Delete Blog entry \"%s\""
   msgstr ""
   
  +# ../plugin/rename.php:36
  +#: ../plugin/rcsimport.php:32 ../plugin/rcsimport.php:88
  +#: ../plugin/rename.php:77 ../plugin/revert.php:82
  +#: ../plugin/UploadedFiles.php:452 ../plugin/userinfo.php:37
  +#: ../wikilib.php:1256 ../wikilib.php:2225
  +msgid "Password"
  +msgstr "Mot de passe"
  +
  +# ../plugin/rename.php:27
  +#: ../plugin/rcsimport.php:76
  +msgid "Page name"
  +msgstr ""
  +
   # ../wikilib.php:803
   #: ../plugin/rcs.php:13
   #, c-format
  @@ -1490,11 +1202,6 @@
   msgid "Only WikiMaster can execute rcs"
   msgstr ""
   
  -# ../plugin/rename.php:27
  -#: ../plugin/rcsimport.php:76
  -msgid "Page name"
  -msgstr ""
  -
   #: ../plugin/rcspurge.php:24
   msgid "Invalid rcspurge range"
   msgstr ""
  @@ -1516,6 +1223,57 @@
   msgid "BlogChanges at %s"
   msgstr "ModificationsBlog at %s"
   
  +#: ../plugin/RecentChanges.php:41
  +#, c-format
  +msgid "%d minute ago"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:43
  +#, c-format
  +msgid "%d hours ago"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:45
  +#, c-format
  +msgid "%d days ago"
  +msgstr ""
  +
  +# ../locale/dummy.php:7
  +#: ../plugin/RecentChanges.php:119
  +msgid "Change Date"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:122
  +msgid "Hits"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:168
  +msgid "Show changes for "
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:173
  +msgid "days ago"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:278
  +msgid "set bookmark"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:283
  +msgid "Bookmark"
  +msgstr ""
  +
  +# ../locale/dummy.php:7
  +#: ../plugin/RecentChanges.php:360
  +#, c-format
  +msgid "%s changes"
  +msgstr ""
  +
  +# ../locale/dummy.php:3
  +#: ../plugin/RecentChanges.php:374
  +msgid "Recent Changes"
  +msgstr "ChangementsR?cents"
  +
   #: ../plugin/referer.php:139
   msgid "Referer history"
   msgstr ""
  @@ -1559,6 +1317,11 @@
   msgid "New name:"
   msgstr ""
   
  +# ../plugin/rename.php:27
  +#: ../plugin/rename.php:69 ../plugin/UploadFile.php:421
  +msgid "Rename"
  +msgstr "Renommer"
  +
   #: ../plugin/rename.php:74
   msgid "Rename and fix Backlinks"
   msgstr ""
  @@ -1569,7 +1332,7 @@
   msgstr "Seulement le WikiMaster peut renommer cette page"
   
   # ../plugin/rename.php:39 ../wikilib.php:588
  -#: ../plugin/rename.php:79 ../wikilib.php:1276
  +#: ../plugin/rename.php:79 ../wikilib.php:1302
   msgid "with revision history"
   msgstr "avec l'historique de r?vision"
   
  @@ -1617,7 +1380,7 @@
   msgid "Select a tarball file to restore"
   msgstr ""
   
  -#: ../plugin/revert.php:23 ../wiki.php:5475
  +#: ../plugin/revert.php:23 ../wiki.php:5458
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr ""
  @@ -1645,7 +1408,7 @@
   msgid "Are you really want to revert this page ?"
   msgstr ""
   
  -#: ../plugin/revert.php:74 ../wikilib.php:1045
  +#: ../plugin/revert.php:74 ../wikilib.php:1071
   msgid "Summary"
   msgstr ""
   
  @@ -1781,6 +1544,28 @@
   msgid "Trackback sent"
   msgstr "Trackback envoy?"
   
  +# ../plugin/man_get.php:23
  +#: ../plugin/SlideShow.php:28
  +msgid "No page found"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:102
  +msgid "Start:"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:111
  +msgid "End:"
  +msgstr ""
  +
  +# ../wikilib.php:482
  +#: ../plugin/SlideShow.php:131
  +msgid "Prev:"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:138
  +msgid "Return"
  +msgstr ""
  +
   #: ../plugin/subscribe.php:24 ../plugin/subscribe.php:28
   msgid "You did'nt subscribed any pages yet."
   msgstr ""
  @@ -1839,6 +1624,35 @@
   msgid "Subscribed pages"
   msgstr ""
   
  +#: ../plugin/SWFUpload.php:136
  +msgid "Files..."
  +msgstr ""
  +
  +#: ../plugin/SWFUpload.php:137 ../plugin/UploadFile.php:426
  +msgid "Upload"
  +msgstr ""
  +
  +#: ../plugin/SWFUpload.php:138
  +msgid "Cancel All files"
  +msgstr ""
  +
  +# ../wikilib.php:484
  +#: ../plugin/SystemInfo.php:16
  +msgid "Number of Pages"
  +msgstr ""
  +
  +#: ../plugin/SystemInfo.php:17
  +msgid "HTTP Server Version"
  +msgstr ""
  +
  +#: ../plugin/SystemInfo.php:18
  +msgid "MoniWiki Version"
  +msgstr ""
  +
  +#: ../plugin/SystemInfo.php:19
  +msgid "PHP Version"
  +msgstr ""
  +
   # ../plugin/theme.php:24
   #: ../plugin/theme.php:29
   msgid "Theme cleared. Goto UserPreferences."
  @@ -1866,6 +1680,51 @@
   msgid "Invalid use of ticket"
   msgstr ""
   
  +#: ../plugin/Tour.php:57
  +msgid "BackLinks"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:61
  +msgid "Keywords"
  +msgstr ""
  +
  +# ../plugin/minilogin.php:30
  +#: ../plugin/Tour.php:70
  +#, c-format
  +msgid " from %s"
  +msgstr ""
  +
  +# ../plugin/minilogin.php:30
  +#: ../plugin/Tour.php:73
  +#, c-format
  +msgid "%s Tour %s"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:121
  +msgid "links"
  +msgstr ""
  +
  +# ../plugin/VisualTour.php:59
  +#: ../plugin/Tour.php:123
  +msgid "deeper"
  +msgstr ""
  +
  +# ../plugin/minilogin.php:30
  +#: ../plugin/Tour.php:124
  +#, c-format
  +msgid "More %s or more %s"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:139
  +#, c-format
  +msgid "Total %d related keywords"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:142
  +#, c-format
  +msgid "Total %d related pages"
  +msgstr ""
  +
   # ../plugin/trackback.php:54
   #: ../plugin/trackback.php:53
   msgid "TrackBack is not activated !"
  @@ -1898,6 +1757,166 @@
   msgid "No TrackBack entry found for %s"
   msgstr "Aucune entr?e de TrackBack d?tect? pour %s"
   
  +# ../plugin/TwinPages.php:13
  +#: ../plugin/TwinPages.php:13
  +#, c-format
  +msgid "TwinPages of %s"
  +msgstr "TwinPages de %s"
  +
  +# ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  +#: ../plugin/TwinPages.php:19 ../wiki.php:5442
  +msgid "See [TwinPages]: "
  +msgstr "Voir [TwinPages]: "
  +
  +# ../plugin/TwinPages.php:20
  +#: ../plugin/TwinPages.php:21
  +msgid "No TwinPages found."
  +msgstr "Aucune TwinPages trouv?"
  +
  +# ../plugin/rename.php:27
  +#: ../plugin/UploadedFiles.php:301
  +msgid "File name"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:302
  +msgid "Size"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:353
  +msgid "Next page &raquo;"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:355
  +msgid "&laquo; First page"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:447
  +#, c-format
  +msgid "Total %d files"
  +msgstr ""
  +
  +# ../wikilib.php:550
  +#: ../plugin/UploadedFiles.php:453 ../wikilib.php:1234
  +msgid "Delete selected files"
  +msgstr "Effacer les fichiers s?lectionn?s"
  +
  +#: ../plugin/UploadFile.php:11
  +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:13
  +msgid ""
  +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in "
  +"the HTML form"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:15
  +msgid "The uploaded file was only partially uploaded"
  +msgstr ""
  +
  +# ../wikilib.php:557 ../wikilib.php:559
  +#: ../plugin/UploadFile.php:17
  +msgid "No file was uploaded"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:19
  +msgid "Missing a temporary folder"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:21
  +msgid "Failed to write file to disk"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:23
  +msgid "File upload stopped by extension"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:25
  +msgid "Unknown upload error"
  +msgstr ""
  +
  +# ../wikilib.php:519
  +#: ../plugin/UploadFile.php:180 ../plugin/UploadFile.php:194
  +#, c-format
  +msgid "The %s type of %s is not allowed to upload"
  +msgstr ""
  +
  +# ../wikilib.php:519
  +#: ../plugin/UploadFile.php:196
  +#, c-format
  +msgid "%s is not allowed to upload"
  +msgstr "%s n'est pas une action valide"
  +
  +#: ../plugin/UploadFile.php:251
  +#, c-format
  +msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:268
  +msgid "ERROR:"
  +msgstr ""
  +
  +# ../wikilib.php:887
  +#: ../plugin/UploadFile.php:300
  +#, c-format
  +msgid "File \"%s\" is uploaded successfully"
  +msgstr ""
  +
  +# ../wikilib.php:887
  +#: ../plugin/UploadFile.php:366
  +msgid "Files are uploaded successfully"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:402
  +msgid "Multi upload form"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:415
  +msgid "Replace original file"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:416
  +msgid "Rename if it already exist"
  +msgstr ""
  +
  +# ../plugin/minilogin.php:30
  +#: ../plugin/UploadFile.php:429
  +#, c-format
  +msgid "or %s."
  +msgstr "ou %s"
  +
  +#: ../plugin/UploadFile.php:429
  +msgid "Multiple Upload files"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:437 ../plugin/UploadForm.php:222
  +msgid "Upload files"
  +msgstr ""
  +
  +#: ../plugin/UploadForm.php:17
  +msgid "Successfully Uploaded"
  +msgstr ""
  +
  +#: ../plugin/UploadForm.php:18
  +msgid "Choose File"
  +msgstr ""
  +
  +#: ../plugin/UploadForm.php:220
  +msgid "add files"
  +msgstr ""
  +
  +#: ../plugin/UploadForm.php:221
  +msgid "add a file"
  +msgstr ""
  +
  +#: ../plugin/UploadForm.php:223
  +msgid "Reset"
  +msgstr ""
  +
  +#: ../plugin/UploadForm.php:224
  +msgid "Attachments"
  +msgstr ""
  +
   #: ../plugin/userform.php:35 ../plugin/userform.php:38
   msgid "Successfully confirmed"
   msgstr ""
  @@ -1952,7 +1971,7 @@
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../plugin/userform.php:107 ../wikilib.php:2343
  +#: ../plugin/userform.php:107 ../wikilib.php:2376
   msgid "E-mail new password"
   msgstr ""
   
  @@ -2043,8 +2062,8 @@
   msgid "You are not allowed to register on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5411
  -#: ../wiki.php:5422
  +#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5394
  +#: ../wiki.php:5405
   msgid "Please contact WikiMasters"
   msgstr ""
   
  @@ -2158,6 +2177,26 @@
   msgid "User \"%s\" are deleted !"
   msgstr ""
   
  +# ../plugin/VisualTour.php:55
  +#: ../plugin/VisualTour.php:133
  +msgid "Normal"
  +msgstr ""
  +
  +# ../plugin/VisualTour.php:57
  +#: ../plugin/VisualTour.php:135
  +msgid "Wider"
  +msgstr "Plus large"
  +
  +# ../plugin/VisualTour.php:59
  +#: ../plugin/VisualTour.php:137
  +msgid "Deeper"
  +msgstr "Plus profond"
  +
  +# ../plugin/Vote.php:109
  +#: ../plugin/Vote.php:113
  +msgid "Voted successfully"
  +msgstr "Vote r?ussi"
  +
   #: ../plugin/whois.php:119
   #, c-format
   msgid "Could not connect to %s server"
  @@ -2169,165 +2208,169 @@
   msgid "Whois search result for %s"
   msgstr ""
   
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2664
  +msgid "Others"
  +msgstr ""
  +
   # ../wiki.php:850
  -#: ../wiki.php:1249
  +#: ../wiki.php:1227
   #, c-format
   msgid "Rename %s to %s"
   msgstr "Renommer %s en %s"
   
   # ../wikilib.php:803
  -#: ../wiki.php:1671
  +#: ../wiki.php:1647
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
   # ../plugin/restore.php:27
  -#: ../wiki.php:1681
  +#: ../wiki.php:1657
   msgid "File does not exist"
   msgstr "Erreur : l'archive n'existe pas"
   
   # ../plugin/restore.php:27
  -#: ../wiki.php:2057
  +#: ../wiki.php:2041
   #, c-format
   msgid "File '%s' does not exist."
   msgstr ""
   
   # ../wikilib.php:521
  -#: ../wiki.php:2947 ../wiki.php:2958 ../wiki.php:5654
  +#: ../wiki.php:2931 ../wiki.php:2942 ../wiki.php:5637
   msgid "Invalid ajax action."
   msgstr ""
   
  -#: ../wiki.php:3458
  +#: ../wiki.php:3433
   msgid "Tags:"
   msgstr ""
   
   # ../wiki.php:1824
  -#: ../wiki.php:3486
  +#: ../wiki.php:3461
   #, c-format
   msgid "See %s"
   msgstr "Voir %s"
   
   # ../wiki.php:1824
  -#: ../wiki.php:3486
  +#: ../wiki.php:3461
   #, c-format
   msgid "TwinPages"
   msgstr ""
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../wiki.php:3491
  +#: ../wiki.php:3466
   msgid "See [TwinPages]:"
   msgstr "Voir [TwinPages]: "
   
  -#: ../wiki.php:4063
  +#: ../wiki.php:4038
   msgid "Sister Sites Index"
   msgstr ""
   
   # ../locale/dummy.php:6 ../wiki.php:2553
  -#: ../wiki.php:4509 ../locale/dummy.php:6
  +#: ../wiki.php:4484 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "?ditionTexte"
   
   # ../wiki.php:2555
  -#: ../wiki.php:4511
  +#: ../wiki.php:4486
   msgid "NotEditable"
   msgstr "Pas?ditable"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wiki.php:4515 ../locale/dummy.php:6
  +#: ../wiki.php:4490 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "MontrePage"
   
   # ../locale/dummy.php:3 ../locale/dummy.php:5 ../wiki.php:2558
  -#: ../wiki.php:4516 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4491 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "TrouvePage"
   
  -#: ../wiki.php:4960
  +#: ../wiki.php:4937
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5224
  +#: ../wiki.php:5200
   msgid "Someone logged in at another place !"
   msgstr ""
   
  -#: ../wiki.php:5410
  +#: ../wiki.php:5393
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5421
  +#: ../wiki.php:5404
   msgid "You are blocked in this wiki"
   msgstr ""
   
   # ../wiki.php:2945 ../wiki.php:2948
  -#: ../wiki.php:5461 ../wiki.php:5470 ../wikilib.php:1494
  +#: ../wiki.php:5444 ../wiki.php:5453 ../wikilib.php:1520
   msgid "Create this page"
   msgstr "Cr?er cette page"
   
   # ../wikilib.php:816
  -#: ../wiki.php:5472
  +#: ../wiki.php:5455
   #, c-format
   msgid "%s has saved revisions"
   msgstr "%s est sauvegard?"
   
   # ../wiki.php:2950
  -#: ../wiki.php:5473 ../wiki.php:5480
  +#: ../wiki.php:5456 ../wiki.php:5463
   #, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr ""
   
  -#: ../wiki.php:5478
  +#: ../wiki.php:5461
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr ""
   
  -#: ../wiki.php:5485
  +#: ../wiki.php:5468
   msgid "Please try to search with another word"
   msgstr ""
   
   # ../wiki.php:2956
  -#: ../wiki.php:5497
  +#: ../wiki.php:5480
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr "%s ou alternativement, utiliser un de ces mod?les de page :\n"
   
  -#: ../wiki.php:5500
  +#: ../wiki.php:5483
   msgid "You have no templates"
   msgstr ""
   
   # ../wikilib.php:427
  -#: ../wiki.php:5502
  +#: ../wiki.php:5485
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
   
  -#: ../wiki.php:5513
  +#: ../wiki.php:5496
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
   # ../wikilib.php:521
  -#: ../wiki.php:5656
  +#: ../wiki.php:5639
   msgid "Invalid macro action."
   msgstr ""
   
   # ../wiki.php:3009
  -#: ../wiki.php:5666
  +#: ../wiki.php:5649
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "Vous n'?tes pas autoris? ? '%s'"
   
   # ../wiki.php:3021
  -#: ../wiki.php:5686
  +#: ../wiki.php:5669
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "Impossible de pouvoir \"%s\" !"
   
   # ../wiki.php:3024
  -#: ../wiki.php:5689
  +#: ../wiki.php:5672
   msgid "Please enter the valid password"
   msgstr "Merci d'entrer un mot de passe valide"
   
   # ../wikilib.php:368
  -#: ../wikilib.php:658
  +#: ../wikilib.php:682
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -2361,169 +2404,169 @@
   
   # ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
   # c-format
  -#: ../wikilib.php:763
  +#: ../wikilib.php:787
   msgid "You are not allowed to edit this page !"
   msgstr ""
   
  -#: ../wikilib.php:770
  +#: ../wikilib.php:794
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
   # ../wikilib.php:483 ../wikilib.php:1079
  -#: ../wikilib.php:791 ../wikilib.php:1063 ../wikilib.php:1711
  -#: ../wikilib.php:1801 ../wikilib.php:2276 ../wikilib.php:2330
  +#: ../wikilib.php:815 ../wikilib.php:1089 ../wikilib.php:1738
  +#: ../wikilib.php:1835 ../wikilib.php:2309 ../wikilib.php:2363
   msgid "Save"
   msgstr "Sauvegarder"
   
   # ../wikilib.php:443
  -#: ../wikilib.php:799 ../wikilib.php:1050 ../wikilib.php:1719
  -#: ../wikilib.php:1809
  +#: ../wikilib.php:823 ../wikilib.php:1076 ../wikilib.php:1746
  +#: ../wikilib.php:1843
   msgid "Skip to preview"
   msgstr "Aller ? la pr?visualisation"
   
   # ../wikilib.php:425
  -#: ../wikilib.php:910
  +#: ../wikilib.php:936
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   "Utiliser un des mod?les de pages qui suivent pour une premi?recr?ation :\n"
   
   # ../wikilib.php:427
  -#: ../wikilib.php:912
  +#: ../wikilib.php:938
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr ""
   
  -#: ../wikilib.php:916
  +#: ../wikilib.php:942
   msgid "Merge"
   msgstr ""
   
  -#: ../wikilib.php:917
  +#: ../wikilib.php:943
   msgid "Merge manually"
   msgstr ""
   
  -#: ../wikilib.php:918
  +#: ../wikilib.php:944
   msgid "Ignore conflicts"
   msgstr ""
   
   # ../wikilib.php:445
  -#: ../wikilib.php:950
  +#: ../wikilib.php:976
   msgid "ReduceEditor"
   msgstr "R?duire?diteur"
   
  -#: ../wikilib.php:951
  +#: ../wikilib.php:977
   msgid "EnlargeEditor"
   msgstr ""
   
   # ../locale/dummy.php:6 ../wikilib.php:448
  -#: ../wikilib.php:955 ../locale/dummy.php:6
  +#: ../wikilib.php:981 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
   # ../wikilib.php:449
  -#: ../wikilib.php:957
  +#: ../wikilib.php:983
   msgid "HelpOnEditing"
   msgstr ""
   
   # ../wikilib.php:462
  -#: ../wikilib.php:989
  +#: ../wikilib.php:1015
   #, c-format
   msgid "Describe %s here"
   msgstr "D?crire %s ici"
   
  -#: ../wikilib.php:1009
  +#: ../wikilib.php:1035
   msgid "Category"
   msgstr ""
   
  -#: ../wikilib.php:1017
  +#: ../wikilib.php:1043
   msgid " Select "
   msgstr ""
   
  -#: ../wikilib.php:1028
  +#: ../wikilib.php:1054
   msgid "Minor edit"
   msgstr ""
   
   # ../wikilib.php:517
  -#: ../wikilib.php:1142
  +#: ../wikilib.php:1168
   msgid "406 Not Acceptable"
   msgstr ""
   
   # ../wikilib.php:519
  -#: ../wikilib.php:1147
  +#: ../wikilib.php:1173
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s n'est pas une action valide"
   
   # ../wikilib.php:521
  -#: ../wikilib.php:1149
  +#: ../wikilib.php:1175
   msgid "Is it valid action ?"
   msgstr "Est-ce que c'est une action valide ?"
   
   # ../wikilib.php:540
  -#: ../wikilib.php:1196
  +#: ../wikilib.php:1222
   #, c-format
   msgid "File '%s' is deleted"
   msgstr "Le fichier '%s' est effac?"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:1198
  +#: ../wikilib.php:1224
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr "Impossible d'effacer '%s'"
   
   # ../wikilib.php:545
  -#: ../wikilib.php:1203
  +#: ../wikilib.php:1229
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr "Le r?pertoire '%s' est effac?"
   
   # ../wikilib.php:547
  -#: ../wikilib.php:1205
  +#: ../wikilib.php:1231
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr "Impossible d'effacer le r?pertoire '%s'"
   
   # ../wikilib.php:557 ../wikilib.php:559
  -#: ../wikilib.php:1215 ../wikilib.php:1235
  +#: ../wikilib.php:1241 ../wikilib.php:1261
   msgid "No files are selected !"
   msgstr "Aucun fichier n'est s?lectionn? !"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:1228
  +#: ../wikilib.php:1254
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
   # ../wikilib.php:550
  -#: ../wikilib.php:1232
  +#: ../wikilib.php:1258
   msgid "Delete selected file"
   msgstr ""
   
   # ../wikilib.php:575
  -#: ../wikilib.php:1253
  +#: ../wikilib.php:1279
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr "\"%s\" est effac? !"
   
   # ../wikilib.php:581
  -#: ../wikilib.php:1268
  +#: ../wikilib.php:1294
   msgid "Please delete this file manually."
   msgstr "Merci d'effacer ce fichier manuellement."
   
   # ../wikilib.php:583
  -#: ../wikilib.php:1270
  +#: ../wikilib.php:1296
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "Effacer \"%s\" ?"
   
   # ../plugin/minilogin.php:30
  -#: ../wikilib.php:1323
  +#: ../wikilib.php:1349
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
   # ../wiki.php:2950
  -#: ../wikilib.php:1496
  +#: ../wikilib.php:1522
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
  @@ -2531,134 +2574,139 @@
   "page.\n"
   
   # ../wiki.php:2950
  -#: ../wikilib.php:1496
  +#: ../wikilib.php:1522
   msgid "title"
   msgstr "titre"
   
  -#: ../wikilib.php:1510
  +#: ../wikilib.php:1536
   msgid "Please try to fulltext search"
   msgstr ""
   
   # ../wiki.php:2950
  -#: ../wikilib.php:1513
  +#: ../wikilib.php:1539
   #, c-format
   msgid "You can also click %s to fulltext search.\n"
   msgstr ""
   
   # ../wikilib.php:743
  -#: ../wikilib.php:1558 ../wikilib.php:1666
  +#: ../wikilib.php:1584 ../wikilib.php:1693
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "Quelqu'un a sauvegard? la page tandis que vous ?ditiez %s"
   
  -#: ../wikilib.php:1564
  +#: ../wikilib.php:1590
   msgid "Section edit is not valid for non-exists page."
   msgstr ""
   
   # ../wikilib.php:803
  -#: ../wikilib.php:1597 ../wikilib.php:1842
  +#: ../wikilib.php:1623 ../wikilib.php:1875
   msgid "mail does not supported by default."
   msgstr "La messagerie n'est pas support? par d?faut."
   
   # ../wikilib.php:807
  -#: ../wikilib.php:1601 ../wikilib.php:1846
  +#: ../wikilib.php:1627 ../wikilib.php:1879
   msgid "Sent notification mail."
   msgstr "Des notifications par messagerie ont ?t? envoy?es."
   
   # ../wikilib.php:809
  -#: ../wikilib.php:1603 ../wikilib.php:1848
  +#: ../wikilib.php:1629 ../wikilib.php:1881
   msgid "No subscribers found."
   msgstr "Aucun abonn? trouv?."
   
   # ../wikilib.php:814
  -#: ../wikilib.php:1608 ../wikilib.php:1853
  +#: ../wikilib.php:1634 ../wikilib.php:1886
   #, c-format
   msgid "%s is not editable"
   msgstr "%s n'est pas ?ditable"
   
   # ../wikilib.php:816
  -#: ../wikilib.php:1610 ../wikilib.php:1855
  +#: ../wikilib.php:1636 ../wikilib.php:1888
   #, c-format
   msgid "%s is saved"
   msgstr "%s est sauvegard?"
   
   # ../wikilib.php:734
  -#: ../wikilib.php:1657
  +#: ../wikilib.php:1684
   msgid "Goto Editor"
   msgstr "Aller ? l'?diteur"
   
  -#: ../wikilib.php:1671
  +#: ../wikilib.php:1698
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr ""
   
   # ../plugin/Vote.php:109
  -#: ../wikilib.php:1672
  +#: ../wikilib.php:1699
   #, c-format
   msgid "%s is merged successfully"
   msgstr ""
   
  -#: ../wikilib.php:1676
  +#: ../wikilib.php:1703
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1677
  +#: ../wikilib.php:1704
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr ""
   
  -#: ../wikilib.php:1678
  +#: ../wikilib.php:1705
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1679
  +#: ../wikilib.php:1706
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1684
  +#: ../wikilib.php:1711
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr ""
   
   # ../wikilib.php:581
  -#: ../wikilib.php:1685
  +#: ../wikilib.php:1712
   msgid "Please resolve conflicts manually."
   msgstr ""
   
  -#: ../wikilib.php:1688
  +#: ../wikilib.php:1715
   #, c-format
   msgid "Force merging for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1689
  +#: ../wikilib.php:1716
   msgid "Please be careful, you could damage useful information."
   msgstr ""
   
   # ../wikilib.php:755
  -#: ../wikilib.php:1703
  +#: ../wikilib.php:1730
   msgid "Conflict error!"
   msgstr "Erreur de conflit !"
   
  +# ../plugin/processor/blog.php:78
  +#: ../wikilib.php:1771
  +msgid "Too long Comment"
  +msgstr ""
  +
   # ../wikilib.php:748 ../wikilib.php:777
  -#: ../wikilib.php:1787
  +#: ../wikilib.php:1821
   #, c-format
   msgid "Preview of %s"
   msgstr "Pr?visualisation de %s"
   
   # ../wikilib.php:838
  -#: ../wikilib.php:1888
  +#: ../wikilib.php:1921
   msgid "Nobody subscribed to this page."
   msgstr "Personne n'est abonn? ? cette page, aucun mail envoy?"
   
   # ../wikilib.php:860
  -#: ../wikilib.php:1907
  +#: ../wikilib.php:1940
   #, c-format
   msgid "%s page is modified"
   msgstr "la page %s est modifi?"
   
   # ../wikilib.php:870
  -#: ../wikilib.php:1936
  +#: ../wikilib.php:1969
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
  @@ -2669,101 +2717,101 @@
   "\n"
   
   # ../wikilib.php:883
  -#: ../wikilib.php:1949
  +#: ../wikilib.php:1982
   msgid "Send notification mails to all subscribers"
   msgstr "Envoyez un mail de notification ? tous les abonn?s"
   
   # ../wikilib.php:887
  -#: ../wikilib.php:1954
  +#: ../wikilib.php:1987
   msgid "Mails are sent successfully"
   msgstr "Mail envoy? avec succ?s"
   
   # ../wikilib.php:888
  -#: ../wikilib.php:1955
  +#: ../wikilib.php:1988
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr "un mail a ?t? envoy? ? '%s'"
   
   # ../wiki.php:3021
  -#: ../wikilib.php:1957
  +#: ../wikilib.php:1990
   msgid "Fail to send mail"
   msgstr ""
   
   # ../wikilib.php:803
  -#: ../wikilib.php:1968
  +#: ../wikilib.php:2001
   msgid "This wiki does not support sendmail"
   msgstr ""
   
   # ../wikilib.php:1483
  -#: ../wikilib.php:2066
  +#: ../wikilib.php:2099
   msgid "Invalid regular expression !"
   msgstr ""
   
  -#: ../wikilib.php:2090
  +#: ../wikilib.php:2123
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:2093
  +#: ../wikilib.php:2126
   msgid "Infinite loop possible!"
   msgstr ""
   
   # ../plugin/login.php:26 ../wikilib.php:1051
  -#: ../wikilib.php:2208
  +#: ../wikilib.php:2241
   msgid "Login"
   msgstr "Se connecter"
   
  -#: ../wikilib.php:2209
  +#: ../wikilib.php:2242
   msgid "OpenID"
   msgstr ""
   
  -#: ../wikilib.php:2221 ../wikilib.php:2348
  +#: ../wikilib.php:2254 ../wikilib.php:2381
   msgid "ID"
   msgstr ""
   
   # ../wikilib.php:1070
  -#: ../wikilib.php:2256 ../wikilib.php:2341
  +#: ../wikilib.php:2289 ../wikilib.php:2374
   msgid "Make profile"
   msgstr "Faire un profil"
   
   # ../wikilib.php:1071
  -#: ../wikilib.php:2258
  +#: ../wikilib.php:2291
   msgid "password again"
   msgstr "mot de passe de nouveau"
   
  -#: ../wikilib.php:2260 ../wikilib.php:2309
  +#: ../wikilib.php:2293 ../wikilib.php:2342
   msgid "Mail"
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../wikilib.php:2282
  +#: ../wikilib.php:2315
   msgid "New password"
   msgstr "Nouveau mot de passe"
   
  -#: ../wikilib.php:2287
  +#: ../wikilib.php:2320
   msgid "Nickname"
   msgstr ""
   
  -#: ../wikilib.php:2310
  +#: ../wikilib.php:2343
   msgid "Time Zone"
   msgstr ""
   
   # ../wikilib.php:1088
  -#: ../wikilib.php:2319
  +#: ../wikilib.php:2352
   msgid "logout"
   msgstr "se d?connecter"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wikilib.php:2632
  +#: ../wikilib.php:2665
   msgid "Show all"
   msgstr ""
   
   # ../locale/dummy.php:4
  -#: ../wikilib.php:2770
  +#: ../wikilib.php:2803
   msgid "Contents"
   msgstr ""
   
   # ../wikilib.php:1479
  -#: ../wikilib.php:2890
  +#: ../wikilib.php:2923
   #, c-format
   msgid "Title search for \"%s\""
   msgstr "Recherche de titre pour \"%s\""
  
  
  
  1.35      +891 -841  moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- ko.po	17 Sep 2009 11:13:51 -0000	1.34
  +++ ko.po	30 Sep 2009 16:04:54 -0000	1.35
  @@ -5,7 +5,7 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1.3\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2009-08-19 16:34+0900\n"
  +"POT-Creation-Date: 2009-10-01 01:04+0900\n"
   "PO-Revision-Date: 2008-12-11 12:20+0900\n"
   "Last-Translator: Won-Kyu Park <wkpark@kldp.org>\n"
   "Language-Team: Won-Kyu Park <wkpark@kldp.org>\n"
  @@ -13,6 +13,82 @@
   "Content-Type: text/plain; charset=UTF-8\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  +#: ../plugin/aclinfo.php:15
  +msgid "ACL is not enabled on this Wiki"
  +msgstr "ACL이 활성화되어있지 않습니다"
  +
  +#: ../plugin/aclinfo.php:21
  +msgid "Your ACL Info"
  +msgstr "ACL 정보"
  +
  +#: ../plugin/aclinfo.php:23
  +msgid "You are wiki owner"
  +msgstr "위키 소유자입니다"
  +
  +#: ../plugin/aclinfo.php:25
  +msgid "You are wiki master"
  +msgstr "위키 관리자입니다"
  +
  +#: ../plugin/aclinfo.php:27
  +msgid "Allowed actions"
  +msgstr "허락된 액션"
  +
  +#: ../plugin/aclinfo.php:32
  +msgid "Denied actions"
  +msgstr "거부된 액션"
  +
  +#: ../plugin/aclinfo.php:38
  +msgid "Protected actions"
  +msgstr "제한된 액션"
  +
  +#: ../plugin/admin.php:136 ../plugin/PluginInfo.php:50
  +msgid "Description"
  +msgstr "설명"
  +
  +#: ../plugin/admin.php:139 ../plugin/PluginInfo.php:56
  +msgid "Author"
  +msgstr "저자"
  +
  +#: ../plugin/admin.php:141 ../plugin/PluginInfo.php:58
  +msgid "License"
  +msgstr "저작권"
  +
  +#: ../plugin/admin.php:143 ../plugin/PluginInfo.php:60
  +msgid "Depend"
  +msgstr "의존성"
  +
  +#: ../plugin/admin.php:147 ../plugin/PluginInfo.php:64
  +msgid "URL"
  +msgstr ""
  +
  +#: ../plugin/admin.php:191
  +msgid "Enabled plugins"
  +msgstr "활성화된 플러그인"
  +
  +#: ../plugin/admin.php:193
  +msgid "Disabled plugins"
  +msgstr "비활성화된 플러그인"
  +
  +#: ../plugin/admin.php:201
  +msgid "Enabled processors"
  +msgstr "활성화된 프로세서"
  +
  +#: ../plugin/admin.php:203
  +msgid "Disabled processors"
  +msgstr "비활성화된 프로세서"
  +
  +#: ../plugin/admin.php:206
  +msgid "Plugin/Processor settings are updated"
  +msgstr "플러그인/프로세서 세팅이 갱신됨"
  +
  +#: ../plugin/admin.php:212
  +msgid "Enable/disable plugins and processors"
  +msgstr "플러그인과 프로세서 활성화/비활성화"
  +
  +#: ../plugin/atom.php:64 ../plugin/rss_rc.php:62
  +msgid "show changes"
  +msgstr "바뀐점 보기"
  +
   #: ../plugin/Attachment.php:70 ../plugin/Attachment.php:333
   #, c-format
   msgid "Upload new Attachment \"%s\""
  @@ -40,6 +116,140 @@
   msgid "Translate %s to %s"
   msgstr "%s에서 %s(으)로 번역하기"
   
  +#: ../plugin/backup.php:42
  +msgid "Your wiki is backuped successfully"
  +msgstr "백업이 성공적으로 완료되었습니다"
  +
  +#: ../plugin/backup.php:49
  +msgid "Backup failed !"
  +msgstr "백업 실패 !"
  +
  +#: ../plugin/backup.php:54
  +msgid "Did you want to Backup your wiki ?"
  +msgstr "위키를 백업하시겠습니까 ?"
  +
  +#: ../plugin/bbs.php:493
  +msgid "This bbs does not exists yet. Please save this page first"
  +msgstr "현 BBS가 존재하지 않습ㄴ디ㅏ. 먼저 페이지를 저장하세요"
  +
  +#: ../plugin/bbs.php:617
  +msgid "No"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:626
  +msgid "Edit"
  +msgstr "고치기"
  +
  +#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1257
  +msgid "Delete"
  +msgstr "지우기"
  +
  +#: ../plugin/bbs.php:657
  +msgid "Please check article numbers."
  +msgstr "글번호를 확인해 주세요"
  +
  +#: ../plugin/bbs.php:737
  +msgid "More"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:782
  +msgid "New"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:784
  +msgid "Read"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:800
  +#, c-format
  +msgid "Total %s articles."
  +msgstr "총 %d 개의 글"
  +
  +#: ../plugin/bbs.php:836
  +#, c-format
  +msgid "Your IP address is not allowed to %s at this BBS"
  +msgstr "IP 주소가 '%s' BBS에서 허락되지 않았습니다."
  +
  +#: ../plugin/bbs.php:890
  +msgid "Successfully deleted."
  +msgstr "성공적으로 지워졌음."
  +
  +#: ../plugin/bbs.php:922
  +msgid "Fail to post comment."
  +msgstr "댓글 등록 실패."
  +
  +#: ../plugin/bbs.php:932
  +#, c-format
  +msgid "The article %s will be deleted."
  +msgstr "게시글 %s(이)가 지워질 것입니다."
  +
  +#: ../plugin/bbs.php:974
  +msgid "Invalid HomePage address."
  +msgstr "잘못된 홈페이지 주소."
  +
  +#: ../plugin/bbs.php:987
  +msgid "No Name error."
  +msgstr "이름이 없습ㄴ다."
  +
  +#: ../plugin/bbs.php:997
  +msgid "No Subject error."
  +msgstr "제목이 없습니다."
  +
  +#: ../plugin/bbs.php:1009 ../plugin/Comment.php:196 ../plugin/Gallery.php:174
  +#: ../wikilib.php:1609 ../wikilib.php:1815
  +msgid ""
  +"Sorry, can not save page because some messages are blocked in this wiki."
  +msgstr "죄송합니다. 특정 메시지가 금지되어 페이지를 저장할 수 없습니다."
  +
  +#: ../plugin/bbs.php:1025
  +msgid "New post added successfully"
  +msgstr "새글이 성공적으로 등록되었습니다."
  +
  +#: ../plugin/BlogChanges.php:198
  +msgid "Category: "
  +msgstr "분류: "
  +
  +#: ../plugin/BlogChanges.php:200 ../locale/dummy.php:7
  +msgid "BlogChanges"
  +msgstr "바뀐 블로그"
  +
  +#: ../plugin/BlogChanges.php:246
  +#, c-format
  +msgid "Invalid category expr \"%s\""
  +msgstr "잘못된 분류 표현식\"%s\""
  +
  +#: ../plugin/BlogChanges.php:378 ../plugin/BlogChanges.php:380
  +#: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
  +msgid "Anonymous"
  +msgstr "아무개"
  +
  +#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  +#, c-format
  +msgid "%d comment"
  +msgstr "댓글 %d개"
  +
  +#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  +#, c-format
  +msgid "%d comments"
  +msgstr "댓글 %d개"
  +
  +#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:213
  +#: ../plugin/processor/blog.php:78
  +msgid "Add comment"
  +msgstr "댓글 달기"
  +
  +#: ../plugin/BlogChanges.php:423 ../plugin/processor/blog.php:97
  +msgid "track back"
  +msgstr "트랙백"
  +
  +#: ../plugin/BlogChanges.php:443
  +msgid "Previous"
  +msgstr "이전"
  +
  +#: ../plugin/BlogChanges.php:446
  +msgid "Next"
  +msgstr "다음"
  +
   #: ../plugin/Blog.php:84
   #, c-format
   msgid "Blog cache of \"%s\" is refreshed"
  @@ -96,11 +306,11 @@
   msgstr "이름"
   
   #: ../plugin/Blog.php:262 ../plugin/Blog.php:333
  -#: ../plugin/RecentChanges.php:106
  +#: ../plugin/RecentChanges.php:119
   msgid "Title"
   msgstr "제목"
   
  -#: ../plugin/Blog.php:268 ../wikilib.php:1054
  +#: ../plugin/Blog.php:268 ../wikilib.php:1080
   msgid "GUI"
   msgstr ""
   
  @@ -112,54 +322,40 @@
   msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
   msgstr "<b>가로선</b> ----는 블로그일 경우 적용되지 않습니다."
   
  -#: ../plugin/BlogChanges.php:198
  -msgid "Category: "
  -msgstr "분류: "
  +#: ../plugin/bookmark.php:33
  +msgid "Invalid bookmark!"
  +msgstr "잘못된 북마크!"
   
  -#: ../plugin/BlogChanges.php:200 ../locale/dummy.php:7
  -msgid "BlogChanges"
  -msgstr "바뀐 블로그"
  +#: ../plugin/cacheadmin.php:105
  +msgid "You are not WikiMaster!!"
  +msgstr "위키관리자가 아닙니다!!"
   
  -#: ../plugin/BlogChanges.php:246
  -#, c-format
  -msgid "Invalid category expr \"%s\""
  -msgstr "잘못된 분류 표현식\"%s\""
  +#: ../plugin/cacheadmin.php:120
  +msgid "Clear cache dirs"
  +msgstr "캐쉬 디렉토리 지우기"
   
  -#: ../plugin/BlogChanges.php:378 ../plugin/BlogChanges.php:380
  -#: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
  -msgid "Anonymous"
  -msgstr "아무개"
  +#: ../plugin/chat.php:36
  +msgid "No messages"
  +msgstr "메시지 없음"
   
  -#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  +#: ../plugin/chmod.php:18
   #, c-format
  -msgid "%d comment"
  -msgstr "댓글 %d개"
  +msgid "Permission of \"%s\" changed !"
  +msgstr ""
   
  -#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  +#: ../plugin/chmod.php:24
   #, c-format
  -msgid "%d comments"
  -msgstr "댓글 %d개"
  +msgid "Fail to chmod \"%s\" !"
  +msgstr ""
   
  -#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:213
  -#: ../plugin/processor/blog.php:78
  -msgid "Add comment"
  -msgstr "댓글 달기"
  +#: ../plugin/chmod.php:35
  +#, c-format
  +msgid "Change permission of \"%s\""
  +msgstr ""
   
  -#: ../plugin/BlogChanges.php:423 ../plugin/processor/blog.php:97
  -msgid "track back"
  -msgstr "트랙백"
  -
  -#: ../plugin/BlogChanges.php:443
  -msgid "Previous"
  -msgstr "이전"
  -
  -#: ../plugin/BlogChanges.php:446
  -msgid "Next"
  -msgstr "다음"
  -
  -#: ../plugin/Clip.php:28
  -msgid "Paste a new picture"
  -msgstr "새 그림 붙이기"
  +#: ../plugin/Clip.php:28
  +msgid "Paste a new picture"
  +msgstr "새 그림 붙이기"
   
   #: ../plugin/Clip.php:50 ../plugin/Draw.php:119
   msgid "Fatal error !"
  @@ -181,8 +377,8 @@
   msgid "Comment"
   msgstr "댓글 달기"
   
  -#: ../plugin/Comment.php:93 ../wikilib.php:797 ../wikilib.php:1048
  -#: ../wikilib.php:1717 ../wikilib.php:1807 ../monisetup.php:1305
  +#: ../plugin/Comment.php:93 ../wikilib.php:821 ../wikilib.php:1074
  +#: ../wikilib.php:1744 ../wikilib.php:1841 ../monisetup.php:1305
   msgid "Preview"
   msgstr "미리보기"
   
  @@ -203,21 +399,15 @@
   msgstr "페이지가 없습니다"
   
   #: ../plugin/Comment.php:169 ../plugin/userform.php:118
  -#: ../plugin/userform.php:181 ../plugin/userform.php:204 ../wikilib.php:1760
  +#: ../plugin/userform.php:181 ../plugin/userform.php:204 ../wikilib.php:1794
   msgid "Invalid ticket !"
   msgstr "잘못된 티켓 !"
   
   #: ../plugin/Comment.php:174 ../plugin/userform.php:120
  -#: ../plugin/userform.php:206 ../wikilib.php:1765
  +#: ../plugin/userform.php:206 ../wikilib.php:1799
   msgid "You need a ticket !"
   msgstr "티켓이 필요합니다 !"
   
  -#: ../plugin/Comment.php:196 ../plugin/Gallery.php:174 ../plugin/bbs.php:1009
  -#: ../wikilib.php:1583 ../wikilib.php:1781
  -msgid ""
  -"Sorry, can not save page because some messages are blocked in this wiki."
  -msgstr "죄송합니다. 특정 메시지가 금지되어 페이지를 저장할 수 없습니다."
  -
   #: ../plugin/Comment.php:202
   msgid "Preview comment"
   msgstr "미리보기"
  @@ -231,16 +421,24 @@
   msgid "Comment added successfully"
   msgstr "댓글이 성공적으로 저장되었습니다"
   
  -#: ../plugin/Diff.php:410 ../plugin/Info.php:240
  +#: ../plugin/css.php:33 ../plugin/css.php:41
  +msgid "Back to UserPreferences"
  +msgstr "UserPreferences로 가기"
  +
  +#: ../plugin/css.php:67
  +msgid "CSS disabled !"
  +msgstr ""
  +
  +#: ../plugin/Diff.php:410 ../plugin/Info.php:246
   msgid "No older revisions available"
   msgstr "옛 버전이 없습니다"
   
  -#: ../plugin/Diff.php:415 ../plugin/Info.php:246 ../plugin/rcsexport.php:13
  +#: ../plugin/Diff.php:415 ../plugin/Info.php:252 ../plugin/rcsexport.php:13
   #: ../plugin/rcsimport.php:13
   msgid "Version info is not available in this wiki"
   msgstr "버전 정보는 현 위키에서 사용할 수 없습니다"
   
  -#: ../plugin/Diff.php:426 ../wikilib.php:1737
  +#: ../plugin/Diff.php:426 ../wikilib.php:1764
   msgid "No difference found"
   msgstr "변화가 없습니다"
   
  @@ -266,7 +464,7 @@
   msgid "Draw new picture"
   msgstr "새 그림 만들기"
   
  -#: ../plugin/Draw.php:92 ../plugin/UploadFile.php:252
  +#: ../plugin/Draw.php:92 ../plugin/UploadFile.php:289
   #, c-format
   msgid "Fail to copy \"%s\" to \"%s\""
   msgstr "\"%s\"를 \"%s\"로 복사하기 실패"
  @@ -307,21 +505,25 @@
   msgstr "\"%s\"을(를) 전체 찾아보기"
   
   #: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:38
  -#: ../wikilib.php:1504
  +#: ../wikilib.php:1530
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr "%3$s의 페이지중에 %1$s개가 발견되었습니다"
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1506
  +#: ../wikilib.php:1532
   msgid "page"
   msgstr "페이지"
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1506
  +#: ../wikilib.php:1532
   msgid "pages"
   msgstr "페이지"
   
  +#: ../plugin/format.php:17
  +msgid "It is a XML format !"
  +msgstr ""
  +
   #: ../plugin/FullSearch.php:15
   #, c-format
   msgid "BackLinks search for \"%s\""
  @@ -336,8 +538,8 @@
   msgid "Show Context."
   msgstr "문맥 보기."
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4513
  -#: ../wikilib.php:1034
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4488
  +#: ../wikilib.php:1060
   msgid "Refresh"
   msgstr "갱신"
   
  @@ -351,8 +553,8 @@
   msgid "You can also click %s to search title.\n"
   msgstr "%s을 눌러 제목 찾기를 할 수 있습니다.\n"
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5473 ../wiki.php:5480
  -#: ../wikilib.php:1514
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5456 ../wiki.php:5463
  +#: ../wikilib.php:1540
   msgid "here"
   msgstr "여기"
   
  @@ -368,7 +570,7 @@
   msgid "Case-sensitive searching"
   msgstr "대소문자 구별"
   
  -#: ../plugin/FullSearch.php:77 ../wikilib.php:2873 ../wikilib.php:2935
  +#: ../plugin/FullSearch.php:77 ../wikilib.php:2906 ../wikilib.php:2968
   msgid "Go"
   msgstr "찾기"
   
  @@ -376,11 +578,19 @@
   msgid "Empty expression"
   msgstr "비어있는 표현식"
   
  -#: ../plugin/FullSearch.php:144 ../wikilib.php:2894
  +#: ../plugin/FullSearch.php:144 ../wikilib.php:2927
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "잘못된 찾기 표현식 \"%s\""
   
  +#: ../plugin/FullSearch.php:260
  +msgid " match"
  +msgstr ""
  +
  +#: ../plugin/FullSearch.php:260
  +msgid " matches"
  +msgstr ""
  +
   #: ../plugin/Gallery.php:245 ../plugin/UploadedFiles.php:287
   msgid "No files found"
   msgstr "페이지가 없습니다"
  @@ -393,8 +603,8 @@
   msgid "show comments"
   msgstr "댓글 보기"
   
  -#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1570
  -#: ../wikilib.php:1735
  +#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1596
  +#: ../wikilib.php:1762 ../wikilib.php:1769
   #, c-format
   msgid "Go back or return to %s"
   msgstr "뒤로 혹은 %s(으)로 가기"
  @@ -407,6 +617,10 @@
   msgid "Comments is added"
   msgstr "댓글이 더해졌습니다"
   
  +#: ../plugin/html2pdf.php:30
  +msgid "The TCPDF class not found!"
  +msgstr "TCPDF 클래스 찾을 수 없음!"
  +
   #: ../plugin/ImportUrl.php:132
   msgid "Import URL"
   msgstr "URL 가져오기"
  @@ -427,11 +641,11 @@
   msgid "Date"
   msgstr "날짜"
   
  -#: ../plugin/Info.php:45 ../plugin/RecentChanges.php:107
  +#: ../plugin/Info.php:45 ../plugin/RecentChanges.php:120
   msgid "Changes"
   msgstr "변경점"
   
  -#: ../plugin/Info.php:46 ../plugin/RecentChanges.php:107
  +#: ../plugin/Info.php:46 ../plugin/RecentChanges.php:120
   msgid "Editor"
   msgstr "고친이"
   
  @@ -466,11 +680,11 @@
   msgid "%s min ago"
   msgstr "%s분 전"
   
  -#: ../plugin/Info.php:209 ../plugin/rename.php:80
  +#: ../plugin/Info.php:215 ../plugin/rename.php:80
   msgid "show only"
   msgstr "보기만 하기"
   
  -#: ../plugin/Info.php:213
  +#: ../plugin/Info.php:219
   msgid "purge"
   msgstr "삭제"
   
  @@ -513,673 +727,108 @@
   
   #: ../plugin/Keywords.php:428
   msgid "Add as common words"
  -msgstr "일반 단어로 추가"
  -
  -#: ../plugin/Keywords.php:429
  -msgid "Unselect all"
  -msgstr "모두 선택 취소"
  -
  -#: ../plugin/Keywords.php:430
  -msgid "Suggest new Keywords"
  -msgstr "새 키워드 제안"
  -
  -#: ../plugin/Keywords.php:439
  -msgid "select language"
  -msgstr "언어 고르기"
  -
  -#: ../plugin/Keywords.php:458
  -msgid "You are not able to add keywords."
  -msgstr "키워드를 추가할 수 없습니다."
  -
  -#: ../plugin/Keywords.php:472
  -#, c-format
  -msgid "%s is not found."
  -msgstr "%s을(를) 찾을 수 없습니다"
  -
  -#: ../plugin/Keywords.php:588
  -msgid "Common words are updated"
  -msgstr "일반 단어가 갱신됨"
  -
  -#: ../plugin/Keywords.php:635
  -#, c-format
  -msgid "Keywords for %s are updated"
  -msgstr "%s에 대한 키워드가 갱신됨"
  -
  -#: ../plugin/Keywords.php:661
  -msgid "Keywords are updated"
  -msgstr "키워드가 갱신되었습니다"
  -
  -#: ../plugin/Keywords.php:663
  -msgid "There are no changes found"
  -msgstr "변화가 없습니다"
  -
  -#: ../plugin/Keywords.php:676
  -msgid "Update with these Keywords"
  -msgstr "키워드 갱신하기"
  -
  -#: ../plugin/Keywords.php:696 ../plugin/Keywords.php:700
  -msgid "alphabetically"
  -msgstr "알파벳"
  -
  -#: ../plugin/Keywords.php:697
  -msgid "by frequency"
  -msgstr "빈도수"
  -
  -#: ../plugin/Keywords.php:699
  -msgid "by size"
  -msgstr "크기"
  -
  -#: ../plugin/Keywords.php:705
  -#, c-format
  -msgid "Keywords list %s (or %s)"
  -msgstr "%s순 키워드 목록 (혹은 %s순)"
  -
  -#: ../plugin/Keywords.php:710
  -#, c-format
  -msgid "Select keywords for %s"
  -msgstr "%s에 대해 키워드를 고르세요"
  -
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1391 ../wikilib.php:2881
  -msgid "Use more specific text"
  -msgstr "좀 더 자세히 입력하세요"
  -
  -#: ../plugin/LikePages.php:109
  -msgid "These pages share a similar word..."
  -msgstr "비슷한 이름이 부분적으로 포함된 페이지..."
  -
  -#: ../plugin/LikePages.php:123
  -msgid "These pages share an initial or final title word..."
  -msgstr "처음과 마지막부분의 이름이 포함된 페이지..."
  -
  -#: ../plugin/LikePages.php:143
  -msgid "If you can't find this page, "
  -msgstr "페이지를 찾으실 수 없으면"
  -
  -#: ../plugin/LikePages.php:148
  -msgid "No similar pages found"
  -msgstr "비슷한 페이지가 없습니다"
  -
  -#: ../plugin/LikePages.php:150
  -msgid "You are strongly recommened to find it in MetaWikis. "
  -msgstr "메타위키를 찾아보실 것을 권해드립니다. "
  -
  -#: ../plugin/LikePages.php:153
  -#, c-format
  -msgid "Like \"%s\""
  -msgstr "\"%s\"와 비슷한"
  -
  -#: ../plugin/LikePages.php:156
  -msgid "Search all MetaWikis"
  -msgstr "모든 메타위키 검색"
  -
  -#: ../plugin/LikePages.php:157
  -msgid "Slow Slow"
  -msgstr "매우 느림"
  -
  -#: ../plugin/Navigation.php:19
  -msgid "No Index page found"
  -msgstr "인덱스 페이지가 없습니다"
  -
  -#: ../plugin/OeKaki.php:36
  -msgid "Draw a new picture"
  -msgstr "새 그림 그리기"
  -
  -#: ../plugin/OeKaki.php:118
  -msgid "Create new picture"
  -msgstr "새 그림 만들기"
  -
  -#: ../plugin/OeKaki.php:127
  -msgid "Edit Image"
  -msgstr "그림 고치기"
  -
  -#: ../plugin/PluginInfo.php:29
  -#, c-format
  -msgid "Total %s plugin activated."
  -msgstr "총 %d 개의 플러그인이 활성화됨"
  -
  -#: ../plugin/PluginInfo.php:34
  -#, c-format
  -msgid "%s is internal plugin."
  -msgstr "%s은(는) 내부 플러그인입니다."
  -
  -#: ../plugin/PluginInfo.php:36
  -#, c-format
  -msgid "%s plugin is not found."
  -msgstr "%s 플러그인을 찾을 수 없습니다"
  -
  -#: ../plugin/PluginInfo.php:50 ../plugin/admin.php:136
  -msgid "Description"
  -msgstr "설명"
  -
  -#: ../plugin/PluginInfo.php:54
  -msgid "Version"
  -msgstr "버전"
  -
  -#: ../plugin/PluginInfo.php:56 ../plugin/admin.php:139
  -msgid "Author"
  -msgstr "저자"
  -
  -#: ../plugin/PluginInfo.php:58 ../plugin/admin.php:141
  -msgid "License"
  -msgstr "저작권"
  -
  -#: ../plugin/PluginInfo.php:60 ../plugin/admin.php:143
  -msgid "Depend"
  -msgstr "의존성"
  -
  -#: ../plugin/PluginInfo.php:64 ../plugin/admin.php:147
  -msgid "URL"
  -msgstr ""
  -
  -#: ../plugin/Rating.php:58
  -msgid "Awful!"
  -msgstr "최악!"
  -
  -#: ../plugin/Rating.php:59
  -msgid "Not the worst ever."
  -msgstr "이보다 나쁠수 없음"
  -
  -#: ../plugin/Rating.php:60
  -msgid "Not bad!"
  -msgstr "나쁘지 않음!"
  -
  -#: ../plugin/Rating.php:61
  -msgid "Useful!"
  -msgstr "유용함"
  -
  -#: ../plugin/Rating.php:62
  -msgid "Very Gooood!"
  -msgstr "매우 좋음"
  -
  -#: ../plugin/Rating.php:84 ../plugin/Vote.php:67
  -#: ../plugin/security/community.php:26 ../plugin/security/community.php:36
  -#: ../plugin/security/community.php:46 ../plugin/security/community.php:61
  -#: ../plugin/security/mustlogin.php:29 ../plugin/security/mustlogin.php:40
  -#: ../plugin/security/mustlogin.php:51 ../plugin/security/mustlogin.php:67
  -#: ../plugin/security/needtologin.php:29 ../plugin/security/needtologin.php:40
  -#: ../plugin/security/needtologin.php:51 ../plugin/security/userbased.php:62
  -msgid "Please Login or make your ID on this Wiki ;)"
  -msgstr "로그인하거나 ID를 만드세요 ;)"
  -
  -#: ../plugin/Rating.php:188
  -msgid "Invalid rating request !"
  -msgstr ""
  -
  -#: ../plugin/Rating.php:203
  -msgid "Rating successfully !"
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:28
  -#, c-format
  -msgid "%d minute ago"
  -msgstr "%s분 전"
  -
  -#: ../plugin/RecentChanges.php:30
  -#, c-format
  -msgid "%d hours ago"
  -msgstr "%s시간 전"
  -
  -#: ../plugin/RecentChanges.php:32
  -#, c-format
  -msgid "%d days ago"
  -msgstr "%s일 전"
  -
  -#: ../plugin/RecentChanges.php:106
  -msgid "Change Date"
  -msgstr "변경일"
  -
  -#: ../plugin/RecentChanges.php:109
  -msgid "Hits"
  -msgstr "조회수"
  -
  -#: ../plugin/RecentChanges.php:155
  -msgid "Show changes for "
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:160
  -msgid "days ago"
  -msgstr "몇일 전"
  -
  -#: ../plugin/RecentChanges.php:265
  -msgid "set bookmark"
  -msgstr "북마크"
  -
  -#: ../plugin/RecentChanges.php:270
  -msgid "Bookmark"
  -msgstr "북마크"
  -
  -#: ../plugin/RecentChanges.php:338
  -#, c-format
  -msgid "%s changes"
  -msgstr "%s회 고침"
  -
  -#: ../plugin/RecentChanges.php:352
  -msgid "Recent Changes"
  -msgstr "최근 변경내역"
  -
  -#: ../plugin/SWFUpload.php:136
  -msgid "Files..."
  -msgstr "파일..."
  -
  -#: ../plugin/SWFUpload.php:137 ../plugin/UploadFile.php:363
  -msgid "Upload"
  -msgstr "올리기"
  -
  -#: ../plugin/SWFUpload.php:138
  -msgid "Cancel All files"
  -msgstr "모두 취소"
  -
  -#: ../plugin/SlideShow.php:28
  -msgid "No page found"
  -msgstr "페이지가 없습니다"
  -
  -#: ../plugin/SlideShow.php:102
  -msgid "Start:"
  -msgstr "시작:"
  -
  -#: ../plugin/SlideShow.php:111
  -msgid "End:"
  -msgstr "끝:"
  -
  -#: ../plugin/SlideShow.php:121 ../plugin/pageview.php:75
  -msgid "Next:"
  -msgstr "다음:"
  -
  -#: ../plugin/SlideShow.php:131
  -msgid "Prev:"
  -msgstr "이전:"
  -
  -#: ../plugin/SlideShow.php:138
  -msgid "Return"
  -msgstr "돌아가기"
  -
  -#: ../plugin/SystemInfo.php:16
  -msgid "Number of Pages"
  -msgstr "페이지 개수"
  -
  -#: ../plugin/SystemInfo.php:17
  -msgid "HTTP Server Version"
  -msgstr "HTTP 서버 버전"
  -
  -#: ../plugin/SystemInfo.php:18
  -msgid "MoniWiki Version"
  -msgstr "모니위키 버전"
  -
  -#: ../plugin/SystemInfo.php:19
  -msgid "PHP Version"
  -msgstr "PHP 버전"
  -
  -#: ../plugin/Tour.php:57
  -msgid "BackLinks"
  -msgstr "역링크"
  -
  -#: ../plugin/Tour.php:61
  -msgid "Keywords"
  -msgstr "키워드"
  -
  -#: ../plugin/Tour.php:70
  -#, c-format
  -msgid " from %s"
  -msgstr " %s에 대한"
  -
  -#: ../plugin/Tour.php:73
  -#, c-format
  -msgid "%s Tour %s"
  -msgstr "%2$s %1$s 여행"
  -
  -#: ../plugin/Tour.php:121
  -msgid "links"
  -msgstr "연결"
  -
  -#: ../plugin/Tour.php:123
  -msgid "deeper"
  -msgstr "깊게"
  -
  -#: ../plugin/Tour.php:124
  -#, c-format
  -msgid "More %s or more %s"
  -msgstr "더 많은 %s 혹은 %s"
  -
  -#: ../plugin/Tour.php:139
  -#, c-format
  -msgid "Total %d related keywords"
  -msgstr "%d 개의 연관된 키워드"
  -
  -#: ../plugin/Tour.php:142
  -#, c-format
  -msgid "Total %d related pages"
  -msgstr "%d 개의 연관된 페이지"
  -
  -#: ../plugin/TwinPages.php:13
  -#, c-format
  -msgid "TwinPages of %s"
  -msgstr "%s의 쌍둥이 페이지"
  -
  -#: ../plugin/TwinPages.php:19 ../wiki.php:5459
  -msgid "See [TwinPages]: "
  -msgstr ""
  -
  -#: ../plugin/TwinPages.php:21
  -msgid "No TwinPages found."
  -msgstr "쌍둥이 페이지가 없습니다"
  -
  -#: ../plugin/UploadFile.php:149 ../plugin/UploadFile.php:163
  -#, c-format
  -msgid "The %s type of %s is not allowed to upload"
  -msgstr "%s의 %s 형식은 업로드가 허락되지 않습니다"
  -
  -#: ../plugin/UploadFile.php:165
  -#, c-format
  -msgid "%s is not allowed to upload"
  -msgstr "%s은(는) 업로드가 허락되지 않습니다"
  -
  -#: ../plugin/UploadFile.php:220
  -#, c-format
  -msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
  -msgstr "파일 확장자를 \"%s\"에서 \"%s\"(으)로 바꿀 수 없음."
  -
  -#: ../plugin/UploadFile.php:253
  -msgid "Please check your php.ini setting"
  -msgstr "php.ini 세팅을 확인해보시기 바랍니다"
  -
  -#: ../plugin/UploadFile.php:263
  -#, c-format
  -msgid "File \"%s\" is uploaded successfully"
  -msgstr "\"%s\"파일이 성공적으로 올라갔습니다"
  -
  -#: ../plugin/UploadFile.php:308
  -msgid "Files are uploaded successfully"
  -msgstr "파일이 성공적으로 올라갔습니다."
  -
  -#: ../plugin/UploadFile.php:343
  -msgid "Multi upload form"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:352
  -msgid "Replace original file"
  -msgstr "원본 파일 교체"
  -
  -#: ../plugin/UploadFile.php:353
  -msgid "Rename if it already exist"
  -msgstr "이미 있을경우 이름 바꿈"
  -
  -#: ../plugin/UploadFile.php:358 ../plugin/rename.php:69
  -msgid "Rename"
  -msgstr "이름바꾸기"
  -
  -#: ../plugin/UploadFile.php:366
  -#, c-format
  -msgid "or %s."
  -msgstr "혹은 %s."
  -
  -#: ../plugin/UploadFile.php:366
  -msgid "Multiple Upload files"
  -msgstr "여러파일 올리기"
  -
  -#: ../plugin/UploadFile.php:374 ../plugin/UploadForm.php:179
  -msgid "Upload files"
  -msgstr "파일올리기"
  -
  -#: ../plugin/UploadForm.php:17
  -msgid "Successfully Uploaded"
  -msgstr "성공적으로 올라감"
  -
  -#: ../plugin/UploadForm.php:18
  -msgid "Choose File"
  -msgstr "파일찾기"
  -
  -#: ../plugin/UploadForm.php:177
  -msgid "add files"
  -msgstr "파일추가"
  -
  -#: ../plugin/UploadForm.php:178
  -msgid "add a file"
  -msgstr "파일추가"
  -
  -#: ../plugin/UploadForm.php:180
  -msgid "Reset"
  -msgstr ""
  -
  -#: ../plugin/UploadForm.php:181
  -msgid "Attachments"
  -msgstr "첨부"
  -
  -#: ../plugin/UploadedFiles.php:301
  -msgid "File name"
  -msgstr "파일 이름"
  -
  -#: ../plugin/UploadedFiles.php:302
  -msgid "Size"
  -msgstr "크기"
  -
  -#: ../plugin/UploadedFiles.php:353
  -msgid "Next page &raquo;"
  -msgstr "다음 페이지 &raquo;"
  -
  -#: ../plugin/UploadedFiles.php:355
  -msgid "&laquo; First page"
  -msgstr "&laquo; 첫 페이지"
  -
  -#: ../plugin/UploadedFiles.php:447
  -#, c-format
  -msgid "Total %d files"
  -msgstr "총 %d 개 파일"
  -
  -#: ../plugin/UploadedFiles.php:452 ../plugin/rcsimport.php:32
  -#: ../plugin/rcsimport.php:88 ../plugin/rename.php:77 ../plugin/revert.php:82
  -#: ../plugin/userinfo.php:37 ../wikilib.php:1230 ../wikilib.php:2192
  -msgid "Password"
  -msgstr "비밀번호"
  -
  -#: ../plugin/UploadedFiles.php:453 ../wikilib.php:1208
  -msgid "Delete selected files"
  -msgstr "선택된 파일 지우기"
  -
  -#: ../plugin/VisualTour.php:133
  -msgid "Normal"
  -msgstr "보통"
  -
  -#: ../plugin/VisualTour.php:135
  -msgid "Wider"
  -msgstr "넓게"
  -
  -#: ../plugin/VisualTour.php:137
  -msgid "Deeper"
  -msgstr "깊게"
  -
  -#: ../plugin/Vote.php:113
  -msgid "Voted successfully"
  -msgstr "투표가 성공되었습니다"
  -
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2631
  -msgid "Others"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:15
  -msgid "ACL is not enabled on this Wiki"
  -msgstr "ACL이 활성화되어있지 않습니다"
  -
  -#: ../plugin/aclinfo.php:21
  -msgid "Your ACL Info"
  -msgstr "ACL 정보"
  -
  -#: ../plugin/aclinfo.php:23
  -msgid "You are wiki owner"
  -msgstr "위키 소유자입니다"
  -
  -#: ../plugin/aclinfo.php:25
  -msgid "You are wiki master"
  -msgstr "위키 관리자입니다"
  -
  -#: ../plugin/aclinfo.php:27
  -msgid "Allowed actions"
  -msgstr "허락된 액션"
  -
  -#: ../plugin/aclinfo.php:32
  -msgid "Denied actions"
  -msgstr "거부된 액션"
  -
  -#: ../plugin/aclinfo.php:38
  -msgid "Protected actions"
  -msgstr "제한된 액션"
  -
  -#: ../plugin/admin.php:191
  -msgid "Enabled plugins"
  -msgstr "활성화된 플러그인"
  -
  -#: ../plugin/admin.php:193
  -msgid "Disabled plugins"
  -msgstr "비활성화된 플러그인"
  -
  -#: ../plugin/admin.php:201
  -msgid "Enabled processors"
  -msgstr "활성화된 프로세서"
  -
  -#: ../plugin/admin.php:203
  -msgid "Disabled processors"
  -msgstr "비활성화된 프로세서"
  -
  -#: ../plugin/admin.php:206
  -msgid "Plugin/Processor settings are updated"
  -msgstr "플러그인/프로세서 세팅이 갱신됨"
  -
  -#: ../plugin/admin.php:212
  -msgid "Enable/disable plugins and processors"
  -msgstr "플러그인과 프로세서 활성화/비활성화"
  -
  -#: ../plugin/atom.php:64 ../plugin/rss_rc.php:62
  -msgid "show changes"
  -msgstr "바뀐점 보기"
  -
  -#: ../plugin/backup.php:42
  -msgid "Your wiki is backuped successfully"
  -msgstr "백업이 성공적으로 완료되었습니다"
  -
  -#: ../plugin/backup.php:49
  -msgid "Backup failed !"
  -msgstr "백업 실패 !"
  -
  -#: ../plugin/backup.php:54
  -msgid "Did you want to Backup your wiki ?"
  -msgstr "위키를 백업하시겠습니까 ?"
  -
  -#: ../plugin/bbs.php:493
  -msgid "This bbs does not exists yet. Please save this page first"
  -msgstr "현 BBS가 존재하지 않습ㄴ디ㅏ. 먼저 페이지를 저장하세요"
  -
  -#: ../plugin/bbs.php:617
  -msgid "No"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:626
  -msgid "Edit"
  -msgstr "고치기"
  -
  -#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1231
  -msgid "Delete"
  -msgstr "지우기"
  -
  -#: ../plugin/bbs.php:657
  -msgid "Please check article numbers."
  -msgstr "글번호를 확인해 주세요"
  -
  -#: ../plugin/bbs.php:737
  -msgid "More"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:782
  -msgid "New"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:784
  -msgid "Read"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:800
  -#, c-format
  -msgid "Total %s articles."
  -msgstr "총 %d 개의 글"
  +msgstr "일반 단어로 추가"
   
  -#: ../plugin/bbs.php:836
  -#, c-format
  -msgid "Your IP address is not allowed to %s at this BBS"
  -msgstr "IP 주소가 '%s' BBS에서 허락되지 않았습니다."
  +#: ../plugin/Keywords.php:429
  +msgid "Unselect all"
  +msgstr "모두 선택 취소"
   
  -#: ../plugin/bbs.php:890
  -msgid "Successfully deleted."
  -msgstr "성공적으로 지워졌음."
  +#: ../plugin/Keywords.php:430
  +msgid "Suggest new Keywords"
  +msgstr "새 키워드 제안"
   
  -#: ../plugin/bbs.php:922
  -msgid "Fail to post comment."
  -msgstr "댓글 등록 실패."
  +#: ../plugin/Keywords.php:439
  +msgid "select language"
  +msgstr "언어 고르기"
   
  -#: ../plugin/bbs.php:932
  +#: ../plugin/Keywords.php:458
  +msgid "You are not able to add keywords."
  +msgstr "키워드를 추가할 수 없습니다."
  +
  +#: ../plugin/Keywords.php:472
   #, c-format
  -msgid "The article %s will be deleted."
  -msgstr "게시글 %s(이)가 지워질 것입니다."
  +msgid "%s is not found."
  +msgstr "%s을(를) 찾을 수 없습니다"
   
  -#: ../plugin/bbs.php:974
  -msgid "Invalid HomePage address."
  -msgstr "잘못된 홈페이지 주소."
  +#: ../plugin/Keywords.php:588
  +msgid "Common words are updated"
  +msgstr "일반 단어가 갱신됨"
   
  -#: ../plugin/bbs.php:987
  -msgid "No Name error."
  -msgstr "이름이 없습ㄴ다."
  +#: ../plugin/Keywords.php:635
  +#, c-format
  +msgid "Keywords for %s are updated"
  +msgstr "%s에 대한 키워드가 갱신됨"
   
  -#: ../plugin/bbs.php:997
  -msgid "No Subject error."
  -msgstr "제목이 없습니다."
  +#: ../plugin/Keywords.php:661
  +msgid "Keywords are updated"
  +msgstr "키워드가 갱신되었습니다"
   
  -#: ../plugin/bbs.php:1025
  -msgid "New post added successfully"
  -msgstr "새글이 성공적으로 등록되었습니다."
  +#: ../plugin/Keywords.php:663
  +msgid "There are no changes found"
  +msgstr "변화가 없습니다"
   
  -#: ../plugin/bookmark.php:33
  -msgid "Invalid bookmark!"
  -msgstr "잘못된 북마크!"
  +#: ../plugin/Keywords.php:676
  +msgid "Update with these Keywords"
  +msgstr "키워드 갱신하기"
   
  -#: ../plugin/cacheadmin.php:105
  -msgid "You are not WikiMaster!!"
  -msgstr "위키관리자가 아닙니다!!"
  +#: ../plugin/Keywords.php:696 ../plugin/Keywords.php:700
  +msgid "alphabetically"
  +msgstr "알파벳"
   
  -#: ../plugin/cacheadmin.php:120
  -msgid "Clear cache dirs"
  -msgstr "캐쉬 디렉토리 지우기"
  +#: ../plugin/Keywords.php:697
  +msgid "by frequency"
  +msgstr "빈도수"
   
  -#: ../plugin/chat.php:36
  -msgid "No messages"
  -msgstr "메시지 없음"
  +#: ../plugin/Keywords.php:699
  +msgid "by size"
  +msgstr "크기"
   
  -#: ../plugin/chmod.php:18
  +#: ../plugin/Keywords.php:705
   #, c-format
  -msgid "Permission of \"%s\" changed !"
  -msgstr ""
  +msgid "Keywords list %s (or %s)"
  +msgstr "%s순 키워드 목록 (혹은 %s순)"
   
  -#: ../plugin/chmod.php:24
  +#: ../plugin/Keywords.php:710
   #, c-format
  -msgid "Fail to chmod \"%s\" !"
  -msgstr ""
  +msgid "Select keywords for %s"
  +msgstr "%s에 대해 키워드를 고르세요"
   
  -#: ../plugin/chmod.php:35
  -#, c-format
  -msgid "Change permission of \"%s\""
  -msgstr ""
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1417 ../wikilib.php:2914
  +msgid "Use more specific text"
  +msgstr "좀 더 자세히 입력하세요"
   
  -#: ../plugin/css.php:33 ../plugin/css.php:41
  -msgid "Back to UserPreferences"
  -msgstr "UserPreferences로 가기"
  +#: ../plugin/LikePages.php:109
  +msgid "These pages share a similar word..."
  +msgstr "비슷한 이름이 부분적으로 포함된 페이지..."
   
  -#: ../plugin/css.php:67
  -msgid "CSS disabled !"
  -msgstr ""
  +#: ../plugin/LikePages.php:123
  +msgid "These pages share an initial or final title word..."
  +msgstr "처음과 마지막부분의 이름이 포함된 페이지..."
   
  -#: ../plugin/format.php:17
  -msgid "It is a XML format !"
  -msgstr ""
  +#: ../plugin/LikePages.php:143
  +msgid "If you can't find this page, "
  +msgstr "페이지를 찾으실 수 없으면"
   
  -#: ../plugin/html2pdf.php:30
  -msgid "The TCPDF class not found!"
  -msgstr "TCPDF 클래스 찾을 수 없음!"
  +#: ../plugin/LikePages.php:148
  +msgid "No similar pages found"
  +msgstr "비슷한 페이지가 없습니다"
  +
  +#: ../plugin/LikePages.php:150
  +msgid "You are strongly recommened to find it in MetaWikis. "
  +msgstr "메타위키를 찾아보실 것을 권해드립니다. "
  +
  +#: ../plugin/LikePages.php:153
  +#, c-format
  +msgid "Like \"%s\""
  +msgstr "\"%s\"와 비슷한"
  +
  +#: ../plugin/LikePages.php:156
  +msgid "Search all MetaWikis"
  +msgstr "모든 메타위키 검색"
  +
  +#: ../plugin/LikePages.php:157
  +msgid "Slow Slow"
  +msgstr "매우 느림"
   
   #: ../plugin/login.php:29
   msgid "Login:"
  @@ -1213,7 +862,7 @@
   msgid "Edit man page"
   msgstr "man 페이지 고치기"
   
  -#: ../plugin/minilogin.php:18 ../wikilib.php:2273
  +#: ../plugin/minilogin.php:18 ../wikilib.php:2306
   msgid "Login or Join"
   msgstr "로그인 혹은 가입"
   
  @@ -1235,15 +884,19 @@
   msgid "Fail to save translations."
   msgstr "번역 저장을 실패했습니다"
   
  -#: ../plugin/msgtrans.php:23 ../plugin/userinfo.php:86
  +#: ../plugin/msgtrans.php:39 ../plugin/userinfo.php:86
   #, c-format
   msgid "You are not allowed to \"%s\" !"
   msgstr "'%s'은(는) 허락되지 않았습니다"
   
  -#: ../plugin/msgtrans.php:143
  +#: ../plugin/msgtrans.php:179
   msgid "Local translation files are successfully translated !\n"
   msgstr "번역이 성공적으로 갱신되었습니다\n"
   
  +#: ../plugin/Navigation.php:19
  +msgid "No Index page found"
  +msgstr "인덱스 페이지가 없습니다"
  +
   #: ../plugin/new.php:13 ../plugin/new.php:28
   msgid "Create a new page"
   msgstr "페이지 만들기"
  @@ -1256,6 +909,18 @@
   msgid "Normalize this page name"
   msgstr "페이지이름 정규화하기"
   
  +#: ../plugin/OeKaki.php:36
  +msgid "Draw a new picture"
  +msgstr "새 그림 그리기"
  +
  +#: ../plugin/OeKaki.php:118
  +msgid "Create new picture"
  +msgstr "새 그림 만들기"
  +
  +#: ../plugin/OeKaki.php:127
  +msgid "Edit Image"
  +msgstr "그림 고치기"
  +
   #: ../plugin/pagelist.php:117 ../plugin/pagelist.php:134
   #, c-format
   msgid "[%sh %sm ago]"
  @@ -1265,6 +930,29 @@
   msgid "First:"
   msgstr ""
   
  +#: ../plugin/pageview.php:75 ../plugin/SlideShow.php:121
  +msgid "Next:"
  +msgstr "다음:"
  +
  +#: ../plugin/PluginInfo.php:29
  +#, c-format
  +msgid "Total %s plugin activated."
  +msgstr "총 %d 개의 플러그인이 활성화됨"
  +
  +#: ../plugin/PluginInfo.php:34
  +#, c-format
  +msgid "%s is internal plugin."
  +msgstr "%s은(는) 내부 플러그인입니다."
  +
  +#: ../plugin/PluginInfo.php:36
  +#, c-format
  +msgid "%s plugin is not found."
  +msgstr "%s 플러그인을 찾을 수 없습니다"
  +
  +#: ../plugin/PluginInfo.php:54
  +msgid "Version"
  +msgstr "버전"
  +
   #: ../plugin/print.php:24
   #, c-format
   msgid "Retrieved from %s"
  @@ -1283,7 +971,7 @@
   msgid "Save Changes"
   msgstr "변경 저장"
   
  -#: ../plugin/processor/monimarkup.php:507 ../wiki.php:3883
  +#: ../plugin/processor/monimarkup.php:507 ../wiki.php:3858
   msgid "edit"
   msgstr "편집"
   
  @@ -1311,11 +999,60 @@
   msgid "Do you want to customize your quicklinks ?"
   msgstr "바로가기를 바꾸고 싶으신가요?"
   
  +#: ../plugin/Rating.php:58
  +msgid "Awful!"
  +msgstr "최악!"
  +
  +#: ../plugin/Rating.php:59
  +msgid "Not the worst ever."
  +msgstr "이보다 나쁠수 없음"
  +
  +#: ../plugin/Rating.php:60
  +msgid "Not bad!"
  +msgstr "나쁘지 않음!"
  +
  +#: ../plugin/Rating.php:61
  +msgid "Useful!"
  +msgstr "유용함"
  +
  +#: ../plugin/Rating.php:62
  +msgid "Very Gooood!"
  +msgstr "매우 좋음"
  +
  +#: ../plugin/Rating.php:84 ../plugin/security/community.php:26
  +#: ../plugin/security/community.php:36 ../plugin/security/community.php:46
  +#: ../plugin/security/community.php:61 ../plugin/security/mustlogin.php:29
  +#: ../plugin/security/mustlogin.php:40 ../plugin/security/mustlogin.php:51
  +#: ../plugin/security/mustlogin.php:67 ../plugin/security/needtologin.php:29
  +#: ../plugin/security/needtologin.php:40 ../plugin/security/needtologin.php:51
  +#: ../plugin/security/userbased.php:62 ../plugin/Vote.php:67
  +msgid "Please Login or make your ID on this Wiki ;)"
  +msgstr "로그인하거나 ID를 만드세요 ;)"
  +
  +#: ../plugin/Rating.php:188
  +msgid "Invalid rating request !"
  +msgstr ""
  +
  +#: ../plugin/Rating.php:203
  +msgid "Rating successfully !"
  +msgstr ""
  +
   #: ../plugin/rawblog.php:63 ../plugin/rawblog.php:73
   #, c-format
   msgid "Delete Blog entry \"%s\""
   msgstr "\"%s\"에서 블로그 항목 지우기"
   
  +#: ../plugin/rcsimport.php:32 ../plugin/rcsimport.php:88
  +#: ../plugin/rename.php:77 ../plugin/revert.php:82
  +#: ../plugin/UploadedFiles.php:452 ../plugin/userinfo.php:37
  +#: ../wikilib.php:1256 ../wikilib.php:2225
  +msgid "Password"
  +msgstr "비밀번호"
  +
  +#: ../plugin/rcsimport.php:76
  +msgid "Page name"
  +msgstr "페이지 이름"
  +
   #: ../plugin/rcs.php:13
   #, c-format
   msgid "%s does not support rcs options."
  @@ -1340,28 +1077,72 @@
   msgid "Only WikiMaster can execute rcs"
   msgstr "위키관리자만이 rcs를 실행할 수 있습니다"
   
  -#: ../plugin/rcsimport.php:76
  -msgid "Page name"
  -msgstr "페이지 이름"
  +#: ../plugin/rcspurge.php:24
  +msgid "Invalid rcspurge range"
  +msgstr "잘못된 rcspurge 범위"
  +
  +#: ../plugin/rcspurge.php:29
  +#, c-format
  +msgid "RCS purge \"%s\""
  +msgstr "RCS 삭제 \"%s\""
  +
  +#: ../plugin/rdf_blog.php:30 ../plugin/rss_blog.php:25
  +msgid "Blog Changes"
  +msgstr "바뀐 블로그"
  +
  +# c-format
  +#: ../plugin/rdf_blog.php:44 ../plugin/rss_blog.php:103
  +#, c-format
  +msgid "BlogChanges at %s"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:41
  +#, c-format
  +msgid "%d minute ago"
  +msgstr "%s분 전"
  +
  +#: ../plugin/RecentChanges.php:43
  +#, c-format
  +msgid "%d hours ago"
  +msgstr "%s시간 전"
  +
  +#: ../plugin/RecentChanges.php:45
  +#, c-format
  +msgid "%d days ago"
  +msgstr "%s일 전"
  +
  +#: ../plugin/RecentChanges.php:119
  +msgid "Change Date"
  +msgstr "변경일"
  +
  +#: ../plugin/RecentChanges.php:122
  +msgid "Hits"
  +msgstr "조회수"
  +
  +#: ../plugin/RecentChanges.php:168
  +msgid "Show changes for "
  +msgstr ""
   
  -#: ../plugin/rcspurge.php:24
  -msgid "Invalid rcspurge range"
  -msgstr "잘못된 rcspurge 범위"
  +#: ../plugin/RecentChanges.php:173
  +msgid "days ago"
  +msgstr "몇일 전"
   
  -#: ../plugin/rcspurge.php:29
  -#, c-format
  -msgid "RCS purge \"%s\""
  -msgstr "RCS 삭제 \"%s\""
  +#: ../plugin/RecentChanges.php:278
  +msgid "set bookmark"
  +msgstr "북마크"
   
  -#: ../plugin/rdf_blog.php:30 ../plugin/rss_blog.php:25
  -msgid "Blog Changes"
  -msgstr "바뀐 블로그"
  +#: ../plugin/RecentChanges.php:283
  +msgid "Bookmark"
  +msgstr "북마크"
   
  -# c-format
  -#: ../plugin/rdf_blog.php:44 ../plugin/rss_blog.php:103
  +#: ../plugin/RecentChanges.php:360
   #, c-format
  -msgid "BlogChanges at %s"
  -msgstr ""
  +msgid "%s changes"
  +msgstr "%s회 고침"
  +
  +#: ../plugin/RecentChanges.php:374
  +msgid "Recent Changes"
  +msgstr "최근 변경내역"
   
   #: ../plugin/referer.php:139
   msgid "Referer history"
  @@ -1400,6 +1181,10 @@
   msgid "New name:"
   msgstr "새이름:"
   
  +#: ../plugin/rename.php:69 ../plugin/UploadFile.php:421
  +msgid "Rename"
  +msgstr "이름바꾸기"
  +
   #: ../plugin/rename.php:74
   msgid "Rename and fix Backlinks"
   msgstr "이름 바꾸고 그 역링크 수정"
  @@ -1408,7 +1193,7 @@
   msgid "Only WikiMaster can rename this page"
   msgstr "위키관리자만이 페이지 이름을 바꿀 수 있습니다"
   
  -#: ../plugin/rename.php:79 ../wikilib.php:1276
  +#: ../plugin/rename.php:79 ../wikilib.php:1302
   msgid "with revision history"
   msgstr "버전 히스토리와 함께"
   
  @@ -1450,7 +1235,7 @@
   msgid "Select a tarball file to restore"
   msgstr "Restore하기 위한 tarball 파일을 고르세요"
   
  -#: ../plugin/revert.php:23 ../wiki.php:5475
  +#: ../plugin/revert.php:23 ../wiki.php:5458
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr "%s의 옛날 버전"
  @@ -1476,7 +1261,7 @@
   msgid "Are you really want to revert this page ?"
   msgstr "정말로 되돌리시겠습니까 ?"
   
  -#: ../plugin/revert.php:74 ../wikilib.php:1045
  +#: ../plugin/revert.php:74 ../wikilib.php:1071
   msgid "Summary"
   msgstr "요약"
   
  @@ -1595,6 +1380,26 @@
   msgid "Trackback sent"
   msgstr "트랙백"
   
  +#: ../plugin/SlideShow.php:28
  +msgid "No page found"
  +msgstr "페이지가 없습니다"
  +
  +#: ../plugin/SlideShow.php:102
  +msgid "Start:"
  +msgstr "시작:"
  +
  +#: ../plugin/SlideShow.php:111
  +msgid "End:"
  +msgstr "끝:"
  +
  +#: ../plugin/SlideShow.php:131
  +msgid "Prev:"
  +msgstr "이전:"
  +
  +#: ../plugin/SlideShow.php:138
  +msgid "Return"
  +msgstr "돌아가기"
  +
   #: ../plugin/subscribe.php:24 ../plugin/subscribe.php:28
   msgid "You did'nt subscribed any pages yet."
   msgstr "아직 구독중인 페이지가 없습니다."
  @@ -1645,6 +1450,34 @@
   msgid "Subscribed pages"
   msgstr "구독 목록"
   
  +#: ../plugin/SWFUpload.php:136
  +msgid "Files..."
  +msgstr "파일..."
  +
  +#: ../plugin/SWFUpload.php:137 ../plugin/UploadFile.php:426
  +msgid "Upload"
  +msgstr "올리기"
  +
  +#: ../plugin/SWFUpload.php:138
  +msgid "Cancel All files"
  +msgstr "모두 취소"
  +
  +#: ../plugin/SystemInfo.php:16
  +msgid "Number of Pages"
  +msgstr "페이지 개수"
  +
  +#: ../plugin/SystemInfo.php:17
  +msgid "HTTP Server Version"
  +msgstr "HTTP 서버 버전"
  +
  +#: ../plugin/SystemInfo.php:18
  +msgid "MoniWiki Version"
  +msgstr "모니위키 버전"
  +
  +#: ../plugin/SystemInfo.php:19
  +msgid "PHP Version"
  +msgstr "PHP 버전"
  +
   #: ../plugin/theme.php:29
   msgid "Theme cleared. Goto UserPreferences."
   msgstr "테마가 지워짐. UserPreferences로 가기"
  @@ -1669,6 +1502,47 @@
   msgid "Invalid use of ticket"
   msgstr ""
   
  +#: ../plugin/Tour.php:57
  +msgid "BackLinks"
  +msgstr "역링크"
  +
  +#: ../plugin/Tour.php:61
  +msgid "Keywords"
  +msgstr "키워드"
  +
  +#: ../plugin/Tour.php:70
  +#, c-format
  +msgid " from %s"
  +msgstr " %s에 대한"
  +
  +#: ../plugin/Tour.php:73
  +#, c-format
  +msgid "%s Tour %s"
  +msgstr "%2$s %1$s 여행"
  +
  +#: ../plugin/Tour.php:121
  +msgid "links"
  +msgstr "연결"
  +
  +#: ../plugin/Tour.php:123
  +msgid "deeper"
  +msgstr "깊게"
  +
  +#: ../plugin/Tour.php:124
  +#, c-format
  +msgid "More %s or more %s"
  +msgstr "더 많은 %s 혹은 %s"
  +
  +#: ../plugin/Tour.php:139
  +#, c-format
  +msgid "Total %d related keywords"
  +msgstr "%d 개의 연관된 키워드"
  +
  +#: ../plugin/Tour.php:142
  +#, c-format
  +msgid "Total %d related pages"
  +msgstr "%d 개의 연관된 페이지"
  +
   #: ../plugin/trackback.php:53
   msgid "TrackBack is not activated !"
   msgstr "TrackBack이 활성화되지 않았습니다 !"
  @@ -1695,6 +1569,155 @@
   msgid "No TrackBack entry found for %s"
   msgstr "%s에 대한 트랙백 항목을 찾을 수 없음"
   
  +#: ../plugin/TwinPages.php:13
  +#, c-format
  +msgid "TwinPages of %s"
  +msgstr "%s의 쌍둥이 페이지"
  +
  +#: ../plugin/TwinPages.php:19 ../wiki.php:5442
  +msgid "See [TwinPages]: "
  +msgstr ""
  +
  +#: ../plugin/TwinPages.php:21
  +msgid "No TwinPages found."
  +msgstr "쌍둥이 페이지가 없습니다"
  +
  +#: ../plugin/UploadedFiles.php:301
  +msgid "File name"
  +msgstr "파일 이름"
  +
  +#: ../plugin/UploadedFiles.php:302
  +msgid "Size"
  +msgstr "크기"
  +
  +#: ../plugin/UploadedFiles.php:353
  +msgid "Next page &raquo;"
  +msgstr "다음 페이지 &raquo;"
  +
  +#: ../plugin/UploadedFiles.php:355
  +msgid "&laquo; First page"
  +msgstr "&laquo; 첫 페이지"
  +
  +#: ../plugin/UploadedFiles.php:447
  +#, c-format
  +msgid "Total %d files"
  +msgstr "총 %d 개 파일"
  +
  +#: ../plugin/UploadedFiles.php:453 ../wikilib.php:1234
  +msgid "Delete selected files"
  +msgstr "선택된 파일 지우기"
  +
  +#: ../plugin/UploadFile.php:11
  +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:13
  +msgid ""
  +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in "
  +"the HTML form"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:15
  +msgid "The uploaded file was only partially uploaded"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:17
  +msgid "No file was uploaded"
  +msgstr "업로드된 파일이 없습니다"
  +
  +#: ../plugin/UploadFile.php:19
  +msgid "Missing a temporary folder"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:21
  +msgid "Failed to write file to disk"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:23
  +msgid "File upload stopped by extension"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:25
  +msgid "Unknown upload error"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:180 ../plugin/UploadFile.php:194
  +#, c-format
  +msgid "The %s type of %s is not allowed to upload"
  +msgstr "%s의 %s 형식은 업로드가 허락되지 않습니다"
  +
  +#: ../plugin/UploadFile.php:196
  +#, c-format
  +msgid "%s is not allowed to upload"
  +msgstr "%s은(는) 업로드가 허락되지 않습니다"
  +
  +#: ../plugin/UploadFile.php:251
  +#, c-format
  +msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
  +msgstr "파일 확장자를 \"%s\"에서 \"%s\"(으)로 바꿀 수 없음."
  +
  +#: ../plugin/UploadFile.php:268
  +msgid "ERROR:"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:300
  +#, c-format
  +msgid "File \"%s\" is uploaded successfully"
  +msgstr "\"%s\"파일이 성공적으로 올라갔습니다"
  +
  +#: ../plugin/UploadFile.php:366
  +msgid "Files are uploaded successfully"
  +msgstr "파일이 성공적으로 올라갔습니다."
  +
  +#: ../plugin/UploadFile.php:402
  +msgid "Multi upload form"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:415
  +msgid "Replace original file"
  +msgstr "원본 파일 교체"
  +
  +#: ../plugin/UploadFile.php:416
  +msgid "Rename if it already exist"
  +msgstr "이미 있을경우 이름 바꿈"
  +
  +#: ../plugin/UploadFile.php:429
  +#, c-format
  +msgid "or %s."
  +msgstr "혹은 %s."
  +
  +#: ../plugin/UploadFile.php:429
  +msgid "Multiple Upload files"
  +msgstr "여러파일 올리기"
  +
  +#: ../plugin/UploadFile.php:437 ../plugin/UploadForm.php:222
  +msgid "Upload files"
  +msgstr "파일올리기"
  +
  +#: ../plugin/UploadForm.php:17
  +msgid "Successfully Uploaded"
  +msgstr "성공적으로 올라감"
  +
  +#: ../plugin/UploadForm.php:18
  +msgid "Choose File"
  +msgstr "파일찾기"
  +
  +#: ../plugin/UploadForm.php:220
  +msgid "add files"
  +msgstr "파일추가"
  +
  +#: ../plugin/UploadForm.php:221
  +msgid "add a file"
  +msgstr "파일추가"
  +
  +#: ../plugin/UploadForm.php:223
  +msgid "Reset"
  +msgstr ""
  +
  +#: ../plugin/UploadForm.php:224
  +msgid "Attachments"
  +msgstr "첨부"
  +
   #: ../plugin/userform.php:35 ../plugin/userform.php:38
   msgid "Successfully confirmed"
   msgstr ""
  @@ -1742,7 +1765,7 @@
   msgid "Cookie deleted !"
   msgstr "쿠키가 지워졌습니다 !"
   
  -#: ../plugin/userform.php:107 ../wikilib.php:2343
  +#: ../plugin/userform.php:107 ../wikilib.php:2376
   msgid "E-mail new password"
   msgstr "새 비밀번호 받기"
   
  @@ -1823,8 +1846,8 @@
   msgid "You are not allowed to register on this wiki"
   msgstr "위키 등록이 허락되지 않았습니다"
   
  -#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5411
  -#: ../wiki.php:5422
  +#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5394
  +#: ../wiki.php:5405
   msgid "Please contact WikiMasters"
   msgstr "위키관리자에게 문의하세요"
   
  @@ -1933,6 +1956,22 @@
   msgid "User \"%s\" are deleted !"
   msgstr "사용자 \"%s\"(이)가 지워짐 !"
   
  +#: ../plugin/VisualTour.php:133
  +msgid "Normal"
  +msgstr "보통"
  +
  +#: ../plugin/VisualTour.php:135
  +msgid "Wider"
  +msgstr "넓게"
  +
  +#: ../plugin/VisualTour.php:137
  +msgid "Deeper"
  +msgstr "깊게"
  +
  +#: ../plugin/Vote.php:113
  +msgid "Voted successfully"
  +msgstr "투표가 성공되었습니다"
  +
   #: ../plugin/whois.php:119
   #, c-format
   msgid "Could not connect to %s server"
  @@ -1943,144 +1982,148 @@
   msgid "Whois search result for %s"
   msgstr "%s에 대한 Whois 서치 결과"
   
  -#: ../wiki.php:1249
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2664
  +msgid "Others"
  +msgstr ""
  +
  +#: ../wiki.php:1227
   #, c-format
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1671
  +#: ../wiki.php:1647
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
  -#: ../wiki.php:1681
  +#: ../wiki.php:1657
   msgid "File does not exist"
   msgstr "페이지가 없습니다"
   
  -#: ../wiki.php:2057
  +#: ../wiki.php:2041
   #, c-format
   msgid "File '%s' does not exist."
   msgstr "파일 '%s'이(가) 없습니다"
   
  -#: ../wiki.php:2947 ../wiki.php:2958 ../wiki.php:5654
  +#: ../wiki.php:2931 ../wiki.php:2942 ../wiki.php:5637
   msgid "Invalid ajax action."
   msgstr "잘못된 ajax 액션."
   
  -#: ../wiki.php:3458
  +#: ../wiki.php:3433
   msgid "Tags:"
   msgstr "태그:"
   
  -#: ../wiki.php:3486
  +#: ../wiki.php:3461
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:3486
  +#: ../wiki.php:3461
   #, c-format
   msgid "TwinPages"
   msgstr "TwinPages"
   
  -#: ../wiki.php:3491
  +#: ../wiki.php:3466
   msgid "See [TwinPages]:"
   msgstr ""
   
  -#: ../wiki.php:4063
  +#: ../wiki.php:4038
   msgid "Sister Sites Index"
   msgstr ""
   
  -#: ../wiki.php:4509 ../locale/dummy.php:6
  +#: ../wiki.php:4484 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "고치기"
   
  -#: ../wiki.php:4511
  +#: ../wiki.php:4486
   msgid "NotEditable"
   msgstr "고칠수 없음"
   
  -#: ../wiki.php:4515 ../locale/dummy.php:6
  +#: ../wiki.php:4490 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "보기"
   
  -#: ../wiki.php:4516 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4491 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "찾기"
   
  -#: ../wiki.php:4960
  +#: ../wiki.php:4937
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5224
  +#: ../wiki.php:5200
   msgid "Someone logged in at another place !"
   msgstr ""
   
  -#: ../wiki.php:5410
  +#: ../wiki.php:5393
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5421
  +#: ../wiki.php:5404
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:5461 ../wiki.php:5470 ../wikilib.php:1494
  +#: ../wiki.php:5444 ../wiki.php:5453 ../wikilib.php:1520
   msgid "Create this page"
   msgstr "페이지 만들기"
   
  -#: ../wiki.php:5472
  +#: ../wiki.php:5455
   #, c-format
   msgid "%s has saved revisions"
   msgstr "%s이(가) 저장된 옛버전이 있습니다"
   
  -#: ../wiki.php:5473 ../wiki.php:5480
  +#: ../wiki.php:5456 ../wiki.php:5463
   #, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr "%s 혹은 %s를 눌러 전체 찾기를 할 수 있습니다.\n"
   
  -#: ../wiki.php:5478
  +#: ../wiki.php:5461
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr "%s 페이지를 이곳 위키에서 찾을 수 없습니다"
   
  -#: ../wiki.php:5485
  +#: ../wiki.php:5468
   msgid "Please try to search with another word"
   msgstr "다른 단어로 찾아보세요."
   
  -#: ../wiki.php:5497
  +#: ../wiki.php:5480
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr ""
   "%s 아이콘을 누르거나 아래의 탬플리트 목록을 이용해 새 페이지를 만드세요:\n"
   
  -#: ../wiki.php:5500
  +#: ../wiki.php:5483
   msgid "You have no templates"
   msgstr "템플리트가 없습니다"
   
  -#: ../wiki.php:5502
  +#: ../wiki.php:5485
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr "탬플리트를 만드시려면 '%s' 형식의 이름을 가지는 페이지를 만드세요.\n"
   
  -#: ../wiki.php:5513
  +#: ../wiki.php:5496
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr "\"%s\"페이지로 부터 리다리렉트됨"
   
  -#: ../wiki.php:5656
  +#: ../wiki.php:5639
   msgid "Invalid macro action."
   msgstr "잘못된 마크로 액션."
   
  -#: ../wiki.php:5666
  +#: ../wiki.php:5649
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "'%s'은(는) 허락되지 않았습니다"
   
  -#: ../wiki.php:5686
  +#: ../wiki.php:5669
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "\"%s\"을(를) 실패했습니다 !"
   
  -#: ../wiki.php:5689
  +#: ../wiki.php:5672
   msgid "Please enter the valid password"
   msgstr "정확한 비밀번호를 넣어주세요"
   
  -#: ../wikilib.php:658
  +#: ../wikilib.php:682
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -2109,350 +2152,354 @@
   "<b>테이블</b>: || 셀 내용 |||| 두칸에 걸친 내용 ||;<br />\n"
   "테이블이나 제목 끝에 공백이 오면 안됩니다.<br />\n"
   
  -#: ../wikilib.php:763
  +#: ../wikilib.php:787
   msgid "You are not allowed to edit this page !"
   msgstr "이 페이지를 고칠 수 있도록 허락되어있지 않습니다 !"
   
  -#: ../wikilib.php:770
  +#: ../wikilib.php:794
   #, c-format
   msgid "Edit %s"
   msgstr "%s 고치기"
   
  -#: ../wikilib.php:791 ../wikilib.php:1063 ../wikilib.php:1711
  -#: ../wikilib.php:1801 ../wikilib.php:2276 ../wikilib.php:2330
  +#: ../wikilib.php:815 ../wikilib.php:1089 ../wikilib.php:1738
  +#: ../wikilib.php:1835 ../wikilib.php:2309 ../wikilib.php:2363
   msgid "Save"
   msgstr "저장"
   
  -#: ../wikilib.php:799 ../wikilib.php:1050 ../wikilib.php:1719
  -#: ../wikilib.php:1809
  +#: ../wikilib.php:823 ../wikilib.php:1076 ../wikilib.php:1746
  +#: ../wikilib.php:1843
   msgid "Skip to preview"
   msgstr "미리보기로"
   
  -#: ../wikilib.php:910
  +#: ../wikilib.php:936
   msgid "Use one of the following templates as an initial release :\n"
   msgstr "최초 버전으로 다음의 탬플리트를 활용하실 수 있습니다 :\n"
   
  -#: ../wikilib.php:912
  +#: ../wikilib.php:938
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr "탬플리트를 만드시려면 '%s' 형식의 이름으로 페이지를 만드세요."
   
  -#: ../wikilib.php:916
  +#: ../wikilib.php:942
   msgid "Merge"
   msgstr "병합"
   
  -#: ../wikilib.php:917
  +#: ../wikilib.php:943
   msgid "Merge manually"
   msgstr "수동 병합"
   
  -#: ../wikilib.php:918
  +#: ../wikilib.php:944
   msgid "Ignore conflicts"
   msgstr "충돌 무시"
   
  -#: ../wikilib.php:950
  +#: ../wikilib.php:976
   msgid "ReduceEditor"
   msgstr "편집창 줄이기"
   
  -#: ../wikilib.php:951
  +#: ../wikilib.php:977
   msgid "EnlargeEditor"
   msgstr "편집창 늘이기"
   
  -#: ../wikilib.php:955 ../locale/dummy.php:6
  +#: ../wikilib.php:981 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr "인터위키"
   
  -#: ../wikilib.php:957
  +#: ../wikilib.php:983
   msgid "HelpOnEditing"
   msgstr "고치기 도움말"
   
  -#: ../wikilib.php:989
  +#: ../wikilib.php:1015
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:1009
  +#: ../wikilib.php:1035
   msgid "Category"
   msgstr "분류"
   
  -#: ../wikilib.php:1017
  +#: ../wikilib.php:1043
   msgid " Select "
   msgstr " 선택 "
   
  -#: ../wikilib.php:1028
  +#: ../wikilib.php:1054
   msgid "Minor edit"
   msgstr ""
   
  -#: ../wikilib.php:1142
  +#: ../wikilib.php:1168
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:1147
  +#: ../wikilib.php:1173
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s은(는) 잘못된 액션"
   
  -#: ../wikilib.php:1149
  +#: ../wikilib.php:1175
   msgid "Is it valid action ?"
   msgstr "올바른 액션입니까 ?"
   
  -#: ../wikilib.php:1196
  +#: ../wikilib.php:1222
   #, c-format
   msgid "File '%s' is deleted"
   msgstr "'%s' 파일이 지워졌습니다"
   
  -#: ../wikilib.php:1198
  +#: ../wikilib.php:1224
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr "'%s' 지우기를 실패했습니다"
   
  -#: ../wikilib.php:1203
  +#: ../wikilib.php:1229
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr "'%s' 디렉토리가 지우졌습니다"
   
  -#: ../wikilib.php:1205
  +#: ../wikilib.php:1231
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr "'%s' 지우기를 실패했습니다"
   
  -#: ../wikilib.php:1215 ../wikilib.php:1235
  +#: ../wikilib.php:1241 ../wikilib.php:1261
   msgid "No files are selected !"
   msgstr "파일을 선택하지 않았습니다"
   
  -#: ../wikilib.php:1228
  +#: ../wikilib.php:1254
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr "정말로 '%s'(을)를 지우시겠습니까 ?"
   
  -#: ../wikilib.php:1232
  +#: ../wikilib.php:1258
   msgid "Delete selected file"
   msgstr "선택된 파일 지우기"
   
  -#: ../wikilib.php:1253
  +#: ../wikilib.php:1279
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr "%s(이)가 지워짐 !"
   
  -#: ../wikilib.php:1268
  +#: ../wikilib.php:1294
   msgid "Please delete this file manually."
   msgstr "파일을 직접 지워주세요."
   
  -#: ../wikilib.php:1270
  +#: ../wikilib.php:1296
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "\"%s\"을(를) 지울까요 ?"
   
  -#: ../wikilib.php:1323
  +#: ../wikilib.php:1349
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
  -#: ../wikilib.php:1496
  +#: ../wikilib.php:1522
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr " 혹은 %s를 눌러 전체찾기를 합니다.\n"
   
  -#: ../wikilib.php:1496
  +#: ../wikilib.php:1522
   msgid "title"
   msgstr "제목"
   
  -#: ../wikilib.php:1510
  +#: ../wikilib.php:1536
   msgid "Please try to fulltext search"
   msgstr "전체 찾기를 해보시기 바랍니다"
   
  -#: ../wikilib.php:1513
  +#: ../wikilib.php:1539
   #, c-format
   msgid "You can also click %s to fulltext search.\n"
   msgstr "%s 아이콘을 눌러 전체 찾기를 하실 수 있습니다.\n"
   
  -#: ../wikilib.php:1558 ../wikilib.php:1666
  +#: ../wikilib.php:1584 ../wikilib.php:1693
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "%s을(를) 고치는 동안 다른 사람이 이 페이지를 저장했습니다"
   
  -#: ../wikilib.php:1564
  +#: ../wikilib.php:1590
   msgid "Section edit is not valid for non-exists page."
   msgstr "없는 페이지에 대한 섹션 편집은 가능하지 않습니다"
   
  -#: ../wikilib.php:1597 ../wikilib.php:1842
  +#: ../wikilib.php:1623 ../wikilib.php:1875
   msgid "mail does not supported by default."
   msgstr "메일이 지원되지 않습니다"
   
  -#: ../wikilib.php:1601 ../wikilib.php:1846
  +#: ../wikilib.php:1627 ../wikilib.php:1879
   msgid "Sent notification mail."
   msgstr "메일을 보냈습니다"
   
  -#: ../wikilib.php:1603 ../wikilib.php:1848
  +#: ../wikilib.php:1629 ../wikilib.php:1881
   msgid "No subscribers found."
   msgstr "구독자가 없습니다"
   
  -#: ../wikilib.php:1608 ../wikilib.php:1853
  +#: ../wikilib.php:1634 ../wikilib.php:1886
   #, c-format
   msgid "%s is not editable"
   msgstr "%s(이)가 쓰기가능하지 않음"
   
  -#: ../wikilib.php:1610 ../wikilib.php:1855
  +#: ../wikilib.php:1636 ../wikilib.php:1888
   #, c-format
   msgid "%s is saved"
   msgstr "%s(이)가 저장됨"
   
  -#: ../wikilib.php:1657
  +#: ../wikilib.php:1684
   msgid "Goto Editor"
   msgstr "편집기로 가기"
   
  -#: ../wikilib.php:1671
  +#: ../wikilib.php:1698
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr "%s 페이지 최근 내용이 병합되었습니다."
   
  -#: ../wikilib.php:1672
  +#: ../wikilib.php:1699
   #, c-format
   msgid "%s is merged successfully"
   msgstr "%s 페이지가 성공적으로 병합되었습니다"
   
  -#: ../wikilib.php:1676
  +#: ../wikilib.php:1703
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr "%s에 대하여 병합 충돌이 발견되었습니다 !"
   
  -#: ../wikilib.php:1677
  +#: ../wikilib.php:1704
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr "%s에 대해 병합이 취소되었습니다."
   
  -#: ../wikilib.php:1678
  +#: ../wikilib.php:1705
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1679
  +#: ../wikilib.php:1706
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1684
  +#: ../wikilib.php:1711
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr "%s에 대해 병합을 합니다"
   
  -#: ../wikilib.php:1685
  +#: ../wikilib.php:1712
   msgid "Please resolve conflicts manually."
   msgstr "충돌을 직접 해결하시기 바랍니다."
   
  -#: ../wikilib.php:1688
  +#: ../wikilib.php:1715
   #, c-format
   msgid "Force merging for %s !"
   msgstr "%s에 대해 병합이 강제로 되었습니다 !"
   
  -#: ../wikilib.php:1689
  +#: ../wikilib.php:1716
   msgid "Please be careful, you could damage useful information."
   msgstr "주의하시기 바랍니다. 중요한 정보를 잃어버릴 수도 있습니다."
   
  -#: ../wikilib.php:1703
  +#: ../wikilib.php:1730
   msgid "Conflict error!"
   msgstr "충돌 오류!"
   
  -#: ../wikilib.php:1787
  +#: ../wikilib.php:1771
  +msgid "Too long Comment"
  +msgstr "요약이 너무 깁니다"
  +
  +#: ../wikilib.php:1821
   #, c-format
   msgid "Preview of %s"
   msgstr "%s 미리보기"
   
  -#: ../wikilib.php:1888
  +#: ../wikilib.php:1921
   msgid "Nobody subscribed to this page."
   msgstr "아무도 페이지를 구독하지 않고있습니다."
   
  -#: ../wikilib.php:1907
  +#: ../wikilib.php:1940
   #, c-format
   msgid "%s page is modified"
   msgstr "%s 페이지가 변경되었습니다"
   
  -#: ../wikilib.php:1936
  +#: ../wikilib.php:1969
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:1949
  +#: ../wikilib.php:1982
   msgid "Send notification mails to all subscribers"
   msgstr "모든 구독자에게 메일을 보냅니다"
   
  -#: ../wikilib.php:1954
  +#: ../wikilib.php:1987
   msgid "Mails are sent successfully"
   msgstr "메일이 성공적으로 보내졌습니다"
   
  -#: ../wikilib.php:1955
  +#: ../wikilib.php:1988
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr "'%s'에게 메일을 보냈습니다"
   
  -#: ../wikilib.php:1957
  +#: ../wikilib.php:1990
   msgid "Fail to send mail"
   msgstr "메일 보내기 실패했습니다"
   
  -#: ../wikilib.php:1968
  +#: ../wikilib.php:2001
   msgid "This wiki does not support sendmail"
   msgstr "위키에서 sendmail을 지원받지 못합니다"
   
  -#: ../wikilib.php:2066
  +#: ../wikilib.php:2099
   msgid "Invalid regular expression !"
   msgstr "잘못된 정규 표현식 !"
   
  -#: ../wikilib.php:2090
  +#: ../wikilib.php:2123
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:2093
  +#: ../wikilib.php:2126
   msgid "Infinite loop possible!"
   msgstr "무한 루프가 가능함!"
   
  -#: ../wikilib.php:2208
  +#: ../wikilib.php:2241
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:2209
  +#: ../wikilib.php:2242
   msgid "OpenID"
   msgstr ""
   
  -#: ../wikilib.php:2221 ../wikilib.php:2348
  +#: ../wikilib.php:2254 ../wikilib.php:2381
   msgid "ID"
   msgstr "아이디"
   
  -#: ../wikilib.php:2256 ../wikilib.php:2341
  +#: ../wikilib.php:2289 ../wikilib.php:2374
   msgid "Make profile"
   msgstr "사용자 등록"
   
  -#: ../wikilib.php:2258
  +#: ../wikilib.php:2291
   msgid "password again"
   msgstr "비밀번호 재입력"
   
  -#: ../wikilib.php:2260 ../wikilib.php:2309
  +#: ../wikilib.php:2293 ../wikilib.php:2342
   msgid "Mail"
   msgstr "메일"
   
  -#: ../wikilib.php:2282
  +#: ../wikilib.php:2315
   msgid "New password"
   msgstr "새 비밀번호"
   
  -#: ../wikilib.php:2287
  +#: ../wikilib.php:2320
   msgid "Nickname"
   msgstr "별명"
   
  -#: ../wikilib.php:2310
  +#: ../wikilib.php:2343
   msgid "Time Zone"
   msgstr "시간대"
   
  -#: ../wikilib.php:2319
  +#: ../wikilib.php:2352
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:2632
  +#: ../wikilib.php:2665
   msgid "Show all"
   msgstr "모두 보기"
   
  -#: ../wikilib.php:2770
  +#: ../wikilib.php:2803
   msgid "Contents"
   msgstr "목차"
   
  -#: ../wikilib.php:2890
  +#: ../wikilib.php:2923
   #, c-format
   msgid "Title search for \"%s\""
   msgstr "\"%s\"에 대한 제목 찾기"
  @@ -2771,6 +2818,9 @@
   msgid "view"
   msgstr "보기"
   
  +#~ msgid "Please check your php.ini setting"
  +#~ msgstr "php.ini 세팅을 확인해보시기 바랍니다"
  +
   #~ msgid "Diff"
   #~ msgstr "변화"
   
  
  
  
  1.29      +883 -836  moniwiki/locale/po/moniwiki.pot
  
  Index: moniwiki.pot
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/moniwiki.pot,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- moniwiki.pot	19 Aug 2009 07:35:01 -0000	1.28
  +++ moniwiki.pot	30 Sep 2009 16:04:54 -0000	1.29
  @@ -7,7 +7,7 @@
   msgstr ""
   "Project-Id-Version: PACKAGE VERSION\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2009-08-19 16:34+0900\n"
  +"POT-Creation-Date: 2009-10-01 01:04+0900\n"
   "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
   "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
   "Language-Team: LANGUAGE <LL@li.org>\n"
  @@ -15,6 +15,82 @@
   "Content-Type: text/plain; charset=CHARSET\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  +#: ../plugin/aclinfo.php:15
  +msgid "ACL is not enabled on this Wiki"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:21
  +msgid "Your ACL Info"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:23
  +msgid "You are wiki owner"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:25
  +msgid "You are wiki master"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:27
  +msgid "Allowed actions"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:32
  +msgid "Denied actions"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:38
  +msgid "Protected actions"
  +msgstr ""
  +
  +#: ../plugin/admin.php:136 ../plugin/PluginInfo.php:50
  +msgid "Description"
  +msgstr ""
  +
  +#: ../plugin/admin.php:139 ../plugin/PluginInfo.php:56
  +msgid "Author"
  +msgstr ""
  +
  +#: ../plugin/admin.php:141 ../plugin/PluginInfo.php:58
  +msgid "License"
  +msgstr ""
  +
  +#: ../plugin/admin.php:143 ../plugin/PluginInfo.php:60
  +msgid "Depend"
  +msgstr ""
  +
  +#: ../plugin/admin.php:147 ../plugin/PluginInfo.php:64
  +msgid "URL"
  +msgstr ""
  +
  +#: ../plugin/admin.php:191
  +msgid "Enabled plugins"
  +msgstr ""
  +
  +#: ../plugin/admin.php:193
  +msgid "Disabled plugins"
  +msgstr ""
  +
  +#: ../plugin/admin.php:201
  +msgid "Enabled processors"
  +msgstr ""
  +
  +#: ../plugin/admin.php:203
  +msgid "Disabled processors"
  +msgstr ""
  +
  +#: ../plugin/admin.php:206
  +msgid "Plugin/Processor settings are updated"
  +msgstr ""
  +
  +#: ../plugin/admin.php:212
  +msgid "Enable/disable plugins and processors"
  +msgstr ""
  +
  +#: ../plugin/atom.php:64 ../plugin/rss_rc.php:62
  +msgid "show changes"
  +msgstr ""
  +
   #: ../plugin/Attachment.php:70 ../plugin/Attachment.php:333
   #, c-format
   msgid "Upload new Attachment \"%s\""
  @@ -42,6 +118,140 @@
   msgid "Translate %s to %s"
   msgstr ""
   
  +#: ../plugin/backup.php:42
  +msgid "Your wiki is backuped successfully"
  +msgstr ""
  +
  +#: ../plugin/backup.php:49
  +msgid "Backup failed !"
  +msgstr ""
  +
  +#: ../plugin/backup.php:54
  +msgid "Did you want to Backup your wiki ?"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:493
  +msgid "This bbs does not exists yet. Please save this page first"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:617
  +msgid "No"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:626
  +msgid "Edit"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1257
  +msgid "Delete"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:657
  +msgid "Please check article numbers."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:737
  +msgid "More"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:782
  +msgid "New"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:784
  +msgid "Read"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:800
  +#, c-format
  +msgid "Total %s articles."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:836
  +#, c-format
  +msgid "Your IP address is not allowed to %s at this BBS"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:890
  +msgid "Successfully deleted."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:922
  +msgid "Fail to post comment."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:932
  +#, c-format
  +msgid "The article %s will be deleted."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:974
  +msgid "Invalid HomePage address."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:987
  +msgid "No Name error."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:997
  +msgid "No Subject error."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:1009 ../plugin/Comment.php:196 ../plugin/Gallery.php:174
  +#: ../wikilib.php:1609 ../wikilib.php:1815
  +msgid ""
  +"Sorry, can not save page because some messages are blocked in this wiki."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:1025
  +msgid "New post added successfully"
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:198
  +msgid "Category: "
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:200 ../locale/dummy.php:7
  +msgid "BlogChanges"
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:246
  +#, c-format
  +msgid "Invalid category expr \"%s\""
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:378 ../plugin/BlogChanges.php:380
  +#: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
  +msgid "Anonymous"
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  +#, c-format
  +msgid "%d comment"
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  +#, c-format
  +msgid "%d comments"
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:213
  +#: ../plugin/processor/blog.php:78
  +msgid "Add comment"
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:423 ../plugin/processor/blog.php:97
  +msgid "track back"
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:443
  +msgid "Previous"
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:446
  +msgid "Next"
  +msgstr ""
  +
   #: ../plugin/Blog.php:84
   #, c-format
   msgid "Blog cache of \"%s\" is refreshed"
  @@ -98,11 +308,11 @@
   msgstr ""
   
   #: ../plugin/Blog.php:262 ../plugin/Blog.php:333
  -#: ../plugin/RecentChanges.php:106
  +#: ../plugin/RecentChanges.php:119
   msgid "Title"
   msgstr ""
   
  -#: ../plugin/Blog.php:268 ../wikilib.php:1054
  +#: ../plugin/Blog.php:268 ../wikilib.php:1080
   msgid "GUI"
   msgstr ""
   
  @@ -114,49 +324,35 @@
   msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:198
  -msgid "Category: "
  +#: ../plugin/bookmark.php:33
  +msgid "Invalid bookmark!"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:200 ../locale/dummy.php:7
  -msgid "BlogChanges"
  +#: ../plugin/cacheadmin.php:105
  +msgid "You are not WikiMaster!!"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:246
  -#, c-format
  -msgid "Invalid category expr \"%s\""
  +#: ../plugin/cacheadmin.php:120
  +msgid "Clear cache dirs"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:378 ../plugin/BlogChanges.php:380
  -#: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
  -msgid "Anonymous"
  +#: ../plugin/chat.php:36
  +msgid "No messages"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  +#: ../plugin/chmod.php:18
   #, c-format
  -msgid "%d comment"
  +msgid "Permission of \"%s\" changed !"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  +#: ../plugin/chmod.php:24
   #, c-format
  -msgid "%d comments"
  -msgstr ""
  -
  -#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:213
  -#: ../plugin/processor/blog.php:78
  -msgid "Add comment"
  -msgstr ""
  -
  -#: ../plugin/BlogChanges.php:423 ../plugin/processor/blog.php:97
  -msgid "track back"
  -msgstr ""
  -
  -#: ../plugin/BlogChanges.php:443
  -msgid "Previous"
  +msgid "Fail to chmod \"%s\" !"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:446
  -msgid "Next"
  +#: ../plugin/chmod.php:35
  +#, c-format
  +msgid "Change permission of \"%s\""
   msgstr ""
   
   #: ../plugin/Clip.php:28
  @@ -183,8 +379,8 @@
   msgid "Comment"
   msgstr ""
   
  -#: ../plugin/Comment.php:93 ../wikilib.php:797 ../wikilib.php:1048
  -#: ../wikilib.php:1717 ../wikilib.php:1807 ../monisetup.php:1305
  +#: ../plugin/Comment.php:93 ../wikilib.php:821 ../wikilib.php:1074
  +#: ../wikilib.php:1744 ../wikilib.php:1841 ../monisetup.php:1305
   msgid "Preview"
   msgstr ""
   
  @@ -205,21 +401,15 @@
   msgstr ""
   
   #: ../plugin/Comment.php:169 ../plugin/userform.php:118
  -#: ../plugin/userform.php:181 ../plugin/userform.php:204 ../wikilib.php:1760
  +#: ../plugin/userform.php:181 ../plugin/userform.php:204 ../wikilib.php:1794
   msgid "Invalid ticket !"
   msgstr ""
   
   #: ../plugin/Comment.php:174 ../plugin/userform.php:120
  -#: ../plugin/userform.php:206 ../wikilib.php:1765
  +#: ../plugin/userform.php:206 ../wikilib.php:1799
   msgid "You need a ticket !"
   msgstr ""
   
  -#: ../plugin/Comment.php:196 ../plugin/Gallery.php:174 ../plugin/bbs.php:1009
  -#: ../wikilib.php:1583 ../wikilib.php:1781
  -msgid ""
  -"Sorry, can not save page because some messages are blocked in this wiki."
  -msgstr ""
  -
   #: ../plugin/Comment.php:202
   msgid "Preview comment"
   msgstr ""
  @@ -233,16 +423,24 @@
   msgid "Comment added successfully"
   msgstr ""
   
  -#: ../plugin/Diff.php:410 ../plugin/Info.php:240
  -msgid "No older revisions available"
  +#: ../plugin/css.php:33 ../plugin/css.php:41
  +msgid "Back to UserPreferences"
   msgstr ""
   
  -#: ../plugin/Diff.php:415 ../plugin/Info.php:246 ../plugin/rcsexport.php:13
  -#: ../plugin/rcsimport.php:13
  -msgid "Version info is not available in this wiki"
  -msgstr ""
  +#: ../plugin/css.php:67
  +msgid "CSS disabled !"
  +msgstr ""
  +
  +#: ../plugin/Diff.php:410 ../plugin/Info.php:246
  +msgid "No older revisions available"
  +msgstr ""
  +
  +#: ../plugin/Diff.php:415 ../plugin/Info.php:252 ../plugin/rcsexport.php:13
  +#: ../plugin/rcsimport.php:13
  +msgid "Version info is not available in this wiki"
  +msgstr ""
   
  -#: ../plugin/Diff.php:426 ../wikilib.php:1737
  +#: ../plugin/Diff.php:426 ../wikilib.php:1764
   msgid "No difference found"
   msgstr ""
   
  @@ -268,7 +466,7 @@
   msgid "Draw new picture"
   msgstr ""
   
  -#: ../plugin/Draw.php:92 ../plugin/UploadFile.php:252
  +#: ../plugin/Draw.php:92 ../plugin/UploadFile.php:289
   #, c-format
   msgid "Fail to copy \"%s\" to \"%s\""
   msgstr ""
  @@ -309,21 +507,25 @@
   msgstr ""
   
   #: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:38
  -#: ../wikilib.php:1504
  +#: ../wikilib.php:1530
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr ""
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1506
  +#: ../wikilib.php:1532
   msgid "page"
   msgstr ""
   
   #: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1506
  +#: ../wikilib.php:1532
   msgid "pages"
   msgstr ""
   
  +#: ../plugin/format.php:17
  +msgid "It is a XML format !"
  +msgstr ""
  +
   #: ../plugin/FullSearch.php:15
   #, c-format
   msgid "BackLinks search for \"%s\""
  @@ -338,8 +540,8 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4513
  -#: ../wikilib.php:1034
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4488
  +#: ../wikilib.php:1060
   msgid "Refresh"
   msgstr ""
   
  @@ -353,8 +555,8 @@
   msgid "You can also click %s to search title.\n"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5473 ../wiki.php:5480
  -#: ../wikilib.php:1514
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5456 ../wiki.php:5463
  +#: ../wikilib.php:1540
   msgid "here"
   msgstr ""
   
  @@ -370,7 +572,7 @@
   msgid "Case-sensitive searching"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:77 ../wikilib.php:2873 ../wikilib.php:2935
  +#: ../plugin/FullSearch.php:77 ../wikilib.php:2906 ../wikilib.php:2968
   msgid "Go"
   msgstr ""
   
  @@ -378,11 +580,19 @@
   msgid "Empty expression"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:144 ../wikilib.php:2894
  +#: ../plugin/FullSearch.php:144 ../wikilib.php:2927
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr ""
   
  +#: ../plugin/FullSearch.php:260
  +msgid " match"
  +msgstr ""
  +
  +#: ../plugin/FullSearch.php:260
  +msgid " matches"
  +msgstr ""
  +
   #: ../plugin/Gallery.php:245 ../plugin/UploadedFiles.php:287
   msgid "No files found"
   msgstr ""
  @@ -395,8 +605,8 @@
   msgid "show comments"
   msgstr ""
   
  -#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1570
  -#: ../wikilib.php:1735
  +#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1596
  +#: ../wikilib.php:1762 ../wikilib.php:1769
   #, c-format
   msgid "Go back or return to %s"
   msgstr ""
  @@ -409,6 +619,10 @@
   msgid "Comments is added"
   msgstr ""
   
  +#: ../plugin/html2pdf.php:30
  +msgid "The TCPDF class not found!"
  +msgstr ""
  +
   #: ../plugin/ImportUrl.php:132
   msgid "Import URL"
   msgstr ""
  @@ -429,11 +643,11 @@
   msgid "Date"
   msgstr ""
   
  -#: ../plugin/Info.php:45 ../plugin/RecentChanges.php:107
  +#: ../plugin/Info.php:45 ../plugin/RecentChanges.php:120
   msgid "Changes"
   msgstr ""
   
  -#: ../plugin/Info.php:46 ../plugin/RecentChanges.php:107
  +#: ../plugin/Info.php:46 ../plugin/RecentChanges.php:120
   msgid "Editor"
   msgstr ""
   
  @@ -468,719 +682,154 @@
   msgid "%s min ago"
   msgstr ""
   
  -#: ../plugin/Info.php:209 ../plugin/rename.php:80
  +#: ../plugin/Info.php:215 ../plugin/rename.php:80
   msgid "show only"
   msgstr ""
   
  -#: ../plugin/Info.php:213
  -msgid "purge"
  -msgstr ""
  -
  -#: ../plugin/JME.php:64
  -#, c-format
  -msgid "Draw a new molecule '%s'"
  -msgstr ""
  -
  -#: ../plugin/JME.php:66
  -msgid "Draw a new molecule"
  -msgstr ""
  -
  -#: ../plugin/JME.php:104
  -msgid "Molecule successfully added"
  -msgstr ""
  -
  -#: ../plugin/JME.php:110
  -msgid "Edit Molecule"
  -msgstr ""
  -
  -#: ../plugin/JME.php:140
  -msgid "Edit new molecule"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:414
  -msgid "hits"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:422
  -msgid "add keywords"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:425
  -msgid "Update keywords"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:427
  -msgid "Add keywords"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:428
  -msgid "Add as common words"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:429
  -msgid "Unselect all"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:430
  -msgid "Suggest new Keywords"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:439
  -msgid "select language"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:458
  -msgid "You are not able to add keywords."
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:472
  -#, c-format
  -msgid "%s is not found."
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:588
  -msgid "Common words are updated"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:635
  -#, c-format
  -msgid "Keywords for %s are updated"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:661
  -msgid "Keywords are updated"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:663
  -msgid "There are no changes found"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:676
  -msgid "Update with these Keywords"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:696 ../plugin/Keywords.php:700
  -msgid "alphabetically"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:697
  -msgid "by frequency"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:699
  -msgid "by size"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:705
  -#, c-format
  -msgid "Keywords list %s (or %s)"
  -msgstr ""
  -
  -#: ../plugin/Keywords.php:710
  -#, c-format
  -msgid "Select keywords for %s"
  -msgstr ""
  -
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1391 ../wikilib.php:2881
  -msgid "Use more specific text"
  -msgstr ""
  -
  -#: ../plugin/LikePages.php:109
  -msgid "These pages share a similar word..."
  -msgstr ""
  -
  -#: ../plugin/LikePages.php:123
  -msgid "These pages share an initial or final title word..."
  -msgstr ""
  -
  -#: ../plugin/LikePages.php:143
  -msgid "If you can't find this page, "
  -msgstr ""
  -
  -#: ../plugin/LikePages.php:148
  -msgid "No similar pages found"
  -msgstr ""
  -
  -#: ../plugin/LikePages.php:150
  -msgid "You are strongly recommened to find it in MetaWikis. "
  -msgstr ""
  -
  -#: ../plugin/LikePages.php:153
  -#, c-format
  -msgid "Like \"%s\""
  -msgstr ""
  -
  -#: ../plugin/LikePages.php:156
  -msgid "Search all MetaWikis"
  -msgstr ""
  -
  -#: ../plugin/LikePages.php:157
  -msgid "Slow Slow"
  -msgstr ""
  -
  -#: ../plugin/Navigation.php:19
  -msgid "No Index page found"
  -msgstr ""
  -
  -#: ../plugin/OeKaki.php:36
  -msgid "Draw a new picture"
  -msgstr ""
  -
  -#: ../plugin/OeKaki.php:118
  -msgid "Create new picture"
  -msgstr ""
  -
  -#: ../plugin/OeKaki.php:127
  -msgid "Edit Image"
  -msgstr ""
  -
  -#: ../plugin/PluginInfo.php:29
  -#, c-format
  -msgid "Total %s plugin activated."
  -msgstr ""
  -
  -#: ../plugin/PluginInfo.php:34
  -#, c-format
  -msgid "%s is internal plugin."
  -msgstr ""
  -
  -#: ../plugin/PluginInfo.php:36
  -#, c-format
  -msgid "%s plugin is not found."
  -msgstr ""
  -
  -#: ../plugin/PluginInfo.php:50 ../plugin/admin.php:136
  -msgid "Description"
  -msgstr ""
  -
  -#: ../plugin/PluginInfo.php:54
  -msgid "Version"
  -msgstr ""
  -
  -#: ../plugin/PluginInfo.php:56 ../plugin/admin.php:139
  -msgid "Author"
  -msgstr ""
  -
  -#: ../plugin/PluginInfo.php:58 ../plugin/admin.php:141
  -msgid "License"
  -msgstr ""
  -
  -#: ../plugin/PluginInfo.php:60 ../plugin/admin.php:143
  -msgid "Depend"
  -msgstr ""
  -
  -#: ../plugin/PluginInfo.php:64 ../plugin/admin.php:147
  -msgid "URL"
  -msgstr ""
  -
  -#: ../plugin/Rating.php:58
  -msgid "Awful!"
  -msgstr ""
  -
  -#: ../plugin/Rating.php:59
  -msgid "Not the worst ever."
  -msgstr ""
  -
  -#: ../plugin/Rating.php:60
  -msgid "Not bad!"
  -msgstr ""
  -
  -#: ../plugin/Rating.php:61
  -msgid "Useful!"
  -msgstr ""
  -
  -#: ../plugin/Rating.php:62
  -msgid "Very Gooood!"
  -msgstr ""
  -
  -#: ../plugin/Rating.php:84 ../plugin/Vote.php:67
  -#: ../plugin/security/community.php:26 ../plugin/security/community.php:36
  -#: ../plugin/security/community.php:46 ../plugin/security/community.php:61
  -#: ../plugin/security/mustlogin.php:29 ../plugin/security/mustlogin.php:40
  -#: ../plugin/security/mustlogin.php:51 ../plugin/security/mustlogin.php:67
  -#: ../plugin/security/needtologin.php:29 ../plugin/security/needtologin.php:40
  -#: ../plugin/security/needtologin.php:51 ../plugin/security/userbased.php:62
  -msgid "Please Login or make your ID on this Wiki ;)"
  -msgstr ""
  -
  -#: ../plugin/Rating.php:188
  -msgid "Invalid rating request !"
  -msgstr ""
  -
  -#: ../plugin/Rating.php:203
  -msgid "Rating successfully !"
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:28
  -#, c-format
  -msgid "%d minute ago"
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:30
  -#, c-format
  -msgid "%d hours ago"
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:32
  -#, c-format
  -msgid "%d days ago"
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:106
  -msgid "Change Date"
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:109
  -msgid "Hits"
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:155
  -msgid "Show changes for "
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:160
  -msgid "days ago"
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:265
  -msgid "set bookmark"
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:270
  -msgid "Bookmark"
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:338
  -#, c-format
  -msgid "%s changes"
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:352
  -msgid "Recent Changes"
  -msgstr ""
  -
  -#: ../plugin/SWFUpload.php:136
  -msgid "Files..."
  -msgstr ""
  -
  -#: ../plugin/SWFUpload.php:137 ../plugin/UploadFile.php:363
  -msgid "Upload"
  -msgstr ""
  -
  -#: ../plugin/SWFUpload.php:138
  -msgid "Cancel All files"
  -msgstr ""
  -
  -#: ../plugin/SlideShow.php:28
  -msgid "No page found"
  -msgstr ""
  -
  -#: ../plugin/SlideShow.php:102
  -msgid "Start:"
  -msgstr ""
  -
  -#: ../plugin/SlideShow.php:111
  -msgid "End:"
  -msgstr ""
  -
  -#: ../plugin/SlideShow.php:121 ../plugin/pageview.php:75
  -msgid "Next:"
  -msgstr ""
  -
  -#: ../plugin/SlideShow.php:131
  -msgid "Prev:"
  -msgstr ""
  -
  -#: ../plugin/SlideShow.php:138
  -msgid "Return"
  -msgstr ""
  -
  -#: ../plugin/SystemInfo.php:16
  -msgid "Number of Pages"
  -msgstr ""
  -
  -#: ../plugin/SystemInfo.php:17
  -msgid "HTTP Server Version"
  -msgstr ""
  -
  -#: ../plugin/SystemInfo.php:18
  -msgid "MoniWiki Version"
  -msgstr ""
  -
  -#: ../plugin/SystemInfo.php:19
  -msgid "PHP Version"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:57
  -msgid "BackLinks"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:61
  -msgid "Keywords"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:70
  -#, c-format
  -msgid " from %s"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:73
  -#, c-format
  -msgid "%s Tour %s"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:121
  -msgid "links"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:123
  -msgid "deeper"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:124
  -#, c-format
  -msgid "More %s or more %s"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:139
  -#, c-format
  -msgid "Total %d related keywords"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:142
  -#, c-format
  -msgid "Total %d related pages"
  -msgstr ""
  -
  -#: ../plugin/TwinPages.php:13
  -#, c-format
  -msgid "TwinPages of %s"
  -msgstr ""
  -
  -#: ../plugin/TwinPages.php:19 ../wiki.php:5459
  -msgid "See [TwinPages]: "
  -msgstr ""
  -
  -#: ../plugin/TwinPages.php:21
  -msgid "No TwinPages found."
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:149 ../plugin/UploadFile.php:163
  -#, c-format
  -msgid "The %s type of %s is not allowed to upload"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:165
  -#, c-format
  -msgid "%s is not allowed to upload"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:220
  -#, c-format
  -msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:253
  -msgid "Please check your php.ini setting"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:263
  -#, c-format
  -msgid "File \"%s\" is uploaded successfully"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:308
  -msgid "Files are uploaded successfully"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:343
  -msgid "Multi upload form"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:352
  -msgid "Replace original file"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:353
  -msgid "Rename if it already exist"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:358 ../plugin/rename.php:69
  -msgid "Rename"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:366
  -#, c-format
  -msgid "or %s."
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:366
  -msgid "Multiple Upload files"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:374 ../plugin/UploadForm.php:179
  -msgid "Upload files"
  -msgstr ""
  -
  -#: ../plugin/UploadForm.php:17
  -msgid "Successfully Uploaded"
  -msgstr ""
  -
  -#: ../plugin/UploadForm.php:18
  -msgid "Choose File"
  -msgstr ""
  -
  -#: ../plugin/UploadForm.php:177
  -msgid "add files"
  -msgstr ""
  -
  -#: ../plugin/UploadForm.php:178
  -msgid "add a file"
  -msgstr ""
  -
  -#: ../plugin/UploadForm.php:180
  -msgid "Reset"
  -msgstr ""
  -
  -#: ../plugin/UploadForm.php:181
  -msgid "Attachments"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:301
  -msgid "File name"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:302
  -msgid "Size"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:353
  -msgid "Next page &raquo;"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:355
  -msgid "&laquo; First page"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:447
  -#, c-format
  -msgid "Total %d files"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:452 ../plugin/rcsimport.php:32
  -#: ../plugin/rcsimport.php:88 ../plugin/rename.php:77 ../plugin/revert.php:82
  -#: ../plugin/userinfo.php:37 ../wikilib.php:1230 ../wikilib.php:2192
  -msgid "Password"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:453 ../wikilib.php:1208
  -msgid "Delete selected files"
  -msgstr ""
  -
  -#: ../plugin/VisualTour.php:133
  -msgid "Normal"
  -msgstr ""
  -
  -#: ../plugin/VisualTour.php:135
  -msgid "Wider"
  -msgstr ""
  -
  -#: ../plugin/VisualTour.php:137
  -msgid "Deeper"
  -msgstr ""
  -
  -#: ../plugin/Vote.php:113
  -msgid "Voted successfully"
  -msgstr ""
  -
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2631
  -msgid "Others"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:15
  -msgid "ACL is not enabled on this Wiki"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:21
  -msgid "Your ACL Info"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:23
  -msgid "You are wiki owner"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:25
  -msgid "You are wiki master"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:27
  -msgid "Allowed actions"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:32
  -msgid "Denied actions"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:38
  -msgid "Protected actions"
  -msgstr ""
  -
  -#: ../plugin/admin.php:191
  -msgid "Enabled plugins"
  -msgstr ""
  -
  -#: ../plugin/admin.php:193
  -msgid "Disabled plugins"
  -msgstr ""
  -
  -#: ../plugin/admin.php:201
  -msgid "Enabled processors"
  -msgstr ""
  -
  -#: ../plugin/admin.php:203
  -msgid "Disabled processors"
  +#: ../plugin/Info.php:219
  +msgid "purge"
   msgstr ""
   
  -#: ../plugin/admin.php:206
  -msgid "Plugin/Processor settings are updated"
  +#: ../plugin/JME.php:64
  +#, c-format
  +msgid "Draw a new molecule '%s'"
   msgstr ""
   
  -#: ../plugin/admin.php:212
  -msgid "Enable/disable plugins and processors"
  +#: ../plugin/JME.php:66
  +msgid "Draw a new molecule"
   msgstr ""
   
  -#: ../plugin/atom.php:64 ../plugin/rss_rc.php:62
  -msgid "show changes"
  +#: ../plugin/JME.php:104
  +msgid "Molecule successfully added"
   msgstr ""
   
  -#: ../plugin/backup.php:42
  -msgid "Your wiki is backuped successfully"
  +#: ../plugin/JME.php:110
  +msgid "Edit Molecule"
   msgstr ""
   
  -#: ../plugin/backup.php:49
  -msgid "Backup failed !"
  +#: ../plugin/JME.php:140
  +msgid "Edit new molecule"
   msgstr ""
   
  -#: ../plugin/backup.php:54
  -msgid "Did you want to Backup your wiki ?"
  +#: ../plugin/Keywords.php:414
  +msgid "hits"
   msgstr ""
   
  -#: ../plugin/bbs.php:493
  -msgid "This bbs does not exists yet. Please save this page first"
  +#: ../plugin/Keywords.php:422
  +msgid "add keywords"
   msgstr ""
   
  -#: ../plugin/bbs.php:617
  -msgid "No"
  +#: ../plugin/Keywords.php:425
  +msgid "Update keywords"
   msgstr ""
   
  -#: ../plugin/bbs.php:626
  -msgid "Edit"
  +#: ../plugin/Keywords.php:427
  +msgid "Add keywords"
   msgstr ""
   
  -#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1231
  -msgid "Delete"
  +#: ../plugin/Keywords.php:428
  +msgid "Add as common words"
   msgstr ""
   
  -#: ../plugin/bbs.php:657
  -msgid "Please check article numbers."
  +#: ../plugin/Keywords.php:429
  +msgid "Unselect all"
   msgstr ""
   
  -#: ../plugin/bbs.php:737
  -msgid "More"
  +#: ../plugin/Keywords.php:430
  +msgid "Suggest new Keywords"
   msgstr ""
   
  -#: ../plugin/bbs.php:782
  -msgid "New"
  +#: ../plugin/Keywords.php:439
  +msgid "select language"
   msgstr ""
   
  -#: ../plugin/bbs.php:784
  -msgid "Read"
  +#: ../plugin/Keywords.php:458
  +msgid "You are not able to add keywords."
   msgstr ""
   
  -#: ../plugin/bbs.php:800
  +#: ../plugin/Keywords.php:472
   #, c-format
  -msgid "Total %s articles."
  +msgid "%s is not found."
   msgstr ""
   
  -#: ../plugin/bbs.php:836
  -#, c-format
  -msgid "Your IP address is not allowed to %s at this BBS"
  +#: ../plugin/Keywords.php:588
  +msgid "Common words are updated"
   msgstr ""
   
  -#: ../plugin/bbs.php:890
  -msgid "Successfully deleted."
  +#: ../plugin/Keywords.php:635
  +#, c-format
  +msgid "Keywords for %s are updated"
   msgstr ""
   
  -#: ../plugin/bbs.php:922
  -msgid "Fail to post comment."
  +#: ../plugin/Keywords.php:661
  +msgid "Keywords are updated"
   msgstr ""
   
  -#: ../plugin/bbs.php:932
  -#, c-format
  -msgid "The article %s will be deleted."
  +#: ../plugin/Keywords.php:663
  +msgid "There are no changes found"
   msgstr ""
   
  -#: ../plugin/bbs.php:974
  -msgid "Invalid HomePage address."
  +#: ../plugin/Keywords.php:676
  +msgid "Update with these Keywords"
   msgstr ""
   
  -#: ../plugin/bbs.php:987
  -msgid "No Name error."
  +#: ../plugin/Keywords.php:696 ../plugin/Keywords.php:700
  +msgid "alphabetically"
   msgstr ""
   
  -#: ../plugin/bbs.php:997
  -msgid "No Subject error."
  +#: ../plugin/Keywords.php:697
  +msgid "by frequency"
   msgstr ""
   
  -#: ../plugin/bbs.php:1025
  -msgid "New post added successfully"
  +#: ../plugin/Keywords.php:699
  +msgid "by size"
   msgstr ""
   
  -#: ../plugin/bookmark.php:33
  -msgid "Invalid bookmark!"
  +#: ../plugin/Keywords.php:705
  +#, c-format
  +msgid "Keywords list %s (or %s)"
   msgstr ""
   
  -#: ../plugin/cacheadmin.php:105
  -msgid "You are not WikiMaster!!"
  +#: ../plugin/Keywords.php:710
  +#, c-format
  +msgid "Select keywords for %s"
   msgstr ""
   
  -#: ../plugin/cacheadmin.php:120
  -msgid "Clear cache dirs"
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1417 ../wikilib.php:2914
  +msgid "Use more specific text"
   msgstr ""
   
  -#: ../plugin/chat.php:36
  -msgid "No messages"
  +#: ../plugin/LikePages.php:109
  +msgid "These pages share a similar word..."
   msgstr ""
   
  -#: ../plugin/chmod.php:18
  -#, c-format
  -msgid "Permission of \"%s\" changed !"
  +#: ../plugin/LikePages.php:123
  +msgid "These pages share an initial or final title word..."
   msgstr ""
   
  -#: ../plugin/chmod.php:24
  -#, c-format
  -msgid "Fail to chmod \"%s\" !"
  +#: ../plugin/LikePages.php:143
  +msgid "If you can't find this page, "
   msgstr ""
   
  -#: ../plugin/chmod.php:35
  -#, c-format
  -msgid "Change permission of \"%s\""
  +#: ../plugin/LikePages.php:148
  +msgid "No similar pages found"
   msgstr ""
   
  -#: ../plugin/css.php:33 ../plugin/css.php:41
  -msgid "Back to UserPreferences"
  +#: ../plugin/LikePages.php:150
  +msgid "You are strongly recommened to find it in MetaWikis. "
   msgstr ""
   
  -#: ../plugin/css.php:67
  -msgid "CSS disabled !"
  +#: ../plugin/LikePages.php:153
  +#, c-format
  +msgid "Like \"%s\""
   msgstr ""
   
  -#: ../plugin/format.php:17
  -msgid "It is a XML format !"
  +#: ../plugin/LikePages.php:156
  +msgid "Search all MetaWikis"
   msgstr ""
   
  -#: ../plugin/html2pdf.php:30
  -msgid "The TCPDF class not found!"
  +#: ../plugin/LikePages.php:157
  +msgid "Slow Slow"
   msgstr ""
   
   #: ../plugin/login.php:29
  @@ -1215,7 +864,7 @@
   msgid "Edit man page"
   msgstr ""
   
  -#: ../plugin/minilogin.php:18 ../wikilib.php:2273
  +#: ../plugin/minilogin.php:18 ../wikilib.php:2306
   msgid "Login or Join"
   msgstr ""
   
  @@ -1237,15 +886,19 @@
   msgid "Fail to save translations."
   msgstr ""
   
  -#: ../plugin/msgtrans.php:23 ../plugin/userinfo.php:86
  +#: ../plugin/msgtrans.php:39 ../plugin/userinfo.php:86
   #, c-format
   msgid "You are not allowed to \"%s\" !"
   msgstr ""
   
  -#: ../plugin/msgtrans.php:143
  +#: ../plugin/msgtrans.php:179
   msgid "Local translation files are successfully translated !\n"
   msgstr ""
   
  +#: ../plugin/Navigation.php:19
  +msgid "No Index page found"
  +msgstr ""
  +
   #: ../plugin/new.php:13 ../plugin/new.php:28
   msgid "Create a new page"
   msgstr ""
  @@ -1258,6 +911,18 @@
   msgid "Normalize this page name"
   msgstr ""
   
  +#: ../plugin/OeKaki.php:36
  +msgid "Draw a new picture"
  +msgstr ""
  +
  +#: ../plugin/OeKaki.php:118
  +msgid "Create new picture"
  +msgstr ""
  +
  +#: ../plugin/OeKaki.php:127
  +msgid "Edit Image"
  +msgstr ""
  +
   #: ../plugin/pagelist.php:117 ../plugin/pagelist.php:134
   #, c-format
   msgid "[%sh %sm ago]"
  @@ -1267,6 +932,29 @@
   msgid "First:"
   msgstr ""
   
  +#: ../plugin/pageview.php:75 ../plugin/SlideShow.php:121
  +msgid "Next:"
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:29
  +#, c-format
  +msgid "Total %s plugin activated."
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:34
  +#, c-format
  +msgid "%s is internal plugin."
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:36
  +#, c-format
  +msgid "%s plugin is not found."
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:54
  +msgid "Version"
  +msgstr ""
  +
   #: ../plugin/print.php:24
   #, c-format
   msgid "Retrieved from %s"
  @@ -1285,7 +973,7 @@
   msgid "Save Changes"
   msgstr ""
   
  -#: ../plugin/processor/monimarkup.php:507 ../wiki.php:3883
  +#: ../plugin/processor/monimarkup.php:507 ../wiki.php:3858
   msgid "edit"
   msgstr ""
   
  @@ -1313,11 +1001,60 @@
   msgid "Do you want to customize your quicklinks ?"
   msgstr ""
   
  +#: ../plugin/Rating.php:58
  +msgid "Awful!"
  +msgstr ""
  +
  +#: ../plugin/Rating.php:59
  +msgid "Not the worst ever."
  +msgstr ""
  +
  +#: ../plugin/Rating.php:60
  +msgid "Not bad!"
  +msgstr ""
  +
  +#: ../plugin/Rating.php:61
  +msgid "Useful!"
  +msgstr ""
  +
  +#: ../plugin/Rating.php:62
  +msgid "Very Gooood!"
  +msgstr ""
  +
  +#: ../plugin/Rating.php:84 ../plugin/security/community.php:26
  +#: ../plugin/security/community.php:36 ../plugin/security/community.php:46
  +#: ../plugin/security/community.php:61 ../plugin/security/mustlogin.php:29
  +#: ../plugin/security/mustlogin.php:40 ../plugin/security/mustlogin.php:51
  +#: ../plugin/security/mustlogin.php:67 ../plugin/security/needtologin.php:29
  +#: ../plugin/security/needtologin.php:40 ../plugin/security/needtologin.php:51
  +#: ../plugin/security/userbased.php:62 ../plugin/Vote.php:67
  +msgid "Please Login or make your ID on this Wiki ;)"
  +msgstr ""
  +
  +#: ../plugin/Rating.php:188
  +msgid "Invalid rating request !"
  +msgstr ""
  +
  +#: ../plugin/Rating.php:203
  +msgid "Rating successfully !"
  +msgstr ""
  +
   #: ../plugin/rawblog.php:63 ../plugin/rawblog.php:73
   #, c-format
   msgid "Delete Blog entry \"%s\""
   msgstr ""
   
  +#: ../plugin/rcsimport.php:32 ../plugin/rcsimport.php:88
  +#: ../plugin/rename.php:77 ../plugin/revert.php:82
  +#: ../plugin/UploadedFiles.php:452 ../plugin/userinfo.php:37
  +#: ../wikilib.php:1256 ../wikilib.php:2225
  +msgid "Password"
  +msgstr ""
  +
  +#: ../plugin/rcsimport.php:76
  +msgid "Page name"
  +msgstr ""
  +
   #: ../plugin/rcs.php:13
   #, c-format
   msgid "%s does not support rcs options."
  @@ -1338,30 +1075,74 @@
   msgid "Change options for \"%s\" ?"
   msgstr ""
   
  -#: ../plugin/rcs.php:47
  -msgid "Only WikiMaster can execute rcs"
  +#: ../plugin/rcs.php:47
  +msgid "Only WikiMaster can execute rcs"
  +msgstr ""
  +
  +#: ../plugin/rcspurge.php:24
  +msgid "Invalid rcspurge range"
  +msgstr ""
  +
  +#: ../plugin/rcspurge.php:29
  +#, c-format
  +msgid "RCS purge \"%s\""
  +msgstr ""
  +
  +#: ../plugin/rdf_blog.php:30 ../plugin/rss_blog.php:25
  +msgid "Blog Changes"
  +msgstr ""
  +
  +#: ../plugin/rdf_blog.php:44 ../plugin/rss_blog.php:103
  +#, c-format
  +msgid "BlogChanges at %s"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:41
  +#, c-format
  +msgid "%d minute ago"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:43
  +#, c-format
  +msgid "%d hours ago"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:45
  +#, c-format
  +msgid "%d days ago"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:119
  +msgid "Change Date"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:122
  +msgid "Hits"
   msgstr ""
   
  -#: ../plugin/rcsimport.php:76
  -msgid "Page name"
  +#: ../plugin/RecentChanges.php:168
  +msgid "Show changes for "
   msgstr ""
   
  -#: ../plugin/rcspurge.php:24
  -msgid "Invalid rcspurge range"
  +#: ../plugin/RecentChanges.php:173
  +msgid "days ago"
   msgstr ""
   
  -#: ../plugin/rcspurge.php:29
  -#, c-format
  -msgid "RCS purge \"%s\""
  +#: ../plugin/RecentChanges.php:278
  +msgid "set bookmark"
   msgstr ""
   
  -#: ../plugin/rdf_blog.php:30 ../plugin/rss_blog.php:25
  -msgid "Blog Changes"
  +#: ../plugin/RecentChanges.php:283
  +msgid "Bookmark"
   msgstr ""
   
  -#: ../plugin/rdf_blog.php:44 ../plugin/rss_blog.php:103
  +#: ../plugin/RecentChanges.php:360
   #, c-format
  -msgid "BlogChanges at %s"
  +msgid "%s changes"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:374
  +msgid "Recent Changes"
   msgstr ""
   
   #: ../plugin/referer.php:139
  @@ -1401,6 +1182,10 @@
   msgid "New name:"
   msgstr ""
   
  +#: ../plugin/rename.php:69 ../plugin/UploadFile.php:421
  +msgid "Rename"
  +msgstr ""
  +
   #: ../plugin/rename.php:74
   msgid "Rename and fix Backlinks"
   msgstr ""
  @@ -1409,7 +1194,7 @@
   msgid "Only WikiMaster can rename this page"
   msgstr ""
   
  -#: ../plugin/rename.php:79 ../wikilib.php:1276
  +#: ../plugin/rename.php:79 ../wikilib.php:1302
   msgid "with revision history"
   msgstr ""
   
  @@ -1451,7 +1236,7 @@
   msgid "Select a tarball file to restore"
   msgstr ""
   
  -#: ../plugin/revert.php:23 ../wiki.php:5475
  +#: ../plugin/revert.php:23 ../wiki.php:5458
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr ""
  @@ -1477,7 +1262,7 @@
   msgid "Are you really want to revert this page ?"
   msgstr ""
   
  -#: ../plugin/revert.php:74 ../wikilib.php:1045
  +#: ../plugin/revert.php:74 ../wikilib.php:1071
   msgid "Summary"
   msgstr ""
   
  @@ -1596,6 +1381,26 @@
   msgid "Trackback sent"
   msgstr ""
   
  +#: ../plugin/SlideShow.php:28
  +msgid "No page found"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:102
  +msgid "Start:"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:111
  +msgid "End:"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:131
  +msgid "Prev:"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:138
  +msgid "Return"
  +msgstr ""
  +
   #: ../plugin/subscribe.php:24 ../plugin/subscribe.php:28
   msgid "You did'nt subscribed any pages yet."
   msgstr ""
  @@ -1642,6 +1447,34 @@
   msgid "Subscribed pages"
   msgstr ""
   
  +#: ../plugin/SWFUpload.php:136
  +msgid "Files..."
  +msgstr ""
  +
  +#: ../plugin/SWFUpload.php:137 ../plugin/UploadFile.php:426
  +msgid "Upload"
  +msgstr ""
  +
  +#: ../plugin/SWFUpload.php:138
  +msgid "Cancel All files"
  +msgstr ""
  +
  +#: ../plugin/SystemInfo.php:16
  +msgid "Number of Pages"
  +msgstr ""
  +
  +#: ../plugin/SystemInfo.php:17
  +msgid "HTTP Server Version"
  +msgstr ""
  +
  +#: ../plugin/SystemInfo.php:18
  +msgid "MoniWiki Version"
  +msgstr ""
  +
  +#: ../plugin/SystemInfo.php:19
  +msgid "PHP Version"
  +msgstr ""
  +
   #: ../plugin/theme.php:29
   msgid "Theme cleared. Goto UserPreferences."
   msgstr ""
  @@ -1666,6 +1499,47 @@
   msgid "Invalid use of ticket"
   msgstr ""
   
  +#: ../plugin/Tour.php:57
  +msgid "BackLinks"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:61
  +msgid "Keywords"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:70
  +#, c-format
  +msgid " from %s"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:73
  +#, c-format
  +msgid "%s Tour %s"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:121
  +msgid "links"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:123
  +msgid "deeper"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:124
  +#, c-format
  +msgid "More %s or more %s"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:139
  +#, c-format
  +msgid "Total %d related keywords"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:142
  +#, c-format
  +msgid "Total %d related pages"
  +msgstr ""
  +
   #: ../plugin/trackback.php:53
   msgid "TrackBack is not activated !"
   msgstr ""
  @@ -1692,6 +1566,155 @@
   msgid "No TrackBack entry found for %s"
   msgstr ""
   
  +#: ../plugin/TwinPages.php:13
  +#, c-format
  +msgid "TwinPages of %s"
  +msgstr ""
  +
  +#: ../plugin/TwinPages.php:19 ../wiki.php:5442
  +msgid "See [TwinPages]: "
  +msgstr ""
  +
  +#: ../plugin/TwinPages.php:21
  +msgid "No TwinPages found."
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:301
  +msgid "File name"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:302
  +msgid "Size"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:353
  +msgid "Next page &raquo;"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:355
  +msgid "&laquo; First page"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:447
  +#, c-format
  +msgid "Total %d files"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:453 ../wikilib.php:1234
  +msgid "Delete selected files"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:11
  +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:13
  +msgid ""
  +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in "
  +"the HTML form"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:15
  +msgid "The uploaded file was only partially uploaded"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:17
  +msgid "No file was uploaded"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:19
  +msgid "Missing a temporary folder"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:21
  +msgid "Failed to write file to disk"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:23
  +msgid "File upload stopped by extension"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:25
  +msgid "Unknown upload error"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:180 ../plugin/UploadFile.php:194
  +#, c-format
  +msgid "The %s type of %s is not allowed to upload"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:196
  +#, c-format
  +msgid "%s is not allowed to upload"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:251
  +#, c-format
  +msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:268
  +msgid "ERROR:"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:300
  +#, c-format
  +msgid "File \"%s\" is uploaded successfully"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:366
  +msgid "Files are uploaded successfully"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:402
  +msgid "Multi upload form"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:415
  +msgid "Replace original file"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:416
  +msgid "Rename if it already exist"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:429
  +#, c-format
  +msgid "or %s."
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:429
  +msgid "Multiple Upload files"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:437 ../plugin/UploadForm.php:222
  +msgid "Upload files"
  +msgstr ""
  +
  +#: ../plugin/UploadForm.php:17
  +msgid "Successfully Uploaded"
  +msgstr ""
  +
  +#: ../plugin/UploadForm.php:18
  +msgid "Choose File"
  +msgstr ""
  +
  +#: ../plugin/UploadForm.php:220
  +msgid "add files"
  +msgstr ""
  +
  +#: ../plugin/UploadForm.php:221
  +msgid "add a file"
  +msgstr ""
  +
  +#: ../plugin/UploadForm.php:223
  +msgid "Reset"
  +msgstr ""
  +
  +#: ../plugin/UploadForm.php:224
  +msgid "Attachments"
  +msgstr ""
  +
   #: ../plugin/userform.php:35 ../plugin/userform.php:38
   msgid "Successfully confirmed"
   msgstr ""
  @@ -1739,7 +1762,7 @@
   msgid "Cookie deleted !"
   msgstr ""
   
  -#: ../plugin/userform.php:107 ../wikilib.php:2343
  +#: ../plugin/userform.php:107 ../wikilib.php:2376
   msgid "E-mail new password"
   msgstr ""
   
  @@ -1820,8 +1843,8 @@
   msgid "You are not allowed to register on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5411
  -#: ../wiki.php:5422
  +#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5394
  +#: ../wiki.php:5405
   msgid "Please contact WikiMasters"
   msgstr ""
   
  @@ -1930,6 +1953,22 @@
   msgid "User \"%s\" are deleted !"
   msgstr ""
   
  +#: ../plugin/VisualTour.php:133
  +msgid "Normal"
  +msgstr ""
  +
  +#: ../plugin/VisualTour.php:135
  +msgid "Wider"
  +msgstr ""
  +
  +#: ../plugin/VisualTour.php:137
  +msgid "Deeper"
  +msgstr ""
  +
  +#: ../plugin/Vote.php:113
  +msgid "Voted successfully"
  +msgstr ""
  +
   #: ../plugin/whois.php:119
   #, c-format
   msgid "Could not connect to %s server"
  @@ -1940,143 +1979,147 @@
   msgid "Whois search result for %s"
   msgstr ""
   
  -#: ../wiki.php:1249
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2664
  +msgid "Others"
  +msgstr ""
  +
  +#: ../wiki.php:1227
   #, c-format
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1671
  +#: ../wiki.php:1647
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
  -#: ../wiki.php:1681
  +#: ../wiki.php:1657
   msgid "File does not exist"
   msgstr ""
   
  -#: ../wiki.php:2057
  +#: ../wiki.php:2041
   #, c-format
   msgid "File '%s' does not exist."
   msgstr ""
   
  -#: ../wiki.php:2947 ../wiki.php:2958 ../wiki.php:5654
  +#: ../wiki.php:2931 ../wiki.php:2942 ../wiki.php:5637
   msgid "Invalid ajax action."
   msgstr ""
   
  -#: ../wiki.php:3458
  +#: ../wiki.php:3433
   msgid "Tags:"
   msgstr ""
   
  -#: ../wiki.php:3486
  +#: ../wiki.php:3461
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:3486
  +#: ../wiki.php:3461
   #, c-format
   msgid "TwinPages"
   msgstr ""
   
  -#: ../wiki.php:3491
  +#: ../wiki.php:3466
   msgid "See [TwinPages]:"
   msgstr ""
   
  -#: ../wiki.php:4063
  +#: ../wiki.php:4038
   msgid "Sister Sites Index"
   msgstr ""
   
  -#: ../wiki.php:4509 ../locale/dummy.php:6
  +#: ../wiki.php:4484 ../locale/dummy.php:6
   msgid "EditText"
   msgstr ""
   
  -#: ../wiki.php:4511
  +#: ../wiki.php:4486
   msgid "NotEditable"
   msgstr ""
   
  -#: ../wiki.php:4515 ../locale/dummy.php:6
  +#: ../wiki.php:4490 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:4516 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4491 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr ""
   
  -#: ../wiki.php:4960
  +#: ../wiki.php:4937
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5224
  +#: ../wiki.php:5200
   msgid "Someone logged in at another place !"
   msgstr ""
   
  -#: ../wiki.php:5410
  +#: ../wiki.php:5393
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5421
  +#: ../wiki.php:5404
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:5461 ../wiki.php:5470 ../wikilib.php:1494
  +#: ../wiki.php:5444 ../wiki.php:5453 ../wikilib.php:1520
   msgid "Create this page"
   msgstr ""
   
  -#: ../wiki.php:5472
  +#: ../wiki.php:5455
   #, c-format
   msgid "%s has saved revisions"
   msgstr ""
   
  -#: ../wiki.php:5473 ../wiki.php:5480
  +#: ../wiki.php:5456 ../wiki.php:5463
   #, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr ""
   
  -#: ../wiki.php:5478
  +#: ../wiki.php:5461
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr ""
   
  -#: ../wiki.php:5485
  +#: ../wiki.php:5468
   msgid "Please try to search with another word"
   msgstr ""
   
  -#: ../wiki.php:5497
  +#: ../wiki.php:5480
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr ""
   
  -#: ../wiki.php:5500
  +#: ../wiki.php:5483
   msgid "You have no templates"
   msgstr ""
   
  -#: ../wiki.php:5502
  +#: ../wiki.php:5485
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
   
  -#: ../wiki.php:5513
  +#: ../wiki.php:5496
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
  -#: ../wiki.php:5656
  +#: ../wiki.php:5639
   msgid "Invalid macro action."
   msgstr ""
   
  -#: ../wiki.php:5666
  +#: ../wiki.php:5649
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr ""
   
  -#: ../wiki.php:5686
  +#: ../wiki.php:5669
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:5689
  +#: ../wiki.php:5672
   msgid "Please enter the valid password"
   msgstr ""
   
  -#: ../wikilib.php:658
  +#: ../wikilib.php:682
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -2093,350 +2136,354 @@
   "no trailing white space allowed after tables or titles.<br />\n"
   msgstr ""
   
  -#: ../wikilib.php:763
  +#: ../wikilib.php:787
   msgid "You are not allowed to edit this page !"
   msgstr ""
   
  -#: ../wikilib.php:770
  +#: ../wikilib.php:794
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
  -#: ../wikilib.php:791 ../wikilib.php:1063 ../wikilib.php:1711
  -#: ../wikilib.php:1801 ../wikilib.php:2276 ../wikilib.php:2330
  +#: ../wikilib.php:815 ../wikilib.php:1089 ../wikilib.php:1738
  +#: ../wikilib.php:1835 ../wikilib.php:2309 ../wikilib.php:2363
   msgid "Save"
   msgstr ""
   
  -#: ../wikilib.php:799 ../wikilib.php:1050 ../wikilib.php:1719
  -#: ../wikilib.php:1809
  +#: ../wikilib.php:823 ../wikilib.php:1076 ../wikilib.php:1746
  +#: ../wikilib.php:1843
   msgid "Skip to preview"
   msgstr ""
   
  -#: ../wikilib.php:910
  +#: ../wikilib.php:936
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   
  -#: ../wikilib.php:912
  +#: ../wikilib.php:938
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr ""
   
  -#: ../wikilib.php:916
  +#: ../wikilib.php:942
   msgid "Merge"
   msgstr ""
   
  -#: ../wikilib.php:917
  +#: ../wikilib.php:943
   msgid "Merge manually"
   msgstr ""
   
  -#: ../wikilib.php:918
  +#: ../wikilib.php:944
   msgid "Ignore conflicts"
   msgstr ""
   
  -#: ../wikilib.php:950
  +#: ../wikilib.php:976
   msgid "ReduceEditor"
   msgstr ""
   
  -#: ../wikilib.php:951
  +#: ../wikilib.php:977
   msgid "EnlargeEditor"
   msgstr ""
   
  -#: ../wikilib.php:955 ../locale/dummy.php:6
  +#: ../wikilib.php:981 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
  -#: ../wikilib.php:957
  +#: ../wikilib.php:983
   msgid "HelpOnEditing"
   msgstr ""
   
  -#: ../wikilib.php:989
  +#: ../wikilib.php:1015
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:1009
  +#: ../wikilib.php:1035
   msgid "Category"
   msgstr ""
   
  -#: ../wikilib.php:1017
  +#: ../wikilib.php:1043
   msgid " Select "
   msgstr ""
   
  -#: ../wikilib.php:1028
  +#: ../wikilib.php:1054
   msgid "Minor edit"
   msgstr ""
   
  -#: ../wikilib.php:1142
  +#: ../wikilib.php:1168
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:1147
  +#: ../wikilib.php:1173
   #, c-format
   msgid "%s is not valid action"
   msgstr ""
   
  -#: ../wikilib.php:1149
  +#: ../wikilib.php:1175
   msgid "Is it valid action ?"
   msgstr ""
   
  -#: ../wikilib.php:1196
  +#: ../wikilib.php:1222
   #, c-format
   msgid "File '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:1198
  +#: ../wikilib.php:1224
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1203
  +#: ../wikilib.php:1229
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:1205
  +#: ../wikilib.php:1231
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1215 ../wikilib.php:1235
  +#: ../wikilib.php:1241 ../wikilib.php:1261
   msgid "No files are selected !"
   msgstr ""
   
  -#: ../wikilib.php:1228
  +#: ../wikilib.php:1254
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
  -#: ../wikilib.php:1232
  +#: ../wikilib.php:1258
   msgid "Delete selected file"
   msgstr ""
   
  -#: ../wikilib.php:1253
  +#: ../wikilib.php:1279
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr ""
   
  -#: ../wikilib.php:1268
  +#: ../wikilib.php:1294
   msgid "Please delete this file manually."
   msgstr ""
   
  -#: ../wikilib.php:1270
  +#: ../wikilib.php:1296
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr ""
   
  -#: ../wikilib.php:1323
  +#: ../wikilib.php:1349
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
  -#: ../wikilib.php:1496
  +#: ../wikilib.php:1522
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
   
  -#: ../wikilib.php:1496
  +#: ../wikilib.php:1522
   msgid "title"
   msgstr ""
   
  -#: ../wikilib.php:1510
  +#: ../wikilib.php:1536
   msgid "Please try to fulltext search"
   msgstr ""
   
  -#: ../wikilib.php:1513
  +#: ../wikilib.php:1539
   #, c-format
   msgid "You can also click %s to fulltext search.\n"
   msgstr ""
   
  -#: ../wikilib.php:1558 ../wikilib.php:1666
  +#: ../wikilib.php:1584 ../wikilib.php:1693
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr ""
   
  -#: ../wikilib.php:1564
  +#: ../wikilib.php:1590
   msgid "Section edit is not valid for non-exists page."
   msgstr ""
   
  -#: ../wikilib.php:1597 ../wikilib.php:1842
  +#: ../wikilib.php:1623 ../wikilib.php:1875
   msgid "mail does not supported by default."
   msgstr ""
   
  -#: ../wikilib.php:1601 ../wikilib.php:1846
  +#: ../wikilib.php:1627 ../wikilib.php:1879
   msgid "Sent notification mail."
   msgstr ""
   
  -#: ../wikilib.php:1603 ../wikilib.php:1848
  +#: ../wikilib.php:1629 ../wikilib.php:1881
   msgid "No subscribers found."
   msgstr ""
   
  -#: ../wikilib.php:1608 ../wikilib.php:1853
  +#: ../wikilib.php:1634 ../wikilib.php:1886
   #, c-format
   msgid "%s is not editable"
   msgstr ""
   
  -#: ../wikilib.php:1610 ../wikilib.php:1855
  +#: ../wikilib.php:1636 ../wikilib.php:1888
   #, c-format
   msgid "%s is saved"
   msgstr ""
   
  -#: ../wikilib.php:1657
  +#: ../wikilib.php:1684
   msgid "Goto Editor"
   msgstr ""
   
  -#: ../wikilib.php:1671
  +#: ../wikilib.php:1698
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr ""
   
  -#: ../wikilib.php:1672
  +#: ../wikilib.php:1699
   #, c-format
   msgid "%s is merged successfully"
   msgstr ""
   
  -#: ../wikilib.php:1676
  +#: ../wikilib.php:1703
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1677
  +#: ../wikilib.php:1704
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr ""
   
  -#: ../wikilib.php:1678
  +#: ../wikilib.php:1705
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1679
  +#: ../wikilib.php:1706
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1684
  +#: ../wikilib.php:1711
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr ""
   
  -#: ../wikilib.php:1685
  +#: ../wikilib.php:1712
   msgid "Please resolve conflicts manually."
   msgstr ""
   
  -#: ../wikilib.php:1688
  +#: ../wikilib.php:1715
   #, c-format
   msgid "Force merging for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1689
  +#: ../wikilib.php:1716
   msgid "Please be careful, you could damage useful information."
   msgstr ""
   
  -#: ../wikilib.php:1703
  +#: ../wikilib.php:1730
   msgid "Conflict error!"
   msgstr ""
   
  -#: ../wikilib.php:1787
  +#: ../wikilib.php:1771
  +msgid "Too long Comment"
  +msgstr ""
  +
  +#: ../wikilib.php:1821
   #, c-format
   msgid "Preview of %s"
   msgstr ""
   
  -#: ../wikilib.php:1888
  +#: ../wikilib.php:1921
   msgid "Nobody subscribed to this page."
   msgstr ""
   
  -#: ../wikilib.php:1907
  +#: ../wikilib.php:1940
   #, c-format
   msgid "%s page is modified"
   msgstr ""
   
  -#: ../wikilib.php:1936
  +#: ../wikilib.php:1969
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:1949
  +#: ../wikilib.php:1982
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:1954
  +#: ../wikilib.php:1987
   msgid "Mails are sent successfully"
   msgstr ""
   
  -#: ../wikilib.php:1955
  +#: ../wikilib.php:1988
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1957
  +#: ../wikilib.php:1990
   msgid "Fail to send mail"
   msgstr ""
   
  -#: ../wikilib.php:1968
  +#: ../wikilib.php:2001
   msgid "This wiki does not support sendmail"
   msgstr ""
   
  -#: ../wikilib.php:2066
  +#: ../wikilib.php:2099
   msgid "Invalid regular expression !"
   msgstr ""
   
  -#: ../wikilib.php:2090
  +#: ../wikilib.php:2123
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:2093
  +#: ../wikilib.php:2126
   msgid "Infinite loop possible!"
   msgstr ""
   
  -#: ../wikilib.php:2208
  +#: ../wikilib.php:2241
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:2209
  +#: ../wikilib.php:2242
   msgid "OpenID"
   msgstr ""
   
  -#: ../wikilib.php:2221 ../wikilib.php:2348
  +#: ../wikilib.php:2254 ../wikilib.php:2381
   msgid "ID"
   msgstr ""
   
  -#: ../wikilib.php:2256 ../wikilib.php:2341
  +#: ../wikilib.php:2289 ../wikilib.php:2374
   msgid "Make profile"
   msgstr ""
   
  -#: ../wikilib.php:2258
  +#: ../wikilib.php:2291
   msgid "password again"
   msgstr ""
   
  -#: ../wikilib.php:2260 ../wikilib.php:2309
  +#: ../wikilib.php:2293 ../wikilib.php:2342
   msgid "Mail"
   msgstr ""
   
  -#: ../wikilib.php:2282
  +#: ../wikilib.php:2315
   msgid "New password"
   msgstr ""
   
  -#: ../wikilib.php:2287
  +#: ../wikilib.php:2320
   msgid "Nickname"
   msgstr ""
   
  -#: ../wikilib.php:2310
  +#: ../wikilib.php:2343
   msgid "Time Zone"
   msgstr ""
   
  -#: ../wikilib.php:2319
  +#: ../wikilib.php:2352
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:2632
  +#: ../wikilib.php:2665
   msgid "Show all"
   msgstr ""
   
  -#: ../wikilib.php:2770
  +#: ../wikilib.php:2803
   msgid "Contents"
   msgstr ""
   
  -#: ../wikilib.php:2890
  +#: ../wikilib.php:2923
   #, c-format
   msgid "Title search for \"%s\""
   msgstr ""
  
  
  


wkpark      2009/10/01 01:07:28

  Modified:    .        wiki.php
  Log:
  1.1.4-RC4
  
  Revision  Changes    Path
  1.498     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.497
  retrieving revision 1.498
  diff -u -r1.497 -r1.498
  --- wiki.php	26 Sep 2009 06:35:19 -0000	1.497
  +++ wiki.php	30 Sep 2009 16:07:28 -0000	1.498
  @@ -11,10 +11,10 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.497 2009/09/26 06:35:19 wkpark Exp $
  +// $Id: wiki.php,v 1.498 2009/09/30 16:07:28 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.497 $',1,-1);
  -$_release = '1.1.4-RC3';
  +$_revision = substr('$Revision: 1.498 $',1,-1);
  +$_release = '1.1.4-RC4';
   
   #ob_start("ob_gzhandler");
   
  
  
  


wkpark      2009/10/01 01:07:29

  Modified:    css      _base.css
  Log:
  1.1.4-RC4
  
  Revision  Changes    Path
  1.34      +7 -0      moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- _base.css	17 Aug 2009 08:47:04 -0000	1.33
  +++ _base.css	30 Sep 2009 16:07:29 -0000	1.34
  @@ -189,6 +189,13 @@
     height:60px;
   }
   
  +div.message span a span {
  +  display:inline;
  +  padding:0; margin:0;
  +  height:auto;
  +  min-width:none;
  +}
  +
   div.message span.warn {
     background: url(../imgs/info/warn.png) 10px 10px no-repeat;
   }
  
  
  


wkpark      2009/10/01 01:40:52

  Modified:    .        wiki.php
  Log:
  replace join() with implode()
  
  Revision  Changes    Path
  1.499     +12 -12    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.498
  retrieving revision 1.499
  diff -u -r1.498 -r1.499
  --- wiki.php	30 Sep 2009 16:07:28 -0000	1.498
  +++ wiki.php	30 Sep 2009 16:40:52 -0000	1.499
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.498 2009/09/30 16:07:28 wkpark Exp $
  +// $Id: wiki.php,v 1.499 2009/09/30 16:40:52 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.498 $',1,-1);
  +$_revision = substr('$Revision: 1.499 $',1,-1);
   $_release = '1.1.4-RC4';
   
   #ob_start("ob_gzhandler");
  @@ -1460,7 +1460,7 @@
       if ($mtime and ($mtime <= $this->mtime($key))) return false;
   
       if (is_array($val))
  -      $val=join("\n",array_keys($val))."\n";
  +      $val=implode("\n",array_keys($val))."\n";
       else
         $val=str_replace("\r","",$val);
       $this->_save($key,$val);
  @@ -1860,7 +1860,7 @@
   
         $tmp=array_keys($this->smileys);
         $tmp=array_map('_preg_escape',$tmp);
  -      $rule=join($tmp,'|');
  +      $rule=implode('|', $tmp);
         $DBInfo->smiley_rule=$rule;
   
         $this->smiley_rule='/(?<=\s|^|>)('.$DBInfo->smiley_rule.')(?=\s|<|$)/e';
  @@ -2168,7 +2168,7 @@
         $pi['#format']= substr($pi['#format'],0,$p);
       }
   
  -    if ($notused) $body=join("\n",$notused)."\n".$body;
  +    if ($notused) $body=implode("\n",$notused)."\n".$body;
       if ($update_body) $this->page->write($body." "); # workaround XXX
       #if ($update_body) $this->page->write($body);
       $pi['raw']=$piline;
  @@ -2769,7 +2769,7 @@
         $i=sizeof($dum);
         for ($j=0;$j<$i;$j++) $dum[$j]=1;
         $dum[$i-1]=0;
  -      $num=join($dum,".");
  +      $num=implode('.', $dum);
       }
       $open="";
       $close="";
  @@ -2785,7 +2785,7 @@
            $odepth--;
         }
         $dum[$i]++;
  -      $num=join($dum,".");
  +      $num=implode('.', $dum);
       }
   
       $headinfo['dep']=$depth; # save old
  @@ -3984,7 +3984,7 @@
   
         $colref=preg_split("/\|/",$highlight);
         #$colref=preg_split("/\s+/",$highlight);
  -      $highlight=join("|",$colref);
  +      $highlight=implode('|', $colref);
         $colref=array_flip(array_map("strtolower",$colref));
   
         $text=preg_replace('/((<[^>]*>)|('.$highlight.'))/ie',
  @@ -4033,7 +4033,7 @@
       if ($this->sisters and !$options['nosisters']) {
         $sister_save=$this->sister_on;
         $this->sister_on=0;
  -      $sisters=join("\n",$this->sisters);
  +      $sisters=implode("\n",$this->sisters);
         $sisters=preg_replace("/(".$wordrule.")/e","\$this->link_repl('\\1')",$sisters);
         $msg=_("Sister Sites Index");
         echo "<div id='wikiSister'>\n<div class='separator'><tt class='foot'>----</tt></div>\n$msg<br />\n<ul>$sisters</ul></div>\n";
  @@ -4837,7 +4837,7 @@
           else $attr='';
           $icon[]=$this->link_tag($item[0],$item[1],$item[2],$attr);
         }
  -      $icons=$this->icon_bra.join($this->icon_sep,$icon).$this->icon_cat;
  +      $icons=$this->icon_bra.implode($this->icon_sep,$icon).$this->icon_cat;
       }
   
       $rss_icon=$this->link_tag("RecentChanges","?action=rss_rc",$this->icon['rss'])." ";
  @@ -4994,7 +4994,7 @@
   
       $idx=count($trails) - $size;
       if ($idx > 0) $trails=array_slice($trails,$idx);
  -    $trail=join("\t",$trails);
  +    $trail=implode("\t",$trails);
   
       setcookie('MONI_TRAIL',$trail,time()+60*60*24*30,get_scriptname());
     }
  @@ -5438,7 +5438,7 @@
         $twins=$DBInfo->metadb->getTwinPages($page->name,2);
         if ($twins) {
           $formatter->send_title('','',$options);
  -        $twins="\n".join("\n",$twins);
  +        $twins="\n".implode("\n",$twins);
           $formatter->send_page(_("See [TwinPages]: ").$twins);
           echo "<br />".
             $formatter->link_to("?action=edit",$formatter->icon['create']._("Create this page"));
  
  
  


wkpark      2009/10/01 02:00:51

  Modified:    .        wiki.php
  Log:
  fix for DOCUMENT_ROOT == doc_root case
  
  Revision  Changes    Path
  1.500     +4 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.499
  retrieving revision 1.500
  diff -u -r1.499 -r1.500
  --- wiki.php	30 Sep 2009 16:40:52 -0000	1.499
  +++ wiki.php	30 Sep 2009 17:00:51 -0000	1.500
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.499 2009/09/30 16:40:52 wkpark Exp $
  +// $Id: wiki.php,v 1.500 2009/09/30 17:00:51 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.499 $',1,-1);
  +$_revision = substr('$Revision: 1.500 $',1,-1);
   $_release = '1.1.4-RC4';
   
   #ob_start("ob_gzhandler");
  @@ -711,7 +711,8 @@
         $this->upload_dir_url= $this->upload_dir;
   
       // getenv("DOCUMENT_ROOT") != doc_root or not ?
  -    $doc_root = isset($this->doc_root) ? $this->doc_root : dirname(dirname(__FILE__));
  +    $doc_root = isset($this->doc_root) ? $this->doc_root :
  +      ($this->url_prefix ? dirname(dirname(__FILE__)) : dirname(__FILE__));
       $doc_root = preg_replace('@/$@', '', $doc_root);
   
       $imgs_real_dir= !empty($this->imgs_real_dir) ? $this->imgs_real_dir : $doc_root.'/'.$this->imgs_dir;
  
  
  


wkpark      2009/10/01 22:13:16

  Modified:    .        wiki.php wikilib.php
  Log:
  empty(), isset() fixes
  
  Revision  Changes    Path
  1.501     +90 -77    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.500
  retrieving revision 1.501
  diff -u -r1.500 -r1.501
  --- wiki.php	30 Sep 2009 17:00:51 -0000	1.500
  +++ wiki.php	1 Oct 2009 13:13:16 -0000	1.501
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.500 2009/09/30 17:00:51 wkpark Exp $
  +// $Id: wiki.php,v 1.501 2009/10/01 13:13:16 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.500 $',1,-1);
  +$_revision = substr('$Revision: 1.501 $',1,-1);
   $_release = '1.1.4-RC4';
   
   #ob_start("ob_gzhandler");
  @@ -57,7 +57,7 @@
         $plugins=array_merge($plugins,$DBInfo->myplugins);
       return isset($plugins[$pname]) ? $plugins[$pname]:'';
     }
  -  if ($DBInfo->include_path)
  +  if (!empty($DBInfo->include_path))
       $dirs=explode(':',$DBInfo->include_path);
     else
       $dirs=array('.');
  @@ -74,7 +74,7 @@
   
     if (!empty($plugins))
       $cp->update('plugins',serialize($plugins));
  -  if (is_array($DBInfo->myplugins))
  +  if (!empty($DBInfo->myplugins) and is_array($DBInfo->myplugins))
       $plugins=array_merge($plugins,$DBInfo->myplugins);
   
     return $plugins[$pname];
  @@ -807,7 +807,7 @@
   
       if (!empty($this->use_counter))
         $this->counter=&new Counter_dba($this);
  -    if (!$this->counter->counter)
  +    if (!isset($this->counter->counter))
         $this->counter=&new Counter();
   
       if (!empty($this->security_class)) {
  @@ -820,11 +820,15 @@
         if (!is_array($this->filters)) {
           $this->filters=preg_split('/(\||,)/',$this->filters);
         }
  +    } else {
  +      $this->filters = '';
       }
       if (!empty($this->postfilters)) {
         if (!is_array($this->postfilters)) {
           $this->postfilters=preg_split('/(\||,)/',$this->postfilters);
         }
  +    } else {
  +      $this->postfilters = '';
       }
   
       # check and prepare $url_mappings
  @@ -1769,7 +1773,7 @@
         $DBInfo->inline_latex == 1 ? 'latex':$DBInfo->inline_latex;
       $this->use_purple=$DBInfo->use_purple;
       $this->section_edit=$DBInfo->use_sectionedit;
  -    $this->auto_linebreak=$DBInfo->auto_linebreak;
  +    $this->auto_linebreak=!empty($DBInfo->auto_linebreak) ? 1 : 0;
       $this->nonexists=$DBInfo->nonexists;
       $this->url_mappings=&$DBInfo->url_mappings;
       $this->url_mapping_rule=&$DBInfo->url_mapping_rule;
  @@ -1778,14 +1782,14 @@
       $this->use_easyalias=$DBInfo->use_easyalias;
       $this->submenu=$DBInfo->submenu;
       $this->email_guard=$DBInfo->email_guard;
  -    $this->interwiki_target=$DBInfo->interwiki_target ?
  +    $this->interwiki_target=!empty($DBInfo->interwiki_target) ?
         ' target="'.$DBInfo->interwiki_target.'"':'';
       $this->filters=$DBInfo->filters;
       $this->postfilters=$DBInfo->postfilters;
       $this->use_rating=$DBInfo->use_rating;
  -    $this->use_etable=$DBInfo->use_etable;
  +    $this->use_etable=!empty($DBInfo->use_etable) ? 1 : 0;
       $this->use_metadata=$DBInfo->use_metadata;
  -    $this->use_namespace=$DBInfo->use_namespace;
  +    $this->use_namespace=!empty($DBInfo->use_namespace) ? $DBInfo->use_namespace : '';
       $this->udb=&$DBInfo->udb;
       $this->user=&$DBInfo->user;
       $this->check_openid_url=$DBInfo->check_openid_url;
  @@ -1801,10 +1805,10 @@
       $this->pagelinks=array();
       $this->aliases=array();
       $this->icons="";
  -    $this->quote_style=$DBInfo->quote_style? $DBInfo->quote_style:'quote';
  +    $this->quote_style= !empty($DBInfo->quote_style) ? $DBInfo->quote_style:'quote';
   
  -    $this->themedir= $DBInfo->themedir ? $DBInfo->themedir:dirname(__FILE__);
  -    $this->themeurl= $DBInfo->themeurl ? $DBInfo->themeurl:$DBInfo->url_prefix;
  +    $this->themedir= !empty($DBInfo->themedir) ? $DBInfo->themedir:dirname(__FILE__);
  +    $this->themeurl= !empty($DBInfo->themeurl) ? $DBInfo->themeurl:$DBInfo->url_prefix;
       $this->set_theme($options['theme']);
   
       $this->NULL='';
  @@ -1815,7 +1819,7 @@
       $this->pi=array();
       $this->external_on=0;
       $this->external_target='';
  -    if ($DBInfo->external_target)
  +    if (!empty($DBInfo->external_target))
         $this->external_target='target="'.$DBInfo->external_target.'"';
   
       $this->baserule=array("/(?<!\<)<([^\s<>])/",
  @@ -1997,7 +2001,7 @@
         $this->icon_sep=$DBInfo->icon_sep;
       }
   
  -    if (!$this->menu) {
  +    if (empty($this->menu)) {
         $this->menu=&$DBInfo->menu;
       }
   
  @@ -2011,13 +2015,13 @@
         $this->icons = array();
       $this->icons = array_merge($DBInfo->icons,$this->icons);
   
  -    if (!$this->icon_list) {
  -      $this->icon_list=$DBInfo->icon_list ? $DBInfo->icon_list:null;
  +    if (empty($this->icon_list)) {
  +      $this->icon_list=!empty($DBInfo->icon_list) ? $DBInfo->icon_list:null;
       }
  -    if (!$this->purple_icon) {
  +    if (empty($this->purple_icon)) {
         $this->purple_icon=$DBInfo->purple_icon;
       }
  -    if (!$this->perma_icon) {
  +    if (empty($this->perma_icon)) {
         $this->perma_icon=$DBInfo->perma_icon;
       }
     }
  @@ -2142,7 +2146,11 @@
           else if ($line[1]=='#') { $notused[]=$line; continue;}
           $pilines[]=$line;
   
  -        list($key,$val)= explode(" ",$line,2);
  +        $val = '';
  +        if (($pos = strpos($line, ' ')) !== false) 
  +          list($key,$val)= explode(' ',$line,2);
  +        else
  +          $key = trim($line);
           $key=strtolower($key);
           $val=trim($val);
           if (in_array($key,$pikeys)) { $pi[$key]=$val ? $val:1; }
  @@ -2845,7 +2853,7 @@
         else if (!empty($args)) $arg = '('.$args.')';
         $macro=$name.$arg;
         $md5sum= md5($macro);
  -      $this->_macros[$md5sum]=array($macro,$mid);
  +      $this->_macros[$md5sum]=array($macro,$this->mid);
         return '[['.$md5sum.']]';
       }
   
  @@ -2985,7 +2993,8 @@
         $text= $pageurl; # XXX
       if (empty($pageurl))
         $pageurl=$this->page->urlname;
  -    if ($query_string[0]=='?') $attr=empty($attr) ? 'rel="nofollow"':$attr.' rel="nofollow"';
  +    if (isset($query_string[0]) and $query_string[0]=='?')
  +      $attr=empty($attr) ? 'rel="nofollow"':$attr.' rel="nofollow"';
       $url=$this->link_url($pageurl,$query_string);
       return '<a href="'.$url.'" '. $attr .'><span>'.$text.'</span></a>';
     }
  @@ -3840,7 +3849,7 @@
             $p_closeopen.=$this->_div(0,$in_div,$div_enclose);
           $p_closeopen.=$this->_div(1,$in_div,$div_enclose);
           $in_p='';
  -        if ($this->section_edit && !$this->preview) {
  +        if ($this->section_edit && empty($this->preview)) {
             $act='edit';
   
             $wikiwyg_mode='';
  @@ -4213,9 +4222,9 @@
       $plain=0;
   
       $media='media="screen"';
  -    if ($options['action']=='print') $media='';
  +    if (isset($options['action']) and $options['action']=='print') $media='';
   
  -    if ($this->pi['#redirect'] != '' && $options['pi']) {
  +    if (isset($this->pi['#redirect']) and $this->pi['#redirect'] != '' && $options['pi']) {
         $options['value']=$this->pi['#redirect'];
         $options['redirect']=1;
         $this->pi['#redirect']='';
  @@ -4239,7 +4248,7 @@
         }
       }
       $content_type=
  -      $DBInfo->content_type ? $DBInfo->content_type: "text/html";
  +      !empty($DBInfo->content_type) ? $DBInfo->content_type: "text/html";
   
       if ($DBInfo->force_charset)
         $force_charset = '; charset='.$DBInfo->charset;
  @@ -4249,19 +4258,19 @@
   #    if (!$plain)
   #      $this->header('Content-type: '.$content_type);
   
  -    if ($options['action_mode']=='ajax') return true;
  +    if (!empty($options['action_mode']) and $options['action_mode'] =='ajax') return true;
   
       if (isset($this->pi['#noindex'])) {
         $metatags='<meta name="robots" content="noindex,nofollow" />'."\n";
       } else {
  -      if ($options['metatags'])
  +      if (!empty($options['metatags']))
           $metatags=$options['metatags'];
         else {
           $metatags=$DBInfo->metatags;
         }
   
         $mtime=$this->page->mtime(); // delay indexing from dokuwiki
  -      if ($DBInfo->delayindex and ((time() - $mtime) < $DBInfo->delayindex)) {
  +      if (!empty($DBInfo->delayindex) and ((time() - $mtime) < $DBInfo->delayindex)) {
           if (preg_match("/<meta\s+name=('|\")?robots\\1[^>]+>/i",
             $metatags)) {
             $metatags=preg_replace("/<meta\s+name=('|\")?robots\\1[^>]+>/i",
  @@ -4284,10 +4293,10 @@
         # find upper page
         $pos=0;
         preg_match('/(\:|\/)/',$this->page->name,$sep); # NameSpace/SubPage or NameSpace:SubNameSpacePage
  -      if ($sep[1]) $pos=strrpos($this->page->name,$sep);
  +      if (isset($sep[1])) $pos=strrpos($this->page->name,$sep);
         if ($pos > 0) $upper=substr($this->page->urlname,0,$pos);
         else if ($this->group) $upper=_urlencode(substr($this->page->name,strlen($this->group)));
  -      if ($this->pi['#keywords'])
  +      if (!empty($this->pi['#keywords']))
           $keywords='<meta name="keywords" content="'.$this->pi['#keywords'].'" />'."\n";
         else if ($DBInfo->use_keywords) {
           $keywords=strip_tags($this->page->title);
  @@ -4296,7 +4305,7 @@
           $keywords="<meta name=\"keywords\" content=\"$keywords\" />\n";
         }
         # find sub pages
  -      if ($DBInfo->use_subindex and !$options['action']) {
  +      if ($DBInfo->use_subindex and empty($options['action'])) {
           $scache=new Cache_text('subpages');
           if (!($subs=$scache->exists($this->page->name))) {
             if (($p = strrpos($this->page->name,'/')) !== false)
  @@ -4320,13 +4329,13 @@
         }
   
         if (empty($options['title'])) {
  -        $options['title']=$this->pi['#title'] ? $this->pi['#title']:
  +        $options['title']=!empty($this->pi['#title']) ? $this->pi['#title']:
             $this->page->title;
           $options['title']=
             htmlspecialchars($options['title']);
         }
         if (empty($options['css_url'])) $options['css_url']=$DBInfo->css_url;
  -      if (!$this->pi['#nodtd'] and !isset($options['retstr']) and $this->_newtheme != 2) echo $DBInfo->doctype;
  +      if (empty($this->pi['#nodtd']) and !isset($options['retstr']) and $this->_newtheme != 2) echo $DBInfo->doctype;
         if ((isset($this->_newtheme) and $this->_newtheme == 2) or isset($options['retstr']))
           ob_start();
         else
  @@ -4345,7 +4354,7 @@
         echo $this->get_javascripts();
         echo $keywords;
         echo "  <title>$DBInfo->sitename: ".$options['title']."</title>\n";
  -      if ($upper)
  +      if (!empty($upper))
           echo '  <link rel="Up" href="'.$this->link_url($upper)."\" />\n";
         $raw_url=$this->link_url($this->page->urlname,"?action=raw");
         $print_url=$this->link_url($this->page->urlname,"?action=print");
  @@ -4473,7 +4482,7 @@
   
     function get_actions($args='',$options) {
       $menu=array();
  -    if ($this->pi['#action'] && !in_array($this->pi['#action'],$this->actions)){
  +    if (!empty($this->pi['#action']) && !in_array($this->pi['#action'],$this->actions)){
         list($act,$txt)=explode(" ",$this->pi['#action'],2);
         if (!$txt) $txt=$act;
         $menu[]= $this->link_to("?action=$act",_($txt)," rel='nofollow' accesskey='x'");
  @@ -4485,13 +4494,13 @@
           $menu[]= $this->link_to("?action=edit",_("EditText")," rel='nofollow' accesskey='x'");
         else
           $menu[]= _("NotEditable");
  -      if ($args['refresh']==1)
  +      if (!empty($args['refresh']) and $args['refresh'] ==1)
           $menu[]= $this->link_to("?refresh=1",_("Refresh")," rel='nofollow' accesskey='n'");
       } else
         $menu[]= $this->link_to('?action=show',_("ShowPage"));
       $menu[]=$this->link_tag("FindPage","",_("FindPage"));
   
  -    if (!$args['noaction']) {
  +    if (empty($args['noaction'])) {
         foreach ($this->actions as $action) {
           if (strpos($action,' ')) {
             list($act,$text)=explode(' ',$action,2);
  @@ -4511,7 +4520,7 @@
     function send_footer($args='',$options='') {
       global $DBInfo;
   
  -    if ($options['action_mode']=='ajax') return;
  +    if (!empty($options['action_mode']) and $options['action_mode'] =='ajax') return;
   
       echo "<!-- wikiBody --></div>\n";
       echo $DBInfo->hr;
  @@ -4542,8 +4551,8 @@
         $lasttime=gmdate("H:i:s",$mtime+$options['tz_offset']);
       }
   
  -    $validator_xhtml=$DBInfo->validator_xhtml ? $DBInfo->validator_xhtml:'http://validator.w3.org/check/referer';
  -    $validator_css=$DBInfo->validator_css ? $DBInfo->validator_xhtml:'http://jigsaw.w3.org/css-validator';
  +    $validator_xhtml=!empty($DBInfo->validator_xhtml) ? $DBInfo->validator_xhtml:'http://validator.w3.org/check/referer';
  +    $validator_css=!empty($DBInfo->validator_css) ? $DBInfo->validator_xhtml:'http://jigsaw.w3.org/css-validator';
   
       $banner= <<<FOOT
    <a href="$validator_xhtml"><img
  @@ -4586,7 +4595,7 @@
       // Generate and output the top part of the HTML page.
       global $DBInfo;
   
  -    if ($options['action_mode']=='ajax') return;
  +    if (!empty($options['action_mode']) and $options['action_mode']=='ajax') return;
   
       $name=$this->page->urlname;
       $action=$this->link_url($name);
  @@ -4623,8 +4632,10 @@
           $groupt=substr($group,0,-1).' &raquo;'; // XXX
           $groupt=
             "<span class='wikiGroup'>$groupt</span>";
  -      } else     
  +      } else {
  +        $groupt = '';
           $title=$this->page->title;
  +      }
         $title=htmlspecialchars($title);
       }
       # setup title variables
  @@ -4741,16 +4752,16 @@
       # submenu XXX
       if (!empty($this->submenu)) {
         $smenu=array();
  -      $mnu_pgname=($group ? $group.'~':'').$this->submenu;
  +      $mnu_pgname=(!empty($group) ? $group.'~':'').$this->submenu;
         if ($DBInfo->hasPage($mnu_pgname)) {
           $pg=$DBInfo->getPage($mnu_pgname);
           $mnu_raw=$pg->get_raw_body();
           $mlines=explode("\n",$mnu_raw);
           foreach ($mlines as $l) {
  -          if ($mk and preg_match('/^\s{2,}\*\s*(.*)$/',$l,$m)) {
  -            if (!is_array($smenu[$mk])) $smenu[$mk]=array();
  +          if (!empty($mk) and preg_match('/^\s{2,}\*\s*(.*)$/',$l,$m)) {
  +            if (isset($smenu[$mk]) and !is_array($smenu[$mk])) $smenu[$mk]=array();
               $smenu[$mk][]=$m[1];
  -            if (!$smenu[$m[1]]) $smenu[$m[1]]=$mk;
  +            if (isset($smenu[$m[1]])) $smenu[$m[1]]=$mk;
             } else if (preg_match('/^ \*\s*(.*)$/',$l,$m)) {
               $mk=$m[1];
             }
  @@ -4834,7 +4845,7 @@
           $myicons=&$this->icons;
         }
         foreach ($myicons as $item) {
  -        if ($item[3]) $attr=$item[3];
  +        if (!empty($item[3])) $attr=$item[3];
           else $attr='';
           $icon[]=$this->link_tag($item[0],$item[1],$item[2],$attr);
         }
  @@ -4846,8 +4857,8 @@
       $this->_vars['icons']=&$icons;
       $this->_vars['title']=$title;
       $this->_vars['menu']=$menu;
  -    $this->_vars['upper_icon']=$upper_icon;
  -    $this->_vars['home']=$home;
  +    isset($upper_icon) ? $this->_vars['upper_icon']=$upper_icon : null;
  +    isset($home) ? $this->_vars['home']=$home : null;
       if (!empty($options['header']))
         $this->_vars['header'] = $header = $options['header'];
       else if (isset($this->_newtheme) and $this->_newtheme == 2 and !empty($this->header_html))
  @@ -4857,15 +4868,17 @@
   
       if (empty($this->_newtheme) or $this->_newtheme != 2) {
         if ($this->_newtheme != 2)
  -        echo "<body $options[attr]>\n";
  +        echo '<body'.(!empty($options['attr']) ? ' ' . $options['attr'] : '' ) .">\n";
         echo '<div><a id="top" name="top" accesskey="t"></a></div>'."\n";
       }
       #
       if (file_exists($this->themedir."/header.php")) {
  -      $trail="<div id='wikiTrailer'>\n".$this->trail."</div>\n";
  -      $origin="<div id='wikiOrigin'>\n".$this->origin."</div>\n";
  +      if (!empty($this->trail))
  +        $trail="<div id='wikiTrailer'>\n".$this->trail."</div>\n";
  +      if (!empty($this->origin))
  +        $origin="<div id='wikiOrigin'>\n".$this->origin."</div>\n";
   
  -      $subindex=$this->subindex;
  +      $subindex=!empty($this->subindex) ? $this->subindex : '';
         $themeurl=$this->themeurl;
         include($this->themedir."/header.php");
       } else { #default header
  @@ -5130,6 +5143,7 @@
     // $_SERVER["PATH_INFO"] has bad value under CGI mode
     // set 'cgi.fix_pathinfo=1' in the php.ini under
     // apache 2.0.x + php4.2.x Win32
  +  $pagename = '';
     if (!empty($_SERVER['PATH_INFO'])) {
       if ($_SERVER['PATH_INFO'][0] == '/')
         $pagename=substr($_SERVER['PATH_INFO'],1);
  @@ -5153,15 +5167,11 @@
             $_SERVER['QUERY_STRING']=substr($_SERVER['QUERY_STRING'],strlen($temp));
           } else if ($k =='action' and $v =='login') {
             $pagename="UserPreferences";
  -        } else {
  -          $pagename='';
           }
  -      } else {
  -        $pagename=''; // get default pagename later in the wiki_main().
         }
       }
     }
  -  if ($pagename) {
  +  if (!empty($pagename)) {
       $pagename=_stripslashes($pagename);
   
       if ($pagename[0]=='~' and ($p=strpos($pagename,"/")))
  @@ -5208,7 +5218,7 @@
   # MoniWiki theme
   if ((empty($DBInfo->theme) or isset($_GET['action'])) and isset($_GET['theme'])) $theme=$_GET['theme'];
   else if ($DBInfo->theme_css) $theme=$DBInfo->theme;
  -if ($theme) $options['theme']=$theme;
  +if (!empty($theme)) $options['theme']=$theme;
   
   if ($options['id'] != 'Anonymous') {
     $options['css_url']=$user->info['css_url'];
  @@ -5218,13 +5228,13 @@
   } else {
     $options['css_url']=$user->css;
     $options['tz_offset']=$user->tz_offset;
  -  if (!$theme) $options['theme']=$theme=$user->theme;
  +  if (empty($theme)) $options['theme']=$theme=$user->theme;
   }
   
   if (!$options['theme']) $options['theme']=$theme=$DBInfo->theme;
   
   if ($theme and ($DBInfo->theme_css or !$options['css_url']))
  -  $options['css_url']=($DBInfo->themeurl ? $DBInfo->themeurl:$DBInfo->url_prefix)."/theme/$theme/css/default.css";
  +  $options['css_url']=(!empty($DBInfo->themeurl) ? $DBInfo->themeurl:$DBInfo->url_prefix)."/theme/$theme/css/default.css";
   
     $options['pagename']=get_pagename();
     if (!empty($DBInfo->robots)) {
  @@ -5249,7 +5259,7 @@
     } else if (substr($lang,0,2) == 'en') {
       $test=setlocale(LC_ALL, $lang);
     } else {
  -    if ($Config['include_path']) $dirs=explode(':',$Config['include_path']);
  +    if (!empty($Config['include_path'])) $dirs=explode(':',$Config['include_path']);
       else $dirs=array('.');
   
       while ($Config['use_local_translation']) {
  @@ -5332,12 +5342,15 @@
       if (isset($_GET['retstr'])) unset($_GET['retstr']);
       if (isset($_POST['header'])) unset($_POST['header']);
   
  -    $action=$_GET['action'];
  -    $value=$_GET['value'];
  -    $goto=$_GET['goto'];
  -    $rev=$_GET['rev'];
  -    $refresh=($options['id'] == 'Anonymous') ? 0:$_GET['refresh'];
  -    $popup=$_GET['popup'];
  +    $action=!empty($_GET['action']) ? $_GET['action'] : '';
  +    $value=!empty($_GET['value']) ? $_GET['value'] : '';
  +    $goto=!empty($_GET['goto']) ? $_GET['goto'] : '';
  +    $rev=!empty($_GET['rev']) ? $$_GET['rev'] : '';
  +    if ($options['id'] == 'Anonymous')
  +      $refresh = 0;
  +    else
  +      $refresh = !empty($_GET['refresh']) ? $_GET['refresh'] : '';
  +    $popup=!empty($_GET['popup']) ? 1 : 0;
     }
     // parse action
     // action=foobar, action=foobar/macro, action=foobar/json etc.
  @@ -5370,7 +5383,7 @@
   
     $formatter = &new Formatter($page,$options);
   
  -  if ($Config['baserule']) {
  +  if (!empty($Config['baserule'])) {
       $dummy = 'dummy';
       foreach ($Config['baserule'] as $rule=>$repl) {
         $t = @preg_match($rule,$repl);
  @@ -5536,13 +5549,13 @@
           $tcache->update($pagename,serialize($keys));
         }
       }
  -    if (!empty($DBInfo->use_referer))
  +    if (!empty($DBInfo->use_referer) and isset($_SERVER['HTTP_REFERER']))
         log_referer($_SERVER['HTTP_REFERER'],$pagename);
   
       $formatter->write("<div id='wikiContent'>\n");
       $options['timer']->Check("init");
       $options['pagelinks']=1;
  -    if ($Config['cachetime'] > 0 and !$formatter->pi['#nocache']) {
  +    if (!empty($Config['cachetime']) and $Config['cachetime'] > 0 and empty($formatter->pi['#nocache'])) {
         $cache=&new Cache_text('pages',2,'html');
         $mcache=&new Cache_text('dynamicmacros',2);
         $mtime=$cache->mtime($pagename);
  @@ -5566,7 +5579,7 @@
           ob_end_clean();
           $formatter->_macrocache=0;
           $_macros=&$formatter->_macros;
  -        if (!$formatter->pi['#nocache']) {
  +        if (empty($formatter->pi['#nocache'])) {
             $cache->update($pagename,$out);
             if (isset($_macros))
               $mcache->update($pagename,serialize($_macros));
  @@ -5590,9 +5603,9 @@
       $options['timer']->Check("send_page");
       $formatter->write("<!-- wikiContent --></div>\n");
   
  -    if ($DBInfo->extra_macros and
  +    if (!empty($DBInfo->extra_macros) and
           $formatter->pi['#format'] == $DBInfo->default_markup) {
  -      if ($formatter->pi['#nocomment']) {
  +      if (!empty($formatter->pi['#nocomment'])) {
           $options['nocomment']=1;
           $options['notoolbar']=1;
         }
  @@ -5604,7 +5617,7 @@
           $extra = $DBInfo->extra_macros;
         else
           $extra[] = $DBInfo->extra_macros; // XXX
  -      if ($formatter->pi['#comment']) array_unshift($extra,'Comment');
  +      if (!empty($formatter->pi['#comment'])) array_unshift($extra,'Comment');
   
         foreach ($extra as $macro)
           $mout.= $formatter->macro_repl($macro,'',$options);
  @@ -5626,7 +5639,7 @@
       $options['value']=$value;
   
       $a_allow=$DBInfo->security->is_allowed($action,$options);
  -    if ($action_mode) {
  +    if (!empty($action_mode)) {
         $myopt=$options;
         $myopt['explicit']=1;
         $f_allow=$DBInfo->security->is_allowed($full_action,$myopt);
  @@ -5675,7 +5688,7 @@
         return;
       }
   
  -    if (in_array($action_mode,array('ajax','macro'))) {
  +    if (!empty($action_mode) and in_array($action_mode,array('ajax','macro'))) {
         if ($_SERVER['REQUEST_METHOD']=="POST")
           $options=array_merge($_POST,$options);
         else
  
  
  
  1.284     +18 -10    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.283
  retrieving revision 1.284
  diff -u -r1.283 -r1.284
  --- wikilib.php	26 Sep 2009 05:35:48 -0000	1.283
  +++ wikilib.php	1 Oct 2009 13:13:16 -0000	1.284
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.283 2009/09/26 05:35:48 wkpark Exp $
  +// $Id: wikilib.php,v 1.284 2009/10/01 13:13:16 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -283,6 +283,7 @@
     global $DBInfo;
     # make the site specific ticket based on the variables in the config.php
     $configs=getConfig("config.php");
  +  $siteticket = '';
     foreach ($configs as $config) {
       if (is_array($config)) $siteticket.=md5(base64_encode(serialize($config)));
       else $siteticket.=md5($config);
  @@ -342,6 +343,8 @@
   
   function getSmileys() {
     global $DBInfo;
  +  static $smileys = null;
  +  if ($smileys) return $smileys;
   
     include_once($DBInfo->smiley.'.php');
     # set smileys
  @@ -352,7 +355,10 @@
         if ($l[0] != ' ') continue;
         if (!preg_match('/^ \*\s*([^ ]+)\s(.*)$/',$l,$m)) continue;
         $name=_preg_escape($m[1]);
  -      list($img,$extra)=explode(' ',$m[2]);
  +      if (($pos = strpos($m[2], ' ')) !== false)
  +        list($img,$extra)=explode(' ',$m[2]);
  +      else
  +        $img = trim($m[2]);
         if (preg_match('/^(http|ftp):.*\.(png|jpg|jpeg|gif)/',$img)) {
           $myicons[$name]=array(16,16,0,$img);
         } else {
  @@ -2219,6 +2225,8 @@
       $passwd_hidden.="<input type='hidden' name='_chall' />\n";
       $pw_length=32;
     } else {
  +    $passwd_hidden = '';
  +    $onsubmit = '';
       $pw_length=20;
     }
   
  @@ -2226,7 +2234,7 @@
     $url=$formatter->link_url("UserPreferences");
     # setup form
     if ($user->id == 'Anonymous') {
  -    if ($options['login_id'])
  +    if (!empty($options['login_id']))
         $idform="$options[login_id]<input type='hidden' name='login_id' value=\"$options[login_id]\" />";
       else
         $idform="<input type='text' size='20' name='login_id' value='' />";
  @@ -2259,7 +2267,7 @@
         $default_form=<<<MYFORM
     <tr><th>$id_btn&nbsp;</th><td>$idform</td></tr>
     <tr>
  -     <th>$passwd_btn&nbsp;</th><td><input type="password" size="15" maxlength="$pw_len" name="password" value="" /></td>
  +     <th>$passwd_btn&nbsp;</th><td><input type="password" size="15" maxlength="$pw_length" name="password" value="" /></td>
     </tr>
     <tr><td></td><td>
       $passwd_hidden
  @@ -2284,15 +2292,15 @@
     }
   
     if ($user->id == 'Anonymous') {
  -    if (isset($options['login_id']) or $_GET['join'] or $value!="simple") {
  -      $passwd=$options['password'];
  +    if (isset($options['login_id']) or !empty($_GET['join']) or $value!="simple") {
  +      $passwd=!empty($options['password']) ? $options['password'] : '';
         $button=_("Make profile");
         if (!$DBInfo->use_safelogin) {
  -        $again="<b>"._("password again")."</b>&nbsp;<input type='password' size='15' maxlength='$pw_len' name='passwordagain' value='' /></td></tr>";
  +        $again="<b>"._("password again")."</b>&nbsp;<input type='password' size='15' maxlength='$pw_length' name='passwordagain' value='' /></td></tr>";
         }
         $mailbtn=_("Mail");
         $extra=<<<EXTRA
  -  <tr><th>$mailbtn&nbsp;</th><td><input type="text" size="40" name="email" value="$email" /></td></tr>
  +  <tr><th>$mailbtn&nbsp;</th><td><input type="text" size="40" name="email" value="" /></td></tr>
   EXTRA;
         if (!$use_any and $DBInfo->use_ticket) {
           $seed=md5(base64_encode(time()));
  @@ -2364,7 +2372,7 @@
       if ($user->id == 'Anonymous' or $user->info['password'])
       $passwd_inp=<<<PASS
     <tr>
  -     <th>$passwd_btn&nbsp;</th><td><input type="password" size="15" maxlength="$pw_len" name="password" value="$passwd" />
  +     <th>$passwd_btn&nbsp;</th><td><input type="password" size="15" maxlength="$pw_length" name="password" value="$passwd" />
   PASS;
   
     } else {
  @@ -2912,7 +2920,7 @@
   
     if (!$needle) {
       $opts['msg'] = _("Use more specific text");
  -    if ($opts['call']) {
  +    if (!empty($opts['call'])) {
         $opts['form']=$form;
         return $opts;
       }
  
  
  


wkpark      2009/10/01 22:13:53

  Modified:    plugin   Comment.php Rating.php ticket.php
  Log:
  isset(), empty() fixes
  
  Revision  Changes    Path
  1.36      +21 -18    moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- Comment.php	8 Jan 2009 16:25:36 -0000	1.35
  +++ Comment.php	1 Oct 2009 13:13:52 -0000	1.36
  @@ -5,15 +5,15 @@
   //
   // Author: Won-Kyu Park <wkpark@kldp.org>
   // Since: 2004-08-16
  -// Modified: $Date: 2009/01/08 16:25:36 $
  +// Modified: $Date: 2009/10/01 13:13:52 $
   // Name: Comment plugin
   // Description: Comment Plugin
   // URL: MoniWiki:CommentPlugin
  -// Version: $Revision: 1.35 $
  +// Version: $Revision: 1.36 $
   // License: GPL
   // Usage: [[Comment]], ?action=comment
   //
  -// $Id: Comment.php,v 1.35 2009/01/08 16:25:36 wkpark Exp $
  +// $Id: Comment.php,v 1.36 2009/10/01 13:13:52 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $DBInfo;
  @@ -40,14 +40,15 @@
   EXTRA;
     }
   
  +  $hidden = '';
     if (!$options['page']) $options['page']=$formatter->page->name;
  -  if (!$options['action']) $action='comment';
  +  if (empty($options['action'])) $action='comment';
     else $action=$options['action'];
  -  if ($options['mode'])
  +  if (!empty($options['mode']))
       $hidden.="<input type='hidden' name='mode' value='".$options['mode']."' />\n";
  -  if ($options['no'])
  +  if (!empty($options['no']))
       $hidden.="<input type='hidden' name='no' value='".$options['no']."' />\n";
  -  if ($options['p'])
  +  if (!empty($options['p']))
       $hidden.="<input type='hidden' name='p' value='".$options['p']."' />\n";
   
     if ($value) {
  @@ -56,10 +57,10 @@
       if (in_array('oneliner',$args)) $oneliner=1;
     }
   
  -  if ($options['usemeta'] or $use_meta) {
  +  if (!empty($options['usemeta']) or !empty($use_meta)) {
       $hidden.="<input type='hidden' name='usemeta' value=1 />\n";
     }
  -  if ($options['nocomment']) return '';
  +  if (!empty($options['nocomment'])) return '';
     if (!$DBInfo->security->writable($options)) return '';
   
     if ($options['mid']) $mymid=$options['mid'];
  @@ -72,39 +73,41 @@
     $COLS_OTHER = 85;
     $cols = preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']) ? $COLS_MSIE : $COLS_OTHER;
   
  -  $rows=$options['rows'] > 5 ? $options['rows']: 5;
  -  $cols=$options['cols'] > 60 ? $options['cols']: $cols;
  +  $rows = (!empty($options['rows']) and $options['rows'] > 5) ? $options['rows']: 5;
  +  $cols = (!empty($options['cols']) and $options['cols'] > 60) ? $options['cols']: $cols;
   
  -  if ($options['datestamp'])
  +  if (!empty($options['datestamp']))
       $datestamp= $options['datestamp'];
     else
       $datestamp= $formatter->page->mtime();
  -  $savetext=$options['savetext'];
  +  $savetext=!empty($options['savetext']) ? $options['savetext'] : '';
     $savetext= str_replace(array("&","<"),array("&amp;","&lt;"),$savetext);
   
     $url=$formatter->link_url($formatter->page->urlname);
   
     if ($emid) $hidden.='<input type="hidden" name="comment_id" value="'.$emid.'" />';
     $form = "<form id='editform' method='post' action='$url'>\n<div>";
  -  if ($use_meta)
  +  if (!empty($use_meta))
       $form.="<a id='add_comment' name='add_comment'></a>";
   
     $comment=_("Comment");
     $preview_btn=_("Preview");
  -  if ($oneliner) {
  +  if (!empty($oneliner)) {
       $form.=<<<FORM
   <input class='wiki' size='$cols' name="savetext" value="$savetext" />&nbsp;
   FORM;
     } else {
  -    if (!$options['nopreview'])
  +    if (empty($options['nopreview']))
       $preview='<input type="submit" name="button_preview" value="'.$preview_btn.'" />';
       $form.= <<<FORM
   <textarea class="wiki" name="savetext"
    rows="$rows" cols="$cols">$savetext</textarea><br />
   FORM;
     }
  -  if ($options['id'] == 'Anonymous')
  -    $sig=_("Username").": <input name='name' value='$options[name]' size='10' />";
  +  if ($options['id'] == 'Anonymous') {
  +    $name = !empty($options['name']) ? $options['name'] : '';
  +    $sig=_("Username").": <input name='name' value='$name' size='10' />";
  +  }
     else if (!$use_meta)
       $sig="<input name='nosig' type='checkbox' />"._("Don't add a signature");
     $form.= <<<FORM2
  
  
  
  1.8       +5 -3      moniwiki/plugin/Rating.php
  
  Index: Rating.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Rating.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Rating.php	23 Sep 2009 17:02:21 -0000	1.7
  +++ Rating.php	1 Oct 2009 13:13:52 -0000	1.8
  @@ -7,12 +7,12 @@
   // Name: Rating
   // Description: Rating Plugin
   // URL: MoniWiki:RatingPlugin
  -// Version: $Revision: 1.7 $
  +// Version: $Revision: 1.8 $
   // License: GPL
   //
   // Usage: [[Rating(totalscore,count)]] or [[Rating(initial score)]]
   //
  -// $Id: Rating.php,v 1.7 2009/09/23 17:02:21 wkpark Exp $
  +// $Id: Rating.php,v 1.8 2009/10/01 13:13:52 wkpark Exp $
   
   function macro_Rating($formatter,$value='',$options=array()) {
       global $Config;
  @@ -27,8 +27,10 @@
       if (sizeof($val)>=2) {
           $total=$val[0];
           $count=$val[1];
  -    } else
  +    } else {
           $total=$val[0];
  +        $count= 0;
  +    }
       $count=max(1,$count);
       $value=$total/$count; // averaged value
       $value=(!empty($value) and 0 < $value and 6 > $value) ? $value:0;
  
  
  
  1.6       +4 -2      moniwiki/plugin/ticket.php
  
  Index: ticket.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/ticket.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ticket.php	16 Jul 2009 19:03:29 -0000	1.5
  +++ ticket.php	1 Oct 2009 13:13:52 -0000	1.6
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a simple CAPTCHA ticket plugin for the MoniWiki
   //
  -// $Id: ticket.php,v 1.5 2009/07/16 19:03:29 wkpark Exp $
  +// $Id: ticket.php,v 1.6 2009/10/01 13:13:52 wkpark Exp $
   
   function _effect_distort($image,$factor=40,$grad=1) {
       // from http://www.codeproject.com/aspnet/CaptchaNET_2.asp Farshid Hosseini
  @@ -17,6 +17,7 @@
       $xf=rand(80,95)*$fact;
   
       $canvas=imagecreate($width,$height);
  +    $r1 = $g1 = $b1 = 0;
       $new = imagecolorallocate($canvas, $r1, $g1, $b1);
       imagepalettecopy($canvas,$image);
   
  @@ -31,7 +32,7 @@
               $newY = 
                 #($y + ($distort * sin(1.5*3.141592 * $x / $yf)));
                 ($y + ($disy * exp(-$t)*sin(3.141592 * $x / $yf)));
  -            $col = imagecolorat($image, $newX, $newY);
  +            $col = @imagecolorat($image, $newX, $newY);
   
               if ($newY >$height or $newY < 0) $newY=0;
               if ($newX < 0) $newX=0;
  @@ -238,6 +239,7 @@
           ImageString($im,$FONT, 4, 4, $passwd, $color[$pen]);
       }
   
  +    $grad = '';
       if ($DBInfo->use_ticket & 8) $grad=1;
       if ($DBInfo->use_ticket & 4)
           _effect_distort($im,$pointsize,$grad);
  
  
  


wkpark      2009/10/03 19:30:55

  Modified:    lib      metadata.php
  Log:
  cleanup
  
  Revision  Changes    Path
  1.6       +42 -35    moniwiki/lib/metadata.php
  
  Index: metadata.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/metadata.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- metadata.php	17 Apr 2008 15:15:53 -0000	1.5
  +++ metadata.php	3 Oct 2009 10:30:54 -0000	1.6
  @@ -2,30 +2,30 @@
   //
   // Metadata module for MoniWiki
   //
  -// $Id: metadata.php,v 1.5 2008/04/17 15:15:53 wkpark Exp $
  +// $Id: metadata.php,v 1.6 2009/10/03 10:30:54 wkpark Exp $
   
  -function getMetadata($raw,$mode=1,$opts=array()) {
  +function getMetadata($raw, $mode = 1, $params = false) {
   
  -    $metas=explode("\n",$raw);
  -    $meta=array();
  +    $metas = explode("\n", $raw);
  +    $meta = array();
       foreach ($metas as $line) {
           if (!trim($line)) break;
  -        if (($p=strpos($line,':'))!== false) {
  -            list($mykey,$val)=explode(':',$line,2);
  -            $val=trim($val);
  +        if (($p = strpos($line, ':')) !== false) {
  +            list($mykey, $val) = explode(':', $line, 2);
  +            $val = trim($val);
               # strip leading bullet' * '
  -            $mykey=preg_replace('/^\s*(\*|\d.)?\s*/','',$mykey);
  -            if (strpos($mykey,' ')!== false)
  -                $mykey=str_replace(' ','-',ucwords($mykey));
  +            $mykey = preg_replace('/^\s*(\*|\d.)?\s*/', '', $mykey);
  +            if (strpos($mykey,' ') !== false)
  +                $mykey=str_replace(' ', '-', ucwords($mykey));
   
  -            $mymeta=array();
  +            $mymeta = array();
               if (trim($val)) {
  -                $vals=explode(',',$val);
  +                $vals = explode(',', $val);
                   foreach ($vals as $v) {
  -                    $v=trim($v);
  -                    if ($v) $mymeta[]=trim($v);
  +                    $v = trim($v);
  +                    if ($v) $mymeta[] = trim($v);
                   }
  -                $meta[$mykey]=$mymeta;
  +                $meta[$mykey] = $mymeta;
               }
   
   #            if (strpos($val,' ')!== false) {
  @@ -36,11 +36,11 @@
   #            $meta[$mykey][]=$val;
           }
       }
  -    if ($mode==1) {
  -        foreach ($meta as $k=>$v) {
  +    if ($mode == 1) {
  +        foreach ($meta as $k => $v) {
               array_unique($v);
  -            $val=implode(", ",$v);
  -            $metadata[$k]=$val;
  +            $val = implode(', ', $v);
  +            $metadata[$k] = $val;
           }
           return $metadata;
       }
  @@ -49,30 +49,37 @@
   
   
   function _get_metadata($body) {
  -    $key='';
  -    $val='';
  -    $meta=array();
  -    $metaok=0;
  +    $key = '';
  +    $val = '';
  +    $meta = array();
  +    $metaok = 0;
       while(!empty($body)) {
  -        list($line, $body)= split("\n", $body,2);
  -        if ($key and ($line{0}==' ' or $line{0}=="\t")) { $meta[$key].=$line."\n";continue;}
  +        list($line, $body) = split("\n", $body, 2);
  +        if ($key and ($line[0] == ' ' or $line[0] == "\t")) {
  +            $meta[$key].= $line . "\n";
  +            continue;
  +        }
           if (!trim($line)) {
  -            $metaok=1;
  +            $metaok = 1;
               break;
           }
  -        $key=strtok($line,' ');
  -        $val=rtrim(strtok(''));
  -        if ($key=='From') { # mail type
  +        $key = strtok($line, ' ');
  +        $val = rtrim(strtok(''));
  +        if ($key == 'From') { # mail type
               if (empty($meta['magic'])) {
  -                $meta['magic']=$line; continue;
  +                $meta['magic'] = $line; continue;
               } else break;
           }
  -        if (preg_match('/(^[A-Z][a-zA-Z0-9\-]+):$/',$key,$m))
  -            $meta[$m[1]]=$val;
  -        else break;
  +        if (preg_match('/(^[A-Z][a-zA-Z0-9\-]+):$/', $key, $m))
  +            $meta[$m[1]] = $val;
  +        else
  +            break;
       }
  -    if ($metaok) return array($meta,$body);
  -    return array(null,null);
  +
  +    if ($metaok)
  +        return array($meta, $body);
  +
  +    return array(null, null);
   }
   
   // vim:et:sts=4:sw=4:
  
  
  


wkpark      2009/10/05 03:01:46

  Modified:    .        wiki.php
  Log:
  set (post)filters at the Formatter class
  
  Revision  Changes    Path
  1.502     +18 -17    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.501
  retrieving revision 1.502
  diff -u -r1.501 -r1.502
  --- wiki.php	1 Oct 2009 13:13:16 -0000	1.501
  +++ wiki.php	4 Oct 2009 18:01:46 -0000	1.502
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.501 2009/10/01 13:13:16 wkpark Exp $
  +// $Id: wiki.php,v 1.502 2009/10/04 18:01:46 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.501 $',1,-1);
  +$_revision = substr('$Revision: 1.502 $',1,-1);
   $_release = '1.1.4-RC4';
   
   #ob_start("ob_gzhandler");
  @@ -416,7 +416,7 @@
       if (!empty($lines))
       foreach ($lines as $line) {
         $line=trim($line);
  -      if ($line[0]=='#' or !$line) continue;
  +      if (empty($line) or $line[0]=='#') continue;
         # support three types of aliases
         #
         # dest<alias1,alias2,...
  @@ -816,20 +816,6 @@
         $this->security=new $class ($this);
       } else
         $this->security=new Security($this);
  -    if (!empty($this->filters)) {
  -      if (!is_array($this->filters)) {
  -        $this->filters=preg_split('/(\||,)/',$this->filters);
  -      }
  -    } else {
  -      $this->filters = '';
  -    }
  -    if (!empty($this->postfilters)) {
  -      if (!is_array($this->postfilters)) {
  -        $this->postfilters=preg_split('/(\||,)/',$this->postfilters);
  -      }
  -    } else {
  -      $this->postfilters = '';
  -    }
   
       # check and prepare $url_mappings
       if (!empty($this->url_mappings)) {
  @@ -1822,6 +1808,21 @@
       if (!empty($DBInfo->external_target))
         $this->external_target='target="'.$DBInfo->external_target.'"';
   
  +    if (!empty($this->filters)) {
  +      if (!is_array($this->filters)) {
  +        $this->filters=preg_split('/(\||,)/',$this->filters);
  +      }
  +    } else {
  +      $this->filters = '';
  +    }
  +    if (!empty($this->postfilters)) {
  +      if (!is_array($this->postfilters)) {
  +        $this->postfilters=preg_split('/(\||,)/',$this->postfilters);
  +      }
  +    } else {
  +      $this->postfilters = '';
  +    }
  +
       $this->baserule=array("/(?<!\<)<([^\s<>])/",
                        "/&(?!([^&;]+|#[0-9]+|#x[0-9a-fA-F]+);)/",
                        "/'''([^']*)'''/","/(?<!')'''(.*)'''(?!')/",
  
  
  


wkpark      2009/10/05 03:02:23

  Modified:    lib      checkip.php
  Log:
  remove notice warning
  
  Revision  Changes    Path
  1.4       +7 -2      moniwiki/lib/checkip.php
  
  Index: checkip.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/checkip.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- checkip.php	8 Aug 2005 07:32:19 -0000	1.3
  +++ checkip.php	4 Oct 2009 18:02:23 -0000	1.4
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   //
   // See also http://kr.php.net/ip2long/
  -// $Id: checkip.php,v 1.3 2005/08/08 07:32:19 wkpark Exp $
  +// $Id: checkip.php,v 1.4 2009/10/04 18:02:23 wkpark Exp $
   // 
   
   function is_valid_network($network)
  @@ -26,7 +26,12 @@
       $rules = explode(':',$rules);
       foreach ($rules as $rule)
       {
  -        list($network,$netmask)=explode('/',$rule);
  +        $netmask = '';
  +        if (($pos = strpos($rule, '/')) !== false)
  +            list($network,$netmask)=explode('/',$rule);
  +        else
  +            $network = trim($rule);
  +
           if (!is_valid_network($network)) continue; // ignore error
   
           $network = ip2long($network);
  
  
  


wkpark      2009/10/05 03:28:17

  Modified:    .        wiki.php
  Log:
  tar RC5
  
  Revision  Changes    Path
  1.503     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.502
  retrieving revision 1.503
  diff -u -r1.502 -r1.503
  --- wiki.php	4 Oct 2009 18:01:46 -0000	1.502
  +++ wiki.php	4 Oct 2009 18:28:17 -0000	1.503
  @@ -11,10 +11,10 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.502 2009/10/04 18:01:46 wkpark Exp $
  +// $Id: wiki.php,v 1.503 2009/10/04 18:28:17 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.502 $',1,-1);
  -$_release = '1.1.4-RC4';
  +$_revision = substr('$Revision: 1.503 $',1,-1);
  +$_release = '1.1.4-RC5';
   
   #ob_start("ob_gzhandler");
   
  
  
  


wkpark      2009/10/05 13:01:03

  Modified:    .        config.php.default wikilib.php
  Log:
  add $use_jsbuttons option
  
  Revision  Changes    Path
  1.56      +2 -1      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.55
  retrieving revision 1.56
  diff -u -r1.55 -r1.56
  --- config.php.default	29 Jul 2009 18:07:43 -0000	1.55
  +++ config.php.default	5 Oct 2009 04:01:02 -0000	1.56
  @@ -1,7 +1,7 @@
   <?php
   # This is a default 
   #
  -# $Id: config.php.default,v 1.55 2009/07/29 18:07:43 wkpark Exp $
  +# $Id: config.php.default,v 1.56 2009/10/05 04:01:02 wkpark Exp $
   #
   $sitename='UnnamedWiki'; # site name
   $data_dir= './data';
  @@ -278,3 +278,4 @@
   #$login_strict=0; # strict check
   #$use_userlink=0; # replace the UserPreference link to the UserHomePage
   $use_local_translation=0; # automatic translation
  +#$use_jsbutton=0; # use javascript fake buttons.
  
  
  
  1.285     +4 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.284
  retrieving revision 1.285
  diff -u -r1.284 -r1.285
  --- wikilib.php	1 Oct 2009 13:13:16 -0000	1.284
  +++ wikilib.php	5 Oct 2009 04:01:02 -0000	1.285
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.284 2009/10/01 13:13:16 wkpark Exp $
  +// $Id: wikilib.php,v 1.285 2009/10/05 04:01:02 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -723,7 +723,7 @@
     $js = '';
     if (empty($DBInfo->edit_with_sidebar))
       $sidebar_style="#wikiSideMenu { display: none; }\n";
  -  if ($has_form) {
  +  if ($has_form and !empty($DBInfo->use_jsbuttons)) {
       $js=<<<JS
   <style type='text/css'>
   /*<![CDATA[*/
  @@ -800,6 +800,7 @@
     $formatter->send_title(sprintf(_("Edit %s"),$options['page']).$sec,"",$options);
     //print '<div id="editor_area">'.macro_EditText($formatter,$value,$options).'</div>';
     $has_form = false;
  +
     $options['has_form'] = &$has_form;
     echo macro_EditText($formatter,$value,$options);
     if ($DBInfo->use_wikiwyg>=2) {
  @@ -817,7 +818,7 @@
   	print $js;
       }
     }
  -  if ($has_form) {
  +  if ($has_form and !empty($DBInfo->use_jsbuttons)) {
       $msg = _("Save");
       $onclick=' onclick="submit_all_forms()"';
       $onclick1=' onclick="check_uploadform()"';
  
  
  


wkpark      2009/10/06 01:53:06

  Modified:    .        wiki.php
  Log:
  tag RC6, fixed keyword search
  
  Revision  Changes    Path
  1.504     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.503
  retrieving revision 1.504
  diff -u -r1.503 -r1.504
  --- wiki.php	4 Oct 2009 18:28:17 -0000	1.503
  +++ wiki.php	5 Oct 2009 16:53:06 -0000	1.504
  @@ -11,10 +11,10 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.503 2009/10/04 18:28:17 wkpark Exp $
  +// $Id: wiki.php,v 1.504 2009/10/05 16:53:06 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.503 $',1,-1);
  -$_release = '1.1.4-RC5';
  +$_revision = substr('$Revision: 1.504 $',1,-1);
  +$_release = '1.1.4-RC6';
   
   #ob_start("ob_gzhandler");
   
  @@ -5539,7 +5539,7 @@
           $tcache->update($pagename,$formatter->pi['#title']);
       }
       if (!empty($DBInfo->use_keywords) or !empty($DBInfo->use_tagging) or !empty($_GET['update_keywords'])) {
  -      $tcache=&new Cache_text('keywords');
  +      $tcache=&new Cache_text('keyword');
         if (empty($formatter->pi['#keywords'])) {
           $tcache->remove($pagename);
         } else if (!$tcache->exists($pagename) or
  
  
  


wkpark      2009/10/06 01:53:06

  Modified:    plugin   Keywords.php
  Log:
  tag RC6, fixed keyword search
  
  Revision  Changes    Path
  1.33      +7 -5      moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- Keywords.php	6 Apr 2009 14:52:33 -0000	1.32
  +++ Keywords.php	5 Oct 2009 16:53:06 -0000	1.33
  @@ -8,12 +8,12 @@
   // Name: a Keywords Plugin
   // Description: a Keywords plugin to generate keywords of a page
   // URL: MoniWiki:KeywordsPlugin
  -// Version: $Revision: 1.32 $
  +// Version: $Revision: 1.33 $
   // License: GPL
   //
   // Usage: [[Keywords(options)]]
   //
  -// $Id: Keywords.php,v 1.32 2009/04/06 14:52:33 wkpark Exp $
  +// $Id: Keywords.php,v 1.33 2009/10/05 16:53:06 wkpark Exp $
   
   define('LOCAL_KEYWORDS','LocalKeywords');
   
  @@ -70,7 +70,7 @@
       if (!$pagename) $pagename=$formatter->page->name;
   
       # get cached keywords
  -    $cache=new Cache_text('keywords');
  +    $cache=new Cache_text('keyword');
       $pkey=$pagename;
   
       $mc=new Cache_text('macro');
  @@ -82,12 +82,14 @@
       $pmt=$cache->mtime($pkey);
       if ($cmt > $pmt) {
           # check update or not
  -        $dmt=filemtime($DBInfo->cache_dir.'/keywords/.');
  +        $dmt=filemtime($DBInfo->cache_dir.'/keyword/.');
           if ($dmt > $cmt) { # XXX crude method
               $mykeys=array();
           } else {
               $mykeys=unserialize($mc->fetch($mkey));
           }
  +    } else {
  +        $mc->remove($mkey);
       }
   
       if (!$mykeys):
  @@ -591,7 +593,7 @@
               return;
           }
   
  -        $cache=new Cache_text('keywords');
  +        $cache=new Cache_text('keyword');
           $keys=$options['key'];
           $keys=array_flip($keys);
           unset($keys['']);
  
  
  


wkpark      2009/10/06 03:18:39

  Modified:    css      kbd.js
  Log:
  disable focus on search form
  
  Revision  Changes    Path
  1.23      +6 -4      moniwiki/css/kbd.js
  
  Index: kbd.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/kbd.js,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- kbd.js	16 Sep 2009 09:48:40 -0000	1.22
  +++ kbd.js	5 Oct 2009 18:18:38 -0000	1.23
  @@ -6,7 +6,7 @@
   
      distributable under GPL
   
  -   $Id: kbd.js,v 1.22 2009/09/16 09:48:40 wkpark Exp $
  +   $Id: kbd.js,v 1.23 2009/10/05 18:18:38 wkpark Exp $
   
      CHANGES
   
  @@ -302,9 +302,11 @@
   	// check the editor_area
   	var form = document.getElementById('editor_area');
   	if (form) return;
  -	var go = document.getElementById(_go);
  -	// focus on to the input form
  -	if (go) go.elements[_govalue].focus();
  +	if (typeof _focus_on != 'undefined') {
  +		var go = document.getElementById(_go);
  +		// focus on to the input form
  +		if (go) go.elements[_govalue].focus();
  +	}
   }
   
   (function () {
  
  
  


wkpark      2009/10/06 21:17:54

  Modified:    css      _base.css
  Log:
  update
  
  Revision  Changes    Path
  1.35      +0 -1      moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- _base.css	30 Sep 2009 16:07:29 -0000	1.34
  +++ _base.css	6 Oct 2009 12:17:54 -0000	1.35
  @@ -82,7 +82,6 @@
   }
   
   table.wiki tr {
  -   background-color: #ECECEC;
   }
   
   textarea {
  
  
  


wkpark      2009/10/07 03:25:01

  Modified:    .        wiki.php
  Log:
  use apache_lookup_uri() to detect the real path
  
  Revision  Changes    Path
  1.505     +19 -10    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.504
  retrieving revision 1.505
  diff -u -r1.504 -r1.505
  --- wiki.php	5 Oct 2009 16:53:06 -0000	1.504
  +++ wiki.php	6 Oct 2009 18:25:00 -0000	1.505
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.504 2009/10/05 16:53:06 wkpark Exp $
  +// $Id: wiki.php,v 1.505 2009/10/06 18:25:00 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.504 $',1,-1);
  +$_revision = substr('$Revision: 1.505 $',1,-1);
   $_release = '1.1.4-RC6';
   
   #ob_start("ob_gzhandler");
  @@ -711,12 +711,21 @@
         $this->upload_dir_url= $this->upload_dir;
   
       // getenv("DOCUMENT_ROOT") != doc_root or not ?
  -    $doc_root = isset($this->doc_root) ? $this->doc_root :
  -      ($this->url_prefix ? dirname(dirname(__FILE__)) : dirname(__FILE__));
  -    $doc_root = preg_replace('@/$@', '', $doc_root);
  +    if (empty($this->imgs_real_dir)) {
  +      if (function_exists('apache_lookup_uri')) {
  +        $info = apache_lookup_uri($this->imgs_dir_url);
  +        if (isset($info->filename)) {
  +          if (preg_match('@/$@', $info->filename))
  +            $this->imgs_real_dir = $info->filename;
  +          else
  +            $this->imgs_real_dir = dirname($info->filename);
  +        }
  +      }
  +    } else {
  +      $this->imgs_real_dir = basename($this->imgs_dir); // XXX
  +    }
   
  -    $imgs_real_dir= !empty($this->imgs_real_dir) ? $this->imgs_real_dir : $doc_root.'/'.$this->imgs_dir;
  -    if (file_exists($imgs_real_dir.'/interwiki/'.'moniwiki-16.png'))
  +    if (file_exists($this->imgs_real_dir.'/interwiki/'.'moniwiki-16.png'))
         $this->imgs_dir_interwiki=$this->imgs_dir.'/interwiki/';
   
       if (empty($this->icon)) {
  @@ -725,12 +734,12 @@
   
       // for lower version compatibility
       $ext='png';
  -    if (is_dir($imgs_real_dir.'/'.$iconset)) $iconset.='/';
  +    if (is_dir($this->imgs_real_dir.'/'.$iconset)) $iconset.='/';
       else $iconset.='-';
   
  -    if (!file_exists($imgs_real_dir.'/'.$iconset.'home.png')) $ext = 'gif';
  +    if (!file_exists($this->imgs_real_dir.'/'.$iconset.'home.png')) $ext = 'gif';
   
  -    if (file_exists($imgs_real_dir.'/'.$iconset.'http.png'))
  +    if (file_exists($this->imgs_real_dir.'/'.$iconset.'http.png'))
         $this->imgs_dir_url=$this->imgs_dir.'/'.$iconset;
   
       $this->icon['upper']="<img src='$imgdir/${iconset}upper.$ext' alt='U' style='vertical-align:middle;border:0px' />";
  
  
  


wkpark      2009/10/07 15:54:03

  Modified:    .        wiki.php
  Log:
  tag RC7
  
  Revision  Changes    Path
  1.506     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.505
  retrieving revision 1.506
  diff -u -r1.505 -r1.506
  --- wiki.php	6 Oct 2009 18:25:00 -0000	1.505
  +++ wiki.php	7 Oct 2009 06:54:03 -0000	1.506
  @@ -11,10 +11,10 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.505 2009/10/06 18:25:00 wkpark Exp $
  +// $Id: wiki.php,v 1.506 2009/10/07 06:54:03 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.505 $',1,-1);
  -$_release = '1.1.4-RC6';
  +$_revision = substr('$Revision: 1.506 $',1,-1);
  +$_release = '1.1.4-RC7';
   
   #ob_start("ob_gzhandler");
   
  
  
  


wkpark      2009/10/09 00:14:42

  Modified:    .        wikilib.php
  Log:
  fixed IE button problem. reported by ditto.
  
  Revision  Changes    Path
  1.286     +6 -6      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.285
  retrieving revision 1.286
  diff -u -r1.285 -r1.286
  --- wikilib.php	5 Oct 2009 04:01:02 -0000	1.285
  +++ wikilib.php	8 Oct 2009 15:14:42 -0000	1.286
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.285 2009/10/05 04:01:02 wkpark Exp $
  +// $Id: wikilib.php,v 1.286 2009/10/08 15:14:42 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -824,7 +824,7 @@
       $onclick1=' onclick="check_uploadform()"';
       echo "<div id='save-buttons'>\n";
       echo "<button type='button'$onclick tabindex='10'><span>$msg</span></button>\n";
  -    echo "<button type='submit'$onclick1 tabindex='11' name='button_preview' value='1'><span>".
  +    echo "<button type='button'$onclick1 tabindex='11' name='button_preview' value='1'><span>".
         _("Preview").'</span></button>';
       if ($preview)
         echo ' '.$formatter->link_to('#preview',_("Skip to preview"),' class="preview-anchor"');
  @@ -1077,7 +1077,7 @@
   
     $summary_msg=_("Summary");
     if (!$options['simple']) {
  -    $preview_btn='<button type="submit" tabindex="6" name="button_preview" value="1"><span>'.
  +    $preview_btn='<button type="submit" tabindex="6" name="button_preview" onclick="this.value=1" value="1"><span>'.
         _("Preview").'</span></button>';
       if ($preview)
         $skip_preview= ' '.$formatter->link_to('#preview',_("Skip to preview"),' class="preview-anchor"');
  @@ -1662,7 +1662,7 @@
   
     $savetext=$options['savetext'];
     $datestamp=$options['datestamp'];
  -  $button_preview=$options['button_preview'];
  +  $button_preview=is_numeric($options['button_preview']);
     $button_merge=$options['button_merge']? 1:0;
     $button_merge=$options['manual_merge']? 2:$button_merge;
     $button_merge=$options['force_merge']? 3:$button_merge;
  @@ -1741,7 +1741,7 @@
         $options['has_form'] = &$has_form;
         print macro_EditText($formatter,$value,$options); # XXX
   
  -      if ($has_form) {
  +      if ($has_form and !empty($DBInfo->use_jsbuttons)) {
           $msg = _("Save");
           $onclick=' onclick="submit_all_forms()"';
           $onclick1=' onclick="check_uploadform()"';
  @@ -1838,7 +1838,7 @@
       $has_form = false;
       $options['has_form'] = &$has_form;
       print '<div id="editor_area_wrap">'.macro_EditText($formatter,$value,$options);
  -    if ($has_form) {
  +    if ($has_form and !empty($DBInfo->use_jsbuttons)) {
         $msg = _("Save");
         $onclick=' onclick="submit_all_forms()"';
         $onclick1=' onclick="check_uploadform()"';
  
  
  


wkpark      2009/10/09 16:37:01

  Modified:    .        wiki.php
  Log:
  dir mtime workaround fix
  
  Revision  Changes    Path
  1.507     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.506
  retrieving revision 1.507
  diff -u -r1.506 -r1.507
  --- wiki.php	7 Oct 2009 06:54:03 -0000	1.506
  +++ wiki.php	9 Oct 2009 07:37:01 -0000	1.507
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.506 2009/10/07 06:54:03 wkpark Exp $
  +// $Id: wiki.php,v 1.507 2009/10/09 07:37:01 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.506 $',1,-1);
  +$_revision = substr('$Revision: 1.507 $',1,-1);
   $_release = '1.1.4-RC7';
   
   #ob_start("ob_gzhandler");
  @@ -3392,7 +3392,7 @@
       } else {
         # XXX need to redesign pagelink method ?
         if (empty($DBInfo->without_pagelinks_cache)) {
  -        $dmt=filemtime($DBInfo->text_dir.'/.'); // mtime fix XXX
  +        $dmt=filemtime($DBInfo->editlog_name); // workaround to check the dir mtime of the text_dir
           $this->update_pagelinks= $dmt > $this->cache->mtime($this->page->name);
           #like as..
           #if (!$this->update_pagelinks) $this->pagelinks=$this->get_pagelinks();
  @@ -5569,7 +5569,7 @@
         $cache=&new Cache_text('pages',2,'html');
         $mcache=&new Cache_text('dynamicmacros',2);
         $mtime=$cache->mtime($pagename);
  -      $dtime=filemtime($Config['text_dir'].'/.'); // mtime fix XXX
  +      $dtime=filemtime($DBInfo->editlog_name); // workaround to check the dir mtime of the text_dir
         $now=time();
         $check=$now-$mtime;
         $extra_out='';
  
  
  


wkpark      2009/10/09 17:20:54

  Modified:    .        wiki.php
  Log:
  initSmiley() method added.
  check $timer conditionally.
  init of page rendering parts are extracted out to Formatter class.
  
  Revision  Changes    Path
  1.508     +67 -37    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.507
  retrieving revision 1.508
  diff -u -r1.507 -r1.508
  --- wiki.php	9 Oct 2009 07:37:01 -0000	1.507
  +++ wiki.php	9 Oct 2009 08:20:54 -0000	1.508
  @@ -11,18 +11,16 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.507 2009/10/09 07:37:01 wkpark Exp $
  +// $Id: wiki.php,v 1.508 2009/10/09 08:20:54 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.507 $',1,-1);
  -$_release = '1.1.4-RC7';
  +$_revision = substr('$Revision: 1.508 $',1,-1);
  +$_release = '1.1.4-RC8';
   
   #ob_start("ob_gzhandler");
   
   error_reporting(E_ALL ^ E_NOTICE);
   #error_reporting(E_ALL);
   
  -$timing=new Timer();
  -
   function getPlugin($pluginname) {
     static $plugins=array();
     if (is_bool($pluginname) and $pluginname)
  @@ -1784,6 +1782,7 @@
       $this->use_rating=$DBInfo->use_rating;
       $this->use_etable=!empty($DBInfo->use_etable) ? 1 : 0;
       $this->use_metadata=$DBInfo->use_metadata;
  +    $this->use_smileys=$DBInfo->use_smileys;
       $this->use_namespace=!empty($DBInfo->use_namespace) ? $DBInfo->use_namespace : '';
       $this->udb=&$DBInfo->udb;
       $this->user=&$DBInfo->user;
  @@ -1817,6 +1816,7 @@
       if (!empty($DBInfo->external_target))
         $this->external_target='target="'.$DBInfo->external_target.'"';
   
  +    // set filter
       if (!empty($this->filters)) {
         if (!is_array($this->filters)) {
           $this->filters=preg_split('/(\||,)/',$this->filters);
  @@ -1867,23 +1867,38 @@
       # NoSmoke's MultiLineCell hack
       $this->extrarule=array("/{{\|(.*)\|}}/","/{{\|/","/\|}}/");
       $this->extrarepl=array("<table class='closure'><tr class='closure'><td class='closure'>\\1</td></tr></table>","</div><table class='closure'><tr class='closure'><td class='closure'><div>","</div></td></tr></table><div>");
  -    
  -    # set smily_rule,_repl
  -    # load smileys
  -    if (!empty($DBInfo->use_smileys)) {
  -      $this->smileys = getSmileys();
  -
  -      $tmp=array_keys($this->smileys);
  -      $tmp=array_map('_preg_escape',$tmp);
  -      $rule=implode('|', $tmp);
  -      $DBInfo->smiley_rule=$rule;
   
  -      $this->smiley_rule='/(?<=\s|^|>)('.$DBInfo->smiley_rule.')(?=\s|<|$)/e';
  -      $this->smiley_repl="\$formatter->smiley_repl('\\1')";
  +    // set extra baserule
  +    if (!empty($DBInfo->baserule)) {
  +      $dummy = 'dummy';
  +      foreach ($DBInfo->baserule as $rule=>$repl) {
  +        $t = @preg_match($rule,$repl);
  +        if ($t!==false) {
  +          $this->baserule[]=$rule;
  +          $this->baserepl[]=$repl;
  +        }
  +      }
  +    }
   
  -      #$this->baserule[]=$smiley_rule;
  -      #$this->baserepl[]=$smiley_repl;
  +    // check and prepare $url_mappings
  +    if (!empty($DBInfo->url_mappings)) {
  +      if (!is_array($DBInfo->url_mappings)) {
  +        $maps=explode("\n",$DBInfo->url_mappings);
  +        $tmap=array();
  +        $rule='';
  +        foreach ($maps as $map) {
  +          if (strpos($map,' ')) {
  +            $key=strtok($map,' ');
  +            $val=strtok('');
  +            $tmap["$key"]=$val;
  +            $rule.=preg_quote($key,'/').'|';
  +          }
  +        }
  +        $this->url_mappings=$tmap;
  +        $this->url_mapping_rule=substr($rule,0,-1);
  +      }
       }
  +
       $this->footrule="\[\*[^\]]*\s[^\]]+\]";
   
       $this->cache= new Cache_text("pagelinks");
  @@ -1891,6 +1906,21 @@
       # XXX
     }
   
  +  /**
  +   * init Smileys
  +   * load smileys and set smily_rule and smiley_repl
  +   */
  +  function initSmileys() {
  +    $this->smileys = getSmileys();
  +
  +    $tmp = array_keys($this->smileys);
  +    $tmp = array_map('_preg_escape', $tmp);
  +    $rule = implode('|', $tmp);
  +
  +    $this->smiley_rule = '/(?<=\s|^|>)('.$rule.')(?=\s|<|$)/e';
  +    $this->smiley_repl = "\$formatter->smiley_repl('\\1')";
  +  }
  +
     function set_wordrule($pis=array()) {
       global $DBInfo;
   
  @@ -3896,7 +3926,10 @@
         }
   
         # Smiley
  -      if ($this->smiley_rule)
  +      if (!empty($this->use_smileys) and empty($this->smiley_rule))
  +        $this->initSmileys();
  +
  +      if (!empty($this->smiley_rule))
           $line=preg_replace($this->smiley_rule,$this->smiley_repl,$line);
         # NoSmoke's MultiLineCell hack
         #$line=preg_replace(array("/{{\|/","/\|}}/"),
  @@ -4581,7 +4614,7 @@
     alt="powered by MoniWiki" /></a>
   FOOT;
   
  -    if ($options['timer']) {
  +    if (is_object($options['timer'])) {
         $options['timer']->Check();
         $timer=$options['timer']->Total();
       }
  @@ -5393,17 +5426,6 @@
   
     $formatter = &new Formatter($page,$options);
   
  -  if (!empty($Config['baserule'])) {
  -    $dummy = 'dummy';
  -    foreach ($Config['baserule'] as $rule=>$repl) {
  -      $t = @preg_match($rule,$repl);
  -      if ($t!==false) {
  -        $formatter->baserule[]=$rule;
  -        $formatter->baserepl[]=$repl;
  -      }
  -    }
  -  }
  -
     $formatter->refresh=$refresh;
     $formatter->popup=$popup;
     $formatter->macro_repl('InterWiki','',array('init'=>1));
  @@ -5563,7 +5585,9 @@
         log_referer($_SERVER['HTTP_REFERER'],$pagename);
   
       $formatter->write("<div id='wikiContent'>\n");
  -    $options['timer']->Check("init");
  +    if (is_object($options['timer'])) {
  +      $options['timer']->Check("init");
  +    }
       $options['pagelinks']=1;
       if (!empty($Config['cachetime']) and $Config['cachetime'] > 0 and empty($formatter->pi['#nocache'])) {
         $cache=&new Cache_text('pages',2,'html');
  @@ -5610,7 +5634,9 @@
       } else {
         $formatter->send_page('',$options);
       }
  -    $options['timer']->Check("send_page");
  +    if (is_object($options['timer'])) {
  +      $options['timer']->Check("send_page");
  +    }
       $formatter->write("<!-- wikiContent --></div>\n");
   
       if (!empty($DBInfo->extra_macros) and
  @@ -5747,11 +5773,15 @@
   include_once("wikilib.php");
   include_once("lib/win32fix.php");
   
  +$options = array();
  +$timing = &new Timer();
  +$options['timer'] = &$timing;
  +
   $DBInfo= new WikiDB($Config);
   
  -$options=array();
  -$options['timer']=&$timing;
  -$options['timer']->Check("load");
  +if (is_object($options['timer'])) {
  +  $options['timer']->Check("load");
  +}
   
   $lang= set_locale($DBInfo->lang,$DBInfo->charset);
   init_locale($lang);
  
  
  


wkpark      2009/10/09 17:20:54

  Modified:    plugin   chat.php
  Log:
  initSmiley() method added.
  check $timer conditionally.
  init of page rendering parts are extracted out to Formatter class.
  
  Revision  Changes    Path
  1.11      +7 -4      moniwiki/plugin/chat.php
  
  Index: chat.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/chat.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- chat.php	10 Dec 2008 09:59:49 -0000	1.10
  +++ chat.php	9 Oct 2009 08:20:54 -0000	1.11
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Chat]]
   //
  -// $Id: chat.php,v 1.10 2008/12/10 09:59:49 wkpark Exp $
  +// $Id: chat.php,v 1.11 2009/10/09 08:20:54 wkpark Exp $
   // http://cvs.drupal.org/viewcvs/drupal/contributions/modules/chat/
   
   function macro_Chat($formatter,$value,$options=array()) {
  @@ -164,8 +164,10 @@
   
       $out='';
       $formatter->set_wordrule();
  -    $smiley_rule='/(?<=\s|^|>)('.$DBInfo->smiley_rule.')(?=\s|$)/e';
  -    $smiley_repl="\$formatter->smiley_repl('\\1')";
  +
  +    if (!empty($formatter->use_smileys) and empty($formatter->smiley_rule))
  +        $formatter->initSmileys();
  +
       $save=$formatter->sister_on;
       $formatter->sister_on=0;
       $save2=$formatter->nonexists;
  @@ -180,7 +182,8 @@
           $line='<span class="date">'.
               gmdate("H:i:s",$time+$options['tz_offset']).'</span>'.
               '<span class="user">&lt;'.$user.'></span>'.$msg;
  -        $line=preg_replace($smiley_rule,$smiley_repl,$line);
  +        if (!empty($formatter->smiley_rule))
  +            $line=preg_replace($formatter->smiley_rule,$formatter->smiley_repl,$line);
           $out.='<li>'.preg_replace("/(".$formatter->wordrule.")/e",
              "\$formatter->link_repl('\\1')",$line).'</li>';
           #$out.='<li>'.$line.'</li>';
  
  
  


wkpark      2009/10/09 17:20:54

  Modified:    plugin/processor monimarkup.php whtml.php
  Log:
  initSmiley() method added.
  check $timer conditionally.
  init of page rendering parts are extracted out to Formatter class.
  
  Revision  Changes    Path
  1.25      +5 -2      moniwiki/plugin/processor/monimarkup.php
  
  Index: monimarkup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/monimarkup.php,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- monimarkup.php	21 Apr 2009 11:08:08 -0000	1.24
  +++ monimarkup.php	9 Oct 2009 08:20:54 -0000	1.25
  @@ -3,12 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a moniwiki formatting processor for the MoniWiki
   //
  -// $Id: monimarkup.php,v 1.24 2009/04/21 11:08:08 wkpark Exp $
  +// $Id: monimarkup.php,v 1.25 2009/10/09 08:20:54 wkpark Exp $
   /**
    * @date    2006-08-09
    * @name    Moniwiki Processor
    * @desc    Moniwiki default processor
  - * @version $Revision: 1.24 $
  + * @version $Revision: 1.25 $
    * @depend  1.1.3
    * @license GPL
    */
  @@ -649,6 +649,9 @@
           }
           if ($formatter->sect_num >1) $out.=$this->_div(0);
   
  +        if (!empty($formatter->use_smileys) and empty($formatter->smiley_rule))
  +            $formatter->initSmileys();
  + 
           if (!empty($formatter->smiley_rule))
               $out=preg_replace($formatter->smiley_rule,
                    $formatter->smiley_repl,$out);
  
  
  
  1.3       +7 -5      moniwiki/plugin/processor/whtml.php
  
  Index: whtml.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/whtml.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- whtml.php	8 Jan 2008 14:35:45 -0000	1.2
  +++ whtml.php	9 Oct 2009 08:20:54 -0000	1.3
  @@ -8,14 +8,14 @@
   // Name: WHTML Processor
   // Description: HTML with WikiLinks Processor
   // URL: MoniWiki:WikiHtmlProcessor
  -// Version: $Revision: 1.2 $
  +// Version: $Revision: 1.3 $
   // License: GPL
   //
   // Usage: {{{#!whtml
   // <h1>Hello world ! Hello [MoniWiki]</h1>
   // Hello World
   // }}}
  -// $Id: whtml.php,v 1.2 2008/01/08 14:35:45 wkpark Exp $
  +// $Id: whtml.php,v 1.3 2009/10/09 08:20:54 wkpark Exp $
   
   function processor_whtml($formatter,$value='',$options=array()) {
       if ($value[0]=='#' and $value[1]=='!')
  @@ -25,8 +25,9 @@
           list($tag,$args)=explode(' ',$line,2);
   
       $formatter->set_wordrule();
  -    $smiley_rule=$formatter->smiley_rule;
  -    $smiley_repl="\$formatter->smiley_repl('\\1')";
  +    if (!empty($formatter->use_smileys) and empty($formatter->smiley_rule))
  +        $formatter->initSmileys();
  +
   
       $save=$formatter; // do not disturb $formatter
       $formatter->nonexists='always';
  @@ -35,7 +36,8 @@
       for ($i=0,$sz=count($chunks); $i<$sz; $i++) {
           if ($chunks[$i][0] != '<') {
               $out=$chunks[$i];
  -            $out=preg_replace($smiley_rule,$smiley_repl,$out);
  +            if (!empty($formatter->smiley_rule))
  +                $out=preg_replace($formatter->smiley_rule,$formatter->smiley_repl,$out);
               $out=preg_replace("/(".$formatter->wordrule.")/e","\$formatter->link_repl('\\1')",$out);
               $chunks[$i]=$out;
           }
  
  
  


wkpark      2009/10/09 18:51:50

  Modified:    .        wiki.php
  Log:
  move initilize part of the url_mapping to link_repl() of the Formatter
  
  Revision  Changes    Path
  1.509     +6 -26     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.508
  retrieving revision 1.509
  diff -u -r1.508 -r1.509
  --- wiki.php	9 Oct 2009 08:20:54 -0000	1.508
  +++ wiki.php	9 Oct 2009 09:51:49 -0000	1.509
  @@ -11,10 +11,10 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.508 2009/10/09 08:20:54 wkpark Exp $
  +// $Id: wiki.php,v 1.509 2009/10/09 09:51:49 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.508 $',1,-1);
  -$_release = '1.1.4-RC8';
  +$_revision = substr('$Revision: 1.509 $',1,-1);
  +$_release = '1.1.4-RC9';
   
   #ob_start("ob_gzhandler");
   
  @@ -824,24 +824,6 @@
       } else
         $this->security=new Security($this);
   
  -    # check and prepare $url_mappings
  -    if (!empty($this->url_mappings)) {
  -      if (!is_array($this->url_mappings)) {
  -        $maps=explode("\n",$this->url_mappings);
  -        $tmap=array();
  -        $rule='';
  -        foreach ($maps as $map) {
  -          if (strpos($map,' ')) {
  -            $key=strtok($map,' ');
  -            $val=strtok('');
  -            $tmap["$key"]=$val;
  -            $rule.=preg_quote($key,'/').'|';
  -          }
  -        }
  -        $this->url_mappings=$tmap;
  -        $this->url_mapping_rule=substr($rule,0,-1);
  -      }
  -    }
       register_shutdown_function(array(&$this,'Close'));
     }
   
  @@ -1769,7 +1751,6 @@
       $this->auto_linebreak=!empty($DBInfo->auto_linebreak) ? 1 : 0;
       $this->nonexists=$DBInfo->nonexists;
       $this->url_mappings=&$DBInfo->url_mappings;
  -    $this->url_mapping_rule=&$DBInfo->url_mapping_rule;
       $this->css_friendly=$DBInfo->css_friendly;
       $this->use_smartdiff=$DBInfo->use_smartdiff;
       $this->use_easyalias=$DBInfo->use_easyalias;
  @@ -1885,17 +1866,14 @@
         if (!is_array($DBInfo->url_mappings)) {
           $maps=explode("\n",$DBInfo->url_mappings);
           $tmap=array();
  -        $rule='';
           foreach ($maps as $map) {
             if (strpos($map,' ')) {
               $key=strtok($map,' ');
               $val=strtok('');
               $tmap["$key"]=$val;
  -            $rule.=preg_quote($key,'/').'|';
             }
           }
           $this->url_mappings=$tmap;
  -        $this->url_mapping_rule=substr($rule,0,-1);
         }
       }
   
  @@ -2348,7 +2326,9 @@
           $external_icon=$this->icon['external'];
         }
   
  -      if ($this->url_mappings) {
  +      if (!empty($this->url_mappings)) {
  +        if (empty($this->url_mapping_rule))
  +          $this->macro_repl('UrlMapping', '', array('init'=>1));
           $url=
             preg_replace('/('.$this->url_mapping_rule.')/ie',"\$this->url_mappings['\\1']",$url);
         }
  
  
  


wkpark      2009/10/10 11:59:11

  Modified:    .        wiki.php
  Log:
  fix last changes for url_mapping
  isset/empty fix
  cleanup wiki_main() / send_header()
  lazy loading metadb
  remove file_exists() in getConfig() func.
  
  Revision  Changes    Path
  1.510     +69 -72    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.509
  retrieving revision 1.510
  diff -u -r1.509 -r1.510
  --- wiki.php	9 Oct 2009 09:51:49 -0000	1.509
  +++ wiki.php	10 Oct 2009 02:59:11 -0000	1.510
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.509 2009/10/09 09:51:49 wkpark Exp $
  +// $Id: wiki.php,v 1.510 2009/10/10 02:59:11 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.509 $',1,-1);
  +$_revision = substr('$Revision: 1.510 $',1,-1);
   $_release = '1.1.4-RC9';
   
   #ob_start("ob_gzhandler");
  @@ -561,30 +561,25 @@
   }
   
   function getConfig($configfile, $options=array()) {
  -  if (!file_exists($configfile)) {
  -    if ($options['init']) {
  -      $script= preg_replace("/\/([^\/]+)\.php$/","/monisetup.php",
  +  extract($options);
  +  unset($key,$val,$options);
  +  $myret = @include($configfile);
  +
  +  if ($myret === false) {
  +    if ($init) {
  +      $script= preg_replace("/\/([^\/]+)\.php$/",'/monisetup.php',
                  $_SERVER['SCRIPT_NAME']);
  -      if (is_string($options['init'])) $script .= '?init='.$options['init'];
  +      if (is_string($init)) $script .= '?init='.$init;
         header("Location: $script");
         exit;
       }
       return array();
     } 
  -
  -  #foreach ($options as $key=>$val) $$key=$val;
  -  extract($options);
  -  unset($key,$val,$options);
  -  include($configfile);
     unset($configfile);
  +  unset($myret);
   
     $config=get_defined_vars();
  -#  print_r($config);
   
  -#  if ($menu) $config['menu']=$menu;
  -#  if ($icons) $config['icons']=$icons;
  -#  if ($icon) $config['icon']=$icon;
  -#  if ($actions) $config['actions']=$actions;
     if (isset($config['include_path']))
       ini_set('include_path',ini_get('include_path').PATH_SEPARATOR.$config['include_path']);
   
  @@ -610,7 +605,6 @@
       $this->user_dir= $this->data_dir.'/user';
       $this->vartmp_dir= '/var/tmp';
       $this->intermap= $this->data_dir.'/intermap.txt';
  -    $this->interwikirule='';
       $this->editlog_name= $this->data_dir.'/editlog';
       $this->shared_intermap=$this->data_dir."/text/InterMap";
       $this->shared_metadb=$this->data_dir."/metadb";
  @@ -723,7 +717,7 @@
         $this->imgs_real_dir = basename($this->imgs_dir); // XXX
       }
   
  -    if (file_exists($this->imgs_real_dir.'/interwiki/'.'moniwiki-16.png'))
  +    if (is_dir($this->imgs_real_dir.'/interwiki'))
         $this->imgs_dir_interwiki=$this->imgs_dir.'/interwiki/';
   
       if (empty($this->icon)) {
  @@ -798,6 +792,20 @@
   
       $this->interwiki=null;
   
  +    if (!empty($this->use_counter))
  +      $this->counter=&new Counter_dba($this);
  +
  +    if (!empty($this->security_class)) {
  +      include_once("plugin/security/$this->security_class.php");
  +      $class='Security_'.$this->security_class;
  +      $this->security=new $class ($this);
  +    } else
  +      $this->security=new Security($this);
  +
  +    register_shutdown_function(array(&$this,'Close'));
  +  }
  +
  +  function initMetaDB() {
       if (!empty($this->use_alias) and file_exists($this->aliaspage))
         $this->alias=&new MetaDB_text($this->aliaspage);
       else
  @@ -811,20 +819,6 @@
       } else {
         $this->metadb->attachDB($this->alias);
       }
  -
  -    if (!empty($this->use_counter))
  -      $this->counter=&new Counter_dba($this);
  -    if (!isset($this->counter->counter))
  -      $this->counter=&new Counter();
  -
  -    if (!empty($this->security_class)) {
  -      include_once("plugin/security/$this->security_class.php");
  -      $class='Security_'.$this->security_class;
  -      $this->security=new $class ($this);
  -    } else
  -      $this->security=new Security($this);
  -
  -    register_shutdown_function(array(&$this,'Close'));
     }
   
     function Close() {
  @@ -2465,7 +2459,11 @@
         return $this->word_repl($url,$text.$extra,$attr,1);
       }
   
  -    # invalid InterWiki name
  +    if (empty($DBInfo->interwiki)) {
  +      $this->macro_repl('InterWiki', '', array('init'=>1));
  +    }
  +
  +    // invalid InterWiki name
       if (empty($DBInfo->interwiki[$wiki])) {
         #$dum0=preg_replace("/(".$this->wordrule.")/e","\$this->link_repl('\\1')",$wiki);
         #return $dum0.':'.($page?$this->link_repl($page,$text):'');
  @@ -2681,6 +2679,7 @@
         }
         if (!empty($this->aliases[$page])) return $this->aliases[$page];
         if (!empty($this->sister_on)) {
  +        if (empty($DBInfo->metadb)) $DBInfo->initMetaDB();
           $sisters=$DBInfo->metadb->getSisterSites($page, $DBInfo->use_sistersites);
           if ($sisters === true) {
             $this->pagelinks[$page]=-2;
  @@ -3483,6 +3482,7 @@
   
         $twin_mode=$DBInfo->use_twinpages;
         if (isset($pi['#twinpages'])) $twin_mode=$pi['#twinpages'];
  +      if (empty($DBInfo->metadb)) $DBInfo->initMetaDB();
         $twins=$DBInfo->metadb->getTwinPages($this->page->name,$twin_mode);
   
         if ($twins === true) {
  @@ -4273,13 +4273,11 @@
       $content_type=
         !empty($DBInfo->content_type) ? $DBInfo->content_type: "text/html";
   
  -    if ($DBInfo->force_charset)
  +    if (!empty($DBInfo->force_charset))
         $force_charset = '; charset='.$DBInfo->charset;
   
       if (!$plain)
         $this->header('Content-type: '.$content_type.$force_charset);
  -#    if (!$plain)
  -#      $this->header('Content-type: '.$content_type);
   
       if (!empty($options['action_mode']) and $options['action_mode'] =='ajax') return true;
   
  @@ -4321,15 +4319,15 @@
         else if ($this->group) $upper=_urlencode(substr($this->page->name,strlen($this->group)));
         if (!empty($this->pi['#keywords']))
           $keywords='<meta name="keywords" content="'.$this->pi['#keywords'].'" />'."\n";
  -      else if ($DBInfo->use_keywords) {
  +      else if (!empty($DBInfo->use_keywords)) {
           $keywords=strip_tags($this->page->title);
           $keywords=str_replace(" ",", ",$keywords); # XXX
           $keywords=htmlspecialchars($keywords);
           $keywords="<meta name=\"keywords\" content=\"$keywords\" />\n";
         }
         # find sub pages
  -      if ($DBInfo->use_subindex and empty($options['action'])) {
  -        $scache=new Cache_text('subpages');
  +      if (!empty($DBInfo->use_subindex) and empty($options['action'])) {
  +        $scache=&new Cache_text('subpages');
           if (!($subs=$scache->exists($this->page->name))) {
             if (($p = strrpos($this->page->name,'/')) !== false)
               $rule=_preg_search_escape(substr($this->page->name,0,$p));
  @@ -4373,24 +4371,24 @@
   /*]]>*/
   </script>
   JSHEAD;
  -      echo $metatags.$js."\n";
  +      echo $metatags,$js,"\n";
         echo $this->get_javascripts();
         echo $keywords;
  -      echo "  <title>$DBInfo->sitename: ".$options['title']."</title>\n";
  +      echo "  <title>$DBInfo->sitename: ",$options['title'],"</title>\n";
         if (!empty($upper))
  -        echo '  <link rel="Up" href="'.$this->link_url($upper)."\" />\n";
  +        echo '  <link rel="Up" href="',$this->link_url($upper),"\" />\n";
         $raw_url=$this->link_url($this->page->urlname,"?action=raw");
         $print_url=$this->link_url($this->page->urlname,"?action=print");
  -      echo '  <link rel="Alternate" title="Wiki Markup" href="'.
  -        $raw_url."\" />\n";
  -      echo '  <link rel="Alternate" media="print" title="Print View" href="'.
  -        $print_url."\" />\n";
  +      echo '  <link rel="Alternate" title="Wiki Markup" href="',
  +        $raw_url,"\" />\n";
  +      echo '  <link rel="Alternate" media="print" title="Print View" href="',
  +        $print_url,"\" />\n";
         if ($options['css_url']) {
  -        echo '  <link rel="stylesheet" type="text/css" '.$media.' href="'.
  +        echo '  <link rel="stylesheet" type="text/css" ',$media,' href="',
             $options['css_url']."\" />\n";
  -        if (file_exists('./css/_user.css'))
  -          echo '  <link rel="stylesheet" media="screen" type="text/css" href="'.
  -            $DBInfo->url_prefix."/css/_user.css\" />\n";
  +        if (file_exists('./css/_user.css')) // FIXME
  +          echo '  <link rel="stylesheet" media="screen" type="text/css" href="',
  +            $DBInfo->url_prefix,"/css/_user.css\" />\n";
   # default CSS
         } else echo <<<EOS
   <style type="text/css">
  @@ -5332,35 +5330,34 @@
   
   function wiki_main($options) {
     global $DBInfo,$Config;
  -  $pagename=$options['pagename'] ? $options['pagename']: $DBInfo->frontpage;
  +  $pagename=!empty($options['pagename']) ? $options['pagename']: $DBInfo->frontpage;
   
     # get primary variables
  -  if ($_SERVER['REQUEST_METHOD']=="POST") {
  +  if ($_SERVER['REQUEST_METHOD']=='POST') {
       // reset some reserved variables
       if (isset($_POST['retstr'])) unset($_POST['retstr']);
       if (isset($_POST['header'])) unset($_POST['header']);
   
       # hack for TWiki plugin
       if ($_FILES['filepath']['name']) $action='draw';
  -    if ($GLOBALS['HTTP_RAW_POST_DATA']) {
  -      # RAW posted data. the $value and $action could be accessed under
  -      # "register_globals = On" in the php.ini
  +    if (isset($GLOBALS['HTTP_RAW_POST_DATA'])) {
         # hack for Oekaki: PageName----action----filename
         list($pagename,$action,$value)=explode('----',$pagename,3);
         $options['value']=$value;
       } else {
  -      $value=$_POST['value'];
  -      $action=$_POST['action'] ? $_POST['action']:$action;
  -      if (!$action) $dum=explode('----',$pagename,3);
  -      if ($dum[0] && $dum[1]) {
  +      $value=!empty($_POST['value']) ? $_POST['value'] : '';
  +      $action=!empty($_POST['action']) ? $_POST['action'] : '';
  +      if (empty($action))
  +        $dum=explode('----',$pagename,3);
  +      if (isset($dum[0]) && isset($dum[1])) {
           $pagename=$dum[0];
           $action=$dum[1];
  -        $value=$dum[2] ? $dum[2]:'';
  +        $value=!empty($dum[2]) ? $dum[2] : '';
         }
       }
  -    $goto=$_POST['goto'];
  -    $popup=$_POST['popup'];
  -  } else if ($_SERVER['REQUEST_METHOD']=="GET") {
  +    $goto=!empty($_POST['goto']) ? $_POST['goto'] : '';
  +    $popup=!empty($_POST['popup']) ? 1 : 0;
  +  } else if ($_SERVER['REQUEST_METHOD']=='GET') {
       // reset some reserved variables
       if (isset($_GET['retstr'])) unset($_GET['retstr']);
       if (isset($_POST['header'])) unset($_POST['header']);
  @@ -5409,7 +5406,6 @@
     $formatter->refresh=$refresh;
     $formatter->popup=$popup;
     $formatter->macro_repl('InterWiki','',array('init'=>1));
  -  $formatter->macro_repl('UrlMapping','',array('init'=>1));
     $formatter->tz_offset=$options['tz_offset'];
   
     // simple black list check
  @@ -5434,12 +5430,12 @@
       }
     }
   
  -  while (!$action or $action=='show') {
  -    if ($value) { # ?value=Hello
  +  while (empty($action) or $action=='show') {
  +    if (!empty($value)) { # ?value=Hello
         $options['value']=$value;
         do_goto($formatter,$options);
         return true;
  -    } else if ($goto) { # ?goto=Hello
  +    } else if (!empty($goto)) { # ?goto=Hello
         $options['value']=$goto;
         do_goto($formatter,$options);
         return true;
  @@ -5447,20 +5443,21 @@
       if (!$page->exists()) {
         if (isset($options['retstr']))
           return false;
  -      if ($DBInfo->auto_search && $action!='show' && $p=getPlugin($DBInfo->auto_search)) {
  +      if (!empty($DBInfo->auto_search) && $action!='show' && $p=getPlugin($DBInfo->auto_search)) {
           $action=$DBInfo->auto_search;
           break;
         }
   
         $msg_404='';
  -      if (!$Config['no_404']) $msg_404="Status: 404 Not found"; # for IE
  -      if (!empty($options['is_robot']) or $Config['nofancy_404']) {
  +      if (empty($Config['no_404'])) $msg_404="Status: 404 Not found"; # for IE
  +      if (!empty($options['is_robot']) or !empty($Config['nofancy_404'])) {
           $formatter->header($msg_404);
           echo '<html><head></head><body><h1>'.$msg_404.'</h1></body></html>';
           return true;
         }
         $formatter->send_header($msg_404,$options);
   
  +      if (empty($DBInfo->metadb)) $DBInfo->initMetaDB();
         $twins=$DBInfo->metadb->getTwinPages($page->name,2);
         if ($twins) {
           $formatter->send_title('','',$options);
  @@ -5523,7 +5520,7 @@
             $formatter->link_tag($_GET['redirect'],'?action=show'))."</h3>";
       }
       # increase counter
  -    if (empty($options['is_robot']))
  +    if (empty($options['is_robot']) and $DBInfo->use_counter)
         $DBInfo->counter->incCounter($pagename,$options);
   
       if (empty($action)) $options['pi']=1; # protect a recursivly called #redirect
  @@ -5546,7 +5543,7 @@
   
       if (!empty($formatter->pi['#title']) and !empty($DBInfo->use_titlecache)) {
         $tcache=&new Cache_text('title');
  -      if (!$tcache->exists($pagename) or $_GET['update_title'])
  +      if (!$tcache->exists($pagename) or !empty($_GET['update_title']))
           $tcache->update($pagename,$formatter->pi['#title']);
       }
       if (!empty($DBInfo->use_keywords) or !empty($DBInfo->use_tagging) or !empty($_GET['update_keywords'])) {
  
  
  


wkpark      2009/10/10 18:49:09

  Modified:    .        wiki.php
  Log:
  use is_dir() to check the real dir of imgs
  mb_strimwidth() with encoding opt.
  
  Revision  Changes    Path
  1.511     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.510
  retrieving revision 1.511
  diff -u -r1.510 -r1.511
  --- wiki.php	10 Oct 2009 02:59:11 -0000	1.510
  +++ wiki.php	10 Oct 2009 09:49:09 -0000	1.511
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.510 2009/10/10 02:59:11 wkpark Exp $
  +// $Id: wiki.php,v 1.511 2009/10/10 09:49:09 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.510 $',1,-1);
  +$_revision = substr('$Revision: 1.511 $',1,-1);
   $_release = '1.1.4-RC9';
   
   #ob_start("ob_gzhandler");
  @@ -707,7 +707,7 @@
         if (function_exists('apache_lookup_uri')) {
           $info = apache_lookup_uri($this->imgs_dir_url);
           if (isset($info->filename)) {
  -          if (preg_match('@/$@', $info->filename))
  +          if (is_dir($info->filename))
               $this->imgs_real_dir = $info->filename;
             else
               $this->imgs_real_dir = dirname($info->filename);
  @@ -4749,7 +4749,7 @@
           if (strlen($mnuname) < $len) {
             $menu[$this->page->name]=$this->word_repl($mypgname,$mnuname,$attr);
           } else if (function_exists('mb_strimwidth')) {
  -          $my=mb_strimwidth($mypgname,0,$len,'...');
  +          $my=mb_strimwidth($mypgname,0,$len,'...', $DBInfo->charset);
             $menu[$this->page->name]=$this->word_repl($mypgname,htmlspecialchars($my),$attr);
           }
         }
  
  
  


wkpark      2009/10/12 21:48:58

  Modified:    .        INSTALL
  Log:
  fixed url
  
  Revision  Changes    Path
  1.2       +1 -1      moniwiki/INSTALL
  
  Index: INSTALL
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/INSTALL,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- INSTALL	10 Aug 2003 12:16:27 -0000	1.1
  +++ INSTALL	12 Oct 2009 12:48:58 -0000	1.2
  @@ -1 +1 @@
  -See http://moniwiki.sf.net/wiki.php/MoniWiki/Installation
  +See http://moniwiki.kldp.net/wiki.php/MoniWiki/Installation
  
  
  


wkpark      2009/10/16 00:19:33

  Modified:    .        wiki.php
  Log:
  fixed $upload_dir_url by oops@kldp.org
  
  Revision  Changes    Path
  1.512     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.511
  retrieving revision 1.512
  diff -u -r1.511 -r1.512
  --- wiki.php	10 Oct 2009 09:49:09 -0000	1.511
  +++ wiki.php	15 Oct 2009 15:19:33 -0000	1.512
  @@ -11,10 +11,10 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.511 2009/10/10 09:49:09 wkpark Exp $
  +// $Id: wiki.php,v 1.512 2009/10/15 15:19:33 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.511 $',1,-1);
  -$_release = '1.1.4-RC9';
  +$_revision = substr('$Revision: 1.512 $',1,-1);
  +$_release = '1.1.4-RC10';
   
   #ob_start("ob_gzhandler");
   
  @@ -700,7 +700,7 @@
       $this->imgs_dir_interwiki=$this->imgs_dir.'/';
   
       if (empty($this->upload_dir_url))
  -      $this->upload_dir_url= $this->upload_dir;
  +      $this->upload_dir_url= $this->url_prefix . '/' . $this->upload_dir;
   
       // getenv("DOCUMENT_ROOT") != doc_root or not ?
       if (empty($this->imgs_real_dir)) {
  
  
  


wkpark      2009/10/20 15:19:33

  Modified:    .        wikilib.php
  Log:
  fix User to WikiUser (reported by babeltwr)
  
  Revision  Changes    Path
  1.287     +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.286
  retrieving revision 1.287
  diff -u -r1.286 -r1.287
  --- wikilib.php	8 Oct 2009 15:14:42 -0000	1.286
  +++ wikilib.php	20 Oct 2009 06:19:33 -0000	1.287
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.286 2009/10/08 15:14:42 wkpark Exp $
  +// $Id: wikilib.php,v 1.287 2009/10/20 06:19:33 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -475,7 +475,7 @@
       if ($this->_exists($id)) {
          $data=file("$this->user_dir/wu-" . $this->_id_to_key($id));
       } else {
  -       $user=new User('Anonymous');
  +       $user=new WikiUser('Anonymous');
          return $user;
       }
       $info=array();
  
  
  


wkpark      2009/10/20 18:48:17

  Modified:    plugin   Attachment.php
  Log:
  fixed win32 NTFS fs encoding bug.
  
  Revision  Changes    Path
  1.42      +4 -4      moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.41
  retrieving revision 1.42
  diff -u -r1.41 -r1.42
  --- Attachment.php	29 Apr 2009 23:15:10 -0000	1.41
  +++ Attachment.php	20 Oct 2009 09:48:17 -0000	1.42
  @@ -7,13 +7,13 @@
   // Name: Attachment
   // Description: Attachment Plugin
   // URL: MoniWiki:AttachmentPlugin
  -// Version: $Revision: 1.41 $
  +// Version: $Revision: 1.42 $
   // Depend: 1.1.3
   // License: GPL
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.41 2009/04/29 23:15:10 wkpark Exp $
  +// $Id: Attachment.php,v 1.42 2009/10/20 09:48:17 wkpark Exp $
   
   function macro_Attachment($formatter,$value,$options='') {
     global $DBInfo;
  @@ -293,8 +293,8 @@
           if ($use_thumb) {
             $url=$DBInfo->upload_dir_url.'/thumbnails/'._urlencode($_l_file);
           } else {
  -          $_l_upload_file=str_replace($DBInfo->upload_dir, $DBInfo->upload_dir_url,$_l_upload_file);
  -          $url=_urlencode($_l_upload_file);
  +          $_my_file=str_replace($DBInfo->upload_dir, $DBInfo->upload_dir_url,$dir . '/' . $file);
  +          $url=_urlencode($_my_file);
           }
         }
   
  
  
  


wkpark      2009/10/20 19:44:26

  Modified:    .        wiki.php
  Log:
  tagging 1.1.4
  
  Revision  Changes    Path
  1.513     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.512
  retrieving revision 1.513
  diff -u -r1.512 -r1.513
  --- wiki.php	15 Oct 2009 15:19:33 -0000	1.512
  +++ wiki.php	20 Oct 2009 10:44:25 -0000	1.513
  @@ -11,10 +11,10 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.512 2009/10/15 15:19:33 wkpark Exp $
  +// $Id: wiki.php,v 1.513 2009/10/20 10:44:25 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.512 $',1,-1);
  -$_release = '1.1.4-RC10';
  +$_revision = substr('$Revision: 1.513 $',1,-1);
  +$_release = '1.1.4';
   
   #ob_start("ob_gzhandler");
   
  
  
  


wkpark      2009/10/20 19:56:29

  Modified:    .        monisetup.php
  Log:
  fix _() to _t()
  
  Revision  Changes    Path
  1.48      +2 -2      moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.47
  retrieving revision 1.48
  diff -u -r1.47 -r1.48
  --- monisetup.php	13 Jul 2009 07:41:25 -0000	1.47
  +++ monisetup.php	20 Oct 2009 10:56:29 -0000	1.48
  @@ -1,7 +1,7 @@
   <?php
   // Copyright 2003-2007 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.47 2009/07/13 07:41:25 wkpark Exp $
  +// $Id: monisetup.php,v 1.48 2009/10/20 10:56:29 wkpark Exp $
   
   function _stripslashes($str) {
     return get_magic_quotes_gpc() ? stripslashes($str):$str;
  @@ -759,7 +759,7 @@
     $ii=1;
     while (list($filter_name,$filter) = each($seed_filters)) {
       if ($filter_name == 'SystemPages') {
  -    	print "<h4>$filter_name ("._("Please be careful to deselect these pages").")</h4>\n";
  +    	print "<h4>$filter_name ("._t("Please be careful to deselect these pages").")</h4>\n";
       	print "<div id='systemseed'>\n";
       } else {
       	print "<h4>$filter_name <a href='#' onclick='Toggle(\"set$ii\")' >(toggle)</a></h4>\n";
  
  
  


1271496024;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv27211\n\nModified Files:\n	RecentChanges.php login.php theme.php \nLog Message:\nuse empty()\n\n
wkpark      2010/04/17 18:20:25

  Modified:    plugin   RecentChanges.php login.php theme.php
  Log:
  use empty()
  
  Revision  Changes    Path
  1.37      +16 -13    moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- RecentChanges.php	25 Sep 2009 19:14:07 -0000	1.36
  +++ RecentChanges.php	17 Apr 2010 09:20:24 -0000	1.37
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.36 2009/09/25 19:14:07 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.37 2010/04/17 09:20:24 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     global $DBInfo;
  @@ -65,11 +65,12 @@
     $use_day=1;
     $users = array();
   
  -  if ($options['target']) $target="target='$options[target]'";
  +  $target = '';
  +  if (!empty($options['target'])) $target="target='$options[target]'";
   
     // $date_fmt='D d M Y';
     $date_fmt=$DBInfo->date_fmt_rc;
  -  $days=$DBInfo->rc_days ? $DBInfo->rc_days:RC_DEFAULT_DAYS;
  +  $days=!empty($DBInfo->rc_days) ? $DBInfo->rc_days:RC_DEFAULT_DAYS;
     $perma_icon=$formatter->perma_icon;
     $changed_time_fmt = $DBInfo->changed_time_fmt;
   
  @@ -132,11 +133,11 @@
       }
     }
     // override days
  -  $days=$_GET['days'] ? min(abs($_GET['days']),RC_MAX_DAYS):$days;
  +  $days=!empty($_GET['days']) ? min(abs($_GET['days']),RC_MAX_DAYS):$days;
   
     // override ago
  -  if ($_GET['ago'])
  -    $opts['ago']=$_GET['ago'] ? abs($_GET['ago']):$opts['ago'];
  +  empty($opts['ago']) ? $opts['ago'] = 0:null;
  +  $opts['ago']=!empty($_GET['ago']) ? abs($_GET['ago']):$opts['ago'];
   
     // daysago
     $daysago='&amp;days='.$days;
  @@ -151,7 +152,7 @@
     } else {
       $bookmark= $user->bookmark;
     }
  -  if ($tz_offset == '') {
  +  if (empty($tz_offset)) {
       $tz_offset=date("Z");
       $tz_offset;
     }
  @@ -164,7 +165,8 @@
     $lines= $DBInfo->editlog_raw_lines($days,$opts);
   
     // make a daysago button
  -  if ($use_daysago or $_GET['ago']) {
  +  $btnlist = '';
  +  if (!empty($use_daysago) or !empty($_GET['ago'])) {
       $msg[0]=_("Show changes for ");
       $agolist=array(-$days,$days,2*$days,3*$days);
       $btn=array();
  @@ -189,6 +191,7 @@
       $btnlist=$script."<div class='rc-button'>\n".$btnlist."</div>\n";
     }
   
  +  $ratchet_day = FALSE;
     foreach ($lines as $line) {
       $parts= explode("\t", $line,6);
       $page_key= $parts[0];
  @@ -200,8 +203,8 @@
         unset($logs);
       }
   
  -    if ($editcount[$page_key]) {
  -      if ($logs[$page_key]) {
  +    if (!empty($editcount[$page_key])) {
  +      if (!empty($logs[$page_key])) {
           $editcount[$page_key]++;
           #$editors[$page_key].=':'.$parts[4];
           continue;
  @@ -222,7 +225,7 @@
       $parts= explode("\t", $line);
       $page_key=$parts[0];
   
  -    if ($logs[$page_key]) continue;
  +    if (!empty($logs[$page_key])) continue;
   
       $page_name= $DBInfo->keyToPagename($parts[0]);
       $addr= $DBInfo->mask_hostname ? _mask_hostname($parts[1]):$parts[1];
  @@ -272,7 +275,7 @@
   
           $out.=sprintf("%s<span class='rc-date' style='font-size:large'>%s ",
               $br, $rcdate);
  -        if (!$nobookmark)
  +        if (empty($nobookmark))
             $out.="<span class='rc-bookmark' style='font-size:small'>[".
               $formatter->link_tag($formatter->page->urlname,"?action=bookmark&amp;time=$ed_time".$daysago,
               _("set bookmark"))."]</span>\n";
  @@ -318,7 +321,7 @@
       }
       $title= $formatter->link_tag($pageurl,"",$title0,$target.$attr);
   
  -    if ($use_hits) {
  +    if (!empty($use_hits)) {
         $hits = $DBInfo->counter->pageCounter($page_name);
       }
   
  
  
  
  1.12      +4 -2      moniwiki/plugin/login.php
  
  Index: login.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/login.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- login.php	30 Dec 2008 22:40:05 -0000	1.11
  +++ login.php	17 Apr 2010 09:20:24 -0000	1.12
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Login]]
   //
  -// $Id: login.php,v 1.11 2008/12/30 22:40:05 wkpark Exp $
  +// $Id: login.php,v 1.12 2010/04/17 09:20:24 wkpark Exp $
   
   function macro_login($formatter,$value="",$options="") {
     global $DBInfo;
  @@ -16,7 +16,9 @@
     $user=&$DBInfo->user; # get from COOKIE VARS
   
     $jscript='';
  -  if ($user->id == 'Anonymous' and $DBInfo->use_safelogin) {
  +  $onsubmit = '';
  +  $passwd_hidden = '';
  +  if ($user->id == 'Anonymous' and !empty($DBInfo->use_safelogin)) {
       $onsubmit=' onsubmit="javascript:_chall.value=challenge.value;password.value=hex_hmac_md5(challenge.value, hex_md5(password.value))"';
       $jscript.="<script src='$DBInfo->url_prefix/local/md5.js'></script>";
       $time_seed=time();
  
  
  
  1.11      +2 -2      moniwiki/plugin/theme.php
  
  Index: theme.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/theme.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- theme.php	10 Dec 2008 09:59:49 -0000	1.10
  +++ theme.php	17 Apr 2010 09:20:24 -0000	1.11
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // Theme plugin for the MoniWiki
   //
  -// $Id: theme.php,v 1.10 2008/12/10 09:59:49 wkpark Exp $
  +// $Id: theme.php,v 1.11 2010/04/17 09:20:24 wkpark Exp $
   //
   
   function do_theme($formatter,$options) {
  @@ -84,7 +84,7 @@
   <select name='theme'>
   ";
     $themes=array();
  -  $path=$DBInfo->themedir ? $DBInfo->themedir: '.';
  +  $path=!empty($DBInfo->themedir) ? $DBInfo->themedir: '.';
     $handle = @opendir("$path/theme");
     if (is_resource($handle)) {
       while ($file = readdir($handle)) {
  
  
  


1271496099;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv27306\n\nModified Files:\n	wikilib.php wiki.php \nLog Message:\nuse empty() to fix Notice warnings\n\n
wkpark      2010/04/17 18:21:39

  Modified:    .        wikilib.php wiki.php
  Log:
  use empty() to fix Notice warnings
  
  Revision  Changes    Path
  1.289     +18 -12    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.288
  retrieving revision 1.289
  diff -u -r1.288 -r1.289
  --- wikilib.php	23 Mar 2010 05:51:51 -0000	1.288
  +++ wikilib.php	17 Apr 2010 09:21:39 -0000	1.289
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.288 2010/03/23 05:51:51 wkpark Exp $
  +// $Id: wikilib.php,v 1.289 2010/04/17 09:21:39 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -184,7 +184,7 @@
   
   function get_title($page,$title='') {
     global $DBInfo;
  -  if ($DBInfo->use_titlecache) {
  +  if (!empty($DBInfo->use_titlecache)) {
       $cache=new Cache_text('title');
       if ($cache->exists($page)) $title=$cache->fetch($page);
       else $title=$title ? $title:$page;
  @@ -1788,7 +1788,7 @@
   
     // XXX captcha
     $use_any=0;
  -  if ($DBInfo->use_textbrowsers) {
  +  if (!empty($DBInfo->use_textbrowsers)) {
       if (is_string($DBInfo->use_textbrowsers))
         $use_any= preg_match('/'.$DBInfo->use_textbrowsers.'/',
           $_SERVER['HTTP_USER_AGENT']) ? 1:0;
  @@ -2010,7 +2010,7 @@
   function wiki_sendmail($body,$options) {
     global $DBInfo;
   
  -  if (!$DBInfo->use_sendmail) {
  +  if (empty($DBInfo->use_sendmail)) {
       return array('msg'=>_("This wiki does not support sendmail"));
     }
   
  @@ -2210,7 +2210,7 @@
     global $DBInfo;
   
     $use_any=0;
  -  if ($DBInfo->use_textbrowsers) {
  +  if (!empty($DBInfo->use_textbrowsers)) {
       if (is_string($DBInfo->use_textbrowsers))
         $use_any= preg_match('/'.$DBInfo->use_textbrowsers.'/',
           $_SERVER['HTTP_USER_AGENT']) ? 1:0;
  @@ -2222,7 +2222,7 @@
     $user=$DBInfo->user; # get from COOKIE VARS
   
     $jscript='';
  -  if ($DBInfo->use_safelogin) {
  +  if (!empty($DBInfo->use_safelogin)) {
       $onsubmit=' onsubmit="javascript:_chall.value=challenge.value;password.value=hex_hmac_md5(challenge.value, hex_md5(password.value))"';
       $jscript.="<script src='$DBInfo->url_prefix/local/md5.js'></script>";
       $time_seed=time();
  @@ -2255,7 +2255,8 @@
   
     $button=_("Login");
     $openid_btn=_("OpenID");
  -  if ($user->id == 'Anonymous' && $DBInfo->use_openid) {
  +  $openid_form='';
  +  if ($user->id == 'Anonymous' && !empty($DBInfo->use_openid)) {
       $openid_form=<<<OPENID
     <tr>
       <th>OpenID</th>
  @@ -2268,6 +2269,7 @@
       }
     $id_btn=_("ID");
     $sep="<tr><td colspan='2'><hr /></td></tr>\n";
  +  $sep0='';
     if ($user->id == 'Anonymous' and !isset($options['login_id']) and $value!="simple") {
       if (isset($openid_form) and $value != 'openid') $sep0=$sep;
       if ($value != 'openid')
  @@ -2298,18 +2300,19 @@
       $openid_form='';
     }
   
  +  $logout = '';
     if ($user->id == 'Anonymous') {
       if (isset($options['login_id']) or !empty($_GET['join']) or $value!="simple") {
         $passwd=!empty($options['password']) ? $options['password'] : '';
         $button=_("Make profile");
  -      if (!$DBInfo->use_safelogin) {
  +      if (empty($DBInfo->use_safelogin)) {
           $again="<b>"._("password again")."</b>&nbsp;<input type='password' size='15' maxlength='$pw_length' name='passwordagain' value='' /></td></tr>";
         }
         $mailbtn=_("Mail");
         $extra=<<<EXTRA
     <tr><th>$mailbtn&nbsp;</th><td><input type="text" size="40" name="email" value="" /></td></tr>
   EXTRA;
  -      if (!$use_any and $DBInfo->use_ticket) {
  +      if (!$use_any and !empty($DBInfo->use_ticket)) {
           $seed=md5(base64_encode(time()));
           $ticketimg=$formatter->link_url($formatter->page->name,'?action=ticket&amp;__seed='.$seed);
           $extra.=<<<EXTRA
  @@ -2366,6 +2369,7 @@
   EXTRA;
       $logout="<input type='submit' name='logout' value='"._("logout")."' /> &nbsp;";
     }
  +  $script = '';
     if (empty($tz_offset) and $jscript)
       $script=<<<EOF
   <script type="text/javascript">
  @@ -2375,7 +2379,7 @@
   </script>
   EOF;
   
  -  if (!$DBInfo->use_safelogin or $button==_("Save")) {
  +  if (empty($DBInfo->use_safelogin) or $button==_("Save")) {
       if ($user->id == 'Anonymous' or $user->info['password'])
       $passwd_inp=<<<PASS
     <tr>
  @@ -2386,8 +2390,9 @@
       $onsubmit='';
       $passwd_hidden='';
     }
  +  $emailpasswd = '';
     if ($button==_("Make profile")) {
  -    if ($DBInfo->use_sendmail) {
  +    if (!empty($DBInfo->use_sendmail)) {
         $button2=_("E-mail new password");
         $emailpasswd=
           "<input type=\"submit\" name=\"login\" value=\"$button2\" />\n";
  @@ -2668,6 +2673,7 @@
     $out.= "</ul>\n";
   
     $index='';
  +  $tlink='';
     if ($sel != '.?') {
       $tlink=$formatter->link_url($formatter->page->name,'?action=titleindex&amp;sec=');
       $keys[]='all';
  @@ -2675,7 +2681,7 @@
     foreach ($keys as $key) {
       $name=$key;
       $tag='#'.$key;
  -    $link=$tlink ? preg_replace('/sec=/','sec='._urlencode($key),$tlink):'';
  +    $link=!empty($tlink) ? preg_replace('/sec=/','sec='._urlencode($key),$tlink):'';
       if ($key == 'Others') $name=_("Others");
       else if ($key == 'all') $name=_("Show all");
       $index.= "| <a href='$link$tag'>$name</a> ";
  
  
  
  1.514     +35 -29    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.513
  retrieving revision 1.514
  diff -u -r1.513 -r1.514
  --- wiki.php	20 Oct 2009 10:44:25 -0000	1.513
  +++ wiki.php	17 Apr 2010 09:21:39 -0000	1.514
  @@ -11,10 +11,10 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.513 2009/10/20 10:44:25 wkpark Exp $
  +// $Id: wiki.php,v 1.514 2010/04/17 09:21:39 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.513 $',1,-1);
  -$_release = '1.1.4';
  +$_revision = substr('$Revision: 1.514 $',1,-1);
  +$_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
   
  @@ -434,7 +434,7 @@
           }
   
           foreach ($keys as $k) {
  -          $this->db[$k]=$this->db[$k] ? $this->db[$k].','.$val:$val;
  +          $this->db[$k]=!empty($this->db[$k]) ? $this->db[$k].','.$val:$val;
           }
         }
       }
  @@ -822,9 +822,9 @@
     }
   
     function Close() {
  -    if (is_object($this->metadb))
  +    if (!empty($this->metadb) and is_object($this->metadb))
         $this->metadb->close();
  -    if (is_object($this->counter))
  +    if (!empty($this->counter) and is_object($this->counter))
         $this->counter->close();
     }
   
  @@ -1033,7 +1033,7 @@
         break;   
       }
   
  -    if ($opts['quick']) {
  +    if (!empty($opts['quick'])) {
         foreach($lines as $line) {
           $dum=explode("\t",$line,2);
           if ($keys[$dum[0]]) continue;
  @@ -1234,7 +1234,7 @@
       $this->DB=$DB;
       $this->NULL='';
       if(getenv("OS")!="Windows_NT") $this->NULL=' 2>/dev/null';
  -    if ($DB->rcs_error_log) $this->NULL='';
  +    if (!empty($DB->rcs_error_log)) $this->NULL='';
     }
   
     function _filename($pagename) {
  @@ -1746,24 +1746,24 @@
       $this->nonexists=$DBInfo->nonexists;
       $this->url_mappings=&$DBInfo->url_mappings;
       $this->css_friendly=$DBInfo->css_friendly;
  -    $this->use_smartdiff=$DBInfo->use_smartdiff;
  +    $this->use_smartdiff=!empty($DBInfo->use_smartdiff) ? $DBInfo->use_smartdiff : 0;
       $this->use_easyalias=$DBInfo->use_easyalias;
  -    $this->submenu=$DBInfo->submenu;
  +    $this->submenu=!empty($DBInfo->submenu) ? $DBInfo->submenu : null;
       $this->email_guard=$DBInfo->email_guard;
       $this->interwiki_target=!empty($DBInfo->interwiki_target) ?
         ' target="'.$DBInfo->interwiki_target.'"':'';
  -    $this->filters=$DBInfo->filters;
  +    $this->filters=!empty($DBInfo->filters) ? $DBInfo->filters : null;
       $this->postfilters=$DBInfo->postfilters;
  -    $this->use_rating=$DBInfo->use_rating;
  +    $this->use_rating=!empty($DBInfo->use_rating) ? $DBInfo->use_rating : 0;
       $this->use_etable=!empty($DBInfo->use_etable) ? 1 : 0;
  -    $this->use_metadata=$DBInfo->use_metadata;
  +    $this->use_metadata=!empty($DBInfo->use_metadata) ? $DBInfo->use_metadata : 0;
       $this->use_smileys=$DBInfo->use_smileys;
       $this->use_namespace=!empty($DBInfo->use_namespace) ? $DBInfo->use_namespace : '';
       $this->udb=&$DBInfo->udb;
       $this->user=&$DBInfo->user;
  -    $this->check_openid_url=$DBInfo->check_openid_url;
  +    $this->check_openid_url=!empty($DBInfo->check_openid_url) ? $DBInfo->check_openid_url : 0;
       $this->register_javascripts($DBInfo->javascripts);
  -    $this->dynamic_macros=$DBInfo->dynamic_macros;
  +    $this->dynamic_macros=!empty($DBInfo->dynamic_macros) ? $DBInfo->dynamic_macros : null;
   
       if (($p=strpos($page->name,"~")))
         $this->group=substr($page->name,0,$p+1);
  @@ -1909,7 +1909,7 @@
       $punct="<\'}\]\|\.\!\010\006"; # , is omitted for the WikiPedia
       $punct="<>\"\'}\]\|\.\!\010\006"; # " and > added
       $url="wiki|http|https|ftp|nntp|news|irc|telnet|mailto|file|attachment";
  -    if ($DBInfo->url_schemas) $url.='|'.$DBInfo->url_schemas;
  +    if (!empty($DBInfo->url_schemas)) $url.='|'.$DBInfo->url_schemas;
       $this->urls=$url;
       $urlrule="((?:$url):\"[^\"]+\"[^\s$punct]*|(?:$url):(?:[^\s$punct]|(\.?[^\s$punct]))+(?<![,\.\):;\"\'>]))";
       #$urlrule="((?:$url):(\.?[^\s$punct])+)";
  @@ -2018,9 +2018,9 @@
       }
   
       if (!isset($this->menu_bra)) {
  -      $this->menu_bra=$DBInfo->menu_bra;
  -      $this->menu_cat=$DBInfo->menu_cat;
  -      $this->menu_sep=$DBInfo->menu_sep;
  +      $this->menu_bra=!empty($DBInfo->menu_bra) ? $DBInfo->menu_bra : '';
  +      $this->menu_cat=!empty($DBInfo->menu_cat) ? $DBInfo->menu_cat : '';
  +      $this->menu_sep=!empty($DBInfo->menu_sep) ? $DBInfo->menu_sep : '';
       }
   
       if (!$this->icons)
  @@ -2321,10 +2321,11 @@
         }
   
         if (!empty($this->url_mappings)) {
  -        if (empty($this->url_mapping_rule))
  +        if (!isset($this->url_mapping_rule))
             $this->macro_repl('UrlMapping', '', array('init'=>1));
  -        $url=
  -          preg_replace('/('.$this->url_mapping_rule.')/ie',"\$this->url_mappings['\\1']",$url);
  +        if (!empty($this->url_mapping_rule))
  +          $url=
  +            preg_replace('/('.$this->url_mapping_rule.')/ie',"\$this->url_mappings['\\1']",$url);
         }
   
         if (preg_match("/^(:|w|[A-Z])/",$url))
  @@ -2445,8 +2446,8 @@
       # [wiki:"Hello World" hello world]
       if (isset($url{0}) and $url[0]=='"') {
         if (preg_match('/^((")?[^"]+\2)((\s+)?(.*))?$/',$url,$m)) {
  -        $url=$m[1];
  -        if (isset($m[5])) $text=$m[5];
  +        #$url=$m[1];
  +        #if (isset($m[5])) $text=$m[5];
         }
       } else if (($p=strpos($url,' '))!==false) {
         $text=substr($url,$p+1);
  @@ -4273,6 +4274,7 @@
       $content_type=
         !empty($DBInfo->content_type) ? $DBInfo->content_type: "text/html";
   
  +    $force_charset = '';
       if (!empty($DBInfo->force_charset))
         $force_charset = '; charset='.$DBInfo->charset;
   
  @@ -4303,7 +4305,7 @@
         }
       }
   
  -    $js=$DBInfo->js;
  +    $js=!empty($DBInfo->js) ? $DBInfo->js : '';
   
       if (!$plain) {
         if (isset($options['trail']))
  @@ -4317,6 +4319,7 @@
         if (isset($sep[1])) $pos=strrpos($this->page->name,$sep);
         if ($pos > 0) $upper=substr($this->page->urlname,0,$pos);
         else if ($this->group) $upper=_urlencode(substr($this->page->name,strlen($this->group)));
  +      $keywords = '';
         if (!empty($this->pi['#keywords']))
           $keywords='<meta name="keywords" content="'.$this->pi['#keywords'].'" />'."\n";
         else if (!empty($DBInfo->use_keywords)) {
  @@ -4554,7 +4557,8 @@
   
       $menus=$this->get_actions($args,$options);
   
  -    $hide_actions= $this->popup + $DBInfo->hide_actions;
  +    $hide_actions=!empty($DBInfo->hide_actions) ? $DBInfo->hide_actions : 0;
  +    $hide_actions+= $this->popup;
       $menu = '';
       if (!$hide_actions or
         ($hide_actions and $options['id']!='Anonymous')) {
  @@ -4627,6 +4631,7 @@
       preg_match('/(\:|\/)/',$name,$sep); # NameSpace/SubPage or NameSpace:SubNameSpacePage
       if (isset($sep[1])) $pos=strrpos($name,$sep[1]);
       $mypgname=$this->page->name;
  +    $upper_icon = '';
       if ($pos > 0) {
         $upper=substr($name,0,$pos);
         $upper_icon=$this->link_tag($upper,'',$this->icon['upper'])." ";
  @@ -4661,6 +4666,7 @@
       }
       # setup title variables
       #$heading=$this->link_to("?action=fullsearch&amp;value="._urlencode($name),$title);
  +    $qext = '';
       if (!empty($DBInfo->use_backlinks)) $qext='&amp;backlinks=1';
       if (!empty($link))
         $title="<a href=\"$link\">$title</a>";
  @@ -5315,7 +5321,7 @@
           break;
         }
       }
  -    if ($Config['set_lang']) putenv("LANG=".$lang);
  +    if (!empty($Config['set_lang'])) putenv("LANG=".$lang);
       if (function_exists('bind_textdomain_codeset'))
         bind_textdomain_codeset ($domain, $Config['charset']);
     }
  @@ -5325,7 +5331,7 @@
     global $Config;
   
     $lcid=substr(strtok($lang,'_'),0,2);
  -  return $Config['frontpages'][$lcid] ? $Config['frontpages'][$lcid]:$Config['frontpage'];
  +  return !empty($Config['frontpages'][$lcid]) ? $Config['frontpages'][$lcid]:$Config['frontpage'];
   }
   
   function wiki_main($options) {
  @@ -5766,7 +5772,7 @@
   if (!$options['pagename']) $options['pagename']= get_frontpage($lang);
   $DBInfo->lang=$lang;
   
  -if (session_id()== '' && !$DBInfo->nosession){
  +if (session_id()== '' && empty($Config['nosession'])){
     session_name("MONIWIKI");
     session_start();
   }
  
  
  


1271505924;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv19108\n\nModified Files:\n	wiki.php wikilib.php \nLog Message:\n[#315290] use empty(), isset() to fix Notice warnings.\n\n
wkpark      2010/04/17 21:05:24

  Modified:    .        wiki.php wikilib.php
  Log:
  [#315290] use empty(), isset() to fix Notice warnings.
  
  Revision  Changes    Path
  1.515     +26 -20    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.514
  retrieving revision 1.515
  diff -u -r1.514 -r1.515
  --- wiki.php	17 Apr 2010 09:21:39 -0000	1.514
  +++ wiki.php	17 Apr 2010 12:05:23 -0000	1.515
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.514 2010/04/17 09:21:39 wkpark Exp $
  +// $Id: wiki.php,v 1.515 2010/04/17 12:05:23 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.514 $',1,-1);
  +$_revision = substr('$Revision: 1.515 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -975,11 +975,11 @@
       $time_current= time();
       $secs_per_day= 24*60*60;
   
  -    if ($opts['ago']) {
  +    if (!empty($opts['ago'])) {
         $date_from= $time_current - ($opts['ago'] * $secs_per_day);
         $date_to= $date_from + ($days * $secs_per_day);
       } else {
  -      if ($opts['items']) {
  +      if (!empty($opts['items'])) {
           $date_from= $time_current - (365 * $secs_per_day);
         } else {
           $date_from= $time_current - ($days * $secs_per_day);
  @@ -988,7 +988,7 @@
       }
       $check=$date_to;
   
  -    $itemnum=$opts['items'] ? $opts['items']:200;
  +    $itemnum=!empty($opts['items']) ? $opts['items']:200;
   
       $fp= fopen($this->editlog_name, 'r');
       while (is_resource($fp) and ($fz=filesize($this->editlog_name))>0){
  @@ -1034,6 +1034,7 @@
       }
   
       if (!empty($opts['quick'])) {
  +      $out = array();
         foreach($lines as $line) {
           $dum=explode("\t",$line,2);
           if ($keys[$dum[0]]) continue;
  @@ -1248,9 +1249,9 @@
   
       $rev=(is_numeric($rev) and $rev>0) ? "\"".$rev."\" ":'';
       $ropt='-p';
  -    if ($opt['stdout']) $ropt='-r';
  +    if (!empty($opt['stdout'])) $ropt='-r';
       $fp=@popen("co -x,v/ -q $ropt$rev ".$filename.$this->NULL,"r");
  -    if ($opt['stdout']) {
  +    if (!empty($opt['stdout'])) {
         if (is_resource($fp)) {
           pclose($fp);
           return '';
  @@ -1316,6 +1317,7 @@
           break;
         }
       }
  +    $out = '';
       while (!feof($fp)) {
         $line=fgets($fp,1024);
         $out.= $line;
  @@ -1340,6 +1342,7 @@
     }
   
     function get_rev($pagename,$mtime='',$last=0) {
  +    $opt = '';
       if ($last==1) {
         $tag='head:';
         $opt='-h';
  @@ -1352,11 +1355,12 @@
         }
       }
   
  +    $rev = '';
       $out= $this->rlog($pagename,'',$opt);
       if ($out) {
         for ($line=strtok($out,"\n"); $line !== false;$line=strtok("\n")) {
           preg_match("/^$tag\s+([\d\.]+)$/",$line,$match);
  -        if ($match[1]) {
  +        if (isset($match[1])) {
             $rev=$match[1];
             break;
           }
  @@ -3870,6 +3874,7 @@
             $p_closeopen.=$this->_div(0,$in_div,$div_enclose);
           $p_closeopen.=$this->_div(1,$in_div,$div_enclose);
           $in_p='';
  +        $edit = ''; $anchor = '';
           if ($this->section_edit && empty($this->preview)) {
             $act='edit';
   
  @@ -3892,7 +3897,7 @@
             $anchor="<a id='$anchor_id'></a>";
           }
           $attr='';
  -        if ($DBInfo->use_folding) {
  +        if (!empty($DBInfo->use_folding)) {
             if ($DBInfo->use_folding == 1) {
               $attr=" onclick=\"document.getElementById('sc-$this->sect_num').style.display=document.getElementById('sc-$this->sect_num').style.display!='none'? 'none':'block';\"";
             } else {
  @@ -4513,7 +4518,7 @@
         if (strtolower($act) == 'blog')
           $this->actions[]='BlogRss';
           
  -    } else if ($args['editable']) {
  +    } else if (!empty($args['editable'])) {
         if ($args['editable']==1)
           $menu[]= $this->link_to("?action=edit",_("EditText")," rel='nofollow' accesskey='x'");
         else
  @@ -4548,7 +4553,7 @@
   
       echo "<!-- wikiBody --></div>\n";
       echo $DBInfo->hr;
  -    if ($args['editable'] and !$DBInfo->security->writable($options))
  +    if (!empty($args['editable']) and !$DBInfo->security->writable($options))
         $args['editable']=-1;
   
       $key=$DBInfo->pageToKeyname($options['page']);
  @@ -4685,10 +4690,11 @@
       if (!empty($options['msg']) or !empty($msgtitle)) {
         $msgtype = isset($options['msgtype']) ? ' '.$options['msgtype']:' warn';
         
  +      $mtitle0=!empty($options['msg']) ? $options['msg'] : '';
         $mtitle=!empty($msgtitle) ? "<h3>".$msgtitle."</h3>\n":"";
         $msg=<<<MSG
   <div class="message" id="wiki-message"><span class='$msgtype'>
  -$mtitle$options[msg]</span>
  +$mtitle$mtitle0</span>
   </div>
   MSG;
         if (isset($DBInfo->hide_log) and $DBInfo->hide_log > 0 and preg_match('/timer/', $msgtype)) {
  @@ -5248,10 +5254,10 @@
   if (!empty($theme)) $options['theme']=$theme;
   
   if ($options['id'] != 'Anonymous') {
  -  $options['css_url']=$user->info['css_url'];
  -  $options['quicklinks']=$user->info['quicklinks'];
  -  $options['tz_offset']=$user->info['tz_offset'];
  -  if (!$theme) $options['theme']=$user->info['theme'];
  +  $options['css_url']=!empty($user->info['css_url']) ? $user->info['css_url'] : '';
  +  $options['quicklinks']=!empty($user->info['quicklinks']) ? $user->info['quicklinks'] : '';
  +  $options['tz_offset']=!empty($user->info['tz_offset']) ? $user->info['tz_offset'] : '';
  +  if (empty($theme)) $options['theme']=!empty($user->info['theme']) ? $user->info['theme'] : '';
   } else {
     $options['css_url']=$user->css;
     $options['tz_offset']=$user->tz_offset;
  @@ -5345,7 +5351,7 @@
       if (isset($_POST['header'])) unset($_POST['header']);
   
       # hack for TWiki plugin
  -    if ($_FILES['filepath']['name']) $action='draw';
  +    if (!empty($_FILES['filepath']['name'])) $action='draw';
       if (isset($GLOBALS['HTTP_RAW_POST_DATA'])) {
         # hack for Oekaki: PageName----action----filename
         list($pagename,$action,$value)=explode('----',$pagename,3);
  @@ -5371,7 +5377,7 @@
       $action=!empty($_GET['action']) ? $_GET['action'] : '';
       $value=!empty($_GET['value']) ? $_GET['value'] : '';
       $goto=!empty($_GET['goto']) ? $_GET['goto'] : '';
  -    $rev=!empty($_GET['rev']) ? $$_GET['rev'] : '';
  +    $rev=!empty($_GET['rev']) ? $_GET['rev'] : '';
       if ($options['id'] == 'Anonymous')
         $refresh = 0;
       else
  @@ -5409,8 +5415,8 @@
   
     $formatter = &new Formatter($page,$options);
   
  -  $formatter->refresh=$refresh;
  -  $formatter->popup=$popup;
  +  $formatter->refresh=!empty($refresh) ? $refresh : '';
  +  $formatter->popup=!empty($popup) ? $popup : '';
     $formatter->macro_repl('InterWiki','',array('init'=>1));
     $formatter->tz_offset=$options['tz_offset'];
   
  
  
  
  1.290     +79 -58    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.289
  retrieving revision 1.290
  diff -u -r1.289 -r1.290
  --- wikilib.php	17 Apr 2010 09:21:39 -0000	1.289
  +++ wikilib.php	17 Apr 2010 12:05:23 -0000	1.290
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.289 2010/04/17 09:21:39 wkpark Exp $
  +// $Id: wikilib.php,v 1.290 2010/04/17 12:05:23 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -69,7 +69,7 @@
     $proto= 'http';
     if (!empty($_SERVER['HTTPS'])) $proto= 'https';
     else $proto= strtolower(strtok($_SERVER['SERVER_PROTOCOL'],'/'));
  -  if ($url[0] != '/') $url='/'.$url; // XXX
  +  if (isset($url[0]) and $url[0] != '/') $url='/'.$url; // XXX
     return $proto.'://'.$_SERVER['HTTP_HOST'].$port.$url;
   }
   
  @@ -443,18 +443,18 @@
       $date=gmdate('Y/m/d H:i:s', time());
       $data="# Data saved $date\n";
   
  -    if ($user->ticket)
  +    if (!empty($user->ticket))
         $user->info['ticket']=$user->ticket;
   
       foreach ($config as $key) {
  -      if ($user->info[$key] != '')
  +      if (!empty($user->info[$key]))
           $data.="$key=".$user->info[$key]."\n";
       }
   
       #print $data;
   
       $wu="wu-".$this->_id_to_key($user->id);
  -    if ($options['wait']) $wu='wait-'.$wu;
  +    if (!empty($options['wait'])) $wu='wait-'.$wu;
       $fp=fopen("$this->user_dir/$wu","w+");
       fwrite($fp,$data);
       fclose($fp);
  @@ -701,7 +701,7 @@
   
     # simple == 1 : do not use EditTextForm, simple == 2 : do not use GUI/Preview
     $has_form = false;
  -  if ($options['simple']!=1 and $DBInfo->hasPage('EditTextForm')) {
  +  if (!empty($options['simple']) and $options['simple']!=1 and $DBInfo->hasPage('EditTextForm')) {
       $p=$DBInfo->getPage('EditTextForm');
       $form=$p->get_raw_body();
       $f=new Formatter($p);
  @@ -800,7 +800,8 @@
       return do_invalid($formatter,$options);
     }
     $formatter->send_header("",$options);
  -  if ($options['section'])
  +  $sec = '';
  +  if (!empty($options['section']))
       $sec=' (Section)';
     $options['msgtype'] = isset($options['msgtype']) ? $options['msgtype'] : 'warn';
     $formatter->send_title(sprintf(_("Edit %s"),$options['page']).$sec,"",$options);
  @@ -808,6 +809,7 @@
     $has_form = false;
   
     $options['has_form'] = &$has_form;
  +  $value = '';
     echo macro_EditText($formatter,$value,$options);
     if ($DBInfo->use_wikiwyg>=2) {
       $js=<<<JS
  @@ -837,7 +839,7 @@
       echo "</div>\n";
     }
   
  -  $formatter->send_footer($args,$options);
  +  $formatter->send_footer('',$options);
   }
   
   function ajax_edit($formatter,$options) {
  @@ -914,18 +916,19 @@
   
     $COLS_MSIE= 80;
     $COLS_OTHER= 85;
  -
  + 
  +  $options['mode'] = !empty($options['mode']) ? $options['mode'] : '';
     $edit_rows=$DBInfo->edit_rows ? $DBInfo->edit_rows: 16;
     $cols= preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']) ? $COLS_MSIE : $COLS_OTHER;
   
     $use_js= preg_match('/Lynx|w3m|links/',$_SERVER['HTTP_USER_AGENT']) ? 0:1;
   
  -  $rows= $options['rows'] > 5 ? $options['rows']: $edit_rows;
  +  $rows= (!empty($options['rows']) and $options['rows'] > 5) ? $options['rows']: $edit_rows;
     $rows= $rows < 60 ? $rows: $edit_rows;
  -  $cols= $options['cols'] > 60 ? $options['cols']: $cols;
  +  $cols= (!empty($options['cols']) and $options['cols'] > 60) ? $options['cols']: $cols;
   
  -  $text= $options['savetext'];
  -  $editlog= $options['editlog'] ? $options['editlog'] : "";
  +  $text= !empty($options['savetext']) ? $options['savetext'] : '';
  +  $editlog= !empty($options['editlog']) ? $options['editlog'] : "";
     if (empty($editlog) and !empty($options['comment']))
         $editlog=_stripslashes($options['comment']);
   
  @@ -933,16 +936,17 @@
     if (in_array('nohints',$args)) $options['nohints']=1;
     if (in_array('nomenu',$args)) $options['nomenu']=1;
   
  -  $preview= $options['preview'];
  +  $preview= !empty($options['preview']) ? $options['preview'] : 0;
   
     if ($options['action']=='edit') $saveaction='savepage';
     else $saveaction=$options['action'];
   
  -  $extraform=$formatter->_extra_form ? $formatter->_extra_form:'';
  +  $extraform=!empty($formatter->_extra_form) ? $formatter->_extra_form:'';
   
     $options['notmpl']=isset($options['notmpl']) ? $options['notmpl']:0;
  +  $form = '';
   
  -  if (!$options['notmpl'] and ($options['template'] or !$formatter->page->exists()) and !$preview) {
  +  if (!$options['notmpl'] and (!empty($options['template']) or !$formatter->page->exists()) and !$preview) {
       $options['linkto']="?action=edit&amp;template=";
       $tmpls= macro_TitleSearch($formatter,$DBInfo->template_regex,$options);
       if ($tmpls) {
  @@ -955,7 +959,8 @@
     $merge_btn=_("Merge");
     $merge_btn2=_("Merge manually");
     $merge_btn3=_("Ignore conflicts");
  -  if ($options['conflict']) {
  +  $extra = '';
  +  if (!empty($options['conflict'])) {
       $extra='<button type="submit" name="button_merge" value="1"><span>'.$merge_btn.'</span></button>';
       if ($options['conflict']==2) {
         $extra.=' <button type="submit" name="manual_merge" value="1"><span>'.$merge_btn2.'</span></button>';
  @@ -963,14 +968,16 @@
           $extra.=' <button type="submit" name="force_merge" value="1"><span>'.$merge_btn3.'</span></button>';
       }
     }
  -  if ($options['section'])
  +
  +  $hidden = '';
  +  if (!empty($options['section']))
       $hidden='<input type="hidden" name="section" value="'.$options['section'].
               '" />';
  -  if ($options['mode'])
  +  if (!empty($options['mode']))
       $hidden='<input type="hidden" name="mode" value="'.$options['mode'].'" />';
   
     # make a edit form
  -  if (!$options['simple'])
  +  if (empty($options['simple']))
       $form.= "<a id='editor'></a>\n";
   
     if (isset($DBInfo->use_preview_anchor))
  @@ -978,35 +985,37 @@
     else
       $preview_anchor = '';
   
  -  if ($options['page'])
  +  if (!empty($options['page']))
       $previewurl=$formatter->link_url(_rawurlencode($options['page']), $preview_anchor);
     else
       $previewurl=$formatter->link_url($formatter->page->urlname, $preview_anchor);
   
     $menu= ''; $sep= '';
  -  if (!$DBInfo->use_resizer and (!$options['noresizer'] or !$use_js)) {
  +  if (empty($DBInfo->use_resizer) and (empty($options['noresizer']) or !$use_js)) {
       $sep= ' | ';
       $menu= $formatter->link_to("?action=edit&amp;rows=".($rows-3),_("ReduceEditor"));
       $menu.= $sep.$formatter->link_to("?action=edit&amp;rows=".($rows+3),_("EnlargeEditor"));
     }
   
  -  if (!$options['nomenu']) {
  +  if (empty($options['nomenu'])) {
       $menu.= $sep.$formatter->link_tag('InterWiki',"",_("InterWiki"));
       $sep= ' | ';
       $menu.= $sep.$formatter->link_tag('HelpOnEditing',"",_("HelpOnEditing"));
     }
   
     $form.=$menu;
  -  if ($options['action_mode']=='ajax') {
  +  $ajax = '';
  +  if (!empty($options['action_mode']) and $options['action_mode']=='ajax') {
       $ajax=" onsubmit='savePage(this);return false'";
     }
  -  if ($DBInfo->use_autosave)
  +  $form_attr = '';
  +  if (!empty($DBInfo->use_autosave))
       $form_attr='onClick="moni_autosave(this)" onsubmit="moni_autosave_reset()" ';
     $formh= sprintf('<form id="editform" '.$form_attr.'method="post" action="%s"'.$ajax.'>',
       $previewurl);
     if ($text) {
       $raw_body = preg_replace("/\r\n|\r/", "\n", $text);
  -  } else if ($options['template']) {
  +  } else if (!empty($options['template'])) {
       $p= new WikiPage($options['template']);
       $raw_body = preg_replace("/\r\n|\r/", "\n", $p->get_raw_body());
     } else if (isset($formatter->_raw_body)) {
  @@ -1030,9 +1039,9 @@
   
   
     # for conflict check
  -  if ($options['datestamp'])
  +  if (!empty($options['datestamp']))
        $datestamp= $options['datestamp'];
  -  else if ($formatter->_mtime)
  +  else if (!empty($formatter->_mtime))
        # low level control XXX
        $datestamp= $formatter->_mtime;
     else
  @@ -1041,7 +1050,7 @@
     $raw_body = str_replace(array("&","<"),array("&amp;","&lt;"),$raw_body);
   
     # get categories
  -  if ($DBInfo->use_category and !$options['nocategories']) {
  +  if (!empty($DBInfo->use_category) and empty($options['nocategories'])) {
       $categories=array();
       $categories= $DBInfo->getLikePages($DBInfo->category_regex);
       if ($categories) {
  @@ -1061,15 +1070,16 @@
       }
     }
   
  -  if (!$options['minor'] and $DBInfo->use_minoredit) {
  +  $extra_check = '';
  +  if (empty($options['minor']) and !empty($DBInfo->use_minoredit)) {
       $user=&$DBInfo->user; # get from COOKIE VARS
  -    if ($DBInfo->owners and in_array($user->id,$DBInfo->owners)) {
  +    if (!empty($DBInfo->owners) and in_array($user->id,$DBInfo->owners)) {
         $extra_check=' '._("Minor edit")."<input type='checkbox' tabindex='3' name='minor' />";
       }
     }
   
     $captcha='';
  -  if ($use_js and $DBInfo->use_ticket and $options['id'] == 'Anonymous') {
  +  if ($use_js and !empty($DBInfo->use_ticket) and $options['id'] == 'Anonymous') {
        $msg = _("Refresh");
        $seed=md5(base64_encode(time()));
        $ticketimg=$formatter->link_url($formatter->page->urlname,'?action=ticket&amp;__seed='.$seed.'&amp;t=');
  @@ -1082,7 +1092,9 @@
     }
   
     $summary_msg=_("Summary");
  -  if (!$options['simple']) {
  +  $wysiwyg_btn = '';
  +  $skip_preview = '';
  +  if (empty($options['simple'])) {
       $preview_btn='<button type="submit" tabindex="6" name="button_preview" onclick="this.value=1" value="1"><span>'.
         _("Preview").'</span></button>';
       if ($preview)
  @@ -1100,7 +1112,7 @@
   EOS;
     }
     $save_msg=_("Save");
  -  if ($use_js and $DBInfo->use_resizer) {
  +  if ($use_js and !empty($DBInfo->use_resizer)) {
       if ($DBInfo->use_resizer==1) {
         $resizer=<<<EOS
   <script type="text/javascript" language='javascript'>
  @@ -1160,9 +1172,9 @@
   </form>
   </div>
   EOS;
  -  if (!$options['nohints'])
  +  if (empty($options['nohints']))
       $form.= macro_EditHints($formatter);
  -  if (!$options['simple'])
  +  if (empty($options['simple']))
       $form.= "<a id='preview'></a>";
     return $form.$resizer;
   }
  @@ -1338,10 +1350,11 @@
   
   function do_raw($formatter,$options) {
     global $Config;
  -  if ($Config['force_charset'])
  +  $force_charset = '';
  +  if (!empty($Config['force_charset']))
       $force_charset = '; charset='.$Config['charset'];
     $supported=array('text/plain','text/css','text/javascript');
  -  if ($options['mime'] and in_array($options['mime'],$supported)) {
  +  if (!empty($options['mime']) and in_array($options['mime'],$supported)) {
       $formatter->send_header("Content-Type: $options[mime]",$options);
     } else
       $formatter->send_header("Content-Type: text/plain".$force_charset,$options);
  @@ -1362,7 +1375,7 @@
     $formatter->send_title(sprintf(_("%s (rev. %s)"),$options['page'],
                                    $options['rev']),"",$options);
     $formatter->send_page("",$options);
  -  $formatter->send_footer($args,$options);
  +  $formatter->send_footer('',$options);
   }
   
   function do_goto($formatter,$options) {
  @@ -1659,7 +1672,8 @@
       return do_invalid($formatter,$options);
     }
   
  -  if ((isset($_FILES['upfile']) and is_array($_FILES)) or is_array($options['MYFILES'])) {
  +  if ((isset($_FILES['upfile']) and is_array($_FILES)) or
  +      (isset($options['MYFILES']) and is_array($options['MYFILES']))) {
       $retstr = false;
       $options['retval'] = &$retstr;
       include_once('plugin/UploadFile.php');
  @@ -1669,9 +1683,9 @@
     $savetext=$options['savetext'];
     $datestamp=$options['datestamp'];
     $button_preview=is_numeric($options['button_preview']);
  -  $button_merge=$options['button_merge']? 1:0;
  -  $button_merge=$options['manual_merge']? 2:$button_merge;
  -  $button_merge=$options['force_merge']? 3:$button_merge;
  +  $button_merge=!empty($options['button_merge']) ? 1:0;
  +  $button_merge=!empty($options['manual_merge']) ? 2:$button_merge;
  +  $button_merge=!empty($options['force_merge']) ? 3:$button_merge;
   
     $savetext=preg_replace("/\r\n|\r/", "\n", $savetext);
     $savetext=_stripslashes($savetext);
  @@ -1745,7 +1759,7 @@
         #print '<div id="editor_area">'.macro_EditText($formatter,$value,$options).'</div>'; # XXX
         $has_form = false;
         $options['has_form'] = &$has_form;
  -      print macro_EditText($formatter,$value,$options); # XXX
  +      print macro_EditText($formatter,'',$options); # XXX
   
         if ($has_form and !empty($DBInfo->use_jsbuttons)) {
           $msg = _("Save");
  @@ -1843,7 +1857,7 @@
       $formatter->preview=1;
       $has_form = false;
       $options['has_form'] = &$has_form;
  -    print '<div id="editor_area_wrap">'.macro_EditText($formatter,$value,$options);
  +    print '<div id="editor_area_wrap">'.macro_EditText($formatter,'',$options);
       if ($has_form and !empty($DBInfo->use_jsbuttons)) {
         $msg = _("Save");
         $onclick=' onclick="submit_all_forms()"';
  @@ -2098,15 +2112,16 @@
   
   function macro_RandomQuote($formatter,$value="",$options=array()) {
     global $DBInfo;
  -  define(QUOTE_PAGE,'FortuneCookies');
  +  define('QUOTE_PAGE','FortuneCookies');
     #if ($formatter->preview==1) return '';
   
     $re='/^\s*\* (.*)$/';
     $args=explode(',',$value);
   
  +  $log = '';
     foreach ($args as $arg) {
       $arg=trim($arg);
  -    if (in_array($arg[0],array('@','/','%')) and
  +    if (!empty($arg[0]) and in_array($arg[0],array('@','/','%')) and
         preg_match('/^'.$arg[0].'.*'.$arg[0].'[sxU]*$/',$arg)) {
         if (preg_match($arg,'',$m)===false) {
           $log=_("Invalid regular expression !");
  @@ -2122,7 +2137,7 @@
     else
       $fortune=QUOTE_PAGE;
   
  -  if ($options['body']) {
  +  if (!empty($options['body'])) {
       $raw=$options['body'];
     } else {
       $page=$DBInfo->getPage($fortune);
  @@ -2247,7 +2262,7 @@
         $idform="<input type='text' size='20' name='login_id' value='' />";
     } else {
       $idform=$user->id;
  -    if ($user->info['idtype']=='openid') {
  +    if (!empty($user->info['idtype']) and $user->info['idtype']=='openid') {
         $idform='<img src="http://www.myopenid.com/static/openid-icon-small.gif" alt="OpenID:" style="vertical-align:middle" />'.
         '<a href="'.$idform.'">'.$idform.'</a>';
       }
  @@ -2270,6 +2285,7 @@
     $id_btn=_("ID");
     $sep="<tr><td colspan='2'><hr /></td></tr>\n";
     $sep0='';
  +  $login = '';
     if ($user->id == 'Anonymous' and !isset($options['login_id']) and $value!="simple") {
       if (isset($openid_form) and $value != 'openid') $sep0=$sep;
       if ($value != 'openid')
  @@ -2325,12 +2341,12 @@
       }
     } else {
       $button=_("Save");
  -    $css=$user->info['css_url'];
  +    $css=!empty($user->info['css_url']) ? $user->info['css_url'] : '';
       $email=$user->info['email'];
  -    $nick=$user->info['nick'];
  -    $tz_offset=$user->info['tz_offset'];
  +    $nick=!empty($user->info['nick']) ? $user->info['nick'] : '';
  +    $tz_offset=!empty($user->info['tz_offset']) ? $user->info['tz_offset'] : 0;
       if ($user->info['password'])
  -      $again="<b>"._("New password")."</b>&nbsp;<input type='password' size='15' maxlength='$pw_len' name='passwordagain' value='' /></td></tr>";
  +      $again="<b>"._("New password")."</b>&nbsp;<input type='password' size='15' maxlength='$pw_length' name='passwordagain' value='' /></td></tr>";
       else
         $again='';
   
  @@ -2342,6 +2358,7 @@
       }
   
       $tz_off=date('Z');
  +    $opts = '';
       for ($i=-47;$i<=47;$i++) {
         $val=1800*$i;
         $tz=gmdate("Y/m/d H:i",time()+$val);
  @@ -2379,6 +2396,7 @@
   </script>
   EOF;
   
  +  $passwd = !empty($passwd) ? $passwd : '';
     if (empty($DBInfo->use_safelogin) or $button==_("Save")) {
       if ($user->id == 'Anonymous' or $user->info['password'])
       $passwd_inp=<<<PASS
  @@ -2399,7 +2417,8 @@
       }
     }
     $id_btn=_("ID");
  -  if ($openid_form or $login) $sep1=$sep;
  +  $sep1 = '';
  +  if (!empty($openid_form) or !empty($login)) $sep1=$sep;
     return <<<EOF
   $login
   $jscript
  @@ -2435,7 +2454,7 @@
       $cf=new Cache_text('settings');
   
       $force_init=0;
  -    if ($DBInfo->shared_intermap and $cf->mtime('interwiki') < filemtime($DBInfo->shared_intermap) ) {
  +    if (!empty($DBInfo->shared_intermap) and $cf->mtime('interwiki') < filemtime($DBInfo->shared_intermap) ) {
         $force_init=1;
       }
       if (!$formatter->refresh and $cf->exists('interwiki') and !$force_init) {
  @@ -2449,13 +2468,14 @@
       $interwiki=array();
       # intitialize interwiki map
       $map=file($DBInfo->intermap);
  -    if ($DBInfo->sistermap and file_exists($DBInfo->sistermap))
  +    if (!empty($DBInfo->sistermap) and file_exists($DBInfo->sistermap))
         $map=array_merge($map,file($DBInfo->sistermap));
   
       # read shared intermap
       if (file_exists($DBInfo->shared_intermap))
         $map=array_merge($map,file($DBInfo->shared_intermap));
   
  +    $interwikirule = '';
       for ($i=0,$sz=sizeof($map);$i<$sz;$i++) {
         $line=rtrim($map[$i]);
         if (!$line || $line[0]=="#" || $line[0]==" ") continue;
  @@ -2481,15 +2501,16 @@
       $interwiki['Self']=get_scriptname().$DBInfo->query_prefix;
   
       # set default TwinPages interwiki
  -    if (!$interwiki['TwinPages'])
  +    if (empty($interwiki['TwinPages']))
         $interwiki['TwinPages']=(($DBInfo->query_prefix == '?') ? '&amp;':'?').
           'action=twinpages&amp;value=';
   
       # read shared intericons
       $map=array();
  -    if (file_exists($DBInfo->shared_intericon))
  +    if (!empty($DBInfo->shared_intericon) and file_exists($DBInfo->shared_intericon))
         $map=array_merge($map,file($DBInfo->shared_intericon));
   
  +    $intericon = array();
       for ($i=0,$isz=sizeof($map);$i<$isz;$i++) {
         $line=rtrim($map[$i]);
         if (!$line || $line[0]=="#" || $line[0]==" ") continue;
  
  
  


1271506046;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv19336\n\nModified Files:\n	Attachment.php Diff.php Info.php Navigation.php SlideShow.php \n	UploadedFiles.php UrlMapping.php css.php download.php \n	markup.php rss_rc.php \nLog Message:\n[#315290] fix notice warnings\n\n
wkpark      2010/04/17 21:07:26

  Modified:    plugin   Attachment.php Diff.php Info.php Navigation.php
                        SlideShow.php UploadedFiles.php UrlMapping.php
                        css.php download.php markup.php rss_rc.php
  Log:
  [#315290] fix notice warnings
  
  Revision  Changes    Path
  1.43      +17 -12    moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.42
  retrieving revision 1.43
  diff -u -r1.42 -r1.43
  --- Attachment.php	20 Oct 2009 09:48:17 -0000	1.42
  +++ Attachment.php	17 Apr 2010 12:07:26 -0000	1.43
  @@ -7,13 +7,13 @@
   // Name: Attachment
   // Description: Attachment Plugin
   // URL: MoniWiki:AttachmentPlugin
  -// Version: $Revision: 1.42 $
  +// Version: $Revision: 1.43 $
   // Depend: 1.1.3
   // License: GPL
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.42 2009/10/20 09:48:17 wkpark Exp $
  +// $Id: Attachment.php,v 1.43 2010/04/17 12:07:26 wkpark Exp $
   
   function macro_Attachment($formatter,$value,$options='') {
     global $DBInfo;
  @@ -21,8 +21,8 @@
     if (!is_array($options) and $options==1) $options=array('link'=>1); // compatible
   
     $attr='';
  -  if ($DBInfo->force_download) $force_download=1;
  -  if ($DBInfo->download_action) $mydownload=$DBInfo->download_action;
  +  if (!empty($DBInfo->force_download)) $force_download=1;
  +  if (!empty($DBInfo->download_action)) $mydownload=$DBInfo->download_action;
     else $mydownload='download';
     $extra_action='';
   
  @@ -30,6 +30,8 @@
     $caption='';
     $cap_bra='';
     $cap_ket='';
  +  $bra = '';
  +  $ket = '';
   
     if ($options and !$DBInfo->security->is_allowed($mydownload,$options))
       return $text;
  @@ -112,6 +114,7 @@
       return "<img src='".$value."' $attr />";
     }
   
  +  $imgalign = '';
     if (!$attr and ($dummy=strpos($value,','))) {
       # for Attachment macro
       $args=explode(',',substr($value,$dummy+1));
  @@ -162,7 +165,7 @@
     if (!$file) return $bra.'attachment:/'.$ket;
   
     $upload_file=$dir.'/'.$file;
  -  if ($options['link'] == 1) return $upload_file;
  +  if (!empty($options['link']) and $options['link'] == 1) return $upload_file;
   
     if (!$text) $text=$file;
   
  @@ -211,13 +214,15 @@
   
       $imgcls='imgAttach';
   
  -    if ($imgalign == 'imgCenter' or ($caption && !$imgalign)) {
  +    if ($imgalign == 'imgCenter' or ($caption && empty($imgalign))) {
         if (!$attrs['width']) {
           $size=getimagesize($_l_upload_file); // XXX
           $attrs['width']=$size[0];
         }
       }
  -    if ($attrs['width']) $img_width=' style="width:'.$attrs['width'].'px"';
  +
  +    $img_width='';
  +    if (!empty($attrs['width'])) $img_width=' style="width:'.$attrs['width'].'px"';
   
       if ($caption) {
         $cls=$imgalign ? 'imgContainer '.$imgalign:'imgContainer'; 
  @@ -243,9 +248,9 @@
       if (!in_array('UploadedFiles',$formatter->actions))
         $formatter->actions[]='UploadedFiles';
   
  -    if (!$img_link && preg_match("/\.(png|gif|jpeg|jpg|bmp)$/i",$upload_file)) {
  +    if (empty($img_link) && preg_match("/\.(png|gif|jpeg|jpg|bmp)$/i",$upload_file)) {
         // thumbnail
  -      if ($DBInfo->use_convert_thumbs and $use_thumb) {
  +      if (!empty($DBInfo->use_convert_thumbs) and $use_thumb) {
           $thumb_width=$thumb['thumbwidth'] ? $thumb['thumbwidth']:150;
           if (!file_exists($dir."/thumbnails/".$_l_file)) {
             if (!file_exists($dir."/thumbnails")) @mkdir($dir."/thumbnails",0777);
  @@ -279,10 +284,10 @@
           }
         }
   
  -      $alt=$alt ? $alt:$file;
  +      $alt=!empty($alt) ? $alt:$file;
         if ($key != $pagename || $force_download) {
           $val=_urlencode($value);
  -        if ($use_thumb) {
  +        if (!empty($use_thumb)) {
             $thumbdir='thumbnails/';
             if (($p=strrpos($val,'/')) !== false)
               $val=substr($val,0,$p).'/thumbnails'.substr($val,$p);
  @@ -311,7 +316,7 @@
       } else {
         $mydownload= $extra_action ? $extra_action:$mydownload;
         $link=$formatter->link_url(_urlencode($pagename),"?action=$mydownload&amp;value=".urlencode($value),$text);
  -      if ($img_link)
  +      if (!empty($img_link))
           return $bra."<span class=\"attach\"><a href='$link'>$img_link</a></span>".$ket;
   
         return $bra."<span class=\"attach\">".$formatter->icon['attach'].'<a href="'.$link.'">'.$text.'</a></span>'.$info.$ket;
  
  
  
  1.22      +19 -18    moniwiki/plugin/Diff.php
  
  Index: Diff.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Diff.php,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- Diff.php	18 Apr 2009 08:40:25 -0000	1.21
  +++ Diff.php	17 Apr 2010 12:07:26 -0000	1.22
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a diff plugin for the MoniWiki
   //
  -// $Id: Diff.php,v 1.21 2009/04/18 08:40:25 wkpark Exp $
  +// $Id: Diff.php,v 1.22 2010/04/17 12:07:26 wkpark Exp $
   
   
   function code_diff($diff, $options = array()) {
  @@ -238,6 +238,7 @@
     $omarker=0;
     $orig=array();$new=array();
     foreach ($lines as $line) {
  +    if (empty($line[0])) continue;
       $marker=$line[0];
       if (in_array($marker,array('-','+','@'))) $line=substr($line,1);
       if ($marker=="@") $line='<div class="diff-sep">@'."$line</div>";
  @@ -251,7 +252,7 @@
         $omarker=0;
         $buf="";
         $result = new WordLevelDiff($orig, $new, $DBInfo->charset);
  -      if ($options['oldstyle']) {
  +      if (empty($options['oldstyle'])) {
           foreach ($result->orig() as $ll)
             $buf.= "<div class=\"diff-removed\">$ll</div>\n";
           foreach ($result->_final() as $ll)
  @@ -377,15 +378,15 @@
     if ($processor_type != 'wiki' and !$options['type']) # is it not wiki format ?
       $options['type']=$DBInfo->diff_type; # use default diff format
   
  -  if (!$options['type'] and $DBInfo->use_smartdiff)
  +  if (empty($options['type']) and !empty($DBInfo->use_smartdiff))
       $options['type']='smart';
   
  -  if ($options['type'] and function_exists($options['type'].'_diff'))
  +  if (!empty($options['type']) and function_exists($options['type'].'_diff'))
       $type=$options['type'].'_diff';
     else
       $type=$DBInfo->diff_type.'_diff';
   
  -  if ($options['text']) {
  +  if (!empty($options['text'])) {
       $out= $options['text'];
       if (!$options['raw'])
         $ret=call_user_func($type,$out);
  @@ -395,8 +396,8 @@
       return $ret;
     }
   
  -  $rev1=$options['rev']; // old
  -  $rev2=$options['rev2']; // new
  +  $rev1=!empty($options['rev']) ? $options['rev'] : ''; // old
  +  $rev2=!empty($options['rev2']) ? $options['rev2'] : ''; // new
     if (!$rev1 and !$rev2) {
       $rev1=$formatter->page->get_rev();
     } else if (0 === strcmp($rev1 , (int)$rev1)) {
  @@ -434,7 +435,7 @@
       else if ($rev1 or $rev2) {
         $msg=sprintf(_("Difference between r%s and the current"),$rev1.$rev2);
       }
  -    if (!$options['raw']) {
  +    if (empty($options['raw'])) {
         $ret= call_user_func($type,$out);
         if (is_array($ret)) { // for smart_diff
           $dels=$ret[1]; $ret=$ret[0];
  @@ -505,18 +506,18 @@
         $ret="<pre>$out</pre>\n";
       }
     }
  -  if ($options['nomsg']) return $ret;
  +  if (!empty($options['nomsg'])) return $ret;
     return "<h2>$msg</h2>\n$ret";
   }
   
   function do_diff($formatter,$options="") {
     global $DBInfo;
   
  -  $range=$options['range'];
  -  $date=$options['date'];
  -  $rev=$options['rev'];
  -  $rev2=$options['rev2'];
  -  if ($options['rcspurge']) {
  +  $range=!empty($options['range']) ? $options['range'] : '';
  +  $date=!empty($options['date']) ? $options['date'] : '';
  +  $rev=!empty($options['rev']) ? $options['rev'] : '';
  +  $rev2=!empty($options['rev2']) ? $options['rev2'] : '';
  +  if (!empty($options['rcspurge'])) {
       if (!$range) $range=array();
       $rr='';
       $dum=array();
  @@ -534,14 +535,14 @@
       return;
     }
   
  -  if ($options['type'] and
  +  if (!empty($options['type']) and
       !in_array($options['type'],array('smart','fancy','simple')))
       $options['type']=$DBInfo->diff_type;
   
     $formatter->send_header("",$options);
   
     $title='';
  -  if ($DBInfo->use_smartdiff) {
  +  if (!empty($DBInfo->use_smartdiff)) {
       $rev=substr($rev,0,5);
       $rev2=substr($rev2,0,5);
       if ($rev and $rev2)
  @@ -559,11 +560,11 @@
     }
     else
       print macro_diff($formatter,'',$options);
  -  if (!$DBInfo->diffonly and !$options['smart']) {
  +  if (empty($DBInfo->diffonly) and empty($options['smart'])) {
       print "<br /><hr />\n";
       $formatter->send_page();
     }
  -  $formatter->send_footer($args,$options);
  +  $formatter->send_footer('',$options);
     return;
   }
   
  
  
  
  1.29      +20 -15    moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Info.php,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- Info.php	6 Sep 2009 15:19:26 -0000	1.28
  +++ Info.php	17 Apr 2010 12:07:26 -0000	1.29
  @@ -3,15 +3,15 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Info plugin for the MoniWiki
   //
  -// $Id: Info.php,v 1.28 2009/09/06 15:19:26 wkpark Exp $
  +// $Id: Info.php,v 1.29 2010/04/17 12:07:26 wkpark Exp $
   
   function _parse_rlog($formatter,$log,$options=array()) {
     global $DBInfo;
   
     $tz_offset=$formatter->tz_offset;
  -  if (is_array($DBInfo->wikimasters) and in_array($options['id'],$DBInfo->wikimasters)) $admin=1;
  +  if (!empty($DBInfo->wikimasters) and is_array($DBInfo->wikimasters) and in_array($options['id'],$DBInfo->wikimasters)) $admin=1;
   
  -  if ($options['info_actions'])
  +  if (!empty($options['info_actions']))
       $actions=$options['info_actions'];
     else if (isset($DBInfo->info_actions))
       $actions=$DBInfo->info_actions;
  @@ -29,13 +29,13 @@
   
     $time_current=time();
   
  -  $simple=$options['simple'] ? 1:0;
  +  $simple=!empty($options['simple']) ? 1:0;
   
     $url=$formatter->link_url($formatter->page->urlname);
   
     $diff_btn=_("Compare");
     $out = "<div class='wikiInfo'>\n";
  -  if ($options['title'])
  +  if (!empty($options['title']))
       $out.=$options['title'];
     else
       $out.="<h2>"._("Revision History")."</h2>\n";
  @@ -58,7 +58,10 @@
    
     #foreach ($lines as $line) {
     $count=0;
  -  $showcount=($options['count']>5) ? $options['count']: 10;
  +  $showcount=(!empty($options['count']) and $options['count']>5) ? $options['count']: 10;
  +  $line = '';
  +  $ok = 0;
  +  $log.="\n"; // hack
     for(; !empty($line) or !empty($log); list($line,$log) = explode("\n",$log,2)) {
       if (!$state) {
         if (!preg_match("/^---/",$line)) { continue;}
  @@ -75,17 +78,19 @@
            $rr++;
            preg_match("/^revision ([0-9a-f\.]+)\s*/",$line,$match);
            $rev=$match[1];
  -         if (preg_match("/\./",$match[2])) {
  +         if (isset($match[2]) and preg_match("/\./",$match[2])) {
               $state=0;
               break;
            }
            $state=2;
            break;
         case 2:
  +         $change = '';
            $inf=preg_replace("/date:\s([0-9\/:\s]+)(;\s+author:.*;\s+state:.*;)?/","\\1",$line);
  -         list($inf,$change)=explode('lines:',$inf,2);
  +         if (strstr($inf, 'lines:') !== FALSE)
  +           list($inf,$change)=explode('lines:',$inf,2);
   
  -         if ($options['ago']) {
  +         if (!empty($options['ago'])) {
              if (preg_match('/^[0-9]+$/',$inf)) {
                $rrev='#'.$rr;
                $ed_time=$inf;
  @@ -159,7 +164,7 @@
            } else if ($user and $DBInfo->interwiki['Whois'])
              $ip="<a href='".$DBInfo->interwiki['Whois']."$ip'>$ip</a>";
   
  -         $comment=stripslashes($dummy[2]);
  +         $comment=!empty($dummy[2]) ? stripslashes($dummy[2]) : '';
            $state=4;
            break;
         case 4:
  @@ -167,7 +172,7 @@
            $rowspan=1;
            if (!$simple and $comment) $rowspan=2;
   
  -         $rrev= $rrev ? $rrev:$formatter->link_to("?action=recall&rev=$rev",$rev);
  +         $rrev= !empty($rrev) ? $rrev:$formatter->link_to("?action=recall&rev=$rev",$rev);
            $out.="<tr>\n";
            $out.="<th class='rev' valign='top' rowspan=$rowspan>$rrev</th><td nowrap='nowrap' class='date'>$inf</td><td class='change'>$change</td><td class='author'>$ip&nbsp;</td>";
            $rrev='';
  @@ -207,11 +212,11 @@
            $state=1;
            $flag++;
            $count++;
  -         if ($options['all']!=1 and $count >=$showcount) $ok=1;
  +         if (!empty($options['all']) and $options['all'] != 1 and $count >=$showcount) $ok=1;
            break;
        }
     }
  -  if (!$simple and $admin):
  +  if (!$simple and !empty($admin)):
     $out.="<tr><td colspan='".(!empty($admin) ? 7:6)."' align='right'><input type='checkbox' name='show' checked='checked' />"._("show only").' ';
     if ($DBInfo->security->is_protected("rcspurge",$options)) {
       $out.="<input type='password' name='passwd'>";
  @@ -226,7 +231,7 @@
   function macro_info($formatter,$value,$options=array()) {
     global $DBInfo;
   
  -  $value=$value ? $value:$DBInfo->info_options;
  +  $value=(empty($value) and !empty($DBInfo->info_options)) ? $DBInfo->info_options : $value;
     $args=explode(',',$value);
     if (is_array($args)) {
       foreach ($args as $arg) {
  @@ -262,7 +267,7 @@
     $formatter->send_title('','',$options);
   
     print macro_info($formatter,'',$options);
  -  $formatter->send_footer($args,$options);
  +  $formatter->send_footer('',$options);
   }
   
   // vim:et:sts=2:
  
  
  
  1.15      +3 -3      moniwiki/plugin/Navigation.php
  
  Index: Navigation.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Navigation.php,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- Navigation.php	3 Jan 2007 04:24:53 -0000	1.14
  +++ Navigation.php	17 Apr 2010 12:07:26 -0000	1.15
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Navigation(IndexPage)]]
   //
  -// $Id: Navigation.php,v 1.14 2007/01/03 04:24:53 wkpark Exp $
  +// $Id: Navigation.php,v 1.15 2010/04/17 12:07:26 wkpark Exp $
   
   function macro_Navigation($formatter,$value) {
     global $DBInfo;
  @@ -84,8 +84,8 @@
       }
       $pnut='&laquo; ';
       if ($prev >= 0) {
  -      $prev_text=$texts[$prev];
  -      $prev=$indices[$prev];
  +      $prev_text=!empty($texts[$prev]) ? $texts[$prev] : '';
  +      $prev=!empty($indices[$prev]) ? $indices[$prev] : '';
         if (($p=strpos($prev,'~'))!==false)
           $prev_text=substr($prev,$p+1);
         if ($prev) {
  
  
  
  1.9       +16 -17    moniwiki/plugin/SlideShow.php
  
  Index: SlideShow.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SlideShow.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- SlideShow.php	1 Jan 2007 01:23:40 -0000	1.8
  +++ SlideShow.php	17 Apr 2010 12:07:26 -0000	1.9
  @@ -5,13 +5,13 @@
   //
   // Usage: [[SlideShow(pagename)]]
   //
  -// $Id: SlideShow.php,v 1.8 2007/01/01 01:23:40 wkpark Exp $
  +// $Id: SlideShow.php,v 1.9 2010/04/17 12:07:26 wkpark Exp $
   
   function macro_SlideShow($formatter,$value='',$options=array()) {
       global $DBInfo;
   
       $depth=2; // default depth
  -    if ($options['d']) $depth=intval($options['d']);
  +    if (!empty($options['d'])) $depth=intval($options['d']);
       $args=explode(',',$value);
       $sz=sizeof($args);
       for($i=0,$sz=sizeof($args);$i<$sz;$i++) {
  @@ -34,13 +34,13 @@
           $urlname=$formatter->page->urlname;
       }
   
  -    if ($options['p']) {
  +    if (!empty($options['p'])) {
           list($sect,$dum)=explode('/',$options['p']);
           $sect=abs(intval($sect));
           $sect= $sect ? $sect:1;
       } else $sect=1;
   
  -    $act=$options['action'] ? $options['action']:'SlideShow';
  +    $act=!empty($options['action']) ? $options['action']:'SlideShow';
   
       $iconset='bluecurve';
       $icon_dir=$formatter->imgs_dir.'/plugin/SlideShow/'.$iconset.'/';
  @@ -66,46 +66,45 @@
       if ($sz > ($sect)) {
           list($n_title,$dumm)=explode("\n",$sections[$sect+1]);
           preg_match("/^\s*={".$depth.'}\s*(.*)\s*={'.$depth.'}\s?$/',$n_title,$match);
  -        if ($match[1])
  +        if (isset($match[1]))
               $n_title=$match[1];
           else
               $n_title='';
   
           list($e_title,$dumm)=explode("\n",$sections[$sz]);
           preg_match("/^[ ]*={".$depth."}\s+(.*)\s+={".$depth."}\s?/",$e_title,$match);
  -        if ($match[1])
  +        if (isset($match[1]))
               $e_title=$match[1];
           else
               $e_title='';
       }
  -    if (!$options['action'] or $sect > 1){
  +    $s_title = '';
  +    if (!empty($sections[1]) and (empty($options['action']) or $sect > 1)) {
           list($s_title,$dumm)=explode("\n",$sections[1]);
           preg_match("/^\s*={".$depth."}\s*(.*)\s*={".$depth."}\s?$/",$s_title,$match);
  -        if ($match[1])
  +        if (isset($match[1]))
               $s_title=$match[1];
  -        else
  -            $s_title='';
       }
       if ($sect >= 1) {
           list($p_title,$dumm)=explode("\n",$sections[$sect-1]);
           preg_match('/^\s*={'.$depth.'}\s*(.*)\s*={'.$depth.'}\s?$/',$p_title,$match);
  -        if ($match[1])
  +        if (isset($match[1]))
               $p_title=$match[1];
           else
               $p_title='';
       }
       // make link icons
  -    if ($s_title!='' or !$options['action']) {
  +    if (!empty($s_title) or empty($options['action'])) {
           $slink= $formatter->link_url($urlname,'?action='.$act.
               $dep.'&amp;p=1');
  -        $icon=$options['action'] ? 'start':'next';
  +        $icon=!empty($options['action']) ? 'start':'next';
           $start= '<a href="'.$slink.'" title="'._("Start:").' '.$s_title.'">'.
               '<img src="'.$icon_dir.$icon.'.png'.'" style="border:0" alt="&lt;|" /></a>';
       } else {
           $start= 
               '<img src="'.$icon_dir.'start_off.png'.'" style="border:0" alt="&lt;|" /></a>';
       }
  -    if ($e_title!='' and $options['action']) {
  +    if (!empty($e_title) and !empty($options['action'])) {
           $elink= $formatter->link_url($urlname,'?action='.$act.
               $dep.'&amp;p='.$sz);
           $end= '<a href="'.$elink.'" title="'._("End:").' '.$e_title.'">'.
  @@ -114,7 +113,7 @@
           $end= 
               '<img src="'.$icon_dir.'end_off.png'.'" style="border:0" alt="|>" /></a>';
       }
  -    if ($n_title!='' and $options['action']) {
  +    if (!empty($n_title) and !empty($options['action'])) {
           $np=$sect+1;
           $nlink= $formatter->link_url($urlname,'?action='.$act.
               $dep.'&amp;p='.($sect+1));
  @@ -124,7 +123,7 @@
           $next= 
               '<img src="'.$icon_dir.'next_off.png'.'" style="border:0" alt=">" /></a>';
       }
  -    if ($p_title!='') {
  +    if (!empty($p_title)) {
           $pp=$sect-1;
           $plink= $formatter->link_url($urlname,'?action='.$act.
               $dep.'&amp;p='.($sect-1));
  @@ -137,7 +136,7 @@
       $rlink= $formatter->link_url($urlname,'?action=show');
       $return= '<a href="'.$rlink.'" title="'._("Return").' '.$pgname.'">'.
           '<img src="'.$icon_dir.'up.png'.'" style="border:0" alt="^" /></a>';
  -    if ($options['action']) {
  +    if (!empty($options['action'])) {
           $form0='<form method="post" onsubmit="return false" action="'.$rlink.'">';
           $form0.='<input type="hidden" name="d" value="'.$depth.'" />';
           $form0.='<input type="hidden" name="action" value="slideshow" />';
  
  
  
  1.35      +18 -17    moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- UploadedFiles.php	16 Jul 2009 18:58:44 -0000	1.34
  +++ UploadedFiles.php	17 Apr 2010 12:07:26 -0000	1.35
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadedFiles plugin for the MoniWiki
   //
  -// $Id: UploadedFiles.php,v 1.34 2009/07/16 18:58:44 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.35 2010/04/17 12:07:26 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     if (!empty($options['q'])) {
  @@ -51,21 +51,21 @@
      $value='';
   
      $default_column=8;
  -   $col=$options['col'] > 0 ? (int)$options['col']:$default_column;
  +   $col=(!empty($options['col']) and $options['col'] > 0) ? (int)$options['col']:$default_column;
   
  -   if ($formatter->preview) {
  +   if (!empty($formatter->preview)) {
        $js_tag=1;$use_preview=1;
        $uploader='UploadForm';
        $use_admin=0;
        $use_fileinfo=0;
        $col = 10000;
  -   } else if ($options['preview']) {
  +   } else if (!empty($options['preview'])) {
        $use_preview=1;
        $use_admin=0;
        $use_fileinfo=0;
      }
   
  -   if ($options['tag']) { # javascript tag mode
  +   if (!empty($options['tag'])) { # javascript tag mode
        $js_tag=1;$use_preview=1;
        $use_admin=0;
        $use_fileinfo=0;
  @@ -74,7 +74,8 @@
   
      if ($use_fileinfo) $col=1;
   
  -   if ($DBInfo->use_lightbox and !$js_tag)
  +   $href_attr = '';
  +   if (!empty($DBInfo->use_lightbox) and !$js_tag)
        $href_attr=' rel="lightbox[upload]" ';
   
      $nodir = 0;
  @@ -207,17 +208,17 @@
   EOS;
      }
   
  -   if ($DBInfo->download_action) $mydownload=$DBInfo->download_action;
  +   if (!empty($DBInfo->download_action)) $mydownload=$DBInfo->download_action;
      else $mydownload='download';
      $checkbox='checkbox';
      $needle= "//";
  -   if ($options['download'] || $DBInfo->force_download) {
  +   if (!empty($options['download']) || !empty($DBInfo->force_download)) {
        $force_download=1;
  -     if ($options['download'])
  +     if (!empty($options['download']))
          $mydownload=$options['download'];
      }
  -   if ($options['needle']) $needle='@'.$options['needle'].'@';
  -   if ($options['checkbox']) $checkbox=$options['checkbox'];
  +   if (!empty($options['needle'])) $needle='@'.$options['needle'].'@';
  +   if (!empty($options['checkbox'])) $checkbox=$options['checkbox'];
   
      if (!in_array('UploadFile',$formatter->actions))
        $formatter->actions[]='UploadFile';
  @@ -234,10 +235,10 @@
           $down_prefix=$formatter->link_url($formatter->page->urlname,"?action=$mydownload&amp;value=");
         $dir=$DBInfo->upload_dir."/$key";
      }
  -   if ($force_download or $key != $value)
  +   if (!empty($force_download) or $key != $value)
         $prefix = $down_prefix;
   
  -   if ($formatter->preview and $formatter->page->name == $value) { 
  +   if (!empty($formatter->preview) and $formatter->page->name == $value) { 
        $opener='';
      } else {
        $opener=$value.':';
  @@ -258,10 +259,10 @@
      $upfiles=array();
      $dirs=array();
   
  -   $per=$DBInfo->uploadedfiles_per_page ? $DBInfo->uploadedfiles_per_page:100;
  +   $per=!empty($DBInfo->uploadedfiles_per_page) ? $DBInfo->uploadedfiles_per_page:100;
      // XXX
      $plink='';
  -   if ($options['p'])
  +   if (!empty($options['p']))
         $p=$options['p'] ? (int) $options['p']:1;
      else $p=1;
      $pfrom=($p-1)*$per;
  @@ -331,7 +332,7 @@
           #$attr=' target="_blank"';
           $extra='&amp;popup=1&amp;tag=1';
         }
  -      if ($options['needle'])
  +      if (!empty($options['needle']))
           $extra.='&amp;q='.$options['needle'];
   
         $link=$formatter->link_tag('UploadFile',"?action=uploadedfiles&amp;value=top$extra",
  @@ -345,7 +346,7 @@
         }
         $out.="</tr>\n";
      }
  -   if ($options['needle'])
  +   if (!empty($options['needle']))
         $extra.='&amp;q='.$options['needle'];
      if (isset($options['nodir']))
         $extra.='&amp;nodir='.$options['nodir'];
  
  
  
  1.3       +3 -1      moniwiki/plugin/UrlMapping.php
  
  Index: UrlMapping.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UrlMapping.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- UrlMapping.php	10 Dec 2008 08:07:20 -0000	1.2
  +++ UrlMapping.php	17 Apr 2010 12:07:26 -0000	1.3
  @@ -5,7 +5,7 @@
   //
   // Usage: [[UrlMapping]]
   //
  -// $Id: UrlMapping.php,v 1.2 2008/12/10 08:07:20 wkpark Exp $
  +// $Id: UrlMapping.php,v 1.3 2010/04/17 12:07:26 wkpark Exp $
   
   function macro_UrlMapping($formatter,$value,$options=array()) {
       global $DBInfo;
  @@ -29,6 +29,8 @@
               break;
           }
   
  +        $DBInfo->url_mappings = array();
  +        $DBInfo->url_mapping_rule = '';
           if (file_exists($DBInfo->shared_url_mappings)) {
               $map=file($DBInfo->shared_url_mappings);
   
  
  
  
  1.10      +3 -2      moniwiki/plugin/css.php
  
  Index: css.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/css.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- css.php	10 Dec 2008 15:15:55 -0000	1.9
  +++ css.php	17 Apr 2010 12:07:26 -0000	1.10
  @@ -3,12 +3,13 @@
   // All rights reserved. Distributable under GPL see COPYING
   // css action plugin for the MoniWiki
   //
  -// $Id: css.php,v 1.9 2008/12/10 15:15:55 wkpark Exp $
  +// $Id: css.php,v 1.10 2010/04/17 12:07:26 wkpark Exp $
   
   function do_css($formatter,$options) {
     global $DBInfo;
     global $HTTP_COOKIE_VARS;
   
  +  $title = '';
     if ($options['clear']) {
       if ($options['id']=='Anonymous') {
         header("Set-Cookie: MONI_CSS=dummy; expires=Tuesday, 01-Jan-1999 12:00:00 GMT; Path=".get_scriptname());
  @@ -22,7 +23,7 @@
       }
       if (!empty($options['theme'])) {
         $theme = $options['theme'];
  -      $options['css_url']=($DBInfo->themeurl ? $DBInfo->themeurl:$DBInfo->url_prefix)."/theme/$theme/css/default.css";
  +      $options['css_url']=(!empty($DBInfo->themeurl) ? $DBInfo->themeurl:$DBInfo->url_prefix)."/theme/$theme/css/default.css";
       }
     } else if ($options['save'] && $options['id']=="Anonymous" && isset($options['user_css'])) {
       setcookie("MONI_CSS",$options['user_css'],time()+60*60*24*30,get_scriptname());
  
  
  
  1.24      +3 -3      moniwiki/plugin/download.php
  
  Index: download.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/download.php,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- download.php	17 Apr 2010 05:06:51 -0000	1.23
  +++ download.php	17 Apr 2010 12:07:26 -0000	1.24
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // download action plugin for the MoniWiki
   //
  -// $Id: download.php,v 1.23 2010/04/17 05:06:51 wkpark Exp $
  +// $Id: download.php,v 1.24 2010/04/17 12:07:26 wkpark Exp $
   //
   function do_download($formatter,$options) {
     global $DBInfo;
  @@ -15,8 +15,8 @@
       return; 
     }
     $value=&$options['value'];
  -  $down_mode=$options['mode']{0}=='a' ? 'attachment':
  -    ($DBInfo->download_mode ? $DBInfo->download_mode:'inline');
  +  $down_mode=(!empty($options['mode']) and $options['mode']{0}=='a') ? 'attachment':
  +    (!empty($DBInfo->download_mode) ? $DBInfo->download_mode:'inline');
   
   
     // check acceptable subdirs
  
  
  
  1.10      +3 -3      moniwiki/plugin/markup.php
  
  Index: markup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/markup.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- markup.php	17 Apr 2008 09:47:39 -0000	1.9
  +++ markup.php	17 Apr 2010 12:07:26 -0000	1.10
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a markup plugin for the MoniWiki
   //
  -// $Id: markup.php,v 1.9 2008/04/17 09:47:39 wkpark Exp $
  +// $Id: markup.php,v 1.10 2010/04/17 12:07:26 wkpark Exp $
   
   function do_markup($formatter,$options) {
       $formatter->section_edit=0;
  @@ -15,8 +15,8 @@
       //$options['fixpath']=1;
       $formatter->send_header("",$options);
       $formatter->postfilters=array('fiximgpath');
  -    if (!$options['all']) $formatter->wikimarkup=1;
  -    if ($options['value']) {
  +    if (empty($options['all'])) $formatter->wikimarkup=1;
  +    if (!empty($options['value'])) {
           $val=_stripslashes($options['value']);
           $val= preg_replace('/(\r\n|\n|\r)/',"\n",$val); // Win32 fix
           $formatter->send_page($val,$options);
  
  
  
  1.18      +5 -5      moniwiki/plugin/rss_rc.php
  
  Index: rss_rc.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rss_rc.php,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- rss_rc.php	2 Jan 2009 16:05:56 -0000	1.17
  +++ rss_rc.php	17 Apr 2010 12:07:26 -0000	1.18
  @@ -3,18 +3,18 @@
   // All rights reserved. Distributable under GPL see COPYING
   // rss_rc action plugin for the MoniWiki
   //
  -// $Id: rss_rc.php,v 1.17 2009/01/02 16:05:56 wkpark Exp $
  +// $Id: rss_rc.php,v 1.18 2010/04/17 12:07:26 wkpark Exp $
   
   function do_rss_rc($formatter,$options) {
     global $DBInfo;
   define('RSS_DEFAULT_DAYS',7);
   
  -  $days=$DBInfo->rc_days ? $DBInfo->rc_days:RSS_DEFAULT_DAYS;
  +  $days=!empty($DBInfo->rc_days) ? $DBInfo->rc_days:RSS_DEFAULT_DAYS;
     $options['quick']=1;
  -  if ($options['c']) $options['items']=$options['c'];
  +  if (!empty($options['c'])) $options['items']=$options['c'];
     $lines= $DBInfo->editlog_raw_lines($days,$options);
   
  -  if ($DBInfo->rss_rc_options) {
  +  if (!empty($DBInfo->rss_rc_options)) {
       $opts=$DBInfo->rss_rc_options;
       $opts=explode(',',$opts);
       foreach ($opts as $opt) {
  @@ -150,7 +150,7 @@
   FORM;
   
     $new="";
  -  if ($options['oe'] and (strtolower($options['oe']) != $DBInfo->charset)) {
  +  if (!empty($options['oe']) and (strtolower($options['oe']) != $DBInfo->charset)) {
       $charset=$options['oe'];
       if (function_exists('iconv')) {
         $out=$head.$channel.$items.$form;
  
  
  


1271676406;wkpark;Update of /cvsroot/moniwiki/moniwiki/lib\nIn directory kill.kldp.net:/tmp/cvs-serv24400/lib\n\nModified Files:\n	openid.php \nLog Message:\n[#315290] fixed Notice warnings.\n[#315294] fixed ISBN bug in the regex of the Aladdin.\n\n
1271676406;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv24400/plugin\n\nModified Files:\n	Attachment.php Blog.php BlogChanges.php Calendar.php Cite.php \n	Clip.php Comment.php Diff.php Draw.php EditToolbar.php \n	FastSearch.php FullSearch.php Gallery.php ISBN.php \n	InputForm.php JME.php Keywords.php LikePages.php \n	Navigation.php Play.php RandomBanner.php RecentChanges.php \n	SWFUpload.php UploadedFiles.php Vote.php WordIndex.php \n	chat.php download.php html2pdf.php pagelist.php rss_rc.php \n	scrap.php userform.php \nLog Message:\n[#315290] fixed Notice warnings.\n[#315294] fixed ISBN bug in the regex of the Aladdin.\n\n
1271676407;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin/filter\nIn directory kill.kldp.net:/tmp/cvs-serv24400/plugin/filter\n\nModified Files:\n	antispam.php \nLog Message:\n[#315290] fixed Notice warnings.\n[#315294] fixed ISBN bug in the regex of the Aladdin.\n\n
1271676407;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin/processor\nIn directory kill.kldp.net:/tmp/cvs-serv24400/plugin/processor\n\nModified Files:\n	abc.php asciimathml.php blog.php bts.php diff.php enscript.php \n	freemind.php gnuplot.php itex.php jmol.php latex.php \n	live3d.php mimetex.php monimarkup.php octave.php pic.php \n	pre.php sfd.php tpl_.php vim.php xsltproc.php \nLog Message:\n[#315290] fixed Notice warnings.\n[#315294] fixed ISBN bug in the regex of the Aladdin.\n\n
wkpark      2010/04/19 20:26:47

  Modified:    lib      openid.php
               plugin   Attachment.php Blog.php BlogChanges.php
                        Calendar.php Cite.php Clip.php Comment.php Diff.php
                        Draw.php EditToolbar.php FastSearch.php
                        FullSearch.php Gallery.php ISBN.php InputForm.php
                        JME.php Keywords.php LikePages.php Navigation.php
                        Play.php RandomBanner.php RecentChanges.php
                        SWFUpload.php UploadedFiles.php Vote.php
                        WordIndex.php chat.php download.php html2pdf.php
                        pagelist.php rss_rc.php scrap.php userform.php
               plugin/filter antispam.php
               plugin/processor abc.php asciimathml.php blog.php bts.php
                        diff.php enscript.php freemind.php gnuplot.php
                        itex.php jmol.php latex.php live3d.php mimetex.php
                        monimarkup.php octave.php pic.php pre.php sfd.php
                        tpl_.php vim.php xsltproc.php
  Log:
  [#315290] fixed Notice warnings.
  [#315294] fixed ISBN bug in the regex of the Aladdin.
  
  Revision  Changes    Path
  1.6       +5 -4      moniwiki/lib/openid.php
  
  Index: openid.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/openid.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- openid.php	2 Dec 2007 14:38:20 -0000	1.5
  +++ openid.php	19 Apr 2010 11:26:46 -0000	1.6
  @@ -128,6 +128,7 @@
   		if (!is_array($arr)) {
   			return false;
   		}
  +		$query = '';
   		foreach($arr as $key => $value) {
   			$query .= $key . "=" . $value . "&";
   		}
  @@ -208,9 +209,9 @@
   
   	function getHTTPEquiv($content) {
   		preg_match('/<meta http-equiv=("|\')?([^\\1]+)\\1.*content=("|\')?([^\\3]+)\\3.*>/i',$content,$match);
  -		if (strtolower($match[2])=='refresh') list($dummy,$url)=explode('url=',$match[4],2);
  -		else if (in_array(strtolower($match[1]),array('x-xrds-location', 'x-yadis-location'))) $url=$match[4];
  -		if ($url) return $url;
  +		if (isset($match[2]) and strtolower($match[2])=='refresh') list($dummy,$url)=explode('url=',$match[4],2);
  +		else if (isset($match[1]) and in_array(strtolower($match[1]),array('x-xrds-location', 'x-yadis-location'))) $url=$match[4];
  +		if (!empty($url)) return $url;
   		return null;
   	}
   	
  @@ -227,7 +228,7 @@
   			$this->ErrorStore('OPENID_NOSERVERSFOUND');
   			return false;
   		}
  -		if ($delegates[0] != "") {
  +		if (!empty($delegates[0])) {
   			$this->openid_url_identity = $delegates[0];
   		}
   		$this->SetOpenIDServer($servers[0]);
  
  
  
  1.44      +18 -15    moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.43
  retrieving revision 1.44
  diff -u -r1.43 -r1.44
  --- Attachment.php	17 Apr 2010 12:07:26 -0000	1.43
  +++ Attachment.php	19 Apr 2010 11:26:46 -0000	1.44
  @@ -1,5 +1,5 @@
   <?php
  -// Copyright 2003-2007 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a Attachment macro plugin for the MoniWiki
   //
  @@ -7,15 +7,15 @@
   // Name: Attachment
   // Description: Attachment Plugin
   // URL: MoniWiki:AttachmentPlugin
  -// Version: $Revision: 1.43 $
  +// Version: $Revision: 1.44 $
   // Depend: 1.1.3
   // License: GPL
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.43 2010/04/17 12:07:26 wkpark Exp $
  +// $Id: Attachment.php,v 1.44 2010/04/19 11:26:46 wkpark Exp $
   
  -function macro_Attachment($formatter,$value,$options='') {
  +function macro_Attachment($formatter,$value,$options=array()) {
     global $DBInfo;
   
     if (!is_array($options) and $options==1) $options=array('link'=>1); // compatible
  @@ -36,7 +36,7 @@
     if ($options and !$DBInfo->security->is_allowed($mydownload,$options))
       return $text;
   
  -  if ($formatter->wikimarkup and !$options['nomarkup']) {
  +  if (!empty($formatter->wikimarkup) and empty($options['nomarkup'])) {
       $ll=$rr='';
       if (strpos($value,' ') !==false) { $ll='['; $rr=']'; }
       $bra= "<span class='wikiMarkup'><!-- wiki:\n${ll}attachment:$value$rr\n-->";
  @@ -98,7 +98,7 @@
         } else {
           if (in_array($name,array('width','height'))) {
             $attr.="$name=\"$val\" ";
  -          if ($DBInfo->use_lightbox) $lightbox_attr=' rel="lightbox" ';
  +          if (!empty($DBInfo->use_lightbox)) $lightbox_attr=' rel="lightbox" ';
           } else if (in_array($name,array('thumb','thumbwidth','thumbheight'))){
             $use_thumb=1;
             $thumb[$name]=$val;
  @@ -120,7 +120,10 @@
       $args=explode(',',substr($value,$dummy+1));
       $value=substr($value,0,$dummy);
       foreach ($args as $arg) {
  -      list($k,$v)=split('=',trim($arg),2);
  +      //list($k,$v)=split('=',trim($arg),2);
  +      $tmp = split('=',trim($arg),2);
  +      $k = $tmp[0];
  +      $v = !empty($tmp[1]) ? $tmp[1] : '';
         if ($v) {
           if (in_array($k,array('width','height'))) {
             $attrs[trim($k)]=$v;
  @@ -174,14 +177,14 @@
   
     if (file_exists($_l_upload_file)) {
       $file_ok=1;
  -  } else if ($formatter->wikimarkup and !$options['nomarkup']) {
  -    if ($DBInfo->swfupload_depth > 2) {
  +  } else if (!empty($formatter->wikimarkup) and empty($options['nomarkup'])) {
  +    if (!empty($DBInfo->swfupload_depth) and $DBInfo->swfupload_depth > 2) {
         $depth=$DBInfo->swfupload_depth;
       } else {
         $depth=2;
       }
   
  -    if ($DBInfo->nosession) { // ip based
  +    if (!empty($DBInfo->nosession)) { // ip based
         $myid=md5($_SERVER['REMOTE_ADDR'].'.'.'MONIWIKI'); // FIXME
       } else {
         $myid=session_id();
  @@ -210,7 +213,7 @@
       }
     }
   
  -  if ($file_ok) {
  +  if (!empty($file_ok)) {
   
       $imgcls='imgAttach';
   
  @@ -285,7 +288,7 @@
         }
   
         $alt=!empty($alt) ? $alt:$file;
  -      if ($key != $pagename || $force_download) {
  +      if ($key != $pagename || !empty($force_download)) {
           $val=_urlencode($value);
           if (!empty($use_thumb)) {
             $thumbdir='thumbnails/';
  @@ -295,7 +298,7 @@
           }
           $url=$formatter->link_url(_urlencode($pagename),"?action=$mydownload&amp;value=".$val);
         } else {
  -        if ($use_thumb) {
  +        if (!empty($use_thumb)) {
             $url=$DBInfo->upload_dir_url.'/thumbnails/'._urlencode($_l_file);
           } else {
             $_my_file=str_replace($DBInfo->upload_dir, $DBInfo->upload_dir_url,$dir . '/' . $file);
  @@ -324,12 +327,12 @@
     }
   
     $paste='';
  -  if ($DBInfo->use_clipmacro and preg_match('/^(.*)\.png$/i',$file,$m)) {
  +  if (!empty($DBInfo->use_clipmacro) and preg_match('/^(.*)\.png$/i',$file,$m)) {
       $now=time();
       $url=$formatter->link_url($pagename,"?action=clip&amp;value=$m[1]&amp;now=$now");
       $paste=" <a href='$url'>"._("or paste a new png picture")."</a>";
     }
  -  if ($DBInfo->use_drawmacro and preg_match('/^(.*)\.gif$/i',$file,$m)) {
  +  if (!empty($DBInfo->use_drawmacro) and preg_match('/^(.*)\.gif$/i',$file,$m)) {
       $now=time();
       $url=$formatter->link_url($pagename,"?action=draw&amp;mode=attach&amp;value=$m[1]&amp;now=$now");
       $paste=" <a href='$url'>"._("or draw a new gif picture")."</a>";
  
  
  
  1.36      +38 -35    moniwiki/plugin/Blog.php
  
  Index: Blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Blog.php,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- Blog.php	10 Dec 2008 09:59:49 -0000	1.35
  +++ Blog.php	19 Apr 2010 11:26:46 -0000	1.36
  @@ -1,11 +1,11 @@
   <?php
  -// Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // Blog action plugin for the MoniWiki
   //
   // Usage: ?action=Blog
   //
  -// $Id: Blog.php,v 1.35 2008/12/10 09:59:49 wkpark Exp $
  +// $Id: Blog.php,v 1.36 2010/04/19 11:26:46 wkpark Exp $
   
   function updateBlogList($formatter) {
     global $DBInfo;
  @@ -74,18 +74,18 @@
     $COLS_OTHER = 85;
     $cols = preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']) ? $COLS_MSIE : $COLS_OTHER;
   
  -  $rows=$options['rows'] > 5 ? $options['rows']: 8;
  -  $cols=$options['cols'] > 60 ? $options['cols']: $cols;
  +  $rows=(!empty($options['rows']) and $options['rows'] > 5) ? $options['rows']: 8;
  +  $cols=(!empty($options['cols']) and $options['cols'] > 60) ? $options['cols']: $cols;
   
     $url=$formatter->link_url($formatter->page->urlname);
   
  -  if ($formatter->refresh or $options['button_refresh']) {
  +  if (!empty($formatter->refresh) or !empty($options['button_refresh'])) {
       updateBlogList($formatter);
       $options['msg']=sprintf(_("Blog cache of \"%s\" is refreshed"),$formatter->page->name);
     }
   
     $savetext="";
  -  if ($options['savetext']) {
  +  if (!empty($options['savetext'])) {
       $savetext=_stripslashes($options['savetext']);
       $savetext=str_replace("\r","",$savetext);
       $savetext=str_replace("----\n","-''''''---\n",$savetext);
  @@ -94,14 +94,16 @@
     }
   
     # for conflict check
  -  if ($options['datestamp'])
  +  if (!empty($options['datestamp']))
        $datestamp= $options['datestamp'];
     else
        $datestamp= $formatter->page->mtime();
   
  -  if ($options['title'])
  +  if (!empty($options['title']))
       $options['title']=_stripslashes($options['title']);
  -  if (!$options['button_preview'] && $savetext) {
  +  else
  +    $options['title'] = '';
  +  if (empty($options['button_preview']) && !empty($savetext)) {
       $savetext=preg_replace("/(?<!\\\\)}}}/","\}}}",$savetext);
   
       $url=$formatter->link_tag($formatter->page->urlname,"",$options['page']);
  @@ -119,7 +121,7 @@
           _stripslashes($options['name']):$_SERVER['REMOTE_ADDR'];
       } else $id=$options['id'];
   
  -    if ($options['value']) {
  +    if (!empty($options['value'])) {
         # add comment
         for ($i=0;$i<$count;$i++) {
           if (preg_match("/^({{{)?#!blog (.*)$/",$lines[$i],$match)) {
  @@ -132,8 +134,8 @@
           }
         }
   
  -      if ($found) {
  -        if ($endtag)
  +      if (!empty($found)) {
  +        if (!empty($endtag))
             for (;$i<$count;$i++) {
               if (preg_match("/^}}}$/",$lines[$i])) {
                 $found=1; 
  @@ -144,7 +146,7 @@
             $lines=explode("\n",rtrim($raw_body));
             $i=count($lines);
           }
  -        if ($options['nosig'])
  +        if (!empty($options['nosig']))
             $lines[$i]="----\n$savetext\n$endtag";
           else
             $lines[$i]="----\n$savetext @SIG@\n$endtag";
  @@ -170,7 +172,7 @@
         }
   
         $entry="{{{#!blog $id @date@";
  -      if ($options['title'])
  +      if (!empty($options['title']))
           $entry.=" ".$options['title'];
         $entry.="\n$savetext\n}}}\n\n";
   
  @@ -181,19 +183,19 @@
       }
   
       $myrefresh='';
  -    if ($DBInfo->use_save_refresh) {
  +    if (!empty($DBInfo->use_save_refresh)) {
          $sec=$DBInfo->use_save_refresh - 1;
          $lnk=$formatter->link_url($formatter->page->urlname,"?action=show");
          $myrefresh='Refresh: '.$sec.'; url='.qualifiedURL($lnk);
       }
       $formatter->send_header($myrefresh,$options);
   
  -    if ($options['value']) {
  +    if (!empty($options['value'])) {
         $formatter->send_title(sprintf(_("Comment added to \"%s\""),$title),"",$options);
         $log="Add Comment to \"$title\"";
       } else {
         $formatter->send_title(sprintf(_("Blog entry added to \"%s\""),$options['page']),"",$options);
  -      if ($options['title'])
  +      if (!empty($options['title']))
           $log=sprintf(_("Blog entry \"%s\" added"),$options['title']);
         else
           $log=_("Blog entry added");
  @@ -210,7 +212,7 @@
         $formatter->send_page();
     } else { # add entry or comment
       $formatter->send_header("",$options);
  -    if ($options['value']) {
  +    if (!empty($options['value'])) {
         $raw_body=$formatter->page->_get_raw_body();
         $lines=explode("\n",$raw_body);
         $count=count($lines);
  @@ -225,14 +227,15 @@
           }
         }
   
  -      if ($found) {
  +      if (!empty($found)) {
  +        $quote = '';
           for (;$i<$count;$i++) {
             if (preg_match("/^}}}$/",$lines[$i])) break;
             $quote.=$lines[$i]."\n";
           }
         }
  -      if (!$title) $title=$options['page'];
  -      if (!$found) {
  +      if (empty($title)) $title=$options['page'];
  +      if (empty($found)) {
           $formatter->send_title("Error: No entry found!","",$options);
           $formatter->send_footer("",$options);
           return;
  @@ -242,7 +245,7 @@
         $formatter->send_title(sprintf(_("Add Blog entry to \"%s\""),$options['page']),"",$options);
       }
       $options['noaction']=1;
  -    if ($quote) {
  +    if (!empty($quote)) {
         $quote=str_replace('\}}}','}}}',$quote);
         print $formatter->processor_repl('blog',$quote,$options);
         #print $formatter->send_page($quote,$options);
  @@ -251,29 +254,29 @@
         $extra='<div style="text-align:right">'.'
           <input type="submit" name="button_refresh" value="Refresh" /></div>';
   
  -    if ($options['value'])
  +    if (!empty($options['value']))
         print "<a name='BlogComment'></a>";
       print '<div id="editor_area">';
       print "<form method='post' action='$url'>\n";
       $myinput='';
       if ($options['id'] == 'Anonymous')
         $myinput.='<b>'._("Name")."</b>: <input name='name' size='15' maxlength='15' value='$options[name]' />\n";
  -    if (!$options['value'])
  +    if (empty($options['value']))
         $myinput.='<b>'._("Title")."</b>: <input name='title' value='$options[title]' size='70' maxlength='70' style='width:300px' /><br />\n";
       else
         print "<input type='hidden' name='value' value='$options[value]' />\n";
       print '<div class="editor_area_extra">'.$myinput."</div>\n";
       $savetext=$savetext ? $savetext:'Enter blog entry';
  -    if ($DBInfo->use_wikiwyg) {
  +    if (!empty($DBInfo->use_wikiwyg)) {
         $wysiwyg_msg=_("GUI");
  -      $wysiwyg_btn.='&nbsp;<input type="button" tabindex="7" value="'.$wysiwyg_msg.
  +      $wysiwyg_btn='&nbsp;<input type="button" tabindex="7" value="'.$wysiwyg_msg.
           '" onclick="javascript:sectionEdit(null,null,null)" />';
       }
       print <<<FORM
   <textarea class="wiki" id="content" wrap="virtual" name="savetext"
    rows="$rows" cols="$cols" class="wiki">$savetext</textarea><br />
   FORM;
  -    if ($options['value'])
  +    if (!empty($options['value']))
         print "<input name='nosig' type='checkbox' />"._("Don't add a signature")."<br />";
       print <<<FORM2
   <input type="hidden" name="action" value="Blog" />
  @@ -284,7 +287,7 @@
   </form>
   </div>
   FORM2;
  -    if ($DBInfo->use_wikiwyg>=3)
  +    if (!empty($DBInfo->use_wikiwyg) and $DBInfo->use_wikiwyg>=3)
         print <<<JS
   <script type='text/javascript'>
   /*<![CDATA[*/
  @@ -293,13 +296,13 @@
   </script>
   JS;
     }
  -  if (!$savetext) {
  +  if (empty($savetext)) {
       #print $formatter->macro_repl('SmileyChooser');
       print macro_EditHints($formatter);
       print "<div class='wikiHints'>"._("<b>horizontal rule</b> ---- is not applied on the blog mode.")."</div>\n";
     }
  -  if ($options['button_preview'] && $options['savetext']) {
  -    if ($options['title'])
  +  if (!empty($options['button_preview']) && !empty($options['savetext'])) {
  +    if (!empty($options['title']))
         $formatter->send_page("== $options[title] ==\n");
       $formatter->send_page($savetext);
     }
  @@ -313,13 +316,13 @@
     $COLS_OTHER = 85;
     $cols = preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']) ? $COLS_MSIE : $COLS_OTHER;
   
  -  $rows=$options['rows'] > 5 ? $options['rows']: 8;
  -  $cols=$options['cols'] > 60 ? $options['cols']: $cols;
  +  $rows=(!empty($options['rows']) and $options['rows'] > 5) ? $options['rows']: 8;
  +  $cols=(!empty($options['cols']) and $options['cols'] > 60) ? $options['cols']: $cols;
   
     $url=$formatter->link_url($formatter->page->urlname);
     $datestamp= $formatter->page->mtime();
   
  -  if (!$options['id'])
  +  if (empty($options['id']))
       $options['id']=$DBInfo->user->id;
   
     if ($options['id'] != 'Anonymous')
  @@ -344,7 +347,7 @@
   </form>
   </div>
   FORM2;
  -  if ($DBInfo->use_wikiwyg >=3)
  +  if (!empty($DBInfo->use_wikiwyg) and $DBInfo->use_wikiwyg >=3)
       $JS=<<<JS
   <script type='text/javascript'>
   /*<![CDATA[*/
  
  
  
  1.37      +21 -14    moniwiki/plugin/BlogChanges.php
  
  Index: BlogChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogChanges.php,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- BlogChanges.php	31 Oct 2006 01:54:17 -0000	1.36
  +++ BlogChanges.php	19 Apr 2010 11:26:46 -0000	1.37
  @@ -1,9 +1,9 @@
   <?php
  -// Copyright 2003-2004 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogChanges action plugin for the MoniWiki
   //
  -// $Id: BlogChanges.php,v 1.36 2006/10/31 01:54:17 pyrasis Exp $
  +// $Id: BlogChanges.php,v 1.37 2010/04/19 11:26:46 wkpark Exp $
   
   class Blog_cache {
     function get_all_blogs() {
  @@ -148,8 +148,9 @@
         $raw=$page->get_raw_body();
         $temp= explode("\n",$raw);
   
  +      $summary = '';
         foreach ($temp as $line) {
  -        if (!$state) {
  +        if (empty($state)) {
             if (preg_match("/^({{{)?#!blog\s([^ ]+\s($date"."[^ ]+)\s.*)$/",$line,$match)) {
               $entry=explode(' ',$pageurl.' '.$match[2],4);
               if ($match[1]) $endtag='}}}';
  @@ -191,10 +192,14 @@
     $options['simple']=1;
     $options['all']=1;
   # $options['mode'] // XXX
  +  if (!empty($options['mode']))
  +    $arg = 'all,'.$options['mode'];
  +  else
  +    $arg = 'all';
   
  -  $changes=macro_BlogChanges($formatter,'all,'.$options['mode'],$options);
  +  $changes=macro_BlogChanges($formatter,$arg,$options);
     $formatter->send_header('',$options);
  -  if ($options['category'])
  +  if (!empty($options['category']))
       $formatter->send_title(_("Category: ").$options['category'],'',$options);
     else
       $formatter->send_title(_("BlogChanges"),'',$options);
  @@ -233,10 +238,10 @@
   
     $category_pages=array();
   
  -  $options['category']=$options['category'] ? $options['category']:$match[3];
  +  $options['category']=!empty($options['category']) ? $options['category']:$match[3];
   
   
  -  if ($options['category']) {
  +  if (!empty($options['category'])) {
       $options['category']=
         preg_replace('/(?<!\.|\)|\])\*/','.*',$options['category']);
       
  @@ -362,6 +367,7 @@
       
     $time_current= time();
     $items='';
  +  $date_anchor = '';
   
     $sendopt['nosisters']=1;
   
  @@ -371,7 +377,7 @@
       $datetag='';
   
       $url=qualifiedUrl($formatter->link_url(_urlencode($page)));
  -    if (!$opts['nouser']) {
  +    if (empty($opts['nouser'])) {
         if (preg_match('/^[\d\.]+$/',$user)) {
           if (!$DBInfo->mask_hostname and $DBInfo->interwiki['Whois'])
             $user='<a href="'.$DBInfo->interwiki['Whois'].$user.'">'.
  @@ -389,7 +395,7 @@
       $time=strtotime($date.' GMT');
   
       $date= gmdate('m-d [h:i a]',$time+$tz_off);
  -    if ($summary) {
  +    if (!empty($summary)) {
         $anchor= date('Ymd',$time);
         if ($date_anchor != $anchor) {
           $date_anchor_fmt=$DBInfo->date_fmt_blog;
  @@ -406,7 +412,7 @@
         $summary=ob_get_contents();
         ob_end_clean();
   
  -      if (!$options['noaction']) {
  +      if (empty($options['noaction'])) {
           if ($commentcount) {
             $add_button=($commentcount == 1) ? _("%d comment"):_("%d comments");
           } else
  @@ -435,13 +441,14 @@
     $url=qualifiedUrl($formatter->link_url($DBInfo->frontpage));
   
     # make pnut
  -  if ($options['action']) $action='action=blogchanges&amp;';
  -  if ($options['category']) $action.='category='.$options['category'].'&amp;';
  -  if ($options['mode']) $action.='mode='.$options['mode'].'&amp;';
  +  if (!empty($options['action'])) $action='action=blogchanges&amp;';
  +  if (!empty($options['category'])) $action.='category='.$options['category'].'&amp;';
  +  if (!empty($options['mode'])) $action.='mode='.$options['mode'].'&amp;';
   
     $prev=$formatter->link_to('?'.$action.'date='.$prev_date,'&laquo; '.
       _("Previous"));
  -  if ($next_date)
  +  $next = '';
  +  if (!empty($next_date))
       $next=" | ".$formatter->link_to('?'.$action.'date='.$next_date,
         _("Next").' &raquo;');
     return $bra.$items.$cat.'<div class="blog-action">'.$prev.$next.'</div>';
  
  
  
  1.17      +21 -16    moniwiki/plugin/Calendar.php
  
  Index: Calendar.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Calendar.php,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- Calendar.php	26 Apr 2008 14:38:50 -0000	1.16
  +++ Calendar.php	19 Apr 2010 11:26:46 -0000	1.17
  @@ -7,7 +7,7 @@
   #-----usage: generate_calendar(2001, 11, $day_func, 2);-------------------------
   #------(last two arguments are optional)----------------------------------------
   #-------------------------------------------------------------------------------
  -# $Id: Calendar.php,v 1.16 2008/04/26 14:38:50 wkpark Exp $
  +# $Id: Calendar.php,v 1.17 2010/04/19 11:26:46 wkpark Exp $
   
   function calendar_get_dates($formatter,$date='',$page='') {
     global $DBInfo;
  @@ -37,7 +37,7 @@
   function macro_Calendar($formatter,$value="",$option="") {
   	global $DBInfo;
   
  -	$date=$_GET['date'];
  +	$date=!empty($_GET['date']) ? $_GET['date'] : '';
   
   	$prev_tag='&laquo;';
   	$next_tag='&raquo;';
  @@ -50,11 +50,13 @@
   
   	#print_r($match);
   	/* GET argument has priority */
  +        $month = '';
  +        $year = '';
   	if ($date) {
   		preg_match("/^((\d{4})-?(\d{1,2}))$/i",$date,$match2);
   		$year= $match2[2];
   		$month= $match2[3];
  -	} else if ($match[4]) {
  +	} else if (!empty($match[4])) {
   		$year= $match[5];
   		$month= $match[6];
   	}
  @@ -67,7 +69,7 @@
   	$month=intval($month);
   	$year=intval($year);
   
  -	if ($match[3])
  +	if (!empty($match[3]))
   		$pagename=$match[3];
   	else
   		$pagename=$formatter->page->name;
  @@ -76,7 +78,9 @@
   	$link_prefix=sprintf("%04d-%02d",$year,$month);
   
   	$archives=array();
  -	if ($match[7]) {
  +        $attr = '';
  +        $link = '';
  +	if (!empty($match[7])) {
   		$args=explode(",",$match[7]);
   
   		if (in_array ("nolink", $args)) $nolink=1;
  @@ -86,7 +90,7 @@
   		if (in_array ("shortweek", $args)) $day_heading_length=1;
   		if (in_array ("yearlink", $args)) $yearlink=1;
   		if (in_array ("archive", $args)) {
  -			if ($mode) // blog mode
  +			if (!empty($mode)) // blog mode
   				$archives=calendar_get_dates($formatter,$date,$pagename.'/'.$link_prefix);
   			else {
   				$archives=calendar_get_dates($formatter,$date);
  @@ -97,7 +101,7 @@
   
   	$prev_month=date('Ym',mktime(0,0,0,$month - 1,1,$year));
   	$next_month=date('Ym',mktime(0,0,0,$month + 1,1,$year));
  -	if ($yearlink) {
  +	if (!empty($yearlink)) {
   		$prev_year=date('Ym',mktime(0,0,0,$month,1,$year - 1));
   		$next_year=date('Ym',mktime(0,0,0,$month,1,$year + 1));
   
  @@ -129,16 +133,16 @@
   	$calendar.= "<caption class=\"month\">";
   
           /* Adding previous month and year */
  -	if ($yearlink)
  +	if (!empty($yearlink))
   	$calendar.= $formatter->link_tag($link,"?date=$prev_year",$year_prev_tag).'&nbsp;&nbsp;';
   	$calendar.= $formatter->link_tag($link,"?date=$prev_month",$prev_tag).'&nbsp;&nbsp;';
   
   	#$calendar.=substr($date_info[month],0,3).' '.$year;
  -	$calendar.=$date_info[month].' '.$year;
  +	$calendar.=$date_info['month'].' '.$year;
   
   	/* Adding next month and year */
   	$calendar.= '&nbsp;&nbsp;'.$formatter->link_tag($link,"?date=$next_month",$next_tag);
  -	if ($yearlink)
  +	if (!empty($yearlink))
   	$calendar.= '&nbsp;&nbsp;'.$formatter->link_tag($link,"?date=$next_year",$year_next_tag);
   	$calendar.= "</caption>\n";
   
  @@ -162,11 +166,12 @@
   	if($weekday > 0){$calendar .= "<td colspan=\"$weekday\">&nbsp;</td>";}
   
   	#print the days of the month
  -	if ($mode=='blog') {
  +        $action = '';
  +	if (!empty($mode) and $mode=='blog') {
   		$link=$urlpagename."/$link_prefix";
   		if (!$DBInfo->hasPage($link))
   			$action="?action=blog";
  -	} else if ($mode) {
  +	} else if (!empty($mode)) {
   		$link=$urlpagename;
   	}
   
  @@ -187,16 +192,16 @@
   			$classes=$nonexists;
   		}
   
  -		if (!$mode and !isset($nolink)) {
  +		if (empty($mode) and !isset($nolink)) {
   			$link=$urlpagename."/".$link_prefix."-".sprintf("%02d",$day);
   			if ($DBInfo->hasPage($link))
   				$classes=$exists;
  -		} else if ($mode) {
  -			if ($archives[$day]) {
  +		} else if (!empty($mode)) {
  +			if (!empty($archives[$day])) {
   				 $daytext='<span class="blogged"><b>'.$day.'</b></span>';
   			}
   			if ($mode == 'archive') {
  -				if ($archives[$day]) {
  +				if (!empty($archives[$day])) {
                                           if ($day < 10)
                                             $anchor = '#'.$date.'0'.$day;
                                           else
  
  
  
  1.4       +7 -7      moniwiki/plugin/Cite.php
  
  Index: Cite.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Cite.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Cite.php	10 Dec 2005 02:46:28 -0000	1.3
  +++ Cite.php	19 Apr 2010 11:26:46 -0000	1.4
  @@ -1,9 +1,9 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a CITE macro plugin for the MoniWiki
   //
  -// $Id: Cite.php,v 1.3 2005/12/10 02:46:28 wkpark Exp $
  +// $Id: Cite.php,v 1.4 2010/04/19 11:26:46 wkpark Exp $
   
   function macro_Cite($formatter="",$value="") {
     $CITE_MAP="CiteMap";
  @@ -19,6 +19,7 @@
   CPL,Chem.Phys.Lett. http://www.sciencedirect.com/science/journal/00092614
   
   EOS;
  +  $CITE_list=array('JCP'=>array('http://jcp.aip.org/jcp/top.jsp?vol=$VOL&amp;pg=$PAGE','','J.Chem.Phys.'));
   
     $DEFAULT_CITE="JCP";
     $re_cite="/([A-Z][A-Za-z]*)?\s*([0-9\-]+\s*,\s*[0-9]+)/x";
  @@ -29,13 +30,13 @@
   
     list($vol,$page)=explode(',',preg_replace('/ /','',$match[2]));
   
  -  if ($match[1]) {
  +  if (!empty($match[1])) {
       if (strtolower($match[1][0])=="k") $cite="JKCS";
       else $cite=$match[1];
     } else $cite=$DEFAULT_CITE;
   
     $attr='';
  -  if ($match[3]) {
  +  if (!empty($match[3])) {
       $args=explode(",",$match[3]);
       foreach ($args as $arg) {
         if ($arg == "noimg") $noimg=1;
  @@ -53,9 +54,8 @@
     if ($map->exists()) $list.=$map->get_raw_body();
   
     $lists=explode("\n",$list);
  -  $CITE_list=array();
     foreach ($lists as $line) {
  -     if (!$line or !preg_match("/^[A-Z]/",$line[0])) continue;
  +     if (empty($line) or !preg_match("/^[A-Z]/",$line[0])) continue;
        $dum=explode(" ",rtrim($line));
        if (sizeof($dum) == 2)
           $dum[]=$CITE_list[$DEFAULT_CITE][1];
  @@ -65,7 +65,7 @@
        $CITE_list[$dum[0]]=array($dum[1],$dum[2],$name);
     }
   
  -  if ($CITE_list[$cite]) {
  +  if (!empty($CITE_list[$cite])) {
        $citelink=$CITE_list[$cite][0];
        $imglink=$CITE_list[$cite][1];
        $citename=$CITE_list[$cite][2];
  
  
  
  1.4       +3 -2      moniwiki/plugin/Clip.php
  
  Index: Clip.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Clip.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Clip.php	10 Dec 2005 02:46:28 -0000	1.3
  +++ Clip.php	19 Apr 2010 11:26:46 -0000	1.4
  @@ -1,11 +1,11 @@
   <?php
  -// Copyright 2005 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2005-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // Draw plugin with the Clip applet for the MoniWiki
   //
   // Usage: [[Clip(hello)]]
   //
  -// $Id: Clip.php,v 1.3 2005/12/10 02:46:28 wkpark Exp $
  +// $Id: Clip.php,v 1.4 2010/04/19 11:26:46 wkpark Exp $
   
   function macro_Clip($formatter,$value) {
     global $DBInfo;
  @@ -27,6 +27,7 @@
     if (!file_exists($_dir."/$pngname"))
       return "<a href='$url'>"._("Paste a new picture")."</a>";
     $edit='';
  +  $end_tag='';
     if ($enable_edit) {
       $edit="<a href='$url'>";
       $end_tag='</a>';
  
  
  
  1.37      +25 -23    moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- Comment.php	1 Oct 2009 13:13:52 -0000	1.36
  +++ Comment.php	19 Apr 2010 11:26:46 -0000	1.37
  @@ -1,19 +1,19 @@
   <?php
  -// Copyright 2004-2008 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2004-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a Wiki comment plugin for the MoniWiki
   //
   // Author: Won-Kyu Park <wkpark@kldp.org>
   // Since: 2004-08-16
  -// Modified: $Date: 2009/10/01 13:13:52 $
  +// Modified: $Date: 2010/04/19 11:26:46 $
   // Name: Comment plugin
   // Description: Comment Plugin
   // URL: MoniWiki:CommentPlugin
  -// Version: $Revision: 1.36 $
  +// Version: $Revision: 1.37 $
   // License: GPL
   // Usage: [[Comment]], ?action=comment
   //
  -// $Id: Comment.php,v 1.36 2009/10/01 13:13:52 wkpark Exp $
  +// $Id: Comment.php,v 1.37 2010/04/19 11:26:46 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $DBInfo;
  @@ -22,7 +22,7 @@
     $options['id']=$user->id;
   
     $use_any=0;
  -  if ($DBInfo->use_textbrowsers) {
  +  if (!empty($DBInfo->use_textbrowsers)) {
       if (is_string($DBInfo->use_textbrowsers))
         $use_any= preg_match('/'.$DBInfo->use_textbrowsers.'/',
           $_SERVER['HTTP_USER_AGENT']) ? 1:0;
  @@ -31,7 +31,7 @@
           $_SERVER['HTTP_USER_AGENT']) ? 1:0;
     }
     $captcha='';
  -  if (!$use_any and $DBInfo->use_ticket and $options['id'] == 'Anonymous') {
  +  if (empty($use_any) and !empty($DBInfo->use_ticket) and $options['id'] == 'Anonymous') {
        $seed=md5(base64_encode(time()));
        $ticketimg=$formatter->link_url($formatter->page->urlname,'?action=ticket&amp;__seed='.$seed);
        $captcha=<<<EXTRA
  @@ -41,7 +41,7 @@
     }
   
     $hidden = '';
  -  if (!$options['page']) $options['page']=$formatter->page->name;
  +  if (empty($options['page'])) $options['page']=$formatter->page->name;
     if (empty($options['action'])) $action='comment';
     else $action=$options['action'];
     if (!empty($options['mode']))
  @@ -63,7 +63,7 @@
     if (!empty($options['nocomment'])) return '';
     if (!$DBInfo->security->writable($options)) return '';
   
  -  if ($options['mid']) $mymid=$options['mid'];
  +  if (!empty($options['mid'])) $mymid=$options['mid'];
     else $mymid=$formatter->mid;
     $emid=base64_encode($mymid.',Comment,'.$value);
   
  @@ -92,6 +92,7 @@
   
     $comment=_("Comment");
     $preview_btn=_("Preview");
  +  $preview = '';
     if (!empty($oneliner)) {
       $form.=<<<FORM
   <input class='wiki' size='$cols' name="savetext" value="$savetext" />&nbsp;
  @@ -104,11 +105,12 @@
    rows="$rows" cols="$cols">$savetext</textarea><br />
   FORM;
     }
  +  $sig = '';
     if ($options['id'] == 'Anonymous') {
       $name = !empty($options['name']) ? $options['name'] : '';
       $sig=_("Username").": <input name='name' value='$name' size='10' />";
     }
  -  else if (!$use_meta)
  +  else if (empty($use_meta))
       $sig="<input name='nosig' type='checkbox' />"._("Don't add a signature");
     $form.= <<<FORM2
   $hidden
  @@ -138,22 +140,22 @@
       return do_invalid($formatter,$options);
     }
   
  -  if ($options['usemeta']) $use_meta=1;
  +  if (!empty($options['usemeta'])) $use_meta=1;
   
     $COLS_MSIE = 80;
     $COLS_OTHER = 85;
     $cols = preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']) ? $COLS_MSIE : $COLS_OTHER;
   
  -  $rows=$options['rows'] > 5 ? $options['rows']: 8;
  -  $cols=$options['cols'] > 60 ? $options['cols']: $cols;
  +  $rows=(!empty($options['rows']) and $options['rows'] > 5) ? $options['rows']: 8;
  +  $cols=(!empty($options['cols']) and $options['cols'] > 60) ? $options['cols']: $cols;
   
     $url=$formatter->link_url($formatter->page->urlname);
   
  -  $button_preview=$options['button_preview'];
  +  $button_preview=!empty($options['button_preview']) ? $options['button_preview'] : 0;
   
   
     $use_any=0;
  -  if ($DBInfo->use_textbrowsers) {
  +  if (!empty($DBInfo->use_textbrowsers)) {
       if (is_string($DBInfo->use_textbrowsers))
         $use_any= preg_match('/'.$DBInfo->use_textbrowsers.'/',
           $_SERVER['HTTP_USER_AGENT']) ? 1:0;
  @@ -163,7 +165,7 @@
     }
   
     $ok_ticket=0;
  -  if (!$use_any and $DBInfo->use_ticket and $options['id'] == 'Anonymous') {
  +  if (empty($use_any) and !empty($DBInfo->use_ticket) and $options['id'] == 'Anonymous') {
       if ($options['__seed'] and $options['check']) {
         $mycheck=getTicket($options['__seed'],$_SERVER['REMOTE_ADDR'],4);
         if ($mycheck==$options['check'])
  @@ -188,7 +190,7 @@
       #$savetext=str_replace("<","&lt;",$savetext);
     }
   
  -  if ($savetext and !$button_preview and $DBInfo->spam_filter) {
  +  if (!empty($savetext) and empty($button_preview) and !empty($DBInfo->spam_filter)) {
       $text=$savetext;
       $fts=preg_split('/(\||,)/',$DBInfo->spam_filter);
       foreach ($fts as $ft) {
  @@ -199,8 +201,8 @@
         $options['msg'] = _("Sorry, can not save page because some messages are blocked in this wiki.");
       }
     }
  -  if ($button_preview && $options['savetext']) {
  -    if ($options['action_mode'] != 'ajax') {
  +  if (!empty($button_preview) && !empty($options['savetext'])) {
  +    if (empty($options['action_mode']) or $options['action_mode'] != 'ajax') {
         $formatter->send_header("",$options);
         $formatter->send_title(_("Preview comment"),"",$options);
         $formatter->send_page($savetext."\n----");
  @@ -210,8 +212,8 @@
         $formatter->send_footer("",$options);
       }
       return false;
  -  } else if (!$savetext) {
  -    if ($options['action_mode'] != 'ajax') {
  +  } else if (empty($savetext)) {
  +    if (empty($options['action_mode']) or $options['action_mode'] != 'ajax') {
         $formatter->send_header("",$options);
         $formatter->send_title(_("Add comment"),"",$options);
         print macro_Comment($formatter,'',$options);
  @@ -224,7 +226,7 @@
     $datestamp= $options['datestamp'];
     if ($formatter->page->mtime() > $datestamp) {
       $options['msg']='';
  -    if (!$options['action_mode'] != 'ajax') {
  +    if (empty($options['action_mode']) or $options['action_mode'] != 'ajax') {
         $formatter->send_header('',$options);
         $formatter->send_title(_("Error: Don't make a clone!"),'',$options);
         $formatter->send_footer('',$options);
  @@ -239,7 +241,7 @@
         _stripslashes($options['name']):$_SERVER['REMOTE_ADDR'];
     else $id=$options['id'];
   
  -  if ($use_meta) {
  +  if (!empty($use_meta)) {
       $date=gmdate('Y-m-d H:i:s').' GMT';
       $savetext=rtrim($savetext)."\n";
       $boundary= strtoupper(md5("COMMENT")); # XXX
  @@ -257,7 +259,7 @@
   META;
       $savetext="----".$boundary."\n$meta\n\n$savetext\n";
     } else {
  -    if ($options['nosig']) $savetext="----\n$savetext\n";
  +    if (!empty($options['nosig'])) $savetext="----\n$savetext\n";
       else if($options['id']=='Anonymous')
         $savetext="----\n$savetext -- $id @DATE@\n";
       else
  
  
  
  1.23      +4 -3      moniwiki/plugin/Diff.php
  
  Index: Diff.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Diff.php,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- Diff.php	17 Apr 2010 12:07:26 -0000	1.22
  +++ Diff.php	19 Apr 2010 11:26:46 -0000	1.23
  @@ -1,9 +1,9 @@
   <?php
  -// Copyright 2003-2004 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a diff plugin for the MoniWiki
   //
  -// $Id: Diff.php,v 1.22 2010/04/17 12:07:26 wkpark Exp $
  +// $Id: Diff.php,v 1.23 2010/04/19 11:26:46 wkpark Exp $
   
   
   function code_diff($diff, $options = array()) {
  @@ -388,7 +388,7 @@
   
     if (!empty($options['text'])) {
       $out= $options['text'];
  -    if (!$options['raw'])
  +    if (empty($options['raw']))
         $ret=call_user_func($type,$out);
       else
         $ret="<pre>$out</pre>\n";
  @@ -423,6 +423,7 @@
   
     $out=$version->diff($formatter->page->name,$rev1,$rev2);
   
  +  $ret = '';
     if (!$out) {
       $msg= _("No difference found");
     } else {
  
  
  
  1.7       +4 -4      moniwiki/plugin/Draw.php
  
  Index: Draw.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Draw.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- Draw.php	7 Apr 2008 16:29:59 -0000	1.6
  +++ Draw.php	19 Apr 2010 11:26:46 -0000	1.7
  @@ -1,5 +1,5 @@
   <?php
  -// Copyright 2003-2008 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // Draw plugin with the JHotDraw for the MoniWiki
   //
  @@ -8,11 +8,11 @@
   // Name: Draw Plugin
   // Description: Draw gif drawing using the TWiki Draw plugin 
   // URL: MoniWiki:DrawPlugin
  -// Version: $Revision: 1.6 $
  +// Version: $Revision: 1.7 $
   // License: GPL
   // Usage: [[Draw(hello)]] without a gif extention.
   //
  -// $Id: Draw.php,v 1.6 2008/04/07 16:29:59 wkpark Exp $
  +// $Id: Draw.php,v 1.7 2010/04/19 11:26:46 wkpark Exp $
   
   function macro_Draw($formatter,$value) {
     global $DBInfo;
  @@ -66,7 +66,7 @@
   
     $name=$options['value'];
   
  -  if ($_FILES['filepath']) {
  +  if (!empty($_FILES['filepath'])) {
       $upfile=$_FILES['filepath']['tmp_name'];
       $temp=explode("/",$_FILES['filepath']['name']);
       $upfilename= $temp[count($temp)-1];
  @@ -126,7 +126,7 @@
     }
   
     $gifname=_rawurlencode($name);
  -  if ($_GET['mode'] != 'attach') {
  +  if (empty($_GET['mode']) or $_GET['mode'] != 'attach') {
       $gifname='Draw_'.$gifname;
     }
   
  
  
  
  1.13      +3 -3      moniwiki/plugin/EditToolbar.php
  
  Index: EditToolbar.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/EditToolbar.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- EditToolbar.php	29 Apr 2009 23:15:10 -0000	1.12
  +++ EditToolbar.php	19 Apr 2010 11:26:46 -0000	1.13
  @@ -1,5 +1,5 @@
   <?php
  -// Copyright 2004-2006 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2004-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a EditToolbar plugin for the MoniWiki
   //
  @@ -7,11 +7,11 @@
   //
   // This feature is imported from the MediaWiki
   //
  -// $Id: EditToolbar.php,v 1.12 2009/04/29 23:15:10 wkpark Exp $
  +// $Id: EditToolbar.php,v 1.13 2010/04/19 11:26:46 wkpark Exp $
   
   function macro_EditToolbar($formatter,$value, $options=array()) {
       global $DBInfo;
  -    if ($options['notoolbar']) return '';
  +    if (!empty($options['notoolbar'])) return '';
   
       $default = array('bold','italic','link','extlink','headline',
           'math','nowiki','hr','image','media','smiley','sig','infobox');
  
  
  
  1.11      +3 -2      moniwiki/plugin/FastSearch.php
  
  Index: FastSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FastSearch.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- FastSearch.php	11 Jan 2006 16:04:58 -0000	1.10
  +++ FastSearch.php	19 Apr 2010 11:26:46 -0000	1.11
  @@ -2,7 +2,7 @@
   // from http://www.heddley.com/edd/php/search.html
   // code itself http://www.heddley.com/edd/php/indexer.tar.gz
   //
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   //
   // indexer.tar.gz is modified to adopt under MoniWiki
  @@ -13,7 +13,7 @@
   //
   // Usage: [[FastSearch(string)]]
   //
  -// $Id: FastSearch.php,v 1.10 2006/01/11 16:04:58 wkpark Exp $
  +// $Id: FastSearch.php,v 1.11 2010/04/19 11:26:46 wkpark Exp $
   
   include_once('lib/search.DBA.php');
   
  @@ -30,6 +30,7 @@
     $needle=_preg_search_escape($needle);
     $pattern = '/'.$needle.'/i';
     $fneedle=str_replace('"',"&#34;",$needle); # XXX
  +  $url=$formatter->link_url($formatter->page->urlname);
   
     $form= <<<EOF
   <form method='get' action='$url'>
  
  
  
  1.31      +23 -22    moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- FullSearch.php	8 Mar 2010 14:37:34 -0000	1.30
  +++ FullSearch.php	19 Apr 2010 11:26:46 -0000	1.31
  @@ -1,9 +1,9 @@
   <?php
  -// Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
   //
  -// $Id: FullSearch.php,v 1.30 2010/03/08 14:37:34 wkpark Exp $
  +// $Id: FullSearch.php,v 1.31 2010/04/19 11:26:46 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
  @@ -11,35 +11,35 @@
   
     $options['value']=_stripslashes($options['value']);
     if (!$options['value']) $options['value']=$formatter->page->name;
  -  if ($options['backlinks'])
  +  if (!empty($options['backlinks']))
       $title= sprintf(_("BackLinks search for \"%s\""), $options['value']);
  -  else if ($options['keywords'])
  +  else if (!empty($options['keywords']))
       $title= sprintf(_("KeyWords search for \"%s\""), $options['value']);
     else
       $title= sprintf(_("Full text search for \"%s\""), $options['value']);
     $out= macro_FullSearch($formatter,$options['value'],$ret);
  -  $options['msg']=$ret['msg'];
  +  $options['msg']=!empty($ret['msg']) ? $ret['msg'] : '';
     $options['msgtype']='search';
     $formatter->send_header("",$options);
     $formatter->send_title($title,$formatter->link_url("FindPage"),$options);
   
  -  if ($ret['form'])
  +  if (!empty($ret['form']))
       print $ret['form'];
     print $out;
   
     $qext='';
  -  if ($options['backlinks'])
  +  if (!empty($options['backlinks']))
       $qext='&amp;backlinks=1';
  -  else if ($options['keywords'])
  +  else if (!empty($options['keywords']))
       $qext='&amp;keywords=1';
   
  -  if ($options['value']) {
  +  if (!empty($options['value'])) {
       $val=htmlspecialchars($options['value']);
       printf(_("Found %s matching %s out of %s total pages")."<br />",
            $ret['hit'],
           ($ret['hit'] == 1) ? _("page") : _("pages"),
            $ret['all']);
  -    if ($ret['context']==0) {
  +    if (!empty($ret['context']) and $ret['context']==0) {
         $tag=$formatter->link_to("?action=fullsearch&amp;value=$val&amp;context=20",_("Show Context."));
         print $tag.'<br />';
       }
  @@ -96,12 +96,12 @@
     $incl = array();
   
     $test1 = $test2 = true;
  -  if ($opts['noexpr']) {
  +  if (!empty($opts['noexpr'])) {
       $tmp=preg_split("/\s+/",$needle);
       $needle=$value=join('|',$tmp);
       $raw_needle=implode(' ',$tmp);
       $needle=_preg_search_escape($needle);
  -  } else if (!$opts['backlinks']) {
  +  } else if (empty($opts['backlinks'])) {
       $terms = preg_split('/((?<!\S)[-+]?"[^"]+?"(?!\S)|\S+)/s',$needle,-1,
         PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);
   
  @@ -148,8 +148,8 @@
     $hits = array();
   
     # set arena and sid
  -  if ($opts['backlinks']) $arena='backlinks';
  -  else if ($opts['keywords']) $arena='keywords';
  +  if (!empty($opts['backlinks'])) $arena='backlinks';
  +  else if (!empty($opts['keywords'])) $arena='keywords';
     else $arena='fullsearch';
   
     if ($arena == 'fullsearch') $sid=md5($value);
  @@ -182,9 +182,9 @@
     }
   
     $pattern = '/'.$needle.'/';
  -  if ($excl_needle)
  +  if (!empty($excl_needle))
       $excl_pattern = '/'.$excl_needle.'/';
  -  if ($opts['case']) {
  +  if (!empty($opts['case'])) {
       $pattern.="i";
       $excl_pattern.="i";
     }
  @@ -193,7 +193,7 @@
        $pages = $DBInfo->getPageLists();
       //continue;
     } else {
  -    if ($opts['backlinks']) {
  +    if (!empty($opts['backlinks'])) {
         $pages = $DBInfo->getPageLists();
         #$opts['context']=-1; # turn off context-matching
         $cache=new Cache_text("pagelinks");
  @@ -205,7 +205,7 @@
               // ignore count if < 0
           }
         }
  -    } else if ($opts['keywords']) {
  +    } else if (!empty($opts['keywords'])) {
         $pages = $DBInfo->getPageLists();
         $opts['context']=-1; # turn off context-matching
         $cache=new Cache_text("keyword");
  @@ -244,21 +244,22 @@
     $opts['hit']= count($hits);
     $opts['all']= count($pages);
   
  -  if ($opts['call']) return $hits;
  +  if (!empty($opts['call'])) return $hits;
   
  -  $out.= "<!-- RESULT LIST START -->"; // for search plugin
  +  $out= "<!-- RESULT LIST START -->"; // for search plugin
     $out.= "<ul>";
   
     $idx=1;
  +  $checkbox = '';
     while (list($page_name, $count) = each($hits)) {
  -    if ($opts['checkbox']) $checkbox="<input type='checkbox' name='pagenames[]' value='$page_name' />";
  +    if (!empty($opts['checkbox'])) $checkbox="<input type='checkbox' name='pagenames[]' value='$page_name' />";
       $out.= '<!-- RESULT ITEM START -->'; // for search plugin
       $out.= '<li>'.$checkbox.$formatter->link_tag(_rawurlencode($page_name),
             '?action=highlight&amp;value='._urlencode($value),
             $page_name,'tabindex="'.$idx.'"');
       if ($count > 0)
         $out.= ' . . . . ' . $count . (($count == 1) ? _(" match") : _(" matches"));
  -    if ($opts['context']>0) {
  +    if (!empty($opts['context']) and $opts['context']>0) {
         # search matching contexts
         $p = new WikiPage($page_name);
         if ($p->exists()) {
  
  
  
  1.38      +59 -46    moniwiki/plugin/Gallery.php
  
  Index: Gallery.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Gallery.php,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- Gallery.php	2 Feb 2009 13:51:44 -0000	1.37
  +++ Gallery.php	19 Apr 2010 11:26:46 -0000	1.38
  @@ -1,11 +1,11 @@
   <?php
  -// Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // Gallery plugin for the MoniWiki
   //
   // Usage: [[Gallery]]
   //
  -// $Id: Gallery.php,v 1.37 2009/02/02 13:51:44 wkpark Exp $
  +// $Id: Gallery.php,v 1.38 2010/04/19 11:26:46 wkpark Exp $
   
   function get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -62,11 +62,12 @@
     }
     $default_column=3;
     $default_row=4;
  -  $col=$options['col'] > 0 ? (int)$options['col']:0;
  -  $row=$options['row'] > 0 ? (int)$options['row']:0;
  -  $sort=$options['sort'] ? $options['sort']:'';
  -  $nocomment=$options['nocomment'] ? $options['nocomment']:'';
  +  $col=(!empty($options['col']) and $options['col'] > 0) ? (int)$options['col']:0;
  +  $row=(!empty($options['row']) and $options['row'] > 0) ? (int)$options['row']:0;
  +  $sort=!empty($options['sort']) ? $options['sort']:'';
  +  $nocomment=!empty($options['nocomment']) ? $options['nocomment']:'';
   
  +  $href_attr='';
     if (!empty($DBInfo->gallery_use_lightbox) and !empty($DBInfo->use_lightbox)) {
       $use_lightbox=1;
       if (is_string($DBInfo->gallery_use_lightbox))
  @@ -98,22 +99,24 @@
     }
   
     $img_default_width=150;
  +  $col_td_width = '';
     if ($col > 1) {
       $col_td_width=(int) (100/$col);
       $col_td_width=' width="'.$col_td_width.'%"';
       $img_default_width=(int) (100/$col)*5; // XXX assume 500px
     }
   
  -  $default_width=$DBInfo->gallery_img_width ? $DBInfo->gallery_img_width:600;
  +  $default_width=!empty($DBInfo->gallery_img_width) ? $DBInfo->gallery_img_width:600;
     $img_class="gallery-img";
   
     $col=($col<=0 or $col>10) ? $default_column:$col;
     $row=($row<=0 or $row>7) ? $default_row:$row;
     $perpage=$col*$row;
   
  +  $img_style = '';
     if ($col == 1) $img_style=' style="float:left"';
   
  -  if ($match[3])
  +  if (!empty($match[3]))
       # arg has a pagename
       $value=$match[3];
     else
  @@ -123,21 +126,26 @@
     if ($key != $value)
       $prefix=$formatter->link_url(_rawurlencode($value),"?action=download&amp;value=");
     $dir=$DBInfo->upload_dir."/$key";
  -  if (!$prefix) $prefix=$DBInfo->url_prefix."/".$dir."/";
  +  if (empty($prefix)) $prefix=$DBInfo->url_prefix."/".$dir."/";
   
     if (!file_exists($dir)) {
       umask(000);
       mkdir($dir,0777);
     }
   
  +  $top_link = '';
  +  $bot_link = '';
     $upfiles=array();
     $comments=array();
     if (file_exists($dir."/list.txt")) {
       $cache=file($dir."/list.txt");
       foreach ($cache as $line) {
  -      list($name,$mtime,$comment)=explode("\t",rtrim($line),3);
  -      $upfiles[$name]=$mtime;
  -      $comments[$name]=$comment;
  +      #list($name,$mtime,$comment)=explode("\t",rtrim($line),3);
  +      $tmp=explode("\t",rtrim($line),3);
  +      $name = $tmp[0];
  +      $upfiles[$name]=$tmp[1];
  +      if (isset($tmp[2]))
  +        $comments[$name]=$tmp[2];
       }
     }
     if ($sort) {
  @@ -149,10 +157,10 @@
     }
     else asort($upfiles);
   
  -  if ($options['value'])
  +  if (!empty($options['value']))
       $file=urldecode($options['value']);
   
  -  if ($file and $upfiles[$file] and $options['comments']) {
  +  if (!empty($file) and !empty($upfiles[$file]) and !empty($options['comments'])) {
       // admin: edit all comments
       $comment=_stripslashes($options['comments']);
       $comment=str_replace("<","&lt;",$comment);
  @@ -161,7 +169,7 @@
       $comment=str_replace("\n","\\n",$comment);
       $comments[$file]=$comment;
       $update=1;
  -  } else if ($file and $upfiles[$file] and $options['comment']) {
  +  } else if (!empty($file) and !empty($upfiles[$file]) and !empty($options['comment'])) {
       // add new comment
       $comment=$text=_stripslashes($options['comment']);
   
  @@ -186,10 +194,10 @@
         $comments[$file]=$comment."\t".$comments[$file];
         $update=1;
       }
  -  } else if ($file and $upfiles[$file]) {
  +  } else if (!empty($file) and !empty($upfiles[$file])) {
       // show comments of the selected item
       $mtime=$upfiles[$file];
  -    $comment=$comments[$file];
  +    $comment=!empty($comments[$file]) ? $comments[$file] : '';
   
       $values=array_keys($upfiles);
       $prev_value=$values[array_search($file,$values)-1];
  @@ -202,25 +210,25 @@
       $comments[$file]=$comment;
       $selected=1;
       $img_class="gallery-sel";
  -    if ($prev_value) {
  +    if (!empty($prev_value)) {
         $prev_link="<div class='gallery-prev-link'><a href='".$formatter->link_url($formatter->page->urlname,"?action=gallery&amp;value=$prev_value")."'><span class='gallery-prev-text'>&#171;Prev</span></a></div>";
       } else
         $prev_link='';
  -    if ($next_value) {
  +    if (!empty($next_value)) {
         $next_link="<div class='gallery-next-link'><a href='".$formatter->link_url($formatter->page->urlname,"?action=gallery&amp;value=$next_value")."'><span class='gallery-next-text'>Next&#187;</span></a></div>";
       } else
         $next_link='';
  -    if ($next_link or $prev_link) {
  +    if (!empty($next_link) or !empty($prev_link)) {
         $top_link="<div class='gallery-top-link'>$prev_link$next_link</div>";
         $bot_link="<div class='gallery-bottom-link'>$prev_link$next_link</div>";
       }
     }
  -  $width=$selected ? $default_width:$img_default_width;
  +  $width=!empty($selected) ? $default_width:$img_default_width;
   
  -  $thumb_width=$DBInfo->thumb_width ? $DBInfo->thumb_width:'250';
  +  $thumb_width=!empty($DBInfo->thumb_width) ? $DBInfo->thumb_width:'250';
   
     $mtime=file_exists($dir."/list.txt") ? filemtime($dir."/list.txt"):0;
  -  if ((filemtime($dir) > $mtime) or $update) {
  +  if ((filemtime($dir) > $mtime) or !empty($update)) {
       unset($upfiles);
   
       $handle= opendir($dir);
  @@ -231,7 +239,7 @@
         $mtime=filemtime($dir."/".$file);
         $cache.=$cr.$file."\t".$mtime;
         $upfiles[$file]= $mtime;
  -      if ($comments[$file] != '') $cache.="\t".$comments[$file];
  +      if (!empty($comments[$file])) $cache.="\t".$comments[$file];
         $cr="\n";
       }
       closedir($handle);
  @@ -242,16 +250,15 @@
       }
     }
   
  -  if (!$upfiles) return "<h3>"._("No files found")."</h3>\n";
  -
  -  $out.="<table width='100%' border='0' cellpadding='2'>\n<tr>\n";
  +  if (empty($upfiles)) return "<h3>"._("No files found")."</h3>\n";
  +  $out="<table width='100%' border='0' cellpadding='2'>\n<tr>\n";
     $idx=1;
   
     $pages= intval(sizeof($upfiles) / $perpage);
     if (sizeof($upfiles) % $perpage)
       $pages++;
   
  -  if ($options['p'] > 1) {
  +  if (!empty($options['p']) and $options['p'] > 1) {
       $slice_index=$perpage*(intval($options['p'] - 1));
       $upfiles=array_slice($upfiles,$slice_index);
     }
  @@ -259,10 +266,11 @@
     $extra=$sort ? "&amp;sort=".$sort:'';
     $extra.=$nocomment ? "&amp;nocomment=1":'';
   
  +  $pnut = '';
     if ($pages > 1)
       $pnut=get_pagelist($formatter,$pages,
         '?action=gallery&amp;col='.$col.'&amp;row='.$row.$extra.
  -      '&amp;p=',$options['p'],$perpage);
  +      '&amp;p=',!empty($options['p']) ? $options['p'] : '',$perpage);
   
     if (!file_exists($dir."/thumbnails")) @mkdir($dir."/thumbnails",0777);
   
  @@ -271,10 +279,10 @@
       $id=rawurlencode($file);
       $linksrc=($key == $value) ? $prefix.$id:
         str_replace('value=','value='.$id,$prefix);
  -    $link=($selected or $use_lightbox) ? $linksrc:$formatter->link_url($formatter->page->urlname,"?action=gallery$extra&amp;value=$id");
  +    $link=(!empty($selected) or !empty($use_lightbox)) ? $linksrc:$formatter->link_url($formatter->page->urlname,"?action=gallery$extra&amp;value=$id");
       $date=date("Y-m-d",$mtime);
       if (preg_match("/\.(jpg|jpeg|gif|png)$/i",$file)) {
  -      if ($DBInfo->use_convert_thumbs and !file_exists($dir."/thumbnails/".$file)) {
  +      if (!empty($DBInfo->use_convert_thumbs) and !file_exists($dir."/thumbnails/".$file)) {
           if (function_exists('gd_info')) {
             $fname=$dir.'/'.$file;
             list($w, $h) = getimagesize($fname);
  @@ -302,7 +310,7 @@
             @pclose($fp);
           }
         }
  -      if (!$selected and file_exists($dir."/thumbnails/".$file)) {
  +      if (empty($selected) and file_exists($dir."/thumbnails/".$file)) {
           $thumb=($key == $value) ? $prefix.'thumbnails/'.$id:
             str_replace('value=','value=thumbnails/'.$id,$prefix);
           if ($thumb_width > $width) $mywidth=" width='".$width."' ";
  @@ -336,16 +344,18 @@
       $comment_btn='';
       $comment_btn=$nocomment ? '':_("add comment");
       $imginfo=(!$nocomment or $selected) ? "$date ($size) ":'';
  -    if ($comments[$file] != '' and $options['value']) {
  +    if (!empty($comments[$file]) and !empty($options['value'])) {
         $comment=$comments[$file];
         $comment=str_replace("\\n","\n",$comment);
         $options['comments']=str_replace("\t","\n----\n",$comment);
         $comment=str_replace("\t","<div class='separator'><hr /></div>",$comment);
         $comment=str_replace("\n","<br/>\n",$comment);
  -    } else if ((!$nocomment or $selected) and !empty($comments[$file])) {
  +    } else if ((empty($nocomment) or !empty($selected)) and !empty($comments[$file])) {
         if (empty($show_all)) {
           $comment_btn=_("show comments");
  -        list($comment,$dum)=explode("\t",$comments[$file],2);
  +        //list($comment,$dum)=explode("\t",$comments[$file],2);
  +        $tmp=explode("\t",$comments[$file],2);
  +        $comment = $tmp[0];
         } else {
           $comment_btn=_("add comment");
           $comment=str_replace("\t","<div class='separator'><hr /></div>\n",$comments[$file]);
  @@ -355,11 +365,11 @@
       endif;
   
       $out.="<td $col_td_width align='center' valign='top'>$top_link<div class='$img_class' $img_style><a href='$link'$href_attr>$object</a>";
  -    if ($imginfo) $out.="<br />".$imginfo;
  -    if ($comment_btn)
  +    if (!empty($imginfo)) $out.="<br />".$imginfo;
  +    if (!empty($comment_btn))
         $out.='['.$formatter->link_tag($formatter->page->urlname,"?action=gallery&amp;value=$id",$comment_btn)."]<br />\n";
       $out.='</div>'.$bot_link;
  -    if ($comment) $out.="<div class='gallery-comments' $comment_style>$comment</div>";
  +    if (!empty($comment)) $out.="<div class='gallery-comments'>$comment</div>";
   
       $out.="</td>\n";
       if ($idx % $col == 0) $out.="</tr>\n<tr>\n";
  @@ -377,12 +387,15 @@
   
   function do_gallery($formatter,$options='') {
     global $DBInfo;
  +  $COLS_MSIE= 80;
  +  $COLS_OTHER= 85;
  + 
     $cols = preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']) ? $COLS_MSIE : $COLS_OTHER;
                                                                                   
  -  $rows=$options['rows'] > 5 ? $options['rows']: 4;
  -  $cols=$options['cols'] > 60 ? $options['cols']: $cols;
  +  $rows=(!empty($options['rows']) and $options['rows'] > 5) ? $options['rows']: 4;
  +  $cols=(!empty($options['cols']) and $options['cols'] > 60) ? $options['cols']: $cols;
   
  -  if ($options['comments'] and !$DBInfo->security->is_valid_password($options['passwd'],$options)) {
  +  if (!empty($options['comments']) and !$DBInfo->security->is_valid_password($options['passwd'],$options)) {
       $title= sprintf('Invalid password !');
       $formatter->send_header("",$options);
       $formatter->send_title($title);
  @@ -392,10 +405,10 @@
   
     $ret=macro_Gallery($formatter,'',$options);
   
  -  if (isset($options['passwd']) and $options['comments']) {
  +  if (isset($options['passwd']) and !empty($options['comments'])) {
       $options['msg']=sprintf(_("Go back or return to %s"),$formatter->link_tag($formatter->page->urlname,"",$options['page']));
       $options['title']=_("Comments are edited");
  -  } else if ($options['comment']) {
  +  } else if (!empty($options['comment'])) {
       if (!$options['err']) {
         $options['msg']=sprintf(_("Go back or return to %s"),$formatter->link_tag($formatter->page->urlname,"",$options['page']));
         $options['title']=_("Comments is added");
  @@ -408,7 +421,7 @@
       $formatter->send_title("","",$options);
       print $ret;
     } else
  -  if ($options['comment'] or ($options['comments'] and $options['passwd'])) {
  +  if (!empty($options['comment']) or (!empty($options['comments']) and !empty($options['passwd']))) {
       $myrefresh='';
       if (!$options['err'] and $DBInfo->use_save_refresh) {
         $sec=$DBInfo->use_save_refresh;
  @@ -419,7 +432,7 @@
       $formatter->send_title("","",$options);
       #$formatter->send_page('',$options);
     } else
  -  if ($options['comments'] and $options['admin'] and !$options['passwd']) {
  +  if (!empty($options['comments']) and !empty($options['admin']) and empty($options['passwd'])) {
       // admin form
       $rows+=5;
       $formatter->send_header("",$options);
  @@ -442,7 +455,7 @@
   </form>
   FORM2;
       print $form;
  -  } else if (!$options['comment']) {
  +  } else if (empty($options['comment'])) {
       // add comment form
       $formatter->send_header("",$options);
       $formatter->send_title("","",$options);
  
  
  
  1.12      +10 -9     moniwiki/plugin/ISBN.php
  
  Index: ISBN.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/ISBN.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- ISBN.php	1 Jan 2009 15:03:24 -0000	1.11
  +++ ISBN.php	19 Apr 2010 11:26:46 -0000	1.12
  @@ -1,9 +1,9 @@
   <?php
  -// Copyright 2003-2006 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a ISBN macro plugin for the MoniWiki
   //
  -// $Id: ISBN.php,v 1.11 2009/01/01 15:03:24 wkpark Exp $
  +// $Id: ISBN.php,v 1.12 2010/04/19 11:26:46 wkpark Exp $
   
   function macro_ISBN($formatter,$value="") {
     global $DBInfo;
  @@ -14,7 +14,7 @@
     $ISBN_MAP="IsbnMap";
     $DEFAULT=<<<EOS
   Amazon http://www.amazon.com/exec/obidos/ISBN= http://images.amazon.com/images/P/\$ISBN.01.MZZZZZZZ.gif
  -Aladdin http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN= http://image.aladdin.co.kr/cover/cover/\$ISBN_1.gif @/cover/([^\s_/]+_\d\..{3,4})\s@\\\$ISBN_1\.gif
  +Aladdin http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN= http://image.aladdin.co.kr/cover/cover/\$ISBN_1.gif @/cover/([^\s_/]+\$ISBN_\d\..{3,4})\s@\\\$ISBN_1\.gif
   Gang http://kangcom.com/common/qsearch/search.asp?s_flag=T&s_text= http://kangcom.com/l_pic/\$ISBN.jpg @bookinfo\.asp\?sku=(\d+)"@\n
   EOS;
   
  @@ -93,7 +93,7 @@
         $lang_code=substr($isbn,3,2); // 978 89
       else
         $lang_code=substr($isbn,0,2); // 89
  -    if ($default_map[$lang_code])
  +    if (!empty($default_map[$lang_code]))
         $lang=$default_map[$lang_code];
       else
         $lang=$DEFAULT_ISBN;
  @@ -145,7 +145,7 @@
        $md5sum=md5($booklink);
        // check cache
        $bcache=new Cache_text('isbn');
  -     if (!$formatter->refresh and $bcache->exists($md5sum)) {
  +     if (empty($formatter->refresh) and $bcache->exists($md5sum)) {
           $imgname=trim($bcache->fetch($md5sum));
   
           if ($imgrepl)
  @@ -160,12 +160,13 @@
              while(!feof($fd)) {
                 $line=fgets($fd,1024);
                 preg_match($imgre,$line,$match);
  -              if ($match[1]) {
  +              if (!empty($match[1])) {
                    $bcache->update($md5sum,$match[1]);
                    if ($imgrepl)
                       $imglink=preg_replace('@'.$imgrepl.'@',$match[1], $imglink);
                    else
                       $imglink=str_replace('$ISBN', $match[1], $imglink);
  +                 $imglink = preg_replace('/[\'"]$/','', $imglink);
                    $fetch_ok=1;
                    break;
                 }
  @@ -173,7 +174,7 @@
              fclose($fd);
           }
        }
  -     if ($fetch_ok and $DBInfo->isbn_img_download) {
  +     if (!empty($fetch_ok) and !empty($DBInfo->isbn_img_download)) {
           # some sites such as the IMDB check the referer and
           # do not permit to show any of its images
           # the $isbn_img_download option is needed to show such images
  @@ -210,7 +211,7 @@
        }
     }
   
  -  if (!$fetch_ok) {
  +  if (empty($fetch_ok)) {
        if (strpos($imglink, '$ISBN') === false)
           $imglink.=$isbn;
        else {
  @@ -223,7 +224,7 @@
        }
     }
   
  -  if ($noimg) {
  +  if (!empty($noimg)) {
       $icon=$DBInfo->imgs_dir_interwiki.strtolower($lang).'-16.png';
       $sx=16;$sy=16;
       if ($DBInfo->intericon[$lang]) {
  
  
  
  1.2       +5 -3      moniwiki/plugin/InputForm.php
  
  Index: InputForm.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/InputForm.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- InputForm.php	29 Nov 2007 17:14:01 -0000	1.1
  +++ InputForm.php	19 Apr 2010 11:26:46 -0000	1.2
  @@ -1,11 +1,11 @@
   <?php
  -// Copyright 2006 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2006-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a sample plugin for the MoniWiki
   //
   // Usage: [[Test]]
   //
  -// $Id: InputForm.php,v 1.1 2007/11/29 17:14:01 wkpark Exp $
  +// $Id: InputForm.php,v 1.2 2010/04/19 11:26:46 wkpark Exp $
   
   function macro_InputForm($formatter,$value,$options=array()) {
       $out='';
  @@ -22,7 +22,9 @@
       $myname=$name;
       switch($type) {
       case 'form':
  -        list($method,$action,$dum)=explode(':',$value);
  +        #list($method,$action,$dum)=explode(':',$value);
  +        $tmp = explode(':',$value);
  +        $method = $tmp[0]; $action = $tmp[1];
           $method= in_array(strtolower($method),array('post','get')) ? $method:'get';
           $url=$formatter->link_url($formatter->page->urlname);
           $out="<form method='$method' action='$url'>\n".
  
  
  
  1.2       +5 -4      moniwiki/plugin/JME.php
  
  Index: JME.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/JME.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- JME.php	27 Dec 2008 03:29:14 -0000	1.1
  +++ JME.php	19 Apr 2010 11:26:46 -0000	1.2
  @@ -1,5 +1,5 @@
   <?php
  -// Copyright 2006-2008 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2006-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a JME plugin for the MoniWiki
   //
  @@ -8,11 +8,11 @@
   // Name: a JME molecular editor plugin
   // Description: a JME molecular editor plugin.
   // URL: MoniWiki:JMEProcessor
  -// Version: $Revision: 1.1 $
  +// Version: $Revision: 1.2 $
   // License: GPL
   // Usage: [[JME(molname)]]
   //
  -// $Id: JME.php,v 1.1 2008/12/27 03:29:14 wkpark Exp $
  +// $Id: JME.php,v 1.2 2010/04/19 11:26:46 wkpark Exp $
   
   function _mol2gau($mol) {
       $line=explode("\n",$mol);
  @@ -68,6 +68,7 @@
   
       $fp=fopen($draw_dir.'/'.$molname,'r');
       if ($fp) {
  +        $mol = '';
           while(!feof($fp)) $mol.=fgets($fp,2048);
           fclose($fp);
           $mol=str_replace("\r\n","|\n",$mol);
  @@ -88,8 +89,8 @@
       $draw_dir=str_replace("./",'',$DBInfo->upload_dir.'/JME');
       $pagename=$options['page'];
   
  -    $name=$options['value'] ? $options['value']:$options['name'];
  -    if (!$name) $name=time();
  +    !empty($options['value']) ? $name = $options['value']: !empty($options['name']) ? $name = $options['name'] : null;
  +    if (empty($name)) $name=time();
   
       if ($_SERVER['REQUEST_METHOD']=='POST' and $options['mol']) {
           $dummy=explode('/',$name);
  
  
  
  1.34      +27 -23    moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- Keywords.php	5 Oct 2009 16:53:06 -0000	1.33
  +++ Keywords.php	19 Apr 2010 11:26:46 -0000	1.34
  @@ -1,5 +1,5 @@
   <?php
  -// Copyright 2005-2008 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2005-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a 'Keywords' plugin for the MoniWiki
   //
  @@ -8,12 +8,12 @@
   // Name: a Keywords Plugin
   // Description: a Keywords plugin to generate keywords of a page
   // URL: MoniWiki:KeywordsPlugin
  -// Version: $Revision: 1.33 $
  +// Version: $Revision: 1.34 $
   // License: GPL
   //
   // Usage: [[Keywords(options)]]
   //
  -// $Id: Keywords.php,v 1.33 2009/10/05 16:53:06 wkpark Exp $
  +// $Id: Keywords.php,v 1.34 2010/04/19 11:26:46 wkpark Exp $
   
   define('LOCAL_KEYWORDS','LocalKeywords');
   
  @@ -25,6 +25,7 @@
   
       $limit=isset($options['limit']) ? $options['limit']:40;
       $opts=explode(',',$value);
  +    $sort = '';
       foreach ($opts as $opt) {
           $opt=trim($opt);
           if ($opt == 'delicious' or $opt == 'del.icio.us')
  @@ -67,7 +68,7 @@
       if (isset($options['random']) and empty($limit)) $limit=0;
       if (isset($options['sort']) and $options['sort']=='freq') $sort= 'freq';
   
  -    if (!$pagename) $pagename=$formatter->page->name;
  +    if (empty($pagename)) $pagename=$formatter->page->name;
   
       # get cached keywords
       $cache=new Cache_text('keyword');
  @@ -118,7 +119,7 @@
           arsort($words);
           $max=current($words); // get max hit number
   
  -        if ($options['random']) {
  +        if (!empty($options['random'])) {
               $rws=array();
               $selected=array_rand($words,min($options['random'],count($words)));
               foreach($selected as $k) {
  @@ -328,18 +329,18 @@
       }
       endif;
   
  -    if ($sort!='freq') ksort($words);
  +    if (empty($sort) or $sort!='freq') ksort($words);
   
       $link=$formatter->link_url(_rawurlencode($pagename),'');
       if (!isset($tag_link)) {
  -        if (!$search) $search='fullsearch&amp;keywords=1';
  -        if ($options['tour'])
  +        if (empty($search)) $search='fullsearch&amp;keywords=1';
  +        if (!empty($options['tour']))
               $search='tour&amp;arena=keylinks';
           $tag_link=$formatter->link_url(_rawurlencode($pagename),
               '?action='.$search.'&amp;value=$TAG');
       }
       $out='';
  -    if ($options['add']) {
  +    if (!empty($options['add'])) {
           $out="<form method='post' action='$link'>\n";
           $out.="<input type='hidden' name='action' value='keywords' />\n";
       }
  @@ -397,6 +398,7 @@
   SWF;
       }
       $out.='<ul>';
  +    $checkbox = '';
       foreach ($words as $key=>$val) {
           $style=$sty[$fz-1];
           for ($i=0;$i<$fz;$i++) {
  @@ -408,11 +410,11 @@
           if ($val > $min) {
               $checked='';
               if ($val >= $max) {$checked='checked="checked"'; $ok=1;}
  -            if ($options['add'])
  +            if (!empty($options['add']))
                   $checkbox="<input type='checkbox' $checked name='key[]' ".
                       "value='$key' />";
               $out.=" <li class=\"tag-item\"";
  -            if ($use_sty) {
  +            if (!empty($use_sty)) {
                   $out.=" $style title=\"$val "._("hits").'"';
               }
               $out.=">$checkbox"."<a href='".str_replace('$TAG',$key,$tag_link).
  @@ -420,7 +422,9 @@
           }
       }
   
  -    if ($options['add']) {
  +    $inp = '';
  +    $form_close = '';
  +    if (!empty($options['add'])) {
           $msg=_("add keywords");
           $inp="<li><input type='text' name='keywords' size='12' />: $msg</li>";
           if ($ok)
  @@ -463,7 +467,7 @@
           return;
       }
   
  -    if ($options['update'] or $options['refresh']) {
  +    if (!empty($options['update']) or !empty($options['refresh'])) {
           $lk=$DBInfo->getPage(LOCAL_KEYWORDS);
           $force_charset='';
           if ($DBInfo->force_charset)
  @@ -530,9 +534,9 @@
   
       $formatter->send_header('',$options);
   
  -    if (!$options['suggest'] and
  -        (is_array($options['key']) or $options['keywords'])) {
  -        if ($options['keywords']) {
  +    if (empty($options['suggest']) and
  +        (is_array($options['key']) or !empty($options['keywords']))) {
  +        if (!empty($options['keywords'])) {
               // following keyword list are acceptable separated with spaces.
               // Chemistry "Physical Chemistry" "Bio Chemistry" ...
               $keywords=_stripslashes($options['keywords']);
  @@ -552,7 +556,7 @@
               $options['key']=array_merge($options['key'],$ws);
           }
   
  -        if ($options['common']) {
  +        if (!empty($options['common'])) {
               $raw="#format plain"; 
               $lang=$formatter->pi['#language'] ? $formatter->pi['#language']:'';
               $lang=$options['lang'] ? $options['lang']:$lang;
  @@ -624,7 +628,7 @@
               }
               $body=rtrim($body);
           }
  -        if ($options['key']) {
  +        if (!empty($options['key'])) {
               // XXX
               $ks= array_map(create_function('$a',
                   'return (strpos($a," ") !== false) ? "\"$a\"":$a;'),
  @@ -642,11 +646,11 @@
           }
           $ret=substr($ret,0,strlen($ret)-1);
           print "<tt>#keywords $ret</tt>\n";
  -        if ($DBInfo->use_keywords or $options['update']) {
  +        if (!empty($DBInfo->use_keywords) or !empty($options['update'])) {
               # auto update the page with selected keywords.
               $body=$formatter->page->get_raw_body();
               $pi=$formatter->get_instructions($dum);
  -            if ($pi['#keywords']) {
  +            if (!empty($pi['#keywords'])) {
                   $tag=preg_quote($pi['#keywords']);
                   $nbody= preg_replace('/^#keywords\s+'.$tag.'/',
                       '#keywords '.$ret,$body,1);
  @@ -655,7 +659,7 @@
                   $nbody='#keywords '.$ret."\n".$body;
                   $ok=2;
               }
  -            if ($ok) {
  +            if (!empty($ok)) {
                   if ($ok==1) $comment="Keywords are updated";
                   else $comment="Keywords are added";
                   $formatter->page->write($nbody);
  @@ -688,8 +692,8 @@
           return;
       }
   
  -    if ($options['all'] or $options['tour']) {
  -        if ($options['sort']=='freq') $sort= 'freq';
  +    if (!empty($options['all']) or !empty($options['tour'])) {
  +        if (!empty($optiopns['sort']) and $options['sort']=='freq') $sort= 'freq';
           $formatter->send_title('','', $options);
           $myq='?'.$_SERVER['QUERY_STRING'];
           $myq=preg_replace('/&sort=[^&]+/i','',$myq);
  
  
  
  1.8       +23 -14    moniwiki/plugin/LikePages.php
  
  Index: LikePages.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/LikePages.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- LikePages.php	10 Jan 2006 10:35:28 -0000	1.7
  +++ LikePages.php	19 Apr 2010 11:26:46 -0000	1.8
  @@ -1,14 +1,14 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a LikePages plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: LikePages.php,v 1.7 2006/01/10 10:35:28 wkpark Exp $
  +// $Id: LikePages.php,v 1.8 2010/04/19 11:26:46 wkpark Exp $
   
   function do_LikePages($formatter,$options) {
   
  -  $opts['metawiki']=$options['metawiki'];
  +  $opts['metawiki']=!empty($options['metawiki']) ? $options['metawiki'] : '';
     $out= macro_LikePages($formatter,$options['page'],$opts);
     
     $title = $opts['msg'];
  @@ -25,12 +25,13 @@
   
     $pname=_preg_escape($args);
   
  -  $metawiki=$opts['metawiki'];
  +  $metawiki=!empty($opts['metawiki']) ? $opts['metawiki'] : '';
   
     if (strlen($pname) < 3) {
       $opts['msg'] = _("Use more specific text");
       return '';
     }
  +  $opts['extra'] = '';
   
     $s_re="^[A-Z][a-z0-9]+";
     $e_re="[A-Z][a-z0-9]+$";
  @@ -46,16 +47,16 @@
       $e_len=strlen($end);
     }
   
  -  if (!$start && !$end) {
  +  if (empty($start) && empty($end)) {
       preg_match("/^(.{2,4})/",$args,$match);
       $s_len=strlen($match[1]);
       $start=trim(_preg_escape($match[1]));
     }
   
  -  if (!$end) {
  +  if (empty($end)) {
       $end=substr($args,$s_len);
       preg_match("/(.{2,6})$/",$end,$match);
  -    $end=$match[1];
  +    $end=isset($match[1]) ? $match[1] : '';
       $e_len=strlen($end);
       if ($e_len < 2) $end="";
       else $end=_preg_escape($end);
  @@ -65,9 +66,14 @@
     $ends=array();
     $likes=array();
   
  -  if (!$metawiki) {
  +  if (empty($metawiki)) {
       $pages = $DBInfo->getPageLists();
     } else {
  +    if (empty($DBInfo->metadb)) $DBInfo->initMetaDB();
  +    if (empty($DBInfo->metadb)) {
  +      $opts['msg'] = _("No metadb found");
  +      return '';
  +    }
       if (!$end) $needle=$start;
       else $needle="$start|$end";
       $pages = $DBInfo->metadb->getLikePages($needle);
  @@ -95,7 +101,7 @@
   
       foreach ($pages as $page) {
         preg_match("/($similar_re)/i",$page,$matches);
  -      if ($matches && !$starts[$page] && !$ends[$page])
  +      if ($matches && empty($starts[$page]) && empty($ends[$page]))
           $likes[$page]=1;
       }
     }
  @@ -140,21 +146,24 @@
         $idx++;
       }
       $out.="</ol>\n</td></tr></table>\n";
  -    $opts['extra']=_("If you can't find this page, ");
       $hits+=count($starts) + count($ends);
     }
   
  -  if (!$hits) {
  +  if (empty($hits)) {
       $out.="<h3>"._("No similar pages found")."</h3>";
  -    if (!$metawiki)
  -      $opts['extra']=_("You are strongly recommened to find it in MetaWikis. ");
     }
   
     $opts['msg'] = sprintf(_("Like \"%s\""),$args);
   
  -  if (!$metawiki) {
  +  while (empty($metawiki)) {
  +    if (empty($DBInfo->metadb)) $DBInfo->initMetaDB();
  +    if (empty($DBInfo->metadb)) break;
  +    $opts['extra']=_("If you can't find this page, ");
  +    if (empty($hits) and empty($metawiki) and !empty($DBInfo->metadb))
  +      $opts['extra']=_("You are strongly recommened to find it in MetaWikis. ");
       $tag=$formatter->link_to("?action=LikePages&amp;metawiki=1",_("Search all MetaWikis"));
       $opts['extra'].="$tag ("._("Slow Slow").")<br />";
  +    break;
     }
   
     return $out;
  
  
  
  1.16      +3 -3      moniwiki/plugin/Navigation.php
  
  Index: Navigation.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Navigation.php,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- Navigation.php	17 Apr 2010 12:07:26 -0000	1.15
  +++ Navigation.php	19 Apr 2010 11:26:46 -0000	1.16
  @@ -1,11 +1,11 @@
   <?php
  -// Copyright 2004 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2004-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a Navigation plugin for the MoniWiki
   //
   // Usage: [[Navigation(IndexPage)]]
   //
  -// $Id: Navigation.php,v 1.15 2010/04/17 12:07:26 wkpark Exp $
  +// $Id: Navigation.php,v 1.16 2010/04/19 11:26:46 wkpark Exp $
   
   function macro_Navigation($formatter,$value) {
     global $DBInfo;
  @@ -78,7 +78,7 @@
   
     if ($count > 1) {
       if ($use_action) {
  -      $save=$formatter->query_string;
  +      $save=!empty($formatter->query_string) ? $formatter->query_string : '';
         $query='?action=navigation&amp;value='.$value;
         $formatter->query_string=$query;
       }
  
  
  
  1.11      +9 -7      moniwiki/plugin/Play.php
  
  Index: Play.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Play.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- Play.php	4 Jun 2009 09:44:09 -0000	1.10
  +++ Play.php	19 Apr 2010 11:26:46 -0000	1.11
  @@ -1,5 +1,5 @@
   <?php
  -// Copyright 2004-2007 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2004-2010 by Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a media Play macro plugin for the MoniWiki
   //
  @@ -8,12 +8,12 @@
   // Name: Play macro
   // Description: media Player Plugin
   // URL: MoniWikiDev:PlayMacro
  -// Version: $Revision: 1.10 $
  +// Version: $Revision: 1.11 $
   // License: GPL
   //
   // Usage: [[Play(http://blah.net/blah.mp3)]]
   //
  -// $Id: Play.php,v 1.10 2009/06/04 09:44:09 wkpark Exp $
  +// $Id: Play.php,v 1.11 2010/04/19 11:26:46 wkpark Exp $
   
   function macro_Play($formatter,$value) {
     global $DBInfo;
  @@ -48,14 +48,14 @@
       $media[]=$match[1];
     }
     # set embeded object size
  -  $width=$width ? min($width,$max_width):$default_width;
  -  $height=$height ? min($height,$max_height):$default_height;
  +  $width=!empty($width) ? min($width,$max_width):$default_width;
  +  $height=!empty($height) ? min($height,$max_height):$default_height;
   
     $url=array();
     $my_check=1;
     for ($i=0,$sz=count($media);$i<$sz;$i++) {
       if (!preg_match("/^(http|ftp|mms|rtsp):\/\//",$media[$i])) {
  -      $fname=$formatter->macro_repl('Attachment',$media[$i],1);
  +      $fname=$formatter->macro_repl('Attachment',$media[$i],array('link'=>1));
         if ($my_check and !file_exists($fname)) {
           return $formatter->macro_repl('Attachment',$value);
         }
  @@ -92,7 +92,8 @@
         $height=20; // override the hegiht of the JW MediaPlayer
       }
   
  -    $swfobject_num=$GLOBALS['swfobject_num'] ? $GLOBALS['swfobject_num']:0;
  +    $swfobject_num = !empty($GLOBALS['swfobject_num']) ? $GLOBALS['swfobject_num']:0;
  +    $swfobject_script = '';
       if (!$swfobject_num) {
         $swfobject_script="<script type=\"text/javascript\" src=\"$DBInfo->url_prefix/local/js/swfobject.js\"></script>\n";
         $num=1;
  @@ -107,6 +108,7 @@
         $_swf_prefix=$DBInfo->jwmediaplayer_prefix;
       }
   
  +    $addparam = '';
       if ($sz > 1) {
         $md5sum=md5(implode(':',$media));
         if ($DBInfo->cache_public_dir) {
  
  
  
  1.6       +9 -7      moniwiki/plugin/RandomBanner.php
  
  Index: RandomBanner.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RandomBanner.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- RandomBanner.php	28 Apr 2006 12:16:01 -0000	1.5
  +++ RandomBanner.php	19 Apr 2010 11:26:46 -0000	1.6
  @@ -1,19 +1,21 @@
   <?php
  -// Copyright 2003-2006 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a RandomBanner macro plugin for the MoniWiki
   //
   // Usage: [[RandomBanner(PageName,number)]]
   //
  -// $Id: RandomBanner.php,v 1.5 2006/04/28 12:16:01 wkpark Exp $
  +// $Id: RandomBanner.php,v 1.6 2010/04/19 11:26:46 wkpark Exp $
   // vim:et:ts=2:
   
   function macro_RandomBanner($formatter,$value="") {
     global $DBInfo;
   
     $test=preg_match("/^([^ ,0-9]*)\s*,?\s*(\d+)?$/",$value,$match);
  -  if ($test) 
  -    $pagename=$match[1];$number=$match[2];
  +  if ($test) {
  +    $pagename=!empty($match[1]) ? $match[1] : '';
  +    $number=!empty($match[2]) ? $match[2] : '';
  +  }
   
     if (!$pagename) $pagename='RandomBanner';
     if (!$number) $number=3;
  @@ -29,9 +31,9 @@
     foreach ($lines as $line) {
       if (substr($line,0,10)!= ' * http://') continue;
       $dummy=explode(" ",substr($line,3),3);
  -    $text=$dummy[1];
  -    $title=$dummy[2];
  -    if (preg_match(",^(http|ftp|attachment):.*\.(gif|png|jpg|jpeg)$,",$text,$match)) {
  +    $text=!empty($dummy[1]) ? $dummy[1] : '';
  +    $title=!empty($dummy[2]) ? $dummy[2] : '';
  +    if (!empty($text) and preg_match(",^(http|ftp|attachment):.*\.(gif|png|jpg|jpeg)$,",$text,$match)) {
         if ($match[1]=='attachment') {
           $fname=$pagename.'/'.substr($text,11);
           $ntext=$formatter->macro_repl('Attachment',$fname,1);
  
  
  
  1.38      +4 -4      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- RecentChanges.php	17 Apr 2010 09:20:24 -0000	1.37
  +++ RecentChanges.php	19 Apr 2010 11:26:46 -0000	1.38
  @@ -1,9 +1,9 @@
   <?php
  -// Copyright 2003-2009 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.37 2010/04/17 09:20:24 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.38 2010/04/19 11:26:46 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     global $DBInfo;
  @@ -147,8 +147,8 @@
     $user=&$DBInfo->user; # retrive user info
   
     if ($user->id != 'Anonymous') {
  -    $bookmark= $user->info['bookmark'];
  -    $tz_offset= $user->info['tz_offset'];
  +    $bookmark= !empty($user->info['bookmark']) ? $user->info['bookmark'] : '';
  +    $tz_offset= !empty($user->info['tz_offset']) ? $user->info['tz_offset'] : '';
     } else {
       $bookmark= $user->bookmark;
     }
  
  
  
  1.19      +13 -11    moniwiki/plugin/SWFUpload.php
  
  Index: SWFUpload.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SWFUpload.php,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- SWFUpload.php	19 Aug 2009 05:29:38 -0000	1.18
  +++ SWFUpload.php	19 Apr 2010 11:26:46 -0000	1.19
  @@ -1,5 +1,5 @@
   <?php
  -// Copyright 2006-2008 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2006-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // SWFUpload plugin for the MoniWiki
   //
  @@ -8,24 +8,24 @@
   // Name: SWF Upload
   // Description: SWF Upload Plugin
   // URL: http://labb.dev.mammon.se/swfupload/ MoniWikiDev:SWFUpload
  -// Version: $Revision: 1.18 $
  +// Version: $Revision: 1.19 $
   // License: GPL
   //
   // Usage: [[SWFUpload]]
   //
  -// $Id: SWFUpload.php,v 1.18 2009/08/19 05:29:38 wkpark Exp $
  +// $Id: SWFUpload.php,v 1.19 2010/04/19 11:26:46 wkpark Exp $
   
   function macro_SWFUpload($formatter,$value,$opts=array()) {
       global $DBInfo;
   
       $swf_ver = 10;
  -    if ($DBInfo->swfupload_depth > 2) {
  +    if (!empty($DBInfo->swfupload_depth) and $DBInfo->swfupload_depth > 2) {
           $depth=$DBInfo->swfupload_depth;
       } else {
           $depth=2;
       }
   
  -    if ($DBInfo->nosession) { // ip based
  +    if (!empty($DBInfo->nosession)) { // ip based
           $myid=md5($_SERVER['REMOTE_ADDR'].'.'.'MONIWIKI'); // FIXME
       } else {
           if ($_SESSION['_swfupload'])
  @@ -40,26 +40,27 @@
       $mysubdir=$prefix.'/'.$myid.'/';
       $myoptions="<input type='hidden' name='mysubdir' value='$mysubdir' />";
   
  -    if ($DBInfo->use_lightbox) {
  +    if (!empty($DBInfo->use_lightbox)) {
           $myoptions.="\n<input type='hidden' name='use_lightbox' value='1' />";
       } else {
           $myoptions.="\n<input type='hidden' name='use_lightbox' value='0' />";
       }
   
  -    if ($formatter->preview) {
  +    $jsPreview = '';
  +    if (!empty($formatter->preview)) {
           $js_tag=1;$jsPreview=' class="previewTag"';
           $uploader='UploadForm';
  -    } else if ($options['preview']) {
  +    } else if (!empty($options['preview'])) {
           $jsPreview=' class="previewTag"';
       }
   
       $default_allowed='*.gif;*.jpg;*.png;*.psd';
       $allowed=$default_allowed;
  -    if ($DBInfo->pds_allowed) {
  +    if (!empty($DBInfo->pds_allowed)) {
           $allowed='*.'.str_replace('|',';*.',$DBInfo->pds_allowed);
       }
   
  -    $swfupload_num=$GLOBALS['swfupload_num'] ? $GLOBALS['swfupload_num']:0;
  +    $swfupload_num=!empty($GLOBALS['swfupload_num']) ? $GLOBALS['swfupload_num']:0;
   
       // get already uploaded files list
       $uploaded='';
  @@ -106,7 +107,7 @@
   
       }
   
  -    if (!$swfupload_num) {
  +    if (empty($swfupload_num)) {
           if ($swf_ver == 9) {
               $formatter->register_javascripts(array(
                   'js/swfobject.js',
  @@ -142,6 +143,7 @@
       if ($mysubdir) $action2.='----'.$mysubdir;
       $action2=qualifiedUrl($action2);
       $myprefix=qualifiedUrl($DBInfo->url_prefix);
  +    $swfupload_script = '';
   
       if ($swf_ver == 9) {
           $swf_js=<<<EOF
  
  
  
  1.36      +3 -3      moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- UploadedFiles.php	17 Apr 2010 12:07:26 -0000	1.35
  +++ UploadedFiles.php	19 Apr 2010 11:26:46 -0000	1.36
  @@ -1,9 +1,9 @@
   <?php
  -// Copyright 2003-2006 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadedFiles plugin for the MoniWiki
   //
  -// $Id: UploadedFiles.php,v 1.35 2010/04/17 12:07:26 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.36 2010/04/19 11:26:46 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     if (!empty($options['q'])) {
  @@ -355,7 +355,7 @@
      else if ($p > 1)
         $plink=$formatter->link_tag('',"?action=uploadedfiles$extra",_("&laquo; First page"),$attr);
   
  -   if (!$prefix) $prefix=str_replace($DBInfo->upload_dir, $DBInfo->upload_dir_url,$dir).'/';
  +   if (empty($prefix)) $prefix=str_replace($DBInfo->upload_dir, $DBInfo->upload_dir_url,$dir).'/';
   
      $unit=array('Bytes','KB','MB','GB','TB');
   
  
  
  
  1.9       +5 -5      moniwiki/plugin/Vote.php
  
  Index: Vote.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Vote.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Vote.php	24 Aug 2004 17:34:44 -0000	1.8
  +++ Vote.php	19 Apr 2010 11:26:46 -0000	1.9
  @@ -1,12 +1,12 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a Vote plugin for the MoniWiki
   // vim:et:ts=2:
   //
   // Usage: [[Vote(Hello 10, World 20,Wow 1)]]
   //
  -// $Id: Vote.php,v 1.8 2004/08/24 17:34:44 wkpark Exp $
  +// $Id: Vote.php,v 1.9 2010/04/19 11:26:46 wkpark Exp $
   
   function macro_Vote($formatter,$value) {
     global $DBInfo;
  @@ -32,7 +32,7 @@
     $cat_bar="<img src='$imgdir/vote/$iconset/rightbar.gif'>";
   
     $out='';
  -  if (!$vote_off)
  +  if (empty($vote_off))
       $out.="<form method='post'>
   <input type='hidden' name='ticket' value='$md5' />
   <input type='hidden' name='action' value='vote' />";
  @@ -47,12 +47,12 @@
       $md5=md5($item);
       $out.="<tr><td>$item </td><td nowrap='nowrap'>$bar</td><td>".
            sprintf("%3d (%3.2f %%)",$count,$ratio);
  -    if (!$vote_off)
  +    if (empty($vote_off))
         $out.="<input type='radio' name='vote' value='$md5' />";
       $out.="</td></tr>\n";
     }
     $out.="<tr><td colspan='2' align='right'><b>Total votes</b></td><td align='center'>$total";
  -  if (!$vote_off)
  +  if (empty($vote_off))
       $out.="<input type='submit' value='Vote' /></td></tr>\n</table></form>\n";
     else
       $out.="</td></tr>\n</table>\n";
  
  
  
  1.8       +5 -5      moniwiki/plugin/WordIndex.php
  
  Index: WordIndex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/WordIndex.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- WordIndex.php	18 Jul 2006 15:10:27 -0000	1.7
  +++ WordIndex.php	19 Apr 2010 11:26:46 -0000	1.8
  @@ -1,11 +1,11 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a WordIndex plugin for the MoniWiki
   //
   // Usage: [[WordIndex]]
   //
  -// $Id: WordIndex.php,v 1.7 2006/07/18 15:10:27 wkpark Exp $
  +// $Id: WordIndex.php,v 1.8 2010/04/19 11:26:46 wkpark Exp $
   // vim:et:ts=2:
   
   function macro_WordIndex($formatter,$value) {
  @@ -16,12 +16,12 @@
     $save=$formatter->sister_on;
     $formatter->sister_on=0;
   
  -  if ($DBInfo->use_titlecache) {
  +  if (!empty($DBInfo->use_titlecache)) {
       $cache=new Cache_text('title');
     }
   
     foreach ($all_pages as $page) {
  -    if ($DBInfo->use_titlecache and $cache->exists($page))
  +    if (!empty($DBInfo->use_titlecache) and $cache->exists($page))
         $title=$cache->fetch($page);
       else
         $title=$page;
  @@ -31,7 +31,7 @@
       foreach ($words as $word) {
         $word=ltrim($word);
         if (!$word) continue;
  -      if ($dict[$word])
  +      if (!empty($dict[$word]))
           $dict[$word][]=$page;
         else
           $dict[$word]=array($page);
  
  
  
  1.12      +9 -6      moniwiki/plugin/chat.php
  
  Index: chat.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/chat.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- chat.php	9 Oct 2009 08:20:54 -0000	1.11
  +++ chat.php	19 Apr 2010 11:26:46 -0000	1.12
  @@ -1,11 +1,11 @@
   <?php
  -// Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a sample plugin for the MoniWiki
   //
   // Usage: [[Chat]]
   //
  -// $Id: chat.php,v 1.11 2009/10/09 08:20:54 wkpark Exp $
  +// $Id: chat.php,v 1.12 2010/04/19 11:26:46 wkpark Exp $
   // http://cvs.drupal.org/viewcvs/drupal/contributions/modules/chat/
   
   function macro_Chat($formatter,$value,$options=array()) {
  @@ -16,6 +16,7 @@
       $args=explode(',',$value);
       $itemnum=20; // default
   
  +    $tag = '';
       foreach ($args as $arg) {
           if (is_int($arg)) {
               $itemnum=$arg;
  @@ -34,7 +35,8 @@
       $msg=ob_get_contents();
       ob_end_clean();
       if ($msg=='false') $msg=_("No messages");
  -    if (!$chat_script)
  +    $script = '';
  +    if (empty($chat_script))
           $script=<<<EOF
   <script type='text/javascript' src='$DBInfo->url_prefix/local/ajax.js'></script>
   <script type='text/javascript' src='$DBInfo->url_prefix/local/chat.js'></script>
  @@ -76,7 +78,7 @@
       $id=$user->id;
       $nic='';
       $udb=&$DBInfo->udb;
  -    if ($options['nic']) {
  +    if (!empty($options['nic'])) {
           if (!$udb->_exists($options['nic'])) {
               $nic=' '.$options['nic'];
           } else if ($user->id=='Anonymous') {
  @@ -109,7 +111,7 @@
               return;
           }
           $mtime=filemtime($log);
  -        if ($mtime <= $options['laststamp']) {
  +        if (empty($options['laststamp']) or $mtime <= $options['laststamp']) {
               print 'false';
               return;
           }
  @@ -157,6 +159,7 @@
           break;   
       }
   
  +    $debug = '';
       #ob_start();
       #print_r($_GET);
       #$debug=ob_get_contents();
  @@ -190,7 +193,7 @@
       }
       $formatter->sister_on=$save;
       $formatter->nonexists=$save2;
  -    if ($options['option_method']=='ajax') {
  +    if (!empty($options['action_mode']) and $options['action_mode']=='ajax') {
           $formatter->header('Expires','0');
           $formatter->header('Cache-Control','no-cache');
           $formatter->header('Pragma','no-cache');
  
  
  
  1.25      +7 -5      moniwiki/plugin/download.php
  
  Index: download.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/download.php,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- download.php	17 Apr 2010 12:07:26 -0000	1.24
  +++ download.php	19 Apr 2010 11:26:46 -0000	1.25
  @@ -1,9 +1,9 @@
   <?php
  -// Copyright 2003-2004 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // download action plugin for the MoniWiki
   //
  -// $Id: download.php,v 1.24 2010/04/17 12:07:26 wkpark Exp $
  +// $Id: download.php,v 1.25 2010/04/19 11:26:46 wkpark Exp $
   //
   function do_download($formatter,$options) {
     global $DBInfo;
  @@ -92,9 +92,11 @@
       $mime=array();
   
     # set filename
  -  if (preg_match("/\.(.{1,4})$/",$file,$match))
  -    $mimetype=$mime[strtolower($match[1])];
  -  if (!$mimetype) $mimetype="application/x-unknown";
  +  if (preg_match("/\.(.{1,4})$/",$file,$match)) {
  +    $ext = strtolower($match[1]);
  +    $mimetype= !empty($mime[$ext]) ? $mime[$ext] : '';
  +  }
  +  if (empty($mimetype)) $mimetype="application/x-unknown";
   
     if (strstr($_SERVER['HTTP_USER_AGENT'], 'MSIE')) {
       // IE: rawurlencode()
  
  
  
  1.5       +4 -4      moniwiki/plugin/html2pdf.php
  
  Index: html2pdf.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/html2pdf.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- html2pdf.php	2 Jan 2009 10:45:07 -0000	1.4
  +++ html2pdf.php	19 Apr 2010 11:26:46 -0000	1.5
  @@ -1,5 +1,5 @@
   <?php
  -// Copyright 2008 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2008-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a HTML to PDF plugin using the TCPDF for the MoniWiki
   //
  @@ -8,11 +8,11 @@
   // Name: TCPDF plugin
   // Description: a HTML2PDF Plugin using the TCPDF
   // URL: MoniWiki:Html2PdfPlugin
  -// Version: $Revision: 1.4 $
  +// Version: $Revision: 1.5 $
   // License: GPL
   // Usage: ?action=tcpdf
   //
  -// $Id: html2pdf.php,v 1.4 2009/01/02 10:45:07 wkpark Exp $
  +// $Id: html2pdf.php,v 1.5 2010/04/19 11:26:46 wkpark Exp $
   
   function do_html2pdf($formatter,$options) {
       global $DBInfo,$Config;
  @@ -149,7 +149,7 @@
       # $pdf->SetAuthor('Your name');
       $pdf->SetCreator('TCPDF/MoniWiki');
       $pdf->SetSubject($formatter->page->name);
  -    if ($formatter->pi['#keywords'])
  +    if (!empty($formatter->pi['#keywords']))
           $pdf->SetKeywords($keywords=$formatter->pi['#keywords']);
   
       // load default font
  
  
  
  1.6       +9 -8      moniwiki/plugin/pagelist.php
  
  Index: pagelist.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/pagelist.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- pagelist.php	9 Jan 2009 16:54:27 -0000	1.5
  +++ pagelist.php	19 Apr 2010 11:26:46 -0000	1.6
  @@ -1,11 +1,11 @@
   <?php
  -// Copyright 2003-2006 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a PageList plugin for the MoniWiki
   //
   // Usage: [[PageList(a needle for list,dir,info,date]]
   //
  -// $Id: pagelist.php,v 1.5 2009/01/09 16:54:27 wkpark Exp $
  +// $Id: pagelist.php,v 1.6 2010/04/19 11:26:46 wkpark Exp $
   
   function macro_PageList($formatter,$arg="",$options=array()) {
     global $DBInfo;
  @@ -27,7 +27,7 @@
     }
   
     $upper = '';
  -  if ($options['subdir']) {
  +  if (!empty($options['subdir'])) {
       if (($p = strrpos($formatter->page->name,'/')) !== false)
         $upper = substr($formatter->page->name,0,$p);
       $needle=_preg_search_escape($formatter->page->name);
  @@ -43,11 +43,11 @@
       return "[[PageList(<font color='red'>Invalid \"$arg\"</font>)]]";
     }
   
  -  if ($options['date']) {
  +  if (!empty($options['date'])) {
       $tz_offset=&$formatter->tz_offset;
       $all_pages = $DBInfo->getPageLists($options);
     } else {
  -    if ($options['metawiki'])
  +    if (!empty($options['metawiki']))
         $all_pages = $DBInfo->metadb->getLikePages($needle);
       else
         $all_pages = $DBInfo->getPageLists();
  @@ -55,7 +55,8 @@
   
     $hits=array();
   
  -  if ($options['date']) {
  +  $out = '';
  +  if (!empty($options['date'])) {
       if ($needle) {
         while (list($pagename,$mtime) = @each ($all_pages)) {
           preg_match("/$needle/",$pagename,$matches);
  @@ -75,7 +76,7 @@
         if ($matches) $hits[]=$page;
       }
       sort($hits);
  -    if ($options['dir'] or $options['subdir']) {
  +    if (!empty($options['dir']) or !empty($options['subdir'])) {
           $dirs=array();
           $files=array();
           if ($options['subdir']) $plen=strlen($formatter->page->name)+1;
  @@ -126,7 +127,7 @@
               $out.= '<tr><td>'.$ficon.'</td><td>'.
                   $formatter->link_tag(_rawurlencode($pg),"",
   	    htmlspecialchars($name)).'</td>';
  -            if ($options['info']) {
  +            if (!empty($options['info'])) {
                   $p=new WikiPage($pg);
                   $mtime=$p->mtime();
                   $time_diff=(int)($now - $mtime)/60;
  
  
  
  1.19      +4 -4      moniwiki/plugin/rss_rc.php
  
  Index: rss_rc.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rss_rc.php,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- rss_rc.php	17 Apr 2010 12:07:26 -0000	1.18
  +++ rss_rc.php	19 Apr 2010 11:26:46 -0000	1.19
  @@ -1,9 +1,9 @@
   <?php
  -// Copyright 2003-2007 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // rss_rc action plugin for the MoniWiki
   //
  -// $Id: rss_rc.php,v 1.18 2010/04/17 12:07:26 wkpark Exp $
  +// $Id: rss_rc.php,v 1.19 2010/04/19 11:26:46 wkpark Exp $
   
   function do_rss_rc($formatter,$options) {
     global $DBInfo;
  @@ -65,7 +65,7 @@
         $html="<a href='$url'>$page_name</a> is deleted\n";
       } else {
         $status='updated';
  -      if ($options['diffs']) {
  +      if (!empty($options['diffs'])) {
           $p=new WikiPage($page_name);
           $f=new Formatter($p);
           $options['raw']=1;
  @@ -82,7 +82,7 @@
       	$html=str_replace(']','&#93;',$html);
           $html="<![CDATA[".$html.$extra."]]>";
           #$html=strtr($html.$extra,array('&'=>'&amp;','<'=>'&lt;'));
  -      } else if ($options['summary']) {
  +      } else if (!empty($options['summary'])) {
           $p=new WikiPage($page_name);
           $f=new Formatter($p);
           $f->section_edit=0;
  
  
  
  1.6       +12 -7     moniwiki/plugin/scrap.php
  
  Index: scrap.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/scrap.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- scrap.php	29 Dec 2008 22:09:49 -0000	1.5
  +++ scrap.php	19 Apr 2010 11:26:46 -0000	1.6
  @@ -1,9 +1,9 @@
   <?php
  -// Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a scrap action plugin for the MoniWiki
   //
  -// $Id: scrap.php,v 1.5 2008/12/29 22:09:49 wkpark Exp $
  +// $Id: scrap.php,v 1.6 2010/04/19 11:26:46 wkpark Exp $
   
   function macro_Scrap($formatter,$value='',$options=array()) {
     global $DBInfo;
  @@ -12,8 +12,10 @@
     if ($user->id == 'Anonymous') return '';
   
     $userinfo=$DBInfo->udb->getUser($user->id);
  -  $pages=explode("\t",$userinfo->info['scrapped_pages']);
  -  if (!in_array($options['page'],$pages)) $pages[]=$options['page'];
  +  $pages = array();
  +  if (!empty($userinfo->info['scrapped_pages']))
  +    $pages=explode("\t",$userinfo->info['scrapped_pages']);
  +  if (!empty($options['page']) and !in_array($options['page'],$pages)) $pages[]=$options['page'];
     $out='';
     foreach ($pages as $p) {
       if ($DBInfo->hasPage($p))
  @@ -52,7 +54,9 @@
           $pages = array_unique ($pages);
           $title = _("Scrap lists updated.");
       } else {
  -        $pages = explode("\t",$userinfo->info['scrapped_pages']);
  +        $pages = array();
  +        if (!empty($userinfo->info['scrapped_pages']))
  +            $pages = explode("\t",$userinfo->info['scrapped_pages']);
           if (!empty($options['unscrap'])) {
               $tmp = array_flip($pages);
               if (isset($tmp[$formatter->page->name]))
  @@ -69,7 +73,8 @@
       $userinfo->info['scrapped_pages'] = $page_list;
       $udb->saveUser($userinfo);
   
  -    if ($DBInfo->use_refresh) {
  +    $myrefresh = '';
  +    if (!empty($DBInfo->use_refresh)) {
         $sec = $DBInfo->use_refresh - 1;
         $lnk = $formatter->link_url($formatter->page->urlname,'?action=show');
         $myrefresh = 'Refresh: '.$sec.'; url='.qualifiedURL($lnk);
  @@ -78,7 +83,7 @@
       $formatter->send_header($myrefresh,$options);
       $formatter->send_title($title,"",$options);
       $formatter->send_page("Goto [$options[page]]\n");
  -    $formatter->send_footer();
  +    $formatter->send_footer('', $options);
       return;
     }
   
  
  
  
  1.31      +31 -30    moniwiki/plugin/userform.php
  
  Index: userform.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/userform.php,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- userform.php	30 Dec 2008 15:17:49 -0000	1.30
  +++ userform.php	19 Apr 2010 11:26:46 -0000	1.31
  @@ -1,19 +1,19 @@
   <?php
  -// Copyright 2003-2008 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a userform action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: userform.php,v 1.30 2008/12/30 15:17:49 wkpark Exp $
  +// $Id: userform.php,v 1.31 2010/04/19 11:26:46 wkpark Exp $
   
   function do_userform($formatter,$options) {
     global $DBInfo;
   
  -  $user=$DBInfo->user; # get cookie
  -  $id=$options['login_id'];
  +  $user=&$DBInfo->user; # get cookie
  +  $id=!empty($options['login_id']) ? $options['login_id'] : '';
   
     $use_any=0;
  -  if ($DBInfo->use_textbrowsers) {
  +  if (!empty($DBInfo->use_textbrowsers)) {
       if (is_string($DBInfo->use_textbrowsers))
         $use_any= preg_match('/'.$DBInfo->use_textbrowsers.'/',
           $_SERVER['HTTP_USER_AGENT']) ? 1:0;
  @@ -22,8 +22,9 @@
           $_SERVER['HTTP_USER_AGENT']) ? 1:0;
     }
   
  +  $options['msg'] = '';
     # e-mail conformation
  -  if ($options['ticket'] and $id and $id!='Anonymous') {
  +  if (!empty($options['ticket']) and $id and $id!='Anonymous') {
       $userdb=&$DBInfo->udb;
       if ($userdb->_exists($id)) {
          $user=$userdb->getUser($id);
  @@ -56,13 +57,14 @@
       return '';
     }
   
  +  $title='';
     if ($user->id == "Anonymous" and !empty($options['login_id']) and isset($options['password']) and !isset($options['passwordagain'])) {
       # login
       $userdb=$DBInfo->udb;
       if ($userdb->_exists($id)) {
         $user=$userdb->getUser($id);
         $login_ok=0;
  -      if ($DBInfo->use_safelogin) {
  +      if (!empty($DBInfo->use_safelogin)) {
           if (isset($options['challenge']) and
              $options['_chall']==$options['challenge']) {
             #print '<pre>';
  @@ -96,16 +98,16 @@
           $title= _("Make new ID on this wiki");
        $form=macro_UserPreferences($formatter,'',$options);
       }
  -  } else if ($options['logout']) {
  +  } else if (!empty($options['logout'])) {
       # logout
       $formatter->header($user->unsetCookie());
       $options['msg']= _("Cookie deleted !");
       $user->id = 'Anonymous';
       $DBInfo->user=$user;
       $use_refresh=1;
  -  } else if ($DBInfo->use_sendmail and
  +  } else if (!empty($DBInfo->use_sendmail) and
       $options['login'] == _("E-mail new password") and
  -    $user->id=="Anonymous" and $options['email'] and $options['login_id']) {
  +    $user->id=="Anonymous" and !empty($options['email']) and !empty($options['login_id'])) {
       # email new password
   
       $title='';
  @@ -189,13 +191,13 @@
   
       $formatter->send_footer("",$options);
       return;
  -  } else if ($user->id=="Anonymous" and $options['login_id'] and
  +  } else if ($user->id=="Anonymous" and !empty($options['login_id']) and
       (($options['password'] and $options['passwordagain']) or
        ($DBInfo->use_safelogin and $options['email'])) ) {
       # create profile
   
       $title='';
  -    if (!$use_any and $DBInfo->use_ticket) {
  +    if (!$use_any and !empty($DBInfo->use_ticket)) {
         if ($options['__seed'] and $options['check']) {
           $mycheck=getTicket($options['__seed'],$_SERVER['REMOTE_ADDR'],4);
           if ($mycheck==$options['check'])
  @@ -212,7 +214,7 @@
       if (!preg_match("/\//",$id)) $user->setID($id); // protect http:// style id
   
       if ($ok_ticket and $user->id != "Anonymous") {
  -       if ($DBInfo->use_safelogin) {
  +       if (!empty($DBInfo->use_safelogin)) {
             $mypass=base64_encode(getTicket(time(),$_SERVER['REMOTE_ADDR'],10));
             $mypass=substr($mypass,0,8);
             $options['password']=$mypass;
  @@ -220,13 +222,13 @@
          } else {
             $ret=$user->setPasswd($options['password'],$options['passwordagain']);
          }
  -       if ($DBInfo->password_length and (strlen($options['password']) < $DBInfo->password_length)) $ret=0;
  +       if (!empty($DBInfo->password_length) and (strlen($options['password']) < $DBInfo->password_length)) $ret=0;
          if ($ret <= 0) {
              if ($ret==0) $title= _("too short password!");
              else if ($ret==-1) $title= _("mismatch password!");
              else if ($ret==-2) $title= _("not acceptable character found in the password!");
          } else {
  -           if ($ret < 8 and !$DBInfo->use_safelogin)
  +           if ($ret < 8 and empty($DBInfo->use_safelogin))
                 $options['msg']=_("Your password is too simple to use as a password !");
              $udb=$DBInfo->udb;
              if ($options['email']) {
  @@ -237,7 +239,7 @@
              }
   
              if ($udb->isNotUser($user)) {
  -             if ($DBInfo->no_register) {
  +             if (!empty($DBInfo->no_register)) {
                  $options['msg']=_("Fail to register");
                  $options['err']=_("You are not allowed to register on this wiki");
                  $options['err'].="\n"._("Please contact WikiMasters");
  @@ -248,7 +250,7 @@
                $options['id']=$user->id;
                $ticket=md5(time().$user->id.$options['email']);
                $user->info['eticket']=$ticket.".".$options['email'];
  -             if ($DBInfo->use_safelogin) {
  +             if (!empty($DBInfo->use_safelogin)) {
                  $options['msg'] =
                    sprintf(_("Successfully added as '%s'"),$user->id);
                  $options['msg'].= '<br />'._("Please check your mailbox");
  @@ -257,11 +259,11 @@
                $ret=$udb->addUser($user);
   
                # XXX
  -             if ($options['email'] and preg_match('/^[a-z][a-z0-9_\-\.]+@[a-z][a-z0-9_\-]+(\.[a-z0-9_]+)+$/i',$options['email'])) {
  +             if (!empty($options['email']) and preg_match('/^[a-z][a-z0-9_\-\.]+@[a-z][a-z0-9_\-]+(\.[a-z0-9_]+)+$/i',$options['email'])) {
                  $options['subject']="[$DBInfo->sitename] "._("E-mail confirmation");
                  $body=qualifiedUrl($formatter->link_url('',"?action=userform&login_id=$user->id&ticket=$ticket.$options[email]"));
                  $body=_("Please confirm your email address")."\n".$body;
  -               if ($DBInfo->use_safelogin) {
  +               if (!empty($DBInfo->use_safelogin)) {
                    $body.="\n".sprintf(_("Your initial password is %s"),$mypass)."\n\n";
                    $body.=_("Please change your password later")."\n";
                  }
  @@ -280,16 +282,16 @@
                }
              }
          }
  -    } else if ($title=='')
  +    } else if (!empty($title))
          $title= _("Invalid username !");
     } else if ($user->id != "Anonymous") {
       # save profile
       $udb=&$DBInfo->udb;
       $userinfo=$udb->getUser($user->id);
   
  -    if ($options['password'] and $options['passwordagain']) {
  +    if (!empty($options['password']) and !empty($options['passwordagain'])) {
         $chall=0;
  -      if ($DBInfo->use_safelogin) {
  +      if (!empty($DBInfo->use_safelogin)) {
           if (isset($options['_chall'])) {
             $chall= $options['challenge'];
           } else {
  @@ -332,7 +334,7 @@
         $tz_offset=$hour*3600 + $min;
         $userinfo->info['tz_offset']=$tz_offset;
       }
  -    if ($options['email'] and ($options['email'] != $userinfo->info['email'])) {
  +    if (!empty($options['email']) and ($options['email'] != $userinfo->info['email'])) {
         if (preg_match('/^[a-z][a-z0-9_\-\.]+@[a-z][a-z0-9_\-]+(\.[a-z0-9_]+)+$/i',$options['email'])) {
           $ticket=md5(time().$userinfo->info['id'].$options['email']);
           $userinfo->info['eticket']=$ticket.".".$options['email'];
  @@ -381,9 +383,8 @@
   		  #echo "ERROR DESCRIPTION: " . $error['description'] . "<br>";
         $options["msg"] = sprintf(_("Authentication request was failed: %s"),$error['description']);
       }
  -  } else if ($options['openid_mode']=='id_res') { // OpenID result
  +  } else if (!empty($options['openid_mode']) and $options['openid_mode']=='id_res') { // OpenID result
       include_once('lib/openid.php');      
  -    session_start();
   
       if ( !preg_match ('/utf-?8/i', $DBInfo->charset) ) {
         $options['openid_sreg_nickname'] =
  @@ -399,7 +400,7 @@
         $userdb=&$DBInfo->udb;
         // XXX
         $user->setID($options['openid_identity']); // XXX
  -      if ($options['openid_language']) $user->info['language']=strtolower($options['openid_sreg_language']);
  +      if (!empty($options['openid_language'])) $user->info['language']=strtolower($options['openid_sreg_language']);
         //$user->info['tz_offset']=$options['openid_timezone'];
   
         if ($userdb->_exists($options['openid_identity'])) {
  @@ -409,7 +410,7 @@
           $formatter->header($user->setCookie());
           $userdb->saveUser($user); // always save
         } else {
  -        if ($DBInfo->no_register == 1) {
  +        if (!empty($DBInfo->no_register) and $DBInfo->no_register == 1) {
             $options['msg']=_("Fail to register");
             $options['err']=_("You are not allowed to register on this wiki");
             $options['err'].="\n"._("Please contact WikiMasters");
  @@ -440,7 +441,7 @@
     }
   
     $myrefresh='';
  -  if ($DBInfo->use_refresh and $use_refresh) {
  +  if (!empty($DBInfo->use_refresh) and !empty($use_refresh)) {
       $sec=$DBInfo->use_refresh - 1;
       $lnk=$formatter->link_url($formatter->page->urlname,'?action=show');
       $myrefresh='Refresh: '.$sec.'; url='.qualifiedURL($lnk);
  @@ -448,10 +449,10 @@
   
     $formatter->send_header($myrefresh,$options);
     $formatter->send_title($title,"",$options);
  -  if (!$title && (!$DBInfo->control_read or $DBInfo->security->is_allowed('read',$options)) ) {
  +  if (!$title && (empty($DBInfo->control_read) or $DBInfo->security->is_allowed('read',$options)) ) {
       $formatter->send_page();
     } else {
  -    if ($form) print $form;
  +    if (!empty($form)) print $form;
   #    else $formatter->send_page("Goto UserPreferences");
     }
     $formatter->send_footer("",$options);
  
  
  
  1.5       +4 -3      moniwiki/plugin/filter/antispam.php
  
  Index: antispam.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/filter/antispam.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- antispam.php	19 Jan 2006 14:13:46 -0000	1.4
  +++ antispam.php	19 Apr 2010 11:26:47 -0000	1.5
  @@ -1,9 +1,9 @@
   <?php
  -// Copyright 2005 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2005-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a Antispam filter plugin for the MoniWiki
   //
  -// $Id: antispam.php,v 1.4 2006/01/19 14:13:46 wkpark Exp $
  +// $Id: antispam.php,v 1.5 2010/04/19 11:26:47 wkpark Exp $
   
   function filter_antispam($formatter,$value,$options) {
       $blacklist_pages=array('BadContent','LocalBadContent');
  @@ -11,6 +11,7 @@
       if (! in_array($formatter->page->name,$blacklist_pages) and
           ! in_array($formatter->page->name,$whitelist_pages)) {
   
  +        $badcontent = '';
           foreach ($blacklist_pages as $list) {
               $p=new WikiPage($list);
               if ($p->exists()) $badcontent.=$p->get_raw_body();
  @@ -20,7 +21,7 @@
           $pattern[0]='';
           $i=0;
           foreach ($badcontents as $line) {
  -            if ($line[0]=='#') continue;
  +            if (isset($line[0]) and $line[0]=='#') continue;
               $line=preg_replace('/[ ]*#.*$/','',$line);
               $test=@preg_match("/$line/i","");
               if ($test === false) $line=preg_quote($line,'/');
  
  
  
  1.8       +5 -6      moniwiki/plugin/processor/abc.php
  
  Index: abc.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/abc.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- abc.php	8 Jan 2008 14:37:58 -0000	1.7
  +++ abc.php	19 Apr 2010 11:26:47 -0000	1.8
  @@ -1,12 +1,12 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 by Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a abc2midi processor plugin for the MoniWiki
   //
   // Usage: {{{#!abc
   // blah blah
   // }}}
  -// $Id: abc.php,v 1.7 2008/01/08 14:37:58 wkpark Exp $
  +// $Id: abc.php,v 1.8 2010/04/19 11:26:47 wkpark Exp $
   
   function processor_abc($formatter="",$value="") {
     global $DBInfo;
  @@ -39,8 +39,8 @@
       umask(022);
     }
   
  -  #if (1 || $formatter->refresh || !file_exists("$cache_dir/$uniq.midi")) {
  -  if ($formatter->refresh || !file_exists("$cache_dir/$uniq.midi")) {
  +  $log='';
  +  if (!empty($formatter->refresh) || !file_exists("$cache_dir/$uniq.midi")) {
   
       $tmpf=tempnam($vartmp_dir,"FOO");
       $fp= fopen($tmpf, "w");
  @@ -67,13 +67,12 @@
   #
        $cmd= "$abc2midi $tmpf -o $cache_dir/$uniq.midi";
        $fp=popen($cmd.$formatter->NULL,'r');
  -     $log='';
        while($s = fgets($fp, 1024)) $log.= $s;
        pclose($fp);
   
        unlink($tmpf);
     
  -     if ($log)
  +     if (!empty($log))
           $log ="<pre style='background-color:black;color:gold'>$log</pre>\n";
     }
     return $log."<embed src='$DBInfo->url_prefix/$cache_dir/$uniq.midi' height='20' />";
  
  
  
  1.10      +7 -6      moniwiki/plugin/processor/asciimathml.php
  
  Index: asciimathml.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/asciimathml.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- asciimathml.php	1 Dec 2008 08:47:00 -0000	1.9
  +++ asciimathml.php	19 Apr 2010 11:26:47 -0000	1.10
  @@ -1,5 +1,5 @@
   <?php
  -// Copyright 2005-2007 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2005-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a asciimathml processor plugin by AnonymousDoner
   //
  @@ -8,7 +8,7 @@
   // Name: a AsciiMathML processor
   // Description: It support AsciiMathML
   // URL: MoniWiki:AsciiMathML
  -// Version: $Revision: 1.9 $
  +// Version: $Revision: 1.10 $
   // License: GPL
   //
   // please see http://kldp.net/forum/message.php?msg_id=9419
  @@ -31,7 +31,7 @@
   // 1. set $inline_latex='asciimathml';
   // 2. replace the latex processor: $processors=array('latex'=>'asciimathml');
   //
  -// $Id: asciimathml.php,v 1.9 2008/12/01 08:47:00 wkpark Exp $
  +// $Id: asciimathml.php,v 1.10 2010/04/19 11:26:47 wkpark Exp $
   
   function processor_asciimathml($formatter,$value="") {
     global $DBInfo;
  @@ -39,7 +39,7 @@
     if ($value[0]=='#' and $value[1]=='!')
     list($line,$value)=explode("\n",$value,2);
   
  -  if ($line)
  +  if ($line and strpos($line, ' ') !== FALSE)
       list($tag,$args)=explode(' ',$line,2);
   
     # 1 or 0
  @@ -51,7 +51,7 @@
   
     #
     $flag = 0;
  -  if (!$formatter->wikimarkup) {
  +  if (empty($formatter->wikimarkup)) {
       // use a md5 tag with a wikimarkup action
       $cid=&$GLOBALS['_transient']['asciimathml'];
       if ( !$cid ) { $flag = 1; $cid = 1; }
  @@ -59,6 +59,7 @@
       $cid++;
   
       # wikimarkup specific settings
  +    $bgcolor = '';
       $fontcolor="mathcolor='$myfontcolor';\n";
     } else {
       $flag = 1;
  @@ -110,7 +111,7 @@
       if ($js) $formatter->register_javascripts($js);
     }
   
  -  $out .= "<span><span class=\"AM\" id=\"AM-$id\">$value</span>" .
  +  $out = "<span><span class=\"AM\" id=\"AM-$id\">$value</span>" .
       "<script type=\"text/javascript\">translateById('AM-$id');".
       "</script></span>";
     return $out;
  
  
  
  1.26      +11 -9     moniwiki/plugin/processor/blog.php
  
  Index: blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/blog.php,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- blog.php	16 Nov 2007 10:01:23 -0000	1.25
  +++ blog.php	19 Apr 2010 11:26:47 -0000	1.26
  @@ -1,5 +1,5 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // Blog plugin for the MoniWiki
   //
  @@ -7,7 +7,7 @@
   // Hello World
   // }}}
   // this processor is used internally by the Blog action
  -// $Id: blog.php,v 1.25 2007/11/16 10:01:23 wkpark Exp $
  +// $Id: blog.php,v 1.26 2010/04/19 11:26:47 wkpark Exp $
   
   function processor_blog($formatter,$value="",$options) {
     static $date_anchor='';
  @@ -88,21 +88,23 @@
         }
       }
   
  -    if ($formatter->trackback_list[$md5sum]) $counter=' ('.$formatter->trackback_list[$md5sum].')';
  +    if (!empty($formatter->trackback_list[$md5sum])) $counter=' ('.$formatter->trackback_list[$md5sum].')';
       else $counter='';
   
  -    if (!$options['noaction'] and $md5sum) {
  +    if (empty($options['noaction']) and $md5sum) {
         $action= $formatter->link_tag($formatter->page->urlname,"?action=blog&amp;value=$md5sum#BlogComment",$add_button);
         if (getPlugin('SendPing'))
           $action.= ' | '.$formatter->link_tag($formatter->page->urlname,"?action=trackback&amp;value=$md5sum",_("track back").$counter);
  -      if ($DBInfo->use_rawblog)
  +      if (!empty($DBInfo->use_rawblog))
           $action.= ' | '.$formatter->link_tag($formatter->page->urlname,"?action=rawblog&amp;value=$md5sum",_("raw"));
       }
   
  -    if ($action)
  +    if (!empty($action))
         $action="<div class='blog-action'><span class='bullet'>&raquo;</span> ".$action."</div>\n";
  +    else
  +      $action='';
   
  -    $save=$formatter->preview;
  +    $save=!empty($formatter->preview) ? $formatter->preview : '';
       $formatter->preview=1;
       ob_start();
       $formatter->send_page($src,$options);
  @@ -115,11 +117,11 @@
         ob_end_clean();
       } else
         $comments="";
  -    $formatter->preview=$save;
  +    !empty($save) ? $formatter->preview=$save : null;
     }
   
     $out="$datetag<div class='blog'>";
  -  if ($title) {
  +  if (!empty($title)) {
       #$tag=normalize($title);
       $tag=$md5sum;
       if ($tag[0]=='%') $tag="n".$tag;
  
  
  
  1.5       +21 -12    moniwiki/plugin/processor/bts.php
  
  Index: bts.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/bts.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- bts.php	28 Nov 2008 06:59:50 -0000	1.4
  +++ bts.php	19 Apr 2010 11:26:47 -0000	1.5
  @@ -1,5 +1,5 @@
   <?php
  -// Copyright 2006-2008 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2006-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a bug track system plugin for the MoniWiki
   //
  @@ -8,10 +8,10 @@
   // Name: BugTrackingSystem
   // Description: a Simpl Bug Track System for MoniWiki
   // URL: MoniWiki:BugTrackingSystem
  -// Version: $Revision: 1.4 $
  +// Version: $Revision: 1.5 $
   // License: GPL
   //
  -// $Id: bts.php,v 1.4 2008/11/28 06:59:50 wkpark Exp $
  +// $Id: bts.php,v 1.5 2010/04/19 11:26:47 wkpark Exp $
   
   include_once("lib/metadata.php");
   
  @@ -19,8 +19,11 @@
       $meta='';
       $body=&$raw;
       while(true) {
  -        list($line,$body)=explode("\n",$body,2);
  -        if ($line[0]=='#') continue;
  +        #list($line,$body)=explode("\n",$body,2);
  +        $tmp=explode("\n",$body,2);
  +        $line = $tmp[0];
  +        $body = isset($tmp[1]) ? $tmp[1] : '';
  +        if (isset($line[0]) and $line[0]=='#') continue;
           if (strpos($line,':')===false or trim($line)=='') break;
           $meta.=$line."\n";
       }
  @@ -100,7 +103,7 @@
   
       if ($value[0]=='#' and $value[1]=='!')
           list($arg,$value)=explode("\n",$value,2);
  -    if ($arg) {
  +    if (!empty($arg)) {
           # get parameters
           list($tag, $user, $date, $title)=explode(" ",$line, 4);
   
  @@ -127,7 +130,7 @@
       $meta='';
       while(true) {
           list($line,$body)=explode("\n",$body,2);
  -        if ($line[0]=='#') continue;
  +        if (isset($line[0]) and $line[0]=='#') continue;
           if (strpos($line,':')===false or !trim($line)) break;
           $meta.=$line."\n";
       }
  @@ -143,7 +146,7 @@
               $kk=str_replace(' ','-',ucwords($metas['Product'])).'-'.$k;
           }
           if ($k[0]=='X' and $k[1]=='-') {
  -            if ($confs[$kk])
  +            if (isset($confs[$kk]))
                   $v='[[InputForm(:'._($kk).':'.str_replace($v,$v.' 1',$confs[$kk]).')]]';
               $k=substr($k,2);
               if (substr($k,0,9) =='Separator') {
  @@ -161,7 +164,7 @@
                   $v='[[InputForm(input:'._($k).':'.$confs[$k].':'.$v.')]]';
                   $extra.="|| '''"._($k)."'''''':'''||$v||\n";
               } else {
  -                if ($confs[$kk])
  +                if (isset($confs[$kk]))
                       $v='[[InputForm(:'._($kk).':'.str_replace($v,$v.' 1',$confs[$kk]).')]]';
                   $head.="||".$attr."<width='30%'> '''"._($k)."'''''':'''||".$v." ||\n";
                   $attr='';
  @@ -190,9 +193,15 @@
   
           $copy=$body;
           $hidden='';
  -        list($comment,$copy)=explode("----\n",$copy,2);
  +        #list($comment,$copy)=explode("----\n",$copy,2);
  +        $tmp=explode("----\n",$copy,2);
  +        $comment = $tmp[0];
  +        $copy = isset($tmp[1]) ? $tmp[1] : '';
           while(!empty($comment)) {
  -            list($comment,$copy)=explode("----\n",$copy,2);
  +            #list($comment,$copy)=explode("----\n",$copy,2);
  +            $tmp=explode("----\n",$copy,2);
  +            $comment = $tmp[0];
  +            $copy = isset($tmp[1]) ? $tmp[1] : '';
               if (preg_match('/^Comment-Id:\s*(\d+)/i',$comment,$m)) {
                   list($myhead,$my)=explode("\n\n",$comment,2);
                   $hidden.='<pre style="display:none;" id="comment_text_'.$m[1].'">'.htmlspecialchars($my).'</pre>';
  @@ -228,7 +237,7 @@
           ob_end_clean();
       }
       $msg.= $formatter->macro_repl('Comment(meta)','',$options);
  -    if ($bts_script) return $msg.$hidden;
  +    if (!empty($bts_script)) return $msg.$hidden;
       $bts_script=1;
       return $script.$msg.$hidden;
   }
  
  
  
  1.5       +5 -3      moniwiki/plugin/processor/diff.php
  
  Index: diff.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/diff.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- diff.php	26 Jan 2006 03:10:36 -0000	1.4
  +++ diff.php	19 Apr 2010 11:26:47 -0000	1.5
  @@ -1,5 +1,5 @@
   <?php
  -// Copyright 2003-2004 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a diff colorizer plugin for the MoniWiki
   //
  @@ -7,12 +7,14 @@
   // - hello world
   // + Hello world
   // }}}
  -// $Id: diff.php,v 1.4 2006/01/26 03:10:36 wkpark Exp $
  +// $Id: diff.php,v 1.5 2010/04/19 11:26:47 wkpark Exp $
   
   function processor_diff($formatter,$value="") {
     if ($value[0]=='#' and $value[1]=='!')
       list($line,$value)=explode("\n",$value,2);
  -  list($dummy, $type)=explode(' ',$line);
  +  #list($dummy, $type)=explode(' ',$line);
  +  $tmp = explode(' ',$line);
  +  $type = isset($tmp[1]) ? $tmp[1] : '';
     if (in_array($type,array('fancy','simple')))
       $options['type']=$type;
     else
  
  
  
  1.5       +5 -4      moniwiki/plugin/processor/enscript.php
  
  Index: enscript.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/enscript.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- enscript.php	27 Dec 2008 07:29:17 -0000	1.4
  +++ enscript.php	19 Apr 2010 11:26:47 -0000	1.5
  @@ -1,5 +1,5 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a syntax colorizer plugin using the enscript for the MoniWiki
   //
  @@ -9,12 +9,12 @@
   // Name: a Enscript syntax colorizer
   // Description: a syntax colorizing processor using the Enscript
   // URL: MoniWiki:VimProcessor
  -// Version: $Revision: 1.4 $
  +// Version: $Revision: 1.5 $
   // Usage: {{{#!enscript sh|c|sh|..
   // some codes
   // }}}
   //
  -// $Id: enscript.php,v 1.4 2008/12/27 07:29:17 wkpark Exp $
  +// $Id: enscript.php,v 1.5 2010/04/19 11:26:47 wkpark Exp $
   
   function processor_enscript($formatter,$value) {
     global $DBInfo;
  @@ -46,6 +46,7 @@
       }
     }
   
  +  $option = '';
     if ($extra == "number") $option='-C ';
   
     $src=$value;
  @@ -67,7 +68,7 @@
   #-E%s -W html -J "" -B --color --word-wrap 
   
       #$cmd="ENSCRIPT_LIBRARY=/home/httpd/wiki/lib $enscript -q -o - -E$type -W html --color --word-wrap ".$tmpf;
  -    if ($DBInfo->enscript_style)
  +    if (!empty($DBInfo->enscript_style))
           $cmd="$enscript -q -o - $option -E$type --language=html $DBInfo->enscript_style --color --word-wrap ".$tmpf;
       else
           $cmd="$enscript -q -o - $option -E$type --language=html --style=ifh --color --word-wrap ".$tmpf;
  
  
  
  1.4       +19 -14    moniwiki/plugin/processor/freemind.php
  
  Index: freemind.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/freemind.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- freemind.php	10 Dec 2004 16:08:22 -0000	1.3
  +++ freemind.php	19 Apr 2010 11:26:47 -0000	1.4
  @@ -1,9 +1,9 @@
   <?php
  -// Copyright 2004 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2004-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a FreeMind plugin for the MoniWiki
   //
  -// $Id: freemind.php,v 1.3 2004/12/10 16:08:22 wkpark Exp $
  +// $Id: freemind.php,v 1.4 2010/04/19 11:26:47 wkpark Exp $
   
   function _interwiki_repl($formatter,$url) {
       global $DBInfo;
  @@ -11,8 +11,10 @@
       if ($url[0]=="w")
         $url=substr($url,5);
       $dum=explode(":",$url,2);
  -    $wiki=$dum[0]; $page=$dum[1];
  -    if (!$page) {
  +    $wiki=$dum[0];
  +    if (isset($dum[1])) {
  +      $page=$dum[1];
  +    } else {
         $page=$dum[0];
         return array($formatter->link_url($page));
       }
  @@ -44,6 +46,7 @@
   }
   
   function _link_repl($formatter,$url) {
  +    $img = '';
       if (preg_match("/\.(png|gif|jpeg|jpg)$/i",$url)) {
         $img=$url; $url='';
       }
  @@ -69,7 +72,7 @@
   
       $md5sum=md5($value);
       $map=$md5sum.'.mm';
  -    if ($formatter->refresh || $formatter->preview || !file_exists($_dir.'/'.$map)) {
  +    if (!empty($formatter->refresh) || !empty($formatter->preview) || !file_exists($_dir.'/'.$map)) {
           $depth=$odepth=0;
           $dep=$odep=0;
           $out='<map version="0.7.1">'."\n";
  @@ -104,28 +107,30 @@
                   $odep++;
               }
       
  -            if ($_FONT[$dep]) $FONT=$_FONT[$dep];
  +            if (!empty($_FONT[$dep])) $FONT=$_FONT[$dep];
               else $FONT=$_FONT[0];
  -            if ($_SIZE[$dep]) $SIZE=$_SIZE[$dep];
  +            if (!empty($_SIZE[$dep])) $SIZE=$_SIZE[$dep];
               else $SIZE=$_SIZE[0];
  -            if ($_COLOR[$dep]) $COLOR=$_COLOR[$dep];
  +            if (!empty($_COLOR[$dep])) $COLOR=$_COLOR[$dep];
               else $COLOR=$_COLOR[0];
       
               $link='';
               $extra='';
               $img='';
               if (preg_match('/^(http|mailto|wiki):/',$text,$match)) {
  -                list($link,$text)=explode(' ',$text,2);
  -                if ($match[1]=='wiki') {
  -                    list($link,$img)=_interwiki_repl($formatter,$link);
  -                    $link='LINK="'.addslashes($link).'" ';
  -                    if ($img) $extra='<html><img src="'.$img.'">';
  +                if (strpos($text, ' ') !== FALSE)
  +                    list($link,$text)=explode(' ',$text,2);
  +                if (isset($match[1]) and $match[1]=='wiki') {
  +                    $tmp=_interwiki_repl($formatter,$link);
  +                    //list($link,$img)=_interwiki_repl($formatter,$link);
  +                    $link='LINK="'.addslashes($tmp[0]).'" ';
  +                    if (!empty($tmp[1])) $extra='<html><img src="'.$tmp[1].'">';
                   } else {
                       list($link,$img)=_link_repl($formatter,$link);
                       $link=$link ? 'LINK="'.addslashes($link).'" ':'';
                       if ($img) $extra='<html><img src="'.$img.'">';
                   }
  -                if ($extra) $extra=htmlspecialchars($extra);
  +                if (!empty($extra)) $extra=htmlspecialchars($extra);
               }
               $text=addslashes(htmlspecialchars($text));
       
  
  
  
  1.17      +10 -6     moniwiki/plugin/processor/gnuplot.php
  
  Index: gnuplot.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/gnuplot.php,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- gnuplot.php	25 Nov 2008 03:49:31 -0000	1.16
  +++ gnuplot.php	19 Apr 2010 11:26:47 -0000	1.17
  @@ -1,12 +1,12 @@
   <?php
  -// Copyright 2003-2008 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a gnuplot processor plugin for the MoniWiki
   //
   // Usage: {{{#!gnuplot
   // plot sin(x)
   // }}}
  -// $Id: gnuplot.php,v 1.16 2008/11/25 03:49:31 wkpark Exp $
  +// $Id: gnuplot.php,v 1.17 2010/04/19 11:26:47 wkpark Exp $
   
   function processor_gnuplot($formatter="",$value="") {
     global $DBInfo;
  @@ -21,10 +21,12 @@
   
     if ($value[0]=='#' and $value[1]=='!')
       list($line,$value)=explode("\n",$value,2);
  -  list($dum,$szarg)=explode(' ',$line);
  -  if ($szarg) {
  +  if (strpos($line, ' ') !== false) {
  +    list($dum,$szarg)=explode(' ',$line);
       $args= explode('x',$szarg,2);
  -    $xsize=max(intval($args[0]),50);$ysize=max(intval($args[1]),50);
  +    if (count($args) > 2) {
  +      $xsize=max(intval($args[0]),50);$ysize=max(intval($args[1]),50);
  +    }
       $value='#'.$line."\n".$value;
     }
   
  @@ -53,7 +55,7 @@
         $xsize=intval($args[0]);$ysize=intval($args[1]);
       }
     }
  -  if ($xsize != '') {
  +  if (!empty($xsize)) {
       if ($xsize > 640 or $xsize < 100) $xscale=0.5;
       if ($xscale and ($ysize > 480 or $ysize < 100)) $yscale=0.6;
       $xscale=$xsize/640.0;
  @@ -126,6 +128,7 @@
       umask($om);
     }
   
  +  $log = '';
     if ($formatter->refresh || !file_exists($outpath)) {
   
        $flog=tempnam($vartmp_dir,"GNUPLOT");
  @@ -197,6 +200,7 @@
        }
     }
   
  +  $bra = ''; $ket = '';
     if ($ext == 'ps') {
       $bra='<a href="'.$png_url.'" />';
       $ket='</a>';
  
  
  
  1.6       +4 -4      moniwiki/plugin/processor/itex.php
  
  Index: itex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/itex.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- itex.php	7 Jul 2006 12:59:57 -0000	1.5
  +++ itex.php	19 Apr 2010 11:26:47 -0000	1.6
  @@ -1,5 +1,5 @@
   <?php
  -// Copyright 2005 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2005-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a latex processor plugin for the MoniWiki
   //
  @@ -13,7 +13,7 @@
   // and replace the latex processor:
   //  $processors=array('latex'=>'itex',...);
   //
  -// $Id: itex.php,v 1.5 2006/07/07 12:59:57 wkpark Exp $
  +// $Id: itex.php,v 1.6 2010/04/19 11:26:47 wkpark Exp $
   
   /*
     itex2MML.l patch to enable $$\alpha$$ syntax
  @@ -65,7 +65,7 @@
       $cache_dir=$DBInfo->upload_dir."/itex";
   
       $type='block';
  -    if ($options['type']) $type=$options['type'];
  +    if (!empty($options['type'])) $type=$options['type'];
     
       if ($value[0]=='#' and $value[1]=='!')
           list($line,$value)=explode("\n",$value,2);
  @@ -88,7 +88,7 @@
           $NULL='NUL';
       }
       
  -    if ($formatter->preview || $formatter->refresh || !file_exists("$cache_dir/$uniq.xml")) {
  +    if (!empty($formatter->preview) || !empty($formatter->refresh) || !file_exists("$cache_dir/$uniq.xml")) {
           $srcpath="$vartmp_dir/$uniq.itex";
           $outpath="$cache_dir/$uniq.xml";
   
  
  
  
  1.7       +16 -10    moniwiki/plugin/processor/jmol.php
  
  Index: jmol.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/jmol.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- jmol.php	9 Dec 2008 07:54:34 -0000	1.6
  +++ jmol.php	19 Apr 2010 11:26:47 -0000	1.7
  @@ -1,13 +1,15 @@
   <?php
  -// Copyright 2004-2008 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2004-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a Jmol plugin for the MoniWiki
   //
   // http://jmol.sf.net
   //
  -// $Id: jmol.php,v 1.6 2008/12/09 07:54:34 wkpark Exp $
  +// $Id: jmol.php,v 1.7 2010/04/19 11:26:47 wkpark Exp $
   
   function processor_jmol($formatter,$value="") {
  +    global $DBInfo;
  +
       $verbs=array('#sticks'=>'wireframe 0.25',
                   '#ball&stick'=>'wireframe 0.18; spacefill 25%',
                   '#wireframe'=>'wireframe 0.1',
  @@ -19,25 +21,27 @@
       $default_size="width='200' height='200'";
       $sep='';
       # old java behavior
  -    if ($use_sep) { $sep='|'; }
  +    if (!empty($use_sep)) { $sep='|'; }
   
       $use_inline=1; // MOPAC format does not recognized with a param "loadInline"
   
       if ($value[0]=='#' and $value[1]=='!')
         list($line,$value)=explode("\n",$value,2);
  -    list($dum,$szarg)=explode(' ',$line);
  -    if ($szarg) {
  +    $dum=explode(' ',$line);
  +    $szarg = !empty($dum[1]) ? $dum[1] : '';
  +    if (!empty($szarg)) {
         $args= explode('x',$szarg,2);
         $xsize=intval($args[0]);$ysize=intval($args[1]);
       }
   
       $body = $value;
       //$args='<param name="emulate" value="chime" />';
  +    $args = '';
       $args.='<param name="progressbar" value="true" />';
   
       $script='set defaultColors Rasmol;set frank off;wireframe 0.18;spacefill 25%;';
       //$script='set frank off;wireframe 0.18;spacefill 25%;';
  -    if ($DBInfo->jmol_script) $script.=$DBInfo->jmol_script;
  +    if (!empty($DBInfo->jmol_script)) $script.=$DBInfo->jmol_script;
   
   
       while ($body and $body[0] == '#') {
  @@ -63,7 +67,7 @@
           $args.='<param name="script" value="'.$script.'" />'."\n";
       $args.='<param name="mayscript" value="true" />'."\n";
   
  -    if ($xsize) {
  +    if (!empty($xsize)) {
         if ($xsize > 640 or $xsize < 100) $xscale=0.5;
         if ($xscale and ($ysize > 480 or $ysize < 100)) $yscale=0.6;
         $xscale=$xsize/640.0;
  @@ -88,6 +92,8 @@
       if ($id==0) {
           $jsize=str_replace(array(" ","'"),array(",",""),$size);
           $jsIE='';
  +        $base64js = '';
  +        $base64url = '';
           if (preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT'])) {
               $jsurl=qualifiedUrl($formatter->url_prefix.'/local/base64.js');
               $base64js="<script type='text/javascript' src='$jsurl'></script>";
  @@ -205,12 +211,12 @@
   
       $pubpath = $formatter->url_prefix.'/applets/JmolPlugin';
   
  -    if ($use_inline) {
  +    if (!empty($use_inline)) {
           $molstring=$body;
  -        if ($use_sep) {
  +        if (!empty($use_sep)) {
               $molstring=str_replace("\n",$sep."\n",$molstring);
           }
  -        if ($molstring{0} == ' ') $molstring=$sep."\n".$molstring;
  +        if ($molstring[0] == ' ') $molstring=$sep."\n".$molstring;
           $args.="<param name='loadinline' value='$molstring' />";
       }
   
  
  
  
  1.27      +30 -24    moniwiki/plugin/processor/latex.php
  
  Index: latex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/latex.php,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- latex.php	21 Jul 2009 16:09:44 -0000	1.26
  +++ latex.php	19 Apr 2010 11:26:47 -0000	1.27
  @@ -1,5 +1,5 @@
   <?php
  -// Copyright 2003-2008 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a latex processor plugin for the MoniWiki
   //
  @@ -12,7 +12,7 @@
   // $path='./bin;C:/Program Files/MiKTeX 2.5/miktex/bin;C:/Program Files/ImageMagick-6.3.6-Q16';
   // # ImagMagick and MikTeX are used in this setting.
   //
  -// $Id: latex.php,v 1.26 2009/07/21 16:09:44 wkpark Exp $
  +// $Id: latex.php,v 1.27 2010/04/19 11:26:47 wkpark Exp $
   
   function _latex_renumber($match,$tag='\\tag') {
     // XXX
  @@ -29,13 +29,13 @@
   function processor_latex(&$formatter,$value="",$options=array()) {
     global $DBInfo;
   
  -  if (!$formatter->latex_uniq) {
  +  if (empty($formatter->latex_uniq)) {
       $formatter->latex_all='';
       $formatter->latex_uniq=array();
     }
   
     $latex_convert_options=
  -    $DBInfo->latex_convert_options ? $DBInfo->latex_convert_options:"-trim -crop 0x0 -density 120x120";
  +    !empty($DBInfo->latex_convert_options) ? $DBInfo->latex_convert_options:"-trim -crop 0x0 -density 120x120";
   
     $raw_mode = isset($options['retval']) ? 1:0;
   
  @@ -47,7 +47,7 @@
     $mogrify="mogrify";
     $vartmp_dir=&$DBInfo->vartmp_dir;
     $cache_dir=$DBInfo->upload_dir."/LaTeX";
  -  $cache_url=$DBInfo->upload_url ? $DBInfo->upload_url.'/LaTeX':
  +  $cache_url=!empty($DBInfo->upload_url) ? $DBInfo->upload_url.'/LaTeX':
       $DBInfo->url_prefix.'/'.$cache_dir;
     $option='-interaction=batchmode ';
     $mask='';
  @@ -55,12 +55,12 @@
     if (preg_match('/ps$/',$dvicmd)) {
       $tmpext='ps';
       $dviopt='-D 300';
  -    if ($options['dpi'])
  +    if (!empty($options['dpi']))
         $latex_convert_options.= ' -density '.$options['dpi'].'x'.$options['dpi'];
     } else {
       $tmpext='png';
       $mask='-%d';
  -    if ($options['dpi']) {
  +    if (!empty($options['dpi'])) {
         $dviopt= preg_replace('/-D 120/','',$dviopt);
         $dviopt.=' -D '.$options['dpi'];
       }
  @@ -70,13 +70,13 @@
       list($line,$value)=explode("\n",$value,2);
   
     if (!$value) {
  -    if (!$DBInfo->latex_allinone) return '';
  +    if (empty($DBInfo->latex_allinone)) return '';
     }
   
     $tex=$value;
   
  -  if ($DBInfo->latex_renumbering) {
  -    $GLOBALS['_latex_eq_num']=$formatter->latex_num ? $formatter->latex_num:0;
  +  if (!empty($DBInfo->latex_renumbering)) {
  +    $GLOBALS['_latex_eq_num']=!empty($formatter->latex_num) ? $formatter->latex_num:0;
       // renumbering
       //  just remove numbers and use \\tag{num}
       $ntex=preg_replace_callback('/\\\\begin\{\s*(equation)\s*\}((.|\n)+)\\\\end\{\s*\1\s*\}/',
  @@ -84,20 +84,21 @@
       #print '<pre>'.$ntex.'</pre>';
       if ($tex != $ntex) { $tex=$ntex; }
       $formatter->latex_num=$GLOBALS['_latex_eq_num']; // save
  -  } else if (!$raw_mode and $DBInfo->latex_allinone) {
  +  } else if (!$raw_mode and !empty($DBInfo->latex_allinone)) {
       $ntex=preg_replace('/\\\\begin\{\s*(equation)\s*\}((.|\n)+)\\\\end\{\s*\1\s*\}/e',
         "_latex_renumber(array('','\\1','\\2'),\"\n%%\")",$tex);
       if ($tex != $ntex) { $tex=$ntex; }
       #print '<pre>'.$ntex.'</pre>';
     }
   
  -  if ($DBInfo->latex_template and file_exists($DBInfo->data_dir.'/'.$DBInfo->latex_template)) {
  +  if (!empty($DBInfo->latex_template) and file_exists($DBInfo->data_dir.'/'.$DBInfo->latex_template)) {
       $templ=implode('',file($DBInfo->data_dir.'/'.$DBInfo->latex_template));
     } else {
  +    $head = !empty($DBInfo->latex_header) ? $DBInfo->latex_header : '';
       $templ="\\documentclass[10pt,notitlepage]{article}
   \\usepackage{amsmath}
   \\usepackage{amssymb}
  -\\usepackage{amsfonts}$DBInfo->latex_header
  +\\usepackage{amsfonts}$head
   %%\usepackage[all]{xy}
   \\pagestyle{empty}
   \\begin{document}
  @@ -111,18 +112,18 @@
     $uniq=$tex ? md5($src):$formatter->latex_uniq[sizeof($formatter->latex_uniq)-1];
   
     // check image file exists
  -  if (!$raw_mode and $DBInfo->latex_allinone and $tex) {
  +  if (empty($raw_mode) and !empty($DBInfo->latex_allinone) and $tex) {
       $formatter->latex_uniq[]=$uniq;
       $formatter->latex_all.=$tex."\n\\pagebreak\n\n";
       #print '<pre>'.$tex.'</pre>';
     }
   
  -  if ($DBInfo->cache_public_dir) {
  +  if (!empty($DBInfo->cache_public_dir)) {
       $fc=new Cache_text('latex',2,'png',$DBInfo->cache_public_dir);
       $pngname=$fc->_getKey($uniq,0);
       $png= $DBInfo->cache_public_dir.'/'.$pngname;
       $png_url=
  -      $DBInfo->cache_public_url ? $DBInfo->cache_public_url.'/'.$pngname:
  +      !empty($DBInfo->cache_public_url) ? $DBInfo->cache_public_url.'/'.$pngname:
         $DBInfo->url_prefix.'/'.$png;
     } else {
       $png=$cache_dir.'/'.$uniq.'.png';
  @@ -142,17 +143,19 @@
       #$convert="wconvert";
     }
   
  -  if ($formatter->preview and !$DBInfo->latex_allinone) {
  +  $bra = ''; $ket = '';
  +  if (!empty($formatter->preview) and empty($DBInfo->latex_allinone)) {
       $bra='<span class="previewTex"><input type="checkbox" class="previewTex" name="_tex_'.$uniq.'" />';
       $ket='</span>';
     }
   
     $img_exists=file_exists($png);
  -  while ($formatter->preview || $formatter->refresh || !$img_exists) {
  +  $log = '';
  +  while (!empty($formatter->preview) || !empty($formatter->refresh) || !$img_exists) {
     //if ($options['_tex_'.$uniq] || $formatter->refresh || !file_exists($png)) {
   
  -     if (!$raw_mode and $DBInfo->latex_allinone) {
  -       if (!$value) {
  +     if (empty($raw_mode) and !empty($DBInfo->latex_allinone)) {
  +       if (empty($value)) {
            #$js= '<script type="text/javascript" src="'.$DBInfo->url_prefix.'/local/latex.js"></script>';
       	 if ($formatter->register_javascripts('latex.js'));
   
  @@ -181,9 +184,12 @@
        $log=$formatter->get_errlog(1,1);
   
        if ($log) {
  -       list($dum,$log,$dum2)=preg_split('/\n!/',$log,3);
  -       if ($log) {
  +       #list($dum,$log,$dum2)=preg_split('/\n!/',$log,3);
  +       if (($p = strpos($log, "\n!")) !== FALSE) {
  +         $log = substr($log,$p);
            $log="<pre class='errlog'>".$log."</pre>\n";
  +       } else {
  +         $log = '';
          }
        }
   
  @@ -208,7 +214,7 @@
        if ($tmpext == 'ps') {
          $cmd= "$convert -transparent white $latex_convert_options $vartmp_dir/$uniq.$tmpext ".basename($outpath);
        } else {
  -       if (!$raw_mode and $DBInfo->latex_allinone) $outpath="$vartmp_dir/$uniq.$tmpext";
  +       if (!$raw_mode and !empty($DBInfo->latex_allinone)) $outpath="$vartmp_dir/$uniq.$tmpext";
          $cmd= "$mogrify -transparent white $latex_convert_options $vartmp_dir/$uniq*.$tmpext";
        }
   
  @@ -270,7 +276,7 @@
     $title=$alt;
     if (!$raw_mode and !$img_exists) {
       $title=$png_url;
  -    if ($DBInfo->latex_allinone==1 && !$formatter->wikimarkup)
  +    if ($DBInfo->latex_allinone==1 && empty($formatter->wikimarkup))
         $png_url=$DBInfo->imgs_dir.'/loading.gif';
     }
     if (!$raw_mode)
  
  
  
  1.2       +4 -4      moniwiki/plugin/processor/live3d.php
  
  Index: live3d.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/live3d.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- live3d.php	26 Jan 2006 15:45:08 -0000	1.1
  +++ live3d.php	19 Apr 2010 11:26:47 -0000	1.2
  @@ -1,11 +1,11 @@
   <?php
  -// Copyright 2003-2004 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a Live3D plugin for the MoniWiki
   //
   // http://www.vis.uni-stuttgart.de/~kraus/LiveGraphics3D
   //
  -// $Id: live3d.php,v 1.1 2006/01/26 15:45:08 wkpark Exp $
  +// $Id: live3d.php,v 1.2 2010/04/19 11:26:47 wkpark Exp $
   
   function processor_live3d($formatter,$value="") {
       if ($value[0]=='#' and $value[1]=='!')
  @@ -31,9 +31,9 @@
       }
   
       $extra= '';
  -    if ($dependent)
  +    if (!empty($dependent))
           $extra.='<param name="DEPENDENT_VARIABLES" value="'.$dependent.'" />';
  -    if ($independent)
  +    if (!empty($independent))
           $extra.='<param name="INDEPENDENT_VARIABLES" value="'.$independent.'" />';
   
       $pubpath = $formatter->url_prefix.'/applets/LiveGraphics3D';
  
  
  
  1.7       +3 -3      moniwiki/plugin/processor/mimetex.php
  
  Index: mimetex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/mimetex.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- mimetex.php	7 Jul 2006 12:59:57 -0000	1.6
  +++ mimetex.php	19 Apr 2010 11:26:47 -0000	1.7
  @@ -1,12 +1,12 @@
   <?php
  -// Copyright 2003-2006 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   //                     JoungKyun Kim <http://www.oops.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a mimetex processor plugin for the MoniWiki
   //
   // Support command line mode by JoungKyun Kim 2006/01/13
   //
  -// $Id: mimetex.php,v 1.6 2006/07/07 12:59:57 wkpark Exp $
  +// $Id: mimetex.php,v 1.7 2010/04/19 11:26:47 wkpark Exp $
   
   function processor_mimetex($formatter,$value) {
     global $DBInfo;
  @@ -16,7 +16,7 @@
     preg_match ('/\s*\$+([^\$]*)\$+\s*/', $value, $match);
     $tex = $match[1];
   
  -  $mimetex= $DBInfo->mimetex_path ? $DBInfo->mimetex_path:
  +  $mimetex= !empty($DBInfo->mimetex_path) ? $DBInfo->mimetex_path:
       $DBInfo->url_prefix.'/mimetex.cgi';
   
     $ext='gif';
  
  
  
  1.26      +11 -9     moniwiki/plugin/processor/monimarkup.php
  
  Index: monimarkup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/monimarkup.php,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- monimarkup.php	9 Oct 2009 08:20:54 -0000	1.25
  +++ monimarkup.php	19 Apr 2010 11:26:47 -0000	1.26
  @@ -1,14 +1,14 @@
   <?php
  -// Copyright 2006-2008 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2006-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a moniwiki formatting processor for the MoniWiki
   //
  -// $Id: monimarkup.php,v 1.25 2009/10/09 08:20:54 wkpark Exp $
  +// $Id: monimarkup.php,v 1.26 2010/04/19 11:26:47 wkpark Exp $
   /**
    * @date    2006-08-09
    * @name    Moniwiki Processor
    * @desc    Moniwiki default processor
  - * @version $Revision: 1.25 $
  + * @version $Revision: 1.26 $
    * @depend  1.1.3
    * @license GPL
    */
  @@ -62,7 +62,9 @@
                               $tag='';
                               if (!empty($type)) {
                                   if ($type{0}=='#' and $type{1}=='!') {
  -                                    list($tag,$dummy)= explode(' ',$type);
  +                                    #list($tag,$dummy)= explode(' ',$type);
  +                                    $tmp = explode(' ',$type);
  +                                    $tag = $tmp[0];
                                       $btype[$j]=substr($tag,2);
                                   } else if ($type{0} == ':') {
                                       # for a quote block
  @@ -184,8 +186,8 @@
                   $_eop=0;
                   $mytype=array('tag'=>'LIST','type'=>'di');
                   $indlen=$myindlen=strlen($m[0])-(isset($m[2]) ? strlen($m[2]):0);
  -                if ($line{0}=='>') {
  -                    $myclass=$m[2] ? substr($m[2],1):'quote';
  +                if ($line[0]=='>') {
  +                    $myclass=!empty($m[2]) ? substr($m[2],1):'quote';
                       $mytype['attributes']=array('class'=>$myclass);
                       $mytype['type']='dq';
                       $indlen=$myindlen=$myindlen>>1;
  @@ -228,7 +230,7 @@
                       continue;
                   }
                   if ($_indtype[$_in_li] == $indtype) {
  -                    if ($indlen == $_indlen[$_in_li]) {
  +                    if (!empty($_indlen[$_in_li]) and $indlen == $_indlen[$_in_li]) {
                           $class = isset($mytype['attributes']['class']) ? $mytype['attributes']['class']:'';
                           if ($indtype or (isset($_nodtype[$_in_li]['attributes']['class']) and
                               $_nodtype[$_in_li]['attributes']['class'] != $class)) {
  @@ -511,7 +513,7 @@
                           $anchor="<a id='$anchor_id'></a>";
                       }
   
  -                    if ($sect_num >1) $out.=$this->_div(0);
  +                    if (!empty($sect_num) and $sect_num >1) $out.=$this->_div(0);
                       $out.=$this->_div(1," class='level$c[depth]'");
                       $out.= $anchor.$ed.$formatter->head_repl($c['depth'],$val,$headinfo);
                       break;
  @@ -721,7 +723,7 @@
       }
   }
   
  -if (basename($_SERVER['argv'][0]) == basename(__FILE__)) {
  +if (!empty($_SERVER['argv']) and basename($_SERVER['argv'][0]) == basename(__FILE__)) {
   //if (basename($_SERVER['SCRIPT_NAME']) == basename(__FILE__)) {
   
   $text=<<<EOF
  
  
  
  1.5       +4 -3      moniwiki/plugin/processor/octave.php
  
  Index: octave.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/octave.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- octave.php	7 Jul 2006 12:57:33 -0000	1.4
  +++ octave.php	19 Apr 2010 11:26:47 -0000	1.5
  @@ -1,12 +1,12 @@
   <?php
  -// Copyright 2003,2004 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003,2010 by Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a octave processor plugin for the MoniWiki
   //
   // Usage: {{{#!octave
   // code..
   // }}}
  -// $Id: octave.php,v 1.4 2006/07/07 12:57:33 wkpark Exp $
  +// $Id: octave.php,v 1.5 2010/04/19 11:26:47 wkpark Exp $
   
   function processor_octave($formatter="",$value="") {
     global $DBInfo;
  @@ -61,7 +61,8 @@
       umask(022);
     }
   
  -  if ($formatter->preview || $formatter->refresh || !file_exists("$cache_dir/$uniq.png")) {
  +  $log = '';
  +  if (!empty($formatter->preview) || !empty($formatter->refresh) || !file_exists("$cache_dir/$uniq.png")) {
        $flog=tempnam($vartmp_dir,"OCTAVE");
        #
        # for Win32 woctave.exe
  
  
  
  1.8       +3 -3      moniwiki/plugin/processor/pic.php
  
  Index: pic.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/pic.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- pic.php	20 May 2008 15:58:41 -0000	1.7
  +++ pic.php	19 Apr 2010 11:26:47 -0000	1.8
  @@ -1,9 +1,9 @@
   <?php
  -// Copyright 2003-2008 Kim Jeong Yeon <see2002 at new-type.com>
  +// Copyright 2003-2010 Kim Jeong Yeon <see2002 at new-type.com>
   // All rights reserved. Distributable under GPL see COPYING
   // a PIC plugin for the MoniWiki
   //
  -// $Id: pic.php,v 1.7 2008/05/20 15:58:41 wkpark Exp $
  +// $Id: pic.php,v 1.8 2010/04/19 11:26:47 wkpark Exp $
   // Usage: {{{#!pic
   // some codes
   // }}}
  @@ -22,7 +22,7 @@
     }
   
     $cache_dir=$DBInfo->upload_dir."/PIC";
  -  $cache_url=$DBInfo->upload_url ? $DBInfo->upload_url.'/PIC':
  +  $cache_url=!empty($DBInfo->upload_url) ? $DBInfo->upload_url.'/PIC':
       $DBInfo->url_prefix.'/'.$cache_dir;
   
     if ($value[0]=='#' and $value[1]=='!')
  
  
  
  1.3       +4 -2      moniwiki/plugin/processor/pre.php
  
  Index: pre.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/pre.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- pre.php	27 Dec 2006 07:57:18 -0000	1.2
  +++ pre.php	19 Apr 2010 11:26:47 -0000	1.3
  @@ -1,5 +1,5 @@
   <?php
  -// Copyright 2005 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2005-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a preserve whitespace processor plugin for the MoniWiki
   //   by Anonymous Doner :)
  @@ -10,14 +10,16 @@
   //     blah
   // }}}
   //
  -// $Id: pre.php,v 1.2 2006/12/27 07:57:18 wkpark Exp $
  +// $Id: pre.php,v 1.3 2010/04/19 11:26:47 wkpark Exp $
   
   function processor_pre($formatter,$value) {
       if ($value[0]=='#' and $value[1]=='!')
       list($line,$value)=explode("\n",$value,2);
   
  +    /*
       if ($line)
       list($tag,$args)=explode(' ',$line,2);
  +    */
   
       #$pre=preg_replace($formatter->baserule,$formatter->baserepl,$value);
       #$pre=
  
  
  
  1.4       +5 -4      moniwiki/plugin/processor/sfd.php
  
  Index: sfd.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/sfd.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- sfd.php	19 Dec 2008 13:51:10 -0000	1.3
  +++ sfd.php	19 Apr 2010 11:26:47 -0000	1.4
  @@ -1,5 +1,5 @@
   <?php
  -// Copyright 2008 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2008-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a SFD Fontforge glyph rendering plugin for the MoniWiki
   //
  @@ -10,13 +10,13 @@
   // Name: a FontForge sfd renderer
   // Description: a FontForge sfd glyph renderer
   // URL: MoniWiki:FontForgePlugin
  -// Version: $Revision: 1.3 $
  +// Version: $Revision: 1.4 $
   // License: GPL
   // Usage: {{{#!sfd
   // sfd char file
   // }}}
   //
  -// $Id: sfd.php,v 1.3 2008/12/19 13:51:10 wkpark Exp $
  +// $Id: sfd.php,v 1.4 2010/04/19 11:26:47 wkpark Exp $
   
   function processor_sfd($formatter,$value="") {
       global $DBInfo;
  @@ -37,7 +37,7 @@
           #$convert="wconvert";
       }
       $cache_dir=$DBInfo->upload_dir."/SFD";
  -    $cache_url=$DBInfo->upload_url ? $DBInfo->upload_url.'/SFD':
  +    $cache_url=!empty($DBInfo->upload_url) ? $DBInfo->upload_url.'/SFD' :
       $DBInfo->url_prefix.'/'.$cache_dir;
   
       if ($value[0]=='#' and $value[1]=='!')
  @@ -54,6 +54,7 @@
       $f=0;
       $stat=0;
       $eps='';
  +    $oop='';
       foreach ($lines as $l) {
           if ($stat == 0 and preg_match('/^StartChar:\s+(.*)$/',$l)) {
               $stat=1;
  
  
  
  1.3       +10 -10    moniwiki/plugin/processor/tpl_.php
  
  Index: tpl_.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/tpl_.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- tpl_.php	31 Mar 2008 01:26:42 -0000	1.2
  +++ tpl_.php	19 Apr 2010 11:26:47 -0000	1.3
  @@ -1,5 +1,5 @@
   <?php
  -// Copyright 2008 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2008-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a Template_ processor for the MoniWiki
   //
  @@ -8,14 +8,14 @@
   // Name: A Template_ processor
   // Description: A Template_ Processor could process Template_ syntaxs
   // URL: MoniWiki:TemplateUnderscore
  -// Version: $Revision: 1.2 $
  +// Version: $Revision: 1.3 $
   // License: LGPL
   //
   // Usage: {{{#!tpl_
   // {=date("Y-m-d h:i:s",time()) }
   // }}}
   //
  -// $Id: tpl_.php,v 1.2 2008/03/31 01:26:42 wkpark Exp $
  +// $Id: tpl_.php,v 1.3 2010/04/19 11:26:47 wkpark Exp $
   
   include_once (dirname(__FILE__).'/../../lib/Template_.compiler.php');
   
  @@ -32,16 +32,16 @@
       $params['uniq']=$id;
       $params['formatter']=&$formatter;
   
  -    $params['cache_head']='/* Template_ '.__TEMPLATE_UNDERSCORE_VER__.' '.$id.($params['path']? ' '.$params['path']:'').' */';
  +    $params['cache_head']='/* Template_ '.__TEMPLATE_UNDERSCORE_VER__.' '.$id.(!empty($params['path'])? ' '.$params['path']:'').' */';
   
       $TPL_VAR=&$formatter->_vars;
   
  -    if (!$formatter->preview and $cache->exists($id) and $cache->mtime($id) > $mtime) {
  +    if (empty($formatter->preview) and $cache->exists($id) and $cache->mtime($id) > $mtime) {
           $params['_vars']=&$formatter->_vars;
           $ret = $cache->fetch($id,$mtime,$params);
           if ($ret === true) return '';
  -        if ($params['print']) return eval('?'.'>'.$ret.'<'.'?php ');
  -        if ($params['raw']) return $ret;
  +        if (!empty($params['print'])) return eval('?'.'>'.$ret.'<'.'?php ');
  +        if (!empty($params['raw'])) return $ret;
           ob_start();
           eval('?'.'>'.$ret.'<'.'?php ');
           $fetch = ob_get_contents();
  @@ -56,13 +56,13 @@
   
       if ($source[0]=='#' and $source[1]=='!')
           list($line,$source)=explode("\n",$source,2);
  -    if ($line) list($tag,$args)=explode(' ',$line,2);
  +    //if (!empty($line)) list($tag,$args)=explode(' ',$line,2);
   
       $out=$compiler->_compile_template($formatter, $source, $params);
       if (!$formatter->preview)
           $cache->update($id,$out);
  -    if ($params['print']) return eval('?'.'>'.$out.'<'.'?php ');
  -    if ($params['raw']) return $out;
  +    if (!empty($params['print'])) return eval('?'.'>'.$out.'<'.'?php ');
  +    if (!empty($params['raw'])) return $out;
       #print '<pre>'.(preg_replace('/</','&lt;',$out)).'</pre>';
       ob_start();
       eval('?'.'>'.$out.'<'.'?php ');
  
  
  
  1.47      +8 -6      moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.46
  retrieving revision 1.47
  diff -u -r1.46 -r1.47
  --- vim.php	26 Dec 2008 16:51:28 -0000	1.46
  +++ vim.php	19 Apr 2010 11:26:47 -0000	1.47
  @@ -1,5 +1,5 @@
   <?php
  -// Copyright 2003-2006 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a vim colorizer plugin for the MoniWiki
   //
  @@ -9,7 +9,7 @@
   // Name: a VIM syntax colorizer
   // Description: a Syntax colorizing processor using the VIM
   // URL: MoniWiki:VimProcessor
  -// Version: $Revision: 1.46 $
  +// Version: $Revision: 1.47 $
   // License: GPL
   // Usage: {{{#!vim sh|c|sh|.. [number]
   // some codes
  @@ -18,7 +18,7 @@
   // Win32 note:
   //  add $path="/bin;/Program Files/Vim/VimXX"; in the config.php
   //
  -// $Id: vim.php,v 1.46 2008/12/26 16:51:28 wkpark Exp $
  +// $Id: vim.php,v 1.47 2010/04/19 11:26:47 wkpark Exp $
   
   function processor_vim($formatter,$value,$options) {
     global $DBInfo;
  @@ -53,6 +53,7 @@
     $src=$value;
     if (!preg_match('/^\w+$/',$type)) $type='nosyntax';
   
  +  $option = '';
     if ($extra == "number") 
       $option='+"set number" ';
   
  @@ -71,7 +72,7 @@
     }
   
     $script='';
  -  if ($DBInfo->use_numbering and empty($formatter->no_js)) {
  +  if (!empty($DBInfo->use_numbering) and empty($formatter->no_js)) {
       $formatter->register_javascripts('numbering.js');
   
       $script="<script type=\"text/javascript\">
  @@ -87,7 +88,7 @@
       umask($om);
     }
   
  -  if (file_exists($html) && !$formatter->refresh && !$formatter->preview) {
  +  if (file_exists($html) && empty($formatter->refresh) && empty($formatter->preview)) {
       $out = "";
       $fp=fopen($html,"r");
       while (!feof($fp)) $out .= fread($fp, 1024);
  @@ -103,7 +104,7 @@
       return '<div>'.$script."<pre class='wiki' id='PRE-$uniq'>\n$src</pre></div>\n";
     }
   
  -  $tohtml= $DBInfo->vim_2html ? $DBInfo->vim_2html:
  +  $tohtml= !empty($DBInfo->vim_2html) ? $DBInfo->vim_2html:
       $tohtml='$VIMRUNTIME/syntax/2html.vim';
     #$tohtml= realpath($DBInfo->data_dir).'/2html.vim';
     if(getenv("OS")=="Windows_NT") {
  @@ -125,6 +126,7 @@
           ' +"so '.$tohtml.'" +"wq! '.$fout.'" +qall';
   
     $log='';
  +  $out = '';
     if(getenv("OS")=="Windows_NT") {
       system($cmd);
       $out=join(file($fout),"");
  
  
  
  1.9       +7 -6      moniwiki/plugin/processor/xsltproc.php
  
  Index: xsltproc.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/xsltproc.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- xsltproc.php	7 Jul 2006 15:06:37 -0000	1.8
  +++ xsltproc.php	19 Apr 2010 11:26:47 -0000	1.9
  @@ -1,12 +1,12 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a xml processor plugin for the MoniWiki
   //
   // Usage: {{{#!xsltproc
   // xml codes
   // }}}
  -// $Id: xsltproc.php,v 1.8 2006/07/07 15:06:37 wkpark Exp $
  +// $Id: xsltproc.php,v 1.9 2010/04/19 11:26:47 wkpark Exp $
   
   function processor_xsltproc($formatter,$value) {
     global $DBInfo;
  @@ -22,7 +22,7 @@
   
     $cache= new Cache_text("docbook");
   
  -  if (!$formatter->preview and !$formatter->refresh and $cache->exists($pagename) and $cache->mtime($pagename) > $formatter->page->mtime())
  +  if (empty($formatter->preview) and empty($formatter->refresh) and $cache->exists($pagename) and $cache->mtime($pagename) > $formatter->page->mtime())
       return $cache->fetch($pagename);
   
     list($line,$body)=explode("\n",$value,2);
  @@ -36,7 +36,7 @@
       }
       $buff.=$line."\n";
       list($line,$body)=explode("\n",$body,2);
  -    if ($flag) break;
  +    if (!empty($flag)) break;
     }
     $src=$buff.$line."\n".$body;
   
  @@ -49,13 +49,14 @@
   
     $fp=popen($cmd.$formatter->NULL,"r");
     #fwrite($fp,$src);
  +  $html = '';
     if (is_resource($fp)) {
       while($s = fgets($fp, 1024)) $html.= $s;
       pclose($fp);
     }
     unlink($tmpf);
   
  -  if (!$html) {
  +  if (empty($html)) {
       $src=str_replace("<","&lt;",$value);
       $cache->remove($pagename);
       return "<pre class='code'>$src\n</pre>\n";
  @@ -66,7 +67,7 @@
       if ($new) $html=$new;
     }
   
  -  if (!$formatter->preview)
  +  if (empty($formatter->preview))
       $cache->update($pagename,$html);
   
     return $html;
  
  
  


1271676928;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv26491\n\nModified Files:\n	wiki.php wikilib.php \nLog Message:\n[#315290] fixed notice warnings\n\n
wkpark      2010/04/19 20:35:28

  Modified:    .        wiki.php wikilib.php
  Log:
  [#315290] fixed notice warnings
  
  Revision  Changes    Path
  1.516     +60 -47    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.515
  retrieving revision 1.516
  diff -u -r1.515 -r1.516
  --- wiki.php	17 Apr 2010 12:05:23 -0000	1.515
  +++ wiki.php	19 Apr 2010 11:35:28 -0000	1.516
  @@ -1,5 +1,5 @@
   <?php
  -// Copyright 2003-2009 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING
   //
   // many codes are imported from the MoinMoin
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.515 2010/04/17 12:05:23 wkpark Exp $
  +// $Id: wiki.php,v 1.516 2010/04/19 11:35:28 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.515 $',1,-1);
  +$_revision = substr('$Revision: 1.516 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -75,7 +75,7 @@
     if (!empty($DBInfo->myplugins) and is_array($DBInfo->myplugins))
       $plugins=array_merge($plugins,$DBInfo->myplugins);
   
  -  return $plugins[$pname];
  +  return isset($plugins[$pname]) ? $plugins[$pname]:'';
   }
   
   function getModule($module,$name) {
  @@ -99,7 +99,7 @@
       $processors=unserialize($cp->fetch('processors'));
       if (is_array($DBInfo->myprocessors))
         $processors=array_merge($processors,$DBInfo->myprocessors);
  -    return $processors[$prog];
  +    return isset($processors[$prog]) ? $processors[$prog]:'';
     }
     if (!empty($DBInfo->include_path))
       $dirs=explode(':',$DBInfo->include_path);
  @@ -121,7 +121,7 @@
     if (is_array($DBInfo->myprocessors))
       $processors=array_merge($processors,$DBInfo->myprocessors);
   
  -  return $processors[strtolower($pro_name)];
  +  return isset($processors[$prog]) ? $processors[$prog]:'';
   }
   
   function getFilter($filtername) {
  @@ -313,6 +313,7 @@
       $sisters=dba_fetch($pagename,$this->metadb);
       $addons=$this->aux->getSisterSites($pagename,$mode);
   
  +    $ret = '';
       if ($sisters)
         $ret='[wiki:'.str_replace(' ',":$pagename] [wiki:",$sisters).":$pagename]";
       $pagename=_preg_search_escape($pagename);
  @@ -903,14 +904,14 @@
         $pc->update($pcid,serialize($pages));
   
         return $pages;
  -    } else if ($options['limit']) { # XXX
  +    } else if (!empty($options['limit'])) { # XXX
          while ($file = readdir($handle)) {
             if (is_dir($this->text_dir."/".$file)) continue;
             if (filemtime($this->text_dir."/".$file) > $options['limit'])
                $pages[] = $this->keyToPagename($file);
          }
          closedir($handle);
  -    } else if ($options['count']) {
  +    } else if (!empty($options['count'])) {
          $count=$options['count'];
          while (($file = readdir($handle)) && $count > 0) {
             if (is_dir($this->text_dir."/".$file)) continue;
  @@ -1037,7 +1038,7 @@
         $out = array();
         foreach($lines as $line) {
           $dum=explode("\t",$line,2);
  -        if ($keys[$dum[0]]) continue;
  +        if (!empty($dum[0]) and !empty($keys[$dum[0]])) continue;
           $keys[$dum[0]]=1;
           $out[]=$line;
         }
  @@ -1055,7 +1056,7 @@
       $time=gmdate("Y-m-d\TH:i:s");
   
       if ($options['id'] == 'Anonymous') {
  -      $id=$options['name'] ?
  +      $id=!empty($options['name']) ?
           _stripslashes($options['name']):$_SERVER['REMOTE_ADDR'];
       } else {
         $id=$options['nick'] ? $options['nick']:$options['id'];
  @@ -1109,7 +1110,7 @@
       $comment=escapeshellcmd($comment);
   
       $myid=$user->id;
  -    if ($user->info['nick']) {
  +    if (!empty($user->info['nick'])) {
         $myid.=' '.$user->info['nick'];
         $options['nick']=$user->info['nick'];
       }
  @@ -1129,14 +1130,14 @@
   
       # check minor edits XXX
       $minor=0;
  -    if ($this->use_minorcheck or $options['minorcheck']) {
  +    if (!empty($this->use_minorcheck) or !empty($options['minorcheck'])) {
         $info=$page->get_info();
         if ($info[1]) {
           eval('$check='.$info[1].';');
           if (abs($check) < 3) $minor=1;
         }
       }
  -    if (!$options['minor'] and !$minor)
  +    if (empty($options['minor']) and !$minor)
         $this->addLogEntry($keyname, $REMOTE_ADDR,$comment,"SAVE");
       return 0;
     }
  @@ -1154,7 +1155,7 @@
         $version=new $class ($this);
         $log=$REMOTE_ADDR.';;'.$user->id.';;'.$comment;
         $ret=$version->ci($page->name,$log);
  -      if ($options['history'])
  +      if (!empty($options['history']))
           $version->delete($page->name);
       }
       $delete=@unlink($this->text_dir."/$keyname");
  @@ -1303,6 +1304,7 @@
     }
   
     function diff($pagename,$rev="",$rev2="") {
  +    $option = '';
       if ($rev) $option="-r$rev ";
       if ($rev2) $option.="-r$rev2 ";
   
  @@ -1497,7 +1499,7 @@
           # cache header : <,?,php /* Generator Version uniqid tpl_path(optional) */
           $check=fgets($fp);
           if ($check{0}=='<' and $check{1}=='?') {
  -          list($tag,$sep,$generator,$ver,$id,$path,$extra)=explode(' ',$check);
  +          @list($tag,$sep,$generator,$ver,$id,$path,$extra)=explode(' ',$check);
             $ok=1;
             if (!empty($params['uniq']) and $params['uniq'] != $id) $ok=0;
             if (!empty($ok) and !empty($params['path']) and $params['path'] != $path) $ok=0;
  @@ -1782,7 +1784,7 @@
   
       $this->themedir= !empty($DBInfo->themedir) ? $DBInfo->themedir:dirname(__FILE__);
       $this->themeurl= !empty($DBInfo->themeurl) ? $DBInfo->themeurl:$DBInfo->url_prefix;
  -    $this->set_theme($options['theme']);
  +    $this->set_theme(!empty($options['theme']) ? $options['theme'] : '');
   
       $this->NULL='';
       if(getenv("OS")!="Windows_NT") $this->NULL=' 2>/dev/null';
  @@ -1979,7 +1981,7 @@
   
     function set_theme($theme="") {
       global $DBInfo;
  -    if ($theme) {
  +    if (!empty($theme)) {
         $this->themedir.="/theme/$theme";
         $this->themeurl.="/theme/$theme";
       }
  @@ -2134,7 +2136,7 @@
         $update_body=true;
       }
   
  -    if ($this->use_metadata) {
  +    if (!empty($this->use_metadata)) {
         include_once('lib/metadata.php');
         list($this->metas,$nbody)=_get_metadata($body);
         if ($nbody!=null) $body=$nbody;
  @@ -2193,10 +2195,10 @@
         $pi['#format']= substr($pi['#format'],0,$p);
       }
   
  -    if ($notused) $body=implode("\n",$notused)."\n".$body;
  -    if ($update_body) $this->page->write($body." "); # workaround XXX
  +    if (!empty($notused)) $body=implode("\n",$notused)."\n".$body;
  +    if (!empty($update_body)) $this->page->write($body." "); # workaround XXX
       #if ($update_body) $this->page->write($body);
  -    $pi['raw']=$piline;
  +    $pi['raw']=!empty($piline) ? $piline : '';
       return $pi;
     }
   
  @@ -2334,7 +2336,7 @@
   
         if (preg_match("/^(:|w|[A-Z])/",$url))
           return $this->interwiki_repl($url,'',$attr,$external_icon);
  -      else if (!preg_match('/^('.$this->urls.')/',$url)) {
  +      else if (!empty($this->urls) and !preg_match('/^('.$this->urls.')/',$url)) {
           if ($this->use_namespace)
             return $this->interwiki_repl($url,'',$attr,$external_icon);
           else
  @@ -2407,7 +2409,7 @@
           if (preg_match("/(^.*\.(png|gif|jpeg|jpg))(\?.*?)?$/i",$url,$match)) {
             $url=preg_replace('/&amp;/','&',$url);
             $url=$match[1];
  -          $attrs=explode('&',substr($match[3],1));
  +          $attrs=!empty($match[3]) ? explode('&',substr($match[3],1)) : array();
             foreach ($attrs as $arg) {
               $name=strtok($arg,'=');
               $val=strtok(' ');
  @@ -2839,7 +2841,7 @@
       foreach (func_get_args() as $f) function_exists($f) or include_once 'plugin/function/'.$f.'.php';
     }
   
  -  function macro_repl($macro,$value='',$options='') {
  +  function macro_repl($macro,$value='',$options=array()) {
       // macro ID
       $this->mid=!empty($options['mid']) ? $options['mid']:
         (!empty($this->mid) ? ++$this->mid:1);
  @@ -2847,7 +2849,7 @@
       preg_match("/^([A-Za-z0-9]+)(\((.*)\))?$/",$macro,$match);
       if (empty($match)) return $this->word_repl($macro);
       $bra='';$ket='';
  -    if ($this->wikimarkup and $macro != 'attachment' and !$options['nomarkup']) {
  +    if (!empty($this->wikimarkup) and $macro != 'attachment' and empty($options['nomarkup'])) {
         $markups=str_replace(array('=','-','<'),array('==','-=','&lt;'),$macro);
         $markups=preg_replace('/&(?!#?[a-z0-9]+;)/i','&amp;',$markups);
         $bra= "<span class='wikiMarkup'><!-- wiki:\n[[$markups]]\n-->";
  @@ -2889,12 +2891,13 @@
     function processor_repl($processor,$value, $options = false) {
       $bra='';$ket='';
       if (!empty($this->wikimarkup) and empty($options['nomarkup'])) {
  -      if ($options['type'] == 'inline') {
  +      if (!empty($options['type']) and $options['type'] == 'inline') {
           $markups=str_replace(array('=','-','&','<'),array('==','-=','&amp;','&lt;'),$value);
           $bra= "<span class='wikiMarkup' style='display:inline'><!-- wiki:\n".$markups."\n-->";
         } else {
  -        if ($processor == $this->pi['#format']) { $btag='';$etag=''; }
  +        if (!empty($this->pi['#format']) and $processor == $this->pi['#format']) { $btag='';$etag=''; }
           else { $btag='{{{';$etag='}}}'; }
  +        $notag = '';
           if ($value{0}!='#' and $value{1}!='!') $notag="\n";
           $markups=str_replace(array('=','-','&','<'),array('==','-=','&amp;','&lt;'),$value);
           $bra= "<span class='wikiMarkup'><!-- wiki:\n".$btag.$notag.$markups.$etag."\n-->";
  @@ -2929,7 +2932,7 @@
       $classname='processor_'.$pf;
       $myclass= & new $classname($this,$options);
       $ret= call_user_func(array($myclass,'process'),$value,$options);
  -    if ($myclass->_type=='wikimarkup') return $ret;
  +    if (!empty($myclass->_type) and $myclass->_type=='wikimarkup') return $ret;
       return $bra.$ret.$ket;
     }
   
  @@ -3321,7 +3324,7 @@
     }
   
     function _fixpath() {
  -    $this->url_prefix= qualifiedUrl($DBInfo->url_prefix);
  +    //$this->url_prefix= qualifiedUrl($this->url_prefix);
       $this->prefix= qualifiedUrl($this->prefix);
       $this->imgs_dir= qualifiedUrl($this->imgs_dir);
       $this->imgs_dir_interwiki=qualifiedUrl($this->imgs_dir_interwiki);
  @@ -3566,15 +3569,16 @@
           }
         }
   
  -      if (!$in_pre and $line[0]=='#' and $line[1]=='#') {
  +      if (!$in_pre and isset($line[1]) and $line[0]=='#' and $line[1]=='#') {
           $out='';
  -        if ($line[2]=='[') {
  +        $ll = isset($line[2]) ? $line[2] : '';
  +        if ($ll=='[') {
             $macro=substr($line,4,-2);
             $out= $this->macro_repl($macro,'',array('nomarkup'=>1));
  -        } else if ($line[2]=='#') {
  +        } else if ($ll=='#') {
             $div_enclose.='<div id="'.substr($line,3).'">';
             $my_div++;
  -        } else if ($line[2]=='.') {
  +        } else if ($ll=='.') {
             $div_enclose.='<div class="'.substr($line,3).'">';
             $my_div++;
           } else if ($my_div>0) {
  @@ -3623,7 +3627,8 @@
            # check processor
            $t = isset($line{$p+3});
            if ($t and $line[$p+3] == "#" and $line[$p+4] == "!") {
  -            list($tag,$dummy)=explode(" ",substr($line,$p+5),2);
  +            $dummy=explode(" ",substr($line,$p+5),2);
  +            $tag = $dummy[0];
   
               if (function_exists("processor_".$tag)) {
                 $processor=$tag;
  @@ -3653,7 +3658,7 @@
         }
   
         $ll=strlen($line);
  -      if ($line[$ll-1]=='&') {
  +      if ($ll and $line[$ll-1]=='&') {
           $oline.=substr($line,0,-1)."\n";
           continue;
         } else if (empty($oline) and preg_match('/^\s*\|\|/',$line) and !preg_match('/\|(\||-+)\s*$/',$line)) {
  @@ -3726,9 +3731,10 @@
                $divtype=' class="indent"';
              }
   
  +           $numtype = '';
              if ($line[0]=='*') {
                $limatch[1]='*';
  -             $myindlen=($line{1}==' ') ? $indlen+2:$indlen+1;
  +             $myindlen=(isset($line[1]) and $line[1]==' ') ? $indlen+2:$indlen+1;
                preg_match("/^(\*\s?)/",$line,$m);
                $liopen='<li>'; // XXX
                $line=substr($line,strlen($m[1]));
  @@ -3746,11 +3752,11 @@
                   $_myindlen[$in_li]=$myindlen;
                }
                $numtype=$limatch[2][0];
  -             if ($limatch[3])
  +             if (isset($limatch[3]))
                  $numtype.=substr($limatch[3],1);
                $indtype="ol";
                $lival='';
  -             if ($in_li and $limatch[3])
  +             if ($in_li and isset($limatch[3]))
                  $lival=' value="'.substr($limatch[3],1).'"';
                $liopen="<li$lival>"; // XXX
              } elseif (preg_match("/^([^:]+)::\s/",$line,$limatch)) {
  @@ -4069,7 +4075,7 @@
   
       echo $this->get_javascripts();
       echo $text;
  -    if ($this->sisters and !$options['nosisters']) {
  +    if (!empty($this->sisters) and empty($options['nosisters'])) {
         $sister_save=$this->sister_on;
         $this->sister_on=0;
         $sisters=implode("\n",$this->sisters);
  @@ -4512,8 +4518,9 @@
     function get_actions($args='',$options) {
       $menu=array();
       if (!empty($this->pi['#action']) && !in_array($this->pi['#action'],$this->actions)){
  -      list($act,$txt)=explode(" ",$this->pi['#action'],2);
  -      if (!$txt) $txt=$act;
  +      $tmp =explode(" ",$this->pi['#action'],2);
  +      $act = $txt = $tmp[0];
  +      if (!empty($tmp[1])) $txt = $tmp[1];
         $menu[]= $this->link_to("?action=$act",_($txt)," rel='nofollow' accesskey='x'");
         if (strtolower($act) == 'blog')
           $this->actions[]='BlogRss';
  @@ -4601,7 +4608,7 @@
     alt="powered by MoniWiki" /></a>
   FOOT;
   
  -    if (is_object($options['timer'])) {
  +    if (isset($options['timer']) and is_object($options['timer'])) {
         $options['timer']->Check();
         $timer=$options['timer']->Total();
       }
  @@ -4657,6 +4664,7 @@
       }
   
       if (empty($msgtitle) and !empty($options['title'])) $msgtitle=$options['title'];
  +    $groupt = '';
       if (empty($title)) {
         if (!empty($group)) { # for UserNameSpace
           $title=$mypgname;
  @@ -5069,7 +5077,7 @@
       if ($log and file_exists($log) and ($sz=filesize($log))) {
         $fd=fopen($log,'r');
         if (is_resource($fd)) {
  -        $maxl=$DBInfo->errlog_maxline ? min($DBInfo->errlog_maxline,200):20;
  +        $maxl=!empty($DBInfo->errlog_maxline) ? min($DBInfo->errlog_maxline,200):20;
           if ($all or $sz <= $maxl*70) { # approx log size ~ line * 70
             $out=fread($fd,$sz);
           } else {
  @@ -5082,7 +5090,7 @@
           $this->LOG='';
           $this->mylog='';
   
  -        if (!$DBInfo->raw_errlog and !$raw) {
  +        if (empty($DBInfo->raw_errlog) and !$raw) {
             $out=preg_replace('/(\/[a-z0-9.]+)+/','/XXX',$out);
           }
           return $out;
  @@ -5387,6 +5395,7 @@
     // parse action
     // action=foobar, action=foobar/macro, action=foobar/json etc.
     $full_action=$action;
  +  $action_mode='';
     if (($p=strpos($action,'/'))!==false) {
       $full_action=strtr($action,'/','-');
       $action_mode=substr($action,$p+1);
  @@ -5488,16 +5497,19 @@
           $button= $formatter->link_to("?action=edit",$formatter->icon['create']._("Create this page"));
           if ($oldver) {
             $formatter->send_title(sprintf(_("%s has saved revisions"),$page->name),"",$options);
  +          $searchval=htmlspecialchars($options['page']);
             echo '<h2>'.sprintf(_("%s or click %s to fulltext search.\n"),$button,$formatter->link_to("?action=fullsearch&amp;value=$searchval",_("here"))).'</h2>';
             $options['info_actions']=array('recall'=>'view','revert'=>'revert');
             $options['title']='<h3>'.sprintf(_("Old Revisions of the %s"),htmlspecialchars($page->name)).'</h3>';
  +          #if (empty($formatter->wordrule)) $formatter->set_wordrule();
             echo $formatter->macro_repl('Info','',$options);
           } else {
             $formatter->send_title(sprintf(_("%s is not found in this Wiki"),$page->name),"",$options);
             $searchval=htmlspecialchars($options['page']);
             echo '<h2>'.sprintf(_("%s or click %s to fulltext search.\n"),$button,$formatter->link_to("?action=fullsearch&amp;value=$searchval",_("here"))).'</h2>';
  +          $err = array();
             echo $formatter->macro_repl('LikePages',$page->name,$err);
  -          if ($err['extra'])
  +          if (!empty($err['extra']))
               echo $err['extra'];
   
             echo '<h2>'._("Please try to search with another word").'</h2>';
  @@ -5588,7 +5600,7 @@
         $extra_out='';
         $_macros=null;
        
  -      if (!$formatter->refresh and (($mtime > $dtime) and ($check < $Config['cachetime']))) {
  +      if (empty($formatter->refresh) and (($mtime > $dtime) and ($check < $Config['cachetime']))) {
           $_macros= unserialize($mcache->fetch($pagename));
           $out= $cache->fetch($pagename);
           $mytime=gmdate("Y-m-d H:i:s",$mtime+$options['tz_offset']);
  @@ -5713,6 +5725,7 @@
         return;
       }
   
  +    $options['action_mode']='';
       if (!empty($action_mode) and in_array($action_mode,array('ajax','macro'))) {
         if ($_SERVER['REQUEST_METHOD']=="POST")
           $options=array_merge($_POST,$options);
  @@ -5746,7 +5759,7 @@
         if ($_SERVER['REQUEST_METHOD']=="POST")
           $options=array_merge($_POST,$options);
         else { # do_post_* set some primary variables as $options
  -        $options['value']=$_GET['value'];
  +        $options['value']=!empty($_GET['value']) ? $_GET['value'] : '';
         }
         call_user_func("do_post_$plugin",$formatter,$options);
         return;
  
  
  
  1.291     +34 -30    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.290
  retrieving revision 1.291
  diff -u -r1.290 -r1.291
  --- wikilib.php	17 Apr 2010 12:05:23 -0000	1.290
  +++ wikilib.php	19 Apr 2010 11:35:28 -0000	1.291
  @@ -1,5 +1,5 @@
   <?php
  -// Copyright 2003-2008 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING
   //
   // many codes are imported from the MoinMoin
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.290 2010/04/17 12:05:23 wkpark Exp $
  +// $Id: wikilib.php,v 1.291 2010/04/19 11:35:28 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -69,7 +69,7 @@
     $proto= 'http';
     if (!empty($_SERVER['HTTPS'])) $proto= 'https';
     else $proto= strtolower(strtok($_SERVER['SERVER_PROTOCOL'],'/'));
  -  if (isset($url[0]) and $url[0] != '/') $url='/'.$url; // XXX
  +  if (empty($url[0]) or $url[0] != '/') $url='/'.$url; // XXX
     return $proto.'://'.$_SERVER['HTTP_HOST'].$port.$url;
   }
   
  @@ -571,7 +571,7 @@
        $this->ticket=$ticket;
        # set the fake cookie
        $_COOKIE['MONI_ID']=$ticket.'.'.urlencode($this->id);
  -     if ($this->info['nick']) $_COOKIE['MONI_NICK']=$this->info['nick'];
  +     if (!empty($this->info['nick'])) $_COOKIE['MONI_NICK']=$this->info['nick'];
   
        #$path=strpos($_SERVER['HTTP_USER_AGENT'],'Safari')===false ?
        #  get_scriptname():'/';
  @@ -1187,14 +1187,14 @@
     }
   
     $formatter->send_header("Status: 406 Not Acceptable",$options);
  -  if ($options['title'])
  +  if (!empty($options['title']))
       $formatter->send_title('',"",$options);
     else
       $formatter->send_title(_("406 Not Acceptable"),"",$options);
  -  if ($options['err']) {
  +  if (!empty($options['err'])) {
       $formatter->send_page($options['err']);
     } else {
  -    if ($options['action'])
  +    if (!empty($options['action']))
         $formatter->send_page("== ".sprintf(_("%s is not valid action"),$options['action'])." ==\n");
       else
         $formatter->send_page("== "._("Is it valid action ?")." ==\n");
  @@ -1205,7 +1205,7 @@
   }
   
   function ajax_invalid($formatter,$options) {
  -  if ($options['call']) return false;
  +  if (!empty($options['call'])) return false;
     $formatter->send_header(array("Content-Type: text/plain",
   			"Status: 406 Not Acceptable"),$options);
     print "false\n";
  @@ -1297,14 +1297,14 @@
     
     $page = $DBInfo->getPage($options['page']);
   
  -  if ($options['name']) $options['name']=urldecode($options['name']);
  +  if (!empty($options['name'])) $options['name']=urldecode($options['name']);
     $pagename= $formatter->page->urlname;
  -  if ($options['name'] == $options['page']) {
  +  if (!empty($options['name']) and $options['name'] == $options['page']) {
       $DBInfo->deletePage($page,$options);
       $title = sprintf(_("\"%s\" is deleted !"), $page->name);
   
       $myrefresh='';
  -    if ($DBInfo->use_save_refresh) {
  +    if (!empty($DBInfo->use_save_refresh)) {
         $sec=$DBInfo->use_save_refresh - 1;
         $lnk=$formatter->link_url($formatter->page->urlname,"?action=show");
         $myrefresh='Refresh: '.$sec.'; url='.qualifiedURL($lnk);
  @@ -1314,7 +1314,7 @@
       $formatter->send_title($title,"",$options);
       $formatter->send_footer('',$options);
       return;
  -  } else if ($options['name']) {
  +  } else if (!empty($options['name'])) {
       #print $options['name'];
       $options['msg'] = _("Please delete this file manually.");
     }
  @@ -1323,7 +1323,7 @@
     $formatter->send_title($title,"",$options);
     print "<form method='post'>
   Comment: <input name='comment' size='80' value='' /><br />\n";
  -  if ($DBInfo->delete_history)
  +  if (!empty($DBInfo->delete_history))
       print _("with revision history")." <input type='checkbox' name='history' />\n";
     if ($DBInfo->security->is_protected("DeletePage",$options))
       print "Password: <input type='password' name='passwd' size='20' value='' />
  @@ -1682,7 +1682,7 @@
   
     $savetext=$options['savetext'];
     $datestamp=$options['datestamp'];
  -  $button_preview=is_numeric($options['button_preview']);
  +  $button_preview=!empty($options['button_preview']) ? is_numeric($options['button_preview']) : '';
     $button_merge=!empty($options['button_merge']) ? 1:0;
     $button_merge=!empty($options['manual_merge']) ? 2:$button_merge;
     $button_merge=!empty($options['force_merge']) ? 3:$button_merge;
  @@ -1785,7 +1785,7 @@
       }
     }
   
  -  if (!$button_preview && $orig == $new) {
  +  if (empty($button_preview) && !empty($orig) && $orig == $new) {
       $options['msg']=sprintf(_("Go back or return to %s"),$formatter->link_tag($formatter->page->urlname,"",htmlspecialchars($options['page'])));
       $formatter->send_header("",$options);
       $formatter->send_title(_("No difference found"),"",$options);
  @@ -1812,7 +1812,7 @@
     }
   
     $ok_ticket=0;
  -  if (!$button_preview and !$use_any and $DBInfo->use_ticket and $options['id'] == 'Anonymous') {
  +  if (!$button_preview and !$use_any and !empty($DBInfo->use_ticket) and $options['id'] == 'Anonymous') {
       if ($options['__seed'] and $options['check']) {
         $mycheck=getTicket($options['__seed'],$_SERVER['REMOTE_ADDR'],4);
         if ($mycheck==$options['check'])
  @@ -1884,7 +1884,7 @@
       if ($options['category'])
         $savetext.="----\n$options[category]\n";
   
  -    $options['minor'] = $DBInfo->use_minoredit ? $options['minor']:0;
  +    $options['minor'] = !empty($DBInfo->use_minoredit) ? $options['minor']:0;
       if ($options['minor']) {
         $user=$DBInfo->user; # get from COOKIE VARS
         if ($DBInfo->owners and in_array($user->id,$DBInfo->owners)) {
  @@ -2079,9 +2079,11 @@
     $pages = $DBInfo->getPageLists();
   
     $test=preg_match("/^(\d+)\s*,?\s?(simple|nobr)?$/",$value,$match);
  +  $count = '';
  +  $mode = '';
     if ($test) {
       $count= intval($match[1]);
  -    $mode=$match[2];
  +    $mode= !empty($match[2]) ? $match[2] : '';
     }
     if ($count <= 0) $count=1;
     $counter= $count;
  @@ -2208,7 +2210,7 @@
     if (!$value) {
       return gmdate($fmt,time()+$tz_offset);
     }
  -  if ($value[10]== 'T') {
  +  if (isset($value[10]) and $value[10]== 'T') {
       $value[10]=' ';
       $value.=' GMT';
     }
  @@ -2342,10 +2344,10 @@
     } else {
       $button=_("Save");
       $css=!empty($user->info['css_url']) ? $user->info['css_url'] : '';
  -    $email=$user->info['email'];
  +    $email=!empty($user->info['email']) ? $user->info['email'] : '';
       $nick=!empty($user->info['nick']) ? $user->info['nick'] : '';
       $tz_offset=!empty($user->info['tz_offset']) ? $user->info['tz_offset'] : 0;
  -    if ($user->info['password'])
  +    if (!empty($user->info['password']))
         $again="<b>"._("New password")."</b>&nbsp;<input type='password' size='15' maxlength='$pw_length' name='passwordagain' value='' /></td></tr>";
       else
         $again='';
  @@ -2397,8 +2399,9 @@
   EOF;
   
     $passwd = !empty($passwd) ? $passwd : '';
  +  $passwd_inp = '';
     if (empty($DBInfo->use_safelogin) or $button==_("Save")) {
  -    if ($user->id == 'Anonymous' or $user->info['password'])
  +    if ($user->id == 'Anonymous' or !empty($user->info['password']))
       $passwd_inp=<<<PASS
     <tr>
        <th>$passwd_btn&nbsp;</th><td><input type="password" size="15" maxlength="$pw_length" name="password" value="$passwd" />
  @@ -2450,7 +2453,7 @@
   function macro_InterWiki($formatter,$value,$options=array()) {
     global $DBInfo;
   
  -  while (!isset($DBInfo->interwiki) or $options['init']) {
  +  while (!isset($DBInfo->interwiki) or !empty($options['init'])) {
       $cf=new Cache_text('settings');
   
       $force_init=0;
  @@ -2535,7 +2538,7 @@
       $cf->update('interwiki',$interinfo);
       break;
     }
  -  if ($options['init']) return;
  +  if (!empty($options['init'])) return;
   
     $out="<table border='0' cellspacing='2' cellpadding='0'>";
     foreach (array_keys($DBInfo->interwiki) as $wiki) {
  @@ -2548,7 +2551,7 @@
       }
       $icon=$DBInfo->imgs_dir_interwiki.strtolower($wiki).'-16.png';
       $sx=16;$sy=16;
  -    if ($DBInfo->intericon[$wiki]) {
  +    if (!empty($DBInfo->intericon[$wiki])) {
         $icon=$DBInfo->intericon[$wiki][2];
         $sx=$DBInfo->intericon[$wiki][0];
         $sy=$DBInfo->intericon[$wiki][1];
  @@ -2801,10 +2804,11 @@
    $head_dep=0;
    $TOC='';
    $a0='</a>';$a1='';
  - if ($DBInfo->toc_options)
  + if (!empty($DBInfo->toc_options))
      $value=$DBInfo->toc_options.','.$value;
  - $toctoggle=$DBInfo->use_toctoggle;
  + $toctoggle=!empty($DBInfo->use_toctoggle) ? $DBInfo->use_toctoggle : '';
    $secdep=5;
  + $prefix = '';
   
    while($value) {
      list($arg,$value)=explode(',',$value,2);
  @@ -2881,7 +2885,7 @@
      if ($simple)
        $head=strip_tags($head,'<b><i><img><sub><sup><del><tt><u><strong>');
   
  -   if (!$depth_top) { $depth_top=$dep; $depth=1; }
  +   if (empty($depth_top)) { $depth_top=$dep; $depth=1; }
      else {
        $depth=$dep - $depth_top + 1;
        if ($depth <= 0) $depth=1;
  @@ -2892,7 +2896,7 @@
      $open="";
      $close="";
   
  -   if ($match[2]) {
  +   if (!empty($match[2])) {
         # reset TOC numberings
         $dum=explode(".",$num);
         $i=sizeof($dum);
  @@ -2998,7 +3002,7 @@
     if ($opts['hits']==1)
       $opts['value']=array_pop($hits);
     $opts['all']= count($pages);
  -  if ($opts['call']) {
  +  if (!empty($opts['call'])) {
       $opts['out']=$out;
       return $opts;
     }
  
  
  


1271677664;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv28749\n\nModified Files:\n	Info.php \nLog Message:\nfixed last changes\n\n
wkpark      2010/04/19 20:47:44

  Modified:    plugin   Info.php
  Log:
  fixed last changes
  
  Revision  Changes    Path
  1.30      +2 -2      moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Info.php,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- Info.php	17 Apr 2010 12:07:26 -0000	1.29
  +++ Info.php	19 Apr 2010 11:47:44 -0000	1.30
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Info plugin for the MoniWiki
   //
  -// $Id: Info.php,v 1.29 2010/04/17 12:07:26 wkpark Exp $
  +// $Id: Info.php,v 1.30 2010/04/19 11:47:44 wkpark Exp $
   
   function _parse_rlog($formatter,$log,$options=array()) {
     global $DBInfo;
  @@ -212,7 +212,7 @@
            $state=1;
            $flag++;
            $count++;
  -         if (!empty($options['all']) and $options['all'] != 1 and $count >=$showcount) $ok=1;
  +         if ((empty($options['all']) or $options['all'] != 1) and $count >=$showcount) $ok=1;
            break;
        }
     }
  
  
  


1272266321;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin/security\nIn directory kill.kldp.net:/tmp/cvs-serv28167/plugin/security\n\nModified Files:\n	nforge.php \nLog Message:\nuse util_make_url()\n\n
wkpark      2010/04/26 16:18:41

  Modified:    plugin/security nforge.php
  Log:
  use util_make_url()
  
  Revision  Changes    Path
  1.6       +2 -2      moniwiki/plugin/security/nforge.php
  
  Index: nforge.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/nforge.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- nforge.php	6 Sep 2009 15:22:54 -0000	1.5
  +++ nforge.php	26 Apr 2010 07:18:40 -0000	1.6
  @@ -4,7 +4,7 @@
   #
   # based on needtologin security plugin.
   #
  -# $Id: nforge.php,v 1.5 2009/09/06 15:22:54 wkpark Exp $
  +# $Id: nforge.php,v 1.6 2010/04/26 07:18:40 wkpark Exp $
   
   class Security_nforge extends Security {
     var $DB;
  @@ -72,7 +72,7 @@
       $method='may_'.$action;
       if (method_exists($this, $method)) {
         if (!$this->$method($action,$options)) {
  -        header('Location: /account/login.php?return_to='.$_SERVER['SCRIPT_URI']);
  +        header('Location: '.util_make_url('/account/login.php?return_to='.$_SERVER['SCRIPT_URI']));
           exit;
         }
       }
  
  
  


1272266401;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv28219/plugin\n\nModified Files:\n	Attachments.php Echo.php EngDic.php SWFUpload.php \n	UploadFile.php UploadedFiles.php \nLog Message:\nfixed notice warnings\n\n
wkpark      2010/04/26 16:20:01

  Modified:    plugin   Attachments.php Echo.php EngDic.php SWFUpload.php
                        UploadFile.php UploadedFiles.php
  Log:
  fixed notice warnings
  
  Revision  Changes    Path
  1.3       +4 -4      moniwiki/plugin/Attachments.php
  
  Index: Attachments.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachments.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Attachments.php	26 Nov 2008 09:53:35 -0000	1.2
  +++ Attachments.php	26 Apr 2010 07:20:01 -0000	1.3
  @@ -8,12 +8,12 @@
   // Name: AttachmentsPlugin
   // Description: make a list of attachments for a given page.
   // URL: MoniWiki:AttachmentsPlugin
  -// Version: $Revision: 1.2 $
  +// Version: $Revision: 1.3 $
   // License: GPL
   //
   // Usage: [[Attachments(PageName)]]
   //
  -// $Id: Attachments.php,v 1.2 2008/11/26 09:53:35 wkpark Exp $
  +// $Id: Attachments.php,v 1.3 2010/04/26 07:20:01 wkpark Exp $
   
   function macro_Attachments($formatter,$value,$params=array()) {
       global $DBInfo;
  @@ -21,7 +21,7 @@
           $p=$DBInfo->getPage($value);
           $body=$p->get_raw_body();
           $baseurl=$formatter->link_url(_urlencode($value));
  -        $formatter->page=&$p;
  +        //$formatter->page=&$p;
       } else if ($params['text']) {
           $body=$params['text'];
       } else {
  @@ -45,7 +45,7 @@
       }
       $my=array_unique($my);
   
  -    if ($params['call']) return $my;
  +    if (!empty($params['call'])) return $my;
   
       return " * ".implode("\n * ",$my);
   }
  
  
  
  1.2       +3 -3      moniwiki/plugin/Echo.php
  
  Index: Echo.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Echo.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Echo.php	22 Aug 2003 22:55:24 -0000	1.1
  +++ Echo.php	26 Apr 2010 07:20:01 -0000	1.2
  @@ -5,12 +5,12 @@
   //
   // Usage: [[Echo(variable)]]
   //
  -// $Id: Echo.php,v 1.1 2003/08/22 22:55:24 wkpark Exp $
  +// $Id: Echo.php,v 1.2 2010/04/26 07:20:01 wkpark Exp $
   // vim:et:ts=2:
   
   function macro_Echo($formatter,$value) {
  -  if ($_SERVER[$value]) return $_SERVER[$value];
  -  if ($_ENV[$value]) return $_ENV[$value];
  +  if (!empty($_SERVER[$value])) return $_SERVER[$value];
  +  if (!empty($_ENV[$value])) return $_ENV[$value];
     return '';
   }
   
  
  
  
  1.3       +9 -16     moniwiki/plugin/EngDic.php
  
  Index: EngDic.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/EngDic.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- EngDic.php	1 Aug 2004 13:03:45 -0000	1.2
  +++ EngDic.php	26 Apr 2010 07:20:01 -0000	1.3
  @@ -1,10 +1,10 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   //
   // Usage: [[EngDic(hello)]]
   //
  -// $Id: EngDic.php,v 1.2 2004/08/01 13:03:45 wkpark Exp $
  +// $Id: EngDic.php,v 1.3 2010/04/26 07:20:01 wkpark Exp $
   
   function macro_EngDic($formatter,$value) {
     if (!$value) {
  @@ -15,21 +15,23 @@
   <input type='submit' value='Get' />
   </form>";
     }
  -  $url='http://kr.engdic.yahoo.com/search/engdic?p=';
  +  $url='http://kr.dictionary.search.yahoo.com/search/dictionaryp?p=';
   
  +  if (empty($value)) $value='hello';
     $fp=fopen($url.$value,"r");
  +  if (!is_resource($fp))
  +    return '';
     while(!feof($fp)) {
       $buf=fgets($fp,1024);
  -    @preg_match("/javascript:ListenSound\('$value','([^']+)'\)/",$buf,$match);
  -    if ($match[1]) {
  +    @preg_match("/mp3Src=(http:\/\/.*\.mp3)/",$buf,$match);
  +    if (isset($match[1])) {
         $soundid=$match[1];
         fclose($fp);
         break;
       }
     }
  -  if (!$value) $value='wiki';
     return <<<RET
  -<a target='sound' href="http://kr.engdic.yahoo.com/sound.html?p=$value&amp;soundid=$soundid"><img
  +<a target='sound' href="$soundid"><img
   src="http://img.yahoo.co.kr/dic/sound.gif" border='0'></a>
   <a href="$url$value">$value</a>
   RET;
  @@ -44,14 +46,5 @@
     $formatter->send_footer($args,$options);
   }
   
  -#function do_test($formatter,$options) {
  -#  $formatter->send_header();
  -#  $formatter->send_title();
  -#  $ret= macro_Test($formatter,$options[value]);
  -#  $formatter->send_page($ret);
  -#  $formatter->send_footer("",$options);
  -#  return;
  -#}
  -
   // vim:et:sts=4:sw=4:
   ?>
  
  
  
  1.20      +5 -5      moniwiki/plugin/SWFUpload.php
  
  Index: SWFUpload.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SWFUpload.php,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- SWFUpload.php	19 Apr 2010 11:26:46 -0000	1.19
  +++ SWFUpload.php	26 Apr 2010 07:20:01 -0000	1.20
  @@ -8,12 +8,12 @@
   // Name: SWF Upload
   // Description: SWF Upload Plugin
   // URL: http://labb.dev.mammon.se/swfupload/ MoniWikiDev:SWFUpload
  -// Version: $Revision: 1.19 $
  +// Version: $Revision: 1.20 $
   // License: GPL
   //
   // Usage: [[SWFUpload]]
   //
  -// $Id: SWFUpload.php,v 1.19 2010/04/19 11:26:46 wkpark Exp $
  +// $Id: SWFUpload.php,v 1.20 2010/04/26 07:20:01 wkpark Exp $
   
   function macro_SWFUpload($formatter,$value,$opts=array()) {
       global $DBInfo;
  @@ -28,7 +28,7 @@
       if (!empty($DBInfo->nosession)) { // ip based
           $myid=md5($_SERVER['REMOTE_ADDR'].'.'.'MONIWIKI'); // FIXME
       } else {
  -        if ($_SESSION['_swfupload'])
  +        if (!empty($_SESSION['_swfupload']))
               $myid = $_SESSION['_swfupload'];
           else {
               $myid=session_id();
  @@ -309,13 +309,13 @@
       }
   
       // check subdir
  -    if ($DBInfo->swfupload_depth > 2) {
  +    if (!empty($DBInfo->swfupload_depth) and $DBInfo->swfupload_depth > 2) {
           $depth=$DBInfo->swfupload_depth;
       } else {
           $depth=2;
       }
   
  -    if ($DBInfo->nosession) { // ip based
  +    if (!empty($DBInfo->nosession)) { // ip based
           $myid=md5($_SERVER['REMOTE_ADDR'].'.'.'MONIWIKI'); // FIXME
       } else {
           if (0 and $_SESSION['_swfupload']) // XXX flash bug?
  
  
  
  1.48      +19 -14    moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.47
  retrieving revision 1.48
  diff -u -r1.47 -r1.48
  --- UploadFile.php	12 Sep 2009 13:43:37 -0000	1.47
  +++ UploadFile.php	26 Apr 2010 07:20:01 -0000	1.48
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.47 2009/09/12 13:43:37 wkpark Exp $
  +// $Id: UploadFile.php,v 1.48 2010/04/26 07:20:01 wkpark Exp $
   
   function _upload_err_msg($error_code) {
       switch ($error_code) { 
  @@ -30,6 +30,7 @@
     global $DBInfo;
   
     $files=array();
  +  $title = '';
   
     if (isset($_FILES['upfile']) and is_array($_FILES)) {
       if (($options['multiform'] > 1) or is_array($_FILES['upfile']['name'])) {
  @@ -69,12 +70,14 @@
     $upload_ok = array();
   
     $js='';
  -  if ($options['uploadid'] or $options['MYFILES']) {
  +  $uploadid = !empty($options['uploadid']) ? $options['uploadid'] : '';
  +  if (!empty($uploadid) or !empty($options['MYFILES'])) {
       $js=<<<EOF
   <script type="text/javascript">
   /*<![CDATA[*/
   function delAllForm(id) {
     if (!opener) return;
  +  if (id == '') return;
     var fform = opener.document.getElementById(id);
   
     if (fform && fform.rows.length) { // for UploadForm
  @@ -90,7 +93,7 @@
     }
   }
   
  -delAllForm('$options[uploadid]');
  +delAllForm('$uploadid');
   /*]]>*/
   </script>\n
   EOF;
  @@ -126,17 +129,18 @@
       umask(02);
     }
     $REMOTE_ADDR=$_SERVER['REMOTE_ADDR'];
  -  $comment.="File ";
  +  $comment = "File ";
  +  $uploaded = '';
   
     $log_entry='';
   
  -  $protected_exts=$DBInfo->pds_protected ? $DBInfo->pds_protected :"pl|cgi|php";
  -  $safe_exts=$DBInfo->pds_safe ? $DBInfo->pds_safe :"txt|gif|png|jpg|jpeg";
  +  $protected_exts=!empty($DBInfo->pds_protected) ? $DBInfo->pds_protected :"pl|cgi|php";
  +  $safe_exts=!empty($DBInfo->pds_safe) ? $DBInfo->pds_safe :"txt|gif|png|jpg|jpeg";
     $protected=explode('|',$protected_exts);
     $safe=explode('|',$safe_exts);
   
     # upload file protection
  -  if ($DBInfo->pds_allowed)
  +  if (!empty($DBInfo->pds_allowed))
       $pds_exts=$DBInfo->pds_allowed;
     else
       $pds_exts="png|jpg|jpeg|gif|mp3|zip|tgz|gz|txt|css|exe|pdf|hwp";
  @@ -168,7 +172,7 @@
     }
   
     if (!$allowed) {
  -    if ($DBInfo->use_filetype) {
  +    if (!empty($DBInfo->use_filetype)) {
         $type='';
         $type=$files['upfile']['type'][$j] ? $files['upfile']['type'][$j]:'text/plain';
         list($mtype,$xtype)=explode('/',$type);
  @@ -220,7 +224,7 @@
   
     $file_path= $newfile_path = $dir."/".$upfilename;
     $filename=$upfilename;
  -  if ($options['rename'][$j]) {
  +  if (!empty($options['rename'][$j])) {
       # XXX
       $temp=explode("/",_stripslashes($options['rename'][$j]));
       $upfilename= $temp[count($temp)-1];
  @@ -264,7 +268,8 @@
     }
    
     $upfile=$files['upfile']['tmp_name'][$j];
  -  if ($files['upfile']['error'][$j] != UPLOAD_ERR_OK) {
  +  if (!empty($files['upfile']['error'][$j]) and
  +      $files['upfile']['error'][$j] != UPLOAD_ERR_OK) {
       $err_msg[]=_("ERROR:").' <tt>'.$upload_err_func($files['upfile']['error'][$j]).' : '.$upfilename .'</tt>';
       if ($files['upfile']['error'][$j] == UPLOAD_ERR_INI_SIZE)
         $err_msg[]="<tt>upload_max_filesize=".ini_get('upload_max_filesize').'</tt>';
  @@ -274,7 +279,7 @@
     $_l_path=_l_filename($file_path);
     $new_l_path=_l_filename($newfile_path);
   
  -  if ($options['replace'][$j]) {
  +  if (!empty($options['replace'][$j])) {
       // backup
       if ($newfile_path != $file_path)
         $test=@copy($_l_path, $new_l_path);
  @@ -296,7 +301,7 @@
   
     $comment.="'$upfilename' ";
   
  -  $title.=($title ? "\n":'').
  +  $title.=(!empty($title) ? "\n":'').
       sprintf(_("File \"%s\" is uploaded successfully"),$upfilename);
   
     $fullname=$formatter->page->name."/$upfilename";
  @@ -369,9 +374,9 @@
     }
   
     print $js;
  -  $formatter->send_footer();
  +  $formatter->send_footer('', $options);
   
  -  if (is_array($options['MYFILES']) and !$DBInfo->nosession)
  +  if (is_array($options['MYFILES']) and empty($DBInfo->nosession))
       session_destroy();
     return true;
   }
  
  
  
  1.37      +4 -4      moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- UploadedFiles.php	19 Apr 2010 11:26:46 -0000	1.36
  +++ UploadedFiles.php	26 Apr 2010 07:20:01 -0000	1.37
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadedFiles plugin for the MoniWiki
   //
  -// $Id: UploadedFiles.php,v 1.36 2010/04/19 11:26:46 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.37 2010/04/26 07:20:01 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     if (!empty($options['q'])) {
  @@ -374,9 +374,9 @@
         $previewlink=$link;
         $size=filesize($dir.'/'. $_l_file);
   
  -      if ($use_preview) {
  +      if (!empty($use_preview)) {
           preg_match("/\.(.{1,4})$/",$file,$m);
  -        $ext=strtolower($m[1]);
  +        $ext=isset($m[1]) ? strtolower($m[1]) : '';
   
           if ($use_preview > 1 and $ext and stristr('gif,png,jpeg,jpg',$ext)) {
             list($w, $h) = getimagesize($dir.'/'.$file);
  @@ -392,7 +392,7 @@
           }
         }
   
  -      if ($use_fileinfo) {
  +      if (!empty($use_fileinfo)) {
           $i=0;
           for (;$i<4;$i++) {
             if ($size <= 1024) {
  
  
  


1272266459;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv28304\n\nModified Files:\n	wiki.php \nLog Message:\nfixe a notice warning\n\n
wkpark      2010/04/26 16:20:59

  Modified:    .        wiki.php
  Log:
  fixe a notice warning
  
  Revision  Changes    Path
  1.517     +8 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.516
  retrieving revision 1.517
  diff -u -r1.516 -r1.517
  --- wiki.php	19 Apr 2010 11:35:28 -0000	1.516
  +++ wiki.php	26 Apr 2010 07:20:58 -0000	1.517
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.516 2010/04/19 11:35:28 wkpark Exp $
  +// $Id: wiki.php,v 1.517 2010/04/26 07:20:58 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.516 $',1,-1);
  +$_revision = substr('$Revision: 1.517 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -4553,9 +4553,14 @@
       return $menu;
     }
   
  -  function send_footer($args='',$options='') {
  +  function send_footer($args='',$options=array()) {
       global $DBInfo;
   
  +    empty($options) ? $options = array('id'=>'Anonymous',
  +                                  'tz_offset'=>$this->tz_offset,
  +                                  'page'=>$this->page->name) : null;
  +    
  +
       if (!empty($options['action_mode']) and $options['action_mode'] =='ajax') return;
   
       echo "<!-- wikiBody --></div>\n";
  
  
  


1272633394;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv16541\n\nModified Files:\n	monisetup.php \nLog Message:\n[#315303] emit raw pathinfo correctly to check accept pathinfo.\n\n
wkpark      2010/04/30 22:16:35

  Modified:    .        monisetup.php
  Log:
  [#315303] emit raw pathinfo correctly to check accept pathinfo.
  
  Revision  Changes    Path
  1.49      +6 -6      moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.48
  retrieving revision 1.49
  diff -u -r1.48 -r1.49
  --- monisetup.php	20 Oct 2009 10:56:29 -0000	1.48
  +++ monisetup.php	30 Apr 2010 13:16:34 -0000	1.49
  @@ -1,7 +1,7 @@
   <?php
   // Copyright 2003-2007 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.48 2009/10/20 10:56:29 wkpark Exp $
  +// $Id: monisetup.php,v 1.49 2010/04/30 13:16:34 wkpark Exp $
   
   function _stripslashes($str) {
     return get_magic_quotes_gpc() ? stripslashes($str):$str;
  @@ -906,6 +906,11 @@
   $lang = set_locale($lang,$_Config['charset']);
   initlocale($lang,$_Config['charset']);
   
  +if (!empty($_GET['action']) and $_GET['action'] =='pathinfo') {
  +  print $_SERVER['PATH_INFO'].'****';
  +  return;
  +}
  +
   print <<<EOF
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   <html xmlns="http://www.w3.org/1999/xhtml">
  @@ -1080,11 +1085,6 @@
   $newpasswd=isset($_POST['newpasswd']) ? $_POST['newpasswd']:'';
   $oldpasswd=isset($_POST['oldpasswd']) ? $_POST['oldpasswd']:'';
   
  -if (!empty($_GET['action']) and $_GET['action'] =='pathinfo') {
  -  print $_SERVER['PATH_INFO'].'****';
  -  return;
  -}
  -
   if ($_SERVER['REQUEST_METHOD']=="POST" && ($config or $action == 'protect')) {
   
     if ($action == 'protect') {
  
  
  


1275125095;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv12697\n\nModified Files:\n	wikilib.php \nLog Message:\nfixed last change\n\n
wkpark      2010/05/29 18:24:56

  Modified:    .        wikilib.php
  Log:
  fixed last change
  
  Revision  Changes    Path
  1.292     +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.291
  retrieving revision 1.292
  diff -u -r1.291 -r1.292
  --- wikilib.php	19 Apr 2010 11:35:28 -0000	1.291
  +++ wikilib.php	29 May 2010 09:24:55 -0000	1.292
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.291 2010/04/19 11:35:28 wkpark Exp $
  +// $Id: wikilib.php,v 1.292 2010/05/29 09:24:55 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -701,7 +701,7 @@
   
     # simple == 1 : do not use EditTextForm, simple == 2 : do not use GUI/Preview
     $has_form = false;
  -  if (!empty($options['simple']) and $options['simple']!=1 and $DBInfo->hasPage('EditTextForm')) {
  +  if ((empty($options['simple']) or $options['simple']!=1) and $DBInfo->hasPage('EditTextForm')) {
       $p=$DBInfo->getPage('EditTextForm');
       $form=$p->get_raw_body();
       $f=new Formatter($p);
  
  
  


1275355705;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv15767\n\nModified Files:\n	wiki.php \nLog Message:\n[#315403] set $action variable correctly for the POST action.\n\n
wkpark      2010/06/01 10:28:26

  Modified:    .        wiki.php
  Log:
  [#315403] set $action variable correctly for the POST action.
  
  Revision  Changes    Path
  1.518     +4 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.517
  retrieving revision 1.518
  diff -u -r1.517 -r1.518
  --- wiki.php	26 Apr 2010 07:20:58 -0000	1.517
  +++ wiki.php	1 Jun 2010 01:28:25 -0000	1.518
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.517 2010/04/26 07:20:58 wkpark Exp $
  +// $Id: wiki.php,v 1.518 2010/06/01 01:28:25 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.517 $',1,-1);
  +$_revision = substr('$Revision: 1.518 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -5364,6 +5364,7 @@
       if (isset($_POST['header'])) unset($_POST['header']);
   
       # hack for TWiki plugin
  +    $action = '';
       if (!empty($_FILES['filepath']['name'])) $action='draw';
       if (isset($GLOBALS['HTTP_RAW_POST_DATA'])) {
         # hack for Oekaki: PageName----action----filename
  @@ -5371,7 +5372,7 @@
         $options['value']=$value;
       } else {
         $value=!empty($_POST['value']) ? $_POST['value'] : '';
  -      $action=!empty($_POST['action']) ? $_POST['action'] : '';
  +      $action=!empty($_POST['action']) ? $_POST['action'] : $action;
         if (empty($action))
           $dum=explode('----',$pagename,3);
         if (isset($dum[0]) && isset($dum[1])) {
  
  
  


1276060050;wkpark;Update of /cvsroot/moniwiki/moniwiki/lib\nIn directory kill.kldp.net:/tmp/cvs-serv25062/lib\n\nModified Files:\n	difflib.php \nLog Message:\n[#315422] http://dev.naver.com/projects/nforge/issue/7901\nworkaround to render inserted empty lines correctly.\n\n
wkpark      2010/06/09 14:07:31

  Modified:    lib      difflib.php
  Log:
  [#315422] http://dev.naver.com/projects/nforge/issue/7901
  workaround to render inserted empty lines correctly.
  
  Revision  Changes    Path
  1.15      +6 -3      moniwiki/lib/difflib.php
  
  Index: difflib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/difflib.php,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- difflib.php	24 Sep 2009 07:29:18 -0000	1.14
  +++ difflib.php	9 Jun 2010 05:07:30 -0000	1.15
  @@ -9,7 +9,7 @@
   // Copyright (C) 2000, 2001 Geoffrey T. Dairiki <dairiki@dairiki.org>
   // You may copy this code freely under the conditions of the GPL.
   //
  -// $Id: difflib.php,v 1.14 2009/09/24 07:29:18 wkpark Exp $
  +// $Id: difflib.php,v 1.15 2010/06/09 05:07:30 wkpark Exp $
   // original Id: difflib.php,v 1.5 2002/01/21 06:55:47 dairiki Exp
   //assert_options(ASSERT_ACTIVE, 0);
   define('USE_ASSERTS', false);
  @@ -902,8 +902,10 @@
   
           foreach ($words as $word) {
               // new-line should only come as first char of word.
  -            if ($word == '')
  +            if ($word == '') {
  +                $this->_group .= " "; // XXX workaround to render inserted empty lines correctly.
                   continue;
  +            }
               if ($word[0] == "\n") {
                   $this->_group .= NBSP;
                   $this->_flushLine($tag);
  @@ -945,7 +947,8 @@
               $this->charset_rule .'. ) (?: (?!< \n) [^\S\n])? /xs',
                               implode("\n", $lines),
                               $m)) {
  -            return array(array(''), array(''));
  +            // return array(array(''), array(''));
  +            return array($lines, $lines);
           }
           #print "<pre>";
           #print_r( $m );
  
  
  


1276930980;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv9525\n\nModified Files:\n	wiki.php \nLog Message:\n[#315290] use empty() isset()\n\n
1276930980;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv9525/plugin\n\nModified Files:\n	FullSearch.php autogoto.php \nLog Message:\n[#315290] use empty() isset()\n\n
wkpark      2010/06/19 16:03:00

  Modified:    .        wiki.php
               plugin   FullSearch.php autogoto.php
  Log:
  [#315290] use empty() isset()
  
  Revision  Changes    Path
  1.519     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.518
  retrieving revision 1.519
  diff -u -r1.518 -r1.519
  --- wiki.php	1 Jun 2010 01:28:25 -0000	1.518
  +++ wiki.php	19 Jun 2010 07:03:00 -0000	1.519
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.518 2010/06/01 01:28:25 wkpark Exp $
  +// $Id: wiki.php,v 1.519 2010/06/19 07:03:00 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.518 $',1,-1);
  +$_revision = substr('$Revision: 1.519 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -3002,7 +3002,7 @@
       }
   
       if ($sep == '?') {
  -      if (isset($pageurl[0]) && $query_string[0]=='?')
  +      if (isset($pageurl[0]) && isset($query_string[0]) && $query_string[0]=='?')
           # add 'dummy=1' to work around the buggy php
           $query_string= '&amp;'.substr($query_string,1).'&amp;dummy=1';
           # Did you have a problem with &amp;dummy=1 ?
  @@ -5194,7 +5194,7 @@
       if ($_SERVER['PATH_INFO'][0] == '/')
         $pagename=substr($_SERVER['PATH_INFO'],1);
     } else if (!empty($_SERVER['QUERY_STRING'])) {
  -    $goto=$_POST['goto'] ? $_POST['goto']:$_GET['goto'];
  +    $goto=!empty($_POST['goto']) ? $_POST['goto']:(!empty($_GET['goto']) ? $_GET['goto'] : '');
       if (!empty($goto)) $pagename=$goto;
       else {
         $pagename = $_SERVER['QUERY_STRING'];
  
  
  
  1.32      +2 -2      moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- FullSearch.php	19 Apr 2010 11:26:46 -0000	1.31
  +++ FullSearch.php	19 Jun 2010 07:03:00 -0000	1.32
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
   //
  -// $Id: FullSearch.php,v 1.31 2010/04/19 11:26:46 wkpark Exp $
  +// $Id: FullSearch.php,v 1.32 2010/06/19 07:03:00 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
  @@ -69,7 +69,7 @@
   
     $url=$formatter->link_url($formatter->page->urlname);
     $fneedle=str_replace('"',"&#34;",$needle); # XXX
  -  $tooshort=$DBInfo->fullsearch_tooshort ? $DBInfo->fullsearch_tooshort:2;
  +  $tooshort=!empty($DBInfo->fullsearch_tooshort) ? $DBInfo->fullsearch_tooshort:2;
   
     $m1=_("Display context of search results");
     $m2=_("Search BackLinks only");
  
  
  
  1.6       +2 -2      moniwiki/plugin/autogoto.php
  
  Index: autogoto.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/autogoto.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- autogoto.php	27 Dec 2008 14:25:34 -0000	1.5
  +++ autogoto.php	19 Jun 2010 07:03:00 -0000	1.6
  @@ -5,14 +5,14 @@
   //
   // Usage: set $auto_search='AutoGoto'; in the config.php
   //
  -// $Id: autogoto.php,v 1.5 2008/12/27 14:25:34 wkpark Exp $
  +// $Id: autogoto.php,v 1.6 2010/06/19 07:03:00 wkpark Exp $
   
   function do_AutoGoto($formatter,$options) {
       global $DBInfo;
   
       $supported=array('man'=>'Man','google'=>'Google','macro'=>'Macro','tpl'=>'TPL');
   
  -    if ($DBInfo->autogoto_options) {
  +    if (!empty($DBInfo->autogoto_options)) {
           if (is_array($DBInfo->autogoto_options)) {
               $supported = array_merge($supported, $DBInfo->autogoto_options);
           } else if (is_string($DBInfo->autogoto_options)) {
  
  
  


1276931451;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv10462\n\nModified Files:\n	wiki.php \nLog Message:\n[#315445] replace split() with explode()\n\n
1276931451;wkpark;Update of /cvsroot/moniwiki/moniwiki/lib\nIn directory kill.kldp.net:/tmp/cvs-serv10462/lib\n\nModified Files:\n	HTTPClient.php metadata.php rcslite.php \nLog Message:\n[#315445] replace split() with explode()\n\n
1276931451;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv10462/plugin\n\nModified Files:\n	Attachment.php FastSearch.php \nLog Message:\n[#315445] replace split() with explode()\n\n
1276931451;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin/processor\nIn directory kill.kldp.net:/tmp/cvs-serv10462/plugin/processor\n\nModified Files:\n	text_xml.php \nLog Message:\n[#315445] replace split() with explode()\n\n
1276931451;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin/security\nIn directory kill.kldp.net:/tmp/cvs-serv10462/plugin/security\n\nModified Files:\n	acl.php \nLog Message:\n[#315445] replace split() with explode()\n\n
wkpark      2010/06/19 16:10:51

  Modified:    .        wiki.php
               lib      HTTPClient.php metadata.php rcslite.php
               plugin   Attachment.php FastSearch.php
               plugin/processor text_xml.php
               plugin/security acl.php
  Log:
  [#315445] replace split() with explode()
  
  Revision  Changes    Path
  1.520     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.519
  retrieving revision 1.520
  diff -u -r1.519 -r1.520
  --- wiki.php	19 Jun 2010 07:03:00 -0000	1.519
  +++ wiki.php	19 Jun 2010 07:10:50 -0000	1.520
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.519 2010/06/19 07:03:00 wkpark Exp $
  +// $Id: wiki.php,v 1.520 2010/06/19 07:10:50 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.519 $',1,-1);
  +$_revision = substr('$Revision: 1.520 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -2159,7 +2159,7 @@
         $pilines=array();
         while ($body and $body[0] == '#') {
           # extract first line
  -        list($line, $body)= split("\n", $body,2);
  +        list($line, $body)= explode("\n", $body,2);
           if ($line=='#') break;
           else if ($line[1]=='#') { $notused[]=$line; continue;}
           $pilines[]=$line;
  
  
  
  1.5       +2 -2      moniwiki/lib/HTTPClient.php
  
  Index: HTTPClient.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/HTTPClient.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- HTTPClient.php	2 Dec 2007 13:51:21 -0000	1.4
  +++ HTTPClient.php	19 Jun 2010 07:10:51 -0000	1.5
  @@ -260,7 +260,7 @@
                   foreach ($this->resp_headers['set-cookie'] as $c){
                       $cs=explode(';',$c);
                       foreach ($cs as $c) {
  -                        list($key, $value) = split('=', $c, 2);
  +                        list($key, $value) = explode('=', $c, 2);
                           $this->cookies[trim($key)] = $value;
                       }
                   }
  @@ -268,7 +268,7 @@
                   $c=$this->resp_headers['set-cookie'];
                   $cs=explode(';',$c);
                   foreach ($cs as $c) {
  -                    list($key, $value) = split('=', $c, 2);
  +                    list($key, $value) = explode('=', $c, 2);
                       $this->cookies[trim($key)] = $value;
                   }
               }
  
  
  
  1.7       +2 -2      moniwiki/lib/metadata.php
  
  Index: metadata.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/metadata.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- metadata.php	3 Oct 2009 10:30:54 -0000	1.6
  +++ metadata.php	19 Jun 2010 07:10:51 -0000	1.7
  @@ -2,7 +2,7 @@
   //
   // Metadata module for MoniWiki
   //
  -// $Id: metadata.php,v 1.6 2009/10/03 10:30:54 wkpark Exp $
  +// $Id: metadata.php,v 1.7 2010/06/19 07:10:51 wkpark Exp $
   
   function getMetadata($raw, $mode = 1, $params = false) {
   
  @@ -54,7 +54,7 @@
       $meta = array();
       $metaok = 0;
       while(!empty($body)) {
  -        list($line, $body) = split("\n", $body, 2);
  +        list($line, $body) = explode("\n", $body, 2);
           if ($key and ($line[0] == ' ' or $line[0] == "\t")) {
               $meta[$key].= $line . "\n";
               continue;
  
  
  
  1.6       +2 -2      moniwiki/lib/rcslite.php
  
  Index: rcslite.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/rcslite.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- rcslite.php	31 Aug 2005 10:04:40 -0000	1.5
  +++ rcslite.php	19 Jun 2010 07:10:51 -0000	1.6
  @@ -3,7 +3,7 @@
   # Copyright (c) 2004 Won-kyu Park <wkpark at kldp.org>
   #
   # this module is ported from the RcsLite.pm of the TWiki by wkpark.
  -# $Id: rcslite.php,v 1.5 2005/08/31 10:04:40 wkpark Exp $
  +# $Id: rcslite.php,v 1.6 2010/06/19 07:10:51 wkpark Exp $
   
   # Original notice:
   #
  @@ -647,7 +647,7 @@
       # Split and make sure we have trailing carriage returns
       function _mySplit($text)
       {
  -        $list = split( "\n", $text );
  +        $list = explode( "\n", $text );
           $sz=sizeof($list);
           if ($list[$sz-1]=="\n") {
               array_pop($list);
  
  
  
  1.45      +3 -3      moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.44
  retrieving revision 1.45
  diff -u -r1.44 -r1.45
  --- Attachment.php	19 Apr 2010 11:26:46 -0000	1.44
  +++ Attachment.php	19 Jun 2010 07:10:51 -0000	1.45
  @@ -7,13 +7,13 @@
   // Name: Attachment
   // Description: Attachment Plugin
   // URL: MoniWiki:AttachmentPlugin
  -// Version: $Revision: 1.44 $
  +// Version: $Revision: 1.45 $
   // Depend: 1.1.3
   // License: GPL
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.44 2010/04/19 11:26:46 wkpark Exp $
  +// $Id: Attachment.php,v 1.45 2010/06/19 07:10:51 wkpark Exp $
   
   function macro_Attachment($formatter,$value,$options=array()) {
     global $DBInfo;
  @@ -121,7 +121,7 @@
       $value=substr($value,0,$dummy);
       foreach ($args as $arg) {
         //list($k,$v)=split('=',trim($arg),2);
  -      $tmp = split('=',trim($arg),2);
  +      $tmp = explode('=',trim($arg),2);
         $k = $tmp[0];
         $v = !empty($tmp[1]) ? $tmp[1] : '';
         if ($v) {
  
  
  
  1.12      +2 -2      moniwiki/plugin/FastSearch.php
  
  Index: FastSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FastSearch.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- FastSearch.php	19 Apr 2010 11:26:46 -0000	1.11
  +++ FastSearch.php	19 Jun 2010 07:10:51 -0000	1.12
  @@ -13,7 +13,7 @@
   //
   // Usage: [[FastSearch(string)]]
   //
  -// $Id: FastSearch.php,v 1.11 2010/04/19 11:26:46 wkpark Exp $
  +// $Id: FastSearch.php,v 1.12 2010/06/19 07:10:51 wkpark Exp $
   
   include_once('lib/search.DBA.php');
   
  @@ -54,7 +54,7 @@
       return '';
     }
   
  -  $words=split(' ', strtolower($value));
  +  $words=explode(' ', strtolower($value));
     $keys='';
     $idx=array();
     foreach ($words as $word) {
  
  
  
  1.7       +1 -1      moniwiki/plugin/processor/text_xml.php
  
  Index: text_xml.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/text_xml.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- text_xml.php	5 Aug 2006 06:17:13 -0000	1.6
  +++ text_xml.php	19 Jun 2010 07:10:51 -0000	1.7
  @@ -610,7 +610,7 @@
   
     while ($body and $body[0] == '#') {
       # extract first line
  -    list($line, $body)= split("\n", $body,2);
  +    list($line, $body)= explode("\n", $body,2);
       if ($line[1]=='#' and preg_match('/^##\$'.'Log: /',$line)) {
         $log=1; $state=0;
         continue;
  
  
  
  1.11      +4 -4      moniwiki/plugin/security/acl.php
  
  Index: acl.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/acl.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- acl.php	29 Dec 2008 05:41:12 -0000	1.10
  +++ acl.php	19 Jun 2010 07:10:51 -0000	1.11
  @@ -1,6 +1,6 @@
   <?php
   # a ACL security plugin for the MoniWiki (experimental)
  -# $Id: acl.php,v 1.10 2008/12/29 05:41:12 wkpark Exp $
  +# $Id: acl.php,v 1.11 2010/06/19 07:10:51 wkpark Exp $
   #
   # Please see also http://www.dokuwiki.org/wiki:discussion:acl2
   #
  @@ -96,7 +96,7 @@
                   }
   
                   if ($acl[2] == 'allow') {
  -                    $tmp=split(',',$acl[3]);
  +                    $tmp=explode(',',$acl[3]);
                       $tmp=array_flip($tmp);
                       if ($acl[1] == $user) $pri=4;
                       else if ($acl[1] == '@ALL') $pri=1;
  @@ -112,7 +112,7 @@
                       }
                       $allowed=array_merge($allowed,$tmp);
                   } else if ($acl[2] == 'deny') {
  -                    $tmp=split(',',$acl[3]);
  +                    $tmp=explode(',',$acl[3]);
                       $tmp=array_flip($tmp);
                       if ($acl[1] == $user) $pri=4;
                       else if ($acl[1] == '@ALL') $pri=1;
  @@ -128,7 +128,7 @@
                       }
                       $denied=array_merge($denied,$tmp);
                   } else if ($acl[2] == 'protect') {
  -                    $tmp=split(',',$acl[3]);
  +                    $tmp=explode(',',$acl[3]);
                       $tmp=array_flip($tmp);
                       $protected=array_merge($protected,$tmp);
                   }
  
  
  


1276931787;wkpark;Update of /cvsroot/moniwiki/moniwiki/local\nIn directory kill.kldp.net:/tmp/cvs-serv13683/local\n\nModified Files:\n	textarea.js \nLog Message:\n[#315446] fixed textarea resizer bug for chrome/safari and IE6(FIXME!)\n\n
wkpark      2010/06/19 16:16:27

  Modified:    local    textarea.js
  Log:
  [#315446] fixed textarea resizer bug for chrome/safari and IE6(FIXME!)
  
  Revision  Changes    Path
  1.8       +18 -8     moniwiki/local/textarea.js
  
  Index: textarea.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/textarea.js,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- textarea.js	29 Jul 2009 18:07:44 -0000	1.7
  +++ textarea.js	19 Jun 2010 07:16:27 -0000	1.8
  @@ -1,4 +1,4 @@
  -// $Id: textarea.js,v 1.7 2009/07/29 18:07:44 wkpark Exp $
  +// $Id: textarea.js,v 1.8 2010/06/19 07:16:27 wkpark Exp $
   // $origId: textarea.js,v 1.9 2006/04/14 13:48:56 killes Exp $
   // from drupal
   // many functions are imported from drupal.js to eliminate dependency
  @@ -158,16 +158,26 @@
       // Opera
       this.grippie.style.marginRight = '4px';
     }
  -  if (document.all && !window.opera) {
  -    // IE
  -    this.grippie.style.width = '100%';
  -    this.grippie.style.paddingLeft = '2px';
  -    this.grippie.style.paddingRight = '1px';
  -  }
     if (/Safari/.test(navigator.userAgent)) {
       // Safari / chrome
  -    var test = this.element.offsetWidth - 10;
  +    var offset = this.wrapper.offsetWidth - this.element.offsetWidth;
  +    var test = this.wrapper.offsetWidth + offset;
       this.element.style.width = test + 'px';
  +  } else if (document.all && !window.opera) {
  +    // IE
  +    this.grippie.style.width = '100%';
  +    this.grippie.style.paddingLeft = '2px'; // XXX
  +    this.grippie.style.paddingRight = '1px'; // XXX
  +
  +    if (this.grippie.offsetWidth != this.element.offsetWidth) {
  +      var offset = this.grippie.offsetWidth - this.element.offsetWidth;
  +      if (offset < 0) {
  +        test = this.element.clientWidth; // XXX
  +      } else {
  +        test = this.element.offsetWidth + offset; // XXX
  +      }
  +      this.element.style.width = test + 'px';
  +    }
     }
     // Mozilla
     this.element.style.MozBoxSizing = 'border-box';
  
  
  


1276933417;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv16965/plugin\n\nModified Files:\n	RecentChanges.php \nLog Message:\n[#315387] check $show_hosts and show author info correctly.\n\n
wkpark      2010/06/19 16:43:37

  Modified:    plugin   RecentChanges.php
  Log:
  [#315387] check $show_hosts and show author info correctly.
  
  Revision  Changes    Path
  1.39      +13 -7     moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- RecentChanges.php	19 Apr 2010 11:26:46 -0000	1.38
  +++ RecentChanges.php	19 Jun 2010 07:43:37 -0000	1.39
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.38 2010/04/19 11:26:46 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.39 2010/06/19 07:43:37 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     global $DBInfo;
  @@ -117,14 +117,20 @@
           $changed_time_fmt = 'm-d [H:i]';
           $use_day=0;
           $template_bra="<table border='0' cellpadding='0' cellspacing='0' width='100%'>";
  -        $template_bra.="<thead><th colspan='3' class='title'>"._("Title")."</th><th class='date'>"._("Change Date").
  -          "</th><th class='author'>"._("Editor")."</th><th class='editinfo'>"._("Changes").'</th>';
  -        if ($DBInfo->use_counter)
  +        $template_bra.="<thead><th colspan='3' class='title'>"._("Title")."</th><th class='date'>".
  +          _("Change Date").'</th>';
  +        if (!empty($DBInfo->show_hosts))
  +          $template_bra.="<th class='author'>"._("Editor").'</th>';
  +        $template_bra.="<th class='editinfo'>"._("Changes").'</th>';
  +        if (!empty($DBInfo->use_counter))
             $template_bra.="<th class='hits'>"._("Hits")."</th>";
           $template_bra.="</thead>\n<tbody>\n";
           $template=
  -  '$out.= "<tr$alt><td style=\'white-space:nowrap;width:2%\'>$icon</td><td class=\'title\' style=\'width:40%\'>$title$updated</td><td>$bmark</td><td class=\'date\' style=\'width:15%\'>$date</td><td class=\'author\'>$user</td><td class=\'editinfo\'>$count</td>';
  -        if ($DBInfo->use_counter)
  +  '$out.= "<tr$alt><td style=\'white-space:nowrap;width:2%\'>$icon</td><td class=\'title\' style=\'width:40%\'>$title$updated</td><td>$bmark</td><td class=\'date\' style=\'width:15%\'>$date</td>';
  +        if (!empty($DBInfo->show_hosts))
  +          $template.='<td class=\'author\'>$user</td>';
  +        $template.='<td class=\'editinfo\'>$count</td>';
  +        if (!empty($DBInfo->use_counter))
             $template.='<td class=\'hits\'>$hits</td>';
           $template_extra=$template.'</tr>\n<tr><td class=\'log\' colspan=\'6\'>$extra</td></tr>\n";';
           $template.='</tr>\n";';
  @@ -325,7 +331,7 @@
         $hits = $DBInfo->counter->pageCounter($page_name);
       }
   
  -    if ($DBInfo->show_hosts) {
  +    if (!empty($DBInfo->show_hosts)) {
         if ($showhost && $user == 'Anonymous')
           $user= $addr;
         else {
  
  
  


1276937309;wkpark;Update of /cvsroot/moniwiki/moniwiki/css\nIn directory kill.kldp.net:/tmp/cvs-serv26368/css\n\nModified Files:\n	_base.css \nLog Message:\n[#315338] fixed css for the UploadForm macro\n\n
wkpark      2010/06/19 17:48:29

  Modified:    css      _base.css
  Log:
  [#315338] fixed css for the UploadForm macro
  
  Revision  Changes    Path
  1.36      +38 -0     moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- _base.css	6 Oct 2009 12:17:54 -0000	1.35
  +++ _base.css	19 Jun 2010 08:48:29 -0000	1.36
  @@ -90,6 +90,7 @@
   }
   
   form, input, button { margin:0; padding:0;/* for IE */}
  +button { overflow:visible; /* for IE */}
   
   label { padding-right:3px; }
   
  @@ -605,3 +606,40 @@
     display:none;
   }
   
  +.uploadForm input.fake-file {
  +  vertical-align: middle;
  +  border:1px solid #cfcfcf;
  +  width:292px;
  +  background:url("../imgs/misc/x2.png") no-repeat 290px 3px; /* reset icon */
  +  font-family:DotumChe, monospace, sans-serif;
  +  font-size:12px;
  +  padding:2px;
  +  padding-right:11px;
  +  margin-right:4px;
  +  margin-bottom:4px;
  +  _height:15px;
  +  _margin-top:-2px;
  +}
  +
  +.uploadForm .form-file {
  +  padding:0;
  +  margin:0;
  +  font-size:12px;
  +  height:20px;
  +  width:76px;
  +  left:-3px; /* */
  +  filter:alpha(opacity=0.0);
  +  opacity:0;
  +  cursor:pointer;
  +}
  +
  +.uploadForm .form-file:active {
  +  border:1px solid red;
  +}
  +
  +.uploadForm button.add-file {
  +  cursor:pointer;
  +}
  +
  +*html .uploadForm .form-file { height:32px; margin-top:-3px; }
  +*+html .uploadForm .form-file { height:32px; margin-top:-3px; top:0;}
  
  
  


1276937367;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv26538/plugin\n\nModified Files:\n	UploadForm.php \nLog Message:\n[#315338] fixed UploadForm behavior; open file dialog with one click\n\n
wkpark      2010/06/19 17:49:27

  Modified:    plugin   UploadForm.php
  Log:
  [#315338] fixed UploadForm behavior; open file dialog with one click
  
  Revision  Changes    Path
  1.18      +52 -14    moniwiki/plugin/UploadForm.php
  
  Index: UploadForm.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadForm.php,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- UploadForm.php	12 Sep 2009 13:43:37 -0000	1.17
  +++ UploadForm.php	19 Jun 2010 08:49:27 -0000	1.18
  @@ -5,7 +5,7 @@
   //
   // Usage: [[UploadForm]]
   //
  -// $Id: UploadForm.php,v 1.17 2009/09/12 13:43:37 wkpark Exp $
  +// $Id: UploadForm.php,v 1.18 2010/06/19 08:49:27 wkpark Exp $
   
   function macro_UploadForm($formatter,$value) {
       global $DBInfo;
  @@ -13,6 +13,8 @@
   
       $use_fake = 1;
       $hide_btn = 1;
  +    $name = 'upfile';
  +    $show = true;
   
       $msg2 = _("Successfully Uploaded");
       $msg = _("Choose File");
  @@ -21,7 +23,7 @@
          $script=<<<EOF
   <script type="text/javascript">
   /*<![CDATA[*/
  -function addRow(id, size) {
  +function addRow(id, name, size) {
       if (size == undefined)
           size = 50;
   
  @@ -56,25 +58,39 @@
       div.setAttribute('style', 'position:relative');
       var newInput = document.createElement('input');
       newInput.setAttribute('type', 'file');
  -    newInput.setAttribute('name', 'upfile[]');
  +    newInput.setAttribute('name', name+'[]');
       newInput.setAttribute('size', size);
  +
       newInput.style.position = 'absolute'; // IE
       newInput.style.left = -8; // IE
       newInput.setAttribute('style', 'position:absolute;left:-5;');
   
  +    var btn = document.getElementById('button-' + id);
  +    if (btn) {
  +        btn.setAttribute('style','display:none;');
  +        btn.style.display = 'none';
  +    }
  +
   EOF;
       if ($id == 1 and $hide_btn)
           $script .=<<<EOF
  -    var btn = document.getElementById('button-' + id);
  -    btn.setAttribute('style','display:inline-block;');
  -    btn.style.display = 'inline-block';
   
   EOF;
       if ($id == 1 and $use_fake)
           $script.=<<<EOF
       newInput.className = 'form-file';
       // get basename with replace() for IE
  -    newInput.onchange = function() { fakeInp.value = this.value.replace(/^.*[\\\\]/g, '');};
  +    newInput.onchange = function() {
  +        addRow(id, name, size);
  +        fakeInp.style.display='inline-block';
  +        fakeInp.value = this.value.replace(/^.*[\\\\]/g, '');
  +
  +        var btn = document.getElementById('button-' + id);
  +        if (btn) {
  +            btn.setAttribute('style','display:inline-block;');
  +            btn.style.display = 'inline-block';
  +        }
  +    };
   
       var span = document.createElement('span');
       span.style.position='relative';
  @@ -83,6 +99,7 @@
       fakeInp.setAttribute('size', size);
       fakeInp.className = 'fake-file';
       fakeInp.setAttribute('readonly', 'true');
  +    fakeInp.style.display = 'none';
       if (document.all)
           fakeInp.readOnly = true; // for IE
       fakeInp.onclick = function() {if (this.value) { this.value = ''; newInput.value = ''; } else {delRow(id,this);} };
  @@ -93,17 +110,20 @@
       span2.appendChild(txt);
       addbtn.appendChild(span2);
       addbtn.setAttribute('onclick',"return false;");
  +    addbtn.className = 'add-file';
   
       div.appendChild(fakeInp);
       span.appendChild(addbtn);
       span.appendChild(newInput);
       div.appendChild(span);
       cell.appendChild(div);
  +    /* newInput.click(); /* */
   EOF;
       else if ($id == 1)
           $script .=<<<EOF
       div.appendChild(newInput);
       cell.appendChild(div);
  +    /* newInput.click(); /* */
   EOF;
       
       if ($id == 1)
  @@ -120,12 +140,12 @@
       var inputs = form.getElementsByTagName('input');
       var mysubmit = null;
       for (i = 0; i < inputs.length; i++) {
  -        if (inputs[i].type == 'file') {
  +        if (inputs[i].type == 'file' && inputs[i].value != '') {
               return;
           }
       }
       var btn = document.getElementById('button-' + id);
  -    btn.style.display = 'none';
  +    if (btn) btn.style.display = 'none';
   
   EOF;
       if ($id == 1)
  @@ -207,11 +227,23 @@
   }
   
   function resetForm(form) {
  +    inputs = form.getElementsByTagName('input');
  +    var name = "$name", size = 50; // default
  +    for (i = 0; i < inputs.length; i++) {
  +        if (inputs[i].type == 'file') {
  +            name = inputs[i].getAttribute('name');
  +            size = inputs[i].getAttribute('size');
  +            break;
  +        }
  +    }
  +
       if (form && form.rows.length) { // for UploadForm
           for (var i=form.rows.length;i>0;i--) {
               form.deleteRow(i-1);
           }
       }
  +    name = name.replace(/\[\]$/g, '');
  +    addRow(form.getAttribute('id'), name, size);
   }
   
   /*]]>*/
  @@ -233,7 +265,7 @@
     <table border="0" cellspacing="0" cellpadding="0">
       <tr>
         <td valign='top' rowspan='2'>
  -        <span onclick="addRow('upload$id')" class='icon-clip' title="$msg">$attach_msg</span>
  +        <span onclick="addRow('upload$id','$name')" class='icon-clip' title="$msg">$attach_msg</span>
         </td>
         <td>
           <table cellspacing="0" cellpadding="0" border="0">
  @@ -245,11 +277,16 @@
       <tr>
         <td>
         <div class='buttons'>
  -  <button type='button' class='add-file' onclick="addRow('upload$id')"><span>$msg2</span></button>
  -  <input type="hidden" name="uploadid" value="upload$id" />
  +  <!-- button type='button' class='add-file' onclick="addRow('upload$id','$name')"><span>$msg2</span></button -->
  +  <input type="hidden" name="upload$id" value="upload$id" />
     <input type="hidden" name="popup" value="1" />
  +EOF;
  +    if (!empty($show))
  +        $multiform.=<<<EOF
     <button type="submit" class='upload-file' id='button-upload$id' onclick="check_attach('upload$id')" name="upload"><span>$msg3</span></button>
     <!-- <input type="reset" name="reset" value="$msg4" /> -->
  +EOF;
  +    $multiform.=<<<EOF
         </div>
         </td>
       </tr>
  @@ -259,9 +296,10 @@
   <script type="text/javascript">
   /*<![CDATA[*/
   (function () {
  -    var btn = document.getElementById('button-upload$id'); btn.style.display = 'none';
  +    var btn = document.getElementById('button-upload$id');
  +    if (btn) btn.style.display = 'none';
   })();
  -//addRow('upload$id');
  +addRow('upload$id','$name');
   /*]]>*/
   </script>
   EOF;
  
  
  


1276953090;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv14929\n\nModified Files:\n	wiki.php \nLog Message:\nstrip_tags() $title\n\n
wkpark      2010/06/19 22:11:30

  Modified:    .        wiki.php
  Log:
  strip_tags() $title
  
  Revision  Changes    Path
  1.521     +4 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.520
  retrieving revision 1.521
  diff -u -r1.520 -r1.521
  --- wiki.php	19 Jun 2010 07:10:50 -0000	1.520
  +++ wiki.php	19 Jun 2010 13:11:30 -0000	1.521
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.520 2010/06/19 07:10:50 wkpark Exp $
  +// $Id: wiki.php,v 1.521 2010/06/19 13:11:30 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.520 $',1,-1);
  +$_revision = substr('$Revision: 1.521 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -4368,6 +4368,8 @@
             $this->page->title;
           $options['title']=
             htmlspecialchars($options['title']);
  +      } else {
  +        $options['title'] = strip_tags($options['title']);
         }
         if (empty($options['css_url'])) $options['css_url']=$DBInfo->css_url;
         if (empty($this->pi['#nodtd']) and !isset($options['retstr']) and $this->_newtheme != 2) echo $DBInfo->doctype;
  
  
  


1276954929;wkpark;Update of /cvsroot/moniwiki/moniwiki-theme/azblue2/css\nIn directory kill.kldp.net:/tmp/cvs-serv22644/css\n\nModified Files:\n	default.css \nLog Message:\nfine tuning Go button position\n\n
1276956291;wkpark;Update of /cvsroot/moniwiki/moniwiki-theme/azblue2/css\nIn directory kill.kldp.net:/tmp/cvs-serv25160/css\n\nModified Files:\n	default.css \nLog Message:\nfine tuning buttons\n\n
1276959122;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv3186/plugin\n\nModified Files:\n	SWFUpload.php \nLog Message:\n[#315447] fix the button of select files.\n\n
1276959123;wkpark;Update of /cvsroot/moniwiki/moniwiki/local/SWFUpload/images\nIn directory kill.kldp.net:/tmp/cvs-serv3186/local/SWFUpload/images\n\nAdded Files:\n	btn0.png \nLog Message:\n[#315447] fix the button of select files.\n\n
wkpark      2010/06/19 23:52:03

  Modified:    plugin   SWFUpload.php
  Added:       local/SWFUpload/images btn0.png
  Log:
  [#315447] fix the button of select files.
  
  Revision  Changes    Path
  1.21      +7 -4      moniwiki/plugin/SWFUpload.php
  
  Index: SWFUpload.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SWFUpload.php,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- SWFUpload.php	26 Apr 2010 07:20:01 -0000	1.20
  +++ SWFUpload.php	19 Jun 2010 14:52:02 -0000	1.21
  @@ -8,12 +8,12 @@
   // Name: SWF Upload
   // Description: SWF Upload Plugin
   // URL: http://labb.dev.mammon.se/swfupload/ MoniWikiDev:SWFUpload
  -// Version: $Revision: 1.20 $
  +// Version: $Revision: 1.21 $
   // License: GPL
   //
   // Usage: [[SWFUpload]]
   //
  -// $Id: SWFUpload.php,v 1.20 2010/04/26 07:20:01 wkpark Exp $
  +// $Id: SWFUpload.php,v 1.21 2010/06/19 14:52:02 wkpark Exp $
   
   function macro_SWFUpload($formatter,$value,$opts=array()) {
       global $DBInfo;
  @@ -135,7 +135,7 @@
   CSS;
   
       $btn=_("Files...");
  -    $btn2=_("Upload");
  +    $btn2=_("Upload files");
       $btn3=_("Cancel All files");
       $prefix=qualifiedUrl($DBInfo->url_prefix.'/local');
       $action=$formatter->link_url($formatter->page->urlname);
  @@ -192,7 +192,10 @@
           debug: false, // true
   
           // Button Settings
  -        button_image_url : "$DBInfo->url_prefix/local/SWFUpload/images/btn.png",
  +        button_image_url : "$DBInfo->url_prefix/local/SWFUpload/images/btn0.png",
  +        button_text : '<span class="button" style="text-align:center">$btn</span>',
  +        button_text_style : '.button {font-family:Gulim,Sans-serif;text-align:center;}',
  +        button_text_top_padding : 3,
           button_placeholder_id : "spanButtonPlaceHolder",
           button_width: 61,
           button_height: 22,
  
  
  
  1.1                  moniwiki/local/SWFUpload/images/btn0.png
  
  	<<Binary file>>
  
  


1277193999;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin/security\nIn directory kill.kldp.net:/tmp/cvs-serv9888/plugin/security\n\nModified Files:\n	htaccesslogin.php \nLog Message:\nrename User to WikiUser\n\n
wkpark      2010/06/22 17:06:40

  Modified:    plugin/security htaccesslogin.php
  Log:
  rename User to WikiUser
  
  Revision  Changes    Path
  1.2       +2 -2      moniwiki/plugin/security/htaccesslogin.php
  
  Index: htaccesslogin.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/htaccesslogin.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- htaccesslogin.php	18 Mar 2005 11:03:44 -0000	1.1
  +++ htaccesslogin.php	22 Jun 2010 08:06:39 -0000	1.2
  @@ -2,7 +2,7 @@
   # a htaccesslogin security plugin for the MoniWiki
   # by Hans-Juergen Tappe <tappe@hek.uni-karlsruhe.de>
   #
  -# $Id: htaccesslogin.php,v 1.1 2005/03/18 11:03:44 wkpark Exp $
  +# $Id: htaccesslogin.php,v 1.2 2010/06/22 08:06:39 wkpark Exp $
   #
   
   class Security_htaccesslogin extends Security {
  @@ -15,7 +15,7 @@
       $id=getenv('REMOTE_USER');
       if ($id != "") {
         $userdb=new UserDB($DB);
  -      $user=new User(); # get from COOKIE VARS
  +      $user=new WikiUser(); # get from COOKIE VARS
   
         if ($userdb->_exists($id)) {
           # login
  
  
  


1277194443;wkpark;Update of /cvsroot/moniwiki/moniwiki-theme/azblue2\nIn directory kill.kldp.net:/tmp/cvs-serv13963\n\nModified Files:\n	header.php footer.php \nLog Message:\n[#315290] use empty(), isset() to remove notice warnings\n\n
1277195208;wkpark;Update of /cvsroot/moniwiki/moniwiki-theme/azblue2/css\nIn directory kill.kldp.net:/tmp/cvs-serv14262/css\n\nModified Files:\n	default.css \nLog Message:\ncss styling button tags\n\n
1277195208;wkpark;Update of /cvsroot/moniwiki/moniwiki-theme/azblue2/imgs\nIn directory kill.kldp.net:/tmp/cvs-serv14262/imgs\n\nAdded Files:\n	btn_default.png \nLog Message:\ncss styling button tags\n\n
1277195455;wkpark;Update of /cvsroot/moniwiki/moniwiki/imgs/misc\nIn directory kill.kldp.net:/tmp/cvs-serv15984/imgs/misc\n\nAdded Files:\n	x2.png \nLog Message:\nadd a new img\n\n
wkpark      2010/06/22 17:30:55

  Added:       imgs/misc x2.png
  Log:
  add a new img
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/misc/x2.png
  
  	<<Binary file>>
  
  


1278056097;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv4307\n\nModified Files:\n	wiki.php \nLog Message:\n[#315465] set default locale correctly\n\n
wkpark      2010/07/02 16:34:58

  Modified:    .        wiki.php
  Log:
  [#315465] set default locale correctly
  
  Revision  Changes    Path
  1.522     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.521
  retrieving revision 1.522
  diff -u -r1.521 -r1.522
  --- wiki.php	19 Jun 2010 13:11:30 -0000	1.521
  +++ wiki.php	2 Jul 2010 07:34:57 -0000	1.522
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.521 2010/06/19 13:11:30 wkpark Exp $
  +// $Id: wiki.php,v 1.522 2010/07/02 07:34:57 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.521 $',1,-1);
  +$_revision = substr('$Revision: 1.522 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -5154,7 +5154,7 @@
     $lang= strtr($lang,'_','-');
     $langs=explode(',',preg_replace(array("/;[^;,]+/","/\-[a-z]+/"),'',$lang));
     if ($languages[$langs[0]]) return array($languages[$langs[0]][0]);
  -  return array($languages[0][0]);
  +  return array($languages['en'][0]);
   }
   
   function set_locale($lang,$charset='') {
  
  
  


1278056702;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv5838\n\nModified Files:\n	wiki.php \nLog Message:\n[#314869] fixed InterWiki regex to allow numbers in a InterWikiName\n\n
wkpark      2010/07/02 16:45:02

  Modified:    .        wiki.php
  Log:
  [#314869] fixed InterWiki regex to allow numbers in a InterWikiName
  
  Revision  Changes    Path
  1.523     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.522
  retrieving revision 1.523
  diff -u -r1.522 -r1.523
  --- wiki.php	2 Jul 2010 07:34:57 -0000	1.522
  +++ wiki.php	2 Jul 2010 07:45:02 -0000	1.523
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.522 2010/07/02 07:34:57 wkpark Exp $
  +// $Id: wiki.php,v 1.523 2010/07/02 07:45:02 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.522 $',1,-1);
  +$_revision = substr('$Revision: 1.523 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -3575,10 +3575,10 @@
           if ($ll=='[') {
             $macro=substr($line,4,-2);
             $out= $this->macro_repl($macro,'',array('nomarkup'=>1));
  -        } else if ($ll=='#') {
  +        } else if ($ll=='#' and preg_match('/^###[a-z][a-z0-9_-]*$/', $line)) {
             $div_enclose.='<div id="'.substr($line,3).'">';
             $my_div++;
  -        } else if ($ll=='.') {
  +        } else if ($ll=='.' and preg_match('/^##\.[a-z][a-z0-9_-]*$/', $line)) {
             $div_enclose.='<div class="'.substr($line,3).'">';
             $my_div++;
           } else if ($my_div>0) {
  
  
  


1278056861;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv6751\n\nModified Files:\n	wiki.php \nLog Message:\noops! revert last change\n\n
wkpark      2010/07/02 16:47:41

  Modified:    .        wiki.php
  Log:
  oops! revert last change
  
  Revision  Changes    Path
  1.524     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.523
  retrieving revision 1.524
  diff -u -r1.523 -r1.524
  --- wiki.php	2 Jul 2010 07:45:02 -0000	1.523
  +++ wiki.php	2 Jul 2010 07:47:41 -0000	1.524
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.523 2010/07/02 07:45:02 wkpark Exp $
  +// $Id: wiki.php,v 1.524 2010/07/02 07:47:41 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.523 $',1,-1);
  +$_revision = substr('$Revision: 1.524 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -3575,10 +3575,10 @@
           if ($ll=='[') {
             $macro=substr($line,4,-2);
             $out= $this->macro_repl($macro,'',array('nomarkup'=>1));
  -        } else if ($ll=='#' and preg_match('/^###[a-z][a-z0-9_-]*$/', $line)) {
  +        } else if ($ll=='#') {
             $div_enclose.='<div id="'.substr($line,3).'">';
             $my_div++;
  -        } else if ($ll=='.' and preg_match('/^##\.[a-z][a-z0-9_-]*$/', $line)) {
  +        } else if ($ll=='.') {
             $div_enclose.='<div class="'.substr($line,3).'">';
             $my_div++;
           } else if ($my_div>0) {
  
  
  


1278056902;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv6822\n\nModified Files:\n	wiki.php \nLog Message:\n[#314869] fixed InterWiki regex to allow numbers in a InterWikiName\n\n
wkpark      2010/07/02 16:48:22

  Modified:    .        wiki.php
  Log:
  [#314869] fixed InterWiki regex to allow numbers in a InterWikiName
  
  Revision  Changes    Path
  1.525     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.524
  retrieving revision 1.525
  diff -u -r1.524 -r1.525
  --- wiki.php	2 Jul 2010 07:47:41 -0000	1.524
  +++ wiki.php	2 Jul 2010 07:48:22 -0000	1.525
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.524 2010/07/02 07:47:41 wkpark Exp $
  +// $Id: wiki.php,v 1.525 2010/07/02 07:48:22 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.524 $',1,-1);
  +$_revision = substr('$Revision: 1.525 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -1930,7 +1930,7 @@
       #"\b(".$DBInfo->interwikirule."):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
       #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
       #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+[^\(\)<>\s\',\.:\?\!]+)|".
  -    "(?:\b|\^?)(?:[A-Z][a-zA-Z]+):(?:[^:\(\)<>\s\']?[^\s<\'\",\!\010\006]+(?:\s(?![\x21-\x7e]))?(?<![,\.\)>]))|".
  +    "(?:\b|\^?)(?:[A-Z][a-zA-Z0-9]+):(?:[^:\(\)<>\s\']?[^\s<\'\",\!\010\006]+(?:\s(?![\x21-\x7e]))?(?<![,\.\)>]))|".
       #"(?:\b|\^?)(?:[A-Z][a-zA-Z]+):(?:[^:\(\)<>\s\']?[^\s<\'\",:\!\010\006]+(?:\s(?![\x21-\x7e]))?(?<![,\.\)>]))|".
       #"(\b|\^?)([A-Z][a-zA-Z]+):([^:\(\)<>\s\']?[^<>\s\'\",:\?\!\010\006]*(\s(?![\x21-\x7e]))?)";
       # for PR #301713
  @@ -2444,7 +2444,7 @@
       $wiki='';
       # wiki:MoinMoin:FrontPage
       # wiki:MoinMoin/FrontPage for MoinMoin compatibility.
  -    if (preg_match('/^([A-Z][a-zA-Z]+):(.*)$/',$url,$m)) {
  +    if (preg_match('/^([A-Z][a-zA-Z0-9]+):(.*)$/',$url,$m)) {
         $wiki=$m[1]; $url=$m[2];
       }
   
  
  
  


1278057089;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv6920\n\nModified Files:\n	wiki.php \nLog Message:\nfixed deprecated css id/class syntax.\n\n
wkpark      2010/07/02 16:51:29

  Modified:    .        wiki.php
  Log:
  fixed deprecated css id/class syntax.
  
  Revision  Changes    Path
  1.526     +6 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.525
  retrieving revision 1.526
  diff -u -r1.525 -r1.526
  --- wiki.php	2 Jul 2010 07:48:22 -0000	1.525
  +++ wiki.php	2 Jul 2010 07:51:29 -0000	1.526
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.525 2010/07/02 07:48:22 wkpark Exp $
  +// $Id: wiki.php,v 1.526 2010/07/02 07:51:29 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.525 $',1,-1);
  +$_revision = substr('$Revision: 1.526 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -3575,10 +3575,12 @@
           if ($ll=='[') {
             $macro=substr($line,4,-2);
             $out= $this->macro_repl($macro,'',array('nomarkup'=>1));
  -        } else if ($ll=='#') {
  +          # XXX deprecated css id syntax.
  +        } else if ($ll=='#' and preg_match('/^###[a-z][a-z0-9_-]*$/', $line)) {
             $div_enclose.='<div id="'.substr($line,3).'">';
             $my_div++;
  -        } else if ($ll=='.') {
  +          # XXX deprecated css class syntax.
  +        } else if ($ll=='.' and preg_match('/^##\.[a-z][a-z0-9_-]*$/', $line)) {
             $div_enclose.='<div class="'.substr($line,3).'">';
             $my_div++;
           } else if ($my_div>0) {
  
  
  


1278662177;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv8126\n\nModified Files:\n	wiki.php \nLog Message:\n[#315479] set $imgs_real_dir correctly.\n\n
wkpark      2010/07/09 16:56:18

  Modified:    .        wiki.php
  Log:
  [#315479] set $imgs_real_dir correctly.
  
  Revision  Changes    Path
  1.527     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.526
  retrieving revision 1.527
  diff -u -r1.526 -r1.527
  --- wiki.php	2 Jul 2010 07:51:29 -0000	1.526
  +++ wiki.php	9 Jul 2010 07:56:17 -0000	1.527
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.526 2010/07/02 07:51:29 wkpark Exp $
  +// $Id: wiki.php,v 1.527 2010/07/09 07:56:17 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.526 $',1,-1);
  +$_revision = substr('$Revision: 1.527 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -713,9 +713,9 @@
             else
               $this->imgs_real_dir = dirname($info->filename);
           }
  +      } else {
  +        $this->imgs_real_dir = basename($this->imgs_dir); // XXX
         }
  -    } else {
  -      $this->imgs_real_dir = basename($this->imgs_dir); // XXX
       }
   
       if (is_dir($this->imgs_real_dir.'/interwiki'))
  
  
  


1278662572;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv8285\n\nModified Files:\n	wikilib.php \nLog Message:\ndo not redeclare _stripslases() if it exists FIXME\n\n
wkpark      2010/07/09 17:02:53

  Modified:    .        wikilib.php
  Log:
  do not redeclare _stripslases() if it exists FIXME
  
  Revision  Changes    Path
  1.293     +3 -1      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.292
  retrieving revision 1.293
  diff -u -r1.292 -r1.293
  --- wikilib.php	29 May 2010 09:24:55 -0000	1.292
  +++ wikilib.php	9 Jul 2010 08:02:52 -0000	1.293
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.292 2010/05/29 09:24:55 wkpark Exp $
  +// $Id: wikilib.php,v 1.293 2010/07/09 08:02:52 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -58,9 +58,11 @@
     return preg_replace("/(%)(?![a-f0-9]{2})/i","%25",$t);
   }
   
  +if (!function_exists('_stripslashes')) {
   function _stripslashes($str) {
     return get_magic_quotes_gpc() ? stripslashes($str):$str;
   }
  +}
   
   function qualifiedUrl($url) {
     if (substr($url,0,7)=='http://' or substr($url,0,8) == 'https://')
  
  
  


1278662654;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv8348\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315480] use button tags instead of input submits\n\n
wkpark      2010/07/09 17:04:15

  Modified:    .        wikilib.php
  Log:
  [#315480] use button tags instead of input submits
  
  Revision  Changes    Path
  1.294     +3 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.293
  retrieving revision 1.294
  diff -u -r1.293 -r1.294
  --- wikilib.php	9 Jul 2010 08:02:52 -0000	1.293
  +++ wikilib.php	9 Jul 2010 08:04:14 -0000	1.294
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.293 2010/07/09 08:02:52 wkpark Exp $
  +// $Id: wikilib.php,v 1.294 2010/07/09 08:04:14 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2955,7 +2955,7 @@
     $form="<form method='get' action='$url'>
         <input type='hidden' name='action' value='titlesearch' />
         <input name='value' size='30' value='$needle' />
  -      <input type='submit' value='$msg' />
  +      <button type='submit'><span>$msg</span></button>
         </form>";
   
     if (!$needle) {
  @@ -3017,7 +3017,7 @@
     return "<form method='get' action='$url'>
       <input type='hidden' name='action' value='goto' />
       <input name='value' size='30' value='$value' />
  -    <input type='submit' value='$msg' />
  +    <button type='submit'><span>$msg</span></button>
       </form>";
   }
   
  
  
  


1278668579;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv22950\n\nModified Files:\n	UploadForm.php \nLog Message:\n[#315482] adjust upload button size using js\n\n
wkpark      2010/07/09 18:42:59

  Modified:    plugin   UploadForm.php
  Log:
  [#315482] adjust upload button size using js
  
  Revision  Changes    Path
  1.19      +13 -3     moniwiki/plugin/UploadForm.php
  
  Index: UploadForm.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadForm.php,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- UploadForm.php	19 Jun 2010 08:49:27 -0000	1.18
  +++ UploadForm.php	9 Jul 2010 09:42:59 -0000	1.19
  @@ -5,7 +5,7 @@
   //
   // Usage: [[UploadForm]]
   //
  -// $Id: UploadForm.php,v 1.18 2010/06/19 08:49:27 wkpark Exp $
  +// $Id: UploadForm.php,v 1.19 2010/07/09 09:42:59 wkpark Exp $
   
   function macro_UploadForm($formatter,$value) {
       global $DBInfo;
  @@ -19,6 +19,7 @@
       $msg2 = _("Successfully Uploaded");
       $msg = _("Choose File");
       $formatter->register_javascripts("wikibits.js");
  +    $script = '';
       if ($id==1)
          $script=<<<EOF
   <script type="text/javascript">
  @@ -26,6 +27,8 @@
   function addRow(id, name, size) {
       if (size == undefined)
           size = 50;
  +    if((tmpbutton = document.getElementById(id).getElementsByTagName('button').item(0)) != undefined)
  +	tmpbutton = tmpbutton.clientWidth;
   
       // check editform
       var editform = document.getElementById('editform');
  @@ -61,9 +64,16 @@
       newInput.setAttribute('name', name+'[]');
       newInput.setAttribute('size', size);
   
  +    var tmpstyle = "width:80px";
  +    if(tmpbutton != undefined)
  +	tmpstyle = "width:" + tmpbutton + "px;";
  +    else
  +	tmpbutton = 80; // set 80px for IE
  +
       newInput.style.position = 'absolute'; // IE
       newInput.style.left = -8; // IE
  -    newInput.setAttribute('style', 'position:absolute;left:-5;');
  +    newInput.style.width = tmpbutton+3; // IE
  +    newInput.setAttribute('style', 'position:absolute;left:-5;'+tmpstyle);
   
       var btn = document.getElementById('button-' + id);
       if (btn) {
  @@ -307,7 +317,7 @@
       if (!in_array('UploadedFiles',$formatter->actions))
           $formatter->actions[]='UploadedFiles';
       $id++;
  -    if ($formatter->preview and !in_array('UploadFile',$formatter->actions)) {
  +    if (!empty($formatter->preview) and !in_array('UploadFile',$formatter->actions)) {
           if (!empty($DBInfo->use_preview_uploads)) {
               $keyname=$DBInfo->pageToKeyname($formatter->page->name);
               if (is_dir($DBInfo->upload_dir.'/'.$keyname))
  
  
  


1278668650;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv24598\n\nModified Files:\n	RecentChanges.php UploadedFiles.php \nLog Message:\n[#315290] remove notice warnings\n\n
wkpark      2010/07/09 18:44:10

  Modified:    plugin   RecentChanges.php UploadedFiles.php
  Log:
  [#315290] remove notice warnings
  
  Revision  Changes    Path
  1.40      +4 -3      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.39
  retrieving revision 1.40
  diff -u -r1.39 -r1.40
  --- RecentChanges.php	19 Jun 2010 07:43:37 -0000	1.39
  +++ RecentChanges.php	9 Jul 2010 09:44:10 -0000	1.40
  @@ -3,11 +3,11 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.39 2010/06/19 07:43:37 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.40 2010/07/09 09:44:10 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     global $DBInfo;
  -  if ($options['moztab']) {
  +  if (!empty($options['moztab'])) {
       $options['trail']='';
       $options['css_url']=$formatter->url_prefix.'/css/sidebar.css';
       $arg = 'nobookmark,moztab';
  @@ -135,6 +135,7 @@
           $template_extra=$template.'</tr>\n<tr><td class=\'log\' colspan=\'6\'>$extra</td></tr>\n";';
           $template.='</tr>\n";';
           $template_cat="</tbody></table>";
  +        $cat0="";
         }
       }
     }
  @@ -332,7 +333,7 @@
       }
   
       if (!empty($DBInfo->show_hosts)) {
  -      if ($showhost && $user == 'Anonymous')
  +      if (!empty($showhost) && $user == 'Anonymous')
           $user= $addr;
         else {
           $ouser= $user;
  
  
  
  1.38      +2 -2      moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- UploadedFiles.php	26 Apr 2010 07:20:01 -0000	1.37
  +++ UploadedFiles.php	9 Jul 2010 09:44:10 -0000	1.38
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadedFiles plugin for the MoniWiki
   //
  -// $Id: UploadedFiles.php,v 1.37 2010/04/26 07:20:01 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.38 2010/07/09 09:44:10 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     if (!empty($options['q'])) {
  @@ -75,6 +75,7 @@
      if ($use_fileinfo) $col=1;
   
      $href_attr = '';
  +   $attr='';
      if (!empty($DBInfo->use_lightbox) and !$js_tag)
        $href_attr=' rel="lightbox[upload]" ';
   
  @@ -406,7 +407,6 @@
   
         $date=date('Y-m-d',filemtime($dir.'/'.$_l_file));
         $fname=$file;
  -      $attr='';
         if ($use_preview or $js_tag) {
           $tag_open='attachment:'; $tag_close='';
           if ($opener != $value)
  
  
  


1278668698;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv24710\n\nModified Files:\n	FullSearch.php \nLog Message:\n[#315480] use button tags\n\n
wkpark      2010/07/09 18:44:58

  Modified:    plugin   FullSearch.php
  Log:
  [#315480] use button tags
  
  Revision  Changes    Path
  1.33      +2 -2      moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- FullSearch.php	19 Jun 2010 07:03:00 -0000	1.32
  +++ FullSearch.php	9 Jul 2010 09:44:58 -0000	1.33
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
   //
  -// $Id: FullSearch.php,v 1.32 2010/06/19 07:03:00 wkpark Exp $
  +// $Id: FullSearch.php,v 1.33 2010/07/09 09:44:58 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
  @@ -79,7 +79,7 @@
   <form method='get' action='$url'>
      <input type='hidden' name='action' value='fullsearch' />
      <input name='value' size='30' value='$fneedle' />
  -   <input type='submit' value='$msg' /><br />
  +   <button type='submit'><span>$msg</span></button><br />
      <input type='checkbox' name='backlinks' value='1' checked='checked' />$m2<br />
      <input type='checkbox' name='context' value='20' />$m1<br />
      <input type='checkbox' name='case' value='1' />$m3<br />
  
  
  


1278668923;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv25737\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315290] remove notice warning\n\n
wkpark      2010/07/09 18:48:43

  Modified:    .        wikilib.php
  Log:
  [#315290] remove notice warning
  
  Revision  Changes    Path
  1.295     +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.294
  retrieving revision 1.295
  diff -u -r1.294 -r1.295
  --- wikilib.php	9 Jul 2010 08:04:14 -0000	1.294
  +++ wikilib.php	9 Jul 2010 09:48:42 -0000	1.295
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.294 2010/07/09 08:04:14 wkpark Exp $
  +// $Id: wikilib.php,v 1.295 2010/07/09 09:48:42 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -470,7 +470,7 @@
   
     function checkUser(&$user) {
       $tmp=$this->getUser($user->id);
  -    if ($tmp->info['ticket'] != $user->ticket) {
  +    if (!empty($tmp->info['ticket']) and $tmp->info['ticket'] != $user->ticket) {
         if ($this->strict > 0)
           $user->id='Anonymous';
         return 1;
  
  
  


1278668990;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv25890\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315483] check preview mode correctly with the $use_jsbutttons option.\n\n
wkpark      2010/07/09 18:49:50

  Modified:    .        wikilib.php
  Log:
  [#315483] check preview mode correctly with the $use_jsbutttons option.
  
  Revision  Changes    Path
  1.296     +9 -6      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.295
  retrieving revision 1.296
  diff -u -r1.295 -r1.296
  --- wikilib.php	9 Jul 2010 09:48:42 -0000	1.295
  +++ wikilib.php	9 Jul 2010 09:49:50 -0000	1.296
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.295 2010/07/09 09:48:42 wkpark Exp $
  +// $Id: wikilib.php,v 1.296 2010/07/09 09:49:50 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -836,7 +836,7 @@
       echo "<button type='button'$onclick tabindex='10'><span>$msg</span></button>\n";
       echo "<button type='button'$onclick1 tabindex='11' name='button_preview' value='1'><span>".
         _("Preview").'</span></button>';
  -    if ($preview)
  +    if (!empty($formatter->preview))
         echo ' '.$formatter->link_to('#preview',_("Skip to preview"),' class="preview-anchor"');
       echo "</div>\n";
     }
  @@ -1097,7 +1097,7 @@
     $wysiwyg_btn = '';
     $skip_preview = '';
     if (empty($options['simple'])) {
  -    $preview_btn='<button type="submit" tabindex="6" name="button_preview" onclick="this.value=1" value="1"><span>'.
  +    $preview_btn='<button type="submit" tabindex="6" name="button_preview" value="1"><span>'.
         _("Preview").'</span></button>';
       if ($preview)
         $skip_preview= ' '.$formatter->link_to('#preview',_("Skip to preview"),' class="preview-anchor"');
  @@ -1684,7 +1684,10 @@
   
     $savetext=$options['savetext'];
     $datestamp=$options['datestamp'];
  -  $button_preview=!empty($options['button_preview']) ? is_numeric($options['button_preview']) : '';
  +  $button_preview = !empty($options['button_preview']) ? 1 : 0;
  +
  +  if ($button_preview)
  +    $formatter->preview = 1;
     $button_merge=!empty($options['button_merge']) ? 1:0;
     $button_merge=!empty($options['manual_merge']) ? 2:$button_merge;
     $button_merge=!empty($options['force_merge']) ? 3:$button_merge;
  @@ -1771,7 +1774,7 @@
           echo "<button type='button'$onclick tabindex='10'><span>$msg</span></button>\n";
           echo "<button type='button'$onclick1 tabindex='11' name='button_preview' value='1'><span>".
             _("Preview").'</span></button>';
  -        if ($preview)
  +        if ($button_preview)
             echo ' '.$formatter->link_to('#preview',_("Skip to preview"), ' class="preview-anchor"');
   	echo "</div>\n";
         }
  @@ -1868,7 +1871,7 @@
         echo "<button type='button'$onclick tabindex='10'><span>$msg</span></button>\n";
         echo "<button type='button'$onclick1 tabindex='11' name='button_preview' value='1'><span>".
         	_("Preview").'</span></button>';
  -      if ($preview)
  +      if ($button_preview)
           echo ' '.$formatter->link_to('#preview',_("Skip to preview"),' class="preview-anchor"');
         echo "</div>\n";
       }
  
  
  


1278670113;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv27363\n\nModified Files:\n	RecentChanges.php \nLog Message:\nuse send_title() correctly.\n\n
wkpark      2010/07/09 19:08:34

  Modified:    plugin   RecentChanges.php
  Log:
  use send_title() correctly.
  
  Revision  Changes    Path
  1.41      +2 -2      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- RecentChanges.php	9 Jul 2010 09:44:10 -0000	1.40
  +++ RecentChanges.php	9 Jul 2010 10:08:33 -0000	1.41
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.40 2010/07/09 09:44:10 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.41 2010/07/09 10:08:33 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     global $DBInfo;
  @@ -22,7 +22,7 @@
       $arg = 'board,comment,timesago,item=20';
     }
     $formatter->send_header('',$options);
  -  $formatter->send_title('',$options);
  +  $formatter->send_title('', '', $options);
     echo macro_RecentChanges($formatter, $arg, $options);
     $formatter->send_footer('',$options);
     return;
  
  
  


1278672676;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv5420\n\nModified Files:\n	download.php \nLog Message:\n[#315486] use RFC 2231 instead of RFC 2047 by default.\n\n
wkpark      2010/07/09 19:51:16

  Modified:    plugin   download.php
  Log:
  [#315486] use RFC 2231 instead of RFC 2047 by default.
  
  Revision  Changes    Path
  1.26      +7 -5      moniwiki/plugin/download.php
  
  Index: download.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/download.php,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- download.php	19 Apr 2010 11:26:46 -0000	1.25
  +++ download.php	9 Jul 2010 10:51:15 -0000	1.26
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // download action plugin for the MoniWiki
   //
  -// $Id: download.php,v 1.25 2010/04/19 11:26:46 wkpark Exp $
  +// $Id: download.php,v 1.26 2010/07/09 10:51:15 wkpark Exp $
   //
   function do_download($formatter,$options) {
     global $DBInfo;
  @@ -108,13 +108,15 @@
   
       #header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
       #header('Pragma: public');
  -  } else if (strstr($_SERVER['HTTP_USER_AGENT'], 'Opera')) {
  -    // Opera 9: RFC 2231
  +  } else if (strstr($_SERVER['HTTP_USER_AGENT'], 'Mozilla')) {
  +    // Mozilla: RFC 2047
  +    $fname='filename="=?'.$DBInfo->charset.'?B?'.base64_encode($file).'?="';
  +  } else {
  +    // etc. Safari, Opera 9: RFC 2231
       $fn = preg_replace('/[:\\x5c\\/{?]/', '_', $file);
       $fname='filename*='.$DBInfo->charset."''".rawurlencode($fn).'';
       //$fname='filename="'.$fn.'"';
  -  } else // Mozilla: RFC 2047
  -    $fname='filename="=?'.$DBInfo->charset.'?B?'.base64_encode($file).'?="';
  +  }
   
     if ($DBInfo->use_resume_download) {
       $header=array("Content-Description: MoniWiki PHP Downloader");
  
  
  


1278673407;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv6186\n\nModified Files:\n	Info.php RecentChanges.php atom.php rss_rc.php \nLog Message:\nuse _stripslashes() correctly\n\n
wkpark      2010/07/09 20:03:27

  Modified:    plugin   Info.php RecentChanges.php atom.php rss_rc.php
  Log:
  use _stripslashes() correctly
  
  Revision  Changes    Path
  1.31      +2 -2      moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Info.php,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- Info.php	19 Apr 2010 11:47:44 -0000	1.30
  +++ Info.php	9 Jul 2010 11:03:27 -0000	1.31
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Info plugin for the MoniWiki
   //
  -// $Id: Info.php,v 1.30 2010/04/19 11:47:44 wkpark Exp $
  +// $Id: Info.php,v 1.31 2010/07/09 11:03:27 wkpark Exp $
   
   function _parse_rlog($formatter,$log,$options=array()) {
     global $DBInfo;
  @@ -164,7 +164,7 @@
            } else if ($user and $DBInfo->interwiki['Whois'])
              $ip="<a href='".$DBInfo->interwiki['Whois']."$ip'>$ip</a>";
   
  -         $comment=!empty($dummy[2]) ? stripslashes($dummy[2]) : '';
  +         $comment=!empty($dummy[2]) ? _stripslashes($dummy[2]) : '';
            $state=4;
            break;
         case 4:
  
  
  
  1.42      +2 -2      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.41
  retrieving revision 1.42
  diff -u -r1.41 -r1.42
  --- RecentChanges.php	9 Jul 2010 10:08:33 -0000	1.41
  +++ RecentChanges.php	9 Jul 2010 11:03:27 -0000	1.42
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.41 2010/07/09 10:08:33 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.42 2010/07/09 11:03:27 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     global $DBInfo;
  @@ -238,7 +238,7 @@
       $addr= $DBInfo->mask_hostname ? _mask_hostname($parts[1]):$parts[1];
       $ed_time= $parts[2];
       $user= $parts[4];
  -    $log= stripslashes($parts[5]);
  +    $log= _stripslashes($parts[5]);
       $act= rtrim($parts[6]);
   
   //    if ($ed_time < $time_cutoff)
  
  
  
  1.3       +3 -3      moniwiki/plugin/atom.php
  
  Index: atom.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/atom.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- atom.php	17 Aug 2006 08:02:21 -0000	1.2
  +++ atom.php	9 Jul 2010 11:03:27 -0000	1.3
  @@ -7,10 +7,10 @@
   // Name: Atom feeder
   // Description: Atom Plugin
   // URL: MoniWiki:AtomPlugin
  -// Version: $Revision: 1.2 $
  +// Version: $Revision: 1.3 $
   // License: GPL
   //
  -// $Id: atom.php,v 1.2 2006/08/17 08:02:21 wkpark Exp $
  +// $Id: atom.php,v 1.3 2010/07/09 11:03:27 wkpark Exp $
   // $orig Id: rss_rc.php,v 1.12 2005/09/13 09:10:52 wkpark Exp $
   
   function do_atom($formatter,$options) {
  @@ -55,7 +55,7 @@
         $user_uri= $formatter->link_url(_rawurlencode($user),"",$user);
         $user_uri='<uri>'.$user_uri.'</uri>';
       }
  -    $log= stripslashes($parts[5]);
  +    $log= _stripslashes($parts[5]);
       $act= rtrim($parts[6]);
   
       $url=qualifiedUrl($formatter->link_url(_rawurlencode($page_name)));
  
  
  
  1.20      +2 -2      moniwiki/plugin/rss_rc.php
  
  Index: rss_rc.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rss_rc.php,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- rss_rc.php	19 Apr 2010 11:26:46 -0000	1.19
  +++ rss_rc.php	9 Jul 2010 11:03:27 -0000	1.20
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // rss_rc action plugin for the MoniWiki
   //
  -// $Id: rss_rc.php,v 1.19 2010/04/19 11:26:46 wkpark Exp $
  +// $Id: rss_rc.php,v 1.20 2010/07/09 11:03:27 wkpark Exp $
   
   function do_rss_rc($formatter,$options) {
     global $DBInfo;
  @@ -50,7 +50,7 @@
       $addr= $parts[1];
       $ed_time= $parts[2];
       $user= $parts[4];
  -    $log= stripslashes($parts[5]);
  +    $log= _stripslashes($parts[5]);
       $act= rtrim($parts[6]);
   
   #    if ($ed_time < $time_cutoff)
  
  
  


1278674477;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv11266\n\nModified Files:\n	wiki.php \nLog Message:\n[#315290] fixed notice warning\n\n
wkpark      2010/07/09 20:21:18

  Modified:    .        wiki.php
  Log:
  [#315290] fixed notice warning
  
  Revision  Changes    Path
  1.528     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.527
  retrieving revision 1.528
  diff -u -r1.527 -r1.528
  --- wiki.php	9 Jul 2010 07:56:17 -0000	1.527
  +++ wiki.php	9 Jul 2010 11:21:17 -0000	1.528
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.527 2010/07/09 07:56:17 wkpark Exp $
  +// $Id: wiki.php,v 1.528 2010/07/09 11:21:17 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.527 $',1,-1);
  +$_revision = substr('$Revision: 1.528 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -567,7 +567,7 @@
     $myret = @include($configfile);
   
     if ($myret === false) {
  -    if ($init) {
  +    if (!empty($init)) {
         $script= preg_replace("/\/([^\/]+)\.php$/",'/monisetup.php',
                  $_SERVER['SCRIPT_NAME']);
         if (is_string($init)) $script .= '?init='.$init;
  
  
  


1278674530;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv11388\n\nModified Files:\n	ticket.php \nLog Message:\n[#315290] fixed notice warning\n\n
wkpark      2010/07/09 20:22:10

  Modified:    plugin   ticket.php
  Log:
  [#315290] fixed notice warning
  
  Revision  Changes    Path
  1.7       +8 -8      moniwiki/plugin/ticket.php
  
  Index: ticket.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/ticket.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- ticket.php	1 Oct 2009 13:13:52 -0000	1.6
  +++ ticket.php	9 Jul 2010 11:22:10 -0000	1.7
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a simple CAPTCHA ticket plugin for the MoniWiki
   //
  -// $Id: ticket.php,v 1.6 2009/10/01 13:13:52 wkpark Exp $
  +// $Id: ticket.php,v 1.7 2010/07/09 11:22:10 wkpark Exp $
   
   function _effect_distort($image,$factor=40,$grad=1) {
       // from http://www.codeproject.com/aspnet/CaptchaNET_2.asp Farshid Hosseini
  @@ -164,7 +164,7 @@
   
       $word_length=4;
   
  -    if ($options['__seed']) {
  +    if (!empty($options['__seed'])) {
           // check seed
           // check referer
           $passwd=getTicket($options['__seed'],$_SERVER['REMOTE_ADDR'],
  @@ -175,10 +175,10 @@
           return;
       }
   
  -    if ($DBInfo->gdfontpath)
  +    if (!empty($DBInfo->gdfontpath))
           putenv('GDFONTPATH='.$DBInfo->gdfontpath);
       if (function_exists('ImageTtfText')) {
  -        if ($DBInfo->ticket_font) {
  +        if (!empty($DBInfo->ticket_font)) {
               $FONT=$DBInfo->ticket_font;
               //$FONT="/home/foobar/data/PenguinAttack.ttf";
               if ($FONT{0}=='/' and !file_exists($FONT)) {
  @@ -189,8 +189,8 @@
               }
           }
       }
  -    if ($use_ttf) {
  -        $pointsize=$DBInfo->ticket_font_size ? $DBInfo->ticket_font_size:16;
  +    if (!empty($use_ttf)) {
  +        $pointsize=!empty($DBInfo->ticket_font_size) ? $DBInfo->ticket_font_size:16;
           $angle=0;
           //$size = Imagettfbbox($pointsize, 0, $FONT, $passwd);
           // XXX segfault :(
  @@ -204,7 +204,7 @@
           if ($DBInfo->use_ticket & 7) $h+=$pointsize/3;
       } else {
           $FONT=5; // giant
  -        if ($DBInfo->ticket_gdfont)
  +        if (!empty($DBInfo->ticket_gdfont))
               $FONT=$DBInfo->ticket_gdfont;
           $w=imagefontwidth($FONT)*strlen($passwd)+10;
           $h=imagefontheight($FONT)+10;
  @@ -227,7 +227,7 @@
       $pen1=rand(3,19);
       for ($i=0;$i<18;$i++)
           $color[]= ImageColorAllocate($im,rand(100,200),rand(100,200),rand(100,200));
  -    if ($use_ttf) {
  +    if (!empty($use_ttf)) {
           $sx=$margin;
           $sy=$margin/2+$pointsize;
           ImageTtfText($im,$pointsize, $angle, $sx, $sy+1, $color[$pen], $FONT,
  
  
  


1278683729;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv1789\n\nModified Files:\n	EditToolbar.php \nLog Message:\n[#315479] set $imgs_real_dir correctly.\n\n
wkpark      2010/07/09 22:55:29

  Modified:    plugin   EditToolbar.php
  Log:
  [#315479] set $imgs_real_dir correctly.
  
  Revision  Changes    Path
  1.14      +2 -2      moniwiki/plugin/EditToolbar.php
  
  Index: EditToolbar.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/EditToolbar.php,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- EditToolbar.php	19 Apr 2010 11:26:46 -0000	1.13
  +++ EditToolbar.php	9 Jul 2010 13:55:29 -0000	1.14
  @@ -7,7 +7,7 @@
   //
   // This feature is imported from the MediaWiki
   //
  -// $Id: EditToolbar.php,v 1.13 2010/04/19 11:26:46 wkpark Exp $
  +// $Id: EditToolbar.php,v 1.14 2010/07/09 13:55:29 wkpark Exp $
   
   function macro_EditToolbar($formatter,$value, $options=array()) {
       global $DBInfo;
  @@ -56,7 +56,7 @@
               "addInfobox(N_('Click a button to get an example text'),N_('Please enter the text you want to be formatted.\\\\n It will be shown in the infobox for copy and pasting.\\\\nExample:\\\\n\$1\\\\nwill become:\\\\n\$2'));\n",
       );
       $formatter->register_javascripts("wikibits.js");
  -    $fcss= getenv('DOCUMENT_ROOT') . '/'.$DBInfo->imgs_dir.'/plugin/EditToolbar/'.$iconset.'/toolbar.css';
  +    $fcss= $DBInfo->imgs_real_dir.'/plugin/EditToolbar/'.$iconset.'/toolbar.css';
       $css='';
       if (file_exists($fcss))
           $css="<style type='text/css'>
  
  
  


1278684961;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv2654\n\nModified Files:\n	userform.php \nLog Message:\n[#315488] set $user->id as 'Anonymous' if it fails to login\n\n
wkpark      2010/07/09 23:16:01

  Modified:    plugin   userform.php
  Log:
  [#315488] set $user->id as 'Anonymous' if it fails to login
  
  Revision  Changes    Path
  1.32      +2 -1      moniwiki/plugin/userform.php
  
  Index: userform.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/userform.php,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- userform.php	19 Apr 2010 11:26:46 -0000	1.31
  +++ userform.php	9 Jul 2010 14:16:00 -0000	1.32
  @@ -4,7 +4,7 @@
   // a userform action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: userform.php,v 1.31 2010/04/19 11:26:46 wkpark Exp $
  +// $Id: userform.php,v 1.32 2010/07/09 14:16:00 wkpark Exp $
   
   function do_userform($formatter,$options) {
     global $DBInfo;
  @@ -90,6 +90,7 @@
           $use_refresh=1;
         } else {
           $title = sprintf(_("Invalid password !"));
  +        $user->setID('Anonymous');
         }
       } else {
         if ($options['login_id'])
  
  
  


1278685262;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv5870\n\nModified Files:\n	RecentChanges.php \nLog Message:\nxhtml fix of thead\n\n
wkpark      2010/07/09 23:21:02

  Modified:    plugin   RecentChanges.php
  Log:
  xhtml fix of thead
  
  Revision  Changes    Path
  1.43      +3 -3      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.42
  retrieving revision 1.43
  diff -u -r1.42 -r1.43
  --- RecentChanges.php	9 Jul 2010 11:03:27 -0000	1.42
  +++ RecentChanges.php	9 Jul 2010 14:21:02 -0000	1.43
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.42 2010/07/09 11:03:27 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.43 2010/07/09 14:21:02 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     global $DBInfo;
  @@ -117,14 +117,14 @@
           $changed_time_fmt = 'm-d [H:i]';
           $use_day=0;
           $template_bra="<table border='0' cellpadding='0' cellspacing='0' width='100%'>";
  -        $template_bra.="<thead><th colspan='3' class='title'>"._("Title")."</th><th class='date'>".
  +        $template_bra.="<thead><tr><th colspan='3' class='title'>"._("Title")."</th><th class='date'>".
             _("Change Date").'</th>';
           if (!empty($DBInfo->show_hosts))
             $template_bra.="<th class='author'>"._("Editor").'</th>';
           $template_bra.="<th class='editinfo'>"._("Changes").'</th>';
           if (!empty($DBInfo->use_counter))
             $template_bra.="<th class='hits'>"._("Hits")."</th>";
  -        $template_bra.="</thead>\n<tbody>\n";
  +        $template_bra.="</tr></thead>\n<tbody>\n";
           $template=
     '$out.= "<tr$alt><td style=\'white-space:nowrap;width:2%\'>$icon</td><td class=\'title\' style=\'width:40%\'>$title$updated</td><td>$bmark</td><td class=\'date\' style=\'width:15%\'>$date</td>';
           if (!empty($DBInfo->show_hosts))
  
  
  


1278685597;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv5944\n\nModified Files:\n	wikilib.php \nLog Message:\nclosing anchors correctly since a anchor is not self-closing tag\n\n
wkpark      2010/07/09 23:26:37

  Modified:    .        wikilib.php
  Log:
  closing anchors correctly since a anchor is not self-closing tag
  
  Revision  Changes    Path
  1.297     +3 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.296
  retrieving revision 1.297
  diff -u -r1.296 -r1.297
  --- wikilib.php	9 Jul 2010 09:49:50 -0000	1.296
  +++ wikilib.php	9 Jul 2010 14:26:37 -0000	1.297
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.296 2010/07/09 09:49:50 wkpark Exp $
  +// $Id: wikilib.php,v 1.297 2010/07/09 14:26:37 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2680,7 +2680,7 @@
          $keys[]=$pkey;
          if (!preg_match('/'.$sel.'/i',$pkey)) continue;
          if ($out !='') $out.="</ul>";
  -       $out.= "<a name='$key' /><h3><a href='#top'>$key</a></h3>\n";
  +       $out.= "<a name='$key'></a><h3><a href='#top'>$key</a></h3>\n";
          $out.= "<ul>";
       }
       if (!preg_match('/'.$sel.'/i',$pkey)) continue;
  @@ -2717,7 +2717,7 @@
     }
     $index[0]=" ";
     
  -  return "<center><a name='top' />$index</center>\n$out";
  +  return "<center><a name='top'></a>$index</center>\n$out";
   }
   
   
  
  
  


1278686220;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv7706\n\nModified Files:\n	Include.php \nLog Message:\n[#315290] fix notice warning\n\n
wkpark      2010/07/09 23:37:00

  Modified:    plugin   Include.php
  Log:
  [#315290] fix notice warning
  
  Revision  Changes    Path
  1.3       +3 -2      moniwiki/plugin/Include.php
  
  Index: Include.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Include.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Include.php	2 Aug 2004 13:02:16 -0000	1.2
  +++ Include.php	9 Jul 2010 14:37:00 -0000	1.3
  @@ -4,7 +4,7 @@
   // a Include macro for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: Include.php,v 1.2 2004/08/02 13:02:16 wkpark Exp $
  +// $Id: Include.php,v 1.3 2010/07/09 14:37:00 wkpark Exp $
   
   function macro_Include($formatter,$value="") {
     global $DBInfo;
  @@ -13,9 +13,10 @@
   #  $savelinks=$formatter->pagelinks; # don't update pagelinks with Included files
   
     preg_match("/([^'\",]+)(?:\s*,\s*)?(\"[^\"]*\"|'[^']*')?(?:\s*,\s*)?([0-9]+)?$/",$value,$match);
  +  $title = '';
     if ($match) {
       $value=trim($match[1]);
  -    if ($match[2]) {
  +    if (isset($match[2])) {
         if ($match[3])
           $level = $match[3];
         else
  
  
  


1278686932;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv9919\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315290] fixed notice warning\n\n
wkpark      2010/07/09 23:48:53

  Modified:    .        wikilib.php
  Log:
  [#315290] fixed notice warning
  
  Revision  Changes    Path
  1.298     +5 -5      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.297
  retrieving revision 1.298
  diff -u -r1.297 -r1.298
  --- wikilib.php	9 Jul 2010 14:26:37 -0000	1.297
  +++ wikilib.php	9 Jul 2010 14:48:52 -0000	1.298
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.297 2010/07/09 14:26:37 wkpark Exp $
  +// $Id: wikilib.php,v 1.298 2010/07/09 14:48:52 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1532,7 +1532,7 @@
       do_goto($formatter,$options);
       return true;
     }
  -  if (!$ret['hits'] and $options['check']) return false;
  +  if (!$ret['hits'] and !empty($options['check'])) return false;
   
     if ($ret['hits'] == 0) {
       $ret2['form']=1;
  @@ -1543,7 +1543,7 @@
     $options['msgtype']='search';
     $formatter->send_title($ret['msg'],$formatter->link_url("FindPage"),$options);
   
  -  if ($options['check']) {
  +  if (!empty($options['check'])) {
       $button= $formatter->link_to("?action=edit",$formatter->icon['create']._
   ("Create this page"));
       print "<h2>".$button;
  @@ -2991,11 +2991,11 @@
     sort($hits);
   
     $idx=1;
  -  if ($opts['linkto']) $idx=10;
  +  if (!empty($opts['linkto'])) $idx=10;
     $out='';
     foreach ($hits as $pagename) {
       $pagetext=htmlspecialchars(urldecode($pagename));
  -    if ($opts['linkto'])
  +    if (!empty($opts['linkto']))
         $out.= '<li>' . $formatter->link_to("$opts[linkto]$pagename",$pagetext,"tabindex='$idx'")."</li>\n";
       else
         $out.= '<li>' . $formatter->link_tag(_rawurlencode($pagename),"",$pagetext,"tabindex='$idx'")."</li>\n";
  
  
  


1278759231;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv656\n\nModified Files:\n	MathChooser.php bookmark.php userform.php \nLog Message:\n[#315290] fixed notice warning\n\n
1278759232;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin/processor\nIn directory kill.kldp.net:/tmp/cvs-serv656/processor\n\nModified Files:\n	blog.php \nLog Message:\n[#315290] fixed notice warning\n\n
wkpark      2010/07/10 19:53:52

  Modified:    plugin   MathChooser.php bookmark.php userform.php
               plugin/processor blog.php
  Log:
  [#315290] fixed notice warning
  
  Revision  Changes    Path
  1.8       +4 -3      moniwiki/plugin/MathChooser.php
  
  Index: MathChooser.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/MathChooser.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- MathChooser.php	21 Jul 2009 16:09:44 -0000	1.7
  +++ MathChooser.php	10 Jul 2010 10:53:51 -0000	1.8
  @@ -8,12 +8,12 @@
   // Name: MathChooser
   // Description: Latex symbol selector
   // URL: MoniWiki/MathChooserPlugin
  -// Version: $Revision: 1.7 $
  +// Version: $Revision: 1.8 $
   // License: GPL
   //
   // Usage: [[MathChooser]]
   //
  -// $Id: MathChooser.php,v 1.7 2009/07/21 16:09:44 wkpark Exp $
  +// $Id: MathChooser.php,v 1.8 2010/07/10 10:53:51 wkpark Exp $
   
   function macro_MathChooser($formatter,$value) {
       global $DBInfo;
  @@ -102,6 +102,7 @@
       $mtools=array_merge($mtools,$mytools);
   
       $out='';
  +    $tab='';
       $attr=' class="active"';
       $sty=' style="display:block"';
       foreach ($mtools as $k=>$tool) {
  @@ -135,7 +136,7 @@
           $x= 0;
           $c= imagecolorat($im,0,0);
           $xpos= array();
  -        while($x <= $width) {
  +        while($x < $width) {
             if ($c == imagecolorat($im,$x++,0)) {
               $xpos[]=$x;
             }
  
  
  
  1.8       +2 -2      moniwiki/plugin/bookmark.php
  
  Index: bookmark.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/bookmark.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- bookmark.php	19 Aug 2009 05:29:38 -0000	1.7
  +++ bookmark.php	10 Jul 2010 10:53:51 -0000	1.8
  @@ -4,7 +4,7 @@
   // a bookmark action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: bookmark.php,v 1.7 2009/08/19 05:29:38 wkpark Exp $
  +// $Id: bookmark.php,v 1.8 2010/07/10 10:53:51 wkpark Exp $
   
   function do_bookmark($formatter,$options) {
     global $DBInfo;
  @@ -33,7 +33,7 @@
       $options['msg']=_("Invalid bookmark!");
     $formatter->send_header("",$options);
     $formatter->send_title($title,"",$options);
  -  if (!$DBInfo->control_read or $DBInfo->security->is_allowed('read',$options)) {
  +  if (empty($DBInfo->control_read) or $DBInfo->security->is_allowed('read',$options)) {
       $formatter->send_page();
     }
     $formatter->send_footer("",$options);
  
  
  
  1.33      +2 -2      moniwiki/plugin/userform.php
  
  Index: userform.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/userform.php,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- userform.php	9 Jul 2010 14:16:00 -0000	1.32
  +++ userform.php	10 Jul 2010 10:53:51 -0000	1.33
  @@ -4,7 +4,7 @@
   // a userform action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: userform.php,v 1.32 2010/07/09 14:16:00 wkpark Exp $
  +// $Id: userform.php,v 1.33 2010/07/10 10:53:51 wkpark Exp $
   
   function do_userform($formatter,$options) {
     global $DBInfo;
  @@ -348,7 +348,7 @@
           $options['msg']=_("Your email address is not valid");
         }
       }
  -    if ($userinfo->info['idtype']=='openid' and
  +    if (!empty($userinfo->info['idtype']) and $userinfo->info['idtype']=='openid' and
         isset($options['nick']) and ($options['nick'] != $userinfo->info['nick'])) {
         $nick = $userinfo->getID($options['nick']);
   
  
  
  
  1.27      +7 -5      moniwiki/plugin/processor/blog.php
  
  Index: blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/blog.php,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- blog.php	19 Apr 2010 11:26:47 -0000	1.26
  +++ blog.php	10 Jul 2010 10:53:52 -0000	1.27
  @@ -7,7 +7,7 @@
   // Hello World
   // }}}
   // this processor is used internally by the Blog action
  -// $Id: blog.php,v 1.26 2010/04/19 11:26:47 wkpark Exp $
  +// $Id: blog.php,v 1.27 2010/07/10 10:53:52 wkpark Exp $
   
   function processor_blog($formatter,$value="",$options) {
     static $date_anchor='';
  @@ -71,12 +71,14 @@
   
     $src= rtrim($value);
   
  -  if ($src) {
  +  if (!empty($src)) {
       $options['nosisters']=1;
  -    list($src,$comments)=explode("----\n",$src,2);
  +    $tmp = explode("----\n",$src,2);
  +    $src = $tmp[0];
  +    if (!empty($tmp[1])) $comments = $tmp[1];
   
       $add_button= _("Add comment");
  -    if ($comments) {
  +    if (!empty($comments)) {
         $count=sizeof(explode("----\n",$comments));
   
         if ($options['noaction'] or $DBInfo->blog_comments) {
  @@ -110,7 +112,7 @@
       $formatter->send_page($src,$options);
       $msg= ob_get_contents();
       ob_end_clean();
  -    if ($comments) {
  +    if (!empty($comments)) {
         ob_start();
         $formatter->send_page($comments,$options);
         $comments= "<div class='blog-comments'><div class='blog-comment'>".ob_get_contents()."</div></div>";
  
  
  


1278759574;wkpark;Update of /cvsroot/moniwiki/moniwiki/local\nIn directory kill.kldp.net:/tmp/cvs-serv810/local\n\nModified Files:\n	wikibits.js \nLog Message:\n[#315487] do not use input tag in the EditToolbar. some css tuning\n\n
1278759574;wkpark;Update of /cvsroot/moniwiki/moniwiki/imgs/plugin/EditToolbar/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv810/imgs/plugin/EditToolbar/moniwiki\n\nModified Files:\n	toolbar.css \nLog Message:\n[#315487] do not use input tag in the EditToolbar. some css tuning\n\n
wkpark      2010/07/10 19:59:34

  Modified:    local    wikibits.js
               imgs/plugin/EditToolbar/moniwiki toolbar.css
  Log:
  [#315487] do not use input tag in the EditToolbar. some css tuning
  
  Revision  Changes    Path
  1.20      +7 -6      moniwiki/local/wikibits.js
  
  Index: wikibits.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/wikibits.js,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- wikibits.js	19 Aug 2009 05:29:37 -0000	1.19
  +++ wikibits.js	10 Jul 2010 10:59:34 -0000	1.20
  @@ -1,7 +1,7 @@
   // from the MediaWiki
   // simplified for the MoniWiki by wkpark
   //
  -// $Id: wikibits.js,v 1.19 2009/08/19 05:29:37 wkpark Exp $
  +// $Id: wikibits.js,v 1.20 2010/07/10 10:59:34 wkpark Exp $
   //
   // Wikipedia JavaScript support functions
   // if this is true, the toolbar will no longer overwrite the infobox when you move the mouse over individual items
  @@ -75,9 +75,9 @@
   	}
   
   	document.write("<a href='#' onclick=\"javascript:insertTags");
  -	document.write("('"+tagOpen+"','"+tagClose+"','"+sampleText+"');\">");
  +	document.write("('"+tagOpen+"','"+tagClose+"','"+sampleText+"');return false;\">");
   
  -        document.write("<img height=\"22\" src=\""+imageFile+"\" border=\"0\" alt=\""+speedTip+"\" title=\""+speedTip+"\""+mouseOver+">");
  +        document.write("<img src=\""+imageFile+"\" border=\"0\" alt=\""+speedTip+"\" title=\""+speedTip+"\""+mouseOver+" />");
   	document.write("</a>");
   	return;
   }
  @@ -85,9 +85,10 @@
   function addLinkButton(imageFile,speedTip,tagOpen,tagClose, sampleText, id,once) {
   	var off=once ? 'true':'false';
   	speedTip=escapeQuotes(_(speedTip));
  -	document.write("<input type='image' onclick=\"javascript:openChooser(this,'"
  -		+ tagOpen+"','" + tagClose + "','" + sampleText + "','" + id + "'," + off + ");\"");
  -        document.write(" width=\"22\" height=\"22\" src=\""+imageFile+"\" border=\"0\" alt=\""+speedTip+"\" title=\""+speedTip+"\""+" />");
  +	document.write("<a href='#' onclick=\"javascript:openChooser(this,'"
  +		+ tagOpen+"','" + tagClose + "','" + sampleText + "','" + id + "'," + off + ");return false;\">");
  +        document.write("<img src=\""+imageFile+"\" border=\"0\" alt=\""+speedTip+"\" title=\""+speedTip+"\""+" />");
  +	document.write("</a>");
   	return;
   }
   
  
  
  
  1.3       +6 -2      moniwiki/imgs/plugin/EditToolbar/moniwiki/toolbar.css
  
  Index: toolbar.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/imgs/plugin/EditToolbar/moniwiki/toolbar.css,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- toolbar.css	3 Dec 2008 08:30:14 -0000	1.2
  +++ toolbar.css	10 Jul 2010 10:59:34 -0000	1.3
  @@ -14,11 +14,15 @@
     background-position:right top;
   }
   
  -#toolbar img, #toolbar input {
  +#toolbar span a {
  +  display:inline-block;
  +}
  +
  +#toolbar img {
     padding:1px;
   }
   
  -#toolbar img:hover, #toolbar input:hover {
  +#toolbar span a:hover img {
     padding:0px;
     border: 1px outset ThreeDHighlight; /* */
     background:url(itoolbg.png) repeat-x;
  
  
  


1278762006;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv6622\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315490] fixed qualifedUrl() to set port number correctly\n
wkpark      2010/07/10 20:40:06

  Modified:    .        wikilib.php
  Log:
  [#315490] fixed qualifedUrl() to set port number correctly
  
  Revision  Changes    Path
  1.299     +3 -1      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.298
  retrieving revision 1.299
  diff -u -r1.298 -r1.299
  --- wikilib.php	9 Jul 2010 14:48:52 -0000	1.298
  +++ wikilib.php	10 Jul 2010 11:40:06 -0000	1.299
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.298 2010/07/09 14:48:52 wkpark Exp $
  +// $Id: wikilib.php,v 1.299 2010/07/10 11:40:06 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -72,6 +72,8 @@
     if (!empty($_SERVER['HTTPS'])) $proto= 'https';
     else $proto= strtolower(strtok($_SERVER['SERVER_PROTOCOL'],'/'));
     if (empty($url[0]) or $url[0] != '/') $url='/'.$url; // XXX
  +  if (strpos($_SERVER['HTTP_HOST'],':') !== false)
  +    $port = '';
     return $proto.'://'.$_SERVER['HTTP_HOST'].$port.$url;
   }
   
  
  
  


1278763245;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv8842\n\nModified Files:\n	Comment.php \nLog Message:\ncheck #nocomment option at the top\n\n
wkpark      2010/07/10 21:00:45

  Modified:    plugin   Comment.php
  Log:
  check #nocomment option at the top
  
  Revision  Changes    Path
  1.38      +4 -4      moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- Comment.php	19 Apr 2010 11:26:46 -0000	1.37
  +++ Comment.php	10 Jul 2010 12:00:45 -0000	1.38
  @@ -5,19 +5,20 @@
   //
   // Author: Won-Kyu Park <wkpark@kldp.org>
   // Since: 2004-08-16
  -// Modified: $Date: 2010/04/19 11:26:46 $
  +// Modified: $Date: 2010/07/10 12:00:45 $
   // Name: Comment plugin
   // Description: Comment Plugin
   // URL: MoniWiki:CommentPlugin
  -// Version: $Revision: 1.37 $
  +// Version: $Revision: 1.38 $
   // License: GPL
   // Usage: [[Comment]], ?action=comment
   //
  -// $Id: Comment.php,v 1.37 2010/04/19 11:26:46 wkpark Exp $
  +// $Id: Comment.php,v 1.38 2010/07/10 12:00:45 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $DBInfo;
   
  +  if (!empty($options['nocomment'])) return '';
     $user=$DBInfo->user; # get from COOKIE VARS
     $options['id']=$user->id;
   
  @@ -60,7 +61,6 @@
     if (!empty($options['usemeta']) or !empty($use_meta)) {
       $hidden.="<input type='hidden' name='usemeta' value=1 />\n";
     }
  -  if (!empty($options['nocomment'])) return '';
     if (!$DBInfo->security->writable($options)) return '';
   
     if (!empty($options['mid'])) $mymid=$options['mid'];
  
  
  


1278763318;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv8894\n\nModified Files:\n	RecentChanges.php \nLog Message:\ndo not touch the $user variable in the macro inside\n\n
wkpark      2010/07/10 21:01:58

  Modified:    plugin   RecentChanges.php
  Log:
  do not touch the $user variable in the macro inside
  
  Revision  Changes    Path
  1.44      +6 -6      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.43
  retrieving revision 1.44
  diff -u -r1.43 -r1.44
  --- RecentChanges.php	9 Jul 2010 14:21:02 -0000	1.43
  +++ RecentChanges.php	10 Jul 2010 12:01:58 -0000	1.44
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.43 2010/07/09 14:21:02 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.44 2010/07/10 12:01:58 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     global $DBInfo;
  @@ -151,13 +151,13 @@
     $daysago=$opts['ago'] ? $daysago.'&amp;ago='.$opts['ago']:$daysago;
         
   
  -  $user=&$DBInfo->user; # retrive user info
  +  $u=$DBInfo->user; # retrive user info
   
  -  if ($user->id != 'Anonymous') {
  -    $bookmark= !empty($user->info['bookmark']) ? $user->info['bookmark'] : '';
  -    $tz_offset= !empty($user->info['tz_offset']) ? $user->info['tz_offset'] : '';
  +  if ($u->id != 'Anonymous') {
  +    $bookmark= !empty($u->info['bookmark']) ? $u->info['bookmark'] : '';
  +    $tz_offset= !empty($u->info['tz_offset']) ? $u->info['tz_offset'] : '';
     } else {
  -    $bookmark= $user->bookmark;
  +    $bookmark= $u->bookmark;
     }
     if (empty($tz_offset)) {
       $tz_offset=date("Z");
  
  
  


1278926335;wkpark;Update of /cvsroot/moniwiki/moniwiki-theme/azblue2/css\nIn directory kill.kldp.net:/tmp/cvs-serv9459/css\n\nModified Files:\n	default.css \nLog Message:\ncleanup css/menu markup\n
1278926336;wkpark;Update of /cvsroot/moniwiki/moniwiki-theme/azblue2\nIn directory kill.kldp.net:/tmp/cvs-serv9459\n\nModified Files:\n	header.php \nLog Message:\ncleanup css/menu markup\n
1278926336;wkpark;Update of /cvsroot/moniwiki/moniwiki-theme/azblue2/imgs\nIn directory kill.kldp.net:/tmp/cvs-serv9459/imgs\n\nAdded Files:\n	bg_menu.png \nLog Message:\ncleanup css/menu markup\n
1278998009;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv20392\n\nModified Files:\n	wiki.php \nLog Message:\n[#315496]\n * the separator of the trailer added\n * set the css class of the menu item correctly.\n * remove the wrapper div of the trailer\n
wkpark      2010/07/13 14:13:30

  Modified:    .        wiki.php
  Log:
  [#315496]
   * the separator of the trailer added
   * set the css class of the menu item correctly.
   * remove the wrapper div of the trailer
  
  Revision  Changes    Path
  1.529     +20 -17    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.528
  retrieving revision 1.529
  diff -u -r1.528 -r1.529
  --- wiki.php	9 Jul 2010 11:21:17 -0000	1.528
  +++ wiki.php	13 Jul 2010 05:13:29 -0000	1.529
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.528 2010/07/09 11:21:17 wkpark Exp $
  +// $Id: wiki.php,v 1.529 2010/07/13 05:13:29 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.528 $',1,-1);
  +$_revision = substr('$Revision: 1.529 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -4788,14 +4788,17 @@
       if (empty($this->css_friendly)) {
         $menu=$this->menu_bra.implode($this->menu_sep,$menu).$this->menu_cat;
       } else {
  -      #for ($i=0,$szm=sizeof($menu);$i<$szm;$i++) {
  -      #  #if $menu[$i]==
  -      #  $menu[$i]="<li >".$menu[$i]."</li>\n";
  -      #}
  -      $menu='<div id="wikiMenu"><ul><li class="first">'.implode("</li><li>",$menu)."</li></ul></div>\n";
  -      # set current attribute.
  -      $menu=preg_replace("/(li)>(<a\s[^>]+current[^>]+)/",
  -        "$1 class='current'>$2",$menu);
  +      $cls = 'first';
  +      $mnu = '';
  +      foreach ($menu as $k=>$v) {
  +        if (preg_match('/current/', $v)) {
  +          $cls .=' current';
  +        }
  +        # set current page attribute.
  +        $mnu.='<li'.(!empty($cls) ? ' class="'. $cls .'"' : '').'>'.$menu[$k]."</li>\n";
  +        $cls = '';
  +      }
  +      $menu='<div id="wikiMenu"><ul>'.$mnu."</ul></div>\n";
       }
       $this->topmenu=$menu;
   
  @@ -4924,9 +4927,9 @@
       #
       if (file_exists($this->themedir."/header.php")) {
         if (!empty($this->trail))
  -        $trail="<div id='wikiTrailer'>\n".$this->trail."</div>\n";
  +        $trail=&$this->trail;
         if (!empty($this->origin))
  -        $origin="<div id='wikiOrigin'>\n".$this->origin."</div>\n";
  +        $origin=&$this->origin;
   
         $subindex=!empty($this->subindex) ? $this->subindex : '';
         $themeurl=$this->themeurl;
  @@ -4960,14 +4963,14 @@
       if (empty($this->popup) and (empty($themeurl) or !$this->_newtheme)) {
         echo $DBInfo->hr;
         if ($options['trail']) {
  -        echo "<div id='wikiTrailer'>\n";
  +        echo "<div id='wikiTrailer'><p>\n";
           echo $this->trail;
  -        echo "</div>\n";
  +        echo "</p></div>\n";
         }
         if ($this->origin) {
  -        echo "<div id='wikiOrigin'>\n";
  +        echo "<div id='wikiOrigin'><p>\n";
           echo $this->origin;
  -        echo "</div>\n";
  +        echo "</p></div>\n";
         }
         echo $this->subindex;
       }
  @@ -5042,7 +5045,7 @@
       $save = $this->nonexists;
       $this->nonexists = 'forcelink';
       foreach ($trails as $page) {
  -      $this->trail.=$this->word_repl('"'.$page.'"','','',1,0).$DBInfo->arrow;
  +      $this->trail.=$this->word_repl('"'.$page.'"','','',1,0).'<span class="separator">'.$DBInfo->arrow.'</span>';
       }
       $this->nonexists = $save;
       $this->trail.= ' '.htmlspecialchars($pagename);
  
  
  


1278998133;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv20462\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315496] closing anchors correctly since a anchor is not self-closing tag\n
wkpark      2010/07/13 14:15:33

  Modified:    .        wikilib.php
  Log:
  [#315496] closing anchors correctly since a anchor is not self-closing tag
  
  Revision  Changes    Path
  1.300     +5 -6      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.299
  retrieving revision 1.300
  diff -u -r1.299 -r1.300
  --- wikilib.php	10 Jul 2010 11:40:06 -0000	1.299
  +++ wikilib.php	13 Jul 2010 05:15:33 -0000	1.300
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.299 2010/07/10 11:40:06 wkpark Exp $
  +// $Id: wikilib.php,v 1.300 2010/07/13 05:15:33 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2797,12 +2797,11 @@
       }
     }
     $formatter->foots[]="<li><tt class='foot'>".
  -                      "<a id='$fnidx' />".
  -                      "<a href='#r$fnidx'>$text</a></tt> ".
  +                      "<a id='$fnidx' href='#r$fnidx'>$text</a></tt> ".
                         "$value</li>";
     $tval=str_replace("'","&#39;",$value);
  -  return "<tt class='foot'><a id='r$fnidx' />".
  -    "<a href='#$fnidx' title='$tval'>$text</a></tt>";
  +  return "<tt class='foot'>".
  +    "<a id='r$fnidx' href='#$fnidx' title='$tval'>$text</a></tt>";
   }
   
   function macro_TableOfContents(&$formatter,$value="") {
  @@ -2935,7 +2934,7 @@
      if ($baseurl)
        $TOC.=$close.$open."<dt><a href='$baseurl#s$prefix-$num'>$num$a0 $head $a1</dt>\n";
      else
  -     $TOC.=$close.$open."<dt><a id='toc$prefix-$num' /><a href='#s$prefix-$num'>$num$a0 $head $a1</dt>\n";
  +     $TOC.=$close.$open."<dt><a id='toc$prefix-$num' href='#s$prefix-$num'>$num$a0 $head $a1</dt>\n";
   
     }
   
  
  
  


1279027219;wkpark;Update of /cvsroot/moniwiki/moniwiki-theme/azblue2/css\nIn directory kill.kldp.net:/tmp/cvs-serv20650/css\n\nModified Files:\n	default.css \nLog Message:\n[#315496]\n * change the default font family from Georgia to Arial\n * css styling HR / the trailer, wikiAction etc.\n
1279027219;wkpark;Update of /cvsroot/moniwiki/moniwiki-theme/azblue2\nIn directory kill.kldp.net:/tmp/cvs-serv20650\n\nModified Files:\n	footer.php header.php \nLog Message:\n[#315496]\n * change the default font family from Georgia to Arial\n * css styling HR / the trailer, wikiAction etc.\n
1279027219;wkpark;Update of /cvsroot/moniwiki/moniwiki-theme/azblue2/imgs\nIn directory kill.kldp.net:/tmp/cvs-serv20650/imgs\n\nAdded Files:\n	bg_pane.png \nLog Message:\n[#315496]\n * change the default font family from Georgia to Arial\n * css styling HR / the trailer, wikiAction etc.\n
1279030244;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv24966\n\nModified Files:\n	userform.php \nLog Message:\n[#315498] check wiki_sendmail() return val to show err msgs\n\n
wkpark      2010/07/13 23:10:46

  Modified:    plugin   userform.php
  Log:
  [#315498] check wiki_sendmail() return val to show err msgs
  
  Revision  Changes    Path
  1.34      +13 -5     moniwiki/plugin/userform.php
  
  Index: userform.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/userform.php,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- userform.php	10 Jul 2010 10:53:51 -0000	1.33
  +++ userform.php	13 Jul 2010 14:10:44 -0000	1.34
  @@ -4,7 +4,7 @@
   // a userform action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: userform.php,v 1.33 2010/07/10 10:53:51 wkpark Exp $
  +// $Id: userform.php,v 1.34 2010/07/13 14:10:44 wkpark Exp $
   
   function do_userform($formatter,$options) {
     global $DBInfo;
  @@ -268,8 +268,12 @@
                    $body.="\n".sprintf(_("Your initial password is %s"),$mypass)."\n\n";
                    $body.=_("Please change your password later")."\n";
                  }
  -               wiki_sendmail($body,$options);
  -               $options['msg'].='<br/>'._("Confirmation E-mail sent");
  +               $ret = wiki_sendmail($body,$options);
  +               if (is_array($ret)) {
  +                 $options['msg'].=$ret['msg'];
  +               } else {
  +                 $options['msg'].='<br/>'._("Confirmation E-mail sent");
  +               }
                }
              } else {# already exist user
                $user=$udb->getUser($user->id);
  @@ -342,8 +346,12 @@
           $options['subject']="[$DBInfo->sitename] "._("E-mail confirmation");
           $body=qualifiedUrl($formatter->link_url('',"?action=userform&login_id=$user->id&ticket=$ticket.$options[email]"));
           $body=_("Please confirm your email address")."\n".$body;
  -        wiki_sendmail($body,$options);
  -        $options['msg']=_("E-mail confirmation mail sent");
  +        $ret = wiki_sendmail($body,$options);
  +        if (is_array($ret)) {
  +          $options['msg']=$ret['msg'];
  +        } else {
  +          $options['msg']=_("E-mail confirmation mail sent");
  +        }
         } else {
           $options['msg']=_("Your email address is not valid");
         }
  
  
  


1279032552;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv2220\n\nModified Files:\n	THANKS \nLog Message:\nchange encoding\n\n
wkpark      2010/07/13 23:49:12

  Modified:    .        THANKS
  Log:
  change encoding
  
  Revision  Changes    Path
  1.2       +1 -1      moniwiki/THANKS
  
  Index: THANKS
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/THANKS,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- THANKS	10 Aug 2003 12:16:27 -0000	1.1
  +++ THANKS	13 Jul 2010 14:49:12 -0000	1.2
  @@ -1,4 +1,4 @@
  -Ű   ʴ   ֽ еԴϴ.
  +모니위키가 나오기까지 보이지 않는 많은 도움을 주신 분들입니다.
   It would not be what it is today without the invaluable help of these people:
   
   kz http://kz.mpecc.com/
  
  
  


1279039689;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv21318\n\nModified Files:\n	monisetup.php \nLog Message:\n[#315290] fixed notice warnings\n
wkpark      2010/07/14 01:48:09

  Modified:    .        monisetup.php
  Log:
  [#315290] fixed notice warnings
  
  Revision  Changes    Path
  1.50      +10 -6     moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.49
  retrieving revision 1.50
  diff -u -r1.49 -r1.50
  --- monisetup.php	30 Apr 2010 13:16:34 -0000	1.49
  +++ monisetup.php	13 Jul 2010 16:48:09 -0000	1.50
  @@ -1,7 +1,7 @@
   <?php
   // Copyright 2003-2007 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.49 2010/04/30 13:16:34 wkpark Exp $
  +// $Id: monisetup.php,v 1.50 2010/07/13 16:48:09 wkpark Exp $
   
   function _stripslashes($str) {
     return get_magic_quotes_gpc() ? stripslashes($str):$str;
  @@ -36,7 +36,7 @@
       print '<div class="check">';
       if (function_exists("dba_open")) {
         print '<h3>'._t("Check a dba configuration").'</h3>';
  -      $tempnam="/tmp/".time();
  +      $tempnam=tempnam(".",'dba-'.time());
         if ($db=@dba_open($tempnam,"n","db4"))
           $config['dba_type']="db4";
         else if ($db=@dba_open($tempnam,"n","db3"))
  @@ -46,8 +46,12 @@
         else if ($db=@dba_open($tempnam,"n","gdbm"))
           $config['dba_type']="gdbm";
   
  -      if ($db) dba_close($db);
  -      print '<ul><li>'.sprintf(_t("%s is selected."),"<b>$config[dba_type]</b>").'</li></ul>';
  +      if (is_resource($db)) {
  +        dba_close($db);
  +        print '<ul><li>'.sprintf(_t("%s is selected."),"<b>$config[dba_type]</b>").'</li></ul>';
  +      } else {
  +        print '<p>'.sprintf(_t("No \$dba_type selected.")).'</p>';
  +      }
       }
       preg_match("/Apache\/2\./",$_SERVER['SERVER_SOFTWARE'],$match);
   
  @@ -671,7 +675,7 @@
   }
   
   function show_wikiseed($config,$seeddir='wikiseed') {
  -  if ($config['include_path'])
  +  if (!empty($config['include_path']))
       $path = $config['include_path'];
     else
       $path='.:/usr/share/moniwiki:/usr/local/share/moniwiki';
  @@ -786,7 +790,7 @@
   }
   
   function sow_wikiseed($config,$seeddir='wikiseed',$seeds) {
  -  if ($config['include_path'])
  +  if (!empty($config['include_path']))
       $path = $config['include_path'];
     else
       $path='.:/usr/share/moniwiki:/usr/local/share/moniwiki';
  
  
  


1279054417;wkpark;Update of /cvsroot/moniwiki/moniwiki/lib\nIn directory kill.kldp.net:/tmp/cvs-serv26343/lib\n\nModified Files:\n	dict.text.php \nLog Message:\nturn off debug.\n\n
wkpark      2010/07/14 05:53:37

  Modified:    lib      dict.text.php
  Log:
  turn off debug.
  
  Revision  Changes    Path
  1.7       +4 -4      moniwiki/lib/dict.text.php
  
  Index: dict.text.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/dict.text.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- dict.text.php	3 Apr 2009 14:58:54 -0000	1.6
  +++ dict.text.php	13 Jul 2010 20:53:37 -0000	1.7
  @@ -8,10 +8,10 @@
   // Name: TextDictModule
   // Description: A Simple Text-based Dictionary Module
   // URL: MoniWiki:TextDictModule etc.
  -// Version: $Revision: 1.6 $
  +// Version: $Revision: 1.7 $
   // License: GPL
   //
  -// $Id: dict.text.php,v 1.6 2009/04/03 14:58:54 wkpark Exp $
  +// $Id: dict.text.php,v 1.7 2010/07/13 20:53:37 wkpark Exp $
   //
   
   function _fuzzy_bsearch_file($fp, $key, $seek, $fuzzyoffset=0, $klen=0,$fz=0,$encoding='UTF-8') {
  @@ -20,7 +20,7 @@
       $_fuzzy_factor2 = 0.55; # similiar pos parameter
       $_chunk_size = 128; # average strlen parameter of lines.
       $_howmany = 23; # this is not exact the bsearch then limit the search counter.
  -    $_debug = 1; # show debug info or not
  +    $_debug = 0; # show debug info or not
   
       if (empty($key)) return null;
       if ($fz == 0) return null;
  @@ -107,7 +107,7 @@
   
   function _file_match($fp,$key,$lower,$upper,$fsize,$klen=1,$match_prefix=true,$encoding='UTF-8') {
       static $cseek=0;
  -    $_debug=1;
  +    $_debug=0;
   
       $count=0;
   
  
  
  


1279383476;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv14190/plugin\n\nModified Files:\n	Clip.php Draw.php \nLog Message:\n[#315403] use $upload_dir_url\n\n
wkpark      2010/07/18 01:17:57

  Modified:    plugin   Clip.php Draw.php
  Log:
  [#315403] use $upload_dir_url
  
  Revision  Changes    Path
  1.5       +2 -2      moniwiki/plugin/Clip.php
  
  Index: Clip.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Clip.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Clip.php	19 Apr 2010 11:26:46 -0000	1.4
  +++ Clip.php	17 Jul 2010 16:17:56 -0000	1.5
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Clip(hello)]]
   //
  -// $Id: Clip.php,v 1.4 2010/04/19 11:26:46 wkpark Exp $
  +// $Id: Clip.php,v 1.5 2010/07/17 16:17:56 wkpark Exp $
   
   function macro_Clip($formatter,$value) {
     global $DBInfo;
  @@ -61,7 +61,7 @@
   
     //$imgpath="$_dir/$pngname";
     $imgpath="$pngname";
  -
  +  $imgparam = '';
     if (file_exists($_dir.'/'.$imgpath.'.png')) {
       $url=qualifiedUrl($DBInfo->url_prefix.'/'.$_dir.'/'.$imgpath.'.png');
       $imgparam="<param name='image' value='$url' />";
  
  
  
  1.8       +6 -5      moniwiki/plugin/Draw.php
  
  Index: Draw.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Draw.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Draw.php	19 Apr 2010 11:26:46 -0000	1.7
  +++ Draw.php	17 Jul 2010 16:17:56 -0000	1.8
  @@ -8,11 +8,11 @@
   // Name: Draw Plugin
   // Description: Draw gif drawing using the TWiki Draw plugin 
   // URL: MoniWiki:DrawPlugin
  -// Version: $Revision: 1.7 $
  +// Version: $Revision: 1.8 $
   // License: GPL
   // Usage: [[Draw(hello)]] without a gif extention.
   //
  -// $Id: Draw.php,v 1.7 2010/04/19 11:26:46 wkpark Exp $
  +// $Id: Draw.php,v 1.8 2010/07/17 16:17:56 wkpark Exp $
   
   function macro_Draw($formatter,$value) {
     global $DBInfo;
  @@ -48,7 +48,7 @@
       $map=preg_replace("/%MAPNAME%/",$name,$map);
     }
   
  -  return "$map<img src='$DBInfo->url_prefix/$_dir/$gifname' border='0' alt='hotdraw' $maptag /></a>\n".$editable;
  +  return "$map<img src='$DBInfo->upload_dir_url/$keyname/$gifname' border='0' alt='hotdraw' $maptag /></a>\n".$editable;
   }
   
   function do_post_Draw($formatter,$options=array()) {
  @@ -131,6 +131,7 @@
     }
   
     $imgpath="$_dir/$gifname";
  +  $ufname = $gifname;
   
     $dummy=0;
     while (file_exists($imgpath)) {
  @@ -139,8 +140,8 @@
        $imgpath= "$_dir/$ufname";
     }
   
  -  $draw_url="$DBInfo->url_prefix/$imgpath.draw";
  -  $gif_url="$DBInfo->url_prefix/$imgpath.gif";
  +  $draw_url="$DBInfo->upload_dir_url/$keyname/$ufname.draw";
  +  $gif_url="$DBInfo->upload_dir_url/$keyname/$ufname.gif";
   
     $formatter->send_header("",$options);
     $formatter->send_title(_("Edit drawing"),"",$options);
  
  
  


1279463720;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv15733\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315290] fixed notice warning\n\n
1279463721;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv15733/plugin\n\nModified Files:\n	UploadFile.php \nLog Message:\n[#315290] fixed notice warning\n\n
wkpark      2010/07/18 23:35:21

  Modified:    .        wikilib.php
               plugin   UploadFile.php
  Log:
  [#315290] fixed notice warning
  
  Revision  Changes    Path
  1.301     +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.300
  retrieving revision 1.301
  diff -u -r1.300 -r1.301
  --- wikilib.php	13 Jul 2010 05:15:33 -0000	1.300
  +++ wikilib.php	18 Jul 2010 14:35:20 -0000	1.301
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.300 2010/07/13 05:15:33 wkpark Exp $
  +// $Id: wikilib.php,v 1.301 2010/07/18 14:35:20 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2467,7 +2467,7 @@
       if (!empty($DBInfo->shared_intermap) and $cf->mtime('interwiki') < filemtime($DBInfo->shared_intermap) ) {
         $force_init=1;
       }
  -    if (!$formatter->refresh and $cf->exists('interwiki') and !$force_init) {
  +    if (!empty($formatter->refresh) and $cf->exists('interwiki') and !$force_init) {
         $info=unserialize($cf->fetch('interwiki'));
         $DBInfo->interwiki=$info['interwiki'];
         $DBInfo->interwikirule=$info['interwikirule'];
  
  
  
  1.49      +3 -3      moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.48
  retrieving revision 1.49
  diff -u -r1.48 -r1.49
  --- UploadFile.php	26 Apr 2010 07:20:01 -0000	1.48
  +++ UploadFile.php	18 Jul 2010 14:35:21 -0000	1.49
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.48 2010/04/26 07:20:01 wkpark Exp $
  +// $Id: UploadFile.php,v 1.49 2010/07/18 14:35:21 wkpark Exp $
   
   function _upload_err_msg($error_code) {
       switch ($error_code) { 
  @@ -33,8 +33,8 @@
     $title = '';
   
     if (isset($_FILES['upfile']) and is_array($_FILES)) {
  -    if (($options['multiform'] > 1) or is_array($_FILES['upfile']['name'])) {
  -      $options['multiform']=$options['multiform'] ?
  +    if ((!empty($options['multiform']) and $options['multiform'] > 1) or is_array($_FILES['upfile']['name'])) {
  +      $options['multiform']=!empty($options['multiform']) ?
            $options['multiform']:sizeof($_FILES['upfile']['name']);
         $count=$options['multiform'];
         $files=&$_FILES;
  
  
  


1279464743;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv18265\n\nModified Files:\n	UrlMapping.php \nLog Message:\n[#315290] fixed notice warning\n\n
wkpark      2010/07/18 23:52:24

  Modified:    plugin   UrlMapping.php
  Log:
  [#315290] fixed notice warning
  
  Revision  Changes    Path
  1.4       +2 -2      moniwiki/plugin/UrlMapping.php
  
  Index: UrlMapping.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UrlMapping.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- UrlMapping.php	17 Apr 2010 12:07:26 -0000	1.3
  +++ UrlMapping.php	18 Jul 2010 14:52:23 -0000	1.4
  @@ -5,7 +5,7 @@
   //
   // Usage: [[UrlMapping]]
   //
  -// $Id: UrlMapping.php,v 1.3 2010/04/17 12:07:26 wkpark Exp $
  +// $Id: UrlMapping.php,v 1.4 2010/07/18 14:52:23 wkpark Exp $
   
   function macro_UrlMapping($formatter,$value,$options=array()) {
       global $DBInfo;
  @@ -21,7 +21,7 @@
           if ($DBInfo->shared_url_mappings and $cf->mtime('urlmapping') < filemtime($DBInfo->shared_url_mappings) ) {
               $force_init=1;
           }
  -        if (!$formatter->refresh and $cf->exists('urlmapping') and !$force_init) {
  +        if (!empty($formatter->refresh) and $cf->exists('urlmapping') and !$force_init) {
               $info=unserialize($cf->fetch('urlmapping'));
               $DBInfo->url_mappings=$info['urlmapping'];
               $DBInfo->url_mapping_rule=$info['urlmappingrule'];
  
  
  


1279465078;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv18431\n\nModified Files:\n	wiki.php \nLog Message:\n[#315290] fixed notice warning\n\n
wkpark      2010/07/18 23:57:59

  Modified:    .        wiki.php
  Log:
  [#315290] fixed notice warning
  
  Revision  Changes    Path
  1.530     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.529
  retrieving revision 1.530
  diff -u -r1.529 -r1.530
  --- wiki.php	13 Jul 2010 05:13:29 -0000	1.529
  +++ wiki.php	18 Jul 2010 14:57:58 -0000	1.530
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.529 2010/07/13 05:13:29 wkpark Exp $
  +// $Id: wiki.php,v 1.530 2010/07/18 14:57:58 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.529 $',1,-1);
  +$_revision = substr('$Revision: 1.530 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -1059,7 +1059,7 @@
         $id=!empty($options['name']) ?
           _stripslashes($options['name']):$_SERVER['REMOTE_ADDR'];
       } else {
  -      $id=$options['nick'] ? $options['nick']:$options['id'];
  +      $id=!empty($options['nick']) ? $options['nick']:$options['id'];
         if (!preg_match('/([A-Z][a-z0-9]+){2,}/',$id)) $id='['.$id.']';
       }
    
  
  
  


1279468919;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv27073\n\nModified Files:\n	wiki.php \nLog Message:\n[#315506] check $use_titlemenu correctly. patched by fantics\n\n
wkpark      2010/07/19 01:01:59

  Modified:    .        wiki.php
  Log:
  [#315506] check $use_titlemenu correctly. patched by fantics
  
  Revision  Changes    Path
  1.531     +2 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.530
  retrieving revision 1.531
  diff -u -r1.530 -r1.531
  --- wiki.php	18 Jul 2010 14:57:58 -0000	1.530
  +++ wiki.php	18 Jul 2010 16:01:58 -0000	1.531
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.530 2010/07/18 14:57:58 wkpark Exp $
  +// $Id: wiki.php,v 1.531 2010/07/18 16:01:58 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.530 $',1,-1);
  +$_revision = substr('$Revision: 1.531 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -4747,8 +4747,6 @@
       if (isset($quicklinks[$this->page->name])) {
         #$attr.=" class='current'";
         $titlemnu=1;
  -    } else {
  -      $quicklinks[$this->page->name]='';
       }
   
       if (!empty($DBInfo->use_userlink) and isset($quicklinks['UserPreferences']) and $options['id'] != 'Anonymous') {
  
  
  


1280153125;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv25635\n\nModified Files:\n	UploadFile.php \nLog Message:\n[#315530] fixed the UploadFile action plugin by nori\n\n
wkpark      2010/07/26 23:05:25

  Modified:    plugin   UploadFile.php
  Log:
  [#315530] fixed the UploadFile action plugin by nori
  
  Revision  Changes    Path
  1.50      +2 -2      moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.49
  retrieving revision 1.50
  diff -u -r1.49 -r1.50
  --- UploadFile.php	18 Jul 2010 14:35:21 -0000	1.49
  +++ UploadFile.php	26 Jul 2010 14:05:25 -0000	1.50
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.49 2010/07/18 14:35:21 wkpark Exp $
  +// $Id: UploadFile.php,v 1.50 2010/07/26 14:05:25 wkpark Exp $
   
   function _upload_err_msg($error_code) {
       switch ($error_code) { 
  @@ -301,7 +301,7 @@
   
     $comment.="'$upfilename' ";
   
  -  $title.=(!empty($title) ? "\n":'').
  +  $title.=(!empty($title) ? "\\n":'').
       sprintf(_("File \"%s\" is uploaded successfully"),$upfilename);
   
     $fullname=$formatter->page->name."/$upfilename";
  
  
  


1280241745;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv7561/plugin\n\nModified Files:\n	Comment.php \nLog Message:\n[#315480] wrap input tag with a span to styling input tags\n\n
wkpark      2010/07/27 23:42:26

  Modified:    plugin   Comment.php
  Log:
  [#315480] wrap input tag with a span to styling input tags
  
  Revision  Changes    Path
  1.39      +5 -5      moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- Comment.php	10 Jul 2010 12:00:45 -0000	1.38
  +++ Comment.php	27 Jul 2010 14:42:25 -0000	1.39
  @@ -5,15 +5,15 @@
   //
   // Author: Won-Kyu Park <wkpark@kldp.org>
   // Since: 2004-08-16
  -// Modified: $Date: 2010/07/10 12:00:45 $
  +// Modified: $Date: 2010/07/27 14:42:25 $
   // Name: Comment plugin
   // Description: Comment Plugin
   // URL: MoniWiki:CommentPlugin
  -// Version: $Revision: 1.38 $
  +// Version: $Revision: 1.39 $
   // License: GPL
   // Usage: [[Comment]], ?action=comment
   //
  -// $Id: Comment.php,v 1.38 2010/07/10 12:00:45 wkpark Exp $
  +// $Id: Comment.php,v 1.39 2010/07/27 14:42:25 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $DBInfo;
  @@ -99,7 +99,7 @@
   FORM;
     } else {
       if (empty($options['nopreview']))
  -    $preview='<input type="submit" name="button_preview" value="'.$preview_btn.'" />';
  +    $preview='<span class="button"><input type="submit" class="button" name="button_preview" value="'.$preview_btn.'" /></span>';
       $form.= <<<FORM
   <textarea class="wiki" name="savetext"
    rows="$rows" cols="$cols">$savetext</textarea><br />
  @@ -118,7 +118,7 @@
   $sig
   <input type="hidden" name="action" value="$action" />
   <input type="hidden" name="datestamp" value="$datestamp" />
  -<input type="submit" value="$comment" />
  +<span class="button"><input type="submit" class="button" value="$comment" /></span>
   $preview
   </div>
   </form>
  
  
  


1280241807;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv7611/plugin\n\nModified Files:\n	RecentChanges.php ISBN.php \nLog Message:\n[#315290] fixed notice warnings\n\n
wkpark      2010/07/27 23:43:27

  Modified:    plugin   RecentChanges.php ISBN.php
  Log:
  [#315290] fixed notice warnings
  
  Revision  Changes    Path
  1.45      +2 -1      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.44
  retrieving revision 1.45
  diff -u -r1.44 -r1.45
  --- RecentChanges.php	10 Jul 2010 12:01:58 -0000	1.44
  +++ RecentChanges.php	27 Jul 2010 14:43:27 -0000	1.45
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.44 2010/07/10 12:01:58 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.45 2010/07/27 14:43:27 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     global $DBInfo;
  @@ -80,6 +80,7 @@
     if (preg_match("/^[\s\/\-:aABdDFgGhHiIjmMOrSTY]+$/",$args[0]))
       $date_fmt=$args[0];
   
  +  $cat0="";
     foreach ($args as $arg) {
       $arg=trim($arg);
       if (($p=strpos($arg,'='))!==false) {
  
  
  
  1.13      +2 -2      moniwiki/plugin/ISBN.php
  
  Index: ISBN.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/ISBN.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- ISBN.php	19 Apr 2010 11:26:46 -0000	1.12
  +++ ISBN.php	27 Jul 2010 14:43:27 -0000	1.13
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a ISBN macro plugin for the MoniWiki
   //
  -// $Id: ISBN.php,v 1.12 2010/04/19 11:26:46 wkpark Exp $
  +// $Id: ISBN.php,v 1.13 2010/07/27 14:43:27 wkpark Exp $
   
   function macro_ISBN($formatter,$value="") {
     global $DBInfo;
  @@ -227,7 +227,7 @@
     if (!empty($noimg)) {
       $icon=$DBInfo->imgs_dir_interwiki.strtolower($lang).'-16.png';
       $sx=16;$sy=16;
  -    if ($DBInfo->intericon[$lang]) {
  +    if (!empty($DBInfo->intericon[$lang])) {
         $icon=$DBInfo->intericon[$lang][2];
         $sx=$DBInfo->intericon[$lang][0];
         $sy=$DBInfo->intericon[$lang][1];
  
  
  


1280241860;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv7665/plugin\n\nModified Files:\n	FastSearch.php \nLog Message:\n[#315528] fixed notice warning\n\n
wkpark      2010/07/27 23:44:20

  Modified:    plugin   FastSearch.php
  Log:
  [#315528] fixed notice warning
  
  Revision  Changes    Path
  1.13      +7 -4      moniwiki/plugin/FastSearch.php
  
  Index: FastSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FastSearch.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- FastSearch.php	19 Jun 2010 07:10:51 -0000	1.12
  +++ FastSearch.php	27 Jul 2010 14:44:20 -0000	1.13
  @@ -13,7 +13,7 @@
   //
   // Usage: [[FastSearch(string)]]
   //
  -// $Id: FastSearch.php,v 1.12 2010/06/19 07:10:51 wkpark Exp $
  +// $Id: FastSearch.php,v 1.13 2010/07/27 14:44:20 wkpark Exp $
   
   include_once('lib/search.DBA.php');
   
  @@ -73,6 +73,9 @@
   
     $hits=array();
   
  +  $context = !empty($opts['context']) ? $opts['context'] : 0;
  +  $contexts = array();
  +
     foreach ($pages as $key) {
       $page_name= $DBInfo->keyToPagename($key);
       $p = new WikiPage($page_name);
  @@ -83,13 +86,13 @@
       if ($count) {
         $hits[$page_name] = $count;
         # search matching contexts
  -      $contexts[$page_name] = find_needle($body,$needle,'',$opts['context']);
  +      $contexts[$page_name] = find_needle($body,$needle,'',$context);
       }
     }
   
     arsort($hits);
   
  -  $out.= "<ul>";
  +  $out = "<ul>";
     reset($hits);
     $idx=1;
     while (list($page_name, $count) = each($hits)) {
  @@ -114,7 +117,7 @@
   
     $title= sprintf(_("Full text search for \"%s\""), $options['value']);
     $out= macro_FastSearch($formatter,$options['value'],$ret);
  -  $options['msg']=$ret['msg'];
  +  $options['msg']=!empty($ret['msg']) ? $ret['msg'] : '';
     $formatter->send_header("",$options);
     $formatter->send_title($title,$formatter->link_url("FindPage"),$options);
   
  
  
  


1280242038;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv8441\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315483] hide preview button correctly with the $use_jsbuttons option.\n\n
wkpark      2010/07/27 23:47:19

  Modified:    .        wikilib.php
  Log:
  [#315483] hide preview button correctly with the $use_jsbuttons option.
  
  Revision  Changes    Path
  1.302     +3 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.301
  retrieving revision 1.302
  diff -u -r1.301 -r1.302
  --- wikilib.php	18 Jul 2010 14:35:20 -0000	1.301
  +++ wikilib.php	27 Jul 2010 14:47:18 -0000	1.302
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.301 2010/07/18 14:35:20 wkpark Exp $
  +// $Id: wikilib.php,v 1.302 2010/07/27 14:47:18 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -738,6 +738,7 @@
   <style type='text/css'>
   /*<![CDATA[*/
   #mycontent button.save-button { display: none; }
  +#mycontent button.preview-button { display: none; }
   button.save-button { display: none; }
   $sidebar_style
   /*]]>*/
  @@ -1099,7 +1100,7 @@
     $wysiwyg_btn = '';
     $skip_preview = '';
     if (empty($options['simple'])) {
  -    $preview_btn='<button type="submit" tabindex="6" name="button_preview" value="1"><span>'.
  +    $preview_btn='<button type="submit" tabindex="6" name="button_preview" class="preview-button" value="1"><span>'.
         _("Preview").'</span></button>';
       if ($preview)
         $skip_preview= ' '.$formatter->link_to('#preview',_("Skip to preview"),' class="preview-anchor"');
  
  
  


1280243762;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv12678\n\nModified Files:\n	RecentChanges.php \nLog Message:\n[#315538] notitle option added to hide the heading of the Recent Changes.\nfix notice warnings\n\n
wkpark      2010/07/28 00:16:02

  Modified:    plugin   RecentChanges.php
  Log:
  [#315538] notitle option added to hide the heading of the Recent Changes.
  fix notice warnings
  
  Revision  Changes    Path
  1.46      +7 -4      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.45
  retrieving revision 1.46
  diff -u -r1.45 -r1.46
  --- RecentChanges.php	27 Jul 2010 14:43:27 -0000	1.45
  +++ RecentChanges.php	27 Jul 2010 15:16:02 -0000	1.46
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.45 2010/07/27 14:43:27 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.46 2010/07/27 15:16:02 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     global $DBInfo;
  @@ -80,7 +80,10 @@
     if (preg_match("/^[\s\/\-:aABdDFgGhHiIjmMOrSTY]+$/",$args[0]))
       $date_fmt=$args[0];
   
  -  $cat0="";
  +  $bra = '';
  +  $cat = '';
  +  $cat0 = '';
  +  $rctitle = "<h2>"._("Recent Changes")."</h2>";
     foreach ($args as $arg) {
       $arg=trim($arg);
       if (($p=strpos($arg,'='))!==false) {
  @@ -99,6 +102,7 @@
         else if ($arg=="noperma") $perma_icon='';
         else if ($arg=="button") $button=1;
         else if ($arg=="timesago") $timesago=1;
  +      else if ($arg=="notitle") $rctitle='';
         else if ($arg=="hits") $use_hits=1;
         else if ($arg=="daysago") $use_daysago=1;
         else if ($arg=="simple") {
  @@ -382,8 +386,7 @@
       $logs[$page_key]= 1;
       ++$ii;
     }
  -  $title = "<h2>"._("Recent Changes")."</h2>";
  -  return $btnlist.'<div class="recentChanges">'.$title.$template_bra.$out.$template_cat.$cat0.'</div>';
  +  return $btnlist.'<div class="recentChanges">'.$rctitle.$template_bra.$out.$template_cat.$cat0.'</div>';
   }
   // vim:et:sts=2:
   ?>
  
  
  


1280246686;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv16856\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315480] revert previous patch and wrap input submit buttons with a span tag to styling input buttons.\n\n
1280246686;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv16856/plugin\n\nModified Files:\n	FullSearch.php \nLog Message:\n[#315480] revert previous patch and wrap input submit buttons with a span tag to styling input buttons.\n\n
wkpark      2010/07/28 01:04:46

  Modified:    .        wikilib.php
               plugin   FullSearch.php
  Log:
  [#315480] revert previous patch and wrap input submit buttons with a span tag to styling input buttons.
  
  Revision  Changes    Path
  1.303     +9 -9      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.302
  retrieving revision 1.303
  diff -u -r1.302 -r1.303
  --- wikilib.php	27 Jul 2010 14:47:18 -0000	1.302
  +++ wikilib.php	27 Jul 2010 16:04:46 -0000	1.303
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.302 2010/07/27 14:47:18 wkpark Exp $
  +// $Id: wikilib.php,v 1.303 2010/07/27 16:04:46 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2287,7 +2287,7 @@
       <th>OpenID</th>
       <td>
         <input type="text" name="openid_url" value="" style="background:url(http://www.myopenid.com/static/openid-icon-small.gif) no-repeat; padding:2px;padding-left:24px; border-width:1px" />
  -	    <input type="submit" name="login" value="$button" /> &nbsp;
  +	    <span class="button"><input type="submit" class="button" name="login" value="$button" /></span> &nbsp;
       </td>
     </tr>
   OPENID;
  @@ -2306,7 +2306,7 @@
     </tr>
     <tr><td></td><td>
       $passwd_hidden
  -    <input type="submit" name="login" value="$button" /> &nbsp;
  +    <span class="button"><input type="submit" class="button" name="login" value="$button" /></span> &nbsp;
     </td></tr>
   MYFORM;
       $login=<<<FORM
  @@ -2391,10 +2391,10 @@
     <tr><th>$email_btn&nbsp;</th><td><input type="text" size="40" name="email" value="$email" /></td></tr>
     <tr><th>$tz_btn&nbsp;</th><td><select name="timezone">
     $opts
  -  </select> <input type='button' value='Local timezone' onclick='javascript:setTimezone()' /></td></tr>
  +  </select> <span class='button'><input type='button' class='button' value='Local timezone' onclick='javascript:setTimezone()' /></span></td></tr>
     <tr><td><b>CSS URL </b>&nbsp;</td><td><input type="text" size="40" name="user_css" value="$css" /><br />("None" for disabling CSS)</td></tr>
   EXTRA;
  -    $logout="<input type='submit' name='logout' value='"._("logout")."' /> &nbsp;";
  +    $logout="<span class='button'><input type='submit' class='button' name='logout' value='"._("logout")."' /></span> &nbsp;";
     }
     $script = '';
     if (empty($tz_offset) and $jscript)
  @@ -2424,7 +2424,7 @@
       if (!empty($DBInfo->use_sendmail)) {
         $button2=_("E-mail new password");
         $emailpasswd=
  -        "<input type=\"submit\" name=\"login\" value=\"$button2\" />\n";
  +        "<span class='button'><input type=\"submit\" class='button' name=\"login\" value=\"$button2\" /></span>\n";
       }
     }
     $id_btn=_("ID");
  @@ -2446,7 +2446,7 @@
       $again
       $extra
     <tr><td></td><td>
  -    <input type="submit" name="login" value="$button" /> &nbsp;
  +    <span class="button"><input type="submit" class="button" name="login" value="$button" /></span> &nbsp;
       $emailpasswd
       $logout
     </td></tr>
  @@ -2960,7 +2960,7 @@
     $form="<form method='get' action='$url'>
         <input type='hidden' name='action' value='titlesearch' />
         <input name='value' size='30' value='$needle' />
  -      <button type='submit'><span>$msg</span></button>
  +      <span class='button'><input type='submit' class='button' value='$msg' /></span>
         </form>";
   
     if (!$needle) {
  @@ -3022,7 +3022,7 @@
     return "<form method='get' action='$url'>
       <input type='hidden' name='action' value='goto' />
       <input name='value' size='30' value='$value' />
  -    <button type='submit'><span>$msg</span></button>
  +    <span class='button'><input type='submit' class='button' value='$msg' /></span>
       </form>";
   }
   
  
  
  
  1.34      +2 -2      moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- FullSearch.php	9 Jul 2010 09:44:58 -0000	1.33
  +++ FullSearch.php	27 Jul 2010 16:04:46 -0000	1.34
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
   //
  -// $Id: FullSearch.php,v 1.33 2010/07/09 09:44:58 wkpark Exp $
  +// $Id: FullSearch.php,v 1.34 2010/07/27 16:04:46 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
  @@ -79,7 +79,7 @@
   <form method='get' action='$url'>
      <input type='hidden' name='action' value='fullsearch' />
      <input name='value' size='30' value='$fneedle' />
  -   <button type='submit'><span>$msg</span></button><br />
  +   <span class='button'><input type='submit' class='button' value='$msg' /></span><br />
      <input type='checkbox' name='backlinks' value='1' checked='checked' />$m2<br />
      <input type='checkbox' name='context' value='20' />$m1<br />
      <input type='checkbox' name='case' value='1' />$m3<br />
  
  
  


1280248419;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv25171/plugin\n\nModified Files:\n	Comment.php \nLog Message:\n[#315290] fixed notice warnings\n\n
wkpark      2010/07/28 01:33:39

  Modified:    plugin   Comment.php
  Log:
  [#315290] fixed notice warnings
  
  Revision  Changes    Path
  1.40      +5 -5      moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.39
  retrieving revision 1.40
  diff -u -r1.39 -r1.40
  --- Comment.php	27 Jul 2010 14:42:25 -0000	1.39
  +++ Comment.php	27 Jul 2010 16:33:39 -0000	1.40
  @@ -5,15 +5,15 @@
   //
   // Author: Won-Kyu Park <wkpark@kldp.org>
   // Since: 2004-08-16
  -// Modified: $Date: 2010/07/27 14:42:25 $
  +// Modified: $Date: 2010/07/27 16:33:39 $
   // Name: Comment plugin
   // Description: Comment Plugin
   // URL: MoniWiki:CommentPlugin
  -// Version: $Revision: 1.39 $
  +// Version: $Revision: 1.40 $
   // License: GPL
   // Usage: [[Comment]], ?action=comment
   //
  -// $Id: Comment.php,v 1.39 2010/07/27 14:42:25 wkpark Exp $
  +// $Id: Comment.php,v 1.40 2010/07/27 16:33:39 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $DBInfo;
  @@ -317,9 +317,9 @@
   
       endif;
   
  -    if ($matched) $body=$nnc;
  +    if (!empty($matched)) $body=$nnc;
     }
  -  if (!$matched):
  +  if (empty($matched)):
     if ($options['comment_id'] and preg_match("/^\[\[Comment\(".$options['comment_id']."\)\]\]/m",$body)) {
       $str="[[Comment($options[comment_id])]]";
       $body= preg_replace('/'.preg_quote($str).'/',$savetext.$str,$body,1);
  
  
  


1280248506;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv25253/plugin\n\nModified Files:\n	FastSearch.php \nLog Message:\n[#315528] i18nize some texts. wrap input submit button\n\n
wkpark      2010/07/28 01:35:07

  Modified:    plugin   FastSearch.php
  Log:
  [#315528] i18nize some texts. wrap input submit button
  
  Revision  Changes    Path
  1.14      +5 -3      moniwiki/plugin/FastSearch.php
  
  Index: FastSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FastSearch.php,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- FastSearch.php	27 Jul 2010 14:44:20 -0000	1.13
  +++ FastSearch.php	27 Jul 2010 16:35:06 -0000	1.14
  @@ -13,7 +13,7 @@
   //
   // Usage: [[FastSearch(string)]]
   //
  -// $Id: FastSearch.php,v 1.13 2010/07/27 14:44:20 wkpark Exp $
  +// $Id: FastSearch.php,v 1.14 2010/07/27 16:35:06 wkpark Exp $
   
   include_once('lib/search.DBA.php');
   
  @@ -32,12 +32,14 @@
     $fneedle=str_replace('"',"&#34;",$needle); # XXX
     $url=$formatter->link_url($formatter->page->urlname);
   
  +  $msg = _("Fast search");
  +  $msg2 = _("Display context of search results");
     $form= <<<EOF
   <form method='get' action='$url'>
      <input type='hidden' name='action' value='fastsearch' />
      <input name='value' size='30' value='$fneedle' />
  -   <input type='submit' value='Fast search' /><br />
  -   <input type='checkbox' name='context' value='20' checked='checked' />Display context of search results<br />
  +   <span class='button'><input type='submit' class='button' value='$msg' /></span><br />
  +   <input type='checkbox' name='context' value='20' checked='checked' />$msg2<br />
      </form>
   EOF;
   
  
  
  


1280248706;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv25356\n\nModified Files:\n	wiki.php \nLog Message:\n[#315538] fixed $myplugins behavior to substiture a plugin with new one\n\n
wkpark      2010/07/28 01:38:26

  Modified:    .        wiki.php
  Log:
  [#315538] fixed $myplugins behavior to substiture a plugin with new one
  
  Revision  Changes    Path
  1.532     +4 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.531
  retrieving revision 1.532
  diff -u -r1.531 -r1.532
  --- wiki.php	18 Jul 2010 16:01:58 -0000	1.531
  +++ wiki.php	27 Jul 2010 16:38:25 -0000	1.532
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.531 2010/07/18 16:01:58 wkpark Exp $
  +// $Id: wiki.php,v 1.532 2010/07/27 16:38:25 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.531 $',1,-1);
  +$_revision = substr('$Revision: 1.532 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -2868,7 +2868,8 @@
         $np = getPlugin($name);
         if (empty($np)) return $this->link_repl($name);
         include_once('plugin/'.$np.'.php');
  -      if (!function_exists ('macro_'.$name)) return '[['.$macro.']]';
  +      if (!function_exists ('macro_'.$np)) return '[['.$macro.']]';
  +      $name = $np;
       }
   
       if ($this->_macrocache and empty($options['call']) and
  
  
  


1280403144;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv15858\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315528]\n * tools/indexer.php added to replace the wiki_indexer.pl.\n * support more than 65536 pages.\n * sort output correctly by hit count and pagename using array_multisort()\n * make indexer more faster\n\n
1280403144;wkpark;Update of /cvsroot/moniwiki/moniwiki/lib\nIn directory kill.kldp.net:/tmp/cvs-serv15858/lib\n\nModified Files:\n	search.DBA.php \nLog Message:\n[#315528]\n * tools/indexer.php added to replace the wiki_indexer.pl.\n * support more than 65536 pages.\n * sort output correctly by hit count and pagename using array_multisort()\n * make indexer more faster\n\n
1280403144;wkpark;Update of /cvsroot/moniwiki/moniwiki/tools\nIn directory kill.kldp.net:/tmp/cvs-serv15858/tools\n\nAdded Files:\n	indexer.php \nLog Message:\n[#315528]\n * tools/indexer.php added to replace the wiki_indexer.pl.\n * support more than 65536 pages.\n * sort output correctly by hit count and pagename using array_multisort()\n * make indexer more faster\n\n
1280403144;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv15858/plugin\n\nModified Files:\n	FastSearch.php FullSearch.php \nLog Message:\n[#315528]\n * tools/indexer.php added to replace the wiki_indexer.pl.\n * support more than 65536 pages.\n * sort output correctly by hit count and pagename using array_multisort()\n * make indexer more faster\n\n
wkpark      2010/07/29 20:32:24

  Modified:    .        wikilib.php
               lib      search.DBA.php
               plugin   FastSearch.php FullSearch.php
  Added:       tools    indexer.php
  Log:
  [#315528]
   * tools/indexer.php added to replace the wiki_indexer.pl.
   * support more than 65536 pages.
   * sort output correctly by hit count and pagename using array_multisort()
   * make indexer more faster
  
  Revision  Changes    Path
  1.304     +23 -1     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.303
  retrieving revision 1.304
  diff -u -r1.303 -r1.304
  --- wikilib.php	27 Jul 2010 16:04:46 -0000	1.303
  +++ wikilib.php	29 Jul 2010 11:32:23 -0000	1.304
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.303 2010/07/27 16:04:46 wkpark Exp $
  +// $Id: wikilib.php,v 1.304 2010/07/29 11:32:23 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -315,6 +315,28 @@
     return md5($siteticket.$seed.$extra);
   }
   
  +function getTokens($string, $params = null) {
  +    $words = array();
  +
  +    // strip macros, entities
  +    $raw = preg_replace("/&[^;\s]+;|\[\[[^\[]+\]\]/", ' ', $string);
  +    // strip comments
  +    $raw = preg_replace("/^##.*$/m", ' ', $raw);
  +    $raw = preg_replace("/([;\"',`\\\\\/\.:@#\!\?\$%\^&\*\(\)\{\}\[\]\~\-_\+=\|<>])/",
  +        ' ', strip_tags($raw));
  +
  +    // split wiki words
  +    $raw = preg_replace("/((?<=[a-z0-9]|[B-Z]{2})([A-Z][a-z]))/", " \\1", $raw);
  +    $raw = strtolower($raw);
  +    $raw = preg_replace("/\b/", ' ', $raw);
  +    //$raw=preg_replace("/\b([0-9a-zA-Z'\"])\\1+\s*/",' ',$raw);
  +
  +    $words = preg_split("/\s+|\n/", trim($raw));
  +
  +    asort($words);
  +    return array_unique($words);
  +}
  +
   function log_referer($referer,$page) {
     global $DBInfo;
     if (!$referer) return;
  
  
  
  1.3       +115 -16   moniwiki/lib/search.DBA.php
  
  Index: search.DBA.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/search.DBA.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- search.DBA.php	21 Sep 2005 17:29:22 -0000	1.2
  +++ search.DBA.php	29 Jul 2010 11:32:24 -0000	1.3
  @@ -1,19 +1,20 @@
   <?php
  -// Copyright 2005 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2005-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a searchdb plugin for the MoniWiki
   //
   // initial version from http://www.heddley.com/edd/php/search.html
   // heavily modified to adopt to the MoniWiki 2003/07/19 by wkpark
  -// $Id: search.DBA.php,v 1.2 2005/09/21 17:29:22 wkpark Exp $
  +// $Id: search.DBA.php,v 1.3 2010/07/29 11:32:24 wkpark Exp $
   
   class IndexDB_dba {
  -    var $db=null;
  -    var $type="n";
  +    var $db = null;
  +    var $type = 'n'; // N for 32-bit. n for 16 bit.
  +    var $wordcache = array();
   
       function IndexDB_dba($arena,$mode='r',$type) {
           global $DBInfo;
  -        $this->index_dir=$DBInfo->cache_dir."/index";
  +        $this->index_dir=$DBInfo->cache_dir.'/index';
           if (!file_exists($this->index_dir))
               mkdir($this->index_dir, 0777);
           $db=$this->index_dir.'/'.$arena.'.db';
  @@ -31,9 +32,8 @@
           if (!$this->exists('!?'.$pagename))
               return $this->_getNewID($pagename);
   
  -        $pkey=dba_fetch('!?'.$pagename,$this->db);
  -        $pkey=unpack($this->type.'1'.$this->type,$pkey);
  -        print_r($pkey);
  +        $pkey = dba_fetch('!?'.$pagename,$this->db);
  +        $pkey = unpack($this->type.'1'.$this->type, $pkey);
           return $pkey[$this->type];
       }
   
  @@ -62,23 +62,97 @@
       }
   
       function _current() {
  -        return dba_fetch("!!",$this->db); // currentKey
  +        return dba_fetch('!!',$this->db); // currentKey
       }
   
       function _getNewID($pagename) {
           $pkey=$nkey=$this->_current();
           $type=$this->type;
  -        dba_insert('!?'.$pagename,pack($type,$pkey),$this->db);
  -        dba_insert('!?'.pack($type,$pkey),$pagename,$this->db);
  -        $nkey++; if ($nkey % 256 ==0) { $nkey++; }
  -        dba_replace("!!",$nkey,$this->db);
  +        // Map key to this filename
  +        dba_insert('!?' . $pagename, pack($this->type, $pkey), $this->db);
  +        dba_insert('!?' . pack($this->type, $pkey), $pagename, $this->db);
  +        $nkey++; if ($nkey % 256 == 0) { $nkey++; }
  +        dba_replace('!!',$nkey,$this->db);
           return $pkey;
       }
   
  +    function _getIndexWords($string) {
  +        if (preg_match('/[^0-9A-Za-z]/u', $string)) {
  +            // split into single chars
  +            $charstr = @preg_replace('/(.)/u',' \1 ',$string);
  +            if(!is_null($charstr)) $string = $charstr; //recover from regexp failure
  +
  +            // make fake words for indexing
  +            // Please see MoniWiki:FastSearchMacro, MoniWiki:FullTextIndexer
  +            if (strpos($string, ' ') !== false) {
  +                $ws = preg_split('/\s+/', trim($string));
  +                $words = array();
  +                $n = '';
  +                foreach ($ws as $w) {
  +                    $n.= $w;
  +                    $words[] = $n;
  +                }
  +                #print_r($words);
  +                return $words;
  +            }
  +        }
  +        return false;
  +    }
  +
  +    function addWordCache($pagename,$words) {
  +        if (!is_array($words)) return;
  +        $type = $this->type;
  +        $key = $this->getPageID($pagename);
  +
  +        $nwords = array();
  +        foreach ($words as $word) {
  +            $ws = $this->_getIndexWords($word);
  +            if (!is_array($ws))
  +                $ws = array($word);
  +
  +            foreach ($ws as $w) {
  +                $a = !empty($this->wordcache[$w]) ? $this->wordcache[$w] : '';
  +                $a.= pack($this->type, $key);
  +                $this->wordcache[$w] = $a;
  +            }
  +        }
  +        return;
  +    }
  +
  +    function flushWordCache($sort = true) {
  +        foreach ($this->wordcache as $word=>$entry) {
  +            if (dba_exists($word, $this->db)) {
  +                $a = dba_fetch($word, $this->db);
  +            } else {
  +                dba_insert($word, '', $this->db);
  +                $a = '';
  +            }
  +            $a .= $entry; // merge
  +            if ($sort) {
  +                $un = array_unique(unpack($this->type.'*', $a)); // FIXME slow
  +                asort($un);
  +
  +                $na = '';
  +                foreach ($un as $u) $na.= pack($this->type, $u);
  +                dba_replace($word, $na, $this->db);
  +            } else {
  +                // $un = array_unique(unpack($this->type.'*', $a));
  +                // asort($un);
  +                // $na = call_user_func_array(pack,array_merge(array($this->type.'*'),(array)$un));
  +                dba_replace($word, $a, $this->db);
  +            }
  +            #print $word."/";
  +        }
  +        #print " *** \n";
  +        # Empty the holding queue
  +        $this->wordcache = array();
  +    }
  +
       function addWords($pagename,$words) {
           if (!is_array($words)) return;
           $type=$this->type;
           $key=$this->getPageID($pagename);
  +
           foreach ($words as $word) {
               if (dba_exists($word,$this->db)) {
                   $a=dba_fetch($word,$this->db);
  @@ -88,7 +162,7 @@
               }
               $a.=pack($type,$key);
               $un=array_unique(unpack($type.'*',$a));
  -            arsort($un);
  +            asort($un);
               $na='';
               foreach ($un as $u) $na.=pack($type,$u);
               dba_replace($word,$na,$this->db);
  @@ -110,7 +184,7 @@
               $ta=array_flip($un);
               unset($ta[$key]);
               $un=array_flip($ta);
  -            arsort($un);
  +            asort($un);
               foreach ($un as $u) $na.=pack($type,$u);
               dba_replace($word,$na,$this->db);
           }
  @@ -120,7 +194,32 @@
       function close() {
           return dba_close($this->db);
       }
  +
  +    function sort() {
  +        for ($k = dba_firstkey($this->db); $k != false; $k = dba_nextkey($this->db)) {
  +            if (isset($k[1]) and $k[0] == '!') continue;
  +
  +            $a = dba_fetch($k, $this->db);
  +            $aa = unpack($this->type.'*', $a);
  +            asort($aa);
  +            $na = '';
  +            foreach ($aa as $u) $na.=pack($this->type, $u);
  +            dba_replace($k, $na, $this->db);
  +        }
  +    }
  +
  +    function test() {
  +        for ($k = dba_firstkey($this->db); $k != false; $k = dba_nextkey($this->db)) {
  +            if (isset($k[1]) and $k[0] == '!' and $k[1] == '?' and strlen($k) == 4) {
  +                #print $k."=>\n";
  +                #$kk = unpack($this->type.'1', substr($k,2));
  +                #print_r($kk);
  +            } else if (isset($k[0]) and $k[0] != '!') {
  +                print $k."=>\n";
  +            }
  +        }
  +    }
   }
   
  -// vim:et:sts=4
  +// vim:et:sts=4:sw=4:
   ?>
  
  
  
  1.1                  moniwiki/tools/indexer.php
  
  Index: indexer.php
  ===================================================================
  <?php
  
  define('INC_MONIWIKI',1);
  include_once("wiki.php");
  
  # Start Main
  $Config=getConfig("config.php");
  include("wikilib.php");
  include("lib/win32fix.php");
  include("lib/search.DBA.php");
  
  $DBInfo= new WikiDB($Config);
  
  $options=array();
  $timing = &new Timer();
  $options['timer']=&$timing;
  $options['timer']->Check("load");
  
  $indexer = new IndexDB_DBA('fullsearch', 'w', $DBInfo->dba_type);
  #$indexer->test();
  #exit;
  
  $pages = $DBInfo->getPageLists();
  $ii = 1;
  foreach ($pages as $pagename) {
      $p = $DBInfo->getPage($pagename);
      print "* [$ii] $pagename ";
      $ii++;
      if (!$p->exists()) continue;
  
      $raw = $p->_get_raw_body();
      $words = getTokens($raw);
  
      print ' '.count($words)."\n";
      $indexer->addWordCache($pagename, $words);
  
      if (count($indexer->wordcache) > 10000)
          $indexer->flushWordCache(false);
      #$indexer->addWords($pagename, $words);
  }
  $indexer->flushWordCache();
  
  $indexer->close();
  
  // vim:et:sts=4:sw=4:
  
  
  
  1.15      +27 -9     moniwiki/plugin/FastSearch.php
  
  Index: FastSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FastSearch.php,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- FastSearch.php	27 Jul 2010 16:35:06 -0000	1.14
  +++ FastSearch.php	29 Jul 2010 11:32:24 -0000	1.15
  @@ -13,7 +13,7 @@
   //
   // Usage: [[FastSearch(string)]]
   //
  -// $Id: FastSearch.php,v 1.14 2010/07/27 16:35:06 wkpark Exp $
  +// $Id: FastSearch.php,v 1.15 2010/07/29 11:32:24 wkpark Exp $
   
   include_once('lib/search.DBA.php');
   
  @@ -39,7 +39,7 @@
      <input type='hidden' name='action' value='fastsearch' />
      <input name='value' size='30' value='$fneedle' />
      <span class='button'><input type='submit' class='button' value='$msg' /></span><br />
  -   <input type='checkbox' name='context' value='20' checked='checked' />$msg2<br />
  +   <input type='checkbox' name='context' value='20' />$msg2<br />
      </form>
   EOF;
   
  @@ -55,15 +55,20 @@
       $opts['all']= 0;
       return '';
     }
  +  $opts['form'] = $form;
   
  -  $words=explode(' ', strtolower($value));
  +  $words = getTokens($value);
  +  // $words=explode(' ', strtolower($value));
     $keys='';
     $idx=array();
     foreach ($words as $word) {
       $idx=array_merge($idx,$DB->_fetchValues($word));
     }
   
  -  arsort($idx);
  +  //arsort($idx);
  +  $all_pages = $DBInfo->getPageLists();
  +  $all_count = count($all_pages);
  +  unset($all_pages);
   
     $pages=array();
     foreach ($idx as $id) {
  @@ -73,13 +78,16 @@
     }
     $DB->close();
   
  +  $pages = array_unique($pages);
  +  usort($pages, 'strcasecmp');
  +
     $hits=array();
   
     $context = !empty($opts['context']) ? $opts['context'] : 0;
     $contexts = array();
   
     foreach ($pages as $key) {
  -    $page_name= $DBInfo->keyToPagename($key);
  +    $page_name = $key;
       $p = new WikiPage($page_name);
       if (!$p->exists()) continue;
   
  @@ -92,24 +100,32 @@
       }
     }
   
  -  arsort($hits);
  +  //uasort($hits, 'strcasecmp');
  +  //$order = 0;
  +  //uasort($hits, create_function('$a, $b', 'return ' . ($order ? '' : '-') . '(strcasecmp($a, $b));'));
  +  $name = array_keys($hits);
  +  array_multisort($hits, SORT_DESC, $name, SORT_ASC);
   
  -  $out = "<ul>";
  +  $out = "<!-- RESULT LIST START -->"; // for search plugin
  +  $out.= "<ul>";
     reset($hits);
     $idx=1;
     while (list($page_name, $count) = each($hits)) {
  +    $out.= '<!-- RESULT ITEM START -->'; // for search plugin
       $out.= '<li>'.$formatter->link_tag(_rawurlencode($page_name),
             "?action=highlight&amp;value="._urlencode($needle),
             $page_name,"tabindex='$idx'");
  -    $out.= ' . . . . ' . $count . (($count == 1) ? ' match' : ' matches');
  +    $out.= ' . . . . ' . $count . (($count == 1) ? _(" match") : _(" matches"));
       $out.= $contexts[$page_name];
       $out.= "</li>\n";
  +    $out.= '<!-- RESULT ITEM END -->'; // for search plugin
       $idx++;
     }
     $out.= "</ul>\n";
  +  $out.= "<!-- RESULT LIST END -->"; // for search plugin
   
     $opts['hits']= count($hits);
  -  $opts['all']= count($pages);
  +  $opts['all']= $all_count;
     return $out;
   }
   
  @@ -123,6 +139,8 @@
     $formatter->send_header("",$options);
     $formatter->send_title($title,$formatter->link_url("FindPage"),$options);
   
  +  if (!empty($ret['form']))
  +    print $ret['form'];
     print $out;
   
     if ($options['value'])
  
  
  
  1.35      +4 -2      moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- FullSearch.php	27 Jul 2010 16:04:46 -0000	1.34
  +++ FullSearch.php	29 Jul 2010 11:32:24 -0000	1.35
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
   //
  -// $Id: FullSearch.php,v 1.34 2010/07/27 16:04:46 wkpark Exp $
  +// $Id: FullSearch.php,v 1.35 2010/07/29 11:32:24 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
  @@ -235,7 +235,9 @@
         }
       }
       #krsort($hits);
  -    ksort($hits);
  +    #ksort($hits);
  +    $name = array_keys($hits);
  +    array_multisort($hits, SORT_DESC, $name, SORT_ASC);
   
       $fc->update($sid,serialize($hits));
     }
  
  
  


1280418672;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv23907\n\nModified Files:\n	wiki.php \nLog Message:\n[#315528]\n * support dynamic indexing with the $use_indexer option.\n * rename some classes\n\n
1280418672;wkpark;Update of /cvsroot/moniwiki/moniwiki/lib\nIn directory kill.kldp.net:/tmp/cvs-serv23907/lib\n\nAdded Files:\n	indexer.DBA.php stemmer.ko.php \nRemoved Files:\n	indexer.ko.php search.DBA.php \nLog Message:\n[#315528]\n * support dynamic indexing with the $use_indexer option.\n * rename some classes\n\n
1280418672;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv23907/plugin\n\nModified Files:\n	FastSearch.php Keywords.php \nLog Message:\n[#315528]\n * support dynamic indexing with the $use_indexer option.\n * rename some classes\n\n
1280418673;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin/filter\nIn directory kill.kldp.net:/tmp/cvs-serv23907/plugin/filter\n\nModified Files:\n	indexer_ko.php \nLog Message:\n[#315528]\n * support dynamic indexing with the $use_indexer option.\n * rename some classes\n\n
1280418673;wkpark;Update of /cvsroot/moniwiki/moniwiki/tools\nIn directory kill.kldp.net:/tmp/cvs-serv23907/tools\n\nModified Files:\n	indexer.php \nLog Message:\n[#315528]\n * support dynamic indexing with the $use_indexer option.\n * rename some classes\n\n
wkpark      2010/07/30 00:51:13

  Modified:    .        wiki.php
               plugin   FastSearch.php Keywords.php
               plugin/filter indexer_ko.php
               tools    indexer.php
  Added:       lib      indexer.DBA.php stemmer.ko.php
  Removed:     lib      indexer.ko.php search.DBA.php
  Log:
  [#315528]
   * support dynamic indexing with the $use_indexer option.
   * rename some classes
  
  Revision  Changes    Path
  1.533     +51 -2     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.532
  retrieving revision 1.533
  diff -u -r1.532 -r1.533
  --- wiki.php	27 Jul 2010 16:38:25 -0000	1.532
  +++ wiki.php	29 Jul 2010 15:51:12 -0000	1.533
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.532 2010/07/27 16:38:25 wkpark Exp $
  +// $Id: wiki.php,v 1.533 2010/07/29 15:51:12 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.532 $',1,-1);
  +$_revision = substr('$Revision: 1.533 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -1120,6 +1120,27 @@
       $key=$this->text_dir."/$keyname";
   
       $body=$this->_replace_variables($page->body,$options);
  +
  +    // update fulltext index
  +    if (!empty($this->use_indexer)) {
  +      #include_once("lib/tokenizer.php");
  +      include_once("lib/indexer.DBA.php");
  +      $indexer = new Indexer_dba('fullsearch', 'w', $this->dba_type);
  +
  +      $new_words = getTokens($body);
  +      if ($indexer->hasPage($page->name)) {
  +        $old_body = $page->_get_raw_body();
  +        $old_words = getTokens($old_body);
  +
  +        $del_words = array_diff($old_words, $new_words);
  +        $add_words = array_diff($new_words, $old_words);
  +        $indexer->delWords($page->name, $del_words);
  +        $indexer->addWords($page->name, $add_words);
  +      } else {
  +        $indexer->addWords($page->name, $new_words);
  +      }
  +    }
  +
       $log=$REMOTE_ADDR.';;'.$myid.';;'.$comment;
       $options['log']=$log;
       $options['pagename']=$page->name;
  @@ -1150,6 +1171,20 @@
   
       $keyname=$this->_getPageKey($page->name);
   
  +    // update fulltext index
  +    if (!empty($this->use_indexer)) {
  +      #include_once("lib/tokenizer.php");
  +      include_once("lib/indexer.DBA.php");
  +      $indexer = new Indexer_dba('fullsearch', 'w', $this->dba_type);
  +
  +      if ($indexer->hasPage($page->name)) {
  +        $old_body = $page->_get_raw_body();
  +        $old_words = getTokens($old_body);
  +        $indexer->delWords($page->name, $old_words);
  +        $indexer->deletePage($page->name);
  +      }
  +    }
  +
       if ($this->version_class) {
         $class=getModule('Version',$this->version_class);
         $version=new $class ($this);
  @@ -1183,6 +1218,20 @@
     function renamePage($pagename,$new,$options='') {
       $REMOTE_ADDR=$_SERVER['REMOTE_ADDR'];
   
  +    // update fulltext index
  +    if (!empty($this->use_indexer)) {
  +      #include_once("lib/tokenizer.php");
  +      include_once("lib/indexer.DBA.php");
  +      $indexer = new Indexer_dba('fullsearch', 'w', $this->dba_type);
  +
  +      $page = $this->getPage($pagename);
  +
  +      $old_body = $page->_get_raw_body();
  +      $old_words = getTokens($old_body);
  +      $indexer->delWords($pagename, $old_words);
  +      $indexer->addWords($new, $old_words);
  +    }
  +
       $okey=$this->getPageKey($pagename);
       $nkey=$this->getPageKey($new);
       $okeyname=$this->_getPageKey($pagename);
  
  
  
  1.1                  moniwiki/lib/indexer.DBA.php
  
  Index: indexer.DBA.php
  ===================================================================
  <?php
  // Copyright 2005-2010 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a searchdb plugin for the MoniWiki
  //
  // initial version from http://www.heddley.com/edd/php/search.html
  // heavily modified to adopt to the MoniWiki 2003/07/19 by wkpark
  // $Id: indexer.DBA.php,v 1.1 2010/07/29 15:51:12 wkpark Exp $
  
  class Indexer_dba {
      var $db = null;
      var $type = 'n'; // N for 32-bit. n for 16 bit.
      var $wordcache = array();
      var $arena = '';
  
      var $dbname = ''; // db file name
      var $prefix = '';
  
      function Indexer_dba($arena,$mode='r',$type, $prefix = '') {
          global $DBInfo;
  
          $this->index_dir=$DBInfo->cache_dir.'/index';
          if (!file_exists($this->index_dir))
              mkdir($this->index_dir, 0777);
  
          $this->prefix = $prefix;
          if (!empty($prefix))
              $prefix = $prefix . '.';
  
          $this->dbname = $this->index_dir.'/'.$prefix.$arena.'.db';
          $this->arena = $arena;
  
          // check updated db file.
          if (empty($prefix) and file_exists($this->index_dir.'/'.$arena.'.new.db')) {
              if (filemtime($this->index_dir.'/'.$arena.'.new.db') > filemtime($this->dbname)) {
                  copy($this->index_dir.'/'.$arena.'.new.db', $this->dbname);
              }
          }
  
          if (($this->db=@dba_open($this->dbname, $mode,$type)) === false) {
              if (($this->db=@dba_open($this->dbname, 'n',$type)) === false)
                  return false;
              // startkey==256
              dba_insert('!!',256,$this->db);
              dba_sync($this->db);
          }
          register_shutdown_function(array(&$this,'close'));
          return true;
      }
  
      function getPageID($pagename) {
          if (!$this->exists('!?'.$pagename))
              return $this->_getNewID($pagename);
  
          $pkey = dba_fetch('!?'.$pagename,$this->db);
          $pkey = unpack($this->type.'1'.$this->type, $pkey);
          return $pkey[$this->type];
      }
  
      function fetchValues($pagename) {
          $pkey=$this->getPageID($pagename);
          return $this->_fetchValues($pkey);
      }
  
      function _fetchValues($key) {
          if (is_int($key))
              $key='!?'.pack($this->type,$key);
  
          $pkey=dba_fetch($key,$this->db);
          return unpack($this->type.'*',$pkey);
      }
  
      function _fetch($key) {
          if (is_int($key))
              $key='!?'.pack($this->type,$key);
  
          return dba_fetch($key,$this->db);
      }
  
      function exists($key) {
          return dba_exists($key,$this->db);
      }
  
      function _current() {
          return dba_fetch('!!',$this->db); // currentKey
      }
  
      function _getNewID($pagename) {
          $pkey=$nkey=$this->_current();
          $type=$this->type;
          // Map key to this filename
          dba_insert('!?' . $pagename, pack($this->type, $pkey), $this->db);
          dba_insert('!?' . pack($this->type, $pkey), $pagename, $this->db);
          $nkey++; if ($nkey % 256 == 0) { $nkey++; }
          dba_replace('!!',$nkey,$this->db);
          return $pkey;
      }
  
      function _getIndexWords($string) {
          if (preg_match('/[^0-9A-Za-z]/u', $string)) {
              // split into single chars
              $charstr = @preg_replace('/(.)/u',' \1 ',$string);
              if(!is_null($charstr)) $string = $charstr; //recover from regexp failure
  
              // make fake words for indexing
              // Please see MoniWiki:FastSearchMacro, MoniWiki:FullTextIndexer
              if (strpos($string, ' ') !== false) {
                  $ws = preg_split('/\s+/', trim($string));
                  $words = array();
                  $n = '';
                  foreach ($ws as $w) {
                      $n.= $w;
                      $words[] = $n;
                  }
                  #print_r($words);
                  return $words;
              }
          }
          return false;
      }
  
      function addWordCache($pagename,$words) {
          if (!is_array($words)) return;
          $type = $this->type;
          $key = $this->getPageID($pagename);
  
          foreach ($words as $word) {
              $a = !empty($this->wordcache[$word]) ? $this->wordcache[$word] : '';
              $a.= pack($this->type, $key);
              $this->wordcache[$word] = $a;
          }
          return;
      }
  
      function flushWordCache($sort = true) {
          foreach ($this->wordcache as $word=>$entry) {
              if (dba_exists($word, $this->db)) {
                  $a = dba_fetch($word, $this->db);
              } else {
                  dba_insert($word, '', $this->db);
                  $a = '';
              }
              $a .= $entry; // merge
              if ($sort) {
                  $un = array_unique(unpack($this->type.'*', $a)); // FIXME slow
                  asort($un);
  
                  $na = '';
                  foreach ($un as $u) $na.= pack($this->type, $u);
                  dba_replace($word, $na, $this->db);
              } else {
                  // $un = array_unique(unpack($this->type.'*', $a));
                  // asort($un);
                  // $na = call_user_func_array(pack,array_merge(array($this->type.'*'),(array)$un));
                  dba_replace($word, $a, $this->db);
              }
              #print $word."/";
          }
          #print " *** \n";
          # Empty the holding queue
          $this->wordcache = array();
      }
  
      function addWords($pagename,$words) {
          if (!is_array($words) or empty($words)) return;
          $type=$this->type;
          $key=$this->getPageID($pagename);
  
          foreach ($words as $word) {
              if (dba_exists($word,$this->db)) {
                  $a=dba_fetch($word,$this->db);
              } else {
                  dba_insert($word,'',$this->db);
                  $a='';
              }
              $a.=pack($type,$key);
              $un=array_unique(unpack($type.'*',$a));
              asort($un);
              $na='';
              foreach ($un as $u) $na.=pack($type,$u);
              dba_replace($word,$na,$this->db);
          }
          return;
      }
  
      function delWords($pagename,$words,$mode='') {
          if (!is_array($words) or empty($words)) return;
          $type=$this->type;
          $key=$this->getPageID($pagename);
          #print $key."<br />";
          #print "<pre>";
          foreach ($words as $word) {
              if (dba_exists($word,$this->db)) {
                  $a=dba_fetch($word,$this->db);
              } else {
                  continue;
              }
              $un=array_unique(unpack($type.'*',$a));
              $ta=array_flip($un);
              unset($ta[$key]);
              $un=array_flip($ta);
              asort($un);
              #print $word."\n";
              #print_r($un);
              $na = '';
              foreach ($un as $u) $na.=pack($type,$u);
              if (empty($na))
                  dba_delete($word,$this->db);
              else
                  dba_replace($word,$na,$this->db);
          }
          #print "</pre>";
          return;
      }
  
      function deletePage($pagename) {
          if (dba_exists('!?'.$pagename, $this->db)) {
              $key = dba_fetch('!?'.$pagename, $this->db);
              $keyval = unpack($this->type.'1'.$this->type, $key);
              dba_delete('!?'.$key, $this->db);
              dba_delete('!?'.$pagename, $this->db);
              return true;
          }
          return false;
      }
  
      function hasPage($pagename) {
          if (dba_exists('!?'.$pagename, $this->db))
              return true;
  
          return false;
      }
  
      function close() {
          if (is_resource($this->db)) {
              $this->flushWordCache();
              $ret = dba_close($this->db);
  
              if (!empty($this->prefix)) {
                  $postfix = $this->prefix.'.';
                  rename($this->db, $this->index_dir.'/'.$this->arena.$postfix.'.db');
              }
              return $ret;
          }
          return false;
      }
  
      function sort() {
          for ($k = dba_firstkey($this->db); $k != false; $k = dba_nextkey($this->db)) {
              if (isset($k[1]) and $k[0] == '!') continue;
  
              $a = dba_fetch($k, $this->db);
              $aa = unpack($this->type.'*', $a);
              asort($aa);
              $na = '';
              foreach ($aa as $u) $na.=pack($this->type, $u);
              dba_replace($k, $na, $this->db);
          }
      }
  
      function test() {
          for ($k = dba_firstkey($this->db); $k != false; $k = dba_nextkey($this->db)) {
              if (isset($k[1]) and $k[0] == '!' and $k[1] == '?' and strlen($k) == 4) {
                  #print $k."=>\n";
                  #$kk = unpack($this->type.'1', substr($k,2));
                  #print_r($kk);
              } else if (isset($k[0]) and $k[0] != '!') {
                  print $k."=>\n";
              }
          }
      }
  }
  
  // vim:et:sts=4:sw=4:
  ?>
  
  
  
  1.1                  moniwiki/lib/stemmer.ko.php
  
  Index: stemmer.ko.php
  ===================================================================
  <?php
  // Copyright 2005-2006 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a KoreanStemmer class for the MoniWiki
  //
  // $Id: stemmer.ko.php,v 1.1 2010/07/29 15:51:12 wkpark Exp $
  //
  // EXPERIMENTAL !!
  
  class TagOp {
      var $value;
      var $type;
  
      function TagOp($value,$type) {
          $this->value=$value;
          $this->type=$type;
      }
  
      function toString() {
          return $tag->value.'/'.$tag->type;
      }
  }
  
  class TagSet extends TagOp {
      var $value;
      var $type;
      var $tags;
  
      function TagSet($value,$type) {
          $this->value=$value;
          $this->type=$type;
          $this->tags=array();
      }
  
      function add($tag) {
          $this->tags[]=$tag;
      }
  
      function toString() {
          $tags = array();
          foreach ($this->tags as $tag)
              $tags[]=$tag->toString();
  
          return implode('+',$tags);
      }
  }
  
  class KoreanStemmer {
      function KoreanStemmer() {
          include_once(dirname(__FILE__).'/compat.php');
          include_once(dirname(__FILE__).'/unicode.php');
          $this->_eomiRule();
          $this->_josaRule();
  
          $fp = fopen(dirname(__FILE__).'/../data/dict/word.txt.utf-8','r');
          if (!is_resource($fp)) $fp = null;
          else
              include_once(dirname(__FILE__).'/dict.text.php');
          $this->_dict = &$fp;
          $fs=fstat($fp);
          $this->_dict_size=$fs['size'];
          $this->_cache = array();
      }
  
      function tagName($name) {
          static $full_tags = array(
              'INI'=>'시작',
              's,'=> '쉼표',
              's.'=> '종결',
              's`'=> '여는따옴표',
              's\''=> '닫는따옴표',
              's-'=> '이음표',
              'su'=> '단위',
              'sw'=> '화폐단위',
              'sy'=> '기타기호',
              'f'=>  '외국어',
              'nnn'=>'숫자',
              'nct'=>'시간성보통명사',
              'nca'=>'동작성보통명사',
              'ncs'=>'상태성보통명사',
              'nc'=> '보통명사',
              'nq'=> '고유명사',
              'nbu'=>'단위성의존명사',
              'nb'=> '의존명사',
              'np'=> '대명사',
              'npp'=>'인칭대명사',
              'npd'=>'지시대명사',
              'nn'=> '수사',
              'pv'=> '동사',
              'pad'=>'지시형용사',
              'pa'=> '형용사',
              'px'=> '보조용언',
              'md'=> '지시관형사',
              'mn'=> '수관형사',
              'm'=>  '관형사',
              'at'=> '시간부사',
              'ad'=> '지시부사',
              'ajw'=>'단어접속부사',
              'ajs'=>'문장접속부사',
              'a'=>  '부사',
              'i'=>  '감탄사',
              'jc'=> '격조사',
              'jcm'=>'관형격조사',
              'jcv'=>'호격조사',
              'jca'=>'부사격조사',
              'jcp'=>'서술격조사',
              'jx'=> '보조사',
              'jj'=> '접속조사',
              'ecq'=>'대등적연결어미',
              'ecs'=>'종속적연결어미',
              'ecx'=>'보조적연결어미',
              'exm'=>'관형사형전성어미',
              'exn'=>'명사형전성어미',
              'exa'=>'부사형전성어미',
              'efp'=>'선어말어미',
              'ef'=> '종결어미',
              'xn'=> '명사접미사',
              'xpv'=>'동사파생접미사',
              'xpa'=>'형용사파생접미사',
              'xa'=> '부사파생접미사',
              'FIN'=>'끝',
              'int'=>'매개모음',
          );
  
          static $tags = array(
              'INI'=>'시',
              's,'=> '쉼',
              's.'=> '종',
              's`'=> '여',
              's\''=> '닫',
              's-'=> '이',
              'su'=> '단',
              'sw'=> '화',
              'sy'=> '기',
              'f'=>  '외',
              'nnn'=>'숫자',
              'nct'=>'시간성보통명사',
              'nca'=>'동작성보통명사',
              'ncs'=>'상태성보통명사',
              'nc'=> '명',
              'nq'=> '고',
              'nbu'=>'단의',
              'nb'=> '의',
              'np'=> '대', /* */
              'npp'=>'인',
              'npd'=>'지',
              'nn'=> '수',
              'pv'=> '동',
              'pad'=>'지형',
              'pa'=> '형',
              'px'=> '보',
              'md'=> '지관',
              'mn'=> '수관',
              'm'=>  '관',
              'at'=> '시부',
              'ad'=> '지',
              'ajw'=>'단접',
              'ajs'=>'문접',
              'a'=>  '부',
              'i'=>  '감',
              'jc'=> '격',
              'jcm'=>'관조',
              'jcv'=>'호조',
              'jca'=>'부조',
              'jcp'=>'서조',
              'jx'=> '보조',
              'jj'=> '접',
              'ecq'=>'대등적연결어',
              'ecs'=>'종속적연결어',
              'ecx'=>'보조적연결어',
              'exm'=>'관형사형전성어',
              'exn'=>'명사형전성어',
              'exa'=>'부사형전성어',
              'efp'=>'선어말어',
              'ef'=> '종결어',
              'xn'=> '명사접미사',
              'xpv'=>'동사파생접미사',
              'xpa'=>'형용사파생접미사',
              'xa'=> '부사파생접미사',
              'FIN'=>'끝',
              'int'=>'매개모음',
          );
  
          if (in_array($name,$tags))
              return array_search($name,$tags);
      }
  
      function _eomiRule() {
          global $DBInfo;
  
          #ㄱ,ㄴ,ㄹ,ㅁ
          #$jos=array('x3134','x3139','x3141','x3142');
  
          $lines=file(dirname(__FILE__).'/../data/dict/eomi.txt.utf-8');
          foreach ($lines as $l) {
              $l=strtr($l,"*","?");
              $l=preg_replace('/^(.*)\?/','(\\1)?',$l);
              $this->_eomi[]=trim($l);
              #$v=mb_encode_numericentity($v,$DBInfo->convmap,'utf-8');
              #$v=utf8_mb_encode(trim($l));
              #$n=strtok(substr($v,2),';');
              #if (in_array($n,$jos)) print '&#'.$n.';';
          }
          $this->_eomi_rule=implode('|',$this->_eomi);
          #print $this->_eomi_rule;
      }
  
      function _josaRule() {
          $lines=file(dirname(__FILE__).'/../data/dict/josa.txt.utf-8');
          foreach ($lines as $l) {
              $l=strtr($l,"*","?");
              $l=preg_replace('/^(.*)\?/','(\\1)?',$l);
              $this->_josa[]=trim($l);
          }
  
          $this->_josa_rule=implode('|',$this->_josa);
          #print $this->_josa_rule;
      }
  
      function getWordRule($word,$lastchar=1) {
          $rule=$word;
          $val=utf8_to_unicode($word);
          $len=sizeof($val);
          #print $word.':'.$len;
          if ($len >= 1) { // make a regex using with the last char
              $ch=array_pop($val);
              if (($ch >=0xac00 and $ch <=0xd7a3) or ($ch >=0x3130 and $ch <=0x318f)) {
                  $jamo=hangul_to_jamo(array($ch));
  
                  $wlen=sizeof($jamo);
                  if ($wlen >=3) {
                      if (in_array($jamo[2],array(0x11ab,0x11af,0x11b7,0x11b8,0x11bb)) ) {
                          $rule=unicode_to_utf8($val);
                          if ($lastchar == 1) {
                              $rule.=unicode_to_utf8(jamo_to_syllable(array($jamo[0],$jamo[1])));
                          } else {
                              $rule.=unicode_to_utf8(array(hangul_choseong_to_cjamo($jamo[0])));
                              $rule.=unicode_to_utf8(array(hangul_jungseong_to_cjamo($jamo[1])));
                          }
                          $rule.=unicode_to_utf8(array(hangul_jongseong_to_cjamo($jamo[2])));
                      }
                  }
              }
          }
          return $rule;
      }
  
      function isWord($word, $flag=false, $fuzzy=0.7) {
          // simple caching
          $encoding = 'UTF-8';
  
          $words = preg_split('/\s+/',$word);
          $cword = implode($words);
          if (array_key_exists($cword,$this->_cache))
              return $this->_cache[$cword];
  
          $word = array_pop($words);
  
          list($l,$min_seek,$max_seek,$scount)=
              _fuzzy_bsearch_file($this->_dict,$word,0,$this->_dict_size/2,0,$this->_dict_size);
          list($c,$buf,$last)=
              _file_match($this->_dict,$word,$min_seek,$max_seek,$this->_dict_size,0,$flag,$encoding);
          
          $cand=array();
          if (!empty($c)) {
              $pre = '';
              if (!empty($words))
                  $pre = implode('-',$words).'-';
              $list=explode("\n",rtrim($buf));
  
              foreach ($list as $l) {
                  list($k,$t,$r) = explode(':',$l);
                  $cand[]=array($pre.$k,$this->tagName($t),$r);
              }
              #print_r($cand);
          } else if (!empty($last)) {
              // similar match found 
              $list = rtrim($buf);
              list($k,$t,$r) = explode(':',$buf); // XXX get shortest match word
              #print($buf);
              $type = $this->tagName($t);
              $pre = $k;
              $pl = strlen(utf8_decode($pre));
              if ($pl == 1 and strlen($word) > 1) { // not found
                  // split word to prefix + new word
                  // 5 => 2 + 3, 3 + 2 / 1 + 4
                  // 4 => 2 + 2 / 1 + 3
                  // 6 => 2 + 4, 3 + 3 / 1 + 5
                  #$nword = substr($word, strlen($pre)); // 1-char + new word
                  #$words[] = $pre;
                  #$pre = implode('-',$words);
                  #$nret = $this->isWord($pre.' '.$nword);
                  #if (!empty($nret[0])) {
                  #    #print_r($nret[1][0]);
                  #    return $nret;
                  #} else {
                  #    array_pop($words);
                  #    $pre = mb_substr($word,0,2,$encoding);
                  #}
                  $pre = mb_substr($word,0,2,$encoding);
              }
              $nword = substr($word, strlen($pre)); // next word
  
              $words[] = $pre;
              $pre = implode('-',$words);
  
              if (!empty($nword)) {
                  if ($type{0} == 'n') { // noun
                      $stem = $this->getNoun($nword, $match);
                      #print '*** stem'.$nword.'=='.$stem."\n";
                      if (!empty($stem))
                          return $this->isWord($pre.' '.$stem);
                  } else { // not noun
                      $stem = $this->getNoun($nword, $match);
                      #print '*** stem'.$nword.'=='.$stem."\n";
                      if (!empty($stem))
                          return $this->isWord($pre.' '.$stem);
                  }
              }
  
          }
          $ret=array($c,$cand,$last);
          $this->_cache[$word]=&$ret;
          return $ret;
      }
  
      function getStem($word,&$match,&$type) {
          $type=1;
          list($r, $cand, $last) = $this->isWord($word);
  
          // return first candidate XXX
          if (isset($cand[0]) and $cand[0][1]{0} == 'n') return $cand[0][0];
          else $stem=$this->getNoun($word,$match);
  
          if ($stem) {
              list ($r1, $cand1,$last1) = $this->isWord($stem);
              $type=$cand1[0][1];
              if ($cand1[0][1]{0} == 'n') return $stem;
          }
          #if ($stem and $this->isWord($stem) == 'n') return $stem;
          $verb=$this->getVerb($word,$vmatch);
          if ($stem or $verb) {
  
              if (strlen($match[1]) <= strlen($vmatch[1])) {
                  $type='p';
                  $match=$vmatch;
                  $stem=$verb;
              }
              return $stem;
          }
          $type=null;
          return false;
      }
  
      function getNoun($word,&$match) {
          // XXX
          # remove josa
          preg_match('/('.$this->_josa_rule.')$/S',$word,$match);
  
          #print 'getNoun ('.$word.")\n";
          #print $this->_josa_rule;
          #print_r($match);
          if (!empty($match[1])) {
              $pword=substr($word,0,-strlen($match[1]));
              if ($pword) {
                  list ($r, $cand,$last) = $this->isWord($pword);
                  if ($cand[0][1]{0} == 'n') return $pword;
              }
              $pword=$this->getWordRule($pword).$match[1];
              preg_match('/('.$this->_josa_rule.')$/S',$pword,$nmatch);
          } else {
              $word=$this->getWordRule($word);
              preg_match('/('.$this->_josa_rule.')$/S',$word,$match);
          }
          if (isset($match[1]) and isset($nmatch[1]) and (strlen($match[1]) < strlen($nmatch[1]))) {
              $match=$nmatch;
              $word=$pword;
          }
          if (!empty($match)) {
              #print "<pre>";
              #print_r($match);
              #print "</pre>";
              $stem=substr($word,0,-strlen($match[1]));
              return $stem;
          }
          return false;
      }
  
      function isHangul($ch) {
          if (($ch >=0xac00 and $ch <=0xd7a3) or ($ch >=0x3130 and $ch <=0x318f))
              return true;
          return false;
      }
  
      function getVerb($word,&$match) {
          # remove eomi
          $save='';
          preg_match('/('.$this->_eomi_rule.')$/S',$word,$match);
          $word1=$this->getWordRule($word);
          preg_match('/('.$this->_eomi_rule.')$/S',$word1,$match1);
          if (!empty($match[1]) and !empty($match1[1])) {
              if ((strlen($match[1]) <= strlen($match1[1])) ) {
                  $match=$match1;
                  $word=$word1;
              }
          } else if (!empty($match[1])) {
              $pword=substr($word,0,-strlen($match[1]));
              $pword=$this->getWordRule($pword).$match[1];
              preg_match('/('.$this->_eomi_rule.')$/S',$pword,$nmatch);
  
              if ($match[1] and $nmatch[1]) {
                  if (strlen($match[1]) <= strlen($nmatch[1])) {
                      $match=$nmatch;
                      $word=$pword;
                  }
              }
          } else if (!empty($match1[1])) {
              $match=$match1;
              $word=$word1;
          }
          if ($match) {
              #print $word."==".$match[1];
              $stem=substr($word,0,-strlen($match[1]));
          } else {
              $stem= $word;
          }
  
          return $this->verbIrr($stem,$match);
      }
  
      function verbIrr($stem,&$match) {
          # 각종 규칙 불규칙 처리
          $ustem= utf8_to_unicode($stem);
          $uend= utf8_to_unicode($match[1]);
          $ch= array_pop($ustem);
          $ed= $uend[0];
          $save='';
  
          if ($this->isHangul($ch)) {
              $j= hangul_to_jamo($ch);
              $ej= hangul_to_jamo($ed);
  
              $sj= sizeof($j);
  
              if ($sj == 3 and $j[2] == 0x11bb /* ㅆ */ ) {
                  // 랐-다, 었-다, 겠-다, 였-다
                  if (in_array($j[1],array(0x1161,0x1165,0x1166,0x1167)) /* ㅏ,ㅓ,ㅔ,ㅕ */ ) {
                      if ($j[0] == 0x1105 and in_array($j[1],array(0x1161,0x1165,0x1167)) ) {
                          // 랐,렀,렸
                          // 갈렸-다
  
  
  
                      } else if (in_array($j[0], array(0x1100,0x110b,0x110c)) ) {
                          # 겠,았
                          array_unshift($uend,$ch);
                          unset($ch);
                      } else if ($j[1] == 0x1167 /* ㅕ */
                          and in_array($j[0],array(0x1101,0x1102,0x1103,0x1105,0x1106,0x1107,
                                                   0x1109,0x110c,0x110e,0x110f,0x1110,0x1111,0x1112)) ) {
                          # 여 변환
                          // 혔 -> ㅎ+었 -> 히+었
                          $j[1]=0x1165;
                          $syll=jamo_to_syllable(array(0x110b,$j[1],$j[2]));
                          array_unshift($uend,$syll[0]);
  
                          /* 혔 -> 히+었, 폈 -> 피+었 */
                          $j[1]=0x1175;
  
                          $syll=jamo_to_syllable(array($j[0],$j[1]));
                          $ch=$syll[0];
                      } else if (in_array($j[0],array(0x1101,0x1104,0x110a,0x1111,0x1112)) ) {
                          # 우 불규칙
                          /* 떴 -> ㄸ + 었 */
                          $syll=jamo_to_syllable(array(0x110b,$j[1],$j[2]));
                          array_unshift($uend,$syll[0]);
  
                          /* ㄸ -> 뜨 */
                          $j[1]=0x1173; /* ㅡ */
                          if ($j[0]== 0x1111) $j[1]=0x116e; /* 펐 푸+었 */
                          jamo_to_syllable(array($j[0],$j[1])); /* 쓰 */
                          $ch=$syll[0];
                      } else if (in_array($j[0],array(0x1101,0x1104,0x110a,0x1111,0x1112)) ) {
                      }
                  } else if ($j[0]==0x1112 /* ㅎ */ and in_array($j[1],array(0x1162)) /* ㅐ */ ) {
                      array_push($ustem, 0xd558); /* 하 */;
                      $syll=jamo_to_syllable(array(0x110b,0x1167,0x11bb));
                      array_unshift($uend,$syll[0]);
                      #$match[1]='여'.$match[1]; /* 해 -> 하 + 여 */
                      unset($ch);
                  } else { /* ㅆ를 떼어낸다. */
                      #print '~~'.$stem.'~~';
                      $syll=jamo_to_syllable(array($j[0],$j[1]));
                      array_unshift($uend,$j[2]);
                      #array_unshift($uend,hangul_jongseong_to_cjamo($j[2]));
                      $ch=$syll[0];
                      unset($j[2]);
                      #unset($ch);
                  }
                  if (!$ch) {
                      $ch= array_pop($ustem);
                      $j= hangul_to_jamo($ch);
                  }
                  $ed= $uend[0];
                  $ej= hangul_to_jamo($ed);
              } else if (!empty($j[2]) and in_array($j[2],array(0x11ab, 0x11af,0x11b8)) /* ㄴ,ㄹ,ㅂ */ ) {
                  // 합-시다   갑-시다   갈-래
                  // 하-ㅂ시다 가-ㅂ시다 가-ㄹ래
                  //
                  if ($j[2]== 0x11af and $ej[0]==0x1105) {
                  //if ($j[1] == 0x1173 and $j[2]== 0x11af and $ej[0]==0x1105) {
                      // 르 불규칙
                      // 흘-러:흐르+러
                      unset($j[2]);
                      $syll=jamo_to_syllable($j);
                      array_push($ustem,$syll[0]); /* 흐 */
                      $j[0]=$ej[0];
                      $j[1]=0x1173;
                      $syll=jamo_to_syllable($j); /* 르 */
                      $ch=$syll[0];
                  } else {
                      array_unshift($uend,$j[2]);
                      $syll=jamo_to_syllable(array($j[0],$j[1]));
                      $ch=$syll[0];
                      $ed=$j[2];
                      unset($j[2]);
                  }
              }
              
              // ㄷ 불규칙
              // 들-어 -> 듣-다
              $sj=sizeof($j);
              if ($sj == 3 and $j[2] == 0x11af and in_array($ej[0],array(0x110b,0x1105) /* ㅇ,ㄹ*/)) {
                  while (in_array($ej[1],array(0x1161,0x1165,0x1173)) /* ㅏㅓㅡ */ ) {
                      // 아어으
                      // 라러르
                      $se=sizeof($ej);
                      if ($se==3) {
                          if ($ej[1]==0x1173 and !in_array($ej[2],0x11ab,0x11af)) break;
                          // 은을
                      } else {
                          if ($j[2]==0x11af and sizeof($ej)==2 and $ej[0] == 0x1105) break;
                      }
                      $syll=jamo_to_syllable(array($j[0],$j[1],0x11ae));
                      $ch=$syll[0];
                      break;
                  }
              }
  
              // ㅅ 불규칙
              // * 지-어:짓-어
              // * 이-어:잇-어
              if (sizeof($ej) ==2) {
                  if ($ej[0]==0x110b /* ㅓ */) {
                      $j[2]=0x11ba;
                      $syll=jamo_to_syllable($j); /* +ㅅ */
                      $ch=$syll[0];
                      $sj=3;
                  }
              }
  
              if ($sj == 2) {
                  if (in_array($j[0],array(0x110c) /* ㅈ */ )
                      and in_array($j[1],array(0x116e,0x1175)) /* ㅜ,ㅣ */ ) {
                      /* 주, 지 */
                      array_unshift($uend,$ch);
                      unset($ch);
                      $ch= array_pop($ustem);
                      $j= hangul_to_jamo($ch);
                  }
                  if ($j[1]==0x1165 /* ㅓ */ and in_array($j[0],array(0x1101,0x1104,0x110a,0x1111)) ) {
                      /* 꺼,떠,써,퍼 */
                      $syll=jamo_to_syllable(array(0x110b,0x1165)); /* 어 */
                      array_unshift($uend,$syll[0]);
                      if ($j[0] == 0x1111)
                          $syll=jamo_to_syllable(array($j[0],0x116e)); /* 푸 */
                      else
                          $syll=jamo_to_syllable(array($j[0],0x1173)); /* 쓰 */
                      array_push($ustem,$syll[0]);
                      unset($ch);
                      $ch= array_pop($ustem);
                      $j= hangul_to_jamo($ch);
                  }
  
                  // 음운 축약
                  if (in_array($j[0],array(0x1105, 0x1112)) and $j[1]==0x1162) {
                      // ㅎ 불규칙(어미) 파랗+아서 -> 파라+아서 -> 파래서
                      /* 파래-서 -> 파라-아서 */
                      $j[1]=0x1161;
                      $syll=jamo_to_syllable($j); /* 래 -> 라+ 아 */
                      $ch=$syll[0];
                      $syll=jamo_to_syllable(array(0x110b,0x1161)); /* 아 */
                      $ed=$syll[0];
                      array_unshift($uend,$ed);
                      $ej[0]=0x110b;
                      $ej[0]=0x1161;
                  } else if ($j[0]==0x1112 /* ㅎ */ and in_array($j[1],array(0x1162)) /* ㅐ */ ) {
                      // 해-서 = 하-여서
                      $j[1]=0x1161;
                      $syll=jamo_to_syllable($j); /* 해 -> 하 + 여 */
                      $ch=$syll[0];
                      $syll=jamo_to_syllable(array(0x110b,0x1167)); /* 여 */
                      $ed=$syll[0];
                      array_unshift($uend,$ed);
                      $ej[0]=0x110b;
                      $ej[0]=0x1167;
                  } else if (in_array($j[0],array(0x1105,0x1109)) /* ㄹ,ㅅ */
                      and in_array($j[1],array(0x1167)) /* ㅕ */ ) {
                          // 하셔-서 = 하시-어서
                          // 가려-서 = 가리-어서
                      $j[1]=0x1175; /* ㅣ */
                      $syll=jamo_to_syllable($j); /* ㅕ -> 이-어 */
                      $ch=$syll[0];
                      $syll=jamo_to_syllable(array(0x110b,0x1165)); /* 어 */
                      $ed=$syll[0];
                      array_unshift($uend,$ed);
                      $ej[0]=0x110b;
                      $ej[0]=0x1165;
                  }
  
                  if ($j[0]== 0x1109 and $j[1]==0x1175) { /* 시: 존칭처리 */
                      array_unshift($uend,$ch);
                      $ej= $j;
                      $ch= array_pop($ustem);
                      $j= hangul_to_jamo($ch);
                  }
  
                  // ㅎ 불규칙
                  if (in_array($j[0],array(0x1105,0x1106) /* ㄹ,ㅁ */ )
                      and in_array($j[1],array(0x1161,0x1165)) /* 라,러 */ ) {
                      $syll=jamo_to_syllable(array($j[0],$j[1],0x11c2)); /* 랗,렇 */
                      array_push($ustem,$syll[0]);
                      unset($ch);
                      unset($j);
                  }
              }
  
              while ($sj == 2 and $j[0] == 0x110b
                  and in_array($j[1],array(0x116a,0x116e,0x116f)) and sizeof($ustem)>=1 ) {
                      // XXX
                  // 그리워: 그리우+어 -> 그립+워
                  # /* 와 우 워 */
                  $ch1=array_pop($ustem);
                  $jamo=hangul_to_jamo($ch1);
                  if (sizeof($jamo)==2) {
                      if ($jamo[1] != 0x1175) {
                          $syll=jamo_to_syllable(array($jamo[0],$jamo[1],0x11b8));
                          array_push($ustem,$syll[0]);
                          /* add ㅂ */
                      } else {
                          array_push($ustem,$ch1);
                      }
                      array_unshift($uend,$ch);
                      unset($ch);
                  } else {
                      array_push($ustem,$ch1);
                  }
  
                  break;
              }
  
              if ($ch) array_push($ustem,$ch);
              $match[1]= unicode_to_utf8($uend);
              return unicode_to_utf8($ustem);
          }
  
          $match[1]=$save.$match[1];
          return $stem;
  
          #print "<pre>";
          #print($word.'-'.$match[1]);
          #print_r($match);
      }
  
      function close() {
          fclose($this->_dict);
      }
  }
  
  // vim:et:sts=4:sw=4:
  
  
  
  1.16      +3 -3      moniwiki/plugin/FastSearch.php
  
  Index: FastSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FastSearch.php,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- FastSearch.php	29 Jul 2010 11:32:24 -0000	1.15
  +++ FastSearch.php	29 Jul 2010 15:51:12 -0000	1.16
  @@ -13,9 +13,9 @@
   //
   // Usage: [[FastSearch(string)]]
   //
  -// $Id: FastSearch.php,v 1.15 2010/07/29 11:32:24 wkpark Exp $
  +// $Id: FastSearch.php,v 1.16 2010/07/29 15:51:12 wkpark Exp $
   
  -include_once('lib/search.DBA.php');
  +include_once('lib/indexer.DBA.php');
   
   function macro_FastSearch($formatter,$value="",&$opts) {
     global $DBInfo;
  @@ -48,7 +48,7 @@
        return $form;
     }
   
  -  $DB=new IndexDB_dba('fullsearch',"r",$DBInfo->dba_type);
  +  $DB=new Indexer_dba('fullsearch',"r",$DBInfo->dba_type);
     if ($DB->db==null) {
       $opts['msg']=_("Couldn't open search database, sorry.");
       $opts['hits']= 0;
  
  
  
  1.35      +5 -5      moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- Keywords.php	19 Apr 2010 11:26:46 -0000	1.34
  +++ Keywords.php	29 Jul 2010 15:51:12 -0000	1.35
  @@ -8,12 +8,12 @@
   // Name: a Keywords Plugin
   // Description: a Keywords plugin to generate keywords of a page
   // URL: MoniWiki:KeywordsPlugin
  -// Version: $Revision: 1.34 $
  +// Version: $Revision: 1.35 $
   // License: GPL
   //
   // Usage: [[Keywords(options)]]
   //
  -// $Id: Keywords.php,v 1.34 2010/04/19 11:26:46 wkpark Exp $
  +// $Id: Keywords.php,v 1.35 2010/07/29 15:51:12 wkpark Exp $
   
   define('LOCAL_KEYWORDS','LocalKeywords');
   
  @@ -206,10 +206,10 @@
       }
       $words=array_diff($words,preg_split("/\s+|\n/",$common));
   
  -    while (!empty($DBInfo->use_indexer)) {
  -        include_once(dirname(__FILE__).'/../lib/indexer.ko.php');
  +    while (!empty($DBInfo->use_stemmer)) {
  +        include_once(dirname(__FILE__).'/../lib/stemmer.ko.php');
           include_once(dirname(__FILE__).'/../lib/stemmer.php');
  -        $indexer=new KoreanIndexer();
  +        $indexer=new KoreanStemmer();
   
           if (!is_resource($indexer->_dict)) break;
           $founds = array();
  
  
  
  1.3       +3 -3      moniwiki/plugin/filter/indexer_ko.php
  
  Index: indexer_ko.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/filter/indexer_ko.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- indexer_ko.php	27 Nov 2008 08:43:06 -0000	1.2
  +++ indexer_ko.php	29 Jul 2010 15:51:13 -0000	1.3
  @@ -3,14 +3,14 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a korean indexer filter plugin for the MoniWiki
   //
  -// $Id: indexer_ko.php,v 1.2 2008/11/27 08:43:06 wkpark Exp $
  +// $Id: indexer_ko.php,v 1.3 2010/07/29 15:51:13 wkpark Exp $
   //
   
  -include_once(dirname(__FILE__).'/../../lib/indexer.ko.php');
  +include_once(dirname(__FILE__).'/../../lib/stemmer.ko.php');
   
   function filter_indexer_ko($formatter,$value,&$options) {
       $more_specific_len=1;
  -    $indexer=new KoreanIndexer();
  +    $indexer=new KoreanStemmer();
   
       if ($options['value'])
           $value=$options['value'];
  
  
  
  1.2       +3 -2      moniwiki/tools/indexer.php
  
  Index: indexer.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/tools/indexer.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- indexer.php	29 Jul 2010 11:32:24 -0000	1.1
  +++ indexer.php	29 Jul 2010 15:51:13 -0000	1.2
  @@ -7,7 +7,8 @@
   $Config=getConfig("config.php");
   include("wikilib.php");
   include("lib/win32fix.php");
  -include("lib/search.DBA.php");
  +#include("lib/tokenizer.php");
  +include("lib/indexer.DBA.php");
   
   $DBInfo= new WikiDB($Config);
   
  @@ -16,7 +17,7 @@
   $options['timer']=&$timing;
   $options['timer']->Check("load");
   
  -$indexer = new IndexDB_DBA('fullsearch', 'w', $DBInfo->dba_type);
  +$indexer = new Indexer_DBA('fullsearch', 'w', $DBInfo->dba_type, 'new');
   #$indexer->test();
   #exit;
   
  
  
  


1280445766;wkpark;Update of /cvsroot/moniwiki/moniwiki/lib\nIn directory kill.kldp.net:/tmp/cvs-serv1047/lib\n\nModified Files:\n	indexer.DBA.php \nLog Message:\n[#315528] * add $use_stemming variable to use fake stemming or experimental korean stemmer.\n * some optimization.\n\n
wkpark      2010/07/30 08:22:47

  Modified:    lib      indexer.DBA.php
  Log:
  [#315528] * add $use_stemming variable to use fake stemming or experimental korean stemmer.
   * some optimization.
  
  Revision  Changes    Path
  1.2       +55 -15    moniwiki/lib/indexer.DBA.php
  
  Index: indexer.DBA.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/indexer.DBA.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- indexer.DBA.php	29 Jul 2010 15:51:12 -0000	1.1
  +++ indexer.DBA.php	29 Jul 2010 23:22:46 -0000	1.2
  @@ -5,7 +5,7 @@
   //
   // initial version from http://www.heddley.com/edd/php/search.html
   // heavily modified to adopt to the MoniWiki 2003/07/19 by wkpark
  -// $Id: indexer.DBA.php,v 1.1 2010/07/29 15:51:12 wkpark Exp $
  +// $Id: indexer.DBA.php,v 1.2 2010/07/29 23:22:46 wkpark Exp $
   
   class Indexer_dba {
       var $db = null;
  @@ -15,6 +15,7 @@
   
       var $dbname = ''; // db file name
       var $prefix = '';
  +    var $use_stemming = 1; // 0: noop / 1: fake stemming / 2: using KoreanStemmer 
   
       function Indexer_dba($arena,$mode='r',$type, $prefix = '') {
           global $DBInfo;
  @@ -96,37 +97,70 @@
           return $pkey;
       }
   
  -    function _getIndexWords($string) {
  -        if (preg_match('/[^0-9A-Za-z]/u', $string)) {
  +    function _getIndexWords($string, &$words) {
  +        if (empty($string)) return false;
  +
  +        if (preg_match('/[^0-9A-Za-z]/u', $string)) { // FIXME
               // split into single chars
  -            $charstr = @preg_replace('/(.)/u',' \1 ',$string);
  -            if(!is_null($charstr)) $string = $charstr; //recover from regexp failure
  +	    $chars = preg_split('//u', $string, -1, PREG_SPLIT_NO_EMPTY);
   
               // make fake words for indexing
               // Please see MoniWiki:FastSearchMacro, MoniWiki:FullTextIndexer
  -            if (strpos($string, ' ') !== false) {
  -                $ws = preg_split('/\s+/', trim($string));
  -                $words = array();
  -                $n = '';
  -                foreach ($ws as $w) {
  -                    $n.= $w;
  +            $sz = count($chars);
  +            if ($sz > 1) {
  +                $n = $chars[0];
  +                for ($i=1; $i < $sz; $i++) {
  +                    $n.= $chars[$i];
                       $words[] = $n;
                   }
                   #print_r($words);
  -                return $words;
  +                return true;
               }
           }
           return false;
       }
   
  +    function _stemmingWords($words) {
  +        static $indexer = null;
  +        if ($this->use_stemming > 1) {
  +            include_once(dirname(__FILE__).'/stemmer.ko.php');
  +            if (empty($indexer))
  +                $indexer = new KoreanStemmer();
  +
  +            $founds = array();
  +            foreach ($words as $word) {
  +                if (preg_match('/[^0-9A-Za-z]/u', $word)) {
  +                    $match = null;
  +                    $stem = $indexer->getStem(trim($word), $match, $type);
  +                    if (!empty($stem))
  +                        $founds[] = $stem;
  +                } else {
  +                    $founds[] = $word;
  +                }
  +            }
  +            return $founds;
  +        }
  +
  +        $new_words = array();
  +        foreach ($words as $word) {
  +            $this->_getIndexWords($word, $new_words);
  +        }
  +        $words = array_unique(array_merge($words, $new_words));
  +        return $words;
  +    }
  +
  +
       function addWordCache($pagename,$words) {
           if (!is_array($words)) return;
           $type = $this->type;
           $key = $this->getPageID($pagename);
   
  +        if ($this->use_stemming)
  +            $words = $this->_stemmingWords($words);
  +        $packed = pack($this->type, $key);
           foreach ($words as $word) {
               $a = !empty($this->wordcache[$word]) ? $this->wordcache[$word] : '';
  -            $a.= pack($this->type, $key);
  +            $a.= $packed;
               $this->wordcache[$word] = $a;
           }
           return;
  @@ -166,6 +200,9 @@
           $type=$this->type;
           $key=$this->getPageID($pagename);
   
  +        if ($this->use_stemming)
  +            $words = $this->_stemmingWords($words);
  +        $packed = pack($type, $key);
           foreach ($words as $word) {
               if (dba_exists($word,$this->db)) {
                   $a=dba_fetch($word,$this->db);
  @@ -173,7 +210,7 @@
                   dba_insert($word,'',$this->db);
                   $a='';
               }
  -            $a.=pack($type,$key);
  +            $a.= $packed;
               $un=array_unique(unpack($type.'*',$a));
               asort($un);
               $na='';
  @@ -189,6 +226,9 @@
           $key=$this->getPageID($pagename);
           #print $key."<br />";
           #print "<pre>";
  +
  +        if ($this->use_stemming)
  +            $words = $this->_stemmingWords($words);
           foreach ($words as $word) {
               if (dba_exists($word,$this->db)) {
                   $a=dba_fetch($word,$this->db);
  @@ -238,7 +278,7 @@
   
               if (!empty($this->prefix)) {
                   $postfix = $this->prefix.'.';
  -                rename($this->db, $this->index_dir.'/'.$this->arena.$postfix.'.db');
  +                rename($this->dbname, $this->index_dir.'/'.$this->arena.$postfix.'.db');
               }
               return $ret;
           }
  
  
  


1280445917;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv1177\n\nModified Files:\n	monisetup.php \nLog Message:\n[#315528] check 'flatfile' support for the dba module\n\n
wkpark      2010/07/30 08:25:17

  Modified:    .        monisetup.php
  Log:
  [#315528] check 'flatfile' support for the dba module
  
  Revision  Changes    Path
  1.51      +3 -1      moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.50
  retrieving revision 1.51
  diff -u -r1.50 -r1.51
  --- monisetup.php	13 Jul 2010 16:48:09 -0000	1.50
  +++ monisetup.php	29 Jul 2010 23:25:17 -0000	1.51
  @@ -1,7 +1,7 @@
   <?php
   // Copyright 2003-2007 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.50 2010/07/13 16:48:09 wkpark Exp $
  +// $Id: monisetup.php,v 1.51 2010/07/29 23:25:17 wkpark Exp $
   
   function _stripslashes($str) {
     return get_magic_quotes_gpc() ? stripslashes($str):$str;
  @@ -45,6 +45,8 @@
           $config['dba_type']="db2";
         else if ($db=@dba_open($tempnam,"n","gdbm"))
           $config['dba_type']="gdbm";
  +      else if ($db=@dba_open($tempnam,"n","flatfile"))
  +        $config['dba_type']="flatfile";
   
         if (is_resource($db)) {
           dba_close($db);
  
  
  


1280475031;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv14770\n\nModified Files:\n	UploadFile.php \nLog Message:\nforce charset header\n\n
wkpark      2010/07/30 16:30:31

  Modified:    plugin   UploadFile.php
  Log:
  force charset header
  
  Revision  Changes    Path
  1.51      +2 -1      moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.50
  retrieving revision 1.51
  diff -u -r1.50 -r1.51
  --- UploadFile.php	26 Jul 2010 14:05:25 -0000	1.50
  +++ UploadFile.php	30 Jul 2010 07:30:31 -0000	1.51
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.50 2010/07/26 14:05:25 wkpark Exp $
  +// $Id: UploadFile.php,v 1.51 2010/07/30 07:30:31 wkpark Exp $
   
   function _upload_err_msg($error_code) {
       switch ($error_code) { 
  @@ -341,6 +341,7 @@
       $err = strip_tags($err);
       if ($err) $err .= "\\n";
   
  +    $formatter->header('Content-type: text/html; charset='.$DBInfo->charset);
       $scr = '';
       if (!empty($options['domain']) and preg_match('/^[a-z][a-z0-9]+(\.[a-z][a-z0-9]+)*$/i', $options['domain'])) {
           $scr = '<script type="text/javascript">document.domain="'.$options['domain'].'";</script>';
  
  
  


1280580389;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv552\n\nModified Files:\n	moni-install.in \nLog Message:\nmake moni-install.in dash compatible by nori.\n\n
wkpark      2010/07/31 21:46:29

  Modified:    .        moni-install.in
  Log:
  make moni-install.in dash compatible by nori.
  
  Revision  Changes    Path
  1.8       +5 -3      moniwiki/moni-install.in
  
  Index: moni-install.in
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/moni-install.in,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- moni-install.in	23 Apr 2009 07:16:59 -0000	1.7
  +++ moni-install.in	31 Jul 2010 12:46:29 -0000	1.8
  @@ -15,7 +15,7 @@
   
   [ ! -d data ] && cp -a $INSTDIR/data .
   [ ! -d imgs ] && ln -s $INSTDIR/imgs .
  -[ ! -d images ] && ln -s $INSTDIR/imgs .
  +[ ! -d images ] && ln -s $INSTDIR/images .
   [ ! -d theme ] && ln -s $INSTDIR/theme .
   [ ! -d css ] && ln -s $INSTDIR/css .
   [ ! -d local ] && ln -s $INSTDIR/local .
  @@ -26,8 +26,10 @@
   [ ! -f config.php.default ] && ln -s $INSTDIR/config.php.default .
   [ ! -f monisetup.php ] && ln -s $INSTDIR/monisetup.php .
   conf=`ls $INSTDIR/config.php.*|grep -v config.php.default`
  -cp -a $INSTDIR/{monisetup.sh,secure.sh} .
  -cp -a $conf .
  +cp -a $INSTDIR/monisetup.sh $INSTDIR/secure.sh .
  +if [ -n "$conf" ]; then
  +	cp -a $conf .
  +fi
   
   if [ ! -f index.php ]; then
     cat <<PHP >index.php
  
  
  


1280580459;wkpark;Update of /cvsroot/moniwiki/moniwiki/lib\nIn directory kill.kldp.net:/tmp/cvs-serv623\n\nModified Files:\n	dict.text.php \nLog Message:\ninc $maxcheck correctly\n\n
wkpark      2010/07/31 21:47:39

  Modified:    lib      dict.text.php
  Log:
  inc $maxcheck correctly
  
  Revision  Changes    Path
  1.8       +3 -3      moniwiki/lib/dict.text.php
  
  Index: dict.text.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/dict.text.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- dict.text.php	13 Jul 2010 20:53:37 -0000	1.7
  +++ dict.text.php	31 Jul 2010 12:47:39 -0000	1.8
  @@ -8,10 +8,10 @@
   // Name: TextDictModule
   // Description: A Simple Text-based Dictionary Module
   // URL: MoniWiki:TextDictModule etc.
  -// Version: $Revision: 1.7 $
  +// Version: $Revision: 1.8 $
   // License: GPL
   //
  -// $Id: dict.text.php,v 1.7 2010/07/13 20:53:37 wkpark Exp $
  +// $Id: dict.text.php,v 1.8 2010/07/31 12:47:39 wkpark Exp $
   //
   
   function _fuzzy_bsearch_file($fp, $key, $seek, $fuzzyoffset=0, $klen=0,$fz=0,$encoding='UTF-8') {
  @@ -218,7 +218,7 @@
               $l = fread($fp, $rlen);
               if ($rlen != 1024) $l = "\n" . $l; // hack, for the first dict entry.
               while( ($p = strrpos($l,"\n") ) !== false) {
  -                $check++;
  +                $maxcheck++;
                   $line = substr($l, $p+1) . $ll;
                   #print '*'.$line."\n";
                   $ll = '';
  
  
  


1280584011;wkpark;Update of /cvsroot/moniwiki/moniwiki/lib\nIn directory kill.kldp.net:/tmp/cvs-serv9300\n\nModified Files:\n	difflib.php \nLog Message:\n[#315543] remove deprecated new by references.\n\n
wkpark      2010/07/31 22:46:52

  Modified:    lib      difflib.php
  Log:
  [#315543] remove deprecated new by references.
  
  Revision  Changes    Path
  1.16      +11 -11    moniwiki/lib/difflib.php
  
  Index: difflib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/difflib.php,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- difflib.php	9 Jun 2010 05:07:30 -0000	1.15
  +++ difflib.php	31 Jul 2010 13:46:51 -0000	1.16
  @@ -9,7 +9,7 @@
   // Copyright (C) 2000, 2001 Geoffrey T. Dairiki <dairiki@dairiki.org>
   // You may copy this code freely under the conditions of the GPL.
   //
  -// $Id: difflib.php,v 1.15 2010/06/09 05:07:30 wkpark Exp $
  +// $Id: difflib.php,v 1.16 2010/07/31 13:46:51 wkpark Exp $
   // original Id: difflib.php,v 1.5 2002/01/21 06:55:47 dairiki Exp
   //assert_options(ASSERT_ACTIVE, 0);
   define('USE_ASSERTS', false);
  @@ -43,7 +43,7 @@
       }
   
       function &reverse() {
  -        $rev = &new _DiffOp_Copy($this->_final, $this->orig);
  +        $rev = new _DiffOp_Copy($this->_final, $this->orig);
           return $rev;
       }
   }
  @@ -57,7 +57,7 @@
       }
   
       function &reverse() {
  -        $rev = &new _DiffOp_Add($this->orig);
  +        $rev = new _DiffOp_Add($this->orig);
           return $rev;
       }
   }
  @@ -71,7 +71,7 @@
       }
   
       function &reverse() {
  -        $rev = &new _DiffOp_Delete($this->_final);
  +        $rev = new _DiffOp_Delete($this->_final);
           return $rev;
       }
   }
  @@ -85,7 +85,7 @@
       }
   
       function &reverse() {
  -        $rev = &new _DiffOp_Change($this->_final, $this->orig);
  +        $rev = new _DiffOp_Change($this->_final, $this->orig);
           return $rev;
       }
   }
  @@ -179,7 +179,7 @@
                   ++$yi;
               }
               if ($copy)
  -                $edits[] = &new _DiffOp_Copy($copy);
  +                $edits[] = new _DiffOp_Copy($copy);
   
               // Find deletes & adds.
               $delete = array();
  @@ -191,11 +191,11 @@
                   $add[] = $to_lines[$yi++];
               
               if ($delete && $add)
  -                $edits[] = &new _DiffOp_Change($delete, $add);
  +                $edits[] = new _DiffOp_Change($delete, $add);
               elseif ($delete)
  -                $edits[] = &new _DiffOp_Delete($delete);
  +                $edits[] = new _DiffOp_Delete($delete);
               elseif ($add)
  -                $edits[] = &new _DiffOp_Add($add);
  +                $edits[] = new _DiffOp_Add($add);
           }
           return $edits;
       }
  @@ -747,7 +747,7 @@
                       else{
                           if ($ntrail) {
                               $context = array_slice($edit->orig, 0, $ntrail);
  -                            $block[] = &new _DiffOp_Copy($context);
  +                            $block[] = new _DiffOp_Copy($context);
                           }
                           $this->_block($x0, $ntrail + $xi - $x0,
                                         $y0, $ntrail + $yi - $y0,
  @@ -764,7 +764,7 @@
                       $y0 = $yi - sizeof($context);
                       $block = array();
                       if ($context)
  -                        $block[] = &new _DiffOp_Copy($context);
  +                        $block[] = new _DiffOp_Copy($context);
                   }
                   $block[] = $edit;
               }
  
  
  


1280589124;wkpark;Update of /cvsroot/moniwiki/moniwiki/lib\nIn directory kill.kldp.net:/tmp/cvs-serv19043/lib\n\nModified Files:\n	indexer.DBA.php \nLog Message:\n[#315528] fixed last changes\n\n
wkpark      2010/08/01 00:12:04

  Modified:    lib      indexer.DBA.php
  Log:
  [#315528] fixed last changes
  
  Revision  Changes    Path
  1.3       +4 -3      moniwiki/lib/indexer.DBA.php
  
  Index: indexer.DBA.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/indexer.DBA.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- indexer.DBA.php	29 Jul 2010 23:22:46 -0000	1.2
  +++ indexer.DBA.php	31 Jul 2010 15:12:04 -0000	1.3
  @@ -5,7 +5,7 @@
   //
   // initial version from http://www.heddley.com/edd/php/search.html
   // heavily modified to adopt to the MoniWiki 2003/07/19 by wkpark
  -// $Id: indexer.DBA.php,v 1.2 2010/07/29 23:22:46 wkpark Exp $
  +// $Id: indexer.DBA.php,v 1.3 2010/07/31 15:12:04 wkpark Exp $
   
   class Indexer_dba {
       var $db = null;
  @@ -34,7 +34,8 @@
           // check updated db file.
           if (empty($prefix) and file_exists($this->index_dir.'/'.$arena.'.new.db')) {
               if (filemtime($this->index_dir.'/'.$arena.'.new.db') > filemtime($this->dbname)) {
  -                copy($this->index_dir.'/'.$arena.'.new.db', $this->dbname);
  +                copy($this->index_dir.'/'.$arena.'.new.db', $this->dbname.'tmp');
  +                rename($this->dbname.'tmp', $this->dbname);
               }
           }
   
  @@ -277,7 +278,7 @@
               $ret = dba_close($this->db);
   
               if (!empty($this->prefix)) {
  -                $postfix = $this->prefix.'.';
  +                $postfix = '.'.$this->prefix;
                   rename($this->dbname, $this->index_dir.'/'.$this->arena.$postfix.'.db');
               }
               return $ret;
  
  
  


1280590895;wkpark;Update of /cvsroot/moniwiki/moniwiki/lib\nIn directory kill.kldp.net:/tmp/cvs-serv24827/lib\n\nModified Files:\n	indexer.DBA.php \nLog Message:\n[#315528] fixed possible race condition\n\n
wkpark      2010/08/01 00:41:36

  Modified:    lib      indexer.DBA.php
  Log:
  [#315528] fixed possible race condition
  
  Revision  Changes    Path
  1.4       +5 -3      moniwiki/lib/indexer.DBA.php
  
  Index: indexer.DBA.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/indexer.DBA.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- indexer.DBA.php	31 Jul 2010 15:12:04 -0000	1.3
  +++ indexer.DBA.php	31 Jul 2010 15:41:35 -0000	1.4
  @@ -5,7 +5,7 @@
   //
   // initial version from http://www.heddley.com/edd/php/search.html
   // heavily modified to adopt to the MoniWiki 2003/07/19 by wkpark
  -// $Id: indexer.DBA.php,v 1.3 2010/07/31 15:12:04 wkpark Exp $
  +// $Id: indexer.DBA.php,v 1.4 2010/07/31 15:41:35 wkpark Exp $
   
   class Indexer_dba {
       var $db = null;
  @@ -34,8 +34,10 @@
           // check updated db file.
           if (empty($prefix) and file_exists($this->index_dir.'/'.$arena.'.new.db')) {
               if (filemtime($this->index_dir.'/'.$arena.'.new.db') > filemtime($this->dbname)) {
  -                copy($this->index_dir.'/'.$arena.'.new.db', $this->dbname.'tmp');
  -                rename($this->dbname.'tmp', $this->dbname);
  +                touch($this->dbname);
  +                $tmpname = '.tmp_'.time();
  +                copy($this->index_dir.'/'.$arena.'.new.db', $this->dbname.$tmpname);
  +                rename($this->dbname.$tmpname, $this->dbname);
               }
           }
   
  
  
  


1280736277;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv3117\n\nModified Files:\n	wiki.php \nLog Message:\n[#315546] do not trim out -,_ chars\n\n
wkpark      2010/08/02 17:04:38

  Modified:    .        wiki.php
  Log:
  [#315546] do not trim out -,_ chars
  
  Revision  Changes    Path
  1.534     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.533
  retrieving revision 1.534
  diff -u -r1.533 -r1.534
  --- wiki.php	29 Jul 2010 15:51:12 -0000	1.533
  +++ wiki.php	2 Aug 2010 08:04:37 -0000	1.534
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.533 2010/07/29 15:51:12 wkpark Exp $
  +// $Id: wiki.php,v 1.534 2010/08/02 08:04:37 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.533 $',1,-1);
  +$_revision = substr('$Revision: 1.534 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -840,8 +840,8 @@
   
       // clean up ':' like as the dokuwiki
       $pn= preg_replace('#:+#',':',$pagename);
  -    $pn= trim($pn,':-');
  -    $pn= preg_replace('#:[:\._\-]+#',':',$pn);
  +    $pn= trim($pn,':');
  +    $pn= preg_replace('#:+#',':',$pn);
   
       $pn= preg_replace("/([^a-z0-9:]{1})/ie","'_'.strtolower(dechex(ord(substr('\\1',-1))))",$pn);
       $name=preg_replace('#:#','.d/',$pn);
  
  
  


1280741328;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv15556\n\nModified Files:\n	wiki.php \nLog Message:\n[#315547] allow pagename as "0"\n\n
wkpark      2010/08/02 18:28:48

  Modified:    .        wiki.php
  Log:
  [#315547] allow pagename as "0"
  
  Revision  Changes    Path
  1.535     +8 -8      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.534
  retrieving revision 1.535
  diff -u -r1.534 -r1.535
  --- wiki.php	2 Aug 2010 08:04:37 -0000	1.534
  +++ wiki.php	2 Aug 2010 09:28:48 -0000	1.535
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.534 2010/08/02 08:04:37 wkpark Exp $
  +// $Id: wiki.php,v 1.535 2010/08/02 09:28:48 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.534 $',1,-1);
  +$_revision = substr('$Revision: 1.535 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -531,7 +531,7 @@
     }
   
     function writable($options="") {
  -    if (!$options['page']) return 0; # XXX
  +    if (!isset($options['page'][0])) return 0; # XXX
       return $this->DB->_isWritable($options['page']);
     }
   
  @@ -863,7 +863,7 @@
     }
   
     function hasPage($pagename) {
  -    if (!$pagename) return false;
  +    if (!isset($pagename[0])) return false;
       $name=$this->getPageKey($pagename);
       return @file_exists($name);
     }
  @@ -5245,7 +5245,7 @@
     // set 'cgi.fix_pathinfo=1' in the php.ini under
     // apache 2.0.x + php4.2.x Win32
     $pagename = '';
  -  if (!empty($_SERVER['PATH_INFO'])) {
  +  if (isset($_SERVER['PATH_INFO'])) {
       if ($_SERVER['PATH_INFO'][0] == '/')
         $pagename=substr($_SERVER['PATH_INFO'],1);
     } else if (!empty($_SERVER['QUERY_STRING'])) {
  @@ -5272,7 +5272,7 @@
         }
       }
     }
  -  if (!empty($pagename)) {
  +  if (isset($pagename[0])) {
       $pagename=_stripslashes($pagename);
   
       if ($pagename[0]=='~' and ($p=strpos($pagename,"/")))
  @@ -5410,7 +5410,7 @@
   
   function wiki_main($options) {
     global $DBInfo,$Config;
  -  $pagename=!empty($options['pagename']) ? $options['pagename']: $DBInfo->frontpage;
  +  $pagename=isset($options['pagename'][0]) ? $options['pagename']: $DBInfo->frontpage;
   
     # get primary variables
     if ($_SERVER['REQUEST_METHOD']=='POST') {
  @@ -5849,7 +5849,7 @@
   $lang= set_locale($DBInfo->lang,$DBInfo->charset);
   init_locale($lang);
   init_requests($options);
  -if (!$options['pagename']) $options['pagename']= get_frontpage($lang);
  +if (!isset($options['pagename'][0])) $options['pagename']= get_frontpage($lang);
   $DBInfo->lang=$lang;
   
   if (session_id()== '' && empty($Config['nosession'])){
  
  
  


1280741692;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv17283\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315528] dokuwiki like indexing except Hangul Syllables.\n\n
1280741692;wkpark;Update of /cvsroot/moniwiki/moniwiki/lib\nIn directory kill.kldp.net:/tmp/cvs-serv17283/lib\n\nModified Files:\n	indexer.DBA.php \nLog Message:\n[#315528] dokuwiki like indexing except Hangul Syllables.\n\n
wkpark      2010/08/02 18:34:52

  Modified:    .        wikilib.php
               lib      indexer.DBA.php
  Log:
  [#315528] dokuwiki like indexing except Hangul Syllables.
  
  Revision  Changes    Path
  1.305     +21 -2     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.304
  retrieving revision 1.305
  diff -u -r1.304 -r1.305
  --- wikilib.php	29 Jul 2010 11:32:23 -0000	1.304
  +++ wikilib.php	2 Aug 2010 09:34:52 -0000	1.305
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.304 2010/07/29 11:32:23 wkpark Exp $
  +// $Id: wikilib.php,v 1.305 2010/08/02 09:34:52 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -322,6 +322,7 @@
       $raw = preg_replace("/&[^;\s]+;|\[\[[^\[]+\]\]/", ' ', $string);
       // strip comments
       $raw = preg_replace("/^##.*$/m", ' ', $raw);
  +    // strip puncts.
       $raw = preg_replace("/([;\"',`\\\\\/\.:@#\!\?\$%\^&\*\(\)\{\}\[\]\~\-_\+=\|<>])/",
           ' ', strip_tags($raw));
   
  @@ -331,7 +332,25 @@
       $raw = preg_replace("/\b/", ' ', $raw);
       //$raw=preg_replace("/\b([0-9a-zA-Z'\"])\\1+\s*/",' ',$raw);
   
  -    $words = preg_split("/\s+|\n/", trim($raw));
  +    // split words
  +    $words = preg_split("/[\s\n\x{3000}]+/u", trim($raw));
  +
  +    // dokuwiki like indexing except Hangul Sylables XXX
  +    $words = array_unique($words);
  +    $new_words = array();
  +    foreach ($words as $k=>&$word) {
  +	if (empty($word)) continue;
  +    	if (preg_match('/[^0-9A-Za-z]/u', $word)) {
  +	    $ws = preg_split('/([^\x{AC00}-\x{D7AF}])/u', $word, -1,  PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
  +            if (count($ws) > 1) {
  +                unset($words[$k]);
  +                foreach ($ws as $w) {
  +                    $new_words[] = $w;
  +                }
  +            }
  +	}
  +    }
  +    $words = array_merge($words, $new_words);
   
       asort($words);
       return array_unique($words);
  
  
  
  1.5       +5 -5      moniwiki/lib/indexer.DBA.php
  
  Index: indexer.DBA.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/indexer.DBA.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- indexer.DBA.php	31 Jul 2010 15:41:35 -0000	1.4
  +++ indexer.DBA.php	2 Aug 2010 09:34:52 -0000	1.5
  @@ -5,7 +5,7 @@
   //
   // initial version from http://www.heddley.com/edd/php/search.html
   // heavily modified to adopt to the MoniWiki 2003/07/19 by wkpark
  -// $Id: indexer.DBA.php,v 1.4 2010/07/31 15:41:35 wkpark Exp $
  +// $Id: indexer.DBA.php,v 1.5 2010/08/02 09:34:52 wkpark Exp $
   
   class Indexer_dba {
       var $db = null;
  @@ -103,7 +103,7 @@
       function _getIndexWords($string, &$words) {
           if (empty($string)) return false;
   
  -        if (preg_match('/[^0-9A-Za-z]/u', $string)) { // FIXME
  +        if (preg_match('/^[\x{AC00}-\x{D7AF}]+$/u', $string)) { // XXX
               // split into single chars
   	    $chars = preg_split('//u', $string, -1, PREG_SPLIT_NO_EMPTY);
   
  @@ -289,11 +289,11 @@
       }
   
       function sort() {
  -        for ($k = dba_firstkey($this->db); $k != false; $k = dba_nextkey($this->db)) {
  +        for ($k = dba_firstkey($this->db); $k !== false; $k = dba_nextkey($this->db)) {
               if (isset($k[1]) and $k[0] == '!') continue;
   
               $a = dba_fetch($k, $this->db);
  -            $aa = unpack($this->type.'*', $a);
  +            $aa = array_unique(unpack($this->type.'*', $a)); // FIXME slow
               asort($aa);
               $na = '';
               foreach ($aa as $u) $na.=pack($this->type, $u);
  @@ -302,7 +302,7 @@
       }
   
       function test() {
  -        for ($k = dba_firstkey($this->db); $k != false; $k = dba_nextkey($this->db)) {
  +        for ($k = dba_firstkey($this->db); $k !== false; $k = dba_nextkey($this->db)) {
               if (isset($k[1]) and $k[0] == '!' and $k[1] == '?' and strlen($k) == 4) {
                   #print $k."=>\n";
                   #$kk = unpack($this->type.'1', substr($k,2));
  
  
  


1280745484;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv25376\n\nModified Files:\n	wiki.php wikilib.php \nLog Message:\n[#315547] use isset($pagename[0]) instead of !empty($pagename) \n\n
wkpark      2010/08/02 19:38:04

  Modified:    .        wiki.php wikilib.php
  Log:
  [#315547] use isset($pagename[0]) instead of !empty($pagename)
  
  Revision  Changes    Path
  1.536     +5 -5      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.535
  retrieving revision 1.536
  diff -u -r1.535 -r1.536
  --- wiki.php	2 Aug 2010 09:28:48 -0000	1.535
  +++ wiki.php	2 Aug 2010 10:38:04 -0000	1.536
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.535 2010/08/02 09:28:48 wkpark Exp $
  +// $Id: wiki.php,v 1.536 2010/08/02 10:38:04 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.535 $',1,-1);
  +$_revision = substr('$Revision: 1.536 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -2506,7 +2506,7 @@
         }
       } else if (($p=strpos($url,' '))!==false) {
         $text=substr($url,$p+1);
  -      if (!empty($text)) $url=substr($url,0,$p);
  +      if (isset($text[0])) $url=substr($url,0,$p);
       }
   
       if (empty($wiki)) {
  @@ -3066,9 +3066,9 @@
   
     function link_tag($pageurl,$query_string="", $text="",$attr="") {
       # Return a link with given query_string.
  -    if (empty($text))
  +    if (!isset($text[0]))
         $text= $pageurl; # XXX
  -    if (empty($pageurl))
  +    if (!isset($pageurl[0]))
         $pageurl=$this->page->urlname;
       if (isset($query_string[0]) and $query_string[0]=='?')
         $attr=empty($attr) ? 'rel="nofollow"':$attr.' rel="nofollow"';
  
  
  
  1.306     +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.305
  retrieving revision 1.306
  diff -u -r1.305 -r1.306
  --- wikilib.php	2 Aug 2010 09:34:52 -0000	1.305
  +++ wikilib.php	2 Aug 2010 10:38:04 -0000	1.306
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.305 2010/08/02 09:34:52 wkpark Exp $
  +// $Id: wikilib.php,v 1.306 2010/08/02 10:38:04 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -3004,7 +3004,7 @@
         <span class='button'><input type='submit' class='button' value='$msg' /></span>
         </form>";
   
  -  if (!$needle) {
  +  if (!isset($needle[0])) {
       $opts['msg'] = _("Use more specific text");
       if (!empty($opts['call'])) {
         $opts['form']=$form;
  
  
  


1280807251;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv10338\n\nModified Files:\n	wiki.php \nLog Message:\n[#315547] get PageLists correctly.\n\n
wkpark      2010/08/03 12:47:31

  Modified:    .        wiki.php
  Log:
  [#315547] get PageLists correctly.
  
  Revision  Changes    Path
  1.537     +9 -8      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.536
  retrieving revision 1.537
  diff -u -r1.536 -r1.537
  --- wiki.php	2 Aug 2010 10:38:04 -0000	1.536
  +++ wiki.php	3 Aug 2010 03:47:31 -0000	1.537
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.536 2010/08/02 10:38:04 wkpark Exp $
  +// $Id: wiki.php,v 1.537 2010/08/03 03:47:31 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.536 $',1,-1);
  +$_revision = substr('$Revision: 1.537 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -894,18 +894,19 @@
       }
   
       $handle = opendir($this->text_dir);
  +    if (!is_resource($handle))
  +      return array();
   
  -    if (!$options) {
  -      while ($file = readdir($handle)) {
  +    if (empty($options)) {
  +      while (($file = readdir($handle)) !== false) {
           if (is_dir($this->text_dir."/".$file)) continue;
           $pages[] = $this->keyToPagename($file);
         }
         closedir($handle);
         $pc->update($pcid,serialize($pages));
  -
         return $pages;
       } else if (!empty($options['limit'])) { # XXX
  -       while ($file = readdir($handle)) {
  +       while (($file = readdir($handle)) !== false) {
             if (is_dir($this->text_dir."/".$file)) continue;
             if (filemtime($this->text_dir."/".$file) > $options['limit'])
                $pages[] = $this->keyToPagename($file);
  @@ -913,14 +914,14 @@
          closedir($handle);
       } else if (!empty($options['count'])) {
          $count=$options['count'];
  -       while (($file = readdir($handle)) && $count > 0) {
  +       while (($file = readdir($handle)) !== false && $count > 0) {
             if (is_dir($this->text_dir."/".$file)) continue;
             $pages[] = $this->keyToPagename($file);
             $count--;
          }
          closedir($handle);
       } else if ($options['date']) {
  -       while ($file = readdir($handle)) {
  +       while (($file = readdir($handle)) !== false) {
             if (is_dir($this->text_dir."/".$file)) continue;
             $mtime=filemtime($this->text_dir."/".$file);
             $pagename= $this->keyToPagename($file);
  
  
  


1280808058;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv10482\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315548] fixed macro_TitleIndex() bugs.\n\n
wkpark      2010/08/03 13:00:58

  Modified:    .        wikilib.php
  Log:
  [#315548] fixed macro_TitleIndex() bugs.
  
  Revision  Changes    Path
  1.307     +28 -13    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.306
  retrieving revision 1.307
  diff -u -r1.306 -r1.307
  --- wikilib.php	2 Aug 2010 10:38:04 -0000	1.306
  +++ wikilib.php	3 Aug 2010 04:00:58 -0000	1.307
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.306 2010/08/02 10:38:04 wkpark Exp $
  +// $Id: wikilib.php,v 1.307 2010/08/03 04:00:58 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2138,6 +2138,9 @@
     $counter= $count;
   
     $max=sizeof($pages);
  +  if (empty($max))
  +    return '';
  +
     $number=min($max,$counter);
   
     $selected=array_rand($pages,$number);
  @@ -2677,9 +2680,9 @@
   }
   
   function _setpagekey(&$page,$k) {
  -  if (($p = strpos($k, '~'))!== false) {
  -    $g = ' ('.substr($k,0,$p).')';
  -    $page = substr($k, $p+1).$g;
  +  if (($p = strpos($k, '~'))) {
  +    $g = '('.trim(substr($k,0,$p)).')';
  +    $page = trim(substr($k, $p+1)).$g;
     } else {
       $page = $k;
     }
  @@ -2722,12 +2725,12 @@
       if ($key != $pkey) {
          $key=$pkey;
          $keys[]=$pkey;
  -       if (!preg_match('/'.$sel.'/i',$pkey)) continue;
  +       if (!preg_match('/^'.$sel.'/i',$pkey)) continue;
          if ($out !='') $out.="</ul>";
          $out.= "<a name='$key'></a><h3><a href='#top'>$key</a></h3>\n";
          $out.= "<ul>";
       }
  -    if (!preg_match('/'.$sel.'/i',$pkey)) continue;
  +    if (!preg_match('/^'.$sel.'/i',$pkey)) continue;
       #
   #    if ($DBInfo->use_titlecache and $cache->exists($page))
   #      $title=$cache->fetch($page);
  @@ -2749,19 +2752,31 @@
     $tlink='';
     if ($sel != '.?') {
       $tlink=$formatter->link_url($formatter->page->name,'?action=titleindex&amp;sec=');
  -    $keys[]='all';
     }
  +  $keys = array_unique($keys);
  +  sort($keys);
  +
  +  $rkeys = array_flip($keys);
  +  if (isset($rkeys['Others'])) {
  +    unset($rkeys['Others']);
  +    $keys = array_flip($rkeys);
  +    $keys[] = 'Others';
  +  }
  +  if (!empty($tlink))
  +    $keys[]='all';
  +
  +  $index = array();
     foreach ($keys as $key) {
  -    $name=$key;
  +    $name = strval($key);
       $tag='#'.$key;
       $link=!empty($tlink) ? preg_replace('/sec=/','sec='._urlencode($key),$tlink):'';
  -    if ($key == 'Others') $name=_("Others");
  -    else if ($key == 'all') $name=_("Show all");
  -    $index.= "| <a href='$link$tag'>$name</a> ";
  +    if ($name == 'Others') $name=_("Others");
  +    else if ($name == 'all') $name=_("Show all");
  +    $index[] = "<a href='$link$tag'>$name</a>";
     }
  -  $index[0]=" ";
  +  $str = implode(' | ', $index);
     
  -  return "<center><a name='top'></a>$index</center>\n$out";
  +  return "<center><a name='top'></a>$str</center>\n$out";
   }
   
   
  
  
  


1280982180;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv4698\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315528]\n * $fastsearch_limit option added\n * _match() method added to the Indexer_DBA class\n * set $use_stemming=0 by default.\n\n
1280982180;wkpark;Update of /cvsroot/moniwiki/moniwiki/lib\nIn directory kill.kldp.net:/tmp/cvs-serv4698/lib\n\nModified Files:\n	indexer.DBA.php \nLog Message:\n[#315528]\n * $fastsearch_limit option added\n * _match() method added to the Indexer_DBA class\n * set $use_stemming=0 by default.\n\n
1280982180;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv4698/plugin\n\nModified Files:\n	FastSearch.php \nLog Message:\n[#315528]\n * $fastsearch_limit option added\n * _match() method added to the Indexer_DBA class\n * set $use_stemming=0 by default.\n\n
wkpark      2010/08/05 13:23:01

  Modified:    .        wikilib.php
               lib      indexer.DBA.php
               plugin   FastSearch.php
  Log:
  [#315528]
   * $fastsearch_limit option added
   * _match() method added to the Indexer_DBA class
   * set $use_stemming=0 by default.
  
  Revision  Changes    Path
  1.308     +9 -23     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.307
  retrieving revision 1.308
  diff -u -r1.307 -r1.308
  --- wikilib.php	3 Aug 2010 04:00:58 -0000	1.307
  +++ wikilib.php	5 Aug 2010 04:23:00 -0000	1.308
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.307 2010/08/03 04:00:58 wkpark Exp $
  +// $Id: wikilib.php,v 1.308 2010/08/05 04:23:00 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -332,28 +332,17 @@
       $raw = preg_replace("/\b/", ' ', $raw);
       //$raw=preg_replace("/\b([0-9a-zA-Z'\"])\\1+\s*/",' ',$raw);
   
  -    // split words
  -    $words = preg_split("/[\s\n\x{3000}]+/u", trim($raw));
  +    // split hangul syllable bloundries
  +    $raw = preg_replace('/([\x{AC00}-\x{D7AF}]+)/u', " \\1 ", $raw);
   
  -    // dokuwiki like indexing except Hangul Sylables XXX
  -    $words = array_unique($words);
  -    $new_words = array();
  -    foreach ($words as $k=>&$word) {
  -	if (empty($word)) continue;
  -    	if (preg_match('/[^0-9A-Za-z]/u', $word)) {
  -	    $ws = preg_split('/([^\x{AC00}-\x{D7AF}])/u', $word, -1,  PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
  -            if (count($ws) > 1) {
  -                unset($words[$k]);
  -                foreach ($ws as $w) {
  -                    $new_words[] = $w;
  -                }
  -            }
  -	}
  -    }
  -    $words = array_merge($words, $new_words);
  +    // split ASCII punctuation boundries U+00A0 ~ U+00BF
  +    // split General punctuation boundries U+2000 ~ U+206F
  +    // split CJK punctuation boundries U+3001 ~ U+303F
  +    $words = preg_split("/[\s\n\x{A0}-\x{BF}\x{3000}\x{3001}-\x{303F}\x{2000}-\x{206F}]+/u", trim($raw));
   
  +    $words = array_unique($words);
       asort($words);
  -    return array_unique($words);
  +    return $words;
   }
   
   function log_referer($referer,$page) {
  @@ -2648,9 +2637,6 @@
       }
       return 'Others';
     } else {
  -    if (preg_match('/[a-z0-9]/i',$name[0])) {
  -      return strtoupper($name[0]);
  -    }
       # if php does not support iconv(), EUC-KR assumed
       if (strtolower($DBInfo->charset) == 'euc-kr') {
         $korean=array( // Ga,GGa,Na,Da,DDa,...
  
  
  
  1.6       +99 -15    moniwiki/lib/indexer.DBA.php
  
  Index: indexer.DBA.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/indexer.DBA.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- indexer.DBA.php	2 Aug 2010 09:34:52 -0000	1.5
  +++ indexer.DBA.php	5 Aug 2010 04:23:00 -0000	1.6
  @@ -5,7 +5,7 @@
   //
   // initial version from http://www.heddley.com/edd/php/search.html
   // heavily modified to adopt to the MoniWiki 2003/07/19 by wkpark
  -// $Id: indexer.DBA.php,v 1.5 2010/08/02 09:34:52 wkpark Exp $
  +// $Id: indexer.DBA.php,v 1.6 2010/08/05 04:23:00 wkpark Exp $
   
   class Indexer_dba {
       var $db = null;
  @@ -15,7 +15,7 @@
   
       var $dbname = ''; // db file name
       var $prefix = '';
  -    var $use_stemming = 1; // 0: noop / 1: fake stemming / 2: using KoreanStemmer 
  +    var $use_stemming = 0; // 0: noop / 1: fake stemming / 2: using KoreanStemmer 
   
       function Indexer_dba($arena,$mode='r',$type, $prefix = '') {
           global $DBInfo;
  @@ -33,7 +33,7 @@
   
           // check updated db file.
           if (empty($prefix) and file_exists($this->index_dir.'/'.$arena.'.new.db')) {
  -            if (filemtime($this->index_dir.'/'.$arena.'.new.db') > filemtime($this->dbname)) {
  +            if (!file_exists($this->dbname) or filemtime($this->index_dir.'/'.$arena.'.new.db') > filemtime($this->dbname)) {
                   touch($this->dbname);
                   $tmpname = '.tmp_'.time();
                   copy($this->index_dir.'/'.$arena.'.new.db', $this->dbname.$tmpname);
  @@ -53,10 +53,10 @@
       }
   
       function getPageID($pagename) {
  -        if (!$this->exists('!?'.$pagename))
  +        if (!$this->exists('?!'.$pagename))
               return $this->_getNewID($pagename);
   
  -        $pkey = dba_fetch('!?'.$pagename,$this->db);
  +        $pkey = dba_fetch('?!'.$pagename,$this->db);
           $pkey = unpack($this->type.'1'.$this->type, $pkey);
           return $pkey[$this->type];
       }
  @@ -93,19 +93,18 @@
           $pkey=$nkey=$this->_current();
           $type=$this->type;
           // Map key to this filename
  -        dba_insert('!?' . $pagename, pack($this->type, $pkey), $this->db);
  +        dba_insert('?!' . $pagename, pack($this->type, $pkey), $this->db);
           dba_insert('!?' . pack($this->type, $pkey), $pagename, $this->db);
           $nkey++; if ($nkey % 256 == 0) { $nkey++; }
           dba_replace('!!',$nkey,$this->db);
           return $pkey;
       }
   
  -    function _getIndexWords($string, &$words) {
  -        if (empty($string)) return false;
   
  +    function _fakeIndexWords($string, &$words) {
           if (preg_match('/^[\x{AC00}-\x{D7AF}]+$/u', $string)) { // XXX
               // split into single chars
  -	    $chars = preg_split('//u', $string, -1, PREG_SPLIT_NO_EMPTY);
  +            $chars = preg_split('//u', $string, -1, PREG_SPLIT_NO_EMPTY);
   
               // make fake words for indexing
               // Please see MoniWiki:FastSearchMacro, MoniWiki:FullTextIndexer
  @@ -123,6 +122,22 @@
           return false;
       }
   
  +    function _chunkWords($string, &$words, $all = true) {
  +        // dokuwiki like indexing
  +        if (!$all) // except hangul syllables
  +	    $ws = preg_split('/([^\x{AC00}-\x{D7AF}])/u', $string, -1,  PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
  +        else
  +	    $ws = preg_split('//u', $string, -1,  PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
  +
  +        if (count($ws) > 1) {
  +            foreach ($ws as $w) {
  +                $words[] = $w;
  +            }
  +            return true;
  +        }
  +        return false;
  +    }
  +
       function _stemmingWords($words) {
           static $indexer = null;
           if ($this->use_stemming > 1) {
  @@ -145,8 +160,14 @@
           }
   
           $new_words = array();
  -        foreach ($words as $word) {
  -            $this->_getIndexWords($word, $new_words);
  +        foreach ($words as $k=>$word) {
  +            if (!isset($word[0])) continue;
  +
  +            if (preg_match('/[^0-9A-Za-z]/u', $word)) {
  +                //$ret = $this->_fakeIndexWords($word, $new_words);
  +                $ret = $this->_chunkWords($word, $new_words, true);
  +                if ($ret) unset($words[$k]); // XXX
  +            }
           }
           $words = array_unique(array_merge($words, $new_words));
           return $words;
  @@ -257,18 +278,18 @@
       }
   
       function deletePage($pagename) {
  -        if (dba_exists('!?'.$pagename, $this->db)) {
  -            $key = dba_fetch('!?'.$pagename, $this->db);
  +        if (dba_exists('?!'.$pagename, $this->db)) {
  +            $key = dba_fetch('?!'.$pagename, $this->db);
               $keyval = unpack($this->type.'1'.$this->type, $key);
               dba_delete('!?'.$key, $this->db);
  -            dba_delete('!?'.$pagename, $this->db);
  +            dba_delete('?!'.$pagename, $this->db);
               return true;
           }
           return false;
       }
   
       function hasPage($pagename) {
  -        if (dba_exists('!?'.$pagename, $this->db))
  +        if (dba_exists('?!'.$pagename, $this->db))
               return true;
   
           return false;
  @@ -312,6 +333,69 @@
               }
           }
       }
  +
  +    function title() {
  +        $count = 0;
  +        for ($k = dba_firstkey($this->db); $k !== false; $k = dba_nextkey($this->db)) {
  +            if (isset($k[2]) and $k[0] == '?' and $k[1] == '!') {
  +                $count++;
  +                print substr($k,2)."\n";
  +            }
  +        }
  +        #print 'Total '.$count."\n";
  +    }
  +
  +    // store same length words to '??<length>' key to search all words.
  +    function packWords() {
  +        $words = array();
  +        for ($k = dba_firstkey($this->db); $k !== false; $k = dba_nextkey($this->db)) {
  +            if (isset($k[0]) and $k[0] != '!' and $k[0] != '?') {
  +                // is it UTF-8 3-bytes ? FIXME
  +                //if (preg_match('/^([\xe0-\xef][\x80-\xbf]{2})+$/', $k)) {
  +                if (preg_match('/[^a-zA-Z0-9]/u', $k)) {
  +                    $len = mb_strlen($k, 'UTF-8'); // FIXME
  +                    $words[$len] .= $k."\n";
  +                }
  +            }
  +        }
  +
  +        foreach ($words as $len=>$w) {
  +            // XXX debug
  +            // file_put_contents($this->index_dir.'/'.$this->arena.'.w'.$len.'.txt' , $words[$len]);
  +            if (dba_exists('??'.$len, $this->db)) {
  +                dba_replace('??'.$len, $w, $this->db);
  +            } else {
  +                dba_insert('??'.$len, $w, $this->db);
  +            }
  +        }
  +    }
  +
  +    // match word individually - slow slow
  +    function _match($word) {
  +        $words = array();
  +        for ($k = dba_firstkey($this->db); $k !== false; $k = dba_nextkey($this->db)) {
  +            if (isset($k[0]) and $k[0] != '?' and $k[0] != '!' and preg_match('@'.$word.'@', $k)) {
  +                $words[] = $k;
  +            }
  +        }
  +        return $words;
  +    }
  +
  +    // faster than _match()
  +    function _search($word) {
  +        $words = array();
  +        $len = mb_strlen($word, 'UTF-8'); // FIXME
  +        for (; $len < 20; $len++) {
  +            if (dba_exists('??'.$len, $this->db)) {
  +                $content = dba_fetch('??'.$len, $this->db);
  +                preg_match_all('@^.*'.$word.'.*$@m', $content, $match);
  +                if (isset($match[0])) {
  +                    foreach ($match[0] as $m) $words[] = $m;
  +                }
  +            }
  +        }
  +        return $words;
  +    }
   }
   
   // vim:et:sts=4:sw=4:
  
  
  
  1.17      +67 -31    moniwiki/plugin/FastSearch.php
  
  Index: FastSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FastSearch.php,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- FastSearch.php	29 Jul 2010 15:51:12 -0000	1.16
  +++ FastSearch.php	5 Aug 2010 04:23:00 -0000	1.17
  @@ -9,17 +9,19 @@
   // the indexer engine is a perl program, slightly modified by wkpark
   // the lookup script also imported and modified.
   //
  -// a FasetSearch plugin using a index.db for the MoniWiki
  +// a FasetSearch plugin for the MoniWiki
   //
   // Usage: [[FastSearch(string)]]
   //
  -// $Id: FastSearch.php,v 1.16 2010/07/29 15:51:12 wkpark Exp $
  +// $Id: FastSearch.php,v 1.17 2010/08/05 04:23:00 wkpark Exp $
   
   include_once('lib/indexer.DBA.php');
   
   function macro_FastSearch($formatter,$value="",&$opts) {
     global $DBInfo;
   
  +  $default_limit = isset($DBInfo->fastsearch_limit) ? $DBInfo->fastsearch_limit : 30;
  +
     if ($value === true) {
       $needle = $value = $formatter->page->name;
     } else {
  @@ -51,7 +53,8 @@
     $DB=new Indexer_dba('fullsearch',"r",$DBInfo->dba_type);
     if ($DB->db==null) {
       $opts['msg']=_("Couldn't open search database, sorry.");
  -    $opts['hits']= 0;
  +    $opts['hits']= array();
  +    $opts['hit']= 0;
       $opts['all']= 0;
       return '';
     }
  @@ -59,10 +62,19 @@
   
     $words = getTokens($value);
     // $words=explode(' ', strtolower($value));
  -  $keys='';
  -  $idx=array();
  +
  +  $idx = array();
  +  $new_words = array();
  +  foreach ($words as $word) {
  +    $new_words = array_merge($idx,$DB->_search($word));
  +  }
  +  $words = array_merge($words, $new_words);
  +
  +  //
  +  $word = array_shift($words);
  +  $idx = $DB->_fetchValues($word);
     foreach ($words as $word) {
  -    $idx=array_merge($idx,$DB->_fetchValues($word));
  +    $idx = array_merge($idx, $DB->_fetchValues($word)); // FIXME
     }
   
     //arsort($idx);
  @@ -73,31 +85,34 @@
     $pages=array();
     foreach ($idx as $id) {
       $key= $DB->_fetch($id);
  -    $pages[]=$key;
  +    $pages[$id]=$key;
       #print $key.'<br />';
     }
     $DB->close();
   
  -  $pages = array_unique($pages);
  -  usort($pages, 'strcasecmp');
  -
  -  $hits=array();
  +  $hits = array();
   
     $context = !empty($opts['context']) ? $opts['context'] : 0;
  +  $limit = isset($opts['limit'][0]) ? $opts['limit'] : $default_limit;
     $contexts = array();
   
  -  foreach ($pages as $key) {
  -    $page_name = $key;
  -    $p = new WikiPage($page_name);
  -    if (!$p->exists()) continue;
  -
  -    $body= $p->_get_raw_body();
  -    $count = preg_match_all($pattern, $body,$matches);
  -    if ($count) {
  -      $hits[$page_name] = $count;
  -      # search matching contexts
  -      $contexts[$page_name] = find_needle($body,$needle,'',$context);
  +  $idx = 1;
  +  foreach ($pages as $page_name) {
  +    $count = 0;
  +    if (empty($limit) or $idx <= $limit) {
  +      $p = new WikiPage($page_name);
  +      if (!$p->exists()) continue;
  +      $body = $p->_get_raw_body();
  +      $count = preg_match_all($pattern, $body,$matches);
  +
  +      if ($context) {
  +        # search matching contexts
  +        $contexts[$page_name] = find_needle($body,$needle,'',$context);
  +      }
       }
  +    #$hits[strval($page_name)] = $count; // XXX hack for numberd pages
  +    $hits['_'.$page_name] = $count; // XXX hack for numberd pages
  +    $idx++;
     }
   
     //uasort($hits, 'strcasecmp');
  @@ -106,31 +121,41 @@
     $name = array_keys($hits);
     array_multisort($hits, SORT_DESC, $name, SORT_ASC);
   
  +  $opts['hits']= $hits;
  +  $opts['hit']= count($hits);
  +  $opts['all']= $all_count;
  +  if (!empty($opts['call'])) return $hits;
  +
     $out = "<!-- RESULT LIST START -->"; // for search plugin
     $out.= "<ul>";
  -  reset($hits);
     $idx=1;
     while (list($page_name, $count) = each($hits)) {
  +    $page_name = substr($page_name, 1);
       $out.= '<!-- RESULT ITEM START -->'; // for search plugin
       $out.= '<li>'.$formatter->link_tag(_rawurlencode($page_name),
             "?action=highlight&amp;value="._urlencode($needle),
             $page_name,"tabindex='$idx'");
  -    $out.= ' . . . . ' . $count . (($count == 1) ? _(" match") : _(" matches"));
  -    $out.= $contexts[$page_name];
  +    if ($count) {
  +      $out.= ' . . . . ' . $count . (($count == 1) ? _(" match") : _(" matches"));
  +      $out.= $contexts[$page_name];
  +    }
       $out.= "</li>\n";
       $out.= '<!-- RESULT ITEM END -->'; // for search plugin
       $idx++;
  +
  +    if (!empty($limit) and $idx > $limit)
  +      break;
     }
     $out.= "</ul>\n";
     $out.= "<!-- RESULT LIST END -->"; // for search plugin
   
  -  $opts['hits']= count($hits);
  -  $opts['all']= $all_count;
     return $out;
   }
   
   function do_fastsearch($formatter,$options) {
  +  global $DBInfo;
   
  +  $default_limit = isset($DBInfo->fastsearch_limit) ? $DBInfo->fastsearch_limit : 30;
     $ret=$options;
   
     $title= sprintf(_("Full text search for \"%s\""), $options['value']);
  @@ -143,11 +168,22 @@
       print $ret['form'];
     print $out;
   
  -  if ($options['value'])
  -    printf(_("Found %s matching %s out of %s total pages")."<br />",
  -         $ret['hits'],
  -        ($ret['hits'] == 1) ? _("page") : _("pages"),
  +  $context = !empty($options['context']) ? $options['context'] : 0;
  +  $limit = isset($options['limit'][0]) ? $options['limit'] : $default_limit;
  +  $cont = '';
  +  if ($context)
  +    $cont = '&amp;context='.$context;
  +
  +  if ($options['value']) {
  +    printf(_("Found %s matching %s out of %s total pages")."<br />\n",
  +         $ret['hit'],
  +        ($ret['hit'] == 1) ? _("page") : _("pages"),
            $ret['all']);
  +
  +    if (!empty($limit) and $ret['hits'] > $limit)
  +      echo $formatter->link_to("?action=fastsearch&amp;value=$options[value]&amp;limit=0".$cont,
  +        sprintf(_("Show all %d results"), $ret['hit']))."<br />\n";
  +  }
     $args['noaction']=1;
     $formatter->send_footer($args,$options);
   }
  
  
  


1281023507;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv7079/plugin\n\nModified Files:\n	FastSearch.php \nLog Message:\n[#315557] do not use getPageLists() to get the number of pages.\nloosly count hits for all pages initially and retry to count matches only for limitted pages.\n\n
wkpark      2010/08/06 00:51:47

  Modified:    plugin   FastSearch.php
  Log:
  [#315557] do not use getPageLists() to get the number of pages.
  loosly count hits for all pages initially and retry to count matches only for limitted pages.
  
  Revision  Changes    Path
  1.18      +21 -22    moniwiki/plugin/FastSearch.php
  
  Index: FastSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FastSearch.php,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- FastSearch.php	5 Aug 2010 04:23:00 -0000	1.17
  +++ FastSearch.php	5 Aug 2010 15:51:47 -0000	1.18
  @@ -13,7 +13,7 @@
   //
   // Usage: [[FastSearch(string)]]
   //
  -// $Id: FastSearch.php,v 1.17 2010/08/05 04:23:00 wkpark Exp $
  +// $Id: FastSearch.php,v 1.18 2010/08/05 15:51:47 wkpark Exp $
   
   include_once('lib/indexer.DBA.php');
   
  @@ -74,44 +74,43 @@
     $word = array_shift($words);
     $idx = $DB->_fetchValues($word);
     foreach ($words as $word) {
  -    $idx = array_merge($idx, $DB->_fetchValues($word)); // FIXME
  +    $ids = $DB->_fetchValues($word); // FIXME
  +    foreach ($ids as $id) $idx[] = $id;
     }
   
  +  $init_hits = array_count_values($idx); // initial hits
  +  $idx = array_keys($init_hits);
  +
     //arsort($idx);
  -  $all_pages = $DBInfo->getPageLists();
  -  $all_count = count($all_pages);
  -  unset($all_pages);
  +  $all_count = $DBInfo->getCounter();
   
  -  $pages=array();
  +  $pages = array();
  +  $hits = array();
     foreach ($idx as $id) {
       $key= $DB->_fetch($id);
       $pages[$id]=$key;
  -    #print $key.'<br />';
  +    $hits['_'.$key] = $init_hits[$id]; // HACK. prefix '_' to numerical named pages
     }
     $DB->close();
   
  -  $hits = array();
  -
     $context = !empty($opts['context']) ? $opts['context'] : 0;
     $limit = isset($opts['limit'][0]) ? $opts['limit'] : $default_limit;
     $contexts = array();
   
     $idx = 1;
     foreach ($pages as $page_name) {
  -    $count = 0;
  -    if (empty($limit) or $idx <= $limit) {
  -      $p = new WikiPage($page_name);
  -      if (!$p->exists()) continue;
  -      $body = $p->_get_raw_body();
  -      $count = preg_match_all($pattern, $body,$matches);
  -
  -      if ($context) {
  -        # search matching contexts
  -        $contexts[$page_name] = find_needle($body,$needle,'',$context);
  -      }
  +    if (!empty($limit) and $idx > $limit) break;
  +
  +    $p = new WikiPage($page_name);
  +    if (!$p->exists()) continue;
  +    $body = $p->_get_raw_body();
  +    $count = preg_match_all($pattern, $body,$matches); // more precisely count matches
  +
  +    if ($context) {
  +      # search matching contexts
  +      $contexts[$page_name] = find_needle($body,$needle,'',$context);
       }
  -    #$hits[strval($page_name)] = $count; // XXX hack for numberd pages
  -    $hits['_'.$page_name] = $count; // XXX hack for numberd pages
  +    $hits['_'.$page_name] = $count; // XXX hack for numerical named pages
       $idx++;
     }
   
  
  
  


1281023850;wkpark;Update of /cvsroot/moniwiki/moniwiki/lib\nIn directory kill.kldp.net:/tmp/cvs-serv8226/lib\n\nModified Files:\n	indexer.DBA.php \nLog Message:\n[#315557] save the number of pages separatly\nuse indexer to speed up the RandomPage plugin.\n\n
1281023850;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv8226\n\nModified Files:\n	wikilib.php wiki.php \nLog Message:\n[#315557] save the number of pages separatly\nuse indexer to speed up the RandomPage plugin.\n\n
wkpark      2010/08/06 00:57:31

  Modified:    lib      indexer.DBA.php
               .        wikilib.php wiki.php
  Log:
  [#315557] save the number of pages separatly
  use indexer to speed up the RandomPage plugin.
  
  Revision  Changes    Path
  1.7       +4 -3      moniwiki/lib/indexer.DBA.php
  
  Index: indexer.DBA.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/indexer.DBA.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- indexer.DBA.php	5 Aug 2010 04:23:00 -0000	1.6
  +++ indexer.DBA.php	5 Aug 2010 15:57:30 -0000	1.7
  @@ -5,7 +5,7 @@
   //
   // initial version from http://www.heddley.com/edd/php/search.html
   // heavily modified to adopt to the MoniWiki 2003/07/19 by wkpark
  -// $Id: indexer.DBA.php,v 1.6 2010/08/05 04:23:00 wkpark Exp $
  +// $Id: indexer.DBA.php,v 1.7 2010/08/05 15:57:30 wkpark Exp $
   
   class Indexer_dba {
       var $db = null;
  @@ -45,7 +45,7 @@
               if (($this->db=@dba_open($this->dbname, 'n',$type)) === false)
                   return false;
               // startkey==256
  -            dba_insert('!!',256,$this->db);
  +            dba_insert('!!', 1,$this->db);
               dba_sync($this->db);
           }
           register_shutdown_function(array(&$this,'close'));
  @@ -95,7 +95,8 @@
           // Map key to this filename
           dba_insert('?!' . $pagename, pack($this->type, $pkey), $this->db);
           dba_insert('!?' . pack($this->type, $pkey), $pagename, $this->db);
  -        $nkey++; if ($nkey % 256 == 0) { $nkey++; }
  +        $nkey++;
  +        // if ($nkey % 256 == 0) { $nkey++; }
           dba_replace('!!',$nkey,$this->db);
           return $pkey;
       }
  
  
  
  1.309     +37 -13    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.308
  retrieving revision 1.309
  diff -u -r1.308 -r1.309
  --- wikilib.php	5 Aug 2010 04:23:00 -0000	1.308
  +++ wikilib.php	5 Aug 2010 15:57:30 -0000	1.309
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.308 2010/08/05 04:23:00 wkpark Exp $
  +// $Id: wikilib.php,v 1.309 2010/08/05 15:57:30 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2104,17 +2104,24 @@
   
   function do_RandomPage($formatter,$options='') {
     global $DBInfo;
  -  $pages= $DBInfo->getPageLists();
  -  $max=sizeof($pages)-1;
  -  $rand=rand(0,$max);
  -  $options['value']=$pages[$rand];
  +
  +  $max = $DBInfo->getCounter();
  +  $rand = rand(1,$max);
  +  if (!empty($DBInfo->use_indexer)) {
  +    require_once("lib/indexer.DBA.php");
  +    $indexer = new Indexer_DBA('fullsearch', 'r', $DBInfo->dba_type);
  +    $page = $indexer->_fetch($rand);
  +    $options['value'] = $page;
  +  } else {
  +    $pages = $DBInfo->getPageLists();
  +    $options['value'] = $pages[$rand - 1];
  +  }
     do_goto($formatter,$options);
     return;
   }
   
   function macro_RandomPage($formatter,$value='') {
     global $DBInfo;
  -  $pages = $DBInfo->getPageLists();
   
     $test=preg_match("/^(\d+)\s*,?\s?(simple|nobr)?$/",$value,$match);
     $count = '';
  @@ -2126,19 +2133,36 @@
     if ($count <= 0) $count=1;
     $counter= $count;
   
  -  $max=sizeof($pages);
  +  $max = $DBInfo->getCounter();
  +
     if (empty($max))
       return '';
   
     $number=min($max,$counter);
   
  -  $selected=array_rand($pages,$number);
  -
  -  if ($number==1)
  -    $selected=array($selected);
  +  // select pages
  +  $selected = array();
  +  for ($i = 0; $i < $number; $i++) {
  +    $selected[] = rand(1, $max);   
  +  }
  +  $selected = array_unique($selected);
  +
  +  $sel_pages = array();
  +  if (!empty($DBInfo->use_indexer)) {
  +    require_once("lib/indexer.DBA.php");
  +    $indexer = new Indexer_DBA('fullsearch', 'r', $DBInfo->dba_type);
  +    foreach ($selected as $idx) {
  +      $sel_pages[] = $indexer->_fetch($idx);
  +    }
  +  } else {
  +    $all_pages = $DBInfo->getPageLists();
  +    foreach ($selected as $idx) {
  +      $sel_pages[] = $all_pages[$idx - 1]; 
  +    }
  +  }
   
  -  foreach ($selected as $idx) {
  -    $item=$pages[$idx];
  +  $selects = array();
  +  foreach ($sel_pages as $item) {
       $selects[]=$formatter->link_tag(_rawurlencode($item),"",htmlspecialchars($item));
     }
   
  
  
  
  1.538     +6 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.537
  retrieving revision 1.538
  diff -u -r1.537 -r1.538
  --- wiki.php	3 Aug 2010 03:47:31 -0000	1.537
  +++ wiki.php	5 Aug 2010 15:57:30 -0000	1.538
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.537 2010/08/03 03:47:31 wkpark Exp $
  +// $Id: wiki.php,v 1.538 2010/08/05 15:57:30 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.537 $',1,-1);
  +$_revision = substr('$Revision: 1.538 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -904,6 +904,7 @@
         }
         closedir($handle);
         $pc->update($pcid,serialize($pages));
  +      $pc->update('counter', count($pages));
         return $pages;
       } else if (!empty($options['limit'])) { # XXX
          while (($file = readdir($handle)) !== false) {
  @@ -951,6 +952,9 @@
     }
   
     function getCounter() {
  +    $pc = new Cache_text('pagelist');
  +    if ($pc->exists('counter'))
  +      return $pc->fetch('counter');
       return sizeof($this->getPageLists());
     }
   
  
  
  


1281065015;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv15195\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315557] cache titleindex to speed up\n\n
wkpark      2010/08/06 12:23:36

  Modified:    .        wikilib.php
  Log:
  [#315557] cache titleindex to speed up
  
  Revision  Changes    Path
  1.310     +84 -37    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.309
  retrieving revision 1.310
  diff -u -r1.309 -r1.310
  --- wikilib.php	5 Aug 2010 15:57:30 -0000	1.309
  +++ wikilib.php	6 Aug 2010 03:23:35 -0000	1.310
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.309 2010/08/05 15:57:30 wkpark Exp $
  +// $Id: wikilib.php,v 1.310 2010/08/06 03:23:35 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2703,44 +2703,102 @@
   
     $group=$formatter->group;
   
  -  $all_pages = array();
  -  if ($formatter->group) {
  -    $group_pages = $DBInfo->getLikePages($formatter->group);
  -    foreach ($group_pages as $page)
  -      $all_pages[]=str_replace($formatter->group,'',$page);
  -  } else
  -    $all_pages = $DBInfo->getPageLists();
  -
  -  #natcasesort($all_pages);
  -  #sort($all_pages,SORT_STRING);
  -  //usort($all_pages, 'strcasecmp');
  -  $pages = array_flip($all_pages);
  -  array_walk($pages,'_setpagekey');
  -  $all_pages = array_flip($pages);
  -  uksort($all_pages, 'strcasecmp');
  -
     $key=-1;
  -  $out="";
     $keys=array();
   
  -  if ($value=='' or $value=='all') $sel='.?';
  +  if ($value=='' or $value=='all') $sel='';
     else $sel=$value;
  -  if (@preg_match('/'.$sel.'/i','')===false) $sel='.?';
  +  if (@preg_match('/'.$sel.'/i','')===false) $sel='';
  +
  +  $titleindex = array();
   
  +  // cache titleindex
  +  $kc = new Cache_text('titleindex');
  +  // XXX
  +  if (filemtime($DBInfo->text_dir) < $kc->mtime('key') and $kc->exists('key')) {
  +    if ($formatter->group) {
  +      $keys = unserialize($kc->fetch('key.'.$formatter->group));
  +      $titleindex = unserialize($kc->fetch('titleindex.'.$formatter->group));
  +    } else {
  +      $keys = unserialize($kc->fetch('key'));
  +      $titleindex = unserialize($kc->fetch('titleindex'));
  +    }
  +    if (!empty($sel) and isset($titleindex[$sel])) {
  +      $all_pages = $titleindex[$sel];
  +    }
  +  }
  +
  +  if (empty($all_pages)) {
  +    $all_pages = array();
  +    if ($formatter->group) {
  +      $group_pages = $DBInfo->getLikePages($formatter->group);
  +      foreach ($group_pages as $page)
  +        $all_pages[]=str_replace($formatter->group,'',$page);
  +    } else
  +      $all_pages = $DBInfo->getPageLists();
  +
  +    #natcasesort($all_pages);
  +    #sort($all_pages,SORT_STRING);
  +    //usort($all_pages, 'strcasecmp');
  +    $pages = array_flip($all_pages);
  +    array_walk($pages,'_setpagekey');
  +    $all_pages = array_flip($pages);
  +    uksort($all_pages, 'strcasecmp');
  +  }
  +
  +  if (empty($keys) or empty($titleindex)) {
  +    foreach ($all_pages as $page=>$rpage) {
  +      $p = ltrim($page);
  +      $pkey = get_key("$p");
  +      if ($key != $pkey) {
  +        $key = $pkey;
  +        $keys[] = $pkey;
  +        if (!isset($titleindex[$pkey]))
  +          $titleindex[$pkey] = array();
  +      }
  +      $titleindex[$pkey][$page] = $rpage;
  +    }
  +
  +    $keys = array_unique($keys);
  +    sort($keys);
  +
  +    $rkeys = array_flip($keys);
  +    if (isset($rkeys['Others'])) {
  +      unset($rkeys['Others']);
  +      $keys = array_flip($rkeys);
  +      $keys[] = 'Others';
  +    }
  +    if (!empty($tlink))
  +      $keys[]='all';
  +
  +    if ($formatter->group) {
  +      $kc->update('key.'.$formatter->group, serialize($keys));
  +      $kc->update('titleindex.'.$formatter->group, serialize($titleindex));
  +    } else {
  +      $kc->update('key', serialize($keys));
  +      $kc->update('titleindex', serialize($titleindex));
  +    }
  +
  +    if (!empty($sel) and isset($titleindex[$sel]))
  +      $all_pages = $titleindex[$sel];
  +  }
  +
  +  //print count($all_pages);
  +  //exit;
  +  $out = '';
   #  if ($DBInfo->use_titlecache)
   #    $cache=new Cache_text('title');
     foreach ($all_pages as $page=>$rpage) {
       $p=ltrim($page);
       $pkey=get_key("$p");
       if ($key != $pkey) {
  -       $key=$pkey;
  -       $keys[]=$pkey;
  -       if (!preg_match('/^'.$sel.'/i',$pkey)) continue;
  -       if ($out !='') $out.="</ul>";
  +       $key = $pkey;
  +       if (!empty($sel) and !preg_match('/^'.$sel.'/i',$pkey)) continue;
  +       if (!empty($out)) $out.="</ul>";
          $out.= "<a name='$key'></a><h3><a href='#top'>$key</a></h3>\n";
          $out.= "<ul>";
       }
  -    if (!preg_match('/^'.$sel.'/i',$pkey)) continue;
  +    if (!empty($sel) and !preg_match('/^'.$sel.'/i',$pkey)) continue;
       #
   #    if ($DBInfo->use_titlecache and $cache->exists($page))
   #      $title=$cache->fetch($page);
  @@ -2760,20 +2818,9 @@
   
     $index='';
     $tlink='';
  -  if ($sel != '.?') {
  +  if (!empty($sel)) {
       $tlink=$formatter->link_url($formatter->page->name,'?action=titleindex&amp;sec=');
     }
  -  $keys = array_unique($keys);
  -  sort($keys);
  -
  -  $rkeys = array_flip($keys);
  -  if (isset($rkeys['Others'])) {
  -    unset($rkeys['Others']);
  -    $keys = array_flip($rkeys);
  -    $keys[] = 'Others';
  -  }
  -  if (!empty($tlink))
  -    $keys[]='all';
   
     $index = array();
     foreach ($keys as $key) {
  
  
  


1281069328;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv23278\n\nModified Files:\n	wiki.php \nLog Message:\n[#315561] support ["Page Name" Hello World] syntax.\n[[Page Name]] is now regarded as ["Page Name"]\n\n
wkpark      2010/08/06 13:35:28

  Modified:    .        wiki.php
  Log:
  [#315561] support ["Page Name" Hello World] syntax.
  [[Page Name]] is now regarded as ["Page Name"]
  
  Revision  Changes    Path
  1.539     +14 -4     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.538
  retrieving revision 1.539
  diff -u -r1.538 -r1.539
  --- wiki.php	5 Aug 2010 15:57:30 -0000	1.538
  +++ wiki.php	6 Aug 2010 04:35:28 -0000	1.539
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.538 2010/08/05 15:57:30 wkpark Exp $
  +// $Id: wiki.php,v 1.539 2010/08/06 04:35:28 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.538 $',1,-1);
  +$_revision = substr('$Revision: 1.539 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -1994,7 +1994,7 @@
       #  * single bracketted words [Hello World] etc.
       #  * single bracketted words with double quotes ["Hello World"]
       #  * double bracketted words with double quotes [["Hello World"]]
  -    "(?<!\[)\!?\[(\[)$single(\")?(?:[^\[\]\",<\s'][^\[\],>]{0,255}[^\"])(?(4)\")(?(3)\])\](?!\])";
  +    "(?<!\[)\!?\[(\[)$single(\")?(?:[^\[\]\",<\s'][^\[\],>]{0,255}[^\"])(?(4)\"(?:[^\"]*))(?(3)\])\](?!\])";
   
       if ($camelcase)
         $this->wordrule.='|'.
  @@ -2336,6 +2336,12 @@
         return $this->macro_repl($url); # No link
       case '[':
         $url=substr($url,1,-1);
  +
  +      preg_match("/^([A-Za-z0-9]+)(\((.*)\))?$/",$url,$match); // is it macro ?
  +      if (empty($match)) {
  +        if ($url[0] != '"') $url = '"'.$url.'"';
  +        return $this->word_repl($url);
  +      }
         return $this->macro_repl($url); # No link
         break;
       case '$':
  @@ -2901,7 +2907,11 @@
         (!empty($this->mid) ? ++$this->mid:1);
   
       preg_match("/^([A-Za-z0-9]+)(\((.*)\))?$/",$macro,$match);
  -    if (empty($match)) return $this->word_repl($macro);
  +    if (empty($match)) {
  +      if ($macro[0] != '"')
  +        $macro = '"'.$macro.'"';
  +      return $this->word_repl($macro);
  +    }
       $bra='';$ket='';
       if (!empty($this->wikimarkup) and $macro != 'attachment' and empty($options['nomarkup'])) {
         $markups=str_replace(array('=','-','<'),array('==','-=','&lt;'),$macro);
  
  
  


1281071407;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv27527\n\nModified Files:\n	wiki.php \nLog Message:\n[#315562] support macro aliases\n\n
wkpark      2010/08/06 14:10:07

  Modified:    .        wiki.php
  Log:
  [#315562] support macro aliases
  
  Revision  Changes    Path
  1.540     +21 -20    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.539
  retrieving revision 1.540
  diff -u -r1.539 -r1.540
  --- wiki.php	6 Aug 2010 04:35:28 -0000	1.539
  +++ wiki.php	6 Aug 2010 05:10:06 -0000	1.540
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.539 2010/08/06 04:35:28 wkpark Exp $
  +// $Id: wiki.php,v 1.540 2010/08/06 05:10:06 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.539 $',1,-1);
  +$_revision = substr('$Revision: 1.540 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -2337,11 +2337,6 @@
       case '[':
         $url=substr($url,1,-1);
   
  -      preg_match("/^([A-Za-z0-9]+)(\((.*)\))?$/",$url,$match); // is it macro ?
  -      if (empty($match)) {
  -        if ($url[0] != '"') $url = '"'.$url.'"';
  -        return $this->word_repl($url);
  -      }
         return $this->macro_repl($url); # No link
         break;
       case '$':
  @@ -2902,16 +2897,29 @@
     }
   
     function macro_repl($macro,$value='',$options=array()) {
  +    preg_match("/^([^\(]+)(\((.*)\))?$/", $macro, $match);
  +    if (empty($value) and isset($match[2])) { #strpos($macro,'(') !== false)) {
  +      $name = $match[1];
  +      $args = empty($match[3]) ? true : $match[3];
  +    } else {
  +      $name = $macro;
  +      $args = $value;
  +    }
  +
  +    // check alias
  +    if (!preg_match('/^[A-Za-z0-9]+$/', $name)) {
  +      $myname = getPlugin($name);
  +      if (empty($myname)) {
  +        if ($macro[0] != '"') $macro = '"'.$macro.'"';
  +        return $this->word_repl($macro);
  +      }
  +      $name = $myname;
  +    }
  +
       // macro ID
       $this->mid=!empty($options['mid']) ? $options['mid']:
         (!empty($this->mid) ? ++$this->mid:1);
   
  -    preg_match("/^([A-Za-z0-9]+)(\((.*)\))?$/",$macro,$match);
  -    if (empty($match)) {
  -      if ($macro[0] != '"')
  -        $macro = '"'.$macro.'"';
  -      return $this->word_repl($macro);
  -    }
       $bra='';$ket='';
       if (!empty($this->wikimarkup) and $macro != 'attachment' and empty($options['nomarkup'])) {
         $markups=str_replace(array('=','-','<'),array('==','-=','&lt;'),$macro);
  @@ -2920,13 +2928,6 @@
         $ket= '</span>';
         $options['nomarkup']=1; // for the attachment macro
       }
  -    if (empty($value) and isset($match[2])) { #strpos($macro,'(') !== false)) {
  -      $name=$match[1];
  -      $args=empty($match[3]) ? true:$match[3];
  -
  -    } else {
  -      $name=$macro; $args=$value;
  -    }
   
       if (!function_exists ('macro_'.$name)) {
         $np = getPlugin($name);
  
  
  


1281071663;wkpark;Update of /cvsroot/moniwiki/moniwiki/imgs/interwiki\nIn directory kill.kldp.net:/tmp/cvs-serv31449/imgs/interwiki\n\nAdded Files:\n	nforge-16.png enha-16.png \nLog Message:\nenha, nforge interwiki icons added\n\n
wkpark      2010/08/06 14:14:23

  Added:       imgs/interwiki nforge-16.png enha-16.png
  Log:
  enha, nforge interwiki icons added
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/interwiki/nforge-16.png
  
  	<<Binary file>>
  
  
  1.1                  moniwiki/imgs/interwiki/enha-16.png
  
  	<<Binary file>>
  
  


1281087456;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv2105\n\nModified Files:\n	wiki.php config.php.default \nLog Message:\n[#315563] deactivate dokuwiki like ':' namespace. (this feature is experimental!)\n\n
wkpark      2010/08/06 18:37:36

  Modified:    .        wiki.php config.php.default
  Log:
  [#315563] deactivate dokuwiki like ':' namespace. (this feature is experimental!)
  
  Revision  Changes    Path
  1.541     +9 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.540
  retrieving revision 1.541
  diff -u -r1.540 -r1.541
  --- wiki.php	6 Aug 2010 05:10:06 -0000	1.540
  +++ wiki.php	6 Aug 2010 09:37:36 -0000	1.541
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.540 2010/08/06 05:10:06 wkpark Exp $
  +// $Id: wiki.php,v 1.541 2010/08/06 09:37:36 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.540 $',1,-1);
  +$_revision = substr('$Revision: 1.541 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -844,7 +844,10 @@
       $pn= preg_replace('#:+#',':',$pn);
   
       $pn= preg_replace("/([^a-z0-9:]{1})/ie","'_'.strtolower(dechex(ord(substr('\\1',-1))))",$pn);
  -    $name=preg_replace('#:#','.d/',$pn);
  +    if (!empty($this->use_namespace))
  +      $name=preg_replace('#:#','.d/',$pn);
  +    else
  +      $name = $pn;
       #$name=preg_replace("/([^a-z0-9]{1})/ie","'_'.strtolower(dechex(ord('\\1')))",$pagename);
       return $name;
     }
  @@ -877,7 +880,9 @@
     #  $pagename=preg_replace("/_([a-f0-9]{2})/","%\\1",$key);
     #  $pagename=str_replace("_","%",$key);
   
  -    $pagename=preg_replace('%\.d/%',':',$key);
  +    $pagename = $key;
  +    if (!empty($this->use_namespace))
  +      $pagename=preg_replace('%\.d/%',':',$key);
   
       $pagename=strtr($pagename,'_','%');
       return rawurldecode($pagename);
  
  
  
  1.57      +2 -1      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.56
  retrieving revision 1.57
  diff -u -r1.56 -r1.57
  --- config.php.default	5 Oct 2009 04:01:02 -0000	1.56
  +++ config.php.default	6 Aug 2010 09:37:36 -0000	1.57
  @@ -1,7 +1,7 @@
   <?php
   # This is a default 
   #
  -# $Id: config.php.default,v 1.56 2009/10/05 04:01:02 wkpark Exp $
  +# $Id: config.php.default,v 1.57 2010/08/06 09:37:36 wkpark Exp $
   #
   $sitename='UnnamedWiki'; # site name
   $data_dir= './data';
  @@ -279,3 +279,4 @@
   #$use_userlink=0; # replace the UserPreference link to the UserHomePage
   $use_local_translation=0; # automatic translation
   #$use_jsbutton=0; # use javascript fake buttons.
  +#$use_namespace=0; # support dokuwiki like namespace
  
  
  


1281103527;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv14807\n\nModified Files:\n	wiki.php \nLog Message:\n[#315561] more fix to support [[wiki:"Hello World" Hello]] syntax\n\n
wkpark      2010/08/06 23:05:27

  Modified:    .        wiki.php
  Log:
  [#315561] more fix to support [[wiki:"Hello World" Hello]] syntax
  
  Revision  Changes    Path
  1.542     +9 -8      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.541
  retrieving revision 1.542
  diff -u -r1.541 -r1.542
  --- wiki.php	6 Aug 2010 09:37:36 -0000	1.541
  +++ wiki.php	6 Aug 2010 14:05:26 -0000	1.542
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.541 2010/08/06 09:37:36 wkpark Exp $
  +// $Id: wiki.php,v 1.542 2010/08/06 14:05:26 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.541 $',1,-1);
  +$_revision = substr('$Revision: 1.542 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -2658,13 +2658,13 @@
       $nonexists='nonexists_'.$this->nonexists;
   
       $extended = false;
  -    if ($word[0]=='"') {
  +    if (($word[0] == '"' or $word[0] == 'w') and preg_match('/^(?:wiki\:)?((")?[^"]+\2)((\s+)?(.*))?$/', $word, $m)) {
         # ["extended wiki name"]
         # ["Hello World" Go to Hello]
  -      if (preg_match('/^((")?[^"]+\2)((\s+)?(.*))?$/',$word,$m)) {
  -        $word=substr($m[1],1,-1);
  -        if (isset($m[5])) $text=$m[5]; // text arg ignored
  -      }
  +      # [wiki:"Hello World" Go to Main]
  +      $word = substr($m[1], 1, -1);
  +      if (isset($m[5])) $text = $m[5]; // text arg ignored
  +
         $extended=true;
         $page=$word;
       } else
  @@ -2915,7 +2915,8 @@
       if (!preg_match('/^[A-Za-z0-9]+$/', $name)) {
         $myname = getPlugin($name);
         if (empty($myname)) {
  -        if ($macro[0] != '"') $macro = '"'.$macro.'"';
  +        if (($p = strpos('"', $macro)) !== false)
  +          $macro = '"'.$macro.'"';
           return $this->word_repl($macro);
         }
         $name = $myname;
  
  
  


1281108056;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv30108\n\nModified Files:\n	wiki.php \nLog Message:\n[#315564] set title attribute of anchors correctly\n\n
wkpark      2010/08/07 00:20:56

  Modified:    .        wiki.php
  Log:
  [#315564] set title attribute of anchors correctly
  
  Revision  Changes    Path
  1.543     +22 -16    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.542
  retrieving revision 1.543
  diff -u -r1.542 -r1.543
  --- wiki.php	6 Aug 2010 14:05:26 -0000	1.542
  +++ wiki.php	6 Aug 2010 15:20:56 -0000	1.543
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.542 2010/08/06 14:05:26 wkpark Exp $
  +// $Id: wiki.php,v 1.543 2010/08/06 15:20:56 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.542 $',1,-1);
  +$_revision = substr('$Revision: 1.543 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -2718,7 +2718,7 @@
           case -1:
             $title='';
             $tpage=urlencode($page);
  -          if ($tpage != $word) $title="title=\"$tpage\" ";
  +          if ($tpage != $word) $title="title=\"$page\" ";
             return "<a href='$url' $title$attr>$word</a>";
           case -2:
             return "<a href='$url' $attr>$word</a>".
  @@ -2735,7 +2735,7 @@
         $title='';
         $this->pagelinks[$page]=-1;
         $tpage=urlencode($page);
  -      if ($tpage != $word) $title="title=\"$tpage\" ";
  +      if ($tpage != $word) $title="title=\"$page\" ";
         return "<a href='$url' $title$attr>$word</a>";
       } else {
         if ($gpage and $DBInfo->hasPage($gpage)) {
  @@ -2782,8 +2782,10 @@
       }
     }
   
  -  function nonexists_simple($word,$url) {
  -    return "<a class='nonexistent nomarkup' href='$url' rel='nofollow'>?</a>$word";
  +  function nonexists_simple($word, $url, $page) {
  +    $title = '';
  +    if ($page != $word) $title = "title=\"$page\" ";
  +    return "<a class='nonexistent nomarkup' {$title}href='$url' rel='nofollow'>?</a>$word";
     }
   
     function nonexists_nolink($word,$url) {
  @@ -2791,19 +2793,23 @@
     }
   
     function nonexists_always($word,$url,$page) {
  -    $title='';
  -    if ($page != $word) $title="title=\"$page\" ";
  -    return "<a href='$url' $title rel='nofollow'>$word</a>";
  +    $title = '';
  +    if ($page != $word) $title = "title=\"$page\" ";
  +    return "<a href='$url' {$title}rel='nofollow'>$word</a>";
     }
   
  -  function nonexists_forcelink($word,$url) {
  -    return "<a class='nonexistent' rel='nofollow' href='$url'>$word</a>";
  +  function nonexists_forcelink($word, $url, $page) {
  +    $title = '';
  +    if ($page != $word) $title = "title=\"$page\" ";
  +    return "<a class='nonexistent' rel='nofollow' {$title}href='$url'>$word</a>";
     }
   
  -  function nonexists_fancy($word,$url) {
  +  function nonexists_fancy($word, $url, $page) {
       global $DBInfo;
  +    $title = '';
  +    if ($page != $word) $title = "title=\"$page\" ";
       if ($word[0]=='<' and preg_match('/^<[^>]+>/',$word))
  -      return "<a class='nonexistent' rel='nofollow' href='$url'>$word</a>";
  +      return "<a class='nonexistent' rel='nofollow' {$title}href='$url'>$word</a>";
       #if (preg_match("/^[a-zA-Z0-9\/~]/",$word))
       if (ord($word[0]) < 125) {
         $link=$word[0];
  @@ -2811,7 +2817,7 @@
           $link=strtok($word,';').';';$last=strtok('');
         } else
           $last=substr($word,1);
  -      return "<span><a class='nonexistent' rel='nofollow' href='$url'>$link</a>".$last.'</span>';
  +      return "<span><a class='nonexistent' rel='nofollow' {$title}href='$url'>$link</a>".$last.'</span>';
       }
       if (strtolower($DBInfo->charset) == 'utf-8')
         $utfword=$word;
  @@ -2826,9 +2832,9 @@
         }
         $tag=strtok($mbword,';').';'; $last=strtok('');
         if ($tag)
  -        return "<span><a class='nonexistent' rel='nofollow' href='$url'>$tag</a>".$last.'</span>';
  +        return "<span><a class='nonexistent' rel='nofollow' {$title}href='$url'>$tag</a>".$last.'</span>';
       }
  -    return "<a class='nonexistent nomarkup' rel='nofollow' href='$url'>?</a>$word";
  +    return "<a class='nonexistent nomarkup' rel='nofollow' {$title}href='$url'>?</a>$word";
     }
   
     function head_repl($depth,$head,&$headinfo,$attr='') {
  
  
  


1281108895;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv32525/plugin\n\nModified Files:\n	TwinPages.php \nLog Message:\ninit metadb\n\n
wkpark      2010/08/07 00:34:56

  Modified:    plugin   TwinPages.php
  Log:
  init metadb
  
  Revision  Changes    Path
  1.4       +2 -1      moniwiki/plugin/TwinPages.php
  
  Index: TwinPages.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/TwinPages.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TwinPages.php	6 Sep 2005 00:53:48 -0000	1.3
  +++ TwinPages.php	6 Aug 2010 15:34:55 -0000	1.4
  @@ -4,7 +4,7 @@
   // a TwinPages action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: TwinPages.php,v 1.3 2005/09/06 00:53:48 wkpark Exp $
  +// $Id: TwinPages.php,v 1.4 2010/08/06 15:34:55 wkpark Exp $
   
   function do_twinpages($formatter,$options) {
     global $DBInfo;
  @@ -12,6 +12,7 @@
     $formatter->send_header("",$options);
     $formatter->send_title(sprintf(_("TwinPages of %s"),$options['value']),"",$options);
   
  +  if (empty($DBInfo->metadb)) $DBInfo->initMetaDB();
     $twins=$DBInfo->metadb->getTwinPages($options['value'],2);
     if ($twins) {
       if (sizeof($twins) > 7) $twins[0]="\n".$twins[0];
  
  
  


1281145496;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv17180\n\nModified Files:\n	wiki.php \nLog Message:\n[#315561] check macro aliases at the link_repl() not at the macro_repl()\nmore unified support for the mediawiki / wikicreole style links.\n$mediawiki_style option added to support both wikicreole/mediawiki style links.\nwikicreole style (or moniwiki default) [[foo bar]] == [[FooBar]] or mediawiki style [[foo bar]] == ["foo bar"]\n\n
wkpark      2010/08/07 10:44:56

  Modified:    .        wiki.php
  Log:
  [#315561] check macro aliases at the link_repl() not at the macro_repl()
  more unified support for the mediawiki / wikicreole style links.
  $mediawiki_style option added to support both wikicreole/mediawiki style links.
  wikicreole style (or moniwiki default) [[foo bar]] == [[FooBar]] or mediawiki style [[foo bar]] == ["foo bar"]
  
  Revision  Changes    Path
  1.544     +35 -16    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.543
  retrieving revision 1.544
  diff -u -r1.543 -r1.544
  --- wiki.php	6 Aug 2010 15:20:56 -0000	1.543
  +++ wiki.php	7 Aug 2010 01:44:56 -0000	1.544
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.543 2010/08/06 15:20:56 wkpark Exp $
  +// $Id: wiki.php,v 1.544 2010/08/07 01:44:56 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.543 $',1,-1);
  +$_revision = substr('$Revision: 1.544 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -70,6 +70,13 @@
       }
     }
   
  +  // get predefined macros list
  +  $tmp = get_defined_functions();
  +  foreach ($tmp['user'] as $u) {
  +    if (preg_match('/^macro_(.*)$/', $u, $m))
  +      $plugins[strtolower($m[1])] = $m[1];
  +  }
  +
     if (!empty($plugins))
       $cp->update('plugins',serialize($plugins));
     if (!empty($DBInfo->myplugins) and is_array($DBInfo->myplugins))
  @@ -1824,6 +1831,7 @@
       $this->use_metadata=!empty($DBInfo->use_metadata) ? $DBInfo->use_metadata : 0;
       $this->use_smileys=$DBInfo->use_smileys;
       $this->use_namespace=!empty($DBInfo->use_namespace) ? $DBInfo->use_namespace : '';
  +    $this->mediawiki_style=!empty($DBInfo->mediawiki_style) ? 1 : '';
       $this->udb=&$DBInfo->udb;
       $this->user=&$DBInfo->user;
       $this->check_openid_url=!empty($DBInfo->check_openid_url) ? $DBInfo->check_openid_url : 0;
  @@ -1936,7 +1944,7 @@
         }
       }
   
  -    $this->footrule="\[\*[^\]]*\s[^\]]+\]";
  +    $this->footrule='\[\*?(?'.'>[^\[\]]+|(?R))*\]'; # XXX not exact regex
   
       $this->cache= new Cache_text("pagelinks");
       $this->bcache= new Cache_text("backlinks");
  @@ -1999,7 +2007,7 @@
       #  * single bracketted words [Hello World] etc.
       #  * single bracketted words with double quotes ["Hello World"]
       #  * double bracketted words with double quotes [["Hello World"]]
  -    "(?<!\[)\!?\[(\[)$single(\")?(?:[^\[\]\",<\s'][^\[\],>]{0,255}[^\"])(?(4)\"(?:[^\"]*))(?(3)\])\](?!\])";
  +    "(?<!\[)\!?\[(\[)$single(\")?(?:[^\[\]\",<\s'\*][^\[\],>]{0,255}[^\"])(?(4)\"(?:[^\"]*))(?(3)\])\](?!\])";
   
       if ($camelcase)
         $this->wordrule.='|'.
  @@ -2297,6 +2305,7 @@
     function link_repl($url,$attr='',$opts=array()) {
       $nm = 0;
       $force = 0;
  +    $double_bracket = false;
       if (is_array($url)) $url=$url[1];
       #if ($url[0]=='<') { echo $url;return $url;}
       $url=str_replace('\"','"',$url); // XXX
  @@ -2341,8 +2350,22 @@
         return $this->macro_repl($url); # No link
       case '[':
         $url=substr($url,1,-1);
  +      $double_bracket = true;
  +
  +      preg_match("/^([^\(:]+)(\((.*)\))?$/", $url, $match);
  +      if (!empty($match)) {
  +        if (isset($match[1])) {
  +          $name = $match[1];
  +        } else {
  +          $name = $url;
  +        }
  +
  +        // check alias
  +        $myname = getPlugin($name);
  +        if (!empty($myname))
  +          return $this->macro_repl($url); # No link
  +      }
   
  -      return $this->macro_repl($url); # No link
         break;
       case '$':
         #return processor_latex($this,"#!latex\n".$url);
  @@ -2487,7 +2510,9 @@
         return "<a class='externalLink' $attr href='$link' $this->external_target>$url</a>";
       } else {
         if ($url{0}=='?') {
  -          $url=substr($url,1);
  +        $url=substr($url,1);
  +      } else if (!empty($this->mediawiki_style) and $double_bracket and $url[0] != '"' and strpos($url, ' ') !== false) {
  +        $url = '"'.$url.'"';
         }
         return $this->word_repl($url,'',$attr);
       }
  @@ -2918,15 +2943,9 @@
       }
   
       // check alias
  -    if (!preg_match('/^[A-Za-z0-9]+$/', $name)) {
  -      $myname = getPlugin($name);
  -      if (empty($myname)) {
  -        if (($p = strpos('"', $macro)) !== false)
  -          $macro = '"'.$macro.'"';
  -        return $this->word_repl($macro);
  -      }
  -      $name = $myname;
  -    }
  +    $myname = getPlugin($name);
  +    if (empty($myname)) return '[['.$macro.']]';
  +    $name = $myname;
   
       // macro ID
       $this->mid=!empty($options['mid']) ? $options['mid']:
  @@ -2943,7 +2962,7 @@
   
       if (!function_exists ('macro_'.$name)) {
         $np = getPlugin($name);
  -      if (empty($np)) return $this->link_repl($name);
  +      if (empty($np)) return '[['.$macro.']]';
         include_once('plugin/'.$np.'.php');
         if (!function_exists ('macro_'.$np)) return '[['.$macro.']]';
         $name = $np;
  
  
  


1281146300;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv22860\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315566] strip html tags in the title attr of the footnotes\n\n
wkpark      2010/08/07 10:58:21

  Modified:    .        wikilib.php
  Log:
  [#315566] strip html tags in the title attr of the footnotes
  
  Revision  Changes    Path
  1.311     +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.310
  retrieving revision 1.311
  diff -u -r1.310 -r1.311
  --- wikilib.php	6 Aug 2010 03:23:35 -0000	1.310
  +++ wikilib.php	7 Aug 2010 01:58:20 -0000	1.311
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.310 2010/08/06 03:23:35 wkpark Exp $
  +// $Id: wikilib.php,v 1.311 2010/08/07 01:58:20 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2913,7 +2913,7 @@
     $formatter->foots[]="<li><tt class='foot'>".
                         "<a id='$fnidx' href='#r$fnidx'>$text</a></tt> ".
                         "$value</li>";
  -  $tval=str_replace("'","&#39;",$value);
  +  $tval=strip_tags(str_replace("'","&#39;",$value));
     return "<tt class='foot'>".
       "<a id='r$fnidx' href='#$fnidx' title='$tval'>$text</a></tt>";
   }
  
  
  


1281163362;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv32476\n\nModified Files:\n	wiki.php \nLog Message:\n[#315561] fixed r1.544 support bracketted wiki links inside of the footnotes\n\n
wkpark      2010/08/07 15:42:43

  Modified:    .        wiki.php
  Log:
  [#315561] fixed r1.544 support bracketted wiki links inside of the footnotes
  
  Revision  Changes    Path
  1.545     +5 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.544
  retrieving revision 1.545
  diff -u -r1.544 -r1.545
  --- wiki.php	7 Aug 2010 01:44:56 -0000	1.544
  +++ wiki.php	7 Aug 2010 06:42:42 -0000	1.545
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.544 2010/08/07 01:44:56 wkpark Exp $
  +// $Id: wiki.php,v 1.545 2010/08/07 06:42:42 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.544 $',1,-1);
  +$_revision = substr('$Revision: 1.545 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -1944,7 +1944,8 @@
         }
       }
   
  -    $this->footrule='\[\*?(?'.'>[^\[\]]+|(?R))*\]'; # XXX not exact regex
  +    # recursive footnote regex
  +    $this->footrule='\[\*[^\[\]]*(?P<foot>(?:[^\[\]]+|\[(?P>foot)\])*)\]';
   
       $this->cache= new Cache_text("pagelinks");
       $this->bcache= new Cache_text("backlinks");
  @@ -3638,8 +3639,8 @@
         $wordrule.="(?<=\s|^|>)\\$(?!(?:Id|Revision))(?:[^\\$]+)\\$(?=\s|\.|\,|$)|".
                    "(?<=\s|^|>)\\$\\$(?:[^\\$]+)\\$\\$(?=\s|$)|";
       #if ($DBInfo->builtin_footnote) # builtin footnote support
  -    $wordrule.=$this->footrule.'|';
       $wordrule.=$this->wordrule;
  +    $wordrule.='|'.$this->footrule;
   
       $formatter=&$this;
   
  
  
  


1281165253;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv6330\n\nModified Files:\n	wiki.php \nLog Message:\n[#315567] fixed nonexists_fancy() bug. with preg_match() using unicode pattern modifier *u*\n\n
wkpark      2010/08/07 16:14:13

  Modified:    .        wiki.php
  Log:
  [#315567] fixed nonexists_fancy() bug. with preg_match() using unicode pattern modifier *u*
  
  Revision  Changes    Path
  1.546     +7 -10     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.545
  retrieving revision 1.546
  diff -u -r1.545 -r1.546
  --- wiki.php	7 Aug 2010 06:42:42 -0000	1.545
  +++ wiki.php	7 Aug 2010 07:14:13 -0000	1.546
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.545 2010/08/07 06:42:42 wkpark Exp $
  +// $Id: wiki.php,v 1.546 2010/08/07 07:14:13 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.545 $',1,-1);
  +$_revision = substr('$Revision: 1.546 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -2850,15 +2850,12 @@
       else if (function_exists('iconv'))
         $utfword=iconv($DBInfo->charset,'utf-8',$word);
       if ($utfword) {
  -      if (function_exists('mb_encode_numericentity')) {
  -        $mbword=mb_encode_numericentity($utfword,$DBInfo->convmap,'utf-8');
  -      } else {
  -        include_once('lib/compat.php');
  -        $mbword=utf8_mb_encode($utfword);
  -      }
  -      $tag=strtok($mbword,';').';'; $last=strtok('');
  -      if ($tag)
  +      preg_match('/^(.)(.*)$/u', $utfword, $m);
  +      if (!empty($m[1])) {
  +        $tag = $m[1];
  +        $last = !empty($m[2]) ? $m[2] : '';
           return "<span><a class='nonexistent' rel='nofollow' {$title}href='$url'>$tag</a>".$last.'</span>';
  +      }
       }
       return "<a class='nonexistent nomarkup' rel='nofollow' {$title}href='$url'>?</a>$word";
     }
  
  
  


1281166335;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv8294\n\nModified Files:\n	config.php.default \nLog Message:\n[#315561] $mediawiki_style option added\n\n
wkpark      2010/08/07 16:32:15

  Modified:    .        config.php.default
  Log:
  [#315561] $mediawiki_style option added
  
  Revision  Changes    Path
  1.58      +2 -1      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.57
  retrieving revision 1.58
  diff -u -r1.57 -r1.58
  --- config.php.default	6 Aug 2010 09:37:36 -0000	1.57
  +++ config.php.default	7 Aug 2010 07:32:15 -0000	1.58
  @@ -1,7 +1,7 @@
   <?php
   # This is a default 
   #
  -# $Id: config.php.default,v 1.57 2010/08/06 09:37:36 wkpark Exp $
  +# $Id: config.php.default,v 1.58 2010/08/07 07:32:15 wkpark Exp $
   #
   $sitename='UnnamedWiki'; # site name
   $data_dir= './data';
  @@ -212,6 +212,7 @@
   #$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; # 
  
  
  


1281168557;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv10740\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315569] slightly fix to use :target selector\n\n
wkpark      2010/08/07 17:09:17

  Modified:    .        wikilib.php
  Log:
  [#315569] slightly fix to use :target selector
  
  Revision  Changes    Path
  1.312     +3 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.311
  retrieving revision 1.312
  diff -u -r1.311 -r1.312
  --- wikilib.php	7 Aug 2010 01:58:20 -0000	1.311
  +++ wikilib.php	7 Aug 2010 08:09:17 -0000	1.312
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.311 2010/08/07 01:58:20 wkpark Exp $
  +// $Id: wikilib.php,v 1.312 2010/08/07 08:09:17 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2910,8 +2910,8 @@
          return "<tt class='foot'><a href='#$fnidx'>$text</a></tt>";
       }
     }
  -  $formatter->foots[]="<li><tt class='foot'>".
  -                      "<a id='$fnidx' href='#r$fnidx'>$text</a></tt> ".
  +  $formatter->foots[]="<li id='$fnidx'><tt class='foot'>".
  +                      "<a href='#r$fnidx'>$text</a></tt> ".
                         "$value</li>";
     $tval=strip_tags(str_replace("'","&#39;",$value));
     return "<tt class='foot'>".
  
  
  


1281168693;wkpark;Update of /cvsroot/moniwiki/moniwiki-theme/azblue2/css\nIn directory kill.kldp.net:/tmp/cvs-serv12269/css\n\nModified Files:\n	default.css \nLog Message:\n[#315480] css styling input buttons\n\n
1281168841;wkpark;Update of /cvsroot/moniwiki/moniwiki-theme/azblue2/css\nIn directory kill.kldp.net:/tmp/cvs-serv14786/css\n\nModified Files:\n	default.css \nLog Message:\n[#315569] css styling foot notes. use :target selector to style selected targets\n\n
1281415069;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv32241\n\nModified Files:\n	wiki.php wikilib.php \nLog Message:\n[#315576] support #!wiki format in a pre block.\nsupport multiple TableOfContents\n\n
1281415069;wkpark;Update of /cvsroot/moniwiki/moniwiki/local\nIn directory kill.kldp.net:/tmp/cvs-serv32241/local\n\nModified Files:\n	toctoggle.js \nLog Message:\n[#315576] support #!wiki format in a pre block.\nsupport multiple TableOfContents\n\n
1281415069;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin/processor\nIn directory kill.kldp.net:/tmp/cvs-serv32241/plugin/processor\n\nModified Files:\n	monimarkup.php \nLog Message:\n[#315576] support #!wiki format in a pre block.\nsupport multiple TableOfContents\n\n
wkpark      2010/08/10 13:37:50

  Modified:    .        wiki.php wikilib.php
               local    toctoggle.js
               plugin/processor monimarkup.php
  Log:
  [#315576] support #!wiki format in a pre block.
  support multiple TableOfContents
  
  Revision  Changes    Path
  1.547     +16 -14    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.546
  retrieving revision 1.547
  diff -u -r1.546 -r1.547
  --- wiki.php	7 Aug 2010 07:14:13 -0000	1.546
  +++ wiki.php	10 Aug 2010 04:37:49 -0000	1.547
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.546 2010/08/07 07:14:13 wkpark Exp $
  +// $Id: wiki.php,v 1.547 2010/08/10 04:37:49 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.546 $',1,-1);
  +$_revision = substr('$Revision: 1.547 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -2990,7 +2990,7 @@
           $markups=str_replace(array('=','-','&','<'),array('==','-=','&amp;','&lt;'),$value);
           $bra= "<span class='wikiMarkup' style='display:inline'><!-- wiki:\n".$markups."\n-->";
         } else {
  -        if (!empty($this->pi['#format']) and $processor == $this->pi['#format']) { $btag='';$etag=''; }
  +        if (!empty($options['nowrap']) and !empty($this->pi['#format']) and $processor == $this->pi['#format']) { $btag='';$etag=''; }
           else { $btag='{{{';$etag='}}}'; }
           $notag = '';
           if ($value{0}!='#' and $value{1}!='!') $notag="\n";
  @@ -3027,7 +3027,7 @@
       $classname='processor_'.$pf;
       $myclass= & new $classname($this,$options);
       $ret= call_user_func(array($myclass,'process'),$value,$options);
  -    if (!empty($myclass->_type) and $myclass->_type=='wikimarkup') return $ret;
  +    if (!empty($options['nowrap']) and !empty($myclass->_type) and $myclass->_type=='wikimarkup') return $ret;
       return $bra.$ret.$ket;
     }
   
  @@ -3458,7 +3458,8 @@
   
       if ($this->wikimarkup) $this->nonexists='always';
   
  -    if ($body) {
  +    if (isset($body[0])) {
  +      $this->text = $body;
         $pi=$this->get_instructions($body);
   
         if ($this->wikimarkup and $pi['raw']) {
  @@ -3479,8 +3480,10 @@
           if (!empty($pi['args'])) $pi_line="#!".$pi['#format']." $pi[args]\n";
           $savepi=$this->pi; // hack;;
           $this->pi=$pi;
  +        $opts = $options;
  +        $opts['nowrap'] = 1;
           $text= $this->processor_repl($pi['#format'],
  -          $pi_line.$body,$options);
  +          $pi_line.$body,$opts);
           $this->pi=$savepi;
           if ($this->use_smartdiff)
             $text= preg_replace_callback(array("/(\006|\010)(.*)\\1/sU"),
  @@ -3517,6 +3520,8 @@
           $pi=$this->get_instructions($dum);
           $body=$this->page->get_raw_body($options);
         }
  +      $this->text = &$body;
  +
         $this->set_wordrule($pi);
         if (!empty($this->wikimarkup) and !empty($pi['raw']))
           echo "<span class='wikiMarkup'><!-- wiki:\n$pi[raw]\n--></span>";
  @@ -3544,7 +3549,9 @@
         if (isset($pi['#format']) and $pi['#format'] != 'wiki') {
           $pi_line='';
           if (isset($pi['args'])) $pi_line="#!".$pi['#format']." $pi[args]\n";
  -        $text= $this->processor_repl($pi['#format'],$pi_line.$body,$options);
  +        $opts = $options;
  +        $opts['nowrap'] = 1;
  +        $text= $this->processor_repl($pi['#format'],$pi_line.$body,$opts);
   
           $fts=array();
           if (isset($pi['#postfilter'])) $fts=preg_split('/(\||,)/',$pi['#postfilter']);
  @@ -3727,13 +3734,7 @@
               $dummy=explode(" ",substr($line,$p+5),2);
               $tag = $dummy[0];
   
  -            if (function_exists("processor_".$tag)) {
  -              $processor=$tag;
  -            } else if ($pf=getProcessor($tag)) {
  -              if (!function_exists("processor_".$pf))
  -                include_once("plugin/processor/$pf.php");
  -              $processor=$pf;
  -            }
  +            if (!empty($tag)) $processor = $tag;
            } else if ($t and $line[$p+3] == ":") {
               # new formatting rule for a quote block (pre block + wikilinks)
               $line[$p+3]=" ";
  @@ -4044,6 +4045,7 @@
   
            if ($processor and !$show_raw) {
              $value=&$this->pre_line;
  +           if ($processor == 'wiki') $processor = 'monimarkup';
              $out= $this->processor_repl($processor,$value,$options);
              #if ($this->wikimarkup)
              #  $line='<div class="wikiMarkup">'."<!-- wiki:\n{{{".
  
  
  
  1.313     +10 -9     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.312
  retrieving revision 1.313
  diff -u -r1.312 -r1.313
  --- wikilib.php	7 Aug 2010 08:09:17 -0000	1.312
  +++ wikilib.php	10 Aug 2010 04:37:49 -0000	1.313
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.312 2010/08/07 08:09:17 wkpark Exp $
  +// $Id: wikilib.php,v 1.313 2010/08/10 04:37:49 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2920,6 +2920,9 @@
   
   function macro_TableOfContents(&$formatter,$value="") {
    global $DBInfo;
  + static $tocidx = 1; // FIXME
  +
  + $tocid = 'toc' . $tocidx;
    $head_num=1;
    $head_dep=0;
    $TOC='';
  @@ -2953,22 +2956,19 @@
    }
   
    if ($toctoggle) {
  -  $TOC.=<<<EOS
  -<script type="text/javascript" src="$DBInfo->url_prefix/local/toctoggle.js">
  -</script>
  -EOS;
  +  $formatter->register_javascripts("<script type=\"text/javascript\" src=\"$DBInfo->url_prefix/local/toctoggle.js\"></script>");
     $TOC_close=<<<EOS
   <script type="text/javascript">
   /*<![CDATA[*/
  - if (window.showTocToggle) { showTocToggle('<img src="$DBInfo->imgs_dir/plugin/arrdown.png" width="10px" border="0" alt="[+]" title="[+]" />','<img src="$DBInfo->imgs_dir/plugin/arrup.png" width="10px" border="0" alt="[-]" title="[-]" />'); } 
  + if (window.showTocToggle) { showTocToggle('$tocid', '<img src="$DBInfo->imgs_dir/plugin/arrdown.png" width="10px" border="0" alt="[+]" title="[+]" />','<img src="$DBInfo->imgs_dir/plugin/arrup.png" width="10px" border="0" alt="[-]" title="[-]" />'); } 
   /*]]>*/
   </script>
   EOS;
    }
  - $TOC.="\n<div id='toc'>";
  + $TOC.="\n<div id='" . $tocid . "'>";
    if (!isset($title)) $title=_("Contents");
    if ($title) {
  -  $TOC.="<div id='toctitle'>
  +  $TOC.="<div class='toctitle'>
   <h2 style='display:inline'>$title</h2>
   </div>";
    }
  @@ -2982,7 +2982,7 @@
      $baseurl=$formatter->link_url(_urlencode($value));
      $formatter->page=&$p;
    } else {
  -   $body=$formatter->page->get_raw_body();
  +   $body=$formatter->text;
    }
    $body=preg_replace("/\{\{\{.+?\}\}\}/s",'',$body);
    $lines=explode("\n",$body);
  @@ -3052,6 +3052,7 @@
   
     }
   
  +  $tocidx ++;
     if ($TOC) {
        $close="";
        $depth=$head_dep;
  
  
  
  1.2       +14 -9     moniwiki/local/toctoggle.js
  
  Index: toctoggle.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/toctoggle.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- toctoggle.js	12 Aug 2005 12:15:13 -0000	1.1
  +++ toctoggle.js	10 Aug 2010 04:37:49 -0000	1.2
  @@ -1,11 +1,12 @@
   // imported from the WikiMedia and modified for the MoniWiki
   //
   
  -function showTocToggle(showBtn,hideBtn) {
  +function showTocToggle(target, showBtn,hideBtn) {
     if (document.createTextNode) {
       // Uses DOM calls to avoid document.write + XHTML issues
   
  -    var linkHolder = document.getElementById('toctitle')
  +    var toc = document.getElementById(target);
  +    var linkHolder = toc.firstChild;
       if (!linkHolder) return;
   
       var outerSpan = document.createElement('span');
  @@ -14,15 +15,15 @@
       var toggleLink = document.createElement('a');
       toggleLink.id = 'togglelink';
       toggleLink.className = 'internal';
  -    toggleLink.href = 'javascript:toggleToc()';
  +    toggleLink.href = 'javascript:toggleToc("' + target + '")';
   
       var showToc = document.createElement('span');
  -    showToc.id = 'showtoc';
  +    showToc.id = 'show' + target;
       showToc.style.display = 'none';
       showToc.innerHTML = showBtn;
   
       var hideToc = document.createElement('span');
  -    hideToc.id = 'hidetoc';
  +    hideToc.id = 'hide' + target;
       hideToc.innerHTML = hideBtn;
   
       toggleLink.appendChild(hideToc);
  @@ -35,10 +36,14 @@
     }
   }
   
  -function toggleToc() {
  -    var toc = document.getElementById('toc').getElementsByTagName('dl')[0];
  -    var showtoc=document.getElementById('showtoc');
  -    var hidetoc=document.getElementById('hidetoc');
  +function toggleToc(el) {
  +    var toc = document.getElementById(el);
  +    if (!toc) return;
  +
  +    if (toc)
  +    	toc = toc.getElementsByTagName('dl')[0];
  +    var showtoc=document.getElementById('show' + el);
  +    var hidetoc=document.getElementById('hide' + el);
       var toggleLink = document.getElementById('togglelink')
     
       if(toc && toggleLink && toc.style.display == 'none') {
  
  
  
  1.27      +12 -5     moniwiki/plugin/processor/monimarkup.php
  
  Index: monimarkup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/monimarkup.php,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- monimarkup.php	19 Apr 2010 11:26:47 -0000	1.26
  +++ monimarkup.php	10 Aug 2010 04:37:49 -0000	1.27
  @@ -3,12 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a moniwiki formatting processor for the MoniWiki
   //
  -// $Id: monimarkup.php,v 1.26 2010/04/19 11:26:47 wkpark Exp $
  +// $Id: monimarkup.php,v 1.27 2010/08/10 04:37:49 wkpark Exp $
   /**
    * @date    2006-08-09
    * @name    Moniwiki Processor
    * @desc    Moniwiki default processor
  - * @version $Revision: 1.26 $
  + * @version $Revision: 1.27 $
    * @depend  1.1.3
    * @license GPL
    */
  @@ -66,6 +66,8 @@
                                       $tmp = explode(' ',$type);
                                       $tag = $tmp[0];
                                       $btype[$j]=substr($tag,2);
  +                                    if ($btype[$j] == 'wiki')
  +                                        $btype[$j] = 'monimarkup';
                                   } else if ($type{0} == ':') {
                                       # for a quote block
                                       $block[$j]=substr($block[$j],1);
  @@ -409,6 +411,7 @@
           global $Config;
   
           if (trim($body)=='') return '';
  +        $this->text = &$body;
           #$body=rtrim($body); # delete last empty line
           $palign=array('&lt;'=>'text-align:left',
                            '='=>'text-align:center',
  @@ -419,7 +422,10 @@
           $btype=array();
           $options['nodiff']=0;
           $options['nomarkup']=0;
  +        $options['nowrap'] = 0;
           $formatter=&$this->formatter;
  +        $old_text = $formatter->text;
  +        $formatter->text = $this->text;
   
           $pi=&$formatter->pi;
           #$formatter->set_wordrule($pi);
  @@ -449,8 +455,8 @@
               $wordrule.="(?<=\s|^|>)\\$(?!(?:Id|Revision|Date))(?:[^\\$]+)\\$(?:\s|$)|".
                    "(?<=\s|^|>)\\$\\$(?:[^\\$]+)\\$\\$(?:\s|$)|";
           #if ($Config['builtin_footnote']) # builtin footnote support
  -        $wordrule.=$formatter->footrule.'|';
           $wordrule.=$formatter->wordrule;
  +        $wordrule.='|'.$formatter->footrule;
   
           # 1-pass
           list($body,$inline,$block,$btype)=$this->_pass1($body);
  @@ -633,7 +639,7 @@
   
                   if (isset($btype[1]))
                       $c=preg_replace("/\007(\d+)\007/e",
  -                        "\$formatter->processor_repl(\$btype[$1],\$block[$1])",$c);
  +                        "\$formatter->processor_repl(\$btype[$1],\$block[$1], \$options)",$c);
                   if (isset($inline[1]))
                       $c=preg_replace("/\035(\d+)\035/e", 
                           "\$formatter->link_repl(\$inline[$1])",$c);
  @@ -660,11 +666,12 @@
   
           if (isset($btype[1]))
               $out=preg_replace("/\007(\d+)\007/e",
  -                "\$formatter->processor_repl(\$btype[$1],\$block[$1])",$out);
  +                "\$formatter->processor_repl(\$btype[$1],\$block[$1], \$options)",$out);
           if (isset($inline[1]))
               $out=preg_replace("/\035(\d+)\035/e", 
                   "\$formatter->link_repl(\$inline[$1])",$out);
   
  +        $formatter->text = $old_text;
           return $my_divopen.$out.$my_divclose;
       }
   
  
  
  


1281418847;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin/security\nIn directory kill.kldp.net:/tmp/cvs-serv7871/plugin/security\n\nModified Files:\n	community.php \nLog Message:\n[#315574] fixed warning \n\n
wkpark      2010/08/10 14:40:48

  Modified:    plugin/security community.php
  Log:
  [#315574] fixed warning
  
  Revision  Changes    Path
  1.7       +4 -3      moniwiki/plugin/security/community.php
  
  Index: community.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/community.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- community.php	22 Jul 2006 12:09:50 -0000	1.6
  +++ community.php	10 Aug 2010 05:40:47 -0000	1.7
  @@ -1,14 +1,15 @@
   <?php
   # a community security plugin for the MoniWiki
  -# $Id: community.php,v 1.6 2006/07/22 12:09:50 wkpark Exp $
  +# $Id: community.php,v 1.7 2010/08/10 05:40:47 wkpark Exp $
   
   class Security_community extends Security {
     var $DB;
   
     function Security_community($DB="") {
       $this->DB=$DB;
  -    $this->public_pages=array_merge($DB->public_pages,array(
  -      'WikiSandBox','WikiSandbox','GuestBook','SandBox'));
  +    $this->public_pages = array('WikiSandBox','WikiSandbox','GuestBook','SandBox');
  +    if (!empty($DB->public_pages))
  +      $this->public_pages = array_merge($DB->public_pages, $this->public_pages);
     }
   
   # $options[page]: pagename
  
  
  


1281419433;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv10094\n\nModified Files:\n	wiki.php \nLog Message:\nfixed footnote regex\n\n
wkpark      2010/08/10 14:50:34

  Modified:    .        wiki.php
  Log:
  fixed footnote regex
  
  Revision  Changes    Path
  1.548     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.547
  retrieving revision 1.548
  diff -u -r1.547 -r1.548
  --- wiki.php	10 Aug 2010 04:37:49 -0000	1.547
  +++ wiki.php	10 Aug 2010 05:50:33 -0000	1.548
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.547 2010/08/10 04:37:49 wkpark Exp $
  +// $Id: wiki.php,v 1.548 2010/08/10 05:50:33 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.547 $',1,-1);
  +$_revision = substr('$Revision: 1.548 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -1945,7 +1945,7 @@
       }
   
       # recursive footnote regex
  -    $this->footrule='\[\*[^\[\]]*(?P<foot>(?:[^\[\]]+|\[(?P>foot)\])*)\]';
  +    $this->footrule='\[\*[^\[\]]*((?:[^\[\]]+|\[(?-1)\])*)\]';
   
       $this->cache= new Cache_text("pagelinks");
       $this->bcache= new Cache_text("backlinks");
  
  
  


1281421715;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv14293\n\nModified Files:\n	wiki.php \nLog Message:\n[#315577] * support nested {{{ {{{code}}} }}} inline code blocks.\n* back reference with relative position - http://www.pcre.org/pcre.txt\n\n
wkpark      2010/08/10 15:28:36

  Modified:    .        wiki.php
  Log:
  [#315577] * support nested {{{ {{{code}}} }}} inline code blocks.
  * back reference with relative position - http://www.pcre.org/pcre.txt
  
  Revision  Changes    Path
  1.549     +9 -5      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.548
  retrieving revision 1.549
  diff -u -r1.548 -r1.549
  --- wiki.php	10 Aug 2010 05:50:33 -0000	1.548
  +++ wiki.php	10 Aug 2010 06:28:35 -0000	1.549
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.548 2010/08/10 05:50:33 wkpark Exp $
  +// $Id: wiki.php,v 1.549 2010/08/10 06:28:35 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.548 $',1,-1);
  +$_revision = substr('$Revision: 1.549 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -2008,7 +2008,7 @@
       #  * single bracketted words [Hello World] etc.
       #  * single bracketted words with double quotes ["Hello World"]
       #  * double bracketted words with double quotes [["Hello World"]]
  -    "(?<!\[)\!?\[(\[)$single(\")?(?:[^\[\]\",<\s'\*][^\[\],>]{0,255}[^\"])(?(4)\"(?:[^\"]*))(?(3)\])\](?!\])";
  +    "(?<!\[)\!?\[(\[)$single(\")?(?:[^\[\]\",<\s'\*][^\[\],>]{0,255}[^\"])(?(-1)\"(?:[^\"]*))(?(-2)\])\](?!\])";
   
       if ($camelcase)
         $this->wordrule.='|'.
  @@ -3636,7 +3636,7 @@
       $_myindlen=array(0);
       $oline='';
   
  -    $wordrule="(?:{{{(?U)(?:.+)}}})|".
  +    $wordrule="({{{(?:(?:[^{}]+|(?<!{){{1,2}(?!{)|(?<!})}{1,2}(?!}))|(?-1))+}}})|".
                 "\[\[(?:[A-Za-z0-9]+(?:\((?:(?<!\]\]).)*\))?)\]\]|". # macro
                 "<<(?:[A-Za-z0-9]+(?:\((?:(?<!\>\>).)*\))?)>>|"; # macro
       if ($DBInfo->inline_latex) # single line latex syntax
  @@ -3780,7 +3780,11 @@
         }
   
         // split into chunks
  -      $chunk=preg_split('/({{{.+}}})/U',$line,-1,PREG_SPLIT_DELIM_CAPTURE);
  +      $chunk=preg_split("/({{{
  +                        (?:(?:[^{}]+|
  +                        (?<!{){{1,2}(?!{)|
  +                        (?<!})}{1,2}(?!}))|(?-1)
  +                          )+}}})/x",$line,-1,PREG_SPLIT_DELIM_CAPTURE);
         $nc='';
         $k=1;
         foreach ($chunk as $c) {
  
  
  


1281426606;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv26307\n\nModified Files:\n	wiki.php wikilib.php \nLog Message:\n[#315557] * add getAllPages() method to the DBA indexer.\n * check $use_indexer to use $indexer->getAllPages() get the pages list.\n * close() indexer correctly.\n\n
1281426606;wkpark;Update of /cvsroot/moniwiki/moniwiki/lib\nIn directory kill.kldp.net:/tmp/cvs-serv26307/lib\n\nModified Files:\n	indexer.DBA.php \nLog Message:\n[#315557] * add getAllPages() method to the DBA indexer.\n * check $use_indexer to use $indexer->getAllPages() get the pages list.\n * close() indexer correctly.\n\n
wkpark      2010/08/10 16:50:06

  Modified:    .        wiki.php wikilib.php
               lib      indexer.DBA.php
  Log:
  [#315557] * add getAllPages() method to the DBA indexer.
   * check $use_indexer to use $indexer->getAllPages() get the pages list.
   * close() indexer correctly.
  
  Revision  Changes    Path
  1.550     +18 -2     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.549
  retrieving revision 1.550
  diff -u -r1.549 -r1.550
  --- wiki.php	10 Aug 2010 06:28:35 -0000	1.549
  +++ wiki.php	10 Aug 2010 07:50:06 -0000	1.550
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.549 2010/08/10 06:28:35 wkpark Exp $
  +// $Id: wiki.php,v 1.550 2010/08/10 07:50:06 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.549 $',1,-1);
  +$_revision = substr('$Revision: 1.550 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -905,6 +905,19 @@
         if (is_array($list)) return $list;
       }
   
  +    if (!empty($this->use_indexer)) {
  +      include_once("lib/indexer.DBA.php");
  +      $indexer = new Indexer_dba('fullsearch', 'r', $this->dba_type);
  +      if ($indexer->db) {
  +        $pages = $indexer->getAllPages();
  +
  +        $pc->update($pcid,serialize($pages));
  +        $pc->update('counter', count($pages));
  +        $indexer->close();
  +        return $pages;
  +      }
  +    }
  +
       $handle = opendir($this->text_dir);
       if (!is_resource($handle))
         return array();
  @@ -1156,6 +1169,7 @@
         } else {
           $indexer->addWords($page->name, $new_words);
         }
  +      $indexer->close();
       }
   
       $log=$REMOTE_ADDR.';;'.$myid.';;'.$comment;
  @@ -1200,6 +1214,7 @@
           $indexer->delWords($page->name, $old_words);
           $indexer->deletePage($page->name);
         }
  +      $indexer->close();
       }
   
       if ($this->version_class) {
  @@ -1247,6 +1262,7 @@
         $old_words = getTokens($old_body);
         $indexer->delWords($pagename, $old_words);
         $indexer->addWords($new, $old_words);
  +      $indexer->close();
       }
   
       $okey=$this->getPageKey($pagename);
  
  
  
  1.314     +3 -1      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.313
  retrieving revision 1.314
  diff -u -r1.313 -r1.314
  --- wikilib.php	10 Aug 2010 04:37:49 -0000	1.313
  +++ wikilib.php	10 Aug 2010 07:50:06 -0000	1.314
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.313 2010/08/10 04:37:49 wkpark Exp $
  +// $Id: wikilib.php,v 1.314 2010/08/10 07:50:06 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2112,6 +2112,7 @@
       $indexer = new Indexer_DBA('fullsearch', 'r', $DBInfo->dba_type);
       $page = $indexer->_fetch($rand);
       $options['value'] = $page;
  +    $indexer->close();
     } else {
       $pages = $DBInfo->getPageLists();
       $options['value'] = $pages[$rand - 1];
  @@ -2154,6 +2155,7 @@
       foreach ($selected as $idx) {
         $sel_pages[] = $indexer->_fetch($idx);
       }
  +    $indexer->close();
     } else {
       $all_pages = $DBInfo->getPageLists();
       foreach ($selected as $idx) {
  
  
  
  1.8       +18 -1     moniwiki/lib/indexer.DBA.php
  
  Index: indexer.DBA.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/indexer.DBA.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- indexer.DBA.php	5 Aug 2010 15:57:30 -0000	1.7
  +++ indexer.DBA.php	10 Aug 2010 07:50:06 -0000	1.8
  @@ -5,7 +5,7 @@
   //
   // initial version from http://www.heddley.com/edd/php/search.html
   // heavily modified to adopt to the MoniWiki 2003/07/19 by wkpark
  -// $Id: indexer.DBA.php,v 1.7 2010/08/05 15:57:30 wkpark Exp $
  +// $Id: indexer.DBA.php,v 1.8 2010/08/10 07:50:06 wkpark Exp $
   
   class Indexer_dba {
       var $db = null;
  @@ -346,9 +346,24 @@
           #print 'Total '.$count."\n";
       }
   
  +    function getAllPages() {
  +        $count = 0;
  +        $pages = array();
  +        for ($k = dba_firstkey($this->db); $k !== false; $k = dba_nextkey($this->db)) {
  +            if (isset($k[2]) and $k[0] == '?' and $k[1] == '!') {
  +                $count++;
  +                $pages[] = substr($k,2);
  +            } else if ($count > 0) {
  +                break;
  +            }
  +        }
  +        return $pages;
  +    }
  +
       // store same length words to '??<length>' key to search all words.
       function packWords() {
           $words = array();
  +        $len = 0;
           for ($k = dba_firstkey($this->db); $k !== false; $k = dba_nextkey($this->db)) {
               if (isset($k[0]) and $k[0] != '!' and $k[0] != '?') {
                   // is it UTF-8 3-bytes ? FIXME
  @@ -357,6 +372,8 @@
                       $len = mb_strlen($k, 'UTF-8'); // FIXME
                       $words[$len] .= $k."\n";
                   }
  +            } else if ($len > 1) {
  +                break;
               }
           }
   
  
  
  


1281433988;wkpark;Update of /cvsroot/moniwiki/moniwiki/lib\nIn directory kill.kldp.net:/tmp/cvs-serv9992/lib\n\nModified Files:\n	indexer.DBA.php \nLog Message:\n[#315528] * use "\001" ~ "\004" as a keyname prefix.\n* do not use getPagesList() to generate indexer.db\n\n
1281433988;wkpark;Update of /cvsroot/moniwiki/moniwiki/tools\nIn directory kill.kldp.net:/tmp/cvs-serv9992/tools\n\nModified Files:\n	indexer.php \nLog Message:\n[#315528] * use "\001" ~ "\004" as a keyname prefix.\n* do not use getPagesList() to generate indexer.db\n\n
wkpark      2010/08/10 18:53:08

  Modified:    lib      indexer.DBA.php
               tools    indexer.php
  Log:
  [#315528] * use "\001" ~ "\004" as a keyname prefix.
  * do not use getPagesList() to generate indexer.db
  
  Revision  Changes    Path
  1.9       +29 -29    moniwiki/lib/indexer.DBA.php
  
  Index: indexer.DBA.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/indexer.DBA.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- indexer.DBA.php	10 Aug 2010 07:50:06 -0000	1.8
  +++ indexer.DBA.php	10 Aug 2010 09:53:07 -0000	1.9
  @@ -5,7 +5,7 @@
   //
   // initial version from http://www.heddley.com/edd/php/search.html
   // heavily modified to adopt to the MoniWiki 2003/07/19 by wkpark
  -// $Id: indexer.DBA.php,v 1.8 2010/08/10 07:50:06 wkpark Exp $
  +// $Id: indexer.DBA.php,v 1.9 2010/08/10 09:53:07 wkpark Exp $
   
   class Indexer_dba {
       var $db = null;
  @@ -45,7 +45,7 @@
               if (($this->db=@dba_open($this->dbname, 'n',$type)) === false)
                   return false;
               // startkey==256
  -            dba_insert('!!', 1,$this->db);
  +            dba_insert("\001", 1,$this->db);
               dba_sync($this->db);
           }
           register_shutdown_function(array(&$this,'close'));
  @@ -53,10 +53,10 @@
       }
   
       function getPageID($pagename) {
  -        if (!$this->exists('?!'.$pagename))
  +        if (!$this->exists("\002".$pagename))
               return $this->_getNewID($pagename);
   
  -        $pkey = dba_fetch('?!'.$pagename,$this->db);
  +        $pkey = dba_fetch("\002".$pagename,$this->db);
           $pkey = unpack($this->type.'1'.$this->type, $pkey);
           return $pkey[$this->type];
       }
  @@ -68,7 +68,7 @@
   
       function _fetchValues($key) {
           if (is_int($key))
  -            $key='!?'.pack($this->type,$key);
  +            $key="\003".pack($this->type,$key);
   
           $pkey=dba_fetch($key,$this->db);
           return unpack($this->type.'*',$pkey);
  @@ -76,7 +76,7 @@
   
       function _fetch($key) {
           if (is_int($key))
  -            $key='!?'.pack($this->type,$key);
  +            $key="\003".pack($this->type,$key);
   
           return dba_fetch($key,$this->db);
       }
  @@ -86,18 +86,18 @@
       }
   
       function _current() {
  -        return dba_fetch('!!',$this->db); // currentKey
  +        return dba_fetch("\001",$this->db); // currentKey
       }
   
       function _getNewID($pagename) {
           $pkey=$nkey=$this->_current();
           $type=$this->type;
           // Map key to this filename
  -        dba_insert('?!' . $pagename, pack($this->type, $pkey), $this->db);
  -        dba_insert('!?' . pack($this->type, $pkey), $pagename, $this->db);
  +        dba_insert("\002" . $pagename, pack($this->type, $pkey), $this->db);
  +        dba_insert("\003" . pack($this->type, $pkey), $pagename, $this->db);
           $nkey++;
           // if ($nkey % 256 == 0) { $nkey++; }
  -        dba_replace('!!',$nkey,$this->db);
  +        dba_replace("\001",$nkey,$this->db);
           return $pkey;
       }
   
  @@ -279,18 +279,18 @@
       }
   
       function deletePage($pagename) {
  -        if (dba_exists('?!'.$pagename, $this->db)) {
  -            $key = dba_fetch('?!'.$pagename, $this->db);
  +        if (dba_exists("\002".$pagename, $this->db)) {
  +            $key = dba_fetch("\002".$pagename, $this->db);
               $keyval = unpack($this->type.'1'.$this->type, $key);
  -            dba_delete('!?'.$key, $this->db);
  -            dba_delete('?!'.$pagename, $this->db);
  +            dba_delete("\003".$key, $this->db);
  +            dba_delete("\002".$pagename, $this->db);
               return true;
           }
           return false;
       }
   
       function hasPage($pagename) {
  -        if (dba_exists('?!'.$pagename, $this->db))
  +        if (dba_exists("\002".$pagename, $this->db))
               return true;
   
           return false;
  @@ -312,7 +312,7 @@
   
       function sort() {
           for ($k = dba_firstkey($this->db); $k !== false; $k = dba_nextkey($this->db)) {
  -            if (isset($k[1]) and $k[0] == '!') continue;
  +            if (isset($k[0]) and strcmp($k[0], "\010") < 0) continue;
   
               $a = dba_fetch($k, $this->db);
               $aa = array_unique(unpack($this->type.'*', $a)); // FIXME slow
  @@ -325,11 +325,11 @@
   
       function test() {
           for ($k = dba_firstkey($this->db); $k !== false; $k = dba_nextkey($this->db)) {
  -            if (isset($k[1]) and $k[0] == '!' and $k[1] == '?' and strlen($k) == 4) {
  +            if (isset($k[0]) and $k[0] == "\003" and strlen($k) == 4) { // FIXME
                   #print $k."=>\n";
                   #$kk = unpack($this->type.'1', substr($k,2));
                   #print_r($kk);
  -            } else if (isset($k[0]) and $k[0] != '!') {
  +            } else if (isset($k[0]) and strcmp($k[0], "\010") > 0) {
                   print $k."=>\n";
               }
           }
  @@ -338,9 +338,9 @@
       function title() {
           $count = 0;
           for ($k = dba_firstkey($this->db); $k !== false; $k = dba_nextkey($this->db)) {
  -            if (isset($k[2]) and $k[0] == '?' and $k[1] == '!') {
  +            if (isset($k[1]) and $k[0] == "\002") {
                   $count++;
  -                print substr($k,2)."\n";
  +                print substr($k, 1)."\n";
               }
           }
           #print 'Total '.$count."\n";
  @@ -350,9 +350,9 @@
           $count = 0;
           $pages = array();
           for ($k = dba_firstkey($this->db); $k !== false; $k = dba_nextkey($this->db)) {
  -            if (isset($k[2]) and $k[0] == '?' and $k[1] == '!') {
  +            if (isset($k[1]) and $k[0] == "\002") {
                   $count++;
  -                $pages[] = substr($k,2);
  +                $pages[] = substr($k, 1);
               } else if ($count > 0) {
                   break;
               }
  @@ -365,7 +365,7 @@
           $words = array();
           $len = 0;
           for ($k = dba_firstkey($this->db); $k !== false; $k = dba_nextkey($this->db)) {
  -            if (isset($k[0]) and $k[0] != '!' and $k[0] != '?') {
  +            if (isset($k[0]) and strcmp($k[0], "\010") > 0) {
                   // is it UTF-8 3-bytes ? FIXME
                   //if (preg_match('/^([\xe0-\xef][\x80-\xbf]{2})+$/', $k)) {
                   if (preg_match('/[^a-zA-Z0-9]/u', $k)) {
  @@ -380,10 +380,10 @@
           foreach ($words as $len=>$w) {
               // XXX debug
               // file_put_contents($this->index_dir.'/'.$this->arena.'.w'.$len.'.txt' , $words[$len]);
  -            if (dba_exists('??'.$len, $this->db)) {
  -                dba_replace('??'.$len, $w, $this->db);
  +            if (dba_exists("\004".$len, $this->db)) {
  +                dba_replace("\004".$len, $w, $this->db);
               } else {
  -                dba_insert('??'.$len, $w, $this->db);
  +                dba_insert("\004".$len, $w, $this->db);
               }
           }
       }
  @@ -392,7 +392,7 @@
       function _match($word) {
           $words = array();
           for ($k = dba_firstkey($this->db); $k !== false; $k = dba_nextkey($this->db)) {
  -            if (isset($k[0]) and $k[0] != '?' and $k[0] != '!' and preg_match('@'.$word.'@', $k)) {
  +            if (isset($k[0]) and strcmp($k[0], "\010") > 0 and preg_match('@'.$word.'@', $k)) {
                   $words[] = $k;
               }
           }
  @@ -404,8 +404,8 @@
           $words = array();
           $len = mb_strlen($word, 'UTF-8'); // FIXME
           for (; $len < 20; $len++) {
  -            if (dba_exists('??'.$len, $this->db)) {
  -                $content = dba_fetch('??'.$len, $this->db);
  +            if (dba_exists("\004".$len, $this->db)) {
  +                $content = dba_fetch("\004".$len, $this->db);
                   preg_match_all('@^.*'.$word.'.*$@m', $content, $match);
                   if (isset($match[0])) {
                       foreach ($match[0] as $m) $words[] = $m;
  
  
  
  1.3       +14 -1     moniwiki/tools/indexer.php
  
  Index: indexer.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/tools/indexer.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- indexer.php	29 Jul 2010 15:51:13 -0000	1.2
  +++ indexer.php	10 Aug 2010 09:53:08 -0000	1.3
  @@ -21,7 +21,19 @@
   #$indexer->test();
   #exit;
   
  -$pages = $DBInfo->getPageLists();
  +$handle = opendir($DBInfo->text_dir);
  +if (!is_resource($handle)) {
  +    echo "Can't open $DBInfo->text_dir\n";
  +    exit;
  +}
  +
  +while (($file = readdir($handle)) !== false) {
  +  if (is_dir($DBInfo->text_dir."/".$file)) continue;
  +  $pages[] = $DBInfo->keyToPagename($file);
  +}
  +
  +closedir($handle);
  +
   $ii = 1;
   foreach ($pages as $pagename) {
       $p = $DBInfo->getPage($pagename);
  @@ -40,6 +52,7 @@
       #$indexer->addWords($pagename, $words);
   }
   $indexer->flushWordCache();
  +$indexer->packWords();
   
   $indexer->close();
   
  
  
  


1281456621;wkpark;Update of /cvsroot/moniwiki/moniwiki/tools\nIn directory kill.kldp.net:/tmp/cvs-serv26869/tools\n\nModified Files:\n	indexer.php \nLog Message:\n[#315528] do not use getPagesList() method\n\n
wkpark      2010/08/11 01:10:21

  Modified:    tools    indexer.php
  Log:
  [#315528] do not use getPagesList() method
  
  Revision  Changes    Path
  1.4       +4 -8      moniwiki/tools/indexer.php
  
  Index: indexer.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/tools/indexer.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- indexer.php	10 Aug 2010 09:53:08 -0000	1.3
  +++ indexer.php	10 Aug 2010 16:10:21 -0000	1.4
  @@ -27,15 +27,10 @@
       exit;
   }
   
  -while (($file = readdir($handle)) !== false) {
  -  if (is_dir($DBInfo->text_dir."/".$file)) continue;
  -  $pages[] = $DBInfo->keyToPagename($file);
  -}
  -
  -closedir($handle);
  -
   $ii = 1;
  -foreach ($pages as $pagename) {
  +while (($file = readdir($handle)) !== false) {
  +    if (is_dir($DBInfo->text_dir."/".$file)) continue;
  +    $pagename = $DBInfo->keyToPagename($file);
       $p = $DBInfo->getPage($pagename);
       print "* [$ii] $pagename ";
       $ii++;
  @@ -55,5 +50,6 @@
   $indexer->packWords();
   
   $indexer->close();
  +closedir($handle);
   
   // vim:et:sts=4:sw=4:
  
  
  


1281456696;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv28108\n\nModified Files:\n	wiki.php \nLog Message:\n[#315579] do not use getPagesList() to get the number of pages\n\n
wkpark      2010/08/11 01:11:37

  Modified:    .        wiki.php
  Log:
  [#315579] do not use getPagesList() to get the number of pages
  
  Revision  Changes    Path
  1.551     +18 -5     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.550
  retrieving revision 1.551
  diff -u -r1.550 -r1.551
  --- wiki.php	10 Aug 2010 07:50:06 -0000	1.550
  +++ wiki.php	10 Aug 2010 16:11:36 -0000	1.551
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.550 2010/08/10 07:50:06 wkpark Exp $
  +// $Id: wiki.php,v 1.551 2010/08/10 16:11:36 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.550 $',1,-1);
  +$_revision = substr('$Revision: 1.551 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -905,7 +905,7 @@
         if (is_array($list)) return $list;
       }
   
  -    if (!empty($this->use_indexer)) {
  +    if (0 and !empty($this->use_indexer)) {
         include_once("lib/indexer.DBA.php");
         $indexer = new Indexer_dba('fullsearch', 'r', $this->dba_type);
         if ($indexer->db) {
  @@ -978,9 +978,22 @@
   
     function getCounter() {
       $pc = new Cache_text('pagelist');
  -    if ($pc->exists('counter'))
  +    if (filemtime($this->text_dir) < $pc->mtime('counter') and $pc->exists('counter'))
         return $pc->fetch('counter');
  -    return sizeof($this->getPageLists());
  +
  +    $handle = opendir($this->text_dir);
  +    if (!is_resource($handle))
  +      return 0;
  +
  +    $count = 0;
  +    while (($file = readdir($handle)) !== false) {
  +      if (is_dir($this->text_dir."/".$file)) continue;
  +      $count++;
  +    }
  +    closedir($handle);
  +
  +    $pc->update('counter', $count);
  +    return $count;
     }
   
     function addLogEntry($page_name, $remote_name,$comment,$action="SAVE") {
  
  
  


1281461190;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv11011\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315515] file_exists($shared_intermap)\n\n
wkpark      2010/08/11 02:26:31

  Modified:    .        wikilib.php
  Log:
  [#315515] file_exists($shared_intermap)
  
  Revision  Changes    Path
  1.315     +3 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.314
  retrieving revision 1.315
  diff -u -r1.314 -r1.315
  --- wikilib.php	10 Aug 2010 07:50:06 -0000	1.314
  +++ wikilib.php	10 Aug 2010 17:26:30 -0000	1.315
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.314 2010/08/10 07:50:06 wkpark Exp $
  +// $Id: wikilib.php,v 1.315 2010/08/10 17:26:30 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2524,7 +2524,8 @@
       $cf=new Cache_text('settings');
   
       $force_init=0;
  -    if (!empty($DBInfo->shared_intermap) and $cf->mtime('interwiki') < filemtime($DBInfo->shared_intermap) ) {
  +    if (!empty($DBInfo->shared_intermap) and file_exists($DBInfo->shared_intermap)
  +        and $cf->mtime('interwiki') < filemtime($DBInfo->shared_intermap) ) {
         $force_init=1;
       }
       if (!empty($formatter->refresh) and $cf->exists('interwiki') and !$force_init) {
  
  
  


1281462330;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv14318\n\nModified Files:\n	wiki.php \nLog Message:\n[#315286] ignore $use_counter option if dba_*() functions are not available\n\n
wkpark      2010/08/11 02:45:30

  Modified:    .        wiki.php
  Log:
  [#315286] ignore $use_counter option if dba_*() functions are not available
  
  Revision  Changes    Path
  1.552     +12 -6     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.551
  retrieving revision 1.552
  diff -u -r1.551 -r1.552
  --- wiki.php	10 Aug 2010 16:11:36 -0000	1.551
  +++ wiki.php	10 Aug 2010 17:45:30 -0000	1.552
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.551 2010/08/10 16:11:36 wkpark Exp $
  +// $Id: wiki.php,v 1.552 2010/08/10 17:45:30 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.551 $',1,-1);
  +$_revision = substr('$Revision: 1.552 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -486,7 +486,7 @@
   }
   
   class Counter_dba {
  -  var $counter;
  +  var $counter = null;
     var $DB;
     function Counter_dba($DB,$dbname='counter') {
       if (!function_exists('dba_open')) return;
  @@ -513,7 +513,8 @@
     }
   
     function close() {
  -    dba_close($this->counter);
  +    if ($this->counter)
  +      dba_close($this->counter);
     }
   }
   
  @@ -800,8 +801,13 @@
   
       $this->interwiki=null;
   
  -    if (!empty($this->use_counter))
  -      $this->counter=&new Counter_dba($this);
  +    if (!empty($this->use_counter)) {
  +      $this->counter = new Counter_dba($this);
  +      if ($this->counter->counter == null) {
  +        $this->use_counter = 0;
  +        $this->counter = null;
  +      }
  +    }
   
       if (!empty($this->security_class)) {
         include_once("plugin/security/$this->security_class.php");
  
  
  


1281463712;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv15975/plugin\n\nModified Files:\n	print.php \nLog Message:\n[#315095] always use #title to do_print()\n\n
wkpark      2010/08/11 03:08:33

  Modified:    plugin   print.php
  Log:
  [#315095] always use #title to do_print()
  
  Revision  Changes    Path
  1.8       +6 -2      moniwiki/plugin/print.php
  
  Index: print.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/print.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- print.php	9 Dec 2008 07:55:17 -0000	1.7
  +++ print.php	10 Aug 2010 18:08:32 -0000	1.8
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a print action plugin for the MoniWiki
   //
  -// $Id: print.php,v 1.7 2008/12/09 07:55:17 wkpark Exp $
  +// $Id: print.php,v 1.8 2010/08/10 18:08:32 wkpark Exp $
   
   function do_print($formatter,$options) {
     global $DBInfo;
  @@ -11,10 +11,14 @@
   
     $formatter->nonexists='always';
   
  +  $dum = false;
  +  $formatter->pi = $formatter->get_instructions($dum);
  +  $title = $formatter->pi['#title'];
  +
     $formatter->send_header("",$options);
     kbd_handler();
     print "<div id='printHeader'>";
  -  print "<h2>$options[page]</h2>";
  +  print "<h2>$title</h2>";
     print "</div>";
     print "<div id='wikiContent'>";
     $formatter->external_on=1;
  
  
  


1281492908;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv23846\n\nModified Files:\n	wiki.php wikilib.php \nLog Message:\n[#315580] support #alias PI.\n\n
wkpark      2010/08/11 11:15:09

  Modified:    .        wiki.php wikilib.php
  Log:
  [#315580] support #alias PI.
  
  Revision  Changes    Path
  1.553     +58 -8     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.552
  retrieving revision 1.553
  diff -u -r1.552 -r1.553
  --- wiki.php	10 Aug 2010 17:45:30 -0000	1.552
  +++ wiki.php	11 Aug 2010 02:15:08 -0000	1.553
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.552 2010/08/10 17:45:30 wkpark Exp $
  +// $Id: wiki.php,v 1.553 2010/08/11 02:15:08 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.552 $',1,-1);
  +$_revision = substr('$Revision: 1.553 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -417,8 +417,9 @@
   
   class MetaDB_text extends MetaDB {
     var $db=array();
  -  function MetaDB_text($file) {
  -    $lines=file($file);
  +  function MetaDB_text($file, $aliases = null) {
  +    $lines = array();
  +    if (file_exists($file)) $lines = file($file);
       if (!empty($lines))
       foreach ($lines as $line) {
         $line=trim($line);
  @@ -446,6 +447,12 @@
           }
         }
       }
  +    // merge aliases
  +    if (!empty($aliases)) {
  +      foreach ($aliases as $k=>$a) {
  +        $this->db[$k] = !empty($this->db[$k]) ? $this->db[$k].','.$a : $a;
  +      }
  +    }
     }
   
     function hasPage($pagename) {
  @@ -820,8 +827,36 @@
     }
   
     function initMetaDB() {
  -    if (!empty($this->use_alias) and file_exists($this->aliaspage))
  -      $this->alias=&new MetaDB_text($this->aliaspage);
  +    $aliases = array();
  +    while (!empty($this->use_alias)) {
  +      // read all aliases from aliase caches
  +      $apc = new Cache_text('aliases');
  +      $ac = new Cache_text('alias');
  +      $dir = $ac->cache_dir;
  +      if ($apc->exists('aliases') and filemtime($this->text_dir) < $apc->mtime('aliases')) {
  +        $aliases = unserialize($apc->fetch('aliases'));
  +        break;
  +      }
  +
  +      $dh = opendir($dir);
  +      if (is_resource($dh)) {
  +        while ( ($file = readdir($dh)) !== false) {
  +          if ($file[0] == '.' or is_dir($file)) continue;
  +          
  +          $pagename = $this->keyToPagename($file);
  +          $as = unserialize($ac->fetch($pagename));
  +          foreach ($as as $k) {
  +            $aliases[$k] = !empty($aliases[$k]) ? $aliases[$k].','.$pagename : $pagename;
  +          }
  +        }
  +        closedir($dh);
  +      }
  +      $apc->update('aliases', serialize($aliases));
  +      break;
  +    }
  +
  +    if (!empty($this->use_alias) and (file_exists($this->aliaspage) or !empty($aliases))) 
  +      $this->alias=&new MetaDB_text($this->aliaspage, $aliases);
       else
         $this->alias=&new MetaDB();
   
  @@ -906,7 +941,7 @@
   
       $pcid=md5(serialize($options));
       $pc=new Cache_text('pagelist');
  -    if (filemtime($this->text_dir) < $pc->mtime($pcid) and $pc->exists($pcid)) {
  +    if ($pc->exists($pcid) and filemtime($this->text_dir) < $pc->mtime($pcid)) {
         $list=unserialize($pc->fetch($pcid));
         if (is_array($list)) return $list;
       }
  @@ -2206,7 +2241,7 @@
       global $Config;
       $pikeys=array('#redirect','#action','#title','#notitle','#keywords','#noindex',
         '#format','#filter','#postfilter','#twinpages','#notwins','#nocomment','#comment',
  -      '#language','#camelcase','#nocamelcase','#cache','#nocache',
  +      '#language','#camelcase','#nocamelcase','#cache','#nocache','#alias',
         '#singlebracket','#nosinglebracket','#rating','#norating','#nodtd');
       $pi=array();
   
  @@ -5729,6 +5764,21 @@
           $tcache->update($pagename,serialize($keys));
         }
       }
  +
  +    // update aliases
  +    if (!empty($formatter->pi['#alias']) and !empty($DBInfo->use_alias)) {
  +      $ac = new Cache_text('alias');
  +      if (empty($formatter->pi['#alias'])) {
  +        $ac->remove($pagename);
  +      } else if (!$ac->exists($pagename) or
  +          $ac->mtime($pagename) < $formatter->page->mtime() or !empty($_GET['update_alias'])) {
  +        $as = get_csv($formatter->pi['#alias']);
  +        if (!empty($as)) {
  +          $ac->update($pagename, serialize($as));
  +        }
  +      }
  +    }
  +
       if (!empty($DBInfo->use_referer) and isset($_SERVER['HTTP_REFERER']))
         log_referer($_SERVER['HTTP_REFERER'],$pagename);
   
  
  
  
  1.316     +36 -1     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.315
  retrieving revision 1.316
  diff -u -r1.315 -r1.316
  --- wikilib.php	10 Aug 2010 17:26:30 -0000	1.315
  +++ wikilib.php	11 Aug 2010 02:15:08 -0000	1.316
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.315 2010/08/10 17:26:30 wkpark Exp $
  +// $Id: wikilib.php,v 1.316 2010/08/11 02:15:08 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -186,6 +186,41 @@
     return array($page,$text,$main_page);
   }
   
  +if (function_exists('str_getcsv')) {
  +function get_csv($str) {
  +  return str_getcsv($str);
  +}
  +
  +} else {
  +function get_csv($str) {
  +  // csv_regex from Mastering regular expressions p480, 481
  +  $csv_regex = '{
  +    \G(?:^|\s*,)\s* # spaces are added
  +    (?:
  +      # Either a double quoted filed
  +      " # field opening quote
  +       ( [^"]*+ (?: "" [^"]*+ )*+ )
  +      " # closing quote
  +    | # .. or ...
  +      # ... some non-quote/non-comma text...
  +      ( [^",]*+ )
  +    )
  +  }x';
  +
  +  preg_match_all($csv_regex, $str, $all_matches);
  +
  +  $ret = array();
  +  for ($i = 0; $i < count($all_matches[0]); $i++) {
  +    if (strlen($all_matches[2][$i]) > 0)
  +      $ret[] = $all_matches[2][$i];
  +    else
  +      // a quoted value.
  +      $ret[] = preg_replace('/""/', '"', $all_matches[1][$i]);
  +  }
  +  return $ret;
  +}
  +}
  +
   function get_title($page,$title='') {
     global $DBInfo;
     if (!empty($DBInfo->use_titlecache)) {
  
  
  


1281537290;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv30582\n\nModified Files:\n	wiki.php \nLog Message:\n[#315543] remove new by references\n\n
wkpark      2010/08/11 23:34:50

  Modified:    .        wiki.php
  Log:
  [#315543] remove new by references
  
  Revision  Changes    Path
  1.554     +15 -15    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.553
  retrieving revision 1.554
  diff -u -r1.553 -r1.554
  --- wiki.php	11 Aug 2010 02:15:08 -0000	1.553
  +++ wiki.php	11 Aug 2010 14:34:50 -0000	1.554
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.553 2010/08/11 02:15:08 wkpark Exp $
  +// $Id: wiki.php,v 1.554 2010/08/11 14:34:50 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.553 $',1,-1);
  +$_revision = substr('$Revision: 1.554 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -856,15 +856,15 @@
       }
   
       if (!empty($this->use_alias) and (file_exists($this->aliaspage) or !empty($aliases))) 
  -      $this->alias=&new MetaDB_text($this->aliaspage, $aliases);
  +      $this->alias= new MetaDB_text($this->aliaspage, $aliases);
       else
  -      $this->alias=&new MetaDB();
  +      $this->alias= new MetaDB();
   
       if (!empty($this->shared_metadb))
  -      $this->metadb=&new MetaDB_dba($this->shared_metadb,$this->dba_type);
  +      $this->metadb= new MetaDB_dba($this->shared_metadb,$this->dba_type);
       if (empty($this->metadb->metadb)) {
         if (is_object($this->alias)) $this->metadb=$this->alias;
  -      else $this->metadb=&new MetaDB();
  +      else $this->metadb= new MetaDB();
       } else {
         $this->metadb->attachDB($this->alias);
       }
  @@ -3095,7 +3095,7 @@
       }
   
       $classname='processor_'.$pf;
  -    $myclass= & new $classname($this,$options);
  +    $myclass= new $classname($this,$options);
       $ret= call_user_func(array($myclass,'process'),$value,$options);
       if (!empty($options['nowrap']) and !empty($myclass->_type) and $myclass->_type=='wikimarkup') return $ret;
       return $bra.$ret.$ket;
  @@ -4514,7 +4514,7 @@
         }
         # find sub pages
         if (!empty($DBInfo->use_subindex) and empty($options['action'])) {
  -        $scache=&new Cache_text('subpages');
  +        $scache= new Cache_text('subpages');
           if (!($subs=$scache->exists($this->page->name))) {
             if (($p = strrpos($this->page->name,'/')) !== false)
               $rule=_preg_search_escape(substr($this->page->name,0,$p));
  @@ -5593,7 +5593,7 @@
         $class='Security_robot';
         include_once('plugin/security/robot.php');
       }
  -    $DBInfo->security = &new $class ($DBInfo);
  +    $DBInfo->security = new $class ($DBInfo);
       // is it allowed to robot ?
       if (!$DBInfo->security->is_allowed($action,$options))
         $action='show';
  @@ -5604,7 +5604,7 @@
   
     $page = $DBInfo->getPage($pagename);
   
  -  $formatter = &new Formatter($page,$options);
  +  $formatter = new Formatter($page,$options);
   
     $formatter->refresh=!empty($refresh) ? $refresh : '';
     $formatter->popup=!empty($popup) ? $popup : '';
  @@ -5748,12 +5748,12 @@
       }
   
       if (!empty($formatter->pi['#title']) and !empty($DBInfo->use_titlecache)) {
  -      $tcache=&new Cache_text('title');
  +      $tcache= new Cache_text('title');
         if (!$tcache->exists($pagename) or !empty($_GET['update_title']))
           $tcache->update($pagename,$formatter->pi['#title']);
       }
       if (!empty($DBInfo->use_keywords) or !empty($DBInfo->use_tagging) or !empty($_GET['update_keywords'])) {
  -      $tcache=&new Cache_text('keyword');
  +      $tcache= new Cache_text('keyword');
         if (empty($formatter->pi['#keywords'])) {
           $tcache->remove($pagename);
         } else if (!$tcache->exists($pagename) or
  @@ -5788,8 +5788,8 @@
       }
       $options['pagelinks']=1;
       if (!empty($Config['cachetime']) and $Config['cachetime'] > 0 and empty($formatter->pi['#nocache'])) {
  -      $cache=&new Cache_text('pages',2,'html');
  -      $mcache=&new Cache_text('dynamicmacros',2);
  +      $cache= new Cache_text('pages',2,'html');
  +      $mcache= new Cache_text('dynamicmacros',2);
         $mtime=$cache->mtime($pagename);
         $dtime=filemtime($DBInfo->editlog_name); // workaround to check the dir mtime of the text_dir
         $now=time();
  @@ -5973,7 +5973,7 @@
   include_once("lib/win32fix.php");
   
   $options = array();
  -$timing = &new Timer();
  +$timing = new Timer();
   $options['timer'] = &$timing;
   
   $DBInfo= new WikiDB($Config);
  
  
  


1281537378;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv30872\n\nModified Files:\n	Diff.php \nLog Message:\n[#315543] remove deprecated new by ref.\n\n
wkpark      2010/08/11 23:36:19

  Modified:    plugin   Diff.php
  Log:
  [#315543] remove deprecated new by ref.
  
  Revision  Changes    Path
  1.24      +3 -3      moniwiki/plugin/Diff.php
  
  Index: Diff.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Diff.php,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- Diff.php	19 Apr 2010 11:26:46 -0000	1.23
  +++ Diff.php	11 Aug 2010 14:36:18 -0000	1.24
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a diff plugin for the MoniWiki
   //
  -// $Id: Diff.php,v 1.23 2010/04/19 11:26:46 wkpark Exp $
  +// $Id: Diff.php,v 1.24 2010/08/11 14:36:18 wkpark Exp $
   
   
   function code_diff($diff, $options = array()) {
  @@ -363,12 +363,12 @@
         $name='processor_'.$pf;
         if (class_exists($name)) {
           $classname='processor_'.$processor;
  -        $myclass= & new $classname($formatter,$options);
  +        $myclass= new $classname($formatter,$options);
           $processor_type=$myclass->_type == 'wikimarkup' ? 'wiki':$pi['#format'];
         }
       } else if ($c=class_exists('processor_'.$processor)) {
         $classname='processor_'.$processor;
  -      $myclass= & new $classname($formatter,$options);
  +      $myclass= new $classname($formatter,$options);
         $processor_type=$myclass->_type == 'wikimarkup' ? 'wiki':$pi['#format'];
       }
       break;
  
  
  


1281542269;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv9660\n\nModified Files:\n	wiki.php \nLog Message:\n[#315580] set #titile as a alias\n\n
wkpark      2010/08/12 00:57:49

  Modified:    .        wiki.php
  Log:
  [#315580] set #titile as a alias
  
  Revision  Changes    Path
  1.555     +25 -17    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.554
  retrieving revision 1.555
  diff -u -r1.554 -r1.555
  --- wiki.php	11 Aug 2010 14:34:50 -0000	1.554
  +++ wiki.php	11 Aug 2010 15:57:49 -0000	1.555
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.554 2010/08/11 14:34:50 wkpark Exp $
  +// $Id: wiki.php,v 1.555 2010/08/11 15:57:49 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.554 $',1,-1);
  +$_revision = substr('$Revision: 1.555 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -843,7 +843,7 @@
           while ( ($file = readdir($dh)) !== false) {
             if ($file[0] == '.' or is_dir($file)) continue;
             
  -          $pagename = $this->keyToPagename($file);
  +          $pagename = $this->keyToPagename($file); // FIXME
             $as = unserialize($ac->fetch($pagename));
             foreach ($as as $k) {
               $aliases[$k] = !empty($aliases[$k]) ? $aliases[$k].','.$pagename : $pagename;
  @@ -5738,6 +5738,28 @@
   
   
       $formatter->pi=$formatter->get_instructions($dum);
  +    // update aliases
  +    if (!empty($DBInfo->use_alias)) {
  +      $ac = new Cache_text('alias');
  +      // is it removed ?
  +      if ($ac->exists($pagename) and
  +        empty($formatter->pi['#alias']) and empty($formatter->pi['#title'])) {
  +        $ac->remove($pagename);
  +      } else if (!$ac->exists($pagename) or
  +          $ac->mtime($pagename) < $formatter->page->mtime() or !empty($_GET['update_alias'])) {
  +        $as = array();
  +        // parse #alias
  +        if (!empty($formatter->pi['#alias']))
  +          $as = get_csv($formatter->pi['#alias']);
  +        // add #title as a alias
  +        if (!empty($formatter->pi['#title']))
  +          $as[] = $formatter->pi['#title'];
  +        if (!empty($as)) {
  +          $ac->update($pagename, serialize($as));
  +        }
  +      }
  +    }
  +
       if (!empty($DBInfo->body_attr))
         $options['attr']=$DBInfo->body_attr;
   
  @@ -5765,20 +5787,6 @@
         }
       }
   
  -    // update aliases
  -    if (!empty($formatter->pi['#alias']) and !empty($DBInfo->use_alias)) {
  -      $ac = new Cache_text('alias');
  -      if (empty($formatter->pi['#alias'])) {
  -        $ac->remove($pagename);
  -      } else if (!$ac->exists($pagename) or
  -          $ac->mtime($pagename) < $formatter->page->mtime() or !empty($_GET['update_alias'])) {
  -        $as = get_csv($formatter->pi['#alias']);
  -        if (!empty($as)) {
  -          $ac->update($pagename, serialize($as));
  -        }
  -      }
  -    }
  -
       if (!empty($DBInfo->use_referer) and isset($_SERVER['HTTP_REFERER']))
         log_referer($_SERVER['HTTP_REFERER'],$pagename);
   
  
  
  


1281594907;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv13467/plugin\n\nModified Files:\n	UploadForm.php \nLog Message:\n[#315583] fixed add uploadform button behavior by nori\n\n
wkpark      2010/08/12 15:35:08

  Modified:    plugin   UploadForm.php
  Log:
  [#315583] fixed add uploadform button behavior by nori
  
  Revision  Changes    Path
  1.20      +21 -3     moniwiki/plugin/UploadForm.php
  
  Index: UploadForm.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadForm.php,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- UploadForm.php	9 Jul 2010 09:42:59 -0000	1.19
  +++ UploadForm.php	12 Aug 2010 06:35:07 -0000	1.20
  @@ -5,7 +5,7 @@
   //
   // Usage: [[UploadForm]]
   //
  -// $Id: UploadForm.php,v 1.19 2010/07/09 09:42:59 wkpark Exp $
  +// $Id: UploadForm.php,v 1.20 2010/08/12 06:35:07 wkpark Exp $
   
   function macro_UploadForm($formatter,$value) {
       global $DBInfo;
  @@ -91,7 +91,13 @@
       newInput.className = 'form-file';
       // get basename with replace() for IE
       newInput.onchange = function() {
  -        addRow(id, name, size);
  +        // add new row if and only if this input element is in the bottom row of upload table
  +        this_row = this.parentNode.parentNode.parentNode.parentNode;
  +        this_table = this_row.parentNode;
  +        if (this_table.lastChild == this_row) {
  +                addRow(id, name, size);
  +        }
  +
           fakeInp.style.display='inline-block';
           fakeInp.value = this.value.replace(/^.*[\\\\]/g, '');
   
  @@ -309,7 +315,19 @@
       var btn = document.getElementById('button-upload$id');
       if (btn) btn.style.display = 'none';
   })();
  -addRow('upload$id','$name');
  +
  +function init_uploadForm() {
  +        addRow('upload$id','$name');
  +}
  +
  +if (window.addEventListener) {
  +	window.addEventListener("load", init_uploadForm, false);
  +} else if (window.attachEvent) {
  +	window.attachEvent("onload", init_uploadForm);
  +} else {
  +	window.onload = init_uploadForm;
  +}
  +
   /*]]>*/
   </script>
   EOF;
  
  
  


1281616710;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv30192\n\nModified Files:\n	wiki.php wikilib.php \nLog Message:\n[#315580] * extract get_alias() function and add initAlias() method.\n* TitleSearch with aliases\n\n
wkpark      2010/08/12 21:38:30

  Modified:    .        wiki.php wikilib.php
  Log:
  [#315580] * extract get_alias() function and add initAlias() method.
  * TitleSearch with aliases
  
  Revision  Changes    Path
  1.556     +13 -36    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.555
  retrieving revision 1.556
  diff -u -r1.555 -r1.556
  --- wiki.php	11 Aug 2010 15:57:49 -0000	1.555
  +++ wiki.php	12 Aug 2010 12:38:30 -0000	1.556
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.555 2010/08/11 15:57:49 wkpark Exp $
  +// $Id: wiki.php,v 1.556 2010/08/12 12:38:30 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.555 $',1,-1);
  +$_revision = substr('$Revision: 1.556 $',1,-1);
   $_release = '1.1.5-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -417,36 +417,7 @@
   
   class MetaDB_text extends MetaDB {
     var $db=array();
  -  function MetaDB_text($file, $aliases = null) {
  -    $lines = array();
  -    if (file_exists($file)) $lines = file($file);
  -    if (!empty($lines))
  -    foreach ($lines as $line) {
  -      $line=trim($line);
  -      if (empty($line) or $line[0]=='#') continue;
  -      # support three types of aliases
  -      #
  -      # dest<alias1,alias2,...
  -      # dest,alias1,alias2,...
  -      # alias>dest1,dest2,dest3,...
  -      #
  -      if (($p=strpos($line,'>')) !== false) {
  -        list($key,$list)=explode('>',$line,2);
  -        $this->db[$key]=$list;
  -      } else {
  -        if (($p=strpos($line,'<')) !== false) {
  -          list($val,$keys)=explode('<',$line,2);
  -          $keys=explode(',',$keys);
  -        } else {
  -          $keys=explode(',',$line);
  -          $val=array_shift($keys);
  -        }
  -
  -        foreach ($keys as $k) {
  -          $this->db[$k]=!empty($this->db[$k]) ? $this->db[$k].','.$val:$val;
  -        }
  -      }
  -    }
  +  function MetaDB_text($aliases = null) {
       // merge aliases
       if (!empty($aliases)) {
         foreach ($aliases as $k=>$a) {
  @@ -826,7 +797,7 @@
       register_shutdown_function(array(&$this,'Close'));
     }
   
  -  function initMetaDB() {
  +  function initAlias() {
       $aliases = array();
       while (!empty($this->use_alias)) {
         // read all aliases from aliase caches
  @@ -855,10 +826,16 @@
         break;
       }
   
  -    if (!empty($this->use_alias) and (file_exists($this->aliaspage) or !empty($aliases))) 
  -      $this->alias= new MetaDB_text($this->aliaspage, $aliases);
  -    else
  +    if (!empty($this->use_alias) and (file_exists($this->aliaspage) or !empty($aliases))) {
  +      $aliases = array_merge($aliases, get_aliases($this->aliaspage));
  +      $this->alias= new MetaDB_text($aliases);
  +    } else {
         $this->alias= new MetaDB();
  +    }
  +  }
  +
  +  function initMetaDB() {
  +    if (empty($this->alias)) $this->initAlias();
   
       if (!empty($this->shared_metadb))
         $this->metadb= new MetaDB_dba($this->shared_metadb,$this->dba_type);
  
  
  
  1.317     +48 -1     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.316
  retrieving revision 1.317
  diff -u -r1.316 -r1.317
  --- wikilib.php	11 Aug 2010 02:15:08 -0000	1.316
  +++ wikilib.php	12 Aug 2010 12:38:30 -0000	1.317
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.316 2010/08/11 02:15:08 wkpark Exp $
  +// $Id: wikilib.php,v 1.317 2010/08/12 12:38:30 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -221,6 +221,49 @@
   }
   }
   
  +/**
  + * get aliases from alias file
  + *
  + * @author	wkpark@kldp.org
  + * @since	2010/08/12
  + *
  + */
  +function get_aliases($file) {
  +  $lines = array();
  +  if (file_exists($file)) $lines = file($file);
  +  if (empty($lines))
  +    return array();
  +
  +  $alias = array();
  +  foreach ($lines as $line) {
  +    $line=trim($line);
  +    if (empty($line) or $line[0]=='#') continue;
  +    # support three types of aliases
  +    #
  +    # dest<alias1,alias2,...
  +    # dest,alias1,alias2,...
  +    # alias>dest1,dest2,dest3,...
  +    #
  +    if (($p=strpos($line,'>')) !== false) {
  +      list($key, $list) = explode('>',$line,2);
  +      $alias[$key] = $list;
  +    } else {
  +      if (($p = strpos($line, '<')) !== false) {
  +        list($val, $keys) = explode('<', $line, 2);
  +        $keys = explode(',', $keys);
  +      } else {
  +        $keys = explode(',', $line);
  +        $val = array_shift($keys);
  +      }
  +
  +      foreach ($keys as $k) {
  +        $alias[$k] = !empty($alias[$k]) ? $alias[$k].','.$val:$val;
  +      }
  +    }
  +  }
  +  return $alias;
  +}
  +
   function get_title($page,$title='') {
     global $DBInfo;
     if (!empty($DBInfo->use_titlecache)) {
  @@ -3135,6 +3178,10 @@
       return $form;
     }
     $pages= $DBInfo->getPageLists();
  +  if (empty($DBInfo->alias)) $DBInfo->initAlias();
  +  $alias = $DBInfo->alias->getAllPages();
  +
  +  $pages = array_merge($pages, $alias);
     $hits=array();
     foreach ($pages as $page) {
        preg_match("/".$needle."/i",$page,$matches);
  
  
  


1281617169;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv32470\n\nModified Files:\n	wiki.php wikilib.php \nLog Message:\n[#315290] fixed notice warnings\n\n
1281617169;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv32470/plugin\n\nModified Files:\n	RecentChanges.php \nLog Message:\n[#315290] fixed notice warnings\n\n
wkpark      2010/08/12 21:46:10

  Modified:    .        wiki.php wikilib.php
               plugin   RecentChanges.php
  Log:
  [#315290] fixed notice warnings
  
  Revision  Changes    Path
  1.557     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.556
  retrieving revision 1.557
  diff -u -r1.556 -r1.557
  --- wiki.php	12 Aug 2010 12:38:30 -0000	1.556
  +++ wiki.php	12 Aug 2010 12:46:09 -0000	1.557
  @@ -11,10 +11,10 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.556 2010/08/12 12:38:30 wkpark Exp $
  +// $Id: wiki.php,v 1.557 2010/08/12 12:46:09 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.556 $',1,-1);
  -$_release = '1.1.5-CVS';
  +$_revision = substr('$Revision: 1.557 $',1,-1);
  +$_release = '1.1.5-RC1';
   
   #ob_start("ob_gzhandler");
   
  @@ -4235,7 +4235,7 @@
         $this->sister_on=$sister_save;
       }
   
  -    if ($this->foots)
  +    if (!empty($this->foots))
         echo $this->macro_repl('FootNote','',$options);
   
       if (!empty($this->update_pagelinks) and !empty($options['pagelinks'])) $this->store_pagelinks();
  
  
  
  1.318     +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.317
  retrieving revision 1.318
  diff -u -r1.317 -r1.318
  --- wikilib.php	12 Aug 2010 12:38:30 -0000	1.317
  +++ wikilib.php	12 Aug 2010 12:46:09 -0000	1.318
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.317 2010/08/12 12:38:30 wkpark Exp $
  +// $Id: wikilib.php,v 1.318 2010/08/12 12:46:09 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2924,7 +2924,7 @@
   
   function macro_FootNote(&$formatter,$value="") {
     if (!$value) {# emit all footnotes
  -    if (!$formatter->foots) return '';
  +    if (empty($formatter->foots)) return '';
       $foots=join("\n",$formatter->foots);
       $foots=preg_replace("/(".$formatter->wordrule.")/e","\$formatter->link_repl('\\1')",$foots);
       unset($formatter->foots);
  
  
  
  1.47      +2 -2      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.46
  retrieving revision 1.47
  diff -u -r1.46 -r1.47
  --- RecentChanges.php	27 Jul 2010 15:16:02 -0000	1.46
  +++ RecentChanges.php	12 Aug 2010 12:46:09 -0000	1.47
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.46 2010/07/27 15:16:02 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.47 2010/08/12 12:46:09 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     global $DBInfo;
  @@ -265,7 +265,7 @@
   
       if (! empty($changed_time_fmt)) {
         $date= gmdate($changed_time_fmt, $ed_time+$tz_offset);
  -      if ($timesago) {
  +      if (!empty($timesago)) {
           $date = _timesago($ed_time, 'Y-m-d', $tz_offset);
           /*
           $time_diff=(int)($time_current - $ed_time)/60;
  
  
  


1281617545;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv32624\n\nModified Files:\n	wiki.php \nLog Message:\noops! tag RC2\n\n
wkpark      2010/08/12 21:52:25

  Modified:    .        wiki.php
  Log:
  oops! tag RC2
  
  Revision  Changes    Path
  1.558     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.557
  retrieving revision 1.558
  diff -u -r1.557 -r1.558
  --- wiki.php	12 Aug 2010 12:46:09 -0000	1.557
  +++ wiki.php	12 Aug 2010 12:52:25 -0000	1.558
  @@ -11,10 +11,10 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.557 2010/08/12 12:46:09 wkpark Exp $
  +// $Id: wiki.php,v 1.558 2010/08/12 12:52:25 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.557 $',1,-1);
  -$_release = '1.1.5-RC1';
  +$_revision = substr('$Revision: 1.558 $',1,-1);
  +$_release = '1.1.5-RC2';
   
   #ob_start("ob_gzhandler");
   
  
  
  


1281623698;wkpark;Update of /cvsroot/moniwiki/moniwiki/contrib\nIn directory kill.kldp.net:/tmp/cvs-serv14490/contrib\n\nLog Message:\nDirectory /cvsroot/moniwiki/moniwiki/contrib added to the repository\n\n
wkpark      2010/08/12 23:34:58

  moniwiki/contrib - New directory

1281624016;wkpark;Update of /cvsroot/moniwiki/moniwiki/contrib\nIn directory kill.kldp.net:/tmp/cvs-serv14536/contrib\n\nAdded Files:\n	moni.vim \nLog Message:\n[#315584] a moni.vim syntax file added\n\n
wkpark      2010/08/12 23:40:16

  Added:       contrib  moni.vim
  Log:
  [#315584] a moni.vim syntax file added
  
  Revision  Changes    Path
  1.1                  moniwiki/contrib/moni.vim
  
  Index: moni.vim
  ===================================================================
  " MoniWiki text syntax file
  " Filename:	moni.vim
  " Language:	MoniWiki text
  " Maintainer:	Won-Kyu Park <wkpark@kldp.org>
  " Last Change:	Wed, 26 Jun 2002 21:31:09 -0300
  " $Id: moni.vim,v 1.1 2010/08/12 14:40:16 wkpark Exp $
  
  " modified version of the moin.vim by Gustavo Niemeyer <niemeyer@conectiva.com>
  "
  if version < 600
    syntax clear
  elseif exists("b:current_syntax")
    finish
  endif
  
  syn sync lines=30
  
  syn region  moniSettings    start="\%^@ \(WARNING\|Using\)" end="^[^@]"me=e-1 end="^$" 
  syn region  moniItalic      start="''" end="''" oneline
  syn region  moniBold        start="'''" end="'''" oneline
  syn match   moniNull        "''''''"
  syn match   moniBullet      "[[:space:]]\+\(\*\|[[:digit:]]\+\.\)"
  syn region  moniCode        start="{{{" end="}}}"
  syn match   moniComment     "^##.*$"
  syn match   moniPI          "^#.*$"
  syn region  moniMacro       start="\[\[" end="\]\]"
  syn region  moniHeader      start="^\s*\z(=\{1,5}\) " end=" \z1$" oneline
  syn match   moniTableOpt    "||<[^>]*>"hs=s+2 contained
  syn region  moniTable       start="^||" end="||$" oneline contains=moniTableOpt
  syn match   moniRule        "^-\{4,}$"
  syn match   moniSmileys     "\(\s\|\_^\)\(:)\|B:\|:))\|;)\|:D\|<:(\|X-(\|:O\|:(\|/!\\\|<!>\|(!)\|:?\|:\\\|>:>\|%)\|@)\||)\|;))\|(./)\|{OK}\|{X}\|{i}\|{1}\|{2}\|{3}\)\(\s\|\_$\)"
  syn match   moniLinkMoin    "\(/\?[[:upper:]][[:lower:][:digit:]]\+\)\{2,}"
  syn match   moniLinkEmail   "<\?[[:alnum:]-._+]\+@[[:alnum:]-]\+\.[[:alnum:]-.]\+>\?"
  syn match   moniLinkUrl     "\(http\|https\|ftp\|nntp\|news\|mailto\|telnet\|wiki\|file\|attachment\|inline\|drawing\):\([^][:space:]<"'}|:,.)?!]\|[]"'}|:,.)?!][^][:space:]<"'}|:,.)?!]\)\+"
  syn match   moniBracketed  "\[\([^]]\)\+\]"
  syn match   moniLinkBUrl    "\[\(\(http\|https\|ftp\|nntp\|news\|mailto\|telnet\|wiki\|file\|attachment\|inline\|drawing\):\([^][:space:]<"'}|:,.)?!]\|[]"'}|:,.)?!][^][:space:]<"'}|:,.)?!]\)\+\|#\)[^][:space:]]\+\(\s[^]]\+\)\?\]"
  syn match   moniLinkQUrl    "\[\"[^]]\+\"\]"
  syn match   moniLinkInter   "[A-Z][a-zA-Z]\+:[^[:space:]'\":<]\([^][:space:]<"'}|:,.)?!]\|[]"'}|:,.)?!][^][:space:]<"'}|:,.)?!]\)\+"
  
  if !exists("did_dic_syntax_inits")
    let did_dic_syntax_inits = 1
    hi link moniComment    Comment
    hi def  moniPI         ctermfg=red guifg=red
    hi def  moniBold       term=bold cterm=bold gui=bold
    hi def  moniItalic     term=italic cterm=italic gui=italic
    hi def  moniSettings   ctermfg=green guifg=green
    hi link moniMacro      Macro
    hi link moniHeader     Title
    hi def  moniTable      ctermfg=yellow guifg=yellow
    hi def  moniTableOpt   ctermfg=green guifg=green
    hi link moniRule       Title
    hi def  moniCode       ctermfg=cyan guifg=cyan
    hi def  moniLink       ctermfg=green guifg=green
    hi def  moniBullet     ctermfg=blue guifg=blue
    hi def  moniNull       ctermfg=blue guifg=blue
    hi link moniLinkMoin   moniLink
    hi link moniLinkEmail  moniLink
    hi link moniLinkUrl    moniLink
    hi link moniLinkBUrl   moniLinkUrl
    hi link moniLinkQUrl   moniLinkUrl
    hi link moniBracketed  moniLinkUrl
    hi link moniLinkInter  moniLink
    hi def  moniSmileys    ctermfg=yellow guifg=yellow
  endif
  
  let b:current_syntax = "moni"
  
  
  
  


1281625943;wkpark;Update of /cvsroot/moniwiki/moniwiki/contrib\nIn directory kill.kldp.net:/tmp/cvs-serv18384/contrib\n\nModified Files:\n	moni.vim \nLog Message:\n[#315584] FootNotes, sub, sup, del etc. syntax rules are added\n\n
wkpark      2010/08/13 00:12:24

  Modified:    contrib  moni.vim
  Log:
  [#315584] FootNotes, sub, sup, del etc. syntax rules are added
  
  Revision  Changes    Path
  1.2       +17 -6     moniwiki/contrib/moni.vim
  
  Index: moni.vim
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/contrib/moni.vim,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- moni.vim	12 Aug 2010 14:40:16 -0000	1.1
  +++ moni.vim	12 Aug 2010 15:12:23 -0000	1.2
  @@ -3,7 +3,7 @@
   " Language:	MoniWiki text
   " Maintainer:	Won-Kyu Park <wkpark@kldp.org>
   " Last Change:	Wed, 26 Jun 2002 21:31:09 -0300
  -" $Id: moni.vim,v 1.1 2010/08/12 14:40:16 wkpark Exp $
  +" $Id: moni.vim,v 1.2 2010/08/12 15:12:23 wkpark Exp $
   
   " modified version of the moin.vim by Gustavo Niemeyer <niemeyer@conectiva.com>
   "
  @@ -18,30 +18,41 @@
   syn region  moniSettings    start="\%^@ \(WARNING\|Using\)" end="^[^@]"me=e-1 end="^$" 
   syn region  moniItalic      start="''" end="''" oneline
   syn region  moniBold        start="'''" end="'''" oneline
  +syn region  moniSub         start=",," end=",," oneline
  +syn region  moniSup         start="\^\^" end="\^\^" oneline
  +syn region  moniSup1        start="\^" end="\^" oneline
  +syn region  moniDel         start="\~\~" end="\~\~" oneline
  +syn region  moniDel1        start="\-\-" end="\-\-" oneline
   syn match   moniNull        "''''''"
   syn match   moniBullet      "[[:space:]]\+\(\*\|[[:digit:]]\+\.\)"
   syn region  moniCode        start="{{{" end="}}}"
   syn match   moniComment     "^##.*$"
  -syn match   moniPI          "^#.*$"
  -syn region  moniMacro       start="\[\[" end="\]\]"
  +syn match   moniPI          "^#[^#].*$"
  +syn region  moniMacro       start="\[\[" end="\]\]" oneline
  +syn region  moniFootNote    start="\[\*" end="\]" oneline
   syn region  moniHeader      start="^\s*\z(=\{1,5}\) " end=" \z1$" oneline
   syn match   moniTableOpt    "||<[^>]*>"hs=s+2 contained
   syn region  moniTable       start="^||" end="||$" oneline contains=moniTableOpt
   syn match   moniRule        "^-\{4,}$"
  -syn match   moniSmileys     "\(\s\|\_^\)\(:)\|B:\|:))\|;)\|:D\|<:(\|X-(\|:O\|:(\|/!\\\|<!>\|(!)\|:?\|:\\\|>:>\|%)\|@)\||)\|;))\|(./)\|{OK}\|{X}\|{i}\|{1}\|{2}\|{3}\)\(\s\|\_$\)"
  +syn match   moniSmileys     "\(\s\|\_^\)\(:)\|B:\|:))\|;)\|:>\|:D\|<:(\|X-(\|:O\|:(\|/!\\\|<!>\|(!)\|\<!\>\|:?\|:\\\|>:>\|%)\|@)\||)\|;))\|(./)\|{OK}\|{X}\|{i}\|{1}\|{2}\|{3}\)\(\s\|\_$\)"
   syn match   moniLinkMoin    "\(/\?[[:upper:]][[:lower:][:digit:]]\+\)\{2,}"
   syn match   moniLinkEmail   "<\?[[:alnum:]-._+]\+@[[:alnum:]-]\+\.[[:alnum:]-.]\+>\?"
   syn match   moniLinkUrl     "\(http\|https\|ftp\|nntp\|news\|mailto\|telnet\|wiki\|file\|attachment\|inline\|drawing\):\([^][:space:]<"'}|:,.)?!]\|[]"'}|:,.)?!][^][:space:]<"'}|:,.)?!]\)\+"
   syn match   moniBracketed  "\[\([^]]\)\+\]"
   syn match   moniLinkBUrl    "\[\(\(http\|https\|ftp\|nntp\|news\|mailto\|telnet\|wiki\|file\|attachment\|inline\|drawing\):\([^][:space:]<"'}|:,.)?!]\|[]"'}|:,.)?!][^][:space:]<"'}|:,.)?!]\)\+\|#\)[^][:space:]]\+\(\s[^]]\+\)\?\]"
   syn match   moniLinkQUrl    "\[\"[^]]\+\"\]"
  -syn match   moniLinkInter   "[A-Z][a-zA-Z]\+:[^[:space:]'\":<]\([^][:space:]<"'}|:,.)?!]\|[]"'}|:,.)?!][^][:space:]<"'}|:,.)?!]\)\+"
  +syn match   moniLinkInter   "[A-Z][a-zA-Z0-9]\+:[^[:space:]'\":<]\([^][:space:]<"'}|:,.)?!]\|[]"'}|:,.)?!][^][:space:]<"'}|:,.)?!]\)\+"
   
   if !exists("did_dic_syntax_inits")
     let did_dic_syntax_inits = 1
     hi link moniComment    Comment
     hi def  moniPI         ctermfg=red guifg=red
  -  hi def  moniBold       term=bold cterm=bold gui=bold
  +  hi def  moniSup        ctermfg=green guifg=green
  +  hi link moniSup1       moniSup
  +  hi def  moniDel        ctermfg=red guifg=red
  +  hi link moniDel1       moniDel
  +  hi def  moniSub        ctermfg=green guifg=green
  +  hi link moniFootNote   Comment
     hi def  moniItalic     term=italic cterm=italic gui=italic
     hi def  moniSettings   ctermfg=green guifg=green
     hi link moniMacro      Macro
  
  
  


1281648077;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv17709/plugin\n\nModified Files:\n	LikePages.php \nLog Message:\n[#315580] fix to support alias with the LikePages action\n\n
wkpark      2010/08/13 06:21:17

  Modified:    plugin   LikePages.php
  Log:
  [#315580] fix to support alias with the LikePages action
  
  Revision  Changes    Path
  1.9       +6 -1      moniwiki/plugin/LikePages.php
  
  Index: LikePages.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/LikePages.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- LikePages.php	19 Apr 2010 11:26:46 -0000	1.8
  +++ LikePages.php	12 Aug 2010 21:21:17 -0000	1.9
  @@ -4,7 +4,7 @@
   // a LikePages plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: LikePages.php,v 1.8 2010/04/19 11:26:46 wkpark Exp $
  +// $Id: LikePages.php,v 1.9 2010/08/12 21:21:17 wkpark Exp $
   
   function do_LikePages($formatter,$options) {
   
  @@ -68,6 +68,11 @@
   
     if (empty($metawiki)) {
       $pages = $DBInfo->getPageLists();
  +    // get aliases
  +    if (empty($DBInfo->alias)) $DBInfo->initAlias();
  +    $alias = $DBInfo->alias->getAllPages();
  +
  +    $pages = array_merge($pages, $alias);
     } else {
       if (empty($DBInfo->metadb)) $DBInfo->initMetaDB();
       if (empty($DBInfo->metadb)) {
  
  
  


1281648373;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv17824\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315585] simple title search by ignore spaces\n\n
wkpark      2010/08/13 06:26:13

  Modified:    .        wikilib.php
  Log:
  [#315585] simple title search by ignore spaces
  
  Revision  Changes    Path
  1.319     +13 -3     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.318
  retrieving revision 1.319
  diff -u -r1.318 -r1.319
  --- wikilib.php	12 Aug 2010 12:46:09 -0000	1.318
  +++ wikilib.php	12 Aug 2010 21:26:13 -0000	1.319
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.318 2010/08/12 12:46:09 wkpark Exp $
  +// $Id: wikilib.php,v 1.319 2010/08/12 21:26:13 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -3184,11 +3184,21 @@
     $pages = array_merge($pages, $alias);
     $hits=array();
     foreach ($pages as $page) {
  -     preg_match("/".$needle."/i",$page,$matches);
  -     if ($matches)
  +     if (preg_match("/".$needle."/i", $page))
           $hits[]=$page;
     }
   
  +  if (empty($hits)) {
  +    // simple title search by ignore spaces
  +    $needle2 = str_replace(' ', "\\s*", $needle);
  +    $ws = preg_split("/([\x{AC00}-\x{D7F7}])/u", $needle2, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
  +    $needle2 = implode("\\s*", $ws);
  +    foreach ($pages as $page) {
  +      if (preg_match("/".$needle2."/i", $page))
  +        $hits[]=$page;
  +    }
  +  }
  +
     sort($hits);
   
     $idx=1;
  
  
  


1281648562;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv17907\n\nModified Files:\n	wiki.php \nLog Message:\n[#315577] oops! revert some changes at r1.549 : pcre 6.x does not support relative references.\n\n
wkpark      2010/08/13 06:29:22

  Modified:    .        wiki.php
  Log:
  [#315577] oops! revert some changes at r1.549 : pcre 6.x does not support relative references.
  
  Revision  Changes    Path
  1.559     +6 -6      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.558
  retrieving revision 1.559
  diff -u -r1.558 -r1.559
  --- wiki.php	12 Aug 2010 12:52:25 -0000	1.558
  +++ wiki.php	12 Aug 2010 21:29:22 -0000	1.559
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.558 2010/08/12 12:52:25 wkpark Exp $
  +// $Id: wiki.php,v 1.559 2010/08/12 21:29:22 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.558 $',1,-1);
  +$_revision = substr('$Revision: 1.559 $',1,-1);
   $_release = '1.1.5-RC2';
   
   #ob_start("ob_gzhandler");
  @@ -1992,7 +1992,7 @@
       }
   
       # recursive footnote regex
  -    $this->footrule='\[\*[^\[\]]*((?:[^\[\]]+|\[(?-1)\])*)\]';
  +    $this->footrule='\[\*[^\[\]]*((?:[^\[\]]+|\[(?13)\])*)\]';
   
       $this->cache= new Cache_text("pagelinks");
       $this->bcache= new Cache_text("backlinks");
  @@ -2055,7 +2055,7 @@
       #  * single bracketted words [Hello World] etc.
       #  * single bracketted words with double quotes ["Hello World"]
       #  * double bracketted words with double quotes [["Hello World"]]
  -    "(?<!\[)\!?\[(\[)$single(\")?(?:[^\[\]\",<\s'\*][^\[\],>]{0,255}[^\"])(?(-1)\"(?:[^\"]*))(?(-2)\])\](?!\])";
  +    "(?<!\[)\!?\[(\[)$single(\")?(?:[^\[\]\",<\s'\*][^\[\],>]{0,255}[^\"])(?(5)\"(?:[^\"]*))(?(4)\])\](?!\])";
   
       if ($camelcase)
         $this->wordrule.='|'.
  @@ -3683,7 +3683,7 @@
       $_myindlen=array(0);
       $oline='';
   
  -    $wordrule="({{{(?:(?:[^{}]+|(?<!{){{1,2}(?!{)|(?<!})}{1,2}(?!}))|(?-1))+}}})|".
  +    $wordrule="({{{(?:(?:[^{}]+|(?<!{){{1,2}(?!{)|(?<!})}{1,2}(?!}))|(?1))+}}})|".
                 "\[\[(?:[A-Za-z0-9]+(?:\((?:(?<!\]\]).)*\))?)\]\]|". # macro
                 "<<(?:[A-Za-z0-9]+(?:\((?:(?<!\>\>).)*\))?)>>|"; # macro
       if ($DBInfo->inline_latex) # single line latex syntax
  @@ -3830,7 +3830,7 @@
         $chunk=preg_split("/({{{
                           (?:(?:[^{}]+|
                           (?<!{){{1,2}(?!{)|
  -                        (?<!})}{1,2}(?!}))|(?-1)
  +                        (?<!})}{1,2}(?!}))|(?1)
                             )+}}})/x",$line,-1,PREG_SPLIT_DELIM_CAPTURE);
         $nc='';
         $k=1;
  
  
  


1281648802;wkpark;Update of /cvsroot/moniwiki/moniwiki/data\nIn directory kill.kldp.net:/tmp/cvs-serv19670\n\nRemoved Files:\n	wiki_indexer.pl \nLog Message:\nremove\n\n
wkpark      2010/08/13 06:33:23

  Removed:     data     wiki_indexer.pl
  Log:
  remove


1281679601;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv26925\n\nModified Files:\n	wiki.php \nLog Message:\n[#315586] fixed Wiki:"Hello World" link bug.\n\n
wkpark      2010/08/13 15:06:41

  Modified:    .        wiki.php
  Log:
  [#315586] fixed Wiki:"Hello World" link bug.
  
  Revision  Changes    Path
  1.560     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.559
  retrieving revision 1.560
  diff -u -r1.559 -r1.560
  --- wiki.php	12 Aug 2010 21:29:22 -0000	1.559
  +++ wiki.php	13 Aug 2010 06:06:41 -0000	1.560
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.559 2010/08/12 21:29:22 wkpark Exp $
  +// $Id: wiki.php,v 1.560 2010/08/13 06:06:41 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.559 $',1,-1);
  +$_revision = substr('$Revision: 1.560 $',1,-1);
   $_release = '1.1.5-RC2';
   
   #ob_start("ob_gzhandler");
  @@ -2045,7 +2045,7 @@
       #"\b(".$DBInfo->interwikirule."):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
       #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+\s{0,1})|".
       #"\b([A-Z][a-zA-Z]+):([^<>\s\'\/]{1,2}[^\(\)<>\s\']+[^\(\)<>\s\',\.:\?\!]+)|".
  -    "(?:\b|\^?)(?:[A-Z][a-zA-Z0-9]+):(?:[^:\(\)<>\s\']?[^\s<\'\",\!\010\006]+(?:\s(?![\x21-\x7e]))?(?<![,\.\)>]))|".
  +    "(?:\b|\^?)(?:[A-Z][a-zA-Z0-9]+):(?:\"[^\"]+\"|[^:\(\)<>\s\']?[^\s<\'\",\!\010\006]+(?:\s(?![\x21-\x7e]))?)(?<![,\.\)>])|".
       #"(?:\b|\^?)(?:[A-Z][a-zA-Z]+):(?:[^:\(\)<>\s\']?[^\s<\'\",:\!\010\006]+(?:\s(?![\x21-\x7e]))?(?<![,\.\)>]))|".
       #"(\b|\^?)([A-Z][a-zA-Z]+):([^:\(\)<>\s\']?[^<>\s\'\",:\?\!\010\006]*(\s(?![\x21-\x7e]))?)";
       # for PR #301713
  
  
  


1281712900;wkpark;Update of /cvsroot/moniwiki/moniwiki/locale/po\nIn directory kill.kldp.net:/tmp/cvs-serv15306/po\n\nModified Files:\n	fr.po ko.po moniwiki.pot \nLog Message:\nupdate po msgs\n\n
wkpark      2010/08/14 00:21:41

  Modified:    locale/po fr.po ko.po moniwiki.pot
  Log:
  update po msgs
  
  Revision  Changes    Path
  1.30      +482 -460  moniwiki/locale/po/fr.po
  
  Index: fr.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/fr.po,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- fr.po	30 Sep 2009 16:04:54 -0000	1.29
  +++ fr.po	13 Aug 2010 15:21:40 -0000	1.30
  @@ -4,7 +4,7 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2009-10-01 01:04+0900\n"
  +"POT-Creation-Date: 2010-08-14 00:12+0900\n"
   "PO-Revision-Date: 2003-08-17 22:51+0900\n"
   "Last-Translator: Serge Stinckwich <Serge.Stinckwich@info.unicaen.fr>\n"
   "Language-Team: fr <fr@li.org>\n"
  @@ -91,23 +91,23 @@
   msgstr ""
   
   # ../plugin/Attachment.php:24
  -#: ../plugin/Attachment.php:70 ../plugin/Attachment.php:333
  +#: ../plugin/Attachment.php:72 ../plugin/Attachment.php:341
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr "T?l?charger le nouvel attachement \"%s\""
   
   # ../plugin/OeKaki.php:118
  -#: ../plugin/Attachment.php:325
  +#: ../plugin/Attachment.php:333
   msgid "or paste a new png picture"
   msgstr "or Cr?er un nouveau dessin"
   
   # ../plugin/OeKaki.php:118
  -#: ../plugin/Attachment.php:330
  +#: ../plugin/Attachment.php:338
   msgid "or draw a new gif picture"
   msgstr "or Cr?er un nouveau dessin"
   
   # ../plugin/Attachment.php:24
  -#: ../plugin/Attachment.php:336
  +#: ../plugin/Attachment.php:344
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
  @@ -150,7 +150,7 @@
   msgstr ""
   
   # ../locale/dummy.php:5
  -#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1257
  +#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1395
   msgid "Delete"
   msgstr ""
   
  @@ -209,8 +209,8 @@
   msgid "No Subject error."
   msgstr ""
   
  -#: ../plugin/bbs.php:1009 ../plugin/Comment.php:196 ../plugin/Gallery.php:174
  -#: ../wikilib.php:1609 ../wikilib.php:1815
  +#: ../plugin/bbs.php:1009 ../plugin/Comment.php:201 ../plugin/Gallery.php:182
  +#: ../wikilib.php:1748 ../wikilib.php:1958
   msgid ""
   "Sorry, can not save page because some messages are blocked in this wiki."
   msgstr ""
  @@ -220,56 +220,56 @@
   msgid "New post added successfully"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:198
  +#: ../plugin/BlogChanges.php:203
   msgid "Category: "
   msgstr ""
   
   # ../locale/dummy.php:7
  -#: ../plugin/BlogChanges.php:200 ../locale/dummy.php:7
  +#: ../plugin/BlogChanges.php:205 ../locale/dummy.php:7
   msgid "BlogChanges"
   msgstr "ModificationsBlog"
   
   # ../wikilib.php:1483
  -#: ../plugin/BlogChanges.php:246
  +#: ../plugin/BlogChanges.php:251
   #, c-format
   msgid "Invalid category expr \"%s\""
   msgstr ""
   
   # ../plugin/processor/blog.php:43 ../plugin/processor/blog.php:45
  -#: ../plugin/BlogChanges.php:378 ../plugin/BlogChanges.php:380
  +#: ../plugin/BlogChanges.php:384 ../plugin/BlogChanges.php:386
   #: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
   msgid "Anonymous"
   msgstr "Anonyme"
   
   # ../plugin/processor/blog.php:78
  -#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  +#: ../plugin/BlogChanges.php:417 ../plugin/processor/blog.php:88
   #, c-format
   msgid "%d comment"
   msgstr "%d commentaire"
   
   # ../plugin/processor/blog.php:78
  -#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  +#: ../plugin/BlogChanges.php:417 ../plugin/processor/blog.php:88
   #, c-format
   msgid "%d comments"
   msgstr "%d commentaires"
   
   # ../plugin/processor/blog.php:70
  -#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:213
  -#: ../plugin/processor/blog.php:78
  +#: ../plugin/BlogChanges.php:419 ../plugin/Comment.php:218
  +#: ../plugin/processor/blog.php:80
   msgid "Add comment"
   msgstr "Ajouter un commentaire"
   
   # ../plugin/processor/blog.php:89
  -#: ../plugin/BlogChanges.php:423 ../plugin/processor/blog.php:97
  +#: ../plugin/BlogChanges.php:429 ../plugin/processor/blog.php:99
   msgid "track back"
   msgstr ""
   
   # ../plugin/BlogChanges.php:226
  -#: ../plugin/BlogChanges.php:443
  +#: ../plugin/BlogChanges.php:449
   msgid "Previous"
   msgstr "Pr?c?dent"
   
  -#: ../plugin/BlogChanges.php:446
  +#: ../plugin/BlogChanges.php:453
   msgid "Next"
   msgstr ""
   
  @@ -279,81 +279,81 @@
   msgstr ""
   
   # ../plugin/Blog.php:78
  -#: ../plugin/Blog.php:108
  +#: ../plugin/Blog.php:110
   #, c-format
   msgid "\"%s\" is updated"
   msgstr "\"%s\" est mis ? jour"
   
   # ../plugin/Blog.php:83
  -#: ../plugin/Blog.php:113
  +#: ../plugin/Blog.php:115
   msgid "Add Blog"
   msgstr "Ajouter un blog"
   
   # ../plugin/sendping.php:55
  -#: ../plugin/Blog.php:154
  +#: ../plugin/Blog.php:156
   msgid "Error: No blog entry found!"
   msgstr ""
   
  -#: ../plugin/Blog.php:164 ../plugin/Blog.php:166 ../plugin/Comment.php:226
  +#: ../plugin/Blog.php:166 ../plugin/Blog.php:168 ../plugin/Comment.php:231
   msgid "Error: Don't make a clone!"
   msgstr ""
   
   # ../plugin/Blog.php:137
  -#: ../plugin/Blog.php:192
  +#: ../plugin/Blog.php:194
   #, c-format
   msgid "Comment added to \"%s\""
   msgstr "Commentaire ajout? ? \"%s\""
   
   # ../plugin/Blog.php:140
  -#: ../plugin/Blog.php:195
  +#: ../plugin/Blog.php:197
   #, c-format
   msgid "Blog entry added to \"%s\""
   msgstr "Entr?e de blog ajout? ? \"%s\""
   
   # ../plugin/Blog.php:140
  -#: ../plugin/Blog.php:197
  +#: ../plugin/Blog.php:199
   #, c-format
   msgid "Blog entry \"%s\" added"
   msgstr "Entr?e de blog ajout? ? \"%s\""
   
   # ../plugin/Blog.php:140
  -#: ../plugin/Blog.php:199
  +#: ../plugin/Blog.php:201
   msgid "Blog entry added"
   msgstr "Entr?e de blog ajout? ?"
   
   # ../plugin/Blog.php:176
  -#: ../plugin/Blog.php:240
  +#: ../plugin/Blog.php:243
   #, c-format
   msgid "Add Comment to \"%s\""
   msgstr "Ajouter un commentaire ? \"%s\""
   
   # ../plugin/Blog.php:178
  -#: ../plugin/Blog.php:242
  +#: ../plugin/Blog.php:245
   #, c-format
   msgid "Add Blog entry to \"%s\""
   msgstr "Ajouter une entr?e de blog ? \"%s\""
   
  -#: ../plugin/Blog.php:260 ../plugin/Blog.php:332 ../plugin/PluginInfo.php:52
  +#: ../plugin/Blog.php:263 ../plugin/Blog.php:335 ../plugin/PluginInfo.php:52
   msgid "Name"
   msgstr ""
   
   # ../wiki.php:2950
  -#: ../plugin/Blog.php:262 ../plugin/Blog.php:333
  -#: ../plugin/RecentChanges.php:119
  +#: ../plugin/Blog.php:265 ../plugin/Blog.php:336
  +#: ../plugin/RecentChanges.php:125
   msgid "Title"
   msgstr "titre"
   
  -#: ../plugin/Blog.php:268 ../wikilib.php:1080
  +#: ../plugin/Blog.php:271 ../wikilib.php:1218
   msgid "GUI"
   msgstr ""
   
   # ../plugin/Blog.php:197
  -#: ../plugin/Blog.php:277 ../plugin/Comment.php:109
  +#: ../plugin/Blog.php:280 ../plugin/Comment.php:114
   msgid "Don't add a signature"
   msgstr "Ne pas ajouter de signature"
   
   # ../plugin/Blog.php:210
  -#: ../plugin/Blog.php:299
  +#: ../plugin/Blog.php:302
   msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
   msgstr "<b>Une r?gle horizontale</b> ---- ne s'applique pas au mode blog."
   
  @@ -370,7 +370,7 @@
   msgid "Clear cache dirs"
   msgstr ""
   
  -#: ../plugin/chat.php:36
  +#: ../plugin/chat.php:37
   msgid "No messages"
   msgstr ""
   
  @@ -396,124 +396,124 @@
   msgstr ""
   
   # ../plugin/Draw.php:58
  -#: ../plugin/Clip.php:50 ../plugin/Draw.php:119
  +#: ../plugin/Clip.php:51 ../plugin/Draw.php:119
   msgid "Fatal error !"
   msgstr "Erreur fatale !"
   
   # ../plugin/Draw.php:61
  -#: ../plugin/Clip.php:53 ../plugin/Draw.php:122
  +#: ../plugin/Clip.php:54 ../plugin/Draw.php:122
   msgid "No filename given"
   msgstr "Aucun nom de fichier donn?"
   
  -#: ../plugin/Clip.php:72
  +#: ../plugin/Clip.php:73
   msgid "Clipboard"
   msgstr ""
   
  -#: ../plugin/Clip.php:81
  +#: ../plugin/Clip.php:82
   msgid "Cut & Paste a Clipboard Image"
   msgstr ""
   
   # ../plugin/processor/blog.php:78
  -#: ../plugin/Comment.php:92
  +#: ../plugin/Comment.php:93
   msgid "Comment"
   msgstr "commentaire"
   
   # ../wikilib.php:482
  -#: ../plugin/Comment.php:93 ../wikilib.php:821 ../wikilib.php:1074
  -#: ../wikilib.php:1744 ../wikilib.php:1841 ../monisetup.php:1305
  +#: ../plugin/Comment.php:94 ../wikilib.php:949 ../wikilib.php:1212
  +#: ../wikilib.php:1887 ../wikilib.php:1984 ../monisetup.php:1311
   msgid "Preview"
   msgstr "Pr?visualisation"
   
   # ../plugin/rename.php:27
  -#: ../plugin/Comment.php:107
  +#: ../plugin/Comment.php:111
   msgid "Username"
   msgstr ""
   
   # ../wikilib.php:814
  -#: ../plugin/Comment.php:130
  +#: ../plugin/Comment.php:135
   msgid "Page is not writable"
   msgstr ""
   
   # ../wiki.php:3009
  -#: ../plugin/Comment.php:133
  +#: ../plugin/Comment.php:138
   msgid "You are not allowed to add a comment."
   msgstr ""
   
   # ../plugin/restore.php:27
  -#: ../plugin/Comment.php:134 ../plugin/Keywords.php:459
  +#: ../plugin/Comment.php:139 ../plugin/Keywords.php:465
   msgid "Page does not exists"
   msgstr ""
   
  -#: ../plugin/Comment.php:169 ../plugin/userform.php:118
  -#: ../plugin/userform.php:181 ../plugin/userform.php:204 ../wikilib.php:1794
  +#: ../plugin/Comment.php:174 ../plugin/userform.php:121
  +#: ../plugin/userform.php:184 ../plugin/userform.php:207 ../wikilib.php:1937
   msgid "Invalid ticket !"
   msgstr ""
   
  -#: ../plugin/Comment.php:174 ../plugin/userform.php:120
  -#: ../plugin/userform.php:206 ../wikilib.php:1799
  +#: ../plugin/Comment.php:179 ../plugin/userform.php:123
  +#: ../plugin/userform.php:209 ../wikilib.php:1942
   msgid "You need a ticket !"
   msgstr ""
   
   # ../wikilib.php:748 ../wikilib.php:777
  -#: ../plugin/Comment.php:202
  +#: ../plugin/Comment.php:207
   msgid "Preview comment"
   msgstr ""
   
   # ../plugin/Vote.php:109
  -#: ../plugin/Comment.php:333
  +#: ../plugin/Comment.php:338
   #, c-format
   msgid "%s is commented successfully"
   msgstr "Vote r?ussi"
   
   # ../plugin/Vote.php:109
  -#: ../plugin/Comment.php:334
  +#: ../plugin/Comment.php:339
   msgid "Comment added successfully"
   msgstr ""
   
   # ../plugin/css.php:29 ../plugin/css.php:37
  -#: ../plugin/css.php:33 ../plugin/css.php:41
  +#: ../plugin/css.php:34 ../plugin/css.php:42
   msgid "Back to UserPreferences"
   msgstr "Retour ? UserPreferences"
   
  -#: ../plugin/css.php:67
  +#: ../plugin/css.php:68
   msgid "CSS disabled !"
   msgstr ""
   
   # ../wiki.php:2211 ../wiki.php:2360
  -#: ../plugin/Diff.php:410 ../plugin/Info.php:246
  +#: ../plugin/Diff.php:411 ../plugin/Info.php:251
   msgid "No older revisions available"
   msgstr "Aucune r?vision plus ancienne disponible"
   
   # ../wikilib.php:803
  -#: ../plugin/Diff.php:415 ../plugin/Info.php:252 ../plugin/rcsexport.php:13
  +#: ../plugin/Diff.php:416 ../plugin/Info.php:257 ../plugin/rcsexport.php:13
   #: ../plugin/rcsimport.php:13
   msgid "Version info is not available in this wiki"
   msgstr ""
   
   # ../wiki.php:2338 ../wiki.php:2373 ../wikilib.php:770
  -#: ../plugin/Diff.php:426 ../wikilib.php:1764
  +#: ../plugin/Diff.php:428 ../wikilib.php:1907
   msgid "No difference found"
   msgstr "Aucune diff?rence trouv?"
   
   # ../wiki.php:2376
  -#: ../plugin/Diff.php:430
  +#: ../plugin/Diff.php:432
   msgid "Difference between versions"
   msgstr "Diff?rence entre les versions"
   
   # ../wiki.php:2378
  -#: ../plugin/Diff.php:432 ../plugin/Diff.php:548
  +#: ../plugin/Diff.php:434 ../plugin/Diff.php:550
   #, c-format
   msgid "Difference between r%s and r%s"
   msgstr "Diff?rence entre r%s et r%s"
   
   # ../wiki.php:2382
  -#: ../plugin/Diff.php:435 ../plugin/Diff.php:550
  +#: ../plugin/Diff.php:437 ../plugin/Diff.php:552
   #, c-format
   msgid "Difference between r%s and the current"
   msgstr "Diff?rence entre r%s et la version courante"
   
   # ../locale/dummy.php:7
  -#: ../plugin/Diff.php:552
  +#: ../plugin/Diff.php:554
   msgid "latest changes"
   msgstr ""
   
  @@ -523,18 +523,18 @@
   msgstr "Faire un nouveau dessin"
   
   # ../plugin/Draw.php:48
  -#: ../plugin/Draw.php:92 ../plugin/UploadFile.php:289
  +#: ../plugin/Draw.php:92 ../plugin/UploadFile.php:294
   #, c-format
   msgid "Fail to copy \"%s\" to \"%s\""
   msgstr "Impossible de copier \"%s\" vers \"%s\""
   
   # ../plugin/Draw.php:82
  -#: ../plugin/Draw.php:146
  +#: ../plugin/Draw.php:147
   msgid "Edit drawing"
   msgstr "?diter le dessin"
   
   # ../plugin/Draw.php:91
  -#: ../plugin/Draw.php:155
  +#: ../plugin/Draw.php:156
   msgid "Edit new drawing"
   msgstr "?diter un nouveau dessin"
   
  @@ -555,37 +555,60 @@
   msgid "%d day(s) passed from %s."
   msgstr "%d jour(s) se sont pass?s depuis %s."
   
  -#: ../plugin/FastSearch.php:44 ../plugin/FullSearch.php:90
  +#: ../plugin/FastSearch.php:37
  +msgid "Fast search"
  +msgstr ""
  +
  +#: ../plugin/FastSearch.php:38 ../plugin/FullSearch.php:74
  +msgid "Display context of search results"
  +msgstr ""
  +
  +#: ../plugin/FastSearch.php:49 ../plugin/FullSearch.php:90
   msgid "No search text"
   msgstr ""
   
  -#: ../plugin/FastSearch.php:50
  +#: ../plugin/FastSearch.php:55
   msgid "Couldn't open search database, sorry."
   msgstr ""
   
  +#: ../plugin/FastSearch.php:138 ../plugin/FullSearch.php:263
  +#, c-format
  +msgid "%d match"
  +msgstr ""
  +
  +#: ../plugin/FastSearch.php:138 ../plugin/FullSearch.php:263
  +#, c-format
  +msgid "%d matches"
  +msgstr ""
  +
   # ../plugin/FastSearch.php:116
  -#: ../plugin/FastSearch.php:114 ../plugin/FullSearch.php:19
  +#: ../plugin/FastSearch.php:160 ../plugin/FullSearch.php:19
   #, c-format
   msgid "Full text search for \"%s\""
   msgstr "Recherche en texte int?gral pour \"%s\""
   
   # ../plugin/FastSearch.php:125
  -#: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:38
  -#: ../wikilib.php:1530
  +#: ../plugin/FastSearch.php:177 ../plugin/FullSearch.php:38
  +#: ../wikilib.php:1669
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr "Trouv? %s s'appariant avec %s sur un total de %s pages"
   
  -#: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1532
  +#: ../plugin/FastSearch.php:179 ../plugin/FullSearch.php:40
  +#: ../wikilib.php:1671
   msgid "page"
   msgstr ""
   
  -#: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1532
  +#: ../plugin/FastSearch.php:179 ../plugin/FullSearch.php:40
  +#: ../wikilib.php:1671
   msgid "pages"
   msgstr ""
   
  +#: ../plugin/FastSearch.php:184
  +#, c-format
  +msgid "Show all %d results"
  +msgstr ""
  +
   # ../plugin/format.php:16
   #: ../plugin/format.php:17
   msgid "It is a XML format !"
  @@ -607,8 +630,8 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4488
  -#: ../wikilib.php:1060
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4686
  +#: ../wikilib.php:1196
   msgid "Refresh"
   msgstr ""
   
  @@ -625,15 +648,11 @@
   " ou cliquer sur %s pour faire une recherche en texte int?gral de cette "
   "page.\n"
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5456 ../wiki.php:5463
  -#: ../wikilib.php:1540
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5660 ../wiki.php:5668
  +#: ../wikilib.php:1679
   msgid "here"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:74
  -msgid "Display context of search results"
  -msgstr ""
  -
   #: ../plugin/FullSearch.php:75
   msgid "Search BackLinks only"
   msgstr ""
  @@ -642,7 +661,7 @@
   msgid "Case-sensitive searching"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:77 ../wikilib.php:2906 ../wikilib.php:2968
  +#: ../plugin/FullSearch.php:77 ../wikilib.php:3154 ../wikilib.php:3230
   msgid "Go"
   msgstr ""
   
  @@ -651,47 +670,39 @@
   msgstr ""
   
   # ../wikilib.php:1483
  -#: ../plugin/FullSearch.php:144 ../wikilib.php:2927
  +#: ../plugin/FullSearch.php:144 ../wikilib.php:3175
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "Expression de recherche \"%s\" invalide"
   
  -#: ../plugin/FullSearch.php:260
  -msgid " match"
  -msgstr ""
  -
  -#: ../plugin/FullSearch.php:260
  -msgid " matches"
  -msgstr ""
  -
   # ../plugin/TwinPages.php:20
  -#: ../plugin/Gallery.php:245 ../plugin/UploadedFiles.php:287
  +#: ../plugin/Gallery.php:253 ../plugin/UploadedFiles.php:289
   msgid "No files found"
   msgstr ""
   
   # ../plugin/processor/blog.php:70
  -#: ../plugin/Gallery.php:337 ../plugin/Gallery.php:350
  +#: ../plugin/Gallery.php:345 ../plugin/Gallery.php:360
   msgid "add comment"
   msgstr ""
   
   # ../plugin/processor/blog.php:78
  -#: ../plugin/Gallery.php:347
  +#: ../plugin/Gallery.php:355
   msgid "show comments"
   msgstr ""
   
   # ../wikilib.php:769
  -#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1596
  -#: ../wikilib.php:1762 ../wikilib.php:1769
  +#: ../plugin/Gallery.php:409 ../plugin/Gallery.php:413 ../wikilib.php:1735
  +#: ../wikilib.php:1905 ../wikilib.php:1912
   #, c-format
   msgid "Go back or return to %s"
   msgstr "Revenir en arri?re ou retourner ? %s"
   
  -#: ../plugin/Gallery.php:397
  +#: ../plugin/Gallery.php:410
   msgid "Comments are edited"
   msgstr ""
   
   # ../plugin/Blog.php:137
  -#: ../plugin/Gallery.php:401
  +#: ../plugin/Gallery.php:414
   msgid "Comments is added"
   msgstr ""
   
  @@ -716,17 +727,17 @@
   msgid "Ver."
   msgstr ""
   
  -#: ../plugin/Info.php:44 ../plugin/UploadedFiles.php:303
  +#: ../plugin/Info.php:44 ../plugin/UploadedFiles.php:305
   msgid "Date"
   msgstr ""
   
   # ../locale/dummy.php:7
  -#: ../plugin/Info.php:45 ../plugin/RecentChanges.php:120
  +#: ../plugin/Info.php:45 ../plugin/RecentChanges.php:129
   msgid "Changes"
   msgstr ""
   
   # ../wikilib.php:734
  -#: ../plugin/Info.php:46 ../plugin/RecentChanges.php:120
  +#: ../plugin/Info.php:46 ../plugin/RecentChanges.php:128
   msgid "Editor"
   msgstr ""
   
  @@ -738,34 +749,34 @@
   msgid "admin."
   msgstr ""
   
  -#: ../plugin/Info.php:68
  +#: ../plugin/Info.php:71
   msgid "Show all revisions"
   msgstr ""
   
  -#: ../plugin/Info.php:101
  +#: ../plugin/Info.php:106
   msgid "Yesterday"
   msgstr ""
   
  -#: ../plugin/Info.php:102
  +#: ../plugin/Info.php:107
   #, c-format
   msgid "%s days ago"
   msgstr ""
   
  -#: ../plugin/Info.php:104
  +#: ../plugin/Info.php:109
   #, c-format
   msgid "%s hours ago"
   msgstr ""
   
  -#: ../plugin/Info.php:106
  +#: ../plugin/Info.php:111
   #, c-format
   msgid "%s min ago"
   msgstr ""
   
  -#: ../plugin/Info.php:215 ../plugin/rename.php:80
  +#: ../plugin/Info.php:220 ../plugin/rename.php:80
   msgid "show only"
   msgstr ""
   
  -#: ../plugin/Info.php:219
  +#: ../plugin/Info.php:224
   msgid "purge"
   msgstr ""
   
  @@ -781,166 +792,171 @@
   msgstr ""
   
   # ../plugin/Vote.php:109
  -#: ../plugin/JME.php:104
  +#: ../plugin/JME.php:105
   msgid "Molecule successfully added"
   msgstr ""
   
  -#: ../plugin/JME.php:110
  +#: ../plugin/JME.php:111
   msgid "Edit Molecule"
   msgstr ""
   
  -#: ../plugin/JME.php:140
  +#: ../plugin/JME.php:141
   msgid "Edit new molecule"
   msgstr ""
   
  -#: ../plugin/Keywords.php:414
  +#: ../plugin/Keywords.php:418
   msgid "hits"
   msgstr ""
   
  -#: ../plugin/Keywords.php:422
  +#: ../plugin/Keywords.php:428
   msgid "add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:425
  +#: ../plugin/Keywords.php:431
   msgid "Update keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:427
  +#: ../plugin/Keywords.php:433
   msgid "Add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:428
  +#: ../plugin/Keywords.php:434
   msgid "Add as common words"
   msgstr ""
   
  -#: ../plugin/Keywords.php:429
  +#: ../plugin/Keywords.php:435
   msgid "Unselect all"
   msgstr ""
   
  -#: ../plugin/Keywords.php:430
  +#: ../plugin/Keywords.php:436
   msgid "Suggest new Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:439
  +#: ../plugin/Keywords.php:445
   msgid "select language"
   msgstr ""
   
   # ../wiki.php:3009
  -#: ../plugin/Keywords.php:458
  +#: ../plugin/Keywords.php:464
   msgid "You are not able to add keywords."
   msgstr ""
   
   # ../wikilib.php:814
  -#: ../plugin/Keywords.php:472
  +#: ../plugin/Keywords.php:478
   #, c-format
   msgid "%s is not found."
   msgstr ""
   
  -#: ../plugin/Keywords.php:588
  +#: ../plugin/Keywords.php:594
   msgid "Common words are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:635
  +#: ../plugin/Keywords.php:641
   #, c-format
   msgid "Keywords for %s are updated"
   msgstr ""
   
   # ../plugin/quicklinks.php:38
  -#: ../plugin/Keywords.php:661
  +#: ../plugin/Keywords.php:667
   msgid "Keywords are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:663
  +#: ../plugin/Keywords.php:669
   msgid "There are no changes found"
   msgstr ""
   
  -#: ../plugin/Keywords.php:676
  +#: ../plugin/Keywords.php:682
   msgid "Update with these Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:696 ../plugin/Keywords.php:700
  +#: ../plugin/Keywords.php:702 ../plugin/Keywords.php:706
   msgid "alphabetically"
   msgstr ""
   
  -#: ../plugin/Keywords.php:697
  +#: ../plugin/Keywords.php:703
   msgid "by frequency"
   msgstr ""
   
  -#: ../plugin/Keywords.php:699
  +#: ../plugin/Keywords.php:705
   msgid "by size"
   msgstr ""
   
  -#: ../plugin/Keywords.php:705
  +#: ../plugin/Keywords.php:711
   #, c-format
   msgid "Keywords list %s (or %s)"
   msgstr ""
   
  -#: ../plugin/Keywords.php:710
  +#: ../plugin/Keywords.php:716
   #, c-format
   msgid "Select keywords for %s"
   msgstr ""
   
   # ../wikilib.php:672 ../wikilib.php:1472
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1417 ../wikilib.php:2914
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1556 ../wikilib.php:3162
   msgid "Use more specific text"
   msgstr "Utiliser un texte plus sp?cifique"
   
  -#: ../plugin/LikePages.php:109
  -msgid "These pages share a similar word..."
  +# ../plugin/man_get.php:23
  +#: ../plugin/LikePages.php:79
  +msgid "No metadb found"
   msgstr ""
   
  -#: ../plugin/LikePages.php:123
  -msgid "These pages share an initial or final title word..."
  +#: ../plugin/LikePages.php:120
  +msgid "These pages share a similar word..."
   msgstr ""
   
  -#: ../plugin/LikePages.php:143
  -msgid "If you can't find this page, "
  +#: ../plugin/LikePages.php:134
  +msgid "These pages share an initial or final title word..."
   msgstr ""
   
   # ../plugin/man_get.php:23
  -#: ../plugin/LikePages.php:148
  +#: ../plugin/LikePages.php:158
   msgid "No similar pages found"
   msgstr ""
   
  -#: ../plugin/LikePages.php:150
  -msgid "You are strongly recommened to find it in MetaWikis. "
  -msgstr ""
  -
  -#: ../plugin/LikePages.php:153
  +#: ../plugin/LikePages.php:161
   #, c-format
   msgid "Like \"%s\""
   msgstr ""
   
  -#: ../plugin/LikePages.php:156
  +#: ../plugin/LikePages.php:166
  +msgid "If you can't find this page, "
  +msgstr ""
  +
  +#: ../plugin/LikePages.php:168
  +msgid "You are strongly recommened to find it in MetaWikis. "
  +msgstr ""
  +
  +#: ../plugin/LikePages.php:169
   msgid "Search all MetaWikis"
   msgstr ""
   
  -#: ../plugin/LikePages.php:157
  +#: ../plugin/LikePages.php:170
   msgid "Slow Slow"
   msgstr ""
   
   # ../plugin/login.php:24
  -#: ../plugin/login.php:29
  +#: ../plugin/login.php:31
   msgid "Login:"
   msgstr "Identifiant de connection :"
   
   # ../plugin/login.php:25
  -#: ../plugin/login.php:30
  +#: ../plugin/login.php:32
   msgid "Password:"
   msgstr "Mot de passe :"
   
   # ../plugin/login.php:27
  -#: ../plugin/login.php:31
  +#: ../plugin/login.php:33
   msgid "Join"
   msgstr "Se joindre ?"
   
   # ../plugin/login.php:41 ../plugin/minilogin.php:29
  -#: ../plugin/login.php:49 ../plugin/minilogin.php:25
  +#: ../plugin/login.php:51 ../plugin/minilogin.php:25
   msgid "Logout"
   msgstr "Se d?connecter"
   
   # ../locale/dummy.php:3 ../plugin/login.php:42 ../plugin/minilogin.php:28
  -#: ../plugin/login.php:50 ../plugin/minilogin.php:24 ../locale/dummy.php:3
  +#: ../plugin/login.php:52 ../plugin/minilogin.php:24 ../locale/dummy.php:3
   msgid "UserPreferences"
   msgstr "Pr?f?rencesUtilisateur"
   
  @@ -960,7 +976,7 @@
   msgstr ""
   
   # ../plugin/minilogin.php:22 ../wikilib.php:1076
  -#: ../plugin/minilogin.php:18 ../wikilib.php:2306
  +#: ../plugin/minilogin.php:18 ../wikilib.php:2487
   msgid "Login or Join"
   msgstr "Se connecter ou se joindre ?"
   
  @@ -1029,7 +1045,7 @@
   msgid "Edit Image"
   msgstr "?diter l'image"
   
  -#: ../plugin/pagelist.php:117 ../plugin/pagelist.php:134
  +#: ../plugin/pagelist.php:118 ../plugin/pagelist.php:135
   #, c-format
   msgid "[%sh %sm ago]"
   msgstr ""
  @@ -1038,7 +1054,7 @@
   msgid "First:"
   msgstr ""
   
  -#: ../plugin/pageview.php:75 ../plugin/SlideShow.php:121
  +#: ../plugin/pageview.php:75 ../plugin/SlideShow.php:120
   msgid "Next:"
   msgstr ""
   
  @@ -1061,37 +1077,37 @@
   msgid "Version"
   msgstr ""
   
  -#: ../plugin/print.php:24
  +#: ../plugin/print.php:28
   #, c-format
   msgid "Retrieved from %s"
   msgstr ""
   
  -#: ../plugin/print.php:29
  +#: ../plugin/print.php:33
   #, c-format
   msgid "last modified %s %s"
   msgstr ""
   
  -#: ../plugin/processor/blog.php:99
  +#: ../plugin/processor/blog.php:101
   msgid "raw"
   msgstr ""
   
   # ../locale/dummy.php:3
  -#: ../plugin/processor/bts.php:178
  +#: ../plugin/processor/bts.php:181
   msgid "Save Changes"
   msgstr ""
   
  -#: ../plugin/processor/monimarkup.php:507 ../wiki.php:3858
  +#: ../plugin/processor/monimarkup.php:515 ../wiki.php:4049
   msgid "edit"
   msgstr ""
   
   # ../plugin/quicklinks.php:16 ../plugin/subscribe.php:24
  -#: ../plugin/quicklinks.php:16 ../plugin/scrap.php:35
  +#: ../plugin/quicklinks.php:16 ../plugin/scrap.php:37
   #: ../plugin/subscribe.php:19 ../plugin/subscribe.php:55
   msgid "Please login or make your ID."
   msgstr "Merci de vous connectez ou de construire un ID"
   
   # ../plugin/quicklinks.php:22 ../plugin/subscribe.php:30
  -#: ../plugin/quicklinks.php:22 ../plugin/scrap.php:38
  +#: ../plugin/quicklinks.php:22 ../plugin/scrap.php:40
   #: ../plugin/subscribe.php:61
   msgid "Goto UserPreferences"
   msgstr "Aller ? UserPreferences"
  @@ -1115,31 +1131,31 @@
   msgid "Do you want to customize your quicklinks ?"
   msgstr "Voulez vous mettre ? jour vos liens rapides ?"
   
  -#: ../plugin/Rating.php:58
  +#: ../plugin/Rating.php:60
   msgid "Awful!"
   msgstr ""
   
  -#: ../plugin/Rating.php:59
  +#: ../plugin/Rating.php:61
   msgid "Not the worst ever."
   msgstr ""
   
  -#: ../plugin/Rating.php:60
  +#: ../plugin/Rating.php:62
   msgid "Not bad!"
   msgstr ""
   
  -#: ../plugin/Rating.php:61
  +#: ../plugin/Rating.php:63
   msgid "Useful!"
   msgstr ""
   
  -#: ../plugin/Rating.php:62
  +#: ../plugin/Rating.php:64
   msgid "Very Gooood!"
   msgstr ""
   
   # ../plugin/Vote.php:66 ../plugin/security/needtologin.php:25
   # ../plugin/security/needtologin.php:35
  -#: ../plugin/Rating.php:84 ../plugin/security/community.php:26
  -#: ../plugin/security/community.php:36 ../plugin/security/community.php:46
  -#: ../plugin/security/community.php:61 ../plugin/security/mustlogin.php:29
  +#: ../plugin/Rating.php:86 ../plugin/security/community.php:27
  +#: ../plugin/security/community.php:37 ../plugin/security/community.php:47
  +#: ../plugin/security/community.php:62 ../plugin/security/mustlogin.php:29
   #: ../plugin/security/mustlogin.php:40 ../plugin/security/mustlogin.php:51
   #: ../plugin/security/mustlogin.php:67 ../plugin/security/needtologin.php:29
   #: ../plugin/security/needtologin.php:40 ../plugin/security/needtologin.php:51
  @@ -1147,12 +1163,12 @@
   msgid "Please Login or make your ID on this Wiki ;)"
   msgstr "Merci de vous connecter ou de construire un ID sur ce Wiki ;)"
   
  -#: ../plugin/Rating.php:188
  +#: ../plugin/Rating.php:190
   msgid "Invalid rating request !"
   msgstr ""
   
   # ../plugin/Vote.php:109
  -#: ../plugin/Rating.php:203
  +#: ../plugin/Rating.php:205
   msgid "Rating successfully !"
   msgstr ""
   
  @@ -1165,8 +1181,8 @@
   # ../plugin/rename.php:36
   #: ../plugin/rcsimport.php:32 ../plugin/rcsimport.php:88
   #: ../plugin/rename.php:77 ../plugin/revert.php:82
  -#: ../plugin/UploadedFiles.php:452 ../plugin/userinfo.php:37
  -#: ../wikilib.php:1256 ../wikilib.php:2225
  +#: ../plugin/UploadedFiles.php:453 ../plugin/userinfo.php:37
  +#: ../wikilib.php:1394 ../wikilib.php:2402
   msgid "Password"
   msgstr "Mot de passe"
   
  @@ -1238,42 +1254,42 @@
   msgid "%d days ago"
   msgstr ""
   
  +# ../locale/dummy.php:3
  +#: ../plugin/RecentChanges.php:86
  +msgid "Recent Changes"
  +msgstr "ChangementsR?cents"
  +
   # ../locale/dummy.php:7
  -#: ../plugin/RecentChanges.php:119
  +#: ../plugin/RecentChanges.php:126
   msgid "Change Date"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:122
  +#: ../plugin/RecentChanges.php:131
   msgid "Hits"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:168
  +#: ../plugin/RecentChanges.php:182
   msgid "Show changes for "
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:173
  +#: ../plugin/RecentChanges.php:187
   msgid "days ago"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:278
  +#: ../plugin/RecentChanges.php:293
   msgid "set bookmark"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:283
  +#: ../plugin/RecentChanges.php:298
   msgid "Bookmark"
   msgstr ""
   
   # ../locale/dummy.php:7
  -#: ../plugin/RecentChanges.php:360
  +#: ../plugin/RecentChanges.php:375
   #, c-format
   msgid "%s changes"
   msgstr ""
   
  -# ../locale/dummy.php:3
  -#: ../plugin/RecentChanges.php:374
  -msgid "Recent Changes"
  -msgstr "ChangementsR?cents"
  -
   #: ../plugin/referer.php:139
   msgid "Referer history"
   msgstr ""
  @@ -1318,7 +1334,7 @@
   msgstr ""
   
   # ../plugin/rename.php:27
  -#: ../plugin/rename.php:69 ../plugin/UploadFile.php:421
  +#: ../plugin/rename.php:69 ../plugin/UploadFile.php:427
   msgid "Rename"
   msgstr "Renommer"
   
  @@ -1332,7 +1348,7 @@
   msgstr "Seulement le WikiMaster peut renommer cette page"
   
   # ../plugin/rename.php:39 ../wikilib.php:588
  -#: ../plugin/rename.php:79 ../wikilib.php:1302
  +#: ../plugin/rename.php:79 ../wikilib.php:1440
   msgid "with revision history"
   msgstr "avec l'historique de r?vision"
   
  @@ -1380,7 +1396,7 @@
   msgid "Select a tarball file to restore"
   msgstr ""
   
  -#: ../plugin/revert.php:23 ../wiki.php:5458
  +#: ../plugin/revert.php:23 ../wiki.php:5662
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr ""
  @@ -1408,7 +1424,7 @@
   msgid "Are you really want to revert this page ?"
   msgstr ""
   
  -#: ../plugin/revert.php:74 ../wikilib.php:1071
  +#: ../plugin/revert.php:74 ../wikilib.php:1207
   msgid "Summary"
   msgstr ""
   
  @@ -1435,30 +1451,30 @@
   msgstr ""
   
   # ../plugin/subscribe.php:46
  -#: ../plugin/scrap.php:53
  +#: ../plugin/scrap.php:55
   msgid "Scrap lists updated."
   msgstr ""
   
   # ../plugin/Blog.php:78
  -#: ../plugin/scrap.php:61
  +#: ../plugin/scrap.php:65
   #, c-format
   msgid "\"%s\" is unscrapped."
   msgstr ""
   
   # ../wikilib.php:816
  -#: ../plugin/scrap.php:64
  +#: ../plugin/scrap.php:68
   #, c-format
   msgid "\"%s\" is scrapped."
   msgstr ""
   
   # ../plugin/subscribe.php:58
  -#: ../plugin/scrap.php:89
  +#: ../plugin/scrap.php:94
   #, c-format
   msgid "Do you want to scrap \"%s\" ?"
   msgstr ""
   
   # ../locale/dummy.php:3
  -#: ../plugin/scrap.php:92
  +#: ../plugin/scrap.php:97
   msgid "Scrapped pages"
   msgstr ""
   
  @@ -1480,8 +1496,8 @@
   
   # ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
   # c-format
  -#: ../plugin/security/acl.php:217 ../plugin/security/community.php:25
  -#: ../plugin/security/community.php:35 ../plugin/security/community.php:45
  +#: ../plugin/security/acl.php:217 ../plugin/security/community.php:26
  +#: ../plugin/security/community.php:36 ../plugin/security/community.php:46
   #: ../plugin/security/mustlogin.php:28 ../plugin/security/mustlogin.php:39
   #: ../plugin/security/mustlogin.php:50 ../plugin/security/needtologin.php:28
   #: ../plugin/security/needtologin.php:39 ../plugin/security/needtologin.php:50
  @@ -1505,7 +1521,7 @@
   
   # ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
   # c-format
  -#: ../plugin/security/community.php:60 ../plugin/security/htaccesslogin.php:46
  +#: ../plugin/security/community.php:61 ../plugin/security/htaccesslogin.php:46
   #: ../plugin/security/mustlogin.php:66 ../plugin/security/userbased.php:30
   #: ../plugin/security/userbased.php:38 ../plugin/security/userbased.php:46
   #: ../plugin/security/userbased.php:61 ../plugin/security/wikimaster.php:29
  @@ -1549,20 +1565,20 @@
   msgid "No page found"
   msgstr ""
   
  -#: ../plugin/SlideShow.php:102
  +#: ../plugin/SlideShow.php:101
   msgid "Start:"
   msgstr ""
   
  -#: ../plugin/SlideShow.php:111
  +#: ../plugin/SlideShow.php:110
   msgid "End:"
   msgstr ""
   
   # ../wikilib.php:482
  -#: ../plugin/SlideShow.php:131
  +#: ../plugin/SlideShow.php:130
   msgid "Prev:"
   msgstr ""
   
  -#: ../plugin/SlideShow.php:138
  +#: ../plugin/SlideShow.php:137
   msgid "Return"
   msgstr ""
   
  @@ -1624,15 +1640,16 @@
   msgid "Subscribed pages"
   msgstr ""
   
  -#: ../plugin/SWFUpload.php:136
  +#: ../plugin/SWFUpload.php:137
   msgid "Files..."
   msgstr ""
   
  -#: ../plugin/SWFUpload.php:137 ../plugin/UploadFile.php:426
  -msgid "Upload"
  +#: ../plugin/SWFUpload.php:138 ../plugin/UploadFile.php:443
  +#: ../plugin/UploadForm.php:270
  +msgid "Upload files"
   msgstr ""
   
  -#: ../plugin/SWFUpload.php:138
  +#: ../plugin/SWFUpload.php:139
   msgid "Cancel All files"
   msgstr ""
   
  @@ -1676,7 +1693,7 @@
   msgid "-- Select --"
   msgstr ""
   
  -#: ../plugin/ticket.php:172
  +#: ../plugin/ticket.php:173
   msgid "Invalid use of ticket"
   msgstr ""
   
  @@ -1764,39 +1781,39 @@
   msgstr "TwinPages de %s"
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../plugin/TwinPages.php:19 ../wiki.php:5442
  +#: ../plugin/TwinPages.php:20 ../wiki.php:5645
   msgid "See [TwinPages]: "
   msgstr "Voir [TwinPages]: "
   
   # ../plugin/TwinPages.php:20
  -#: ../plugin/TwinPages.php:21
  +#: ../plugin/TwinPages.php:22
   msgid "No TwinPages found."
   msgstr "Aucune TwinPages trouv?"
   
   # ../plugin/rename.php:27
  -#: ../plugin/UploadedFiles.php:301
  +#: ../plugin/UploadedFiles.php:303
   msgid "File name"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:302
  +#: ../plugin/UploadedFiles.php:304
   msgid "Size"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:353
  +#: ../plugin/UploadedFiles.php:355
   msgid "Next page &raquo;"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:355
  +#: ../plugin/UploadedFiles.php:357
   msgid "&laquo; First page"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:447
  +#: ../plugin/UploadedFiles.php:448
   #, c-format
   msgid "Total %d files"
   msgstr ""
   
   # ../wikilib.php:550
  -#: ../plugin/UploadedFiles.php:453 ../wikilib.php:1234
  +#: ../plugin/UploadedFiles.php:454 ../wikilib.php:1372
   msgid "Delete selected files"
   msgstr "Effacer les fichiers s?lectionn?s"
   
  @@ -1836,322 +1853,322 @@
   msgstr ""
   
   # ../wikilib.php:519
  -#: ../plugin/UploadFile.php:180 ../plugin/UploadFile.php:194
  +#: ../plugin/UploadFile.php:184 ../plugin/UploadFile.php:198
   #, c-format
   msgid "The %s type of %s is not allowed to upload"
   msgstr ""
   
   # ../wikilib.php:519
  -#: ../plugin/UploadFile.php:196
  +#: ../plugin/UploadFile.php:200
   #, c-format
   msgid "%s is not allowed to upload"
   msgstr "%s n'est pas une action valide"
   
  -#: ../plugin/UploadFile.php:251
  +#: ../plugin/UploadFile.php:255
   #, c-format
   msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
   msgstr ""
   
  -#: ../plugin/UploadFile.php:268
  +#: ../plugin/UploadFile.php:273
   msgid "ERROR:"
   msgstr ""
   
   # ../wikilib.php:887
  -#: ../plugin/UploadFile.php:300
  +#: ../plugin/UploadFile.php:305
   #, c-format
   msgid "File \"%s\" is uploaded successfully"
   msgstr ""
   
   # ../wikilib.php:887
  -#: ../plugin/UploadFile.php:366
  +#: ../plugin/UploadFile.php:372
   msgid "Files are uploaded successfully"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:402
  +#: ../plugin/UploadFile.php:408
   msgid "Multi upload form"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:415
  +#: ../plugin/UploadFile.php:421
   msgid "Replace original file"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:416
  +#: ../plugin/UploadFile.php:422
   msgid "Rename if it already exist"
   msgstr ""
   
  +#: ../plugin/UploadFile.php:432
  +msgid "Upload"
  +msgstr ""
  +
   # ../plugin/minilogin.php:30
  -#: ../plugin/UploadFile.php:429
  +#: ../plugin/UploadFile.php:435
   #, c-format
   msgid "or %s."
   msgstr "ou %s"
   
  -#: ../plugin/UploadFile.php:429
  +#: ../plugin/UploadFile.php:435
   msgid "Multiple Upload files"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:437 ../plugin/UploadForm.php:222
  -msgid "Upload files"
  -msgstr ""
  -
  -#: ../plugin/UploadForm.php:17
  +#: ../plugin/UploadForm.php:19
   msgid "Successfully Uploaded"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:18
  +#: ../plugin/UploadForm.php:20
   msgid "Choose File"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:220
  +#: ../plugin/UploadForm.php:268
   msgid "add files"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:221
  +#: ../plugin/UploadForm.php:269
   msgid "add a file"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:223
  +#: ../plugin/UploadForm.php:271
   msgid "Reset"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:224
  +#: ../plugin/UploadForm.php:272
   msgid "Attachments"
   msgstr ""
   
  -#: ../plugin/userform.php:35 ../plugin/userform.php:38
  +#: ../plugin/userform.php:36 ../plugin/userform.php:39
   msgid "Successfully confirmed"
   msgstr ""
   
   # ../wikilib.php:887
  -#: ../plugin/userform.php:36
  +#: ../plugin/userform.php:37
   msgid "Your e-mail address is confirmed successfully"
   msgstr "Mail envoy? avec succ?s"
   
   # ../wikilib.php:887
  -#: ../plugin/userform.php:43
  +#: ../plugin/userform.php:44
   msgid "Your new password is confirmed successfully"
   msgstr ""
   
  -#: ../plugin/userform.php:45
  +#: ../plugin/userform.php:46
   msgid "Confirmation missmatched !"
   msgstr ""
   
   # ../plugin/subscribe.php:22
  -#: ../plugin/userform.php:46 ../plugin/userform.php:50
  +#: ../plugin/userform.php:47 ../plugin/userform.php:51
   msgid "Please try again to register your e-mail address"
   msgstr "Merci de rentrer d'abord votre adresse de messagerie"
   
   # ../plugin/restore.php:27
  -#: ../plugin/userform.php:49
  +#: ../plugin/userform.php:50
   msgid "ID does not exists !"
   msgstr "Erreur : l'archive n'existe pas"
   
  -#: ../plugin/userform.php:82 ../plugin/userform.php:274
  +#: ../plugin/userform.php:84 ../plugin/userform.php:281
   #, c-format
   msgid "Successfully login as '%s'"
   msgstr ""
   
   # ../wiki.php:3024
  -#: ../plugin/userform.php:90 ../plugin/userform.php:279
  -#: ../plugin/userform.php:322
  +#: ../plugin/userform.php:92 ../plugin/userform.php:286
  +#: ../plugin/userform.php:329
   msgid "Invalid password !"
   msgstr "Merci d'entrer un mot de passe valide"
   
  -#: ../plugin/userform.php:94
  +#: ../plugin/userform.php:97
   #, c-format
   msgid "\"%s\" does not exists on this wiki !"
   msgstr ""
   
  -#: ../plugin/userform.php:96
  +#: ../plugin/userform.php:99
   msgid "Make new ID on this wiki"
   msgstr ""
   
   # ../wikilib.php:575
  -#: ../plugin/userform.php:102
  +#: ../plugin/userform.php:105
   msgid "Cookie deleted !"
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../plugin/userform.php:107 ../wikilib.php:2376
  +#: ../plugin/userform.php:110 ../wikilib.php:2562
   msgid "E-mail new password"
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../plugin/userform.php:152
  +#: ../plugin/userform.php:155
   msgid "New password confirmation"
   msgstr ""
   
   # ../wiki.php:3024
  -#: ../plugin/userform.php:157
  +#: ../plugin/userform.php:160
   msgid "Please confirm your new password"
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../plugin/userform.php:159
  +#: ../plugin/userform.php:162
   #, c-format
   msgid "Your new password is %s"
   msgstr ""
   
  -#: ../plugin/userform.php:160 ../plugin/userform.php:266
  +#: ../plugin/userform.php:163 ../plugin/userform.php:269
   msgid "Please change your password later"
   msgstr ""
   
  -#: ../plugin/userform.php:164 ../plugin/userform.php:172
  +#: ../plugin/userform.php:167 ../plugin/userform.php:175
   msgid "Fail to e-mail notification !"
   msgstr ""
   
  -#: ../plugin/userform.php:167
  +#: ../plugin/userform.php:170
   msgid "New password is sent to your e-mail !"
   msgstr ""
   
   # ../plugin/subscribe.php:22
  -#: ../plugin/userform.php:168
  +#: ../plugin/userform.php:171
   msgid "Please check your e-mail"
   msgstr ""
   
  -#: ../plugin/userform.php:173
  +#: ../plugin/userform.php:176
   msgid "E-mail mismatch !"
   msgstr ""
   
  -#: ../plugin/userform.php:175
  +#: ../plugin/userform.php:178
   msgid "Invalid request"
   msgstr ""
   
   # ../plugin/subscribe.php:22
  -#: ../plugin/userform.php:176
  +#: ../plugin/userform.php:179
   msgid "Please confirm your e-mail address first !"
   msgstr ""
   
  -#: ../plugin/userform.php:183
  +#: ../plugin/userform.php:186
   msgid "ID and e-mail mismatch !"
   msgstr ""
   
   # ../plugin/subscribe.php:22
  -#: ../plugin/userform.php:185
  +#: ../plugin/userform.php:188
   msgid "Please try again or make a new profile"
   msgstr ""
   
  -#: ../plugin/userform.php:225 ../plugin/userform.php:310
  +#: ../plugin/userform.php:228 ../plugin/userform.php:317
   msgid "too short password!"
   msgstr ""
   
  -#: ../plugin/userform.php:226
  +#: ../plugin/userform.php:229
   msgid "mismatch password!"
   msgstr ""
   
  -#: ../plugin/userform.php:227 ../plugin/userform.php:314
  +#: ../plugin/userform.php:230 ../plugin/userform.php:321
   msgid "not acceptable character found in the password!"
   msgstr ""
   
  -#: ../plugin/userform.php:230
  +#: ../plugin/userform.php:233
   msgid "Your password is too simple to use as a password !"
   msgstr ""
   
   # ../plugin/subscribe.php:22
  -#: ../plugin/userform.php:236 ../plugin/userform.php:345
  +#: ../plugin/userform.php:239 ../plugin/userform.php:356
   msgid "Your email address is not valid"
   msgstr "Merci de rentrer d'abord votre adresse de messagerie"
   
   # ../wikilib.php:547
  -#: ../plugin/userform.php:241 ../plugin/userform.php:413
  +#: ../plugin/userform.php:244 ../plugin/userform.php:423
   msgid "Fail to register"
   msgstr ""
   
   # ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
   # c-format
  -#: ../plugin/userform.php:242 ../plugin/userform.php:414
  +#: ../plugin/userform.php:245 ../plugin/userform.php:424
   msgid "You are not allowed to register on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5394
  -#: ../wiki.php:5405
  +#: ../plugin/userform.php:246 ../plugin/userform.php:425 ../wiki.php:5596
  +#: ../wiki.php:5607
   msgid "Please contact WikiMasters"
   msgstr ""
   
  -#: ../plugin/userform.php:247
  +#: ../plugin/userform.php:250
   msgid "Successfully added!"
   msgstr ""
   
  -#: ../plugin/userform.php:253
  +#: ../plugin/userform.php:256
   #, c-format
   msgid "Successfully added as '%s'"
   msgstr ""
   
  -#: ../plugin/userform.php:254
  +#: ../plugin/userform.php:257
   msgid "Please check your mailbox"
   msgstr ""
   
  -#: ../plugin/userform.php:261 ../plugin/userform.php:339
  +#: ../plugin/userform.php:264 ../plugin/userform.php:346
   msgid "E-mail confirmation"
   msgstr ""
   
   # ../plugin/subscribe.php:22
  -#: ../plugin/userform.php:263 ../plugin/userform.php:341
  +#: ../plugin/userform.php:266 ../plugin/userform.php:348
   msgid "Please confirm your email address"
   msgstr ""
   
  -#: ../plugin/userform.php:265
  +#: ../plugin/userform.php:268
   #, c-format
   msgid "Your initial password is %s"
   msgstr ""
   
  -#: ../plugin/userform.php:269
  +#: ../plugin/userform.php:275
   msgid "Confirmation E-mail sent"
   msgstr ""
   
  -#: ../plugin/userform.php:284
  +#: ../plugin/userform.php:291
   msgid "Invalid username !"
   msgstr ""
   
  -#: ../plugin/userform.php:312
  +#: ../plugin/userform.php:319
   msgid "mismatch password !"
   msgstr ""
   
  -#: ../plugin/userform.php:315 ../plugin/userform.php:323
  +#: ../plugin/userform.php:322 ../plugin/userform.php:330
   msgid "Password is not changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:317
  +#: ../plugin/userform.php:324
   msgid "Password is changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:319
  +#: ../plugin/userform.php:326
   msgid "Password is too simple to use as a password !"
   msgstr ""
   
  -#: ../plugin/userform.php:343
  +#: ../plugin/userform.php:353
   msgid "E-mail confirmation mail sent"
   msgstr ""
   
  -#: ../plugin/userform.php:354
  +#: ../plugin/userform.php:365
   msgid "Your Nickname already used as ID in this wiki"
   msgstr ""
   
   # ../wikilib.php:887
  -#: ../plugin/userform.php:359
  +#: ../plugin/userform.php:370
   msgid "Profiles are saved successfully !"
   msgstr ""
   
  -#: ../plugin/userform.php:382 ../plugin/userform.php:435
  +#: ../plugin/userform.php:393 ../plugin/userform.php:445
   #, c-format
   msgid "Authentication request was failed: %s"
   msgstr ""
   
  -#: ../plugin/userform.php:408
  +#: ../plugin/userform.php:418
   #, c-format
   msgid "Successfully login as '%s' via OpenID."
   msgstr ""
   
  -#: ../plugin/userform.php:422
  +#: ../plugin/userform.php:432
   #, c-format
   msgid "Your Nickname %s already used as ID in this Wiki."
   msgstr ""
   
  -#: ../plugin/userform.php:430
  +#: ../plugin/userform.php:440
   #, c-format
   msgid "OpenID Authentication successful and saved as %s."
   msgstr ""
   
  -#: ../plugin/userform.php:437
  +#: ../plugin/userform.php:447
   msgid "Invalid OpenID Authentication request"
   msgstr ""
   
  @@ -2208,169 +2225,169 @@
   msgid "Whois search result for %s"
   msgstr ""
   
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2664
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2911
   msgid "Others"
   msgstr ""
   
   # ../wiki.php:850
  -#: ../wiki.php:1227
  +#: ../wiki.php:1316
   #, c-format
   msgid "Rename %s to %s"
   msgstr "Renommer %s en %s"
   
   # ../wikilib.php:803
  -#: ../wiki.php:1647
  +#: ../wiki.php:1740
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
   # ../plugin/restore.php:27
  -#: ../wiki.php:1657
  +#: ../wiki.php:1750
   msgid "File does not exist"
   msgstr "Erreur : l'archive n'existe pas"
   
   # ../plugin/restore.php:27
  -#: ../wiki.php:2041
  +#: ../wiki.php:2179
   #, c-format
   msgid "File '%s' does not exist."
   msgstr ""
   
   # ../wikilib.php:521
  -#: ../wiki.php:2931 ../wiki.php:2942 ../wiki.php:5637
  +#: ../wiki.php:3109 ../wiki.php:3120 ../wiki.php:5870
   msgid "Invalid ajax action."
   msgstr ""
   
  -#: ../wiki.php:3433
  +#: ../wiki.php:3619
   msgid "Tags:"
   msgstr ""
   
   # ../wiki.php:1824
  -#: ../wiki.php:3461
  +#: ../wiki.php:3648
   #, c-format
   msgid "See %s"
   msgstr "Voir %s"
   
   # ../wiki.php:1824
  -#: ../wiki.php:3461
  +#: ../wiki.php:3648
   #, c-format
   msgid "TwinPages"
   msgstr ""
   
   # ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../wiki.php:3466
  +#: ../wiki.php:3653
   msgid "See [TwinPages]:"
   msgstr "Voir [TwinPages]: "
   
  -#: ../wiki.php:4038
  +#: ../wiki.php:4233
   msgid "Sister Sites Index"
   msgstr ""
   
   # ../locale/dummy.php:6 ../wiki.php:2553
  -#: ../wiki.php:4484 ../locale/dummy.php:6
  +#: ../wiki.php:4682 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "?ditionTexte"
   
   # ../wiki.php:2555
  -#: ../wiki.php:4486
  +#: ../wiki.php:4684
   msgid "NotEditable"
   msgstr "Pas?ditable"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wiki.php:4490 ../locale/dummy.php:6
  +#: ../wiki.php:4688 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "MontrePage"
   
   # ../locale/dummy.php:3 ../locale/dummy.php:5 ../wiki.php:2558
  -#: ../wiki.php:4491 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4689 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "TrouvePage"
   
  -#: ../wiki.php:4937
  +#: ../wiki.php:5150
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5200
  +#: ../wiki.php:5410
   msgid "Someone logged in at another place !"
   msgstr ""
   
  -#: ../wiki.php:5393
  +#: ../wiki.php:5595
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5404
  +#: ../wiki.php:5606
   msgid "You are blocked in this wiki"
   msgstr ""
   
   # ../wiki.php:2945 ../wiki.php:2948
  -#: ../wiki.php:5444 ../wiki.php:5453 ../wikilib.php:1520
  +#: ../wiki.php:5647 ../wiki.php:5656 ../wikilib.php:1659
   msgid "Create this page"
   msgstr "Cr?er cette page"
   
   # ../wikilib.php:816
  -#: ../wiki.php:5455
  +#: ../wiki.php:5658
   #, c-format
   msgid "%s has saved revisions"
   msgstr "%s est sauvegard?"
   
   # ../wiki.php:2950
  -#: ../wiki.php:5456 ../wiki.php:5463
  +#: ../wiki.php:5660 ../wiki.php:5668
   #, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr ""
   
  -#: ../wiki.php:5461
  +#: ../wiki.php:5666
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr ""
   
  -#: ../wiki.php:5468
  +#: ../wiki.php:5674
   msgid "Please try to search with another word"
   msgstr ""
   
   # ../wiki.php:2956
  -#: ../wiki.php:5480
  +#: ../wiki.php:5686
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr "%s ou alternativement, utiliser un de ces mod?les de page :\n"
   
  -#: ../wiki.php:5483
  +#: ../wiki.php:5689
   msgid "You have no templates"
   msgstr ""
   
   # ../wikilib.php:427
  -#: ../wiki.php:5485
  +#: ../wiki.php:5691
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
   
  -#: ../wiki.php:5496
  +#: ../wiki.php:5702
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
   # ../wikilib.php:521
  -#: ../wiki.php:5639
  +#: ../wiki.php:5872
   msgid "Invalid macro action."
   msgstr ""
   
   # ../wiki.php:3009
  -#: ../wiki.php:5649
  +#: ../wiki.php:5882
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "Vous n'?tes pas autoris? ? '%s'"
   
   # ../wiki.php:3021
  -#: ../wiki.php:5669
  +#: ../wiki.php:5902
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "Impossible de pouvoir \"%s\" !"
   
   # ../wiki.php:3024
  -#: ../wiki.php:5672
  +#: ../wiki.php:5905
   msgid "Please enter the valid password"
   msgstr "Merci d'entrer un mot de passe valide"
   
   # ../wikilib.php:368
  -#: ../wikilib.php:682
  +#: ../wikilib.php:806
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -2404,169 +2421,169 @@
   
   # ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
   # c-format
  -#: ../wikilib.php:787
  +#: ../wikilib.php:912
   msgid "You are not allowed to edit this page !"
   msgstr ""
   
  -#: ../wikilib.php:794
  +#: ../wikilib.php:920
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
   # ../wikilib.php:483 ../wikilib.php:1079
  -#: ../wikilib.php:815 ../wikilib.php:1089 ../wikilib.php:1738
  -#: ../wikilib.php:1835 ../wikilib.php:2309 ../wikilib.php:2363
  +#: ../wikilib.php:943 ../wikilib.php:1227 ../wikilib.php:1881
  +#: ../wikilib.php:1978 ../wikilib.php:2490 ../wikilib.php:2548
   msgid "Save"
   msgstr "Sauvegarder"
   
   # ../wikilib.php:443
  -#: ../wikilib.php:823 ../wikilib.php:1076 ../wikilib.php:1746
  -#: ../wikilib.php:1843
  +#: ../wikilib.php:951 ../wikilib.php:1214 ../wikilib.php:1889
  +#: ../wikilib.php:1986
   msgid "Skip to preview"
   msgstr "Aller ? la pr?visualisation"
   
   # ../wikilib.php:425
  -#: ../wikilib.php:936
  +#: ../wikilib.php:1066
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   "Utiliser un des mod?les de pages qui suivent pour une premi?recr?ation :\n"
   
   # ../wikilib.php:427
  -#: ../wikilib.php:938
  +#: ../wikilib.php:1068
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr ""
   
  -#: ../wikilib.php:942
  +#: ../wikilib.php:1072
   msgid "Merge"
   msgstr ""
   
  -#: ../wikilib.php:943
  +#: ../wikilib.php:1073
   msgid "Merge manually"
   msgstr ""
   
  -#: ../wikilib.php:944
  +#: ../wikilib.php:1074
   msgid "Ignore conflicts"
   msgstr ""
   
   # ../wikilib.php:445
  -#: ../wikilib.php:976
  +#: ../wikilib.php:1109
   msgid "ReduceEditor"
   msgstr "R?duire?diteur"
   
  -#: ../wikilib.php:977
  +#: ../wikilib.php:1110
   msgid "EnlargeEditor"
   msgstr ""
   
   # ../locale/dummy.php:6 ../wikilib.php:448
  -#: ../wikilib.php:981 ../locale/dummy.php:6
  +#: ../wikilib.php:1114 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
   # ../wikilib.php:449
  -#: ../wikilib.php:983
  +#: ../wikilib.php:1116
   msgid "HelpOnEditing"
   msgstr ""
   
   # ../wikilib.php:462
  -#: ../wikilib.php:1015
  +#: ../wikilib.php:1150
   #, c-format
   msgid "Describe %s here"
   msgstr "D?crire %s ici"
   
  -#: ../wikilib.php:1035
  +#: ../wikilib.php:1170
   msgid "Category"
   msgstr ""
   
  -#: ../wikilib.php:1043
  +#: ../wikilib.php:1178
   msgid " Select "
   msgstr ""
   
  -#: ../wikilib.php:1054
  +#: ../wikilib.php:1190
   msgid "Minor edit"
   msgstr ""
   
   # ../wikilib.php:517
  -#: ../wikilib.php:1168
  +#: ../wikilib.php:1306
   msgid "406 Not Acceptable"
   msgstr ""
   
   # ../wikilib.php:519
  -#: ../wikilib.php:1173
  +#: ../wikilib.php:1311
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s n'est pas une action valide"
   
   # ../wikilib.php:521
  -#: ../wikilib.php:1175
  +#: ../wikilib.php:1313
   msgid "Is it valid action ?"
   msgstr "Est-ce que c'est une action valide ?"
   
   # ../wikilib.php:540
  -#: ../wikilib.php:1222
  +#: ../wikilib.php:1360
   #, c-format
   msgid "File '%s' is deleted"
   msgstr "Le fichier '%s' est effac?"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:1224
  +#: ../wikilib.php:1362
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr "Impossible d'effacer '%s'"
   
   # ../wikilib.php:545
  -#: ../wikilib.php:1229
  +#: ../wikilib.php:1367
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr "Le r?pertoire '%s' est effac?"
   
   # ../wikilib.php:547
  -#: ../wikilib.php:1231
  +#: ../wikilib.php:1369
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr "Impossible d'effacer le r?pertoire '%s'"
   
   # ../wikilib.php:557 ../wikilib.php:559
  -#: ../wikilib.php:1241 ../wikilib.php:1261
  +#: ../wikilib.php:1379 ../wikilib.php:1399
   msgid "No files are selected !"
   msgstr "Aucun fichier n'est s?lectionn? !"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:1254
  +#: ../wikilib.php:1392
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
   # ../wikilib.php:550
  -#: ../wikilib.php:1258
  +#: ../wikilib.php:1396
   msgid "Delete selected file"
   msgstr ""
   
   # ../wikilib.php:575
  -#: ../wikilib.php:1279
  +#: ../wikilib.php:1417
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr "\"%s\" est effac? !"
   
   # ../wikilib.php:581
  -#: ../wikilib.php:1294
  +#: ../wikilib.php:1432
   msgid "Please delete this file manually."
   msgstr "Merci d'effacer ce fichier manuellement."
   
   # ../wikilib.php:583
  -#: ../wikilib.php:1296
  +#: ../wikilib.php:1434
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "Effacer \"%s\" ?"
   
   # ../plugin/minilogin.php:30
  -#: ../wikilib.php:1349
  +#: ../wikilib.php:1488
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
   # ../wiki.php:2950
  -#: ../wikilib.php:1522
  +#: ../wikilib.php:1661
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
  @@ -2574,139 +2591,139 @@
   "page.\n"
   
   # ../wiki.php:2950
  -#: ../wikilib.php:1522
  +#: ../wikilib.php:1661
   msgid "title"
   msgstr "titre"
   
  -#: ../wikilib.php:1536
  +#: ../wikilib.php:1675
   msgid "Please try to fulltext search"
   msgstr ""
   
   # ../wiki.php:2950
  -#: ../wikilib.php:1539
  +#: ../wikilib.php:1678
   #, c-format
   msgid "You can also click %s to fulltext search.\n"
   msgstr ""
   
   # ../wikilib.php:743
  -#: ../wikilib.php:1584 ../wikilib.php:1693
  +#: ../wikilib.php:1723 ../wikilib.php:1836
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "Quelqu'un a sauvegard? la page tandis que vous ?ditiez %s"
   
  -#: ../wikilib.php:1590
  +#: ../wikilib.php:1729
   msgid "Section edit is not valid for non-exists page."
   msgstr ""
   
   # ../wikilib.php:803
  -#: ../wikilib.php:1623 ../wikilib.php:1875
  +#: ../wikilib.php:1762 ../wikilib.php:2018
   msgid "mail does not supported by default."
   msgstr "La messagerie n'est pas support? par d?faut."
   
   # ../wikilib.php:807
  -#: ../wikilib.php:1627 ../wikilib.php:1879
  +#: ../wikilib.php:1766 ../wikilib.php:2022
   msgid "Sent notification mail."
   msgstr "Des notifications par messagerie ont ?t? envoy?es."
   
   # ../wikilib.php:809
  -#: ../wikilib.php:1629 ../wikilib.php:1881
  +#: ../wikilib.php:1768 ../wikilib.php:2024
   msgid "No subscribers found."
   msgstr "Aucun abonn? trouv?."
   
   # ../wikilib.php:814
  -#: ../wikilib.php:1634 ../wikilib.php:1886
  +#: ../wikilib.php:1773 ../wikilib.php:2029
   #, c-format
   msgid "%s is not editable"
   msgstr "%s n'est pas ?ditable"
   
   # ../wikilib.php:816
  -#: ../wikilib.php:1636 ../wikilib.php:1888
  +#: ../wikilib.php:1775 ../wikilib.php:2031
   #, c-format
   msgid "%s is saved"
   msgstr "%s est sauvegard?"
   
   # ../wikilib.php:734
  -#: ../wikilib.php:1684
  +#: ../wikilib.php:1827
   msgid "Goto Editor"
   msgstr "Aller ? l'?diteur"
   
  -#: ../wikilib.php:1698
  +#: ../wikilib.php:1841
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr ""
   
   # ../plugin/Vote.php:109
  -#: ../wikilib.php:1699
  +#: ../wikilib.php:1842
   #, c-format
   msgid "%s is merged successfully"
   msgstr ""
   
  -#: ../wikilib.php:1703
  +#: ../wikilib.php:1846
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1704
  +#: ../wikilib.php:1847
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr ""
   
  -#: ../wikilib.php:1705
  +#: ../wikilib.php:1848
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1706
  +#: ../wikilib.php:1849
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1711
  +#: ../wikilib.php:1854
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr ""
   
   # ../wikilib.php:581
  -#: ../wikilib.php:1712
  +#: ../wikilib.php:1855
   msgid "Please resolve conflicts manually."
   msgstr ""
   
  -#: ../wikilib.php:1715
  +#: ../wikilib.php:1858
   #, c-format
   msgid "Force merging for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1716
  +#: ../wikilib.php:1859
   msgid "Please be careful, you could damage useful information."
   msgstr ""
   
   # ../wikilib.php:755
  -#: ../wikilib.php:1730
  +#: ../wikilib.php:1873
   msgid "Conflict error!"
   msgstr "Erreur de conflit !"
   
   # ../plugin/processor/blog.php:78
  -#: ../wikilib.php:1771
  +#: ../wikilib.php:1914
   msgid "Too long Comment"
   msgstr ""
   
   # ../wikilib.php:748 ../wikilib.php:777
  -#: ../wikilib.php:1821
  +#: ../wikilib.php:1964
   #, c-format
   msgid "Preview of %s"
   msgstr "Pr?visualisation de %s"
   
   # ../wikilib.php:838
  -#: ../wikilib.php:1921
  +#: ../wikilib.php:2064
   msgid "Nobody subscribed to this page."
   msgstr "Personne n'est abonn? ? cette page, aucun mail envoy?"
   
   # ../wikilib.php:860
  -#: ../wikilib.php:1940
  +#: ../wikilib.php:2083
   #, c-format
   msgid "%s page is modified"
   msgstr "la page %s est modifi?"
   
   # ../wikilib.php:870
  -#: ../wikilib.php:1969
  +#: ../wikilib.php:2112
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
  @@ -2717,101 +2734,101 @@
   "\n"
   
   # ../wikilib.php:883
  -#: ../wikilib.php:1982
  +#: ../wikilib.php:2125
   msgid "Send notification mails to all subscribers"
   msgstr "Envoyez un mail de notification ? tous les abonn?s"
   
   # ../wikilib.php:887
  -#: ../wikilib.php:1987
  +#: ../wikilib.php:2130
   msgid "Mails are sent successfully"
   msgstr "Mail envoy? avec succ?s"
   
   # ../wikilib.php:888
  -#: ../wikilib.php:1988
  +#: ../wikilib.php:2131
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr "un mail a ?t? envoy? ? '%s'"
   
   # ../wiki.php:3021
  -#: ../wikilib.php:1990
  +#: ../wikilib.php:2133
   msgid "Fail to send mail"
   msgstr ""
   
   # ../wikilib.php:803
  -#: ../wikilib.php:2001
  +#: ../wikilib.php:2144
   msgid "This wiki does not support sendmail"
   msgstr ""
   
   # ../wikilib.php:1483
  -#: ../wikilib.php:2099
  +#: ../wikilib.php:2274
   msgid "Invalid regular expression !"
   msgstr ""
   
  -#: ../wikilib.php:2123
  +#: ../wikilib.php:2298
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:2126
  +#: ../wikilib.php:2301
   msgid "Infinite loop possible!"
   msgstr ""
   
   # ../plugin/login.php:26 ../wikilib.php:1051
  -#: ../wikilib.php:2241
  +#: ../wikilib.php:2418
   msgid "Login"
   msgstr "Se connecter"
   
  -#: ../wikilib.php:2242
  +#: ../wikilib.php:2419
   msgid "OpenID"
   msgstr ""
   
  -#: ../wikilib.php:2254 ../wikilib.php:2381
  +#: ../wikilib.php:2432 ../wikilib.php:2567
   msgid "ID"
   msgstr ""
   
   # ../wikilib.php:1070
  -#: ../wikilib.php:2289 ../wikilib.php:2374
  +#: ../wikilib.php:2470 ../wikilib.php:2560
   msgid "Make profile"
   msgstr "Faire un profil"
   
   # ../wikilib.php:1071
  -#: ../wikilib.php:2291
  +#: ../wikilib.php:2472
   msgid "password again"
   msgstr "mot de passe de nouveau"
   
  -#: ../wikilib.php:2293 ../wikilib.php:2342
  +#: ../wikilib.php:2474 ../wikilib.php:2524
   msgid "Mail"
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../wikilib.php:2315
  +#: ../wikilib.php:2496
   msgid "New password"
   msgstr "Nouveau mot de passe"
   
  -#: ../wikilib.php:2320
  +#: ../wikilib.php:2501
   msgid "Nickname"
   msgstr ""
   
  -#: ../wikilib.php:2343
  +#: ../wikilib.php:2525
   msgid "Time Zone"
   msgstr ""
   
   # ../wikilib.php:1088
  -#: ../wikilib.php:2352
  +#: ../wikilib.php:2534
   msgid "logout"
   msgstr "se d?connecter"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wikilib.php:2665
  +#: ../wikilib.php:2912
   msgid "Show all"
   msgstr ""
   
   # ../locale/dummy.php:4
  -#: ../wikilib.php:2803
  +#: ../wikilib.php:3050
   msgid "Contents"
   msgstr ""
   
   # ../wikilib.php:1479
  -#: ../wikilib.php:2923
  +#: ../wikilib.php:3171
   #, c-format
   msgid "Title search for \"%s\""
   msgstr "Recherche de titre pour \"%s\""
  @@ -2821,42 +2838,47 @@
   msgstr ""
   
   # ../wikilib.php:575
  -#: ../monisetup.php:50
  +#: ../monisetup.php:53
   #, c-format
   msgid "%s is selected."
   msgstr ""
   
  -#: ../monisetup.php:57
  +# ../plugin/man_get.php:13
  +#: ../monisetup.php:55
  +msgid "No \\$dba_type selected."
  +msgstr ""
  +
  +#: ../monisetup.php:63
   msgid "Check a AcceptPathInfo setting for Apache 2.x.xx"
   msgstr ""
   
  -#: ../monisetup.php:64 ../monisetup.php:70
  +#: ../monisetup.php:70 ../monisetup.php:76
   msgid "Off"
   msgstr ""
   
  -#: ../monisetup.php:72
  +#: ../monisetup.php:78
   msgid "On"
   msgstr ""
   
  -#: ../monisetup.php:426
  +#: ../monisetup.php:432
   msgid ""
   "Please change the permission of some directories writable on your server to "
   "initialize your Wiki."
   msgstr ""
   
  -#: ../monisetup.php:428
  +#: ../monisetup.php:434
   #, c-format
   msgid ""
   "If you want a more safe wiki, try to change the permission of directories "
   "with %s."
   msgstr ""
   
  -#: ../monisetup.php:431
  +#: ../monisetup.php:437
   msgid ""
   "or use <tt>monisetup.sh</tt> and select 777 or <font color='red'>2777</font>"
   msgstr ""
   
  -#: ../monisetup.php:433
  +#: ../monisetup.php:439
   msgid ""
   "After execute one of above two commands, just <a href='monisetup.php'>reload "
   "this <tt>monisetup.php</tt></a> would make a new initial <tt>config.php</tt> "
  @@ -2864,219 +2886,219 @@
   msgstr ""
   
   # ../plugin/rename.php:27
  -#: ../monisetup.php:434
  +#: ../monisetup.php:440
   msgid "Reload"
   msgstr ""
   
  -#: ../monisetup.php:437
  +#: ../monisetup.php:443
   msgid "WARN"
   msgstr ""
   
  -#: ../monisetup.php:438
  +#: ../monisetup.php:444
   msgid ""
   "Please execute the following command after you have completed your "
   "configuration."
   msgstr ""
   
  -#: ../monisetup.php:442 ../monisetup.php:1268
  +#: ../monisetup.php:448 ../monisetup.php:1274
   msgid "WARN: You have to enter your Admin Password"
   msgstr ""
   
  -#: ../monisetup.php:445
  +#: ../monisetup.php:451
   msgid ""
   "WARN: If you have any permission to execute 'secure.sh'. press the following "
   "button"
   msgstr ""
   
  -#: ../monisetup.php:447
  +#: ../monisetup.php:453
   msgid "Protect my config.php now!"
   msgstr ""
   
   # ../wikilib.php:814
  -#: ../monisetup.php:464
  +#: ../monisetup.php:470
   #, c-format
   msgid "FATAL: %s directory is not writable"
   msgstr ""
   
   # ../wikilib.php:581
  -#: ../monisetup.php:465
  +#: ../monisetup.php:471
   msgid "Please execute the following command."
   msgstr ""
   
   # ../wikilib.php:814
  -#: ../monisetup.php:484
  +#: ../monisetup.php:490
   #, c-format
   msgid "%s directory is not writable"
   msgstr ""
   
   # ../wikilib.php:814
  -#: ../monisetup.php:501
  +#: ../monisetup.php:507
   #, c-format
   msgid "%s is not writable"
   msgstr ""
   
   # ../plugin/rename.php:14
  -#: ../monisetup.php:508 ../monisetup.php:514
  +#: ../monisetup.php:514 ../monisetup.php:520
   #, c-format
   msgid "%s is created now"
   msgstr ""
   
   # ../wikilib.php:814
  -#: ../monisetup.php:524
  +#: ../monisetup.php:530
   #, c-format
   msgid "%s is writable"
   msgstr ""
   
  -#: ../monisetup.php:541
  +#: ../monisetup.php:547
   #, c-format
   msgid ""
   "If you want to check .htaccess file please delete '%s' file and reload it."
   msgstr ""
   
  -#: ../monisetup.php:544
  +#: ../monisetup.php:550
   msgid "Security check for 'upload_dir'."
   msgstr ""
   
  -#: ../monisetup.php:576
  +#: ../monisetup.php:582
   msgid ".htaccess for 'imgs_dir'."
   msgstr ""
   
  -#: ../monisetup.php:646
  +#: ../monisetup.php:652
   msgid "Fail"
   msgstr ""
   
  -#: ../monisetup.php:652
  +#: ../monisetup.php:658
   msgid "Unable to write .htaccess"
   msgstr ""
   
  -#: ../monisetup.php:756
  +#: ../monisetup.php:762
   msgid "Click here to toggle all"
   msgstr ""
   
   # ../wikilib.php:550
  -#: ../monisetup.php:757
  +#: ../monisetup.php:763
   msgid "Deselect all"
   msgstr ""
   
  -#: ../monisetup.php:762
  +#: ../monisetup.php:768
   msgid "Please be careful to deselect these pages"
   msgstr ""
   
  -#: ../monisetup.php:1056
  +#: ../monisetup.php:1067
   msgid "MoniWiki"
   msgstr ""
   
  -#: ../monisetup.php:1059
  +#: ../monisetup.php:1070
   msgid "'config.php' is not writable !"
   msgstr ""
   
  -#: ../monisetup.php:1060
  +#: ../monisetup.php:1071
   msgid ""
   "Please execute <tt>'monisetup.sh'</tt> or <tt>chmod a+w config.php</tt> "
   "first to change your settings."
   msgstr ""
   
  -#: ../monisetup.php:1062
  +#: ../monisetup.php:1073
   msgid "Unprotect my config.php"
   msgstr ""
   
  -#: ../monisetup.php:1095
  +#: ../monisetup.php:1101
   msgid "config.php is protected now !"
   msgstr ""
   
   # ../wiki.php:3024
  -#: ../monisetup.php:1100 ../monisetup.php:1119
  +#: ../monisetup.php:1106 ../monisetup.php:1125
   msgid "Invalid password error !"
   msgstr ""
   
  -#: ../monisetup.php:1101 ../monisetup.php:1120
  +#: ../monisetup.php:1107 ../monisetup.php:1126
   msgid ""
   "If you can't remember your admin password, delete password entry in the "
   "'config.php' and restart 'monisetup'"
   msgstr ""
   
  -#: ../monisetup.php:1106
  +#: ../monisetup.php:1112
   msgid "config.php is unprotected now !"
   msgstr ""
   
  -#: ../monisetup.php:1152
  +#: ../monisetup.php:1158
   #, c-format
   msgid "Updated Configutations for this %s"
   msgstr ""
   
   # ../wikilib.php:887
  -#: ../monisetup.php:1170
  +#: ../monisetup.php:1176
   msgid "Configurations are saved successfully"
   msgstr ""
   
  -#: ../monisetup.php:1171
  +#: ../monisetup.php:1177
   msgid ""
   "WARN: Please check <a href='monisetup.php'> your saved configurations</a>"
   msgstr ""
   
  -#: ../monisetup.php:1172
  +#: ../monisetup.php:1178
   msgid "If all is good, change 'config.php' permission as 644."
   msgstr ""
   
  -#: ../monisetup.php:1184
  +#: ../monisetup.php:1190
   msgid "Welcome to MoniWiki ! This is your first installation"
   msgstr ""
   
  -#: ../monisetup.php:1194
  +#: ../monisetup.php:1200
   msgid "Default settings are loaded..."
   msgstr ""
   
   # ../wikilib.php:887
  -#: ../monisetup.php:1202
  +#: ../monisetup.php:1208
   msgid "Initial configurations are saved successfully."
   msgstr ""
   
  -#: ../monisetup.php:1203
  +#: ../monisetup.php:1209
   msgid "Goto <a href='monisetup.php'>MoniSetup</a> again to configure details"
   msgstr ""
   
   # ../plugin/minilogin.php:30
  -#: ../monisetup.php:1220 ../monisetup.php:1222 ../monisetup.php:1318
  -#: ../monisetup.php:1320
  +#: ../monisetup.php:1226 ../monisetup.php:1228 ../monisetup.php:1324
  +#: ../monisetup.php:1326
   #, c-format
   msgid "goto %s"
   msgstr ""
   
   # ../wikilib.php:557 ../wikilib.php:559
  -#: ../monisetup.php:1225
  +#: ../monisetup.php:1231
   msgid "No WikiSeeds are selected"
   msgstr ""
   
  -#: ../monisetup.php:1236
  +#: ../monisetup.php:1242
   #, c-format
   msgid "Preview current settings for this %s"
   msgstr ""
   
  -#: ../monisetup.php:1238
  +#: ../monisetup.php:1244
   #, c-format
   msgid "Read current settings for this %s"
   msgstr ""
   
  -#: ../monisetup.php:1266
  +#: ../monisetup.php:1272
   msgid "Change your settings"
   msgstr ""
   
  -#: ../monisetup.php:1270 ../monisetup.php:1313
  +#: ../monisetup.php:1276 ../monisetup.php:1319
   #, c-format
   msgid "WARN: You have no WikiSeed on your %s"
   msgstr ""
   
   # ../plugin/quicklinks.php:50
  -#: ../monisetup.php:1271 ../monisetup.php:1314
  +#: ../monisetup.php:1277 ../monisetup.php:1320
   #, c-format
   msgid "If you want to put wikiseeds on your wiki %s now"
   msgstr ""
   
  -#: ../monisetup.php:1272 ../monisetup.php:1315
  +#: ../monisetup.php:1278 ../monisetup.php:1321
   msgid "Click here"
   msgstr ""
   
  -#: ../monisetup.php:1307 ../monisetup.php:1309
  +#: ../monisetup.php:1313 ../monisetup.php:1315
   msgid "Update"
   msgstr ""
   
  
  
  
  1.36      +482 -462  moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- ko.po	30 Sep 2009 16:04:54 -0000	1.35
  +++ ko.po	13 Aug 2010 15:21:40 -0000	1.36
  @@ -5,7 +5,7 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1.3\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2009-10-01 01:04+0900\n"
  +"POT-Creation-Date: 2010-08-14 00:12+0900\n"
   "PO-Revision-Date: 2008-12-11 12:20+0900\n"
   "Last-Translator: Won-Kyu Park <wkpark@kldp.org>\n"
   "Language-Team: Won-Kyu Park <wkpark@kldp.org>\n"
  @@ -89,20 +89,20 @@
   msgid "show changes"
   msgstr "바뀐점 보기"
   
  -#: ../plugin/Attachment.php:70 ../plugin/Attachment.php:333
  +#: ../plugin/Attachment.php:72 ../plugin/Attachment.php:341
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr "새로운 첨부 \"%s\"파일 업로드"
   
  -#: ../plugin/Attachment.php:325
  +#: ../plugin/Attachment.php:333
   msgid "or paste a new png picture"
   msgstr "혹은 새 그림 붙이기"
   
  -#: ../plugin/Attachment.php:330
  +#: ../plugin/Attachment.php:338
   msgid "or draw a new gif picture"
   msgstr "혹은 새 그림 그리기"
   
  -#: ../plugin/Attachment.php:336
  +#: ../plugin/Attachment.php:344
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr "새로운 첨부파일 \"%s\"을(를) \"%s\"(으)로 업로드"
  @@ -140,7 +140,7 @@
   msgid "Edit"
   msgstr "고치기"
   
  -#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1257
  +#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1395
   msgid "Delete"
   msgstr "지우기"
   
  @@ -195,8 +195,8 @@
   msgid "No Subject error."
   msgstr "제목이 없습니다."
   
  -#: ../plugin/bbs.php:1009 ../plugin/Comment.php:196 ../plugin/Gallery.php:174
  -#: ../wikilib.php:1609 ../wikilib.php:1815
  +#: ../plugin/bbs.php:1009 ../plugin/Comment.php:201 ../plugin/Gallery.php:182
  +#: ../wikilib.php:1748 ../wikilib.php:1958
   msgid ""
   "Sorry, can not save page because some messages are blocked in this wiki."
   msgstr "죄송합니다. 특정 메시지가 금지되어 페이지를 저장할 수 없습니다."
  @@ -205,48 +205,48 @@
   msgid "New post added successfully"
   msgstr "새글이 성공적으로 등록되었습니다."
   
  -#: ../plugin/BlogChanges.php:198
  +#: ../plugin/BlogChanges.php:203
   msgid "Category: "
   msgstr "분류: "
   
  -#: ../plugin/BlogChanges.php:200 ../locale/dummy.php:7
  +#: ../plugin/BlogChanges.php:205 ../locale/dummy.php:7
   msgid "BlogChanges"
   msgstr "바뀐 블로그"
   
  -#: ../plugin/BlogChanges.php:246
  +#: ../plugin/BlogChanges.php:251
   #, c-format
   msgid "Invalid category expr \"%s\""
   msgstr "잘못된 분류 표현식\"%s\""
   
  -#: ../plugin/BlogChanges.php:378 ../plugin/BlogChanges.php:380
  +#: ../plugin/BlogChanges.php:384 ../plugin/BlogChanges.php:386
   #: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
   msgid "Anonymous"
   msgstr "아무개"
   
  -#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  +#: ../plugin/BlogChanges.php:417 ../plugin/processor/blog.php:88
   #, c-format
   msgid "%d comment"
   msgstr "댓글 %d개"
   
  -#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  +#: ../plugin/BlogChanges.php:417 ../plugin/processor/blog.php:88
   #, c-format
   msgid "%d comments"
   msgstr "댓글 %d개"
   
  -#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:213
  -#: ../plugin/processor/blog.php:78
  +#: ../plugin/BlogChanges.php:419 ../plugin/Comment.php:218
  +#: ../plugin/processor/blog.php:80
   msgid "Add comment"
   msgstr "댓글 달기"
   
  -#: ../plugin/BlogChanges.php:423 ../plugin/processor/blog.php:97
  +#: ../plugin/BlogChanges.php:429 ../plugin/processor/blog.php:99
   msgid "track back"
   msgstr "트랙백"
   
  -#: ../plugin/BlogChanges.php:443
  +#: ../plugin/BlogChanges.php:449
   msgid "Previous"
   msgstr "이전"
   
  -#: ../plugin/BlogChanges.php:446
  +#: ../plugin/BlogChanges.php:453
   msgid "Next"
   msgstr "다음"
   
  @@ -255,70 +255,70 @@
   msgid "Blog cache of \"%s\" is refreshed"
   msgstr "\"%s\"에 대한 블로그 캐쉬가 갱신됨"
   
  -#: ../plugin/Blog.php:108
  +#: ../plugin/Blog.php:110
   #, c-format
   msgid "\"%s\" is updated"
   msgstr "\"%s\"(이)가 갱신 되었음"
   
  -#: ../plugin/Blog.php:113
  +#: ../plugin/Blog.php:115
   msgid "Add Blog"
   msgstr "블로그 더하기"
   
  -#: ../plugin/Blog.php:154
  +#: ../plugin/Blog.php:156
   msgid "Error: No blog entry found!"
   msgstr "오류: 블로그 항목이 없습니다!"
   
  -#: ../plugin/Blog.php:164 ../plugin/Blog.php:166 ../plugin/Comment.php:226
  +#: ../plugin/Blog.php:166 ../plugin/Blog.php:168 ../plugin/Comment.php:231
   msgid "Error: Don't make a clone!"
   msgstr "오류: 복제를 만들지 마세요!"
   
  -#: ../plugin/Blog.php:192
  +#: ../plugin/Blog.php:194
   #, c-format
   msgid "Comment added to \"%s\""
   msgstr "\"%s\"에 댓글이 더해졌습니다"
   
  -#: ../plugin/Blog.php:195
  +#: ../plugin/Blog.php:197
   #, c-format
   msgid "Blog entry added to \"%s\""
   msgstr "블로그 항목이 \"%s\"에 더해졌습니다"
   
  -#: ../plugin/Blog.php:197
  +#: ../plugin/Blog.php:199
   #, c-format
   msgid "Blog entry \"%s\" added"
   msgstr "블로그 항목 \"%s\"이 더해졌습니다"
   
  -#: ../plugin/Blog.php:199
  +#: ../plugin/Blog.php:201
   msgid "Blog entry added"
   msgstr "블로그 항목 더해졌습니다"
   
  -#: ../plugin/Blog.php:240
  +#: ../plugin/Blog.php:243
   #, c-format
   msgid "Add Comment to \"%s\""
   msgstr "\"%s\"에 댓글 더하기"
   
  -#: ../plugin/Blog.php:242
  +#: ../plugin/Blog.php:245
   #, c-format
   msgid "Add Blog entry to \"%s\""
   msgstr "\"%s\"에 블로그 항목 더하기"
   
  -#: ../plugin/Blog.php:260 ../plugin/Blog.php:332 ../plugin/PluginInfo.php:52
  +#: ../plugin/Blog.php:263 ../plugin/Blog.php:335 ../plugin/PluginInfo.php:52
   msgid "Name"
   msgstr "이름"
   
  -#: ../plugin/Blog.php:262 ../plugin/Blog.php:333
  -#: ../plugin/RecentChanges.php:119
  +#: ../plugin/Blog.php:265 ../plugin/Blog.php:336
  +#: ../plugin/RecentChanges.php:125
   msgid "Title"
   msgstr "제목"
   
  -#: ../plugin/Blog.php:268 ../wikilib.php:1080
  +#: ../plugin/Blog.php:271 ../wikilib.php:1218
   msgid "GUI"
   msgstr ""
   
  -#: ../plugin/Blog.php:277 ../plugin/Comment.php:109
  +#: ../plugin/Blog.php:280 ../plugin/Comment.php:114
   msgid "Don't add a signature"
   msgstr "서명하지 않기"
   
  -#: ../plugin/Blog.php:299
  +#: ../plugin/Blog.php:302
   msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
   msgstr "<b>가로선</b> ----는 블로그일 경우 적용되지 않습니다."
   
  @@ -334,7 +334,7 @@
   msgid "Clear cache dirs"
   msgstr "캐쉬 디렉토리 지우기"
   
  -#: ../plugin/chat.php:36
  +#: ../plugin/chat.php:37
   msgid "No messages"
   msgstr "메시지 없음"
   
  @@ -357,106 +357,106 @@
   msgid "Paste a new picture"
   msgstr "새 그림 붙이기"
   
  -#: ../plugin/Clip.php:50 ../plugin/Draw.php:119
  +#: ../plugin/Clip.php:51 ../plugin/Draw.php:119
   msgid "Fatal error !"
   msgstr ""
   
  -#: ../plugin/Clip.php:53 ../plugin/Draw.php:122
  +#: ../plugin/Clip.php:54 ../plugin/Draw.php:122
   msgid "No filename given"
   msgstr "파일 이름이 없음"
   
  -#: ../plugin/Clip.php:72
  +#: ../plugin/Clip.php:73
   msgid "Clipboard"
   msgstr "클립보드"
   
  -#: ../plugin/Clip.php:81
  +#: ../plugin/Clip.php:82
   msgid "Cut & Paste a Clipboard Image"
   msgstr "클립보드의 이미지를 잘르고 붙이기"
   
  -#: ../plugin/Comment.php:92
  +#: ../plugin/Comment.php:93
   msgid "Comment"
   msgstr "댓글 달기"
   
  -#: ../plugin/Comment.php:93 ../wikilib.php:821 ../wikilib.php:1074
  -#: ../wikilib.php:1744 ../wikilib.php:1841 ../monisetup.php:1305
  +#: ../plugin/Comment.php:94 ../wikilib.php:949 ../wikilib.php:1212
  +#: ../wikilib.php:1887 ../wikilib.php:1984 ../monisetup.php:1311
   msgid "Preview"
   msgstr "미리보기"
   
  -#: ../plugin/Comment.php:107
  +#: ../plugin/Comment.php:111
   msgid "Username"
   msgstr "이름"
   
  -#: ../plugin/Comment.php:130
  +#: ../plugin/Comment.php:135
   msgid "Page is not writable"
   msgstr "쓰기가능하지 않음"
   
  -#: ../plugin/Comment.php:133
  +#: ../plugin/Comment.php:138
   msgid "You are not allowed to add a comment."
   msgstr "Comment는 허락되지 않습니다."
   
  -#: ../plugin/Comment.php:134 ../plugin/Keywords.php:459
  +#: ../plugin/Comment.php:139 ../plugin/Keywords.php:465
   msgid "Page does not exists"
   msgstr "페이지가 없습니다"
   
  -#: ../plugin/Comment.php:169 ../plugin/userform.php:118
  -#: ../plugin/userform.php:181 ../plugin/userform.php:204 ../wikilib.php:1794
  +#: ../plugin/Comment.php:174 ../plugin/userform.php:121
  +#: ../plugin/userform.php:184 ../plugin/userform.php:207 ../wikilib.php:1937
   msgid "Invalid ticket !"
   msgstr "잘못된 티켓 !"
   
  -#: ../plugin/Comment.php:174 ../plugin/userform.php:120
  -#: ../plugin/userform.php:206 ../wikilib.php:1799
  +#: ../plugin/Comment.php:179 ../plugin/userform.php:123
  +#: ../plugin/userform.php:209 ../wikilib.php:1942
   msgid "You need a ticket !"
   msgstr "티켓이 필요합니다 !"
   
  -#: ../plugin/Comment.php:202
  +#: ../plugin/Comment.php:207
   msgid "Preview comment"
   msgstr "미리보기"
   
  -#: ../plugin/Comment.php:333
  +#: ../plugin/Comment.php:338
   #, c-format
   msgid "%s is commented successfully"
   msgstr "%s에 댓글이 성공적으로 첨가되었습니다"
   
  -#: ../plugin/Comment.php:334
  +#: ../plugin/Comment.php:339
   msgid "Comment added successfully"
   msgstr "댓글이 성공적으로 저장되었습니다"
   
  -#: ../plugin/css.php:33 ../plugin/css.php:41
  +#: ../plugin/css.php:34 ../plugin/css.php:42
   msgid "Back to UserPreferences"
   msgstr "UserPreferences로 가기"
   
  -#: ../plugin/css.php:67
  +#: ../plugin/css.php:68
   msgid "CSS disabled !"
   msgstr ""
   
  -#: ../plugin/Diff.php:410 ../plugin/Info.php:246
  +#: ../plugin/Diff.php:411 ../plugin/Info.php:251
   msgid "No older revisions available"
   msgstr "옛 버전이 없습니다"
   
  -#: ../plugin/Diff.php:415 ../plugin/Info.php:252 ../plugin/rcsexport.php:13
  +#: ../plugin/Diff.php:416 ../plugin/Info.php:257 ../plugin/rcsexport.php:13
   #: ../plugin/rcsimport.php:13
   msgid "Version info is not available in this wiki"
   msgstr "버전 정보는 현 위키에서 사용할 수 없습니다"
   
  -#: ../plugin/Diff.php:426 ../wikilib.php:1764
  +#: ../plugin/Diff.php:428 ../wikilib.php:1907
   msgid "No difference found"
   msgstr "변화가 없습니다"
   
  -#: ../plugin/Diff.php:430
  +#: ../plugin/Diff.php:432
   msgid "Difference between versions"
   msgstr "버전간의 차이점"
   
  -#: ../plugin/Diff.php:432 ../plugin/Diff.php:548
  +#: ../plugin/Diff.php:434 ../plugin/Diff.php:550
   #, c-format
   msgid "Difference between r%s and r%s"
   msgstr "r%s과 r%s의 차이점"
   
  -#: ../plugin/Diff.php:435 ../plugin/Diff.php:550
  +#: ../plugin/Diff.php:437 ../plugin/Diff.php:552
   #, c-format
   msgid "Difference between r%s and the current"
   msgstr "r%s과 현재 버전의 차이점"
   
  -#: ../plugin/Diff.php:552
  +#: ../plugin/Diff.php:554
   msgid "latest changes"
   msgstr "최근 바뀐점"
   
  @@ -464,16 +464,16 @@
   msgid "Draw new picture"
   msgstr "새 그림 만들기"
   
  -#: ../plugin/Draw.php:92 ../plugin/UploadFile.php:289
  +#: ../plugin/Draw.php:92 ../plugin/UploadFile.php:294
   #, c-format
   msgid "Fail to copy \"%s\" to \"%s\""
   msgstr "\"%s\"를 \"%s\"로 복사하기 실패"
   
  -#: ../plugin/Draw.php:146
  +#: ../plugin/Draw.php:147
   msgid "Edit drawing"
   msgstr "그림 그리기"
   
  -#: ../plugin/Draw.php:155
  +#: ../plugin/Draw.php:156
   msgid "Edit new drawing"
   msgstr "새 그림 그리기"
   
  @@ -491,35 +491,58 @@
   msgid "%d day(s) passed from %s."
   msgstr "%2$s로부터 %1$d일 지났습니다."
   
  -#: ../plugin/FastSearch.php:44 ../plugin/FullSearch.php:90
  +#: ../plugin/FastSearch.php:37
  +msgid "Fast search"
  +msgstr "빠른 검색"
  +
  +#: ../plugin/FastSearch.php:38 ../plugin/FullSearch.php:74
  +msgid "Display context of search results"
  +msgstr "검색 결과 문맥 보기"
  +
  +#: ../plugin/FastSearch.php:49 ../plugin/FullSearch.php:90
   msgid "No search text"
   msgstr "검색 단어 없음"
   
  -#: ../plugin/FastSearch.php:50
  +#: ../plugin/FastSearch.php:55
   msgid "Couldn't open search database, sorry."
   msgstr "데이타베이스 파일을 열 수 없습니다."
   
  -#: ../plugin/FastSearch.php:114 ../plugin/FullSearch.php:19
  +#: ../plugin/FastSearch.php:138 ../plugin/FullSearch.php:263
  +#, c-format
  +msgid "%d match"
  +msgstr "%d회 일치"
  +
  +#: ../plugin/FastSearch.php:138 ../plugin/FullSearch.php:263
  +#, c-format
  +msgid "%d matches"
  +msgstr "%d회 일치"
  +
  +#: ../plugin/FastSearch.php:160 ../plugin/FullSearch.php:19
   #, c-format
   msgid "Full text search for \"%s\""
   msgstr "\"%s\"을(를) 전체 찾아보기"
   
  -#: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:38
  -#: ../wikilib.php:1530
  +#: ../plugin/FastSearch.php:177 ../plugin/FullSearch.php:38
  +#: ../wikilib.php:1669
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr "%3$s의 페이지중에 %1$s개가 발견되었습니다"
   
  -#: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1532
  +#: ../plugin/FastSearch.php:179 ../plugin/FullSearch.php:40
  +#: ../wikilib.php:1671
   msgid "page"
   msgstr "페이지"
   
  -#: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1532
  +#: ../plugin/FastSearch.php:179 ../plugin/FullSearch.php:40
  +#: ../wikilib.php:1671
   msgid "pages"
   msgstr "페이지"
   
  +#: ../plugin/FastSearch.php:184
  +#, c-format
  +msgid "Show all %d results"
  +msgstr "%d개의 모든 결과 보기"
  +
   #: ../plugin/format.php:17
   msgid "It is a XML format !"
   msgstr ""
  @@ -538,30 +561,26 @@
   msgid "Show Context."
   msgstr "문맥 보기."
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4488
  -#: ../wikilib.php:1060
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4686
  +#: ../wikilib.php:1196
   msgid "Refresh"
   msgstr "갱신"
   
   #: ../plugin/FullSearch.php:48
   #, c-format
   msgid " (%s search results)"
  -msgstr " (서치 결과를 %s)"
  +msgstr " (검색 결과를 %s)"
   
   #: ../plugin/FullSearch.php:51
   #, c-format
   msgid "You can also click %s to search title.\n"
   msgstr "%s을 눌러 제목 찾기를 할 수 있습니다.\n"
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5456 ../wiki.php:5463
  -#: ../wikilib.php:1540
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5660 ../wiki.php:5668
  +#: ../wikilib.php:1679
   msgid "here"
   msgstr "여기"
   
  -#: ../plugin/FullSearch.php:74
  -msgid "Display context of search results"
  -msgstr "검색 결과 문맥 보기"
  -
   #: ../plugin/FullSearch.php:75
   msgid "Search BackLinks only"
   msgstr "역링크만 찾기"
  @@ -570,7 +589,7 @@
   msgid "Case-sensitive searching"
   msgstr "대소문자 구별"
   
  -#: ../plugin/FullSearch.php:77 ../wikilib.php:2906 ../wikilib.php:2968
  +#: ../plugin/FullSearch.php:77 ../wikilib.php:3154 ../wikilib.php:3230
   msgid "Go"
   msgstr "찾기"
   
  @@ -578,42 +597,34 @@
   msgid "Empty expression"
   msgstr "비어있는 표현식"
   
  -#: ../plugin/FullSearch.php:144 ../wikilib.php:2927
  +#: ../plugin/FullSearch.php:144 ../wikilib.php:3175
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "잘못된 찾기 표현식 \"%s\""
   
  -#: ../plugin/FullSearch.php:260
  -msgid " match"
  -msgstr ""
  -
  -#: ../plugin/FullSearch.php:260
  -msgid " matches"
  -msgstr ""
  -
  -#: ../plugin/Gallery.php:245 ../plugin/UploadedFiles.php:287
  +#: ../plugin/Gallery.php:253 ../plugin/UploadedFiles.php:289
   msgid "No files found"
   msgstr "페이지가 없습니다"
   
  -#: ../plugin/Gallery.php:337 ../plugin/Gallery.php:350
  +#: ../plugin/Gallery.php:345 ../plugin/Gallery.php:360
   msgid "add comment"
   msgstr "댓글 달기"
   
  -#: ../plugin/Gallery.php:347
  +#: ../plugin/Gallery.php:355
   msgid "show comments"
   msgstr "댓글 보기"
   
  -#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1596
  -#: ../wikilib.php:1762 ../wikilib.php:1769
  +#: ../plugin/Gallery.php:409 ../plugin/Gallery.php:413 ../wikilib.php:1735
  +#: ../wikilib.php:1905 ../wikilib.php:1912
   #, c-format
   msgid "Go back or return to %s"
   msgstr "뒤로 혹은 %s(으)로 가기"
   
  -#: ../plugin/Gallery.php:397
  +#: ../plugin/Gallery.php:410
   msgid "Comments are edited"
   msgstr "댓글이 편집되었습니다"
   
  -#: ../plugin/Gallery.php:401
  +#: ../plugin/Gallery.php:414
   msgid "Comments is added"
   msgstr "댓글이 더해졌습니다"
   
  @@ -637,15 +648,15 @@
   msgid "Ver."
   msgstr "버전"
   
  -#: ../plugin/Info.php:44 ../plugin/UploadedFiles.php:303
  +#: ../plugin/Info.php:44 ../plugin/UploadedFiles.php:305
   msgid "Date"
   msgstr "날짜"
   
  -#: ../plugin/Info.php:45 ../plugin/RecentChanges.php:120
  +#: ../plugin/Info.php:45 ../plugin/RecentChanges.php:129
   msgid "Changes"
   msgstr "변경점"
   
  -#: ../plugin/Info.php:46 ../plugin/RecentChanges.php:120
  +#: ../plugin/Info.php:46 ../plugin/RecentChanges.php:128
   msgid "Editor"
   msgstr "고친이"
   
  @@ -657,34 +668,34 @@
   msgid "admin."
   msgstr "관리"
   
  -#: ../plugin/Info.php:68
  +#: ../plugin/Info.php:71
   msgid "Show all revisions"
   msgstr "모든 버전 보기"
   
  -#: ../plugin/Info.php:101
  +#: ../plugin/Info.php:106
   msgid "Yesterday"
   msgstr "어제"
   
  -#: ../plugin/Info.php:102
  +#: ../plugin/Info.php:107
   #, c-format
   msgid "%s days ago"
   msgstr "%s일 전"
   
  -#: ../plugin/Info.php:104
  +#: ../plugin/Info.php:109
   #, c-format
   msgid "%s hours ago"
   msgstr "%s시간 전"
   
  -#: ../plugin/Info.php:106
  +#: ../plugin/Info.php:111
   #, c-format
   msgid "%s min ago"
   msgstr "%s분 전"
   
  -#: ../plugin/Info.php:215 ../plugin/rename.php:80
  +#: ../plugin/Info.php:220 ../plugin/rename.php:80
   msgid "show only"
   msgstr "보기만 하기"
   
  -#: ../plugin/Info.php:219
  +#: ../plugin/Info.php:224
   msgid "purge"
   msgstr "삭제"
   
  @@ -697,156 +708,160 @@
   msgid "Draw a new molecule"
   msgstr "새 분자 그리기"
   
  -#: ../plugin/JME.php:104
  +#: ../plugin/JME.php:105
   msgid "Molecule successfully added"
   msgstr "분자가 성공적으로 저장됨"
   
  -#: ../plugin/JME.php:110
  +#: ../plugin/JME.php:111
   msgid "Edit Molecule"
   msgstr "분자 편집"
   
  -#: ../plugin/JME.php:140
  +#: ../plugin/JME.php:141
   msgid "Edit new molecule"
   msgstr "새 분자 편집"
   
  -#: ../plugin/Keywords.php:414
  +#: ../plugin/Keywords.php:418
   msgid "hits"
   msgstr ""
   
  -#: ../plugin/Keywords.php:422
  +#: ../plugin/Keywords.php:428
   msgid "add keywords"
   msgstr "키워드 더하기"
   
  -#: ../plugin/Keywords.php:425
  +#: ../plugin/Keywords.php:431
   msgid "Update keywords"
   msgstr "키워드 갱신"
   
  -#: ../plugin/Keywords.php:427
  +#: ../plugin/Keywords.php:433
   msgid "Add keywords"
   msgstr "키워드 더하기"
   
  -#: ../plugin/Keywords.php:428
  +#: ../plugin/Keywords.php:434
   msgid "Add as common words"
   msgstr "일반 단어로 추가"
   
  -#: ../plugin/Keywords.php:429
  +#: ../plugin/Keywords.php:435
   msgid "Unselect all"
   msgstr "모두 선택 취소"
   
  -#: ../plugin/Keywords.php:430
  +#: ../plugin/Keywords.php:436
   msgid "Suggest new Keywords"
   msgstr "새 키워드 제안"
   
  -#: ../plugin/Keywords.php:439
  +#: ../plugin/Keywords.php:445
   msgid "select language"
   msgstr "언어 고르기"
   
  -#: ../plugin/Keywords.php:458
  +#: ../plugin/Keywords.php:464
   msgid "You are not able to add keywords."
   msgstr "키워드를 추가할 수 없습니다."
   
  -#: ../plugin/Keywords.php:472
  +#: ../plugin/Keywords.php:478
   #, c-format
   msgid "%s is not found."
   msgstr "%s을(를) 찾을 수 없습니다"
   
  -#: ../plugin/Keywords.php:588
  +#: ../plugin/Keywords.php:594
   msgid "Common words are updated"
   msgstr "일반 단어가 갱신됨"
   
  -#: ../plugin/Keywords.php:635
  +#: ../plugin/Keywords.php:641
   #, c-format
   msgid "Keywords for %s are updated"
   msgstr "%s에 대한 키워드가 갱신됨"
   
  -#: ../plugin/Keywords.php:661
  +#: ../plugin/Keywords.php:667
   msgid "Keywords are updated"
   msgstr "키워드가 갱신되었습니다"
   
  -#: ../plugin/Keywords.php:663
  +#: ../plugin/Keywords.php:669
   msgid "There are no changes found"
   msgstr "변화가 없습니다"
   
  -#: ../plugin/Keywords.php:676
  +#: ../plugin/Keywords.php:682
   msgid "Update with these Keywords"
   msgstr "키워드 갱신하기"
   
  -#: ../plugin/Keywords.php:696 ../plugin/Keywords.php:700
  +#: ../plugin/Keywords.php:702 ../plugin/Keywords.php:706
   msgid "alphabetically"
   msgstr "알파벳"
   
  -#: ../plugin/Keywords.php:697
  +#: ../plugin/Keywords.php:703
   msgid "by frequency"
   msgstr "빈도수"
   
  -#: ../plugin/Keywords.php:699
  +#: ../plugin/Keywords.php:705
   msgid "by size"
   msgstr "크기"
   
  -#: ../plugin/Keywords.php:705
  +#: ../plugin/Keywords.php:711
   #, c-format
   msgid "Keywords list %s (or %s)"
   msgstr "%s순 키워드 목록 (혹은 %s순)"
   
  -#: ../plugin/Keywords.php:710
  +#: ../plugin/Keywords.php:716
   #, c-format
   msgid "Select keywords for %s"
   msgstr "%s에 대해 키워드를 고르세요"
   
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1417 ../wikilib.php:2914
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1556 ../wikilib.php:3162
   msgid "Use more specific text"
   msgstr "좀 더 자세히 입력하세요"
   
  -#: ../plugin/LikePages.php:109
  +#: ../plugin/LikePages.php:79
  +msgid "No metadb found"
  +msgstr "metadb가 없습니다"
  +
  +#: ../plugin/LikePages.php:120
   msgid "These pages share a similar word..."
   msgstr "비슷한 이름이 부분적으로 포함된 페이지..."
   
  -#: ../plugin/LikePages.php:123
  +#: ../plugin/LikePages.php:134
   msgid "These pages share an initial or final title word..."
   msgstr "처음과 마지막부분의 이름이 포함된 페이지..."
   
  -#: ../plugin/LikePages.php:143
  -msgid "If you can't find this page, "
  -msgstr "페이지를 찾으실 수 없으면"
  -
  -#: ../plugin/LikePages.php:148
  +#: ../plugin/LikePages.php:158
   msgid "No similar pages found"
   msgstr "비슷한 페이지가 없습니다"
   
  -#: ../plugin/LikePages.php:150
  -msgid "You are strongly recommened to find it in MetaWikis. "
  -msgstr "메타위키를 찾아보실 것을 권해드립니다. "
  -
  -#: ../plugin/LikePages.php:153
  +#: ../plugin/LikePages.php:161
   #, c-format
   msgid "Like \"%s\""
   msgstr "\"%s\"와 비슷한"
   
  -#: ../plugin/LikePages.php:156
  +#: ../plugin/LikePages.php:166
  +msgid "If you can't find this page, "
  +msgstr "페이지를 찾으실 수 없으면"
  +
  +#: ../plugin/LikePages.php:168
  +msgid "You are strongly recommened to find it in MetaWikis. "
  +msgstr "메타위키를 찾아보실 것을 권해드립니다. "
  +
  +#: ../plugin/LikePages.php:169
   msgid "Search all MetaWikis"
   msgstr "모든 메타위키 검색"
   
  -#: ../plugin/LikePages.php:157
  +#: ../plugin/LikePages.php:170
   msgid "Slow Slow"
   msgstr "매우 느림"
   
  -#: ../plugin/login.php:29
  +#: ../plugin/login.php:31
   msgid "Login:"
   msgstr "로그인:"
   
  -#: ../plugin/login.php:30
  +#: ../plugin/login.php:32
   msgid "Password:"
   msgstr "비밀번호:"
   
  -#: ../plugin/login.php:31
  +#: ../plugin/login.php:33
   msgid "Join"
   msgstr "가입"
   
  -#: ../plugin/login.php:49 ../plugin/minilogin.php:25
  +#: ../plugin/login.php:51 ../plugin/minilogin.php:25
   msgid "Logout"
   msgstr "나가기"
   
  -#: ../plugin/login.php:50 ../plugin/minilogin.php:24 ../locale/dummy.php:3
  +#: ../plugin/login.php:52 ../plugin/minilogin.php:24 ../locale/dummy.php:3
   msgid "UserPreferences"
   msgstr "환경설정"
   
  @@ -862,7 +877,7 @@
   msgid "Edit man page"
   msgstr "man 페이지 고치기"
   
  -#: ../plugin/minilogin.php:18 ../wikilib.php:2306
  +#: ../plugin/minilogin.php:18 ../wikilib.php:2487
   msgid "Login or Join"
   msgstr "로그인 혹은 가입"
   
  @@ -921,7 +936,7 @@
   msgid "Edit Image"
   msgstr "그림 고치기"
   
  -#: ../plugin/pagelist.php:117 ../plugin/pagelist.php:134
  +#: ../plugin/pagelist.php:118 ../plugin/pagelist.php:135
   #, c-format
   msgid "[%sh %sm ago]"
   msgstr "[%s시간 %s분 전]"
  @@ -930,7 +945,7 @@
   msgid "First:"
   msgstr ""
   
  -#: ../plugin/pageview.php:75 ../plugin/SlideShow.php:121
  +#: ../plugin/pageview.php:75 ../plugin/SlideShow.php:120
   msgid "Next:"
   msgstr "다음:"
   
  @@ -953,34 +968,34 @@
   msgid "Version"
   msgstr "버전"
   
  -#: ../plugin/print.php:24
  +#: ../plugin/print.php:28
   #, c-format
   msgid "Retrieved from %s"
   msgstr ""
   
  -#: ../plugin/print.php:29
  +#: ../plugin/print.php:33
   #, c-format
   msgid "last modified %s %s"
   msgstr ""
   
  -#: ../plugin/processor/blog.php:99
  +#: ../plugin/processor/blog.php:101
   msgid "raw"
   msgstr ""
   
  -#: ../plugin/processor/bts.php:178
  +#: ../plugin/processor/bts.php:181
   msgid "Save Changes"
   msgstr "변경 저장"
   
  -#: ../plugin/processor/monimarkup.php:507 ../wiki.php:3858
  +#: ../plugin/processor/monimarkup.php:515 ../wiki.php:4049
   msgid "edit"
   msgstr "편집"
   
  -#: ../plugin/quicklinks.php:16 ../plugin/scrap.php:35
  +#: ../plugin/quicklinks.php:16 ../plugin/scrap.php:37
   #: ../plugin/subscribe.php:19 ../plugin/subscribe.php:55
   msgid "Please login or make your ID."
   msgstr "로그인하거나 ID를 만드세요"
   
  -#: ../plugin/quicklinks.php:22 ../plugin/scrap.php:38
  +#: ../plugin/quicklinks.php:22 ../plugin/scrap.php:40
   #: ../plugin/subscribe.php:61
   msgid "Goto UserPreferences"
   msgstr "UserPreferences로 가기"
  @@ -999,29 +1014,29 @@
   msgid "Do you want to customize your quicklinks ?"
   msgstr "바로가기를 바꾸고 싶으신가요?"
   
  -#: ../plugin/Rating.php:58
  +#: ../plugin/Rating.php:60
   msgid "Awful!"
   msgstr "최악!"
   
  -#: ../plugin/Rating.php:59
  +#: ../plugin/Rating.php:61
   msgid "Not the worst ever."
   msgstr "이보다 나쁠수 없음"
   
  -#: ../plugin/Rating.php:60
  +#: ../plugin/Rating.php:62
   msgid "Not bad!"
   msgstr "나쁘지 않음!"
   
  -#: ../plugin/Rating.php:61
  +#: ../plugin/Rating.php:63
   msgid "Useful!"
   msgstr "유용함"
   
  -#: ../plugin/Rating.php:62
  +#: ../plugin/Rating.php:64
   msgid "Very Gooood!"
   msgstr "매우 좋음"
   
  -#: ../plugin/Rating.php:84 ../plugin/security/community.php:26
  -#: ../plugin/security/community.php:36 ../plugin/security/community.php:46
  -#: ../plugin/security/community.php:61 ../plugin/security/mustlogin.php:29
  +#: ../plugin/Rating.php:86 ../plugin/security/community.php:27
  +#: ../plugin/security/community.php:37 ../plugin/security/community.php:47
  +#: ../plugin/security/community.php:62 ../plugin/security/mustlogin.php:29
   #: ../plugin/security/mustlogin.php:40 ../plugin/security/mustlogin.php:51
   #: ../plugin/security/mustlogin.php:67 ../plugin/security/needtologin.php:29
   #: ../plugin/security/needtologin.php:40 ../plugin/security/needtologin.php:51
  @@ -1029,11 +1044,11 @@
   msgid "Please Login or make your ID on this Wiki ;)"
   msgstr "로그인하거나 ID를 만드세요 ;)"
   
  -#: ../plugin/Rating.php:188
  +#: ../plugin/Rating.php:190
   msgid "Invalid rating request !"
   msgstr ""
   
  -#: ../plugin/Rating.php:203
  +#: ../plugin/Rating.php:205
   msgid "Rating successfully !"
   msgstr ""
   
  @@ -1044,8 +1059,8 @@
   
   #: ../plugin/rcsimport.php:32 ../plugin/rcsimport.php:88
   #: ../plugin/rename.php:77 ../plugin/revert.php:82
  -#: ../plugin/UploadedFiles.php:452 ../plugin/userinfo.php:37
  -#: ../wikilib.php:1256 ../wikilib.php:2225
  +#: ../plugin/UploadedFiles.php:453 ../plugin/userinfo.php:37
  +#: ../wikilib.php:1394 ../wikilib.php:2402
   msgid "Password"
   msgstr "비밀번호"
   
  @@ -1111,39 +1126,39 @@
   msgid "%d days ago"
   msgstr "%s일 전"
   
  -#: ../plugin/RecentChanges.php:119
  +#: ../plugin/RecentChanges.php:86
  +msgid "Recent Changes"
  +msgstr "최근 변경내역"
  +
  +#: ../plugin/RecentChanges.php:126
   msgid "Change Date"
   msgstr "변경일"
   
  -#: ../plugin/RecentChanges.php:122
  +#: ../plugin/RecentChanges.php:131
   msgid "Hits"
   msgstr "조회수"
   
  -#: ../plugin/RecentChanges.php:168
  +#: ../plugin/RecentChanges.php:182
   msgid "Show changes for "
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:173
  +#: ../plugin/RecentChanges.php:187
   msgid "days ago"
   msgstr "몇일 전"
   
  -#: ../plugin/RecentChanges.php:278
  +#: ../plugin/RecentChanges.php:293
   msgid "set bookmark"
   msgstr "북마크"
   
  -#: ../plugin/RecentChanges.php:283
  +#: ../plugin/RecentChanges.php:298
   msgid "Bookmark"
   msgstr "북마크"
   
  -#: ../plugin/RecentChanges.php:360
  +#: ../plugin/RecentChanges.php:375
   #, c-format
   msgid "%s changes"
   msgstr "%s회 고침"
   
  -#: ../plugin/RecentChanges.php:374
  -msgid "Recent Changes"
  -msgstr "최근 변경내역"
  -
   #: ../plugin/referer.php:139
   msgid "Referer history"
   msgstr ""
  @@ -1181,7 +1196,7 @@
   msgid "New name:"
   msgstr "새이름:"
   
  -#: ../plugin/rename.php:69 ../plugin/UploadFile.php:421
  +#: ../plugin/rename.php:69 ../plugin/UploadFile.php:427
   msgid "Rename"
   msgstr "이름바꾸기"
   
  @@ -1193,7 +1208,7 @@
   msgid "Only WikiMaster can rename this page"
   msgstr "위키관리자만이 페이지 이름을 바꿀 수 있습니다"
   
  -#: ../plugin/rename.php:79 ../wikilib.php:1302
  +#: ../plugin/rename.php:79 ../wikilib.php:1440
   msgid "with revision history"
   msgstr "버전 히스토리와 함께"
   
  @@ -1235,7 +1250,7 @@
   msgid "Select a tarball file to restore"
   msgstr "Restore하기 위한 tarball 파일을 고르세요"
   
  -#: ../plugin/revert.php:23 ../wiki.php:5458
  +#: ../plugin/revert.php:23 ../wiki.php:5662
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr "%s의 옛날 버전"
  @@ -1261,7 +1276,7 @@
   msgid "Are you really want to revert this page ?"
   msgstr "정말로 되돌리시겠습니까 ?"
   
  -#: ../plugin/revert.php:74 ../wikilib.php:1071
  +#: ../plugin/revert.php:74 ../wikilib.php:1207
   msgid "Summary"
   msgstr "요약"
   
  @@ -1284,26 +1299,26 @@
   msgid "revert"
   msgstr "되돌리기"
   
  -#: ../plugin/scrap.php:53
  +#: ../plugin/scrap.php:55
   msgid "Scrap lists updated."
   msgstr "스크랩 목록이 갱신되었습니다"
   
  -#: ../plugin/scrap.php:61
  +#: ../plugin/scrap.php:65
   #, c-format
   msgid "\"%s\" is unscrapped."
   msgstr "\"%s\" 스크랩이 취소 되었습니다."
   
  -#: ../plugin/scrap.php:64
  +#: ../plugin/scrap.php:68
   #, c-format
   msgid "\"%s\" is scrapped."
   msgstr "%s(이)가 스크랩되었습니다."
   
  -#: ../plugin/scrap.php:89
  +#: ../plugin/scrap.php:94
   #, c-format
   msgid "Do you want to scrap \"%s\" ?"
   msgstr "\"%s\"을(를) 스크랩하시겠습니까 ?"
   
  -#: ../plugin/scrap.php:92
  +#: ../plugin/scrap.php:97
   msgid "Scrapped pages"
   msgstr "스크랩 목록"
   
  @@ -1323,8 +1338,8 @@
   msgid "Protected ACL actions"
   msgstr "제한된 ACL 액션"
   
  -#: ../plugin/security/acl.php:217 ../plugin/security/community.php:25
  -#: ../plugin/security/community.php:35 ../plugin/security/community.php:45
  +#: ../plugin/security/acl.php:217 ../plugin/security/community.php:26
  +#: ../plugin/security/community.php:36 ../plugin/security/community.php:46
   #: ../plugin/security/mustlogin.php:28 ../plugin/security/mustlogin.php:39
   #: ../plugin/security/mustlogin.php:50 ../plugin/security/needtologin.php:28
   #: ../plugin/security/needtologin.php:39 ../plugin/security/needtologin.php:50
  @@ -1345,7 +1360,7 @@
   msgid "You must enter a valid login ID and password to access this resource.\n"
   msgstr "ID와 비밀번호가 유효해야 접근을 할 수 있습니다.\n"
   
  -#: ../plugin/security/community.php:60 ../plugin/security/htaccesslogin.php:46
  +#: ../plugin/security/community.php:61 ../plugin/security/htaccesslogin.php:46
   #: ../plugin/security/mustlogin.php:66 ../plugin/security/userbased.php:30
   #: ../plugin/security/userbased.php:38 ../plugin/security/userbased.php:46
   #: ../plugin/security/userbased.php:61 ../plugin/security/wikimaster.php:29
  @@ -1384,19 +1399,19 @@
   msgid "No page found"
   msgstr "페이지가 없습니다"
   
  -#: ../plugin/SlideShow.php:102
  +#: ../plugin/SlideShow.php:101
   msgid "Start:"
   msgstr "시작:"
   
  -#: ../plugin/SlideShow.php:111
  +#: ../plugin/SlideShow.php:110
   msgid "End:"
   msgstr "끝:"
   
  -#: ../plugin/SlideShow.php:131
  +#: ../plugin/SlideShow.php:130
   msgid "Prev:"
   msgstr "이전:"
   
  -#: ../plugin/SlideShow.php:138
  +#: ../plugin/SlideShow.php:137
   msgid "Return"
   msgstr "돌아가기"
   
  @@ -1450,15 +1465,16 @@
   msgid "Subscribed pages"
   msgstr "구독 목록"
   
  -#: ../plugin/SWFUpload.php:136
  +#: ../plugin/SWFUpload.php:137
   msgid "Files..."
   msgstr "파일..."
   
  -#: ../plugin/SWFUpload.php:137 ../plugin/UploadFile.php:426
  -msgid "Upload"
  -msgstr "올리기"
  +#: ../plugin/SWFUpload.php:138 ../plugin/UploadFile.php:443
  +#: ../plugin/UploadForm.php:270
  +msgid "Upload files"
  +msgstr "파일올리기"
   
  -#: ../plugin/SWFUpload.php:138
  +#: ../plugin/SWFUpload.php:139
   msgid "Cancel All files"
   msgstr "모두 취소"
   
  @@ -1498,7 +1514,7 @@
   msgid "-- Select --"
   msgstr "-- 선택 --"
   
  -#: ../plugin/ticket.php:172
  +#: ../plugin/ticket.php:173
   msgid "Invalid use of ticket"
   msgstr ""
   
  @@ -1574,36 +1590,36 @@
   msgid "TwinPages of %s"
   msgstr "%s의 쌍둥이 페이지"
   
  -#: ../plugin/TwinPages.php:19 ../wiki.php:5442
  +#: ../plugin/TwinPages.php:20 ../wiki.php:5645
   msgid "See [TwinPages]: "
   msgstr ""
   
  -#: ../plugin/TwinPages.php:21
  +#: ../plugin/TwinPages.php:22
   msgid "No TwinPages found."
   msgstr "쌍둥이 페이지가 없습니다"
   
  -#: ../plugin/UploadedFiles.php:301
  +#: ../plugin/UploadedFiles.php:303
   msgid "File name"
   msgstr "파일 이름"
   
  -#: ../plugin/UploadedFiles.php:302
  +#: ../plugin/UploadedFiles.php:304
   msgid "Size"
   msgstr "크기"
   
  -#: ../plugin/UploadedFiles.php:353
  +#: ../plugin/UploadedFiles.php:355
   msgid "Next page &raquo;"
   msgstr "다음 페이지 &raquo;"
   
  -#: ../plugin/UploadedFiles.php:355
  +#: ../plugin/UploadedFiles.php:357
   msgid "&laquo; First page"
   msgstr "&laquo; 첫 페이지"
   
  -#: ../plugin/UploadedFiles.php:447
  +#: ../plugin/UploadedFiles.php:448
   #, c-format
   msgid "Total %d files"
   msgstr "총 %d 개 파일"
   
  -#: ../plugin/UploadedFiles.php:453 ../wikilib.php:1234
  +#: ../plugin/UploadedFiles.php:454 ../wikilib.php:1372
   msgid "Delete selected files"
   msgstr "선택된 파일 지우기"
   
  @@ -1641,299 +1657,299 @@
   msgid "Unknown upload error"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:180 ../plugin/UploadFile.php:194
  +#: ../plugin/UploadFile.php:184 ../plugin/UploadFile.php:198
   #, c-format
   msgid "The %s type of %s is not allowed to upload"
   msgstr "%s의 %s 형식은 업로드가 허락되지 않습니다"
   
  -#: ../plugin/UploadFile.php:196
  +#: ../plugin/UploadFile.php:200
   #, c-format
   msgid "%s is not allowed to upload"
   msgstr "%s은(는) 업로드가 허락되지 않습니다"
   
  -#: ../plugin/UploadFile.php:251
  +#: ../plugin/UploadFile.php:255
   #, c-format
   msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
   msgstr "파일 확장자를 \"%s\"에서 \"%s\"(으)로 바꿀 수 없음."
   
  -#: ../plugin/UploadFile.php:268
  +#: ../plugin/UploadFile.php:273
   msgid "ERROR:"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:300
  +#: ../plugin/UploadFile.php:305
   #, c-format
   msgid "File \"%s\" is uploaded successfully"
   msgstr "\"%s\"파일이 성공적으로 올라갔습니다"
   
  -#: ../plugin/UploadFile.php:366
  +#: ../plugin/UploadFile.php:372
   msgid "Files are uploaded successfully"
   msgstr "파일이 성공적으로 올라갔습니다."
   
  -#: ../plugin/UploadFile.php:402
  +#: ../plugin/UploadFile.php:408
   msgid "Multi upload form"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:415
  +#: ../plugin/UploadFile.php:421
   msgid "Replace original file"
   msgstr "원본 파일 교체"
   
  -#: ../plugin/UploadFile.php:416
  +#: ../plugin/UploadFile.php:422
   msgid "Rename if it already exist"
   msgstr "이미 있을경우 이름 바꿈"
   
  -#: ../plugin/UploadFile.php:429
  +#: ../plugin/UploadFile.php:432
  +msgid "Upload"
  +msgstr "올리기"
  +
  +#: ../plugin/UploadFile.php:435
   #, c-format
   msgid "or %s."
   msgstr "혹은 %s."
   
  -#: ../plugin/UploadFile.php:429
  +#: ../plugin/UploadFile.php:435
   msgid "Multiple Upload files"
   msgstr "여러파일 올리기"
   
  -#: ../plugin/UploadFile.php:437 ../plugin/UploadForm.php:222
  -msgid "Upload files"
  -msgstr "파일올리기"
  -
  -#: ../plugin/UploadForm.php:17
  +#: ../plugin/UploadForm.php:19
   msgid "Successfully Uploaded"
   msgstr "성공적으로 올라감"
   
  -#: ../plugin/UploadForm.php:18
  +#: ../plugin/UploadForm.php:20
   msgid "Choose File"
   msgstr "파일찾기"
   
  -#: ../plugin/UploadForm.php:220
  +#: ../plugin/UploadForm.php:268
   msgid "add files"
   msgstr "파일추가"
   
  -#: ../plugin/UploadForm.php:221
  +#: ../plugin/UploadForm.php:269
   msgid "add a file"
   msgstr "파일추가"
   
  -#: ../plugin/UploadForm.php:223
  +#: ../plugin/UploadForm.php:271
   msgid "Reset"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:224
  +#: ../plugin/UploadForm.php:272
   msgid "Attachments"
   msgstr "첨부"
   
  -#: ../plugin/userform.php:35 ../plugin/userform.php:38
  +#: ../plugin/userform.php:36 ../plugin/userform.php:39
   msgid "Successfully confirmed"
   msgstr ""
   
  -#: ../plugin/userform.php:36
  +#: ../plugin/userform.php:37
   msgid "Your e-mail address is confirmed successfully"
   msgstr "이메일 주소 확인이 성공되었습니다"
   
  -#: ../plugin/userform.php:43
  +#: ../plugin/userform.php:44
   msgid "Your new password is confirmed successfully"
   msgstr "새로운 비밀번호가 성공적으로 확인되었습니다"
   
  -#: ../plugin/userform.php:45
  +#: ../plugin/userform.php:46
   msgid "Confirmation missmatched !"
   msgstr "확인이 맞지 않습니다 !"
   
  -#: ../plugin/userform.php:46 ../plugin/userform.php:50
  +#: ../plugin/userform.php:47 ../plugin/userform.php:51
   msgid "Please try again to register your e-mail address"
   msgstr "이메일 주소 등록을 다시 하세요"
   
  -#: ../plugin/userform.php:49
  +#: ../plugin/userform.php:50
   msgid "ID does not exists !"
   msgstr "아이디가 존재하지 않습니다 !"
   
  -#: ../plugin/userform.php:82 ../plugin/userform.php:274
  +#: ../plugin/userform.php:84 ../plugin/userform.php:281
   #, c-format
   msgid "Successfully login as '%s'"
   msgstr "성공적으로 '%s'(으)로 로그인되었습니다"
   
  -#: ../plugin/userform.php:90 ../plugin/userform.php:279
  -#: ../plugin/userform.php:322
  +#: ../plugin/userform.php:92 ../plugin/userform.php:286
  +#: ../plugin/userform.php:329
   msgid "Invalid password !"
   msgstr "잘못된 비밀번호 !"
   
  -#: ../plugin/userform.php:94
  +#: ../plugin/userform.php:97
   #, c-format
   msgid "\"%s\" does not exists on this wiki !"
   msgstr "\"%s\"은 이 위키에 없습니다 !"
   
  -#: ../plugin/userform.php:96
  +#: ../plugin/userform.php:99
   msgid "Make new ID on this wiki"
   msgstr "새로운 ID 만들기"
   
  -#: ../plugin/userform.php:102
  +#: ../plugin/userform.php:105
   msgid "Cookie deleted !"
   msgstr "쿠키가 지워졌습니다 !"
   
  -#: ../plugin/userform.php:107 ../wikilib.php:2376
  +#: ../plugin/userform.php:110 ../wikilib.php:2562
   msgid "E-mail new password"
   msgstr "새 비밀번호 받기"
   
  -#: ../plugin/userform.php:152
  +#: ../plugin/userform.php:155
   msgid "New password confirmation"
   msgstr "새 비밀번호 확인"
   
  -#: ../plugin/userform.php:157
  +#: ../plugin/userform.php:160
   msgid "Please confirm your new password"
   msgstr "새 비밀번호를 확인해 주세요"
   
  -#: ../plugin/userform.php:159
  +#: ../plugin/userform.php:162
   #, c-format
   msgid "Your new password is %s"
   msgstr "새 비밀번호는 %s"
   
  -#: ../plugin/userform.php:160 ../plugin/userform.php:266
  +#: ../plugin/userform.php:163 ../plugin/userform.php:269
   msgid "Please change your password later"
   msgstr "비밀번호를 바꿔주세요"
   
  -#: ../plugin/userform.php:164 ../plugin/userform.php:172
  +#: ../plugin/userform.php:167 ../plugin/userform.php:175
   msgid "Fail to e-mail notification !"
   msgstr "이메일 알림 실패 !"
   
  -#: ../plugin/userform.php:167
  +#: ../plugin/userform.php:170
   msgid "New password is sent to your e-mail !"
   msgstr "새 비밀번호가 이메일로 전송되었습니다 !"
   
  -#: ../plugin/userform.php:168
  +#: ../plugin/userform.php:171
   msgid "Please check your e-mail"
   msgstr "이메일을 확인해 주세요"
   
  -#: ../plugin/userform.php:173
  +#: ../plugin/userform.php:176
   msgid "E-mail mismatch !"
   msgstr "이메일이 맞지 않습니다 !"
   
  -#: ../plugin/userform.php:175
  +#: ../plugin/userform.php:178
   msgid "Invalid request"
   msgstr "잘못된 요청 !"
   
  -#: ../plugin/userform.php:176
  +#: ../plugin/userform.php:179
   msgid "Please confirm your e-mail address first !"
   msgstr "이메일 주소를 먼저 확인해 주세요 !"
   
  -#: ../plugin/userform.php:183
  +#: ../plugin/userform.php:186
   msgid "ID and e-mail mismatch !"
   msgstr "아이디와 이메일 주소가 맞지 않습니다 !"
   
  -#: ../plugin/userform.php:185
  +#: ../plugin/userform.php:188
   msgid "Please try again or make a new profile"
   msgstr "이메일 주소 등록을 다시 하세요"
   
  -#: ../plugin/userform.php:225 ../plugin/userform.php:310
  +#: ../plugin/userform.php:228 ../plugin/userform.php:317
   msgid "too short password!"
   msgstr "비밀번호가 짧습니다"
   
  -#: ../plugin/userform.php:226
  +#: ../plugin/userform.php:229
   msgid "mismatch password!"
   msgstr "비밀번호가 맞지 않습니다!"
   
  -#: ../plugin/userform.php:227 ../plugin/userform.php:314
  +#: ../plugin/userform.php:230 ../plugin/userform.php:321
   msgid "not acceptable character found in the password!"
   msgstr ""
   
  -#: ../plugin/userform.php:230
  +#: ../plugin/userform.php:233
   msgid "Your password is too simple to use as a password !"
   msgstr ""
   
  -#: ../plugin/userform.php:236 ../plugin/userform.php:345
  +#: ../plugin/userform.php:239 ../plugin/userform.php:356
   msgid "Your email address is not valid"
   msgstr "이메일 주소가 잘못 되었습니다"
   
  -#: ../plugin/userform.php:241 ../plugin/userform.php:413
  +#: ../plugin/userform.php:244 ../plugin/userform.php:423
   msgid "Fail to register"
   msgstr "등록을 실패했습니다"
   
  -#: ../plugin/userform.php:242 ../plugin/userform.php:414
  +#: ../plugin/userform.php:245 ../plugin/userform.php:424
   msgid "You are not allowed to register on this wiki"
   msgstr "위키 등록이 허락되지 않았습니다"
   
  -#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5394
  -#: ../wiki.php:5405
  +#: ../plugin/userform.php:246 ../plugin/userform.php:425 ../wiki.php:5596
  +#: ../wiki.php:5607
   msgid "Please contact WikiMasters"
   msgstr "위키관리자에게 문의하세요"
   
  -#: ../plugin/userform.php:247
  +#: ../plugin/userform.php:250
   msgid "Successfully added!"
   msgstr ""
   
  -#: ../plugin/userform.php:253
  +#: ../plugin/userform.php:256
   #, c-format
   msgid "Successfully added as '%s'"
   msgstr ""
   
  -#: ../plugin/userform.php:254
  +#: ../plugin/userform.php:257
   msgid "Please check your mailbox"
   msgstr "이메일을 확인해 주세요"
   
  -#: ../plugin/userform.php:261 ../plugin/userform.php:339
  +#: ../plugin/userform.php:264 ../plugin/userform.php:346
   msgid "E-mail confirmation"
   msgstr "이메일 확인"
   
  -#: ../plugin/userform.php:263 ../plugin/userform.php:341
  +#: ../plugin/userform.php:266 ../plugin/userform.php:348
   msgid "Please confirm your email address"
   msgstr "이메일 주소를 확인해 주세요"
   
  -#: ../plugin/userform.php:265
  +#: ../plugin/userform.php:268
   #, c-format
   msgid "Your initial password is %s"
   msgstr ""
   
  -#: ../plugin/userform.php:269
  +#: ../plugin/userform.php:275
   msgid "Confirmation E-mail sent"
   msgstr "확인 이메일이 보내졌습니다"
   
  -#: ../plugin/userform.php:284
  +#: ../plugin/userform.php:291
   msgid "Invalid username !"
   msgstr "잘못된 사용자명 !"
   
  -#: ../plugin/userform.php:312
  +#: ../plugin/userform.php:319
   msgid "mismatch password !"
   msgstr "맞지 않는 비밀번호 !"
   
  -#: ../plugin/userform.php:315 ../plugin/userform.php:323
  +#: ../plugin/userform.php:322 ../plugin/userform.php:330
   msgid "Password is not changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:317
  +#: ../plugin/userform.php:324
   msgid "Password is changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:319
  +#: ../plugin/userform.php:326
   msgid "Password is too simple to use as a password !"
   msgstr "비밀번호로 쓰기에는 너무 짧은 비밀번호입니다 !"
   
  -#: ../plugin/userform.php:343
  +#: ../plugin/userform.php:353
   msgid "E-mail confirmation mail sent"
   msgstr ""
   
  -#: ../plugin/userform.php:354
  +#: ../plugin/userform.php:365
   msgid "Your Nickname already used as ID in this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:359
  +#: ../plugin/userform.php:370
   msgid "Profiles are saved successfully !"
   msgstr "설정이 성공적으로 저장되었습니다 !"
   
  -#: ../plugin/userform.php:382 ../plugin/userform.php:435
  +#: ../plugin/userform.php:393 ../plugin/userform.php:445
   #, c-format
   msgid "Authentication request was failed: %s"
   msgstr ""
   
  -#: ../plugin/userform.php:408
  +#: ../plugin/userform.php:418
   #, c-format
   msgid "Successfully login as '%s' via OpenID."
   msgstr "성공적으로 오픈ID '%s'(으)로 로그인되었습니다"
   
  -#: ../plugin/userform.php:422
  +#: ../plugin/userform.php:432
   #, c-format
   msgid "Your Nickname %s already used as ID in this Wiki."
   msgstr ""
   
  -#: ../plugin/userform.php:430
  +#: ../plugin/userform.php:440
   #, c-format
   msgid "OpenID Authentication successful and saved as %s."
   msgstr ""
   
  -#: ../plugin/userform.php:437
  +#: ../plugin/userform.php:447
   msgid "Invalid OpenID Authentication request"
   msgstr ""
   
  @@ -1980,150 +1996,150 @@
   #: ../plugin/whois.php:137
   #, c-format
   msgid "Whois search result for %s"
  -msgstr "%s에 대한 Whois 서치 결과"
  +msgstr "%s에 대한 Whois 검색 결과"
   
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2664
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2911
   msgid "Others"
   msgstr ""
   
  -#: ../wiki.php:1227
  +#: ../wiki.php:1316
   #, c-format
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1647
  +#: ../wiki.php:1740
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
  -#: ../wiki.php:1657
  +#: ../wiki.php:1750
   msgid "File does not exist"
   msgstr "페이지가 없습니다"
   
  -#: ../wiki.php:2041
  +#: ../wiki.php:2179
   #, c-format
   msgid "File '%s' does not exist."
   msgstr "파일 '%s'이(가) 없습니다"
   
  -#: ../wiki.php:2931 ../wiki.php:2942 ../wiki.php:5637
  +#: ../wiki.php:3109 ../wiki.php:3120 ../wiki.php:5870
   msgid "Invalid ajax action."
   msgstr "잘못된 ajax 액션."
   
  -#: ../wiki.php:3433
  +#: ../wiki.php:3619
   msgid "Tags:"
   msgstr "태그:"
   
  -#: ../wiki.php:3461
  +#: ../wiki.php:3648
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:3461
  +#: ../wiki.php:3648
   #, c-format
   msgid "TwinPages"
   msgstr "TwinPages"
   
  -#: ../wiki.php:3466
  +#: ../wiki.php:3653
   msgid "See [TwinPages]:"
   msgstr ""
   
  -#: ../wiki.php:4038
  +#: ../wiki.php:4233
   msgid "Sister Sites Index"
   msgstr ""
   
  -#: ../wiki.php:4484 ../locale/dummy.php:6
  +#: ../wiki.php:4682 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "고치기"
   
  -#: ../wiki.php:4486
  +#: ../wiki.php:4684
   msgid "NotEditable"
   msgstr "고칠수 없음"
   
  -#: ../wiki.php:4490 ../locale/dummy.php:6
  +#: ../wiki.php:4688 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "보기"
   
  -#: ../wiki.php:4491 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4689 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "찾기"
   
  -#: ../wiki.php:4937
  +#: ../wiki.php:5150
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5200
  +#: ../wiki.php:5410
   msgid "Someone logged in at another place !"
   msgstr ""
   
  -#: ../wiki.php:5393
  +#: ../wiki.php:5595
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5404
  +#: ../wiki.php:5606
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:5444 ../wiki.php:5453 ../wikilib.php:1520
  +#: ../wiki.php:5647 ../wiki.php:5656 ../wikilib.php:1659
   msgid "Create this page"
   msgstr "페이지 만들기"
   
  -#: ../wiki.php:5455
  +#: ../wiki.php:5658
   #, c-format
   msgid "%s has saved revisions"
   msgstr "%s이(가) 저장된 옛버전이 있습니다"
   
  -#: ../wiki.php:5456 ../wiki.php:5463
  +#: ../wiki.php:5660 ../wiki.php:5668
   #, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr "%s 혹은 %s를 눌러 전체 찾기를 할 수 있습니다.\n"
   
  -#: ../wiki.php:5461
  +#: ../wiki.php:5666
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr "%s 페이지를 이곳 위키에서 찾을 수 없습니다"
   
  -#: ../wiki.php:5468
  +#: ../wiki.php:5674
   msgid "Please try to search with another word"
   msgstr "다른 단어로 찾아보세요."
   
  -#: ../wiki.php:5480
  +#: ../wiki.php:5686
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr ""
   "%s 아이콘을 누르거나 아래의 탬플리트 목록을 이용해 새 페이지를 만드세요:\n"
   
  -#: ../wiki.php:5483
  +#: ../wiki.php:5689
   msgid "You have no templates"
   msgstr "템플리트가 없습니다"
   
  -#: ../wiki.php:5485
  +#: ../wiki.php:5691
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr "탬플리트를 만드시려면 '%s' 형식의 이름을 가지는 페이지를 만드세요.\n"
   
  -#: ../wiki.php:5496
  +#: ../wiki.php:5702
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr "\"%s\"페이지로 부터 리다리렉트됨"
   
  -#: ../wiki.php:5639
  +#: ../wiki.php:5872
   msgid "Invalid macro action."
   msgstr "잘못된 마크로 액션."
   
  -#: ../wiki.php:5649
  +#: ../wiki.php:5882
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "'%s'은(는) 허락되지 않았습니다"
   
  -#: ../wiki.php:5669
  +#: ../wiki.php:5902
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "\"%s\"을(를) 실패했습니다 !"
   
  -#: ../wiki.php:5672
  +#: ../wiki.php:5905
   msgid "Please enter the valid password"
   msgstr "정확한 비밀번호를 넣어주세요"
   
  -#: ../wikilib.php:682
  +#: ../wikilib.php:806
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -2152,354 +2168,354 @@
   "<b>테이블</b>: || 셀 내용 |||| 두칸에 걸친 내용 ||;<br />\n"
   "테이블이나 제목 끝에 공백이 오면 안됩니다.<br />\n"
   
  -#: ../wikilib.php:787
  +#: ../wikilib.php:912
   msgid "You are not allowed to edit this page !"
   msgstr "이 페이지를 고칠 수 있도록 허락되어있지 않습니다 !"
   
  -#: ../wikilib.php:794
  +#: ../wikilib.php:920
   #, c-format
   msgid "Edit %s"
   msgstr "%s 고치기"
   
  -#: ../wikilib.php:815 ../wikilib.php:1089 ../wikilib.php:1738
  -#: ../wikilib.php:1835 ../wikilib.php:2309 ../wikilib.php:2363
  +#: ../wikilib.php:943 ../wikilib.php:1227 ../wikilib.php:1881
  +#: ../wikilib.php:1978 ../wikilib.php:2490 ../wikilib.php:2548
   msgid "Save"
   msgstr "저장"
   
  -#: ../wikilib.php:823 ../wikilib.php:1076 ../wikilib.php:1746
  -#: ../wikilib.php:1843
  +#: ../wikilib.php:951 ../wikilib.php:1214 ../wikilib.php:1889
  +#: ../wikilib.php:1986
   msgid "Skip to preview"
   msgstr "미리보기로"
   
  -#: ../wikilib.php:936
  +#: ../wikilib.php:1066
   msgid "Use one of the following templates as an initial release :\n"
   msgstr "최초 버전으로 다음의 탬플리트를 활용하실 수 있습니다 :\n"
   
  -#: ../wikilib.php:938
  +#: ../wikilib.php:1068
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr "탬플리트를 만드시려면 '%s' 형식의 이름으로 페이지를 만드세요."
   
  -#: ../wikilib.php:942
  +#: ../wikilib.php:1072
   msgid "Merge"
   msgstr "병합"
   
  -#: ../wikilib.php:943
  +#: ../wikilib.php:1073
   msgid "Merge manually"
   msgstr "수동 병합"
   
  -#: ../wikilib.php:944
  +#: ../wikilib.php:1074
   msgid "Ignore conflicts"
   msgstr "충돌 무시"
   
  -#: ../wikilib.php:976
  +#: ../wikilib.php:1109
   msgid "ReduceEditor"
   msgstr "편집창 줄이기"
   
  -#: ../wikilib.php:977
  +#: ../wikilib.php:1110
   msgid "EnlargeEditor"
   msgstr "편집창 늘이기"
   
  -#: ../wikilib.php:981 ../locale/dummy.php:6
  +#: ../wikilib.php:1114 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr "인터위키"
   
  -#: ../wikilib.php:983
  +#: ../wikilib.php:1116
   msgid "HelpOnEditing"
   msgstr "고치기 도움말"
   
  -#: ../wikilib.php:1015
  +#: ../wikilib.php:1150
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:1035
  +#: ../wikilib.php:1170
   msgid "Category"
   msgstr "분류"
   
  -#: ../wikilib.php:1043
  +#: ../wikilib.php:1178
   msgid " Select "
   msgstr " 선택 "
   
  -#: ../wikilib.php:1054
  +#: ../wikilib.php:1190
   msgid "Minor edit"
   msgstr ""
   
  -#: ../wikilib.php:1168
  +#: ../wikilib.php:1306
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:1173
  +#: ../wikilib.php:1311
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s은(는) 잘못된 액션"
   
  -#: ../wikilib.php:1175
  +#: ../wikilib.php:1313
   msgid "Is it valid action ?"
   msgstr "올바른 액션입니까 ?"
   
  -#: ../wikilib.php:1222
  +#: ../wikilib.php:1360
   #, c-format
   msgid "File '%s' is deleted"
   msgstr "'%s' 파일이 지워졌습니다"
   
  -#: ../wikilib.php:1224
  +#: ../wikilib.php:1362
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr "'%s' 지우기를 실패했습니다"
   
  -#: ../wikilib.php:1229
  +#: ../wikilib.php:1367
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr "'%s' 디렉토리가 지우졌습니다"
   
  -#: ../wikilib.php:1231
  +#: ../wikilib.php:1369
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr "'%s' 지우기를 실패했습니다"
   
  -#: ../wikilib.php:1241 ../wikilib.php:1261
  +#: ../wikilib.php:1379 ../wikilib.php:1399
   msgid "No files are selected !"
   msgstr "파일을 선택하지 않았습니다"
   
  -#: ../wikilib.php:1254
  +#: ../wikilib.php:1392
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr "정말로 '%s'(을)를 지우시겠습니까 ?"
   
  -#: ../wikilib.php:1258
  +#: ../wikilib.php:1396
   msgid "Delete selected file"
   msgstr "선택된 파일 지우기"
   
  -#: ../wikilib.php:1279
  +#: ../wikilib.php:1417
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr "%s(이)가 지워짐 !"
   
  -#: ../wikilib.php:1294
  +#: ../wikilib.php:1432
   msgid "Please delete this file manually."
   msgstr "파일을 직접 지워주세요."
   
  -#: ../wikilib.php:1296
  +#: ../wikilib.php:1434
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "\"%s\"을(를) 지울까요 ?"
   
  -#: ../wikilib.php:1349
  +#: ../wikilib.php:1488
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
  -#: ../wikilib.php:1522
  +#: ../wikilib.php:1661
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr " 혹은 %s를 눌러 전체찾기를 합니다.\n"
   
  -#: ../wikilib.php:1522
  +#: ../wikilib.php:1661
   msgid "title"
   msgstr "제목"
   
  -#: ../wikilib.php:1536
  +#: ../wikilib.php:1675
   msgid "Please try to fulltext search"
   msgstr "전체 찾기를 해보시기 바랍니다"
   
  -#: ../wikilib.php:1539
  +#: ../wikilib.php:1678
   #, c-format
   msgid "You can also click %s to fulltext search.\n"
   msgstr "%s 아이콘을 눌러 전체 찾기를 하실 수 있습니다.\n"
   
  -#: ../wikilib.php:1584 ../wikilib.php:1693
  +#: ../wikilib.php:1723 ../wikilib.php:1836
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "%s을(를) 고치는 동안 다른 사람이 이 페이지를 저장했습니다"
   
  -#: ../wikilib.php:1590
  +#: ../wikilib.php:1729
   msgid "Section edit is not valid for non-exists page."
   msgstr "없는 페이지에 대한 섹션 편집은 가능하지 않습니다"
   
  -#: ../wikilib.php:1623 ../wikilib.php:1875
  +#: ../wikilib.php:1762 ../wikilib.php:2018
   msgid "mail does not supported by default."
   msgstr "메일이 지원되지 않습니다"
   
  -#: ../wikilib.php:1627 ../wikilib.php:1879
  +#: ../wikilib.php:1766 ../wikilib.php:2022
   msgid "Sent notification mail."
   msgstr "메일을 보냈습니다"
   
  -#: ../wikilib.php:1629 ../wikilib.php:1881
  +#: ../wikilib.php:1768 ../wikilib.php:2024
   msgid "No subscribers found."
   msgstr "구독자가 없습니다"
   
  -#: ../wikilib.php:1634 ../wikilib.php:1886
  +#: ../wikilib.php:1773 ../wikilib.php:2029
   #, c-format
   msgid "%s is not editable"
   msgstr "%s(이)가 쓰기가능하지 않음"
   
  -#: ../wikilib.php:1636 ../wikilib.php:1888
  +#: ../wikilib.php:1775 ../wikilib.php:2031
   #, c-format
   msgid "%s is saved"
   msgstr "%s(이)가 저장됨"
   
  -#: ../wikilib.php:1684
  +#: ../wikilib.php:1827
   msgid "Goto Editor"
   msgstr "편집기로 가기"
   
  -#: ../wikilib.php:1698
  +#: ../wikilib.php:1841
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr "%s 페이지 최근 내용이 병합되었습니다."
   
  -#: ../wikilib.php:1699
  +#: ../wikilib.php:1842
   #, c-format
   msgid "%s is merged successfully"
   msgstr "%s 페이지가 성공적으로 병합되었습니다"
   
  -#: ../wikilib.php:1703
  +#: ../wikilib.php:1846
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr "%s에 대하여 병합 충돌이 발견되었습니다 !"
   
  -#: ../wikilib.php:1704
  +#: ../wikilib.php:1847
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr "%s에 대해 병합이 취소되었습니다."
   
  -#: ../wikilib.php:1705
  +#: ../wikilib.php:1848
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1706
  +#: ../wikilib.php:1849
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1711
  +#: ../wikilib.php:1854
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr "%s에 대해 병합을 합니다"
   
  -#: ../wikilib.php:1712
  +#: ../wikilib.php:1855
   msgid "Please resolve conflicts manually."
   msgstr "충돌을 직접 해결하시기 바랍니다."
   
  -#: ../wikilib.php:1715
  +#: ../wikilib.php:1858
   #, c-format
   msgid "Force merging for %s !"
   msgstr "%s에 대해 병합이 강제로 되었습니다 !"
   
  -#: ../wikilib.php:1716
  +#: ../wikilib.php:1859
   msgid "Please be careful, you could damage useful information."
   msgstr "주의하시기 바랍니다. 중요한 정보를 잃어버릴 수도 있습니다."
   
  -#: ../wikilib.php:1730
  +#: ../wikilib.php:1873
   msgid "Conflict error!"
   msgstr "충돌 오류!"
   
  -#: ../wikilib.php:1771
  +#: ../wikilib.php:1914
   msgid "Too long Comment"
   msgstr "요약이 너무 깁니다"
   
  -#: ../wikilib.php:1821
  +#: ../wikilib.php:1964
   #, c-format
   msgid "Preview of %s"
   msgstr "%s 미리보기"
   
  -#: ../wikilib.php:1921
  +#: ../wikilib.php:2064
   msgid "Nobody subscribed to this page."
   msgstr "아무도 페이지를 구독하지 않고있습니다."
   
  -#: ../wikilib.php:1940
  +#: ../wikilib.php:2083
   #, c-format
   msgid "%s page is modified"
   msgstr "%s 페이지가 변경되었습니다"
   
  -#: ../wikilib.php:1969
  +#: ../wikilib.php:2112
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:1982
  +#: ../wikilib.php:2125
   msgid "Send notification mails to all subscribers"
   msgstr "모든 구독자에게 메일을 보냅니다"
   
  -#: ../wikilib.php:1987
  +#: ../wikilib.php:2130
   msgid "Mails are sent successfully"
   msgstr "메일이 성공적으로 보내졌습니다"
   
  -#: ../wikilib.php:1988
  +#: ../wikilib.php:2131
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr "'%s'에게 메일을 보냈습니다"
   
  -#: ../wikilib.php:1990
  +#: ../wikilib.php:2133
   msgid "Fail to send mail"
   msgstr "메일 보내기 실패했습니다"
   
  -#: ../wikilib.php:2001
  +#: ../wikilib.php:2144
   msgid "This wiki does not support sendmail"
   msgstr "위키에서 sendmail을 지원받지 못합니다"
   
  -#: ../wikilib.php:2099
  +#: ../wikilib.php:2274
   msgid "Invalid regular expression !"
   msgstr "잘못된 정규 표현식 !"
   
  -#: ../wikilib.php:2123
  +#: ../wikilib.php:2298
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:2126
  +#: ../wikilib.php:2301
   msgid "Infinite loop possible!"
   msgstr "무한 루프가 가능함!"
   
  -#: ../wikilib.php:2241
  +#: ../wikilib.php:2418
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:2242
  +#: ../wikilib.php:2419
   msgid "OpenID"
   msgstr ""
   
  -#: ../wikilib.php:2254 ../wikilib.php:2381
  +#: ../wikilib.php:2432 ../wikilib.php:2567
   msgid "ID"
   msgstr "아이디"
   
  -#: ../wikilib.php:2289 ../wikilib.php:2374
  +#: ../wikilib.php:2470 ../wikilib.php:2560
   msgid "Make profile"
   msgstr "사용자 등록"
   
  -#: ../wikilib.php:2291
  +#: ../wikilib.php:2472
   msgid "password again"
   msgstr "비밀번호 재입력"
   
  -#: ../wikilib.php:2293 ../wikilib.php:2342
  +#: ../wikilib.php:2474 ../wikilib.php:2524
   msgid "Mail"
   msgstr "메일"
   
  -#: ../wikilib.php:2315
  +#: ../wikilib.php:2496
   msgid "New password"
   msgstr "새 비밀번호"
   
  -#: ../wikilib.php:2320
  +#: ../wikilib.php:2501
   msgid "Nickname"
   msgstr "별명"
   
  -#: ../wikilib.php:2343
  +#: ../wikilib.php:2525
   msgid "Time Zone"
   msgstr "시간대"
   
  -#: ../wikilib.php:2352
  +#: ../wikilib.php:2534
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:2665
  +#: ../wikilib.php:2912
   msgid "Show all"
   msgstr "모두 보기"
   
  -#: ../wikilib.php:2803
  +#: ../wikilib.php:3050
   msgid "Contents"
   msgstr "목차"
   
  -#: ../wikilib.php:2923
  +#: ../wikilib.php:3171
   #, c-format
   msgid "Title search for \"%s\""
   msgstr "\"%s\"에 대한 제목 찾기"
  @@ -2508,45 +2524,49 @@
   msgid "Check a dba configuration"
   msgstr "dba 환경 검사"
   
  -#: ../monisetup.php:50
  +#: ../monisetup.php:53
   #, c-format
   msgid "%s is selected."
   msgstr "%s(이)가 선택됨"
   
  -#: ../monisetup.php:57
  +#: ../monisetup.php:55
  +msgid "No \\$dba_type selected."
  +msgstr "\\$dba_type를 고를 수 없습니다."
  +
  +#: ../monisetup.php:63
   msgid "Check a AcceptPathInfo setting for Apache 2.x.xx"
   msgstr "아파치 2.x.xx를 위한 AcceptPathInfo 검사"
   
  -#: ../monisetup.php:64 ../monisetup.php:70
  +#: ../monisetup.php:70 ../monisetup.php:76
   msgid "Off"
   msgstr "꺼짐"
   
  -#: ../monisetup.php:72
  +#: ../monisetup.php:78
   msgid "On"
   msgstr "켜짐"
   
  -#: ../monisetup.php:426
  +#: ../monisetup.php:432
   msgid ""
   "Please change the permission of some directories writable on your server to "
   "initialize your Wiki."
   msgstr ""
   "위키를 초기화하기 위해서 몇몇 디렉토리를 쓰기가능하도록 바꿔줘야 합니다"
   
  -#: ../monisetup.php:428
  +#: ../monisetup.php:434
   #, c-format
   msgid ""
   "If you want a more safe wiki, try to change the permission of directories "
   "with %s."
   msgstr "보다 안전한 위키를 원하신다면 디렉토리의 퍼미션을 %s(으)로 바꿔주세요"
   
  -#: ../monisetup.php:431
  +#: ../monisetup.php:437
   msgid ""
   "or use <tt>monisetup.sh</tt> and select 777 or <font color='red'>2777</font>"
   msgstr ""
   "혹은 <tt>monisetup.sh</tt>를 사용하여 777 혹은 <font color='red'>2777</font>"
   "를 고르세요"
   
  -#: ../monisetup.php:433
  +#: ../monisetup.php:439
   msgid ""
   "After execute one of above two commands, just <a href='monisetup.php'>reload "
   "this <tt>monisetup.php</tt></a> would make a new initial <tt>config.php</tt> "
  @@ -2556,106 +2576,106 @@
   "php</tt>를 다시 열어</a> 주셔서 새로운 초기 <tt>config.php</tt> 파일을, 검사"
   "된 몇몇 기본 설정값과 함께 만들어 주셔야 합니다."
   
  -#: ../monisetup.php:434
  +#: ../monisetup.php:440
   msgid "Reload"
   msgstr "다시부르기"
   
  -#: ../monisetup.php:437
  +#: ../monisetup.php:443
   msgid "WARN"
   msgstr "경고"
   
  -#: ../monisetup.php:438
  +#: ../monisetup.php:444
   msgid ""
   "Please execute the following command after you have completed your "
   "configuration."
   msgstr "환경설정을 모두 마치신 후에 다음 명령을 실행해주시기 바랍니다."
   
  -#: ../monisetup.php:442 ../monisetup.php:1268
  +#: ../monisetup.php:448 ../monisetup.php:1274
   msgid "WARN: You have to enter your Admin Password"
   msgstr "주의: 관리자 비밀번호를 넣어주시기 바랍니다"
   
  -#: ../monisetup.php:445
  +#: ../monisetup.php:451
   msgid ""
   "WARN: If you have any permission to execute 'secure.sh'. press the following "
   "button"
   msgstr ""
   
  -#: ../monisetup.php:447
  +#: ../monisetup.php:453
   msgid "Protect my config.php now!"
   msgstr ""
   
  -#: ../monisetup.php:464
  +#: ../monisetup.php:470
   #, c-format
   msgid "FATAL: %s directory is not writable"
   msgstr "치명적: %s 디렉토리가 쓰기가능하지 않음"
   
  -#: ../monisetup.php:465
  +#: ../monisetup.php:471
   msgid "Please execute the following command."
   msgstr "다음 명령을 실행시켜주세요."
   
  -#: ../monisetup.php:484
  +#: ../monisetup.php:490
   #, c-format
   msgid "%s directory is not writable"
   msgstr "%s 디렉토리가 쓰기가능하지 않음"
   
  -#: ../monisetup.php:501
  +#: ../monisetup.php:507
   #, c-format
   msgid "%s is not writable"
   msgstr "%s(이)가 쓰기가능하지 않음"
   
  -#: ../monisetup.php:508 ../monisetup.php:514
  +#: ../monisetup.php:514 ../monisetup.php:520
   #, c-format
   msgid "%s is created now"
   msgstr "%s(이)가 만들어졌음"
   
  -#: ../monisetup.php:524
  +#: ../monisetup.php:530
   #, c-format
   msgid "%s is writable"
   msgstr "%s(이)가 쓰기가능"
   
  -#: ../monisetup.php:541
  +#: ../monisetup.php:547
   #, c-format
   msgid ""
   "If you want to check .htaccess file please delete '%s' file and reload it."
   msgstr ""
   
  -#: ../monisetup.php:544
  +#: ../monisetup.php:550
   msgid "Security check for 'upload_dir'."
   msgstr ""
   
  -#: ../monisetup.php:576
  +#: ../monisetup.php:582
   msgid ".htaccess for 'imgs_dir'."
   msgstr ""
   
  -#: ../monisetup.php:646
  +#: ../monisetup.php:652
   msgid "Fail"
   msgstr "실패"
   
  -#: ../monisetup.php:652
  +#: ../monisetup.php:658
   msgid "Unable to write .htaccess"
   msgstr ""
   
  -#: ../monisetup.php:756
  +#: ../monisetup.php:762
   msgid "Click here to toggle all"
   msgstr "여기를 눌러 모두 토글합니다"
   
  -#: ../monisetup.php:757
  +#: ../monisetup.php:763
   msgid "Deselect all"
   msgstr "모두 선택 취소"
   
  -#: ../monisetup.php:762
  +#: ../monisetup.php:768
   msgid "Please be careful to deselect these pages"
   msgstr "아래의 페이지를 선택해제시 주의해주세요"
   
  -#: ../monisetup.php:1056
  +#: ../monisetup.php:1067
   msgid "MoniWiki"
   msgstr "모니위키"
   
  -#: ../monisetup.php:1059
  +#: ../monisetup.php:1070
   msgid "'config.php' is not writable !"
   msgstr "'config.php' 파일이 쓰기가능하지 않습니다 !"
   
  -#: ../monisetup.php:1060
  +#: ../monisetup.php:1071
   msgid ""
   "Please execute <tt>'monisetup.sh'</tt> or <tt>chmod a+w config.php</tt> "
   "first to change your settings."
  @@ -2663,102 +2683,102 @@
   "<tt>'monisetup.sh'</tt> 혹은 <tt>chmod a+w config.php</tt>를 먼저실행해 주셔"
   "야 설정을 고칠 수 있습니다"
   
  -#: ../monisetup.php:1062
  +#: ../monisetup.php:1073
   msgid "Unprotect my config.php"
   msgstr ""
   
  -#: ../monisetup.php:1095
  +#: ../monisetup.php:1101
   msgid "config.php is protected now !"
   msgstr "config.php 파일이 보호되었습니다. !"
   
  -#: ../monisetup.php:1100 ../monisetup.php:1119
  +#: ../monisetup.php:1106 ../monisetup.php:1125
   msgid "Invalid password error !"
   msgstr "잘못된 비밀번호 오류 !"
   
  -#: ../monisetup.php:1101 ../monisetup.php:1120
  +#: ../monisetup.php:1107 ../monisetup.php:1126
   msgid ""
   "If you can't remember your admin password, delete password entry in the "
   "'config.php' and restart 'monisetup'"
   msgstr ""
   
  -#: ../monisetup.php:1106
  +#: ../monisetup.php:1112
   msgid "config.php is unprotected now !"
   msgstr "config.php 파일이 보호 해제되었습니다 !"
   
  -#: ../monisetup.php:1152
  +#: ../monisetup.php:1158
   #, c-format
   msgid "Updated Configutations for this %s"
   msgstr "위키 %s의 설정이 갱신되었습니다"
   
  -#: ../monisetup.php:1170
  +#: ../monisetup.php:1176
   msgid "Configurations are saved successfully"
   msgstr "설정이 성공적으로 저장되었습니다"
   
  -#: ../monisetup.php:1171
  +#: ../monisetup.php:1177
   msgid ""
   "WARN: Please check <a href='monisetup.php'> your saved configurations</a>"
   msgstr ""
   
  -#: ../monisetup.php:1172
  +#: ../monisetup.php:1178
   msgid "If all is good, change 'config.php' permission as 644."
   msgstr "모두 마음에 드시면 'config.php'파일의 퍼미션을 644로 바꿔주세요"
   
  -#: ../monisetup.php:1184
  +#: ../monisetup.php:1190
   msgid "Welcome to MoniWiki ! This is your first installation"
   msgstr "모니위키로 오신 것을  환영합니다 ! 처음 설치 하셨군요"
   
  -#: ../monisetup.php:1194
  +#: ../monisetup.php:1200
   msgid "Default settings are loaded..."
   msgstr "기본 설정을 불러옵니다..."
   
  -#: ../monisetup.php:1202
  +#: ../monisetup.php:1208
   msgid "Initial configurations are saved successfully."
   msgstr "초기 설정치가 성공적으로 저장되었습니다."
   
  -#: ../monisetup.php:1203
  +#: ../monisetup.php:1209
   msgid "Goto <a href='monisetup.php'>MoniSetup</a> again to configure details"
   msgstr ""
   "<a href='monisetup.php'>MoniSetup</a>으로 다시 가서 자세한 설정을 합니다"
   
  -#: ../monisetup.php:1220 ../monisetup.php:1222 ../monisetup.php:1318
  -#: ../monisetup.php:1320
  +#: ../monisetup.php:1226 ../monisetup.php:1228 ../monisetup.php:1324
  +#: ../monisetup.php:1326
   #, c-format
   msgid "goto %s"
   msgstr "%s으로 가기"
   
  -#: ../monisetup.php:1225
  +#: ../monisetup.php:1231
   msgid "No WikiSeeds are selected"
   msgstr "위키씨앗을 선택하지 않았습니다"
   
  -#: ../monisetup.php:1236
  +#: ../monisetup.php:1242
   #, c-format
   msgid "Preview current settings for this %s"
   msgstr "%s 현재 설정을 미리보기"
   
  -#: ../monisetup.php:1238
  +#: ../monisetup.php:1244
   #, c-format
   msgid "Read current settings for this %s"
   msgstr "%s 위키의 현재 설정 읽기"
   
  -#: ../monisetup.php:1266
  +#: ../monisetup.php:1272
   msgid "Change your settings"
   msgstr "세팅을 바꾸기"
   
  -#: ../monisetup.php:1270 ../monisetup.php:1313
  +#: ../monisetup.php:1276 ../monisetup.php:1319
   #, c-format
   msgid "WARN: You have no WikiSeed on your %s"
   msgstr "주의: 위키씨앗이 위키 %s에 없습니다"
   
  -#: ../monisetup.php:1271 ../monisetup.php:1314
  +#: ../monisetup.php:1277 ../monisetup.php:1320
   #, c-format
   msgid "If you want to put wikiseeds on your wiki %s now"
   msgstr "위키씨앗을 심기를 원하신다면 %s 누르세요"
   
  -#: ../monisetup.php:1272 ../monisetup.php:1315
  +#: ../monisetup.php:1278 ../monisetup.php:1321
   msgid "Click here"
   msgstr "여기를"
   
  -#: ../monisetup.php:1307 ../monisetup.php:1309
  +#: ../monisetup.php:1313 ../monisetup.php:1315
   msgid "Update"
   msgstr "완료"
   
  
  
  
  1.30      +478 -458  moniwiki/locale/po/moniwiki.pot
  
  Index: moniwiki.pot
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/moniwiki.pot,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- moniwiki.pot	30 Sep 2009 16:04:54 -0000	1.29
  +++ moniwiki.pot	13 Aug 2010 15:21:40 -0000	1.30
  @@ -7,7 +7,7 @@
   msgstr ""
   "Project-Id-Version: PACKAGE VERSION\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2009-10-01 01:04+0900\n"
  +"POT-Creation-Date: 2010-08-14 00:12+0900\n"
   "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
   "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
   "Language-Team: LANGUAGE <LL@li.org>\n"
  @@ -91,20 +91,20 @@
   msgid "show changes"
   msgstr ""
   
  -#: ../plugin/Attachment.php:70 ../plugin/Attachment.php:333
  +#: ../plugin/Attachment.php:72 ../plugin/Attachment.php:341
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr ""
   
  -#: ../plugin/Attachment.php:325
  +#: ../plugin/Attachment.php:333
   msgid "or paste a new png picture"
   msgstr ""
   
  -#: ../plugin/Attachment.php:330
  +#: ../plugin/Attachment.php:338
   msgid "or draw a new gif picture"
   msgstr ""
   
  -#: ../plugin/Attachment.php:336
  +#: ../plugin/Attachment.php:344
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
   msgstr ""
  @@ -142,7 +142,7 @@
   msgid "Edit"
   msgstr ""
   
  -#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1257
  +#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1395
   msgid "Delete"
   msgstr ""
   
  @@ -197,8 +197,8 @@
   msgid "No Subject error."
   msgstr ""
   
  -#: ../plugin/bbs.php:1009 ../plugin/Comment.php:196 ../plugin/Gallery.php:174
  -#: ../wikilib.php:1609 ../wikilib.php:1815
  +#: ../plugin/bbs.php:1009 ../plugin/Comment.php:201 ../plugin/Gallery.php:182
  +#: ../wikilib.php:1748 ../wikilib.php:1958
   msgid ""
   "Sorry, can not save page because some messages are blocked in this wiki."
   msgstr ""
  @@ -207,48 +207,48 @@
   msgid "New post added successfully"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:198
  +#: ../plugin/BlogChanges.php:203
   msgid "Category: "
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:200 ../locale/dummy.php:7
  +#: ../plugin/BlogChanges.php:205 ../locale/dummy.php:7
   msgid "BlogChanges"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:246
  +#: ../plugin/BlogChanges.php:251
   #, c-format
   msgid "Invalid category expr \"%s\""
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:378 ../plugin/BlogChanges.php:380
  +#: ../plugin/BlogChanges.php:384 ../plugin/BlogChanges.php:386
   #: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
   msgid "Anonymous"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  +#: ../plugin/BlogChanges.php:417 ../plugin/processor/blog.php:88
   #, c-format
   msgid "%d comment"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:411 ../plugin/processor/blog.php:86
  +#: ../plugin/BlogChanges.php:417 ../plugin/processor/blog.php:88
   #, c-format
   msgid "%d comments"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:413 ../plugin/Comment.php:213
  -#: ../plugin/processor/blog.php:78
  +#: ../plugin/BlogChanges.php:419 ../plugin/Comment.php:218
  +#: ../plugin/processor/blog.php:80
   msgid "Add comment"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:423 ../plugin/processor/blog.php:97
  +#: ../plugin/BlogChanges.php:429 ../plugin/processor/blog.php:99
   msgid "track back"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:443
  +#: ../plugin/BlogChanges.php:449
   msgid "Previous"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:446
  +#: ../plugin/BlogChanges.php:453
   msgid "Next"
   msgstr ""
   
  @@ -257,70 +257,70 @@
   msgid "Blog cache of \"%s\" is refreshed"
   msgstr ""
   
  -#: ../plugin/Blog.php:108
  +#: ../plugin/Blog.php:110
   #, c-format
   msgid "\"%s\" is updated"
   msgstr ""
   
  -#: ../plugin/Blog.php:113
  +#: ../plugin/Blog.php:115
   msgid "Add Blog"
   msgstr ""
   
  -#: ../plugin/Blog.php:154
  +#: ../plugin/Blog.php:156
   msgid "Error: No blog entry found!"
   msgstr ""
   
  -#: ../plugin/Blog.php:164 ../plugin/Blog.php:166 ../plugin/Comment.php:226
  +#: ../plugin/Blog.php:166 ../plugin/Blog.php:168 ../plugin/Comment.php:231
   msgid "Error: Don't make a clone!"
   msgstr ""
   
  -#: ../plugin/Blog.php:192
  +#: ../plugin/Blog.php:194
   #, c-format
   msgid "Comment added to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:195
  +#: ../plugin/Blog.php:197
   #, c-format
   msgid "Blog entry added to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:197
  +#: ../plugin/Blog.php:199
   #, c-format
   msgid "Blog entry \"%s\" added"
   msgstr ""
   
  -#: ../plugin/Blog.php:199
  +#: ../plugin/Blog.php:201
   msgid "Blog entry added"
   msgstr ""
   
  -#: ../plugin/Blog.php:240
  +#: ../plugin/Blog.php:243
   #, c-format
   msgid "Add Comment to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:242
  +#: ../plugin/Blog.php:245
   #, c-format
   msgid "Add Blog entry to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:260 ../plugin/Blog.php:332 ../plugin/PluginInfo.php:52
  +#: ../plugin/Blog.php:263 ../plugin/Blog.php:335 ../plugin/PluginInfo.php:52
   msgid "Name"
   msgstr ""
   
  -#: ../plugin/Blog.php:262 ../plugin/Blog.php:333
  -#: ../plugin/RecentChanges.php:119
  +#: ../plugin/Blog.php:265 ../plugin/Blog.php:336
  +#: ../plugin/RecentChanges.php:125
   msgid "Title"
   msgstr ""
   
  -#: ../plugin/Blog.php:268 ../wikilib.php:1080
  +#: ../plugin/Blog.php:271 ../wikilib.php:1218
   msgid "GUI"
   msgstr ""
   
  -#: ../plugin/Blog.php:277 ../plugin/Comment.php:109
  +#: ../plugin/Blog.php:280 ../plugin/Comment.php:114
   msgid "Don't add a signature"
   msgstr ""
   
  -#: ../plugin/Blog.php:299
  +#: ../plugin/Blog.php:302
   msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
   msgstr ""
   
  @@ -336,7 +336,7 @@
   msgid "Clear cache dirs"
   msgstr ""
   
  -#: ../plugin/chat.php:36
  +#: ../plugin/chat.php:37
   msgid "No messages"
   msgstr ""
   
  @@ -359,106 +359,106 @@
   msgid "Paste a new picture"
   msgstr ""
   
  -#: ../plugin/Clip.php:50 ../plugin/Draw.php:119
  +#: ../plugin/Clip.php:51 ../plugin/Draw.php:119
   msgid "Fatal error !"
   msgstr ""
   
  -#: ../plugin/Clip.php:53 ../plugin/Draw.php:122
  +#: ../plugin/Clip.php:54 ../plugin/Draw.php:122
   msgid "No filename given"
   msgstr ""
   
  -#: ../plugin/Clip.php:72
  +#: ../plugin/Clip.php:73
   msgid "Clipboard"
   msgstr ""
   
  -#: ../plugin/Clip.php:81
  +#: ../plugin/Clip.php:82
   msgid "Cut & Paste a Clipboard Image"
   msgstr ""
   
  -#: ../plugin/Comment.php:92
  +#: ../plugin/Comment.php:93
   msgid "Comment"
   msgstr ""
   
  -#: ../plugin/Comment.php:93 ../wikilib.php:821 ../wikilib.php:1074
  -#: ../wikilib.php:1744 ../wikilib.php:1841 ../monisetup.php:1305
  +#: ../plugin/Comment.php:94 ../wikilib.php:949 ../wikilib.php:1212
  +#: ../wikilib.php:1887 ../wikilib.php:1984 ../monisetup.php:1311
   msgid "Preview"
   msgstr ""
   
  -#: ../plugin/Comment.php:107
  +#: ../plugin/Comment.php:111
   msgid "Username"
   msgstr ""
   
  -#: ../plugin/Comment.php:130
  +#: ../plugin/Comment.php:135
   msgid "Page is not writable"
   msgstr ""
   
  -#: ../plugin/Comment.php:133
  +#: ../plugin/Comment.php:138
   msgid "You are not allowed to add a comment."
   msgstr ""
   
  -#: ../plugin/Comment.php:134 ../plugin/Keywords.php:459
  +#: ../plugin/Comment.php:139 ../plugin/Keywords.php:465
   msgid "Page does not exists"
   msgstr ""
   
  -#: ../plugin/Comment.php:169 ../plugin/userform.php:118
  -#: ../plugin/userform.php:181 ../plugin/userform.php:204 ../wikilib.php:1794
  +#: ../plugin/Comment.php:174 ../plugin/userform.php:121
  +#: ../plugin/userform.php:184 ../plugin/userform.php:207 ../wikilib.php:1937
   msgid "Invalid ticket !"
   msgstr ""
   
  -#: ../plugin/Comment.php:174 ../plugin/userform.php:120
  -#: ../plugin/userform.php:206 ../wikilib.php:1799
  +#: ../plugin/Comment.php:179 ../plugin/userform.php:123
  +#: ../plugin/userform.php:209 ../wikilib.php:1942
   msgid "You need a ticket !"
   msgstr ""
   
  -#: ../plugin/Comment.php:202
  +#: ../plugin/Comment.php:207
   msgid "Preview comment"
   msgstr ""
   
  -#: ../plugin/Comment.php:333
  +#: ../plugin/Comment.php:338
   #, c-format
   msgid "%s is commented successfully"
   msgstr ""
   
  -#: ../plugin/Comment.php:334
  +#: ../plugin/Comment.php:339
   msgid "Comment added successfully"
   msgstr ""
   
  -#: ../plugin/css.php:33 ../plugin/css.php:41
  +#: ../plugin/css.php:34 ../plugin/css.php:42
   msgid "Back to UserPreferences"
   msgstr ""
   
  -#: ../plugin/css.php:67
  +#: ../plugin/css.php:68
   msgid "CSS disabled !"
   msgstr ""
   
  -#: ../plugin/Diff.php:410 ../plugin/Info.php:246
  +#: ../plugin/Diff.php:411 ../plugin/Info.php:251
   msgid "No older revisions available"
   msgstr ""
   
  -#: ../plugin/Diff.php:415 ../plugin/Info.php:252 ../plugin/rcsexport.php:13
  +#: ../plugin/Diff.php:416 ../plugin/Info.php:257 ../plugin/rcsexport.php:13
   #: ../plugin/rcsimport.php:13
   msgid "Version info is not available in this wiki"
   msgstr ""
   
  -#: ../plugin/Diff.php:426 ../wikilib.php:1764
  +#: ../plugin/Diff.php:428 ../wikilib.php:1907
   msgid "No difference found"
   msgstr ""
   
  -#: ../plugin/Diff.php:430
  +#: ../plugin/Diff.php:432
   msgid "Difference between versions"
   msgstr ""
   
  -#: ../plugin/Diff.php:432 ../plugin/Diff.php:548
  +#: ../plugin/Diff.php:434 ../plugin/Diff.php:550
   #, c-format
   msgid "Difference between r%s and r%s"
   msgstr ""
   
  -#: ../plugin/Diff.php:435 ../plugin/Diff.php:550
  +#: ../plugin/Diff.php:437 ../plugin/Diff.php:552
   #, c-format
   msgid "Difference between r%s and the current"
   msgstr ""
   
  -#: ../plugin/Diff.php:552
  +#: ../plugin/Diff.php:554
   msgid "latest changes"
   msgstr ""
   
  @@ -466,16 +466,16 @@
   msgid "Draw new picture"
   msgstr ""
   
  -#: ../plugin/Draw.php:92 ../plugin/UploadFile.php:289
  +#: ../plugin/Draw.php:92 ../plugin/UploadFile.php:294
   #, c-format
   msgid "Fail to copy \"%s\" to \"%s\""
   msgstr ""
   
  -#: ../plugin/Draw.php:146
  +#: ../plugin/Draw.php:147
   msgid "Edit drawing"
   msgstr ""
   
  -#: ../plugin/Draw.php:155
  +#: ../plugin/Draw.php:156
   msgid "Edit new drawing"
   msgstr ""
   
  @@ -493,35 +493,58 @@
   msgid "%d day(s) passed from %s."
   msgstr ""
   
  -#: ../plugin/FastSearch.php:44 ../plugin/FullSearch.php:90
  +#: ../plugin/FastSearch.php:37
  +msgid "Fast search"
  +msgstr ""
  +
  +#: ../plugin/FastSearch.php:38 ../plugin/FullSearch.php:74
  +msgid "Display context of search results"
  +msgstr ""
  +
  +#: ../plugin/FastSearch.php:49 ../plugin/FullSearch.php:90
   msgid "No search text"
   msgstr ""
   
  -#: ../plugin/FastSearch.php:50
  +#: ../plugin/FastSearch.php:55
   msgid "Couldn't open search database, sorry."
   msgstr ""
   
  -#: ../plugin/FastSearch.php:114 ../plugin/FullSearch.php:19
  +#: ../plugin/FastSearch.php:138 ../plugin/FullSearch.php:263
  +#, c-format
  +msgid "%d match"
  +msgstr ""
  +
  +#: ../plugin/FastSearch.php:138 ../plugin/FullSearch.php:263
  +#, c-format
  +msgid "%d matches"
  +msgstr ""
  +
  +#: ../plugin/FastSearch.php:160 ../plugin/FullSearch.php:19
   #, c-format
   msgid "Full text search for \"%s\""
   msgstr ""
   
  -#: ../plugin/FastSearch.php:123 ../plugin/FullSearch.php:38
  -#: ../wikilib.php:1530
  +#: ../plugin/FastSearch.php:177 ../plugin/FullSearch.php:38
  +#: ../wikilib.php:1669
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr ""
   
  -#: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1532
  +#: ../plugin/FastSearch.php:179 ../plugin/FullSearch.php:40
  +#: ../wikilib.php:1671
   msgid "page"
   msgstr ""
   
  -#: ../plugin/FastSearch.php:125 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1532
  +#: ../plugin/FastSearch.php:179 ../plugin/FullSearch.php:40
  +#: ../wikilib.php:1671
   msgid "pages"
   msgstr ""
   
  +#: ../plugin/FastSearch.php:184
  +#, c-format
  +msgid "Show all %d results"
  +msgstr ""
  +
   #: ../plugin/format.php:17
   msgid "It is a XML format !"
   msgstr ""
  @@ -540,8 +563,8 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4488
  -#: ../wikilib.php:1060
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4686
  +#: ../wikilib.php:1196
   msgid "Refresh"
   msgstr ""
   
  @@ -555,15 +578,11 @@
   msgid "You can also click %s to search title.\n"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5456 ../wiki.php:5463
  -#: ../wikilib.php:1540
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5660 ../wiki.php:5668
  +#: ../wikilib.php:1679
   msgid "here"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:74
  -msgid "Display context of search results"
  -msgstr ""
  -
   #: ../plugin/FullSearch.php:75
   msgid "Search BackLinks only"
   msgstr ""
  @@ -572,7 +591,7 @@
   msgid "Case-sensitive searching"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:77 ../wikilib.php:2906 ../wikilib.php:2968
  +#: ../plugin/FullSearch.php:77 ../wikilib.php:3154 ../wikilib.php:3230
   msgid "Go"
   msgstr ""
   
  @@ -580,42 +599,34 @@
   msgid "Empty expression"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:144 ../wikilib.php:2927
  +#: ../plugin/FullSearch.php:144 ../wikilib.php:3175
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr ""
   
  -#: ../plugin/FullSearch.php:260
  -msgid " match"
  -msgstr ""
  -
  -#: ../plugin/FullSearch.php:260
  -msgid " matches"
  -msgstr ""
  -
  -#: ../plugin/Gallery.php:245 ../plugin/UploadedFiles.php:287
  +#: ../plugin/Gallery.php:253 ../plugin/UploadedFiles.php:289
   msgid "No files found"
   msgstr ""
   
  -#: ../plugin/Gallery.php:337 ../plugin/Gallery.php:350
  +#: ../plugin/Gallery.php:345 ../plugin/Gallery.php:360
   msgid "add comment"
   msgstr ""
   
  -#: ../plugin/Gallery.php:347
  +#: ../plugin/Gallery.php:355
   msgid "show comments"
   msgstr ""
   
  -#: ../plugin/Gallery.php:396 ../plugin/Gallery.php:400 ../wikilib.php:1596
  -#: ../wikilib.php:1762 ../wikilib.php:1769
  +#: ../plugin/Gallery.php:409 ../plugin/Gallery.php:413 ../wikilib.php:1735
  +#: ../wikilib.php:1905 ../wikilib.php:1912
   #, c-format
   msgid "Go back or return to %s"
   msgstr ""
   
  -#: ../plugin/Gallery.php:397
  +#: ../plugin/Gallery.php:410
   msgid "Comments are edited"
   msgstr ""
   
  -#: ../plugin/Gallery.php:401
  +#: ../plugin/Gallery.php:414
   msgid "Comments is added"
   msgstr ""
   
  @@ -639,15 +650,15 @@
   msgid "Ver."
   msgstr ""
   
  -#: ../plugin/Info.php:44 ../plugin/UploadedFiles.php:303
  +#: ../plugin/Info.php:44 ../plugin/UploadedFiles.php:305
   msgid "Date"
   msgstr ""
   
  -#: ../plugin/Info.php:45 ../plugin/RecentChanges.php:120
  +#: ../plugin/Info.php:45 ../plugin/RecentChanges.php:129
   msgid "Changes"
   msgstr ""
   
  -#: ../plugin/Info.php:46 ../plugin/RecentChanges.php:120
  +#: ../plugin/Info.php:46 ../plugin/RecentChanges.php:128
   msgid "Editor"
   msgstr ""
   
  @@ -659,34 +670,34 @@
   msgid "admin."
   msgstr ""
   
  -#: ../plugin/Info.php:68
  +#: ../plugin/Info.php:71
   msgid "Show all revisions"
   msgstr ""
   
  -#: ../plugin/Info.php:101
  +#: ../plugin/Info.php:106
   msgid "Yesterday"
   msgstr ""
   
  -#: ../plugin/Info.php:102
  +#: ../plugin/Info.php:107
   #, c-format
   msgid "%s days ago"
   msgstr ""
   
  -#: ../plugin/Info.php:104
  +#: ../plugin/Info.php:109
   #, c-format
   msgid "%s hours ago"
   msgstr ""
   
  -#: ../plugin/Info.php:106
  +#: ../plugin/Info.php:111
   #, c-format
   msgid "%s min ago"
   msgstr ""
   
  -#: ../plugin/Info.php:215 ../plugin/rename.php:80
  +#: ../plugin/Info.php:220 ../plugin/rename.php:80
   msgid "show only"
   msgstr ""
   
  -#: ../plugin/Info.php:219
  +#: ../plugin/Info.php:224
   msgid "purge"
   msgstr ""
   
  @@ -699,156 +710,160 @@
   msgid "Draw a new molecule"
   msgstr ""
   
  -#: ../plugin/JME.php:104
  +#: ../plugin/JME.php:105
   msgid "Molecule successfully added"
   msgstr ""
   
  -#: ../plugin/JME.php:110
  +#: ../plugin/JME.php:111
   msgid "Edit Molecule"
   msgstr ""
   
  -#: ../plugin/JME.php:140
  +#: ../plugin/JME.php:141
   msgid "Edit new molecule"
   msgstr ""
   
  -#: ../plugin/Keywords.php:414
  +#: ../plugin/Keywords.php:418
   msgid "hits"
   msgstr ""
   
  -#: ../plugin/Keywords.php:422
  +#: ../plugin/Keywords.php:428
   msgid "add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:425
  +#: ../plugin/Keywords.php:431
   msgid "Update keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:427
  +#: ../plugin/Keywords.php:433
   msgid "Add keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:428
  +#: ../plugin/Keywords.php:434
   msgid "Add as common words"
   msgstr ""
   
  -#: ../plugin/Keywords.php:429
  +#: ../plugin/Keywords.php:435
   msgid "Unselect all"
   msgstr ""
   
  -#: ../plugin/Keywords.php:430
  +#: ../plugin/Keywords.php:436
   msgid "Suggest new Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:439
  +#: ../plugin/Keywords.php:445
   msgid "select language"
   msgstr ""
   
  -#: ../plugin/Keywords.php:458
  +#: ../plugin/Keywords.php:464
   msgid "You are not able to add keywords."
   msgstr ""
   
  -#: ../plugin/Keywords.php:472
  +#: ../plugin/Keywords.php:478
   #, c-format
   msgid "%s is not found."
   msgstr ""
   
  -#: ../plugin/Keywords.php:588
  +#: ../plugin/Keywords.php:594
   msgid "Common words are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:635
  +#: ../plugin/Keywords.php:641
   #, c-format
   msgid "Keywords for %s are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:661
  +#: ../plugin/Keywords.php:667
   msgid "Keywords are updated"
   msgstr ""
   
  -#: ../plugin/Keywords.php:663
  +#: ../plugin/Keywords.php:669
   msgid "There are no changes found"
   msgstr ""
   
  -#: ../plugin/Keywords.php:676
  +#: ../plugin/Keywords.php:682
   msgid "Update with these Keywords"
   msgstr ""
   
  -#: ../plugin/Keywords.php:696 ../plugin/Keywords.php:700
  +#: ../plugin/Keywords.php:702 ../plugin/Keywords.php:706
   msgid "alphabetically"
   msgstr ""
   
  -#: ../plugin/Keywords.php:697
  +#: ../plugin/Keywords.php:703
   msgid "by frequency"
   msgstr ""
   
  -#: ../plugin/Keywords.php:699
  +#: ../plugin/Keywords.php:705
   msgid "by size"
   msgstr ""
   
  -#: ../plugin/Keywords.php:705
  +#: ../plugin/Keywords.php:711
   #, c-format
   msgid "Keywords list %s (or %s)"
   msgstr ""
   
  -#: ../plugin/Keywords.php:710
  +#: ../plugin/Keywords.php:716
   #, c-format
   msgid "Select keywords for %s"
   msgstr ""
   
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1417 ../wikilib.php:2914
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1556 ../wikilib.php:3162
   msgid "Use more specific text"
   msgstr ""
   
  -#: ../plugin/LikePages.php:109
  +#: ../plugin/LikePages.php:79
  +msgid "No metadb found"
  +msgstr ""
  +
  +#: ../plugin/LikePages.php:120
   msgid "These pages share a similar word..."
   msgstr ""
   
  -#: ../plugin/LikePages.php:123
  +#: ../plugin/LikePages.php:134
   msgid "These pages share an initial or final title word..."
   msgstr ""
   
  -#: ../plugin/LikePages.php:143
  -msgid "If you can't find this page, "
  +#: ../plugin/LikePages.php:158
  +msgid "No similar pages found"
   msgstr ""
   
  -#: ../plugin/LikePages.php:148
  -msgid "No similar pages found"
  +#: ../plugin/LikePages.php:161
  +#, c-format
  +msgid "Like \"%s\""
   msgstr ""
   
  -#: ../plugin/LikePages.php:150
  -msgid "You are strongly recommened to find it in MetaWikis. "
  +#: ../plugin/LikePages.php:166
  +msgid "If you can't find this page, "
   msgstr ""
   
  -#: ../plugin/LikePages.php:153
  -#, c-format
  -msgid "Like \"%s\""
  +#: ../plugin/LikePages.php:168
  +msgid "You are strongly recommened to find it in MetaWikis. "
   msgstr ""
   
  -#: ../plugin/LikePages.php:156
  +#: ../plugin/LikePages.php:169
   msgid "Search all MetaWikis"
   msgstr ""
   
  -#: ../plugin/LikePages.php:157
  +#: ../plugin/LikePages.php:170
   msgid "Slow Slow"
   msgstr ""
   
  -#: ../plugin/login.php:29
  +#: ../plugin/login.php:31
   msgid "Login:"
   msgstr ""
   
  -#: ../plugin/login.php:30
  +#: ../plugin/login.php:32
   msgid "Password:"
   msgstr ""
   
  -#: ../plugin/login.php:31
  +#: ../plugin/login.php:33
   msgid "Join"
   msgstr ""
   
  -#: ../plugin/login.php:49 ../plugin/minilogin.php:25
  +#: ../plugin/login.php:51 ../plugin/minilogin.php:25
   msgid "Logout"
   msgstr ""
   
  -#: ../plugin/login.php:50 ../plugin/minilogin.php:24 ../locale/dummy.php:3
  +#: ../plugin/login.php:52 ../plugin/minilogin.php:24 ../locale/dummy.php:3
   msgid "UserPreferences"
   msgstr ""
   
  @@ -864,7 +879,7 @@
   msgid "Edit man page"
   msgstr ""
   
  -#: ../plugin/minilogin.php:18 ../wikilib.php:2306
  +#: ../plugin/minilogin.php:18 ../wikilib.php:2487
   msgid "Login or Join"
   msgstr ""
   
  @@ -923,7 +938,7 @@
   msgid "Edit Image"
   msgstr ""
   
  -#: ../plugin/pagelist.php:117 ../plugin/pagelist.php:134
  +#: ../plugin/pagelist.php:118 ../plugin/pagelist.php:135
   #, c-format
   msgid "[%sh %sm ago]"
   msgstr ""
  @@ -932,7 +947,7 @@
   msgid "First:"
   msgstr ""
   
  -#: ../plugin/pageview.php:75 ../plugin/SlideShow.php:121
  +#: ../plugin/pageview.php:75 ../plugin/SlideShow.php:120
   msgid "Next:"
   msgstr ""
   
  @@ -955,34 +970,34 @@
   msgid "Version"
   msgstr ""
   
  -#: ../plugin/print.php:24
  +#: ../plugin/print.php:28
   #, c-format
   msgid "Retrieved from %s"
   msgstr ""
   
  -#: ../plugin/print.php:29
  +#: ../plugin/print.php:33
   #, c-format
   msgid "last modified %s %s"
   msgstr ""
   
  -#: ../plugin/processor/blog.php:99
  +#: ../plugin/processor/blog.php:101
   msgid "raw"
   msgstr ""
   
  -#: ../plugin/processor/bts.php:178
  +#: ../plugin/processor/bts.php:181
   msgid "Save Changes"
   msgstr ""
   
  -#: ../plugin/processor/monimarkup.php:507 ../wiki.php:3858
  +#: ../plugin/processor/monimarkup.php:515 ../wiki.php:4049
   msgid "edit"
   msgstr ""
   
  -#: ../plugin/quicklinks.php:16 ../plugin/scrap.php:35
  +#: ../plugin/quicklinks.php:16 ../plugin/scrap.php:37
   #: ../plugin/subscribe.php:19 ../plugin/subscribe.php:55
   msgid "Please login or make your ID."
   msgstr ""
   
  -#: ../plugin/quicklinks.php:22 ../plugin/scrap.php:38
  +#: ../plugin/quicklinks.php:22 ../plugin/scrap.php:40
   #: ../plugin/subscribe.php:61
   msgid "Goto UserPreferences"
   msgstr ""
  @@ -1001,29 +1016,29 @@
   msgid "Do you want to customize your quicklinks ?"
   msgstr ""
   
  -#: ../plugin/Rating.php:58
  +#: ../plugin/Rating.php:60
   msgid "Awful!"
   msgstr ""
   
  -#: ../plugin/Rating.php:59
  +#: ../plugin/Rating.php:61
   msgid "Not the worst ever."
   msgstr ""
   
  -#: ../plugin/Rating.php:60
  +#: ../plugin/Rating.php:62
   msgid "Not bad!"
   msgstr ""
   
  -#: ../plugin/Rating.php:61
  +#: ../plugin/Rating.php:63
   msgid "Useful!"
   msgstr ""
   
  -#: ../plugin/Rating.php:62
  +#: ../plugin/Rating.php:64
   msgid "Very Gooood!"
   msgstr ""
   
  -#: ../plugin/Rating.php:84 ../plugin/security/community.php:26
  -#: ../plugin/security/community.php:36 ../plugin/security/community.php:46
  -#: ../plugin/security/community.php:61 ../plugin/security/mustlogin.php:29
  +#: ../plugin/Rating.php:86 ../plugin/security/community.php:27
  +#: ../plugin/security/community.php:37 ../plugin/security/community.php:47
  +#: ../plugin/security/community.php:62 ../plugin/security/mustlogin.php:29
   #: ../plugin/security/mustlogin.php:40 ../plugin/security/mustlogin.php:51
   #: ../plugin/security/mustlogin.php:67 ../plugin/security/needtologin.php:29
   #: ../plugin/security/needtologin.php:40 ../plugin/security/needtologin.php:51
  @@ -1031,11 +1046,11 @@
   msgid "Please Login or make your ID on this Wiki ;)"
   msgstr ""
   
  -#: ../plugin/Rating.php:188
  +#: ../plugin/Rating.php:190
   msgid "Invalid rating request !"
   msgstr ""
   
  -#: ../plugin/Rating.php:203
  +#: ../plugin/Rating.php:205
   msgid "Rating successfully !"
   msgstr ""
   
  @@ -1046,8 +1061,8 @@
   
   #: ../plugin/rcsimport.php:32 ../plugin/rcsimport.php:88
   #: ../plugin/rename.php:77 ../plugin/revert.php:82
  -#: ../plugin/UploadedFiles.php:452 ../plugin/userinfo.php:37
  -#: ../wikilib.php:1256 ../wikilib.php:2225
  +#: ../plugin/UploadedFiles.php:453 ../plugin/userinfo.php:37
  +#: ../wikilib.php:1394 ../wikilib.php:2402
   msgid "Password"
   msgstr ""
   
  @@ -1112,39 +1127,39 @@
   msgid "%d days ago"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:119
  +#: ../plugin/RecentChanges.php:86
  +msgid "Recent Changes"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:126
   msgid "Change Date"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:122
  +#: ../plugin/RecentChanges.php:131
   msgid "Hits"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:168
  +#: ../plugin/RecentChanges.php:182
   msgid "Show changes for "
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:173
  +#: ../plugin/RecentChanges.php:187
   msgid "days ago"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:278
  +#: ../plugin/RecentChanges.php:293
   msgid "set bookmark"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:283
  +#: ../plugin/RecentChanges.php:298
   msgid "Bookmark"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:360
  +#: ../plugin/RecentChanges.php:375
   #, c-format
   msgid "%s changes"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:374
  -msgid "Recent Changes"
  -msgstr ""
  -
   #: ../plugin/referer.php:139
   msgid "Referer history"
   msgstr ""
  @@ -1182,7 +1197,7 @@
   msgid "New name:"
   msgstr ""
   
  -#: ../plugin/rename.php:69 ../plugin/UploadFile.php:421
  +#: ../plugin/rename.php:69 ../plugin/UploadFile.php:427
   msgid "Rename"
   msgstr ""
   
  @@ -1194,7 +1209,7 @@
   msgid "Only WikiMaster can rename this page"
   msgstr ""
   
  -#: ../plugin/rename.php:79 ../wikilib.php:1302
  +#: ../plugin/rename.php:79 ../wikilib.php:1440
   msgid "with revision history"
   msgstr ""
   
  @@ -1236,7 +1251,7 @@
   msgid "Select a tarball file to restore"
   msgstr ""
   
  -#: ../plugin/revert.php:23 ../wiki.php:5458
  +#: ../plugin/revert.php:23 ../wiki.php:5662
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr ""
  @@ -1262,7 +1277,7 @@
   msgid "Are you really want to revert this page ?"
   msgstr ""
   
  -#: ../plugin/revert.php:74 ../wikilib.php:1071
  +#: ../plugin/revert.php:74 ../wikilib.php:1207
   msgid "Summary"
   msgstr ""
   
  @@ -1285,26 +1300,26 @@
   msgid "revert"
   msgstr ""
   
  -#: ../plugin/scrap.php:53
  +#: ../plugin/scrap.php:55
   msgid "Scrap lists updated."
   msgstr ""
   
  -#: ../plugin/scrap.php:61
  +#: ../plugin/scrap.php:65
   #, c-format
   msgid "\"%s\" is unscrapped."
   msgstr ""
   
  -#: ../plugin/scrap.php:64
  +#: ../plugin/scrap.php:68
   #, c-format
   msgid "\"%s\" is scrapped."
   msgstr ""
   
  -#: ../plugin/scrap.php:89
  +#: ../plugin/scrap.php:94
   #, c-format
   msgid "Do you want to scrap \"%s\" ?"
   msgstr ""
   
  -#: ../plugin/scrap.php:92
  +#: ../plugin/scrap.php:97
   msgid "Scrapped pages"
   msgstr ""
   
  @@ -1324,8 +1339,8 @@
   msgid "Protected ACL actions"
   msgstr ""
   
  -#: ../plugin/security/acl.php:217 ../plugin/security/community.php:25
  -#: ../plugin/security/community.php:35 ../plugin/security/community.php:45
  +#: ../plugin/security/acl.php:217 ../plugin/security/community.php:26
  +#: ../plugin/security/community.php:36 ../plugin/security/community.php:46
   #: ../plugin/security/mustlogin.php:28 ../plugin/security/mustlogin.php:39
   #: ../plugin/security/mustlogin.php:50 ../plugin/security/needtologin.php:28
   #: ../plugin/security/needtologin.php:39 ../plugin/security/needtologin.php:50
  @@ -1346,7 +1361,7 @@
   msgid "You must enter a valid login ID and password to access this resource.\n"
   msgstr ""
   
  -#: ../plugin/security/community.php:60 ../plugin/security/htaccesslogin.php:46
  +#: ../plugin/security/community.php:61 ../plugin/security/htaccesslogin.php:46
   #: ../plugin/security/mustlogin.php:66 ../plugin/security/userbased.php:30
   #: ../plugin/security/userbased.php:38 ../plugin/security/userbased.php:46
   #: ../plugin/security/userbased.php:61 ../plugin/security/wikimaster.php:29
  @@ -1385,19 +1400,19 @@
   msgid "No page found"
   msgstr ""
   
  -#: ../plugin/SlideShow.php:102
  +#: ../plugin/SlideShow.php:101
   msgid "Start:"
   msgstr ""
   
  -#: ../plugin/SlideShow.php:111
  +#: ../plugin/SlideShow.php:110
   msgid "End:"
   msgstr ""
   
  -#: ../plugin/SlideShow.php:131
  +#: ../plugin/SlideShow.php:130
   msgid "Prev:"
   msgstr ""
   
  -#: ../plugin/SlideShow.php:138
  +#: ../plugin/SlideShow.php:137
   msgid "Return"
   msgstr ""
   
  @@ -1447,15 +1462,16 @@
   msgid "Subscribed pages"
   msgstr ""
   
  -#: ../plugin/SWFUpload.php:136
  +#: ../plugin/SWFUpload.php:137
   msgid "Files..."
   msgstr ""
   
  -#: ../plugin/SWFUpload.php:137 ../plugin/UploadFile.php:426
  -msgid "Upload"
  +#: ../plugin/SWFUpload.php:138 ../plugin/UploadFile.php:443
  +#: ../plugin/UploadForm.php:270
  +msgid "Upload files"
   msgstr ""
   
  -#: ../plugin/SWFUpload.php:138
  +#: ../plugin/SWFUpload.php:139
   msgid "Cancel All files"
   msgstr ""
   
  @@ -1495,7 +1511,7 @@
   msgid "-- Select --"
   msgstr ""
   
  -#: ../plugin/ticket.php:172
  +#: ../plugin/ticket.php:173
   msgid "Invalid use of ticket"
   msgstr ""
   
  @@ -1571,36 +1587,36 @@
   msgid "TwinPages of %s"
   msgstr ""
   
  -#: ../plugin/TwinPages.php:19 ../wiki.php:5442
  +#: ../plugin/TwinPages.php:20 ../wiki.php:5645
   msgid "See [TwinPages]: "
   msgstr ""
   
  -#: ../plugin/TwinPages.php:21
  +#: ../plugin/TwinPages.php:22
   msgid "No TwinPages found."
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:301
  +#: ../plugin/UploadedFiles.php:303
   msgid "File name"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:302
  +#: ../plugin/UploadedFiles.php:304
   msgid "Size"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:353
  +#: ../plugin/UploadedFiles.php:355
   msgid "Next page &raquo;"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:355
  +#: ../plugin/UploadedFiles.php:357
   msgid "&laquo; First page"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:447
  +#: ../plugin/UploadedFiles.php:448
   #, c-format
   msgid "Total %d files"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:453 ../wikilib.php:1234
  +#: ../plugin/UploadedFiles.php:454 ../wikilib.php:1372
   msgid "Delete selected files"
   msgstr ""
   
  @@ -1638,299 +1654,299 @@
   msgid "Unknown upload error"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:180 ../plugin/UploadFile.php:194
  +#: ../plugin/UploadFile.php:184 ../plugin/UploadFile.php:198
   #, c-format
   msgid "The %s type of %s is not allowed to upload"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:196
  +#: ../plugin/UploadFile.php:200
   #, c-format
   msgid "%s is not allowed to upload"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:251
  +#: ../plugin/UploadFile.php:255
   #, c-format
   msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
   msgstr ""
   
  -#: ../plugin/UploadFile.php:268
  +#: ../plugin/UploadFile.php:273
   msgid "ERROR:"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:300
  +#: ../plugin/UploadFile.php:305
   #, c-format
   msgid "File \"%s\" is uploaded successfully"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:366
  +#: ../plugin/UploadFile.php:372
   msgid "Files are uploaded successfully"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:402
  +#: ../plugin/UploadFile.php:408
   msgid "Multi upload form"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:415
  +#: ../plugin/UploadFile.php:421
   msgid "Replace original file"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:416
  +#: ../plugin/UploadFile.php:422
   msgid "Rename if it already exist"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:429
  +#: ../plugin/UploadFile.php:432
  +msgid "Upload"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:435
   #, c-format
   msgid "or %s."
   msgstr ""
   
  -#: ../plugin/UploadFile.php:429
  +#: ../plugin/UploadFile.php:435
   msgid "Multiple Upload files"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:437 ../plugin/UploadForm.php:222
  -msgid "Upload files"
  -msgstr ""
  -
  -#: ../plugin/UploadForm.php:17
  +#: ../plugin/UploadForm.php:19
   msgid "Successfully Uploaded"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:18
  +#: ../plugin/UploadForm.php:20
   msgid "Choose File"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:220
  +#: ../plugin/UploadForm.php:268
   msgid "add files"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:221
  +#: ../plugin/UploadForm.php:269
   msgid "add a file"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:223
  +#: ../plugin/UploadForm.php:271
   msgid "Reset"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:224
  +#: ../plugin/UploadForm.php:272
   msgid "Attachments"
   msgstr ""
   
  -#: ../plugin/userform.php:35 ../plugin/userform.php:38
  +#: ../plugin/userform.php:36 ../plugin/userform.php:39
   msgid "Successfully confirmed"
   msgstr ""
   
  -#: ../plugin/userform.php:36
  +#: ../plugin/userform.php:37
   msgid "Your e-mail address is confirmed successfully"
   msgstr ""
   
  -#: ../plugin/userform.php:43
  +#: ../plugin/userform.php:44
   msgid "Your new password is confirmed successfully"
   msgstr ""
   
  -#: ../plugin/userform.php:45
  +#: ../plugin/userform.php:46
   msgid "Confirmation missmatched !"
   msgstr ""
   
  -#: ../plugin/userform.php:46 ../plugin/userform.php:50
  +#: ../plugin/userform.php:47 ../plugin/userform.php:51
   msgid "Please try again to register your e-mail address"
   msgstr ""
   
  -#: ../plugin/userform.php:49
  +#: ../plugin/userform.php:50
   msgid "ID does not exists !"
   msgstr ""
   
  -#: ../plugin/userform.php:82 ../plugin/userform.php:274
  +#: ../plugin/userform.php:84 ../plugin/userform.php:281
   #, c-format
   msgid "Successfully login as '%s'"
   msgstr ""
   
  -#: ../plugin/userform.php:90 ../plugin/userform.php:279
  -#: ../plugin/userform.php:322
  +#: ../plugin/userform.php:92 ../plugin/userform.php:286
  +#: ../plugin/userform.php:329
   msgid "Invalid password !"
   msgstr ""
   
  -#: ../plugin/userform.php:94
  +#: ../plugin/userform.php:97
   #, c-format
   msgid "\"%s\" does not exists on this wiki !"
   msgstr ""
   
  -#: ../plugin/userform.php:96
  +#: ../plugin/userform.php:99
   msgid "Make new ID on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:102
  +#: ../plugin/userform.php:105
   msgid "Cookie deleted !"
   msgstr ""
   
  -#: ../plugin/userform.php:107 ../wikilib.php:2376
  +#: ../plugin/userform.php:110 ../wikilib.php:2562
   msgid "E-mail new password"
   msgstr ""
   
  -#: ../plugin/userform.php:152
  +#: ../plugin/userform.php:155
   msgid "New password confirmation"
   msgstr ""
   
  -#: ../plugin/userform.php:157
  +#: ../plugin/userform.php:160
   msgid "Please confirm your new password"
   msgstr ""
   
  -#: ../plugin/userform.php:159
  +#: ../plugin/userform.php:162
   #, c-format
   msgid "Your new password is %s"
   msgstr ""
   
  -#: ../plugin/userform.php:160 ../plugin/userform.php:266
  +#: ../plugin/userform.php:163 ../plugin/userform.php:269
   msgid "Please change your password later"
   msgstr ""
   
  -#: ../plugin/userform.php:164 ../plugin/userform.php:172
  +#: ../plugin/userform.php:167 ../plugin/userform.php:175
   msgid "Fail to e-mail notification !"
   msgstr ""
   
  -#: ../plugin/userform.php:167
  +#: ../plugin/userform.php:170
   msgid "New password is sent to your e-mail !"
   msgstr ""
   
  -#: ../plugin/userform.php:168
  +#: ../plugin/userform.php:171
   msgid "Please check your e-mail"
   msgstr ""
   
  -#: ../plugin/userform.php:173
  +#: ../plugin/userform.php:176
   msgid "E-mail mismatch !"
   msgstr ""
   
  -#: ../plugin/userform.php:175
  +#: ../plugin/userform.php:178
   msgid "Invalid request"
   msgstr ""
   
  -#: ../plugin/userform.php:176
  +#: ../plugin/userform.php:179
   msgid "Please confirm your e-mail address first !"
   msgstr ""
   
  -#: ../plugin/userform.php:183
  +#: ../plugin/userform.php:186
   msgid "ID and e-mail mismatch !"
   msgstr ""
   
  -#: ../plugin/userform.php:185
  +#: ../plugin/userform.php:188
   msgid "Please try again or make a new profile"
   msgstr ""
   
  -#: ../plugin/userform.php:225 ../plugin/userform.php:310
  +#: ../plugin/userform.php:228 ../plugin/userform.php:317
   msgid "too short password!"
   msgstr ""
   
  -#: ../plugin/userform.php:226
  +#: ../plugin/userform.php:229
   msgid "mismatch password!"
   msgstr ""
   
  -#: ../plugin/userform.php:227 ../plugin/userform.php:314
  +#: ../plugin/userform.php:230 ../plugin/userform.php:321
   msgid "not acceptable character found in the password!"
   msgstr ""
   
  -#: ../plugin/userform.php:230
  +#: ../plugin/userform.php:233
   msgid "Your password is too simple to use as a password !"
   msgstr ""
   
  -#: ../plugin/userform.php:236 ../plugin/userform.php:345
  +#: ../plugin/userform.php:239 ../plugin/userform.php:356
   msgid "Your email address is not valid"
   msgstr ""
   
  -#: ../plugin/userform.php:241 ../plugin/userform.php:413
  +#: ../plugin/userform.php:244 ../plugin/userform.php:423
   msgid "Fail to register"
   msgstr ""
   
  -#: ../plugin/userform.php:242 ../plugin/userform.php:414
  +#: ../plugin/userform.php:245 ../plugin/userform.php:424
   msgid "You are not allowed to register on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:243 ../plugin/userform.php:415 ../wiki.php:5394
  -#: ../wiki.php:5405
  +#: ../plugin/userform.php:246 ../plugin/userform.php:425 ../wiki.php:5596
  +#: ../wiki.php:5607
   msgid "Please contact WikiMasters"
   msgstr ""
   
  -#: ../plugin/userform.php:247
  +#: ../plugin/userform.php:250
   msgid "Successfully added!"
   msgstr ""
   
  -#: ../plugin/userform.php:253
  +#: ../plugin/userform.php:256
   #, c-format
   msgid "Successfully added as '%s'"
   msgstr ""
   
  -#: ../plugin/userform.php:254
  +#: ../plugin/userform.php:257
   msgid "Please check your mailbox"
   msgstr ""
   
  -#: ../plugin/userform.php:261 ../plugin/userform.php:339
  +#: ../plugin/userform.php:264 ../plugin/userform.php:346
   msgid "E-mail confirmation"
   msgstr ""
   
  -#: ../plugin/userform.php:263 ../plugin/userform.php:341
  +#: ../plugin/userform.php:266 ../plugin/userform.php:348
   msgid "Please confirm your email address"
   msgstr ""
   
  -#: ../plugin/userform.php:265
  +#: ../plugin/userform.php:268
   #, c-format
   msgid "Your initial password is %s"
   msgstr ""
   
  -#: ../plugin/userform.php:269
  +#: ../plugin/userform.php:275
   msgid "Confirmation E-mail sent"
   msgstr ""
   
  -#: ../plugin/userform.php:284
  +#: ../plugin/userform.php:291
   msgid "Invalid username !"
   msgstr ""
   
  -#: ../plugin/userform.php:312
  +#: ../plugin/userform.php:319
   msgid "mismatch password !"
   msgstr ""
   
  -#: ../plugin/userform.php:315 ../plugin/userform.php:323
  +#: ../plugin/userform.php:322 ../plugin/userform.php:330
   msgid "Password is not changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:317
  +#: ../plugin/userform.php:324
   msgid "Password is changed !"
   msgstr ""
   
  -#: ../plugin/userform.php:319
  +#: ../plugin/userform.php:326
   msgid "Password is too simple to use as a password !"
   msgstr ""
   
  -#: ../plugin/userform.php:343
  +#: ../plugin/userform.php:353
   msgid "E-mail confirmation mail sent"
   msgstr ""
   
  -#: ../plugin/userform.php:354
  +#: ../plugin/userform.php:365
   msgid "Your Nickname already used as ID in this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:359
  +#: ../plugin/userform.php:370
   msgid "Profiles are saved successfully !"
   msgstr ""
   
  -#: ../plugin/userform.php:382 ../plugin/userform.php:435
  +#: ../plugin/userform.php:393 ../plugin/userform.php:445
   #, c-format
   msgid "Authentication request was failed: %s"
   msgstr ""
   
  -#: ../plugin/userform.php:408
  +#: ../plugin/userform.php:418
   #, c-format
   msgid "Successfully login as '%s' via OpenID."
   msgstr ""
   
  -#: ../plugin/userform.php:422
  +#: ../plugin/userform.php:432
   #, c-format
   msgid "Your Nickname %s already used as ID in this Wiki."
   msgstr ""
   
  -#: ../plugin/userform.php:430
  +#: ../plugin/userform.php:440
   #, c-format
   msgid "OpenID Authentication successful and saved as %s."
   msgstr ""
   
  -#: ../plugin/userform.php:437
  +#: ../plugin/userform.php:447
   msgid "Invalid OpenID Authentication request"
   msgstr ""
   
  @@ -1979,147 +1995,147 @@
   msgid "Whois search result for %s"
   msgstr ""
   
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2664
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2911
   msgid "Others"
   msgstr ""
   
  -#: ../wiki.php:1227
  +#: ../wiki.php:1316
   #, c-format
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1647
  +#: ../wiki.php:1740
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
  -#: ../wiki.php:1657
  +#: ../wiki.php:1750
   msgid "File does not exist"
   msgstr ""
   
  -#: ../wiki.php:2041
  +#: ../wiki.php:2179
   #, c-format
   msgid "File '%s' does not exist."
   msgstr ""
   
  -#: ../wiki.php:2931 ../wiki.php:2942 ../wiki.php:5637
  +#: ../wiki.php:3109 ../wiki.php:3120 ../wiki.php:5870
   msgid "Invalid ajax action."
   msgstr ""
   
  -#: ../wiki.php:3433
  +#: ../wiki.php:3619
   msgid "Tags:"
   msgstr ""
   
  -#: ../wiki.php:3461
  +#: ../wiki.php:3648
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:3461
  +#: ../wiki.php:3648
   #, c-format
   msgid "TwinPages"
   msgstr ""
   
  -#: ../wiki.php:3466
  +#: ../wiki.php:3653
   msgid "See [TwinPages]:"
   msgstr ""
   
  -#: ../wiki.php:4038
  +#: ../wiki.php:4233
   msgid "Sister Sites Index"
   msgstr ""
   
  -#: ../wiki.php:4484 ../locale/dummy.php:6
  +#: ../wiki.php:4682 ../locale/dummy.php:6
   msgid "EditText"
   msgstr ""
   
  -#: ../wiki.php:4486
  +#: ../wiki.php:4684
   msgid "NotEditable"
   msgstr ""
   
  -#: ../wiki.php:4490 ../locale/dummy.php:6
  +#: ../wiki.php:4688 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:4491 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4689 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr ""
   
  -#: ../wiki.php:4937
  +#: ../wiki.php:5150
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5200
  +#: ../wiki.php:5410
   msgid "Someone logged in at another place !"
   msgstr ""
   
  -#: ../wiki.php:5393
  +#: ../wiki.php:5595
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5404
  +#: ../wiki.php:5606
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:5444 ../wiki.php:5453 ../wikilib.php:1520
  +#: ../wiki.php:5647 ../wiki.php:5656 ../wikilib.php:1659
   msgid "Create this page"
   msgstr ""
   
  -#: ../wiki.php:5455
  +#: ../wiki.php:5658
   #, c-format
   msgid "%s has saved revisions"
   msgstr ""
   
  -#: ../wiki.php:5456 ../wiki.php:5463
  +#: ../wiki.php:5660 ../wiki.php:5668
   #, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr ""
   
  -#: ../wiki.php:5461
  +#: ../wiki.php:5666
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr ""
   
  -#: ../wiki.php:5468
  +#: ../wiki.php:5674
   msgid "Please try to search with another word"
   msgstr ""
   
  -#: ../wiki.php:5480
  +#: ../wiki.php:5686
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr ""
   
  -#: ../wiki.php:5483
  +#: ../wiki.php:5689
   msgid "You have no templates"
   msgstr ""
   
  -#: ../wiki.php:5485
  +#: ../wiki.php:5691
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
   
  -#: ../wiki.php:5496
  +#: ../wiki.php:5702
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
  -#: ../wiki.php:5639
  +#: ../wiki.php:5872
   msgid "Invalid macro action."
   msgstr ""
   
  -#: ../wiki.php:5649
  +#: ../wiki.php:5882
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr ""
   
  -#: ../wiki.php:5669
  +#: ../wiki.php:5902
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:5672
  +#: ../wiki.php:5905
   msgid "Please enter the valid password"
   msgstr ""
   
  -#: ../wikilib.php:682
  +#: ../wikilib.php:806
   msgid ""
   "<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
   "italics</i></b>''''';\n"
  @@ -2136,354 +2152,354 @@
   "no trailing white space allowed after tables or titles.<br />\n"
   msgstr ""
   
  -#: ../wikilib.php:787
  +#: ../wikilib.php:912
   msgid "You are not allowed to edit this page !"
   msgstr ""
   
  -#: ../wikilib.php:794
  +#: ../wikilib.php:920
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
  -#: ../wikilib.php:815 ../wikilib.php:1089 ../wikilib.php:1738
  -#: ../wikilib.php:1835 ../wikilib.php:2309 ../wikilib.php:2363
  +#: ../wikilib.php:943 ../wikilib.php:1227 ../wikilib.php:1881
  +#: ../wikilib.php:1978 ../wikilib.php:2490 ../wikilib.php:2548
   msgid "Save"
   msgstr ""
   
  -#: ../wikilib.php:823 ../wikilib.php:1076 ../wikilib.php:1746
  -#: ../wikilib.php:1843
  +#: ../wikilib.php:951 ../wikilib.php:1214 ../wikilib.php:1889
  +#: ../wikilib.php:1986
   msgid "Skip to preview"
   msgstr ""
   
  -#: ../wikilib.php:936
  +#: ../wikilib.php:1066
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   
  -#: ../wikilib.php:938
  +#: ../wikilib.php:1068
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr ""
   
  -#: ../wikilib.php:942
  +#: ../wikilib.php:1072
   msgid "Merge"
   msgstr ""
   
  -#: ../wikilib.php:943
  +#: ../wikilib.php:1073
   msgid "Merge manually"
   msgstr ""
   
  -#: ../wikilib.php:944
  +#: ../wikilib.php:1074
   msgid "Ignore conflicts"
   msgstr ""
   
  -#: ../wikilib.php:976
  +#: ../wikilib.php:1109
   msgid "ReduceEditor"
   msgstr ""
   
  -#: ../wikilib.php:977
  +#: ../wikilib.php:1110
   msgid "EnlargeEditor"
   msgstr ""
   
  -#: ../wikilib.php:981 ../locale/dummy.php:6
  +#: ../wikilib.php:1114 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
  -#: ../wikilib.php:983
  +#: ../wikilib.php:1116
   msgid "HelpOnEditing"
   msgstr ""
   
  -#: ../wikilib.php:1015
  +#: ../wikilib.php:1150
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:1035
  +#: ../wikilib.php:1170
   msgid "Category"
   msgstr ""
   
  -#: ../wikilib.php:1043
  +#: ../wikilib.php:1178
   msgid " Select "
   msgstr ""
   
  -#: ../wikilib.php:1054
  +#: ../wikilib.php:1190
   msgid "Minor edit"
   msgstr ""
   
  -#: ../wikilib.php:1168
  +#: ../wikilib.php:1306
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:1173
  +#: ../wikilib.php:1311
   #, c-format
   msgid "%s is not valid action"
   msgstr ""
   
  -#: ../wikilib.php:1175
  +#: ../wikilib.php:1313
   msgid "Is it valid action ?"
   msgstr ""
   
  -#: ../wikilib.php:1222
  +#: ../wikilib.php:1360
   #, c-format
   msgid "File '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:1224
  +#: ../wikilib.php:1362
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1229
  +#: ../wikilib.php:1367
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:1231
  +#: ../wikilib.php:1369
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1241 ../wikilib.php:1261
  +#: ../wikilib.php:1379 ../wikilib.php:1399
   msgid "No files are selected !"
   msgstr ""
   
  -#: ../wikilib.php:1254
  +#: ../wikilib.php:1392
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
  -#: ../wikilib.php:1258
  +#: ../wikilib.php:1396
   msgid "Delete selected file"
   msgstr ""
   
  -#: ../wikilib.php:1279
  +#: ../wikilib.php:1417
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr ""
   
  -#: ../wikilib.php:1294
  +#: ../wikilib.php:1432
   msgid "Please delete this file manually."
   msgstr ""
   
  -#: ../wikilib.php:1296
  +#: ../wikilib.php:1434
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr ""
   
  -#: ../wikilib.php:1349
  +#: ../wikilib.php:1488
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
  -#: ../wikilib.php:1522
  +#: ../wikilib.php:1661
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
   
  -#: ../wikilib.php:1522
  +#: ../wikilib.php:1661
   msgid "title"
   msgstr ""
   
  -#: ../wikilib.php:1536
  +#: ../wikilib.php:1675
   msgid "Please try to fulltext search"
   msgstr ""
   
  -#: ../wikilib.php:1539
  +#: ../wikilib.php:1678
   #, c-format
   msgid "You can also click %s to fulltext search.\n"
   msgstr ""
   
  -#: ../wikilib.php:1584 ../wikilib.php:1693
  +#: ../wikilib.php:1723 ../wikilib.php:1836
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr ""
   
  -#: ../wikilib.php:1590
  +#: ../wikilib.php:1729
   msgid "Section edit is not valid for non-exists page."
   msgstr ""
   
  -#: ../wikilib.php:1623 ../wikilib.php:1875
  +#: ../wikilib.php:1762 ../wikilib.php:2018
   msgid "mail does not supported by default."
   msgstr ""
   
  -#: ../wikilib.php:1627 ../wikilib.php:1879
  +#: ../wikilib.php:1766 ../wikilib.php:2022
   msgid "Sent notification mail."
   msgstr ""
   
  -#: ../wikilib.php:1629 ../wikilib.php:1881
  +#: ../wikilib.php:1768 ../wikilib.php:2024
   msgid "No subscribers found."
   msgstr ""
   
  -#: ../wikilib.php:1634 ../wikilib.php:1886
  +#: ../wikilib.php:1773 ../wikilib.php:2029
   #, c-format
   msgid "%s is not editable"
   msgstr ""
   
  -#: ../wikilib.php:1636 ../wikilib.php:1888
  +#: ../wikilib.php:1775 ../wikilib.php:2031
   #, c-format
   msgid "%s is saved"
   msgstr ""
   
  -#: ../wikilib.php:1684
  +#: ../wikilib.php:1827
   msgid "Goto Editor"
   msgstr ""
   
  -#: ../wikilib.php:1698
  +#: ../wikilib.php:1841
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr ""
   
  -#: ../wikilib.php:1699
  +#: ../wikilib.php:1842
   #, c-format
   msgid "%s is merged successfully"
   msgstr ""
   
  -#: ../wikilib.php:1703
  +#: ../wikilib.php:1846
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1704
  +#: ../wikilib.php:1847
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr ""
   
  -#: ../wikilib.php:1705
  +#: ../wikilib.php:1848
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1706
  +#: ../wikilib.php:1849
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1711
  +#: ../wikilib.php:1854
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr ""
   
  -#: ../wikilib.php:1712
  +#: ../wikilib.php:1855
   msgid "Please resolve conflicts manually."
   msgstr ""
   
  -#: ../wikilib.php:1715
  +#: ../wikilib.php:1858
   #, c-format
   msgid "Force merging for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1716
  +#: ../wikilib.php:1859
   msgid "Please be careful, you could damage useful information."
   msgstr ""
   
  -#: ../wikilib.php:1730
  +#: ../wikilib.php:1873
   msgid "Conflict error!"
   msgstr ""
   
  -#: ../wikilib.php:1771
  +#: ../wikilib.php:1914
   msgid "Too long Comment"
   msgstr ""
   
  -#: ../wikilib.php:1821
  +#: ../wikilib.php:1964
   #, c-format
   msgid "Preview of %s"
   msgstr ""
   
  -#: ../wikilib.php:1921
  +#: ../wikilib.php:2064
   msgid "Nobody subscribed to this page."
   msgstr ""
   
  -#: ../wikilib.php:1940
  +#: ../wikilib.php:2083
   #, c-format
   msgid "%s page is modified"
   msgstr ""
   
  -#: ../wikilib.php:1969
  +#: ../wikilib.php:2112
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:1982
  +#: ../wikilib.php:2125
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:1987
  +#: ../wikilib.php:2130
   msgid "Mails are sent successfully"
   msgstr ""
   
  -#: ../wikilib.php:1988
  +#: ../wikilib.php:2131
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1990
  +#: ../wikilib.php:2133
   msgid "Fail to send mail"
   msgstr ""
   
  -#: ../wikilib.php:2001
  +#: ../wikilib.php:2144
   msgid "This wiki does not support sendmail"
   msgstr ""
   
  -#: ../wikilib.php:2099
  +#: ../wikilib.php:2274
   msgid "Invalid regular expression !"
   msgstr ""
   
  -#: ../wikilib.php:2123
  +#: ../wikilib.php:2298
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:2126
  +#: ../wikilib.php:2301
   msgid "Infinite loop possible!"
   msgstr ""
   
  -#: ../wikilib.php:2241
  +#: ../wikilib.php:2418
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:2242
  +#: ../wikilib.php:2419
   msgid "OpenID"
   msgstr ""
   
  -#: ../wikilib.php:2254 ../wikilib.php:2381
  +#: ../wikilib.php:2432 ../wikilib.php:2567
   msgid "ID"
   msgstr ""
   
  -#: ../wikilib.php:2289 ../wikilib.php:2374
  +#: ../wikilib.php:2470 ../wikilib.php:2560
   msgid "Make profile"
   msgstr ""
   
  -#: ../wikilib.php:2291
  +#: ../wikilib.php:2472
   msgid "password again"
   msgstr ""
   
  -#: ../wikilib.php:2293 ../wikilib.php:2342
  +#: ../wikilib.php:2474 ../wikilib.php:2524
   msgid "Mail"
   msgstr ""
   
  -#: ../wikilib.php:2315
  +#: ../wikilib.php:2496
   msgid "New password"
   msgstr ""
   
  -#: ../wikilib.php:2320
  +#: ../wikilib.php:2501
   msgid "Nickname"
   msgstr ""
   
  -#: ../wikilib.php:2343
  +#: ../wikilib.php:2525
   msgid "Time Zone"
   msgstr ""
   
  -#: ../wikilib.php:2352
  +#: ../wikilib.php:2534
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:2665
  +#: ../wikilib.php:2912
   msgid "Show all"
   msgstr ""
   
  -#: ../wikilib.php:2803
  +#: ../wikilib.php:3050
   msgid "Contents"
   msgstr ""
   
  -#: ../wikilib.php:2923
  +#: ../wikilib.php:3171
   #, c-format
   msgid "Title search for \"%s\""
   msgstr ""
  @@ -2492,248 +2508,252 @@
   msgid "Check a dba configuration"
   msgstr ""
   
  -#: ../monisetup.php:50
  +#: ../monisetup.php:53
   #, c-format
   msgid "%s is selected."
   msgstr ""
   
  -#: ../monisetup.php:57
  +#: ../monisetup.php:55
  +msgid "No \\$dba_type selected."
  +msgstr ""
  +
  +#: ../monisetup.php:63
   msgid "Check a AcceptPathInfo setting for Apache 2.x.xx"
   msgstr ""
   
  -#: ../monisetup.php:64 ../monisetup.php:70
  +#: ../monisetup.php:70 ../monisetup.php:76
   msgid "Off"
   msgstr ""
   
  -#: ../monisetup.php:72
  +#: ../monisetup.php:78
   msgid "On"
   msgstr ""
   
  -#: ../monisetup.php:426
  +#: ../monisetup.php:432
   msgid ""
   "Please change the permission of some directories writable on your server to "
   "initialize your Wiki."
   msgstr ""
   
  -#: ../monisetup.php:428
  +#: ../monisetup.php:434
   #, c-format
   msgid ""
   "If you want a more safe wiki, try to change the permission of directories "
   "with %s."
   msgstr ""
   
  -#: ../monisetup.php:431
  +#: ../monisetup.php:437
   msgid ""
   "or use <tt>monisetup.sh</tt> and select 777 or <font color='red'>2777</font>"
   msgstr ""
   
  -#: ../monisetup.php:433
  +#: ../monisetup.php:439
   msgid ""
   "After execute one of above two commands, just <a href='monisetup.php'>reload "
   "this <tt>monisetup.php</tt></a> would make a new initial <tt>config.php</tt> "
   "with detected parameters for your wiki."
   msgstr ""
   
  -#: ../monisetup.php:434
  +#: ../monisetup.php:440
   msgid "Reload"
   msgstr ""
   
  -#: ../monisetup.php:437
  +#: ../monisetup.php:443
   msgid "WARN"
   msgstr ""
   
  -#: ../monisetup.php:438
  +#: ../monisetup.php:444
   msgid ""
   "Please execute the following command after you have completed your "
   "configuration."
   msgstr ""
   
  -#: ../monisetup.php:442 ../monisetup.php:1268
  +#: ../monisetup.php:448 ../monisetup.php:1274
   msgid "WARN: You have to enter your Admin Password"
   msgstr ""
   
  -#: ../monisetup.php:445
  +#: ../monisetup.php:451
   msgid ""
   "WARN: If you have any permission to execute 'secure.sh'. press the following "
   "button"
   msgstr ""
   
  -#: ../monisetup.php:447
  +#: ../monisetup.php:453
   msgid "Protect my config.php now!"
   msgstr ""
   
  -#: ../monisetup.php:464
  +#: ../monisetup.php:470
   #, c-format
   msgid "FATAL: %s directory is not writable"
   msgstr ""
   
  -#: ../monisetup.php:465
  +#: ../monisetup.php:471
   msgid "Please execute the following command."
   msgstr ""
   
  -#: ../monisetup.php:484
  +#: ../monisetup.php:490
   #, c-format
   msgid "%s directory is not writable"
   msgstr ""
   
  -#: ../monisetup.php:501
  +#: ../monisetup.php:507
   #, c-format
   msgid "%s is not writable"
   msgstr ""
   
  -#: ../monisetup.php:508 ../monisetup.php:514
  +#: ../monisetup.php:514 ../monisetup.php:520
   #, c-format
   msgid "%s is created now"
   msgstr ""
   
  -#: ../monisetup.php:524
  +#: ../monisetup.php:530
   #, c-format
   msgid "%s is writable"
   msgstr ""
   
  -#: ../monisetup.php:541
  +#: ../monisetup.php:547
   #, c-format
   msgid ""
   "If you want to check .htaccess file please delete '%s' file and reload it."
   msgstr ""
   
  -#: ../monisetup.php:544
  +#: ../monisetup.php:550
   msgid "Security check for 'upload_dir'."
   msgstr ""
   
  -#: ../monisetup.php:576
  +#: ../monisetup.php:582
   msgid ".htaccess for 'imgs_dir'."
   msgstr ""
   
  -#: ../monisetup.php:646
  +#: ../monisetup.php:652
   msgid "Fail"
   msgstr ""
   
  -#: ../monisetup.php:652
  +#: ../monisetup.php:658
   msgid "Unable to write .htaccess"
   msgstr ""
   
  -#: ../monisetup.php:756
  +#: ../monisetup.php:762
   msgid "Click here to toggle all"
   msgstr ""
   
  -#: ../monisetup.php:757
  +#: ../monisetup.php:763
   msgid "Deselect all"
   msgstr ""
   
  -#: ../monisetup.php:762
  +#: ../monisetup.php:768
   msgid "Please be careful to deselect these pages"
   msgstr ""
   
  -#: ../monisetup.php:1056
  +#: ../monisetup.php:1067
   msgid "MoniWiki"
   msgstr ""
   
  -#: ../monisetup.php:1059
  +#: ../monisetup.php:1070
   msgid "'config.php' is not writable !"
   msgstr ""
   
  -#: ../monisetup.php:1060
  +#: ../monisetup.php:1071
   msgid ""
   "Please execute <tt>'monisetup.sh'</tt> or <tt>chmod a+w config.php</tt> "
   "first to change your settings."
   msgstr ""
   
  -#: ../monisetup.php:1062
  +#: ../monisetup.php:1073
   msgid "Unprotect my config.php"
   msgstr ""
   
  -#: ../monisetup.php:1095
  +#: ../monisetup.php:1101
   msgid "config.php is protected now !"
   msgstr ""
   
  -#: ../monisetup.php:1100 ../monisetup.php:1119
  +#: ../monisetup.php:1106 ../monisetup.php:1125
   msgid "Invalid password error !"
   msgstr ""
   
  -#: ../monisetup.php:1101 ../monisetup.php:1120
  +#: ../monisetup.php:1107 ../monisetup.php:1126
   msgid ""
   "If you can't remember your admin password, delete password entry in the "
   "'config.php' and restart 'monisetup'"
   msgstr ""
   
  -#: ../monisetup.php:1106
  +#: ../monisetup.php:1112
   msgid "config.php is unprotected now !"
   msgstr ""
   
  -#: ../monisetup.php:1152
  +#: ../monisetup.php:1158
   #, c-format
   msgid "Updated Configutations for this %s"
   msgstr ""
   
  -#: ../monisetup.php:1170
  +#: ../monisetup.php:1176
   msgid "Configurations are saved successfully"
   msgstr ""
   
  -#: ../monisetup.php:1171
  +#: ../monisetup.php:1177
   msgid ""
   "WARN: Please check <a href='monisetup.php'> your saved configurations</a>"
   msgstr ""
   
  -#: ../monisetup.php:1172
  +#: ../monisetup.php:1178
   msgid "If all is good, change 'config.php' permission as 644."
   msgstr ""
   
  -#: ../monisetup.php:1184
  +#: ../monisetup.php:1190
   msgid "Welcome to MoniWiki ! This is your first installation"
   msgstr ""
   
  -#: ../monisetup.php:1194
  +#: ../monisetup.php:1200
   msgid "Default settings are loaded..."
   msgstr ""
   
  -#: ../monisetup.php:1202
  +#: ../monisetup.php:1208
   msgid "Initial configurations are saved successfully."
   msgstr ""
   
  -#: ../monisetup.php:1203
  +#: ../monisetup.php:1209
   msgid "Goto <a href='monisetup.php'>MoniSetup</a> again to configure details"
   msgstr ""
   
  -#: ../monisetup.php:1220 ../monisetup.php:1222 ../monisetup.php:1318
  -#: ../monisetup.php:1320
  +#: ../monisetup.php:1226 ../monisetup.php:1228 ../monisetup.php:1324
  +#: ../monisetup.php:1326
   #, c-format
   msgid "goto %s"
   msgstr ""
   
  -#: ../monisetup.php:1225
  +#: ../monisetup.php:1231
   msgid "No WikiSeeds are selected"
   msgstr ""
   
  -#: ../monisetup.php:1236
  +#: ../monisetup.php:1242
   #, c-format
   msgid "Preview current settings for this %s"
   msgstr ""
   
  -#: ../monisetup.php:1238
  +#: ../monisetup.php:1244
   #, c-format
   msgid "Read current settings for this %s"
   msgstr ""
   
  -#: ../monisetup.php:1266
  +#: ../monisetup.php:1272
   msgid "Change your settings"
   msgstr ""
   
  -#: ../monisetup.php:1270 ../monisetup.php:1313
  +#: ../monisetup.php:1276 ../monisetup.php:1319
   #, c-format
   msgid "WARN: You have no WikiSeed on your %s"
   msgstr ""
   
  -#: ../monisetup.php:1271 ../monisetup.php:1314
  +#: ../monisetup.php:1277 ../monisetup.php:1320
   #, c-format
   msgid "If you want to put wikiseeds on your wiki %s now"
   msgstr ""
   
  -#: ../monisetup.php:1272 ../monisetup.php:1315
  +#: ../monisetup.php:1278 ../monisetup.php:1321
   msgid "Click here"
   msgstr ""
   
  -#: ../monisetup.php:1307 ../monisetup.php:1309
  +#: ../monisetup.php:1313 ../monisetup.php:1315
   msgid "Update"
   msgstr ""
   
  
  
  


1281714734;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv19969\n\nModified Files:\n	monisetup.php \nLog Message:\nuse dba_handlers() to query available $dba_type\n\n
wkpark      2010/08/14 00:52:14

  Modified:    .        monisetup.php
  Log:
  use dba_handlers() to query available $dba_type
  
  Revision  Changes    Path
  1.52      +11 -15    moniwiki/monisetup.php
  
  Index: monisetup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
  retrieving revision 1.51
  retrieving revision 1.52
  diff -u -r1.51 -r1.52
  --- monisetup.php	29 Jul 2010 23:25:17 -0000	1.51
  +++ monisetup.php	13 Aug 2010 15:52:14 -0000	1.52
  @@ -1,7 +1,7 @@
   <?php
   // Copyright 2003-2007 Won-Kyu Park <wkpark at kldp.org> all rights reserved.
   // distributable under GPL see COPYING 
  -// $Id: monisetup.php,v 1.51 2010/07/29 23:25:17 wkpark Exp $
  +// $Id: monisetup.php,v 1.52 2010/08/13 15:52:14 wkpark Exp $
   
   function _stripslashes($str) {
     return get_magic_quotes_gpc() ? stripslashes($str):$str;
  @@ -36,20 +36,16 @@
       print '<div class="check">';
       if (function_exists("dba_open")) {
         print '<h3>'._t("Check a dba configuration").'</h3>';
  -      $tempnam=tempnam(".",'dba-'.time());
  -      if ($db=@dba_open($tempnam,"n","db4"))
  -        $config['dba_type']="db4";
  -      else if ($db=@dba_open($tempnam,"n","db3"))
  -        $config['dba_type']="db3";
  -      else if ($db=@dba_open($tempnam,"n","db2"))
  -        $config['dba_type']="db2";
  -      else if ($db=@dba_open($tempnam,"n","gdbm"))
  -        $config['dba_type']="gdbm";
  -      else if ($db=@dba_open($tempnam,"n","flatfile"))
  -        $config['dba_type']="flatfile";
  +      $dbtypes = dba_handlers(true);
  +      $dbtests = array('db4', 'db3', 'db2', 'gdbm', 'flatfile');
  +      foreach ($dbtests as $mydb) {
  +        if (isset($dbtypes[$mydb])) {
  +          $config['dba_type'] = $mydb;
  +          break;
  +        }
  +      }
   
  -      if (is_resource($db)) {
  -        dba_close($db);
  +      if (!empty($config['dba_type'])) {
           print '<ul><li>'.sprintf(_t("%s is selected."),"<b>$config[dba_type]</b>").'</li></ul>';
         } else {
           print '<p>'.sprintf(_t("No \$dba_type selected.")).'</p>';
  @@ -57,7 +53,7 @@
       }
       preg_match("/Apache\/2\./",$_SERVER['SERVER_SOFTWARE'],$match);
   
  -    if ($match) {
  +    if (empty($match)) {
         $config['query_prefix']='?';
         while (ini_get('allow_url_fopen')) {
           print '<h3>'._t("Check a AcceptPathInfo setting for Apache 2.x.xx").'</h3>';
  
  
  


1281714921;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin/processor\nIn directory kill.kldp.net:/tmp/cvs-serv20070/plugin/processor\n\nModified Files:\n	monimarkup.php \nLog Message:\n[#315561] pcre 6.x does not support relative references. sync with the main wiki.php\n\n
wkpark      2010/08/14 00:55:21

  Modified:    plugin/processor monimarkup.php
  Log:
  [#315561] pcre 6.x does not support relative references. sync with the main wiki.php
  
  Revision  Changes    Path
  1.28      +3 -3      moniwiki/plugin/processor/monimarkup.php
  
  Index: monimarkup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/monimarkup.php,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- monimarkup.php	10 Aug 2010 04:37:49 -0000	1.27
  +++ monimarkup.php	13 Aug 2010 15:55:21 -0000	1.28
  @@ -3,12 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a moniwiki formatting processor for the MoniWiki
   //
  -// $Id: monimarkup.php,v 1.27 2010/08/10 04:37:49 wkpark Exp $
  +// $Id: monimarkup.php,v 1.28 2010/08/13 15:55:21 wkpark Exp $
   /**
    * @date    2006-08-09
    * @name    Moniwiki Processor
    * @desc    Moniwiki default processor
  - * @version $Revision: 1.27 $
  + * @version $Revision: 1.28 $
    * @depend  1.1.3
    * @license GPL
    */
  @@ -447,7 +447,7 @@
                   $my_divclose='</div>';
               }
           }
  -        $wordrule="(?:{{{(?U)(?:.+)}}})|".
  +        $wordrule="({{{(?:(?:[^{}]+|(?<!{){{1,2}(?!{)|(?<!})}{1,2}(?!}))|(?1))+}}})|".
                 "\[\[(?:[A-Za-z0-9]+(?:\((?:(?<!\]\]).)*\))?)\]\]|". # macro
                 "<<(?:[A-Za-z0-9]+(?:\((?:(?<!>>).)*\))?)>>|"; # macro
   
  
  
  


1281715222;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv20291/plugin\n\nModified Files:\n	FastSearch.php FullSearch.php \nLog Message:\ngettextize some msgs\n\n
wkpark      2010/08/14 01:00:22

  Modified:    plugin   FastSearch.php FullSearch.php
  Log:
  gettextize some msgs
  
  Revision  Changes    Path
  1.19      +2 -2      moniwiki/plugin/FastSearch.php
  
  Index: FastSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FastSearch.php,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- FastSearch.php	5 Aug 2010 15:51:47 -0000	1.18
  +++ FastSearch.php	13 Aug 2010 16:00:22 -0000	1.19
  @@ -13,7 +13,7 @@
   //
   // Usage: [[FastSearch(string)]]
   //
  -// $Id: FastSearch.php,v 1.18 2010/08/05 15:51:47 wkpark Exp $
  +// $Id: FastSearch.php,v 1.19 2010/08/13 16:00:22 wkpark Exp $
   
   include_once('lib/indexer.DBA.php');
   
  @@ -135,7 +135,7 @@
             "?action=highlight&amp;value="._urlencode($needle),
             $page_name,"tabindex='$idx'");
       if ($count) {
  -      $out.= ' . . . . ' . $count . (($count == 1) ? _(" match") : _(" matches"));
  +      $out.= ' . . . . ' . sprintf((($count == 1) ? _("%d match") : _("%d matches")), $count );
         $out.= $contexts[$page_name];
       }
       $out.= "</li>\n";
  
  
  
  1.36      +2 -2      moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- FullSearch.php	29 Jul 2010 11:32:24 -0000	1.35
  +++ FullSearch.php	13 Aug 2010 16:00:22 -0000	1.36
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
   //
  -// $Id: FullSearch.php,v 1.35 2010/07/29 11:32:24 wkpark Exp $
  +// $Id: FullSearch.php,v 1.36 2010/08/13 16:00:22 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
  @@ -260,7 +260,7 @@
             '?action=highlight&amp;value='._urlencode($value),
             $page_name,'tabindex="'.$idx.'"');
       if ($count > 0)
  -      $out.= ' . . . . ' . $count . (($count == 1) ? _(" match") : _(" matches"));
  +      $out.= ' . . . . ' . sprintf((($count == 1) ? _("%d match") : _("%d matches")), $count );
       if (!empty($opts['context']) and $opts['context']>0) {
         # search matching contexts
         $p = new WikiPage($page_name);
  
  
  


1281716771;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv27463/plugin\n\nModified Files:\n	DueDate.php \nLog Message:\n[#315588] use gmdate() instead of strftime() to prevent encoding problem\n\n
wkpark      2010/08/14 01:26:12

  Modified:    plugin   DueDate.php
  Log:
  [#315588] use gmdate() instead of strftime() to prevent encoding problem
  
  Revision  Changes    Path
  1.4       +2 -2      moniwiki/plugin/DueDate.php
  
  Index: DueDate.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/DueDate.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- DueDate.php	24 Aug 2004 08:19:29 -0000	1.3
  +++ DueDate.php	13 Aug 2010 16:26:11 -0000	1.4
  @@ -5,7 +5,7 @@
   //
   // Usage: DueDate([[YYYY]MM]DD)
   //
  -// $Id: DueDate.php,v 1.3 2004/08/24 08:19:29 wkpark Exp $
  +// $Id: DueDate.php,v 1.4 2010/08/13 16:26:11 wkpark Exp $
   
   function macro_DueDate($formatter,$value) {
     $time= localtime(time(),true);
  @@ -35,7 +35,7 @@
     $time_val= strtotime($date_val);
     $time_diff= (int) (($time_val - $now_val)/86400);
     
  -  $date=strftime("%x",$time_val);
  +  $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);
  
  
  


1281718010;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv31960\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315589] apply http://dev.naver.com/projects/nforge/issue/8513 patch by nori\n\n
wkpark      2010/08/14 01:46:52

  Modified:    .        wikilib.php
  Log:
  [#315589] apply http://dev.naver.com/projects/nforge/issue/8513 patch by nori
  
  Revision  Changes    Path
  1.320     +32 -2     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.319
  retrieving revision 1.320
  diff -u -r1.319 -r1.320
  --- wikilib.php	12 Aug 2010 21:26:13 -0000	1.319
  +++ wikilib.php	13 Aug 2010 16:46:50 -0000	1.320
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.319 2010/08/12 21:26:13 wkpark Exp $
  +// $Id: wikilib.php,v 1.320 2010/08/13 16:46:50 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -801,9 +801,39 @@
     $formatter->send_footer($args,$options);
   }
   
  -function macro_EditHints($formatter) {
  +function macro_EditHints($formatter, $value) {
     $hints = "<div class=\"wikiHints\">\n";
  +
  +  if ($value == 'js') {
  +    $wikihints_openbutton_onclick = <<<JS
  +$("wikiHints_opened_head").style.display = "block";
  +$("wikiHints_closed_head").style.display = "none";
  +$("wikiHints_content").style.display = "block"';
  +JS;
  +
  +    $wikihints_closebutton_onclick = <<<JS
  +$("wikiHints_opened_head").style.display = "none";
  +$("wikiHints_closed_head").style.display = "block";
  +$("wikiHints_content").style.display = "none"';
  +JS;
  +
  +    $hints.= "<div id='wikiHints_closed_head' class='head'>";
  +    $hints.= "<div class='open-button' onclick='$wikihints_openbutton_onclick'><span class='mark'>?</span><span class='message'> "._("Editing Hints")."</span></div><div class='clear'></div>";
  +    $hints.= "</div>";
  +
  +    /* wikiHints_opened_head is hiding because wikiHints is closed basically. */
  +    $hints.= "<div id='wikiHints_opened_head' class='head' style='display: none'>";
  +    $hints.= "<div class='tutorial-link'>"._("See more help:").' '.$formatter->link_tag('WikiTutorial')."</div><div class='close-button' onclick='$wikihints_closebutton_onclick'><span class='mark'>x</span><span class='message'> "._("Close Editing Hints")."</span></div><div class='clear'></div>";
  +    $hints.= "</div>";
  +  
  +    $display = 'style="display: none"';
  +  } else {
  +    $display = '';
  +  }
  +
  +  $hints.= "<p id='wikiHints_content' $display>";
     $hints.= _("<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold italics</i></b>''''';\n''<i>mixed '''<b>bold</b>''' and italics</i>''; ---- horizontal rule.<br />\n<b>Headings:</b> = Title 1 =; == Title 2 ==; === Title 3 ===;\n==== Title 4 ====; ===== Title 5 =====.<br />\n<b>Lists:</b> space and one of * bullets; 1., a., A., i., I. numbered items;\n1.#n start numbering at n; space alone indents.<br />\n<b>Links:</b> JoinCapitalizedWords; [\"brackets and double quotes\"];\n[bracketed words];\nurl; [url]; [url label].<br />\n<b>Tables</b>: || cell text |||| cell text spanning two columns ||;\nno trailing white space allowed after tables or titles.<br />\n");
  +  $hints.= "</p>";
     $hints.= "</div>\n";
     return $hints;
   }
  
  
  


1281725708;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv22161\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315589] extract EditHints macro. more fixed macro_EditHints()\n\n
1281725708;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv22161/plugin\n\nAdded Files:\n	EditHints.php \nLog Message:\n[#315589] extract EditHints macro. more fixed macro_EditHints()\n\n
wkpark      2010/08/14 03:55:09

  Modified:    .        wikilib.php
  Added:       plugin   EditHints.php
  Log:
  [#315589] extract EditHints macro. more fixed macro_EditHints()
  
  Revision  Changes    Path
  1.321     +2 -39     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.320
  retrieving revision 1.321
  diff -u -r1.320 -r1.321
  --- wikilib.php	13 Aug 2010 16:46:50 -0000	1.320
  +++ wikilib.php	13 Aug 2010 18:55:07 -0000	1.321
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.320 2010/08/13 16:46:50 wkpark Exp $
  +// $Id: wikilib.php,v 1.321 2010/08/13 18:55:07 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -801,43 +801,6 @@
     $formatter->send_footer($args,$options);
   }
   
  -function macro_EditHints($formatter, $value) {
  -  $hints = "<div class=\"wikiHints\">\n";
  -
  -  if ($value == 'js') {
  -    $wikihints_openbutton_onclick = <<<JS
  -$("wikiHints_opened_head").style.display = "block";
  -$("wikiHints_closed_head").style.display = "none";
  -$("wikiHints_content").style.display = "block"';
  -JS;
  -
  -    $wikihints_closebutton_onclick = <<<JS
  -$("wikiHints_opened_head").style.display = "none";
  -$("wikiHints_closed_head").style.display = "block";
  -$("wikiHints_content").style.display = "none"';
  -JS;
  -
  -    $hints.= "<div id='wikiHints_closed_head' class='head'>";
  -    $hints.= "<div class='open-button' onclick='$wikihints_openbutton_onclick'><span class='mark'>?</span><span class='message'> "._("Editing Hints")."</span></div><div class='clear'></div>";
  -    $hints.= "</div>";
  -
  -    /* wikiHints_opened_head is hiding because wikiHints is closed basically. */
  -    $hints.= "<div id='wikiHints_opened_head' class='head' style='display: none'>";
  -    $hints.= "<div class='tutorial-link'>"._("See more help:").' '.$formatter->link_tag('WikiTutorial')."</div><div class='close-button' onclick='$wikihints_closebutton_onclick'><span class='mark'>x</span><span class='message'> "._("Close Editing Hints")."</span></div><div class='clear'></div>";
  -    $hints.= "</div>";
  -  
  -    $display = 'style="display: none"';
  -  } else {
  -    $display = '';
  -  }
  -
  -  $hints.= "<p id='wikiHints_content' $display>";
  -  $hints.= _("<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold italics</i></b>''''';\n''<i>mixed '''<b>bold</b>''' and italics</i>''; ---- horizontal rule.<br />\n<b>Headings:</b> = Title 1 =; == Title 2 ==; === Title 3 ===;\n==== Title 4 ====; ===== Title 5 =====.<br />\n<b>Lists:</b> space and one of * bullets; 1., a., A., i., I. numbered items;\n1.#n start numbering at n; space alone indents.<br />\n<b>Links:</b> JoinCapitalizedWords; [\"brackets and double quotes\"];\n[bracketed words];\nurl; [url]; [url label].<br />\n<b>Tables</b>: || cell text |||| cell text spanning two columns ||;\nno trailing white space allowed after tables or titles.<br />\n");
  -  $hints.= "</p>";
  -  $hints.= "</div>\n";
  -  return $hints;
  -}
  -
   function macro_EditText($formatter,$value,$options) {
     global $DBInfo;
   
  @@ -1316,7 +1279,7 @@
   </div>
   EOS;
     if (empty($options['nohints']))
  -    $form.= macro_EditHints($formatter);
  +    $form.= $formatter->macro_repl('EditHints');
     if (empty($options['simple']))
       $form.= "<a id='preview'></a>";
     return $form.$resizer;
  
  
  
  1.1                  moniwiki/plugin/EditHints.php
  
  Index: EditHints.php
  ===================================================================
  <?php
  // Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // EditHints plugin
  //
  // Author: Won-Kyu Park <wkpark@kldp.org>
  // Since: 2003-08-01
  // Name: Edit Hints macro
  // Description: Show some simple hints of wiki markups
  // URL: MoniWiki:EditHintsMacro
  // Version: $Revision: 1.1 $
  // License: GPL
  // Usage: [[EditHints]] or [[EditHints(js)]]
  //
  // $Id: EditHints.php,v 1.1 2010/08/13 18:55:08 wkpark Exp $
  
  function macro_EditHints($formatter, $value = '') {
    global $DBInfo;
  
    $hints = "<div class=\"wikiHints\">\n";
  
    $opt = (empty($value) and !empty($DBInfo->wikihints_option)) ? $DBInfo->wikihints_option : $value;
    $help_page = 'WikiTutorial';
  
    if ($opt == 'js') {
      $wikihints_openbutton_onclick = <<<JS
  document.getElementById("wikiHints_opened_head").style.display = "block";
  document.getElementById("wikiHints_closed_head").style.display = "none";
  document.getElementById("wikiHints_content").style.display = "block"';
  JS;
  
      $wikihints_closebutton_onclick = <<<JS
  document.getElementById("wikiHints_opened_head").style.display = "none";
  document.getElementById("wikiHints_closed_head").style.display = "block";
  document.getElementById("wikiHints_content").style.display = "none"';
  JS;
  
      $hints.= "<div id='wikiHints_closed_head' class='head'>";
      $hints.= "<div class='open-button' onclick='$wikihints_openbutton_onclick'><span class='mark'>?</span><span class='message'> "._("Editing Hints")."</span></div><div class='clear'></div>";
      $hints.= "</div>";
  
      /* wikiHints_opened_head is hiding because wikiHints is closed basically. */
      $hints.= "<div id='wikiHints_opened_head' class='head' style='display: none'>";
      $hints.= "<div class='tutorial-link'>"._("See more help:").' '.$formatter->link_tag($help_page)."</div><div class='close-button' onclick='$wikihints_closebutton_onclick'><span class='mark'>&times;</span><span class='message'> "._("Close Editing Hints")."</span></div><div class='clear'></div>";
      $hints.= "</div>";
    
      $display = 'style="display: none"';
    } else {
      $display = '';
    }
  
    $hints.= "<p id='wikiHints_content' $display>";
    $hints.= _("<b>Emphasis:</b> '''<strong>bold</strong>''', ''<i>italics</i>''<br />\n<b>Headings:</b> ==<span class='space'> </span>Title 2<span class='space'> </span>==; ===<span class='space'> </span>Title 3<span class='space'> </span>===; ...<br />\n<b>Lists:</b> <span class='space'> </span>*<span class='space'> </span> space and one of * bullets; <span class='space'> </span>1.<span class='space'> </span>numbered items; <span class='space'> </span> space alone indents.<br />\n<b>Links:</b> [[double bracketed words]]; [bracketed words]; JoinCapitalizedWords; [\"brackets and double quotes\"];\nurl; [url]; [url label].<br />\n<b>Tables</b>: || cell text |||| cell text spanning two columns ||;\nno trailing white space allowed after tables or titles.<br />\n");
    $hints.= "</p>";
    $hints.= "</div>\n";
    return $hints;
  }
  
  
  
  


1281725889;wkpark;Update of /cvsroot/moniwiki/moniwiki/locale/po\nIn directory kill.kldp.net:/tmp/cvs-serv22266/po\n\nModified Files:\n	fr.po ko.po moniwiki.pot \nLog Message:\n[#315589] some gettext msgs are added. simplified EditHints.\n\n
wkpark      2010/08/14 03:58:10

  Modified:    locale/po fr.po ko.po moniwiki.pot
  Log:
  [#315589] some gettext msgs are added. simplified EditHints.
  
  Revision  Changes    Path
  1.31      +944 -917  moniwiki/locale/po/fr.po
  
  Index: fr.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/fr.po,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- fr.po	13 Aug 2010 15:21:40 -0000	1.30
  +++ fr.po	13 Aug 2010 18:58:09 -0000	1.31
  @@ -4,7 +4,7 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2010-08-14 00:12+0900\n"
  +"POT-Creation-Date: 2010-08-14 03:44+0900\n"
   "PO-Revision-Date: 2003-08-17 22:51+0900\n"
   "Last-Translator: Serge Stinckwich <Serge.Stinckwich@info.unicaen.fr>\n"
   "Language-Team: fr <fr@li.org>\n"
  @@ -12,84 +12,6 @@
   "Content-Type: text/plain; charset=iso-8859-1\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  -#: ../plugin/aclinfo.php:15
  -msgid "ACL is not enabled on this Wiki"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:21
  -msgid "Your ACL Info"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:23
  -msgid "You are wiki owner"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:25
  -msgid "You are wiki master"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:27
  -msgid "Allowed actions"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:32
  -msgid "Denied actions"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:38
  -msgid "Protected actions"
  -msgstr ""
  -
  -#: ../plugin/admin.php:136 ../plugin/PluginInfo.php:50
  -msgid "Description"
  -msgstr ""
  -
  -#: ../plugin/admin.php:139 ../plugin/PluginInfo.php:56
  -msgid "Author"
  -msgstr ""
  -
  -#: ../plugin/admin.php:141 ../plugin/PluginInfo.php:58
  -msgid "License"
  -msgstr ""
  -
  -# ../plugin/VisualTour.php:59
  -#: ../plugin/admin.php:143 ../plugin/PluginInfo.php:60
  -msgid "Depend"
  -msgstr ""
  -
  -#: ../plugin/admin.php:147 ../plugin/PluginInfo.php:64
  -msgid "URL"
  -msgstr ""
  -
  -#: ../plugin/admin.php:191
  -msgid "Enabled plugins"
  -msgstr ""
  -
  -#: ../plugin/admin.php:193
  -msgid "Disabled plugins"
  -msgstr ""
  -
  -#: ../plugin/admin.php:201
  -msgid "Enabled processors"
  -msgstr ""
  -
  -#: ../plugin/admin.php:203
  -msgid "Disabled processors"
  -msgstr ""
  -
  -#: ../plugin/admin.php:206
  -msgid "Plugin/Processor settings are updated"
  -msgstr ""
  -
  -#: ../plugin/admin.php:212
  -msgid "Enable/disable plugins and processors"
  -msgstr ""
  -
  -# ../locale/dummy.php:7
  -#: ../plugin/atom.php:64 ../plugin/rss_rc.php:62
  -msgid "show changes"
  -msgstr ""
  -
   # ../plugin/Attachment.php:24
   #: ../plugin/Attachment.php:72 ../plugin/Attachment.php:341
   #, c-format
  @@ -122,157 +44,6 @@
   msgid "Translate %s to %s"
   msgstr "Translate %s en %s"
   
  -# ../wikilib.php:887
  -#: ../plugin/backup.php:42
  -msgid "Your wiki is backuped successfully"
  -msgstr ""
  -
  -#: ../plugin/backup.php:49
  -msgid "Backup failed !"
  -msgstr ""
  -
  -# ../plugin/backup.php:46
  -#: ../plugin/backup.php:54
  -msgid "Did you want to Backup your wiki ?"
  -msgstr "Voulez vous faire une sauvegarde de votre wiki ?"
  -
  -#: ../plugin/bbs.php:493
  -msgid "This bbs does not exists yet. Please save this page first"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:617
  -msgid "No"
  -msgstr ""
  -
  -# ../locale/dummy.php:6 ../wiki.php:2553
  -#: ../plugin/bbs.php:626
  -msgid "Edit"
  -msgstr ""
  -
  -# ../locale/dummy.php:5
  -#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1395
  -msgid "Delete"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:657
  -msgid "Please check article numbers."
  -msgstr ""
  -
  -#: ../plugin/bbs.php:737
  -msgid "More"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:782
  -msgid "New"
  -msgstr ""
  -
  -# ../plugin/rename.php:27
  -#: ../plugin/bbs.php:784
  -msgid "Read"
  -msgstr "Renommer"
  -
  -#: ../plugin/bbs.php:800
  -#, c-format
  -msgid "Total %s articles."
  -msgstr ""
  -
  -# ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
  -# c-format
  -#: ../plugin/bbs.php:836
  -#, c-format
  -msgid "Your IP address is not allowed to %s at this BBS"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:890
  -msgid "Successfully deleted."
  -msgstr ""
  -
  -#: ../plugin/bbs.php:922
  -msgid "Fail to post comment."
  -msgstr ""
  -
  -# ../wikilib.php:540
  -#: ../plugin/bbs.php:932
  -#, c-format
  -msgid "The article %s will be deleted."
  -msgstr ""
  -
  -#: ../plugin/bbs.php:974
  -msgid "Invalid HomePage address."
  -msgstr ""
  -
  -#: ../plugin/bbs.php:987
  -msgid "No Name error."
  -msgstr ""
  -
  -#: ../plugin/bbs.php:997
  -msgid "No Subject error."
  -msgstr ""
  -
  -#: ../plugin/bbs.php:1009 ../plugin/Comment.php:201 ../plugin/Gallery.php:182
  -#: ../wikilib.php:1748 ../wikilib.php:1958
  -msgid ""
  -"Sorry, can not save page because some messages are blocked in this wiki."
  -msgstr ""
  -
  -# ../plugin/Vote.php:109
  -#: ../plugin/bbs.php:1025
  -msgid "New post added successfully"
  -msgstr ""
  -
  -#: ../plugin/BlogChanges.php:203
  -msgid "Category: "
  -msgstr ""
  -
  -# ../locale/dummy.php:7
  -#: ../plugin/BlogChanges.php:205 ../locale/dummy.php:7
  -msgid "BlogChanges"
  -msgstr "ModificationsBlog"
  -
  -# ../wikilib.php:1483
  -#: ../plugin/BlogChanges.php:251
  -#, c-format
  -msgid "Invalid category expr \"%s\""
  -msgstr ""
  -
  -# ../plugin/processor/blog.php:43 ../plugin/processor/blog.php:45
  -#: ../plugin/BlogChanges.php:384 ../plugin/BlogChanges.php:386
  -#: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
  -msgid "Anonymous"
  -msgstr "Anonyme"
  -
  -# ../plugin/processor/blog.php:78
  -#: ../plugin/BlogChanges.php:417 ../plugin/processor/blog.php:88
  -#, c-format
  -msgid "%d comment"
  -msgstr "%d commentaire"
  -
  -# ../plugin/processor/blog.php:78
  -#: ../plugin/BlogChanges.php:417 ../plugin/processor/blog.php:88
  -#, c-format
  -msgid "%d comments"
  -msgstr "%d commentaires"
  -
  -# ../plugin/processor/blog.php:70
  -#: ../plugin/BlogChanges.php:419 ../plugin/Comment.php:218
  -#: ../plugin/processor/blog.php:80
  -msgid "Add comment"
  -msgstr "Ajouter un commentaire"
  -
  -# ../plugin/processor/blog.php:89
  -#: ../plugin/BlogChanges.php:429 ../plugin/processor/blog.php:99
  -msgid "track back"
  -msgstr ""
  -
  -# ../plugin/BlogChanges.php:226
  -#: ../plugin/BlogChanges.php:449
  -msgid "Previous"
  -msgstr "Pr?c?dent"
  -
  -#: ../plugin/BlogChanges.php:453
  -msgid "Next"
  -msgstr ""
  -
   #: ../plugin/Blog.php:84
   #, c-format
   msgid "Blog cache of \"%s\" is refreshed"
  @@ -343,7 +114,7 @@
   msgid "Title"
   msgstr "titre"
   
  -#: ../plugin/Blog.php:271 ../wikilib.php:1218
  +#: ../plugin/Blog.php:271 ../wikilib.php:1211
   msgid "GUI"
   msgstr ""
   
  @@ -357,37 +128,57 @@
   msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
   msgstr "<b>Une r?gle horizontale</b> ---- ne s'applique pas au mode blog."
   
  -# ../wiki.php:3024
  -#: ../plugin/bookmark.php:33
  -msgid "Invalid bookmark!"
  +#: ../plugin/BlogChanges.php:203
  +msgid "Category: "
   msgstr ""
   
  -#: ../plugin/cacheadmin.php:105
  -msgid "You are not WikiMaster!!"
  -msgstr ""
  +# ../locale/dummy.php:7
  +#: ../plugin/BlogChanges.php:205 ../locale/dummy.php:7
  +msgid "BlogChanges"
  +msgstr "ModificationsBlog"
   
  -#: ../plugin/cacheadmin.php:120
  -msgid "Clear cache dirs"
  +# ../wikilib.php:1483
  +#: ../plugin/BlogChanges.php:251
  +#, c-format
  +msgid "Invalid category expr \"%s\""
   msgstr ""
   
  -#: ../plugin/chat.php:37
  -msgid "No messages"
  -msgstr ""
  +# ../plugin/processor/blog.php:43 ../plugin/processor/blog.php:45
  +#: ../plugin/BlogChanges.php:384 ../plugin/BlogChanges.php:386
  +#: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
  +msgid "Anonymous"
  +msgstr "Anonyme"
   
  -#: ../plugin/chmod.php:18
  +# ../plugin/processor/blog.php:78
  +#: ../plugin/BlogChanges.php:417 ../plugin/processor/blog.php:88
   #, c-format
  -msgid "Permission of \"%s\" changed !"
  -msgstr ""
  +msgid "%d comment"
  +msgstr "%d commentaire"
   
  -# ../wiki.php:3021
  -#: ../plugin/chmod.php:24
  +# ../plugin/processor/blog.php:78
  +#: ../plugin/BlogChanges.php:417 ../plugin/processor/blog.php:88
   #, c-format
  -msgid "Fail to chmod \"%s\" !"
  -msgstr "Impossible de pouvoir \"%s\" !"
  +msgid "%d comments"
  +msgstr "%d commentaires"
   
  -#: ../plugin/chmod.php:35
  -#, c-format
  -msgid "Change permission of \"%s\""
  +# ../plugin/processor/blog.php:70
  +#: ../plugin/BlogChanges.php:419 ../plugin/Comment.php:218
  +#: ../plugin/processor/blog.php:80
  +msgid "Add comment"
  +msgstr "Ajouter un commentaire"
  +
  +# ../plugin/processor/blog.php:89
  +#: ../plugin/BlogChanges.php:429 ../plugin/processor/blog.php:99
  +msgid "track back"
  +msgstr ""
  +
  +# ../plugin/BlogChanges.php:226
  +#: ../plugin/BlogChanges.php:449
  +msgid "Previous"
  +msgstr "Pr?c?dent"
  +
  +#: ../plugin/BlogChanges.php:453
  +msgid "Next"
   msgstr ""
   
   # ../plugin/OeKaki.php:118
  @@ -419,8 +210,8 @@
   msgstr "commentaire"
   
   # ../wikilib.php:482
  -#: ../plugin/Comment.php:94 ../wikilib.php:949 ../wikilib.php:1212
  -#: ../wikilib.php:1887 ../wikilib.php:1984 ../monisetup.php:1311
  +#: ../plugin/Comment.php:94 ../wikilib.php:942 ../wikilib.php:1205
  +#: ../wikilib.php:1880 ../wikilib.php:1977 ../monisetup.php:1307
   msgid "Preview"
   msgstr "Pr?visualisation"
   
  @@ -445,15 +236,21 @@
   msgstr ""
   
   #: ../plugin/Comment.php:174 ../plugin/userform.php:121
  -#: ../plugin/userform.php:184 ../plugin/userform.php:207 ../wikilib.php:1937
  +#: ../plugin/userform.php:184 ../plugin/userform.php:207 ../wikilib.php:1930
   msgid "Invalid ticket !"
   msgstr ""
   
   #: ../plugin/Comment.php:179 ../plugin/userform.php:123
  -#: ../plugin/userform.php:209 ../wikilib.php:1942
  +#: ../plugin/userform.php:209 ../wikilib.php:1935
   msgid "You need a ticket !"
   msgstr ""
   
  +#: ../plugin/Comment.php:201 ../plugin/Gallery.php:182 ../plugin/bbs.php:1009
  +#: ../wikilib.php:1741 ../wikilib.php:1951
  +msgid ""
  +"Sorry, can not save page because some messages are blocked in this wiki."
  +msgstr ""
  +
   # ../wikilib.php:748 ../wikilib.php:777
   #: ../plugin/Comment.php:207
   msgid "Preview comment"
  @@ -470,28 +267,19 @@
   msgid "Comment added successfully"
   msgstr ""
   
  -# ../plugin/css.php:29 ../plugin/css.php:37
  -#: ../plugin/css.php:34 ../plugin/css.php:42
  -msgid "Back to UserPreferences"
  -msgstr "Retour ? UserPreferences"
  -
  -#: ../plugin/css.php:68
  -msgid "CSS disabled !"
  -msgstr ""
  -
   # ../wiki.php:2211 ../wiki.php:2360
  -#: ../plugin/Diff.php:411 ../plugin/Info.php:251
  +#: ../plugin/Diff.php:411 ../plugin/Info.php:251 ../plugin/Stat.php:125
   msgid "No older revisions available"
   msgstr "Aucune r?vision plus ancienne disponible"
   
   # ../wikilib.php:803
  -#: ../plugin/Diff.php:416 ../plugin/Info.php:257 ../plugin/rcsexport.php:13
  -#: ../plugin/rcsimport.php:13
  +#: ../plugin/Diff.php:416 ../plugin/Info.php:257 ../plugin/Stat.php:131
  +#: ../plugin/rcsexport.php:13 ../plugin/rcsimport.php:13
   msgid "Version info is not available in this wiki"
   msgstr ""
   
   # ../wiki.php:2338 ../wiki.php:2373 ../wikilib.php:770
  -#: ../plugin/Diff.php:428 ../wikilib.php:1907
  +#: ../plugin/Diff.php:428 ../wikilib.php:1900
   msgid "No difference found"
   msgstr "Aucune diff?rence trouv?"
   
  @@ -555,6 +343,54 @@
   msgid "%d day(s) passed from %s."
   msgstr "%d jour(s) se sont pass?s depuis %s."
   
  +#: ../plugin/EditHints.php:39
  +msgid "Editing Hints"
  +msgstr ""
  +
  +#: ../plugin/EditHints.php:44
  +msgid "See more help:"
  +msgstr ""
  +
  +#: ../plugin/EditHints.php:44
  +msgid "Close Editing Hints"
  +msgstr ""
  +
  +# ../wikilib.php:368
  +#: ../plugin/EditHints.php:53
  +msgid ""
  +"<b>Emphasis:</b> '''<strong>bold</strong>''', ''<i>italics</i>''<br />\n"
  +"<b>Headings:</b> ==<span class='space'> </span>Title 2<span class='space'> </"
  +"span>==; ===<span class='space'> </span>Title 3<span class='space'> </"
  +"span>===; ...<br />\n"
  +"<b>Lists:</b> <span class='space'> </span>*<span class='space'> </span> "
  +"space and one of * bullets; <span class='space'> </span>1.<span "
  +"class='space'> </span>numbered items; <span class='space'> </span> space "
  +"alone indents.<br />\n"
  +"<b>Links:</b> [[double bracketed words]]; [bracketed words]; "
  +"JoinCapitalizedWords; [\"brackets and double quotes\"];\n"
  +"url; [url]; [url label].<br />\n"
  +"<b>Tables</b>: || cell text |||| cell text spanning two columns ||;\n"
  +"no trailing white space allowed after tables or titles.<br />\n"
  +msgstr ""
  +"<b>Accentuation :</b> ''<i>italique</i>''; '''<b>gras</b>'''; "
  +"'''''<b><i>italique gras</i></b>''''';\n"
  +"''<i>m?lange de '''<b>gras</b>''' et italique</i>''; ---- r?gle horizontale."
  +"<br />\n"
  +"<b>Ent?tes :</b> ==<span class='space'> </span>Titre 2<span class='space'> </"
  +"span>==; ===<span class='space'> </span>Titre 3<span class='space'> </"
  +"span>===;\n"
  +"====<span class='space'> </span>Titre 4<span class='space'> </"
  +"span>====; ...\n"
  +"<b>Listes :</b> un espace et une des * puces; 1., a., A., i., I. ?num?"
  +"rations ;\n"
  +"1.#n commence ? partir de n; l'espace seul provoque une indentation.<br />\n"
  +"<b>Liens :</b> MotsAttach?sEnMajuscules; [\"crochets et guillemets\"];\n"
  +"[mots entre crochets];\n"
  +"url; [url]; [url label].<br />\n"
  +"<b>Tableaux</b> : || cellule de texte |||| cellule de texte s'?tendant sur "
  +"deux colonnes ||;\n"
  +"Les espaces apr?s un tableau ou un titre ne sont pas autoris?s.<br />\n"
  +
   #: ../plugin/FastSearch.php:37
   msgid "Fast search"
   msgstr ""
  @@ -589,18 +425,18 @@
   
   # ../plugin/FastSearch.php:125
   #: ../plugin/FastSearch.php:177 ../plugin/FullSearch.php:38
  -#: ../wikilib.php:1669
  +#: ../wikilib.php:1662
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr "Trouv? %s s'appariant avec %s sur un total de %s pages"
   
   #: ../plugin/FastSearch.php:179 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1671
  +#: ../wikilib.php:1664
   msgid "page"
   msgstr ""
   
   #: ../plugin/FastSearch.php:179 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1671
  +#: ../wikilib.php:1664
   msgid "pages"
   msgstr ""
   
  @@ -609,11 +445,6 @@
   msgid "Show all %d results"
   msgstr ""
   
  -# ../plugin/format.php:16
  -#: ../plugin/format.php:17
  -msgid "It is a XML format !"
  -msgstr "C'est un format XML !"
  -
   # ../wikilib.php:1479
   #: ../plugin/FullSearch.php:15
   #, c-format
  @@ -631,7 +462,7 @@
   msgstr ""
   
   #: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4686
  -#: ../wikilib.php:1196
  +#: ../wikilib.php:1189
   msgid "Refresh"
   msgstr ""
   
  @@ -649,7 +480,7 @@
   "page.\n"
   
   #: ../plugin/FullSearch.php:52 ../wiki.php:5660 ../wiki.php:5668
  -#: ../wikilib.php:1679
  +#: ../wikilib.php:1672
   msgid "here"
   msgstr ""
   
  @@ -661,7 +492,7 @@
   msgid "Case-sensitive searching"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:77 ../wikilib.php:3154 ../wikilib.php:3230
  +#: ../plugin/FullSearch.php:77 ../wikilib.php:3147 ../wikilib.php:3223
   msgid "Go"
   msgstr ""
   
  @@ -670,7 +501,7 @@
   msgstr ""
   
   # ../wikilib.php:1483
  -#: ../plugin/FullSearch.php:144 ../wikilib.php:3175
  +#: ../plugin/FullSearch.php:144 ../wikilib.php:3168
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "Expression de recherche \"%s\" invalide"
  @@ -691,8 +522,8 @@
   msgstr ""
   
   # ../wikilib.php:769
  -#: ../plugin/Gallery.php:409 ../plugin/Gallery.php:413 ../wikilib.php:1735
  -#: ../wikilib.php:1905 ../wikilib.php:1912
  +#: ../plugin/Gallery.php:409 ../plugin/Gallery.php:413 ../wikilib.php:1728
  +#: ../wikilib.php:1898 ../wikilib.php:1905
   #, c-format
   msgid "Go back or return to %s"
   msgstr "Revenir en arri?re ou retourner ? %s"
  @@ -706,10 +537,6 @@
   msgid "Comments is added"
   msgstr ""
   
  -#: ../plugin/html2pdf.php:30
  -msgid "The TCPDF class not found!"
  -msgstr ""
  -
   #: ../plugin/ImportUrl.php:132
   msgid "Import URL"
   msgstr ""
  @@ -892,7 +719,7 @@
   msgstr ""
   
   # ../wikilib.php:672 ../wikilib.php:1472
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1556 ../wikilib.php:3162
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1549 ../wikilib.php:3155
   msgid "Use more specific text"
   msgstr "Utiliser un texte plus sp?cifique"
   
  @@ -923,16 +750,676 @@
   msgid "If you can't find this page, "
   msgstr ""
   
  -#: ../plugin/LikePages.php:168
  -msgid "You are strongly recommened to find it in MetaWikis. "
  +#: ../plugin/LikePages.php:168
  +msgid "You are strongly recommened to find it in MetaWikis. "
  +msgstr ""
  +
  +#: ../plugin/LikePages.php:169
  +msgid "Search all MetaWikis"
  +msgstr ""
  +
  +#: ../plugin/LikePages.php:170
  +msgid "Slow Slow"
  +msgstr ""
  +
  +# ../plugin/man_get.php:23
  +#: ../plugin/Navigation.php:19
  +msgid "No Index page found"
  +msgstr ""
  +
  +# ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
  +#: ../plugin/OeKaki.php:36
  +msgid "Draw a new picture"
  +msgstr ""
  +
  +# ../plugin/OeKaki.php:118
  +#: ../plugin/OeKaki.php:118
  +msgid "Create new picture"
  +msgstr "Cr?er un nouveau dessin"
  +
  +# ../plugin/OeKaki.php:125
  +#: ../plugin/OeKaki.php:127
  +msgid "Edit Image"
  +msgstr "?diter l'image"
  +
  +#: ../plugin/PluginInfo.php:29
  +#, c-format
  +msgid "Total %s plugin activated."
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:34
  +#, c-format
  +msgid "%s is internal plugin."
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:36
  +#, c-format
  +msgid "%s plugin is not found."
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:50 ../plugin/admin.php:136
  +msgid "Description"
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:54
  +msgid "Version"
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:56 ../plugin/admin.php:139
  +msgid "Author"
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:58 ../plugin/admin.php:141
  +msgid "License"
  +msgstr ""
  +
  +# ../plugin/VisualTour.php:59
  +#: ../plugin/PluginInfo.php:60 ../plugin/admin.php:143
  +msgid "Depend"
  +msgstr ""
  +
  +#: ../plugin/PluginInfo.php:64 ../plugin/admin.php:147
  +msgid "URL"
  +msgstr ""
  +
  +#: ../plugin/Rating.php:60
  +msgid "Awful!"
  +msgstr ""
  +
  +#: ../plugin/Rating.php:61
  +msgid "Not the worst ever."
  +msgstr ""
  +
  +#: ../plugin/Rating.php:62
  +msgid "Not bad!"
  +msgstr ""
  +
  +#: ../plugin/Rating.php:63
  +msgid "Useful!"
  +msgstr ""
  +
  +#: ../plugin/Rating.php:64
  +msgid "Very Gooood!"
  +msgstr ""
  +
  +# ../plugin/Vote.php:66 ../plugin/security/needtologin.php:25
  +# ../plugin/security/needtologin.php:35
  +#: ../plugin/Rating.php:86 ../plugin/Vote.php:67
  +#: ../plugin/security/community.php:27 ../plugin/security/community.php:37
  +#: ../plugin/security/community.php:47 ../plugin/security/community.php:62
  +#: ../plugin/security/mustlogin.php:29 ../plugin/security/mustlogin.php:40
  +#: ../plugin/security/mustlogin.php:51 ../plugin/security/mustlogin.php:67
  +#: ../plugin/security/needtologin.php:29 ../plugin/security/needtologin.php:40
  +#: ../plugin/security/needtologin.php:51 ../plugin/security/nforge.php:42
  +#: ../plugin/security/nforge.php:53 ../plugin/security/nforge.php:64
  +#: ../plugin/security/userbased.php:62
  +msgid "Please Login or make your ID on this Wiki ;)"
  +msgstr "Merci de vous connecter ou de construire un ID sur ce Wiki ;)"
  +
  +#: ../plugin/Rating.php:190
  +msgid "Invalid rating request !"
  +msgstr ""
  +
  +# ../plugin/Vote.php:109
  +#: ../plugin/Rating.php:205
  +msgid "Rating successfully !"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:41
  +#, c-format
  +msgid "%d minute ago"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:43
  +#, c-format
  +msgid "%d hours ago"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:45
  +#, c-format
  +msgid "%d days ago"
  +msgstr ""
  +
  +# ../locale/dummy.php:3
  +#: ../plugin/RecentChanges.php:86
  +msgid "Recent Changes"
  +msgstr "ChangementsR?cents"
  +
  +# ../locale/dummy.php:7
  +#: ../plugin/RecentChanges.php:126
  +msgid "Change Date"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:131
  +msgid "Hits"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:182
  +msgid "Show changes for "
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:187
  +msgid "days ago"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:293
  +msgid "set bookmark"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:298
  +msgid "Bookmark"
  +msgstr ""
  +
  +# ../locale/dummy.php:7
  +#: ../plugin/RecentChanges.php:375
  +#, c-format
  +msgid "%s changes"
  +msgstr ""
  +
  +#: ../plugin/SWFUpload.php:137
  +msgid "Files..."
  +msgstr ""
  +
  +#: ../plugin/SWFUpload.php:138 ../plugin/UploadFile.php:443
  +#: ../plugin/UploadForm.php:270
  +msgid "Upload files"
  +msgstr ""
  +
  +#: ../plugin/SWFUpload.php:139
  +msgid "Cancel All files"
  +msgstr ""
  +
  +# ../plugin/man_get.php:23
  +#: ../plugin/SlideShow.php:28
  +msgid "No page found"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:101
  +msgid "Start:"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:110
  +msgid "End:"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:120 ../plugin/pageview.php:75
  +msgid "Next:"
  +msgstr ""
  +
  +# ../wikilib.php:482
  +#: ../plugin/SlideShow.php:130
  +msgid "Prev:"
  +msgstr ""
  +
  +#: ../plugin/SlideShow.php:137
  +msgid "Return"
  +msgstr ""
  +
  +#: ../plugin/Stat.php:22
  +msgid "Diff"
  +msgstr ""
  +
  +# ../wiki.php:2110
  +#: ../plugin/Stat.php:26
  +msgid "Revision Statistics"
  +msgstr ""
  +
  +# ../wikilib.php:484
  +#: ../plugin/SystemInfo.php:16
  +msgid "Number of Pages"
  +msgstr ""
  +
  +#: ../plugin/SystemInfo.php:17
  +msgid "HTTP Server Version"
  +msgstr ""
  +
  +#: ../plugin/SystemInfo.php:18
  +msgid "MoniWiki Version"
  +msgstr ""
  +
  +#: ../plugin/SystemInfo.php:19
  +msgid "PHP Version"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:57
  +msgid "BackLinks"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:61
  +msgid "Keywords"
  +msgstr ""
  +
  +# ../plugin/minilogin.php:30
  +#: ../plugin/Tour.php:70
  +#, c-format
  +msgid " from %s"
  +msgstr ""
  +
  +# ../plugin/minilogin.php:30
  +#: ../plugin/Tour.php:73
  +#, c-format
  +msgid "%s Tour %s"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:121
  +msgid "links"
  +msgstr ""
  +
  +# ../plugin/VisualTour.php:59
  +#: ../plugin/Tour.php:123
  +msgid "deeper"
  +msgstr ""
  +
  +# ../plugin/minilogin.php:30
  +#: ../plugin/Tour.php:124
  +#, c-format
  +msgid "More %s or more %s"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:139
  +#, c-format
  +msgid "Total %d related keywords"
  +msgstr ""
  +
  +#: ../plugin/Tour.php:142
  +#, c-format
  +msgid "Total %d related pages"
  +msgstr ""
  +
  +# ../plugin/TwinPages.php:13
  +#: ../plugin/TwinPages.php:13
  +#, c-format
  +msgid "TwinPages of %s"
  +msgstr "TwinPages de %s"
  +
  +# ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  +#: ../plugin/TwinPages.php:20 ../wiki.php:5645
  +msgid "See [TwinPages]: "
  +msgstr "Voir [TwinPages]: "
  +
  +# ../plugin/TwinPages.php:20
  +#: ../plugin/TwinPages.php:22
  +msgid "No TwinPages found."
  +msgstr "Aucune TwinPages trouv?"
  +
  +#: ../plugin/UploadFile.php:11
  +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:13
  +msgid ""
  +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in "
  +"the HTML form"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:15
  +msgid "The uploaded file was only partially uploaded"
  +msgstr ""
  +
  +# ../wikilib.php:557 ../wikilib.php:559
  +#: ../plugin/UploadFile.php:17
  +msgid "No file was uploaded"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:19
  +msgid "Missing a temporary folder"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:21
  +msgid "Failed to write file to disk"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:23
  +msgid "File upload stopped by extension"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:25
  +msgid "Unknown upload error"
  +msgstr ""
  +
  +# ../wikilib.php:519
  +#: ../plugin/UploadFile.php:184 ../plugin/UploadFile.php:198
  +#, c-format
  +msgid "The %s type of %s is not allowed to upload"
  +msgstr ""
  +
  +# ../wikilib.php:519
  +#: ../plugin/UploadFile.php:200
  +#, c-format
  +msgid "%s is not allowed to upload"
  +msgstr "%s n'est pas une action valide"
  +
  +#: ../plugin/UploadFile.php:255
  +#, c-format
  +msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:273
  +msgid "ERROR:"
  +msgstr ""
  +
  +# ../wikilib.php:887
  +#: ../plugin/UploadFile.php:305
  +#, c-format
  +msgid "File \"%s\" is uploaded successfully"
  +msgstr ""
  +
  +# ../wikilib.php:887
  +#: ../plugin/UploadFile.php:372
  +msgid "Files are uploaded successfully"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:408
  +msgid "Multi upload form"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:421
  +msgid "Replace original file"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:422
  +msgid "Rename if it already exist"
  +msgstr ""
  +
  +# ../plugin/rename.php:27
  +#: ../plugin/UploadFile.php:427 ../plugin/rename.php:69
  +msgid "Rename"
  +msgstr "Renommer"
  +
  +#: ../plugin/UploadFile.php:432
  +msgid "Upload"
  +msgstr ""
  +
  +# ../plugin/minilogin.php:30
  +#: ../plugin/UploadFile.php:435
  +#, c-format
  +msgid "or %s."
  +msgstr "ou %s"
  +
  +#: ../plugin/UploadFile.php:435
  +msgid "Multiple Upload files"
  +msgstr ""
  +
  +#: ../plugin/UploadForm.php:19
  +msgid "Successfully Uploaded"
  +msgstr ""
  +
  +#: ../plugin/UploadForm.php:20
  +msgid "Choose File"
  +msgstr ""
  +
  +#: ../plugin/UploadForm.php:268
  +msgid "add files"
  +msgstr ""
  +
  +#: ../plugin/UploadForm.php:269
  +msgid "add a file"
  +msgstr ""
  +
  +#: ../plugin/UploadForm.php:271
  +msgid "Reset"
  +msgstr ""
  +
  +#: ../plugin/UploadForm.php:272
  +msgid "Attachments"
  +msgstr ""
  +
  +# ../plugin/rename.php:27
  +#: ../plugin/UploadedFiles.php:303
  +msgid "File name"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:304
  +msgid "Size"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:355
  +msgid "Next page &raquo;"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:357
  +msgid "&laquo; First page"
  +msgstr ""
  +
  +#: ../plugin/UploadedFiles.php:448
  +#, c-format
  +msgid "Total %d files"
  +msgstr ""
  +
  +# ../plugin/rename.php:36
  +#: ../plugin/UploadedFiles.php:453 ../plugin/rcsimport.php:32
  +#: ../plugin/rcsimport.php:88 ../plugin/rename.php:77 ../plugin/revert.php:82
  +#: ../plugin/userinfo.php:37 ../wikilib.php:1387 ../wikilib.php:2395
  +msgid "Password"
  +msgstr "Mot de passe"
  +
  +# ../wikilib.php:550
  +#: ../plugin/UploadedFiles.php:454 ../wikilib.php:1365
  +msgid "Delete selected files"
  +msgstr "Effacer les fichiers s?lectionn?s"
  +
  +# ../plugin/VisualTour.php:55
  +#: ../plugin/VisualTour.php:133
  +msgid "Normal"
  +msgstr ""
  +
  +# ../plugin/VisualTour.php:57
  +#: ../plugin/VisualTour.php:135
  +msgid "Wider"
  +msgstr "Plus large"
  +
  +# ../plugin/VisualTour.php:59
  +#: ../plugin/VisualTour.php:137
  +msgid "Deeper"
  +msgstr "Plus profond"
  +
  +# ../plugin/Vote.php:109
  +#: ../plugin/Vote.php:113
  +msgid "Voted successfully"
  +msgstr "Vote r?ussi"
  +
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2904
  +msgid "Others"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:15
  +msgid "ACL is not enabled on this Wiki"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:21
  +msgid "Your ACL Info"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:23
  +msgid "You are wiki owner"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:25
  +msgid "You are wiki master"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:27
  +msgid "Allowed actions"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:32
  +msgid "Denied actions"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:38
  +msgid "Protected actions"
  +msgstr ""
  +
  +#: ../plugin/admin.php:191
  +msgid "Enabled plugins"
  +msgstr ""
  +
  +#: ../plugin/admin.php:193
  +msgid "Disabled plugins"
  +msgstr ""
  +
  +#: ../plugin/admin.php:201
  +msgid "Enabled processors"
  +msgstr ""
  +
  +#: ../plugin/admin.php:203
  +msgid "Disabled processors"
  +msgstr ""
  +
  +#: ../plugin/admin.php:206
  +msgid "Plugin/Processor settings are updated"
  +msgstr ""
  +
  +#: ../plugin/admin.php:212
  +msgid "Enable/disable plugins and processors"
  +msgstr ""
  +
  +# ../locale/dummy.php:7
  +#: ../plugin/atom.php:64 ../plugin/rss_rc.php:62
  +msgid "show changes"
  +msgstr ""
  +
  +# ../wikilib.php:887
  +#: ../plugin/backup.php:42
  +msgid "Your wiki is backuped successfully"
  +msgstr ""
  +
  +#: ../plugin/backup.php:49
  +msgid "Backup failed !"
  +msgstr ""
  +
  +# ../plugin/backup.php:46
  +#: ../plugin/backup.php:54
  +msgid "Did you want to Backup your wiki ?"
  +msgstr "Voulez vous faire une sauvegarde de votre wiki ?"
  +
  +#: ../plugin/bbs.php:493
  +msgid "This bbs does not exists yet. Please save this page first"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:617
  +msgid "No"
  +msgstr ""
  +
  +# ../locale/dummy.php:6 ../wiki.php:2553
  +#: ../plugin/bbs.php:626
  +msgid "Edit"
  +msgstr ""
  +
  +# ../locale/dummy.php:5
  +#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1388
  +msgid "Delete"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:657
  +msgid "Please check article numbers."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:737
  +msgid "More"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:782
  +msgid "New"
  +msgstr ""
  +
  +# ../plugin/rename.php:27
  +#: ../plugin/bbs.php:784
  +msgid "Read"
  +msgstr "Renommer"
  +
  +#: ../plugin/bbs.php:800
  +#, c-format
  +msgid "Total %s articles."
  +msgstr ""
  +
  +# ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
  +# c-format
  +#: ../plugin/bbs.php:836
  +#, c-format
  +msgid "Your IP address is not allowed to %s at this BBS"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:890
  +msgid "Successfully deleted."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:922
  +msgid "Fail to post comment."
  +msgstr ""
  +
  +# ../wikilib.php:540
  +#: ../plugin/bbs.php:932
  +#, c-format
  +msgid "The article %s will be deleted."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:974
  +msgid "Invalid HomePage address."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:987
  +msgid "No Name error."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:997
  +msgid "No Subject error."
  +msgstr ""
  +
  +# ../plugin/Vote.php:109
  +#: ../plugin/bbs.php:1025
  +msgid "New post added successfully"
  +msgstr ""
  +
  +# ../wiki.php:3024
  +#: ../plugin/bookmark.php:33
  +msgid "Invalid bookmark!"
  +msgstr ""
  +
  +#: ../plugin/cacheadmin.php:105
  +msgid "You are not WikiMaster!!"
  +msgstr ""
  +
  +#: ../plugin/cacheadmin.php:120
  +msgid "Clear cache dirs"
  +msgstr ""
  +
  +#: ../plugin/chat.php:37
  +msgid "No messages"
  +msgstr ""
  +
  +#: ../plugin/chmod.php:18
  +#, c-format
  +msgid "Permission of \"%s\" changed !"
  +msgstr ""
  +
  +# ../wiki.php:3021
  +#: ../plugin/chmod.php:24
  +#, c-format
  +msgid "Fail to chmod \"%s\" !"
  +msgstr "Impossible de pouvoir \"%s\" !"
  +
  +#: ../plugin/chmod.php:35
  +#, c-format
  +msgid "Change permission of \"%s\""
  +msgstr ""
  +
  +# ../plugin/css.php:29 ../plugin/css.php:37
  +#: ../plugin/css.php:34 ../plugin/css.php:42
  +msgid "Back to UserPreferences"
  +msgstr "Retour ? UserPreferences"
  +
  +#: ../plugin/css.php:68
  +msgid "CSS disabled !"
   msgstr ""
   
  -#: ../plugin/LikePages.php:169
  -msgid "Search all MetaWikis"
  -msgstr ""
  +# ../plugin/format.php:16
  +#: ../plugin/format.php:17
  +msgid "It is a XML format !"
  +msgstr "C'est un format XML !"
   
  -#: ../plugin/LikePages.php:170
  -msgid "Slow Slow"
  +#: ../plugin/html2pdf.php:30
  +msgid "The TCPDF class not found!"
   msgstr ""
   
   # ../plugin/login.php:24
  @@ -976,7 +1463,7 @@
   msgstr ""
   
   # ../plugin/minilogin.php:22 ../wikilib.php:1076
  -#: ../plugin/minilogin.php:18 ../wikilib.php:2487
  +#: ../plugin/minilogin.php:18 ../wikilib.php:2480
   msgid "Login or Join"
   msgstr "Se connecter ou se joindre ?"
   
  @@ -1011,11 +1498,6 @@
   msgid "Local translation files are successfully translated !\n"
   msgstr ""
   
  -# ../plugin/man_get.php:23
  -#: ../plugin/Navigation.php:19
  -msgid "No Index page found"
  -msgstr ""
  -
   # ../plugin/OeKaki.php:118
   #: ../plugin/new.php:13 ../plugin/new.php:28
   msgid "Create a new page"
  @@ -1030,21 +1512,6 @@
   msgid "Normalize this page name"
   msgstr ""
   
  -# ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
  -#: ../plugin/OeKaki.php:36
  -msgid "Draw a new picture"
  -msgstr ""
  -
  -# ../plugin/OeKaki.php:118
  -#: ../plugin/OeKaki.php:118
  -msgid "Create new picture"
  -msgstr "Cr?er un nouveau dessin"
  -
  -# ../plugin/OeKaki.php:125
  -#: ../plugin/OeKaki.php:127
  -msgid "Edit Image"
  -msgstr "?diter l'image"
  -
   #: ../plugin/pagelist.php:118 ../plugin/pagelist.php:135
   #, c-format
   msgid "[%sh %sm ago]"
  @@ -1054,29 +1521,6 @@
   msgid "First:"
   msgstr ""
   
  -#: ../plugin/pageview.php:75 ../plugin/SlideShow.php:120
  -msgid "Next:"
  -msgstr ""
  -
  -#: ../plugin/PluginInfo.php:29
  -#, c-format
  -msgid "Total %s plugin activated."
  -msgstr ""
  -
  -#: ../plugin/PluginInfo.php:34
  -#, c-format
  -msgid "%s is internal plugin."
  -msgstr ""
  -
  -#: ../plugin/PluginInfo.php:36
  -#, c-format
  -msgid "%s plugin is not found."
  -msgstr ""
  -
  -#: ../plugin/PluginInfo.php:54
  -msgid "Version"
  -msgstr ""
  -
   #: ../plugin/print.php:28
   #, c-format
   msgid "Retrieved from %s"
  @@ -1131,66 +1575,12 @@
   msgid "Do you want to customize your quicklinks ?"
   msgstr "Voulez vous mettre ? jour vos liens rapides ?"
   
  -#: ../plugin/Rating.php:60
  -msgid "Awful!"
  -msgstr ""
  -
  -#: ../plugin/Rating.php:61
  -msgid "Not the worst ever."
  -msgstr ""
  -
  -#: ../plugin/Rating.php:62
  -msgid "Not bad!"
  -msgstr ""
  -
  -#: ../plugin/Rating.php:63
  -msgid "Useful!"
  -msgstr ""
  -
  -#: ../plugin/Rating.php:64
  -msgid "Very Gooood!"
  -msgstr ""
  -
  -# ../plugin/Vote.php:66 ../plugin/security/needtologin.php:25
  -# ../plugin/security/needtologin.php:35
  -#: ../plugin/Rating.php:86 ../plugin/security/community.php:27
  -#: ../plugin/security/community.php:37 ../plugin/security/community.php:47
  -#: ../plugin/security/community.php:62 ../plugin/security/mustlogin.php:29
  -#: ../plugin/security/mustlogin.php:40 ../plugin/security/mustlogin.php:51
  -#: ../plugin/security/mustlogin.php:67 ../plugin/security/needtologin.php:29
  -#: ../plugin/security/needtologin.php:40 ../plugin/security/needtologin.php:51
  -#: ../plugin/security/userbased.php:62 ../plugin/Vote.php:67
  -msgid "Please Login or make your ID on this Wiki ;)"
  -msgstr "Merci de vous connecter ou de construire un ID sur ce Wiki ;)"
  -
  -#: ../plugin/Rating.php:190
  -msgid "Invalid rating request !"
  -msgstr ""
  -
  -# ../plugin/Vote.php:109
  -#: ../plugin/Rating.php:205
  -msgid "Rating successfully !"
  -msgstr ""
  -
   # ../plugin/Blog.php:178
   #: ../plugin/rawblog.php:63 ../plugin/rawblog.php:73
   #, c-format
   msgid "Delete Blog entry \"%s\""
   msgstr ""
   
  -# ../plugin/rename.php:36
  -#: ../plugin/rcsimport.php:32 ../plugin/rcsimport.php:88
  -#: ../plugin/rename.php:77 ../plugin/revert.php:82
  -#: ../plugin/UploadedFiles.php:453 ../plugin/userinfo.php:37
  -#: ../wikilib.php:1394 ../wikilib.php:2402
  -msgid "Password"
  -msgstr "Mot de passe"
  -
  -# ../plugin/rename.php:27
  -#: ../plugin/rcsimport.php:76
  -msgid "Page name"
  -msgstr ""
  -
   # ../wikilib.php:803
   #: ../plugin/rcs.php:13
   #, c-format
  @@ -1218,6 +1608,11 @@
   msgid "Only WikiMaster can execute rcs"
   msgstr ""
   
  +# ../plugin/rename.php:27
  +#: ../plugin/rcsimport.php:76
  +msgid "Page name"
  +msgstr ""
  +
   #: ../plugin/rcspurge.php:24
   msgid "Invalid rcspurge range"
   msgstr ""
  @@ -1239,57 +1634,6 @@
   msgid "BlogChanges at %s"
   msgstr "ModificationsBlog at %s"
   
  -#: ../plugin/RecentChanges.php:41
  -#, c-format
  -msgid "%d minute ago"
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:43
  -#, c-format
  -msgid "%d hours ago"
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:45
  -#, c-format
  -msgid "%d days ago"
  -msgstr ""
  -
  -# ../locale/dummy.php:3
  -#: ../plugin/RecentChanges.php:86
  -msgid "Recent Changes"
  -msgstr "ChangementsR?cents"
  -
  -# ../locale/dummy.php:7
  -#: ../plugin/RecentChanges.php:126
  -msgid "Change Date"
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:131
  -msgid "Hits"
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:182
  -msgid "Show changes for "
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:187
  -msgid "days ago"
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:293
  -msgid "set bookmark"
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:298
  -msgid "Bookmark"
  -msgstr ""
  -
  -# ../locale/dummy.php:7
  -#: ../plugin/RecentChanges.php:375
  -#, c-format
  -msgid "%s changes"
  -msgstr ""
  -
   #: ../plugin/referer.php:139
   msgid "Referer history"
   msgstr ""
  @@ -1333,11 +1677,6 @@
   msgid "New name:"
   msgstr ""
   
  -# ../plugin/rename.php:27
  -#: ../plugin/rename.php:69 ../plugin/UploadFile.php:427
  -msgid "Rename"
  -msgstr "Renommer"
  -
   #: ../plugin/rename.php:74
   msgid "Rename and fix Backlinks"
   msgstr ""
  @@ -1348,7 +1687,7 @@
   msgstr "Seulement le WikiMaster peut renommer cette page"
   
   # ../plugin/rename.php:39 ../wikilib.php:588
  -#: ../plugin/rename.php:79 ../wikilib.php:1440
  +#: ../plugin/rename.php:79 ../wikilib.php:1433
   msgid "with revision history"
   msgstr "avec l'historique de r?vision"
   
  @@ -1424,7 +1763,7 @@
   msgid "Are you really want to revert this page ?"
   msgstr ""
   
  -#: ../plugin/revert.php:74 ../wikilib.php:1207
  +#: ../plugin/revert.php:74 ../wikilib.php:1200
   msgid "Summary"
   msgstr ""
   
  @@ -1501,6 +1840,8 @@
   #: ../plugin/security/mustlogin.php:28 ../plugin/security/mustlogin.php:39
   #: ../plugin/security/mustlogin.php:50 ../plugin/security/needtologin.php:28
   #: ../plugin/security/needtologin.php:39 ../plugin/security/needtologin.php:50
  +#: ../plugin/security/nforge.php:41 ../plugin/security/nforge.php:52
  +#: ../plugin/security/nforge.php:63
   #, c-format
   msgid "You are not allowed to '%s' on this page"
   msgstr "Vous n'?tes pas autoris? ? pouvoir '%s' cette page"
  @@ -1560,28 +1901,6 @@
   msgid "Trackback sent"
   msgstr "Trackback envoy?"
   
  -# ../plugin/man_get.php:23
  -#: ../plugin/SlideShow.php:28
  -msgid "No page found"
  -msgstr ""
  -
  -#: ../plugin/SlideShow.php:101
  -msgid "Start:"
  -msgstr ""
  -
  -#: ../plugin/SlideShow.php:110
  -msgid "End:"
  -msgstr ""
  -
  -# ../wikilib.php:482
  -#: ../plugin/SlideShow.php:130
  -msgid "Prev:"
  -msgstr ""
  -
  -#: ../plugin/SlideShow.php:137
  -msgid "Return"
  -msgstr ""
  -
   #: ../plugin/subscribe.php:24 ../plugin/subscribe.php:28
   msgid "You did'nt subscribed any pages yet."
   msgstr ""
  @@ -1640,36 +1959,6 @@
   msgid "Subscribed pages"
   msgstr ""
   
  -#: ../plugin/SWFUpload.php:137
  -msgid "Files..."
  -msgstr ""
  -
  -#: ../plugin/SWFUpload.php:138 ../plugin/UploadFile.php:443
  -#: ../plugin/UploadForm.php:270
  -msgid "Upload files"
  -msgstr ""
  -
  -#: ../plugin/SWFUpload.php:139
  -msgid "Cancel All files"
  -msgstr ""
  -
  -# ../wikilib.php:484
  -#: ../plugin/SystemInfo.php:16
  -msgid "Number of Pages"
  -msgstr ""
  -
  -#: ../plugin/SystemInfo.php:17
  -msgid "HTTP Server Version"
  -msgstr ""
  -
  -#: ../plugin/SystemInfo.php:18
  -msgid "MoniWiki Version"
  -msgstr ""
  -
  -#: ../plugin/SystemInfo.php:19
  -msgid "PHP Version"
  -msgstr ""
  -
   # ../plugin/theme.php:24
   #: ../plugin/theme.php:29
   msgid "Theme cleared. Goto UserPreferences."
  @@ -1679,67 +1968,22 @@
   msgid "Theme is changed"
   msgstr ""
   
  -# ../plugin/theme.php:64
  -#: ../plugin/theme.php:69
  -msgid "Please select a theme properly."
  -msgstr "Merci de s?lectionner un th?me de mani?re satisfaisante"
  -
  -#: ../plugin/theme.php:79
  -msgid "Theme disabled !"
  -msgstr ""
  -
  -# ../wikilib.php:476
  -#: ../plugin/theme.php:97
  -msgid "-- Select --"
  -msgstr ""
  -
  -#: ../plugin/ticket.php:173
  -msgid "Invalid use of ticket"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:57
  -msgid "BackLinks"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:61
  -msgid "Keywords"
  -msgstr ""
  -
  -# ../plugin/minilogin.php:30
  -#: ../plugin/Tour.php:70
  -#, c-format
  -msgid " from %s"
  -msgstr ""
  -
  -# ../plugin/minilogin.php:30
  -#: ../plugin/Tour.php:73
  -#, c-format
  -msgid "%s Tour %s"
  -msgstr ""
  -
  -#: ../plugin/Tour.php:121
  -msgid "links"
  -msgstr ""
  -
  -# ../plugin/VisualTour.php:59
  -#: ../plugin/Tour.php:123
  -msgid "deeper"
  -msgstr ""
  +# ../plugin/theme.php:64
  +#: ../plugin/theme.php:69
  +msgid "Please select a theme properly."
  +msgstr "Merci de s?lectionner un th?me de mani?re satisfaisante"
   
  -# ../plugin/minilogin.php:30
  -#: ../plugin/Tour.php:124
  -#, c-format
  -msgid "More %s or more %s"
  +#: ../plugin/theme.php:79
  +msgid "Theme disabled !"
   msgstr ""
   
  -#: ../plugin/Tour.php:139
  -#, c-format
  -msgid "Total %d related keywords"
  +# ../wikilib.php:476
  +#: ../plugin/theme.php:97
  +msgid "-- Select --"
   msgstr ""
   
  -#: ../plugin/Tour.php:142
  -#, c-format
  -msgid "Total %d related pages"
  +#: ../plugin/ticket.php:173
  +msgid "Invalid use of ticket"
   msgstr ""
   
   # ../plugin/trackback.php:54
  @@ -1774,166 +2018,6 @@
   msgid "No TrackBack entry found for %s"
   msgstr "Aucune entr?e de TrackBack d?tect? pour %s"
   
  -# ../plugin/TwinPages.php:13
  -#: ../plugin/TwinPages.php:13
  -#, c-format
  -msgid "TwinPages of %s"
  -msgstr "TwinPages de %s"
  -
  -# ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../plugin/TwinPages.php:20 ../wiki.php:5645
  -msgid "See [TwinPages]: "
  -msgstr "Voir [TwinPages]: "
  -
  -# ../plugin/TwinPages.php:20
  -#: ../plugin/TwinPages.php:22
  -msgid "No TwinPages found."
  -msgstr "Aucune TwinPages trouv?"
  -
  -# ../plugin/rename.php:27
  -#: ../plugin/UploadedFiles.php:303
  -msgid "File name"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:304
  -msgid "Size"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:355
  -msgid "Next page &raquo;"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:357
  -msgid "&laquo; First page"
  -msgstr ""
  -
  -#: ../plugin/UploadedFiles.php:448
  -#, c-format
  -msgid "Total %d files"
  -msgstr ""
  -
  -# ../wikilib.php:550
  -#: ../plugin/UploadedFiles.php:454 ../wikilib.php:1372
  -msgid "Delete selected files"
  -msgstr "Effacer les fichiers s?lectionn?s"
  -
  -#: ../plugin/UploadFile.php:11
  -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:13
  -msgid ""
  -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in "
  -"the HTML form"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:15
  -msgid "The uploaded file was only partially uploaded"
  -msgstr ""
  -
  -# ../wikilib.php:557 ../wikilib.php:559
  -#: ../plugin/UploadFile.php:17
  -msgid "No file was uploaded"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:19
  -msgid "Missing a temporary folder"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:21
  -msgid "Failed to write file to disk"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:23
  -msgid "File upload stopped by extension"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:25
  -msgid "Unknown upload error"
  -msgstr ""
  -
  -# ../wikilib.php:519
  -#: ../plugin/UploadFile.php:184 ../plugin/UploadFile.php:198
  -#, c-format
  -msgid "The %s type of %s is not allowed to upload"
  -msgstr ""
  -
  -# ../wikilib.php:519
  -#: ../plugin/UploadFile.php:200
  -#, c-format
  -msgid "%s is not allowed to upload"
  -msgstr "%s n'est pas une action valide"
  -
  -#: ../plugin/UploadFile.php:255
  -#, c-format
  -msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:273
  -msgid "ERROR:"
  -msgstr ""
  -
  -# ../wikilib.php:887
  -#: ../plugin/UploadFile.php:305
  -#, c-format
  -msgid "File \"%s\" is uploaded successfully"
  -msgstr ""
  -
  -# ../wikilib.php:887
  -#: ../plugin/UploadFile.php:372
  -msgid "Files are uploaded successfully"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:408
  -msgid "Multi upload form"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:421
  -msgid "Replace original file"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:422
  -msgid "Rename if it already exist"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:432
  -msgid "Upload"
  -msgstr ""
  -
  -# ../plugin/minilogin.php:30
  -#: ../plugin/UploadFile.php:435
  -#, c-format
  -msgid "or %s."
  -msgstr "ou %s"
  -
  -#: ../plugin/UploadFile.php:435
  -msgid "Multiple Upload files"
  -msgstr ""
  -
  -#: ../plugin/UploadForm.php:19
  -msgid "Successfully Uploaded"
  -msgstr ""
  -
  -#: ../plugin/UploadForm.php:20
  -msgid "Choose File"
  -msgstr ""
  -
  -#: ../plugin/UploadForm.php:268
  -msgid "add files"
  -msgstr ""
  -
  -#: ../plugin/UploadForm.php:269
  -msgid "add a file"
  -msgstr ""
  -
  -#: ../plugin/UploadForm.php:271
  -msgid "Reset"
  -msgstr ""
  -
  -#: ../plugin/UploadForm.php:272
  -msgid "Attachments"
  -msgstr ""
  -
   #: ../plugin/userform.php:36 ../plugin/userform.php:39
   msgid "Successfully confirmed"
   msgstr ""
  @@ -1988,7 +2072,7 @@
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../plugin/userform.php:110 ../wikilib.php:2562
  +#: ../plugin/userform.php:110 ../wikilib.php:2555
   msgid "E-mail new password"
   msgstr ""
   
  @@ -2194,26 +2278,6 @@
   msgid "User \"%s\" are deleted !"
   msgstr ""
   
  -# ../plugin/VisualTour.php:55
  -#: ../plugin/VisualTour.php:133
  -msgid "Normal"
  -msgstr ""
  -
  -# ../plugin/VisualTour.php:57
  -#: ../plugin/VisualTour.php:135
  -msgid "Wider"
  -msgstr "Plus large"
  -
  -# ../plugin/VisualTour.php:59
  -#: ../plugin/VisualTour.php:137
  -msgid "Deeper"
  -msgstr "Plus profond"
  -
  -# ../plugin/Vote.php:109
  -#: ../plugin/Vote.php:113
  -msgid "Voted successfully"
  -msgstr "Vote r?ussi"
  -
   #: ../plugin/whois.php:119
   #, c-format
   msgid "Could not connect to %s server"
  @@ -2225,10 +2289,6 @@
   msgid "Whois search result for %s"
   msgstr ""
   
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2911
  -msgid "Others"
  -msgstr ""
  -
   # ../wiki.php:850
   #: ../wiki.php:1316
   #, c-format
  @@ -2318,7 +2378,7 @@
   msgstr ""
   
   # ../wiki.php:2945 ../wiki.php:2948
  -#: ../wiki.php:5647 ../wiki.php:5656 ../wikilib.php:1659
  +#: ../wiki.php:5647 ../wiki.php:5656 ../wikilib.php:1652
   msgid "Create this page"
   msgstr "Cr?er cette page"
   
  @@ -2386,204 +2446,171 @@
   msgid "Please enter the valid password"
   msgstr "Merci d'entrer un mot de passe valide"
   
  -# ../wikilib.php:368
  -#: ../wikilib.php:806
  -msgid ""
  -"<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
  -"italics</i></b>''''';\n"
  -"''<i>mixed '''<b>bold</b>''' and italics</i>''; ---- horizontal rule.<br />\n"
  -"<b>Headings:</b> = Title 1 =; == Title 2 ==; === Title 3 ===;\n"
  -"==== Title 4 ====; ===== Title 5 =====.<br />\n"
  -"<b>Lists:</b> space and one of * bullets; 1., a., A., i., I. numbered "
  -"items;\n"
  -"1.#n start numbering at n; space alone indents.<br />\n"
  -"<b>Links:</b> JoinCapitalizedWords; [\"brackets and double quotes\"];\n"
  -"[bracketed words];\n"
  -"url; [url]; [url label].<br />\n"
  -"<b>Tables</b>: || cell text |||| cell text spanning two columns ||;\n"
  -"no trailing white space allowed after tables or titles.<br />\n"
  -msgstr ""
  -"<b>Accentuation :</b> ''<i>italique</i>''; '''<b>gras</b>'''; "
  -"'''''<b><i>italique gras</i></b>''''';\n"
  -"''<i>m?lange de '''<b>gras</b>''' et italique</i>''; ---- r?gle horizontale."
  -"<br />\n"
  -"<b>Ent?tes :</b> = Titre 1 =; == Titre 2 ==; === Titre 3 ===;\n"
  -"==== Titre 4 ====; ===== Titre 5 =====.<br />\n"
  -"<b>Listes :</b> un espace et une des * puces; 1., a., A., i., I. ?num?"
  -"rations ;\n"
  -"1.#n commence ? partir de n; l'espace seul provoque une indentation.<br />\n"
  -"<b>Liens :</b> MotsAttach?sEnMajuscules; [\"crochets et guillemets\"];\n"
  -"[mots entre crochets];\n"
  -"url; [url]; [url label].<br />\n"
  -"<b>Tableaux</b> : || cellule de texte |||| cellule de texte s'?tendant sur "
  -"deux colonnes ||;\n"
  -"Les espaces apr?s un tableau ou un titre ne sont pas autoris?s.<br />\n"
  -
   # ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
   # c-format
  -#: ../wikilib.php:912
  +#: ../wikilib.php:905
   msgid "You are not allowed to edit this page !"
   msgstr ""
   
  -#: ../wikilib.php:920
  +#: ../wikilib.php:913
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
   # ../wikilib.php:483 ../wikilib.php:1079
  -#: ../wikilib.php:943 ../wikilib.php:1227 ../wikilib.php:1881
  -#: ../wikilib.php:1978 ../wikilib.php:2490 ../wikilib.php:2548
  +#: ../wikilib.php:936 ../wikilib.php:1220 ../wikilib.php:1874
  +#: ../wikilib.php:1971 ../wikilib.php:2483 ../wikilib.php:2541
   msgid "Save"
   msgstr "Sauvegarder"
   
   # ../wikilib.php:443
  -#: ../wikilib.php:951 ../wikilib.php:1214 ../wikilib.php:1889
  -#: ../wikilib.php:1986
  +#: ../wikilib.php:944 ../wikilib.php:1207 ../wikilib.php:1882
  +#: ../wikilib.php:1979
   msgid "Skip to preview"
   msgstr "Aller ? la pr?visualisation"
   
   # ../wikilib.php:425
  -#: ../wikilib.php:1066
  +#: ../wikilib.php:1059
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   "Utiliser un des mod?les de pages qui suivent pour une premi?recr?ation :\n"
   
   # ../wikilib.php:427
  -#: ../wikilib.php:1068
  +#: ../wikilib.php:1061
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr ""
   
  -#: ../wikilib.php:1072
  +#: ../wikilib.php:1065
   msgid "Merge"
   msgstr ""
   
  -#: ../wikilib.php:1073
  +#: ../wikilib.php:1066
   msgid "Merge manually"
   msgstr ""
   
  -#: ../wikilib.php:1074
  +#: ../wikilib.php:1067
   msgid "Ignore conflicts"
   msgstr ""
   
   # ../wikilib.php:445
  -#: ../wikilib.php:1109
  +#: ../wikilib.php:1102
   msgid "ReduceEditor"
   msgstr "R?duire?diteur"
   
  -#: ../wikilib.php:1110
  +#: ../wikilib.php:1103
   msgid "EnlargeEditor"
   msgstr ""
   
   # ../locale/dummy.php:6 ../wikilib.php:448
  -#: ../wikilib.php:1114 ../locale/dummy.php:6
  +#: ../wikilib.php:1107 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
   # ../wikilib.php:449
  -#: ../wikilib.php:1116
  +#: ../wikilib.php:1109
   msgid "HelpOnEditing"
   msgstr ""
   
   # ../wikilib.php:462
  -#: ../wikilib.php:1150
  +#: ../wikilib.php:1143
   #, c-format
   msgid "Describe %s here"
   msgstr "D?crire %s ici"
   
  -#: ../wikilib.php:1170
  +#: ../wikilib.php:1163
   msgid "Category"
   msgstr ""
   
  -#: ../wikilib.php:1178
  +#: ../wikilib.php:1171
   msgid " Select "
   msgstr ""
   
  -#: ../wikilib.php:1190
  +#: ../wikilib.php:1183
   msgid "Minor edit"
   msgstr ""
   
   # ../wikilib.php:517
  -#: ../wikilib.php:1306
  +#: ../wikilib.php:1299
   msgid "406 Not Acceptable"
   msgstr ""
   
   # ../wikilib.php:519
  -#: ../wikilib.php:1311
  +#: ../wikilib.php:1304
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s n'est pas une action valide"
   
   # ../wikilib.php:521
  -#: ../wikilib.php:1313
  +#: ../wikilib.php:1306
   msgid "Is it valid action ?"
   msgstr "Est-ce que c'est une action valide ?"
   
   # ../wikilib.php:540
  -#: ../wikilib.php:1360
  +#: ../wikilib.php:1353
   #, c-format
   msgid "File '%s' is deleted"
   msgstr "Le fichier '%s' est effac?"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:1362
  +#: ../wikilib.php:1355
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr "Impossible d'effacer '%s'"
   
   # ../wikilib.php:545
  -#: ../wikilib.php:1367
  +#: ../wikilib.php:1360
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr "Le r?pertoire '%s' est effac?"
   
   # ../wikilib.php:547
  -#: ../wikilib.php:1369
  +#: ../wikilib.php:1362
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr "Impossible d'effacer le r?pertoire '%s'"
   
   # ../wikilib.php:557 ../wikilib.php:559
  -#: ../wikilib.php:1379 ../wikilib.php:1399
  +#: ../wikilib.php:1372 ../wikilib.php:1392
   msgid "No files are selected !"
   msgstr "Aucun fichier n'est s?lectionn? !"
   
   # ../wikilib.php:542
  -#: ../wikilib.php:1392
  +#: ../wikilib.php:1385
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
   # ../wikilib.php:550
  -#: ../wikilib.php:1396
  +#: ../wikilib.php:1389
   msgid "Delete selected file"
   msgstr ""
   
   # ../wikilib.php:575
  -#: ../wikilib.php:1417
  +#: ../wikilib.php:1410
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr "\"%s\" est effac? !"
   
   # ../wikilib.php:581
  -#: ../wikilib.php:1432
  +#: ../wikilib.php:1425
   msgid "Please delete this file manually."
   msgstr "Merci d'effacer ce fichier manuellement."
   
   # ../wikilib.php:583
  -#: ../wikilib.php:1434
  +#: ../wikilib.php:1427
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "Effacer \"%s\" ?"
   
   # ../plugin/minilogin.php:30
  -#: ../wikilib.php:1488
  +#: ../wikilib.php:1481
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
   # ../wiki.php:2950
  -#: ../wikilib.php:1661
  +#: ../wikilib.php:1654
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
  @@ -2591,139 +2618,139 @@
   "page.\n"
   
   # ../wiki.php:2950
  -#: ../wikilib.php:1661
  +#: ../wikilib.php:1654
   msgid "title"
   msgstr "titre"
   
  -#: ../wikilib.php:1675
  +#: ../wikilib.php:1668
   msgid "Please try to fulltext search"
   msgstr ""
   
   # ../wiki.php:2950
  -#: ../wikilib.php:1678
  +#: ../wikilib.php:1671
   #, c-format
   msgid "You can also click %s to fulltext search.\n"
   msgstr ""
   
   # ../wikilib.php:743
  -#: ../wikilib.php:1723 ../wikilib.php:1836
  +#: ../wikilib.php:1716 ../wikilib.php:1829
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "Quelqu'un a sauvegard? la page tandis que vous ?ditiez %s"
   
  -#: ../wikilib.php:1729
  +#: ../wikilib.php:1722
   msgid "Section edit is not valid for non-exists page."
   msgstr ""
   
   # ../wikilib.php:803
  -#: ../wikilib.php:1762 ../wikilib.php:2018
  +#: ../wikilib.php:1755 ../wikilib.php:2011
   msgid "mail does not supported by default."
   msgstr "La messagerie n'est pas support? par d?faut."
   
   # ../wikilib.php:807
  -#: ../wikilib.php:1766 ../wikilib.php:2022
  +#: ../wikilib.php:1759 ../wikilib.php:2015
   msgid "Sent notification mail."
   msgstr "Des notifications par messagerie ont ?t? envoy?es."
   
   # ../wikilib.php:809
  -#: ../wikilib.php:1768 ../wikilib.php:2024
  +#: ../wikilib.php:1761 ../wikilib.php:2017
   msgid "No subscribers found."
   msgstr "Aucun abonn? trouv?."
   
   # ../wikilib.php:814
  -#: ../wikilib.php:1773 ../wikilib.php:2029
  +#: ../wikilib.php:1766 ../wikilib.php:2022
   #, c-format
   msgid "%s is not editable"
   msgstr "%s n'est pas ?ditable"
   
   # ../wikilib.php:816
  -#: ../wikilib.php:1775 ../wikilib.php:2031
  +#: ../wikilib.php:1768 ../wikilib.php:2024
   #, c-format
   msgid "%s is saved"
   msgstr "%s est sauvegard?"
   
   # ../wikilib.php:734
  -#: ../wikilib.php:1827
  +#: ../wikilib.php:1820
   msgid "Goto Editor"
   msgstr "Aller ? l'?diteur"
   
  -#: ../wikilib.php:1841
  +#: ../wikilib.php:1834
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr ""
   
   # ../plugin/Vote.php:109
  -#: ../wikilib.php:1842
  +#: ../wikilib.php:1835
   #, c-format
   msgid "%s is merged successfully"
   msgstr ""
   
  -#: ../wikilib.php:1846
  +#: ../wikilib.php:1839
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1847
  +#: ../wikilib.php:1840
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr ""
   
  -#: ../wikilib.php:1848
  +#: ../wikilib.php:1841
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1849
  +#: ../wikilib.php:1842
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1854
  +#: ../wikilib.php:1847
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr ""
   
   # ../wikilib.php:581
  -#: ../wikilib.php:1855
  +#: ../wikilib.php:1848
   msgid "Please resolve conflicts manually."
   msgstr ""
   
  -#: ../wikilib.php:1858
  +#: ../wikilib.php:1851
   #, c-format
   msgid "Force merging for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1859
  +#: ../wikilib.php:1852
   msgid "Please be careful, you could damage useful information."
   msgstr ""
   
   # ../wikilib.php:755
  -#: ../wikilib.php:1873
  +#: ../wikilib.php:1866
   msgid "Conflict error!"
   msgstr "Erreur de conflit !"
   
   # ../plugin/processor/blog.php:78
  -#: ../wikilib.php:1914
  +#: ../wikilib.php:1907
   msgid "Too long Comment"
   msgstr ""
   
   # ../wikilib.php:748 ../wikilib.php:777
  -#: ../wikilib.php:1964
  +#: ../wikilib.php:1957
   #, c-format
   msgid "Preview of %s"
   msgstr "Pr?visualisation de %s"
   
   # ../wikilib.php:838
  -#: ../wikilib.php:2064
  +#: ../wikilib.php:2057
   msgid "Nobody subscribed to this page."
   msgstr "Personne n'est abonn? ? cette page, aucun mail envoy?"
   
   # ../wikilib.php:860
  -#: ../wikilib.php:2083
  +#: ../wikilib.php:2076
   #, c-format
   msgid "%s page is modified"
   msgstr "la page %s est modifi?"
   
   # ../wikilib.php:870
  -#: ../wikilib.php:2112
  +#: ../wikilib.php:2105
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
  @@ -2734,101 +2761,101 @@
   "\n"
   
   # ../wikilib.php:883
  -#: ../wikilib.php:2125
  +#: ../wikilib.php:2118
   msgid "Send notification mails to all subscribers"
   msgstr "Envoyez un mail de notification ? tous les abonn?s"
   
   # ../wikilib.php:887
  -#: ../wikilib.php:2130
  +#: ../wikilib.php:2123
   msgid "Mails are sent successfully"
   msgstr "Mail envoy? avec succ?s"
   
   # ../wikilib.php:888
  -#: ../wikilib.php:2131
  +#: ../wikilib.php:2124
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr "un mail a ?t? envoy? ? '%s'"
   
   # ../wiki.php:3021
  -#: ../wikilib.php:2133
  +#: ../wikilib.php:2126
   msgid "Fail to send mail"
   msgstr ""
   
   # ../wikilib.php:803
  -#: ../wikilib.php:2144
  +#: ../wikilib.php:2137
   msgid "This wiki does not support sendmail"
   msgstr ""
   
   # ../wikilib.php:1483
  -#: ../wikilib.php:2274
  +#: ../wikilib.php:2267
   msgid "Invalid regular expression !"
   msgstr ""
   
  -#: ../wikilib.php:2298
  +#: ../wikilib.php:2291
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:2301
  +#: ../wikilib.php:2294
   msgid "Infinite loop possible!"
   msgstr ""
   
   # ../plugin/login.php:26 ../wikilib.php:1051
  -#: ../wikilib.php:2418
  +#: ../wikilib.php:2411
   msgid "Login"
   msgstr "Se connecter"
   
  -#: ../wikilib.php:2419
  +#: ../wikilib.php:2412
   msgid "OpenID"
   msgstr ""
   
  -#: ../wikilib.php:2432 ../wikilib.php:2567
  +#: ../wikilib.php:2425 ../wikilib.php:2560
   msgid "ID"
   msgstr ""
   
   # ../wikilib.php:1070
  -#: ../wikilib.php:2470 ../wikilib.php:2560
  +#: ../wikilib.php:2463 ../wikilib.php:2553
   msgid "Make profile"
   msgstr "Faire un profil"
   
   # ../wikilib.php:1071
  -#: ../wikilib.php:2472
  +#: ../wikilib.php:2465
   msgid "password again"
   msgstr "mot de passe de nouveau"
   
  -#: ../wikilib.php:2474 ../wikilib.php:2524
  +#: ../wikilib.php:2467 ../wikilib.php:2517
   msgid "Mail"
   msgstr ""
   
   # ../wikilib.php:1082
  -#: ../wikilib.php:2496
  +#: ../wikilib.php:2489
   msgid "New password"
   msgstr "Nouveau mot de passe"
   
  -#: ../wikilib.php:2501
  +#: ../wikilib.php:2494
   msgid "Nickname"
   msgstr ""
   
  -#: ../wikilib.php:2525
  +#: ../wikilib.php:2518
   msgid "Time Zone"
   msgstr ""
   
   # ../wikilib.php:1088
  -#: ../wikilib.php:2534
  +#: ../wikilib.php:2527
   msgid "logout"
   msgstr "se d?connecter"
   
   # ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wikilib.php:2912
  +#: ../wikilib.php:2905
   msgid "Show all"
   msgstr ""
   
   # ../locale/dummy.php:4
  -#: ../wikilib.php:3050
  +#: ../wikilib.php:3043
   msgid "Contents"
   msgstr ""
   
   # ../wikilib.php:1479
  -#: ../wikilib.php:3171
  +#: ../wikilib.php:3164
   #, c-format
   msgid "Title search for \"%s\""
   msgstr "Recherche de titre pour \"%s\""
  @@ -2838,47 +2865,47 @@
   msgstr ""
   
   # ../wikilib.php:575
  -#: ../monisetup.php:53
  +#: ../monisetup.php:49
   #, c-format
   msgid "%s is selected."
   msgstr ""
   
   # ../plugin/man_get.php:13
  -#: ../monisetup.php:55
  +#: ../monisetup.php:51
   msgid "No \\$dba_type selected."
   msgstr ""
   
  -#: ../monisetup.php:63
  +#: ../monisetup.php:59
   msgid "Check a AcceptPathInfo setting for Apache 2.x.xx"
   msgstr ""
   
  -#: ../monisetup.php:70 ../monisetup.php:76
  +#: ../monisetup.php:66 ../monisetup.php:72
   msgid "Off"
   msgstr ""
   
  -#: ../monisetup.php:78
  +#: ../monisetup.php:74
   msgid "On"
   msgstr ""
   
  -#: ../monisetup.php:432
  +#: ../monisetup.php:428
   msgid ""
   "Please change the permission of some directories writable on your server to "
   "initialize your Wiki."
   msgstr ""
   
  -#: ../monisetup.php:434
  +#: ../monisetup.php:430
   #, c-format
   msgid ""
   "If you want a more safe wiki, try to change the permission of directories "
   "with %s."
   msgstr ""
   
  -#: ../monisetup.php:437
  +#: ../monisetup.php:433
   msgid ""
   "or use <tt>monisetup.sh</tt> and select 777 or <font color='red'>2777</font>"
   msgstr ""
   
  -#: ../monisetup.php:439
  +#: ../monisetup.php:435
   msgid ""
   "After execute one of above two commands, just <a href='monisetup.php'>reload "
   "this <tt>monisetup.php</tt></a> would make a new initial <tt>config.php</tt> "
  @@ -2886,219 +2913,219 @@
   msgstr ""
   
   # ../plugin/rename.php:27
  -#: ../monisetup.php:440
  +#: ../monisetup.php:436
   msgid "Reload"
   msgstr ""
   
  -#: ../monisetup.php:443
  +#: ../monisetup.php:439
   msgid "WARN"
   msgstr ""
   
  -#: ../monisetup.php:444
  +#: ../monisetup.php:440
   msgid ""
   "Please execute the following command after you have completed your "
   "configuration."
   msgstr ""
   
  -#: ../monisetup.php:448 ../monisetup.php:1274
  +#: ../monisetup.php:444 ../monisetup.php:1270
   msgid "WARN: You have to enter your Admin Password"
   msgstr ""
   
  -#: ../monisetup.php:451
  +#: ../monisetup.php:447
   msgid ""
   "WARN: If you have any permission to execute 'secure.sh'. press the following "
   "button"
   msgstr ""
   
  -#: ../monisetup.php:453
  +#: ../monisetup.php:449
   msgid "Protect my config.php now!"
   msgstr ""
   
   # ../wikilib.php:814
  -#: ../monisetup.php:470
  +#: ../monisetup.php:466
   #, c-format
   msgid "FATAL: %s directory is not writable"
   msgstr ""
   
   # ../wikilib.php:581
  -#: ../monisetup.php:471
  +#: ../monisetup.php:467
   msgid "Please execute the following command."
   msgstr ""
   
   # ../wikilib.php:814
  -#: ../monisetup.php:490
  +#: ../monisetup.php:486
   #, c-format
   msgid "%s directory is not writable"
   msgstr ""
   
   # ../wikilib.php:814
  -#: ../monisetup.php:507
  +#: ../monisetup.php:503
   #, c-format
   msgid "%s is not writable"
   msgstr ""
   
   # ../plugin/rename.php:14
  -#: ../monisetup.php:514 ../monisetup.php:520
  +#: ../monisetup.php:510 ../monisetup.php:516
   #, c-format
   msgid "%s is created now"
   msgstr ""
   
   # ../wikilib.php:814
  -#: ../monisetup.php:530
  +#: ../monisetup.php:526
   #, c-format
   msgid "%s is writable"
   msgstr ""
   
  -#: ../monisetup.php:547
  +#: ../monisetup.php:543
   #, c-format
   msgid ""
   "If you want to check .htaccess file please delete '%s' file and reload it."
   msgstr ""
   
  -#: ../monisetup.php:550
  +#: ../monisetup.php:546
   msgid "Security check for 'upload_dir'."
   msgstr ""
   
  -#: ../monisetup.php:582
  +#: ../monisetup.php:578
   msgid ".htaccess for 'imgs_dir'."
   msgstr ""
   
  -#: ../monisetup.php:652
  +#: ../monisetup.php:648
   msgid "Fail"
   msgstr ""
   
  -#: ../monisetup.php:658
  +#: ../monisetup.php:654
   msgid "Unable to write .htaccess"
   msgstr ""
   
  -#: ../monisetup.php:762
  +#: ../monisetup.php:758
   msgid "Click here to toggle all"
   msgstr ""
   
   # ../wikilib.php:550
  -#: ../monisetup.php:763
  +#: ../monisetup.php:759
   msgid "Deselect all"
   msgstr ""
   
  -#: ../monisetup.php:768
  +#: ../monisetup.php:764
   msgid "Please be careful to deselect these pages"
   msgstr ""
   
  -#: ../monisetup.php:1067
  +#: ../monisetup.php:1063
   msgid "MoniWiki"
   msgstr ""
   
  -#: ../monisetup.php:1070
  +#: ../monisetup.php:1066
   msgid "'config.php' is not writable !"
   msgstr ""
   
  -#: ../monisetup.php:1071
  +#: ../monisetup.php:1067
   msgid ""
   "Please execute <tt>'monisetup.sh'</tt> or <tt>chmod a+w config.php</tt> "
   "first to change your settings."
   msgstr ""
   
  -#: ../monisetup.php:1073
  +#: ../monisetup.php:1069
   msgid "Unprotect my config.php"
   msgstr ""
   
  -#: ../monisetup.php:1101
  +#: ../monisetup.php:1097
   msgid "config.php is protected now !"
   msgstr ""
   
   # ../wiki.php:3024
  -#: ../monisetup.php:1106 ../monisetup.php:1125
  +#: ../monisetup.php:1102 ../monisetup.php:1121
   msgid "Invalid password error !"
   msgstr ""
   
  -#: ../monisetup.php:1107 ../monisetup.php:1126
  +#: ../monisetup.php:1103 ../monisetup.php:1122
   msgid ""
   "If you can't remember your admin password, delete password entry in the "
   "'config.php' and restart 'monisetup'"
   msgstr ""
   
  -#: ../monisetup.php:1112
  +#: ../monisetup.php:1108
   msgid "config.php is unprotected now !"
   msgstr ""
   
  -#: ../monisetup.php:1158
  +#: ../monisetup.php:1154
   #, c-format
   msgid "Updated Configutations for this %s"
   msgstr ""
   
   # ../wikilib.php:887
  -#: ../monisetup.php:1176
  +#: ../monisetup.php:1172
   msgid "Configurations are saved successfully"
   msgstr ""
   
  -#: ../monisetup.php:1177
  +#: ../monisetup.php:1173
   msgid ""
   "WARN: Please check <a href='monisetup.php'> your saved configurations</a>"
   msgstr ""
   
  -#: ../monisetup.php:1178
  +#: ../monisetup.php:1174
   msgid "If all is good, change 'config.php' permission as 644."
   msgstr ""
   
  -#: ../monisetup.php:1190
  +#: ../monisetup.php:1186
   msgid "Welcome to MoniWiki ! This is your first installation"
   msgstr ""
   
  -#: ../monisetup.php:1200
  +#: ../monisetup.php:1196
   msgid "Default settings are loaded..."
   msgstr ""
   
   # ../wikilib.php:887
  -#: ../monisetup.php:1208
  +#: ../monisetup.php:1204
   msgid "Initial configurations are saved successfully."
   msgstr ""
   
  -#: ../monisetup.php:1209
  +#: ../monisetup.php:1205
   msgid "Goto <a href='monisetup.php'>MoniSetup</a> again to configure details"
   msgstr ""
   
   # ../plugin/minilogin.php:30
  -#: ../monisetup.php:1226 ../monisetup.php:1228 ../monisetup.php:1324
  -#: ../monisetup.php:1326
  +#: ../monisetup.php:1222 ../monisetup.php:1224 ../monisetup.php:1320
  +#: ../monisetup.php:1322
   #, c-format
   msgid "goto %s"
   msgstr ""
   
   # ../wikilib.php:557 ../wikilib.php:559
  -#: ../monisetup.php:1231
  +#: ../monisetup.php:1227
   msgid "No WikiSeeds are selected"
   msgstr ""
   
  -#: ../monisetup.php:1242
  +#: ../monisetup.php:1238
   #, c-format
   msgid "Preview current settings for this %s"
   msgstr ""
   
  -#: ../monisetup.php:1244
  +#: ../monisetup.php:1240
   #, c-format
   msgid "Read current settings for this %s"
   msgstr ""
   
  -#: ../monisetup.php:1272
  +#: ../monisetup.php:1268
   msgid "Change your settings"
   msgstr ""
   
  -#: ../monisetup.php:1276 ../monisetup.php:1319
  +#: ../monisetup.php:1272 ../monisetup.php:1315
   #, c-format
   msgid "WARN: You have no WikiSeed on your %s"
   msgstr ""
   
   # ../plugin/quicklinks.php:50
  -#: ../monisetup.php:1277 ../monisetup.php:1320
  +#: ../monisetup.php:1273 ../monisetup.php:1316
   #, c-format
   msgid "If you want to put wikiseeds on your wiki %s now"
   msgstr ""
   
  -#: ../monisetup.php:1278 ../monisetup.php:1321
  +#: ../monisetup.php:1274 ../monisetup.php:1317
   msgid "Click here"
   msgstr ""
   
  -#: ../monisetup.php:1313 ../monisetup.php:1315
  +#: ../monisetup.php:1309 ../monisetup.php:1311
   msgid "Update"
   msgstr ""
   
  
  
  
  1.37      +917 -896  moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- ko.po	13 Aug 2010 15:21:40 -0000	1.36
  +++ ko.po	13 Aug 2010 18:58:09 -0000	1.37
  @@ -5,7 +5,7 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1.3\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2010-08-14 00:12+0900\n"
  +"POT-Creation-Date: 2010-08-14 03:44+0900\n"
   "PO-Revision-Date: 2008-12-11 12:20+0900\n"
   "Last-Translator: Won-Kyu Park <wkpark@kldp.org>\n"
   "Language-Team: Won-Kyu Park <wkpark@kldp.org>\n"
  @@ -13,82 +13,6 @@
   "Content-Type: text/plain; charset=UTF-8\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  -#: ../plugin/aclinfo.php:15
  -msgid "ACL is not enabled on this Wiki"
  -msgstr "ACL이 활성화되어있지 않습니다"
  -
  -#: ../plugin/aclinfo.php:21
  -msgid "Your ACL Info"
  -msgstr "ACL 정보"
  -
  -#: ../plugin/aclinfo.php:23
  -msgid "You are wiki owner"
  -msgstr "위키 소유자입니다"
  -
  -#: ../plugin/aclinfo.php:25
  -msgid "You are wiki master"
  -msgstr "위키 관리자입니다"
  -
  -#: ../plugin/aclinfo.php:27
  -msgid "Allowed actions"
  -msgstr "허락된 액션"
  -
  -#: ../plugin/aclinfo.php:32
  -msgid "Denied actions"
  -msgstr "거부된 액션"
  -
  -#: ../plugin/aclinfo.php:38
  -msgid "Protected actions"
  -msgstr "제한된 액션"
  -
  -#: ../plugin/admin.php:136 ../plugin/PluginInfo.php:50
  -msgid "Description"
  -msgstr "설명"
  -
  -#: ../plugin/admin.php:139 ../plugin/PluginInfo.php:56
  -msgid "Author"
  -msgstr "저자"
  -
  -#: ../plugin/admin.php:141 ../plugin/PluginInfo.php:58
  -msgid "License"
  -msgstr "저작권"
  -
  -#: ../plugin/admin.php:143 ../plugin/PluginInfo.php:60
  -msgid "Depend"
  -msgstr "의존성"
  -
  -#: ../plugin/admin.php:147 ../plugin/PluginInfo.php:64
  -msgid "URL"
  -msgstr ""
  -
  -#: ../plugin/admin.php:191
  -msgid "Enabled plugins"
  -msgstr "활성화된 플러그인"
  -
  -#: ../plugin/admin.php:193
  -msgid "Disabled plugins"
  -msgstr "비활성화된 플러그인"
  -
  -#: ../plugin/admin.php:201
  -msgid "Enabled processors"
  -msgstr "활성화된 프로세서"
  -
  -#: ../plugin/admin.php:203
  -msgid "Disabled processors"
  -msgstr "비활성화된 프로세서"
  -
  -#: ../plugin/admin.php:206
  -msgid "Plugin/Processor settings are updated"
  -msgstr "플러그인/프로세서 세팅이 갱신됨"
  -
  -#: ../plugin/admin.php:212
  -msgid "Enable/disable plugins and processors"
  -msgstr "플러그인과 프로세서 활성화/비활성화"
  -
  -#: ../plugin/atom.php:64 ../plugin/rss_rc.php:62
  -msgid "show changes"
  -msgstr "바뀐점 보기"
  -
   #: ../plugin/Attachment.php:72 ../plugin/Attachment.php:341
   #, c-format
   msgid "Upload new Attachment \"%s\""
  @@ -116,140 +40,6 @@
   msgid "Translate %s to %s"
   msgstr "%s에서 %s(으)로 번역하기"
   
  -#: ../plugin/backup.php:42
  -msgid "Your wiki is backuped successfully"
  -msgstr "백업이 성공적으로 완료되었습니다"
  -
  -#: ../plugin/backup.php:49
  -msgid "Backup failed !"
  -msgstr "백업 실패 !"
  -
  -#: ../plugin/backup.php:54
  -msgid "Did you want to Backup your wiki ?"
  -msgstr "위키를 백업하시겠습니까 ?"
  -
  -#: ../plugin/bbs.php:493
  -msgid "This bbs does not exists yet. Please save this page first"
  -msgstr "현 BBS가 존재하지 않습ㄴ디ㅏ. 먼저 페이지를 저장하세요"
  -
  -#: ../plugin/bbs.php:617
  -msgid "No"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:626
  -msgid "Edit"
  -msgstr "고치기"
  -
  -#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1395
  -msgid "Delete"
  -msgstr "지우기"
  -
  -#: ../plugin/bbs.php:657
  -msgid "Please check article numbers."
  -msgstr "글번호를 확인해 주세요"
  -
  -#: ../plugin/bbs.php:737
  -msgid "More"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:782
  -msgid "New"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:784
  -msgid "Read"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:800
  -#, c-format
  -msgid "Total %s articles."
  -msgstr "총 %d 개의 글"
  -
  -#: ../plugin/bbs.php:836
  -#, c-format
  -msgid "Your IP address is not allowed to %s at this BBS"
  -msgstr "IP 주소가 '%s' BBS에서 허락되지 않았습니다."
  -
  -#: ../plugin/bbs.php:890
  -msgid "Successfully deleted."
  -msgstr "성공적으로 지워졌음."
  -
  -#: ../plugin/bbs.php:922
  -msgid "Fail to post comment."
  -msgstr "댓글 등록 실패."
  -
  -#: ../plugin/bbs.php:932
  -#, c-format
  -msgid "The article %s will be deleted."
  -msgstr "게시글 %s(이)가 지워질 것입니다."
  -
  -#: ../plugin/bbs.php:974
  -msgid "Invalid HomePage address."
  -msgstr "잘못된 홈페이지 주소."
  -
  -#: ../plugin/bbs.php:987
  -msgid "No Name error."
  -msgstr "이름이 없습ㄴ다."
  -
  -#: ../plugin/bbs.php:997
  -msgid "No Subject error."
  -msgstr "제목이 없습니다."
  -
  -#: ../plugin/bbs.php:1009 ../plugin/Comment.php:201 ../plugin/Gallery.php:182
  -#: ../wikilib.php:1748 ../wikilib.php:1958
  -msgid ""
  -"Sorry, can not save page because some messages are blocked in this wiki."
  -msgstr "죄송합니다. 특정 메시지가 금지되어 페이지를 저장할 수 없습니다."
  -
  -#: ../plugin/bbs.php:1025
  -msgid "New post added successfully"
  -msgstr "새글이 성공적으로 등록되었습니다."
  -
  -#: ../plugin/BlogChanges.php:203
  -msgid "Category: "
  -msgstr "분류: "
  -
  -#: ../plugin/BlogChanges.php:205 ../locale/dummy.php:7
  -msgid "BlogChanges"
  -msgstr "바뀐 블로그"
  -
  -#: ../plugin/BlogChanges.php:251
  -#, c-format
  -msgid "Invalid category expr \"%s\""
  -msgstr "잘못된 분류 표현식\"%s\""
  -
  -#: ../plugin/BlogChanges.php:384 ../plugin/BlogChanges.php:386
  -#: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
  -msgid "Anonymous"
  -msgstr "아무개"
  -
  -#: ../plugin/BlogChanges.php:417 ../plugin/processor/blog.php:88
  -#, c-format
  -msgid "%d comment"
  -msgstr "댓글 %d개"
  -
  -#: ../plugin/BlogChanges.php:417 ../plugin/processor/blog.php:88
  -#, c-format
  -msgid "%d comments"
  -msgstr "댓글 %d개"
  -
  -#: ../plugin/BlogChanges.php:419 ../plugin/Comment.php:218
  -#: ../plugin/processor/blog.php:80
  -msgid "Add comment"
  -msgstr "댓글 달기"
  -
  -#: ../plugin/BlogChanges.php:429 ../plugin/processor/blog.php:99
  -msgid "track back"
  -msgstr "트랙백"
  -
  -#: ../plugin/BlogChanges.php:449
  -msgid "Previous"
  -msgstr "이전"
  -
  -#: ../plugin/BlogChanges.php:453
  -msgid "Next"
  -msgstr "다음"
  -
   #: ../plugin/Blog.php:84
   #, c-format
   msgid "Blog cache of \"%s\" is refreshed"
  @@ -310,7 +100,7 @@
   msgid "Title"
   msgstr "제목"
   
  -#: ../plugin/Blog.php:271 ../wikilib.php:1218
  +#: ../plugin/Blog.php:271 ../wikilib.php:1211
   msgid "GUI"
   msgstr ""
   
  @@ -322,43 +112,57 @@
   msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
   msgstr "<b>가로선</b> ----는 블로그일 경우 적용되지 않습니다."
   
  -#: ../plugin/bookmark.php:33
  -msgid "Invalid bookmark!"
  -msgstr "잘못된 북마크!"
  +#: ../plugin/BlogChanges.php:203
  +msgid "Category: "
  +msgstr "분류: "
   
  -#: ../plugin/cacheadmin.php:105
  -msgid "You are not WikiMaster!!"
  -msgstr "위키관리자가 아닙니다!!"
  +#: ../plugin/BlogChanges.php:205 ../locale/dummy.php:7
  +msgid "BlogChanges"
  +msgstr "바뀐 블로그"
   
  -#: ../plugin/cacheadmin.php:120
  -msgid "Clear cache dirs"
  -msgstr "캐쉬 디렉토리 지우기"
  +#: ../plugin/BlogChanges.php:251
  +#, c-format
  +msgid "Invalid category expr \"%s\""
  +msgstr "잘못된 분류 표현식\"%s\""
   
  -#: ../plugin/chat.php:37
  -msgid "No messages"
  -msgstr "메시지 없음"
  +#: ../plugin/BlogChanges.php:384 ../plugin/BlogChanges.php:386
  +#: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
  +msgid "Anonymous"
  +msgstr "아무개"
   
  -#: ../plugin/chmod.php:18
  +#: ../plugin/BlogChanges.php:417 ../plugin/processor/blog.php:88
   #, c-format
  -msgid "Permission of \"%s\" changed !"
  -msgstr ""
  +msgid "%d comment"
  +msgstr "댓글 %d개"
   
  -#: ../plugin/chmod.php:24
  +#: ../plugin/BlogChanges.php:417 ../plugin/processor/blog.php:88
   #, c-format
  -msgid "Fail to chmod \"%s\" !"
  -msgstr ""
  +msgid "%d comments"
  +msgstr "댓글 %d개"
   
  -#: ../plugin/chmod.php:35
  -#, c-format
  -msgid "Change permission of \"%s\""
  -msgstr ""
  +#: ../plugin/BlogChanges.php:419 ../plugin/Comment.php:218
  +#: ../plugin/processor/blog.php:80
  +msgid "Add comment"
  +msgstr "댓글 달기"
   
  -#: ../plugin/Clip.php:28
  -msgid "Paste a new picture"
  -msgstr "새 그림 붙이기"
  +#: ../plugin/BlogChanges.php:429 ../plugin/processor/blog.php:99
  +msgid "track back"
  +msgstr "트랙백"
   
  -#: ../plugin/Clip.php:51 ../plugin/Draw.php:119
  -msgid "Fatal error !"
  +#: ../plugin/BlogChanges.php:449
  +msgid "Previous"
  +msgstr "이전"
  +
  +#: ../plugin/BlogChanges.php:453
  +msgid "Next"
  +msgstr "다음"
  +
  +#: ../plugin/Clip.php:28
  +msgid "Paste a new picture"
  +msgstr "새 그림 붙이기"
  +
  +#: ../plugin/Clip.php:51 ../plugin/Draw.php:119
  +msgid "Fatal error !"
   msgstr ""
   
   #: ../plugin/Clip.php:54 ../plugin/Draw.php:122
  @@ -377,8 +181,8 @@
   msgid "Comment"
   msgstr "댓글 달기"
   
  -#: ../plugin/Comment.php:94 ../wikilib.php:949 ../wikilib.php:1212
  -#: ../wikilib.php:1887 ../wikilib.php:1984 ../monisetup.php:1311
  +#: ../plugin/Comment.php:94 ../wikilib.php:942 ../wikilib.php:1205
  +#: ../wikilib.php:1880 ../wikilib.php:1977 ../monisetup.php:1307
   msgid "Preview"
   msgstr "미리보기"
   
  @@ -399,15 +203,21 @@
   msgstr "페이지가 없습니다"
   
   #: ../plugin/Comment.php:174 ../plugin/userform.php:121
  -#: ../plugin/userform.php:184 ../plugin/userform.php:207 ../wikilib.php:1937
  +#: ../plugin/userform.php:184 ../plugin/userform.php:207 ../wikilib.php:1930
   msgid "Invalid ticket !"
   msgstr "잘못된 티켓 !"
   
   #: ../plugin/Comment.php:179 ../plugin/userform.php:123
  -#: ../plugin/userform.php:209 ../wikilib.php:1942
  +#: ../plugin/userform.php:209 ../wikilib.php:1935
   msgid "You need a ticket !"
   msgstr "티켓이 필요합니다 !"
   
  +#: ../plugin/Comment.php:201 ../plugin/Gallery.php:182 ../plugin/bbs.php:1009
  +#: ../wikilib.php:1741 ../wikilib.php:1951
  +msgid ""
  +"Sorry, can not save page because some messages are blocked in this wiki."
  +msgstr "죄송합니다. 특정 메시지가 금지되어 페이지를 저장할 수 없습니다."
  +
   #: ../plugin/Comment.php:207
   msgid "Preview comment"
   msgstr "미리보기"
  @@ -421,24 +231,16 @@
   msgid "Comment added successfully"
   msgstr "댓글이 성공적으로 저장되었습니다"
   
  -#: ../plugin/css.php:34 ../plugin/css.php:42
  -msgid "Back to UserPreferences"
  -msgstr "UserPreferences로 가기"
  -
  -#: ../plugin/css.php:68
  -msgid "CSS disabled !"
  -msgstr ""
  -
  -#: ../plugin/Diff.php:411 ../plugin/Info.php:251
  +#: ../plugin/Diff.php:411 ../plugin/Info.php:251 ../plugin/Stat.php:125
   msgid "No older revisions available"
   msgstr "옛 버전이 없습니다"
   
  -#: ../plugin/Diff.php:416 ../plugin/Info.php:257 ../plugin/rcsexport.php:13
  -#: ../plugin/rcsimport.php:13
  +#: ../plugin/Diff.php:416 ../plugin/Info.php:257 ../plugin/Stat.php:131
  +#: ../plugin/rcsexport.php:13 ../plugin/rcsimport.php:13
   msgid "Version info is not available in this wiki"
   msgstr "버전 정보는 현 위키에서 사용할 수 없습니다"
   
  -#: ../plugin/Diff.php:428 ../wikilib.php:1907
  +#: ../plugin/Diff.php:428 ../wikilib.php:1900
   msgid "No difference found"
   msgstr "변화가 없습니다"
   
  @@ -491,6 +293,48 @@
   msgid "%d day(s) passed from %s."
   msgstr "%2$s로부터 %1$d일 지났습니다."
   
  +#: ../plugin/EditHints.php:39
  +msgid "Editing Hints"
  +msgstr "위키 도움말"
  +
  +#: ../plugin/EditHints.php:44
  +msgid "See more help:"
  +msgstr "자세한 사용법 안내:"
  +
  +#: ../plugin/EditHints.php:44
  +msgid "Close Editing Hints"
  +msgstr "위키 도움말 닫기"
  +
  +#: ../plugin/EditHints.php:53
  +msgid ""
  +"<b>Emphasis:</b> '''<strong>bold</strong>''', ''<i>italics</i>''<br />\n"
  +"<b>Headings:</b> ==<span class='space'> </span>Title 2<span class='space'> </"
  +"span>==; ===<span class='space'> </span>Title 3<span class='space'> </"
  +"span>===; ...<br />\n"
  +"<b>Lists:</b> <span class='space'> </span>*<span class='space'> </span> "
  +"space and one of * bullets; <span class='space'> </span>1.<span "
  +"class='space'> </span>numbered items; <span class='space'> </span> space "
  +"alone indents.<br />\n"
  +"<b>Links:</b> [[double bracketed words]]; [bracketed words]; "
  +"JoinCapitalizedWords; [\"brackets and double quotes\"];\n"
  +"url; [url]; [url label].<br />\n"
  +"<b>Tables</b>: || cell text |||| cell text spanning two columns ||;\n"
  +"no trailing white space allowed after tables or titles.<br />\n"
  +msgstr ""
  +"<b>강조:</b> '''<b>굵게</b>''', ''<i>기울임</i>''<br />\n"
  +"<b>제목:</b> ==<span class='space'> </span>제목 2<span class='space'> </"
  +"span>==; ===<span class='space'> </span>제목 3<span class='space'> </"
  +"span>===; ...<br />\n"
  +"<b>목록:</b> <span class='space'> </span>*<span class='space'> </span> 공백"
  +"과 * 총알 한개; <span class='space'> </span>1.<span class='space'> </span> 번"
  +"호달린 목록;\n"
  +" <span class='space'> </span> 공백만 있으면 들여쓰기.<br />\n"
  +"<b>연결:</b> [[두개의 대괄호로 연결]]; [대괄호로 연결]; "
  +"JoinCapitalizedWords; [\"대괄호와 큰따옴표로 감싸서 연결\"];\n"
  +"url; [url]; [url 표시될 이름].<br />\n"
  +"<b>테이블</b>: || 셀 내용 |||| 두칸에 걸친 내용 ||;<br />\n"
  +"테이블이나 제목 끝에 공백이 오면 안됩니다.<br />\n"
  +
   #: ../plugin/FastSearch.php:37
   msgid "Fast search"
   msgstr "빠른 검색"
  @@ -523,18 +367,18 @@
   msgstr "\"%s\"을(를) 전체 찾아보기"
   
   #: ../plugin/FastSearch.php:177 ../plugin/FullSearch.php:38
  -#: ../wikilib.php:1669
  +#: ../wikilib.php:1662
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr "%3$s의 페이지중에 %1$s개가 발견되었습니다"
   
   #: ../plugin/FastSearch.php:179 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1671
  +#: ../wikilib.php:1664
   msgid "page"
   msgstr "페이지"
   
   #: ../plugin/FastSearch.php:179 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1671
  +#: ../wikilib.php:1664
   msgid "pages"
   msgstr "페이지"
   
  @@ -543,10 +387,6 @@
   msgid "Show all %d results"
   msgstr "%d개의 모든 결과 보기"
   
  -#: ../plugin/format.php:17
  -msgid "It is a XML format !"
  -msgstr ""
  -
   #: ../plugin/FullSearch.php:15
   #, c-format
   msgid "BackLinks search for \"%s\""
  @@ -562,7 +402,7 @@
   msgstr "문맥 보기."
   
   #: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4686
  -#: ../wikilib.php:1196
  +#: ../wikilib.php:1189
   msgid "Refresh"
   msgstr "갱신"
   
  @@ -577,7 +417,7 @@
   msgstr "%s을 눌러 제목 찾기를 할 수 있습니다.\n"
   
   #: ../plugin/FullSearch.php:52 ../wiki.php:5660 ../wiki.php:5668
  -#: ../wikilib.php:1679
  +#: ../wikilib.php:1672
   msgid "here"
   msgstr "여기"
   
  @@ -589,7 +429,7 @@
   msgid "Case-sensitive searching"
   msgstr "대소문자 구별"
   
  -#: ../plugin/FullSearch.php:77 ../wikilib.php:3154 ../wikilib.php:3230
  +#: ../plugin/FullSearch.php:77 ../wikilib.php:3147 ../wikilib.php:3223
   msgid "Go"
   msgstr "찾기"
   
  @@ -597,7 +437,7 @@
   msgid "Empty expression"
   msgstr "비어있는 표현식"
   
  -#: ../plugin/FullSearch.php:144 ../wikilib.php:3175
  +#: ../plugin/FullSearch.php:144 ../wikilib.php:3168
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "잘못된 찾기 표현식 \"%s\""
  @@ -614,8 +454,8 @@
   msgid "show comments"
   msgstr "댓글 보기"
   
  -#: ../plugin/Gallery.php:409 ../plugin/Gallery.php:413 ../wikilib.php:1735
  -#: ../wikilib.php:1905 ../wikilib.php:1912
  +#: ../plugin/Gallery.php:409 ../plugin/Gallery.php:413 ../wikilib.php:1728
  +#: ../wikilib.php:1898 ../wikilib.php:1905
   #, c-format
   msgid "Go back or return to %s"
   msgstr "뒤로 혹은 %s(으)로 가기"
  @@ -628,10 +468,6 @@
   msgid "Comments is added"
   msgstr "댓글이 더해졌습니다"
   
  -#: ../plugin/html2pdf.php:30
  -msgid "The TCPDF class not found!"
  -msgstr "TCPDF 클래스 찾을 수 없음!"
  -
   #: ../plugin/ImportUrl.php:132
   msgid "Import URL"
   msgstr "URL 가져오기"
  @@ -799,51 +635,661 @@
   msgid "Keywords list %s (or %s)"
   msgstr "%s순 키워드 목록 (혹은 %s순)"
   
  -#: ../plugin/Keywords.php:716
  -#, c-format
  -msgid "Select keywords for %s"
  -msgstr "%s에 대해 키워드를 고르세요"
  +#: ../plugin/Keywords.php:716
  +#, c-format
  +msgid "Select keywords for %s"
  +msgstr "%s에 대해 키워드를 고르세요"
  +
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1549 ../wikilib.php:3155
  +msgid "Use more specific text"
  +msgstr "좀 더 자세히 입력하세요"
  +
  +#: ../plugin/LikePages.php:79
  +msgid "No metadb found"
  +msgstr "metadb가 없습니다"
  +
  +#: ../plugin/LikePages.php:120
  +msgid "These pages share a similar word..."
  +msgstr "비슷한 이름이 부분적으로 포함된 페이지..."
  +
  +#: ../plugin/LikePages.php:134
  +msgid "These pages share an initial or final title word..."
  +msgstr "처음과 마지막부분의 이름이 포함된 페이지..."
  +
  +#: ../plugin/LikePages.php:158
  +msgid "No similar pages found"
  +msgstr "비슷한 페이지가 없습니다"
  +
  +#: ../plugin/LikePages.php:161
  +#, c-format
  +msgid "Like \"%s\""
  +msgstr "\"%s\"와 비슷한"
  +
  +#: ../plugin/LikePages.php:166
  +msgid "If you can't find this page, "
  +msgstr "페이지를 찾으실 수 없으면"
  +
  +#: ../plugin/LikePages.php:168
  +msgid "You are strongly recommened to find it in MetaWikis. "
  +msgstr "메타위키를 찾아보실 것을 권해드립니다. "
  +
  +#: ../plugin/LikePages.php:169
  +msgid "Search all MetaWikis"
  +msgstr "모든 메타위키 검색"
  +
  +#: ../plugin/LikePages.php:170
  +msgid "Slow Slow"
  +msgstr "매우 느림"
  +
  +#: ../plugin/Navigation.php:19
  +msgid "No Index page found"
  +msgstr "인덱스 페이지가 없습니다"
  +
  +#: ../plugin/OeKaki.php:36
  +msgid "Draw a new picture"
  +msgstr "새 그림 그리기"
  +
  +#: ../plugin/OeKaki.php:118
  +msgid "Create new picture"
  +msgstr "새 그림 만들기"
  +
  +#: ../plugin/OeKaki.php:127
  +msgid "Edit Image"
  +msgstr "그림 고치기"
  +
  +#: ../plugin/PluginInfo.php:29
  +#, c-format
  +msgid "Total %s plugin activated."
  +msgstr "총 %d 개의 플러그인이 활성화됨"
  +
  +#: ../plugin/PluginInfo.php:34
  +#, c-format
  +msgid "%s is internal plugin."
  +msgstr "%s은(는) 내부 플러그인입니다."
  +
  +#: ../plugin/PluginInfo.php:36
  +#, c-format
  +msgid "%s plugin is not found."
  +msgstr "%s 플러그인을 찾을 수 없습니다"
  +
  +#: ../plugin/PluginInfo.php:50 ../plugin/admin.php:136
  +msgid "Description"
  +msgstr "설명"
  +
  +#: ../plugin/PluginInfo.php:54
  +msgid "Version"
  +msgstr "버전"
  +
  +#: ../plugin/PluginInfo.php:56 ../plugin/admin.php:139
  +msgid "Author"
  +msgstr "저자"
  +
  +#: ../plugin/PluginInfo.php:58 ../plugin/admin.php:141
  +msgid "License"
  +msgstr "저작권"
  +
  +#: ../plugin/PluginInfo.php:60 ../plugin/admin.php:143
  +msgid "Depend"
  +msgstr "의존성"
  +
  +#: ../plugin/PluginInfo.php:64 ../plugin/admin.php:147
  +msgid "URL"
  +msgstr ""
  +
  +#: ../plugin/Rating.php:60
  +msgid "Awful!"
  +msgstr "최악!"
  +
  +#: ../plugin/Rating.php:61
  +msgid "Not the worst ever."
  +msgstr "이보다 나쁠수 없음"
  +
  +#: ../plugin/Rating.php:62
  +msgid "Not bad!"
  +msgstr "나쁘지 않음!"
  +
  +#: ../plugin/Rating.php:63
  +msgid "Useful!"
  +msgstr "유용함"
  +
  +#: ../plugin/Rating.php:64
  +msgid "Very Gooood!"
  +msgstr "매우 좋음"
  +
  +#: ../plugin/Rating.php:86 ../plugin/Vote.php:67
  +#: ../plugin/security/community.php:27 ../plugin/security/community.php:37
  +#: ../plugin/security/community.php:47 ../plugin/security/community.php:62
  +#: ../plugin/security/mustlogin.php:29 ../plugin/security/mustlogin.php:40
  +#: ../plugin/security/mustlogin.php:51 ../plugin/security/mustlogin.php:67
  +#: ../plugin/security/needtologin.php:29 ../plugin/security/needtologin.php:40
  +#: ../plugin/security/needtologin.php:51 ../plugin/security/nforge.php:42
  +#: ../plugin/security/nforge.php:53 ../plugin/security/nforge.php:64
  +#: ../plugin/security/userbased.php:62
  +msgid "Please Login or make your ID on this Wiki ;)"
  +msgstr "로그인하거나 ID를 만드세요 ;)"
  +
  +#: ../plugin/Rating.php:190
  +msgid "Invalid rating request !"
  +msgstr ""
  +
  +#: ../plugin/Rating.php:205
  +msgid "Rating successfully !"
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:41
  +#, c-format
  +msgid "%d minute ago"
  +msgstr "%s분 전"
  +
  +#: ../plugin/RecentChanges.php:43
  +#, c-format
  +msgid "%d hours ago"
  +msgstr "%s시간 전"
  +
  +#: ../plugin/RecentChanges.php:45
  +#, c-format
  +msgid "%d days ago"
  +msgstr "%s일 전"
  +
  +#: ../plugin/RecentChanges.php:86
  +msgid "Recent Changes"
  +msgstr "최근 변경내역"
  +
  +#: ../plugin/RecentChanges.php:126
  +msgid "Change Date"
  +msgstr "변경일"
  +
  +#: ../plugin/RecentChanges.php:131
  +msgid "Hits"
  +msgstr "조회수"
  +
  +#: ../plugin/RecentChanges.php:182
  +msgid "Show changes for "
  +msgstr ""
  +
  +#: ../plugin/RecentChanges.php:187
  +msgid "days ago"
  +msgstr "몇일 전"
  +
  +#: ../plugin/RecentChanges.php:293
  +msgid "set bookmark"
  +msgstr "북마크"
  +
  +#: ../plugin/RecentChanges.php:298
  +msgid "Bookmark"
  +msgstr "북마크"
  +
  +#: ../plugin/RecentChanges.php:375
  +#, c-format
  +msgid "%s changes"
  +msgstr "%s회 고침"
  +
  +#: ../plugin/SWFUpload.php:137
  +msgid "Files..."
  +msgstr "파일..."
  +
  +#: ../plugin/SWFUpload.php:138 ../plugin/UploadFile.php:443
  +#: ../plugin/UploadForm.php:270
  +msgid "Upload files"
  +msgstr "파일올리기"
  +
  +#: ../plugin/SWFUpload.php:139
  +msgid "Cancel All files"
  +msgstr "모두 취소"
  +
  +#: ../plugin/SlideShow.php:28
  +msgid "No page found"
  +msgstr "페이지가 없습니다"
  +
  +#: ../plugin/SlideShow.php:101
  +msgid "Start:"
  +msgstr "시작:"
  +
  +#: ../plugin/SlideShow.php:110
  +msgid "End:"
  +msgstr "끝:"
  +
  +#: ../plugin/SlideShow.php:120 ../plugin/pageview.php:75
  +msgid "Next:"
  +msgstr "다음:"
  +
  +#: ../plugin/SlideShow.php:130
  +msgid "Prev:"
  +msgstr "이전:"
  +
  +#: ../plugin/SlideShow.php:137
  +msgid "Return"
  +msgstr "돌아가기"
  +
  +#: ../plugin/Stat.php:22
  +msgid "Diff"
  +msgstr "변화"
  +
  +#: ../plugin/Stat.php:26
  +msgid "Revision Statistics"
  +msgstr ""
  +
  +#: ../plugin/SystemInfo.php:16
  +msgid "Number of Pages"
  +msgstr "페이지 개수"
  +
  +#: ../plugin/SystemInfo.php:17
  +msgid "HTTP Server Version"
  +msgstr "HTTP 서버 버전"
  +
  +#: ../plugin/SystemInfo.php:18
  +msgid "MoniWiki Version"
  +msgstr "모니위키 버전"
  +
  +#: ../plugin/SystemInfo.php:19
  +msgid "PHP Version"
  +msgstr "PHP 버전"
  +
  +#: ../plugin/Tour.php:57
  +msgid "BackLinks"
  +msgstr "역링크"
  +
  +#: ../plugin/Tour.php:61
  +msgid "Keywords"
  +msgstr "키워드"
  +
  +#: ../plugin/Tour.php:70
  +#, c-format
  +msgid " from %s"
  +msgstr " %s에 대한"
  +
  +#: ../plugin/Tour.php:73
  +#, c-format
  +msgid "%s Tour %s"
  +msgstr "%2$s %1$s 여행"
  +
  +#: ../plugin/Tour.php:121
  +msgid "links"
  +msgstr "연결"
  +
  +#: ../plugin/Tour.php:123
  +msgid "deeper"
  +msgstr "깊게"
  +
  +#: ../plugin/Tour.php:124
  +#, c-format
  +msgid "More %s or more %s"
  +msgstr "더 많은 %s 혹은 %s"
  +
  +#: ../plugin/Tour.php:139
  +#, c-format
  +msgid "Total %d related keywords"
  +msgstr "%d 개의 연관된 키워드"
  +
  +#: ../plugin/Tour.php:142
  +#, c-format
  +msgid "Total %d related pages"
  +msgstr "%d 개의 연관된 페이지"
  +
  +#: ../plugin/TwinPages.php:13
  +#, c-format
  +msgid "TwinPages of %s"
  +msgstr "%s의 쌍둥이 페이지"
  +
  +#: ../plugin/TwinPages.php:20 ../wiki.php:5645
  +msgid "See [TwinPages]: "
  +msgstr ""
  +
  +#: ../plugin/TwinPages.php:22
  +msgid "No TwinPages found."
  +msgstr "쌍둥이 페이지가 없습니다"
  +
  +#: ../plugin/UploadFile.php:11
  +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:13
  +msgid ""
  +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in "
  +"the HTML form"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:15
  +msgid "The uploaded file was only partially uploaded"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:17
  +msgid "No file was uploaded"
  +msgstr "업로드된 파일이 없습니다"
  +
  +#: ../plugin/UploadFile.php:19
  +msgid "Missing a temporary folder"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:21
  +msgid "Failed to write file to disk"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:23
  +msgid "File upload stopped by extension"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:25
  +msgid "Unknown upload error"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:184 ../plugin/UploadFile.php:198
  +#, c-format
  +msgid "The %s type of %s is not allowed to upload"
  +msgstr "%s의 %s 형식은 업로드가 허락되지 않습니다"
  +
  +#: ../plugin/UploadFile.php:200
  +#, c-format
  +msgid "%s is not allowed to upload"
  +msgstr "%s은(는) 업로드가 허락되지 않습니다"
  +
  +#: ../plugin/UploadFile.php:255
  +#, c-format
  +msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
  +msgstr "파일 확장자를 \"%s\"에서 \"%s\"(으)로 바꿀 수 없음."
  +
  +#: ../plugin/UploadFile.php:273
  +msgid "ERROR:"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:305
  +#, c-format
  +msgid "File \"%s\" is uploaded successfully"
  +msgstr "\"%s\"파일이 성공적으로 올라갔습니다"
  +
  +#: ../plugin/UploadFile.php:372
  +msgid "Files are uploaded successfully"
  +msgstr "파일이 성공적으로 올라갔습니다."
  +
  +#: ../plugin/UploadFile.php:408
  +msgid "Multi upload form"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:421
  +msgid "Replace original file"
  +msgstr "원본 파일 교체"
  +
  +#: ../plugin/UploadFile.php:422
  +msgid "Rename if it already exist"
  +msgstr "이미 있을경우 이름 바꿈"
  +
  +#: ../plugin/UploadFile.php:427 ../plugin/rename.php:69
  +msgid "Rename"
  +msgstr "이름바꾸기"
  +
  +#: ../plugin/UploadFile.php:432
  +msgid "Upload"
  +msgstr "올리기"
  +
  +#: ../plugin/UploadFile.php:435
  +#, c-format
  +msgid "or %s."
  +msgstr "혹은 %s."
  +
  +#: ../plugin/UploadFile.php:435
  +msgid "Multiple Upload files"
  +msgstr "여러파일 올리기"
  +
  +#: ../plugin/UploadForm.php:19
  +msgid "Successfully Uploaded"
  +msgstr "성공적으로 올라감"
  +
  +#: ../plugin/UploadForm.php:20
  +msgid "Choose File"
  +msgstr "파일찾기"
  +
  +#: ../plugin/UploadForm.php:268
  +msgid "add files"
  +msgstr "파일추가"
  +
  +#: ../plugin/UploadForm.php:269
  +msgid "add a file"
  +msgstr "파일추가"
  +
  +#: ../plugin/UploadForm.php:271
  +msgid "Reset"
  +msgstr ""
  +
  +#: ../plugin/UploadForm.php:272
  +msgid "Attachments"
  +msgstr "첨부"
  +
  +#: ../plugin/UploadedFiles.php:303
  +msgid "File name"
  +msgstr "파일 이름"
  +
  +#: ../plugin/UploadedFiles.php:304
  +msgid "Size"
  +msgstr "크기"
  +
  +#: ../plugin/UploadedFiles.php:355
  +msgid "Next page &raquo;"
  +msgstr "다음 페이지 &raquo;"
  +
  +#: ../plugin/UploadedFiles.php:357
  +msgid "&laquo; First page"
  +msgstr "&laquo; 첫 페이지"
  +
  +#: ../plugin/UploadedFiles.php:448
  +#, c-format
  +msgid "Total %d files"
  +msgstr "총 %d 개 파일"
  +
  +#: ../plugin/UploadedFiles.php:453 ../plugin/rcsimport.php:32
  +#: ../plugin/rcsimport.php:88 ../plugin/rename.php:77 ../plugin/revert.php:82
  +#: ../plugin/userinfo.php:37 ../wikilib.php:1387 ../wikilib.php:2395
  +msgid "Password"
  +msgstr "비밀번호"
  +
  +#: ../plugin/UploadedFiles.php:454 ../wikilib.php:1365
  +msgid "Delete selected files"
  +msgstr "선택된 파일 지우기"
  +
  +#: ../plugin/VisualTour.php:133
  +msgid "Normal"
  +msgstr "보통"
  +
  +#: ../plugin/VisualTour.php:135
  +msgid "Wider"
  +msgstr "넓게"
  +
  +#: ../plugin/VisualTour.php:137
  +msgid "Deeper"
  +msgstr "깊게"
  +
  +#: ../plugin/Vote.php:113
  +msgid "Voted successfully"
  +msgstr "투표가 성공되었습니다"
  +
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2904
  +msgid "Others"
  +msgstr ""
  +
  +#: ../plugin/aclinfo.php:15
  +msgid "ACL is not enabled on this Wiki"
  +msgstr "ACL이 활성화되어있지 않습니다"
  +
  +#: ../plugin/aclinfo.php:21
  +msgid "Your ACL Info"
  +msgstr "ACL 정보"
  +
  +#: ../plugin/aclinfo.php:23
  +msgid "You are wiki owner"
  +msgstr "위키 소유자입니다"
  +
  +#: ../plugin/aclinfo.php:25
  +msgid "You are wiki master"
  +msgstr "위키 관리자입니다"
  +
  +#: ../plugin/aclinfo.php:27
  +msgid "Allowed actions"
  +msgstr "허락된 액션"
  +
  +#: ../plugin/aclinfo.php:32
  +msgid "Denied actions"
  +msgstr "거부된 액션"
  +
  +#: ../plugin/aclinfo.php:38
  +msgid "Protected actions"
  +msgstr "제한된 액션"
  +
  +#: ../plugin/admin.php:191
  +msgid "Enabled plugins"
  +msgstr "활성화된 플러그인"
  +
  +#: ../plugin/admin.php:193
  +msgid "Disabled plugins"
  +msgstr "비활성화된 플러그인"
  +
  +#: ../plugin/admin.php:201
  +msgid "Enabled processors"
  +msgstr "활성화된 프로세서"
  +
  +#: ../plugin/admin.php:203
  +msgid "Disabled processors"
  +msgstr "비활성화된 프로세서"
  +
  +#: ../plugin/admin.php:206
  +msgid "Plugin/Processor settings are updated"
  +msgstr "플러그인/프로세서 세팅이 갱신됨"
  +
  +#: ../plugin/admin.php:212
  +msgid "Enable/disable plugins and processors"
  +msgstr "플러그인과 프로세서 활성화/비활성화"
  +
  +#: ../plugin/atom.php:64 ../plugin/rss_rc.php:62
  +msgid "show changes"
  +msgstr "바뀐점 보기"
  +
  +#: ../plugin/backup.php:42
  +msgid "Your wiki is backuped successfully"
  +msgstr "백업이 성공적으로 완료되었습니다"
  +
  +#: ../plugin/backup.php:49
  +msgid "Backup failed !"
  +msgstr "백업 실패 !"
  +
  +#: ../plugin/backup.php:54
  +msgid "Did you want to Backup your wiki ?"
  +msgstr "위키를 백업하시겠습니까 ?"
  +
  +#: ../plugin/bbs.php:493
  +msgid "This bbs does not exists yet. Please save this page first"
  +msgstr "현 BBS가 존재하지 않습ㄴ디ㅏ. 먼저 페이지를 저장하세요"
  +
  +#: ../plugin/bbs.php:617
  +msgid "No"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:626
  +msgid "Edit"
  +msgstr "고치기"
  +
  +#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1388
  +msgid "Delete"
  +msgstr "지우기"
  +
  +#: ../plugin/bbs.php:657
  +msgid "Please check article numbers."
  +msgstr "글번호를 확인해 주세요"
  +
  +#: ../plugin/bbs.php:737
  +msgid "More"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:782
  +msgid "New"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:784
  +msgid "Read"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:800
  +#, c-format
  +msgid "Total %s articles."
  +msgstr "총 %d 개의 글"
  +
  +#: ../plugin/bbs.php:836
  +#, c-format
  +msgid "Your IP address is not allowed to %s at this BBS"
  +msgstr "IP 주소가 '%s' BBS에서 허락되지 않았습니다."
  +
  +#: ../plugin/bbs.php:890
  +msgid "Successfully deleted."
  +msgstr "성공적으로 지워졌음."
  +
  +#: ../plugin/bbs.php:922
  +msgid "Fail to post comment."
  +msgstr "댓글 등록 실패."
  +
  +#: ../plugin/bbs.php:932
  +#, c-format
  +msgid "The article %s will be deleted."
  +msgstr "게시글 %s(이)가 지워질 것입니다."
  +
  +#: ../plugin/bbs.php:974
  +msgid "Invalid HomePage address."
  +msgstr "잘못된 홈페이지 주소."
  +
  +#: ../plugin/bbs.php:987
  +msgid "No Name error."
  +msgstr "이름이 없습ㄴ다."
  +
  +#: ../plugin/bbs.php:997
  +msgid "No Subject error."
  +msgstr "제목이 없습니다."
  +
  +#: ../plugin/bbs.php:1025
  +msgid "New post added successfully"
  +msgstr "새글이 성공적으로 등록되었습니다."
   
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1556 ../wikilib.php:3162
  -msgid "Use more specific text"
  -msgstr "좀 더 자세히 입력하세요"
  +#: ../plugin/bookmark.php:33
  +msgid "Invalid bookmark!"
  +msgstr "잘못된 북마크!"
   
  -#: ../plugin/LikePages.php:79
  -msgid "No metadb found"
  -msgstr "metadb가 없습니다"
  +#: ../plugin/cacheadmin.php:105
  +msgid "You are not WikiMaster!!"
  +msgstr "위키관리자가 아닙니다!!"
   
  -#: ../plugin/LikePages.php:120
  -msgid "These pages share a similar word..."
  -msgstr "비슷한 이름이 부분적으로 포함된 페이지..."
  +#: ../plugin/cacheadmin.php:120
  +msgid "Clear cache dirs"
  +msgstr "캐쉬 디렉토리 지우기"
   
  -#: ../plugin/LikePages.php:134
  -msgid "These pages share an initial or final title word..."
  -msgstr "처음과 마지막부분의 이름이 포함된 페이지..."
  +#: ../plugin/chat.php:37
  +msgid "No messages"
  +msgstr "메시지 없음"
   
  -#: ../plugin/LikePages.php:158
  -msgid "No similar pages found"
  -msgstr "비슷한 페이지가 없습니다"
  +#: ../plugin/chmod.php:18
  +#, c-format
  +msgid "Permission of \"%s\" changed !"
  +msgstr ""
   
  -#: ../plugin/LikePages.php:161
  +#: ../plugin/chmod.php:24
   #, c-format
  -msgid "Like \"%s\""
  -msgstr "\"%s\"와 비슷한"
  +msgid "Fail to chmod \"%s\" !"
  +msgstr ""
   
  -#: ../plugin/LikePages.php:166
  -msgid "If you can't find this page, "
  -msgstr "페이지를 찾으실 수 없으면"
  +#: ../plugin/chmod.php:35
  +#, c-format
  +msgid "Change permission of \"%s\""
  +msgstr ""
   
  -#: ../plugin/LikePages.php:168
  -msgid "You are strongly recommened to find it in MetaWikis. "
  -msgstr "메타위키를 찾아보실 것을 권해드립니다. "
  +#: ../plugin/css.php:34 ../plugin/css.php:42
  +msgid "Back to UserPreferences"
  +msgstr "UserPreferences로 가기"
   
  -#: ../plugin/LikePages.php:169
  -msgid "Search all MetaWikis"
  -msgstr "모든 메타위키 검색"
  +#: ../plugin/css.php:68
  +msgid "CSS disabled !"
  +msgstr ""
   
  -#: ../plugin/LikePages.php:170
  -msgid "Slow Slow"
  -msgstr "매우 느림"
  +#: ../plugin/format.php:17
  +msgid "It is a XML format !"
  +msgstr ""
  +
  +#: ../plugin/html2pdf.php:30
  +msgid "The TCPDF class not found!"
  +msgstr "TCPDF 클래스 찾을 수 없음!"
   
   #: ../plugin/login.php:31
   msgid "Login:"
  @@ -877,7 +1323,7 @@
   msgid "Edit man page"
   msgstr "man 페이지 고치기"
   
  -#: ../plugin/minilogin.php:18 ../wikilib.php:2487
  +#: ../plugin/minilogin.php:18 ../wikilib.php:2480
   msgid "Login or Join"
   msgstr "로그인 혹은 가입"
   
  @@ -908,10 +1354,6 @@
   msgid "Local translation files are successfully translated !\n"
   msgstr "번역이 성공적으로 갱신되었습니다\n"
   
  -#: ../plugin/Navigation.php:19
  -msgid "No Index page found"
  -msgstr "인덱스 페이지가 없습니다"
  -
   #: ../plugin/new.php:13 ../plugin/new.php:28
   msgid "Create a new page"
   msgstr "페이지 만들기"
  @@ -924,18 +1366,6 @@
   msgid "Normalize this page name"
   msgstr "페이지이름 정규화하기"
   
  -#: ../plugin/OeKaki.php:36
  -msgid "Draw a new picture"
  -msgstr "새 그림 그리기"
  -
  -#: ../plugin/OeKaki.php:118
  -msgid "Create new picture"
  -msgstr "새 그림 만들기"
  -
  -#: ../plugin/OeKaki.php:127
  -msgid "Edit Image"
  -msgstr "그림 고치기"
  -
   #: ../plugin/pagelist.php:118 ../plugin/pagelist.php:135
   #, c-format
   msgid "[%sh %sm ago]"
  @@ -945,29 +1375,6 @@
   msgid "First:"
   msgstr ""
   
  -#: ../plugin/pageview.php:75 ../plugin/SlideShow.php:120
  -msgid "Next:"
  -msgstr "다음:"
  -
  -#: ../plugin/PluginInfo.php:29
  -#, c-format
  -msgid "Total %s plugin activated."
  -msgstr "총 %d 개의 플러그인이 활성화됨"
  -
  -#: ../plugin/PluginInfo.php:34
  -#, c-format
  -msgid "%s is internal plugin."
  -msgstr "%s은(는) 내부 플러그인입니다."
  -
  -#: ../plugin/PluginInfo.php:36
  -#, c-format
  -msgid "%s plugin is not found."
  -msgstr "%s 플러그인을 찾을 수 없습니다"
  -
  -#: ../plugin/PluginInfo.php:54
  -msgid "Version"
  -msgstr "버전"
  -
   #: ../plugin/print.php:28
   #, c-format
   msgid "Retrieved from %s"
  @@ -1014,60 +1421,11 @@
   msgid "Do you want to customize your quicklinks ?"
   msgstr "바로가기를 바꾸고 싶으신가요?"
   
  -#: ../plugin/Rating.php:60
  -msgid "Awful!"
  -msgstr "최악!"
  -
  -#: ../plugin/Rating.php:61
  -msgid "Not the worst ever."
  -msgstr "이보다 나쁠수 없음"
  -
  -#: ../plugin/Rating.php:62
  -msgid "Not bad!"
  -msgstr "나쁘지 않음!"
  -
  -#: ../plugin/Rating.php:63
  -msgid "Useful!"
  -msgstr "유용함"
  -
  -#: ../plugin/Rating.php:64
  -msgid "Very Gooood!"
  -msgstr "매우 좋음"
  -
  -#: ../plugin/Rating.php:86 ../plugin/security/community.php:27
  -#: ../plugin/security/community.php:37 ../plugin/security/community.php:47
  -#: ../plugin/security/community.php:62 ../plugin/security/mustlogin.php:29
  -#: ../plugin/security/mustlogin.php:40 ../plugin/security/mustlogin.php:51
  -#: ../plugin/security/mustlogin.php:67 ../plugin/security/needtologin.php:29
  -#: ../plugin/security/needtologin.php:40 ../plugin/security/needtologin.php:51
  -#: ../plugin/security/userbased.php:62 ../plugin/Vote.php:67
  -msgid "Please Login or make your ID on this Wiki ;)"
  -msgstr "로그인하거나 ID를 만드세요 ;)"
  -
  -#: ../plugin/Rating.php:190
  -msgid "Invalid rating request !"
  -msgstr ""
  -
  -#: ../plugin/Rating.php:205
  -msgid "Rating successfully !"
  -msgstr ""
  -
   #: ../plugin/rawblog.php:63 ../plugin/rawblog.php:73
   #, c-format
   msgid "Delete Blog entry \"%s\""
   msgstr "\"%s\"에서 블로그 항목 지우기"
   
  -#: ../plugin/rcsimport.php:32 ../plugin/rcsimport.php:88
  -#: ../plugin/rename.php:77 ../plugin/revert.php:82
  -#: ../plugin/UploadedFiles.php:453 ../plugin/userinfo.php:37
  -#: ../wikilib.php:1394 ../wikilib.php:2402
  -msgid "Password"
  -msgstr "비밀번호"
  -
  -#: ../plugin/rcsimport.php:76
  -msgid "Page name"
  -msgstr "페이지 이름"
  -
   #: ../plugin/rcs.php:13
   #, c-format
   msgid "%s does not support rcs options."
  @@ -1092,6 +1450,10 @@
   msgid "Only WikiMaster can execute rcs"
   msgstr "위키관리자만이 rcs를 실행할 수 있습니다"
   
  +#: ../plugin/rcsimport.php:76
  +msgid "Page name"
  +msgstr "페이지 이름"
  +
   #: ../plugin/rcspurge.php:24
   msgid "Invalid rcspurge range"
   msgstr "잘못된 rcspurge 범위"
  @@ -1111,54 +1473,6 @@
   msgid "BlogChanges at %s"
   msgstr ""
   
  -#: ../plugin/RecentChanges.php:41
  -#, c-format
  -msgid "%d minute ago"
  -msgstr "%s분 전"
  -
  -#: ../plugin/RecentChanges.php:43
  -#, c-format
  -msgid "%d hours ago"
  -msgstr "%s시간 전"
  -
  -#: ../plugin/RecentChanges.php:45
  -#, c-format
  -msgid "%d days ago"
  -msgstr "%s일 전"
  -
  -#: ../plugin/RecentChanges.php:86
  -msgid "Recent Changes"
  -msgstr "최근 변경내역"
  -
  -#: ../plugin/RecentChanges.php:126
  -msgid "Change Date"
  -msgstr "변경일"
  -
  -#: ../plugin/RecentChanges.php:131
  -msgid "Hits"
  -msgstr "조회수"
  -
  -#: ../plugin/RecentChanges.php:182
  -msgid "Show changes for "
  -msgstr ""
  -
  -#: ../plugin/RecentChanges.php:187
  -msgid "days ago"
  -msgstr "몇일 전"
  -
  -#: ../plugin/RecentChanges.php:293
  -msgid "set bookmark"
  -msgstr "북마크"
  -
  -#: ../plugin/RecentChanges.php:298
  -msgid "Bookmark"
  -msgstr "북마크"
  -
  -#: ../plugin/RecentChanges.php:375
  -#, c-format
  -msgid "%s changes"
  -msgstr "%s회 고침"
  -
   #: ../plugin/referer.php:139
   msgid "Referer history"
   msgstr ""
  @@ -1196,10 +1510,6 @@
   msgid "New name:"
   msgstr "새이름:"
   
  -#: ../plugin/rename.php:69 ../plugin/UploadFile.php:427
  -msgid "Rename"
  -msgstr "이름바꾸기"
  -
   #: ../plugin/rename.php:74
   msgid "Rename and fix Backlinks"
   msgstr "이름 바꾸고 그 역링크 수정"
  @@ -1208,7 +1518,7 @@
   msgid "Only WikiMaster can rename this page"
   msgstr "위키관리자만이 페이지 이름을 바꿀 수 있습니다"
   
  -#: ../plugin/rename.php:79 ../wikilib.php:1440
  +#: ../plugin/rename.php:79 ../wikilib.php:1433
   msgid "with revision history"
   msgstr "버전 히스토리와 함께"
   
  @@ -1276,7 +1586,7 @@
   msgid "Are you really want to revert this page ?"
   msgstr "정말로 되돌리시겠습니까 ?"
   
  -#: ../plugin/revert.php:74 ../wikilib.php:1207
  +#: ../plugin/revert.php:74 ../wikilib.php:1200
   msgid "Summary"
   msgstr "요약"
   
  @@ -1343,6 +1653,8 @@
   #: ../plugin/security/mustlogin.php:28 ../plugin/security/mustlogin.php:39
   #: ../plugin/security/mustlogin.php:50 ../plugin/security/needtologin.php:28
   #: ../plugin/security/needtologin.php:39 ../plugin/security/needtologin.php:50
  +#: ../plugin/security/nforge.php:41 ../plugin/security/nforge.php:52
  +#: ../plugin/security/nforge.php:63
   #, c-format
   msgid "You are not allowed to '%s' on this page"
   msgstr "'%s'는 허락되지 않은 액션입니다."
  @@ -1395,26 +1707,6 @@
   msgid "Trackback sent"
   msgstr "트랙백"
   
  -#: ../plugin/SlideShow.php:28
  -msgid "No page found"
  -msgstr "페이지가 없습니다"
  -
  -#: ../plugin/SlideShow.php:101
  -msgid "Start:"
  -msgstr "시작:"
  -
  -#: ../plugin/SlideShow.php:110
  -msgid "End:"
  -msgstr "끝:"
  -
  -#: ../plugin/SlideShow.php:130
  -msgid "Prev:"
  -msgstr "이전:"
  -
  -#: ../plugin/SlideShow.php:137
  -msgid "Return"
  -msgstr "돌아가기"
  -
   #: ../plugin/subscribe.php:24 ../plugin/subscribe.php:28
   msgid "You did'nt subscribed any pages yet."
   msgstr "아직 구독중인 페이지가 없습니다."
  @@ -1457,42 +1749,13 @@
   msgstr "\"%s\"(은)는 이미 구독중입니다."
   
   #: ../plugin/subscribe.php:100
  -#, c-format
  -msgid "Do you want to subscribe \"%s\" ?"
  -msgstr "\"%s\"을(를) 구독하시겠습니까 ?"
  -
  -#: ../plugin/subscribe.php:106
  -msgid "Subscribed pages"
  -msgstr "구독 목록"
  -
  -#: ../plugin/SWFUpload.php:137
  -msgid "Files..."
  -msgstr "파일..."
  -
  -#: ../plugin/SWFUpload.php:138 ../plugin/UploadFile.php:443
  -#: ../plugin/UploadForm.php:270
  -msgid "Upload files"
  -msgstr "파일올리기"
  -
  -#: ../plugin/SWFUpload.php:139
  -msgid "Cancel All files"
  -msgstr "모두 취소"
  -
  -#: ../plugin/SystemInfo.php:16
  -msgid "Number of Pages"
  -msgstr "페이지 개수"
  -
  -#: ../plugin/SystemInfo.php:17
  -msgid "HTTP Server Version"
  -msgstr "HTTP 서버 버전"
  -
  -#: ../plugin/SystemInfo.php:18
  -msgid "MoniWiki Version"
  -msgstr "모니위키 버전"
  +#, c-format
  +msgid "Do you want to subscribe \"%s\" ?"
  +msgstr "\"%s\"을(를) 구독하시겠습니까 ?"
   
  -#: ../plugin/SystemInfo.php:19
  -msgid "PHP Version"
  -msgstr "PHP 버전"
  +#: ../plugin/subscribe.php:106
  +msgid "Subscribed pages"
  +msgstr "구독 목록"
   
   #: ../plugin/theme.php:29
   msgid "Theme cleared. Goto UserPreferences."
  @@ -1518,47 +1781,6 @@
   msgid "Invalid use of ticket"
   msgstr ""
   
  -#: ../plugin/Tour.php:57
  -msgid "BackLinks"
  -msgstr "역링크"
  -
  -#: ../plugin/Tour.php:61
  -msgid "Keywords"
  -msgstr "키워드"
  -
  -#: ../plugin/Tour.php:70
  -#, c-format
  -msgid " from %s"
  -msgstr " %s에 대한"
  -
  -#: ../plugin/Tour.php:73
  -#, c-format
  -msgid "%s Tour %s"
  -msgstr "%2$s %1$s 여행"
  -
  -#: ../plugin/Tour.php:121
  -msgid "links"
  -msgstr "연결"
  -
  -#: ../plugin/Tour.php:123
  -msgid "deeper"
  -msgstr "깊게"
  -
  -#: ../plugin/Tour.php:124
  -#, c-format
  -msgid "More %s or more %s"
  -msgstr "더 많은 %s 혹은 %s"
  -
  -#: ../plugin/Tour.php:139
  -#, c-format
  -msgid "Total %d related keywords"
  -msgstr "%d 개의 연관된 키워드"
  -
  -#: ../plugin/Tour.php:142
  -#, c-format
  -msgid "Total %d related pages"
  -msgstr "%d 개의 연관된 페이지"
  -
   #: ../plugin/trackback.php:53
   msgid "TrackBack is not activated !"
   msgstr "TrackBack이 활성화되지 않았습니다 !"
  @@ -1585,155 +1807,6 @@
   msgid "No TrackBack entry found for %s"
   msgstr "%s에 대한 트랙백 항목을 찾을 수 없음"
   
  -#: ../plugin/TwinPages.php:13
  -#, c-format
  -msgid "TwinPages of %s"
  -msgstr "%s의 쌍둥이 페이지"
  -
  -#: ../plugin/TwinPages.php:20 ../wiki.php:5645
  -msgid "See [TwinPages]: "
  -msgstr ""
  -
  -#: ../plugin/TwinPages.php:22
  -msgid "No TwinPages found."
  -msgstr "쌍둥이 페이지가 없습니다"
  -
  -#: ../plugin/UploadedFiles.php:303
  -msgid "File name"
  -msgstr "파일 이름"
  -
  -#: ../plugin/UploadedFiles.php:304
  -msgid "Size"
  -msgstr "크기"
  -
  -#: ../plugin/UploadedFiles.php:355
  -msgid "Next page &raquo;"
  -msgstr "다음 페이지 &raquo;"
  -
  -#: ../plugin/UploadedFiles.php:357
  -msgid "&laquo; First page"
  -msgstr "&laquo; 첫 페이지"
  -
  -#: ../plugin/UploadedFiles.php:448
  -#, c-format
  -msgid "Total %d files"
  -msgstr "총 %d 개 파일"
  -
  -#: ../plugin/UploadedFiles.php:454 ../wikilib.php:1372
  -msgid "Delete selected files"
  -msgstr "선택된 파일 지우기"
  -
  -#: ../plugin/UploadFile.php:11
  -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:13
  -msgid ""
  -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in "
  -"the HTML form"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:15
  -msgid "The uploaded file was only partially uploaded"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:17
  -msgid "No file was uploaded"
  -msgstr "업로드된 파일이 없습니다"
  -
  -#: ../plugin/UploadFile.php:19
  -msgid "Missing a temporary folder"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:21
  -msgid "Failed to write file to disk"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:23
  -msgid "File upload stopped by extension"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:25
  -msgid "Unknown upload error"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:184 ../plugin/UploadFile.php:198
  -#, c-format
  -msgid "The %s type of %s is not allowed to upload"
  -msgstr "%s의 %s 형식은 업로드가 허락되지 않습니다"
  -
  -#: ../plugin/UploadFile.php:200
  -#, c-format
  -msgid "%s is not allowed to upload"
  -msgstr "%s은(는) 업로드가 허락되지 않습니다"
  -
  -#: ../plugin/UploadFile.php:255
  -#, c-format
  -msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
  -msgstr "파일 확장자를 \"%s\"에서 \"%s\"(으)로 바꿀 수 없음."
  -
  -#: ../plugin/UploadFile.php:273
  -msgid "ERROR:"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:305
  -#, c-format
  -msgid "File \"%s\" is uploaded successfully"
  -msgstr "\"%s\"파일이 성공적으로 올라갔습니다"
  -
  -#: ../plugin/UploadFile.php:372
  -msgid "Files are uploaded successfully"
  -msgstr "파일이 성공적으로 올라갔습니다."
  -
  -#: ../plugin/UploadFile.php:408
  -msgid "Multi upload form"
  -msgstr ""
  -
  -#: ../plugin/UploadFile.php:421
  -msgid "Replace original file"
  -msgstr "원본 파일 교체"
  -
  -#: ../plugin/UploadFile.php:422
  -msgid "Rename if it already exist"
  -msgstr "이미 있을경우 이름 바꿈"
  -
  -#: ../plugin/UploadFile.php:432
  -msgid "Upload"
  -msgstr "올리기"
  -
  -#: ../plugin/UploadFile.php:435
  -#, c-format
  -msgid "or %s."
  -msgstr "혹은 %s."
  -
  -#: ../plugin/UploadFile.php:435
  -msgid "Multiple Upload files"
  -msgstr "여러파일 올리기"
  -
  -#: ../plugin/UploadForm.php:19
  -msgid "Successfully Uploaded"
  -msgstr "성공적으로 올라감"
  -
  -#: ../plugin/UploadForm.php:20
  -msgid "Choose File"
  -msgstr "파일찾기"
  -
  -#: ../plugin/UploadForm.php:268
  -msgid "add files"
  -msgstr "파일추가"
  -
  -#: ../plugin/UploadForm.php:269
  -msgid "add a file"
  -msgstr "파일추가"
  -
  -#: ../plugin/UploadForm.php:271
  -msgid "Reset"
  -msgstr ""
  -
  -#: ../plugin/UploadForm.php:272
  -msgid "Attachments"
  -msgstr "첨부"
  -
   #: ../plugin/userform.php:36 ../plugin/userform.php:39
   msgid "Successfully confirmed"
   msgstr ""
  @@ -1781,7 +1854,7 @@
   msgid "Cookie deleted !"
   msgstr "쿠키가 지워졌습니다 !"
   
  -#: ../plugin/userform.php:110 ../wikilib.php:2562
  +#: ../plugin/userform.php:110 ../wikilib.php:2555
   msgid "E-mail new password"
   msgstr "새 비밀번호 받기"
   
  @@ -1972,22 +2045,6 @@
   msgid "User \"%s\" are deleted !"
   msgstr "사용자 \"%s\"(이)가 지워짐 !"
   
  -#: ../plugin/VisualTour.php:133
  -msgid "Normal"
  -msgstr "보통"
  -
  -#: ../plugin/VisualTour.php:135
  -msgid "Wider"
  -msgstr "넓게"
  -
  -#: ../plugin/VisualTour.php:137
  -msgid "Deeper"
  -msgstr "깊게"
  -
  -#: ../plugin/Vote.php:113
  -msgid "Voted successfully"
  -msgstr "투표가 성공되었습니다"
  -
   #: ../plugin/whois.php:119
   #, c-format
   msgid "Could not connect to %s server"
  @@ -1998,10 +2055,6 @@
   msgid "Whois search result for %s"
   msgstr "%s에 대한 Whois 검색 결과"
   
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2911
  -msgid "Others"
  -msgstr ""
  -
   #: ../wiki.php:1316
   #, c-format
   msgid "Rename %s to %s"
  @@ -2078,7 +2131,7 @@
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:5647 ../wiki.php:5656 ../wikilib.php:1659
  +#: ../wiki.php:5647 ../wiki.php:5656 ../wikilib.php:1652
   msgid "Create this page"
   msgstr "페이지 만들기"
   
  @@ -2139,383 +2192,354 @@
   msgid "Please enter the valid password"
   msgstr "정확한 비밀번호를 넣어주세요"
   
  -#: ../wikilib.php:806
  -msgid ""
  -"<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
  -"italics</i></b>''''';\n"
  -"''<i>mixed '''<b>bold</b>''' and italics</i>''; ---- horizontal rule.<br />\n"
  -"<b>Headings:</b> = Title 1 =; == Title 2 ==; === Title 3 ===;\n"
  -"==== Title 4 ====; ===== Title 5 =====.<br />\n"
  -"<b>Lists:</b> space and one of * bullets; 1., a., A., i., I. numbered "
  -"items;\n"
  -"1.#n start numbering at n; space alone indents.<br />\n"
  -"<b>Links:</b> JoinCapitalizedWords; [\"brackets and double quotes\"];\n"
  -"[bracketed words];\n"
  -"url; [url]; [url label].<br />\n"
  -"<b>Tables</b>: || cell text |||| cell text spanning two columns ||;\n"
  -"no trailing white space allowed after tables or titles.<br />\n"
  -msgstr ""
  -"<b>강조:</b> ''<i>기울임</i>''; '''<b>굵게</b>'''; '''''<b><i>굵은 기울임</"
  -"i></b>''''';\n"
  -"''<i>기울여 '''<b>굵게 </b>''' 섞어서</i>''; ---- 가로선.<br />\n"
  -"<b>제목:</b> = 제목 1 =; == 제목 2 ==; === 제목 3 ===;\n"
  -"==== 제목 4 ====; ===== 제목 5 =====.<br />\n"
  -"<b>목록:</b> 공백과 * 총알 한개; 1., a., A., i., I. 번호달린 목록;\n"
  -"1.#n 숫자 n부터 번호 매기기; 공백만 있으면 들여쓰기.<br />\n"
  -"<b>연결:</b> JoinCapitalizedWords; [\"중괄호와 큰따옴표를 써서\"];\n"
  -"[중괄호로 괄호쳐서 연결];\n"
  -"url; [url]; [url 표시될 이름].<br />\n"
  -"<b>테이블</b>: || 셀 내용 |||| 두칸에 걸친 내용 ||;<br />\n"
  -"테이블이나 제목 끝에 공백이 오면 안됩니다.<br />\n"
  -
  -#: ../wikilib.php:912
  +#: ../wikilib.php:905
   msgid "You are not allowed to edit this page !"
   msgstr "이 페이지를 고칠 수 있도록 허락되어있지 않습니다 !"
   
  -#: ../wikilib.php:920
  +#: ../wikilib.php:913
   #, c-format
   msgid "Edit %s"
   msgstr "%s 고치기"
   
  -#: ../wikilib.php:943 ../wikilib.php:1227 ../wikilib.php:1881
  -#: ../wikilib.php:1978 ../wikilib.php:2490 ../wikilib.php:2548
  +#: ../wikilib.php:936 ../wikilib.php:1220 ../wikilib.php:1874
  +#: ../wikilib.php:1971 ../wikilib.php:2483 ../wikilib.php:2541
   msgid "Save"
   msgstr "저장"
   
  -#: ../wikilib.php:951 ../wikilib.php:1214 ../wikilib.php:1889
  -#: ../wikilib.php:1986
  +#: ../wikilib.php:944 ../wikilib.php:1207 ../wikilib.php:1882
  +#: ../wikilib.php:1979
   msgid "Skip to preview"
   msgstr "미리보기로"
   
  -#: ../wikilib.php:1066
  +#: ../wikilib.php:1059
   msgid "Use one of the following templates as an initial release :\n"
   msgstr "최초 버전으로 다음의 탬플리트를 활용하실 수 있습니다 :\n"
   
  -#: ../wikilib.php:1068
  +#: ../wikilib.php:1061
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr "탬플리트를 만드시려면 '%s' 형식의 이름으로 페이지를 만드세요."
   
  -#: ../wikilib.php:1072
  +#: ../wikilib.php:1065
   msgid "Merge"
   msgstr "병합"
   
  -#: ../wikilib.php:1073
  +#: ../wikilib.php:1066
   msgid "Merge manually"
   msgstr "수동 병합"
   
  -#: ../wikilib.php:1074
  +#: ../wikilib.php:1067
   msgid "Ignore conflicts"
   msgstr "충돌 무시"
   
  -#: ../wikilib.php:1109
  +#: ../wikilib.php:1102
   msgid "ReduceEditor"
   msgstr "편집창 줄이기"
   
  -#: ../wikilib.php:1110
  +#: ../wikilib.php:1103
   msgid "EnlargeEditor"
   msgstr "편집창 늘이기"
   
  -#: ../wikilib.php:1114 ../locale/dummy.php:6
  +#: ../wikilib.php:1107 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr "인터위키"
   
  -#: ../wikilib.php:1116
  +#: ../wikilib.php:1109
   msgid "HelpOnEditing"
   msgstr "고치기 도움말"
   
  -#: ../wikilib.php:1150
  +#: ../wikilib.php:1143
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:1170
  +#: ../wikilib.php:1163
   msgid "Category"
   msgstr "분류"
   
  -#: ../wikilib.php:1178
  +#: ../wikilib.php:1171
   msgid " Select "
   msgstr " 선택 "
   
  -#: ../wikilib.php:1190
  +#: ../wikilib.php:1183
   msgid "Minor edit"
   msgstr ""
   
  -#: ../wikilib.php:1306
  +#: ../wikilib.php:1299
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:1311
  +#: ../wikilib.php:1304
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s은(는) 잘못된 액션"
   
  -#: ../wikilib.php:1313
  +#: ../wikilib.php:1306
   msgid "Is it valid action ?"
   msgstr "올바른 액션입니까 ?"
   
  -#: ../wikilib.php:1360
  +#: ../wikilib.php:1353
   #, c-format
   msgid "File '%s' is deleted"
   msgstr "'%s' 파일이 지워졌습니다"
   
  -#: ../wikilib.php:1362
  +#: ../wikilib.php:1355
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr "'%s' 지우기를 실패했습니다"
   
  -#: ../wikilib.php:1367
  +#: ../wikilib.php:1360
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr "'%s' 디렉토리가 지우졌습니다"
   
  -#: ../wikilib.php:1369
  +#: ../wikilib.php:1362
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr "'%s' 지우기를 실패했습니다"
   
  -#: ../wikilib.php:1379 ../wikilib.php:1399
  +#: ../wikilib.php:1372 ../wikilib.php:1392
   msgid "No files are selected !"
   msgstr "파일을 선택하지 않았습니다"
   
  -#: ../wikilib.php:1392
  +#: ../wikilib.php:1385
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr "정말로 '%s'(을)를 지우시겠습니까 ?"
   
  -#: ../wikilib.php:1396
  +#: ../wikilib.php:1389
   msgid "Delete selected file"
   msgstr "선택된 파일 지우기"
   
  -#: ../wikilib.php:1417
  +#: ../wikilib.php:1410
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr "%s(이)가 지워짐 !"
   
  -#: ../wikilib.php:1432
  +#: ../wikilib.php:1425
   msgid "Please delete this file manually."
   msgstr "파일을 직접 지워주세요."
   
  -#: ../wikilib.php:1434
  +#: ../wikilib.php:1427
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "\"%s\"을(를) 지울까요 ?"
   
  -#: ../wikilib.php:1488
  +#: ../wikilib.php:1481
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
  -#: ../wikilib.php:1661
  +#: ../wikilib.php:1654
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr " 혹은 %s를 눌러 전체찾기를 합니다.\n"
   
  -#: ../wikilib.php:1661
  +#: ../wikilib.php:1654
   msgid "title"
   msgstr "제목"
   
  -#: ../wikilib.php:1675
  +#: ../wikilib.php:1668
   msgid "Please try to fulltext search"
   msgstr "전체 찾기를 해보시기 바랍니다"
   
  -#: ../wikilib.php:1678
  +#: ../wikilib.php:1671
   #, c-format
   msgid "You can also click %s to fulltext search.\n"
   msgstr "%s 아이콘을 눌러 전체 찾기를 하실 수 있습니다.\n"
   
  -#: ../wikilib.php:1723 ../wikilib.php:1836
  +#: ../wikilib.php:1716 ../wikilib.php:1829
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "%s을(를) 고치는 동안 다른 사람이 이 페이지를 저장했습니다"
   
  -#: ../wikilib.php:1729
  +#: ../wikilib.php:1722
   msgid "Section edit is not valid for non-exists page."
   msgstr "없는 페이지에 대한 섹션 편집은 가능하지 않습니다"
   
  -#: ../wikilib.php:1762 ../wikilib.php:2018
  +#: ../wikilib.php:1755 ../wikilib.php:2011
   msgid "mail does not supported by default."
   msgstr "메일이 지원되지 않습니다"
   
  -#: ../wikilib.php:1766 ../wikilib.php:2022
  +#: ../wikilib.php:1759 ../wikilib.php:2015
   msgid "Sent notification mail."
   msgstr "메일을 보냈습니다"
   
  -#: ../wikilib.php:1768 ../wikilib.php:2024
  +#: ../wikilib.php:1761 ../wikilib.php:2017
   msgid "No subscribers found."
   msgstr "구독자가 없습니다"
   
  -#: ../wikilib.php:1773 ../wikilib.php:2029
  +#: ../wikilib.php:1766 ../wikilib.php:2022
   #, c-format
   msgid "%s is not editable"
   msgstr "%s(이)가 쓰기가능하지 않음"
   
  -#: ../wikilib.php:1775 ../wikilib.php:2031
  +#: ../wikilib.php:1768 ../wikilib.php:2024
   #, c-format
   msgid "%s is saved"
   msgstr "%s(이)가 저장됨"
   
  -#: ../wikilib.php:1827
  +#: ../wikilib.php:1820
   msgid "Goto Editor"
   msgstr "편집기로 가기"
   
  -#: ../wikilib.php:1841
  +#: ../wikilib.php:1834
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr "%s 페이지 최근 내용이 병합되었습니다."
   
  -#: ../wikilib.php:1842
  +#: ../wikilib.php:1835
   #, c-format
   msgid "%s is merged successfully"
   msgstr "%s 페이지가 성공적으로 병합되었습니다"
   
  -#: ../wikilib.php:1846
  +#: ../wikilib.php:1839
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr "%s에 대하여 병합 충돌이 발견되었습니다 !"
   
  -#: ../wikilib.php:1847
  +#: ../wikilib.php:1840
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr "%s에 대해 병합이 취소되었습니다."
   
  -#: ../wikilib.php:1848
  +#: ../wikilib.php:1841
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1849
  +#: ../wikilib.php:1842
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1854
  +#: ../wikilib.php:1847
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr "%s에 대해 병합을 합니다"
   
  -#: ../wikilib.php:1855
  +#: ../wikilib.php:1848
   msgid "Please resolve conflicts manually."
   msgstr "충돌을 직접 해결하시기 바랍니다."
   
  -#: ../wikilib.php:1858
  +#: ../wikilib.php:1851
   #, c-format
   msgid "Force merging for %s !"
   msgstr "%s에 대해 병합이 강제로 되었습니다 !"
   
  -#: ../wikilib.php:1859
  +#: ../wikilib.php:1852
   msgid "Please be careful, you could damage useful information."
   msgstr "주의하시기 바랍니다. 중요한 정보를 잃어버릴 수도 있습니다."
   
  -#: ../wikilib.php:1873
  +#: ../wikilib.php:1866
   msgid "Conflict error!"
   msgstr "충돌 오류!"
   
  -#: ../wikilib.php:1914
  +#: ../wikilib.php:1907
   msgid "Too long Comment"
   msgstr "요약이 너무 깁니다"
   
  -#: ../wikilib.php:1964
  +#: ../wikilib.php:1957
   #, c-format
   msgid "Preview of %s"
   msgstr "%s 미리보기"
   
  -#: ../wikilib.php:2064
  +#: ../wikilib.php:2057
   msgid "Nobody subscribed to this page."
   msgstr "아무도 페이지를 구독하지 않고있습니다."
   
  -#: ../wikilib.php:2083
  +#: ../wikilib.php:2076
   #, c-format
   msgid "%s page is modified"
   msgstr "%s 페이지가 변경되었습니다"
   
  -#: ../wikilib.php:2112
  +#: ../wikilib.php:2105
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:2125
  +#: ../wikilib.php:2118
   msgid "Send notification mails to all subscribers"
   msgstr "모든 구독자에게 메일을 보냅니다"
   
  -#: ../wikilib.php:2130
  +#: ../wikilib.php:2123
   msgid "Mails are sent successfully"
   msgstr "메일이 성공적으로 보내졌습니다"
   
  -#: ../wikilib.php:2131
  +#: ../wikilib.php:2124
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr "'%s'에게 메일을 보냈습니다"
   
  -#: ../wikilib.php:2133
  +#: ../wikilib.php:2126
   msgid "Fail to send mail"
   msgstr "메일 보내기 실패했습니다"
   
  -#: ../wikilib.php:2144
  +#: ../wikilib.php:2137
   msgid "This wiki does not support sendmail"
   msgstr "위키에서 sendmail을 지원받지 못합니다"
   
  -#: ../wikilib.php:2274
  +#: ../wikilib.php:2267
   msgid "Invalid regular expression !"
   msgstr "잘못된 정규 표현식 !"
   
  -#: ../wikilib.php:2298
  +#: ../wikilib.php:2291
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:2301
  +#: ../wikilib.php:2294
   msgid "Infinite loop possible!"
   msgstr "무한 루프가 가능함!"
   
  -#: ../wikilib.php:2418
  +#: ../wikilib.php:2411
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:2419
  +#: ../wikilib.php:2412
   msgid "OpenID"
   msgstr ""
   
  -#: ../wikilib.php:2432 ../wikilib.php:2567
  +#: ../wikilib.php:2425 ../wikilib.php:2560
   msgid "ID"
   msgstr "아이디"
   
  -#: ../wikilib.php:2470 ../wikilib.php:2560
  +#: ../wikilib.php:2463 ../wikilib.php:2553
   msgid "Make profile"
   msgstr "사용자 등록"
   
  -#: ../wikilib.php:2472
  +#: ../wikilib.php:2465
   msgid "password again"
   msgstr "비밀번호 재입력"
   
  -#: ../wikilib.php:2474 ../wikilib.php:2524
  +#: ../wikilib.php:2467 ../wikilib.php:2517
   msgid "Mail"
   msgstr "메일"
   
  -#: ../wikilib.php:2496
  +#: ../wikilib.php:2489
   msgid "New password"
   msgstr "새 비밀번호"
   
  -#: ../wikilib.php:2501
  +#: ../wikilib.php:2494
   msgid "Nickname"
   msgstr "별명"
   
  -#: ../wikilib.php:2525
  +#: ../wikilib.php:2518
   msgid "Time Zone"
   msgstr "시간대"
   
  -#: ../wikilib.php:2534
  +#: ../wikilib.php:2527
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:2912
  +#: ../wikilib.php:2905
   msgid "Show all"
   msgstr "모두 보기"
   
  -#: ../wikilib.php:3050
  +#: ../wikilib.php:3043
   msgid "Contents"
   msgstr "목차"
   
  -#: ../wikilib.php:3171
  +#: ../wikilib.php:3164
   #, c-format
   msgid "Title search for \"%s\""
   msgstr "\"%s\"에 대한 제목 찾기"
  @@ -2524,49 +2548,49 @@
   msgid "Check a dba configuration"
   msgstr "dba 환경 검사"
   
  -#: ../monisetup.php:53
  +#: ../monisetup.php:49
   #, c-format
   msgid "%s is selected."
   msgstr "%s(이)가 선택됨"
   
  -#: ../monisetup.php:55
  +#: ../monisetup.php:51
   msgid "No \\$dba_type selected."
   msgstr "\\$dba_type를 고를 수 없습니다."
   
  -#: ../monisetup.php:63
  +#: ../monisetup.php:59
   msgid "Check a AcceptPathInfo setting for Apache 2.x.xx"
   msgstr "아파치 2.x.xx를 위한 AcceptPathInfo 검사"
   
  -#: ../monisetup.php:70 ../monisetup.php:76
  +#: ../monisetup.php:66 ../monisetup.php:72
   msgid "Off"
   msgstr "꺼짐"
   
  -#: ../monisetup.php:78
  +#: ../monisetup.php:74
   msgid "On"
   msgstr "켜짐"
   
  -#: ../monisetup.php:432
  +#: ../monisetup.php:428
   msgid ""
   "Please change the permission of some directories writable on your server to "
   "initialize your Wiki."
   msgstr ""
   "위키를 초기화하기 위해서 몇몇 디렉토리를 쓰기가능하도록 바꿔줘야 합니다"
   
  -#: ../monisetup.php:434
  +#: ../monisetup.php:430
   #, c-format
   msgid ""
   "If you want a more safe wiki, try to change the permission of directories "
   "with %s."
   msgstr "보다 안전한 위키를 원하신다면 디렉토리의 퍼미션을 %s(으)로 바꿔주세요"
   
  -#: ../monisetup.php:437
  +#: ../monisetup.php:433
   msgid ""
   "or use <tt>monisetup.sh</tt> and select 777 or <font color='red'>2777</font>"
   msgstr ""
   "혹은 <tt>monisetup.sh</tt>를 사용하여 777 혹은 <font color='red'>2777</font>"
   "를 고르세요"
   
  -#: ../monisetup.php:439
  +#: ../monisetup.php:435
   msgid ""
   "After execute one of above two commands, just <a href='monisetup.php'>reload "
   "this <tt>monisetup.php</tt></a> would make a new initial <tt>config.php</tt> "
  @@ -2576,106 +2600,106 @@
   "php</tt>를 다시 열어</a> 주셔서 새로운 초기 <tt>config.php</tt> 파일을, 검사"
   "된 몇몇 기본 설정값과 함께 만들어 주셔야 합니다."
   
  -#: ../monisetup.php:440
  +#: ../monisetup.php:436
   msgid "Reload"
   msgstr "다시부르기"
   
  -#: ../monisetup.php:443
  +#: ../monisetup.php:439
   msgid "WARN"
   msgstr "경고"
   
  -#: ../monisetup.php:444
  +#: ../monisetup.php:440
   msgid ""
   "Please execute the following command after you have completed your "
   "configuration."
   msgstr "환경설정을 모두 마치신 후에 다음 명령을 실행해주시기 바랍니다."
   
  -#: ../monisetup.php:448 ../monisetup.php:1274
  +#: ../monisetup.php:444 ../monisetup.php:1270
   msgid "WARN: You have to enter your Admin Password"
   msgstr "주의: 관리자 비밀번호를 넣어주시기 바랍니다"
   
  -#: ../monisetup.php:451
  +#: ../monisetup.php:447
   msgid ""
   "WARN: If you have any permission to execute 'secure.sh'. press the following "
   "button"
   msgstr ""
   
  -#: ../monisetup.php:453
  +#: ../monisetup.php:449
   msgid "Protect my config.php now!"
   msgstr ""
   
  -#: ../monisetup.php:470
  +#: ../monisetup.php:466
   #, c-format
   msgid "FATAL: %s directory is not writable"
   msgstr "치명적: %s 디렉토리가 쓰기가능하지 않음"
   
  -#: ../monisetup.php:471
  +#: ../monisetup.php:467
   msgid "Please execute the following command."
   msgstr "다음 명령을 실행시켜주세요."
   
  -#: ../monisetup.php:490
  +#: ../monisetup.php:486
   #, c-format
   msgid "%s directory is not writable"
   msgstr "%s 디렉토리가 쓰기가능하지 않음"
   
  -#: ../monisetup.php:507
  +#: ../monisetup.php:503
   #, c-format
   msgid "%s is not writable"
   msgstr "%s(이)가 쓰기가능하지 않음"
   
  -#: ../monisetup.php:514 ../monisetup.php:520
  +#: ../monisetup.php:510 ../monisetup.php:516
   #, c-format
   msgid "%s is created now"
   msgstr "%s(이)가 만들어졌음"
   
  -#: ../monisetup.php:530
  +#: ../monisetup.php:526
   #, c-format
   msgid "%s is writable"
   msgstr "%s(이)가 쓰기가능"
   
  -#: ../monisetup.php:547
  +#: ../monisetup.php:543
   #, c-format
   msgid ""
   "If you want to check .htaccess file please delete '%s' file and reload it."
   msgstr ""
   
  -#: ../monisetup.php:550
  +#: ../monisetup.php:546
   msgid "Security check for 'upload_dir'."
   msgstr ""
   
  -#: ../monisetup.php:582
  +#: ../monisetup.php:578
   msgid ".htaccess for 'imgs_dir'."
   msgstr ""
   
  -#: ../monisetup.php:652
  +#: ../monisetup.php:648
   msgid "Fail"
   msgstr "실패"
   
  -#: ../monisetup.php:658
  +#: ../monisetup.php:654
   msgid "Unable to write .htaccess"
   msgstr ""
   
  -#: ../monisetup.php:762
  +#: ../monisetup.php:758
   msgid "Click here to toggle all"
   msgstr "여기를 눌러 모두 토글합니다"
   
  -#: ../monisetup.php:763
  +#: ../monisetup.php:759
   msgid "Deselect all"
   msgstr "모두 선택 취소"
   
  -#: ../monisetup.php:768
  +#: ../monisetup.php:764
   msgid "Please be careful to deselect these pages"
   msgstr "아래의 페이지를 선택해제시 주의해주세요"
   
  -#: ../monisetup.php:1067
  +#: ../monisetup.php:1063
   msgid "MoniWiki"
   msgstr "모니위키"
   
  -#: ../monisetup.php:1070
  +#: ../monisetup.php:1066
   msgid "'config.php' is not writable !"
   msgstr "'config.php' 파일이 쓰기가능하지 않습니다 !"
   
  -#: ../monisetup.php:1071
  +#: ../monisetup.php:1067
   msgid ""
   "Please execute <tt>'monisetup.sh'</tt> or <tt>chmod a+w config.php</tt> "
   "first to change your settings."
  @@ -2683,102 +2707,102 @@
   "<tt>'monisetup.sh'</tt> 혹은 <tt>chmod a+w config.php</tt>를 먼저실행해 주셔"
   "야 설정을 고칠 수 있습니다"
   
  -#: ../monisetup.php:1073
  +#: ../monisetup.php:1069
   msgid "Unprotect my config.php"
   msgstr ""
   
  -#: ../monisetup.php:1101
  +#: ../monisetup.php:1097
   msgid "config.php is protected now !"
   msgstr "config.php 파일이 보호되었습니다. !"
   
  -#: ../monisetup.php:1106 ../monisetup.php:1125
  +#: ../monisetup.php:1102 ../monisetup.php:1121
   msgid "Invalid password error !"
   msgstr "잘못된 비밀번호 오류 !"
   
  -#: ../monisetup.php:1107 ../monisetup.php:1126
  +#: ../monisetup.php:1103 ../monisetup.php:1122
   msgid ""
   "If you can't remember your admin password, delete password entry in the "
   "'config.php' and restart 'monisetup'"
   msgstr ""
   
  -#: ../monisetup.php:1112
  +#: ../monisetup.php:1108
   msgid "config.php is unprotected now !"
   msgstr "config.php 파일이 보호 해제되었습니다 !"
   
  -#: ../monisetup.php:1158
  +#: ../monisetup.php:1154
   #, c-format
   msgid "Updated Configutations for this %s"
   msgstr "위키 %s의 설정이 갱신되었습니다"
   
  -#: ../monisetup.php:1176
  +#: ../monisetup.php:1172
   msgid "Configurations are saved successfully"
   msgstr "설정이 성공적으로 저장되었습니다"
   
  -#: ../monisetup.php:1177
  +#: ../monisetup.php:1173
   msgid ""
   "WARN: Please check <a href='monisetup.php'> your saved configurations</a>"
   msgstr ""
   
  -#: ../monisetup.php:1178
  +#: ../monisetup.php:1174
   msgid "If all is good, change 'config.php' permission as 644."
   msgstr "모두 마음에 드시면 'config.php'파일의 퍼미션을 644로 바꿔주세요"
   
  -#: ../monisetup.php:1190
  +#: ../monisetup.php:1186
   msgid "Welcome to MoniWiki ! This is your first installation"
   msgstr "모니위키로 오신 것을  환영합니다 ! 처음 설치 하셨군요"
   
  -#: ../monisetup.php:1200
  +#: ../monisetup.php:1196
   msgid "Default settings are loaded..."
   msgstr "기본 설정을 불러옵니다..."
   
  -#: ../monisetup.php:1208
  +#: ../monisetup.php:1204
   msgid "Initial configurations are saved successfully."
   msgstr "초기 설정치가 성공적으로 저장되었습니다."
   
  -#: ../monisetup.php:1209
  +#: ../monisetup.php:1205
   msgid "Goto <a href='monisetup.php'>MoniSetup</a> again to configure details"
   msgstr ""
   "<a href='monisetup.php'>MoniSetup</a>으로 다시 가서 자세한 설정을 합니다"
   
  -#: ../monisetup.php:1226 ../monisetup.php:1228 ../monisetup.php:1324
  -#: ../monisetup.php:1326
  +#: ../monisetup.php:1222 ../monisetup.php:1224 ../monisetup.php:1320
  +#: ../monisetup.php:1322
   #, c-format
   msgid "goto %s"
   msgstr "%s으로 가기"
   
  -#: ../monisetup.php:1231
  +#: ../monisetup.php:1227
   msgid "No WikiSeeds are selected"
   msgstr "위키씨앗을 선택하지 않았습니다"
   
  -#: ../monisetup.php:1242
  +#: ../monisetup.php:1238
   #, c-format
   msgid "Preview current settings for this %s"
   msgstr "%s 현재 설정을 미리보기"
   
  -#: ../monisetup.php:1244
  +#: ../monisetup.php:1240
   #, c-format
   msgid "Read current settings for this %s"
   msgstr "%s 위키의 현재 설정 읽기"
   
  -#: ../monisetup.php:1272
  +#: ../monisetup.php:1268
   msgid "Change your settings"
   msgstr "세팅을 바꾸기"
   
  -#: ../monisetup.php:1276 ../monisetup.php:1319
  +#: ../monisetup.php:1272 ../monisetup.php:1315
   #, c-format
   msgid "WARN: You have no WikiSeed on your %s"
   msgstr "주의: 위키씨앗이 위키 %s에 없습니다"
   
  -#: ../monisetup.php:1277 ../monisetup.php:1320
  +#: ../monisetup.php:1273 ../monisetup.php:1316
   #, c-format
   msgid "If you want to put wikiseeds on your wiki %s now"
   msgstr "위키씨앗을 심기를 원하신다면 %s 누르세요"
   
  -#: ../monisetup.php:1278 ../monisetup.php:1321
  +#: ../monisetup.php:1274 ../monisetup.php:1317
   msgid "Click here"
   msgstr "여기를"
   
  -#: ../monisetup.php:1313 ../monisetup.php:1315
  +#: ../monisetup.php:1309 ../monisetup.php:1311
   msgid "Update"
   msgstr "완료"
   
  @@ -2841,9 +2865,6 @@
   #~ msgid "Please check your php.ini setting"
   #~ msgstr "php.ini 세팅을 확인해보시기 바랍니다"
   
  -#~ msgid "Diff"
  -#~ msgstr "변화"
  -
   #~ msgid "Date and Changes"
   #~ msgstr "날짜와 바뀐점"
   
  
  
  
  1.31      +950 -927  moniwiki/locale/po/moniwiki.pot
  
  Index: moniwiki.pot
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/moniwiki.pot,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- moniwiki.pot	13 Aug 2010 15:21:40 -0000	1.30
  +++ moniwiki.pot	13 Aug 2010 18:58:09 -0000	1.31
  @@ -7,7 +7,7 @@
   msgstr ""
   "Project-Id-Version: PACKAGE VERSION\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2010-08-14 00:12+0900\n"
  +"POT-Creation-Date: 2010-08-14 03:44+0900\n"
   "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
   "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
   "Language-Team: LANGUAGE <LL@li.org>\n"
  @@ -15,82 +15,6 @@
   "Content-Type: text/plain; charset=CHARSET\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  -#: ../plugin/aclinfo.php:15
  -msgid "ACL is not enabled on this Wiki"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:21
  -msgid "Your ACL Info"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:23
  -msgid "You are wiki owner"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:25
  -msgid "You are wiki master"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:27
  -msgid "Allowed actions"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:32
  -msgid "Denied actions"
  -msgstr ""
  -
  -#: ../plugin/aclinfo.php:38
  -msgid "Protected actions"
  -msgstr ""
  -
  -#: ../plugin/admin.php:136 ../plugin/PluginInfo.php:50
  -msgid "Description"
  -msgstr ""
  -
  -#: ../plugin/admin.php:139 ../plugin/PluginInfo.php:56
  -msgid "Author"
  -msgstr ""
  -
  -#: ../plugin/admin.php:141 ../plugin/PluginInfo.php:58
  -msgid "License"
  -msgstr ""
  -
  -#: ../plugin/admin.php:143 ../plugin/PluginInfo.php:60
  -msgid "Depend"
  -msgstr ""
  -
  -#: ../plugin/admin.php:147 ../plugin/PluginInfo.php:64
  -msgid "URL"
  -msgstr ""
  -
  -#: ../plugin/admin.php:191
  -msgid "Enabled plugins"
  -msgstr ""
  -
  -#: ../plugin/admin.php:193
  -msgid "Disabled plugins"
  -msgstr ""
  -
  -#: ../plugin/admin.php:201
  -msgid "Enabled processors"
  -msgstr ""
  -
  -#: ../plugin/admin.php:203
  -msgid "Disabled processors"
  -msgstr ""
  -
  -#: ../plugin/admin.php:206
  -msgid "Plugin/Processor settings are updated"
  -msgstr ""
  -
  -#: ../plugin/admin.php:212
  -msgid "Enable/disable plugins and processors"
  -msgstr ""
  -
  -#: ../plugin/atom.php:64 ../plugin/rss_rc.php:62
  -msgid "show changes"
  -msgstr ""
  -
   #: ../plugin/Attachment.php:72 ../plugin/Attachment.php:341
   #, c-format
   msgid "Upload new Attachment \"%s\""
  @@ -118,140 +42,6 @@
   msgid "Translate %s to %s"
   msgstr ""
   
  -#: ../plugin/backup.php:42
  -msgid "Your wiki is backuped successfully"
  -msgstr ""
  -
  -#: ../plugin/backup.php:49
  -msgid "Backup failed !"
  -msgstr ""
  -
  -#: ../plugin/backup.php:54
  -msgid "Did you want to Backup your wiki ?"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:493
  -msgid "This bbs does not exists yet. Please save this page first"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:617
  -msgid "No"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:626
  -msgid "Edit"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1395
  -msgid "Delete"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:657
  -msgid "Please check article numbers."
  -msgstr ""
  -
  -#: ../plugin/bbs.php:737
  -msgid "More"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:782
  -msgid "New"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:784
  -msgid "Read"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:800
  -#, c-format
  -msgid "Total %s articles."
  -msgstr ""
  -
  -#: ../plugin/bbs.php:836
  -#, c-format
  -msgid "Your IP address is not allowed to %s at this BBS"
  -msgstr ""
  -
  -#: ../plugin/bbs.php:890
  -msgid "Successfully deleted."
  -msgstr ""
  -
  -#: ../plugin/bbs.php:922
  -msgid "Fail to post comment."
  -msgstr ""
  -
  -#: ../plugin/bbs.php:932
  -#, c-format
  -msgid "The article %s will be deleted."
  -msgstr ""
  -
  -#: ../plugin/bbs.php:974
  -msgid "Invalid HomePage address."
  -msgstr ""
  -
  -#: ../plugin/bbs.php:987
  -msgid "No Name error."
  -msgstr ""
  -
  -#: ../plugin/bbs.php:997
  -msgid "No Subject error."
  -msgstr ""
  -
  -#: ../plugin/bbs.php:1009 ../plugin/Comment.php:201 ../plugin/Gallery.php:182
  -#: ../wikilib.php:1748 ../wikilib.php:1958
  -msgid ""
  -"Sorry, can not save page because some messages are blocked in this wiki."
  -msgstr ""
  -
  -#: ../plugin/bbs.php:1025
  -msgid "New post added successfully"
  -msgstr ""
  -
  -#: ../plugin/BlogChanges.php:203
  -msgid "Category: "
  -msgstr ""
  -
  -#: ../plugin/BlogChanges.php:205 ../locale/dummy.php:7
  -msgid "BlogChanges"
  -msgstr ""
  -
  -#: ../plugin/BlogChanges.php:251
  -#, c-format
  -msgid "Invalid category expr \"%s\""
  -msgstr ""
  -
  -#: ../plugin/BlogChanges.php:384 ../plugin/BlogChanges.php:386
  -#: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
  -msgid "Anonymous"
  -msgstr ""
  -
  -#: ../plugin/BlogChanges.php:417 ../plugin/processor/blog.php:88
  -#, c-format
  -msgid "%d comment"
  -msgstr ""
  -
  -#: ../plugin/BlogChanges.php:417 ../plugin/processor/blog.php:88
  -#, c-format
  -msgid "%d comments"
  -msgstr ""
  -
  -#: ../plugin/BlogChanges.php:419 ../plugin/Comment.php:218
  -#: ../plugin/processor/blog.php:80
  -msgid "Add comment"
  -msgstr ""
  -
  -#: ../plugin/BlogChanges.php:429 ../plugin/processor/blog.php:99
  -msgid "track back"
  -msgstr ""
  -
  -#: ../plugin/BlogChanges.php:449
  -msgid "Previous"
  -msgstr ""
  -
  -#: ../plugin/BlogChanges.php:453
  -msgid "Next"
  -msgstr ""
  -
   #: ../plugin/Blog.php:84
   #, c-format
   msgid "Blog cache of \"%s\" is refreshed"
  @@ -312,7 +102,7 @@
   msgid "Title"
   msgstr ""
   
  -#: ../plugin/Blog.php:271 ../wikilib.php:1218
  +#: ../plugin/Blog.php:271 ../wikilib.php:1211
   msgid "GUI"
   msgstr ""
   
  @@ -324,35 +114,49 @@
   msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
   msgstr ""
   
  -#: ../plugin/bookmark.php:33
  -msgid "Invalid bookmark!"
  +#: ../plugin/BlogChanges.php:203
  +msgid "Category: "
   msgstr ""
   
  -#: ../plugin/cacheadmin.php:105
  -msgid "You are not WikiMaster!!"
  +#: ../plugin/BlogChanges.php:205 ../locale/dummy.php:7
  +msgid "BlogChanges"
   msgstr ""
   
  -#: ../plugin/cacheadmin.php:120
  -msgid "Clear cache dirs"
  +#: ../plugin/BlogChanges.php:251
  +#, c-format
  +msgid "Invalid category expr \"%s\""
   msgstr ""
   
  -#: ../plugin/chat.php:37
  -msgid "No messages"
  +#: ../plugin/BlogChanges.php:384 ../plugin/BlogChanges.php:386
  +#: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
  +msgid "Anonymous"
   msgstr ""
   
  -#: ../plugin/chmod.php:18
  +#: ../plugin/BlogChanges.php:417 ../plugin/processor/blog.php:88
   #, c-format
  -msgid "Permission of \"%s\" changed !"
  +msgid "%d comment"
   msgstr ""
   
  -#: ../plugin/chmod.php:24
  +#: ../plugin/BlogChanges.php:417 ../plugin/processor/blog.php:88
   #, c-format
  -msgid "Fail to chmod \"%s\" !"
  +msgid "%d comments"
   msgstr ""
   
  -#: ../plugin/chmod.php:35
  -#, c-format
  -msgid "Change permission of \"%s\""
  +#: ../plugin/BlogChanges.php:419 ../plugin/Comment.php:218
  +#: ../plugin/processor/blog.php:80
  +msgid "Add comment"
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:429 ../plugin/processor/blog.php:99
  +msgid "track back"
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:449
  +msgid "Previous"
  +msgstr ""
  +
  +#: ../plugin/BlogChanges.php:453
  +msgid "Next"
   msgstr ""
   
   #: ../plugin/Clip.php:28
  @@ -379,8 +183,8 @@
   msgid "Comment"
   msgstr ""
   
  -#: ../plugin/Comment.php:94 ../wikilib.php:949 ../wikilib.php:1212
  -#: ../wikilib.php:1887 ../wikilib.php:1984 ../monisetup.php:1311
  +#: ../plugin/Comment.php:94 ../wikilib.php:942 ../wikilib.php:1205
  +#: ../wikilib.php:1880 ../wikilib.php:1977 ../monisetup.php:1307
   msgid "Preview"
   msgstr ""
   
  @@ -401,15 +205,21 @@
   msgstr ""
   
   #: ../plugin/Comment.php:174 ../plugin/userform.php:121
  -#: ../plugin/userform.php:184 ../plugin/userform.php:207 ../wikilib.php:1937
  +#: ../plugin/userform.php:184 ../plugin/userform.php:207 ../wikilib.php:1930
   msgid "Invalid ticket !"
   msgstr ""
   
   #: ../plugin/Comment.php:179 ../plugin/userform.php:123
  -#: ../plugin/userform.php:209 ../wikilib.php:1942
  +#: ../plugin/userform.php:209 ../wikilib.php:1935
   msgid "You need a ticket !"
   msgstr ""
   
  +#: ../plugin/Comment.php:201 ../plugin/Gallery.php:182 ../plugin/bbs.php:1009
  +#: ../wikilib.php:1741 ../wikilib.php:1951
  +msgid ""
  +"Sorry, can not save page because some messages are blocked in this wiki."
  +msgstr ""
  +
   #: ../plugin/Comment.php:207
   msgid "Preview comment"
   msgstr ""
  @@ -423,24 +233,16 @@
   msgid "Comment added successfully"
   msgstr ""
   
  -#: ../plugin/css.php:34 ../plugin/css.php:42
  -msgid "Back to UserPreferences"
  +#: ../plugin/Diff.php:411 ../plugin/Info.php:251 ../plugin/Stat.php:125
  +msgid "No older revisions available"
   msgstr ""
   
  -#: ../plugin/css.php:68
  -msgid "CSS disabled !"
  +#: ../plugin/Diff.php:416 ../plugin/Info.php:257 ../plugin/Stat.php:131
  +#: ../plugin/rcsexport.php:13 ../plugin/rcsimport.php:13
  +msgid "Version info is not available in this wiki"
   msgstr ""
   
  -#: ../plugin/Diff.php:411 ../plugin/Info.php:251
  -msgid "No older revisions available"
  -msgstr ""
  -
  -#: ../plugin/Diff.php:416 ../plugin/Info.php:257 ../plugin/rcsexport.php:13
  -#: ../plugin/rcsimport.php:13
  -msgid "Version info is not available in this wiki"
  -msgstr ""
  -
  -#: ../plugin/Diff.php:428 ../wikilib.php:1907
  +#: ../plugin/Diff.php:428 ../wikilib.php:1900
   msgid "No difference found"
   msgstr ""
   
  @@ -493,6 +295,35 @@
   msgid "%d day(s) passed from %s."
   msgstr ""
   
  +#: ../plugin/EditHints.php:39
  +msgid "Editing Hints"
  +msgstr ""
  +
  +#: ../plugin/EditHints.php:44
  +msgid "See more help:"
  +msgstr ""
  +
  +#: ../plugin/EditHints.php:44
  +msgid "Close Editing Hints"
  +msgstr ""
  +
  +#: ../plugin/EditHints.php:53
  +msgid ""
  +"<b>Emphasis:</b> '''<strong>bold</strong>''', ''<i>italics</i>''<br />\n"
  +"<b>Headings:</b> ==<span class='space'> </span>Title 2<span class='space'> </"
  +"span>==; ===<span class='space'> </span>Title 3<span class='space'> </"
  +"span>===; ...<br />\n"
  +"<b>Lists:</b> <span class='space'> </span>*<span class='space'> </span> "
  +"space and one of * bullets; <span class='space'> </span>1.<span "
  +"class='space'> </span>numbered items; <span class='space'> </span> space "
  +"alone indents.<br />\n"
  +"<b>Links:</b> [[double bracketed words]]; [bracketed words]; "
  +"JoinCapitalizedWords; [\"brackets and double quotes\"];\n"
  +"url; [url]; [url label].<br />\n"
  +"<b>Tables</b>: || cell text |||| cell text spanning two columns ||;\n"
  +"no trailing white space allowed after tables or titles.<br />\n"
  +msgstr ""
  +
   #: ../plugin/FastSearch.php:37
   msgid "Fast search"
   msgstr ""
  @@ -525,18 +356,18 @@
   msgstr ""
   
   #: ../plugin/FastSearch.php:177 ../plugin/FullSearch.php:38
  -#: ../wikilib.php:1669
  +#: ../wikilib.php:1662
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr ""
   
   #: ../plugin/FastSearch.php:179 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1671
  +#: ../wikilib.php:1664
   msgid "page"
   msgstr ""
   
   #: ../plugin/FastSearch.php:179 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1671
  +#: ../wikilib.php:1664
   msgid "pages"
   msgstr ""
   
  @@ -545,10 +376,6 @@
   msgid "Show all %d results"
   msgstr ""
   
  -#: ../plugin/format.php:17
  -msgid "It is a XML format !"
  -msgstr ""
  -
   #: ../plugin/FullSearch.php:15
   #, c-format
   msgid "BackLinks search for \"%s\""
  @@ -564,7 +391,7 @@
   msgstr ""
   
   #: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4686
  -#: ../wikilib.php:1196
  +#: ../wikilib.php:1189
   msgid "Refresh"
   msgstr ""
   
  @@ -579,7 +406,7 @@
   msgstr ""
   
   #: ../plugin/FullSearch.php:52 ../wiki.php:5660 ../wiki.php:5668
  -#: ../wikilib.php:1679
  +#: ../wikilib.php:1672
   msgid "here"
   msgstr ""
   
  @@ -591,7 +418,7 @@
   msgid "Case-sensitive searching"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:77 ../wikilib.php:3154 ../wikilib.php:3230
  +#: ../plugin/FullSearch.php:77 ../wikilib.php:3147 ../wikilib.php:3223
   msgid "Go"
   msgstr ""
   
  @@ -599,7 +426,7 @@
   msgid "Empty expression"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:144 ../wikilib.php:3175
  +#: ../plugin/FullSearch.php:144 ../wikilib.php:3168
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr ""
  @@ -616,8 +443,8 @@
   msgid "show comments"
   msgstr ""
   
  -#: ../plugin/Gallery.php:409 ../plugin/Gallery.php:413 ../wikilib.php:1735
  -#: ../wikilib.php:1905 ../wikilib.php:1912
  +#: ../plugin/Gallery.php:409 ../plugin/Gallery.php:413 ../wikilib.php:1728
  +#: ../wikilib.php:1898 ../wikilib.php:1905
   #, c-format
   msgid "Go back or return to %s"
   msgstr ""
  @@ -630,10 +457,6 @@
   msgid "Comments is added"
   msgstr ""
   
  -#: ../plugin/html2pdf.php:30
  -msgid "The TCPDF class not found!"
  -msgstr ""
  -
   #: ../plugin/ImportUrl.php:132
   msgid "Import URL"
   msgstr ""
  @@ -806,7 +629,7 @@
   msgid "Select keywords for %s"
   msgstr ""
   
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1556 ../wikilib.php:3162
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1549 ../wikilib.php:3155
   msgid "Use more specific text"
   msgstr ""
   
  @@ -847,85 +670,10 @@
   msgid "Slow Slow"
   msgstr ""
   
  -#: ../plugin/login.php:31
  -msgid "Login:"
  -msgstr ""
  -
  -#: ../plugin/login.php:32
  -msgid "Password:"
  -msgstr ""
  -
  -#: ../plugin/login.php:33
  -msgid "Join"
  -msgstr ""
  -
  -#: ../plugin/login.php:51 ../plugin/minilogin.php:25
  -msgid "Logout"
  -msgstr ""
  -
  -#: ../plugin/login.php:52 ../plugin/minilogin.php:24 ../locale/dummy.php:3
  -msgid "UserPreferences"
  -msgstr ""
  -
  -#: ../plugin/man_get.php:17
  -msgid "No manpage selected"
  -msgstr ""
  -
  -#: ../plugin/man_get.php:43
  -msgid "No manpage found"
  -msgstr ""
  -
  -#: ../plugin/man_get.php:122
  -msgid "Edit man page"
  -msgstr ""
  -
  -#: ../plugin/minilogin.php:18 ../wikilib.php:2487
  -msgid "Login or Join"
  -msgstr ""
  -
  -#: ../plugin/minilogin.php:26
  -#, c-format
  -msgid "%s or %s"
  -msgstr ""
  -
  -#: ../plugin/msgfmt.php:75 ../plugin/msgfmt.php:153
  -#, c-format
  -msgid "Translation of %s"
  -msgstr ""
  -
  -#: ../plugin/msgfmt.php:84
  -msgid "Translations are successfully updated."
  -msgstr ""
  -
  -#: ../plugin/msgfmt.php:86
  -msgid "Fail to save translations."
  -msgstr ""
  -
  -#: ../plugin/msgtrans.php:39 ../plugin/userinfo.php:86
  -#, c-format
  -msgid "You are not allowed to \"%s\" !"
  -msgstr ""
  -
  -#: ../plugin/msgtrans.php:179
  -msgid "Local translation files are successfully translated !\n"
  -msgstr ""
  -
   #: ../plugin/Navigation.php:19
   msgid "No Index page found"
   msgstr ""
   
  -#: ../plugin/new.php:13 ../plugin/new.php:28
  -msgid "Create a new page"
  -msgstr ""
  -
  -#: ../plugin/new.php:26
  -msgid "Page Name"
  -msgstr ""
  -
  -#: ../plugin/new.php:27
  -msgid "Normalize this page name"
  -msgstr ""
  -
   #: ../plugin/OeKaki.php:36
   msgid "Draw a new picture"
   msgstr ""
  @@ -938,19 +686,6 @@
   msgid "Edit Image"
   msgstr ""
   
  -#: ../plugin/pagelist.php:118 ../plugin/pagelist.php:135
  -#, c-format
  -msgid "[%sh %sm ago]"
  -msgstr ""
  -
  -#: ../plugin/pageview.php:70
  -msgid "First:"
  -msgstr ""
  -
  -#: ../plugin/pageview.php:75 ../plugin/SlideShow.php:120
  -msgid "Next:"
  -msgstr ""
  -
   #: ../plugin/PluginInfo.php:29
   #, c-format
   msgid "Total %s plugin activated."
  @@ -966,54 +701,28 @@
   msgid "%s plugin is not found."
   msgstr ""
   
  -#: ../plugin/PluginInfo.php:54
  -msgid "Version"
  -msgstr ""
  -
  -#: ../plugin/print.php:28
  -#, c-format
  -msgid "Retrieved from %s"
  -msgstr ""
  -
  -#: ../plugin/print.php:33
  -#, c-format
  -msgid "last modified %s %s"
  -msgstr ""
  -
  -#: ../plugin/processor/blog.php:101
  -msgid "raw"
  -msgstr ""
  -
  -#: ../plugin/processor/bts.php:181
  -msgid "Save Changes"
  -msgstr ""
  -
  -#: ../plugin/processor/monimarkup.php:515 ../wiki.php:4049
  -msgid "edit"
  +#: ../plugin/PluginInfo.php:50 ../plugin/admin.php:136
  +msgid "Description"
   msgstr ""
   
  -#: ../plugin/quicklinks.php:16 ../plugin/scrap.php:37
  -#: ../plugin/subscribe.php:19 ../plugin/subscribe.php:55
  -msgid "Please login or make your ID."
  +#: ../plugin/PluginInfo.php:54
  +msgid "Version"
   msgstr ""
   
  -#: ../plugin/quicklinks.php:22 ../plugin/scrap.php:40
  -#: ../plugin/subscribe.php:61
  -msgid "Goto UserPreferences"
  +#: ../plugin/PluginInfo.php:56 ../plugin/admin.php:139
  +msgid "Author"
   msgstr ""
   
  -#: ../plugin/quicklinks.php:23
  -msgid ""
  -"If you want to custumize your quicklinks, just make your ID and register "
  -"your email address in the UserPreferences."
  +#: ../plugin/PluginInfo.php:58 ../plugin/admin.php:141
  +msgid "License"
   msgstr ""
   
  -#: ../plugin/quicklinks.php:38
  -msgid "QucikLinks are updated."
  +#: ../plugin/PluginInfo.php:60 ../plugin/admin.php:143
  +msgid "Depend"
   msgstr ""
   
  -#: ../plugin/quicklinks.php:50
  -msgid "Do you want to customize your quicklinks ?"
  +#: ../plugin/PluginInfo.php:64 ../plugin/admin.php:147
  +msgid "URL"
   msgstr ""
   
   #: ../plugin/Rating.php:60
  @@ -1036,13 +745,15 @@
   msgid "Very Gooood!"
   msgstr ""
   
  -#: ../plugin/Rating.php:86 ../plugin/security/community.php:27
  -#: ../plugin/security/community.php:37 ../plugin/security/community.php:47
  -#: ../plugin/security/community.php:62 ../plugin/security/mustlogin.php:29
  -#: ../plugin/security/mustlogin.php:40 ../plugin/security/mustlogin.php:51
  -#: ../plugin/security/mustlogin.php:67 ../plugin/security/needtologin.php:29
  -#: ../plugin/security/needtologin.php:40 ../plugin/security/needtologin.php:51
  -#: ../plugin/security/userbased.php:62 ../plugin/Vote.php:67
  +#: ../plugin/Rating.php:86 ../plugin/Vote.php:67
  +#: ../plugin/security/community.php:27 ../plugin/security/community.php:37
  +#: ../plugin/security/community.php:47 ../plugin/security/community.php:62
  +#: ../plugin/security/mustlogin.php:29 ../plugin/security/mustlogin.php:40
  +#: ../plugin/security/mustlogin.php:51 ../plugin/security/mustlogin.php:67
  +#: ../plugin/security/needtologin.php:29 ../plugin/security/needtologin.php:40
  +#: ../plugin/security/needtologin.php:51 ../plugin/security/nforge.php:42
  +#: ../plugin/security/nforge.php:53 ../plugin/security/nforge.php:64
  +#: ../plugin/security/userbased.php:62
   msgid "Please Login or make your ID on this Wiki ;)"
   msgstr ""
   
  @@ -1054,64 +765,6 @@
   msgid "Rating successfully !"
   msgstr ""
   
  -#: ../plugin/rawblog.php:63 ../plugin/rawblog.php:73
  -#, c-format
  -msgid "Delete Blog entry \"%s\""
  -msgstr ""
  -
  -#: ../plugin/rcsimport.php:32 ../plugin/rcsimport.php:88
  -#: ../plugin/rename.php:77 ../plugin/revert.php:82
  -#: ../plugin/UploadedFiles.php:453 ../plugin/userinfo.php:37
  -#: ../wikilib.php:1394 ../wikilib.php:2402
  -msgid "Password"
  -msgstr ""
  -
  -#: ../plugin/rcsimport.php:76
  -msgid "Page name"
  -msgstr ""
  -
  -#: ../plugin/rcs.php:13
  -#, c-format
  -msgid "%s does not support rcs options."
  -msgstr ""
  -
  -#: ../plugin/rcs.php:26
  -#, c-format
  -msgid "Change options for \"%s\""
  -msgstr ""
  -
  -#: ../plugin/rcs.php:32
  -#, c-format
  -msgid "Fail to rcs \"%s\" !"
  -msgstr ""
  -
  -#: ../plugin/rcs.php:36
  -#, c-format
  -msgid "Change options for \"%s\" ?"
  -msgstr ""
  -
  -#: ../plugin/rcs.php:47
  -msgid "Only WikiMaster can execute rcs"
  -msgstr ""
  -
  -#: ../plugin/rcspurge.php:24
  -msgid "Invalid rcspurge range"
  -msgstr ""
  -
  -#: ../plugin/rcspurge.php:29
  -#, c-format
  -msgid "RCS purge \"%s\""
  -msgstr ""
  -
  -#: ../plugin/rdf_blog.php:30 ../plugin/rss_blog.php:25
  -msgid "Blog Changes"
  -msgstr ""
  -
  -#: ../plugin/rdf_blog.php:44 ../plugin/rss_blog.php:103
  -#, c-format
  -msgid "BlogChanges at %s"
  -msgstr ""
  -
   #: ../plugin/RecentChanges.php:41
   #, c-format
   msgid "%d minute ago"
  @@ -1160,575 +813,982 @@
   msgid "%s changes"
   msgstr ""
   
  -#: ../plugin/referer.php:139
  -msgid "Referer history"
  +#: ../plugin/SWFUpload.php:137
  +msgid "Files..."
   msgstr ""
   
  -#: ../plugin/rename.php:19
  -#, c-format
  -msgid "\"%s\" is renamed !"
  +#: ../plugin/SWFUpload.php:138 ../plugin/UploadFile.php:443
  +#: ../plugin/UploadForm.php:270
  +msgid "Upload files"
   msgstr ""
   
  -#: ../plugin/rename.php:35
  -#, c-format
  -msgid "'%s' is changed"
  +#: ../plugin/SWFUpload.php:139
  +msgid "Cancel All files"
   msgstr ""
   
  -#: ../plugin/rename.php:43
  -#, c-format
  -msgid "'%s' is renamed as '%s' successfully."
  +#: ../plugin/SlideShow.php:28
  +msgid "No page found"
   msgstr ""
   
  -#: ../plugin/rename.php:51
  -#, c-format
  -msgid "Fail to rename \"%s\" !"
  +#: ../plugin/SlideShow.php:101
  +msgid "Start:"
   msgstr ""
   
  -#: ../plugin/rename.php:58
  -#, c-format
  -msgid "Rename \"%s\" ?"
  +#: ../plugin/SlideShow.php:110
  +msgid "End:"
   msgstr ""
   
  -#: ../plugin/rename.php:63
  -msgid "Old name:"
  +#: ../plugin/SlideShow.php:120 ../plugin/pageview.php:75
  +msgid "Next:"
   msgstr ""
   
  -#: ../plugin/rename.php:64
  -msgid "New name:"
  +#: ../plugin/SlideShow.php:130
  +msgid "Prev:"
   msgstr ""
   
  -#: ../plugin/rename.php:69 ../plugin/UploadFile.php:427
  -msgid "Rename"
  +#: ../plugin/SlideShow.php:137
  +msgid "Return"
   msgstr ""
   
  -#: ../plugin/rename.php:74
  -msgid "Rename and fix Backlinks"
  +#: ../plugin/Stat.php:22
  +msgid "Diff"
   msgstr ""
   
  -#: ../plugin/rename.php:78
  -msgid "Only WikiMaster can rename this page"
  +#: ../plugin/Stat.php:26
  +msgid "Revision Statistics"
   msgstr ""
   
  -#: ../plugin/rename.php:79 ../wikilib.php:1440
  -msgid "with revision history"
  +#: ../plugin/SystemInfo.php:16
  +msgid "Number of Pages"
   msgstr ""
   
  -#: ../plugin/rename.php:82
  -msgid "Check backlinks"
  +#: ../plugin/SystemInfo.php:17
  +msgid "HTTP Server Version"
   msgstr ""
   
  -#: ../plugin/restore.php:23
  -msgid "Error: Don't try to overwrite it"
  +#: ../plugin/SystemInfo.php:18
  +msgid "MoniWiki Version"
   msgstr ""
   
  -#: ../plugin/restore.php:24
  -msgid "Please rename your old 'text_dir' first."
  +#: ../plugin/SystemInfo.php:19
  +msgid "PHP Version"
   msgstr ""
   
  -#: ../plugin/restore.php:25
  -msgid "e.g. \\$ mv data/text data/text_old"
  +#: ../plugin/Tour.php:57
  +msgid "BackLinks"
   msgstr ""
   
  -#: ../plugin/restore.php:29
  -msgid "Error: tarball does not exists"
  +#: ../plugin/Tour.php:61
  +msgid "Keywords"
   msgstr ""
   
  -#: ../plugin/restore.php:34
  +#: ../plugin/Tour.php:70
   #, c-format
  -msgid "Restore %s"
  +msgid " from %s"
   msgstr ""
   
  -#: ../plugin/restore.php:50
  +#: ../plugin/Tour.php:73
   #, c-format
  -msgid "Restore %s ?"
  +msgid "%s Tour %s"
   msgstr ""
   
  -#: ../plugin/restore.php:67
  -msgid "Restore backuped data"
  +#: ../plugin/Tour.php:121
  +msgid "links"
   msgstr ""
   
  -#: ../plugin/restore.php:68
  -msgid "Select a tarball file to restore"
  +#: ../plugin/Tour.php:123
  +msgid "deeper"
   msgstr ""
   
  -#: ../plugin/revert.php:23 ../wiki.php:5662
  +#: ../plugin/Tour.php:124
   #, c-format
  -msgid "Old Revisions of the %s"
  +msgid "More %s or more %s"
   msgstr ""
   
  -#: ../plugin/revert.php:57
  -msgid "No version control available."
  +#: ../plugin/Tour.php:139
  +#, c-format
  +msgid "Total %d related keywords"
   msgstr ""
   
  -#: ../plugin/revert.php:61
  +#: ../plugin/Tour.php:142
   #, c-format
  -msgid "%s is successfully rollback."
  +msgid "Total %d related pages"
   msgstr ""
   
  -#: ../plugin/revert.php:66
  -msgid "Are you really want to overwrite this page ?"
  +#: ../plugin/TwinPages.php:13
  +#, c-format
  +msgid "TwinPages of %s"
   msgstr ""
   
  -#: ../plugin/revert.php:67
  -msgid "Force overwrite"
  +#: ../plugin/TwinPages.php:20 ../wiki.php:5645
  +msgid "See [TwinPages]: "
   msgstr ""
   
  -#: ../plugin/revert.php:69
  -msgid "Are you really want to revert this page ?"
  +#: ../plugin/TwinPages.php:22
  +msgid "No TwinPages found."
   msgstr ""
   
  -#: ../plugin/revert.php:74 ../wikilib.php:1207
  -msgid "Summary"
  +#: ../plugin/UploadFile.php:11
  +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini"
   msgstr ""
   
  -#: ../plugin/revert.php:76
  -#, c-format
  -msgid "Rollback to revision %s"
  +#: ../plugin/UploadFile.php:13
  +msgid ""
  +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in "
  +"the HTML form"
   msgstr ""
   
  -#: ../plugin/revert.php:79
  -msgid "Revert page"
  +#: ../plugin/UploadFile.php:15
  +msgid "The uploaded file was only partially uploaded"
   msgstr ""
   
  -#: ../plugin/revert.php:80
  -#, c-format
  -msgid "Only WikiMaster can %s this page"
  +#: ../plugin/UploadFile.php:17
  +msgid "No file was uploaded"
   msgstr ""
   
  -#: ../plugin/revert.php:80
  -#, c-format
  -msgid "revert"
  +#: ../plugin/UploadFile.php:19
  +msgid "Missing a temporary folder"
   msgstr ""
   
  -#: ../plugin/scrap.php:55
  -msgid "Scrap lists updated."
  +#: ../plugin/UploadFile.php:21
  +msgid "Failed to write file to disk"
   msgstr ""
   
  -#: ../plugin/scrap.php:65
  -#, c-format
  -msgid "\"%s\" is unscrapped."
  +#: ../plugin/UploadFile.php:23
  +msgid "File upload stopped by extension"
   msgstr ""
   
  -#: ../plugin/scrap.php:68
  +#: ../plugin/UploadFile.php:25
  +msgid "Unknown upload error"
  +msgstr ""
  +
  +#: ../plugin/UploadFile.php:184 ../plugin/UploadFile.php:198
   #, c-format
  -msgid "\"%s\" is scrapped."
  +msgid "The %s type of %s is not allowed to upload"
   msgstr ""
   
  -#: ../plugin/scrap.php:94
  +#: ../plugin/UploadFile.php:200
   #, c-format
  -msgid "Do you want to scrap \"%s\" ?"
  +msgid "%s is not allowed to upload"
   msgstr ""
   
  -#: ../plugin/scrap.php:97
  -msgid "Scrapped pages"
  +#: ../plugin/UploadFile.php:255
  +#, c-format
  +msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
   msgstr ""
   
  -#: ../plugin/security/acl.php:141
  -msgid "ACL groups"
  +#: ../plugin/UploadFile.php:273
  +msgid "ERROR:"
   msgstr ""
   
  -#: ../plugin/security/acl.php:144
  -msgid "Allowed ACL actions"
  +#: ../plugin/UploadFile.php:305
  +#, c-format
  +msgid "File \"%s\" is uploaded successfully"
   msgstr ""
   
  -#: ../plugin/security/acl.php:149
  -msgid "Denied ACL actions"
  +#: ../plugin/UploadFile.php:372
  +msgid "Files are uploaded successfully"
   msgstr ""
   
  -#: ../plugin/security/acl.php:154
  -msgid "Protected ACL actions"
  +#: ../plugin/UploadFile.php:408
  +msgid "Multi upload form"
   msgstr ""
   
  -#: ../plugin/security/acl.php:217 ../plugin/security/community.php:26
  -#: ../plugin/security/community.php:36 ../plugin/security/community.php:46
  -#: ../plugin/security/mustlogin.php:28 ../plugin/security/mustlogin.php:39
  -#: ../plugin/security/mustlogin.php:50 ../plugin/security/needtologin.php:28
  -#: ../plugin/security/needtologin.php:39 ../plugin/security/needtologin.php:50
  -#, c-format
  -msgid "You are not allowed to '%s' on this page"
  +#: ../plugin/UploadFile.php:421
  +msgid "Replace original file"
   msgstr ""
   
  -#: ../plugin/security/acl.php:218
  -msgid "Please contact WikiMasters :b"
  +#: ../plugin/UploadFile.php:422
  +msgid "Rename if it already exist"
   msgstr ""
   
  -#: ../plugin/security/authbasic.php:68
  -#, c-format
  -msgid "You have no permission to '%s'."
  +#: ../plugin/UploadFile.php:427 ../plugin/rename.php:69
  +msgid "Rename"
   msgstr ""
   
  -#: ../plugin/security/authbasic.php:71
  -msgid "You must enter a valid login ID and password to access this resource.\n"
  +#: ../plugin/UploadFile.php:432
  +msgid "Upload"
   msgstr ""
   
  -#: ../plugin/security/community.php:61 ../plugin/security/htaccesslogin.php:46
  -#: ../plugin/security/mustlogin.php:66 ../plugin/security/userbased.php:30
  -#: ../plugin/security/userbased.php:38 ../plugin/security/userbased.php:46
  -#: ../plugin/security/userbased.php:61 ../plugin/security/wikimaster.php:29
  -#: ../plugin/security/wikimaster.php:38 ../plugin/security/wikimaster.php:47
  +#: ../plugin/UploadFile.php:435
   #, c-format
  -msgid "You are not allowed to '%s' on this page."
  +msgid "or %s."
   msgstr ""
   
  -#: ../plugin/security/htaccesslogin.php:47
  -msgid "Please contact the system administrator for htaccess based logins."
  +#: ../plugin/UploadFile.php:435
  +msgid "Multiple Upload files"
   msgstr ""
   
  -#: ../plugin/security/userbased.php:31 ../plugin/security/userbased.php:39
  -#: ../plugin/security/userbased.php:47 ../plugin/security/wikimaster.php:30
  -#: ../plugin/security/wikimaster.php:39 ../plugin/security/wikimaster.php:48
  -msgid "Please contact to WikiMaster"
  +#: ../plugin/UploadForm.php:19
  +msgid "Successfully Uploaded"
   msgstr ""
   
  -#: ../plugin/sendping.php:13 ../plugin/trackback.php:40
  -msgid "Error: Page Not found !"
  +#: ../plugin/UploadForm.php:20
  +msgid "Choose File"
   msgstr ""
   
  -#: ../plugin/sendping.php:54
  -msgid "Error: No entry found!"
  +#: ../plugin/UploadForm.php:268
  +msgid "add files"
   msgstr ""
   
  -#: ../plugin/sendping.php:71
  -msgid "Send TrackBack ping"
  +#: ../plugin/UploadForm.php:269
  +msgid "add a file"
   msgstr ""
   
  -#: ../plugin/sendping.php:165
  -msgid "Trackback sent"
  +#: ../plugin/UploadForm.php:271
  +msgid "Reset"
   msgstr ""
   
  -#: ../plugin/SlideShow.php:28
  -msgid "No page found"
  +#: ../plugin/UploadForm.php:272
  +msgid "Attachments"
   msgstr ""
   
  -#: ../plugin/SlideShow.php:101
  -msgid "Start:"
  +#: ../plugin/UploadedFiles.php:303
  +msgid "File name"
   msgstr ""
   
  -#: ../plugin/SlideShow.php:110
  -msgid "End:"
  +#: ../plugin/UploadedFiles.php:304
  +msgid "Size"
   msgstr ""
   
  -#: ../plugin/SlideShow.php:130
  -msgid "Prev:"
  +#: ../plugin/UploadedFiles.php:355
  +msgid "Next page &raquo;"
   msgstr ""
   
  -#: ../plugin/SlideShow.php:137
  -msgid "Return"
  +#: ../plugin/UploadedFiles.php:357
  +msgid "&laquo; First page"
   msgstr ""
   
  -#: ../plugin/subscribe.php:24 ../plugin/subscribe.php:28
  -msgid "You did'nt subscribed any pages yet."
  +#: ../plugin/UploadedFiles.php:448
  +#, c-format
  +msgid "Total %d files"
   msgstr ""
   
  -#: ../plugin/subscribe.php:35
  -msgid "No subscribed pages found."
  +#: ../plugin/UploadedFiles.php:453 ../plugin/rcsimport.php:32
  +#: ../plugin/rcsimport.php:88 ../plugin/rename.php:77 ../plugin/revert.php:82
  +#: ../plugin/userinfo.php:37 ../wikilib.php:1387 ../wikilib.php:2395
  +msgid "Password"
   msgstr ""
   
  -#: ../plugin/subscribe.php:42
  -msgid "EmailNotification is not activated"
  +#: ../plugin/UploadedFiles.php:454 ../wikilib.php:1365
  +msgid "Delete selected files"
   msgstr ""
   
  -#: ../plugin/subscribe.php:43
  -msgid ""
  -"If you want to subscribe this page please contact the WikiMaster to activate "
  -"the e-mail notification"
  +#: ../plugin/VisualTour.php:133
  +msgid "Normal"
   msgstr ""
   
  -#: ../plugin/subscribe.php:53
  -msgid "Please enter your email address first."
  +#: ../plugin/VisualTour.php:135
  +msgid "Wider"
   msgstr ""
   
  -#: ../plugin/subscribe.php:62
  -msgid ""
  -"If you want to subscribe this page, just make your ID and register your "
  -"email address in the UserPreferences."
  +#: ../plugin/VisualTour.php:137
  +msgid "Deeper"
   msgstr ""
   
  -#: ../plugin/subscribe.php:77
  -msgid "Subscribe lists updated."
  +#: ../plugin/Vote.php:113
  +msgid "Voted successfully"
   msgstr ""
   
  -#: ../plugin/subscribe.php:91
  -#, c-format
  -msgid "\"%s\" is already subscribed."
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:2904
  +msgid "Others"
   msgstr ""
   
  -#: ../plugin/subscribe.php:100
  -#, c-format
  -msgid "Do you want to subscribe \"%s\" ?"
  +#: ../plugin/aclinfo.php:15
  +msgid "ACL is not enabled on this Wiki"
   msgstr ""
   
  -#: ../plugin/subscribe.php:106
  -msgid "Subscribed pages"
  +#: ../plugin/aclinfo.php:21
  +msgid "Your ACL Info"
   msgstr ""
   
  -#: ../plugin/SWFUpload.php:137
  -msgid "Files..."
  +#: ../plugin/aclinfo.php:23
  +msgid "You are wiki owner"
   msgstr ""
   
  -#: ../plugin/SWFUpload.php:138 ../plugin/UploadFile.php:443
  -#: ../plugin/UploadForm.php:270
  -msgid "Upload files"
  +#: ../plugin/aclinfo.php:25
  +msgid "You are wiki master"
   msgstr ""
   
  -#: ../plugin/SWFUpload.php:139
  -msgid "Cancel All files"
  +#: ../plugin/aclinfo.php:27
  +msgid "Allowed actions"
   msgstr ""
   
  -#: ../plugin/SystemInfo.php:16
  -msgid "Number of Pages"
  +#: ../plugin/aclinfo.php:32
  +msgid "Denied actions"
   msgstr ""
   
  -#: ../plugin/SystemInfo.php:17
  -msgid "HTTP Server Version"
  +#: ../plugin/aclinfo.php:38
  +msgid "Protected actions"
   msgstr ""
   
  -#: ../plugin/SystemInfo.php:18
  -msgid "MoniWiki Version"
  +#: ../plugin/admin.php:191
  +msgid "Enabled plugins"
   msgstr ""
   
  -#: ../plugin/SystemInfo.php:19
  -msgid "PHP Version"
  +#: ../plugin/admin.php:193
  +msgid "Disabled plugins"
   msgstr ""
   
  -#: ../plugin/theme.php:29
  -msgid "Theme cleared. Goto UserPreferences."
  +#: ../plugin/admin.php:201
  +msgid "Enabled processors"
   msgstr ""
   
  -#: ../plugin/theme.php:40
  -msgid "Theme is changed"
  +#: ../plugin/admin.php:203
  +msgid "Disabled processors"
   msgstr ""
   
  -#: ../plugin/theme.php:69
  -msgid "Please select a theme properly."
  +#: ../plugin/admin.php:206
  +msgid "Plugin/Processor settings are updated"
   msgstr ""
   
  -#: ../plugin/theme.php:79
  -msgid "Theme disabled !"
  +#: ../plugin/admin.php:212
  +msgid "Enable/disable plugins and processors"
   msgstr ""
   
  -#: ../plugin/theme.php:97
  -msgid "-- Select --"
  +#: ../plugin/atom.php:64 ../plugin/rss_rc.php:62
  +msgid "show changes"
   msgstr ""
   
  -#: ../plugin/ticket.php:173
  -msgid "Invalid use of ticket"
  +#: ../plugin/backup.php:42
  +msgid "Your wiki is backuped successfully"
   msgstr ""
   
  -#: ../plugin/Tour.php:57
  -msgid "BackLinks"
  +#: ../plugin/backup.php:49
  +msgid "Backup failed !"
   msgstr ""
   
  -#: ../plugin/Tour.php:61
  -msgid "Keywords"
  +#: ../plugin/backup.php:54
  +msgid "Did you want to Backup your wiki ?"
   msgstr ""
   
  -#: ../plugin/Tour.php:70
  +#: ../plugin/bbs.php:493
  +msgid "This bbs does not exists yet. Please save this page first"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:617
  +msgid "No"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:626
  +msgid "Edit"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1388
  +msgid "Delete"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:657
  +msgid "Please check article numbers."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:737
  +msgid "More"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:782
  +msgid "New"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:784
  +msgid "Read"
  +msgstr ""
  +
  +#: ../plugin/bbs.php:800
   #, c-format
  -msgid " from %s"
  +msgid "Total %s articles."
   msgstr ""
   
  -#: ../plugin/Tour.php:73
  +#: ../plugin/bbs.php:836
   #, c-format
  -msgid "%s Tour %s"
  +msgid "Your IP address is not allowed to %s at this BBS"
   msgstr ""
   
  -#: ../plugin/Tour.php:121
  -msgid "links"
  +#: ../plugin/bbs.php:890
  +msgid "Successfully deleted."
   msgstr ""
   
  -#: ../plugin/Tour.php:123
  -msgid "deeper"
  +#: ../plugin/bbs.php:922
  +msgid "Fail to post comment."
   msgstr ""
   
  -#: ../plugin/Tour.php:124
  +#: ../plugin/bbs.php:932
   #, c-format
  -msgid "More %s or more %s"
  +msgid "The article %s will be deleted."
   msgstr ""
   
  -#: ../plugin/Tour.php:139
  +#: ../plugin/bbs.php:974
  +msgid "Invalid HomePage address."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:987
  +msgid "No Name error."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:997
  +msgid "No Subject error."
  +msgstr ""
  +
  +#: ../plugin/bbs.php:1025
  +msgid "New post added successfully"
  +msgstr ""
  +
  +#: ../plugin/bookmark.php:33
  +msgid "Invalid bookmark!"
  +msgstr ""
  +
  +#: ../plugin/cacheadmin.php:105
  +msgid "You are not WikiMaster!!"
  +msgstr ""
  +
  +#: ../plugin/cacheadmin.php:120
  +msgid "Clear cache dirs"
  +msgstr ""
  +
  +#: ../plugin/chat.php:37
  +msgid "No messages"
  +msgstr ""
  +
  +#: ../plugin/chmod.php:18
  +#, c-format
  +msgid "Permission of \"%s\" changed !"
  +msgstr ""
  +
  +#: ../plugin/chmod.php:24
  +#, c-format
  +msgid "Fail to chmod \"%s\" !"
  +msgstr ""
  +
  +#: ../plugin/chmod.php:35
  +#, c-format
  +msgid "Change permission of \"%s\""
  +msgstr ""
  +
  +#: ../plugin/css.php:34 ../plugin/css.php:42
  +msgid "Back to UserPreferences"
  +msgstr ""
  +
  +#: ../plugin/css.php:68
  +msgid "CSS disabled !"
  +msgstr ""
  +
  +#: ../plugin/format.php:17
  +msgid "It is a XML format !"
  +msgstr ""
  +
  +#: ../plugin/html2pdf.php:30
  +msgid "The TCPDF class not found!"
  +msgstr ""
  +
  +#: ../plugin/login.php:31
  +msgid "Login:"
  +msgstr ""
  +
  +#: ../plugin/login.php:32
  +msgid "Password:"
  +msgstr ""
  +
  +#: ../plugin/login.php:33
  +msgid "Join"
  +msgstr ""
  +
  +#: ../plugin/login.php:51 ../plugin/minilogin.php:25
  +msgid "Logout"
  +msgstr ""
  +
  +#: ../plugin/login.php:52 ../plugin/minilogin.php:24 ../locale/dummy.php:3
  +msgid "UserPreferences"
  +msgstr ""
  +
  +#: ../plugin/man_get.php:17
  +msgid "No manpage selected"
  +msgstr ""
  +
  +#: ../plugin/man_get.php:43
  +msgid "No manpage found"
  +msgstr ""
  +
  +#: ../plugin/man_get.php:122
  +msgid "Edit man page"
  +msgstr ""
  +
  +#: ../plugin/minilogin.php:18 ../wikilib.php:2480
  +msgid "Login or Join"
  +msgstr ""
  +
  +#: ../plugin/minilogin.php:26
  +#, c-format
  +msgid "%s or %s"
  +msgstr ""
  +
  +#: ../plugin/msgfmt.php:75 ../plugin/msgfmt.php:153
  +#, c-format
  +msgid "Translation of %s"
  +msgstr ""
  +
  +#: ../plugin/msgfmt.php:84
  +msgid "Translations are successfully updated."
  +msgstr ""
  +
  +#: ../plugin/msgfmt.php:86
  +msgid "Fail to save translations."
  +msgstr ""
  +
  +#: ../plugin/msgtrans.php:39 ../plugin/userinfo.php:86
  +#, c-format
  +msgid "You are not allowed to \"%s\" !"
  +msgstr ""
  +
  +#: ../plugin/msgtrans.php:179
  +msgid "Local translation files are successfully translated !\n"
  +msgstr ""
  +
  +#: ../plugin/new.php:13 ../plugin/new.php:28
  +msgid "Create a new page"
  +msgstr ""
  +
  +#: ../plugin/new.php:26
  +msgid "Page Name"
  +msgstr ""
  +
  +#: ../plugin/new.php:27
  +msgid "Normalize this page name"
  +msgstr ""
  +
  +#: ../plugin/pagelist.php:118 ../plugin/pagelist.php:135
  +#, c-format
  +msgid "[%sh %sm ago]"
  +msgstr ""
  +
  +#: ../plugin/pageview.php:70
  +msgid "First:"
  +msgstr ""
  +
  +#: ../plugin/print.php:28
  +#, c-format
  +msgid "Retrieved from %s"
  +msgstr ""
  +
  +#: ../plugin/print.php:33
  +#, c-format
  +msgid "last modified %s %s"
  +msgstr ""
  +
  +#: ../plugin/processor/blog.php:101
  +msgid "raw"
  +msgstr ""
  +
  +#: ../plugin/processor/bts.php:181
  +msgid "Save Changes"
  +msgstr ""
  +
  +#: ../plugin/processor/monimarkup.php:515 ../wiki.php:4049
  +msgid "edit"
  +msgstr ""
  +
  +#: ../plugin/quicklinks.php:16 ../plugin/scrap.php:37
  +#: ../plugin/subscribe.php:19 ../plugin/subscribe.php:55
  +msgid "Please login or make your ID."
  +msgstr ""
  +
  +#: ../plugin/quicklinks.php:22 ../plugin/scrap.php:40
  +#: ../plugin/subscribe.php:61
  +msgid "Goto UserPreferences"
  +msgstr ""
  +
  +#: ../plugin/quicklinks.php:23
  +msgid ""
  +"If you want to custumize your quicklinks, just make your ID and register "
  +"your email address in the UserPreferences."
  +msgstr ""
  +
  +#: ../plugin/quicklinks.php:38
  +msgid "QucikLinks are updated."
  +msgstr ""
  +
  +#: ../plugin/quicklinks.php:50
  +msgid "Do you want to customize your quicklinks ?"
  +msgstr ""
  +
  +#: ../plugin/rawblog.php:63 ../plugin/rawblog.php:73
  +#, c-format
  +msgid "Delete Blog entry \"%s\""
  +msgstr ""
  +
  +#: ../plugin/rcs.php:13
  +#, c-format
  +msgid "%s does not support rcs options."
  +msgstr ""
  +
  +#: ../plugin/rcs.php:26
  +#, c-format
  +msgid "Change options for \"%s\""
  +msgstr ""
  +
  +#: ../plugin/rcs.php:32
  +#, c-format
  +msgid "Fail to rcs \"%s\" !"
  +msgstr ""
  +
  +#: ../plugin/rcs.php:36
  +#, c-format
  +msgid "Change options for \"%s\" ?"
  +msgstr ""
  +
  +#: ../plugin/rcs.php:47
  +msgid "Only WikiMaster can execute rcs"
  +msgstr ""
  +
  +#: ../plugin/rcsimport.php:76
  +msgid "Page name"
  +msgstr ""
  +
  +#: ../plugin/rcspurge.php:24
  +msgid "Invalid rcspurge range"
  +msgstr ""
  +
  +#: ../plugin/rcspurge.php:29
  +#, c-format
  +msgid "RCS purge \"%s\""
  +msgstr ""
  +
  +#: ../plugin/rdf_blog.php:30 ../plugin/rss_blog.php:25
  +msgid "Blog Changes"
  +msgstr ""
  +
  +#: ../plugin/rdf_blog.php:44 ../plugin/rss_blog.php:103
  +#, c-format
  +msgid "BlogChanges at %s"
  +msgstr ""
  +
  +#: ../plugin/referer.php:139
  +msgid "Referer history"
  +msgstr ""
  +
  +#: ../plugin/rename.php:19
  +#, c-format
  +msgid "\"%s\" is renamed !"
  +msgstr ""
  +
  +#: ../plugin/rename.php:35
  +#, c-format
  +msgid "'%s' is changed"
  +msgstr ""
  +
  +#: ../plugin/rename.php:43
  +#, c-format
  +msgid "'%s' is renamed as '%s' successfully."
  +msgstr ""
  +
  +#: ../plugin/rename.php:51
  +#, c-format
  +msgid "Fail to rename \"%s\" !"
  +msgstr ""
  +
  +#: ../plugin/rename.php:58
  +#, c-format
  +msgid "Rename \"%s\" ?"
  +msgstr ""
  +
  +#: ../plugin/rename.php:63
  +msgid "Old name:"
  +msgstr ""
  +
  +#: ../plugin/rename.php:64
  +msgid "New name:"
  +msgstr ""
  +
  +#: ../plugin/rename.php:74
  +msgid "Rename and fix Backlinks"
  +msgstr ""
  +
  +#: ../plugin/rename.php:78
  +msgid "Only WikiMaster can rename this page"
  +msgstr ""
  +
  +#: ../plugin/rename.php:79 ../wikilib.php:1433
  +msgid "with revision history"
  +msgstr ""
  +
  +#: ../plugin/rename.php:82
  +msgid "Check backlinks"
  +msgstr ""
  +
  +#: ../plugin/restore.php:23
  +msgid "Error: Don't try to overwrite it"
  +msgstr ""
  +
  +#: ../plugin/restore.php:24
  +msgid "Please rename your old 'text_dir' first."
  +msgstr ""
  +
  +#: ../plugin/restore.php:25
  +msgid "e.g. \\$ mv data/text data/text_old"
  +msgstr ""
  +
  +#: ../plugin/restore.php:29
  +msgid "Error: tarball does not exists"
  +msgstr ""
  +
  +#: ../plugin/restore.php:34
  +#, c-format
  +msgid "Restore %s"
  +msgstr ""
  +
  +#: ../plugin/restore.php:50
  +#, c-format
  +msgid "Restore %s ?"
  +msgstr ""
  +
  +#: ../plugin/restore.php:67
  +msgid "Restore backuped data"
  +msgstr ""
  +
  +#: ../plugin/restore.php:68
  +msgid "Select a tarball file to restore"
  +msgstr ""
  +
  +#: ../plugin/revert.php:23 ../wiki.php:5662
  +#, c-format
  +msgid "Old Revisions of the %s"
  +msgstr ""
  +
  +#: ../plugin/revert.php:57
  +msgid "No version control available."
  +msgstr ""
  +
  +#: ../plugin/revert.php:61
  +#, c-format
  +msgid "%s is successfully rollback."
  +msgstr ""
  +
  +#: ../plugin/revert.php:66
  +msgid "Are you really want to overwrite this page ?"
  +msgstr ""
  +
  +#: ../plugin/revert.php:67
  +msgid "Force overwrite"
  +msgstr ""
  +
  +#: ../plugin/revert.php:69
  +msgid "Are you really want to revert this page ?"
  +msgstr ""
  +
  +#: ../plugin/revert.php:74 ../wikilib.php:1200
  +msgid "Summary"
  +msgstr ""
  +
  +#: ../plugin/revert.php:76
  +#, c-format
  +msgid "Rollback to revision %s"
  +msgstr ""
  +
  +#: ../plugin/revert.php:79
  +msgid "Revert page"
  +msgstr ""
  +
  +#: ../plugin/revert.php:80
   #, c-format
  -msgid "Total %d related keywords"
  +msgid "Only WikiMaster can %s this page"
   msgstr ""
   
  -#: ../plugin/Tour.php:142
  +#: ../plugin/revert.php:80
   #, c-format
  -msgid "Total %d related pages"
  +msgid "revert"
   msgstr ""
   
  -#: ../plugin/trackback.php:53
  -msgid "TrackBack is not activated !"
  +#: ../plugin/scrap.php:55
  +msgid "Scrap lists updated."
   msgstr ""
   
  -#: ../plugin/trackback.php:54
  -msgid "send ping"
  +#: ../plugin/scrap.php:65
  +#, c-format
  +msgid "\"%s\" is unscrapped."
   msgstr ""
   
  -#: ../plugin/trackback.php:57
  +#: ../plugin/scrap.php:68
   #, c-format
  -msgid "TrackBack list of %s"
  +msgid "\"%s\" is scrapped."
   msgstr ""
   
  -#: ../plugin/trackback.php:61 ../plugin/trackback.php:78
  -msgid "TrackBack URL for this page:"
  +#: ../plugin/scrap.php:94
  +#, c-format
  +msgid "Do you want to scrap \"%s\" ?"
   msgstr ""
   
  -#: ../plugin/trackback.php:62 ../plugin/trackback.php:79
  -msgid "Send TrackBack Ping to another Blog:"
  +#: ../plugin/scrap.php:97
  +msgid "Scrapped pages"
   msgstr ""
   
  -#: ../plugin/trackback.php:77
  -#, c-format
  -msgid "No TrackBack entry found for %s"
  +#: ../plugin/security/acl.php:141
  +msgid "ACL groups"
   msgstr ""
   
  -#: ../plugin/TwinPages.php:13
  -#, c-format
  -msgid "TwinPages of %s"
  +#: ../plugin/security/acl.php:144
  +msgid "Allowed ACL actions"
   msgstr ""
   
  -#: ../plugin/TwinPages.php:20 ../wiki.php:5645
  -msgid "See [TwinPages]: "
  +#: ../plugin/security/acl.php:149
  +msgid "Denied ACL actions"
   msgstr ""
   
  -#: ../plugin/TwinPages.php:22
  -msgid "No TwinPages found."
  +#: ../plugin/security/acl.php:154
  +msgid "Protected ACL actions"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:303
  -msgid "File name"
  +#: ../plugin/security/acl.php:217 ../plugin/security/community.php:26
  +#: ../plugin/security/community.php:36 ../plugin/security/community.php:46
  +#: ../plugin/security/mustlogin.php:28 ../plugin/security/mustlogin.php:39
  +#: ../plugin/security/mustlogin.php:50 ../plugin/security/needtologin.php:28
  +#: ../plugin/security/needtologin.php:39 ../plugin/security/needtologin.php:50
  +#: ../plugin/security/nforge.php:41 ../plugin/security/nforge.php:52
  +#: ../plugin/security/nforge.php:63
  +#, c-format
  +msgid "You are not allowed to '%s' on this page"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:304
  -msgid "Size"
  +#: ../plugin/security/acl.php:218
  +msgid "Please contact WikiMasters :b"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:355
  -msgid "Next page &raquo;"
  +#: ../plugin/security/authbasic.php:68
  +#, c-format
  +msgid "You have no permission to '%s'."
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:357
  -msgid "&laquo; First page"
  +#: ../plugin/security/authbasic.php:71
  +msgid "You must enter a valid login ID and password to access this resource.\n"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:448
  +#: ../plugin/security/community.php:61 ../plugin/security/htaccesslogin.php:46
  +#: ../plugin/security/mustlogin.php:66 ../plugin/security/userbased.php:30
  +#: ../plugin/security/userbased.php:38 ../plugin/security/userbased.php:46
  +#: ../plugin/security/userbased.php:61 ../plugin/security/wikimaster.php:29
  +#: ../plugin/security/wikimaster.php:38 ../plugin/security/wikimaster.php:47
   #, c-format
  -msgid "Total %d files"
  +msgid "You are not allowed to '%s' on this page."
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:454 ../wikilib.php:1372
  -msgid "Delete selected files"
  +#: ../plugin/security/htaccesslogin.php:47
  +msgid "Please contact the system administrator for htaccess based logins."
   msgstr ""
   
  -#: ../plugin/UploadFile.php:11
  -msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini"
  +#: ../plugin/security/userbased.php:31 ../plugin/security/userbased.php:39
  +#: ../plugin/security/userbased.php:47 ../plugin/security/wikimaster.php:30
  +#: ../plugin/security/wikimaster.php:39 ../plugin/security/wikimaster.php:48
  +msgid "Please contact to WikiMaster"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:13
  -msgid ""
  -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in "
  -"the HTML form"
  +#: ../plugin/sendping.php:13 ../plugin/trackback.php:40
  +msgid "Error: Page Not found !"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:15
  -msgid "The uploaded file was only partially uploaded"
  +#: ../plugin/sendping.php:54
  +msgid "Error: No entry found!"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:17
  -msgid "No file was uploaded"
  +#: ../plugin/sendping.php:71
  +msgid "Send TrackBack ping"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:19
  -msgid "Missing a temporary folder"
  +#: ../plugin/sendping.php:165
  +msgid "Trackback sent"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:21
  -msgid "Failed to write file to disk"
  +#: ../plugin/subscribe.php:24 ../plugin/subscribe.php:28
  +msgid "You did'nt subscribed any pages yet."
   msgstr ""
   
  -#: ../plugin/UploadFile.php:23
  -msgid "File upload stopped by extension"
  +#: ../plugin/subscribe.php:35
  +msgid "No subscribed pages found."
   msgstr ""
   
  -#: ../plugin/UploadFile.php:25
  -msgid "Unknown upload error"
  +#: ../plugin/subscribe.php:42
  +msgid "EmailNotification is not activated"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:184 ../plugin/UploadFile.php:198
  -#, c-format
  -msgid "The %s type of %s is not allowed to upload"
  +#: ../plugin/subscribe.php:43
  +msgid ""
  +"If you want to subscribe this page please contact the WikiMaster to activate "
  +"the e-mail notification"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:200
  -#, c-format
  -msgid "%s is not allowed to upload"
  +#: ../plugin/subscribe.php:53
  +msgid "Please enter your email address first."
   msgstr ""
   
  -#: ../plugin/UploadFile.php:255
  -#, c-format
  -msgid "It is not allowed to change file ext. \"%s\" to \"%s\"."
  +#: ../plugin/subscribe.php:62
  +msgid ""
  +"If you want to subscribe this page, just make your ID and register your "
  +"email address in the UserPreferences."
   msgstr ""
   
  -#: ../plugin/UploadFile.php:273
  -msgid "ERROR:"
  +#: ../plugin/subscribe.php:77
  +msgid "Subscribe lists updated."
   msgstr ""
   
  -#: ../plugin/UploadFile.php:305
  +#: ../plugin/subscribe.php:91
   #, c-format
  -msgid "File \"%s\" is uploaded successfully"
  +msgid "\"%s\" is already subscribed."
   msgstr ""
   
  -#: ../plugin/UploadFile.php:372
  -msgid "Files are uploaded successfully"
  +#: ../plugin/subscribe.php:100
  +#, c-format
  +msgid "Do you want to subscribe \"%s\" ?"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:408
  -msgid "Multi upload form"
  +#: ../plugin/subscribe.php:106
  +msgid "Subscribed pages"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:421
  -msgid "Replace original file"
  +#: ../plugin/theme.php:29
  +msgid "Theme cleared. Goto UserPreferences."
   msgstr ""
   
  -#: ../plugin/UploadFile.php:422
  -msgid "Rename if it already exist"
  +#: ../plugin/theme.php:40
  +msgid "Theme is changed"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:432
  -msgid "Upload"
  +#: ../plugin/theme.php:69
  +msgid "Please select a theme properly."
   msgstr ""
   
  -#: ../plugin/UploadFile.php:435
  -#, c-format
  -msgid "or %s."
  +#: ../plugin/theme.php:79
  +msgid "Theme disabled !"
   msgstr ""
   
  -#: ../plugin/UploadFile.php:435
  -msgid "Multiple Upload files"
  +#: ../plugin/theme.php:97
  +msgid "-- Select --"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:19
  -msgid "Successfully Uploaded"
  +#: ../plugin/ticket.php:173
  +msgid "Invalid use of ticket"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:20
  -msgid "Choose File"
  +#: ../plugin/trackback.php:53
  +msgid "TrackBack is not activated !"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:268
  -msgid "add files"
  +#: ../plugin/trackback.php:54
  +msgid "send ping"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:269
  -msgid "add a file"
  +#: ../plugin/trackback.php:57
  +#, c-format
  +msgid "TrackBack list of %s"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:271
  -msgid "Reset"
  +#: ../plugin/trackback.php:61 ../plugin/trackback.php:78
  +msgid "TrackBack URL for this page:"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:272
  -msgid "Attachments"
  +#: ../plugin/trackback.php:62 ../plugin/trackback.php:79
  +msgid "Send TrackBack Ping to another Blog:"
  +msgstr ""
  +
  +#: ../plugin/trackback.php:77
  +#, c-format
  +msgid "No TrackBack entry found for %s"
   msgstr ""
   
   #: ../plugin/userform.php:36 ../plugin/userform.php:39
  @@ -1778,7 +1838,7 @@
   msgid "Cookie deleted !"
   msgstr ""
   
  -#: ../plugin/userform.php:110 ../wikilib.php:2562
  +#: ../plugin/userform.php:110 ../wikilib.php:2555
   msgid "E-mail new password"
   msgstr ""
   
  @@ -1969,22 +2029,6 @@
   msgid "User \"%s\" are deleted !"
   msgstr ""
   
  -#: ../plugin/VisualTour.php:133
  -msgid "Normal"
  -msgstr ""
  -
  -#: ../plugin/VisualTour.php:135
  -msgid "Wider"
  -msgstr ""
  -
  -#: ../plugin/VisualTour.php:137
  -msgid "Deeper"
  -msgstr ""
  -
  -#: ../plugin/Vote.php:113
  -msgid "Voted successfully"
  -msgstr ""
  -
   #: ../plugin/whois.php:119
   #, c-format
   msgid "Could not connect to %s server"
  @@ -1995,10 +2039,6 @@
   msgid "Whois search result for %s"
   msgstr ""
   
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2911
  -msgid "Others"
  -msgstr ""
  -
   #: ../wiki.php:1316
   #, c-format
   msgid "Rename %s to %s"
  @@ -2075,7 +2115,7 @@
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:5647 ../wiki.php:5656 ../wikilib.php:1659
  +#: ../wiki.php:5647 ../wiki.php:5656 ../wikilib.php:1652
   msgid "Create this page"
   msgstr ""
   
  @@ -2135,371 +2175,354 @@
   msgid "Please enter the valid password"
   msgstr ""
   
  -#: ../wikilib.php:806
  -msgid ""
  -"<b>Emphasis:</b> ''<i>italics</i>''; '''<b>bold</b>'''; '''''<b><i>bold "
  -"italics</i></b>''''';\n"
  -"''<i>mixed '''<b>bold</b>''' and italics</i>''; ---- horizontal rule.<br />\n"
  -"<b>Headings:</b> = Title 1 =; == Title 2 ==; === Title 3 ===;\n"
  -"==== Title 4 ====; ===== Title 5 =====.<br />\n"
  -"<b>Lists:</b> space and one of * bullets; 1., a., A., i., I. numbered "
  -"items;\n"
  -"1.#n start numbering at n; space alone indents.<br />\n"
  -"<b>Links:</b> JoinCapitalizedWords; [\"brackets and double quotes\"];\n"
  -"[bracketed words];\n"
  -"url; [url]; [url label].<br />\n"
  -"<b>Tables</b>: || cell text |||| cell text spanning two columns ||;\n"
  -"no trailing white space allowed after tables or titles.<br />\n"
  -msgstr ""
  -
  -#: ../wikilib.php:912
  +#: ../wikilib.php:905
   msgid "You are not allowed to edit this page !"
   msgstr ""
   
  -#: ../wikilib.php:920
  +#: ../wikilib.php:913
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
  -#: ../wikilib.php:943 ../wikilib.php:1227 ../wikilib.php:1881
  -#: ../wikilib.php:1978 ../wikilib.php:2490 ../wikilib.php:2548
  +#: ../wikilib.php:936 ../wikilib.php:1220 ../wikilib.php:1874
  +#: ../wikilib.php:1971 ../wikilib.php:2483 ../wikilib.php:2541
   msgid "Save"
   msgstr ""
   
  -#: ../wikilib.php:951 ../wikilib.php:1214 ../wikilib.php:1889
  -#: ../wikilib.php:1986
  +#: ../wikilib.php:944 ../wikilib.php:1207 ../wikilib.php:1882
  +#: ../wikilib.php:1979
   msgid "Skip to preview"
   msgstr ""
   
  -#: ../wikilib.php:1066
  +#: ../wikilib.php:1059
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   
  -#: ../wikilib.php:1068
  +#: ../wikilib.php:1061
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr ""
   
  -#: ../wikilib.php:1072
  +#: ../wikilib.php:1065
   msgid "Merge"
   msgstr ""
   
  -#: ../wikilib.php:1073
  +#: ../wikilib.php:1066
   msgid "Merge manually"
   msgstr ""
   
  -#: ../wikilib.php:1074
  +#: ../wikilib.php:1067
   msgid "Ignore conflicts"
   msgstr ""
   
  -#: ../wikilib.php:1109
  +#: ../wikilib.php:1102
   msgid "ReduceEditor"
   msgstr ""
   
  -#: ../wikilib.php:1110
  +#: ../wikilib.php:1103
   msgid "EnlargeEditor"
   msgstr ""
   
  -#: ../wikilib.php:1114 ../locale/dummy.php:6
  +#: ../wikilib.php:1107 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
  -#: ../wikilib.php:1116
  +#: ../wikilib.php:1109
   msgid "HelpOnEditing"
   msgstr ""
   
  -#: ../wikilib.php:1150
  +#: ../wikilib.php:1143
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:1170
  +#: ../wikilib.php:1163
   msgid "Category"
   msgstr ""
   
  -#: ../wikilib.php:1178
  +#: ../wikilib.php:1171
   msgid " Select "
   msgstr ""
   
  -#: ../wikilib.php:1190
  +#: ../wikilib.php:1183
   msgid "Minor edit"
   msgstr ""
   
  -#: ../wikilib.php:1306
  +#: ../wikilib.php:1299
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:1311
  +#: ../wikilib.php:1304
   #, c-format
   msgid "%s is not valid action"
   msgstr ""
   
  -#: ../wikilib.php:1313
  +#: ../wikilib.php:1306
   msgid "Is it valid action ?"
   msgstr ""
   
  -#: ../wikilib.php:1360
  +#: ../wikilib.php:1353
   #, c-format
   msgid "File '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:1362
  +#: ../wikilib.php:1355
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1367
  +#: ../wikilib.php:1360
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:1369
  +#: ../wikilib.php:1362
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1379 ../wikilib.php:1399
  +#: ../wikilib.php:1372 ../wikilib.php:1392
   msgid "No files are selected !"
   msgstr ""
   
  -#: ../wikilib.php:1392
  +#: ../wikilib.php:1385
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
  -#: ../wikilib.php:1396
  +#: ../wikilib.php:1389
   msgid "Delete selected file"
   msgstr ""
   
  -#: ../wikilib.php:1417
  +#: ../wikilib.php:1410
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr ""
   
  -#: ../wikilib.php:1432
  +#: ../wikilib.php:1425
   msgid "Please delete this file manually."
   msgstr ""
   
  -#: ../wikilib.php:1434
  +#: ../wikilib.php:1427
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr ""
   
  -#: ../wikilib.php:1488
  +#: ../wikilib.php:1481
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
  -#: ../wikilib.php:1661
  +#: ../wikilib.php:1654
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
   
  -#: ../wikilib.php:1661
  +#: ../wikilib.php:1654
   msgid "title"
   msgstr ""
   
  -#: ../wikilib.php:1675
  +#: ../wikilib.php:1668
   msgid "Please try to fulltext search"
   msgstr ""
   
  -#: ../wikilib.php:1678
  +#: ../wikilib.php:1671
   #, c-format
   msgid "You can also click %s to fulltext search.\n"
   msgstr ""
   
  -#: ../wikilib.php:1723 ../wikilib.php:1836
  +#: ../wikilib.php:1716 ../wikilib.php:1829
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr ""
   
  -#: ../wikilib.php:1729
  +#: ../wikilib.php:1722
   msgid "Section edit is not valid for non-exists page."
   msgstr ""
   
  -#: ../wikilib.php:1762 ../wikilib.php:2018
  +#: ../wikilib.php:1755 ../wikilib.php:2011
   msgid "mail does not supported by default."
   msgstr ""
   
  -#: ../wikilib.php:1766 ../wikilib.php:2022
  +#: ../wikilib.php:1759 ../wikilib.php:2015
   msgid "Sent notification mail."
   msgstr ""
   
  -#: ../wikilib.php:1768 ../wikilib.php:2024
  +#: ../wikilib.php:1761 ../wikilib.php:2017
   msgid "No subscribers found."
   msgstr ""
   
  -#: ../wikilib.php:1773 ../wikilib.php:2029
  +#: ../wikilib.php:1766 ../wikilib.php:2022
   #, c-format
   msgid "%s is not editable"
   msgstr ""
   
  -#: ../wikilib.php:1775 ../wikilib.php:2031
  +#: ../wikilib.php:1768 ../wikilib.php:2024
   #, c-format
   msgid "%s is saved"
   msgstr ""
   
  -#: ../wikilib.php:1827
  +#: ../wikilib.php:1820
   msgid "Goto Editor"
   msgstr ""
   
  -#: ../wikilib.php:1841
  +#: ../wikilib.php:1834
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr ""
   
  -#: ../wikilib.php:1842
  +#: ../wikilib.php:1835
   #, c-format
   msgid "%s is merged successfully"
   msgstr ""
   
  -#: ../wikilib.php:1846
  +#: ../wikilib.php:1839
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1847
  +#: ../wikilib.php:1840
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr ""
   
  -#: ../wikilib.php:1848
  +#: ../wikilib.php:1841
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1849
  +#: ../wikilib.php:1842
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1854
  +#: ../wikilib.php:1847
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr ""
   
  -#: ../wikilib.php:1855
  +#: ../wikilib.php:1848
   msgid "Please resolve conflicts manually."
   msgstr ""
   
  -#: ../wikilib.php:1858
  +#: ../wikilib.php:1851
   #, c-format
   msgid "Force merging for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1859
  +#: ../wikilib.php:1852
   msgid "Please be careful, you could damage useful information."
   msgstr ""
   
  -#: ../wikilib.php:1873
  +#: ../wikilib.php:1866
   msgid "Conflict error!"
   msgstr ""
   
  -#: ../wikilib.php:1914
  +#: ../wikilib.php:1907
   msgid "Too long Comment"
   msgstr ""
   
  -#: ../wikilib.php:1964
  +#: ../wikilib.php:1957
   #, c-format
   msgid "Preview of %s"
   msgstr ""
   
  -#: ../wikilib.php:2064
  +#: ../wikilib.php:2057
   msgid "Nobody subscribed to this page."
   msgstr ""
   
  -#: ../wikilib.php:2083
  +#: ../wikilib.php:2076
   #, c-format
   msgid "%s page is modified"
   msgstr ""
   
  -#: ../wikilib.php:2112
  +#: ../wikilib.php:2105
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:2125
  +#: ../wikilib.php:2118
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:2130
  +#: ../wikilib.php:2123
   msgid "Mails are sent successfully"
   msgstr ""
   
  -#: ../wikilib.php:2131
  +#: ../wikilib.php:2124
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr ""
   
  -#: ../wikilib.php:2133
  +#: ../wikilib.php:2126
   msgid "Fail to send mail"
   msgstr ""
   
  -#: ../wikilib.php:2144
  +#: ../wikilib.php:2137
   msgid "This wiki does not support sendmail"
   msgstr ""
   
  -#: ../wikilib.php:2274
  +#: ../wikilib.php:2267
   msgid "Invalid regular expression !"
   msgstr ""
   
  -#: ../wikilib.php:2298
  +#: ../wikilib.php:2291
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:2301
  +#: ../wikilib.php:2294
   msgid "Infinite loop possible!"
   msgstr ""
   
  -#: ../wikilib.php:2418
  +#: ../wikilib.php:2411
   msgid "Login"
   msgstr ""
   
  -#: ../wikilib.php:2419
  +#: ../wikilib.php:2412
   msgid "OpenID"
   msgstr ""
   
  -#: ../wikilib.php:2432 ../wikilib.php:2567
  +#: ../wikilib.php:2425 ../wikilib.php:2560
   msgid "ID"
   msgstr ""
   
  -#: ../wikilib.php:2470 ../wikilib.php:2560
  +#: ../wikilib.php:2463 ../wikilib.php:2553
   msgid "Make profile"
   msgstr ""
   
  -#: ../wikilib.php:2472
  +#: ../wikilib.php:2465
   msgid "password again"
   msgstr ""
   
  -#: ../wikilib.php:2474 ../wikilib.php:2524
  +#: ../wikilib.php:2467 ../wikilib.php:2517
   msgid "Mail"
   msgstr ""
   
  -#: ../wikilib.php:2496
  +#: ../wikilib.php:2489
   msgid "New password"
   msgstr ""
   
  -#: ../wikilib.php:2501
  +#: ../wikilib.php:2494
   msgid "Nickname"
   msgstr ""
   
  -#: ../wikilib.php:2525
  +#: ../wikilib.php:2518
   msgid "Time Zone"
   msgstr ""
   
  -#: ../wikilib.php:2534
  +#: ../wikilib.php:2527
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:2912
  +#: ../wikilib.php:2905
   msgid "Show all"
   msgstr ""
   
  -#: ../wikilib.php:3050
  +#: ../wikilib.php:3043
   msgid "Contents"
   msgstr ""
   
  -#: ../wikilib.php:3171
  +#: ../wikilib.php:3164
   #, c-format
   msgid "Title search for \"%s\""
   msgstr ""
  @@ -2508,252 +2531,252 @@
   msgid "Check a dba configuration"
   msgstr ""
   
  -#: ../monisetup.php:53
  +#: ../monisetup.php:49
   #, c-format
   msgid "%s is selected."
   msgstr ""
   
  -#: ../monisetup.php:55
  +#: ../monisetup.php:51
   msgid "No \\$dba_type selected."
   msgstr ""
   
  -#: ../monisetup.php:63
  +#: ../monisetup.php:59
   msgid "Check a AcceptPathInfo setting for Apache 2.x.xx"
   msgstr ""
   
  -#: ../monisetup.php:70 ../monisetup.php:76
  +#: ../monisetup.php:66 ../monisetup.php:72
   msgid "Off"
   msgstr ""
   
  -#: ../monisetup.php:78
  +#: ../monisetup.php:74
   msgid "On"
   msgstr ""
   
  -#: ../monisetup.php:432
  +#: ../monisetup.php:428
   msgid ""
   "Please change the permission of some directories writable on your server to "
   "initialize your Wiki."
   msgstr ""
   
  -#: ../monisetup.php:434
  +#: ../monisetup.php:430
   #, c-format
   msgid ""
   "If you want a more safe wiki, try to change the permission of directories "
   "with %s."
   msgstr ""
   
  -#: ../monisetup.php:437
  +#: ../monisetup.php:433
   msgid ""
   "or use <tt>monisetup.sh</tt> and select 777 or <font color='red'>2777</font>"
   msgstr ""
   
  -#: ../monisetup.php:439
  +#: ../monisetup.php:435
   msgid ""
   "After execute one of above two commands, just <a href='monisetup.php'>reload "
   "this <tt>monisetup.php</tt></a> would make a new initial <tt>config.php</tt> "
   "with detected parameters for your wiki."
   msgstr ""
   
  -#: ../monisetup.php:440
  +#: ../monisetup.php:436
   msgid "Reload"
   msgstr ""
   
  -#: ../monisetup.php:443
  +#: ../monisetup.php:439
   msgid "WARN"
   msgstr ""
   
  -#: ../monisetup.php:444
  +#: ../monisetup.php:440
   msgid ""
   "Please execute the following command after you have completed your "
   "configuration."
   msgstr ""
   
  -#: ../monisetup.php:448 ../monisetup.php:1274
  +#: ../monisetup.php:444 ../monisetup.php:1270
   msgid "WARN: You have to enter your Admin Password"
   msgstr ""
   
  -#: ../monisetup.php:451
  +#: ../monisetup.php:447
   msgid ""
   "WARN: If you have any permission to execute 'secure.sh'. press the following "
   "button"
   msgstr ""
   
  -#: ../monisetup.php:453
  +#: ../monisetup.php:449
   msgid "Protect my config.php now!"
   msgstr ""
   
  -#: ../monisetup.php:470
  +#: ../monisetup.php:466
   #, c-format
   msgid "FATAL: %s directory is not writable"
   msgstr ""
   
  -#: ../monisetup.php:471
  +#: ../monisetup.php:467
   msgid "Please execute the following command."
   msgstr ""
   
  -#: ../monisetup.php:490
  +#: ../monisetup.php:486
   #, c-format
   msgid "%s directory is not writable"
   msgstr ""
   
  -#: ../monisetup.php:507
  +#: ../monisetup.php:503
   #, c-format
   msgid "%s is not writable"
   msgstr ""
   
  -#: ../monisetup.php:514 ../monisetup.php:520
  +#: ../monisetup.php:510 ../monisetup.php:516
   #, c-format
   msgid "%s is created now"
   msgstr ""
   
  -#: ../monisetup.php:530
  +#: ../monisetup.php:526
   #, c-format
   msgid "%s is writable"
   msgstr ""
   
  -#: ../monisetup.php:547
  +#: ../monisetup.php:543
   #, c-format
   msgid ""
   "If you want to check .htaccess file please delete '%s' file and reload it."
   msgstr ""
   
  -#: ../monisetup.php:550
  +#: ../monisetup.php:546
   msgid "Security check for 'upload_dir'."
   msgstr ""
   
  -#: ../monisetup.php:582
  +#: ../monisetup.php:578
   msgid ".htaccess for 'imgs_dir'."
   msgstr ""
   
  -#: ../monisetup.php:652
  +#: ../monisetup.php:648
   msgid "Fail"
   msgstr ""
   
  -#: ../monisetup.php:658
  +#: ../monisetup.php:654
   msgid "Unable to write .htaccess"
   msgstr ""
   
  -#: ../monisetup.php:762
  +#: ../monisetup.php:758
   msgid "Click here to toggle all"
   msgstr ""
   
  -#: ../monisetup.php:763
  +#: ../monisetup.php:759
   msgid "Deselect all"
   msgstr ""
   
  -#: ../monisetup.php:768
  +#: ../monisetup.php:764
   msgid "Please be careful to deselect these pages"
   msgstr ""
   
  -#: ../monisetup.php:1067
  +#: ../monisetup.php:1063
   msgid "MoniWiki"
   msgstr ""
   
  -#: ../monisetup.php:1070
  +#: ../monisetup.php:1066
   msgid "'config.php' is not writable !"
   msgstr ""
   
  -#: ../monisetup.php:1071
  +#: ../monisetup.php:1067
   msgid ""
   "Please execute <tt>'monisetup.sh'</tt> or <tt>chmod a+w config.php</tt> "
   "first to change your settings."
   msgstr ""
   
  -#: ../monisetup.php:1073
  +#: ../monisetup.php:1069
   msgid "Unprotect my config.php"
   msgstr ""
   
  -#: ../monisetup.php:1101
  +#: ../monisetup.php:1097
   msgid "config.php is protected now !"
   msgstr ""
   
  -#: ../monisetup.php:1106 ../monisetup.php:1125
  +#: ../monisetup.php:1102 ../monisetup.php:1121
   msgid "Invalid password error !"
   msgstr ""
   
  -#: ../monisetup.php:1107 ../monisetup.php:1126
  +#: ../monisetup.php:1103 ../monisetup.php:1122
   msgid ""
   "If you can't remember your admin password, delete password entry in the "
   "'config.php' and restart 'monisetup'"
   msgstr ""
   
  -#: ../monisetup.php:1112
  +#: ../monisetup.php:1108
   msgid "config.php is unprotected now !"
   msgstr ""
   
  -#: ../monisetup.php:1158
  +#: ../monisetup.php:1154
   #, c-format
   msgid "Updated Configutations for this %s"
   msgstr ""
   
  -#: ../monisetup.php:1176
  +#: ../monisetup.php:1172
   msgid "Configurations are saved successfully"
   msgstr ""
   
  -#: ../monisetup.php:1177
  +#: ../monisetup.php:1173
   msgid ""
   "WARN: Please check <a href='monisetup.php'> your saved configurations</a>"
   msgstr ""
   
  -#: ../monisetup.php:1178
  +#: ../monisetup.php:1174
   msgid "If all is good, change 'config.php' permission as 644."
   msgstr ""
   
  -#: ../monisetup.php:1190
  +#: ../monisetup.php:1186
   msgid "Welcome to MoniWiki ! This is your first installation"
   msgstr ""
   
  -#: ../monisetup.php:1200
  +#: ../monisetup.php:1196
   msgid "Default settings are loaded..."
   msgstr ""
   
  -#: ../monisetup.php:1208
  +#: ../monisetup.php:1204
   msgid "Initial configurations are saved successfully."
   msgstr ""
   
  -#: ../monisetup.php:1209
  +#: ../monisetup.php:1205
   msgid "Goto <a href='monisetup.php'>MoniSetup</a> again to configure details"
   msgstr ""
   
  -#: ../monisetup.php:1226 ../monisetup.php:1228 ../monisetup.php:1324
  -#: ../monisetup.php:1326
  +#: ../monisetup.php:1222 ../monisetup.php:1224 ../monisetup.php:1320
  +#: ../monisetup.php:1322
   #, c-format
   msgid "goto %s"
   msgstr ""
   
  -#: ../monisetup.php:1231
  +#: ../monisetup.php:1227
   msgid "No WikiSeeds are selected"
   msgstr ""
   
  -#: ../monisetup.php:1242
  +#: ../monisetup.php:1238
   #, c-format
   msgid "Preview current settings for this %s"
   msgstr ""
   
  -#: ../monisetup.php:1244
  +#: ../monisetup.php:1240
   #, c-format
   msgid "Read current settings for this %s"
   msgstr ""
   
  -#: ../monisetup.php:1272
  +#: ../monisetup.php:1268
   msgid "Change your settings"
   msgstr ""
   
  -#: ../monisetup.php:1276 ../monisetup.php:1319
  +#: ../monisetup.php:1272 ../monisetup.php:1315
   #, c-format
   msgid "WARN: You have no WikiSeed on your %s"
   msgstr ""
   
  -#: ../monisetup.php:1277 ../monisetup.php:1320
  +#: ../monisetup.php:1273 ../monisetup.php:1316
   #, c-format
   msgid "If you want to put wikiseeds on your wiki %s now"
   msgstr ""
   
  -#: ../monisetup.php:1278 ../monisetup.php:1321
  +#: ../monisetup.php:1274 ../monisetup.php:1317
   msgid "Click here"
   msgstr ""
   
  -#: ../monisetup.php:1313 ../monisetup.php:1315
  +#: ../monisetup.php:1309 ../monisetup.php:1311
   msgid "Update"
   msgstr ""
   
  
  
  


1281726160;wkpark;Update of /cvsroot/moniwiki/moniwiki/imgs/misc\nIn directory kill.kldp.net:/tmp/cvs-serv22536/imgs/misc\n\nAdded Files:\n	space.gif \nLog Message:\nadd a img\n\n
wkpark      2010/08/14 04:02:40

  Added:       imgs/misc space.gif
  Log:
  add a img
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/misc/space.gif
  
  	<<Binary file>>
  
  


1281764921;wkpark;Update of /cvsroot/moniwiki/moniwiki-theme/azblue2/css\nIn directory kill.kldp.net:/tmp/cvs-serv16559/css\n\nModified Files:\n	default.css \nLog Message:\n[#315496] more css tuning\n\n
1281765054;wkpark;Update of /cvsroot/moniwiki/moniwiki-theme/azblue2/css\nIn directory kill.kldp.net:/tmp/cvs-serv16641/css\n\nModified Files:\n	default.css \nLog Message:\n[#315589] css styling EditHints\n\n
1281765321;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv16764\n\nModified Files:\n	wiki.php \nLog Message:\n[#315590] styling login macro. set lang attribute\n\n
1281765321;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv16764/plugin\n\nModified Files:\n	login.php \nLog Message:\n[#315590] styling login macro. set lang attribute\n\n
1281765321;wkpark;Update of /cvsroot/moniwiki/moniwiki/locale/po\nIn directory kill.kldp.net:/tmp/cvs-serv16764/locale/po\n\nModified Files:\n	fr.po ko.po moniwiki.pot \nLog Message:\n[#315590] styling login macro. set lang attribute\n\n
wkpark      2010/08/14 14:55:22

  Modified:    .        wiki.php
               plugin   login.php
               locale/po fr.po ko.po moniwiki.pot
  Log:
  [#315590] styling login macro. set lang attribute
  
  Revision  Changes    Path
  1.561     +4 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.560
  retrieving revision 1.561
  diff -u -r1.560 -r1.561
  --- wiki.php	13 Aug 2010 06:06:41 -0000	1.560
  +++ wiki.php	14 Aug 2010 05:55:21 -0000	1.561
  @@ -11,10 +11,10 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.560 2010/08/13 06:06:41 wkpark Exp $
  +// $Id: wiki.php,v 1.561 2010/08/14 05:55:21 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.560 $',1,-1);
  -$_release = '1.1.5-RC2';
  +$_revision = substr('$Revision: 1.561 $',1,-1);
  +$_release = '1.1.5-RC3';
   
   #ob_start("ob_gzhandler");
   
  @@ -1879,6 +1879,7 @@
       $this->use_smileys=$DBInfo->use_smileys;
       $this->use_namespace=!empty($DBInfo->use_namespace) ? $DBInfo->use_namespace : '';
       $this->mediawiki_style=!empty($DBInfo->mediawiki_style) ? 1 : '';
  +    $this->lang=$DBInfo->lang;
       $this->udb=&$DBInfo->udb;
       $this->user=&$DBInfo->user;
       $this->check_openid_url=!empty($DBInfo->check_openid_url) ? $DBInfo->check_openid_url : 0;
  
  
  
  1.13      +10 -7     moniwiki/plugin/login.php
  
  Index: login.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/login.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- login.php	17 Apr 2010 09:20:24 -0000	1.12
  +++ login.php	14 Aug 2010 05:55:21 -0000	1.13
  @@ -1,11 +1,11 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // Login plugin for the MoniWiki
   //
   // Usage: [[Login]]
   //
  -// $Id: login.php,v 1.12 2010/04/17 09:20:24 wkpark Exp $
  +// $Id: login.php,v 1.13 2010/08/14 05:55:21 wkpark Exp $
   
   function macro_login($formatter,$value="",$options="") {
     global $DBInfo;
  @@ -28,20 +28,23 @@
       $passwd_hidden.="<input type='hidden' name='_chall' />\n";
     }
   
  -  $login=_("Login:");
  -  $pass=_("Password:");
  +  $id=_("ID");
  +  $pass=_("Password");
     $join=_("Join");
  +  $login=_("Login");
  +  if (!empty($formatter->lang))
  +    $lang = ' lang="'.substr($formatter->lang, 0, 2).'"';
   
     if ($user->id == 'Anonymous')
     return <<<LOGIN
  -<div id='wikiLogin'>$jscript
  +<div id='wikiLogin'$lang>$jscript
   <form method='post' action='$urlpage' $onsubmit>
   <div>
   <input type="hidden" name="action" value="userform" />
   <table border='0' cellpadding='2' cellspacing='0'>
  -<tr><td align='right'>$login</td><td><input name='login_id' size='10' /></td></tr>
  +<tr><td align='right'>$id</td><td><input name='login_id' size='10' /></td></tr>
   <tr><td align='right'>$pass</td><td><input name='password' type='password' size='10' /></td></tr>
  -<tr><td align='right'><a href='$url'>$join</a></td><td><input type='submit' value='OK' />$passwd_hidden</td></tr>
  +<tr><td align='right'><a href='$url'>$join</a></td><td><span class='button'><input type='submit' class='button' value='$login' /></span>$passwd_hidden</td></tr>
   </table>
   </div>
   </form>
  
  
  
  1.32      +23 -24    moniwiki/locale/po/fr.po
  
  Index: fr.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/fr.po,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- fr.po	13 Aug 2010 18:58:09 -0000	1.31
  +++ fr.po	14 Aug 2010 05:55:21 -0000	1.32
  @@ -4,7 +4,7 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2010-08-14 03:44+0900\n"
  +"POT-Creation-Date: 2010-08-14 13:21+0900\n"
   "PO-Revision-Date: 2003-08-17 22:51+0900\n"
   "Last-Translator: Serge Stinckwich <Serge.Stinckwich@info.unicaen.fr>\n"
   "Language-Team: fr <fr@li.org>\n"
  @@ -1187,9 +1187,10 @@
   msgstr ""
   
   # ../plugin/rename.php:36
  -#: ../plugin/UploadedFiles.php:453 ../plugin/rcsimport.php:32
  -#: ../plugin/rcsimport.php:88 ../plugin/rename.php:77 ../plugin/revert.php:82
  -#: ../plugin/userinfo.php:37 ../wikilib.php:1387 ../wikilib.php:2395
  +#: ../plugin/UploadedFiles.php:453 ../plugin/login.php:32
  +#: ../plugin/rcsimport.php:32 ../plugin/rcsimport.php:88
  +#: ../plugin/rename.php:77 ../plugin/revert.php:82 ../plugin/userinfo.php:37
  +#: ../wikilib.php:1387 ../wikilib.php:2395
   msgid "Password"
   msgstr "Mot de passe"
   
  @@ -1422,28 +1423,27 @@
   msgid "The TCPDF class not found!"
   msgstr ""
   
  -# ../plugin/login.php:24
  -#: ../plugin/login.php:31
  -msgid "Login:"
  -msgstr "Identifiant de connection :"
  -
  -# ../plugin/login.php:25
  -#: ../plugin/login.php:32
  -msgid "Password:"
  -msgstr "Mot de passe :"
  +#: ../plugin/login.php:31 ../wikilib.php:2425 ../wikilib.php:2560
  +msgid "ID"
  +msgstr ""
   
   # ../plugin/login.php:27
   #: ../plugin/login.php:33
   msgid "Join"
   msgstr "Se joindre ?"
   
  +# ../plugin/login.php:26 ../wikilib.php:1051
  +#: ../plugin/login.php:34 ../wikilib.php:2411
  +msgid "Login"
  +msgstr "Se connecter"
  +
   # ../plugin/login.php:41 ../plugin/minilogin.php:29
  -#: ../plugin/login.php:51 ../plugin/minilogin.php:25
  +#: ../plugin/login.php:52 ../plugin/minilogin.php:25
   msgid "Logout"
   msgstr "Se d?connecter"
   
   # ../locale/dummy.php:3 ../plugin/login.php:42 ../plugin/minilogin.php:28
  -#: ../plugin/login.php:52 ../plugin/minilogin.php:24 ../locale/dummy.php:3
  +#: ../plugin/login.php:53 ../plugin/minilogin.php:24 ../locale/dummy.php:3
   msgid "UserPreferences"
   msgstr "Pr?f?rencesUtilisateur"
   
  @@ -2799,19 +2799,10 @@
   msgid "Infinite loop possible!"
   msgstr ""
   
  -# ../plugin/login.php:26 ../wikilib.php:1051
  -#: ../wikilib.php:2411
  -msgid "Login"
  -msgstr "Se connecter"
  -
   #: ../wikilib.php:2412
   msgid "OpenID"
   msgstr ""
   
  -#: ../wikilib.php:2425 ../wikilib.php:2560
  -msgid "ID"
  -msgstr ""
  -
   # ../wikilib.php:1070
   #: ../wikilib.php:2463 ../wikilib.php:2553
   msgid "Make profile"
  @@ -3196,6 +3187,14 @@
   msgid "view"
   msgstr ""
   
  +# ../plugin/login.php:24
  +#~ msgid "Login:"
  +#~ msgstr "Identifiant de connection :"
  +
  +# ../plugin/login.php:25
  +#~ msgid "Password:"
  +#~ msgstr "Mot de passe :"
  +
   # ../wikilib.php:476
   #~ msgid "--Select Category--"
   #~ msgstr "-- S?lectionner une cat?gorie"
  
  
  
  1.38      +20 -21    moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- ko.po	13 Aug 2010 18:58:09 -0000	1.37
  +++ ko.po	14 Aug 2010 05:55:21 -0000	1.38
  @@ -5,7 +5,7 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1.3\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2010-08-14 03:44+0900\n"
  +"POT-Creation-Date: 2010-08-14 13:21+0900\n"
   "PO-Revision-Date: 2008-12-11 12:20+0900\n"
   "Last-Translator: Won-Kyu Park <wkpark@kldp.org>\n"
   "Language-Team: Won-Kyu Park <wkpark@kldp.org>\n"
  @@ -1075,9 +1075,10 @@
   msgid "Total %d files"
   msgstr "총 %d 개 파일"
   
  -#: ../plugin/UploadedFiles.php:453 ../plugin/rcsimport.php:32
  -#: ../plugin/rcsimport.php:88 ../plugin/rename.php:77 ../plugin/revert.php:82
  -#: ../plugin/userinfo.php:37 ../wikilib.php:1387 ../wikilib.php:2395
  +#: ../plugin/UploadedFiles.php:453 ../plugin/login.php:32
  +#: ../plugin/rcsimport.php:32 ../plugin/rcsimport.php:88
  +#: ../plugin/rename.php:77 ../plugin/revert.php:82 ../plugin/userinfo.php:37
  +#: ../wikilib.php:1387 ../wikilib.php:2395
   msgid "Password"
   msgstr "비밀번호"
   
  @@ -1291,23 +1292,23 @@
   msgid "The TCPDF class not found!"
   msgstr "TCPDF 클래스 찾을 수 없음!"
   
  -#: ../plugin/login.php:31
  -msgid "Login:"
  -msgstr "로그인:"
  -
  -#: ../plugin/login.php:32
  -msgid "Password:"
  -msgstr "비밀번호:"
  +#: ../plugin/login.php:31 ../wikilib.php:2425 ../wikilib.php:2560
  +msgid "ID"
  +msgstr "아이디"
   
   #: ../plugin/login.php:33
   msgid "Join"
   msgstr "가입"
   
  -#: ../plugin/login.php:51 ../plugin/minilogin.php:25
  +#: ../plugin/login.php:34 ../wikilib.php:2411
  +msgid "Login"
  +msgstr "로그인"
  +
  +#: ../plugin/login.php:52 ../plugin/minilogin.php:25
   msgid "Logout"
   msgstr "나가기"
   
  -#: ../plugin/login.php:52 ../plugin/minilogin.php:24 ../locale/dummy.php:3
  +#: ../plugin/login.php:53 ../plugin/minilogin.php:24 ../locale/dummy.php:3
   msgid "UserPreferences"
   msgstr "환경설정"
   
  @@ -2491,18 +2492,10 @@
   msgid "Infinite loop possible!"
   msgstr "무한 루프가 가능함!"
   
  -#: ../wikilib.php:2411
  -msgid "Login"
  -msgstr ""
  -
   #: ../wikilib.php:2412
   msgid "OpenID"
   msgstr ""
   
  -#: ../wikilib.php:2425 ../wikilib.php:2560
  -msgid "ID"
  -msgstr "아이디"
  -
   #: ../wikilib.php:2463 ../wikilib.php:2553
   msgid "Make profile"
   msgstr "사용자 등록"
  @@ -2862,6 +2855,12 @@
   msgid "view"
   msgstr "보기"
   
  +#~ msgid "Login:"
  +#~ msgstr "로그인:"
  +
  +#~ msgid "Password:"
  +#~ msgstr "비밀번호:"
  +
   #~ msgid "Please check your php.ini setting"
   #~ msgstr "php.ini 세팅을 확인해보시기 바랍니다"
   
  
  
  
  1.32      +13 -20    moniwiki/locale/po/moniwiki.pot
  
  Index: moniwiki.pot
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/moniwiki.pot,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- moniwiki.pot	13 Aug 2010 18:58:09 -0000	1.31
  +++ moniwiki.pot	14 Aug 2010 05:55:21 -0000	1.32
  @@ -7,7 +7,7 @@
   msgstr ""
   "Project-Id-Version: PACKAGE VERSION\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2010-08-14 03:44+0900\n"
  +"POT-Creation-Date: 2010-08-14 13:21+0900\n"
   "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
   "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
   "Language-Team: LANGUAGE <LL@li.org>\n"
  @@ -1064,9 +1064,10 @@
   msgid "Total %d files"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:453 ../plugin/rcsimport.php:32
  -#: ../plugin/rcsimport.php:88 ../plugin/rename.php:77 ../plugin/revert.php:82
  -#: ../plugin/userinfo.php:37 ../wikilib.php:1387 ../wikilib.php:2395
  +#: ../plugin/UploadedFiles.php:453 ../plugin/login.php:32
  +#: ../plugin/rcsimport.php:32 ../plugin/rcsimport.php:88
  +#: ../plugin/rename.php:77 ../plugin/revert.php:82 ../plugin/userinfo.php:37
  +#: ../wikilib.php:1387 ../wikilib.php:2395
   msgid "Password"
   msgstr ""
   
  @@ -1280,23 +1281,23 @@
   msgid "The TCPDF class not found!"
   msgstr ""
   
  -#: ../plugin/login.php:31
  -msgid "Login:"
  -msgstr ""
  -
  -#: ../plugin/login.php:32
  -msgid "Password:"
  +#: ../plugin/login.php:31 ../wikilib.php:2425 ../wikilib.php:2560
  +msgid "ID"
   msgstr ""
   
   #: ../plugin/login.php:33
   msgid "Join"
   msgstr ""
   
  -#: ../plugin/login.php:51 ../plugin/minilogin.php:25
  +#: ../plugin/login.php:34 ../wikilib.php:2411
  +msgid "Login"
  +msgstr ""
  +
  +#: ../plugin/login.php:52 ../plugin/minilogin.php:25
   msgid "Logout"
   msgstr ""
   
  -#: ../plugin/login.php:52 ../plugin/minilogin.php:24 ../locale/dummy.php:3
  +#: ../plugin/login.php:53 ../plugin/minilogin.php:24 ../locale/dummy.php:3
   msgid "UserPreferences"
   msgstr ""
   
  @@ -2474,18 +2475,10 @@
   msgid "Infinite loop possible!"
   msgstr ""
   
  -#: ../wikilib.php:2411
  -msgid "Login"
  -msgstr ""
  -
   #: ../wikilib.php:2412
   msgid "OpenID"
   msgstr ""
   
  -#: ../wikilib.php:2425 ../wikilib.php:2560
  -msgid "ID"
  -msgstr ""
  -
   #: ../wikilib.php:2463 ../wikilib.php:2553
   msgid "Make profile"
   msgstr ""
  
  
  


1281765887;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv16894\n\nModified Files:\n	EditToolbar.php \nLog Message:\nIE6 fix\n\n
wkpark      2010/08/14 15:04:47

  Modified:    plugin   EditToolbar.php
  Log:
  IE6 fix
  
  Revision  Changes    Path
  1.15      +2 -2      moniwiki/plugin/EditToolbar.php
  
  Index: EditToolbar.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/EditToolbar.php,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- EditToolbar.php	9 Jul 2010 13:55:29 -0000	1.14
  +++ EditToolbar.php	14 Aug 2010 06:04:47 -0000	1.15
  @@ -7,7 +7,7 @@
   //
   // This feature is imported from the MediaWiki
   //
  -// $Id: EditToolbar.php,v 1.14 2010/07/09 13:55:29 wkpark Exp $
  +// $Id: EditToolbar.php,v 1.15 2010/08/14 06:04:47 wkpark Exp $
   
   function macro_EditToolbar($formatter,$value, $options=array()) {
       global $DBInfo;
  @@ -73,7 +73,7 @@
           $script.= $buttons[$btn];
   
       $script.=<<<EOS
  -document.writeln("</span></div><div style='clear:both'></div>");
  +document.writeln("</span></div><span style='clear:both'></span>");
   /*]]>*/
   </script>
   EOS;
  
  
  


1281767945;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv22871\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315591] hide sidemenu correctly.\n\n
wkpark      2010/08/14 15:39:05

  Modified:    .        wikilib.php
  Log:
  [#315591] hide sidemenu correctly.
  
  Revision  Changes    Path
  1.322     +14 -3     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.321
  retrieving revision 1.322
  diff -u -r1.321 -r1.322
  --- wikilib.php	13 Aug 2010 18:55:07 -0000	1.321
  +++ wikilib.php	14 Aug 2010 06:39:04 -0000	1.322
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.321 2010/08/13 18:55:07 wkpark Exp $
  +// $Id: wikilib.php,v 1.322 2010/08/14 06:39:04 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -832,10 +832,11 @@
       $form = macro_Edit($formatter,$value,$options);
     }
     $js = '';
  +  $css = '';
     if (empty($DBInfo->edit_with_sidebar))
       $sidebar_style="#wikiSideMenu { display: none; }\n";
     if ($has_form and !empty($DBInfo->use_jsbuttons)) {
  -    $js=<<<JS
  +    $css=<<<CSS
   <style type='text/css'>
   /*<![CDATA[*/
   #mycontent button.save-button { display: none; }
  @@ -844,6 +845,8 @@
   $sidebar_style
   /*]]>*/
   </style>
  +CSS;
  +    $js=<<<JS
   <script type='text/javascript'>
   /*<![CDATA[*/
   function submit_all_forms() {
  @@ -894,8 +897,16 @@
   /*]]>*/
   </script>\n
   JS;
  +  } else if (!empty($sidebar_style)) {
  +    $css=<<<CSS
  +<style type='text/css'>
  +/*<![CDATA[*/
  +$sidebar_style
  +/*]]>*/
  +</style>\n
  +CSS;
     }
  -  return $js.'<div id="all-forms">'.$form.'</div>';
  +  return $css.$js.'<div id="all-forms">'.$form.'</div>';
   }
   
   function do_edit($formatter,$options) {
  
  
  


1281772789;wkpark;Update of /cvsroot/moniwiki/moniwiki/local\nIn directory kill.kldp.net:/tmp/cvs-serv790/local\n\nModified Files:\n	moniwyg.js \nLog Message:\n[#315592] move button position from left to right. tuning css styles.\n\n
1281772789;wkpark;Update of /cvsroot/moniwiki/moniwiki/local/Wikiwyg/css\nIn directory kill.kldp.net:/tmp/cvs-serv790/local/Wikiwyg/css\n\nModified Files:\n	moniwyg.css \nLog Message:\n[#315592] move button position from left to right. tuning css styles.\n\n
1281772789;wkpark;Update of /cvsroot/moniwiki/moniwiki/local/Wikiwyg/lib/Wikiwyg\nIn directory kill.kldp.net:/tmp/cvs-serv790/local/Wikiwyg/lib/Wikiwyg\n\nModified Files:\n	Toolbar.js \nLog Message:\n[#315592] move button position from left to right. tuning css styles.\n\n
wkpark      2010/08/14 16:59:50

  Modified:    local    moniwyg.js
               local/Wikiwyg/css moniwyg.css
               local/Wikiwyg/lib/Wikiwyg Toolbar.js
  Log:
  [#315592] move button position from left to right. tuning css styles.
  
  Revision  Changes    Path
  1.65      +6 -3      moniwiki/local/moniwyg.js
  
  Index: moniwyg.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/moniwyg.js,v
  retrieving revision 1.64
  retrieving revision 1.65
  diff -u -r1.64 -r1.65
  --- moniwyg.js	16 Jan 2009 10:25:54 -0000	1.64
  +++ moniwyg.js	14 Aug 2010 07:59:49 -0000	1.65
  @@ -1,7 +1,7 @@
   //
   // Wikiwyg for MoniWiki by wkpark at kldp.org 2006/01/27
   //
  -// $Id: moniwyg.js,v 1.64 2009/01/16 10:25:54 wkpark Exp $
  +// $Id: moniwyg.js,v 1.65 2010/08/14 07:59:49 wkpark Exp $
   //
   //_url_prefix="/wiki";
   //
  @@ -2016,12 +2016,15 @@
       );
   
       var link = Wikiwyg.createElementWithAttrs(
  -        'input', {
  +        'button', {
               type: 'button',
               value: _(text)
           }
       );
  -    //link.appendChild(document.createTextNode(text));
  +
  +    var btn = document.createElement('span');
  +    btn.appendChild(document.createTextNode(_(text)));
  +    link.appendChild(btn);
       span.appendChild(link);
   
       var self = this;
  
  
  
  1.10      +11 -3     moniwiki/local/Wikiwyg/css/moniwyg.css
  
  Index: moniwyg.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/css/moniwyg.css,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- moniwyg.css	9 Dec 2008 08:26:07 -0000	1.9
  +++ moniwyg.css	14 Aug 2010 07:59:49 -0000	1.10
  @@ -35,6 +35,11 @@
       padding:0 2px;
   }
   
  +.wikiwyg_control_link button {
  +    float:right;
  +    margin-right:3px;
  +}
  +
   .wikiwyg_mode_selector {
       font-family:'Trebuchet MS',sans-serif;
       list-style-image: none;
  @@ -42,7 +47,7 @@
       list-style-position: outside;
       margin: 0;
       padding:0;
  -    display: inline;
  +    display: inline-block;
   }
   
   .wikiwyg_mode_selector li:hover {
  @@ -55,8 +60,10 @@
   }
   
   ul.wikiwyg_mode_selector {
  -    display: inline;
  -    float:left;
  +    margin-left:2px;
  +    display: inline-block;
  +    float:right;
  +    margin-bottom:-2px;
   }
   
   .wikiwyg_mode_selector li {
  @@ -148,3 +155,4 @@
       vertical-align: top;
   }
   
  +#wikiwyg_wikitext_textarea { outline:none; }
  
  
  
  1.12      +2 -1      moniwiki/local/Wikiwyg/lib/Wikiwyg/Toolbar.js
  
  Index: Toolbar.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/Wikiwyg/lib/Wikiwyg/Toolbar.js,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- Toolbar.js	3 Dec 2008 11:05:02 -0000	1.11
  +++ Toolbar.js	14 Aug 2010 07:59:49 -0000	1.12
  @@ -281,7 +281,8 @@
                   'style': 'clear:both'
               }
           );
  -        this.div.appendChild(clear);
  +        //this.div.appendChild(clear);
  +	// XXX float right !
       }
   }
   
  
  
  


1281789483;wkpark;Update of /cvsroot/moniwiki/moniwiki/local/js\nIn directory kill.kldp.net:/tmp/cvs-serv7624/local/js\n\nAdded Files:\n	sh3.js \nLog Message:\n[#315593] support SyntaxHighlighter 3.0.xx added\n\n
wkpark      2010/08/14 21:38:04

  Added:       local/js sh3.js
  Log:
  [#315593] support SyntaxHighlighter 3.0.xx added
  
  Revision  Changes    Path
  1.1                  moniwiki/local/js/sh3.js
  
  Index: sh3.js
  ===================================================================
  // http://code.google.com/p/syntaxhighlighter
  // syntaxhighlighter_3.0.xx wrapper for MoniWiki
  //
  // $Id: sh3.js,v 1.1 2010/08/14 12:38:03 wkpark Exp $
  //
  
  if ( typeof _ == 'undefined') {
      _ = function(msgid) {
          return msgid;
      };
  }
  
  function shOnload() {
      var tags = document.getElementsByTagName('pre');
      if (tags.length == 0) return;
      var shdir = 'scripts';
      var head = document.getElementsByTagName("head")[0];
      var list = [];
      var js = null;
      var syntax = {
          'c':'Cpp',
          'c#':'Cpp',
          'cpp':'Cpp',
          'c-sharp':'Cpp',
          'css':'Css',
          'java':'Java',
          'javascript':'JScript',
          'jscript':'JScript',
          'php':'Php',
          'python':'Python',
          'ruby':'Ruby',
          'xml':'Xml',
          'html':'Xml'
      };
  
      for(var i = 0; i < tags.length; i++) {
          var m = tags[i].className.match(/wiki\s+(c|cpp|c#|xml|c-sharp|css|java|javascript|php|python|ruby|xml|html)/);
          if (m && syntax[m[1]]) {
              if (!list[syntax[m[1]]]) {
                  js = document.createElement('script');
                  js.type = 'text/javascript';
                  js.src = _url_prefix + '/local/syntaxhighlighter_3.0.83/' + shdir + '/shBrush' + syntax[m[1]]+ '.js';
                  head.appendChild(js);
              }
              //tags[i].setAttribute('name','code');
              //tags[i].className = syntax[m[1]] + ':showcolumns';
              tags[i].className = 'brush: ' + syntax[m[1]].toLowerCase();
              list[syntax[m[1]]]= 1;
          }
      }
      if (js) {
          js.onreadystatechange = function() { // IE
              if (this.readyState == 'complete')
                  SyntaxHighlighter.highlight();
          }
          js.onload = function() {
              SyntaxHighlighter.highlight();
              return;
          }
  
          // safari fix.
          if (navigator.userAgent.toLowerCase().indexOf('applewebkit') != -1) {
              (function() {
                  var timer = setInterval(function() { 
                      if (/loaded|complete/.test(document.readyState)) {  
                          clearInterval(timer);  
                          SyntaxHighlighter.highlight();
                      }
                  }, 10);
              })();
          }
      }
      return;
  }
  
  //window.addEvent("domready", shOnload);
  (function () {
      var shdir = 'scripts';
      // var shdir = 'Uncompressed';
      var head = document.getElementsByTagName("head")[0];
      var js = document.createElement('script');
      js.type = 'text/javascript';
      js.src = _url_prefix + '/local/syntaxhighlighter_3.0.83/' + shdir + '/shCore.js';
      head.appendChild(js);
  
      // onload
      var oldOnload = window.onload;
      if (typeof window.onload != 'function') {
          window.onload = shOnload;
      } else {
          window.onload = function() {
              oldOnload();
              shOnload();
          }
      }
  })();
  
  // vim:et:sts=4:sw=4:
  
  
  


1281789996;wkpark;Update of /cvsroot/moniwiki/moniwiki/local/js\nIn directory kill.kldp.net:/tmp/cvs-serv9919/local/js\n\nModified Files:\n	sh.js \nLog Message:\n[#315593] sh 1.5.x fix for safari/chrome\n\n
wkpark      2010/08/14 21:46:36

  Modified:    local/js sh.js
  Log:
  [#315593] sh 1.5.x fix for safari/chrome
  
  Revision  Changes    Path
  1.7       +6 -5      moniwiki/local/js/sh.js
  
  Index: sh.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/sh.js,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- sh.js	23 Dec 2008 09:28:45 -0000	1.6
  +++ sh.js	14 Aug 2010 12:46:36 -0000	1.7
  @@ -1,7 +1,7 @@
   // http://code.google.com/p/syntaxhighlighter
   // syntaxhighlighter wrapper for MoniWiki
   //
  -// $Id: sh.js,v 1.6 2008/12/23 09:28:45 wkpark Exp $
  +// $Id: sh.js,v 1.7 2010/08/14 12:46:36 wkpark Exp $
   //
   
   if ( typeof _ == 'undefined') {
  @@ -57,10 +57,6 @@
               if (this.readyState == 'complete')
                   dp.sh.HighlightAll('code',true,true);
           }
  -        js.onload = function() {
  -            dp.sh.HighlightAll('code',true,true);
  -            return;
  -        }
   
           // safari fix.
           if (navigator.userAgent.toLowerCase().indexOf('applewebkit') != -1) {
  @@ -72,6 +68,11 @@
                       }
                   }, 10);
               })();
  +        } else {
  +            js.onload = function() {
  +                dp.sh.HighlightAll('code',true,true);
  +                return;
  +            }
           }
       }
       // not work with the flash 10 :(
  
  
  


1281798730;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv27012\n\nModified Files:\n	wikilib.php wiki.php \nLog Message:\n[#315557]\n * extract get_pagelist() from gallery.php to wikilib.php\n * paginate TitleIndex\n * fixed link_tag bug introduced by [#315547] r1.536 wiki.php\n\n
1281798730;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv27012/plugin\n\nModified Files:\n	Gallery.php \nLog Message:\n[#315557]\n * extract get_pagelist() from gallery.php to wikilib.php\n * paginate TitleIndex\n * fixed link_tag bug introduced by [#315547] r1.536 wiki.php\n\n
wkpark      2010/08/15 00:12:11

  Modified:    .        wikilib.php wiki.php
               plugin   Gallery.php
  Log:
  [#315557]
   * extract get_pagelist() from gallery.php to wikilib.php
   * paginate TitleIndex
   * fixed link_tag bug introduced by [#315547] r1.536 wiki.php
  
  Revision  Changes    Path
  1.323     +85 -4     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.322
  retrieving revision 1.323
  diff -u -r1.322 -r1.323
  --- wikilib.php	14 Aug 2010 06:39:04 -0000	1.322
  +++ wikilib.php	14 Aug 2010 15:12:09 -0000	1.323
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.322 2010/08/14 06:39:04 wkpark Exp $
  +// $Id: wikilib.php,v 1.323 2010/08/14 15:12:09 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -45,6 +45,64 @@
     return $_SERVER['SCRIPT_NAME'];
   }
   
  +/**
  + * Extracted from Gallery Plugin
  + *
  + * make pagelist to paginate.
  + *
  + * @author wkpark@kldp.org
  + * @since  2003/08/10
  + * @param  integer  $pages - the number of pages
  + * @param  string   $action - link to page action
  + * @param  integer  $curpage - current page
  + * @param  integer  $listcount - the number of pages to show
  + */
  +
  +function get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
  +
  +  if ($curpage >=0)
  +    if ($curpage > $pages)
  +      $curpage=$pages;
  +  if ($curpage <= 0)
  +    $curpage=1;
  +
  +  $startpage=intval(($curpage-1) / $listcount)*$listcount +1;
  +
  +  $pnut="";
  +  if ($startpage > 1) {
  +    $prevref=$startpage-1;
  +    if (!$first) {
  +      $prev_l=$formatter->link_tag('',$action.$prevref,$prev);
  +      $prev_1=$formatter->link_tag('',$action."1","1");
  +      $pnut="$prev_l".$bra.$prev_1.$cat.$ellip.$bar;
  +    }
  +  } else {
  +    $pnut=$prev.$bra."";
  +  }
  +
  +  for ($i=$startpage;$i < ($startpage + $listcount) && $i <=$pages; $i++) {
  +    if ($i != $startpage)
  +      $pnut.=$sep;
  +    if ($i != $curpage) {
  +      $link=$formatter->link_tag('',$action.$i,$i);
  +      $pnut.=$link;
  +    } else
  +      $pnut.="<b>$i</b>";
  +  }
  +
  +  if ($i <= $pages) {
  +    if (!$last) {
  +      $next_l=$formatter->link_tag('',$action.$pages,$pages);
  +      $next_i=$formatter->link_tag('',$action.$i,$next);
  +
  +      $pnut.=$cat.$ellip.$bra.$next_l.$cat.$next_i;
  +    }
  +  } else {
  +    $pnut.="".$cat.$next;
  +  }
  +  return $pnut;
  +}
  +
   function _rawurlencode($url) {
     $name=rawurlencode($url);
     $urlname=preg_replace('/%(2F|7E|3A|2B)/ei',"chr(hexdec('\\1'))",$name);
  @@ -1633,7 +1691,7 @@
     }
     $formatter->send_header("",$options);
     $formatter->send_title("","",$options);
  -  print macro_TitleIndex($formatter,$options['sec']);
  +  print macro_TitleIndex($formatter,$options['sec'], $options);
     $formatter->send_footer($args,$options);
   }
   
  @@ -2783,9 +2841,15 @@
     }
   }
   
  -function macro_TitleIndex($formatter,$value) {
  +function macro_TitleIndex($formatter, $value, $options = array()) {
     global $DBInfo;
   
  +  $pc = !empty($DBInfo->titleindex_pagecount) ? intval($DBInfo->titleindex_pagecount) : 100;
  +  if ($pc < 1) $pc = 100;
  +
  +  $pg = empty($options['p']) ? 1 : intval($options['p']);
  +  if ($pg < 1) $pg = 1;
  +
     $group=$formatter->group;
   
     $key=-1;
  @@ -2868,12 +2932,26 @@
         $all_pages = $titleindex[$sel];
     }
   
  +  $pnut = null;
  +  if (count($all_pages) > $pc) {
  +    $pages_number = intval(count($all_pages) / $pc);
  +    if (count($all_pages) % $pc)
  +      $pages_number++;
  +
  +    $pages = array_splice($all_pages, ($pg - 1) * $pc, $pc);
  +
  +    $pnut = get_pagelist($formatter, $pages_number,
  +      '?action=titleindex&amp;sec='.$sel.
  +      '&amp;p=', !empty($pg) ? $pg : 1);
  +  } else {
  +    $pages = &$all_pages;
  +  }
     //print count($all_pages);
     //exit;
     $out = '';
   #  if ($DBInfo->use_titlecache)
   #    $cache=new Cache_text('title');
  -  foreach ($all_pages as $page=>$rpage) {
  +  foreach ($pages as $page=>$rpage) {
       $p=ltrim($page);
       $pkey=get_key("$p");
       if ($key != $pkey) {
  @@ -2899,6 +2977,9 @@
            $formatter->icon['attach']);
       $out.="</li>\n";
     }
  +  if (!empty($pnut)) {
  +    $out.='<li style="list-style:none">'. $pnut .'</li>'."\n";
  +  }
     $out.= "</ul>\n";
   
     $index='';
  
  
  
  1.562     +3 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.561
  retrieving revision 1.562
  diff -u -r1.561 -r1.562
  --- wiki.php	14 Aug 2010 05:55:21 -0000	1.561
  +++ wiki.php	14 Aug 2010 15:12:09 -0000	1.562
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.561 2010/08/14 05:55:21 wkpark Exp $
  +// $Id: wiki.php,v 1.562 2010/08/14 15:12:09 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.561 $',1,-1);
  +$_revision = substr('$Revision: 1.562 $',1,-1);
   $_release = '1.1.5-RC3';
   
   #ob_start("ob_gzhandler");
  @@ -3159,6 +3159,7 @@
   
     function link_tag($pageurl,$query_string="", $text="",$attr="") {
       # Return a link with given query_string.
  +    $text = strval($text);
       if (!isset($text[0]))
         $text= $pageurl; # XXX
       if (!isset($pageurl[0]))
  
  
  
  1.39      +1 -46     moniwiki/plugin/Gallery.php
  
  Index: Gallery.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Gallery.php,v
  retrieving revision 1.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- Gallery.php	19 Apr 2010 11:26:46 -0000	1.38
  +++ Gallery.php	14 Aug 2010 15:12:10 -0000	1.39
  @@ -5,52 +5,7 @@
   //
   // Usage: [[Gallery]]
   //
  -// $Id: Gallery.php,v 1.38 2010/04/19 11:26:46 wkpark Exp $
  -
  -function get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
  -
  -  if ($curpage >=0)
  -    if ($curpage > $pages)
  -      $curpage=$pages;
  -  if ($curpage <= 0)
  -    $curpage=1;
  -
  -  $startpage=intval(($curpage-1) / $listcount)*$listcount +1;
  -
  -  $pnut="";
  -  if ($startpage > 1) {
  -    $prevref=$startpage-1;
  -    if (!$first) {
  -      $prev_l=$formatter->link_tag('',$action.$prevref,$prev);
  -      $prev_1=$formatter->link_tag('',$action."1","1");
  -      $pnut="$prev_l".$bra.$prev_1.$cat.$ellip.$bar;
  -    }
  -  } else {
  -    $pnut=$prev.$bra."";
  -  }
  -
  -  for ($i=$startpage;$i < ($startpage + $listcount) && $i <=$pages; $i++) {
  -    if ($i != $startpage)
  -      $pnut.=$sep;
  -    if ($i != $curpage) {
  -      $link=$formatter->link_tag('',$action.$i,$i);
  -      $pnut.=$link;
  -    } else
  -      $pnut.="<b>$i</b>";
  -  }
  -
  -  if ($i <= $pages) {
  -    if (!$last) {
  -      $next_l=$formatter->link_tag('',$action.$pages,$pages);
  -      $next_i=$formatter->link_tag('',$action.$i,$next);
  -
  -      $pnut.=$cat.$ellip.$bra.$next_l.$cat.$next_i;
  -    }
  -  } else {
  -    $pnut.="".$cat.$next;
  -  }
  -  return $pnut;
  -}
  +// $Id: Gallery.php,v 1.39 2010/08/14 15:12:10 wkpark Exp $
   
   function macro_Gallery($formatter,$value,&$options) {
     global $DBInfo;
  
  
  


1281799673;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv31846\n\nModified Files:\n	wiki.php \nLog Message:\n[#315579] set_time_limit() to exec getPagesList()/getCounter()\n\n
wkpark      2010/08/15 00:27:54

  Modified:    .        wiki.php
  Log:
  [#315579] set_time_limit() to exec getPagesList()/getCounter()
  
  Revision  Changes    Path
  1.563     +4 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.562
  retrieving revision 1.563
  diff -u -r1.562 -r1.563
  --- wiki.php	14 Aug 2010 15:12:09 -0000	1.562
  +++ wiki.php	14 Aug 2010 15:27:53 -0000	1.563
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.562 2010/08/14 15:12:09 wkpark Exp $
  +// $Id: wiki.php,v 1.563 2010/08/14 15:27:53 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.562 $',1,-1);
  +$_revision = substr('$Revision: 1.563 $',1,-1);
   $_release = '1.1.5-RC3';
   
   #ob_start("ob_gzhandler");
  @@ -940,6 +940,7 @@
       if (!is_resource($handle))
         return array();
   
  +    set_time_limit(isset($this->time_limit) ? intval($this->time_limit) : 30);
       if (empty($options)) {
         while (($file = readdir($handle)) !== false) {
           if (is_dir($this->text_dir."/".$file)) continue;
  @@ -1003,6 +1004,7 @@
       if (!is_resource($handle))
         return 0;
   
  +    set_time_limit(isset($this->time_limit) ? intval($this->time_limit) : 30);
       $count = 0;
       while (($file = readdir($handle)) !== false) {
         if (is_dir($this->text_dir."/".$file)) continue;
  
  
  


1281942414;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv27098\n\nModified Files:\n	wiki.php \nLog Message:\n[#315579] do not always use is_dir() to reduce system call\n\n
wkpark      2010/08/16 16:06:55

  Modified:    .        wiki.php
  Log:
  [#315579] do not always use is_dir() to reduce system call
  
  Revision  Changes    Path
  1.564     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.563
  retrieving revision 1.564
  diff -u -r1.563 -r1.564
  --- wiki.php	14 Aug 2010 15:27:53 -0000	1.563
  +++ wiki.php	16 Aug 2010 07:06:53 -0000	1.564
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.563 2010/08/14 15:27:53 wkpark Exp $
  +// $Id: wiki.php,v 1.564 2010/08/16 07:06:53 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.563 $',1,-1);
  +$_revision = substr('$Revision: 1.564 $',1,-1);
   $_release = '1.1.5-RC3';
   
   #ob_start("ob_gzhandler");
  @@ -960,7 +960,7 @@
       } else if (!empty($options['count'])) {
          $count=$options['count'];
          while (($file = readdir($handle)) !== false && $count > 0) {
  -          if (is_dir($this->text_dir."/".$file)) continue;
  +          if ((($p = strpos($file, '.')) !== false or $file == 'RCS' or $file == 'CVS') and is_dir($file)) continue;
             $pages[] = $this->keyToPagename($file);
             $count--;
          }
  @@ -1007,7 +1007,7 @@
       set_time_limit(isset($this->time_limit) ? intval($this->time_limit) : 30);
       $count = 0;
       while (($file = readdir($handle)) !== false) {
  -      if (is_dir($this->text_dir."/".$file)) continue;
  +      if ((($p = strpos($file, '.')) !== false or $file == 'RCS' or $file == 'CVS') and is_dir($file)) continue;
         $count++;
       }
       closedir($handle);
  
  
  


1281951022;wkpark;Update of /cvsroot/moniwiki/moniwiki/local\nIn directory kill.kldp.net:/tmp/cvs-serv14835/local\n\nAdded Files:\n	LaTeXMathML.js \nLog Message:\n[#315594] support LaTeXMathML.js\n\n
1281951022;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin/processor\nIn directory kill.kldp.net:/tmp/cvs-serv14835/plugin/processor\n\nAdded Files:\n	latexmathml.php \nLog Message:\n[#315594] support LaTeXMathML.js\n\n
wkpark      2010/08/16 18:30:23

  Added:       local    LaTeXMathML.js
               plugin/processor latexmathml.php
  Log:
  [#315594] support LaTeXMathML.js
  
  Revision  Changes    Path
  1.1                  moniwiki/local/LaTeXMathML.js
  
  Index: LaTeXMathML.js
  ===================================================================
  /*
  LaTeXMathML.js
  ==============
  
  This file, in this form, is due to Douglas Woodall, June 2006.
  It contains JavaScript functions to convert (most simple) LaTeX
  math notation to Presentation MathML.  It was obtained by
  downloading the file ASCIIMathML.js from
  	http://www1.chapman.edu/~jipsen/mathml/asciimathdownload/
  and modifying it so that it carries out ONLY those conversions
  that would be carried out in LaTeX.  A description of the original
  file, with examples, can be found at
  	www1.chapman.edu/~jipsen/mathml/asciimath.html
  	ASCIIMathML: Math on the web for everyone
  
  Here is the header notice from the original file:
  
  ASCIIMathML.js
  ==============
  This file contains JavaScript functions to convert ASCII math notation
  to Presentation MathML. The conversion is done while the (X)HTML page
  loads, and should work with Firefox/Mozilla/Netscape 7+ and Internet
  Explorer 6+MathPlayer (http://www.dessci.com/en/products/mathplayer/).
  Just add the next line to your (X)HTML page with this file in the same folder:
  <script type="text/javascript" src="ASCIIMathML.js"></script>
  This is a convenient and inexpensive solution for authoring MathML.
  
  Version 1.4.7 Dec 15, 2005, (c) Peter Jipsen http://www.chapman.edu/~jipsen
  Latest version at http://www.chapman.edu/~jipsen/mathml/ASCIIMathML.js
  For changes see http://www.chapman.edu/~jipsen/mathml/asciimathchanges.txt
  If you use it on a webpage, please send the URL to jipsen@chapman.edu
  
  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2 of the License, or (at
  your option) any later version.
  
  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  General Public License (at http://www.gnu.org/copyleft/gpl.html)
  for more details.
  
  LaTeXMathML.js (ctd)
  ==============
  
  The instructions for use are the same as for the original
  ASCIIMathML.js, except that of course the line you add to your
  file should be
  <script type="text/javascript" src="LaTeXMathML.js"></script>
  Or use absolute path names if the file is not in the same folder
  as your (X)HTML page.
  */
  
  var checkForMathML = true;   // check if browser can display MathML
  var notifyIfNoMathML = true; // display note if no MathML capability
  var alertIfNoMathML = false;  // show alert box if no MathML capability
  var autoRunOnLoad = false;
  // was "red":
  var mathcolor = "";	     // change it to "" (to inherit) or any other color
  // was "serif":
  var mathfontfamily = "";      // change to "" to inherit (works in IE)
                                // or another family (e.g. "arial")
  var showasciiformulaonhover = true; // helps students learn ASCIIMath
  /*
  // Commented out by DRW -- not now used -- see DELIMITERS (twice) near the end
  var displaystyle = false;     // puts limits above and below large operators
  var decimalsign = ".";        // change to "," if you like, beware of `(1,2)`!
  var LMdelimiter1 = "`", LMescape1 = "\\\\`"; // can use other characters
  var LMdelimiter2 = "$", LMescape2 = "\\\\\\$", LMdelimiter2regexp = "\\$";
  var doubleblankmathdelimiter = false; // if true,  x+1  is equal to `x+1`
                                        // for IE this works only in <!--   -->
  //var separatetokens;// has been removed (email me if this is a problem)
  */
  var isIE = document.createElementNS==null;
  
  if (document.getElementById==null)
    alert("This webpage requires a recent browser such as\
  \nMozilla/Netscape 7+ or Internet Explorer 6+MathPlayer");
  
  // all further global variables start with "LM"
  
  function LMcreateElementXHTML(t) {
    if (isIE) return document.createElement(t);
    else return document.createElementNS("http://www.w3.org/1999/xhtml",t);
  }
  
  function LMnoMathMLNote() {
    var nd = LMcreateElementXHTML("h3");
    nd.setAttribute("align","center");
    nd.appendChild(LMcreateElementXHTML("p"));
    nd.appendChild(document.createTextNode("To view the "));
    var an = LMcreateElementXHTML("a");
    an.appendChild(document.createTextNode("LaTeXMathML"));
    an.setAttribute("href","http://www.maths.nott.ac.uk/personal/drw/lm.html");
    nd.appendChild(an);
    nd.appendChild(document.createTextNode(" notation use Internet Explorer 6+")); 
    an = LMcreateElementXHTML("a");
    an.appendChild(document.createTextNode("MathPlayer"));
    an.setAttribute("href","http://www.dessci.com/en/products/mathplayer/download.htm");
    nd.appendChild(an);
    nd.appendChild(document.createTextNode(" or Netscape/Mozilla/Firefox"));
    nd.appendChild(LMcreateElementXHTML("p"));
    return nd;
  }
  
  function LMisMathMLavailable() {
    if (navigator.appName.slice(0,8)=="Netscape")
      if (navigator.appVersion.slice(0,1)>="5") return null;
      else return LMnoMathMLNote();
    else if (navigator.appName.slice(0,9)=="Microsoft")
      try {
          var ActiveX = new ActiveXObject("MathPlayer.Factory.1");
          return null;
      } catch (e) {
          return LMnoMathMLNote();
      }
    else return LMnoMathMLNote();
  }
  
  // character lists for Mozilla/Netscape fonts
  var LMcal = [0xEF35,0x212C,0xEF36,0xEF37,0x2130,0x2131,0xEF38,0x210B,0x2110,0xEF39,0xEF3A,0x2112,0x2133,0xEF3B,0xEF3C,0xEF3D,0xEF3E,0x211B,0xEF3F,0xEF40,0xEF41,0xEF42,0xEF43,0xEF44,0xEF45,0xEF46];
  var LMfrk = [0xEF5D,0xEF5E,0x212D,0xEF5F,0xEF60,0xEF61,0xEF62,0x210C,0x2111,0xEF63,0xEF64,0xEF65,0xEF66,0xEF67,0xEF68,0xEF69,0xEF6A,0x211C,0xEF6B,0xEF6C,0xEF6D,0xEF6E,0xEF6F,0xEF70,0xEF71,0x2128];
  var LMbbb = [0xEF8C,0xEF8D,0x2102,0xEF8E,0xEF8F,0xEF90,0xEF91,0x210D,0xEF92,0xEF93,0xEF94,0xEF95,0xEF96,0x2115,0xEF97,0x2119,0x211A,0x211D,0xEF98,0xEF99,0xEF9A,0xEF9B,0xEF9C,0xEF9D,0xEF9E,0x2124];
  
  var CONST = 0, UNARY = 1, BINARY = 2, INFIX = 3, LEFTBRACKET = 4,
      RIGHTBRACKET = 5, SPACE = 6, UNDEROVER = 7, DEFINITION = 8,
      TEXT = 9, BIG = 10, LONG = 11, STRETCHY = 12, MATRIX = 13; // token types
  
  var LMsqrt = {input:"\\sqrt",	tag:"msqrt", output:"sqrt",	ttype:UNARY},
    LMroot = {input:"\\root",	tag:"mroot", output:"root",	ttype:BINARY},
    LMfrac = {input:"\\frac",	tag:"mfrac", output:"/",	ttype:BINARY},
    LMover = {input:"\\stackrel", tag:"mover", output:"stackrel", ttype:BINARY},
    LMatop = {input:"\\atop",	tag:"mfrac", output:"",		ttype:INFIX},
    LMchoose = {input:"\\choose", tag:"mfrac", output:"",		ttype:INFIX},
    LMsub  = {input:"_",		tag:"msub",  output:"_",	ttype:INFIX},
    LMsup  = {input:"^",		tag:"msup",  output:"^",	ttype:INFIX},
    LMtext = {input:"\\mathrm",	tag:"mtext", output:"text",	ttype:TEXT},
    LMmbox = {input:"\\mbox",	tag:"mtext", output:"mbox",	ttype:TEXT};
  
  // Commented out by DRW to prevent 1/2 turning into a 2-line fraction
  // LMdiv   = {input:"/",	 tag:"mfrac", output:"/",    ttype:INFIX},
  // Commented out by DRW so that " prints literally in equations
  // LMquote = {input:"\"",	 tag:"mtext", output:"mbox", ttype:TEXT};
  
  var LMsymbols = [
  //Greek letters
  {input:"\\alpha",	tag:"mi", output:"\u03B1", ttype:CONST},
  {input:"\\beta",	tag:"mi", output:"\u03B2", ttype:CONST},
  {input:"\\gamma",	tag:"mi", output:"\u03B3", ttype:CONST},
  {input:"\\delta",	tag:"mi", output:"\u03B4", ttype:CONST},
  {input:"\\epsilon",	tag:"mi", output:"\u03B5", ttype:CONST},
  {input:"\\varepsilon",  tag:"mi", output:"\u025B", ttype:CONST},
  {input:"\\zeta",	tag:"mi", output:"\u03B6", ttype:CONST},
  {input:"\\eta",		tag:"mi", output:"\u03B7", ttype:CONST},
  {input:"\\theta",	tag:"mi", output:"\u03B8", ttype:CONST},
  {input:"\\vartheta",	tag:"mi", output:"\u03D1", ttype:CONST},
  {input:"\\iota",	tag:"mi", output:"\u03B9", ttype:CONST},
  {input:"\\kappa",	tag:"mi", output:"\u03BA", ttype:CONST},
  {input:"\\lambda",	tag:"mi", output:"\u03BB", ttype:CONST},
  {input:"\\mu",		tag:"mi", output:"\u03BC", ttype:CONST},
  {input:"\\nu",		tag:"mi", output:"\u03BD", ttype:CONST},
  {input:"\\xi",		tag:"mi", output:"\u03BE", ttype:CONST},
  {input:"\\pi",		tag:"mi", output:"\u03C0", ttype:CONST},
  {input:"\\varpi",	tag:"mi", output:"\u03D6", ttype:CONST},
  {input:"\\rho",		tag:"mi", output:"\u03C1", ttype:CONST},
  {input:"\\varrho",	tag:"mi", output:"\u03F1", ttype:CONST},
  {input:"\\varsigma",	tag:"mi", output:"\u03C2", ttype:CONST},
  {input:"\\sigma",	tag:"mi", output:"\u03C3", ttype:CONST},
  {input:"\\tau",		tag:"mi", output:"\u03C4", ttype:CONST},
  {input:"\\upsilon",	tag:"mi", output:"\u03C5", ttype:CONST},
  {input:"\\phi",		tag:"mi", output:"\u03C6", ttype:CONST},
  {input:"\\varphi",	tag:"mi", output:"\u03D5", ttype:CONST},
  {input:"\\chi",		tag:"mi", output:"\u03C7", ttype:CONST},
  {input:"\\psi",		tag:"mi", output:"\u03C8", ttype:CONST},
  {input:"\\omega",	tag:"mi", output:"\u03C9", ttype:CONST},
  {input:"\\Gamma",	tag:"mo", output:"\u0393", ttype:CONST},
  {input:"\\Delta",	tag:"mo", output:"\u0394", ttype:CONST},
  {input:"\\Theta",	tag:"mo", output:"\u0398", ttype:CONST},
  {input:"\\Lambda",	tag:"mo", output:"\u039B", ttype:CONST},
  {input:"\\Xi",		tag:"mo", output:"\u039E", ttype:CONST},
  {input:"\\Pi",		tag:"mo", output:"\u03A0", ttype:CONST},
  {input:"\\Sigma",	tag:"mo", output:"\u03A3", ttype:CONST},
  {input:"\\Upsilon",	tag:"mo", output:"\u03A5", ttype:CONST},
  {input:"\\Phi",		tag:"mo", output:"\u03A6", ttype:CONST},
  {input:"\\Psi",		tag:"mo", output:"\u03A8", ttype:CONST},
  {input:"\\Omega",	tag:"mo", output:"\u03A9", ttype:CONST},
  
  //fractions
  {input:"\\frac12",	tag:"mo", output:"\u00BD", ttype:CONST},
  {input:"\\frac14",	tag:"mo", output:"\u00BC", ttype:CONST},
  {input:"\\frac34",	tag:"mo", output:"\u00BE", ttype:CONST},
  {input:"\\frac13",	tag:"mo", output:"\u2153", ttype:CONST},
  {input:"\\frac23",	tag:"mo", output:"\u2154", ttype:CONST},
  {input:"\\frac15",	tag:"mo", output:"\u2155", ttype:CONST},
  {input:"\\frac25",	tag:"mo", output:"\u2156", ttype:CONST},
  {input:"\\frac35",	tag:"mo", output:"\u2157", ttype:CONST},
  {input:"\\frac45",	tag:"mo", output:"\u2158", ttype:CONST},
  {input:"\\frac16",	tag:"mo", output:"\u2159", ttype:CONST},
  {input:"\\frac56",	tag:"mo", output:"\u215A", ttype:CONST},
  {input:"\\frac18",	tag:"mo", output:"\u215B", ttype:CONST},
  {input:"\\frac38",	tag:"mo", output:"\u215C", ttype:CONST},
  {input:"\\frac58",	tag:"mo", output:"\u215D", ttype:CONST},
  {input:"\\frac78",	tag:"mo", output:"\u215E", ttype:CONST},
  
  //binary operation symbols
  {input:"\\pm",		tag:"mo", output:"\u00B1", ttype:CONST},
  {input:"\\mp",		tag:"mo", output:"\u2213", ttype:CONST},
  {input:"\\triangleleft",tag:"mo", output:"\u22B2", ttype:CONST},
  {input:"\\triangleright",tag:"mo",output:"\u22B3", ttype:CONST},
  {input:"\\cdot",	tag:"mo", output:"\u22C5", ttype:CONST},
  {input:"\\star",	tag:"mo", output:"\u22C6", ttype:CONST},
  {input:"\\ast",		tag:"mo", output:"\u002A", ttype:CONST},
  {input:"\\times",	tag:"mo", output:"\u00D7", ttype:CONST},
  {input:"\\div",		tag:"mo", output:"\u00F7", ttype:CONST},
  {input:"\\circ",	tag:"mo", output:"\u2218", ttype:CONST},
  //{input:"\\bullet",	  tag:"mo", output:"\u2219", ttype:CONST},
  {input:"\\bullet",	tag:"mo", output:"\u2022", ttype:CONST},
  {input:"\\oplus",	tag:"mo", output:"\u2295", ttype:CONST},
  {input:"\\ominus",	tag:"mo", output:"\u2296", ttype:CONST},
  {input:"\\otimes",	tag:"mo", output:"\u2297", ttype:CONST},
  {input:"\\bigcirc",	tag:"mo", output:"\u25CB", ttype:CONST},
  {input:"\\oslash",	tag:"mo", output:"\u2298", ttype:CONST},
  {input:"\\odot",	tag:"mo", output:"\u2299", ttype:CONST},
  {input:"\\land",	tag:"mo", output:"\u2227", ttype:CONST},
  {input:"\\wedge",	tag:"mo", output:"\u2227", ttype:CONST},
  {input:"\\lor",		tag:"mo", output:"\u2228", ttype:CONST},
  {input:"\\vee",		tag:"mo", output:"\u2228", ttype:CONST},
  {input:"\\cap",		tag:"mo", output:"\u2229", ttype:CONST},
  {input:"\\cup",		tag:"mo", output:"\u222A", ttype:CONST},
  {input:"\\sqcap",	tag:"mo", output:"\u2293", ttype:CONST},
  {input:"\\sqcup",	tag:"mo", output:"\u2294", ttype:CONST},
  {input:"\\uplus",	tag:"mo", output:"\u228E", ttype:CONST},
  {input:"\\amalg",	tag:"mo", output:"\u2210", ttype:CONST},
  {input:"\\bigtriangleup",tag:"mo",output:"\u25B3", ttype:CONST},
  {input:"\\bigtriangledown",tag:"mo",output:"\u25BD", ttype:CONST},
  {input:"\\dag",		tag:"mo", output:"\u2020", ttype:CONST},
  {input:"\\dagger",	tag:"mo", output:"\u2020", ttype:CONST},
  {input:"\\ddag",	tag:"mo", output:"\u2021", ttype:CONST},
  {input:"\\ddagger",	tag:"mo", output:"\u2021", ttype:CONST},
  {input:"\\lhd",		tag:"mo", output:"\u22B2", ttype:CONST},
  {input:"\\rhd",		tag:"mo", output:"\u22B3", ttype:CONST},
  {input:"\\unlhd",	tag:"mo", output:"\u22B4", ttype:CONST},
  {input:"\\unrhd",	tag:"mo", output:"\u22B5", ttype:CONST},
  
  
  //BIG Operators
  {input:"\\sum",		tag:"mo", output:"\u2211", ttype:UNDEROVER},
  {input:"\\prod",	tag:"mo", output:"\u220F", ttype:UNDEROVER},
  {input:"\\bigcap",	tag:"mo", output:"\u22C2", ttype:UNDEROVER},
  {input:"\\bigcup",	tag:"mo", output:"\u22C3", ttype:UNDEROVER},
  {input:"\\bigwedge",	tag:"mo", output:"\u22C0", ttype:UNDEROVER},
  {input:"\\bigvee",	tag:"mo", output:"\u22C1", ttype:UNDEROVER},
  {input:"\\bigsqcap",	tag:"mo", output:"\u2A05", ttype:UNDEROVER},
  {input:"\\bigsqcup",	tag:"mo", output:"\u2A06", ttype:UNDEROVER},
  {input:"\\coprod",	tag:"mo", output:"\u2210", ttype:UNDEROVER},
  {input:"\\bigoplus",	tag:"mo", output:"\u2A01", ttype:UNDEROVER},
  {input:"\\bigotimes",	tag:"mo", output:"\u2A02", ttype:UNDEROVER},
  {input:"\\bigodot",	tag:"mo", output:"\u2A00", ttype:UNDEROVER},
  {input:"\\biguplus",	tag:"mo", output:"\u2A04", ttype:UNDEROVER},
  {input:"\\int",		tag:"mo", output:"\u222B", ttype:CONST},
  {input:"\\oint",	tag:"mo", output:"\u222E", ttype:CONST},
  
  //binary relation symbols
  {input:":=",		tag:"mo", output:":=",	   ttype:CONST},
  {input:"\\lt",		tag:"mo", output:"<",	   ttype:CONST},
  {input:"\\gt",		tag:"mo", output:">",	   ttype:CONST},
  {input:"\\ne",		tag:"mo", output:"\u2260", ttype:CONST},
  {input:"\\neq",		tag:"mo", output:"\u2260", ttype:CONST},
  {input:"\\le",		tag:"mo", output:"\u2264", ttype:CONST},
  {input:"\\leq",		tag:"mo", output:"\u2264", ttype:CONST},
  {input:"\\leqslant",	tag:"mo", output:"\u2264", ttype:CONST},
  {input:"\\ge",		tag:"mo", output:"\u2265", ttype:CONST},
  {input:"\\geq",		tag:"mo", output:"\u2265", ttype:CONST},
  {input:"\\geqslant",	tag:"mo", output:"\u2265", ttype:CONST},
  {input:"\\equiv",	tag:"mo", output:"\u2261", ttype:CONST},
  {input:"\\ll",		tag:"mo", output:"\u226A", ttype:CONST},
  {input:"\\gg",		tag:"mo", output:"\u226B", ttype:CONST},
  {input:"\\doteq",	tag:"mo", output:"\u2250", ttype:CONST},
  {input:"\\prec",	tag:"mo", output:"\u227A", ttype:CONST},
  {input:"\\succ",	tag:"mo", output:"\u227B", ttype:CONST},
  {input:"\\preceq",	tag:"mo", output:"\u227C", ttype:CONST},
  {input:"\\succeq",	tag:"mo", output:"\u227D", ttype:CONST},
  {input:"\\subset",	tag:"mo", output:"\u2282", ttype:CONST},
  {input:"\\supset",	tag:"mo", output:"\u2283", ttype:CONST},
  {input:"\\subseteq",	tag:"mo", output:"\u2286", ttype:CONST},
  {input:"\\supseteq",	tag:"mo", output:"\u2287", ttype:CONST},
  {input:"\\sqsubset",	tag:"mo", output:"\u228F", ttype:CONST},
  {input:"\\sqsupset",	tag:"mo", output:"\u2290", ttype:CONST},
  {input:"\\sqsubseteq",  tag:"mo", output:"\u2291", ttype:CONST},
  {input:"\\sqsupseteq",  tag:"mo", output:"\u2292", ttype:CONST},
  {input:"\\sim",		tag:"mo", output:"\u223C", ttype:CONST},
  {input:"\\simeq",	tag:"mo", output:"\u2243", ttype:CONST},
  {input:"\\approx",	tag:"mo", output:"\u2248", ttype:CONST},
  {input:"\\cong",	tag:"mo", output:"\u2245", ttype:CONST},
  {input:"\\Join",	tag:"mo", output:"\u22C8", ttype:CONST},
  {input:"\\bowtie",	tag:"mo", output:"\u22C8", ttype:CONST},
  {input:"\\in",		tag:"mo", output:"\u2208", ttype:CONST},
  {input:"\\ni",		tag:"mo", output:"\u220B", ttype:CONST},
  {input:"\\owns",	tag:"mo", output:"\u220B", ttype:CONST},
  {input:"\\propto",	tag:"mo", output:"\u221D", ttype:CONST},
  {input:"\\vdash",	tag:"mo", output:"\u22A2", ttype:CONST},
  {input:"\\dashv",	tag:"mo", output:"\u22A3", ttype:CONST},
  {input:"\\models",	tag:"mo", output:"\u22A8", ttype:CONST},
  {input:"\\perp",	tag:"mo", output:"\u22A5", ttype:CONST},
  {input:"\\smile",	tag:"mo", output:"\u2323", ttype:CONST},
  {input:"\\frown",	tag:"mo", output:"\u2322", ttype:CONST},
  {input:"\\asymp",	tag:"mo", output:"\u224D", ttype:CONST},
  {input:"\\notin",	tag:"mo", output:"\u2209", ttype:CONST},
  
  //matrices
  {input:"\\begin{eqnarray}",	output:"X",	ttype:MATRIX, invisible:true},
  {input:"\\begin{array}",	output:"X",	ttype:MATRIX, invisible:true},
  {input:"\\\\",			output:"}&{",	ttype:DEFINITION},
  {input:"\\end{eqnarray}",	output:"}}",	ttype:DEFINITION},
  {input:"\\end{array}",		output:"}}",	ttype:DEFINITION},
  
  //grouping and literal brackets -- ieval is for IE
  {input:"\\big",	   tag:"mo", output:"X", atval:"1.2", ieval:"2.2", ttype:BIG},
  {input:"\\Big",	   tag:"mo", output:"X", atval:"1.6", ieval:"2.6", ttype:BIG},
  {input:"\\bigg",   tag:"mo", output:"X", atval:"2.2", ieval:"3.2", ttype:BIG},
  {input:"\\Bigg",   tag:"mo", output:"X", atval:"2.9", ieval:"3.9", ttype:BIG},
  {input:"\\left",   tag:"mo", output:"X", ttype:LEFTBRACKET},
  {input:"\\right",  tag:"mo", output:"X", ttype:RIGHTBRACKET},
  {input:"{",	   output:"{", ttype:LEFTBRACKET,  invisible:true},
  {input:"}",	   output:"}", ttype:RIGHTBRACKET, invisible:true},
  
  {input:"(",	   tag:"mo", output:"(",      atval:"1", ttype:STRETCHY},
  {input:"[",	   tag:"mo", output:"[",      atval:"1", ttype:STRETCHY},
  {input:"\\lbrack", tag:"mo", output:"[",      atval:"1", ttype:STRETCHY},
  {input:"\\{",	   tag:"mo", output:"{",      atval:"1", ttype:STRETCHY},
  {input:"\\lbrace", tag:"mo", output:"{",      atval:"1", ttype:STRETCHY},
  {input:"\\langle", tag:"mo", output:"\u2329", atval:"1", ttype:STRETCHY},
  {input:"\\lfloor", tag:"mo", output:"\u230A", atval:"1", ttype:STRETCHY},
  {input:"\\lceil",  tag:"mo", output:"\u2308", atval:"1", ttype:STRETCHY},
  
  // rtag:"mi" causes space to be inserted before a following sin, cos, etc.
  // (see function LMparseExpr() )
  {input:")",	  tag:"mo",output:")",	    rtag:"mi",atval:"1",ttype:STRETCHY},
  {input:"]",	  tag:"mo",output:"]",	    rtag:"mi",atval:"1",ttype:STRETCHY},
  {input:"\\rbrack",tag:"mo",output:"]",	    rtag:"mi",atval:"1",ttype:STRETCHY},
  {input:"\\}",	  tag:"mo",output:"}",	    rtag:"mi",atval:"1",ttype:STRETCHY},
  {input:"\\rbrace",tag:"mo",output:"}",	    rtag:"mi",atval:"1",ttype:STRETCHY},
  {input:"\\rangle",tag:"mo",output:"\u232A", rtag:"mi",atval:"1",ttype:STRETCHY},
  {input:"\\rfloor",tag:"mo",output:"\u230B", rtag:"mi",atval:"1",ttype:STRETCHY},
  {input:"\\rceil", tag:"mo",output:"\u2309", rtag:"mi",atval:"1",ttype:STRETCHY},
  
  // "|", "\\|", "\\vert" and "\\Vert" modified later: lspace = rspace = 0em
  {input:"|",		tag:"mo", output:"\u2223", atval:"1", ttype:STRETCHY},
  {input:"\\|",		tag:"mo", output:"\u2225", atval:"1", ttype:STRETCHY},
  {input:"\\vert",	tag:"mo", output:"\u2223", atval:"1", ttype:STRETCHY},
  {input:"\\Vert",	tag:"mo", output:"\u2225", atval:"1", ttype:STRETCHY},
  {input:"\\mid",		tag:"mo", output:"\u2223", atval:"1", ttype:STRETCHY},
  {input:"\\parallel",	tag:"mo", output:"\u2225", atval:"1", ttype:STRETCHY},
  {input:"/",		tag:"mo", output:"/",	atval:"1.01", ttype:STRETCHY},
  {input:"\\backslash",	tag:"mo", output:"\u2216", atval:"1", ttype:STRETCHY},
  {input:"\\setminus",	tag:"mo", output:"\\",	   ttype:CONST},
  
  //miscellaneous symbols
  {input:"\\!",	  tag:"mspace", atname:"width", atval:"-0.167em", ttype:SPACE},
  {input:"\\,",	  tag:"mspace", atname:"width", atval:"0.167em", ttype:SPACE},
  {input:"\\>",	  tag:"mspace", atname:"width", atval:"0.222em", ttype:SPACE},
  {input:"\\:",	  tag:"mspace", atname:"width", atval:"0.222em", ttype:SPACE},
  {input:"\\;",	  tag:"mspace", atname:"width", atval:"0.278em", ttype:SPACE},
  {input:"~",	  tag:"mspace", atname:"width", atval:"0.333em", ttype:SPACE},
  {input:"\\quad",  tag:"mspace", atname:"width", atval:"1em", ttype:SPACE},
  {input:"\\qquad", tag:"mspace", atname:"width", atval:"2em", ttype:SPACE},
  //{input:"{}",		  tag:"mo", output:"\u200B", ttype:CONST}, // zero-width
  {input:"\\prime",	tag:"mo", output:"\u2032", ttype:CONST},
  {input:"'",		tag:"mo", output:"\u02B9", ttype:CONST},
  {input:"''",		tag:"mo", output:"\u02BA", ttype:CONST},
  {input:"'''",		tag:"mo", output:"\u2034", ttype:CONST},
  {input:"''''",		tag:"mo", output:"\u2057", ttype:CONST},
  {input:"\\ldots",	tag:"mo", output:"\u2026", ttype:CONST},
  {input:"\\cdots",	tag:"mo", output:"\u22EF", ttype:CONST},
  {input:"\\vdots",	tag:"mo", output:"\u22EE", ttype:CONST},
  {input:"\\ddots",	tag:"mo", output:"\u22F1", ttype:CONST},
  {input:"\\forall",	tag:"mo", output:"\u2200", ttype:CONST},
  {input:"\\exists",	tag:"mo", output:"\u2203", ttype:CONST},
  {input:"\\Re",		tag:"mo", output:"\u211C", ttype:CONST},
  {input:"\\Im",		tag:"mo", output:"\u2111", ttype:CONST},
  {input:"\\aleph",	tag:"mo", output:"\u2135", ttype:CONST},
  {input:"\\hbar",	tag:"mo", output:"\u210F", ttype:CONST},
  {input:"\\ell",		tag:"mo", output:"\u2113", ttype:CONST},
  {input:"\\wp",		tag:"mo", output:"\u2118", ttype:CONST},
  {input:"\\emptyset",	tag:"mo", output:"\u2205", ttype:CONST},
  {input:"\\infty",	tag:"mo", output:"\u221E", ttype:CONST},
  {input:"\\surd",	tag:"mo", output:"\\sqrt{}", ttype:DEFINITION},
  {input:"\\partial",	tag:"mo", output:"\u2202", ttype:CONST},
  {input:"\\nabla",	tag:"mo", output:"\u2207", ttype:CONST},
  {input:"\\triangle",	tag:"mo", output:"\u25B3", ttype:CONST},
  {input:"\\therefore",	tag:"mo", output:"\u2234", ttype:CONST},
  {input:"\\angle",	tag:"mo", output:"\u2220", ttype:CONST},
  //{input:"\\\\ ",	  tag:"mo", output:"\u00A0", ttype:CONST},
  {input:"\\diamond",	tag:"mo", output:"\u22C4", ttype:CONST},
  //{input:"\\Diamond",	  tag:"mo", output:"\u25CA", ttype:CONST},
  {input:"\\Diamond",	tag:"mo", output:"\u25C7", ttype:CONST},
  {input:"\\neg",		tag:"mo", output:"\u00AC", ttype:CONST},
  {input:"\\lnot",	tag:"mo", output:"\u00AC", ttype:CONST},
  {input:"\\bot",		tag:"mo", output:"\u22A5", ttype:CONST},
  {input:"\\top",		tag:"mo", output:"\u22A4", ttype:CONST},
  {input:"\\square",	tag:"mo", output:"\u25AB", ttype:CONST},
  {input:"\\Box",		tag:"mo", output:"\u25A1", ttype:CONST},
  {input:"\\wr",		tag:"mo", output:"\u2240", ttype:CONST},
  
  //standard functions
  //Note UNDEROVER *must* have tag:"mo" to work properly
  {input:"\\arccos", tag:"mi", output:"arccos", ttype:UNARY, func:true},
  {input:"\\arcsin", tag:"mi", output:"arcsin", ttype:UNARY, func:true},
  {input:"\\arctan", tag:"mi", output:"arctan", ttype:UNARY, func:true},
  {input:"\\arg",	   tag:"mi", output:"arg",    ttype:UNARY, func:true},
  {input:"\\cos",	   tag:"mi", output:"cos",    ttype:UNARY, func:true},
  {input:"\\cosh",   tag:"mi", output:"cosh",   ttype:UNARY, func:true},
  {input:"\\cot",	   tag:"mi", output:"cot",    ttype:UNARY, func:true},
  {input:"\\coth",   tag:"mi", output:"coth",   ttype:UNARY, func:true},
  {input:"\\csc",	   tag:"mi", output:"csc",    ttype:UNARY, func:true},
  {input:"\\deg",	   tag:"mi", output:"deg",    ttype:UNARY, func:true},
  {input:"\\det",	   tag:"mi", output:"det",    ttype:UNARY, func:true},
  {input:"\\dim",	   tag:"mi", output:"dim",    ttype:UNARY, func:true}, //CONST?
  {input:"\\exp",	   tag:"mi", output:"exp",    ttype:UNARY, func:true},
  {input:"\\gcd",	   tag:"mi", output:"gcd",    ttype:UNARY, func:true}, //CONST?
  {input:"\\hom",	   tag:"mi", output:"hom",    ttype:UNARY, func:true},
  {input:"\\inf",	      tag:"mo", output:"inf",	 ttype:UNDEROVER},
  {input:"\\ker",	   tag:"mi", output:"ker",    ttype:UNARY, func:true},
  {input:"\\lg",	   tag:"mi", output:"lg",     ttype:UNARY, func:true},
  {input:"\\lim",	      tag:"mo", output:"lim",	 ttype:UNDEROVER},
  {input:"\\liminf",    tag:"mo", output:"liminf", ttype:UNDEROVER},
  {input:"\\limsup",    tag:"mo", output:"limsup", ttype:UNDEROVER},
  {input:"\\ln",	   tag:"mi", output:"ln",     ttype:UNARY, func:true},
  {input:"\\log",	   tag:"mi", output:"log",    ttype:UNARY, func:true},
  {input:"\\max",	      tag:"mo", output:"max",	 ttype:UNDEROVER},
  {input:"\\min",	      tag:"mo", output:"min",	 ttype:UNDEROVER},
  {input:"\\Pr",	   tag:"mi", output:"Pr",     ttype:UNARY, func:true},
  {input:"\\sec",	   tag:"mi", output:"sec",    ttype:UNARY, func:true},
  {input:"\\sin",	   tag:"mi", output:"sin",    ttype:UNARY, func:true},
  {input:"\\sinh",   tag:"mi", output:"sinh",   ttype:UNARY, func:true},
  {input:"\\sup",	      tag:"mo", output:"sup",	 ttype:UNDEROVER},
  {input:"\\tan",	   tag:"mi", output:"tan",    ttype:UNARY, func:true},
  {input:"\\tanh",   tag:"mi", output:"tanh",   ttype:UNARY, func:true},
  
  //arrows
  {input:"\\gets",		tag:"mo", output:"\u2190", ttype:CONST},
  {input:"\\leftarrow",		tag:"mo", output:"\u2190", ttype:CONST},
  {input:"\\to",			tag:"mo", output:"\u2192", ttype:CONST},
  {input:"\\rightarrow",		tag:"mo", output:"\u2192", ttype:CONST},
  {input:"\\leftrightarrow",	tag:"mo", output:"\u2194", ttype:CONST},
  {input:"\\uparrow",		tag:"mo", output:"\u2191", ttype:CONST},
  {input:"\\downarrow",		tag:"mo", output:"\u2193", ttype:CONST},
  {input:"\\updownarrow",		tag:"mo", output:"\u2195", ttype:CONST},
  {input:"\\Leftarrow",		tag:"mo", output:"\u21D0", ttype:CONST},
  {input:"\\Rightarrow",		tag:"mo", output:"\u21D2", ttype:CONST},
  {input:"\\Leftrightarrow",	tag:"mo", output:"\u21D4", ttype:CONST},
  {input:"\\iff", tag:"mo", output:"~\\Longleftrightarrow~", ttype:DEFINITION},
  {input:"\\Uparrow",		tag:"mo", output:"\u21D1", ttype:CONST},
  {input:"\\Downarrow",		tag:"mo", output:"\u21D3", ttype:CONST},
  {input:"\\Updownarrow",		tag:"mo", output:"\u21D5", ttype:CONST},
  {input:"\\mapsto",		tag:"mo", output:"\u21A6", ttype:CONST},
  {input:"\\longleftarrow",	tag:"mo", output:"\u2190", ttype:LONG},
  {input:"\\longrightarrow",	tag:"mo", output:"\u2192", ttype:LONG},
  {input:"\\longleftrightarrow",	tag:"mo", output:"\u2194", ttype:LONG},
  {input:"\\Longleftarrow",	tag:"mo", output:"\u21D0", ttype:LONG},
  {input:"\\Longrightarrow",	tag:"mo", output:"\u21D2", ttype:LONG},
  {input:"\\Longleftrightarrow",  tag:"mo", output:"\u21D4", ttype:LONG},
  {input:"\\longmapsto",		tag:"mo", output:"\u21A6", ttype:CONST},
  							// disaster if LONG
  
  //commands with argument
  LMsqrt, LMroot, LMfrac, LMover, LMsub, LMsup, LMtext, LMmbox, LMatop, LMchoose,
  //LMdiv, LMquote,
  
  //diacritical marks
  {input:"\\acute",	tag:"mover",  output:"\u00B4", ttype:UNARY, acc:true},
  //{input:"\\acute",	  tag:"mover",  output:"\u0317", ttype:UNARY, acc:true},
  //{input:"\\acute",	  tag:"mover",  output:"\u0301", ttype:UNARY, acc:true},
  //{input:"\\grave",	  tag:"mover",  output:"\u0300", ttype:UNARY, acc:true},
  //{input:"\\grave",	  tag:"mover",  output:"\u0316", ttype:UNARY, acc:true},
  {input:"\\grave",	tag:"mover",  output:"\u0060", ttype:UNARY, acc:true},
  {input:"\\breve",	tag:"mover",  output:"\u02D8", ttype:UNARY, acc:true},
  {input:"\\check",	tag:"mover",  output:"\u02C7", ttype:UNARY, acc:true},
  {input:"\\dot",		tag:"mover",  output:".",      ttype:UNARY, acc:true},
  {input:"\\ddot",	tag:"mover",  output:"..",     ttype:UNARY, acc:true},
  //{input:"\\ddot",	  tag:"mover",  output:"\u00A8", ttype:UNARY, acc:true},
  {input:"\\mathring",	tag:"mover",  output:"\u00B0", ttype:UNARY, acc:true},
  {input:"\\vec",		tag:"mover",  output:"\u20D7", ttype:UNARY, acc:true},
  {input:"\\overrightarrow",tag:"mover",output:"\u20D7", ttype:UNARY, acc:true},
  {input:"\\overleftarrow",tag:"mover", output:"\u20D6", ttype:UNARY, acc:true},
  {input:"\\hat",		tag:"mover",  output:"\u005E", ttype:UNARY, acc:true},
  {input:"\\widehat",	tag:"mover",  output:"\u0302", ttype:UNARY, acc:true},
  {input:"\\tilde",	tag:"mover",  output:"~",      ttype:UNARY, acc:true},
  //{input:"\\tilde",	  tag:"mover",  output:"\u0303", ttype:UNARY, acc:true},
  {input:"\\widetilde",	tag:"mover",  output:"\u02DC", ttype:UNARY, acc:true},
  {input:"\\bar",		tag:"mover",  output:"\u203E", ttype:UNARY, acc:true},
  {input:"\\overbrace",	tag:"mover",  output:"\u23B4", ttype:UNARY, acc:true},
  {input:"\\overline",	tag:"mover",  output:"\u00AF", ttype:UNARY, acc:true},
  {input:"\\underbrace",  tag:"munder", output:"\u23B5", ttype:UNARY, acc:true},
  {input:"\\underline",	tag:"munder", output:"\u00AF", ttype:UNARY, acc:true},
  //{input:"underline",	tag:"munder", output:"\u0332", ttype:UNARY, acc:true},
  
  //typestyles and fonts
  {input:"\\displaystyle",tag:"mstyle",atname:"displaystyle",atval:"true", ttype:UNARY},
  {input:"\\textstyle",tag:"mstyle",atname:"displaystyle",atval:"false", ttype:UNARY},
  {input:"\\scriptstyle",tag:"mstyle",atname:"scriptlevel",atval:"1", ttype:UNARY},
  {input:"\\scriptscriptstyle",tag:"mstyle",atname:"scriptlevel",atval:"2", ttype:UNARY},
  {input:"\\textrm", tag:"mstyle", output:"\\mathrm", ttype: DEFINITION},
  {input:"\\mathbf", tag:"mstyle", atname:"mathvariant", atval:"bold", ttype:UNARY},
  {input:"\\textbf", tag:"mstyle", atname:"mathvariant", atval:"bold", ttype:UNARY},
  {input:"\\mathit", tag:"mstyle", atname:"mathvariant", atval:"italic", ttype:UNARY},
  {input:"\\textit", tag:"mstyle", atname:"mathvariant", atval:"italic", ttype:UNARY},
  {input:"\\mathtt", tag:"mstyle", atname:"mathvariant", atval:"monospace", ttype:UNARY},
  {input:"\\texttt", tag:"mstyle", atname:"mathvariant", atval:"monospace", ttype:UNARY},
  {input:"\\mathsf", tag:"mstyle", atname:"mathvariant", atval:"sans-serif", ttype:UNARY},
  {input:"\\mathbb", tag:"mstyle", atname:"mathvariant", atval:"double-struck", ttype:UNARY, codes:LMbbb},
  {input:"\\mathcal",tag:"mstyle", atname:"mathvariant", atval:"script", ttype:UNARY, codes:LMcal},
  {input:"\\mathfrak",tag:"mstyle",atname:"mathvariant", atval:"fraktur",ttype:UNARY, codes:LMfrk}
  ];
  
  function compareNames(s1,s2) {
    if (s1.input > s2.input) return 1;
    else return -1;
  }
  
  var LMnames = []; //list of input symbols
  
  function LMinitSymbols() {
    LMsymbols.sort(compareNames);
    for (i=0; i<LMsymbols.length; i++) LMnames[i] = LMsymbols[i].input;
  }
  
  var LMmathml = "http://www.w3.org/1998/Math/MathML";
  
  function LMcreateElementMathML(t) {
    if (isIE) return document.createElement("m:"+t);
    else return document.createElementNS(LMmathml,t);
  }
  
  function LMcreateMmlNode(t,frag) {
  //  var node = LMcreateElementMathML(name);
    if (isIE) var node = document.createElement("m:"+t);
    else var node = document.createElementNS(LMmathml,t);
    node.appendChild(frag);
    return node;
  }
  
  function newcommand(oldstr,newstr) {
    LMsymbols = LMsymbols.concat([{input:oldstr, tag:"mo", output:newstr,
                                   ttype:DEFINITION}]);
  }
  
  function LMremoveCharsAndBlanks(str,n) {
  //remove n characters and any following blanks
    var st;
    st = str.slice(n);
    for (var i=0; i<st.length && st.charCodeAt(i)<=32; i=i+1);
    return st.slice(i);
  }
  
  function LMposition(arr, str, n) {
  // return position >=n where str appears or would be inserted
  // assumes arr is sorted
    if (n==0) {
      var h,m;
      n = -1;
      h = arr.length;
      while (n+1<h) {
        m = (n+h) >> 1;
        if (arr[m]<str) n = m; else h = m;
      }
      return h;
    } else
      for (var i=n; i<arr.length && arr[i]<str; i++);
    return i; // i=arr.length || arr[i]>=str
  }
  
  function LMgetSymbol(str) {
  //return maximal initial substring of str that appears in names
  //return null if there is none
    var k = 0; //new pos
    var j = 0; //old pos
    var mk; //match pos
    var st;
    var tagst;
    var match = "";
    var more = true;
    for (var i=1; i<=str.length && more; i++) {
      st = str.slice(0,i); //initial substring of length i
      j = k;
      k = LMposition(LMnames, st, j);
      if (k<LMnames.length && str.slice(0,LMnames[k].length)==LMnames[k]){
        match = LMnames[k];
        mk = k;
        i = match.length;
      }
      more = k<LMnames.length && str.slice(0,LMnames[k].length)>=LMnames[k];
    }
    LMpreviousSymbol=LMcurrentSymbol;
    if (match!=""){
      LMcurrentSymbol=LMsymbols[mk].ttype;
      return LMsymbols[mk];
    }
    LMcurrentSymbol=CONST;
    k = 1;
    st = str.slice(0,1); //take 1 character
    if ("0"<=st && st<="9") tagst = "mn";
    else tagst = (("A">st || st>"Z") && ("a">st || st>"z")?"mo":"mi");
  /*
  // Commented out by DRW (not fully understood, but probably to do with
  // use of "/" as an INFIX version of "\\frac", which we don't want):
  //}
  //if (st=="-" && LMpreviousSymbol==INFIX) {
  //  LMcurrentSymbol = INFIX;  //trick "/" into recognizing "-" on second parse
  //  return {input:st, tag:tagst, output:st, ttype:UNARY, func:true};
  //}
  */
    return {input:st, tag:tagst, output:st, ttype:CONST};
  }
  
  
  /*Parsing ASCII math expressions with the following grammar
  v ::= [A-Za-z] | greek letters | numbers | other constant symbols
  u ::= sqrt | text | bb | other unary symbols for font commands
  b ::= frac | root | stackrel	binary symbols
  l ::= { | \left			left brackets
  r ::= } | \right		right brackets
  S ::= v | lEr | uS | bSS	Simple expression
  I ::= S_S | S^S | S_S^S | S	Intermediate expression
  E ::= IE | I/I			Expression
  Each terminal symbol is translated into a corresponding mathml node.*/
  
  var LMpreviousSymbol,LMcurrentSymbol;
  
  function LMparseSexpr(str) { //parses str and returns [node,tailstr,(node)tag]
    var symbol, node, result, result2, i, st,// rightvert = false,
      newFrag = document.createDocumentFragment();
    str = LMremoveCharsAndBlanks(str,0);
    symbol = LMgetSymbol(str);             //either a token or a bracket or empty
    if (symbol == null || symbol.ttype == RIGHTBRACKET)
      return [null,str,null];
    if (symbol.ttype == DEFINITION) {
      str = symbol.output+LMremoveCharsAndBlanks(str,symbol.input.length);
      symbol = LMgetSymbol(str);
      if (symbol == null || symbol.ttype == RIGHTBRACKET)
        return [null,str,null];
    }
    str = LMremoveCharsAndBlanks(str,symbol.input.length);
    switch (symbol.ttype) {
    case SPACE:
      node = LMcreateElementMathML(symbol.tag);
      node.setAttribute(symbol.atname,symbol.atval);
      return [node,str,symbol.tag];
    case UNDEROVER:
      if (isIE) {
        if (symbol.input.substr(0,4) == "\\big") {   // botch for missing symbols
  	str = "\\"+symbol.input.substr(4)+str;	   // make \bigcup = \cup etc.
  	symbol = LMgetSymbol(str);
  	symbol.ttype = UNDEROVER;
  	str = LMremoveCharsAndBlanks(str,symbol.input.length);
        }
      }
      return [LMcreateMmlNode(symbol.tag,
  			document.createTextNode(symbol.output)),str,symbol.tag];
    case CONST:
      var output = symbol.output;
      if (isIE) {
        if (symbol.input == "'")
  	output = "\u2032";
        else if (symbol.input == "''")
  	output = "\u2033";
        else if (symbol.input == "'''")
  	output = "\u2033\u2032";
        else if (symbol.input == "''''")
  	output = "\u2033\u2033";
        else if (symbol.input == "\\square")
  	output = "\u25A1";	// same as \Box
        else if (symbol.input.substr(0,5) == "\\frac") {
  						// botch for missing fractions
  	var denom = symbol.input.substr(6,1);
  	if (denom == "5" || denom == "6") {
  	  str = symbol.input.replace(/\\frac/,"\\frac ")+str;
  	  return [node,str,symbol.tag];
  	}
        }
      }
      node = LMcreateMmlNode(symbol.tag,document.createTextNode(output));
      return [node,str,symbol.tag];
    case LONG:  // added by DRW
      node = LMcreateMmlNode(symbol.tag,document.createTextNode(symbol.output));
      node.setAttribute("minsize","1.5");
      node.setAttribute("maxsize","1.5");
      node = LMcreateMmlNode("mover",node);
      node.appendChild(LMcreateElementMathML("mspace"));
      return [node,str,symbol.tag];
    case STRETCHY:  // added by DRW
      if (isIE && symbol.input == "\\backslash")
  	symbol.output = "\\";	// doesn't expand, but then nor does "\u2216"
      node = LMcreateMmlNode(symbol.tag,document.createTextNode(symbol.output));
      if (symbol.input == "|" || symbol.input == "\\vert" ||
  	symbol.input == "\\|" || symbol.input == "\\Vert") {
  	  node.setAttribute("lspace","0em");
  	  node.setAttribute("rspace","0em");
      }
      node.setAttribute("maxsize",symbol.atval);  // don't allow to stretch here
      if (symbol.rtag != null)
        return [node,str,symbol.rtag];
      else
        return [node,str,symbol.tag];
    case BIG:  // added by DRW
      var atval = symbol.atval;
      if (isIE)
        atval = symbol.ieval;
      symbol = LMgetSymbol(str);
      if (symbol == null)
  	return [null,str,null];
      str = LMremoveCharsAndBlanks(str,symbol.input.length);
      node = LMcreateMmlNode(symbol.tag,document.createTextNode(symbol.output));
      if (isIE) {		// to get brackets to expand
        var space = LMcreateElementMathML("mspace");
        space.setAttribute("height",atval+"ex");
        node = LMcreateMmlNode("mrow",node);
        node.appendChild(space);
      } else {		// ignored in IE
        node.setAttribute("minsize",atval);
        node.setAttribute("maxsize",atval);
      }
      return [node,str,symbol.tag];
    case LEFTBRACKET:   //read (expr+)
      if (symbol.input == "\\left") { // left what?
        symbol = LMgetSymbol(str);
        if (symbol != null) {
  	if (symbol.input == ".")
  	  symbol.invisible = true;
  	str = LMremoveCharsAndBlanks(str,symbol.input.length);
        }
      }
      result = LMparseExpr(str,true,false);
      if (symbol==null ||
  	(typeof symbol.invisible == "boolean" && symbol.invisible))
        node = LMcreateMmlNode("mrow",result[0]);
      else {
        node = LMcreateMmlNode("mo",document.createTextNode(symbol.output));
        node = LMcreateMmlNode("mrow",node);
        node.appendChild(result[0]);
      }
      return [node,result[1],result[2]];
    case MATRIX:	 //read (expr+)
      if (symbol.input == "\\begin{array}") {
        var mask = "";
        symbol = LMgetSymbol(str);
        str = LMremoveCharsAndBlanks(str,0);
        if (symbol == null)
  	mask = "l";
        else {
  	str = LMremoveCharsAndBlanks(str,symbol.input.length);
  	if (symbol.input != "{")
  	  mask = "l";
  	else do {
  	  symbol = LMgetSymbol(str);
  	  if (symbol != null) {
  	    str = LMremoveCharsAndBlanks(str,symbol.input.length);
  	    if (symbol.input != "}")
  	      mask = mask+symbol.input;
  	  }
  	} while (symbol != null && symbol.input != "" && symbol.input != "}");
        }
        result = LMparseExpr("{"+str,true,true);
  //    if (result[0]==null) return [LMcreateMmlNode("mo",
  //			   document.createTextNode(symbol.input)),str];
        node = LMcreateMmlNode("mtable",result[0]);
        mask = mask.replace(/l/g,"left ");
        mask = mask.replace(/r/g,"right ");
        mask = mask.replace(/c/g,"center ");
        node.setAttribute("columnalign",mask);
        node.setAttribute("displaystyle","false");
        if (isIE)
  	return [node,result[1],null];
  // trying to get a *little* bit of space around the array
  // (IE already includes it)
        var lspace = LMcreateElementMathML("mspace");
        lspace.setAttribute("width","0.167em");
        var rspace = LMcreateElementMathML("mspace");
        rspace.setAttribute("width","0.167em");
        var node1 = LMcreateMmlNode("mrow",lspace);
        node1.appendChild(node);
        node1.appendChild(rspace);
        return [node1,result[1],null];
      } else {	// eqnarray
        result = LMparseExpr("{"+str,true,true);
        node = LMcreateMmlNode("mtable",result[0]);
        if (isIE)
  	node.setAttribute("columnspacing","0.25em"); // best in practice?
        else
  	node.setAttribute("columnspacing","0.167em"); // correct (but ignored?)
        node.setAttribute("columnalign","right center left");
        node.setAttribute("displaystyle","true");
        node = LMcreateMmlNode("mrow",node);
        return [node,result[1],null];
      }
    case TEXT:
        if (str.charAt(0)=="{") i=str.indexOf("}");
        else i = 0;
        if (i==-1)
  		 i = str.length;
        st = str.slice(1,i);
        if (st.charAt(0) == " ") {
  	node = LMcreateElementMathML("mspace");
  	node.setAttribute("width","0.33em");	// was 1ex
  	newFrag.appendChild(node);
        }
        newFrag.appendChild(
          LMcreateMmlNode(symbol.tag,document.createTextNode(st)));
        if (st.charAt(st.length-1) == " ") {
  	node = LMcreateElementMathML("mspace");
  	node.setAttribute("width","0.33em");	// was 1ex
  	newFrag.appendChild(node);
        }
        str = LMremoveCharsAndBlanks(str,i+1);
        return [LMcreateMmlNode("mrow",newFrag),str,null];
    case UNARY:
        result = LMparseSexpr(str);
        if (result[0]==null) return [LMcreateMmlNode(symbol.tag,
                               document.createTextNode(symbol.output)),str];
        if (typeof symbol.func == "boolean" && symbol.func) { // functions hack
  	st = str.charAt(0);
  //	if (st=="^" || st=="_" || st=="/" || st=="|" || st==",") {
  	if (st=="^" || st=="_" || st==",") {
  	  return [LMcreateMmlNode(symbol.tag,
  		    document.createTextNode(symbol.output)),str,symbol.tag];
          } else {
  	  node = LMcreateMmlNode("mrow",
  	   LMcreateMmlNode(symbol.tag,document.createTextNode(symbol.output)));
  	  if (isIE) {
  	    var space = LMcreateElementMathML("mspace");
  	    space.setAttribute("width","0.167em");
  	    node.appendChild(space);
  	  }
  	  node.appendChild(result[0]);
  	  return [node,result[1],symbol.tag];
          }
        }
        if (symbol.input == "\\sqrt") {		// sqrt
  	if (isIE) {	// set minsize, for \surd
  	  var space = LMcreateElementMathML("mspace");
  	  space.setAttribute("height","1.2ex");
  	  space.setAttribute("width","0em");	// probably no effect
  	  node = LMcreateMmlNode(symbol.tag,result[0]);
  //	  node.setAttribute("minsize","1");	// ignored
  //	  node = LMcreateMmlNode("mrow",node);  // hopefully unnecessary
  	  node.appendChild(space);
  	  return [node,result[1],symbol.tag];
  	} else
  	  return [LMcreateMmlNode(symbol.tag,result[0]),result[1],symbol.tag];
        } else if (typeof symbol.acc == "boolean" && symbol.acc) {   // accent
          node = LMcreateMmlNode(symbol.tag,result[0]);
  	var output = symbol.output;
  	if (isIE) {
  		if (symbol.input == "\\hat")
  			output = "\u0302";
  		else if (symbol.input == "\\widehat")
  			output = "\u005E";
  		else if (symbol.input == "\\bar")
  			output = "\u00AF";
  		else if (symbol.input == "\\grave")
  			output = "\u0300";
  		else if (symbol.input == "\\tilde")
  			output = "\u0303";
  	}
  	var node1 = LMcreateMmlNode("mo",document.createTextNode(output));
  	if (symbol.input == "\\vec" || symbol.input == "\\check")
  						// don't allow to stretch
  	    node1.setAttribute("maxsize","1.2");
  		 // why doesn't "1" work?  \vec nearly disappears in firefox
  	if (isIE && symbol.input == "\\bar")
  	    node1.setAttribute("maxsize","0.5");
  	if (symbol.input == "\\underbrace" || symbol.input == "\\underline")
  	  node1.setAttribute("accentunder","true");
  	else
  	  node1.setAttribute("accent","true");
  	node.appendChild(node1);
  	if (symbol.input == "\\overbrace" || symbol.input == "\\underbrace")
  	  node.ttype = UNDEROVER;
  	return [node,result[1],symbol.tag];
        } else {			      // font change or displaystyle command
          if (!isIE && typeof symbol.codes != "undefined") {
            for (i=0; i<result[0].childNodes.length; i++)
              if (result[0].childNodes[i].nodeName=="mi" || result[0].nodeName=="mi") {
                st = (result[0].nodeName=="mi"?result[0].firstChild.nodeValue:
                                result[0].childNodes[i].firstChild.nodeValue);
                var newst = [];
                for (var j=0; j<st.length; j++)
                  if (st.charCodeAt(j)>64 && st.charCodeAt(j)<91) newst = newst +
                    String.fromCharCode(symbol.codes[st.charCodeAt(j)-65]);
                  else newst = newst + st.charAt(j);
                if (result[0].nodeName=="mi")
                  result[0]=LMcreateElementMathML("mo").
                            appendChild(document.createTextNode(newst));
                else result[0].replaceChild(LMcreateElementMathML("mo").
            appendChild(document.createTextNode(newst)),result[0].childNodes[i]);
              }
          }
          node = LMcreateMmlNode(symbol.tag,result[0]);
          node.setAttribute(symbol.atname,symbol.atval);
  	if (symbol.input == "\\scriptstyle" ||
  	    symbol.input == "\\scriptscriptstyle")
  		node.setAttribute("displaystyle","false");
  	return [node,result[1],symbol.tag];
        }
    case BINARY:
      result = LMparseSexpr(str);
      if (result[0]==null) return [LMcreateMmlNode("mo",
  			   document.createTextNode(symbol.input)),str,null];
      result2 = LMparseSexpr(result[1]);
      if (result2[0]==null) return [LMcreateMmlNode("mo",
  			   document.createTextNode(symbol.input)),str,null];
      if (symbol.input=="\\root" || symbol.input=="\\stackrel")
        newFrag.appendChild(result2[0]);
      newFrag.appendChild(result[0]);
      if (symbol.input=="\\frac") newFrag.appendChild(result2[0]);
      return [LMcreateMmlNode(symbol.tag,newFrag),result2[1],symbol.tag];
    case INFIX:
      str = LMremoveCharsAndBlanks(str,symbol.input.length);
      return [LMcreateMmlNode("mo",document.createTextNode(symbol.output)),
  	str,symbol.tag];
    default:
      return [LMcreateMmlNode(symbol.tag,        //its a constant
  	document.createTextNode(symbol.output)),str,symbol.tag];
    }
  }
  
  function LMparseIexpr(str) {
    var symbol, sym1, sym2, node, result, tag, underover;
    str = LMremoveCharsAndBlanks(str,0);
    sym1 = LMgetSymbol(str);
    result = LMparseSexpr(str);
    node = result[0];
    str = result[1];
    tag = result[2];
    symbol = LMgetSymbol(str);
    if (symbol.ttype == INFIX) {
      str = LMremoveCharsAndBlanks(str,symbol.input.length);
      result = LMparseSexpr(str);
      if (result[0] == null) // show box in place of missing argument
        result[0] = LMcreateMmlNode("mo",document.createTextNode("\u25A1"));
      str = result[1];
      tag = result[2];
      if (symbol.input == "_" || symbol.input == "^") {
        sym2 = LMgetSymbol(str);
        tag = null;	// no space between x^2 and a following sin, cos, etc.
  // This is for \underbrace and \overbrace
        underover = ((sym1.ttype == UNDEROVER) || (node.ttype == UNDEROVER));
  //    underover = (sym1.ttype == UNDEROVER);
        if (symbol.input == "_" && sym2.input == "^") {
          str = LMremoveCharsAndBlanks(str,sym2.input.length);
          var res2 = LMparseSexpr(str);
  	str = res2[1];
  	tag = res2[2];  // leave space between x_1^2 and a following sin etc.
          node = LMcreateMmlNode((underover?"munderover":"msubsup"),node);
          node.appendChild(result[0]);
          node.appendChild(res2[0]);
        } else if (symbol.input == "_") {
  	node = LMcreateMmlNode((underover?"munder":"msub"),node);
          node.appendChild(result[0]);
        } else {
  	node = LMcreateMmlNode((underover?"mover":"msup"),node);
          node.appendChild(result[0]);
        }
        node = LMcreateMmlNode("mrow",node); // so sum does not stretch
      } else {
        node = LMcreateMmlNode(symbol.tag,node);
        if (symbol.input == "\\atop" || symbol.input == "\\choose")
  	node.setAttribute("linethickness","0ex");
        node.appendChild(result[0]);
        if (symbol.input == "\\choose")
  	node = LMcreateMmlNode("mfenced",node);
      }
    }
    return [node,str,tag];
  }
  
  function LMparseExpr(str,rightbracket,matrix) {
    var symbol, node, result, i, tag,
    newFrag = document.createDocumentFragment();
    do {
      str = LMremoveCharsAndBlanks(str,0);
      result = LMparseIexpr(str);
      node = result[0];
      str = result[1];
      tag = result[2];
      symbol = LMgetSymbol(str);
      if (node!=undefined) {
        if ((tag == "mn" || tag == "mi") && symbol!=null &&
  	typeof symbol.func == "boolean" && symbol.func) {
  			// Add space before \sin in 2\sin x or x\sin x
  	  var space = LMcreateElementMathML("mspace");
  	  space.setAttribute("width","0.167em");
  	  node = LMcreateMmlNode("mrow",node);
  	  node.appendChild(space);
        }
        newFrag.appendChild(node);
      }
    } while ((symbol.ttype != RIGHTBRACKET)
          && symbol!=null && symbol.output!="");
    tag = null;
    if (symbol.ttype == RIGHTBRACKET) {
      if (symbol.input == "\\right") { // right what?
        str = LMremoveCharsAndBlanks(str,symbol.input.length);
        symbol = LMgetSymbol(str);
        if (symbol != null && symbol.input == ".")
  	symbol.invisible = true;
        if (symbol != null)
  	tag = symbol.rtag;
      }
      if (symbol!=null)
        str = LMremoveCharsAndBlanks(str,symbol.input.length); // ready to return
      var len = newFrag.childNodes.length;
      if (matrix &&
        len>0 && newFrag.childNodes[len-1].nodeName == "mrow" && len>1 &&
        newFrag.childNodes[len-2].nodeName == "mo" &&
        newFrag.childNodes[len-2].firstChild.nodeValue == "&") { //matrix
  	var pos = []; // positions of ampersands
          var m = newFrag.childNodes.length;
          for (i=0; matrix && i<m; i=i+2) {
            pos[i] = [];
            node = newFrag.childNodes[i];
  	  for (var j=0; j<node.childNodes.length; j++)
  	    if (node.childNodes[j].firstChild.nodeValue=="&")
  	      pos[i][pos[i].length]=j;
          }
  	var row, frag, n, k, table = document.createDocumentFragment();
  	for (i=0; i<m; i=i+2) {
  	  row = document.createDocumentFragment();
  	  frag = document.createDocumentFragment();
  	  node = newFrag.firstChild; // <mrow> -&-&...&-&- </mrow>
  	  n = node.childNodes.length;
  	  k = 0;
  	  for (j=0; j<n; j++) {
  	    if (typeof pos[i][k] != "undefined" && j==pos[i][k]){
  	      node.removeChild(node.firstChild); //remove &
  	      row.appendChild(LMcreateMmlNode("mtd",frag));
  	      k++;
  	    } else frag.appendChild(node.firstChild);
  	  }
  	  row.appendChild(LMcreateMmlNode("mtd",frag));
  	  if (newFrag.childNodes.length>2) {
  	    newFrag.removeChild(newFrag.firstChild); //remove <mrow> </mrow>
  	    newFrag.removeChild(newFrag.firstChild); //remove <mo>&</mo>
  	  }
  	  table.appendChild(LMcreateMmlNode("mtr",row));
  	}
  	return [table,str];
      }
      if (typeof symbol.invisible != "boolean" || !symbol.invisible) {
        node = LMcreateMmlNode("mo",document.createTextNode(symbol.output));
        newFrag.appendChild(node);
      }
    }
    return [newFrag,str,tag];
  }
  
  function LMparseMath(str) {
    var result, node = LMcreateElementMathML("mstyle");
    if (mathcolor != "") node.setAttribute("mathcolor",mathcolor);
    if (mathfontfamily != "") node.setAttribute("fontfamily",mathfontfamily);
    node.appendChild(LMparseExpr(str.replace(/^\s+/g,""),false,false)[0]);
    node = LMcreateMmlNode("math",node);
    if (showasciiformulaonhover)                      //fixed by djhsu so newline
      node.setAttribute("title",str.replace(/\s+/g," "));//does not show in Gecko
    if (mathfontfamily != "" && (isIE || mathfontfamily != "serif")) {
      var fnode = LMcreateElementXHTML("font");
      fnode.setAttribute("face",mathfontfamily);
      fnode.appendChild(node);
      return fnode;
    }
    return node;
  }
  
  function LMstrarr2docFrag(arr, linebreaks) {
    var newFrag=document.createDocumentFragment();
    var expr = false;
    for (var i=0; i<arr.length; i++) {
      if (expr) newFrag.appendChild(LMparseMath(arr[i]));
      else {
        var arri = (linebreaks ? arr[i].split("\n\n") : [arr[i]]);
        newFrag.appendChild(LMcreateElementXHTML("span").
        appendChild(document.createTextNode(arri[0])));
        for (var j=1; j<arri.length; j++) {
          newFrag.appendChild(LMcreateElementXHTML("p"));
          newFrag.appendChild(LMcreateElementXHTML("span").
          appendChild(document.createTextNode(arri[j])));
        }
      }
      expr = !expr;
    }
    return newFrag;
  }
  
  function LMprocessNodeR(n, linebreaks) {
    var mtch, str, arr, frg, i;
    if (n.childNodes.length == 0) {
     if ((n.nodeType!=8 || linebreaks) &&
      n.parentNode.nodeName!="form" && n.parentNode.nodeName!="FORM" &&
      n.parentNode.nodeName!="textarea" && n.parentNode.nodeName!="TEXTAREA" &&
      n.parentNode.nodeName!="pre" && n.parentNode.nodeName!="PRE") {
      str = n.nodeValue;
      if (!(str == null)) {
        str = str.replace(/\r\n\r\n/g,"\n\n");
        str = str.replace(/\x20+/g," ");
        str = str.replace(/\s*\r\n/g," ");
  // DELIMITERS:
        mtch = (str.indexOf("\$")==-1 ? false : true);
        str = str.replace(/([^\\])\$/g,"$1 \$");
        str = str.replace(/^\$/," \$");	// in case \$ at start of string
        arr = str.split(" \$");
        for (i=0; i<arr.length; i++)
  	arr[i]=arr[i].replace(/\\\$/g,"\$");
        if (arr.length>1 || mtch) {
          if (checkForMathML) {
            checkForMathML = false;
            var nd = LMisMathMLavailable();
            LMnoMathML = nd != null;
            if (LMnoMathML && notifyIfNoMathML)
              if (alertIfNoMathML)
                alert("To view the ASCIIMathML notation use Internet Explorer 6 +\nMathPlayer (free from www.dessci.com)\n\
                  or Firefox/Mozilla/Netscape");
              else LMbody.insertBefore(nd,LMbody.childNodes[0]);
          }
          if (!LMnoMathML) {
            frg = LMstrarr2docFrag(arr,n.nodeType==8);
            var len = frg.childNodes.length;
            n.parentNode.replaceChild(frg,n);
            return len-1;
          } else return 0;
        }
      }
     } else return 0;
    } else if (n.nodeName!="math") {
      for (i=0; i<n.childNodes.length; i++)
        i += LMprocessNodeR(n.childNodes[i], linebreaks);
    }
    return 0;
  }
  
  function LMprocessNode(n, linebreaks, spanclassLM) {
    var frag,st;
    if (spanclassLM!=null) {
      frag = document.getElementsByTagName("span");
      for (var i=0;i<frag.length;i++)
        if (frag[i].className == "LM")
          LMprocessNodeR(frag[i],linebreaks);
    } else {
      try {
        st = n.innerHTML;
      } catch(err) {}
  // DELIMITERS:
      if (st==null || st.indexOf("\$")!=-1)
        LMprocessNodeR(n,linebreaks);
    }
    if (isIE) { //needed to match size and font of formula to surrounding text
      frag = document.getElementsByTagName('math');
      for (var i=0;i<frag.length;i++) frag[i].update()
    }
  }
  
  var LMbody;
  var LMnoMathML = false, LMtranslated = false;
  
  function LMtranslate(spanclassLM) {
    if (!LMtranslated) { // run this only once
      LMtranslated = true;
      LMinitSymbols();
      LMbody = document.getElementsByTagName("body")[0];
      LMprocessNode(LMbody, false, spanclassLM);
    }
  }
  
  // from AsciencePad
  function math2latex(el) {
    var myLM = el.innerHTML;
    if (myLM.indexOf("$") == -1) {
      myLM = myLM.replace(/.+title=\"(.*?)\".+/g,"\$1");
      myLM = myLM.replace(/.+title=(.*?)>.+/g,"\$1");
      el.innerHTML = '$' + myLM + '$';
    } 
  }
  
  if (isIE) { // avoid adding MathPlayer info explicitly to each webpage
    document.write("<object id=\"mathplayer\"\
    classid=\"clsid:32F66A20-7614-11D4-BD11-00104BD3F987\"></object>");
    document.write("<?import namespace=\"m\" implementation=\"#mathplayer\"?>");
  }
  
  /* disable it for the MoniWiki
  // GO1.1 Generic onload by Brothercake
  // http://www.brothercake.com/
  //onload function (replaces the onload="LMtranslate()" in the <body> tag)
  function generic()
  {
    if (autoRunOnLoad) LMtranslate();
  };
  
  //setup onload function
  if(typeof window.addEventListener != 'undefined')
  {
    //.. gecko, safari, konqueror and standard
    window.addEventListener('load', generic, false);
  }
  else if(typeof document.addEventListener != 'undefined')
  {
    //.. opera 7
    document.addEventListener('load', generic, false);
  }
  else if(typeof window.attachEvent != 'undefined')
  {
    //.. win/ie
    window.attachEvent('onload', generic);
  }
  //** remove this condition to degrade older browsers
  else
  {
    //.. mac/ie5 and anything else that gets this far
    //if there's an existing onload function
    if(typeof window.onload == 'function')
    {
      //store it
      var existing = onload;
      //add new onload handler
      window.onload = function()
      {
        //call existing onload function
        existing();
        //call generic onload function
        generic();
      };
    }
    else
    {
      //setup onload function
      window.onload = generic;
    }
  }
  
  */
  
  
  
  1.1                  moniwiki/plugin/processor/latexmathml.php
  
  Index: latexmathml.php
  ===================================================================
  <?php
  // Copyright 2010 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a latexmathml processor plugin by AnonymousDoner
  //
  // modified version of the ASCIIMathML proocessor.
  //
  // Author: Won-Kyu Park <wkpark@kldp.org> and AnonymousDoner
  // Since: 2010-08-16
  // Name: a LaTeXMathML processor
  // Description: support LaTeXMathML
  // URL: MoniWiki:LatexMathML
  // Version: $Revision: 1.1 $
  // License: GPL
  //
  // to changes this processor as a default inline latex formatter:
  // 1. set $inline_latex='latexmathml';
  // 2. replace the latex processor: $processors=array('latex'=>'latexmathml');
  //
  // $Id: latexmathml.php,v 1.1 2010/08/16 09:30:22 wkpark Exp $
  
  function processor_latexmathml($formatter,$value="") {
    global $DBInfo;
  
    if ($value[0]=='#' and $value[1]=='!')
    list($line,$value)=explode("\n",$value,2);
  
    if ($line and strpos($line, ' ') !== FALSE)
      list($tag,$args)=explode(' ',$line,2);
  
    # 1 or 0
    $_add_func=1;
    # customizable variables
    $edit_mathbgcolor='yellow';
    $myfontfamily='Palatino Linotype'; # or serif
    $myfontcolor='#2171B1'; # red(default), black etc.
  
    #
    $flag = 0;
    if (empty($formatter->wikimarkup)) {
      // use a md5 tag with a wikimarkup action
      $cid=&$GLOBALS['_transient']['latexmathml'];
      if ( !$cid ) { $flag = 1; $cid = 1; }
      $id=$cid;
      $cid++;
  
      # wikimarkup specific settings
      $bgcolor = '';
      $fontcolor="mathcolor='$myfontcolor';\n";
    } else {
      $flag = 1;
      $id=md5($value.'.'.microtime());
  
      # normal settings
      $bgcolor="mathbgcolor='$edit_mathbgcolor';\n";
    }
    $fontfamily="mathfontfamily='$myfontfamily';\n";
  
    if ( $flag ) {
      if ($formatter->register_javascripts('LaTeXMathML.js'));
        if (preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']))
          $formatter->register_javascripts('<object id="mathplayer"'.
            ' classid="clsid:32F66A20-7614-11D4-BD11-00104BD3F987" width="1px" height="1px">'.
            '</object>'.
            '<?import namespace="mml" implementation="#mathplayer"?>'
        );
  
      if ($_add_func)
        $js=<<<AJS
  <script type="text/javascript">
  /*<![CDATA[*/
  function LMtranslateById(objId,flag) {
    var LMbody = document.getElementById(objId);
    // for WikiWyg mode switching
    if (typeof math2latex != "undefined") math2latex(LMbody);
    if (isIE) { // for WikiWyg in the iframe
      var nd = LMisMathMLavailable();
      LMnoMathML = nd != null;
  
      if (LMnoMathML) {
        LMbody.insertBefore(nd,LMbody.childNodes[0]);
      } else {
        LMbody.innerHTML=LMparseMath(LMbody.innerHTML.replace(/\\$/g,'')).innerHTML;
        //needed to match size and font of formula to surrounding text
        LMbody.getElementsByTagName('math')[0].update();
      }
    } else {
      LMprocessNode(LMbody, false);
    }
  }
  
  $bgcolor$fontfamily$fontcolor
  LMinitSymbols();
  /*]]>*/
  </script>
  AJS;
      if ($js) $formatter->register_javascripts($js);
    }
  
    $out = "<span><span class=\"LM\" id=\"LM-$id\">$value</span>" .
      "<script type=\"text/javascript\">LMtranslateById('LM-$id');".
      "</script></span>";
    return $out;
  }
  
  // vim:et:sts=2:sw=2
  
  
  


1281954120;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv23073\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315557] add PageIndex class to fix RandomPage plugin problem with more than 10000 pages wiki\n\n
1281954120;wkpark;Update of /cvsroot/moniwiki/moniwiki/lib\nIn directory kill.kldp.net:/tmp/cvs-serv23073/lib\n\nAdded Files:\n	PageIndex.php \nLog Message:\n[#315557] add PageIndex class to fix RandomPage plugin problem with more than 10000 pages wiki\n\n
1281954120;wkpark;Update of /cvsroot/moniwiki/moniwiki/tools\nIn directory kill.kldp.net:/tmp/cvs-serv23073/tools\n\nAdded Files:\n	pageindex.php \nLog Message:\n[#315557] add PageIndex class to fix RandomPage plugin problem with more than 10000 pages wiki\n\n
wkpark      2010/08/16 19:22:01

  Modified:    .        wikilib.php
  Added:       lib      PageIndex.php
               tools    pageindex.php
  Log:
  [#315557] add PageIndex class to fix RandomPage plugin problem with more than 10000 pages wiki
  
  Revision  Changes    Path
  1.324     +13 -5     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.323
  retrieving revision 1.324
  diff -u -r1.323 -r1.324
  --- wikilib.php	14 Aug 2010 15:12:09 -0000	1.323
  +++ wikilib.php	16 Aug 2010 10:22:00 -0000	1.324
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.323 2010/08/14 15:12:09 wkpark Exp $
  +// $Id: wikilib.php,v 1.324 2010/08/16 10:22:00 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2284,22 +2284,30 @@
     // select pages
     $selected = array();
     for ($i = 0; $i < $number; $i++) {
  -    $selected[] = rand(1, $max);   
  +    $selected[] = rand(0, $max - 1);   
     }
     $selected = array_unique($selected);
  +  
  +  sort($selected);
  +  $sel_count = count($selected);
   
     $sel_pages = array();
  -  if (!empty($DBInfo->use_indexer)) {
  +  if (!empty($DBInfo->use_pageindex)) {
  +    // fastest method
  +    require_once('lib/PageIndex.php');
  +    $pgidx = new PageIndex($DBInfo);
  +    $sel_pages = $pgidx->getPagesByIds($selected);
  +  } else if (!empty($DBInfo->use_indexer)) {
       require_once("lib/indexer.DBA.php");
       $indexer = new Indexer_DBA('fullsearch', 'r', $DBInfo->dba_type);
       foreach ($selected as $idx) {
  -      $sel_pages[] = $indexer->_fetch($idx);
  +      $sel_pages[] = $indexer->_fetch($idx - 1);
       }
       $indexer->close();
     } else {
       $all_pages = $DBInfo->getPageLists();
       foreach ($selected as $idx) {
  -      $sel_pages[] = $all_pages[$idx - 1]; 
  +      $sel_pages[] = $all_pages[$idx]; 
       }
     }
   
  
  
  
  1.1                  moniwiki/lib/PageIndex.php
  
  Index: PageIndex.php
  ===================================================================
  <?php
  /**
   * A Simple PageIndex for RandomPage macro
   *
   * @since 2010/08/16
   * @author Won-Kyu Park <wkpark@kldp.org>
   * @license GPL
   */
  
  class PageIndex {
      var $text_dir = '';
  
      function PageIndex($DB)
      {
          $this->text_dir = $DB->text_dir;
          $this->cache_dir = $DB->cache_dir . '/pageindex';
          if (!is_dir($this->cache_dir))
              _mkdir_p($this->cache_dir, 0777);
          $this->pagelst = $this->cache_dir . '/pageindex.lst';
          $this->pageidx = $this->cache_dir . '/pageindex.idx';
      }
  
      function init()
      {
          global $DBInfo;
  
          $dh = opendir($this->text_dir);
          if (!is_resource($dh)) return false;
  
          $fidx = fopen($this->pageidx, 'w');
          if (!is_resource($fidx)) {
              closedir($dh);
              return false;
          }
          $flst = fopen($this->pagelst, 'w');
          if (!is_resource($flst)) {
              closedir($dh);
              fclose($fidx);
              return false;
          }
  
          $idx_data = '';
          $lst_data = '';
          $counter = 0;
          $fseek = 0;
          $pages = array();
          while(($f = readdir($dh)) !== false) {
              if ((($p = strpos($f, '.')) !== false or $f == 'RCS' or $f == 'CVS') and is_dir($f)) continue;
              $counter++;
  
              $idx_data.= pack('N', $fseek);
              $pagename = $DBInfo->keyToPagename($f);
              $len = strlen($pagename) + 1;
              $fseek += $len;
              $lst_data.= $DBInfo->keyToPagename($f)."\n";
  
              if ($counter > 1000) {
                  fwrite($fidx, $idx_data);
                  fwrite($flst, $lst_data);
                  $idx_data = '';
                  $lst_data = '';
                  $counter = 0;
              }
          }
          if (!empty($lst_data)) {
              fwrite($fidx, $idx_data);
              fwrite($flst, $lst_data);
          }
          fclose($fidx);
          fclose($flst);
          closedir($dh);
      }
  
      function getPagesByIds($ids)
      {
          $fidx = fopen($this->pageidx, 'r');
          if (!is_resource($fidx)) return array();
          $flst = fopen($this->pagelst, 'r');
          if (!is_resource($flst)) {
              fclose($fidx);
              return array();
          }
          $pages = array();
          foreach($ids as $id) {
              fseek($fidx, $id * 4);
              $seek = unpack('N', fread($fidx, 4));
              fseek($flst, $seek[1]);
              $pg = fgets($flst, 2048);
              $pages[] = substr($pg, 0, -1);
          }
          fclose($fidx);
          fclose($flst);
  
          return $pages;
      }
  }
  
  
  // vim:et:sts=4:sw=4:
  
  
  
  1.1                  moniwiki/tools/pageindex.php
  
  Index: pageindex.php
  ===================================================================
  <?php
  // init pageindex cache
  
  define('INC_MONIWIKI',1);
  include_once("wiki.php");
  
  # Start Main
  $Config=getConfig("config.php");
  include("wikilib.php");
  include("lib/win32fix.php");
  #include("lib/tokenizer.php");
  include("lib/PageIndex.php");
  
  $DBInfo= new WikiDB($Config);
  
  $options=array();
  $timing = &new Timer();
  $options['timer']=&$timing;
  $options['timer']->Check("load");
  
  $indexer = new PageIndex($DBInfo);
  $indexer->init();
  
  // vim:et:sts=4:sw=4:
  
  
  


1281955859;wkpark;Update of /cvsroot/moniwiki/moniwiki/lib\nIn directory kill.kldp.net:/tmp/cvs-serv27262/lib\n\nModified Files:\n	PageIndex.php \nLog Message:\nfixed last change\n\n
wkpark      2010/08/16 19:51:00

  Modified:    lib      PageIndex.php
  Log:
  fixed last change
  
  Revision  Changes    Path
  1.2       +4 -1      moniwiki/lib/PageIndex.php
  
  Index: PageIndex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/PageIndex.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- PageIndex.php	16 Aug 2010 10:22:00 -0000	1.1
  +++ PageIndex.php	16 Aug 2010 10:50:59 -0000	1.2
  @@ -14,8 +14,11 @@
       {
           $this->text_dir = $DB->text_dir;
           $this->cache_dir = $DB->cache_dir . '/pageindex';
  -        if (!is_dir($this->cache_dir))
  +        if (!is_dir($this->cache_dir)) {
  +            $om = umask(000);
               _mkdir_p($this->cache_dir, 0777);
  +            umask($om);
  +        }
           $this->pagelst = $this->cache_dir . '/pageindex.lst';
           $this->pageidx = $this->cache_dir . '/pageindex.idx';
       }
  
  
  


1281956430;wkpark;Update of /cvsroot/moniwiki/moniwiki/local/js\nIn directory kill.kldp.net:/tmp/cvs-serv27374/local/js\n\nModified Files:\n	sh.js sh3.js \nLog Message:\n[#315593] oops! chrom/safari fix not needed\n\n
wkpark      2010/08/16 20:00:31

  Modified:    local/js sh.js sh3.js
  Log:
  [#315593] oops! chrom/safari fix not needed
  
  Revision  Changes    Path
  1.8       +7 -7      moniwiki/local/js/sh.js
  
  Index: sh.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/sh.js,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- sh.js	14 Aug 2010 12:46:36 -0000	1.7
  +++ sh.js	16 Aug 2010 11:00:30 -0000	1.8
  @@ -1,7 +1,7 @@
   // http://code.google.com/p/syntaxhighlighter
   // syntaxhighlighter wrapper for MoniWiki
   //
  -// $Id: sh.js,v 1.7 2010/08/14 12:46:36 wkpark Exp $
  +// $Id: sh.js,v 1.8 2010/08/16 11:00:30 wkpark Exp $
   //
   
   if ( typeof _ == 'undefined') {
  @@ -59,7 +59,7 @@
           }
   
           // safari fix.
  -        if (navigator.userAgent.toLowerCase().indexOf('applewebkit') != -1) {
  +        if (0 && navigator.userAgent.toLowerCase().indexOf('applewebkit') != -1) {
               (function() {
                   var timer = setInterval(function() { 
                       if (/loaded|complete/.test(document.readyState)) {  
  @@ -68,11 +68,11 @@
                       }
                   }, 10);
               })();
  -        } else {
  -            js.onload = function() {
  -                dp.sh.HighlightAll('code',true,true);
  -                return;
  -            }
  +        }
  +
  +        js.onload = function() {
  +            dp.sh.HighlightAll('code',true,true);
  +            return;
           }
       }
       // not work with the flash 10 :(
  
  
  
  1.2       +7 -8      moniwiki/local/js/sh3.js
  
  Index: sh3.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/js/sh3.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- sh3.js	14 Aug 2010 12:38:03 -0000	1.1
  +++ sh3.js	16 Aug 2010 11:00:30 -0000	1.2
  @@ -1,7 +1,7 @@
   // http://code.google.com/p/syntaxhighlighter
   // syntaxhighlighter_3.0.xx wrapper for MoniWiki
   //
  -// $Id: sh3.js,v 1.1 2010/08/14 12:38:03 wkpark Exp $
  +// $Id: sh3.js,v 1.2 2010/08/16 11:00:30 wkpark Exp $
   //
   
   if ( typeof _ == 'undefined') {
  @@ -53,22 +53,21 @@
               if (this.readyState == 'complete')
                   SyntaxHighlighter.highlight();
           }
  -        js.onload = function() {
  -            SyntaxHighlighter.highlight();
  -            return;
  -        }
  -
           // safari fix.
  -        if (navigator.userAgent.toLowerCase().indexOf('applewebkit') != -1) {
  +        if ( 0 && navigator.userAgent.toLowerCase().indexOf('applewebkit') != -1) {
               (function() {
                   var timer = setInterval(function() { 
  -                    if (/loaded|complete/.test(document.readyState)) {  
  +                    if (/loaded|complete/.test(document.readyState)) {
                           clearInterval(timer);  
                           SyntaxHighlighter.highlight();
                       }
                   }, 10);
               })();
           }
  +        js.onload = function() {
  +            SyntaxHighlighter.highlight();
  +            return;
  +        }
       }
       return;
   }
  
  
  


1281956839;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv27504/plugin\n\nModified Files:\n	Fortune.php \nLog Message:\n[#315290] fixed notice warnings\n\n
1281956839;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin/processor\nIn directory kill.kldp.net:/tmp/cvs-serv27504/plugin/processor\n\nModified Files:\n	asciimathml.php latexmathml.php monimarkup.php \nLog Message:\n[#315290] fixed notice warnings\n\n
wkpark      2010/08/16 20:07:20

  Modified:    plugin   Fortune.php
               plugin/processor asciimathml.php latexmathml.php
                        monimarkup.php
  Log:
  [#315290] fixed notice warnings
  
  Revision  Changes    Path
  1.4       +4 -4      moniwiki/plugin/Fortune.php
  
  Index: Fortune.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Fortune.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Fortune.php	3 Jan 2006 13:27:57 -0000	1.3
  +++ Fortune.php	16 Aug 2010 11:07:19 -0000	1.4
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Fortune(science)]]
   //
  -// $Id: Fortune.php,v 1.3 2006/01/03 13:27:57 wkpark Exp $
  +// $Id: Fortune.php,v 1.4 2010/08/16 11:07:19 wkpark Exp $
   
   function macro_FortuneSystem($formatter,$value) {
       $ret= exec(escapeshellcmd("/usr/bin/fortune $value"),$log);
  @@ -18,12 +18,12 @@
   function macro_Fortune($formatter,$value,$options) {
       $cat=$value;
       $dir='/usr/share/games/fortune';
  -    if ($DBInfo->fortune_dir) $dir=$DBInfo->fortune_dir;
  +    if (!empty($DBInfo->fortune_dir)) $dir = $DBInfo->fortune_dir;
       if ($cat=='') $cat=DEFAULT_FORTUNE;
   
       $files=array();
       if ($cat == '*' and ($hd=opendir($dir))) {
  -        while ($f = readdir($hd)) {
  +        while (($f = readdir($hd)) !== false) {
               if (is_dir($dir."/$f")) continue;
               $files[]=$f;
           }
  @@ -61,7 +61,7 @@
       }
       fclose($fd);
   
  -    if ($options['action_mode']=='macro') {
  +    if (!empty($options['action_mode']) and $options['action_mode']=='macro') {
           $formatter->header('Content-Type: text/plain');
           return $out;
       }
  
  
  
  1.11      +3 -3      moniwiki/plugin/processor/asciimathml.php
  
  Index: asciimathml.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/asciimathml.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- asciimathml.php	19 Apr 2010 11:26:47 -0000	1.10
  +++ asciimathml.php	16 Aug 2010 11:07:19 -0000	1.11
  @@ -8,7 +8,7 @@
   // Name: a AsciiMathML processor
   // Description: It support AsciiMathML
   // URL: MoniWiki:AsciiMathML
  -// Version: $Revision: 1.10 $
  +// Version: $Revision: 1.11 $
   // License: GPL
   //
   // please see http://kldp.net/forum/message.php?msg_id=9419
  @@ -31,7 +31,7 @@
   // 1. set $inline_latex='asciimathml';
   // 2. replace the latex processor: $processors=array('latex'=>'asciimathml');
   //
  -// $Id: asciimathml.php,v 1.10 2010/04/19 11:26:47 wkpark Exp $
  +// $Id: asciimathml.php,v 1.11 2010/08/16 11:07:19 wkpark Exp $
   
   function processor_asciimathml($formatter,$value="") {
     global $DBInfo;
  @@ -39,7 +39,7 @@
     if ($value[0]=='#' and $value[1]=='!')
     list($line,$value)=explode("\n",$value,2);
   
  -  if ($line and strpos($line, ' ') !== FALSE)
  +  if (!empty($line) and strpos($line, ' ') !== FALSE)
       list($tag,$args)=explode(' ',$line,2);
   
     # 1 or 0
  
  
  
  1.2       +3 -3      moniwiki/plugin/processor/latexmathml.php
  
  Index: latexmathml.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/latexmathml.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- latexmathml.php	16 Aug 2010 09:30:22 -0000	1.1
  +++ latexmathml.php	16 Aug 2010 11:07:19 -0000	1.2
  @@ -10,14 +10,14 @@
   // Name: a LaTeXMathML processor
   // Description: support LaTeXMathML
   // URL: MoniWiki:LatexMathML
  -// Version: $Revision: 1.1 $
  +// Version: $Revision: 1.2 $
   // License: GPL
   //
   // to changes this processor as a default inline latex formatter:
   // 1. set $inline_latex='latexmathml';
   // 2. replace the latex processor: $processors=array('latex'=>'latexmathml');
   //
  -// $Id: latexmathml.php,v 1.1 2010/08/16 09:30:22 wkpark Exp $
  +// $Id: latexmathml.php,v 1.2 2010/08/16 11:07:19 wkpark Exp $
   
   function processor_latexmathml($formatter,$value="") {
     global $DBInfo;
  @@ -25,7 +25,7 @@
     if ($value[0]=='#' and $value[1]=='!')
     list($line,$value)=explode("\n",$value,2);
   
  -  if ($line and strpos($line, ' ') !== FALSE)
  +  if (!empty($line) and strpos($line, ' ') !== FALSE)
       list($tag,$args)=explode(' ',$line,2);
   
     # 1 or 0
  
  
  
  1.29      +9 -9      moniwiki/plugin/processor/monimarkup.php
  
  Index: monimarkup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/monimarkup.php,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- monimarkup.php	13 Aug 2010 15:55:21 -0000	1.28
  +++ monimarkup.php	16 Aug 2010 11:07:19 -0000	1.29
  @@ -3,12 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a moniwiki formatting processor for the MoniWiki
   //
  -// $Id: monimarkup.php,v 1.28 2010/08/13 15:55:21 wkpark Exp $
  +// $Id: monimarkup.php,v 1.29 2010/08/16 11:07:19 wkpark Exp $
   /**
    * @date    2006-08-09
    * @name    Moniwiki Processor
    * @desc    Moniwiki default processor
  - * @version $Revision: 1.28 $
  + * @version $Revision: 1.29 $
    * @depend  1.1.3
    * @license GPL
    */
  @@ -430,17 +430,18 @@
           $pi=&$formatter->pi;
           #$formatter->set_wordrule($pi);
   
  +        $myarg = '';
           if ($body{0}=='#' and $body{1}=='!') {
               list($line,$body)=explode("\n",$body,2);
               $dum=preg_split('/\s+/',$line);
  -            $myarg=$dum[1];
  +            if (!empty($dum[1])) $myarg=$dum[1];
           }
   
           $my_divopen='';
           $my_divclose='';
  -        if (isset($myarg)) {
  -            if ($myarg{0}=='.') $my_type='class';
  -            else if ($myarg{0}=='#') $my_type='id';
  +        if (!empty($myarg)) {
  +            if ($myarg[0]=='.') $my_type='class';
  +            else if ($myarg[0]=='#') $my_type='id';
               if (isset($my_type)) {
                   $my_name=substr($myarg,1);
                   $my_divopen="<div $my_type='$my_name'>";
  @@ -518,8 +519,7 @@
                           $anchor_id='sect-'.$sect_num;
                           $anchor="<a id='$anchor_id'></a>";
                       }
  -
  -                    if (!empty($sect_num) and $sect_num >1) $out.=$this->_div(0);
  +                    if (!empty($formatter->sect_num) and $formatter->sect_num >1) $out.=$this->_div(0);
                       $out.=$this->_div(1," class='level$c[depth]'");
                       $out.= $anchor.$ed.$formatter->head_repl($c['depth'],$val,$headinfo);
                       break;
  @@ -655,7 +655,7 @@
               $out.=$this->_list(0,$_lityp[$_li]);
               --$_li;
           }
  -        if ($formatter->sect_num >1) $out.=$this->_div(0);
  +        if (!empty($formatter->sect_num) and $formatter->sect_num >1) $out.=$this->_div(0);
   
           if (!empty($formatter->use_smileys) and empty($formatter->smiley_rule))
               $formatter->initSmileys();
  
  
  


1281966765;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv19412\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315557] fixed last change for pagenate\n\n
wkpark      2010/08/16 22:52:45

  Modified:    .        wikilib.php
  Log:
  [#315557] fixed last change for pagenate
  
  Revision  Changes    Path
  1.325     +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.324
  retrieving revision 1.325
  diff -u -r1.324 -r1.325
  --- wikilib.php	16 Aug 2010 10:22:00 -0000	1.324
  +++ wikilib.php	16 Aug 2010 13:52:45 -0000	1.325
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.324 2010/08/16 10:22:00 wkpark Exp $
  +// $Id: wikilib.php,v 1.325 2010/08/16 13:52:45 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2941,7 +2941,7 @@
     }
   
     $pnut = null;
  -  if (count($all_pages) > $pc) {
  +  if (!empty($sel) and count($all_pages) > $pc) {
       $pages_number = intval(count($all_pages) / $pc);
       if (count($all_pages) % $pc)
         $pages_number++;
  
  
  


1281979870;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv21406\n\nModified Files:\n	wiki.php \nLog Message:\n[#315579] oops! add a missing patch at r1.564 to reduce system calls\n\n
wkpark      2010/08/17 02:31:11

  Modified:    .        wiki.php
  Log:
  [#315579] oops! add a missing patch at r1.564 to reduce system calls
  
  Revision  Changes    Path
  1.565     +5 -5      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.564
  retrieving revision 1.565
  diff -u -r1.564 -r1.565
  --- wiki.php	16 Aug 2010 07:06:53 -0000	1.564
  +++ wiki.php	16 Aug 2010 17:31:10 -0000	1.565
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.564 2010/08/16 07:06:53 wkpark Exp $
  +// $Id: wiki.php,v 1.565 2010/08/16 17:31:10 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.564 $',1,-1);
  +$_revision = substr('$Revision: 1.565 $',1,-1);
   $_release = '1.1.5-RC3';
   
   #ob_start("ob_gzhandler");
  @@ -943,7 +943,7 @@
       set_time_limit(isset($this->time_limit) ? intval($this->time_limit) : 30);
       if (empty($options)) {
         while (($file = readdir($handle)) !== false) {
  -        if (is_dir($this->text_dir."/".$file)) continue;
  +        if ((($p = strpos($file, '.')) !== false or $file == 'RCS' or $file == 'CVS') and is_dir($file)) continue;
           $pages[] = $this->keyToPagename($file);
         }
         closedir($handle);
  @@ -952,7 +952,7 @@
         return $pages;
       } else if (!empty($options['limit'])) { # XXX
          while (($file = readdir($handle)) !== false) {
  -          if (is_dir($this->text_dir."/".$file)) continue;
  +          if ((($p = strpos($file, '.')) !== false or $file == 'RCS' or $file == 'CVS') and is_dir($file)) continue;
             if (filemtime($this->text_dir."/".$file) > $options['limit'])
                $pages[] = $this->keyToPagename($file);
          }
  @@ -967,7 +967,7 @@
          closedir($handle);
       } else if ($options['date']) {
          while (($file = readdir($handle)) !== false) {
  -          if (is_dir($this->text_dir."/".$file)) continue;
  +          if ((($p = strpos($file, '.')) !== false or $file == 'RCS' or $file == 'CVS') and is_dir($file)) continue;
             $mtime=filemtime($this->text_dir."/".$file);
             $pagename= $this->keyToPagename($file);
             $pages[$pagename]= $mtime;
  
  
  


1282125251;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv25833\n\nModified Files:\n	wiki.php \nLog Message:\n[#315608] support '''{{{nowiki}}}''' like syntax correctly.\n\n
wkpark      2010/08/18 18:54:13

  Modified:    .        wiki.php
  Log:
  [#315608] support '''{{{nowiki}}}''' like syntax correctly.
  
  Revision  Changes    Path
  1.566     +21 -9     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.565
  retrieving revision 1.566
  diff -u -r1.565 -r1.566
  --- wiki.php	16 Aug 2010 17:31:10 -0000	1.565
  +++ wiki.php	18 Aug 2010 09:54:10 -0000	1.566
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.565 2010/08/16 17:31:10 wkpark Exp $
  +// $Id: wiki.php,v 1.566 2010/08/18 09:54:10 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.565 $',1,-1);
  +$_revision = substr('$Revision: 1.566 $',1,-1);
   $_release = '1.1.5-RC3';
   
   #ob_start("ob_gzhandler");
  @@ -2041,6 +2041,8 @@
       # solw slow slow
       #(?P<word>(?:/?[A-Z]([a-z0-9]+|[A-Z]*(?=[A-Z][a-z0-9]|\b))){2,})
       $this->wordrule=
  +    # nowiki
  +    "({{{(?:(?:[^{}]+|(?<!{){{1,2}(?!{)|(?<!})}{1,2}(?!}))|(?1))+}}})|".
       # single bracketed rule [http://blah.blah.com Blah Blah]
       "(?:\[\^?($url):[^\s\]]+(?:\s[^\]]+)?\])|".
       # InterWiki
  @@ -3687,8 +3689,7 @@
       $_myindlen=array(0);
       $oline='';
   
  -    $wordrule="({{{(?:(?:[^{}]+|(?<!{){{1,2}(?!{)|(?<!})}{1,2}(?!}))|(?1))+}}})|".
  -              "\[\[(?:[A-Za-z0-9]+(?:\((?:(?<!\]\]).)*\))?)\]\]|". # macro
  +    $wordrule="\[\[(?:[A-Za-z0-9]+(?:\((?:(?<!\]\]).)*\))?)\]\]|". # macro
                 "<<(?:[A-Za-z0-9]+(?:\((?:(?<!\>\>).)*\))?)>>|"; # macro
       if ($DBInfo->inline_latex) # single line latex syntax
         $wordrule.="(?<=\s|^|>)\\$(?!(?:Id|Revision))(?:[^\\$]+)\\$(?=\s|\.|\,|$)|".
  @@ -3838,16 +3839,27 @@
                             )+}}})/x",$line,-1,PREG_SPLIT_DELIM_CAPTURE);
         $nc='';
         $k=1;
  +      $idx=1;
  +      $inline = array(); // save inline nowikis
         foreach ($chunk as $c) {
           if ($k%2) {
  -          $nc.=preg_replace($this->baserule,$this->baserepl,$c);
  +          $nc.= $c;
           } else if (in_array($c[3],array('#','-','+'))) { # {{{#color text}}}
  -          $nc.=preg_replace($this->baserule,$this->baserepl,$c);
  -        } else $nc.=$c;
  +          $nc.= $c;
  +        } else {
  +          $inline[$idx] = $c;
  +          $nc.= "\017".$idx."\017";
  +          $idx++;
  +        }
           $k++;
         }
  -      $line=$nc;
  -      #$line=preg_replace($this->baserule,$this->baserepl,$line);
  +      $line = $nc;
  +      $line = preg_replace($this->baserule,$this->baserepl,$line);
  +
  +      // restore inline nowikis
  +      if (!empty($inline))
  +        $line = preg_replace("/\017(\d+)\017/e", "\$inline[\\1]", $line);
  +      
         #if ($in_p and ($in_pre==1 or $in_li)) $line=$this->_check_p().$line;
   
         # bullet and indentation
  
  
  


1282149374;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv28206\n\nModified Files:\n	wiki.php \nLog Message:\n[#315608] * protect smiley rendering for {{{:)}}} , `:)`\n * cleanup last changes.\n\n
wkpark      2010/08/19 01:36:15

  Modified:    .        wiki.php
  Log:
  [#315608] * protect smiley rendering for {{{:)}}} , `:)`
   * cleanup last changes.
  
  Revision  Changes    Path
  1.567     +39 -18    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.566
  retrieving revision 1.567
  diff -u -r1.566 -r1.567
  --- wiki.php	18 Aug 2010 09:54:10 -0000	1.566
  +++ wiki.php	18 Aug 2010 16:36:14 -0000	1.567
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.566 2010/08/18 09:54:10 wkpark Exp $
  +// $Id: wiki.php,v 1.567 2010/08/18 16:36:14 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.566 $',1,-1);
  +$_revision = substr('$Revision: 1.567 $',1,-1);
   $_release = '1.1.5-RC3';
   
   #ob_start("ob_gzhandler");
  @@ -3837,23 +3837,27 @@
                           (?<!{){{1,2}(?!{)|
                           (?<!})}{1,2}(?!}))|(?1)
                             )+}}})/x",$line,-1,PREG_SPLIT_DELIM_CAPTURE);
  -      $nc='';
  -      $k=1;
  -      $idx=1;
         $inline = array(); // save inline nowikis
  -      foreach ($chunk as $c) {
  -        if ($k%2) {
  -          $nc.= $c;
  -        } else if (in_array($c[3],array('#','-','+'))) { # {{{#color text}}}
  -          $nc.= $c;
  -        } else {
  -          $inline[$idx] = $c;
  -          $nc.= "\017".$idx."\017";
  -          $idx++;
  +
  +      if (count($chunk) > 1) {
  +        // protect inline nowikis
  +        $nc = '';
  +        $k = 1;
  +        $idx = 1;
  +        foreach ($chunk as $c) {
  +          if ($k % 2) {
  +            $nc.= $c;
  +          } else if (in_array($c[3],array('#','-','+'))) { # {{{#color text}}}
  +            $nc.= $c;
  +          } else {
  +            $inline[$idx] = $c;
  +            $nc.= "\017".$idx."\017";
  +            $idx++;
  +          }
  +          $k++;
           }
  -        $k++;
  +        $line = $nc;
         }
  -      $line = $nc;
         $line = preg_replace($this->baserule,$this->baserepl,$line);
   
         // restore inline nowikis
  @@ -4086,8 +4090,25 @@
         if (!empty($this->use_smileys) and empty($this->smiley_rule))
           $this->initSmileys();
   
  -      if (!empty($this->smiley_rule))
  -        $line=preg_replace($this->smiley_rule,$this->smiley_repl,$line);
  +      if (!empty($this->smiley_rule)) {
  +        $chunk = preg_split("@(<tt[^>]*>.*</tt>)@", $line, -1, PREG_SPLIT_DELIM_CAPTURE);
  +        if (count($chunk) > 1) {
  +          $nline = '';
  +          $k = 1;
  +          foreach ($chunk as $c) {
  +            if ($k % 2) {
  +              if (isset($c[0]))
  +                $nline.= preg_replace($this->smiley_rule, $this->smiley_repl, $c);
  +            } else {
  +              $nline.= $c;
  +            }
  +            $k++;
  +          }
  +          $line = $nline;
  +        } else {
  +          $line = preg_replace($this->smiley_rule, $this->smiley_repl, $line);
  +        }
  +      }
         # NoSmoke's MultiLineCell hack
         #$line=preg_replace(array("/{{\|/","/\|}}/"),
         #      array("</div><table class='closure'><tr class='closure'><td class='closure'><div>","</div></td></tr></table><div>"),$line);
  
  
  


1282149705;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin/processor\nIn directory kill.kldp.net:/tmp/cvs-serv29746/plugin/processor\n\nModified Files:\n	monimarkup.php \nLog Message:\n[#315609] cleanup monimarkup processor\n\n
wkpark      2010/08/19 01:41:46

  Modified:    plugin/processor monimarkup.php
  Log:
  [#315609] cleanup monimarkup processor
  
  Revision  Changes    Path
  1.30      +38 -33    moniwiki/plugin/processor/monimarkup.php
  
  Index: monimarkup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/monimarkup.php,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- monimarkup.php	16 Aug 2010 11:07:19 -0000	1.29
  +++ monimarkup.php	18 Aug 2010 16:41:45 -0000	1.30
  @@ -3,12 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a moniwiki formatting processor for the MoniWiki
   //
  -// $Id: monimarkup.php,v 1.29 2010/08/16 11:07:19 wkpark Exp $
  +// $Id: monimarkup.php,v 1.30 2010/08/18 16:41:45 wkpark Exp $
   /**
    * @date    2006-08-09
    * @name    Moniwiki Processor
    * @desc    Moniwiki default processor
  - * @version $Revision: 1.29 $
  + * @version $Revision: 1.30 $
    * @depend  1.1.3
    * @license GPL
    */
  @@ -61,14 +61,14 @@
                               list($type,$dum)= explode("\n",$block[$j],2);
                               $tag='';
                               if (!empty($type)) {
  -                                if ($type{0}=='#' and $type{1}=='!') {
  +                                if ($type[0]=='#' and $type{1}=='!') {
                                       #list($tag,$dummy)= explode(' ',$type);
                                       $tmp = explode(' ',$type);
                                       $tag = $tmp[0];
                                       $btype[$j]=substr($tag,2);
                                       if ($btype[$j] == 'wiki')
                                           $btype[$j] = 'monimarkup';
  -                                } else if ($type{0} == ':') {
  +                                } else if ($type[0] == ':') {
                                       # for a quote block
                                       $block[$j]=substr($block[$j],1);
                                       $arg= substr($type,1);
  @@ -116,15 +116,12 @@
               $my['value']=$line;
               $my['depth']=$depth;
               return $my;
  -        } else {
  -            return $line;
           }
  +        return $line;
       }
   
  -    function _pass2($text)
  +    function _pass2($text, &$chunk)
       {
  -        $lines=explode("\n",$text);
  -        $chunk=array();
           $indlen=0;
           $myindlen=0;
           $_indlen=array(0);
  @@ -134,8 +131,14 @@
           $_in_li=0;
           $_eop=0; // end of paragraph
           $oline=null;
  +
  +        $lines = explode("\n", $text);
  +        $l = end($lines);
  +        if (!isset($l[0]))
  +            array_pop($lines);
           foreach ($lines as $line) {
               $tr=strlen(trim($line));
  +            // concat lines with tailing '&' char
               if (substr($line,-1) == '&') { $oline.="\n".$line; continue; }
               if (empty($oline) and preg_match('/^\s*\|\|/',$line)
                       and !preg_match('/(\|\||\|-+)\s*$/',$line)) {
  @@ -144,7 +147,8 @@
               } else if (!empty($oline) and preg_match('/^\s*\|\|/',$oline)) {
                   if ( !preg_match('/(\|\||\|-+)\s*$/',$oline)
                           and !preg_match('/^(={1,6})\s+.*(\1)\s*$/',$line)) {
  -                    $oline.="\n".$line; continue;
  +                    $oline.="\n".$line;
  +                    continue;
                   } else if (!$tr) {
                       $oline.="\n".$line;
                       if ($_indlen[$_in_li]) {
  @@ -165,7 +169,8 @@
                       $_eop=1;
                   }
                   continue;
  -            } else if (preg_match("/^([ ]*(={1,5})\s(.*\s*)\s\\2\s?)$/",$line,$m)) {
  +            }
  +            if (preg_match("/^([ ]*(={1,5})\s(.*\s*)\s\\2\s?)$/",$line,$m)) {
                   $tag='HEAD';
                   $depth=strlen($m[2]);
                   if ($oline)
  @@ -203,8 +208,8 @@
                       $myindlen=$indlen+strlen($m[1])-(isset($m[4]) ? strlen($m[4]):0);
                       $type=!empty($m[2]) ? 'ul':$m[3];
                       $mytype['type']=$type;
  -                    $start=isset($m[4]) ? $m[4]:(isset($m[3]) ? $m[3]:null);
  -                    if (isset($start) and is_numeric($start) and $start > 1)
  +                    $start=isset($m[4]) ? $m[4]:(isset($m[3]) ? $m[3]:'');
  +                    if (!empty($start) and is_numeric($start) and $start > 1)
                           $mytype['attributes']=array('start'=>$start);
                       $cutline=substr($cutline,strlen($m[1]));
                       $indtype='li';
  @@ -345,8 +350,8 @@
                   continue;
               }
               $tr_diff='';
  -            if ($line{0}== "\010" or $line{1}=="\006") {
  -                $tr_diff=$line{0} == "\010" ? 'diff-added':'diff-removed';
  +            if ($line[0]== "\010" or $line{1}=="\006") {
  +                $tr_diff=$line[0] == "\010" ? 'diff-added':'diff-removed';
                   $line=substr($line,1,-1);
               }
               $open = '';
  @@ -377,7 +382,7 @@
                       if ($m[3] and $m[5]) $align='center';
                       else if (!$m[3]) $align='';
                       else if (!$m[5]) $align='right';
  -                    if (isset($cell{0}) and $cell{strlen($cell)-1} == "\n")
  +                    if (isset($cell[0]) and $cell[strlen($cell)-1] == "\n")
                           $cell = substr($cell,0,-1).' '; // XXX
                       #$cell=str_replace("\n","<br />\n",$cell);
                       if (strpos($cell,"\n")) {
  @@ -417,6 +422,15 @@
                            '='=>'text-align:center',
                            '>'=>'text-align:right');
   
  +        # for headings
  +        if (!empty($options['notoc'])) {
  +            $headinfo = null;
  +        } else {
  +            $headinfo['top'] = 0;
  +            $headinfo['num'] = 1;
  +            $headinfo['dep'] = 0;
  +        }
  +
           $inline=array();
           $block=array();
           $btype=array();
  @@ -431,7 +445,7 @@
           #$formatter->set_wordrule($pi);
   
           $myarg = '';
  -        if ($body{0}=='#' and $body{1}=='!') {
  +        if ($body[0]=='#' and $body[1]=='!') {
               list($line,$body)=explode("\n",$body,2);
               $dum=preg_split('/\s+/',$line);
               if (!empty($dum[1])) $myarg=$dum[1];
  @@ -448,8 +462,7 @@
                   $my_divclose='</div>';
               }
           }
  -        $wordrule="({{{(?:(?:[^{}]+|(?<!{){{1,2}(?!{)|(?<!})}{1,2}(?!}))|(?1))+}}})|".
  -              "\[\[(?:[A-Za-z0-9]+(?:\((?:(?<!\]\]).)*\))?)\]\]|". # macro
  +        $wordrule = "\[\[(?:[A-Za-z0-9]+(?:\((?:(?<!\]\]).)*\))?)\]\]|". # macro
                 "<<(?:[A-Za-z0-9]+(?:\((?:(?<!>>).)*\))?)>>|"; # macro
   
           if ($Config['inline_latex']) # single line latex syntax
  @@ -462,20 +475,12 @@
           # 1-pass
           list($body,$inline,$block,$btype)=$this->_pass1($body);
           # 2-pass
  -        $chunk=$this->_pass2($body);
  +        $chunk = array();
  +        $this->_pass2($body, $chunk);
   
           #print "<pre>";print_r($chunk);print "</pre>";
           $hr_func=$Config['hr_type'].'_hr';
   
  -        # heading info
  -        if (isset($options['notoc'])) {
  -            $headinfo = null;
  -        } else {
  -            $headinfo['top'] = 0;
  -            $headinfo['num'] = 1;
  -            $headinfo['dep'] = 0;
  -        }
  -
           # list info
           $_lidep=array(0);
           $_lityp=array(0);
  @@ -532,9 +537,9 @@
                       $type=$c['type'];
                       $linfo='';
                       $listy='';
  -                    if ($type!='ul' and $type{0} !='d')
  +                    if ($type!='ul' and $type[0] !='d')
                           $linfo=!empty($c['attributes']['start']) ? $c['attributes']['start']:'';
  -                    else if ($type{0}=='d') {
  +                    else if ($type[0]=='d') {
                           $linfo=!empty($c['attributes']['class']) ? $c['attributes']['class']:'';
                           if (preg_match('/^((\s*)(&lt;|=|>)?{([^}]+)})/s',$val,
                                   $sty)) {
  @@ -679,7 +684,7 @@
       {
           $close=$on ? '':'/';
           $litype='';
  -        if ($type{0}=='d') {
  +        if ($type[0]=='d') {
               if ($on) {
                   $attr=$linfo ?  " class='$linfo'":" class='indent'";
                   return "<blockquote$attr>\n";
  @@ -705,7 +710,7 @@
   
       function _li($on,$type='',$start=null,$sty='')
       {
  -        if ($type{0}=='d') {
  +        if ($type[0]=='d') {
               if ($sty) $sty=' style="'.$sty.'"';
               return $on ? "<div$sty>":"</div>\n";
           }
  
  
  


1282149801;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin/processor\nIn directory kill.kldp.net:/tmp/cvs-serv29805/plugin/processor\n\nModified Files:\n	monimarkup.php \nLog Message:\n[#315609] save/restore section number correctly\n\n
wkpark      2010/08/19 01:43:22

  Modified:    plugin/processor monimarkup.php
  Log:
  [#315609] save/restore section number correctly
  
  Revision  Changes    Path
  1.31      +5 -2      moniwiki/plugin/processor/monimarkup.php
  
  Index: monimarkup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/monimarkup.php,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- monimarkup.php	18 Aug 2010 16:41:45 -0000	1.30
  +++ monimarkup.php	18 Aug 2010 16:43:21 -0000	1.31
  @@ -3,12 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a moniwiki formatting processor for the MoniWiki
   //
  -// $Id: monimarkup.php,v 1.30 2010/08/18 16:41:45 wkpark Exp $
  +// $Id: monimarkup.php,v 1.31 2010/08/18 16:43:21 wkpark Exp $
   /**
    * @date    2006-08-09
    * @name    Moniwiki Processor
    * @desc    Moniwiki default processor
  - * @version $Revision: 1.30 $
  + * @version $Revision: 1.31 $
    * @depend  1.1.3
    * @license GPL
    */
  @@ -440,6 +440,8 @@
           $formatter=&$this->formatter;
           $old_text = $formatter->text;
           $formatter->text = $this->text;
  +        $save_sect_num = $formatter->sect_num;
  +        $formatter->sect_num = 0;
   
           $pi=&$formatter->pi;
           #$formatter->set_wordrule($pi);
  @@ -677,6 +679,7 @@
                   "\$formatter->link_repl(\$inline[$1])",$out);
   
           $formatter->text = $old_text;
  +        $formatter->sect_num = $save_sect_num;
           return $my_divopen.$out.$my_divclose;
       }
   
  
  
  


1282149951;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv30597/plugin\n\nModified Files:\n	Fortune.php \nLog Message:\nadd a missing global $DBInfo;\n\n
wkpark      2010/08/19 01:45:52

  Modified:    plugin   Fortune.php
  Log:
  add a missing global $DBInfo;
  
  Revision  Changes    Path
  1.5       +3 -1      moniwiki/plugin/Fortune.php
  
  Index: Fortune.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Fortune.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Fortune.php	16 Aug 2010 11:07:19 -0000	1.4
  +++ Fortune.php	18 Aug 2010 16:45:51 -0000	1.5
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Fortune(science)]]
   //
  -// $Id: Fortune.php,v 1.4 2010/08/16 11:07:19 wkpark Exp $
  +// $Id: Fortune.php,v 1.5 2010/08/18 16:45:51 wkpark Exp $
   
   function macro_FortuneSystem($formatter,$value) {
       $ret= exec(escapeshellcmd("/usr/bin/fortune $value"),$log);
  @@ -16,6 +16,8 @@
   define('DEFAULT_FORTUNE','art');
   
   function macro_Fortune($formatter,$value,$options) {
  +    global $DBInfo;
  +
       $cat=$value;
       $dir='/usr/share/games/fortune';
       if (!empty($DBInfo->fortune_dir)) $dir = $DBInfo->fortune_dir;
  
  
  


1282150690;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv30774/plugin\n\nModified Files:\n	login.php \nLog Message:\n[#315590] wrap the logout button with a span tag\n\n
wkpark      2010/08/19 01:58:11

  Modified:    plugin   login.php
  Log:
  [#315590] wrap the logout button with a span tag
  
  Revision  Changes    Path
  1.14      +4 -2      moniwiki/plugin/login.php
  
  Index: login.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/login.php,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- login.php	14 Aug 2010 05:55:21 -0000	1.13
  +++ login.php	18 Aug 2010 16:58:10 -0000	1.14
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Login]]
   //
  -// $Id: login.php,v 1.13 2010/08/14 05:55:21 wkpark Exp $
  +// $Id: login.php,v 1.14 2010/08/18 16:58:10 wkpark Exp $
   
   function macro_login($formatter,$value="",$options="") {
     global $DBInfo;
  @@ -53,11 +53,13 @@
   
     $button=_("Logout");
     $option=_("UserPreferences");
  +  $msg = sprintf(_("%s or %s"), "<a href='$url'>$option</a>",
  +    "<span class='button'><input type='submit' class='button' name='logout' value='$button' /></span>");
     return <<<LOGOUT
   <div id='wikiLogin'>
   <form method='post' action='$urlpage'>
   <input type="hidden" name="action" value="userform" />
  -<a href='$url'>$option</a> or <input type='submit' name="logout" value="$button"/>
  +$msg
   </form>
   </div>
   LOGOUT;
  
  
  


1282155864;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv17392\n\nModified Files:\n	wiki.php wikilib.php \nLog Message:\n[#315557] allow "0" as a queary val\n\n
1282155864;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv17392/plugin\n\nModified Files:\n	FastSearch.php FullSearch.php \nLog Message:\n[#315557] allow "0" as a queary val\n\n
wkpark      2010/08/19 03:24:25

  Modified:    .        wiki.php wikilib.php
               plugin   FastSearch.php FullSearch.php
  Log:
  [#315557] allow "0" as a queary val
  
  Revision  Changes    Path
  1.568     +9 -9      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.567
  retrieving revision 1.568
  diff -u -r1.567 -r1.568
  --- wiki.php	18 Aug 2010 16:36:14 -0000	1.567
  +++ wiki.php	18 Aug 2010 18:24:23 -0000	1.568
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.567 2010/08/18 16:36:14 wkpark Exp $
  +// $Id: wiki.php,v 1.568 2010/08/18 18:24:23 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.567 $',1,-1);
  +$_revision = substr('$Revision: 1.568 $',1,-1);
   $_release = '1.1.5-RC3';
   
   #ob_start("ob_gzhandler");
  @@ -5384,8 +5384,8 @@
       if ($_SERVER['PATH_INFO'][0] == '/')
         $pagename=substr($_SERVER['PATH_INFO'],1);
     } else if (!empty($_SERVER['QUERY_STRING'])) {
  -    $goto=!empty($_POST['goto']) ? $_POST['goto']:(!empty($_GET['goto']) ? $_GET['goto'] : '');
  -    if (!empty($goto)) $pagename=$goto;
  +    $goto=isset($_POST['goto'][0]) ? $_POST['goto']:(isset($_GET['goto'][0]) ? $_GET['goto'] : '');
  +    if (isset($goto[0])) $pagename=$goto;
       else {
         $pagename = $_SERVER['QUERY_STRING'];
         $temp = strtok($pagename,"&");
  @@ -5579,8 +5579,8 @@
       if (isset($_POST['header'])) unset($_POST['header']);
   
       $action=!empty($_GET['action']) ? $_GET['action'] : '';
  -    $value=!empty($_GET['value']) ? $_GET['value'] : '';
  -    $goto=!empty($_GET['goto']) ? $_GET['goto'] : '';
  +    $value=isset($_GET['value'][0]) ? $_GET['value'] : '';
  +    $goto=isset($_GET['goto'][0]) ? $_GET['goto'] : '';
       $rev=!empty($_GET['rev']) ? $_GET['rev'] : '';
       if ($options['id'] == 'Anonymous')
         $refresh = 0;
  @@ -5648,11 +5648,11 @@
     }
   
     while (empty($action) or $action=='show') {
  -    if (!empty($value)) { # ?value=Hello
  +    if (isset($value[0])) { # ?value=Hello
         $options['value']=$value;
         do_goto($formatter,$options);
         return true;
  -    } else if (!empty($goto)) { # ?goto=Hello
  +    } else if (isset($goto[0])) { # ?goto=Hello
         $options['value']=$goto;
         do_goto($formatter,$options);
         return true;
  @@ -5978,7 +5978,7 @@
         if ($_SERVER['REQUEST_METHOD']=="POST")
           $options=array_merge($_POST,$options);
         else { # do_post_* set some primary variables as $options
  -        $options['value']=!empty($_GET['value']) ? $_GET['value'] : '';
  +        $options['value']=isset($_GET['value'][0]) ? $_GET['value'] : '';
         }
         call_user_func("do_post_$plugin",$formatter,$options);
         return;
  
  
  
  1.326     +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.325
  retrieving revision 1.326
  diff -u -r1.325 -r1.326
  --- wikilib.php	16 Aug 2010 13:52:45 -0000	1.325
  +++ wikilib.php	18 Aug 2010 18:24:24 -0000	1.326
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.325 2010/08/16 13:52:45 wkpark Exp $
  +// $Id: wikilib.php,v 1.326 2010/08/18 18:24:24 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1571,7 +1571,7 @@
         unset($options['value']);
       }
     }
  -  if ($options['value']) {
  +  if (isset($options['value'][0])) {
        $url=_stripslashes(trim($options['value']));
        $url=_rawurlencode($url);
        if ($options['redirect'])
  
  
  
  1.20      +2 -2      moniwiki/plugin/FastSearch.php
  
  Index: FastSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FastSearch.php,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- FastSearch.php	13 Aug 2010 16:00:22 -0000	1.19
  +++ FastSearch.php	18 Aug 2010 18:24:24 -0000	1.20
  @@ -13,7 +13,7 @@
   //
   // Usage: [[FastSearch(string)]]
   //
  -// $Id: FastSearch.php,v 1.19 2010/08/13 16:00:22 wkpark Exp $
  +// $Id: FastSearch.php,v 1.20 2010/08/18 18:24:24 wkpark Exp $
   
   include_once('lib/indexer.DBA.php');
   
  @@ -45,7 +45,7 @@
      </form>
   EOF;
   
  -  if (!$needle) { # or blah blah
  +  if (!isset($needle[0])) { # or blah blah
        $opts['msg'] = _("No search text");
        return $form;
     }
  
  
  
  1.37      +7 -6      moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- FullSearch.php	13 Aug 2010 16:00:22 -0000	1.36
  +++ FullSearch.php	18 Aug 2010 18:24:24 -0000	1.37
  @@ -3,14 +3,14 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
   //
  -// $Id: FullSearch.php,v 1.36 2010/08/13 16:00:22 wkpark Exp $
  +// $Id: FullSearch.php,v 1.37 2010/08/18 18:24:24 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
     $ret=&$options;
   
     $options['value']=_stripslashes($options['value']);
  -  if (!$options['value']) $options['value']=$formatter->page->name;
  +  if (!isset($options['value'][0])) $options['value']=$formatter->page->name;
     if (!empty($options['backlinks']))
       $title= sprintf(_("BackLinks search for \"%s\""), $options['value']);
     else if (!empty($options['keywords']))
  @@ -33,7 +33,7 @@
     else if (!empty($options['keywords']))
       $qext='&amp;keywords=1';
   
  -  if (!empty($options['value'])) {
  +  if (isset($options['value'][0])) {
       $val=htmlspecialchars($options['value']);
       printf(_("Found %s matching %s out of %s total pages")."<br />",
            $ret['hit'],
  @@ -86,7 +86,7 @@
      </form>
   EOF;
   
  -  if (!$needle or !empty($opts['form'])) { # or blah blah
  +  if (!isset($needle[0]) or !empty($opts['form'])) { # or blah blah
        $opts['msg'] = _("No search text");
        return $form;
     }
  @@ -114,7 +114,7 @@
           $len=strlen($word);
   
           if (!$match[1] and $match[2] != '"') {
  -          if ($len <= $tooshort or in_array($word,$common_words)) {
  +          if ($len < $tooshort or in_array($word,$common_words)) {
               $common[]=$word;
               continue;
             }
  @@ -136,7 +136,8 @@
     }
   
     $test=@preg_match("/$needle/","",$match);
  -  if (!trim($needle)) {
  +  $test3 = trim($needle);
  +  if (!isset($test3[0])) {
        $opts['msg'] = _("Empty expression");
        return $form;
     }
  
  
  


1282206659;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv24594\n\nModified Files:\n	wiki.php \nLog Message:\n[#315608] fixed last changes at r1.566 to support textile like styling\n\n
wkpark      2010/08/19 17:31:00

  Modified:    .        wiki.php
  Log:
  [#315608] fixed last changes at r1.566 to support textile like styling
  
  Revision  Changes    Path
  1.569     +4 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.568
  retrieving revision 1.569
  diff -u -r1.568 -r1.569
  --- wiki.php	18 Aug 2010 18:24:23 -0000	1.568
  +++ wiki.php	19 Aug 2010 08:30:59 -0000	1.569
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.568 2010/08/18 18:24:23 wkpark Exp $
  +// $Id: wiki.php,v 1.569 2010/08/19 08:30:59 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.568 $',1,-1);
  +$_revision = substr('$Revision: 1.569 $',1,-1);
   $_release = '1.1.5-RC3';
   
   #ob_start("ob_gzhandler");
  @@ -2042,7 +2042,7 @@
       #(?P<word>(?:/?[A-Z]([a-z0-9]+|[A-Z]*(?=[A-Z][a-z0-9]|\b))){2,})
       $this->wordrule=
       # nowiki
  -    "({{{(?:(?:[^{}]+|(?<!{){{1,2}(?!{)|(?<!})}{1,2}(?!}))|(?1))+}}})|".
  +    "({{{(?:(?:[^{}]+|{[^{}]+}(?!})|(?<!{){{1,2}(?!{)|(?<!})}{1,2}(?!}))|(?1))+}}})|".
       # single bracketed rule [http://blah.blah.com Blah Blah]
       "(?:\[\^?($url):[^\s\]]+(?:\s[^\]]+)?\])|".
       # InterWiki
  @@ -3834,6 +3834,7 @@
         // split into chunks
         $chunk=preg_split("/({{{
                           (?:(?:[^{}]+|
  +                        {[^{}]+}(?!})|
                           (?<!{){{1,2}(?!{)|
                           (?<!})}{1,2}(?!}))|(?1)
                             )+}}})/x",$line,-1,PREG_SPLIT_DELIM_CAPTURE);
  
  
  


1282210838;wkpark;Update of /cvsroot/moniwiki/moniwiki/tools\nIn directory kill.kldp.net:/tmp/cvs-serv4471/tools\n\nAdded Files:\n	cleaner.php \nLog Message:\n[#315427] add a simple cache cleaner\n\n
wkpark      2010/08/19 18:40:39

  Added:       tools    cleaner.php
  Log:
  [#315427] add a simple cache cleaner
  
  Revision  Changes    Path
  1.1                  moniwiki/tools/cleaner.php
  
  Index: cleaner.php
  ===================================================================
  <?php
  /**
   * Delete caches
   *
   * @since     2010/08/19
   * @author    Won-Kyu Park <wkpark@kldp.org>
   * @revision  $Id: cleaner.php,v 1.1 2010/08/19 09:40:38 wkpark Exp $
   */
  
  define('INC_MONIWIKI',1);
  include_once(dirname(__FILE__) . '/../wiki.php');
  
  // Start Main
  $Config = getConfig("config.php");
  include(dirname(__FILE__) . '/../wikilib.php');
  include(dirname(__FILE__) . '/../lib/win32fix.php');
  
  $DBInfo = new WikiDB($Config);
  
  $options = array();
  $timing = new Timer();
  $options['timer'] = &$timing;
  $options['timer']->Check("load");
  
  //
  $cache_arenas = array('fullsearch', 'macro', 'dynamicmacros');
  $check_date = 30;
  
  //
  $checktime = time() - $check_date * 60 * 60;
  
  foreach ($cache_arenas as $arena) {
      echo '** cleanup '.$arena."\n";
      $dir = $DBInfo->cache_dir.'/'.$arena;
      $count = clean_dir($dir, $cachetime);
      echo '** ' . $arena. ': Total ' . $count . " files are deleted! \n";
  }
  
  function clean_dir($dir, $cachetime = 0) {
      $handle = opendir($dir);
      if (!is_resource($handle)) return 0;
  
      echo '*** ' . $dir . "\n";
      $count = 0;
      while(($file = readdir($handle)) !== false) {
          if ((($p = strpos($file, '.')) !== false or $file == 'RCS' or $file == 'CVS') and is_dir($dir . '/' . $file)) continue;
          if (is_dir($dir . '/' . $file)) {
              $count+= clean_dir($dir . '/' . $file, $cachetime);
              continue;
          }
          $mtime = filemtime($dir . '/' . $file);
          #print $dir . '/' . $file . ' ' . $mtime . "\n";
          if ($mtime < $checktime) {
              $count++;
              #print $file . ' ' . "\n";
              unlink($dir . '/' . $file);
          }
      }
      closedir($handle);
      return $count; // return the number of deleted files
  }
  
  // vim:et:sts=4:sw=4:
  
  
  


1282211218;wkpark;Update of /cvsroot/moniwiki/moniwiki/tools\nIn directory kill.kldp.net:/tmp/cvs-serv5303/tools\n\nModified Files:\n	cleaner.php \nLog Message:\n[#315427] oops! fixed last change\n\n
wkpark      2010/08/19 18:46:59

  Modified:    tools    cleaner.php
  Log:
  [#315427] oops! fixed last change
  
  Revision  Changes    Path
  1.2       +4 -4      moniwiki/tools/cleaner.php
  
  Index: cleaner.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/tools/cleaner.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- cleaner.php	19 Aug 2010 09:40:38 -0000	1.1
  +++ cleaner.php	19 Aug 2010 09:46:58 -0000	1.2
  @@ -4,7 +4,7 @@
    *
    * @since     2010/08/19
    * @author    Won-Kyu Park <wkpark@kldp.org>
  - * @revision  $Id: cleaner.php,v 1.1 2010/08/19 09:40:38 wkpark Exp $
  + * @revision  $Id: cleaner.php,v 1.2 2010/08/19 09:46:58 wkpark Exp $
    */
   
   define('INC_MONIWIKI',1);
  @@ -32,11 +32,11 @@
   foreach ($cache_arenas as $arena) {
       echo '** cleanup '.$arena."\n";
       $dir = $DBInfo->cache_dir.'/'.$arena;
  -    $count = clean_dir($dir, $cachetime);
  +    $count = clean_dir($dir, $checktime);
       echo '** ' . $arena. ': Total ' . $count . " files are deleted! \n";
   }
   
  -function clean_dir($dir, $cachetime = 0) {
  +function clean_dir($dir, $checktime = 0) {
       $handle = opendir($dir);
       if (!is_resource($handle)) return 0;
   
  @@ -45,7 +45,7 @@
       while(($file = readdir($handle)) !== false) {
           if ((($p = strpos($file, '.')) !== false or $file == 'RCS' or $file == 'CVS') and is_dir($dir . '/' . $file)) continue;
           if (is_dir($dir . '/' . $file)) {
  -            $count+= clean_dir($dir . '/' . $file, $cachetime);
  +            $count+= clean_dir($dir . '/' . $file, $checktime);
               continue;
           }
           $mtime = filemtime($dir . '/' . $file);
  
  
  


1282285706;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv20448\n\nModified Files:\n	wiki.php config.php.default \nLog Message:\n[#315613] $whitelist support\n\n
wkpark      2010/08/20 15:28:27

  Modified:    .        wiki.php config.php.default
  Log:
  [#315613] $whitelist support
  
  Revision  Changes    Path
  1.570     +11 -4     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.569
  retrieving revision 1.570
  diff -u -r1.569 -r1.570
  --- wiki.php	19 Aug 2010 08:30:59 -0000	1.569
  +++ wiki.php	20 Aug 2010 06:28:26 -0000	1.570
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.569 2010/08/19 08:30:59 wkpark Exp $
  +// $Id: wiki.php,v 1.570 2010/08/20 06:28:26 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.569 $',1,-1);
  +$_revision = substr('$Revision: 1.570 $',1,-1);
   $_release = '1.1.5-RC3';
   
   #ob_start("ob_gzhandler");
  @@ -5626,8 +5626,15 @@
     $formatter->macro_repl('InterWiki','',array('init'=>1));
     $formatter->tz_offset=$options['tz_offset'];
   
  -  // simple black list check
  -  if (!empty($DBInfo->blacklist)) {
  +  // simple black/white list of network check
  +  $no_checkip = false;
  +  if (!empty($DBInfo->whitelist)) {
  +    include_once 'lib/checkip.php';
  +    if (check_ip($DBInfo->whitelist, $_SERVER['REMOTE_ADDR'])) {
  +      $no_checkip = true;
  +    }
  +  }
  +  if (!$no_checkip and !empty($DBInfo->blacklist)) {
       include_once 'lib/checkip.php';
       if (check_ip($DBInfo->blacklist, $_SERVER['REMOTE_ADDR'])) {
         $options['title']=_("You are in the black list");
  
  
  
  1.59      +2 -1      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.58
  retrieving revision 1.59
  diff -u -r1.58 -r1.59
  --- config.php.default	7 Aug 2010 07:32:15 -0000	1.58
  +++ config.php.default	20 Aug 2010 06:28:26 -0000	1.59
  @@ -1,7 +1,7 @@
   <?php
   # This is a default 
   #
  -# $Id: config.php.default,v 1.58 2010/08/07 07:32:15 wkpark Exp $
  +# $Id: config.php.default,v 1.59 2010/08/20 06:28:26 wkpark Exp $
   #
   $sitename='UnnamedWiki'; # site name
   $data_dir= './data';
  @@ -163,6 +163,7 @@
   
   #$url_schemas='mms';
   #$blacklist='127.0.0.0/24:192.168.1.0/24:192.168.1.67'; # block ip
  +#$whitelist='127.0.0.0/24:192.168.0'; # always allowed network
   #$kiwirian=array('Kiwirian','Hello'); # block users
   #$kiwirian='Kiwirian:Hello';
   #$delete_history=1;
  
  
  


1282285993;wkpark;Update of /cvsroot/moniwiki/moniwiki/lib\nIn directory kill.kldp.net:/tmp/cvs-serv22199/lib\n\nModified Files:\n	checkip.php \nLog Message:\n[#315613] normalize_network() function added to support more common network notation\n\n
wkpark      2010/08/20 15:33:14

  Modified:    lib      checkip.php
  Log:
  [#315613] normalize_network() function added to support more common network notation
  
  Revision  Changes    Path
  1.5       +52 -37    moniwiki/lib/checkip.php
  
  Index: checkip.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/checkip.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- checkip.php	4 Oct 2009 18:02:23 -0000	1.4
  +++ checkip.php	20 Aug 2010 06:33:13 -0000	1.5
  @@ -1,57 +1,70 @@
   <?php
  -// Copyright 2003-2004 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   //
   // See also http://kr.php.net/ip2long/
  -// $Id: checkip.php,v 1.4 2009/10/04 18:02:23 wkpark Exp $
  +// $Id: checkip.php,v 1.5 2010/08/20 06:33:13 wkpark Exp $
   // 
   
  -function is_valid_network($network)
  +function normalize_network($network)
   {
  -    $nums = explode('.', $network);
  -    if (sizeof($nums) != 4)
  -        return false;
  -    if (!preg_match('/^(\d{1,3}\.){3}\d{1,3}$/', $network))
  -        return false;
  -    foreach ($nums as $num)
  -        if ($num > 255)
  +    if (($p = strpos($network, '/')) !== false) {
  +        $tmp = explode('/', $network);
  +        if (count($tmp) > 2)
               return false;
  -    return true;
  +	$network = $tmp[0];
  +	$netmask = $tmp[1];
  +    }
  +    $network = rtrim($network, '.'); // trim last dot. eg. 1.2.3. => 1.2.3
  +
  +    $dot = substr_count($network, '.');
  +    if ($dot < 3) // 123.123 -> 123.123.0.0
  +        $network.= str_repeat('.0', 3 - $dot);
  +
  +    // validate network
  +    if (ip2long($network) === false) return false;
  +
  +    if (empty($netmask)) {
  +        $netmask = 8 * ($dot + 1);
  +    } else if (is_int($netmask)) {
  +        // validate netmask
  +        if ($netmask < 0 or $netmask > 32) return false;
  +    } else {
  +        if (ip2long($netmask) === false) return false;
  +    }
  +    #print $network . '/'. $netmask . "\n";
  +
  +    return array($network, $netmask);
   }
   
  -function check_ip($rules,$ip) {
  -    if (!$rules or !$ip) return false; // do not ckeck
  +function check_ip($rules, $ip) {
  +    if (empty($rules) or empty($ip)) return false; // do not ckeck
       $ip = ip2long($ip);
   
  -    $rules = explode(':',$rules);
  +    if (!$ip) return false;
  +
  +    if (is_string($rules)) // : separated rules like as '192.168.0.2:192.167.:...'
  +    	$rules = explode(':', $rules);
  +
  +    if (!is_array($rules)) return false;
  +
       foreach ($rules as $rule)
       {
  -        $netmask = '';
  -        if (($pos = strpos($rule, '/')) !== false)
  -            list($network,$netmask)=explode('/',$rule);
  -        else
  -            $network = trim($rule);
  -
  -        if (!is_valid_network($network)) continue; // ignore error
  +	$ret = normalize_network($rule);
  +        if (!$ret) continue; // ignore
   
  +        $network = $ret[0];
  +        $netmask = $ret[1];
  +        if (is_int($netmask)) {
  +            $netmask = 0xffffffff << (32 - $netmask);
  +        } else {
  +            $netmask = ip2long($netmask);
  +        }
           $network = ip2long($network);
   
  -        if ($netmask) {
  -            // echo "$ip ;$netmask; $network\n";
  -
  -            if(is_valid_network($netmask))
  -                $netmask = ip2long($netmask);
  -            else if ($netmask >= 0 && $netmask <= 32)
  -                $netmask = 0xffffffff << (32 - $netmask);
  -            else
  -                continue; // ignore error
  -
  -            // echo "$ip ;$netmask; $network\n";
  -            // print long2ip($netmask);
  -            // echo sprintf("%u", ip2long($ip));
  -            if(($ip & $netmask) == ($network & $netmask))
  -                return true;
  -        } else if ($ip == $network) {
  +        if(($ip & $netmask) == ($network & $netmask)) {
  +            return true;
  +        } else if (empty($netmask) and $ip == $network) {
               return true;
           }
       }
  @@ -69,4 +82,6 @@
   else
       print "Oh no !\n";
   */
  +
  +// vim:et:sts=4:sw=4:
   ?>
  
  
  


1282286182;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin/security\nIn directory kill.kldp.net:/tmp/cvs-serv22296/plugin/security\n\nModified Files:\n	acl.php \nLog Message:\n[#315612] ACL security plugin now support ip,network in the @group definition section.\n\n
wkpark      2010/08/20 15:36:23

  Modified:    plugin/security acl.php
  Log:
  [#315612] ACL security plugin now support ip,network in the @group definition section.
  
  Revision  Changes    Path
  1.12      +64 -3     moniwiki/plugin/security/acl.php
  
  Index: acl.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/acl.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- acl.php	19 Jun 2010 07:10:51 -0000	1.11
  +++ acl.php	20 Aug 2010 06:36:22 -0000	1.12
  @@ -1,8 +1,10 @@
   <?php
   # a ACL security plugin for the MoniWiki (experimental)
  -# $Id: acl.php,v 1.11 2010/06/19 07:10:51 wkpark Exp $
  +# $Id: acl.php,v 1.12 2010/08/20 06:36:22 wkpark Exp $
   #
  -# Please see also http://www.dokuwiki.org/wiki:discussion:acl2
  +# Please see http://moniwiki.kldp.net/wiki/wiki.php/MoniWikiACL
  +#
  +#        see also http://www.dokuwiki.org/acl
   #
   # ACL file example:
   #
  @@ -24,6 +26,8 @@
   # *     @Kiwirian   deny    *
   # *     @Kiwirian   allow   read
   
  +require_once('lib/checkip.php');
  +
   class Security_ACL extends Security {
       var $DB;
   
  @@ -49,6 +53,25 @@
           $this->allowed_users=array_merge($wikimasters,$owners);
       }
   
  +    function acl_ip_info(&$info) {
  +        // get group info.
  +        $matches = preg_grep('/^(@[^\s]+)\s+.*$/', $this->AUTH_ACL);
  +        foreach ($matches as $line) {
  +            $tmp = preg_split('/\s+/', rtrim($line), 2);
  +            $group = $tmp[0]; // group name
  +
  +            $users = get_csv($tmp[1]);
  +            foreach ($users as $u) {
  +                if (preg_match('/^[0-9]{1,3}(\.(?:[0-9]{1,3})){0,3}
  +                    (\/([0-9]{1,3}(?:\.[0-9]{1,3}){3}|[0-9]{2}))?$/x', $u))
  +                {
  +                    if (!isset($info[$u])) $info[$u] = array(); // init
  +                    $info[$u][] = $group;
  +                }
  +            }
  +        }
  +    }
  +
       function get_acl($action='read',&$options) {
           if (in_array($options['id'],$this->allowed_users)) return 1;
           $pg=$options['page'];
  @@ -56,7 +79,45 @@
   
           $groups=array();
           $groups[]='@ALL';
  -        if ($user != 'Anonymous') $groups[]='@User';
  +
  +        $ip_info = array(); // ip address based info
  +        if ($user != 'Anonymous') {
  +            $groups[]='@User';
  +        } else {
  +            $this->acl_ip_info($ip_info);
  +        }
  +
  +        // has acl ip address info ?
  +        if (!empty($ip_info)) {
  +            $myip = ip2long($_SERVER['REMOTE_ADDR']);
  +            $mygrp = array();
  +
  +            $rules = array_keys($ip_info);
  +   
  +            foreach ($rules as $rule) {
  +	        $ret = normalize_network($rule);
  +                if (!$ret) continue; // ignore
  +
  +                $network = $ret[0];
  +                $netmask = $ret[1];
  +                #print $network . '/' . $netmask . "\n";
  +                if (is_int($netmask)) {
  +                    $netmask = 0xffffffff << (32 - $netmask);
  +                } else {
  +                    $netmask = ip2long($netmask);
  +                }
  +                $network = ip2long($network);
  +
  +                if(($myip & $netmask) == ($network & $netmask)) {
  +                    $mygrp = array_merge($mygrp, $ip_info[$rule]);
  +                } else if ($myip == $network) {
  +                    $mygrp = array_merge($mygrp, $ip_info[$rule]);
  +                }
  +            }
  +            // group found ?
  +            if (!empty($mygrp))
  +                $groups = array_merge($groups, $mygrp);
  +        }
           $groups[]=$user;
           $allowed=array();
           $denied=array();
  
  
  


1282291498;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv447/plugin\n\nModified Files:\n	FastSearch.php \nLog Message:\n[#315528] fixed notice warnings\n\n
wkpark      2010/08/20 17:04:59

  Modified:    plugin   FastSearch.php
  Log:
  [#315528] fixed notice warnings
  
  Revision  Changes    Path
  1.21      +3 -2      moniwiki/plugin/FastSearch.php
  
  Index: FastSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FastSearch.php,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- FastSearch.php	18 Aug 2010 18:24:24 -0000	1.20
  +++ FastSearch.php	20 Aug 2010 08:04:58 -0000	1.21
  @@ -13,7 +13,7 @@
   //
   // Usage: [[FastSearch(string)]]
   //
  -// $Id: FastSearch.php,v 1.20 2010/08/18 18:24:24 wkpark Exp $
  +// $Id: FastSearch.php,v 1.21 2010/08/20 08:04:58 wkpark Exp $
   
   include_once('lib/indexer.DBA.php');
   
  @@ -136,7 +136,8 @@
             $page_name,"tabindex='$idx'");
       if ($count) {
         $out.= ' . . . . ' . sprintf((($count == 1) ? _("%d match") : _("%d matches")), $count );
  -      $out.= $contexts[$page_name];
  +      if (!empty($contexts[$page_name]))
  +        $out.= $contexts[$page_name];
       }
       $out.= "</li>\n";
       $out.= '<!-- RESULT ITEM END -->'; // for search plugin
  
  
  


1282292933;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv4671\n\nModified Files:\n	wiki.php \nLog Message:\n[#315615] check validity of the revert actions\n\n
1282292933;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv4671/plugin\n\nModified Files:\n	Info.php revert.php \nLog Message:\n[#315615] check validity of the revert actions\n\n
wkpark      2010/08/20 17:28:53

  Modified:    .        wiki.php
               plugin   Info.php revert.php
  Log:
  [#315615] check validity of the revert actions
  
  Revision  Changes    Path
  1.571     +4 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.570
  retrieving revision 1.571
  diff -u -r1.570 -r1.571
  --- wiki.php	20 Aug 2010 06:28:26 -0000	1.570
  +++ wiki.php	20 Aug 2010 08:28:52 -0000	1.571
  @@ -11,10 +11,10 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.570 2010/08/20 06:28:26 wkpark Exp $
  +// $Id: wiki.php,v 1.571 2010/08/20 08:28:52 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.570 $',1,-1);
  -$_release = '1.1.5-RC3';
  +$_revision = substr('$Revision: 1.571 $',1,-1);
  +$_release = '1.1.5-RC4';
   
   #ob_start("ob_gzhandler");
   
  @@ -1812,6 +1812,7 @@
       if (!empty($DBInfo->version_class)) {
         $class=getModule('Version',$DBInfo->version_class);
         $version=new $class ($DBInfo);
  +      $opt = '';
         $out= $version->rlog($this->name,$rev,$opt);
       } else {
         return $info;
  
  
  
  1.32      +9 -2      moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Info.php,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- Info.php	9 Jul 2010 11:03:27 -0000	1.31
  +++ Info.php	20 Aug 2010 08:28:53 -0000	1.32
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Info plugin for the MoniWiki
   //
  -// $Id: Info.php,v 1.31 2010/07/09 11:03:27 wkpark Exp $
  +// $Id: Info.php,v 1.32 2010/08/20 08:28:53 wkpark Exp $
   
   function _parse_rlog($formatter,$log,$options=array()) {
     global $DBInfo;
  @@ -17,6 +17,9 @@
       $actions=$DBInfo->info_actions;
     else
       $actions=array('recall'=>'view','raw'=>'source','diff'=>'diff');
  +  if (!$formatter->page->exists()) {
  +    $actions['revert'] = 'revert';
  +  }
   
     $diff_action = null;
     if (isset($actions['diff'])) {
  @@ -68,7 +71,11 @@
         else {$state=1; continue;}
       }
       if ($state==1 and $ok==1) {
  -      $lnk=$formatter->link_to("?action=info&all=1",_("Show all revisions"),' class="button small"');
  +      if (!empty($options['action']))
  +        $act = $options['action'];
  +      else
  +        $act = 'info';
  +      $lnk=$formatter->link_to('?action='.$act.'&amp;all=1',_("Show all revisions"),' class="button small"');
         $out.='<tr><td colspan="2"></td><td colspan="'.(!empty($admin) ? 5:4).'">'.$lnk.'</td></tr>';
         break;
       }
  
  
  
  1.5       +36 -19    moniwiki/plugin/revert.php
  
  Index: revert.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/revert.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- revert.php	10 Dec 2008 09:59:49 -0000	1.4
  +++ revert.php	20 Aug 2010 08:28:53 -0000	1.5
  @@ -10,13 +10,13 @@
   // PluginType: macro,action
   // ActionType: protected
   // URL: to_plugin url/interwiki name etc.
  -// Version: $Revision: 1.4 $
  +// Version: $Revision: 1.5 $
   // Depend: 1.1.3
   // License: GPL
   //
   // Usage: ?action=revert&rev=1.1
   //
  -// $Id: revert.php,v 1.4 2008/12/10 09:59:49 wkpark Exp $
  +// $Id: revert.php,v 1.5 2010/08/20 08:28:53 wkpark Exp $
   
   function macro_Revert($formatter,$value,$options=array()) {
       $options['info_actions']=array('recall'=>'view','revert'=>'revert');
  @@ -30,12 +30,22 @@
   
       $formatter->send_header('',$options);
       $force=1;
  -    if ($DBInfo->hasPage($_POST['name'])) {
  +    if (!empty($_POST['name']) and $DBInfo->hasPage($_POST['name'])) {
           $force=0;
           if ($_POST['force']) $force=1;
       }
  -    if ($_POST['rev'] and $_POST['name'] and $force) {
  -        if ($DBInfo->version_class) {
  +
  +    // validate rev
  +    if (!empty($options['rev'])) {
  +        $info = $formatter->page->get_info($options['rev']);
  +        if (empty($info[0])) {
  +            unset($options['rev']);
  +            if (!empty($_POST['rev']))
  +                unset($_POST['rev']);
  +        }
  +    }
  +    if (!empty($_POST['rev']) and !empty($_POST['name']) and $force) {
  +        if (!empty($DBInfo->version_class)) {
               $REMOTE_ADDR=$_SERVER['REMOTE_ADDR'];
   
               $user=&$DBInfo->user;
  @@ -62,33 +72,40 @@
           $formatter->send_footer('',$options);
           return;
       } else {
  -        if ($DBInfo->hasPage($formatter->page->name)) {
  -            $formatter->send_title(_("Are you really want to overwrite this page ?"),"",$options);
  -            $extra='<input type="checkbox" name="force" />'._("Force overwrite").'<br />';
  -        } else {
  -            $formatter->send_title(_("Are you really want to revert this page ?"),"",$options);
  +        if (empty($options['rev']))
  +            $title = _("Please select old revision to revert.");
  +        else {
  +            if ($DBInfo->hasPage($formatter->page->name)) {
  +                $title = _("Are you really want to overwrite this page ?");
  +                $extra='<input type="checkbox" name="force" />'._("Force overwrite").'<br />';
  +            } else {
  +                $title = _("Are you really want to revert this page ?");
  +            }
           }
  +        $formatter->send_title($title,"",$options);
       }
   
       $pagename=$formatter->page->name;
       $lab=_("Summary");
  -    $rev=$options['rev'];
  -    $comment=sprintf(_("Rollback to revision %s"),$rev);
  -    print "<form method='post'>
  +    $rev=!empty($options['rev']) ? $options['rev'] : '';
  +    if (!empty($rev)) {
  +        $comment=sprintf(_("Rollback to revision %s"),$rev);
  +        print "<form method='post'>
   $lab: <input name='comment' size='80' value='$comment' /><br />\n";
  -    $btn=_("Revert page");
  -    $msg=sprintf(_("Only WikiMaster can %s this page"),_("revert"));
  -    if ($DBInfo->security->is_protected("revert",$options))
  -        print _("Password").": <input type='password' name='passwd' size='20' value='' />
  +        $btn=_("Revert page");
  +        $msg=sprintf(_("Only WikiMaster can %s this page"),_("revert"));
  +        if ($DBInfo->security->is_protected("revert",$options))
  +            print _("Password").": <input type='password' name='passwd' size='20' value='' />
   $msg<br />\n";
  -  print "
  +        print "
       <input type='hidden' name='action' value='revert' />
       <input type='hidden' name='rev' value='$rev' />
       <input type='hidden' name='name' value='$pagename' />
       <input type='submit' value='$btn' />$extra
       </form>";
  +    }
   
  -    print macro_revert($formatter,$options['value']);
  +    print macro_revert($formatter,$options['value'], $options);
       $formatter->send_footer('',$options);
       return;
   }
  
  
  


1282367216;wkpark;Update of /cvsroot/moniwiki/moniwiki/locale/po\nIn directory kill.kldp.net:/tmp/cvs-serv31492\n\nModified Files:\n	ko.po \nLog Message:\nupdate msg\n\n
wkpark      2010/08/21 14:06:56

  Modified:    locale/po ko.po
  Log:
  update msg
  
  Revision  Changes    Path
  1.39      +207 -204  moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- ko.po	14 Aug 2010 05:55:21 -0000	1.38
  +++ ko.po	21 Aug 2010 05:06:55 -0000	1.39
  @@ -1,12 +1,12 @@
   # MoniWiki message file
  -# Copyright (C) 2003-2008 Won-kyu Park <wkpark@kldp.org>, 2003-2008.
  +# Copyright (C) 2003-2010 Won-kyu Park <wkpark@kldp.org>
   #
   msgid ""
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1.3\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2010-08-14 13:21+0900\n"
  -"PO-Revision-Date: 2008-12-11 12:20+0900\n"
  +"POT-Creation-Date: 2010-08-21 14:04+0900\n"
  +"PO-Revision-Date: 2010-08-21 12:20+0900\n"
   "Last-Translator: Won-Kyu Park <wkpark@kldp.org>\n"
   "Language-Team: Won-Kyu Park <wkpark@kldp.org>\n"
   "MIME-Version: 1.0\n"
  @@ -100,7 +100,7 @@
   msgid "Title"
   msgstr "제목"
   
  -#: ../plugin/Blog.php:271 ../wikilib.php:1211
  +#: ../plugin/Blog.php:271 ../wikilib.php:1280
   msgid "GUI"
   msgstr ""
   
  @@ -181,8 +181,8 @@
   msgid "Comment"
   msgstr "댓글 달기"
   
  -#: ../plugin/Comment.php:94 ../wikilib.php:942 ../wikilib.php:1205
  -#: ../wikilib.php:1880 ../wikilib.php:1977 ../monisetup.php:1307
  +#: ../plugin/Comment.php:94 ../wikilib.php:1011 ../wikilib.php:1274
  +#: ../wikilib.php:1949 ../wikilib.php:2046 ../monisetup.php:1307
   msgid "Preview"
   msgstr "미리보기"
   
  @@ -203,17 +203,17 @@
   msgstr "페이지가 없습니다"
   
   #: ../plugin/Comment.php:174 ../plugin/userform.php:121
  -#: ../plugin/userform.php:184 ../plugin/userform.php:207 ../wikilib.php:1930
  +#: ../plugin/userform.php:184 ../plugin/userform.php:207 ../wikilib.php:1999
   msgid "Invalid ticket !"
   msgstr "잘못된 티켓 !"
   
   #: ../plugin/Comment.php:179 ../plugin/userform.php:123
  -#: ../plugin/userform.php:209 ../wikilib.php:1935
  +#: ../plugin/userform.php:209 ../wikilib.php:2004
   msgid "You need a ticket !"
   msgstr "티켓이 필요합니다 !"
   
  -#: ../plugin/Comment.php:201 ../plugin/Gallery.php:182 ../plugin/bbs.php:1009
  -#: ../wikilib.php:1741 ../wikilib.php:1951
  +#: ../plugin/Comment.php:201 ../plugin/Gallery.php:137 ../plugin/bbs.php:1009
  +#: ../wikilib.php:1810 ../wikilib.php:2020
   msgid ""
   "Sorry, can not save page because some messages are blocked in this wiki."
   msgstr "죄송합니다. 특정 메시지가 금지되어 페이지를 저장할 수 없습니다."
  @@ -231,16 +231,16 @@
   msgid "Comment added successfully"
   msgstr "댓글이 성공적으로 저장되었습니다"
   
  -#: ../plugin/Diff.php:411 ../plugin/Info.php:251 ../plugin/Stat.php:125
  +#: ../plugin/Diff.php:411 ../plugin/Info.php:258 ../plugin/Stat.php:125
   msgid "No older revisions available"
   msgstr "옛 버전이 없습니다"
   
  -#: ../plugin/Diff.php:416 ../plugin/Info.php:257 ../plugin/Stat.php:131
  +#: ../plugin/Diff.php:416 ../plugin/Info.php:264 ../plugin/Stat.php:131
   #: ../plugin/rcsexport.php:13 ../plugin/rcsimport.php:13
   msgid "Version info is not available in this wiki"
   msgstr "버전 정보는 현 위키에서 사용할 수 없습니다"
   
  -#: ../plugin/Diff.php:428 ../wikilib.php:1900
  +#: ../plugin/Diff.php:428 ../wikilib.php:1969
   msgid "No difference found"
   msgstr "변화가 없습니다"
   
  @@ -351,38 +351,38 @@
   msgid "Couldn't open search database, sorry."
   msgstr "데이타베이스 파일을 열 수 없습니다."
   
  -#: ../plugin/FastSearch.php:138 ../plugin/FullSearch.php:263
  +#: ../plugin/FastSearch.php:138 ../plugin/FullSearch.php:264
   #, c-format
   msgid "%d match"
   msgstr "%d회 일치"
   
  -#: ../plugin/FastSearch.php:138 ../plugin/FullSearch.php:263
  +#: ../plugin/FastSearch.php:138 ../plugin/FullSearch.php:264
   #, c-format
   msgid "%d matches"
   msgstr "%d회 일치"
   
  -#: ../plugin/FastSearch.php:160 ../plugin/FullSearch.php:19
  +#: ../plugin/FastSearch.php:161 ../plugin/FullSearch.php:19
   #, c-format
   msgid "Full text search for \"%s\""
   msgstr "\"%s\"을(를) 전체 찾아보기"
   
  -#: ../plugin/FastSearch.php:177 ../plugin/FullSearch.php:38
  -#: ../wikilib.php:1662
  +#: ../plugin/FastSearch.php:178 ../plugin/FullSearch.php:38
  +#: ../wikilib.php:1731
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr "%3$s의 페이지중에 %1$s개가 발견되었습니다"
   
  -#: ../plugin/FastSearch.php:179 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1664
  +#: ../plugin/FastSearch.php:180 ../plugin/FullSearch.php:40
  +#: ../wikilib.php:1733
   msgid "page"
   msgstr "페이지"
   
  -#: ../plugin/FastSearch.php:179 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1664
  +#: ../plugin/FastSearch.php:180 ../plugin/FullSearch.php:40
  +#: ../wikilib.php:1733
   msgid "pages"
   msgstr "페이지"
   
  -#: ../plugin/FastSearch.php:184
  +#: ../plugin/FastSearch.php:185
   #, c-format
   msgid "Show all %d results"
   msgstr "%d개의 모든 결과 보기"
  @@ -401,8 +401,8 @@
   msgid "Show Context."
   msgstr "문맥 보기."
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4686
  -#: ../wikilib.php:1189
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4725
  +#: ../wikilib.php:1258
   msgid "Refresh"
   msgstr "갱신"
   
  @@ -416,8 +416,8 @@
   msgid "You can also click %s to search title.\n"
   msgstr "%s을 눌러 제목 찾기를 할 수 있습니다.\n"
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5660 ../wiki.php:5668
  -#: ../wikilib.php:1672
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5706 ../wiki.php:5714
  +#: ../wikilib.php:1741
   msgid "here"
   msgstr "여기"
   
  @@ -429,42 +429,42 @@
   msgid "Case-sensitive searching"
   msgstr "대소문자 구별"
   
  -#: ../plugin/FullSearch.php:77 ../wikilib.php:3147 ../wikilib.php:3223
  +#: ../plugin/FullSearch.php:77 ../wikilib.php:3247 ../wikilib.php:3323
   msgid "Go"
   msgstr "찾기"
   
  -#: ../plugin/FullSearch.php:140
  +#: ../plugin/FullSearch.php:141
   msgid "Empty expression"
   msgstr "비어있는 표현식"
   
  -#: ../plugin/FullSearch.php:144 ../wikilib.php:3168
  +#: ../plugin/FullSearch.php:145 ../wikilib.php:3268
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "잘못된 찾기 표현식 \"%s\""
   
  -#: ../plugin/Gallery.php:253 ../plugin/UploadedFiles.php:289
  +#: ../plugin/Gallery.php:208 ../plugin/UploadedFiles.php:289
   msgid "No files found"
   msgstr "페이지가 없습니다"
   
  -#: ../plugin/Gallery.php:345 ../plugin/Gallery.php:360
  +#: ../plugin/Gallery.php:300 ../plugin/Gallery.php:315
   msgid "add comment"
   msgstr "댓글 달기"
   
  -#: ../plugin/Gallery.php:355
  +#: ../plugin/Gallery.php:310
   msgid "show comments"
   msgstr "댓글 보기"
   
  -#: ../plugin/Gallery.php:409 ../plugin/Gallery.php:413 ../wikilib.php:1728
  -#: ../wikilib.php:1898 ../wikilib.php:1905
  +#: ../plugin/Gallery.php:364 ../plugin/Gallery.php:368 ../wikilib.php:1797
  +#: ../wikilib.php:1967 ../wikilib.php:1974
   #, c-format
   msgid "Go back or return to %s"
   msgstr "뒤로 혹은 %s(으)로 가기"
   
  -#: ../plugin/Gallery.php:410
  +#: ../plugin/Gallery.php:365
   msgid "Comments are edited"
   msgstr "댓글이 편집되었습니다"
   
  -#: ../plugin/Gallery.php:414
  +#: ../plugin/Gallery.php:369
   msgid "Comments is added"
   msgstr "댓글이 더해졌습니다"
   
  @@ -472,66 +472,66 @@
   msgid "Import URL"
   msgstr "URL 가져오기"
   
  -#: ../plugin/Info.php:36
  +#: ../plugin/Info.php:39
   msgid "Compare"
   msgstr "선택비교"
   
  -#: ../plugin/Info.php:41
  +#: ../plugin/Info.php:44
   msgid "Revision History"
   msgstr "버전 히스토리"
   
  -#: ../plugin/Info.php:44
  +#: ../plugin/Info.php:47
   msgid "Ver."
   msgstr "버전"
   
  -#: ../plugin/Info.php:44 ../plugin/UploadedFiles.php:305
  +#: ../plugin/Info.php:47 ../plugin/UploadedFiles.php:305
   msgid "Date"
   msgstr "날짜"
   
  -#: ../plugin/Info.php:45 ../plugin/RecentChanges.php:129
  +#: ../plugin/Info.php:48 ../plugin/RecentChanges.php:129
   msgid "Changes"
   msgstr "변경점"
   
  -#: ../plugin/Info.php:46 ../plugin/RecentChanges.php:128
  +#: ../plugin/Info.php:49 ../plugin/RecentChanges.php:128
   msgid "Editor"
   msgstr "고친이"
   
  -#: ../plugin/Info.php:50
  +#: ../plugin/Info.php:53
   msgid "View"
   msgstr "보기"
   
  -#: ../plugin/Info.php:51
  +#: ../plugin/Info.php:54
   msgid "admin."
   msgstr "관리"
   
  -#: ../plugin/Info.php:71
  +#: ../plugin/Info.php:78
   msgid "Show all revisions"
   msgstr "모든 버전 보기"
   
  -#: ../plugin/Info.php:106
  +#: ../plugin/Info.php:113
   msgid "Yesterday"
   msgstr "어제"
   
  -#: ../plugin/Info.php:107
  +#: ../plugin/Info.php:114
   #, c-format
   msgid "%s days ago"
   msgstr "%s일 전"
   
  -#: ../plugin/Info.php:109
  +#: ../plugin/Info.php:116
   #, c-format
   msgid "%s hours ago"
   msgstr "%s시간 전"
   
  -#: ../plugin/Info.php:111
  +#: ../plugin/Info.php:118
   #, c-format
   msgid "%s min ago"
   msgstr "%s분 전"
   
  -#: ../plugin/Info.php:220 ../plugin/rename.php:80
  +#: ../plugin/Info.php:227 ../plugin/rename.php:80
   msgid "show only"
   msgstr "보기만 하기"
   
  -#: ../plugin/Info.php:224
  +#: ../plugin/Info.php:231
   msgid "purge"
   msgstr "삭제"
   
  @@ -640,7 +640,7 @@
   msgid "Select keywords for %s"
   msgstr "%s에 대해 키워드를 고르세요"
   
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1549 ../wikilib.php:3155
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1618 ../wikilib.php:3255
   msgid "Use more specific text"
   msgstr "좀 더 자세히 입력하세요"
   
  @@ -931,7 +931,7 @@
   msgid "TwinPages of %s"
   msgstr "%s의 쌍둥이 페이지"
   
  -#: ../plugin/TwinPages.php:20 ../wiki.php:5645
  +#: ../plugin/TwinPages.php:20 ../wiki.php:5691
   msgid "See [TwinPages]: "
   msgstr ""
   
  @@ -1077,12 +1077,12 @@
   
   #: ../plugin/UploadedFiles.php:453 ../plugin/login.php:32
   #: ../plugin/rcsimport.php:32 ../plugin/rcsimport.php:88
  -#: ../plugin/rename.php:77 ../plugin/revert.php:82 ../plugin/userinfo.php:37
  -#: ../wikilib.php:1387 ../wikilib.php:2395
  +#: ../plugin/rename.php:77 ../plugin/revert.php:98 ../plugin/userinfo.php:37
  +#: ../wikilib.php:1456 ../wikilib.php:2472
   msgid "Password"
   msgstr "비밀번호"
   
  -#: ../plugin/UploadedFiles.php:454 ../wikilib.php:1365
  +#: ../plugin/UploadedFiles.php:454 ../wikilib.php:1434
   msgid "Delete selected files"
   msgstr "선택된 파일 지우기"
   
  @@ -1102,7 +1102,7 @@
   msgid "Voted successfully"
   msgstr "투표가 성공되었습니다"
   
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2904
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:3004
   msgid "Others"
   msgstr ""
   
  @@ -1186,7 +1186,7 @@
   msgid "Edit"
   msgstr "고치기"
   
  -#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1388
  +#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1457
   msgid "Delete"
   msgstr "지우기"
   
  @@ -1292,7 +1292,7 @@
   msgid "The TCPDF class not found!"
   msgstr "TCPDF 클래스 찾을 수 없음!"
   
  -#: ../plugin/login.php:31 ../wikilib.php:2425 ../wikilib.php:2560
  +#: ../plugin/login.php:31 ../wikilib.php:2502 ../wikilib.php:2637
   msgid "ID"
   msgstr "아이디"
   
  @@ -1300,18 +1300,23 @@
   msgid "Join"
   msgstr "가입"
   
  -#: ../plugin/login.php:34 ../wikilib.php:2411
  +#: ../plugin/login.php:34 ../wikilib.php:2488
   msgid "Login"
   msgstr "로그인"
   
  -#: ../plugin/login.php:52 ../plugin/minilogin.php:25
  +#: ../plugin/login.php:54 ../plugin/minilogin.php:25
   msgid "Logout"
   msgstr "나가기"
   
  -#: ../plugin/login.php:53 ../plugin/minilogin.php:24 ../locale/dummy.php:3
  +#: ../plugin/login.php:55 ../plugin/minilogin.php:24 ../locale/dummy.php:3
   msgid "UserPreferences"
   msgstr "환경설정"
   
  +#: ../plugin/login.php:56 ../plugin/minilogin.php:26
  +#, c-format
  +msgid "%s or %s"
  +msgstr "%s 혹은 %s"
  +
   #: ../plugin/man_get.php:17
   msgid "No manpage selected"
   msgstr "맨페이지가 선택되지 않았습니다"
  @@ -1324,15 +1329,10 @@
   msgid "Edit man page"
   msgstr "man 페이지 고치기"
   
  -#: ../plugin/minilogin.php:18 ../wikilib.php:2480
  +#: ../plugin/minilogin.php:18 ../wikilib.php:2557
   msgid "Login or Join"
   msgstr "로그인 혹은 가입"
   
  -#: ../plugin/minilogin.php:26
  -#, c-format
  -msgid "%s or %s"
  -msgstr "%s 혹은 %s"
  -
   #: ../plugin/msgfmt.php:75 ../plugin/msgfmt.php:153
   #, c-format
   msgid "Translation of %s"
  @@ -1394,7 +1394,7 @@
   msgid "Save Changes"
   msgstr "변경 저장"
   
  -#: ../plugin/processor/monimarkup.php:515 ../wiki.php:4049
  +#: ../plugin/processor/monimarkup.php:523 ../wiki.php:4071
   msgid "edit"
   msgstr "편집"
   
  @@ -1468,7 +1468,6 @@
   msgid "Blog Changes"
   msgstr "바뀐 블로그"
   
  -# c-format
   #: ../plugin/rdf_blog.php:44 ../plugin/rss_blog.php:103
   #, c-format
   msgid "BlogChanges at %s"
  @@ -1519,7 +1518,7 @@
   msgid "Only WikiMaster can rename this page"
   msgstr "위키관리자만이 페이지 이름을 바꿀 수 있습니다"
   
  -#: ../plugin/rename.php:79 ../wikilib.php:1433
  +#: ../plugin/rename.php:79 ../wikilib.php:1502
   msgid "with revision history"
   msgstr "버전 히스토리와 함께"
   
  @@ -1561,51 +1560,55 @@
   msgid "Select a tarball file to restore"
   msgstr "Restore하기 위한 tarball 파일을 고르세요"
   
  -#: ../plugin/revert.php:23 ../wiki.php:5662
  +#: ../plugin/revert.php:23 ../wiki.php:5708
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr "%s의 옛날 버전"
   
  -#: ../plugin/revert.php:57
  +#: ../plugin/revert.php:67
   msgid "No version control available."
   msgstr "버전 관리를 쓸 수 없습니다"
   
  -#: ../plugin/revert.php:61
  +#: ../plugin/revert.php:71
   #, c-format
   msgid "%s is successfully rollback."
   msgstr "%s(이)가 성공적으로 되돌려졌습니다."
   
  -#: ../plugin/revert.php:66
  +#: ../plugin/revert.php:76
  +msgid "Please select old revision to revert."
  +msgstr "복구할 이전 버전을 선택하세요."
  +
  +#: ../plugin/revert.php:79
   msgid "Are you really want to overwrite this page ?"
  -msgstr "정말로 '%s'(을)를 덮어쓰기를 원하십니까 ?"
  +msgstr "정말로 덮어쓰기를 원하십니까 ?"
   
  -#: ../plugin/revert.php:67
  +#: ../plugin/revert.php:80
   msgid "Force overwrite"
   msgstr "덮어쓰기"
   
  -#: ../plugin/revert.php:69
  +#: ../plugin/revert.php:82
   msgid "Are you really want to revert this page ?"
   msgstr "정말로 되돌리시겠습니까 ?"
   
  -#: ../plugin/revert.php:74 ../wikilib.php:1200
  +#: ../plugin/revert.php:89 ../wikilib.php:1269
   msgid "Summary"
   msgstr "요약"
   
  -#: ../plugin/revert.php:76
  +#: ../plugin/revert.php:92
   #, c-format
   msgid "Rollback to revision %s"
   msgstr "%s 버전으로 돌리기"
   
  -#: ../plugin/revert.php:79
  +#: ../plugin/revert.php:95
   msgid "Revert page"
   msgstr "페이지 되돌리기"
   
  -#: ../plugin/revert.php:80
  +#: ../plugin/revert.php:96
   #, c-format
   msgid "Only WikiMaster can %s this page"
   msgstr "위키 관리자만 이 페이지를 %s 할 수 있습니다"
   
  -#: ../plugin/revert.php:80
  +#: ../plugin/revert.php:96
   #, c-format
   msgid "revert"
   msgstr "되돌리기"
  @@ -1633,23 +1636,23 @@
   msgid "Scrapped pages"
   msgstr "스크랩 목록"
   
  -#: ../plugin/security/acl.php:141
  +#: ../plugin/security/acl.php:202
   msgid "ACL groups"
   msgstr "ACL 그룹"
   
  -#: ../plugin/security/acl.php:144
  +#: ../plugin/security/acl.php:205
   msgid "Allowed ACL actions"
   msgstr "허락된 ACL 액션"
   
  -#: ../plugin/security/acl.php:149
  +#: ../plugin/security/acl.php:210
   msgid "Denied ACL actions"
   msgstr "거부된 ACL 액션"
   
  -#: ../plugin/security/acl.php:154
  +#: ../plugin/security/acl.php:215
   msgid "Protected ACL actions"
   msgstr "제한된 ACL 액션"
   
  -#: ../plugin/security/acl.php:217 ../plugin/security/community.php:26
  +#: ../plugin/security/acl.php:278 ../plugin/security/community.php:26
   #: ../plugin/security/community.php:36 ../plugin/security/community.php:46
   #: ../plugin/security/mustlogin.php:28 ../plugin/security/mustlogin.php:39
   #: ../plugin/security/mustlogin.php:50 ../plugin/security/needtologin.php:28
  @@ -1660,7 +1663,7 @@
   msgid "You are not allowed to '%s' on this page"
   msgstr "'%s'는 허락되지 않은 액션입니다."
   
  -#: ../plugin/security/acl.php:218
  +#: ../plugin/security/acl.php:279
   msgid "Please contact WikiMasters :b"
   msgstr "위키 관리자와 연락해주세요 :b"
   
  @@ -1855,7 +1858,7 @@
   msgid "Cookie deleted !"
   msgstr "쿠키가 지워졌습니다 !"
   
  -#: ../plugin/userform.php:110 ../wikilib.php:2555
  +#: ../plugin/userform.php:110 ../wikilib.php:2632
   msgid "E-mail new password"
   msgstr "새 비밀번호 받기"
   
  @@ -1936,8 +1939,8 @@
   msgid "You are not allowed to register on this wiki"
   msgstr "위키 등록이 허락되지 않았습니다"
   
  -#: ../plugin/userform.php:246 ../plugin/userform.php:425 ../wiki.php:5596
  -#: ../wiki.php:5607
  +#: ../plugin/userform.php:246 ../plugin/userform.php:425 ../wiki.php:5642
  +#: ../wiki.php:5653
   msgid "Please contact WikiMasters"
   msgstr "위키관리자에게 문의하세요"
   
  @@ -2056,483 +2059,483 @@
   msgid "Whois search result for %s"
   msgstr "%s에 대한 Whois 검색 결과"
   
  -#: ../wiki.php:1316
  +#: ../wiki.php:1318
   #, c-format
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1740
  +#: ../wiki.php:1742
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
  -#: ../wiki.php:1750
  +#: ../wiki.php:1752
   msgid "File does not exist"
   msgstr "페이지가 없습니다"
   
  -#: ../wiki.php:2179
  +#: ../wiki.php:2185
   #, c-format
   msgid "File '%s' does not exist."
   msgstr "파일 '%s'이(가) 없습니다"
   
  -#: ../wiki.php:3109 ../wiki.php:3120 ../wiki.php:5870
  +#: ../wiki.php:3115 ../wiki.php:3126 ../wiki.php:5916
   msgid "Invalid ajax action."
   msgstr "잘못된 ajax 액션."
   
  -#: ../wiki.php:3619
  +#: ../wiki.php:3626
   msgid "Tags:"
   msgstr "태그:"
   
  -#: ../wiki.php:3648
  +#: ../wiki.php:3655
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:3648
  +#: ../wiki.php:3655
   #, c-format
   msgid "TwinPages"
   msgstr "TwinPages"
   
  -#: ../wiki.php:3653
  +#: ../wiki.php:3660
   msgid "See [TwinPages]:"
   msgstr ""
   
  -#: ../wiki.php:4233
  +#: ../wiki.php:4272
   msgid "Sister Sites Index"
   msgstr ""
   
  -#: ../wiki.php:4682 ../locale/dummy.php:6
  +#: ../wiki.php:4721 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "고치기"
   
  -#: ../wiki.php:4684
  +#: ../wiki.php:4723
   msgid "NotEditable"
   msgstr "고칠수 없음"
   
  -#: ../wiki.php:4688 ../locale/dummy.php:6
  +#: ../wiki.php:4727 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "보기"
   
  -#: ../wiki.php:4689 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4728 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "찾기"
   
  -#: ../wiki.php:5150
  +#: ../wiki.php:5189
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5410
  +#: ../wiki.php:5449
   msgid "Someone logged in at another place !"
   msgstr ""
   
  -#: ../wiki.php:5595
  +#: ../wiki.php:5641
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5606
  +#: ../wiki.php:5652
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:5647 ../wiki.php:5656 ../wikilib.php:1652
  +#: ../wiki.php:5693 ../wiki.php:5702 ../wikilib.php:1721
   msgid "Create this page"
   msgstr "페이지 만들기"
   
  -#: ../wiki.php:5658
  +#: ../wiki.php:5704
   #, c-format
   msgid "%s has saved revisions"
   msgstr "%s이(가) 저장된 옛버전이 있습니다"
   
  -#: ../wiki.php:5660 ../wiki.php:5668
  +#: ../wiki.php:5706 ../wiki.php:5714
   #, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr "%s 혹은 %s를 눌러 전체 찾기를 할 수 있습니다.\n"
   
  -#: ../wiki.php:5666
  +#: ../wiki.php:5712
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr "%s 페이지를 이곳 위키에서 찾을 수 없습니다"
   
  -#: ../wiki.php:5674
  +#: ../wiki.php:5720
   msgid "Please try to search with another word"
   msgstr "다른 단어로 찾아보세요."
   
  -#: ../wiki.php:5686
  +#: ../wiki.php:5732
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr ""
   "%s 아이콘을 누르거나 아래의 탬플리트 목록을 이용해 새 페이지를 만드세요:\n"
   
  -#: ../wiki.php:5689
  +#: ../wiki.php:5735
   msgid "You have no templates"
   msgstr "템플리트가 없습니다"
   
  -#: ../wiki.php:5691
  +#: ../wiki.php:5737
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr "탬플리트를 만드시려면 '%s' 형식의 이름을 가지는 페이지를 만드세요.\n"
   
  -#: ../wiki.php:5702
  +#: ../wiki.php:5748
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr "\"%s\"페이지로 부터 리다리렉트됨"
   
  -#: ../wiki.php:5872
  +#: ../wiki.php:5918
   msgid "Invalid macro action."
   msgstr "잘못된 마크로 액션."
   
  -#: ../wiki.php:5882
  +#: ../wiki.php:5928
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "'%s'은(는) 허락되지 않았습니다"
   
  -#: ../wiki.php:5902
  +#: ../wiki.php:5948
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "\"%s\"을(를) 실패했습니다 !"
   
  -#: ../wiki.php:5905
  +#: ../wiki.php:5951
   msgid "Please enter the valid password"
   msgstr "정확한 비밀번호를 넣어주세요"
   
  -#: ../wikilib.php:905
  +#: ../wikilib.php:974
   msgid "You are not allowed to edit this page !"
   msgstr "이 페이지를 고칠 수 있도록 허락되어있지 않습니다 !"
   
  -#: ../wikilib.php:913
  +#: ../wikilib.php:982
   #, c-format
   msgid "Edit %s"
   msgstr "%s 고치기"
   
  -#: ../wikilib.php:936 ../wikilib.php:1220 ../wikilib.php:1874
  -#: ../wikilib.php:1971 ../wikilib.php:2483 ../wikilib.php:2541
  +#: ../wikilib.php:1005 ../wikilib.php:1289 ../wikilib.php:1943
  +#: ../wikilib.php:2040 ../wikilib.php:2560 ../wikilib.php:2618
   msgid "Save"
   msgstr "저장"
   
  -#: ../wikilib.php:944 ../wikilib.php:1207 ../wikilib.php:1882
  -#: ../wikilib.php:1979
  +#: ../wikilib.php:1013 ../wikilib.php:1276 ../wikilib.php:1951
  +#: ../wikilib.php:2048
   msgid "Skip to preview"
   msgstr "미리보기로"
   
  -#: ../wikilib.php:1059
  +#: ../wikilib.php:1128
   msgid "Use one of the following templates as an initial release :\n"
   msgstr "최초 버전으로 다음의 탬플리트를 활용하실 수 있습니다 :\n"
   
  -#: ../wikilib.php:1061
  +#: ../wikilib.php:1130
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr "탬플리트를 만드시려면 '%s' 형식의 이름으로 페이지를 만드세요."
   
  -#: ../wikilib.php:1065
  +#: ../wikilib.php:1134
   msgid "Merge"
   msgstr "병합"
   
  -#: ../wikilib.php:1066
  +#: ../wikilib.php:1135
   msgid "Merge manually"
   msgstr "수동 병합"
   
  -#: ../wikilib.php:1067
  +#: ../wikilib.php:1136
   msgid "Ignore conflicts"
   msgstr "충돌 무시"
   
  -#: ../wikilib.php:1102
  +#: ../wikilib.php:1171
   msgid "ReduceEditor"
   msgstr "편집창 줄이기"
   
  -#: ../wikilib.php:1103
  +#: ../wikilib.php:1172
   msgid "EnlargeEditor"
   msgstr "편집창 늘이기"
   
  -#: ../wikilib.php:1107 ../locale/dummy.php:6
  +#: ../wikilib.php:1176 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr "인터위키"
   
  -#: ../wikilib.php:1109
  +#: ../wikilib.php:1178
   msgid "HelpOnEditing"
   msgstr "고치기 도움말"
   
  -#: ../wikilib.php:1143
  +#: ../wikilib.php:1212
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:1163
  +#: ../wikilib.php:1232
   msgid "Category"
   msgstr "분류"
   
  -#: ../wikilib.php:1171
  +#: ../wikilib.php:1240
   msgid " Select "
   msgstr " 선택 "
   
  -#: ../wikilib.php:1183
  +#: ../wikilib.php:1252
   msgid "Minor edit"
   msgstr ""
   
  -#: ../wikilib.php:1299
  +#: ../wikilib.php:1368
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:1304
  +#: ../wikilib.php:1373
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s은(는) 잘못된 액션"
   
  -#: ../wikilib.php:1306
  +#: ../wikilib.php:1375
   msgid "Is it valid action ?"
   msgstr "올바른 액션입니까 ?"
   
  -#: ../wikilib.php:1353
  +#: ../wikilib.php:1422
   #, c-format
   msgid "File '%s' is deleted"
   msgstr "'%s' 파일이 지워졌습니다"
   
  -#: ../wikilib.php:1355
  +#: ../wikilib.php:1424
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr "'%s' 지우기를 실패했습니다"
   
  -#: ../wikilib.php:1360
  +#: ../wikilib.php:1429
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr "'%s' 디렉토리가 지우졌습니다"
   
  -#: ../wikilib.php:1362
  +#: ../wikilib.php:1431
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr "'%s' 지우기를 실패했습니다"
   
  -#: ../wikilib.php:1372 ../wikilib.php:1392
  +#: ../wikilib.php:1441 ../wikilib.php:1461
   msgid "No files are selected !"
   msgstr "파일을 선택하지 않았습니다"
   
  -#: ../wikilib.php:1385
  +#: ../wikilib.php:1454
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr "정말로 '%s'(을)를 지우시겠습니까 ?"
   
  -#: ../wikilib.php:1389
  +#: ../wikilib.php:1458
   msgid "Delete selected file"
   msgstr "선택된 파일 지우기"
   
  -#: ../wikilib.php:1410
  +#: ../wikilib.php:1479
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr "%s(이)가 지워짐 !"
   
  -#: ../wikilib.php:1425
  +#: ../wikilib.php:1494
   msgid "Please delete this file manually."
   msgstr "파일을 직접 지워주세요."
   
  -#: ../wikilib.php:1427
  +#: ../wikilib.php:1496
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "\"%s\"을(를) 지울까요 ?"
   
  -#: ../wikilib.php:1481
  +#: ../wikilib.php:1550
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
  -#: ../wikilib.php:1654
  +#: ../wikilib.php:1723
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr " 혹은 %s를 눌러 전체찾기를 합니다.\n"
   
  -#: ../wikilib.php:1654
  +#: ../wikilib.php:1723
   msgid "title"
   msgstr "제목"
   
  -#: ../wikilib.php:1668
  +#: ../wikilib.php:1737
   msgid "Please try to fulltext search"
   msgstr "전체 찾기를 해보시기 바랍니다"
   
  -#: ../wikilib.php:1671
  +#: ../wikilib.php:1740
   #, c-format
   msgid "You can also click %s to fulltext search.\n"
   msgstr "%s 아이콘을 눌러 전체 찾기를 하실 수 있습니다.\n"
   
  -#: ../wikilib.php:1716 ../wikilib.php:1829
  +#: ../wikilib.php:1785 ../wikilib.php:1898
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "%s을(를) 고치는 동안 다른 사람이 이 페이지를 저장했습니다"
   
  -#: ../wikilib.php:1722
  +#: ../wikilib.php:1791
   msgid "Section edit is not valid for non-exists page."
   msgstr "없는 페이지에 대한 섹션 편집은 가능하지 않습니다"
   
  -#: ../wikilib.php:1755 ../wikilib.php:2011
  +#: ../wikilib.php:1824 ../wikilib.php:2080
   msgid "mail does not supported by default."
   msgstr "메일이 지원되지 않습니다"
   
  -#: ../wikilib.php:1759 ../wikilib.php:2015
  +#: ../wikilib.php:1828 ../wikilib.php:2084
   msgid "Sent notification mail."
   msgstr "메일을 보냈습니다"
   
  -#: ../wikilib.php:1761 ../wikilib.php:2017
  +#: ../wikilib.php:1830 ../wikilib.php:2086
   msgid "No subscribers found."
   msgstr "구독자가 없습니다"
   
  -#: ../wikilib.php:1766 ../wikilib.php:2022
  +#: ../wikilib.php:1835 ../wikilib.php:2091
   #, c-format
   msgid "%s is not editable"
   msgstr "%s(이)가 쓰기가능하지 않음"
   
  -#: ../wikilib.php:1768 ../wikilib.php:2024
  +#: ../wikilib.php:1837 ../wikilib.php:2093
   #, c-format
   msgid "%s is saved"
   msgstr "%s(이)가 저장됨"
   
  -#: ../wikilib.php:1820
  +#: ../wikilib.php:1889
   msgid "Goto Editor"
   msgstr "편집기로 가기"
   
  -#: ../wikilib.php:1834
  +#: ../wikilib.php:1903
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr "%s 페이지 최근 내용이 병합되었습니다."
   
  -#: ../wikilib.php:1835
  +#: ../wikilib.php:1904
   #, c-format
   msgid "%s is merged successfully"
   msgstr "%s 페이지가 성공적으로 병합되었습니다"
   
  -#: ../wikilib.php:1839
  +#: ../wikilib.php:1908
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr "%s에 대하여 병합 충돌이 발견되었습니다 !"
   
  -#: ../wikilib.php:1840
  +#: ../wikilib.php:1909
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr "%s에 대해 병합이 취소되었습니다."
   
  -#: ../wikilib.php:1841
  +#: ../wikilib.php:1910
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1842
  +#: ../wikilib.php:1911
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1847
  +#: ../wikilib.php:1916
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr "%s에 대해 병합을 합니다"
   
  -#: ../wikilib.php:1848
  +#: ../wikilib.php:1917
   msgid "Please resolve conflicts manually."
   msgstr "충돌을 직접 해결하시기 바랍니다."
   
  -#: ../wikilib.php:1851
  +#: ../wikilib.php:1920
   #, c-format
   msgid "Force merging for %s !"
   msgstr "%s에 대해 병합이 강제로 되었습니다 !"
   
  -#: ../wikilib.php:1852
  +#: ../wikilib.php:1921
   msgid "Please be careful, you could damage useful information."
   msgstr "주의하시기 바랍니다. 중요한 정보를 잃어버릴 수도 있습니다."
   
  -#: ../wikilib.php:1866
  +#: ../wikilib.php:1935
   msgid "Conflict error!"
   msgstr "충돌 오류!"
   
  -#: ../wikilib.php:1907
  +#: ../wikilib.php:1976
   msgid "Too long Comment"
   msgstr "요약이 너무 깁니다"
   
  -#: ../wikilib.php:1957
  +#: ../wikilib.php:2026
   #, c-format
   msgid "Preview of %s"
   msgstr "%s 미리보기"
   
  -#: ../wikilib.php:2057
  +#: ../wikilib.php:2126
   msgid "Nobody subscribed to this page."
   msgstr "아무도 페이지를 구독하지 않고있습니다."
   
  -#: ../wikilib.php:2076
  +#: ../wikilib.php:2145
   #, c-format
   msgid "%s page is modified"
   msgstr "%s 페이지가 변경되었습니다"
   
  -#: ../wikilib.php:2105
  +#: ../wikilib.php:2174
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:2118
  +#: ../wikilib.php:2187
   msgid "Send notification mails to all subscribers"
   msgstr "모든 구독자에게 메일을 보냅니다"
   
  -#: ../wikilib.php:2123
  +#: ../wikilib.php:2192
   msgid "Mails are sent successfully"
   msgstr "메일이 성공적으로 보내졌습니다"
   
  -#: ../wikilib.php:2124
  +#: ../wikilib.php:2193
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr "'%s'에게 메일을 보냈습니다"
   
  -#: ../wikilib.php:2126
  +#: ../wikilib.php:2195
   msgid "Fail to send mail"
   msgstr "메일 보내기 실패했습니다"
   
  -#: ../wikilib.php:2137
  +#: ../wikilib.php:2206
   msgid "This wiki does not support sendmail"
   msgstr "위키에서 sendmail을 지원받지 못합니다"
   
  -#: ../wikilib.php:2267
  +#: ../wikilib.php:2344
   msgid "Invalid regular expression !"
   msgstr "잘못된 정규 표현식 !"
   
  -#: ../wikilib.php:2291
  +#: ../wikilib.php:2368
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:2294
  +#: ../wikilib.php:2371
   msgid "Infinite loop possible!"
   msgstr "무한 루프가 가능함!"
   
  -#: ../wikilib.php:2412
  +#: ../wikilib.php:2489
   msgid "OpenID"
   msgstr ""
   
  -#: ../wikilib.php:2463 ../wikilib.php:2553
  +#: ../wikilib.php:2540 ../wikilib.php:2630
   msgid "Make profile"
   msgstr "사용자 등록"
   
  -#: ../wikilib.php:2465
  +#: ../wikilib.php:2542
   msgid "password again"
   msgstr "비밀번호 재입력"
   
  -#: ../wikilib.php:2467 ../wikilib.php:2517
  +#: ../wikilib.php:2544 ../wikilib.php:2594
   msgid "Mail"
   msgstr "메일"
   
  -#: ../wikilib.php:2489
  +#: ../wikilib.php:2566
   msgid "New password"
   msgstr "새 비밀번호"
   
  -#: ../wikilib.php:2494
  +#: ../wikilib.php:2571
   msgid "Nickname"
   msgstr "별명"
   
  -#: ../wikilib.php:2518
  +#: ../wikilib.php:2595
   msgid "Time Zone"
   msgstr "시간대"
   
  -#: ../wikilib.php:2527
  +#: ../wikilib.php:2604
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:2905
  +#: ../wikilib.php:3005
   msgid "Show all"
   msgstr "모두 보기"
   
  -#: ../wikilib.php:3043
  +#: ../wikilib.php:3143
   msgid "Contents"
   msgstr "목차"
   
  -#: ../wikilib.php:3164
  +#: ../wikilib.php:3264
   #, c-format
   msgid "Title search for \"%s\""
   msgstr "\"%s\"에 대한 제목 찾기"
  
  
  


1282367224;wkpark;Update of /cvsroot/moniwiki/moniwiki/locale/po\nIn directory kill.kldp.net:/tmp/cvs-serv31541\n\nModified Files:\n	fr.po \nLog Message:\nupdate\n\n
wkpark      2010/08/21 14:07:04

  Modified:    locale/po fr.po
  Log:
  update
  
  Revision  Changes    Path
  1.33      +204 -532  moniwiki/locale/po/fr.po
  
  Index: fr.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/fr.po,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- fr.po	14 Aug 2010 05:55:21 -0000	1.32
  +++ fr.po	21 Aug 2010 05:07:04 -0000	1.33
  @@ -4,7 +4,7 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2010-08-14 13:21+0900\n"
  +"POT-Creation-Date: 2010-08-21 14:04+0900\n"
   "PO-Revision-Date: 2003-08-17 22:51+0900\n"
   "Last-Translator: Serge Stinckwich <Serge.Stinckwich@info.unicaen.fr>\n"
   "Language-Team: fr <fr@li.org>\n"
  @@ -12,23 +12,19 @@
   "Content-Type: text/plain; charset=iso-8859-1\n"
   "Content-Transfer-Encoding: 8bit\n"
   
  -# ../plugin/Attachment.php:24
   #: ../plugin/Attachment.php:72 ../plugin/Attachment.php:341
   #, c-format
   msgid "Upload new Attachment \"%s\""
   msgstr "T?l?charger le nouvel attachement \"%s\""
   
  -# ../plugin/OeKaki.php:118
   #: ../plugin/Attachment.php:333
   msgid "or paste a new png picture"
   msgstr "or Cr?er un nouveau dessin"
   
  -# ../plugin/OeKaki.php:118
   #: ../plugin/Attachment.php:338
   msgid "or draw a new gif picture"
   msgstr "or Cr?er un nouveau dessin"
   
  -# ../plugin/Attachment.php:24
   #: ../plugin/Attachment.php:344
   #, c-format
   msgid "Upload new Attachment \"%s\" on the \"%s\""
  @@ -38,7 +34,6 @@
   msgid "BabelFish Translation"
   msgstr ""
   
  -# ../wiki.php:850
   #: ../plugin/BabelFish.php:29
   #, c-format
   msgid "Translate %s to %s"
  @@ -49,18 +44,15 @@
   msgid "Blog cache of \"%s\" is refreshed"
   msgstr ""
   
  -# ../plugin/Blog.php:78
   #: ../plugin/Blog.php:110
   #, c-format
   msgid "\"%s\" is updated"
   msgstr "\"%s\" est mis ? jour"
   
  -# ../plugin/Blog.php:83
   #: ../plugin/Blog.php:115
   msgid "Add Blog"
   msgstr "Ajouter un blog"
   
  -# ../plugin/sendping.php:55
   #: ../plugin/Blog.php:156
   msgid "Error: No blog entry found!"
   msgstr ""
  @@ -69,36 +61,30 @@
   msgid "Error: Don't make a clone!"
   msgstr ""
   
  -# ../plugin/Blog.php:137
   #: ../plugin/Blog.php:194
   #, c-format
   msgid "Comment added to \"%s\""
   msgstr "Commentaire ajout? ? \"%s\""
   
  -# ../plugin/Blog.php:140
   #: ../plugin/Blog.php:197
   #, c-format
   msgid "Blog entry added to \"%s\""
   msgstr "Entr?e de blog ajout? ? \"%s\""
   
  -# ../plugin/Blog.php:140
   #: ../plugin/Blog.php:199
   #, c-format
   msgid "Blog entry \"%s\" added"
   msgstr "Entr?e de blog ajout? ? \"%s\""
   
  -# ../plugin/Blog.php:140
   #: ../plugin/Blog.php:201
   msgid "Blog entry added"
   msgstr "Entr?e de blog ajout? ?"
   
  -# ../plugin/Blog.php:176
   #: ../plugin/Blog.php:243
   #, c-format
   msgid "Add Comment to \"%s\""
   msgstr "Ajouter un commentaire ? \"%s\""
   
  -# ../plugin/Blog.php:178
   #: ../plugin/Blog.php:245
   #, c-format
   msgid "Add Blog entry to \"%s\""
  @@ -108,22 +94,19 @@
   msgid "Name"
   msgstr ""
   
  -# ../wiki.php:2950
   #: ../plugin/Blog.php:265 ../plugin/Blog.php:336
   #: ../plugin/RecentChanges.php:125
   msgid "Title"
   msgstr "titre"
   
  -#: ../plugin/Blog.php:271 ../wikilib.php:1211
  +#: ../plugin/Blog.php:271 ../wikilib.php:1280
   msgid "GUI"
   msgstr ""
   
  -# ../plugin/Blog.php:197
   #: ../plugin/Blog.php:280 ../plugin/Comment.php:114
   msgid "Don't add a signature"
   msgstr "Ne pas ajouter de signature"
   
  -# ../plugin/Blog.php:210
   #: ../plugin/Blog.php:302
   msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
   msgstr "<b>Une r?gle horizontale</b> ---- ne s'applique pas au mode blog."
  @@ -132,47 +115,39 @@
   msgid "Category: "
   msgstr ""
   
  -# ../locale/dummy.php:7
   #: ../plugin/BlogChanges.php:205 ../locale/dummy.php:7
   msgid "BlogChanges"
   msgstr "ModificationsBlog"
   
  -# ../wikilib.php:1483
   #: ../plugin/BlogChanges.php:251
   #, c-format
   msgid "Invalid category expr \"%s\""
   msgstr ""
   
  -# ../plugin/processor/blog.php:43 ../plugin/processor/blog.php:45
   #: ../plugin/BlogChanges.php:384 ../plugin/BlogChanges.php:386
   #: ../plugin/processor/blog.php:44 ../plugin/processor/blog.php:46
   msgid "Anonymous"
   msgstr "Anonyme"
   
  -# ../plugin/processor/blog.php:78
   #: ../plugin/BlogChanges.php:417 ../plugin/processor/blog.php:88
   #, c-format
   msgid "%d comment"
   msgstr "%d commentaire"
   
  -# ../plugin/processor/blog.php:78
   #: ../plugin/BlogChanges.php:417 ../plugin/processor/blog.php:88
   #, c-format
   msgid "%d comments"
   msgstr "%d commentaires"
   
  -# ../plugin/processor/blog.php:70
   #: ../plugin/BlogChanges.php:419 ../plugin/Comment.php:218
   #: ../plugin/processor/blog.php:80
   msgid "Add comment"
   msgstr "Ajouter un commentaire"
   
  -# ../plugin/processor/blog.php:89
   #: ../plugin/BlogChanges.php:429 ../plugin/processor/blog.php:99
   msgid "track back"
   msgstr ""
   
  -# ../plugin/BlogChanges.php:226
   #: ../plugin/BlogChanges.php:449
   msgid "Previous"
   msgstr "Pr?c?dent"
  @@ -181,17 +156,14 @@
   msgid "Next"
   msgstr ""
   
  -# ../plugin/OeKaki.php:118
   #: ../plugin/Clip.php:28
   msgid "Paste a new picture"
   msgstr ""
   
  -# ../plugin/Draw.php:58
   #: ../plugin/Clip.php:51 ../plugin/Draw.php:119
   msgid "Fatal error !"
   msgstr "Erreur fatale !"
   
  -# ../plugin/Draw.php:61
   #: ../plugin/Clip.php:54 ../plugin/Draw.php:122
   msgid "No filename given"
   msgstr "Aucun nom de fichier donn?"
  @@ -204,140 +176,117 @@
   msgid "Cut & Paste a Clipboard Image"
   msgstr ""
   
  -# ../plugin/processor/blog.php:78
   #: ../plugin/Comment.php:93
   msgid "Comment"
   msgstr "commentaire"
   
  -# ../wikilib.php:482
  -#: ../plugin/Comment.php:94 ../wikilib.php:942 ../wikilib.php:1205
  -#: ../wikilib.php:1880 ../wikilib.php:1977 ../monisetup.php:1307
  +#: ../plugin/Comment.php:94 ../wikilib.php:1011 ../wikilib.php:1274
  +#: ../wikilib.php:1949 ../wikilib.php:2046 ../monisetup.php:1307
   msgid "Preview"
   msgstr "Pr?visualisation"
   
  -# ../plugin/rename.php:27
   #: ../plugin/Comment.php:111
   msgid "Username"
   msgstr ""
   
  -# ../wikilib.php:814
   #: ../plugin/Comment.php:135
   msgid "Page is not writable"
   msgstr ""
   
  -# ../wiki.php:3009
   #: ../plugin/Comment.php:138
   msgid "You are not allowed to add a comment."
   msgstr ""
   
  -# ../plugin/restore.php:27
   #: ../plugin/Comment.php:139 ../plugin/Keywords.php:465
   msgid "Page does not exists"
   msgstr ""
   
   #: ../plugin/Comment.php:174 ../plugin/userform.php:121
  -#: ../plugin/userform.php:184 ../plugin/userform.php:207 ../wikilib.php:1930
  +#: ../plugin/userform.php:184 ../plugin/userform.php:207 ../wikilib.php:1999
   msgid "Invalid ticket !"
   msgstr ""
   
   #: ../plugin/Comment.php:179 ../plugin/userform.php:123
  -#: ../plugin/userform.php:209 ../wikilib.php:1935
  +#: ../plugin/userform.php:209 ../wikilib.php:2004
   msgid "You need a ticket !"
   msgstr ""
   
  -#: ../plugin/Comment.php:201 ../plugin/Gallery.php:182 ../plugin/bbs.php:1009
  -#: ../wikilib.php:1741 ../wikilib.php:1951
  +#: ../plugin/Comment.php:201 ../plugin/Gallery.php:137 ../plugin/bbs.php:1009
  +#: ../wikilib.php:1810 ../wikilib.php:2020
   msgid ""
   "Sorry, can not save page because some messages are blocked in this wiki."
   msgstr ""
   
  -# ../wikilib.php:748 ../wikilib.php:777
   #: ../plugin/Comment.php:207
   msgid "Preview comment"
   msgstr ""
   
  -# ../plugin/Vote.php:109
   #: ../plugin/Comment.php:338
   #, c-format
   msgid "%s is commented successfully"
   msgstr "Vote r?ussi"
   
  -# ../plugin/Vote.php:109
   #: ../plugin/Comment.php:339
   msgid "Comment added successfully"
   msgstr ""
   
  -# ../wiki.php:2211 ../wiki.php:2360
  -#: ../plugin/Diff.php:411 ../plugin/Info.php:251 ../plugin/Stat.php:125
  +#: ../plugin/Diff.php:411 ../plugin/Info.php:258 ../plugin/Stat.php:125
   msgid "No older revisions available"
   msgstr "Aucune r?vision plus ancienne disponible"
   
  -# ../wikilib.php:803
  -#: ../plugin/Diff.php:416 ../plugin/Info.php:257 ../plugin/Stat.php:131
  +#: ../plugin/Diff.php:416 ../plugin/Info.php:264 ../plugin/Stat.php:131
   #: ../plugin/rcsexport.php:13 ../plugin/rcsimport.php:13
   msgid "Version info is not available in this wiki"
   msgstr ""
   
  -# ../wiki.php:2338 ../wiki.php:2373 ../wikilib.php:770
  -#: ../plugin/Diff.php:428 ../wikilib.php:1900
  +#: ../plugin/Diff.php:428 ../wikilib.php:1969
   msgid "No difference found"
   msgstr "Aucune diff?rence trouv?"
   
  -# ../wiki.php:2376
   #: ../plugin/Diff.php:432
   msgid "Difference between versions"
   msgstr "Diff?rence entre les versions"
   
  -# ../wiki.php:2378
   #: ../plugin/Diff.php:434 ../plugin/Diff.php:550
   #, c-format
   msgid "Difference between r%s and r%s"
   msgstr "Diff?rence entre r%s et r%s"
   
  -# ../wiki.php:2382
   #: ../plugin/Diff.php:437 ../plugin/Diff.php:552
   #, c-format
   msgid "Difference between r%s and the current"
   msgstr "Diff?rence entre r%s et la version courante"
   
  -# ../locale/dummy.php:7
   #: ../plugin/Diff.php:554
   msgid "latest changes"
   msgstr ""
   
  -# ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
   #: ../plugin/Draw.php:36
   msgid "Draw new picture"
   msgstr "Faire un nouveau dessin"
   
  -# ../plugin/Draw.php:48
   #: ../plugin/Draw.php:92 ../plugin/UploadFile.php:294
   #, c-format
   msgid "Fail to copy \"%s\" to \"%s\""
   msgstr "Impossible de copier \"%s\" vers \"%s\""
   
  -# ../plugin/Draw.php:82
   #: ../plugin/Draw.php:147
   msgid "Edit drawing"
   msgstr "?diter le dessin"
   
  -# ../plugin/Draw.php:91
   #: ../plugin/Draw.php:156
   msgid "Edit new drawing"
   msgstr "?diter un nouveau dessin"
   
  -# ../plugin/DueDate.php:41
   #: ../plugin/DueDate.php:41
   #, c-format
   msgid "%d day(s) left until %s."
   msgstr "%d jour(s) restent avant %s."
   
  -# ../plugin/DueDate.php:43
   #: ../plugin/DueDate.php:43
   msgid "It's today."
   msgstr "C'est aujourd'hui."
   
  -# ../plugin/DueDate.php:45
   #: ../plugin/DueDate.php:45
   #, c-format
   msgid "%d day(s) passed from %s."
  @@ -355,7 +304,6 @@
   msgid "Close Editing Hints"
   msgstr ""
   
  -# ../wikilib.php:368
   #: ../plugin/EditHints.php:53
   msgid ""
   "<b>Emphasis:</b> '''<strong>bold</strong>''', ''<i>italics</i>''<br />\n"
  @@ -407,51 +355,47 @@
   msgid "Couldn't open search database, sorry."
   msgstr ""
   
  -#: ../plugin/FastSearch.php:138 ../plugin/FullSearch.php:263
  +#: ../plugin/FastSearch.php:138 ../plugin/FullSearch.php:264
   #, c-format
   msgid "%d match"
   msgstr ""
   
  -#: ../plugin/FastSearch.php:138 ../plugin/FullSearch.php:263
  +#: ../plugin/FastSearch.php:138 ../plugin/FullSearch.php:264
   #, c-format
   msgid "%d matches"
   msgstr ""
   
  -# ../plugin/FastSearch.php:116
  -#: ../plugin/FastSearch.php:160 ../plugin/FullSearch.php:19
  +#: ../plugin/FastSearch.php:161 ../plugin/FullSearch.php:19
   #, c-format
   msgid "Full text search for \"%s\""
   msgstr "Recherche en texte int?gral pour \"%s\""
   
  -# ../plugin/FastSearch.php:125
  -#: ../plugin/FastSearch.php:177 ../plugin/FullSearch.php:38
  -#: ../wikilib.php:1662
  +#: ../plugin/FastSearch.php:178 ../plugin/FullSearch.php:38
  +#: ../wikilib.php:1731
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr "Trouv? %s s'appariant avec %s sur un total de %s pages"
   
  -#: ../plugin/FastSearch.php:179 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1664
  +#: ../plugin/FastSearch.php:180 ../plugin/FullSearch.php:40
  +#: ../wikilib.php:1733
   msgid "page"
   msgstr ""
   
  -#: ../plugin/FastSearch.php:179 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1664
  +#: ../plugin/FastSearch.php:180 ../plugin/FullSearch.php:40
  +#: ../wikilib.php:1733
   msgid "pages"
   msgstr ""
   
  -#: ../plugin/FastSearch.php:184
  +#: ../plugin/FastSearch.php:185
   #, c-format
   msgid "Show all %d results"
   msgstr ""
   
  -# ../wikilib.php:1479
   #: ../plugin/FullSearch.php:15
   #, c-format
   msgid "BackLinks search for \"%s\""
   msgstr ""
   
  -# ../wikilib.php:1479
   #: ../plugin/FullSearch.php:17
   #, c-format
   msgid "KeyWords search for \"%s\""
  @@ -461,8 +405,8 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4686
  -#: ../wikilib.php:1189
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4725
  +#: ../wikilib.php:1258
   msgid "Refresh"
   msgstr ""
   
  @@ -471,7 +415,6 @@
   msgid " (%s search results)"
   msgstr ""
   
  -# ../wiki.php:2950
   #: ../plugin/FullSearch.php:51
   #, c-format
   msgid "You can also click %s to search title.\n"
  @@ -479,8 +422,8 @@
   " ou cliquer sur %s pour faire une recherche en texte int?gral de cette "
   "page.\n"
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5660 ../wiki.php:5668
  -#: ../wikilib.php:1672
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5706 ../wiki.php:5714
  +#: ../wikilib.php:1741
   msgid "here"
   msgstr ""
   
  @@ -492,48 +435,42 @@
   msgid "Case-sensitive searching"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:77 ../wikilib.php:3147 ../wikilib.php:3223
  +#: ../plugin/FullSearch.php:77 ../wikilib.php:3247 ../wikilib.php:3323
   msgid "Go"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:140
  +#: ../plugin/FullSearch.php:141
   msgid "Empty expression"
   msgstr ""
   
  -# ../wikilib.php:1483
  -#: ../plugin/FullSearch.php:144 ../wikilib.php:3168
  +#: ../plugin/FullSearch.php:145 ../wikilib.php:3268
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr "Expression de recherche \"%s\" invalide"
   
  -# ../plugin/TwinPages.php:20
  -#: ../plugin/Gallery.php:253 ../plugin/UploadedFiles.php:289
  +#: ../plugin/Gallery.php:208 ../plugin/UploadedFiles.php:289
   msgid "No files found"
   msgstr ""
   
  -# ../plugin/processor/blog.php:70
  -#: ../plugin/Gallery.php:345 ../plugin/Gallery.php:360
  +#: ../plugin/Gallery.php:300 ../plugin/Gallery.php:315
   msgid "add comment"
   msgstr ""
   
  -# ../plugin/processor/blog.php:78
  -#: ../plugin/Gallery.php:355
  +#: ../plugin/Gallery.php:310
   msgid "show comments"
   msgstr ""
   
  -# ../wikilib.php:769
  -#: ../plugin/Gallery.php:409 ../plugin/Gallery.php:413 ../wikilib.php:1728
  -#: ../wikilib.php:1898 ../wikilib.php:1905
  +#: ../plugin/Gallery.php:364 ../plugin/Gallery.php:368 ../wikilib.php:1797
  +#: ../wikilib.php:1967 ../wikilib.php:1974
   #, c-format
   msgid "Go back or return to %s"
   msgstr "Revenir en arri?re ou retourner ? %s"
   
  -#: ../plugin/Gallery.php:410
  +#: ../plugin/Gallery.php:365
   msgid "Comments are edited"
   msgstr ""
   
  -# ../plugin/Blog.php:137
  -#: ../plugin/Gallery.php:414
  +#: ../plugin/Gallery.php:369
   msgid "Comments is added"
   msgstr ""
   
  @@ -541,84 +478,78 @@
   msgid "Import URL"
   msgstr ""
   
  -#: ../plugin/Info.php:36
  +#: ../plugin/Info.php:39
   msgid "Compare"
   msgstr ""
   
  -# ../wiki.php:2110
  -#: ../plugin/Info.php:41
  +#: ../plugin/Info.php:44
   msgid "Revision History"
   msgstr "Historique de r?vision"
   
  -#: ../plugin/Info.php:44
  +#: ../plugin/Info.php:47
   msgid "Ver."
   msgstr ""
   
  -#: ../plugin/Info.php:44 ../plugin/UploadedFiles.php:305
  +#: ../plugin/Info.php:47 ../plugin/UploadedFiles.php:305
   msgid "Date"
   msgstr ""
   
  -# ../locale/dummy.php:7
  -#: ../plugin/Info.php:45 ../plugin/RecentChanges.php:129
  +#: ../plugin/Info.php:48 ../plugin/RecentChanges.php:129
   msgid "Changes"
   msgstr ""
   
  -# ../wikilib.php:734
  -#: ../plugin/Info.php:46 ../plugin/RecentChanges.php:128
  +#: ../plugin/Info.php:49 ../plugin/RecentChanges.php:128
   msgid "Editor"
   msgstr ""
   
  -#: ../plugin/Info.php:50
  +#: ../plugin/Info.php:53
   msgid "View"
   msgstr ""
   
  -#: ../plugin/Info.php:51
  +#: ../plugin/Info.php:54
   msgid "admin."
   msgstr ""
   
  -#: ../plugin/Info.php:71
  +#: ../plugin/Info.php:78
   msgid "Show all revisions"
   msgstr ""
   
  -#: ../plugin/Info.php:106
  +#: ../plugin/Info.php:113
   msgid "Yesterday"
   msgstr ""
   
  -#: ../plugin/Info.php:107
  +#: ../plugin/Info.php:114
   #, c-format
   msgid "%s days ago"
   msgstr ""
   
  -#: ../plugin/Info.php:109
  +#: ../plugin/Info.php:116
   #, c-format
   msgid "%s hours ago"
   msgstr ""
   
  -#: ../plugin/Info.php:111
  +#: ../plugin/Info.php:118
   #, c-format
   msgid "%s min ago"
   msgstr ""
   
  -#: ../plugin/Info.php:220 ../plugin/rename.php:80
  +#: ../plugin/Info.php:227 ../plugin/rename.php:80
   msgid "show only"
   msgstr ""
   
  -#: ../plugin/Info.php:224
  +#: ../plugin/Info.php:231
   msgid "purge"
   msgstr ""
   
  -# ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
   #: ../plugin/JME.php:64
   #, c-format
   msgid "Draw a new molecule '%s'"
   msgstr ""
   
  -# ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
   #: ../plugin/JME.php:66
   msgid "Draw a new molecule"
   msgstr ""
   
  -# ../plugin/Vote.php:109
   #: ../plugin/JME.php:105
   msgid "Molecule successfully added"
   msgstr ""
  @@ -663,12 +594,10 @@
   msgid "select language"
   msgstr ""
   
  -# ../wiki.php:3009
   #: ../plugin/Keywords.php:464
   msgid "You are not able to add keywords."
   msgstr ""
   
  -# ../wikilib.php:814
   #: ../plugin/Keywords.php:478
   #, c-format
   msgid "%s is not found."
  @@ -683,7 +612,6 @@
   msgid "Keywords for %s are updated"
   msgstr ""
   
  -# ../plugin/quicklinks.php:38
   #: ../plugin/Keywords.php:667
   msgid "Keywords are updated"
   msgstr ""
  @@ -718,12 +646,10 @@
   msgid "Select keywords for %s"
   msgstr ""
   
  -# ../wikilib.php:672 ../wikilib.php:1472
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1549 ../wikilib.php:3155
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1618 ../wikilib.php:3255
   msgid "Use more specific text"
   msgstr "Utiliser un texte plus sp?cifique"
   
  -# ../plugin/man_get.php:23
   #: ../plugin/LikePages.php:79
   msgid "No metadb found"
   msgstr ""
  @@ -736,7 +662,6 @@
   msgid "These pages share an initial or final title word..."
   msgstr ""
   
  -# ../plugin/man_get.php:23
   #: ../plugin/LikePages.php:158
   msgid "No similar pages found"
   msgstr ""
  @@ -762,22 +687,18 @@
   msgid "Slow Slow"
   msgstr ""
   
  -# ../plugin/man_get.php:23
   #: ../plugin/Navigation.php:19
   msgid "No Index page found"
   msgstr ""
   
  -# ../plugin/Draw.php:26 ../plugin/OeKaki.php:36
   #: ../plugin/OeKaki.php:36
   msgid "Draw a new picture"
   msgstr ""
   
  -# ../plugin/OeKaki.php:118
   #: ../plugin/OeKaki.php:118
   msgid "Create new picture"
   msgstr "Cr?er un nouveau dessin"
   
  -# ../plugin/OeKaki.php:125
   #: ../plugin/OeKaki.php:127
   msgid "Edit Image"
   msgstr "?diter l'image"
  @@ -813,7 +734,6 @@
   msgid "License"
   msgstr ""
   
  -# ../plugin/VisualTour.php:59
   #: ../plugin/PluginInfo.php:60 ../plugin/admin.php:143
   msgid "Depend"
   msgstr ""
  @@ -842,8 +762,6 @@
   msgid "Very Gooood!"
   msgstr ""
   
  -# ../plugin/Vote.php:66 ../plugin/security/needtologin.php:25
  -# ../plugin/security/needtologin.php:35
   #: ../plugin/Rating.php:86 ../plugin/Vote.php:67
   #: ../plugin/security/community.php:27 ../plugin/security/community.php:37
   #: ../plugin/security/community.php:47 ../plugin/security/community.php:62
  @@ -860,7 +778,6 @@
   msgid "Invalid rating request !"
   msgstr ""
   
  -# ../plugin/Vote.php:109
   #: ../plugin/Rating.php:205
   msgid "Rating successfully !"
   msgstr ""
  @@ -880,12 +797,10 @@
   msgid "%d days ago"
   msgstr ""
   
  -# ../locale/dummy.php:3
   #: ../plugin/RecentChanges.php:86
   msgid "Recent Changes"
   msgstr "ChangementsR?cents"
   
  -# ../locale/dummy.php:7
   #: ../plugin/RecentChanges.php:126
   msgid "Change Date"
   msgstr ""
  @@ -910,7 +825,6 @@
   msgid "Bookmark"
   msgstr ""
   
  -# ../locale/dummy.php:7
   #: ../plugin/RecentChanges.php:375
   #, c-format
   msgid "%s changes"
  @@ -929,7 +843,6 @@
   msgid "Cancel All files"
   msgstr ""
   
  -# ../plugin/man_get.php:23
   #: ../plugin/SlideShow.php:28
   msgid "No page found"
   msgstr ""
  @@ -946,7 +859,6 @@
   msgid "Next:"
   msgstr ""
   
  -# ../wikilib.php:482
   #: ../plugin/SlideShow.php:130
   msgid "Prev:"
   msgstr ""
  @@ -959,12 +871,10 @@
   msgid "Diff"
   msgstr ""
   
  -# ../wiki.php:2110
   #: ../plugin/Stat.php:26
   msgid "Revision Statistics"
   msgstr ""
   
  -# ../wikilib.php:484
   #: ../plugin/SystemInfo.php:16
   msgid "Number of Pages"
   msgstr ""
  @@ -989,13 +899,11 @@
   msgid "Keywords"
   msgstr ""
   
  -# ../plugin/minilogin.php:30
   #: ../plugin/Tour.php:70
   #, c-format
   msgid " from %s"
   msgstr ""
   
  -# ../plugin/minilogin.php:30
   #: ../plugin/Tour.php:73
   #, c-format
   msgid "%s Tour %s"
  @@ -1005,12 +913,10 @@
   msgid "links"
   msgstr ""
   
  -# ../plugin/VisualTour.php:59
   #: ../plugin/Tour.php:123
   msgid "deeper"
   msgstr ""
   
  -# ../plugin/minilogin.php:30
   #: ../plugin/Tour.php:124
   #, c-format
   msgid "More %s or more %s"
  @@ -1026,18 +932,15 @@
   msgid "Total %d related pages"
   msgstr ""
   
  -# ../plugin/TwinPages.php:13
   #: ../plugin/TwinPages.php:13
   #, c-format
   msgid "TwinPages of %s"
   msgstr "TwinPages de %s"
   
  -# ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../plugin/TwinPages.php:20 ../wiki.php:5645
  +#: ../plugin/TwinPages.php:20 ../wiki.php:5691
   msgid "See [TwinPages]: "
   msgstr "Voir [TwinPages]: "
   
  -# ../plugin/TwinPages.php:20
   #: ../plugin/TwinPages.php:22
   msgid "No TwinPages found."
   msgstr "Aucune TwinPages trouv?"
  @@ -1056,7 +959,6 @@
   msgid "The uploaded file was only partially uploaded"
   msgstr ""
   
  -# ../wikilib.php:557 ../wikilib.php:559
   #: ../plugin/UploadFile.php:17
   msgid "No file was uploaded"
   msgstr ""
  @@ -1077,13 +979,11 @@
   msgid "Unknown upload error"
   msgstr ""
   
  -# ../wikilib.php:519
   #: ../plugin/UploadFile.php:184 ../plugin/UploadFile.php:198
   #, c-format
   msgid "The %s type of %s is not allowed to upload"
   msgstr ""
   
  -# ../wikilib.php:519
   #: ../plugin/UploadFile.php:200
   #, c-format
   msgid "%s is not allowed to upload"
  @@ -1098,13 +998,11 @@
   msgid "ERROR:"
   msgstr ""
   
  -# ../wikilib.php:887
   #: ../plugin/UploadFile.php:305
   #, c-format
   msgid "File \"%s\" is uploaded successfully"
   msgstr ""
   
  -# ../wikilib.php:887
   #: ../plugin/UploadFile.php:372
   msgid "Files are uploaded successfully"
   msgstr ""
  @@ -1121,7 +1019,6 @@
   msgid "Rename if it already exist"
   msgstr ""
   
  -# ../plugin/rename.php:27
   #: ../plugin/UploadFile.php:427 ../plugin/rename.php:69
   msgid "Rename"
   msgstr "Renommer"
  @@ -1130,7 +1027,6 @@
   msgid "Upload"
   msgstr ""
   
  -# ../plugin/minilogin.php:30
   #: ../plugin/UploadFile.php:435
   #, c-format
   msgid "or %s."
  @@ -1164,7 +1060,6 @@
   msgid "Attachments"
   msgstr ""
   
  -# ../plugin/rename.php:27
   #: ../plugin/UploadedFiles.php:303
   msgid "File name"
   msgstr ""
  @@ -1186,40 +1081,34 @@
   msgid "Total %d files"
   msgstr ""
   
  -# ../plugin/rename.php:36
   #: ../plugin/UploadedFiles.php:453 ../plugin/login.php:32
   #: ../plugin/rcsimport.php:32 ../plugin/rcsimport.php:88
  -#: ../plugin/rename.php:77 ../plugin/revert.php:82 ../plugin/userinfo.php:37
  -#: ../wikilib.php:1387 ../wikilib.php:2395
  +#: ../plugin/rename.php:77 ../plugin/revert.php:98 ../plugin/userinfo.php:37
  +#: ../wikilib.php:1456 ../wikilib.php:2472
   msgid "Password"
   msgstr "Mot de passe"
   
  -# ../wikilib.php:550
  -#: ../plugin/UploadedFiles.php:454 ../wikilib.php:1365
  +#: ../plugin/UploadedFiles.php:454 ../wikilib.php:1434
   msgid "Delete selected files"
   msgstr "Effacer les fichiers s?lectionn?s"
   
  -# ../plugin/VisualTour.php:55
   #: ../plugin/VisualTour.php:133
   msgid "Normal"
   msgstr ""
   
  -# ../plugin/VisualTour.php:57
   #: ../plugin/VisualTour.php:135
   msgid "Wider"
   msgstr "Plus large"
   
  -# ../plugin/VisualTour.php:59
   #: ../plugin/VisualTour.php:137
   msgid "Deeper"
   msgstr "Plus profond"
   
  -# ../plugin/Vote.php:109
   #: ../plugin/Vote.php:113
   msgid "Voted successfully"
   msgstr "Vote r?ussi"
   
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2904
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:3004
   msgid "Others"
   msgstr ""
   
  @@ -1275,12 +1164,10 @@
   msgid "Enable/disable plugins and processors"
   msgstr ""
   
  -# ../locale/dummy.php:7
   #: ../plugin/atom.php:64 ../plugin/rss_rc.php:62
   msgid "show changes"
   msgstr ""
   
  -# ../wikilib.php:887
   #: ../plugin/backup.php:42
   msgid "Your wiki is backuped successfully"
   msgstr ""
  @@ -1289,7 +1176,6 @@
   msgid "Backup failed !"
   msgstr ""
   
  -# ../plugin/backup.php:46
   #: ../plugin/backup.php:54
   msgid "Did you want to Backup your wiki ?"
   msgstr "Voulez vous faire une sauvegarde de votre wiki ?"
  @@ -1302,13 +1188,11 @@
   msgid "No"
   msgstr ""
   
  -# ../locale/dummy.php:6 ../wiki.php:2553
   #: ../plugin/bbs.php:626
   msgid "Edit"
   msgstr ""
   
  -# ../locale/dummy.php:5
  -#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1388
  +#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1457
   msgid "Delete"
   msgstr ""
   
  @@ -1324,7 +1208,6 @@
   msgid "New"
   msgstr ""
   
  -# ../plugin/rename.php:27
   #: ../plugin/bbs.php:784
   msgid "Read"
   msgstr "Renommer"
  @@ -1334,8 +1217,6 @@
   msgid "Total %s articles."
   msgstr ""
   
  -# ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
  -# c-format
   #: ../plugin/bbs.php:836
   #, c-format
   msgid "Your IP address is not allowed to %s at this BBS"
  @@ -1349,7 +1230,6 @@
   msgid "Fail to post comment."
   msgstr ""
   
  -# ../wikilib.php:540
   #: ../plugin/bbs.php:932
   #, c-format
   msgid "The article %s will be deleted."
  @@ -1367,12 +1247,10 @@
   msgid "No Subject error."
   msgstr ""
   
  -# ../plugin/Vote.php:109
   #: ../plugin/bbs.php:1025
   msgid "New post added successfully"
   msgstr ""
   
  -# ../wiki.php:3024
   #: ../plugin/bookmark.php:33
   msgid "Invalid bookmark!"
   msgstr ""
  @@ -1394,7 +1272,6 @@
   msgid "Permission of \"%s\" changed !"
   msgstr ""
   
  -# ../wiki.php:3021
   #: ../plugin/chmod.php:24
   #, c-format
   msgid "Fail to chmod \"%s\" !"
  @@ -1405,7 +1282,6 @@
   msgid "Change permission of \"%s\""
   msgstr ""
   
  -# ../plugin/css.php:29 ../plugin/css.php:37
   #: ../plugin/css.php:34 ../plugin/css.php:42
   msgid "Back to UserPreferences"
   msgstr "Retour ? UserPreferences"
  @@ -1414,7 +1290,6 @@
   msgid "CSS disabled !"
   msgstr ""
   
  -# ../plugin/format.php:16
   #: ../plugin/format.php:17
   msgid "It is a XML format !"
   msgstr "C'est un format XML !"
  @@ -1423,63 +1298,52 @@
   msgid "The TCPDF class not found!"
   msgstr ""
   
  -#: ../plugin/login.php:31 ../wikilib.php:2425 ../wikilib.php:2560
  +#: ../plugin/login.php:31 ../wikilib.php:2502 ../wikilib.php:2637
   msgid "ID"
   msgstr ""
   
  -# ../plugin/login.php:27
   #: ../plugin/login.php:33
   msgid "Join"
   msgstr "Se joindre ?"
   
  -# ../plugin/login.php:26 ../wikilib.php:1051
  -#: ../plugin/login.php:34 ../wikilib.php:2411
  +#: ../plugin/login.php:34 ../wikilib.php:2488
   msgid "Login"
   msgstr "Se connecter"
   
  -# ../plugin/login.php:41 ../plugin/minilogin.php:29
  -#: ../plugin/login.php:52 ../plugin/minilogin.php:25
  +#: ../plugin/login.php:54 ../plugin/minilogin.php:25
   msgid "Logout"
   msgstr "Se d?connecter"
   
  -# ../locale/dummy.php:3 ../plugin/login.php:42 ../plugin/minilogin.php:28
  -#: ../plugin/login.php:53 ../plugin/minilogin.php:24 ../locale/dummy.php:3
  +#: ../plugin/login.php:55 ../plugin/minilogin.php:24 ../locale/dummy.php:3
   msgid "UserPreferences"
   msgstr "Pr?f?rencesUtilisateur"
   
  -# ../plugin/man_get.php:13
  +#: ../plugin/login.php:56 ../plugin/minilogin.php:26
  +#, c-format
  +msgid "%s or %s"
  +msgstr "%s ou %s"
  +
   #: ../plugin/man_get.php:17
   msgid "No manpage selected"
   msgstr "Aucune page de manuel s?lectionn?"
   
  -# ../plugin/man_get.php:23
   #: ../plugin/man_get.php:43
   msgid "No manpage found"
   msgstr "Aucune page de manuel trouv?"
   
  -# ../plugin/OeKaki.php:125
   #: ../plugin/man_get.php:122
   msgid "Edit man page"
   msgstr ""
   
  -# ../plugin/minilogin.php:22 ../wikilib.php:1076
  -#: ../plugin/minilogin.php:18 ../wikilib.php:2480
  +#: ../plugin/minilogin.php:18 ../wikilib.php:2557
   msgid "Login or Join"
   msgstr "Se connecter ou se joindre ?"
   
  -# ../plugin/minilogin.php:30
  -#: ../plugin/minilogin.php:26
  -#, c-format
  -msgid "%s or %s"
  -msgstr "%s ou %s"
  -
  -# ../wiki.php:850
   #: ../plugin/msgfmt.php:75 ../plugin/msgfmt.php:153
   #, c-format
   msgid "Translation of %s"
   msgstr ""
   
  -# ../wikilib.php:887
   #: ../plugin/msgfmt.php:84
   msgid "Translations are successfully updated."
   msgstr ""
  @@ -1488,7 +1352,6 @@
   msgid "Fail to save translations."
   msgstr ""
   
  -# ../wiki.php:3009
   #: ../plugin/msgtrans.php:39 ../plugin/userinfo.php:86
   #, c-format
   msgid "You are not allowed to \"%s\" !"
  @@ -1498,7 +1361,6 @@
   msgid "Local translation files are successfully translated !\n"
   msgstr ""
   
  -# ../plugin/OeKaki.php:118
   #: ../plugin/new.php:13 ../plugin/new.php:28
   msgid "Create a new page"
   msgstr ""
  @@ -1507,7 +1369,6 @@
   msgid "Page Name"
   msgstr ""
   
  -# ../wiki.php:2945 ../wiki.php:2948
   #: ../plugin/new.php:27
   msgid "Normalize this page name"
   msgstr ""
  @@ -1535,28 +1396,24 @@
   msgid "raw"
   msgstr ""
   
  -# ../locale/dummy.php:3
   #: ../plugin/processor/bts.php:181
   msgid "Save Changes"
   msgstr ""
   
  -#: ../plugin/processor/monimarkup.php:515 ../wiki.php:4049
  +#: ../plugin/processor/monimarkup.php:523 ../wiki.php:4071
   msgid "edit"
   msgstr ""
   
  -# ../plugin/quicklinks.php:16 ../plugin/subscribe.php:24
   #: ../plugin/quicklinks.php:16 ../plugin/scrap.php:37
   #: ../plugin/subscribe.php:19 ../plugin/subscribe.php:55
   msgid "Please login or make your ID."
   msgstr "Merci de vous connectez ou de construire un ID"
   
  -# ../plugin/quicklinks.php:22 ../plugin/subscribe.php:30
   #: ../plugin/quicklinks.php:22 ../plugin/scrap.php:40
   #: ../plugin/subscribe.php:61
   msgid "Goto UserPreferences"
   msgstr "Aller ? UserPreferences"
   
  -# ../plugin/quicklinks.php:23
   #: ../plugin/quicklinks.php:23
   msgid ""
   "If you want to custumize your quicklinks, just make your ID and register "
  @@ -1565,23 +1422,19 @@
   "Si vous voulez particulariser les liens rapides, construire votre ID et "
   "enregistrez votre adresse email dans les UserPreferences."
   
  -# ../plugin/quicklinks.php:38
   #: ../plugin/quicklinks.php:38
   msgid "QucikLinks are updated."
   msgstr "Les liens rapides ont ?t? mis ? jour."
   
  -# ../plugin/quicklinks.php:50
   #: ../plugin/quicklinks.php:50
   msgid "Do you want to customize your quicklinks ?"
   msgstr "Voulez vous mettre ? jour vos liens rapides ?"
   
  -# ../plugin/Blog.php:178
   #: ../plugin/rawblog.php:63 ../plugin/rawblog.php:73
   #, c-format
   msgid "Delete Blog entry \"%s\""
   msgstr ""
   
  -# ../wikilib.php:803
   #: ../plugin/rcs.php:13
   #, c-format
   msgid "%s does not support rcs options."
  @@ -1592,7 +1445,6 @@
   msgid "Change options for \"%s\""
   msgstr ""
   
  -# ../wiki.php:3021
   #: ../plugin/rcs.php:32
   #, c-format
   msgid "Fail to rcs \"%s\" !"
  @@ -1603,12 +1455,10 @@
   msgid "Change options for \"%s\" ?"
   msgstr ""
   
  -# ../plugin/rename.php:37
   #: ../plugin/rcs.php:47
   msgid "Only WikiMaster can execute rcs"
   msgstr ""
   
  -# ../plugin/rename.php:27
   #: ../plugin/rcsimport.php:76
   msgid "Page name"
   msgstr ""
  @@ -1622,13 +1472,10 @@
   msgid "RCS purge \"%s\""
   msgstr ""
   
  -# ../locale/dummy.php:7
   #: ../plugin/rdf_blog.php:30 ../plugin/rss_blog.php:25
   msgid "Blog Changes"
   msgstr "ModificationsBlog"
   
  -# ../locale/dummy.php:7
  -# c-format
   #: ../plugin/rdf_blog.php:44 ../plugin/rss_blog.php:103
   #, c-format
   msgid "BlogChanges at %s"
  @@ -1638,31 +1485,26 @@
   msgid "Referer history"
   msgstr ""
   
  -# ../plugin/rename.php:14
   #: ../plugin/rename.php:19
   #, c-format
   msgid "\"%s\" is renamed !"
   msgstr "\"%s\" est renomm? !"
   
  -# ../wikilib.php:816
   #: ../plugin/rename.php:35
   #, c-format
   msgid "'%s' is changed"
   msgstr ""
   
  -# ../plugin/Vote.php:109
   #: ../plugin/rename.php:43
   #, c-format
   msgid "'%s' is renamed as '%s' successfully."
   msgstr ""
   
  -# ../plugin/rename.php:20
   #: ../plugin/rename.php:51
   #, c-format
   msgid "Fail to rename \"%s\" !"
   msgstr "Impossible de renommer \"%s\" !"
   
  -# ../plugin/rename.php:27
   #: ../plugin/rename.php:58
   #, c-format
   msgid "Rename \"%s\" ?"
  @@ -1672,7 +1514,6 @@
   msgid "Old name:"
   msgstr ""
   
  -# ../plugin/rename.php:27
   #: ../plugin/rename.php:64
   msgid "New name:"
   msgstr ""
  @@ -1681,13 +1522,11 @@
   msgid "Rename and fix Backlinks"
   msgstr ""
   
  -# ../plugin/rename.php:37
   #: ../plugin/rename.php:78
   msgid "Only WikiMaster can rename this page"
   msgstr "Seulement le WikiMaster peut renommer cette page"
   
  -# ../plugin/rename.php:39 ../wikilib.php:588
  -#: ../plugin/rename.php:79 ../wikilib.php:1433
  +#: ../plugin/rename.php:79 ../wikilib.php:1502
   msgid "with revision history"
   msgstr "avec l'historique de r?vision"
   
  @@ -1695,12 +1534,10 @@
   msgid "Check backlinks"
   msgstr ""
   
  -# ../plugin/restore.php:23
   #: ../plugin/restore.php:23
   msgid "Error: Don't try to overwrite it"
   msgstr "Erreur : n'essayez pas d'?crire par dessus"
   
  -# ../plugin/subscribe.php:22
   #: ../plugin/restore.php:24
   msgid "Please rename your old 'text_dir' first."
   msgstr ""
  @@ -1709,24 +1546,20 @@
   msgid "e.g. \\$ mv data/text data/text_old"
   msgstr ""
   
  -# ../plugin/restore.php:27
   #: ../plugin/restore.php:29
   msgid "Error: tarball does not exists"
   msgstr "Erreur : l'archive n'existe pas"
   
  -# ../plugin/restore.php:32
   #: ../plugin/restore.php:34
   #, c-format
   msgid "Restore %s"
   msgstr "Restaurer %s"
   
  -# ../plugin/restore.php:45
   #: ../plugin/restore.php:50
   #, c-format
   msgid "Restore %s ?"
   msgstr "Restaurer %s ?"
   
  -# ../plugin/restore.php:62
   #: ../plugin/restore.php:67
   msgid "Restore backuped data"
   msgstr "Restaurer des donn?es sauvegard?es"
  @@ -1735,107 +1568,99 @@
   msgid "Select a tarball file to restore"
   msgstr ""
   
  -#: ../plugin/revert.php:23 ../wiki.php:5662
  +#: ../plugin/revert.php:23 ../wiki.php:5708
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr ""
   
  -# ../wiki.php:2211 ../wiki.php:2360
  -#: ../plugin/revert.php:57
  +#: ../plugin/revert.php:67
   msgid "No version control available."
   msgstr ""
   
  -# ../plugin/Vote.php:109
  -#: ../plugin/revert.php:61
  +#: ../plugin/revert.php:71
   #, c-format
   msgid "%s is successfully rollback."
   msgstr ""
   
  -#: ../plugin/revert.php:66
  +#: ../plugin/revert.php:76
  +msgid "Please select old revision to revert."
  +msgstr ""
  +
  +#: ../plugin/revert.php:79
   msgid "Are you really want to overwrite this page ?"
   msgstr ""
   
  -#: ../plugin/revert.php:67
  +#: ../plugin/revert.php:80
   msgid "Force overwrite"
   msgstr ""
   
  -#: ../plugin/revert.php:69
  +#: ../plugin/revert.php:82
   msgid "Are you really want to revert this page ?"
   msgstr ""
   
  -#: ../plugin/revert.php:74 ../wikilib.php:1200
  +#: ../plugin/revert.php:89 ../wikilib.php:1269
   msgid "Summary"
   msgstr ""
   
  -# ../wikilib.php:769
  -#: ../plugin/revert.php:76
  +#: ../plugin/revert.php:92
   #, c-format
   msgid "Rollback to revision %s"
   msgstr ""
   
  -#: ../plugin/revert.php:79
  +#: ../plugin/revert.php:95
   msgid "Revert page"
   msgstr ""
   
  -# ../plugin/rename.php:37
  -#: ../plugin/revert.php:80
  +#: ../plugin/revert.php:96
   #, c-format
   msgid "Only WikiMaster can %s this page"
   msgstr ""
   
  -# ../wikilib.php:482
  -#: ../plugin/revert.php:80
  +#: ../plugin/revert.php:96
   #, c-format
   msgid "revert"
   msgstr ""
   
  -# ../plugin/subscribe.php:46
   #: ../plugin/scrap.php:55
   msgid "Scrap lists updated."
   msgstr ""
   
  -# ../plugin/Blog.php:78
   #: ../plugin/scrap.php:65
   #, c-format
   msgid "\"%s\" is unscrapped."
   msgstr ""
   
  -# ../wikilib.php:816
   #: ../plugin/scrap.php:68
   #, c-format
   msgid "\"%s\" is scrapped."
   msgstr ""
   
  -# ../plugin/subscribe.php:58
   #: ../plugin/scrap.php:94
   #, c-format
   msgid "Do you want to scrap \"%s\" ?"
   msgstr ""
   
  -# ../locale/dummy.php:3
   #: ../plugin/scrap.php:97
   msgid "Scrapped pages"
   msgstr ""
   
  -#: ../plugin/security/acl.php:141
  +#: ../plugin/security/acl.php:202
   msgid "ACL groups"
   msgstr ""
   
  -#: ../plugin/security/acl.php:144
  +#: ../plugin/security/acl.php:205
   msgid "Allowed ACL actions"
   msgstr ""
   
  -#: ../plugin/security/acl.php:149
  +#: ../plugin/security/acl.php:210
   msgid "Denied ACL actions"
   msgstr ""
   
  -#: ../plugin/security/acl.php:154
  +#: ../plugin/security/acl.php:215
   msgid "Protected ACL actions"
   msgstr ""
   
  -# ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
  -# c-format
  -#: ../plugin/security/acl.php:217 ../plugin/security/community.php:26
  +#: ../plugin/security/acl.php:278 ../plugin/security/community.php:26
   #: ../plugin/security/community.php:36 ../plugin/security/community.php:46
   #: ../plugin/security/mustlogin.php:28 ../plugin/security/mustlogin.php:39
   #: ../plugin/security/mustlogin.php:50 ../plugin/security/needtologin.php:28
  @@ -1846,11 +1671,10 @@
   msgid "You are not allowed to '%s' on this page"
   msgstr "Vous n'?tes pas autoris? ? pouvoir '%s' cette page"
   
  -#: ../plugin/security/acl.php:218
  +#: ../plugin/security/acl.php:279
   msgid "Please contact WikiMasters :b"
   msgstr ""
   
  -# ../wiki.php:3009
   #: ../plugin/security/authbasic.php:68
   #, c-format
   msgid "You have no permission to '%s'."
  @@ -1860,8 +1684,6 @@
   msgid "You must enter a valid login ID and password to access this resource.\n"
   msgstr ""
   
  -# ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
  -# c-format
   #: ../plugin/security/community.php:61 ../plugin/security/htaccesslogin.php:46
   #: ../plugin/security/mustlogin.php:66 ../plugin/security/userbased.php:30
   #: ../plugin/security/userbased.php:38 ../plugin/security/userbased.php:46
  @@ -1881,22 +1703,18 @@
   msgid "Please contact to WikiMaster"
   msgstr ""
   
  -# ../plugin/sendping.php:14 ../plugin/trackback.php:41
   #: ../plugin/sendping.php:13 ../plugin/trackback.php:40
   msgid "Error: Page Not found !"
   msgstr "Erreur : page non trouv? !"
   
  -# ../plugin/sendping.php:55
   #: ../plugin/sendping.php:54
   msgid "Error: No entry found!"
   msgstr "Erreur : entr?e non trouv? !"
   
  -# ../plugin/sendping.php:73
   #: ../plugin/sendping.php:71
   msgid "Send TrackBack ping"
   msgstr "Envoy? un ping de TrackBack"
   
  -# ../plugin/sendping.php:158
   #: ../plugin/sendping.php:165
   msgid "Trackback sent"
   msgstr "Trackback envoy?"
  @@ -1905,17 +1723,14 @@
   msgid "You did'nt subscribed any pages yet."
   msgstr ""
   
  -# ../wikilib.php:809
   #: ../plugin/subscribe.php:35
   msgid "No subscribed pages found."
   msgstr ""
   
  -# ../plugin/subscribe.php:12
   #: ../plugin/subscribe.php:42
   msgid "EmailNotification is not activated"
   msgstr "EmailNotification n'est pas activ?"
   
  -# ../plugin/subscribe.php:13
   #: ../plugin/subscribe.php:43
   msgid ""
   "If you want to subscribe this page please contact the WikiMaster to activate "
  @@ -1924,12 +1739,10 @@
   "Si vous voulez vous abonner ? cette page, merci de contacter le "
   "WikiMasterpour activer la notification par email"
   
  -# ../plugin/subscribe.php:22
   #: ../plugin/subscribe.php:53
   msgid "Please enter your email address first."
   msgstr "Merci de rentrer d'abord votre adresse de messagerie"
   
  -# ../plugin/subscribe.php:31
   #: ../plugin/subscribe.php:62
   msgid ""
   "If you want to subscribe this page, just make your ID and register your "
  @@ -1938,7 +1751,6 @@
   "Si vous voulez vous abonner ? cette page, construire votre ID et enregistrer "
   "votre adresse de messagerie dans UserPreferences."
   
  -# ../plugin/subscribe.php:46
   #: ../plugin/subscribe.php:77
   msgid "Subscribe lists updated."
   msgstr "Listes d'abonnement mises ? jour"
  @@ -1948,18 +1760,15 @@
   msgid "\"%s\" is already subscribed."
   msgstr ""
   
  -# ../plugin/subscribe.php:58
   #: ../plugin/subscribe.php:100
   #, c-format
   msgid "Do you want to subscribe \"%s\" ?"
   msgstr "Voulez vous abonner ? \"%s\" ?"
   
  -# ../plugin/subscribe.php:46
   #: ../plugin/subscribe.php:106
   msgid "Subscribed pages"
   msgstr ""
   
  -# ../plugin/theme.php:24
   #: ../plugin/theme.php:29
   msgid "Theme cleared. Goto UserPreferences."
   msgstr "Th?me effac?. Allez ? UserPreferences."
  @@ -1968,7 +1777,6 @@
   msgid "Theme is changed"
   msgstr ""
   
  -# ../plugin/theme.php:64
   #: ../plugin/theme.php:69
   msgid "Please select a theme properly."
   msgstr "Merci de s?lectionner un th?me de mani?re satisfaisante"
  @@ -1977,7 +1785,6 @@
   msgid "Theme disabled !"
   msgstr ""
   
  -# ../wikilib.php:476
   #: ../plugin/theme.php:97
   msgid "-- Select --"
   msgstr ""
  @@ -1986,33 +1793,27 @@
   msgid "Invalid use of ticket"
   msgstr ""
   
  -# ../plugin/trackback.php:54
   #: ../plugin/trackback.php:53
   msgid "TrackBack is not activated !"
   msgstr "Le TrackBack n'est pas activ? !"
   
  -# ../plugin/trackback.php:55
   #: ../plugin/trackback.php:54
   msgid "send ping"
   msgstr "envoyer un ping"
   
  -# ../plugin/trackback.php:58
   #: ../plugin/trackback.php:57
   #, c-format
   msgid "TrackBack list of %s"
   msgstr "List de TrackBack de %s"
   
  -# ../plugin/trackback.php:62 ../plugin/trackback.php:79
   #: ../plugin/trackback.php:61 ../plugin/trackback.php:78
   msgid "TrackBack URL for this page:"
   msgstr "URL de TrackBack pour cette page :"
   
  -# ../plugin/trackback.php:63 ../plugin/trackback.php:80
   #: ../plugin/trackback.php:62 ../plugin/trackback.php:79
   msgid "Send TrackBack Ping to another Blog:"
   msgstr "Envoyer un ping de TrackBack ? un autre blog :"
   
  -# ../plugin/trackback.php:78
   #: ../plugin/trackback.php:77
   #, c-format
   msgid "No TrackBack entry found for %s"
  @@ -2022,12 +1823,10 @@
   msgid "Successfully confirmed"
   msgstr ""
   
  -# ../wikilib.php:887
   #: ../plugin/userform.php:37
   msgid "Your e-mail address is confirmed successfully"
   msgstr "Mail envoy? avec succ?s"
   
  -# ../wikilib.php:887
   #: ../plugin/userform.php:44
   msgid "Your new password is confirmed successfully"
   msgstr ""
  @@ -2036,12 +1835,10 @@
   msgid "Confirmation missmatched !"
   msgstr ""
   
  -# ../plugin/subscribe.php:22
   #: ../plugin/userform.php:47 ../plugin/userform.php:51
   msgid "Please try again to register your e-mail address"
   msgstr "Merci de rentrer d'abord votre adresse de messagerie"
   
  -# ../plugin/restore.php:27
   #: ../plugin/userform.php:50
   msgid "ID does not exists !"
   msgstr "Erreur : l'archive n'existe pas"
  @@ -2051,7 +1848,6 @@
   msgid "Successfully login as '%s'"
   msgstr ""
   
  -# ../wiki.php:3024
   #: ../plugin/userform.php:92 ../plugin/userform.php:286
   #: ../plugin/userform.php:329
   msgid "Invalid password !"
  @@ -2066,27 +1862,22 @@
   msgid "Make new ID on this wiki"
   msgstr ""
   
  -# ../wikilib.php:575
   #: ../plugin/userform.php:105
   msgid "Cookie deleted !"
   msgstr ""
   
  -# ../wikilib.php:1082
  -#: ../plugin/userform.php:110 ../wikilib.php:2555
  +#: ../plugin/userform.php:110 ../wikilib.php:2632
   msgid "E-mail new password"
   msgstr ""
   
  -# ../wikilib.php:1082
   #: ../plugin/userform.php:155
   msgid "New password confirmation"
   msgstr ""
   
  -# ../wiki.php:3024
   #: ../plugin/userform.php:160
   msgid "Please confirm your new password"
   msgstr ""
   
  -# ../wikilib.php:1082
   #: ../plugin/userform.php:162
   #, c-format
   msgid "Your new password is %s"
  @@ -2104,7 +1895,6 @@
   msgid "New password is sent to your e-mail !"
   msgstr ""
   
  -# ../plugin/subscribe.php:22
   #: ../plugin/userform.php:171
   msgid "Please check your e-mail"
   msgstr ""
  @@ -2117,7 +1907,6 @@
   msgid "Invalid request"
   msgstr ""
   
  -# ../plugin/subscribe.php:22
   #: ../plugin/userform.php:179
   msgid "Please confirm your e-mail address first !"
   msgstr ""
  @@ -2126,7 +1915,6 @@
   msgid "ID and e-mail mismatch !"
   msgstr ""
   
  -# ../plugin/subscribe.php:22
   #: ../plugin/userform.php:188
   msgid "Please try again or make a new profile"
   msgstr ""
  @@ -2147,24 +1935,20 @@
   msgid "Your password is too simple to use as a password !"
   msgstr ""
   
  -# ../plugin/subscribe.php:22
   #: ../plugin/userform.php:239 ../plugin/userform.php:356
   msgid "Your email address is not valid"
   msgstr "Merci de rentrer d'abord votre adresse de messagerie"
   
  -# ../wikilib.php:547
   #: ../plugin/userform.php:244 ../plugin/userform.php:423
   msgid "Fail to register"
   msgstr ""
   
  -# ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
  -# c-format
   #: ../plugin/userform.php:245 ../plugin/userform.php:424
   msgid "You are not allowed to register on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:246 ../plugin/userform.php:425 ../wiki.php:5596
  -#: ../wiki.php:5607
  +#: ../plugin/userform.php:246 ../plugin/userform.php:425 ../wiki.php:5642
  +#: ../wiki.php:5653
   msgid "Please contact WikiMasters"
   msgstr ""
   
  @@ -2185,7 +1969,6 @@
   msgid "E-mail confirmation"
   msgstr ""
   
  -# ../plugin/subscribe.php:22
   #: ../plugin/userform.php:266 ../plugin/userform.php:348
   msgid "Please confirm your email address"
   msgstr ""
  @@ -2227,7 +2010,6 @@
   msgid "Your Nickname already used as ID in this wiki"
   msgstr ""
   
  -# ../wikilib.php:887
   #: ../plugin/userform.php:370
   msgid "Profiles are saved successfully !"
   msgstr ""
  @@ -2256,8 +2038,6 @@
   msgid "Invalid OpenID Authentication request"
   msgstr ""
   
  -# ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
  -# c-format
   #: ../plugin/userinfo.php:21
   #, c-format
   msgid "You are not allowed to use the \"%s\" macro."
  @@ -2272,7 +2052,6 @@
   msgid "User infomation is restricted by wikimaster"
   msgstr ""
   
  -# ../wikilib.php:575
   #: ../plugin/userinfo.php:81
   #, c-format
   msgid "User \"%s\" are deleted !"
  @@ -2283,474 +2062,410 @@
   msgid "Could not connect to %s server"
   msgstr ""
   
  -# ../wikilib.php:1479
   #: ../plugin/whois.php:137
   #, c-format
   msgid "Whois search result for %s"
   msgstr ""
   
  -# ../wiki.php:850
  -#: ../wiki.php:1316
  +#: ../wiki.php:1318
   #, c-format
   msgid "Rename %s to %s"
   msgstr "Renommer %s en %s"
   
  -# ../wikilib.php:803
  -#: ../wiki.php:1740
  +#: ../wiki.php:1742
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
  -# ../plugin/restore.php:27
  -#: ../wiki.php:1750
  +#: ../wiki.php:1752
   msgid "File does not exist"
   msgstr "Erreur : l'archive n'existe pas"
   
  -# ../plugin/restore.php:27
  -#: ../wiki.php:2179
  +#: ../wiki.php:2185
   #, c-format
   msgid "File '%s' does not exist."
   msgstr ""
   
  -# ../wikilib.php:521
  -#: ../wiki.php:3109 ../wiki.php:3120 ../wiki.php:5870
  +#: ../wiki.php:3115 ../wiki.php:3126 ../wiki.php:5916
   msgid "Invalid ajax action."
   msgstr ""
   
  -#: ../wiki.php:3619
  +#: ../wiki.php:3626
   msgid "Tags:"
   msgstr ""
   
  -# ../wiki.php:1824
  -#: ../wiki.php:3648
  +#: ../wiki.php:3655
   #, c-format
   msgid "See %s"
   msgstr "Voir %s"
   
  -# ../wiki.php:1824
  -#: ../wiki.php:3648
  +#: ../wiki.php:3655
   #, c-format
   msgid "TwinPages"
   msgstr ""
   
  -# ../plugin/TwinPages.php:18 ../wiki.php:1828 ../wiki.php:2943
  -#: ../wiki.php:3653
  +#: ../wiki.php:3660
   msgid "See [TwinPages]:"
   msgstr "Voir [TwinPages]: "
   
  -#: ../wiki.php:4233
  +#: ../wiki.php:4272
   msgid "Sister Sites Index"
   msgstr ""
   
  -# ../locale/dummy.php:6 ../wiki.php:2553
  -#: ../wiki.php:4682 ../locale/dummy.php:6
  +#: ../wiki.php:4721 ../locale/dummy.php:6
   msgid "EditText"
   msgstr "?ditionTexte"
   
  -# ../wiki.php:2555
  -#: ../wiki.php:4684
  +#: ../wiki.php:4723
   msgid "NotEditable"
   msgstr "Pas?ditable"
   
  -# ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wiki.php:4688 ../locale/dummy.php:6
  +#: ../wiki.php:4727 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr "MontrePage"
   
  -# ../locale/dummy.php:3 ../locale/dummy.php:5 ../wiki.php:2558
  -#: ../wiki.php:4689 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4728 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr "TrouvePage"
   
  -#: ../wiki.php:5150
  +#: ../wiki.php:5189
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5410
  +#: ../wiki.php:5449
   msgid "Someone logged in at another place !"
   msgstr ""
   
  -#: ../wiki.php:5595
  +#: ../wiki.php:5641
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5606
  +#: ../wiki.php:5652
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -# ../wiki.php:2945 ../wiki.php:2948
  -#: ../wiki.php:5647 ../wiki.php:5656 ../wikilib.php:1652
  +#: ../wiki.php:5693 ../wiki.php:5702 ../wikilib.php:1721
   msgid "Create this page"
   msgstr "Cr?er cette page"
   
  -# ../wikilib.php:816
  -#: ../wiki.php:5658
  +#: ../wiki.php:5704
   #, c-format
   msgid "%s has saved revisions"
   msgstr "%s est sauvegard?"
   
  -# ../wiki.php:2950
  -#: ../wiki.php:5660 ../wiki.php:5668
  +#: ../wiki.php:5706 ../wiki.php:5714
   #, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr ""
   
  -#: ../wiki.php:5666
  +#: ../wiki.php:5712
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr ""
   
  -#: ../wiki.php:5674
  +#: ../wiki.php:5720
   msgid "Please try to search with another word"
   msgstr ""
   
  -# ../wiki.php:2956
  -#: ../wiki.php:5686
  +#: ../wiki.php:5732
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr "%s ou alternativement, utiliser un de ces mod?les de page :\n"
   
  -#: ../wiki.php:5689
  +#: ../wiki.php:5735
   msgid "You have no templates"
   msgstr ""
   
  -# ../wikilib.php:427
  -#: ../wiki.php:5691
  +#: ../wiki.php:5737
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
   
  -#: ../wiki.php:5702
  +#: ../wiki.php:5748
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
  -# ../wikilib.php:521
  -#: ../wiki.php:5872
  +#: ../wiki.php:5918
   msgid "Invalid macro action."
   msgstr ""
   
  -# ../wiki.php:3009
  -#: ../wiki.php:5882
  +#: ../wiki.php:5928
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr "Vous n'?tes pas autoris? ? '%s'"
   
  -# ../wiki.php:3021
  -#: ../wiki.php:5902
  +#: ../wiki.php:5948
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr "Impossible de pouvoir \"%s\" !"
   
  -# ../wiki.php:3024
  -#: ../wiki.php:5905
  +#: ../wiki.php:5951
   msgid "Please enter the valid password"
   msgstr "Merci d'entrer un mot de passe valide"
   
  -# ../plugin/security/needtologin.php:24 ../plugin/security/needtologin.php:34
  -# c-format
  -#: ../wikilib.php:905
  +#: ../wikilib.php:974
   msgid "You are not allowed to edit this page !"
   msgstr ""
   
  -#: ../wikilib.php:913
  +#: ../wikilib.php:982
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
  -# ../wikilib.php:483 ../wikilib.php:1079
  -#: ../wikilib.php:936 ../wikilib.php:1220 ../wikilib.php:1874
  -#: ../wikilib.php:1971 ../wikilib.php:2483 ../wikilib.php:2541
  +#: ../wikilib.php:1005 ../wikilib.php:1289 ../wikilib.php:1943
  +#: ../wikilib.php:2040 ../wikilib.php:2560 ../wikilib.php:2618
   msgid "Save"
   msgstr "Sauvegarder"
   
  -# ../wikilib.php:443
  -#: ../wikilib.php:944 ../wikilib.php:1207 ../wikilib.php:1882
  -#: ../wikilib.php:1979
  +#: ../wikilib.php:1013 ../wikilib.php:1276 ../wikilib.php:1951
  +#: ../wikilib.php:2048
   msgid "Skip to preview"
   msgstr "Aller ? la pr?visualisation"
   
  -# ../wikilib.php:425
  -#: ../wikilib.php:1059
  +#: ../wikilib.php:1128
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   "Utiliser un des mod?les de pages qui suivent pour une premi?recr?ation :\n"
   
  -# ../wikilib.php:427
  -#: ../wikilib.php:1061
  +#: ../wikilib.php:1130
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr ""
   
  -#: ../wikilib.php:1065
  +#: ../wikilib.php:1134
   msgid "Merge"
   msgstr ""
   
  -#: ../wikilib.php:1066
  +#: ../wikilib.php:1135
   msgid "Merge manually"
   msgstr ""
   
  -#: ../wikilib.php:1067
  +#: ../wikilib.php:1136
   msgid "Ignore conflicts"
   msgstr ""
   
  -# ../wikilib.php:445
  -#: ../wikilib.php:1102
  +#: ../wikilib.php:1171
   msgid "ReduceEditor"
   msgstr "R?duire?diteur"
   
  -#: ../wikilib.php:1103
  +#: ../wikilib.php:1172
   msgid "EnlargeEditor"
   msgstr ""
   
  -# ../locale/dummy.php:6 ../wikilib.php:448
  -#: ../wikilib.php:1107 ../locale/dummy.php:6
  +#: ../wikilib.php:1176 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
  -# ../wikilib.php:449
  -#: ../wikilib.php:1109
  +#: ../wikilib.php:1178
   msgid "HelpOnEditing"
   msgstr ""
   
  -# ../wikilib.php:462
  -#: ../wikilib.php:1143
  +#: ../wikilib.php:1212
   #, c-format
   msgid "Describe %s here"
   msgstr "D?crire %s ici"
   
  -#: ../wikilib.php:1163
  +#: ../wikilib.php:1232
   msgid "Category"
   msgstr ""
   
  -#: ../wikilib.php:1171
  +#: ../wikilib.php:1240
   msgid " Select "
   msgstr ""
   
  -#: ../wikilib.php:1183
  +#: ../wikilib.php:1252
   msgid "Minor edit"
   msgstr ""
   
  -# ../wikilib.php:517
  -#: ../wikilib.php:1299
  +#: ../wikilib.php:1368
   msgid "406 Not Acceptable"
   msgstr ""
   
  -# ../wikilib.php:519
  -#: ../wikilib.php:1304
  +#: ../wikilib.php:1373
   #, c-format
   msgid "%s is not valid action"
   msgstr "%s n'est pas une action valide"
   
  -# ../wikilib.php:521
  -#: ../wikilib.php:1306
  +#: ../wikilib.php:1375
   msgid "Is it valid action ?"
   msgstr "Est-ce que c'est une action valide ?"
   
  -# ../wikilib.php:540
  -#: ../wikilib.php:1353
  +#: ../wikilib.php:1422
   #, c-format
   msgid "File '%s' is deleted"
   msgstr "Le fichier '%s' est effac?"
   
  -# ../wikilib.php:542
  -#: ../wikilib.php:1355
  +#: ../wikilib.php:1424
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr "Impossible d'effacer '%s'"
   
  -# ../wikilib.php:545
  -#: ../wikilib.php:1360
  +#: ../wikilib.php:1429
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr "Le r?pertoire '%s' est effac?"
   
  -# ../wikilib.php:547
  -#: ../wikilib.php:1362
  +#: ../wikilib.php:1431
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr "Impossible d'effacer le r?pertoire '%s'"
   
  -# ../wikilib.php:557 ../wikilib.php:559
  -#: ../wikilib.php:1372 ../wikilib.php:1392
  +#: ../wikilib.php:1441 ../wikilib.php:1461
   msgid "No files are selected !"
   msgstr "Aucun fichier n'est s?lectionn? !"
   
  -# ../wikilib.php:542
  -#: ../wikilib.php:1385
  +#: ../wikilib.php:1454
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
  -# ../wikilib.php:550
  -#: ../wikilib.php:1389
  +#: ../wikilib.php:1458
   msgid "Delete selected file"
   msgstr ""
   
  -# ../wikilib.php:575
  -#: ../wikilib.php:1410
  +#: ../wikilib.php:1479
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr "\"%s\" est effac? !"
   
  -# ../wikilib.php:581
  -#: ../wikilib.php:1425
  +#: ../wikilib.php:1494
   msgid "Please delete this file manually."
   msgstr "Merci d'effacer ce fichier manuellement."
   
  -# ../wikilib.php:583
  -#: ../wikilib.php:1427
  +#: ../wikilib.php:1496
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr "Effacer \"%s\" ?"
   
  -# ../plugin/minilogin.php:30
  -#: ../wikilib.php:1481
  +#: ../wikilib.php:1550
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
  -# ../wiki.php:2950
  -#: ../wikilib.php:1654
  +#: ../wikilib.php:1723
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
   " ou cliquer sur %s pour faire une recherche en texte int?gral de cette "
   "page.\n"
   
  -# ../wiki.php:2950
  -#: ../wikilib.php:1654
  +#: ../wikilib.php:1723
   msgid "title"
   msgstr "titre"
   
  -#: ../wikilib.php:1668
  +#: ../wikilib.php:1737
   msgid "Please try to fulltext search"
   msgstr ""
   
  -# ../wiki.php:2950
  -#: ../wikilib.php:1671
  +#: ../wikilib.php:1740
   #, c-format
   msgid "You can also click %s to fulltext search.\n"
   msgstr ""
   
  -# ../wikilib.php:743
  -#: ../wikilib.php:1716 ../wikilib.php:1829
  +#: ../wikilib.php:1785 ../wikilib.php:1898
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr "Quelqu'un a sauvegard? la page tandis que vous ?ditiez %s"
   
  -#: ../wikilib.php:1722
  +#: ../wikilib.php:1791
   msgid "Section edit is not valid for non-exists page."
   msgstr ""
   
  -# ../wikilib.php:803
  -#: ../wikilib.php:1755 ../wikilib.php:2011
  +#: ../wikilib.php:1824 ../wikilib.php:2080
   msgid "mail does not supported by default."
   msgstr "La messagerie n'est pas support? par d?faut."
   
  -# ../wikilib.php:807
  -#: ../wikilib.php:1759 ../wikilib.php:2015
  +#: ../wikilib.php:1828 ../wikilib.php:2084
   msgid "Sent notification mail."
   msgstr "Des notifications par messagerie ont ?t? envoy?es."
   
  -# ../wikilib.php:809
  -#: ../wikilib.php:1761 ../wikilib.php:2017
  +#: ../wikilib.php:1830 ../wikilib.php:2086
   msgid "No subscribers found."
   msgstr "Aucun abonn? trouv?."
   
  -# ../wikilib.php:814
  -#: ../wikilib.php:1766 ../wikilib.php:2022
  +#: ../wikilib.php:1835 ../wikilib.php:2091
   #, c-format
   msgid "%s is not editable"
   msgstr "%s n'est pas ?ditable"
   
  -# ../wikilib.php:816
  -#: ../wikilib.php:1768 ../wikilib.php:2024
  +#: ../wikilib.php:1837 ../wikilib.php:2093
   #, c-format
   msgid "%s is saved"
   msgstr "%s est sauvegard?"
   
  -# ../wikilib.php:734
  -#: ../wikilib.php:1820
  +#: ../wikilib.php:1889
   msgid "Goto Editor"
   msgstr "Aller ? l'?diteur"
   
  -#: ../wikilib.php:1834
  +#: ../wikilib.php:1903
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr ""
   
  -# ../plugin/Vote.php:109
  -#: ../wikilib.php:1835
  +#: ../wikilib.php:1904
   #, c-format
   msgid "%s is merged successfully"
   msgstr ""
   
  -#: ../wikilib.php:1839
  +#: ../wikilib.php:1908
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1840
  +#: ../wikilib.php:1909
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr ""
   
  -#: ../wikilib.php:1841
  +#: ../wikilib.php:1910
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1842
  +#: ../wikilib.php:1911
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1847
  +#: ../wikilib.php:1916
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr ""
   
  -# ../wikilib.php:581
  -#: ../wikilib.php:1848
  +#: ../wikilib.php:1917
   msgid "Please resolve conflicts manually."
   msgstr ""
   
  -#: ../wikilib.php:1851
  +#: ../wikilib.php:1920
   #, c-format
   msgid "Force merging for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1852
  +#: ../wikilib.php:1921
   msgid "Please be careful, you could damage useful information."
   msgstr ""
   
  -# ../wikilib.php:755
  -#: ../wikilib.php:1866
  +#: ../wikilib.php:1935
   msgid "Conflict error!"
   msgstr "Erreur de conflit !"
   
  -# ../plugin/processor/blog.php:78
  -#: ../wikilib.php:1907
  +#: ../wikilib.php:1976
   msgid "Too long Comment"
   msgstr ""
   
  -# ../wikilib.php:748 ../wikilib.php:777
  -#: ../wikilib.php:1957
  +#: ../wikilib.php:2026
   #, c-format
   msgid "Preview of %s"
   msgstr "Pr?visualisation de %s"
   
  -# ../wikilib.php:838
  -#: ../wikilib.php:2057
  +#: ../wikilib.php:2126
   msgid "Nobody subscribed to this page."
   msgstr "Personne n'est abonn? ? cette page, aucun mail envoy?"
   
  -# ../wikilib.php:860
  -#: ../wikilib.php:2076
  +#: ../wikilib.php:2145
   #, c-format
   msgid "%s page is modified"
   msgstr "la page %s est modifi?"
   
  -# ../wikilib.php:870
  -#: ../wikilib.php:2105
  +#: ../wikilib.php:2174
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
  @@ -2760,93 +2475,80 @@
   "notifications de modification.\n"
   "\n"
   
  -# ../wikilib.php:883
  -#: ../wikilib.php:2118
  +#: ../wikilib.php:2187
   msgid "Send notification mails to all subscribers"
   msgstr "Envoyez un mail de notification ? tous les abonn?s"
   
  -# ../wikilib.php:887
  -#: ../wikilib.php:2123
  +#: ../wikilib.php:2192
   msgid "Mails are sent successfully"
   msgstr "Mail envoy? avec succ?s"
   
  -# ../wikilib.php:888
  -#: ../wikilib.php:2124
  +#: ../wikilib.php:2193
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr "un mail a ?t? envoy? ? '%s'"
   
  -# ../wiki.php:3021
  -#: ../wikilib.php:2126
  +#: ../wikilib.php:2195
   msgid "Fail to send mail"
   msgstr ""
   
  -# ../wikilib.php:803
  -#: ../wikilib.php:2137
  +#: ../wikilib.php:2206
   msgid "This wiki does not support sendmail"
   msgstr ""
   
  -# ../wikilib.php:1483
  -#: ../wikilib.php:2267
  +#: ../wikilib.php:2344
   msgid "Invalid regular expression !"
   msgstr ""
   
  -#: ../wikilib.php:2291
  +#: ../wikilib.php:2368
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:2294
  +#: ../wikilib.php:2371
   msgid "Infinite loop possible!"
   msgstr ""
   
  -#: ../wikilib.php:2412
  +#: ../wikilib.php:2489
   msgid "OpenID"
   msgstr ""
   
  -# ../wikilib.php:1070
  -#: ../wikilib.php:2463 ../wikilib.php:2553
  +#: ../wikilib.php:2540 ../wikilib.php:2630
   msgid "Make profile"
   msgstr "Faire un profil"
   
  -# ../wikilib.php:1071
  -#: ../wikilib.php:2465
  +#: ../wikilib.php:2542
   msgid "password again"
   msgstr "mot de passe de nouveau"
   
  -#: ../wikilib.php:2467 ../wikilib.php:2517
  +#: ../wikilib.php:2544 ../wikilib.php:2594
   msgid "Mail"
   msgstr ""
   
  -# ../wikilib.php:1082
  -#: ../wikilib.php:2489
  +#: ../wikilib.php:2566
   msgid "New password"
   msgstr "Nouveau mot de passe"
   
  -#: ../wikilib.php:2494
  +#: ../wikilib.php:2571
   msgid "Nickname"
   msgstr ""
   
  -#: ../wikilib.php:2518
  +#: ../wikilib.php:2595
   msgid "Time Zone"
   msgstr ""
   
  -# ../wikilib.php:1088
  -#: ../wikilib.php:2527
  +#: ../wikilib.php:2604
   msgid "logout"
   msgstr "se d?connecter"
   
  -# ../locale/dummy.php:6 ../wiki.php:2557
  -#: ../wikilib.php:2905
  +#: ../wikilib.php:3005
   msgid "Show all"
   msgstr ""
   
  -# ../locale/dummy.php:4
  -#: ../wikilib.php:3043
  +#: ../wikilib.php:3143
   msgid "Contents"
   msgstr ""
   
  -# ../wikilib.php:1479
  -#: ../wikilib.php:3164
  +#: ../wikilib.php:3264
   #, c-format
   msgid "Title search for \"%s\""
   msgstr "Recherche de titre pour \"%s\""
  @@ -2855,13 +2557,11 @@
   msgid "Check a dba configuration"
   msgstr ""
   
  -# ../wikilib.php:575
   #: ../monisetup.php:49
   #, c-format
   msgid "%s is selected."
   msgstr ""
   
  -# ../plugin/man_get.php:13
   #: ../monisetup.php:51
   msgid "No \\$dba_type selected."
   msgstr ""
  @@ -2903,7 +2603,6 @@
   "with detected parameters for your wiki."
   msgstr ""
   
  -# ../plugin/rename.php:27
   #: ../monisetup.php:436
   msgid "Reload"
   msgstr ""
  @@ -2932,36 +2631,30 @@
   msgid "Protect my config.php now!"
   msgstr ""
   
  -# ../wikilib.php:814
   #: ../monisetup.php:466
   #, c-format
   msgid "FATAL: %s directory is not writable"
   msgstr ""
   
  -# ../wikilib.php:581
   #: ../monisetup.php:467
   msgid "Please execute the following command."
   msgstr ""
   
  -# ../wikilib.php:814
   #: ../monisetup.php:486
   #, c-format
   msgid "%s directory is not writable"
   msgstr ""
   
  -# ../wikilib.php:814
   #: ../monisetup.php:503
   #, c-format
   msgid "%s is not writable"
   msgstr ""
   
  -# ../plugin/rename.php:14
   #: ../monisetup.php:510 ../monisetup.php:516
   #, c-format
   msgid "%s is created now"
   msgstr ""
   
  -# ../wikilib.php:814
   #: ../monisetup.php:526
   #, c-format
   msgid "%s is writable"
  @@ -2993,7 +2686,6 @@
   msgid "Click here to toggle all"
   msgstr ""
   
  -# ../wikilib.php:550
   #: ../monisetup.php:759
   msgid "Deselect all"
   msgstr ""
  @@ -3024,7 +2716,6 @@
   msgid "config.php is protected now !"
   msgstr ""
   
  -# ../wiki.php:3024
   #: ../monisetup.php:1102 ../monisetup.php:1121
   msgid "Invalid password error !"
   msgstr ""
  @@ -3044,7 +2735,6 @@
   msgid "Updated Configutations for this %s"
   msgstr ""
   
  -# ../wikilib.php:887
   #: ../monisetup.php:1172
   msgid "Configurations are saved successfully"
   msgstr ""
  @@ -3066,7 +2756,6 @@
   msgid "Default settings are loaded..."
   msgstr ""
   
  -# ../wikilib.php:887
   #: ../monisetup.php:1204
   msgid "Initial configurations are saved successfully."
   msgstr ""
  @@ -3075,14 +2764,12 @@
   msgid "Goto <a href='monisetup.php'>MoniSetup</a> again to configure details"
   msgstr ""
   
  -# ../plugin/minilogin.php:30
   #: ../monisetup.php:1222 ../monisetup.php:1224 ../monisetup.php:1320
   #: ../monisetup.php:1322
   #, c-format
   msgid "goto %s"
   msgstr ""
   
  -# ../wikilib.php:557 ../wikilib.php:559
   #: ../monisetup.php:1227
   msgid "No WikiSeeds are selected"
   msgstr ""
  @@ -3106,7 +2793,6 @@
   msgid "WARN: You have no WikiSeed on your %s"
   msgstr ""
   
  -# ../plugin/quicklinks.php:50
   #: ../monisetup.php:1273 ../monisetup.php:1316
   #, c-format
   msgid "If you want to put wikiseeds on your wiki %s now"
  @@ -3120,52 +2806,42 @@
   msgid "Update"
   msgstr ""
   
  -# ../locale/dummy.php:3
   #: ../locale/dummy.php:3
   msgid "FrontPage"
   msgstr "PageAccueil"
   
  -# ../locale/dummy.php:3
   #: ../locale/dummy.php:3
   msgid "RecentChanges"
   msgstr "ChangementsR?cents"
   
  -# ../locale/dummy.php:4
   #: ../locale/dummy.php:4
   msgid "TitleIndex"
   msgstr "IndexTitre"
   
  -# ../locale/dummy.php:4
   #: ../locale/dummy.php:4
   msgid "HelpContents"
   msgstr "SommaireAide"
   
  -# ../locale/dummy.php:5
   #: ../locale/dummy.php:5
   msgid "DeletePage"
   msgstr "EffacerPage"
   
  -# ../locale/dummy.php:5
   #: ../locale/dummy.php:5
   msgid "LikePages"
   msgstr "PagesSimilaires"
   
  -# ../locale/dummy.php:5
   #: ../locale/dummy.php:5
   msgid "UploadFile"
   msgstr ""
   
  -# ../locale/dummy.php:6
   #: ../locale/dummy.php:6
   msgid "UploadedFiles"
   msgstr ""
   
  -# ../locale/dummy.php:7
   #: ../locale/dummy.php:7
   msgid "VisualTour"
   msgstr ""
   
  -# ../locale/dummy.php:7
   #: ../locale/dummy.php:7
   msgid "TrackBack"
   msgstr ""
  @@ -3182,19 +2858,15 @@
   msgid "recall"
   msgstr ""
   
  -# ../wikilib.php:482
   #: ../locale/dummy.php:8
   msgid "view"
   msgstr ""
   
  -# ../plugin/login.php:24
   #~ msgid "Login:"
   #~ msgstr "Identifiant de connection :"
   
  -# ../plugin/login.php:25
   #~ msgid "Password:"
   #~ msgstr "Mot de passe :"
   
  -# ../wikilib.php:476
   #~ msgid "--Select Category--"
   #~ msgstr "-- S?lectionner une cat?gorie"
  
  
  


1282372382;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv16200\n\nModified Files:\n	wiki.php \nLog Message:\n[#315580] suppress warning msg with opendir()\n\n
wkpark      2010/08/21 15:33:03

  Modified:    .        wiki.php
  Log:
  [#315580] suppress warning msg with opendir()
  
  Revision  Changes    Path
  1.572     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.571
  retrieving revision 1.572
  diff -u -r1.571 -r1.572
  --- wiki.php	20 Aug 2010 08:28:52 -0000	1.571
  +++ wiki.php	21 Aug 2010 06:33:02 -0000	1.572
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.571 2010/08/20 08:28:52 wkpark Exp $
  +// $Id: wiki.php,v 1.572 2010/08/21 06:33:02 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.571 $',1,-1);
  +$_revision = substr('$Revision: 1.572 $',1,-1);
   $_release = '1.1.5-RC4';
   
   #ob_start("ob_gzhandler");
  @@ -809,7 +809,7 @@
           break;
         }
   
  -      $dh = opendir($dir);
  +      $dh = @opendir($dir);
         if (is_resource($dh)) {
           while ( ($file = readdir($dh)) !== false) {
             if ($file[0] == '.' or is_dir($file)) continue;
  
  
  


1282379690;wkpark;Update of /cvsroot/moniwiki/moniwiki/css\nIn directory kill.kldp.net:/tmp/cvs-serv6970/css\n\nModified Files:\n	_base.css \nLog Message:\n[#315589] clear:both correctly\n\n
1282379691;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv6970/plugin\n\nModified Files:\n	EditToolbar.php \nLog Message:\n[#315589] clear:both correctly\n\n
wkpark      2010/08/21 17:34:51

  Modified:    css      _base.css
               plugin   EditToolbar.php
  Log:
  [#315589] clear:both correctly
  
  Revision  Changes    Path
  1.37      +1 -0      moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- _base.css	19 Jun 2010 08:48:29 -0000	1.36
  +++ _base.css	21 Aug 2010 08:34:50 -0000	1.37
  @@ -96,6 +96,7 @@
   
   #editor_info ul {list-style:none; margin:2px 0 2px 0; padding:0;}
   #editor_info li {padding:2px;}
  +#editor_area { clear:both; }
   
   .resizable-textarea .grippie {
     height: 14px;
  
  
  
  1.16      +2 -2      moniwiki/plugin/EditToolbar.php
  
  Index: EditToolbar.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/EditToolbar.php,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- EditToolbar.php	14 Aug 2010 06:04:47 -0000	1.15
  +++ EditToolbar.php	21 Aug 2010 08:34:50 -0000	1.16
  @@ -7,7 +7,7 @@
   //
   // This feature is imported from the MediaWiki
   //
  -// $Id: EditToolbar.php,v 1.15 2010/08/14 06:04:47 wkpark Exp $
  +// $Id: EditToolbar.php,v 1.16 2010/08/21 08:34:50 wkpark Exp $
   
   function macro_EditToolbar($formatter,$value, $options=array()) {
       global $DBInfo;
  @@ -73,7 +73,7 @@
           $script.= $buttons[$btn];
   
       $script.=<<<EOS
  -document.writeln("</span></div><span style='clear:both'></span>");
  +document.writeln("</span></div>");
   /*]]>*/
   </script>
   EOS;
  
  
  


1282379756;wkpark;Update of /cvsroot/moniwiki/moniwiki-theme/azblue2/css\nIn directory kill.kldp.net:/tmp/cvs-serv7147/css\n\nModified Files:\n	default.css \nLog Message:\n[#315589] tune css styling\n\n
1282381674;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv10935\n\nModified Files:\n	wiki.php \nLog Message:\n[#315579] fixed last changes\n\n
wkpark      2010/08/21 18:07:55

  Modified:    .        wiki.php
  Log:
  [#315579] fixed last changes
  
  Revision  Changes    Path
  1.573     +7 -7      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.572
  retrieving revision 1.573
  diff -u -r1.572 -r1.573
  --- wiki.php	21 Aug 2010 06:33:02 -0000	1.572
  +++ wiki.php	21 Aug 2010 09:07:54 -0000	1.573
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.572 2010/08/21 06:33:02 wkpark Exp $
  +// $Id: wiki.php,v 1.573 2010/08/21 09:07:54 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.572 $',1,-1);
  +$_revision = substr('$Revision: 1.573 $',1,-1);
   $_release = '1.1.5-RC4';
   
   #ob_start("ob_gzhandler");
  @@ -943,7 +943,7 @@
       set_time_limit(isset($this->time_limit) ? intval($this->time_limit) : 30);
       if (empty($options)) {
         while (($file = readdir($handle)) !== false) {
  -        if ((($p = strpos($file, '.')) !== false or $file == 'RCS' or $file == 'CVS') and is_dir($file)) continue;
  +        if ((($p = strpos($file, '.')) !== false or $file == 'RCS' or $file == 'CVS') and is_dir($this->text_dir.'/'.$file)) continue;
           $pages[] = $this->keyToPagename($file);
         }
         closedir($handle);
  @@ -952,7 +952,7 @@
         return $pages;
       } else if (!empty($options['limit'])) { # XXX
          while (($file = readdir($handle)) !== false) {
  -          if ((($p = strpos($file, '.')) !== false or $file == 'RCS' or $file == 'CVS') and is_dir($file)) continue;
  +          if ((($p = strpos($file, '.')) !== false or $file == 'RCS' or $file == 'CVS') and is_dir($this->text_dir.'/'.$file)) continue;
             if (filemtime($this->text_dir."/".$file) > $options['limit'])
                $pages[] = $this->keyToPagename($file);
          }
  @@ -960,14 +960,14 @@
       } else if (!empty($options['count'])) {
          $count=$options['count'];
          while (($file = readdir($handle)) !== false && $count > 0) {
  -          if ((($p = strpos($file, '.')) !== false or $file == 'RCS' or $file == 'CVS') and is_dir($file)) continue;
  +          if ((($p = strpos($file, '.')) !== false or $file == 'RCS' or $file == 'CVS') and is_dir($this->text_dir.'/'.$file)) continue;
             $pages[] = $this->keyToPagename($file);
             $count--;
          }
          closedir($handle);
       } else if ($options['date']) {
          while (($file = readdir($handle)) !== false) {
  -          if ((($p = strpos($file, '.')) !== false or $file == 'RCS' or $file == 'CVS') and is_dir($file)) continue;
  +          if ((($p = strpos($file, '.')) !== false or $file == 'RCS' or $file == 'CVS') and is_dir($this->text_dir.'/'.$file)) continue;
             $mtime=filemtime($this->text_dir."/".$file);
             $pagename= $this->keyToPagename($file);
             $pages[$pagename]= $mtime;
  @@ -1007,7 +1007,7 @@
       set_time_limit(isset($this->time_limit) ? intval($this->time_limit) : 30);
       $count = 0;
       while (($file = readdir($handle)) !== false) {
  -      if ((($p = strpos($file, '.')) !== false or $file == 'RCS' or $file == 'CVS') and is_dir($file)) continue;
  +      if ((($p = strpos($file, '.')) !== false or $file == 'RCS' or $file == 'CVS') and is_dir($this->text_dir.'/'.$file)) continue;
         $count++;
       }
       closedir($handle);
  
  
  


1282464021;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv9644/plugin\n\nModified Files:\n	sendping.php Blog.php BlogChanges.php \nLog Message:\n[#315619]\n * i18nize some msgs.\n * the nojavascript option added to the send_page()\n * css buttonize input buttons\n * do not new Formatter() to get rid of duplicated javascripts\n\n
1282464021;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin/processor\nIn directory kill.kldp.net:/tmp/cvs-serv9644/plugin/processor\n\nModified Files:\n	blog.php \nLog Message:\n[#315619]\n * i18nize some msgs.\n * the nojavascript option added to the send_page()\n * css buttonize input buttons\n * do not new Formatter() to get rid of duplicated javascripts\n\n
1282464021;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv9644\n\nModified Files:\n	wiki.php \nLog Message:\n[#315619]\n * i18nize some msgs.\n * the nojavascript option added to the send_page()\n * css buttonize input buttons\n * do not new Formatter() to get rid of duplicated javascripts\n\n
wkpark      2010/08/22 17:00:22

  Modified:    plugin   sendping.php Blog.php BlogChanges.php
               plugin/processor blog.php
               .        wiki.php
  Log:
  [#315619]
   * i18nize some msgs.
   * the nojavascript option added to the send_page()
   * css buttonize input buttons
   * do not new Formatter() to get rid of duplicated javascripts
  
  Revision  Changes    Path
  1.15      +18 -8     moniwiki/plugin/sendping.php
  
  Index: sendping.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/sendping.php,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- sendping.php	26 Jan 2006 03:10:35 -0000	1.14
  +++ sendping.php	22 Aug 2010 08:00:21 -0000	1.15
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a TrackBack send action plugin for the MoniWiki
   //
  -// $Id: sendping.php,v 1.14 2006/01/26 03:10:35 wkpark Exp $
  +// $Id: sendping.php,v 1.15 2010/08/22 08:00:21 wkpark Exp $
   
   # trackback ping
   function do_sendping($formatter,$options) {
  @@ -69,21 +69,31 @@
   
       $formatter->send_header("",$options);
       $formatter->send_title(_("Send TrackBack ping"),"",$options);
  +    $msg1 = _("TrackBack Ping URL");
       print "<form method='post' action='$url'>\n";
  -    print "<b>TrackBack Ping URL</b>: <input name='trackback_url' size='60' maxlength='256' style='width:200' /><br />\n";
  +    print "<b>$msg1</b>: <input name='trackback_url' size='60' maxlength='256' style='width:200' /><br />\n";
       if ($options['value'])
         print "<input type='hidden' name='value' value='$options[value]' />\n";
  -    print "<b>Title</b>: <input name='title' value='$title' size='70' maxlength='70' style='width:200' /><br />\n";
  +    $msg2 = _("Title");
  +    print "<b>$msg2</b>: <input name='title' value='$title' size='70' maxlength='70' style='width:200' /><br />\n";
  +    if ($DBInfo->use_resizer > 1)
  +      echo <<<JS
  +<script type="text/javascript" src="$DBInfo->url_prefix/local/textarea.js"></script>
  +JS;
       print <<<FORM
  -<textarea class="wiki" id="content" wrap="virtual" name="excerpt"
  - rows="$rows" cols="$cols" class="wiki">$excerpt</textarea><br />
  +<div class="resizable-textarea" style='position:relative'><!-- IE hack -->
  +<textarea class="wiki resizable" id="content" wrap="virtual" name="excerpt"
  + rows="$rows" cols="$cols" class="wiki">$excerpt</textarea></div>
   FORM;
   
  +    $mb_msg = _("mb encoded");
  +    $send_msg = _("Send ping");
  +    $reset = _("Reset");
       print <<<FORM2
  -<b>mb encoded:</b> <input type="checkbox" name="mbencode" $checked />&nbsp;
  +<b>$mb_msg</b> <input type="checkbox" name="mbencode" $checked />&nbsp;
   <input type="hidden" name="action" value="sendping" />
  -<input type="submit" value="Send ping" />&nbsp;
  -<input type="reset" value="Reset" />&nbsp;
  +<span class="button"><input class="button" type="submit" value="$send_msg" /></span>&nbsp;
  +<span class="button"><input class="button" type="reset" value="$reset" /></span>&nbsp;
   </form>
   FORM2;
       $formatter->send_footer("",$options);
  
  
  
  1.37      +15 -7     moniwiki/plugin/Blog.php
  
  Index: Blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Blog.php,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- Blog.php	19 Apr 2010 11:26:46 -0000	1.36
  +++ Blog.php	22 Aug 2010 08:00:21 -0000	1.37
  @@ -5,7 +5,7 @@
   //
   // Usage: ?action=Blog
   //
  -// $Id: Blog.php,v 1.36 2010/04/19 11:26:46 wkpark Exp $
  +// $Id: Blog.php,v 1.37 2010/08/22 08:00:21 wkpark Exp $
   
   function updateBlogList($formatter) {
     global $DBInfo;
  @@ -269,20 +269,28 @@
       $savetext=$savetext ? $savetext:'Enter blog entry';
       if (!empty($DBInfo->use_wikiwyg)) {
         $wysiwyg_msg=_("GUI");
  -      $wysiwyg_btn='&nbsp;<input type="button" tabindex="7" value="'.$wysiwyg_msg.
  -        '" onclick="javascript:sectionEdit(null,null,null)" />';
  +      $wysiwyg_btn='&nbsp;<span class="button"><input class="button" type="button" tabindex="7" value="'.$wysiwyg_msg.
  +        '" onclick="javascript:sectionEdit(null,null,null)" /></span>';
       }
  +    if ($DBInfo->use_resizer > 1)
  +      echo <<<JS
  +<script type="text/javascript" src="$DBInfo->url_prefix/local/textarea.js"></script>
  +JS;
       print <<<FORM
  -<textarea class="wiki" id="content" wrap="virtual" name="savetext"
  - rows="$rows" cols="$cols" class="wiki">$savetext</textarea><br />
  +<div class="resizable-textarea" style='position:relative'><!-- IE hack -->
  +<textarea class="wiki resizable" id="content" wrap="virtual" name="savetext"
  + rows="$rows" cols="$cols" class="wiki">$savetext</textarea></div>
   FORM;
       if (!empty($options['value']))
         print "<input name='nosig' type='checkbox' />"._("Don't add a signature")."<br />";
  +
  +    $save_msg = _("Save");
  +    $preview_msg = _("Preview");
       print <<<FORM2
   <input type="hidden" name="action" value="Blog" />
   <input type="hidden" name="datestamp" value="$datestamp" />
  -<input type="submit" value="Save" />&nbsp;
  -<input type="submit" name="button_preview" value="Preview" />
  +<span class="button"><input type="submit" class="button" value="$save_msg" /></span>&nbsp;
  +<span class="button"><input type="submit" class="button" name="button_preview" value="$preview_msg" /></span>
   $wysiwyg_btn$extra
   </form>
   </div>
  
  
  
  1.38      +22 -13    moniwiki/plugin/BlogChanges.php
  
  Index: BlogChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogChanges.php,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- BlogChanges.php	19 Apr 2010 11:26:46 -0000	1.37
  +++ BlogChanges.php	22 Aug 2010 08:00:21 -0000	1.38
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogChanges action plugin for the MoniWiki
   //
  -// $Id: BlogChanges.php,v 1.37 2010/04/19 11:26:46 wkpark Exp $
  +// $Id: BlogChanges.php,v 1.38 2010/08/22 08:00:21 wkpark Exp $
   
   class Blog_cache {
     function get_all_blogs() {
  @@ -26,7 +26,7 @@
       list($year,$month)=explode('-',$date);
       $mon=intval($month);
       $y=$year;
  -    $daterule.='(?='.$y.$month;
  +    $daterule = '(?='.$y.$month;
       for ($i=1;$i<3;$i++) {
         if (--$mon <= 0) {
           $mon=12;
  @@ -123,7 +123,7 @@
       global $DBInfo;
   
       if (!$blogs) return array();
  -    $date=$options['date'];
  +    $date = !empty($options['date']) ? $options['date'] : '';
   
       if ($date) {
         // make a date pattern to grep blog entries
  @@ -161,9 +161,14 @@
           }
           if (preg_match("/^$endtag$/",$line)) {
             $state=0;
  -          list($content,$comments)=explode("----\n",$summary,2);
  +          $comments = '';
  +          if (preg_match("/----\n/", $summary))
  +            list($content,$comments)=explode("----\n",$summary,2);
  +          else
  +            $content = $summary;
             $entry[]=$content;
  -          if ($comments and !$options['noaction'])
  +          $commentcount = 0;
  +          if ($comments and empty($options['noaction']))
               $commentcount=sizeof(explode("----\n",$comments));
             $entry[]=$commentcount;
             $entries[]=$entry;
  @@ -221,10 +226,10 @@
     $tz_off=&$formatter->tz_offset;
   
     if (empty($options)) $options=array();
  -  if ($_GET['date'])
  +  if (!empty($_GET['date']))
       $options['date']=$date=$_GET['date'];
     else
  -    $date=$options['date'];
  +    $date = !empty($options['date']) ? $options['date'] : '';
   
     // parse args
     preg_match("/^(('|\")([^\\2]+)\\2)?,?(\s*,?\s*.*)?$/",
  @@ -319,7 +324,7 @@
       }
     }
   
  -  if (!$options['date'] or !preg_match('/^\d{4}-?\d{2}$/',$options['date']))
  +  if (empty($options['date']) or !preg_match('/^\d{4}-?\d{2}$/',$options['date']))
       $date=date('Ym');
   
     $year=substr($date,0,4);
  @@ -371,6 +376,7 @@
   
     $sendopt['nosisters']=1;
   
  +  $save_page = $formatter->page;
     foreach ($logs as $log) {
       list($page, $user,$date,$title,$summary,$commentcount)= $log;
       $tag=md5($user.' '.$date.' '.$title);
  @@ -405,19 +411,20 @@
           $date_anchor= $anchor;
         }
         $p=new WikiPage($page);
  -      $f=new Formatter($p);
  +      $formatter->page = $p;
         $summary=str_replace('\}}}','}}}',$summary); # XXX
         ob_start();
  -      $f->send_page($summary,$sendopt);
  +      $formatter->send_page($summary,$sendopt);
         $summary=ob_get_contents();
         ob_end_clean();
   
         if (empty($options['noaction'])) {
           if ($commentcount) {
  -          $add_button=($commentcount == 1) ? _("%d comment"):_("%d comments");
  +          $add_button=($commentcount == 1) ? _("%s comment"):_("%s comments");
           } else
             $add_button=_("Add comment");
  -        $add_button=sprintf($add_button,$commentcount);
  +        $count_tag = '<span class="count">'.$commentcount.'</span>';
  +        $add_button=sprintf($add_button, $count_tag);
           $btn= $formatter->link_tag(_urlencode($page),"?action=blog&amp;value=$tag#BlogComment",$add_button);
   
           if ($DBInfo->use_trackback) {
  @@ -428,7 +435,7 @@
   
             $btn.= ' | '.$formatter->link_tag(_urlencode($page),"?action=trackback&amp;value=$tag",_("track back").$counter);
           }
  -        $btn="<div class='blog-action'>&raquo; ".$btn."</div>\n";
  +        $btn="<div class='blog-action'><span class='bullet'>&raquo;</span> ".$btn."</div>\n";
   
         } else
           $btn='';
  @@ -438,6 +445,8 @@
       $items.=$datetag.$out;
       if (--$limit <= 0) break;
     }
  +
  +  $formatter->page = $save_page;
     $url=qualifiedUrl($formatter->link_url($DBInfo->frontpage));
   
     # make pnut
  
  
  
  1.28      +8 -5      moniwiki/plugin/processor/blog.php
  
  Index: blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/blog.php,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- blog.php	10 Jul 2010 10:53:52 -0000	1.27
  +++ blog.php	22 Aug 2010 08:00:21 -0000	1.28
  @@ -7,7 +7,7 @@
   // Hello World
   // }}}
   // this processor is used internally by the Blog action
  -// $Id: blog.php,v 1.27 2010/07/10 10:53:52 wkpark Exp $
  +// $Id: blog.php,v 1.28 2010/08/22 08:00:21 wkpark Exp $
   
   function processor_blog($formatter,$value="",$options) {
     static $date_anchor='';
  @@ -51,7 +51,7 @@
       if ($date && $date[10] == 'T') {
         $date[10]=' ';
         $time=strtotime($date." GMT");
  -      $date= "@ ".gmdate("m-d [h:i a]",$time+$formatter->tz_offset);
  +      $date= gmdate("m-d [h:i a]",$time+$formatter->tz_offset);
         $pagename=$formatter->page->name;
         $p=strrpos($pagename,'/');
         if ($p and preg_match('/(\d{4})(-\d{1,2})?(-\d{1,2})?/',substr($pagename,$p),$match)) {
  @@ -73,6 +73,7 @@
   
     if (!empty($src)) {
       $options['nosisters']=1;
  +    $options['nojavascript']=1;
       $tmp = explode("----\n",$src,2);
       $src = $tmp[0];
       if (!empty($tmp[1])) $comments = $tmp[1];
  @@ -85,8 +86,9 @@
           $comments=preg_replace("/----\n/","[[HTML(</div></div><div class='separator'><hr /></div><div class='blog-comment'><div>)]]",$comments);
         } else {
           $comments='';
  -        $add_button=($count == 1) ? _("%d comment"):_("%d comments");
  -        $add_button=sprintf($add_button,$count);
  +        $add_button=($count == 1) ? _("%s comment"):_("%s comments");
  +        $count_tag = '<span class="count">'.$count.'</span>';
  +        $add_button=sprintf($add_button,$count_tag);
         }
       }
   
  @@ -132,7 +134,8 @@
                           "\$formatter->link_repl('\\1')",$title);
       $out.="<div class='blog-title'><a name='$tag'></a>$title $perma</div>\n";
     }
  -  $out.="<div class='blog-user'>Submitted by $user $date</div>\n".
  +  $info = sprintf(_("Submitted by %s @ %s"), $user, $date);
  +  $out.="<div class='blog-user'>$info</div>\n".
       "<div class='blog-content'>$msg</div>$comments$action\n".
       "</div>\n";
     return $out;
  
  
  
  1.574     +6 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.573
  retrieving revision 1.574
  diff -u -r1.573 -r1.574
  --- wiki.php	21 Aug 2010 09:07:54 -0000	1.573
  +++ wiki.php	22 Aug 2010 08:00:21 -0000	1.574
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.573 2010/08/21 09:07:54 wkpark Exp $
  +// $Id: wiki.php,v 1.574 2010/08/22 08:00:21 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.573 $',1,-1);
  +$_revision = substr('$Revision: 1.574 $',1,-1);
   $_release = '1.1.5-RC4';
   
   #ob_start("ob_gzhandler");
  @@ -3552,7 +3552,8 @@
           }
   	$this->postambles();
   
  -        echo $this->get_javascripts();
  +        if (empty($options['nojavascript']))
  +          echo $this->get_javascripts();
           echo $text;
   
           return;
  @@ -4262,7 +4263,8 @@
       # postamble
       $this->postambles();
   
  -    echo $this->get_javascripts();
  +    if (empty($options['nojavascript']))
  +      echo $this->get_javascripts();
       echo $text;
       if (!empty($this->sisters) and empty($options['nosisters'])) {
         $sister_save=$this->sister_on;
  
  
  


1282466424;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv15434/plugin\n\nModified Files:\n	FastSearch.php \nLog Message:\n[#315620] validate_needle() added to check sanity of reqular expressions\n\n
1282466424;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv15434\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315620] validate_needle() added to check sanity of reqular expressions\n\n
wkpark      2010/08/22 17:40:25

  Modified:    plugin   FastSearch.php
               .        wikilib.php
  Log:
  [#315620] validate_needle() added to check sanity of reqular expressions
  
  Revision  Changes    Path
  1.22      +6 -2      moniwiki/plugin/FastSearch.php
  
  Index: FastSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FastSearch.php,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- FastSearch.php	20 Aug 2010 08:04:58 -0000	1.21
  +++ FastSearch.php	22 Aug 2010 08:40:23 -0000	1.22
  @@ -13,7 +13,7 @@
   //
   // Usage: [[FastSearch(string)]]
   //
  -// $Id: FastSearch.php,v 1.21 2010/08/20 08:04:58 wkpark Exp $
  +// $Id: FastSearch.php,v 1.22 2010/08/22 08:40:23 wkpark Exp $
   
   include_once('lib/indexer.DBA.php');
   
  @@ -31,6 +31,7 @@
   
     $needle=_preg_search_escape($needle);
     $pattern = '/'.$needle.'/i';
  +
     $fneedle=str_replace('"',"&#34;",$needle); # XXX
     $url=$formatter->link_url($formatter->page->urlname);
   
  @@ -45,9 +46,12 @@
      </form>
   EOF;
   
  -  if (!isset($needle[0])) { # or blah blah
  +  if (!isset($needle[0]) or !empty($opts['form'])) { # or blah blah
        $opts['msg'] = _("No search text");
        return $form;
  +  } else if (validate_needle($needle) === false) {
  +     $opts['msg'] = sprintf(_("Invalid search expression \"%s\""), $needle);
  +     return $form;
     }
   
     $DB=new Indexer_dba('fullsearch',"r",$DBInfo->dba_type);
  
  
  
  1.327     +42 -8     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.326
  retrieving revision 1.327
  diff -u -r1.326 -r1.327
  --- wikilib.php	18 Aug 2010 18:24:24 -0000	1.326
  +++ wikilib.php	22 Aug 2010 08:40:24 -0000	1.327
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.326 2010/08/18 18:24:24 wkpark Exp $
  +// $Id: wikilib.php,v 1.327 2010/08/22 08:40:24 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1723,11 +1723,12 @@
       print sprintf(_(" or click %s to fullsearch this page.\n"),$formatter->link_to("?action=fullsearch&amp;value=$options[page]",_("title")))."</h2>";
     }
   
  -  if (!empty($options['value']))
  -    print $ret['form'];
  -  print $out;
  +  print $ret['form'];
  +  
  +  if (!empty($ret['hits']))
  +    print $out;
   
  -  if ($options['value'])
  +  if ($ret['hits'])
       printf(_("Found %s matching %s out of %s total pages")."<br />",
   	 $ret['hits'],
   	($ret['hits'] == 1) ? _("page") : _("pages"),
  @@ -3236,7 +3237,39 @@
     else return "";
   }
   
  +/**
  + * Validate reqular expression
  + *
  + */
  +function validate_needle($needle) {
  +  $needle = _preg_search_escape($needle);
  +  $test = @preg_match("/($needle)/", 'ThIsIsAtEsT', $match);
  +  if ($test === false) return false;
  +
  +  $test_count = 3;
  +  $ok_count = 0;
  +  while ($test !== false) {
  +    preg_match("/($needle)/", '', $match); // empty string
  +    if (!empty($match)) {
  +      return false;
  +    }
  +
  +    for ($i = 0; $i < $test_count; $i++) {
  +      $str = str_shuffle('ABCDEFGHIJKLMNOPQRSTUVWXYZ;:%#@",`abcdefghijklmnopqrstuvwxyz1234567890');
  +      // random test needle
  +      preg_match("/($needle)/", substr($str, 0, 6), $match);
  +      if (!empty($match)) {
  +        $ok_count++;
  +      }
  +    }
  +    break;
  +  }
   
  +  // It is useless needle as it matches all pattern.
  +  if ($ok_count == $test_count)
  +    return false;
  +  return $test;
  +}
   
   function macro_TitleSearch($formatter="",$needle="",&$opts) {
     global $DBInfo;
  @@ -3262,14 +3295,15 @@
   
     $opts['form'] = $form;
     $opts['msg'] = sprintf(_("Title search for \"%s\""), $needle);
  -  $needle=_preg_search_escape($needle);
  -  $test=@preg_match("/$needle/","",$match);
  -  if ($test === false) {
  +  if (validate_needle($needle) === false) {
       $opts['msg'] = sprintf(_("Invalid search expression \"%s\""), $needle);
  +    $opts['hits'] = 0;
       if ($opts['call'])
         return $opts;
       return $form;
     }
  +  $needle=_preg_search_escape($needle);
  +  
     $pages= $DBInfo->getPageLists();
     if (empty($DBInfo->alias)) $DBInfo->initAlias();
     $alias = $DBInfo->alias->getAllPages();
  
  
  


1282466529;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv16933/plugin\n\nModified Files:\n	ShowSmiley.php \nLog Message:\n[#315608] fix to show markup of smileys correctly\n\n
wkpark      2010/08/22 17:42:10

  Modified:    plugin   ShowSmiley.php
  Log:
  [#315608] fix to show markup of smileys correctly
  
  Revision  Changes    Path
  1.3       +2 -2      moniwiki/plugin/ShowSmiley.php
  
  Index: ShowSmiley.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/ShowSmiley.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ShowSmiley.php	26 Sep 2009 05:35:48 -0000	1.2
  +++ ShowSmiley.php	22 Aug 2010 08:42:08 -0000	1.3
  @@ -5,7 +5,7 @@
   //
   // Usage: [[ShowSmiley]]
   //
  -// $Id: ShowSmiley.php,v 1.2 2009/09/26 05:35:48 wkpark Exp $
  +// $Id: ShowSmiley.php,v 1.3 2010/08/22 08:42:08 wkpark Exp $
   
   function macro_ShowSmiley($formatter,$value) {
     $idx=0;
  @@ -19,7 +19,7 @@
   
     foreach ($formatter->smileys as $key=>$value) {
       $skey=str_replace("\\","\\\\",$key);
  -    $out.= '<td>'.$key.'</td><td>'.$formatter->smiley_repl($key)."</td>";
  +    $out.= '<td><tt class="unformatted">'.$key.'</tt></td><td>'.$formatter->smiley_repl($key)."</td>";
       $idx++;
       if (!($idx % $col)) $out.='</tr><tr class="wiki">';
       else $out.='<td></td>';
  
  
  


1282466841;wkpark;Update of /cvsroot/moniwiki/moniwiki/locale/po\nIn directory kill.kldp.net:/tmp/cvs-serv17832\n\nModified Files:\n	ko.po fr.po \nLog Message:\nupdate msgs\n\n
wkpark      2010/08/22 17:47:22

  Modified:    locale/po ko.po fr.po
  Log:
  update msgs
  
  Revision  Changes    Path
  1.40      +53 -24    moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.39
  retrieving revision 1.40
  diff -u -r1.39 -r1.40
  --- ko.po	21 Aug 2010 05:06:55 -0000	1.39
  +++ ko.po	22 Aug 2010 08:47:21 -0000	1.40
  @@ -5,7 +5,7 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1.3\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2010-08-21 14:04+0900\n"
  +"POT-Creation-Date: 2010-08-22 00:50+0900\n"
   "PO-Revision-Date: 2010-08-21 12:20+0900\n"
   "Last-Translator: Won-Kyu Park <wkpark@kldp.org>\n"
   "Language-Team: Won-Kyu Park <wkpark@kldp.org>\n"
  @@ -91,12 +91,12 @@
   msgid "Add Blog entry to \"%s\""
   msgstr "\"%s\"에 블로그 항목 더하기"
   
  -#: ../plugin/Blog.php:263 ../plugin/Blog.php:335 ../plugin/PluginInfo.php:52
  +#: ../plugin/Blog.php:263 ../plugin/Blog.php:343 ../plugin/PluginInfo.php:52
   msgid "Name"
   msgstr "이름"
   
  -#: ../plugin/Blog.php:265 ../plugin/Blog.php:336
  -#: ../plugin/RecentChanges.php:125
  +#: ../plugin/Blog.php:265 ../plugin/Blog.php:344
  +#: ../plugin/RecentChanges.php:125 ../plugin/sendping.php:77
   msgid "Title"
   msgstr "제목"
   
  @@ -104,11 +104,23 @@
   msgid "GUI"
   msgstr ""
   
  -#: ../plugin/Blog.php:280 ../plugin/Comment.php:114
  +#: ../plugin/Blog.php:285 ../plugin/Comment.php:114
   msgid "Don't add a signature"
   msgstr "서명하지 않기"
   
  -#: ../plugin/Blog.php:302
  +#: ../plugin/Blog.php:287 ../wikilib.php:1005 ../wikilib.php:1289
  +#: ../wikilib.php:1943 ../wikilib.php:2040 ../wikilib.php:2560
  +#: ../wikilib.php:2618
  +msgid "Save"
  +msgstr "저장"
  +
  +#: ../plugin/Blog.php:288 ../plugin/Comment.php:94 ../wikilib.php:1011
  +#: ../wikilib.php:1274 ../wikilib.php:1949 ../wikilib.php:2046
  +#: ../monisetup.php:1307
  +msgid "Preview"
  +msgstr "미리보기"
  +
  +#: ../plugin/Blog.php:310
   msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
   msgstr "<b>가로선</b> ----는 블로그일 경우 적용되지 않습니다."
   
  @@ -130,12 +142,12 @@
   msgid "Anonymous"
   msgstr "아무개"
   
  -#: ../plugin/BlogChanges.php:417 ../plugin/processor/blog.php:88
  +#: ../plugin/BlogChanges.php:417
   #, c-format
   msgid "%d comment"
   msgstr "댓글 %d개"
   
  -#: ../plugin/BlogChanges.php:417 ../plugin/processor/blog.php:88
  +#: ../plugin/BlogChanges.php:417
   #, c-format
   msgid "%d comments"
   msgstr "댓글 %d개"
  @@ -145,7 +157,7 @@
   msgid "Add comment"
   msgstr "댓글 달기"
   
  -#: ../plugin/BlogChanges.php:429 ../plugin/processor/blog.php:99
  +#: ../plugin/BlogChanges.php:429 ../plugin/processor/blog.php:100
   msgid "track back"
   msgstr "트랙백"
   
  @@ -181,11 +193,6 @@
   msgid "Comment"
   msgstr "댓글 달기"
   
  -#: ../plugin/Comment.php:94 ../wikilib.php:1011 ../wikilib.php:1274
  -#: ../wikilib.php:1949 ../wikilib.php:2046 ../monisetup.php:1307
  -msgid "Preview"
  -msgstr "미리보기"
  -
   #: ../plugin/Comment.php:111
   msgid "Username"
   msgstr "이름"
  @@ -1046,7 +1053,7 @@
   msgid "add a file"
   msgstr "파일추가"
   
  -#: ../plugin/UploadForm.php:271
  +#: ../plugin/UploadForm.php:271 ../plugin/sendping.php:91
   msgid "Reset"
   msgstr ""
   
  @@ -1386,10 +1393,25 @@
   msgid "last modified %s %s"
   msgstr ""
   
  -#: ../plugin/processor/blog.php:101
  +#: ../plugin/processor/blog.php:88
  +#, c-format
  +msgid "%s comment"
  +msgstr "댓글 %s개"
  +
  +#: ../plugin/processor/blog.php:88
  +#, c-format
  +msgid "%s comments"
  +msgstr "댓글 %s개"
  +
  +#: ../plugin/processor/blog.php:102
   msgid "raw"
   msgstr ""
   
  +#: ../plugin/processor/blog.php:136
  +#, c-format
  +msgid "Submitted by %s @ %s"
  +msgstr "작성자 %s, 등록일 %s"
  +
   #: ../plugin/processor/bts.php:181
   msgid "Save Changes"
   msgstr "변경 저장"
  @@ -1707,7 +1729,19 @@
   msgid "Send TrackBack ping"
   msgstr "트랙백 핑 보내기"
   
  -#: ../plugin/sendping.php:165
  +#: ../plugin/sendping.php:72
  +msgid "TrackBack Ping URL"
  +msgstr "트랙백 핑 URL"
  +
  +#: ../plugin/sendping.php:89
  +msgid "mb encoded"
  +msgstr ""
  +
  +#: ../plugin/sendping.php:90
  +msgid "Send ping"
  +msgstr "핑 보내기"
  +
  +#: ../plugin/sendping.php:175
   msgid "Trackback sent"
   msgstr "트랙백"
   
  @@ -1787,11 +1821,11 @@
   
   #: ../plugin/trackback.php:53
   msgid "TrackBack is not activated !"
  -msgstr "TrackBack이 활성화되지 않았습니다 !"
  +msgstr "TrackBack이 비활성화 상태입니다 !"
   
   #: ../plugin/trackback.php:54
   msgid "send ping"
  -msgstr ""
  +msgstr "핑 보내기"
   
   #: ../plugin/trackback.php:57
   #, c-format
  @@ -2205,11 +2239,6 @@
   msgid "Edit %s"
   msgstr "%s 고치기"
   
  -#: ../wikilib.php:1005 ../wikilib.php:1289 ../wikilib.php:1943
  -#: ../wikilib.php:2040 ../wikilib.php:2560 ../wikilib.php:2618
  -msgid "Save"
  -msgstr "저장"
  -
   #: ../wikilib.php:1013 ../wikilib.php:1276 ../wikilib.php:1951
   #: ../wikilib.php:2048
   msgid "Skip to preview"
  
  
  
  1.34      +53 -22    moniwiki/locale/po/fr.po
  
  Index: fr.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/fr.po,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- fr.po	21 Aug 2010 05:07:04 -0000	1.33
  +++ fr.po	22 Aug 2010 08:47:21 -0000	1.34
  @@ -4,7 +4,7 @@
   msgstr ""
   "Project-Id-Version: MoniWiki 1.1\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2010-08-21 14:04+0900\n"
  +"POT-Creation-Date: 2010-08-22 00:50+0900\n"
   "PO-Revision-Date: 2003-08-17 22:51+0900\n"
   "Last-Translator: Serge Stinckwich <Serge.Stinckwich@info.unicaen.fr>\n"
   "Language-Team: fr <fr@li.org>\n"
  @@ -90,12 +90,12 @@
   msgid "Add Blog entry to \"%s\""
   msgstr "Ajouter une entr?e de blog ? \"%s\""
   
  -#: ../plugin/Blog.php:263 ../plugin/Blog.php:335 ../plugin/PluginInfo.php:52
  +#: ../plugin/Blog.php:263 ../plugin/Blog.php:343 ../plugin/PluginInfo.php:52
   msgid "Name"
   msgstr ""
   
  -#: ../plugin/Blog.php:265 ../plugin/Blog.php:336
  -#: ../plugin/RecentChanges.php:125
  +#: ../plugin/Blog.php:265 ../plugin/Blog.php:344
  +#: ../plugin/RecentChanges.php:125 ../plugin/sendping.php:77
   msgid "Title"
   msgstr "titre"
   
  @@ -103,11 +103,23 @@
   msgid "GUI"
   msgstr ""
   
  -#: ../plugin/Blog.php:280 ../plugin/Comment.php:114
  +#: ../plugin/Blog.php:285 ../plugin/Comment.php:114
   msgid "Don't add a signature"
   msgstr "Ne pas ajouter de signature"
   
  -#: ../plugin/Blog.php:302
  +#: ../plugin/Blog.php:287 ../wikilib.php:1005 ../wikilib.php:1289
  +#: ../wikilib.php:1943 ../wikilib.php:2040 ../wikilib.php:2560
  +#: ../wikilib.php:2618
  +msgid "Save"
  +msgstr "Sauvegarder"
  +
  +#: ../plugin/Blog.php:288 ../plugin/Comment.php:94 ../wikilib.php:1011
  +#: ../wikilib.php:1274 ../wikilib.php:1949 ../wikilib.php:2046
  +#: ../monisetup.php:1307
  +msgid "Preview"
  +msgstr "Pr?visualisation"
  +
  +#: ../plugin/Blog.php:310
   msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
   msgstr "<b>Une r?gle horizontale</b> ---- ne s'applique pas au mode blog."
   
  @@ -129,12 +141,12 @@
   msgid "Anonymous"
   msgstr "Anonyme"
   
  -#: ../plugin/BlogChanges.php:417 ../plugin/processor/blog.php:88
  +#: ../plugin/BlogChanges.php:417
   #, c-format
   msgid "%d comment"
   msgstr "%d commentaire"
   
  -#: ../plugin/BlogChanges.php:417 ../plugin/processor/blog.php:88
  +#: ../plugin/BlogChanges.php:417
   #, c-format
   msgid "%d comments"
   msgstr "%d commentaires"
  @@ -144,7 +156,7 @@
   msgid "Add comment"
   msgstr "Ajouter un commentaire"
   
  -#: ../plugin/BlogChanges.php:429 ../plugin/processor/blog.php:99
  +#: ../plugin/BlogChanges.php:429 ../plugin/processor/blog.php:100
   msgid "track back"
   msgstr ""
   
  @@ -180,11 +192,6 @@
   msgid "Comment"
   msgstr "commentaire"
   
  -#: ../plugin/Comment.php:94 ../wikilib.php:1011 ../wikilib.php:1274
  -#: ../wikilib.php:1949 ../wikilib.php:2046 ../monisetup.php:1307
  -msgid "Preview"
  -msgstr "Pr?visualisation"
  -
   #: ../plugin/Comment.php:111
   msgid "Username"
   msgstr ""
  @@ -1052,7 +1059,7 @@
   msgid "add a file"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:271
  +#: ../plugin/UploadForm.php:271 ../plugin/sendping.php:91
   msgid "Reset"
   msgstr ""
   
  @@ -1392,10 +1399,25 @@
   msgid "last modified %s %s"
   msgstr ""
   
  -#: ../plugin/processor/blog.php:101
  +#: ../plugin/processor/blog.php:88
  +#, c-format
  +msgid "%s comment"
  +msgstr "%s commentaire"
  +
  +#: ../plugin/processor/blog.php:88
  +#, c-format
  +msgid "%s comments"
  +msgstr "%s commentaires"
  +
  +#: ../plugin/processor/blog.php:102
   msgid "raw"
   msgstr ""
   
  +#: ../plugin/processor/blog.php:136
  +#, c-format
  +msgid "Submitted by %s @ %s"
  +msgstr ""
  +
   #: ../plugin/processor/bts.php:181
   msgid "Save Changes"
   msgstr ""
  @@ -1715,7 +1737,21 @@
   msgid "Send TrackBack ping"
   msgstr "Envoy? un ping de TrackBack"
   
  -#: ../plugin/sendping.php:165
  +#: ../plugin/sendping.php:72
  +#, fuzzy
  +msgid "TrackBack Ping URL"
  +msgstr "Envoy? un ping de TrackBack"
  +
  +#: ../plugin/sendping.php:89
  +msgid "mb encoded"
  +msgstr ""
  +
  +#: ../plugin/sendping.php:90
  +#, fuzzy
  +msgid "Send ping"
  +msgstr "envoyer un ping"
  +
  +#: ../plugin/sendping.php:175
   msgid "Trackback sent"
   msgstr "Trackback envoy?"
   
  @@ -2212,11 +2248,6 @@
   msgid "Edit %s"
   msgstr ""
   
  -#: ../wikilib.php:1005 ../wikilib.php:1289 ../wikilib.php:1943
  -#: ../wikilib.php:2040 ../wikilib.php:2560 ../wikilib.php:2618
  -msgid "Save"
  -msgstr "Sauvegarder"
  -
   #: ../wikilib.php:1013 ../wikilib.php:1276 ../wikilib.php:1951
   #: ../wikilib.php:2048
   msgid "Skip to preview"
  
  
  


1282466872;wkpark;Update of /cvsroot/moniwiki/moniwiki/locale/po\nIn directory kill.kldp.net:/tmp/cvs-serv17892\n\nModified Files:\n	moniwiki.pot \nLog Message:\nupdate pot\n\n
wkpark      2010/08/22 17:47:52

  Modified:    locale/po moniwiki.pot
  Log:
  update pot
  
  Revision  Changes    Path
  1.33      +250 -217  moniwiki/locale/po/moniwiki.pot
  
  Index: moniwiki.pot
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/moniwiki.pot,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- moniwiki.pot	14 Aug 2010 05:55:21 -0000	1.32
  +++ moniwiki.pot	22 Aug 2010 08:47:52 -0000	1.33
  @@ -7,7 +7,7 @@
   msgstr ""
   "Project-Id-Version: PACKAGE VERSION\n"
   "Report-Msgid-Bugs-To: \n"
  -"POT-Creation-Date: 2010-08-14 13:21+0900\n"
  +"POT-Creation-Date: 2010-08-22 00:50+0900\n"
   "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
   "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
   "Language-Team: LANGUAGE <LL@li.org>\n"
  @@ -93,24 +93,36 @@
   msgid "Add Blog entry to \"%s\""
   msgstr ""
   
  -#: ../plugin/Blog.php:263 ../plugin/Blog.php:335 ../plugin/PluginInfo.php:52
  +#: ../plugin/Blog.php:263 ../plugin/Blog.php:343 ../plugin/PluginInfo.php:52
   msgid "Name"
   msgstr ""
   
  -#: ../plugin/Blog.php:265 ../plugin/Blog.php:336
  -#: ../plugin/RecentChanges.php:125
  +#: ../plugin/Blog.php:265 ../plugin/Blog.php:344
  +#: ../plugin/RecentChanges.php:125 ../plugin/sendping.php:77
   msgid "Title"
   msgstr ""
   
  -#: ../plugin/Blog.php:271 ../wikilib.php:1211
  +#: ../plugin/Blog.php:271 ../wikilib.php:1280
   msgid "GUI"
   msgstr ""
   
  -#: ../plugin/Blog.php:280 ../plugin/Comment.php:114
  +#: ../plugin/Blog.php:285 ../plugin/Comment.php:114
   msgid "Don't add a signature"
   msgstr ""
   
  -#: ../plugin/Blog.php:302
  +#: ../plugin/Blog.php:287 ../wikilib.php:1005 ../wikilib.php:1289
  +#: ../wikilib.php:1943 ../wikilib.php:2040 ../wikilib.php:2560
  +#: ../wikilib.php:2618
  +msgid "Save"
  +msgstr ""
  +
  +#: ../plugin/Blog.php:288 ../plugin/Comment.php:94 ../wikilib.php:1011
  +#: ../wikilib.php:1274 ../wikilib.php:1949 ../wikilib.php:2046
  +#: ../monisetup.php:1307
  +msgid "Preview"
  +msgstr ""
  +
  +#: ../plugin/Blog.php:310
   msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
   msgstr ""
   
  @@ -132,12 +144,12 @@
   msgid "Anonymous"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:417 ../plugin/processor/blog.php:88
  +#: ../plugin/BlogChanges.php:417
   #, c-format
   msgid "%d comment"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:417 ../plugin/processor/blog.php:88
  +#: ../plugin/BlogChanges.php:417
   #, c-format
   msgid "%d comments"
   msgstr ""
  @@ -147,7 +159,7 @@
   msgid "Add comment"
   msgstr ""
   
  -#: ../plugin/BlogChanges.php:429 ../plugin/processor/blog.php:99
  +#: ../plugin/BlogChanges.php:429 ../plugin/processor/blog.php:100
   msgid "track back"
   msgstr ""
   
  @@ -183,11 +195,6 @@
   msgid "Comment"
   msgstr ""
   
  -#: ../plugin/Comment.php:94 ../wikilib.php:942 ../wikilib.php:1205
  -#: ../wikilib.php:1880 ../wikilib.php:1977 ../monisetup.php:1307
  -msgid "Preview"
  -msgstr ""
  -
   #: ../plugin/Comment.php:111
   msgid "Username"
   msgstr ""
  @@ -205,17 +212,17 @@
   msgstr ""
   
   #: ../plugin/Comment.php:174 ../plugin/userform.php:121
  -#: ../plugin/userform.php:184 ../plugin/userform.php:207 ../wikilib.php:1930
  +#: ../plugin/userform.php:184 ../plugin/userform.php:207 ../wikilib.php:1999
   msgid "Invalid ticket !"
   msgstr ""
   
   #: ../plugin/Comment.php:179 ../plugin/userform.php:123
  -#: ../plugin/userform.php:209 ../wikilib.php:1935
  +#: ../plugin/userform.php:209 ../wikilib.php:2004
   msgid "You need a ticket !"
   msgstr ""
   
  -#: ../plugin/Comment.php:201 ../plugin/Gallery.php:182 ../plugin/bbs.php:1009
  -#: ../wikilib.php:1741 ../wikilib.php:1951
  +#: ../plugin/Comment.php:201 ../plugin/Gallery.php:137 ../plugin/bbs.php:1009
  +#: ../wikilib.php:1810 ../wikilib.php:2020
   msgid ""
   "Sorry, can not save page because some messages are blocked in this wiki."
   msgstr ""
  @@ -233,16 +240,16 @@
   msgid "Comment added successfully"
   msgstr ""
   
  -#: ../plugin/Diff.php:411 ../plugin/Info.php:251 ../plugin/Stat.php:125
  +#: ../plugin/Diff.php:411 ../plugin/Info.php:258 ../plugin/Stat.php:125
   msgid "No older revisions available"
   msgstr ""
   
  -#: ../plugin/Diff.php:416 ../plugin/Info.php:257 ../plugin/Stat.php:131
  +#: ../plugin/Diff.php:416 ../plugin/Info.php:264 ../plugin/Stat.php:131
   #: ../plugin/rcsexport.php:13 ../plugin/rcsimport.php:13
   msgid "Version info is not available in this wiki"
   msgstr ""
   
  -#: ../plugin/Diff.php:428 ../wikilib.php:1900
  +#: ../plugin/Diff.php:428 ../wikilib.php:1969
   msgid "No difference found"
   msgstr ""
   
  @@ -340,38 +347,38 @@
   msgid "Couldn't open search database, sorry."
   msgstr ""
   
  -#: ../plugin/FastSearch.php:138 ../plugin/FullSearch.php:263
  +#: ../plugin/FastSearch.php:138 ../plugin/FullSearch.php:264
   #, c-format
   msgid "%d match"
   msgstr ""
   
  -#: ../plugin/FastSearch.php:138 ../plugin/FullSearch.php:263
  +#: ../plugin/FastSearch.php:138 ../plugin/FullSearch.php:264
   #, c-format
   msgid "%d matches"
   msgstr ""
   
  -#: ../plugin/FastSearch.php:160 ../plugin/FullSearch.php:19
  +#: ../plugin/FastSearch.php:161 ../plugin/FullSearch.php:19
   #, c-format
   msgid "Full text search for \"%s\""
   msgstr ""
   
  -#: ../plugin/FastSearch.php:177 ../plugin/FullSearch.php:38
  -#: ../wikilib.php:1662
  +#: ../plugin/FastSearch.php:178 ../plugin/FullSearch.php:38
  +#: ../wikilib.php:1731
   #, c-format
   msgid "Found %s matching %s out of %s total pages"
   msgstr ""
   
  -#: ../plugin/FastSearch.php:179 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1664
  +#: ../plugin/FastSearch.php:180 ../plugin/FullSearch.php:40
  +#: ../wikilib.php:1733
   msgid "page"
   msgstr ""
   
  -#: ../plugin/FastSearch.php:179 ../plugin/FullSearch.php:40
  -#: ../wikilib.php:1664
  +#: ../plugin/FastSearch.php:180 ../plugin/FullSearch.php:40
  +#: ../wikilib.php:1733
   msgid "pages"
   msgstr ""
   
  -#: ../plugin/FastSearch.php:184
  +#: ../plugin/FastSearch.php:185
   #, c-format
   msgid "Show all %d results"
   msgstr ""
  @@ -390,8 +397,8 @@
   msgid "Show Context."
   msgstr ""
   
  -#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4686
  -#: ../wikilib.php:1189
  +#: ../plugin/FullSearch.php:47 ../plugin/VisualTour.php:139 ../wiki.php:4725
  +#: ../wikilib.php:1258
   msgid "Refresh"
   msgstr ""
   
  @@ -405,8 +412,8 @@
   msgid "You can also click %s to search title.\n"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:52 ../wiki.php:5660 ../wiki.php:5668
  -#: ../wikilib.php:1672
  +#: ../plugin/FullSearch.php:52 ../wiki.php:5706 ../wiki.php:5714
  +#: ../wikilib.php:1741
   msgid "here"
   msgstr ""
   
  @@ -418,42 +425,42 @@
   msgid "Case-sensitive searching"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:77 ../wikilib.php:3147 ../wikilib.php:3223
  +#: ../plugin/FullSearch.php:77 ../wikilib.php:3247 ../wikilib.php:3323
   msgid "Go"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:140
  +#: ../plugin/FullSearch.php:141
   msgid "Empty expression"
   msgstr ""
   
  -#: ../plugin/FullSearch.php:144 ../wikilib.php:3168
  +#: ../plugin/FullSearch.php:145 ../wikilib.php:3268
   #, c-format
   msgid "Invalid search expression \"%s\""
   msgstr ""
   
  -#: ../plugin/Gallery.php:253 ../plugin/UploadedFiles.php:289
  +#: ../plugin/Gallery.php:208 ../plugin/UploadedFiles.php:289
   msgid "No files found"
   msgstr ""
   
  -#: ../plugin/Gallery.php:345 ../plugin/Gallery.php:360
  +#: ../plugin/Gallery.php:300 ../plugin/Gallery.php:315
   msgid "add comment"
   msgstr ""
   
  -#: ../plugin/Gallery.php:355
  +#: ../plugin/Gallery.php:310
   msgid "show comments"
   msgstr ""
   
  -#: ../plugin/Gallery.php:409 ../plugin/Gallery.php:413 ../wikilib.php:1728
  -#: ../wikilib.php:1898 ../wikilib.php:1905
  +#: ../plugin/Gallery.php:364 ../plugin/Gallery.php:368 ../wikilib.php:1797
  +#: ../wikilib.php:1967 ../wikilib.php:1974
   #, c-format
   msgid "Go back or return to %s"
   msgstr ""
   
  -#: ../plugin/Gallery.php:410
  +#: ../plugin/Gallery.php:365
   msgid "Comments are edited"
   msgstr ""
   
  -#: ../plugin/Gallery.php:414
  +#: ../plugin/Gallery.php:369
   msgid "Comments is added"
   msgstr ""
   
  @@ -461,66 +468,66 @@
   msgid "Import URL"
   msgstr ""
   
  -#: ../plugin/Info.php:36
  +#: ../plugin/Info.php:39
   msgid "Compare"
   msgstr ""
   
  -#: ../plugin/Info.php:41
  +#: ../plugin/Info.php:44
   msgid "Revision History"
   msgstr ""
   
  -#: ../plugin/Info.php:44
  +#: ../plugin/Info.php:47
   msgid "Ver."
   msgstr ""
   
  -#: ../plugin/Info.php:44 ../plugin/UploadedFiles.php:305
  +#: ../plugin/Info.php:47 ../plugin/UploadedFiles.php:305
   msgid "Date"
   msgstr ""
   
  -#: ../plugin/Info.php:45 ../plugin/RecentChanges.php:129
  +#: ../plugin/Info.php:48 ../plugin/RecentChanges.php:129
   msgid "Changes"
   msgstr ""
   
  -#: ../plugin/Info.php:46 ../plugin/RecentChanges.php:128
  +#: ../plugin/Info.php:49 ../plugin/RecentChanges.php:128
   msgid "Editor"
   msgstr ""
   
  -#: ../plugin/Info.php:50
  +#: ../plugin/Info.php:53
   msgid "View"
   msgstr ""
   
  -#: ../plugin/Info.php:51
  +#: ../plugin/Info.php:54
   msgid "admin."
   msgstr ""
   
  -#: ../plugin/Info.php:71
  +#: ../plugin/Info.php:78
   msgid "Show all revisions"
   msgstr ""
   
  -#: ../plugin/Info.php:106
  +#: ../plugin/Info.php:113
   msgid "Yesterday"
   msgstr ""
   
  -#: ../plugin/Info.php:107
  +#: ../plugin/Info.php:114
   #, c-format
   msgid "%s days ago"
   msgstr ""
   
  -#: ../plugin/Info.php:109
  +#: ../plugin/Info.php:116
   #, c-format
   msgid "%s hours ago"
   msgstr ""
   
  -#: ../plugin/Info.php:111
  +#: ../plugin/Info.php:118
   #, c-format
   msgid "%s min ago"
   msgstr ""
   
  -#: ../plugin/Info.php:220 ../plugin/rename.php:80
  +#: ../plugin/Info.php:227 ../plugin/rename.php:80
   msgid "show only"
   msgstr ""
   
  -#: ../plugin/Info.php:224
  +#: ../plugin/Info.php:231
   msgid "purge"
   msgstr ""
   
  @@ -629,7 +636,7 @@
   msgid "Select keywords for %s"
   msgstr ""
   
  -#: ../plugin/LikePages.php:31 ../wikilib.php:1549 ../wikilib.php:3155
  +#: ../plugin/LikePages.php:31 ../wikilib.php:1618 ../wikilib.php:3255
   msgid "Use more specific text"
   msgstr ""
   
  @@ -920,7 +927,7 @@
   msgid "TwinPages of %s"
   msgstr ""
   
  -#: ../plugin/TwinPages.php:20 ../wiki.php:5645
  +#: ../plugin/TwinPages.php:20 ../wiki.php:5691
   msgid "See [TwinPages]: "
   msgstr ""
   
  @@ -1035,7 +1042,7 @@
   msgid "add a file"
   msgstr ""
   
  -#: ../plugin/UploadForm.php:271
  +#: ../plugin/UploadForm.php:271 ../plugin/sendping.php:91
   msgid "Reset"
   msgstr ""
   
  @@ -1066,12 +1073,12 @@
   
   #: ../plugin/UploadedFiles.php:453 ../plugin/login.php:32
   #: ../plugin/rcsimport.php:32 ../plugin/rcsimport.php:88
  -#: ../plugin/rename.php:77 ../plugin/revert.php:82 ../plugin/userinfo.php:37
  -#: ../wikilib.php:1387 ../wikilib.php:2395
  +#: ../plugin/rename.php:77 ../plugin/revert.php:98 ../plugin/userinfo.php:37
  +#: ../wikilib.php:1456 ../wikilib.php:2472
   msgid "Password"
   msgstr ""
   
  -#: ../plugin/UploadedFiles.php:454 ../wikilib.php:1365
  +#: ../plugin/UploadedFiles.php:454 ../wikilib.php:1434
   msgid "Delete selected files"
   msgstr ""
   
  @@ -1091,7 +1098,7 @@
   msgid "Voted successfully"
   msgstr ""
   
  -#: ../plugin/WordIndex.php:69 ../wikilib.php:2904
  +#: ../plugin/WordIndex.php:69 ../wikilib.php:3004
   msgid "Others"
   msgstr ""
   
  @@ -1175,7 +1182,7 @@
   msgid "Edit"
   msgstr ""
   
  -#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1388
  +#: ../plugin/bbs.php:628 ../plugin/bbs.php:786 ../wikilib.php:1457
   msgid "Delete"
   msgstr ""
   
  @@ -1281,7 +1288,7 @@
   msgid "The TCPDF class not found!"
   msgstr ""
   
  -#: ../plugin/login.php:31 ../wikilib.php:2425 ../wikilib.php:2560
  +#: ../plugin/login.php:31 ../wikilib.php:2502 ../wikilib.php:2637
   msgid "ID"
   msgstr ""
   
  @@ -1289,18 +1296,23 @@
   msgid "Join"
   msgstr ""
   
  -#: ../plugin/login.php:34 ../wikilib.php:2411
  +#: ../plugin/login.php:34 ../wikilib.php:2488
   msgid "Login"
   msgstr ""
   
  -#: ../plugin/login.php:52 ../plugin/minilogin.php:25
  +#: ../plugin/login.php:54 ../plugin/minilogin.php:25
   msgid "Logout"
   msgstr ""
   
  -#: ../plugin/login.php:53 ../plugin/minilogin.php:24 ../locale/dummy.php:3
  +#: ../plugin/login.php:55 ../plugin/minilogin.php:24 ../locale/dummy.php:3
   msgid "UserPreferences"
   msgstr ""
   
  +#: ../plugin/login.php:56 ../plugin/minilogin.php:26
  +#, c-format
  +msgid "%s or %s"
  +msgstr ""
  +
   #: ../plugin/man_get.php:17
   msgid "No manpage selected"
   msgstr ""
  @@ -1313,15 +1325,10 @@
   msgid "Edit man page"
   msgstr ""
   
  -#: ../plugin/minilogin.php:18 ../wikilib.php:2480
  +#: ../plugin/minilogin.php:18 ../wikilib.php:2557
   msgid "Login or Join"
   msgstr ""
   
  -#: ../plugin/minilogin.php:26
  -#, c-format
  -msgid "%s or %s"
  -msgstr ""
  -
   #: ../plugin/msgfmt.php:75 ../plugin/msgfmt.php:153
   #, c-format
   msgid "Translation of %s"
  @@ -1375,15 +1382,30 @@
   msgid "last modified %s %s"
   msgstr ""
   
  -#: ../plugin/processor/blog.php:101
  +#: ../plugin/processor/blog.php:88
  +#, c-format
  +msgid "%s comment"
  +msgstr ""
  +
  +#: ../plugin/processor/blog.php:88
  +#, c-format
  +msgid "%s comments"
  +msgstr ""
  +
  +#: ../plugin/processor/blog.php:102
   msgid "raw"
   msgstr ""
   
  +#: ../plugin/processor/blog.php:136
  +#, c-format
  +msgid "Submitted by %s @ %s"
  +msgstr ""
  +
   #: ../plugin/processor/bts.php:181
   msgid "Save Changes"
   msgstr ""
   
  -#: ../plugin/processor/monimarkup.php:515 ../wiki.php:4049
  +#: ../plugin/processor/monimarkup.php:523 ../wiki.php:4071
   msgid "edit"
   msgstr ""
   
  @@ -1507,7 +1529,7 @@
   msgid "Only WikiMaster can rename this page"
   msgstr ""
   
  -#: ../plugin/rename.php:79 ../wikilib.php:1433
  +#: ../plugin/rename.php:79 ../wikilib.php:1502
   msgid "with revision history"
   msgstr ""
   
  @@ -1549,51 +1571,55 @@
   msgid "Select a tarball file to restore"
   msgstr ""
   
  -#: ../plugin/revert.php:23 ../wiki.php:5662
  +#: ../plugin/revert.php:23 ../wiki.php:5708
   #, c-format
   msgid "Old Revisions of the %s"
   msgstr ""
   
  -#: ../plugin/revert.php:57
  +#: ../plugin/revert.php:67
   msgid "No version control available."
   msgstr ""
   
  -#: ../plugin/revert.php:61
  +#: ../plugin/revert.php:71
   #, c-format
   msgid "%s is successfully rollback."
   msgstr ""
   
  -#: ../plugin/revert.php:66
  +#: ../plugin/revert.php:76
  +msgid "Please select old revision to revert."
  +msgstr ""
  +
  +#: ../plugin/revert.php:79
   msgid "Are you really want to overwrite this page ?"
   msgstr ""
   
  -#: ../plugin/revert.php:67
  +#: ../plugin/revert.php:80
   msgid "Force overwrite"
   msgstr ""
   
  -#: ../plugin/revert.php:69
  +#: ../plugin/revert.php:82
   msgid "Are you really want to revert this page ?"
   msgstr ""
   
  -#: ../plugin/revert.php:74 ../wikilib.php:1200
  +#: ../plugin/revert.php:89 ../wikilib.php:1269
   msgid "Summary"
   msgstr ""
   
  -#: ../plugin/revert.php:76
  +#: ../plugin/revert.php:92
   #, c-format
   msgid "Rollback to revision %s"
   msgstr ""
   
  -#: ../plugin/revert.php:79
  +#: ../plugin/revert.php:95
   msgid "Revert page"
   msgstr ""
   
  -#: ../plugin/revert.php:80
  +#: ../plugin/revert.php:96
   #, c-format
   msgid "Only WikiMaster can %s this page"
   msgstr ""
   
  -#: ../plugin/revert.php:80
  +#: ../plugin/revert.php:96
   #, c-format
   msgid "revert"
   msgstr ""
  @@ -1621,23 +1647,23 @@
   msgid "Scrapped pages"
   msgstr ""
   
  -#: ../plugin/security/acl.php:141
  +#: ../plugin/security/acl.php:202
   msgid "ACL groups"
   msgstr ""
   
  -#: ../plugin/security/acl.php:144
  +#: ../plugin/security/acl.php:205
   msgid "Allowed ACL actions"
   msgstr ""
   
  -#: ../plugin/security/acl.php:149
  +#: ../plugin/security/acl.php:210
   msgid "Denied ACL actions"
   msgstr ""
   
  -#: ../plugin/security/acl.php:154
  +#: ../plugin/security/acl.php:215
   msgid "Protected ACL actions"
   msgstr ""
   
  -#: ../plugin/security/acl.php:217 ../plugin/security/community.php:26
  +#: ../plugin/security/acl.php:278 ../plugin/security/community.php:26
   #: ../plugin/security/community.php:36 ../plugin/security/community.php:46
   #: ../plugin/security/mustlogin.php:28 ../plugin/security/mustlogin.php:39
   #: ../plugin/security/mustlogin.php:50 ../plugin/security/needtologin.php:28
  @@ -1648,7 +1674,7 @@
   msgid "You are not allowed to '%s' on this page"
   msgstr ""
   
  -#: ../plugin/security/acl.php:218
  +#: ../plugin/security/acl.php:279
   msgid "Please contact WikiMasters :b"
   msgstr ""
   
  @@ -1692,7 +1718,19 @@
   msgid "Send TrackBack ping"
   msgstr ""
   
  -#: ../plugin/sendping.php:165
  +#: ../plugin/sendping.php:72
  +msgid "TrackBack Ping URL"
  +msgstr ""
  +
  +#: ../plugin/sendping.php:89
  +msgid "mb encoded"
  +msgstr ""
  +
  +#: ../plugin/sendping.php:90
  +msgid "Send ping"
  +msgstr ""
  +
  +#: ../plugin/sendping.php:175
   msgid "Trackback sent"
   msgstr ""
   
  @@ -1839,7 +1877,7 @@
   msgid "Cookie deleted !"
   msgstr ""
   
  -#: ../plugin/userform.php:110 ../wikilib.php:2555
  +#: ../plugin/userform.php:110 ../wikilib.php:2632
   msgid "E-mail new password"
   msgstr ""
   
  @@ -1920,8 +1958,8 @@
   msgid "You are not allowed to register on this wiki"
   msgstr ""
   
  -#: ../plugin/userform.php:246 ../plugin/userform.php:425 ../wiki.php:5596
  -#: ../wiki.php:5607
  +#: ../plugin/userform.php:246 ../plugin/userform.php:425 ../wiki.php:5642
  +#: ../wiki.php:5653
   msgid "Please contact WikiMasters"
   msgstr ""
   
  @@ -2040,482 +2078,477 @@
   msgid "Whois search result for %s"
   msgstr ""
   
  -#: ../wiki.php:1316
  +#: ../wiki.php:1318
   #, c-format
   msgid "Rename %s to %s"
   msgstr ""
   
  -#: ../wiki.php:1740
  +#: ../wiki.php:1742
   msgid "Version info does not supported in this wiki"
   msgstr ""
   
  -#: ../wiki.php:1750
  +#: ../wiki.php:1752
   msgid "File does not exist"
   msgstr ""
   
  -#: ../wiki.php:2179
  +#: ../wiki.php:2185
   #, c-format
   msgid "File '%s' does not exist."
   msgstr ""
   
  -#: ../wiki.php:3109 ../wiki.php:3120 ../wiki.php:5870
  +#: ../wiki.php:3115 ../wiki.php:3126 ../wiki.php:5916
   msgid "Invalid ajax action."
   msgstr ""
   
  -#: ../wiki.php:3619
  +#: ../wiki.php:3626
   msgid "Tags:"
   msgstr ""
   
  -#: ../wiki.php:3648
  +#: ../wiki.php:3655
   #, c-format
   msgid "See %s"
   msgstr ""
   
  -#: ../wiki.php:3648
  +#: ../wiki.php:3655
   #, c-format
   msgid "TwinPages"
   msgstr ""
   
  -#: ../wiki.php:3653
  +#: ../wiki.php:3660
   msgid "See [TwinPages]:"
   msgstr ""
   
  -#: ../wiki.php:4233
  +#: ../wiki.php:4272
   msgid "Sister Sites Index"
   msgstr ""
   
  -#: ../wiki.php:4682 ../locale/dummy.php:6
  +#: ../wiki.php:4721 ../locale/dummy.php:6
   msgid "EditText"
   msgstr ""
   
  -#: ../wiki.php:4684
  +#: ../wiki.php:4723
   msgid "NotEditable"
   msgstr ""
   
  -#: ../wiki.php:4688 ../locale/dummy.php:6
  +#: ../wiki.php:4727 ../locale/dummy.php:6
   msgid "ShowPage"
   msgstr ""
   
  -#: ../wiki.php:4689 ../locale/dummy.php:3 ../locale/dummy.php:5
  +#: ../wiki.php:4728 ../locale/dummy.php:3 ../locale/dummy.php:5
   msgid "FindPage"
   msgstr ""
   
  -#: ../wiki.php:5150
  +#: ../wiki.php:5189
   msgid "Main"
   msgstr ""
   
  -#: ../wiki.php:5410
  +#: ../wiki.php:5449
   msgid "Someone logged in at another place !"
   msgstr ""
   
  -#: ../wiki.php:5595
  +#: ../wiki.php:5641
   msgid "You are in the black list"
   msgstr ""
   
  -#: ../wiki.php:5606
  +#: ../wiki.php:5652
   msgid "You are blocked in this wiki"
   msgstr ""
   
  -#: ../wiki.php:5647 ../wiki.php:5656 ../wikilib.php:1652
  +#: ../wiki.php:5693 ../wiki.php:5702 ../wikilib.php:1721
   msgid "Create this page"
   msgstr ""
   
  -#: ../wiki.php:5658
  +#: ../wiki.php:5704
   #, c-format
   msgid "%s has saved revisions"
   msgstr ""
   
  -#: ../wiki.php:5660 ../wiki.php:5668
  +#: ../wiki.php:5706 ../wiki.php:5714
   #, c-format
   msgid "%s or click %s to fulltext search.\n"
   msgstr ""
   
  -#: ../wiki.php:5666
  +#: ../wiki.php:5712
   #, c-format
   msgid "%s is not found in this Wiki"
   msgstr ""
   
  -#: ../wiki.php:5674
  +#: ../wiki.php:5720
   msgid "Please try to search with another word"
   msgstr ""
   
  -#: ../wiki.php:5686
  +#: ../wiki.php:5732
   #, c-format
   msgid "%s or alternativly, use one of these templates:\n"
   msgstr ""
   
  -#: ../wiki.php:5689
  +#: ../wiki.php:5735
   msgid "You have no templates"
   msgstr ""
   
  -#: ../wiki.php:5691
  +#: ../wiki.php:5737
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern.\n"
   msgstr ""
   
  -#: ../wiki.php:5702
  +#: ../wiki.php:5748
   #, c-format
   msgid "Redirected from page \"%s\""
   msgstr ""
   
  -#: ../wiki.php:5872
  +#: ../wiki.php:5918
   msgid "Invalid macro action."
   msgstr ""
   
  -#: ../wiki.php:5882
  +#: ../wiki.php:5928
   #, c-format
   msgid "You are not allowed to '%s'"
   msgstr ""
   
  -#: ../wiki.php:5902
  +#: ../wiki.php:5948
   #, c-format
   msgid "Fail to \"%s\" !"
   msgstr ""
   
  -#: ../wiki.php:5905
  +#: ../wiki.php:5951
   msgid "Please enter the valid password"
   msgstr ""
   
  -#: ../wikilib.php:905
  +#: ../wikilib.php:974
   msgid "You are not allowed to edit this page !"
   msgstr ""
   
  -#: ../wikilib.php:913
  +#: ../wikilib.php:982
   #, c-format
   msgid "Edit %s"
   msgstr ""
   
  -#: ../wikilib.php:936 ../wikilib.php:1220 ../wikilib.php:1874
  -#: ../wikilib.php:1971 ../wikilib.php:2483 ../wikilib.php:2541
  -msgid "Save"
  -msgstr ""
  -
  -#: ../wikilib.php:944 ../wikilib.php:1207 ../wikilib.php:1882
  -#: ../wikilib.php:1979
  +#: ../wikilib.php:1013 ../wikilib.php:1276 ../wikilib.php:1951
  +#: ../wikilib.php:2048
   msgid "Skip to preview"
   msgstr ""
   
  -#: ../wikilib.php:1059
  +#: ../wikilib.php:1128
   msgid "Use one of the following templates as an initial release :\n"
   msgstr ""
   
  -#: ../wikilib.php:1061
  +#: ../wikilib.php:1130
   #, c-format
   msgid "To create your own templates, add a page with '%s' pattern."
   msgstr ""
   
  -#: ../wikilib.php:1065
  +#: ../wikilib.php:1134
   msgid "Merge"
   msgstr ""
   
  -#: ../wikilib.php:1066
  +#: ../wikilib.php:1135
   msgid "Merge manually"
   msgstr ""
   
  -#: ../wikilib.php:1067
  +#: ../wikilib.php:1136
   msgid "Ignore conflicts"
   msgstr ""
   
  -#: ../wikilib.php:1102
  +#: ../wikilib.php:1171
   msgid "ReduceEditor"
   msgstr ""
   
  -#: ../wikilib.php:1103
  +#: ../wikilib.php:1172
   msgid "EnlargeEditor"
   msgstr ""
   
  -#: ../wikilib.php:1107 ../locale/dummy.php:6
  +#: ../wikilib.php:1176 ../locale/dummy.php:6
   msgid "InterWiki"
   msgstr ""
   
  -#: ../wikilib.php:1109
  +#: ../wikilib.php:1178
   msgid "HelpOnEditing"
   msgstr ""
   
  -#: ../wikilib.php:1143
  +#: ../wikilib.php:1212
   #, c-format
   msgid "Describe %s here"
   msgstr ""
   
  -#: ../wikilib.php:1163
  +#: ../wikilib.php:1232
   msgid "Category"
   msgstr ""
   
  -#: ../wikilib.php:1171
  +#: ../wikilib.php:1240
   msgid " Select "
   msgstr ""
   
  -#: ../wikilib.php:1183
  +#: ../wikilib.php:1252
   msgid "Minor edit"
   msgstr ""
   
  -#: ../wikilib.php:1299
  +#: ../wikilib.php:1368
   msgid "406 Not Acceptable"
   msgstr ""
   
  -#: ../wikilib.php:1304
  +#: ../wikilib.php:1373
   #, c-format
   msgid "%s is not valid action"
   msgstr ""
   
  -#: ../wikilib.php:1306
  +#: ../wikilib.php:1375
   msgid "Is it valid action ?"
   msgstr ""
   
  -#: ../wikilib.php:1353
  +#: ../wikilib.php:1422
   #, c-format
   msgid "File '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:1355
  +#: ../wikilib.php:1424
   #, c-format
   msgid "Fail to delete '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1360
  +#: ../wikilib.php:1429
   #, c-format
   msgid "Directory '%s' is deleted"
   msgstr ""
   
  -#: ../wikilib.php:1362
  +#: ../wikilib.php:1431
   #, c-format
   msgid "Fail to rmdir '%s'"
   msgstr ""
   
  -#: ../wikilib.php:1372 ../wikilib.php:1392
  +#: ../wikilib.php:1441 ../wikilib.php:1461
   msgid "No files are selected !"
   msgstr ""
   
  -#: ../wikilib.php:1385
  +#: ../wikilib.php:1454
   #, c-format
   msgid "Did you really want to delete '%s' ?"
   msgstr ""
   
  -#: ../wikilib.php:1389
  +#: ../wikilib.php:1458
   msgid "Delete selected file"
   msgstr ""
   
  -#: ../wikilib.php:1410
  +#: ../wikilib.php:1479
   #, c-format
   msgid "\"%s\" is deleted !"
   msgstr ""
   
  -#: ../wikilib.php:1425
  +#: ../wikilib.php:1494
   msgid "Please delete this file manually."
   msgstr ""
   
  -#: ../wikilib.php:1427
  +#: ../wikilib.php:1496
   #, c-format
   msgid "Delete \"%s\" ?"
   msgstr ""
   
  -#: ../wikilib.php:1481
  +#: ../wikilib.php:1550
   #, c-format
   msgid "%s (rev. %s)"
   msgstr ""
   
  -#: ../wikilib.php:1654
  +#: ../wikilib.php:1723
   #, c-format
   msgid " or click %s to fullsearch this page.\n"
   msgstr ""
   
  -#: ../wikilib.php:1654
  +#: ../wikilib.php:1723
   msgid "title"
   msgstr ""
   
  -#: ../wikilib.php:1668
  +#: ../wikilib.php:1737
   msgid "Please try to fulltext search"
   msgstr ""
   
  -#: ../wikilib.php:1671
  +#: ../wikilib.php:1740
   #, c-format
   msgid "You can also click %s to fulltext search.\n"
   msgstr ""
   
  -#: ../wikilib.php:1716 ../wikilib.php:1829
  +#: ../wikilib.php:1785 ../wikilib.php:1898
   #, c-format
   msgid "Someone else saved the page while you edited %s"
   msgstr ""
   
  -#: ../wikilib.php:1722
  +#: ../wikilib.php:1791
   msgid "Section edit is not valid for non-exists page."
   msgstr ""
   
  -#: ../wikilib.php:1755 ../wikilib.php:2011
  +#: ../wikilib.php:1824 ../wikilib.php:2080
   msgid "mail does not supported by default."
   msgstr ""
   
  -#: ../wikilib.php:1759 ../wikilib.php:2015
  +#: ../wikilib.php:1828 ../wikilib.php:2084
   msgid "Sent notification mail."
   msgstr ""
   
  -#: ../wikilib.php:1761 ../wikilib.php:2017
  +#: ../wikilib.php:1830 ../wikilib.php:2086
   msgid "No subscribers found."
   msgstr ""
   
  -#: ../wikilib.php:1766 ../wikilib.php:2022
  +#: ../wikilib.php:1835 ../wikilib.php:2091
   #, c-format
   msgid "%s is not editable"
   msgstr ""
   
  -#: ../wikilib.php:1768 ../wikilib.php:2024
  +#: ../wikilib.php:1837 ../wikilib.php:2093
   #, c-format
   msgid "%s is saved"
   msgstr ""
   
  -#: ../wikilib.php:1820
  +#: ../wikilib.php:1889
   msgid "Goto Editor"
   msgstr ""
   
  -#: ../wikilib.php:1834
  +#: ../wikilib.php:1903
   #, c-format
   msgid "%s is merged with latest contents."
   msgstr ""
   
  -#: ../wikilib.php:1835
  +#: ../wikilib.php:1904
   #, c-format
   msgid "%s is merged successfully"
   msgstr ""
   
  -#: ../wikilib.php:1839
  +#: ../wikilib.php:1908
   #, c-format
   msgid "Merge conflicts are detected for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1840
  +#: ../wikilib.php:1909
   #, c-format
   msgid "Merge cancelled on %s."
   msgstr ""
   
  -#: ../wikilib.php:1841
  +#: ../wikilib.php:1910
   msgid "NEW"
   msgstr ""
   
  -#: ../wikilib.php:1842
  +#: ../wikilib.php:1911
   msgid "OLD"
   msgstr ""
   
  -#: ../wikilib.php:1847
  +#: ../wikilib.php:1916
   #, c-format
   msgid "Get merge conflicts for %s"
   msgstr ""
   
  -#: ../wikilib.php:1848
  +#: ../wikilib.php:1917
   msgid "Please resolve conflicts manually."
   msgstr ""
   
  -#: ../wikilib.php:1851
  +#: ../wikilib.php:1920
   #, c-format
   msgid "Force merging for %s !"
   msgstr ""
   
  -#: ../wikilib.php:1852
  +#: ../wikilib.php:1921
   msgid "Please be careful, you could damage useful information."
   msgstr ""
   
  -#: ../wikilib.php:1866
  +#: ../wikilib.php:1935
   msgid "Conflict error!"
   msgstr ""
   
  -#: ../wikilib.php:1907
  +#: ../wikilib.php:1976
   msgid "Too long Comment"
   msgstr ""
   
  -#: ../wikilib.php:1957
  +#: ../wikilib.php:2026
   #, c-format
   msgid "Preview of %s"
   msgstr ""
   
  -#: ../wikilib.php:2057
  +#: ../wikilib.php:2126
   msgid "Nobody subscribed to this page."
   msgstr ""
   
  -#: ../wikilib.php:2076
  +#: ../wikilib.php:2145
   #, c-format
   msgid "%s page is modified"
   msgstr ""
   
  -#: ../wikilib.php:2105
  +#: ../wikilib.php:2174
   #, c-format
   msgid ""
   "You have subscribed to this wiki page on \"%s\" for change notification.\n"
   "\n"
   msgstr ""
   
  -#: ../wikilib.php:2118
  +#: ../wikilib.php:2187
   msgid "Send notification mails to all subscribers"
   msgstr ""
   
  -#: ../wikilib.php:2123
  +#: ../wikilib.php:2192
   msgid "Mails are sent successfully"
   msgstr ""
   
  -#: ../wikilib.php:2124
  +#: ../wikilib.php:2193
   #, c-format
   msgid "mails are sent to '%s'"
   msgstr ""
   
  -#: ../wikilib.php:2126
  +#: ../wikilib.php:2195
   msgid "Fail to send mail"
   msgstr ""
   
  -#: ../wikilib.php:2137
  +#: ../wikilib.php:2206
   msgid "This wiki does not support sendmail"
   msgstr ""
   
  -#: ../wikilib.php:2267
  +#: ../wikilib.php:2344
   msgid "Invalid regular expression !"
   msgstr ""
   
  -#: ../wikilib.php:2291
  +#: ../wikilib.php:2368
   msgid "No match!"
   msgstr ""
   
  -#: ../wikilib.php:2294
  +#: ../wikilib.php:2371
   msgid "Infinite loop possible!"
   msgstr ""
   
  -#: ../wikilib.php:2412
  +#: ../wikilib.php:2489
   msgid "OpenID"
   msgstr ""
   
  -#: ../wikilib.php:2463 ../wikilib.php:2553
  +#: ../wikilib.php:2540 ../wikilib.php:2630
   msgid "Make profile"
   msgstr ""
   
  -#: ../wikilib.php:2465
  +#: ../wikilib.php:2542
   msgid "password again"
   msgstr ""
   
  -#: ../wikilib.php:2467 ../wikilib.php:2517
  +#: ../wikilib.php:2544 ../wikilib.php:2594
   msgid "Mail"
   msgstr ""
   
  -#: ../wikilib.php:2489
  +#: ../wikilib.php:2566
   msgid "New password"
   msgstr ""
   
  -#: ../wikilib.php:2494
  +#: ../wikilib.php:2571
   msgid "Nickname"
   msgstr ""
   
  -#: ../wikilib.php:2518
  +#: ../wikilib.php:2595
   msgid "Time Zone"
   msgstr ""
   
  -#: ../wikilib.php:2527
  +#: ../wikilib.php:2604
   msgid "logout"
   msgstr ""
   
  -#: ../wikilib.php:2905
  +#: ../wikilib.php:3005
   msgid "Show all"
   msgstr ""
   
  -#: ../wikilib.php:3043
  +#: ../wikilib.php:3143
   msgid "Contents"
   msgstr ""
   
  -#: ../wikilib.php:3164
  +#: ../wikilib.php:3264
   #, c-format
   msgid "Title search for \"%s\""
   msgstr ""
  
  
  


1282546867;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv16391\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315580] use get_csv() to parse alias_page correctly\n\n
wkpark      2010/08/23 16:01:09

  Modified:    .        wikilib.php
  Log:
  [#315580] use get_csv() to parse alias_page correctly
  
  Revision  Changes    Path
  1.328     +3 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.327
  retrieving revision 1.328
  diff -u -r1.327 -r1.328
  --- wikilib.php	22 Aug 2010 08:40:24 -0000	1.327
  +++ wikilib.php	23 Aug 2010 07:01:07 -0000	1.328
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.327 2010/08/22 08:40:24 wkpark Exp $
  +// $Id: wikilib.php,v 1.328 2010/08/23 07:01:07 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -308,9 +308,9 @@
       } else {
         if (($p = strpos($line, '<')) !== false) {
           list($val, $keys) = explode('<', $line, 2);
  -        $keys = explode(',', $keys);
  +        $keys = get_csv($keys);
         } else {
  -        $keys = explode(',', $line);
  +        $keys = get_csv($line);
           $val = array_shift($keys);
         }
   
  
  
  


1282554697;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv1831/plugin\n\nModified Files:\n	ISBN.php \nLog Message:\n[#315621] add 'i' modifier to the img regex\n\n
wkpark      2010/08/23 18:11:38

  Modified:    plugin   ISBN.php
  Log:
  [#315621] add 'i' modifier to the img regex
  
  Revision  Changes    Path
  1.14      +4 -4      moniwiki/plugin/ISBN.php
  
  Index: ISBN.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/ISBN.php,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- ISBN.php	27 Jul 2010 14:43:27 -0000	1.13
  +++ ISBN.php	23 Aug 2010 09:11:37 -0000	1.14
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a ISBN macro plugin for the MoniWiki
   //
  -// $Id: ISBN.php,v 1.13 2010/07/27 14:43:27 wkpark Exp $
  +// $Id: ISBN.php,v 1.14 2010/08/23 09:11:37 wkpark Exp $
   
   function macro_ISBN($formatter,$value="") {
     global $DBInfo;
  @@ -178,12 +178,12 @@
           # some sites such as the IMDB check the referer and
           # do not permit to show any of its images
           # the $isbn_img_download option is needed to show such images
  -        preg_match('/^(.*)\.(jpeg|jpg|gif|png)$/',$imglink,$m);
  -        if ($m[1] and $m[2]) {
  +        preg_match('/^(.*)\.(jpeg|jpg|gif|png)$/i',$imglink,$m);
  +        if (!empty($m[1]) and isset($m[2])) {
              $myimglink=md5($m[1]).'.'.$m[2];
           }
   
  -        if (!$m[2]) {
  +        if (isset($m[2])) {
              # skip XXX
           } else if (file_exists($DBInfo->upload_dir.'/isbn/'.$myimglink)) {
              $mlink=$formatter->macro_repl('attachment','isbn:'.$myimglink,1);
  
  
  


1282554923;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv4422\n\nModified Files:\n	wiki.php wikilib.php \nLog Message:\n[#315290] fixed notice warnings\n\n
1282554923;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv4422/plugin\n\nModified Files:\n	Attachment.php BlogCategories.php BlogChanges.php Keywords.php \n	PageHits.php RecentChanges.php Tour.php UrlMapping.php \n	Vote.php dot.php foaf.php rss.php trackback.php \nLog Message:\n[#315290] fixed notice warnings\n\n
1282554923;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin/processor\nIn directory kill.kldp.net:/tmp/cvs-serv4422/plugin/processor\n\nModified Files:\n	randomquote.php \nLog Message:\n[#315290] fixed notice warnings\n\n
wkpark      2010/08/23 18:15:25

  Modified:    .        wiki.php wikilib.php
               plugin   Attachment.php BlogCategories.php BlogChanges.php
                        Keywords.php PageHits.php RecentChanges.php
                        Tour.php UrlMapping.php Vote.php dot.php foaf.php
                        rss.php trackback.php
               plugin/processor randomquote.php
  Log:
  [#315290] fixed notice warnings
  
  Revision  Changes    Path
  1.575     +5 -5      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.574
  retrieving revision 1.575
  diff -u -r1.574 -r1.575
  --- wiki.php	22 Aug 2010 08:00:21 -0000	1.574
  +++ wiki.php	23 Aug 2010 09:15:23 -0000	1.575
  @@ -11,10 +11,10 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.574 2010/08/22 08:00:21 wkpark Exp $
  +// $Id: wiki.php,v 1.575 2010/08/23 09:15:23 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.574 $',1,-1);
  -$_release = '1.1.5-RC4';
  +$_revision = substr('$Revision: 1.575 $',1,-1);
  +$_release = '1.1.5-RC5';
   
   #ob_start("ob_gzhandler");
   
  @@ -1875,7 +1875,7 @@
       $this->interwiki_target=!empty($DBInfo->interwiki_target) ?
         ' target="'.$DBInfo->interwiki_target.'"':'';
       $this->filters=!empty($DBInfo->filters) ? $DBInfo->filters : null;
  -    $this->postfilters=$DBInfo->postfilters;
  +    $this->postfilters=!empty($DBInfo->postfilters) ? $DBInfo->postfilter : null;
       $this->use_rating=!empty($DBInfo->use_rating) ? $DBInfo->use_rating : 0;
       $this->use_etable=!empty($DBInfo->use_etable) ? 1 : 0;
       $this->use_metadata=!empty($DBInfo->use_metadata) ? $DBInfo->use_metadata : 0;
  @@ -2628,7 +2628,7 @@
       $page=$url;
       $url=$DBInfo->interwiki[$wiki];
   
  -    if ($page[0]=='"') # "extended wiki name"
  +    if (isset($page[0]) and $page[0]=='"') # "extended wiki name"
         $page=substr($page,1,-1);
   
       if ($page=='/') $page='';
  
  
  
  1.329     +8 -6      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.328
  retrieving revision 1.329
  diff -u -r1.328 -r1.329
  --- wikilib.php	23 Aug 2010 07:01:07 -0000	1.328
  +++ wikilib.php	23 Aug 2010 09:15:23 -0000	1.329
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.328 2010/08/23 07:01:07 wkpark Exp $
  +// $Id: wikilib.php,v 1.329 2010/08/23 09:15:23 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1225,6 +1225,7 @@
     $raw_body = str_replace(array("&","<"),array("&amp;","&lt;"),$raw_body);
   
     # get categories
  +  $select_category = '';
     if (!empty($DBInfo->use_category) and empty($options['nocategories'])) {
       $categories=array();
       $categories= $DBInfo->getLikePages($DBInfo->category_regex);
  @@ -2328,9 +2329,9 @@
     return join("",$selects);
   }
   
  +define('DEFAULT_QUOTE_PAGE','FortuneCookies');
   function macro_RandomQuote($formatter,$value="",$options=array()) {
     global $DBInfo;
  -  define('QUOTE_PAGE','FortuneCookies');
     #if ($formatter->preview==1) return '';
   
     $re='/^\s*\* (.*)$/';
  @@ -2350,10 +2351,10 @@
         $pagename=$arg;
     }
   
  -  if ($pagename and $DBInfo->hasPage($pagename))
  +  if (!empty($pagename) and $DBInfo->hasPage($pagename))
       $fortune=$pagename;
     else
  -    $fortune=QUOTE_PAGE;
  +    $fortune=DEFAULT_QUOTE_PAGE;
   
     if (!empty($options['body'])) {
       $raw=$options['body'];
  @@ -2375,12 +2376,13 @@
   
     $dumb=explode("\n",$quote);
     if (sizeof($dumb)>1) {
  -    $save=$formatter->preview;
  +    if (isset($formatter->preview)) $save = $formatter->preview;
       $formatter->preview=1;
       $options['nosisters']=1;
       ob_start();
       $formatter->send_page($quote,$options);
  -    $formatter->preview=$save;
  +    if (isset($save))
  +      $formatter->preview=$save;
       $out= ob_get_contents();
       ob_end_clean();
     } else {
  
  
  
  1.46      +3 -3      moniwiki/plugin/Attachment.php
  
  Index: Attachment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Attachment.php,v
  retrieving revision 1.45
  retrieving revision 1.46
  diff -u -r1.45 -r1.46
  --- Attachment.php	19 Jun 2010 07:10:51 -0000	1.45
  +++ Attachment.php	23 Aug 2010 09:15:23 -0000	1.46
  @@ -7,13 +7,13 @@
   // Name: Attachment
   // Description: Attachment Plugin
   // URL: MoniWiki:AttachmentPlugin
  -// Version: $Revision: 1.45 $
  +// Version: $Revision: 1.46 $
   // Depend: 1.1.3
   // License: GPL
   //
   // Usage: [[Attachment(filename)]]
   //
  -// $Id: Attachment.php,v 1.45 2010/06/19 07:10:51 wkpark Exp $
  +// $Id: Attachment.php,v 1.46 2010/08/23 09:15:23 wkpark Exp $
   
   function macro_Attachment($formatter,$value,$options=array()) {
     global $DBInfo;
  @@ -253,7 +253,7 @@
   
       if (empty($img_link) && preg_match("/\.(png|gif|jpeg|jpg|bmp)$/i",$upload_file)) {
         // thumbnail
  -      if (!empty($DBInfo->use_convert_thumbs) and $use_thumb) {
  +      if (!empty($DBInfo->use_convert_thumbs) and !empty($use_thumb)) {
           $thumb_width=$thumb['thumbwidth'] ? $thumb['thumbwidth']:150;
           if (!file_exists($dir."/thumbnails/".$_l_file)) {
             if (!file_exists($dir."/thumbnails")) @mkdir($dir."/thumbnails",0777);
  
  
  
  1.9       +3 -2      moniwiki/plugin/BlogCategories.php
  
  Index: BlogCategories.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogCategories.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- BlogCategories.php	13 Sep 2005 09:19:45 -0000	1.8
  +++ BlogCategories.php	23 Aug 2010 09:15:23 -0000	1.9
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogCategory macro plugin for the MoniWiki
   //
  -// $Id: BlogCategories.php,v 1.8 2005/09/13 09:19:45 wkpark Exp $
  +// $Id: BlogCategories.php,v 1.9 2010/08/23 09:15:23 wkpark Exp $
   
   function macro_BlogCategories($formatter,$value='') {
     global $DBInfo;
  @@ -25,6 +25,7 @@
     $odep=-1;
     $dep=0;
     $out='';
  +  $rss='';
     foreach ($temp as $line) {
       #$line=str_replace('/','_2f',$line);
       if (preg_match('/^(\s{1'.$depth.'})\* ([^:]+)(?=\s|:|$)/',$line,$match)) {
  @@ -32,7 +33,7 @@
         $category=str_replace(array('[',']','"','\''),'',$text);
         $category=_rawurlencode($category);
         $lnk=str_replace('CATEGORY',$category,$link);
  -      if (!$no_rss)
  +      if (empty($no_rss))
           $rss='&nbsp;<a href="'.str_replace('blogchanges','blogrss',$lnk).'">'.
             '<img src="'.$DBInfo->imgs_dir.'/plugin/tiny-xml.png'.'" border="0" alt="xml" /></a>';
         $dep=strlen($match[1]);
  
  
  
  1.39      +16 -6     moniwiki/plugin/BlogChanges.php
  
  Index: BlogChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogChanges.php,v
  retrieving revision 1.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- BlogChanges.php	22 Aug 2010 08:00:21 -0000	1.38
  +++ BlogChanges.php	23 Aug 2010 09:15:23 -0000	1.39
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogChanges action plugin for the MoniWiki
   //
  -// $Id: BlogChanges.php,v 1.38 2010/08/22 08:00:21 wkpark Exp $
  +// $Id: BlogChanges.php,v 1.39 2010/08/23 09:15:23 wkpark Exp $
   
   class Blog_cache {
     function get_all_blogs() {
  @@ -55,10 +55,10 @@
       foreach ($temp as $line) {
         if (preg_match('/^ \* ([^:]+)(?=\s|:|$)/',$line,$match)) {
           $category=rtrim($match[1]);
  -        if (!$categories[$category])
  +        if (!isset($categories[$category]))
             // include category page itself.
             $categories[$category]=array($category);
  -      } else if ($category
  +      } else if (!empty($category)
           and preg_match('/^\s{2,}\* ([^:]+)(?=\s|:|$)/',$line,$match)) {
           // sub category (or blog pages list)
           $subcategory=rtrim($match[1]);
  @@ -257,7 +257,7 @@
       }
       if ($DBInfo->blog_category) {
         $categories=Blog_cache::get_categories();
  -      if ($categories[$options['category']])
  +      if (isset($categories[$options['category']]))
           $category_pages=$categories[$options['category']];
       }
       if (!$category_pages) {
  @@ -312,13 +312,15 @@
   
           $trackbacks=explode("\n",$trackback_raw);
           foreach ($trackbacks as $trackback) {
  +          if (($p = strpos($trackback, "\t")) !== false) {
             list($dummy,$entry,$extra)=explode("\t",$trackback);
             if ($entry) {
  -            if($trackback_list[$blog][$entry])
  +            if(isset($trackback_list[$blog][$entry]))
                 $trackback_list[$blog][$entry]++;
               else
               $trackback_list[$blog]=array($entry=>1);
             }
  +          }
           }
         }
       }
  @@ -378,7 +380,14 @@
   
     $save_page = $formatter->page;
     foreach ($logs as $log) {
  -    list($page, $user,$date,$title,$summary,$commentcount)= $log;
  +    #list($page, $user,$date,$title,$summary,$commentcount)= $log;
  +    $page = $log[0];
  +    $user = $log[1];
  +    $date = $log[2];
  +    $title = $log[3];
  +    $summary = !empty($log[4]) ? $log[4] : '';
  +    $commentcount = !empty($log[5]) ? $log[5] : '';
  +
       $tag=md5($user.' '.$date.' '.$title);
       $datetag='';
   
  @@ -450,6 +459,7 @@
     $url=qualifiedUrl($formatter->link_url($DBInfo->frontpage));
   
     # make pnut
  +  $action = '';
     if (!empty($options['action'])) $action='action=blogchanges&amp;';
     if (!empty($options['category'])) $action.='category='.$options['category'].'&amp;';
     if (!empty($options['mode'])) $action.='mode='.$options['mode'].'&amp;';
  
  
  
  1.36      +11 -6     moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- Keywords.php	29 Jul 2010 15:51:12 -0000	1.35
  +++ Keywords.php	23 Aug 2010 09:15:23 -0000	1.36
  @@ -8,19 +8,19 @@
   // Name: a Keywords Plugin
   // Description: a Keywords plugin to generate keywords of a page
   // URL: MoniWiki:KeywordsPlugin
  -// Version: $Revision: 1.35 $
  +// Version: $Revision: 1.36 $
   // License: GPL
   //
   // Usage: [[Keywords(options)]]
   //
  -// $Id: Keywords.php,v 1.35 2010/07/29 15:51:12 wkpark Exp $
  +// $Id: Keywords.php,v 1.36 2010/08/23 09:15:23 wkpark Exp $
   
   define('LOCAL_KEYWORDS','LocalKeywords');
  +define('MAX_FONT_SZ',24);
  +define('MIN_FONT_SZ',10);
   
   function macro_Keywords($formatter,$value,$options=array()) {
       global $DBInfo;
  -define('MAX_FONT_SZ',24);
  -define('MIN_FONT_SZ',10);
       $supported_lang=array('ko');
   
       $limit=isset($options['limit']) ? $options['limit']:40;
  @@ -303,7 +303,10 @@
       }
       // make criteria list
   
  -    if ($use_sty):
  +    $fz = 0;
  +    $min = 0;
  +    $sty = array();
  +    if (!empty($use_sty)):
       $fact=array();
       $weight=$max; // $ncount
       #print 'max='.$max.' ratio='.$weight/$ncount.':';
  @@ -317,7 +320,6 @@
       $min=$limit ? max(1,end($fact))-1:0; // XXX
       // make font-size style
       $fz=max(sizeof($fact),2);
  -    $sty=array();
       $fsh=(MAX_FONT_SZ-MIN_FONT_SZ)/($fz-1);
       $fs=MAX_FONT_SZ; // max font-size:24px;
       for ($i=0;$i<$fz;$i++) {
  @@ -400,6 +402,8 @@
       $out.='<ul>';
       $checkbox = '';
       foreach ($words as $key=>$val) {
  +        $style = '';
  +        if ($fz > 0) {
           $style=$sty[$fz-1];
           for ($i=0;$i<$fz;$i++) {
               if ($val>$fact[$i]) {
  @@ -407,6 +411,7 @@
                   break;
               }
           }
  +        }
           if ($val > $min) {
               $checked='';
               if ($val >= $max) {$checked='checked="checked"'; $ok=1;}
  
  
  
  1.3       +3 -2      moniwiki/plugin/PageHits.php
  
  Index: PageHits.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/PageHits.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- PageHits.php	2 Jan 2009 16:22:31 -0000	1.2
  +++ PageHits.php	23 Aug 2010 09:15:23 -0000	1.3
  @@ -4,7 +4,7 @@
   // a PageHits macro plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: PageHits.php,v 1.2 2009/01/02 16:22:31 wkpark Exp $
  +// $Id: PageHits.php,v 1.3 2010/08/23 09:15:23 wkpark Exp $
   
   function macro_PageHits($formatter="",$value) {
     global $DBInfo;
  @@ -18,8 +18,9 @@
       $hits[$page]=$DBInfo->counter->pageCounter($page);
     }
   
  -  if ($value=='reverse' or $value[0]=='r') asort($hits);
  +  if (!empty($value) and ($value=='reverse' or $value[0]=='r')) asort($hits);
     else arsort($hits);
  +  $out = '';
     while(list($name,$hit)=each($hits)) {
       if (!$hit) $hit=0;
       $name=$formatter->link_tag(_rawurlencode($name),"",htmlspecialchars($name));
  
  
  
  1.48      +5 -5      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.47
  retrieving revision 1.48
  diff -u -r1.47 -r1.48
  --- RecentChanges.php	12 Aug 2010 12:46:09 -0000	1.47
  +++ RecentChanges.php	23 Aug 2010 09:15:23 -0000	1.48
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.47 2010/08/12 12:46:09 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.48 2010/08/23 09:15:23 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     global $DBInfo;
  @@ -49,13 +49,13 @@
   	return $ago;
   }
   
  -function macro_RecentChanges($formatter,$value='',$options='') {
  -  global $DBInfo;
  -
   define('RC_MAX_DAYS',30);
   define('RC_MAX_ITEMS',200);
   define('RC_DEFAULT_DAYS',7);
   
  +function macro_RecentChanges($formatter,$value='',$options='') {
  +  global $DBInfo;
  +
     $checknew=1;
   
     $template_bra="";
  @@ -373,7 +373,7 @@
       $count=""; $extra="";
       if ($editcount[$page_key] > 1)
         $count=sprintf(_("%s changes"), " <span class='num'>".$editcount[$page_key]."</span>");
  -    if ($comment && $log)
  +    if (!empty($comment) && !empty($log))
         $extra="&nbsp; &nbsp; &nbsp; <small name='word-break'>$log</small>";
   
       $alt = ($ii % 2 == 0) ? ' class="alt"':'';
  
  
  
  1.11      +20 -16    moniwiki/plugin/Tour.php
  
  Index: Tour.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Tour.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- Tour.php	15 Jul 2006 01:12:44 -0000	1.10
  +++ Tour.php	23 Aug 2010 09:15:23 -0000	1.11
  @@ -1,11 +1,11 @@
   <?php
  -// Copyright 2005 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2005-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a Tour plugin for the MoniWiki
   //
   // Usage: [[Tour]]
   //
  -// $Id: Tour.php,v 1.10 2006/07/15 01:12:44 wkpark Exp $
  +// $Id: Tour.php,v 1.11 2010/08/23 09:15:23 wkpark Exp $
   
   if (!function_exists('do_dot'))
       if ($pn=getPlugin('dot')) include_once("plugin/$pn.php");
  @@ -19,15 +19,16 @@
       else $value=$options['page'];
       print macro_Tour($formatter,$value,$options);
       //$args['editable']=1;
  +    $args = false;
       $formatter->send_footer($args,$options);
   }
   
  +define('TOUR_LEAFCOUNT',4);
  +define('TOUR_DEPTH',3);
  +
   function macro_Tour($formatter,$value,$options=array()) {
       global $DBInfo;
   
  -define(TOUR_LEAFCOUNT,4);
  -define(TOUR_DEPTH,3);
  -
       $args=explode(',',$value);
   
       $value='';
  @@ -43,8 +44,8 @@
           }
       }
       $query='';
  -    if ($options['arena'] or $arena) {
  -        $options['arena']=$arena ? $arena:$options['arena'];
  +    if (!empty($options['arena']) or $arena) {
  +        $options['arena']=!empty($arena) ? $arena:$options['arena'];
           $query='&amp;arena='.$options['arena'];
           $arena=$options['arena'];
       }
  @@ -53,6 +54,7 @@
       if (!$value) $value=$formatter->page->name;
       #else if ($value != $formatter->page->name) XXX;
   
  +    $query2 = '';
       if ($arena == 'backlinks') {
           $head2=_("BackLinks");
           $link=$formatter->link_tag(htmlspecialchars($value));
  @@ -73,9 +75,9 @@
           $head=sprintf(_("%s Tour %s"),$head2,$head);
       $head='<h2>'.$head.'</h2>';
   
  -    if ($options['w'] and $options['w'] < 10) $count=$options['w'];
  +    if (!empty($options['w']) and $options['w'] < 10) $count=$options['w'];
       else $count=TOUR_LEAFCOUNT;
  -    if ($options['d'] and $options['d'] < 7) $depth=$options['d'];
  +    if (!empty($options['d']) and $options['d'] < 7) $depth=$options['d'];
       else $depth=TOUR_DEPTH;
   
       $color=array();
  @@ -92,7 +94,7 @@
       $id=0;
       $outs=array();
       while (list($leafname,$leaf) = @each ($node)) {
  -        if (!$leafs[$leafname]) {
  +        if (empty($leafs[$leafname])) {
               $urlname=_rawurlencode($leafname);
               $leafs[$leafname]=1;
               $url[$leafname]=$urlname;
  @@ -100,21 +102,22 @@
           $selected=array_intersect($node[$leafname],$allnode);
           asort($selected);
           foreach ($selected as $leaf) {
  -            if (!$leafs[$leaf]) {
  +            if (empty($leafs[$leaf])) {
                   $urlname=_rawurlencode($leaf);
                   $url[$leaf]=$urlname;
                   $id=$leafs[$leaf]=$leafs[$leafname]+1;
  -                if (!$outs[$id]) $outs[$id]=array();
  +                if (!empty($outs[$id])) $outs[$id]=array();
                   $outs[$id][]= $leaf;
               }
           }
       }
  -    unset($out[0]);
  +    if (isset($out[0]))
  +        unset($out[0]);
       if ($DBInfo->hasPage($url[$value])) {
           $pg=$url[$value];
           $extra='';
       } else {
  -        $pg=$options['page'];
  +        $pg=$formatter->page->name;
           $extra='&amp;value='.$url[$value];
       }
       $wide= $formatter->link_tag($pg,
  @@ -123,12 +126,13 @@
          "?action=tour$query$extra&amp;w=$count&amp;d=".($depth+1),_("deeper"));
       $link='<h3>'.sprintf(_("More %s or more %s"),$wide,$deep).'</h3>';
   
  +    $pages = '';
       foreach ($allnode as $node) {
           if ($DBInfo->hasPage($url[$node])) {
               $pg=$url[$node];
               $extra='';
           } else {
  -            $pg=$options['page'];
  +            $pg=$formatter->page->name;
               $extra='&amp;value='.$url[$node];
           }
           $pages.='<li>'.$formatter->link_tag($pg,$query2.$extra,
  @@ -151,7 +155,7 @@
                   $pg=$url[$leaf];
                   $extra='';
               } else {
  -                $pg=$options['page'];
  +                $pg=$formatter->page->name;
                   $extra='&amp;value='.$url[$leaf];
               }
               $temp.= ' <li>'.$formatter->link_tag($pg,
  
  
  
  1.5       +2 -1      moniwiki/plugin/UrlMapping.php
  
  Index: UrlMapping.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UrlMapping.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- UrlMapping.php	18 Jul 2010 14:52:23 -0000	1.4
  +++ UrlMapping.php	23 Aug 2010 09:15:23 -0000	1.5
  @@ -5,13 +5,14 @@
   //
   // Usage: [[UrlMapping]]
   //
  -// $Id: UrlMapping.php,v 1.4 2010/07/18 14:52:23 wkpark Exp $
  +// $Id: UrlMapping.php,v 1.5 2010/08/23 09:15:23 wkpark Exp $
   
   function macro_UrlMapping($formatter,$value,$options=array()) {
       global $DBInfo;
   
       #$options['load']=1;
   
  +    $mapping_rule = '';
       while (!isset($DBInfo->url_mapping_rule) or $options['init']) { #or $options['load']) {
           $mappings=array();
   
  
  
  
  1.10      +3 -1      moniwiki/plugin/Vote.php
  
  Index: Vote.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Vote.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- Vote.php	19 Apr 2010 11:26:46 -0000	1.9
  +++ Vote.php	23 Aug 2010 09:15:23 -0000	1.10
  @@ -6,7 +6,7 @@
   //
   // Usage: [[Vote(Hello 10, World 20,Wow 1)]]
   //
  -// $Id: Vote.php,v 1.9 2010/04/19 11:26:46 wkpark Exp $
  +// $Id: Vote.php,v 1.10 2010/08/23 09:15:23 wkpark Exp $
   
   function macro_Vote($formatter,$value) {
     global $DBInfo;
  @@ -64,6 +64,8 @@
     global $DBInfo;
   
     if ($options['id'] == 'Anonymous') {
  +    if (!isset($options['msg']))
  +      $options['msg'] = '';
       $options['msg'].="\n"._("Please Login or make your ID on this Wiki ;)");
       do_invalid($formatter,$options);
       return;
  
  
  
  1.14      +11 -10    moniwiki/plugin/dot.php
  
  Index: dot.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/dot.php,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- dot.php	29 Jul 2006 15:01:14 -0000	1.13
  +++ dot.php	23 Aug 2010 09:15:23 -0000	1.14
  @@ -1,14 +1,14 @@
   <?php
  -// Copyright 2003-2006 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // dot action plugin for the MoniWiki
   //
  -// $Id: dot.php,v 1.13 2006/07/29 15:01:14 wkpark Exp $
  +// $Id: dot.php,v 1.14 2010/08/23 09:15:23 wkpark Exp $
   
  -define(DEPTH,3);
  -define(LEAFCOUNT,2);
  -define(FONTSIZE,8);
  -define(FONTNAME,'WEBDOTFONT');
  +define('DEPTH',3);
  +define('LEAFCOUNT',2);
  +define('FONTSIZE',8);
  +define('FONTNAME','WEBDOTFONT');
   
   class LinkTree {
     var $cache=null;
  @@ -22,10 +22,11 @@
       $links=unserialize($this->cache->fetch($pagename));
       #print_r($links);
       if (!is_array($links)) $links=array();
  +    $nodelink = array();
       foreach ($links as $page) {
  -      if (!$color[$page]) $color[$page]=$depth;
  +      if (empty($color[$page])) $color[$page]=$depth;
         if ($page) {
  -        if (!$node[$page]) {
  +        if (!empty($node[$page])) {
             $leafs=$this->cache->fetch($page);
             if ($leafs) {
               $leafs=unserialize($leafs);
  @@ -45,11 +46,11 @@
   
     function makeTree($pagename,&$node,&$color,$depth=DEPTH,$count=LEAFCOUNT) {
       if ($depth > 0) {
  -      if (!$color[$pagename]) $color[$pagename]=$depth;
  +      if (!isset($color[$pagename])) $color[$pagename]=$depth;
         #print $depth."\n";
         $depth--;
         $this->getLeafs($pagename,$node,$color,$depth,$count);
  -      if ($node[$pagename]) {
  +      if (!empty($node[$pagename])) {
           # select 25% of links
           $slice= max((int) (sizeof($node[$pagename]) * 0.25),$count);
           #$slice= ($size > $count) ? $size: $count;
  
  
  
  1.5       +5 -5      moniwiki/plugin/foaf.php
  
  Index: foaf.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/foaf.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- foaf.php	21 Oct 2004 08:27:01 -0000	1.4
  +++ foaf.php	23 Aug 2010 09:15:23 -0000	1.5
  @@ -3,7 +3,7 @@
   // Public Domain ?
   // and modified for the FOAF.
   // See http://moniwiki.sourceforge.net/wiki.php/FoafOnMoniWiki
  -// $Id: foaf.php,v 1.4 2004/10/21 08:27:01 wkpark Exp $
  +// $Id: foaf.php,v 1.5 2010/08/23 09:15:23 wkpark Exp $
   //
   class FoafParser {
   
  @@ -18,7 +18,7 @@
      }
   
      function startElement($parser, $tagName, $attrs) {
  -       if ($this->return) return;
  +       if (!empty($this->return)) return;
          if ($this->insideitem) {
              $this->tag = $tagName;
          } elseif ($tagName == "FOAF:PERSON") {
  @@ -67,7 +67,7 @@
                  break;
              }
          }
  -       if ($this->project) {
  +       if (!empty($this->project)) {
              switch ($this->tag) {
                  case "DC:TITLE":
                  $this->title = $data;
  @@ -96,14 +96,14 @@
       if (in_array ("homepage", $args)) $options['homepage']=1;
       if (in_array ("comment", $args)) $options['comment']=1;
     }
  -
  +  $info = array(); // XXX
     $rss_parser = new FoafParser($info);
     xml_set_object($xml_parser,$rss_parser);
     xml_set_element_handler($xml_parser, "startElement", "endElement");
     xml_set_character_data_handler($xml_parser, "characterData");
   
     $cache= new Cache_text("foaf");
  -  if ($_GET['update'] or !$cache->exists($key)) {
  +  if (!empty($_GET['update']) or !$cache->exists($key)) {
       $fp = @fopen("$value","r");
       if (!$fp)
         return ("[[FOAF(ERR: not a valid URL! $value)]]");
  
  
  
  1.7       +5 -4      moniwiki/plugin/rss.php
  
  Index: rss.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rss.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- rss.php	10 Dec 2004 13:32:44 -0000	1.6
  +++ rss.php	23 Aug 2010 09:15:23 -0000	1.7
  @@ -1,7 +1,7 @@
   <?php
   // from http://www.sitepoint.com/examples/phpxml/sitepointcover-oo.php.txt
   // Public Domain ?
  -// $Id: rss.php,v 1.6 2004/12/10 13:32:44 wkpark Exp $
  +// $Id: rss.php,v 1.7 2010/08/23 09:15:23 wkpark Exp $
   class WikiRSSParser {
   
      var $insideitem = false;
  @@ -20,7 +20,7 @@
          } elseif ($tagName == "ITEM") {
              $this->insideitem = true;
          } elseif ($tagName == "IMAGE") {
  -           if ($attrs['RDF:RESOURCE'])
  +           if (!empty($attrs['RDF:RESOURCE']))
              print "<img src=\"".$attrs['RDF:RESOURCE']."\"><br />";
          }
      }
  @@ -130,9 +130,10 @@
     xml_parser_free($xml_parser);
   
     #  if (strtolower(str_replace("-","",$options['oe'])) == 'euckr')
  -  if (function_exists('iconv') and strtoupper($DBInfo->charset) != $charset)
  +  if (function_exists('iconv') and strtoupper($DBInfo->charset) != $charset) {
       $new=iconv($charset,$DBInfo->charset,$out);
  -  if ($new) return $new;
  +    if ($new !== false) return $new;
  +  }
   
     return $out;
   }
  
  
  
  1.9       +11 -5     moniwiki/plugin/trackback.php
  
  Index: trackback.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/trackback.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- trackback.php	14 Jan 2005 08:26:26 -0000	1.8
  +++ trackback.php	23 Aug 2010 09:15:23 -0000	1.9
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a TrackBack receive action plugin for the MoniWiki
   //
  -// $Id: trackback.php,v 1.8 2005/01/14 08:26:26 wkpark Exp $
  +// $Id: trackback.php,v 1.9 2010/08/23 09:15:23 wkpark Exp $
   
   function send_error($error=0,$error_message='') {
     if ($error) {
  @@ -42,7 +42,8 @@
       }
     }
   
  -  if (!$options['url']) {
  +  if (empty($options['url'])) {
  +    $anchor = '';
       if ($options['value']) $anchor='/'.$options['value'];
   
       $formatter->send_header("",$options);
  @@ -84,7 +85,7 @@
     if (!$DBInfo->use_trackback)
       send_error(1,"TrackBack is not enabled"); 
   
  -  if (!$options['title'] or !$options['excerpt'] or !$options['blog_name'] or !$options['url']) send_error(1,"Invalid TrackBack Ping");
  +  if (empty($options['title']) or empty($options['excerpt']) or empty($options['blog_name']) or empty($options['url'])) send_error(1,"Invalid TrackBack Ping");
     # receivie Trackback ping
   
     # strip \n
  @@ -167,6 +168,7 @@
     foreach ($lines as $line) $logs[]=explode("\t",$line,8);
     usort($logs,'TrackBackCompare');
   
  +  $out = '';
     foreach ($logs as $log) {
       if ($limit <= 0) break;
       list($page, $dum, $entry,$url,$date,$site,$title,$dum2)= $log;
  @@ -178,8 +180,12 @@
       $date[10]=' ';
       $time=strtotime($date." GMT");
       $date= date($date_fmt,$time);
  -    list($wiki,$user)=explode(':',$site);
  -    if ($user) $site=$user;
  +    $tmp = explode(':',$site);
  +    $wiki = $tmp[0];
  +    if (!empty($tmp[1])) {
  +      $user = $tmp[1];
  +      $site = $tmp[1];
  +    }
   
       #$out.=$page."<a href='$url'>$title</a> @ $date from $site<br />\n";
       #$out.="<a href='$url'>$title</a> @ $date from $site<br />\n";
  
  
  
  1.3       +4 -3      moniwiki/plugin/processor/randomquote.php
  
  Index: randomquote.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/randomquote.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- randomquote.php	5 Sep 2005 17:30:26 -0000	1.2
  +++ randomquote.php	23 Aug 2010 09:15:23 -0000	1.3
  @@ -1,18 +1,19 @@
   <?php
  -// Copyright 2003-2005 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // sample plugin for the MoniWiki
   //
   // Usage: {{{#!hello Name
   // Hello World
   // }}}
  -// $Id: randomquote.php,v 1.2 2005/09/05 17:30:26 wkpark Exp $
  +// $Id: randomquote.php,v 1.3 2010/08/23 09:15:23 wkpark Exp $
   
   function processor_randomquote($formatter,$value="",$options=array()) {
       if ($value[0]=='#' and $value[1]=='!')
           list($line,$value)=explode("\n",$value,2);
   
  -    if ($line)
  +    $args = '';
  +    if (!empty($line))
           list($tag,$args)=explode(' ',$line,2);
   
       return $formatter->macro_repl('RandomQuote',$args,array('body'=>$value));
  
  
  


1282555155;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv4701/plugin\n\nModified Files:\n	BlogChanges.php \nLog Message:\nwrap some elements to style with css\n\n
wkpark      2010/08/23 18:19:15

  Modified:    plugin   BlogChanges.php
  Log:
  wrap some elements to style with css
  
  Revision  Changes    Path
  1.40      +3 -3      moniwiki/plugin/BlogChanges.php
  
  Index: BlogChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BlogChanges.php,v
  retrieving revision 1.39
  retrieving revision 1.40
  diff -u -r1.39 -r1.40
  --- BlogChanges.php	23 Aug 2010 09:15:23 -0000	1.39
  +++ BlogChanges.php	23 Aug 2010 09:19:15 -0000	1.40
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a BlogChanges action plugin for the MoniWiki
   //
  -// $Id: BlogChanges.php,v 1.39 2010/08/23 09:15:23 wkpark Exp $
  +// $Id: BlogChanges.php,v 1.40 2010/08/23 09:19:15 wkpark Exp $
   
   class Blog_cache {
     function get_all_blogs() {
  @@ -464,12 +464,12 @@
     if (!empty($options['category'])) $action.='category='.$options['category'].'&amp;';
     if (!empty($options['mode'])) $action.='mode='.$options['mode'].'&amp;';
   
  -  $prev=$formatter->link_to('?'.$action.'date='.$prev_date,'&laquo; '.
  +  $prev=$formatter->link_to('?'.$action.'date='.$prev_date,"<span class='bullet'>&laquo;</span> ".
       _("Previous"));
     $next = '';
     if (!empty($next_date))
       $next=" | ".$formatter->link_to('?'.$action.'date='.$next_date,
  -      _("Next").' &raquo;');
  +      _("Next")." <span class='bullet'>&raquo;</span>");
     return $bra.$items.$cat.'<div class="blog-action">'.$prev.$next.'</div>';
   }
   // vim:et:sts=2:
  
  
  


1282555234;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv4765/plugin\n\nModified Files:\n	Blog.php rawblog.php \nLog Message:\n[#315290] fixed notice warnings\n\n
1282555234;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin/processor\nIn directory kill.kldp.net:/tmp/cvs-serv4765/plugin/processor\n\nModified Files:\n	blog.php \nLog Message:\n[#315290] fixed notice warnings\n\n
wkpark      2010/08/23 18:20:35

  Modified:    plugin   Blog.php rawblog.php
               plugin/processor blog.php
  Log:
  [#315290] fixed notice warnings
  
  Revision  Changes    Path
  1.38      +9 -4      moniwiki/plugin/Blog.php
  
  Index: Blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Blog.php,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- Blog.php	22 Aug 2010 08:00:21 -0000	1.37
  +++ Blog.php	23 Aug 2010 09:20:34 -0000	1.38
  @@ -5,7 +5,7 @@
   //
   // Usage: ?action=Blog
   //
  -// $Id: Blog.php,v 1.37 2010/08/22 08:00:21 wkpark Exp $
  +// $Id: Blog.php,v 1.38 2010/08/23 09:20:34 wkpark Exp $
   
   function updateBlogList($formatter) {
     global $DBInfo;
  @@ -77,6 +77,8 @@
     $rows=(!empty($options['rows']) and $options['rows'] > 5) ? $options['rows']: 8;
     $cols=(!empty($options['cols']) and $options['cols'] > 60) ? $options['cols']: $cols;
   
  +  $name = !empty($options['name']) ? $options['name'] : '';
  +
     $url=$formatter->link_url($formatter->page->urlname);
   
     if (!empty($formatter->refresh) or !empty($options['button_refresh'])) {
  @@ -250,6 +252,7 @@
         print $formatter->processor_repl('blog',$quote,$options);
         #print $formatter->send_page($quote,$options);
       }
  +    $extra = '';
       if ($options['id'] != 'Anonymous')
         $extra='<div style="text-align:right">'.'
           <input type="submit" name="button_refresh" value="Refresh" /></div>';
  @@ -260,7 +263,7 @@
       print "<form method='post' action='$url'>\n";
       $myinput='';
       if ($options['id'] == 'Anonymous')
  -      $myinput.='<b>'._("Name")."</b>: <input name='name' size='15' maxlength='15' value='$options[name]' />\n";
  +      $myinput.='<b>'._("Name")."</b>: <input name='name' size='15' maxlength='15' value='$name' />\n";
       if (empty($options['value']))
         $myinput.='<b>'._("Title")."</b>: <input name='title' value='$options[title]' size='70' maxlength='70' style='width:300px' /><br />\n";
       else
  @@ -318,7 +321,7 @@
     return;
   }
   
  -function macro_Blog($formatter,$value) {
  +function macro_Blog($formatter, $value, $options = array()) {
     global $DBInfo;
     $COLS_MSIE = 80;
     $COLS_OTHER = 85;
  @@ -330,6 +333,8 @@
     $url=$formatter->link_url($formatter->page->urlname);
     $datestamp= $formatter->page->mtime();
   
  +  $name = !empty($options['name']) ? $options['name'] : '';
  +
     if (empty($options['id']))
       $options['id']=$DBInfo->user->id;
   
  @@ -340,7 +345,7 @@
     $form = '<div id="editor_area">';
     $form.= "<form method='post' action='$url'>\n";
     if ($options['id'] == 'Anonymous')
  -    $form.='<b>'._("Name")."</b>: <input name='name' size='15' maxlength='15' value='$options[name]' />\n";
  +    $form.='<b>'._("Name")."</b>: <input name='name' size='15' maxlength='15' value='$name' />\n";
     $form.= '<b>'._("Title")."</b>: <input name='title' size='70' maxlength='70' style='width:200' /><br />\n";
     $form.= <<<FORM
   <textarea class="wiki" id="content" wrap="virtual" name="savetext"
  
  
  
  1.3       +8 -5      moniwiki/plugin/rawblog.php
  
  Index: rawblog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rawblog.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- rawblog.php	5 Oct 2007 14:38:41 -0000	1.2
  +++ rawblog.php	23 Aug 2010 09:20:34 -0000	1.3
  @@ -8,12 +8,12 @@
   // Name: Raw blog action plugin
   // Description: Raw blog action Plugin to extract a blog entry from a Blog page.
   // URL: MoniWiki:RawBlogPlugin
  -// Version: $Revision: 1.2 $
  +// Version: $Revision: 1.3 $
   // License: GPL
   //
   // Usage: ?action=rawblog
   //
  -// $Id: rawblog.php,v 1.2 2007/10/05 14:38:41 wkpark Exp $
  +// $Id: rawblog.php,v 1.3 2010/08/23 09:20:34 wkpark Exp $
   
   function do_rawblog($formatter,$options) {
     global $DBInfo;
  @@ -22,13 +22,16 @@
     $COLS_OTHER = 85;
     $cols = preg_match('/MSIE/', $HTTP_USER_AGENT) ? $COLS_MSIE : $COLS_OTHER;
   
  -  $rows=$options['rows'] > 5 ? $options['rows']: 8;
  -  $cols=$options['cols'] > 60 ? $options['cols']: $cols;
  +  $rows=(!empty($options['rows']) and $options['rows'] > 5) ? $options['rows']: 8;
  +  $cols=(!empty($options['cols']) and $options['cols'] > 60) ? $options['cols']: $cols;
   
     $url=$formatter->link_url($formatter->page->urlname);
     $formatter->send_header("",$options);
   
  +  $quote = '';
     { #
  +    $lines = array();
  +    $title = '';
       if ($options['value']) {
         $raw_body=$formatter->page->_get_raw_body();
         $lines=explode("\n",$raw_body);
  @@ -59,7 +62,7 @@
           $formatter->send_footer("",$options);
           return;
         }
  -      if (!$title) $title=$options['page'];
  +      if (!isset($title[0])) $title=$options['page'];
         $formatter->send_title(sprintf(_("Delete Blog entry \"%s\""),$title),"",$options);
       }
       $options['noaction']=1;
  
  
  
  1.29      +3 -2      moniwiki/plugin/processor/blog.php
  
  Index: blog.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/blog.php,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- blog.php	22 Aug 2010 08:00:21 -0000	1.28
  +++ blog.php	23 Aug 2010 09:20:34 -0000	1.29
  @@ -7,7 +7,7 @@
   // Hello World
   // }}}
   // this processor is used internally by the Blog action
  -// $Id: blog.php,v 1.28 2010/08/22 08:00:21 wkpark Exp $
  +// $Id: blog.php,v 1.29 2010/08/23 09:20:34 wkpark Exp $
   
   function processor_blog($formatter,$value="",$options) {
     static $date_anchor='';
  @@ -17,6 +17,7 @@
     if ($value[0]=='#' and $value[1]=='!')
       list($line,$value)=explode("\n",$value,2);
   
  +  $datetag = '';
     if ($date_anchor=='' and $DBInfo->use_trackback) {
       #read trackbacks and set entry counter
       $cache= new Cache_text('trackback');
  @@ -82,7 +83,7 @@
       if (!empty($comments)) {
         $count=sizeof(explode("----\n",$comments));
   
  -      if ($options['noaction'] or $DBInfo->blog_comments) {
  +      if (!empty($options['noaction']) or !empty($DBInfo->blog_comments)) {
           $comments=preg_replace("/----\n/","[[HTML(</div></div><div class='separator'><hr /></div><div class='blog-comment'><div>)]]",$comments);
         } else {
           $comments='';
  
  
  


1282555361;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv4933\n\nModified Files:\n	wiki.php \nLog Message:\nshow 'refresh' action correctly\n\n
wkpark      2010/08/23 18:22:42

  Modified:    .        wiki.php
  Log:
  show 'refresh' action correctly
  
  Revision  Changes    Path
  1.576     +5 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.575
  retrieving revision 1.576
  diff -u -r1.575 -r1.576
  --- wiki.php	23 Aug 2010 09:15:23 -0000	1.575
  +++ wiki.php	23 Aug 2010 09:22:41 -0000	1.576
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.575 2010/08/23 09:15:23 wkpark Exp $
  +// $Id: wiki.php,v 1.576 2010/08/23 09:22:41 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.575 $',1,-1);
  +$_revision = substr('$Revision: 1.576 $',1,-1);
   $_release = '1.1.5-RC5';
   
   #ob_start("ob_gzhandler");
  @@ -4723,10 +4723,11 @@
           $menu[]= $this->link_to("?action=edit",_("EditText")," rel='nofollow' accesskey='x'");
         else
           $menu[]= _("NotEditable");
  -      if (!empty($args['refresh']) and $args['refresh'] ==1)
  -        $menu[]= $this->link_to("?refresh=1",_("Refresh")," rel='nofollow' accesskey='n'");
       } else
         $menu[]= $this->link_to('?action=show',_("ShowPage"));
  +
  +    if (!empty($args['refresh']) and $args['refresh'] ==1)
  +      $menu[]= $this->link_to("?refresh=1",_("Refresh")," rel='nofollow' accesskey='n'");
       $menu[]=$this->link_tag("FindPage","",_("FindPage"));
   
       if (empty($args['noaction'])) {
  
  
  


1282576450;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv21676/plugin\n\nModified Files:\n	Keywords.php MathChooser.php Navigation.php PluginInfo.php \n	Rating.php SWFUpload.php SlideShow.php UWL.php UploadFile.php \n	VisualTour.php admin.php chmod.php dot.php rcsimport.php \nLog Message:\n[#315290] fixed notice warnings\n\n
wkpark      2010/08/24 00:14:11

  Modified:    plugin   Keywords.php MathChooser.php Navigation.php
                        PluginInfo.php Rating.php SWFUpload.php
                        SlideShow.php UWL.php UploadFile.php VisualTour.php
                        admin.php chmod.php dot.php rcsimport.php
  Log:
  [#315290] fixed notice warnings
  
  Revision  Changes    Path
  1.37      +4 -3      moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- Keywords.php	23 Aug 2010 09:15:23 -0000	1.36
  +++ Keywords.php	23 Aug 2010 15:14:10 -0000	1.37
  @@ -8,12 +8,12 @@
   // Name: a Keywords Plugin
   // Description: a Keywords plugin to generate keywords of a page
   // URL: MoniWiki:KeywordsPlugin
  -// Version: $Revision: 1.36 $
  +// Version: $Revision: 1.37 $
   // License: GPL
   //
   // Usage: [[Keywords(options)]]
   //
  -// $Id: Keywords.php,v 1.36 2010/08/23 09:15:23 wkpark Exp $
  +// $Id: Keywords.php,v 1.37 2010/08/23 15:14:10 wkpark Exp $
   
   define('LOCAL_KEYWORDS','LocalKeywords');
   define('MAX_FONT_SZ',24);
  @@ -537,10 +537,11 @@
           return;
       }
   
  +    $args = array();
       $formatter->send_header('',$options);
   
       if (empty($options['suggest']) and
  -        (is_array($options['key']) or !empty($options['keywords']))) {
  +        ((!empty($options['key']) and is_array($options['key'])) or !empty($options['keywords']))) {
           if (!empty($options['keywords'])) {
               // following keyword list are acceptable separated with spaces.
               // Chemistry "Physical Chemistry" "Bio Chemistry" ...
  
  
  
  1.9       +4 -4      moniwiki/plugin/MathChooser.php
  
  Index: MathChooser.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/MathChooser.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- MathChooser.php	10 Jul 2010 10:53:51 -0000	1.8
  +++ MathChooser.php	23 Aug 2010 15:14:10 -0000	1.9
  @@ -1,5 +1,5 @@
   <?php
  -// Copyright 2008 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2008-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a sample plugin for the MoniWiki
   //
  @@ -8,16 +8,16 @@
   // Name: MathChooser
   // Description: Latex symbol selector
   // URL: MoniWiki/MathChooserPlugin
  -// Version: $Revision: 1.8 $
  +// Version: $Revision: 1.9 $
   // License: GPL
   //
   // Usage: [[MathChooser]]
   //
  -// $Id: MathChooser.php,v 1.8 2010/07/10 10:53:51 wkpark Exp $
  +// $Id: MathChooser.php,v 1.9 2010/08/23 15:14:10 wkpark Exp $
   
  +define('USER_LATEX_MAP','LatexSymbolTable');
   function macro_MathChooser($formatter,$value) {
       global $DBInfo;
  -define('USER_LATEX_MAP','LatexSymbolTable');
   
       $js=<<<JS
   <script language="javascript" type="text/javascript">
  
  
  
  1.17      +10 -8     moniwiki/plugin/Navigation.php
  
  Index: Navigation.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Navigation.php,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- Navigation.php	19 Apr 2010 11:26:46 -0000	1.16
  +++ Navigation.php	23 Aug 2010 15:14:10 -0000	1.17
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Navigation(IndexPage)]]
   //
  -// $Id: Navigation.php,v 1.16 2010/04/19 11:26:46 wkpark Exp $
  +// $Id: Navigation.php,v 1.17 2010/08/23 15:14:10 wkpark Exp $
   
   function macro_Navigation($formatter,$value) {
     global $DBInfo;
  @@ -36,13 +36,13 @@
   
   #  print $current;
   
  +  if (empty($formatter->wordrule)) $formatter->set_wordrule();
  +
     $indices=array();
     $count=0;
     foreach ($lines as $line) {
  -    if (preg_match("/^\s+(\*|\d+\.)\s+(?<!\!)($formatter->wordrule)/",$line,$match)) {
  -      $word=$match[2];
  -      if ($word[0]=='[') $word=substr($word,1,-1);
  -      if ($word[0]=='"') $word=substr($word,1,-1);
  +    if (preg_match("/^\s+(?:\*|\d+\.)\s*($formatter->wordrule)/",$line,$match)) {
  +      $word = trim($match[1], '[]"');
   
         list($index,$text,$dummy)= normalize_word($word,$group,$page);
         if ($group) $indices[]=$index;
  @@ -110,14 +110,16 @@
       $pnut.=' &raquo;';
       if ($use_action) $formatter->query_string=$save;
     }
  -  return $pnut;
  +  if (!empty($pnut))
  +    return $pnut;
  +  return '';
   }
   
   function do_navigation($formatter,$options) {
  -  if (!$formatter->wordrule) $formatter->set_wordrule();
  +  if (empty($formatter->wordrule)) $formatter->set_wordrule();
     $pnut=macro_Navigation($formatter,$options['value'].',action');
     $formatter->send_header('',$options);
  -  $formatter->send_title($title,$formatter->link_url("FindPage"),$options);
  +  $formatter->send_title('', $formatter->link_url("FindPage"),$options);
     print "<div class='wikiNavigation'>\n";
     print $pnut;
     print "<hr /></div>\n";
  
  
  
  1.3       +13 -11    moniwiki/plugin/PluginInfo.php
  
  Index: PluginInfo.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/PluginInfo.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- PluginInfo.php	31 Dec 2008 11:04:07 -0000	1.2
  +++ PluginInfo.php	23 Aug 2010 15:14:10 -0000	1.3
  @@ -7,13 +7,13 @@
   // Name: PluginInfo
   // Description: Show Plugin/Processor Info
   // URL: MoniWiki:PluginInfoMacro
  -// Version: $Revision: 1.2 $
  +// Version: $Revision: 1.3 $
   // Depend: 1.1.3
   // License: GPL
   //
   // Usage: [[PluginInfo(name)]]
   //
  -// $Id: PluginInfo.php,v 1.2 2008/12/31 11:04:07 wkpark Exp $
  +// $Id: PluginInfo.php,v 1.3 2010/08/23 15:14:10 wkpark Exp $
   
   include_once(dirname(__FILE__).'/admin.php');
   
  @@ -38,17 +38,16 @@
       }
       $info = get_plugin_info(dirname(__FILE__)."/$file.php");
   
  -    $name=!empty($info['Name']) ? $info['Name'].' ('.$value.')':$value;
  -    $version=$info['Version'];
  -    $author=$info['Author'];
  -    $version=$info['Version'];
  -    $license=$info['License'];
  -    $depend=$info['Depend'];
  -    $url=$info['URL'];
  -    $desc=$info['Description'] ? $info['Description']:'';
  +    $name = !empty($info['Name']) ? $info['Name'].' ('.$value.')':$value;
  +    $version = !empty($info['Version']) ? $info['Version'] : '';
  +    $author = !empty($info['Author']) ? $info['Author'] : '';
  +    $license = !empty($info['License']) ? $info['License'] : '';
  +    $depend = !empty($info['Depend']) ? $info['Depend'] : '';
  +    $url = !empty($info['URL']) ? $info['URL'] : '';
  +    $desc = !empty($info['Description']) ? $info['Description'] : '';
   
       $msg=_("Description");
  -    $pl.="<tr><td colspan='3'><fieldset class='collapsible collapsed'><legend>$msg: </legend><div>";
  +    $pl="<tr><td colspan='3'><fieldset class='collapsible collapsed'><legend>$msg: </legend><div>";
           $pl.='<strong>'._("Name").': '.$name."</strong><br />\n";
       if ($version)
           $pl.='<strong>'._("Version").': '.$version."</strong><br />\n";
  @@ -58,6 +57,9 @@
           $pl.='<strong>'._("License").': '.$license."</strong><br />\n";
       if ($depend)
           $pl.='<strong>'._("Depend").': '.$depend."</strong><br />\n";
  +
  +    if (empty($formatter->wordrule)) $formatter->set_wordrule();
  +
       if ($url) {
           $url=preg_replace("/(".$formatter->wordrule.")/e",
               "\$formatter->link_repl('\\1')",$url);
  
  
  
  1.9       +10 -6     moniwiki/plugin/Rating.php
  
  Index: Rating.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Rating.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Rating.php	1 Oct 2009 13:13:52 -0000	1.8
  +++ Rating.php	23 Aug 2010 15:14:10 -0000	1.9
  @@ -7,12 +7,12 @@
   // Name: Rating
   // Description: Rating Plugin
   // URL: MoniWiki:RatingPlugin
  -// Version: $Revision: 1.8 $
  +// Version: $Revision: 1.9 $
   // License: GPL
   //
   // Usage: [[Rating(totalscore,count)]] or [[Rating(initial score)]]
   //
  -// $Id: Rating.php,v 1.8 2009/10/01 13:13:52 wkpark Exp $
  +// $Id: Rating.php,v 1.9 2010/08/23 15:14:10 wkpark Exp $
   
   function macro_Rating($formatter,$value='',$options=array()) {
       global $Config;
  @@ -99,7 +99,11 @@
           $count=$val[1];
       } else
           $total=$val[0];
  -    $count=max(1,$count);
  +    if (isset($count)) {
  +        $count=max(1,$count);
  +    } else {
  +        $count = 1;
  +    }
       $value=$total/$count; // averaged value
       if ($total==0 and $count==1) $count=0;
       $value=(!empty($value) and 0 < $value and 6 > $value) ? $value:0;
  @@ -158,11 +162,11 @@
   
       endif;
   
  -    if (!$matched) {
  -        if ($DBInfo->use_rating) {
  +    if (empty($matched)) {
  +        if (!empty($DBInfo->use_rating)) {
               $dum='';
               $pi=$formatter->get_instructions($dum);
  -            $old=$pi['#rating'];
  +            $old = !empty($pi['#rating']) ? $pi['#rating'] : '';
               $new='#rating '.$total.','.$count;
               if ($old) {
                   list($ts,$cnt)=explode(',',$old);
  
  
  
  1.22      +10 -9     moniwiki/plugin/SWFUpload.php
  
  Index: SWFUpload.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SWFUpload.php,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- SWFUpload.php	19 Jun 2010 14:52:02 -0000	1.21
  +++ SWFUpload.php	23 Aug 2010 15:14:10 -0000	1.22
  @@ -8,12 +8,12 @@
   // Name: SWF Upload
   // Description: SWF Upload Plugin
   // URL: http://labb.dev.mammon.se/swfupload/ MoniWikiDev:SWFUpload
  -// Version: $Revision: 1.21 $
  +// Version: $Revision: 1.22 $
   // License: GPL
   //
   // Usage: [[SWFUpload]]
   //
  -// $Id: SWFUpload.php,v 1.21 2010/06/19 14:52:02 wkpark Exp $
  +// $Id: SWFUpload.php,v 1.22 2010/08/23 15:14:10 wkpark Exp $
   
   function macro_SWFUpload($formatter,$value,$opts=array()) {
       global $DBInfo;
  @@ -318,13 +318,14 @@
           $depth=2;
       }
   
  -    if (!empty($DBInfo->nosession)) { // ip based
  -        $myid=md5($_SERVER['REMOTE_ADDR'].'.'.'MONIWIKI'); // FIXME
  -    } else {
  +    $myid = md5($_SERVER['REMOTE_ADDR'].'.'.'MONIWIKI'); // FIXME
  +    if (empty($DBInfo->nosession)) { // ip based
           if (0 and $_SESSION['_swfupload']) // XXX flash bug?
               $myid = $_SESSION['_swfupload'];
  -        else {
  -            list($dum,$myid,$dum2)=explode('/',$options['value'],3);
  +        else if (!empty($options['value']) and ($p = strpos($options['value'], '/')) !== false) {
  +            $tmp = explode('/', $options['value']);
  +            #list($dum,$myid,$dum2)=explode('/',$options['value'],3);
  +            $myid = $tmp[1];
           }
       }
   
  @@ -345,7 +346,7 @@
       //fwrite($fp,"------------------------\n");
       //fclose($fp);
       // set the personal subdir
  -    if ($options['value'] and preg_match('/^[a-z0-9\/]+$/i',$options['value'])) {
  +    if (!empty($options['value']) and preg_match('/^[a-z0-9\/]+$/i',$options['value'])) {
           //if ($mysubdir == $options['value']) // XXX check subdir
           //    $mysubdir = $options['value'];
   
  @@ -363,7 +364,7 @@
               $swfupload_dir.'/'.$mysubdir.$_FILES['Filedata']['name']);
           echo "Success";
           return;
  -    } else if (is_array($options['MYFILES'])) {
  +    } else if (isset($options['MYFILES']) and is_array($options['MYFILES'])) {
           include_once('plugin/UploadFile.php');
   
           $options['_pds_subdir']=$mysubdir; // a temporary pds dir
  
  
  
  1.10      +11 -6     moniwiki/plugin/SlideShow.php
  
  Index: SlideShow.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/SlideShow.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- SlideShow.php	17 Apr 2010 12:07:26 -0000	1.9
  +++ SlideShow.php	23 Aug 2010 15:14:10 -0000	1.10
  @@ -5,7 +5,7 @@
   //
   // Usage: [[SlideShow(pagename)]]
   //
  -// $Id: SlideShow.php,v 1.9 2010/04/17 12:07:26 wkpark Exp $
  +// $Id: SlideShow.php,v 1.10 2010/08/23 15:14:10 wkpark Exp $
   
   function macro_SlideShow($formatter,$value='',$options=array()) {
       global $DBInfo;
  @@ -50,7 +50,7 @@
           list($secthead,$dumm)=explode("\n",$sections[0]);
           preg_match('/^\s*=\s*([^=].*[^=])\s*=\s?$/',$secthead,$match);
           $secthead=rtrim($sections[0]);
  -        if ($match[1]) $title=$match[1];
  +        if (isset($match[1])) $title=$match[1];
       } else {
           $dep='&amp;d='.$depth;
       }
  @@ -113,6 +113,7 @@
           $end= 
               '<img src="'.$icon_dir.'end_off.png'.'" style="border:0" alt="|>" /></a>';
       }
  +    $np = '';
       if (!empty($n_title) and !empty($options['action'])) {
           $np=$sect+1;
           $nlink= $formatter->link_url($urlname,'?action='.$act.
  @@ -123,6 +124,7 @@
           $next= 
               '<img src="'.$icon_dir.'next_off.png'.'" style="border:0" alt=">" /></a>';
       }
  +    $pp = '';
       if (!empty($p_title)) {
           $pp=$sect-1;
           $plink= $formatter->link_url($urlname,'?action='.$act.
  @@ -164,14 +166,14 @@
       print $js;
       print '<div class="slideNav">'.$btn.'</div>';
   
  -    if ($options['p']) $sect=$options['p'];
  +    if (!empty($options['p'])) $sect=$options['p'];
       else $sect=1;
   
   
  -    $save=$formatter->preview;
  +    if (!empty($formatter->preview)) $save = $formatter->preview;
       $formatter->preview=1;
       // show the head title
  -    if ($secthead) $formatter->send_page($secthead);
  +    if (!empty($secthead)) $formatter->send_page($secthead);
       // section number ?
       //$formatter->head_num='1.'.$sect;
       //$formatter->head_num=$sect; // XXX
  @@ -179,7 +181,10 @@
       //$formatter->toc=1;
       // show selected section
       $formatter->send_page($sections[$sect]);
  -    $formatter->preview=$save;
  +    if (isset($save))
  +        $formatter->preview = $save;
  +    else
  +        unset($formatter->preview);
       print "</div></div>";
   
       print '<div class="slideNav">'.$btn.'</div>';
  
  
  
  1.2       +2 -2      moniwiki/plugin/UWL.php
  
  Index: UWL.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UWL.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- UWL.php	10 Aug 2003 08:20:36 -0000	1.1
  +++ UWL.php	23 Aug 2010 15:14:10 -0000	1.2
  @@ -4,7 +4,7 @@
   //
   // Usage: [[EngDic(hello)]]
   //
  -// $Id: UWL.php,v 1.1 2003/08/10 08:20:36 wkpark Exp $
  +// $Id: UWL.php,v 1.2 2010/08/23 15:14:10 wkpark Exp $
   // vim:et:ts=2:
   
   function macro_UWL($formatter,$value) {
  @@ -851,7 +851,7 @@
   withdraw
   UWL;
   
  -  $url='http://kr.engdic.yahoo.com/search/engdic?p=';
  +  $url='http://www.google.co.kr/dictionary?langpair=en|ko&amp;q=';
     $uwls=explode("\n",$UWL_text);
   
     $out="";
  
  
  
  1.52      +12 -11    moniwiki/plugin/UploadFile.php
  
  Index: UploadFile.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadFile.php,v
  retrieving revision 1.51
  retrieving revision 1.52
  diff -u -r1.51 -r1.52
  --- UploadFile.php	30 Jul 2010 07:30:31 -0000	1.51
  +++ UploadFile.php	23 Aug 2010 15:14:10 -0000	1.52
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadFile plugin for the MoniWiki
   //
  -// $Id: UploadFile.php,v 1.51 2010/07/30 07:30:31 wkpark Exp $
  +// $Id: UploadFile.php,v 1.52 2010/08/23 15:14:10 wkpark Exp $
   
   function _upload_err_msg($error_code) {
       switch ($error_code) { 
  @@ -48,7 +48,7 @@
         $options['rename']=array($options['rename']);
         $options['replace']=array($options['replace']);
       }
  -  } else if (is_array($options['MYFILES'])) { // for SWFUpload action
  +  } else if (isset($options['MYFILES']) and is_array($options['MYFILES'])) { // for SWFUpload action
       $count=sizeof($options['MYFILES']);
       $MYFILES=&$options['MYFILES'];
       $mysubdir=$options['mysubdir'];
  @@ -206,10 +206,10 @@
         $exts=explode('.',$fname[1]);
         $ok=0;
         for ($i=sizeof($exts);$i>0;$i--) {
  -        if (in_array(strtolower($exts[$i]),$safe)) {
  +        if (in_array(strtolower($exts[$i - 1]),$safe)) {
             $ok=1;
             break;
  -        } else if (in_array(strtolower($exts[$i]),$protected)) {
  +        } else if (in_array(strtolower($exts[$i - 1]),$protected)) {
             $exts[$i].='.txt'; # extra check for mod_mime: append 'txt' extension: my.pl.hwp => my.pl.txt.hwp
             $ok=1;
             break;
  @@ -233,7 +233,7 @@
       $exts=explode('.',$tname[1]);
       $ok=0;
       for ($i=sizeof($exts);$i>0;$i--) {
  -      if (in_array(strtolower($exts[$i]),$protected)) {
  +      if (in_array(strtolower($exts[$i - 1]),$protected)) {
           $exts[$i].='.txt';
           $ok=1;
           break;
  @@ -377,7 +377,7 @@
     print $js;
     $formatter->send_footer('', $options);
   
  -  if (is_array($options['MYFILES']) and empty($DBInfo->nosession))
  +  if (isset($options['MYFILES']) and is_array($options['MYFILES']) and empty($DBInfo->nosession))
       session_destroy();
     return true;
   }
  @@ -391,7 +391,7 @@
     }
     $use_multi=1;
     $multiform='';
  -  if ($options['rename']) {
  +  if (!empty($options['rename'])) {
       if (!is_array($options['rename'])) {
         // rename option used by "attachment:" and it does not use multiple form.
         $rename=$options['rename'];
  @@ -410,19 +410,20 @@
   
     $url=$formatter->link_url($formatter->page->urlname);
   
  -  $count= ($options['multiform'] > 1) ? $options['multiform']:1;
  +  $count= (!empty($options['multiform']) and $options['multiform'] > 1) ? $options['multiform']:1;
   
     $mode = '';
  -  if ($options['action_mode'] == 'ajax') {
  +  if (!empty($options['action_mode']) and $options['action_mode'] == 'ajax') {
       $mode = '/ajax';
     }
     $form="<form enctype='multipart/form-data' method='post' action='$url'>\n";
     $form.="<input type='hidden' name='action' value='UploadFile$mode' />\n";
     $msg1=_("Replace original file");
     $msg2=_("Rename if it already exist");
  +  $suffix = '';
     for ($j=0;$j<$count;$j++) {
       if ($count > 1) $suffix="[$j]";
  -    if ($options['rename'][$j]) {
  +    if (!empty($options['rename'][$j])) {
         $rename=_stripslashes($options['rename'][$j]);
         $extra="<input name='rename$suffix' value='$rename' />: "._("Rename")."<br />";
       } else $extra='';
  @@ -454,7 +455,7 @@
   
     if (!in_array('UploadedFiles',$formatter->actions))
       $formatter->actions[]='UploadedFiles';
  -  if ($formatter->preview and !in_array('UploadFile',$formatter->actions)) {
  +  if (!empty($formatter->preview) and !in_array('UploadFile',$formatter->actions)) {
       if (!empty($DBInfo->use_preview_uploads)) {
         $keyname=$DBInfo->pageToKeyname($formatter->page->name);
         if (is_dir($DBInfo->upload_dir.'/'.$keyname))
  
  
  
  1.10      +12 -11    moniwiki/plugin/VisualTour.php
  
  Index: VisualTour.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/VisualTour.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- VisualTour.php	30 Dec 2008 22:40:05 -0000	1.9
  +++ VisualTour.php	23 Aug 2010 15:14:10 -0000	1.10
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a VisualTour plugin for the MoniWiki
   //
  -// $Id: VisualTour.php,v 1.9 2008/12/30 22:40:05 wkpark Exp $
  +// $Id: VisualTour.php,v 1.10 2010/08/23 15:14:10 wkpark Exp $
   
   function macro_VisualTour($formatter,$value,$options=array()) {
     global $DBInfo;
  @@ -35,15 +35,15 @@
       }
     }
   
  -  if ($options['w'] and $options['w'] < 6) $w=$options['w'];
  -  else $w=$w?$w:2;
  -  if ($options['d'] and $options['d'] < 6) $d=$options['d'];
  -  else $d=$d?$d:3;
  +  if (!empty($options['w']) and $options['w'] < 6) $w=$options['w'];
  +  else $w=!empty($w) ? $w:2;
  +  if (!empty($options['d']) and $options['d'] < 6) $d=$options['d'];
  +  else $d=!empty($d) ? $d:3;
   
  -  if ($options['f']) $extra.="&f=".$options['f'];
  -  if ($options['arena']) $extra.="&arena=".$options['arena'];
  +  if (!empty($options['f'])) $extra.="&f=".$options['f'];
  +  if (!empty($options['arena'])) $extra.="&arena=".$options['arena'];
   
  -  if ($pgname)
  +  if (isset($pgname[0]))
       $urlname=_urlencode($pgname);
     else {
       $urlname=$formatter->page->urlname;
  @@ -53,7 +53,7 @@
     $dot=$formatter->macro_repl('dot',$pgname,$options);
   
     $md5sum=md5($dot);
  -  if ($DBInfo->cache_public_dir) {
  +  if (!empty($DBInfo->cache_public_dir)) {
       $fc=new Cache_text('visualtour',2,'',$DBInfo->cache_public_dir);
       $fname=$fc->_getKey($md5sum,0);
       $basename= $DBInfo->cache_public_dir.'/'.$fname;
  @@ -84,6 +84,7 @@
       umask($om);
     }
   
  +  $err = '';
     if ($formatter->refresh or !file_exists($dotfile)) {
       $fp=fopen($dotfile,"w");
       fwrite($fp,$dot);
  @@ -123,9 +124,9 @@
   function do_VisualTour($formatter,$options) {
     $formatter->send_header();
     $selfurl=$formatter->link_to();
  -  if ($options['w'] and $options['w'] < 6) $w=$options['w'];
  +  if (!empty($options['w']) and $options['w'] < 6) $w=$options['w'];
     else $w=2;
  -  if ($options['d'] and $options['d'] < 6) $d=$options['d'];
  +  if (!empty($options['d']) and $options['d'] < 6) $d=$options['d'];
     else $d=3;
   
     print "<h2 style='font-family:Tahoma,Sans-serif;'>VisualTour on $selfurl</h2>";
  
  
  
  1.4       +21 -25    moniwiki/plugin/admin.php
  
  Index: admin.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/admin.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- admin.php	9 Jan 2007 06:12:42 -0000	1.3
  +++ admin.php	23 Aug 2010 15:14:10 -0000	1.4
  @@ -9,13 +9,13 @@
   // Name: Admin
   // Description: Admin Plugin
   // URL: MoniWiki:AdminPlugin
  -// Version: $Revision: 1.3 $
  +// Version: $Revision: 1.4 $
   // Depend: 1.1.3
   // License: GPL
   //
   // Usage: ?action=admin
   //
  -// $Id: admin.php,v 1.3 2007/01/09 06:12:42 wkpark Exp $
  +// $Id: admin.php,v 1.4 2010/08/23 15:14:10 wkpark Exp $
   
   function get_plugin_info($plugin_file) {
       // wordpress style management
  @@ -32,7 +32,7 @@
                       $l=substr($l,4);
                       list($k,$v)=split("[[:blank:]]+",rtrim($l),2);
                       $nk=strtolower($k);
  -                    $info[$nk]=$info[$nk] ? $info[$nk].','.$v:$v;
  +                    $info[$nk]=!empty($info[$nk]) ? $info[$nk].','.$v:$v;
                   }
               } else if ($l{1}=='/' and $l{2}==' ') {
                   $l=substr($l,3);
  @@ -40,7 +40,7 @@
                       $k=substr($l,0,$p);
                       $v=trim(substr($l,$p+2));
                       $nk=strtolower($k);
  -                    $info[$nk]=$info[$nk] ? $info[$nk].','.$v:$v;
  +                    $info[$nk]=!empty($info[$nk]) ? $info[$nk].','.$v:$v;
                   }
               }
           }
  @@ -49,27 +49,23 @@
   
       if (!$info) return array();
   
  -    $name = $info['name'];
  -    $url = $info['uri'].$info['url'];
  -    $author = $info['author'];
  -    $author_url = $info['author uri'] or $info['author url'];
  -    $description = $info['description'].$desc.$info['desc'];
  -    $license = $info['license'];
  -    $version = $info['version'];
  -    $depend = $info['depend'] or $info['dependency'];
  -
  -    if ($version and $version{0}=='$' and substr($version,1,9)=='Revision:')
  -        $version=substr($version,10,-1);
  -
  -    return array (
  -                'Name' => $name,
  -                'Description' => $description,
  -                'Author' => $author,
  -                'Version' => $version,
  -                'License' => $license,
  -                'URL' => $url,
  -                'Depend' => $depend,
  -    );
  +    $plugin_info = array();
  +    $fields = array('name', 'description', 'author', 'license', 'url', 'depend', 'author url');
  +    $alias = array('desc'=>'description', 'dependency'=>'depend', 'uri'=>'url', 'author uri'=>'author url');
  +
  +    foreach ($info as $k=>$v) {
  +        $kk = $k;
  +        if (array_key_exists($k, $alias)) $kk = $alias[$k];
  +        if (in_array($kk, $fields)) {
  +            $plugin_info[ucfirst($k)] = $v;
  +        }
  +    }
  +
  +    if (!empty($info['version']) and $info['version'][0]=='$' and substr($info['version'], 1, 9)=='Revision:') {
  +        $plugin_info['Version'] = substr($info['version'], 10, -1);
  +    }
  +
  +    return $plugin_info;
   }
   
   function macro_admin($formatter,$value='',$options=array()) {
  
  
  
  1.5       +3 -3      moniwiki/plugin/chmod.php
  
  Index: chmod.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/chmod.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- chmod.php	18 Aug 2004 16:32:07 -0000	1.4
  +++ chmod.php	23 Aug 2010 15:14:10 -0000	1.5
  @@ -4,7 +4,7 @@
   // a chmod action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: chmod.php,v 1.4 2004/08/18 16:32:07 wkpark Exp $
  +// $Id: chmod.php,v 1.5 2010/08/23 15:14:10 wkpark Exp $
   function do_chmod($formatter,$options) {
     global $DBInfo;
     
  @@ -12,8 +12,8 @@
       if ($DBInfo->hasPage($options['page'])) {
         $perms= $DBInfo->getPerms($options['page']);
         $perms&= 0077; # clear user perms
  -      if ($options['read']) $perms|=0400;
  -      if ($options['write']) $perms|=0200;
  +      if (!empty($options['read'])) $perms|=0400;
  +      if (!empty($options['write'])) $perms|=0200;
         $DBInfo->setPerms($options['page'],$perms);
         $title = sprintf(_("Permission of \"%s\" changed !"), $options['page']);
         $formatter->send_header("",$options);
  
  
  
  1.15      +20 -14    moniwiki/plugin/dot.php
  
  Index: dot.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/dot.php,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- dot.php	23 Aug 2010 09:15:23 -0000	1.14
  +++ dot.php	23 Aug 2010 15:14:10 -0000	1.15
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // dot action plugin for the MoniWiki
   //
  -// $Id: dot.php,v 1.14 2010/08/23 09:15:23 wkpark Exp $
  +// $Id: dot.php,v 1.15 2010/08/23 15:14:10 wkpark Exp $
   
   define('DEPTH',3);
   define('LEAFCOUNT',2);
  @@ -26,12 +26,15 @@
       foreach ($links as $page) {
         if (empty($color[$page])) $color[$page]=$depth;
         if ($page) {
  -        if (!empty($node[$page])) {
  +        if (empty($node[$page])) {
             $leafs=$this->cache->fetch($page);
             if ($leafs) {
               $leafs=unserialize($leafs);
               # XXX 
  -            $nodelink[$page]=sizeof($leafs);
  +            if (!empty($leafs))
  +              $nodelink[$page] = sizeof($leafs);
  +            else
  +              $nodelink[$page] = 1;
             } else
               $nodelink[$page]=-1; // XXX
           } else $nodelink[$page]=1;
  @@ -70,15 +73,15 @@
     global $DBInfo;
   
     #getLeafs($options[page],&$node);
  -  if ($options['w'] and $options['w'] < 5) $count=$options['w'];
  +  if (!empty($options['w']) and $options['w'] < 5) $count=$options['w'];
     else $count=LEAFCOUNT;
  -  if ($options['d'] and $options['d'] < 6) $depth=$options['d'];
  +  if (!empty($options['d']) and $options['d'] < 6) $depth=$options['d'];
     else $depth=DEPTH;
  -  if ($options['f'] and $options['f'] < 12 and $options['f'] > 7 )
  +  if (!empty($options['f']) and $options['f'] < 12 and $options['f'] > 7 )
       $fontsize=$options['f'];
     else $fontsize=FONTSIZE;
   
  -  if ($value and $DBInfo->hasPage($value)) {
  +  if (!empty($value) and $DBInfo->hasPage($value)) {
       $pgname=$value;
     } else if ($DBInfo->hasPage($options['page'])) {
       $pgname=$options['page'];
  @@ -86,12 +89,14 @@
       return ''; // XXX
     }
   
  -  $fontsize= $DBInfo->dot_fontsize ? $DBInfo->dot_fontsize: $fontsize;
  -  $fontname= $DBInfo->dot_fontname ? $DBInfo->dot_fontname: FONTNAME;
  -  $dot_options=$DBInfo->dot_options ? $DBInfo->dot_options: '';
  +  $fontsize = !empty($DBInfo->dot_fontsize) ? $DBInfo->dot_fontsize: $fontsize;
  +  $fontname = !empty($DBInfo->dot_fontname) ? $DBInfo->dot_fontname: FONTNAME;
  +  $dot_options = !empty($DBInfo->dot_options) ? $DBInfo->dot_options: '';
  +
  +  $arena = !empty($options['arena']) ? $options['arena'] : '';
   
     $color=array();
  -  $tree=new LinkTree($options['arena']);
  +  $tree=new LinkTree($arena);
     $tree->makeTree($pgname,$node,$color,$depth,$count*2);
     if (!$node) $node=array($pgname=>array());
     #print_r($color);
  @@ -100,7 +105,7 @@
     $color[$pgname]=10;
   
     $myaction='visualtour';
  -  if (in_array($options['t'],array('visualtour','show')))
  +  if (!empty($options['t']) and in_array($options['t'],array('visualtour','show')))
       $myaction=$options['t'];
   
     #print_r($color);
  @@ -127,8 +132,9 @@
   HEAD;
   
     $allnode=array_keys($node);
  +  $out = '';
     while (list($leafname,$leaf) = @each ($node)) {
  -    if (!$leafs[($urlname=_rawurlencode($leafname))]) {
  +    if (!empty($leafname) and empty($leafs[($urlname=_rawurlencode($leafname))])) {
         $leafs[$leafname]=$urlname;
   
         $extra='';
  @@ -142,7 +148,7 @@
       $selected=array_intersect($node[$leafname],$allnode);
   
       foreach ($selected as $leaf) {
  -      if (!$leafs[($urlname=_rawurlencode($leaf))]) {
  +      if (!empty($leaf) and empty($leafs[($urlname=_rawurlencode($leaf))])) {
           $leafs[$leaf]=$urlname;
           $extra='';
           if ($fcolref[$color[$leaf]])
  
  
  
  1.5       +7 -5      moniwiki/plugin/rcsimport.php
  
  Index: rcsimport.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rcsimport.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- rcsimport.php	25 Dec 2008 08:36:22 -0000	1.4
  +++ rcsimport.php	23 Aug 2010 15:14:10 -0000	1.5
  @@ -5,15 +5,15 @@
   //
   // Usage: [[Test]]
   //
  -// $Id: rcsimport.php,v 1.4 2008/12/25 08:36:22 wkpark Exp $
  +// $Id: rcsimport.php,v 1.5 2010/08/23 15:14:10 wkpark Exp $
   
   function do_post_rcsimport($formatter,$options) {
       global $DBInfo;
  -    if (!$DBInfo->version_class) {
  +    if (empty($DBInfo->version_class)) {
           $msg= _("Version info is not available in this wiki");
           return "<h2>$msg</h2>";
       }
  -    if (!trim($options['rcsfile'])) {
  +    if (empty($options['rcsfile']) or !trim($options['rcsfile'])) {
           $formatter->send_header('',$options);
           $formatter->send_title('','',$options);
           $COLS_MSIE= 80;
  @@ -93,7 +93,8 @@
               $formatter->send_footer('',$options);
               return;
           }
  -        $body = base64_decode($body);
  +        if (!empty($body))
  +            $body = base64_decode($body);
   
           $read = '';
           while(!empty($body)) {
  @@ -113,7 +114,8 @@
               if (!empty($t))
                   $content = $t;
           }
  -        $version->import($options['page'],$content);
  +        if (!isset($content[0]))
  +            $version->import($options['page'],$content);
   
           $options['value'] = $options['page'];
           do_goto($formatter, $options);
  
  
  


1282576559;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv21796\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315290] fixed notice warnings\n\n
wkpark      2010/08/24 00:16:00

  Modified:    .        wikilib.php
  Log:
  [#315290] fixed notice warnings
  
  Revision  Changes    Path
  1.330     +3 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.329
  retrieving revision 1.330
  diff -u -r1.329 -r1.330
  --- wikilib.php	23 Aug 2010 09:15:23 -0000	1.329
  +++ wikilib.php	23 Aug 2010 15:15:59 -0000	1.330
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.329 2010/08/23 09:15:23 wkpark Exp $
  +// $Id: wikilib.php,v 1.330 2010/08/23 15:15:59 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1514,6 +1514,7 @@
   }
   
   function form_permission($mode) {
  +  $read = $write = '';
     if ($mode & 0400)
        $read="checked='checked'";
     if ($mode & 0200)
  @@ -2061,7 +2062,7 @@
       print "</div>\n";
       print $menu;
     } else {
  -    if ($options['category'])
  +    if (!empty($options['category']))
         $savetext.="----\n$options[category]\n";
   
       $options['minor'] = !empty($DBInfo->use_minoredit) ? $options['minor']:0;
  
  
  


1282576681;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv21887\n\nModified Files:\n	wiki.php \nLog Message:\n[#315290] fixed notice warnings\n\n
wkpark      2010/08/24 00:18:03

  Modified:    .        wiki.php
  Log:
  [#315290] fixed notice warnings
  
  Revision  Changes    Path
  1.577     +8 -6      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.576
  retrieving revision 1.577
  diff -u -r1.576 -r1.577
  --- wiki.php	23 Aug 2010 09:22:41 -0000	1.576
  +++ wiki.php	23 Aug 2010 15:18:01 -0000	1.577
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.576 2010/08/23 09:22:41 wkpark Exp $
  +// $Id: wiki.php,v 1.577 2010/08/23 15:18:01 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.576 $',1,-1);
  +$_revision = substr('$Revision: 1.577 $',1,-1);
   $_release = '1.1.5-RC5';
   
   #ob_start("ob_gzhandler");
  @@ -1144,7 +1144,7 @@
         umask($om);
       }
   
  -    $fp=fopen($filename,"w");
  +    $fp=@fopen($filename,"w");
       if (!is_resource($fp))
          return -1;
   
  @@ -1153,7 +1153,7 @@
       flock($fp,LOCK_UN);
       fclose($fp);
   
  -    if ($this->version_class) {
  +    if (!empty($this->version_class)) {
         $class=getModule('Version',$this->version_class);
         $version=new $class ($this);
         $om=umask(~$this->umask);
  @@ -1489,9 +1489,11 @@
       $keyname=$this->DB->_getPageKey($pagename);
       $fname=$this->DB->text_dir."/RCS/$keyname,v";
       $fp=fopen($fname,'r');
  +    $out = '';
       if (is_resource($fp)) {
         $sz=filesize($fname);
  -      $out=fread($fp,$sz);
  +      if ($sz > 0);
  +      	$out=fread($fp,$sz);
         fclose($fp);
       }
       return $out;
  @@ -5965,7 +5967,7 @@
         $options['action_mode']=$action_mode;
         if ($action_mode=='ajax')
           $formatter->ajax_repl($action,$options);
  -      else if ($DBInfo->use_macro_as_action) # XXX
  +      else if (!empty($DBInfo->use_macro_as_action)) # XXX
           echo $formatter->macro_repl($action,$options['value'],$options);
         else
           do_invalid($formatter,$options);
  
  
  


1282576972;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv21982\n\nModified Files:\n	wiki.php \nLog Message:\n[#315622] fix the wordrule rule to link [[Foobar>Hello]] or [[Foobar&Hello]] etc. for the MoinMoin compatibility\n\n
wkpark      2010/08/24 00:22:53

  Modified:    .        wiki.php
  Log:
  [#315622] fix the wordrule rule to link [[Foobar>Hello]] or [[Foobar&Hello]] etc. for the MoinMoin compatibility
  
  Revision  Changes    Path
  1.578     +4 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.577
  retrieving revision 1.578
  diff -u -r1.577 -r1.578
  --- wiki.php	23 Aug 2010 15:18:01 -0000	1.577
  +++ wiki.php	23 Aug 2010 15:22:52 -0000	1.578
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.577 2010/08/23 15:18:01 wkpark Exp $
  +// $Id: wiki.php,v 1.578 2010/08/23 15:22:52 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.577 $',1,-1);
  +$_revision = substr('$Revision: 1.578 $',1,-1);
   $_release = '1.1.5-RC5';
   
   #ob_start("ob_gzhandler");
  @@ -2063,7 +2063,7 @@
       #  * single bracketted words [Hello World] etc.
       #  * single bracketted words with double quotes ["Hello World"]
       #  * double bracketted words with double quotes [["Hello World"]]
  -    "(?<!\[)\!?\[(\[)$single(\")?(?:[^\[\]\",<\s'\*][^\[\],>]{0,255}[^\"])(?(5)\"(?:[^\"]*))(?(4)\])\](?!\])";
  +    "(?<!\[)\!?\[(\[)$single(\")?(?:[^\[\]\",<\s'\*][^\[\]]{0,255}[^\"])(?(5)\"(?:[^\"]*))(?(4)\])\](?!\])";
   
       if ($camelcase)
         $this->wordrule.='|'.
  @@ -2570,6 +2570,7 @@
         } else if (!empty($this->mediawiki_style) and $double_bracket and $url[0] != '"' and strpos($url, ' ') !== false) {
           $url = '"'.$url.'"';
         }
  +      $url = preg_replace('/&amp;/i', '&', $url);
         return $this->word_repl($url,'',$attr);
       }
     }
  
  
  


1282623250;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv4345\n\nModified Files:\n	wiki.php \nLog Message:\n[#315547] do not check a link text with !empty($text) to enable a link text as '0' like as [wiki:Zero 0]\n\n
wkpark      2010/08/24 13:14:12

  Modified:    .        wiki.php
  Log:
  [#315547] do not check a link text with !empty($text) to enable a link text as '0' like as [wiki:Zero 0]
  
  Revision  Changes    Path
  1.579     +5 -5      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.578
  retrieving revision 1.579
  diff -u -r1.578 -r1.579
  --- wiki.php	23 Aug 2010 15:22:52 -0000	1.578
  +++ wiki.php	24 Aug 2010 04:14:10 -0000	1.579
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.578 2010/08/23 15:22:52 wkpark Exp $
  +// $Id: wiki.php,v 1.579 2010/08/24 04:14:10 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.578 $',1,-1);
  +$_revision = substr('$Revision: 1.579 $',1,-1);
   $_release = '1.1.5-RC5';
   
   #ob_start("ob_gzhandler");
  @@ -2499,7 +2499,7 @@
           }
           #$link=str_replace('&','&amp;',$url);
           $link=preg_replace('/&(?!#?[a-z0-9]+;)/i','&amp;',$url);
  -        if (empty($text)) $text=$url;
  +        if (!isset($text[0])) $text=$url;
           else {
             $img_attr='';
             if (preg_match("/^attachment:/",$text)) {
  @@ -2516,7 +2516,7 @@
               $text=qualifiedUrl($this->url_prefix.'/'.$text);
             }
             if (preg_match("/^(http|ftp).*\.(png|gif|jpeg|jpg)$/i",$text)) {
  -            $atext=!empty($atext) ? $atext:$text;
  +            $atext=isset($atext[0]) ? $atext:$text;
               $text=str_replace('&','&amp;',$text);
               return "<a class='externalLink named' href='$link' $attr $this->external_target title='$url'><img class='external' style='border:0px' alt='$atext' src='$text' $img_attr/></a>";
             }
  @@ -2756,7 +2756,7 @@
       if (empty($DBInfo->use_twikilink)) $islink=0;
       list($page,$page_text,$gpage)=
         normalize_word($page,$this->group,$this->page->name,$nogroup,$islink);
  -    if ($text) {
  +    if (isset($text[0])) {
         if (preg_match("/^(http|ftp|attachment).*\.(png|gif|jpeg|jpg)$/i",$text)) {
           if (substr($text,0,11)=='attachment:') {
             $fname=substr($text,11);
  
  
  


1282623413;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv8320\n\nModified Files:\n	wiki.php \nLog Message:\n[#315290] fixed notice warnings\n\n
wkpark      2010/08/24 13:16:54

  Modified:    .        wiki.php
  Log:
  [#315290] fixed notice warnings
  
  Revision  Changes    Path
  1.580     +20 -14    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.579
  retrieving revision 1.580
  diff -u -r1.579 -r1.580
  --- wiki.php	24 Aug 2010 04:14:10 -0000	1.579
  +++ wiki.php	24 Aug 2010 04:16:53 -0000	1.580
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.579 2010/08/24 04:14:10 wkpark Exp $
  +// $Id: wiki.php,v 1.580 2010/08/24 04:16:53 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.579 $',1,-1);
  +$_revision = substr('$Revision: 1.580 $',1,-1);
   $_release = '1.1.5-RC5';
   
   #ob_start("ob_gzhandler");
  @@ -4565,9 +4565,10 @@
         } else {
           $options['title'] = strip_tags($options['title']);
         }
  +      $theme_type = !empty($this->_newtheme) ? $this->_newtheme : '';
         if (empty($options['css_url'])) $options['css_url']=$DBInfo->css_url;
  -      if (empty($this->pi['#nodtd']) and !isset($options['retstr']) and $this->_newtheme != 2) echo $DBInfo->doctype;
  -      if ((isset($this->_newtheme) and $this->_newtheme == 2) or isset($options['retstr']))
  +      if (empty($this->pi['#nodtd']) and !isset($options['retstr']) and $theme_type != 2) echo $DBInfo->doctype;
  +      if ($theme_type == 2 or isset($options['retstr']))
           ob_start();
         else
           echo "<head>\n";
  @@ -4810,6 +4811,7 @@
     alt="powered by MoniWiki" /></a>
   FOOT;
   
  +    $timer = '';
       if (isset($options['timer']) and is_object($options['timer'])) {
         $options['timer']->Check();
         $timer=$options['timer']->Total();
  @@ -5111,7 +5113,7 @@
       # print the title
   
       if (empty($this->_newtheme) or $this->_newtheme != 2) {
  -      if ($this->_newtheme != 2)
  +      if (isset($this->_newtheme) and $this->_newtheme != 2)
           echo '<body'.(!empty($options['attr']) ? ' ' . $options['attr'] : '' ) .">\n";
         echo '<div><a id="top" name="top" accesskey="t"></a></div>'."\n";
       }
  @@ -5148,22 +5150,24 @@
           echo "<div id='wikiIcon'>".$upper_icon.$icons.$rss_icon.'</div>';
           echo $menu;
         }
  -      echo $msg;
  +      if (!empty($msg))
  +        echo $msg;
         echo "</div>\n";
       }
  -    if (empty($this->popup) and (empty($themeurl) or !$this->_newtheme)) {
  +    if (empty($this->popup) and (empty($themeurl) or empty($this->_newtheme))) {
         echo $DBInfo->hr;
         if ($options['trail']) {
           echo "<div id='wikiTrailer'><p>\n";
           echo $this->trail;
           echo "</p></div>\n";
         }
  -      if ($this->origin) {
  +      if (!empty($this->origin)) {
           echo "<div id='wikiOrigin'><p>\n";
           echo $this->origin;
           echo "</p></div>\n";
         }
  -      echo $this->subindex;
  +      if (!empty($this->subindex))
  +        echo $this->subindex;
       }
       echo "<div id='wikiBody'>\n";
       #if ($this->subindex and !$this->popup and (empty($themeurl) or !$this->_newtheme))
  @@ -5346,6 +5350,8 @@
       'fr'=>array('fr_FR','france',''),
       'ko'=>array('ko_KR','korean',''),
     );
  +  if (empty($_SERVER['HTTP_ACCEPT_LANGUAGE']))
  +    return array($languages['en'][0]);
     $lang= strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']);
     $lang= strtr($lang,'_','-');
     $langs=explode(',',preg_replace(array("/;[^;,]+/","/\-[a-z]+/"),'',$lang));
  @@ -5556,7 +5562,7 @@
     $pagename=isset($options['pagename'][0]) ? $options['pagename']: $DBInfo->frontpage;
   
     # get primary variables
  -  if ($_SERVER['REQUEST_METHOD']=='POST') {
  +  if (isset($_SERVER['REQUEST_METHOD']) and $_SERVER['REQUEST_METHOD']=='POST') {
       // reset some reserved variables
       if (isset($_POST['retstr'])) unset($_POST['retstr']);
       if (isset($_POST['header'])) unset($_POST['header']);
  @@ -5581,7 +5587,7 @@
       }
       $goto=!empty($_POST['goto']) ? $_POST['goto'] : '';
       $popup=!empty($_POST['popup']) ? 1 : 0;
  -  } else if ($_SERVER['REQUEST_METHOD']=='GET') {
  +  } else if (empty($_SERVER['REQUEST_METHOD']) or $_SERVER['REQUEST_METHOD']=='GET') {
       // reset some reserved variables
       if (isset($_GET['retstr'])) unset($_GET['retstr']);
       if (isset($_POST['header'])) unset($_POST['header']);
  @@ -5820,7 +5826,7 @@
         log_referer($_SERVER['HTTP_REFERER'],$pagename);
   
       $formatter->write("<div id='wikiContent'>\n");
  -    if (is_object($options['timer'])) {
  +    if (isset($options['timer']) and is_object($options['timer'])) {
         $options['timer']->Check("init");
       }
       $options['pagelinks']=1;
  @@ -5869,7 +5875,7 @@
       } else {
         $formatter->send_page('',$options);
       }
  -    if (is_object($options['timer'])) {
  +    if (isset($options['timer']) and is_object($options['timer'])) {
         $options['timer']->Check("send_page");
       }
       $formatter->write("<!-- wikiContent --></div>\n");
  @@ -6015,7 +6021,7 @@
   
   $DBInfo= new WikiDB($Config);
   
  -if (is_object($options['timer'])) {
  +if (isset($options['timer']) and is_object($options['timer'])) {
     $options['timer']->Check("load");
   }
   
  
  
  


1282623853;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv8438\n\nModified Files:\n	wiki.php \nLog Message:\n[#315624] reduce some tests like as robot test/ip test/kiwirian test using the session method\n\n
wkpark      2010/08/24 13:24:14

  Modified:    .        wiki.php
  Log:
  [#315624] reduce some tests like as robot test/ip test/kiwirian test using the session method
  
  Revision  Changes    Path
  1.581     +25 -8     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.580
  retrieving revision 1.581
  diff -u -r1.580 -r1.581
  --- wiki.php	24 Aug 2010 04:16:53 -0000	1.580
  +++ wiki.php	24 Aug 2010 04:24:13 -0000	1.581
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.580 2010/08/24 04:16:53 wkpark Exp $
  +// $Id: wiki.php,v 1.581 2010/08/24 04:24:13 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.580 $',1,-1);
  +$_revision = substr('$Revision: 1.581 $',1,-1);
   $_release = '1.1.5-RC5';
   
   #ob_start("ob_gzhandler");
  @@ -5487,8 +5487,15 @@
     $options['css_url']=(!empty($DBInfo->themeurl) ? $DBInfo->themeurl:$DBInfo->url_prefix)."/theme/$theme/css/default.css";
   
     $options['pagename']=get_pagename();
  -  if (!empty($DBInfo->robots)) {
  -    $options['is_robot']=isRobot($_SERVER['HTTP_USER_AGENT']);
  +  // check robot
  +  if (!empty($DBInfo->robots) and !isset($_SESSION['is_robot'])) {
  +    if (empty($_SERVER['HTTP_USER_AGENT']))
  +      $options['is_robot'] = 1;
  +    else
  +      $options['is_robot'] = isRobot($_SERVER['HTTP_USER_AGENT']);
  +  }
  +  if (empty($DBInfo->nosession) and isset($_SESSION['is_robot'])) {
  +    $_SESSION['is_robot'] = $options['is_robot'];
     }
   
     if ($user->id != 'Anonymous' and !empty($DBInfo->use_scrap)) {
  @@ -5641,12 +5648,17 @@
   
     // simple black/white list of network check
     $no_checkip = false;
  -  if (!empty($DBInfo->whitelist)) {
  +  if (empty($_SESSION['access_ok']) and !empty($DBInfo->whitelist)) {
       include_once 'lib/checkip.php';
       if (check_ip($DBInfo->whitelist, $_SERVER['REMOTE_ADDR'])) {
         $no_checkip = true;
  +      if (empty($DBInfo->nosession))
  +        $_SESSION['access_ok'] = 1;
       }
  +  } else if (!empty($_SESSION['access_ok'])) {
  +    $no_checkip = true;
     }
  +
     if (!$no_checkip and !empty($DBInfo->blacklist)) {
       include_once 'lib/checkip.php';
       if (check_ip($DBInfo->blacklist, $_SERVER['REMOTE_ADDR'])) {
  @@ -5655,8 +5667,10 @@
         do_invalid($formatter,$options);
         return false;
       }
  +    if (empty($DBInfo->nosession))
  +      $_SESSION['access_ok'] = 2;
     }
  -  if (!empty($DBInfo->kiwirian)) {
  +  if (empty($_SESSION['access_ok']) and !empty($DBInfo->kiwirian)) {
       if (!is_array($DBInfo->kiwirian)) {
         $DBInfo->kiwirian=explode(':',$DBInfo->kiwirian);
       }
  @@ -5666,6 +5680,8 @@
         do_invalid($formatter,$options);
         return false;
       }
  +    if (empty($DBInfo->nosession))
  +      $_SESSION['access_ok'] = 3;
     }
   
     while (empty($action) or $action=='show') {
  @@ -6031,8 +6047,9 @@
   if (!isset($options['pagename'][0])) $options['pagename']= get_frontpage($lang);
   $DBInfo->lang=$lang;
   
  -if (session_id()== '' && empty($Config['nosession'])){
  -  session_name("MONIWIKI");
  +if (session_id() == '' and empty($Config['nosession']) and is_writable(ini_get('session.save_path')) ) {
  +  $myseed = getTicket(!empty($DBInfo->session_seed) ? $DBInfo->session_seed : time(), $_SERVER['REMOTE_ADDR'], 6);
  +  session_name('MONIWIKI_' . $myseed . '_' . $options['id']);
     session_start();
   }
   
  
  
  


1282624703;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv8554\n\nModified Files:\n	wiki.php \nLog Message:\n[#315625] use readfile() with $param['print']=1 option to speed up static caching\n\n
wkpark      2010/08/24 13:38:24

  Modified:    .        wiki.php
  Log:
  [#315625] use readfile() with $param['print']=1 option to speed up static caching
  
  Revision  Changes    Path
  1.582     +16 -5     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.581
  retrieving revision 1.582
  diff -u -r1.581 -r1.582
  --- wiki.php	24 Aug 2010 04:24:13 -0000	1.581
  +++ wiki.php	24 Aug 2010 04:38:23 -0000	1.582
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.581 2010/08/24 04:24:13 wkpark Exp $
  +// $Id: wiki.php,v 1.582 2010/08/24 04:38:23 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.581 $',1,-1);
  +$_revision = substr('$Revision: 1.582 $',1,-1);
   $_release = '1.1.5-RC5';
   
   #ob_start("ob_gzhandler");
  @@ -1651,10 +1651,13 @@
           rewind($fp);
           break;
         }
  +      if (!empty($params['print'])) {
  +        fclose($fp);
  +        return readfile($key);
  +      }
         $ret=fread($fp,$size);
       }
       fclose($fp);
  -    if (!empty($params['print'])) return print $ret;
       return $ret;
     }
   
  @@ -5857,8 +5860,15 @@
         $_macros=null;
        
         if (empty($formatter->refresh) and (($mtime > $dtime) and ($check < $Config['cachetime']))) {
  -        $_macros= unserialize($mcache->fetch($pagename));
  -        $out= $cache->fetch($pagename);
  +        if ($mcache->exists($pagename))
  +          $_macros= unserialize($mcache->fetch($pagename));
  +        if (empty($_macros)) {
  +          $out = '';
  +          #$out = $cache->fetch($pagename);
  +          $cache->fetch($pagename, '', array('print'=>1));
  +        } else {
  +          $out = $cache->fetch($pagename);
  +        }
           $mytime=gmdate("Y-m-d H:i:s",$mtime+$options['tz_offset']);
           $extra_out= "<!-- Cached at $mytime -->";
         } else {
  @@ -5884,6 +5894,7 @@
             $options['mid']=$v[1];
             $mrepl[]=$formatter->macro_repl($v[0],'',$options); // XXX
           }
  +        echo $formatter->get_javascripts();
           $out=str_replace($mrule,$mrepl,$out);
         }
         echo $out,$extra_out;
  
  
  


1282625279;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv11754\n\nModified Files:\n	wiki.php \nLog Message:\n[#315623] fixed table syntax bug like as <#aabbcc> bgcolor markup\n\n
wkpark      2010/08/24 13:48:00

  Modified:    .        wiki.php
  Log:
  [#315623] fixed table syntax bug like as <#aabbcc> bgcolor markup
  
  Revision  Changes    Path
  1.583     +7 -7      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.582
  retrieving revision 1.583
  diff -u -r1.582 -r1.583
  --- wiki.php	24 Aug 2010 04:38:23 -0000	1.582
  +++ wiki.php	24 Aug 2010 04:47:59 -0000	1.583
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.582 2010/08/24 04:38:23 wkpark Exp $
  +// $Id: wiki.php,v 1.583 2010/08/24 04:47:59 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.582 $',1,-1);
  +$_revision = substr('$Revision: 1.583 $',1,-1);
   $_release = '1.1.5-RC5';
   
   #ob_start("ob_gzhandler");
  @@ -3385,9 +3385,11 @@
       }
       else if (preg_match("/^\-(\d+)$/",$para,$match))
         $attr['colspan']=$match[1];
  -    else if ($para[0]=='#')
  +    else if ($para[0]=='#') {
         $sty['background-color']=strtolower($para);
  -    else {
  +      $myattr=$this->_attr('',$sty,$myclass,$align);
  +      $attr=array_merge($attr,$myattr);
  +    } else {
         if (substr($para,0,7)=='rowspan') {
           $attr['rowspan']=substr($para,7);
         } else if (substr($para,0,3)=='row') {
  @@ -3428,9 +3430,7 @@
       foreach ($attrs as $tattr) {
         $tattr=trim($tattr);
         if (empty($tattr)) continue;
  -      if ($tattr[0]=='#') {
  -        $sty['background-color']=strtolower($tattr);
  -      } else if (substr($tattr,0,5)=='table') {
  +      if (substr($tattr,0,5)=='table') {
           $tattr=substr($tattr,5);
           $mattr=$this->_attr($tattr,$sty,$myclass);
           $myattr=array_merge($myattr,$mattr);
  
  
  


1282650938;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin/processor\nIn directory kill.kldp.net:/tmp/cvs-serv4486/plugin/processor\n\nModified Files:\n	monimarkup.php \nLog Message:\n[#315609] fixed last change\n\n
wkpark      2010/08/24 20:55:39

  Modified:    plugin/processor monimarkup.php
  Log:
  [#315609] fixed last change
  
  Revision  Changes    Path
  1.32      +3 -3      moniwiki/plugin/processor/monimarkup.php
  
  Index: monimarkup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/monimarkup.php,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- monimarkup.php	18 Aug 2010 16:43:21 -0000	1.31
  +++ monimarkup.php	24 Aug 2010 11:55:38 -0000	1.32
  @@ -3,12 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a moniwiki formatting processor for the MoniWiki
   //
  -// $Id: monimarkup.php,v 1.31 2010/08/18 16:43:21 wkpark Exp $
  +// $Id: monimarkup.php,v 1.32 2010/08/24 11:55:38 wkpark Exp $
   /**
    * @date    2006-08-09
    * @name    Moniwiki Processor
    * @desc    Moniwiki default processor
  - * @version $Revision: 1.31 $
  + * @version $Revision: 1.32 $
    * @depend  1.1.3
    * @license GPL
    */
  @@ -662,7 +662,7 @@
               $out.=$this->_list(0,$_lityp[$_li]);
               --$_li;
           }
  -        if (!empty($formatter->sect_num) and $formatter->sect_num >1) $out.=$this->_div(0);
  +        if (!empty($formatter->sect_num) and $formatter->sect_num >=1) $out.=$this->_div(0);
   
           if (!empty($formatter->use_smileys) and empty($formatter->smiley_rule))
               $formatter->initSmileys();
  
  
  


1282651336;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv4542\n\nModified Files:\n	wiki.php \nLog Message:\n[#315626] fixed no-smoke multiline cell markup {{| .. |}} to valid MoniWiki markup.\n\n
wkpark      2010/08/24 21:02:16

  Modified:    .        wiki.php
  Log:
  [#315626] fixed no-smoke multiline cell markup {{| .. |}} to valid MoniWiki markup.
  
  Revision  Changes    Path
  1.584     +9 -5      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.583
  retrieving revision 1.584
  diff -u -r1.583 -r1.584
  --- wiki.php	24 Aug 2010 04:47:59 -0000	1.583
  +++ wiki.php	24 Aug 2010 12:02:16 -0000	1.584
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.583 2010/08/24 04:47:59 wkpark Exp $
  +// $Id: wiki.php,v 1.584 2010/08/24 12:02:16 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.583 $',1,-1);
  +$_revision = substr('$Revision: 1.584 $',1,-1);
   $_release = '1.1.5-RC5';
   
   #ob_start("ob_gzhandler");
  @@ -1969,8 +1969,11 @@
                        );
   
       # NoSmoke's MultiLineCell hack
  -    $this->extrarule=array("/{{\|(.*)\|}}/","/{{\|/","/\|}}/");
  -    $this->extrarepl=array("<table class='closure'><tr class='closure'><td class='closure'>\\1</td></tr></table>","</div><table class='closure'><tr class='closure'><td class='closure'><div>","</div></td></tr></table><div>");
  +    #$this->extrarule=array("/{{\|(.*)\|}}/","/{{\|/","/\|}}/");
  +    #$this->extrarepl=array("<table class='closure'><tr class='closure'><td class='closure'>\\1</td></tr></table>","</div><table class='closure'><tr class='closure'><td class='closure'><div>","</div></td></tr></table><div>");
  +    #$this->extrarepl=array("<table class='closure'><tr class='closure'><td class='closure'>\\1</td></tr></table>","</div><table class='closure'><tr class='closure'><td class='closure'><div>","</div></td></tr></table><div>");
  +    $this->_pre_rule=array("/{{\|$/", "/{{\|/", "/\|}}/");
  +    $this->_pre_repl=array('{{{#!wiki .closure', "{{{#!wiki .closure\n", '}}}');
   
       // set extra baserule
       if (!empty($DBInfo->baserule)) {
  @@ -3760,6 +3763,7 @@
           continue; # comments
         }
   
  +      $line = preg_replace($this->_pre_rule, $this->_pre_repl, $line);
         if ($in_pre) {
            if (strpos($line,"}}}")===false) {
              $this->pre_line.=$line."\n";
  @@ -4124,7 +4128,7 @@
   
         if ($this->auto_linebreak and in_array(trim($line),array('{{|','|}}')))
           $this->nobr=1;
  -      $line=preg_replace($this->extrarule,$this->extrarepl,$line);
  +      #$line=preg_replace($this->extrarule,$this->extrarepl,$line);
         #if ($this->auto_linebreak and preg_match('/<div>$/',$line))
         #  $this->nobr=1;
   
  
  
  


1282660582;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv29505\n\nModified Files:\n	wiki.php \nLog Message:\n[#315567] fixed r1.546 change to show nonexists link correctly regardless of its charset.\n\n
wkpark      2010/08/24 23:36:23

  Modified:    .        wiki.php
  Log:
  [#315567] fixed r1.546 change to show nonexists link correctly regardless of its charset.
  
  Revision  Changes    Path
  1.585     +14 -6     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.584
  retrieving revision 1.585
  diff -u -r1.584 -r1.585
  --- wiki.php	24 Aug 2010 12:02:16 -0000	1.584
  +++ wiki.php	24 Aug 2010 14:36:22 -0000	1.585
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.584 2010/08/24 12:02:16 wkpark Exp $
  +// $Id: wiki.php,v 1.585 2010/08/24 14:36:22 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.584 $',1,-1);
  +$_revision = substr('$Revision: 1.585 $',1,-1);
   $_release = '1.1.5-RC5';
   
   #ob_start("ob_gzhandler");
  @@ -2909,17 +2909,25 @@
       }
       if (strtolower($DBInfo->charset) == 'utf-8')
         $utfword=$word;
  -    else if (function_exists('iconv'))
  +    else if (function_exists('iconv')) {
         $utfword=iconv($DBInfo->charset,'utf-8',$word);
  -    if ($utfword) {
  +    }
  +    while ($utfword !== false and isset($utfword[0])) {
         preg_match('/^(.)(.*)$/u', $utfword, $m);
         if (!empty($m[1])) {
           $tag = $m[1];
  -        $last = !empty($m[2]) ? $m[2] : '';
  +        if (strtolower($DBInfo->charset) != 'utf-8' and function_exists('iconv')) {
  +          $tag = iconv('utf-8', $DBInfo->charset, $tag);
  +          if ($tag === false) break;
  +          $last = substr($word, strlen($tag));
  +        } else {
  +          $last = !empty($m[2]) ? $m[2] : '';
  +        }
           return "<span><a class='nonexistent' rel='nofollow' {$title}href='$url'>$tag</a>".$last.'</span>';
         }
  +      break;
       }
  -    return "<a class='nonexistent nomarkup' rel='nofollow' {$title}href='$url'>?</a>$word";
  +    return "<a class='nonexistent' rel='nofollow' {$title}href='$url'>$word</a>";
     }
   
     function head_repl($depth,$head,&$headinfo,$attr='') {
  
  
  


1282666871;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv14995\n\nModified Files:\n	wiki.php \nLog Message:\n[#315624] fixed the last change of the r1.581 to make it work correctly\n\n
wkpark      2010/08/25 01:21:12

  Modified:    .        wiki.php
  Log:
  [#315624] fixed the last change of the r1.581 to make it work correctly
  
  Revision  Changes    Path
  1.586     +46 -31    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.585
  retrieving revision 1.586
  diff -u -r1.585 -r1.586
  --- wiki.php	24 Aug 2010 14:36:22 -0000	1.585
  +++ wiki.php	24 Aug 2010 16:21:11 -0000	1.586
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.585 2010/08/24 14:36:22 wkpark Exp $
  +// $Id: wiki.php,v 1.586 2010/08/24 16:21:11 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.585 $',1,-1);
  +$_revision = substr('$Revision: 1.586 $',1,-1);
   $_release = '1.1.5-RC5';
   
   #ob_start("ob_gzhandler");
  @@ -5502,16 +5502,6 @@
     $options['css_url']=(!empty($DBInfo->themeurl) ? $DBInfo->themeurl:$DBInfo->url_prefix)."/theme/$theme/css/default.css";
   
     $options['pagename']=get_pagename();
  -  // check robot
  -  if (!empty($DBInfo->robots) and !isset($_SESSION['is_robot'])) {
  -    if (empty($_SERVER['HTTP_USER_AGENT']))
  -      $options['is_robot'] = 1;
  -    else
  -      $options['is_robot'] = isRobot($_SERVER['HTTP_USER_AGENT']);
  -  }
  -  if (empty($DBInfo->nosession) and isset($_SESSION['is_robot'])) {
  -    $_SESSION['is_robot'] = $options['is_robot'];
  -  }
   
     if ($user->id != 'Anonymous' and !empty($DBInfo->use_scrap)) {
       $pages = explode("\t",$user->info['scrapped_pages']);
  @@ -5635,6 +5625,16 @@
     }
   
     // is it robot ?
  +  if (!empty($DBInfo->robots) and !isset($_SESSION['is_robot'])) {
  +    if (empty($_SERVER['HTTP_USER_AGENT']))
  +      $options['is_robot'] = 1;
  +    else
  +      $options['is_robot'] = isRobot($_SERVER['HTTP_USER_AGENT']);
  +    $_SESSION['is_robot'] = $options['is_robot'];
  +  } else if (isset($_SESSION['is_robot'])) {
  +    $options['is_robot'] = $_SESSION['is_robot'];
  +  }
  +
     if (!empty($options['is_robot'])) {
       if (!empty($DBInfo->security_class_robot)) {
         $class='Security_'.$DBInfo->security_class_robot;
  @@ -5663,40 +5663,53 @@
   
     // simple black/white list of network check
     $no_checkip = false;
  -  if (empty($_SESSION['access_ok']) and !empty($DBInfo->whitelist)) {
  -    include_once 'lib/checkip.php';
  -    if (check_ip($DBInfo->whitelist, $_SERVER['REMOTE_ADDR'])) {
  +  if (!empty($DBInfo->whitelist)) {
  +    if (empty($_SESSION['whitelist'])) {
  +      require_once 'lib/checkip.php';
  +      if (check_ip($DBInfo->whitelist, $_SERVER['REMOTE_ADDR'])) {
  +        $no_checkip = true;
  +        $_SESSION['whitelist'] = true;
  +      }
  +    } else if (!empty($_SESSION['whitelist'])) {
         $no_checkip = true;
  -      if (empty($DBInfo->nosession))
  -        $_SESSION['access_ok'] = 1;
       }
  -  } else if (!empty($_SESSION['access_ok'])) {
  -    $no_checkip = true;
     }
   
     if (!$no_checkip and !empty($DBInfo->blacklist)) {
  -    include_once 'lib/checkip.php';
  -    if (check_ip($DBInfo->blacklist, $_SERVER['REMOTE_ADDR'])) {
  +    if (!isset($_SESSION['blacklist'])) {
  +      require_once 'lib/checkip.php';
  +      if (check_ip($DBInfo->blacklist, $_SERVER['REMOTE_ADDR'])) {
  +        $_SESSION['blacklist'] = true;
  +      } else {
  +        $_SESSION['blacklist'] = false;
  +      }
  +    }
  +
  +    if ($_SESSION['blacklist']) {
         $options['title']=_("You are in the black list");
         $options['msg']=_("Please contact WikiMasters");
         do_invalid($formatter,$options);
         return false;
       }
  -    if (empty($DBInfo->nosession))
  -      $_SESSION['access_ok'] = 2;
     }
  -  if (empty($_SESSION['access_ok']) and !empty($DBInfo->kiwirian)) {
  -    if (!is_array($DBInfo->kiwirian)) {
  -      $DBInfo->kiwirian=explode(':',$DBInfo->kiwirian);
  +
  +  if (!empty($DBInfo->kiwirian)) {
  +    if (!isset($_SESSION['kiwirian'])) {
  +      if (!is_array($DBInfo->kiwirian)) {
  +        $DBInfo->kiwirian=explode(':',$DBInfo->kiwirian);
  +      }
  +      if (in_array($options['id'],$DBInfo->kiwirian))
  +        $_SESSION['kiwirian'] = true;
  +      else
  +        $_SESSION['kiwirian'] = false;
       }
  -    if (in_array($options['id'],$DBInfo->kiwirian)) {
  +
  +    if ($_SESSION['kiwirian'] === true) {
         $options['title']=_("You are blocked in this wiki");
         $options['msg']=_("Please contact WikiMasters");
         do_invalid($formatter,$options);
         return false;
       }
  -    if (empty($DBInfo->nosession))
  -      $_SESSION['access_ok'] = 3;
     }
   
     while (empty($action) or $action=='show') {
  @@ -6071,8 +6084,10 @@
   $DBInfo->lang=$lang;
   
   if (session_id() == '' and empty($Config['nosession']) and is_writable(ini_get('session.save_path')) ) {
  -  $myseed = getTicket(!empty($DBInfo->session_seed) ? $DBInfo->session_seed : time(), $_SERVER['REMOTE_ADDR'], 6);
  -  session_name('MONIWIKI_' . $myseed . '_' . $options['id']);
  +  $prefix = !empty($DBInfo->session_seed) ? $DBInfo->session_seed : 'MONIWIKI';
  +  $myseed = getTicket($prefix, $_SERVER['REMOTE_ADDR']);
  +  $myid = $prefix . '-*-' . $myseed . '-*-' . $options['id'];
  +  session_name($myid);
     session_start();
   }
   
  
  
  


1282667115;wkpark;Update of /cvsroot/moniwiki/moniwiki/lib\nIn directory kill.kldp.net:/tmp/cvs-serv17584/lib\n\nModified Files:\n	checkip.php \nLog Message:\n[#315613] use the is_numeric() instead of the is_int() to fix r1.5 introduced bug\n\n
wkpark      2010/08/25 01:25:16

  Modified:    lib      checkip.php
  Log:
  [#315613] use the is_numeric() instead of the is_int() to fix r1.5 introduced bug
  
  Revision  Changes    Path
  1.6       +6 -6      moniwiki/lib/checkip.php
  
  Index: checkip.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/checkip.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- checkip.php	20 Aug 2010 06:33:13 -0000	1.5
  +++ checkip.php	24 Aug 2010 16:25:15 -0000	1.6
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   //
   // See also http://kr.php.net/ip2long/
  -// $Id: checkip.php,v 1.5 2010/08/20 06:33:13 wkpark Exp $
  +// $Id: checkip.php,v 1.6 2010/08/24 16:25:15 wkpark Exp $
   // 
   
   function normalize_network($network)
  @@ -12,8 +12,8 @@
           $tmp = explode('/', $network);
           if (count($tmp) > 2)
               return false;
  -	$network = $tmp[0];
  -	$netmask = $tmp[1];
  +        $network = $tmp[0];
  +        $netmask = $tmp[1];
       }
       $network = rtrim($network, '.'); // trim last dot. eg. 1.2.3. => 1.2.3
   
  @@ -26,7 +26,7 @@
   
       if (empty($netmask)) {
           $netmask = 8 * ($dot + 1);
  -    } else if (is_int($netmask)) {
  +    } else if (is_numeric($netmask)) {
           // validate netmask
           if ($netmask < 0 or $netmask > 32) return false;
       } else {
  @@ -50,12 +50,12 @@
   
       foreach ($rules as $rule)
       {
  -	$ret = normalize_network($rule);
  +        $ret = normalize_network($rule);
           if (!$ret) continue; // ignore
   
           $network = $ret[0];
           $netmask = $ret[1];
  -        if (is_int($netmask)) {
  +        if (is_numeric($netmask)) {
               $netmask = 0xffffffff << (32 - $netmask);
           } else {
               $netmask = ip2long($netmask);
  
  
  


1282714458;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv7188\n\nModified Files:\n	wiki.php \nLog Message:\n[#315627] * remove deprecated $use_etable support.\n * render multiline in a table cell correctly.\n * do not align multiline cells\n\n
wkpark      2010/08/25 14:34:20

  Modified:    .        wiki.php
  Log:
  [#315627] * remove deprecated $use_etable support.
   * render multiline in a table cell correctly.
   * do not align multiline cells
  
  Revision  Changes    Path
  1.587     +16 -56    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.586
  retrieving revision 1.587
  diff -u -r1.586 -r1.587
  --- wiki.php	24 Aug 2010 16:21:11 -0000	1.586
  +++ wiki.php	25 Aug 2010 05:34:18 -0000	1.587
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.586 2010/08/24 16:21:11 wkpark Exp $
  +// $Id: wiki.php,v 1.587 2010/08/25 05:34:18 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.586 $',1,-1);
  +$_revision = substr('$Revision: 1.587 $',1,-1);
   $_release = '1.1.5-RC5';
   
   #ob_start("ob_gzhandler");
  @@ -1882,7 +1882,6 @@
       $this->filters=!empty($DBInfo->filters) ? $DBInfo->filters : null;
       $this->postfilters=!empty($DBInfo->postfilters) ? $DBInfo->postfilter : null;
       $this->use_rating=!empty($DBInfo->use_rating) ? $DBInfo->use_rating : 0;
  -    $this->use_etable=!empty($DBInfo->use_etable) ? 1 : 0;
       $this->use_metadata=!empty($DBInfo->use_metadata) ? $DBInfo->use_metadata : 0;
       $this->use_smileys=$DBInfo->use_smileys;
       $this->use_namespace=!empty($DBInfo->use_namespace) ? $DBInfo->use_namespace : '';
  @@ -1977,7 +1976,6 @@
   
       // set extra baserule
       if (!empty($DBInfo->baserule)) {
  -      $dummy = 'dummy';
         foreach ($DBInfo->baserule as $rule=>$repl) {
           $t = @preg_match($rule,$repl);
           if ($t!==false) {
  @@ -3332,19 +3330,24 @@
       for ($i=1,$s=sizeof($cells);$i<$s;$i+=2) {
         $align='';
         $m=array();
  -      preg_match('/^((&lt;[^>]+>)*)(\s?)(.*)(?<!\s)(\s*)?$/s',
  +      preg_match('/^((&lt;[^>]+>)*)(\040?)(.*)(?<!\s)(\040*)?$/s',
           $cells[$i+1],$m);
         $cell=$m[3].$m[4].$m[5];
  -      if (isset($cell{0}) and $cell{strlen($cell)-1} == "\n")
  -        $cell = substr($cell,0,-1).' '; // XXX
   
  +      $l = $m[3];
  +      $r = $m[5];
         if (strpos($cell,"\n") !== false) {
  +        $cell = trim($cell, "\n"); // strip \n XXX FIXME
           $params = array('notoc'=>1);
           $cell=$this->processor_repl('monimarkup',$cell, $params);
  -      }
  -      if ($m[3] and $m[5]) $align='center';
  -      else if (!$m[3]) $align='';
  -      else if (!$m[5]) $align='right';
  +        $cell = str_replace('&lt;', '<', $cell); // revert from baserule
  +        // do not align multiline cells
  +        $l = '';
  +        $r = '';
  +      }
  +      if ($l and $r) $align='center';
  +      else if (!$l) $align='';
  +      else if (!$r) $align='right';
   
         $attr=$this->_td_attr($m[1],$align);
         if (!$tr_attr) $tr_attr=$m[1]; // XXX
  @@ -3991,42 +3994,14 @@
           if (!empty($match[2])) $open.='<caption>'.$match[2].'</caption>';
           $line='||'.$match[3].$match[5].$match[6];
           $in_table=1;
  -        if ($this->use_etable && !preg_match('/\|(\||-+)$/',$match[6])) {
  -          $text.=$open;
  -          $this->table_line.=substr($line,2)."\n";
  -          continue;
  -        }
         } elseif ($in_table && ($line[0]!='|' or
                 !preg_match("/^\|{2}.*(?:\|(\||-+))$/s",$line))) {
  -        if ($this->use_etable && $in_table && preg_match('/^\|\|/',$line)) {
  -          $this->table_line.=substr($line,2)."\n";
  -          continue;
  -        }
           $close=$this->_table(0,$dumm).$close;
           $in_table=0;
         }
         while ($in_table) {
           $line=preg_replace('/(\|\||\|-+)$/','',$line);
  -        if ($this->use_etable && $this->table_line) {
  -          $nline='||'.$this->table_line;
  -          $this->table_line='';
  -          if (!preg_match('/^\|+$/',$line)) $nline.=$line;
  - 
  -          $row=$this->_td($nline,$tr_attr);
  -          if (!$this->in_tr) {
  -            $this->in_tr=1;
  -            $nline="<tr $tr_attr>".$row;
  -            $tr_attr='';
  -          } else {
  -            $nline=$row;
  -          }
  -          if (preg_match('/^\|{3,}$/',$line)) {
  -
  -            $nline.='</tr>';
  -            $this->in_tr=0;
  -          }
  -          $line=$nline;
  -        } else {
  +        {
             $tr_attr='';
             $row=$this->_td($line,$tr_attr);
             $line="<tr $tr_attr>".$row.'</tr>';
  @@ -4036,20 +4011,6 @@
           $line=str_replace('\"','"',$line); # revert \\" to \"
           break;
         }
  -      $tline='';
  -      if ($this->use_etable && !$in_table && $this->table_line) {
  -        $row=$this->_td('||'.$this->table_line,$tr_attr);
  -          if (!$this->in_tr) {
  -            $tline="<tr $tr_attr>";
  -            $tr_attr='';
  -          }
  -          $tline.=$row.'</tr>';
  -          $this->in_tr=0;
  -          $this->table_line='';
  -          $tline=str_replace('\"','"',$tline); # revert \\" to \"
  -          $tline=preg_replace_callback("/(".$wordrule.")/",
  -            array(&$this,'link_repl'),$tline);
  -      }
   
         # InterWiki, WikiName, {{{ }}}, !WikiName, ?single, ["extended wiki name"]
         # urls, [single bracket name], [urls text], [[macro]]
  @@ -4140,8 +4101,7 @@
         #if ($this->auto_linebreak and preg_match('/<div>$/',$line))
         #  $this->nobr=1;
   
  -      $line=$tline.$close.$p_closeopen.$open.$line;
  -      $tline='';
  +      $line=$close.$p_closeopen.$open.$line;
         $open="";$close="";
   
         if ($in_pre==-1) {
  
  
  


1282718707;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv18816\n\nModified Files:\n	config.php.default \nLog Message:\n[#315627] remove $use_etable option\n\n
wkpark      2010/08/25 15:45:08

  Modified:    .        config.php.default
  Log:
  [#315627] remove $use_etable option
  
  Revision  Changes    Path
  1.60      +1 -2      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.59
  retrieving revision 1.60
  diff -u -r1.59 -r1.60
  --- config.php.default	20 Aug 2010 06:28:26 -0000	1.59
  +++ config.php.default	25 Aug 2010 06:45:07 -0000	1.60
  @@ -1,7 +1,7 @@
   <?php
   # This is a default 
   #
  -# $Id: config.php.default,v 1.59 2010/08/20 06:28:26 wkpark Exp $
  +# $Id: config.php.default,v 1.60 2010/08/25 06:45:07 wkpark Exp $
   #
   $sitename='UnnamedWiki'; # site name
   $data_dir= './data';
  @@ -267,7 +267,6 @@
   $flashupload='swfupload';
   #$icon_list='edit,diff,show,find,print,info,help,pref,rss'; # set the icon list
   #$use_folding=0; # 1:default simple js / 2:with the prototype/mootools
  -#$use_etable=0; # use new extended table syntax: deprecated!
   #$use_openid=0; # enable openid login
   #$check_openid_url=0; # selectivly show openid icons: experimental
   #$use_autosave=1; # enable autosave feature.
  
  
  


1282735025;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv25143\n\nModified Files:\n	wiki.php \nLog Message:\n[#315629] support HEAD REQUEST_METHOD. Last-Modified: header added.\n\n
wkpark      2010/08/25 20:17:05

  Modified:    .        wiki.php
  Log:
  [#315629] support HEAD REQUEST_METHOD. Last-Modified: header added.
  
  Revision  Changes    Path
  1.588     +23 -5     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.587
  retrieving revision 1.588
  diff -u -r1.587 -r1.588
  --- wiki.php	25 Aug 2010 05:34:18 -0000	1.587
  +++ wiki.php	25 Aug 2010 11:17:04 -0000	1.588
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.587 2010/08/25 05:34:18 wkpark Exp $
  +// $Id: wiki.php,v 1.588 2010/08/25 11:17:04 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.587 $',1,-1);
  +$_revision = substr('$Revision: 1.588 $',1,-1);
   $_release = '1.1.5-RC5';
   
   #ob_start("ob_gzhandler");
  @@ -4451,6 +4451,13 @@
             $plain=1;
         }
       }
  +    $mtime = $this->page->mtime();
  +    if (!empty($mtime) and !empty($options['nolastmod'])) {
  +      $lastmod = gmdate('D, d M Y H:i:s \G\M\T', $mtime);
  +      $this->header('Last-Modified: '.$lastmod);
  +      $meta_lastmod = '<meta http-equiv="last-modified" content="'.$lastmod.'" />'."\n";
  +    }
  +
       $content_type=
         !empty($DBInfo->content_type) ? $DBInfo->content_type: "text/html";
   
  @@ -4472,8 +4479,8 @@
           $metatags=$DBInfo->metatags;
         }
   
  -      $mtime=$this->page->mtime(); // delay indexing from dokuwiki
  -      if (!empty($DBInfo->delayindex) and ((time() - $mtime) < $DBInfo->delayindex)) {
  +      // delay indexing like as dokuwiki
  +      if (!empty($mtime) and !empty($DBInfo->delayindex) and ((time() - $mtime) < $DBInfo->delayindex)) {
           if (preg_match("/<meta\s+name=('|\")?robots\\1[^>]+>/i",
             $metatags)) {
             $metatags=preg_replace("/<meta\s+name=('|\")?robots\\1[^>]+>/i",
  @@ -4560,6 +4567,7 @@
         echo $metatags,$js,"\n";
         echo $this->get_javascripts();
         echo $keywords;
  +      if (!empty($meta_lastmod)) echo $meta_lastmod;
         echo "  <title>$DBInfo->sitename: ",$options['title'],"</title>\n";
         if (!empty($upper))
           echo '  <link rel="Up" href="',$this->link_url($upper),"\" />\n";
  @@ -5559,7 +5567,7 @@
       }
       $goto=!empty($_POST['goto']) ? $_POST['goto'] : '';
       $popup=!empty($_POST['popup']) ? 1 : 0;
  -  } else if (empty($_SERVER['REQUEST_METHOD']) or $_SERVER['REQUEST_METHOD']=='GET') {
  +  } else {
       // reset some reserved variables
       if (isset($_GET['retstr'])) unset($_GET['retstr']);
       if (isset($_POST['header'])) unset($_POST['header']);
  @@ -5698,6 +5706,9 @@
           return true;
         }
         $formatter->send_header($msg_404,$options);
  +      if (!empty($_SERVER['REQUEST_METHOD']) and $_SERVER['REQUEST_METHOD'] == 'HEAD') {
  +        return true;
  +      }
   
         if (empty($DBInfo->metadb)) $DBInfo->initMetaDB();
         $twins=$DBInfo->metadb->getTwinPages($page->name,2);
  @@ -5803,6 +5814,9 @@
         $options['attr']=$DBInfo->body_attr;
   
       $ret = $formatter->send_header('', $options);
  +    if (!empty($_SERVER['REQUEST_METHOD']) and $_SERVER['REQUEST_METHOD'] == 'HEAD') {
  +      return true;
  +    }
   
       if (empty($options['is_robot'])) {
         $formatter->send_title("","",$options);
  @@ -5951,6 +5965,10 @@
         }
         $msg=sprintf(_("You are not allowed to '%s'"),$action);
         $formatter->send_header("Status: 406 Not Acceptable",$options);
  +      if (!empty($_SERVER['REQUEST_METHOD']) and $_SERVER['REQUEST_METHOD'] == 'HEAD') {
  +        return true;
  +      }
  +
         $formatter->send_title($msg,"", $options);
         if ($options['err'])
           $formatter->send_page($options['err']);
  
  
  


1282739908;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv2811\n\nModified Files:\n	wiki.php \nLog Message:\n[#315629] fixed last change\n\n
wkpark      2010/08/25 21:38:29

  Modified:    .        wiki.php
  Log:
  [#315629] fixed last change
  
  Revision  Changes    Path
  1.589     +19 -18    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.588
  retrieving revision 1.589
  diff -u -r1.588 -r1.589
  --- wiki.php	25 Aug 2010 11:17:04 -0000	1.588
  +++ wiki.php	25 Aug 2010 12:38:28 -0000	1.589
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.588 2010/08/25 11:17:04 wkpark Exp $
  +// $Id: wiki.php,v 1.589 2010/08/25 12:38:28 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.588 $',1,-1);
  +$_revision = substr('$Revision: 1.589 $',1,-1);
   $_release = '1.1.5-RC5';
   
   #ob_start("ob_gzhandler");
  @@ -4452,7 +4452,7 @@
         }
       }
       $mtime = $this->page->mtime();
  -    if (!empty($mtime) and !empty($options['nolastmod'])) {
  +    if (!empty($mtime) and empty($options['nolastmod'])) {
         $lastmod = gmdate('D, d M Y H:i:s \G\M\T', $mtime);
         $this->header('Last-Modified: '.$lastmod);
         $meta_lastmod = '<meta http-equiv="last-modified" content="'.$lastmod.'" />'."\n";
  @@ -5592,6 +5592,22 @@
       $action=substr($action,0,$p);
     }
   
  +  $options['page']=$pagename;
  +  $page = $DBInfo->getPage($pagename);
  +
  +  $formatter = new Formatter($page,$options);
  +
  +  // HEAD support for robots
  +  if (!empty($_SERVER['REQUEST_METHOD']) and $_SERVER['REQUEST_METHOD'] == 'HEAD') {
  +    $header = array();
  +    if (!$page->exists()) {
  +      $header[] = "HTTP/1.1 404 Not found";
  +      $header[] = "Status: 404 Not found";
  +    }
  +    $ret = $formatter->send_header($header, $options);
  +    return $ret;
  +  }
  +
     // is it robot ?
     if (!empty($DBInfo->robots) and !isset($_SESSION['is_robot'])) {
       if (empty($_SERVER['HTTP_USER_AGENT']))
  @@ -5618,12 +5634,6 @@
       $DBInfo->extra_macros='';
     }
   
  -  $options['page']=$pagename;
  -
  -  $page = $DBInfo->getPage($pagename);
  -
  -  $formatter = new Formatter($page,$options);
  -
     $formatter->refresh=!empty($refresh) ? $refresh : '';
     $formatter->popup=!empty($popup) ? $popup : '';
     $formatter->macro_repl('InterWiki','',array('init'=>1));
  @@ -5706,9 +5716,6 @@
           return true;
         }
         $formatter->send_header($msg_404,$options);
  -      if (!empty($_SERVER['REQUEST_METHOD']) and $_SERVER['REQUEST_METHOD'] == 'HEAD') {
  -        return true;
  -      }
   
         if (empty($DBInfo->metadb)) $DBInfo->initMetaDB();
         $twins=$DBInfo->metadb->getTwinPages($page->name,2);
  @@ -5814,9 +5821,6 @@
         $options['attr']=$DBInfo->body_attr;
   
       $ret = $formatter->send_header('', $options);
  -    if (!empty($_SERVER['REQUEST_METHOD']) and $_SERVER['REQUEST_METHOD'] == 'HEAD') {
  -      return true;
  -    }
   
       if (empty($options['is_robot'])) {
         $formatter->send_title("","",$options);
  @@ -5965,9 +5969,6 @@
         }
         $msg=sprintf(_("You are not allowed to '%s'"),$action);
         $formatter->send_header("Status: 406 Not Acceptable",$options);
  -      if (!empty($_SERVER['REQUEST_METHOD']) and $_SERVER['REQUEST_METHOD'] == 'HEAD') {
  -        return true;
  -      }
   
         $formatter->send_title($msg,"", $options);
         if ($options['err'])
  
  
  


1282750670;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv27211\n\nModified Files:\n	wiki.php \nLog Message:\n[#315629] more cleanup\n\n
wkpark      2010/08/26 00:37:51

  Modified:    .        wiki.php
  Log:
  [#315629] more cleanup
  
  Revision  Changes    Path
  1.590     +14 -9     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.589
  retrieving revision 1.590
  diff -u -r1.589 -r1.590
  --- wiki.php	25 Aug 2010 12:38:28 -0000	1.589
  +++ wiki.php	25 Aug 2010 15:37:50 -0000	1.590
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.589 2010/08/25 12:38:28 wkpark Exp $
  +// $Id: wiki.php,v 1.590 2010/08/25 15:37:50 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.589 $',1,-1);
  +$_revision = substr('$Revision: 1.590 $',1,-1);
   $_release = '1.1.5-RC5';
   
   #ob_start("ob_gzhandler");
  @@ -5595,19 +5595,24 @@
     $options['page']=$pagename;
     $page = $DBInfo->getPage($pagename);
   
  -  $formatter = new Formatter($page,$options);
  -
     // HEAD support for robots
     if (!empty($_SERVER['REQUEST_METHOD']) and $_SERVER['REQUEST_METHOD'] == 'HEAD') {
  -    $header = array();
       if (!$page->exists()) {
  -      $header[] = "HTTP/1.1 404 Not found";
  -      $header[] = "Status: 404 Not found";
  +      header("HTTP/1.1 404 Not found");
  +      header("Status: 404 Not found");
  +    } else {
  +      #$formatter->get_redirect();
  +      $lastmod = gmdate('D, d M Y H:i:s \G\M\T', $mtime);
  +      $etag = '"'.md5($lastmod).'"';
  +      header('Last-Modified: '.$lastmod);
  +      header('ETag: '.$etag);
       }
  -    $ret = $formatter->send_header($header, $options);
  -    return $ret;
  +    #$ret = $formatter->send_header($header, $options);
  +    return;
     }
   
  +  $formatter = new Formatter($page,$options);
  +
     // is it robot ?
     if (!empty($DBInfo->robots) and !isset($_SESSION['is_robot'])) {
       if (empty($_SERVER['HTTP_USER_AGENT']))
  
  
  


1282751156;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv27266\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315631] * http_need_cond_request() function added for the conditional HTTP requests (modified version of the httputils.php in the dokuwiki)\n * apply conditiola HTTP request to the raw action\n\n
wkpark      2010/08/26 00:45:58

  Modified:    .        wikilib.php
  Log:
  [#315631] * http_need_cond_request() function added for the conditional HTTP requests (modified version of the httputils.php in the dokuwiki)
   * apply conditiola HTTP request to the raw action
  
  Revision  Changes    Path
  1.331     +60 -3     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.330
  retrieving revision 1.331
  diff -u -r1.330 -r1.331
  --- wikilib.php	23 Aug 2010 15:15:59 -0000	1.330
  +++ wikilib.php	25 Aug 2010 15:45:56 -0000	1.331
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.330 2010/08/23 15:15:59 wkpark Exp $
  +// $Id: wikilib.php,v 1.331 2010/08/25 15:45:56 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -322,6 +322,56 @@
     return $alias;
   }
   
  +/**
  + * Checks and sets HTTP headers for conditional HTTP requests
  + *
  + * @author   Simon Willison <swillison@gmail.com>
  + * @link     http://simon.incutio.com/archive/2003/04/23/conditionalGet
  + * @param    timestamp $timestamp lastmodified time of the cache file
  + * @returns  void or exits with previously header() commands executed
  + */
  +function http_need_cond_request($timestamp, &$headers) {
  +    // A PHP implementation of conditional get, see
  +    //   http://fishbowl.pastiche.org/archives/001132.html
  +    $last_modified = substr(gmdate('r', $timestamp), 0, -5).'GMT';
  +    $etag = '"'.md5($last_modified).'"';
  +    // Send the headers
  +    $headers[] = "Last-Modified: $last_modified";
  +    $headers[] = "ETag: $etag";
  +    // See if the client has provided the required headers
  +    if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
  +        $if_modified_since = _stripslashes($_SERVER['HTTP_IF_MODIFIED_SINCE']);
  +    }else{
  +        $if_modified_since = false;
  +    }
  +
  +    if (isset($_SERVER['HTTP_IF_NONE_MATCH'])) {
  +        $if_none_match = _stripslashes($_SERVER['HTTP_IF_NONE_MATCH']);
  +    }else{
  +        $if_none_match = false;
  +    }
  +
  +    if (!$if_modified_since && !$if_none_match) {
  +        return true;
  +    }
  +
  +    // At least one of the headers is there - check them
  +    if ($if_none_match && $if_none_match != $etag) {
  +        return true; // etag is there but doesn't match
  +    }
  +
  +    if ($if_modified_since && $if_modified_since != $last_modified) {
  +        return true; // if-modified-since is there but doesn't match
  +    }
  +
  +    // Nothing has changed since their last request - serve a 304 and exit
  +    $headers[] = 'HTTP/1.0 304 Not Modified';
  +
  +    // don't produce output, even if compression is on
  +    @ob_end_clean();
  +    return false;
  +}
  +
   function get_title($page,$title='') {
     global $DBInfo;
     if (!empty($DBInfo->use_titlecache)) {
  @@ -1533,8 +1583,15 @@
     $supported=array('text/plain','text/css','text/javascript');
     if (!empty($options['mime']) and in_array($options['mime'],$supported)) {
       $formatter->send_header("Content-Type: $options[mime]",$options);
  -  } else
  -    $formatter->send_header("Content-Type: text/plain".$force_charset,$options);
  +  } else {
  +    $header = array();
  +    $header[] = 'Content-Type: text/plain'.$force_charset;
  +    $header[] = 'Pragma:';
  +    $header[] = 'Cache-Control:';
  +    $need = http_need_cond_request($formatter->page->mtime(), $header);
  +    $formatter->send_header($header, $options);
  +    if (!$need) return;
  +  }
     $raw_body=$formatter->page->get_raw_body($options);
     if (isset($options['section'])) {
       $sections= _get_sections($raw_body);
  
  
  


1282757278;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv13699\n\nModified Files:\n	wiki.php wikilib.php \nLog Message:\n[#315631] REDbot(http://redbot.org) complient http header fix\n\n
wkpark      2010/08/26 02:27:59

  Modified:    .        wiki.php wikilib.php
  Log:
  [#315631] REDbot(http://redbot.org) complient http header fix
  
  Revision  Changes    Path
  1.591     +12 -2     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.590
  retrieving revision 1.591
  diff -u -r1.590 -r1.591
  --- wiki.php	25 Aug 2010 15:37:50 -0000	1.590
  +++ wiki.php	25 Aug 2010 17:27:58 -0000	1.591
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.590 2010/08/25 15:37:50 wkpark Exp $
  +// $Id: wiki.php,v 1.591 2010/08/25 17:27:58 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.590 $',1,-1);
  +$_revision = substr('$Revision: 1.591 $',1,-1);
   $_release = '1.1.5-RC5';
   
   #ob_start("ob_gzhandler");
  @@ -4455,6 +4455,9 @@
       if (!empty($mtime) and empty($options['nolastmod'])) {
         $lastmod = gmdate('D, d M Y H:i:s \G\M\T', $mtime);
         $this->header('Last-Modified: '.$lastmod);
  +      if (!empty($options['etag']))
  +        $this->header('ETag: "'.$options['etag'].'"');
  +
         $meta_lastmod = '<meta http-equiv="last-modified" content="'.$lastmod.'" />'."\n";
       }
   
  @@ -4470,6 +4473,13 @@
   
       if (!empty($options['action_mode']) and $options['action_mode'] =='ajax') return true;
   
  +    # disabled
  +    #$this->header("Vary: Accept-Encoding, Cookie");
  +    #if (strstr($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') and function_exists('ob_gzhandler')) {
  +    #  ob_start('ob_gzhandler');
  +    #  $etag.= '.gzip';
  +    #}
  +
       if (isset($this->pi['#noindex'])) {
         $metatags='<meta name="robots" content="noindex,nofollow" />'."\n";
       } else {
  
  
  
  1.332     +27 -15    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.331
  retrieving revision 1.332
  diff -u -r1.331 -r1.332
  --- wikilib.php	25 Aug 2010 15:45:56 -0000	1.331
  +++ wikilib.php	25 Aug 2010 17:27:58 -0000	1.332
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.331 2010/08/25 15:45:56 wkpark Exp $
  +// $Id: wikilib.php,v 1.332 2010/08/25 17:27:58 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -330,14 +330,14 @@
    * @param    timestamp $timestamp lastmodified time of the cache file
    * @returns  void or exits with previously header() commands executed
    */
  -function http_need_cond_request($timestamp, &$headers) {
  +function http_need_cond_request($last_modified, $etag = '', &$headers) {
       // A PHP implementation of conditional get, see
       //   http://fishbowl.pastiche.org/archives/001132.html
  -    $last_modified = substr(gmdate('r', $timestamp), 0, -5).'GMT';
  -    $etag = '"'.md5($last_modified).'"';
  -    // Send the headers
  -    $headers[] = "Last-Modified: $last_modified";
  -    $headers[] = "ETag: $etag";
  +    if (is_numeric($last_modified)) // is it timestamp ?
  +        $last_modified = substr(gmdate('r', $last_modified), 0, -5).'GMT';
  +    if (empty($etag)) // pseudo etag
  +        $etag = md5($last_modified);
  +
       // See if the client has provided the required headers
       if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
           $if_modified_since = _stripslashes($_SERVER['HTTP_IF_MODIFIED_SINCE']);
  @@ -364,11 +364,7 @@
           return true; // if-modified-since is there but doesn't match
       }
   
  -    // Nothing has changed since their last request - serve a 304 and exit
  -    $headers[] = 'HTTP/1.0 304 Not Modified';
  -
  -    // don't produce output, even if compression is on
  -    @ob_end_clean();
  +    // Nothing has changed since their last request
       return false;
   }
   
  @@ -1584,13 +1580,29 @@
     if (!empty($options['mime']) and in_array($options['mime'],$supported)) {
       $formatter->send_header("Content-Type: $options[mime]",$options);
     } else {
  +    $lastmod = gmdate('D, d M Y H:i:s \G\M\T', $mtime);
  +    $etag = md5($lastmod);
  +    if (strstr($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') and function_exists('ob_gzhandler')) {
  +      $gzip_mode = 1;
  +      $etag.= '.gzip';
  +    }
  +    $options['etag'] = $etag;
  +
       $header = array();
       $header[] = 'Content-Type: text/plain'.$force_charset;
  -    $header[] = 'Pragma:';
  -    $header[] = 'Cache-Control:';
  -    $need = http_need_cond_request($formatter->page->mtime(), $header);
  +    $header[] = 'Pragma: cache';
  +    $maxage = 60*60*24*7;
  +    $header[] = 'Cache-Control: private, max-age='.$maxage;
  +    $need = http_need_cond_request($lastmod, $etag, $header);
  +    if (!$need)
  +        $header[] = 'HTTP/1.0 304 Not Modified';
       $formatter->send_header($header, $options);
       if (!$need) return;
  +
  +    # disabled
  +    #if (!empty($gzip_mode)) {
  +    #  ob_start('ob_gzhandler');
  +    #}
     }
     $raw_body=$formatter->page->get_raw_body($options);
     if (isset($options['section'])) {
  
  
  


1282791413;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin/security\nIn directory kill.kldp.net:/tmp/cvs-serv30286/plugin/security\n\nModified Files:\n	authbasic.php \nLog Message:\nfix User class to WikiUser class\n\n
wkpark      2010/08/26 11:56:54

  Modified:    plugin/security authbasic.php
  Log:
  fix User class to WikiUser class
  
  Revision  Changes    Path
  1.2       +2 -2      moniwiki/plugin/security/authbasic.php
  
  Index: authbasic.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/authbasic.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- authbasic.php	14 Jan 2006 03:26:02 -0000	1.1
  +++ authbasic.php	26 Aug 2010 02:56:53 -0000	1.2
  @@ -1,6 +1,6 @@
   <?php
   # a auth basic security plugin for the MoniWiki
  -# $Id: authbasic.php,v 1.1 2006/01/14 03:26:02 wkpark Exp $
  +# $Id: authbasic.php,v 1.2 2010/08/26 02:56:53 wkpark Exp $
   
   class Security_authbasic extends Security {
       var $DB;
  @@ -40,7 +40,7 @@
           if (isset($_SERVER['PHP_AUTH_USER']) and $_SERVER['PHP_AUTH_PW']) {
               $id=$_SERVER['PHP_AUTH_USER'];
               $userdb=new UserDB($this->DB);
  -            $user=new User(); # get from COOKIE VARS
  +            $user=new WikiUser(); # get from COOKIE VARS
               if ($user->id == $id) return 1;
   
               if ($userdb->_exists($id)) {
  
  
  


1282791657;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv30392\n\nModified Files:\n      Tag: B_1_1_4\n	wikilib.php \nLog Message:\nfix class name of User to WikiUser\n\n
1282791657;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin/security\nIn directory kill.kldp.net:/tmp/cvs-serv30392/plugin/security\n\nModified Files:\n      Tag: B_1_1_4\n	authbasic.php htaccesslogin.php \nLog Message:\nfix class name of User to WikiUser\n\n
wkpark      2010/08/26 12:00:58

  Modified:    .        Tag: B_1_1_4 wikilib.php
               plugin/security Tag: B_1_1_4 authbasic.php htaccesslogin.php
  Log:
  fix class name of User to WikiUser
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.286.2.1 +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.286
  retrieving revision 1.286.2.1
  diff -u -r1.286 -r1.286.2.1
  --- wikilib.php	8 Oct 2009 15:14:42 -0000	1.286
  +++ wikilib.php	26 Aug 2010 03:00:57 -0000	1.286.2.1
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.286 2009/10/08 15:14:42 wkpark Exp $
  +// $Id: wikilib.php,v 1.286.2.1 2010/08/26 03:00:57 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -475,7 +475,7 @@
       if ($this->_exists($id)) {
          $data=file("$this->user_dir/wu-" . $this->_id_to_key($id));
       } else {
  -       $user=new User('Anonymous');
  +       $user=new WikiUser('Anonymous');
          return $user;
       }
       $info=array();
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.8.1   +2 -2      moniwiki/plugin/security/authbasic.php
  
  Index: authbasic.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/authbasic.php,v
  retrieving revision 1.1
  retrieving revision 1.1.8.1
  diff -u -r1.1 -r1.1.8.1
  --- authbasic.php	14 Jan 2006 03:26:02 -0000	1.1
  +++ authbasic.php	26 Aug 2010 03:00:57 -0000	1.1.8.1
  @@ -1,6 +1,6 @@
   <?php
   # a auth basic security plugin for the MoniWiki
  -# $Id: authbasic.php,v 1.1 2006/01/14 03:26:02 wkpark Exp $
  +# $Id: authbasic.php,v 1.1.8.1 2010/08/26 03:00:57 wkpark Exp $
   
   class Security_authbasic extends Security {
       var $DB;
  @@ -40,7 +40,7 @@
           if (isset($_SERVER['PHP_AUTH_USER']) and $_SERVER['PHP_AUTH_PW']) {
               $id=$_SERVER['PHP_AUTH_USER'];
               $userdb=new UserDB($this->DB);
  -            $user=new User(); # get from COOKIE VARS
  +            $user=new WikiUser(); # get from COOKIE VARS
               if ($user->id == $id) return 1;
   
               if ($userdb->_exists($id)) {
  
  
  
  1.1.8.1   +2 -2      moniwiki/plugin/security/htaccesslogin.php
  
  Index: htaccesslogin.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/htaccesslogin.php,v
  retrieving revision 1.1
  retrieving revision 1.1.8.1
  diff -u -r1.1 -r1.1.8.1
  --- htaccesslogin.php	18 Mar 2005 11:03:44 -0000	1.1
  +++ htaccesslogin.php	26 Aug 2010 03:00:57 -0000	1.1.8.1
  @@ -2,7 +2,7 @@
   # a htaccesslogin security plugin for the MoniWiki
   # by Hans-Juergen Tappe <tappe@hek.uni-karlsruhe.de>
   #
  -# $Id: htaccesslogin.php,v 1.1 2005/03/18 11:03:44 wkpark Exp $
  +# $Id: htaccesslogin.php,v 1.1.8.1 2010/08/26 03:00:57 wkpark Exp $
   #
   
   class Security_htaccesslogin extends Security {
  @@ -15,7 +15,7 @@
       $id=getenv('REMOTE_USER');
       if ($id != "") {
         $userdb=new UserDB($DB);
  -      $user=new User(); # get from COOKIE VARS
  +      $user=new WikiUser(); # get from COOKIE VARS
   
         if ($userdb->_exists($id)) {
           # login
  
  
  


1282793432;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv2073\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315631] fixed last changes\n\n
wkpark      2010/08/26 12:30:33

  Modified:    .        wikilib.php
  Log:
  [#315631] fixed last changes
  
  Revision  Changes    Path
  1.333     +7 -4      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.332
  retrieving revision 1.333
  diff -u -r1.332 -r1.333
  --- wikilib.php	25 Aug 2010 17:27:58 -0000	1.332
  +++ wikilib.php	26 Aug 2010 03:30:32 -0000	1.333
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.332 2010/08/25 17:27:58 wkpark Exp $
  +// $Id: wikilib.php,v 1.333 2010/08/26 03:30:32 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1584,7 +1584,7 @@
       $etag = md5($lastmod);
       if (strstr($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') and function_exists('ob_gzhandler')) {
         $gzip_mode = 1;
  -      $etag.= '.gzip';
  +      $etag.= '.gzip'; // is it correct?
       }
       $options['etag'] = $etag;
   
  @@ -1595,9 +1595,12 @@
       $header[] = 'Cache-Control: private, max-age='.$maxage;
       $need = http_need_cond_request($lastmod, $etag, $header);
       if (!$need)
  -        $header[] = 'HTTP/1.0 304 Not Modified';
  +      $header[] = 'HTTP/1.0 304 Not Modified';
       $formatter->send_header($header, $options);
  -    if (!$need) return;
  +    if (!$need) {
  +      @ob_end_clean();
  +      return;
  +    }
   
       # disabled
       #if (!empty($gzip_mode)) {
  
  
  


1282794884;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv6104/plugin\n\nModified Files:\n	ticket.php \nLog Message:\n[#315632] * add a alias $use_captch of the $use_ticket\n * set GDFONTPATH by default\n\n
1282794884;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv6104\n\nModified Files:\n	config.php.default \nLog Message:\n[#315632] * add a alias $use_captch of the $use_ticket\n * set GDFONTPATH by default\n\n
wkpark      2010/08/26 12:54:45

  Modified:    plugin   ticket.php
               .        config.php.default
  Log:
  [#315632] * add a alias $use_captch of the $use_ticket
   * set GDFONTPATH by default
  
  Revision  Changes    Path
  1.8       +11 -2     moniwiki/plugin/ticket.php
  
  Index: ticket.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/ticket.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- ticket.php	9 Jul 2010 11:22:10 -0000	1.7
  +++ ticket.php	26 Aug 2010 03:54:44 -0000	1.8
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a simple CAPTCHA ticket plugin for the MoniWiki
   //
  -// $Id: ticket.php,v 1.7 2010/07/09 11:22:10 wkpark Exp $
  +// $Id: ticket.php,v 1.8 2010/08/26 03:54:44 wkpark Exp $
   
   function _effect_distort($image,$factor=40,$grad=1) {
       // from http://www.codeproject.com/aspnet/CaptchaNET_2.asp Farshid Hosseini
  @@ -175,8 +175,17 @@
           return;
       }
   
  -    if (!empty($DBInfo->gdfontpath))
  +    if (!empty($DBInfo->gdfontpath)) {
           putenv('GDFONTPATH='.$DBInfo->gdfontpath);
  +    } else {
  +        // set default GDFONTPATH
  +        $old = getenv('GDFONTPATH');
  +        $path = $DBInfo->data_dir;
  +        if ($old)
  +            $path = $old.':'.$new;
  +        putenv('GDFONTPATH='.$path);
  +    }
  +        
       if (function_exists('ImageTtfText')) {
           if (!empty($DBInfo->ticket_font)) {
               $FONT=$DBInfo->ticket_font;
  
  
  
  1.61      +3 -1      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.60
  retrieving revision 1.61
  diff -u -r1.60 -r1.61
  --- config.php.default	25 Aug 2010 06:45:07 -0000	1.60
  +++ config.php.default	26 Aug 2010 03:54:44 -0000	1.61
  @@ -1,7 +1,7 @@
   <?php
   # This is a default 
   #
  -# $Id: config.php.default,v 1.60 2010/08/25 06:45:07 wkpark Exp $
  +# $Id: config.php.default,v 1.61 2010/08/26 03:54:44 wkpark Exp $
   #
   $sitename='UnnamedWiki'; # site name
   $data_dir= './data';
  @@ -188,9 +188,11 @@
   $toc_options='simple,toggle';
   #$toc_options='title=Contents,toggle,simple';
   #$use_ticket=1; # use ticket image to block spam bots.
  +#$use_captcha=1; # a alias of the $use_ticket
   #$ticket_gdfont=5; # use a builtin gd bitmap font
   #$gdfontpath='./data';
   #$ticket_font='TTFONT';
  +#$ticket_font='PeignotNum';
   #$ticket_font_size='20';
   $local_abbr='LocalDictionary';
   #$postfilters='abbr';
  
  
  


1282797333;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv11937\n\nModified Files:\n	wiki.php \nLog Message:\n[#315632] add a missing patch\n\n
wkpark      2010/08/26 13:35:34

  Modified:    .        wiki.php
  Log:
  [#315632] add a missing patch
  
  Revision  Changes    Path
  1.592     +6 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.591
  retrieving revision 1.592
  diff -u -r1.591 -r1.592
  --- wiki.php	25 Aug 2010 17:27:58 -0000	1.591
  +++ wiki.php	26 Aug 2010 04:35:33 -0000	1.592
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.591 2010/08/25 17:27:58 wkpark Exp $
  +// $Id: wiki.php,v 1.592 2010/08/26 04:35:33 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.591 $',1,-1);
  +$_revision = substr('$Revision: 1.592 $',1,-1);
   $_release = '1.1.5-RC5';
   
   #ob_start("ob_gzhandler");
  @@ -668,6 +668,10 @@
         }
       }
   
  +    // some alias
  +    if (!empty($this->use_captcha))
  +      $this->use_ticket=$this->use_captcha;
  +
       if (empty($this->purge_passwd))
         $this->purge_passwd=$this->admin_passwd;
   
  
  
  


1282800921;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv20818\n\nModified Files:\n	config.php.default \nLog Message:\n[#315633] add the strimwidth option and $rc_strimwidth config option for RecentChanges macro\n\n
1282800921;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv20818/plugin\n\nModified Files:\n	RecentChanges.php \nLog Message:\n[#315633] add the strimwidth option and $rc_strimwidth config option for RecentChanges macro\n\n
wkpark      2010/08/26 14:35:22

  Modified:    .        config.php.default
               plugin   RecentChanges.php
  Log:
  [#315633] add the strimwidth option and $rc_strimwidth config option for RecentChanges macro
  
  Revision  Changes    Path
  1.62      +2 -1      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.61
  retrieving revision 1.62
  diff -u -r1.61 -r1.62
  --- config.php.default	26 Aug 2010 03:54:44 -0000	1.61
  +++ config.php.default	26 Aug 2010 05:35:21 -0000	1.62
  @@ -1,7 +1,7 @@
   <?php
   # This is a default 
   #
  -# $Id: config.php.default,v 1.61 2010/08/26 03:54:44 wkpark Exp $
  +# $Id: config.php.default,v 1.62 2010/08/26 05:35:21 wkpark Exp $
   #
   $sitename='UnnamedWiki'; # site name
   $data_dir= './data';
  @@ -283,3 +283,4 @@
   $use_local_translation=0; # automatic translation
   #$use_jsbutton=0; # use javascript fake buttons.
   #$use_namespace=0; # support dokuwiki like namespace
  +#$rc_strimwidth=20; # witdh param of mb_strimwidth() with the RecentChanges macro
  
  
  
  1.49      +6 -3      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.48
  retrieving revision 1.49
  diff -u -r1.48 -r1.49
  --- RecentChanges.php	23 Aug 2010 09:15:23 -0000	1.48
  +++ RecentChanges.php	26 Aug 2010 05:35:21 -0000	1.49
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.48 2010/08/23 09:15:23 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.49 2010/08/26 05:35:21 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     global $DBInfo;
  @@ -80,6 +80,7 @@
     if (preg_match("/^[\s\/\-:aABdDFgGhHiIjmMOrSTY]+$/",$args[0]))
       $date_fmt=$args[0];
   
  +  $strimwidth = isset($DBInfo->rc_strimwidth) ? $DBInfo->rc_strimwidth : 20;
     $bra = '';
     $cat = '';
     $cat0 = '';
  @@ -92,6 +93,8 @@
         if ($k=='item') $opts['items']=min((int)$v,RC_MAX_ITEMS);
         else if ($k=='days') $days=min(abs($v),RC_MAX_DAYS);
         else if ($k=='ago') $opts['ago']=abs($v);
  +      else if ($k=='strimwidth' and is_numeric($k) and (abs($v) > 15 or $v == 0))
  +        $strimwidth =abs($v);
       } else {
         if ($arg =="quick") $opts['quick']=1;
         else if ($arg=="nonew") $checknew=0;
  @@ -327,8 +330,8 @@
       $title0= get_title($title).$group;
       $title0=htmlspecialchars($title0);
       $attr = '';
  -    if (strlen(get_title($title)) > 20 and function_exists('mb_strimwidth')) {
  -      $title0=mb_strimwidth($title0,0,20,'...', $DBInfo->charset);
  +    if (!empty($strimwidth) and strlen(get_title($title)) > $strimwidth and function_exists('mb_strimwidth')) {
  +      $title0=mb_strimwidth($title0,0, $strimwidth,'...', $DBInfo->charset);
         $attr = ' title="'.$title.'"';
       }
       $title= $formatter->link_tag($pageurl,"",$title0,$target.$attr);
  
  
  


1282824256;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv6944/plugin\n\nModified Files:\n	ticket.php \nLog Message:\n[#315634] * antialiasing captcha image.\n * $use_ticket = 16 or $use_captcha = 16 to distort captcha image with KCAPTHCA randomization\n\n
wkpark      2010/08/26 21:04:17

  Modified:    plugin   ticket.php
  Log:
  [#315634] * antialiasing captcha image.
   * $use_ticket = 16 or $use_captcha = 16 to distort captcha image with KCAPTHCA randomization
  
  Revision  Changes    Path
  1.9       +127 -27   moniwiki/plugin/ticket.php
  
  Index: ticket.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/ticket.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- ticket.php	26 Aug 2010 03:54:44 -0000	1.8
  +++ ticket.php	26 Aug 2010 12:04:16 -0000	1.9
  @@ -1,11 +1,11 @@
   <?php
  -// Copyright 2005-2006 Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2005-2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a simple CAPTCHA ticket plugin for the MoniWiki
   //
  -// $Id: ticket.php,v 1.8 2010/08/26 03:54:44 wkpark Exp $
  +// $Id: ticket.php,v 1.9 2010/08/26 12:04:16 wkpark Exp $
   
  -function _effect_distort($image,$factor=40,$grad=1) {
  +function _effect_distort($image, $factor=40, $grad=1, $method = 0) {
       // from http://www.codeproject.com/aspnet/CaptchaNET_2.asp Farshid Hosseini
       $width = imagesx($image);
       $height = imagesy($image);
  @@ -16,33 +16,60 @@
       $yf=rand(30,45)*$fact;
       $xf=rand(80,95)*$fact;
   
  +    // from http://www.captcha.ru/captchas/multiwave/
  +    // KCAPTCHA randomize
  +
  +    // periods
  +    $rand1 = mt_rand(750000,1200000)/10000000;
  +    $rand2 = mt_rand(750000,1200000)/10000000;
  +    $rand3 = mt_rand(750000,1200000)/10000000;
  +    $rand4 = mt_rand(750000,1200000)/10000000;
  +    // phases
  +    $rand5 = mt_rand(0,31415926)/10000000;
  +    $rand6 = mt_rand(0,31415926)/10000000;
  +    $rand7 = mt_rand(0,31415926)/10000000;
  +    $rand8 = mt_rand(0,31415926)/10000000;
  +    // amplitudes
  +    $rand9 = mt_rand(330,420)/110;
  +    $rand10 = mt_rand(330,450)/110;
  +
  +    // make new canvas img
       $canvas=imagecreate($width,$height);
  -    $r1 = $g1 = $b1 = 0;
  -    $new = imagecolorallocate($canvas, $r1, $g1, $b1);
  +    $bgcolor = imagecolorsforindex($image, 0);
  +    $new = imagecolorallocate($canvas, $bgcolor['red'], $bgcolor['green'], $bgcolor['blue']);
  +    $fgcolor = imagecolorsforindex($image, 1);
  +    $new = imagecolorallocate($canvas, $fgcolor['red'], $fgcolor['green'], $fgcolor['blue']);
       imagepalettecopy($canvas,$image);
   
       for ($y = 0; $y < $height; $y++) {
           for ($x = 0; $x < $width; $x++) {
  -            // Adds a simple wave
  -            $newX = 
  -              ($x + ($disx * Sin(3.141592 * $y / $xf)));
  -
  -            $t=($x - $width/2) / $yf * 2.4;
  -            $t=$t*$t;
  -            $newY = 
  -              #($y + ($distort * sin(1.5*3.141592 * $x / $yf)));
  -              ($y + ($disy * exp(-$t)*sin(3.141592 * $x / $yf)));
  -            $col = @imagecolorat($image, $newX, $newY);
  -
  -            if ($newY >$height or $newY < 0) $newY=0;
  -            if ($newX < 0) $newX=0;
  -            else if ($newX > $width) $newX=$width;
  +            if (empty($method)) {
  +                // Adds a simple wave
  +                $newX = ($x + ($disx * Sin(3.141592 * $y / $xf)));
  +
  +                $t = ($x - $width/2) / $yf * 2.4;
  +                $t = $t*$t;
  +                $newY = 
  +                    #($y + ($distort * sin(1.5*3.141592 * $x / $yf)));
  +                    ($y + ($disy * exp(-$t)*sin(3.141592 * $x / $yf)));
  +            } else {
  +                // KCAPTCHA method
  +                $newX = $x + (sin($x*$rand1+$rand5)+sin($y*$rand3+$rand6))*$rand9;
  +                $newY = $y + (sin($x*$rand2+$rand7)+sin($y*$rand4+$rand8))*$rand10;
  +            }
   
               if ($grad) { # with gradient effect based on above functions
  -                $i = imagecolorsforindex($image, $col);
  -                $r = $i['red'];
  -                $g = $i['green'];
  -                $b = $i['blue'];
  +                if ($newY > $height or $newY < 0) $newY=0;
  +                if ($newX < 0) $newX=0;
  +                else if ($newX > $width) $newX=$width;
  +
  +                $newcolor = _antialias_color($image, $x, $y, $newX, $newY);
  +                if ($newcolor === false) // this is background color
  +                    $newcolor = $bgcolor;
  +
  +                $r = $newcolor['red'];
  +                $g = $newcolor['green'];
  +                $b = $newcolor['blue'];
   
                   $gratio=120;
                   $bratio=100;
  @@ -53,12 +80,28 @@
                   $blue = (int)($newY/$height*$bgatio+$b/255*$pratio);
                   $new = imagecolorallocate($canvas, $red, $green, $blue);
                   $new = imagecolorclosest($canvas, $red, $green, $blue);
  +
  +                
                   imageSetPixel($canvas,$x,$y,$new);
               } else {
  -                imageSetPixel($canvas,$x,$y,$col);
  +                if ($newX <0 || $newY < 0 || $newX >= $width-1 || $newY >= $height-1) {
  +                    continue;
  +                }
  +
  +                $newcolor = _antialias_color($image, $x, $y, $newX, $newY);
  +                // ignore background 
  +                if ($newcolor === false) continue;
  +
  +                $red = $newcolor['red'];
  +                $green = $newcolor['green'];
  +                $blue = $newcolor['blue'];
  +                $new = imagecolorallocate($canvas, $red, $green, $blue);
  +                $new = imagecolorclosest($canvas, $red, $green, $blue);
  +                imageSetPixel($canvas,$x,$y,$new);
               }
           }
       }
  +
       imageCopy($image,$canvas,0,0,0,0,$width,$height);
   }
   
  @@ -98,6 +141,51 @@
       imageCopy($image,$canvas2,0,0,0,0,$width,$height+5);
   }
   
  +/**
  + * Please http://www.captcha.ru/captchas/multiwave/
  + * get antialiasing color of the new position base on the source img coord.
  + * rewriten for non truecolor img by wkpark at kldp.org
  + *
  + * @author wkpark@kldp.org
  + * @since  2010/08/26
  + */
  +function _antialias_color($img, $x, $y, $sx, $sy) {
  +    $frsx = $sx - floor($sx);
  +    $frsy = $sy - floor($sy);
  +    $frsx1 = 1 - $frsx;
  +    $frsy1 = 1 - $frsy;
  +
  +    $color = array();
  +    $color[] = imagecolorat($img, $sx, $sy) & 0xFF;
  +    $color[] = imagecolorat($img, $sx+1, $sy) & 0xFF;
  +    $color[] = imagecolorat($img, $sx, $sy+1) & 0xFF;
  +    $color[] = imagecolorat($img, $sx+1, $sy+1) & 0xFF;
  +
  +    $test = 0;
  +    foreach ($color as $c) {
  +        $test+= $c;
  +    }
  +    // is it background color
  +    if ($test == 0) return false;
  +
  +    $cc = array('red'=>array(), 'green'=>array(), 'blue'=>array());
  +    foreach ($color as $c) {
  +        $i = imagecolorsforindex($img, $c);
  +        $cc['red'][] = $i['red'];
  +        $cc['green'][] = $i['green'];
  +        $cc['blue'][] = $i['blue'];
  +    }
  +
  +    $newcolor = array();
  +    foreach ($cc as $k=>$v) {
  +        $newcolor[$k] = $v[0] * $frsx1 * $frsy1
  +                + $v[1] * $frsx * $frsy1
  +                + $v[2] * $frsx1 * $frsy
  +                + $v[3] * $frsx * $frsy;
  +        if ($newcolor[$k] > 255) $newcolor[$k] = 255;
  +    }
  +    return $newcolor;
  +}
   
   function _effect_blur($image,$color,$dx=1,$dy=0) {
   // please see http://www.hudzilla.org/phpbook/read.php/11_2_23
  @@ -210,7 +298,7 @@
           //$w=$size[4]+20; # margin=20 ?
           $w=$pointsize*$word_length + $margin;
           $h=$pointsize+$margin;
  -        if ($DBInfo->use_ticket & 7) $h+=$pointsize/3;
  +        if ($DBInfo->use_ticket & 23) $h+=$pointsize/3;
       } else {
           $FONT=5; // giant
           if (!empty($DBInfo->ticket_gdfont))
  @@ -219,7 +307,6 @@
           $h=imagefontheight($FONT)+10;
       }
   
  -    Header("Content-type: image/png");
       $im= ImageCreate($w,$h);
       $color=array();
       if (isset($DBInfo->captcha_bgcolor) and preg_match('/^#[0-9a-fA-F]$/', $DBInfo->captcha_bgcolor)) {
  @@ -236,6 +323,7 @@
       $pen1=rand(3,19);
       for ($i=0;$i<18;$i++)
           $color[]= ImageColorAllocate($im,rand(100,200),rand(100,200),rand(100,200));
  +
       if (!empty($use_ttf)) {
           $sx=$margin;
           $sy=$margin/2+$pointsize;
  @@ -252,12 +340,24 @@
       if ($DBInfo->use_ticket & 8) $grad=1;
       if ($DBInfo->use_ticket & 4)
           _effect_distort($im,$pointsize,$grad);
  +    else if ($DBInfo->use_ticket & 16)
  +        _effect_distort($im,$pointsize,$grad, 1);
       if ($DBInfo->use_ticket & 1)
           _effect_blur($im,$color,1,1);
       if ($DBInfo->use_ticket & 2)
           _effect_grid($im,$color,$pen1);
   
  -    ImagePng($im);
  +    if (function_exists("imagepng")) {
  +	header("Content-Type: image/png");
  +	imagepng($im);
  +    } else if(function_exists("imagegif")) {
  +	header("Content-Type: image/gif");
  +	imagegif($im);
  +    } else if(function_exists("imagejpeg")) {
  +        $jpeg_quality = 5;
  +	header("Content-Type: image/jpeg");
  +	imagejpeg($im, null, $jpeg_quality);
  +    }
       ImageDestroy($im);
   }
   
  
  
  


1282826601;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv14171/plugin\n\nModified Files:\n	ticket.php \nLog Message:\n[#315624] fixed bug with a gdfont\n\n
wkpark      2010/08/26 21:43:22

  Modified:    plugin   ticket.php
  Log:
  [#315624] fixed bug with a gdfont
  
  Revision  Changes    Path
  1.10      +9 -3      moniwiki/plugin/ticket.php
  
  Index: ticket.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/ticket.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- ticket.php	26 Aug 2010 12:04:16 -0000	1.9
  +++ ticket.php	26 Aug 2010 12:43:21 -0000	1.10
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a simple CAPTCHA ticket plugin for the MoniWiki
   //
  -// $Id: ticket.php,v 1.9 2010/08/26 12:04:16 wkpark Exp $
  +// $Id: ticket.php,v 1.10 2010/08/26 12:43:21 wkpark Exp $
   
   function _effect_distort($image, $factor=40, $grad=1, $method = 0) {
       // from http://www.codeproject.com/aspnet/CaptchaNET_2.asp Farshid Hosseini
  @@ -275,7 +275,10 @@
       }
           
       if (function_exists('ImageTtfText')) {
  -        if (!empty($DBInfo->ticket_font)) {
  +        while (!empty($DBInfo->ticket_font)) {
  +            if (is_numeric($DBInfo->ticket_font)) {
  +                break;
  +            }
               $FONT=$DBInfo->ticket_font;
               //$FONT="/home/foobar/data/PenguinAttack.ttf";
               if ($FONT{0}=='/' and !file_exists($FONT)) {
  @@ -284,6 +287,7 @@
                   $FONT=$DBInfo->ticket_font;
                   $use_ttf=1;
               }
  +            break;
           }
       }
       if (!empty($use_ttf)) {
  @@ -304,7 +308,9 @@
           if (!empty($DBInfo->ticket_gdfont))
               $FONT=$DBInfo->ticket_gdfont;
           $w=imagefontwidth($FONT)*strlen($passwd)+10;
  -        $h=imagefontheight($FONT)+10;
  +        $h=imagefontheight($FONT);
  +        $pointsize = $h;
  +        $h+= 10;
       }
   
       $im= ImageCreate($w,$h);
  
  
  


1282837899;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv8090\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315637] fixed FootNote macro to support back refernce like as [*1] [*-1] [*tag] *experimental*\n\n
wkpark      2010/08/27 00:51:40

  Modified:    .        wikilib.php
  Log:
  [#315637] fixed FootNote macro to support back refernce like as [*1] [*-1] [*tag] *experimental*
  
  Revision  Changes    Path
  1.334     +44 -5     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.333
  retrieving revision 1.334
  diff -u -r1.333 -r1.334
  --- wikilib.php	26 Aug 2010 03:30:32 -0000	1.333
  +++ wikilib.php	26 Aug 2010 15:51:39 -0000	1.334
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.333 2010/08/26 03:30:32 wkpark Exp $
  +// $Id: wikilib.php,v 1.334 2010/08/26 15:51:39 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -3091,12 +3091,18 @@
     return "<br class='macro' />\n";
   }
   
  +/**
  + * FootNote macro
  + * *experimental*
  + *
  + */
   function macro_FootNote(&$formatter,$value="") {
     if (!$value) {# emit all footnotes
       if (empty($formatter->foots)) return '';
       $foots=join("\n",$formatter->foots);
       $foots=preg_replace("/(".$formatter->wordrule.")/e","\$formatter->link_repl('\\1')",$foots);
       unset($formatter->foots);
  +    unset($formatter->rfoots);
       if ($foots)
         return "<div class='foot'><div class='separator'><tt class='wiki'>----</tt></div><ul>\n$foots</ul></div>";
       return '';
  @@ -3115,6 +3121,14 @@
         $len=strlen(substr($value,1,$p));
         $text=str_repeat('*',$len);
         $value=substr($value,$p+1);
  +
  +      if (empty($value) and ($k = array_search($text, $formatter->rfoots)) !== false) {
  +        $formatter->foot_idx--; # undo ++.
  +
  +        $fnidx = $k;
  +        $text = $formatter->rfoots[$k];
  +        return "<tt class='foot'><a href='#fn$k'>$text</a></tt>";
  +      }
       } else if ($value[1] == '+') {
         $dagger=array('','&#x2020;',
                       '&#x2020;&#x2020;',
  @@ -3126,6 +3140,13 @@
         $len=strlen(substr($value,0,$p));
         $text=$dagger[$len];
         $value=substr($value,$p+1);
  +      if (empty($value) and ($k = array_search($text, $formatter->rfoots)) !== false) {
  +        $formatter->foot_idx--; # undo ++.
  +
  +        $fnidx = $k;
  +        $text = $formatter->rfoots[$k];
  +        return "<tt class='foot'><a href='#fn$k'>$text</a></tt>";
  +      }
       } else if ($value[1] == ' ') {
         # [* http://c2.com] -> [1]
         $value=substr($value,2);
  @@ -3137,10 +3158,27 @@
         $text[0]='[';
         $text=$text.'&#093;'; # make a text as [Alex77]
         if ($value) {
  -        $formatter->foot_idx--; # undo ++.
  -        if (0 === strcmp($fnidx , (int)$fnidx)) $fnidx="fn$fnidx";
  +        #$formatter->foot_idx--; # undo ++.
  +        if (is_numeric($fnidx)) $fnidx="fn$fnidx";
         } else {
  -        if (0 === strcmp($fnidx , (int)$fnidx)) $fnidx="fn$fnidx";
  +        // no text given. [*1] => [1], [*-1] => [?] previous refer
  +        $formatter->foot_idx--; # undo ++.
  +        if (is_numeric($fnidx)) {
  +          if ($fnidx < 0) { // relative reference
  +            $fnidx = $formatter->foot_idx + $fnidx + 1;
  +          }
  +          if (!empty($formatter->rfoots[$fnidx])) {
  +            $text = $formatter->rfoots[$fnidx];
  +            if (preg_match('/\[([^\d\+\*]+)&/', $text, $m)) {
  +              $fnidx = $m[1];
  +            } else {
  +              $fnidx="fn$fnidx";
  +            }
  +          } else {
  +            $text = '['.$fnidx.'&#093';
  +            $fnidx="fn$fnidx";
  +          }
  +        }
           return "<tt class='foot'><a href='#$fnidx'>$text</a></tt>";
         }
       }
  @@ -3160,9 +3198,10 @@
          return "<tt class='foot'><a href='#$fnidx'>$text</a></tt>";
       }
     }
  -  $formatter->foots[]="<li id='$fnidx'><tt class='foot'>".
  +  $formatter->foots[$formatter->foot_idx]="<li id='$fnidx'><tt class='foot'>".
                         "<a href='#r$fnidx'>$text</a></tt> ".
                         "$value</li>";
  +  $formatter->rfoots[$formatter->foot_idx] = $text;
     $tval=strip_tags(str_replace("'","&#39;",$value));
     return "<tt class='foot'>".
       "<a id='r$fnidx' href='#$fnidx' title='$tval'>$text</a></tt>";
  
  
  


1282840775;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv17446\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315637] support not already defined anonymous FootNote ref like as [*], and named FootNote ref like as [*5] \n\n
wkpark      2010/08/27 01:39:36

  Modified:    .        wikilib.php
  Log:
  [#315637] support not already defined anonymous FootNote ref like as [*], and named FootNote ref like as [*5]
  
  Revision  Changes    Path
  1.335     +34 -17    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.334
  retrieving revision 1.335
  diff -u -r1.334 -r1.335
  --- wikilib.php	26 Aug 2010 15:51:39 -0000	1.334
  +++ wikilib.php	26 Aug 2010 16:39:35 -0000	1.335
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.334 2010/08/26 15:51:39 wkpark Exp $
  +// $Id: wikilib.php,v 1.335 2010/08/26 16:39:35 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -3114,7 +3114,7 @@
     $text="[$idx&#093;";
     $fnidx="fn".$idx;
     if ($value[0] == '*') {
  -    if ($value[1] == '*') {
  +    if (isset($value[1]) and $value[1] == '*') {
         # [** http://foobar.com] -> [*]
         # [*** http://foobar.com] -> [**]
         $p=strrpos($value,'*');
  @@ -3122,14 +3122,18 @@
         $text=str_repeat('*',$len);
         $value=substr($value,$p+1);
   
  -      if (empty($value) and ($k = array_search($text, $formatter->rfoots)) !== false) {
  +      if (empty($value)) {
           $formatter->foot_idx--; # undo ++.
  -
  -        $fnidx = $k;
  -        $text = $formatter->rfoots[$k];
  -        return "<tt class='foot'><a href='#fn$k'>$text</a></tt>";
  +        if (($k = array_search($text, $formatter->rfoots)) !== false) {
  +          $fnidx = $k;
  +          $text = $formatter->rfoots[$k];
  +        } else {
  +          $fnidx = !empty($formatter->rfoots) ? count($formatter->rfoots) + 1 : 1;
  +          $formatter->rfoots[$fnidx] = $text;
  +        }
  +        return "<tt class='foot'><a href='#fn$fnidx'>$text</a></tt>";
         }
  -    } else if ($value[1] == '+') {
  +    } else if (isset($value[1]) and $value[1] == '+') {
         $dagger=array('','&#x2020;',
                       '&#x2020;&#x2020;',
                       '&#x2020;&#x2020;&#x2020;',
  @@ -3140,14 +3144,18 @@
         $len=strlen(substr($value,0,$p));
         $text=$dagger[$len];
         $value=substr($value,$p+1);
  -      if (empty($value) and ($k = array_search($text, $formatter->rfoots)) !== false) {
  +      if (empty($value)) {
           $formatter->foot_idx--; # undo ++.
  -
  -        $fnidx = $k;
  -        $text = $formatter->rfoots[$k];
  -        return "<tt class='foot'><a href='#fn$k'>$text</a></tt>";
  +        if (($k = array_search($text, $formatter->rfoots)) !== false) {
  +          $fnidx = $k;
  +          $text = $formatter->rfoots[$k];
  +        } else {
  +          $fnidx = !empty($formatter->rfoots) ? count($formatter->rfoots) + 1 : 1;
  +          $formatter->rfoots[$fnidx] = $text;
  +        }
  +        return "<tt class='foot'><a href='#fn$fnidx'>$text</a></tt>";
         }
  -    } else if ($value[1] == ' ') {
  +    } else if (isset($value[1]) and $value[1] == ' ') {
         # [* http://c2.com] -> [1]
         $value=substr($value,2);
       } else {
  @@ -3161,9 +3169,17 @@
           #$formatter->foot_idx--; # undo ++.
           if (is_numeric($fnidx)) $fnidx="fn$fnidx";
         } else {
  -        // no text given. [*1] => [1], [*-1] => [?] previous refer
           $formatter->foot_idx--; # undo ++.
  -        if (is_numeric($fnidx)) {
  +        $attr = '';
  +        // no text given. [*1] => [1], [*-1] => [?] previous refer
  +        if (empty($fnidx)) { // [*]
  +          $fnidx = !empty($formatter->rfoots) ? count($formatter->rfoots) + 1 : 1;
  +          $text = '['.$fnidx.'&#093';
  +          $formatter->rfoots[$fnidx] = $text;
  +          $fnidx = 'fn'.$fnidx;
  +          // no title attribute given now
  +          // $attr = " id='r$fnidx'";
  +        } else if (is_numeric($fnidx)) {
             if ($fnidx < 0) { // relative reference
               $fnidx = $formatter->foot_idx + $fnidx + 1;
             }
  @@ -3179,7 +3195,7 @@
               $fnidx="fn$fnidx";
             }
           }
  -        return "<tt class='foot'><a href='#$fnidx'>$text</a></tt>";
  +        return "<tt class='foot'><a$attr href='#$fnidx'>$text</a></tt>";
         }
       }
     } else if ($value[0] == "[") {
  @@ -3201,6 +3217,7 @@
     $formatter->foots[$formatter->foot_idx]="<li id='$fnidx'><tt class='foot'>".
                         "<a href='#r$fnidx'>$text</a></tt> ".
                         "$value</li>";
  +  #if (!empty($formatter->rfoots[$formatter->foot_idx])) return;
     $formatter->rfoots[$formatter->foot_idx] = $text;
     $tval=strip_tags(str_replace("'","&#39;",$value));
     return "<tt class='foot'>".
  
  
  


1282844124;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv27671\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315631] use http_need_cond_request() to the download action\n\n
1282844124;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv27671/plugin\n\nModified Files:\n	download.php \nLog Message:\n[#315631] use http_need_cond_request() to the download action\n\n
wkpark      2010/08/27 02:35:26

  Modified:    .        wikilib.php
               plugin   download.php
  Log:
  [#315631] use http_need_cond_request() to the download action
  
  Revision  Changes    Path
  1.336     +7 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.335
  retrieving revision 1.336
  diff -u -r1.335 -r1.336
  --- wikilib.php	26 Aug 2010 16:39:35 -0000	1.335
  +++ wikilib.php	26 Aug 2010 17:35:24 -0000	1.336
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.335 2010/08/26 16:39:35 wkpark Exp $
  +// $Id: wikilib.php,v 1.336 2010/08/26 17:35:24 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -330,7 +330,7 @@
    * @param    timestamp $timestamp lastmodified time of the cache file
    * @returns  void or exits with previously header() commands executed
    */
  -function http_need_cond_request($last_modified, $etag = '', &$headers) {
  +function http_need_cond_request($last_modified, $etag = '') {
       // A PHP implementation of conditional get, see
       //   http://fishbowl.pastiche.org/archives/001132.html
       if (is_numeric($last_modified)) // is it timestamp ?
  @@ -338,6 +338,9 @@
       if (empty($etag)) // pseudo etag
           $etag = md5($last_modified);
   
  +    if ($etag[0] != '"')
  +        $etag = '"' . $etag . '"';
  +
       // See if the client has provided the required headers
       if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
           $if_modified_since = _stripslashes($_SERVER['HTTP_IF_MODIFIED_SINCE']);
  @@ -1580,6 +1583,7 @@
     if (!empty($options['mime']) and in_array($options['mime'],$supported)) {
       $formatter->send_header("Content-Type: $options[mime]",$options);
     } else {
  +    $mtime = $formatter->page->mtime();
       $lastmod = gmdate('D, d M Y H:i:s \G\M\T', $mtime);
       $etag = md5($lastmod);
       if (strstr($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') and function_exists('ob_gzhandler')) {
  @@ -1593,7 +1597,7 @@
       $header[] = 'Pragma: cache';
       $maxage = 60*60*24*7;
       $header[] = 'Cache-Control: private, max-age='.$maxage;
  -    $need = http_need_cond_request($lastmod, $etag, $header);
  +    $need = http_need_cond_request($lastmod, $etag);
       if (!$need)
         $header[] = 'HTTP/1.0 304 Not Modified';
       $formatter->send_header($header, $options);
  
  
  
  1.27      +31 -15    moniwiki/plugin/download.php
  
  Index: download.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/download.php,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- download.php	9 Jul 2010 10:51:15 -0000	1.26
  +++ download.php	26 Aug 2010 17:35:24 -0000	1.27
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // download action plugin for the MoniWiki
   //
  -// $Id: download.php,v 1.26 2010/07/09 10:51:15 wkpark Exp $
  +// $Id: download.php,v 1.27 2010/08/26 17:35:24 wkpark Exp $
   //
   function do_download($formatter,$options) {
     global $DBInfo;
  @@ -118,7 +118,7 @@
       //$fname='filename="'.$fn.'"';
     }
   
  -  if ($DBInfo->use_resume_download) {
  +  if (!empty($DBInfo->use_resume_download)) {
       $header=array("Content-Description: MoniWiki PHP Downloader");
       dl_file_resume($mimetype,$dir.'/'. $_l_file,$fname,$down_mode,$header);
       return; 
  @@ -128,13 +128,20 @@
     header("Content-Length: ".filesize($dir.'/'. $_l_file));
     header("Content-Disposition: $down_mode; ".$fname );
     header("Content-Description: MoniWiki PHP Downloader" );
  -  header("Last-Modified: " . gmdate("D, d M Y H:i:s",filemtime($dir.'/'.$_l_file)) . " GMT");
  +  $mtime = filemtime($dir.'/'.$_l_file);
  +  $lastmod = gmdate("D, d M Y H:i:s", $mtime) . ' GMT';
  +  $etag = md5($lastmod);
  +  header("Last-Modified: " . $lastmod);
  +  header('ETag: "'.$etag.'"');
     header("Pragma:");
  -  header("Cache-Control:");
  -  if (!preg_match('/^image\//',$mimetype)) {
  -    Header("Pragma: no-cache");
  -    Header("Cache-Control: no-cache");
  -    Header("Expires: 0");
  +  $maxage = 60*60*24*7;
  +  header('Cache-Control: public, max-age='.$maxage);
  +  $need = http_need_cond_request($lastmod, $etag);
  +  if (!$need) {
  +    header('X-Cache-Debug: Cached OK');
  +    header('HTTP/1.0 304 Not Modified');
  +    @ob_end_clean();
  +    return;
     }
   
     $fp=readfile("$dir/$_l_file");
  @@ -154,7 +161,7 @@
      if ($size == 0) return;
     
      //Begin writing headers
  -   header("Cache-Control:");
  +   //header("Cache-Control:");
      header("Cache-Control: public");
      if (is_array($header)) foreach($header as $h) header($h);
     
  @@ -183,14 +190,23 @@
          header("Content-Disposition: $mode; $fname");
      } else {
          $size2=$size-1;
  +       header("Pragma:");
  +       $maxage = 60*60*24*7;
  +       header('Cache-Control: public, max-age='.$maxage);
          header("Content-Range: bytes 0-$size2/$size");
          header("Content-Length: ".$size);
          header("Content-Disposition: $mode; $fname");
  -       header("Last-Modified: " . gmdate("D, d M Y H:i:s",filemtime($file)) . " GMT");
  -       if (!preg_match('/^image\//',$ctype)) {
  -          Header("Pragma: no-cache");
  -          Header("Cache-Control: no-cache");
  -          Header("Expires: 0");
  +       $mtime = filemtime($file);
  +       $lastmod = gmdate("D, d M Y H:i:s", $mtime) . " GMT";
  +       $etag = md5($lastmod);
  +       header("Last-Modified: " . $lastmod);
  +       header('ETag: "'.$etag.'"');
  +       $need = http_need_cond_request($lastmod, $etag);
  +       if (!$need) {
  +          header('X-Cache-Debug: Cached OK');
  +          header('HTTP/1.0 304 Not Modified');
  +          @ob_end_clean();
  +          return;
          }
      }
      //open the file
  @@ -215,7 +231,7 @@
      }
      fclose($fp);
      //ob_end_flush();
  -   exit;
  +   return;
   }
   
   // vim:et:sts=4:
  
  
  


1282847695;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv7002\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315631] fixed http_need_cond_request() to use $mtime\n\n
1282847695;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv7002/plugin\n\nModified Files:\n	download.php \nLog Message:\n[#315631] fixed http_need_cond_request() to use $mtime\n\n
wkpark      2010/08/27 03:34:56

  Modified:    .        wikilib.php
               plugin   download.php
  Log:
  [#315631] fixed http_need_cond_request() to use $mtime
  
  Revision  Changes    Path
  1.337     +16 -8     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.336
  retrieving revision 1.337
  diff -u -r1.336 -r1.337
  --- wikilib.php	26 Aug 2010 17:35:24 -0000	1.336
  +++ wikilib.php	26 Aug 2010 18:34:55 -0000	1.337
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.336 2010/08/26 17:35:24 wkpark Exp $
  +// $Id: wikilib.php,v 1.337 2010/08/26 18:34:55 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -324,17 +324,19 @@
   
   /**
    * Checks and sets HTTP headers for conditional HTTP requests
  + * slightly modified to set $etag separatly by wkpark@kldp.org
    *
    * @author   Simon Willison <swillison@gmail.com>
    * @link     http://simon.incutio.com/archive/2003/04/23/conditionalGet
    * @param    timestamp $timestamp lastmodified time of the cache file
    * @returns  void or exits with previously header() commands executed
    */
  -function http_need_cond_request($last_modified, $etag = '') {
  +function http_need_cond_request($mtime, $last_modified = '', $etag = '') {
       // A PHP implementation of conditional get, see
       //   http://fishbowl.pastiche.org/archives/001132.html
  -    if (is_numeric($last_modified)) // is it timestamp ?
  -        $last_modified = substr(gmdate('r', $last_modified), 0, -5).'GMT';
  +    if (empty($last_modified)) // is it timestamp ?
  +        $last_modified = substr(gmdate('r', $mtime), 0, -5).'GMT';
  +
       if (empty($etag)) // pseudo etag
           $etag = md5($last_modified);
   
  @@ -343,7 +345,8 @@
   
       // See if the client has provided the required headers
       if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
  -        $if_modified_since = _stripslashes($_SERVER['HTTP_IF_MODIFIED_SINCE']);
  +        // fix broken IEx
  +        $if_modified_since = preg_replace('/;.*$/', '', _stripslashes($_SERVER['HTTP_IF_MODIFIED_SINCE']));
       }else{
           $if_modified_since = false;
       }
  @@ -363,8 +366,12 @@
           return true; // etag is there but doesn't match
       }
   
  -    if ($if_modified_since && $if_modified_since != $last_modified) {
  -        return true; // if-modified-since is there but doesn't match
  +    if ($if_modified_since) {
  +        // calculate time
  +        $mytime = @strtotime( $if_modified_since );
  +        if ( $mtime <= $mytime) {
  +            return true; // if-modified-since is there but doesn't match
  +        }
       }
   
       // Nothing has changed since their last request
  @@ -1597,7 +1604,7 @@
       $header[] = 'Pragma: cache';
       $maxage = 60*60*24*7;
       $header[] = 'Cache-Control: private, max-age='.$maxage;
  -    $need = http_need_cond_request($lastmod, $etag);
  +    $need = http_need_cond_request($mtime, $lastmod, $etag);
       if (!$need)
         $header[] = 'HTTP/1.0 304 Not Modified';
       $formatter->send_header($header, $options);
  @@ -3541,4 +3548,5 @@
     return '<div class="wikiSyntax">'.$highlighted.'</div>';
   }
   
  +// vim:et:sts=4:sw=4:
   ?>
  
  
  
  1.28      +3 -3      moniwiki/plugin/download.php
  
  Index: download.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/download.php,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- download.php	26 Aug 2010 17:35:24 -0000	1.27
  +++ download.php	26 Aug 2010 18:34:55 -0000	1.28
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // download action plugin for the MoniWiki
   //
  -// $Id: download.php,v 1.27 2010/08/26 17:35:24 wkpark Exp $
  +// $Id: download.php,v 1.28 2010/08/26 18:34:55 wkpark Exp $
   //
   function do_download($formatter,$options) {
     global $DBInfo;
  @@ -136,7 +136,7 @@
     header("Pragma:");
     $maxage = 60*60*24*7;
     header('Cache-Control: public, max-age='.$maxage);
  -  $need = http_need_cond_request($lastmod, $etag);
  +  $need = http_need_cond_request($mtime, $lastmod, $etag);
     if (!$need) {
       header('X-Cache-Debug: Cached OK');
       header('HTTP/1.0 304 Not Modified');
  @@ -201,7 +201,7 @@
          $etag = md5($lastmod);
          header("Last-Modified: " . $lastmod);
          header('ETag: "'.$etag.'"');
  -       $need = http_need_cond_request($lastmod, $etag);
  +       $need = http_need_cond_request($mtime, $lastmod, $etag);
          if (!$need) {
             header('X-Cache-Debug: Cached OK');
             header('HTTP/1.0 304 Not Modified');
  
  
  


1282890884;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv9357\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315637] fixed auto-numbering\n\n
wkpark      2010/08/27 15:34:46

  Modified:    .        wikilib.php
  Log:
  [#315637] fixed auto-numbering
  
  Revision  Changes    Path
  1.338     +47 -19    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.337
  retrieving revision 1.338
  diff -u -r1.337 -r1.338
  --- wikilib.php	26 Aug 2010 18:34:55 -0000	1.337
  +++ wikilib.php	27 Aug 2010 06:34:44 -0000	1.338
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.337 2010/08/26 18:34:55 wkpark Exp $
  +// $Id: wikilib.php,v 1.338 2010/08/27 06:34:44 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -3124,6 +3124,7 @@
   
     $text="[$idx&#093;";
     $fnidx="fn".$idx;
  +  $ididx='';
     if ($value[0] == '*') {
       if (isset($value[1]) and $value[1] == '*') {
         # [** http://foobar.com] -> [*]
  @@ -3139,7 +3140,9 @@
             $fnidx = $k;
             $text = $formatter->rfoots[$k];
           } else {
  -          $fnidx = !empty($formatter->rfoots) ? count($formatter->rfoots) + 1 : 1;
  +          // search empty slot
  +          $fnidx = 1;
  +          while (isset($formatter->rfoots[$myidx])) $fnidx++;
             $formatter->rfoots[$fnidx] = $text;
           }
           return "<tt class='foot'><a href='#fn$fnidx'>$text</a></tt>";
  @@ -3161,7 +3164,9 @@
             $fnidx = $k;
             $text = $formatter->rfoots[$k];
           } else {
  -          $fnidx = !empty($formatter->rfoots) ? count($formatter->rfoots) + 1 : 1;
  +          // search empty slot
  +          $fnidx = 1;
  +          while (isset($formatter->rfoots[$myidx])) $fnidx++;
             $formatter->rfoots[$fnidx] = $text;
           }
           return "<tt class='foot'><a href='#fn$fnidx'>$text</a></tt>";
  @@ -3176,34 +3181,49 @@
         $fnidx=substr($text,1);
         $text[0]='[';
         $text=$text.'&#093;'; # make a text as [Alex77]
  +
         if ($value) {
  -        #$formatter->foot_idx--; # undo ++.
  -        if (is_numeric($fnidx)) $fnidx="fn$fnidx";
  +        if (is_numeric($fnidx)) {
  +          $fnidx="fn$fnidx";
  +        }
         } else {
           $formatter->foot_idx--; # undo ++.
           $attr = '';
           // no text given. [*1] => [1], [*-1] => [?] previous refer
           if (empty($fnidx)) { // [*]
  -          $fnidx = !empty($formatter->rfoots) ? count($formatter->rfoots) + 1 : 1;
  -          $text = '['.$fnidx.'&#093';
  -          $formatter->rfoots[$fnidx] = $text;
  -          $fnidx = 'fn'.$fnidx;
  +          // search empty slot
  +          $myidx = 1;
  +          while (isset($formatter->rfoots[$myidx])) $myidx++;
  +
  +          $text = '['.$myidx.'&#093';
  +          $formatter->rfoots[$myidx] = $text;
  +          $fnidx = 'fn'.$myidx;
             // no title attribute given now
             // $attr = " id='r$fnidx'";
  -        } else if (is_numeric($fnidx)) {
  -          if ($fnidx < 0) { // relative reference
  -            $fnidx = $formatter->foot_idx + $fnidx + 1;
  +        } else {
  +          if (is_numeric($fnidx)) {
  +            if ($fnidx < 0) { // relative reference
  +              $fnidx = $formatter->foot_idx + $fnidx + 1;
  +            }
  +          } else {
  +            // search empty slot
  +            $myidx = 1;
  +            while (isset($formatter->rfoots[$myidx])) $myidx++;
  +            $formatter->rfoots[$myidx] = $text;
             }
             if (!empty($formatter->rfoots[$fnidx])) {
               $text = $formatter->rfoots[$fnidx];
               if (preg_match('/\[([^\d\+\*]+)&/', $text, $m)) {
                 $fnidx = $m[1];
  -            } else {
  +            } else if (is_numeric($fnidx)) {
                 $fnidx="fn$fnidx";
               }
             } else {
               $text = '['.$fnidx.'&#093';
  -            $fnidx="fn$fnidx";
  +            $formatter->rfoots[$fnidx] = $text;
  +            if (is_numeric($fnidx)) {
  +              $fnidx="fn$fnidx";
  +            }
             }
           }
           return "<tt class='foot'><a$attr href='#$fnidx'>$text</a></tt>";
  @@ -3215,21 +3235,29 @@
          $text=$dum[0]."&#093;"; # make a text as [Alex77]
          $fnidx=substr($dum[0],1);
          $formatter->foot_idx--; # undo ++.
  -       if (0 === strcmp($fnidx , (int)$fnidx)) $fnidx="fn$fnidx";
  +       if (is_numeric($fnidx)) $fnidx="fn$fnidx";
          $value=$dum[1]; 
       } else if ($dum[0]) {
          $text=$dum[0]."]";
          $fnidx=substr($dum[0],1);
          $formatter->foot_idx--; # undo ++.
  -       if (0 === strcmp($fnidx , (int)$fnidx)) $fnidx="fn$fnidx";
  +       if (is_numeric($fnidx)) $fnidx="fn$fnidx";
          return "<tt class='foot'><a href='#$fnidx'>$text</a></tt>";
       }
     }
  -  $formatter->foots[$formatter->foot_idx]="<li id='$fnidx'><tt class='foot'>".
  -                      "<a href='#r$fnidx'>$text</a></tt> ".
  +
  +  if (($myidx = array_search($text, $formatter->rfoots)) === false) {
  +    // search empty slot
  +    $myidx = 1;
  +    while (isset($formatter->foots[$myidx])) $myidx++;
  +    $ididx=' id="fn'.$myidx.'"';
  +  }
  +
  +  $formatter->foots[$myidx]="<li id='$fnidx'><tt class='foot'>".
  +                      "<a$ididx href='#r$fnidx'>$text</a></tt> ".
                         "$value</li>";
     #if (!empty($formatter->rfoots[$formatter->foot_idx])) return;
  -  $formatter->rfoots[$formatter->foot_idx] = $text;
  +  $formatter->rfoots[$myidx] = $text;
     $tval=strip_tags(str_replace("'","&#39;",$value));
     return "<tt class='foot'>".
       "<a id='r$fnidx' href='#$fnidx' title='$tval'>$text</a></tt>";
  
  
  


1282891609;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv11815\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315637] extract FootNote macro.\n\n
1282891609;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv11815/plugin\n\nAdded Files:\n	FootNote.php \nLog Message:\n[#315637] extract FootNote macro.\n\n
wkpark      2010/08/27 15:46:50

  Modified:    .        wikilib.php
  Added:       plugin   FootNote.php
  Log:
  [#315637] extract FootNote macro.
  
  Revision  Changes    Path
  1.339     +1 -162    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.338
  retrieving revision 1.339
  diff -u -r1.338 -r1.339
  --- wikilib.php	27 Aug 2010 06:34:44 -0000	1.338
  +++ wikilib.php	27 Aug 2010 06:46:49 -0000	1.339
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.338 2010/08/27 06:34:44 wkpark Exp $
  +// $Id: wikilib.php,v 1.339 2010/08/27 06:46:49 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -3102,167 +3102,6 @@
     return "<br class='macro' />\n";
   }
   
  -/**
  - * FootNote macro
  - * *experimental*
  - *
  - */
  -function macro_FootNote(&$formatter,$value="") {
  -  if (!$value) {# emit all footnotes
  -    if (empty($formatter->foots)) return '';
  -    $foots=join("\n",$formatter->foots);
  -    $foots=preg_replace("/(".$formatter->wordrule.")/e","\$formatter->link_repl('\\1')",$foots);
  -    unset($formatter->foots);
  -    unset($formatter->rfoots);
  -    if ($foots)
  -      return "<div class='foot'><div class='separator'><tt class='wiki'>----</tt></div><ul>\n$foots</ul></div>";
  -    return '';
  -  }
  -
  -  $formatter->foot_idx++;
  -  $idx=$formatter->foot_idx;
  -
  -  $text="[$idx&#093;";
  -  $fnidx="fn".$idx;
  -  $ididx='';
  -  if ($value[0] == '*') {
  -    if (isset($value[1]) and $value[1] == '*') {
  -      # [** http://foobar.com] -> [*]
  -      # [*** http://foobar.com] -> [**]
  -      $p=strrpos($value,'*');
  -      $len=strlen(substr($value,1,$p));
  -      $text=str_repeat('*',$len);
  -      $value=substr($value,$p+1);
  -
  -      if (empty($value)) {
  -        $formatter->foot_idx--; # undo ++.
  -        if (($k = array_search($text, $formatter->rfoots)) !== false) {
  -          $fnidx = $k;
  -          $text = $formatter->rfoots[$k];
  -        } else {
  -          // search empty slot
  -          $fnidx = 1;
  -          while (isset($formatter->rfoots[$myidx])) $fnidx++;
  -          $formatter->rfoots[$fnidx] = $text;
  -        }
  -        return "<tt class='foot'><a href='#fn$fnidx'>$text</a></tt>";
  -      }
  -    } else if (isset($value[1]) and $value[1] == '+') {
  -      $dagger=array('','&#x2020;',
  -                    '&#x2020;&#x2020;',
  -                    '&#x2020;&#x2020;&#x2020;',
  -                    '&#x2021;',
  -                    '&#x2021;&#x2021;',
  -                    '&#x2021;&#x2021;&#x2021;');
  -      $p=strrpos($value,'+');
  -      $len=strlen(substr($value,0,$p));
  -      $text=$dagger[$len];
  -      $value=substr($value,$p+1);
  -      if (empty($value)) {
  -        $formatter->foot_idx--; # undo ++.
  -        if (($k = array_search($text, $formatter->rfoots)) !== false) {
  -          $fnidx = $k;
  -          $text = $formatter->rfoots[$k];
  -        } else {
  -          // search empty slot
  -          $fnidx = 1;
  -          while (isset($formatter->rfoots[$myidx])) $fnidx++;
  -          $formatter->rfoots[$fnidx] = $text;
  -        }
  -        return "<tt class='foot'><a href='#fn$fnidx'>$text</a></tt>";
  -      }
  -    } else if (isset($value[1]) and $value[1] == ' ') {
  -      # [* http://c2.com] -> [1]
  -      $value=substr($value,2);
  -    } else {
  -      # [*ward http://c2.com] -> [ward]
  -      $text=strtok($value,' ');
  -      $value=strtok('');
  -      $fnidx=substr($text,1);
  -      $text[0]='[';
  -      $text=$text.'&#093;'; # make a text as [Alex77]
  -
  -      if ($value) {
  -        if (is_numeric($fnidx)) {
  -          $fnidx="fn$fnidx";
  -        }
  -      } else {
  -        $formatter->foot_idx--; # undo ++.
  -        $attr = '';
  -        // no text given. [*1] => [1], [*-1] => [?] previous refer
  -        if (empty($fnidx)) { // [*]
  -          // search empty slot
  -          $myidx = 1;
  -          while (isset($formatter->rfoots[$myidx])) $myidx++;
  -
  -          $text = '['.$myidx.'&#093';
  -          $formatter->rfoots[$myidx] = $text;
  -          $fnidx = 'fn'.$myidx;
  -          // no title attribute given now
  -          // $attr = " id='r$fnidx'";
  -        } else {
  -          if (is_numeric($fnidx)) {
  -            if ($fnidx < 0) { // relative reference
  -              $fnidx = $formatter->foot_idx + $fnidx + 1;
  -            }
  -          } else {
  -            // search empty slot
  -            $myidx = 1;
  -            while (isset($formatter->rfoots[$myidx])) $myidx++;
  -            $formatter->rfoots[$myidx] = $text;
  -          }
  -          if (!empty($formatter->rfoots[$fnidx])) {
  -            $text = $formatter->rfoots[$fnidx];
  -            if (preg_match('/\[([^\d\+\*]+)&/', $text, $m)) {
  -              $fnidx = $m[1];
  -            } else if (is_numeric($fnidx)) {
  -              $fnidx="fn$fnidx";
  -            }
  -          } else {
  -            $text = '['.$fnidx.'&#093';
  -            $formatter->rfoots[$fnidx] = $text;
  -            if (is_numeric($fnidx)) {
  -              $fnidx="fn$fnidx";
  -            }
  -          }
  -        }
  -        return "<tt class='foot'><a$attr href='#$fnidx'>$text</a></tt>";
  -      }
  -    }
  -  } else if ($value[0] == "[") {
  -    $dum=explode("]",$value,2);
  -    if (trim($dum[1])) {
  -       $text=$dum[0]."&#093;"; # make a text as [Alex77]
  -       $fnidx=substr($dum[0],1);
  -       $formatter->foot_idx--; # undo ++.
  -       if (is_numeric($fnidx)) $fnidx="fn$fnidx";
  -       $value=$dum[1]; 
  -    } else if ($dum[0]) {
  -       $text=$dum[0]."]";
  -       $fnidx=substr($dum[0],1);
  -       $formatter->foot_idx--; # undo ++.
  -       if (is_numeric($fnidx)) $fnidx="fn$fnidx";
  -       return "<tt class='foot'><a href='#$fnidx'>$text</a></tt>";
  -    }
  -  }
  -
  -  if (($myidx = array_search($text, $formatter->rfoots)) === false) {
  -    // search empty slot
  -    $myidx = 1;
  -    while (isset($formatter->foots[$myidx])) $myidx++;
  -    $ididx=' id="fn'.$myidx.'"';
  -  }
  -
  -  $formatter->foots[$myidx]="<li id='$fnidx'><tt class='foot'>".
  -                      "<a$ididx href='#r$fnidx'>$text</a></tt> ".
  -                      "$value</li>";
  -  #if (!empty($formatter->rfoots[$formatter->foot_idx])) return;
  -  $formatter->rfoots[$myidx] = $text;
  -  $tval=strip_tags(str_replace("'","&#39;",$value));
  -  return "<tt class='foot'>".
  -    "<a id='r$fnidx' href='#$fnidx' title='$tval'>$text</a></tt>";
  -}
  -
   function macro_TableOfContents(&$formatter,$value="") {
    global $DBInfo;
    static $tocidx = 1; // FIXME
  
  
  
  1.1                  moniwiki/plugin/FootNote.php
  
  Index: FootNote.php
  ===================================================================
  <?php
  // Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // FootNote plugin
  //
  // *experimental*
  //
  // Author: Won-Kyu Park <wkpark@kldp.org>
  // Since: 2003-04-16
  // Name: FootNote macro plugin
  // Description: make footnotes
  // URL: MoniWiki:FootNoteMacro
  // Version: $Revision: 1.1 $
  // License: GPL
  // Usage: [[FootNote(Hello World)]] or [* Hello World]
  //
  // $Id: FootNote.php,v 1.1 2010/08/27 06:46:49 wkpark Exp $
  
  function macro_FootNote(&$formatter, $value = "", $options= array()) {
    if (!$value) {# emit all footnotes
      if (empty($formatter->foots)) return '';
      $foots=join("\n",$formatter->foots);
      $foots=preg_replace("/(".$formatter->wordrule.")/e","\$formatter->link_repl('\\1')",$foots);
      unset($formatter->foots);
      unset($formatter->rfoots);
      if ($foots)
        return "<div class='foot'><div class='separator'><tt class='wiki'>----</tt></div><ul>\n$foots</ul></div>";
      return '';
    }
  
    $formatter->foot_idx++;
    $idx=$formatter->foot_idx;
  
    $text="[$idx&#093;";
    $fnidx="fn".$idx;
    $ididx='';
    if ($value[0] == '*') {
      if (isset($value[1]) and $value[1] == '*') {
        # [** http://foobar.com] -> [*]
        # [*** http://foobar.com] -> [**]
        $p=strrpos($value,'*');
        $len=strlen(substr($value,1,$p));
        $text=str_repeat('*',$len);
        $value=substr($value,$p+1);
  
        if (empty($value)) {
          $formatter->foot_idx--; # undo ++.
          if (($k = array_search($text, $formatter->rfoots)) !== false) {
            $fnidx = $k;
            $text = $formatter->rfoots[$k];
          } else {
            // search empty slot
            $fnidx = 1;
            while (isset($formatter->rfoots[$myidx])) $fnidx++;
            $formatter->rfoots[$fnidx] = $text;
          }
          return "<tt class='foot'><a href='#fn$fnidx'>$text</a></tt>";
        }
      } else if (isset($value[1]) and $value[1] == '+') {
        $dagger=array('','&#x2020;',
                      '&#x2020;&#x2020;',
                      '&#x2020;&#x2020;&#x2020;',
                      '&#x2021;',
                      '&#x2021;&#x2021;',
                      '&#x2021;&#x2021;&#x2021;');
        $p=strrpos($value,'+');
        $len=strlen(substr($value,0,$p));
        $text=$dagger[$len];
        $value=substr($value,$p+1);
        if (empty($value)) {
          $formatter->foot_idx--; # undo ++.
          if (($k = array_search($text, $formatter->rfoots)) !== false) {
            $fnidx = $k;
            $text = $formatter->rfoots[$k];
          } else {
            // search empty slot
            $fnidx = 1;
            while (isset($formatter->rfoots[$myidx])) $fnidx++;
            $formatter->rfoots[$fnidx] = $text;
          }
          return "<tt class='foot'><a href='#fn$fnidx'>$text</a></tt>";
        }
      } else if (isset($value[1]) and $value[1] == ' ') {
        # [* http://c2.com] -> [1]
        $value=substr($value,2);
      } else {
        # [*ward http://c2.com] -> [ward]
        $text=strtok($value,' ');
        $value=strtok('');
        $fnidx=substr($text,1);
        $text[0]='[';
        $text=$text.'&#093;'; # make a text as [Alex77]
  
        if ($value) {
          if (is_numeric($fnidx)) {
            $fnidx="fn$fnidx";
          }
        } else {
          $formatter->foot_idx--; # undo ++.
          $attr = '';
          // no text given. [*1] => [1], [*-1] => [?] previous refer
          if (empty($fnidx)) { // [*]
            // search empty slot
            $myidx = 1;
            while (isset($formatter->rfoots[$myidx])) $myidx++;
  
            $text = '['.$myidx.'&#093';
            $formatter->rfoots[$myidx] = $text;
            $fnidx = 'fn'.$myidx;
            // no title attribute given now
            // $attr = " id='r$fnidx'";
          } else {
            if (is_numeric($fnidx)) {
              if ($fnidx < 0) { // relative reference
                $fnidx = $formatter->foot_idx + $fnidx + 1;
              }
            } else {
              // search empty slot
              $myidx = 1;
              while (isset($formatter->rfoots[$myidx])) $myidx++;
              $formatter->rfoots[$myidx] = $text;
            }
            if (!empty($formatter->rfoots[$fnidx])) {
              $text = $formatter->rfoots[$fnidx];
              if (preg_match('/\[([^\d\+\*]+)&/', $text, $m)) {
                $fnidx = $m[1];
              } else if (is_numeric($fnidx)) {
                $fnidx="fn$fnidx";
              }
            } else {
              $text = '['.$fnidx.'&#093';
              $formatter->rfoots[$fnidx] = $text;
              if (is_numeric($fnidx)) {
                $fnidx="fn$fnidx";
              }
            }
          }
          return "<tt class='foot'><a$attr href='#$fnidx'>$text</a></tt>";
        }
      }
    } else if ($value[0] == "[") {
      $dum=explode("]",$value,2);
      if (trim($dum[1])) {
         $text=$dum[0]."&#093;"; # make a text as [Alex77]
         $fnidx=substr($dum[0],1);
         $formatter->foot_idx--; # undo ++.
         if (is_numeric($fnidx)) $fnidx="fn$fnidx";
         $value=$dum[1]; 
      } else if ($dum[0]) {
         $text=$dum[0]."]";
         $fnidx=substr($dum[0],1);
         $formatter->foot_idx--; # undo ++.
         if (is_numeric($fnidx)) $fnidx="fn$fnidx";
         return "<tt class='foot'><a href='#$fnidx'>$text</a></tt>";
      }
    }
  
    if (empty($formatter->rfoots) or ($myidx = array_search($text, $formatter->rfoots)) === false) {
      // search empty slot
      $myidx = 1;
      while (isset($formatter->foots[$myidx])) $myidx++;
      $ididx=' id="fn'.$myidx.'"';
    }
  
    $formatter->foots[$myidx]="<li id='$fnidx'><tt class='foot'>".
                        "<a$ididx href='#r$fnidx'>$text</a></tt> ".
                        "$value</li>";
    #if (!empty($formatter->rfoots[$formatter->foot_idx])) return;
    $formatter->rfoots[$myidx] = $text;
    $tval=strip_tags(str_replace("'","&#39;",$value));
    return "<tt class='foot'>".
      "<a id='r$fnidx' href='#$fnidx' title='$tval'>$text</a></tt>";
  }
  
  // vim:et:sts=4:sw=4:
  
  
  


1282901418;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv32570\n\nModified Files:\n	FootNote.php \nLog Message:\n[#315637]\n * cleanup and refactoring to support auto-numbering more correctly.\n * fixed dagger footnotes.\n * always wrap symbols (*, dagger) with brackets\n\n
wkpark      2010/08/27 18:30:19

  Modified:    plugin   FootNote.php
  Log:
  [#315637]
   * cleanup and refactoring to support auto-numbering more correctly.
   * fixed dagger footnotes.
   * always wrap symbols (*, dagger) with brackets
  
  Revision  Changes    Path
  1.2       +140 -142  moniwiki/plugin/FootNote.php
  
  Index: FootNote.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FootNote.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- FootNote.php	27 Aug 2010 06:46:49 -0000	1.1
  +++ FootNote.php	27 Aug 2010 09:30:18 -0000	1.2
  @@ -10,166 +10,164 @@
   // Name: FootNote macro plugin
   // Description: make footnotes
   // URL: MoniWiki:FootNoteMacro
  -// Version: $Revision: 1.1 $
  +// Version: $Revision: 1.2 $
   // License: GPL
   // Usage: [[FootNote(Hello World)]] or [* Hello World]
   //
  -// $Id: FootNote.php,v 1.1 2010/08/27 06:46:49 wkpark Exp $
  +// $Id: FootNote.php,v 1.2 2010/08/27 09:30:18 wkpark Exp $
   
   function macro_FootNote(&$formatter, $value = "", $options= array()) {
  -  if (!$value) {# emit all footnotes
  -    if (empty($formatter->foots)) return '';
  -    $foots=join("\n",$formatter->foots);
  -    $foots=preg_replace("/(".$formatter->wordrule.")/e","\$formatter->link_repl('\\1')",$foots);
  -    unset($formatter->foots);
  -    unset($formatter->rfoots);
  -    if ($foots)
  -      return "<div class='foot'><div class='separator'><tt class='wiki'>----</tt></div><ul>\n$foots</ul></div>";
  -    return '';
  -  }
  -
  -  $formatter->foot_idx++;
  -  $idx=$formatter->foot_idx;
  -
  -  $text="[$idx&#093;";
  -  $fnidx="fn".$idx;
  -  $ididx='';
  -  if ($value[0] == '*') {
  -    if (isset($value[1]) and $value[1] == '*') {
  -      # [** http://foobar.com] -> [*]
  -      # [*** http://foobar.com] -> [**]
  -      $p=strrpos($value,'*');
  -      $len=strlen(substr($value,1,$p));
  -      $text=str_repeat('*',$len);
  -      $value=substr($value,$p+1);
  -
  -      if (empty($value)) {
  -        $formatter->foot_idx--; # undo ++.
  -        if (($k = array_search($text, $formatter->rfoots)) !== false) {
  -          $fnidx = $k;
  -          $text = $formatter->rfoots[$k];
  +    if (empty($value)) {# emit all footnotes
  +        if (empty($formatter->foots)) return '';
  +        $foots=join("\n",$formatter->foots);
  +        $foots=preg_replace("/(".$formatter->wordrule.")/e","\$formatter->link_repl('\\1')",$foots);
  +        unset($formatter->foots);
  +        if ($foots)
  +            return "<div class='foot'><div class='separator'><tt class='wiki'>----</tt></div><ul>\n$foots</ul></div>";
  +        return '';
  +    }
  +
  +    $text = $tag = '';
  +    if ($value[0] == '*') {
  +        if (!isset($value[1])) {
  +            // [*] - auto-numbering
  +            $value = '';
  +        } else if ($value[1] == ' ') { // FIXME
  +            // [* http://c2.com] -> [1] - auto-numbering
  +            $value = substr($value, 2);
  +        } else if ($value[1] == '*') {
  +            // star symbols
  +            // [** http://foobar.com] -> [*] // auto-numbering star
  +            // [*** http://foobar.com] -> [**] // manual-numbering star
  +            $p = strrpos($value,'*');
  +            $len = strlen(substr($value, 1, $p));
  +
  +            $tag = str_repeat('*', $len);
  +            $value = substr($value, $p + 1);
  +
  +            $fnref = '';
  +        } else if ($value[1] == '+') {
  +            // dagger symbols
  +            // [*+ http://foobar.com] -> [+] // auto-numbering dagger
  +            // [*++ http://foobar.com] -> [++] // manual-numbering dagger
  +            $dagger = array('&#x2020;', '&#x2021;');
  +            $p = strrpos($value, '+');
  +            $len = strlen(substr($value, 0, $p));
  +
  +            $dag = $len % 2;
  +            if ($len < 4 and $dag != 0) {
  +                $tag = str_repeat($dagger[0], $len);
  +            } else {
  +                $ddag = intval($len / 2);
  +                $tag = str_repeat($dagger[1], $ddag);
  +                $tag.= str_repeat($dagger[0], $dag);
  +            }
  +
  +            $value = substr($value, $p + 1);
  +
  +            $fnref = '';
           } else {
  -          // search empty slot
  -          $fnidx = 1;
  -          while (isset($formatter->rfoots[$myidx])) $fnidx++;
  -          $formatter->rfoots[$fnidx] = $text;
  +            // [*ward http://c2.com] -> [ward] - labeled
  +            // [*3 http://c2.com] -> [3] - manually numbered
  +            $text = strtok($value,' ');
  +            $tag = substr($text, 1);
  +            $value = strtok('');
  +            if (!is_numeric($tag)) $fnref = $tag;
           }
  -        return "<tt class='foot'><a href='#fn$fnidx'>$text</a></tt>";
  -      }
  -    } else if (isset($value[1]) and $value[1] == '+') {
  -      $dagger=array('','&#x2020;',
  -                    '&#x2020;&#x2020;',
  -                    '&#x2020;&#x2020;&#x2020;',
  -                    '&#x2021;',
  -                    '&#x2021;&#x2021;',
  -                    '&#x2021;&#x2021;&#x2021;');
  -      $p=strrpos($value,'+');
  -      $len=strlen(substr($value,0,$p));
  -      $text=$dagger[$len];
  -      $value=substr($value,$p+1);
  -      if (empty($value)) {
  -        $formatter->foot_idx--; # undo ++.
  -        if (($k = array_search($text, $formatter->rfoots)) !== false) {
  -          $fnidx = $k;
  -          $text = $formatter->rfoots[$k];
  +    } else if ($value[0] == '[' and preg_match('/^\[([^\]]+)\](.*)$/', $value, $m)) {
  +        $tag = $m[1];
  +        $value = trim($m[2]);
  +    }
  +
  +    if (empty($value)) {
  +        // no text given
  +        if (empty($tag)) {
  +            // [*] - auto-numbering
  +            // search empty slot
  +            $tagidx = 1;
  +            while (isset($formatter->rfoots[$tagidx])) $tagidx++;
  +
  +            $tag = $tagidx;
  +            $fnref = 'fn'.$tagidx;
  +            // no title attribute given now
  +            // $attr = " id='r$fnidx'";
           } else {
  -          // search empty slot
  -          $fnidx = 1;
  -          while (isset($formatter->rfoots[$myidx])) $fnidx++;
  -          $formatter->rfoots[$fnidx] = $text;
  -        }
  -        return "<tt class='foot'><a href='#fn$fnidx'>$text</a></tt>";
  -      }
  -    } else if (isset($value[1]) and $value[1] == ' ') {
  -      # [* http://c2.com] -> [1]
  -      $value=substr($value,2);
  -    } else {
  -      # [*ward http://c2.com] -> [ward]
  -      $text=strtok($value,' ');
  -      $value=strtok('');
  -      $fnidx=substr($text,1);
  -      $text[0]='[';
  -      $text=$text.'&#093;'; # make a text as [Alex77]
  -
  -      if ($value) {
  -        if (is_numeric($fnidx)) {
  -          $fnidx="fn$fnidx";
  +            // manual number/labeling
  +            // [*1] => [1], [*label] [*-1] => [?] previous refer
  +            if (is_numeric($tag)) {
  +                if ($tag < 0) {
  +                    // XXX relative to max reference number
  +                    if (!empty($formatter->rfoots)) {
  +                        $cur = max(array_keys($formatter->rfoots));
  +                        $tag = $cur + $tag + 1; // -1 => max ref num
  +                    } else { // XXX Error XXX just ignore it
  +                        $tag = abs($tag);
  +                    }
  +                }
  +                $tagidx = $tag;
  +            } else {
  +                // [*label]
  +                // is it already defined footnote ?
  +                if (!empty($formatter->rfoots) and
  +                        ($myidx = array_search($tag, $formatter->rfoots)) !== false)
  +                {
  +                    $tagidx = $myidx;
  +                } else {
  +                    // search empty slot
  +                    $tagidx = 1;
  +                    while (isset($formatter->rfoots[$tagidx])) $tagidx++;
  +                }
  +            }
           }
  -      } else {
  -        $formatter->foot_idx--; # undo ++.
  -        $attr = '';
  -        // no text given. [*1] => [1], [*-1] => [?] previous refer
  -        if (empty($fnidx)) { // [*]
  -          // search empty slot
  -          $myidx = 1;
  -          while (isset($formatter->rfoots[$myidx])) $myidx++;
  -
  -          $text = '['.$myidx.'&#093';
  -          $formatter->rfoots[$myidx] = $text;
  -          $fnidx = 'fn'.$myidx;
  -          // no title attribute given now
  -          // $attr = " id='r$fnidx'";
  +
  +        // already defined ?
  +        if (!empty($formatter->rfoots[$tagidx])) {
  +            $tag = $formatter->rfoots[$tagidx];
  +            $fnref = "fn$tagidx";
  +            if (preg_match('/^[a-zA-Z][a-zA-Z0-9-_]+$/', $tag))
  +                $fnref = $tag;
           } else {
  -          if (is_numeric($fnidx)) {
  -            if ($fnidx < 0) { // relative reference
  -              $fnidx = $formatter->foot_idx + $fnidx + 1;
  -            }
  -          } else {
  -            // search empty slot
  -            $myidx = 1;
  -            while (isset($formatter->rfoots[$myidx])) $myidx++;
  -            $formatter->rfoots[$myidx] = $text;
  -          }
  -          if (!empty($formatter->rfoots[$fnidx])) {
  -            $text = $formatter->rfoots[$fnidx];
  -            if (preg_match('/\[([^\d\+\*]+)&/', $text, $m)) {
  -              $fnidx = $m[1];
  -            } else if (is_numeric($fnidx)) {
  -              $fnidx="fn$fnidx";
  -            }
  -          } else {
  -            $text = '['.$fnidx.'&#093';
  -            $formatter->rfoots[$fnidx] = $text;
  -            if (is_numeric($fnidx)) {
  -              $fnidx="fn$fnidx";
  +            $formatter->rfoots[$tagidx] = $tag;
  +        }
  +
  +        if (!isset($fnref)) {
  +            if (is_numeric($tag)) { // FIXME
  +                $fnref = "fn$tagidx";
  +            } else {
  +                $fnref = $tag;
               }
  -          }
           }
  -        return "<tt class='foot'><a$attr href='#$fnidx'>$text</a></tt>";
  -      }
  +
  +        if (empty($fnref) and !is_numeric($tag))
  +            $fnref = "fn$tagidx";
  +
  +        $text = '['.$tag.'&#093';
  +        return "<tt class='foot'><a href='#$fnref'>$text</a></tt>";
       }
  -  } else if ($value[0] == "[") {
  -    $dum=explode("]",$value,2);
  -    if (trim($dum[1])) {
  -       $text=$dum[0]."&#093;"; # make a text as [Alex77]
  -       $fnidx=substr($dum[0],1);
  -       $formatter->foot_idx--; # undo ++.
  -       if (is_numeric($fnidx)) $fnidx="fn$fnidx";
  -       $value=$dum[1]; 
  -    } else if ($dum[0]) {
  -       $text=$dum[0]."]";
  -       $fnidx=substr($dum[0],1);
  -       $formatter->foot_idx--; # undo ++.
  -       if (is_numeric($fnidx)) $fnidx="fn$fnidx";
  -       return "<tt class='foot'><a href='#$fnidx'>$text</a></tt>";
  +
  +    $ididx = '';
  +    if (empty($tag) or empty($formatter->rfoots) or
  +            ($myidx = array_search($tag, $formatter->rfoots)) === false)
  +    {
  +        // search empty slot
  +        $myidx = 1;
  +        while (isset($formatter->foots[$myidx])) $myidx++;
  +        $ididx = ' id="fn'.$myidx.'"';
       }
  -  }
   
  -  if (empty($formatter->rfoots) or ($myidx = array_search($text, $formatter->rfoots)) === false) {
  -    // search empty slot
  -    $myidx = 1;
  -    while (isset($formatter->foots[$myidx])) $myidx++;
  -    $ididx=' id="fn'.$myidx.'"';
  -  }
  +    if (empty($tag)) $tag = $myidx;
  +    $text = '['.$tag.'&#093';
  +    if (empty($fnref)) $fnref = "fn$myidx";
   
  -  $formatter->foots[$myidx]="<li id='$fnidx'><tt class='foot'>".
  -                      "<a$ididx href='#r$fnidx'>$text</a></tt> ".
  +    $formatter->foots[$myidx] = "<li id='$fnref'><tt class='foot'>".
  +                      "<a$ididx href='#r$fnref'>$text</a></tt> ".
                         "$value</li>";
  -  #if (!empty($formatter->rfoots[$formatter->foot_idx])) return;
  -  $formatter->rfoots[$myidx] = $text;
  -  $tval=strip_tags(str_replace("'","&#39;",$value));
  -  return "<tt class='foot'>".
  -    "<a id='r$fnidx' href='#$fnidx' title='$tval'>$text</a></tt>";
  +
  +    #if (!empty($formatter->rfoots[$myidx])) return '';
  +    $formatter->rfoots[$myidx] = $tag;
  +    $title = strip_tags(str_replace("'", "&#39;", $value));
  +    return "<tt class='foot'>".
  +        "<a id='r$fnref' href='#$fnref' title='$title'>$text</a></tt>";
   }
   
   // vim:et:sts=4:sw=4:
  
  
  


1282907036;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv16170\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315480] revert the change of button tags in r1.274, r1.276\n\n
wkpark      2010/08/27 20:03:56

  Modified:    .        wikilib.php
  Log:
  [#315480] revert the change of button tags in r1.274, r1.276
  
  Revision  Changes    Path
  1.340     +7 -7      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.339
  retrieving revision 1.340
  diff -u -r1.339 -r1.340
  --- wikilib.php	27 Aug 2010 06:46:49 -0000	1.339
  +++ wikilib.php	27 Aug 2010 11:03:56 -0000	1.340
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.339 2010/08/27 06:46:49 wkpark Exp $
  +// $Id: wikilib.php,v 1.340 2010/08/27 11:03:56 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1192,11 +1192,11 @@
     $merge_btn3=_("Ignore conflicts");
     $extra = '';
     if (!empty($options['conflict'])) {
  -    $extra='<button type="submit" name="button_merge" value="1"><span>'.$merge_btn.'</span></button>';
  +    $extra='<span class="button"><input type="submit" class="button" name="button_merge" value="'.$merge_btn.'" /></span>';
       if ($options['conflict']==2) {
  -      $extra.=' <button type="submit" name="manual_merge" value="1"><span>'.$merge_btn2.'</span></button>';
  +      $extra.=' <span class="button"><input type="submit" class="button" name="manual_merge" value="'.$merge_btn2.'" /></span>';
         if ($DBInfo->use_forcemerge)
  -        $extra.=' <button type="submit" name="force_merge" value="1"><span>'.$merge_btn3.'</span></button>';
  +        $extra.=' <span class="button"><input type="submit" class="button" name="force_merge" value="'.$merge_btn3.'" /></span>';
       }
     }
   
  @@ -1327,8 +1327,8 @@
     $wysiwyg_btn = '';
     $skip_preview = '';
     if (empty($options['simple'])) {
  -    $preview_btn='<button type="submit" tabindex="6" name="button_preview" class="preview-button" value="1"><span>'.
  -      _("Preview").'</span></button>';
  +    $preview_btn='<span class="button"><input type="submit" class="button" tabindex="6" name="button_preview" class="preview-button" value="'.
  +      _("Preview").'" /></span>';
       if ($preview)
         $skip_preview= ' '.$formatter->link_to('#preview',_("Skip to preview"),' class="preview-anchor"');
       if (!empty($DBInfo->use_wikiwyg)) {
  @@ -1394,7 +1394,7 @@
   <input type="hidden" name="action" value="$saveaction" />
   <input type="hidden" name="datestamp" value="$datestamp" />
   $hidden
  -<button type="submit" class='save-button' tabindex="5" accesskey="x" ><span>$save_msg</span></button>
  +<span class="button"><input type="submit" class='save-button' tabindex="5" accesskey="x" value="$save_msg" /></span>
   <!-- <input type="reset" value="Reset" />&nbsp; -->
   $preview_btn$wysiwyg_btn$skip_preview
   $extra<span id="save_state"></span>
  
  
  


1282909600;wkpark;Update of /cvsroot/moniwiki/moniwiki-theme/azblue2/css\nIn directory kill.kldp.net:/tmp/cvs-serv26034/css\n\nModified Files:\n	default.css \nLog Message:\nupdate\n\n
1282909670;wkpark;Update of /cvsroot/moniwiki/moniwiki-theme/azblue2\nIn directory kill.kldp.net:/tmp/cvs-serv26182\n\nModified Files:\n	footer.php \nLog Message:\nupdate\n\n
1282970048;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv25342\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315557] use PageIndex method to do_randompage \n\n
wkpark      2010/08/28 13:34:09

  Modified:    .        wikilib.php
  Log:
  [#315557] use PageIndex method to do_randompage
  
  Revision  Changes    Path
  1.341     +15 -2     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.340
  retrieving revision 1.341
  diff -u -r1.340 -r1.341
  --- wikilib.php	27 Aug 2010 11:03:56 -0000	1.340
  +++ wikilib.php	28 Aug 2010 04:34:08 -0000	1.341
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.340 2010/08/27 11:03:56 wkpark Exp $
  +// $Id: wikilib.php,v 1.341 2010/08/28 04:34:08 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2333,7 +2333,20 @@
   
     $max = $DBInfo->getCounter();
     $rand = rand(1,$max);
  -  if (!empty($DBInfo->use_indexer)) {
  +  if (!empty($DBInfo->use_pageindex)) {
  +    // fastest method
  +    require_once('lib/PageIndex.php');
  +    $pgidx = new PageIndex($DBInfo);
  +
  +    $delay = !empty($DBInfo->default_delaytime) ? $DBInfo->default_delaytime : 0;
  +    if ($DBInfo->mtime() > $pgidx->mtime() + $delay) {
  +        // init pagename index db
  +        $pgidx->init();
  +    }
  +
  +    $sel_pages = $pgidx->getPagesByIds(array($rand));
  +    $options['value'] = $sel_pages[0];
  +  } else if (!empty($DBInfo->use_indexer)) {
       require_once("lib/indexer.DBA.php");
       $indexer = new Indexer_DBA('fullsearch', 'r', $DBInfo->dba_type);
       $page = $indexer->_fetch($rand);
  
  
  


1282970265;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv25436\n\nModified Files:\n	wiki.php config.php.default \nLog Message:\n[#315607] $use_fakemtime option added to workaround dir mtime problem.\n\n
wkpark      2010/08/28 13:37:46

  Modified:    .        wiki.php config.php.default
  Log:
  [#315607] $use_fakemtime option added to workaround dir mtime problem.
  
  Revision  Changes    Path
  1.593     +16 -7     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.592
  retrieving revision 1.593
  diff -u -r1.592 -r1.593
  --- wiki.php	26 Aug 2010 04:35:33 -0000	1.592
  +++ wiki.php	28 Aug 2010 04:37:45 -0000	1.593
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.592 2010/08/26 04:35:33 wkpark Exp $
  +// $Id: wiki.php,v 1.593 2010/08/28 04:37:45 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.592 $',1,-1);
  +$_revision = substr('$Revision: 1.593 $',1,-1);
   $_release = '1.1.5-RC5';
   
   #ob_start("ob_gzhandler");
  @@ -658,6 +658,7 @@
       $this->version_class='RCS';
       $this->title_rule='((?<=[a-z0-9]|[B-Z]{2})([A-Z][a-z]))';
       $this->login_strict=1;
  +    $this->use_fakemtime = 0; // dir mtime emulation for FAT filesytem.
   
       # set user-specified configuration
       if (!empty($config)) {
  @@ -808,7 +809,7 @@
         $apc = new Cache_text('aliases');
         $ac = new Cache_text('alias');
         $dir = $ac->cache_dir;
  -      if ($apc->exists('aliases') and filemtime($this->text_dir) < $apc->mtime('aliases')) {
  +      if ($apc->exists('aliases') and $this->mtime() < $apc->mtime('aliases')) {
           $aliases = unserialize($apc->fetch('aliases'));
           break;
         }
  @@ -917,12 +918,20 @@
       return rawurldecode($pagename);
     }
   
  +  function mtime() {
  +    // workaround to check the dir mtime of the text_dir
  +    if ($this->use_fakemtime)
  +      return @filemtime($this->editlog_name);
  +
  +    return @filemtime($this->text_dir);
  +  }
  +
     function getPageLists($options=array()) {
       $pages = array();
   
       $pcid=md5(serialize($options));
       $pc=new Cache_text('pagelist');
  -    if ($pc->exists($pcid) and filemtime($this->text_dir) < $pc->mtime($pcid)) {
  +    if ($pc->exists($pcid) and $this->mtime() < $pc->mtime($pcid)) {
         $list=unserialize($pc->fetch($pcid));
         if (is_array($list)) return $list;
       }
  @@ -1001,7 +1010,7 @@
   
     function getCounter() {
       $pc = new Cache_text('pagelist');
  -    if (filemtime($this->text_dir) < $pc->mtime('counter') and $pc->exists('counter'))
  +    if ($this->mtime() < $pc->mtime('counter') and $pc->exists('counter'))
         return $pc->fetch('counter');
   
       $handle = opendir($this->text_dir);
  @@ -3586,7 +3595,7 @@
       } else {
         # XXX need to redesign pagelink method ?
         if (empty($DBInfo->without_pagelinks_cache)) {
  -        $dmt=filemtime($DBInfo->editlog_name); // workaround to check the dir mtime of the text_dir
  +        $dmt= $DBInfo->mtime();
           $this->update_pagelinks= $dmt > $this->cache->mtime($this->page->name);
           #like as..
           #if (!$this->update_pagelinks) $this->pagelinks=$this->get_pagelinks();
  @@ -5875,7 +5884,7 @@
         $cache= new Cache_text('pages',2,'html');
         $mcache= new Cache_text('dynamicmacros',2);
         $mtime=$cache->mtime($pagename);
  -      $dtime=filemtime($DBInfo->editlog_name); // workaround to check the dir mtime of the text_dir
  +      $dtime= $DBInfo->mtime();
         $now=time();
         $check=$now-$mtime;
         $extra_out='';
  
  
  
  1.63      +7 -3      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.62
  retrieving revision 1.63
  diff -u -r1.62 -r1.63
  --- config.php.default	26 Aug 2010 05:35:21 -0000	1.62
  +++ config.php.default	28 Aug 2010 04:37:45 -0000	1.63
  @@ -1,7 +1,7 @@
   <?php
   # This is a default 
   #
  -# $Id: config.php.default,v 1.62 2010/08/26 05:35:21 wkpark Exp $
  +# $Id: config.php.default,v 1.63 2010/08/28 04:37:45 wkpark Exp $
   #
   $sitename='UnnamedWiki'; # site name
   $data_dir= './data';
  @@ -25,6 +25,7 @@
   $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;
  @@ -272,8 +273,8 @@
   #$use_openid=0; # enable openid login
   #$check_openid_url=0; # selectivly show openid icons: experimental
   #$use_autosave=1; # enable autosave feature.
  -#$delayindex=60*60*24*5 # delayed indexing
  -#$use_bbs=0;
  +#$delayindex=60*60*24*5 # delayed indexing 
  +#$use_bbs=0; # *experimental*
   $robots='googlebot|yahoo'; # set robots
   #$security_class_robot='robot';
   #$url_encodings='euc-kr,uhc'; # autogoto option: search invalid urls with different encodings
  @@ -284,3 +285,6 @@
   #$use_jsbutton=0; # use javascript fake buttons.
   #$use_namespace=0; # support dokuwiki like namespace
   #$rc_strimwidth=20; # witdh param of mb_strimwidth() with the RecentChanges macro
  +#$use_indexer=0; # dynamic update the fulltext.db to use FastSearch plugin
  +#$use_pageindex=0; # pagename indexer for fast RandomPage
  +#$use_delaytime = 60*60*24; # set the default delayed time for caching as 24 hours
  
  
  


1282970496;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv26896\n\nModified Files:\n	wiki.php \nLog Message:\n[#315640] use fopen(.."a") and ftruncate() to overwrite a file\n\n
wkpark      2010/08/28 13:41:37

  Modified:    .        wiki.php
  Log:
  [#315640] use fopen(.."a") and ftruncate() to overwrite a file
  
  Revision  Changes    Path
  1.594     +8 -6      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.593
  retrieving revision 1.594
  diff -u -r1.593 -r1.594
  --- wiki.php	28 Aug 2010 04:37:45 -0000	1.593
  +++ wiki.php	28 Aug 2010 04:41:36 -0000	1.594
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.593 2010/08/28 04:37:45 wkpark Exp $
  +// $Id: wiki.php,v 1.594 2010/08/28 04:41:36 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.593 $',1,-1);
  +$_revision = substr('$Revision: 1.594 $',1,-1);
   $_release = '1.1.5-RC5';
   
   #ob_start("ob_gzhandler");
  @@ -1157,13 +1157,14 @@
         umask($om);
       }
   
  -    $fp=@fopen($filename,"w");
  +    $fp=@fopen($filename,"a+b");
       if (!is_resource($fp))
          return -1;
   
  -    flock($fp,LOCK_EX);
  +    flock($fp, LOCK_EX); // XXX
  +    ftruncate($fp, 0);
       fwrite($fp, $body);
  -    flock($fp,LOCK_UN);
  +    flock($fp, LOCK_UN);
       fclose($fp);
   
       if (!empty($this->version_class)) {
  @@ -1584,9 +1585,10 @@
         _mkdir_p($dir, 0777);
         umask($om);
       }
  -    $fp=fopen($key,"w+");
  +    $fp=fopen($key,"a+b");
       if ($fp) {
         flock($fp,LOCK_EX);
  +      ftruncate($fp, 0);
         fwrite($fp,$val);
         flock($fp,LOCK_UN);
         fclose($fp);
  
  
  


1282979892;wkpark;Update of /cvsroot/moniwiki/moniwiki/lib\nIn directory kill.kldp.net:/tmp/cvs-serv15582/lib\n\nModified Files:\n	PageIndex.php \nLog Message:\n[#315642] prevent possible duplicate job start with a simple fake lock\n\n
1282979893;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv15582\n\nModified Files:\n	wiki.php wikilib.php \nLog Message:\n[#315642] prevent possible duplicate job start with a simple fake lock\n\n
wkpark      2010/08/28 16:18:14

  Modified:    lib      PageIndex.php
               .        wiki.php wikilib.php
  Log:
  [#315642] prevent possible duplicate job start with a simple fake lock
  
  Revision  Changes    Path
  1.3       +13 -3     moniwiki/lib/PageIndex.php
  
  Index: PageIndex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/PageIndex.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- PageIndex.php	16 Aug 2010 10:50:59 -0000	1.2
  +++ PageIndex.php	28 Aug 2010 07:18:12 -0000	1.3
  @@ -23,6 +23,11 @@
           $this->pageidx = $this->cache_dir . '/pageindex.idx';
       }
   
  +    function mtime()
  +    {
  +        return @filemtime($this->pageidx);
  +    }
  +
       function init()
       {
           global $DBInfo;
  @@ -30,25 +35,28 @@
           $dh = opendir($this->text_dir);
           if (!is_resource($dh)) return false;
   
  -        $fidx = fopen($this->pageidx, 'w');
  +        $fidx = fopen($this->pageidx.'.tmp', 'a+b');
           if (!is_resource($fidx)) {
               closedir($dh);
               return false;
           }
  -        $flst = fopen($this->pagelst, 'w');
  +        $flst = fopen($this->pagelst.'.tmp', 'a+b');
           if (!is_resource($flst)) {
               closedir($dh);
               fclose($fidx);
               return false;
           }
   
  +        ftruncate($flist, 0);
  +        ftruncate($fidx, 0);
  +
           $idx_data = '';
           $lst_data = '';
           $counter = 0;
           $fseek = 0;
           $pages = array();
           while(($f = readdir($dh)) !== false) {
  -            if ((($p = strpos($f, '.')) !== false or $f == 'RCS' or $f == 'CVS') and is_dir($f)) continue;
  +            if ((($p = strpos($f, '.')) !== false or $f == 'RCS' or $f == 'CVS') and is_dir($this->text_dir .'/'. $f)) continue;
               $counter++;
   
               $idx_data.= pack('N', $fseek);
  @@ -72,6 +80,8 @@
           fclose($fidx);
           fclose($flst);
           closedir($dh);
  +        rename($this->pagelst.'.tmp', $this->pagelst);
  +        rename($this->pageidx.'.tmp', $this->pageidx);
       }
   
       function getPagesByIds($ids)
  
  
  
  1.595     +18 -4     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.594
  retrieving revision 1.595
  diff -u -r1.594 -r1.595
  --- wiki.php	28 Aug 2010 04:41:36 -0000	1.594
  +++ wiki.php	28 Aug 2010 07:18:12 -0000	1.595
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.594 2010/08/28 04:41:36 wkpark Exp $
  +// $Id: wiki.php,v 1.595 2010/08/28 07:18:12 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.594 $',1,-1);
  +$_revision = substr('$Revision: 1.595 $',1,-1);
   $_release = '1.1.5-RC5';
   
   #ob_start("ob_gzhandler");
  @@ -931,7 +931,10 @@
   
       $pcid=md5(serialize($options));
       $pc=new Cache_text('pagelist');
  -    if ($pc->exists($pcid) and $this->mtime() < $pc->mtime($pcid)) {
  +
  +    $_lock_file = _fake_lock_file($this->vartmp_dir, 'get_page_list', $pcid);
  +    $locked = _fake_locked($_lock_file, $this->mtime());
  +    if ($locked or ($pc->exists($pcid) and $this->mtime() < $pc->mtime($pcid))) {
         $list=unserialize($pc->fetch($pcid));
         if (is_array($list)) return $list;
       }
  @@ -955,6 +958,7 @@
   
       set_time_limit(isset($this->time_limit) ? intval($this->time_limit) : 30);
       if (empty($options)) {
  +      _fake_lock($_lock_file);
         while (($file = readdir($handle)) !== false) {
           if ((($p = strpos($file, '.')) !== false or $file == 'RCS' or $file == 'CVS') and is_dir($this->text_dir.'/'.$file)) continue;
           $pages[] = $this->keyToPagename($file);
  @@ -962,8 +966,10 @@
         closedir($handle);
         $pc->update($pcid,serialize($pages));
         $pc->update('counter', count($pages));
  +      _fake_lock($_lock_file, LOCK_UN);
         return $pages;
       } else if (!empty($options['limit'])) { # XXX
  +       _fake_lock($_lock_file);
          while (($file = readdir($handle)) !== false) {
             if ((($p = strpos($file, '.')) !== false or $file == 'RCS' or $file == 'CVS') and is_dir($this->text_dir.'/'.$file)) continue;
             if (filemtime($this->text_dir."/".$file) > $options['limit'])
  @@ -971,6 +977,7 @@
          }
          closedir($handle);
       } else if (!empty($options['count'])) {
  +       _fake_lock($_lock_file);
          $count=$options['count'];
          while (($file = readdir($handle)) !== false && $count > 0) {
             if ((($p = strpos($file, '.')) !== false or $file == 'RCS' or $file == 'CVS') and is_dir($this->text_dir.'/'.$file)) continue;
  @@ -979,6 +986,7 @@
          }
          closedir($handle);
       } else if ($options['date']) {
  +       _fake_lock($_lock_file);
          while (($file = readdir($handle)) !== false) {
             if ((($p = strpos($file, '.')) !== false or $file == 'RCS' or $file == 'CVS') and is_dir($this->text_dir.'/'.$file)) continue;
             $mtime=filemtime($this->text_dir."/".$file);
  @@ -988,6 +996,7 @@
          closedir($handle);
       }
       $pc->update($pcid,serialize($pages));
  +    _fake_lock($_lock_file, LOCK_UN);
       return $pages;
     }
   
  @@ -1010,9 +1019,13 @@
   
     function getCounter() {
       $pc = new Cache_text('pagelist');
  -    if ($this->mtime() < $pc->mtime('counter') and $pc->exists('counter'))
  +    $_lock_file = _fake_lock_file($this->vartmp_dir, 'get_counter');
  +    $locked = _fake_locked($_lock_file, $this->mtime());
  +
  +    if ($locked or ($this->mtime() < $pc->mtime('counter') and $pc->exists('counter')))
         return $pc->fetch('counter');
   
  +    _fake_lock($_lock_file);
       $handle = opendir($this->text_dir);
       if (!is_resource($handle))
         return 0;
  @@ -1026,6 +1039,7 @@
       closedir($handle);
   
       $pc->update('counter', $count);
  +    _fake_lock($_lock_file, LOCK_UN);
       return $count;
     }
   
  
  
  
  1.342     +38 -4     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.341
  retrieving revision 1.342
  diff -u -r1.341 -r1.342
  --- wikilib.php	28 Aug 2010 04:34:08 -0000	1.341
  +++ wikilib.php	28 Aug 2010 07:18:13 -0000	1.342
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.341 2010/08/28 04:34:08 wkpark Exp $
  +// $Id: wikilib.php,v 1.342 2010/08/28 07:18:13 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -378,6 +378,31 @@
       return false;
   }
   
  +function _fake_lock_file($tmp, $arena, $tag = '') {
  +    $lock = $tmp . '/' . $arena;
  +    if (!empty($tag))
  +        $lock.= $tag;
  +    return $lock . '.lock';
  +}
  +
  +function _fake_locked($lockfile, $mtime = 0, $delay = 1800) {
  +    // prevent not to execute sum job again
  +    $locked = file_exists($lockfile);
  +    // is this lock file too old ?
  +    if ($locked and $mtime > filemtime($lockfile) + $delay) {
  +        @unlink($lockfile);
  +        $locked = false;
  +    }
  +    return $locked;
  +}
  +
  +function _fake_lock($lockfile, $lock = LOCK_EX) {
  +    if ($lock == LOCK_EX)
  +        touch($lockfile);
  +    else
  +        @unlink($lockfile);
  +}
  +
   function get_title($page,$title='') {
     global $DBInfo;
     if (!empty($DBInfo->use_titlecache)) {
  @@ -2339,9 +2364,13 @@
       $pgidx = new PageIndex($DBInfo);
   
       $delay = !empty($DBInfo->default_delaytime) ? $DBInfo->default_delaytime : 0;
  -    if ($DBInfo->mtime() > $pgidx->mtime() + $delay) {
  +    $lock_file = _fake_lock_file($DBInfo->vartmp_dir, 'pageindex');
  +    $locked = _fake_locked($lock_file, $DBInfo->mtime());
  +    if (!$locked and ($DBInfo->mtime() > $pgidx->mtime() + $delay)) {
           // init pagename index db
  +        _fake_lock($lock_file);
           $pgidx->init();
  +        _fake_lock($lock_file, LOCK_UN);
       }
   
       $sel_pages = $pgidx->getPagesByIds(array($rand));
  @@ -2971,8 +3000,11 @@
   
     // cache titleindex
     $kc = new Cache_text('titleindex');
  -  // XXX
  -  if (filemtime($DBInfo->text_dir) < $kc->mtime('key') and $kc->exists('key')) {
  +  $delay = !empty($DBInfo->default_delaytime) ? $DBInfo->default_delaytime : 0;
  +
  +  $lock_file = _fake_lock_file($DBInfo->vartmp_dir, 'titleindex');
  +  $locked = _fake_locked($lock_file, $DBInfo->mtime());
  +  if ($locked or ($DBInfo->mtime() < $kc->mtime('key') + $delay and $kc->exists('key'))) {
       if ($formatter->group) {
         $keys = unserialize($kc->fetch('key.'.$formatter->group));
         $titleindex = unserialize($kc->fetch('titleindex.'.$formatter->group));
  @@ -2986,6 +3018,7 @@
     }
   
     if (empty($all_pages)) {
  +    _fake_lock($lock_file);
       $all_pages = array();
       if ($formatter->group) {
         $group_pages = $DBInfo->getLikePages($formatter->group);
  @@ -3038,6 +3071,7 @@
   
       if (!empty($sel) and isset($titleindex[$sel]))
         $all_pages = $titleindex[$sel];
  +    _fake_lock($lock_file, LOCK_UN);
     }
   
     $pnut = null;
  
  
  


1282982491;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv19827\n\nModified Files:\n	wiki.php wikilib.php \nLog Message:\n[#315642] fixed last change\n\n
wkpark      2010/08/28 17:01:32

  Modified:    .        wiki.php wikilib.php
  Log:
  [#315642] fixed last change
  
  Revision  Changes    Path
  1.596     +3 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.595
  retrieving revision 1.596
  diff -u -r1.595 -r1.596
  --- wiki.php	28 Aug 2010 07:18:12 -0000	1.595
  +++ wiki.php	28 Aug 2010 08:01:31 -0000	1.596
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.595 2010/08/28 07:18:12 wkpark Exp $
  +// $Id: wiki.php,v 1.596 2010/08/28 08:01:31 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.595 $',1,-1);
  +$_revision = substr('$Revision: 1.596 $',1,-1);
   $_release = '1.1.5-RC5';
   
   #ob_start("ob_gzhandler");
  @@ -937,6 +937,7 @@
       if ($locked or ($pc->exists($pcid) and $this->mtime() < $pc->mtime($pcid))) {
         $list=unserialize($pc->fetch($pcid));
         if (is_array($list)) return $list;
  +      if ($locked) return array();
       }
   
       if (0 and !empty($this->use_indexer)) {
  
  
  
  1.343     +6 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.342
  retrieving revision 1.343
  diff -u -r1.342 -r1.343
  --- wikilib.php	28 Aug 2010 07:18:13 -0000	1.342
  +++ wikilib.php	28 Aug 2010 08:01:31 -0000	1.343
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.342 2010/08/28 07:18:13 wkpark Exp $
  +// $Id: wikilib.php,v 1.343 2010/08/28 08:01:31 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -3015,10 +3015,13 @@
       if (!empty($sel) and isset($titleindex[$sel])) {
         $all_pages = $titleindex[$sel];
       }
  +    if (empty($titleindex) and $locked) {
  +      // no cache found
  +      return _("Please wait...");
  +    }
     }
   
     if (empty($all_pages)) {
  -    _fake_lock($lock_file);
       $all_pages = array();
       if ($formatter->group) {
         $group_pages = $DBInfo->getLikePages($formatter->group);
  @@ -3037,6 +3040,7 @@
     }
   
     if (empty($keys) or empty($titleindex)) {
  +    _fake_lock($lock_file);
       foreach ($all_pages as $page=>$rpage) {
         $p = ltrim($page);
         $pkey = get_key("$p");
  
  
  


1282982553;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv19881/plugin\n\nModified Files:\n	FullSearch.php \nLog Message:\n[#315607] use $DBInfo->mtime()\n\n
wkpark      2010/08/28 17:02:33

  Modified:    plugin   FullSearch.php
  Log:
  [#315607] use $DBInfo->mtime()
  
  Revision  Changes    Path
  1.38      +2 -2      moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- FullSearch.php	18 Aug 2010 18:24:24 -0000	1.37
  +++ FullSearch.php	28 Aug 2010 08:02:32 -0000	1.38
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
   //
  -// $Id: FullSearch.php,v 1.37 2010/08/18 18:24:24 wkpark Exp $
  +// $Id: FullSearch.php,v 1.38 2010/08/28 08:02:32 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
  @@ -165,7 +165,7 @@
         $cmt=$fc->mtime($sid);
   
         # check update or not
  -      $dmt=filemtime($DBInfo->text_dir.'/.');
  +      $dmt= $DBInfo->mtime();
         if ($dmt > $cmt) { # XXX crude method
           $data=array();
         } else { # XXX smart but incomplete method
  
  
  


1282988177;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv2549\n\nModified Files:\n	wiki.php \nLog Message:\nfixed minor bug\n\n
wkpark      2010/08/28 18:36:17

  Modified:    .        wiki.php
  Log:
  fixed minor bug
  
  Revision  Changes    Path
  1.597     +4 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.596
  retrieving revision 1.597
  diff -u -r1.596 -r1.597
  --- wiki.php	28 Aug 2010 08:01:31 -0000	1.596
  +++ wiki.php	28 Aug 2010 09:36:17 -0000	1.597
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.596 2010/08/28 08:01:31 wkpark Exp $
  +// $Id: wiki.php,v 1.597 2010/08/28 09:36:17 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.596 $',1,-1);
  +$_revision = substr('$Revision: 1.597 $',1,-1);
   $_release = '1.1.5-RC5';
   
   #ob_start("ob_gzhandler");
  @@ -2439,6 +2439,8 @@
         $url=substr($url,2,-2);
         return $this->macro_repl($url); # No link
       case '[':
  +      $bra.='[';
  +      $ket.=']';
         $url=substr($url,1,-1);
         $double_bracket = true;
   
  
  
  


1283000717;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv29264\n\nModified Files:\n	wiki.php wikilib.php \nLog Message:\n[#315622] support more than 6th heading mark for MoinMoin compatible\n\n
1283000717;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin/processor\nIn directory kill.kldp.net:/tmp/cvs-serv29264/plugin/processor\n\nModified Files:\n	monimarkup.php \nLog Message:\n[#315622] support more than 6th heading mark for MoinMoin compatible\n\n
1283000718;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin/function\nIn directory kill.kldp.net:/tmp/cvs-serv29264/plugin/function\n\nModified Files:\n	toc.php \nLog Message:\n[#315622] support more than 6th heading mark for MoinMoin compatible\n\n
wkpark      2010/08/28 22:05:18

  Modified:    .        wiki.php wikilib.php
               plugin/processor monimarkup.php
               plugin/function toc.php
  Log:
  [#315622] support more than 6th heading mark for MoinMoin compatible
  
  Revision  Changes    Path
  1.598     +15 -5     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.597
  retrieving revision 1.598
  diff -u -r1.597 -r1.598
  --- wiki.php	28 Aug 2010 09:36:17 -0000	1.597
  +++ wiki.php	28 Aug 2010 13:05:17 -0000	1.598
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.597 2010/08/28 09:36:17 wkpark Exp $
  +// $Id: wiki.php,v 1.598 2010/08/28 13:05:17 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.597 $',1,-1);
  +$_revision = substr('$Revision: 1.598 $',1,-1);
   $_release = '1.1.5-RC5';
   
   #ob_start("ob_gzhandler");
  @@ -2961,7 +2961,7 @@
     }
   
     function head_repl($depth,$head,&$headinfo,$attr='') {
  -    $dep=$depth;
  +    $dep=$depth < 6 ? $depth : 5;
       $this->nobr=1;
   
       if ($headinfo == null)
  @@ -4052,7 +4052,7 @@
         #$line=preg_replace("/(".$wordrule.")/e","\$this->link_repl('\\1')",$line);
   
         # Headings
  -      if (preg_match("/(?<!=)(={1,5})\s+(.*)\s+\\1\s?$/",$line,$m)) {
  +      if (preg_match("/(?<!=)(={1,})\s+(.*)\s+\\1\s?$/",$line,$m)) {
           $this->sect_num++;
           if ($p_closeopen) { // ignore last open
             $p_closeopen='';
  @@ -4146,8 +4146,18 @@
   
            if ($processor and !$show_raw) {
              $value=&$this->pre_line;
  -           if ($processor == 'wiki') $processor = 'monimarkup';
  +           if ($processor == 'wiki') {
  +             $processor = 'monimarkup';
  +             if (isset($options['notoc']))
  +               $save_toc = $options['notoc'];
  +             $options['notoc'] = 1;
  +           }
              $out= $this->processor_repl($processor,$value,$options);
  +           if (isset($save_toc)) {
  +             // do not shoe edit section link in the processor mode
  +             $options['notoc'] = $save_toc;
  +             unset($save_toc);
  +           }
              #if ($this->wikimarkup)
              #  $line='<div class="wikiMarkup">'."<!-- wiki:\n{{{".
              #    $value."}}}\n-->$out</div>";
  
  
  
  1.344     +6 -4      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.343
  retrieving revision 1.344
  diff -u -r1.343 -r1.344
  --- wikilib.php	28 Aug 2010 08:01:31 -0000	1.343
  +++ wikilib.php	28 Aug 2010 13:05:17 -0000	1.344
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.343 2010/08/28 08:01:31 wkpark Exp $
  +// $Id: wikilib.php,v 1.344 2010/08/28 13:05:17 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1139,7 +1139,8 @@
   
     $sects=array();
     $sects[]='';
  -  if ($lim > 1 and $lim < 6) $lim=','.$lim;
  +  if ($lim > 1 and $lim < 5) $lim=','.$lim;
  +  else if ($lim == 5) $lim = ',';
     else $lim='';
     for ($jj=0,$ii=0,$ss=count($chunks); $ii<$ss; $ii++) {
       if (($ii%2)) {
  @@ -3165,7 +3166,7 @@
    if (!empty($DBInfo->toc_options))
      $value=$DBInfo->toc_options.','.$value;
    $toctoggle=!empty($DBInfo->use_toctoggle) ? $DBInfo->use_toctoggle : '';
  - $secdep=5;
  + $secdep = '';
    $prefix = '';
   
    while($value) {
  @@ -3182,7 +3183,7 @@
      } else if ($key=='toggle') {
        $toctoggle=strtok('');
        if ($toctoggle=='') $toctoggle=1;
  -   } else if ($arg == (int) $arg and $arg > 0) {
  +   } else if (is_numeric($arg) and $arg > 0 and $arg < 5) {
        $secdep=$arg;
      } else if ($arg) {
        $value=$value ? $arg.','.$value:$arg;
  @@ -3228,6 +3229,7 @@
      if (!$match) continue;
   
      $dep=strlen($match[1]);
  +   if ($dep > 4) $dep = 5;
      $head=str_replace("<","&lt;",$match[3]);
      # strip some basic wikitags
      # $formatter->baserepl,$head);
  
  
  
  1.33      +3 -3      moniwiki/plugin/processor/monimarkup.php
  
  Index: monimarkup.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/monimarkup.php,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- monimarkup.php	24 Aug 2010 11:55:38 -0000	1.32
  +++ monimarkup.php	28 Aug 2010 13:05:17 -0000	1.33
  @@ -3,12 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a moniwiki formatting processor for the MoniWiki
   //
  -// $Id: monimarkup.php,v 1.32 2010/08/24 11:55:38 wkpark Exp $
  +// $Id: monimarkup.php,v 1.33 2010/08/28 13:05:17 wkpark Exp $
   /**
    * @date    2006-08-09
    * @name    Moniwiki Processor
    * @desc    Moniwiki default processor
  - * @version $Revision: 1.32 $
  + * @version $Revision: 1.33 $
    * @depend  1.1.3
    * @license GPL
    */
  @@ -170,7 +170,7 @@
                   }
                   continue;
               }
  -            if (preg_match("/^([ ]*(={1,5})\s(.*\s*)\s\\2\s?)$/",$line,$m)) {
  +            if (preg_match("/^([ ]*(={1,})\s(.*\s*)\s\\2\s?)$/",$line,$m)) {
                   $tag='HEAD';
                   $depth=strlen($m[2]);
                   if ($oline)
  
  
  
  1.3       +4 -3      moniwiki/plugin/function/toc.php
  
  Index: toc.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/function/toc.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- toc.php	10 Dec 2008 10:00:57 -0000	1.2
  +++ toc.php	28 Aug 2010 13:05:17 -0000	1.3
  @@ -8,15 +8,15 @@
   // Name: TableOfContent function
   // Description: TableOfContent function
   // URL: MoniWiki:FunctionPlugin
  -// Version: $Revision: 1.2 $
  +// Version: $Revision: 1.3 $
   // License: GPL
   //
   // Usage: $toc = function_toc($formatter);
   //
  -// $Id: toc.php,v 1.2 2008/12/10 10:00:57 wkpark Exp $
  +// $Id: toc.php,v 1.3 2010/08/28 13:05:17 wkpark Exp $
   
   function function_toc($formatter) {
  -    $secdep = 6;
  +    $secdep = '';
       $simple = 1;
   
       $head_num=1;
  @@ -32,6 +32,7 @@
           if (!$match) continue;
   
           $dep=strlen($match[1]);
  +        if ($dep > 4) $dep = 5;
           $head=str_replace("<","&lt;",$match[3]);
           # strip some basic wikitags
           # $formatter->baserepl,$head);
  
  
  


1283014967;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv31975/plugin\n\nModified Files:\n	FootNote.php \nLog Message:\n[#315637] renumber manully numbered footnote if it already exists. ([*1 foobar...] but if [1] was already defined)\n\n
wkpark      2010/08/29 02:02:48

  Modified:    plugin   FootNote.php
  Log:
  [#315637] renumber manully numbered footnote if it already exists. ([*1 foobar...] but if [1] was already defined)
  
  Revision  Changes    Path
  1.3       +19 -8     moniwiki/plugin/FootNote.php
  
  Index: FootNote.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FootNote.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- FootNote.php	27 Aug 2010 09:30:18 -0000	1.2
  +++ FootNote.php	28 Aug 2010 17:02:47 -0000	1.3
  @@ -10,18 +10,23 @@
   // Name: FootNote macro plugin
   // Description: make footnotes
   // URL: MoniWiki:FootNoteMacro
  -// Version: $Revision: 1.2 $
  +// Version: $Revision: 1.3 $
   // License: GPL
   // Usage: [[FootNote(Hello World)]] or [* Hello World]
   //
  -// $Id: FootNote.php,v 1.2 2010/08/27 09:30:18 wkpark Exp $
  +// $Id: FootNote.php,v 1.3 2010/08/28 17:02:47 wkpark Exp $
   
   function macro_FootNote(&$formatter, $value = "", $options= array()) {
  +    if (empty($formatter->foot_offset))
  +        $formatter->foot_offset = 0;
       if (empty($value)) {# emit all footnotes
           if (empty($formatter->foots)) return '';
  -        $foots=join("\n",$formatter->foots);
  +        $foots = array_slice($formatter->foots, $formatter->foot_offset);
  +        //asort($foots);
  +        $foots = join("\n", $foots);
  +        $formatter->foot_offset = max(array_keys($formatter->foots));
           $foots=preg_replace("/(".$formatter->wordrule.")/e","\$formatter->link_repl('\\1')",$foots);
  -        unset($formatter->foots);
  +        //unset($formatter->foots);
           if ($foots)
               return "<div class='foot'><div class='separator'><tt class='wiki'>----</tt></div><ul>\n$foots</ul></div>";
           return '';
  @@ -84,7 +89,7 @@
           if (empty($tag)) {
               // [*] - auto-numbering
               // search empty slot
  -            $tagidx = 1;
  +            $tagidx = $formatter->tag_offset + 1;
               while (isset($formatter->rfoots[$tagidx])) $tagidx++;
   
               $tag = $tagidx;
  @@ -114,8 +119,9 @@
                       $tagidx = $myidx;
                   } else {
                       // search empty slot
  -                    $tagidx = 1;
  +                    $tagidx = $formatter->tag_offset + 1;
                       while (isset($formatter->rfoots[$tagidx])) $tagidx++;
  +                    //$tagidx = $tag;
                   }
               }
           }
  @@ -123,7 +129,8 @@
           // already defined ?
           if (!empty($formatter->rfoots[$tagidx])) {
               $tag = $formatter->rfoots[$tagidx];
  -            $fnref = "fn$tagidx";
  +            if (is_numeric($tagidx))
  +                $fnref = "fn$tagidx";
               if (preg_match('/^[a-zA-Z][a-zA-Z0-9-_]+$/', $tag))
                   $fnref = $tag;
           } else {
  @@ -146,11 +153,15 @@
       }
   
       $ididx = '';
  +    if (!empty($tag) and is_numeric($tag) and isset($formatter->foots[$tag])) {
  +        // oops!! it is already defined tag
  +        $tag = ''; // reset
  +    }
       if (empty($tag) or empty($formatter->rfoots) or
               ($myidx = array_search($tag, $formatter->rfoots)) === false)
       {
           // search empty slot
  -        $myidx = 1;
  +        $myidx = $formatter->foot_offset + 1;
           while (isset($formatter->foots[$myidx])) $myidx++;
           $ididx = ' id="fn'.$myidx.'"';
       }
  
  
  


1283024193;wkpark;Update of /cvsroot/moniwiki/moniwiki-theme/azblue2\nIn directory kill.kldp.net:/tmp/cvs-serv28338\n\nModified Files:\n	header.php \nLog Message:\n[#315496] fixed to show sidebar correctly\n\n
1283024193;wkpark;Update of /cvsroot/moniwiki/moniwiki-theme/azblue2/css\nIn directory kill.kldp.net:/tmp/cvs-serv28338/css\n\nModified Files:\n	default.css \nLog Message:\n[#315496] fixed to show sidebar correctly\n\n
1283099552;wkpark;Update of /cvsroot/moniwiki/moniwiki-theme/azblue2\nIn directory kill.kldp.net:/tmp/cvs-serv25730\n\nModified Files:\n	header.php theme.php \nLog Message:\n[#315496] IE6 fix and css tune up\n\n
1283099552;wkpark;Update of /cvsroot/moniwiki/moniwiki-theme/azblue2/css\nIn directory kill.kldp.net:/tmp/cvs-serv25730/css\n\nModified Files:\n	default.css \nLog Message:\n[#315496] IE6 fix and css tune up\n\n
1283099552;wkpark;Update of /cvsroot/moniwiki/moniwiki-theme/azblue2/imgs\nIn directory kill.kldp.net:/tmp/cvs-serv25730/imgs\n\nModified Files:\n	toggle.png \nAdded Files:\n	bg_sidemenu.png \nLog Message:\n[#315496] IE6 fix and css tune up\n\n
1283100689;wkpark;Update of /cvsroot/moniwiki/moniwiki-theme/azblue2/imgs\nIn directory kill.kldp.net:/tmp/cvs-serv28125/imgs\n\nModified Files:\n	toggle.png \nLog Message:\nupdate\n\n
1283142456;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv1879/plugin\n\nModified Files:\n	RecentChanges.php bookmark.php \nLog Message:\n[#315646] fix to use bookmarking with recentchanges action\n\n
wkpark      2010/08/30 13:27:37

  Modified:    plugin   RecentChanges.php bookmark.php
  Log:
  [#315646] fix to use bookmarking with recentchanges action
  
  Revision  Changes    Path
  1.50      +17 -4     moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.49
  retrieving revision 1.50
  diff -u -r1.49 -r1.50
  --- RecentChanges.php	26 Aug 2010 05:35:21 -0000	1.49
  +++ RecentChanges.php	30 Aug 2010 04:27:36 -0000	1.50
  @@ -3,7 +3,14 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RecentChanges plugin for the MoniWiki
   //
  -// $Id: RecentChanges.php,v 1.49 2010/08/26 05:35:21 wkpark Exp $
  +// Since: 2003-08-09
  +// Name: RecentChanges
  +// Description: Show RecentChanges of the Wiki
  +// URL: MoniWiki:RecentChangesPlugin
  +// Version: $Revision: 1.50 $
  +// Depend: 1.1.3
  +// License: GPL
  +// $Id: RecentChanges.php,v 1.50 2010/08/30 04:27:36 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     global $DBInfo;
  @@ -21,9 +28,14 @@
     } else {
       $arg = 'board,comment,timesago,item=20';
     }
  +  if (!empty($options['time']))
  +    $formatter->macro_repl('bookmark', '', $options);
  +
     $formatter->send_header('',$options);
     $formatter->send_title('', '', $options);
  +  $options['myaction'] = 'recentchanges';
     echo macro_RecentChanges($formatter, $arg, $options);
  +
     $formatter->send_footer('',$options);
     return;
   }
  @@ -67,6 +79,7 @@
   
     $target = '';
     if (!empty($options['target'])) $target="target='$options[target]'";
  +  $bookmark_action = empty($options['action']) ? '?action=bookmark' : '?action=' . $options['action'];
   
     // $date_fmt='D d M Y';
     $date_fmt=$DBInfo->date_fmt_rc;
  @@ -292,17 +305,17 @@
               $br, $rcdate);
           if (empty($nobookmark))
             $out.="<span class='rc-bookmark' style='font-size:small'>[".
  -            $formatter->link_tag($formatter->page->urlname,"?action=bookmark&amp;time=$ed_time".$daysago,
  +            $formatter->link_tag($formatter->page->urlname, $bookmark_action ."&amp;time=$ed_time".$daysago,
               _("set bookmark"))."]</span>\n";
           $br="<br />";
           $out.='</span>'.$perma.'<br />'.$bra;
           $cat0=$cat;
         } else {
  -        $bmark=$formatter->link_to("?action=bookmark&amp;time=$ed_time".$daysago,_("Bookmark"), 'class="button-small"');
  +        $bmark=$formatter->link_to($bookmark_action ."&amp;time=$ed_time".$daysago,_("Bookmark"), 'class="button-small"');
         }
       }
       if (empty($use_day)) {
  -      $date=$formatter->link_to("?action=bookmark&amp;time=$ed_time".$daysago,$date);
  +      $date=$formatter->link_to($bookmark_action ."&amp;time=$ed_time".$daysago,$date);
       }
   
       $pageurl=_rawurlencode($page_name);
  
  
  
  1.9       +14 -7     moniwiki/plugin/bookmark.php
  
  Index: bookmark.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/bookmark.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- bookmark.php	10 Jul 2010 10:53:51 -0000	1.8
  +++ bookmark.php	30 Aug 2010 04:27:36 -0000	1.9
  @@ -1,23 +1,24 @@
   <?php
  -// Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
  +// Copyright 2003 2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a bookmark action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: bookmark.php,v 1.8 2010/07/10 10:53:51 wkpark Exp $
  +// $Id: bookmark.php,v 1.9 2010/08/30 04:27:36 wkpark Exp $
   
  -function do_bookmark($formatter,$options) {
  +// internal use only
  +function macro_bookmark($formatter, $value = '', &$options) {
     global $DBInfo;
     global $_COOKIE;
   
  -  $user=&$DBInfo->user; # get cookie
  +  $user = &$DBInfo->user; # get cookie
   
     if (!$options['time']) {
  -     $bookmark=time();
  +     $bookmark = time();
     } else {
  -     $bookmark=$options['time'];
  +     $bookmark = $options['time'];
     }
  -  if (0 === strcmp($bookmark , (int)$bookmark)) {
  +  if (is_numeric($bookmark)) {
       if ($user->id == "Anonymous") {
         setcookie("MONI_BOOKMARK",$bookmark,time()+60*60*24*30,get_scriptname());
         # set the fake cookie
  @@ -31,6 +32,12 @@
       }
     } else
       $options['msg']=_("Invalid bookmark!");
  +  
  +  return '';
  +}
  +
  +function do_bookmark($formatter,$options) {
  +  $formatter->macro_repl('BookMark', '', $options);
     $formatter->send_header("",$options);
     $formatter->send_title($title,"",$options);
     if (empty($DBInfo->control_read) or $DBInfo->security->is_allowed('read',$options)) {
  
  
  


1283224218;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv2140\n\nModified Files:\n	RecentChanges.php bookmark.php \nLog Message:\n[#315646] return messages correctly\n\n
wkpark      2010/08/31 12:10:19

  Modified:    plugin   RecentChanges.php bookmark.php
  Log:
  [#315646] return messages correctly
  
  Revision  Changes    Path
  1.51      +8 -3      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.50
  retrieving revision 1.51
  diff -u -r1.50 -r1.51
  --- RecentChanges.php	30 Aug 2010 04:27:36 -0000	1.50
  +++ RecentChanges.php	31 Aug 2010 03:10:18 -0000	1.51
  @@ -7,10 +7,10 @@
   // Name: RecentChanges
   // Description: Show RecentChanges of the Wiki
   // URL: MoniWiki:RecentChangesPlugin
  -// Version: $Revision: 1.50 $
  +// Version: $Revision: 1.51 $
   // Depend: 1.1.3
   // License: GPL
  -// $Id: RecentChanges.php,v 1.50 2010/08/30 04:27:36 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.51 2010/08/31 03:10:18 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     global $DBInfo;
  @@ -28,8 +28,13 @@
     } else {
       $arg = 'board,comment,timesago,item=20';
     }
  -  if (!empty($options['time']))
  +  if (!empty($options['time'])) {
  +    $ret = array();
  +    $options['ret'] = &$ret;
       $formatter->macro_repl('bookmark', '', $options);
  +    if (!empty($ret))
  +      $options = array_merge($options, $ret);
  +  }
   
     $formatter->send_header('',$options);
     $formatter->send_title('', '', $options);
  
  
  
  1.10      +14 -6     moniwiki/plugin/bookmark.php
  
  Index: bookmark.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/bookmark.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- bookmark.php	30 Aug 2010 04:27:36 -0000	1.9
  +++ bookmark.php	31 Aug 2010 03:10:18 -0000	1.10
  @@ -4,7 +4,7 @@
   // a bookmark action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: bookmark.php,v 1.9 2010/08/30 04:27:36 wkpark Exp $
  +// $Id: bookmark.php,v 1.10 2010/08/31 03:10:18 wkpark Exp $
   
   // internal use only
   function macro_bookmark($formatter, $value = '', &$options) {
  @@ -18,28 +18,36 @@
     } else {
        $bookmark = $options['time'];
     }
  +  $ret = array();
     if (is_numeric($bookmark)) {
       if ($user->id == "Anonymous") {
         setcookie("MONI_BOOKMARK",$bookmark,time()+60*60*24*30,get_scriptname());
         # set the fake cookie
         $_COOKIE['MONI_BOOKMARK']=$bookmark;
         $user->bookmark=$bookmark;
  -      $title = _('Bookmark Changed');
  +      $ret['title'] = _('Bookmark Changed');
       } else {
         $user->info['bookmark']=$bookmark;
         $DBInfo->udb->saveUser($user);
  -      $title = _('Bookmark Changed');
  +      $ret['title'] = _('Bookmark Changed');
       }
     } else
  -    $options['msg']=_("Invalid bookmark!");
  +    $ret['msg']=_("Invalid bookmark!");
  +
  +  if (isset($options['ret']))
  +    $options['ret'] = $ret;
     
     return '';
   }
   
   function do_bookmark($formatter,$options) {
  -  $formatter->macro_repl('BookMark', '', $options);
  +  $ret = array();
  +  $options['ret'] = &$ret;
  +  $formatter->macro_repl('Bookmark', '', $options);
  +  if (!empty($ret))
  +    $options = array_merge($options, $ret);
     $formatter->send_header("",$options);
  -  $formatter->send_title($title,"",$options);
  +  $formatter->send_title('', "",$options);
     if (empty($DBInfo->control_read) or $DBInfo->security->is_allowed('read',$options)) {
       $formatter->send_page();
     }
  
  
  


1283230258;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv18387\n\nModified Files:\n	wiki.php \nLog Message:\n[#315647] check edit permission to hide section edit links correctly\n\n
wkpark      2010/08/31 13:50:59

  Modified:    .        wiki.php
  Log:
  [#315647] check edit permission to hide section edit links correctly
  
  Revision  Changes    Path
  1.599     +8 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.598
  retrieving revision 1.599
  diff -u -r1.598 -r1.599
  --- wiki.php	28 Aug 2010 13:05:17 -0000	1.598
  +++ wiki.php	31 Aug 2010 04:50:58 -0000	1.599
  @@ -11,10 +11,10 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.598 2010/08/28 13:05:17 wkpark Exp $
  +// $Id: wiki.php,v 1.599 2010/08/31 04:50:58 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.598 $',1,-1);
  -$_release = '1.1.5-RC5';
  +$_revision = substr('$Revision: 1.599 $',1,-1);
  +$_release = '1.1.5';
   
   #ob_start("ob_gzhandler");
   
  @@ -3727,6 +3727,10 @@
         $headinfo['dep'] = 0;
       }
   
  +    $is_writable = 1;
  +    if (!$DBInfo->security->writable($options))
  +      $is_writable = 0;
  +
       $text='';
       $in_p='';
       $in_div=0;
  @@ -4064,7 +4068,7 @@
           $p_closeopen.=$this->_div(1,$in_div,$div_enclose);
           $in_p='';
           $edit = ''; $anchor = '';
  -        if ($this->section_edit && empty($this->preview)) {
  +        if ($is_writable && $this->section_edit && empty($this->preview)) {
             $act='edit';
   
             $wikiwyg_mode='';
  
  
  


1283230446;wkpark;Update of /cvsroot/moniwiki/moniwiki/css\nIn directory kill.kldp.net:/tmp/cvs-serv18473/css\n\nModified Files:\n	_extra.css \nLog Message:\n[#315632] fix css to set proper position of the chaptcha img\n\n
wkpark      2010/08/31 13:54:07

  Modified:    css      _extra.css
  Log:
  [#315632] fix css to set proper position of the chaptcha img
  
  Revision  Changes    Path
  1.27      +3 -3      moniwiki/css/_extra.css
  
  Index: _extra.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_extra.css,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- _extra.css	27 Jul 2009 12:44:24 -0000	1.26
  +++ _extra.css	31 Aug 2010 04:54:06 -0000	1.27
  @@ -583,10 +583,10 @@
   
   #editor_area .captcha {
     vertical-align:middle;
  -  position:absolute;
  +  /* position:absolute; /* */
     right:17px; /* ~ scrollbar width */
  -  bottom:14px; /* ~ resizer grip height */
  -  opacity:0.7;filter:alpha(opacity=70);
  +  /* bottom:14px; /* ~ resizer grip height */
  +  /* opacity:0.7;filter:alpha(opacity=70); /* */
     /* IE Fix */
     _float:right;
     _margin-top:-73px;
  
  
  


1283231969;wkpark;Update of /cvsroot/moniwiki/moniwiki-theme/azblue2/css\nIn directory kill.kldp.net:/tmp/cvs-serv22581/css\n\nModified Files:\n	default.css \nLog Message:\n[#315496] fixed last change\n\n
1283232260;wkpark;Update of /cvsroot/moniwiki/moniwiki/imgs/moni2\nIn directory kill.kldp.net:/tmp/cvs-serv22709\n\nModified Files:\n	deleted.png \nLog Message:\nmake RGBA to RGB 8-bit colormap png\n\n
wkpark      2010/08/31 14:24:21

  Modified:    imgs/moni2 deleted.png
  Log:
  make RGBA to RGB 8-bit colormap png
  
  Revision  Changes    Path
  1.3       +3 -4      moniwiki/imgs/moni2/deleted.png
  
  	<<Binary file>>
  
  


1283233919;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv26780\n\nModified Files:\n	wiki.php \nLog Message:\n[#315626] revert r1.584 change\n\n
wkpark      2010/08/31 14:52:00

  Modified:    .        wiki.php
  Log:
  [#315626] revert r1.584 change
  
  Revision  Changes    Path
  1.600     +8 -9      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.599
  retrieving revision 1.600
  diff -u -r1.599 -r1.600
  --- wiki.php	31 Aug 2010 04:50:58 -0000	1.599
  +++ wiki.php	31 Aug 2010 05:51:59 -0000	1.600
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.599 2010/08/31 04:50:58 wkpark Exp $
  +// $Id: wiki.php,v 1.600 2010/08/31 05:51:59 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.599 $',1,-1);
  +$_revision = substr('$Revision: 1.600 $',1,-1);
   $_release = '1.1.5';
   
   #ob_start("ob_gzhandler");
  @@ -1998,11 +1998,10 @@
                        );
   
       # NoSmoke's MultiLineCell hack
  -    #$this->extrarule=array("/{{\|(.*)\|}}/","/{{\|/","/\|}}/");
  -    #$this->extrarepl=array("<table class='closure'><tr class='closure'><td class='closure'>\\1</td></tr></table>","</div><table class='closure'><tr class='closure'><td class='closure'><div>","</div></td></tr></table><div>");
  -    #$this->extrarepl=array("<table class='closure'><tr class='closure'><td class='closure'>\\1</td></tr></table>","</div><table class='closure'><tr class='closure'><td class='closure'><div>","</div></td></tr></table><div>");
  -    $this->_pre_rule=array("/{{\|$/", "/{{\|/", "/\|}}/");
  -    $this->_pre_repl=array('{{{#!wiki .closure', "{{{#!wiki .closure\n", '}}}');
  +    $this->extrarule=array("/{{\|(.*)\|}}/","/{{\|/","/\|}}/");
  +    $this->extrarepl=array("<table class='closure'><tr class='closure'><td class='closure'>\\1</td></tr></table>","</div><table class='closure'><tr class='closure'><td class='closure'><div>","</div></td></tr></table><div>");
  +    #$this->_pre_rule=array("/{{\|$/", "/{{\|/", "/\|}}/");
  +    #$this->_pre_repl=array('{{{#!wiki .closure', "{{{#!wiki .closure\n", '}}}');
   
       // set extra baserule
       if (!empty($DBInfo->baserule)) {
  @@ -3810,7 +3809,7 @@
           continue; # comments
         }
   
  -      $line = preg_replace($this->_pre_rule, $this->_pre_repl, $line);
  +      #$line = preg_replace($this->_pre_rule, $this->_pre_repl, $line);
         if ($in_pre) {
            if (strpos($line,"}}}")===false) {
              $this->pre_line.=$line."\n";
  @@ -4133,7 +4132,7 @@
   
         if ($this->auto_linebreak and in_array(trim($line),array('{{|','|}}')))
           $this->nobr=1;
  -      #$line=preg_replace($this->extrarule,$this->extrarepl,$line);
  +      $line=preg_replace($this->extrarule,$this->extrarepl,$line);
         #if ($this->auto_linebreak and preg_match('/<div>$/',$line))
         #  $this->nobr=1;
   
  
  
  


1283608145;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv26753\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315658] fixed minor bug with $use_pageindex option. ftruncate() correctly. init() pageindex correctly\n\n
1283608145;wkpark;Update of /cvsroot/moniwiki/moniwiki/lib\nIn directory kill.kldp.net:/tmp/cvs-serv26753/lib\n\nModified Files:\n	PageIndex.php \nLog Message:\n[#315658] fixed minor bug with $use_pageindex option. ftruncate() correctly. init() pageindex correctly\n\n
wkpark      2010/09/04 22:49:07

  Modified:    .        wikilib.php
               lib      PageIndex.php
  Log:
  [#315658] fixed minor bug with $use_pageindex option. ftruncate() correctly. init() pageindex correctly
  
  Revision  Changes    Path
  1.345     +12 -1     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.344
  retrieving revision 1.345
  diff -u -r1.344 -r1.345
  --- wikilib.php	28 Aug 2010 13:05:17 -0000	1.344
  +++ wikilib.php	4 Sep 2010 13:49:05 -0000	1.345
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.344 2010/08/28 13:05:17 wkpark Exp $
  +// $Id: wikilib.php,v 1.345 2010/09/04 13:49:05 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2425,6 +2425,17 @@
       // fastest method
       require_once('lib/PageIndex.php');
       $pgidx = new PageIndex($DBInfo);
  +
  +    $delay = !empty($DBInfo->default_delaytime) ? $DBInfo->default_delaytime : 0;
  +    $lock_file = _fake_lock_file($DBInfo->vartmp_dir, 'pageindex');
  +    $locked = _fake_locked($lock_file, $DBInfo->mtime());
  +    if (!$locked and ($DBInfo->mtime() > $pgidx->mtime() + $delay)) {
  +        // init pagename index db
  +        _fake_lock($lock_file);
  +        $pgidx->init();
  +        _fake_lock($lock_file, LOCK_UN);
  +    }
  +
       $sel_pages = $pgidx->getPagesByIds($selected);
     } else if (!empty($DBInfo->use_indexer)) {
       require_once("lib/indexer.DBA.php");
  
  
  
  1.4       +1 -1      moniwiki/lib/PageIndex.php
  
  Index: PageIndex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/PageIndex.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- PageIndex.php	28 Aug 2010 07:18:12 -0000	1.3
  +++ PageIndex.php	4 Sep 2010 13:49:05 -0000	1.4
  @@ -47,7 +47,7 @@
               return false;
           }
   
  -        ftruncate($flist, 0);
  +        ftruncate($flst, 0);
           ftruncate($fidx, 0);
   
           $idx_data = '';
  
  
  


1283623471;wkpark;Update of /cvsroot/moniwiki/moniwiki-theme/azblue2\nIn directory kill.kldp.net:/tmp/cvs-serv1911\n\nModified Files:\n	header.php \nLog Message:\n[#315496] toggle sidebar correctly\n\n
1283625212;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv11525\n\nModified Files:\n	wiki.php \nLog Message:\n[#315290] fixed notice warnings\n\n
wkpark      2010/09/05 03:33:33

  Modified:    .        wiki.php
  Log:
  [#315290] fixed notice warnings
  
  Revision  Changes    Path
  1.601     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.600
  retrieving revision 1.601
  diff -u -r1.600 -r1.601
  --- wiki.php	31 Aug 2010 05:51:59 -0000	1.600
  +++ wiki.php	4 Sep 2010 18:33:32 -0000	1.601
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.600 2010/08/31 05:51:59 wkpark Exp $
  +// $Id: wiki.php,v 1.601 2010/09/04 18:33:32 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.600 $',1,-1);
  +$_revision = substr('$Revision: 1.601 $',1,-1);
   $_release = '1.1.5';
   
   #ob_start("ob_gzhandler");
  @@ -3849,7 +3849,7 @@
               # new formatting rule for a quote block (pre block + wikilinks)
               $line[$p+3]=" ";
               $np=1;
  -            if ($line[$p+4]=='#' or $line[$p+4]=='.') {
  +            if (!empty($line[$p+4]) and ($line[$p+4]=='#' or $line[$p+4]=='.')) {
                 $pre_style=strtok(substr($line,$p+4),' ');
                 $np++;
                 if ($pre_style) $np+=strlen($pre_style);
  @@ -5872,7 +5872,7 @@
           if (!empty($formatter->pi['#title']))
             $as[] = $formatter->pi['#title'];
           if (!empty($as)) {
  -          $ac->update($pagename, serialize($as));
  +          $ac->update($pagename, serialize(array($pagename=>$as)));
           }
         }
       }
  
  
  


1283625482;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv11769\n\nModified Files:\n	wiki.php \nLog Message:\noops! revert some patch in the r1.601\n\n
wkpark      2010/09/05 03:38:03

  Modified:    .        wiki.php
  Log:
  oops! revert some patch in the r1.601
  
  Revision  Changes    Path
  1.602     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.601
  retrieving revision 1.602
  diff -u -r1.601 -r1.602
  --- wiki.php	4 Sep 2010 18:33:32 -0000	1.601
  +++ wiki.php	4 Sep 2010 18:38:02 -0000	1.602
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.601 2010/09/04 18:33:32 wkpark Exp $
  +// $Id: wiki.php,v 1.602 2010/09/04 18:38:02 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.601 $',1,-1);
  +$_revision = substr('$Revision: 1.602 $',1,-1);
   $_release = '1.1.5';
   
   #ob_start("ob_gzhandler");
  @@ -5872,7 +5872,7 @@
           if (!empty($formatter->pi['#title']))
             $as[] = $formatter->pi['#title'];
           if (!empty($as)) {
  -          $ac->update($pagename, serialize(array($pagename=>$as)));
  +          $ac->update($pagename, serialize($as));
           }
         }
       }
  
  
  


1283625741;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv11830\n\nModified Files:\n	wiki.php \nLog Message:\n[#315660] fixed #alias bug.\n[#315642] prevent duplicate job\nadd _caches() method to work #alias correctly\n\n
wkpark      2010/09/05 03:42:22

  Modified:    .        wiki.php
  Log:
  [#315660] fixed #alias bug.
  [#315642] prevent duplicate job
  add _caches() method to work #alias correctly
  
  Revision  Changes    Path
  1.603     +46 -15    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.602
  retrieving revision 1.603
  diff -u -r1.602 -r1.603
  --- wiki.php	4 Sep 2010 18:38:02 -0000	1.602
  +++ wiki.php	4 Sep 2010 18:42:21 -0000	1.603
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.602 2010/09/04 18:38:02 wkpark Exp $
  +// $Id: wiki.php,v 1.603 2010/09/04 18:42:21 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.602 $',1,-1);
  +$_revision = substr('$Revision: 1.603 $',1,-1);
   $_release = '1.1.5';
   
   #ob_start("ob_gzhandler");
  @@ -809,25 +809,26 @@
         $apc = new Cache_text('aliases');
         $ac = new Cache_text('alias');
         $dir = $ac->cache_dir;
  -      if ($apc->exists('aliases') and $this->mtime() < $apc->mtime('aliases')) {
  +      $_lock_file = _fake_lock_file($this->vartmp_dir, 'init_alias');
  +      $locked = _fake_locked($_lock_file, $this->mtime());
  +      if ($locked or ($apc->exists('aliases') and $this->mtime() < $apc->mtime('aliases'))) {
           $aliases = unserialize($apc->fetch('aliases'));
           break;
         }
   
  -      $dh = @opendir($dir);
  -      if (is_resource($dh)) {
  -        while ( ($file = readdir($dh)) !== false) {
  -          if ($file[0] == '.' or is_dir($file)) continue;
  -          
  -          $pagename = $this->keyToPagename($file); // FIXME
  -          $as = unserialize($ac->fetch($pagename));
  -          foreach ($as as $k) {
  -            $aliases[$k] = !empty($aliases[$k]) ? $aliases[$k].','.$pagename : $pagename;
  -          }
  +      // get all cache files
  +      $files = array();
  +      $ac->_caches($files);
  +      _fake_lock($_lock_file);
  +      foreach ($files as $file) {
  +        $as = unserialize($ac->_fetch($file));
  +        $pagename = key($as);
  +        foreach ($as[$pagename] as $k) {
  +          $aliases[$k] = !empty($aliases[$k]) ? $aliases[$k].','.$pagename : $pagename;
           }
  -        closedir($dh);
         }
         $apc->update('aliases', serialize($aliases));
  +      _fake_lock($_lock_file, LOCK_UN);
         break;
       }
   
  @@ -1711,6 +1712,36 @@
       if ($this->_exists($key))
         unlink($key);
     }
  +
  +  /**
  +   * get all cache files
  +   *
  +   */
  +  function _caches(&$files, $dir = '')
  +  {
  +    $top = $this->cache_dir;
  +    $prefix = '';
  +    $_dir = $top;
  +    if (!empty($dir)) {
  +      $prefix = $dir .'/';
  +      $_dir = $top.'/'.$dir;
  +    }
  +
  +    $dh = opendir($_dir);
  +    if (!$dh) return; // slightly ignore
  +
  +    while (($file = readdir($dh)) !== false) {
  +      if ($file[0] == '.')
  +        continue;
  +      if (is_dir($_dir . '/'. $file)) {
  +        $this->_caches($files, $file);
  +        continue;
  +      }
  +
  +      $files[] = $top . '/'. $prefix . $file;
  +    }
  +    closedir($dh);
  +  }
   }
   
   class WikiPage {
  @@ -5872,7 +5903,7 @@
           if (!empty($formatter->pi['#title']))
             $as[] = $formatter->pi['#title'];
           if (!empty($as)) {
  -          $ac->update($pagename, serialize($as));
  +          $ac->update($pagename, serialize(array($pagename=>$as)));
           }
         }
       }
  
  
  


1283813277;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv4442\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315290] fixed notice warning\n\n
wkpark      2010/09/07 07:47:57

  Modified:    .        wikilib.php
  Log:
  [#315290] fixed notice warning
  
  Revision  Changes    Path
  1.346     +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.345
  retrieving revision 1.346
  diff -u -r1.345 -r1.346
  --- wikilib.php	4 Sep 2010 13:49:05 -0000	1.345
  +++ wikilib.php	6 Sep 2010 22:47:56 -0000	1.346
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.345 2010/09/04 13:49:05 wkpark Exp $
  +// $Id: wikilib.php,v 1.346 2010/09/06 22:47:56 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2065,7 +2065,7 @@
         }
         print $menu;
         print "<div id='wikiPreview'>\n";
  -      if ($options['conflict'] and $merge)
  +      if ($options['conflict'] and !empty($merge))
           print $formatter->macro_repl('Diff','',array('text'=>$merge,'raw'=>1));
         else
           print $formatter->macro_repl('Diff','',array('text'=>$savetext,'raw'=>1));
  
  
  


1283844595;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv10023\n\nModified Files:\n	wiki.php \nLog Message:\nreset $_GET['header'] correctly\n\n
wkpark      2010/09/07 16:29:56

  Modified:    .        wiki.php
  Log:
  reset $_GET['header'] correctly
  
  Revision  Changes    Path
  1.604     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.603
  retrieving revision 1.604
  diff -u -r1.603 -r1.604
  --- wiki.php	4 Sep 2010 18:42:21 -0000	1.603
  +++ wiki.php	7 Sep 2010 07:29:55 -0000	1.604
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.603 2010/09/04 18:42:21 wkpark Exp $
  +// $Id: wiki.php,v 1.604 2010/09/07 07:29:55 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.603 $',1,-1);
  +$_revision = substr('$Revision: 1.604 $',1,-1);
   $_release = '1.1.5';
   
   #ob_start("ob_gzhandler");
  @@ -5656,7 +5656,7 @@
     } else {
       // reset some reserved variables
       if (isset($_GET['retstr'])) unset($_GET['retstr']);
  -    if (isset($_POST['header'])) unset($_POST['header']);
  +    if (isset($_GET['header'])) unset($_GET['header']);
   
       $action=!empty($_GET['action']) ? $_GET['action'] : '';
       $value=isset($_GET['value'][0]) ? $_GET['value'] : '';
  
  
  


1283848448;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv20328\n\nModified Files:\n      Tag: B_1_1_5\n	wiki.php wikilib.php \nLog Message:\nmerged from trunk\n[#315290] fixed notice warnings\n[#315658] fixed minor bugs with $use_pageindex option. ftruncate() correctly.\n  init() pageindex correctly\n[#315660] fixed #alias bug.\n[#315642] prevent duplicate job.\nadd _caches() method to work #alias correctly.\n\n
1283848449;wkpark;Update of /cvsroot/moniwiki/moniwiki/lib\nIn directory kill.kldp.net:/tmp/cvs-serv20328/lib\n\nModified Files:\n      Tag: B_1_1_5\n	PageIndex.php \nLog Message:\nmerged from trunk\n[#315290] fixed notice warnings\n[#315658] fixed minor bugs with $use_pageindex option. ftruncate() correctly.\n  init() pageindex correctly\n[#315660] fixed #alias bug.\n[#315642] prevent duplicate job.\nadd _caches() method to work #alias correctly.\n\n
wkpark      2010/09/07 17:34:10

  Modified:    .        Tag: B_1_1_5 wiki.php wikilib.php
               lib      Tag: B_1_1_5 PageIndex.php
  Log:
  merged from trunk
  [#315290] fixed notice warnings
  [#315658] fixed minor bugs with $use_pageindex option. ftruncate() correctly.
    init() pageindex correctly
  [#315660] fixed #alias bug.
  [#315642] prevent duplicate job.
  add _caches() method to work #alias correctly.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.600.2.1 +49 -18    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.600
  retrieving revision 1.600.2.1
  diff -u -r1.600 -r1.600.2.1
  --- wiki.php	31 Aug 2010 05:51:59 -0000	1.600
  +++ wiki.php	7 Sep 2010 08:34:08 -0000	1.600.2.1
  @@ -11,10 +11,10 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.600 2010/08/31 05:51:59 wkpark Exp $
  +// $Id: wiki.php,v 1.600.2.1 2010/09/07 08:34:08 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.600 $',1,-1);
  -$_release = '1.1.5';
  +$_revision = substr('$Revision: 1.600.2.1 $',1,-1);
  +$_release = '1.1.6-CVS';
   
   #ob_start("ob_gzhandler");
   
  @@ -809,25 +809,26 @@
         $apc = new Cache_text('aliases');
         $ac = new Cache_text('alias');
         $dir = $ac->cache_dir;
  -      if ($apc->exists('aliases') and $this->mtime() < $apc->mtime('aliases')) {
  +      $_lock_file = _fake_lock_file($this->vartmp_dir, 'init_alias');
  +      $locked = _fake_locked($_lock_file, $this->mtime());
  +      if ($locked or ($apc->exists('aliases') and $this->mtime() < $apc->mtime('aliases'))) {
           $aliases = unserialize($apc->fetch('aliases'));
           break;
         }
   
  -      $dh = @opendir($dir);
  -      if (is_resource($dh)) {
  -        while ( ($file = readdir($dh)) !== false) {
  -          if ($file[0] == '.' or is_dir($file)) continue;
  -          
  -          $pagename = $this->keyToPagename($file); // FIXME
  -          $as = unserialize($ac->fetch($pagename));
  -          foreach ($as as $k) {
  -            $aliases[$k] = !empty($aliases[$k]) ? $aliases[$k].','.$pagename : $pagename;
  -          }
  +      // get all cache files
  +      $files = array();
  +      $ac->_caches($files);
  +      _fake_lock($_lock_file);
  +      foreach ($files as $file) {
  +        $as = unserialize($ac->_fetch($file));
  +        $pagename = key($as);
  +        foreach ($as[$pagename] as $k) {
  +          $aliases[$k] = !empty($aliases[$k]) ? $aliases[$k].','.$pagename : $pagename;
           }
  -        closedir($dh);
         }
         $apc->update('aliases', serialize($aliases));
  +      _fake_lock($_lock_file, LOCK_UN);
         break;
       }
   
  @@ -1711,6 +1712,36 @@
       if ($this->_exists($key))
         unlink($key);
     }
  +
  +  /**
  +   * get all cache files
  +   *
  +   */
  +  function _caches(&$files, $dir = '')
  +  {
  +    $top = $this->cache_dir;
  +    $prefix = '';
  +    $_dir = $top;
  +    if (!empty($dir)) {
  +      $prefix = $dir .'/';
  +      $_dir = $top.'/'.$dir;
  +    }
  +
  +    $dh = opendir($_dir);
  +    if (!$dh) return; // slightly ignore
  +
  +    while (($file = readdir($dh)) !== false) {
  +      if ($file[0] == '.')
  +        continue;
  +      if (is_dir($_dir . '/'. $file)) {
  +        $this->_caches($files, $file);
  +        continue;
  +      }
  +
  +      $files[] = $top . '/'. $prefix . $file;
  +    }
  +    closedir($dh);
  +  }
   }
   
   class WikiPage {
  @@ -3849,7 +3880,7 @@
               # new formatting rule for a quote block (pre block + wikilinks)
               $line[$p+3]=" ";
               $np=1;
  -            if ($line[$p+4]=='#' or $line[$p+4]=='.') {
  +            if (!empty($line[$p+4]) and ($line[$p+4]=='#' or $line[$p+4]=='.')) {
                 $pre_style=strtok(substr($line,$p+4),' ');
                 $np++;
                 if ($pre_style) $np+=strlen($pre_style);
  @@ -5625,7 +5656,7 @@
     } else {
       // reset some reserved variables
       if (isset($_GET['retstr'])) unset($_GET['retstr']);
  -    if (isset($_POST['header'])) unset($_POST['header']);
  +    if (isset($_GET['header'])) unset($_GET['header']);
   
       $action=!empty($_GET['action']) ? $_GET['action'] : '';
       $value=isset($_GET['value'][0]) ? $_GET['value'] : '';
  @@ -5872,7 +5903,7 @@
           if (!empty($formatter->pi['#title']))
             $as[] = $formatter->pi['#title'];
           if (!empty($as)) {
  -          $ac->update($pagename, serialize($as));
  +          $ac->update($pagename, serialize(array($pagename=>$as)));
           }
         }
       }
  
  
  
  1.344.2.1 +13 -2     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.344
  retrieving revision 1.344.2.1
  diff -u -r1.344 -r1.344.2.1
  --- wikilib.php	28 Aug 2010 13:05:17 -0000	1.344
  +++ wikilib.php	7 Sep 2010 08:34:08 -0000	1.344.2.1
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.344 2010/08/28 13:05:17 wkpark Exp $
  +// $Id: wikilib.php,v 1.344.2.1 2010/09/07 08:34:08 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2065,7 +2065,7 @@
         }
         print $menu;
         print "<div id='wikiPreview'>\n";
  -      if ($options['conflict'] and $merge)
  +      if ($options['conflict'] and !empty($merge))
           print $formatter->macro_repl('Diff','',array('text'=>$merge,'raw'=>1));
         else
           print $formatter->macro_repl('Diff','',array('text'=>$savetext,'raw'=>1));
  @@ -2425,6 +2425,17 @@
       // fastest method
       require_once('lib/PageIndex.php');
       $pgidx = new PageIndex($DBInfo);
  +
  +    $delay = !empty($DBInfo->default_delaytime) ? $DBInfo->default_delaytime : 0;
  +    $lock_file = _fake_lock_file($DBInfo->vartmp_dir, 'pageindex');
  +    $locked = _fake_locked($lock_file, $DBInfo->mtime());
  +    if (!$locked and ($DBInfo->mtime() > $pgidx->mtime() + $delay)) {
  +        // init pagename index db
  +        _fake_lock($lock_file);
  +        $pgidx->init();
  +        _fake_lock($lock_file, LOCK_UN);
  +    }
  +
       $sel_pages = $pgidx->getPagesByIds($selected);
     } else if (!empty($DBInfo->use_indexer)) {
       require_once("lib/indexer.DBA.php");
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.3.2.1   +1 -1      moniwiki/lib/PageIndex.php
  
  Index: PageIndex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/PageIndex.php,v
  retrieving revision 1.3
  retrieving revision 1.3.2.1
  diff -u -r1.3 -r1.3.2.1
  --- PageIndex.php	28 Aug 2010 07:18:12 -0000	1.3
  +++ PageIndex.php	7 Sep 2010 08:34:08 -0000	1.3.2.1
  @@ -47,7 +47,7 @@
               return false;
           }
   
  -        ftruncate($flist, 0);
  +        ftruncate($flst, 0);
           ftruncate($fidx, 0);
   
           $idx_data = '';
  
  
  


1283861508;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv18092\n\nModified Files:\n	wiki.php wikilib.php \nLog Message:\n[#315666] refactoring for the version 1.2.0\n * rewrite the Cache_text class\n * extracted Timer class, version.RCS class, wikiConfig class\n\n
1283861509;wkpark;Update of /cvsroot/moniwiki/moniwiki/lib\nIn directory kill.kldp.net:/tmp/cvs-serv18092/lib\n\nModified Files:\n	version.CVS.php version.Git.php \nAdded Files:\n	cache.text.php timer.php version.RCS.php wikiconfig.php \nLog Message:\n[#315666] refactoring for the version 1.2.0\n * rewrite the Cache_text class\n * extracted Timer class, version.RCS class, wikiConfig class\n\n
1283861509;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv18092/plugin\n\nModified Files:\n	FullSearch.php Keywords.php PageLinks.php Play.php TTFText.php \n	UrlMapping.php VisualTour.php admin.php bbs.php dot.php \n	trackback.php \nLog Message:\n[#315666] refactoring for the version 1.2.0\n * rewrite the Cache_text class\n * extracted Timer class, version.RCS class, wikiConfig class\n\n
1283861509;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin/processor\nIn directory kill.kldp.net:/tmp/cvs-serv18092/plugin/processor\n\nModified Files:\n	geshi.php gnuplot.php latex.php pic.php sfd.php tpl_.php \n	vim.php \nLog Message:\n[#315666] refactoring for the version 1.2.0\n * rewrite the Cache_text class\n * extracted Timer class, version.RCS class, wikiConfig class\n\n
wkpark      2010/09/07 21:11:50

  Modified:    .        wiki.php wikilib.php
               lib      version.CVS.php version.Git.php
               plugin   FullSearch.php Keywords.php PageLinks.php Play.php
                        TTFText.php UrlMapping.php VisualTour.php admin.php
                        bbs.php dot.php trackback.php
               plugin/processor geshi.php gnuplot.php latex.php pic.php
                        sfd.php tpl_.php vim.php
  Added:       lib      cache.text.php timer.php version.RCS.php
                        wikiconfig.php
  Log:
  [#315666] refactoring for the version 1.2.0
   * rewrite the Cache_text class
   * extracted Timer class, version.RCS class, wikiConfig class
  
  Revision  Changes    Path
  1.605     +90 -656   moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.604
  retrieving revision 1.605
  diff -u -r1.604 -r1.605
  --- wiki.php	7 Sep 2010 07:29:55 -0000	1.604
  +++ wiki.php	7 Sep 2010 12:11:48 -0000	1.605
  @@ -11,10 +11,10 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.604 2010/09/07 07:29:55 wkpark Exp $
  +// $Id: wiki.php,v 1.605 2010/09/07 12:11:48 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.604 $',1,-1);
  -$_release = '1.1.5';
  +$_revision = substr('$Revision: 1.605 $',1,-1);
  +$_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
   
  @@ -49,8 +49,7 @@
       }
     }
   
  -  if ($cp->exists('plugins')) {
  -    $plugins=unserialize($cp->fetch('plugins'));
  +  if ($plugins = $cp->fetch('plugins')) {
       if (!empty($DBInfo->myplugins) and is_array($DBInfo->myplugins))
         $plugins=array_merge($plugins,$DBInfo->myplugins);
       return isset($plugins[$pname]) ? $plugins[$pname]:'';
  @@ -78,7 +77,7 @@
     }
   
     if (!empty($plugins))
  -    $cp->update('plugins',serialize($plugins));
  +    $cp->update('plugins',$plugins);
     if (!empty($DBInfo->myplugins) and is_array($DBInfo->myplugins))
       $plugins=array_merge($plugins,$DBInfo->myplugins);
   
  @@ -102,8 +101,7 @@
   
     $cp=new Cache_text('settings');
   
  -  if ($cp->exists('processors')) {
  -    $processors=unserialize($cp->fetch('processors'));
  +  if ($processors=$cp->fetch('processors')) {
       if (is_array($DBInfo->myprocessors))
         $processors=array_merge($processors,$DBInfo->myprocessors);
       return isset($processors[$prog]) ? $processors[$prog]:'';
  @@ -124,7 +122,7 @@
     }
   
     if ($processors)
  -    $cp->update('processors',serialize($processors));
  +    $cp->update('processors', $processors);
     if (is_array($DBInfo->myprocessors))
       $processors=array_merge($processors,$DBInfo->myprocessors);
   
  @@ -256,44 +254,6 @@
   EOS;
   }
   
  -class Timer {
  -  var $timers=array();
  -  var $total=0.0;
  -  function Timer() {
  -    $mt= explode(" ",microtime());
  -    $this->save=$mt[0]+$mt[1];
  -  }
  -
  -  function Check($name="default") {
  -    $mt= explode(" ",microtime());
  -    $now=$mt[0]+$mt[1];
  -    $diff=$now-$this->save;
  -    $this->save=$now;
  -    if (isset($this->timers[$name]))
  -      $this->timers[$name]+=$diff;
  -    else
  -      $this->timers[$name]=$diff;
  -    $this->total+=$diff;
  -  }
  -
  -  function Write() {
  -    $out= '';
  -    while (list($name,$d) = each($this->timers)) {
  -      $out.=sprintf("%10s :%3.4f sec (%3.2f %%)\n",$name,$d,$d/$this->total*100);
  -    }
  -    return $out;
  -  }
  -
  -  function Total() {
  -    return sprintf("%4.4f sec\n",$this->total);
  -  }
  -
  -  function Clean() {
  -    $this->timers=array();
  -  }
  -}
  -
  -
   class MetaDB_dba extends MetaDB {
     var $metadb;
     var $aux=array();
  @@ -574,206 +534,24 @@
   }
   
   class WikiDB {
  -  function WikiDB(&$config) {
  -    # Default Configuations
  -    $this->frontpage='FrontPage';
  -    $this->sitename='UnnamedWiki';
  -    $this->upload_dir= 'pds';
  -    $this->data_dir= './data';
  -    $this->query_prefix='/';
  -    $this->umask= 0770;
  -    $this->charset='utf-8';
  -    $this->lang='auto';
  -    $this->dba_type="db3";
  -    $this->use_counter=0;
  -
  -    $this->text_dir= $this->data_dir.'/text';
  -    $this->cache_dir= $this->data_dir.'/cache';
  -    $this->user_dir= $this->data_dir.'/user';
  -    $this->vartmp_dir= '/var/tmp';
  -    $this->intermap= $this->data_dir.'/intermap.txt';
  -    $this->editlog_name= $this->data_dir.'/editlog';
  -    $this->shared_intermap=$this->data_dir."/text/InterMap";
  -    $this->shared_metadb=$this->data_dir."/metadb";
  -    $this->url_prefix= '/moniwiki';
  -    $this->imgs_dir= $this->url_prefix.'/imgs';
  -    $this->css_dir= 'css';
  -    $this->css_url= $this->url_prefix.'/css/default.css';
  -
  -    $this->kbd_script= $this->url_prefix.'/css/kbd.js';
  -    $this->logo_img= $this->imgs_dir.'/moniwiki-logo.gif';
  -    $this->logo_page= $this->frontpage;
  -    $this->logo_string= '<img src="'.$this->logo_img.'" alt="[logo]" style="vertical-align:middle;border:0px" />';
  -    $this->metatags='<meta name="robots" content="noindex,nofollow" />';
  -    $this->doctype=<<<EOS
  -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  -<html xmlns="http://www.w3.org/1999/xhtml">
  -EOS;
  -    $this->use_smileys=1;
  -    $this->hr="<hr class='wikiHr' />";
  -    $this->date_fmt= 'Y-m-d';
  -    $this->date_fmt_rc= 'D d M Y';
  -    $this->date_fmt_blog= 'M d, Y';
  -    $this->datetime_fmt= 'Y-m-d H:i:s';
  -    $this->default_markup= 'wiki';
  -    #$this->changed_time_fmt = ' . . . . [h:i a]';
  -    $this->changed_time_fmt= ' [h:i a]'; # used by RecentChanges macro
  -    $this->admin_passwd= 'daEPulu0FLGhk'; # default value moniwiki
  -    $this->purge_passwd= '';
  -    $this->rcs_user='root';
  -    $this->actions= array('DeletePage','LikePages');
  -    $this->show_hosts= TRUE;
  -    $this->iconset='moni';
  -    $this->css_friendly='0';
  -    $this->goto_type='';
  -    $this->goto_form='';
  -    $this->template_regex='[a-z]Template$';
  -    $this->category_regex='^Category[A-Z]';
  -    $this->notify=0;
  -    $this->trail=0;
  -    $this->origin=0;
  -    $this->arrow=" &#x203a; ";
  -    $this->home='Home';
  -    $this->diff_type='fancy';
  -    $this->hr_type='simple';
  -    $this->nonexists='simple';
  -    $this->use_category=1;
  -    $this->use_camelcase=1;
  -    $this->use_sistersites=1;
  -    $this->use_singlebracket=1;
  -    $this->use_twinpages=1;
  -    $this->use_hostname=1;
  -    $this->email_guard='hex';
  -    $this->pagetype=array();
  -    $this->smiley='wikismiley';
  -    $this->convmap=array(0xac00, 0xd7a3, 0x0000, 0xffff); /* for euc-kr */
  -    $this->theme='';
  -
  -    $this->inline_latex=0;
  -    $this->processors=array();
  -
  -    $this->perma_icon='#';
  -    $this->purple_icon='#';
  -    $this->use_purple=0;
  -    $this->version_class='RCS';
  -    $this->title_rule='((?<=[a-z0-9]|[B-Z]{2})([A-Z][a-z]))';
  -    $this->login_strict=1;
  -    $this->use_fakemtime = 0; // dir mtime emulation for FAT filesytem.
  -
  -    # set user-specified configuration
  -    if (!empty($config)) {
  -      # read configurations
  -      foreach ($config as $key=>$val) {
  -        if ($key[0]=='_') continue; // internal variables
  -        $this->$key=$val;
  -      }
  -    }
  -
  -    // some alias
  -    if (!empty($this->use_captcha))
  -      $this->use_ticket=$this->use_captcha;
  -
  -    if (empty($this->purge_passwd))
  -      $this->purge_passwd=$this->admin_passwd;
  -
  -    if (!empty($this->use_wikiwyg) and empty($this->sectionedit_attr))
  -      $this->sectionedit_attr=1;
  -
  -#
  -    if (empty($this->menu)) {
  -      $this->menu= array($this->frontpage=>"accesskey='1'",'FindPage'=>"accesskey='4'",'TitleIndex'=>"accesskey='3'",'RecentChanges'=>"accesskey='2'");
  -      $this->menu_bra="";
  -      $this->menu_cat="|";
  -      $this->menu_sep="|";
  -    }
  -
  -    // for lower version compatibility
  -    $this->imgs_dir_url=$this->imgs_dir.'/';
  -    $this->imgs_dir_interwiki=$this->imgs_dir.'/';
  -
  -    if (empty($this->upload_dir_url))
  -      $this->upload_dir_url= $this->url_prefix . '/' . $this->upload_dir;
  -
  -    // getenv("DOCUMENT_ROOT") != doc_root or not ?
  -    if (empty($this->imgs_real_dir)) {
  -      if (function_exists('apache_lookup_uri')) {
  -        $info = apache_lookup_uri($this->imgs_dir_url);
  -        if (isset($info->filename)) {
  -          if (is_dir($info->filename))
  -            $this->imgs_real_dir = $info->filename;
  -          else
  -            $this->imgs_real_dir = dirname($info->filename);
  -        }
  -      } else {
  -        $this->imgs_real_dir = basename($this->imgs_dir); // XXX
  -      }
  +  function WikiDB($config) {
  +    // set configurations
  +    if (is_object($config)) {
  +      $conf = get_object_vars($config); // merge default settings to $config
  +    } else {
  +      $conf = &$config;
       }
  -
  -    if (is_dir($this->imgs_real_dir.'/interwiki'))
  -      $this->imgs_dir_interwiki=$this->imgs_dir.'/interwiki/';
  -
  -    if (empty($this->icon)) {
  -    $iconset=$this->iconset;
  -    $imgdir=$this->imgs_dir;
  -
  -    // for lower version compatibility
  -    $ext='png';
  -    if (is_dir($this->imgs_real_dir.'/'.$iconset)) $iconset.='/';
  -    else $iconset.='-';
  -
  -    if (!file_exists($this->imgs_real_dir.'/'.$iconset.'home.png')) $ext = 'gif';
  -
  -    if (file_exists($this->imgs_real_dir.'/'.$iconset.'http.png'))
  -      $this->imgs_dir_url=$this->imgs_dir.'/'.$iconset;
  -
  -    $this->icon['upper']="<img src='$imgdir/${iconset}upper.$ext' alt='U' style='vertical-align:middle;border:0px' />";
  -    $this->icon['edit']="<img src='$imgdir/${iconset}edit.$ext' alt='E' style='vertical-align:middle;border:0px' />";
  -    $this->icon['diff']="<img src='$imgdir/${iconset}diff.$ext' alt='D' style='vertical-align:middle;border:0px' />";
  -    $this->icon['del']="<img src='$imgdir/${iconset}deleted.$ext' alt='(del)' style='vertical-align:middle;border:0px' />";
  -    $this->icon['info']="<img src='$imgdir/${iconset}info.$ext' alt='I' style='vertical-align:middle;border:0px' />";
  -    $this->icon['rss']="<img src='$imgdir/${iconset}rss.$ext' alt='RSS' style='vertical-align:middle;border:0px' />";
  -    $this->icon['show']="<img src='$imgdir/${iconset}show.$ext' alt='R' style='vertical-align:middle;border:0px' />";
  -    $this->icon['find']="<img src='$imgdir/${iconset}search.$ext' alt='S' style='vertical-align:middle;border:0px' />";
  -    $this->icon['help']="<img src='$imgdir/${iconset}help.$ext' alt='H' style='vertical-align:middle;border:0px' />";
  -    $this->icon['pref']="<img src='$imgdir/${iconset}pref.$ext' alt='C' style='vertical-align:middle;border:0px' />";
  -    $this->icon['www']="<img src='$imgdir/${iconset}www.$ext' alt='www' style='vertical-align:middle;border:0px' />";
  -    $this->icon['mailto']="<img src='$imgdir/${iconset}email.$ext' alt='M' style='vertical-align:middle;border:0px' />";
  -    $this->icon['create']="<img src='$imgdir/${iconset}create.$ext' alt='N' style='vertical-align:middle;border:0px' />";
  -    $this->icon['new']="<img src='$imgdir/${iconset}new.$ext' alt='U' style='vertical-align:middle;border:0px' />";
  -    $this->icon['updated']="<img src='$imgdir/${iconset}updated.$ext' alt='U' style='vertical-align:middle;border:0px' />";
  -    $this->icon['user']="UserPreferences";
  -    $this->icon['home']="<img src='$imgdir/${iconset}home.$ext' alt='M' style='vertical-align:middle;border:0px' />";
  -    $this->icon['main']="<img src='$imgdir/${iconset}main.$ext' class='icon' alt='^' style='vertical-align:middle;border:0px' />";
  -    $this->icon['print']="<img src='$imgdir/${iconset}print.$ext' alt='P' style='vertical-align:middle;border:0px' />";
  -    $this->icon['scrap']="<img src='$imgdir/${iconset}scrap.$ext' alt='S' style='vertical-align:middle;border:0px' />";
  -    $this->icon['unscrap']="<img src='$imgdir/${iconset}unscrap.$ext' alt='S' style='vertical-align:middle;border:0px' />";
  -    $this->icon['attach']="<img src='$imgdir/${iconset}attach.$ext' alt='@' style='vertical-align:middle;border:0px' />";
  -    $this->icon['external']="<img class='externalLink' src='$imgdir/${iconset}external.$ext' alt='[]' style='vertical-align:middle;border:0px' />";
  -    $this->icon_sep=" ";
  -    $this->icon_bra=" ";
  -    $this->icon_cat=" ";
  -    }
  -
  -    if (empty($this->icons)) {
  -      $this->icons=array(
  -              'edit'=>array("","?action=edit",$this->icon['edit'],"accesskey='e'"),
  -              'diff'=>array("","?action=diff",$this->icon['diff'],"accesskey='c'"),
  -              'show'=>array("","",$this->icon['show']),
  -              'find'=>array("FindPage","",$this->icon['find']),
  -              'info'=>array("","?action=info",$this->icon['info']));
  -      if (!empty($this->notify))
  -        $this->icons['subscribe']=array("","?action=subscribe",$this->icon['mailto']);
  -      $this->icons['help']=array("HelpContents","",$this->icon['help']);
  -      $this->icons['pref']=array("UserPreferences","",$this->icon['pref']);
  +    foreach ($conf as $key=>$val) {
  +      if ($key[0]=='_') continue; // internal variables
  +      $this->$key=$val;
       }
  -    $config=get_object_vars($this); // merge default settings to $config
  -
  -    # ??? Number of lines output per each flush() call.
  -    // $this->lines_per_flush = 10;
   
  -    # ??? Is mod_rewrite being used to translate 'WikiWord' to
  -    // $this->rewrite = true;
  +    $this->initEnv();
  +    $this->initModules();
  +    register_shutdown_function(array(&$this,'Close'));
  +  }
   
  +  function initEnv() {
       if (!empty($this->path))
         putenv("PATH=".$this->path);
   
  @@ -781,9 +559,9 @@
         putenv('LOGNAME='.$this->rcs_user);
       if (!empty($this->timezone))
         putenv('TZ='.$this->timezone);
  +  }
   
  -    $this->interwiki=null;
  -
  +  function initModules() {
       if (!empty($this->use_counter)) {
         $this->counter = new Counter_dba($this);
         if ($this->counter->counter == null) {
  @@ -791,6 +569,7 @@
           $this->counter = null;
         }
       }
  +    #$this->interwiki=null;
   
       if (!empty($this->security_class)) {
         include_once("plugin/security/$this->security_class.php");
  @@ -798,8 +577,6 @@
         $this->security=new $class ($this);
       } else
         $this->security=new Security($this);
  -
  -    register_shutdown_function(array(&$this,'Close'));
     }
   
     function initAlias() {
  @@ -812,7 +589,7 @@
         $_lock_file = _fake_lock_file($this->vartmp_dir, 'init_alias');
         $locked = _fake_locked($_lock_file, $this->mtime());
         if ($locked or ($apc->exists('aliases') and $this->mtime() < $apc->mtime('aliases'))) {
  -        $aliases = unserialize($apc->fetch('aliases'));
  +        $aliases = $apc->fetch('aliases');
           break;
         }
   
  @@ -821,13 +598,13 @@
         $ac->_caches($files);
         _fake_lock($_lock_file);
         foreach ($files as $file) {
  -        $as = unserialize($ac->_fetch($file));
  +        $as = $ac->_fetch($file);
           $pagename = key($as);
           foreach ($as[$pagename] as $k) {
             $aliases[$k] = !empty($aliases[$k]) ? $aliases[$k].','.$pagename : $pagename;
           }
         }
  -      $apc->update('aliases', serialize($aliases));
  +      $apc->update('aliases', $aliases);
         _fake_lock($_lock_file, LOCK_UN);
         break;
       }
  @@ -936,7 +713,7 @@
       $_lock_file = _fake_lock_file($this->vartmp_dir, 'get_page_list', $pcid);
       $locked = _fake_locked($_lock_file, $this->mtime());
       if ($locked or ($pc->exists($pcid) and $this->mtime() < $pc->mtime($pcid))) {
  -      $list=unserialize($pc->fetch($pcid));
  +      $list = $pc->fetch($pcid);
         if (is_array($list)) return $list;
         if ($locked) return array();
       }
  @@ -947,7 +724,7 @@
         if ($indexer->db) {
           $pages = $indexer->getAllPages();
   
  -        $pc->update($pcid,serialize($pages));
  +        $pc->update($pcid, $pages);
           $pc->update('counter', count($pages));
           $indexer->close();
           return $pages;
  @@ -966,7 +743,7 @@
           $pages[] = $this->keyToPagename($file);
         }
         closedir($handle);
  -      $pc->update($pcid,serialize($pages));
  +      $pc->update($pcid, $pages);
         $pc->update('counter', count($pages));
         _fake_lock($_lock_file, LOCK_UN);
         return $pages;
  @@ -997,7 +774,7 @@
          }
          closedir($handle);
       }
  -    $pc->update($pcid,serialize($pages));
  +    $pc->update($pcid, $pages);
       _fake_lock($_lock_file, LOCK_UN);
       return $pages;
     }
  @@ -1374,376 +1151,6 @@
     }
   }
   
  -class Version_RCS {
  -  var $DB;
  -
  -  function Version_RCS($DB) {
  -    $this->DB=$DB;
  -    $this->NULL='';
  -    if(getenv("OS")!="Windows_NT") $this->NULL=' 2>/dev/null';
  -    if (!empty($DB->rcs_error_log)) $this->NULL='';
  -  }
  -
  -  function _filename($pagename) {
  -    # have to be factored out XXX
  -    # Return filename where this word/page should be stored.
  -    return $this->DB->getPageKey($pagename);
  -  }
  -
  -  function co($pagename,$rev,$opt=array()) {
  -    $filename= $this->_filename($pagename);
  -
  -    $rev=(is_numeric($rev) and $rev>0) ? "\"".$rev."\" ":'';
  -    $ropt='-p';
  -    if (!empty($opt['stdout'])) $ropt='-r';
  -    $fp=@popen("co -x,v/ -q $ropt$rev ".$filename.$this->NULL,"r");
  -    if (!empty($opt['stdout'])) {
  -      if (is_resource($fp)) {
  -        pclose($fp);
  -        return '';
  -      }
  -    }
  -
  -    $out='';
  -    if (is_resource($fp)) {
  -      while (!feof($fp)) {
  -        $line=fgets($fp,2048);
  -        $out.= $line;
  -      }
  -      pclose($fp);
  -    }
  -    return $out;
  -  }
  -
  -  function ci($pagename,$log) {
  -    $key=$this->_filename($pagename);
  -    $pgname=escapeshellcmd($pagename);
  -    $this->_ci($key,$log);
  -  }
  -
  -  function _ci($key,$log) {
  -    $dir=dirname($key);
  -    if (!is_dir($dir.'/RCS')) {
  -      $om=umask(000);
  -      _mkdir_p($dir.'/RCS', 2777);
  -      umask($om);
  -    }
  -    $fp=@popen("ci -l -x,v/ -q -t-\"".$key."\" -m\"".$log."\" ".$key.$this->NULL,"r");
  -    if (is_resource($fp)) pclose($fp);
  -  }
  -
  -  function rlog($pagename,$rev='',$opt='',$oldopt='') {
  -    $rev = (is_numeric($rev) and $rev > 0) ? "-r$rev":'';
  -    $filename=$this->_filename($pagename);
  -
  -    $fp= popen("rlog $opt $oldopt -x,v/ $rev ".$filename.$this->NULL,"r");
  -    $out='';
  -    if (is_resource($fp)) {
  -      while (!feof($fp)) {
  -        $line=fgets($fp,1024);
  -        $out .= $line;
  -      }
  -      pclose($fp);
  -    }
  -    return $out;
  -  }
  -
  -  function diff($pagename,$rev="",$rev2="") {
  -    $option = '';
  -    if ($rev) $option="-r$rev ";
  -    if ($rev2) $option.="-r$rev2 ";
  -
  -    $filename=$this->_filename($pagename);
  -    $fp=popen("rcsdiff -x,v/ --minimal -u $option ".$filename.$this->NULL,'r');
  -    if (!is_resource($fp)) return '';
  -    while (!feof($fp)) {
  -      # trashing first two lines
  -      $line=fgets($fp,1024);
  -      if (preg_match('/^--- /',$line)) {
  -        $line=fgets($fp,1024);
  -        break;
  -      }
  -    }
  -    $out = '';
  -    while (!feof($fp)) {
  -      $line=fgets($fp,1024);
  -      $out.= $line;
  -    }
  -    pclose($fp);
  -    return $out;
  -  }
  -
  -  function purge($pagename,$rev) {
  -  }
  -
  -  function delete($pagename) {
  -    $keyname=$this->DB->_getPageKey($pagename);
  -    @unlink($this->DB->text_dir."/RCS/$keyname,v");
  -  }
  -
  -  function rename($pagename,$new) {
  -    $keyname=$this->DB->_getPageKey($new);
  -    $oname=$this->DB->_getPageKey($pagename);
  -    rename($this->DB->text_dir."/RCS/$oname,v",
  -      $this->DB->text_dir."/RCS/$keyname,v");
  -  }
  -
  -  function get_rev($pagename,$mtime='',$last=0) {
  -    $opt = '';
  -    if ($last==1) {
  -      $tag='head:';
  -      $opt='-h';
  -    } else $tag='revision';
  -    if ($mtime) {
  -      $date=gmdate('Y/m/d H:i:s',$mtime);
  -      if ($date) {
  -        $opt="-d\<'$date'";
  -        $tag='revision';
  -      }
  -    }
  -
  -    $rev = '';
  -    $out= $this->rlog($pagename,'',$opt);
  -    if ($out) {
  -      for ($line=strtok($out,"\n"); $line !== false;$line=strtok("\n")) {
  -        preg_match("/^$tag\s+([\d\.]+)$/",$line,$match);
  -        if (isset($match[1])) {
  -          $rev=$match[1];
  -          break;
  -        }
  -      }
  -    }
  -    return $rev;
  -  }
  -  function export($pagename) {
  -    $keyname=$this->DB->_getPageKey($pagename);
  -    $fname=$this->DB->text_dir."/RCS/$keyname,v";
  -    $fp=fopen($fname,'r');
  -    $out = '';
  -    if (is_resource($fp)) {
  -      $sz=filesize($fname);
  -      if ($sz > 0);
  -      	$out=fread($fp,$sz);
  -      fclose($fp);
  -    }
  -    return $out;
  -  }
  -
  -  function import($pagename,$rcsfile) {
  -    $keyname=$this->DB->_getPageKey($pagename);
  -    $fname=$this->DB->text_dir."/RCS/$keyname,v";
  -    $om=umask(0770);
  -    chmod($fname,0664);
  -    umask($om);
  -    $fp=fopen($fname,'w');
  -    if (is_resource($fp)) {
  -      fwrite($fp,$rcsfile);
  -      fclose($fp);
  -      return true;
  -    }
  -    return false;
  -  }
  -}
  -
  -class Cache_text {
  -  var $depth=0;
  -  var $ext='';
  -  var $arena='default';
  -  function Cache_text($arena,$depth=0,$ext='',$dir='') {
  -    global $Config;
  -    $this->depth=$depth;
  -    $this->arena=$arena;
  -    $this->ext=$ext ? '.'.$ext:'';
  -    $this->cache_dir=$dir ? $dir.'/'.$arena: $Config['cache_dir'].'/'.$arena;
  -  }
  -
  -  function _getKey($pagename,$md5=1) {
  -    if ($this->depth>0) {
  -      $key=$md5 ? md5($pagename):$pagename;
  -      $prefix=substr($key,0,$this->depth);
  -      return $this->arena.'/'.$prefix.'/'.$key.$this->ext;
  -    }
  -    return $this->arena.'/'.
  -      preg_replace("/([^a-z0-9]{1})/ie","'_'.strtolower(dechex(ord('\\1')))",
  -      $pagename).$this->ext;
  -  }
  -
  -  function getKey($pagename) {
  -    if ($this->depth>0) {
  -      $key=md5($pagename);
  -      $prefix=substr($key,0,$this->depth);
  -      $key=$prefix.'/'.$key.$this->ext;
  -      return $this->cache_dir . '/' . $key;
  -    }
  -    return $this->cache_dir .'/'.
  -      preg_replace("/([^a-z0-9]{1})/ie","'_'.strtolower(dechex(ord('\\1')))",
  -      $pagename).$this->ext;
  -  }
  -
  -  function update($pagename,$val,$mtime="") {
  -    if (!$pagename) return false;
  -    $key=$this->getKey($pagename);
  -    if (file_exists($key) and !is_writable($key)) return false;
  -    if ($mtime and ($mtime <= $this->mtime($key))) return false;
  -
  -    if (is_array($val))
  -      $val=implode("\n",array_keys($val))."\n";
  -    else
  -      $val=str_replace("\r","",$val);
  -    $this->_save($key,$val);
  -    return true;
  -  }
  -
  -  function _save($key,$val) {
  -    $dir=dirname($key);
  -    if (!is_dir($dir)) {
  -      $om=umask(000);
  -      _mkdir_p($dir, 0777);
  -      umask($om);
  -    }
  -    $fp=fopen($key,"a+b");
  -    if ($fp) {
  -      flock($fp,LOCK_EX);
  -      ftruncate($fp, 0);
  -      fwrite($fp,$val);
  -      flock($fp,LOCK_UN);
  -      fclose($fp);
  -    }
  -  }
  -
  -  function _del($key) {
  -    unlink($key);
  -  }
  -
  -  function fetch($pagename,$mtime="",$params=array()) {
  -    $key=$this->getKey($pagename);
  -    if ($this->_exists($key)) {
  -       if (!$mtime) {
  -          return $this->_fetch($key,$params);
  -       }
  -       else if ($this->_mtime($key) > $mtime)
  -          return $this->_fetch($key,$params);
  -    }
  -    return false;
  -  }
  -
  -  function exists($pagename) {
  -    $key=$this->getKey($pagename);
  -    return $this->_exists($key);
  -  }
  -
  -  function _exists($key) {
  -    return @file_exists($key);
  -  }
  -
  -  function _fetch($key,$params=array()) {
  -    $fp=fopen($key,"r");
  -    if (!is_resource($fp)) return '';
  -
  -    $ret='';
  -    
  -    if (($size=filesize($key)) >0) {
  -      while (!empty($params['uniq']) and empty($params['raw'])) { # include cache if it is a valid php cache
  -        # cache header : <,?,php /* Generator Version uniqid tpl_path(optional) */
  -        $check=fgets($fp);
  -        if ($check{0}=='<' and $check{1}=='?') {
  -          @list($tag,$sep,$generator,$ver,$id,$path,$extra)=explode(' ',$check);
  -          $ok=1;
  -          if (!empty($params['uniq']) and $params['uniq'] != $id) $ok=0;
  -          if (!empty($ok) and !empty($params['path']) and $params['path'] != $path) $ok=0;
  -          if (!empty($ok)) {
  -            fclose($fp);
  -            global $Config;
  -            $TPL_VAR=&$params['_vars']; # builtin Template_ support
  -            if (isset($TPL_VAR['_theme']) and is_array($TPL_VAR['_theme']) and $TPL_VAR['_theme']['compat'])
  -              extract($TPL_VAR['_theme']);
  -            $ehandle=false;
  -            if (!empty($params['formatter'])) {
  -              $formatter=&$params['formatter']; # XXX
  -              if (method_exists($formatter,'internal_errorhandler')) {
  -                set_error_handler(array($formatter,'internal_errorhandler'));
  -                $ehandle=true;
  -              }
  -            }
  -            if (!empty($params['print'])) {
  -              $ret= include $key; // Do we need more secure method ?
  -              if ($ehandle) restore_error_handler();
  -              return $ret;
  -            } else {
  -              ob_start();
  -              include $key;
  -              if ($ehandle) restore_error_handler();
  -              $fetch = ob_get_contents();
  -              ob_end_clean();
  -              return $fetch;
  -            }
  -          }
  -        }
  -        rewind($fp);
  -        break;
  -      }
  -      if (!empty($params['print'])) {
  -        fclose($fp);
  -        return readfile($key);
  -      }
  -      $ret=fread($fp,$size);
  -    }
  -    fclose($fp);
  -    return $ret;
  -  }
  -
  -  function _mtime($key) {
  -    return filemtime($key);
  -  }
  -
  -  function mtime($pagename) {
  -    $key=$this->getKey($pagename);
  -    if ($this->_exists($key))
  -       return $this->_mtime($key);
  -    return 0;
  -  }
  -
  -#  function needsUpdate($pagename) {
  -#    $key=$this->getKey($pagename);
  -#  }
  -
  -  function remove($pagename) {
  -    $key=$this->getKey($pagename);
  -    if ($this->_exists($key))
  -      unlink($key);
  -  }
  -
  -  /**
  -   * get all cache files
  -   *
  -   */
  -  function _caches(&$files, $dir = '')
  -  {
  -    $top = $this->cache_dir;
  -    $prefix = '';
  -    $_dir = $top;
  -    if (!empty($dir)) {
  -      $prefix = $dir .'/';
  -      $_dir = $top.'/'.$dir;
  -    }
  -
  -    $dh = opendir($_dir);
  -    if (!$dh) return; // slightly ignore
  -
  -    while (($file = readdir($dh)) !== false) {
  -      if ($file[0] == '.')
  -        continue;
  -      if (is_dir($_dir . '/'. $file)) {
  -        $this->_caches($files, $file);
  -        continue;
  -      }
  -
  -      $files[] = $top . '/'. $prefix . $file;
  -    }
  -    closedir($dh);
  -  }
  -}
  -
   class WikiPage {
     var $fp;
     var $filename;
  @@ -1923,7 +1330,7 @@
       $this->self_query='';
       $this->url_prefix= $DBInfo->url_prefix;
       $this->imgs_dir= $DBInfo->imgs_dir;
  -    $this->imgs_dir_interwiki=$DBInfo->imgs_dir_interwiki;
  +    $this->imgs_url_interwiki=$DBInfo->imgs_url_interwiki;
       $this->imgs_dir_url=$DBInfo->imgs_dir_url;
       $this->actions= $DBInfo->actions;
       $this->inline_latex=
  @@ -2064,9 +1471,6 @@
       # recursive footnote regex
       $this->footrule='\[\*[^\[\]]*((?:[^\[\]]+|\[(?13)\])*)\]';
   
  -    $this->cache= new Cache_text("pagelinks");
  -    $this->bcache= new Cache_text("backlinks");
  -    # XXX
     }
   
     /**
  @@ -2686,7 +2090,7 @@
         return $this->word_repl("$wiki:$url",$text.$extra,$attr,1);
       }
   
  -    $icon=$this->imgs_dir_interwiki.strtolower($wiki).'-16.png';
  +    $icon=$this->imgs_url_interwiki.strtolower($wiki).'-16.png';
       $sx=16;$sy=16;
       if (isset($DBInfo->intericon[$wiki])) {
         $icon=$DBInfo->intericon[$wiki][2];
  @@ -2750,9 +2154,15 @@
   
     function store_pagelinks() {
       global $DBInfo;
  +
  +    if (empty($this->bcache) or !is_object($this->bcache))
  +      $this->bcache= new Cache_text('backlinks');
  +    if (empty($this->cache) or !is_object($this->cache))
  +      $this->cache= new Cache_text('pagelinks');
  +
       unset($this->pagelinks['TwinPages']);
       $new=array_keys($this->pagelinks);
  -    $cur=unserialize($this->cache->fetch($this->page->name));
  +    $cur=$this->cache->fetch($this->page->name);
       if (!is_array($cur)) $cur=array();
   
       $ad=array_diff($new,$cur);
  @@ -2760,42 +2170,48 @@
       // merge new backlinks
       foreach ($ad as $a) {
         if (!$a or !$DBInfo->hasPage($a)) continue;
  -      $bl=unserialize($this->bcache->fetch($a));
  +      $bl = $this->bcache->fetch($a);
         if (!is_array($bl)) $bl=array();
         array_merge($bl,array($this->page->name));
         $bl=array_unique($bl);
  -      $this->bcache->update($a,serialize($bl));
  +      $this->bcache->update($a, $bl);
       }
       // remove back links
       foreach ($de as $d) {
         if (!$d or !$DBInfo->hasPage($d)) continue;
  -      $bl=unserialize($this->bcache->fetch($d));
  +      $bl = $this->bcache->fetch($d);
         if (!is_array($bl)) $bl=array();
         $bl=array_diff($bl,array($this->page->name));
  -      $this->bcache->update($d,serialize($bl));
  +      $this->bcache->update($d, $bl);
       }
       // XXX
       if ($new)
  -      $this->cache->update($this->page->name,serialize($new));
  +      $this->cache->update($this->page->name, $new);
       else
         $this->cache->remove($this->page->name);
   #      $this->page->mtime());
     }
   
     function get_pagelinks() {
  +    if (!is_object($this->cache))
  +      $this->cache= new Cache_text('pagelinks');
  +
       if (!$this->wordrule) $this->set_wordrule();
       if ($this->cache->exists($this->page->name)) {
         $links=$this->cache->fetch($this->page->name);
  -      if ($links !== false) return unserialize($links);
  +      if ($links !== false) return $links;
       }
       // no pagelinks found. XXX
       return array();
     }
   
     function get_backlinks() {
  +    if (!is_object($this->bcache))
  +      $this->bcache= new Cache_text('backlinks');
  +
       if ($this->bcache->exists($this->page->name)) {
         $links=$this->bcache->fetch($this->page->name);
  -      if ($links !== false) return unserialize($links);
  +      if ($links !== false) return $links;
       }
       // no backlinks found. XXX
       return array();
  @@ -3558,7 +2974,7 @@
       //$this->url_prefix= qualifiedUrl($this->url_prefix);
       $this->prefix= qualifiedUrl($this->prefix);
       $this->imgs_dir= qualifiedUrl($this->imgs_dir);
  -    $this->imgs_dir_interwiki=qualifiedUrl($this->imgs_dir_interwiki);
  +    $this->imgs_url_interwiki=qualifiedUrl($this->imgs_url_interwiki);
       $this->imgs_dir_url=qualifiedUrl($this->imgs_dir_url);
     }
   
  @@ -3644,6 +3060,9 @@
       } else {
         # XXX need to redesign pagelink method ?
         if (empty($DBInfo->without_pagelinks_cache)) {
  +        if (empty($this->cache) or !is_object($this->cache))
  +          $this->cache= new Cache_text('pagelinks');
  +
           $dmt= $DBInfo->mtime();
           $this->update_pagelinks= $dmt > $this->cache->mtime($this->page->name);
           #like as..
  @@ -3733,7 +3152,7 @@
         $twins=$DBInfo->metadb->getTwinPages($this->page->name,$twin_mode);
   
         if ($twins === true) {
  -        if (isset($DBInfo->interwiki['TwinPages'])) {
  +        if (!empty($DBInfo->use_twinpages)) {
             if (!empty($lines)) $lines[]="----";
             $lines[]=sprintf(_("See %s"),"[wiki:TwinPages:".$this->page->name." "._("TwinPages")."]");
           }
  @@ -4371,7 +3790,7 @@
   
         if (empty($keys)) return '';
         $uniq = md5(implode(';',$keys));
  -      $cache=new Cache_text('js',2,'html');
  +      $cache=new Cache_text('js', array('ext'=>'html'));
   
         if ($cache->exists($uniq)) {
           foreach ($keys as $k) $this->java_scripts[$k]='';
  @@ -4421,15 +3840,15 @@
         }
         $suniq = md5(implode(';',$pjs));
   
  -      $fc = new Cache_text('js',2,'js',$Config['cache_public_dir']);
  -      $jsname = $fc->_getKey($suniq,0);
  +      $fc = new Cache_text('js', array('ext'=>'js', 'dir'=>$Config['cache_public_dir']));
  +      $jsname = $fc->getKey($suniq,0);
         $out.='<script type="text/javascript" src="'.$Config['cache_public_url'].'/'.$jsname.'"></script>'."\n";
         $cache->update($uniq,$out);
   
         $ver = FCKJavaScriptCompressor::Revision();
         $header='/* '.JS_PACKER.' '.$ver.' '.md5($packed).' '.date('Y-m-d H:i:s').' */'."\n";
         # save real compressed js file.
  -      $fc->_save($Config['cache_public_dir'].'/'.$jsname,$header.$packed);
  +      $fc->_save($jsname, $header.$packed);
         return $out;
       }
       $out='';
  @@ -4504,7 +3923,7 @@
       $media='media="screen"';
       if (isset($options['action']) and $options['action']=='print') $media='';
   
  -    if (isset($this->pi['#redirect']) and $this->pi['#redirect'] != '' && $options['pi']) {
  +    if (!empty($this->pi['#redirect']) && !empty($options['pi'])) {
         $options['value']=$this->pi['#redirect'];
         $options['redirect']=1;
         $this->pi['#redirect']='';
  @@ -5903,7 +5322,7 @@
           if (!empty($formatter->pi['#title']))
             $as[] = $formatter->pi['#title'];
           if (!empty($as)) {
  -          $ac->update($pagename, serialize(array($pagename=>$as)));
  +          $ac->update($pagename, array($pagename=>$as));
           }
         }
       }
  @@ -5931,7 +5350,7 @@
           !empty($_GET['update_keywords'])) {
           $keys=explode(',',$formatter->pi['#keywords']);
           $keys=array_map('trim',$keys);
  -        $tcache->update($pagename,serialize($keys));
  +        $tcache->update($pagename, $keys);
         }
       }
   
  @@ -5944,8 +5363,8 @@
       }
       $options['pagelinks']=1;
       if (!empty($Config['cachetime']) and $Config['cachetime'] > 0 and empty($formatter->pi['#nocache'])) {
  -      $cache= new Cache_text('pages',2,'html');
  -      $mcache= new Cache_text('dynamicmacros',2);
  +      $cache= new Cache_text('pages', array('ext'=>'html'));
  +      $mcache= new Cache_text('dynamicmacros');
         $mtime=$cache->mtime($pagename);
         $dtime= $DBInfo->mtime();
         $now=time();
  @@ -5955,7 +5374,7 @@
        
         if (empty($formatter->refresh) and (($mtime > $dtime) and ($check < $Config['cachetime']))) {
           if ($mcache->exists($pagename))
  -          $_macros= unserialize($mcache->fetch($pagename));
  +          $_macros= $mcache->fetch($pagename);
           if (empty($_macros)) {
             $out = '';
             #$out = $cache->fetch($pagename);
  @@ -5975,9 +5394,9 @@
           $formatter->_macrocache=0;
           $_macros=&$formatter->_macros;
           if (empty($formatter->pi['#nocache'])) {
  -          $cache->update($pagename,$out);
  +          $cache->update($pagename, $out, $Config['cachetime']);
             if (isset($_macros))
  -            $mcache->update($pagename,serialize($_macros));
  +            $mcache->update($pagename,$_macros);
           }
         }
         if (!empty($_macros)) {
  @@ -6133,13 +5552,28 @@
   
   if (!defined('INC_MONIWIKI')):
   # Start Main
  -$Config=getConfig("config.php",array('init'=>1));
  -include_once("wikilib.php");
  -include_once("lib/win32fix.php");
  +require_once("wikilib.php");
  +require_once("lib/wikiconfig.php");
  +require_once("lib/cache.text.php");
  +require_once("lib/timer.php");
   
   $options = array();
  -$timing = new Timer();
  -$options['timer'] = &$timing;
  +if (class_exists('Timer')) {
  +  $timing = new Timer();
  +  $options['timer'] = &$timing;
  +  $options['timer']->Check("load");
  +}
  +
  +$Config = getConfig('config.php', array('init'=>1));
  +require_once("lib/win32fix.php");
  +
  +$ccache = new Cache_text('settings');
  +if (!($conf = $ccache->fetch('config'))) {
  +  $Config = wikiConfig($Config);
  +  $ccache->update('config', $Config, 0, array('deps'=>array('config.php', 'lib/wikiconfig.php')));
  +} else {
  +  $Config = &$conf;
  +}
   
   $DBInfo= new WikiDB($Config);
   
  
  
  
  1.347     +14 -15    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.346
  retrieving revision 1.347
  diff -u -r1.346 -r1.347
  --- wikilib.php	6 Sep 2010 22:47:56 -0000	1.346
  +++ wikilib.php	7 Sep 2010 12:11:48 -0000	1.347
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.346 2010/09/06 22:47:56 wkpark Exp $
  +// $Id: wikilib.php,v 1.347 2010/09/07 12:11:48 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -32,7 +32,6 @@
   }
   
   function get_scriptname() {
  -  global $Config;
     // Return full URL of current page.
     // $_SERVER["SCRIPT_NAME"] has bad value under CGI mode
     // set 'cgi.fix_pathinfo=1' in the php.ini under
  @@ -406,9 +405,9 @@
   function get_title($page,$title='') {
     global $DBInfo;
     if (!empty($DBInfo->use_titlecache)) {
  -    $cache=new Cache_text('title');
  -    if ($cache->exists($page)) $title=$cache->fetch($page);
  -    else $title=$title ? $title:$page;
  +    $cache = new Cache_text('title');
  +    $title = $cache->fetch($page);
  +    $title = $title ? $title : $page;
     } else
       $title=$title ? $title: $page;
   
  @@ -2818,7 +2817,7 @@
         $force_init=1;
       }
       if (!empty($formatter->refresh) and $cf->exists('interwiki') and !$force_init) {
  -      $info=unserialize($cf->fetch('interwiki'));
  +      $info = $cf->fetch('interwiki');
         $DBInfo->interwiki=$info['interwiki'];
         $DBInfo->interwikirule=$info['interwikirule'];
         $DBInfo->intericon=$info['intericon'];
  @@ -2891,7 +2890,7 @@
       $DBInfo->interwikirule=$interwikirule;
       $DBInfo->intericon=$intericon;
       $interinfo=
  -      serialize(array('interwiki'=>$interwiki,'interwikirule'=>$interwikirule,'intericon'=>$intericon));
  +      array('interwiki'=>$interwiki,'interwikirule'=>$interwikirule,'intericon'=>$intericon);
       $cf->update('interwiki',$interinfo);
       break;
     }
  @@ -3018,11 +3017,11 @@
     $locked = _fake_locked($lock_file, $DBInfo->mtime());
     if ($locked or ($DBInfo->mtime() < $kc->mtime('key') + $delay and $kc->exists('key'))) {
       if ($formatter->group) {
  -      $keys = unserialize($kc->fetch('key.'.$formatter->group));
  -      $titleindex = unserialize($kc->fetch('titleindex.'.$formatter->group));
  +      $keys = $kc->fetch('key.'.$formatter->group);
  +      $titleindex = $kc->fetch('titleindex.'.$formatter->group);
       } else {
  -      $keys = unserialize($kc->fetch('key'));
  -      $titleindex = unserialize($kc->fetch('titleindex'));
  +      $keys = $kc->fetch('key');
  +      $titleindex = $kc->fetch('titleindex');
       }
       if (!empty($sel) and isset($titleindex[$sel])) {
         $all_pages = $titleindex[$sel];
  @@ -3078,11 +3077,11 @@
         $keys[]='all';
   
       if ($formatter->group) {
  -      $kc->update('key.'.$formatter->group, serialize($keys));
  -      $kc->update('titleindex.'.$formatter->group, serialize($titleindex));
  +      $kc->update('key.'.$formatter->group, $keys);
  +      $kc->update('titleindex.'.$formatter->group, $titleindex);
       } else {
  -      $kc->update('key', serialize($keys));
  -      $kc->update('titleindex', serialize($titleindex));
  +      $kc->update('key', $keys);
  +      $kc->update('titleindex', $titleindex);
       }
   
       if (!empty($sel) and isset($titleindex[$sel]))
  
  
  
  1.3       +3 -1      moniwiki/lib/version.CVS.php
  
  Index: version.CVS.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/version.CVS.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- version.CVS.php	17 Apr 2008 09:58:32 -0000	1.2
  +++ version.CVS.php	7 Sep 2010 12:11:48 -0000	1.3
  @@ -3,10 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a CVS versioning plugin for the MoniWiki
   //
  -// $Id: version.CVS.php,v 1.2 2008/04/17 09:58:32 wkpark Exp $
  +// $Id: version.CVS.php,v 1.3 2010/09/07 12:11:48 wkpark Exp $
   // WARNING: experimental
   //
   
  +require_once(dirname(__FILE__).'/version.RCS.php');
  +
   class Version_CVS extends Version_RCS {
     var $DB;
   
  
  
  
  1.5       +3 -1      moniwiki/lib/version.Git.php
  
  Index: version.Git.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/version.Git.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- version.Git.php	9 Jan 2009 12:49:09 -0000	1.4
  +++ version.Git.php	7 Sep 2010 12:11:48 -0000	1.5
  @@ -3,10 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Git versioning plugin for the MoniWiki
   //
  -// $Id: version.Git.php,v 1.4 2009/01/09 12:49:09 wkpark Exp $
  +// $Id: version.Git.php,v 1.5 2010/09/07 12:11:48 wkpark Exp $
   // WARNING: experimental
   //
   
  +require_once(dirname(__FILE__).'/version.RCS.php');
  +
   class Version_Git extends Version_RCS {
     var $DB;
   
  
  
  
  1.1                  moniwiki/lib/cache.text.php
  
  Index: cache.text.php
  ===================================================================
  <?php
  /**
   * Cache.Text.php - Flat file Cache class
   *
   * @author	Won-Kyu Park <wkpark@kldp.org>
   * @version	$Id: cache.text.php,v 1.1 2010/09/07 12:11:48 wkpark Exp $
   * @license	GPLv2
   * @revision	$Revision: 1.1 $
   * @description	save a serialized object/array or a raw string(html/php etc.)
   *
   */
  
  class Cache_Text {
  	/**
  	 * the cache name
  	 *
  	 * @var		string	$name
  	 */
  	var $name = __CLASS__;
  
  	/**
  	 * the cache revision
  	 *
  	 * @var		string	$revision
  	 */
  	var $revision = '0.5';
  
  	/**
  	 * default cache arena name
  	 *
  	 * @var		string	$arena
  	 */
  	var $arena = 'default';
  
  	/**
  	 * time to live (default 1 day)
  	 *
  	 * @var		string	$ttl
  	 */
  	var $ttl = 86400 /* 60 * 60 * 24 */;
  
  	/**
  	 * cache depth for scalability
  	 *
  	 * @var		intger	$depth
  	 */
  	var $depth = 2;
  
  	/**
  	 * optional cache file extension
  	 *
  	 * @var		string	$ext
  	 */
  	var $ext = '';
  
  	/**
  	 * cache file handler for a raw string (html/php etc.)
  	 *
  	 * @var		string	$handler
  	 */
  	var $handler = '';
  
  	/**
  	 * cache file path
  	 *
  	 * @var		string	$cache_path
  	 */
  	var $cache_path = '/var/tmp/_cache';
  
  	/**
  	 * make a uniq id with a given hash function
  	 *
  	 * @var		string	$hash
  	 */
  	var $hash = 'md5';
  
  	function Cache_Text($arena = 'default', $cache_info = false)
  	{
  		global $Config;
  
  		$cache_path = (!empty($cache_info['dir'])) ? $cache_info['dir'] : $Config['cache_dir'];
  
  		$this->arena = $arena;
  		$this->cache_path = $cache_path;
  		$this->cache_dir = $cache_path . '/' . $arena;
  
  		if (empty($cache_info)) {
  			$cache_info = $this->_fetch_serial('.info');
  
  			if (empty($cache_info)) {
  				$cache_info = $this->_save_cache_info();
  			}
  		}
  
  		$this->initCacheInfo($cache_info);
  	}
  
  	function initCacheInfo($cache_info = false)
  	{
  		isset($cache_info['ttl']) ? $this->ttl = $cache_info['ttl'] : true;
  		isset($cache_info['depth']) ? $this->depth = $cache_info['depth'] : true;
  		isset($cache_info['ext']) ? $this->ext = $cache_info['ext'] : true;
  		isset($cache_info['handler']) ? $this->handler = $cache_info['handler'] : true;
  		isset($cache_info['hash']) ? $this->hash = $cache_info['hash'] : true;
  
  		// FIXME. How can I direct access with a cache key name ?
  		if (!function_exists($this->hash))
  			$this->hash = 'md5';
  
  		!empty($this->ext) ? $this->_ext = '.' . $this->ext : $this->_ext  = '';
  	}
  
  	function updateCacheInfo($ttl = 0, $depth = 0, $ext = 0, $handler = '', $hash = 'md5')
  	{
  		$info = $this->cache_dir . '/.info';
  		if (file_exists($info)) {
  			$infos = $this->_fetch_serial('.info');
  
  			$infos['ttl'] = ($ttl) ? $ttl : $this->ttl;
  			$infos['depth'] = ($depth) ? $depth : $this->depth;
  			$infos['ext'] = ($ext) ? $ext : $this->ext;
  			$infos['handler'] = ($handler) ? $handler : $this->handler;
  			$infos['hash'] = ($hash) ? $hash : $this->hash;
  		}
  		return $this->_save_cache_info($infos);
  	}
  
  	function getCacheInfo()
  	{
  		$infos = $this->_fetch_serial('.info');
  		return $infos;
  	}
  
  	function _save_cache_info($cache_info = false)
  	{
  		if (!$cache_info) {
  			// set default cache_info
  			$cache_info = array();
  			$cache_info['ttl'] = $this->ttl;
  			$cache_info['depth'] = $this->depth;
  			!empty($cache_info['ext']) ? $cache_info['ext'] = $cache_info['ext'] : $this->ext;
  			$cache_info['handler'] = $this->handler;
  			$cache_info['hash'] = $this->hash;
  			$this->_update('.info', $cache_info);
  			//$this->_update('.info', $cache_info, 0, array('type'=>'php'));
  		}
  		return $cache_info;
  	}
  
  
  	function getKey($id, $hash = true)
  	{
  		if (!empty($this->hash) and $hash) {
  			$func = $this->hash;
  			$key = $func($id);
  		} else {
  			$key = $id;
  		}
  
  		if (!empty($this->depth)) {
  			$prefix = substr($key, 0, $this->depth);
  			return $prefix . '/' . $key . $this->_ext;
  		}
  		return $key . $this->_ext;
  	}
  
  	function getUniq($id)
  	{
  		if ($this->hash) {
  			$func = $this->hash;
  			return $func($id);
  		}
  		return $id;
  	}
  
  	function update($id, $val, $ttl_or_mtime = 0, $params = null)
  	{
  		$id = (string)$id;
  		if (!isset($id[0])) return false;
  
  		$ttl = 0;
  		$key = $this->getKey($id);
  
  		if ($ttl_or_mtime) {
  			if ($ttl_or_mtime < 31536000 /* 60*60*24*365 (1 year) */ ) {
  				// is it ttl(time to live) ?
  				$ttl = $ttl_or_mtime;
  			} else {
  				// or mtime.
  				if ($ttl_or_mtime and ($ttl_or_mtime <= $this->mtime($key)))
  					return false;
  			}
  		}
  
  		$this->updateCacheInfo();
  		return $this->_update($key, $val, $ttl, $params);
  	}
  
  	function _update($key, $val, $ttl = 0, $params = null)
  	{
  		$type = isset($params['type']) ? $params['type'] : $this->ext;
  		$save = $val;
  		if (is_array($val) or is_object($val)) {
  			$vals = array();
  			!empty($params['deps']) ? $vals['deps'] = $params['deps'] : false;
  			// php var_export() or serialize()
  			if ($type == 'php') {
  				$header = '';
  				($ttl) ? $vals['ttl'] = $ttl : null;
  				$header = $this->header($type, $vals);
  				$save = $header."\n".'<'.'?php return '.var_export($val, true).';';
  			} else {
  				$vals['ttl'] = $ttl;
  				$vals['mtime'] = time();
  				$vals['val'] = $val;
  				$save = serialize($vals);
  			}
  		} else if (!empty($type)) {
  			$vals = array();
  			($ttl) ? $vals['ttl'] = $ttl : null;
  			!empty($params['deps']) ? $vals['deps'] = $params['deps'] : null;
  			$header = $this->header($type, $vals);
  
  			$save = $header."\n".$val;
  		}
  		return $this->_save($key, $save);
  	}
  
  	function _save($key, $val)
  	{
  		$dir = dirname($this->cache_dir . '/' . $key);
  		if (!is_dir($dir)) {
  			$om = umask(~0777);
  			mkdir($dir, 0777, true);
  			umask($om);
  		}
  		$fp = fopen($this->cache_dir . '/' .$key, 'a+b');
  		if (is_resource($fp)) {
  			flock($fp, LOCK_EX);
  			ftruncate($fp, 0);
  			fwrite($fp, $val);
  			flock($fp, LOCK_UN);
  			fclose($fp);
  
  			return true;
  		}
  		return false;
  	}
  
  
  	function fetch($id, $mtime = 0, $params = array()) {
  		$key = $this->getKey($id);
  		if ($this->_exists($key)) {
  			if (empty($mtime))
  				return $this->_fetch($key, 0, $params);
  			else if ($this->_mtime($key) > $mtime)
  				return $this->_fetch($key, $mtime, $params);
  		}
  		return false;
  	}
  
  	function exists($id) {
  		$key = $this->getKey($id);
  		return $this->_exists($key);
  	}
  
  	function _exists($key) {
  		return @file_exists($this->cache_dir . '/' . $key);
  	}
  
  	function _fetch_serial($key) {
  		$fname = $this->cache_dir . '/'. $key;
  
  		$fp = @fopen($fname, 'r');
  		if (!is_resource($fp)) return false;
  
  		$size = filesize($fname);
  		if ($size == 0) return false;
  		$ret = fread($fp, $size);
  		fclose($fp);
  		$val = unserialize($ret);
  		return $val['val'];
  	}
  
  	function _fetch_php($key) {
  		$fname = $this->cache_dir . '/'. $key;
  
  		$val = @include $fname;
  		if ($val === false) return false;
  		return $val['val'];
  	}
  
  	function _fetch($key, $mtime = 0, $params = array()) {
  		$type = isset($params['type']) ? $params['type'] : $this->ext;
  
  		$fname = $this->cache_dir . '/'. $key;
  
  		$fp = fopen($fname, 'r');
  		if (!is_resource($fp)) return false;
  
  		$size = filesize($fname);
  		if ($size == 0) return false;
  		$header = fgets($fp, 256);
  		$len = 0;
  
  		// Is it serialized ?
  		if (isset($header[1]) and $header[1] == ':' and in_array($header[0], array('a','O'))) {
  			$len = strlen($header);
  			$ret = $header;
  			if ($size > $len) $ret.= fread($fp, $size - $len);
  			fclose($fp);
  			$val = unserialize($ret);
  		} else {
  			if (empty($type)) $type = 'raw';
  
  			$val = $this->sanity($header, $type, $fp); // sanity check.
  			$ret = $header;
  			if (is_bool($val)) {
  				if ($val === false)
  					return false; // fail
  				$val = array();
  				$val['mtime'] = filemtime($fname);
  			}
  		}
  
  		// get cache mtime
  		$cmtime = $val['mtime'];
  
  		// check mtime
  		if ($mtime and $cmtime < $mtime)
  			return false;
  
  		// check ttl
  		if (isset($params['ttl'])) {
  			if (empty($val['ttl']) or $params['ttl'] < $val['ttl'])
  				$val['ttl'] = $params['ttl'];
  		}
  
  		if (!empty($val['ttl']) and $cmtime + $val['ttl'] < time()) {
  			return false;
  		}
  
  		// check mtime of dependencies
  		if (!empty($val['deps'])) {
  			$deps = &$val['deps'];
  			if (!is_array($deps)) {
  				$deps = array($deps);
  			}
  			$dmtime = $mtime ? $mtime : $cmtime;
  
  			foreach ($deps as $dep) {
  				if (file_exists($dep) and $dmtime < filemtime($dep)) {
  					return false;
  				}
  			}
  		}
  
  		// flat files. html, php, etc.
  		if (is_resource($fp) and $size > $len) {
  			// include ?
  			if (!empty($params['include'])) {
  				fclose($fp);
  				return include $fname;
  			}
  
  			// print contents
  			if (!$len and !empty($params['print'])) {
  				fclose($fp);
  				return readfile($fname);
  			}
  
  			// read remaining contents
  			$ret.= fread($fp, $size - $len);
  			//$ret = fread($fp, $size - $len);
  			fclose($fp);
  
  			// print contents ?
  			if (!empty($params['print']))
  				return print $ret;
  
  			// or return
  			return $ret;
  		}
  		return $val['val'];
  	}
  
  	function _mtime($key) {
  		return filemtime($this->cache_dir . '/' . $key);
  	}
  
  	function mtime($id = null) {
  		if (empty($id))
  			return filemtime($this->cache_dir . '/.info');
  
  		$key = $this->getKey($id);
  		if ($this->_exists($key))
  			return $this->_mtime($key);
  		return 0;
  	}
  
  	function remove($id) {
  		$key = $this->getKey($id);
  		if ($this->_exists($key)) {
  			unlink($this->cache_dir.'/'.$key);
  			return true;
  		}
  		return false;
  	}
  
  	/**
  	 * make cache header
  	 */
  	function header($type, $vals = false)
  	{
  		$timestamp = time();
  		switch($type) {
  		case 'html':
  			$bra = '<!-- // ' . $this->name . ' ' . $this->revision . ' ' . $timestamp."\n";
  			$ket = "\n" . '-->';
  			break;
  		case 'php':
  			$bra = '<'.'?php /* ' . $this->name . ' ' . $this->revision . ' ' . $timestamp."\n";
  			$ket = "\n" . '*/?'.'>';
  			break;
  		default: // raw
  			$bra = '';
  			$ket = '';
  			return '';
  		}
  
  		if (!empty($vals))
  			$out = base64_encode(serialize($vals))."\n";
  		else
  			$out = '';
  
  		return $bra.$timestamp.' '.$out.$ket;
  	}
  
  	/**
  	 * parse cache header
  	 */
  	function sanity($header, $type, $fp, $params = false)
  	{
  		if ($type == 'raw') return true; // XXX binary or raw caches
  
  		$ret = fgets($fp, 1024);
  		while (!feof($fp) and strrpos($ret, "\n") === false)
  			$ret.= fgets($fp, 1024);
  
  		$vals = array();
  		list($timestamp, $val) = explode(' ', $ret);
  		if (trim($val)) {
  			$vals = unserialize(base64_decode($val));
  		}
  		$vals['mtime'] = $timestamp;
  		return $vals;
  	}
  
  	/**
  	 * get all cache files
  	 *
  	 */
  	function _caches(&$files, $dir = '')
  	{
  		$top = $this->cache_dir;
  		$prefix = '';
  		$_dir = $top;
  		if (!empty($dir)) {
  			$prefix = $dir .'/';
  			$_dir = $top.'/'.$dir;
  		}
  
  		$dh = opendir($_dir);
  		if (!$dh) return; // slightly ignore
  
  		while (($file = readdir($dh)) !== false) {
  			if ($file[0] == '.')
                  		continue;
  			if (is_dir($_dir . '/'. $file)) {
  				$this->_caches($files, $file);
  				continue;
  			}
  
  			$files[] = $prefix . $file;
  		}
  		closedir($dh);
  	}
  }
  
  	/**
  	// TODO support handler
  	function header($type, $vals = false)
  	{
  		if (empty($this->handler))
  			return '';
  
  		if (!is_object($this->handler)) {
  			$class = $this->handler;
  			$this->handler = new $class;
  		}
  		return $this->handler->header($this, $type, $vals);
  	}
  
  	function sanity($header, $type, $fp = false, $params = false)
  	{
  		if (empty($this->handler))
  			return true;
  
  		if (!is_object($this->handler)) {
  			$class = $this->handler;
  			$this->handler = new $class;
  		}
  		return $this->handler->sanity($this, $header, $params);
  	}
  	*/
  
  // Local Variables:
  // mode: php
  // c-file-style: "bsd"
  // End:
  
  
  
  1.1                  moniwiki/lib/timer.php
  
  Index: timer.php
  ===================================================================
  <?php
  // Copyright 2003-2010 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // A simple Timer class
  //
  // @since  2003/04/12
  // @author wkpark@kldp.org
  //
  // $Id: timer.php,v 1.1 2010/09/07 12:11:48 wkpark Exp $
  //
  
  class Timer {
      var $timers = array();
      var $total = 0.0;
  
      function Timer() {
          $mt = explode(' ',microtime());
          $this->save = $mt[0] + $mt[1];
      }
  
      function Check($name="default") {
          $mt = explode(' ',microtime());
          $now = $mt[0] + $mt[1];
          $diff = $now - $this->save;
          $this->save = $now;
          if (isset($this->timers[$name]))
              $this->timers[$name]+= $diff;
          else
              $this->timers[$name] = $diff;
          $this->total+= $diff;
      }
  
      function Write() {
          $out = '';
          while (list($name,$d) = each($this->timers)) {
              $out.= sprintf("%10s :%3.4f sec (%3.2f %%)\n", $name, $d, $d/$this->total*100);
          }
          return $out;
      }
  
      function Total() {
          return sprintf("%4.4f sec\n", $this->total);
      }
  
      function Clean() {
          $this->timers = array();
      }
  }
  
  // vim:et:sts=4:sw=4:
  
  
  
  1.1                  moniwiki/lib/version.RCS.php
  
  Index: version.RCS.php
  ===================================================================
  <?php
  // Copyright 2008 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a RCS versioning plugin for the MoniWiki
  //
  // @since  2003/08/22
  // @author wkpark@kldp.org
  //
  // $Id: version.RCS.php,v 1.1 2010/09/07 12:11:48 wkpark Exp $
  //
  
  class Version_RCS {
    var $DB;
  
    function Version_RCS($DB) {
      $this->DB=$DB;
      $this->NULL='';
      if(getenv("OS")!="Windows_NT") $this->NULL=' 2>/dev/null';
      if (!empty($DB->rcs_error_log)) $this->NULL='';
    }
  
    function _filename($pagename) {
      # have to be factored out XXX
      # Return filename where this word/page should be stored.
      return $this->DB->getPageKey($pagename);
    }
  
    function co($pagename,$rev,$opt=array()) {
      $filename= $this->_filename($pagename);
  
      $rev=(is_numeric($rev) and $rev>0) ? "\"".$rev."\" ":'';
      $ropt='-p';
      if (!empty($opt['stdout'])) $ropt='-r';
      $fp=@popen("co -x,v/ -q $ropt$rev ".$filename.$this->NULL,"r");
      if (!empty($opt['stdout'])) {
        if (is_resource($fp)) {
          pclose($fp);
          return '';
        }
      }
  
      $out='';
      if (is_resource($fp)) {
        while (!feof($fp)) {
          $line=fgets($fp,2048);
          $out.= $line;
        }
        pclose($fp);
      }
      return $out;
    }
  
    function ci($pagename,$log) {
      $key=$this->_filename($pagename);
      $pgname=escapeshellcmd($pagename);
      $this->_ci($key,$log);
    }
  
    function _ci($key,$log) {
      $dir=dirname($key);
      if (!is_dir($dir.'/RCS')) {
        $om=umask(000);
        _mkdir_p($dir.'/RCS', 2777);
        umask($om);
      }
      $fp=@popen("ci -l -x,v/ -q -t-\"".$key."\" -m\"".$log."\" ".$key.$this->NULL,"r");
      if (is_resource($fp)) pclose($fp);
    }
  
    function rlog($pagename,$rev='',$opt='',$oldopt='') {
      $rev = (is_numeric($rev) and $rev > 0) ? "-r$rev":'';
      $filename=$this->_filename($pagename);
  
      $fp= popen("rlog $opt $oldopt -x,v/ $rev ".$filename.$this->NULL,"r");
      $out='';
      if (is_resource($fp)) {
        while (!feof($fp)) {
          $line=fgets($fp,1024);
          $out .= $line;
        }
        pclose($fp);
      }
      return $out;
    }
  
    function diff($pagename,$rev="",$rev2="") {
      $option = '';
      if ($rev) $option="-r$rev ";
      if ($rev2) $option.="-r$rev2 ";
  
      $filename=$this->_filename($pagename);
      $fp=popen("rcsdiff -x,v/ --minimal -u $option ".$filename.$this->NULL,'r');
      if (!is_resource($fp)) return '';
      while (!feof($fp)) {
        # trashing first two lines
        $line=fgets($fp,1024);
        if (preg_match('/^--- /',$line)) {
          $line=fgets($fp,1024);
          break;
        }
      }
      $out = '';
      while (!feof($fp)) {
        $line=fgets($fp,1024);
        $out.= $line;
      }
      pclose($fp);
      return $out;
    }
  
    function purge($pagename,$rev) {
    }
  
    function delete($pagename) {
      $keyname=$this->DB->_getPageKey($pagename);
      @unlink($this->DB->text_dir."/RCS/$keyname,v");
    }
  
    function rename($pagename,$new) {
      $keyname=$this->DB->_getPageKey($new);
      $oname=$this->DB->_getPageKey($pagename);
      rename($this->DB->text_dir."/RCS/$oname,v",
        $this->DB->text_dir."/RCS/$keyname,v");
    }
  
    function get_rev($pagename,$mtime='',$last=0) {
      $opt = '';
      if ($last==1) {
        $tag='head:';
        $opt='-h';
      } else $tag='revision';
      if ($mtime) {
        $date=gmdate('Y/m/d H:i:s',$mtime);
        if ($date) {
          $opt="-d\<'$date'";
          $tag='revision';
        }
      }
  
      $rev = '';
      $out= $this->rlog($pagename,'',$opt);
      if ($out) {
        for ($line=strtok($out,"\n"); $line !== false;$line=strtok("\n")) {
          preg_match("/^$tag\s+([\d\.]+)$/",$line,$match);
          if (isset($match[1])) {
            $rev=$match[1];
            break;
          }
        }
      }
      return $rev;
    }
    function export($pagename) {
      $keyname=$this->DB->_getPageKey($pagename);
      $fname=$this->DB->text_dir."/RCS/$keyname,v";
      $fp=fopen($fname,'r');
      $out = '';
      if (is_resource($fp)) {
        $sz=filesize($fname);
        if ($sz > 0)
          $out=fread($fp,$sz);
        fclose($fp);
      }
      return $out;
    }
  
    function import($pagename,$rcsfile) {
      if (empty($rcsfile))
        return false;
  
      $keyname=$this->DB->_getPageKey($pagename);
      $fname=$this->DB->text_dir."/RCS/$keyname,v";
      $om=umask(0770);
      chmod($fname,0664);
      umask($om);
      $fp=fopen($fname,'w');
      if (is_resource($fp)) {
        fwrite($fp,$rcsfile);
        fclose($fp);
        return true;
      }
      return false;
    }
  }
  
  // vim:et:ts=8:sts=2:sw=2
  ?>
  
  
  
  1.1                  moniwiki/lib/wikiconfig.php
  
  Index: wikiconfig.php
  ===================================================================
  <?php
  //
  // Default MoniWiki Configuations
  //
  
  function WikiConfig($conf) {
      $frontpage = 'FrontPage';
      $sitename = 'UnnamedWiki';
      $upload_dir = 'pds';
      $data_dir = './data';
      $query_prefix = '/';
      $umask = 0770;
      $charset = 'utf-8';
      $lang = 'auto';
      $dba_type = "db3";
  
      $text_dir = $data_dir.'/text';
      $cache_dir = $data_dir.'/cache';
      $user_dir = $data_dir.'/user';
      $vartmp_dir = '/var/tmp';
      $intermap = $data_dir.'/intermap.txt';
      $interwikirule = '';
      $editlog_name = $data_dir.'/editlog';
      $shared_intermap = $data_dir."/text/InterMap";
      $shared_metadb = $data_dir."/metadb";
  
      $url_prefix = '/moniwiki';
      $imgs_dir = $url_prefix.'/imgs';
      $css_dir = 'css';
      $css_url = $url_prefix.'/css/default.css';
      $kbd_script = $url_prefix.'/css/kbd.js';
      $logo_img = $imgs_dir.'/moniwiki-logo.png';
      $logo_page = $frontpage;
      $logo_string = '<img src="'.$logo_img.'" alt="[logo]" class="wikiLogo" />';
      $metatags = '<meta name="robots" content="noindex,nofollow" />';
      $doctype = <<<EOS
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml">
  EOS;
      $hr = "<hr class='wikiHr' />";
      $date_fmt = 'Y-m-d';
      $date_fmt_rc = 'D d M Y';
      $date_fmt_blog = 'M d, Y';
      $datetime_fmt = 'Y-m-d H:i:s';
      $default_markup = 'wiki';
      //$changed_time_fmt = ' . . . . [h:i a]';
      $changed_time_fmt = ' [h:i a]'; # used by RecentChanges macro
      $admin_passwd = 'daEPulu0FLGhk'; # default value moniwiki
      $purge_passwd = '';
      $rcs_user = 'root';
      $actions = array('DeletePage', 'LikePages');
      $show_hosts = TRUE;
      $iconset = 'moni';
      $css_friendly = '0';
      $goto_type = '';
      $goto_form = '';
      $template_regex = '[a-z]Template$';
      $category_regex = '^Category[A-Z]';
      $notify = 0;
      $trail = 0;
      $origin = 0;
      $arrow = " &#x203a; ";
      $home = 'Home';
      $diff_type = 'fancy';
      $hr_type = 'simple';
      $nonexists = 'simple';
  
      $use_smileys = 1;
      $smiley = 'wikismiley';
      $use_counter = 0;
      $use_category = 1;
      $use_camelcase = 1;
      $use_sistersites = 1;
      $use_singlebracket = 1;
      $use_twinpages = 1;
      $use_hostname = 1;
  
      $email_guard = 'hex';
      $pagetype = array();
      $convmap = array(0xac00, 0xd7a3, 0x0000, 0xffff); /* for euc-kr */
      $theme = '';
  
      $inline_latex = 0;
      $processors = array();
  
      $perma_icon = '#';
      $purple_icon = '#';
      $use_purple = 0;
      $version_class = 'RCS';
      $title_rule = '((?<=[a-z0-9]|[B-Z]{2})([A-Z][a-z]))';
      $login_strict = 1;
      $use_fakemtime = 0; // dir mtime emulation for FAT filesytem.
      $purge_passwd = $admin_passwd;
  
      $default = get_defined_vars();
      unset($default['conf']);
  
      $config = new StdClass;
      foreach ($default as $k=>$v) {
          $config->$k = $v;
      }
  
      if (is_array($conf)) {
          // override config with user-specified configurations
          if (!empty($conf)) {
              // read configurations
              foreach ($conf as $k=>$v) {
                  if ($k[0] == '_') continue; // ignore internal variables
                  $config->$k = $v;
              }
          }
      }
  
      //
      // set default config variables
      //
      if (!empty($config->use_wikiwyg) and empty($config->sectionedit_attr))
          $config->sectionedit_attr = 1;
  
      if (empty($config->menu)) {
          $config->menu = array($config->frontpage=>"accesskey='1'",'FindPage'=>"accesskey='4'",'TitleIndex'=>"accesskey='3'",'RecentChanges'=>"accesskey='2'");
          $config->menu_bra = '';
          $config->menu_cat = '|';
          $config->menu_sep = '|';
      }
  
      // for backward compatibility
      empty($config->imgs_dir_url) ? $config->imgs_dir_url = $config->imgs_dir.'/' : null;
      $config->imgs_url_interwiki = $config->imgs_dir_url;
  
      if (empty($config->upload_dir_url))
          $config->upload_dir_url = $config->upload_dir;
  
      if (empty($config->imgs_real_dir)) {
          if (function_exists('apache_lookup_uri')) {
              $info = apache_lookup_uri($config->imgs_dir_url);
  
              if (isset($info->filename)) {
                  if (preg_match('@/$@', $info->filename) or is_dir($info->filename))
                      $config->imgs_real_dir = $info->filename;
                  else
                      $config->imgs_real_dir = dirname($info->filename);
              }
          }
      } else {
          $config->imgs_real_dir = basename($config->imgs_dir); // XXX
      }
  
      if (is_dir($config->imgs_real_dir.'/interwiki/'))
          $config->imgs_url_interwiki = $config->imgs_dir_url.'/interwiki/';
  
      if (empty($config->icon)) {
          $iconset = $config->iconset;
  
          // for backward compatibility
          $ext = 'png';
          if (is_dir($config->imgs_real_dir.'/'.$iconset)) $iconset.= '/';
          else $iconset.= '-';
  
          if (file_exists($config->imgs_real_dir.'/'.$iconset.'http.png'))
              $config->imgs_url = $config->imgs_dir_url.'/'.$iconset;
  
          $imgdir = rtrim($config->imgs_dir_url, '/');
  
          if (!file_exists($config->imgs_real_dir.'/'.$iconset.'home.png')) $ext = 'gif';
  
          $config->icon['upper'] = "<img src='$imgdir/${iconset}upper.$ext' alt='U' class='wikiIcon' />";
          $config->icon['edit'] = "<img src='$imgdir/${iconset}edit.$ext' alt='E' class='wikiIcon' />";
          $config->icon['diff'] = "<img src='$imgdir/${iconset}diff.$ext' alt='D' class='wikiIcon' />";
          $config->icon['del'] = "<img src='$imgdir/${iconset}deleted.$ext' alt='(del)' class='wikiIcon' />";
          $config->icon['info'] = "<img src='$imgdir/${iconset}info.$ext' alt='I' class='wikiIcon' />";
          $config->icon['rss'] = "<img src='$imgdir/${iconset}rss.$ext' alt='RSS' class='wikiIcon' />";
          $config->icon['show'] = "<img src='$imgdir/${iconset}show.$ext' alt='R' class='wikiIcon' />";
          $config->icon['find'] = "<img src='$imgdir/${iconset}search.$ext' alt='S' class='wikiIcon' />";
          $config->icon['help'] = "<img src='$imgdir/${iconset}help.$ext' alt='H' class='wikiIcon' />";
          $config->icon['pref'] = "<img src='$imgdir/${iconset}pref.$ext' alt='C' class='wikiIcon' />";
          $config->icon['www'] = "<img src='$imgdir/${iconset}www.$ext' alt='www' class='wikiIcon' />";
          $config->icon['mailto'] = "<img src='$imgdir/${iconset}email.$ext' alt='M' class='wikiIcon' />";
          $config->icon['create'] = "<img src='$imgdir/${iconset}create.$ext' alt='N' class='wikiIcon' />";
          $config->icon['new'] = "<img src='$imgdir/${iconset}new.$ext' alt='U' class='wikiIcon' />";
          $config->icon['updated'] = "<img src='$imgdir/${iconset}updated.$ext' alt='U' class='wikiIcon' />";
          $config->icon['user'] = "UserPreferences";
          $config->icon['home'] = "<img src='$imgdir/${iconset}home.$ext' alt='M' class='wikiIcon' />";
          $config->icon['main'] = "<img src='$imgdir/${iconset}main.$ext' class='icon' alt='^' class='wikiIcon' />";
          $config->icon['print'] = "<img src='$imgdir/${iconset}print.$ext' alt='P' class='wikiIcon' />";
          $config->icon['scrap'] = "<img src='$imgdir/${iconset}scrap.$ext' alt='S' class='wikiIcon' />";
          $config->icon['unscrap'] = "<img src='$imgdir/${iconset}unscrap.$ext' alt='S' class='wikiIcon' />";
          $config->icon['attach'] = "<img src='$imgdir/${iconset}attach.$ext' alt='@' class='wikiIcon' />";
          $config->icon['external'] = "<img class='externalLink' src='$imgdir/${iconset}external.$ext' alt='[]' class='wikiIcon' />";
          $config->icon_sep = " ";
          $config->icon_bra = " ";
          $config->icon_cat = " ";
      }
  
      if (empty($config->icons)) {
          $config->icons = array(
                  'edit' =>array("","?action=edit",$config->icon['edit'],"accesskey='e'"),
                  'diff' =>array("","?action=diff",$config->icon['diff'],"accesskey='c'"),
                  'show' =>array("","",$config->icon['show']),
                  'find' =>array("FindPage","",$config->icon['find']),
                  'info' =>array("","?action=info",$config->icon['info']));
          if (!empty($config->notify))
              $config->icons['subscribe'] = array("","?action=subscribe",$config->icon['mailto']);
          $config->icons['help'] = array("HelpContents","",$config->icon['help']);
          $config->icons['pref'] = array("UserPreferences","",$config->icon['pref']);
      }
  
      // some alias
      if (!empty($config->use_captcha))
        $config->use_ticket = $config->use_captcha;
  
      return get_object_vars($config);
  }
  
  // vim:et:sts=4:sw=4:
  
  
  
  1.39      +5 -5      moniwiki/plugin/FullSearch.php
  
  Index: FullSearch.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/FullSearch.php,v
  retrieving revision 1.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- FullSearch.php	28 Aug 2010 08:02:32 -0000	1.38
  +++ FullSearch.php	7 Sep 2010 12:11:49 -0000	1.39
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a FullSearch plugin for the MoniWiki
   //
  -// $Id: FullSearch.php,v 1.38 2010/08/28 08:02:32 wkpark Exp $
  +// $Id: FullSearch.php,v 1.39 2010/09/07 12:11:49 wkpark Exp $
   
   function do_fullsearch($formatter,$options) {
   
  @@ -159,7 +159,7 @@
     # retrieve cache
     $fc=new Cache_text($arena);
     if (!$formatter->refresh and $fc->exists($sid)) {
  -    $data=unserialize($fc->fetch($sid));
  +    $data=$fc->fetch($sid);
       if (is_array($data)) {
         # check cache mtime
         $cmt=$fc->mtime($sid);
  @@ -199,7 +199,7 @@
         #$opts['context']=-1; # turn off context-matching
         $cache=new Cache_text("pagelinks");
         foreach ($pages as $page_name) {
  -        $links=unserialize($cache->fetch($page_name));
  +        $links = $cache->fetch($page_name);
           if (is_array($links)) {
             if (in_array($value,$links))
               $hits[$page_name] = -1;
  @@ -211,7 +211,7 @@
         $opts['context']=-1; # turn off context-matching
         $cache=new Cache_text("keyword");
         foreach ($pages as $page_name) {
  -        $links=unserialize($cache->fetch($page_name));
  +        $links=$cache->fetch($page_name);
           // XXX
           if (is_array($links)) {
             if (stristr(implode(' ',$links),$needle))
  @@ -240,7 +240,7 @@
       $name = array_keys($hits);
       array_multisort($hits, SORT_DESC, $name, SORT_ASC);
   
  -    $fc->update($sid,serialize($hits));
  +    $fc->update($sid,$hits);
     }
   
     $opts['hits']= $hits;
  
  
  
  1.38      +11 -16    moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- Keywords.php	23 Aug 2010 15:14:10 -0000	1.37
  +++ Keywords.php	7 Sep 2010 12:11:49 -0000	1.38
  @@ -8,12 +8,12 @@
   // Name: a Keywords Plugin
   // Description: a Keywords plugin to generate keywords of a page
   // URL: MoniWiki:KeywordsPlugin
  -// Version: $Revision: 1.37 $
  +// Version: $Revision: 1.38 $
   // License: GPL
   //
   // Usage: [[Keywords(options)]]
   //
  -// $Id: Keywords.php,v 1.37 2010/08/23 15:14:10 wkpark Exp $
  +// $Id: Keywords.php,v 1.38 2010/09/07 12:11:49 wkpark Exp $
   
   define('LOCAL_KEYWORDS','LocalKeywords');
   define('MAX_FONT_SZ',24);
  @@ -83,11 +83,11 @@
       $pmt=$cache->mtime($pkey);
       if ($cmt > $pmt) {
           # check update or not
  -        $dmt=filemtime($DBInfo->cache_dir.'/keyword/.');
  +        $dmt=$cache->mtime();
           if ($dmt > $cmt) { # XXX crude method
               $mykeys=array();
           } else {
  -            $mykeys=unserialize($mc->fetch($mkey));
  +            $mykeys = $mc->fetch($mkey);
           }
       } else {
           $mc->remove($mkey);
  @@ -98,15 +98,10 @@
       else $pages=array($pagename);
   
       foreach ($pages as $pn) {
  -        if ($cache->exists($pn)) {
  -            $keys=$cache->fetch($pn);
  -            $keys=unserialize($keys);
  -        } else {
  -            $keys=array();
  -        }
  -        if ($keys) $mykeys=array_merge($mykeys,$keys);
  +        if ($keys = $cache->fetch($pn))
  +            $mykeys = array_merge($mykeys,$keys);
       }
  -    $mc->update($mkey,serialize($mykeys));
  +    $mc->update($mkey, $mykeys);
   
       endif;
   
  @@ -508,16 +503,16 @@
               $all_keys=array_merge($all_keys,$ws);
               foreach ($ws as $k) {
                   $rels=array_diff($ws,array($k));
  -                $krels=unserialize($kc->fetch($k));
  +                $krels = $kc->fetch($k);
                   if (is_array($krels)) {
                       if (($nrels=array_diff($rels,$krels))) {
                           $rs=array_unique(array_merge($nrels,$krels));
  -                        $kc->update($k,serialize($rs));
  +                        $kc->update($k, $rs);
                           print "***** updated $k\n";
                       }
                   } else {
                       if (sizeof($rels) > 1 and is_array($rels)) {
  -                        $kc->update($k,serialize($rels));
  +                        $kc->update($k, $rels);
                           print "***** save $k\n";
                       }
                   }
  @@ -607,7 +602,7 @@
           $keys=$options['key'];
           $keys=array_flip($keys);
           unset($keys['']);
  -        $cache->update($page,serialize(array_keys($keys)));
  +        $cache->update($page, array_keys($keys));
   
           # update 'keylinks' caches
           #$kc=new Cache_text('keylinks');
  
  
  
  1.3       +1 -2      moniwiki/plugin/PageLinks.php
  
  Index: PageLinks.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/PageLinks.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- PageLinks.php	18 Jul 2006 15:10:27 -0000	1.2
  +++ PageLinks.php	7 Sep 2010 12:11:49 -0000	1.3
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Test]]
   //
  -// $Id: PageLinks.php,v 1.2 2006/07/18 15:10:27 wkpark Exp $
  +// $Id: PageLinks.php,v 1.3 2010/09/07 12:11:49 wkpark Exp $
   
   function macro_PageLinks($formatter,$options="") {
     global $DBInfo;
  @@ -19,7 +19,6 @@
     foreach ($pages as $page) {
       $lnks=$cache->fetch($page);
       if ($lnks !== false) {
  -        $lnks=unserialize($lnks);
           $out.="<li>".$formatter->link_tag($page,'',htmlspecialchars($page)).": ";
           $links=implode(' ',$lnks);
           $links=preg_replace("/(".$formatter->wordrule.")/e","\$formatter->link_repl('\\1')",$links);
  
  
  
  1.12      +4 -4      moniwiki/plugin/Play.php
  
  Index: Play.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Play.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- Play.php	19 Apr 2010 11:26:46 -0000	1.11
  +++ Play.php	7 Sep 2010 12:11:49 -0000	1.12
  @@ -8,12 +8,12 @@
   // Name: Play macro
   // Description: media Player Plugin
   // URL: MoniWikiDev:PlayMacro
  -// Version: $Revision: 1.11 $
  +// Version: $Revision: 1.12 $
   // License: GPL
   //
   // Usage: [[Play(http://blah.net/blah.mp3)]]
   //
  -// $Id: Play.php,v 1.11 2010/04/19 11:26:46 wkpark Exp $
  +// $Id: Play.php,v 1.12 2010/09/07 12:11:49 wkpark Exp $
   
   function macro_Play($formatter,$value) {
     global $DBInfo;
  @@ -112,8 +112,8 @@
       if ($sz > 1) {
         $md5sum=md5(implode(':',$media));
         if ($DBInfo->cache_public_dir) {
  -        $fc=new Cache_text('jwmediaplayer',2,'',$DBInfo->cache_public_dir);
  -        $fname=$fc->_getKey($md5sum,0);
  +        $fc=new Cache_text('jwmediaplayer', array('dir'=>$DBInfo->cache_public_dir));
  +        $fname = $fc->getKey($md5sum, false);
           $basename= $DBInfo->cache_public_dir.'/'.$fname;
           $urlbase=
             $DBInfo->cache_public_url ? $DBInfo->cache_public_url.'/'.$fname:
  
  
  
  1.3       +4 -4      moniwiki/plugin/TTFText.php
  
  Index: TTFText.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/TTFText.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TTFText.php	19 Apr 2008 16:19:10 -0000	1.2
  +++ TTFText.php	7 Sep 2010 12:11:49 -0000	1.3
  @@ -8,12 +8,12 @@
   // Name: TTFText
   // Description: TTF Text plugin with Background image technic.
   // URL: MoniWiki:TTFTextPlugin
  -// Version: $Revision: 1.2 $
  +// Version: $Revision: 1.3 $
   // License: GPL
   //
   // Usage: [[TTFText(text,fontname=Eunjin,fontsize=12,float=left)]]
   //
  -// $Id: TTFText.php,v 1.2 2008/04/19 16:19:10 wkpark Exp $
  +// $Id: TTFText.php,v 1.3 2010/09/07 12:11:49 wkpark Exp $
   
   function macro_TTFText($formatter,$value,$params=array()) {
       global $DBInfo;
  @@ -65,8 +65,8 @@
           $DBInfo->url_prefix.'/'.$cache_dir;
   
       if ($DBInfo->cache_public_dir) {
  -        $fc=new Cache_text('ttftext',2,'png',$DBInfo->cache_public_dir);
  -        $pngname=$fc->_getKey($uniq,0);
  +        $fc=new Cache_text('ttftext', array('ext'=>'png','dir'=>$DBInfo->cache_public_dir));
  +        $pngname=$fc->getKey($uniq, false);
           $outpath_png= $DBInfo->cache_public_dir.'/'.$pngname;
           
           $png_url=
  
  
  
  1.6       +6 -5      moniwiki/plugin/UrlMapping.php
  
  Index: UrlMapping.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UrlMapping.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- UrlMapping.php	23 Aug 2010 09:15:23 -0000	1.5
  +++ UrlMapping.php	7 Sep 2010 12:11:49 -0000	1.6
  @@ -5,7 +5,7 @@
   //
   // Usage: [[UrlMapping]]
   //
  -// $Id: UrlMapping.php,v 1.5 2010/08/23 09:15:23 wkpark Exp $
  +// $Id: UrlMapping.php,v 1.6 2010/09/07 12:11:49 wkpark Exp $
   
   function macro_UrlMapping($formatter,$value,$options=array()) {
       global $DBInfo;
  @@ -23,7 +23,7 @@
               $force_init=1;
           }
           if (!empty($formatter->refresh) and $cf->exists('urlmapping') and !$force_init) {
  -            $info=unserialize($cf->fetch('urlmapping'));
  +            $info=$cf->fetch('urlmapping');
               $DBInfo->url_mappings=$info['urlmapping'];
               $DBInfo->url_mapping_rule=$info['urlmappingrule'];
   
  @@ -50,9 +50,10 @@
               $DBInfo->url_mapping_rule.=$DBInfo->url_mapping_rule ?
                   '|'.$mapping_rule:$mapping_rule;
           }
  -        $mappinginfo=
  -            serialize(array('urlmapping'=>$DBInfo->url_mappings,
  -                'urlmappingrule'=>$DBInfo->url_mapping_rule));
  +        $mappinginfo= array(
  +                'urlmapping'=>$DBInfo->url_mappings,
  +                'urlmappingrule'=>$DBInfo->url_mapping_rule
  +        );
           $cf->update('urlmapping',$mappinginfo);
           break;
       }
  
  
  
  1.11      +3 -3      moniwiki/plugin/VisualTour.php
  
  Index: VisualTour.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/VisualTour.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- VisualTour.php	23 Aug 2010 15:14:10 -0000	1.10
  +++ VisualTour.php	7 Sep 2010 12:11:49 -0000	1.11
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a VisualTour plugin for the MoniWiki
   //
  -// $Id: VisualTour.php,v 1.10 2010/08/23 15:14:10 wkpark Exp $
  +// $Id: VisualTour.php,v 1.11 2010/09/07 12:11:49 wkpark Exp $
   
   function macro_VisualTour($formatter,$value,$options=array()) {
     global $DBInfo;
  @@ -54,8 +54,8 @@
   
     $md5sum=md5($dot);
     if (!empty($DBInfo->cache_public_dir)) {
  -    $fc=new Cache_text('visualtour',2,'',$DBInfo->cache_public_dir);
  -    $fname=$fc->_getKey($md5sum,0);
  +    $fc = new Cache_text('visualtour', array('ext'=>$DBInfo->cache_public_dir));
  +    $fname = $fc->getKey($md5sum, false);
       $basename= $DBInfo->cache_public_dir.'/'.$fname;
       $dotfile= $basename.'.dot';
       $pngfile= $basename.'.png';
  
  
  
  1.5       +7 -7      moniwiki/plugin/admin.php
  
  Index: admin.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/admin.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- admin.php	23 Aug 2010 15:14:10 -0000	1.4
  +++ admin.php	7 Sep 2010 12:11:49 -0000	1.5
  @@ -9,13 +9,13 @@
   // Name: Admin
   // Description: Admin Plugin
   // URL: MoniWiki:AdminPlugin
  -// Version: $Revision: 1.4 $
  +// Version: $Revision: 1.5 $
   // Depend: 1.1.3
   // License: GPL
   //
   // Usage: ?action=admin
   //
  -// $Id: admin.php,v 1.4 2010/08/23 15:14:10 wkpark Exp $
  +// $Id: admin.php,v 1.5 2010/09/07 12:11:49 wkpark Exp $
   
   function get_plugin_info($plugin_file) {
       // wordpress style management
  @@ -109,7 +109,7 @@
   
       // get settings
       $sc=new Cache_text('settings');
  -    $pls=unserialize($sc->fetch($arena.'s'));
  +    $pls = $sc->fetch($arena.'s');
   
       #$pl="<tr><th colspan='3'>"._($arena)."</th></tr>\n";
       $pl='';
  @@ -174,14 +174,14 @@
               (is_array($options['pl']) or is_array($options['pr']))) {
           $formatter->send_header('',$options);
           $cp=new Cache_text('settings');
  -        $cpl=unserialize($cp->fetch('plugins'));
  -        $cpr=unserialize($cp->fetch('processors'));
  +        $cpl = $cp->fetch('plugins');
  +        $cpr = $cp->fetch('processors');
   
           $out='';
           if (is_array($options['pl']) and is_array($cpl)) {
               $ad=array_diff($options['pl'],$cpl);
               $de=array_diff($cpl,$options['pl']);
  -            $cp->update('plugins',serialize($options['pl']));
  +            $cp->update('plugins', $options['pl']);
   
               $out.=!empty($ad) ?
                   '<h2>'._("Enabled plugins").'</h2><ul><li>'.implode("</li>\n<li>",$ad).'</li></ul>':'';
  @@ -192,7 +192,7 @@
           if (is_array($options['pr']) and is_array($cpr)) {
               $ad=array_diff($options['pr'],$cpr);
               $de=array_diff($cpr,$options['pr']);
  -            $cp->update('processors',serialize($options['pr']));
  +            $cp->update('processors', $options['pr']);
               $out.=!empty($ad) ?
                   '<h2>'._("Enabled processors").'</h2><ul><li>'.implode("</li>\n<li>",$ad).'</li></ul>':'';
               $out.=!empty($de) ?
  
  
  
  1.14      +3 -3      moniwiki/plugin/bbs.php
  
  Index: bbs.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/bbs.php,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- bbs.php	23 Apr 2008 23:20:44 -0000	1.13
  +++ bbs.php	7 Sep 2010 12:11:49 -0000	1.14
  @@ -5,7 +5,7 @@
   //
   // Usage: [[BBS(pagename,count,mode)]]
   //
  -// $Id: bbs.php,v 1.13 2008/04/23 23:20:44 wkpark Exp $
  +// $Id: bbs.php,v 1.14 2010/09/07 12:11:49 wkpark Exp $
   
   function _get_pagelist($formatter,$pages,$action,$curpage=1,$listcount=10,$bra="[",$cat="]",$sep="|",$prev="&#171;",$next="&#187;",$first="",$last="",$ellip="...") {
   
  @@ -233,7 +233,7 @@
   
           if (!empty($data['attach'])) {
               $cache=new Cache_Text('attachments');
  -            $cache->update($options['pagename'],serialize($data['attach']));
  +            $cache->update($options['pagename'], $data['attach']);
           }
   
           return true;
  @@ -541,7 +541,7 @@
           $img='';
           if ($MyBBS->use_attach) {
               $cache=new Cache_text('attachments');
  -            $attachs=unserialize($cache->fetch($MyBBS->bbsname.':'.$nid));
  +            $attachs = $cache->fetch($MyBBS->bbsname.':'.$nid);
               if (preg_match('/^attachment:([^\?]+)(\?.*)?$/',$attachs[0],$m)) {
                   $img=$formatter->macro_repl('Attachment',$m[1].'?thumbwidth=100');
               }
  
  
  
  1.16      +2 -3      moniwiki/plugin/dot.php
  
  Index: dot.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/dot.php,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- dot.php	23 Aug 2010 15:14:10 -0000	1.15
  +++ dot.php	7 Sep 2010 12:11:49 -0000	1.16
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // dot action plugin for the MoniWiki
   //
  -// $Id: dot.php,v 1.15 2010/08/23 15:14:10 wkpark Exp $
  +// $Id: dot.php,v 1.16 2010/09/07 12:11:49 wkpark Exp $
   
   define('DEPTH',3);
   define('LEAFCOUNT',2);
  @@ -19,7 +19,7 @@
     }
   
     function getLeafs($pagename,&$node,&$color,$depth,$count=LEAFCOUNT) {
  -    $links=unserialize($this->cache->fetch($pagename));
  +    $links = $this->cache->fetch($pagename);
       #print_r($links);
       if (!is_array($links)) $links=array();
       $nodelink = array();
  @@ -29,7 +29,6 @@
           if (empty($node[$page])) {
             $leafs=$this->cache->fetch($page);
             if ($leafs) {
  -            $leafs=unserialize($leafs);
               # XXX 
               if (!empty($leafs))
                 $nodelink[$page] = sizeof($leafs);
  
  
  
  1.10      +3 -3      moniwiki/plugin/trackback.php
  
  Index: trackback.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/trackback.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- trackback.php	23 Aug 2010 09:15:23 -0000	1.9
  +++ trackback.php	7 Sep 2010 12:11:49 -0000	1.10
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a TrackBack receive action plugin for the MoniWiki
   //
  -// $Id: trackback.php,v 1.9 2010/08/23 09:15:23 wkpark Exp $
  +// $Id: trackback.php,v 1.10 2010/09/07 12:11:49 wkpark Exp $
   
   function send_error($error=0,$error_message='') {
     if ($error) {
  @@ -53,7 +53,7 @@
       else
         $ping_url=_("TrackBack is not activated !");
       $sendping_action= $formatter->link_tag($formatter->page->urlname,"?action=sendping&amp;value=$options[value]",_("send ping"));
  -    $tb_cache=new Cache_text('trackback');
  +    $tb_cache= new Cache_text('trackback');
       if ($tb_cache->exists($options['page'])) {
         $formatter->send_title(sprintf(_("TrackBack list of %s"),$options['page']),"",$options);
         $trackbacks= explode("\n",$tb_cache->fetch($options['page']));
  @@ -99,7 +99,7 @@
   
     $receive= $timestamp."\t".$entry."\t".$url."\t".$date."\t".$blog_name."\t".$title."\t".$excerpt."\n";
   
  -  $tb_cache= new Cache_text('trackback');
  +  $tb_cache = new Cache_text('trackback');
   
     $old= $tb_cache->fetch($options['page']);
     $ret= $tb_cache->update($options['page'],$old.$receive,time());
  
  
  
  1.8       +4 -4      moniwiki/plugin/processor/geshi.php
  
  Index: geshi.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/geshi.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- geshi.php	17 Dec 2008 03:52:17 -0000	1.7
  +++ geshi.php	7 Sep 2010 12:11:49 -0000	1.8
  @@ -8,7 +8,7 @@
   // Name: a GeSHi syntax colorizer
   // Description: a syntax colorizing processor using the GeSHi
   // URL: MoniWiki:GeshiProcessor
  -// Version: $Revision: 1.7 $
  +// Version: $Revision: 1.8 $
   // Usage: {{{#!geshi ada|apache|asm|c|css... [number|fancy]
   // some codes
   // }}}
  @@ -33,7 +33,7 @@
   //
   // this version was tested with geshi 1.0.6.
   //
  -// $Id: geshi.php,v 1.7 2008/12/17 03:52:17 wkpark Exp $
  +// $Id: geshi.php,v 1.8 2010/09/07 12:11:49 wkpark Exp $
   
   @include_once(dirname(__FILE__)."/../../lib/geshi/geshi.php");
   
  @@ -69,8 +69,8 @@
   
     $uniq=md5($extra.$value);
     if ($DBInfo->cache_public_dir) {
  -    $fc=new Cache_text('geshi',2,'html',$DBInfo->cache_public_dir);
  -    $htmlname=$fc->_getKey($uniq,0);
  +    $fc = new Cache_text('geshi', array('ext'=>'html', 'dir'=>$DBInfo->cache_public_dir));
  +    $htmlname=$fc->getKey($uniq, false);
       $html= $DBInfo->cache_public_dir.'/'.$htmlname;
     } else {
       $cache_dir=$DBInfo->upload_dir."/GeshiProcessor";
  
  
  
  1.18      +3 -3      moniwiki/plugin/processor/gnuplot.php
  
  Index: gnuplot.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/gnuplot.php,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- gnuplot.php	19 Apr 2010 11:26:47 -0000	1.17
  +++ gnuplot.php	7 Sep 2010 12:11:49 -0000	1.18
  @@ -6,7 +6,7 @@
   // Usage: {{{#!gnuplot
   // plot sin(x)
   // }}}
  -// $Id: gnuplot.php,v 1.17 2010/04/19 11:26:47 wkpark Exp $
  +// $Id: gnuplot.php,v 1.18 2010/09/07 12:11:49 wkpark Exp $
   
   function processor_gnuplot($formatter="",$value="") {
     global $DBInfo;
  @@ -99,8 +99,8 @@
       $plt="\n".$size."\n".$plt;
     $uniq=md5($plt);
     if ($DBInfo->cache_public_dir) {
  -    $fc=new Cache_text('gnuplot',2,$ext,$DBInfo->cache_public_dir);
  -    $pngname=$fc->_getKey($uniq,0);
  +    $fc = new Cache_text('gnuplot',array('ext'=>$ext, 'dir'=>$DBInfo->cache_public_dir));
  +    $pngname=$fc->getKey($uniq, false);
       $png= $DBInfo->cache_public_dir.'/'.$pngname;
       $png_url=
         $DBInfo->cache_public_url ? $DBInfo->cache_public_url.'/'.$pngname:
  
  
  
  1.28      +4 -4      moniwiki/plugin/processor/latex.php
  
  Index: latex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/latex.php,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- latex.php	19 Apr 2010 11:26:47 -0000	1.27
  +++ latex.php	7 Sep 2010 12:11:49 -0000	1.28
  @@ -12,7 +12,7 @@
   // $path='./bin;C:/Program Files/MiKTeX 2.5/miktex/bin;C:/Program Files/ImageMagick-6.3.6-Q16';
   // # ImagMagick and MikTeX are used in this setting.
   //
  -// $Id: latex.php,v 1.27 2010/04/19 11:26:47 wkpark Exp $
  +// $Id: latex.php,v 1.28 2010/09/07 12:11:49 wkpark Exp $
   
   function _latex_renumber($match,$tag='\\tag') {
     // XXX
  @@ -119,8 +119,8 @@
     }
   
     if (!empty($DBInfo->cache_public_dir)) {
  -    $fc=new Cache_text('latex',2,'png',$DBInfo->cache_public_dir);
  -    $pngname=$fc->_getKey($uniq,0);
  +    $fc = new Cache_text('latex',array('ext'=>'png','dir'=>$DBInfo->cache_public_dir));
  +    $pngname=$fc->getKey($uniq, false);
       $png= $DBInfo->cache_public_dir.'/'.$pngname;
       $png_url=
         !empty($DBInfo->cache_public_url) ? $DBInfo->cache_public_url.'/'.$pngname:
  @@ -243,7 +243,7 @@
           for ($i=0;$i<$sz;$i++) {
             $id=$formatter->latex_uniq[$i];
             if ($DBInfo->cache_public_dir) {
  -            $pngname=$fc->_getKey($id,0);
  +            $pngname=$fc->getKey($id, false);
               $img= $DBInfo->cache_public_dir.'/'.$pngname;
             } else {
               $img=$cache_dir.'/'.$id.'.png';
  
  
  
  1.9       +3 -3      moniwiki/plugin/processor/pic.php
  
  Index: pic.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/pic.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- pic.php	19 Apr 2010 11:26:47 -0000	1.8
  +++ pic.php	7 Sep 2010 12:11:49 -0000	1.9
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a PIC plugin for the MoniWiki
   //
  -// $Id: pic.php,v 1.8 2010/04/19 11:26:47 wkpark Exp $
  +// $Id: pic.php,v 1.9 2010/09/07 12:11:49 wkpark Exp $
   // Usage: {{{#!pic
   // some codes
   // }}}
  @@ -34,8 +34,8 @@
   
     $uniq=md5($pic_script);
     if ($DBInfo->cache_public_dir) {
  -    $fc=new Cache_text('pic',2,'png',$DBInfo->cache_public_dir);
  -    $pngname=$fc->_getKey($uniq,0);
  +    $fc = new Cache_text('pic',array('ext'=>'png', 'dir'=>$DBInfo->cache_public_dir));
  +    $pngname = $fc->getKey($uniq, false);
       $outpath_png= $DBInfo->cache_public_dir.'/'.$pngname;
   
       $png_url=
  
  
  
  1.5       +4 -4      moniwiki/plugin/processor/sfd.php
  
  Index: sfd.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/sfd.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- sfd.php	19 Apr 2010 11:26:47 -0000	1.4
  +++ sfd.php	7 Sep 2010 12:11:49 -0000	1.5
  @@ -10,13 +10,13 @@
   // Name: a FontForge sfd renderer
   // Description: a FontForge sfd glyph renderer
   // URL: MoniWiki:FontForgePlugin
  -// Version: $Revision: 1.4 $
  +// Version: $Revision: 1.5 $
   // License: GPL
   // Usage: {{{#!sfd
   // sfd char file
   // }}}
   //
  -// $Id: sfd.php,v 1.4 2010/04/19 11:26:47 wkpark Exp $
  +// $Id: sfd.php,v 1.5 2010/09/07 12:11:49 wkpark Exp $
   
   function processor_sfd($formatter,$value="") {
       global $DBInfo;
  @@ -137,8 +137,8 @@
       }
   
       if ($DBInfo->cache_public_dir) {
  -        $fc=new Cache_text('sfd',2,'png',$DBInfo->cache_public_dir);
  -        $pngname=$fc->_getKey($uniq,0);
  +        $fc = new Cache_text('sfd', array('ext'=>'png', 'dir'=>$DBInfo->cache_public_dir));
  +        $pngname=$fc->getKey($uniq, false);
           $outpath_png= $DBInfo->cache_public_dir.'/'.$pngname;
   
           $png_url=
  
  
  
  1.4       +3 -3      moniwiki/plugin/processor/tpl_.php
  
  Index: tpl_.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/tpl_.php,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- tpl_.php	19 Apr 2010 11:26:47 -0000	1.3
  +++ tpl_.php	7 Sep 2010 12:11:49 -0000	1.4
  @@ -8,21 +8,21 @@
   // Name: A Template_ processor
   // Description: A Template_ Processor could process Template_ syntaxs
   // URL: MoniWiki:TemplateUnderscore
  -// Version: $Revision: 1.3 $
  +// Version: $Revision: 1.4 $
   // License: LGPL
   //
   // Usage: {{{#!tpl_
   // {=date("Y-m-d h:i:s",time()) }
   // }}}
   //
  -// $Id: tpl_.php,v 1.3 2010/04/19 11:26:47 wkpark Exp $
  +// $Id: tpl_.php,v 1.4 2010/09/07 12:11:49 wkpark Exp $
   
   include_once (dirname(__FILE__).'/../../lib/Template_.compiler.php');
   
   function processor_tpl_(&$formatter,$source,$params=array()) {
       global $Config;
       #if (!$Config['use_tpl']) return $source;
  -    $cache= new Cache_text("tpl_",'2');
  +    $cache = new Cache_text("tpl_");
   
       if (!empty($source)) {
           $id=md5($source); $mtime=$formatter->page->mtime();
  
  
  
  1.48      +4 -4      moniwiki/plugin/processor/vim.php
  
  Index: vim.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/vim.php,v
  retrieving revision 1.47
  retrieving revision 1.48
  diff -u -r1.47 -r1.48
  --- vim.php	19 Apr 2010 11:26:47 -0000	1.47
  +++ vim.php	7 Sep 2010 12:11:49 -0000	1.48
  @@ -9,7 +9,7 @@
   // Name: a VIM syntax colorizer
   // Description: a Syntax colorizing processor using the VIM
   // URL: MoniWiki:VimProcessor
  -// Version: $Revision: 1.47 $
  +// Version: $Revision: 1.48 $
   // License: GPL
   // Usage: {{{#!vim sh|c|sh|.. [number]
   // some codes
  @@ -18,7 +18,7 @@
   // Win32 note:
   //  add $path="/bin;/Program Files/Vim/VimXX"; in the config.php
   //
  -// $Id: vim.php,v 1.47 2010/04/19 11:26:47 wkpark Exp $
  +// $Id: vim.php,v 1.48 2010/09/07 12:11:49 wkpark Exp $
   
   function processor_vim($formatter,$value,$options) {
     global $DBInfo;
  @@ -63,8 +63,8 @@
     $uniq=md5($option.$extra.$type.$src);
   
     if ($DBInfo->cache_public_dir) {
  -    $fc=new Cache_text('vim',2,'html',$DBInfo->cache_public_dir);
  -    $htmlname=$fc->_getKey($uniq,0);
  +    $fc = new Cache_text('vim', array('ext'=>'html', 'dir'=>$DBInfo->cache_public_dir));
  +    $htmlname = $fc->getKey($uniq, false);
       $html= $DBInfo->cache_public_dir.'/'.$htmlname;
     } else {
       $cache_dir=$DBInfo->upload_dir."/VimProcessor";
  
  
  


1283866653;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv32087\n\nModified Files:\n	wiki.php \nLog Message:\n[#315666] use wikiConfig() correctly\n\n
1283866653;wkpark;Update of /cvsroot/moniwiki/moniwiki/tools\nIn directory kill.kldp.net:/tmp/cvs-serv32087/tools\n\nModified Files:\n	cleaner.php indexer.php pageindex.php \nLog Message:\n[#315666] use wikiConfig() correctly\n\n
wkpark      2010/09/07 22:37:34

  Modified:    .        wiki.php
               tools    cleaner.php indexer.php pageindex.php
  Log:
  [#315666] use wikiConfig() correctly
  
  Revision  Changes    Path
  1.606     +4 -5      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.605
  retrieving revision 1.606
  diff -u -r1.605 -r1.606
  --- wiki.php	7 Sep 2010 12:11:48 -0000	1.605
  +++ wiki.php	7 Sep 2010 13:37:33 -0000	1.606
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.605 2010/09/07 12:11:48 wkpark Exp $
  +// $Id: wiki.php,v 1.606 2010/09/07 13:37:33 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.605 $',1,-1);
  +$_revision = substr('$Revision: 1.606 $',1,-1);
   $_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -5552,7 +5552,9 @@
   
   if (!defined('INC_MONIWIKI')):
   # Start Main
  +$Config = getConfig('config.php', array('init'=>1));
   require_once("wikilib.php");
  +require_once("lib/win32fix.php");
   require_once("lib/wikiconfig.php");
   require_once("lib/cache.text.php");
   require_once("lib/timer.php");
  @@ -5564,9 +5566,6 @@
     $options['timer']->Check("load");
   }
   
  -$Config = getConfig('config.php', array('init'=>1));
  -require_once("lib/win32fix.php");
  -
   $ccache = new Cache_text('settings');
   if (!($conf = $ccache->fetch('config'))) {
     $Config = wikiConfig($Config);
  
  
  
  1.3       +12 -6     moniwiki/tools/cleaner.php
  
  Index: cleaner.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/tools/cleaner.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- cleaner.php	19 Aug 2010 09:46:58 -0000	1.2
  +++ cleaner.php	7 Sep 2010 13:37:33 -0000	1.3
  @@ -4,7 +4,7 @@
    *
    * @since     2010/08/19
    * @author    Won-Kyu Park <wkpark@kldp.org>
  - * @revision  $Id: cleaner.php,v 1.2 2010/08/19 09:46:58 wkpark Exp $
  + * @revision  $Id: cleaner.php,v 1.3 2010/09/07 13:37:33 wkpark Exp $
    */
   
   define('INC_MONIWIKI',1);
  @@ -12,15 +12,20 @@
   
   // Start Main
   $Config = getConfig("config.php");
  -include(dirname(__FILE__) . '/../wikilib.php');
  -include(dirname(__FILE__) . '/../lib/win32fix.php');
  +require_once('wikilib.php');
  +require_once('lib/win32fix.php');
  +require_once("lib/wikiconfig.php");
  +require_once("lib/timer.php");
   
  +$Config = wikiConfig($Config);
   $DBInfo = new WikiDB($Config);
   
   $options = array();
  -$timing = new Timer();
  -$options['timer'] = &$timing;
  -$options['timer']->Check("load");
  +if (class_exists('Timer')) {
  +    $timing = new Timer();
  +    $options['timer'] = &$timing;
  +    $options['timer']->Check("load");
  +}
   
   //
   $cache_arenas = array('fullsearch', 'macro', 'dynamicmacros');
  @@ -43,6 +48,7 @@
       echo '*** ' . $dir . "\n";
       $count = 0;
       while(($file = readdir($handle)) !== false) {
  +        if ($file[0] == '.') continue; // hidden files
           if ((($p = strpos($file, '.')) !== false or $file == 'RCS' or $file == 'CVS') and is_dir($dir . '/' . $file)) continue;
           if (is_dir($dir . '/' . $file)) {
               $count+= clean_dir($dir . '/' . $file, $checktime);
  
  
  
  1.5       +12 -7     moniwiki/tools/indexer.php
  
  Index: indexer.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/tools/indexer.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- indexer.php	10 Aug 2010 16:10:21 -0000	1.4
  +++ indexer.php	7 Sep 2010 13:37:33 -0000	1.5
  @@ -5,17 +5,22 @@
   
   # Start Main
   $Config=getConfig("config.php");
  -include("wikilib.php");
  -include("lib/win32fix.php");
  -#include("lib/tokenizer.php");
  -include("lib/indexer.DBA.php");
  +require_once("wikilib.php");
  +require_once("lib/win32fix.php");
  +require_once("lib/wikiconfig.php");
  +require_once("lib/cache.text.php");
  +require_once("lib/timer.php");
  +require_once("lib/indexer.DBA.php");
   
  +$Config = wikiConfig($Config);
   $DBInfo= new WikiDB($Config);
   
   $options=array();
  -$timing = &new Timer();
  -$options['timer']=&$timing;
  -$options['timer']->Check("load");
  +if (class_exists('Timer')) {
  +    $timing = new Timer();
  +    $options['timer']=&$timing;
  +    $options['timer']->Check("load");
  +}
   
   $indexer = new Indexer_DBA('fullsearch', 'w', $DBInfo->dba_type, 'new');
   #$indexer->test();
  
  
  
  1.2       +12 -7     moniwiki/tools/pageindex.php
  
  Index: pageindex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/tools/pageindex.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- pageindex.php	16 Aug 2010 10:22:00 -0000	1.1
  +++ pageindex.php	7 Sep 2010 13:37:33 -0000	1.2
  @@ -6,17 +6,22 @@
   
   # Start Main
   $Config=getConfig("config.php");
  -include("wikilib.php");
  -include("lib/win32fix.php");
  -#include("lib/tokenizer.php");
  -include("lib/PageIndex.php");
  +require_once("wikilib.php");
  +require_once("lib/win32fix.php");
  +require_once("lib/wikiconfig.php");
  +require_once("lib/cache.text.php");
  +require_once("lib/PageIndex.php");
   
  +$Config = wikiConfig($Config);
   $DBInfo= new WikiDB($Config);
   
   $options=array();
  -$timing = &new Timer();
  -$options['timer']=&$timing;
  -$options['timer']->Check("load");
  +
  +if (class_exists('Timer')) {
  +    $timing = new Timer();
  +    $options['timer']=&$timing;
  +    $options['timer']->Check("load");
  +}
   
   $indexer = new PageIndex($DBInfo);
   $indexer->init();
  
  
  


1283868188;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv1957/plugin\n\nModified Files:\n	BabelFish.php ISBN.php foaf.php \nLog Message:\n[#315667] rename imgs_dir_interwiki to imgs_url_interwiki\n\n
wkpark      2010/09/07 23:03:09

  Modified:    plugin   BabelFish.php ISBN.php foaf.php
  Log:
  [#315667] rename imgs_dir_interwiki to imgs_url_interwiki
  
  Revision  Changes    Path
  1.8       +2 -2      moniwiki/plugin/BabelFish.php
  
  Index: BabelFish.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/BabelFish.php,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- BabelFish.php	15 Sep 2004 18:30:25 -0000	1.7
  +++ BabelFish.php	7 Sep 2010 14:03:08 -0000	1.8
  @@ -5,7 +5,7 @@
   //
   // Usage: [[BabelFish]]
   //
  -// $Id: BabelFish.php,v 1.7 2004/09/15 18:30:25 iolo Exp $
  +// $Id: BabelFish.php,v 1.8 2010/09/07 14:03:08 wkpark Exp $
   
   #<script language="JavaScript1.2" src="http://www.altavista.com/r?entr"></script>
   function macro_BabelFish($formatter,$value,$ret=array()) {
  @@ -45,7 +45,7 @@
     }
     $goto=$TR.'&amp;url='.$URL;
     return <<<EOF
  -<img src='$formatter->imgs_dir_interwiki$from-16.png' alt="$from"/> <a href="$goto"><img border='0' src='$formatter->imgs_dir/plugin/babelfish.gif' title='$msg' alt='BabelFish@altavista' /></a><img src='$formatter->imgs_dir_interwiki$to-16.png' alt="$to"/>
  +<img src='$formatter->imgs_url_interwiki$from-16.png' alt="$from"/> <a href="$goto"><img border='0' src='$formatter->imgs_dir/plugin/babelfish.gif' title='$msg' alt='BabelFish@altavista' /></a><img src='$formatter->imgs_url_interwiki$to-16.png' alt="$to"/>
   EOF;
   
   }
  
  
  
  1.15      +3 -3      moniwiki/plugin/ISBN.php
  
  Index: ISBN.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/ISBN.php,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- ISBN.php	23 Aug 2010 09:11:37 -0000	1.14
  +++ ISBN.php	7 Sep 2010 14:03:08 -0000	1.15
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a ISBN macro plugin for the MoniWiki
   //
  -// $Id: ISBN.php,v 1.14 2010/08/23 09:11:37 wkpark Exp $
  +// $Id: ISBN.php,v 1.15 2010/09/07 14:03:08 wkpark Exp $
   
   function macro_ISBN($formatter,$value="") {
     global $DBInfo;
  @@ -65,7 +65,7 @@
         else {
           $url=str_replace('$ISBN','0738206679',$href);
         }
  -      $icon=$DBInfo->imgs_dir_interwiki.strtolower($interwiki).'-16.png';
  +      $icon=$DBInfo->imgs_url_interwiki.strtolower($interwiki).'-16.png';
         $sx=16;$sy=16;
         if ($DBInfo->intericon[$interwiki]) {
           $icon=$DBInfo->intericon[$interwiki][2];
  @@ -225,7 +225,7 @@
     }
   
     if (!empty($noimg)) {
  -    $icon=$DBInfo->imgs_dir_interwiki.strtolower($lang).'-16.png';
  +    $icon=$DBInfo->imgs_url_interwiki.strtolower($lang).'-16.png';
       $sx=16;$sy=16;
       if (!empty($DBInfo->intericon[$lang])) {
         $icon=$DBInfo->intericon[$lang][2];
  
  
  
  1.6       +2 -2      moniwiki/plugin/foaf.php
  
  Index: foaf.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/foaf.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- foaf.php	23 Aug 2010 09:15:23 -0000	1.5
  +++ foaf.php	7 Sep 2010 14:03:08 -0000	1.6
  @@ -3,7 +3,7 @@
   // Public Domain ?
   // and modified for the FOAF.
   // See http://moniwiki.sourceforge.net/wiki.php/FoafOnMoniWiki
  -// $Id: foaf.php,v 1.5 2010/08/23 09:15:23 wkpark Exp $
  +// $Id: foaf.php,v 1.6 2010/09/07 14:03:08 wkpark Exp $
   //
   class FoafParser {
   
  @@ -123,7 +123,7 @@
     xml_parser_free($xml_parser);
   
     ##
  -  $out="<a href='".$DBInfo->interwiki['FOAF']."$value'><img align='middle' border='0' alt='FOAF:' title='FOAF:' src='$DBInfo->imgs_dir_interwiki"."foaf-16.png'>";
  +  $out="<a href='".$DBInfo->interwiki['FOAF']."$value'><img align='middle' border='0' alt='FOAF:' title='FOAF:' src='$DBInfo->imgs_url_interwiki"."foaf-16.png'>";
   
     if ($options['homepage']) $out.="</a><a href='$info[homepage]'>$info[name]</a>";
     else $out.="$info[name]</a>";
  
  
  


1283960769;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv31934\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315675] set default textarea cols conditionally to support mobile phones\n\n
1283960769;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv31934/plugin\n\nModified Files:\n	Comment.php \nLog Message:\n[#315675] set default textarea cols conditionally to support mobile phones\n\n
wkpark      2010/09/09 00:46:10

  Modified:    .        wikilib.php
               plugin   Comment.php
  Log:
  [#315675] set default textarea cols conditionally to support mobile phones
  
  Revision  Changes    Path
  1.348     +20 -5     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.347
  retrieving revision 1.348
  diff -u -r1.347 -r1.348
  --- wikilib.php	7 Sep 2010 12:11:48 -0000	1.347
  +++ wikilib.php	8 Sep 2010 15:46:08 -0000	1.348
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.347 2010/09/07 12:11:48 wkpark Exp $
  +// $Id: wikilib.php,v 1.348 2010/09/08 15:46:08 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -377,6 +377,24 @@
       return false;
   }
   
  +/**
  + * get default cols of textarea
  + *
  + */
  +function get_textarea_cols() {
  +  $COLS_MSIE = 80;
  +  $COLS_OTHER = 85;
  +
  +  if (preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT'])) {
  +    $cols = $COLS_MSIE;
  +  } else if (preg_match('/android|iphone/i', $_SERVER['HTTP_USER_AGENT'])) {
  +    $cols = 30;
  +  } else {
  +    $cols = $COLS_OTHER;
  +  }
  +  return $cols;
  +}
  +
   function _fake_lock_file($tmp, $arena, $tag = '') {
       $lock = $tmp . '/' . $arena;
       if (!empty($tag))
  @@ -1170,12 +1188,9 @@
   function macro_Edit($formatter,$value,$options='') {
     global $DBInfo;
   
  -  $COLS_MSIE= 80;
  -  $COLS_OTHER= 85;
  - 
     $options['mode'] = !empty($options['mode']) ? $options['mode'] : '';
     $edit_rows=$DBInfo->edit_rows ? $DBInfo->edit_rows: 16;
  -  $cols= preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']) ? $COLS_MSIE : $COLS_OTHER;
  +  $cols= get_textarea_cols();
   
     $use_js= preg_match('/Lynx|w3m|links/',$_SERVER['HTTP_USER_AGENT']) ? 0:1;
   
  
  
  
  1.41      +5 -9      moniwiki/plugin/Comment.php
  
  Index: Comment.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Comment.php,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- Comment.php	27 Jul 2010 16:33:39 -0000	1.40
  +++ Comment.php	8 Sep 2010 15:46:09 -0000	1.41
  @@ -5,15 +5,15 @@
   //
   // Author: Won-Kyu Park <wkpark@kldp.org>
   // Since: 2004-08-16
  -// Modified: $Date: 2010/07/27 16:33:39 $
  +// Modified: $Date: 2010/09/08 15:46:09 $
   // Name: Comment plugin
   // Description: Comment Plugin
   // URL: MoniWiki:CommentPlugin
  -// Version: $Revision: 1.40 $
  +// Version: $Revision: 1.41 $
   // License: GPL
   // Usage: [[Comment]], ?action=comment
   //
  -// $Id: Comment.php,v 1.40 2010/07/27 16:33:39 wkpark Exp $
  +// $Id: Comment.php,v 1.41 2010/09/08 15:46:09 wkpark Exp $
   
   function macro_Comment($formatter,$value,$options=array()) {
     global $DBInfo;
  @@ -69,9 +69,7 @@
   
     $mid=$mymid;
   
  -  $COLS_MSIE = 80;
  -  $COLS_OTHER = 85;
  -  $cols = preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']) ? $COLS_MSIE : $COLS_OTHER;
  +  $cols = get_textarea_cols();
   
     $rows = (!empty($options['rows']) and $options['rows'] > 5) ? $options['rows']: 5;
     $cols = (!empty($options['cols']) and $options['cols'] > 60) ? $options['cols']: $cols;
  @@ -142,9 +140,7 @@
   
     if (!empty($options['usemeta'])) $use_meta=1;
   
  -  $COLS_MSIE = 80;
  -  $COLS_OTHER = 85;
  -  $cols = preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']) ? $COLS_MSIE : $COLS_OTHER;
  +  $cols = get_textarea_cols();
   
     $rows=(!empty($options['rows']) and $options['rows'] > 5) ? $options['rows']: 8;
     $cols=(!empty($options['cols']) and $options['cols'] > 60) ? $options['cols']: $cols;
  
  
  


1283963944;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv8692\n\nModified Files:\n	wiki.php \nLog Message:\n[#315672] fixed alias/twinpage/sistersites to show spaced wikiword correctly\n\n
wkpark      2010/09/09 01:39:05

  Modified:    .        wiki.php
  Log:
  [#315672] fixed alias/twinpage/sistersites to show spaced wikiword correctly
  
  Revision  Changes    Path
  1.607     +10 -7     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.606
  retrieving revision 1.607
  diff -u -r1.606 -r1.607
  --- wiki.php	7 Sep 2010 13:37:33 -0000	1.606
  +++ wiki.php	8 Sep 2010 16:39:04 -0000	1.607
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.606 2010/09/07 13:37:33 wkpark Exp $
  +// $Id: wiki.php,v 1.607 2010/09/08 16:39:04 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.606 $',1,-1);
  +$_revision = substr('$Revision: 1.607 $',1,-1);
   $_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -399,11 +399,11 @@
       if (empty($mode)) return true;
       $twins=$this->db[$pagename];
   
  -    $ret='[wiki:'.str_replace(',',"] [wiki:",$twins).']';
  +    $ret='[wiki:'.str_replace(',',"]\n[wiki:",$twins).']';
   
       $pagename=_preg_search_escape($pagename);
       $ret= preg_replace("/((:[^\s]+){2})(\:$pagename)/","\\1",$ret);
  -    return explode(' ',$ret);
  +    return explode("\n", $ret);
     }
     function getSisterSites($pagename,$mode=1) {
       if (empty($this->db[$pagename])) {
  @@ -599,8 +599,11 @@
         _fake_lock($_lock_file);
         foreach ($files as $file) {
           $as = $ac->_fetch($file);
  -        $pagename = key($as);
  -        foreach ($as[$pagename] as $k) {
  +        $keyname = key($as);
  +        $pagename = $keyname;
  +        if (strpos($pagename, ' ') !== false)
  +          $pagename = '"' . $pagename . '"';
  +        foreach ($as[$keyname] as $k) {
             $aliases[$k] = !empty($aliases[$k]) ? $aliases[$k].','.$pagename : $pagename;
           }
         }
  @@ -2318,7 +2321,7 @@
               "<tt class='sister'><a href='$url'>&#x203a;</a></tt>";
           }
           if (!empty($sisters)) {
  -          if (!empty($this->use_easyalias) and strpos($sisters,' ') === false) {
  +          if (!empty($this->use_easyalias) and !preg_match('/^\[wiki:[A-Z][a-z0-9]+:.*$/', $sisters)) {
               # this is a alias
               $this->use_easyalias=0;
               $url=$this->link_repl(substr($sisters,0,-1).' '.$word.']');
  
  
  


1284030805;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv15804\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315681] check Last-modified timestamp correctly\n\n
wkpark      2010/09/09 20:13:25

  Modified:    .        wikilib.php
  Log:
  [#315681] check Last-modified timestamp correctly
  
  Revision  Changes    Path
  1.349     +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.348
  retrieving revision 1.349
  diff -u -r1.348 -r1.349
  --- wikilib.php	8 Sep 2010 15:46:08 -0000	1.348
  +++ wikilib.php	9 Sep 2010 11:13:24 -0000	1.349
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.348 2010/09/08 15:46:08 wkpark Exp $
  +// $Id: wikilib.php,v 1.349 2010/09/09 11:13:24 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -368,7 +368,7 @@
       if ($if_modified_since) {
           // calculate time
           $mytime = @strtotime( $if_modified_since );
  -        if ( $mtime <= $mytime) {
  +        if ( $mtime < $mytime) {
               return true; // if-modified-since is there but doesn't match
           }
       }
  
  
  


1284031101;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv15933\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315682] fixed recursive redirect bug under $query_prefix == '?'\n\n
wkpark      2010/09/09 20:18:22

  Modified:    .        wikilib.php
  Log:
  [#315682] fixed recursive redirect bug under $query_prefix == '?'
  
  Revision  Changes    Path
  1.350     +3 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.349
  retrieving revision 1.350
  diff -u -r1.349 -r1.350
  --- wikilib.php	9 Sep 2010 11:13:24 -0000	1.349
  +++ wikilib.php	9 Sep 2010 11:18:21 -0000	1.350
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.349 2010/09/09 11:13:24 wkpark Exp $
  +// $Id: wikilib.php,v 1.350 2010/09/09 11:18:21 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1700,12 +1700,13 @@
        $url=_stripslashes(trim($options['value']));
        $url=_rawurlencode($url);
        if ($options['redirect'])
  -       $url=$formatter->link_url($url,"?action=show&redirect=".
  +       $url=$formatter->link_url($url,"?action=show&amp;redirect=".
             $formatter->page->name);
        else
          $url=$formatter->link_url($url,"");
        # FastCGI/PHP does not accept multiple header infos. XXX
        #$formatter->send_header("Location: ".$url,$options);
  +     $url = preg_replace('/&amp;/', '&', $url);
        $formatter->send_header(array("Status: 302","Location: ".$url),$options);
     } else if ($options['url']) {
       $url=$options['url'];
  
  
  


1284031223;wkpark;Update of /cvsroot/moniwiki/moniwiki/locale/po\nIn directory kill.kldp.net:/tmp/cvs-serv16027/locale/po\n\nModified Files:\n	ko.po \nLog Message:\n[#315682] fixed i18n msg for redirect\n\n
wkpark      2010/09/09 20:20:23

  Modified:    locale/po ko.po
  Log:
  [#315682] fixed i18n msg for redirect
  
  Revision  Changes    Path
  1.41      +1 -1      moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- ko.po	22 Aug 2010 08:47:21 -0000	1.40
  +++ ko.po	9 Sep 2010 11:20:23 -0000	1.41
  @@ -2210,7 +2210,7 @@
   #: ../wiki.php:5748
   #, c-format
   msgid "Redirected from page \"%s\""
  -msgstr "\"%s\"페이지로 부터 리다리렉트됨"
  +msgstr "\"%s\"페이지에서 리다이렉트됨"
   
   #: ../wiki.php:5918
   msgid "Invalid macro action."
  
  
  


1284043326;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv11066/plugin\n\nModified Files:\n	latex2png.php \nLog Message:\n[#315680] fixed latex2png plugin to support HTTP conditional get \n\n
1284043326;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin/processor\nIn directory kill.kldp.net:/tmp/cvs-serv11066/plugin/processor\n\nModified Files:\n	latex.php \nLog Message:\n[#315680] fixed latex2png plugin to support HTTP conditional get \n\n
wkpark      2010/09/09 23:42:06

  Modified:    plugin   latex2png.php
               plugin/processor latex.php
  Log:
  [#315680] fixed latex2png plugin to support HTTP conditional get
  
  Revision  Changes    Path
  1.5       +31 -4     moniwiki/plugin/latex2png.php
  
  Index: latex2png.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/latex2png.php,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- latex2png.php	21 Jul 2009 16:09:44 -0000	1.4
  +++ latex2png.php	9 Sep 2010 14:42:06 -0000	1.5
  @@ -8,12 +8,12 @@
   // Name: Latex To PNG plugin
   // Description: convert latex syntax to PNGs
   // URL: MoniWiki:Latex2PngPlugin
  -// Version: $Revision: 1.4 $
  +// Version: $Revision: 1.5 $
   // License: GPL
   //
   // Usage: ?action=latex2png&value=$\alpha$
   //
  -// $Id: latex2png.php,v 1.4 2009/07/21 16:09:44 wkpark Exp $
  +// $Id: latex2png.php,v 1.5 2010/09/09 14:42:06 wkpark Exp $
   
   function macro_latex2png($formatter,$value,$params=array()) {
       $png= $formatter->processor_repl('latex',$value, $params);
  @@ -32,12 +32,39 @@
       else
           $png = $my;
   
  +    $mtime = filemtime($png);
  +    $lastmod = gmdate('D, d M Y H:i:s \G\M\T', $mtime);
  +    $etag = md5($mtime);
  +
  +    $headers = array();
  +    $headers[] = 'Pragma: cache';
  +    $maxage = 60*60*24*7;
  +    $headers[] = 'Cache-Control: private, max-age='.$maxage;
  +    $headers[] = 'Last-Modified: '.$lastmod;
  +    $headers[] = 'ETag: "'.$etag.'"';
  +    $need = http_need_cond_request($mtime, $lastmod, $etag);
  +    if (!$need)
  +        $headers[] = 'HTTP/1.0 304 Not Modified';
  +    foreach ($headers as $h)
  +        header($h);
  +    if (!$need) {
  +        @ob_end_clean();
  +        return;
  +    }
  +
       if (file_exists($png)) {
           Header("Content-type: image/png");
           readfile($png);
       } else {
  -        Header("Content-type: image/png");
  -        readfile($png);
  +        // 43byte 1x1 transparent gif
  +        // http://stackoverflow.com/questions/2933251/code-golf-1x1-black-pixel
  +        // http://www.perlmonks.org/?node_id=7974
  +        $gif = base64_decode('R0lGODlhAQABAJAAAAAAAAAAACH5BAUQAAAALAAAAAABAAEAAAICBAEAOw');
  +        Header("Content-type: image/gif");
  +        Header("Content-length: ".strlen($gif));
  +        header('Connection: Close');
  +        echo $gif;
  +        flush();
       }
   }
   
  
  
  
  1.29      +3 -1      moniwiki/plugin/processor/latex.php
  
  Index: latex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/latex.php,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- latex.php	7 Sep 2010 12:11:49 -0000	1.28
  +++ latex.php	9 Sep 2010 14:42:06 -0000	1.29
  @@ -12,7 +12,7 @@
   // $path='./bin;C:/Program Files/MiKTeX 2.5/miktex/bin;C:/Program Files/ImageMagick-6.3.6-Q16';
   // # ImagMagick and MikTeX are used in this setting.
   //
  -// $Id: latex.php,v 1.28 2010/09/07 12:11:49 wkpark Exp $
  +// $Id: latex.php,v 1.29 2010/09/09 14:42:06 wkpark Exp $
   
   function _latex_renumber($match,$tag='\\tag') {
     // XXX
  @@ -104,6 +104,8 @@
   \\begin{document}
   @TEX@
   \\end{document}
  +%%$dviopt
  +%%$latex_convert_options
   ";
     }
   
  
  
  


1284043457;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv11156\n\nModified Files:\n	wiki.php \nLog Message:\n[#315678] detect image attributes correctly\n\n
wkpark      2010/09/09 23:44:17

  Modified:    .        wiki.php
  Log:
  [#315678] detect image attributes correctly
  
  Revision  Changes    Path
  1.608     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.607
  retrieving revision 1.608
  diff -u -r1.607 -r1.608
  --- wiki.php	8 Sep 2010 16:39:04 -0000	1.607
  +++ wiki.php	9 Sep 2010 14:44:17 -0000	1.608
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.607 2010/09/08 16:39:04 wkpark Exp $
  +// $Id: wiki.php,v 1.608 2010/09/09 14:44:17 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.607 $',1,-1);
  +$_revision = substr('$Revision: 1.608 $',1,-1);
   $_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -2021,7 +2021,7 @@
           if (preg_match("/(^.*\.(png|gif|jpeg|jpg))(\?.*?)?$/i",$url,$match)) {
             $url=preg_replace('/&amp;/','&',$url);
             $url=$match[1];
  -          $attrs=!empty($match[3]) ? explode('&',substr($match[3],1)) : array();
  +          $attrs=!empty($match[3]) ? explode('&amp',substr($match[3],1)) : array();
             foreach ($attrs as $arg) {
               $name=strtok($arg,'=');
               $val=strtok(' ');
  
  
  


1284043647;wkpark;Update of /cvsroot/moniwiki/moniwiki/css\nIn directory kill.kldp.net:/tmp/cvs-serv11957/css\n\nModified Files:\n	_base.css \nLog Message:\n[#315678] ommitted css styles added to fix the aling bugs with images\n\n
wkpark      2010/09/09 23:47:28

  Modified:    css      _base.css
  Log:
  [#315678] ommitted css styles added to fix the aling bugs with images
  
  Revision  Changes    Path
  1.38      +14 -4     moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- _base.css	21 Aug 2010 08:34:50 -0000	1.37
  +++ _base.css	9 Sep 2010 14:47:27 -0000	1.38
  @@ -63,14 +63,14 @@
   }
   
   table.center {
  -  text-align:center;
  -  margin-left:auto; /* Moz */
  -  margin-right:auto; /* Moz */
  +  margin-left:auto;
  +  margin-right:auto;
   }
   
   table.right {
  -  text-align:right;
     float:right;
  +/*  margin-left:auto;
  +  margin-right:5px; */
   }
   
   td.center {
  @@ -379,6 +379,10 @@
     vertical-align:middle; /* */
   }
   
  +div.imgAttach {
  +  display:inline;
  +}
  +
   img.imgLeft {
     margin-right : 15px;
     margin-bottom : 5px;
  @@ -389,6 +393,12 @@
     margin-bottom : 5px;
   }
   
  +img.imgCenter {
  +  display:block;
  +  margin-left : auto;
  +  margin-right : auto;
  +}
  +
   span.externalLink {
     display: none;
   }
  
  
  


1284047117;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv20040\n\nModified Files:\n	wiki.php \nLog Message:\n[#315563] fixed last changes for $use_namespace option.\n\n
wkpark      2010/09/10 00:45:19

  Modified:    .        wiki.php
  Log:
  [#315563] fixed last changes for $use_namespace option.
  
  Revision  Changes    Path
  1.609     +14 -17    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.608
  retrieving revision 1.609
  diff -u -r1.608 -r1.609
  --- wiki.php	9 Sep 2010 14:44:17 -0000	1.608
  +++ wiki.php	9 Sep 2010 15:45:17 -0000	1.609
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.608 2010/09/09 14:44:17 wkpark Exp $
  +// $Id: wiki.php,v 1.609 2010/09/09 15:45:17 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.608 $',1,-1);
  +$_revision = substr('$Revision: 1.609 $',1,-1);
   $_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -654,12 +654,12 @@
       $pn= trim($pn,':');
       $pn= preg_replace('#:+#',':',$pn);
   
  -    $pn= preg_replace("/([^a-z0-9:]{1})/ie","'_'.strtolower(dechex(ord(substr('\\1',-1))))",$pn);
  -    if (!empty($this->use_namespace))
  -      $name=preg_replace('#:#','.d/',$pn);
  -    else
  -      $name = $pn;
  -    #$name=preg_replace("/([^a-z0-9]{1})/ie","'_'.strtolower(dechex(ord('\\1')))",$pagename);
  +    // namespace spearator ':' like as 'Foobar:Hello'
  +    $separator = ':';
  +    if (empty($this->use_namespace)) $separator = '';
  +
  +    $pn = preg_replace("/([^a-z0-9".$separator."]{1})/ie", "'_'.strtolower(dechex(ord(substr('\\1',-1))))",$pn);
  +    $name = preg_replace('#:#','.d/',$pn); // Foobar:Hello page will be stored as text/Foobar.d/Hello
       return $name;
     }
   
  @@ -692,8 +692,10 @@
     #  $pagename=str_replace("_","%",$key);
   
       $pagename = $key;
  -    if (!empty($this->use_namespace))
  -      $pagename=preg_replace('%\.d/%',':',$key);
  +
  +    // for namespace
  +    $separator = ':';
  +    $pagename=preg_replace('%\.d/%', $separator, $key);
   
       $pagename=strtr($pagename,'_','%');
       return rawurldecode($pagename);
  @@ -1946,14 +1948,9 @@
               preg_replace('/('.$this->url_mapping_rule.')/ie',"\$this->url_mappings['\\1']",$url);
         }
   
  -      if (preg_match("/^(:|w|[A-Z])/",$url))
  +      if (preg_match("/^(:|w|[A-Z])/",$url)
  +          or (!empty($this->urls) and !preg_match('/^('.$this->urls.')/',$url)))
           return $this->interwiki_repl($url,'',$attr,$external_icon);
  -      else if (!empty($this->urls) and !preg_match('/^('.$this->urls.')/',$url)) {
  -        if ($this->use_namespace)
  -          return $this->interwiki_repl($url,'',$attr,$external_icon);
  -        else
  -          return $bra.$url.$ket;
  -      }
   
         if (preg_match("/^mailto:/",$url)) {
           $email=substr($url,7);
  
  
  


1284048199;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv21216\n\nModified Files:\n	wiki.php wikilib.php \nLog Message:\n[#315679] preserve [[Links]] in headings and remove [[MacroName]] correctly\n\n
wkpark      2010/09/10 01:03:19

  Modified:    .        wiki.php wikilib.php
  Log:
  [#315679] preserve [[Links]] in headings and remove [[MacroName]] correctly
  
  Revision  Changes    Path
  1.610     +6 -5      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.609
  retrieving revision 1.610
  diff -u -r1.609 -r1.610
  --- wiki.php	9 Sep 2010 15:45:17 -0000	1.609
  +++ wiki.php	9 Sep 2010 16:03:18 -0000	1.610
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.609 2010/09/09 15:45:17 wkpark Exp $
  +// $Id: wiki.php,v 1.610 2010/09/09 16:03:18 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.609 $',1,-1);
  +$_revision = substr('$Revision: 1.610 $',1,-1);
   $_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -1883,8 +1883,7 @@
         $url=substr($url,1,-1);
         $double_bracket = true;
   
  -      preg_match("/^([^\(:]+)(\((.*)\))?$/", $url, $match);
  -      if (!empty($match)) {
  +      if (preg_match("/^([^\(:]+)(\((.*)\))?$/", $url, $match)) {
           if (isset($match[1])) {
             $name = $match[1];
           } else {
  @@ -1893,8 +1892,10 @@
   
           // check alias
           $myname = getPlugin($name);
  -        if (!empty($myname))
  +        if (!empty($myname)) {
  +          if (!empty($opts['nomacro'])) return ''; # remove macro
             return $this->macro_repl($url); # No link
  +        }
         }
   
         break;
  
  
  
  1.351     +3 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.350
  retrieving revision 1.351
  diff -u -r1.350 -r1.351
  --- wikilib.php	9 Sep 2010 11:18:21 -0000	1.350
  +++ wikilib.php	9 Sep 2010 16:03:19 -0000	1.351
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.350 2010/09/09 11:18:21 wkpark Exp $
  +// $Id: wikilib.php,v 1.351 2010/09/09 16:03:19 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -3247,6 +3247,7 @@
      $body=$formatter->text;
    }
    $body=preg_replace("/\{\{\{.+?\}\}\}/s",'',$body);
  + $opts = array('nomacro'=>1); // disable macros in headings
    $lines=explode("\n",$body);
    foreach ($lines as $line) {
      $line=preg_replace("/\n$/", "", $line); # strip \n
  @@ -3262,9 +3263,8 @@
      #$head=preg_replace($formatter->baserule,"\\1",$head);
      # do not strip basic wikitags
      $head=preg_replace($formatter->baserule,$formatter->baserepl,$head);
  -   $head=preg_replace("/\[\[.*\]\]/","",$head);
      $head=preg_replace("/(".$formatter->wordrule.")/e",
  -     "\$formatter->link_repl('\\1')",$head);
  +     "\$formatter->link_repl('\\1', '', \$opts)",$head);
      if ($simple)
        $head=strip_tags($head,'<b><i><img><sub><sup><del><tt><u><strong>');
   
  
  
  


1284075843;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv2923\n\nModified Files:\n	wiki.php \nLog Message:\n[#315678] fixed last change r1.608 to accept http://foobar.com/.....jpg&width=100&align=left like urls\n\n
wkpark      2010/09/10 08:44:04

  Modified:    .        wiki.php
  Log:
  [#315678] fixed last change r1.608 to accept http://foobar.com/.....jpg&width=100&align=left like urls
  
  Revision  Changes    Path
  1.611     +5 -5      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.610
  retrieving revision 1.611
  diff -u -r1.610 -r1.611
  --- wiki.php	9 Sep 2010 16:03:18 -0000	1.610
  +++ wiki.php	9 Sep 2010 23:44:03 -0000	1.611
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.610 2010/09/09 16:03:18 wkpark Exp $
  +// $Id: wiki.php,v 1.611 2010/09/09 23:44:03 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.610 $',1,-1);
  +$_revision = substr('$Revision: 1.611 $',1,-1);
   $_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -2016,10 +2016,10 @@
         } # have no space
         $link = str_replace(array('<','>'),array('&#x3c;','&#x3e;'),$url);
         if (preg_match("/^(http|https|ftp)/",$url)) {
  -        if (preg_match("/(^.*\.(png|gif|jpeg|jpg))(\?.*?)?$/i",$url,$match)) {
  -          $url=preg_replace('/&amp;/','&',$url);
  +        $url1 = preg_replace('/&amp;/','&',$url);
  +        if (preg_match("/(^.*\.(png|gif|jpeg|jpg))(?:\?|&(?!>amp;))(.*?)?$/i", $url1, $match)) {
             $url=$match[1];
  -          $attrs=!empty($match[3]) ? explode('&amp',substr($match[3],1)) : array();
  +          $attrs = !empty($match[3]) ? explode('&', $match[3]) : array();
             foreach ($attrs as $arg) {
               $name=strtok($arg,'=');
               $val=strtok(' ');
  
  
  


1284078825;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv10438\n\nModified Files:\n	wiki.php \nLog Message:\n[#315692] fixed rendering bug of inline codes to render inline formatting rules correctly.\n\n
wkpark      2010/09/10 09:33:46

  Modified:    .        wiki.php
  Log:
  [#315692] fixed rendering bug of inline codes to render inline formatting rules correctly.
  
  Revision  Changes    Path
  1.612     +5 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.611
  retrieving revision 1.612
  diff -u -r1.611 -r1.612
  --- wiki.php	9 Sep 2010 23:44:03 -0000	1.611
  +++ wiki.php	10 Sep 2010 00:33:45 -0000	1.612
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.611 2010/09/09 23:44:03 wkpark Exp $
  +// $Id: wiki.php,v 1.612 2010/09/10 00:33:45 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.611 $',1,-1);
  +$_revision = substr('$Revision: 1.612 $',1,-1);
   $_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -1849,9 +1849,9 @@
       switch ($url[0]) {
       case '{':
         $url=substr($url,3,-3);
  -      $url=str_replace("<","&lt;",$url);
         if (preg_match('/^({([^{}]+)})/s',$url,$sty)) { # textile like styling
           $url=substr($url,strlen($sty[1]));
  +        $url = preg_replace($this->baserule, $this->baserepl, $url); // apply inline formatting rules
           return "<span style='$sty[2]'>$url</span>";
         }
         if ($url[0]=='#' and ($p=strpos($url,' '))) {
  @@ -1862,13 +1862,14 @@
             return "<span style='color:$col'>$url</span>";
           $url=$col.' '.$url;
         } else if (preg_match('/^((?:\+|\-)([1-6]?))(?=\s)(.*)$/',$url,$m)) {
  -        $m[3]=str_replace("&lt;","<",$m[3]);
           if ($m[2]=='') $m[1].='1';
           $fsz=array(
             '-5'=>'10%','-4'=>'20%','-3'=>'40%','-2'=>'60%','-1'=>'80%',
             '+1'=>'140%','+2'=>'180%','+3'=>'220%','+4'=>'260%','+5'=>'200%');
           return "<span style='font-size:".$fsz[$m[1]]."'>$m[3]</span>";
         }
  +
  +      $url = str_replace("<","&lt;",$url);
         if ($url[0]==' ' and in_array($url[1],array('#','-','+')) !==false)
           $url='<span class="markup invisible"> </span>'.substr($url,1);
         return "<tt class='wiki'>".$url."</tt>"; # No link
  
  
  


1284099205;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv25545\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315696] fixed xthml markup typo\n\n
wkpark      2010/09/10 15:13:26

  Modified:    .        wikilib.php
  Log:
  [#315696] fixed xthml markup typo
  
  Revision  Changes    Path
  1.352     +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.351
  retrieving revision 1.352
  diff -u -r1.351 -r1.352
  --- wikilib.php	9 Sep 2010 16:03:19 -0000	1.351
  +++ wikilib.php	10 Sep 2010 06:13:25 -0000	1.352
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.351 2010/09/09 16:03:19 wkpark Exp $
  +// $Id: wikilib.php,v 1.352 2010/09/10 06:13:25 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1376,7 +1376,7 @@
         if (!empty($DBInfo->wikiwyg_confirm)) $confirm = 'null';
         $wysiwyg_msg=_("GUI");
         $wysiwyg_btn.='&nbsp;<button type="button" tabindex="7"'.
  -        '" onclick="javascript:sectionEdit(null,'.$confirm .',null)" ><span>'.
  +        ' onclick="javascript:sectionEdit(null,'.$confirm .',null)" ><span>'.
   	$wysiwyg_msg.'</span></button>';
       }
       $summary=<<<EOS
  
  
  


1284099390;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv25626/plugin\n\nModified Files:\n	UploadedFiles.php \nLog Message:\n[#315696] fixed XHTML markup mismatch\n\n
wkpark      2010/09/10 15:16:31

  Modified:    plugin   UploadedFiles.php
  Log:
  [#315696] fixed XHTML markup mismatch
  
  Revision  Changes    Path
  1.39      +8 -7      moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- UploadedFiles.php	9 Jul 2010 09:44:10 -0000	1.38
  +++ UploadedFiles.php	10 Sep 2010 06:16:30 -0000	1.39
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadedFiles plugin for the MoniWiki
   //
  -// $Id: UploadedFiles.php,v 1.38 2010/07/09 09:44:10 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.39 2010/09/10 06:16:30 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     if (!empty($options['q'])) {
  @@ -296,7 +296,7 @@
        $out.="<input type='hidden' name='value' value='$value' />\n";
   
   
  -   $out.="</p><table style='border:0px' cellpadding='2'>\n";
  +   $out.="</p><table style='border:0px' cellpadding='2' class='uploadInfo'>\n";
      $colspan='';
      if ($use_admin) $colspan=" colspan='2'";
      if ($use_fileinfo) {
  @@ -363,7 +363,7 @@
      $down_mode=(strpos($prefix,';value=') !== false);
      $mywidth=$preview_width;
   
  -   $iidx=1;
  +   $iidx=0;
      foreach ($upfiles as $file) {
         $_l_file=_l_filename($file);
         // force download with some extensions. XXX
  @@ -431,19 +431,20 @@
             $link="javascript:$tag";
           }
         }
  -      if (($iidx % $col) == 0)
  -      $out.="<tr>";
  +      if (empty($iidx))
  +        $out.="<tr>\n";
  +      else if (($iidx % $col) == 0)
  +        $out.="</tr>\n<tr>\n";
         if ($use_admin)
           $out.="<td class='wiki'><input type='$checkbox' name='files[$idx]' value='$file' /></td>";
         $out.="<td class='wiki'><a href=\"$link\"$attr>$fname</a></td>";
         if ($use_fileinfo) {
           $out.="<td align='right' class='wiki'>$size</td><td class='wiki'>$date</td>";
         }
  -      if (($iidx % $col) == 0)
  -      $out.="</tr>\n";
         $idx++;
         $iidx++;
      }
  +   $out.="</tr>\n";
      $idx--;
      $msg=sprintf(_("Total %d files"),$idx);
      $out.="<tr><th colspan='2'>$msg</th><th colspan='2'>$plink</th></tr>\n";
  
  
  


1284099506;wkpark;Update of /cvsroot/moniwiki/moniwiki/lib\nIn directory kill.kldp.net:/tmp/cvs-serv25732/lib\n\nModified Files:\n	rcslite.php \nLog Message:\n\n
wkpark      2010/09/10 15:18:26

  Modified:    lib      rcslite.php
  Log:
  
  
  Revision  Changes    Path
  1.7       +3 -2      moniwiki/lib/rcslite.php
  
  Index: rcslite.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/rcslite.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- rcslite.php	19 Jun 2010 07:10:51 -0000	1.6
  +++ rcslite.php	10 Sep 2010 06:18:26 -0000	1.7
  @@ -3,7 +3,7 @@
   # Copyright (c) 2004 Won-kyu Park <wkpark at kldp.org>
   #
   # this module is ported from the RcsLite.pm of the TWiki by wkpark.
  -# $Id: rcslite.php,v 1.6 2010/06/19 07:10:51 wkpark Exp $
  +# $Id: rcslite.php,v 1.7 2010/09/10 06:18:26 wkpark Exp $
   
   # Original notice:
   #
  @@ -357,6 +357,7 @@
           } else
               $revs=&$this->_next;
   
  +        $rlog = '';
           foreach ($revs as $rev=>$next) {
               $log=$this->_log[$rev];
               if (!preg_match("/\n$/",$log)) $log.="\n";
  @@ -365,7 +366,7 @@
               $rlog.= "date: ".gmdate("Y/m/d H:i:s",$this->_date[$rev]).";  author: ". $this->_author[$rev].";  state: Exp;  lines: ".$this->_change[$rev]."\n";
               $rlog.= $log;
           }
  -        $rlog.= str_repeat("=",71)."\n";
  +        if (!empty($rlog)) $rlog.= str_repeat("=",71)."\n";
           return $rlog;
       }
       
  
  
  


1284099865;wkpark;Update of /cvsroot/moniwiki/moniwiki/lib\nIn directory kill.kldp.net:/tmp/cvs-serv25934/lib\n\nModified Files:\n	version.RcsLite.php \nLog Message:\n[#315697] include version.RCS.php correctly\n\n
wkpark      2010/09/10 15:24:26

  Modified:    lib      version.RcsLite.php
  Log:
  [#315697] include version.RCS.php correctly
  
  Revision  Changes    Path
  1.7       +3 -1      moniwiki/lib/version.RcsLite.php
  
  Index: version.RcsLite.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/version.RcsLite.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- version.RcsLite.php	29 Mar 2008 06:51:44 -0000	1.6
  +++ version.RcsLite.php	10 Sep 2010 06:24:25 -0000	1.7
  @@ -3,7 +3,9 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a RcsLite versioning plugin for the MoniWiki
   //
  -// $Id: version.RcsLite.php,v 1.6 2008/03/29 06:51:44 wkpark Exp $
  +// $Id: version.RcsLite.php,v 1.7 2010/09/10 06:24:25 wkpark Exp $
  +
  +require_once(dirname(__FILE__).'/version.RCS.php');
   
   class Version_RcsLite extends Version_RCS {
     var $DB;
  
  
  


1284100221;wkpark;Update of /cvsroot/moniwiki/moniwiki/lib\nIn directory kill.kldp.net:/tmp/cvs-serv26084/lib\n\nModified Files:\n	wikiconfig.php \nLog Message:\n[#315666] fixed last changes\n\n
wkpark      2010/09/10 15:30:21

  Modified:    lib      wikiconfig.php
  Log:
  [#315666] fixed last changes
  
  Revision  Changes    Path
  1.2       +10 -10    moniwiki/lib/wikiconfig.php
  
  Index: wikiconfig.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/wikiconfig.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- wikiconfig.php	7 Sep 2010 12:11:48 -0000	1.1
  +++ wikiconfig.php	10 Sep 2010 06:30:21 -0000	1.2
  @@ -96,18 +96,18 @@
       unset($default['conf']);
   
       $config = new StdClass;
  -    foreach ($default as $k=>$v) {
  -        $config->$k = $v;
  -    }
   
       if (is_array($conf)) {
           // override config with user-specified configurations
  -        if (!empty($conf)) {
  -            // read configurations
  -            foreach ($conf as $k=>$v) {
  -                if ($k[0] == '_') continue; // ignore internal variables
  -                $config->$k = $v;
  -            }
  +        $conf = array_merge($default, $conf);   
  +        // read configurations
  +        foreach ($conf as $k=>$v) {
  +            if ($k[0] == '_') continue; // ignore internal variables
  +            $config->$k = $v;
  +        }
  +    } else {
  +        foreach ($default as $k=>$v) {
  +            $config->$k = $v;
           }
       }
   
  @@ -129,7 +129,7 @@
       $config->imgs_url_interwiki = $config->imgs_dir_url;
   
       if (empty($config->upload_dir_url))
  -        $config->upload_dir_url = $config->upload_dir;
  +        $config->upload_dir_url = $config->url_prefix . '/' . $config->upload_dir;
   
       if (empty($config->imgs_real_dir)) {
           if (function_exists('apache_lookup_uri')) {
  
  
  


1284104747;wkpark;Update of /cvsroot/moniwiki/moniwiki/css\nIn directory kill.kldp.net:/tmp/cvs-serv3627\n\nModified Files:\n	_base.css \nLog Message:\nwikiIcon css class added\n\n
wkpark      2010/09/10 16:45:48

  Modified:    css      _base.css
  Log:
  wikiIcon css class added
  
  Revision  Changes    Path
  1.39      +4 -0      moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- _base.css	9 Sep 2010 14:47:27 -0000	1.38
  +++ _base.css	10 Sep 2010 07:45:47 -0000	1.39
  @@ -315,6 +315,10 @@
     margin-left: 10px;
   }
   
  +img.wikiIcon {
  +  border:0px;
  +}
  +
   #wikiIcon img, #wikiMenu img {
     vertical-align: middle;
   }
  
  
  


1284108650;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv14593\n\nModified Files:\n	wiki.php \nLog Message:\n[#315563] fixed upper(or parent) page detection with $use_namespace option\n\n
wkpark      2010/09/10 17:50:51

  Modified:    .        wiki.php
  Log:
  [#315563] fixed upper(or parent) page detection with $use_namespace option
  
  Revision  Changes    Path
  1.613     +8 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.612
  retrieving revision 1.613
  diff -u -r1.612 -r1.613
  --- wiki.php	10 Sep 2010 00:33:45 -0000	1.612
  +++ wiki.php	10 Sep 2010 08:50:50 -0000	1.613
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.612 2010/09/10 00:33:45 wkpark Exp $
  +// $Id: wiki.php,v 1.613 2010/09/10 08:50:50 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.612 $',1,-1);
  +$_revision = substr('$Revision: 1.613 $',1,-1);
   $_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -4008,8 +4008,10 @@
           $this->set_origin($this->page->name);
   
         # find upper page
  +      $up_separator = '/';
  +      if (!empty($this->use_namespace)) $up_separator.= '|\:';
         $pos=0;
  -      preg_match('/(\:|\/)/',$this->page->name,$sep); # NameSpace/SubPage or NameSpace:SubNameSpacePage
  +      preg_match('@(' . $up_separator . ')@',$this->page->name,$sep); # NameSpace/SubPage or NameSpace:SubNameSpacePage
         if (isset($sep[1])) $pos=strrpos($this->page->name,$sep);
         if ($pos > 0) $upper=substr($this->page->urlname,0,$pos);
         else if ($this->group) $upper=_urlencode(substr($this->page->name,strlen($this->group)));
  @@ -4333,8 +4335,10 @@
       $saved_pagelinks = $this->pagelinks;
   
       # find upper page
  +    $up_separator = '/';
  +    if (!empty($this->use_namespace)) $up_separator.= '|\:';
       $pos=0;
  -    preg_match('/(\:|\/)/',$name,$sep); # NameSpace/SubPage or NameSpace:SubNameSpacePage
  +    preg_match('@(' . $up_separator . ')@',$name,$sep); # NameSpace/SubPage or NameSpace:SubNameSpacePage
       if (isset($sep[1])) $pos=strrpos($name,$sep[1]);
       $mypgname=$this->page->name;
       $upper_icon = '';
  
  
  


1284108759;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv14837\n\nModified Files:\n      Tag: B_1_1_5\n	wiki.php wikilib.php \nLog Message:\nmerged from trunk\n\n * #315675 set default valule of the cols of textarea conditionally to support mobile phone\n * #315672 fixed alias/twinpages/sistersites to show spaced wiki words correctly\n * #315681 fixed Last-modified timestamp checking\n * #315682 fixed recursive redirect bug with $query_prefix=='?', fixed i18n msg\n * #315680 fixed latex2png plugin to support HTTP conditional get\n * #315678 fixed to set the attributes of images, fixed css to get right/center aligned imgs/tables correctly.\n * #315563 check $use_namespace option correctly.\n * #315563 fixed upper(or parent) page detection with $use_namespace option\n * #315679 preserve [[Links]] markup in the headings and remove [[Macro]] correctly\n * #315692 accect url..with_image&attr1=a&attr2=b markups\n * #315696 XHTML valid fixes (GUI button, uploadedf files)\n * #315697 fixed to get the latest verion of RCS correctly. rcslite.php\n\n
1284108759;wkpark;Update of /cvsroot/moniwiki/moniwiki/css\nIn directory kill.kldp.net:/tmp/cvs-serv14837/css\n\nModified Files:\n      Tag: B_1_1_5\n	_base.css \nLog Message:\nmerged from trunk\n\n * #315675 set default valule of the cols of textarea conditionally to support mobile phone\n * #315672 fixed alias/twinpages/sistersites to show spaced wiki words correctly\n * #315681 fixed Last-modified timestamp checking\n * #315682 fixed recursive redirect bug with $query_prefix=='?', fixed i18n msg\n * #315680 fixed latex2png plugin to support HTTP conditional get\n * #315678 fixed to set the attributes of images, fixed css to get right/center aligned imgs/tables correctly.\n * #315563 check $use_namespace option correctly.\n * #315563 fixed upper(or parent) page detection with $use_namespace option\n * #315679 preserve [[Links]] markup in the headings and remove [[Macro]] correctly\n * #315692 accect url..with_image&attr1=a&attr2=b markups\n * #315696 XHTML valid fixes (GUI button, uploadedf files)\n * #315697 fixed to get the latest verion of RCS correctly. rcslite.php\n\n
1284108759;wkpark;Update of /cvsroot/moniwiki/moniwiki/lib\nIn directory kill.kldp.net:/tmp/cvs-serv14837/lib\n\nModified Files:\n      Tag: B_1_1_5\n	rcslite.php \nLog Message:\nmerged from trunk\n\n * #315675 set default valule of the cols of textarea conditionally to support mobile phone\n * #315672 fixed alias/twinpages/sistersites to show spaced wiki words correctly\n * #315681 fixed Last-modified timestamp checking\n * #315682 fixed recursive redirect bug with $query_prefix=='?', fixed i18n msg\n * #315680 fixed latex2png plugin to support HTTP conditional get\n * #315678 fixed to set the attributes of images, fixed css to get right/center aligned imgs/tables correctly.\n * #315563 check $use_namespace option correctly.\n * #315563 fixed upper(or parent) page detection with $use_namespace option\n * #315679 preserve [[Links]] markup in the headings and remove [[Macro]] correctly\n * #315692 accect url..with_image&attr1=a&attr2=b markups\n * #315696 XHTML valid fixes (GUI button, uploadedf files)\n * #315697 fixed to get the latest verion of RCS correctly. rcslite.php\n\n
1284108759;wkpark;Update of /cvsroot/moniwiki/moniwiki/locale/po\nIn directory kill.kldp.net:/tmp/cvs-serv14837/locale/po\n\nModified Files:\n      Tag: B_1_1_5\n	ko.po \nLog Message:\nmerged from trunk\n\n * #315675 set default valule of the cols of textarea conditionally to support mobile phone\n * #315672 fixed alias/twinpages/sistersites to show spaced wiki words correctly\n * #315681 fixed Last-modified timestamp checking\n * #315682 fixed recursive redirect bug with $query_prefix=='?', fixed i18n msg\n * #315680 fixed latex2png plugin to support HTTP conditional get\n * #315678 fixed to set the attributes of images, fixed css to get right/center aligned imgs/tables correctly.\n * #315563 check $use_namespace option correctly.\n * #315563 fixed upper(or parent) page detection with $use_namespace option\n * #315679 preserve [[Links]] markup in the headings and remove [[Macro]] correctly\n * #315692 accect url..with_image&attr1=a&attr2=b markups\n * #315696 XHTML valid fixes (GUI button, uploadedf files)\n * #315697 fixed to get the latest verion of RCS correctly. rcslite.php\n\n
1284108760;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv14837/plugin\n\nModified Files:\n      Tag: B_1_1_5\n	UploadedFiles.php latex2png.php \nLog Message:\nmerged from trunk\n\n * #315675 set default valule of the cols of textarea conditionally to support mobile phone\n * #315672 fixed alias/twinpages/sistersites to show spaced wiki words correctly\n * #315681 fixed Last-modified timestamp checking\n * #315682 fixed recursive redirect bug with $query_prefix=='?', fixed i18n msg\n * #315680 fixed latex2png plugin to support HTTP conditional get\n * #315678 fixed to set the attributes of images, fixed css to get right/center aligned imgs/tables correctly.\n * #315563 check $use_namespace option correctly.\n * #315563 fixed upper(or parent) page detection with $use_namespace option\n * #315679 preserve [[Links]] markup in the headings and remove [[Macro]] correctly\n * #315692 accect url..with_image&attr1=a&attr2=b markups\n * #315696 XHTML valid fixes (GUI button, uploadedf files)\n * #315697 fixed to get the latest verion of RCS correctly. rcslite.php\n\n
1284108760;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin/processor\nIn directory kill.kldp.net:/tmp/cvs-serv14837/plugin/processor\n\nModified Files:\n      Tag: B_1_1_5\n	latex.php \nLog Message:\nmerged from trunk\n\n * #315675 set default valule of the cols of textarea conditionally to support mobile phone\n * #315672 fixed alias/twinpages/sistersites to show spaced wiki words correctly\n * #315681 fixed Last-modified timestamp checking\n * #315682 fixed recursive redirect bug with $query_prefix=='?', fixed i18n msg\n * #315680 fixed latex2png plugin to support HTTP conditional get\n * #315678 fixed to set the attributes of images, fixed css to get right/center aligned imgs/tables correctly.\n * #315563 check $use_namespace option correctly.\n * #315563 fixed upper(or parent) page detection with $use_namespace option\n * #315679 preserve [[Links]] markup in the headings and remove [[Macro]] correctly\n * #315692 accect url..with_image&attr1=a&attr2=b markups\n * #315696 XHTML valid fixes (GUI button, uploadedf files)\n * #315697 fixed to get the latest verion of RCS correctly. rcslite.php\n\n
wkpark      2010/09/10 17:52:40

  Modified:    .        Tag: B_1_1_5 wiki.php wikilib.php
               css      Tag: B_1_1_5 _base.css
               lib      Tag: B_1_1_5 rcslite.php
               locale/po Tag: B_1_1_5 ko.po
               plugin   Tag: B_1_1_5 UploadedFiles.php latex2png.php
               plugin/processor Tag: B_1_1_5 latex.php
  Log:
  merged from trunk
  
   * #315675 set default valule of the cols of textarea conditionally to support mobile phone
   * #315672 fixed alias/twinpages/sistersites to show spaced wiki words correctly
   * #315681 fixed Last-modified timestamp checking
   * #315682 fixed recursive redirect bug with $query_prefix=='?', fixed i18n msg
   * #315680 fixed latex2png plugin to support HTTP conditional get
   * #315678 fixed to set the attributes of images, fixed css to get right/center aligned imgs/tables correctly.
   * #315563 check $use_namespace option correctly.
   * #315563 fixed upper(or parent) page detection with $use_namespace option
   * #315679 preserve [[Links]] markup in the headings and remove [[Macro]] correctly
   * #315692 accect url..with_image&attr1=a&attr2=b markups
   * #315696 XHTML valid fixes (GUI button, uploadedf files)
   * #315697 fixed to get the latest verion of RCS correctly. rcslite.php
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.600.2.2 +39 -33    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.600.2.1
  retrieving revision 1.600.2.2
  diff -u -r1.600.2.1 -r1.600.2.2
  --- wiki.php	7 Sep 2010 08:34:08 -0000	1.600.2.1
  +++ wiki.php	10 Sep 2010 08:52:39 -0000	1.600.2.2
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.600.2.1 2010/09/07 08:34:08 wkpark Exp $
  +// $Id: wiki.php,v 1.600.2.2 2010/09/10 08:52:39 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.600.2.1 $',1,-1);
  +$_revision = substr('$Revision: 1.600.2.2 $',1,-1);
   $_release = '1.1.6-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -439,11 +439,11 @@
       if (empty($mode)) return true;
       $twins=$this->db[$pagename];
   
  -    $ret='[wiki:'.str_replace(',',"] [wiki:",$twins).']';
  +    $ret='[wiki:'.str_replace(',',"]\n[wiki:",$twins).']';
   
       $pagename=_preg_search_escape($pagename);
       $ret= preg_replace("/((:[^\s]+){2})(\:$pagename)/","\\1",$ret);
  -    return explode(' ',$ret);
  +    return explode("\n", $ret);
     }
     function getSisterSites($pagename,$mode=1) {
       if (empty($this->db[$pagename])) {
  @@ -822,8 +822,11 @@
         _fake_lock($_lock_file);
         foreach ($files as $file) {
           $as = unserialize($ac->_fetch($file));
  -        $pagename = key($as);
  -        foreach ($as[$pagename] as $k) {
  +        $keyname = key($as);
  +        $pagename = $keyname;
  +        if (strpos($pagename, ' ') !== false)
  +          $pagename = '"' . $pagename . '"';
  +        foreach ($as[$keyname] as $k) {
             $aliases[$k] = !empty($aliases[$k]) ? $aliases[$k].','.$pagename : $pagename;
           }
         }
  @@ -874,12 +877,12 @@
       $pn= trim($pn,':');
       $pn= preg_replace('#:+#',':',$pn);
   
  -    $pn= preg_replace("/([^a-z0-9:]{1})/ie","'_'.strtolower(dechex(ord(substr('\\1',-1))))",$pn);
  -    if (!empty($this->use_namespace))
  -      $name=preg_replace('#:#','.d/',$pn);
  -    else
  -      $name = $pn;
  -    #$name=preg_replace("/([^a-z0-9]{1})/ie","'_'.strtolower(dechex(ord('\\1')))",$pagename);
  +    // namespace spearator ':' like as 'Foobar:Hello'
  +    $separator = ':';
  +    if (empty($this->use_namespace)) $separator = '';
  +
  +    $pn = preg_replace("/([^a-z0-9".$separator."]{1})/ie", "'_'.strtolower(dechex(ord(substr('\\1',-1))))",$pn);
  +    $name = preg_replace('#:#','.d/',$pn); // Foobar:Hello page will be stored as text/Foobar.d/Hello
       return $name;
     }
   
  @@ -912,8 +915,10 @@
     #  $pagename=str_replace("_","%",$key);
   
       $pagename = $key;
  -    if (!empty($this->use_namespace))
  -      $pagename=preg_replace('%\.d/%',':',$key);
  +
  +    // for namespace
  +    $separator = ':';
  +    $pagename=preg_replace('%\.d/%', $separator, $key);
   
       $pagename=strtr($pagename,'_','%');
       return rawurldecode($pagename);
  @@ -1727,7 +1732,7 @@
         $_dir = $top.'/'.$dir;
       }
   
  -    $dh = opendir($_dir);
  +    $dh = @opendir($_dir);
       if (!$dh) return; // slightly ignore
   
       while (($file = readdir($dh)) !== false) {
  @@ -2440,9 +2445,9 @@
       switch ($url[0]) {
       case '{':
         $url=substr($url,3,-3);
  -      $url=str_replace("<","&lt;",$url);
         if (preg_match('/^({([^{}]+)})/s',$url,$sty)) { # textile like styling
           $url=substr($url,strlen($sty[1]));
  +        $url = preg_replace($this->baserule, $this->baserepl, $url); // apply inline formatting rules
           return "<span style='$sty[2]'>$url</span>";
         }
         if ($url[0]=='#' and ($p=strpos($url,' '))) {
  @@ -2453,13 +2458,14 @@
             return "<span style='color:$col'>$url</span>";
           $url=$col.' '.$url;
         } else if (preg_match('/^((?:\+|\-)([1-6]?))(?=\s)(.*)$/',$url,$m)) {
  -        $m[3]=str_replace("&lt;","<",$m[3]);
           if ($m[2]=='') $m[1].='1';
           $fsz=array(
             '-5'=>'10%','-4'=>'20%','-3'=>'40%','-2'=>'60%','-1'=>'80%',
             '+1'=>'140%','+2'=>'180%','+3'=>'220%','+4'=>'260%','+5'=>'200%');
           return "<span style='font-size:".$fsz[$m[1]]."'>$m[3]</span>";
         }
  +
  +      $url = str_replace("<","&lt;",$url);
         if ($url[0]==' ' and in_array($url[1],array('#','-','+')) !==false)
           $url='<span class="markup invisible"> </span>'.substr($url,1);
         return "<tt class='wiki'>".$url."</tt>"; # No link
  @@ -2474,8 +2480,7 @@
         $url=substr($url,1,-1);
         $double_bracket = true;
   
  -      preg_match("/^([^\(:]+)(\((.*)\))?$/", $url, $match);
  -      if (!empty($match)) {
  +      if (preg_match("/^([^\(:]+)(\((.*)\))?$/", $url, $match)) {
           if (isset($match[1])) {
             $name = $match[1];
           } else {
  @@ -2484,8 +2489,10 @@
   
           // check alias
           $myname = getPlugin($name);
  -        if (!empty($myname))
  +        if (!empty($myname)) {
  +          if (!empty($opts['nomacro'])) return ''; # remove macro
             return $this->macro_repl($url); # No link
  +        }
         }
   
         break;
  @@ -2539,14 +2546,9 @@
               preg_replace('/('.$this->url_mapping_rule.')/ie',"\$this->url_mappings['\\1']",$url);
         }
   
  -      if (preg_match("/^(:|w|[A-Z])/",$url))
  +      if (preg_match("/^(:|w|[A-Z])/",$url)
  +          or (!empty($this->urls) and !preg_match('/^('.$this->urls.')/',$url)))
           return $this->interwiki_repl($url,'',$attr,$external_icon);
  -      else if (!empty($this->urls) and !preg_match('/^('.$this->urls.')/',$url)) {
  -        if ($this->use_namespace)
  -          return $this->interwiki_repl($url,'',$attr,$external_icon);
  -        else
  -          return $bra.$url.$ket;
  -      }
   
         if (preg_match("/^mailto:/",$url)) {
           $email=substr($url,7);
  @@ -2611,10 +2613,10 @@
         } # have no space
         $link = str_replace(array('<','>'),array('&#x3c;','&#x3e;'),$url);
         if (preg_match("/^(http|https|ftp)/",$url)) {
  -        if (preg_match("/(^.*\.(png|gif|jpeg|jpg))(\?.*?)?$/i",$url,$match)) {
  -          $url=preg_replace('/&amp;/','&',$url);
  +        $url1 = preg_replace('/&amp;/','&',$url);
  +        if (preg_match("/(^.*\.(png|gif|jpeg|jpg))(?:\?|&(?!>amp;))(.*?)?$/i", $url1, $match)) {
             $url=$match[1];
  -          $attrs=!empty($match[3]) ? explode('&',substr($match[3],1)) : array();
  +          $attrs = !empty($match[3]) ? explode('&', $match[3]) : array();
             foreach ($attrs as $arg) {
               $name=strtok($arg,'=');
               $val=strtok(' ');
  @@ -2902,7 +2904,7 @@
               "<tt class='sister'><a href='$url'>&#x203a;</a></tt>";
           }
           if (!empty($sisters)) {
  -          if (!empty($this->use_easyalias) and strpos($sisters,' ') === false) {
  +          if (!empty($this->use_easyalias) and !preg_match('/^\[wiki:[A-Z][a-z0-9]+:.*$/', $sisters)) {
               # this is a alias
               $this->use_easyalias=0;
               $url=$this->link_repl(substr($sisters,0,-1).' '.$word.']');
  @@ -4587,8 +4589,10 @@
           $this->set_origin($this->page->name);
   
         # find upper page
  +      $up_separator = '/';
  +      if (!empty($this->use_namespace)) $up_separator.= '|\:';
         $pos=0;
  -      preg_match('/(\:|\/)/',$this->page->name,$sep); # NameSpace/SubPage or NameSpace:SubNameSpacePage
  +      preg_match('@(' . $up_separator . ')@',$this->page->name,$sep); # NameSpace/SubPage or NameSpace:SubNameSpacePage
         if (isset($sep[1])) $pos=strrpos($this->page->name,$sep);
         if ($pos > 0) $upper=substr($this->page->urlname,0,$pos);
         else if ($this->group) $upper=_urlencode(substr($this->page->name,strlen($this->group)));
  @@ -4912,8 +4916,10 @@
       $saved_pagelinks = $this->pagelinks;
   
       # find upper page
  +    $up_separator = '/';
  +    if (!empty($this->use_namespace)) $up_separator.= '|\:';
       $pos=0;
  -    preg_match('/(\:|\/)/',$name,$sep); # NameSpace/SubPage or NameSpace:SubNameSpacePage
  +    preg_match('@(' . $up_separator . ')@',$name,$sep); # NameSpace/SubPage or NameSpace:SubNameSpacePage
       if (isset($sep[1])) $pos=strrpos($name,$sep[1]);
       $mypgname=$this->page->name;
       $upper_icon = '';
  
  
  
  1.344.2.2 +26 -11    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.344.2.1
  retrieving revision 1.344.2.2
  diff -u -r1.344.2.1 -r1.344.2.2
  --- wikilib.php	7 Sep 2010 08:34:08 -0000	1.344.2.1
  +++ wikilib.php	10 Sep 2010 08:52:39 -0000	1.344.2.2
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.344.2.1 2010/09/07 08:34:08 wkpark Exp $
  +// $Id: wikilib.php,v 1.344.2.2 2010/09/10 08:52:39 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -32,7 +32,6 @@
   }
   
   function get_scriptname() {
  -  global $Config;
     // Return full URL of current page.
     // $_SERVER["SCRIPT_NAME"] has bad value under CGI mode
     // set 'cgi.fix_pathinfo=1' in the php.ini under
  @@ -369,7 +368,7 @@
       if ($if_modified_since) {
           // calculate time
           $mytime = @strtotime( $if_modified_since );
  -        if ( $mtime <= $mytime) {
  +        if ( $mtime < $mytime) {
               return true; // if-modified-since is there but doesn't match
           }
       }
  @@ -378,6 +377,24 @@
       return false;
   }
   
  +/**
  + * get default cols of textarea
  + *
  + */
  +function get_textarea_cols() {
  +  $COLS_MSIE = 80;
  +  $COLS_OTHER = 85;
  +
  +  if (preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT'])) {
  +    $cols = $COLS_MSIE;
  +  } else if (preg_match('/android|iphone/i', $_SERVER['HTTP_USER_AGENT'])) {
  +    $cols = 30;
  +  } else {
  +    $cols = $COLS_OTHER;
  +  }
  +  return $cols;
  +}
  +
   function _fake_lock_file($tmp, $arena, $tag = '') {
       $lock = $tmp . '/' . $arena;
       if (!empty($tag))
  @@ -1171,12 +1188,9 @@
   function macro_Edit($formatter,$value,$options='') {
     global $DBInfo;
   
  -  $COLS_MSIE= 80;
  -  $COLS_OTHER= 85;
  - 
     $options['mode'] = !empty($options['mode']) ? $options['mode'] : '';
     $edit_rows=$DBInfo->edit_rows ? $DBInfo->edit_rows: 16;
  -  $cols= preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']) ? $COLS_MSIE : $COLS_OTHER;
  +  $cols= get_textarea_cols();
   
     $use_js= preg_match('/Lynx|w3m|links/',$_SERVER['HTTP_USER_AGENT']) ? 0:1;
   
  @@ -1362,7 +1376,7 @@
         if (!empty($DBInfo->wikiwyg_confirm)) $confirm = 'null';
         $wysiwyg_msg=_("GUI");
         $wysiwyg_btn.='&nbsp;<button type="button" tabindex="7"'.
  -        '" onclick="javascript:sectionEdit(null,'.$confirm .',null)" ><span>'.
  +        ' onclick="javascript:sectionEdit(null,'.$confirm .',null)" ><span>'.
   	$wysiwyg_msg.'</span></button>';
       }
       $summary=<<<EOS
  @@ -1686,12 +1700,13 @@
        $url=_stripslashes(trim($options['value']));
        $url=_rawurlencode($url);
        if ($options['redirect'])
  -       $url=$formatter->link_url($url,"?action=show&redirect=".
  +       $url=$formatter->link_url($url,"?action=show&amp;redirect=".
             $formatter->page->name);
        else
          $url=$formatter->link_url($url,"");
        # FastCGI/PHP does not accept multiple header infos. XXX
        #$formatter->send_header("Location: ".$url,$options);
  +     $url = preg_replace('/&amp;/', '&', $url);
        $formatter->send_header(array("Status: 302","Location: ".$url),$options);
     } else if ($options['url']) {
       $url=$options['url'];
  @@ -3232,6 +3247,7 @@
      $body=$formatter->text;
    }
    $body=preg_replace("/\{\{\{.+?\}\}\}/s",'',$body);
  + $opts = array('nomacro'=>1); // disable macros in headings
    $lines=explode("\n",$body);
    foreach ($lines as $line) {
      $line=preg_replace("/\n$/", "", $line); # strip \n
  @@ -3247,9 +3263,8 @@
      #$head=preg_replace($formatter->baserule,"\\1",$head);
      # do not strip basic wikitags
      $head=preg_replace($formatter->baserule,$formatter->baserepl,$head);
  -   $head=preg_replace("/\[\[.*\]\]/","",$head);
      $head=preg_replace("/(".$formatter->wordrule.")/e",
  -     "\$formatter->link_repl('\\1')",$head);
  +     "\$formatter->link_repl('\\1', '', \$opts)",$head);
      if ($simple)
        $head=strip_tags($head,'<b><i><img><sub><sup><del><tt><u><strong>');
   
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.37.2.1  +18 -4     moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.37
  retrieving revision 1.37.2.1
  diff -u -r1.37 -r1.37.2.1
  --- _base.css	21 Aug 2010 08:34:50 -0000	1.37
  +++ _base.css	10 Sep 2010 08:52:39 -0000	1.37.2.1
  @@ -63,14 +63,14 @@
   }
   
   table.center {
  -  text-align:center;
  -  margin-left:auto; /* Moz */
  -  margin-right:auto; /* Moz */
  +  margin-left:auto;
  +  margin-right:auto;
   }
   
   table.right {
  -  text-align:right;
     float:right;
  +/*  margin-left:auto;
  +  margin-right:5px; */
   }
   
   td.center {
  @@ -315,6 +315,10 @@
     margin-left: 10px;
   }
   
  +img.wikiIcon {
  +  border:0px;
  +}
  +
   #wikiIcon img, #wikiMenu img {
     vertical-align: middle;
   }
  @@ -379,6 +383,10 @@
     vertical-align:middle; /* */
   }
   
  +div.imgAttach {
  +  display:inline;
  +}
  +
   img.imgLeft {
     margin-right : 15px;
     margin-bottom : 5px;
  @@ -389,6 +397,12 @@
     margin-bottom : 5px;
   }
   
  +img.imgCenter {
  +  display:block;
  +  margin-left : auto;
  +  margin-right : auto;
  +}
  +
   span.externalLink {
     display: none;
   }
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.6.2.1   +3 -2      moniwiki/lib/rcslite.php
  
  Index: rcslite.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/rcslite.php,v
  retrieving revision 1.6
  retrieving revision 1.6.2.1
  diff -u -r1.6 -r1.6.2.1
  --- rcslite.php	19 Jun 2010 07:10:51 -0000	1.6
  +++ rcslite.php	10 Sep 2010 08:52:39 -0000	1.6.2.1
  @@ -3,7 +3,7 @@
   # Copyright (c) 2004 Won-kyu Park <wkpark at kldp.org>
   #
   # this module is ported from the RcsLite.pm of the TWiki by wkpark.
  -# $Id: rcslite.php,v 1.6 2010/06/19 07:10:51 wkpark Exp $
  +# $Id: rcslite.php,v 1.6.2.1 2010/09/10 08:52:39 wkpark Exp $
   
   # Original notice:
   #
  @@ -357,6 +357,7 @@
           } else
               $revs=&$this->_next;
   
  +        $rlog = '';
           foreach ($revs as $rev=>$next) {
               $log=$this->_log[$rev];
               if (!preg_match("/\n$/",$log)) $log.="\n";
  @@ -365,7 +366,7 @@
               $rlog.= "date: ".gmdate("Y/m/d H:i:s",$this->_date[$rev]).";  author: ". $this->_author[$rev].";  state: Exp;  lines: ".$this->_change[$rev]."\n";
               $rlog.= $log;
           }
  -        $rlog.= str_repeat("=",71)."\n";
  +        if (!empty($rlog)) $rlog.= str_repeat("=",71)."\n";
           return $rlog;
       }
       
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.40.2.1  +1 -1      moniwiki/locale/po/ko.po
  
  Index: ko.po
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/locale/po/ko.po,v
  retrieving revision 1.40
  retrieving revision 1.40.2.1
  diff -u -r1.40 -r1.40.2.1
  --- ko.po	22 Aug 2010 08:47:21 -0000	1.40
  +++ ko.po	10 Sep 2010 08:52:39 -0000	1.40.2.1
  @@ -2210,7 +2210,7 @@
   #: ../wiki.php:5748
   #, c-format
   msgid "Redirected from page \"%s\""
  -msgstr "\"%s\"페이지로 부터 리다리렉트됨"
  +msgstr "\"%s\"페이지에서 리다이렉트됨"
   
   #: ../wiki.php:5918
   msgid "Invalid macro action."
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.38.2.1  +8 -7      moniwiki/plugin/UploadedFiles.php
  
  Index: UploadedFiles.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadedFiles.php,v
  retrieving revision 1.38
  retrieving revision 1.38.2.1
  diff -u -r1.38 -r1.38.2.1
  --- UploadedFiles.php	9 Jul 2010 09:44:10 -0000	1.38
  +++ UploadedFiles.php	10 Sep 2010 08:52:39 -0000	1.38.2.1
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a UploadedFiles plugin for the MoniWiki
   //
  -// $Id: UploadedFiles.php,v 1.38 2010/07/09 09:44:10 wkpark Exp $
  +// $Id: UploadedFiles.php,v 1.38.2.1 2010/09/10 08:52:39 wkpark Exp $
   
   function do_uploadedfiles($formatter,$options) {
     if (!empty($options['q'])) {
  @@ -296,7 +296,7 @@
        $out.="<input type='hidden' name='value' value='$value' />\n";
   
   
  -   $out.="</p><table style='border:0px' cellpadding='2'>\n";
  +   $out.="</p><table style='border:0px' cellpadding='2' class='uploadInfo'>\n";
      $colspan='';
      if ($use_admin) $colspan=" colspan='2'";
      if ($use_fileinfo) {
  @@ -363,7 +363,7 @@
      $down_mode=(strpos($prefix,';value=') !== false);
      $mywidth=$preview_width;
   
  -   $iidx=1;
  +   $iidx=0;
      foreach ($upfiles as $file) {
         $_l_file=_l_filename($file);
         // force download with some extensions. XXX
  @@ -431,19 +431,20 @@
             $link="javascript:$tag";
           }
         }
  -      if (($iidx % $col) == 0)
  -      $out.="<tr>";
  +      if (empty($iidx))
  +        $out.="<tr>\n";
  +      else if (($iidx % $col) == 0)
  +        $out.="</tr>\n<tr>\n";
         if ($use_admin)
           $out.="<td class='wiki'><input type='$checkbox' name='files[$idx]' value='$file' /></td>";
         $out.="<td class='wiki'><a href=\"$link\"$attr>$fname</a></td>";
         if ($use_fileinfo) {
           $out.="<td align='right' class='wiki'>$size</td><td class='wiki'>$date</td>";
         }
  -      if (($iidx % $col) == 0)
  -      $out.="</tr>\n";
         $idx++;
         $iidx++;
      }
  +   $out.="</tr>\n";
      $idx--;
      $msg=sprintf(_("Total %d files"),$idx);
      $out.="<tr><th colspan='2'>$msg</th><th colspan='2'>$plink</th></tr>\n";
  
  
  
  1.4.6.1   +31 -4     moniwiki/plugin/latex2png.php
  
  Index: latex2png.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/latex2png.php,v
  retrieving revision 1.4
  retrieving revision 1.4.6.1
  diff -u -r1.4 -r1.4.6.1
  --- latex2png.php	21 Jul 2009 16:09:44 -0000	1.4
  +++ latex2png.php	10 Sep 2010 08:52:39 -0000	1.4.6.1
  @@ -8,12 +8,12 @@
   // Name: Latex To PNG plugin
   // Description: convert latex syntax to PNGs
   // URL: MoniWiki:Latex2PngPlugin
  -// Version: $Revision: 1.4 $
  +// Version: $Revision: 1.4.6.1 $
   // License: GPL
   //
   // Usage: ?action=latex2png&value=$\alpha$
   //
  -// $Id: latex2png.php,v 1.4 2009/07/21 16:09:44 wkpark Exp $
  +// $Id: latex2png.php,v 1.4.6.1 2010/09/10 08:52:39 wkpark Exp $
   
   function macro_latex2png($formatter,$value,$params=array()) {
       $png= $formatter->processor_repl('latex',$value, $params);
  @@ -32,12 +32,39 @@
       else
           $png = $my;
   
  +    $mtime = filemtime($png);
  +    $lastmod = gmdate('D, d M Y H:i:s \G\M\T', $mtime);
  +    $etag = md5($mtime);
  +
  +    $headers = array();
  +    $headers[] = 'Pragma: cache';
  +    $maxage = 60*60*24*7;
  +    $headers[] = 'Cache-Control: private, max-age='.$maxage;
  +    $headers[] = 'Last-Modified: '.$lastmod;
  +    $headers[] = 'ETag: "'.$etag.'"';
  +    $need = http_need_cond_request($mtime, $lastmod, $etag);
  +    if (!$need)
  +        $headers[] = 'HTTP/1.0 304 Not Modified';
  +    foreach ($headers as $h)
  +        header($h);
  +    if (!$need) {
  +        @ob_end_clean();
  +        return;
  +    }
  +
       if (file_exists($png)) {
           Header("Content-type: image/png");
           readfile($png);
       } else {
  -        Header("Content-type: image/png");
  -        readfile($png);
  +        // 43byte 1x1 transparent gif
  +        // http://stackoverflow.com/questions/2933251/code-golf-1x1-black-pixel
  +        // http://www.perlmonks.org/?node_id=7974
  +        $gif = base64_decode('R0lGODlhAQABAJAAAAAAAAAAACH5BAUQAAAALAAAAAABAAEAAAICBAEAOw');
  +        Header("Content-type: image/gif");
  +        Header("Content-length: ".strlen($gif));
  +        header('Connection: Close');
  +        echo $gif;
  +        flush();
       }
   }
   
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.27.2.1  +3 -1      moniwiki/plugin/processor/latex.php
  
  Index: latex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/processor/latex.php,v
  retrieving revision 1.27
  retrieving revision 1.27.2.1
  diff -u -r1.27 -r1.27.2.1
  --- latex.php	19 Apr 2010 11:26:47 -0000	1.27
  +++ latex.php	10 Sep 2010 08:52:40 -0000	1.27.2.1
  @@ -12,7 +12,7 @@
   // $path='./bin;C:/Program Files/MiKTeX 2.5/miktex/bin;C:/Program Files/ImageMagick-6.3.6-Q16';
   // # ImagMagick and MikTeX are used in this setting.
   //
  -// $Id: latex.php,v 1.27 2010/04/19 11:26:47 wkpark Exp $
  +// $Id: latex.php,v 1.27.2.1 2010/09/10 08:52:40 wkpark Exp $
   
   function _latex_renumber($match,$tag='\\tag') {
     // XXX
  @@ -104,6 +104,8 @@
   \\begin{document}
   @TEX@
   \\end{document}
  +%%$dviopt
  +%%$latex_convert_options
   ";
     }
   
  
  
  


1284109051;wkpark;Update of /cvsroot/moniwiki/moniwiki-theme/azblue2/css\nIn directory kill.kldp.net:/tmp/cvs-serv15275/css\n\nModified Files:\n	default.css \nLog Message:\nupdate\n\n
1284118037;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv3624\n\nModified Files:\n	wiki.php wikilib.php \nLog Message:\n[#315679] fixed to hide footnote contents in the TableOfContents macro\n\n
wkpark      2010/09/10 20:27:17

  Modified:    .        wiki.php wikilib.php
  Log:
  [#315679] fixed to hide footnote contents in the TableOfContents macro
  
  Revision  Changes    Path
  1.614     +3 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.613
  retrieving revision 1.614
  diff -u -r1.613 -r1.614
  --- wiki.php	10 Sep 2010 08:50:50 -0000	1.613
  +++ wiki.php	10 Sep 2010 11:27:16 -0000	1.614
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.613 2010/09/10 08:50:50 wkpark Exp $
  +// $Id: wiki.php,v 1.614 2010/09/10 11:27:16 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.613 $',1,-1);
  +$_revision = substr('$Revision: 1.614 $',1,-1);
   $_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -1914,6 +1914,7 @@
                    "<a id='".($temp=substr($anchor,1))."'></a>";
         break;
       case '*':
  +        if (!empty($opts['nomacro'])) return ''; # remove macro
         return $this->macro_repl('FootNote',$url);
         break;
       case '!':
  
  
  
  1.353     +3 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.352
  retrieving revision 1.353
  diff -u -r1.352 -r1.353
  --- wikilib.php	10 Sep 2010 06:13:25 -0000	1.352
  +++ wikilib.php	10 Sep 2010 11:27:16 -0000	1.353
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.352 2010/09/10 06:13:25 wkpark Exp $
  +// $Id: wikilib.php,v 1.353 2010/09/10 11:27:16 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -3248,6 +3248,7 @@
    }
    $body=preg_replace("/\{\{\{.+?\}\}\}/s",'',$body);
    $opts = array('nomacro'=>1); // disable macros in headings
  + $wordrule = $formatter->wordrule .= '|'.$formatter->footrule;
    $lines=explode("\n",$body);
    foreach ($lines as $line) {
      $line=preg_replace("/\n$/", "", $line); # strip \n
  @@ -3263,7 +3264,7 @@
      #$head=preg_replace($formatter->baserule,"\\1",$head);
      # do not strip basic wikitags
      $head=preg_replace($formatter->baserule,$formatter->baserepl,$head);
  -   $head=preg_replace("/(".$formatter->wordrule.")/e",
  +   $head=preg_replace("/(".$wordrule.")/e",
        "\$formatter->link_repl('\\1', '', \$opts)",$head);
      if ($simple)
        $head=strip_tags($head,'<b><i><img><sub><sup><del><tt><u><strong>');
  
  
  


1284177539;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv17924\n\nModified Files:\n	WordIndex.php \nLog Message:\n[#315693] fixed to cache the result of wordindex, paginate etc.\n\n
wkpark      2010/09/11 12:59:00

  Modified:    plugin   WordIndex.php
  Log:
  [#315693] fixed to cache the result of wordindex, paginate etc.
  
  Revision  Changes    Path
  1.9       +166 -48   moniwiki/plugin/WordIndex.php
  
  Index: WordIndex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/WordIndex.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- WordIndex.php	19 Apr 2010 11:26:46 -0000	1.8
  +++ WordIndex.php	11 Sep 2010 03:58:59 -0000	1.9
  @@ -5,13 +5,11 @@
   //
   // Usage: [[WordIndex]]
   //
  -// $Id: WordIndex.php,v 1.8 2010/04/19 11:26:46 wkpark Exp $
  -// vim:et:ts=2:
  +// $Id: WordIndex.php,v 1.9 2010/09/11 03:58:59 wkpark Exp $
   
  -function macro_WordIndex($formatter,$value) {
  +function macro_WordIndex($formatter,$value, $params = array()) {
     global $DBInfo;
   
  -  $all_pages= $DBInfo->getPageLists();
     $pagelinks=$formatter->pagelinks; // save
     $save=$formatter->sister_on;
     $formatter->sister_on=0;
  @@ -20,61 +18,181 @@
       $cache=new Cache_text('title');
     }
   
  -  foreach ($all_pages as $page) {
  -    if (!empty($DBInfo->use_titlecache) and $cache->exists($page))
  -      $title=$cache->fetch($page);
  -    else
  -      $title=$page;
  -    $tmp=preg_replace("/[\?!$%\.\^;&\*()_\+\|\[\]<>\"' \-~\/]/"," ",$title);
  -    $tmp=preg_replace("/((?<=[A-Za-z0-9])[A-Z][a-z0-9])/"," \\1",ucwords($tmp));
  -    $words=preg_split("/\s+/",$tmp);
  -    foreach ($words as $word) {
  -      $word=ltrim($word);
  -      if (!$word) continue;
  -      if (!empty($dict[$word]))
  -        $dict[$word][]=$page;
  +  $word_limit = 50;
  +
  +  $start = 0;
  +  $prev = 0;
  +  if (!empty($params['start']) and is_numeric($params['start']))
  +    $start = $params['start'];
  +  if (!empty($params['prev']) and is_numeric($params['prev']))
  +    $prev = $params['prev'];
  +
  +  $value = strval($value);
  +  if ($value == '' or $value == 'all') $sel = '';
  +  else $sel = $value;
  +  if (@preg_match('/'.$sel.'/i','') === false) $sel='';
  +
  +  $keys = array();
  +  $dict = array();
  +
  +  // cache wordindex
  +  $wc = new Cache_text('wordindex');
  +  $delay = !empty($DBInfo->default_delaytime) ? $DBInfo->default_delaytime : 0;
  +
  +  $lock_file = _fake_lock_file($DBInfo->vartmp_dir, 'wordindex');
  +  $locked = _fake_locked($lock_file, $DBInfo->mtime());
  +  if ($locked or ($DBInfo->mtime() < $wc->mtime('key') + $delay and $wc->exists('key'))) {
  +    if ($formatter->group) {
  +      $keys = $wc->fetch('key.'.$formatter->group);
  +      $dict = $wc->fetch('wordindex.'.$formatter->group);
  +    } else {
  +      $keys = $wc->fetch('key');
  +      $dict = $wc->fetch('wordindex');
  +    }
  +
  +    if (empty($dict) and $locked) {
  +      // no cache found
  +      return _("Please wait...");
  +    }
  +  }
  +
  +  if (empty($keys) or empty($dict)) {
  +    _fake_lock($lock_file);
  +
  +    $all_pages = array();
  +    if ($formatter->group) {
  +      $group_pages = $DBInfo->getLikePages($formatter->group);
  +      foreach ($group_pages as $page)
  +        $all_pages[] = str_replace($formatter->group, '', $page);
  +    } else {
  +      $all_pages = $DBInfo->getPageLists();
  +    }
  +
  +    foreach ($all_pages as $page) {
  +      if (!empty($DBInfo->use_titlecache) and $cache->exists($page))
  +        $title=$cache->fetch($page);
         else
  -        $dict[$word]=array($page);
  +        $title=$page;
  +      $tmp=preg_replace("/[\?!$%\.\^;&\*()_\+\|\[\]<>\"' \-~\/:]/"," ",$title);
  +      $tmp=preg_replace("/((?<=[A-Za-z0-9])[A-Z][a-z0-9])/"," \\1",ucwords($tmp));
  +      $words=preg_split("/\s+/",$tmp);
  +      foreach ($words as $word) {
  +        $word=ltrim($word);
  +        if (!$word) continue;
  +        $key = get_key($word);
  +        $keys[$key] = $key;
  +        if (!empty($dict[$key][$word])) {
  +          $dict[$key][$word][] = $page;
  +        } else {
  +          if (empty($dict[$key]))
  +            $dict[$key] = array();
  +          $dict[$key][$word] = array($page);
  +        }
  +      }
  +    }
  +
  +    sort($keys);
  +    foreach ($keys as $k) {
  +      #ksort($dict[$k]);
  +      #ksort($dict[$k], SORT_STRING);
  +      #uksort($dict[$k], "strnatcasecmp");
  +      uksort($dict[$k], "strcasecmp");
       }
  +    if ($formatter->group) {
  +      $wc->update('key.'.$formatter->group, $keys);
  +      $wc->update('wordindex.'.$formatter->group, $dict);
  +    } else {
  +      $wc->update('key', $keys);
  +      $wc->update('wordindex', $dict);
  +    }
  +
  +    _fake_lock($lock_file, LOCK_UN);
     }
  -  #ksort($dict);
  -  #ksort($dict,SORT_STRING);
  -  #uksort($dict, "strnatcasecmp");
  -  uksort($dict, "strcasecmp");
  -
  -  $key=-1;
  -  $out="";
  -  $keys=array();
  -  foreach ($dict as $word=>$pages) {
  -    $pkey=get_key("$word");
  -#   $key=strtoupper($page[0]);
  -    if ($key != $pkey) {
  -      if ($key !=-1) $out.="</ul>";
  -      $key=$pkey;
  -      $keys[]=$key;
  -      $ukey=urlencode($key);
  -      $out.= "<a name='$ukey' /><h3><a href='#top'>$key</a></h3>\n";
  -    }
  -
  -    $out.= "<h4>$word</h4>\n";
  -    $out.= "<ul>\n";
  -    foreach ($pages as $page)
  -      $out.= '<li>' . $formatter->word_repl('"'.$page.'"')."</li>\n";
  -    $out.= "</ul>\n";
  +
  +  if (isset($sel[0]) and isset($dict[$sel])) {
  +    $selected = array($sel);
  +  } else {
  +    $selected = &$keys;
  +  }
  +
  +  $out = '';
  +  $key = -1;
  +  $count = 0;
  +  $idx = 0;
  +  foreach ($selected as $k) {
  +    $words = array_keys($dict[$k]);
  +    $sz = count($words);
  +    for ($idx = $start; $idx < $sz; $idx++) {
  +      $word = $words[$idx];
  +      $pages = &$dict[$k][$word];
  +      $pkey = $k;
  +      if ($key != $pkey) {
  +        $key=$pkey;
  +        if (!empty($sel) and !preg_match('/^'.$sel.'/i', $pkey)) continue;
  +        if (!empty($out)) $out.="</ul>";
  +        $ukey=urlencode($key);
  +        $out.= "<a name='$ukey'></a><h3><a href='#top'>$key</a></h3>\n";
  +      }
  +      if (!empty($sel) and !preg_match('/^'.$sel.'/i',$pkey)) continue;
  +
  +      $out.= "<h4>$word</h4>\n";
  +      $out.= "<ul>\n";
  +      foreach ($pages as $page)
  +        $out.= '<li>' . $formatter->word_repl('"'.$page.'"')."</li>\n";
  +      $out.= "</ul>\n";
  +      $count++;
  +      if ($count >= $word_limit) break;
  +    }
  +  }
  +
  +  if (isset($sel[0])) {
  +    $last = count($dict[$sel]);
  +    $offset = $idx + 1;
  +    $pager = array();
  +
  +    if ($start > 0) {
  +      // get previous start offset.
  +      $count = 0;
  +      $idx -= $word_limit - 1;
  +      if ($idx < 0) $idx = 0;
  +
  +      $link = $formatter->link_url($formatter->page->name,'?action=wordindex&amp;sec='.$sel.'&amp;start='.$idx);
  +      $pager[] = "<a href='$link'>"._("&#171; Prev").'</a>';
  +    }
  +    if ($offset < $last) {
  +      $link = $formatter->link_url($formatter->page->name,'?action=wordindex&amp;sec='.$sel.'&amp;start='.$offset);
  +      $pager[] = "<a href='$link'>"._("Next &#187;").'</a>';
  +    }
  +
  +    if (!empty($pager))
  +      $out.= implode(' | ', $pager) . "<br />\n";
  +  }
  +
  +  $index = array();
  +  $tlink = '';
  +  if (isset($sel[0])) {
  +    $tlink = $formatter->link_url($formatter->page->name,'?action=wordindex&amp;sec=');
     }
   
  -  $index="";
     foreach ($keys as $key) {
  -    $name=$key;
  +    $name = strval($key);
       if ($key == 'Others') $name=_("Others");
       $ukey=urlencode($key);
  -    $index.= "| <a href='#$ukey'>$name</a> ";
  +    $link = !empty($tlink) ? preg_replace('/sec=/','sec='._urlencode($key), $tlink) : '';
  +    $index[] = "<a href='$link#$ukey'>$name</a>";
     }
  -  $index[0]=" ";
  +  $str = implode(' | ', $index);
     $formatter->pagelinks = $pagelinks; // restore
     $formatter->sister_on= $save;
   
  -  return "<center><a name='top' />$index</center>\n$out";
  +  return "<center><a name='top'></a>$str</center>\n$out";
   }
   
  -?>
  +function do_wordindex($formatter, $options) {
  +  $formatter->send_header('', $options);
  +  $formatter->send_title('', '', $options);
  +  echo macro_WordIndex($formatter, $options['sec'], $options);
  +  $formatter->send_footer($args, $options);
  +}
  +
  +// vim:et:ts=2:
  
  
  


1284182359;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv30725\n\nModified Files:\n	RecentChanges.php \nLog Message:\n[#315699] trash, editrange, allauthors(allusers), allentries option added.\nfixed to hide bookmark button with nobookmark option\n\n
wkpark      2010/09/11 14:19:21

  Modified:    plugin   RecentChanges.php
  Log:
  [#315699] trash, editrange, allauthors(allusers), allentries option added.
  fixed to hide bookmark button with nobookmark option
  
  Revision  Changes    Path
  1.52      +155 -62   moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.51
  retrieving revision 1.52
  diff -u -r1.51 -r1.52
  --- RecentChanges.php	31 Aug 2010 03:10:18 -0000	1.51
  +++ RecentChanges.php	11 Sep 2010 05:19:19 -0000	1.52
  @@ -7,10 +7,10 @@
   // Name: RecentChanges
   // Description: Show RecentChanges of the Wiki
   // URL: MoniWiki:RecentChangesPlugin
  -// Version: $Revision: 1.51 $
  +// Version: $Revision: 1.52 $
   // Depend: 1.1.3
   // License: GPL
  -// $Id: RecentChanges.php,v 1.51 2010/08/31 03:10:18 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.52 2010/09/11 05:19:19 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     global $DBInfo;
  @@ -99,6 +99,16 @@
       $date_fmt=$args[0];
   
     $strimwidth = isset($DBInfo->rc_strimwidth) ? $DBInfo->rc_strimwidth : 20;
  +  // show last edit entry only
  +  $last_entry_only = 1;
  +  // show last editor only
  +  $last_editor_only = 1;
  +  // show editrange like as MoinMoin
  +  $use_editrange = 0;
  +
  +  $trash = 0;
  +  $rctype = '';
  +
     $bra = '';
     $cat = '';
     $cat0 = '';
  @@ -126,24 +136,38 @@
         else if ($arg=="notitle") $rctitle='';
         else if ($arg=="hits") $use_hits=1;
         else if ($arg=="daysago") $use_daysago=1;
  -      else if ($arg=="simple") {
  +      else if ($arg=="trash") $trash = 1;
  +      else if ($arg=="editrange") $use_editrange = 1;
  +      else if ($arg=="allauthors") $last_editor_only = 0;
  +      else if ($arg=="allusers") $last_editor_only = 0;
  +      else if ($arg=="allentries") $last_entry_only = 0;
  +      else if (in_array($arg, array('simple', 'moztab', 'board', 'table'))) $rctype = $arg;
  +    }
  +  }
  +
  +  if (!empty($rctype)) {
  +      if ($rctype=="simple") {
           $use_day=0;
           $template=
     '$out.= "$icon&nbsp;&nbsp;$title @ $day $date by $user $count $extra<br />\n";';
  -      } else if ($arg=="moztab") {
  +      } else if ($rctype=="moztab") {
           $use_day=1;
           $template= '$out.= "<li>$title $date</li>\n";';
  -      } else if ($arg=="table") {
  +      } else if ($rctype=="table") {
           $bra="<table border='0' cellpadding='0' cellspacing='0' width='100%'>";
           $template=
     '$out.= "<tr><td style=\'white-space:nowrap;width:2%\'>$icon</td><td style=\'width:40%\'>$title$updated</td><td class=\'date\' style=\'width:15%\'>$date</td><td>$user $count $extra</td></tr>\n";';
           $cat="</table>";
           $cat0="";
  -      } else if ($arg=="board") {
  +      } else if ($rctype=="board") {
           $changed_time_fmt = 'm-d [H:i]';
           $use_day=0;
           $template_bra="<table border='0' cellpadding='0' cellspacing='0' width='100%'>";
  -        $template_bra.="<thead><tr><th colspan='3' class='title'>"._("Title")."</th><th class='date'>".
  +
  +        if (empty($nobookmark)) $cols = 3;
  +        else $cols = 2;
  +
  +        $template_bra.="<thead><tr><th colspan='$cols' class='title'>"._("Title")."</th><th class='date'>".
             _("Change Date").'</th>';
           if (!empty($DBInfo->show_hosts))
             $template_bra.="<th class='author'>"._("Editor").'</th>';
  @@ -152,7 +176,10 @@
             $template_bra.="<th class='hits'>"._("Hits")."</th>";
           $template_bra.="</tr></thead>\n<tbody>\n";
           $template=
  -  '$out.= "<tr$alt><td style=\'white-space:nowrap;width:2%\'>$icon</td><td class=\'title\' style=\'width:40%\'>$title$updated</td><td>$bmark</td><td class=\'date\' style=\'width:15%\'>$date</td>';
  +  '$out.= "<tr$alt><td style=\'white-space:nowrap;width:2%\'>$icon</td><td class=\'title\' style=\'width:40%\'>$title$updated</td>';
  +        if (empty($nobookmark))
  +          $template.= '<td>$bmark</td>';
  +        $template.= '<td class=\'date\' style=\'width:15%\'>$date</td>';
           if (!empty($DBInfo->show_hosts))
             $template.='<td class=\'author\'>$user</td>';
           $template.='<td class=\'editinfo\'>$count</td>';
  @@ -163,8 +190,8 @@
           $template_cat="</tbody></table>";
           $cat0="";
         }
  -    }
     }
  +
     // override days
     $days=!empty($_GET['days']) ? min(abs($_GET['days']),RC_MAX_DAYS):$days;
   
  @@ -187,7 +214,6 @@
     }
     if (empty($tz_offset)) {
       $tz_offset=date("Z");
  -    $tz_offset;
     }
   
     if (!$bookmark) $bookmark=time();
  @@ -225,30 +251,37 @@
     }
   
     $ratchet_day = FALSE;
  +  $editors = array();
  +  $editcount = array();
     foreach ($lines as $line) {
       $parts= explode("\t", $line,6);
       $page_key= $parts[0];
       $ed_time= $parts[2];
  +    $user= $parts[4];
  +    $addr= $parts[1];
  +    if ($user == 'Anonymous')
  +      $user = 'Anonymous-' . $addr;
   
       $day = gmdate('Ymd', $ed_time+$tz_offset);
       if ($day != $ratchet_day) {
         $ratchet_day = $day;
  -      unset($logs);
       }
   
  -    if (!empty($editcount[$page_key])) {
  -      if (!empty($logs[$page_key])) {
  -        $editcount[$page_key]++;
  -        #$editors[$page_key].=':'.$parts[4];
  -        continue;
  -      }
  +    if (!empty($editcount[$day][$page_key])) {
  +      $editors[$day][$page_key][] = $user;
  +      $editcount[$day][$page_key]++;
         continue;
       }
  -    $editcount[$page_key]= 1;
  -    $logs[$page_key]= 1;
  -    #$editors[$page_key]= $parts[4];
  +    if (empty($editcount[$day])) {
  +      $editcount[$day] = array();
  +      $editors[$day] = array();
  +    }
  +
  +    $editcount[$day][$page_key]= 1;
  +
  +    $editors[$day][$page_key] = array();
  +    $editors[$day][$page_key][] = $user;
     }
  -  unset($logs);
   
     $out="";
     $ratchet_day= FALSE;
  @@ -257,12 +290,20 @@
     foreach ($lines as $line) {
       $parts= explode("\t", $line);
       $page_key=$parts[0];
  +    $ed_time = $parts[2];
   
  -    if (!empty($logs[$page_key])) continue;
  +    $day = gmdate('Ymd', $ed_time+$tz_offset);
  +
  +    // show last edit only
  +    if (!empty($last_entry_only) and !empty($logs[$page_key])) continue;
  +    else if (!empty($logs[$page_key][$day])) continue;
   
       $page_name= $DBInfo->keyToPagename($parts[0]);
  +
  +    // show trashed pages only
  +    if ($trash and $DBInfo->hasPage($page_name)) continue;
  +
       $addr= $DBInfo->mask_hostname ? _mask_hostname($parts[1]):$parts[1];
  -    $ed_time= $parts[2];
       $user= $parts[4];
       $log= _stripslashes($parts[5]);
       $act= rtrim($parts[6]);
  @@ -282,18 +323,10 @@
           $title=$page_name;
       }
   
  -    $day = gmdate('Y-m-d', $ed_time+$tz_offset);
  -
       if (! empty($changed_time_fmt)) {
         $date= gmdate($changed_time_fmt, $ed_time+$tz_offset);
         if (!empty($timesago)) {
           $date = _timesago($ed_time, 'Y-m-d', $tz_offset);
  -        /*
  -        $time_diff=(int)($time_current - $ed_time)/60;
  -        if ($time_diff < 1440) {
  -          $date=sprintf(_("[%sh %sm ago]"),(int)($time_diff/60),$time_diff%60);
  -        }
  -        */
         }
       }
   
  @@ -319,7 +352,7 @@
           $bmark=$formatter->link_to($bookmark_action ."&amp;time=$ed_time".$daysago,_("Bookmark"), 'class="button-small"');
         }
       }
  -    if (empty($use_day)) {
  +    if (empty($use_day) and empty($nobookmark)) {
         $date=$formatter->link_to($bookmark_action ."&amp;time=$ed_time".$daysago,$date);
       }
   
  @@ -359,41 +392,99 @@
       }
   
       if (!empty($DBInfo->show_hosts)) {
  -      if (!empty($showhost) && $user == 'Anonymous')
  -        $user= $addr;
  -      else {
  -        $ouser= $user;
  -        if (isset($users[$ouser])) $user = $users[$ouser];
  -        else if (!empty($DBInfo->use_nick)) {
  -          $uid = $user;
  -          if (($p = strpos($uid,' '))!==false)
  -            $uid= substr($uid, 0, $p);
  -          $u = $DBInfo->udb->getUser($uid);
  -          if (!empty($u->info)) {
  -            if (!empty($DBInfo->interwiki['User'])) {
  -              $user = $formatter->link_repl('[wiki:User:'.$uid.' '.$u->info['nick'].']');
  -            } else if (!empty($u->info['home'])) {
  -              $user = $formatter->link_repl('['.$u->info['home'].' '.$u->info['nick'].']');
  -            } else if (!empty($u->info['nick'])) {
  -              $user = $formatter->link_repl('[wiki:'.$uid.' '.$u->info['nick'].']');
  +      $last_editor = $user;
  +
  +      if ($last_editor_only) {
  +        // show last editor only
  +        $editor = array_pop($editors[$day][$page_key]);
  +      } else {
  +        // all show all authors
  +        // count edit number
  +        // make range list
  +        if ($use_editrange) { // MoinMoin like edit range
  +          $editor_list = array();
  +          foreach ($editors[$day][$page_key] as $idx=>$name) {
  +            if (empty($editor_list[$name])) $editor_list[$name] = array();
  +            $editor_list[$name][] = $idx + 1;
  +          }
  +          $editor_counts = array();
  +
  +          foreach ($editor_list as $name=>$edits) {
  +            $range = ',';
  +            if (isset($edits[1])) {
  +              $edits[] = 999999; // MoinMoin method
  +              for($i = 0, $sz = count($edits)-1; $i < $sz; $i++) {
  +                if (substr($range, -1) == ',') {
  +                  $range.= $edits[$i];
  +                  if ($edits[$i] + 1 == $edits[$i+1])
  +                    $range.= '-';
  +                  else
  +                    $range.= ',';
  +                } else {
  +                  if ($edits[$i] + 1 != $edits[$i+1])
  +                    $range.= $edits[$i].',';
  +                }
  +              }
  +              $range = trim($range, ',-');
  +              $editor_counts[$name] = $range;
  +            } else {
  +              $editor_counts[$name] = 1;
               }
             }
  -          $users[$ouser] = $user;
  -        } else if (strpos($user,' ')!==false) {
  -          $user= $formatter->link_repl($user);
  -          $users[$ouser] = $user;
  -        } else if ($DBInfo->hasPage($user)) {
  -          $user= $formatter->link_tag(_rawurlencode($user),"",$user);
  -          $users[$ouser] = $user;
  -        } else
  -          $user= $user;
  +        } else {
  +          $editor_counts = array_count_values($editors[$day][$page_key]);
  +        }
  +        $editor = array_keys($editor_counts);
  +      }
  +
  +      $all_user = array();
  +      foreach ((array)$editor as $user) {
  +        if (!$last_editor_only and isset($editor[1]) and isset($editor_counts[$user]))
  +          $count = " <span class='range'>[".$editor_counts[$user]."]</span>";
  +        else
  +          $count = '';
  +
  +        if (!empty($showhost) && substr($user, 0, 9) == 'Anonymous')
  +          $user= $addr;
  +        else {
  +          $ouser= $user;
  +          if (isset($users[$ouser])) $user = $users[$ouser];
  +          else if (!empty($DBInfo->use_nick)) {
  +            $uid = $user;
  +            if (($p = strpos($uid,' '))!==false)
  +              $uid= substr($uid, 0, $p);
  +            $u = $DBInfo->udb->getUser($uid);
  +            if (!empty($u->info)) {
  +              if (!empty($DBInfo->interwiki['User'])) {
  +                $user = $formatter->link_repl('[wiki:User:'.$uid.' '.$u->info['nick'].']');
  +              } else if (!empty($u->info['home'])) {
  +                $user = $formatter->link_repl('['.$u->info['home'].' '.$u->info['nick'].']');
  +              } else if (!empty($u->info['nick'])) {
  +                $user = $formatter->link_repl('[wiki:'.$uid.' '.$u->info['nick'].']');
  +              }
  +            }
  +            $users[$ouser] = $user;
  +          } else if (strpos($user,' ')!==false) {
  +            $user= $formatter->link_repl($user);
  +            $users[$ouser] = $user;
  +          } else if ($DBInfo->hasPage($user)) {
  +            $user= $formatter->link_tag(_rawurlencode($user),"",$user);
  +            $users[$ouser] = $user;
  +          } else
  +            $user= $user;
  +        }
  +        $all_user[] = $user.$count;
         }
  +      if (isset($editor[1]))
  +        $user = '<span class="rc-editors"><span>'.implode("</span> <span>", $all_user)."</span></span>\n";
  +      else
  +        $user = $all_user[0];
       } else {
         $user = '&nbsp;';
       }
       $count=""; $extra="";
  -    if ($editcount[$page_key] > 1)
  -      $count=sprintf(_("%s changes"), " <span class='num'>".$editcount[$page_key]."</span>");
  +    if ($editcount[$day][$page_key] > 1)
  +      $count=sprintf(_("%s changes"), " <span class='num'>".$editcount[$day][$page_key]."</span>");
       if (!empty($comment) && !empty($log))
         $extra="&nbsp; &nbsp; &nbsp; <small name='word-break'>$log</small>";
   
  @@ -404,10 +495,12 @@
         eval($template);
       }
   
  -    $logs[$page_key]= 1;
  +    if (empty($logs[$page_key]))
  +      $logs[$page_key] = array();
  +    $logs[$page_key][$day] = 1;
       ++$ii;
     }
     return $btnlist.'<div class="recentChanges">'.$rctitle.$template_bra.$out.$template_cat.$cat0.'</div>';
   }
  -// vim:et:sts=2:
  +// vim:et:sts=2:sw=2:
   ?>
  
  
  


1284182709;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv30815/plugin\n\nModified Files:\n	RecentChanges.php \nLog Message:\n[#315699] fixed last change\n\n
wkpark      2010/09/11 14:25:10

  Modified:    plugin   RecentChanges.php
  Log:
  [#315699] fixed last change
  
  Revision  Changes    Path
  1.53      +3 -3      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.52
  retrieving revision 1.53
  diff -u -r1.52 -r1.53
  --- RecentChanges.php	11 Sep 2010 05:19:19 -0000	1.52
  +++ RecentChanges.php	11 Sep 2010 05:25:09 -0000	1.53
  @@ -7,10 +7,10 @@
   // Name: RecentChanges
   // Description: Show RecentChanges of the Wiki
   // URL: MoniWiki:RecentChangesPlugin
  -// Version: $Revision: 1.52 $
  +// Version: $Revision: 1.53 $
   // Depend: 1.1.3
   // License: GPL
  -// $Id: RecentChanges.php,v 1.52 2010/09/11 05:19:19 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.53 2010/09/11 05:25:09 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     global $DBInfo;
  @@ -428,7 +428,7 @@
                 $range = trim($range, ',-');
                 $editor_counts[$name] = $range;
               } else {
  -              $editor_counts[$name] = 1;
  +              $editor_counts[$name] = $edits[0];
               }
             }
           } else {
  
  
  


1284182943;wkpark;Update of /cvsroot/moniwiki/moniwiki/css\nIn directory kill.kldp.net:/tmp/cvs-serv30917\n\nModified Files:\n	_base.css \nLog Message:\n[#315699] css styles added for new RecentChanges options\n\n
wkpark      2010/09/11 14:29:04

  Modified:    css      _base.css
  Log:
  [#315699] css styles added for new RecentChanges options
  
  Revision  Changes    Path
  1.40      +5 -0      moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.39
  retrieving revision 1.40
  diff -u -r1.39 -r1.40
  --- _base.css	10 Sep 2010 07:45:47 -0000	1.39
  +++ _base.css	11 Sep 2010 05:29:03 -0000	1.40
  @@ -509,6 +509,11 @@
     display: inline;
   }
   
  +.recentChanges .range {
  +  font-family: Tahoma, sans-serif;
  +  font-size:11px;
  +}
  +
   .wikiMarkup {
     background-color:#ffff00;
     border-left:2px solid #F5E238;
  
  
  


1284211147;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv31785\n\nModified Files:\n	config.php.default \nLog Message:\n[#315702] support the identicon(wp-identicon). activated by set $use_avatar=1;\n\n
1284211148;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv31785/plugin\n\nModified Files:\n	RecentChanges.php \nAdded Files:\n	identicon.php \nLog Message:\n[#315702] support the identicon(wp-identicon). activated by set $use_avatar=1;\n\n
wkpark      2010/09/11 22:19:08

  Modified:    .        config.php.default
               plugin   RecentChanges.php
  Added:       plugin   identicon.php
  Log:
  [#315702] support the identicon(wp-identicon). activated by set $use_avatar=1;
  
  Revision  Changes    Path
  1.64      +3 -1      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.63
  retrieving revision 1.64
  diff -u -r1.63 -r1.64
  --- config.php.default	28 Aug 2010 04:37:45 -0000	1.63
  +++ config.php.default	11 Sep 2010 13:19:07 -0000	1.64
  @@ -1,7 +1,7 @@
   <?php
   # This is a default 
   #
  -# $Id: config.php.default,v 1.63 2010/08/28 04:37:45 wkpark Exp $
  +# $Id: config.php.default,v 1.64 2010/09/11 13:19:07 wkpark Exp $
   #
   $sitename='UnnamedWiki'; # site name
   $data_dir= './data';
  @@ -211,6 +211,7 @@
   $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
  +#$external_target='_blank'; # always open new windows with external URLs
   
   #$use_category=0; # on/off categories list in the edit mode
   #$use_textbrowsers=1; # check some textbased browsers
  @@ -288,3 +289,4 @@
   #$use_indexer=0; # dynamic update the fulltext.db to use FastSearch plugin
   #$use_pageindex=0; # pagename indexer for fast RandomPage
   #$use_delaytime = 60*60*24; # set the default delayed time for caching as 24 hours
  +#$use_avatar='identicon'; # set avatar imgs based on user IP address for anonymous users. default: identicon
  
  
  
  1.54      +31 -6     moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.53
  retrieving revision 1.54
  diff -u -r1.53 -r1.54
  --- RecentChanges.php	11 Sep 2010 05:25:09 -0000	1.53
  +++ RecentChanges.php	11 Sep 2010 13:19:08 -0000	1.54
  @@ -7,10 +7,10 @@
   // Name: RecentChanges
   // Description: Show RecentChanges of the Wiki
   // URL: MoniWiki:RecentChangesPlugin
  -// Version: $Revision: 1.53 $
  +// Version: $Revision: 1.54 $
   // Depend: 1.1.3
   // License: GPL
  -// $Id: RecentChanges.php,v 1.53 2010/09/11 05:25:09 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.54 2010/09/11 13:19:08 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     global $DBInfo;
  @@ -105,6 +105,16 @@
     $last_editor_only = 1;
     // show editrange like as MoinMoin
     $use_editrange = 0;
  +  // avatar
  +  $use_avatar = 0;
  +  $avatar_type = 'identicon';
  +  if (!empty($DBInfo->use_avatar)) {
  +    $use_avatar = 1;
  +    if (is_string($DBInfo->use_avatar))
  +      $avatar_type = $DBInfo->use_avatar;
  +  }
  +
  +  $avatarlink = qualifiedUrl($formatter->link_url('', '?action='. $avatar_type .'&amp;seed='));
   
     $trash = 0;
     $rctype = '';
  @@ -141,6 +151,7 @@
         else if ($arg=="allauthors") $last_editor_only = 0;
         else if ($arg=="allusers") $last_editor_only = 0;
         else if ($arg=="allentries") $last_entry_only = 0;
  +      else if ($arg=="avatar") $use_avatar = 1;
         else if (in_array($arg, array('simple', 'moztab', 'board', 'table'))) $rctype = $arg;
       }
     }
  @@ -444,9 +455,14 @@
           else
             $count = '';
   
  -        if (!empty($showhost) && substr($user, 0, 9) == 'Anonymous')
  +        if (!empty($showhost) && substr($user, 0, 9) == 'Anonymous') {
             $user= $addr;
  -        else {
  +          if (!empty($use_avatar)) {
  +            $crypted = crypt($addr, $addr);
  +            $mylnk = preg_replace('/seed=/', 'seed='.$crypted, $avatarlink);
  +            $user = '<img src="'.$mylnk.'" style="width:16px;height:16px;vertical-align:middle" alt="avatar" />Anonymous';
  +          }
  +        } else {
             $ouser= $user;
             if (isset($users[$ouser])) $user = $users[$ouser];
             else if (!empty($DBInfo->use_nick)) {
  @@ -470,8 +486,17 @@
             } else if ($DBInfo->hasPage($user)) {
               $user= $formatter->link_tag(_rawurlencode($user),"",$user);
               $users[$ouser] = $user;
  -          } else
  -            $user= $user;
  +          } else {
  +            if (substr($user, 0, 9) == 'Anonymous') {
  +              $addr = substr($user, 10);
  +              $user = 'Anonymous';
  +            }
  +            if (!empty($use_avatar)) {
  +              $crypted = crypt($addr, $addr);
  +              $mylnk = preg_replace('/seed=/', 'seed='.$crypted, $avatarlink);
  +              $user = '<img src="'.$mylnk.'" style="width:16px;height:16px;vertical-align:middle" alt="avatar" />'.$user;
  +            }
  +          }
           }
           $all_user[] = $user.$count;
         }
  
  
  
  1.1                  moniwiki/plugin/identicon.php
  
  Index: identicon.php
  ===================================================================
  <?php
  /**
   * Generates persistent specific geometric icons for each user
   * based on the ideas of Don Part's visual-security-9-block-ip-identification.
   *
   * modified verion for MoniWiki by wkpark at kldp.org
   *
   *
   * Plugin Name: WP_Identicon
   * Version: 1.02_mw
   * Plugin URI: http://scott.sherrillmix.com/blog/blogger/wp_identicon/
   * Description: This plugin generates persistent specific geometric icons for each user.
   * Author: Scott Sherrill-Mix
   * Author URI: http://scott.sherrillmix.com/blog/
   * License: GPLv2 (http://wordpress.org/about/license/)
   * Revision: $Id: identicon.php,v 1.1 2010/09/11 13:19:08 wkpark Exp $
  */
  
  class identicon {
  	var $identicon_options;
  	var $blocks;
  	var $shapes;
  	var $rotatable;
  	var $square;
  	var $im;
  	var $colors;
  	var $size;
  	var $blocksize;
  	var $quarter;
  	var $half;
  	var $diagonal;
  	var $halfdiag;
  	var $transparent=false;
  	var $centers;
  	var $shapes_mat;
  	var $symmetric_num;
  	var $rot_mat;
  	var $invert_mat;
  	var $rotations;
  
  	//constructor
  	function identicon($blocks='') {
  		$this->identicon_options=identicon_get_options();
  		if ($blocks) $this->blocks=$blocks; 
  		else $this->blocks=$this->identicon_options['squares'];
  		$this->blocksize=80;
  		$this->size=$this->blocks*$this->blocksize;
  		$this->quarter=$this->blocksize/4;
  		$this->half=$this->blocksize/2;
  		$this->diagonal=sqrt($this->half*$this->half+$this->half*$this->half);
  		$this->halfdiag=$this->diagonal/2;
  		$this->shapes=array(
  			array(array(array(90,$this->half),array(135,$this->diagonal),array(225,$this->diagonal),array(270,$this->half))),//0 rectangular half block
  			array(array(array(45,$this->diagonal),array(135,$this->diagonal),array(225,$this->diagonal),array(315,$this->diagonal))),//1 full block
  			array(array(array(45,$this->diagonal),array(135,$this->diagonal),array(225,$this->diagonal))),//2 diagonal half block
  			array(array(array(90,$this->half),array(225,$this->diagonal),array(315,$this->diagonal))),//3 triangle
  			array(array(array(0,$this->half),array(90,$this->half),array(180,$this->half),array(270,$this->half))),//4 diamond
  			array(array(array(0,$this->half),array(135,$this->diagonal),array(270,$this->half),array(315,$this->diagonal))),//5 stretched diamond
  			array(array(array(0,$this->quarter),array(90,$this->half),array(180,$this->quarter)), array(array(0,$this->quarter),array(315,$this->diagonal),array(270,$this->half)), array(array(270,$this->half),array(180,$this->quarter),array(225,$this->diagonal))),// 6 triple triangle
  			array(array(array(0,$this->half),array(135,$this->diagonal),array(270,$this->half))),//7 pointer
  			array(array(array(45,$this->halfdiag),array(135,$this->halfdiag),array(225,$this->halfdiag),array(315,$this->halfdiag))),//9 center square
  			array(array(array(180,$this->half),array(225,$this->diagonal),array(0,0)), array(array(45,$this->diagonal),array(90,$this->half),array(0,0))),//9 double triangle diagonal
  			array(array(array(90,$this->half),array(135,$this->diagonal),array(180,$this->half),array(0,0))),//10 diagonal square
  			array(array(array(0,$this->half),array(180,$this->half),array(270,$this->half))),//11 quarter triangle out
  			array(array(array(315,$this->diagonal),array(225,$this->diagonal),array(0,0))),//12quarter triangle in
  			array(array(array(90,$this->half),array(180,$this->half),array(0,0))),//13 eighth triangle in
  			array(array(array(90,$this->half),array(135,$this->diagonal),array(180,$this->half))),//14 eighth triangle out
  			array(array(array(90,$this->half),array(135,$this->diagonal),array(180,$this->half),array(0,0)), array(array(0,$this->half),array(315,$this->diagonal),array(270,$this->half),array(0,0))),//15 double corner square
  			array(array(array(315,$this->diagonal),array(225,$this->diagonal),array(0,0)), array(array(45,$this->diagonal),array(135,$this->diagonal),array(0,0))),//16 double quarter triangle in
  			array(array(array(90,$this->half),array(135,$this->diagonal),array(225,$this->diagonal))),//17 tall quarter triangle
  			array(array(array(90,$this->half),array(135,$this->diagonal),array(225,$this->diagonal)), array(array(45,$this->diagonal),array(90,$this->half),array(270,$this->half))),//18 double tall quarter triangle
  			array(array(array(90,$this->half),array(135,$this->diagonal),array(225,$this->diagonal)), array(array(45,$this->diagonal),array(90,$this->half),array(0,0))),//19 tall quarter + eighth triangles
  			array(array(array(135,$this->diagonal),array(270,$this->half),array(315,$this->diagonal))),//20 tipped over tall triangle
  			array(array(array(180,$this->half),array(225,$this->diagonal),array(0,0)), array(array(45,$this->diagonal),array(90,$this->half),array(0,0)), array(array(0,$this->half),array(0,0),array(270,$this->half))),//21 triple triangle diagonal
  			array(array(array(0,$this->quarter),array(315,$this->diagonal),array(270,$this->half)), array(array(270,$this->half),array(180,$this->quarter),array(225,$this->diagonal))),//22 double triangle flat
  			array(array(array(0,$this->quarter),array(45,$this->diagonal),array(315,$this->diagonal)), array(array(180,$this->quarter),array(135,$this->diagonal),array(225,$this->diagonal))),//23 opposite 8th triangles
  			array(array(array(0,$this->quarter),array(45,$this->diagonal),array(315,$this->diagonal)), array(array(180,$this->quarter),array(135,$this->diagonal),array(225,$this->diagonal)), array(array(180,$this->quarter),array(90,$this->half),array(0,$this->quarter),array(270,$this->half))),//24 opposite 8th triangles + diamond
  			array(array(array(0,$this->quarter),array(90,$this->quarter),array(180,$this->quarter),array(270,$this->quarter))),//25 small diamond
  			array(array(array(0,$this->quarter),array(45,$this->diagonal),array(315,$this->diagonal)), array(array(180,$this->quarter),array(135,$this->diagonal),array(225,$this->diagonal)), array(array(270,$this->quarter),array(225,$this->diagonal),array(315,$this->diagonal)),array(array(90,$this->quarter),array(135,$this->diagonal),array(45,$this->diagonal))),//26 4 opposite 8th triangles
  			array(array(array(315,$this->diagonal),array(225,$this->diagonal),array(0,0)), array(array(0,$this->half),array(90,$this->half),array(180,$this->half))),//27 double quarter triangle parallel
  			array(array(array(135,$this->diagonal),array(270,$this->half),array(315,$this->diagonal)), array(array(225,$this->diagonal),array(90,$this->half),array(45,$this->diagonal))),//28 double overlapping tipped over tall triangle
  			array(array(array(90,$this->half),array(135,$this->diagonal),array(225,$this->diagonal)), array(array(315,$this->diagonal),array(45,$this->diagonal),array(270,$this->half))),//29 opposite double tall quarter triangle
  			array(array(array(0,$this->quarter),array(45,$this->diagonal),array(315,$this->diagonal)), array(array(180,$this->quarter),array(135,$this->diagonal),array(225,$this->diagonal)), array(array(270,$this->quarter),array(225,$this->diagonal),array(315,$this->diagonal)),array(array(90,$this->quarter),array(135,$this->diagonal),array(45,$this->diagonal)),array(array(0,$this->quarter),array(90,$this->quarter),array(180,$this->quarter),array(270,$this->quarter))),//30 4 opposite 8th triangles+tiny diamond
  			array(array(array(0,$this->half),array(90,$this->half),array(180,$this->half),array(270,$this->half), array(270,$this->quarter),array(180,$this->quarter),array(90,$this->quarter),array(0,$this->quarter))),//31 diamond C
  			array(array(array(0,$this->quarter),array(90,$this->half),array(180,$this->quarter),array(270,$this->half))),//32 narrow diamond
  			array(array(array(180,$this->half),array(225,$this->diagonal),array(0,0)), array(array(45,$this->diagonal),array(90,$this->half),array(0,0)), array(array(0,$this->half),array(0,0),array(270,$this->half)), array(array(90,$this->half),array(135,$this->diagonal),array(180,$this->half))),//33 quadruple triangle diagonal
  			array(array(array(0,$this->half),array(90,$this->half),array(180,$this->half),array(270,$this->half),array(0,$this->half), array(0,$this->quarter),array(270,$this->quarter),array(180,$this->quarter),array(90,$this->quarter),array(0,$this->quarter))),//34 diamond donut
  			array(array(array(90,$this->half),array(45,$this->diagonal),array(0,$this->quarter)), array(array(0,$this->half),array(315,$this->diagonal),array(270,$this->quarter)), array(array(270,$this->half),array(225,$this->diagonal),array(180,$this->quarter))),//35 triple turning triangle
  			array(array(array(90,$this->half),array(45,$this->diagonal),array(0,$this->quarter)), array(array(0,$this->half),array(315,$this->diagonal),array(270,$this->quarter))),//36 double turning triangle
  			array(array(array(90,$this->half),array(45,$this->diagonal),array(0,$this->quarter)), array(array(270,$this->half),array(225,$this->diagonal),array(180,$this->quarter))),//37 diagonal opposite inward double triangle
  			array(array(array(90,$this->half),array(225,$this->diagonal),array(0,0),array(315,$this->diagonal))),//38 star fleet
  			array(array(array(90,$this->half),array(225,$this->diagonal),array(0,0),array(315,$this->halfdiag),array(225,$this->halfdiag), array(225,$this->diagonal),array(315,$this->diagonal))),//39 hollow half triangle
  			array(array(array(90,$this->half),array(135,$this->diagonal),array(180,$this->half)), array(array(270,$this->half),array(315,$this->diagonal),array(0,$this->half))),//40 double eighth triangle out
  			array(array(array(90,$this->half),array(135,$this->diagonal),array(180,$this->half),array(180,$this->quarter)), array(array(270,$this->half),array(315,$this->diagonal),array(0,$this->half),array(0,$this->quarter))),//42 double slanted square
  			array(array(array(0,$this->half),array(45,$this->halfdiag), array(0,0),array(315,$this->halfdiag)), array(array(180,$this->half),array(135,$this->halfdiag), array(0,0),array(225,$this->halfdiag))),//43 double diamond
  			array(array(array(0,$this->half),array(45,$this->diagonal), array(0,0),array(315,$this->halfdiag)), array(array(180,$this->half),array(135,$this->halfdiag), array(0,0),array(225,$this->diagonal))),//44 double pointer
  		);
  		$this->rotatable=array(1,4,8,25,26,30,34);
  		$this->square=$this->shapes[1][0];	
  		$this->symmetric_num=ceil($this->blocks*$this->blocks/4);
  		for ($i=0;$i<$this->blocks;$i++) {
  			for ($j=0;$j<$this->blocks;$j++) {
  				$this->centers[$i][$j]=array($this->half+$this->blocksize*$j,$this->half+$this->blocksize*$i);
  				$this->shapes_mat[$this->xy2symmetric($i,$j)]=1;
  				$this->rot_mat[$this->xy2symmetric($i,$j)]=0;
  				$this->invert_mat[$this->xy2symmetric($i,$j)]=0;
  				if (floor(($this->blocks-1)/2-$i)>=0&floor(($this->blocks-1)/2-$j)>=0&($j>=$i|$this->blocks%2==0)) {
  					$inversei=$this->blocks-1-$i;
  					$inversej=$this->blocks-1-$j;
  					$symmetrics=array(array($i,$j),array($inversej,$i),array($inversei,$inversej),array($j,$inversei));
  					$fill=array(0,270,180,90);
  					for ($k=0;$k<count($symmetrics);$k++) {
  						$this->rotations[$symmetrics[$k][0]][$symmetrics[$k][1]]=$fill[$k];
  					}
  				}
  			}
  		}
  	}
  	
  	function xy2symmetric($x,$y) {
  		$index=array(floor(abs(($this->blocks-1)/2-$x)),floor(abs(($this->blocks-1)/2-$y)));
  		sort($index);
  		$index[1]*=ceil($this->blocks/2);
  		$index=array_sum($index);
  		return $index;
  	}
  	
  
  
  	//convert array(array(heading1,distance1),array(heading1,distance1)) to array(x1,y1,x2,y2)
  	function identicon_calc_x_y($array,$centers,$rotation=0) {
  		$output=array();
  		$centerx=$centers[0];
  		$centery=$centers[1];
  		while($thispoint=array_pop($array)) {
  			$y=round($centery+sin(deg2rad($thispoint[0]+$rotation))*$thispoint[1]);
  			$x=round($centerx+cos(deg2rad($thispoint[0]+$rotation))*$thispoint[1]);
  			array_push($output,$x,$y);
  		}
  		return $output;
  	}
  
  	//draw filled polygon based on an array of (x1,y1,x2,y2,..)
  	function identicon_draw_shape($x,$y) {
  		#print $x.'/'.$y.'<br/>';
  		$index=$this->xy2symmetric($x,$y);
  		$shape=$this->shapes[$this->shapes_mat[$index]];
  		$invert=$this->invert_mat[$index];
  		$rotation=$this->rot_mat[$index];
  		$centers=$this->centers[$x][$y];
  		$invert2=abs($invert-1);
  		$points=$this->identicon_calc_x_y($this->square,$centers,0);
  		$num = count($points) / 2;
  		imagefilledpolygon($this->im, $points, $num, $this->colors[$invert2]);
  		foreach($shape as $subshape) {
  			$points=$this->identicon_calc_x_y($subshape,$centers,$rotation+$this->rotations[$x][$y]);
  			$num = count($points) / 2;
  			imagefilledpolygon($this->im, $points, $num,$this->colors[$invert]);
  		}
  	}
  
  	//use a seed value to determine shape, rotation, and color
  	function identicon_set_randomness($seed="") {
  		//set seed
  		foreach ($this->rot_mat as $key => $value) {
  			$this->rot_mat[$key]=mt_rand(0,3)*90;
  			$this->invert_mat[$key]=mt_rand(0,1);
  			#&$this->blocks%2
  			if ($key==0) $this->shapes_mat[$key]=$this->rotatable[mt_rand(0, count($this->rotatable) - 1)];
  			else $this->shapes_mat[$key]=mt_rand(0, count($this->shapes)-1);
  		}
  		$forecolors=array(mt_rand($this->identicon_options['forer'][0],$this->identicon_options['forer'][1]), mt_rand($this->identicon_options['foreg'][0],$this->identicon_options['foreg'][1]), mt_rand($this->identicon_options['foreb'][0],$this->identicon_options['foreb'][1]));
  		$this->colors[1]=imagecolorallocate($this->im, $forecolors[0],$forecolors[1],$forecolors[2]);
  		if (array_sum($this->identicon_options['backr']) + array_sum($this->identicon_options['backg']) + array_sum($this->identicon_options['backb'])==0) {
  			$this->colors[0]=imagecolorallocatealpha($this->im,0,0,0,127);
  			$this->transparent=true;
  			imagealphablending ($this->im,false);
  			imagesavealpha($this->im,true);
  		} else {
  			$backcolors=array(mt_rand($this->identicon_options['backr'][0],$this->identicon_options['backr'][1]), mt_rand($this->identicon_options['backg'][0],$this->identicon_options['backg'][1]), mt_rand($this->identicon_options['backb'][0],$this->identicon_options['backb'][1]));
  			$this->colors[0]=imagecolorallocate($this->im, $backcolors[0],$backcolors[1],$backcolors[2]);
  		}
  		if($this->identicon_options['grey']) {
  			$this->colors[1]=imagecolorallocate($this->im, $forecolors[0],$forecolors[0],$forecolors[0]);
  			if(!$this->transparent) $this->colors[0]=imagecolorallocate($this->im, $backcolors[0],$backcolors[0],$backcolors[0]);
  		}
  		return true;
  	}
  
  	function identicon_build($seed='',$img=true,$outsize='',$random=true,$displaysize='') {
  		//make an identicon and return the filepath or if write=false return picture directly
  		if (function_exists("gd_info")) {
  			// init random seed
  			if ($random) {
  				$id=substr(sha1($seed),0,10);
  				mt_srand(hexdec($id));
  			}
  			else $id=$seed;
  			if ($outsize=='') $outsize=$this->identicon_options['size'];
  			if($displaysize=='') $displaysize=$outsize;
  
  			// HTTP Conditional get.
  			$mtime = filemtime(__FILE__);
  			$lastmod = substr(gmdate('r', $mtime), 0, -5).'GMT';
  			$etag = $mtime . $displaysize . $outsize . $id;
  			$etag = md5($etag);
  			$need = http_need_cond_request($mtime, $lastmod, $etag);
  			$maxage = 60*60*24*7;
  
  			header('Last-Modified: '.$lastmod);
  			header('ETag: "' .$etag. '"');
      			header('Cache-Control: private, max-age='.$maxage);
  			header('Pragma: cache');
  			if (!$need) {
  				header('HTTP/1.0 304 Not Modified');
  				@ob_end_clean();
  				return true;
  			}
  			//
  
  			$this->im = imagecreatetruecolor($this->size,$this->size);	
  			$this->colors = array(imagecolorallocate($this->im, 255,255,255));
  			if ($random) $this->identicon_set_randomness($id);
  			else {$this->colors = array(imagecolorallocate($this->im, 255,255,255),imagecolorallocate($this->im, 0,0,0));$this->transparent=false;};
  			imagefill($this->im,0,0,$this->colors[0]);
  			for ($i=0;$i<$this->blocks;$i++) {
  				for ($j=0;$j<$this->blocks;$j++) {
  					$this->identicon_draw_shape($i,$j);
  				}
  			}
  
  			$out = @imagecreatetruecolor($outsize,$outsize);
  			imagesavealpha($out,true);
  			imagealphablending($out,false);
  			imagecopyresampled($out,$this->im,0,0,0,0,$outsize,$outsize,$this->size,$this->size);
  			imagedestroy($this->im);
  			header ("Content-type: image/png");
  			imagepng($out);
  			imagedestroy($out);
  			return true;
  		} else { //php GD image manipulation is required
  			return false; //php GD image isn't installed but don't want to mess up blog layout
  		}
  	}
  
  	function identicon_display_parts() {
  		$this->identicon(1);
  		for ($i=0;$i<count($this->shapes);$i++) {
  			$this->shapes_mat=array($i);
  			$this->invert_mat=array(1);
  			$output.=$this->identicon_build($seed='example'.$i,$img=true,$outsize=30,$random=false);
  			$counter++;
  		}
  		$this->identicon();
  		return $output;
  	}
  }
  
  
  function identicon_get_options() {
  	//Set Default Values Here
  	$default_array = array(
  		'size'=>35,
  		'backr'=>array(255,255),
  		'backg'=>array(255,255),
  		'backb'=>array(255,255),
  		'forer'=>array(1,255),
  		'foreg'=>array(1,255),
  		'foreb'=>array(1,255),
  		'squares'=>3,
  		'autoadd'=>1,
  		'grey'=>0,
  	);
  
  	$identicon_array = $default_array;
  	return($identicon_array);
  }
  
  function do_identicon($formatter = null, $params) {
  	//create identicon for later use
  	static $identicon = null;
  
  	if (!$identicon) $identicon = new identicon;
  
  	if (!empty($params['seed']))
  		$seed = $params['seed'];
  	else
  		$seed = md5($_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']);
  
  	$img = true;
  	$outsize = '';
  	$random = true;
  	$displaysize = '';
  
  	return $identicon->identicon_build($seed, $img, $outsize, $random, $displaysize);
  }
  
  
  


1284212362;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv1194/plugin\n\nModified Files:\n	rss_rc.php \nLog Message:\n[#315703] fixed to support HTTP conditional GET with the rss_rc action\n\n
wkpark      2010/09/11 22:39:22

  Modified:    plugin   rss_rc.php
  Log:
  [#315703] fixed to support HTTP conditional GET with the rss_rc action
  
  Revision  Changes    Path
  1.21      +32 -2     moniwiki/plugin/rss_rc.php
  
  Index: rss_rc.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rss_rc.php,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- rss_rc.php	9 Jul 2010 11:03:27 -0000	1.20
  +++ rss_rc.php	11 Sep 2010 13:39:22 -0000	1.21
  @@ -3,11 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // rss_rc action plugin for the MoniWiki
   //
  -// $Id: rss_rc.php,v 1.20 2010/07/09 11:03:27 wkpark Exp $
  +// $Id: rss_rc.php,v 1.21 2010/09/11 13:39:22 wkpark Exp $
  +
  +define('RSS_DEFAULT_DAYS',7);
   
   function do_rss_rc($formatter,$options) {
     global $DBInfo;
  -define('RSS_DEFAULT_DAYS',7);
   
     $days=!empty($DBInfo->rc_days) ? $DBInfo->rc_days:RSS_DEFAULT_DAYS;
     $options['quick']=1;
  @@ -21,6 +22,35 @@
         $options[$opt]=1; // FIXME
       }
     }
  +
  +  // HTTP conditional get
  +  $mtime = $DBInfo->mtime();
  +  $lastmod = gmdate('D, d M Y H:i:s \G\M\T', $mtime);
  +
  +  // make etag based on some options and mtime.
  +  $check_opts = array('quick', 'items', 'oe', 'diff', 'raw', 'nomsg', 'summary');
  +  $check = array();
  +  foreach ($check_opts as $c) {
  +    if (isset($options[$c])) $check[$c] = $options[$c];
  +  }
  +
  +  $etag = md5($mtime . $DBInfo->logo_img . serialize($check));
  +
  +  $headers = array();
  +  $headers[] = 'Pragma: cache';
  +  $maxage = 60*60*24*7;
  +  $headers[] = 'Cache-Control: private, max-age='.$maxage;
  +  $headers[] = 'Last-Modified: '.$lastmod;
  +  $headers[] = 'ETag: "'.$etag.'"';
  +  $need = http_need_cond_request($mtime, $lastmod, $etag);
  +  if (!$need)
  +    $headers[] = 'HTTP/1.0 304 Not Modified';
  +  foreach ($headers as $h)
  +    header($h);
  +  if (!$need) {
  +    @ob_end_clean();
  +    return;
  +  }
       
     $time_current= time();
   #  $secs_per_day= 60*60*24;
  
  
  


1284341170;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv19363\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315705] $use_save_refresh=-1; to redirect itself to show saved result without msgs after saving itself\n\n
wkpark      2010/09/13 10:26:12

  Modified:    .        wikilib.php
  Log:
  [#315705] $use_save_refresh=-1; to redirect itself to show saved result without msgs after saving itself
  
  Revision  Changes    Path
  1.354     +12 -5     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.353
  retrieving revision 1.354
  diff -u -r1.353 -r1.354
  --- wikilib.php	10 Sep 2010 11:27:16 -0000	1.353
  +++ wikilib.php	13 Sep 2010 01:26:10 -0000	1.354
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.353 2010/09/10 11:27:16 wkpark Exp $
  +// $Id: wikilib.php,v 1.354 2010/09/13 01:26:10 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2221,12 +2221,19 @@
       }
   
       $myrefresh='';
  -    if ($DBInfo->use_save_refresh) {
  -       $sec=$DBInfo->use_save_refresh - 1;
  -       $lnk=$formatter->link_url($formatter->page->urlname,"?action=show");
  -       $myrefresh='Refresh: '.$sec.'; url='.qualifiedURL($lnk);
  +    if (!empty($DBInfo->use_save_refresh)) {
  +      $lnk=$formatter->link_url($formatter->page->urlname,"?action=show");
  +      if ($DBInfo->use_save_refresh > 0) {
  +        $sec=$DBInfo->use_save_refresh - 1;
  +        $myrefresh='Refresh: '.$sec.'; url='.qualifiedURL($lnk);
  +      } else {
  +        $myrefresh = array('Status: 302', 'Location: '. qualifiedURL($lnk));
  +      }
       }
       $formatter->send_header($myrefresh,$options);
  +    if (is_array($myrefresh))
  +      return;
  +
       $formatter->send_title("","",$options);
       $opt['pagelinks']=1;
       # re-generates pagelinks
  
  
  


1284370291;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv22601\n\nModified Files:\n	wiki.php wikilib.php \nLog Message:\n[#315699] added 'change' option to check the changes of pages\n\n
1284370291;wkpark;Update of /cvsroot/moniwiki/moniwiki/lib\nIn directory kill.kldp.net:/tmp/cvs-serv22601/lib\n\nModified Files:\n	version.RCS.php \nLog Message:\n[#315699] added 'change' option to check the changes of pages\n\n
1284370292;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv22601/plugin\n\nModified Files:\n	RecentChanges.php \nLog Message:\n[#315699] added 'change' option to check the changes of pages\n\n
wkpark      2010/09/13 18:31:32

  Modified:    .        wiki.php wikilib.php
               lib      version.RCS.php
               plugin   RecentChanges.php
  Log:
  [#315699] added 'change' option to check the changes of pages
  
  Revision  Changes    Path
  1.615     +16 -9     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.614
  retrieving revision 1.615
  diff -u -r1.614 -r1.615
  --- wiki.php	10 Sep 2010 11:27:16 -0000	1.614
  +++ wiki.php	13 Sep 2010 09:31:31 -0000	1.615
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.614 2010/09/10 11:27:16 wkpark Exp $
  +// $Id: wiki.php,v 1.615 2010/09/13 09:31:31 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.614 $',1,-1);
  +$_revision = substr('$Revision: 1.615 $',1,-1);
   $_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -1028,8 +1028,8 @@
       # check minor edits XXX
       $minor=0;
       if (!empty($this->use_minorcheck) or !empty($options['minorcheck'])) {
  -      $info=$page->get_info();
  -      if ($info[1]) {
  +      $info = $page->get_info();
  +      if (!empty($info[0][1])) {
           eval('$check='.$info[1].';');
           if (abs($check) < 3) $minor=1;
         }
  @@ -1203,6 +1203,10 @@
       return $this->fsize;
     }
   
  +  function lines() {
  +    return get_file_lines($this->filename);
  +  }
  +
     function get_raw_body($options='') {
       global $DBInfo;
   
  @@ -1282,35 +1286,38 @@
     function get_info($rev='') {
       global $DBInfo;
   
  -    $info=array('','','','','');
  +    $infos = array();
       if (empty($rev))
         $rev=$this->get_rev('',1);
  -    if (empty($rev)) return $info;
  +    if (empty($rev)) return false;
   
       if (!empty($DBInfo->version_class)) {
         $class=getModule('Version',$DBInfo->version_class);
         $version=new $class ($DBInfo);
         $opt = '';
  +
         $out= $version->rlog($this->name,$rev,$opt);
       } else {
  -      return $info;
  +      return false;
       }
   
       $state=0;
       if (isset($out)) {
         for ($line=strtok($out,"\n"); $line !== false;$line=strtok("\n")) {
           if ($state == 0 and preg_match("/^date:\s.*$/",$line)) {
  +          $info = array();
             $tmp=preg_replace("/date:\s(.*);\s+author:.*;\s+state:.*;/","\\1",rtrim($line));
             $tmp=explode('lines:',$tmp);
             $info[0]=$tmp[0];$info[1]=$tmp[1];
             $state=1;
           } else if ($state) {
             list($info[2],$info[3],$info[4])=explode(';;',$line,3);
  -          break;
  +          $infos[] = $info;
  +          $state = 0;
           }
         }
       }
  -    return $info;
  +    return $infos;
     }
   }
   
  
  
  
  1.355     +27 -1     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.354
  retrieving revision 1.355
  diff -u -r1.354 -r1.355
  --- wikilib.php	13 Sep 2010 01:26:10 -0000	1.354
  +++ wikilib.php	13 Sep 2010 09:31:31 -0000	1.355
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.354 2010/09/13 01:26:10 wkpark Exp $
  +// $Id: wikilib.php,v 1.355 2010/09/13 09:31:31 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -45,6 +45,32 @@
   }
   
   /**
  + * get the number of lines in a file
  + *
  + * @author wkpark@kldp.org
  + * @since  2010/09/13
  + *
  + */
  +
  +function get_file_lines($filename) {
  +  $fp = fopen($filename, 'r');
  +  if (!is_resource($fp)) return 0;
  +
  +  // test \n or \r or \r\n
  +  $i = 0;
  +  while(($test = fgets($fp, 4096)) and !preg_match("/(\r|\r\n|\n)$/", $test, $match)) $i++;
  +
  +  $i = 1;
  +  $bsz = 1024 * 8;
  +  if (isset($match[1])) {
  +    while ($chunk = fread($fp, $bsz))
  +      $i += substr_count($chunk, $match[1]);
  +  }
  +  fclose($fp);
  +  return $i;
  +}
  +
  +/**
    * Extracted from Gallery Plugin
    *
    * make pagelist to paginate.
  
  
  
  1.2       +19 -2     moniwiki/lib/version.RCS.php
  
  Index: version.RCS.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/version.RCS.php,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- version.RCS.php	7 Sep 2010 12:11:48 -0000	1.1
  +++ version.RCS.php	13 Sep 2010 09:31:31 -0000	1.2
  @@ -6,7 +6,7 @@
   // @since  2003/08/22
   // @author wkpark@kldp.org
   //
  -// $Id: version.RCS.php,v 1.1 2010/09/07 12:11:48 wkpark Exp $
  +// $Id: version.RCS.php,v 1.2 2010/09/13 09:31:31 wkpark Exp $
   //
   
   class Version_RCS {
  @@ -68,7 +68,24 @@
     }
   
     function rlog($pagename,$rev='',$opt='',$oldopt='') {
  -    $rev = (is_numeric($rev) and $rev > 0) ? "-r$rev":'';
  +    $dmark = '';
  +    if ($rev[0] == '>' or $rev[0] == '<') {
  +      $dmark = $rev[0];
  +      $rev = substr($rev, 1);
  +    }
  +    if (is_numeric($rev) and preg_match('@^[0-9]{10}$@', trim($rev))) {
  +      // this is mtime
  +      $date = gmdate('Y/m/d H:i:s', $rev);
  +      $rev = '';
  +      if ($date)
  +        $rev = "-d\\$dmark'$date'";
  +    } else if (is_numeric($rev) and $rev > 0) {
  +      // normal revision
  +      $rev = "-r$rev";
  +    } else {
  +      $rev = '';
  +    }
  +
       $filename=$this->_filename($pagename);
   
       $fp= popen("rlog $opt $oldopt -x,v/ $rev ".$filename.$this->NULL,"r");
  
  
  
  1.55      +37 -6     moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.54
  retrieving revision 1.55
  diff -u -r1.54 -r1.55
  --- RecentChanges.php	11 Sep 2010 13:19:08 -0000	1.54
  +++ RecentChanges.php	13 Sep 2010 09:31:31 -0000	1.55
  @@ -7,10 +7,10 @@
   // Name: RecentChanges
   // Description: Show RecentChanges of the Wiki
   // URL: MoniWiki:RecentChangesPlugin
  -// Version: $Revision: 1.54 $
  +// Version: $Revision: 1.55 $
   // Depend: 1.1.3
   // License: GPL
  -// $Id: RecentChanges.php,v 1.54 2010/09/11 13:19:08 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.55 2010/09/13 09:31:31 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     global $DBInfo;
  @@ -74,10 +74,11 @@
     global $DBInfo;
   
     $checknew=1;
  +  $checkchange=0;
   
     $template_bra="";
     $template=
  -  '$out.= "$icon&nbsp;&nbsp;$title$updated $date . . . . $user $count $extra<br />\n";';
  +  '$out.= "$icon&nbsp;&nbsp;$title$updated $date . . . . $user $count$diff $extra<br />\n";';
     $template_cat="";
     $use_day=1;
     $users = array();
  @@ -136,6 +137,7 @@
       } else {
         if ($arg =="quick") $opts['quick']=1;
         else if ($arg=="nonew") $checknew=0;
  +      else if ($arg=="change") $checkchange=1;
         else if ($arg=="showhost") $showhost=1;
         else if ($arg=="comment") $comment=1;
         else if ($arg=="comments") $comment=1;
  @@ -156,8 +158,12 @@
       }
     }
   
  +  if (empty($DBInfo->use_counter))
  +    $use_hits = 0;
  +
     if (!empty($rctype)) {
         if ($rctype=="simple") {
  +        $checkchange = 0;
           $use_day=0;
           $template=
     '$out.= "$icon&nbsp;&nbsp;$title @ $day $date by $user $count $extra<br />\n";';
  @@ -167,7 +173,7 @@
         } else if ($rctype=="table") {
           $bra="<table border='0' cellpadding='0' cellspacing='0' width='100%'>";
           $template=
  -  '$out.= "<tr><td style=\'white-space:nowrap;width:2%\'>$icon</td><td style=\'width:40%\'>$title$updated</td><td class=\'date\' style=\'width:15%\'>$date</td><td>$user $count $extra</td></tr>\n";';
  +  '$out.= "<tr><td style=\'white-space:nowrap;width:2%\'>$icon</td><td style=\'width:40%\'>$title$updated</td><td class=\'date\' style=\'width:15%\'>$date</td><td>$user $count$diff $extra</td></tr>\n";';
           $cat="</table>";
           $cat0="";
         } else if ($rctype=="board") {
  @@ -193,7 +199,9 @@
           $template.= '<td class=\'date\' style=\'width:15%\'>$date</td>';
           if (!empty($DBInfo->show_hosts))
             $template.='<td class=\'author\'>$user</td>';
  -        $template.='<td class=\'editinfo\'>$count</td>';
  +        $template.='<td class=\'editinfo\'>$count';
  +        if (!empty($checkchange)) $template.=' $diff';
  +        $template.='</td>';
           if (!empty($DBInfo->use_counter))
             $template.='<td class=\'hits\'>$hits</td>';
           $template_extra=$template.'</tr>\n<tr><td class=\'log\' colspan=\'6\'>$extra</td></tr>\n";';
  @@ -370,21 +378,44 @@
       $pageurl=_rawurlencode($page_name);
   
       #print $ed_time."/".$bookmark."//";
  +    $diff = '';
       $updated = '';
       if (!$DBInfo->hasPage($page_name))
         $icon= $formatter->link_tag($pageurl,"?action=info",$formatter->icon['del']);
       else if ($ed_time > $bookmark) {
         $icon= $formatter->link_tag($pageurl,"?action=diff&amp;date=$bookmark",$formatter->icon['diff']);
         $updated= ' '.$formatter->link_tag($pageurl,"?action=diff&amp;date=$bookmark",$formatter->icon['updated']);
  -      if ($checknew) {
  +
  +      if ($checknew or $checkchange)
           $p= new WikiPage($page_name);
  +
  +      $add = 0;
  +      $del = 0;
  +      if ($checknew) {
           $v= $p->get_rev($bookmark);
           if (empty($v)) {
             $icon=
               $formatter->link_tag($pageurl,"?action=info",$formatter->icon['show']);
             $updated = ' '.$formatter->link_tag($pageurl,"?action=info",$formatter->icon['new']);
  +          $add+= $p->lines();
           }
         }
  +      if ($checkchange) {
  +        $infos = $p->get_info('>'.$bookmark);
  +        foreach ($infos as $inf) {
  +          $tmp = explode(' ', trim($inf[1]));
  +          if (isset($tmp[1])) {
  +            $add+= $tmp[0];
  +            $del+= $tmp[1];
  +          }
  +        }
  +
  +        if (!empty($add))
  +          $diff.= '<span class="diff-added">+'.$add.'</span>';
  +        if (!empty($del))
  +          $diff.= '<span class="diff-removed">'.$del.'</span>';
  +      }
  +
       } else
         $icon= $formatter->link_tag($pageurl,"?action=diff",$formatter->icon['diff']);
   
  
  
  


1284370881;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv26497\n\nModified Files:\n	wiki.php \nLog Message:\n[#315678] fixed last change of the r1.611\n\n
wkpark      2010/09/13 18:41:21

  Modified:    .        wiki.php
  Log:
  [#315678] fixed last change of the r1.611
  
  Revision  Changes    Path
  1.616     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.615
  retrieving revision 1.616
  diff -u -r1.615 -r1.616
  --- wiki.php	13 Sep 2010 09:31:31 -0000	1.615
  +++ wiki.php	13 Sep 2010 09:41:20 -0000	1.616
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.615 2010/09/13 09:31:31 wkpark Exp $
  +// $Id: wiki.php,v 1.616 2010/09/13 09:41:20 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.615 $',1,-1);
  +$_revision = substr('$Revision: 1.616 $',1,-1);
   $_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -2026,7 +2026,7 @@
         $link = str_replace(array('<','>'),array('&#x3c;','&#x3e;'),$url);
         if (preg_match("/^(http|https|ftp)/",$url)) {
           $url1 = preg_replace('/&amp;/','&',$url);
  -        if (preg_match("/(^.*\.(png|gif|jpeg|jpg))(?:\?|&(?!>amp;))(.*?)?$/i", $url1, $match)) {
  +        if (preg_match("/(^.*\.(png|gif|jpeg|jpg))(?:\?|&(?!>amp;))?(.*?)?$/i", $url1, $match)) {
             $url=$match[1];
             $attrs = !empty($match[3]) ? explode('&', $match[3]) : array();
             foreach ($attrs as $arg) {
  
  
  


1284373435;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv32699\n\nModified Files:\n      Tag: B_1_1_5\n	wiki.php \nLog Message:\nmerged from trunk\n\n[#315678] fixed last change of the r1.611\n\n
wkpark      2010/09/13 19:23:56

  Modified:    .        Tag: B_1_1_5 wiki.php
  Log:
  merged from trunk
  
  [#315678] fixed last change of the r1.611
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.600.2.3 +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.600.2.2
  retrieving revision 1.600.2.3
  diff -u -r1.600.2.2 -r1.600.2.3
  --- wiki.php	10 Sep 2010 08:52:39 -0000	1.600.2.2
  +++ wiki.php	13 Sep 2010 10:23:55 -0000	1.600.2.3
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.600.2.2 2010/09/10 08:52:39 wkpark Exp $
  +// $Id: wiki.php,v 1.600.2.3 2010/09/13 10:23:55 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.600.2.2 $',1,-1);
  +$_revision = substr('$Revision: 1.600.2.3 $',1,-1);
   $_release = '1.1.6-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -2614,7 +2614,7 @@
         $link = str_replace(array('<','>'),array('&#x3c;','&#x3e;'),$url);
         if (preg_match("/^(http|https|ftp)/",$url)) {
           $url1 = preg_replace('/&amp;/','&',$url);
  -        if (preg_match("/(^.*\.(png|gif|jpeg|jpg))(?:\?|&(?!>amp;))(.*?)?$/i", $url1, $match)) {
  +        if (preg_match("/(^.*\.(png|gif|jpeg|jpg))(?:\?|&(?!>amp;))?(.*?)?$/i", $url1, $match)) {
             $url=$match[1];
             $attrs = !empty($match[3]) ? explode('&', $match[3]) : array();
             foreach ($attrs as $arg) {
  
  
  


1284373802;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv416/plugin\n\nModified Files:\n	rcsimport.php \nLog Message:\n[#315706] fixed last change of the r1.5\n\n
wkpark      2010/09/13 19:30:02

  Modified:    plugin   rcsimport.php
  Log:
  [#315706] fixed last change of the r1.5
  
  Revision  Changes    Path
  1.6       +4 -3      moniwiki/plugin/rcsimport.php
  
  Index: rcsimport.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rcsimport.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- rcsimport.php	23 Aug 2010 15:14:10 -0000	1.5
  +++ rcsimport.php	13 Sep 2010 10:30:02 -0000	1.6
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Test]]
   //
  -// $Id: rcsimport.php,v 1.5 2010/08/23 15:14:10 wkpark Exp $
  +// $Id: rcsimport.php,v 1.6 2010/09/13 10:30:02 wkpark Exp $
   
   function do_post_rcsimport($formatter,$options) {
       global $DBInfo;
  @@ -114,8 +114,9 @@
               if (!empty($t))
                   $content = $t;
           }
  -        if (!isset($content[0]))
  -            $version->import($options['page'],$content);
  +        if (isset($content[0])) {
  +            $test = $version->import($options['page'],$content);
  +        }
   
           $options['value'] = $options['page'];
           do_goto($formatter, $options);
  
  
  


1284375756;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv5106\n\nModified Files:\n	wiki.php \nLog Message:\n[#315707] fixed table parsing problem. trim out quote marks, set td attributes correctly\n\n
wkpark      2010/09/13 20:02:36

  Modified:    .        wiki.php
  Log:
  [#315707] fixed table parsing problem. trim out quote marks, set td attributes correctly
  
  Revision  Changes    Path
  1.617     +14 -14    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.616
  retrieving revision 1.617
  diff -u -r1.616 -r1.617
  --- wiki.php	13 Sep 2010 09:41:20 -0000	1.616
  +++ wiki.php	13 Sep 2010 11:02:36 -0000	1.617
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.616 2010/09/13 09:41:20 wkpark Exp $
  +// $Id: wiki.php,v 1.617 2010/09/13 11:02:36 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.616 $',1,-1);
  +$_revision = substr('$Revision: 1.617 $',1,-1);
   $_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -2866,6 +2866,7 @@
         if ($match[1]) {
           if ($match[1] == '^') $attr['valign']='top';
           else $attr['valign']='bottom';
  +        $para = '';
         }
       }
       else if (strlen($para)==1) {
  @@ -2882,28 +2883,27 @@
         default:
           break;
         }
  -      $myattr=$this->_attr('',$sty,$myclass,$align);
  -      $attr=array_merge($attr,$myattr);
       }
  -    else if (preg_match("/^\-(\d+)$/",$para,$match))
  +    else if (preg_match("/^\-(\d+)$/",$para,$match)) {
         $attr['colspan']=$match[1];
  -    else if ($para[0]=='#') {
  +      $para = '';
  +    } else if ($para[0]=='#') {
         $sty['background-color']=strtolower($para);
  -      $myattr=$this->_attr('',$sty,$myclass,$align);
  -      $attr=array_merge($attr,$myattr);
  +      $para = '';
       } else {
         if (substr($para,0,7)=='rowspan') {
  -        $attr['rowspan']=substr($para,7);
  +        $attr['rowspan']=substr($para,8);
  +        $para = '';
         } else if (substr($para,0,3)=='row') {
           // row properties
           $val=substr($para,3);
           $myattr=$this->_attr($val,$rsty);
           $rattr=array_merge($rattr,$myattr);
  -      } else {
  -        $myattr=$this->_attr($para,$sty,$myclass,$align);
  -        $attr=array_merge($attr,$myattr);
  +        continue;
         }
       }
  +    $myattr=$this->_attr($para,$sty,$myclass,$align);
  +    $attr=array_merge($attr,$myattr);
       }
       $myclass=!empty($attr['class']) ? $attr['class']:'';
       unset($attr['class']);
  @@ -2911,10 +2911,10 @@
         $attr['class']=trim($myclass);
   
       $val='';
  -    foreach ($rattr as $k=>$v) $val.=$k.'="'.$v.'" ';
  +    foreach ($rattr as $k=>$v) $val.=$k.'="'.trim($v, "'\"").'" ';
   
       $ret='';
  -    foreach ($attr as $k=>$v) $ret.=$k.'="'.$v.'" ';
  +    foreach ($attr as $k=>$v) $ret.=$k.'="'.trim($v, "'\"").'" ';
       return $ret;
     }
   
  
  
  


1284375827;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv5225/plugin\n\nModified Files:\n	Diff.php \nLog Message:\n[#315704] fixed fancy_diff() bug\n\n
wkpark      2010/09/13 20:03:47

  Modified:    plugin   Diff.php
  Log:
  [#315704] fixed fancy_diff() bug
  
  Revision  Changes    Path
  1.25      +2 -2      moniwiki/plugin/Diff.php
  
  Index: Diff.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Diff.php,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- Diff.php	11 Aug 2010 14:36:18 -0000	1.24
  +++ Diff.php	13 Sep 2010 11:03:47 -0000	1.25
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a diff plugin for the MoniWiki
   //
  -// $Id: Diff.php,v 1.24 2010/08/11 14:36:18 wkpark Exp $
  +// $Id: Diff.php,v 1.25 2010/09/13 11:03:47 wkpark Exp $
   
   
   function code_diff($diff, $options = array()) {
  @@ -238,7 +238,7 @@
     $omarker=0;
     $orig=array();$new=array();
     foreach ($lines as $line) {
  -    if (empty($line[0])) continue;
  +    if (empty($omarker) and empty($line[0])) continue;
       $marker=$line[0];
       if (in_array($marker,array('-','+','@'))) $line=substr($line,1);
       if ($marker=="@") $line='<div class="diff-sep">@'."$line</div>";
  
  
  


1284385169;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv32763/plugin\n\nModified Files:\n      Tag: B_1_1_5\n	WordIndex.php \nLog Message:\nmerged from trunk\n\n[#315693] fixed to cache the result of wordindex, paginate etc.\n\n
wkpark      2010/09/13 22:39:30

  Modified:    plugin   Tag: B_1_1_5 WordIndex.php
  Log:
  merged from trunk
  
  [#315693] fixed to cache the result of wordindex, paginate etc.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.8.2.1   +166 -48   moniwiki/plugin/WordIndex.php
  
  Index: WordIndex.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/WordIndex.php,v
  retrieving revision 1.8
  retrieving revision 1.8.2.1
  diff -u -r1.8 -r1.8.2.1
  --- WordIndex.php	19 Apr 2010 11:26:46 -0000	1.8
  +++ WordIndex.php	13 Sep 2010 13:39:29 -0000	1.8.2.1
  @@ -5,13 +5,11 @@
   //
   // Usage: [[WordIndex]]
   //
  -// $Id: WordIndex.php,v 1.8 2010/04/19 11:26:46 wkpark Exp $
  -// vim:et:ts=2:
  +// $Id: WordIndex.php,v 1.8.2.1 2010/09/13 13:39:29 wkpark Exp $
   
  -function macro_WordIndex($formatter,$value) {
  +function macro_WordIndex($formatter,$value, $params = array()) {
     global $DBInfo;
   
  -  $all_pages= $DBInfo->getPageLists();
     $pagelinks=$formatter->pagelinks; // save
     $save=$formatter->sister_on;
     $formatter->sister_on=0;
  @@ -20,61 +18,181 @@
       $cache=new Cache_text('title');
     }
   
  -  foreach ($all_pages as $page) {
  -    if (!empty($DBInfo->use_titlecache) and $cache->exists($page))
  -      $title=$cache->fetch($page);
  -    else
  -      $title=$page;
  -    $tmp=preg_replace("/[\?!$%\.\^;&\*()_\+\|\[\]<>\"' \-~\/]/"," ",$title);
  -    $tmp=preg_replace("/((?<=[A-Za-z0-9])[A-Z][a-z0-9])/"," \\1",ucwords($tmp));
  -    $words=preg_split("/\s+/",$tmp);
  -    foreach ($words as $word) {
  -      $word=ltrim($word);
  -      if (!$word) continue;
  -      if (!empty($dict[$word]))
  -        $dict[$word][]=$page;
  +  $word_limit = 50;
  +
  +  $start = 0;
  +  $prev = 0;
  +  if (!empty($params['start']) and is_numeric($params['start']))
  +    $start = $params['start'];
  +  if (!empty($params['prev']) and is_numeric($params['prev']))
  +    $prev = $params['prev'];
  +
  +  $value = strval($value);
  +  if ($value == '' or $value == 'all') $sel = '';
  +  else $sel = $value;
  +  if (@preg_match('/'.$sel.'/i','') === false) $sel='';
  +
  +  $keys = array();
  +  $dict = array();
  +
  +  // cache wordindex
  +  $wc = new Cache_text('wordindex');
  +  $delay = !empty($DBInfo->default_delaytime) ? $DBInfo->default_delaytime : 0;
  +
  +  $lock_file = _fake_lock_file($DBInfo->vartmp_dir, 'wordindex');
  +  $locked = _fake_locked($lock_file, $DBInfo->mtime());
  +  if ($locked or ($DBInfo->mtime() < $wc->mtime('key') + $delay and $wc->exists('key'))) {
  +    if ($formatter->group) {
  +      $keys = unserialize($wc->fetch('key.'.$formatter->group));
  +      $dict = unserialize($wc->fetch('wordindex.'.$formatter->group));
  +    } else {
  +      $keys = unserialize($wc->fetch('key'));
  +      $dict = unserialize($wc->fetch('wordindex'));
  +    }
  +
  +    if (empty($dict) and $locked) {
  +      // no cache found
  +      return _("Please wait...");
  +    }
  +  }
  +
  +  if (empty($keys) or empty($dict)) {
  +    _fake_lock($lock_file);
  +
  +    $all_pages = array();
  +    if ($formatter->group) {
  +      $group_pages = $DBInfo->getLikePages($formatter->group);
  +      foreach ($group_pages as $page)
  +        $all_pages[] = str_replace($formatter->group, '', $page);
  +    } else {
  +      $all_pages = $DBInfo->getPageLists();
  +    }
  +
  +    foreach ($all_pages as $page) {
  +      if (!empty($DBInfo->use_titlecache) and $cache->exists($page))
  +        $title=$cache->fetch($page);
         else
  -        $dict[$word]=array($page);
  +        $title=$page;
  +      $tmp=preg_replace("/[\?!$%\.\^;&\*()_\+\|\[\]<>\"' \-~\/:]/"," ",$title);
  +      $tmp=preg_replace("/((?<=[A-Za-z0-9])[A-Z][a-z0-9])/"," \\1",ucwords($tmp));
  +      $words=preg_split("/\s+/",$tmp);
  +      foreach ($words as $word) {
  +        $word=ltrim($word);
  +        if (!$word) continue;
  +        $key = get_key($word);
  +        $keys[$key] = $key;
  +        if (!empty($dict[$key][$word])) {
  +          $dict[$key][$word][] = $page;
  +        } else {
  +          if (empty($dict[$key]))
  +            $dict[$key] = array();
  +          $dict[$key][$word] = array($page);
  +        }
  +      }
  +    }
  +
  +    sort($keys);
  +    foreach ($keys as $k) {
  +      #ksort($dict[$k]);
  +      #ksort($dict[$k], SORT_STRING);
  +      #uksort($dict[$k], "strnatcasecmp");
  +      uksort($dict[$k], "strcasecmp");
       }
  +    if ($formatter->group) {
  +      $wc->update('key.'.$formatter->group, serialize($keys));
  +      $wc->update('wordindex.'.$formatter->group, serialize($dict));
  +    } else {
  +      $wc->update('key', serialize($keys));
  +      $wc->update('wordindex', serialize($dict));
  +    }
  +
  +    _fake_lock($lock_file, LOCK_UN);
     }
  -  #ksort($dict);
  -  #ksort($dict,SORT_STRING);
  -  #uksort($dict, "strnatcasecmp");
  -  uksort($dict, "strcasecmp");
  -
  -  $key=-1;
  -  $out="";
  -  $keys=array();
  -  foreach ($dict as $word=>$pages) {
  -    $pkey=get_key("$word");
  -#   $key=strtoupper($page[0]);
  -    if ($key != $pkey) {
  -      if ($key !=-1) $out.="</ul>";
  -      $key=$pkey;
  -      $keys[]=$key;
  -      $ukey=urlencode($key);
  -      $out.= "<a name='$ukey' /><h3><a href='#top'>$key</a></h3>\n";
  -    }
  -
  -    $out.= "<h4>$word</h4>\n";
  -    $out.= "<ul>\n";
  -    foreach ($pages as $page)
  -      $out.= '<li>' . $formatter->word_repl('"'.$page.'"')."</li>\n";
  -    $out.= "</ul>\n";
  +
  +  if (isset($sel[0]) and isset($dict[$sel])) {
  +    $selected = array($sel);
  +  } else {
  +    $selected = &$keys;
  +  }
  +
  +  $out = '';
  +  $key = -1;
  +  $count = 0;
  +  $idx = 0;
  +  foreach ($selected as $k) {
  +    $words = array_keys($dict[$k]);
  +    $sz = count($words);
  +    for ($idx = $start; $idx < $sz; $idx++) {
  +      $word = $words[$idx];
  +      $pages = &$dict[$k][$word];
  +      $pkey = $k;
  +      if ($key != $pkey) {
  +        $key=$pkey;
  +        if (!empty($sel) and !preg_match('/^'.$sel.'/i', $pkey)) continue;
  +        if (!empty($out)) $out.="</ul>";
  +        $ukey=urlencode($key);
  +        $out.= "<a name='$ukey'></a><h3><a href='#top'>$key</a></h3>\n";
  +      }
  +      if (!empty($sel) and !preg_match('/^'.$sel.'/i',$pkey)) continue;
  +
  +      $out.= "<h4>$word</h4>\n";
  +      $out.= "<ul>\n";
  +      foreach ($pages as $page)
  +        $out.= '<li>' . $formatter->word_repl('"'.$page.'"')."</li>\n";
  +      $out.= "</ul>\n";
  +      $count++;
  +      if ($count >= $word_limit) break;
  +    }
  +  }
  +
  +  if (isset($sel[0])) {
  +    $last = count($dict[$sel]);
  +    $offset = $idx + 1;
  +    $pager = array();
  +
  +    if ($start > 0) {
  +      // get previous start offset.
  +      $count = 0;
  +      $idx -= $word_limit - 1;
  +      if ($idx < 0) $idx = 0;
  +
  +      $link = $formatter->link_url($formatter->page->name,'?action=wordindex&amp;sec='.$sel.'&amp;start='.$idx);
  +      $pager[] = "<a href='$link'>"._("&#171; Prev").'</a>';
  +    }
  +    if ($offset < $last) {
  +      $link = $formatter->link_url($formatter->page->name,'?action=wordindex&amp;sec='.$sel.'&amp;start='.$offset);
  +      $pager[] = "<a href='$link'>"._("Next &#187;").'</a>';
  +    }
  +
  +    if (!empty($pager))
  +      $out.= implode(' | ', $pager) . "<br />\n";
  +  }
  +
  +  $index = array();
  +  $tlink = '';
  +  if (isset($sel[0])) {
  +    $tlink = $formatter->link_url($formatter->page->name,'?action=wordindex&amp;sec=');
     }
   
  -  $index="";
     foreach ($keys as $key) {
  -    $name=$key;
  +    $name = strval($key);
       if ($key == 'Others') $name=_("Others");
       $ukey=urlencode($key);
  -    $index.= "| <a href='#$ukey'>$name</a> ";
  +    $link = !empty($tlink) ? preg_replace('/sec=/','sec='._urlencode($key), $tlink) : '';
  +    $index[] = "<a href='$link#$ukey'>$name</a>";
     }
  -  $index[0]=" ";
  +  $str = implode(' | ', $index);
     $formatter->pagelinks = $pagelinks; // restore
     $formatter->sister_on= $save;
   
  -  return "<center><a name='top' />$index</center>\n$out";
  +  return "<center><a name='top'></a>$str</center>\n$out";
   }
   
  -?>
  +function do_wordindex($formatter, $options) {
  +  $formatter->send_header('', $options);
  +  $formatter->send_title('', '', $options);
  +  echo macro_WordIndex($formatter, $options['sec'], $options);
  +  $formatter->send_footer($args, $options);
  +}
  +
  +// vim:et:ts=2:
  
  
  


1284448874;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv3558\n\nModified Files:\n	wiki.php \nLog Message:\n[#315677] fixed to make the trailer cacheable using client-side scripting - $jstrail=1\n\n
wkpark      2010/09/14 16:21:15

  Modified:    .        wiki.php
  Log:
  [#315677] fixed to make the trailer cacheable using client-side scripting - $jstrail=1
  
  Revision  Changes    Path
  1.618     +46 -13    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.617
  retrieving revision 1.618
  diff -u -r1.617 -r1.618
  --- wiki.php	13 Sep 2010 11:02:36 -0000	1.617
  +++ wiki.php	14 Sep 2010 07:21:14 -0000	1.618
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.617 2010/09/13 11:02:36 wkpark Exp $
  +// $Id: wiki.php,v 1.618 2010/09/14 07:21:14 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.617 $',1,-1);
  +$_revision = substr('$Revision: 1.618 $',1,-1);
   $_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -4736,18 +4736,51 @@
       else $trail=$trailer;
       $trails=array_diff(explode("\t",trim($trail)),array($pagename));
   
  -    $sister_save=$this->sister_on;
  -    $this->sister_on=0;
  -    $this->trail="";
  -    $save = $this->nonexists;
  -    $this->nonexists = 'forcelink';
  -    foreach ($trails as $page) {
  -      $this->trail.=$this->word_repl('"'.$page.'"','','',1,0).'<span class="separator">'.$DBInfo->arrow.'</span>';
  +    if (empty($DBInfo->jstrail)) {
  +      $sister_save=$this->sister_on;
  +      $this->sister_on=0;
  +      $this->trail="";
  +      $save = $this->nonexists;
  +      $this->nonexists = 'forcelink';
  +      foreach ($trails as $page) {
  +        $this->trail.=$this->word_repl('"'.$page.'"','','',1,0).'<span class="separator">'.$DBInfo->arrow.'</span>';
  +      }
  +      $this->nonexists = $save;
  +      $this->trail.= ' '.htmlspecialchars($pagename);
  +      $this->pagelinks=array(); # reset pagelinks
  +      $this->sister_on=$sister_save;
  +    } else {
  +      $url = get_scriptname();
  +      $this->trail = <<<EOF
  +<script type='text/javascript'>
  +(function() {
  +  var url_prefix = "$url";
  +  var query_prefix = "$DBInfo->query_prefix";
  +
  +  // get trails from cookie
  +  var cookieName = "MONI_TRAIL=";
  +  var pos = document.cookie.indexOf(cookieName);
  +  if (pos == -1) return;
  +  var end = document.cookie.indexOf(";", pos + cookieName.length);
  +  if (end == -1) end = document.cookie.length;
  +
  +  trails = unescape(document.cookie.substring(pos + cookieName.length, end)).split("\\t");
  +  var span = document.createElement("span");
  +
  +  // render trails
  +  var str = [];
  +  var trail = document.createElement("span");
  +  for (var i = 0; i < trails.length - 1; i++) {
  +    var url = escape(trails[i]).replace(/\\+/, "%20");
  +    var txt = decodeURIComponent(escape(trails[i])).replace(/\\+/, " ");
  +    str[i] = "<a href='" + url_prefix + query_prefix + url + "'>" + txt + "</a>";
  +  }
  +  str[i] = decodeURIComponent(escape(trails[i])).replace(/\\+/, " ");
  +  document.write(str.join("<span class='separator'>$DBInfo->arrow</span>"));
  +})();
  +</script>
  +EOF;
       }
  -    $this->nonexists = $save;
  -    $this->trail.= ' '.htmlspecialchars($pagename);
  -    $this->pagelinks=array(); # reset pagelinks
  -    $this->sister_on=$sister_save;
   
       $this->_vars['trail']=&$this->trail;
   
  
  
  


1284449231;wkpark;Update of /cvsroot/moniwiki/moniwiki/lib\nIn directory kill.kldp.net:/tmp/cvs-serv3882/lib\n\nAdded Files:\n	JSON.php \nLog Message:\n[#315677] fixed to make the randompage macro cacheable using client-side scripting - [[RandomPage(5,js)]]\n\n
1284449231;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv3882\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315677] fixed to make the randompage macro cacheable using client-side scripting - [[RandomPage(5,js)]]\n\n
wkpark      2010/09/14 16:27:12

  Modified:    .        wikilib.php
  Added:       lib      JSON.php
  Log:
  [#315677] fixed to make the randompage macro cacheable using client-side scripting - [[RandomPage(5,js)]]
  
  Revision  Changes    Path
  1.1                  moniwiki/lib/JSON.php
  
  Index: JSON.php
  ===================================================================
  <?php
  /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
  
  /**
   * Converts to and from JSON format.
   *
   * JSON (JavaScript Object Notation) is a lightweight data-interchange
   * format. It is easy for humans to read and write. It is easy for machines
   * to parse and generate. It is based on a subset of the JavaScript
   * Programming Language, Standard ECMA-262 3rd Edition - December 1999.
   * This feature can also be found in  Python. JSON is a text format that is
   * completely language independent but uses conventions that are familiar
   * to programmers of the C-family of languages, including C, C++, C#, Java,
   * JavaScript, Perl, TCL, and many others. These properties make JSON an
   * ideal data-interchange language.
   *
   * This package provides a simple encoder and decoder for JSON notation. It
   * is intended for use with client-side Javascript applications that make
   * use of HTTPRequest to perform server communication functions - data can
   * be encoded into JSON notation for use in a client-side javascript, or
   * decoded from incoming Javascript requests. JSON format is native to
   * Javascript, and can be directly eval()'ed with no further parsing
   * overhead
   *
   * All strings should be in ASCII or UTF-8 format!
   *
   * LICENSE: Redistribution and use in source and binary forms, with or
   * without modification, are permitted provided that the following
   * conditions are met: Redistributions of source code must retain the
   * above copyright notice, this list of conditions and the following
   * disclaimer. Redistributions in binary form must reproduce the above
   * copyright notice, this list of conditions and the following disclaimer
   * in the documentation and/or other materials provided with the
   * distribution.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
   * NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
   * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
   * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
   * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
   * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
   * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
   * DAMAGE.
   *
   * @category
   * @package     Services_JSON
   * @author      Michal Migurski <mike-json@teczno.com>
   * @author      Matt Knapp <mdknapp[at]gmail[dot]com>
   * @author      Brett Stimmerman <brettstimmerman[at]gmail[dot]com>
   * @copyright   2005 Michal Migurski
   * @version     CVS: $orig-Id: JSON.php,v 1.31 2006/06/28 05:54:17 migurski Exp $
   * @license     http://www.opensource.org/licenses/bsd-license.php
   * @link        http://pear.php.net/pepr/pepr-proposal-show.php?id=198
   */
  
  /**
   * Marker constant for Services_JSON::decode(), used to flag stack state
   */
  define('SERVICES_JSON_SLICE',   1);
  
  /**
   * Marker constant for Services_JSON::decode(), used to flag stack state
   */
  define('SERVICES_JSON_IN_STR',  2);
  
  /**
   * Marker constant for Services_JSON::decode(), used to flag stack state
   */
  define('SERVICES_JSON_IN_ARR',  3);
  
  /**
   * Marker constant for Services_JSON::decode(), used to flag stack state
   */
  define('SERVICES_JSON_IN_OBJ',  4);
  
  /**
   * Marker constant for Services_JSON::decode(), used to flag stack state
   */
  define('SERVICES_JSON_IN_CMT', 5);
  
  /**
   * Behavior switch for Services_JSON::decode()
   */
  define('SERVICES_JSON_LOOSE_TYPE', 16);
  
  /**
   * Behavior switch for Services_JSON::decode()
   */
  define('SERVICES_JSON_SUPPRESS_ERRORS', 32);
  
  /**
   * Converts to and from JSON format.
   *
   * Brief example of use:
   *
   * <code>
   * // create a new instance of Services_JSON
   * $json = new Services_JSON();
   *
   * // convert a complexe value to JSON notation, and send it to the browser
   * $value = array('foo', 'bar', array(1, 2, 'baz'), array(3, array(4)));
   * $output = $json->encode($value);
   *
   * print($output);
   * // prints: ["foo","bar",[1,2,"baz"],[3,[4]]]
   *
   * // accept incoming POST data, assumed to be in JSON notation
   * $input = file_get_contents('php://input', 1000000);
   * $value = $json->decode($input);
   * </code>
   */
  class Services_JSON
  {
     /**
      * constructs a new JSON instance
      *
      * @param    int     $use    object behavior flags; combine with boolean-OR
      *
      *                           possible values:
      *                           - SERVICES_JSON_LOOSE_TYPE:  loose typing.
      *                                   "{...}" syntax creates associative arrays
      *                                   instead of objects in decode().
      *                           - SERVICES_JSON_SUPPRESS_ERRORS:  error suppression.
      *                                   Values which can't be encoded (e.g. resources)
      *                                   appear as NULL instead of throwing errors.
      *                                   By default, a deeply-nested resource will
      *                                   bubble up with an error, so all return values
      *                                   from encode() should be checked with isError()
      */
      function Services_JSON($use = 0)
      {
          $this->use = $use;
      }
  
     /**
      * convert a string from one UTF-16 char to one UTF-8 char
      *
      * Normally should be handled by mb_convert_encoding, but
      * provides a slower PHP-only method for installations
      * that lack the multibye string extension.
      *
      * @param    string  $utf16  UTF-16 character
      * @return   string  UTF-8 character
      * @access   private
      */
      function utf162utf8($utf16)
      {
          // oh please oh please oh please oh please oh please
          if(function_exists('mb_convert_encoding')) {
              return mb_convert_encoding($utf16, 'UTF-8', 'UTF-16');
          }
  
          $bytes = (ord($utf16{0}) << 8) | ord($utf16{1});
  
          switch(true) {
              case ((0x7F & $bytes) == $bytes):
                  // this case should never be reached, because we are in ASCII range
                  // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
                  return chr(0x7F & $bytes);
  
              case (0x07FF & $bytes) == $bytes:
                  // return a 2-byte UTF-8 character
                  // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
                  return chr(0xC0 | (($bytes >> 6) & 0x1F))
                       . chr(0x80 | ($bytes & 0x3F));
  
              case (0xFFFF & $bytes) == $bytes:
                  // return a 3-byte UTF-8 character
                  // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
                  return chr(0xE0 | (($bytes >> 12) & 0x0F))
                       . chr(0x80 | (($bytes >> 6) & 0x3F))
                       . chr(0x80 | ($bytes & 0x3F));
          }
  
          // ignoring UTF-32 for now, sorry
          return '';
      }
  
     /**
      * convert a string from one UTF-8 char to one UTF-16 char
      *
      * Normally should be handled by mb_convert_encoding, but
      * provides a slower PHP-only method for installations
      * that lack the multibye string extension.
      *
      * @param    string  $utf8   UTF-8 character
      * @return   string  UTF-16 character
      * @access   private
      */
      function utf82utf16($utf8)
      {
          // oh please oh please oh please oh please oh please
          if(function_exists('mb_convert_encoding')) {
              return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8');
          }
  
          switch(strlen($utf8)) {
              case 1:
                  // this case should never be reached, because we are in ASCII range
                  // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
                  return $utf8;
  
              case 2:
                  // return a UTF-16 character from a 2-byte UTF-8 char
                  // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
                  return chr(0x07 & (ord($utf8{0}) >> 2))
                       . chr((0xC0 & (ord($utf8{0}) << 6))
                           | (0x3F & ord($utf8{1})));
  
              case 3:
                  // return a UTF-16 character from a 3-byte UTF-8 char
                  // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
                  return chr((0xF0 & (ord($utf8{0}) << 4))
                           | (0x0F & (ord($utf8{1}) >> 2)))
                       . chr((0xC0 & (ord($utf8{1}) << 6))
                           | (0x7F & ord($utf8{2})));
          }
  
          // ignoring UTF-32 for now, sorry
          return '';
      }
  
     /**
      * encodes an arbitrary variable into JSON format
      *
      * @param    mixed   $var    any number, boolean, string, array, or object to be encoded.
      *                           see argument 1 to Services_JSON() above for array-parsing behavior.
      *                           if var is a strng, note that encode() always expects it
      *                           to be in ASCII or UTF-8 format!
      *
      * @return   mixed   JSON string representation of input var or an error if a problem occurs
      * @access   public
      */
      function encode($var)
      {
          switch (gettype($var)) {
              case 'boolean':
                  return $var ? 'true' : 'false';
  
              case 'NULL':
                  return 'null';
  
              case 'integer':
                  return (int) $var;
  
              case 'double':
              case 'float':
                  return (float) $var;
  
              case 'string':
                  // STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT
                  $ascii = '';
                  $strlen_var = strlen($var);
  
                 /*
                  * Iterate over every character in the string,
                  * escaping with a slash or encoding to UTF-8 where necessary
                  */
                  for ($c = 0; $c < $strlen_var; ++$c) {
  
                      $ord_var_c = ord($var{$c});
  
                      switch (true) {
                          case $ord_var_c == 0x08:
                              $ascii .= '\b';
                              break;
                          case $ord_var_c == 0x09:
                              $ascii .= '\t';
                              break;
                          case $ord_var_c == 0x0A:
                              $ascii .= '\n';
                              break;
                          case $ord_var_c == 0x0C:
                              $ascii .= '\f';
                              break;
                          case $ord_var_c == 0x0D:
                              $ascii .= '\r';
                              break;
  
                          case $ord_var_c == 0x22:
                          case $ord_var_c == 0x2F:
                          case $ord_var_c == 0x5C:
                              // double quote, slash, slosh
                              $ascii .= '\\'.$var{$c};
                              break;
  
                          case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)):
                              // characters U-00000000 - U-0000007F (same as ASCII)
                              $ascii .= $var{$c};
                              break;
  
                          case (($ord_var_c & 0xE0) == 0xC0):
                              // characters U-00000080 - U-000007FF, mask 110XXXXX
                              // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
                              $char = pack('C*', $ord_var_c, ord($var{$c + 1}));
                              $c += 1;
                              $utf16 = $this->utf82utf16($char);
                              $ascii .= sprintf('\u%04s', bin2hex($utf16));
                              break;
  
                          case (($ord_var_c & 0xF0) == 0xE0):
                              // characters U-00000800 - U-0000FFFF, mask 1110XXXX
                              // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
                              $char = pack('C*', $ord_var_c,
                                           ord($var{$c + 1}),
                                           ord($var{$c + 2}));
                              $c += 2;
                              $utf16 = $this->utf82utf16($char);
                              $ascii .= sprintf('\u%04s', bin2hex($utf16));
                              break;
  
                          case (($ord_var_c & 0xF8) == 0xF0):
                              // characters U-00010000 - U-001FFFFF, mask 11110XXX
                              // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
                              $char = pack('C*', $ord_var_c,
                                           ord($var{$c + 1}),
                                           ord($var{$c + 2}),
                                           ord($var{$c + 3}));
                              $c += 3;
                              $utf16 = $this->utf82utf16($char);
                              $ascii .= sprintf('\u%04s', bin2hex($utf16));
                              break;
  
                          case (($ord_var_c & 0xFC) == 0xF8):
                              // characters U-00200000 - U-03FFFFFF, mask 111110XX
                              // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
                              $char = pack('C*', $ord_var_c,
                                           ord($var{$c + 1}),
                                           ord($var{$c + 2}),
                                           ord($var{$c + 3}),
                                           ord($var{$c + 4}));
                              $c += 4;
                              $utf16 = $this->utf82utf16($char);
                              $ascii .= sprintf('\u%04s', bin2hex($utf16));
                              break;
  
                          case (($ord_var_c & 0xFE) == 0xFC):
                              // characters U-04000000 - U-7FFFFFFF, mask 1111110X
                              // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
                              $char = pack('C*', $ord_var_c,
                                           ord($var{$c + 1}),
                                           ord($var{$c + 2}),
                                           ord($var{$c + 3}),
                                           ord($var{$c + 4}),
                                           ord($var{$c + 5}));
                              $c += 5;
                              $utf16 = $this->utf82utf16($char);
                              $ascii .= sprintf('\u%04s', bin2hex($utf16));
                              break;
                      }
                  }
  
                  return '"'.$ascii.'"';
  
              case 'array':
                 /*
                  * As per JSON spec if any array key is not an integer
                  * we must treat the the whole array as an object. We
                  * also try to catch a sparsely populated associative
                  * array with numeric keys here because some JS engines
                  * will create an array with empty indexes up to
                  * max_index which can cause memory issues and because
                  * the keys, which may be relevant, will be remapped
                  * otherwise.
                  *
                  * As per the ECMA and JSON specification an object may
                  * have any string as a property. Unfortunately due to
                  * a hole in the ECMA specification if the key is a
                  * ECMA reserved word or starts with a digit the
                  * parameter is only accessible using ECMAScript's
                  * bracket notation.
                  */
  
                  // treat as a JSON object
                  if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) {
                      $properties = array_map(array($this, 'name_value'),
                                              array_keys($var),
                                              array_values($var));
  
                      foreach($properties as $property) {
                          if(Services_JSON::isError($property)) {
                              return $property;
                          }
                      }
  
                      return '{' . join(',', $properties) . '}';
                  }
  
                  // treat it like a regular array
                  $elements = array_map(array($this, 'encode'), $var);
  
                  foreach($elements as $element) {
                      if(Services_JSON::isError($element)) {
                          return $element;
                      }
                  }
  
                  return '[' . join(',', $elements) . ']';
  
              case 'object':
                  $vars = get_object_vars($var);
  
                  $properties = array_map(array($this, 'name_value'),
                                          array_keys($vars),
                                          array_values($vars));
  
                  foreach($properties as $property) {
                      if(Services_JSON::isError($property)) {
                          return $property;
                      }
                  }
  
                  return '{' . join(',', $properties) . '}';
  
              default:
                  return ($this->use & SERVICES_JSON_SUPPRESS_ERRORS)
                      ? 'null'
                      : new Services_JSON_Error(gettype($var)." can not be encoded as JSON string");
          }
      }
  
     /**
      * array-walking function for use in generating JSON-formatted name-value pairs
      *
      * @param    string  $name   name of key to use
      * @param    mixed   $value  reference to an array element to be encoded
      *
      * @return   string  JSON-formatted name-value pair, like '"name":value'
      * @access   private
      */
      function name_value($name, $value)
      {
          $encoded_value = $this->encode($value);
  
          if(Services_JSON::isError($encoded_value)) {
              return $encoded_value;
          }
  
          return $this->encode(strval($name)) . ':' . $encoded_value;
      }
  
     /**
      * reduce a string by removing leading and trailing comments and whitespace
      *
      * @param    $str    string      string value to strip of comments and whitespace
      *
      * @return   string  string value stripped of comments and whitespace
      * @access   private
      */
      function reduce_string($str)
      {
          $str = preg_replace(array(
  
                  // eliminate single line comments in '// ...' form
                  '#^\s*//(.+)$#m',
  
                  // eliminate multi-line comments in '/* ... */' form, at start of string
                  '#^\s*/\*(.+)\*/#Us',
  
                  // eliminate multi-line comments in '/* ... */' form, at end of string
                  '#/\*(.+)\*/\s*$#Us'
  
              ), '', $str);
  
          // eliminate extraneous space
          return trim($str);
      }
  
     /**
      * decodes a JSON string into appropriate variable
      *
      * @param    string  $str    JSON-formatted string
      *
      * @return   mixed   number, boolean, string, array, or object
      *                   corresponding to given JSON input string.
      *                   See argument 1 to Services_JSON() above for object-output behavior.
      *                   Note that decode() always returns strings
      *                   in ASCII or UTF-8 format!
      * @access   public
      */
      function decode($str)
      {
          $str = $this->reduce_string($str);
  
          switch (strtolower($str)) {
              case 'true':
                  return true;
  
              case 'false':
                  return false;
  
              case 'null':
                  return null;
  
              default:
                  $m = array();
  
                  if (is_numeric($str)) {
                      // Lookie-loo, it's a number
  
                      // This would work on its own, but I'm trying to be
                      // good about returning integers where appropriate:
                      // return (float)$str;
  
                      // Return float or int, as appropriate
                      return ((float)$str == (integer)$str)
                          ? (integer)$str
                          : (float)$str;
  
                  } elseif (preg_match('/^("|\').*(\1)$/s', $str, $m) && $m[1] == $m[2]) {
                      // STRINGS RETURNED IN UTF-8 FORMAT
                      $delim = substr($str, 0, 1);
                      $chrs = substr($str, 1, -1);
                      $utf8 = '';
                      $strlen_chrs = strlen($chrs);
  
                      for ($c = 0; $c < $strlen_chrs; ++$c) {
  
                          $substr_chrs_c_2 = substr($chrs, $c, 2);
                          $ord_chrs_c = ord($chrs{$c});
  
                          switch (true) {
                              case $substr_chrs_c_2 == '\b':
                                  $utf8 .= chr(0x08);
                                  ++$c;
                                  break;
                              case $substr_chrs_c_2 == '\t':
                                  $utf8 .= chr(0x09);
                                  ++$c;
                                  break;
                              case $substr_chrs_c_2 == '\n':
                                  $utf8 .= chr(0x0A);
                                  ++$c;
                                  break;
                              case $substr_chrs_c_2 == '\f':
                                  $utf8 .= chr(0x0C);
                                  ++$c;
                                  break;
                              case $substr_chrs_c_2 == '\r':
                                  $utf8 .= chr(0x0D);
                                  ++$c;
                                  break;
  
                              case $substr_chrs_c_2 == '\\"':
                              case $substr_chrs_c_2 == '\\\'':
                              case $substr_chrs_c_2 == '\\\\':
                              case $substr_chrs_c_2 == '\\/':
                                  if (($delim == '"' && $substr_chrs_c_2 != '\\\'') ||
                                     ($delim == "'" && $substr_chrs_c_2 != '\\"')) {
                                      $utf8 .= $chrs{++$c};
                                  }
                                  break;
  
                              case preg_match('/\\\u[0-9A-F]{4}/i', substr($chrs, $c, 6)):
                                  // single, escaped unicode character
                                  $utf16 = chr(hexdec(substr($chrs, ($c + 2), 2)))
                                         . chr(hexdec(substr($chrs, ($c + 4), 2)));
                                  $utf8 .= $this->utf162utf8($utf16);
                                  $c += 5;
                                  break;
  
                              case ($ord_chrs_c >= 0x20) && ($ord_chrs_c <= 0x7F):
                                  $utf8 .= $chrs{$c};
                                  break;
  
                              case ($ord_chrs_c & 0xE0) == 0xC0:
                                  // characters U-00000080 - U-000007FF, mask 110XXXXX
                                  //see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
                                  $utf8 .= substr($chrs, $c, 2);
                                  ++$c;
                                  break;
  
                              case ($ord_chrs_c & 0xF0) == 0xE0:
                                  // characters U-00000800 - U-0000FFFF, mask 1110XXXX
                                  // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
                                  $utf8 .= substr($chrs, $c, 3);
                                  $c += 2;
                                  break;
  
                              case ($ord_chrs_c & 0xF8) == 0xF0:
                                  // characters U-00010000 - U-001FFFFF, mask 11110XXX
                                  // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
                                  $utf8 .= substr($chrs, $c, 4);
                                  $c += 3;
                                  break;
  
                              case ($ord_chrs_c & 0xFC) == 0xF8:
                                  // characters U-00200000 - U-03FFFFFF, mask 111110XX
                                  // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
                                  $utf8 .= substr($chrs, $c, 5);
                                  $c += 4;
                                  break;
  
                              case ($ord_chrs_c & 0xFE) == 0xFC:
                                  // characters U-04000000 - U-7FFFFFFF, mask 1111110X
                                  // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
                                  $utf8 .= substr($chrs, $c, 6);
                                  $c += 5;
                                  break;
  
                          }
  
                      }
  
                      return $utf8;
  
                  } elseif (preg_match('/^\[.*\]$/s', $str) || preg_match('/^\{.*\}$/s', $str)) {
                      // array, or object notation
  
                      if ($str{0} == '[') {
                          $stk = array(SERVICES_JSON_IN_ARR);
                          $arr = array();
                      } else {
                          if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
                              $stk = array(SERVICES_JSON_IN_OBJ);
                              $obj = array();
                          } else {
                              $stk = array(SERVICES_JSON_IN_OBJ);
                              $obj = new stdClass();
                          }
                      }
  
                      array_push($stk, array('what'  => SERVICES_JSON_SLICE,
                                             'where' => 0,
                                             'delim' => false));
  
                      $chrs = substr($str, 1, -1);
                      $chrs = $this->reduce_string($chrs);
  
                      if ($chrs == '') {
                          if (reset($stk) == SERVICES_JSON_IN_ARR) {
                              return $arr;
  
                          } else {
                              return $obj;
  
                          }
                      }
  
                      //print("\nparsing {$chrs}\n");
  
                      $strlen_chrs = strlen($chrs);
  
                      for ($c = 0; $c <= $strlen_chrs; ++$c) {
  
                          $top = end($stk);
                          $substr_chrs_c_2 = substr($chrs, $c, 2);
  
                          if (($c == $strlen_chrs) || (($chrs{$c} == ',') && ($top['what'] == SERVICES_JSON_SLICE))) {
                              // found a comma that is not inside a string, array, etc.,
                              // OR we've reached the end of the character list
                              $slice = substr($chrs, $top['where'], ($c - $top['where']));
                              array_push($stk, array('what' => SERVICES_JSON_SLICE, 'where' => ($c + 1), 'delim' => false));
                              //print("Found split at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
  
                              if (reset($stk) == SERVICES_JSON_IN_ARR) {
                                  // we are in an array, so just push an element onto the stack
                                  array_push($arr, $this->decode($slice));
  
                              } elseif (reset($stk) == SERVICES_JSON_IN_OBJ) {
                                  // we are in an object, so figure
                                  // out the property name and set an
                                  // element in an associative array,
                                  // for now
                                  $parts = array();
                                  
                                  if (preg_match('/^\s*(["\'].*[^\\\]["\'])\s*:\s*(\S.*),?$/Uis', $slice, $parts)) {
                                      // "name":value pair
                                      $key = $this->decode($parts[1]);
                                      $val = $this->decode($parts[2]);
  
                                      if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
                                          $obj[$key] = $val;
                                      } else {
                                          $obj->$key = $val;
                                      }
                                  } elseif (preg_match('/^\s*(\w+)\s*:\s*(\S.*),?$/Uis', $slice, $parts)) {
                                      // name:value pair, where name is unquoted
                                      $key = $parts[1];
                                      $val = $this->decode($parts[2]);
  
                                      if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
                                          $obj[$key] = $val;
                                      } else {
                                          $obj->$key = $val;
                                      }
                                  }
  
                              }
  
                          } elseif ((($chrs{$c} == '"') || ($chrs{$c} == "'")) && ($top['what'] != SERVICES_JSON_IN_STR)) {
                              // found a quote, and we are not inside a string
                              array_push($stk, array('what' => SERVICES_JSON_IN_STR, 'where' => $c, 'delim' => $chrs{$c}));
                              //print("Found start of string at {$c}\n");
  
                          } elseif (($chrs{$c} == $top['delim']) &&
                                   ($top['what'] == SERVICES_JSON_IN_STR) &&
                                   ((strlen(substr($chrs, 0, $c)) - strlen(rtrim(substr($chrs, 0, $c), '\\'))) % 2 != 1)) {
                              // found a quote, we're in a string, and it's not escaped
                              // we know that it's not escaped becase there is _not_ an
                              // odd number of backslashes at the end of the string so far
                              array_pop($stk);
                              //print("Found end of string at {$c}: ".substr($chrs, $top['where'], (1 + 1 + $c - $top['where']))."\n");
  
                          } elseif (($chrs{$c} == '[') &&
                                   in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
                              // found a left-bracket, and we are in an array, object, or slice
                              array_push($stk, array('what' => SERVICES_JSON_IN_ARR, 'where' => $c, 'delim' => false));
                              //print("Found start of array at {$c}\n");
  
                          } elseif (($chrs{$c} == ']') && ($top['what'] == SERVICES_JSON_IN_ARR)) {
                              // found a right-bracket, and we're in an array
                              array_pop($stk);
                              //print("Found end of array at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
  
                          } elseif (($chrs{$c} == '{') &&
                                   in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
                              // found a left-brace, and we are in an array, object, or slice
                              array_push($stk, array('what' => SERVICES_JSON_IN_OBJ, 'where' => $c, 'delim' => false));
                              //print("Found start of object at {$c}\n");
  
                          } elseif (($chrs{$c} == '}') && ($top['what'] == SERVICES_JSON_IN_OBJ)) {
                              // found a right-brace, and we're in an object
                              array_pop($stk);
                              //print("Found end of object at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
  
                          } elseif (($substr_chrs_c_2 == '/*') &&
                                   in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
                              // found a comment start, and we are in an array, object, or slice
                              array_push($stk, array('what' => SERVICES_JSON_IN_CMT, 'where' => $c, 'delim' => false));
                              $c++;
                              //print("Found start of comment at {$c}\n");
  
                          } elseif (($substr_chrs_c_2 == '*/') && ($top['what'] == SERVICES_JSON_IN_CMT)) {
                              // found a comment end, and we're in one now
                              array_pop($stk);
                              $c++;
  
                              for ($i = $top['where']; $i <= $c; ++$i)
                                  $chrs = substr_replace($chrs, ' ', $i, 1);
  
                              //print("Found end of comment at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
  
                          }
  
                      }
  
                      if (reset($stk) == SERVICES_JSON_IN_ARR) {
                          return $arr;
  
                      } elseif (reset($stk) == SERVICES_JSON_IN_OBJ) {
                          return $obj;
  
                      }
  
                  }
          }
      }
  
      /**
       * @todo Ultimately, this should just call PEAR::isError()
       */
      function isError($data, $code = null)
      {
          if (class_exists('pear')) {
              return PEAR::isError($data, $code);
          } elseif (is_object($data) && (get_class($data) == 'services_json_error' ||
                                   is_subclass_of($data, 'services_json_error'))) {
              return true;
          }
  
          return false;
      }
  }
  
  if (class_exists('PEAR_Error')) {
  
      class Services_JSON_Error extends PEAR_Error
      {
          function Services_JSON_Error($message = 'unknown error', $code = null,
                                       $mode = null, $options = null, $userinfo = null)
          {
              parent::PEAR_Error($message, $code, $mode, $options, $userinfo);
          }
      }
  
  } else {
  
      /**
       * @todo Ultimately, this class shall be descended from PEAR_Error
       */
      class Services_JSON_Error
      {
          function Services_JSON_Error($message = 'unknown error', $code = null,
                                       $mode = null, $options = null, $userinfo = null)
          {
  
          }
      }
  
  }
      
  ?>
  
  
  
  1.356     +51 -3     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.355
  retrieving revision 1.356
  diff -u -r1.355 -r1.356
  --- wikilib.php	13 Sep 2010 09:31:31 -0000	1.355
  +++ wikilib.php	14 Sep 2010 07:27:11 -0000	1.356
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.355 2010/09/13 09:31:31 wkpark Exp $
  +// $Id: wikilib.php,v 1.356 2010/09/14 07:27:11 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2405,6 +2405,22 @@
   function do_RandomPage($formatter,$options='') {
     global $DBInfo;
   
  +  if (!empty($options['action_mode']) and $options['action_mode'] == 'ajax') {
  +    $val = !empty($options['value']) ? intval($options['value']) : '';
  +
  +    $params = $options;
  +    $params['call'] = 1;
  +    $ret = macro_RandomPage($formatter, $val, $params);
  +    if (function_exists('json_encode')) {
  +        echo json_encode($ret);
  +    } else {
  +        require_once('lib/JSON.php');
  +        $json = new Services_JSON();
  +        echo $json->encode($ret);
  +    }
  +    return;
  +  }
  +
     $max = $DBInfo->getCounter();
     $rand = rand(1,$max);
     if (!empty($DBInfo->use_pageindex)) {
  @@ -2438,10 +2454,10 @@
     return;
   }
   
  -function macro_RandomPage($formatter,$value='') {
  +function macro_RandomPage($formatter, $value = '', $params = array()) {
     global $DBInfo;
   
  -  $test=preg_match("/^(\d+)\s*,?\s?(simple|nobr)?$/",$value,$match);
  +  $test=preg_match("/^(\d+)\s*,?\s?(simple|nobr|js|json)?$/",$value,$match);
     $count = '';
     $mode = '';
     if ($test) {
  @@ -2458,6 +2474,35 @@
   
     $number=min($max,$counter);
   
  +  if ($mode == 'js' or $mode == 'json') {
  +    static $id = 1;
  +    $myid = sprintf("randomPage%02d", $id);
  +    $id++;
  +    $url = $formatter->link_url('', "?action=randompage/ajax&value=".$number);
  +    return <<<EOF
  +<div id='$myid'>
  +</div>
  +<script type='text/javascript'>
  +/*<![CDATA[*/
  +(function () {
  +   var msg = HTTPGet("$url");
  +   var ret;
  +   if (msg != null && (ret = eval(msg))) {
  +      var div = document.getElementById("$myid");
  +      var ul = document.createElement('UL');
  +      for(var i = 0; i < ret.length; i++) {
  +        var li = document.createElement('LI');
  +        li.innerHTML = ret[i];
  +        ul.appendChild(li);
  +      }
  +      div.appendChild(ul);
  +   }
  +})();
  +/*]]>*/
  +</script>
  +EOF;
  +  }
  +
     // select pages
     $selected = array();
     for ($i = 0; $i < $number; $i++) {
  @@ -2504,6 +2549,9 @@
       $selects[]=$formatter->link_tag(_rawurlencode($item),"",htmlspecialchars($item));
     }
   
  +  if (isset($params['call']))
  +    return $selects;
  +
     if ($count > 1) {
       if (!$mode)
         return "<ul>\n<li>".join("</li>\n<li>",$selects)."</li>\n</ul>";
  
  
  


1284451873;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv11698\n\nModified Files:\n	wiki.php \nLog Message:\n[#315677] fixed last change r1.618\n\n
wkpark      2010/09/14 17:11:14

  Modified:    .        wiki.php
  Log:
  [#315677] fixed last change r1.618
  
  Revision  Changes    Path
  1.619     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.618
  retrieving revision 1.619
  diff -u -r1.618 -r1.619
  --- wiki.php	14 Sep 2010 07:21:14 -0000	1.618
  +++ wiki.php	14 Sep 2010 08:11:13 -0000	1.619
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.618 2010/09/14 07:21:14 wkpark Exp $
  +// $Id: wiki.php,v 1.619 2010/09/14 08:11:13 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.618 $',1,-1);
  +$_revision = substr('$Revision: 1.619 $',1,-1);
   $_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -4771,8 +4771,8 @@
     var str = [];
     var trail = document.createElement("span");
     for (var i = 0; i < trails.length - 1; i++) {
  -    var url = escape(trails[i]).replace(/\\+/, "%20");
  -    var txt = decodeURIComponent(escape(trails[i])).replace(/\\+/, " ");
  +    var url = escape(trails[i]).replace(/\\+/g, "%20");
  +    var txt = decodeURIComponent(escape(trails[i])).replace(/\\+/g, " ");
       str[i] = "<a href='" + url_prefix + query_prefix + url + "'>" + txt + "</a>";
     }
     str[i] = decodeURIComponent(escape(trails[i])).replace(/\\+/, " ");
  
  
  


1284467805;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv28854\n\nModified Files:\n	wiki.php \nLog Message:\n[#315629] fixed HEAD support. set mtime correctly. set pagename/action/value correctly wit POST method\n\n
wkpark      2010/09/14 21:36:45

  Modified:    .        wiki.php
  Log:
  [#315629] fixed HEAD support. set mtime correctly. set pagename/action/value correctly wit POST method
  
  Revision  Changes    Path
  1.620     +10 -7     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.619
  retrieving revision 1.620
  diff -u -r1.619 -r1.620
  --- wiki.php	14 Sep 2010 08:11:13 -0000	1.619
  +++ wiki.php	14 Sep 2010 12:36:45 -0000	1.620
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.619 2010/09/14 08:11:13 wkpark Exp $
  +// $Id: wiki.php,v 1.620 2010/09/14 12:36:45 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.619 $',1,-1);
  +$_revision = substr('$Revision: 1.620 $',1,-1);
   $_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -5109,12 +5109,14 @@
       } else {
         $value=!empty($_POST['value']) ? $_POST['value'] : '';
         $action=!empty($_POST['action']) ? $_POST['action'] : $action;
  -      if (empty($action))
  +
  +      if (empty($action)) {
           $dum=explode('----',$pagename,3);
  -      if (isset($dum[0]) && isset($dum[1])) {
  -        $pagename=$dum[0];
  -        $action=$dum[1];
  -        $value=!empty($dum[2]) ? $dum[2] : '';
  +        if (isset($dum[0][0]) && isset($dum[1][0])) {
  +          $pagename=trim($dum[0]);
  +          $action=trim($dum[1]);
  +          $value=isset($dum[2][0]) ? $dum[2] : '';
  +        }
         }
       }
       $goto=!empty($_POST['goto']) ? $_POST['goto'] : '';
  @@ -5154,6 +5156,7 @@
         header("Status: 404 Not found");
       } else {
         #$formatter->get_redirect();
  +      $mtime = $page->mtime();
         $lastmod = gmdate('D, d M Y H:i:s \G\M\T', $mtime);
         $etag = '"'.md5($lastmod).'"';
         header('Last-Modified: '.$lastmod);
  
  
  


1284493571;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv319\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315677] fixed for backward compatibility with the r1.356 patch\n\n
wkpark      2010/09/15 04:46:12

  Modified:    .        wikilib.php
  Log:
  [#315677] fixed for backward compatibility with the r1.356 patch
  
  Revision  Changes    Path
  1.357     +13 -5     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.356
  retrieving revision 1.357
  diff -u -r1.356 -r1.357
  --- wikilib.php	14 Sep 2010 07:27:11 -0000	1.356
  +++ wikilib.php	14 Sep 2010 19:46:10 -0000	1.357
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.356 2010/09/14 07:27:11 wkpark Exp $
  +// $Id: wikilib.php,v 1.357 2010/09/14 19:46:10 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2457,13 +2457,21 @@
   function macro_RandomPage($formatter, $value = '', $params = array()) {
     global $DBInfo;
   
  -  $test=preg_match("/^(\d+)\s*,?\s?(simple|nobr|js|json)?$/",$value,$match);
     $count = '';
     $mode = '';
  -  if ($test) {
  -    $count= intval($match[1]);
  -    $mode= !empty($match[2]) ? $match[2] : '';
  +  if (!empty($value)) {
  +    $vals = get_csv($value);
  +    if (!empty($vals)) {
  +      foreach ($vals as $v) {
  +        if (is_numeric($v)) {
  +          $count = $v;
  +        } else if (in_array($v, array('simple', 'nobr', 'js'))) {
  +          $mode = $v;
  +        }
  +      }
  +    }
     }
  +
     if ($count <= 0) $count=1;
     $counter= $count;
   
  
  
  


1284493811;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv1163/plugin\n\nModified Files:\n	admin.php \nLog Message:\n[#315716] fixed get_plugin_info() to parse more general information format.\n\n
wkpark      2010/09/15 04:50:12

  Modified:    plugin   admin.php
  Log:
  [#315716] fixed get_plugin_info() to parse more general information format.
  
  Revision  Changes    Path
  1.6       +10 -7     moniwiki/plugin/admin.php
  
  Index: admin.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/admin.php,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- admin.php	7 Sep 2010 12:11:49 -0000	1.5
  +++ admin.php	14 Sep 2010 19:50:11 -0000	1.6
  @@ -9,13 +9,13 @@
   // Name: Admin
   // Description: Admin Plugin
   // URL: MoniWiki:AdminPlugin
  -// Version: $Revision: 1.5 $
  +// Version: $Revision: 1.6 $
   // Depend: 1.1.3
   // License: GPL
   //
   // Usage: ?action=admin
   //
  -// $Id: admin.php,v 1.5 2010/09/07 12:11:49 wkpark Exp $
  +// $Id: admin.php,v 1.6 2010/09/14 19:50:11 wkpark Exp $
   
   function get_plugin_info($plugin_file) {
       // wordpress style management
  @@ -25,8 +25,12 @@
           while(1) {
               $l=fgets($fp,2048);
               if (!rtrim($l)) break; // XXX
  -            if ($l{0}==' ' and $l{1}=='*') {
  -                if ($l{2}==' ' and $l{3}!='@') {
  +            if ($l[0] == ' ' and $l[1] == '*') {
  +                if (preg_match('@^ \* ([A-Z][A-Za-z0-9]+(?:\s?[A-Z][A-Za-z0-9]+)?)\s?\:\s?(.*)@', $l, $m)) {
  +                    $k = strtolower($m[1]);
  +                    $v = $m[2];
  +                    $info[$k] = !empty($info[$k]) ? $info[$k] . ',' . $v : $v;
  +                } else if ($l[2] == ' ' and $l[3] != '@') {
                       $desc.=substr($l,3);
                   } else if (substr($l,1,3)=='* @') {
                       $l=substr($l,4);
  @@ -34,7 +38,7 @@
                       $nk=strtolower($k);
                       $info[$nk]=!empty($info[$nk]) ? $info[$nk].','.$v:$v;
                   }
  -            } else if ($l{1}=='/' and $l{2}==' ') {
  +            } else if ($l[1]=='/' and $l[2]==' ') {
                   $l=substr($l,3);
                   if (($p=strpos($l,':'))!== false) {
                       $k=substr($l,0,$p);
  @@ -46,12 +50,11 @@
           }
           fclose($fp);
       }
  -
       if (!$info) return array();
   
       $plugin_info = array();
       $fields = array('name', 'description', 'author', 'license', 'url', 'depend', 'author url');
  -    $alias = array('desc'=>'description', 'dependency'=>'depend', 'uri'=>'url', 'author uri'=>'author url');
  +    $alias = array('desc'=>'description', 'dependency'=>'depend', 'uri'=>'url', 'author uri'=>'author url', 'plugin name'=>'name');
   
       foreach ($info as $k=>$v) {
           $kk = $k;
  
  
  


1284497692;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv10282\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315677] fixe last change of the r1.357\n\n
wkpark      2010/09/15 05:54:53

  Modified:    .        wikilib.php
  Log:
  [#315677] fixe last change of the r1.357
  
  Revision  Changes    Path
  1.358     +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.357
  retrieving revision 1.358
  diff -u -r1.357 -r1.358
  --- wikilib.php	14 Sep 2010 19:46:10 -0000	1.357
  +++ wikilib.php	14 Sep 2010 20:54:52 -0000	1.358
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.357 2010/09/14 19:46:10 wkpark Exp $
  +// $Id: wikilib.php,v 1.358 2010/09/14 20:54:52 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2482,7 +2482,7 @@
   
     $number=min($max,$counter);
   
  -  if ($mode == 'js' or $mode == 'json') {
  +  if ($mode == 'js') {
       static $id = 1;
       $myid = sprintf("randomPage%02d", $id);
       $id++;
  
  
  


1284498341;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv10452\n\nModified Files:\n      Tag: B_1_1_5\n	config.php.default wiki.php wikilib.php \nLog Message:\n[#315717] merged from trunk\n\n * #315716 fixed get_plugin_info() to parse more general info format.\n * #315707 fixed table parsing problem. trim out quote marks, set id attributes correctly.\n * #315706 fixed last typo bug in the rcsimport plugin\n * #315705 $use_save_refresh=-1; to redirect itself to show saved result without msgs after saving itself\n * #315704 fixed fancy_diff() bug\n * #315703 fixed to support HTTP conditional GET with the rss_rc action\n * #315699 enhanced RecentChanges plugin\n  - added 'change' option to check the changes of pages\n  - fixed to support the identicon(wp-identicon). activated by set $use_avatar=1;\n  - trash, editrange, allauthors(allusers), allentries option added.\n  - fixed to hide bookmark button with nobookmark option\n * #315697 fixed RcsLite bug \n * #315696 fixed HTML markup mismatch/typo\n * #315693 fixed to cache the result of wordindex, paginate etc.\n * #315692 fixed rendering bug of inline codes to render inline formatting rules correctly. {{{#ff0000 '''code'''}}}\n * #315682 fixed recursive redirect bug with $query_prefix == '?' option\n * #315681 fixed HTTP conditional get mtime bug.\n * #315680 fixed latex2png plugin to support HTTP conditional get\n * #315679 fixed TableOfContents macro bug\n  - preserve [[Links]] in headings and remove [[MacroName]] correctly\n  - fixed to hide footnote contents in the TableOfContents macro\n * #315678 parse image attributes correctly.\n * #315660 fixed #alias bug\n * #315658 fixed the last change of the $use_pageindex support.\n * #315563 fixed upper(or parent) page detection with the $use_namespace option\n\n\n
1284498341;wkpark;Update of /cvsroot/moniwiki/moniwiki/css\nIn directory kill.kldp.net:/tmp/cvs-serv10452/css\n\nModified Files:\n      Tag: B_1_1_5\n	_base.css \nLog Message:\n[#315717] merged from trunk\n\n * #315716 fixed get_plugin_info() to parse more general info format.\n * #315707 fixed table parsing problem. trim out quote marks, set id attributes correctly.\n * #315706 fixed last typo bug in the rcsimport plugin\n * #315705 $use_save_refresh=-1; to redirect itself to show saved result without msgs after saving itself\n * #315704 fixed fancy_diff() bug\n * #315703 fixed to support HTTP conditional GET with the rss_rc action\n * #315699 enhanced RecentChanges plugin\n  - added 'change' option to check the changes of pages\n  - fixed to support the identicon(wp-identicon). activated by set $use_avatar=1;\n  - trash, editrange, allauthors(allusers), allentries option added.\n  - fixed to hide bookmark button with nobookmark option\n * #315697 fixed RcsLite bug \n * #315696 fixed HTML markup mismatch/typo\n * #315693 fixed to cache the result of wordindex, paginate etc.\n * #315692 fixed rendering bug of inline codes to render inline formatting rules correctly. {{{#ff0000 '''code'''}}}\n * #315682 fixed recursive redirect bug with $query_prefix == '?' option\n * #315681 fixed HTTP conditional get mtime bug.\n * #315680 fixed latex2png plugin to support HTTP conditional get\n * #315679 fixed TableOfContents macro bug\n  - preserve [[Links]] in headings and remove [[MacroName]] correctly\n  - fixed to hide footnote contents in the TableOfContents macro\n * #315678 parse image attributes correctly.\n * #315660 fixed #alias bug\n * #315658 fixed the last change of the $use_pageindex support.\n * #315563 fixed upper(or parent) page detection with the $use_namespace option\n\n\n
1284498341;wkpark;Update of /cvsroot/moniwiki/moniwiki/lib\nIn directory kill.kldp.net:/tmp/cvs-serv10452/lib\n\nAdded Files:\n      Tag: B_1_1_5\n	JSON.php \nLog Message:\n[#315717] merged from trunk\n\n * #315716 fixed get_plugin_info() to parse more general info format.\n * #315707 fixed table parsing problem. trim out quote marks, set id attributes correctly.\n * #315706 fixed last typo bug in the rcsimport plugin\n * #315705 $use_save_refresh=-1; to redirect itself to show saved result without msgs after saving itself\n * #315704 fixed fancy_diff() bug\n * #315703 fixed to support HTTP conditional GET with the rss_rc action\n * #315699 enhanced RecentChanges plugin\n  - added 'change' option to check the changes of pages\n  - fixed to support the identicon(wp-identicon). activated by set $use_avatar=1;\n  - trash, editrange, allauthors(allusers), allentries option added.\n  - fixed to hide bookmark button with nobookmark option\n * #315697 fixed RcsLite bug \n * #315696 fixed HTML markup mismatch/typo\n * #315693 fixed to cache the result of wordindex, paginate etc.\n * #315692 fixed rendering bug of inline codes to render inline formatting rules correctly. {{{#ff0000 '''code'''}}}\n * #315682 fixed recursive redirect bug with $query_prefix == '?' option\n * #315681 fixed HTTP conditional get mtime bug.\n * #315680 fixed latex2png plugin to support HTTP conditional get\n * #315679 fixed TableOfContents macro bug\n  - preserve [[Links]] in headings and remove [[MacroName]] correctly\n  - fixed to hide footnote contents in the TableOfContents macro\n * #315678 parse image attributes correctly.\n * #315660 fixed #alias bug\n * #315658 fixed the last change of the $use_pageindex support.\n * #315563 fixed upper(or parent) page detection with the $use_namespace option\n\n\n
1284498341;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv10452/plugin\n\nModified Files:\n      Tag: B_1_1_5\n	Diff.php RecentChanges.php admin.php rcsimport.php rss_rc.php \nAdded Files:\n      Tag: B_1_1_5\n	identicon.php \nLog Message:\n[#315717] merged from trunk\n\n * #315716 fixed get_plugin_info() to parse more general info format.\n * #315707 fixed table parsing problem. trim out quote marks, set id attributes correctly.\n * #315706 fixed last typo bug in the rcsimport plugin\n * #315705 $use_save_refresh=-1; to redirect itself to show saved result without msgs after saving itself\n * #315704 fixed fancy_diff() bug\n * #315703 fixed to support HTTP conditional GET with the rss_rc action\n * #315699 enhanced RecentChanges plugin\n  - added 'change' option to check the changes of pages\n  - fixed to support the identicon(wp-identicon). activated by set $use_avatar=1;\n  - trash, editrange, allauthors(allusers), allentries option added.\n  - fixed to hide bookmark button with nobookmark option\n * #315697 fixed RcsLite bug \n * #315696 fixed HTML markup mismatch/typo\n * #315693 fixed to cache the result of wordindex, paginate etc.\n * #315692 fixed rendering bug of inline codes to render inline formatting rules correctly. {{{#ff0000 '''code'''}}}\n * #315682 fixed recursive redirect bug with $query_prefix == '?' option\n * #315681 fixed HTTP conditional get mtime bug.\n * #315680 fixed latex2png plugin to support HTTP conditional get\n * #315679 fixed TableOfContents macro bug\n  - preserve [[Links]] in headings and remove [[MacroName]] correctly\n  - fixed to hide footnote contents in the TableOfContents macro\n * #315678 parse image attributes correctly.\n * #315660 fixed #alias bug\n * #315658 fixed the last change of the $use_pageindex support.\n * #315563 fixed upper(or parent) page detection with the $use_namespace option\n\n\n
wkpark      2010/09/15 06:05:42

  Modified:    .        Tag: B_1_1_5 config.php.default wiki.php
                        wikilib.php
               css      Tag: B_1_1_5 _base.css
               plugin   Tag: B_1_1_5 Diff.php RecentChanges.php admin.php
                        rcsimport.php rss_rc.php
  Added:       lib      Tag: B_1_1_5 JSON.php
               plugin   Tag: B_1_1_5 identicon.php
  Log:
  [#315717] merged from trunk
  
   * #315716 fixed get_plugin_info() to parse more general info format.
   * #315707 fixed table parsing problem. trim out quote marks, set id attributes correctly.
   * #315706 fixed last typo bug in the rcsimport plugin
   * #315705 $use_save_refresh=-1; to redirect itself to show saved result without msgs after saving itself
   * #315704 fixed fancy_diff() bug
   * #315703 fixed to support HTTP conditional GET with the rss_rc action
   * #315699 enhanced RecentChanges plugin
    - added 'change' option to check the changes of pages
    - fixed to support the identicon(wp-identicon). activated by set $use_avatar=1;
    - trash, editrange, allauthors(allusers), allentries option added.
    - fixed to hide bookmark button with nobookmark option
   * #315697 fixed RcsLite bug
   * #315696 fixed HTML markup mismatch/typo
   * #315693 fixed to cache the result of wordindex, paginate etc.
   * #315692 fixed rendering bug of inline codes to render inline formatting rules correctly. {{{#ff0000 '''code'''}}}
   * #315682 fixed recursive redirect bug with $query_prefix == '?' option
   * #315681 fixed HTTP conditional get mtime bug.
   * #315680 fixed latex2png plugin to support HTTP conditional get
   * #315679 fixed TableOfContents macro bug
    - preserve [[Links]] in headings and remove [[MacroName]] correctly
    - fixed to hide footnote contents in the TableOfContents macro
   * #315678 parse image attributes correctly.
   * #315660 fixed #alias bug
   * #315658 fixed the last change of the $use_pageindex support.
   * #315563 fixed upper(or parent) page detection with the $use_namespace option
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.63.2.1  +3 -1      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.63
  retrieving revision 1.63.2.1
  diff -u -r1.63 -r1.63.2.1
  --- config.php.default	28 Aug 2010 04:37:45 -0000	1.63
  +++ config.php.default	14 Sep 2010 21:05:41 -0000	1.63.2.1
  @@ -1,7 +1,7 @@
   <?php
   # This is a default 
   #
  -# $Id: config.php.default,v 1.63 2010/08/28 04:37:45 wkpark Exp $
  +# $Id: config.php.default,v 1.63.2.1 2010/09/14 21:05:41 wkpark Exp $
   #
   $sitename='UnnamedWiki'; # site name
   $data_dir= './data';
  @@ -211,6 +211,7 @@
   $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
  +#$external_target='_blank'; # always open new windows with external URLs
   
   #$use_category=0; # on/off categories list in the edit mode
   #$use_textbrowsers=1; # check some textbased browsers
  @@ -288,3 +289,4 @@
   #$use_indexer=0; # dynamic update the fulltext.db to use FastSearch plugin
   #$use_pageindex=0; # pagename indexer for fast RandomPage
   #$use_delaytime = 60*60*24; # set the default delayed time for caching as 24 hours
  +#$use_avatar='identicon'; # set avatar imgs based on user IP address for anonymous users. default: identicon
  
  
  
  1.600.2.4 +99 -38    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.600.2.3
  retrieving revision 1.600.2.4
  diff -u -r1.600.2.3 -r1.600.2.4
  --- wiki.php	13 Sep 2010 10:23:55 -0000	1.600.2.3
  +++ wiki.php	14 Sep 2010 21:05:41 -0000	1.600.2.4
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.600.2.3 2010/09/13 10:23:55 wkpark Exp $
  +// $Id: wiki.php,v 1.600.2.4 2010/09/14 21:05:41 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.600.2.3 $',1,-1);
  +$_revision = substr('$Revision: 1.600.2.4 $',1,-1);
   $_release = '1.1.6-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -1251,8 +1251,8 @@
       # check minor edits XXX
       $minor=0;
       if (!empty($this->use_minorcheck) or !empty($options['minorcheck'])) {
  -      $info=$page->get_info();
  -      if ($info[1]) {
  +      $info = $page->get_info();
  +      if (!empty($info[0][1])) {
           eval('$check='.$info[1].';');
           if (abs($check) < 3) $minor=1;
         }
  @@ -1438,7 +1438,24 @@
     }
   
     function rlog($pagename,$rev='',$opt='',$oldopt='') {
  -    $rev = (is_numeric($rev) and $rev > 0) ? "-r$rev":'';
  +    $dmark = '';
  +    if ($rev[0] == '>' or $rev[0] == '<') {
  +      $dmark = $rev[0];
  +      $rev = substr($rev, 1);
  +    }
  +    if (is_numeric($rev) and preg_match('@^[0-9]{10}$@', trim($rev))) {
  +      // this is mtime
  +      $date = gmdate('Y/m/d H:i:s', $rev);
  +      $rev = '';
  +      if ($date)
  +        $rev = "-d\\$dmark'$date'";
  +    } else if (is_numeric($rev) and $rev > 0) {
  +      // normal revision
  +      $rev = "-r$rev";
  +    } else {
  +      $rev = '';
  +    }
  +
       $filename=$this->_filename($pagename);
   
       $fp= popen("rlog $opt $oldopt -x,v/ $rev ".$filename.$this->NULL,"r");
  @@ -1796,6 +1813,10 @@
       return $this->fsize;
     }
   
  +  function lines() {
  +    return get_file_lines($this->filename);
  +  }
  +
     function get_raw_body($options='') {
       global $DBInfo;
   
  @@ -1875,35 +1896,38 @@
     function get_info($rev='') {
       global $DBInfo;
   
  -    $info=array('','','','','');
  +    $infos = array();
       if (empty($rev))
         $rev=$this->get_rev('',1);
  -    if (empty($rev)) return $info;
  +    if (empty($rev)) return false;
   
       if (!empty($DBInfo->version_class)) {
         $class=getModule('Version',$DBInfo->version_class);
         $version=new $class ($DBInfo);
         $opt = '';
  +
         $out= $version->rlog($this->name,$rev,$opt);
       } else {
  -      return $info;
  +      return false;
       }
   
       $state=0;
       if (isset($out)) {
         for ($line=strtok($out,"\n"); $line !== false;$line=strtok("\n")) {
           if ($state == 0 and preg_match("/^date:\s.*$/",$line)) {
  +          $info = array();
             $tmp=preg_replace("/date:\s(.*);\s+author:.*;\s+state:.*;/","\\1",rtrim($line));
             $tmp=explode('lines:',$tmp);
             $info[0]=$tmp[0];$info[1]=$tmp[1];
             $state=1;
           } else if ($state) {
             list($info[2],$info[3],$info[4])=explode(';;',$line,3);
  -          break;
  +          $infos[] = $info;
  +          $state = 0;
           }
         }
       }
  -    return $info;
  +    return $infos;
     }
   }
   
  @@ -2510,6 +2534,7 @@
                    "<a id='".($temp=substr($anchor,1))."'></a>";
         break;
       case '*':
  +        if (!empty($opts['nomacro'])) return ''; # remove macro
         return $this->macro_repl('FootNote',$url);
         break;
       case '!':
  @@ -3442,6 +3467,7 @@
         if ($match[1]) {
           if ($match[1] == '^') $attr['valign']='top';
           else $attr['valign']='bottom';
  +        $para = '';
         }
       }
       else if (strlen($para)==1) {
  @@ -3458,28 +3484,27 @@
         default:
           break;
         }
  -      $myattr=$this->_attr('',$sty,$myclass,$align);
  -      $attr=array_merge($attr,$myattr);
       }
  -    else if (preg_match("/^\-(\d+)$/",$para,$match))
  +    else if (preg_match("/^\-(\d+)$/",$para,$match)) {
         $attr['colspan']=$match[1];
  -    else if ($para[0]=='#') {
  +      $para = '';
  +    } else if ($para[0]=='#') {
         $sty['background-color']=strtolower($para);
  -      $myattr=$this->_attr('',$sty,$myclass,$align);
  -      $attr=array_merge($attr,$myattr);
  +      $para = '';
       } else {
         if (substr($para,0,7)=='rowspan') {
  -        $attr['rowspan']=substr($para,7);
  +        $attr['rowspan']=substr($para,8);
  +        $para = '';
         } else if (substr($para,0,3)=='row') {
           // row properties
           $val=substr($para,3);
           $myattr=$this->_attr($val,$rsty);
           $rattr=array_merge($rattr,$myattr);
  -      } else {
  -        $myattr=$this->_attr($para,$sty,$myclass,$align);
  -        $attr=array_merge($attr,$myattr);
  +        continue;
         }
       }
  +    $myattr=$this->_attr($para,$sty,$myclass,$align);
  +    $attr=array_merge($attr,$myattr);
       }
       $myclass=!empty($attr['class']) ? $attr['class']:'';
       unset($attr['class']);
  @@ -3487,10 +3512,10 @@
         $attr['class']=trim($myclass);
   
       $val='';
  -    foreach ($rattr as $k=>$v) $val.=$k.'="'.$v.'" ';
  +    foreach ($rattr as $k=>$v) $val.=$k.'="'.trim($v, "'\"").'" ';
   
       $ret='';
  -    foreach ($attr as $k=>$v) $ret.=$k.'="'.$v.'" ';
  +    foreach ($attr as $k=>$v) $ret.=$k.'="'.trim($v, "'\"").'" ';
       return $ret;
     }
   
  @@ -5309,18 +5334,51 @@
       else $trail=$trailer;
       $trails=array_diff(explode("\t",trim($trail)),array($pagename));
   
  -    $sister_save=$this->sister_on;
  -    $this->sister_on=0;
  -    $this->trail="";
  -    $save = $this->nonexists;
  -    $this->nonexists = 'forcelink';
  -    foreach ($trails as $page) {
  -      $this->trail.=$this->word_repl('"'.$page.'"','','',1,0).'<span class="separator">'.$DBInfo->arrow.'</span>';
  +    if (empty($DBInfo->jstrail)) {
  +      $sister_save=$this->sister_on;
  +      $this->sister_on=0;
  +      $this->trail="";
  +      $save = $this->nonexists;
  +      $this->nonexists = 'forcelink';
  +      foreach ($trails as $page) {
  +        $this->trail.=$this->word_repl('"'.$page.'"','','',1,0).'<span class="separator">'.$DBInfo->arrow.'</span>';
  +      }
  +      $this->nonexists = $save;
  +      $this->trail.= ' '.htmlspecialchars($pagename);
  +      $this->pagelinks=array(); # reset pagelinks
  +      $this->sister_on=$sister_save;
  +    } else {
  +      $url = get_scriptname();
  +      $this->trail = <<<EOF
  +<script type='text/javascript'>
  +(function() {
  +  var url_prefix = "$url";
  +  var query_prefix = "$DBInfo->query_prefix";
  +
  +  // get trails from cookie
  +  var cookieName = "MONI_TRAIL=";
  +  var pos = document.cookie.indexOf(cookieName);
  +  if (pos == -1) return;
  +  var end = document.cookie.indexOf(";", pos + cookieName.length);
  +  if (end == -1) end = document.cookie.length;
  +
  +  trails = unescape(document.cookie.substring(pos + cookieName.length, end)).split("\\t");
  +  var span = document.createElement("span");
  +
  +  // render trails
  +  var str = [];
  +  var trail = document.createElement("span");
  +  for (var i = 0; i < trails.length - 1; i++) {
  +    var url = escape(trails[i]).replace(/\\+/g, "%20");
  +    var txt = decodeURIComponent(escape(trails[i])).replace(/\\+/g, " ");
  +    str[i] = "<a href='" + url_prefix + query_prefix + url + "'>" + txt + "</a>";
  +  }
  +  str[i] = decodeURIComponent(escape(trails[i])).replace(/\\+/, " ");
  +  document.write(str.join("<span class='separator'>$DBInfo->arrow</span>"));
  +})();
  +</script>
  +EOF;
       }
  -    $this->nonexists = $save;
  -    $this->trail.= ' '.htmlspecialchars($pagename);
  -    $this->pagelinks=array(); # reset pagelinks
  -    $this->sister_on=$sister_save;
   
       $this->_vars['trail']=&$this->trail;
   
  @@ -5649,12 +5707,14 @@
       } else {
         $value=!empty($_POST['value']) ? $_POST['value'] : '';
         $action=!empty($_POST['action']) ? $_POST['action'] : $action;
  -      if (empty($action))
  +
  +      if (empty($action)) {
           $dum=explode('----',$pagename,3);
  -      if (isset($dum[0]) && isset($dum[1])) {
  -        $pagename=$dum[0];
  -        $action=$dum[1];
  -        $value=!empty($dum[2]) ? $dum[2] : '';
  +        if (isset($dum[0][0]) && isset($dum[1][0])) {
  +          $pagename=trim($dum[0]);
  +          $action=trim($dum[1]);
  +          $value=isset($dum[2][0]) ? $dum[2] : '';
  +        }
         }
       }
       $goto=!empty($_POST['goto']) ? $_POST['goto'] : '';
  @@ -5694,6 +5754,7 @@
         header("Status: 404 Not found");
       } else {
         #$formatter->get_redirect();
  +      $mtime = $page->mtime();
         $lastmod = gmdate('D, d M Y H:i:s \G\M\T', $mtime);
         $etag = '"'.md5($lastmod).'"';
         header('Last-Modified: '.$lastmod);
  
  
  
  1.344.2.3 +101 -11   moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.344.2.2
  retrieving revision 1.344.2.3
  diff -u -r1.344.2.2 -r1.344.2.3
  --- wikilib.php	10 Sep 2010 08:52:39 -0000	1.344.2.2
  +++ wikilib.php	14 Sep 2010 21:05:41 -0000	1.344.2.3
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.344.2.2 2010/09/10 08:52:39 wkpark Exp $
  +// $Id: wikilib.php,v 1.344.2.3 2010/09/14 21:05:41 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -45,6 +45,32 @@
   }
   
   /**
  + * get the number of lines in a file
  + *
  + * @author wkpark@kldp.org
  + * @since  2010/09/13
  + *
  + */
  +
  +function get_file_lines($filename) {
  +  $fp = fopen($filename, 'r');
  +  if (!is_resource($fp)) return 0;
  +
  +  // test \n or \r or \r\n
  +  $i = 0;
  +  while(($test = fgets($fp, 4096)) and !preg_match("/(\r|\r\n|\n)$/", $test, $match)) $i++;
  +
  +  $i = 1;
  +  $bsz = 1024 * 8;
  +  if (isset($match[1])) {
  +    while ($chunk = fread($fp, $bsz))
  +      $i += substr_count($chunk, $match[1]);
  +  }
  +  fclose($fp);
  +  return $i;
  +}
  +
  +/**
    * Extracted from Gallery Plugin
    *
    * make pagelist to paginate.
  @@ -2221,12 +2247,19 @@
       }
   
       $myrefresh='';
  -    if ($DBInfo->use_save_refresh) {
  -       $sec=$DBInfo->use_save_refresh - 1;
  -       $lnk=$formatter->link_url($formatter->page->urlname,"?action=show");
  -       $myrefresh='Refresh: '.$sec.'; url='.qualifiedURL($lnk);
  +    if (!empty($DBInfo->use_save_refresh)) {
  +      $lnk=$formatter->link_url($formatter->page->urlname,"?action=show");
  +      if ($DBInfo->use_save_refresh > 0) {
  +        $sec=$DBInfo->use_save_refresh - 1;
  +        $myrefresh='Refresh: '.$sec.'; url='.qualifiedURL($lnk);
  +      } else {
  +        $myrefresh = array('Status: 302', 'Location: '. qualifiedURL($lnk));
  +      }
       }
       $formatter->send_header($myrefresh,$options);
  +    if (is_array($myrefresh))
  +      return;
  +
       $formatter->send_title("","",$options);
       $opt['pagelinks']=1;
       # re-generates pagelinks
  @@ -2372,6 +2405,22 @@
   function do_RandomPage($formatter,$options='') {
     global $DBInfo;
   
  +  if (!empty($options['action_mode']) and $options['action_mode'] == 'ajax') {
  +    $val = !empty($options['value']) ? intval($options['value']) : '';
  +
  +    $params = $options;
  +    $params['call'] = 1;
  +    $ret = macro_RandomPage($formatter, $val, $params);
  +    if (function_exists('json_encode')) {
  +        echo json_encode($ret);
  +    } else {
  +        require_once('lib/JSON.php');
  +        $json = new Services_JSON();
  +        echo $json->encode($ret);
  +    }
  +    return;
  +  }
  +
     $max = $DBInfo->getCounter();
     $rand = rand(1,$max);
     if (!empty($DBInfo->use_pageindex)) {
  @@ -2405,16 +2454,24 @@
     return;
   }
   
  -function macro_RandomPage($formatter,$value='') {
  +function macro_RandomPage($formatter, $value = '', $params = array()) {
     global $DBInfo;
   
  -  $test=preg_match("/^(\d+)\s*,?\s?(simple|nobr)?$/",$value,$match);
     $count = '';
     $mode = '';
  -  if ($test) {
  -    $count= intval($match[1]);
  -    $mode= !empty($match[2]) ? $match[2] : '';
  +  if (!empty($value)) {
  +    $vals = get_csv($value);
  +    if (!empty($vals)) {
  +      foreach ($vals as $v) {
  +        if (is_numeric($v)) {
  +          $count = $v;
  +        } else if (in_array($v, array('simple', 'nobr', 'js'))) {
  +          $mode = $v;
  +        }
  +      }
  +    }
     }
  +
     if ($count <= 0) $count=1;
     $counter= $count;
   
  @@ -2425,6 +2482,35 @@
   
     $number=min($max,$counter);
   
  +  if ($mode == 'js') {
  +    static $id = 1;
  +    $myid = sprintf("randomPage%02d", $id);
  +    $id++;
  +    $url = $formatter->link_url('', "?action=randompage/ajax&value=".$number);
  +    return <<<EOF
  +<div id='$myid'>
  +</div>
  +<script type='text/javascript'>
  +/*<![CDATA[*/
  +(function () {
  +   var msg = HTTPGet("$url");
  +   var ret;
  +   if (msg != null && (ret = eval(msg))) {
  +      var div = document.getElementById("$myid");
  +      var ul = document.createElement('UL');
  +      for(var i = 0; i < ret.length; i++) {
  +        var li = document.createElement('LI');
  +        li.innerHTML = ret[i];
  +        ul.appendChild(li);
  +      }
  +      div.appendChild(ul);
  +   }
  +})();
  +/*]]>*/
  +</script>
  +EOF;
  +  }
  +
     // select pages
     $selected = array();
     for ($i = 0; $i < $number; $i++) {
  @@ -2471,6 +2557,9 @@
       $selects[]=$formatter->link_tag(_rawurlencode($item),"",htmlspecialchars($item));
     }
   
  +  if (isset($params['call']))
  +    return $selects;
  +
     if ($count > 1) {
       if (!$mode)
         return "<ul>\n<li>".join("</li>\n<li>",$selects)."</li>\n</ul>";
  @@ -3248,6 +3337,7 @@
    }
    $body=preg_replace("/\{\{\{.+?\}\}\}/s",'',$body);
    $opts = array('nomacro'=>1); // disable macros in headings
  + $wordrule = $formatter->wordrule .= '|'.$formatter->footrule;
    $lines=explode("\n",$body);
    foreach ($lines as $line) {
      $line=preg_replace("/\n$/", "", $line); # strip \n
  @@ -3263,7 +3353,7 @@
      #$head=preg_replace($formatter->baserule,"\\1",$head);
      # do not strip basic wikitags
      $head=preg_replace($formatter->baserule,$formatter->baserepl,$head);
  -   $head=preg_replace("/(".$formatter->wordrule.")/e",
  +   $head=preg_replace("/(".$wordrule.")/e",
        "\$formatter->link_repl('\\1', '', \$opts)",$head);
      if ($simple)
        $head=strip_tags($head,'<b><i><img><sub><sup><del><tt><u><strong>');
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.37.2.2  +5 -0      moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.37.2.1
  retrieving revision 1.37.2.2
  diff -u -r1.37.2.1 -r1.37.2.2
  --- _base.css	10 Sep 2010 08:52:39 -0000	1.37.2.1
  +++ _base.css	14 Sep 2010 21:05:41 -0000	1.37.2.2
  @@ -509,6 +509,11 @@
     display: inline;
   }
   
  +.recentChanges .range {
  +  font-family: Tahoma, sans-serif;
  +  font-size:11px;
  +}
  +
   .wikiMarkup {
     background-color:#ffff00;
     border-left:2px solid #F5E238;
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.2   +806 -0    moniwiki/lib/JSON.php
  
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.24.2.1  +2 -2      moniwiki/plugin/Diff.php
  
  Index: Diff.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Diff.php,v
  retrieving revision 1.24
  retrieving revision 1.24.2.1
  diff -u -r1.24 -r1.24.2.1
  --- Diff.php	11 Aug 2010 14:36:18 -0000	1.24
  +++ Diff.php	14 Sep 2010 21:05:41 -0000	1.24.2.1
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a diff plugin for the MoniWiki
   //
  -// $Id: Diff.php,v 1.24 2010/08/11 14:36:18 wkpark Exp $
  +// $Id: Diff.php,v 1.24.2.1 2010/09/14 21:05:41 wkpark Exp $
   
   
   function code_diff($diff, $options = array()) {
  @@ -238,7 +238,7 @@
     $omarker=0;
     $orig=array();$new=array();
     foreach ($lines as $line) {
  -    if (empty($line[0])) continue;
  +    if (empty($omarker) and empty($line[0])) continue;
       $marker=$line[0];
       if (in_array($marker,array('-','+','@'))) $line=substr($line,1);
       if ($marker=="@") $line='<div class="diff-sep">@'."$line</div>";
  
  
  
  1.51.2.1  +215 -66   moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.51
  retrieving revision 1.51.2.1
  diff -u -r1.51 -r1.51.2.1
  --- RecentChanges.php	31 Aug 2010 03:10:18 -0000	1.51
  +++ RecentChanges.php	14 Sep 2010 21:05:41 -0000	1.51.2.1
  @@ -7,10 +7,10 @@
   // Name: RecentChanges
   // Description: Show RecentChanges of the Wiki
   // URL: MoniWiki:RecentChangesPlugin
  -// Version: $Revision: 1.51 $
  +// Version: $Revision: 1.51.2.1 $
   // Depend: 1.1.3
   // License: GPL
  -// $Id: RecentChanges.php,v 1.51 2010/08/31 03:10:18 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.51.2.1 2010/09/14 21:05:41 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     global $DBInfo;
  @@ -74,10 +74,11 @@
     global $DBInfo;
   
     $checknew=1;
  +  $checkchange=0;
   
     $template_bra="";
     $template=
  -  '$out.= "$icon&nbsp;&nbsp;$title$updated $date . . . . $user $count $extra<br />\n";';
  +  '$out.= "$icon&nbsp;&nbsp;$title$updated $date . . . . $user $count$diff $extra<br />\n";';
     $template_cat="";
     $use_day=1;
     $users = array();
  @@ -99,6 +100,26 @@
       $date_fmt=$args[0];
   
     $strimwidth = isset($DBInfo->rc_strimwidth) ? $DBInfo->rc_strimwidth : 20;
  +  // show last edit entry only
  +  $last_entry_only = 1;
  +  // show last editor only
  +  $last_editor_only = 1;
  +  // show editrange like as MoinMoin
  +  $use_editrange = 0;
  +  // avatar
  +  $use_avatar = 0;
  +  $avatar_type = 'identicon';
  +  if (!empty($DBInfo->use_avatar)) {
  +    $use_avatar = 1;
  +    if (is_string($DBInfo->use_avatar))
  +      $avatar_type = $DBInfo->use_avatar;
  +  }
  +
  +  $avatarlink = qualifiedUrl($formatter->link_url('', '?action='. $avatar_type .'&amp;seed='));
  +
  +  $trash = 0;
  +  $rctype = '';
  +
     $bra = '';
     $cat = '';
     $cat0 = '';
  @@ -116,6 +137,7 @@
       } else {
         if ($arg =="quick") $opts['quick']=1;
         else if ($arg=="nonew") $checknew=0;
  +      else if ($arg=="change") $checkchange=1;
         else if ($arg=="showhost") $showhost=1;
         else if ($arg=="comment") $comment=1;
         else if ($arg=="comments") $comment=1;
  @@ -126,24 +148,43 @@
         else if ($arg=="notitle") $rctitle='';
         else if ($arg=="hits") $use_hits=1;
         else if ($arg=="daysago") $use_daysago=1;
  -      else if ($arg=="simple") {
  +      else if ($arg=="trash") $trash = 1;
  +      else if ($arg=="editrange") $use_editrange = 1;
  +      else if ($arg=="allauthors") $last_editor_only = 0;
  +      else if ($arg=="allusers") $last_editor_only = 0;
  +      else if ($arg=="allentries") $last_entry_only = 0;
  +      else if ($arg=="avatar") $use_avatar = 1;
  +      else if (in_array($arg, array('simple', 'moztab', 'board', 'table'))) $rctype = $arg;
  +    }
  +  }
  +
  +  if (empty($DBInfo->use_counter))
  +    $use_hits = 0;
  +
  +  if (!empty($rctype)) {
  +      if ($rctype=="simple") {
  +        $checkchange = 0;
           $use_day=0;
           $template=
     '$out.= "$icon&nbsp;&nbsp;$title @ $day $date by $user $count $extra<br />\n";';
  -      } else if ($arg=="moztab") {
  +      } else if ($rctype=="moztab") {
           $use_day=1;
           $template= '$out.= "<li>$title $date</li>\n";';
  -      } else if ($arg=="table") {
  +      } else if ($rctype=="table") {
           $bra="<table border='0' cellpadding='0' cellspacing='0' width='100%'>";
           $template=
  -  '$out.= "<tr><td style=\'white-space:nowrap;width:2%\'>$icon</td><td style=\'width:40%\'>$title$updated</td><td class=\'date\' style=\'width:15%\'>$date</td><td>$user $count $extra</td></tr>\n";';
  +  '$out.= "<tr><td style=\'white-space:nowrap;width:2%\'>$icon</td><td style=\'width:40%\'>$title$updated</td><td class=\'date\' style=\'width:15%\'>$date</td><td>$user $count$diff $extra</td></tr>\n";';
           $cat="</table>";
           $cat0="";
  -      } else if ($arg=="board") {
  +      } else if ($rctype=="board") {
           $changed_time_fmt = 'm-d [H:i]';
           $use_day=0;
           $template_bra="<table border='0' cellpadding='0' cellspacing='0' width='100%'>";
  -        $template_bra.="<thead><tr><th colspan='3' class='title'>"._("Title")."</th><th class='date'>".
  +
  +        if (empty($nobookmark)) $cols = 3;
  +        else $cols = 2;
  +
  +        $template_bra.="<thead><tr><th colspan='$cols' class='title'>"._("Title")."</th><th class='date'>".
             _("Change Date").'</th>';
           if (!empty($DBInfo->show_hosts))
             $template_bra.="<th class='author'>"._("Editor").'</th>';
  @@ -152,10 +193,15 @@
             $template_bra.="<th class='hits'>"._("Hits")."</th>";
           $template_bra.="</tr></thead>\n<tbody>\n";
           $template=
  -  '$out.= "<tr$alt><td style=\'white-space:nowrap;width:2%\'>$icon</td><td class=\'title\' style=\'width:40%\'>$title$updated</td><td>$bmark</td><td class=\'date\' style=\'width:15%\'>$date</td>';
  +  '$out.= "<tr$alt><td style=\'white-space:nowrap;width:2%\'>$icon</td><td class=\'title\' style=\'width:40%\'>$title$updated</td>';
  +        if (empty($nobookmark))
  +          $template.= '<td>$bmark</td>';
  +        $template.= '<td class=\'date\' style=\'width:15%\'>$date</td>';
           if (!empty($DBInfo->show_hosts))
             $template.='<td class=\'author\'>$user</td>';
  -        $template.='<td class=\'editinfo\'>$count</td>';
  +        $template.='<td class=\'editinfo\'>$count';
  +        if (!empty($checkchange)) $template.=' $diff';
  +        $template.='</td>';
           if (!empty($DBInfo->use_counter))
             $template.='<td class=\'hits\'>$hits</td>';
           $template_extra=$template.'</tr>\n<tr><td class=\'log\' colspan=\'6\'>$extra</td></tr>\n";';
  @@ -163,8 +209,8 @@
           $template_cat="</tbody></table>";
           $cat0="";
         }
  -    }
     }
  +
     // override days
     $days=!empty($_GET['days']) ? min(abs($_GET['days']),RC_MAX_DAYS):$days;
   
  @@ -187,7 +233,6 @@
     }
     if (empty($tz_offset)) {
       $tz_offset=date("Z");
  -    $tz_offset;
     }
   
     if (!$bookmark) $bookmark=time();
  @@ -225,30 +270,37 @@
     }
   
     $ratchet_day = FALSE;
  +  $editors = array();
  +  $editcount = array();
     foreach ($lines as $line) {
       $parts= explode("\t", $line,6);
       $page_key= $parts[0];
       $ed_time= $parts[2];
  +    $user= $parts[4];
  +    $addr= $parts[1];
  +    if ($user == 'Anonymous')
  +      $user = 'Anonymous-' . $addr;
   
       $day = gmdate('Ymd', $ed_time+$tz_offset);
       if ($day != $ratchet_day) {
         $ratchet_day = $day;
  -      unset($logs);
       }
   
  -    if (!empty($editcount[$page_key])) {
  -      if (!empty($logs[$page_key])) {
  -        $editcount[$page_key]++;
  -        #$editors[$page_key].=':'.$parts[4];
  -        continue;
  -      }
  +    if (!empty($editcount[$day][$page_key])) {
  +      $editors[$day][$page_key][] = $user;
  +      $editcount[$day][$page_key]++;
         continue;
       }
  -    $editcount[$page_key]= 1;
  -    $logs[$page_key]= 1;
  -    #$editors[$page_key]= $parts[4];
  +    if (empty($editcount[$day])) {
  +      $editcount[$day] = array();
  +      $editors[$day] = array();
  +    }
  +
  +    $editcount[$day][$page_key]= 1;
  +
  +    $editors[$day][$page_key] = array();
  +    $editors[$day][$page_key][] = $user;
     }
  -  unset($logs);
   
     $out="";
     $ratchet_day= FALSE;
  @@ -257,12 +309,20 @@
     foreach ($lines as $line) {
       $parts= explode("\t", $line);
       $page_key=$parts[0];
  +    $ed_time = $parts[2];
   
  -    if (!empty($logs[$page_key])) continue;
  +    $day = gmdate('Ymd', $ed_time+$tz_offset);
  +
  +    // show last edit only
  +    if (!empty($last_entry_only) and !empty($logs[$page_key])) continue;
  +    else if (!empty($logs[$page_key][$day])) continue;
   
       $page_name= $DBInfo->keyToPagename($parts[0]);
  +
  +    // show trashed pages only
  +    if ($trash and $DBInfo->hasPage($page_name)) continue;
  +
       $addr= $DBInfo->mask_hostname ? _mask_hostname($parts[1]):$parts[1];
  -    $ed_time= $parts[2];
       $user= $parts[4];
       $log= _stripslashes($parts[5]);
       $act= rtrim($parts[6]);
  @@ -282,18 +342,10 @@
           $title=$page_name;
       }
   
  -    $day = gmdate('Y-m-d', $ed_time+$tz_offset);
  -
       if (! empty($changed_time_fmt)) {
         $date= gmdate($changed_time_fmt, $ed_time+$tz_offset);
         if (!empty($timesago)) {
           $date = _timesago($ed_time, 'Y-m-d', $tz_offset);
  -        /*
  -        $time_diff=(int)($time_current - $ed_time)/60;
  -        if ($time_diff < 1440) {
  -          $date=sprintf(_("[%sh %sm ago]"),(int)($time_diff/60),$time_diff%60);
  -        }
  -        */
         }
       }
   
  @@ -319,28 +371,51 @@
           $bmark=$formatter->link_to($bookmark_action ."&amp;time=$ed_time".$daysago,_("Bookmark"), 'class="button-small"');
         }
       }
  -    if (empty($use_day)) {
  +    if (empty($use_day) and empty($nobookmark)) {
         $date=$formatter->link_to($bookmark_action ."&amp;time=$ed_time".$daysago,$date);
       }
   
       $pageurl=_rawurlencode($page_name);
   
       #print $ed_time."/".$bookmark."//";
  +    $diff = '';
       $updated = '';
       if (!$DBInfo->hasPage($page_name))
         $icon= $formatter->link_tag($pageurl,"?action=info",$formatter->icon['del']);
       else if ($ed_time > $bookmark) {
         $icon= $formatter->link_tag($pageurl,"?action=diff&amp;date=$bookmark",$formatter->icon['diff']);
         $updated= ' '.$formatter->link_tag($pageurl,"?action=diff&amp;date=$bookmark",$formatter->icon['updated']);
  -      if ($checknew) {
  +
  +      if ($checknew or $checkchange)
           $p= new WikiPage($page_name);
  +
  +      $add = 0;
  +      $del = 0;
  +      if ($checknew) {
           $v= $p->get_rev($bookmark);
           if (empty($v)) {
             $icon=
               $formatter->link_tag($pageurl,"?action=info",$formatter->icon['show']);
             $updated = ' '.$formatter->link_tag($pageurl,"?action=info",$formatter->icon['new']);
  +          $add+= $p->lines();
  +        }
  +      }
  +      if ($checkchange) {
  +        $infos = $p->get_info('>'.$bookmark);
  +        foreach ($infos as $inf) {
  +          $tmp = explode(' ', trim($inf[1]));
  +          if (isset($tmp[1])) {
  +            $add+= $tmp[0];
  +            $del+= $tmp[1];
  +          }
           }
  +
  +        if (!empty($add))
  +          $diff.= '<span class="diff-added">+'.$add.'</span>';
  +        if (!empty($del))
  +          $diff.= '<span class="diff-removed">'.$del.'</span>';
         }
  +
       } else
         $icon= $formatter->link_tag($pageurl,"?action=diff",$formatter->icon['diff']);
   
  @@ -359,41 +434,113 @@
       }
   
       if (!empty($DBInfo->show_hosts)) {
  -      if (!empty($showhost) && $user == 'Anonymous')
  -        $user= $addr;
  -      else {
  -        $ouser= $user;
  -        if (isset($users[$ouser])) $user = $users[$ouser];
  -        else if (!empty($DBInfo->use_nick)) {
  -          $uid = $user;
  -          if (($p = strpos($uid,' '))!==false)
  -            $uid= substr($uid, 0, $p);
  -          $u = $DBInfo->udb->getUser($uid);
  -          if (!empty($u->info)) {
  -            if (!empty($DBInfo->interwiki['User'])) {
  -              $user = $formatter->link_repl('[wiki:User:'.$uid.' '.$u->info['nick'].']');
  -            } else if (!empty($u->info['home'])) {
  -              $user = $formatter->link_repl('['.$u->info['home'].' '.$u->info['nick'].']');
  -            } else if (!empty($u->info['nick'])) {
  -              $user = $formatter->link_repl('[wiki:'.$uid.' '.$u->info['nick'].']');
  +      $last_editor = $user;
  +
  +      if ($last_editor_only) {
  +        // show last editor only
  +        $editor = array_pop($editors[$day][$page_key]);
  +      } else {
  +        // all show all authors
  +        // count edit number
  +        // make range list
  +        if ($use_editrange) { // MoinMoin like edit range
  +          $editor_list = array();
  +          foreach ($editors[$day][$page_key] as $idx=>$name) {
  +            if (empty($editor_list[$name])) $editor_list[$name] = array();
  +            $editor_list[$name][] = $idx + 1;
  +          }
  +          $editor_counts = array();
  +
  +          foreach ($editor_list as $name=>$edits) {
  +            $range = ',';
  +            if (isset($edits[1])) {
  +              $edits[] = 999999; // MoinMoin method
  +              for($i = 0, $sz = count($edits)-1; $i < $sz; $i++) {
  +                if (substr($range, -1) == ',') {
  +                  $range.= $edits[$i];
  +                  if ($edits[$i] + 1 == $edits[$i+1])
  +                    $range.= '-';
  +                  else
  +                    $range.= ',';
  +                } else {
  +                  if ($edits[$i] + 1 != $edits[$i+1])
  +                    $range.= $edits[$i].',';
  +                }
  +              }
  +              $range = trim($range, ',-');
  +              $editor_counts[$name] = $range;
  +            } else {
  +              $editor_counts[$name] = $edits[0];
               }
             }
  -          $users[$ouser] = $user;
  -        } else if (strpos($user,' ')!==false) {
  -          $user= $formatter->link_repl($user);
  -          $users[$ouser] = $user;
  -        } else if ($DBInfo->hasPage($user)) {
  -          $user= $formatter->link_tag(_rawurlencode($user),"",$user);
  -          $users[$ouser] = $user;
  -        } else
  -          $user= $user;
  +        } else {
  +          $editor_counts = array_count_values($editors[$day][$page_key]);
  +        }
  +        $editor = array_keys($editor_counts);
  +      }
  +
  +      $all_user = array();
  +      foreach ((array)$editor as $user) {
  +        if (!$last_editor_only and isset($editor[1]) and isset($editor_counts[$user]))
  +          $count = " <span class='range'>[".$editor_counts[$user]."]</span>";
  +        else
  +          $count = '';
  +
  +        if (!empty($showhost) && substr($user, 0, 9) == 'Anonymous') {
  +          $user= $addr;
  +          if (!empty($use_avatar)) {
  +            $crypted = crypt($addr, $addr);
  +            $mylnk = preg_replace('/seed=/', 'seed='.$crypted, $avatarlink);
  +            $user = '<img src="'.$mylnk.'" style="width:16px;height:16px;vertical-align:middle" alt="avatar" />Anonymous';
  +          }
  +        } else {
  +          $ouser= $user;
  +          if (isset($users[$ouser])) $user = $users[$ouser];
  +          else if (!empty($DBInfo->use_nick)) {
  +            $uid = $user;
  +            if (($p = strpos($uid,' '))!==false)
  +              $uid= substr($uid, 0, $p);
  +            $u = $DBInfo->udb->getUser($uid);
  +            if (!empty($u->info)) {
  +              if (!empty($DBInfo->interwiki['User'])) {
  +                $user = $formatter->link_repl('[wiki:User:'.$uid.' '.$u->info['nick'].']');
  +              } else if (!empty($u->info['home'])) {
  +                $user = $formatter->link_repl('['.$u->info['home'].' '.$u->info['nick'].']');
  +              } else if (!empty($u->info['nick'])) {
  +                $user = $formatter->link_repl('[wiki:'.$uid.' '.$u->info['nick'].']');
  +              }
  +            }
  +            $users[$ouser] = $user;
  +          } else if (strpos($user,' ')!==false) {
  +            $user= $formatter->link_repl($user);
  +            $users[$ouser] = $user;
  +          } else if ($DBInfo->hasPage($user)) {
  +            $user= $formatter->link_tag(_rawurlencode($user),"",$user);
  +            $users[$ouser] = $user;
  +          } else {
  +            if (substr($user, 0, 9) == 'Anonymous') {
  +              $addr = substr($user, 10);
  +              $user = 'Anonymous';
  +            }
  +            if (!empty($use_avatar)) {
  +              $crypted = crypt($addr, $addr);
  +              $mylnk = preg_replace('/seed=/', 'seed='.$crypted, $avatarlink);
  +              $user = '<img src="'.$mylnk.'" style="width:16px;height:16px;vertical-align:middle" alt="avatar" />'.$user;
  +            }
  +          }
  +        }
  +        $all_user[] = $user.$count;
         }
  +      if (isset($editor[1]))
  +        $user = '<span class="rc-editors"><span>'.implode("</span> <span>", $all_user)."</span></span>\n";
  +      else
  +        $user = $all_user[0];
       } else {
         $user = '&nbsp;';
       }
       $count=""; $extra="";
  -    if ($editcount[$page_key] > 1)
  -      $count=sprintf(_("%s changes"), " <span class='num'>".$editcount[$page_key]."</span>");
  +    if ($editcount[$day][$page_key] > 1)
  +      $count=sprintf(_("%s changes"), " <span class='num'>".$editcount[$day][$page_key]."</span>");
       if (!empty($comment) && !empty($log))
         $extra="&nbsp; &nbsp; &nbsp; <small name='word-break'>$log</small>";
   
  @@ -404,10 +551,12 @@
         eval($template);
       }
   
  -    $logs[$page_key]= 1;
  +    if (empty($logs[$page_key]))
  +      $logs[$page_key] = array();
  +    $logs[$page_key][$day] = 1;
       ++$ii;
     }
     return $btnlist.'<div class="recentChanges">'.$rctitle.$template_bra.$out.$template_cat.$cat0.'</div>';
   }
  -// vim:et:sts=2:
  +// vim:et:sts=2:sw=2:
   ?>
  
  
  
  1.4.2.1   +10 -7     moniwiki/plugin/admin.php
  
  Index: admin.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/admin.php,v
  retrieving revision 1.4
  retrieving revision 1.4.2.1
  diff -u -r1.4 -r1.4.2.1
  --- admin.php	23 Aug 2010 15:14:10 -0000	1.4
  +++ admin.php	14 Sep 2010 21:05:41 -0000	1.4.2.1
  @@ -9,13 +9,13 @@
   // Name: Admin
   // Description: Admin Plugin
   // URL: MoniWiki:AdminPlugin
  -// Version: $Revision: 1.4 $
  +// Version: $Revision: 1.4.2.1 $
   // Depend: 1.1.3
   // License: GPL
   //
   // Usage: ?action=admin
   //
  -// $Id: admin.php,v 1.4 2010/08/23 15:14:10 wkpark Exp $
  +// $Id: admin.php,v 1.4.2.1 2010/09/14 21:05:41 wkpark Exp $
   
   function get_plugin_info($plugin_file) {
       // wordpress style management
  @@ -25,8 +25,12 @@
           while(1) {
               $l=fgets($fp,2048);
               if (!rtrim($l)) break; // XXX
  -            if ($l{0}==' ' and $l{1}=='*') {
  -                if ($l{2}==' ' and $l{3}!='@') {
  +            if ($l[0] == ' ' and $l[1] == '*') {
  +                if (preg_match('@^ \* ([A-Z][A-Za-z0-9]+(?:\s?[A-Z][A-Za-z0-9]+)?)\s?\:\s?(.*)@', $l, $m)) {
  +                    $k = strtolower($m[1]);
  +                    $v = $m[2];
  +                    $info[$k] = !empty($info[$k]) ? $info[$k] . ',' . $v : $v;
  +                } else if ($l[2] == ' ' and $l[3] != '@') {
                       $desc.=substr($l,3);
                   } else if (substr($l,1,3)=='* @') {
                       $l=substr($l,4);
  @@ -34,7 +38,7 @@
                       $nk=strtolower($k);
                       $info[$nk]=!empty($info[$nk]) ? $info[$nk].','.$v:$v;
                   }
  -            } else if ($l{1}=='/' and $l{2}==' ') {
  +            } else if ($l[1]=='/' and $l[2]==' ') {
                   $l=substr($l,3);
                   if (($p=strpos($l,':'))!== false) {
                       $k=substr($l,0,$p);
  @@ -46,12 +50,11 @@
           }
           fclose($fp);
       }
  -
       if (!$info) return array();
   
       $plugin_info = array();
       $fields = array('name', 'description', 'author', 'license', 'url', 'depend', 'author url');
  -    $alias = array('desc'=>'description', 'dependency'=>'depend', 'uri'=>'url', 'author uri'=>'author url');
  +    $alias = array('desc'=>'description', 'dependency'=>'depend', 'uri'=>'url', 'author uri'=>'author url', 'plugin name'=>'name');
   
       foreach ($info as $k=>$v) {
           $kk = $k;
  
  
  
  1.5.2.1   +4 -3      moniwiki/plugin/rcsimport.php
  
  Index: rcsimport.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rcsimport.php,v
  retrieving revision 1.5
  retrieving revision 1.5.2.1
  diff -u -r1.5 -r1.5.2.1
  --- rcsimport.php	23 Aug 2010 15:14:10 -0000	1.5
  +++ rcsimport.php	14 Sep 2010 21:05:41 -0000	1.5.2.1
  @@ -5,7 +5,7 @@
   //
   // Usage: [[Test]]
   //
  -// $Id: rcsimport.php,v 1.5 2010/08/23 15:14:10 wkpark Exp $
  +// $Id: rcsimport.php,v 1.5.2.1 2010/09/14 21:05:41 wkpark Exp $
   
   function do_post_rcsimport($formatter,$options) {
       global $DBInfo;
  @@ -114,8 +114,9 @@
               if (!empty($t))
                   $content = $t;
           }
  -        if (!isset($content[0]))
  -            $version->import($options['page'],$content);
  +        if (isset($content[0])) {
  +            $test = $version->import($options['page'],$content);
  +        }
   
           $options['value'] = $options['page'];
           do_goto($formatter, $options);
  
  
  
  1.20.2.1  +32 -2     moniwiki/plugin/rss_rc.php
  
  Index: rss_rc.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/rss_rc.php,v
  retrieving revision 1.20
  retrieving revision 1.20.2.1
  diff -u -r1.20 -r1.20.2.1
  --- rss_rc.php	9 Jul 2010 11:03:27 -0000	1.20
  +++ rss_rc.php	14 Sep 2010 21:05:41 -0000	1.20.2.1
  @@ -3,11 +3,12 @@
   // All rights reserved. Distributable under GPL see COPYING
   // rss_rc action plugin for the MoniWiki
   //
  -// $Id: rss_rc.php,v 1.20 2010/07/09 11:03:27 wkpark Exp $
  +// $Id: rss_rc.php,v 1.20.2.1 2010/09/14 21:05:41 wkpark Exp $
  +
  +define('RSS_DEFAULT_DAYS',7);
   
   function do_rss_rc($formatter,$options) {
     global $DBInfo;
  -define('RSS_DEFAULT_DAYS',7);
   
     $days=!empty($DBInfo->rc_days) ? $DBInfo->rc_days:RSS_DEFAULT_DAYS;
     $options['quick']=1;
  @@ -21,6 +22,35 @@
         $options[$opt]=1; // FIXME
       }
     }
  +
  +  // HTTP conditional get
  +  $mtime = $DBInfo->mtime();
  +  $lastmod = gmdate('D, d M Y H:i:s \G\M\T', $mtime);
  +
  +  // make etag based on some options and mtime.
  +  $check_opts = array('quick', 'items', 'oe', 'diff', 'raw', 'nomsg', 'summary');
  +  $check = array();
  +  foreach ($check_opts as $c) {
  +    if (isset($options[$c])) $check[$c] = $options[$c];
  +  }
  +
  +  $etag = md5($mtime . $DBInfo->logo_img . serialize($check));
  +
  +  $headers = array();
  +  $headers[] = 'Pragma: cache';
  +  $maxage = 60*60*24*7;
  +  $headers[] = 'Cache-Control: private, max-age='.$maxage;
  +  $headers[] = 'Last-Modified: '.$lastmod;
  +  $headers[] = 'ETag: "'.$etag.'"';
  +  $need = http_need_cond_request($mtime, $lastmod, $etag);
  +  if (!$need)
  +    $headers[] = 'HTTP/1.0 304 Not Modified';
  +  foreach ($headers as $h)
  +    header($h);
  +  if (!$need) {
  +    @ob_end_clean();
  +    return;
  +  }
       
     $time_current= time();
   #  $secs_per_day= 60*60*24;
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.2   +296 -0    moniwiki/plugin/identicon.php
  
  
  
  


1284626756;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv8233/plugin\n\nModified Files:\n	RecentChanges.php \nLog Message:\n[#315699] use $showhost option correctly\n * check newly added pages with the nobookmark option.\n * show new icons for newly added pages with the nobookmark option.\n  - "new=<time>" option added to check newly added pages with the nobookmark option. new=60*60*24 means 1-day long period for news.\n * trim() macro options correctly\n\n
wkpark      2010/09/16 17:45:57

  Modified:    plugin   RecentChanges.php
  Log:
  [#315699] use $showhost option correctly
   * check newly added pages with the nobookmark option.
   * show new icons for newly added pages with the nobookmark option.
    - "new=<time>" option added to check newly added pages with the nobookmark option. new=60*60*24 means 1-day long period for news.
   * trim() macro options correctly
  
  Revision  Changes    Path
  1.56      +23 -15    moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.55
  retrieving revision 1.56
  diff -u -r1.55 -r1.56
  --- RecentChanges.php	13 Sep 2010 09:31:31 -0000	1.55
  +++ RecentChanges.php	16 Sep 2010 08:45:56 -0000	1.56
  @@ -7,10 +7,10 @@
   // Name: RecentChanges
   // Description: Show RecentChanges of the Wiki
   // URL: MoniWiki:RecentChangesPlugin
  -// Version: $Revision: 1.55 $
  +// Version: $Revision: 1.56 $
   // Depend: 1.1.3
   // License: GPL
  -// $Id: RecentChanges.php,v 1.55 2010/09/13 09:31:31 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.56 2010/09/16 08:45:56 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     global $DBInfo;
  @@ -127,11 +127,12 @@
     foreach ($args as $arg) {
       $arg=trim($arg);
       if (($p=strpos($arg,'='))!==false) {
  -      $k=substr($arg,0,$p);
  -      $v=substr($arg,$p+1);
  +      $k=trim(substr($arg,0,$p));
  +      $v=trim(substr($arg,$p+1));
         if ($k=='item') $opts['items']=min((int)$v,RC_MAX_ITEMS);
         else if ($k=='days') $days=min(abs($v),RC_MAX_DAYS);
         else if ($k=='ago') $opts['ago']=abs($v);
  +      else if ($k=="new") $checknew=$v;
         else if ($k=='strimwidth' and is_numeric($k) and (abs($v) > 15 or $v == 0))
           $strimwidth =abs($v);
       } else {
  @@ -160,6 +161,8 @@
   
     if (empty($DBInfo->use_counter))
       $use_hits = 0;
  +  if (empty($DBInfo->show_hosts))
  +    $showhost = 0;
   
     if (!empty($rctype)) {
         if ($rctype=="simple") {
  @@ -186,10 +189,10 @@
   
           $template_bra.="<thead><tr><th colspan='$cols' class='title'>"._("Title")."</th><th class='date'>".
             _("Change Date").'</th>';
  -        if (!empty($DBInfo->show_hosts))
  +        if (!empty($showhost))
             $template_bra.="<th class='author'>"._("Editor").'</th>';
           $template_bra.="<th class='editinfo'>"._("Changes").'</th>';
  -        if (!empty($DBInfo->use_counter))
  +        if (!empty($use_hits))
             $template_bra.="<th class='hits'>"._("Hits")."</th>";
           $template_bra.="</tr></thead>\n<tbody>\n";
           $template=
  @@ -197,12 +200,12 @@
           if (empty($nobookmark))
             $template.= '<td>$bmark</td>';
           $template.= '<td class=\'date\' style=\'width:15%\'>$date</td>';
  -        if (!empty($DBInfo->show_hosts))
  +        if (!empty($showhost))
             $template.='<td class=\'author\'>$user</td>';
           $template.='<td class=\'editinfo\'>$count';
           if (!empty($checkchange)) $template.=' $diff';
           $template.='</td>';
  -        if (!empty($DBInfo->use_counter))
  +        if (!empty($use_hits))
             $template.='<td class=\'hits\'>$hits</td>';
           $template_extra=$template.'</tr>\n<tr><td class=\'log\' colspan=\'6\'>$extra</td></tr>\n";';
           $template.='</tr>\n";';
  @@ -235,7 +238,11 @@
       $tz_offset=date("Z");
     }
   
  -  if (!$bookmark) $bookmark=time();
  +  if (!$bookmark or !empty($nobookmark)) {
  +    if (!empty($checknew) and preg_match('/^\d+(\s*\*\s*\d+)*$/',$checknew))
  +      $checknew = eval('return '.$checknew. ';');
  +    $bookmark = strtotime(date('Y-m-d', time() - $checknew).' 00:00:00');
  +  }
   
     $time_current= time();
     $secs_per_day= 60*60*24;
  @@ -282,9 +289,9 @@
         $user = 'Anonymous-' . $addr;
   
       $day = gmdate('Ymd', $ed_time+$tz_offset);
  -    if ($day != $ratchet_day) {
  -      $ratchet_day = $day;
  -    }
  +    //if ($day != $ratchet_day) {
  +    //  $ratchet_day = $day;
  +    //}
   
       if (!empty($editcount[$day][$page_key])) {
         $editors[$day][$page_key][] = $user;
  @@ -343,8 +350,9 @@
       }
   
       if (! empty($changed_time_fmt)) {
  -      $date= gmdate($changed_time_fmt, $ed_time+$tz_offset);
  -      if (!empty($timesago)) {
  +      if (empty($timesago)) {
  +        $date= gmdate($changed_time_fmt, $ed_time+$tz_offset);
  +      } else {
           $date = _timesago($ed_time, 'Y-m-d', $tz_offset);
         }
       }
  @@ -433,7 +441,7 @@
         $hits = $DBInfo->counter->pageCounter($page_name);
       }
   
  -    if (!empty($DBInfo->show_hosts)) {
  +    if (!empty($showhost)) {
         $last_editor = $user;
   
         if ($last_editor_only) {
  
  
  


1284638890;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv5179\n\nModified Files:\n	wiki.php \nLog Message:\n[#315722] track the position of the raw wikitext and support auto-scrolling in the textarea of edit form\n\n
1284638890;wkpark;Update of /cvsroot/moniwiki/moniwiki/local\nIn directory kill.kldp.net:/tmp/cvs-serv5179/local\n\nModified Files:\n	textarea.js \nAdded Files:\n	sse.js \nLog Message:\n[#315722] track the position of the raw wikitext and support auto-scrolling in the textarea of edit form\n\n
wkpark      2010/09/16 21:08:11

  Modified:    .        wiki.php
               local    textarea.js
  Added:       local    sse.js
  Log:
  [#315722] track the position of the raw wikitext and support auto-scrolling in the textarea of edit form
  
  Revision  Changes    Path
  1.621     +18 -7     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.620
  retrieving revision 1.621
  diff -u -r1.620 -r1.621
  --- wiki.php	14 Sep 2010 12:36:45 -0000	1.620
  +++ wiki.php	16 Sep 2010 12:08:10 -0000	1.621
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.620 2010/09/14 12:36:45 wkpark Exp $
  +// $Id: wiki.php,v 1.621 2010/09/16 12:08:10 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.620 $',1,-1);
  +$_revision = substr('$Revision: 1.621 $',1,-1);
   $_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -1760,7 +1760,9 @@
   
         $notused=array();
         $pilines=array();
  +      $body_start = 0;
         while ($body and $body[0] == '#') {
  +        $body_start++;
           # extract first line
           list($line, $body)= explode("\n", $body,2);
           if ($line=='#') break;
  @@ -1802,6 +1804,7 @@
       if (!empty($update_body)) $this->page->write($body." "); # workaround XXX
       #if ($update_body) $this->page->write($body);
       $pi['raw']=!empty($piline) ? $piline : '';
  +    $pi['start_line'] = $body_start;
       return $pi;
     }
   
  @@ -3217,7 +3220,10 @@
   
       $formatter=&$this;
   
  +    $this->_lidx = isset($this->pi['start_line']) ? $this->pi['start_line'] : 0;
       foreach ($lines as $line) {
  +      $this->_lidx++;
  +      $lid = $this->_lidx;
         # empty line
         if (!strlen($line) and empty($oline)) {
           if ($in_pre) { $this->pre_line.="\n";continue;}
  @@ -3548,14 +3554,15 @@
             $anchor_id='sect-'.$this->sect_num;
             $anchor="<a id='$anchor_id'></a>";
           }
  -        $attr='';
  +        $attr=' id="line-'.$lid.'"';
           if (!empty($DBInfo->use_folding)) {
             if ($DBInfo->use_folding == 1) {
  -            $attr=" onclick=\"document.getElementById('sc-$this->sect_num').style.display=document.getElementById('sc-$this->sect_num').style.display!='none'? 'none':'block';\"";
  +            $attr.=" onclick=\"document.getElementById('sc-$this->sect_num').style.display=document.getElementById('sc-$this->sect_num').style.display!='none'? 'none':'block';\"";
             } else {
  -            $attr=" onclick=\"foldingSection(this,'sc-$this->sect_num');\"";
  +            $attr.=" onclick=\"foldingSection(this,'sc-$this->sect_num');\"";
             }
           }
  +        $lid = '';
   
           $line=$anchor.$edit.$this->head_repl(strlen($m[1]),$m[2],$headinfo,$attr);
           $dummy='';
  @@ -3681,10 +3688,14 @@
            }
            $this->nobr=1;
         }
  +
  +      $lidx = '';
  +      if ($lid) $lidx = "<span class='line-anchor' id='line-".$lid."'></span>";
  +
         if ($this->auto_linebreak && !$in_table && !$this->nobr)
  -        $text.=$line."<br />\n"; 
  +        $text.=$line.$lidx."<br />\n"; 
         else
  -        $text.=$line ? $line."\n":'';
  +        $text.=$line ? $line.$lidx."\n":'';
         $this->nobr=0;
         # empty line for quoted div
         if (!$this->auto_linebreak and !$in_pre and trim($line) =='')
  
  
  
  1.9       +2 -2      moniwiki/local/textarea.js
  
  Index: textarea.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/textarea.js,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- textarea.js	19 Jun 2010 07:16:27 -0000	1.8
  +++ textarea.js	16 Sep 2010 12:08:10 -0000	1.9
  @@ -1,4 +1,4 @@
  -// $Id: textarea.js,v 1.8 2010/06/19 07:16:27 wkpark Exp $
  +// $Id: textarea.js,v 1.9 2010/09/16 12:08:10 wkpark Exp $
   // $origId: textarea.js,v 1.9 2006/04/14 13:48:56 killes Exp $
   // from drupal
   // many functions are imported from drupal.js to eliminate dependency
  @@ -244,8 +244,8 @@
     }
     else {
       window.onload = function() {
  -      oldOnload();
         textAreaAutoAttach();
  +      oldOnload();
       }
     }
     /* addLoadEvent(textAreaAutoAttach); */
  
  
  
  1.1                  moniwiki/local/sse.js
  
  Index: sse.js
  ===================================================================
  /**
   * try to get the line-anchor to select the right position of the wikitext
   *
   * @author wkpark at kldp.org
   * @since  2010/09/16
   *
   * $Id: sse.js,v 1.1 2010/09/16 12:08:10 wkpark Exp $
   */
  
  /**
   * try to find line-anchor to get the line number of wikitext
   *
   */
  function edithandler(ev) {
      var e = ev ? ev : window.event; // for IE
      var sel = window.getSelection ? window.getSelection():
          (document.getSelection ? document.getSelection():
          document.selection.createRange());
  
      var node;
      if (sel.focusNode) {
          node = sel.focusNode;
  
          if (node.nodeType == 3)
              node = node.parentNode;
      } else {
          // IE6
          node = sel.parentElement();
      }
  
      var nc = node;
      
      if (!node.id || !node.id.match(/^line-/)) {
          // try to find line-anchor
          while(node) {
              nc = node.firstChild;
  
              while (nc) {
                  var name = nc.tagName + '';
                  if (name == 'SPAN' && nc.id.match(/^line-/)) break;
                  if (name.match(/^H/) && nc.id.match(/^line-/)) break;
                  nc = nc.nextSibling;
              }
              if (nc)
                  break;
              node = node.nextSibling;
          }
      }
  
      // is it found ?
      if (nc) {
          var loc = location + '';
          var p;
          if (p = loc.indexOf('action=')) {
              loc = loc.substring(0, p - 1);
          } else if (p = loc.indexOf('#')) {
              loc = loc.substring(0, p);
          }
          location = loc + _ap + 'action=edit#' + nc.id;
      }
  
      // silently ignore.
      return false;
  }
  
  (function() {
      // from http://wiki.sheep.art.pl/Textarea%20Scrolling
      // with some fixes by wkpark at kldp.org
      function scrollTo(textarea, text, offset) {
          var style;
          try { style = window.getComputedStyle(textarea, ''); }
          catch(e) { return false; };
  
          // Calculate how far to scroll, by putting the text that is to be
          // above the fold in a DIV, and checking the DIV's height.
          var pre = document.createElement('pre');
          textarea.parentNode.appendChild(pre);
  
          pre.style.lineHeight = style.lineHeight;
          pre.style.fontFamily = style.fontFamily;
          pre.style.fontSize = style.fontSize;
          pre.style.padding = pre.style.padding;
          pre.style.margin = pre.style.margin;
          pre.style.letterSpacing = style.letterSpacing;
          pre.style.border = style.border;
          pre.style.outline = style.outline;
          pre.style.overflow = 'scroll-y';
          pre.style.height = 0; // set height to suppress flickering
          try { pre.style.whiteSpace = "-moz-pre-wrap" } catch(e) {};
          try { pre.style.whiteSpace = "-o-pre-wrap" } catch(e) {};
          try { pre.style.whiteSpace = "-pre-wrap" } catch(e) {};
          try { pre.style.whiteSpace = "pre-wrap" } catch(e) {};
  
          pre.textContent = text; // put your text here
          var scroll = pre.scrollHeight + 0;
          pre.textContent = "";
          if (scroll > offset) scroll -= offset;
          textarea.parentNode.removeChild(pre); // remove
          return scroll;
      }
  
      function focusEditor() {
          var txtarea = document.getElementById('wikicontent');
          if (txtarea) {
              txtarea.focus();
  
              var loc = location + '';
              var p = loc.indexOf('#line-', 1);
              var no = 0;
              if (p > 0)
                  var no = loc.substr(p + 6);
              if (!no)
                  return;
  
              var txt = txtarea.value.replace(/\r/g, ''); // remove \r for IE
              var pos = 1; // ViTA trick.
              var startPos = 0, endPos = 0;
  
              // find selected line
              var n = no;
              while (pos && --n) pos = 1 + txt.indexOf("\n", pos);
              startPos = (pos) ? pos : 0;
              // FIXME ? how can I select only selected words ?
              endPos = txt.indexOf("\n", startPos);
  
              if (txtarea.selectionStart || txtarea.selectionStart == '0') {
                  // Mozilla
                  var scrollTop = txtarea.scrollTop; // save
  
                  // goto
                  txtarea.selectionStart = startPos;
                  txtarea.selectionEnd = endPos;
  
                  var scroll = scrollTo(txtarea, txt.substr(0, startPos), 50);
                  txtarea.scrollTop = scroll;
              } else if (document.selection && !is_gecko && !is_opera) {
                  // IE
                  txtarea.focus();
                  var r = document.selection.createRange();
                  var range = r.duplicate();
  
                  range.moveStart('character', startPos);
                  range.moveEnd('character', endPos - startPos);
                  r.setEndPoint('StartToStart', range);
                  range.select();
              }
  
          // reposition cursor if possible
          if (txtarea.createTextRange)
                  txtarea.caretPos = document.selection.createRange().duplicate();
          }
      }
  
      // onload
      var oldOnload = window.onload;
      if (typeof window.onload != 'function') {
          window.onload = focusEditor;
      } else {
          window.onload = function() {
              oldOnload();
              focusEditor();
          }
      }
  })();
  
  // vim:et:sts=4:sw=4:
  
  
  


1284639457;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv9239/plugin\n\nModified Files:\n	Info.php \nLog Message:\n[#315702] support avatar with $use_avatar option in the info page\n\n
wkpark      2010/09/16 21:17:38

  Modified:    plugin   Info.php
  Log:
  [#315702] support avatar with $use_avatar option in the info page
  
  Revision  Changes    Path
  1.33      +12 -1     moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Info.php,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- Info.php	20 Aug 2010 08:28:53 -0000	1.32
  +++ Info.php	16 Sep 2010 12:17:37 -0000	1.33
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Info plugin for the MoniWiki
   //
  -// $Id: Info.php,v 1.32 2010/08/20 08:28:53 wkpark Exp $
  +// $Id: Info.php,v 1.33 2010/09/16 12:17:37 wkpark Exp $
   
   function _parse_rlog($formatter,$log,$options=array()) {
     global $DBInfo;
  @@ -20,6 +20,13 @@
     if (!$formatter->page->exists()) {
       $actions['revert'] = 'revert';
     }
  +  if (!empty($DBInfo->use_avatar)) {
  +    if (is_string($DBInfo->use_avatar))
  +      $type = $DBInfo->use_avatar;
  +    else
  +      $type = 'identicon';
  +    $avatarlink = qualifiedUrl($formatter->link_url('', '?action='. $type .'&amp;seed='));
  +  }
   
     $diff_action = null;
     if (isset($actions['diff'])) {
  @@ -166,6 +173,10 @@
              } else if (!$DBInfo->mask_hostname and $DBInfo->interwiki['Whois']) {
                $ip="<a href='".$DBInfo->interwiki['Whois']."$ip'>$user</a>";
              }
  +         } else if (!empty($DBInfo->use_avatar)) {
  +           $crypted = crypt($ip, $ip);
  +           $mylnk = preg_replace('/seed=/', 'seed='.$crypted, $avatarlink);
  +           $ip = '<img src="'.$mylnk.'" style="width:16px;height:16px;vertical-align:middle" alt="avatar" />Anonymous';
            } else if ($DBInfo->mask_hostname) {
              $ip=_mask_hostname($ip);
            } else if ($user and $DBInfo->interwiki['Whois'])
  
  
  


1284639588;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv9302/plugin\n\nModified Files:\n	bookmark.php \nLog Message:\n[#315699] fixed to support bookmark reset\n\n
wkpark      2010/09/16 21:19:48

  Modified:    plugin   bookmark.php
  Log:
  [#315699] fixed to support bookmark reset
  
  Revision  Changes    Path
  1.11      +19 -10    moniwiki/plugin/bookmark.php
  
  Index: bookmark.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/bookmark.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- bookmark.php	31 Aug 2010 03:10:18 -0000	1.10
  +++ bookmark.php	16 Sep 2010 12:19:47 -0000	1.11
  @@ -4,7 +4,7 @@
   // a bookmark action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: bookmark.php,v 1.10 2010/08/31 03:10:18 wkpark Exp $
  +// $Id: bookmark.php,v 1.11 2010/09/16 12:19:47 wkpark Exp $
   
   // internal use only
   function macro_bookmark($formatter, $value = '', &$options) {
  @@ -19,20 +19,29 @@
        $bookmark = $options['time'];
     }
     $ret = array();
  -  if (is_numeric($bookmark)) {
  -    if ($user->id == "Anonymous") {
  +
  +  if ($user->id == "Anonymous") {
  +    if (is_numeric($bookmark)) {
         setcookie("MONI_BOOKMARK",$bookmark,time()+60*60*24*30,get_scriptname());
  -      # set the fake cookie
  -      $_COOKIE['MONI_BOOKMARK']=$bookmark;
  -      $user->bookmark=$bookmark;
         $ret['title'] = _('Bookmark Changed');
       } else {
  -      $user->info['bookmark']=$bookmark;
  -      $DBInfo->udb->saveUser($user);
  +      setcookie("MONI_BOOKMARK", 0, 0, get_scriptname());
  +      $ret['title']=_("Bookmark Deleted !");
  +    }
  +    # set the fake cookie
  +    $_COOKIE['MONI_BOOKMARK']=$bookmark;
  +    $user->bookmark=$bookmark;
  +  } else {
  +    if (is_numeric($bookmark)) {
         $ret['title'] = _('Bookmark Changed');
  +      $user->info['bookmark']=$bookmark;
  +    } else {
  +      $ret['title']=_("Bookmark Deleted !");
  +      $user->info['bookmark']=0;
       }
  -  } else
  -    $ret['msg']=_("Invalid bookmark!");
  +    $DBInfo->udb->saveUser($user);
  +    $user->bookmark=$bookmark;
  +  }
   
     if (isset($options['ret']))
       $options['ret'] = $ret;
  
  
  


1284639788;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv9403\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315712] fixed {{{code}}} markup disapearing bug in the TOC macro\n\n
wkpark      2010/09/16 21:23:08

  Modified:    .        wikilib.php
  Log:
  [#315712] fixed {{{code}}} markup disapearing bug in the TOC macro
  
  Revision  Changes    Path
  1.359     +27 -3     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.358
  retrieving revision 1.359
  diff -u -r1.358 -r1.359
  --- wikilib.php	14 Sep 2010 20:54:52 -0000	1.358
  +++ wikilib.php	16 Sep 2010 12:23:07 -0000	1.359
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.358 2010/09/14 20:54:52 wkpark Exp $
  +// $Id: wikilib.php,v 1.359 2010/09/16 12:23:07 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1160,7 +1160,12 @@
   }
   
   function _get_sections($body,$lim=5) {
  -  $tmp = preg_split("/(\{\{\{.+?\}\}\})/s",$body,-1, PREG_SPLIT_DELIM_CAPTURE);
  +  $tmp = preg_split("/({{{
  +            (?:(?:[^{}]+|
  +            {[^{}]+}(?!})|
  +            (?<!{){{1,2}(?!{)|
  +            (?<!})}{1,2}(?!}))|(?1)
  +            )+}}})/x", $body, -1, PREG_SPLIT_DELIM_CAPTURE);
   
     // fix for inline {{{foobar}}} in the headings.
     $chunks = array();
  @@ -3335,7 +3340,26 @@
    } else {
      $body=$formatter->text;
    }
  - $body=preg_replace("/\{\{\{.+?\}\}\}/s",'',$body);
  +
  + // remove processor blocks
  + $chunk = preg_split("/({{{
  +            (?:(?:[^{}]+|
  +            {[^{}]+}(?!})|
  +            (?<!{){{1,2}(?!{)|
  +            (?<!})}{1,2}(?!}))|(?1)
  +            )+}}})/x", $body, -1, PREG_SPLIT_DELIM_CAPTURE);
  + $sz = count($chunk);
  + $k = 1;
  + $body = '';
  + foreach ($chunk as $c) {
  +   if ($k % 2) {
  +     $body.= $c;
  +   } else if (!strstr($c, "\n")) {
  +     $body.= $c;
  +   }
  +   $k++;
  + }
  +
    $opts = array('nomacro'=>1); // disable macros in headings
    $wordrule = $formatter->wordrule .= '|'.$formatter->footrule;
    $lines=explode("\n",$body);
  
  
  


1284673008;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv30349\n\nModified Files:\n	wiki.php \nLog Message:\n[#315722] more fixes to support textarea positioning\n\n
1284673009;wkpark;Update of /cvsroot/moniwiki/moniwiki/local\nIn directory kill.kldp.net:/tmp/cvs-serv30349/local\n\nModified Files:\n	sse.js \nLog Message:\n[#315722] more fixes to support textarea positioning\n\n
wkpark      2010/09/17 06:36:50

  Modified:    .        wiki.php
               local    sse.js
  Log:
  [#315722] more fixes to support textarea positioning
  
  Revision  Changes    Path
  1.622     +6 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.621
  retrieving revision 1.622
  diff -u -r1.621 -r1.622
  --- wiki.php	16 Sep 2010 12:08:10 -0000	1.621
  +++ wiki.php	16 Sep 2010 21:36:48 -0000	1.622
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.621 2010/09/16 12:08:10 wkpark Exp $
  +// $Id: wiki.php,v 1.622 2010/09/16 21:36:48 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.621 $',1,-1);
  +$_revision = substr('$Revision: 1.622 $',1,-1);
   $_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -3351,7 +3351,7 @@
           if ($this->auto_linebreak) $this->nobr=1; // XXX
           if ($in_p) { $p_closeopen=$this->_div(0,$in_div,$div_enclose); $in_p='';}
         } else if ($in_p == '' and $line!=='') {
  -        $p_closeopen=$this->_div(1,$in_div,$div_enclose);
  +        $p_closeopen=$this->_div(1,$in_div,$div_enclose, ' id="aline-'.$lid.'"');
           $in_p= $line;
         }
   
  @@ -3505,8 +3505,10 @@
           {
             $tr_attr='';
             $row=$this->_td($line,$tr_attr);
  +          if ($lid) $tr_attr.= ' id="line-'.$lid.'"';
             $line="<tr $tr_attr>".$row.'</tr>';
             $tr_attr='';
  +          $lid = '';
           }
   
           $line=str_replace('\"','"',$line); # revert \\" to \"
  @@ -4786,7 +4788,7 @@
       var txt = decodeURIComponent(escape(trails[i])).replace(/\\+/g, " ");
       str[i] = "<a href='" + url_prefix + query_prefix + url + "'>" + txt + "</a>";
     }
  -  str[i] = decodeURIComponent(escape(trails[i])).replace(/\\+/, " ");
  +  str[i] = decodeURIComponent(escape(trails[i])).replace(/\\+/g, " ");
     document.write(str.join("<span class='separator'>$DBInfo->arrow</span>"));
   })();
   </script>
  
  
  
  1.2       +71 -63    moniwiki/local/sse.js
  
  Index: sse.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/sse.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- sse.js	16 Sep 2010 12:08:10 -0000	1.1
  +++ sse.js	16 Sep 2010 21:36:49 -0000	1.2
  @@ -4,7 +4,7 @@
    * @author wkpark at kldp.org
    * @since  2010/09/16
    *
  - * $Id: sse.js,v 1.1 2010/09/16 12:08:10 wkpark Exp $
  + * $Id: sse.js,v 1.2 2010/09/16 21:36:49 wkpark Exp $
    */
   
   /**
  @@ -25,30 +25,44 @@
               node = node.parentNode;
       } else {
           // IE6
  -        node = sel.parentElement();
  +        try { node = sel.parentElement(); } catch (e) { return; };
       }
   
  -    var nc = node;
  -    
  -    if (!node.id || !node.id.match(/^line-/)) {
  -        // try to find line-anchor
  -        while(node) {
  +    if (!node) return;
  +
  +    while (!node.id || !node.id.match(/line-\d+/)) {
  +        // try to find the line-no of the parent node
  +        var np = node;
  +        while (np) {
  +            if (np.id && np.id.match(/line-\d+/)) break;
  +            np = np.parentNode;
  +        }
  +
  +        if (np) {
  +            node = np;
  +            break;
  +        }
  +        
  +        // try to find the line-no of the childs
  +        var nc = node;
  +        while (node) {
               nc = node.firstChild;
   
               while (nc) {
  -                var name = nc.tagName + '';
  -                if (name == 'SPAN' && nc.id.match(/^line-/)) break;
  -                if (name.match(/^H/) && nc.id.match(/^line-/)) break;
  +                if (nc.id && nc.id.match(/line-\d+/)) break;
                   nc = nc.nextSibling;
               }
  -            if (nc)
  +            if (nc) {
  +                node = nc;
                   break;
  +            }
               node = node.nextSibling;
           }
  +        break;
       }
   
       // is it found ?
  -    if (nc) {
  +    if (node) {
           var loc = location + '';
           var p;
           if (p = loc.indexOf('action=')) {
  @@ -56,7 +70,9 @@
           } else if (p = loc.indexOf('#')) {
               loc = loc.substring(0, p);
           }
  -        location = loc + _ap + 'action=edit#' + nc.id;
  +        p = 1 + node.id.indexOf('line-');
  +        if (p)
  +            location = loc + _ap + 'action=edit#' + node.id.substr(p + 4);
       }
   
       // silently ignore.
  @@ -101,65 +117,57 @@
   
       function focusEditor() {
           var txtarea = document.getElementById('wikicontent');
  -        if (txtarea) {
  +        if (!txtarea) return;
  +        txtarea.focus();
  +
  +        var loc = location + '';
  +        var p = 1 + loc.indexOf('#');
  +        var no = 0;
  +        if (p > 0)
  +            no = loc.substr(p);
  +        if (!no.match(/\d+/)) return;
  +
  +        var txt = txtarea.value.replace(/\r/g, ''); // remove \r for IE
  +        var pos = 1; // ViTA trick.
  +        var startPos = 0, endPos = 0;
  +
  +        // find selected line
  +        var n = no;
  +        while (pos && --n) pos = 1 + txt.indexOf("\n", pos);
  +        startPos = (pos) ? pos : 0;
  +        // FIXME ? how can I select only selected words ?
  +        endPos = txt.indexOf("\n", startPos);
  +
  +        if (txtarea.selectionStart || txtarea.selectionStart == '0') {
  +            // Mozilla
  +            // goto
  +            txtarea.selectionStart = startPos;
  +            txtarea.selectionEnd = endPos;
  +
  +            var scroll = scrollTo(txtarea, txt.substr(0, startPos), 50);
  +            txtarea.scrollTop = scroll;
  +        } else if (document.selection && !is_gecko && !is_opera) {
  +            // IE
               txtarea.focus();
  +            var r = document.selection.createRange();
  +            var range = r.duplicate();
   
  -            var loc = location + '';
  -            var p = loc.indexOf('#line-', 1);
  -            var no = 0;
  -            if (p > 0)
  -                var no = loc.substr(p + 6);
  -            if (!no)
  -                return;
  -
  -            var txt = txtarea.value.replace(/\r/g, ''); // remove \r for IE
  -            var pos = 1; // ViTA trick.
  -            var startPos = 0, endPos = 0;
  -
  -            // find selected line
  -            var n = no;
  -            while (pos && --n) pos = 1 + txt.indexOf("\n", pos);
  -            startPos = (pos) ? pos : 0;
  -            // FIXME ? how can I select only selected words ?
  -            endPos = txt.indexOf("\n", startPos);
  -
  -            if (txtarea.selectionStart || txtarea.selectionStart == '0') {
  -                // Mozilla
  -                var scrollTop = txtarea.scrollTop; // save
  -
  -                // goto
  -                txtarea.selectionStart = startPos;
  -                txtarea.selectionEnd = endPos;
  -
  -                var scroll = scrollTo(txtarea, txt.substr(0, startPos), 50);
  -                txtarea.scrollTop = scroll;
  -            } else if (document.selection && !is_gecko && !is_opera) {
  -                // IE
  -                txtarea.focus();
  -                var r = document.selection.createRange();
  -                var range = r.duplicate();
  -
  -                range.moveStart('character', startPos);
  -                range.moveEnd('character', endPos - startPos);
  -                r.setEndPoint('StartToStart', range);
  -                range.select();
  -            }
  +            range.moveStart('character', startPos);
  +            range.moveEnd('character', endPos - startPos);
  +            r.setEndPoint('StartToStart', range);
  +            range.select();
  +        }
   
           // reposition cursor if possible
           if (txtarea.createTextRange)
  -                txtarea.caretPos = document.selection.createRange().duplicate();
  -        }
  +            txtarea.caretPos = document.selection.createRange().duplicate();
       }
   
       // onload
       var oldOnload = window.onload;
  -    if (typeof window.onload != 'function') {
  -        window.onload = focusEditor;
  -    } else {
  -        window.onload = function() {
  -            oldOnload();
  -            focusEditor();
  -        }
  +    window.onload = function() {
  +        try { oldOnload(); } catch(e) {};
  +        focusEditor();
       }
   })();
   
  
  
  


1284673392;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv30465\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315726] use selection script to select the help msg of edit form in the textarea\n\n
wkpark      2010/09/17 06:43:13

  Modified:    .        wikilib.php
  Log:
  [#315726] use selection script to select the help msg of edit form in the textarea
  
  Revision  Changes    Path
  1.360     +49 -5     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.359
  retrieving revision 1.360
  diff -u -r1.359 -r1.360
  --- wikilib.php	16 Sep 2010 12:23:07 -0000	1.359
  +++ wikilib.php	16 Sep 2010 21:43:12 -0000	1.360
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.359 2010/09/16 12:23:07 wkpark Exp $
  +// $Id: wikilib.php,v 1.360 2010/09/16 21:43:12 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1307,6 +1307,7 @@
   
     $form.=$menu;
     $ajax = '';
  +  $js = '';
     if (!empty($options['action_mode']) and $options['action_mode']=='ajax') {
       $ajax=" onsubmit='savePage(this);return false'";
     }
  @@ -1333,10 +1334,53 @@
       }
     } else {
       if (strpos($options['page'],' ') > 0) {
  -      $raw_body="#title $options[page]\n";
  -      $options['page']='['.$options['page'].']';
  +      #$raw_body="#title $options[page]\n";
  +      $options['page']='["'.$options['page'].'"]';
       } else $raw_body='';
  -    $raw_body.= sprintf(_("Describe %s here"), $options['page']);
  +    $guide = sprintf(_("Describe %s here"), $options['page']);
  +    $raw_body.= $guide;
  +    $guide = str_replace('"', '\\"', $guide);
  +    $js=<<<EOF
  +<script type="text/javascript">
  +/*<![CDATA[*/
  +(function() {
  +    function selectGuide() {
  +        var txtarea = document.getElementById('wikicontent');
  +        if (!txtarea) return;
  +
  +        var guide = "$guide";
  +        txtarea.focus();
  +        var txt = txtarea.value;
  +        var pos = 1 + txt.indexOf(guide);
  +        if (!pos) return;
  +        pos--;
  +        var end = pos + guide.length;
  +
  +        if (txtarea.selectionStart || txtarea.selectionStart == '0') {
  +            // goto
  +            txtarea.selectionStart = pos;
  +            txtarea.selectionEnd = end;
  +        } else if (document.selection && !is_gecko && !is_opera) {
  +            // IE
  +            var r = document.selection.createRange();
  +            var range = r.duplicate();
  +
  +            range.moveStart('character', pos);
  +            range.moveEnd('character', end - pos);
  +            r.setEndPoint('StartToStart', range);
  +            range.select();
  +        }
  +    }
  +
  +    var oldOnLoad = window.onLoad;
  +    window.onload = function() {
  +        try { oldOnLoad() } catch(e) {};
  +        selectGuide();
  +    }
  +})();
  +/*]]>*/
  +</script>\n
  +EOF;
     }
   
   
  @@ -1479,7 +1523,7 @@
       $form.= $formatter->macro_repl('EditHints');
     if (empty($options['simple']))
       $form.= "<a id='preview'></a>";
  -  return $form.$resizer;
  +  return $form.$resizer.$js;
   }
   
   
  
  
  


1284675005;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv679/plugin\n\nModified Files:\n	LikePages.php \nLog Message:\n[#315724] enhanced likepage action : add all words to search similar pages. more sophisticated start/end regex\n\n
wkpark      2010/09/17 07:10:05

  Modified:    plugin   LikePages.php
  Log:
  [#315724] enhanced likepage action : add all words to search similar pages. more sophisticated start/end regex
  
  Revision  Changes    Path
  1.10      +49 -6     moniwiki/plugin/LikePages.php
  
  Index: LikePages.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/LikePages.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- LikePages.php	12 Aug 2010 21:21:17 -0000	1.9
  +++ LikePages.php	16 Sep 2010 22:10:04 -0000	1.10
  @@ -4,7 +4,7 @@
   // a LikePages plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: LikePages.php,v 1.9 2010/08/12 21:21:17 wkpark Exp $
  +// $Id: LikePages.php,v 1.10 2010/09/16 22:10:04 wkpark Exp $
   
   function do_LikePages($formatter,$options) {
   
  @@ -33,8 +33,8 @@
     }
     $opts['extra'] = '';
   
  -  $s_re="^[A-Z][a-z0-9]+";
  -  $e_re="[A-Z][a-z0-9]+$";
  +  $s_re="^[A-Z][A-Za-z0-9]+";
  +  $e_re="[A-Z][A-Za-z0-9]+$";
   
     $count=preg_match("/(".$s_re.")/",$pname,$match);
     if ($count) {
  @@ -47,15 +47,56 @@
       $e_len=strlen($end);
     }
   
  -  if (empty($start) && empty($end)) {
  -    preg_match("/^(.{2,4})/",$args,$match);
  +  // for non ASCII codeset
  +  if (empty($start) or empty($end)) {
  +    if (preg_match('/[^A-Za-z0-9-_]/', $pname)) {
  +      $myname = preg_replace('/[\x00-\x2F\x3A-\x40\x5B-\x60\x7B-\x7F]/', ' ', $pname);
  +      $words = preg_split('/\s+/', $myname);
  +      if (empty($start))
  +        $start = $words[0];
  +      if (isset($words[1])) {
  +        if (empty($end))
  +          $end = $words[count($words) - 1];
  +      }
  +    }
  +
  +    // try to remove suffix
  +    // "위키에서 글쓰기" => start=위키에서|위키에|위키
  +    if (preg_match('/[\x{AC00}-\x{D7AF}]/u', $start)) {
  +	    $ws = preg_split('//u', $start, -1,  PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
  +      $nw = array();
  +      $nw[] = $start;
  +      for ($i = 2;  count($ws) > 2 and $i > 0; $i--) {
  +        array_pop($ws);
  +        $nw[] = implode('', $ws);
  +      }
  +      $start = implode('|', $nw);
  +    }
  +
  +    if (preg_match('/[\x{AC00}-\x{D7AF}]/u', $end)) {
  +	    $ws = preg_split('//u', $end, -1,  PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
  +      $nw = array();
  +      $last = array_splice($ws, -2);
  +      $last = implode('', $last);
  +      $nw[] = $last;
  +      $ws = array_reverse($ws);
  +      foreach ($ws as $w) {
  +        $last = $w.$last;
  +        $nw[] = $last;
  +      }
  +      $end = implode('|', $nw);
  +    }
  +  }
  +
  +  if (empty($start)) {
  +    preg_match("/^(.{2,4})/u",$args,$match);
       $s_len=strlen($match[1]);
       $start=trim(_preg_escape($match[1]));
     }
   
     if (empty($end)) {
       $end=substr($args,$s_len);
  -    preg_match("/(.{2,6})$/",$end,$match);
  +    preg_match("/(.{2,6})$/u",$end,$match);
       $end=isset($match[1]) ? $match[1] : '';
       $e_len=strlen($end);
       if ($e_len < 2) $end="";
  @@ -103,6 +144,8 @@
       if ($start and $end) $similar_re="$start|$end";
       else if ($start) $similar_re=$start;
       else $similar_re=$end;
  +    if (!empty($words))
  +      $similar_re.='|'.implode('|', $words);
   
       foreach ($pages as $page) {
         preg_match("/($similar_re)/i",$page,$matches);
  
  
  


1284676393;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv6870\n\nModified Files:\n	wiki.php \nLog Message:\n[#315727] check processor alias correctly\n\n
wkpark      2010/09/17 07:33:14

  Modified:    .        wiki.php
  Log:
  [#315727] check processor alias correctly
  
  Revision  Changes    Path
  1.623     +4 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.622
  retrieving revision 1.623
  diff -u -r1.622 -r1.623
  --- wiki.php	16 Sep 2010 21:36:48 -0000	1.622
  +++ wiki.php	16 Sep 2010 22:33:13 -0000	1.623
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.622 2010/09/16 21:36:48 wkpark Exp $
  +// $Id: wiki.php,v 1.623 2010/09/16 22:33:13 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.622 $',1,-1);
  +$_revision = substr('$Revision: 1.623 $',1,-1);
   $_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -2576,9 +2576,9 @@
   
       if ($f) {
         if (!empty($this->use_smartdiff) and
  -        preg_match("/\006|\010/", $value)) $processor='plain';
  +        preg_match("/\006|\010/", $value)) $pf='plain';
   
  -      $ret= call_user_func_array("processor_$processor",array(&$this,$value,$options));
  +      $ret= call_user_func_array("processor_$pf",array(&$this,$value,$options));
         if (!is_string($ret)) return $ret;
         return $bra.$ret.$ket;
       }
  
  
  


1284678803;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv9629\n\nModified Files:\n	wiki.php \nLog Message:\n[#315711] set pagename correctly in case of ?action=edit url without pagename given.\n\n
wkpark      2010/09/17 08:13:24

  Modified:    .        wiki.php
  Log:
  [#315711] set pagename correctly in case of ?action=edit url without pagename given.
  
  Revision  Changes    Path
  1.624     +12 -18    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.623
  retrieving revision 1.624
  diff -u -r1.623 -r1.624
  --- wiki.php	16 Sep 2010 22:33:13 -0000	1.623
  +++ wiki.php	16 Sep 2010 23:13:23 -0000	1.624
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.623 2010/09/16 22:33:13 wkpark Exp $
  +// $Id: wiki.php,v 1.624 2010/09/16 23:13:23 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.623 $',1,-1);
  +$_revision = substr('$Revision: 1.624 $',1,-1);
   $_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -4949,24 +4949,18 @@
       $goto=isset($_POST['goto'][0]) ? $_POST['goto']:(isset($_GET['goto'][0]) ? $_GET['goto'] : '');
       if (isset($goto[0])) $pagename=$goto;
       else {
  -      $pagename = $_SERVER['QUERY_STRING'];
  -      $temp = strtok($pagename,"&");
  -      $p=strpos($temp,"=");
  -      if (!$temp or $p===false) {
  -        if (preg_match('/^([^&=]+)/',$pagename,$matches)) {
  -          $pagename = urldecode($matches[1]);
  -          $_SERVER['QUERY_STRING']=substr($_SERVER['QUERY_STRING'],strlen($pagename));
  -        }
  -      } else if ($p>0) {
  -        $k = substr($temp,0,$p);
  -        $v = substr($temp,$p+1);
  -        if ($k =='value') {
  -          $pagename= substr($temp,$p+1);
  -          $_SERVER['QUERY_STRING']=substr($_SERVER['QUERY_STRING'],strlen($temp));
  -        } else if ($k =='action' and $v =='login') {
  -          $pagename="UserPreferences";
  +      parse_str($_SERVER['QUERY_STRING'], $arr);
  +      $keys = array_keys($arr);
  +      if (!empty($arr['action'])) {
  +        if ($arr['action'] == 'edit') {
  +          if (!empty($arr['value'])) $pagename = $arr['value'];
  +        } else if ($arr['action'] == 'login') {
  +          $pagename = 'UserPreferences';
           }
  +        unset($arr['action']);
         }
  +      foreach ($arr as $k=>$v)
  +        if (empty($v)) $pagename = $k;
       }
     }
     if (isset($pagename[0])) {
  
  
  


1284679341;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv13846\n\nModified Files:\n	wiki.php \nLog Message:\n[#315699] fixed last changes\n\n
1284679341;wkpark;Update of /cvsroot/moniwiki/moniwiki/lib\nIn directory kill.kldp.net:/tmp/cvs-serv13846/lib\n\nModified Files:\n	version.RCS.php \nLog Message:\n[#315699] fixed last changes\n\n
wkpark      2010/09/17 08:22:22

  Modified:    .        wiki.php
               lib      version.RCS.php
  Log:
  [#315699] fixed last changes
  
  Revision  Changes    Path
  1.625     +4 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.624
  retrieving revision 1.625
  diff -u -r1.624 -r1.625
  --- wiki.php	16 Sep 2010 23:13:23 -0000	1.624
  +++ wiki.php	16 Sep 2010 23:22:20 -0000	1.625
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.624 2010/09/16 23:13:23 wkpark Exp $
  +// $Id: wiki.php,v 1.625 2010/09/16 23:22:20 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.624 $',1,-1);
  +$_revision = substr('$Revision: 1.625 $',1,-1);
   $_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -1308,7 +1308,8 @@
             $info = array();
             $tmp=preg_replace("/date:\s(.*);\s+author:.*;\s+state:.*;/","\\1",rtrim($line));
             $tmp=explode('lines:',$tmp);
  -          $info[0]=$tmp[0];$info[1]=$tmp[1];
  +          $info[0]=$tmp[0];
  +          $info[1]=isset($tmp[1]) ? $tmp[1] : '';
             $state=1;
           } else if ($state) {
             list($info[2],$info[3],$info[4])=explode(';;',$line,3);
  
  
  
  1.3       +2 -2      moniwiki/lib/version.RCS.php
  
  Index: version.RCS.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/lib/version.RCS.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- version.RCS.php	13 Sep 2010 09:31:31 -0000	1.2
  +++ version.RCS.php	16 Sep 2010 23:22:21 -0000	1.3
  @@ -6,7 +6,7 @@
   // @since  2003/08/22
   // @author wkpark@kldp.org
   //
  -// $Id: version.RCS.php,v 1.2 2010/09/13 09:31:31 wkpark Exp $
  +// $Id: version.RCS.php,v 1.3 2010/09/16 23:22:21 wkpark Exp $
   //
   
   class Version_RCS {
  @@ -69,7 +69,7 @@
   
     function rlog($pagename,$rev='',$opt='',$oldopt='') {
       $dmark = '';
  -    if ($rev[0] == '>' or $rev[0] == '<') {
  +    if (isset($rev[0]) and in_array($rev[0], array('>', '<'))) {
         $dmark = $rev[0];
         $rev = substr($rev, 1);
       }
  
  
  


1284679485;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv14037\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315290] fixed notice warning\n\n
wkpark      2010/09/17 08:24:46

  Modified:    .        wikilib.php
  Log:
  [#315290] fixed notice warning
  
  Revision  Changes    Path
  1.361     +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.360
  retrieving revision 1.361
  diff -u -r1.360 -r1.361
  --- wikilib.php	16 Sep 2010 21:43:12 -0000	1.360
  +++ wikilib.php	16 Sep 2010 23:24:45 -0000	1.361
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.360 2010/09/16 21:43:12 wkpark Exp $
  +// $Id: wikilib.php,v 1.361 2010/09/16 23:24:45 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -3423,7 +3423,7 @@
      $head=preg_replace($formatter->baserule,$formatter->baserepl,$head);
      $head=preg_replace("/(".$wordrule.")/e",
        "\$formatter->link_repl('\\1', '', \$opts)",$head);
  -   if ($simple)
  +   if (!empty($simple))
        $head=strip_tags($head,'<b><i><img><sub><sup><del><tt><u><strong>');
   
      if (empty($depth_top)) { $depth_top=$dep; $depth=1; }
  
  
  


1284705278;wkpark;Update of /cvsroot/moniwiki/moniwiki/local\nIn directory kill.kldp.net:/tmp/cvs-serv11267/local\n\nModified Files:\n	sse.js \nLog Message:\n[#315722] fixed textarea positioning\n\n
wkpark      2010/09/17 15:34:39

  Modified:    local    sse.js
  Log:
  [#315722] fixed textarea positioning
  
  Revision  Changes    Path
  1.3       +35 -29    moniwiki/local/sse.js
  
  Index: sse.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/sse.js,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- sse.js	16 Sep 2010 21:36:49 -0000	1.2
  +++ sse.js	17 Sep 2010 06:34:38 -0000	1.3
  @@ -4,7 +4,7 @@
    * @author wkpark at kldp.org
    * @since  2010/09/16
    *
  - * $Id: sse.js,v 1.2 2010/09/16 21:36:49 wkpark Exp $
  + * $Id: sse.js,v 1.3 2010/09/17 06:34:38 wkpark Exp $
    */
   
   /**
  @@ -21,8 +21,12 @@
       if (sel.focusNode) {
           node = sel.focusNode;
   
  -        if (node.nodeType == 3)
  -            node = node.parentNode;
  +        if (node.nodeType == 3) {
  +            if (node.nextSibling)
  +                node = node.nextSibling;
  +            else
  +                node = node.parentNode;
  +        }
       } else {
           // IE6
           try { node = sel.parentElement(); } catch (e) { return; };
  @@ -30,36 +34,32 @@
   
       if (!node) return;
   
  -    while (!node.id || !node.id.match(/line-\d+/)) {
  -        // try to find the line-no of the parent node
  -        var np = node;
  -        while (np) {
  -            if (np.id && np.id.match(/line-\d+/)) break;
  -            np = np.parentNode;
  -        }
  +    // try to find the line-no of the nextsibling
  +    var ns = node;
  +    while (ns) {
  +        if (ns.id && ns.id.match(/line-\d+/)) break;
   
  -        if (np) {
  -            node = np;
  -            break;
  -        }
  -        
           // try to find the line-no of the childs
  -        var nc = node;
  -        while (node) {
  -            nc = node.firstChild;
  -
  -            while (nc) {
  -                if (nc.id && nc.id.match(/line-\d+/)) break;
  -                nc = nc.nextSibling;
  -            }
  -            if (nc) {
  -                node = nc;
  -                break;
  -            }
  -            node = node.nextSibling;
  +        var nc = ns.firstChild;
  +        while (nc) {
  +            if (nc.id && nc.id.match(/line-\d+/)) break;
  +            nc = nc.nextSibling;
  +        }
  +        if (nc) {
  +            node = nc;
  +            break;
           }
  -        break;
  +        ns = ns.nextSibling;
  +    }
  +    if (ns) node = ns;
  +
  +    // try to find the line-no of the parent node
  +    var np = node;
  +    while (np) {
  +        if (np.id && np.id.match(/line-\d+/)) break;
  +        np = np.parentNode;
       }
  +    if (np) node = np;
   
       // is it found ?
       if (node) {
  @@ -169,6 +169,12 @@
           try { oldOnload(); } catch(e) {};
           focusEditor();
       }
  +
  +    var old_dblclick = document.ondblclick;
  +    document.ondblclick = function() {
  +        try { old_dblclick(); } catch(e) {};
  +        edithandler();
  +    }
   })();
   
   // vim:et:sts=4:sw=4:
  
  
  


1284712388;wkpark;Update of /cvsroot/moniwiki/moniwiki/local\nIn directory kill.kldp.net:/tmp/cvs-serv28553\n\nAdded Files:\n	pasta.js \nRemoved Files:\n	sse.js \nLog Message:\n[#315722] rename sse.js to pasta.js and add some comments\n\n
wkpark      2010/09/17 17:33:09

  Added:       local    pasta.js
  Removed:     local    sse.js
  Log:
  [#315722] rename sse.js to pasta.js and add some comments
  
  Revision  Changes    Path
  1.1                  moniwiki/local/pasta.js
  
  Index: pasta.js
  ===================================================================
  /**
   * Postioning and Scrolling in the TextArea for MoniWiki
   *
   * Try to get the line-no of the raw wikitext from rendered html and
   * set the position of the caret and scrollbar in the TextArea
   *
   * http://wiki.sheep.art.pl/Textarea%20Scrolling
   * http://moinmo.in/FeatureRequests/AutoScrollingTheEditorTextArea
   * http://master19.moinmo.in/HelpOnEditing#Open_Editor_On_Double_Click
   *
   * @author wkpark at kldp.org
   * @since  2010/09/16
   *
   * $Id: pasta.js,v 1.1 2010/09/17 08:33:08 wkpark Exp $
   */
  
  /**
   * try to find line-anchor to get the line number of wikitext from html
   *
   */
  function edithandler(ev) {
      var e = ev ? ev : window.event; // for IE
      var sel = window.getSelection ? window.getSelection():
          (document.getSelection ? document.getSelection():
          document.selection.createRange());
  
      var node;
      if (sel.focusNode) {
          node = sel.focusNode;
  
          if (node.nodeType == 3) {
              if (node.nextSibling)
                  node = node.nextSibling;
              else
                  node = node.parentNode;
          }
      } else {
          // IE6
          try { node = sel.parentElement(); } catch (e) { return; };
      }
  
      if (!node) return;
  
      // try to find the line-no of the nextsibling
      var ns = node;
      while (ns) {
          if (ns.id && ns.id.match(/line-\d+/)) break;
  
          // try to find the line-no of the childs
          var nc = ns.firstChild;
          while (nc) {
              if (nc.id && nc.id.match(/line-\d+/)) break;
              nc = nc.nextSibling;
          }
          if (nc) {
              node = nc;
              break;
          }
          ns = ns.nextSibling;
      }
      if (ns) node = ns;
  
      // try to find the line-no of the parent node
      var np = node;
      while (np) {
          if (np.id && np.id.match(/line-\d+/)) break;
          np = np.parentNode;
      }
      if (np) node = np;
  
      // is it found ?
      if (node) {
          var loc = location + '';
          var p;
          if (p = loc.indexOf('action=')) {
              loc = loc.substring(0, p - 1);
          } else if (p = loc.indexOf('#')) {
              loc = loc.substring(0, p);
          }
          p = 1 + node.id.indexOf('line-');
          if (p)
              location = loc + _ap + 'action=edit#' + node.id.substr(p + 4);
      }
  
      // silently ignore.
      return false;
  }
  
  (function() {
      // from http://wiki.sheep.art.pl/Textarea%20Scrolling
      // with some fixes by wkpark at kldp.org
      function scrollTo(textarea, text, offset) {
          var style;
          try { style = window.getComputedStyle(textarea, ''); }
          catch(e) { return false; };
  
          // Calculate how far to scroll, by putting the text that is to be
          // above the fold in a DIV, and checking the DIV's height.
          var pre = document.createElement('pre');
          textarea.parentNode.appendChild(pre);
  
          pre.style.lineHeight = style.lineHeight;
          pre.style.fontFamily = style.fontFamily;
          pre.style.fontSize = style.fontSize;
          pre.style.padding = pre.style.padding;
          pre.style.margin = pre.style.margin;
          pre.style.letterSpacing = style.letterSpacing;
          pre.style.border = style.border;
          pre.style.outline = style.outline;
          pre.style.overflow = 'scroll-y';
          pre.style.height = 0; // set height to suppress flickering
          try { pre.style.whiteSpace = "-moz-pre-wrap" } catch(e) {};
          try { pre.style.whiteSpace = "-o-pre-wrap" } catch(e) {};
          try { pre.style.whiteSpace = "-pre-wrap" } catch(e) {};
          try { pre.style.whiteSpace = "pre-wrap" } catch(e) {};
  
          pre.textContent = text; // put your text here
          var scroll = pre.scrollHeight + 0;
          pre.textContent = "";
          if (scroll > offset) scroll -= offset;
          textarea.parentNode.removeChild(pre); // remove
          return scroll;
      }
  
      function focusEditor() {
          var txtarea = document.getElementById('wikicontent');
          if (!txtarea) return;
          txtarea.focus();
  
          var loc = location + '';
          var p = 1 + loc.indexOf('#');
          var no = 0;
          if (p > 0)
              no = loc.substr(p);
          if (!no.match(/\d+/)) return;
  
          var txt = txtarea.value.replace(/\r/g, ''); // remove \r for IE
          var pos = 1; // ViTA trick.
          var startPos = 0, endPos = 0;
  
          // find selected line
          var n = no;
          while (pos && --n) pos = 1 + txt.indexOf("\n", pos);
          startPos = (pos) ? pos : 0;
          // FIXME ? how can I select only selected words ?
          endPos = txt.indexOf("\n", startPos);
  
          if (txtarea.selectionStart || txtarea.selectionStart == '0') {
              // Mozilla
              // goto
              txtarea.selectionStart = startPos;
              txtarea.selectionEnd = endPos;
  
              var scroll = scrollTo(txtarea, txt.substr(0, startPos), 50);
              txtarea.scrollTop = scroll;
          } else if (document.selection && !is_gecko && !is_opera) {
              // IE
              txtarea.focus();
              var r = document.selection.createRange();
              var range = r.duplicate();
  
              range.moveStart('character', startPos);
              range.moveEnd('character', endPos - startPos);
              r.setEndPoint('StartToStart', range);
              range.select();
          }
  
          // reposition cursor if possible
          if (txtarea.createTextRange)
              txtarea.caretPos = document.selection.createRange().duplicate();
      }
  
      // onload
      var oldOnload = window.onload;
      window.onload = function() {
          try { oldOnload(); } catch(e) {};
          focusEditor();
      }
  
      var old_dblclick = document.ondblclick;
      document.ondblclick = function() {
          try { old_dblclick(); } catch(e) {};
          edithandler();
      }
  })();
  
  // vim:et:sts=4:sw=4:
  
  
  


1284720420;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv14889\n\nModified Files:\n	UploadForm.php \nLog Message:\n[#315663] fixed cross-domain iframe script for IE6 by nori\n\n
wkpark      2010/09/17 19:47:01

  Modified:    plugin   UploadForm.php
  Log:
  [#315663] fixed cross-domain iframe script for IE6 by nori
  
  Revision  Changes    Path
  1.21      +6 -3      moniwiki/plugin/UploadForm.php
  
  Index: UploadForm.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadForm.php,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- UploadForm.php	12 Aug 2010 06:35:07 -0000	1.20
  +++ UploadForm.php	17 Sep 2010 10:47:00 -0000	1.21
  @@ -5,7 +5,7 @@
   //
   // Usage: [[UploadForm]]
   //
  -// $Id: UploadForm.php,v 1.20 2010/08/12 06:35:07 wkpark Exp $
  +// $Id: UploadForm.php,v 1.21 2010/09/17 10:47:00 wkpark Exp $
   
   function macro_UploadForm($formatter,$value) {
       global $DBInfo;
  @@ -43,10 +43,13 @@
               iframe.setAttribute('name','upload-iframe');
               iframe.setAttribute('style','display:none;border:0;');
               if (document.all) {
  -                var IE6 = false /*@cc_on || @_jscript_version < 5.7 @*/;
                   // magic for IE6
  -                if (IE6)
  +                /*@cc_on
  +                if (@_jscript_version==5.6 ||
  +                    (@_jscript_version==5.7 && navigator.userAgent.toLowerCase().indexOf("msie 6.") != -1)) {
                       iframe.src = 'javascript:document.write("' + "<script>document.domain='" + document.domain + "';</" + "script>" + '");';
  +                }
  +                @*/
               }
               var body = document.getElementsByTagName('body')[0];
               body.appendChild(iframe);
  
  
  


1284724793;wkpark;Update of /cvsroot/moniwiki/moniwiki/local\nIn directory kill.kldp.net:/tmp/cvs-serv25401/local\n\nModified Files:\n	pasta.js \nLog Message:\n[#315722] fixed to support auto scrolling & positioning in textarea using preview\n\n
wkpark      2010/09/17 20:59:54

  Modified:    local    pasta.js
  Log:
  [#315722] fixed to support auto scrolling & positioning in textarea using preview
  
  Revision  Changes    Path
  1.2       +84 -45    moniwiki/local/pasta.js
  
  Index: pasta.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/pasta.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- pasta.js	17 Sep 2010 08:33:08 -0000	1.1
  +++ pasta.js	17 Sep 2010 11:59:53 -0000	1.2
  @@ -11,35 +11,25 @@
    * @author wkpark at kldp.org
    * @since  2010/09/16
    *
  - * $Id: pasta.js,v 1.1 2010/09/17 08:33:08 wkpark Exp $
  + * $Id: pasta.js,v 1.2 2010/09/17 11:59:53 wkpark Exp $
    */
   
   /**
    * try to find line-anchor to get the line number of wikitext from html
    *
    */
  -function edithandler(ev) {
  -    var e = ev ? ev : window.event; // for IE
  -    var sel = window.getSelection ? window.getSelection():
  -        (document.getSelection ? document.getSelection():
  -        document.selection.createRange());
  -
  -    var node;
  -    if (sel.focusNode) {
  -        node = sel.focusNode;
  +function get_src_line(e) {
  +    e = e || window.event;
   
  -        if (node.nodeType == 3) {
  -            if (node.nextSibling)
  -                node = node.nextSibling;
  -            else
  -                node = node.parentNode;
  -        }
  -    } else {
  -        // IE6
  -        try { node = sel.parentElement(); } catch (e) { return; };
  +    var node = e.target || e.srcElement;
  +    if (node.nodeType == 3) {
  +        if (node.nextSibling)
  +            node = node.nextSibling;
  +        else
  +            node = node.parentNode;
       }
   
  -    if (!node) return;
  +    if (!node) return null;
   
       // try to find the line-no of the nextsibling
       var ns = node;
  @@ -69,21 +59,25 @@
       if (np) node = np;
   
       // is it found ?
  +    var no = null;
       if (node) {
  -        var loc = location + '';
  -        var p;
  -        if (p = loc.indexOf('action=')) {
  -            loc = loc.substring(0, p - 1);
  -        } else if (p = loc.indexOf('#')) {
  -            loc = loc.substring(0, p);
  -        }
  -        p = 1 + node.id.indexOf('line-');
  -        if (p)
  -            location = loc + _ap + 'action=edit#' + node.id.substr(p + 4);
  +        var p = 1 + node.id.indexOf('line-');
  +        if (p) no = node.id.substr(p + 4);
       }
  -
       // silently ignore.
  -    return false;
  +    if (!no || !no.match(/\d+/)) return null;
  +
  +    return no;
  +}
  +
  +function get_selected_text(e) {
  +    e = e || window.event;
  +
  +    var sel = window.getSelection ? window.getSelection():
  +        (document.getSelection ? document.getSelection():
  +        document.selection.createRange().text);
  +
  +    return sel;
   }
   
   (function() {
  @@ -122,32 +116,77 @@
           return scroll;
       }
   
  -    function focusEditor() {
  -        var txtarea = document.getElementById('wikicontent');
  -        if (!txtarea) return;
  -        txtarea.focus();
  -
  +    function edithandler(e) {
  +        e = e || window.event;
  +        var no = get_src_line(e);
  +        if (!no) return false;
  +
  +        var txtarea = document.getElementById('editor-textarea');
  +        if (txtarea) {
  +            focusEditor(e, txtarea, no);
  +            return;
  +        }
           var loc = location + '';
  -        var p = 1 + loc.indexOf('#');
  -        var no = 0;
  -        if (p > 0)
  -            no = loc.substr(p);
  -        if (!no.match(/\d+/)) return;
  +        if (p = loc.indexOf('action=')) {
  +            loc = loc.substring(0, p - 1);
  +        } else if (p = loc.indexOf('#')) {
  +            loc = loc.substring(0, p);
  +        }
  +        if (p)
  +            location = loc + _ap + 'action=edit#' + no;
  +        return;
  +    }
  +
  +    function focusEditor(e, txtarea, lineno) {
  +        e = e || window.event;
  +        if (txtarea == undefined) {
  +            txtarea = document.getElementById('editor-textarea');
  +            if (!txtarea) return;
  +            txtarea.focus();
  +        }
  +
  +        var no = null;
  +        if (lineno == undefined) {
  +            // get lineno from location
  +            var loc = location + '';
  +            var p = 1 + loc.indexOf('#');
  +            if (p) no = loc.substr(p);
  +        } else {
  +            no = lineno;
  +        }
  +        if (!no || !no.match(/\d+/)) return;
  +
  +        if (e.stopPropagation) e.stopPropagation(); 
  +        e.cancelBubble = true;
  +
  +        window.scroll(0, 0);
   
           var txt = txtarea.value.replace(/\r/g, ''); // remove \r for IE
           var pos = 1; // ViTA trick.
           var startPos = 0, endPos = 0;
   
  -        // find selected line
  +        // find selected line or words
           var n = no;
           while (pos && --n) pos = 1 + txt.indexOf("\n", pos);
           startPos = (pos) ? pos : 0;
  -        // FIXME ? how can I select only selected words ?
           endPos = txt.indexOf("\n", startPos);
   
  +        // get selected text
  +        var myText = null;
  +        myText = get_selected_text(e);
  +
  +        if (myText.toString() != '') {
  +            var str = txt.substring(startPos, endPos);
  +
  +            var p = 1 + str.indexOf(myText);
  +            if (p) {
  +                startPos+= p - 1;
  +                endPos = startPos + myText.toString().length;
  +            }
  +        }
  +
           if (txtarea.selectionStart || txtarea.selectionStart == '0') {
               // Mozilla
  -            // goto
               txtarea.selectionStart = startPos;
               txtarea.selectionEnd = endPos;
   
  
  
  


1284724839;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv25482\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315722] add a missing patch to the PASTA\n\n
wkpark      2010/09/17 21:00:40

  Modified:    .        wikilib.php
  Log:
  [#315722] add a missing patch to the PASTA
  
  Revision  Changes    Path
  1.362     +3 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.361
  retrieving revision 1.362
  diff -u -r1.361 -r1.362
  --- wikilib.php	16 Sep 2010 23:24:45 -0000	1.361
  +++ wikilib.php	17 Sep 2010 12:00:39 -0000	1.362
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.361 2010/09/16 23:24:45 wkpark Exp $
  +// $Id: wikilib.php,v 1.362 2010/09/17 12:00:39 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1345,7 +1345,7 @@
   /*<![CDATA[*/
   (function() {
       function selectGuide() {
  -        var txtarea = document.getElementById('wikicontent');
  +        var txtarea = document.getElementById('editor-textarea');
           if (!txtarea) return;
   
           var guide = "$guide";
  @@ -1496,7 +1496,7 @@
   <div id="editor_area">
   $formh
   <div class="resizable-textarea" style='position:relative'><!-- IE hack -->
  -<textarea id="wikicontent" wrap="virtual" name="savetext" tabindex="1"
  +<textarea id="editor-textarea" wrap="virtual" name="savetext" tabindex="1"
    rows="$rows" cols="$cols" class="wiki resizable">$raw_body</textarea>
   $captcha
   </div>
  
  
  


1284724880;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv25534\n\nModified Files:\n	wiki.php \nLog Message:\n[#351722] use $pi['start_line'] correctly\n\n
wkpark      2010/09/17 21:01:20

  Modified:    .        wiki.php
  Log:
  [#351722] use $pi['start_line'] correctly
  
  Revision  Changes    Path
  1.626     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.625
  retrieving revision 1.626
  diff -u -r1.625 -r1.626
  --- wiki.php	16 Sep 2010 23:22:20 -0000	1.625
  +++ wiki.php	17 Sep 2010 12:01:20 -0000	1.626
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.625 2010/09/16 23:22:20 wkpark Exp $
  +// $Id: wiki.php,v 1.626 2010/09/17 12:01:20 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.625 $',1,-1);
  +$_revision = substr('$Revision: 1.626 $',1,-1);
   $_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -3221,7 +3221,7 @@
   
       $formatter=&$this;
   
  -    $this->_lidx = isset($this->pi['start_line']) ? $this->pi['start_line'] : 0;
  +    $this->_lidx = isset($pi['start_line']) ? $pi['start_line'] : 0;
       foreach ($lines as $line) {
         $this->_lidx++;
         $lid = $this->_lidx;
  
  
  


1284736562;wkpark;Update of /cvsroot/moniwiki/moniwiki/local\nIn directory kill.kldp.net:/tmp/cvs-serv24643/local\n\nModified Files:\n	pasta.js \nLog Message:\n[#315722] fixed for the mozilla firefox\n\n
wkpark      2010/09/18 00:16:04

  Modified:    local    pasta.js
  Log:
  [#315722] fixed for the mozilla firefox
  
  Revision  Changes    Path
  1.3       +28 -27    moniwiki/local/pasta.js
  
  Index: pasta.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/pasta.js,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- pasta.js	17 Sep 2010 11:59:53 -0000	1.2
  +++ pasta.js	17 Sep 2010 15:16:02 -0000	1.3
  @@ -11,7 +11,7 @@
    * @author wkpark at kldp.org
    * @since  2010/09/16
    *
  - * $Id: pasta.js,v 1.2 2010/09/17 11:59:53 wkpark Exp $
  + * $Id: pasta.js,v 1.3 2010/09/17 15:16:02 wkpark Exp $
    */
   
   /**
  @@ -23,13 +23,14 @@
   
       var node = e.target || e.srcElement;
       if (node.nodeType == 3) {
  -        if (node.nextSibling)
  +        alert(node.nodeValue);
  +        if (node.nextSibling) {
               node = node.nextSibling;
  -        else
  +        } else
               node = node.parentNode;
       }
   
  -    if (!node) return null;
  +    if (!node || node.tagName.toLowerCase() == 'textarea') return null;
   
       // try to find the line-no of the nextsibling
       var ns = node;
  @@ -43,7 +44,7 @@
               nc = nc.nextSibling;
           }
           if (nc) {
  -            node = nc;
  +            ns = nc;
               break;
           }
           ns = ns.nextSibling;
  @@ -70,14 +71,12 @@
       return no;
   }
   
  -function get_selected_text(e) {
  -    e = e || window.event;
  -
  +function get_selected_text() {
       var sel = window.getSelection ? window.getSelection():
           (document.getSelection ? document.getSelection():
           document.selection.createRange().text);
   
  -    return sel;
  +    return sel.toString();
   }
   
   (function() {
  @@ -123,8 +122,12 @@
   
           var txtarea = document.getElementById('editor-textarea');
           if (txtarea) {
  -            focusEditor(e, txtarea, no);
  -            return;
  +            var ret = focusEditor(e, txtarea, no);
  +            if (ret && e) {
  +                if (e.stopPropagation) e.stopPropagation(); 
  +                e.cancelBubble = true;
  +            }
  +            return ret;
           }
           var loc = location + '';
           if (p = loc.indexOf('action=')) {
  @@ -134,14 +137,14 @@
           }
           if (p)
               location = loc + _ap + 'action=edit#' + no;
  -        return;
  +        return true;
       }
   
       function focusEditor(e, txtarea, lineno) {
           e = e || window.event;
           if (txtarea == undefined) {
               txtarea = document.getElementById('editor-textarea');
  -            if (!txtarea) return;
  +            if (!txtarea) return false;
               txtarea.focus();
           }
   
  @@ -154,12 +157,7 @@
           } else {
               no = lineno;
           }
  -        if (!no || !no.match(/\d+/)) return;
  -
  -        if (e.stopPropagation) e.stopPropagation(); 
  -        e.cancelBubble = true;
  -
  -        window.scroll(0, 0);
  +        if (!no || !no.match(/\d+/)) return false;
   
           var txt = txtarea.value.replace(/\r/g, ''); // remove \r for IE
           var pos = 1; // ViTA trick.
  @@ -172,21 +170,22 @@
           endPos = txt.indexOf("\n", startPos);
   
           // get selected text
  -        var myText = null;
  -        myText = get_selected_text(e);
  +        var myText = get_selected_text();
   
  -        if (myText.toString() != '') {
  +        if (myText != '') {
               var str = txt.substring(startPos, endPos);
   
               var p = 1 + str.indexOf(myText);
               if (p) {
                   startPos+= p - 1;
  -                endPos = startPos + myText.toString().length;
  +                endPos = startPos + myText.length;
               }
           }
   
  +        window.scroll(0, 0);
           if (txtarea.selectionStart || txtarea.selectionStart == '0') {
               // Mozilla
  +            txtarea.focus();
               txtarea.selectionStart = startPos;
               txtarea.selectionEnd = endPos;
   
  @@ -207,19 +206,21 @@
           // reposition cursor if possible
           if (txtarea.createTextRange)
               txtarea.caretPos = document.selection.createRange().duplicate();
  +
  +        return true;
       }
   
       // onload
       var oldOnload = window.onload;
  -    window.onload = function() {
  +    window.onload = function(ev) {
           try { oldOnload(); } catch(e) {};
  -        focusEditor();
  +        focusEditor(ev);
       }
   
       var old_dblclick = document.ondblclick;
  -    document.ondblclick = function() {
  +    document.ondblclick = function(ev) {
           try { old_dblclick(); } catch(e) {};
  -        edithandler();
  +        edithandler(ev);
       }
   })();
   
  
  
  


1284738936;wkpark;Update of /cvsroot/moniwiki/moniwiki/css\nIn directory kill.kldp.net:/tmp/cvs-serv29112/css\n\nModified Files:\n	kbd.js \nLog Message:\n[#315722] support pasta.js with kbd.js\n\n
1284738936;wkpark;Update of /cvsroot/moniwiki/moniwiki/local\nIn directory kill.kldp.net:/tmp/cvs-serv29112/local\n\nModified Files:\n	pasta.js \nLog Message:\n[#315722] support pasta.js with kbd.js\n\n
wkpark      2010/09/18 00:55:37

  Modified:    css      kbd.js
               local    pasta.js
  Log:
  [#315722] support pasta.js with kbd.js
  
  Revision  Changes    Path
  1.24      +9 -3      moniwiki/css/kbd.js
  
  Index: kbd.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/kbd.js,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- kbd.js	5 Oct 2009 18:18:38 -0000	1.23
  +++ kbd.js	17 Sep 2010 15:55:36 -0000	1.24
  @@ -6,7 +6,7 @@
   
      distributable under GPL
   
  -   $Id: kbd.js,v 1.23 2009/10/05 18:18:38 wkpark Exp $
  +   $Id: kbd.js,v 1.24 2010/09/17 15:55:36 wkpark Exp $
   
      CHANGES
   
  @@ -268,12 +268,18 @@
   		break;
   	case 'e': case 'r': case 'w':
   		// Edit/write or refresh
  +		var no = null;
  +		var target = '';
  +		if (typeof get_src_line == 'function') {
  +			no = get_src_line(true);
  +			target = '#' + no;
  +		}
   		if ((i=loc.indexOf(_ap)) != -1 && loc.substr(i+1,5) == "goto=") { // deprecated
   			loc=loc.substr(i+6,loc.length-6);
   			if ((i=loc.indexOf('&')) != -1) loc=loc.substring(0,i);
   			if (ch == "e" || ch == "w")
   				self.location=_script_name + _qp + loc + _ap +
  -					'action=edit';
  +					'action=edit' + target;
   			if (ch == "r") {
   				if ((i=loc.indexOf('#')) != -1)
   					loc=loc.substring(0,i);
  @@ -283,7 +289,7 @@
   		} else {
   			if (i != -1) loc=loc.substr(0,i);
   			else if ((i=loc.indexOf('#')) != -1) loc=loc.substring(0,i);
  -			if (ch == "e" || ch == "w") self.location = loc + _ap + 'action=edit';
  +			if (ch == "e" || ch == "w") self.location = loc + _ap + 'action=edit' + target;
   			if (ch == "r") self.location = loc + _ap + 'action=show';
   		}
   		break;
  
  
  
  1.4       +26 -8     moniwiki/local/pasta.js
  
  Index: pasta.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/pasta.js,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- pasta.js	17 Sep 2010 15:16:02 -0000	1.3
  +++ pasta.js	17 Sep 2010 15:55:36 -0000	1.4
  @@ -11,7 +11,7 @@
    * @author wkpark at kldp.org
    * @since  2010/09/16
    *
  - * $Id: pasta.js,v 1.3 2010/09/17 15:16:02 wkpark Exp $
  + * $Id: pasta.js,v 1.4 2010/09/17 15:55:36 wkpark Exp $
    */
   
   /**
  @@ -19,15 +19,33 @@
    *
    */
   function get_src_line(e) {
  +    var node;
       e = e || window.event;
   
  -    var node = e.target || e.srcElement;
  -    if (node.nodeType == 3) {
  -        alert(node.nodeValue);
  -        if (node.nextSibling) {
  -            node = node.nextSibling;
  -        } else
  -            node = node.parentNode;
  +    if (e && e != true) {
  +        node = e.target || e.srcElement;
  +        if (node.nodeType == 3) {
  +            if (node.nextSibling) {
  +                node = node.nextSibling;
  +            } else
  +                node = node.parentNode;
  +        }
  +    } else {
  +        var sel = window.getSelection ? window.getSelection():
  +            (document.getSelection ? document.getSelection():
  +            document.selection.createRange());
  +
  +        if (sel.focusNode) {
  +            node = sel.focusNode;
  +            if (node.nodeType == 3) {
  +                if (node.nextSibling) {
  +                    node = node.nextSibling;
  +                } else
  +                    node = node.parentNode;
  +            }
  +        } else {
  +            try { node = sel.parentElement(); } catch (x) { return null; };
  +        }
       }
   
       if (!node || node.tagName.toLowerCase() == 'textarea') return null;
  
  
  


1284742652;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv7703\n\nModified Files:\n	wiki.php wikilib.php \nLog Message:\n[#315722] #nolinenum PI added to render wikitext without line-number id.\n\n
wkpark      2010/09/18 01:57:33

  Modified:    .        wiki.php wikilib.php
  Log:
  [#315722] #nolinenum PI added to render wikitext without line-number id.
  
  Revision  Changes    Path
  1.627     +15 -10    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.626
  retrieving revision 1.627
  diff -u -r1.626 -r1.627
  --- wiki.php	17 Sep 2010 12:01:20 -0000	1.626
  +++ wiki.php	17 Sep 2010 16:57:32 -0000	1.627
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.626 2010/09/17 12:01:20 wkpark Exp $
  +// $Id: wiki.php,v 1.627 2010/09/17 16:57:32 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.626 $',1,-1);
  +$_revision = substr('$Revision: 1.627 $',1,-1);
   $_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -1707,7 +1707,7 @@
       global $Config;
       $pikeys=array('#redirect','#action','#title','#notitle','#keywords','#noindex',
         '#format','#filter','#postfilter','#twinpages','#notwins','#nocomment','#comment',
  -      '#language','#camelcase','#nocamelcase','#cache','#nocache','#alias',
  +      '#language','#camelcase','#nocamelcase','#cache','#nocache','#alias', '#linenum', '#nolinenum',
         '#singlebracket','#nosinglebracket','#rating','#norating','#nodtd');
       $pi=array();
   
  @@ -1791,6 +1791,7 @@
         if (isset($pi['#nocache'])) $pi['#cache']=0;
         if (isset($pi['#nofilter'])) unset($pi['#filter']);
         if (isset($pi['#nosinglebracket'])) $pi['#singlebracket']=0;
  +      if (isset($pi['#nolinenum'])) $pi['#linenum']=0;
       }
   
       if (empty($pi['#format']) and !empty($format)) $pi['#format']=$format; // override default
  @@ -3221,10 +3222,14 @@
   
       $formatter=&$this;
   
  -    $this->_lidx = isset($pi['start_line']) ? $pi['start_line'] : 0;
  +    if (isset($formatter->pi['#linenum']) and empty($formatter->pi['#linenum']))
  +      $this->linenum = -99999;
  +    else
  +      $this->linenum = isset($pi['start_line']) ? $pi['start_line'] : 0;
  +
       foreach ($lines as $line) {
  -      $this->_lidx++;
  -      $lid = $this->_lidx;
  +      $this->linenum++;
  +      $lid = $this->linenum;
         # empty line
         if (!strlen($line) and empty($oline)) {
           if ($in_pre) { $this->pre_line.="\n";continue;}
  @@ -3352,7 +3357,7 @@
           if ($this->auto_linebreak) $this->nobr=1; // XXX
           if ($in_p) { $p_closeopen=$this->_div(0,$in_div,$div_enclose); $in_p='';}
         } else if ($in_p == '' and $line!=='') {
  -        $p_closeopen=$this->_div(1,$in_div,$div_enclose, ' id="aline-'.$lid.'"');
  +        $p_closeopen=$this->_div(1,$in_div,$div_enclose, $lid > 0 ? ' id="aline-'.$lid.'"' : '');
           $in_p= $line;
         }
   
  @@ -3506,7 +3511,7 @@
           {
             $tr_attr='';
             $row=$this->_td($line,$tr_attr);
  -          if ($lid) $tr_attr.= ' id="line-'.$lid.'"';
  +          if ($lid > 0) $tr_attr.= ' id="line-'.$lid.'"';
             $line="<tr $tr_attr>".$row.'</tr>';
             $tr_attr='';
             $lid = '';
  @@ -3557,7 +3562,7 @@
             $anchor_id='sect-'.$this->sect_num;
             $anchor="<a id='$anchor_id'></a>";
           }
  -        $attr=' id="line-'.$lid.'"';
  +        $attr = $lid > 0 ? ' id="line-'.$lid.'"' : '';
           if (!empty($DBInfo->use_folding)) {
             if ($DBInfo->use_folding == 1) {
               $attr.=" onclick=\"document.getElementById('sc-$this->sect_num').style.display=document.getElementById('sc-$this->sect_num').style.display!='none'? 'none':'block';\"";
  @@ -3693,7 +3698,7 @@
         }
   
         $lidx = '';
  -      if ($lid) $lidx = "<span class='line-anchor' id='line-".$lid."'></span>";
  +      if ($lid > 0) $lidx = "<span class='line-anchor' id='line-".$lid."'></span>";
   
         if ($this->auto_linebreak && !$in_table && !$this->nobr)
           $text.=$line.$lidx."<br />\n"; 
  
  
  
  1.363     +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.362
  retrieving revision 1.363
  diff -u -r1.362 -r1.363
  --- wikilib.php	17 Sep 2010 12:00:39 -0000	1.362
  +++ wikilib.php	17 Sep 2010 16:57:32 -0000	1.363
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.362 2010/09/17 12:00:39 wkpark Exp $
  +// $Id: wikilib.php,v 1.363 2010/09/17 16:57:32 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -996,7 +996,7 @@
       $form=preg_replace('/\[\[EditText\]\]/i','#editform',$form);
       ob_start();
       $opi=$formatter->pi; // save pi
  -    $formatter->pi=array('#format'=>'wiki'); // XXX override pi
  +    $formatter->pi=array('#format'=>'wiki', '#linenum'=>0); // XXX override pi
       $formatter->send_page(rtrim($form),$options);
       $formatter->pi=$opi; // restore pi
       $form= ob_get_contents();
  
  
  


1284743992;wkpark;Update of /cvsroot/moniwiki/moniwiki/local\nIn directory kill.kldp.net:/tmp/cvs-serv14111/local\n\nModified Files:\n	pasta.js \nLog Message:\n[#315722] rename get_src_line() to get_src_line_num()\n * fixed for latest Opera\n\n
wkpark      2010/09/18 02:19:53

  Modified:    local    pasta.js
  Log:
  [#315722] rename get_src_line() to get_src_line_num()
   * fixed for latest Opera
  
  Revision  Changes    Path
  1.5       +11 -5     moniwiki/local/pasta.js
  
  Index: pasta.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/pasta.js,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- pasta.js	17 Sep 2010 15:55:36 -0000	1.4
  +++ pasta.js	17 Sep 2010 17:19:52 -0000	1.5
  @@ -11,17 +11,18 @@
    * @author wkpark at kldp.org
    * @since  2010/09/16
    *
  - * $Id: pasta.js,v 1.4 2010/09/17 15:55:36 wkpark Exp $
  + * $Id: pasta.js,v 1.5 2010/09/17 17:19:52 wkpark Exp $
    */
   
   /**
    * try to find line-anchor to get the line number of wikitext from html
    *
    */
  -function get_src_line(e) {
  +function get_src_line_num(e) {
       var node;
       e = e || window.event;
   
  +    // get double clicked target node
       if (e && e != true) {
           node = e.target || e.srcElement;
           if (node.nodeType == 3) {
  @@ -31,6 +32,7 @@
                   node = node.parentNode;
           }
       } else {
  +        // get selected target node
           var sel = window.getSelection ? window.getSelection():
               (document.getSelection ? document.getSelection():
               document.selection.createRange());
  @@ -135,7 +137,7 @@
   
       function edithandler(e) {
           e = e || window.event;
  -        var no = get_src_line(e);
  +        var no = get_src_line_num(e);
           if (!no) return false;
   
           var txtarea = document.getElementById('editor-textarea');
  @@ -177,7 +179,11 @@
           }
           if (!no || !no.match(/\d+/)) return false;
   
  -        var txt = txtarea.value.replace(/\r/g, ''); // remove \r for IE
  +        if (!window.opera)
  +            var txt = txtarea.value.replace(/\r/g, ''); // remove \r for IE
  +        else
  +            var txt = txtarea.value;
  +
           var pos = 1; // ViTA trick.
           var startPos = 0, endPos = 0;
   
  @@ -209,7 +215,7 @@
   
               var scroll = scrollTo(txtarea, txt.substr(0, startPos), 50);
               txtarea.scrollTop = scroll;
  -        } else if (document.selection && !is_gecko && !is_opera) {
  +        } else if (document.selection) {
               // IE
               txtarea.focus();
               var r = document.selection.createRange();
  
  
  


1285168665;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv32223\n\nModified Files:\n	RecentChanges.php \nLog Message:\n[#315699] accept items option too\n\n
wkpark      2010/09/23 00:17:46

  Modified:    plugin   RecentChanges.php
  Log:
  [#315699] accept items option too
  
  Revision  Changes    Path
  1.57      +3 -3      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.56
  retrieving revision 1.57
  diff -u -r1.56 -r1.57
  --- RecentChanges.php	16 Sep 2010 08:45:56 -0000	1.56
  +++ RecentChanges.php	22 Sep 2010 15:17:45 -0000	1.57
  @@ -7,10 +7,10 @@
   // Name: RecentChanges
   // Description: Show RecentChanges of the Wiki
   // URL: MoniWiki:RecentChangesPlugin
  -// Version: $Revision: 1.56 $
  +// Version: $Revision: 1.57 $
   // Depend: 1.1.3
   // License: GPL
  -// $Id: RecentChanges.php,v 1.56 2010/09/16 08:45:56 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.57 2010/09/22 15:17:45 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     global $DBInfo;
  @@ -129,7 +129,7 @@
       if (($p=strpos($arg,'='))!==false) {
         $k=trim(substr($arg,0,$p));
         $v=trim(substr($arg,$p+1));
  -      if ($k=='item') $opts['items']=min((int)$v,RC_MAX_ITEMS);
  +      if ($k=='item' or $k=='items') $opts['items']=min((int)$v,RC_MAX_ITEMS);
         else if ($k=='days') $days=min(abs($v),RC_MAX_DAYS);
         else if ($k=='ago') $opts['ago']=abs($v);
         else if ($k=="new") $checknew=$v;
  
  
  


1285169362;wkpark;Update of /cvsroot/moniwiki/moniwiki/css\nIn directory kill.kldp.net:/tmp/cvs-serv32406\n\nModified Files:\n	kbd.js \nLog Message:\n[#315722] fixed get_src_line() to get_src_line_num()\ncheck validity of selected line-no \n\n
wkpark      2010/09/23 00:29:23

  Modified:    css      kbd.js
  Log:
  [#315722] fixed get_src_line() to get_src_line_num()
  check validity of selected line-no
  
  Revision  Changes    Path
  1.25      +5 -4      moniwiki/css/kbd.js
  
  Index: kbd.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/kbd.js,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- kbd.js	17 Sep 2010 15:55:36 -0000	1.24
  +++ kbd.js	22 Sep 2010 15:29:22 -0000	1.25
  @@ -6,7 +6,7 @@
   
      distributable under GPL
   
  -   $Id: kbd.js,v 1.24 2010/09/17 15:55:36 wkpark Exp $
  +   $Id: kbd.js,v 1.25 2010/09/22 15:29:22 wkpark Exp $
   
      CHANGES
   
  @@ -270,9 +270,10 @@
   		// Edit/write or refresh
   		var no = null;
   		var target = '';
  -		if (typeof get_src_line == 'function') {
  -			no = get_src_line(true);
  -			target = '#' + no;
  +		if (typeof get_src_line_num == 'function') {
  +			no = get_src_line_num(true);
  +			if (no != null)
  +				target = '#' + no;
   		}
   		if ((i=loc.indexOf(_ap)) != -1 && loc.substr(i+1,5) == "goto=") { // deprecated
   			loc=loc.substr(i+6,loc.length-6);
  
  
  


1285171515;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv4184\n\nModified Files:\n      Tag: B_1_1_5\n	wiki.php wikilib.php \nLog Message:\nmerged from trunk [#315717]\n\n#315727	fix to detect processor alias correctly\n#315663	fixed cross-domain iframe scripting for IE6 by nori\n#315726	use selection method to select the help msgs of edit form in the textarea\n#315724\n * enhanced LikePages action : add all words to search similar pages.\n * more sophisticated start/end regex to get correct results\n#315722	auto cursor positioning and scrolling in TextArea (pasta.js)\n#315716	fixed admin plugin to accept more general plugin infos.\n#315712	fixed {{{code}}}markup disapearing bug in the TOC macro\n#315711	fixd kbd.js bug with no pagename given.\n#315699 support bookmark reset. / accept items option / fixed notice warning\n\n
1285171515;wkpark;Update of /cvsroot/moniwiki/moniwiki/css\nIn directory kill.kldp.net:/tmp/cvs-serv4184/css\n\nModified Files:\n      Tag: B_1_1_5\n	kbd.js \nLog Message:\nmerged from trunk [#315717]\n\n#315727	fix to detect processor alias correctly\n#315663	fixed cross-domain iframe scripting for IE6 by nori\n#315726	use selection method to select the help msgs of edit form in the textarea\n#315724\n * enhanced LikePages action : add all words to search similar pages.\n * more sophisticated start/end regex to get correct results\n#315722	auto cursor positioning and scrolling in TextArea (pasta.js)\n#315716	fixed admin plugin to accept more general plugin infos.\n#315712	fixed {{{code}}}markup disapearing bug in the TOC macro\n#315711	fixd kbd.js bug with no pagename given.\n#315699 support bookmark reset. / accept items option / fixed notice warning\n\n
1285171515;wkpark;Update of /cvsroot/moniwiki/moniwiki/local\nIn directory kill.kldp.net:/tmp/cvs-serv4184/local\n\nModified Files:\n      Tag: B_1_1_5\n	textarea.js \nAdded Files:\n      Tag: B_1_1_5\n	pasta.js \nLog Message:\nmerged from trunk [#315717]\n\n#315727	fix to detect processor alias correctly\n#315663	fixed cross-domain iframe scripting for IE6 by nori\n#315726	use selection method to select the help msgs of edit form in the textarea\n#315724\n * enhanced LikePages action : add all words to search similar pages.\n * more sophisticated start/end regex to get correct results\n#315722	auto cursor positioning and scrolling in TextArea (pasta.js)\n#315716	fixed admin plugin to accept more general plugin infos.\n#315712	fixed {{{code}}}markup disapearing bug in the TOC macro\n#315711	fixd kbd.js bug with no pagename given.\n#315699 support bookmark reset. / accept items option / fixed notice warning\n\n
1285171515;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv4184/plugin\n\nModified Files:\n      Tag: B_1_1_5\n	Info.php LikePages.php RecentChanges.php UploadForm.php \n	bookmark.php \nLog Message:\nmerged from trunk [#315717]\n\n#315727	fix to detect processor alias correctly\n#315663	fixed cross-domain iframe scripting for IE6 by nori\n#315726	use selection method to select the help msgs of edit form in the textarea\n#315724\n * enhanced LikePages action : add all words to search similar pages.\n * more sophisticated start/end regex to get correct results\n#315722	auto cursor positioning and scrolling in TextArea (pasta.js)\n#315716	fixed admin plugin to accept more general plugin infos.\n#315712	fixed {{{code}}}markup disapearing bug in the TOC macro\n#315711	fixd kbd.js bug with no pagename given.\n#315699 support bookmark reset. / accept items option / fixed notice warning\n\n
wkpark      2010/09/23 01:05:16

  Modified:    .        Tag: B_1_1_5 wiki.php wikilib.php
               css      Tag: B_1_1_5 kbd.js
               local    Tag: B_1_1_5 textarea.js
               plugin   Tag: B_1_1_5 Info.php LikePages.php
                        RecentChanges.php UploadForm.php bookmark.php
  Added:       local    Tag: B_1_1_5 pasta.js
  Log:
  merged from trunk [#315717]
  
  #315727	fix to detect processor alias correctly
  #315663	fixed cross-domain iframe scripting for IE6 by nori
  #315726	use selection method to select the help msgs of edit form in the textarea
  #315724
   * enhanced LikePages action : add all words to search similar pages.
   * more sophisticated start/end regex to get correct results
  #315722	auto cursor positioning and scrolling in TextArea (pasta.js)
  #315716	fixed admin plugin to accept more general plugin infos.
  #315712	fixed {{{code}}}markup disapearing bug in the TOC macro
  #315711	fixd kbd.js bug with no pagename given.
  #315699 support bookmark reset. / accept items option / fixed notice warning
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.600.2.5 +43 -30    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.600.2.4
  retrieving revision 1.600.2.5
  diff -u -r1.600.2.4 -r1.600.2.5
  --- wiki.php	14 Sep 2010 21:05:41 -0000	1.600.2.4
  +++ wiki.php	22 Sep 2010 16:05:14 -0000	1.600.2.5
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.600.2.4 2010/09/14 21:05:41 wkpark Exp $
  +// $Id: wiki.php,v 1.600.2.5 2010/09/22 16:05:14 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.600.2.4 $',1,-1);
  +$_revision = substr('$Revision: 1.600.2.5 $',1,-1);
   $_release = '1.1.6-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -1439,7 +1439,7 @@
   
     function rlog($pagename,$rev='',$opt='',$oldopt='') {
       $dmark = '';
  -    if ($rev[0] == '>' or $rev[0] == '<') {
  +    if (isset($rev[0]) and in_array($rev[0], array('>', '<'))) {
         $dmark = $rev[0];
         $rev = substr($rev, 1);
       }
  @@ -1918,7 +1918,8 @@
             $info = array();
             $tmp=preg_replace("/date:\s(.*);\s+author:.*;\s+state:.*;/","\\1",rtrim($line));
             $tmp=explode('lines:',$tmp);
  -          $info[0]=$tmp[0];$info[1]=$tmp[1];
  +          $info[0]=$tmp[0];
  +          $info[1]=isset($tmp[1]) ? $tmp[1] : '';
             $state=1;
           } else if ($state) {
             list($info[2],$info[3],$info[4])=explode(';;',$line,3);
  @@ -2319,7 +2320,7 @@
       global $Config;
       $pikeys=array('#redirect','#action','#title','#notitle','#keywords','#noindex',
         '#format','#filter','#postfilter','#twinpages','#notwins','#nocomment','#comment',
  -      '#language','#camelcase','#nocamelcase','#cache','#nocache','#alias',
  +      '#language','#camelcase','#nocamelcase','#cache','#nocache','#alias', '#linenum', '#nolinenum',
         '#singlebracket','#nosinglebracket','#rating','#norating','#nodtd');
       $pi=array();
   
  @@ -2373,7 +2374,9 @@
   
         $notused=array();
         $pilines=array();
  +      $body_start = 0;
         while ($body and $body[0] == '#') {
  +        $body_start++;
           # extract first line
           list($line, $body)= explode("\n", $body,2);
           if ($line=='#') break;
  @@ -2401,6 +2404,7 @@
         if (isset($pi['#nocache'])) $pi['#cache']=0;
         if (isset($pi['#nofilter'])) unset($pi['#filter']);
         if (isset($pi['#nosinglebracket'])) $pi['#singlebracket']=0;
  +      if (isset($pi['#nolinenum'])) $pi['#linenum']=0;
       }
   
       if (empty($pi['#format']) and !empty($format)) $pi['#format']=$format; // override default
  @@ -2415,6 +2419,7 @@
       if (!empty($update_body)) $this->page->write($body." "); # workaround XXX
       #if ($update_body) $this->page->write($body);
       $pi['raw']=!empty($piline) ? $piline : '';
  +    $pi['start_line'] = $body_start;
       return $pi;
     }
   
  @@ -3174,9 +3179,9 @@
   
       if ($f) {
         if (!empty($this->use_smartdiff) and
  -        preg_match("/\006|\010/", $value)) $processor='plain';
  +        preg_match("/\006|\010/", $value)) $pf='plain';
   
  -      $ret= call_user_func_array("processor_$processor",array(&$this,$value,$options));
  +      $ret= call_user_func_array("processor_$pf",array(&$this,$value,$options));
         if (!is_string($ret)) return $ret;
         return $bra.$ret.$ket;
       }
  @@ -3815,7 +3820,14 @@
   
       $formatter=&$this;
   
  +    if (isset($formatter->pi['#linenum']) and empty($formatter->pi['#linenum']))
  +      $this->linenum = -99999;
  +    else
  +      $this->linenum = isset($pi['start_line']) ? $pi['start_line'] : 0;
  +
       foreach ($lines as $line) {
  +      $this->linenum++;
  +      $lid = $this->linenum;
         # empty line
         if (!strlen($line) and empty($oline)) {
           if ($in_pre) { $this->pre_line.="\n";continue;}
  @@ -3943,7 +3955,7 @@
           if ($this->auto_linebreak) $this->nobr=1; // XXX
           if ($in_p) { $p_closeopen=$this->_div(0,$in_div,$div_enclose); $in_p='';}
         } else if ($in_p == '' and $line!=='') {
  -        $p_closeopen=$this->_div(1,$in_div,$div_enclose);
  +        $p_closeopen=$this->_div(1,$in_div,$div_enclose, $lid > 0 ? ' id="aline-'.$lid.'"' : '');
           $in_p= $line;
         }
   
  @@ -4097,8 +4109,10 @@
           {
             $tr_attr='';
             $row=$this->_td($line,$tr_attr);
  +          if ($lid > 0) $tr_attr.= ' id="line-'.$lid.'"';
             $line="<tr $tr_attr>".$row.'</tr>';
             $tr_attr='';
  +          $lid = '';
           }
   
           $line=str_replace('\"','"',$line); # revert \\" to \"
  @@ -4146,14 +4160,15 @@
             $anchor_id='sect-'.$this->sect_num;
             $anchor="<a id='$anchor_id'></a>";
           }
  -        $attr='';
  +        $attr = $lid > 0 ? ' id="line-'.$lid.'"' : '';
           if (!empty($DBInfo->use_folding)) {
             if ($DBInfo->use_folding == 1) {
  -            $attr=" onclick=\"document.getElementById('sc-$this->sect_num').style.display=document.getElementById('sc-$this->sect_num').style.display!='none'? 'none':'block';\"";
  +            $attr.=" onclick=\"document.getElementById('sc-$this->sect_num').style.display=document.getElementById('sc-$this->sect_num').style.display!='none'? 'none':'block';\"";
             } else {
  -            $attr=" onclick=\"foldingSection(this,'sc-$this->sect_num');\"";
  +            $attr.=" onclick=\"foldingSection(this,'sc-$this->sect_num');\"";
             }
           }
  +        $lid = '';
   
           $line=$anchor.$edit.$this->head_repl(strlen($m[1]),$m[2],$headinfo,$attr);
           $dummy='';
  @@ -4279,10 +4294,14 @@
            }
            $this->nobr=1;
         }
  +
  +      $lidx = '';
  +      if ($lid > 0) $lidx = "<span class='line-anchor' id='line-".$lid."'></span>";
  +
         if ($this->auto_linebreak && !$in_table && !$this->nobr)
  -        $text.=$line."<br />\n"; 
  +        $text.=$line.$lidx."<br />\n"; 
         else
  -        $text.=$line ? $line."\n":'';
  +        $text.=$line ? $line.$lidx."\n":'';
         $this->nobr=0;
         # empty line for quoted div
         if (!$this->auto_linebreak and !$in_pre and trim($line) =='')
  @@ -5373,7 +5392,7 @@
       var txt = decodeURIComponent(escape(trails[i])).replace(/\\+/g, " ");
       str[i] = "<a href='" + url_prefix + query_prefix + url + "'>" + txt + "</a>";
     }
  -  str[i] = decodeURIComponent(escape(trails[i])).replace(/\\+/, " ");
  +  str[i] = decodeURIComponent(escape(trails[i])).replace(/\\+/g, " ");
     document.write(str.join("<span class='separator'>$DBInfo->arrow</span>"));
   })();
   </script>
  @@ -5534,24 +5553,18 @@
       $goto=isset($_POST['goto'][0]) ? $_POST['goto']:(isset($_GET['goto'][0]) ? $_GET['goto'] : '');
       if (isset($goto[0])) $pagename=$goto;
       else {
  -      $pagename = $_SERVER['QUERY_STRING'];
  -      $temp = strtok($pagename,"&");
  -      $p=strpos($temp,"=");
  -      if (!$temp or $p===false) {
  -        if (preg_match('/^([^&=]+)/',$pagename,$matches)) {
  -          $pagename = urldecode($matches[1]);
  -          $_SERVER['QUERY_STRING']=substr($_SERVER['QUERY_STRING'],strlen($pagename));
  -        }
  -      } else if ($p>0) {
  -        $k = substr($temp,0,$p);
  -        $v = substr($temp,$p+1);
  -        if ($k =='value') {
  -          $pagename= substr($temp,$p+1);
  -          $_SERVER['QUERY_STRING']=substr($_SERVER['QUERY_STRING'],strlen($temp));
  -        } else if ($k =='action' and $v =='login') {
  -          $pagename="UserPreferences";
  +      parse_str($_SERVER['QUERY_STRING'], $arr);
  +      $keys = array_keys($arr);
  +      if (!empty($arr['action'])) {
  +        if ($arr['action'] == 'edit') {
  +          if (!empty($arr['value'])) $pagename = $arr['value'];
  +        } else if ($arr['action'] == 'login') {
  +          $pagename = 'UserPreferences';
           }
  +        unset($arr['action']);
         }
  +      foreach ($arr as $k=>$v)
  +        if (empty($v)) $pagename = $k;
       }
     }
     if (isset($pagename[0])) {
  
  
  
  1.344.2.4 +78 -10    moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.344.2.3
  retrieving revision 1.344.2.4
  diff -u -r1.344.2.3 -r1.344.2.4
  --- wikilib.php	14 Sep 2010 21:05:41 -0000	1.344.2.3
  +++ wikilib.php	22 Sep 2010 16:05:14 -0000	1.344.2.4
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.344.2.3 2010/09/14 21:05:41 wkpark Exp $
  +// $Id: wikilib.php,v 1.344.2.4 2010/09/22 16:05:14 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -996,7 +996,7 @@
       $form=preg_replace('/\[\[EditText\]\]/i','#editform',$form);
       ob_start();
       $opi=$formatter->pi; // save pi
  -    $formatter->pi=array('#format'=>'wiki'); // XXX override pi
  +    $formatter->pi=array('#format'=>'wiki', '#linenum'=>0); // XXX override pi
       $formatter->send_page(rtrim($form),$options);
       $formatter->pi=$opi; // restore pi
       $form= ob_get_contents();
  @@ -1160,7 +1160,12 @@
   }
   
   function _get_sections($body,$lim=5) {
  -  $tmp = preg_split("/(\{\{\{.+?\}\}\})/s",$body,-1, PREG_SPLIT_DELIM_CAPTURE);
  +  $tmp = preg_split("/({{{
  +            (?:(?:[^{}]+|
  +            {[^{}]+}(?!})|
  +            (?<!{){{1,2}(?!{)|
  +            (?<!})}{1,2}(?!}))|(?1)
  +            )+}}})/x", $body, -1, PREG_SPLIT_DELIM_CAPTURE);
   
     // fix for inline {{{foobar}}} in the headings.
     $chunks = array();
  @@ -1302,6 +1307,7 @@
   
     $form.=$menu;
     $ajax = '';
  +  $js = '';
     if (!empty($options['action_mode']) and $options['action_mode']=='ajax') {
       $ajax=" onsubmit='savePage(this);return false'";
     }
  @@ -1328,10 +1334,53 @@
       }
     } else {
       if (strpos($options['page'],' ') > 0) {
  -      $raw_body="#title $options[page]\n";
  -      $options['page']='['.$options['page'].']';
  +      #$raw_body="#title $options[page]\n";
  +      $options['page']='["'.$options['page'].'"]';
       } else $raw_body='';
  -    $raw_body.= sprintf(_("Describe %s here"), $options['page']);
  +    $guide = sprintf(_("Describe %s here"), $options['page']);
  +    $raw_body.= $guide;
  +    $guide = str_replace('"', '\\"', $guide);
  +    $js=<<<EOF
  +<script type="text/javascript">
  +/*<![CDATA[*/
  +(function() {
  +    function selectGuide() {
  +        var txtarea = document.getElementById('editor-textarea');
  +        if (!txtarea) return;
  +
  +        var guide = "$guide";
  +        txtarea.focus();
  +        var txt = txtarea.value;
  +        var pos = 1 + txt.indexOf(guide);
  +        if (!pos) return;
  +        pos--;
  +        var end = pos + guide.length;
  +
  +        if (txtarea.selectionStart || txtarea.selectionStart == '0') {
  +            // goto
  +            txtarea.selectionStart = pos;
  +            txtarea.selectionEnd = end;
  +        } else if (document.selection && !is_gecko && !is_opera) {
  +            // IE
  +            var r = document.selection.createRange();
  +            var range = r.duplicate();
  +
  +            range.moveStart('character', pos);
  +            range.moveEnd('character', end - pos);
  +            r.setEndPoint('StartToStart', range);
  +            range.select();
  +        }
  +    }
  +
  +    var oldOnLoad = window.onLoad;
  +    window.onload = function() {
  +        try { oldOnLoad() } catch(e) {};
  +        selectGuide();
  +    }
  +})();
  +/*]]>*/
  +</script>\n
  +EOF;
     }
   
   
  @@ -1447,7 +1496,7 @@
   <div id="editor_area">
   $formh
   <div class="resizable-textarea" style='position:relative'><!-- IE hack -->
  -<textarea id="wikicontent" wrap="virtual" name="savetext" tabindex="1"
  +<textarea id="editor-textarea" wrap="virtual" name="savetext" tabindex="1"
    rows="$rows" cols="$cols" class="wiki resizable">$raw_body</textarea>
   $captcha
   </div>
  @@ -1474,7 +1523,7 @@
       $form.= $formatter->macro_repl('EditHints');
     if (empty($options['simple']))
       $form.= "<a id='preview'></a>";
  -  return $form.$resizer;
  +  return $form.$resizer.$js;
   }
   
   
  @@ -3335,7 +3384,26 @@
    } else {
      $body=$formatter->text;
    }
  - $body=preg_replace("/\{\{\{.+?\}\}\}/s",'',$body);
  +
  + // remove processor blocks
  + $chunk = preg_split("/({{{
  +            (?:(?:[^{}]+|
  +            {[^{}]+}(?!})|
  +            (?<!{){{1,2}(?!{)|
  +            (?<!})}{1,2}(?!}))|(?1)
  +            )+}}})/x", $body, -1, PREG_SPLIT_DELIM_CAPTURE);
  + $sz = count($chunk);
  + $k = 1;
  + $body = '';
  + foreach ($chunk as $c) {
  +   if ($k % 2) {
  +     $body.= $c;
  +   } else if (!strstr($c, "\n")) {
  +     $body.= $c;
  +   }
  +   $k++;
  + }
  +
    $opts = array('nomacro'=>1); // disable macros in headings
    $wordrule = $formatter->wordrule .= '|'.$formatter->footrule;
    $lines=explode("\n",$body);
  @@ -3355,7 +3423,7 @@
      $head=preg_replace($formatter->baserule,$formatter->baserepl,$head);
      $head=preg_replace("/(".$wordrule.")/e",
        "\$formatter->link_repl('\\1', '', \$opts)",$head);
  -   if ($simple)
  +   if (!empty($simple))
        $head=strip_tags($head,'<b><i><img><sub><sup><del><tt><u><strong>');
   
      if (empty($depth_top)) { $depth_top=$dep; $depth=1; }
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.23.6.1  +10 -3     moniwiki/css/kbd.js
  
  Index: kbd.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/kbd.js,v
  retrieving revision 1.23
  retrieving revision 1.23.6.1
  diff -u -r1.23 -r1.23.6.1
  --- kbd.js	5 Oct 2009 18:18:38 -0000	1.23
  +++ kbd.js	22 Sep 2010 16:05:15 -0000	1.23.6.1
  @@ -6,7 +6,7 @@
   
      distributable under GPL
   
  -   $Id: kbd.js,v 1.23 2009/10/05 18:18:38 wkpark Exp $
  +   $Id: kbd.js,v 1.23.6.1 2010/09/22 16:05:15 wkpark Exp $
   
      CHANGES
   
  @@ -268,12 +268,19 @@
   		break;
   	case 'e': case 'r': case 'w':
   		// Edit/write or refresh
  +		var no = null;
  +		var target = '';
  +		if (typeof get_src_line_num == 'function') {
  +			no = get_src_line_num(true);
  +			if (no != null)
  +				target = '#' + no;
  +		}
   		if ((i=loc.indexOf(_ap)) != -1 && loc.substr(i+1,5) == "goto=") { // deprecated
   			loc=loc.substr(i+6,loc.length-6);
   			if ((i=loc.indexOf('&')) != -1) loc=loc.substring(0,i);
   			if (ch == "e" || ch == "w")
   				self.location=_script_name + _qp + loc + _ap +
  -					'action=edit';
  +					'action=edit' + target;
   			if (ch == "r") {
   				if ((i=loc.indexOf('#')) != -1)
   					loc=loc.substring(0,i);
  @@ -283,7 +290,7 @@
   		} else {
   			if (i != -1) loc=loc.substr(0,i);
   			else if ((i=loc.indexOf('#')) != -1) loc=loc.substring(0,i);
  -			if (ch == "e" || ch == "w") self.location = loc + _ap + 'action=edit';
  +			if (ch == "e" || ch == "w") self.location = loc + _ap + 'action=edit' + target;
   			if (ch == "r") self.location = loc + _ap + 'action=show';
   		}
   		break;
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.8.2.1   +2 -2      moniwiki/local/textarea.js
  
  Index: textarea.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/textarea.js,v
  retrieving revision 1.8
  retrieving revision 1.8.2.1
  diff -u -r1.8 -r1.8.2.1
  --- textarea.js	19 Jun 2010 07:16:27 -0000	1.8
  +++ textarea.js	22 Sep 2010 16:05:15 -0000	1.8.2.1
  @@ -1,4 +1,4 @@
  -// $Id: textarea.js,v 1.8 2010/06/19 07:16:27 wkpark Exp $
  +// $Id: textarea.js,v 1.8.2.1 2010/09/22 16:05:15 wkpark Exp $
   // $origId: textarea.js,v 1.9 2006/04/14 13:48:56 killes Exp $
   // from drupal
   // many functions are imported from drupal.js to eliminate dependency
  @@ -244,8 +244,8 @@
     }
     else {
       window.onload = function() {
  -      oldOnload();
         textAreaAutoAttach();
  +      oldOnload();
       }
     }
     /* addLoadEvent(textAreaAutoAttach); */
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.5.2.2   +251 -0    moniwiki/local/pasta.js
  
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.32.2.1  +12 -1     moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Info.php,v
  retrieving revision 1.32
  retrieving revision 1.32.2.1
  diff -u -r1.32 -r1.32.2.1
  --- Info.php	20 Aug 2010 08:28:53 -0000	1.32
  +++ Info.php	22 Sep 2010 16:05:15 -0000	1.32.2.1
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Info plugin for the MoniWiki
   //
  -// $Id: Info.php,v 1.32 2010/08/20 08:28:53 wkpark Exp $
  +// $Id: Info.php,v 1.32.2.1 2010/09/22 16:05:15 wkpark Exp $
   
   function _parse_rlog($formatter,$log,$options=array()) {
     global $DBInfo;
  @@ -20,6 +20,13 @@
     if (!$formatter->page->exists()) {
       $actions['revert'] = 'revert';
     }
  +  if (!empty($DBInfo->use_avatar)) {
  +    if (is_string($DBInfo->use_avatar))
  +      $type = $DBInfo->use_avatar;
  +    else
  +      $type = 'identicon';
  +    $avatarlink = qualifiedUrl($formatter->link_url('', '?action='. $type .'&amp;seed='));
  +  }
   
     $diff_action = null;
     if (isset($actions['diff'])) {
  @@ -166,6 +173,10 @@
              } else if (!$DBInfo->mask_hostname and $DBInfo->interwiki['Whois']) {
                $ip="<a href='".$DBInfo->interwiki['Whois']."$ip'>$user</a>";
              }
  +         } else if (!empty($DBInfo->use_avatar)) {
  +           $crypted = crypt($ip, $ip);
  +           $mylnk = preg_replace('/seed=/', 'seed='.$crypted, $avatarlink);
  +           $ip = '<img src="'.$mylnk.'" style="width:16px;height:16px;vertical-align:middle" alt="avatar" />Anonymous';
            } else if ($DBInfo->mask_hostname) {
              $ip=_mask_hostname($ip);
            } else if ($user and $DBInfo->interwiki['Whois'])
  
  
  
  1.9.2.1   +49 -6     moniwiki/plugin/LikePages.php
  
  Index: LikePages.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/LikePages.php,v
  retrieving revision 1.9
  retrieving revision 1.9.2.1
  diff -u -r1.9 -r1.9.2.1
  --- LikePages.php	12 Aug 2010 21:21:17 -0000	1.9
  +++ LikePages.php	22 Sep 2010 16:05:15 -0000	1.9.2.1
  @@ -4,7 +4,7 @@
   // a LikePages plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: LikePages.php,v 1.9 2010/08/12 21:21:17 wkpark Exp $
  +// $Id: LikePages.php,v 1.9.2.1 2010/09/22 16:05:15 wkpark Exp $
   
   function do_LikePages($formatter,$options) {
   
  @@ -33,8 +33,8 @@
     }
     $opts['extra'] = '';
   
  -  $s_re="^[A-Z][a-z0-9]+";
  -  $e_re="[A-Z][a-z0-9]+$";
  +  $s_re="^[A-Z][A-Za-z0-9]+";
  +  $e_re="[A-Z][A-Za-z0-9]+$";
   
     $count=preg_match("/(".$s_re.")/",$pname,$match);
     if ($count) {
  @@ -47,15 +47,56 @@
       $e_len=strlen($end);
     }
   
  -  if (empty($start) && empty($end)) {
  -    preg_match("/^(.{2,4})/",$args,$match);
  +  // for non ASCII codeset
  +  if (empty($start) or empty($end)) {
  +    if (preg_match('/[^A-Za-z0-9-_]/', $pname)) {
  +      $myname = preg_replace('/[\x00-\x2F\x3A-\x40\x5B-\x60\x7B-\x7F]/', ' ', $pname);
  +      $words = preg_split('/\s+/', $myname);
  +      if (empty($start))
  +        $start = $words[0];
  +      if (isset($words[1])) {
  +        if (empty($end))
  +          $end = $words[count($words) - 1];
  +      }
  +    }
  +
  +    // try to remove suffix
  +    // "위키에서 글쓰기" => start=위키에서|위키에|위키
  +    if (preg_match('/[\x{AC00}-\x{D7AF}]/u', $start)) {
  +	    $ws = preg_split('//u', $start, -1,  PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
  +      $nw = array();
  +      $nw[] = $start;
  +      for ($i = 2;  count($ws) > 2 and $i > 0; $i--) {
  +        array_pop($ws);
  +        $nw[] = implode('', $ws);
  +      }
  +      $start = implode('|', $nw);
  +    }
  +
  +    if (preg_match('/[\x{AC00}-\x{D7AF}]/u', $end)) {
  +	    $ws = preg_split('//u', $end, -1,  PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
  +      $nw = array();
  +      $last = array_splice($ws, -2);
  +      $last = implode('', $last);
  +      $nw[] = $last;
  +      $ws = array_reverse($ws);
  +      foreach ($ws as $w) {
  +        $last = $w.$last;
  +        $nw[] = $last;
  +      }
  +      $end = implode('|', $nw);
  +    }
  +  }
  +
  +  if (empty($start)) {
  +    preg_match("/^(.{2,4})/u",$args,$match);
       $s_len=strlen($match[1]);
       $start=trim(_preg_escape($match[1]));
     }
   
     if (empty($end)) {
       $end=substr($args,$s_len);
  -    preg_match("/(.{2,6})$/",$end,$match);
  +    preg_match("/(.{2,6})$/u",$end,$match);
       $end=isset($match[1]) ? $match[1] : '';
       $e_len=strlen($end);
       if ($e_len < 2) $end="";
  @@ -103,6 +144,8 @@
       if ($start and $end) $similar_re="$start|$end";
       else if ($start) $similar_re=$start;
       else $similar_re=$end;
  +    if (!empty($words))
  +      $similar_re.='|'.implode('|', $words);
   
       foreach ($pages as $page) {
         preg_match("/($similar_re)/i",$page,$matches);
  
  
  
  1.51.2.2  +24 -16    moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.51.2.1
  retrieving revision 1.51.2.2
  diff -u -r1.51.2.1 -r1.51.2.2
  --- RecentChanges.php	14 Sep 2010 21:05:41 -0000	1.51.2.1
  +++ RecentChanges.php	22 Sep 2010 16:05:15 -0000	1.51.2.2
  @@ -7,10 +7,10 @@
   // Name: RecentChanges
   // Description: Show RecentChanges of the Wiki
   // URL: MoniWiki:RecentChangesPlugin
  -// Version: $Revision: 1.51.2.1 $
  +// Version: $Revision: 1.51.2.2 $
   // Depend: 1.1.3
   // License: GPL
  -// $Id: RecentChanges.php,v 1.51.2.1 2010/09/14 21:05:41 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.51.2.2 2010/09/22 16:05:15 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     global $DBInfo;
  @@ -127,11 +127,12 @@
     foreach ($args as $arg) {
       $arg=trim($arg);
       if (($p=strpos($arg,'='))!==false) {
  -      $k=substr($arg,0,$p);
  -      $v=substr($arg,$p+1);
  -      if ($k=='item') $opts['items']=min((int)$v,RC_MAX_ITEMS);
  +      $k=trim(substr($arg,0,$p));
  +      $v=trim(substr($arg,$p+1));
  +      if ($k=='item' or $k=='items') $opts['items']=min((int)$v,RC_MAX_ITEMS);
         else if ($k=='days') $days=min(abs($v),RC_MAX_DAYS);
         else if ($k=='ago') $opts['ago']=abs($v);
  +      else if ($k=="new") $checknew=$v;
         else if ($k=='strimwidth' and is_numeric($k) and (abs($v) > 15 or $v == 0))
           $strimwidth =abs($v);
       } else {
  @@ -160,6 +161,8 @@
   
     if (empty($DBInfo->use_counter))
       $use_hits = 0;
  +  if (empty($DBInfo->show_hosts))
  +    $showhost = 0;
   
     if (!empty($rctype)) {
         if ($rctype=="simple") {
  @@ -186,10 +189,10 @@
   
           $template_bra.="<thead><tr><th colspan='$cols' class='title'>"._("Title")."</th><th class='date'>".
             _("Change Date").'</th>';
  -        if (!empty($DBInfo->show_hosts))
  +        if (!empty($showhost))
             $template_bra.="<th class='author'>"._("Editor").'</th>';
           $template_bra.="<th class='editinfo'>"._("Changes").'</th>';
  -        if (!empty($DBInfo->use_counter))
  +        if (!empty($use_hits))
             $template_bra.="<th class='hits'>"._("Hits")."</th>";
           $template_bra.="</tr></thead>\n<tbody>\n";
           $template=
  @@ -197,12 +200,12 @@
           if (empty($nobookmark))
             $template.= '<td>$bmark</td>';
           $template.= '<td class=\'date\' style=\'width:15%\'>$date</td>';
  -        if (!empty($DBInfo->show_hosts))
  +        if (!empty($showhost))
             $template.='<td class=\'author\'>$user</td>';
           $template.='<td class=\'editinfo\'>$count';
           if (!empty($checkchange)) $template.=' $diff';
           $template.='</td>';
  -        if (!empty($DBInfo->use_counter))
  +        if (!empty($use_hits))
             $template.='<td class=\'hits\'>$hits</td>';
           $template_extra=$template.'</tr>\n<tr><td class=\'log\' colspan=\'6\'>$extra</td></tr>\n";';
           $template.='</tr>\n";';
  @@ -235,7 +238,11 @@
       $tz_offset=date("Z");
     }
   
  -  if (!$bookmark) $bookmark=time();
  +  if (!$bookmark or !empty($nobookmark)) {
  +    if (!empty($checknew) and preg_match('/^\d+(\s*\*\s*\d+)*$/',$checknew))
  +      $checknew = eval('return '.$checknew. ';');
  +    $bookmark = strtotime(date('Y-m-d', time() - $checknew).' 00:00:00');
  +  }
   
     $time_current= time();
     $secs_per_day= 60*60*24;
  @@ -282,9 +289,9 @@
         $user = 'Anonymous-' . $addr;
   
       $day = gmdate('Ymd', $ed_time+$tz_offset);
  -    if ($day != $ratchet_day) {
  -      $ratchet_day = $day;
  -    }
  +    //if ($day != $ratchet_day) {
  +    //  $ratchet_day = $day;
  +    //}
   
       if (!empty($editcount[$day][$page_key])) {
         $editors[$day][$page_key][] = $user;
  @@ -343,8 +350,9 @@
       }
   
       if (! empty($changed_time_fmt)) {
  -      $date= gmdate($changed_time_fmt, $ed_time+$tz_offset);
  -      if (!empty($timesago)) {
  +      if (empty($timesago)) {
  +        $date= gmdate($changed_time_fmt, $ed_time+$tz_offset);
  +      } else {
           $date = _timesago($ed_time, 'Y-m-d', $tz_offset);
         }
       }
  @@ -433,7 +441,7 @@
         $hits = $DBInfo->counter->pageCounter($page_name);
       }
   
  -    if (!empty($DBInfo->show_hosts)) {
  +    if (!empty($showhost)) {
         $last_editor = $user;
   
         if ($last_editor_only) {
  
  
  
  1.20.2.1  +6 -3      moniwiki/plugin/UploadForm.php
  
  Index: UploadForm.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/UploadForm.php,v
  retrieving revision 1.20
  retrieving revision 1.20.2.1
  diff -u -r1.20 -r1.20.2.1
  --- UploadForm.php	12 Aug 2010 06:35:07 -0000	1.20
  +++ UploadForm.php	22 Sep 2010 16:05:15 -0000	1.20.2.1
  @@ -5,7 +5,7 @@
   //
   // Usage: [[UploadForm]]
   //
  -// $Id: UploadForm.php,v 1.20 2010/08/12 06:35:07 wkpark Exp $
  +// $Id: UploadForm.php,v 1.20.2.1 2010/09/22 16:05:15 wkpark Exp $
   
   function macro_UploadForm($formatter,$value) {
       global $DBInfo;
  @@ -43,10 +43,13 @@
               iframe.setAttribute('name','upload-iframe');
               iframe.setAttribute('style','display:none;border:0;');
               if (document.all) {
  -                var IE6 = false /*@cc_on || @_jscript_version < 5.7 @*/;
                   // magic for IE6
  -                if (IE6)
  +                /*@cc_on
  +                if (@_jscript_version==5.6 ||
  +                    (@_jscript_version==5.7 && navigator.userAgent.toLowerCase().indexOf("msie 6.") != -1)) {
                       iframe.src = 'javascript:document.write("' + "<script>document.domain='" + document.domain + "';</" + "script>" + '");';
  +                }
  +                @*/
               }
               var body = document.getElementsByTagName('body')[0];
               body.appendChild(iframe);
  
  
  
  1.10.2.1  +19 -10    moniwiki/plugin/bookmark.php
  
  Index: bookmark.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/bookmark.php,v
  retrieving revision 1.10
  retrieving revision 1.10.2.1
  diff -u -r1.10 -r1.10.2.1
  --- bookmark.php	31 Aug 2010 03:10:18 -0000	1.10
  +++ bookmark.php	22 Sep 2010 16:05:15 -0000	1.10.2.1
  @@ -4,7 +4,7 @@
   // a bookmark action plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: bookmark.php,v 1.10 2010/08/31 03:10:18 wkpark Exp $
  +// $Id: bookmark.php,v 1.10.2.1 2010/09/22 16:05:15 wkpark Exp $
   
   // internal use only
   function macro_bookmark($formatter, $value = '', &$options) {
  @@ -19,20 +19,29 @@
        $bookmark = $options['time'];
     }
     $ret = array();
  -  if (is_numeric($bookmark)) {
  -    if ($user->id == "Anonymous") {
  +
  +  if ($user->id == "Anonymous") {
  +    if (is_numeric($bookmark)) {
         setcookie("MONI_BOOKMARK",$bookmark,time()+60*60*24*30,get_scriptname());
  -      # set the fake cookie
  -      $_COOKIE['MONI_BOOKMARK']=$bookmark;
  -      $user->bookmark=$bookmark;
         $ret['title'] = _('Bookmark Changed');
       } else {
  -      $user->info['bookmark']=$bookmark;
  -      $DBInfo->udb->saveUser($user);
  +      setcookie("MONI_BOOKMARK", 0, 0, get_scriptname());
  +      $ret['title']=_("Bookmark Deleted !");
  +    }
  +    # set the fake cookie
  +    $_COOKIE['MONI_BOOKMARK']=$bookmark;
  +    $user->bookmark=$bookmark;
  +  } else {
  +    if (is_numeric($bookmark)) {
         $ret['title'] = _('Bookmark Changed');
  +      $user->info['bookmark']=$bookmark;
  +    } else {
  +      $ret['title']=_("Bookmark Deleted !");
  +      $user->info['bookmark']=0;
       }
  -  } else
  -    $ret['msg']=_("Invalid bookmark!");
  +    $DBInfo->udb->saveUser($user);
  +    $user->bookmark=$bookmark;
  +  }
   
     if (isset($options['ret']))
       $options['ret'] = $ret;
  
  
  


1285224927;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv5546\n\nModified Files:\n	wiki.php \nLog Message:\n[#315577] fixed recursive expression and add {{{}}}, {{{{{{}}}, {{{}}}}}}\n\n
wkpark      2010/09/23 15:55:28

  Modified:    .        wiki.php
  Log:
  [#315577] fixed recursive expression and add {{{}}}, {{{{{{}}}, {{{}}}}}}
  
  Revision  Changes    Path
  1.628     +8 -4      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.627
  retrieving revision 1.628
  diff -u -r1.627 -r1.628
  --- wiki.php	17 Sep 2010 16:57:32 -0000	1.627
  +++ wiki.php	23 Sep 2010 06:55:27 -0000	1.628
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.627 2010/09/17 16:57:32 wkpark Exp $
  +// $Id: wiki.php,v 1.628 2010/09/23 06:55:27 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.627 $',1,-1);
  +$_revision = substr('$Revision: 1.628 $',1,-1);
   $_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -1526,7 +1526,9 @@
       #(?P<word>(?:/?[A-Z]([a-z0-9]+|[A-Z]*(?=[A-Z][a-z0-9]|\b))){2,})
       $this->wordrule=
       # nowiki
  -    "({{{(?:(?:[^{}]+|{[^{}]+}(?!})|(?<!{){{1,2}(?!{)|(?<!})}{1,2}(?!}))|(?1))+}}})|".
  +    "!?({{{(?:(?:[^{}]+|{[^{}]+}(?!})|(?<!{){{1,2}(?!{)|(?<!})}{1,2}(?!}))|(?2))++}}})|".
  +    # {{{{{{}}}, {{{}}}}}}, {{{}}}
  +    "(?:(?!<{{{){{{}}}(?!}}})|{{{(?:{{{|}}})}}})|".
       # single bracketed rule [http://blah.blah.com Blah Blah]
       "(?:\[\^?($url):[^\s\]]+(?:\s[^\]]+)?\])|".
       # InterWiki
  @@ -1861,6 +1863,8 @@
       switch ($url[0]) {
       case '{':
         $url=substr($url,3,-3);
  +      if (empty($url))
  +        return "<tt class='nowiki'></tt>"; # No link
         if (preg_match('/^({([^{}]+)})/s',$url,$sty)) { # textile like styling
           $url=substr($url,strlen($sty[1]));
           $url = preg_replace($this->baserule, $this->baserepl, $url); // apply inline formatting rules
  @@ -3367,7 +3371,7 @@
                           {[^{}]+}(?!})|
                           (?<!{){{1,2}(?!{)|
                           (?<!})}{1,2}(?!}))|(?1)
  -                          )+}}})/x",$line,-1,PREG_SPLIT_DELIM_CAPTURE);
  +                          )++}}})/x",$line,-1,PREG_SPLIT_DELIM_CAPTURE);
         $inline = array(); // save inline nowikis
   
         if (count($chunk) > 1) {
  
  
  


1285515589;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv8541\n\nModified Files:\n	wiki.php \nLog Message:\n[#315734] [#315561] fixed ["Hello" World] syntax reported by icehit3\n\n
wkpark      2010/09/27 00:39:52

  Modified:    .        wiki.php
  Log:
  [#315734] [#315561] fixed ["Hello" World] syntax reported by icehit3
  
  Revision  Changes    Path
  1.629     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.628
  retrieving revision 1.629
  diff -u -r1.628 -r1.629
  --- wiki.php	23 Sep 2010 06:55:27 -0000	1.628
  +++ wiki.php	26 Sep 2010 15:39:49 -0000	1.629
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.628 2010/09/23 06:55:27 wkpark Exp $
  +// $Id: wiki.php,v 1.629 2010/09/26 15:39:49 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.628 $',1,-1);
  +$_revision = substr('$Revision: 1.629 $',1,-1);
   $_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -1546,7 +1546,7 @@
       #  * single bracketted words [Hello World] etc.
       #  * single bracketted words with double quotes ["Hello World"]
       #  * double bracketted words with double quotes [["Hello World"]]
  -    "(?<!\[)\!?\[(\[)$single(\")?(?:[^\[\]\",<\s'\*][^\[\]]{0,255}[^\"])(?(5)\"(?:[^\"]*))(?(4)\])\](?!\])";
  +    "(?<!\[)\!?\[(\[)$single(\")?(?:[^\[\]\",<\s'\*][^\[\]]{0,255}[^\"])(?(5)\"(?:[^\"\]]*))(?(4)\])\](?!\])";
   
       if ($camelcase)
         $this->wordrule.='|'.
  
  
  


1285588658;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv24448\n\nModified Files:\n	wiki.php \nLog Message:\n[#315672] fixed last changes\n\n
wkpark      2010/09/27 20:57:39

  Modified:    .        wiki.php
  Log:
  [#315672] fixed last changes
  
  Revision  Changes    Path
  1.630     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.629
  retrieving revision 1.630
  diff -u -r1.629 -r1.630
  --- wiki.php	26 Sep 2010 15:39:49 -0000	1.629
  +++ wiki.php	27 Sep 2010 11:57:37 -0000	1.630
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.629 2010/09/26 15:39:49 wkpark Exp $
  +// $Id: wiki.php,v 1.630 2010/09/27 11:57:37 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.629 $',1,-1);
  +$_revision = substr('$Revision: 1.630 $',1,-1);
   $_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -2337,7 +2337,7 @@
               "<tt class='sister'><a href='$url'>&#x203a;</a></tt>";
           }
           if (!empty($sisters)) {
  -          if (!empty($this->use_easyalias) and !preg_match('/^\[wiki:[A-Z][a-z0-9]+:.*$/', $sisters)) {
  +          if (!empty($this->use_easyalias) and !preg_match('/^\[wiki:[A-Z][A-Za-z0-9]+:.*$/', $sisters)) {
               # this is a alias
               $this->use_easyalias=0;
               $url=$this->link_repl(substr($sisters,0,-1).' '.$word.']');
  
  
  


1285589017;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv24545\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315736] * support $titlesearch_noredirect to prevent redirect to the only one matched page\n * $titleseach_noexact=1 search all pages ($titleseach_noexact=0 is default)\n * $titleseach_exact_all search all exact matches ($titleseach_exact_all=0 is default)\n\n\n
wkpark      2010/09/27 21:03:37

  Modified:    .        wikilib.php
  Log:
  [#315736] * support $titlesearch_noredirect to prevent redirect to the only one matched page
   * $titleseach_noexact=1 search all pages ($titleseach_noexact=0 is default)
   * $titleseach_exact_all search all exact matches ($titleseach_exact_all=0 is default)
  
  Revision  Changes    Path
  1.364     +17 -6     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.363
  retrieving revision 1.364
  diff -u -r1.363 -r1.364
  --- wikilib.php	17 Sep 2010 16:57:32 -0000	1.363
  +++ wikilib.php	27 Sep 2010 12:03:37 -0000	1.364
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.363 2010/09/17 16:57:32 wkpark Exp $
  +// $Id: wikilib.php,v 1.364 2010/09/27 12:03:37 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1897,10 +1897,12 @@
   }
   
   function do_titlesearch($formatter,$options) {
  +  global $DBInfo;
   
  +  $ret = array();
     $out= macro_TitleSearch($formatter,$options['value'],$ret);
   
  -  if ($ret['hits']==1) {
  +  if ($ret['hits']==1 and (empty($DBInfo->titlesearch_noredirect) or !empty($ret['exact']))) {
       $options['value']=$ret['value'];
       $options['redirect']=1;
       do_goto($formatter,$options);
  @@ -3556,12 +3558,21 @@
   
     $pages = array_merge($pages, $alias);
     $hits=array();
  +  $exacts = array();
     foreach ($pages as $page) {
  -     if (preg_match("/".$needle."/i", $page))
  -        $hits[]=$page;
  +    if (empty($DBInfo->titleseach_noexact) and preg_match("/^".$needle."$/i", $page)) {
  +      $hits[] = $page;
  +      $exacts[] = $page;
  +      if (empty($DBInfo->titlesearch_exact_all)) {
  +        $hits = $exacts;
  +        break;
  +      }
  +    } else if (preg_match("/".$needle."/i", $page)) {
  +      $hits[]=$page;
  +    }
     }
   
  -  if (empty($hits)) {
  +  if (empty($hits) and empty($exacts)) {
       // simple title search by ignore spaces
       $needle2 = str_replace(' ', "\\s*", $needle);
       $ws = preg_split("/([\x{AC00}-\x{D7F7}])/u", $needle2, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
  @@ -3590,7 +3601,7 @@
     $opts['hits']= count($hits);
     if ($opts['hits']==1)
       $opts['value']=array_pop($hits);
  -  $opts['all']= count($pages);
  +  if (!empty($exacts)) $opts['exact'] = 1;
     if (!empty($opts['call'])) {
       $opts['out']=$out;
       return $opts;
  
  
  


1285589627;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin/security\nIn directory kill.kldp.net:/tmp/cvs-serv28626/plugin/security\n\nModified Files:\n	acl.php \nLog Message:\n[#315735] check exact matched page names correctly.\n\n
wkpark      2010/09/27 21:13:48

  Modified:    plugin/security acl.php
  Log:
  [#315735] check exact matched page names correctly.
  
  Revision  Changes    Path
  1.13      +10 -5     moniwiki/plugin/security/acl.php
  
  Index: acl.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/acl.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- acl.php	20 Aug 2010 06:36:22 -0000	1.12
  +++ acl.php	27 Sep 2010 12:13:47 -0000	1.13
  @@ -1,6 +1,6 @@
   <?php
   # a ACL security plugin for the MoniWiki (experimental)
  -# $Id: acl.php,v 1.12 2010/08/20 06:36:22 wkpark Exp $
  +# $Id: acl.php,v 1.13 2010/09/27 12:13:47 wkpark Exp $
   #
   # Please see http://moniwiki.kldp.net/wiki/wiki.php/MoniWikiACL
   #
  @@ -148,12 +148,17 @@
                   if (!$acl[3]) $acl[3]='*';
                   if ($acl[0] != '*') {
                       $prule=$acl[0];
  +                    // a regex or a simplified pattern like as
                       // HelpOn* -> HelpOn.*
                       // MoniWiki/* -> MoniWiki\/.*
  -                    $prule=
  -                       preg_replace(array('/(?!<\.)\*/',"/(?<!\\\\)\//"),array('.*','\/'),$prule);
  -                    if (false === @preg_match("/$prule/",'')) continue;
  -                    if (!preg_match("/$prule/",$pg)) continue;
  +
  +                    if ($prule != $pg) {
  +                        // is it a regex or a simplified pattern
  +                        $prule=
  +                            preg_replace(array('/(?!<\.)\*/',"/(?<!\\\\)\//"),array('.*','\/'),$prule);
  +
  +                        if (!@preg_match("/$prule/",$pg)) continue;
  +                    }
                   }
   
                   if ($acl[2] == 'allow') {
  
  
  


1285590242;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin/security\nIn directory kill.kldp.net:/tmp/cvs-serv28815/plugin/security\n\nModified Files:\n	acl.php \nLog Message:\n[#315737] set $config_dir to load a acl config file correctly.\n\n
wkpark      2010/09/27 21:24:03

  Modified:    plugin/security acl.php
  Log:
  [#315737] set $config_dir to load a acl config file correctly.
  
  Revision  Changes    Path
  1.14      +11 -7     moniwiki/plugin/security/acl.php
  
  Index: acl.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/acl.php,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- acl.php	27 Sep 2010 12:13:47 -0000	1.13
  +++ acl.php	27 Sep 2010 12:24:02 -0000	1.14
  @@ -1,6 +1,6 @@
   <?php
   # a ACL security plugin for the MoniWiki (experimental)
  -# $Id: acl.php,v 1.13 2010/09/27 12:13:47 wkpark Exp $
  +# $Id: acl.php,v 1.14 2010/09/27 12:24:02 wkpark Exp $
   #
   # Please see http://moniwiki.kldp.net/wiki/wiki.php/MoniWikiACL
   #
  @@ -36,11 +36,15 @@
       function Security_ACL($DB="") {
           $this->DB=$DB;
           # load ACL
  -        define(_CURRENT,dirname(__FILE__));
  -        if ($DB->acl_type and file_exists(_CURRENT.'/../../config/acl.'.$DB->acl_type.'.php'))
  -            $acl_file=_CURRENT.'/../../config/acl.'.$DB->acl_type.'.php';
  +        if (empty($DB->config_dir))
  +            $config_dir = './config';
           else
  -            $acl_file=_CURRENT.'/../../config/acl.default.php';
  +            $config_dir = dirname(__FILE__).'/../../config';
  +
  +        if (!empty($DB->acl_type) and file_exists($config_dir.'/acl.'.$DB->acl_type.'.php'))
  +            $acl_file=$config_dir.'/acl.'.$DB->acl_type.'.php';
  +        else
  +            $acl_file=$config_dir.'/acl.default.php';
   
           if(is_readable($acl_file)) {
               $this->AUTH_ACL= file($acl_file);
  @@ -48,8 +52,8 @@
               $this->AUTH_ACL= array('*   @ALL    allow   *');
           }
   
  -        $wikimasters=$DB->wikimasters ? $DB->wikimasters:array();
  -        $owners=$DB->owners ? $DB->owners:array();
  +        $wikimasters=isset($DB->wikimasters) ? $DB->wikimasters:array();
  +        $owners=isset($DB->owners) ? $DB->owners:array();
           $this->allowed_users=array_merge($wikimasters,$owners);
       }
   
  
  
  


1285646592;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv5443\n\nModified Files:\n	wiki.php \nLog Message:\n[#315290] fixed notice warning\n\n
wkpark      2010/09/28 13:03:14

  Modified:    .        wiki.php
  Log:
  [#315290] fixed notice warning
  
  Revision  Changes    Path
  1.631     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.630
  retrieving revision 1.631
  diff -u -r1.630 -r1.631
  --- wiki.php	27 Sep 2010 11:57:37 -0000	1.630
  +++ wiki.php	28 Sep 2010 04:03:11 -0000	1.631
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.630 2010/09/27 11:57:37 wkpark Exp $
  +// $Id: wiki.php,v 1.631 2010/09/28 04:03:11 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.630 $',1,-1);
  +$_revision = substr('$Revision: 1.631 $',1,-1);
   $_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -5558,7 +5558,7 @@
           echo "</div>\n";
         }
   
  -      $formatter->send_footer($args,$options);
  +      $formatter->send_footer('',$options);
         return;
       } else if ($_SERVER['REQUEST_METHOD']=="POST" and
         $DBInfo->security->is_protected($action,$options) and
  
  
  


1285646735;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv5519\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315736] set $ret['all'] value correctly\n\n
wkpark      2010/09/28 13:05:36

  Modified:    .        wikilib.php
  Log:
  [#315736] set $ret['all'] value correctly
  
  Revision  Changes    Path
  1.365     +2 -1      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.364
  retrieving revision 1.365
  diff -u -r1.364 -r1.365
  --- wikilib.php	27 Sep 2010 12:03:37 -0000	1.364
  +++ wikilib.php	28 Sep 2010 04:05:34 -0000	1.365
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.364 2010/09/27 12:03:37 wkpark Exp $
  +// $Id: wikilib.php,v 1.365 2010/09/28 04:05:34 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -3553,6 +3553,7 @@
     $needle=_preg_search_escape($needle);
     
     $pages= $DBInfo->getPageLists();
  +  $opts['all'] = count($pages);
     if (empty($DBInfo->alias)) $DBInfo->initAlias();
     $alias = $DBInfo->alias->getAllPages();
   
  
  
  


1285646772;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin/security\nIn directory kill.kldp.net:/tmp/cvs-serv5569/plugin/security\n\nModified Files:\n	acl.php \nLog Message:\n[#315737] fixed notice warning\n\n
wkpark      2010/09/28 13:06:13

  Modified:    plugin/security acl.php
  Log:
  [#315737] fixed notice warning
  
  Revision  Changes    Path
  1.15      +3 -3      moniwiki/plugin/security/acl.php
  
  Index: acl.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/acl.php,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- acl.php	27 Sep 2010 12:24:02 -0000	1.14
  +++ acl.php	28 Sep 2010 04:06:12 -0000	1.15
  @@ -1,6 +1,6 @@
   <?php
   # a ACL security plugin for the MoniWiki (experimental)
  -# $Id: acl.php,v 1.14 2010/09/27 12:24:02 wkpark Exp $
  +# $Id: acl.php,v 1.15 2010/09/28 04:06:12 wkpark Exp $
   #
   # Please see http://moniwiki.kldp.net/wiki/wiki.php/MoniWikiACL
   #
  @@ -206,7 +206,7 @@
           }
           $protected=array_keys($protected);
   
  -        if ($this->DB->acl_debug) {
  +        if (!empty($this->DB->acl_debug)) {
               ob_start();
               print "<h4>"._("ACL groups")."</h4>\n";
               print implode(',',$groups);
  @@ -238,7 +238,7 @@
           $allowed=&$this->_allowed;
           $denied=&$this->_denied;
   
  -        if ($options['explicit']) {
  +        if (!empty($options['explicit'])) {
               if (isset($allowed[$action])) return 1;
               else if (isset($denied[$action])) return 0;
               return false;
  
  
  


1285646875;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv5638/plugin\n\nModified Files:\n	LikePages.php \nLog Message:\n[#315724]\n * $use_smilar_text option added.\n * fixed notice warning.\n\n
wkpark      2010/09/28 13:07:56

  Modified:    plugin   LikePages.php
  Log:
  [#315724]
   * $use_smilar_text option added.
   * fixed notice warning.
  
  Revision  Changes    Path
  1.11      +20 -10    moniwiki/plugin/LikePages.php
  
  Index: LikePages.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/LikePages.php,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- LikePages.php	16 Sep 2010 22:10:04 -0000	1.10
  +++ LikePages.php	28 Sep 2010 04:07:55 -0000	1.11
  @@ -4,7 +4,7 @@
   // a LikePages plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: LikePages.php,v 1.10 2010/09/16 22:10:04 wkpark Exp $
  +// $Id: LikePages.php,v 1.11 2010/09/28 04:07:55 wkpark Exp $
   
   function do_LikePages($formatter,$options) {
   
  @@ -20,10 +20,10 @@
     $formatter->send_footer("",$options);
   }
   
  -function macro_LikePages($formatter="",$args="",&$opts) {
  +function macro_LikePages($formatter="", $value, &$opts) {
     global $DBInfo;
   
  -  $pname=_preg_escape($args);
  +  $pname=_preg_escape($value);
   
     $metawiki=!empty($opts['metawiki']) ? $opts['metawiki'] : '';
   
  @@ -37,6 +37,7 @@
     $e_re="[A-Z][A-Za-z0-9]+$";
   
     $count=preg_match("/(".$s_re.")/",$pname,$match);
  +  $s_len = 0;
     if ($count) {
       $start=trim($match[1]);
       $s_len=strlen($start);
  @@ -62,7 +63,7 @@
   
       // try to remove suffix
       // "위키에서 글쓰기" => start=위키에서|위키에|위키
  -    if (preg_match('/[\x{AC00}-\x{D7AF}]/u', $start)) {
  +    if (!empty($start) and preg_match('/[\x{AC00}-\x{D7AF}]/u', $start)) {
   	    $ws = preg_split('//u', $start, -1,  PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
         $nw = array();
         $nw[] = $start;
  @@ -73,7 +74,7 @@
         $start = implode('|', $nw);
       }
   
  -    if (preg_match('/[\x{AC00}-\x{D7AF}]/u', $end)) {
  +    if (!empty($end) and preg_match('/[\x{AC00}-\x{D7AF}]/u', $end)) {
   	    $ws = preg_split('//u', $end, -1,  PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
         $nw = array();
         $last = array_splice($ws, -2);
  @@ -89,13 +90,13 @@
     }
   
     if (empty($start)) {
  -    preg_match("/^(.{2,4})/u",$args,$match);
  +    preg_match("/^(.{2,4})/u",$value,$match);
       $s_len=strlen($match[1]);
       $start=trim(_preg_escape($match[1]));
     }
   
     if (empty($end)) {
  -    $end=substr($args,$s_len);
  +    $end=substr($value,$s_len);
       preg_match("/(.{2,6})$/u",$end,$match);
       $end=isset($match[1]) ? $match[1] : '';
       $e_len=strlen($end);
  @@ -140,7 +141,16 @@
       }
     }
   
  -  if ($start || $end) {
  +  if (!empty($DBInfo->use_similar_text)) {
  +    $len = strlen($value);
  +    $ii = 0;
  +    foreach ($pages as $page) {
  +      $ii++;
  +      $match = similar_text($value, $page) / min($len, strlen($page));
  +      if ($match > 0.9 && empty($starts[$page]) && empty($ends[$page]))
  +        $likes[$page] = $match;
  +    }
  +  } else if ($start || $end) {
       if ($start and $end) $similar_re="$start|$end";
       else if ($start) $similar_re=$start;
       else $similar_re=$end;
  @@ -162,7 +172,7 @@
   
       $out.="<h3>"._("These pages share a similar word...")."</h3>";
       $out.="<ol>\n";
  -    while (list($pagename,$i) = each($likes)) {
  +    foreach ($likes as $pagename => $i) {
         $pageurl=_rawurlencode($pagename);
         $pagetext=htmlspecialchars(urldecode($pagename));
         $out.= '<li>' . $formatter->link_tag($pageurl,"",$pagetext,"tabindex='$idx'")."</li>\n";
  @@ -201,7 +211,7 @@
       $out.="<h3>"._("No similar pages found")."</h3>";
     }
   
  -  $opts['msg'] = sprintf(_("Like \"%s\""),$args);
  +  $opts['msg'] = sprintf(_("Like \"%s\""),$value);
   
     while (empty($metawiki)) {
       if (empty($DBInfo->metadb)) $DBInfo->initMetaDB();
  
  
  


1285647838;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv9720\n\nModified Files:\n	config.php.default \nLog Message:\n[#315736] $title_* options added etc.\n\n
wkpark      2010/09/28 13:23:59

  Modified:    .        config.php.default
  Log:
  [#315736] $title_* options added etc.
  
  Revision  Changes    Path
  1.65      +7 -1      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.64
  retrieving revision 1.65
  diff -u -r1.64 -r1.65
  --- config.php.default	11 Sep 2010 13:19:07 -0000	1.64
  +++ config.php.default	28 Sep 2010 04:23:58 -0000	1.65
  @@ -1,7 +1,7 @@
   <?php
   # This is a default 
   #
  -# $Id: config.php.default,v 1.64 2010/09/11 13:19:07 wkpark Exp $
  +# $Id: config.php.default,v 1.65 2010/09/28 04:23:58 wkpark Exp $
   #
   $sitename='UnnamedWiki'; # site name
   $data_dir= './data';
  @@ -161,6 +161,8 @@
   #$myprocessors=array('latex'=>'mimetex');
   #$myplugins=array('fullsearch'=>'FastSearch'); # substitute action/macro
   #$myplugins=array('swfupload'=>false); # disable some macro
  +#
  +#$extra_macros=array('FootNote', 'Comment'); # call some extra macros after send_page()
   
   #$url_schemas='mms';
   #$blacklist='127.0.0.0/24:192.168.1.0/24:192.168.1.67'; # block ip
  @@ -290,3 +292,7 @@
   #$use_pageindex=0; # pagename indexer for fast RandomPage
   #$use_delaytime = 60*60*24; # set the default delayed time for caching as 24 hours
   #$use_avatar='identicon'; # set avatar imgs based on user IP address for anonymous users. default: identicon
  +#$titlesearch_noexact=0; # do not search exact page name and get all titlesearch results
  +#$titlesearch_exact_all=0; # get all exact matches
  +#$titlesearch_noredirect=0; # do not redirect to the only one founded page except exact match.
  +#$use_similar_text=0; # use similar_text() function (in likepages action)
  
  
  


1285663150;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv12103\n\nModified Files:\n	wiki.php \nLog Message:\n[#315738] support [[Page Name|Page Title]] syntax.\n * [["Page Name"|Page Title]]\n * ["Page Name"|Page Title], [Page Name|Page Title]\n\n
wkpark      2010/09/28 17:39:11

  Modified:    .        wiki.php
  Log:
  [#315738] support [[Page Name|Page Title]] syntax.
   * [["Page Name"|Page Title]]
   * ["Page Name"|Page Title], [Page Name|Page Title]
  
  Revision  Changes    Path
  1.632     +17 -10    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.631
  retrieving revision 1.632
  diff -u -r1.631 -r1.632
  --- wiki.php	28 Sep 2010 04:03:11 -0000	1.631
  +++ wiki.php	28 Sep 2010 08:39:10 -0000	1.632
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.631 2010/09/28 04:03:11 wkpark Exp $
  +// $Id: wiki.php,v 1.632 2010/09/28 08:39:10 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.631 $',1,-1);
  +$_revision = substr('$Revision: 1.632 $',1,-1);
   $_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -2054,13 +2054,11 @@
         $url=urldecode($url);
         return "<a class='externalLink' $attr href='$link' $this->external_target>$url</a>";
       } else {
  -      if ($url{0}=='?') {
  +      if ($url{0}=='?')
           $url=substr($url,1);
  -      } else if (!empty($this->mediawiki_style) and $double_bracket and $url[0] != '"' and strpos($url, ' ') !== false) {
  -        $url = '"'.$url.'"';
  -      }
  +
         $url = preg_replace('/&amp;/i', '&', $url);
  -      return $this->word_repl($url,'',$attr);
  +      return $this->word_repl($bra.$url.$ket, '', $attr);
       }
     }
   
  @@ -2240,19 +2238,28 @@
       global $DBInfo;
       $nonexists='nonexists_'.$this->nonexists;
   
  +    $word = $page = trim($word, '[]'); // trim out [[Hello World]] => Hello World
  +
       $extended = false;
  -    if (($word[0] == '"' or $word[0] == 'w') and preg_match('/^(?:wiki\:)?((")?[^"]+\2)((\s+)?(.*))?$/', $word, $m)) {
  +    if (($word[0] == '"' or $word[0] == 'w') and preg_match('/^(?:wiki\:)?((")?[^"]+\2)((\s+|\|)?(.*))?$/', $word, $m)) {
         # ["extended wiki name"]
         # ["Hello World" Go to Hello]
         # [wiki:"Hello World" Go to Main]
         $word = substr($m[1], 1, -1);
  -      if (isset($m[5])) $text = $m[5]; // text arg ignored
  +      if (isset($m[5][0])) $text = $m[5]; // text arg ignored
   
         $extended=true;
         $page=$word;
  -    } else
  +    } else if (($p = strpos($word, '|')) !== false) {
  +      // or MediaWiki/WikiCreole like links
  +      $text = substr($word, $p + 1);
  +      $word = substr($word, 0, $p);
  +      $page = $word;
  +    }
  +    if (!$extended and empty($DBInfo->mediawiki_style)) {
         #$page=preg_replace("/\s+/","",$word); # concat words
         $page=normalize($word); # concat words
  +    }
   
       if (empty($DBInfo->use_twikilink)) $islink=0;
       list($page,$page_text,$gpage)=
  
  
  


1285670571;wkpark;Update of /cvsroot/moniwiki/moniwiki/css\nIn directory kill.kldp.net:/tmp/cvs-serv29048/css\n\nModified Files:\n	kbd.js \nLog Message:\n[#315722] * prototyping PaSTA object\n * more keyboard friendly PaSTA with TextArea\n\n
1285670571;wkpark;Update of /cvsroot/moniwiki/moniwiki/local\nIn directory kill.kldp.net:/tmp/cvs-serv29048/local\n\nModified Files:\n	pasta.js \nLog Message:\n[#315722] * prototyping PaSTA object\n * more keyboard friendly PaSTA with TextArea\n\n
wkpark      2010/09/28 19:42:52

  Modified:    css      kbd.js
               local    pasta.js
  Log:
  [#315722] * prototyping PaSTA object
   * more keyboard friendly PaSTA with TextArea
  
  Revision  Changes    Path
  1.26      +10 -1     moniwiki/css/kbd.js
  
  Index: kbd.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/kbd.js,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- kbd.js	22 Sep 2010 15:29:22 -0000	1.25
  +++ kbd.js	28 Sep 2010 10:42:51 -0000	1.26
  @@ -6,7 +6,7 @@
   
      distributable under GPL
   
  -   $Id: kbd.js,v 1.25 2010/09/22 15:29:22 wkpark Exp $
  +   $Id: kbd.js,v 1.26 2010/09/28 10:42:51 wkpark Exp $
   
      CHANGES
   
  @@ -275,6 +275,15 @@
   			if (no != null)
   				target = '#' + no;
   		}
  +
  +		var txtarea = document.getElementById('editor-textarea');
  +		if (txtarea) {
  +			noBubble(e);
  +			pasta = new PaSTA();
  +
  +			var ret = pasta.focusEditor(e, txtarea, no);
  +			return false;
  +		}
   		if ((i=loc.indexOf(_ap)) != -1 && loc.substr(i+1,5) == "goto=") { // deprecated
   			loc=loc.substr(i+6,loc.length-6);
   			if ((i=loc.indexOf('&')) != -1) loc=loc.substring(0,i);
  
  
  
  1.6       +27 -20    moniwiki/local/pasta.js
  
  Index: pasta.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/pasta.js,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- pasta.js	17 Sep 2010 17:19:52 -0000	1.5
  +++ pasta.js	28 Sep 2010 10:42:51 -0000	1.6
  @@ -1,5 +1,5 @@
   /**
  - * Postioning and Scrolling in the TextArea for MoniWiki
  + * Postioning and Scrolling in the TextArea(PaSTA) for MoniWiki
    *
    * Try to get the line-no of the raw wikitext from rendered html and
    * set the position of the caret and scrollbar in the TextArea
  @@ -11,7 +11,7 @@
    * @author wkpark at kldp.org
    * @since  2010/09/16
    *
  - * $Id: pasta.js,v 1.5 2010/09/17 17:19:52 wkpark Exp $
  + * $Id: pasta.js,v 1.6 2010/09/28 10:42:51 wkpark Exp $
    */
   
   /**
  @@ -91,18 +91,12 @@
       return no;
   }
   
  -function get_selected_text() {
  -    var sel = window.getSelection ? window.getSelection():
  -        (document.getSelection ? document.getSelection():
  -        document.selection.createRange().text);
  +function PaSTA() {}
   
  -    return sel.toString();
  -}
  -
  -(function() {
  +PaSTA.prototype = {
       // from http://wiki.sheep.art.pl/Textarea%20Scrolling
       // with some fixes by wkpark at kldp.org
  -    function scrollTo(textarea, text, offset) {
  +    scrollTo: function(textarea, text, offset) {
           var style;
           try { style = window.getComputedStyle(textarea, ''); }
           catch(e) { return false; };
  @@ -133,16 +127,16 @@
           if (scroll > offset) scroll -= offset;
           textarea.parentNode.removeChild(pre); // remove
           return scroll;
  -    }
  +    },
   
  -    function edithandler(e) {
  +    edithandler: function(e) {
           e = e || window.event;
           var no = get_src_line_num(e);
           if (!no) return false;
   
           var txtarea = document.getElementById('editor-textarea');
           if (txtarea) {
  -            var ret = focusEditor(e, txtarea, no);
  +            var ret = this.focusEditor(e, txtarea, no);
               if (ret && e) {
                   if (e.stopPropagation) e.stopPropagation(); 
                   e.cancelBubble = true;
  @@ -158,9 +152,17 @@
           if (p)
               location = loc + _ap + 'action=edit#' + no;
           return true;
  -    }
  +    },
   
  -    function focusEditor(e, txtarea, lineno) {
  +    _get_selected_text: function() {
  +        var sel = window.getSelection ? window.getSelection():
  +            (document.getSelection ? document.getSelection():
  +            document.selection.createRange().text);
  +
  +        return sel.toString();
  +    },
  +
  +    focusEditor: function(e, txtarea, lineno) {
           e = e || window.event;
           if (txtarea == undefined) {
               txtarea = document.getElementById('editor-textarea');
  @@ -194,7 +196,7 @@
           endPos = txt.indexOf("\n", startPos);
   
           // get selected text
  -        var myText = get_selected_text();
  +        var myText = this._get_selected_text();
   
           if (myText != '') {
               var str = txt.substring(startPos, endPos);
  @@ -213,7 +215,7 @@
               txtarea.selectionStart = startPos;
               txtarea.selectionEnd = endPos;
   
  -            var scroll = scrollTo(txtarea, txt.substr(0, startPos), 50);
  +            var scroll = this.scrollTo(txtarea, txt.substr(0, startPos), 50);
               txtarea.scrollTop = scroll;
           } else if (document.selection) {
               // IE
  @@ -233,18 +235,23 @@
   
           return true;
       }
  +};
   
  +(function() {
       // onload
       var oldOnload = window.onload;
       window.onload = function(ev) {
           try { oldOnload(); } catch(e) {};
  -        focusEditor(ev);
  +        var pasta = new PaSTA();
  +        pasta.focusEditor(ev);
       }
   
  +    // double click handler
       var old_dblclick = document.ondblclick;
       document.ondblclick = function(ev) {
           try { old_dblclick(); } catch(e) {};
  -        edithandler(ev);
  +        var pasta = new PaSTA();
  +        pasta.edithandler(ev);
       }
   })();
   
  
  
  


1285686043;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv3656\n\nModified Files:\n	wiki.php \nLog Message:\n[#315739] fixed [[Page Name:Sub Page]] syntax\n\n
wkpark      2010/09/29 00:00:44

  Modified:    .        wiki.php
  Log:
  [#315739] fixed [[Page Name:Sub Page]] syntax
  
  Revision  Changes    Path
  1.633     +14 -2     moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.632
  retrieving revision 1.633
  diff -u -r1.632 -r1.633
  --- wiki.php	28 Sep 2010 08:39:10 -0000	1.632
  +++ wiki.php	28 Sep 2010 15:00:43 -0000	1.633
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.632 2010/09/28 08:39:10 wkpark Exp $
  +// $Id: wiki.php,v 1.633 2010/09/28 15:00:43 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.632 $',1,-1);
  +$_revision = substr('$Revision: 1.633 $',1,-1);
   $_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -1944,8 +1944,19 @@
       $url=str_replace('&lt;','<',$url); // revert from baserule
       $url=preg_replace('/&(?!#?[a-z0-9]+;)/i','&amp;',$url);
   
  +    if ($url[0] == '"') {
  +      // [["Hello World"]], [["Hello World" Page Title]]
  +      return $this->word_repl($bra.$url.$ket, '', $attr);
  +    } else
       if (($p=strpos($url,':')) !== false and
           (!isset($url{$p+1}) or (isset($url{$p+1}) and $url{$p+1}!=':'))) {
  +
  +      // namespaced pages
  +      // [[한글:페이지]], [[한글:페이지 이름]]
  +      // mixed name with non ASCII chars
  +      if (preg_match('/^([^a-zA-Z0-9]+.*)\:/', $url))
  +        return $this->word_repl($bra.$url.$ket, '', $attr);
  +
         if ($url[0]=='a') { # attachment:
           $url=preg_replace('/&amp;/i','&',$url);
           return $this->macro_repl('attachment',substr($url,11));
  @@ -1967,6 +1978,7 @@
               preg_replace('/('.$this->url_mapping_rule.')/ie',"\$this->url_mappings['\\1']",$url);
         }
   
  +      // InterWiki Pages
         if (preg_match("/^(:|w|[A-Z])/",$url)
             or (!empty($this->urls) and !preg_match('/^('.$this->urls.')/',$url)))
           return $this->interwiki_repl($url,'',$attr,$external_icon);
  
  
  


1285826027;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin/security\nIn directory kill.kldp.net:/tmp/cvs-serv5426/plugin/security\n\nModified Files:\n	acl.php \nLog Message:\n[#315741] fixed to accept a spaced pagename and comma separated pagenames\n\n
wkpark      2010/09/30 14:53:48

  Modified:    plugin/security acl.php
  Log:
  [#315741] fixed to accept a spaced pagename and comma separated pagenames
  
  Revision  Changes    Path
  1.16      +36 -23    moniwiki/plugin/security/acl.php
  
  Index: acl.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/acl.php,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- acl.php	28 Sep 2010 04:06:12 -0000	1.15
  +++ acl.php	30 Sep 2010 05:53:47 -0000	1.16
  @@ -1,6 +1,6 @@
   <?php
   # a ACL security plugin for the MoniWiki (experimental)
  -# $Id: acl.php,v 1.15 2010/09/28 04:06:12 wkpark Exp $
  +# $Id: acl.php,v 1.16 2010/09/30 05:53:47 wkpark Exp $
   #
   # Please see http://moniwiki.kldp.net/wiki/wiki.php/MoniWikiACL
   #
  @@ -148,29 +148,42 @@
                   #if (in_array($rule[0],array('@','#'))) continue;
                   $rule= preg_replace('/#.*$/','',$rule); # delete comments
                   $rule= rtrim($rule);
  -                $acl= preg_split('/\s+/',$rule,4);
  -                if (!$acl[3]) $acl[3]='*';
  -                if ($acl[0] != '*') {
  -                    $prule=$acl[0];
  +
  +                $tmp = preg_match('/^(.*)\s+('.$gregex.')\s+(allow|protect|deny)\s*(.*)?$/i', $rule, $acl);
  +                if (!$tmp) continue;
  +
  +                if (!$acl[4]) $acl[4]='*';
  +                if ($acl[1] != '*' and $acl[1] != $pg) {
  +                    $prules = get_csv($acl[1]);
                       // a regex or a simplified pattern like as
                       // HelpOn* -> HelpOn.*
                       // MoniWiki/* -> MoniWiki\/.*
   
  -                    if ($prule != $pg) {
  -                        // is it a regex or a simplified pattern
  -                        $prule=
  -                            preg_replace(array('/(?!<\.)\*/',"/(?<!\\\\)\//"),array('.*','\/'),$prule);
  -
  -                        if (!@preg_match("/$prule/",$pg)) continue;
  +                    $found = false;
  +                    foreach ($prules as $prule) {
  +                        if ($prule == $pg) {
  +                            $found = true;
  +                            break;
  +                        } else {
  +                            // is it a regex or a simplified pattern
  +                            $prule=
  +                                preg_replace(array('/(?!<\.)\*/',"/(?<!\\\\)\//"),array('.*','\/'),$prule);
  +
  +                            if (@preg_match("/$prule/", $pg)) {
  +                                $found = true;
  +                                break;
  +                            }
  +                        }
                       }
  +                    if (!$found) continue;
                   }
   
  -                if ($acl[2] == 'allow') {
  -                    $tmp=explode(',',$acl[3]);
  +                if ($acl[3] == 'allow') {
  +                    $tmp=explode(',',$acl[4]);
                       $tmp=array_flip($tmp);
  -                    if ($acl[1] == $user) $pri=4;
  -                    else if ($acl[1] == '@ALL') $pri=1;
  -                    else $pri= $gpriority[$acl[1]] ? $gpriority[$acl[1]]:2; # get group prio
  +                    if ($acl[2] == $user) $pri=4;
  +                    else if ($acl[2] == '@ALL') $pri=1;
  +                    else $pri= $gpriority[$acl[2]] ? $gpriority[$acl[2]]:2; # get group prio
                       $keys=array_keys($tmp);
                       foreach ($keys as $t) {
                           if (isset($allowed[$t]) and $allowed[$t] > $pri)
  @@ -181,12 +194,12 @@
                               unset($denied[$t]);
                       }
                       $allowed=array_merge($allowed,$tmp);
  -                } else if ($acl[2] == 'deny') {
  -                    $tmp=explode(',',$acl[3]);
  +                } else if ($acl[3] == 'deny') {
  +                    $tmp=explode(',',$acl[4]);
                       $tmp=array_flip($tmp);
  -                    if ($acl[1] == $user) $pri=4;
  -                    else if ($acl[1] == '@ALL') $pri=1;
  -                    else $pri= $gpriority[$acl[1]] ? $gpriority[$acl[1]]:2; # set group prio
  +                    if ($acl[2] == $user) $pri=4;
  +                    else if ($acl[2] == '@ALL') $pri=1;
  +                    else $pri= $gpriority[$acl[2]] ? $gpriority[$acl[2]]:2; # set group prio
                       $keys=array_keys($tmp);
                       foreach ($keys as $t) {
                           if (isset($denied[$t]) and $denied[$t] > $pri)
  @@ -197,8 +210,8 @@
                               unset($allowed[$t]);
                       }
                       $denied=array_merge($denied,$tmp);
  -                } else if ($acl[2] == 'protect') {
  -                    $tmp=explode(',',$acl[3]);
  +                } else if ($acl[3] == 'protect') {
  +                    $tmp=explode(',',$acl[4]);
                       $tmp=array_flip($tmp);
                       $protected=array_merge($protected,$tmp);
                   }
  
  
  


1285826268;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv5498/plugin\n\nModified Files:\n	whois.php \nLog Message:\n[#315742] check server charset and fix encoding of content with iconv()\n\n
wkpark      2010/09/30 14:57:49

  Modified:    plugin   whois.php
  Log:
  [#315742] check server charset and fix encoding of content with iconv()
  
  Revision  Changes    Path
  1.3       +13 -6     moniwiki/plugin/whois.php
  
  Index: whois.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/whois.php,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- whois.php	14 Aug 2003 17:51:22 -0000	1.2
  +++ whois.php	30 Sep 2010 05:57:48 -0000	1.3
  @@ -2,11 +2,11 @@
   // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a sample whois plugin for the MoniWiki
  -// $Id: whois.php,v 1.2 2003/08/14 17:51:22 wkpark Exp $
  +// $Id: whois.php,v 1.3 2010/09/30 05:57:48 wkpark Exp $
   
   function do_whois($formatter,$options) {
     $query=$options['q'];
  -  $whois_servers=array("whois.nic.or.kr","whois.internic.net");
  +  $whois_servers=array("whois.nic.or.kr"=>'euc-kr',"whois.internic.net"=>'iso-8859-1');
   
   #$whois_servers_full = array(
   #"kr" => "whois.nic.or.kr",
  @@ -113,7 +113,7 @@
     $arg= rtrim($query)."\n";
   
     $result="";
  -  foreach ($whois_servers as $key=>$server) {
  +  foreach ($whois_servers as $server=>$charset) {
       $fp= fsockopen($server,43);
       if(!$fp) {
         $error=sprintf(_("Could not connect to %s server"),$key);
  @@ -134,16 +134,23 @@
       }
       if (!$notfound) break;
     }
  -  $out ="=== ".sprintf(_("Whois search result for %s"),$query)." ===\n";
  -  $out.="{{{\n$result\n}}}";
  +  if (!empty($result) and function_exists('iconv')) {
  +    if (strtolower($DBInfo->charset) != $charset) {
  +      $tmp = iconv('EUC-KR', $DBInfo->charset, $result);
  +      if (!empty($tmp)) $result = $tmp;
  +    }
  +  }
  +  $out ="=== ".sprintf(_("Whois search result for %s"), $query)." ===\n";
  +  $out.="{{{\n$server\n$result\n}}}";
     $out.= "hostname : [http://ws.arin.net/cgi-bin/whois.pl?queryinput=$query ".gethostbyaddr($query)."]";
  +  $formatter->get_javascripts();
     $formatter->send_page($out);
     return;
   }
   
   function macro_whois($formatter,$value='') {
     return <<<EOF
  -<form method='post'>
  +<form method='get'>
   <input type="hidden" name="action" value="whois" />
   <input type="text" name="q" size="15" /><input type="submit" value="Query" />
   </form>
  
  
  


1285861619;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv26079/plugin\n\nModified Files:\n	bookmark.php Diff.php \nLog Message:\n[#315290] fixed notice warning\n\n
1285861620;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin/security\nIn directory kill.kldp.net:/tmp/cvs-serv26079/plugin/security\n\nModified Files:\n	acl.php \nLog Message:\n[#315290] fixed notice warning\n\n
wkpark      2010/10/01 00:47:01

  Modified:    plugin   bookmark.php Diff.php
               plugin/security acl.php
  Log:
  [#315290] fixed notice warning
  
  Revision  Changes    Path
  1.12      +5 -3      moniwiki/plugin/bookmark.php
  
  Index: bookmark.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/bookmark.php,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- bookmark.php	16 Sep 2010 12:19:47 -0000	1.11
  +++ bookmark.php	30 Sep 2010 15:46:59 -0000	1.12
  @@ -2,9 +2,8 @@
   // Copyright 2003 2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a bookmark action plugin for the MoniWiki
  -// vim:et:ts=2:
   //
  -// $Id: bookmark.php,v 1.11 2010/09/16 12:19:47 wkpark Exp $
  +// $Id: bookmark.php,v 1.12 2010/09/30 15:46:59 wkpark Exp $
   
   // internal use only
   function macro_bookmark($formatter, $value = '', &$options) {
  @@ -13,7 +12,7 @@
   
     $user = &$DBInfo->user; # get cookie
   
  -  if (!$options['time']) {
  +  if (empty($options['time'])) {
        $bookmark = time();
     } else {
        $bookmark = $options['time'];
  @@ -38,8 +37,10 @@
       } else {
         $ret['title']=_("Bookmark Deleted !");
         $user->info['bookmark']=0;
  +      $bookmark = 0;
       }
       $DBInfo->udb->saveUser($user);
  +    $_COOKIE['MONI_BOOKMARK']=$bookmark;
       $user->bookmark=$bookmark;
     }
   
  @@ -63,4 +64,5 @@
     $formatter->send_footer("",$options);
   }
   
  +// vim:et:sts=2:sw=2:
   ?>
  
  
  
  1.26      +5 -1      moniwiki/plugin/Diff.php
  
  Index: Diff.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Diff.php,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- Diff.php	13 Sep 2010 11:03:47 -0000	1.25
  +++ Diff.php	30 Sep 2010 15:46:59 -0000	1.26
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a diff plugin for the MoniWiki
   //
  -// $Id: Diff.php,v 1.25 2010/09/13 11:03:47 wkpark Exp $
  +// $Id: Diff.php,v 1.26 2010/09/30 15:46:59 wkpark Exp $
   
   
   function code_diff($diff, $options = array()) {
  @@ -232,6 +232,10 @@
     include_once("lib/difflib.php");
     $diff=str_replace("<","&lt;",$diff);
     $lines=explode("\n",$diff);
  +
  +  // trash the last empty line;
  +  $end = end($lines);
  +  if (!isset($end[0])) array_pop($lines);
     $out="";
     #unset($lines[0]); unset($lines[1]);
   
  
  
  
  1.17      +2 -2      moniwiki/plugin/security/acl.php
  
  Index: acl.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/acl.php,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- acl.php	30 Sep 2010 05:53:47 -0000	1.16
  +++ acl.php	30 Sep 2010 15:46:59 -0000	1.17
  @@ -1,6 +1,6 @@
   <?php
   # a ACL security plugin for the MoniWiki (experimental)
  -# $Id: acl.php,v 1.16 2010/09/30 05:53:47 wkpark Exp $
  +# $Id: acl.php,v 1.17 2010/09/30 15:46:59 wkpark Exp $
   #
   # Please see http://moniwiki.kldp.net/wiki/wiki.php/MoniWikiACL
   #
  @@ -183,7 +183,7 @@
                       $tmp=array_flip($tmp);
                       if ($acl[2] == $user) $pri=4;
                       else if ($acl[2] == '@ALL') $pri=1;
  -                    else $pri= $gpriority[$acl[2]] ? $gpriority[$acl[2]]:2; # get group prio
  +                    else $pri= !empty($gpriority[$acl[2]]) ? $gpriority[$acl[2]]:2; # get group prio
                       $keys=array_keys($tmp);
                       foreach ($keys as $t) {
                           if (isset($allowed[$t]) and $allowed[$t] > $pri)
  
  
  


1285942134;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv21363\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315290] use isset() correctly\n\n
wkpark      2010/10/01 23:08:55

  Modified:    .        wikilib.php
  Log:
  [#315290] use isset() correctly
  
  Revision  Changes    Path
  1.366     +2 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.365
  retrieving revision 1.366
  diff -u -r1.365 -r1.366
  --- wikilib.php	28 Sep 2010 04:05:34 -0000	1.365
  +++ wikilib.php	1 Oct 2010 14:08:54 -0000	1.366
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.365 2010/09/28 04:05:34 wkpark Exp $
  +// $Id: wikilib.php,v 1.366 2010/10/01 14:08:54 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -741,7 +741,7 @@
         $user->info['ticket']=$user->ticket;
   
       foreach ($config as $key) {
  -      if (!empty($user->info[$key]))
  +      if (isset($user->info[$key][0]))
           $data.="$key=".$user->info[$key]."\n";
       }
   
  
  
  


1285984123;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv3448/plugin\n\nModified Files:\n	bookmark.php \nLog Message:\n[#315699] fixed last changes to support bookmark reset correctly\n\n
wkpark      2010/10/02 10:48:44

  Modified:    plugin   bookmark.php
  Log:
  [#315699] fixed last changes to support bookmark reset correctly
  
  Revision  Changes    Path
  1.13      +8 -8      moniwiki/plugin/bookmark.php
  
  Index: bookmark.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/bookmark.php,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- bookmark.php	30 Sep 2010 15:46:59 -0000	1.12
  +++ bookmark.php	2 Oct 2010 01:48:43 -0000	1.13
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a bookmark action plugin for the MoniWiki
   //
  -// $Id: bookmark.php,v 1.12 2010/09/30 15:46:59 wkpark Exp $
  +// $Id: bookmark.php,v 1.13 2010/10/02 01:48:43 wkpark Exp $
   
   // internal use only
   function macro_bookmark($formatter, $value = '', &$options) {
  @@ -12,7 +12,7 @@
   
     $user = &$DBInfo->user; # get cookie
   
  -  if (empty($options['time'])) {
  +  if (!isset($options['time'][0])) {
        $bookmark = time();
     } else {
        $bookmark = $options['time'];
  @@ -20,7 +20,7 @@
     $ret = array();
   
     if ($user->id == "Anonymous") {
  -    if (is_numeric($bookmark)) {
  +    if (is_numeric($bookmark) and $bookmark > 0) {
         setcookie("MONI_BOOKMARK",$bookmark,time()+60*60*24*30,get_scriptname());
         $ret['title'] = _('Bookmark Changed');
       } else {
  @@ -31,17 +31,17 @@
       $_COOKIE['MONI_BOOKMARK']=$bookmark;
       $user->bookmark=$bookmark;
     } else {
  -    if (is_numeric($bookmark)) {
  +    if (is_numeric($bookmark) and $bookmark > 0) {
         $ret['title'] = _('Bookmark Changed');
         $user->info['bookmark']=$bookmark;
  +      $user->bookmark=$bookmark;
       } else {
         $ret['title']=_("Bookmark Deleted !");
  -      $user->info['bookmark']=0;
  -      $bookmark = 0;
  +      $user->info['bookmark']= null;
       }
       $DBInfo->udb->saveUser($user);
  -    $_COOKIE['MONI_BOOKMARK']=$bookmark;
  -    $user->bookmark=$bookmark;
  +    if (empty($user->info['bookmark']))
  +      unset($user->bookmark);
     }
   
     if (isset($options['ret']))
  
  
  


1285984665;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv3640\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315681] fixed Last-modified timestamp check\n\n
wkpark      2010/10/02 10:57:46

  Modified:    .        wikilib.php
  Log:
  [#315681] fixed Last-modified timestamp check
  
  Revision  Changes    Path
  1.367     +3 -2      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.366
  retrieving revision 1.367
  diff -u -r1.366 -r1.367
  --- wikilib.php	1 Oct 2010 14:08:54 -0000	1.366
  +++ wikilib.php	2 Oct 2010 01:57:45 -0000	1.367
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.366 2010/10/01 14:08:54 wkpark Exp $
  +// $Id: wikilib.php,v 1.367 2010/10/02 01:57:45 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -394,7 +394,8 @@
       if ($if_modified_since) {
           // calculate time
           $mytime = @strtotime( $if_modified_since );
  -        if ( $mtime < $mytime) {
  +        if ( $mtime > $mytime) {
  +            header('X-Check: '.$mtime.' '.$mytime);
               return true; // if-modified-since is there but doesn't match
           }
       }
  
  
  


1285985239;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv3829\n\nModified Files:\n	wiki.php \nLog Message:\n[#315677] set trailer correctly for client-side scripting. fixed timezone.\n\n
wkpark      2010/10/02 11:07:20

  Modified:    .        wiki.php
  Log:
  [#315677] set trailer correctly for client-side scripting. fixed timezone.
  
  Revision  Changes    Path
  1.634     +8 -6      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.633
  retrieving revision 1.634
  diff -u -r1.633 -r1.634
  --- wiki.php	28 Sep 2010 15:00:43 -0000	1.633
  +++ wiki.php	2 Oct 2010 02:07:19 -0000	1.634
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.633 2010/09/28 15:00:43 wkpark Exp $
  +// $Id: wiki.php,v 1.634 2010/10/02 02:07:19 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.633 $',1,-1);
  +$_revision = substr('$Revision: 1.634 $',1,-1);
   $_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -4812,12 +4812,14 @@
     // render trails
     var str = [];
     var trail = document.createElement("span");
  -  for (var i = 0; i < trails.length - 1; i++) {
  +  for (var i = 0, j = 0; i < trails.length; i++) {
       var url = escape(trails[i]).replace(/\\+/g, "%20");
       var txt = decodeURIComponent(escape(trails[i])).replace(/\\+/g, " ");
  -    str[i] = "<a href='" + url_prefix + query_prefix + url + "'>" + txt + "</a>";
  +    if (txt == "$pagename") continue;
  +    str[j] = "<a href='" + url_prefix + query_prefix + url + "'>" + txt + "</a>";
  +    j++;
     }
  -  str[i] = decodeURIComponent(escape(trails[i])).replace(/\\+/g, " ");
  +  str[j] = decodeURIComponent(escape("$pagename")).replace(/\\+/g, " ");
     document.write(str.join("<span class='separator'>$DBInfo->arrow</span>"));
   })();
   </script>
  @@ -5044,7 +5046,7 @@
   if ($options['id'] != 'Anonymous') {
     $options['css_url']=!empty($user->info['css_url']) ? $user->info['css_url'] : '';
     $options['quicklinks']=!empty($user->info['quicklinks']) ? $user->info['quicklinks'] : '';
  -  $options['tz_offset']=!empty($user->info['tz_offset']) ? $user->info['tz_offset'] : '';
  +  $options['tz_offset']=!empty($user->info['tz_offset']) ? $user->info['tz_offset'] : date('Z');
     if (empty($theme)) $options['theme']=!empty($user->info['theme']) ? $user->info['theme'] : '';
   } else {
     $options['css_url']=$user->css;
  
  
  


1285988144;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv9752\n\nModified Files:\n      Tag: B_1_1_5\n	config.php.default wiki.php wikilib.php \nLog Message:\n[#315717] merged from trunk\n\n#315742	fixed the encoding of whois action plugin\n#315739	fixed [[Page Name:Sub Page]] syntax\n#315738	support [[Page Name |Title]] syntax like as WikiCreole / MediaWiki\n#315737	set $config_dir to load a ACL config file correctly.\n#315736	* support $titlesearch_noredirect to prevent redirect to the only one matched page\n * $titleseach_noexact=1 search all pages ($titleseach_noexact=0 is default)\n * $titleseach_exact_all search all exact matches ($titleseach_exact_all=0 is default)\n#315735	#315741 * check exact matched page names correctly.\n * accept comma separated and spaced pagenames correctly\n#315734  fixed ["Hello" world] syntax reported by icehit3\n#315724	$use_smilar_text option added.\n#315722	* prototyping PaSTA ojbect\n * more keyboard friendly PaSTA with TextArea\n#315681	fixd to check Last-modified timestamp correctly\n#315677	fixed client-side trailer script\n#315672	1.1.5 bug report - #alias\n#315577 fixed recursive expression and add {{{}}}, {{{{{{}}}, {{{}}}}}}\n#315290	fixed notice warnings\n\n
1285988144;wkpark;Update of /cvsroot/moniwiki/moniwiki/css\nIn directory kill.kldp.net:/tmp/cvs-serv9752/css\n\nModified Files:\n      Tag: B_1_1_5\n	kbd.js \nLog Message:\n[#315717] merged from trunk\n\n#315742	fixed the encoding of whois action plugin\n#315739	fixed [[Page Name:Sub Page]] syntax\n#315738	support [[Page Name |Title]] syntax like as WikiCreole / MediaWiki\n#315737	set $config_dir to load a ACL config file correctly.\n#315736	* support $titlesearch_noredirect to prevent redirect to the only one matched page\n * $titleseach_noexact=1 search all pages ($titleseach_noexact=0 is default)\n * $titleseach_exact_all search all exact matches ($titleseach_exact_all=0 is default)\n#315735	#315741 * check exact matched page names correctly.\n * accept comma separated and spaced pagenames correctly\n#315734  fixed ["Hello" world] syntax reported by icehit3\n#315724	$use_smilar_text option added.\n#315722	* prototyping PaSTA ojbect\n * more keyboard friendly PaSTA with TextArea\n#315681	fixd to check Last-modified timestamp correctly\n#315677	fixed client-side trailer script\n#315672	1.1.5 bug report - #alias\n#315577 fixed recursive expression and add {{{}}}, {{{{{{}}}, {{{}}}}}}\n#315290	fixed notice warnings\n\n
1285988144;wkpark;Update of /cvsroot/moniwiki/moniwiki/local\nIn directory kill.kldp.net:/tmp/cvs-serv9752/local\n\nModified Files:\n      Tag: B_1_1_5\n	pasta.js \nLog Message:\n[#315717] merged from trunk\n\n#315742	fixed the encoding of whois action plugin\n#315739	fixed [[Page Name:Sub Page]] syntax\n#315738	support [[Page Name |Title]] syntax like as WikiCreole / MediaWiki\n#315737	set $config_dir to load a ACL config file correctly.\n#315736	* support $titlesearch_noredirect to prevent redirect to the only one matched page\n * $titleseach_noexact=1 search all pages ($titleseach_noexact=0 is default)\n * $titleseach_exact_all search all exact matches ($titleseach_exact_all=0 is default)\n#315735	#315741 * check exact matched page names correctly.\n * accept comma separated and spaced pagenames correctly\n#315734  fixed ["Hello" world] syntax reported by icehit3\n#315724	$use_smilar_text option added.\n#315722	* prototyping PaSTA ojbect\n * more keyboard friendly PaSTA with TextArea\n#315681	fixd to check Last-modified timestamp correctly\n#315677	fixed client-side trailer script\n#315672	1.1.5 bug report - #alias\n#315577 fixed recursive expression and add {{{}}}, {{{{{{}}}, {{{}}}}}}\n#315290	fixed notice warnings\n\n
1285988144;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv9752/plugin\n\nModified Files:\n      Tag: B_1_1_5\n	Diff.php LikePages.php bookmark.php whois.php \nLog Message:\n[#315717] merged from trunk\n\n#315742	fixed the encoding of whois action plugin\n#315739	fixed [[Page Name:Sub Page]] syntax\n#315738	support [[Page Name |Title]] syntax like as WikiCreole / MediaWiki\n#315737	set $config_dir to load a ACL config file correctly.\n#315736	* support $titlesearch_noredirect to prevent redirect to the only one matched page\n * $titleseach_noexact=1 search all pages ($titleseach_noexact=0 is default)\n * $titleseach_exact_all search all exact matches ($titleseach_exact_all=0 is default)\n#315735	#315741 * check exact matched page names correctly.\n * accept comma separated and spaced pagenames correctly\n#315734  fixed ["Hello" world] syntax reported by icehit3\n#315724	$use_smilar_text option added.\n#315722	* prototyping PaSTA ojbect\n * more keyboard friendly PaSTA with TextArea\n#315681	fixd to check Last-modified timestamp correctly\n#315677	fixed client-side trailer script\n#315672	1.1.5 bug report - #alias\n#315577 fixed recursive expression and add {{{}}}, {{{{{{}}}, {{{}}}}}}\n#315290	fixed notice warnings\n\n
1285988145;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin/security\nIn directory kill.kldp.net:/tmp/cvs-serv9752/plugin/security\n\nModified Files:\n      Tag: B_1_1_5\n	acl.php \nLog Message:\n[#315717] merged from trunk\n\n#315742	fixed the encoding of whois action plugin\n#315739	fixed [[Page Name:Sub Page]] syntax\n#315738	support [[Page Name |Title]] syntax like as WikiCreole / MediaWiki\n#315737	set $config_dir to load a ACL config file correctly.\n#315736	* support $titlesearch_noredirect to prevent redirect to the only one matched page\n * $titleseach_noexact=1 search all pages ($titleseach_noexact=0 is default)\n * $titleseach_exact_all search all exact matches ($titleseach_exact_all=0 is default)\n#315735	#315741 * check exact matched page names correctly.\n * accept comma separated and spaced pagenames correctly\n#315734  fixed ["Hello" world] syntax reported by icehit3\n#315724	$use_smilar_text option added.\n#315722	* prototyping PaSTA ojbect\n * more keyboard friendly PaSTA with TextArea\n#315681	fixd to check Last-modified timestamp correctly\n#315677	fixed client-side trailer script\n#315672	1.1.5 bug report - #alias\n#315577 fixed recursive expression and add {{{}}}, {{{{{{}}}, {{{}}}}}}\n#315290	fixed notice warnings\n\n
wkpark      2010/10/02 11:55:45

  Modified:    .        Tag: B_1_1_5 config.php.default wiki.php
                        wikilib.php
               css      Tag: B_1_1_5 kbd.js
               local    Tag: B_1_1_5 pasta.js
               plugin   Tag: B_1_1_5 Diff.php LikePages.php bookmark.php
                        whois.php
               plugin/security Tag: B_1_1_5 acl.php
  Log:
  [#315717] merged from trunk
  
  #315742	fixed the encoding of whois action plugin
  #315739	fixed [[Page Name:Sub Page]] syntax
  #315738	support [[Page Name |Title]] syntax like as WikiCreole / MediaWiki
  #315737	set $config_dir to load a ACL config file correctly.
  #315736	* support $titlesearch_noredirect to prevent redirect to the only one matched page
   * $titleseach_noexact=1 search all pages ($titleseach_noexact=0 is default)
   * $titleseach_exact_all search all exact matches ($titleseach_exact_all=0 is default)
  #315735	#315741 * check exact matched page names correctly.
   * accept comma separated and spaced pagenames correctly
  #315734  fixed ["Hello" world] syntax reported by icehit3
  #315724	$use_smilar_text option added.
  #315722	* prototyping PaSTA ojbect
   * more keyboard friendly PaSTA with TextArea
  #315681	fixd to check Last-modified timestamp correctly
  #315677	fixed client-side trailer script
  #315672	1.1.5 bug report - #alias
  #315577 fixed recursive expression and add {{{}}}, {{{{{{}}}, {{{}}}}}}
  #315290	fixed notice warnings
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.63.2.2  +7 -1      moniwiki/config.php.default
  
  Index: config.php.default
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/config.php.default,v
  retrieving revision 1.63.2.1
  retrieving revision 1.63.2.2
  diff -u -r1.63.2.1 -r1.63.2.2
  --- config.php.default	14 Sep 2010 21:05:41 -0000	1.63.2.1
  +++ config.php.default	2 Oct 2010 02:55:44 -0000	1.63.2.2
  @@ -1,7 +1,7 @@
   <?php
   # This is a default 
   #
  -# $Id: config.php.default,v 1.63.2.1 2010/09/14 21:05:41 wkpark Exp $
  +# $Id: config.php.default,v 1.63.2.2 2010/10/02 02:55:44 wkpark Exp $
   #
   $sitename='UnnamedWiki'; # site name
   $data_dir= './data';
  @@ -161,6 +161,8 @@
   #$myprocessors=array('latex'=>'mimetex');
   #$myplugins=array('fullsearch'=>'FastSearch'); # substitute action/macro
   #$myplugins=array('swfupload'=>false); # disable some macro
  +#
  +#$extra_macros=array('FootNote', 'Comment'); # call some extra macros after send_page()
   
   #$url_schemas='mms';
   #$blacklist='127.0.0.0/24:192.168.1.0/24:192.168.1.67'; # block ip
  @@ -290,3 +292,7 @@
   #$use_pageindex=0; # pagename indexer for fast RandomPage
   #$use_delaytime = 60*60*24; # set the default delayed time for caching as 24 hours
   #$use_avatar='identicon'; # set avatar imgs based on user IP address for anonymous users. default: identicon
  +#$titlesearch_noexact=0; # do not search exact page name and get all titlesearch results
  +#$titlesearch_exact_all=0; # get all exact matches
  +#$titlesearch_noredirect=0; # do not redirect to the only one founded page except exact match.
  +#$use_similar_text=0; # use similar_text() function (in likepages action)
  
  
  
  1.600.2.6 +45 -20    moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.600.2.5
  retrieving revision 1.600.2.6
  diff -u -r1.600.2.5 -r1.600.2.6
  --- wiki.php	22 Sep 2010 16:05:14 -0000	1.600.2.5
  +++ wiki.php	2 Oct 2010 02:55:44 -0000	1.600.2.6
  @@ -11,10 +11,10 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.600.2.5 2010/09/22 16:05:14 wkpark Exp $
  +// $Id: wiki.php,v 1.600.2.6 2010/10/02 02:55:44 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.600.2.5 $',1,-1);
  -$_release = '1.1.6-CVS';
  +$_revision = substr('$Revision: 1.600.2.6 $',1,-1);
  +$_release = '1.1.6-RC1';
   
   #ob_start("ob_gzhandler");
   
  @@ -2139,7 +2139,9 @@
       #(?P<word>(?:/?[A-Z]([a-z0-9]+|[A-Z]*(?=[A-Z][a-z0-9]|\b))){2,})
       $this->wordrule=
       # nowiki
  -    "({{{(?:(?:[^{}]+|{[^{}]+}(?!})|(?<!{){{1,2}(?!{)|(?<!})}{1,2}(?!}))|(?1))+}}})|".
  +    "!?({{{(?:(?:[^{}]+|{[^{}]+}(?!})|(?<!{){{1,2}(?!{)|(?<!})}{1,2}(?!}))|(?2))++}}})|".
  +    # {{{{{{}}}, {{{}}}}}}, {{{}}}
  +    "(?:(?!<{{{){{{}}}(?!}}})|{{{(?:{{{|}}})}}})|".
       # single bracketed rule [http://blah.blah.com Blah Blah]
       "(?:\[\^?($url):[^\s\]]+(?:\s[^\]]+)?\])|".
       # InterWiki
  @@ -2157,7 +2159,7 @@
       #  * single bracketted words [Hello World] etc.
       #  * single bracketted words with double quotes ["Hello World"]
       #  * double bracketted words with double quotes [["Hello World"]]
  -    "(?<!\[)\!?\[(\[)$single(\")?(?:[^\[\]\",<\s'\*][^\[\]]{0,255}[^\"])(?(5)\"(?:[^\"]*))(?(4)\])\](?!\])";
  +    "(?<!\[)\!?\[(\[)$single(\")?(?:[^\[\]\",<\s'\*][^\[\]]{0,255}[^\"])(?(5)\"(?:[^\"\]]*))(?(4)\])\](?!\])";
   
       if ($camelcase)
         $this->wordrule.='|'.
  @@ -2474,6 +2476,8 @@
       switch ($url[0]) {
       case '{':
         $url=substr($url,3,-3);
  +      if (empty($url))
  +        return "<tt class='nowiki'></tt>"; # No link
         if (preg_match('/^({([^{}]+)})/s',$url,$sty)) { # textile like styling
           $url=substr($url,strlen($sty[1]));
           $url = preg_replace($this->baserule, $this->baserepl, $url); // apply inline formatting rules
  @@ -2553,8 +2557,19 @@
       $url=str_replace('&lt;','<',$url); // revert from baserule
       $url=preg_replace('/&(?!#?[a-z0-9]+;)/i','&amp;',$url);
   
  +    if ($url[0] == '"') {
  +      // [["Hello World"]], [["Hello World" Page Title]]
  +      return $this->word_repl($bra.$url.$ket, '', $attr);
  +    } else
       if (($p=strpos($url,':')) !== false and
           (!isset($url{$p+1}) or (isset($url{$p+1}) and $url{$p+1}!=':'))) {
  +
  +      // namespaced pages
  +      // [[한글:페이지]], [[한글:페이지 이름]]
  +      // mixed name with non ASCII chars
  +      if (preg_match('/^([^a-zA-Z0-9]+.*)\:/', $url))
  +        return $this->word_repl($bra.$url.$ket, '', $attr);
  +
         if ($url[0]=='a') { # attachment:
           $url=preg_replace('/&amp;/i','&',$url);
           return $this->macro_repl('attachment',substr($url,11));
  @@ -2576,6 +2591,7 @@
               preg_replace('/('.$this->url_mapping_rule.')/ie',"\$this->url_mappings['\\1']",$url);
         }
   
  +      // InterWiki Pages
         if (preg_match("/^(:|w|[A-Z])/",$url)
             or (!empty($this->urls) and !preg_match('/^('.$this->urls.')/',$url)))
           return $this->interwiki_repl($url,'',$attr,$external_icon);
  @@ -2663,13 +2679,11 @@
         $url=urldecode($url);
         return "<a class='externalLink' $attr href='$link' $this->external_target>$url</a>";
       } else {
  -      if ($url{0}=='?') {
  +      if ($url{0}=='?')
           $url=substr($url,1);
  -      } else if (!empty($this->mediawiki_style) and $double_bracket and $url[0] != '"' and strpos($url, ' ') !== false) {
  -        $url = '"'.$url.'"';
  -      }
  +
         $url = preg_replace('/&amp;/i', '&', $url);
  -      return $this->word_repl($url,'',$attr);
  +      return $this->word_repl($bra.$url.$ket, '', $attr);
       }
     }
   
  @@ -2837,19 +2851,28 @@
       global $DBInfo;
       $nonexists='nonexists_'.$this->nonexists;
   
  +    $word = $page = trim($word, '[]'); // trim out [[Hello World]] => Hello World
  +
       $extended = false;
  -    if (($word[0] == '"' or $word[0] == 'w') and preg_match('/^(?:wiki\:)?((")?[^"]+\2)((\s+)?(.*))?$/', $word, $m)) {
  +    if (($word[0] == '"' or $word[0] == 'w') and preg_match('/^(?:wiki\:)?((")?[^"]+\2)((\s+|\|)?(.*))?$/', $word, $m)) {
         # ["extended wiki name"]
         # ["Hello World" Go to Hello]
         # [wiki:"Hello World" Go to Main]
         $word = substr($m[1], 1, -1);
  -      if (isset($m[5])) $text = $m[5]; // text arg ignored
  +      if (isset($m[5][0])) $text = $m[5]; // text arg ignored
   
         $extended=true;
         $page=$word;
  -    } else
  +    } else if (($p = strpos($word, '|')) !== false) {
  +      // or MediaWiki/WikiCreole like links
  +      $text = substr($word, $p + 1);
  +      $word = substr($word, 0, $p);
  +      $page = $word;
  +    }
  +    if (!$extended and empty($DBInfo->mediawiki_style)) {
         #$page=preg_replace("/\s+/","",$word); # concat words
         $page=normalize($word); # concat words
  +    }
   
       if (empty($DBInfo->use_twikilink)) $islink=0;
       list($page,$page_text,$gpage)=
  @@ -2934,7 +2957,7 @@
               "<tt class='sister'><a href='$url'>&#x203a;</a></tt>";
           }
           if (!empty($sisters)) {
  -          if (!empty($this->use_easyalias) and !preg_match('/^\[wiki:[A-Z][a-z0-9]+:.*$/', $sisters)) {
  +          if (!empty($this->use_easyalias) and !preg_match('/^\[wiki:[A-Z][A-Za-z0-9]+:.*$/', $sisters)) {
               # this is a alias
               $this->use_easyalias=0;
               $url=$this->link_repl(substr($sisters,0,-1).' '.$word.']');
  @@ -3965,7 +3988,7 @@
                           {[^{}]+}(?!})|
                           (?<!{){{1,2}(?!{)|
                           (?<!})}{1,2}(?!}))|(?1)
  -                          )+}}})/x",$line,-1,PREG_SPLIT_DELIM_CAPTURE);
  +                          )++}}})/x",$line,-1,PREG_SPLIT_DELIM_CAPTURE);
         $inline = array(); // save inline nowikis
   
         if (count($chunk) > 1) {
  @@ -5387,12 +5410,14 @@
     // render trails
     var str = [];
     var trail = document.createElement("span");
  -  for (var i = 0; i < trails.length - 1; i++) {
  +  for (var i = 0, j = 0; i < trails.length; i++) {
       var url = escape(trails[i]).replace(/\\+/g, "%20");
       var txt = decodeURIComponent(escape(trails[i])).replace(/\\+/g, " ");
  -    str[i] = "<a href='" + url_prefix + query_prefix + url + "'>" + txt + "</a>";
  +    if (txt == "$pagename") continue;
  +    str[j] = "<a href='" + url_prefix + query_prefix + url + "'>" + txt + "</a>";
  +    j++;
     }
  -  str[i] = decodeURIComponent(escape(trails[i])).replace(/\\+/g, " ");
  +  str[j] = decodeURIComponent(escape("$pagename")).replace(/\\+/g, " ");
     document.write(str.join("<span class='separator'>$DBInfo->arrow</span>"));
   })();
   </script>
  @@ -5619,7 +5644,7 @@
   if ($options['id'] != 'Anonymous') {
     $options['css_url']=!empty($user->info['css_url']) ? $user->info['css_url'] : '';
     $options['quicklinks']=!empty($user->info['quicklinks']) ? $user->info['quicklinks'] : '';
  -  $options['tz_offset']=!empty($user->info['tz_offset']) ? $user->info['tz_offset'] : '';
  +  $options['tz_offset']=!empty($user->info['tz_offset']) ? $user->info['tz_offset'] : date('Z');
     if (empty($theme)) $options['theme']=!empty($user->info['theme']) ? $user->info['theme'] : '';
   } else {
     $options['css_url']=$user->css;
  @@ -6152,7 +6177,7 @@
           echo "</div>\n";
         }
   
  -      $formatter->send_footer($args,$options);
  +      $formatter->send_footer('',$options);
         return;
       } else if ($_SERVER['REQUEST_METHOD']=="POST" and
         $DBInfo->security->is_protected($action,$options) and
  
  
  
  1.344.2.5 +21 -8     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.344.2.4
  retrieving revision 1.344.2.5
  diff -u -r1.344.2.4 -r1.344.2.5
  --- wikilib.php	22 Sep 2010 16:05:14 -0000	1.344.2.4
  +++ wikilib.php	2 Oct 2010 02:55:44 -0000	1.344.2.5
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.344.2.4 2010/09/22 16:05:14 wkpark Exp $
  +// $Id: wikilib.php,v 1.344.2.5 2010/10/02 02:55:44 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -394,7 +394,8 @@
       if ($if_modified_since) {
           // calculate time
           $mytime = @strtotime( $if_modified_since );
  -        if ( $mtime < $mytime) {
  +        if ( $mtime > $mytime) {
  +            header('X-Check: '.$mtime.' '.$mytime);
               return true; // if-modified-since is there but doesn't match
           }
       }
  @@ -741,7 +742,7 @@
         $user->info['ticket']=$user->ticket;
   
       foreach ($config as $key) {
  -      if (!empty($user->info[$key]))
  +      if (isset($user->info[$key][0]))
           $data.="$key=".$user->info[$key]."\n";
       }
   
  @@ -1897,10 +1898,12 @@
   }
   
   function do_titlesearch($formatter,$options) {
  +  global $DBInfo;
   
  +  $ret = array();
     $out= macro_TitleSearch($formatter,$options['value'],$ret);
   
  -  if ($ret['hits']==1) {
  +  if ($ret['hits']==1 and (empty($DBInfo->titlesearch_noredirect) or !empty($ret['exact']))) {
       $options['value']=$ret['value'];
       $options['redirect']=1;
       do_goto($formatter,$options);
  @@ -3551,17 +3554,27 @@
     $needle=_preg_search_escape($needle);
     
     $pages= $DBInfo->getPageLists();
  +  $opts['all'] = count($pages);
     if (empty($DBInfo->alias)) $DBInfo->initAlias();
     $alias = $DBInfo->alias->getAllPages();
   
     $pages = array_merge($pages, $alias);
     $hits=array();
  +  $exacts = array();
     foreach ($pages as $page) {
  -     if (preg_match("/".$needle."/i", $page))
  -        $hits[]=$page;
  +    if (empty($DBInfo->titleseach_noexact) and preg_match("/^".$needle."$/i", $page)) {
  +      $hits[] = $page;
  +      $exacts[] = $page;
  +      if (empty($DBInfo->titlesearch_exact_all)) {
  +        $hits = $exacts;
  +        break;
  +      }
  +    } else if (preg_match("/".$needle."/i", $page)) {
  +      $hits[]=$page;
  +    }
     }
   
  -  if (empty($hits)) {
  +  if (empty($hits) and empty($exacts)) {
       // simple title search by ignore spaces
       $needle2 = str_replace(' ', "\\s*", $needle);
       $ws = preg_split("/([\x{AC00}-\x{D7F7}])/u", $needle2, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
  @@ -3590,7 +3603,7 @@
     $opts['hits']= count($hits);
     if ($opts['hits']==1)
       $opts['value']=array_pop($hits);
  -  $opts['all']= count($pages);
  +  if (!empty($exacts)) $opts['exact'] = 1;
     if (!empty($opts['call'])) {
       $opts['out']=$out;
       return $opts;
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.23.6.2  +10 -1     moniwiki/css/kbd.js
  
  Index: kbd.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/kbd.js,v
  retrieving revision 1.23.6.1
  retrieving revision 1.23.6.2
  diff -u -r1.23.6.1 -r1.23.6.2
  --- kbd.js	22 Sep 2010 16:05:15 -0000	1.23.6.1
  +++ kbd.js	2 Oct 2010 02:55:44 -0000	1.23.6.2
  @@ -6,7 +6,7 @@
   
      distributable under GPL
   
  -   $Id: kbd.js,v 1.23.6.1 2010/09/22 16:05:15 wkpark Exp $
  +   $Id: kbd.js,v 1.23.6.2 2010/10/02 02:55:44 wkpark Exp $
   
      CHANGES
   
  @@ -275,6 +275,15 @@
   			if (no != null)
   				target = '#' + no;
   		}
  +
  +		var txtarea = document.getElementById('editor-textarea');
  +		if (txtarea) {
  +			noBubble(e);
  +			pasta = new PaSTA();
  +
  +			var ret = pasta.focusEditor(e, txtarea, no);
  +			return false;
  +		}
   		if ((i=loc.indexOf(_ap)) != -1 && loc.substr(i+1,5) == "goto=") { // deprecated
   			loc=loc.substr(i+6,loc.length-6);
   			if ((i=loc.indexOf('&')) != -1) loc=loc.substring(0,i);
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.5.2.3   +27 -20    moniwiki/local/pasta.js
  
  Index: pasta.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/pasta.js,v
  retrieving revision 1.5.2.2
  retrieving revision 1.5.2.3
  diff -u -r1.5.2.2 -r1.5.2.3
  --- pasta.js	22 Sep 2010 16:05:15 -0000	1.5.2.2
  +++ pasta.js	2 Oct 2010 02:55:44 -0000	1.5.2.3
  @@ -1,5 +1,5 @@
   /**
  - * Postioning and Scrolling in the TextArea for MoniWiki
  + * Postioning and Scrolling in the TextArea(PaSTA) for MoniWiki
    *
    * Try to get the line-no of the raw wikitext from rendered html and
    * set the position of the caret and scrollbar in the TextArea
  @@ -11,7 +11,7 @@
    * @author wkpark at kldp.org
    * @since  2010/09/16
    *
  - * $Id: pasta.js,v 1.5.2.2 2010/09/22 16:05:15 wkpark Exp $
  + * $Id: pasta.js,v 1.5.2.3 2010/10/02 02:55:44 wkpark Exp $
    */
   
   /**
  @@ -91,18 +91,12 @@
       return no;
   }
   
  -function get_selected_text() {
  -    var sel = window.getSelection ? window.getSelection():
  -        (document.getSelection ? document.getSelection():
  -        document.selection.createRange().text);
  +function PaSTA() {}
   
  -    return sel.toString();
  -}
  -
  -(function() {
  +PaSTA.prototype = {
       // from http://wiki.sheep.art.pl/Textarea%20Scrolling
       // with some fixes by wkpark at kldp.org
  -    function scrollTo(textarea, text, offset) {
  +    scrollTo: function(textarea, text, offset) {
           var style;
           try { style = window.getComputedStyle(textarea, ''); }
           catch(e) { return false; };
  @@ -133,16 +127,16 @@
           if (scroll > offset) scroll -= offset;
           textarea.parentNode.removeChild(pre); // remove
           return scroll;
  -    }
  +    },
   
  -    function edithandler(e) {
  +    edithandler: function(e) {
           e = e || window.event;
           var no = get_src_line_num(e);
           if (!no) return false;
   
           var txtarea = document.getElementById('editor-textarea');
           if (txtarea) {
  -            var ret = focusEditor(e, txtarea, no);
  +            var ret = this.focusEditor(e, txtarea, no);
               if (ret && e) {
                   if (e.stopPropagation) e.stopPropagation(); 
                   e.cancelBubble = true;
  @@ -158,9 +152,17 @@
           if (p)
               location = loc + _ap + 'action=edit#' + no;
           return true;
  -    }
  +    },
   
  -    function focusEditor(e, txtarea, lineno) {
  +    _get_selected_text: function() {
  +        var sel = window.getSelection ? window.getSelection():
  +            (document.getSelection ? document.getSelection():
  +            document.selection.createRange().text);
  +
  +        return sel.toString();
  +    },
  +
  +    focusEditor: function(e, txtarea, lineno) {
           e = e || window.event;
           if (txtarea == undefined) {
               txtarea = document.getElementById('editor-textarea');
  @@ -194,7 +196,7 @@
           endPos = txt.indexOf("\n", startPos);
   
           // get selected text
  -        var myText = get_selected_text();
  +        var myText = this._get_selected_text();
   
           if (myText != '') {
               var str = txt.substring(startPos, endPos);
  @@ -213,7 +215,7 @@
               txtarea.selectionStart = startPos;
               txtarea.selectionEnd = endPos;
   
  -            var scroll = scrollTo(txtarea, txt.substr(0, startPos), 50);
  +            var scroll = this.scrollTo(txtarea, txt.substr(0, startPos), 50);
               txtarea.scrollTop = scroll;
           } else if (document.selection) {
               // IE
  @@ -233,18 +235,23 @@
   
           return true;
       }
  +};
   
  +(function() {
       // onload
       var oldOnload = window.onload;
       window.onload = function(ev) {
           try { oldOnload(); } catch(e) {};
  -        focusEditor(ev);
  +        var pasta = new PaSTA();
  +        pasta.focusEditor(ev);
       }
   
  +    // double click handler
       var old_dblclick = document.ondblclick;
       document.ondblclick = function(ev) {
           try { old_dblclick(); } catch(e) {};
  -        edithandler(ev);
  +        var pasta = new PaSTA();
  +        pasta.edithandler(ev);
       }
   })();
   
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.24.2.2  +5 -1      moniwiki/plugin/Diff.php
  
  Index: Diff.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Diff.php,v
  retrieving revision 1.24.2.1
  retrieving revision 1.24.2.2
  diff -u -r1.24.2.1 -r1.24.2.2
  --- Diff.php	14 Sep 2010 21:05:41 -0000	1.24.2.1
  +++ Diff.php	2 Oct 2010 02:55:44 -0000	1.24.2.2
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a diff plugin for the MoniWiki
   //
  -// $Id: Diff.php,v 1.24.2.1 2010/09/14 21:05:41 wkpark Exp $
  +// $Id: Diff.php,v 1.24.2.2 2010/10/02 02:55:44 wkpark Exp $
   
   
   function code_diff($diff, $options = array()) {
  @@ -232,6 +232,10 @@
     include_once("lib/difflib.php");
     $diff=str_replace("<","&lt;",$diff);
     $lines=explode("\n",$diff);
  +
  +  // trash the last empty line;
  +  $end = end($lines);
  +  if (!isset($end[0])) array_pop($lines);
     $out="";
     #unset($lines[0]); unset($lines[1]);
   
  
  
  
  1.9.2.2   +20 -10    moniwiki/plugin/LikePages.php
  
  Index: LikePages.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/LikePages.php,v
  retrieving revision 1.9.2.1
  retrieving revision 1.9.2.2
  diff -u -r1.9.2.1 -r1.9.2.2
  --- LikePages.php	22 Sep 2010 16:05:15 -0000	1.9.2.1
  +++ LikePages.php	2 Oct 2010 02:55:44 -0000	1.9.2.2
  @@ -4,7 +4,7 @@
   // a LikePages plugin for the MoniWiki
   // vim:et:ts=2:
   //
  -// $Id: LikePages.php,v 1.9.2.1 2010/09/22 16:05:15 wkpark Exp $
  +// $Id: LikePages.php,v 1.9.2.2 2010/10/02 02:55:44 wkpark Exp $
   
   function do_LikePages($formatter,$options) {
   
  @@ -20,10 +20,10 @@
     $formatter->send_footer("",$options);
   }
   
  -function macro_LikePages($formatter="",$args="",&$opts) {
  +function macro_LikePages($formatter="", $value, &$opts) {
     global $DBInfo;
   
  -  $pname=_preg_escape($args);
  +  $pname=_preg_escape($value);
   
     $metawiki=!empty($opts['metawiki']) ? $opts['metawiki'] : '';
   
  @@ -37,6 +37,7 @@
     $e_re="[A-Z][A-Za-z0-9]+$";
   
     $count=preg_match("/(".$s_re.")/",$pname,$match);
  +  $s_len = 0;
     if ($count) {
       $start=trim($match[1]);
       $s_len=strlen($start);
  @@ -62,7 +63,7 @@
   
       // try to remove suffix
       // "위키에서 글쓰기" => start=위키에서|위키에|위키
  -    if (preg_match('/[\x{AC00}-\x{D7AF}]/u', $start)) {
  +    if (!empty($start) and preg_match('/[\x{AC00}-\x{D7AF}]/u', $start)) {
   	    $ws = preg_split('//u', $start, -1,  PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
         $nw = array();
         $nw[] = $start;
  @@ -73,7 +74,7 @@
         $start = implode('|', $nw);
       }
   
  -    if (preg_match('/[\x{AC00}-\x{D7AF}]/u', $end)) {
  +    if (!empty($end) and preg_match('/[\x{AC00}-\x{D7AF}]/u', $end)) {
   	    $ws = preg_split('//u', $end, -1,  PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
         $nw = array();
         $last = array_splice($ws, -2);
  @@ -89,13 +90,13 @@
     }
   
     if (empty($start)) {
  -    preg_match("/^(.{2,4})/u",$args,$match);
  +    preg_match("/^(.{2,4})/u",$value,$match);
       $s_len=strlen($match[1]);
       $start=trim(_preg_escape($match[1]));
     }
   
     if (empty($end)) {
  -    $end=substr($args,$s_len);
  +    $end=substr($value,$s_len);
       preg_match("/(.{2,6})$/u",$end,$match);
       $end=isset($match[1]) ? $match[1] : '';
       $e_len=strlen($end);
  @@ -140,7 +141,16 @@
       }
     }
   
  -  if ($start || $end) {
  +  if (!empty($DBInfo->use_similar_text)) {
  +    $len = strlen($value);
  +    $ii = 0;
  +    foreach ($pages as $page) {
  +      $ii++;
  +      $match = similar_text($value, $page) / min($len, strlen($page));
  +      if ($match > 0.9 && empty($starts[$page]) && empty($ends[$page]))
  +        $likes[$page] = $match;
  +    }
  +  } else if ($start || $end) {
       if ($start and $end) $similar_re="$start|$end";
       else if ($start) $similar_re=$start;
       else $similar_re=$end;
  @@ -162,7 +172,7 @@
   
       $out.="<h3>"._("These pages share a similar word...")."</h3>";
       $out.="<ol>\n";
  -    while (list($pagename,$i) = each($likes)) {
  +    foreach ($likes as $pagename => $i) {
         $pageurl=_rawurlencode($pagename);
         $pagetext=htmlspecialchars(urldecode($pagename));
         $out.= '<li>' . $formatter->link_tag($pageurl,"",$pagetext,"tabindex='$idx'")."</li>\n";
  @@ -201,7 +211,7 @@
       $out.="<h3>"._("No similar pages found")."</h3>";
     }
   
  -  $opts['msg'] = sprintf(_("Like \"%s\""),$args);
  +  $opts['msg'] = sprintf(_("Like \"%s\""),$value);
   
     while (empty($metawiki)) {
       if (empty($DBInfo->metadb)) $DBInfo->initMetaDB();
  
  
  
  1.10.2.2  +9 -7      moniwiki/plugin/bookmark.php
  
  Index: bookmark.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/bookmark.php,v
  retrieving revision 1.10.2.1
  retrieving revision 1.10.2.2
  diff -u -r1.10.2.1 -r1.10.2.2
  --- bookmark.php	22 Sep 2010 16:05:15 -0000	1.10.2.1
  +++ bookmark.php	2 Oct 2010 02:55:44 -0000	1.10.2.2
  @@ -2,9 +2,8 @@
   // Copyright 2003 2010 Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a bookmark action plugin for the MoniWiki
  -// vim:et:ts=2:
   //
  -// $Id: bookmark.php,v 1.10.2.1 2010/09/22 16:05:15 wkpark Exp $
  +// $Id: bookmark.php,v 1.10.2.2 2010/10/02 02:55:44 wkpark Exp $
   
   // internal use only
   function macro_bookmark($formatter, $value = '', &$options) {
  @@ -13,7 +12,7 @@
   
     $user = &$DBInfo->user; # get cookie
   
  -  if (!$options['time']) {
  +  if (!isset($options['time'][0])) {
        $bookmark = time();
     } else {
        $bookmark = $options['time'];
  @@ -21,7 +20,7 @@
     $ret = array();
   
     if ($user->id == "Anonymous") {
  -    if (is_numeric($bookmark)) {
  +    if (is_numeric($bookmark) and $bookmark > 0) {
         setcookie("MONI_BOOKMARK",$bookmark,time()+60*60*24*30,get_scriptname());
         $ret['title'] = _('Bookmark Changed');
       } else {
  @@ -32,15 +31,17 @@
       $_COOKIE['MONI_BOOKMARK']=$bookmark;
       $user->bookmark=$bookmark;
     } else {
  -    if (is_numeric($bookmark)) {
  +    if (is_numeric($bookmark) and $bookmark > 0) {
         $ret['title'] = _('Bookmark Changed');
         $user->info['bookmark']=$bookmark;
  +      $user->bookmark=$bookmark;
       } else {
         $ret['title']=_("Bookmark Deleted !");
  -      $user->info['bookmark']=0;
  +      $user->info['bookmark']= null;
       }
       $DBInfo->udb->saveUser($user);
  -    $user->bookmark=$bookmark;
  +    if (empty($user->info['bookmark']))
  +      unset($user->bookmark);
     }
   
     if (isset($options['ret']))
  @@ -63,4 +64,5 @@
     $formatter->send_footer("",$options);
   }
   
  +// vim:et:sts=2:sw=2:
   ?>
  
  
  
  1.2.12.1  +13 -6     moniwiki/plugin/whois.php
  
  Index: whois.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/whois.php,v
  retrieving revision 1.2
  retrieving revision 1.2.12.1
  diff -u -r1.2 -r1.2.12.1
  --- whois.php	14 Aug 2003 17:51:22 -0000	1.2
  +++ whois.php	2 Oct 2010 02:55:44 -0000	1.2.12.1
  @@ -2,11 +2,11 @@
   // Copyright 2003 by Won-Kyu Park <wkpark at kldp.org>
   // All rights reserved. Distributable under GPL see COPYING
   // a sample whois plugin for the MoniWiki
  -// $Id: whois.php,v 1.2 2003/08/14 17:51:22 wkpark Exp $
  +// $Id: whois.php,v 1.2.12.1 2010/10/02 02:55:44 wkpark Exp $
   
   function do_whois($formatter,$options) {
     $query=$options['q'];
  -  $whois_servers=array("whois.nic.or.kr","whois.internic.net");
  +  $whois_servers=array("whois.nic.or.kr"=>'euc-kr',"whois.internic.net"=>'iso-8859-1');
   
   #$whois_servers_full = array(
   #"kr" => "whois.nic.or.kr",
  @@ -113,7 +113,7 @@
     $arg= rtrim($query)."\n";
   
     $result="";
  -  foreach ($whois_servers as $key=>$server) {
  +  foreach ($whois_servers as $server=>$charset) {
       $fp= fsockopen($server,43);
       if(!$fp) {
         $error=sprintf(_("Could not connect to %s server"),$key);
  @@ -134,16 +134,23 @@
       }
       if (!$notfound) break;
     }
  -  $out ="=== ".sprintf(_("Whois search result for %s"),$query)." ===\n";
  -  $out.="{{{\n$result\n}}}";
  +  if (!empty($result) and function_exists('iconv')) {
  +    if (strtolower($DBInfo->charset) != $charset) {
  +      $tmp = iconv('EUC-KR', $DBInfo->charset, $result);
  +      if (!empty($tmp)) $result = $tmp;
  +    }
  +  }
  +  $out ="=== ".sprintf(_("Whois search result for %s"), $query)." ===\n";
  +  $out.="{{{\n$server\n$result\n}}}";
     $out.= "hostname : [http://ws.arin.net/cgi-bin/whois.pl?queryinput=$query ".gethostbyaddr($query)."]";
  +  $formatter->get_javascripts();
     $formatter->send_page($out);
     return;
   }
   
   function macro_whois($formatter,$value='') {
     return <<<EOF
  -<form method='post'>
  +<form method='get'>
   <input type="hidden" name="action" value="whois" />
   <input type="text" name="q" size="15" /><input type="submit" value="Query" />
   </form>
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.12.2.1  +51 -29    moniwiki/plugin/security/acl.php
  
  Index: acl.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/security/acl.php,v
  retrieving revision 1.12
  retrieving revision 1.12.2.1
  diff -u -r1.12 -r1.12.2.1
  --- acl.php	20 Aug 2010 06:36:22 -0000	1.12
  +++ acl.php	2 Oct 2010 02:55:45 -0000	1.12.2.1
  @@ -1,6 +1,6 @@
   <?php
   # a ACL security plugin for the MoniWiki (experimental)
  -# $Id: acl.php,v 1.12 2010/08/20 06:36:22 wkpark Exp $
  +# $Id: acl.php,v 1.12.2.1 2010/10/02 02:55:45 wkpark Exp $
   #
   # Please see http://moniwiki.kldp.net/wiki/wiki.php/MoniWikiACL
   #
  @@ -36,11 +36,15 @@
       function Security_ACL($DB="") {
           $this->DB=$DB;
           # load ACL
  -        define(_CURRENT,dirname(__FILE__));
  -        if ($DB->acl_type and file_exists(_CURRENT.'/../../config/acl.'.$DB->acl_type.'.php'))
  -            $acl_file=_CURRENT.'/../../config/acl.'.$DB->acl_type.'.php';
  +        if (empty($DB->config_dir))
  +            $config_dir = './config';
           else
  -            $acl_file=_CURRENT.'/../../config/acl.default.php';
  +            $config_dir = dirname(__FILE__).'/../../config';
  +
  +        if (!empty($DB->acl_type) and file_exists($config_dir.'/acl.'.$DB->acl_type.'.php'))
  +            $acl_file=$config_dir.'/acl.'.$DB->acl_type.'.php';
  +        else
  +            $acl_file=$config_dir.'/acl.default.php';
   
           if(is_readable($acl_file)) {
               $this->AUTH_ACL= file($acl_file);
  @@ -48,8 +52,8 @@
               $this->AUTH_ACL= array('*   @ALL    allow   *');
           }
   
  -        $wikimasters=$DB->wikimasters ? $DB->wikimasters:array();
  -        $owners=$DB->owners ? $DB->owners:array();
  +        $wikimasters=isset($DB->wikimasters) ? $DB->wikimasters:array();
  +        $owners=isset($DB->owners) ? $DB->owners:array();
           $this->allowed_users=array_merge($wikimasters,$owners);
       }
   
  @@ -144,24 +148,42 @@
                   #if (in_array($rule[0],array('@','#'))) continue;
                   $rule= preg_replace('/#.*$/','',$rule); # delete comments
                   $rule= rtrim($rule);
  -                $acl= preg_split('/\s+/',$rule,4);
  -                if (!$acl[3]) $acl[3]='*';
  -                if ($acl[0] != '*') {
  -                    $prule=$acl[0];
  +
  +                $tmp = preg_match('/^(.*)\s+('.$gregex.')\s+(allow|protect|deny)\s*(.*)?$/i', $rule, $acl);
  +                if (!$tmp) continue;
  +
  +                if (!$acl[4]) $acl[4]='*';
  +                if ($acl[1] != '*' and $acl[1] != $pg) {
  +                    $prules = get_csv($acl[1]);
  +                    // a regex or a simplified pattern like as
                       // HelpOn* -> HelpOn.*
                       // MoniWiki/* -> MoniWiki\/.*
  -                    $prule=
  -                       preg_replace(array('/(?!<\.)\*/',"/(?<!\\\\)\//"),array('.*','\/'),$prule);
  -                    if (false === @preg_match("/$prule/",'')) continue;
  -                    if (!preg_match("/$prule/",$pg)) continue;
  +
  +                    $found = false;
  +                    foreach ($prules as $prule) {
  +                        if ($prule == $pg) {
  +                            $found = true;
  +                            break;
  +                        } else {
  +                            // is it a regex or a simplified pattern
  +                            $prule=
  +                                preg_replace(array('/(?!<\.)\*/',"/(?<!\\\\)\//"),array('.*','\/'),$prule);
  +
  +                            if (@preg_match("/$prule/", $pg)) {
  +                                $found = true;
  +                                break;
  +                            }
  +                        }
  +                    }
  +                    if (!$found) continue;
                   }
   
  -                if ($acl[2] == 'allow') {
  -                    $tmp=explode(',',$acl[3]);
  +                if ($acl[3] == 'allow') {
  +                    $tmp=explode(',',$acl[4]);
                       $tmp=array_flip($tmp);
  -                    if ($acl[1] == $user) $pri=4;
  -                    else if ($acl[1] == '@ALL') $pri=1;
  -                    else $pri= $gpriority[$acl[1]] ? $gpriority[$acl[1]]:2; # get group prio
  +                    if ($acl[2] == $user) $pri=4;
  +                    else if ($acl[2] == '@ALL') $pri=1;
  +                    else $pri= !empty($gpriority[$acl[2]]) ? $gpriority[$acl[2]]:2; # get group prio
                       $keys=array_keys($tmp);
                       foreach ($keys as $t) {
                           if (isset($allowed[$t]) and $allowed[$t] > $pri)
  @@ -172,12 +194,12 @@
                               unset($denied[$t]);
                       }
                       $allowed=array_merge($allowed,$tmp);
  -                } else if ($acl[2] == 'deny') {
  -                    $tmp=explode(',',$acl[3]);
  +                } else if ($acl[3] == 'deny') {
  +                    $tmp=explode(',',$acl[4]);
                       $tmp=array_flip($tmp);
  -                    if ($acl[1] == $user) $pri=4;
  -                    else if ($acl[1] == '@ALL') $pri=1;
  -                    else $pri= $gpriority[$acl[1]] ? $gpriority[$acl[1]]:2; # set group prio
  +                    if ($acl[2] == $user) $pri=4;
  +                    else if ($acl[2] == '@ALL') $pri=1;
  +                    else $pri= $gpriority[$acl[2]] ? $gpriority[$acl[2]]:2; # set group prio
                       $keys=array_keys($tmp);
                       foreach ($keys as $t) {
                           if (isset($denied[$t]) and $denied[$t] > $pri)
  @@ -188,8 +210,8 @@
                               unset($allowed[$t]);
                       }
                       $denied=array_merge($denied,$tmp);
  -                } else if ($acl[2] == 'protect') {
  -                    $tmp=explode(',',$acl[3]);
  +                } else if ($acl[3] == 'protect') {
  +                    $tmp=explode(',',$acl[4]);
                       $tmp=array_flip($tmp);
                       $protected=array_merge($protected,$tmp);
                   }
  @@ -197,7 +219,7 @@
           }
           $protected=array_keys($protected);
   
  -        if ($this->DB->acl_debug) {
  +        if (!empty($this->DB->acl_debug)) {
               ob_start();
               print "<h4>"._("ACL groups")."</h4>\n";
               print implode(',',$groups);
  @@ -229,7 +251,7 @@
           $allowed=&$this->_allowed;
           $denied=&$this->_denied;
   
  -        if ($options['explicit']) {
  +        if (!empty($options['explicit'])) {
               if (isset($allowed[$action])) return 1;
               else if (isset($denied[$action])) return 0;
               return false;
  
  
  


1286014573;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv8714/plugin\n\nModified Files:\n	RecentChanges.php \nLog Message:\n[#315677] [#315749] use javascript to make RecentChanges macro cachable static contents.\n\n
wkpark      2010/10/02 19:16:15

  Modified:    plugin   RecentChanges.php
  Log:
  [#315677] [#315749] use javascript to make RecentChanges macro cachable static contents.
  
  Revision  Changes    Path
  1.58      +292 -60   moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.57
  retrieving revision 1.58
  diff -u -r1.57 -r1.58
  --- RecentChanges.php	22 Sep 2010 15:17:45 -0000	1.57
  +++ RecentChanges.php	2 Oct 2010 10:16:13 -0000	1.58
  @@ -7,10 +7,10 @@
   // Name: RecentChanges
   // Description: Show RecentChanges of the Wiki
   // URL: MoniWiki:RecentChangesPlugin
  -// Version: $Revision: 1.57 $
  +// Version: $Revision: 1.58 $
   // Depend: 1.1.3
   // License: GPL
  -// $Id: RecentChanges.php,v 1.57 2010/09/22 15:17:45 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.58 2010/10/02 10:16:13 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     global $DBInfo;
  @@ -45,6 +45,89 @@
     return;
   }
   
  +/**
  + * get updated info
  + *
  + */
  +
  +function ajax_RecentChanges($formatter, $options = array()) {
  +  global $DBInfo;
  +
  +  if (empty($options['value'])) {
  +    echo '[]';
  +    return;
  +  }
  +  $checknew = 0;
  +  $checkchange = 0;
  +  if (!empty($options['new'])) $checknew = 1;
  +  if (!empty($options['change'])) $checkchange = 1;
  +
  +  require_once('lib/JSON.php');
  +  $json = new Services_JSON();
  +  $rclist = $json->decode($options['value']);
  +  if (!is_array($rclist)) {
  +    echo '[]';
  +    return;
  +  }
  +
  +  // get bookmark parameter and call bookmark macro
  +  if (!empty($options['time'])) {
  +    if (is_numeric($options['time']) and $options['time'] > 0) {
  +      $formatter->macro_repl('Bookmark', '', $options);
  +      //$bookmark = $options['time'];
  +    }
  +  }
  +
  +  $u = $DBInfo->user; # retrive user info
  +
  +  if ($u->id != 'Anonymous') {
  +    $bookmark = !empty($u->info['bookmark']) ? $u->info['bookmark'] : '';
  +  } else {
  +    $bookmark = $u->bookmark;
  +  }
  +  $tz_offset=$formatter->tz_offset;
  +
  +  $info = array();
  +  foreach ($rclist as $page_name) {
  +    $p= new WikiPage($page_name);
  +    if (!$p->exists()) continue; // XXX
  +
  +    $ed_time = $p->mtime();
  +    if ($ed_time <= $bookmark) break;
  +
  +    $info[$page_name]['state'] = 'updated';
  +
  +    $add = 0;
  +    $del = 0;
  +
  +    if ($checknew) {
  +      $v= $p->get_rev($bookmark);
  +      if (empty($v)) {
  +        $info[$page_name]['state'] = 'new';
  +        $add+= $p->lines();
  +      }
  +    }
  +
  +    if ($checkchange) {
  +      $infos = $p->get_info('>'.$bookmark);
  +      foreach ($infos as $inf) {
  +        $tmp = explode(' ', trim($inf[1]));
  +        if (isset($tmp[1])) {
  +          $add+= $tmp[0];
  +          $del+= $tmp[1];
  +        }
  +      }
  +
  +      $info[$page_name]['add'] = $add;
  +      $info[$page_name]['del'] = $del;
  +    }
  +  }
  +  $info['__-_-bookmark-_-__'] = $bookmark;
  +
  +  echo $json->encode($info);
  +  return;
  +}
  +
   function _timesago($timestamp, $date_fmt='Y-m-d', $tz_offset = 0) {
   	// FIXME use $sys_datafmt ?
   	$time_current = time();
  @@ -100,8 +183,11 @@
       $date_fmt=$args[0];
   
     $strimwidth = isset($DBInfo->rc_strimwidth) ? $DBInfo->rc_strimwidth : 20;
  +  // use javascript
  +  $use_js = 0;
     // show last edit entry only
     $last_entry_only = 1;
  +  $last_entry_check = 60*60*24;
     // show last editor only
     $last_editor_only = 1;
     // show editrange like as MoinMoin
  @@ -155,10 +241,19 @@
         else if ($arg=="allusers") $last_editor_only = 0;
         else if ($arg=="allentries") $last_entry_only = 0;
         else if ($arg=="avatar") $use_avatar = 1;
  +      else if ($arg=="js") $use_js = 1;
         else if (in_array($arg, array('simple', 'moztab', 'board', 'table'))) $rctype = $arg;
       }
     }
   
  +  // set as dynamic macro or not.
  +  if (empty($use_js))
  +    $formatter->_dynamic_macros['RecentChanges'] = 1;
  +  if ($formatter->_macrocache and empty($options['call']) and empty($use_js)) {
  +    return $formatter->macro_cache_tag('RecentChanges', $value);
  +  }
  +
  +  // reset some conflict params
     if (empty($DBInfo->use_counter))
       $use_hits = 0;
     if (empty($DBInfo->show_hosts))
  @@ -230,13 +325,10 @@
   
     if ($u->id != 'Anonymous') {
       $bookmark= !empty($u->info['bookmark']) ? $u->info['bookmark'] : '';
  -    $tz_offset= !empty($u->info['tz_offset']) ? $u->info['tz_offset'] : '';
     } else {
       $bookmark= $u->bookmark;
     }
  -  if (empty($tz_offset)) {
  -    $tz_offset=date("Z");
  -  }
  +  $tz_offset=$formatter->tz_offset;
   
     if (!$bookmark or !empty($nobookmark)) {
       if (!empty($checknew) and preg_match('/^\d+(\s*\*\s*\d+)*$/',$checknew))
  @@ -293,26 +385,35 @@
       //  $ratchet_day = $day;
       //}
   
  -    if (!empty($editcount[$day][$page_key])) {
  -      $editors[$day][$page_key][] = $user;
  -      $editcount[$day][$page_key]++;
  +    if ($last_entry_only and !empty($last_entry_check)) {
  +      if (!empty($lastmod[$page_key]) and $lastmod[$page_key] < $ed_time + $last_entry_check) {
  +        $edit_day = gmdate('Ymd', $lastmod[$page_key] + $tz_offset);
  +        $editors[$page_key][$edit_day][] = $user;
  +        $editcount[$page_key][$edit_day]++;
  +        continue;
  +      }
  +    } else if (!empty($editcount[$page_key][$day])) {
  +      $editors[$page_key][$day][] = $user;
  +      $editcount[$page_key][$day]++;
         continue;
       }
  -    if (empty($editcount[$day])) {
  -      $editcount[$day] = array();
  -      $editors[$day] = array();
  +    if (empty($editcount[$page_key])) {
  +      $editcount[$page_key] = array();
  +      $editors[$page_key] = array();
       }
   
  -    $editcount[$day][$page_key]= 1;
  +    $editcount[$page_key][$day]= 1;
   
  -    $editors[$day][$page_key] = array();
  -    $editors[$day][$page_key][] = $user;
  +    $editors[$page_key][$day] = array();
  +    $editors[$page_key][$day][] = $user;
  +    $lastmod[$page_key] = $ed_time;
     }
   
     $out="";
     $ratchet_day= FALSE;
     $br="";
     $ii = 0;
  +  $rc_list = array();
     foreach ($lines as $line) {
       $parts= explode("\t", $line);
       $page_key=$parts[0];
  @@ -357,6 +458,9 @@
         }
       }
   
  +    $jsattr = '';
  +    if (!empty($use_js))
  +      $jsattr = ' onclick="update_bookmark('.$ed_time.');return false;"';
       $bmark = '';
       if ($day != $ratchet_day) {
         $ratchet_day = $day;
  @@ -371,70 +475,77 @@
           if (empty($nobookmark))
             $out.="<span class='rc-bookmark' style='font-size:small'>[".
               $formatter->link_tag($formatter->page->urlname, $bookmark_action ."&amp;time=$ed_time".$daysago,
  -            _("set bookmark"))."]</span>\n";
  +            _("set bookmark"), $jsattr)."]</span>\n";
           $br="<br />";
           $out.='</span>'.$perma.'<br />'.$bra;
           $cat0=$cat;
         } else {
  -        $bmark=$formatter->link_to($bookmark_action ."&amp;time=$ed_time".$daysago,_("Bookmark"), 'class="button-small"');
  +        $bmark=$formatter->link_to($bookmark_action ."&amp;time=$ed_time".$daysago,_("Bookmark"),
  +          $jsattr.' class="button-small"');
         }
       }
       if (empty($use_day) and empty($nobookmark)) {
  -      $date=$formatter->link_to($bookmark_action ."&amp;time=$ed_time".$daysago,$date);
  +      $date=$formatter->link_to($bookmark_action ."&amp;time=$ed_time".$daysago,$date, $jsattr);
       }
   
       $pageurl=_rawurlencode($page_name);
   
  -    #print $ed_time."/".$bookmark."//";
  +    // print $ed_time."/".$bookmark."//";
       $diff = '';
       $updated = '';
  -    if (!$DBInfo->hasPage($page_name))
  +    if (!$DBInfo->hasPage($page_name)) {
         $icon= $formatter->link_tag($pageurl,"?action=info",$formatter->icon['del']);
  -    else if ($ed_time > $bookmark) {
  -      $icon= $formatter->link_tag($pageurl,"?action=diff&amp;date=$bookmark",$formatter->icon['diff']);
  -      $updated= ' '.$formatter->link_tag($pageurl,"?action=diff&amp;date=$bookmark",$formatter->icon['updated']);
  -
  -      if ($checknew or $checkchange)
  -        $p= new WikiPage($page_name);
  -
  -      $add = 0;
  -      $del = 0;
  -      if ($checknew) {
  -        $v= $p->get_rev($bookmark);
  -        if (empty($v)) {
  -          $icon=
  -            $formatter->link_tag($pageurl,"?action=info",$formatter->icon['show']);
  -          $updated = ' '.$formatter->link_tag($pageurl,"?action=info",$formatter->icon['new']);
  -          $add+= $p->lines();
  -        }
  -      }
  -      if ($checkchange) {
  -        $infos = $p->get_info('>'.$bookmark);
  -        foreach ($infos as $inf) {
  -          $tmp = explode(' ', trim($inf[1]));
  -          if (isset($tmp[1])) {
  -            $add+= $tmp[0];
  -            $del+= $tmp[1];
  +      if (!empty($use_js))
  +        $rc_list[] = $page_name;
  +    } else {
  +      $icon= $formatter->link_tag($pageurl,"?action=diff",$formatter->icon['diff'], " id='icon-$ii'");
  +
  +      if (empty($use_js) and $ed_time > $bookmark) {
  +        $icon= $formatter->link_tag($pageurl,"?action=diff&amp;date=$bookmark",$formatter->icon['diff']);
  +        $updated= ' '.$formatter->link_tag($pageurl,"?action=diff&amp;date=$bookmark",$formatter->icon['updated']);
  +
  +        if ($checknew or $checkchange)
  +          $p= new WikiPage($page_name);
  +
  +        $add = 0;
  +        $del = 0;
  +        if ($checknew) {
  +          $v= $p->get_rev($bookmark);
  +          if (empty($v)) {
  +            $icon=
  +              $formatter->link_tag($pageurl,"?action=info",$formatter->icon['show']);
  +            $updated = ' '.$formatter->link_tag($pageurl,"?action=info",$formatter->icon['new']);
  +            $add+= $p->lines();
             }
           }
  +        if ($checkchange) {
  +          $infos = $p->get_info('>'.$bookmark);
  +          foreach ($infos as $inf) {
  +            $tmp = explode(' ', trim($inf[1]));
  +            if (isset($tmp[1])) {
  +              $add+= $tmp[0];
  +              $del+= $tmp[1];
  +            }
  +          }
   
  -        if (!empty($add))
  -          $diff.= '<span class="diff-added">+'.$add.'</span>';
  -        if (!empty($del))
  -          $diff.= '<span class="diff-removed">'.$del.'</span>';
  +          if (!empty($add))
  +            $diff.= '<span class="diff-added">+'.$add.'</span>';
  +          if (!empty($del))
  +            $diff.= '<span class="diff-removed">'.$del.'</span>';
  +        }
  +      } else if (!empty($use_js)) {
  +        $rc_list[] = $page_name;
         }
  -
  -    } else
  -      $icon= $formatter->link_tag($pageurl,"?action=diff",$formatter->icon['diff']);
  +    }
   
       #$title= preg_replace("/((?<=[a-z0-9])[A-Z][a-z0-9])/"," \\1",$page_name);
       $title0= get_title($title).$group;
       $title0=htmlspecialchars($title0);
  -    $attr = '';
  +    $attr = " id='title-$ii'";
       if (!empty($strimwidth) and strlen(get_title($title)) > $strimwidth and function_exists('mb_strimwidth')) {
         $title0=mb_strimwidth($title0,0, $strimwidth,'...', $DBInfo->charset);
  -      $attr = ' title="'.$title.'"';
       }
  +    $attr.= ' title="'.$title.'"';
       $title= $formatter->link_tag($pageurl,"",$title0,$target.$attr);
   
       if (!empty($use_hits)) {
  @@ -446,14 +557,14 @@
   
         if ($last_editor_only) {
           // show last editor only
  -        $editor = array_pop($editors[$day][$page_key]);
  +        $editor = array_pop($editors[$page_key][$day]);
         } else {
           // all show all authors
           // count edit number
           // make range list
           if ($use_editrange) { // MoinMoin like edit range
             $editor_list = array();
  -          foreach ($editors[$day][$page_key] as $idx=>$name) {
  +          foreach ($editors[$page_key][$day] as $idx=>$name) {
               if (empty($editor_list[$name])) $editor_list[$name] = array();
               $editor_list[$name][] = $idx + 1;
             }
  @@ -482,7 +593,7 @@
               }
             }
           } else {
  -          $editor_counts = array_count_values($editors[$day][$page_key]);
  +          $editor_counts = array_count_values($editors[$page_key][$day]);
           }
           $editor = array_keys($editor_counts);
         }
  @@ -547,8 +658,10 @@
         $user = '&nbsp;';
       }
       $count=""; $extra="";
  -    if ($editcount[$day][$page_key] > 1)
  -      $count=sprintf(_("%s changes"), " <span class='num'>".$editcount[$day][$page_key]."</span>");
  +    if ($editcount[$page_key][$day] > 1)
  +      $count = '<span id="change-'.$ii.'">'.sprintf(_("%s changes"), " <span class='num'>".$editcount[$page_key][$day]."</span>").'</span>';
  +    else
  +      $count = '<span id="change-'.$ii.'"></span>';
       if (!empty($comment) && !empty($log))
         $extra="&nbsp; &nbsp; &nbsp; <small name='word-break'>$log</small>";
   
  @@ -564,7 +677,126 @@
       $logs[$page_key][$day] = 1;
       ++$ii;
     }
  -  return $btnlist.'<div class="recentChanges">'.$rctitle.$template_bra.$out.$template_cat.$cat0.'</div>';
  +
  +  $js = '';
  +  if (!empty($rc_list)) {
  +    require_once('lib/JSON.php');
  +    $json = new Services_JSON();
  +
  +    $icon_new = $formatter->icon['new'];
  +    $icon_updated = $formatter->icon['updated'];
  +    $icon_show = $formatter->icon['show'];
  +    $icon_diff = $formatter->icon['diff'];
  +
  +    $js = "<script type='text/javascript'>\nvar rclist =";
  +    $ext = array();
  +    if (!empty($checknew)) $ext[] = 'new=1';
  +    if (!empty($checkchange)) $ext[] = 'change=1';
  +    $arg = implode('&', $ext);
  +    $url = $formatter->link_url('RecentChanges', "?action=recentchanges/ajax" . ($arg ? '&'.$arg : ''). "&value=");
  +    $js.= $json->encode($rc_list).";\n";
  +    $js.= <<<EOF
  +function update_bookmark(time) {
  +    var url = "$url";
  +    if (rclist.length) {
  +      var timetag;
  +      if (typeof time == 'undefined') timetag = '';
  +      else timetag = 'time=' + time + '&';
  +
  +      // url = url.replace(/value=/, timetag + 'value=' + encodeURIComponent(JSON.stringify(rclist)));
  +      url = url.replace(/value=/, timetag + 'value=' + encodeURIComponent(json_encode(rclist)));
  +      var txt = HTTPGet(url);
  +      var ret;
  +      if (txt == null) return;
  +
  +      var icon_new = "$icon_new";
  +      var icon_updated = "$icon_updated";
  +      var icon_show = "$icon_show";
  +      var icon_diff = "$icon_diff";
  +
  +      ret = window["eval"]("(" + txt + ")");
  +      var bookmark = ret['__-_-bookmark-_-__'];
  +      var jj = 0;
  +      for (var ii = 0; ii < rclist.length; ii++) {
  +        var item = document.getElementById('title-' + ii);
  +        var title = item.getAttribute('title');
  +        if (rclist[ii] != title) {
  +          var re = new RegExp("^.*" + url_prefix + '/');
  +          title = decodeURIComponent(item.href.replace(re, ''));
  +        }
  +        if (rclist[ii] == title && ret[title]) {
  +          var icon = document.getElementById('icon-' + ii);
  +          var state = document.createElement('SPAN');
  +          if (ret[title]['state'] == 'new') {
  +            state.innerHTML = icon_new;
  +            icon.href = icon.href.replace(/action=(diff|info)(&bookmark=\d+)?/, 'action=info');
  +            icon.innerHTML = icon_show;
  +          } else {
  +            state.innerHTML = icon_updated;
  +            icon.href = icon.href.replace(/action=(diff|info)(&bookmark=\d+)?/, 'action=diff&bookmark=' + bookmark);
  +            icon.innerHTML = icon_diff;
  +          }
  +
  +          // remove previous icon
  +          if (item.firstChild.nextSibling)
  +            item.removeChild(item.firstChild.nextSibling);
  +          item.appendChild(state); // add updated / new icon
  +
  +          var change = document.getElementById('change-' + ii);
  +          if (!change) continue;
  +
  +          // remove previous diff info
  +          if (change.lastChild && change.lastChild.tagName == 'SPAN')
  +            change.removeChild(change.lastChild);
  +
  +          // add diff info
  +          var diff = document.createElement('SPAN');
  +          if (ret[title]['add']) {
  +            var add = document.createElement('SPAN');
  +            add.setAttribute('class', 'diff-added');
  +            var txt = document.createTextNode('+' + ret[title]['add']);
  +            add.appendChild(txt);
  +            diff.appendChild(add);
  +          }
  +          if (ret[title]['del']) {
  +            var del = document.createElement('SPAN');
  +            del.setAttribute('class', 'diff-removed');
  +            var txt = document.createTextNode(ret[title]['del']);
  +            del.appendChild(txt);
  +            diff.appendChild(del);
  +          }
  +          change.appendChild(diff);  
  +        } else {
  +          if (item.firstChild.nextSibling)
  +            item.removeChild(item.firstChild.nextSibling);
  +
  +          var change = document.getElementById('change-' + ii);
  +          if (!change) continue;
  +
  +          // remove diff info
  +          if (change.lastChild && change.lastChild.tagName == 'SPAN')
  +            change.removeChild(change.lastChild);
  +
  +          // recover diff icon and link
  +          var icon = document.getElementById('icon-' + ii);
  +          if (icon && icon.firstChild) {
  +            if (icon.firstChild.getAttribute('alt') != 'D') {
  +              icon.innerHTML = icon_diff;
  +            }
  +            // recover link
  +            icon.href = icon.href.replace(/action=(diff|info)(&bookmark=\d+)?/, 'action=diff');
  +          }
  +        }
  +      }
  +    }
  +}
  +update_bookmark();
  +</script>
  +EOF;
  +
  +  }
  +
  +  return $btnlist.'<div class="recentChanges">'.$rctitle.$template_bra.$out.$template_cat.$cat0.'</div>'.$js;
   }
   // vim:et:sts=2:sw=2:
   ?>
  
  
  


1286015644;wkpark;Update of /cvsroot/moniwiki/moniwiki/local\nIn directory kill.kldp.net:/tmp/cvs-serv13407/local\n\nModified Files:\n	ajax.js \nLog Message:\n[#315749] add a mission json_encode() subroutine\n\n
wkpark      2010/10/02 19:34:05

  Modified:    local    ajax.js
  Log:
  [#315749] add a mission json_encode() subroutine
  
  Revision  Changes    Path
  1.5       +21 -1     moniwiki/local/ajax.js
  
  Index: ajax.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/ajax.js,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ajax.js	17 Dec 2008 12:33:41 -0000	1.4
  +++ ajax.js	2 Oct 2010 10:34:04 -0000	1.5
  @@ -200,4 +200,24 @@
     }
   }
   
  -// vim:et:sts=2:
  +function json_encode(input) {
  +  if (!input) return 'null';
  +  switch (input.constructor) {
  +    case String: return '"' + input + '"';
  +    case Number: return input.toString();
  +    case Array:
  +      var buf = [];
  +      for (i in input)
  +        buf.push(json_encode(input[i]));
  +          return '[' + buf.join(', ') + ']';
  +    case Object:
  +      var buf = [];
  +      for (k in input)
  +        buf.push(k + ' : ' + json_encode(input[k]));
  +          return '{ ' + buf.join(', ') + '} ';
  +    default:
  +      return 'null';
  +  }
  +}
  +
  +// vim:et:sts=2:sw=2:
  
  
  


1286317734;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv11705\n\nModified Files:\n	wiki.php wikilib.php \nLog Message:\n[#315631] auto set the $formatter->_dynamic_macros variable.\n * refactoring get_instruction() method, remove hack and cache PIs.\n * use session_cache_limiter(FALSE) to disable automatic cache-control header\n * use session_set_cookie_params() to set the path of the session cookies.\n * support $use_conditional_get option. experimental!!\n\n
1286317734;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv11705/plugin\n\nModified Files:\n	Diff.php Keywords.php Rating.php RecentChanges.php \n	WantedPages.php format.php print.php \nLog Message:\n[#315631] auto set the $formatter->_dynamic_macros variable.\n * refactoring get_instruction() method, remove hack and cache PIs.\n * use session_cache_limiter(FALSE) to disable automatic cache-control header\n * use session_set_cookie_params() to set the path of the session cookies.\n * support $use_conditional_get option. experimental!!\n\n
wkpark      2010/10/06 07:28:55

  Modified:    .        wiki.php wikilib.php
               plugin   Diff.php Keywords.php Rating.php RecentChanges.php
                        WantedPages.php format.php print.php
  Log:
  [#315631] auto set the $formatter->_dynamic_macros variable.
   * refactoring get_instruction() method, remove hack and cache PIs.
   * use session_cache_limiter(FALSE) to disable automatic cache-control header
   * use session_set_cookie_params() to set the path of the session cookies.
   * support $use_conditional_get option. experimental!!
  
  Revision  Changes    Path
  1.635     +262 -158  moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.634
  retrieving revision 1.635
  diff -u -r1.634 -r1.635
  --- wiki.php	2 Oct 2010 02:07:19 -0000	1.634
  +++ wiki.php	5 Oct 2010 22:28:54 -0000	1.635
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.634 2010/10/02 02:07:19 wkpark Exp $
  +// $Id: wiki.php,v 1.635 2010/10/05 22:28:54 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.634 $',1,-1);
  +$_revision = substr('$Revision: 1.635 $',1,-1);
   $_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -1159,6 +1159,7 @@
   class WikiPage {
     var $fp;
     var $filename;
  +  var $pi = null;
     var $rev;
     var $body;
   
  @@ -1197,6 +1198,14 @@
       return @filemtime($this->filename);
     }
   
  +  function etag() {
  +    global $DBInfo;
  +    $seed = '';
  +    if (!empty($DBInfo->etag_seed))
  +      $seed = $DBInfo->etag_seed;
  +    return md5($this->mtime().$DBInfo->mtime().$seed);
  +  }
  +
     function size() {
       if ($this->fsize) return $this->fsize;
       $this->fsize=@filesize($this->filename);
  @@ -1320,6 +1329,147 @@
       }
       return $infos;
     }
  +
  +  function get_redirect() {
  +    $body = $this->get_raw_body();
  +    if ($body[0] == '#' and ($p = strpos($body, "\n")) !== false) {
  +      $line = substr($body, 0, $p);
  +      if (preg_match('/#redirect\s/i', $line)) {
  +        list($tag, $val) = explode(' ', $line, 2);
  +        if (isset($val[0])) return $val;
  +      }
  +    }
  +  }
  +
  +  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','#alias', '#linenum', '#nolinenum',
  +      '#singlebracket','#nosinglebracket','#rating','#norating','#nodtd');
  +    $pi=array();
  +
  +    $format='';
  +
  +    // get page format from $pagetype
  +    if ( empty($this->pi['#format']) and !empty($Config['pagetype'])) {
  +      preg_match('%(:|/)%',$this->name,$sep);
  +      $key=strtok($this->name,':/');
  +      if (isset($Config['pagetype'][$key]) and $f=$Config['pagetype'][$key]) {
  +        $p=preg_split('%(:|/)%',$f);
  +        $p2=strlen($p[0].$p[1])+1;
  +        $p[1]=$p[1] ? $f{strlen($p[0])}.$p[1]:'';
  +        $p[2]=$p[2] ? $f{$p2}.$p[2]:'';
  +        $format=$p[0];
  +        if ($sep[1]) { # have : or /
  +          $format = ($sep[1]==$p[1]{0}) ? substr($p[1],1):
  +                    (($sep[1]==$p[2]{0}) ? substr($p[2],1):'plain');
  +        }
  +      } else if (isset($Config['pagetype']['*']))
  +        $format=$Config['pagetype']['*']; // default page type
  +    } else {
  +      if (empty($body) and !empty($this->pi['#format']))
  +        $format=$this->pi['#format'];
  +    }
  +
  +    $update_pi = false;
  +    if (empty($body)) {
  +      if (!$this->exists()) return array();
  +      if (isset($this->pi)) return $this->pi;
  +
  +      $pi_cache = new Cache_text('PI');
  +      if ($this->mtime() < $pi_cache->mtime($this->name)) {
  +        $pi = $pi_cache->fetch($this->name);
  +
  +        if (empty($pi['#format']) and !empty($format)) {
  +          $pi['#format'] = $format; // override default
  +        } else if (!isset($pi['#format'])) {
  +          $pi['#format'] = $Config['default_markup'];
  +        }
  +
  +        return $pi;
  +      }
  +
  +      $body=$this->get_raw_body();
  +      $update_pi = true;
  +    }
  +
  +    if (!empty($Config['use_metadata'])) {
  +      // FIXME experimental
  +      include_once('lib/metadata.php');
  +      list($this->metas,$nbody)=_get_metadata($body);
  +      if ($nbody!=null) $body=$nbody;
  +    }
  +
  +    if (!$format and $body[0] == '<') {
  +      list($line, $dummy)= explode("\n", $body,2);
  +      if (substr($line,0,6) == '<?xml ')
  +        #$format='xslt';
  +        $format='xsltproc';
  +      elseif (preg_match('/^<\?php(\s|\b)/',$line))
  +        $format='php'; # builtin php detect
  +    } else {
  +      if ($body[0] == '#' and $body[1] =='!') {
  +        list($line, $body)= explode("\n", $body,2);
  +        $format= trim(substr($line,2));
  +      }
  +
  +      // not parsed lines are comments
  +      $notparsed=array();
  +      $pilines=array();
  +      $body_start = 0;
  +      while ($body and $body[0] == '#') {
  +        $body_start++;
  +        # extract first line
  +        list($line, $body)= explode("\n", $body,2);
  +        if ($line=='#') break;
  +        else if ($line[1]=='#') { $notparsed[]=$line; continue;}
  +        $pilines[]=$line;
  +
  +        $val = '';
  +        if (($pos = strpos($line, ' ')) !== false) 
  +          list($key,$val)= explode(' ',$line,2);
  +        else
  +          $key = trim($line);
  +        $key=strtolower($key);
  +        $val=trim($val);
  +        if (in_array($key,$pikeys)) { $pi[$key]=$val ? $val:1; }
  +        else {
  +           $notparsed[]=$line;
  +           array_pop($pilines);
  +        }
  +      }
  +      $piline=implode("\n",$pilines);
  +      $piline=$piline ? $piline."\n":'';
  +      #
  +      if (isset($pi['#notwins'])) $pi['#twinpages']=0;
  +      if (isset($pi['#nocamelcase'])) $pi['#camelcase']=0;
  +      if (isset($pi['#nocache'])) $pi['#cache']=0;
  +      if (isset($pi['#nofilter'])) unset($pi['#filter']);
  +      if (isset($pi['#nosinglebracket'])) $pi['#singlebracket']=0;
  +      if (isset($pi['#nolinenum'])) $pi['#linenum']=0;
  +    }
  +
  +    if (!empty($pi['#format']) and ($p = strpos($pi['#format'],' '))!== false) {
  +      $pi['args'] = substr($pi['#format'],$p+1);
  +      $pi['#format']= substr($pi['#format'],0,$p);
  +    }
  +
  +    if (!empty($piline)) $pi['raw']= $piline;
  +    if (!empty($body_start)) $pi['start_line'] = $body_start;
  +
  +    if ($update_pi) $pi_cache->update($this->name, $pi);
  +
  +    if (empty($pi['#format']) and !empty($format)) {
  +      $pi['#format']=$format; // override default
  +    } else if (!isset($pi['#format'])) {
  +      $pi['#format']= $Config['default_markup'];
  +    }
  +
  +    return $pi;
  +  }
  +
   }
   
   class Formatter {
  @@ -1372,7 +1522,6 @@
       $this->user=&$DBInfo->user;
       $this->check_openid_url=!empty($DBInfo->check_openid_url) ? $DBInfo->check_openid_url : 0;
       $this->register_javascripts($DBInfo->javascripts);
  -    $this->dynamic_macros=!empty($DBInfo->dynamic_macros) ? $DBInfo->dynamic_macros : null;
   
       if (($p=strpos($page->name,"~")))
         $this->group=substr($page->name,0,$p+1);
  @@ -1696,122 +1845,6 @@
       return $out;
     }
   
  -  function get_redirect() {
  -    $body=$this->page->get_raw_body();
  -    if ($body[0]=='#' and substr($body,0,10)=='#redirect ') {
  -      list($line,$dumm)=explode("\n",$body,2);
  -      list($tag,$val)=explode(" ",$line,2);
  -      if ($val) $this->pi['#redirect']=$val;
  -    }
  -  }
  -
  -  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','#alias', '#linenum', '#nolinenum',
  -      '#singlebracket','#nosinglebracket','#rating','#norating','#nodtd');
  -    $pi=array();
  -
  -    $update_body=false;
  -    $format='';
  -    if ( empty($this->pi['#format'])) {
  -      preg_match('%(:|/)%',$this->page->name,$sep);
  -      $key=strtok($this->page->name,':/');
  -      if (isset($Config['pagetype'][$key]) and $f=$Config['pagetype'][$key]) {
  -        $p=preg_split('%(:|/)%',$f);
  -        $p2=strlen($p[0].$p[1])+1;
  -        $p[1]=$p[1] ? $f{strlen($p[0])}.$p[1]:'';
  -        $p[2]=$p[2] ? $f{$p2}.$p[2]:'';
  -        $format=$p[0];
  -        if ($sep[1]) { # have : or /
  -          $format = ($sep[1]==$p[1]{0}) ? substr($p[1],1):
  -                    (($sep[1]==$p[2]{0}) ? substr($p[2],1):'plain');
  -        }
  -      } else if (isset($Config['pagetype']['*']))
  -        $format=$Config['pagetype']['*']; // default page type
  -    } else {
  -      if (empty($body) and !empty($this->pi['#format']))
  -        $format=$this->pi['#format'];
  -    }
  -
  -    if (empty($body)) {
  -      if (!$this->page->exists()) return array();
  -      if ($this->pi) return $this->pi;
  -      $body=$this->page->get_raw_body();
  -      $update_body=true;
  -    }
  -
  -    if (!empty($this->use_metadata)) {
  -      include_once('lib/metadata.php');
  -      list($this->metas,$nbody)=_get_metadata($body);
  -      if ($nbody!=null) $body=$nbody;
  -    }
  -
  -    if (!$format and $body[0] == '<') {
  -      list($line, $dummy)= explode("\n", $body,2);
  -      if (substr($line,0,6) == '<?xml ')
  -        #$format='xslt';
  -        $format='xsltproc';
  -      elseif (preg_match('/^<\?php(\s|\b)/',$line))
  -        $format='php'; # builtin php detect
  -    } else {
  -      if ($body[0] == '#' and $body[1] =='!') {
  -        list($line, $body)= explode("\n", $body,2);
  -        $format= trim(substr($line,2));
  -      }
  -
  -      $notused=array();
  -      $pilines=array();
  -      $body_start = 0;
  -      while ($body and $body[0] == '#') {
  -        $body_start++;
  -        # extract first line
  -        list($line, $body)= explode("\n", $body,2);
  -        if ($line=='#') break;
  -        else if ($line[1]=='#') { $notused[]=$line; continue;}
  -        $pilines[]=$line;
  -
  -        $val = '';
  -        if (($pos = strpos($line, ' ')) !== false) 
  -          list($key,$val)= explode(' ',$line,2);
  -        else
  -          $key = trim($line);
  -        $key=strtolower($key);
  -        $val=trim($val);
  -        if (in_array($key,$pikeys)) { $pi[$key]=$val ? $val:1; }
  -        else {
  -           $notused[]=$line;
  -           array_pop($pilines);
  -        }
  -      }
  -      $piline=implode("\n",$pilines);
  -      $piline=$piline ? $piline."\n":'';
  -      #
  -      if (isset($pi['#notwins'])) $pi['#twinpages']=0;
  -      if (isset($pi['#nocamelcase'])) $pi['#camelcase']=0;
  -      if (isset($pi['#nocache'])) $pi['#cache']=0;
  -      if (isset($pi['#nofilter'])) unset($pi['#filter']);
  -      if (isset($pi['#nosinglebracket'])) $pi['#singlebracket']=0;
  -      if (isset($pi['#nolinenum'])) $pi['#linenum']=0;
  -    }
  -
  -    if (empty($pi['#format']) and !empty($format)) $pi['#format']=$format; // override default
  -    if (!isset($pi['#format'])) $pi['#format']= $Config['default_markup'];
  -
  -    if (($p = strpos($pi['#format'],' '))!== false) {
  -      $pi['args'] = substr($pi['#format'],$p+1);
  -      $pi['#format']= substr($pi['#format'],0,$p);
  -    }
  -
  -    if (!empty($notused)) $body=implode("\n",$notused)."\n".$body;
  -    if (!empty($update_body)) $this->page->write($body." "); # workaround XXX
  -    #if ($update_body) $this->page->write($body);
  -    $pi['raw']=!empty($piline) ? $piline : '';
  -    $pi['start_line'] = $body_start;
  -    return $pi;
  -  }
  -
     function highlight_repl($val,$colref=array()) {
       static $color=array("style='background-color:#ffff99;'",
                           "style='background-color:#99ffff;'",
  @@ -2550,23 +2583,22 @@
         $name = $np;
       }
   
  -    if ($this->_macrocache and empty($options['call']) and
  -      (isset($this->dynamic_macros[strtolower($name)]) or
  -      isset($this->dynamic_macros[$name]))) {
  -      $arg = '';
  -      if ($args === true) $arg = '()';
  -      else if (!empty($args)) $arg = '('.$args.')';
  -      $macro=$name.$arg;
  -      $md5sum= md5($macro);
  -      $this->_macros[$md5sum]=array($macro,$this->mid);
  -      return '[['.$md5sum.']]';
  -    }
  -
       $ret=call_user_func_array('macro_'.$name,array(&$this,$args,&$options));
       if (is_array($ret)) return $ret;
       return $bra.$ret.$ket;
     }
   
  +  function macro_cache_repl($name, $args)
  +  {
  +    $arg = '';
  +    if ($args === true) $arg = '()';
  +    else if (!empty($args)) $arg = '('.$args.')';
  +    $macro = $name.$arg;
  +    $md5sum = md5($macro);
  +    $this->_dynamic_macros[$macro] = array($md5sum, $this->mid);
  +    return '[['.$md5sum.']]';
  +  }
  +
     function processor_repl($processor,$value, $options = false) {
       $bra='';$ket='';
       if (!empty($this->wikimarkup) and empty($options['nomarkup'])) {
  @@ -3050,7 +3082,7 @@
   
       if (isset($body[0])) {
         $this->text = $body;
  -      $pi=$this->get_instructions($body);
  +      $pi=$this->page->get_instructions($body);
   
         if ($this->wikimarkup and $pi['raw']) {
           $pi_html=str_replace("\n","<br />\n",$pi['raw']);
  @@ -3109,12 +3141,12 @@
   
         if (isset($options['rev'])) {
           $body=$this->page->get_raw_body($options);
  -        $pi=$this->get_instructions($body);
  +        $pi=$this->page->get_instructions($body);
         } else {
  -        $pi=$this->get_instructions($dum);
  +        $pi=$this->page->get_instructions();
           $body=$this->page->get_raw_body($options);
         }
  -      $this->text = &$body;
  +      $this->text = &$body; // XXX
   
         $this->set_wordrule($pi);
         if (!empty($this->wikimarkup) and !empty($pi['raw']))
  @@ -3171,8 +3203,10 @@
         }
   
         if (!empty($body)) {
  -        $body=rtrim($body); # delete last empty line
           $lines=explode("\n",$body);
  +        $el = end($lines);
  +        // delete last empty line
  +        if (!isset($el[0])) array_pop($lines);
         } else
           $lines=array();
   
  @@ -3245,12 +3279,15 @@
   
       $formatter=&$this;
   
  +    $ii = isset($pi['start_line']) ? $pi['start_line'] : 0;
       if (isset($formatter->pi['#linenum']) and empty($formatter->pi['#linenum']))
         $this->linenum = -99999;
       else
  -      $this->linenum = isset($pi['start_line']) ? $pi['start_line'] : 0;
  +      $this->linenum = $ii;
   
  -    foreach ($lines as $line) {
  +    $lcount = count($lines);
  +    for (; $ii < $lcount; $ii++) {
  +      $line = $lines[$ii];
         $this->linenum++;
         $lid = $this->linenum;
         # empty line
  @@ -3999,11 +4036,17 @@
         }
       }
       $mtime = $this->page->mtime();
  -    if (!empty($mtime) and empty($options['nolastmod'])) {
  +    if (!empty($DBInfo->use_conditional_get) and empty($options['action']) and !empty($mtime)
  +        and empty($options['nolastmod'])
  +        and $this->page->is_static)
  +    {
         $lastmod = gmdate('D, d M Y H:i:s \G\M\T', $mtime);
         $this->header('Last-Modified: '.$lastmod);
  +      $etag = $this->page->etag();
         if (!empty($options['etag']))
           $this->header('ETag: "'.$options['etag'].'"');
  +      else
  +        $this->header('ETag: "'.$etag.'"');
   
         $meta_lastmod = '<meta http-equiv="last-modified" content="'.$lastmod.'" />'."\n";
       }
  @@ -5185,25 +5228,58 @@
     }
   
     $options['page']=$pagename;
  +  $options['action'] = &$action;
     $page = $DBInfo->getPage($pagename);
   
  +  $pis = array();
  +
  +  // get PI cache
  +  if ($page->exists()) $page->pi = $pis = $page->get_instructions();
  +  $page->is_static = false;
  +
  +  // set some PIs for robot
  +  if (!empty($options['is_robot'])) {
  +    $page->is_static = true;
  +  } else {
  +    $page->is_static = empty($pis['#nocache']) && empty($pis['#dynamic']);
  +  }
  +
     // HEAD support for robots
     if (!empty($_SERVER['REQUEST_METHOD']) and $_SERVER['REQUEST_METHOD'] == 'HEAD') {
       if (!$page->exists()) {
         header("HTTP/1.1 404 Not found");
         header("Status: 404 Not found");
       } else {
  -      #$formatter->get_redirect();
  -      $mtime = $page->mtime();
  -      $lastmod = gmdate('D, d M Y H:i:s \G\M\T', $mtime);
  -      $etag = '"'.md5($lastmod).'"';
  -      header('Last-Modified: '.$lastmod);
  -      header('ETag: '.$etag);
  +      if ($page->is_static) {
  +        $mtime = $page->mtime();
  +        $etag = $page->etag();
  +        $lastmod = gmdate('D, d M Y H:i:s \G\M\T', $mtime);
  +        header('Last-Modified: '.$lastmod);
  +        if (!empty($action)) {
  +          $etag = '"'.$etag.'"';
  +          header('ETag: '.$etag);
  +        }
  +      }
       }
  -    #$ret = $formatter->send_header($header, $options);
       return;
     }
   
  +  if (!empty($DBInfo->use_conditional_get) and $page->exists() and $page->is_static) {
  +    $mtime = $page->mtime();
  +    $etag = $page->etag();
  +    $lastmod = gmdate('D, d M Y H:i:s \G\M\T', $mtime);
  +    $need = http_need_cond_request($mtime, $lastmod, $etag);
  +    if (!$need) {
  +      @ob_end_clean();
  +      $headers = array();
  +      $headers[] = 'HTTP/1.0 304 Not Modified';
  +      $headers[] = 'Last-Modified: '.$lastmod;
  +
  +      foreach ($headers as $header) header($header);
  +      return;
  +    }
  +  }
  +
     $formatter = new Formatter($page,$options);
   
     // is it robot ?
  @@ -5391,8 +5467,7 @@
         return;
       }
   
  -
  -    $formatter->pi=$formatter->get_instructions($dum);
  +    $formatter->pi=$formatter->page->get_instructions();
       // update aliases
       if (!empty($DBInfo->use_alias)) {
         $ac = new Cache_text('alias');
  @@ -5452,7 +5527,7 @@
       $options['pagelinks']=1;
       if (!empty($Config['cachetime']) and $Config['cachetime'] > 0 and empty($formatter->pi['#nocache'])) {
         $cache= new Cache_text('pages', array('ext'=>'html'));
  -      $mcache= new Cache_text('dynamicmacros');
  +      $mcache= new Cache_text('dynamic_macros');
         $mtime=$cache->mtime($pagename);
         $dtime= $DBInfo->mtime();
         $now=time();
  @@ -5480,20 +5555,18 @@
           $out=ob_get_contents();
           ob_end_clean();
           $formatter->_macrocache=0;
  -        $_macros=&$formatter->_macros;
  -        if (empty($formatter->pi['#nocache'])) {
  -          $cache->update($pagename, $out, $Config['cachetime']);
  -          if (isset($_macros))
  -            $mcache->update($pagename,$_macros);
  -        }
  +        $_macros=&$formatter->_dynamic_macros;
  +        if (!empty($_macros))
  +          $mcache->update($pagename,$_macros);
  +        $cache->update($pagename, $out, $Config['cachetime']);
         }
         if (!empty($_macros)) {
           $mrule=array();
           $mrepl=array();
  -        foreach ($_macros as $k=>$v) {
  -          $mrule[]='[['.$k.']]';
  +        foreach ($_macros as $m=>$v) {
  +          $mrule[]='[['.$v[0].']]';
             $options['mid']=$v[1];
  -          $mrepl[]=$formatter->macro_repl($v[0],'',$options); // XXX
  +          $mrepl[]=$formatter->macro_repl($m,'',$options); // XXX
           }
           echo $formatter->get_javascripts();
           $out=str_replace($mrule,$mrepl,$out);
  @@ -5503,6 +5576,23 @@
       } else {
         $formatter->send_page('',$options);
       }
  +
  +    // automatically set #dynamic PI
  +    if (!empty($formatter->_dynamic_macros)) {
  +      $pis = $formatter->pi;
  +      if (empty($pis['raw'])) {
  +        // empty PIs
  +        $pis = array();
  +      } else if (isset($pis['#format']) and !preg_match('/#format\s/', $pis['raw'])) {
  +        // #format not found in PIs
  +        unset($pis['#format']);
  +      }
  +      $pis['#dynamic'] = 1; // internal instruction
  +
  +      $pi_cache = new Cache_text('PI');
  +      $pi_cache->update($formatter->page->name, $pis);
  +    }
  +
       if (isset($options['timer']) and is_object($options['timer'])) {
         $options['timer']->Check("send_page");
       }
  @@ -5678,6 +5768,20 @@
     $prefix = !empty($DBInfo->session_seed) ? $DBInfo->session_seed : 'MONIWIKI';
     $myseed = getTicket($prefix, $_SERVER['REMOTE_ADDR']);
     $myid = $prefix . '-*-' . $myseed . '-*-' . $options['id'];
  +
  +  session_set_cookie_params (isset($Config['session_lifetime']) ? $Config['session_lifetime'] : 3600, get_scriptname());
  +
  +  // chceck some action and set expire
  +  session_cache_limiter(FALSE);
  +  if ($options['id'] == 'Anonymous')
  +    $private = 'public';
  +  else
  +    $private = 'private';
  +  if (empty($_GET['action']) or $_GET['action'] == 'show')
  +    header('Cache-Control: '.$private.', max-age=0, post-check=0, pre-check=0');
  +  //else if (!empty($_GET['action']) and in_array($_GET['action'], array('edit', 'info', 'diff')))
  +  //  header('Cache-Control: '.$private.', max-age=600, post-check=0, pre-check=0');
  +
     session_name($myid);
     session_start();
   }
  
  
  
  1.368     +11 -3     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.367
  retrieving revision 1.368
  diff -u -r1.367 -r1.368
  --- wikilib.php	2 Oct 2010 01:57:45 -0000	1.367
  +++ wikilib.php	5 Oct 2010 22:28:54 -0000	1.368
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.367 2010/10/02 01:57:45 wkpark Exp $
  +// $Id: wikilib.php,v 1.368 2010/10/05 22:28:54 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1121,7 +1121,7 @@
   JS;
       if (!$DBInfo->hasPage($options['page'])) print $js;
       else {
  -      $pi=$formatter->get_instructions($dum);
  +      $pi=$formatter->page->get_instructions($dum);
         if (in_array($pi['#format'],array('wiki','monimarkup')) )
   	print $js;
       }
  @@ -1708,7 +1708,7 @@
     } else {
       $mtime = $formatter->page->mtime();
       $lastmod = gmdate('D, d M Y H:i:s \G\M\T', $mtime);
  -    $etag = md5($lastmod);
  +    $etag = $formatter->page->etag();
       if (strstr($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') and function_exists('ob_gzhandler')) {
         $gzip_mode = 1;
         $etag.= '.gzip'; // is it correct?
  @@ -2524,6 +2524,10 @@
       }
     }
   
  +  if ($mode != 'js') $formatter->_dynamic_macros['RandomPage'] = 1;
  +  if ($formatter->_macrocache and empty($options['call']) and $mode != 'js')
  +    return $formatter->macro_cache_repl('RandomPage', $value);
  +
     if ($count <= 0) $count=1;
     $counter= $count;
   
  @@ -2738,6 +2742,10 @@
   function macro_UserPreferences($formatter,$value,$options='') {
     global $DBInfo;
   
  +  $formatter->_dynamic_macros['UserPreferences'] = 1;
  +  if ($formatter->_macrocache and empty($options['call']))
  +    return $formatter->macro_cache_repl('UserPreferences', $value);
  +
     $use_any=0;
     if (!empty($DBInfo->use_textbrowsers)) {
       if (is_string($DBInfo->use_textbrowsers))
  
  
  
  1.27      +3 -3      moniwiki/plugin/Diff.php
  
  Index: Diff.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Diff.php,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- Diff.php	30 Sep 2010 15:46:59 -0000	1.26
  +++ Diff.php	5 Oct 2010 22:28:54 -0000	1.27
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a diff plugin for the MoniWiki
   //
  -// $Id: Diff.php,v 1.26 2010/09/30 15:46:59 wkpark Exp $
  +// $Id: Diff.php,v 1.27 2010/10/05 22:28:54 wkpark Exp $
   
   
   function code_diff($diff, $options = array()) {
  @@ -353,7 +353,7 @@
   
     $option='';
   
  -  $pi=$formatter->get_instructions($dum);
  +  $pi=$formatter->page->get_instructions();
     $formatter->pi=$pi;
   
     $processor_type=$pi['#format'];
  @@ -413,7 +413,7 @@
   
     if (!$rev1 && !$rev2) {
       $msg= _("No older revisions available");
  -    if ($options['nomsg']) return '';
  +    if (!empty($options['nomsg'])) return '';
       return "<h2>$msg</h2>";
     }
     if (!$DBInfo->version_class) {
  
  
  
  1.39      +3 -3      moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- Keywords.php	7 Sep 2010 12:11:49 -0000	1.38
  +++ Keywords.php	5 Oct 2010 22:28:54 -0000	1.39
  @@ -8,12 +8,12 @@
   // Name: a Keywords Plugin
   // Description: a Keywords plugin to generate keywords of a page
   // URL: MoniWiki:KeywordsPlugin
  -// Version: $Revision: 1.38 $
  +// Version: $Revision: 1.39 $
   // License: GPL
   //
   // Usage: [[Keywords(options)]]
   //
  -// $Id: Keywords.php,v 1.38 2010/09/07 12:11:49 wkpark Exp $
  +// $Id: Keywords.php,v 1.39 2010/10/05 22:28:54 wkpark Exp $
   
   define('LOCAL_KEYWORDS','LocalKeywords');
   define('MAX_FONT_SZ',24);
  @@ -650,7 +650,7 @@
           if (!empty($DBInfo->use_keywords) or !empty($options['update'])) {
               # auto update the page with selected keywords.
               $body=$formatter->page->get_raw_body();
  -            $pi=$formatter->get_instructions($dum);
  +            $pi=$formatter->page->get_instructions($dum);
               if (!empty($pi['#keywords'])) {
                   $tag=preg_quote($pi['#keywords']);
                   $nbody= preg_replace('/^#keywords\s+'.$tag.'/',
  
  
  
  1.10      +3 -3      moniwiki/plugin/Rating.php
  
  Index: Rating.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Rating.php,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- Rating.php	23 Aug 2010 15:14:10 -0000	1.9
  +++ Rating.php	5 Oct 2010 22:28:54 -0000	1.10
  @@ -7,12 +7,12 @@
   // Name: Rating
   // Description: Rating Plugin
   // URL: MoniWiki:RatingPlugin
  -// Version: $Revision: 1.9 $
  +// Version: $Revision: 1.10 $
   // License: GPL
   //
   // Usage: [[Rating(totalscore,count)]] or [[Rating(initial score)]]
   //
  -// $Id: Rating.php,v 1.9 2010/08/23 15:14:10 wkpark Exp $
  +// $Id: Rating.php,v 1.10 2010/10/05 22:28:54 wkpark Exp $
   
   function macro_Rating($formatter,$value='',$options=array()) {
       global $Config;
  @@ -165,7 +165,7 @@
       if (empty($matched)) {
           if (!empty($DBInfo->use_rating)) {
               $dum='';
  -            $pi=$formatter->get_instructions($dum);
  +            $pi=$formatter->page->get_instructions($dum);
               $old = !empty($pi['#rating']) ? $pi['#rating'] : '';
               $new='#rating '.$total.','.$count;
               if ($old) {
  
  
  
  1.59      +4 -5      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.58
  retrieving revision 1.59
  diff -u -r1.58 -r1.59
  --- RecentChanges.php	2 Oct 2010 10:16:13 -0000	1.58
  +++ RecentChanges.php	5 Oct 2010 22:28:54 -0000	1.59
  @@ -7,10 +7,10 @@
   // Name: RecentChanges
   // Description: Show RecentChanges of the Wiki
   // URL: MoniWiki:RecentChangesPlugin
  -// Version: $Revision: 1.58 $
  +// Version: $Revision: 1.59 $
   // Depend: 1.1.3
   // License: GPL
  -// $Id: RecentChanges.php,v 1.58 2010/10/02 10:16:13 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.59 2010/10/05 22:28:54 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     global $DBInfo;
  @@ -249,9 +249,8 @@
     // set as dynamic macro or not.
     if (empty($use_js))
       $formatter->_dynamic_macros['RecentChanges'] = 1;
  -  if ($formatter->_macrocache and empty($options['call']) and empty($use_js)) {
  -    return $formatter->macro_cache_tag('RecentChanges', $value);
  -  }
  +  if ($formatter->_macrocache and empty($options['call']) and empty($use_js))
  +    return $formatter->macro_cache_repl('RecentChanges', $value);
   
     // reset some conflict params
     if (empty($DBInfo->use_counter))
  
  
  
  1.7       +2 -2      moniwiki/plugin/WantedPages.php
  
  Index: WantedPages.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/WantedPages.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- WantedPages.php	18 Jul 2006 15:10:27 -0000	1.6
  +++ WantedPages.php	5 Oct 2010 22:28:54 -0000	1.7
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a WantedPages macro plugin for the MoniWiki
   //
  -// $Id: WantedPages.php,v 1.6 2006/07/18 15:10:27 wkpark Exp $
  +// $Id: WantedPages.php,v 1.7 2010/10/05 22:28:54 wkpark Exp $
   
   function macro_WantedPages($formatter,$value='') {
     global $DBInfo;
  @@ -19,7 +19,7 @@
       $dum='';
       $p= new WikiPage($page);
       $f= new Formatter($p);
  -    $pi=$f->get_instructions($dum);
  +    $pi=$f->page->get_instructions($dum);
       if ($pi['#format']!='') continue;
       $links=$f->get_pagelinks();
       if ($links) {
  
  
  
  1.7       +2 -2      moniwiki/plugin/format.php
  
  Index: format.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/format.php,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- format.php	10 Dec 2008 10:00:57 -0000	1.6
  +++ format.php	5 Oct 2010 22:28:54 -0000	1.7
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a format plugin to connect with processors for the MoniWiki
   //
  -// $Id: format.php,v 1.6 2008/12/10 10:00:57 wkpark Exp $
  +// $Id: format.php,v 1.7 2010/10/05 22:28:54 wkpark Exp $
   
   function do_format($formatter,$options) {
     $mimes=array('text/plain'=>'html','text/xml'=>'text_xml');
  @@ -11,7 +11,7 @@
     $proc=!empty($options['proc']) ? $options['proc']:'';
     if (!$mimetype) $mimetype='text/plain';
   
  -  $pi=$formatter->get_instructions($dummy);
  +  $pi=$formatter->page->get_instructions($dummy);
     if (!$formatter->wordrule) $formatter->set_wordrule($pi);
     if ($pi['#format']=='xsltproc') {
       $options['title']= _("It is a XML format !");
  
  
  
  1.9       +2 -2      moniwiki/plugin/print.php
  
  Index: print.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/print.php,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- print.php	10 Aug 2010 18:08:32 -0000	1.8
  +++ print.php	5 Oct 2010 22:28:54 -0000	1.9
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a print action plugin for the MoniWiki
   //
  -// $Id: print.php,v 1.8 2010/08/10 18:08:32 wkpark Exp $
  +// $Id: print.php,v 1.9 2010/10/05 22:28:54 wkpark Exp $
   
   function do_print($formatter,$options) {
     global $DBInfo;
  @@ -12,7 +12,7 @@
     $formatter->nonexists='always';
   
     $dum = false;
  -  $formatter->pi = $formatter->get_instructions($dum);
  +  $formatter->pi = $formatter->page->get_instructions($dum);
     $title = $formatter->pi['#title'];
   
     $formatter->send_header("",$options);
  
  
  


1286319349;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv15890\n\nModified Files:\n      Tag: B_1_1_5\n	wiki.php wikilib.php \nLog Message:\nmerged from trunk\n[#315631] auto set the $formatter->_dynamic_macros variable.\n * refactoring get_instruction() method, remove hack and cache PIs.\n * use session_cache_limiter(FALSE) to disable automatic cache-control header\n * use session_set_cookie_params() to set the path of the session cookies.\n * support $use_conditional_get option. experimental!!\n[#315749] use javascript to make RecentChanges macro cachable static contents.\n\n
1286319350;wkpark;Update of /cvsroot/moniwiki/moniwiki/local\nIn directory kill.kldp.net:/tmp/cvs-serv15890/local\n\nModified Files:\n      Tag: B_1_1_5\n	ajax.js \nLog Message:\nmerged from trunk\n[#315631] auto set the $formatter->_dynamic_macros variable.\n * refactoring get_instruction() method, remove hack and cache PIs.\n * use session_cache_limiter(FALSE) to disable automatic cache-control header\n * use session_set_cookie_params() to set the path of the session cookies.\n * support $use_conditional_get option. experimental!!\n[#315749] use javascript to make RecentChanges macro cachable static contents.\n\n
1286319350;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv15890/plugin\n\nModified Files:\n      Tag: B_1_1_5\n	Diff.php Keywords.php Rating.php RecentChanges.php \n	WantedPages.php format.php print.php \nLog Message:\nmerged from trunk\n[#315631] auto set the $formatter->_dynamic_macros variable.\n * refactoring get_instruction() method, remove hack and cache PIs.\n * use session_cache_limiter(FALSE) to disable automatic cache-control header\n * use session_set_cookie_params() to set the path of the session cookies.\n * support $use_conditional_get option. experimental!!\n[#315749] use javascript to make RecentChanges macro cachable static contents.\n\n
wkpark      2010/10/06 07:55:51

  Modified:    .        Tag: B_1_1_5 wiki.php wikilib.php
               local    Tag: B_1_1_5 ajax.js
               plugin   Tag: B_1_1_5 Diff.php Keywords.php Rating.php
                        RecentChanges.php WantedPages.php format.php
                        print.php
  Log:
  merged from trunk
  [#315631] auto set the $formatter->_dynamic_macros variable.
   * refactoring get_instruction() method, remove hack and cache PIs.
   * use session_cache_limiter(FALSE) to disable automatic cache-control header
   * use session_set_cookie_params() to set the path of the session cookies.
   * support $use_conditional_get option. experimental!!
  [#315749] use javascript to make RecentChanges macro cachable static contents.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.600.2.7 +262 -158  moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.600.2.6
  retrieving revision 1.600.2.7
  diff -u -r1.600.2.6 -r1.600.2.7
  --- wiki.php	2 Oct 2010 02:55:44 -0000	1.600.2.6
  +++ wiki.php	5 Oct 2010 22:55:49 -0000	1.600.2.7
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.600.2.6 2010/10/02 02:55:44 wkpark Exp $
  +// $Id: wiki.php,v 1.600.2.7 2010/10/05 22:55:49 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.600.2.6 $',1,-1);
  +$_revision = substr('$Revision: 1.600.2.7 $',1,-1);
   $_release = '1.1.6-RC1';
   
   #ob_start("ob_gzhandler");
  @@ -1769,6 +1769,7 @@
   class WikiPage {
     var $fp;
     var $filename;
  +  var $pi = null;
     var $rev;
     var $body;
   
  @@ -1807,6 +1808,14 @@
       return @filemtime($this->filename);
     }
   
  +  function etag() {
  +    global $DBInfo;
  +    $seed = '';
  +    if (!empty($DBInfo->etag_seed))
  +      $seed = $DBInfo->etag_seed;
  +    return md5($this->mtime().$DBInfo->mtime().$seed);
  +  }
  +
     function size() {
       if ($this->fsize) return $this->fsize;
       $this->fsize=@filesize($this->filename);
  @@ -1930,6 +1939,147 @@
       }
       return $infos;
     }
  +
  +  function get_redirect() {
  +    $body = $this->get_raw_body();
  +    if ($body[0] == '#' and ($p = strpos($body, "\n")) !== false) {
  +      $line = substr($body, 0, $p);
  +      if (preg_match('/#redirect\s/i', $line)) {
  +        list($tag, $val) = explode(' ', $line, 2);
  +        if (isset($val[0])) return $val;
  +      }
  +    }
  +  }
  +
  +  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','#alias', '#linenum', '#nolinenum',
  +      '#singlebracket','#nosinglebracket','#rating','#norating','#nodtd');
  +    $pi=array();
  +
  +    $format='';
  +
  +    // get page format from $pagetype
  +    if ( empty($this->pi['#format']) and !empty($Config['pagetype'])) {
  +      preg_match('%(:|/)%',$this->name,$sep);
  +      $key=strtok($this->name,':/');
  +      if (isset($Config['pagetype'][$key]) and $f=$Config['pagetype'][$key]) {
  +        $p=preg_split('%(:|/)%',$f);
  +        $p2=strlen($p[0].$p[1])+1;
  +        $p[1]=$p[1] ? $f{strlen($p[0])}.$p[1]:'';
  +        $p[2]=$p[2] ? $f{$p2}.$p[2]:'';
  +        $format=$p[0];
  +        if ($sep[1]) { # have : or /
  +          $format = ($sep[1]==$p[1]{0}) ? substr($p[1],1):
  +                    (($sep[1]==$p[2]{0}) ? substr($p[2],1):'plain');
  +        }
  +      } else if (isset($Config['pagetype']['*']))
  +        $format=$Config['pagetype']['*']; // default page type
  +    } else {
  +      if (empty($body) and !empty($this->pi['#format']))
  +        $format=$this->pi['#format'];
  +    }
  +
  +    $update_pi = false;
  +    if (empty($body)) {
  +      if (!$this->exists()) return array();
  +      if (isset($this->pi)) return $this->pi;
  +
  +      $pi_cache = new Cache_text('PI');
  +      if ($this->mtime() < $pi_cache->mtime($this->name)) {
  +        $pi = unserialize($pi_cache->fetch($this->name));
  +
  +        if (empty($pi['#format']) and !empty($format)) {
  +          $pi['#format'] = $format; // override default
  +        } else if (!isset($pi['#format'])) {
  +          $pi['#format'] = $Config['default_markup'];
  +        }
  +
  +        return $pi;
  +      }
  +
  +      $body=$this->get_raw_body();
  +      $update_pi = true;
  +    }
  +
  +    if (!empty($Config['use_metadata'])) {
  +      // FIXME experimental
  +      include_once('lib/metadata.php');
  +      list($this->metas,$nbody)=_get_metadata($body);
  +      if ($nbody!=null) $body=$nbody;
  +    }
  +
  +    if (!$format and $body[0] == '<') {
  +      list($line, $dummy)= explode("\n", $body,2);
  +      if (substr($line,0,6) == '<?xml ')
  +        #$format='xslt';
  +        $format='xsltproc';
  +      elseif (preg_match('/^<\?php(\s|\b)/',$line))
  +        $format='php'; # builtin php detect
  +    } else {
  +      if ($body[0] == '#' and $body[1] =='!') {
  +        list($line, $body)= explode("\n", $body,2);
  +        $format= trim(substr($line,2));
  +      }
  +
  +      // not parsed lines are comments
  +      $notparsed=array();
  +      $pilines=array();
  +      $body_start = 0;
  +      while ($body and $body[0] == '#') {
  +        $body_start++;
  +        # extract first line
  +        list($line, $body)= explode("\n", $body,2);
  +        if ($line=='#') break;
  +        else if ($line[1]=='#') { $notparsed[]=$line; continue;}
  +        $pilines[]=$line;
  +
  +        $val = '';
  +        if (($pos = strpos($line, ' ')) !== false) 
  +          list($key,$val)= explode(' ',$line,2);
  +        else
  +          $key = trim($line);
  +        $key=strtolower($key);
  +        $val=trim($val);
  +        if (in_array($key,$pikeys)) { $pi[$key]=$val ? $val:1; }
  +        else {
  +           $notparsed[]=$line;
  +           array_pop($pilines);
  +        }
  +      }
  +      $piline=implode("\n",$pilines);
  +      $piline=$piline ? $piline."\n":'';
  +      #
  +      if (isset($pi['#notwins'])) $pi['#twinpages']=0;
  +      if (isset($pi['#nocamelcase'])) $pi['#camelcase']=0;
  +      if (isset($pi['#nocache'])) $pi['#cache']=0;
  +      if (isset($pi['#nofilter'])) unset($pi['#filter']);
  +      if (isset($pi['#nosinglebracket'])) $pi['#singlebracket']=0;
  +      if (isset($pi['#nolinenum'])) $pi['#linenum']=0;
  +    }
  +
  +    if (!empty($pi['#format']) and ($p = strpos($pi['#format'],' '))!== false) {
  +      $pi['args'] = substr($pi['#format'],$p+1);
  +      $pi['#format']= substr($pi['#format'],0,$p);
  +    }
  +
  +    if (!empty($piline)) $pi['raw']= $piline;
  +    if (!empty($body_start)) $pi['start_line'] = $body_start;
  +
  +    if ($update_pi) $pi_cache->update($this->name, serialize($pi));
  +
  +    if (empty($pi['#format']) and !empty($format)) {
  +      $pi['#format']=$format; // override default
  +    } else if (!isset($pi['#format'])) {
  +      $pi['#format']= $Config['default_markup'];
  +    }
  +
  +    return $pi;
  +  }
  +
   }
   
   class Formatter {
  @@ -1982,7 +2132,6 @@
       $this->user=&$DBInfo->user;
       $this->check_openid_url=!empty($DBInfo->check_openid_url) ? $DBInfo->check_openid_url : 0;
       $this->register_javascripts($DBInfo->javascripts);
  -    $this->dynamic_macros=!empty($DBInfo->dynamic_macros) ? $DBInfo->dynamic_macros : null;
   
       if (($p=strpos($page->name,"~")))
         $this->group=substr($page->name,0,$p+1);
  @@ -2309,122 +2458,6 @@
       return $out;
     }
   
  -  function get_redirect() {
  -    $body=$this->page->get_raw_body();
  -    if ($body[0]=='#' and substr($body,0,10)=='#redirect ') {
  -      list($line,$dumm)=explode("\n",$body,2);
  -      list($tag,$val)=explode(" ",$line,2);
  -      if ($val) $this->pi['#redirect']=$val;
  -    }
  -  }
  -
  -  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','#alias', '#linenum', '#nolinenum',
  -      '#singlebracket','#nosinglebracket','#rating','#norating','#nodtd');
  -    $pi=array();
  -
  -    $update_body=false;
  -    $format='';
  -    if ( empty($this->pi['#format'])) {
  -      preg_match('%(:|/)%',$this->page->name,$sep);
  -      $key=strtok($this->page->name,':/');
  -      if (isset($Config['pagetype'][$key]) and $f=$Config['pagetype'][$key]) {
  -        $p=preg_split('%(:|/)%',$f);
  -        $p2=strlen($p[0].$p[1])+1;
  -        $p[1]=$p[1] ? $f{strlen($p[0])}.$p[1]:'';
  -        $p[2]=$p[2] ? $f{$p2}.$p[2]:'';
  -        $format=$p[0];
  -        if ($sep[1]) { # have : or /
  -          $format = ($sep[1]==$p[1]{0}) ? substr($p[1],1):
  -                    (($sep[1]==$p[2]{0}) ? substr($p[2],1):'plain');
  -        }
  -      } else if (isset($Config['pagetype']['*']))
  -        $format=$Config['pagetype']['*']; // default page type
  -    } else {
  -      if (empty($body) and !empty($this->pi['#format']))
  -        $format=$this->pi['#format'];
  -    }
  -
  -    if (empty($body)) {
  -      if (!$this->page->exists()) return array();
  -      if ($this->pi) return $this->pi;
  -      $body=$this->page->get_raw_body();
  -      $update_body=true;
  -    }
  -
  -    if (!empty($this->use_metadata)) {
  -      include_once('lib/metadata.php');
  -      list($this->metas,$nbody)=_get_metadata($body);
  -      if ($nbody!=null) $body=$nbody;
  -    }
  -
  -    if (!$format and $body[0] == '<') {
  -      list($line, $dummy)= explode("\n", $body,2);
  -      if (substr($line,0,6) == '<?xml ')
  -        #$format='xslt';
  -        $format='xsltproc';
  -      elseif (preg_match('/^<\?php(\s|\b)/',$line))
  -        $format='php'; # builtin php detect
  -    } else {
  -      if ($body[0] == '#' and $body[1] =='!') {
  -        list($line, $body)= explode("\n", $body,2);
  -        $format= trim(substr($line,2));
  -      }
  -
  -      $notused=array();
  -      $pilines=array();
  -      $body_start = 0;
  -      while ($body and $body[0] == '#') {
  -        $body_start++;
  -        # extract first line
  -        list($line, $body)= explode("\n", $body,2);
  -        if ($line=='#') break;
  -        else if ($line[1]=='#') { $notused[]=$line; continue;}
  -        $pilines[]=$line;
  -
  -        $val = '';
  -        if (($pos = strpos($line, ' ')) !== false) 
  -          list($key,$val)= explode(' ',$line,2);
  -        else
  -          $key = trim($line);
  -        $key=strtolower($key);
  -        $val=trim($val);
  -        if (in_array($key,$pikeys)) { $pi[$key]=$val ? $val:1; }
  -        else {
  -           $notused[]=$line;
  -           array_pop($pilines);
  -        }
  -      }
  -      $piline=implode("\n",$pilines);
  -      $piline=$piline ? $piline."\n":'';
  -      #
  -      if (isset($pi['#notwins'])) $pi['#twinpages']=0;
  -      if (isset($pi['#nocamelcase'])) $pi['#camelcase']=0;
  -      if (isset($pi['#nocache'])) $pi['#cache']=0;
  -      if (isset($pi['#nofilter'])) unset($pi['#filter']);
  -      if (isset($pi['#nosinglebracket'])) $pi['#singlebracket']=0;
  -      if (isset($pi['#nolinenum'])) $pi['#linenum']=0;
  -    }
  -
  -    if (empty($pi['#format']) and !empty($format)) $pi['#format']=$format; // override default
  -    if (!isset($pi['#format'])) $pi['#format']= $Config['default_markup'];
  -
  -    if (($p = strpos($pi['#format'],' '))!== false) {
  -      $pi['args'] = substr($pi['#format'],$p+1);
  -      $pi['#format']= substr($pi['#format'],0,$p);
  -    }
  -
  -    if (!empty($notused)) $body=implode("\n",$notused)."\n".$body;
  -    if (!empty($update_body)) $this->page->write($body." "); # workaround XXX
  -    #if ($update_body) $this->page->write($body);
  -    $pi['raw']=!empty($piline) ? $piline : '';
  -    $pi['start_line'] = $body_start;
  -    return $pi;
  -  }
  -
     function highlight_repl($val,$colref=array()) {
       static $color=array("style='background-color:#ffff99;'",
                           "style='background-color:#99ffff;'",
  @@ -3151,23 +3184,22 @@
         $name = $np;
       }
   
  -    if ($this->_macrocache and empty($options['call']) and
  -      (isset($this->dynamic_macros[strtolower($name)]) or
  -      isset($this->dynamic_macros[$name]))) {
  -      $arg = '';
  -      if ($args === true) $arg = '()';
  -      else if (!empty($args)) $arg = '('.$args.')';
  -      $macro=$name.$arg;
  -      $md5sum= md5($macro);
  -      $this->_macros[$md5sum]=array($macro,$this->mid);
  -      return '[['.$md5sum.']]';
  -    }
  -
       $ret=call_user_func_array('macro_'.$name,array(&$this,$args,&$options));
       if (is_array($ret)) return $ret;
       return $bra.$ret.$ket;
     }
   
  +  function macro_cache_repl($name, $args)
  +  {
  +    $arg = '';
  +    if ($args === true) $arg = '()';
  +    else if (!empty($args)) $arg = '('.$args.')';
  +    $macro = $name.$arg;
  +    $md5sum = md5($macro);
  +    $this->_dynamic_macros[$macro] = array($md5sum, $this->mid);
  +    return '[['.$md5sum.']]';
  +  }
  +
     function processor_repl($processor,$value, $options = false) {
       $bra='';$ket='';
       if (!empty($this->wikimarkup) and empty($options['nomarkup'])) {
  @@ -3651,7 +3683,7 @@
   
       if (isset($body[0])) {
         $this->text = $body;
  -      $pi=$this->get_instructions($body);
  +      $pi=$this->page->get_instructions($body);
   
         if ($this->wikimarkup and $pi['raw']) {
           $pi_html=str_replace("\n","<br />\n",$pi['raw']);
  @@ -3707,12 +3739,12 @@
   
         if (isset($options['rev'])) {
           $body=$this->page->get_raw_body($options);
  -        $pi=$this->get_instructions($body);
  +        $pi=$this->page->get_instructions($body);
         } else {
  -        $pi=$this->get_instructions($dum);
  +        $pi=$this->page->get_instructions();
           $body=$this->page->get_raw_body($options);
         }
  -      $this->text = &$body;
  +      $this->text = &$body; // XXX
   
         $this->set_wordrule($pi);
         if (!empty($this->wikimarkup) and !empty($pi['raw']))
  @@ -3769,8 +3801,10 @@
         }
   
         if (!empty($body)) {
  -        $body=rtrim($body); # delete last empty line
           $lines=explode("\n",$body);
  +        $el = end($lines);
  +        // delete last empty line
  +        if (!isset($el[0])) array_pop($lines);
         } else
           $lines=array();
   
  @@ -3843,12 +3877,15 @@
   
       $formatter=&$this;
   
  +    $ii = isset($pi['start_line']) ? $pi['start_line'] : 0;
       if (isset($formatter->pi['#linenum']) and empty($formatter->pi['#linenum']))
         $this->linenum = -99999;
       else
  -      $this->linenum = isset($pi['start_line']) ? $pi['start_line'] : 0;
  +      $this->linenum = $ii;
   
  -    foreach ($lines as $line) {
  +    $lcount = count($lines);
  +    for (; $ii < $lcount; $ii++) {
  +      $line = $lines[$ii];
         $this->linenum++;
         $lid = $this->linenum;
         # empty line
  @@ -4597,11 +4634,17 @@
         }
       }
       $mtime = $this->page->mtime();
  -    if (!empty($mtime) and empty($options['nolastmod'])) {
  +    if (!empty($DBInfo->use_conditional_get) and empty($options['action']) and !empty($mtime)
  +        and empty($options['nolastmod'])
  +        and $this->page->is_static)
  +    {
         $lastmod = gmdate('D, d M Y H:i:s \G\M\T', $mtime);
         $this->header('Last-Modified: '.$lastmod);
  +      $etag = $this->page->etag();
         if (!empty($options['etag']))
           $this->header('ETag: "'.$options['etag'].'"');
  +      else
  +        $this->header('ETag: "'.$etag.'"');
   
         $meta_lastmod = '<meta http-equiv="last-modified" content="'.$lastmod.'" />'."\n";
       }
  @@ -5783,25 +5826,58 @@
     }
   
     $options['page']=$pagename;
  +  $options['action'] = &$action;
     $page = $DBInfo->getPage($pagename);
   
  +  $pis = array();
  +
  +  // get PI cache
  +  if ($page->exists()) $page->pi = $pis = $page->get_instructions();
  +  $page->is_static = false;
  +
  +  // set some PIs for robot
  +  if (!empty($options['is_robot'])) {
  +    $page->is_static = true;
  +  } else {
  +    $page->is_static = empty($pis['#nocache']) && empty($pis['#dynamic']);
  +  }
  +
     // HEAD support for robots
     if (!empty($_SERVER['REQUEST_METHOD']) and $_SERVER['REQUEST_METHOD'] == 'HEAD') {
       if (!$page->exists()) {
         header("HTTP/1.1 404 Not found");
         header("Status: 404 Not found");
       } else {
  -      #$formatter->get_redirect();
  -      $mtime = $page->mtime();
  -      $lastmod = gmdate('D, d M Y H:i:s \G\M\T', $mtime);
  -      $etag = '"'.md5($lastmod).'"';
  -      header('Last-Modified: '.$lastmod);
  -      header('ETag: '.$etag);
  +      if ($page->is_static) {
  +        $mtime = $page->mtime();
  +        $etag = $page->etag();
  +        $lastmod = gmdate('D, d M Y H:i:s \G\M\T', $mtime);
  +        header('Last-Modified: '.$lastmod);
  +        if (!empty($action)) {
  +          $etag = '"'.$etag.'"';
  +          header('ETag: '.$etag);
  +        }
  +      }
       }
  -    #$ret = $formatter->send_header($header, $options);
       return;
     }
   
  +  if (!empty($DBInfo->use_conditional_get) and $page->exists() and $page->is_static) {
  +    $mtime = $page->mtime();
  +    $etag = $page->etag();
  +    $lastmod = gmdate('D, d M Y H:i:s \G\M\T', $mtime);
  +    $need = http_need_cond_request($mtime, $lastmod, $etag);
  +    if (!$need) {
  +      @ob_end_clean();
  +      $headers = array();
  +      $headers[] = 'HTTP/1.0 304 Not Modified';
  +      $headers[] = 'Last-Modified: '.$lastmod;
  +
  +      foreach ($headers as $header) header($header);
  +      return;
  +    }
  +  }
  +
     $formatter = new Formatter($page,$options);
   
     // is it robot ?
  @@ -5989,8 +6065,7 @@
         return;
       }
   
  -
  -    $formatter->pi=$formatter->get_instructions($dum);
  +    $formatter->pi=$formatter->page->get_instructions();
       // update aliases
       if (!empty($DBInfo->use_alias)) {
         $ac = new Cache_text('alias');
  @@ -6050,7 +6125,7 @@
       $options['pagelinks']=1;
       if (!empty($Config['cachetime']) and $Config['cachetime'] > 0 and empty($formatter->pi['#nocache'])) {
         $cache= new Cache_text('pages',2,'html');
  -      $mcache= new Cache_text('dynamicmacros',2);
  +      $mcache= new Cache_text('dynamic_macros',2);
         $mtime=$cache->mtime($pagename);
         $dtime= $DBInfo->mtime();
         $now=time();
  @@ -6078,20 +6153,18 @@
           $out=ob_get_contents();
           ob_end_clean();
           $formatter->_macrocache=0;
  -        $_macros=&$formatter->_macros;
  -        if (empty($formatter->pi['#nocache'])) {
  -          $cache->update($pagename,$out);
  -          if (isset($_macros))
  -            $mcache->update($pagename,serialize($_macros));
  -        }
  +        $_macros=&$formatter->_dynamic_macros;
  +        $cache->update($pagename,$out);
  +        if (isset($_macros))
  +          $mcache->update($pagename,serialize($_macros));
         }
         if (!empty($_macros)) {
           $mrule=array();
           $mrepl=array();
  -        foreach ($_macros as $k=>$v) {
  -          $mrule[]='[['.$k.']]';
  +        foreach ($_macros as $m=>$v) {
  +          $mrule[]='[['.$v[0].']]';
             $options['mid']=$v[1];
  -          $mrepl[]=$formatter->macro_repl($v[0],'',$options); // XXX
  +          $mrepl[]=$formatter->macro_repl($m,'',$options); // XXX
           }
           echo $formatter->get_javascripts();
           $out=str_replace($mrule,$mrepl,$out);
  @@ -6101,6 +6174,23 @@
       } else {
         $formatter->send_page('',$options);
       }
  +
  +    // automatically set #dynamic PI
  +    if (!empty($formatter->_dynamic_macros)) {
  +      $pis = $formatter->pi;
  +      if (empty($pis['raw'])) {
  +        // empty PIs
  +        $pis = array();
  +      } else if (isset($pis['#format']) and !preg_match('/#format\s/', $pis['raw'])) {
  +        // #format not found in PIs
  +        unset($pis['#format']);
  +      }
  +      $pis['#dynamic'] = 1; // internal instruction
  +
  +      $pi_cache = new Cache_text('PI');
  +      $pi_cache->update($formatter->page->name, serialize($pis));
  +    }
  +
       if (isset($options['timer']) and is_object($options['timer'])) {
         $options['timer']->Check("send_page");
       }
  @@ -6262,6 +6352,20 @@
     $prefix = !empty($DBInfo->session_seed) ? $DBInfo->session_seed : 'MONIWIKI';
     $myseed = getTicket($prefix, $_SERVER['REMOTE_ADDR']);
     $myid = $prefix . '-*-' . $myseed . '-*-' . $options['id'];
  +
  +  session_set_cookie_params (isset($Config['session_lifetime']) ? $Config['session_lifetime'] : 3600, get_scriptname());
  +
  +  // chceck some action and set expire
  +  session_cache_limiter(FALSE);
  +  if ($options['id'] == 'Anonymous')
  +    $private = 'public';
  +  else
  +    $private = 'private';
  +  if (empty($_GET['action']) or $_GET['action'] == 'show')
  +    header('Cache-Control: '.$private.', max-age=0, post-check=0, pre-check=0');
  +  //else if (!empty($_GET['action']) and in_array($_GET['action'], array('edit', 'info', 'diff')))
  +  //  header('Cache-Control: '.$private.', max-age=600, post-check=0, pre-check=0');
  +
     session_name($myid);
     session_start();
   }
  
  
  
  1.344.2.6 +11 -3     moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.344.2.5
  retrieving revision 1.344.2.6
  diff -u -r1.344.2.5 -r1.344.2.6
  --- wikilib.php	2 Oct 2010 02:55:44 -0000	1.344.2.5
  +++ wikilib.php	5 Oct 2010 22:55:49 -0000	1.344.2.6
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.344.2.5 2010/10/02 02:55:44 wkpark Exp $
  +// $Id: wikilib.php,v 1.344.2.6 2010/10/05 22:55:49 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1121,7 +1121,7 @@
   JS;
       if (!$DBInfo->hasPage($options['page'])) print $js;
       else {
  -      $pi=$formatter->get_instructions($dum);
  +      $pi=$formatter->page->get_instructions($dum);
         if (in_array($pi['#format'],array('wiki','monimarkup')) )
   	print $js;
       }
  @@ -1708,7 +1708,7 @@
     } else {
       $mtime = $formatter->page->mtime();
       $lastmod = gmdate('D, d M Y H:i:s \G\M\T', $mtime);
  -    $etag = md5($lastmod);
  +    $etag = $formatter->page->etag();
       if (strstr($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') and function_exists('ob_gzhandler')) {
         $gzip_mode = 1;
         $etag.= '.gzip'; // is it correct?
  @@ -2524,6 +2524,10 @@
       }
     }
   
  +  if ($mode != 'js') $formatter->_dynamic_macros['RandomPage'] = 1;
  +  if ($formatter->_macrocache and empty($options['call']) and $mode != 'js')
  +    return $formatter->macro_cache_repl('RandomPage', $value);
  +
     if ($count <= 0) $count=1;
     $counter= $count;
   
  @@ -2738,6 +2742,10 @@
   function macro_UserPreferences($formatter,$value,$options='') {
     global $DBInfo;
   
  +  $formatter->_dynamic_macros['UserPreferences'] = 1;
  +  if ($formatter->_macrocache and empty($options['call']))
  +    return $formatter->macro_cache_repl('UserPreferences', $value);
  +
     $use_any=0;
     if (!empty($DBInfo->use_textbrowsers)) {
       if (is_string($DBInfo->use_textbrowsers))
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.4.8.1   +21 -1     moniwiki/local/ajax.js
  
  Index: ajax.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/ajax.js,v
  retrieving revision 1.4
  retrieving revision 1.4.8.1
  diff -u -r1.4 -r1.4.8.1
  --- ajax.js	17 Dec 2008 12:33:41 -0000	1.4
  +++ ajax.js	5 Oct 2010 22:55:50 -0000	1.4.8.1
  @@ -200,4 +200,24 @@
     }
   }
   
  -// vim:et:sts=2:
  +function json_encode(input) {
  +  if (!input) return 'null';
  +  switch (input.constructor) {
  +    case String: return '"' + input + '"';
  +    case Number: return input.toString();
  +    case Array:
  +      var buf = [];
  +      for (i in input)
  +        buf.push(json_encode(input[i]));
  +          return '[' + buf.join(', ') + ']';
  +    case Object:
  +      var buf = [];
  +      for (k in input)
  +        buf.push(k + ' : ' + json_encode(input[k]));
  +          return '{ ' + buf.join(', ') + '} ';
  +    default:
  +      return 'null';
  +  }
  +}
  +
  +// vim:et:sts=2:sw=2:
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.24.2.3  +3 -3      moniwiki/plugin/Diff.php
  
  Index: Diff.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Diff.php,v
  retrieving revision 1.24.2.2
  retrieving revision 1.24.2.3
  diff -u -r1.24.2.2 -r1.24.2.3
  --- Diff.php	2 Oct 2010 02:55:44 -0000	1.24.2.2
  +++ Diff.php	5 Oct 2010 22:55:50 -0000	1.24.2.3
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a diff plugin for the MoniWiki
   //
  -// $Id: Diff.php,v 1.24.2.2 2010/10/02 02:55:44 wkpark Exp $
  +// $Id: Diff.php,v 1.24.2.3 2010/10/05 22:55:50 wkpark Exp $
   
   
   function code_diff($diff, $options = array()) {
  @@ -353,7 +353,7 @@
   
     $option='';
   
  -  $pi=$formatter->get_instructions($dum);
  +  $pi=$formatter->page->get_instructions();
     $formatter->pi=$pi;
   
     $processor_type=$pi['#format'];
  @@ -413,7 +413,7 @@
   
     if (!$rev1 && !$rev2) {
       $msg= _("No older revisions available");
  -    if ($options['nomsg']) return '';
  +    if (!empty($options['nomsg'])) return '';
       return "<h2>$msg</h2>";
     }
     if (!$DBInfo->version_class) {
  
  
  
  1.37.2.1  +3 -3      moniwiki/plugin/Keywords.php
  
  Index: Keywords.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Keywords.php,v
  retrieving revision 1.37
  retrieving revision 1.37.2.1
  diff -u -r1.37 -r1.37.2.1
  --- Keywords.php	23 Aug 2010 15:14:10 -0000	1.37
  +++ Keywords.php	5 Oct 2010 22:55:50 -0000	1.37.2.1
  @@ -8,12 +8,12 @@
   // Name: a Keywords Plugin
   // Description: a Keywords plugin to generate keywords of a page
   // URL: MoniWiki:KeywordsPlugin
  -// Version: $Revision: 1.37 $
  +// Version: $Revision: 1.37.2.1 $
   // License: GPL
   //
   // Usage: [[Keywords(options)]]
   //
  -// $Id: Keywords.php,v 1.37 2010/08/23 15:14:10 wkpark Exp $
  +// $Id: Keywords.php,v 1.37.2.1 2010/10/05 22:55:50 wkpark Exp $
   
   define('LOCAL_KEYWORDS','LocalKeywords');
   define('MAX_FONT_SZ',24);
  @@ -655,7 +655,7 @@
           if (!empty($DBInfo->use_keywords) or !empty($options['update'])) {
               # auto update the page with selected keywords.
               $body=$formatter->page->get_raw_body();
  -            $pi=$formatter->get_instructions($dum);
  +            $pi=$formatter->page->get_instructions($dum);
               if (!empty($pi['#keywords'])) {
                   $tag=preg_quote($pi['#keywords']);
                   $nbody= preg_replace('/^#keywords\s+'.$tag.'/',
  
  
  
  1.9.2.1   +3 -3      moniwiki/plugin/Rating.php
  
  Index: Rating.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Rating.php,v
  retrieving revision 1.9
  retrieving revision 1.9.2.1
  diff -u -r1.9 -r1.9.2.1
  --- Rating.php	23 Aug 2010 15:14:10 -0000	1.9
  +++ Rating.php	5 Oct 2010 22:55:50 -0000	1.9.2.1
  @@ -7,12 +7,12 @@
   // Name: Rating
   // Description: Rating Plugin
   // URL: MoniWiki:RatingPlugin
  -// Version: $Revision: 1.9 $
  +// Version: $Revision: 1.9.2.1 $
   // License: GPL
   //
   // Usage: [[Rating(totalscore,count)]] or [[Rating(initial score)]]
   //
  -// $Id: Rating.php,v 1.9 2010/08/23 15:14:10 wkpark Exp $
  +// $Id: Rating.php,v 1.9.2.1 2010/10/05 22:55:50 wkpark Exp $
   
   function macro_Rating($formatter,$value='',$options=array()) {
       global $Config;
  @@ -165,7 +165,7 @@
       if (empty($matched)) {
           if (!empty($DBInfo->use_rating)) {
               $dum='';
  -            $pi=$formatter->get_instructions($dum);
  +            $pi=$formatter->page->get_instructions($dum);
               $old = !empty($pi['#rating']) ? $pi['#rating'] : '';
               $new='#rating '.$total.','.$count;
               if ($old) {
  
  
  
  1.51.2.3  +291 -60   moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.51.2.2
  retrieving revision 1.51.2.3
  diff -u -r1.51.2.2 -r1.51.2.3
  --- RecentChanges.php	22 Sep 2010 16:05:15 -0000	1.51.2.2
  +++ RecentChanges.php	5 Oct 2010 22:55:50 -0000	1.51.2.3
  @@ -7,10 +7,10 @@
   // Name: RecentChanges
   // Description: Show RecentChanges of the Wiki
   // URL: MoniWiki:RecentChangesPlugin
  -// Version: $Revision: 1.51.2.2 $
  +// Version: $Revision: 1.51.2.3 $
   // Depend: 1.1.3
   // License: GPL
  -// $Id: RecentChanges.php,v 1.51.2.2 2010/09/22 16:05:15 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.51.2.3 2010/10/05 22:55:50 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     global $DBInfo;
  @@ -45,6 +45,89 @@
     return;
   }
   
  +/**
  + * get updated info
  + *
  + */
  +
  +function ajax_RecentChanges($formatter, $options = array()) {
  +  global $DBInfo;
  +
  +  if (empty($options['value'])) {
  +    echo '[]';
  +    return;
  +  }
  +  $checknew = 0;
  +  $checkchange = 0;
  +  if (!empty($options['new'])) $checknew = 1;
  +  if (!empty($options['change'])) $checkchange = 1;
  +
  +  require_once('lib/JSON.php');
  +  $json = new Services_JSON();
  +  $rclist = $json->decode($options['value']);
  +  if (!is_array($rclist)) {
  +    echo '[]';
  +    return;
  +  }
  +
  +  // get bookmark parameter and call bookmark macro
  +  if (!empty($options['time'])) {
  +    if (is_numeric($options['time']) and $options['time'] > 0) {
  +      $formatter->macro_repl('Bookmark', '', $options);
  +      //$bookmark = $options['time'];
  +    }
  +  }
  +
  +  $u = $DBInfo->user; # retrive user info
  +
  +  if ($u->id != 'Anonymous') {
  +    $bookmark = !empty($u->info['bookmark']) ? $u->info['bookmark'] : '';
  +  } else {
  +    $bookmark = $u->bookmark;
  +  }
  +  $tz_offset=$formatter->tz_offset;
  +
  +  $info = array();
  +  foreach ($rclist as $page_name) {
  +    $p= new WikiPage($page_name);
  +    if (!$p->exists()) continue; // XXX
  +
  +    $ed_time = $p->mtime();
  +    if ($ed_time <= $bookmark) break;
  +
  +    $info[$page_name]['state'] = 'updated';
  +
  +    $add = 0;
  +    $del = 0;
  +
  +    if ($checknew) {
  +      $v= $p->get_rev($bookmark);
  +      if (empty($v)) {
  +        $info[$page_name]['state'] = 'new';
  +        $add+= $p->lines();
  +      }
  +    }
  +
  +    if ($checkchange) {
  +      $infos = $p->get_info('>'.$bookmark);
  +      foreach ($infos as $inf) {
  +        $tmp = explode(' ', trim($inf[1]));
  +        if (isset($tmp[1])) {
  +          $add+= $tmp[0];
  +          $del+= $tmp[1];
  +        }
  +      }
  +
  +      $info[$page_name]['add'] = $add;
  +      $info[$page_name]['del'] = $del;
  +    }
  +  }
  +  $info['__-_-bookmark-_-__'] = $bookmark;
  +
  +  echo $json->encode($info);
  +  return;
  +}
  +
   function _timesago($timestamp, $date_fmt='Y-m-d', $tz_offset = 0) {
   	// FIXME use $sys_datafmt ?
   	$time_current = time();
  @@ -100,8 +183,11 @@
       $date_fmt=$args[0];
   
     $strimwidth = isset($DBInfo->rc_strimwidth) ? $DBInfo->rc_strimwidth : 20;
  +  // use javascript
  +  $use_js = 0;
     // show last edit entry only
     $last_entry_only = 1;
  +  $last_entry_check = 60*60*24;
     // show last editor only
     $last_editor_only = 1;
     // show editrange like as MoinMoin
  @@ -155,10 +241,18 @@
         else if ($arg=="allusers") $last_editor_only = 0;
         else if ($arg=="allentries") $last_entry_only = 0;
         else if ($arg=="avatar") $use_avatar = 1;
  +      else if ($arg=="js") $use_js = 1;
         else if (in_array($arg, array('simple', 'moztab', 'board', 'table'))) $rctype = $arg;
       }
     }
   
  +  // set as dynamic macro or not.
  +  if (empty($use_js))
  +    $formatter->_dynamic_macros['RecentChanges'] = 1;
  +  if ($formatter->_macrocache and empty($options['call']) and empty($use_js))
  +    return $formatter->macro_cache_repl('RecentChanges', $value);
  +
  +  // reset some conflict params
     if (empty($DBInfo->use_counter))
       $use_hits = 0;
     if (empty($DBInfo->show_hosts))
  @@ -230,13 +324,10 @@
   
     if ($u->id != 'Anonymous') {
       $bookmark= !empty($u->info['bookmark']) ? $u->info['bookmark'] : '';
  -    $tz_offset= !empty($u->info['tz_offset']) ? $u->info['tz_offset'] : '';
     } else {
       $bookmark= $u->bookmark;
     }
  -  if (empty($tz_offset)) {
  -    $tz_offset=date("Z");
  -  }
  +  $tz_offset=$formatter->tz_offset;
   
     if (!$bookmark or !empty($nobookmark)) {
       if (!empty($checknew) and preg_match('/^\d+(\s*\*\s*\d+)*$/',$checknew))
  @@ -293,26 +384,35 @@
       //  $ratchet_day = $day;
       //}
   
  -    if (!empty($editcount[$day][$page_key])) {
  -      $editors[$day][$page_key][] = $user;
  -      $editcount[$day][$page_key]++;
  +    if ($last_entry_only and !empty($last_entry_check)) {
  +      if (!empty($lastmod[$page_key]) and $lastmod[$page_key] < $ed_time + $last_entry_check) {
  +        $edit_day = gmdate('Ymd', $lastmod[$page_key] + $tz_offset);
  +        $editors[$page_key][$edit_day][] = $user;
  +        $editcount[$page_key][$edit_day]++;
  +        continue;
  +      }
  +    } else if (!empty($editcount[$page_key][$day])) {
  +      $editors[$page_key][$day][] = $user;
  +      $editcount[$page_key][$day]++;
         continue;
       }
  -    if (empty($editcount[$day])) {
  -      $editcount[$day] = array();
  -      $editors[$day] = array();
  +    if (empty($editcount[$page_key])) {
  +      $editcount[$page_key] = array();
  +      $editors[$page_key] = array();
       }
   
  -    $editcount[$day][$page_key]= 1;
  +    $editcount[$page_key][$day]= 1;
   
  -    $editors[$day][$page_key] = array();
  -    $editors[$day][$page_key][] = $user;
  +    $editors[$page_key][$day] = array();
  +    $editors[$page_key][$day][] = $user;
  +    $lastmod[$page_key] = $ed_time;
     }
   
     $out="";
     $ratchet_day= FALSE;
     $br="";
     $ii = 0;
  +  $rc_list = array();
     foreach ($lines as $line) {
       $parts= explode("\t", $line);
       $page_key=$parts[0];
  @@ -357,6 +457,9 @@
         }
       }
   
  +    $jsattr = '';
  +    if (!empty($use_js))
  +      $jsattr = ' onclick="update_bookmark('.$ed_time.');return false;"';
       $bmark = '';
       if ($day != $ratchet_day) {
         $ratchet_day = $day;
  @@ -371,70 +474,77 @@
           if (empty($nobookmark))
             $out.="<span class='rc-bookmark' style='font-size:small'>[".
               $formatter->link_tag($formatter->page->urlname, $bookmark_action ."&amp;time=$ed_time".$daysago,
  -            _("set bookmark"))."]</span>\n";
  +            _("set bookmark"), $jsattr)."]</span>\n";
           $br="<br />";
           $out.='</span>'.$perma.'<br />'.$bra;
           $cat0=$cat;
         } else {
  -        $bmark=$formatter->link_to($bookmark_action ."&amp;time=$ed_time".$daysago,_("Bookmark"), 'class="button-small"');
  +        $bmark=$formatter->link_to($bookmark_action ."&amp;time=$ed_time".$daysago,_("Bookmark"),
  +          $jsattr.' class="button-small"');
         }
       }
       if (empty($use_day) and empty($nobookmark)) {
  -      $date=$formatter->link_to($bookmark_action ."&amp;time=$ed_time".$daysago,$date);
  +      $date=$formatter->link_to($bookmark_action ."&amp;time=$ed_time".$daysago,$date, $jsattr);
       }
   
       $pageurl=_rawurlencode($page_name);
   
  -    #print $ed_time."/".$bookmark."//";
  +    // print $ed_time."/".$bookmark."//";
       $diff = '';
       $updated = '';
  -    if (!$DBInfo->hasPage($page_name))
  +    if (!$DBInfo->hasPage($page_name)) {
         $icon= $formatter->link_tag($pageurl,"?action=info",$formatter->icon['del']);
  -    else if ($ed_time > $bookmark) {
  -      $icon= $formatter->link_tag($pageurl,"?action=diff&amp;date=$bookmark",$formatter->icon['diff']);
  -      $updated= ' '.$formatter->link_tag($pageurl,"?action=diff&amp;date=$bookmark",$formatter->icon['updated']);
  -
  -      if ($checknew or $checkchange)
  -        $p= new WikiPage($page_name);
  -
  -      $add = 0;
  -      $del = 0;
  -      if ($checknew) {
  -        $v= $p->get_rev($bookmark);
  -        if (empty($v)) {
  -          $icon=
  -            $formatter->link_tag($pageurl,"?action=info",$formatter->icon['show']);
  -          $updated = ' '.$formatter->link_tag($pageurl,"?action=info",$formatter->icon['new']);
  -          $add+= $p->lines();
  -        }
  -      }
  -      if ($checkchange) {
  -        $infos = $p->get_info('>'.$bookmark);
  -        foreach ($infos as $inf) {
  -          $tmp = explode(' ', trim($inf[1]));
  -          if (isset($tmp[1])) {
  -            $add+= $tmp[0];
  -            $del+= $tmp[1];
  +      if (!empty($use_js))
  +        $rc_list[] = $page_name;
  +    } else {
  +      $icon= $formatter->link_tag($pageurl,"?action=diff",$formatter->icon['diff'], " id='icon-$ii'");
  +
  +      if (empty($use_js) and $ed_time > $bookmark) {
  +        $icon= $formatter->link_tag($pageurl,"?action=diff&amp;date=$bookmark",$formatter->icon['diff']);
  +        $updated= ' '.$formatter->link_tag($pageurl,"?action=diff&amp;date=$bookmark",$formatter->icon['updated']);
  +
  +        if ($checknew or $checkchange)
  +          $p= new WikiPage($page_name);
  +
  +        $add = 0;
  +        $del = 0;
  +        if ($checknew) {
  +          $v= $p->get_rev($bookmark);
  +          if (empty($v)) {
  +            $icon=
  +              $formatter->link_tag($pageurl,"?action=info",$formatter->icon['show']);
  +            $updated = ' '.$formatter->link_tag($pageurl,"?action=info",$formatter->icon['new']);
  +            $add+= $p->lines();
             }
           }
  +        if ($checkchange) {
  +          $infos = $p->get_info('>'.$bookmark);
  +          foreach ($infos as $inf) {
  +            $tmp = explode(' ', trim($inf[1]));
  +            if (isset($tmp[1])) {
  +              $add+= $tmp[0];
  +              $del+= $tmp[1];
  +            }
  +          }
   
  -        if (!empty($add))
  -          $diff.= '<span class="diff-added">+'.$add.'</span>';
  -        if (!empty($del))
  -          $diff.= '<span class="diff-removed">'.$del.'</span>';
  +          if (!empty($add))
  +            $diff.= '<span class="diff-added">+'.$add.'</span>';
  +          if (!empty($del))
  +            $diff.= '<span class="diff-removed">'.$del.'</span>';
  +        }
  +      } else if (!empty($use_js)) {
  +        $rc_list[] = $page_name;
         }
  -
  -    } else
  -      $icon= $formatter->link_tag($pageurl,"?action=diff",$formatter->icon['diff']);
  +    }
   
       #$title= preg_replace("/((?<=[a-z0-9])[A-Z][a-z0-9])/"," \\1",$page_name);
       $title0= get_title($title).$group;
       $title0=htmlspecialchars($title0);
  -    $attr = '';
  +    $attr = " id='title-$ii'";
       if (!empty($strimwidth) and strlen(get_title($title)) > $strimwidth and function_exists('mb_strimwidth')) {
         $title0=mb_strimwidth($title0,0, $strimwidth,'...', $DBInfo->charset);
  -      $attr = ' title="'.$title.'"';
       }
  +    $attr.= ' title="'.$title.'"';
       $title= $formatter->link_tag($pageurl,"",$title0,$target.$attr);
   
       if (!empty($use_hits)) {
  @@ -446,14 +556,14 @@
   
         if ($last_editor_only) {
           // show last editor only
  -        $editor = array_pop($editors[$day][$page_key]);
  +        $editor = array_pop($editors[$page_key][$day]);
         } else {
           // all show all authors
           // count edit number
           // make range list
           if ($use_editrange) { // MoinMoin like edit range
             $editor_list = array();
  -          foreach ($editors[$day][$page_key] as $idx=>$name) {
  +          foreach ($editors[$page_key][$day] as $idx=>$name) {
               if (empty($editor_list[$name])) $editor_list[$name] = array();
               $editor_list[$name][] = $idx + 1;
             }
  @@ -482,7 +592,7 @@
               }
             }
           } else {
  -          $editor_counts = array_count_values($editors[$day][$page_key]);
  +          $editor_counts = array_count_values($editors[$page_key][$day]);
           }
           $editor = array_keys($editor_counts);
         }
  @@ -547,8 +657,10 @@
         $user = '&nbsp;';
       }
       $count=""; $extra="";
  -    if ($editcount[$day][$page_key] > 1)
  -      $count=sprintf(_("%s changes"), " <span class='num'>".$editcount[$day][$page_key]."</span>");
  +    if ($editcount[$page_key][$day] > 1)
  +      $count = '<span id="change-'.$ii.'">'.sprintf(_("%s changes"), " <span class='num'>".$editcount[$page_key][$day]."</span>").'</span>';
  +    else
  +      $count = '<span id="change-'.$ii.'"></span>';
       if (!empty($comment) && !empty($log))
         $extra="&nbsp; &nbsp; &nbsp; <small name='word-break'>$log</small>";
   
  @@ -564,7 +676,126 @@
       $logs[$page_key][$day] = 1;
       ++$ii;
     }
  -  return $btnlist.'<div class="recentChanges">'.$rctitle.$template_bra.$out.$template_cat.$cat0.'</div>';
  +
  +  $js = '';
  +  if (!empty($rc_list)) {
  +    require_once('lib/JSON.php');
  +    $json = new Services_JSON();
  +
  +    $icon_new = $formatter->icon['new'];
  +    $icon_updated = $formatter->icon['updated'];
  +    $icon_show = $formatter->icon['show'];
  +    $icon_diff = $formatter->icon['diff'];
  +
  +    $js = "<script type='text/javascript'>\nvar rclist =";
  +    $ext = array();
  +    if (!empty($checknew)) $ext[] = 'new=1';
  +    if (!empty($checkchange)) $ext[] = 'change=1';
  +    $arg = implode('&', $ext);
  +    $url = $formatter->link_url('RecentChanges', "?action=recentchanges/ajax" . ($arg ? '&'.$arg : ''). "&value=");
  +    $js.= $json->encode($rc_list).";\n";
  +    $js.= <<<EOF
  +function update_bookmark(time) {
  +    var url = "$url";
  +    if (rclist.length) {
  +      var timetag;
  +      if (typeof time == 'undefined') timetag = '';
  +      else timetag = 'time=' + time + '&';
  +
  +      // url = url.replace(/value=/, timetag + 'value=' + encodeURIComponent(JSON.stringify(rclist)));
  +      url = url.replace(/value=/, timetag + 'value=' + encodeURIComponent(json_encode(rclist)));
  +      var txt = HTTPGet(url);
  +      var ret;
  +      if (txt == null) return;
  +
  +      var icon_new = "$icon_new";
  +      var icon_updated = "$icon_updated";
  +      var icon_show = "$icon_show";
  +      var icon_diff = "$icon_diff";
  +
  +      ret = window["eval"]("(" + txt + ")");
  +      var bookmark = ret['__-_-bookmark-_-__'];
  +      var jj = 0;
  +      for (var ii = 0; ii < rclist.length; ii++) {
  +        var item = document.getElementById('title-' + ii);
  +        var title = item.getAttribute('title');
  +        if (rclist[ii] != title) {
  +          var re = new RegExp("^.*" + url_prefix + '/');
  +          title = decodeURIComponent(item.href.replace(re, ''));
  +        }
  +        if (rclist[ii] == title && ret[title]) {
  +          var icon = document.getElementById('icon-' + ii);
  +          var state = document.createElement('SPAN');
  +          if (ret[title]['state'] == 'new') {
  +            state.innerHTML = icon_new;
  +            icon.href = icon.href.replace(/action=(diff|info)(&bookmark=\d+)?/, 'action=info');
  +            icon.innerHTML = icon_show;
  +          } else {
  +            state.innerHTML = icon_updated;
  +            icon.href = icon.href.replace(/action=(diff|info)(&bookmark=\d+)?/, 'action=diff&bookmark=' + bookmark);
  +            icon.innerHTML = icon_diff;
  +          }
  +
  +          // remove previous icon
  +          if (item.firstChild.nextSibling)
  +            item.removeChild(item.firstChild.nextSibling);
  +          item.appendChild(state); // add updated / new icon
  +
  +          var change = document.getElementById('change-' + ii);
  +          if (!change) continue;
  +
  +          // remove previous diff info
  +          if (change.lastChild && change.lastChild.tagName == 'SPAN')
  +            change.removeChild(change.lastChild);
  +
  +          // add diff info
  +          var diff = document.createElement('SPAN');
  +          if (ret[title]['add']) {
  +            var add = document.createElement('SPAN');
  +            add.setAttribute('class', 'diff-added');
  +            var txt = document.createTextNode('+' + ret[title]['add']);
  +            add.appendChild(txt);
  +            diff.appendChild(add);
  +          }
  +          if (ret[title]['del']) {
  +            var del = document.createElement('SPAN');
  +            del.setAttribute('class', 'diff-removed');
  +            var txt = document.createTextNode(ret[title]['del']);
  +            del.appendChild(txt);
  +            diff.appendChild(del);
  +          }
  +          change.appendChild(diff);  
  +        } else {
  +          if (item.firstChild.nextSibling)
  +            item.removeChild(item.firstChild.nextSibling);
  +
  +          var change = document.getElementById('change-' + ii);
  +          if (!change) continue;
  +
  +          // remove diff info
  +          if (change.lastChild && change.lastChild.tagName == 'SPAN')
  +            change.removeChild(change.lastChild);
  +
  +          // recover diff icon and link
  +          var icon = document.getElementById('icon-' + ii);
  +          if (icon && icon.firstChild) {
  +            if (icon.firstChild.getAttribute('alt') != 'D') {
  +              icon.innerHTML = icon_diff;
  +            }
  +            // recover link
  +            icon.href = icon.href.replace(/action=(diff|info)(&bookmark=\d+)?/, 'action=diff');
  +          }
  +        }
  +      }
  +    }
  +}
  +update_bookmark();
  +</script>
  +EOF;
  +
  +  }
  +
  +  return $btnlist.'<div class="recentChanges">'.$rctitle.$template_bra.$out.$template_cat.$cat0.'</div>'.$js;
   }
   // vim:et:sts=2:sw=2:
   ?>
  
  
  
  1.6.10.1  +2 -2      moniwiki/plugin/WantedPages.php
  
  Index: WantedPages.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/WantedPages.php,v
  retrieving revision 1.6
  retrieving revision 1.6.10.1
  diff -u -r1.6 -r1.6.10.1
  --- WantedPages.php	18 Jul 2006 15:10:27 -0000	1.6
  +++ WantedPages.php	5 Oct 2010 22:55:50 -0000	1.6.10.1
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a WantedPages macro plugin for the MoniWiki
   //
  -// $Id: WantedPages.php,v 1.6 2006/07/18 15:10:27 wkpark Exp $
  +// $Id: WantedPages.php,v 1.6.10.1 2010/10/05 22:55:50 wkpark Exp $
   
   function macro_WantedPages($formatter,$value='') {
     global $DBInfo;
  @@ -19,7 +19,7 @@
       $dum='';
       $p= new WikiPage($page);
       $f= new Formatter($p);
  -    $pi=$f->get_instructions($dum);
  +    $pi=$f->page->get_instructions($dum);
       if ($pi['#format']!='') continue;
       $links=$f->get_pagelinks();
       if ($links) {
  
  
  
  1.6.8.1   +2 -2      moniwiki/plugin/format.php
  
  Index: format.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/format.php,v
  retrieving revision 1.6
  retrieving revision 1.6.8.1
  diff -u -r1.6 -r1.6.8.1
  --- format.php	10 Dec 2008 10:00:57 -0000	1.6
  +++ format.php	5 Oct 2010 22:55:50 -0000	1.6.8.1
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a format plugin to connect with processors for the MoniWiki
   //
  -// $Id: format.php,v 1.6 2008/12/10 10:00:57 wkpark Exp $
  +// $Id: format.php,v 1.6.8.1 2010/10/05 22:55:50 wkpark Exp $
   
   function do_format($formatter,$options) {
     $mimes=array('text/plain'=>'html','text/xml'=>'text_xml');
  @@ -11,7 +11,7 @@
     $proc=!empty($options['proc']) ? $options['proc']:'';
     if (!$mimetype) $mimetype='text/plain';
   
  -  $pi=$formatter->get_instructions($dummy);
  +  $pi=$formatter->page->get_instructions($dummy);
     if (!$formatter->wordrule) $formatter->set_wordrule($pi);
     if ($pi['#format']=='xsltproc') {
       $options['title']= _("It is a XML format !");
  
  
  
  1.8.2.1   +2 -2      moniwiki/plugin/print.php
  
  Index: print.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/print.php,v
  retrieving revision 1.8
  retrieving revision 1.8.2.1
  diff -u -r1.8 -r1.8.2.1
  --- print.php	10 Aug 2010 18:08:32 -0000	1.8
  +++ print.php	5 Oct 2010 22:55:50 -0000	1.8.2.1
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a print action plugin for the MoniWiki
   //
  -// $Id: print.php,v 1.8 2010/08/10 18:08:32 wkpark Exp $
  +// $Id: print.php,v 1.8.2.1 2010/10/05 22:55:50 wkpark Exp $
   
   function do_print($formatter,$options) {
     global $DBInfo;
  @@ -12,7 +12,7 @@
     $formatter->nonexists='always';
   
     $dum = false;
  -  $formatter->pi = $formatter->get_instructions($dum);
  +  $formatter->pi = $formatter->page->get_instructions($dum);
     $title = $formatter->pi['#title'];
   
     $formatter->send_header("",$options);
  
  
  


1286325948;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv31658\n\nModified Files:\n	wikilib.php \nLog Message:\n[#315577] fixed recursive regexp\n\n
wkpark      2010/10/06 09:45:49

  Modified:    .        wikilib.php
  Log:
  [#315577] fixed recursive regexp
  
  Revision  Changes    Path
  1.369     +3 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.368
  retrieving revision 1.369
  diff -u -r1.368 -r1.369
  --- wikilib.php	5 Oct 2010 22:28:54 -0000	1.368
  +++ wikilib.php	6 Oct 2010 00:45:48 -0000	1.369
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.368 2010/10/05 22:28:54 wkpark Exp $
  +// $Id: wikilib.php,v 1.369 2010/10/06 00:45:48 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -1166,7 +1166,7 @@
               {[^{}]+}(?!})|
               (?<!{){{1,2}(?!{)|
               (?<!})}{1,2}(?!}))|(?1)
  -            )+}}})/x", $body, -1, PREG_SPLIT_DELIM_CAPTURE);
  +            )++}}})/x", $body, -1, PREG_SPLIT_DELIM_CAPTURE);
   
     // fix for inline {{{foobar}}} in the headings.
     $chunks = array();
  @@ -3402,7 +3402,7 @@
               {[^{}]+}(?!})|
               (?<!{){{1,2}(?!{)|
               (?<!})}{1,2}(?!}))|(?1)
  -            )+}}})/x", $body, -1, PREG_SPLIT_DELIM_CAPTURE);
  +            )++}}})/x", $body, -1, PREG_SPLIT_DELIM_CAPTURE);
    $sz = count($chunk);
    $k = 1;
    $body = '';
  
  
  


1286326801;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv32569\n\nModified Files:\n	wiki.php \nLog Message:\n[#315677] fixed last change of r1.634\n\n
wkpark      2010/10/06 10:00:02

  Modified:    .        wiki.php
  Log:
  [#315677] fixed last change of r1.634
  
  Revision  Changes    Path
  1.636     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.635
  retrieving revision 1.636
  diff -u -r1.635 -r1.636
  --- wiki.php	5 Oct 2010 22:28:54 -0000	1.635
  +++ wiki.php	6 Oct 2010 01:00:01 -0000	1.636
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.635 2010/10/05 22:28:54 wkpark Exp $
  +// $Id: wiki.php,v 1.636 2010/10/06 01:00:01 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.635 $',1,-1);
  +$_revision = substr('$Revision: 1.636 $',1,-1);
   $_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -4862,7 +4862,7 @@
       str[j] = "<a href='" + url_prefix + query_prefix + url + "'>" + txt + "</a>";
       j++;
     }
  -  str[j] = decodeURIComponent(escape("$pagename")).replace(/\\+/g, " ");
  +  str[j] = "$pagename";
     document.write(str.join("<span class='separator'>$DBInfo->arrow</span>"));
   })();
   </script>
  
  
  


1286489891;wkpark;Update of /cvsroot/moniwiki/moniwiki/local\nIn directory kill.kldp.net:/tmp/cvs-serv1395/local\n\nModified Files:\n	ajax.js \nLog Message:\n[#315749] update timesago correctly\n\n
1286489891;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv1395/plugin\n\nModified Files:\n	RecentChanges.php \nLog Message:\n[#315749] update timesago correctly\n\n
wkpark      2010/10/08 07:18:13

  Modified:    local    ajax.js
               plugin   RecentChanges.php
  Log:
  [#315749] update timesago correctly
  
  Revision  Changes    Path
  1.6       +22 -0     moniwiki/local/ajax.js
  
  Index: ajax.js
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/local/ajax.js,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ajax.js	2 Oct 2010 10:34:04 -0000	1.5
  +++ ajax.js	7 Oct 2010 22:18:11 -0000	1.6
  @@ -220,4 +220,26 @@
     }
   }
   
  +function timesago(timestamp, date_fmt, tz_offset) {
  +  var now = new Date();
  +  var current = now.getTime() + '';
  +  time_current = parseInt(current.substr(0, 10));
  +
  +  var diff = time_current - parseInt(timestamp);
  +
  +  if (diff < 0) {
  +    return null;
  +  }
  +  if (diff < 60*60 || diff < 0) {
  +    ago = _("%d minute ago").replace(/%d/, parseInt(diff / 60 + 0.5));
  +  } else if ( diff < 60*60*24) {
  +    ago = _("%d hours ago").replace(/%d/, parseInt(diff / 60 / 60 + 0.5));
  +  } else if ( diff < 60*60*24*7*2) {
  +    ago = _("%d days ago").replace(/%d/, parseInt(diff / 60 / 60 / 24 + 0.5));
  +  } else {
  +    ago = null;
  +  }
  +  return ago;
  +}
  +
   // vim:et:sts=2:sw=2:
  
  
  
  1.60      +25 -8     moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.59
  retrieving revision 1.60
  diff -u -r1.59 -r1.60
  --- RecentChanges.php	5 Oct 2010 22:28:54 -0000	1.59
  +++ RecentChanges.php	7 Oct 2010 22:18:11 -0000	1.60
  @@ -7,10 +7,10 @@
   // Name: RecentChanges
   // Description: Show RecentChanges of the Wiki
   // URL: MoniWiki:RecentChangesPlugin
  -// Version: $Revision: 1.59 $
  +// Version: $Revision: 1.60 $
   // Depend: 1.1.3
   // License: GPL
  -// $Id: RecentChanges.php,v 1.59 2010/10/05 22:28:54 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.60 2010/10/07 22:18:11 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     global $DBInfo;
  @@ -484,7 +484,7 @@
         }
       }
       if (empty($use_day) and empty($nobookmark)) {
  -      $date=$formatter->link_to($bookmark_action ."&amp;time=$ed_time".$daysago,$date, $jsattr);
  +      $date=$formatter->link_to($bookmark_action ."&amp;time=$ed_time".$daysago,$date, ' id="time-'.$ii.'" '.$jsattr);
       }
   
       $pageurl=_rawurlencode($page_name);
  @@ -492,7 +492,10 @@
       // print $ed_time."/".$bookmark."//";
       $diff = '';
       $updated = '';
  -    if (!$DBInfo->hasPage($page_name)) {
  +
  +    if ($act == 'UPLOAD') {
  +      $icon= $formatter->link_tag($pageurl,"?action=uploadedfiles",$formatter->icon['attach']);
  +    } else if (!$DBInfo->hasPage($page_name)) {
         $icon= $formatter->link_tag($pageurl,"?action=info",$formatter->icon['del']);
         if (!empty($use_js))
           $rc_list[] = $page_name;
  @@ -717,13 +720,25 @@
         var bookmark = ret['__-_-bookmark-_-__'];
         var jj = 0;
         for (var ii = 0; ii < rclist.length; ii++) {
  +        // update time
  +        var time = document.getElementById('time-' + ii);
  +        var tstr = time.firstChild.innerText;
  +        var d0 = Date.parse(tstr); // test
  +        if (isNaN(d0)) {
  +          // recalc time string
  +          var timestamp = time.href.match(/time=(\d+)/);
  +          tstr = timesago(timestamp[1], "$date_fmt", $tz_offset);
  +          if (tstr != null)
  +            time.firstChild.innerText = tstr;
  +        }
  +
           var item = document.getElementById('title-' + ii);
           var title = item.getAttribute('title');
  -        if (rclist[ii] != title) {
  +        if (rclist[jj] != title) {
             var re = new RegExp("^.*" + url_prefix + '/');
             title = decodeURIComponent(item.href.replace(re, ''));
           }
  -        if (rclist[ii] == title && ret[title]) {
  +        if (rclist[jj] == title && ret[title]) {
             var icon = document.getElementById('icon-' + ii);
             var state = document.createElement('SPAN');
             if (ret[title]['state'] == 'new') {
  @@ -764,7 +779,8 @@
               del.appendChild(txt);
               diff.appendChild(del);
             }
  -          change.appendChild(diff);  
  +          change.appendChild(diff);
  +          jj++;
           } else {
             if (item.firstChild.nextSibling)
               item.removeChild(item.firstChild.nextSibling);
  @@ -779,7 +795,8 @@
             // recover diff icon and link
             var icon = document.getElementById('icon-' + ii);
             if (icon && icon.firstChild) {
  -            if (icon.firstChild.getAttribute('alt') != 'D') {
  +            var alt = icon.firstChild.getAttribute('alt');
  +            if (alt != 'D' && alt != '@') {
                 icon.innerHTML = icon_diff;
               }
               // recover link
  
  
  


1286511694;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv21669/plugin\n\nModified Files:\n	RecentChanges.php \nLog Message:\n[#315749]\n * new "list" style added.\n * use HTTPPost() instead of HTTPGet()\n * fixed "simple" style to support "showhost" option\n\n
wkpark      2010/10/08 13:21:35

  Modified:    plugin   RecentChanges.php
  Log:
  [#315749]
   * new "list" style added.
   * use HTTPPost() instead of HTTPGet()
   * fixed "simple" style to support "showhost" option
  
  Revision  Changes    Path
  1.61      +91 -25    moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.60
  retrieving revision 1.61
  diff -u -r1.60 -r1.61
  --- RecentChanges.php	7 Oct 2010 22:18:11 -0000	1.60
  +++ RecentChanges.php	8 Oct 2010 04:21:34 -0000	1.61
  @@ -7,10 +7,10 @@
   // Name: RecentChanges
   // Description: Show RecentChanges of the Wiki
   // URL: MoniWiki:RecentChangesPlugin
  -// Version: $Revision: 1.60 $
  +// Version: $Revision: 1.61 $
   // Depend: 1.1.3
   // License: GPL
  -// $Id: RecentChanges.php,v 1.60 2010/10/07 22:18:11 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.61 2010/10/08 04:21:34 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     global $DBInfo;
  @@ -53,10 +53,21 @@
   function ajax_RecentChanges($formatter, $options = array()) {
     global $DBInfo;
   
  +  // list style
  +  if (!empty($options['type']) and $options['type'] == 'list') {
  +    $options['call'] = 1;
  +    $opt = 'list';
  +    if (!empty($options['item'])) $opt.=',item='.$options['item'];
  +    $out = macro_RecentChanges($formatter, $opt, $options);
  +    echo $out;
  +    return;
  +  }
  +
     if (empty($options['value'])) {
       echo '[]';
       return;
     }
  +
     $checknew = 0;
     $checkchange = 0;
     if (!empty($options['new'])) $checknew = 1;
  @@ -179,8 +190,8 @@
     $args=explode(',',$value);
   
     // first arg assumed to be a date fmt arg
  -  if (preg_match("/^[\s\/\-:aABdDFgGhHiIjmMOrSTY]+$/",$args[0]))
  -    $date_fmt=$args[0];
  +  if (preg_match("/^[\s\/\-:aABdDFgGhHiIjmMOrSTY\[\]]+$/",$args[0]))
  +    $my_date_fmt=$args[0];
   
     $strimwidth = isset($DBInfo->rc_strimwidth) ? $DBInfo->rc_strimwidth : 20;
     // use javascript
  @@ -217,6 +228,7 @@
         $v=trim(substr($arg,$p+1));
         if ($k=='item' or $k=='items') $opts['items']=min((int)$v,RC_MAX_ITEMS);
         else if ($k=='days') $days=min(abs($v),RC_MAX_DAYS);
  +      else if ($k=="datefmt") $my_date_fmt=$v;
         else if ($k=='ago') $opts['ago']=abs($v);
         else if ($k=="new") $checknew=$v;
         else if ($k=='strimwidth' and is_numeric($k) and (abs($v) > 15 or $v == 0))
  @@ -242,7 +254,7 @@
         else if ($arg=="allentries") $last_entry_only = 0;
         else if ($arg=="avatar") $use_avatar = 1;
         else if ($arg=="js") $use_js = 1;
  -      else if (in_array($arg, array('simple', 'moztab', 'board', 'table'))) $rctype = $arg;
  +      else if (in_array($arg, array('simple', 'moztab', 'board', 'table', 'list'))) $rctype = $arg;
       }
     }
   
  @@ -262,8 +274,18 @@
         if ($rctype=="simple") {
           $checkchange = 0;
           $use_day=0;
  -        $template=
  +        if ($showhost)
  +          $template=
     '$out.= "$icon&nbsp;&nbsp;$title @ $day $date by $user $count $extra<br />\n";';
  +        else
  +          $template=
  +  '$out.= "$icon&nbsp;&nbsp;$title @ $day $date $count $extra<br />\n";';
  +      } else if ($rctype=="list") {
  +        $rctitle='';
  +        $changed_time_fmt = !empty($my_date_fmt) ? $my_date_fmt : '[H:i]';
  +        $checkchange = 0;
  +        $use_day=0;
  +        $template= '$out.= "$date $title<br />\n";';
         } else if ($rctype=="moztab") {
           $use_day=1;
           $template= '$out.= "<li>$title $date</li>\n";';
  @@ -274,7 +296,7 @@
           $cat="</table>";
           $cat0="";
         } else if ($rctype=="board") {
  -        $changed_time_fmt = 'm-d [H:i]';
  +        $changed_time_fmt = !empty($my_date_fmt) ? $my_date_fmt : 'm-d [H:i]';
           $use_day=0;
           $template_bra="<table border='0' cellpadding='0' cellspacing='0' width='100%'>";
   
  @@ -413,6 +435,7 @@
     $br="";
     $ii = 0;
     $rc_list = array();
  +  $list = array();
     foreach ($lines as $line) {
       $parts= explode("\t", $line);
       $page_key=$parts[0];
  @@ -457,6 +480,30 @@
         }
       }
   
  +    $pageurl=_rawurlencode($page_name);
  +    // get title
  +    $title0= get_title($title).$group;
  +    $title0=htmlspecialchars($title0);
  +
  +    if ($list) $attr = '';
  +    else $attr = " id='title-$ii'";
  +    if (!empty($strimwidth) and strlen(get_title($title)) > $strimwidth and function_exists('mb_strimwidth')) {
  +      $title0=mb_strimwidth($title0,0, $strimwidth,'...', $DBInfo->charset);
  +    }
  +    $attr.= ' title="'.$title.'"';
  +    $title= $formatter->link_tag($pageurl,"",$title0,$target.$attr);
  +
  +    // simple list format
  +    if ($rctype == 'list') {
  +      if (empty($logs[$page_key]))
  +        $logs[$page_key] = array();
  +      $logs[$page_key][$day] = 1;
  +
  +      if (!$DBInfo->hasPage($page_name)) $act = 'DELETE';
  +      $list[$page_name] = array($title, $date, $act);
  +      continue;
  +    }
  +
       $jsattr = '';
       if (!empty($use_js))
         $jsattr = ' onclick="update_bookmark('.$ed_time.');return false;"';
  @@ -487,8 +534,6 @@
         $date=$formatter->link_to($bookmark_action ."&amp;time=$ed_time".$daysago,$date, ' id="time-'.$ii.'" '.$jsattr);
       }
   
  -    $pageurl=_rawurlencode($page_name);
  -
       // print $ed_time."/".$bookmark."//";
       $diff = '';
       $updated = '';
  @@ -540,16 +585,6 @@
         }
       }
   
  -    #$title= preg_replace("/((?<=[a-z0-9])[A-Z][a-z0-9])/"," \\1",$page_name);
  -    $title0= get_title($title).$group;
  -    $title0=htmlspecialchars($title0);
  -    $attr = " id='title-$ii'";
  -    if (!empty($strimwidth) and strlen(get_title($title)) > $strimwidth and function_exists('mb_strimwidth')) {
  -      $title0=mb_strimwidth($title0,0, $strimwidth,'...', $DBInfo->charset);
  -    }
  -    $attr.= ' title="'.$title.'"';
  -    $title= $formatter->link_tag($pageurl,"",$title0,$target.$attr);
  -
       if (!empty($use_hits)) {
         $hits = $DBInfo->counter->pageCounter($page_name);
       }
  @@ -695,7 +730,8 @@
       if (!empty($checknew)) $ext[] = 'new=1';
       if (!empty($checkchange)) $ext[] = 'change=1';
       $arg = implode('&', $ext);
  -    $url = $formatter->link_url('RecentChanges', "?action=recentchanges/ajax" . ($arg ? '&'.$arg : ''). "&value=");
  +    $url = qualifiedURL($formatter->link_url('RecentChanges')); // FIXME
  +    $postdata = "action=recentchanges/ajax" . ($arg ? '&'.$arg : '');
       $js.= $json->encode($rc_list).";\n";
       $js.= <<<EOF
   function update_bookmark(time) {
  @@ -703,11 +739,11 @@
       if (rclist.length) {
         var timetag;
         if (typeof time == 'undefined') timetag = '';
  -      else timetag = 'time=' + time + '&';
  +      else timetag = '&time=' + time;
   
  -      // url = url.replace(/value=/, timetag + 'value=' + encodeURIComponent(JSON.stringify(rclist)));
  -      url = url.replace(/value=/, timetag + 'value=' + encodeURIComponent(json_encode(rclist)));
  -      var txt = HTTPGet(url);
  +      var data = "$postdata";
  +      data += timetag + '&value=' + encodeURIComponent(json_encode(rclist));
  +      var txt = HTTPPost(url, data);
         var ret;
         if (txt == null) return;
   
  @@ -810,9 +846,39 @@
   </script>
   EOF;
   
  +  } else if (!empty($list)) {
  +    $out = '';
  +    foreach ($list as $k=>$v) {
  +      $out.= $v[1].' '.$v[0].'<br />';
  +    }
  +
  +    if (!empty($options['call'])) {
  +      return $out;
  +    }
  +  }
  +
  +  if (in_array($rctype, array('list', 'simple')) and $use_js) {
  +    static $rc_id = 1;
  +
  +    $rcid = ' id="rc'.$rc_id.'"';
  +    $rc_id++;
  +
  +    $extra = '';
  +    if (!empty($opts['items']))
  +      $extra.= '&item='.$opts['items'];
  +    
  +    $url = $formatter->link_url('RecentChanges', "?action=recentchanges/ajax&type=$rctype".$extra);
  +    $js = <<<JS
  +<script type='text/javascript'>
  +  var url = "$url";
  +  var txt = HTTPGet(url);
  +  var rc = document.getElementById("rc$rc_id");
  +  rc.innerHTML = txt;
  +</script>
  +JS;
     }
   
  -  return $btnlist.'<div class="recentChanges">'.$rctitle.$template_bra.$out.$template_cat.$cat0.'</div>'.$js;
  +  return $btnlist.'<div class="recentChanges"'. $rcid .'>'.$rctitle.$template_bra.$out.$template_cat.$cat0.'</div>'.$js;
   }
   // vim:et:sts=2:sw=2:
   ?>
  
  
  


1286914327;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv22209/plugin\n\nAdded Files:\n	OrphanedPages.php \nLog Message:\n[#315774] a simple OrphanedPages plugin added\nTODO : make it cacheable / paginate etc.\n\n
wkpark      2010/10/13 05:12:08

  Added:       plugin   OrphanedPages.php
  Log:
  [#315774] a simple OrphanedPages plugin added
  TODO : make it cacheable / paginate etc.
  
  Revision  Changes    Path
  1.1                  moniwiki/plugin/OrphanedPages.php
  
  Index: OrphanedPages.php
  ===================================================================
  <?php
  // Copyright 2010 Won-Kyu Park <wkpark at kldp.org>
  // All rights reserved. Distributable under GPL see COPYING
  // a OrphanedPages plugin for the MoniWiki
  //
  // Author: Won-Kyu Park <wkpark@kldp.org>
  // Date: 2010-10-13
  // Name: Orphaned Pages Plugin
  // Description: Show Orphaned Pages of this Wiki
  // URL: MoniWiki:OrphanedPagesPlugin
  // Version: $Revision: 1.1 $
  // License: GPL
  //
  // Usage: [[OrphanedPages]]
  //
  // $Id: OrphanedPages.php,v 1.1 2010/10/12 20:12:07 wkpark Exp $
  
  function macro_OrphanedPages($formatter,$value, $params = array()) {
      global $DBInfo;
  
      $pagelinks = $formatter->pagelinks; // save
      $save = $formatter->sister_on;
      $formatter->sister_on = 0;
  
      $pages = $DBInfo->getPageLists();
      $orphaned = array_flip($pages);
      $cache = new Cache_text('pagelinks');
      foreach ($pages as $page_name) {
          $links = $cache->fetch($page_name);
          if (empty($links)) continue;
          foreach ($links as $link) {
              if (isset($orphaned[$link]))
                  unset($orphaned[$link]);
          }
      }
      $out = '';
  
      $orphaned = array_flip($orphaned);
      $out = "<ol>\n";
      foreach ($orphaned as $page) {
          $out.= "<li>" . $formatter->link_tag($page, '', htmlspecialchars($page)) . "</li>\n";
      }
      $out.= "</ol>\n";
      return $out;
  }
  
  function do_orphanedpages($formatter, $options) {
      $formatter->send_header('', $options);
      $formatter->send_title('', '', $options);
      echo macro_OrphanedPages($formatter, $options['sec'], $options);
      $formatter->send_footer($args, $options);
  }
  
  // vim:et:sts=4:sw=4:
  
  
  


1306338926;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv20632\n\nModified Files:\n	wiki.php \nLog Message:\nfixed PR [#316025] suppress date() warnings for PHP5.x\n\n
wkpark      2011/05/26 00:56:42

  Modified:    .        wiki.php
  Log:
  fixed PR [#316025] suppress date() warnings for PHP5.x
  
  Revision  Changes    Path
  1.637     +6 -2      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.636
  retrieving revision 1.637
  diff -u -r1.636 -r1.637
  --- wiki.php	6 Oct 2010 01:00:01 -0000	1.636
  +++ wiki.php	25 May 2011 15:55:26 -0000	1.637
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.636 2010/10/06 01:00:01 wkpark Exp $
  +// $Id: wiki.php,v 1.637 2011/05/25 15:55:26 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.636 $',1,-1);
  +$_revision = substr('$Revision: 1.637 $',1,-1);
   $_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -559,6 +559,10 @@
         putenv('LOGNAME='.$this->rcs_user);
       if (!empty($this->timezone))
         putenv('TZ='.$this->timezone);
  +    if (function_exists('date_default_timezone_set')) {
  +      // suppress date() warnings for PHP5.x
  +      date_default_timezone_set(@date_default_timezone_get());
  +    }
     }
   
     function initModules() {
  
  
  


1306414433;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv12930\n\nModified Files:\n	wiki.php \nLog Message:\n[#316025] fixed strrpos() arg\n\n
wkpark      2011/05/26 21:55:09

  Modified:    .        wiki.php
  Log:
  [#316025] fixed strrpos() arg
  
  Revision  Changes    Path
  1.638     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.637
  retrieving revision 1.638
  diff -u -r1.637 -r1.638
  --- wiki.php	25 May 2011 15:55:26 -0000	1.637
  +++ wiki.php	26 May 2011 12:53:53 -0000	1.638
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.637 2011/05/25 15:55:26 wkpark Exp $
  +// $Id: wiki.php,v 1.638 2011/05/26 12:53:53 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.637 $',1,-1);
  +$_revision = substr('$Revision: 1.638 $',1,-1);
   $_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -4109,7 +4109,7 @@
         if (!empty($this->use_namespace)) $up_separator.= '|\:';
         $pos=0;
         preg_match('@(' . $up_separator . ')@',$this->page->name,$sep); # NameSpace/SubPage or NameSpace:SubNameSpacePage
  -      if (isset($sep[1])) $pos=strrpos($this->page->name,$sep);
  +      if (isset($sep[1])) $pos=strrpos($this->page->name,$sep[1]);
         if ($pos > 0) $upper=substr($this->page->urlname,0,$pos);
         else if ($this->group) $upper=_urlencode(substr($this->page->name,strlen($this->group)));
         $keywords = '';
  
  
  


1312897913;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv18259\n\nModified Files:\n	wiki.php \nLog Message:\n[#315739] fixed regression bug for [^http://foobar.org] syntax\n\n
wkpark      2011/08/09 22:52:15

  Modified:    .        wiki.php
  Log:
  [#315739] fixed regression bug for [^http://foobar.org] syntax
  
  Revision  Changes    Path
  1.639     +3 -3      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.638
  retrieving revision 1.639
  diff -u -r1.638 -r1.639
  --- wiki.php	26 May 2011 12:53:53 -0000	1.638
  +++ wiki.php	9 Aug 2011 13:51:53 -0000	1.639
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.638 2011/05/26 12:53:53 wkpark Exp $
  +// $Id: wiki.php,v 1.639 2011/08/09 13:51:53 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.638 $',1,-1);
  +$_revision = substr('$Revision: 1.639 $',1,-1);
   $_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -1991,7 +1991,7 @@
         // namespaced pages
         // [[한글:페이지]], [[한글:페이지 이름]]
         // mixed name with non ASCII chars
  -      if (preg_match('/^([^a-zA-Z0-9]+.*)\:/', $url))
  +      if (preg_match('/^([^\^a-zA-Z0-9]+.*)\:/', $url))
           return $this->word_repl($bra.$url.$ket, '', $attr);
   
         if ($url[0]=='a') { # attachment:
  
  
  


1317948538;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv18409/plugin\n\nModified Files:\n	RecentChanges.php \nLog Message:\n[#316540]\n * rearrange the date row of 'board' like table.\n * fixed diffstat markup.\n * i18nize "Anonymous"\n\n\n
wkpark      2011/10/07 09:48:59

  Modified:    plugin   RecentChanges.php
  Log:
  [#316540]
   * rearrange the date row of 'board' like table.
   * fixed diffstat markup.
   * i18nize "Anonymous"
  
  Revision  Changes    Path
  1.62      +17 -13    moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.61
  retrieving revision 1.62
  diff -u -r1.61 -r1.62
  --- RecentChanges.php	8 Oct 2010 04:21:34 -0000	1.61
  +++ RecentChanges.php	7 Oct 2011 00:48:58 -0000	1.62
  @@ -7,10 +7,10 @@
   // Name: RecentChanges
   // Description: Show RecentChanges of the Wiki
   // URL: MoniWiki:RecentChangesPlugin
  -// Version: $Revision: 1.61 $
  +// Version: $Revision: 1.62 $
   // Depend: 1.1.3
   // License: GPL
  -// $Id: RecentChanges.php,v 1.61 2010/10/08 04:21:34 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.62 2011/10/07 00:48:58 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     global $DBInfo;
  @@ -303,19 +303,18 @@
           if (empty($nobookmark)) $cols = 3;
           else $cols = 2;
   
  -        $template_bra.="<thead><tr><th colspan='$cols' class='title'>"._("Title")."</th><th class='date'>".
  -          _("Change Date").'</th>';
  +        $template_bra.="<thead><tr><th colspan='$cols' class='title'>"._("Title")."</th>";
           if (!empty($showhost))
             $template_bra.="<th class='author'>"._("Editor").'</th>';
           $template_bra.="<th class='editinfo'>"._("Changes").'</th>';
           if (!empty($use_hits))
             $template_bra.="<th class='hits'>"._("Hits")."</th>";
  +        $template_bra.="<th class='date'>"._("Change Date").'</th>';
           $template_bra.="</tr></thead>\n<tbody>\n";
           $template=
     '$out.= "<tr$alt><td style=\'white-space:nowrap;width:2%\'>$icon</td><td class=\'title\' style=\'width:40%\'>$title$updated</td>';
           if (empty($nobookmark))
             $template.= '<td>$bmark</td>';
  -        $template.= '<td class=\'date\' style=\'width:15%\'>$date</td>';
           if (!empty($showhost))
             $template.='<td class=\'author\'>$user</td>';
           $template.='<td class=\'editinfo\'>$count';
  @@ -323,7 +322,8 @@
           $template.='</td>';
           if (!empty($use_hits))
             $template.='<td class=\'hits\'>$hits</td>';
  -        $template_extra=$template.'</tr>\n<tr><td class=\'log\' colspan=\'6\'>$extra</td></tr>\n";';
  +        $template.= '<td class=\'date\'>$date</td>';
  +        $template_extra=$template.'</tr>\n<tr class=\'log\'><td colspan=\'6\'><div>$extra</div></td></tr>\n";';
           $template.='</tr>\n";';
           $template_cat="</tbody></table>";
           $cat0="";
  @@ -576,9 +576,9 @@
             }
   
             if (!empty($add))
  -            $diff.= '<span class="diff-added">+'.$add.'</span>';
  +            $diff.= '<span class="diff-added"><span>+'.$add.'</span></span>';
             if (!empty($del))
  -            $diff.= '<span class="diff-removed">'.$del.'</span>';
  +            $diff.= '<span class="diff-removed"><span>'.$del.'</span></span>';
           }
         } else if (!empty($use_js)) {
           $rc_list[] = $page_name;
  @@ -647,7 +647,7 @@
             if (!empty($use_avatar)) {
               $crypted = crypt($addr, $addr);
               $mylnk = preg_replace('/seed=/', 'seed='.$crypted, $avatarlink);
  -            $user = '<img src="'.$mylnk.'" style="width:16px;height:16px;vertical-align:middle" alt="avatar" />Anonymous';
  +            $user = '<img src="'.$mylnk.'" style="width:16px;height:16px;vertical-align:middle" alt="avatar" />'. _('Anonymous');
             }
           } else {
             $ouser= $user;
  @@ -676,7 +676,7 @@
             } else {
               if (substr($user, 0, 9) == 'Anonymous') {
                 $addr = substr($user, 10);
  -              $user = 'Anonymous';
  +              $user = _('Anonymous');
               }
               if (!empty($use_avatar)) {
                 $crypted = crypt($addr, $addr);
  @@ -803,16 +803,20 @@
             var diff = document.createElement('SPAN');
             if (ret[title]['add']) {
               var add = document.createElement('SPAN');
  +            var add2 = document.createElement('SPAN');
               add.setAttribute('class', 'diff-added');
               var txt = document.createTextNode('+' + ret[title]['add']);
  -            add.appendChild(txt);
  +            add2.appendChild(txt);
  +            add.appendChild(add2);
               diff.appendChild(add);
             }
             if (ret[title]['del']) {
               var del = document.createElement('SPAN');
  +            var del2 = document.createElement('SPAN');
               del.setAttribute('class', 'diff-removed');
               var txt = document.createTextNode(ret[title]['del']);
  -            del.appendChild(txt);
  +            del2.appendChild(txt);
  +            del.appendChild(del2);
               diff.appendChild(del);
             }
             change.appendChild(diff);
  @@ -861,7 +865,6 @@
       static $rc_id = 1;
   
       $rcid = ' id="rc'.$rc_id.'"';
  -    $rc_id++;
   
       $extra = '';
       if (!empty($opts['items']))
  @@ -876,6 +879,7 @@
     rc.innerHTML = txt;
   </script>
   JS;
  +    $rc_id++;
     }
   
     return $btnlist.'<div class="recentChanges"'. $rcid .'>'.$rctitle.$template_bra.$out.$template_cat.$cat0.'</div>'.$js;
  
  
  


1317948791;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv19289/plugin\n\nModified Files:\n	Info.php \nLog Message:\n[#316540] fixed Info macro\n * i18nize "Anonymous" str.\n * fixed diffstat markup to enable css styling\n * add 'alt' class attribute to TR to enable css styling\n\n
wkpark      2011/10/07 09:53:12

  Modified:    plugin   Info.php
  Log:
  [#316540] fixed Info macro
   * i18nize "Anonymous" str.
   * fixed diffstat markup to enable css styling
   * add 'alt' class attribute to TR to enable css styling
  
  Revision  Changes    Path
  1.34      +6 -4      moniwiki/plugin/Info.php
  
  Index: Info.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/Info.php,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- Info.php	16 Sep 2010 12:17:37 -0000	1.33
  +++ Info.php	7 Oct 2011 00:53:11 -0000	1.34
  @@ -3,7 +3,7 @@
   // All rights reserved. Distributable under GPL see COPYING
   // a Info plugin for the MoniWiki
   //
  -// $Id: Info.php,v 1.33 2010/09/16 12:17:37 wkpark Exp $
  +// $Id: Info.php,v 1.34 2011/10/07 00:53:11 wkpark Exp $
   
   function _parse_rlog($formatter,$log,$options=array()) {
     global $DBInfo;
  @@ -72,6 +72,7 @@
     $line = '';
     $ok = 0;
     $log.="\n"; // hack
  +  $ii = 0;
     for(; !empty($line) or !empty($log); list($line,$log) = explode("\n",$log,2)) {
       if (!$state) {
         if (!preg_match("/^---/",$line)) { continue;}
  @@ -140,7 +141,7 @@
            $inf=$formatter->link_to("?action=recall&rev=$rev",$inf);
   
            $change=preg_replace("/\+(\d+)\s\-(\d+)/",
  -           "<span class='diff-added'>+\\1</span><span class='diff-removed'>-\\2</span>",$change);
  +           "<span class='diff-added'><span>+\\1</span></span><span class='diff-removed'><span>-\\2</span></span>",$change);
            $state=3;
            break;
         case 3:
  @@ -176,7 +177,7 @@
            } else if (!empty($DBInfo->use_avatar)) {
              $crypted = crypt($ip, $ip);
              $mylnk = preg_replace('/seed=/', 'seed='.$crypted, $avatarlink);
  -           $ip = '<img src="'.$mylnk.'" style="width:16px;height:16px;vertical-align:middle" alt="avatar" />Anonymous';
  +           $ip = '<img src="'.$mylnk.'" style="width:16px;height:16px;vertical-align:middle" alt="avatar" />'. _('Anonymous');
            } else if ($DBInfo->mask_hostname) {
              $ip=_mask_hostname($ip);
            } else if ($user and $DBInfo->interwiki['Whois'])
  @@ -191,7 +192,8 @@
            if (!$simple and $comment) $rowspan=2;
   
            $rrev= !empty($rrev) ? $rrev:$formatter->link_to("?action=recall&rev=$rev",$rev);
  -         $out.="<tr>\n";
  +         $alt = ($ii++ % 2 == 0) ? ' class="alt"' : '';
  +         $out.="<tr$alt>\n";
            $out.="<th class='rev' valign='top' rowspan=$rowspan>$rrev</th><td nowrap='nowrap' class='date'>$inf</td><td class='change'>$change</td><td class='author'>$ip&nbsp;</td>";
            $rrev='';
            $achecked="";
  
  
  


1317955609;wkpark;Update of /cvsroot/moniwiki/moniwiki/imgs/misc\nIn directory kill.kldp.net:/tmp/cvs-serv10238/imgs/misc\n\nAdded Files:\n	plus_minus.png \nLog Message:\n[#316540] hide log by default and add a toggle button to show log.\n\n
1317955609;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv10238/plugin\n\nModified Files:\n	RecentChanges.php \nLog Message:\n[#316540] hide log by default and add a toggle button to show log.\n\n
1317955610;wkpark;Update of /cvsroot/moniwiki/moniwiki/css\nIn directory kill.kldp.net:/tmp/cvs-serv10238/css\n\nModified Files:\n	_base.css \nLog Message:\n[#316540] hide log by default and add a toggle button to show log.\n\n
wkpark      2011/10/07 11:46:50

  Modified:    plugin   RecentChanges.php
               css      _base.css
  Added:       imgs/misc plus_minus.png
  Log:
  [#316540] hide log by default and add a toggle button to show log.
  
  Revision  Changes    Path
  1.1                  moniwiki/imgs/misc/plus_minus.png
  
  	<<Binary file>>
  
  
  1.63      +30 -3     moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.62
  retrieving revision 1.63
  diff -u -r1.62 -r1.63
  --- RecentChanges.php	7 Oct 2011 00:48:58 -0000	1.62
  +++ RecentChanges.php	7 Oct 2011 02:46:49 -0000	1.63
  @@ -7,10 +7,10 @@
   // Name: RecentChanges
   // Description: Show RecentChanges of the Wiki
   // URL: MoniWiki:RecentChangesPlugin
  -// Version: $Revision: 1.62 $
  +// Version: $Revision: 1.63 $
   // Depend: 1.1.3
   // License: GPL
  -// $Id: RecentChanges.php,v 1.62 2011/10/07 00:48:58 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.63 2011/10/07 02:46:49 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     global $DBInfo;
  @@ -323,7 +323,7 @@
           if (!empty($use_hits))
             $template.='<td class=\'hits\'>$hits</td>';
           $template.= '<td class=\'date\'>$date</td>';
  -        $template_extra=$template.'</tr>\n<tr class=\'log\'><td colspan=\'6\'><div>$extra</div></td></tr>\n";';
  +        $template_extra=$template.'</tr>\n<tr class=\'log\'$style><td colspan=\'6\'><div>$extra</div></td></tr>\n";';
           $template.='</tr>\n";';
           $template_cat="</tbody></table>";
           $cat0="";
  @@ -704,6 +704,12 @@
   
       $alt = ($ii % 2 == 0) ? ' class="alt"':'';
       if ($extra and isset($template_extra)) {
  +      if ($rctype == 'board' and !empty($use_js))
  +        $style = ' style="display:none"';
  +      else
  +        $style = '';
  +
  +      $title = '<button onclick="toggle_log(this);return false;"><span>+</span></button>' . $title;
         eval($template_extra);
       } else {
         eval($template);
  @@ -880,6 +886,27 @@
   </script>
   JS;
       $rc_id++;
  +  } else if ($use_js and $rctype == 'board') {
  +    $js.= <<<JS
  +<script type='text/javascript'>
  +function toggle_log(el)
  +{
  +  var item = el.parentNode.parentNode; // container
  +  var log = item.nextSibling;
  +  if (log.tagName == undefined)
  +    log = log.nextSibling; // for IE6
  +
  +  if (log.style.display == "none") {
  +    el.className = "close";
  +    log.style.display = "";
  +  } else {
  +    el.className = "open";
  +    item.className = "";
  +    log.style.display = "none";
  +  }
  +}
  +</script>
  +JS;
     }
   
     return $btnlist.'<div class="recentChanges"'. $rcid .'>'.$rctitle.$template_bra.$out.$template_cat.$cat0.'</div>'.$js;
  
  
  
  1.41      +23 -0     moniwiki/css/_base.css
  
  Index: _base.css
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/css/_base.css,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- _base.css	11 Sep 2010 05:29:03 -0000	1.40
  +++ _base.css	7 Oct 2011 02:46:49 -0000	1.41
  @@ -5,6 +5,10 @@
   /* behavior:url("../local/csshover.htc"); */
   }
   
  +ul li p {
  +  margin-top: 0px;
  +}
  +
   #wikiBanner {
     clear:both;
   }
  @@ -514,6 +518,25 @@
     font-size:11px;
   }
   
  +.recentChanges button {
  +  background:url(../imgs/misc/plus_minus.png) no-repeat;
  +  cursor: pointer;
  +  vertical-align: top;
  +  position: relative;
  +  top: 3px;
  +  width: 9px;
  +  height: 9px;
  +  margin-right:3px;
  +}
  +
  +.recentChanges button.close {
  +  background:url(../imgs/misc/plus_minus.png) no-repeat 0 -9px;
  +}
  +
  +.recentChanges button span {
  +  display:none;
  +}
  +
   .wikiMarkup {
     background-color:#ffff00;
     border-left:2px solid #F5E238;
  
  
  


1317955696;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv10431/plugin\n\nModified Files:\n	RecentChanges.php \nLog Message:\n[#316444] fixed strimwidth option bug reported by Kesarr.\n\n
wkpark      2011/10/07 11:48:18

  Modified:    plugin   RecentChanges.php
  Log:
  [#316444] fixed strimwidth option bug reported by Kesarr.
  
  Revision  Changes    Path
  1.64      +3 -3      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.63
  retrieving revision 1.64
  diff -u -r1.63 -r1.64
  --- RecentChanges.php	7 Oct 2011 02:46:49 -0000	1.63
  +++ RecentChanges.php	7 Oct 2011 02:48:16 -0000	1.64
  @@ -7,10 +7,10 @@
   // Name: RecentChanges
   // Description: Show RecentChanges of the Wiki
   // URL: MoniWiki:RecentChangesPlugin
  -// Version: $Revision: 1.63 $
  +// Version: $Revision: 1.64 $
   // Depend: 1.1.3
   // License: GPL
  -// $Id: RecentChanges.php,v 1.63 2011/10/07 02:46:49 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.64 2011/10/07 02:48:16 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     global $DBInfo;
  @@ -231,7 +231,7 @@
         else if ($k=="datefmt") $my_date_fmt=$v;
         else if ($k=='ago') $opts['ago']=abs($v);
         else if ($k=="new") $checknew=$v;
  -      else if ($k=='strimwidth' and is_numeric($k) and (abs($v) > 15 or $v == 0))
  +      else if ($k=='strimwidth' and is_numeric($v) and (abs($v) > 15 or $v == 0))
           $strimwidth =abs($v);
       } else {
         if ($arg =="quick") $opts['quick']=1;
  
  
  


1317996629;wkpark;Update of /cvsroot/moniwiki/moniwiki/plugin\nIn directory kill.kldp.net:/tmp/cvs-serv6149/plugin\n\nModified Files:\n	RecentChanges.php \nLog Message:\n[#316540] fixed last change.\n\n
wkpark      2011/10/07 23:10:30

  Modified:    plugin   RecentChanges.php
  Log:
  [#316540] fixed last change.
  
  Revision  Changes    Path
  1.65      +2 -3      moniwiki/plugin/RecentChanges.php
  
  Index: RecentChanges.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/plugin/RecentChanges.php,v
  retrieving revision 1.64
  retrieving revision 1.65
  diff -u -r1.64 -r1.65
  --- RecentChanges.php	7 Oct 2011 02:48:16 -0000	1.64
  +++ RecentChanges.php	7 Oct 2011 14:10:29 -0000	1.65
  @@ -7,10 +7,10 @@
   // Name: RecentChanges
   // Description: Show RecentChanges of the Wiki
   // URL: MoniWiki:RecentChangesPlugin
  -// Version: $Revision: 1.64 $
  +// Version: $Revision: 1.65 $
   // Depend: 1.1.3
   // License: GPL
  -// $Id: RecentChanges.php,v 1.64 2011/10/07 02:48:16 wkpark Exp $
  +// $Id: RecentChanges.php,v 1.65 2011/10/07 14:10:29 wkpark Exp $
   
   function do_RecentChanges($formatter,$options='') {
     global $DBInfo;
  @@ -901,7 +901,6 @@
       log.style.display = "";
     } else {
       el.className = "open";
  -    item.className = "";
       log.style.display = "none";
     }
   }
  
  
  


1344861441;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv32344\n\nModified Files:\n	wikilib.php \nLog Message:\n[#318229] fixed XSS bug\n\nhttp://st2tea.blogspot.kr/2012/02/moniwiki-cross-site-scripting.html\nhttp://secunia.com/advisories/48109/\n\n
wkpark      2012/08/13 21:37:22

  Modified:    .        wikilib.php
  Log:
  [#318229] fixed XSS bug
  
  http://st2tea.blogspot.kr/2012/02/moniwiki-cross-site-scripting.html
  http://secunia.com/advisories/48109/
  
  Revision  Changes    Path
  1.370     +4 -3      moniwiki/wikilib.php
  
  Index: wikilib.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wikilib.php,v
  retrieving revision 1.369
  retrieving revision 1.370
  diff -u -r1.369 -r1.370
  --- wikilib.php	6 Oct 2010 00:45:48 -0000	1.369
  +++ wikilib.php	13 Aug 2012 12:37:21 -0000	1.370
  @@ -11,7 +11,7 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wikilib.php,v 1.369 2010/10/06 00:45:48 wkpark Exp $
  +// $Id: wikilib.php,v 1.370 2012/08/13 12:37:21 wkpark Exp $
   
   function _preg_escape($val) {
     return preg_replace('/([\$\^\.\[\]\{\}\|\(\)\+\*\/\\\\!\?]{1})/','\\\\\1',$val);
  @@ -2778,9 +2778,10 @@
     $url=$formatter->link_url("UserPreferences");
     # setup form
     if ($user->id == 'Anonymous') {
  -    if (!empty($options['login_id']))
  +    if (!empty($options['login_id'])) {
  +      $options['login_id'] = htmlspecialchars($options['login_id']);
         $idform="$options[login_id]<input type='hidden' name='login_id' value=\"$options[login_id]\" />";
  -    else
  +    } else
         $idform="<input type='text' size='20' name='login_id' value='' />";
     } else {
       $idform=$user->id;
  
  
  


1344861812;wkpark;Update of /cvsroot/moniwiki/moniwiki\nIn directory kill.kldp.net:/tmp/cvs-serv1512\n\nModified Files:\n	wiki.php \nLog Message:\n[#315672] fixed alias/sistersites to show spaced wikiword correctly\n\n\n
wkpark      2012/08/13 21:43:34

  Modified:    .        wiki.php
  Log:
  [#315672] fixed alias/sistersites to show spaced wikiword correctly
  
  Revision  Changes    Path
  1.640     +6 -5      moniwiki/wiki.php
  
  Index: wiki.php
  ===================================================================
  RCS file: /cvsroot/moniwiki/moniwiki/wiki.php,v
  retrieving revision 1.639
  retrieving revision 1.640
  diff -u -r1.639 -r1.640
  --- wiki.php	9 Aug 2011 13:51:53 -0000	1.639
  +++ wiki.php	13 Aug 2012 12:43:32 -0000	1.640
  @@ -11,9 +11,9 @@
   // * Phiki is a php based wiki clone based on the MoinMoin
   //    by Fred C. Yankowski <fcy at acm.org>
   //
  -// $Id: wiki.php,v 1.639 2011/08/09 13:51:53 wkpark Exp $
  +// $Id: wiki.php,v 1.640 2012/08/13 12:43:32 wkpark Exp $
   //
  -$_revision = substr('$Revision: 1.639 $',1,-1);
  +$_revision = substr('$Revision: 1.640 $',1,-1);
   $_release = '1.2.0-CVS';
   
   #ob_start("ob_gzhandler");
  @@ -282,7 +282,7 @@
   
       $ret = '';
       if ($sisters)
  -      $ret='[wiki:'.str_replace(' ',":$pagename] [wiki:",$sisters).":$pagename]";
  +      $ret='[wiki:'.str_replace(' ',":$pagename]\n[wiki:",$sisters).":$pagename]";
       $pagename=_preg_search_escape($pagename);
       if ($addons) $ret=rtrim($addons.' '.$ret);
   
  @@ -413,7 +413,7 @@
       if (empty($mode)) return true;
   
       $twins=$this->db[$pagename];
  -    $ret='[wiki:'.str_replace(',',"] [wiki:",$twins).']';
  +    $ret='[wiki:'.str_replace(',',"]\n[wiki:",$twins).']';
   
       return $ret;
     }
  @@ -2396,7 +2396,8 @@
             if (!empty($this->use_easyalias) and !preg_match('/^\[wiki:[A-Z][A-Za-z0-9]+:.*$/', $sisters)) {
               # this is a alias
               $this->use_easyalias=0;
  -            $url=$this->link_repl(substr($sisters,0,-1).' '.$word.']');
  +            $tmp = explode("\n", $sisters);
  +            $url=$this->link_repl(substr($tmp[0],0,-1).' '.$word.']');
               $this->use_easyalias=1;
               $this->aliases[$page]=$url;
               return $url;
  
  
  


